ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggZTA5ZTczMS4uODU4YzdmMiAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsMjY1ICsxLDgyMyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFubm91bmNpbmcgbmN1cnNlcyA1LjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbm5vdW5jaW5nIG5jdXJzZXMgNi4wCisKK092ZXJ2aWV3CiAKICAgIFRoZSAgbmN1cnNlcyAgKG5ldyAgY3Vyc2VzKSAgbGlicmFyeSAgaXMgIGEgZnJlZSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YKLSAgIGN1cnNlcyAgaW4gIFN5c3RlbSAgViAgUmVsZWFzZSA0LjAsIGFuZCBtb3JlLiBJdCB1c2VzIHRlcm1pbmZvIGZvcm1hdCwKLSAgIHN1cHBvcnRzICBwYWRzICBhbmQgY29sb3IgYW5kIG11bHRpcGxlIGhpZ2hsaWdodHMgYW5kIGZvcm1zIGNoYXJhY3RlcnMKLSAgIGFuZCAgIGZ1bmN0aW9uLWtleSAgIG1hcHBpbmcsICAgYW5kICBoYXMgIGFsbCAgdGhlICBvdGhlciAgU1lTVi1jdXJzZXMKLSAgIGVuaGFuY2VtZW50cyBvdmVyIEJTRCBjdXJzZXMuCisgICBjdXJzZXMgIGluICBTeXN0ZW0gIFYgIFJlbGVhc2UgIDQuMCAoU1ZyNCksIGFuZCBtb3JlLiBJdCB1c2VzIHRlcm1pbmZvCisgICBmb3JtYXQsICBzdXBwb3J0cyAgcGFkcyAgYW5kICBjb2xvciAgYW5kIG11bHRpcGxlIGhpZ2hsaWdodHMgYW5kIGZvcm1zCisgICBjaGFyYWN0ZXJzIGFuZCBmdW5jdGlvbi1rZXkgbWFwcGluZywgYW5kIGhhcyBhbGwgdGhlIG90aGVyIFNWcjQtY3Vyc2VzCisgICBlbmhhbmNlbWVudHMgIG92ZXIgIEJTRCAgY3Vyc2VzLiAgU1ZyNCBjdXJzZXMgaXMgYmV0dGVyIGtub3duIHRvZGF5IGFzCisgICBYL09wZW4gQ3Vyc2VzLgogCiAgICBJbiAgbWlkLUp1bmUgIDE5OTUsICB0aGUgIG1haW50YWluZXIgb2YgNC40QlNEIGN1cnNlcyBkZWNsYXJlZCB0aGF0IGhlCi0gICBjb25zaWRlcmVkICA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUga2VlcGVycyBvZiBVbml4CisgICBjb25zaWRlcmVkICA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUga2VlcGVycyBvZiB1bml4CiAgICByZWxlYXNlcyBzdWNoIGFzIEJTRC9PUywgRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHN3aXRjaCBvdmVyIHRvIG5jdXJzZXMuCiAKLSAgIFRoZSBuY3Vyc2VzIGNvZGUgd2FzIGRldmVsb3BlZCB1bmRlciBHTlUvTGludXguIEl0IGhhcyBiZWVuIGluIHVzZSBmb3IKLSAgIHNvbWUgIHRpbWUgIHdpdGggIE9wZW5CU0QgYXMgdGhlIHN5c3RlbSBjdXJzZXMgbGlicmFyeSwgYW5kIG9uIEZyZWVCU0QKLSAgIGFuZCAgTmV0QlNEICBhcyAgYW4gIGV4dGVybmFsICBwYWNrYWdlLiAgSXQgIHNob3VsZCBwb3J0IGVhc2lseSB0byBhbnkKLSAgIEFOU0kvUE9TSVgtY29uZm9ybWluZyBVTklYLiBJdCBoYXMgZXZlbiBiZWVuIHBvcnRlZCB0byBPUy8yIFdhcnAhCisgICBTaW5jZSAxOTk1LCBuY3Vyc2VzIGhhcyBiZWVuIHBvcnRlZCB0byBtYW55IHN5c3RlbXM6CisgICAgICogSXQgaXMgdXNlZCBpbiBhbG1vc3QgZXZlcnkgc3lzdGVtIGJhc2VkIG9uIHRoZSBMaW51eCBrZXJuZWwgKGFzaWRlCisgICAgICAgZnJvbSBzb21lIGVtYmVkZGVkIGFwcGxpY2F0aW9ucykuCisgICAgICogSXQgIGlzICB1c2VkICBhcyB0aGUgc3lzdGVtIGN1cnNlcyBsaWJyYXJ5IG9uIE9wZW5CU0QsIEZyZWVCU0QgYW5kCisgICAgICAgT1NYLgorICAgICAqIEl0ICBpcyB1c2VkIGluIGVudmlyb25tZW50cyBzdWNoIGFzIEN5Z3dpbiBhbmQgTWluR1cuIFRoZSBmaXJzdCBvZgorICAgICAgIHRoZXNlIHdhcyBFTVggb24gT1MvMiBXYXJwLgorICAgICAqIEl0IGlzIHVzZWQgKHRob3VnaCB1c3VhbGx5IG5vdCBhcyB0aGUgc3lzdGVtIGN1cnNlcykgb24gYWxsIG9mIHRoZQorICAgICAgIHZlbmRvciAgdW5peCAgc3lzdGVtcywgIGUuZy4sICBBSVgsICBIUC1VWCwgIElSSVg2NCwgU0NPLCBTb2xhcmlzLAorICAgICAgIFRydTY0LgorICAgICAqIEl0IHNob3VsZCB3b3JrIHJlYWRpbHkgb24gYW55IEFOU0kvUE9TSVgtY29uZm9ybWluZyB1bml4LgogCiAgICBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIHRoZSBsaWJyYXJ5IGFuZCBzdXBwb3J0IHV0aWxpdGllcywgaW5jbHVkaW5nCi0gICBhICAgdGVybWluZm8gIGNvbXBpbGVyICB0aWMoMSksICBhICBkZWNvbXBpbGVyICBpbmZvY21wKDEpLCAgY2xlYXIoMSksCi0gICB0cHV0KDEpLCAgdHNldCgxKSwgIGFuZCAgYSAgdGVybWNhcCBjb252ZXJzaW9uIHRvb2wgY2FwdG9pbmZvKDEpLiBGdWxsCi0gICBtYW51YWwgcGFnZXMgYXJlIHByb3ZpZGVkIGZvciB0aGUgbGlicmFyeSBhbmQgdG9vbHMuCisgICAgICogWzFdY2FwdG9pbmZvLCBhIHRlcm1jYXAgY29udmVyc2lvbiB0b29sCisgICAgICogWzJdY2xlYXIsIHV0aWxpdHkgZm9yIGNsZWFyaW5nIHRoZSBzY3JlZW4KKyAgICAgKiBbM11pbmZvY21wLCB0aGUgdGVybWluZm8gZGVjb21waWxlcgorICAgICAqIFs0XXRhYnMsIHNldCB0YWJzIG9uIGEgdGVybWluYWwKKyAgICAgKiBbNV10aWMsIHRoZSB0ZXJtaW5mbyBjb21waWxlcgorICAgICAqIFs2XXRvZSwgbGlzdCAodGFibGUgb2YpIHRlcm1pbmZvIGVudHJpZXMKKyAgICAgKiBbN110cHV0LCAgdXRpbGl0eSAgZm9yICByZXRyaWV2aW5nICB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgaW4gc2hlbGwKKyAgICAgICBzY3JpcHRzCisgICAgICogWzhddHNldCwgdG8gaW5pdGlhbGl6ZSB0aGUgdGVybWluYWwKKworICAgRnVsbCBtYW51YWwgcGFnZXMgYXJlIHByb3ZpZGVkIGZvciB0aGUgbGlicmFyeSBhbmQgdG9vbHMuCiAKICAgIFRoZSAgbmN1cnNlcyAgZGlzdHJpYnV0aW9uICBpcyAgYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgRlRQIGF0IHRoZSBHTlUKLSAgIGRpc3RyaWJ1dGlvbiBzaXRlIFsxXWZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLyAuCi0gICBJdCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBbMl1mdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLyAuCisgICBkaXN0cmlidXRpb24gc2l0ZQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzCisgICAgIFs5XWZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLyAuCiAKLSAgIFRoaXMgIHJlbGVhc2UgIGlzICBkZXNpZ25lZCAgdG8gIGJlIHVwd2FyZCBjb21wYXRpYmxlIGZyb20gbmN1cnNlcyA1LjAKLSAgIHRocm91Z2ggICA1LjY7ICB2ZXJ5ICBmZXcgIGFwcGxpY2F0aW9ucyAgd2lsbCAgcmVxdWlyZSAgcmVjb21waWxhdGlvbiwKLSAgIGRlcGVuZGluZyAgIG9uICB0aGUgIHBsYXRmb3JtLiAgVGhlc2UgIGFyZSAgdGhlICBoaWdobGlnaHRzICBmcm9tICB0aGUKLSAgIGNoYW5nZS1sb2cgc2luY2UgbmN1cnNlcyA1LjYgcmVsZWFzZS4KKyAgIEl0IGlzIGFsc28gYXZhaWxhYmxlIGF0CiAKLSAgIEludGVyZmFjZSBjaGFuZ2VzOgotICAgICAqIGdlbmVyYXRlIGxpbmthYmxlIHN0dWJzIGZvciBzb21lIG1hY3JvczoKLSAgICAgICBnZXRhdHRycworICAgICBbMTBdZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8gLgogCi0gICBOZXcgZmVhdHVyZXMgYW5kIGltcHJvdmVtZW50czoKLSAgICAgKiBsaWJyYXJ5Ci0gICAgICAgICAgKyBuZXcgIGZsYXZvciAgb2YgIHRoZSAgbmN1cnNlcyAgbGlicmFyeSAgcHJvdmlkZXMgIHJ1ZGltZW50YXJ5Ci0gICAgICAgICAgICBzdXBwb3J0ICBmb3IgIFBPU0lYIHRocmVhZHMuIFNldmVyYWwgZnVuY3Rpb25zIGFyZSByZWVudHJhbnQsCi0gICAgICAgICAgICBidXQgbW9zdCByZXF1aXJlIGVpdGhlciBhIHdpbmRvdy1sZXZlbCBvciBzY3JlZW4tbGV2ZWwgbXV0ZXguCi0gICAgICAgICAgICAoVGhpcyAgaXMgIEFQSS1jb21wYXRpYmxlLCAgYnV0ICBub3QgIEFCSS1jb21wYXRpYmxlIHdpdGggdGhlCi0gICAgICAgICAgICBub3JtYWwgbGlicmFyeSkuCi0gICAgICAgICAgKyBhZGQgIE5DVVJTRVNfT1BBUVVFICBzeW1ib2wgIHRvICBjdXJzZXMuaCwgIHdpbGwgIHVzZSB0byBtYWtlCi0gICAgICAgICAgICBzdHJ1Y3RzIG9wYXF1ZSBpbiBzZWxlY3RlZCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICArIGFkZCAgIE5DVVJTRVNfRVhUX0ZVTkNTICBhbmQgIE5DVVJTRVNfRVhUX0NPTE9SUyAgc3ltYm9scyAgdG8KLSAgICAgICAgICAgIGN1cnNlcy5oIHRvIG1ha2UgaXQgc2ltcGxlciB0byB0ZWxsIGlmIHRoZSBleHRlbmRlZCBmdW5jdGlvbnMKLSAgICAgICAgICAgIGFuZC9vciBjb2xvcnMgYXJlIGRlY2xhcmVkLgotICAgICAgICAgICsgYWRkIHdyZXNpemUoKSB0byBDKysgYmluZGluZwotICAgICAgICAgICsgZWxpbWluYXRlIGZpeGVkLWJ1ZmZlciB2c3ByaW50ZigpIGNhbGxzIGluIEMrKyBiaW5kaW5nLgotICAgICAgICAgICsgYWRkICBzZXZlcmFsICBmdW5jdGlvbnMgdG8gQysrIGJpbmRpbmcgd2hpY2ggd3JhcCBDIGZ1bmN0aW9ucwotICAgICAgICAgICAgdGhhdCBwYXNzIGEgV0lORE9XKiBwYXJhbWV0ZXIuCi0gICAgICAgICAgKyBhZGFwdCBtb3VzZS1oYW5kbGluZyBjb2RlIGZyb20gbWVudSBsaWJyYXJ5IGluIGZvcm0tbGlicmFyeQotICAgICAgICAgICsgaW1wcm92ZSAgdHJhY2luZyAgZm9yICBmb3JtICBsaWJyYXJ5LCAgc2hvd2luZyBjcmVhdGVkIGZvcm1zLAotICAgICAgICAgICAgZmllbGRzLCBldGMuCi0gICAgICAgICAgKyBtYWtlICROQ1VSU0VTX05PX1BBRERJTkcgZmVhdHVyZSB3b3JrIGZvciB0ZXJtY2FwIGludGVyZmFjZSAuCi0gICAgICAgICAgKyBhZGQgIGNoZWNrICB0byAgdHJhY2UtZmlsZSAgb3BlbiwgIGlmICB0aGUgIGdpdmVuICBuYW1lICBpcyBhCi0gICAgICAgICAgICBkaXJlY3RvcnksIGFkZCAiLmxvZyIgdG8gdGhlIG5hbWUgYW5kIHRyeSBhZ2Fpbi4KLSAgICAgICAgICArIHNldmVyYWwgICBuZXcgICBtYW5wYWdlczogIGN1cnNfbGVnYWN5LjN4LCAgY3Vyc19tZW1sZWFrcy4zeCwKLSAgICAgICAgICAgIGN1cnNfb3BhcXVlLjN4IGFuZCBjdXJzX3RocmVhZHMuM3gKLSAgICAgKiBwcm9ncmFtczoKLSAgICAgICAgICArIG1vZGlmaWVkICB0aHJlZSAgdGVzdC1wcm9ncmFtcyAgdG8gIGRlbW9uc3RyYXRlIHRoZSB0aHJlYWRpbmcKLSAgICAgICAgICAgIHN1cHBvcnQgaW4gdGhpcyB2ZXJzaW9uOiBkaXR0bywgcmFpbiwgd29ybS4KLSAgICAgICAgICArIHNldmVyYWwgICAgbmV3ICAgIHRlc3QtcHJvZ3JhbXM6ICAgZGVtb19wYW5lbHMsICAgZG90c19tdmN1ciwKLSAgICAgICAgICAgIGluY2hfd2lkZSwgICAgaW5jaHMsICAgIGtleV9uYW1lLCAgICBrZXlfbmFtZXMsICAgc2F2ZXNjcmVlbiwKLSAgICAgICAgICAgIHNhdmVzY3JlZW4uc2ggICAgdGVzdF9hcnJheXMsICAgdGVzdF9nZXRfd3N0ciwgICB0ZXN0X2dldHN0ciwKLSAgICAgICAgICAgIHRlc3RfaW5zdHIsIHRlc3RfaW53c3RyIGFuZCB0ZXN0X29wYXF1ZS4KLSAgICAgICAgICArIGFkZCBhZGFjdXJzZXMtY29uZmlnIHRvIHRoZSBBZGE5NSBpbnN0YWxsLgotICAgICAgICAgICsgbW9kaWZ5ICB0aWMgIC1mIG9wdGlvbiB0byBmb3JtYXQgc3BhY2VzIGFzIFxzIHRvIHByZXZlbnQgdGhlbQotICAgICAgICAgICAgZnJvbSAgYmVpbmcgIGxvc3QgIHdoZW4gIHRoYXQgIGlzICByZWFkICBiYWNrICBpbiB1bmZvcm1hdHRlZAotICAgICAgICAgICAgc3RyaW5ncy4KLSAgICAgICAgICArIFRoZSB0YWNrIHByb2dyYW0gaXMgbm93IGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHkgZnJvbSBuY3Vyc2VzLgotICAgICAqIHRlcm1pbmFsIGRhdGFiYXNlCi0gICAgICAgICAgKyBhZGRlZCBlbnRyaWVzOgotICAgICAgICAgICAgICAgbyBFdGVybS0yNTZjb2xvciwgRXRlcm0tODhjb2xvciBhbmQgcnh2dC04OGNvbG9yCi0gICAgICAgICAgICAgICBvIGF0ZXJtCi0gICAgICAgICAgICAgICBvIGtvbnNvbGUtMjU2Y29sb3IKLSAgICAgICAgICAgICAgIG8gbXJ4dnQKLSAgICAgICAgICAgICAgIG8gc2NyZWVuLm1sdGVybQotICAgICAgICAgICAgICAgbyBzY3JlZW4ucnh2dAotICAgICAgICAgICAgICAgbyB0ZXJhdGVybTQuNTkgIGlzIG5vdyB0aGUgcHJpbWFyeSBwcmltYXJ5IHRlcmF0ZXJtIGVudHJ5LAotICAgICAgICAgICAgICAgICByZW5hbWVkIG9yaWdpbmFsIHRvIHRlcmF0ZXJtMi4zCi0gICAgICAgICAgICAgICBvIDl0ZXJtIHRlcm1pbmFsCi0gICAgICAgICAgICAgICBvIE5ld2J1cnkgRGF0YSBlbnRyaWVzCi0gICAgICAgICAgKyB1cGRhdGVkL2ltcHJvdmVkIGVudHJpZXM6Ci0gICAgICAgICAgICAgICBvIGdub21lIHRvIHZlcnNpb24gMi4yMi4zCi0gICAgICAgICAgICAgICBvIGgxOSwgejEwMAotICAgICAgICAgICAgICAgbyBrb25zb2xlIHRvIHZlcnNpb24gMS42LjYKLSAgICAgICAgICAgICAgIG8gbWx0ZXJtLCBtbHRlcm0rcGNma2V5cwotICAgICAgICAgICAgICAgbyB4dGVybSwgYW5kIGJ1aWxkaW5nLWJsb2NrcyBmb3IgZnVuY3Rpb24ta2V5cyB0byBbM114dGVybQotICAgICAgICAgICAgICAgICBwYXRjaCAjMjMwLgorUmVsZWFzZSBOb3RlcwogCi0gICBNYWpvciBidWcgZml4ZXM6Ci0gICAgICogYWRkICAgbG9naWMgICB0byAgIHRpYyAgZm9yICBjYW5jZWxsaW5nICBzdHJpbmdzICBpbiAgdXNlci1kZWZpbmVkCi0gICAgICAgY2FwYWJpbGl0aWVzICh0aGlzIGlzIG5lZWRlZCBmb3IgY3VycmVudCBrb25zb2xlIHRlcm1pbmZvIGVudHJ5KS4KLSAgICAgKiBtb2RpZnkgIG1rLTFzdC5hd2sgIHNvIHRoZSBnZW5lcmF0ZWQgbWFrZWZpbGUgcnVsZXMgZm9yIGxpbmtpbmcgb3IKLSAgICAgICBpbnN0YWxsaW5nICBzaGFyZWQgIGxpYnJhcmllcyAgZG8gbm90IGZpcnN0IHJlbW92ZSB0aGUgbGlicmFyeSwgaW4KLSAgICAgICBjYXNlIGl0IGlzIGluIHVzZSwgZS5nLiwgbGlibmN1cnNlcy5zbyBieSAvYmluL3NoLgotICAgICAqIGNvcnJlY3QgY2hlY2sgZm9yIG5vdGltZW91dCgpIGluIHdnZXRjaCgpLgotICAgICAqIGZpeCBhIHNpZ24tZXh0ZW5zaW9uIGJ1ZyBpbiBpbmZvY21wJ3MgcmVwYWlyX2Fjc2MoKSBmdW5jdGlvbi4KLSAgICAgKiBjaGFuZ2Ugd2lubnN0cigpIHRvIHN0b3AgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICAgKiBtYWtlIEFkYTk1IGRlbW9fcGFuZWxzKCkgZXhhbXBsZSB3b3JrLgotICAgICAqIGZpeCBmb3IgYWRkaW5nIGEgbm9uLXNwYWNpbmcgY2hhcmFjdGVyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgotICAgICAqIGZpbGwgICBpbiAgIGV4dGVuZGVkLWNvbG9yICAgcGFpciAgIHRvICAgbWFrZSAgIGNvbG9ycyAgIHdvcmsgIGZvcgotICAgICAgIHdpZGUtY2hhcmFjdGVycyB1c2luZyBleHRlbmRlZC1jb2xvcnMuCi0gICAgICogaW1wcm92ZSAgcmVmcmVzaCAgb2YgIHdpbmRvdyAgb24gIHRvcCAgb2YgbXVsdGktY29sdW1uIGNoYXJhY3RlcnMsCi0gICAgICAgdGFraW5nICAgaW50byAgIGFjY291bnQgIHNwbGl0ICBjaGFyYWN0ZXJzICBvbiAgbGVmdC9yaWdodCAgd2luZG93Ci0gICAgICAgYm91bmRhcmllcy4KLSAgICAgKiBtb2RpZnkgIHdpbl93Y2huc3RyKCkgIHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBiYXNlIGNlbGwgaXMgcmV0dXJuZWQKLSAgICAgICBmb3IgZWFjaCBtdWx0aS1jb2x1bW4gY2hhcmFjdGVyLgotICAgICAqIGltcHJvdmUgd2FkZGNoKCkgYW5kIHdpbnNjaCgpIGhhbmRsaW5nIG9mIEVJTFNFUSBmcm9tIG1icnRvd2MoKSBieQotICAgICAgIHVzaW5nICB1bmN0cmwoKSAgdG8gIGRpc3BsYXkgIGlsbGVnYWwgIGJ5dGVzIHJhdGhlciB0aGFuIHRyeWluZyB0bwotICAgICAgIGFwcGVuZCBmdXJ0aGVyIGJ5dGVzIHRvIG1ha2UgdXAgYSB2YWxpZCBzZXF1ZW5jZS4KLSAgICAgKiByZXN0b3JlIGN1cnNfc2V0KCkgc3RhdGUgYWZ0ZXIgZW5kd2luKCkvcmVmcmVzaCgpCi0gICAgICogbW9kaWZ5ICBrZXluYW1lKCkgdG8gdXNlICJeWCIgZm9ybSBvbmx5IGlmIG1ldGEoKSBoYXMgYmVlbiBjYWxsZWQsCi0gICAgICAgb3IgIGlmICBrZXluYW1lKCkgaXMgY2FsbGVkIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGN1cnNlcywgZS5nLiwgdmlhCi0gICAgICAgaW5pdHNjcigpIG9yIG5ld3Rlcm0oKS4KLSAgICAgKiBtb2RpZnkgIHVuY3RybCgpIHRvIGNoZWNrIGNvZGVzIGluIDEyOC0yNTUgcmFuZ2UgdmVyc3VzIGlzcHJpbnQoKS4KLSAgICAgICBJZiAgdGhleSAgYXJlIG5vdCBwcmludGFibGUsIGFuZCBsb2NhbGUgd2FzIHNldCwgdXNlIGEgIk0tIiBvciAifiIKLSAgICAgICBzZXF1ZW5jZS4KLSAgICAgKiBpbXByb3ZlICByZXNpemV0ZXJtKCkgIGJ5ICBtb3ZpbmcgcmlwcGVkLW9mZiBsaW5lcywgYW5kIHJlcGFpbnRpbmcKLSAgICAgICB0aGUgc29mdC1rZXlzLgotICAgICAqIG1vZGlmeSAgZm9ybSAgbGlicmFyeSB0byBhY2NlcHQgY29udHJvbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgbmV3bGluZQotICAgICAgIGluIHNldF9maWVsZF9idWZmZXIoKSwgd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMuCi0gICAgICogdXNlICBOQ1VSU0VTX01PVVNFX01BU0soKSBpbiBkZWZpbml0aW9uIG9mIEJVVFRPTl9SRUxFQVNFKCksIGV0Yy4sCi0gICAgICAgdG8gICBtYWtlICAgdGhvc2UgICB3b3JrICAgcHJvcGVybHkgIHdpdGggIHRoZSAgLS1lbmFibGUtZXh0LW1vdXNlCi0gICAgICAgY29uZmlndXJhdGlvbgotICAgICAqIGNvcnJlY3QgIHNvbWUgIGZ1bmN0aW9ucyAgaW4gQWRhOTUgYmluZGluZyB3aGljaCB3ZXJlIHVzaW5nIHJldHVybgotICAgICAgIHZhbHVlIGZyb20gQyB3aGVyZSBub25lIHdhcyByZXR1cm5lZC4KLSAgICAgKiByZXZpZXdlZC9maXhlZCBpc3N1ZXMgcmVwb3J0ZWQgYnkgQ292ZXJpdHkgYW5kIEtsb2N3b3JrIHRvb2xzLgorICAgVGhlc2Ugbm90ZXMgYXJlIGZvciBuY3Vyc2VzIDYuMCwgcmVsZWFzZWQgQXVndXN0IDgsIDIwMTUuCiAKLSAgIFBvcnRhYmlsaXR5OgotICAgICAqIGNvbmZpZ3VyZSBzY3JpcHQ6Ci0gICAgICAgICAgKyBuZXcgb3B0aW9uczoKKyAgIFRoaXMgIHJlbGVhc2UgIGlzICBkZXNpZ25lZCAgdG8gIGJlIHNvdXJjZS1jb21wYXRpYmxlIHdpdGggbmN1cnNlcyA1LjAKKyAgIHRocm91Z2ggIDUuOTsgIHByb3ZpZGluZyAgYSAgbmV3ICBhcHBsaWNhdGlvbiAgYmluYXJ5IGludGVyZmFjZSAoQUJJKS4KKyAgIEFsdGhvdWdoICB0aGUgIHNvdXJjZSBjYW4gc3RpbGwgYmUgY29uZmlndXJlZCB0byBzdXBwb3J0IHRoZSBuY3Vyc2VzIDUKKyAgIEFCSSwgIHRoZSAgaW50ZW50ICBvZiAgdGhlICByZWxlYXNlIGlzIHRvIHByb3ZpZGUgZXh0ZW5zaW9ucyB3aGljaCBhcmUKKyAgIGdlbmVyYWxseSB1c2VmdWwsIGJ1dCBiaW5hcnktaW5jb21wYXRpYmxlIHdpdGggbmN1cnNlcyA1OgorICAgICAqIEV4dGVuZCAgdGhlICBjY2hhcl90ICBzdHJ1Y3R1cmUgdG8gYWxsb3cgbW9yZSB0aGFuIDE2IGNvbG9ycyB0byBiZQorICAgICAgIGVuY29kZWQuCisgICAgICogTW9kaWZ5ICB0aGUgIGVuY29kaW5nICBvZiBtb3VzZSBzdGF0ZSB0byBtYWtlIHJvb20gZm9yIGEgNXRoIG1vdXNlCisgICAgICAgYnV0dG9uLiAgVGhhdCAgYWxsb3dzICBvbmUgIHRvIHVzZSBuY3Vyc2VzIHdpdGggYSB3aGVlbCBtb3VzZSB3aXRoCisgICAgICAgeHRlcm0gb3Igc2ltaWxhciBYIHRlcm1pbmFsIGVtdWxhdG9ycy4KIAotICAgICAgICAgICAgICAtLWRpc2FibGUtYmlnLXN0cmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICBjb250cm9sICB3aGV0aGVyIHN0YXRpYyBzdHJpbmcgdGFibGVzIGFyZSBnZW5lcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBhcyAgIHNpbmdsZSAgIGxhcmdlICBzdHJpbmdzICAodG8gIGltcHJvdmUgIHN0YXJ0dXAKLSAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSksIG9yIGFzIGFycmF5IG9mIGluZGl2aWR1YWwgc3RyaW5ncy4KKyAgIFRoZXJlIGFyZSwgb2YgY291cnNlLCBudW1lcm91cyBvdGhlciBpbXByb3ZlbWVudHMsIGluY2x1ZGluZworICAgICAqIGZpeGVzIG1hZGUgYmFzZWQgb24gdGhlIENsYW5nIGFuZCBDb3Zlcml0eSBzdGF0aWMgYW5hbHl6ZXJzLgorICAgICAqIG1lbW9yeSBsZWFrIGZpeGVzIHVzaW5nIFZhbGdyaW5kCiAKLSAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlbGluawotICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgICB3aGV0aGVyICBzaGFyZWQgIGxpYnJhcmllcyAgYXJlICByZWxpbmtlZAotICAgICAgICAgICAgICAgICAgICAgIChkdXJpbmcgaW5zdGFsbCkgd2hlbiBycGF0aCBpcyBlbmFibGVkLgorICAgVGhlICByZWxlYXNlICBub3RlcyAgbWVudGlvbiAgc29tZSAgYnVnLWZpeGVzLCAgYnV0IGFyZSBmb2N1c2VkIG9uIG5ldworICAgZmVhdHVyZXMgIGFuZCAgaW1wcm92ZW1lbnRzIHRvIGV4aXN0aW5nIGZlYXR1cmVzIGxvZyBzaW5jZSBuY3Vyc2VzIDUuOQorICAgcmVsZWFzZS4KIAotICAgICAgICAgICAgICAtLWRpc2FibGUtdGljLWRlcGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICBtYWtlICAgZXhwbGljaXQgIHdoZXRoZXIgIHRpYyAgbGlicmFyeSAgZGVwZW5kcyAgb24KLSAgICAgICAgICAgICAgICAgICAgICBuY3Vyc2VzL25jdXJzZXN3IGxpYnJhcnkuCisgICBXaGlsZSAgdGhlIGludGVudCBvZiB0aGUgcmVsZWFzZSBpcyB0byBwcm92aWRlIGEgbmV3IHN0YWJsZSBBQkksIHRoZXJlCisgICBhcmUgb3RoZXIgZGV2ZWxvcG1lbnQgYWN0aXZpdGllcyB3aGljaCBhcmUgc3VtbWFyaXplZCBiZWxvdy4KKyAgICAgKiBUaGUgIG9yaWdpbmFsICByZWxlYXNlICBwbGFuLCAgZS5nLiwgZm9yICI1LjEwIiB3YXMgdG8gaW1wcm92ZSB0aGUKKyAgICAgICBNaW5HVyBwb3J0LiBVbHRpbWF0ZWx5IHRoYXQgd2FzIGNvbXBsZXRlZCAod2lkZS1jaGFyYWN0ZXIgc3VwcG9ydCwKKyAgICAgICBtb3VzZSwgIGV0YyksICBidXQgIHdhcyAgZGVmZXJyZWQgIHRvIGZvY3VzIG9uIHRlcm1jYXAgc3VwcG9ydCBhbmQKKyAgICAgICBwZXJmb3JtYW5jZSAgaXNzdWVzLiAgQWxzbywgcGlucG9pbnRpbmcgdGhlIHByb2JsZW1zIHdpdGggQ29uc29sZTIKKyAgICAgICB0b29rIGEgd2hpbGUuCisgICAgICogQSAgcmV2aWV3ICBvZiAgdGVybWNhcCAgY29tcGF0aWJpbGl0eSBpbiAyMDExIGxlZCB0byBzZXZlcmFsIG1pbm9yCisgICAgICAgZml4ZXMgIGluICB0aGUgIGxpYnJhcnkgIGFuZCBpbXByb3ZlbWVudHMgdG8gdXRpbGl0aWVzLiBUbyBkbyB0aGlzCisgICAgICAgcHJvcGVybHksICBhICByZXZpZXcgb2YgdGhlIHZhcmlvdXMgZXh0ZW50IHRlcm1jYXAgaW1wbGVtZW50YXRpb25zCisgICAgICAgd2FzIG5lZWRlZC4KKyAgICAgICBUaGUgWzExXXRlcm1jYXAgbGlicmFyeSBjaGVja2VyICh0Y3Rlc3QpIChub3QgcGFydCBvZiBuY3Vyc2VzKSB3YXMKKyAgICAgICBvbmUgICAgcmVzdWx0LiAgICBBICAgZm9sbG93dXAgICByZXZpZXcgICBvZiAgIHBlcmZvcm1hbmNlICAgdXNpbmcKKyAgICAgICBbMTJdbmN1cnNlcy1leGFtcGxlcyBpbiAyMDE0IGxlZCB0byBhZGRpdGlvbmFsIGltcHJvdmVtZW50cy4KKyAgICAgKiBPdXRwdXQgYnVmZmVyaW5nIHByb3ZpZGVkIGEgZnVydGhlciwgYnV0IHdvcnRod2hpbGUgZGlzdHJhY3Rpb24uIEEKKyAgICAgICBidWcgIHJlcG9ydCAgaW4gIDIwMTIgIHJlZ2FyZGluZyAgdGhlICB1c2UgIG9mICBzaWduYWwgaGFuZGxlcnMgaW4KKyAgICAgICBuY3Vyc2VzKSAgcG9pbnRlZCAgb3V0ICBbMTNdYSAgcHJvYmxlbSAgd2l0aCAgdGhlICB1c2UgIG9mICB1bnNhZmUKKyAgICAgICBmdW5jdGlvbnMgIGZvciAgaGFuZGxpbmcgU0lHVFNUUC4gT3RoZXIgc2lnbmFscyBjb3VsZCBiZSBhZGRyZXNzZWQKKyAgICAgICB3aXRoIHdvcmthcm91bmRzOyByZXBhaXJpbmcgU0lHVFNUUCByZXF1aXJlZCBhIGRpZmZlcmVudCBhcHByb2FjaC4KKyAgICAgICBUaGUgIHNvbHV0aW9uICByZXF1aXJlZCBjaGFuZ2luZyBpbnRlcm5hbCBiZWhhdmlvciBvZiB0aGUgbGlicmFyeToKKyAgICAgICBob3cgaXQgaGFuZGxlcyBvdXRwdXQgYnVmZmVyaW5nLgorICAgICAgIE5vdyAgbmN1cnNlcyBidWZmZXJzIGl0cyBvd24gb3V0cHV0LCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzdGFuZGFyZAorICAgICAgIG91dHB1dC4gIEEgZmV3IGFwcGxpY2F0aW9ucyByZWxpZWQgdXBvbiB0aGUgbGlicmFyeSdzIGRpcmVjdCByZXVzZQorICAgICAgIG9mICB0aGUgIHN0YW5kYXJkICBvdXRwdXQgIGJ1ZmZlcmluZzsgIGhvd2V2ZXIgdGhhdCBpcyB1bnNwZWNpZmllZAorICAgICAgIGJlaGF2aW9yICBhbmQgIGhhcyAgbmV2ZXIgYmVlbiBhIHJlY29tbWVuZGVkIHByYWN0aWNlLiBJZGVudGlmeWluZworICAgICAgIHRoZXNlICBhcHBsaWNhdGlvbnMgIGFzICB3ZWxsICBhcyAgcmVmaW5pbmcgIHRoZSAgY2hhbmdlIHRvIHBlcm1pdAorICAgICAgIGxvdy1sZXZlbCBhcHBsaWNhdGlvbnMgdG8gd29yayBjb25zaXN0ZW50bHkgdG9vayB0aW1lLgorICAgICAqIFNpbmNlICB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgMjU2IGNvbG9ycworICAgICAgIGVhcmx5ICBpbiAgWzE0XTIwMDUgIChyZWxlYXNlZCBpbiBbMTVdbmN1cnNlcyA1LjUpLCB0aGVyZSBoYXMgYmVlbgorICAgICAgIGluY3JlYXNlZCAgdXNlciAgaW50ZXJlc3QuIEFsbW9zdCBhbGwgcGFja2FnZXJzIGNvbnRpbnVlIHByb3ZpZGluZworICAgICAgIHRoZSBuY3Vyc2VzIEFCSSA1IHdoaWNoIGNhbm5vdCBzdXBwb3J0IDI1NiBjb2xvcnMuCisgICAgICogU3ltYm9sICB2ZXJzaW9uaW5nLCAgb3IgIHRoZSAgbGFjayAgb2YgIGl0IGluIG5jdXJzZXMsIGlzIHRoZSBtYWluCisgICAgICAgcmVhc29uIHdoeSBwYWNrYWdlcnMgd291bGQgYmUgcmVsdWN0YW50IHRvIGFkZCBhIG5ldyBuY3Vyc2VzIEFCSS4KKyAgICAgICBUaGlzICByZWxlYXNlICBwcm92aWRlcyAgdGhlICBuZXcgIEFCSSBhbG9uZyB3aXRoIHNjcmlwdC1nZW5lcmF0ZWQKKyAgICAgICBsaXN0cyAgb2YgdmVyc2lvbmVkIHN5bWJvbHMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGJvdGggQUJJIDUgYW5kIDYKKyAgICAgICAod2l0aCAgZGlzdGluY3QgbmFtZXMgdG8ga2VlcCB0aGUgdHdvIHNlcGFyYXRlKS4gVGhpcyB0b29rIHRpbWUgdG8KKyAgICAgICBkZXZlbG9wbWVudCwgYXMgcmVwb3J0ZWQgaW4gWzE2XVN5bWJvbCB2ZXJzaW9uaW5nIGluIG5jdXJzZXMuCiAKLSAgICAgICAgICAgICAgLS1lbmFibGUtbWl4ZWQtY2FzZQotICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlICAgdGhlICBjb25maWd1cmUgIHNjcmlwdCdzICBjaGVjayAgaWYgIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gICBzdXBwb3J0cyAgbWl4ZWQtY2FzZSAgZmlsZW5hbWVzLiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyAgb25lICB0byAgY29udHJvbCAgaG93IHRoZSB0ZXJtaW5hbCBkYXRhYmFzZQotICAgICAgICAgICAgICAgICAgICAgIG1hcHMgdG8gdGhlIGZpbGVzeXN0ZW0uIEZvciBmaWxlc3lzdGVtcyB0aGF0IGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgICBtaXhlZC1jYXNlLCAgdGhlICBsaWJyYXJ5ICB1c2VzICBnZW5lcmF0ZQotICAgICAgICAgICAgICAgICAgICAgIDItY2hhcmFjdGVyIChoZXhhZGVjaW1hbCkgY29kZXMgZm9yIHRoZSBsb3dlci1sZXZlbAotICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmaWxlc3lzdGVtIHRlcm1pbmZvIGRhdGFiYXNlCisgIExpYnJhcnkgaW1wcm92ZW1lbnRzCiAKLSAgICAgICAgICAgICAgLS1lbmFibGUtcmVlbnRyYW50Ci0gICAgICAgICAgICAgICAgICAgICAgYnVpbGRzICBhICBkaWZmZXJlbnQgIGZsYXZvciBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgICAgICAgKG5jdXJzZXN0KSAgd2hpY2ggIGltcHJvdmVzICByZWVudHJhbnQgIHVzZSAgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSAgYnkgIHJlZHVjaW5nICBnbG9iYWwgIGFuZCBzdGF0aWMgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgKHNlZSAgdGhlICAiLS13aXRoLXB0aHJlYWQiIG9wdGlvbiBmb3IgdGhlIHRocmVhZGVkCi0gICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCkuCisgIE91dHB1dCBidWZmZXJpbmcKIAotICAgICAgICAgICAgICAtLWVuYWJsZS13ZWFrLXN5bWJvbHMKLSAgICAgICAgICAgICAgICAgICAgICB1c2UgIHdlYWstc3ltYm9scyAgZm9yICBsaW5raW5nIHRvIHRoZSBQT1NJWCB0aHJlYWQKLSAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LCAgYW5kICB1c2UgIHRoZSBzYW1lIHNvbmFtZSBmb3IgdGhlIG5jdXJzZXMKLSAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgIGxpYnJhcnkgIGFzIHRoZSBub3JtYWwgbGlicmFyeSAoY2F2ZWF0OiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBBQkkgaXMgZm9yIHRoZSB0aHJlYWRlZCBsaWJyYXJ5LCB3aGljaCBtYWtlcyBnbG9iYWwKLSAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFjY2Vzc2VkIHZpYSBmdW5jdGlvbnMpLgorICAgWC9PcGVuIGN1cnNlcyBwcm92aWRlcyBtb3JlIHRoYW4gb25lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uOgorICAgICAqIFsxN11pbml0c2NyICh0aGUgc2ltcGxlc3QpIGFjY2VwdHMgbm8gcGFyYW1ldGVycy4KKyAgICAgKiBbMThdbmV3dGVybSBhY2NlcHRzIHBhcmFtZXRlcnMgZm9yIHRoZSBzdHJlYW0gaW5wdXQgYW5kIG91dHB1dAorICAgICAqIFsxOV1zZXR1cHRlcm0gKHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb24pIGFjY2VwdHMgYSBwYXJhbWV0ZXIgZm9yIHRoZQorICAgICAgIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgb3V0cHV0LgogCi0gICAgICAgICAgICAgIC0td2l0aC1wdGhyZWFkCi0gICAgICAgICAgICAgICAgICAgICAgYnVpbGQgIHdpdGggIHRoZSAgUE9TSVggdGhyZWFkIGxpYnJhcnkgKHRlc3RlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgQUlYLCAgIExpbnV4LCAgIEZyZWVCU0QsICAgT3BlbkJTRCwgIEhQVVgsICBJUklYNjQsCi0gICAgICAgICAgICAgICAgICAgICAgU29sYXJpcywgVHJ1NjQpLgorICAgVGhleSBhcmUgZG9jdW1lbnRlZCBpbiBYL09wZW4gYXMgaWYgaW5pdHNjciBjYWxscyBuZXd0ZXJtIHVzaW5nIHN0ZG91dAorICAgZm9yICAgb3V0cHV0ICBzdHJlYW0sICBhbmQgIGluICB0dXJuICBuZXd0ZXJtICBjYWxscyAgc2V0dXB0ZXJtICB1c2luZworICAgZmlsZW5vKHN0ZG91dCkgIGZvciAgdGhlIGZpbGUgZGVzY3JpcHRvci4gQXMgbG9uZyBhcyBhbiBpbXBsZW1lbnRhdGlvbgorICAgYWN0cyAgYXMgaWYgaXQgZG9lcyB0aGlzLCBpdCBjb25mb3Jtcy4gSW4gcHJhY3RpY2UsIGltcGxlbWVudGF0aW9ucyBkbworICAgd2hhdCAgaXMgIGltcGxpZWQuICBUaGlzICBjcmVhdGVzICBhICBwcm9ibGVtOiB0aGUgbG93LWxldmVsIHNldHVwdGVybQorICAgZnVuY3Rpb24ncyAgZmlsZSAgZGVzY3JpcHRvciAgaXMgIHVuYnVmZmVyZWQsICB3aGlsZSAgbmV3dGVybSAgaW1wbGllcworICAgYnVmZmVyZWQgIG91dHB1dC4gIFgvT3BlbiAgQ3Vyc2VzIHNheXMgdGhhdCBhbGwgb3V0cHV0IGlzIGRvbmUgdGhyb3VnaAorICAgdGhlICBmaWxlICBkZXNjcmlwdG9yLCAgYW5kICBkb2VzICBub3QgIHNheSAgaG93ICB0aGUgb3V0cHV0IHN0cmVhbSBpcworICAgYWN0dWFsbHkgdXNlZC4KIAotICAgICAgICAgICAgICAtLXdpdGgtdGljbGliCi0gICAgICAgICAgICAgICAgICAgICAgYnVpbGQvaW5zdGFsbCAgIHRoZSAgIHRpYy1zdXBwb3J0ICBmdW5jdGlvbnMgIGluICBhCi0gICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgbGlicmFyeQorICAgSW5pdGlhbGx5LCAgbmN1cnNlcyB1c2VkIHRoZSBmaWxlIGRlc2NyaXB0b3IgKG9idGFpbmVkIGZyb20gdGhlIG91dHB1dAorICAgc3RyZWFtICBwYXNzZWQgdG8gbmV3dGVybSkgZm9yIGNoYW5naW5nIHRoZSB0ZXJtaW5hbCBtb2RlcywgYW5kIHJlbGllZAorICAgdXBvbiAgdGhlICBvdXRwdXQgIHBhcmFtZXRlciBvZiBuZXd0ZXJtIGZvciBidWZmZXJlZCBvdXRwdXQuIExhdGVyICh0bworICAgYXZvaWQgIHVzaW5nICB1bnNhZmUgIGJ1ZmZlcmVkICBJL08gIGluICBzaWduYWwgaGFuZGxlcnMpLCBuY3Vyc2VzIHdhcworICAgbW9kaWZpZWQgIHRvIHVzZSB0aGUgZmlsZSBkZXNjcmlwdG9yICh1bmJ1ZmZlcmVkIG91dHB1dCkgd2hlbiBjbGVhbmluZworICAgdXAgIG9uIHJlY2VpcHQgb2YgYSBzaWduYWwuIE90aGVyd2lzZSAod2hlbiBub3QgaGFuZGxpbmcgYSBzaWduYWwpLCBpdAorICAgY29udGludWVkIHRvIHVzZSB0aGUgYnVmZmVyZWQgb3V0cHV0LgogCi0gICAgICAgICAgKyBpbXByb3ZlZCBvcHRpb25zOgorICAgVGhhdCAgYXBwcm9hY2ggIHdvcmtlZCByZWFzb25hYmx5IHdlbGwgYW5kIGFzIGEgc2lkZSBlZmZlY3QsIHVzaW5nIHRoZQorICAgc2FtZSBidWZmZXJlZCBvdXRwdXQgYXMgYW4gYXBwbGljYXRpb24gbWlnaHQgdXNlIGZvciBwcmludGYgbWVhbnQgdGhhdAorICAgbm8gICBmbHVzaGluZyAgIHdhcyAgIG5lZWRlZCAgIHdoZW4gICBzd2l0Y2hpbmcgIGJldHdlZW4gIG5vcm1hbC0gIGFuZAorICAgc2NyZWVuLW1vZGVzLgogCi0gICAgICAgICAgICAgIC0tZW5hYmxlLWV4dC1jb2xvcnMKLSAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcyB0aGUgd2lkZS1jaGFyYWN0ZXIgY29uZmlndXJhdGlvbi4KKyAgIFRoZXJlIHdlcmUgYSBjb3VwbGUgb2YgcHJvYmxlbXM6CisgICAgICogdG8gZ2V0IGdvb2QgcGVyZm9ybWFuY2UsIGN1cnNlcyAobm90IG9ubHkgbmN1cnNlcywgYnV0IFNWcjQgY3Vyc2VzCisgICAgICAgaW4gZ2VuZXJhbCkgc2V0IGFuIG91dHB1dCBidWZmZXIgdXNpbmcgc2V0YnVmIG9yIHNpbWlsYXIgZnVuY3Rpb24uCisgICAgICAgVGhlcmUgIGlzIG5vIHN0YW5kYXJkIChvciBwb3J0YWJsZSkgd2F5IHRvIHR1cm4gdGhhdCBvdXRwdXQgYnVmZmVyCisgICAgICAgb2ZmLCAgYW5kICByZXZlcnQgIHRvICBsaW5lLWJ1ZmZlcmluZy4gIFRoZSAgWzIwXU5DVVJTRVNfTk9fU0VUQlVGCisgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgZGlkIG1ha2UgaXQgb3B0aW9uYWwuCisgICAgICogdG8gIGhhbmRsZSBTSUdUU1RQICh0aGUgInN0b3AiIHNpZ25hbCksIG5jdXJzZXMgcmVsaWVkIHVwb24gdW5zYWZlCisgICAgICAgZnVuY3Rpb25zLiAgVGhhdCAgaXMsICBkdWUgIHRvICB0aGUgIGNvbXBsZXhpdHkgb2YgdGhlIGZlYXR1cmUsIGl0CisgICAgICAgcmVsaWVkICB1cG9uIHJldXNpbmcgZXhpc3RpbmcgZnVuY3Rpb25zIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuCisgICAgICAgY2FsbGVkIHZpYSB0aGUgc2lnbmFsIGhhbmRsZXIuCiAKLSAgICAgICAgICAgICAgLS13aXRoLWNodHlwZQotICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgb3B0aW9uICB2YWx1ZSAidW5zaWduZWQiIGlzIGFsd2F5cyBhZGRlZCB0bwotICAgICAgICAgICAgICAgICAgICAgIHRoZSAgIHR5cGUgICBpbiAgIGN1cnNlcy5oOyAgIGRvICAgdGhlICAgc2FtZSAgIGZvcgotICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1tbWFzay10LgorICAgQ29udmVuaWVudGx5LCBzb2x2aW5nIHRoZSBzZWNvbmQgcHJvYmxlbSAoYnkgbWFraW5nIG5jdXJzZXMgZG8gaXRzIG93bgorICAgb3V0cHV0ICBidWZmZXJpbmcpICBhbHNvICBmaXhlZCAgdGhlIGZpcnN0IG9uZS4gQnV0IHRoZXJlIHdlcmUgc3BlY2lhbAorICAgY2FzZXMgdG8gcmVzb2x2ZTogWzIxXWxvdy1sZXZlbCBmdW5jdGlvbnMgc3VjaCBhcyBtdmN1ciwgcHV0cCwgdmlkYXR0cgorICAgZXhwbGljaXRseSAgdXNlICB0aGUgIHN0YW5kYXJkICBvdXRwdXQuICBUaG9zZSAgZnVuY3Rpb25zICB3ZXJlIHJldXNlZAorICAgaW50ZXJuYWxseSwgYW5kIHJlcXVpcmVkIG1vZGlmaWNhdGlvbiB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHRoZXkgd2VyZQorICAgdXNlZCBieSB0aGUgaGlnaC1sZXZlbCBvciBsb3ctbGV2ZWwgaW50ZXJmYWNlcy4KIAotICAgICAgICAgICAgICAtLXdpdGgtZG1hbGxvYwotICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLWZpeCBmb3IgcmVkZWZpbml0aW9uIG9mIHN0cm5kdXAuCisgICBGaW5hbGx5LCB0aGVyZSBtYXkgc3RpbGwgYmUgYSBmZXcgcHJvZ3JhbXMgd2hpY2ggc2hvdWxkIGJlIG1vZGlmaWVkIHRvCisgICBpbXByb3ZlIHRoZWlyIHBvcnRhYmlsaXR5LCBlLmcuLCBhZGRpbmcgYW4KIAotICAgICAgICAgICAgICAtLXdpdGgtaGFzaGVkLWRiCi0gICAgICAgICAgICAgICAgICAgICAgYWNjZXB0cyAgYSBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGluc3RhbGwtcHJlZml4IG9mCi0gICAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiBCZXJrZWxleSBEYXRhYmFzZS4KK2ZmbHVzaChzdGRvdXQpOwogCi0gICAgICAgICAgICAgIC0td2l0aC1oYXNoZWQtZGIKLSAgICAgICAgICAgICAgICAgICAgICB0aGUgJExJQlMgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzIHRoZSBzZWFyY2gKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGRiIGxpYnJhcnkuCisgICB3aGVuICBzd2l0Y2hpbmcgIGZyb20gIlsyMl1zaGVsbCIgbW9kZSB0byAiWzIzXXByb2dyYW0iIChjdXJzZXMpIG1vZGUuCisgICBUaG9zZSBhcmUgZmFpcmx5IHJhcmUgYmVjYXVzZSBtb3N0IHByb2dyYW1tZXJzIGhhdmUgbGVhcm5lZCBub3QgdG8gbWl4CisgICBwcmludGYgYW5kIFsyNF1wcmludHcuCiAKLSAgICAgICAgICAgICAgLS13aXRob3V0LWhhc2hlZC1kYgotICAgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQgd2hlbiAiLS1kaXNhYmxlLWRhdGFiYXNlIiBpcyB1c2VkLgorICBTeW1ib2wgdmVyc2lvbmluZwogCi0gICAgICogb3RoZXIgY29uZmlndXJlL2J1aWxkIGlzc3VlczoKLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciBMeW54T1MKLSAgICAgICAgICArIG1vZGlmeSAgc2hhcmVkLWxpYnJhcnkgIHJ1bGVzICB0byAgYWxsb3cgIEZyZWVCU0QgIDMueCB0byB1c2UKLSAgICAgICAgICAgIHJwYXRoLgotICAgICAgICAgICsgYnVpbGQtZml4IGZvciBGcmVlQlNEICJjb250ZW1wb3JhcnkiIFRUWSBpbnRlcmZhY2UuCi0gICAgICAgICAgKyBidWlsZC1maXhlcyBmb3IgQUlYIHdpdGggbGlidG9vbC4KLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciBEYXJ3aW4gYW5kIGxpYnRvb2wuCi0gICAgICAgICAgKyBtb2RpZnkgQmVPUy1zcGVjaWZpYyBpZmRlZidzIHRvIGJ1aWxkIG9uIEhhaWt1LgotICAgICAgICAgICsgY29ycmVjdGVkICBnY2MgIG9wdGlvbnMgIGZvciAgYnVpbGRpbmcgIHNoYXJlZCAgbGlicmFyaWVzICBvbgotICAgICAgICAgICAgU29sYXJpcyBhbmQgSVJJWDY0LgotICAgICAgICAgICsgY2hhbmdlICBzaGFyZWQtbGlicmFyeSAgY29uZmlndXJhdGlvbiBmb3IgT3BlbkJTRCwgbWFrZSBycGF0aAotICAgICAgICAgICAgd29yay4KLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciB1c2luZyBsaWJ1dGY4LCBlLmcuLCBvbiBPcGVuQlNEIDMuNwotICAgICAgICAgICsgYWRkICAgIi1lIiAgb3B0aW9uICBpbiAgbmN1cnNlcy9NYWtlZmlsZS5pbiAgd2hlbiAgZ2VuZXJhdGluZwotICAgICAgICAgICAgc291cmNlLWZpbGVzICB0byAgZm9yY2UgZWFybGllciBleGl0IGlmIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgZmFpbHMgdW5leHBlY3RlZGx5LgotICAgICAgICAgICsgYWRkIHN1cHBvcnQgZm9yIHNoYXJlZCBsaWJyYXJpZXMgZm9yIFFOWC4KLSAgICAgICAgICArIGNoYW5nZSAgZGVsaW1pdGVyICBpbiAgTUtsaWJfZ2VuLnNoIGZyb20gJyUnIHRvICdAJywgdG8gYXZvaWQKLSAgICAgICAgICAgIHN1YnN0aXR1dGlvbiAgYnkgIElCTSB4bGMgdG8gJyMnIGFzIHBhcnQgb2YgaXRzIGV4dGVuc2lvbnMgdG8KLSAgICAgICAgICAgIGRpZ3JhcGhzLgotICAgICAqIGxpYnJhcnk6Ci0gICAgICAgICAgKyByZXdyaXRlICB3cmFwcGVyICBmb3IgIHdjcnRvbWIoKSwgIG1ha2luZyBpdCB3b3JrIG9uIFNvbGFyaXMuCi0gICAgICAgICAgICBUaGlzICBpcyAgdXNlZCBpbiB0aGUgZm9ybSBsaWJyYXJ5IHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mCi0gICAgICAgICAgICB0aGUgYnVmZmVyIG5lZWRlZCBieSBmaWVsZF9idWZmZXIuCi0gICAgICAgICAgKyBhZGQvdXNlICBjb25maWd1cmUgIHNjcmlwdCAgbWFjcm8gIENGX1NJR19BVE9NSUNfVCwgIHVzZSAgdGhlCi0gICAgICAgICAgICBjb3JyZXNwb25kaW5nIHR5cGUgZm9yIGRhdGEgbWFuaXB1bGF0ZWQgYnkgc2lnbmFsIGhhbmRsZXJzLgotICAgICAgICAgICsgc2V0IGxvY2FsZSBpbiBtaXNjL25jdXJzZXMtY29uZmlnLmluIHNpbmNlIGl0IHVzZXMgYSByYW5nZQotICAgICAgICAgICsgZGlzYWJsZSAgR1BNICBtb3VzZSAgc3VwcG9ydCAgd2hlbiAgJFRFUk0gIGRvZXMgbm90IGhhcHBlbiB0bwotICAgICAgICAgICAgY29udGFpbiAgImxpbnV4IiwgIHNpbmNlICBHcG1fT3BlbigpICBubyAgbG9uZ2VyICBsaW1pdHMgIGl0cwotICAgICAgICAgICAgYXNzZXJ0aW9uICB0byAgdGVybWluYWxzICB0aGF0ICBpdCBtaWdodCBoYW5kbGUsIGUuZy4sIHdpdGhpbgotICAgICAgICAgICAgInNjcmVlbiIgaW4geHRlcm0uCi0gICAgICAgICAgKyByZXNldCBtb3VzZSBmaWxlLWRlc2NyaXB0b3Igd2hlbiB1bmxvYWRpbmcgR1BNIGxpYnJhcnkuCi0gICAgICogdGVzdCBwcm9ncmFtczoKLSAgICAgICAgICArIHVwZGF0ZSAgdGVzdCAgcHJvZ3JhbXMgdG8gYnVpbGQvd29yayB3aXRoIHZhcmlvdXMgVU5JWCBjdXJzZXMKLSAgICAgICAgICAgIGZvciBjb21wYXJpc29ucy4KKyAgIFRoaXMgIHJlbGVhc2UgIGludHJvZHVjZXMgc3ltYm9sLXZlcnNpb25pbmcgdG8gbmN1cnNlcyBiZWNhdXNlIHdpdGhvdXQKKyAgIGl0LCAgdGhlICBjaGFuZ2Ugb2YgQUJJIHdvdWxkIGJlIGxlc3Mgc3VjY2Vzc2Z1bC4gQSBsZW5ndGh5IGRpc2N1c3Npb24KKyAgIHdpbGwgIGJlICBwcmVzZW50ZWQgIGluICBbMjVdU3ltYm9sIHZlcnNpb25pbmcgaW4gbmN1cnNlcy4gVGhlc2Ugbm90ZXMKKyAgIHN1bW1hcml6ZSB3aGF0IGhhcyBjaGFuZ2VkLCBhbmQgd2hhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBuZXcgcmVsZWFzZS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgb2YgTmN1cnNlcworICAgU3ltYm9sLXZlcnNpb25pbmcgIGFsbG93cyAgdGhlICBkZXZlbG9wZXJzICBvZiAgYSBsaWJyYXJ5IHRvIG1hcmsgZWFjaAorICAgcHVibGljICBzeW1ib2wgIChib3RoICBkYXRhIGFuZCBmdW5jdGlvbnMpIHdpdGggYW4gaWRlbnRpZmllciBkZW5vdGluZworICAgdGhlICBsaWJyYXJ5ICBuYW1lICBhbmQgIHRoZSAgdmVyc2lvbiBmb3Igd2hpY2ggaXQgd2FzIGJ1aWx0LiBCeSBkb2luZworICAgdGhpcywgdXNlcnMgb2YgdGhlIGxpYnJhcnkgaGF2ZSBhIHdheSB0byBoZWxwIGVuc3VyZSB0aGF0IGFwcGxpY2F0aW9ucworICAgZG8gbm90IGFjY2lkZW50YWxseSBsb2FkIGFuIGluY29tcGF0aWJsZSBsaWJyYXJ5LiBJbiBhZGRpdGlvbiwgcHJpdmF0ZQorICAgc3ltYm9scyBjYW4gYmUgaGlkZGVuIGVudGlyZWx5LgogCi0gICBUaGUgbmN1cnNlcyBwYWNrYWdlIGlzIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gViBSZWxlYXNlIDQpCi0gICBjdXJzZXM6Ci0gICAgICogQWxsICAyNTcgIG9mICB0aGUgIFNWcjQgIGNhbGxzICBoYXZlICBiZWVuICBpbXBsZW1lbnRlZCAgKGFuZCAgYXJlCi0gICAgICAgZG9jdW1lbnRlZCkuCi0gICAgICogRnVsbCAgc3VwcG9ydCBmb3IgU1ZyNCBjdXJzZXMgZmVhdHVyZXMgaW5jbHVkaW5nIGtleWJvYXJkIG1hcHBpbmcsCi0gICAgICAgY29sb3IsICAgZm9ybXMtZHJhd2luZyAgIHdpdGggICBBQ1MgICBjaGFyYWN0ZXJzLCAgIGFuZCAgYXV0b21hdGljCi0gICAgICAgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbiBrZXlzLgotICAgICAqIEFuICBlbXVsYXRpb24gIG9mICB0aGUgIFNWcjQgcGFuZWxzIGxpYnJhcnksIHN1cHBvcnRpbmcgYSBzdGFjayBvZgotICAgICAgIHdpbmRvd3Mgd2l0aCBiYWNraW5nIHN0b3JlLCBpcyBpbmNsdWRlZC4KLSAgICAgKiBBbiAgZW11bGF0aW9uICBvZiB0aGUgU1ZyNCBtZW51cyBsaWJyYXJ5LCBzdXBwb3J0aW5nIGEgdW5pZm9ybSBidXQKLSAgICAgICBmbGV4aWJsZSBpbnRlcmZhY2UgZm9yIG1lbnUgcHJvZ3JhbW1pbmcsIGlzIGluY2x1ZGVkLgotICAgICAqIEFuICBlbXVsYXRpb24gb2YgdGhlIFNWcjQgZm9ybSBsaWJyYXJ5LCBzdXBwb3J0aW5nIGRhdGEgY29sbGVjdGlvbgotICAgICAgIHRocm91Z2ggb24tc2NyZWVuIGZvcm1zLCBpcyBpbmNsdWRlZC4KLSAgICAgKiBCaW5hcnkgICB0ZXJtaW5mbyAgIGVudHJpZXMgICBnZW5lcmF0ZWQgICBieSAgdGhlICBuY3Vyc2VzICB0aWMoMSkKLSAgICAgICBpbXBsZW1lbnRhdGlvbiAgYXJlICBiaXQtZm9yLWJpdC1jb21wYXRpYmxlICB3aXRoIHRoZSBlbnRyeSBmb3JtYXQKLSAgICAgICBTVnI0IGN1cnNlcyB1c2VzLgotICAgICAqIFRoZSB1dGlsaXRpZXMgaGF2ZSBvcHRpb25zIHRvIGFsbG93IHlvdSB0byBmaWx0ZXIgdGVybWluZm8gZW50cmllcwotICAgICAgIGZvciAgdXNlICB3aXRoICBsZXNzICBjYXBhYmxlIGN1cnNlcy90ZXJtaW5mbyB2ZXJzaW9ucyBzdWNoIGFzIHRoZQotICAgICAgIEhQL1VYIGFuZCBBSVggcG9ydHMuCisgICBUaGlzICAgcmVsZWFzZSAgIHByb3ZpZGVzICAgc2FtcGxlICAgZmlsZXMgICBmb3IgIHRoZSAgZm91ciAgcHJpbmNpcGFsCisgICBjb25maWd1cmF0aW9ucyAgb2YgIG5jdXJzZXMgbGlicmFyaWVzOiBuY3Vyc2VzLCBuY3Vyc2VzdywgbmN1cnNlc3QgYW5kCisgICBuY3Vyc2VzdHcuIEVhY2ggc2FtcGxlIGlzIGdpdmVuIGluIHR3byBmb3JtczoKKworICAgIi5tYXAiCisgICAgICAgICAgVGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHRvZ2V0aGVyIHdpdGggdmVyc2lvbiBuYW1lcy4KKworICAgIi5zeW0iCisgICAgICAgICAgVGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHdpdGhvdXQgdmVyc2lvbiBuYW1lcy4KKworICAgVGhlICBzYW1wbGUgIGZpbGVzICBhcmUgZ2VuZXJhdGVkIGJ5IHNjcmlwdHMgd2hpY2ggdGFrZSBpbnRvIGFjY291bnQgYQorICAgZmV3IHNwZWNpYWwgY2FzZXMgc3VjaCBhcyBbMjZddGFjayB0byBvbWl0IG1hbnkgb2YgdGhlIG5jdXJzZXMgcHJpdmF0ZQorICAgc3ltYm9scyAgKGJlZ2lubmluZyB3aXRoICJfbmNfIikuIEhlcmUgYXJlIGNvdW50cyBvZiBnbG9iYWxzIHZlcnN1cworICAgbG9jYWxzOgorCisgICAgICBDb25maWcgICBTeW1ib2xzIEdsb2JhbHMgTG9jYWxzICJfbmNfIgorICAgICBuY3Vyc2VzICAgICAgIDk3NiAgICAgNzk2ICAgIDE4MCAgICAzMzIKKyAgICAgbmN1cnNlc3cgICAgIDEwODkgICAgIDkwNSAgICAxODQgICAgMzQzCisgICAgIG5jdXJzZXN0ICAgICAgOTc5ICAgICA4MDQgICAgMTc1ICAgIDM1OAorICAgICBuY3Vyc2VzdHcgICAgMTA5OCAgICAgOTE0ICAgIDE4NCAgICAzNzIKKworICAgQWx0aG91Z2ggb25seSBmb3VyIHNhbXBsZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkLCBlYWNoIGlzIGZvcm1lZAorICAgYnkgIG1lcmdpbmcgIHN5bWJvbHMgIGZyb20gIHNldmVyYWwgIGNvbWJpbmF0aW9ucyAgb2YgY29uZmlndXJlLXNjcmlwdAorICAgb3B0aW9ucywgdGFraW5nIGludG8gYWNjb3VudCBhZHZpY2UgZnJvbSBkb3duc3RyZWFtIHBhY2thZ2Vycy4gQmVjYXVzZQorICAgdGhleSAgYXJlICBmb3JtZWQgYnkgbWVyZ2luZywgdGhlIHNhbXBsZSBmaWxlcyBtYXkgbGlzdCBhIHN5bWJvbCB3aGljaAorICAgaXMgIG5vdCAgaW4gIGEgIGdpdmVuIHBhY2thZ2UuIFRoYXQgaXMgZXhwZWN0ZWQuIFRoZSBzYW1wbGVzIGhhdmUgYmVlbgorICAgdGVzdGVkICBhbmQgIGFyZSAgd29ya2luZyAgd2l0aCAgc3lzdGVtcyAgKHN1Y2ggYXMgRmVkb3JhLCBGcmVlQlNEIGFuZAorICAgRGViaWFuKSAgd2hpY2ggIGZ1bGx5ICBzdXBwb3J0ICB0aGlzICBmZWF0dXJlLiBUaGVyZSBhcmUgb3RoZXIgc3lzdGVtcworICAgd2hpY2ggIGRvICBub3QgIHN1cHBvcnQgdGhlIGZlYXR1cmUsIGFuZCBhIGZldyAoc3VjaCBhcyBTb2xhcmlzKSB3aGljaAorICAgcHJvdmlkZSBpbmNvbXBsZXRlIHN1cHBvcnQuCisKKyAgIFRoZSAgdmVyc2lvbi1uYW1pbmcgY29udmVudGlvbiB1c2VkIGFsbG93cyB0aGVzZSBzYW1wbGUgZmlsZXMgdG8gYnVpbGQKKyAgIGRpc3RpbmN0IGxpYnJhcmllcyBmb3IgQUJJIDUgYW5kIDYuIFZlcnNpb24gbmFtZXMgY29uc2lzdCBvZgorICAgICAqIGNvbmZpZ3VyYXRpb24gICBuYW1lLCAgZS5nLiwgICJOQ1VSU0VTVyIgIGZvciAgdGhlICB3aWRlLWNoYXJhY3RlcgorICAgICAgIGxpYnJhcmllcworICAgICAqIEFCSSB2ZXJzaW9uIChpZiBub3QgNSkKKyAgICAgKiBsaWJyYXJ5ICBuYW1lICBmb3IgdHdvIHNwZWNpYWwgY2FzZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2UKKyAgICAgICBhY3Jvc3MgY29uZmlndXJhdGlvbnM6ICJUSU5GTyIgYW5kICJUSUMiCisgICAgICogcmVsZWFzZSB2ZXJzaW9uCisgICAgICogcGF0Y2ggZGF0ZSAoZm9yIHRoZSByZWxlYXNlIHZlcnNpb24pCisKKyAgIEZvciAgZXhhbXBsZSwgIHJ1bm5pbmcgIG5tICAtRCAgb24gIHRoZSBsaWJyYXJpZXMgaW4gdGhlIG5jdXJzZXM2IHRlc3QKKyAgIHBhY2thZ2Ugc2hvd3MgdGhlc2Ugc3ltYm9sLXZlcnNpb25zOgorCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuMC4xOTk5MTAyMworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjEuMjAwMDA3MDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS41LjIwMDUxMDEwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuNy4yMDA4MTEwMgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjkuMjAxNTA1MzAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjAuMTk5OTEwMjMKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjEuMjAwMDA3MDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjIuMjAwMDEwMjEKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjMuMjAwMjEwMTkKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjQuMjAwNDAyMDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjUuMjAwNTEwMTAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjYuMjAwNjEyMTcKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjcuMjAwODExMDIKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjguMjAxMTAyMjYKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjkuMjAxNTA1MzAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS4xLjIwMDAwNzA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuMy4yMDAyMTAxOQorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjQuMjAwNDAyMDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS41LjIwMDUxMDEwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuNi4yMDA2MTIxNworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjcuMjAwODExMDIKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS44LjIwMTEwMjI2CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuOS4yMDE1MDUzMAorCisgICBBcyAgYSBzcGVjaWFsIGNhc2UsIHRoaXMgcmVsZWFzZSAod2hpY2ggbWFrZXMgdGhlIGZpbmFsIGNoYW5nZSBmb3IgQUJJCisgICA1KSBpcyBtYXJrZWQgd2l0aCByZWxlYXNlIHZlcnNpb24gNS45IGFuZCBwYXRjaCBkYXRlIDIwMTUwNTMwLgorCisgIE1pc2NlbGxhbmVvdXMKKworICAgVGhlIG5ldyByZWxlYXNlIGhhcyBzZXZlcmFsIGltcHJvdmVtZW50cyBmb3IgcGVyZm9ybWFuY2UgYW5kIGJ1aWxkaW5nLgorICAgRm9yIGluc3RhbmNlOgorICAgICAqIHNldmVyYWwgIGZpbGVzICBpbiBuY3Vyc2VzLSBhbmQgcHJvZ3MtZGlyZWN0b3JpZXMgd2VyZSBtb2RpZmllZCB0bworICAgICAgIGFsbG93ICBjb25zdCAgZGF0YSB1c2VkIGluIGludGVybmFsIHRhYmxlcyB0byBiZSBwdXQgYnkgdGhlIGxpbmtlcgorICAgICAgIGludG8gdGhlIHJlYWRvbmx5IHRleHQgc2VnbWVudC4KKyAgICAgKiB2YXJpb3VzIGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8gYnVpbGRpbmcgdGhlIEFkYTk1IGJpbmRpbmcsIGJvdGgKKyAgICAgICBpbiBzaW1wbGlmeWluZyB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFzIHdlbGwgYXMgaW1wcm92aW5nIHRoZSB3YXkgaXQKKyAgICAgICB1c2VzIGduYXRtYWtlCisKKyAgIFRoZXJlIGFyZSBhbHNvIG5ldyBmZWF0dXJlcyBpbiB0aGUgbGlicmFyaWVzOgorICAgICAqIGFkZGVkIFsyN111c2VfdGlvY3RsIGZ1bmN0aW9uCisgICAgICogYWRkZWQgIFsyOF13Z2V0ZGVsYXkgIHRvICByZXRyaWV2ZSAgX2RlbGF5ICBtZW1iZXIgb2YgV0lORE9XIGlmIGl0CisgICAgICAgaGFwcGVucyB0byBiZSBvcGFxdWUsIGUuZy4sIGluIHRoZSBwdGhyZWFkIGNvbmZpZ3VyYXRpb24uCisgICAgICogYWRkZWQgWzI5XUFfSVRBTElDIGV4dGVuc2lvbi4KKyAgICAgKiBhZGRlZCAgZm9ybSAgbGlicmFyeSAgZXh0ZW5zaW9uIFszMF1PX0RZTkFNSUNfSlVTVElGWSBvcHRpb24gd2hpY2gKKyAgICAgICBjYW4gIGJlICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIGp1c3RpZmljYXRpb24KKyAgICAgICBmb3Igc3RhdGljIHZlcnN1cyBkeW5hbWljIGZpZWxkcyAuCisgICAgICogcmV3cm90ZSAgWzMxXXB1dHdpbiAgYW5kICBbMzJdZ2V0d2luLCAgbWFraW5nICBhbiBleHRlbmRlZCB2ZXJzaW9uCisgICAgICAgd2hpY2ggIGlzICBjYXBhYmxlIG9mIHJlYWRpbmcgc2NyZWVuLWR1bXBzIGJldHdlZW4gdGhlIHdpZGUvbm9ybWFsCisgICAgICAgbmN1cnNlcyAgY29uZmlndXJhdGlvbnMuICBUaGVzZSBhcmUgdGV4dCBmaWxlcywgZXhjZXB0IGZvciBhIG1hZ2ljCisgICAgICAgY29kZSBhdCB0aGUgYmVnaW5uaW5nOgorCiswICAgICAgIHN0cmluZyAgICAgICAgICBcMjEwXDIxMCAgICAgICAgU2NyZWVuLWR1bXAgKG5jdXJzZXMpCisKKyAgICAgKiBzZXZlcmFsIGNoYW5nZXMgdG8gbW91c2Ugc3VwcG9ydCBpbmNsdWRlOgorICAgICAgICAgICsgYWRkZWQgZGVjb2RlciBmb3IgeHRlcm0gU0dSIDEwMDYgbW91c2UgbW9kZS4KKyAgICAgICAgICArIGFkZGVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciAiJXUiIGZvcm1hdCB0byB0ZXJtaW5mby4KKyAgICAgICAgICArIGltcHJvdmVkICBiZWhhdmlvciAgb2YgIHdoZWVsLW1pY2UgZm9yIHh0ZXJtIHByb3RvY29sOiBub3RpbmcKKyAgICAgICAgICAgIHRoYXQgIHRoZXJlICBhcmUgb25seSBidXR0b24tcHJlc3NlcyBmb3IgYnV0dG9ucyAiNCIgYW5kICI1IiwKKyAgICAgICAgICAgIHNvICAgdGhlcmUgIGlzICBubyAgbmVlZCAgdG8gIHdhaXQgIHRvICBjb21iaW5lICBldmVudHMgIGludG8KKyAgICAgICAgICAgIGRvdWJsZS1jbGlja3MgLgorCisgICBUaGVyZSAgIGFyZSAgIGEgICBmZXcgIG5ldyAgY29uZmlndXJlICBvcHRpb25zICBkZWFsaW5nICB3aXRoICBsaWJyYXJ5CisgICBjdXN0b21pemF0aW9uOgorICAgICAqIGFkZCAiLS1lbmFibGUtZXh0LXB1dHdpbiIgY29uZmlndXJlIG9wdGlvbiB0byB0dXJuIG9uIHRoZSBleHRlbmRlZAorICAgICAgIHB1dHdpbi9nZXR3aW4uICBCeSBkZWZhdWx0LCB0aGlzIGlzIGVuYWJsZWQgZm9yIEFCSSA2IGFuZCBkaXNhYmxlZAorICAgICAgIHdpdGggQUJJIDUuCisgICAgICogYWRkICAiLS1lbmFibGUtc3RyaW5nLWhhY2tzIiBvcHRpb24gdG8gY29udHJvbCB3aGV0aGVyIHN0cmxjYXQgYW5kCisgICAgICAgc3RybGNweSAgbWF5ICBiZSAgdXNlZC4gQmVjYXVzZSBuY3Vyc2VzIGFscmVhZHkgZG9lcyB0aGUgcmVxdWlzaXRlCisgICAgICAgYnVmZmVyLWxpbWl0ICBjaGVja3MsICB0aGlzIGZlYXR1cmUgaXMgbWFpbmx5IG9mIGludGVyZXN0IHRvIHF1aWV0CisgICAgICAgY29tcGlsZXItd2FybmluZ3Mgb24gYSBmZXcgc3lzdGVtcy4KKyAgICAgKiBhZGQgIGNvbmZpZ3VyZSAgb3B0aW9uICAiLS13aXRoLXRwYXJtLWFyZyIgIHRvICBhbGxvdyAgWzMzXXRwYXJtJ3MKKyAgICAgICBwYXJhbWV0ZXJzICB0byAgYmUgIHNvbWV0aGluZyBtb3JlIGxpa2VseSB0byBiZSB0aGUgc2FtZSBzaXplIGFzIGEKKyAgICAgICBwb2ludGVyLCBlLmcuLCBpbnRwdHJfdCAoYWdhaW4sIHRoZSBkZWZhdWx0IGlzIHNldCBmb3IgQUJJIDYpLgorCisgIFByb2dyYW0gaW1wcm92ZW1lbnRzCisKKyAgICBVdGlsaXRpZXMKKworICAgTW9zdCBvZiB0aGUgdGVybWNhcC1yZWxhdGVkIGNoYW5nZXMgYmFzZWQgb24gZGV2ZWxvcG1lbnQgb2YgWzM0XXRjdGVzdAorICAgKHRlcm1jYXAgIGxpYnJhcnkgIGNoZWNrZXIpICBhcmUgIGltcGxlbWVudGVkICBpbiAgdGhlIHRpYyBhbmQgaW5mb2NtcAorICAgcHJvZ3JhbXMgICByYXRoZXIgICB0aGFuICBhZmZlY3RpbmcgIHRoZSAgbGlicmFyeS4gIEFzICBub3RlZCAgaW4gIHRoZQorICAgWzM1XWRpc2N1c3Npb24gIG9mICB0Y3Rlc3QsICBuY3Vyc2VzJ3MgIGFiaWxpdHkgIHRvICB0cmFuc2xhdGUgYmV0d2VlbgorICAgdGVybWluZm8gYW5kIHRlcm1jYXAgZm9ybWF0cyBoYXMgYmVlbiBpbXByb3ZlZCBhdCBkaWZmZXJlbnQgdGltZXMsIGJ1dAorICAgc3ViamVjdCAgdG8gIGZlZWRiYWNrIGZyb20gInJlYWwiIHRlcm1jYXAgdXNlcnMuIFRoZXJlIGFyZSB2ZXJ5IGZldyBvZgorICAgdGhvc2UuICBOb3dhZGF5cywgIHZpcnR1YWxseSAgYWxsICB0ZXJtY2FwIHVzZXJzIGFyZSB1c2luZyBuY3Vyc2VzIChvcgorICAgTmV0QlNELCB3aXRoIGl0cyBvd24gdGVybWluZm8gbGlicmFyeSkgYW5kIHRoZWlyIHByb2dyYW1zIGFyZSBhY3R1YWxseQorICAgdXNpbmcgdGVybWluZm8gcmF0aGVyIHRoYW4gdGVybWNhcCBkYXRhLgorCisgICBTdGlsbCwgIHRoZXJlICBhcmUgYSBmZXcuIEEgY29tbWVudCBhYm91dCB0aGUgdHJhbnNsYXRpb24gb2YgdGhlIEFTQ0lJCisgICBOVUwgY2hhcmFjdGVyIHByb21wdGVkIGEgcmV2aWV3OgorICAgICAqIEJvdGggICB0ZXJtaW5mbyAgIGFuZCAgIHRlcm1jYXAgICBzdG9yZSAgIHN0cmluZyAgY2FwYWJpbGl0aWVzICBhcworICAgICAgIE5VTC10ZXJtaW5hdGVkIHN0cmluZ3MuCisgICAgICogSW4gdGVybWluZm8sIGEgXDAgaW4gYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBpcyBzdG9yZWQgYXMgXDIwMC4KKyAgICAgKiBUaGVyZSBhcmUgbm8gKGtub3duKSB0ZXJtaW5hbHMgd2hpY2ggd291bGQgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4KKyAgICAgICBzZW50IFwwIG9yIFwyMDAuCisgICAgICogV2hlbiAgdHJhbnNsYXRpbmcgIHRvICB0ZXJtaW5mbyAgZm9ybWF0IChvciBkaXNwbGF5aW5nIGEgcHJpbnRhYmxlCisgICAgICAgdmVyc2lvbiBvZiBhbiBlbnRyeSB1c2luZyBpbmZvY21wKSwgbmN1cnNlcyBzaG93cyBcMjAwIGFzIFwwLgorICAgICAqIEl0IGhhcyBkb25lIHRoaXMgc2luY2UgMTk5OCAocXVvdGluZyBmcm9tIHRoZSBORVdTIGZpbGUpOgorCitbMzZdOTgwMTAzCisuLi4KKyAgICAgICAgKyBtb2RpZnkgX25jX3RpY19leHBhbmQoKSB0byBnZW5lcmF0ZSBcMCByYXRoZXIgdGhhbiBcMjAwLgorLi4uCisgICAgICAgICsgY29ycmVjdCB0cmFuc2xhdGlvbiBvZiB0ZXJtaW5mbyAiXkAiLCB0byBcMjAwLCBsaWtlIFwwLgorCisgICAgICogSG93ZXZlciwgIHRoZSAgX25jX3RpY19leHBhbmQgIGZ1bmN0aW9uICh3aGljaCBvcHRpb25hbGx5IHByb2R1Y2VzCisgICAgICAgdGVybWluZm8gIG9yIHRlcm1jYXAgZm9ybWF0KSBkaWQgbm90IGFkZHJlc3MgdGhpcyBzcGVjaWFsIGNhc2UgZm9yCisgICAgICAgdGVybWNhcC4gIEV2ZW4gIHRoZSAgbGF0ZXIgIDQuNEJTRCAgWzM3XWNnZXRzdHIgIGludGVycHJldHMgIGEgIFwwCisgICAgICAgbGl0ZXJhbGx5LCAgZW5kaW5nICB0aGF0ICBzdHJpbmcgIChyYXRoZXIgIHRoYW4gdXNpbmcgdGhlIHRlcm1pbmZvCisgICAgICAgaW1wcm92ZW1lbnQpLgorCisgICBBcyAgYSAgcmVzdWx0IG9mIHRoZSByZXZpZXcsIHNldmVyYWwgaW1wcm92ZW1lbnRzIHdlcmUgbWFkZSB0byBuY3Vyc2VzCisgICB0cmFuc2xhdGlvbiB0by9mcm9tIHRlcm1jYXAgZm9ybWF0IC0tIGFuZCBpbXByb3ZpbmcgdGhlIGNoZWNrcyBtYWRlIGluCisgICB0aWMgIGZvciAgY29uc2lzdGVuY3kgIG9mICBlbnRyaWVzLiAgTW9zdCAgb2YgdGhlc2UgYXJlIG5vdCBvZiBnZW5lcmFsCisgICBpbnRlcmVzdCwgZXhjZXB0IGZvciB0d28gbmV3IGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aWMgYW5kIGluZm9jbXA6CisgICAgICogdGhlICAiLTAiICBvcHRpb24gIGdlbmVyYXRlcyAgdGVybWNhcC90ZXJtaW5mbyAgc291cmNlIG9uIGEgc2luZ2xlCisgICAgICAgbGluZS4KKyAgICAgKiB0aGUgICItSyIgIG9wdGlvbiAgcHJvdmlkZXMgc3RyaWN0ZXIgQlNELWNvbXBhdGliaWxpdHkgZm9yIHRlcm1jYXAKKyAgICAgICBvdXRwdXQuCisKKyAgIE90aGVyIHVzZXItdmlzaWJsZSBpbXByb3ZlbWVudHMgYW5kIG5ldyBmZWF0dXJlcyBpbmNsdWRlOgorICAgICAqIGFkZGVkICAiLUQiICBvcHRpb24gIHRvICB0aWMgIGFuZCAgaW5mb2NtcCwgIHRvICBzaG93IHRoZSBkYXRhYmFzZQorICAgICAgIGxvY2F0aW9ucyB0aGF0IGl0IGNvdWxkIHVzZS4KKyAgICAgKiBhZGRlZCAiLXMiIG9wdGlvbiB0byB0b2UsIHRvIHNvcnQgaXRzIG91dHB1dC4KKyAgICAgKiBleHRlbmRlZCAgIi1jIiBhbmQgIi1uIiBvcHRpb25zIG9mIGluZm9jbXAgdG8gYWxsb3cgY29tcGFyaW5nIG1vcmUKKyAgICAgICB0aGFuIHR3byBlbnRyaWVzLgorICAgICAqIG1vZGlmaWVkICB0b2UncyByZXBvcnQgd2hlbiAiLWEiIGFuZCAiLXMiIG9wdGlvbnMgYXJlIGNvbWJpbmVkLCB0bworICAgICAgIGFkZCBhIGNvbHVtbiBzaG93aW5nIHdoaWNoIGVudHJpZXMgYmVsb25nIHRvIGEgZ2l2ZW4gZGF0YWJhc2UuCisgICAgICogbW9kaWZpZWQgIHRoZSBjbGVhciBwcm9ncmFtIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSAiRTMiIGV4dGVuZGVkCisgICAgICAgY2FwYWJpbGl0eSB0byBjbGVhciB0aGUgdGVybWluYWwncyBzY3JvbGxiYWNrIGJ1ZmZlci4KKworICAgIEV4YW1wbGVzCisKKyAgIEFsb25nICB3aXRoICB0aGUgbGlicmFyeSBhbmQgdXRpbGl0aWVzLCBtYW55IGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8KKyAgIHRoZSAgWzM4XW5jdXJzZXMtZXhhbXBsZXMuICBTb21lICB3ZXJlICBtYWRlICB0byAgYWxsb3cgIGJ1aWxkaW5nIChhbmQKKyAgIGNvbXBhcmlzb24tdGVzdGluZykgYWdhaW5zdCBOZXRCU0QgY3Vyc2VzIGFuZCBQREN1cnNlcy4gQm90aCBsYWNrIHNvbWUKKyAgIG9mICB0aGUgIFgvT3BlbiBDdXJzZXMgZmVhdHVyZXMsIG5lY2Vzc2l0YXRpbmcgY3VzdG9taXphdGlvbi4gQnV0IHRoaXMKKyAgIGFjdGl2aXR5ICB3YXMgIHVzZWZ1bCAgYmVjYXVzZSAgaXQgIHNob3dlZCAgc29tZSByZW1haW5pbmcgcGVyZm9ybWFuY2UKKyAgIGlzc3VlcyAod2hpY2ggaGF2ZSBiZWVuIHJlc29sdmVkIGluIHRoaXMgcmVsZWFzZSkuCisKKyAgIFRoZXNlIGNoYW5nZXMgd2VyZSBtYWRlIHRvIHZlcmlmeSBjb21wYXRpYmlsaXR5IG9yIGNvbXBhcmUgcGVyZm9ybWFuY2UKKyAgIG9mIG5jdXJzZXM6CisgICAgICogbWFkZSAgd29ya2Fyb3VuZHMgIGZvciBjb21waWxpbmcgdGVzdC1wcm9ncmFtcyB3aXRoIE5ldEJTRCBjdXJzZXMsCisgICAgICAgdGhvdWdoIGl0IGxhY2tzIHNvbWUgY29tbW9uIGZ1bmN0aW9ucyBzdWNoIGFzIFszOV11c2VfZW52LgorICAgICAqIGFkZGVkIGRvdHNfdGVybWNhcCB0ZXN0LXByb2dyYW0KKyAgICAgKiBhZGRlZCAgZG90c19jdXJzZXMgdGVzdC1wcm9ncmFtLCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBsb3ctbGV2ZWwKKyAgICAgICBleGFtcGxlcy4KKyAgICAgKiBhZGRlZCAgIHRlc3Rfc2V0dXB0ZXJtICB0ZXN0LXByb3JhbSAgdG8gIGRlbW9uc3RyYXRlICBub3JtYWwvZXJyb3IKKyAgICAgICByZXR1cm5zIGZyb20gdGhlIHNldHVwdGVybSBhbmQgcmVzdGFydHRlcm0gZnVuY3Rpb25zLgorICAgICAqIGFkZGVkICAiLWQiLCAgIi1lIiAgYW5kICAiLXEiICBvcHRpb25zICB0byAgdGhlICBkZW1vX3Rlcm1pbmZvIGFuZAorICAgICAgIGRlbW9fdGVybWNhcCB0ZXN0LXByb2dyYW1zLgorICAgICAqIGFkZGVkICAgIi15IiAgIG9wdGlvbiAgIHRvICAgZGVtb190ZXJtY2FwICBhbmQgIHRlc3QvZGVtb190ZXJtaW5mbworICAgICAgIHRlc3QtcHJvZ3JhbXMgICB0byAgIGRlbW9uc3RyYXRlICBiZWhhdmlvciAgd2l0aC93aXRob3V0ICBleHRlbmRlZAorICAgICAgIGNhcGFiaWxpdGllcy4KKyAgICAgKiBtb2RpZmllZCAgZGVtb190ZXJtY2FwICBhbmQgIGRlbW9fdGVybWluZm8gIHRlc3QtcHJvZ3JhbXMgIHRvIG1ha2UKKyAgICAgICB0aGVpciAgb3B0aW9ucyAgbW9yZSAgZGlyZWN0bHkgIGNvbXBhcmFibGUsIGFuZCBhZGQgIi1pIiBvcHRpb24gdG8KKyAgICAgICBzcGVjaWZ5ICBhICB0ZXJtaW5hbCAgZGVzY3JpcHRpb24gIGZpbGVuYW1lICB0byBwYXJzZSBmb3IgbmFtZXMgdG8KKyAgICAgICBsb29rdXAuCisgICAgICogcmV3cm90ZSAgIHRoZSAgdGVzdHMgIGZvciAgWzQwXW12ZGVyd2luICBhbmQgIHRlc3QgIGZvciAgcmVjdXJzaXZlCisgICAgICAgWzQxXW12d2luIGluIHRoZSBtb3Zld2luZG93IHRlc3QtcHJvZ3JhbS4KKworICAgVGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gaGVscCB3aXRoIHRoZSBNaW5HVyBwb3J0OgorICAgICAqIGFkZGVkICAgdGVzdC1zY3JlZW5zICAgdG8gICB0aGUgICBuY3Vyc2VzICAgdGVzdC1wcm9ncmFtICB0byAgc2hvdworICAgICAgIDI1Ni1jaGFyYWN0ZXJzIGF0IGEgdGltZSwgdG8gaGVscCB3aXRoIE1pbkdXIHBvcnQuCisgICAgICogbW9kaWZpZWQgdGhlIHZpZXcgdGVzdC1wcm9ncmFtIHRvIGxvYWQgVVRGLTggd2hlbiBidWlsdCB3aXRoIE1pbkdXCisgICAgICAgYnkgIHVzaW5nICByZWd1bGFyIHdpbjMyIEFQSSBiZWNhdXNlIHRoZSBNaW5HVyBmdW5jdGlvbnMgbWJsZW4gYW5kCisgICAgICAgbWJ0b3djIGRvIG5vdCB3b3JrLgorICAgICAqIGFkZGVkICItcyIgb3B0aW9uIHRvIHRoZSB2aWV3IHRlc3QtcHJvZ3JhbSB0byBhbGxvdyBpdCB0byBzdGFydCBpbgorICAgICAgIHNpbmdsZS1zdGVwIG1vZGUsIHJlZHVjaW5nIHNpemUgb2YgdHJhY2UgZmlsZXMgd2hlbiBpdCBpcyB1c2VkIGZvcgorICAgICAgIGRlYnVnZ2luZyBNaW5HVyBjaGFuZ2VzLgorCisgICBUaGVzZSBjaGFuZ2VzIHdlcmUgbWFkZSB0byB2ZXJpZnkgbmV3IGV4dGVuc2lvbnMgaW4gbmN1cnNlczoKKyAgICAgKiBhZGRlZCAgIFs0Ml1mb3JtX2RyaXZlcl93ICAgZW50cnlwb2ludCAgIHRvICB3aWRlLWNoYXJhY3RlciAgZm9ybXMKKyAgICAgICBsaWJyYXJ5LCBhcyB3ZWxsIGFzIGZvcm1fZHJpdmVyX3cgdGVzdC1wcm9ncmFtLgorICAgICAqIG1vZGlmaWVkICBuY3Vyc2VzICB0ZXN0LXByb2dyYW0ncyAgYi9CIHRlc3RzIHRvIGRpc3BsYXkgbGluZXMgb25seQorICAgICAgIGZvciAgdGhlICBhdHRyaWJ1dGVzIHdoaWNoIGEgZ2l2ZW4gdGVybWluYWwgc3VwcG9ydHMsIHRvIG1ha2Ugcm9vbQorICAgICAgIGZvciBhbiBpdGFsaWNzIHRlc3QuCisgICAgICogbW9kaWZpZWQgIG5jdXJzZXMgIHRlc3QtcHJvZ3JhbSwgIGFkZGluZyAgIi1FIiBhbmQgIi1UIiBvcHRpb25zIHRvCisgICAgICAgZGVtb25zdHJhdGUgdXNlX2VudiB2ZXJzdXMgdXNlX3Rpb2N0bC4KKyAgICAgKiBtb2RpZmllZCBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSdzIGMvQyB0ZXN0cyB0byBjeWNsZSB0aHJvdWdoIHN1YnNldHMKKyAgICAgICBvZiAgIHRoZSAgIHRvdGFsICAgbnVtYmVyICAgb2YgICBjb2xvcnMsICAgdG8gICBiZXR0ZXIgIGlsbHVzdHJhdGUKKyAgICAgICA4LzE2Lzg4LzI1Ni1jb2xvcnMgYnkgcHJvdmlkaW5nIGRpcmVjdGx5IGNvbXBhcmFibGUgc2NyZWVucy4KKyAgICAgKiBtb2RpZmllZCB0aGUgbmN1cnNlcyB0ZXN0LXByb2dyYW0gdG8gYWxzbyBzaG93IHBvc2l0aW9uIHJlcG9ydHMgaW4KKyAgICAgICAnYScgdGVzdC4KKworICAgVGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gbWFrZSB0aGUgZXhhbXBsZXMgbW9yZSB1c2VmdWw6CisgICAgICogYWRkZWQgc2NyaXB0cyBmb3IgYnVpbGRpbmcgZHBrZyBhbmQgcnBtIHRlc3QtcGFja2FnZXMKKyAgICAgKiBtb2RpZmllZCAgdGhlICBoYW5vaSAgdGVzdC1wcm9ncmFtICB0byAgc2hvdyB0aGUgbWluaW11bSBudW1iZXIgb2YKKyAgICAgICBtb3ZlcyBwb3NzaWJsZSBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiB0aWxlcy4KKyAgICAgKiBtb2RpZmllZCAgdGhlICBrbmlnaHQgIHRlc3QtcHJvZ3JhbSAgdG8gc2hvdyB0aGUgbnVtYmVyIG9mIGNob2ljZXMKKyAgICAgICBwb3NzaWJsZSBmb3IgZWFjaCBwb3NpdGlvbiBpbiBhdXRvbW92ZSBvcHRpb24sIGUuZy4sIHRvIGFsbG93IHVzZXIKKyAgICAgICB0byBmb2xsb3cgV2FybnNkb3JmZidzIHJ1bGUgdG8gc29sdmUgdGhlIHB1enpsZS4KKworICBUZXJtaW5hbCBkYXRhYmFzZQorCisgICBUaGlzICByZWxlYXNlICBwcm92aWRlcyAgaW1wcm92ZW1lbnRzICB0byAgdGljJ3MgIi1jIiBjaGVja2luZyBvcHRpb24sCisgICB3aGljaCB3YXMgdXNlZCBmb3IgZXhhbXBsZSB0bworICAgICAqIG1ha2Ugc2dyIGluIHNldmVyYWwgZW50cmllcyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMuCisgICAgICogY29ycmVjdCAgcGFkZGluZyAgaW4gIHNvbWUgIGVudHJpZXMgIHdoZXJlICBlYXJsaWVyICB2ZXJzaW9ucyAgaGFkCisgICAgICAgbWlzY291bnRlZCB0aGUgbnVtYmVyIG9mIG9jdGFsIGRpZ2l0cy4KKworICAgVGhlcmUgYXJlIHNldmVyYWwgbmV3IHRlcm1pbmFsIGRlc2NyaXB0aW9uczoKKyAgICAgKiBbNDNdbWx0ZXJtIGlzIG5vdyBhbGlhc2VkIHRvIG1sdGVybTMKKyAgICAgKiBbNDRdbnN0ZXJtIGlzIG5vdyBkZXJpdmVkIGZyb20gbnN0ZXJtLTI1NmNvbG9yCisgICAgICogWzQ1XXB1dHR5LXNjbworICAgICAqIFs0Nl10ZWtlbiBpcyBGcmVlQlNEJ3MgInh0ZXJtIiBjb25zb2xlLgorICAgICAqIFs0N110ZXJtaW5hdG9yCisgICAgICogWzQ4XXRlcm1pbm9sb2d5CisgICAgICogWzQ5XXRtdXggaXMgZGVyaXZlZCBmcm9tIHNjcmVlbi4KKyAgICAgKiBzZXZlcmFsICBzY3JlZW4uWFhYICBlbnRyaWVzIHN1cHBvcnQgdGhlIHJlc3BlY3RpdmUgdmFyaWF0aW9ucyBmb3IKKyAgICAgICAyNTYgY29sb3JzLgorICAgICAqIFs1MF1zaW1wbGV0ZXJtIGlzIG5vdyAwLjUKKyAgICAgKiBbNTFddnRlIGlzIGFsaWFzZWQgdG8gdnRlLTIwMTIKKyAgICAgKiBbNTJddnQ1MjBhbnNpCisKKyAgIEEgZmV3IGVudHJpZXMgdXNlIGV4dGVuc2lvbnMgKHVzZXItZGVmaW5lZCB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMpOgorICAgICAqIEUzLCAgdXNlZCAgaW4gIGxpbnV4LCAgcHV0dHkgIGFuZCAgeHRlcm0tYmFzaWMgIGlzICB0ZXN0ZWQgIGluIHRoZQorICAgICAgIFs1M11jbGVhciBwcm9ncmFtIHRvIGVyYXNlIGEgdGVybWluYWwncyBzY3JvbGxiYWNrLgorICAgICAqIFRTICBpcyAgdXNlZCAgaW4gdGhlIFs1NF14dGVybStzbCBidWlsZGluZyBibG9jayB0byBoZWxwIGRlcHJlY2F0ZQorICAgICAgIHRoZSBtaXN1c2Ugb2YgdHNsIGZvciB4dGVybSdzIHRpdGxlLXN0cmluZy4KKyAgICAgKiBYVCAgaXMgIHVzZWQgIGluICBzb21lICB0ZXJtaW5mbyBlbnRyaWVzIHRvIGltcHJvdmUgdXNlZnVsbmVzcyBmb3IKKyAgICAgICBvdGhlciAgYXBwbGljYXRpb25zICB0aGFuIHNjcmVlbiwgd2hpY2ggd291bGQgbGlrZSB0byBwcmV0ZW5kIHRoYXQKKyAgICAgICB4dGVybSdzIHRpdGxlIGlzIGEgc3RhdHVzLWxpbmUuCisgICAgICogeG0gIGlzICB1c2VkICBpbiAgZXhhbXBsZXMgIFs1NV14dGVybS0xMDA1ICBhbmQgIFs1Nl14dGVybS0xMDA2IHRvCisgICAgICAgaWxsdXN0cmF0ZSBhIHdheSB0byBtYWtlIG1vdXNlIGhhbmRsaW5nIG1vcmUgZ2VuZXJhbAorCisgICBBICAgZmV3ICAgdGVybWluYWxzICAgc3VwcG9ydCAgaXRhbGljcyAgYW5kL29yICBkaW0gIGNhcGFiaWxpdGllcy4gIEluCisgICBwYXJ0aWN1bGFyLCAgc2NyZWVuICBkb2VzICBub3QuICBEb2N1bWVudGVkIHRoYXQsIGFuZCBhY2NvbW1vZGF0ZWQgdGhlCisgICB0ZXJtaW5hbHMgd2hlcmUgdGhpcyBmZWF0dXJlIHdvcmtzIHdpdGggdGhlIEFfSVRBTElDIGV4dGVuc2lvbi4KKyAgICAgKiBrb25zb2xlLCBtbHRlcm0zIChpdGFsaWNzKQorICAgICAqIG5zdGVybSAoZGltKQorICAgICAqIHNjcmVlbiAoZGltKQorICAgICAqIHZ0ZSAoZGltLCBpdGFsaWNzKQorICAgICAqIHh0ZXJtIChkaW0sIGl0YWxpY3MpCisKKyAgRG9jdW1lbnRhdGlvbgorCisgICBBcyB1c3VhbCwgdGhpcyByZWxlYXNlCisgICAgICogaW1wcm92ZXMgZG9jdW1lbnRhdGlvbiBieSBkZXNjcmliaW5nIG5ldyBmZWF0dXJlcywKKyAgICAgKiBhdHRlbXB0cyAgdG8gIGltcHJvdmUgdGhlIGRlc2NyaXB0aW9uIG9mIGZlYXR1cmVzIHdoaWNoIHVzZXJzIGhhdmUKKyAgICAgICBmb3VuZCBjb25mdXNpbmcKKyAgICAgKiBmaWxscyAgaW4gb3Zlcmxvb2tlZCBkZXNjcmlwdGlvbnMgb2YgZmVhdHVyZXMgd2hpY2ggd2VyZSBkZXNjcmliZWQKKyAgICAgICBpbiB0aGUgWzU3XU5FV1MgZmlsZSBidXQgdHJlYXRlZCBza2V0Y2hpbHkgaW4gbWFudWFsIHBhZ2VzLgorCisgICBJbiAgYWRkaXRpb24sICB0aGUgIG1lY2hhbmlzbSAgZm9yICBwcm9kdWNpbmcgIEhUTUwgIHZlcnNpb25zICBvZiAgdGhlCisgICBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGltcHJvdmVkOgorICAgICAqIHVzZSBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIFs1OF1tYW4yaHRtbCB0byBnZW5lcmF0ZSBodG1sIG1hbnBhZ2VzLgorICAgICAqIHJlZ2VuZXJhdGVkICBbNTldTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5odG1sIHRvIGZpeCBzb21lIG9mIHRoZQorICAgICAgIGJyb2tlbiBodG1sIGVtaXR0ZWQgYnkgZG9jYm9vay4KKworICBJbnRlcmVzdGluZyBidWctZml4ZXMKKworICAgICAqIEFkYTk1IGJpbmRpbmc6CisgICAgICAgICAgKyBtb2RpZnkgIG1ha2VmaWxlICBydWxlcyAgdG8gZW5zdXJlIHRoYXQgdGhlIFBJQyBvcHRpb24gaXMgbm90CisgICAgICAgICAgICB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGF0aWMgbGlicmFyeQorICAgICAgICAgICsgbWFrZSAgQWRhOTUgIGJ1aWxkLWZpeCAgZm9yICBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgc3VjaCBhcworICAgICAgICAgICAgc3BhcmMuICBUaGlzIHVuZG9lcyBvbmUgb2YgdGhlIGZpeGVzIGZyb20gWzYwXTIwMTEwMzE5LCB3aGljaAorICAgICAgICAgICAgYWRkZWQgYW4gIlVudXNlZCIgbWVtYmVyIHRvIHJlcHJlc2VudGF0aW9uIGNsYXVzZXMsIHJlcGxhY2luZworICAgICAgICAgICAgdGhhdCB3aXRoIHByYWdtYXMgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgdW51c2VkIGJpdHMuCisgICAgICogQ29sb3IgYW5kIGF0dHJpYnV0ZXM6CisgICAgICAgICAgKyBwYXJlbnRoZXNpemUgIHBhcmFtZXRlciAgb2YgIENPTE9SX1BBSVIgIGFuZCAgUEFJUl9OVU1CRVIgIGluCisgICAgICAgICAgICBjdXJzZXMuaCBpbiBjYXNlIGl0IGhhcHBlbnMgdG8gYmUgYSBjb21tYS1leHByZXNzaW9uLgorICAgICAgICAgICsgaW1wcm92ZSAgWzYxXTIwMDIxMjIxICB3b3JrYXJvdW5kICBmb3IgYnJva2VuIGFjcywgaGFuZGxpbmcgYQorICAgICAgICAgICAgY2FzZSAgd2hlcmUgIHRoYXQgQUNTX3h4eCBjaGFyYWN0ZXIgaXMgbm90IGluIHRoZSBhY3NjIHN0cmluZworICAgICAgICAgICAgYnV0IHRoZXJlIGlzIGEga25vd24gd2lkZS1jaGFyYWN0ZXIgd2hpY2ggY2FuIGJlIHVzZWQuCisgICAgICAgICAgKyBtb2RpZnkgIFs2Ml1pbml0X3BhaXIgIHRvICBhY2NlcHQgIC0xJ3MgZm9yIGNvbG9yIHZhbHVlIGFmdGVyCisgICAgICAgICAgICBbNjNdYXNzdW1lX2RlZmF1bHRfY29sb3JzIGhhcyBiZWVuIGNhbGxlZC4KKyAgICAgICAgICArIGFkZCAgYSAgY2hlY2sgIGluIFs2NF1zdGFydF9jb2xvciB0byBsaW1pdCBjb2xvci1wYWlycyB0byAyNTYKKyAgICAgICAgICAgIHdoZW4gZXh0ZW5kZWQgY29sb3JzIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAqIFJlc2l6aW5nIHRoZSBzY3JlZW46CisgICAgICAgICAgKyBwcm9wYWdhdGUgIGVycm9yLXJldHVybnMgIGZyb20gIHdyZXNpemUsICBpLmUuLCAgdGhlIGludGVybmFsCisgICAgICAgICAgICBpbmNyZWFzZV9zaXplICAgIGFuZCAgICBkZWNyZWFzZV9zaXplICAgIGZ1bmN0aW9ucyAgICB0aHJvdWdoCisgICAgICAgICAgICBbNjVdcmVzaXplX3Rlcm0uCisgICAgICAgICAgKyBhZGQgIGNoZWNrICBmb3IgIHplcm8vbmVnYXRpdmUgIGRpbWVuc2lvbnMgZm9yIHJlc2l6ZXRlcm0gYW5kCisgICAgICAgICAgICByZXNpemVfdGVybS4KKyAgICAgICAgICArIG1vZGlmeSAgcmVzaXpldGVybSB0byBhbHdheXMgcHVzaCBhIEtFWV9SRVNJWkUgb250byB0aGUgZmlmbywKKyAgICAgICAgICAgIGV2ZW4gIGlmICBzY3JlZW5zaXplICBpcyAgdW5jaGFuZ2VkLiBNb2RpZnkgbGlicmFyeSB0byBwdXNoIGEKKyAgICAgICAgICAgIEtFWV9SRVNJWkUgIGlmIHRoZXJlIHdhcyBhIFNJR1dJTkNILCBldmVuIGlmIGl0IGRvZXMgbm90IGNhbGwKKyAgICAgICAgICAgIHJlc2l6ZXRlcm0pLiAgIFRoZXNlICBjaGFuZ2VzICBlbGltaW5hdGUgIHRoZSAgY2FzZSAgd2hlcmUgIGEKKyAgICAgICAgICAgIFNJR1dJTkNIICBpcyAgcmVjZWl2ZWQsICBidXQgIEVSUiAgaXMgcmV0dXJuZWQgZnJvbSB3Z2V0Y2ggb3IKKyAgICAgICAgICAgIHdnZXRuc3RyIGJlY2F1c2UgdGhlIHNjcmVlbiBkaW1lbnNpb25zIGRpZCBub3QgY2hhbmdlLgorICAgICAqIExvdy1sZXZlbCBpbnRlcmZhY2VzCisgICAgICAgICAgKyBmaXggIGFuIG9sZCBidWcgaW4gdGhlIHRlcm1jYXAgZW11bGF0aW9uOyAiJWkiIHdhcyBpZ25vcmVkIGluCisgICAgICAgICAgICB0cGFybSAgYmVjYXVzZSAgdGhlIHBhcmFtZXRlcnMgdG8gYmUgaW5jcmVtZW50ZWQgd2VyZSBhbHJlYWR5CisgICAgICAgICAgICBvbiB0aGUgaW50ZXJuYWwgc3RhY2suCisgICAgICAgICAgKyBjaGFuZ2UgICIlbCIgYmVoYXZpb3IgaW4gdHBhcm0gdG8gcHVzaCB0aGUgc3RyaW5nIGxlbmd0aCBvbnRvCisgICAgICAgICAgICB0aGUgIHN0YWNrICByYXRoZXIgIHRoYW4gc2F2aW5nIHRoZSBmb3JtYXR0ZWQgbGVuZ3RoIGludG8gdGhlCisgICAgICAgICAgICBvdXRwdXQgYnVmZmVyLgorICAgICAgICAgICsgbW9kaWZ5ICBuYW1lLWNvbXBhcmlzb24gIGZvciAgdGdldHN0ciwgIGV0Yy4sICB0byBhY2NvbW1vZGF0ZQorICAgICAgICAgICAgbGVnYWN5ICBhcHBsaWNhdGlvbnMgIGFzIHdlbGwgYXMgdG8gaW1wcm92ZSBjb21wYXRiaWxpdHkgd2l0aAorICAgICAgICAgICAgQlNEIDQuMiB0ZXJtY2FwIGltcGxlbWVudGF0aW9ucyAoc2VlIG5vdGUgZm9yIFs2Nl05ODA3MjUpLgorICAgICAqIEhpZ2gtbGV2ZWwgaW50ZXJmYWNlcworICAgICAgICAgICsgbW9kaWZ5IGludGVybmFsIHJlY3Vyc2lvbiBpbiB3Z2V0Y2ggd2hpY2ggaGFuZGxlcyBjb29rZWQgbW9kZQorICAgICAgICAgICAgdG8gIGNoZWNrIGlmIHRoZSBjYWxsIHRvIHdnZXRuc3RyIHJldHVybmVkIGFuIGVycm9yLiBUaGlzIGNhbgorICAgICAgICAgICAgaGFwcGVuICB3aGVuICBib3RoIG5vY2JyZWFrIGFuZCBub2RlbGF5IGFyZSBzZXQsIGZvciBpbnN0YW5jZQorICAgICAgICAgICAgKHNlZSBub3RlIGZvciBbNjddOTYwNDE4KS4KKyAgICAgICAgICArIGFkZCBhIGNoZWNrIGluIGludGVybmFsIGZ1bmN0aW9uIHdhZGRjaF9ub3N5bmMgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgIHRhYiBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGNvbnRyb2wgY2hhcmFjdGVyczsgc29tZSBicm9rZW4KKyAgICAgICAgICAgIGxvY2FsZXMgY2xhaW0gdGhleSBhcmUgcHJpbnRhYmxlLgorICAgICAgICAgICsgbW9kaWZ5ICBtZW51ICBsaWJyYXJ5ICB0byAgZW5zdXJlICB0aGF0ICBhICBtZW51J3MgdG9wLXJvdyBpcworICAgICAgICAgICAgYWRqdXN0ZWQgIGFzIG5lZWRlZCB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBpdGVtIGlzIG9uIHRoZQorICAgICAgICAgICAgc2NyZWVuCisgICAgICAgICAgKyBmaXggIHNwZWNpYWwgIGNhc2UgIHdoZXJlIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXIgb3ZlcndyaXRlcyBhCisgICAgICAgICAgICBzaW5nbGUtIHdpZHRoIGNoYXJhY3RlciBpbiB0aGUgZmlyc3QgY29sdW1uLgorCisgIENvbmZpZ3VyYXRpb24gY2hhbmdlcworCisgICAgTWFqb3IgY2hhbmdlcworCisgICBUaGUgbmN1cnNlcyA2LjAgY29uZmlndXJlIHNjcmlwdCBtYWtlcyBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICBzZXZlcmFsICBjb25maWd1cmUgb3B0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSAtLXdpdGgtYWJpLXZlcnNpb24gb3B0aW9uCisgICAoaS5lLiwgd2hldGhlciBpdHMgdmFsdWUgaXMgIjUiIG9yICI2Iik6CisKKyAgIC0tZW5hYmxlLWNvbnN0CisgICAgICAgICAgRmVhdHVyZSAgaW50cm9kdWNlZCAgaW4gIFs2OF05NzA0MDUgIHN1cHBvcnRzICB0aGUgdXNlIG9mIGNvbnN0CisgICAgICAgICAgd2hlcmUgIFgvT3BlbiAgQ3Vyc2VzICBzaG91bGQgIGhhdmUsIGJ1dCBkaWQgbm90LiBOZXRCU0QgY3Vyc2VzCisgICAgICAgICAgZG9lcyBzb21ldGhpbmcgc2ltaWxhciB3aXRoIGNvbnN0LgorCisgICAtLWVuYWJsZS1leHQtY29sb3JzCisgICAgICAgICAgRXh0ZW5kcyAgdGhlICBjY2hhcl90IHN0cnVjdHVyZSB0byBhbGxvdyBtb3JlIHRoYW4gMTYgY29sb3JzIHRvCisgICAgICAgICAgYmUgICBlbmNvZGVkLiAgIFRoaXMgICBhcHBsaWVzICAgb25seSAgIHRvICB0aGUgIHdpZGUtY2hhcmFjdGVyCisgICAgICAgICAgKC0tZW5hYmxlLXdpZGVjKSBjb25maWd1cmF0aW9uLgorCisgICAtLWVuYWJsZS1leHQtbW91c2UKKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBlbmNvZGluZyAgb2YgIG1vdXNlIHN0YXRlIHRvIG1ha2Ugcm9vbSBmb3IgYSA1dGgKKyAgICAgICAgICBtb3VzZSBidXR0b24uIFRoYXQgYWxsb3dzIG9uZSB0byB1c2UgbmN1cnNlcyB3aXRoIGEgd2hlZWwgbW91c2UKKyAgICAgICAgICB3aXRoIHh0ZXJtIG9yIHNpbWlsYXIgWCB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIC0tZW5hYmxlLWV4dC1wdXR3aW4KKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBmaWxlLWZvcm1hdCAgd3JpdHRlbiAgYnkgcHV0d2luIHRvIHVzZSBwcmludGFibGUKKyAgICAgICAgICB0ZXh0ICByYXRoZXIgIHRoYW4gYmluYXJ5IGZpbGVzLCBhbGxvd2luZyBnZXR3aW4gdG8gcmVhZCBzY3JlZW4KKyAgICAgICAgICBkdW1wcyAgd3JpdHRlbiBieSBkaWZmZXJlbnRseS1jb25maWd1cmVkIG5jdXJzZXMgbGlicmFyaWVzLiBUaGUKKyAgICAgICAgICBleHRlbmRlZCAgZ2V0d2luICBjYW4gIHN0aWxsICByZWFkIGJpbmFyeSBzY3JlZW4gZHVtcHMgZnJvbSB0aGUKKyAgICAgICAgICBzYW1lICBjb25maWd1cmF0aW9uICBvZiAgbmN1cnNlcy4gIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBBQkkKKyAgICAgICAgICAodGhlIGJpbmFyeSBpbnRlcmZhY2Ugc2VlbiBieSBjYWxsaW5nIGFwcGxpY2F0aW9ucykuCisKKyAgIC0tZW5hYmxlLWludGVyb3AKKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBGSUVMRFRZUEUgc3RydWN0dXJlIHVzZWQgZm9yIHRoZSBmb3JtIGxpYnJhcnkgdG8KKyAgICAgICAgICBtYWtlIGl0IG1vcmUgZ2VuZXJpYy4KKworICAgLS1lbmFibGUtbHA2NAorICAgICAgICAgIEFsbG93cyAgYW4gIGFwcGxpY2F0aW9uICB0byAgZGVmaW5lIF9MUDY0IHRvIGRlY2xhcmUgY2h0eXBlIGFuZAorICAgICAgICAgIG1tYXNrX3QgIGFzICBzaW1wbHkgInVuc2lnbmVkIiByYXRoZXIgdGhhbiB0aGUgY29uZmlndXJlZCB0eXBlcworICAgICAgICAgIHVzaW5nIHRoZSAtLXdpdGgtY2h0eXBlIGFuZCAtLXdpdGgtbW1hc2tfdCBvcHRpb25zLgorCisgICAtLWVuYWJsZS1zcC1mdW5jcworICAgICAgICAgIENvbXBpbGUtaW4gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgZnVuY3Rpb25zIHdoaWNoIGFjY2VwdCBhIFNDUkVFTgorICAgICAgICAgIHBvaW50ZXIsICByZWR1Y2luZyAgdGhlICBuZWVkICBmb3IganVnZ2xpbmcgdGhlIGdsb2JhbCBTUCB2YWx1ZQorICAgICAgICAgIHdpdGggWzY5XXNldF90ZXJtIGFuZCBbNzBdZGVsc2NyZWVuLgorCisgICAtLXdpdGgtY2h0eXBlPXVpbnQzMl90CisgICAgICAgICAgTWFrZXMgY2h0eXBlIGV4cGxpY2l0bHkgYSAzMi1iaXQgdW5zaWduZWQgdmFsdWUuCisKKyAgIC0td2l0aC1tbWFza190PXVpbnQzMl90CisgICAgICAgICAgTWFrZXMgbW1hc2tfdCBleHBsaWNpdGx5IGEgMzItYml0IHVuc2lnbmVkIHZhbHVlLgorCisgICAtLXdpdGgtdHBhcm0tYXJnPWludHB0cl90CisgICAgICAgICAgWC9PcGVuICBDdXJzZXMgIGRlY2xhcmVzICBbNzFddHBhcm0gIHVzaW5nIGxvbmcgZm9yIGVhY2ggb2YgdGhlCisgICAgICAgICAgcGFyYW1ldGVycyAgYXNpZGUgIGZyb20gIHRoZSAgZm9ybWF0dGluZyBzdHJpbmcsIHByZXN1bWluZyB0aGF0CisgICAgICAgICAgbG9uZyAgYW5kICBjaGFyKiAgYXJlIHRoZSBzYW1lIHNpemUuIFRoaXMgY29uZmlndXJlIG9wdGlvbiB1c2VzCisgICAgICAgICAgaW50cHRyX3Qgd2hpY2ggcHJvdmlkZXMgYSBiZXR0ZXIgZ3VhcmFudGVlIG9mIHRoZSBzaXplcy4KKworICAgVGhlICBjb25maWd1cmUgIHNjcmlwdCAgbm8gbG9uZ2VyIGNoZWNrcyBmb3IgYW50aXF1ZSBjb21waWxlcnM7IGM4OSBpcworICAgYXNzdW1lZCAgYXMgIGEgIG1pbmltdW0uIFRoZXJlIGFyZSBhIGZldyBmZWF0dXJlcyBmcm9tIGxhdGVyIHJldmlzaW9ucworICAgd2hpY2ggIGFyZSAgdXNlZCAgd2hlbiBhdmFpbGFibGUuIFRoZSBjb25maWd1cmUgc2NyaXB0IG1ha2VzIGNoZWNrcyB0bworICAgdHVybiBvbiB1c2VmdWwgd2FybmluZ3MgZnJvbSBjbGFuZywgZ2NjIGFuZCBpY2MuIFlvdSBzaG91bGQgYmUgYWJsZSB0bworICAgYnVpbGQgIG5jdXJzZXMgIDYuMCAgd2l0aCAgYW55ICBvZiAgdGhlICBjdXJyZW50IChvciBub3Qgc28gY3VycmVudCkgQworICAgY29tcGlsZXJzIGF2YWlsYWJsZSBpbiAyMDE1LgorCisgICBUaGUgY29uZmlndXJlIHNjcmlwdCwgYnkgdGhlIHdheSwgbWFrZXMgY2hhbmdlcyB3aGljaCBkbyBub3Qgd29yayB3aXRoCisgICBzeXN0ZW1zICB3aG9zZSAgL2Jpbi9zaCBpcyBub24tUE9TSVguIFRoaXMgbWFpbmx5IGFmZmVjdHMgU29sYXJpcyAodGhlCisgICBvdGhlciAgdmVuZG9yICB1bml4IHN5c3RlbXMgaGF2ZSBmb2xsb3dlZCB0aGUgUE9TSVggZ3VpZGVsaW5lcyBmb3IgdGhlCisgICBwYXN0ICB0d2VudHkgIHllYXJzKS4gIElmICB5b3UgIG11c3QgIGJ1aWxkICBvbiAgU29sYXJpcywgaXRzIFs3Ml14cGc0CisgICBiaW5hcmllcyBzdWZmaWNlLCBlLmcuLAorCisgICAgICMhL2Jpbi9zaAorICAgICBXSEFUPWBob3N0bmFtZXxzZWQgLWUgJ3MvXC4uKi8vJ2AKKyAgICAgT1VUPWNvbmZpZ3VyZS5vdXQKKyAgICAgY2F0ID4+JE9VVCA8PEVPRi8KKyAgICAgKiogYGRhdGVgCisgICAgICoqIG5vZGU6ICRXSEFUCisgICAgICoqIHVzZXI6IGBpZGAKKyAgICAgKiogY29uZjogJCoKKyAgICAgRU9GLworCisgICAgIFNIRUxMPS9iaW4vc2gKKyAgICAgaWYgdGVzdCAtZiAvdXNyL3hwZzQvYmluL3NoCisgICAgIHRoZW4KKyAgICAgICAgICAgICBDT05GSUdfU0hFTEw9L3Vzci94cGc0L2Jpbi9zaAorICAgICAgICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgICAgICAgICAgICBTSEVMTD0kQ09ORklHX1NIRUxMCisgICAgIGZpCisKKyAgICAgcm0gLWYgY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUKKyAgICAgVE9QPSRIT01FLyRXSEFUCisgICAgICRTSEVMTCAuL2NvbmZpZ3VyZSAtLXZlcmJvc2UgXAorICAgICAgICAgICAgIC0tZGlzYWJsZS1lY2hvIFwKKyAgICAgICAgICAgICAtLWRpc2FibGUtb3ZlcndyaXRlIFwKKyAgICAgICAgICAgICAtLWVuYWJsZS13YXJuaW5ncyBcCisgICAgICAgICAgICAgLS13aXRoLXdhcm5pbmdzIFwKKyAgICAgICAgICAgICAtLXByZWZpeD0kVE9QICQqIDI+JjEgfCB0ZWUgLWEgJE9VVAorCisgICBPdGhlciBtYWpvciBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGluY2x1ZGU6CisgICAgICogQUJJIDYgaXMgbm93IHRoZSBkZWZhdWx0LCBpbnRlbmRpbmcgdGhhdCB0aGUgZXhpc3RpbmcgQUJJIDUgc2hvdWxkCisgICAgICAgYnVpbGQgYXMgYmVmb3JlIHVzaW5nIHRoZSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiIG9wdGlvbi4KKyAgICAgKiBhZGRlZCAgIC0td2l0aC1leHRyYS1zdWZmaXggICBvcHRpb24gICB0byAgIGhlbHAgIHdpdGggIGluc3RhbGxpbmcKKyAgICAgICBub25jb25mbGljdGluZyAgbmN1cnNlczYgIHBhY2thZ2VzLCAgZS5nLiwgIGF2b2lkaW5nICBoZWFkZXItICBhbmQKKyAgICAgICBsaWJyYXJ5LWNvbmZsaWN0cy4KKyAgICAgICBOT1RFOiBhcyBhIHNpZGUtZWZmZWN0LCB0aGlzIHJlbmFtZXMKKworICAgICBhZGFjdXJzZXMtY29uZmlnIHRvIGFkYWN1cnNlczUtY29uZmlnIGFuZAorICAgICBhZGFjdXJzZXN3LWNvbmZpZyB0byBhZGFjdXJzZXN3NS1jb25maWcKKyAgICAgKiB0aGUgIGNvbmZpZ3VyZSAgc2NyaXB0ICBsb29rcyAgZm9yIGduYXRnY2MgaWYgdGhlIEFkYTk1IGJpbmRpbmcgaXMKKyAgICAgICBidWlsdCwgIGluICBwcmVmZXJlbmNlICB0byAgdGhlICBkZWZhdWx0ICBnY2MvY2MuICBUaGUgc2NyaXB0IGFsc28KKyAgICAgICBlbnN1cmVzICB0aGF0ICB0aGUgIEFkYTk1ICBiaW5kaW5nICBpcyAgYnVpbHQgIHdpdGggIHRoZSAgbGV2ZWwgb2YKKyAgICAgICBvcHRpbWl6YXRpb24gYXMgdGhlIEMgbGlicmFyaWVzLgorICAgICAqIHRoZSAgY29uZmlndXJlIHNjcmlwdCBjYXB0dXJlcyBkZWZpbmUncyByZWxhdGVkIHRvIC1EX1hPUEVOX1NPVVJDRQorICAgICAgIGZyb20gIHRoZSAgY29uZmlndXJlIGNoZWNrIGFuZCBhZGRzIHRob3NlIHRvIHRoZSAqLWNvbmZpZyBhbmQgKi5wYworICAgICAgIGZpbGVzLCB0byBzaW1wbGlmeSB1c2UgZm9yIHRoZSB3aWRlLWNoYXJhY3RlciBsaWJyYXJpZXMuCisKKyAgICBDb25maWd1cmF0aW9uIG9wdGlvbnMKKworICAgVGhlcmUgYXJlIHNldmVyYWwgbmV3IChvciBleHRlbmRlZCkgY29uZmlndXJlIG9wdGlvbnM6CisKKyAgIC0tZGlzYWJsZS1kYi1pbnN0YWxsCisgICAgICAgICAgRG8gIG5vdCAgaW5zdGFsbCAgdGhlICB0ZXJtaW5hbCAgZGF0YWJhc2UuIFRoaXMgaXMgdXNlZCB0byBvbWl0CisgICAgICAgICAgZmVhdHVyZXMgZm9yIHBhY2thZ2VzLCBhcyBkb25lIHdpdGggLS13aXRob3V0LXByb2dzLiBUaGUgb3B0aW9uCisgICAgICAgICAgc2ltcGxpZmllcyBidWlsZGluZyBjcm9zcy1jb21waWxlIHN1cHBvcnQgcGFja2FnZXMuCisKKyAgIC0tZGlzYWJsZS1nbmF0LXByb2plY3RzCisgICAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZCBmb3IgcmVncmVzc2lvbiB0ZXN0aW5nCisKKyAgIC0tZGlzYWJsZS1saWItc3VmZml4ZXMKKyAgICAgICAgICBTdXBwcmVzcyAgdGhlICJ3IiwgInQiIG9yICJ0dyIgc3VmZml4ZXMgd2hpY2ggbm9ybWFsbHkgd291bGQgYmUKKyAgICAgICAgICBhZGRlZCAgIHRvICAgdGhlICBsaWJyYXJ5ICBuYW1lcyAgZm9yICB0aGUgIC0tZW5hYmxlLXdpZGVjICBhbmQKKyAgICAgICAgICAtLXdpdGgtcHRocmVhZCBvcHRpb25zLgorCisgICAtLXdpdGgtY3h4LXNoYXJlZAorICAgICAgICAgIFdoZW4gIC0td2l0aC1zaGFyZWQgIGlzICBzZXQsICBidWlsZCAgbGlibmN1cnNlcysrICBhcyBhIHNoYXJlZAorICAgICAgICAgIGxpYnJhcnkuICBUaGlzICBpbXBsaWNpdGx5ICByZWxpZXMgIHVwb24gYnVpbGRpbmcgd2l0aCBnY2MvZysrLAorICAgICAgICAgIHNpbmNlICBvdGhlciAgY29tcGlsZXIgIHN1aXRlcyAgbWF5IGhhdmUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheQorICAgICAgICAgIHNoYXJlZCAgbGlicmFyaWVzICBhcmUgIGJ1aWx0LiAgbGlidG9vbCAgYnkgdGhlIHdheSBoYXMgc2ltaWxhcgorICAgICAgICAgIGxpbWl0YXRpb25zLgorCisgICAtLXdpdGgtaGFzaGVkLWRiCisgICAgICAgICAgRXh0ZW5kZWQgIHRoaXMgIGNvbmZpZ3VyZSAgb3B0aW9uICB0byAgc2ltcGxpZnkgIGJ1aWxkaW5nICB3aXRoCisgICAgICAgICAgZGlmZmVyZW50IHZlcnNpb25zIG9mIEJlcmtlbGV5IGRhdGFiYXNlIHVzaW5nIEZyZWVCU0QgcG9ydHMuCisKKyAgIC0td2l0aC1wYy1zdWZmaXgKKyAgICAgICAgICBJZiAgIi5wYyIgIGZpbGVzICBhcmUgaW5zdGFsbGVkLCBvcHRpb25hbGx5IGFkZCBhIHN1ZmZpeCB0byB0aGUKKyAgICAgICAgICBmaWxlcyAgYW5kICBjb3JyZXNwb25kaW5nICBwYWNrYWdlICBuYW1lcyAgdG8gIHNlcGFyYXRlIHVudXN1YWwKKyAgICAgICAgICBjb25maWd1cmF0aW9ucy4gIElmICBubyAgb3B0aW9uICB2YWx1ZSAgaXMgIGdpdmVuICAob3IgaWYgaXQgaXMKKyAgICAgICAgICAibm9uZSIpLCAgbm8gIHN1ZmZpeCAgaXMgYWRkZWQuIFRoaXMgb3B0aW9uIGlzIHVzZWQgaW4gdGhlIHRlc3QKKyAgICAgICAgICBwYWNrYWdlIGZvciBuY3Vyc2VzNi4KKworICAgLS13aXRoLXh0ZXJtLWticworICAgICAgICAgIENvbmZpZ3VyZSAgeHRlcm0ncyB0ZXJtaW5mbyBlbnRyaWVzIHRvIHVzZSBlaXRoZXIgQlMgKF5ILCBpLmUuLAorICAgICAgICAgIEFTQ0lJIGJhY2tzcGFjZSkgb3IgREVMIChePywgb3IgMTI3KS4KKworICBQb3J0YWJpbGl0eQorCisgICAgTWluR1cKKworICAgTW9zdCAgb2YgIHRoZSAgcG9ydGFiaWxpdHktcmVsYXRlZCB3b3JrIHNpbmNlIFs3M11uY3Vyc2VzIDUuOSBleHRlbmRlZAorICAgYW5kIGltcHJvdmVkIHRoZSBNaW5HVyBwb3J0IGludHJvZHVjZWQgaW4gWzc0XW5jdXJzZXMgNS44LgorCisgICBUaGUgTWluR1cgcG9ydCBjYW4gYmUgcmVhZGlseSBjcm9zcy1jb21waWxlZDoKKyAgICAgKiBtb2RpZmllZCAgY29uZmlndXJlICBzY3JpcHQgdG8gYWxsb3cgY3JlYXRpbmcgZGxsJ3MgZm9yIE1pbkdXIHdoZW4KKyAgICAgICBjcm9zcy1jb21waWxpbmcuCisgICAgICogZW5mb3JjZWQgV2luZG93cy1zdHlsZSBwYXRoLXNlcGFyYXRvciBpZiBjcm9zcy1jb21waWxpbmcsCisgICAgICogYWRkZWQgIHNjcmlwdHMgIGZvciAgdGVzdC1idWlsZHMgIG9mICBjcm9zcy1jb21waWxlZCAgcGFja2FnZXMgZm9yCisgICAgICAgbmN1cnNlczYgdG8gTWluR1cuCisgICAgICogYWRkZWQgcGMtZmlsZXMgdG8gdGhlIE1pbkdXIGNyb3NzLWNvbXBpbGluZyB0ZXN0LXBhY2thZ2VzLgorICAgICAqIGFkZGVkIHNjcmlwdCBmb3IgYnVpbGRpbmcgdGVzdC1wYWNrYWdlcyBvZiBiaW5hcmllcyBjcm9zcy1jb21waWxlZAorICAgICAgIHRvIE1pbkdXIHVzaW5nIE5TSVMuCisgICAgICogYWRkZWQgIG5jX21pbmd3LmggIHRvICBpbnN0YWxsZWQgIGhlYWRlcnMgIGZvciBNaW5HVyBwb3J0OyB0aGlzIGlzCisgICAgICAgbmVlZGVkIGZvciBjcm9zcy1jb21waWxpbmcgWzc1XW5jdXJzZXMtZXhhbXBsZXMuCisgICAgICogYWRkZWQgdGVzdC1wYWNrYWdlcyBmb3IgY3Jvc3MtY29tcGlsaW5nIG5jdXJzZXMtZXhhbXBsZXMgdXNpbmcgdGhlCisgICAgICAgTWluR1cgdGVzdC1wYWNrYWdlcy4KKworICAgVGhlIE1pbkdXLXNwZWNpZmljIFdpbmRvd3MgZHJpdmVyIGFjY291bnRzIGZvciBzZXZlcmFsIGNoYW5nZXM6CisgICAgICogd2lkZS1jaGFyYWN0ZXIgICBkaXNwbGF5ICBpcyAgbWFkZSAgdXNhYmxlICBieSAgcmVwbGFjaW5nICBNaW5HVydzCisgICAgICAgbm9uLXdvcmtpbmcgd2NydG9tYiBhbmQgd2N0b21iIGZ1bmN0aW9ucy4KKyAgICAgKiBpbXBsZW1lbnRlZCAgICBzb21lICAgZGlzcGxheSAgIGZlYXR1cmVzOiAgIFs3Nl1iZWVwLCAgIFs3N11mbGFzaCwKKyAgICAgICBbNzhdY3Vyc19zZXQuCisgICAgICogdGhlIGRyaXZlciBoYW5kbGVzIHJlcGFpbnRpbmcgb24gZW5kd2luL3JlZnJlc2ggY29tYmluYXRpb24uCisgICAgICogbW9kaWZpZWQgIHRyZWF0bWVudCAgb2YgIFRFUk0gIHZhcmlhYmxlICBmb3IgIE1pbkdXICBwb3J0IHRvIGFsbG93CisgICAgICAgZXhwbGljaXQgdXNlIG9mIHRoZSBXaW5kb3dzIGNvbnNvbGUgZHJpdmVyIGJ5IGNoZWNraW5nIGlmICRURVJNIGlzCisgICAgICAgc2V0IHRvICIjd2luMzJjb25zb2xlIiBvciBhbiBhYmJyZXZpYXRpb24gb2YgdGhhdC4KKyAgICAgKiB0aGUgV2luZG93cyBkcml2ZXIgYWxzbyBtYXRjaGVzIHRoZSBzcGVjaWFsIFRFUk0gdmFsdWUgInVua25vd24iCisgICAgICogdGhlIGRyaXZlciBub3cgcmV0dXJucyBjaGFyYWN0ZXJzIGZvciBzcGVjaWFsIGtleXMsIChsaWtlIGFuc2kuc3lzCisgICAgICAgZG9lcyksICB3aGVuICBrZXlwYWQgbW9kZSBpcyBvZmYsIHJhdGhlciB0aGFuIHJldHVybmluZyBub3RoaW5nIGF0CisgICAgICAgYWxsLgorICAgICAqIHRoZSAgZHJpdmVyIGNoZWNrcyBhIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSBbNzldTkNVUlNFU19DT05TT0xFMgorICAgICAgIHRvICBvcHRpb25hbGx5ICB3b3JrICBhcm91bmQgIGEgIGRlZmljaWVuY3kgIGluICBDb25zb2xlMiAoYW5kIGl0cworICAgICAgIGRlc2NlbmRlbnQgIENvbnNvbGVaKSAgd2hpY2ggIGhhbmcgIHdoZW4gIGFuIGFwcGxpY2F0aW9uIGNyZWF0ZXMgYQorICAgICAgIGNvbnNvbGUgYnVmZmVyLgorCisgICBGaW5hbGx5LCB0aGVyZSBhcmUgb3RoZXIgaW1wcm92ZW1lbnRzOgorICAgICAqIE1pbkdXICBpcyAgb25lICBvZiAgdGhlICBjb25maWd1cmF0aW9ucyAgd2hlcmUgbmN1cnNlcyBpbnN0YWxscyBieQorICAgICAgIGRlZmF1bHQgaW50byAvdXNyCisgICAgICogY29uZmlndXJhdGlvbiAgIGZvciAgIGNyb3NzLWNvbXBpbGluZyAgIHVzZXMgICBBQ19DSEVDS19UT09MUyAgIGluCisgICAgICAgcHJlZmVyZW5jZSAgdG8gIEFDX1BBVEhfUFJPR1MgIHdoZW4gc2VhcmNoaW5nIGZvciBuY3Vyc2VzKi1jb25maWcsCisgICAgICAgZS5nLiwgaW4gQWRhOTUvY29uZmlndXJlIGFuZCB0ZXN0L2NvbmZpZ3VyZS4KKyAgICAgKiBleHRlbmQgV2luZG93cyBzdXBwb3J0IHRvIHdvcmsgd2l0aCBNU1lTMjsKKyAgICAgICAgICArIHRoaXMgIHdvcmtzICB3aXRoICBhICBzY2VuYXJpbyAgd2hlcmUgdGhlcmUgaXMgYW4gQU5TSS1lc2NhcGUKKyAgICAgICAgICAgIGhhbmRsZXIgc3VjaCBhcyBhbnNpY29uIHJ1bm5pbmcgaW4gdGhlIGNvbnNvbGUgd2luZG93LgorICAgICAgICAgICsgd3JhcCAgaXNhdHR5ICBjYWxscyB3aXRoIGEgbWFjcm8sIHByb3ZpZGUgYSBjb3JyZXNwb25kaW5nIHNldAorICAgICAgICAgICAgb2YgIHN1cHBvcnQgcm91dGluZXMgdG8gYWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIE1pbkdXIGFuZAorICAgICAgICAgICAgTVNZUzIuCisgICAgICogZW5zdXJlIFdJTlZFUiBpcyBkZWZpbmVkIGluIG1ha2VmaWxlcyByYXRoZXIgdGhhbiB1c2luZyBoZWFkZXJzLgorICAgICAqIGFkZCBjaGVjayBmb3IgdGhlIGduYXRwcmVwICItVCIgb3B0aW9uLgorICAgICAqIHdvcmsgIGFyb3VuZCAgYSAgYnVnICBpbnRyb2R1Y2VkICBieSAgWzgwXWdjYyA0LjguMSBpbiBNaW5HVyB3aGljaAorICAgICAgIGJyZWFrcyAidHJhY2UiIGZlYXR1cmUuCisgICAgICogYWRkIGEgZHJpdmVyLW5hbWUgbWV0aG9kIHRvIGVhY2ggb2YgdGhlIGRyaXZlcnMuCisKKyAgICBPdGhlciBwb3J0cworCisgICBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjZXJ0YWluIHBsYXRmb3JtcyAocG9ydHMpOgorICAgICAqIHRoZSAgY29uZmlndXJlICBzY3JpcHQgIGtub3dzICBob3cgIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aAorICAgICAgIERyYWdvbkZseUJTRCBhbmQgSW50ZXJpeC4KKyAgICAgKiBzdXBwb3J0IGZvciBBSVggc2hhcmVkIGxpYnJhcmllcyBpcyBpbXByb3ZlZCwgdGVzdGVkIHdpdGggQUlYIDUuMywKKyAgICAgICA2LjEgYW5kIDcuMSB3aXRoIGJvdGggZ2NjIDQuMi40IGFuZCBjYzoKKyAgICAgICAgICArIHRoZSBzaGFyZWQtbGlicmFyeSBzdWZmaXggZm9yIEFJWCA1IGFuZCA2IGlzIG5vdyAiLnNvIgorICAgICAgICAgICsgdGhlICAtYnJ0bCAgb3B0aW9uIGlzIHVzZWQgd2l0aCBBSVggNS03OyBpdCBpcyBuZWVkZWQgdG8gbGluaworICAgICAgICAgICAgd2l0aCB0aGUgc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgKiB0aGUgIGNvbmZpZ3VyZSAgLS1lbmFibGUtcGMtZmlsZXMgIG9wdGlvbiAgdGFrZXMgIGludG8gYWNjb3VudCB0aGUKKyAgICAgICBbODFdUEtHX0NPTkZJR19QQVRIIHZhcmlhYmxlLgorICAgICAqIHRoZSAgY29uZmlndXJlICBvcHRpb24gIC0td2l0aC1wa2ctY29uZmlnLWxpYmRpciAgcHJvdmlkZXMgY29udHJvbAorICAgICAgIG92ZXIgdGhlIGFjdHVhbCBkaXJlY3RvcnkgaW50byB3aGljaCBwYy1maWxlcyBhcmUgaW5zdGFsbGVkLgorICAgICAqIHRoZSAgYnVpbGQgIHNjcmlwdHMgIGFkZCAgZXhwbGljaXQgLWx0aW5mbywgZXRjLiwgdG8gdGhlIGdlbmVyYXRlZAorICAgICAgICIucGMiICBmaWxlICB3aGVuIGxkIG9wdGlvbiAiLS1hcy1uZWVkZWQiIGlzIHVzZWQsIG9yIHdoZW4gbmN1cnNlcworICAgICAgIGFuZCB0aW5mbyBhcmUgaW5zdGFsbGVkIHdpdGhvdXQgdXNpbmcgcnBhdGguCisgICAgICogdGhlICAgICBjb25maWd1cmUgICAgc2NyaXB0ICAgIGRpc2FsbG93cyAgICBjb25mbGljdGluZyAgICBvcHRpb25zCisgICAgICAgIi0td2l0aC10ZXJtbGliIiBhbmQgIi0tZW5hYmxlLXRlcm0tZHJpdmVyIi4KKyAgICAgKiB0aGUgIGNoZWNrICBmb3IgIG1pc3NpbmcgIGMrKyAgY29tcGlsZXIgIHRvICB3b3JrIHdoZW4gbm8gZXJyb3IgaXMKKyAgICAgICByZXBvcnRlZCwgICBhbmQgIG5vICB2YXJpYWJsZXMgIHNldCAgaXMgIGltcHJvdmVkICAoc2VlICBub3RlICBmb3IKKyAgICAgICBbODJdMjAwMjEyMDYpLgorICAgICAqIHRoZSAgbWlzYy9nZW5fZWRpdC5zaCAgc2NyaXB0ICBzZWxlY3RzIGEgImxpbnV4IiBlbnRyeSB3aGljaCB3b3JrcworICAgICAgIHdpdGggIHRoZSAgY3VycmVudCAga2VybmVsICByYXRoZXIgIHRoYW4gIGFzc3VtaW5nICBpdCAgaXMgIGFsd2F5cworICAgICAgICJsaW51eDMuMCIKKyAgICAgKiB0aGUgIHRlc3QvY29uZmlndXJlICBzY3JpcHQgIG1ha2VzIGl0IHNpbXBsZXIgdG8gb3ZlcnJpZGUgbmFtZXMgb2YKKyAgICAgICBjdXJzZXMtcmVsYXRlZCAgbGlicmFyaWVzLCAgdG8gIGhlbHAgd2l0aCBsaW5raW5nIHdpdGggcGRjdXJzZXMgaW4KKyAgICAgICBNaW5HVyBlbnZpcm9ubWVudC4KKyAgICAgKiB0aGUgIGNvbmZpZ3VyZS1zY3JpcHQvaWZkZWYncyAgYWxsb3cgdGhlIEJTRCBPTERfVFRZIGZlYXR1cmUgdG8gYmUKKyAgICAgICBzdXBwcmVzc2VkICBpZiAgdGhlICB0eXBlIG9mIG9zcGVlZCBpcyBjb25maWd1cmVkIHVzaW5nIHRoZSBvcHRpb24KKyAgICAgICAtLXdpdGgtb3NwZWVkICB0byAgbm90ICBiZSAgYSBzaG9ydC4gQnkgZGVmYXVsdCwgaXQgaXMgYSBzaG9ydCBmb3IKKyAgICAgICB0ZXJtY2FwLWNvbXBhdGliaWxpdHkuCisgICAgICogdGhlICBNS2xpYl9nZW4uc2ggIHNjcmlwdCAgd29ya3MgIGFyb3VuZCAgYSByZWNlbnQgY2hhbmdlIGluIGdjYyA1CisgICAgICAgKHJlbGVhc2VkICBbODNdbWlkLTIwMTUpICB3aGljaCAgZXNzZW50aWFsbHkgIGVtaXRzIG11bHRpcGxlICNsaW5lCisgICAgICAgc3RhdGVtZW50cyBmb3IgdGhlIHNhbWUgcG9zaXRpb24gaW4gYSBmaWxlLgorICAgICAqIHRoZSAgIGNvbmZpZ3VyZSAgc2NyaXB0ICB3b3JrcyAgd2l0aCAgTWluaXgzLjIgIChzZWUgIFs4NF1ub3RlICBvbgorICAgICAgIHBvcnRhYmlsaXR5KQorICAgICAqIE9TLzIgcmVkdXg6CisgICAgICAgICAgKyB0aGUgY29uZmlndXJlIHNjcmlwdCBzdXBwb3J0cyBPUy8yIGtMSUJDLgorICAgICAgICAgICsgdGhlICAtLXdpdGgtbGliLXByZWZpeCAgb3B0aW9uIGFsbG93cyBjb25maWd1cmluZyBmb3Igb2xkL25ldworICAgICAgICAgICAgZmxhdm9ycyBvZiBPUy8yIEVNWC4KKyAgICAgKiBpbXByb3ZlZCBjb25maWd1cmUtc2NyaXB0IGNoZWNrcyBmb3IgX1hPUEVOX1NPVVJDRToKKyAgICAgICAgICArIHRoZSBkZWZpbml0aW9uIHdvcmtzIHN0YXJ0aW5nIHdpdGggU29sYXJpcyAxMC4KKyAgICAgICAgICArIHRoZSAgZGVmaW5pdGlvbiAgaXMgIHN1cHByZXNzZWQgIGZvciBJUklYNjQsIHNpbmNlIGl0cyBoZWFkZXIKKyAgICAgICAgICAgIGZpbGVzIGhhdmUgYSBjb25mbGljdCB2ZXJzdXMgX1NHSV9TT1VSQ0UuCisgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKK0ZlYXR1cmVzIG9mIG5jdXJzZXMKKworICAgVGhlICBuY3Vyc2VzICBwYWNrYWdlICBpcyAgZnVsbHkgdXB3YXJkLWNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gVgorICAgUmVsZWFzZSA0KSBjdXJzZXM6CisgICAgICogQWxsIG9mIHRoZSBTVnI0IGNhbGxzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCAoYW5kIGFyZSBkb2N1bWVudGVkKS4KKyAgICAgKiBuY3Vyc2VzICBzdXBwb3J0cyAgYWxsICBvZiAgdGhlIGZvciBTVnI0IGN1cnNlcyBmZWF0dXJlcyBpbmNsdWRpbmcKKyAgICAgICBrZXlib2FyZCAgbWFwcGluZywgIGNvbG9yLCAgZm9ybXMtZHJhd2luZyB3aXRoIEFDUyBjaGFyYWN0ZXJzLCBhbmQKKyAgICAgICBhdXRvbWF0aWMgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbiBrZXlzLgorICAgICAqIG5jdXJzZXMgIHByb3ZpZGVzICB0aGVzZSBTVnI0IGFkZC1vbiBsaWJyYXJpZXMgKG5vdCBwYXJ0IG9mIFgvT3BlbgorICAgICAgIEN1cnNlcyk6CisgICAgICAgICAgKyB0aGUgIHBhbmVscyAgbGlicmFyeSwgIHN1cHBvcnRpbmcgIGEgIHN0YWNrICBvZiAgd2luZG93cyB3aXRoCisgICAgICAgICAgICBiYWNraW5nIHN0b3JlLgorICAgICAgICAgICsgdGhlICAgbWVudXMgICBsaWJyYXJ5LCAgc3VwcG9ydGluZyAgYSAgdW5pZm9ybSAgYnV0ICBmbGV4aWJsZQorICAgICAgICAgICAgaW50ZXJmYWNlIGZvciBtZW51IHByb2dyYW1taW5nLgorICAgICAgICAgICsgdGhlICAgZm9ybSAgIGxpYnJhcnksICAgc3VwcG9ydGluZyAgZGF0YSAgY29sbGVjdGlvbiAgdGhyb3VnaAorICAgICAgICAgICAgb24tc2NyZWVuIGZvcm1zLgorICAgICAqIG5jdXJzZXMncyAgdGVybWluYWwgZGF0YWJhc2UgaXMgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHRoYXQgdXNlZCBieQorICAgICAgIFNWcjQgY3Vyc2VzLgorICAgICAgICAgICsgbmN1cnNlcyAgc3VwcG9ydHMgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcyB3aGljaCBpdCBjYW4gc2VlLAorICAgICAgICAgICAgYnV0ICB3aGljaCBhcmUgaGlkZGVuIGZyb20gU1ZyNCBjdXJzZXMgYXBwbGljYXRpb25zIHVzaW5nIHRoZQorICAgICAgICAgICAgc2FtZSB0ZXJtaW5hbCBkYXRhYmFzZS4KKyAgICAgICAgICArIEl0ICBjYW4gIGJlIG9wdGlvbmFsbHkgY29uZmlndXJlZCB0byBtYXRjaCB0aGUgZm9ybWF0IHVzZWQgaW4KKyAgICAgICAgICAgIHJlbGF0ZWQgc3lzdGVtcyBzdWNoIGFzIEFJWCBhbmQgVHJ1NjQuCisgICAgICAgICAgKyBBbHRlcm5hdGl2ZWx5LCAgbmN1cnNlcyAgY2FuICBiZSAgY29uZmlndXJlZCAgdG8gIHVzZSAgaGFzaGVkCisgICAgICAgICAgICBkYXRhYmFzZXMgIHJhdGhlciAgdGhhbiAgdGhlICBkaXJlY3Rvcnkgb2YgZmlsZXMgdXNlZCBieSBTVnI0CisgICAgICAgICAgICBjdXJzZXMuCisgICAgICogVGhlIG5jdXJzZXMgdXRpbGl0aWVzIGhhdmUgb3B0aW9ucyB0byBhbGxvdyB5b3UgdG8gZmlsdGVyIHRlcm1pbmZvCisgICAgICAgZW50cmllcyBmb3IgdXNlIHdpdGggbGVzcyBjYXBhYmxlIGN1cnNlcy90ZXJtaW5mbyB2ZXJzaW9ucyBzdWNoIGFzCisgICAgICAgdGhlIEhQL1VYIGFuZCBBSVggcG9ydHMuCiAKICAgIFRoZSBuY3Vyc2VzIHBhY2thZ2UgYWxzbyBoYXMgbWFueSB1c2VmdWwgZXh0ZW5zaW9ucyBvdmVyIFNWcjQ6CiAgICAgICogVGhlICBBUEkgIGlzIDgtYml0IGNsZWFuIGFuZCBiYXNlLWxldmVsIGNvbmZvcm1hbnQgd2l0aCB0aGUgWC9PUEVOCkBAIC0yNzQsMTcgKzgzMiwxNiBAQAogICAgICAqIFN1cHBvcnQgIGZvciBtb3VzZSBldmVudCByZXBvcnRpbmcgd2l0aCBYIFdpbmRvdyB4dGVybSBhbmQgRnJlZUJTRAogICAgICAgIGFuZCBPUy8yIGNvbnNvbGUgd2luZG93cy4KICAgICAgKiBFeHRlbmRlZCBtb3VzZSBzdXBwb3J0IHZpYSBBbGVzc2FuZHJvIFJ1YmluaSdzIGdwbSBwYWNrYWdlLgotICAgICAqIFRoZSAgZnVuY3Rpb24gIHdyZXNpemUoKSAgYWxsb3dzIHlvdSB0byByZXNpemUgd2luZG93cywgcHJlc2VydmluZworICAgICAqIFRoZSAgZnVuY3Rpb24gIHdyZXNpemUgIGFsbG93cyAgeW91ICB0byByZXNpemUgd2luZG93cywgcHJlc2VydmluZwogICAgICAgIHRoZWlyIGRhdGEuCi0gICAgICogVGhlIGZ1bmN0aW9uIHVzZV9kZWZhdWx0X2NvbG9ycygpIGFsbG93cyB5b3UgdG8gdXNlIHRoZSB0ZXJtaW5hbCdzCisgICAgICogVGhlICBmdW5jdGlvbiAgdXNlX2RlZmF1bHRfY29sb3JzIGFsbG93cyB5b3UgdG8gdXNlIHRoZSB0ZXJtaW5hbCdzCiAgICAgICAgZGVmYXVsdCBjb2xvcnMgZm9yIHRoZSBkZWZhdWx0IGNvbG9yIHBhaXIsIGFjaGlldmluZyB0aGUgZWZmZWN0IG9mCiAgICAgICAgdHJhbnNwYXJlbnQgY29sb3JzLgotICAgICAqIFRoZSBmdW5jdGlvbnMga2V5b2soKSBhbmQgZGVmaW5lX2tleSgpIGFsbG93IHlvdSB0byBiZXR0ZXIgY29udHJvbAotICAgICAgIHRoZSAgdXNlICBvZiBmdW5jdGlvbiBrZXlzLCBlLmcuLCBkaXNhYmxpbmcgdGhlIG5jdXJzZXMgS0VZX01PVVNFLAotICAgICAgIG9yICBieSAgZGVmaW5pbmcgIG1vcmUgdGhhbiBvbmUgY29udHJvbCBzZXF1ZW5jZSB0byBtYXAgdG8gYSBnaXZlbgotICAgICAgIGtleSBjb2RlLgotICAgICAqIFN1cHBvcnQgIGZvciAgMjU2LWNvbG9yICB0ZXJtaW5hbHMsICBzdWNoICBhcyAgbW9kZXJuICB4dGVybSwgd2hlbgotICAgICAgIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIC0tZW5hYmxlLWV4dC1jb2xvcnMgb3B0aW9uLgorICAgICAqIFRoZSBmdW5jdGlvbnMga2V5b2sgYW5kIGRlZmluZV9rZXkgYWxsb3cgeW91IHRvIGJldHRlciBjb250cm9sIHRoZQorICAgICAgIHVzZSBvZiBmdW5jdGlvbiBrZXlzLCBlLmcuLCBkaXNhYmxpbmcgdGhlIG5jdXJzZXMgS0VZX01PVVNFLCBvciBieQorICAgICAgIGRlZmluaW5nICBtb3JlICB0aGFuICBvbmUgIGNvbnRyb2wgIHNlcXVlbmNlIHRvIG1hcCB0byBhIGdpdmVuIGtleQorICAgICAgIGNvZGUuCisgICAgICogU3VwcG9ydCBmb3IgMjU2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyBtb2Rlcm4geHRlcm0uCiAgICAgICogU3VwcG9ydCBmb3IgMTYtY29sb3IgdGVybWluYWxzLCBzdWNoIGFzIGFpeHRlcm0gYW5kIG1vZGVybiB4dGVybS4KICAgICAgKiBCZXR0ZXIgIGN1cnNvci1tb3ZlbWVudCAgb3B0aW1pemF0aW9uLiAgVGhlIHBhY2thZ2Ugbm93IGZlYXR1cmVzIGEKICAgICAgICBjdXJzb3ItbG9jYWwtbW92ZW1lbnQgY29tcHV0YXRpb24gbW9yZSBlZmZpY2llbnQgdGhhbiBlaXRoZXIgQlNEJ3MKQEAgLTI5Myw3ICs4NTAsNyBAQAogICAgICAgIGluY29ycG9yYXRlcyAgYSBub3ZlbCwgc2ltcGxlLCBhbmQgY2hlYXAgYWxnb3JpdGhtIHRoYXQgZW5hYmxlcyBpdAogICAgICAgIHRvICBtYWtlICBvcHRpbWFsICB1c2UgIG9mIGhhcmR3YXJlIHNjcm9sbGluZywgbGluZS1pbnNlcnRpb24sIGFuZAogICAgICAgIGxpbmUtZGVsZXRpb24gIGZvciAgc2NyZWVuLWxpbmUgIG1vdmVtZW50cy4gVGhpcyBhbGdvcml0aG0gaXMgbW9yZQotICAgICAgIHBvd2VyZnVsIHRoYW4gdGhlIDQuNEJTRCBjdXJzZXMgcXVpY2tjaCgpIHJvdXRpbmUuCisgICAgICAgcG93ZXJmdWwgdGhhbiB0aGUgNC40QlNEIGN1cnNlcyBxdWlja2NoIHJvdXRpbmUuCiAgICAgICogUmVhbCAgc3VwcG9ydCAgZm9yICB0ZXJtaW5hbHMgIHdpdGggIHRoZSAgbWFnaWMtY29va2llIGdsaXRjaC4gVGhlCiAgICAgICAgc2NyZWVuLXVwZGF0ZSAgY29kZSAgd2lsbCAgcmVmcmFpbiBmcm9tIGRyYXdpbmcgYSBoaWdobGlnaHQgaWYgdGhlCiAgICAgICAgbWFnaWMtICAgY29va2llICB1bmF0dHJpYnV0ZWQgIHNwYWNlcyAgcmVxdWlyZWQgIGp1c3QgIGJlZm9yZSAgdGhlCkBAIC0zMDYsMTAgKzg2MywxMCBAQAogICAgICAgIHR5cGVzICBldmVuICB3aGVuICBubyAgdGVybWluZm8gdHJlZSBvciB0ZXJtY2FwIGZpbGUgaXMgYWNjZXNzaWJsZQogICAgICAgICh0aGlzICBtYXkgIGJlIHVzZWZ1bCBmb3Igc3VwcG9ydCBvZiBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbXMgdGhhdAogICAgICAgIG11c3QgcnVuIGluIHNpbmdsZS11c2VyIG1vZGUpLgotICAgICAqIFRoZSB0aWMoMSkvY2FwdG9pbmZvIHV0aWxpdHkgcHJvdmlkZWQgd2l0aCBuY3Vyc2VzIGhhcyB0aGUgYWJpbGl0eQotICAgICAgIHRvICB0cmFuc2xhdGUgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNIGFuZCBBVCZUIGV4dGVuc2lvbgotICAgICAgIHNldHMuCi0gICAgICogQSBCU0QtbGlrZSB0c2V0KDEpIHV0aWxpdHkgaXMgcHJvdmlkZWQuCisgICAgICogVGhlICBbODVddGljL1s4Nl1jYXB0b2luZm8gIHV0aWxpdHkgIHByb3ZpZGVkIHdpdGggbmN1cnNlcyBoYXMgdGhlCisgICAgICAgYWJpbGl0eSAgdG8gIHRyYW5zbGF0ZSAgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNIGFuZCBBVCZUCisgICAgICAgZXh0ZW5zaW9uIHNldHMuCisgICAgICogQSBCU0QtbGlrZSBbODdddHNldCB1dGlsaXR5IGlzIHByb3ZpZGVkLgogICAgICAqIFRoZSBuY3Vyc2VzIGxpYnJhcnkgYW5kIHV0aWxpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVhZCB0ZXJtaW5mbwogICAgICAgIGVudHJpZXMgIGZyb20gICRIT01FLy50ZXJtaW5mbyAgaWYgIGl0IGV4aXN0cywgYW5kIGNvbXBpbGUgdG8gdGhhdAogICAgICAgIGRpcmVjdG9yeSAgaWYgIGl0ICBleGlzdHMgIGFuZCB0aGUgdXNlciBoYXMgbm8gd3JpdGUgYWNjZXNzIHRvIHRoZQpAQCAtMzI0LDE1MCArODgxLDM0NSBAQAogICAgICAgIG90aGVyIGVudHJpZXMgaW4gdGhlIHNhbWUgc291cmNlIGZpbGUgKGFzIGluIFN5c3RlbSBWKSBidXQgYWxzbyB0bwogICAgICAgIGNvbXBpbGVkICBlbnRyaWVzICBpbiAgZWl0aGVyIHRoZSBzeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5IG9yIHRoZQogICAgICAgIHVzZXIncyAkSE9NRS8udGVybWluZm8gZGlyZWN0b3J5LgotICAgICAqIEEgIHNjcmlwdCAgKGNhcGNvbnZlcnQpICBpcyAgcHJvdmlkZWQgdG8gaGVscCBCU0QgdXNlcnMgdHJhbnNpdGlvbgotICAgICAgIGZyb20gIHRlcm1jYXAgdG8gdGVybWluZm8uIEl0IGdhdGhlcnMgdGhlIGluZm9ybWF0aW9uIGluIGEgVEVSTUNBUAotICAgICAgIGVudmlyb25tZW50ICB2YXJpYWJsZSAgYW5kL29yICBhIH4vLnRlcm1jYXAgbG9jYWwgZW50cmllcyBmaWxlIGFuZAotICAgICAgIGNvbnZlcnRzICAgaXQgICB0byAgIGFuICAgZXF1aXZhbGVudCAgbG9jYWwgIHRlcm1pbmZvICB0cmVlICB1bmRlcgotICAgICAgICRIT01FLy50ZXJtaW5mby4KLSAgICAgKiBBdXRvbWF0aWMgIGZhbGxiYWNrICB0byAgdGhlICAvZXRjL3Rlcm1jYXAgZmlsZSBjYW4gYmUgY29tcGlsZWQgaW4KLSAgICAgICB3aGVuICBpdCBpcyBub3QgcG9zc2libGUgdG8gYnVpbGQgYSB0ZXJtaW5mbyB0cmVlLiBUaGlzIGZlYXR1cmUgaXMKLSAgICAgICBuZWl0aGVyICBmYXN0ICBub3IgY2hlYXAsIHlvdSBkb24ndCB3YW50IHRvIHVzZSBpdCB1bmxlc3MgeW91IGhhdmUKLSAgICAgICB0bywgYnV0IGl0J3MgdGhlcmUuCi0gICAgICogVGhlICB0YWJsZS1vZi1lbnRyaWVzICB1dGlsaXR5ICB0b2UgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8gc2VlCi0gICAgICAgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KKyAgICAgKiBUaGUgIHRhYmxlLW9mLWVudHJpZXMgIHV0aWxpdHkgIFs4OF10b2UgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8KKyAgICAgICBzZWUgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KICAgICAgKiBUaGUgbGlicmFyeSBtZWV0cyB0aGUgWFNJIHJlcXVpcmVtZW50IHRoYXQgZXZlcnkgbWFjcm8gZW50cnkgcG9pbnQKICAgICAgICBoYXZlICBhICBjb3JyZXNwb25kaW5nICBmdW5jdGlvbiAgd2hpY2ggbWF5IGJlIGxpbmtlZCAoYW5kIHdpbGwgYmUKICAgICAgICBwcm90b3R5cGUtY2hlY2tlZCkgIGlmICB0aGUgIG1hY3JvICBkZWZpbml0aW9uICBpcyAgZGlzYWJsZWQgIHdpdGgKICAgICAgICAjdW5kZWYuCi0gICAgICogQW4gIEhUTUwgICJJbnRyb2R1Y3Rpb24gIHRvICBQcm9ncmFtbWluZyAgd2l0aCAgTkNVUlNFUyIgIGRvY3VtZW50Ci0gICAgICAgcHJvdmlkZXMgIGEgIG5hcnJhdGl2ZSAgaW50cm9kdWN0aW9uICB0byAgdGhlICBjdXJzZXMgIHByb2dyYW1taW5nCi0gICAgICAgaW50ZXJmYWNlLgorICAgICAqIEV4dGVuc2l2ZSAgIGRvY3VtZW50YXRpb24gIGlzICBwcm92aWRlZCAgKHNlZSAgdGhlICBbODldQWRkaXRpb25hbAorICAgICAgIFJlYWRpbmcgc2VjdGlvbiBvZiB0aGUgWzkwXW5jdXJzZXMgRkFRIGZvciBvbmxpbmUgZG9jdW1lbnRhdGlvbikuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgb2YgdGhlIFBhY2thZ2UKK0FwcGxpY2F0aW9ucyB1c2luZyBuY3Vyc2VzCiAKLSAgIE51bWVyb3VzIGJ1Z3MgcHJlc2VudCBpbiBlYXJsaWVyIHZlcnNpb25zIGhhdmUgYmVlbiBmaXhlZDsgdGhlIGxpYnJhcnkKLSAgIGlzICBmYXIgIG1vcmUgIHJlbGlhYmxlICB0aGFuICBpdCAgdXNlZCB0byBiZS4gQm91bmRzIGNoZWNraW5nIGluIG1hbnkKLSAgIGBkYW5nZXJvdXMnICBlbnRyeSBwb2ludHMgaGFzIGJlZW4gaW1wcm92ZWQuIFRoZSBjb2RlIGlzIG5vdyB0eXBlLXNhZmUKLSAgIGFjY29yZGluZyAgdG8gZ2NjIC1XYWxsLiBUaGUgbGlicmFyeSBoYXMgYmVlbiBjaGVja2VkIGZvciBtYWxsb2MgbGVha3MKLSAgIGFuZCBhcmVuYSBjb3JydXB0aW9uIGJ5IHRoZSBQdXJpZnkgbWVtb3J5LWFsbG9jYXRpb24gdGVzdGVyLgorICAgVGhlICBuY3Vyc2VzICBkaXN0cmlidXRpb24gIGluY2x1ZGVzICBhICBzZWxlY3Rpb24gIG9mICB0ZXN0ICBwcm9ncmFtcworICAgKGluY2x1ZGluZyAgIGEgICBmZXcgICBnYW1lcykuICAgVGhlc2UgIGFyZSAgYXZhaWxhYmxlICBzZXBhcmF0ZWx5ICBhcworICAgWzkxXW5jdXJzZXMtZXhhbXBsZXMKIAotICAgVGhlICBuY3Vyc2VzICBjb2RlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIGEgd2lkZSB2YXJpZXR5IG9mIGFwcGxpY2F0aW9ucwotICAgaW5jbHVkaW5nICh2ZXJzaW9ucyBzdGFydGluZyB3aXRoIHRob3NlIG5vdGVkKToKKyAgIFRoZSAgIG5jdXJzZXMgICBsaWJyYXJ5ICBoYXMgIGJlZW4gIHRlc3RlZCAgd2l0aCAgYSAgd2lkZSAgdmFyaWV0eSAgb2YKKyAgIGFwcGxpY2F0aW9ucyBpbmNsdWRpbmc6CiAKICAgIGNkawogICAgICAgICAgIEN1cnNlcyBEZXZlbG9wbWVudCBLaXQKLSAgICAgICAgICBbNF1odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvY2RrLwotICAgICAgICAgIFs1XWh0dHA6Ly93d3cudmV4dXMuY2EvcHJvZHVjdHMvQ0RLLworCisgICAgICAgICAgWzkyXWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvCiAKICAgIGRlZAogICAgICAgICAgIGRpcmVjdG9yeS1lZGl0b3IKLSAgICAgICAgICBbNl1odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLworCisgICAgICAgICAgWzkzXWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCiAKICAgIGRpYWxvZwogICAgICAgICAgIHRoZSAgdW5kZXJseWluZyAgYXBwbGljYXRpb24gdXNlZCBpbiBTbGFja3dhcmUncyBzZXR1cCwgYW5kIHRoZQotICAgICAgICAgIGJhc2lzIGZvciBzaW1pbGFyIGFwcGxpY2F0aW9ucyBvbiBHTlUvTGludXguCi0gICAgICAgICAgWzddaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8KKyAgICAgICAgICBiYXNpcyAgIGZvciAgc2ltaWxhciAgaW5zdGFsbC9jb25maWd1cmUgIGFwcGxpY2F0aW9ucyAgb24gIG1hbnkKKyAgICAgICAgICBzeXN0ZW1zLgorCisgICAgICAgICAgWzk0XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvCiAKICAgIGx5bngKLSAgICAgICAgICB0aGUgY2hhcmFjdGVyLXNjcmVlbiBXV1cgYnJvd3NlcgotICAgICAgICAgIFs4XWh0dHA6Ly9seW54LmlzYy5vcmcvcmVsZWFzZS8KKyAgICAgICAgICB0aGUgdGV4dCBXV1cgYnJvd3NlcgorCisgICAgICAgICAgWzk1XWh0dHA6Ly9seW54LmlzYy5vcmcvCiAKICAgIE1pZG5pZ2h0IENvbW1hbmRlcgogICAgICAgICAgIGZpbGUgbWFuYWdlcgotICAgICAgICAgIFs5XWh0dHA6Ly93d3cuaWJpYmxpby5vcmcvbWMvCisKKyAgICAgICAgICBbOTZdaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLwogCiAgICBtdXR0CiAgICAgICAgICAgbWFpbCB1dGlsaXR5Ci0gICAgICAgICAgWzEwXWh0dHA6Ly93d3cubXV0dC5vcmcvCisKKyAgICAgICAgICBbOTddaHR0cDovL3d3dy5tdXR0Lm9yZy8KIAogICAgbmNmdHAKICAgICAgICAgICBmaWxlLXRyYW5zZmVyIHV0aWxpdHkKLSAgICAgICAgICBbMTFdaHR0cDovL3d3dy5uY2Z0cC5jb20vCisKKyAgICAgICAgICBbOThdaHR0cDovL3d3dy5uY2Z0cC5jb20vCiAKICAgIG52aQotICAgICAgICAgIE5ldyB2aSB2ZXJzaW9ucyAxLjUwIGFyZSBhYmxlIHRvIHVzZSBuY3Vyc2VzIHZlcnNpb25zIDEuOS43IGFuZAotICAgICAgICAgIGxhdGVyLgotICAgICAgICAgIFsxMl1odHRwOi8vd3d3LmJvc3RpYy5jb20vdmkvCisgICAgICAgICAgTmV3IHZpIHVzZXMgbmN1cnNlcy4KIAotICAgcGluZm8KLSAgICAgICAgICBMeW54LWxpa2UgaW5mbyBicm93c2VyLgotICAgICAgICAgIFsxM11odHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL3BpbmZvLworICAgICAgICAgIFs5OV1odHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljL252aQogCiAgICB0aW4KLSAgICAgICAgICBuZXdzcmVhZGVyLCBzdXBwb3J0aW5nIGNvbG9yLCBNSU1FIFsxNF1odHRwOi8vd3d3LnRpbi5vcmcvCisgICAgICAgICAgbmV3c3JlYWRlciwgc3VwcG9ydGluZyBjb2xvciwgTUlNRQorCisgICAgICAgICAgWzEwMF1odHRwOi8vd3d3LnRpbi5vcmcvCiAKICAgIGFzIHdlbGwgYXMgc29tZSB0aGF0IHVzZSBuY3Vyc2VzIGZvciB0aGUgdGVybWluZm8gc3VwcG9ydCBhbG9uZToKIAogICAgbWluaWNvbQotICAgICAgICAgIHRlcm1pbmFsIGVtdWxhdG9yCi0gICAgICAgICAgWzE1XWh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLworICAgICAgICAgIHRlcm1pbmFsIGVtdWxhdG9yIGZvciBzZXJpYWwgbW9kZW0gY29ubmVjdGlvbnMKKworICAgICAgICAgIFsxMDFdaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL21pbmljb20vCisKKyAgIG1vc2gKKyAgICAgICAgICBhIHJlcGxhY2VtZW50IGZvciBzc2guCisKKyAgICAgICAgICBbMTAyXWh0dHBzOi8vbW9zaC5taXQuZWR1LworCisgICB0YWNrCisgICAgICAgICAgdGVybWluZm8gYWN0aW9uIGNoZWNrZXIKKworICAgICAgICAgIFsxMDNdaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sCisKKyAgIHRtdXgKKyAgICAgICAgICB0ZXJtaW5hbCBtdWx0aXBsZXhvcgorCisgICAgICAgICAgWzEwNF1odHRwOi8vdG11eC5naXRodWIuaW8vCiAKICAgIHZpbGUKLSAgICAgICAgICB2aS1saWtlLWVtYWNzCi0gICAgICAgICAgWzE2XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLworICAgICAgICAgIHZpLWxpa2UtZW1hY3MgIG1heSAgYmUgIGJ1aWx0ICB0byAgdXNlIHRoZSB0ZXJtaW5mbywgdGVybWNhcCBvcgorICAgICAgICAgIGN1cnNlcyBpbnRlcmZhY2VzLgogCi0gICBUaGUgIG5jdXJzZXMgIGRpc3RyaWJ1dGlvbiAgaW5jbHVkZXMgIGEgIHNlbGVjdGlvbiAgb2YgIHRlc3QgIHByb2dyYW1zCi0gICAoaW5jbHVkaW5nIGEgZmV3IGdhbWVzKS4KKyAgICAgICAgICBbMTA1XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLwogCi1XaG8ncyBXaG8gYW5kIFdoYXQncyBXaGF0CisgICBhbmQgZmluYWxseSwgdGhvc2Ugd2hpY2ggdXNlIG9ubHkgdGhlIHRlcm1jYXAgaW50ZXJmYWNlOgogCi0gICBaZXlkICBCZW4tSGFsaW0gc3RhcnRlZCBpdCBmcm9tIGEgcHJldmlvdXMgcGFja2FnZSBwY3Vyc2VzLCB3cml0dGVuIGJ5Ci0gICBQYXZlbCAgQ3VydGlzLiAgRXJpYyAgUy4gUmF5bW9uZCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuIEr8cmdlbiBQZmVpZmVyCi0gICB3cm90ZSAgbW9zdCBvZiB0aGUgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMuIE9uZ29pbmcgd29yayBpcyBiZWluZyBkb25lCi0gICBieSAgWzE3XVRob21hcyAgRGlja2V5LiAgVGhvbWFzICBEaWNrZXkgYWN0cyBhcyB0aGUgbWFpbnRhaW5lciBmb3IgdGhlCi0gICBGcmVlICBTb2Z0d2FyZSAgRm91bmRhdGlvbiwgIHdoaWNoICBob2xkcyAgdGhlICBjb3B5cmlnaHQgIG9uIG5jdXJzZXMuCi0gICBDb250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0IFsxOF1idWctbmN1cnNlc0BnbnUub3JnLgorICAgZW1hY3MKKyAgICAgICAgICB0ZXh0IGVkaXRvcgogCi0gICBUbyAgIGpvaW4gICB0aGUgICBuY3Vyc2VzICAgbWFpbGluZyAgIGxpc3QsICAgcGxlYXNlICB3cml0ZSAgZW1haWwgIHRvCi0gICBidWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmcgY29udGFpbmluZyB0aGUgbGluZToKLSAgICAgICAgICAgICBzdWJzY3JpYmUgPG5hbWU+QDxob3N0LmRvbWFpbj4KKyAgICAgICAgICBbMTA2XWh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8KKworICAgc2NyZWVuCisgICAgICAgICAgdGVybWluYWwgbXVsdGlwbGV4b3IKKworICAgICAgICAgIFsxMDddaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8KKworICAgdmltCisgICAgICAgICAgdGV4dCBlZGl0b3IKKworICAgICAgICAgIFsxMDhdaHR0cDovL3d3dy52aW0ub3JnLworCitEZXZlbG9wbWVudCBhY3Rpdml0aWVzCisKKyAgIFpleWQgIEJlbi1IYWxpbSAgc3RhcnRlZCAgbmN1cnNlcyAgZnJvbSAgYSAgcHJldmlvdXMgIHBhY2thZ2UgcGN1cnNlcywKKyAgIHdyaXR0ZW4gIGJ5ICBQYXZlbCAgQ3VydGlzLiAgRXJpYyAgUy4gIFJheW1vbmQgIGNvbnRpbnVlZCBkZXZlbG9wbWVudC4KKyAgIEp1ZXJnZW4gIFBmZWlmZXIgIHdyb3RlICBtb3N0ICBvZiB0aGUgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMuIE9uZ29pbmcKKyAgIGRldmVsb3BtZW50ICB3b3JrICBpcyAgZG9uZSAgYnkgWzEwOV1UaG9tYXMgRGlja2V5LiBUaG9tYXMgRGlja2V5IGFsc28KKyAgIGFjdHMgIGFzICB0aGUgbWFpbnRhaW5lciBmb3IgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2hpY2ggaG9sZHMKKyAgIHRoZSBbMTEwXWNvcHlyaWdodCBvbiBuY3Vyc2VzLgorCisgICBDb250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0CisKKyAgICAgWzExMV1idWctbmN1cnNlc0BnbnUub3JnCisKKyAgIFRvIGpvaW4gdGhlIG5jdXJzZXMgbWFpbGluZyBsaXN0LCBwbGVhc2Ugd3JpdGUgZW1haWwgdG8KKworICAgICBbMTEyXWJ1Zy1uY3Vyc2VzLXJlcXVlc3RAZ251Lm9yZworCisgICBjb250YWluaW5nIHRoZSBsaW5lOgorCisgICAgIHN1YnNjcmliZSA8bmFtZT5APGhvc3QuZG9tYWluPgogCiAgICBUaGlzIGxpc3QgaXMgb3BlbiB0byBhbnlvbmUgaW50ZXJlc3RlZCBpbiBoZWxwaW5nIHdpdGggdGhlIGRldmVsb3BtZW50CiAgICBhbmQgdGVzdGluZyBvZiB0aGlzIHBhY2thZ2UuCiAKICAgIEJldGEgIHZlcnNpb25zICBvZiBuY3Vyc2VzIGFuZCBwYXRjaGVzIHRvIHRoZSBjdXJyZW50IHJlbGVhc2UgYXJlIG1hZGUKLSAgIGF2YWlsYWJsZSBhdCBbMTldZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8gLgorICAgYXZhaWxhYmxlIGF0CiAKLUZ1dHVyZSBQbGFucworICAgICBbMTEzXWZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvIC4KIAotICAgICAqIEV4dGVuZGVkLWxldmVsICAgWFBHNCAgIGNvbmZvcm1hbmNlLCAgIHdpdGggICBpbnRlcm5hdGlvbmFsaXphdGlvbgotICAgICAgIHN1cHBvcnQuCi0gICAgICogUG9ydHMgdG8gbW9yZSBzeXN0ZW1zLCBpbmNsdWRpbmcgRE9TIGFuZCBXaW5kb3dzLgorICAgVGhlcmUgaXMgYW4gYXJjaGl2ZSBvZiB0aGUgbWFpbGluZyBsaXN0IGhlcmU6CiAKLSAgIFdlICBuZWVkICBwZW9wbGUgdG8gaGVscCB3aXRoIHRoZXNlIHByb2plY3RzLiBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4KLSAgIHdvcmtpbmcgb24gdGhlbSwgcGxlYXNlIGpvaW4gdGhlIG5jdXJzZXMgbGlzdC4KKyAgICAgWzExNF1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMgICAgICAgICAgICAoYWxzbworICAgICBbMTE1XWh0dHBzKQogCi1PdGhlciBSZWxhdGVkIFJlc291cmNlcworUmVsYXRlZCByZXNvdXJjZXMKKworICAgVGhlICByZWxlYXNlIG5vdGVzIG1ha2Ugc2NhdHRlcmVkIHJlZmVyZW5jZXMgdG8gdGhlc2UgcGFnZXMsIHdoaWNoIG1heQorICAgYmUgaW50ZXJlc3RpbmcgYnkgdGhlbXNlbHZlczoKKyAgICAgKiBbMTE2XW1hbjJodG1sCisgICAgICogWzExN11uY3Vyc2VzIGxpY2Vuc2luZworICAgICAqIFsxMThdU3ltYm9sIHZlcnNpb25pbmcgaW4gbmN1cnNlcworICAgICAqIFsxMTldVGhlIE1pbkdXIHBvcnQgb2YgbmN1cnNlcworICAgICAqIFsxMjBddGFjayAtIHRlcm1pbmZvIGFjdGlvbiBjaGVja2VyCisgICAgICogWzEyMV10YXIgdmVyc3VzIHBvcnRhYmlsaXR5CisgICAgICogWzEyMl10Y3Rlc3QgLSB0ZXJtY2FwIGxpYnJhcnkgY2hlY2tlcgorICAgICAqIFsxMjNdVGVybWluYWwgRGF0YWJhc2UKKworT3RoZXIgcmVzb3VyY2VzCiAKICAgIFRoZSAgZGlzdHJpYnV0aW9uICBwcm92aWRlcyAgYSAgbmV3ZXIgIHZlcnNpb24gIG9mIHRoZSB0ZXJtaW5mby1mb3JtYXQKLSAgIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZpbGUgb25jZSBtYWludGFpbmVkIGJ5IFsyMF1FcmljIFJheW1vbmQgLiBVbmxpa2UKLSAgIHRoZSAgb2xkZXIgIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZCB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZCBpbiB0aGUKLSAgIHNhbWUgIGZpbGUsICBhbmQgcHJvdmlkZXMgc2V2ZXJhbCB1c2VyLWRlZmluYWJsZSBleHRlbnNpb25zIGJleW9uZCB0aGUKLSAgIFgvT3BlbiBzcGVjaWZpY2F0aW9uLgorICAgdGVybWluYWwgIGRlc2NyaXB0aW9uICBmaWxlICBvbmNlICBtYWludGFpbmVkICBieSAgWzEyNF1FcmljIFJheW1vbmQgLgorICAgVW5saWtlICB0aGUgIG9sZGVyIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZCB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZAorICAgaW4gIHRoZSAgc2FtZSAgZmlsZSwgIGFuZCAgcHJvdmlkZXMgIHNldmVyYWwgdXNlci1kZWZpbmFibGUgZXh0ZW5zaW9ucworICAgYmV5b25kIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi4KIAogICAgWW91ICBjYW4gIGZpbmQgIGxvdHMgIG9mICBpbmZvcm1hdGlvbiAgb24gIHRlcm1pbmFsLXJlbGF0ZWQgdG9waWNzIG5vdAotICAgY292ZXJlZCBpbiB0aGUgdGVybWluZm8gZmlsZSBhdCBbMjFdUmljaGFyZCBTaHVmb3JkJ3MgYXJjaGl2ZSAuCisgICBjb3ZlcmVkIGluIHRoZSB0ZXJtaW5mbyBmaWxlIGF0IFsxMjVdUmljaGFyZCBTaHVmb3JkJ3MgYXJjaGl2ZSAuCisKKyAgICAgKiBbMTI2XU92ZXJ2aWV3CisgICAgICogWzEyN11SZWxlYXNlIE5vdGVzCisgICAgICAgICAgKyBbMTI4XUxpYnJhcnkgaW1wcm92ZW1lbnRzCisgICAgICAgICAgICAgICBvIFsxMjldT3V0cHV0IGJ1ZmZlcmluZworICAgICAgICAgICAgICAgbyBbMTMwXVN5bWJvbCB2ZXJzaW9uaW5nCisgICAgICAgICAgICAgICBvIFsxMzFdTWlzY2VsbGFuZW91cworICAgICAgICAgICsgWzEzMl1Qcm9ncmFtIGltcHJvdmVtZW50cworICAgICAgICAgICAgICAgbyBbMTMzXVV0aWxpdGllcworICAgICAgICAgICAgICAgbyBbMTM0XUV4YW1wbGVzCisgICAgICAgICAgKyBbMTM1XVRlcm1pbmFsIGRhdGFiYXNlCisgICAgICAgICAgKyBbMTM2XURvY3VtZW50YXRpb24KKyAgICAgICAgICArIFsxMzddSW50ZXJlc3RpbmcgYnVnLWZpeGVzCisgICAgICAgICAgKyBbMTM4XUNvbmZpZ3VyYXRpb24gY2hhbmdlcworICAgICAgICAgICAgICAgbyBbMTM5XU1ham9yIGNoYW5nZXMKKyAgICAgICAgICAgICAgIG8gWzE0MF1Db25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICArIFsxNDFdUG9ydGFiaWxpdHkKKyAgICAgICAgICAgICAgIG8gWzE0Ml1NaW5HVworICAgICAgICAgICAgICAgbyBbMTQzXU90aGVyIHBvcnRzCisgICAgICogWzE0NF1GZWF0dXJlcyBvZiBuY3Vyc2VzCisgICAgICogWzE0NV1BcHBsaWNhdGlvbnMgdXNpbmcgbmN1cnNlcworICAgICAqIFsxNDZdRGV2ZWxvcG1lbnQgYWN0aXZpdGllcworICAgICAqIFsxNDddUmVsYXRlZCByZXNvdXJjZXMKKyAgICAgKiBbMTQ4XU90aGVyIHJlc291cmNlcwogCiBSZWZlcmVuY2VzCiAKLSAgIDEuIGZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLwotICAgMi4gZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KLSAgIDMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC94dGVybS94dGVybS5sb2cuaHRtbCN4dGVybV8yMzAKLSAgIDQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvCi0gICA1LiBodHRwOi8vd3d3LnZleHVzLmNhL3Byb2R1Y3RzL0NESy8KLSAgIDYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCi0gICA3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLwotICAgOC4gaHR0cDovL2x5bnguaXNjLm9yZy9yZWxlYXNlLwotICAgOS4gaHR0cDovL3d3dy5pYmlibGlvLm9yZy9tYy8KLSAgMTAuIGh0dHA6Ly93d3cubXV0dC5vcmcvCi0gIDExLiBodHRwOi8vd3d3Lm5jZnRwLmNvbS8KLSAgMTIuIGh0dHA6Ly93d3cuYm9zdGljLmNvbS92aS8KLSAgMTMuIGh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvcGluZm8vCi0gIDE0LiBodHRwOi8vd3d3LnRpbi5vcmcvCi0gIDE1LiBodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8KLSAgMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLwotICAxNy4gbWFpbHRvOmRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldAotICAxOC4gbWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmcKLSAgMTkuIGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCi0gIDIwLiBodHRwOi8vd3d3LmNhdGIub3JnL35lc3IvdGVybWluZm8vCi0gIDIxLiBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWxfaW5kZXguaHRtbAorICAgMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sCisgICAyLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2xlYXIuMS5odG1sCisgICAzLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vaW5mb2NtcC4xbS5odG1sCisgICA0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdGFicy4xLmh0bWwKKyAgIDUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90aWMuMW0uaHRtbAorICAgNi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RvZS4xbS5odG1sCisgICA3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdHB1dC4xLmh0bWwKKyAgIDguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90c2V0LjEuaHRtbAorICAgOS4gZnRwOi8vZnRwLmdudS5vcmcvZ251L25jdXJzZXMvCisgIDEwLiBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLworICAxMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKKyAgMTIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorICAxMy4gaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1uY3Vyc2VzLzIwMTItMDcvbXNnMDAwMjkuaHRtbAorICAxNC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDA1MDEwMQorICAxNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS41Lmh0bWwKKyAgMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWFwc3ltcy5odG1sCisgIDE3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtaW5pdHNjcgorICAxOC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sI2gzLW5ld3Rlcm0KKyAgMTkuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtSW5pdGlhbGl6YXRpb24KKyAgMjAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9uY3Vyc2VzLjN4Lmh0bWwjaDMtTkNVUlNFU19OT19TRVRCVUYKKyAgMjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwKKyAgMjIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sI2gzLXJlc2V0X3Byb2dfbW9kZV8tcmVzZXRfc2hlbGxfbW9kZQorICAyMy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwjaDMtcmVzZXRfcHJvZ19tb2RlXy1yZXNldF9zaGVsbF9tb2RlCisgIDI0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19wcmludHcuM3guaHRtbAorICAyNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1tYXBzeW1zLmh0bWwKKyAgMjYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RhY2suaHRtbAorICAyNy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdXRpbC4zeC5odG1sI2gzLXVzZV90aW9jdGwKKyAgMjguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX29wYXF1ZS4zeC5odG1sCisgIDI5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwjaDItUE9SVEFCSUxJVFkKKyAgMzAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbAorICAzMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdXRpbC4zeC5odG1sI2gzLXB1dHdpbl9nZXR3aW4KKyAgMzIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy1wdXR3aW5fZ2V0d2luCisgIDMzLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sI2gzLUZvcm1hdHRpbmctT3V0cHV0CisgIDM0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90Y3Rlc3QuaHRtbAorICAzNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwjbXktYmV0dGVyLXRyYW5zbGF0aW9uCisgIDM2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDEwMworICAzNy4gaHR0cHM6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2xpYi9saWJjL2dlbi9nZXRjYXAuYz9yZXZpc2lvbj0yNDQwOTImdmlldz1tYXJrdXAjbDc4NAorICAzOC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sCisgIDM5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc191dGlsLjN4Lmh0bWwjaDMtdXNlX2VudgorICA0MC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwjaDMtZGVyd2luCisgIDQxLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCNoMy1tdndpbgorICA0Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2Zvcm1fZHJpdmVyLjN4Lmh0bWwjaDMtZm9ybV9kcml2ZXJfdworICA0My4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9NX0xfVF9FX1JfTQorICA0NC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLW5zdGVybQorICA0NS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXB1dHR5LXNjbworICA0Ni4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXRla2VuCisgIDQ3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0b2MtX1RfRV9SX01fSV9OX0FfVF9PX1IKKyAgNDguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RvYy1fVF9FX1JfTV9JX05fT19MX09fR19ZCisgIDQ5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdG11eAorICA1MC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9TX0lfTV9QX0xfRV9UX0VfUl9NCisgIDUxLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnRlCisgIDUyLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnQ1MjBhbnNpCisgIDUzLiBodHRwOi8vYWVyaWUuamV4aXVtLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2xlYXIuMS5odG1sCisgIDU0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm1fc2wKKyAgNTUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy14dGVybS0xMDA1CisgIDU2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm0tMTAwNgorICA1Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sCisgIDU4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9tYW4yaHRtbC5odG1sCisgIDU5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwKKyAgNjAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0MjAxMTAzMTkKKyAgNjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0MjAwMjEyMjEKKyAgNjIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwjaDMtUm91dGluZS1EZXNjcmlwdGlvbnMKKyAgNjMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9kZWZhdWx0X2NvbG9ycy4zeC5odG1sCisgIDY0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19jb2xvci4zeC5odG1sI2gzLVJvdXRpbmUtRGVzY3JpcHRpb25zCisgIDY1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vcmVzaXpldGVybS4zeC5odG1sCisgIDY2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDcyNQorICA2Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3Q5NjA0MTgKKyAgNjguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0OTcwNDA1CisgIDY5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtc2V0X3Rlcm0KKyAgNzAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCNoMy1kZWxzY3JlZW4KKyAgNzEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtRm9ybWF0dGluZy1PdXRwdXQKKyAgNzIuIGh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vY2QvRTE5MjUzLTAxL2h0bWwvODE3LTA1NTIvZmhrcHkuaHRtbAorICA3My4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS45Lmh0bWwKKyAgNzQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL2Fubm91bmNlLTUuOC5odG1sCisgIDc1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWV4YW1wbGVzLmh0bWwKKyAgNzYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2JlZXAuM3guaHRtbAorICA3Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfYmVlcC4zeC5odG1sCisgIDc4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCNoMy1jdXJzX3NldAorICA3OS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL25jdXJzZXMuM3guaHRtbCNoMy1OQ1VSU0VTX0NPTlNPTEUyCisgIDgwLiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIwODc3Njg5L2djYy00LTgtMS1taW5nZ3ctZC1vcHRpb24tZG9lcy1ub3Qtd29yay1hcy11c3VhbAorICA4MS4gaHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvcGtnLWNvbmZpZworICA4Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDAyMTIwNgorICA4My4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9nY2MtNS8KKyAgODQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi9wb3J0YWJpbGl0eS10ZXN0Lmh0bWwKKyAgODUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90aWMuMW0uaHRtbAorICA4Ni4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sCisgIDg3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdHNldC4xLmh0bWwKKyAgODguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90b2UuMW0uaHRtbAorICA4OS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5mYXEuaHRtbCNhZGRpdGlvbmFsX3JlYWRpbmcKKyAgOTAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuZmFxLmh0bWwKKyAgOTEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorICA5Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay8KKyAgOTMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCisgIDk0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLworICA5NS4gaHR0cDovL2x5bnguaXNjLm9yZy8KKyAgOTYuIGh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8KKyAgOTcuIGh0dHA6Ly93d3cubXV0dC5vcmcvCisgIDk4LiBodHRwOi8vd3d3Lm5jZnRwLmNvbS8KKyAgOTkuIGh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMvbnZpCisgMTAwLiBodHRwOi8vd3d3LnRpbi5vcmcvCisgMTAxLiBodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8KKyAxMDIuIGh0dHBzOi8vbW9zaC5taXQuZWR1LworIDEwMy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sCisgMTA0LiBodHRwOi8vdG11eC5naXRodWIuaW8vCisgMTA1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS8KKyAxMDYuIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8KKyAxMDcuIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vCisgMTA4LiBodHRwOi8vd3d3LnZpbS5vcmcvCisgMTA5LiBtYWlsdG86ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0CisgMTEwLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWxpY2Vuc2UuaHRtbAorIDExMS4gbWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmcKKyAxMTIuIG1haWx0bzpidWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmcKKyAxMTMuIGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCisgMTE0LiBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMKKyAxMTUuIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMKKyAxMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL21hbjJodG1sLmh0bWwKKyAxMTcuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbGljZW5zZS5odG1sCisgMTE4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLW1hcHN5bXMuaHRtbAorIDExOS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1taW5ndy5odG1sCisgMTIwLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWwKKyAxMjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi9wb3J0YWJpbGl0eS10YXIuaHRtbAorIDEyMi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKKyAxMjMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuaHRtbCNkb3dubG9hZF9kYXRhYmFzZQorIDEyNC4gaHR0cDovL3d3dy5jYXRiLm9yZy9+ZXNyL3Rlcm1pbmZvLworIDEyNS4gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWwKKyAxMjYuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1vdmVydmlldworIDEyNy4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLXJlbGVhc2Utbm90ZXMKKyAxMjguIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMy1saWJyYXJ5CisgMTI5LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtbGliLXNldGJ1ZgorIDEzMC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWxpYi12ZXJzaW9uaW5nCisgMTMxLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtbGliLW90aGVyCisgMTMyLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtcHJvZ3JhbXMKKyAxMzMuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC11dGlsaXRpZXMKKyAxMzQuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1leGFtcGxlcworIDEzNS4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWRhdGFiYXNlCisgMTM2LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtZG9jdW1lbnRhdGlvbgorIDEzNy4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWJ1Zy1maXhlcworIDEzOC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWNvbmZpZy1jb25maWcKKyAxMzkuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1jb25maWctbWFqb3IKKyAxNDAuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1jb25maWctb3B0aW9ucworIDE0MS4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLXBvcnRhYmlsaXR5CisgMTQyLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDQtcG9ydC1taW5ndworIDE0My4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2g0LXBvcnQtc3lzdGVtcworIDE0NC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLWZlYXR1cmVzCisgMTQ1LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDItd2hvLXVzZXMKKyAxNDYuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1kZXZlbG9wbWVudAorIDE0Ny4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLXRoaXMtc3R1ZmYKKyAxNDguIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1vdGhlci1zdHVmZgpkaWZmIC0tZ2l0IGEvQWRhOTUvTWFrZWZpbGUuaW4gYi9BZGE5NS9NYWtlZmlsZS5pbgppbmRleCBiMTc0M2NmLi40ZDgwZmUzIDEwMDY0NAotLS0gYS9BZGE5NS9NYWtlZmlsZS5pbgorKysgYi9BZGE5NS9NYWtlZmlsZS5pbgpAQCAtMSw1ICsxLDYgQEAKKyMgJElkOiBNYWtlZmlsZS5pbix2IDEuMjIgMjAxNS8wOC8wNSAyMzoxNTo0MSB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI5LDkgKzMwLDEwIEBACiAjICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKICMKICMgIFZlcnNpb24gQ29udHJvbAotIyAgJFJldmlzaW9uOiAxLjE1ICQKKyMgICRSZXZpc2lvbjogMS4yMiAkCiAjCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCiBTVUJESVJTICAgICAgICAgPSBAQURBX1NVQkRJUlNACkBAIC02MSw3ICs2MywxOSBAQAogCWZvciBkIGluICQoU1VCRElSUyk7IGRvIFwKIAkJKGNkICQkZCA7ICQoTUFLRSkgJChDRl9NRkxBR1MpICRAKSA7XAogCWRvbmUKLQlybSAtZiBNYWtlZmlsZQorCXJtIC1yZiBsaWIKKwlmb3IgbGliX2tpbmQgaW4gc3RhdGljIGR5bmFtaWM7IGRvIFwKKwkJcm0gLXJmICQke2xpYl9raW5kfS1hbGk7IFwKKwkJcm0gLXJmICQke2xpYl9raW5kfS1vYmo7IFwKKwlkb25lCisJLXJtIC1mIGNvbmZpZy5jYWNoZSBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgaW5jbHVkZS9uY3Vyc2VzX2NmZy5oCisJLXJtIC1mIE1ha2VmaWxlCisKK3RhZ3MgOgorCUAKKworcHJlaW5zdGFsbCA6CisJQAogCiBpbnN0YWxsLmRhdGEgOgogCUAKZGlmZiAtLWdpdCBhL0FkYTk1L2FjbG9jYWwubTQgYi9BZGE5NS9hY2xvY2FsLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4M2Y2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9hY2xvY2FsLm00CkBAIC0wLDAgKzEsMzk2NiBAQAorZG5sKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitkbmwgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCitkbmwgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKK2RubCAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorZG5sIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCitkbmwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKK2RubCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorZG5sIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorZG5sIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorZG5sIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCitkbmwgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKK2RubCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorZG5sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCitkbmwgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKK2RubCBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKK2RubCBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorZG5sIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCitkbmwgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZG5sCitkbmwgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5CitkbmwKK2RubCAkSWQ6IGFjbG9jYWwubTQsdiAxLjEwNSAyMDE1LzA4LzA4IDE0OjI1OjQwIHRvbSBFeHAgJAorZG5sIE1hY3JvcyB1c2VkIGluIE5DVVJTRVMgQWRhOTUgYXV0by1jb25maWd1cmF0aW9uIHNjcmlwdC4KK2RubAorZG5sIFRoZXNlIG1hY3JvcyBhcmUgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGZyb20gTkNVUlNFUy4gIFRoZSBjb3B5cmlnaHQgb24KK2RubCB0aGlzIGZpbGUgYXBwbGllcyB0byB0aGUgYWdncmVnYXRpb24gb2YgbWFjcm9zIGFuZCBkb2VzIG5vdCBhZmZlY3QgdXNlIG9mCitkbmwgdGhlc2UgbWFjcm9zIGluIG90aGVyIGFwcGxpY2F0aW9ucy4KK2RubAorZG5sIFNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYXV0b2NvbmYvIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUNWRVJTSU9OX0NIRUNLIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNC8wNi8wNCAxOToxMTo0OQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbmRpdGlvbmFsbHkgZ2VuZXJhdGUgc2NyaXB0IGFjY29yZGluZyB0byB3aGV0aGVyIHdlJ3JlIHVzaW5nIGEgZ2l2ZW4gYXV0b2NvbmYuCitkbmwKK2RubCAkMSA9IHZlcnNpb24gdG8gY29tcGFyZSBhZ2FpbnN0CitkbmwgJDIgPSBjb2RlIHRvIHVzZSBpZiBBQ19BQ1ZFUlNJT04gaXMgYXQgbGVhc3QgYXMgaGlnaCBhcyAkMS4KK2RubCAkMyA9IGNvZGUgdG8gdXNlIGlmIEFDX0FDVkVSU0lPTiBpcyBvbGRlciB0aGFuICQxLgorZGVmaW5lKFtDRl9BQ1ZFUlNJT05fQ0hFQ0tdLAorWworaWZkZWYoW0FDX0FDVkVSU0lPTl0sICxbaWZkZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLFttNF9jb3B5KFtBQ19BVVRPQ09ORl9WRVJTSU9OXSxbQUNfQUNWRVJTSU9OXSldLFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLFtBQ19BQ1ZFUlNJT05dKV0pXSlkbmwKK2lmZGVmKFttNF92ZXJzaW9uX2NvbXBhcmVdLAorW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShtNF9kZWZuKFtBQ19BQ1ZFUlNJT05dKSwgWyQxXSksIC0xLCBbJDNdLCBbJDJdKV0sCitbQ0ZfQUNWRVJTSU9OX0NPTVBBUkUoCitBQ19QUkVSRVFfQ0FOT04oQUNfUFJFUkVRX1NQTElUKFskMV0pKSwKK0FDX1BSRVJFUV9DQU5PTihBQ19QUkVSRVFfU1BMSVQoQUNfQUNWRVJTSU9OKSksIEFDX0FDVkVSU0lPTiwgWyQyXSwgWyQzXSldKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUNWRVJTSU9OX0NPTVBBUkUgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEyLzEwLzAzIDE4OjM5OjUzCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BQ1ZFUlNJT05fQ09NUEFSRShNQUpPUjEsIE1JTk9SMSwgVEVSTkFSWTEsCitkbmwgICAgICAgICAgICAgICAgICAgICAgTUFKT1IyLCBNSU5PUjIsIFRFUk5BUlkyLAorZG5sICAgICAgICAgICAgICAgICAgICAgIFBSSU5UQUJMRTIsIG5vdCBGT1VORCwgRk9VTkQpCitkZWZpbmUoW0NGX0FDVkVSU0lPTl9DT01QQVJFXSwKK1tpZmVsc2UoYnVpbHRpbihbZXZhbF0sIFskMiA8ICQ1XSksIDEsCitbaWZlbHNlKFskOF0sICwgLFskOF0pXSwKK1tpZmVsc2UoWyQ5XSwgLCAsWyQ5XSldKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQURBX0lOQ0xVREVfRElSUyB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTMvMTAvMTQgMDQ6MjQ6MDcKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGluY2x1ZGUtb3B0aW9ucyBmb3IgdGhlIEMgcHJvZ3JhbXMgaW4gdGhlIEFkYTk1CitkbmwgYmluZGluZy4KK0FDX0RFRlVOKFtDRl9BREFfSU5DTFVERV9ESVJTXSwKK1sKK0FDUFBGTEFHUz0iLUkuIC1JLi4vaW5jbHVkZSAtSS4uLy4uL2luY2x1ZGUgJEFDUFBGTEFHUyIKK2lmIHRlc3QgIiRzcmNkaXIiICE9ICIuIjsgdGhlbgorCUFDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9Ly4uLy4uL2luY2x1ZGUgJEFDUFBGTEFHUyIKK2ZpCitpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwlBQ1BQRkxBR1M9IiRBQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKK2VsaWYgdGVzdCAiJGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiOyB0aGVuCisJaWYgdGVzdCAiJGluY2x1ZGVkaXIiID0gJyR7cHJlZml4fS9pbmNsdWRlJyA7IHRoZW4KKwkJaWYgdGVzdCB4JHByZWZpeCAhPSB4L3VzciA7IHRoZW4KKwkJCUFDUFBGTEFHUz0iJEFDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgorCQlmaQorCWVsc2UKKwkJQUNQUEZMQUdTPSIkQUNQUEZMQUdTIC1JXCR7aW5jbHVkZWRpcn0iCisJZmkKK2ZpCitBQ19TVUJTVChBQ1BQRkxBR1MpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9BREFGTEFHUyB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMTAvMDYvMTkgMTU6MjI6MTgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBBZGQgdG8gJEFEQUZMQUdTLCB3aGljaCBpcyBzdWJzdGl0dXRlZCBpbnRvIG1ha2VmaWxlIGFuZCBzY3JpcHRzLgorQUNfREVGVU4oW0NGX0FERF9BREFGTEFHU10sWworIAlBREFGTEFHUz0iJEFEQUZMQUdTICQxIgorCUFDX1NVQlNUKEFEQUZMQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfQ0ZMQUdTIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQ29weSBub24tcHJlcHJvY2Vzc29yIGZsYWdzIHRvICRDRkxBR1MsIHByZXByb2Nlc3NvciBmbGFncyB0byAkQ1BQRkxBR1MKK2RubCBUaGUgc2Vjb25kIHBhcmFtZXRlciBpZiBnaXZlbiBtYWtlcyB0aGlzIG1hY3JvIHZlcmJvc2UuCitkbmwKK2RubCBQdXQgYW55IHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyB0aGF0IHVzZSBxdW90ZWQgc3RyaW5ncyBpbiAkRVhUUkFfQ1BQRkxBR1MsCitkbmwgdG8gc2ltcGxpZnkgdXNlIG9mICRDUFBGTEFHUyBpbiBjb21waWxlciBjaGVja3MsIGV0Yy4sIHRoYXQgYXJlIGVhc2lseQorZG5sIGNvbmZ1c2VkIGJ5IHRoZSBxdW90ZXMgKHdoaWNoIHJlcXVpcmUgYmFja3NsYXNoZXMgdG8ga2VlcCB0aGVtIHVzYWJsZSkuCitBQ19ERUZVTihbQ0ZfQUREX0NGTEFHU10sCitbCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICQxCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW1tePV1dKj0nXCcnXCJbW14iXV0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKwkJCQlDRl9SRU1PVkVfREVGSU5FKENQUEZMQUdTLCRDUFBGTEFHUywkY2ZfdHN0X2NwcGZsYWdzKQorCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW1teIl1dKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKwlpZmVsc2UoWyQyXSwsLFtDRl9WRVJCT1NFKGFkZCB0byBcJENGTEFHUyAkY2ZfbmV3X2NmbGFncyldKQorCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCWlmZWxzZShbJDJdLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyldKQorCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCWlmZWxzZShbJDJdLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkRVhUUkFfQ1BQRkxBR1MgJGNmX25ld19leHRyYV9jcHBmbGFncyldKQorCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK0FDX1NVQlNUKEVYVFJBX0NQUEZMQUdTKQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9JTkNESVIgdmVyc2lvbjogMTQgdXBkYXRlZDogMjAxNS8wNS8yNSAyMDo1MzowNAorZG5sIC0tLS0tLS0tLS0tLS0KK2RubCBBZGQgYW4gaW5jbHVkZS1kaXJlY3RvcnkgdG8gJENQUEZMQUdTLiAgRG9uJ3QgYWRkIC91c3IvaW5jbHVkZSwgc2luY2UgaXQncworZG5sIHJlZHVuZGFudC4gIFdlIGRvbid0IG5vcm1hbGx5IG5lZWQgdG8gYWRkIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGZvciBnY2MsCitkbmwgYnV0IG9sZCB2ZXJzaW9ucyAoYW5kIHNvbWUgbWlzaW5zdGFsbGVkIG9uZXMpIG5lZWQgdGhhdC4gIFRvIG1ha2UgdGhpbmdzCitkbmwgd29yc2UsIGdjYyAzLnggbWF5IGdpdmUgZXJyb3IgbWVzc2FnZXMgaWYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgaXMgYWRkZWQgdG8KK2RubCB0aGUgaW5jbHVkZS1wYXRoKS4KK0FDX0RFRlVOKFtDRl9BRERfSU5DRElSXSwKK1sKK2lmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJDEKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGlvLmg+XSwKKwkJCQkgIFtwcmludGYoIkhlbGxvIildLAorCQkJCSAgW10sCisJCQkJICBbY2ZfaGF2ZV9pbmNkaXI9eWVzXSkKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoKQorCQkgIGlmZWxzZShbJDJdLCxDUFBGTEFHUyxbJDJdKT0iJGlmZWxzZShbJDJdLCxDUFBGTEFHUyxbJDJdKSAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9MSUIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzAyIDA1OjAzOjA1CitkbmwgLS0tLS0tLS0tLQorZG5sIEFkZCBhIGxpYnJhcnksIHVzZWQgdG8gZW5mb3JjZSBjb25zaXN0ZW5jeS4KK2RubAorZG5sICQxID0gbGlicmFyeSB0byBhZGQsIHdpdGhvdXQgdGhlICItbCIKK2RubCAkMiA9IHZhcmlhYmxlIHRvIHVwZGF0ZSAoZGVmYXVsdCAkTElCUykKK0FDX0RFRlVOKFtDRl9BRERfTElCXSxbQ0ZfQUREX0xJQlMoLWwkMSxpZmVsc2UoJDIsLExJQlMsWyQyXSkpXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfTElCRElSIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwJQWRkcyB0byB0aGUgbGlicmFyeS1wYXRoCitkbmwKK2RubAlTb21lIG1hY2hpbmVzIGhhdmUgdHJvdWJsZSB3aXRoIG11bHRpcGxlIC1MIG9wdGlvbnMuCitkbmwKK2RubCAkMSBpcyB0aGUgKGxpc3Qgb2YpIGRpcmVjdG9yeShzKSB0byBhZGQKK2RubCAkMiBpcyB0aGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gdXBkYXRlIChkZWZhdWx0IExERkxBR1MpCitkbmwKK0FDX0RFRlVOKFtDRl9BRERfTElCRElSXSwKK1sKK2lmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkMQorCWRvCisJCWlmIHRlc3QgJGNmX2FkZF9saWJkaXIgPSAvdXNyL2xpYiA7IHRoZW4KKwkJCToKKwkJZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCisJCXRoZW4KKwkJCWNmX2hhdmVfbGliZGlyPW5vCisJCQlpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KKwkJCQkjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCQkJZm9yIGNmX3Rlc3RfbGliZGlyIGluICRMREZMQUdTICRMSUJTIDsgZG8KKwkJCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgorCQkJCQkJY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWZpCisJCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCisJCQkJQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoKQorCQkJCWlmZWxzZShbJDJdLCxMREZMQUdTLFskMl0pPSItTCRjZl9hZGRfbGliZGlyICRpZmVsc2UoWyQyXSwsTERGTEFHUyxbJDJdKSIKKwkJCWZpCisJCWZpCisJZG9uZQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUREX0xJQlMgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE0LzA3LzEzIDE0OjMzOjI3CitkbmwgLS0tLS0tLS0tLS0KK2RubCBBZGQgb25lIG9yIG1vcmUgbGlicmFyaWVzLCB1c2VkIHRvIGVuZm9yY2UgY29uc2lzdGVuY3kuICBMaWJyYXJpZXMgYXJlCitkbmwgcHJlcGVuZGVkIHRvIGFuIGV4aXN0aW5nIGxpc3QsIHNpbmNlIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgYXNzdW1lZCB0bworZG5sIGFscmVhZHkgZXhpc3QgaW4gdGhlIGxpc3QuCitkbmwKK2RubCAkMSA9IGxpYnJhcmllcyB0byBhZGQsIHdpdGggdGhlICItbCIsIGV0Yy4KK2RubCAkMiA9IHZhcmlhYmxlIHRvIHVwZGF0ZSAoZGVmYXVsdCAkTElCUykKK0FDX0RFRlVOKFtDRl9BRERfTElCU10sWworY2ZfYWRkX2xpYnM9IiQxIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluIFskXWlmZWxzZSgkMiwsTElCUyxbJDJdKQorZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQoraWZlbHNlKCQyLCxMSUJTLFskMl0pPSIkY2ZfYWRkX2xpYnMiCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9TVUJESVJfUEFUSCB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTMvMTAvMDggMTc6NDc6MDUKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBBcHBlbmQgdG8gYSBzZWFyY2gtbGlzdCBmb3IgYSBub25zdGFuZGFyZCBoZWFkZXIvbGliLWZpbGUKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCitkbmwJJDMgPSB0aGUgc3ViZGlyZWN0b3J5LCBlLmcuLCBiaW4sIGluY2x1ZGUgb3IgbGliCitkbmwgJDQgPSB0aGUgZGlyZWN0b3J5IHVuZGVyIHdoaWNoIHdlIHdpbGwgdGVzdCBmb3Igc3ViZGlyZWN0b3JpZXMKK2RubCAkNSA9IGEgZGlyZWN0b3J5IHRoYXQgd2UgZG8gbm90IHdhbnQgJDQgdG8gbWF0Y2gKK0FDX0RFRlVOKFtDRl9BRERfU1VCRElSX1BBVEhdLAorWwordGVzdCAieCQ0IiAhPSAieCQ1IiAmJiBcCit0ZXN0IC1kICIkNCIgJiYgXAoraWZlbHNlKFskNV0sTk9ORSwsWyh0ZXN0IC16ICIkNSIgfHwgdGVzdCB4JDUgPSB4Tk9ORSB8fCB0ZXN0ICJ4JDQiICE9ICJ4JDUiKSAmJl0pIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciAkMy1kaXJlY3RvcmllcyB1bmRlciAkNCIKKwl0ZXN0IC1kICQ0LyQzICYmICAgICAgICAgICQxPSJbJF0kMSAkNC8kMyIKKwl0ZXN0IC1kICQ0LyQzLyQyICYmICAgICAgICQxPSJbJF0kMSAkNC8kMy8kMiIKKwl0ZXN0IC1kICQ0LyQzLyQyLyQzICYmICAgICQxPSJbJF0kMSAkNC8kMy8kMi8kMyIKKwl0ZXN0IC1kICQ0LyQyLyQzICYmICAgICAgICQxPSJbJF0kMSAkNC8kMi8kMyIKKwl0ZXN0IC1kICQ0LyQyLyQzLyQyICYmICAgICQxPSJbJF0kMSAkNC8kMi8kMy8kMiIKK30KK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQVJHX0RJU0FCTEUgdmVyc2lvbjogMyB1cGRhdGVkOiAxOTk5LzAzLzMwIDE3OjI0OjMxCitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBBbGxvdyB1c2VyIHRvIGRpc2FibGUgYSBub3JtYWxseS1vbiBvcHRpb24uCitBQ19ERUZVTihbQ0ZfQVJHX0RJU0FCTEVdLAorW0NGX0FSR19PUFRJT04oJDEsWyQyXSxbJDNdLFskNF0seWVzKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQVJHX09QVElPTiB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTUvMDUvMTAgMTk6NTI6MTQKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgUmVzdHJpY3RlZCBmb3JtIG9mIEFDX0FSR19FTkFCTEUgdGhhdCBlbnN1cmVzIHVzZXIgZG9lc24ndCBnaXZlIGJvZ3VzCitkbmwgdmFsdWVzLgorZG5sCitkbmwgUGFyYW1ldGVyczoKK2RubCAkMSA9IG9wdGlvbiBuYW1lCitkbmwgJDIgPSBoZWxwLXN0cmluZworZG5sICQzID0gYWN0aW9uIHRvIHBlcmZvcm0gaWYgb3B0aW9uIGlzIG5vdCBkZWZhdWx0CitkbmwgJDQgPSBhY3Rpb24gaWYgcGVyZm9ybSBpZiBvcHRpb24gaXMgZGVmYXVsdAorZG5sICQ1ID0gZGVmYXVsdCBvcHRpb24gdmFsdWUgKGVpdGhlciAneWVzJyBvciAnbm8nKQorQUNfREVGVU4oW0NGX0FSR19PUFRJT05dLAorW0FDX0FSR19FTkFCTEUoWyQxXSxbJDJdLFt0ZXN0ICIkZW5hYmxldmFsIiAhPSBpZmVsc2UoWyQ1XSxubyx5ZXMsbm8pICYmIGVuYWJsZXZhbD1pZmVsc2UoWyQ1XSxubyxubyx5ZXMpCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gIiQ1IiA7IHRoZW4KK2lmZWxzZShbJDNdLCxbICAgIDpdZG5sCissWyAgICAkM10pIGlmZWxzZShbJDRdLCwsWworCWVsc2UKKwkJJDRdKQorCWZpXSxbZW5hYmxldmFsPSQ1IGlmZWxzZShbJDRdLCwsWworCSQ0CitdKWRubAorXSldKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FSX0ZMQUdTIHZlcnNpb246IDUgdXBkYXRlZDogMjAxMC8wNS8yMCAyMDoyNDoyOQorZG5sIC0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIHN1aXRhYmxlICJhciIgKGFyY2hpdmVyKSBvcHRpb25zIGZvciB1cGRhdGluZyBhbiBhcmNoaXZlLgorQUNfREVGVU4oW0NGX0FSX0ZMQUdTXSxbCitBQ19SRVFVSVJFKFtDRl9QUk9HX0FSXSkKKworQUNfQ0FDSEVfQ0hFQ0soZm9yIG9wdGlvbnMgdG8gdXBkYXRlIGFyY2hpdmVzLCBjZl9jdl9hcl9mbGFncyxbCisJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgorCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorCWRvCisKKwkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCisJCWlmIHRlc3QgIngkQVJGTEFHUyIgIT0gIngiIDsgdGhlbgorCQkJY2ZfY2hlY2tfYXJfZmxhZ3M9YGVjaG8gIngkQVJGTEFHUyIgfCBzZWQgLWUgInMvJGNmX2FyX2ZsYWdzXCQvLyIgLWUgInMvJGNmX2FyX2ZsYWdzIC8gLyJgCisJCQlpZiB0ZXN0ICJ4JEFSRkxBR1MiICE9ICIkY2ZfY2hlY2tfYXJfZmxhZ3MiIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPQorCQkJCWJyZWFrCisJCQlmaQorCQlmaQorCisJCXJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQKKwkJcm0gLWYgY29uZnRlc3QuYQorCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCitpbnQJdGVzdGRhdGFbWzNdXSA9IHsgMTIzLCA0NTYsIDc4OSB9OworRU9GCisJCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDsgdGhlbgorCQkJZWNobyAiJEFSICRBUkZMQUdTICRjZl9hcl9mbGFncyBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQiID4mQUNfRkRfQ0MKKwkJCSRBUiAkQVJGTEFHUyAkY2ZfYXJfZmxhZ3MgY29uZnRlc3QuYSBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IDI+JkFDX0ZEX0NDIDE+L2Rldi9udWxsCisJCQlpZiB0ZXN0IC1mIGNvbmZ0ZXN0LmEgOyB0aGVuCisJCQkJY2ZfY3ZfYXJfZmxhZ3M9JGNmX2FyX2ZsYWdzCisJCQkJYnJlYWsKKwkJCWZpCisJCWVsc2UKKwkJCUNGX1ZFUkJPU0UoY2Fubm90IGNvbXBpbGUgdGVzdC1wcm9ncmFtKQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJcm0gLWYgY29uZnRlc3QuYSBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQKK10pCisKK2lmIHRlc3QgLW4gIiRBUkZMQUdTIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkY2ZfY3ZfYXJfZmxhZ3MiIDsgdGhlbgorCQlBUkZMQUdTPSIkQVJGTEFHUyAkY2ZfY3ZfYXJfZmxhZ3MiCisJZmkKK2Vsc2UKKwlBUkZMQUdTPSRjZl9jdl9hcl9mbGFncworZmkKKworQUNfU1VCU1QoQVJGTEFHUykKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQlVJTERfQ0MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEyLzEwLzA2IDE1OjMxOjU1CitkbmwgLS0tLS0tLS0tLS0KK2RubCBJZiB3ZSdyZSBjcm9zcy1jb21waWxpbmcsIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSB0b29scyBhbmQgdGhlaXIKK2RubCBvcHRpb25zLiAgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgb3JpZW50ZWQgdG93YXJkIGlkZW50aWZ5aW5nIHRoZSBob3N0CitkbmwgY29tcGlsZXIsIGV0Yy4sIGJ1dCB3ZSBuZWVkIGEgYnVpbGQgY29tcGlsZXIgdG8gZ2VuZXJhdGUgcGFydHMgb2YgdGhlCitkbmwgc291cmNlLgorZG5sCitkbmwgJDEgPSBkZWZhdWx0IGZvciAkQ1BQRkxBR1MKK2RubCAkMiA9IGRlZmF1bHQgZm9yICRMSUJTCitBQ19ERUZVTihbQ0ZfQlVJTERfQ0NdLFsKK0NGX0FDVkVSU0lPTl9DSEVDSygyLjUyLCwKKwlbQUNfUkVRVUlSRShbQ0ZfUFJPR19FWFRdKV0pCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KKworCSMgZGVmYXVsdHMgdGhhdCB3ZSBtaWdodCB3YW50IHRvIG92ZXJyaWRlCisJOiAke0JVSUxEX0NGTEFHUzo9Jyd9CisJOiAke0JVSUxEX0NQUEZMQUdTOj0naWZlbHNlKFskMV0sLCxbJDFdKSd9CisJOiAke0JVSUxEX0xERkxBR1M6PScnfQorCTogJHtCVUlMRF9MSUJTOj0naWZlbHNlKFskMl0sLCxbJDJdKSd9CisJOiAke0JVSUxEX0VYRUVYVDo9JyR4J30KKwk6ICR7QlVJTERfT0JKRVhUOj0nbyd9CisKKwlBQ19BUkdfV0lUSChidWlsZC1jYywKKwkJWyAgLS13aXRoLWJ1aWxkLWNjPVhYWCAgICAgdGhlIGJ1aWxkIEMgY29tcGlsZXIgKCRCVUlMRF9DQyldLAorCQlbQlVJTERfQ0M9IiR3aXRodmFsIl0sCisJCVtBQ19DSEVDS19QUk9HUyhCVUlMRF9DQywgZ2NjIGNjIGNsKV0pCisJQUNfTVNHX0NIRUNLSU5HKGZvciBuYXRpdmUgYnVpbGQgQyBjb21waWxlcikKKwlBQ19NU0dfUkVTVUxUKCRCVUlMRF9DQykKKworCUFDX01TR19DSEVDS0lORyhmb3IgbmF0aXZlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yKQorCUFDX0FSR19XSVRIKGJ1aWxkLWNwcCwKKwkJWyAgLS13aXRoLWJ1aWxkLWNwcD1YWFggICAgdGhlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yICgkQlVJTERfQ1BQKV0sCisJCVtCVUlMRF9DUFA9IiR3aXRodmFsIl0sCisJCVtCVUlMRF9DUFA9JyR7QlVJTERfQ0N9IC1FJ10pCisJQUNfTVNHX1JFU1VMVCgkQlVJTERfQ1BQKQorCisJQUNfTVNHX0NIRUNLSU5HKGZvciBuYXRpdmUgYnVpbGQgQyBmbGFncykKKwlBQ19BUkdfV0lUSChidWlsZC1jZmxhZ3MsCisJCVsgIC0td2l0aC1idWlsZC1jZmxhZ3M9WFhYIHRoZSBidWlsZCBDIGNvbXBpbGVyLWZsYWdzICgkQlVJTERfQ0ZMQUdTKV0sCisJCVtCVUlMRF9DRkxBR1M9IiR3aXRodmFsIl0pCisJQUNfTVNHX1JFU1VMVCgkQlVJTERfQ0ZMQUdTKQorCisJQUNfTVNHX0NIRUNLSU5HKGZvciBuYXRpdmUgYnVpbGQgQyBwcmVwcm9jZXNzb3ItZmxhZ3MpCisJQUNfQVJHX1dJVEgoYnVpbGQtY3BwZmxhZ3MsCisJCVsgIC0td2l0aC1idWlsZC1jcHBmbGFncz1YWFggdGhlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yLWZsYWdzICgkQlVJTERfQ1BQRkxBR1MpXSwKKwkJW0JVSUxEX0NQUEZMQUdTPSIkd2l0aHZhbCJdKQorCUFDX01TR19SRVNVTFQoJEJVSUxEX0NQUEZMQUdTKQorCisJQUNfTVNHX0NIRUNLSU5HKGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWZsYWdzKQorCUFDX0FSR19XSVRIKGJ1aWxkLWxkZmxhZ3MsCisJCVsgIC0td2l0aC1idWlsZC1sZGZsYWdzPVhYWCB0aGUgYnVpbGQgbGlua2VyLWZsYWdzICgkQlVJTERfTERGTEFHUyldLAorCQlbQlVJTERfTERGTEFHUz0iJHdpdGh2YWwiXSkKKwlBQ19NU0dfUkVTVUxUKCRCVUlMRF9MREZMQUdTKQorCisJQUNfTVNHX0NIRUNLSU5HKGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWxpYnJhcmllcykKKwlBQ19BUkdfV0lUSChidWlsZC1saWJzLAorCQlbICAtLXdpdGgtYnVpbGQtbGlicz1YWFggICB0aGUgYnVpbGQgbGlicmFyaWVzICgke0JVSUxEX0xJQlN9KV0sCisJCVtCVUlMRF9MSUJTPSIkd2l0aHZhbCJdKQorCUFDX01TR19SRVNVTFQoJEJVSUxEX0xJQlMpCisKKwkjIHRoaXMgYXNzdW1lcyB3ZSdyZSBvbiBVbml4LgorCUJVSUxEX0VYRUVYVD0KKwlCVUlMRF9PQkpFWFQ9bworCisJOiAke0JVSUxEX0NDOj0nJHtDQ30nfQorCisJaWYgKCB0ZXN0ICIkQlVJTERfQ0MiID0gIiRDQyIgfHwgdGVzdCAiJEJVSUxEX0NDIiA9ICcke0NDfScgKSA7IHRoZW4KKwkJQUNfTVNHX0VSUk9SKFtDcm9zcy1idWlsZCByZXF1aXJlcyB0d28gY29tcGlsZXJzLgorVXNlIC0td2l0aC1idWlsZC1jYyB0byBzcGVjaWZ5IHRoZSBuYXRpdmUgY29tcGlsZXIuXSkKKwlmaQorCitlbHNlCisJOiAke0JVSUxEX0NDOj0nJHtDQ30nfQorCTogJHtCVUlMRF9DUFA6PScke0NQUH0nfQorCTogJHtCVUlMRF9DRkxBR1M6PScke0NGTEFHU30nfQorCTogJHtCVUlMRF9DUFBGTEFHUzo9JyR7Q1BQRkxBR1N9J30KKwk6ICR7QlVJTERfTERGTEFHUzo9JyR7TERGTEFHU30nfQorCTogJHtCVUlMRF9MSUJTOj0nJHtMSUJTfSd9CisJOiAke0JVSUxEX0VYRUVYVDo9JyR4J30KKwk6ICR7QlVJTERfT0JKRVhUOj0nbyd9CitmaQorCitBQ19TVUJTVChCVUlMRF9DQykKK0FDX1NVQlNUKEJVSUxEX0NQUCkKK0FDX1NVQlNUKEJVSUxEX0NGTEFHUykKK0FDX1NVQlNUKEJVSUxEX0NQUEZMQUdTKQorQUNfU1VCU1QoQlVJTERfTERGTEFHUykKK0FDX1NVQlNUKEJVSUxEX0xJQlMpCitBQ19TVUJTVChCVUlMRF9FWEVFWFQpCitBQ19TVUJTVChCVUlMRF9PQkpFWFQpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NDX0VOVl9GTEFHUyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgdXNlcidzIGVudmlyb25tZW50LWJyZWFrYWdlIGJ5IHN0dWZmaW5nIENGTEFHUy9DUFBGTEFHUyBjb250ZW50CitkbmwgaW50byBDQy4gIFRoaXMgd2lsbCBub3QgaGVscCB3aXRoIGJyb2tlbiBzY3JpcHRzIHRoYXQgd3JhcCB0aGUgY29tcGlsZXIgd2l0aAorZG5sIG9wdGlvbnMsIGJ1dCBlbGltaW5hdGVzIGEgbW9yZSBjb21tb24gY2F0ZWdvcnkgb2YgdXNlciBjb25mdXNpb24uCitBQ19ERUZVTihbQ0ZfQ0NfRU5WX0ZMQUdTXSwKK1sKKyMgVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGRlZmluZWQgYnkgQUNfUFJPR19DQworOiAke0NDOj1jY30KKworQUNfTVNHX0NIRUNLSU5HKFwkQ0MgdmFyaWFibGUpCitjYXNlICIkQ0MiIGluCisoKltbXCBcCV1dLVtbSVVEXV0qKQorCUFDX01TR19SRVNVTFQoYnJva2VuKQorCUFDX01TR19XQVJOKHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQ1BQRkxBR1Mgb3B0aW9ucykKKwkjIGh1bW9yIGhpbS4uLgorCWNmX2ZsYWdzPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL15bW14gCV1dKltbIAldXS8vJ2AKKwlDQz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9bWyAJXV0uKi8vJ2AKKwlDRl9BRERfQ0ZMQUdTKCRjZl9mbGFncykKKwk7OworKCopCisJQUNfTVNHX1JFU1VMVChvaykKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DRkdfREVGQVVMVFMgdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIERldGVybWluZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGludG8gd2hpY2ggd2UnbGwgaW5zdGFsbCBuY3Vyc2VzLiAgVGhpcworZG5sIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB1c2VyJ3MgY29tbWFuZC1saW5lIG9wdGlvbnMuICBUaGVyZSdzIHR3byBpdGVtcyB0bworZG5sIGxvb2sgZm9yOgorZG5sCTEuIHRoZSBwcmVmaXggKGUuZy4sIC91c3IpCitkbmwJMi4gdGhlIGhlYWRlciBmaWxlcyAoZS5nLiwgL3Vzci9pbmNsdWRlL25jdXJzZXMpCitkbmwgV2UnbGwgbG9vayBmb3IgYSBwcmV2aW91cyBpbnN0YWxsYXRpb24gb2YgbmN1cnNlcyBhbmQgdXNlIHRoZSBzYW1lIGRlZmF1bHRzLgorZG5sCitkbmwgV2UgZG9uJ3QgdXNlIEFDX1BSRUZJWF9ERUZBVUxULCBiZWNhdXNlIGl0IGdldHMgZXZhbHVhdGVkIHRvbyBzb29uLCBhbmQKK2RubCB3ZSBkb24ndCB1c2UgQUNfUFJFRklYX1BST0dSQU0sIGJlY2F1c2Ugd2UgY2Fubm90IGRpc3Rpbmd1aXNoIG5jdXJzZXMncworZG5sIHByb2dyYW1zIGZyb20gYSB2ZW5kb3Incy4KK0FDX0RFRlVOKFtDRl9DRkdfREVGQVVMVFNdLAorWworQUNfTVNHX0NIRUNLSU5HKGZvciBwcmVmaXgpCitpZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiIDsgdGhlbgorCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4KKwkJIyBub24tdmVuZG9yIHN5c3RlbXMgZG9uJ3QgaGF2ZSBhIGNvbmZsaWN0CisJKG9wZW5ic2QqfGZyZWVic2QqfG1pcmJzZCp8bGludXgqfGN5Z3dpbip8bXN5cyp8aypic2QqLWdudXxtaW5ndyopCisJCXByZWZpeD0vdXNyCisJCTs7CisJKCopCXByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKKwkJOzsKKwllc2FjCitmaQorQUNfTVNHX1JFU1VMVCgkcHJlZml4KQorCitpZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiIDsgdGhlbgorQUNfTVNHX0NIRUNLSU5HKGZvciBkZWZhdWx0IGluY2x1ZGUtZGlyZWN0b3J5KQordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gMT4mQUNfRkRfTVNHCitmb3IgY2Zfc3ltYm9sIGluIFwKKwkkaW5jbHVkZWRpciBcCisJJGluY2x1ZGVkaXIvbmN1cnNlcyBcCisJJHByZWZpeC9pbmNsdWRlIFwKKwkkcHJlZml4L2luY2x1ZGUvbmN1cnNlcyBcCisJL3Vzci9sb2NhbC9pbmNsdWRlIFwKKwkvdXNyL2xvY2FsL2luY2x1ZGUvbmN1cnNlcyBcCisJL3Vzci9pbmNsdWRlIFwKKwkvdXNyL2luY2x1ZGUvbmN1cnNlcworZG8KKwljZl9kaXI9YGV2YWwgZWNobyAkY2Zfc3ltYm9sYAorCWlmIHRlc3QgLWYgJGNmX2Rpci9jdXJzZXMuaCA7IHRoZW4KKwlpZiAoIGZncmVwIE5DVVJTRVNfVkVSU0lPTiAkY2ZfZGlyL2N1cnNlcy5oIDI+JjEgPi9kZXYvbnVsbCApIDsgdGhlbgorCQlpbmNsdWRlZGlyPSIkY2Zfc3ltYm9sIgorCQl0ZXN0IC1uICIkdmVyYm9zZSIgICYmIGVjaG8gJGFjX24gIglmb3VuZCAiIDE+JkFDX0ZEX01TRworCQlicmVhaworCWZpCisJZmkKKwl0ZXN0IC1uICIkdmVyYm9zZSIgICYmIGVjaG8gIgl0ZXN0ZWQgJGNmX2RpciIgMT4mQUNfRkRfTVNHCitkb25lCitBQ19NU0dfUkVTVUxUKCRpbmNsdWRlZGlyKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ0hFQ0tfQ0FDSEUgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAxMi8xMC8wMiAyMDo1NTowMworZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgd2UncmUgYWNjaWRlbnRhbGx5IHVzaW5nIGEgY2FjaGUgZnJvbSBhIGRpZmZlcmVudCBtYWNoaW5lLgorZG5sIERlcml2ZSB0aGUgc3lzdGVtIG5hbWUsIGFzIGEgY2hlY2sgZm9yIHJldXNpbmcgdGhlIGF1dG9jb25mIGNhY2hlLgorZG5sCitkbmwgSWYgd2UndmUgcGFja2FnZWQgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViLCBydW4gdGhhdCAoc2luY2UgaXQgZG9lcyBhCitkbmwgYmV0dGVyIGpvYiB0aGFuIHVuYW1lKS4gIE5vcm1hbGx5IHdlJ2xsIHVzZSBBQ19DQU5PTklDQUxfSE9TVCwgYnV0IGFsbG93CitkbmwgYW4gZXh0cmEgcGFyYW1ldGVyIHRoYXQgd2UgbWF5IG92ZXJyaWRlLCBlLmcuLCBmb3IgQUNfQ0FOT05JQ0FMX1NZU1RFTQorZG5sIHdoaWNoIGlzIHVzZWZ1bCBpbiBjcm9zcy1jb21waWxlcy4KK2RubAorZG5sIE5vdGU6IHdlIHdvdWxkIHVzZSAkYWNfY29uZmlnX3N1YiwgYnV0IHRoYXQgaXMgb25lIG9mIHRoZSBwbGFjZXMgd2hlcmUKK2RubCBhdXRvY29uZiAyLjV4IGJyb2tlIGNvbXBhdGliaWxpdHkgd2l0aCBhdXRvY29uZiAyLjEzCitBQ19ERUZVTihbQ0ZfQ0hFQ0tfQ0FDSEVdLAorWworaWYgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5ndWVzcyB8fCB0ZXN0IC1mICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyA7IHRoZW4KKwlpZmVsc2UoWyQxXSwsW0FDX0NBTk9OSUNBTF9IT1NUXSxbJDFdKQorCXN5c3RlbV9uYW1lPSIkaG9zdF9vcyIKK2Vsc2UKKwlzeXN0ZW1fbmFtZT0iYCh1bmFtZSAtcyAtcikgMj4vZGV2L251bGxgIgorCWlmIHRlc3QgLXogIiRzeXN0ZW1fbmFtZSIgOyB0aGVuCisJCXN5c3RlbV9uYW1lPSJgKGhvc3RuYW1lKSAyPi9kZXYvbnVsbGAiCisJZmkKK2ZpCit0ZXN0IC1uICIkc3lzdGVtX25hbWUiICYmIEFDX0RFRklORV9VTlFVT1RFRChTWVNURU1fTkFNRSwiJHN5c3RlbV9uYW1lIixbRGVmaW5lIHRvIHRoZSBzeXN0ZW0gbmFtZS5dKQorQUNfQ0FDSEVfVkFMKGNmX2N2X3N5c3RlbV9uYW1lLFtjZl9jdl9zeXN0ZW1fbmFtZT0iJHN5c3RlbV9uYW1lIl0pCisKK3Rlc3QgLXogIiRzeXN0ZW1fbmFtZSIgJiYgc3lzdGVtX25hbWU9IiRjZl9jdl9zeXN0ZW1fbmFtZSIKK3Rlc3QgLW4gIiRjZl9jdl9zeXN0ZW1fbmFtZSIgJiYgQUNfTVNHX1JFU1VMVChDb25maWd1cmluZyBmb3IgJGNmX2N2X3N5c3RlbV9uYW1lKQorCitpZiB0ZXN0ICIuJHN5c3RlbV9uYW1lIiAhPSAiLiRjZl9jdl9zeXN0ZW1fbmFtZSIgOyB0aGVuCisJQUNfTVNHX1JFU1VMVChDYWNoZWQgc3lzdGVtIG5hbWUgKCRzeXN0ZW1fbmFtZSkgZG9lcyBub3QgYWdyZWUgd2l0aCBhY3R1YWwgKCRjZl9jdl9zeXN0ZW1fbmFtZSkpCisJQUNfTVNHX0VSUk9SKCJQbGVhc2UgcmVtb3ZlIGNvbmZpZy5jYWNoZSBhbmQgdHJ5IGFnYWluLiIpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DTEFOR19DT01QSUxFUiB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTMvMTEvMTkgMTk6MjM6MzUKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHRoZSBnaXZlbiBjb21waWxlciBpcyByZWFsbHkgY2xhbmcuICBjbGFuZydzIEMgZHJpdmVyIGRlZmluZXMKK2RubCBfX0dOVUNfXyAoZm9vbGluZyB0aGUgY29uZmlndXJlIHNjcmlwdCBpbnRvIHNldHRpbmcgJEdDQyB0byB5ZXMpIGJ1dCBkb2VzCitkbmwgbm90IGlnbm9yZSBzb21lIGdjYyBvcHRpb25zLgorZG5sCitkbmwgVGhpcyBtYWNybyBzaG91bGQgYmUgcnVuICJzb29uIiBhZnRlciBBQ19QUk9HX0NDIG9yIEFDX1BST0dfQ1BMVVNQTFVTLCB0bworZG5sIGVuc3VyZSB0aGF0IGl0IGlzIG5vdCBtaXN0YWtlbiBmb3IgZ2NjL2crKy4gIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgZnJvbQorZG5sIHRoZSB3cmFwcGVycyBmb3IgZ2NjIGFuZCBnKysgd2FybmluZ3MuCitkbmwKK2RubCAkMSA9IEdDQyAoZGVmYXVsdCkgb3IgR1hYCitkbmwgJDIgPSBDTEFOR19DT01QSUxFUiAoZGVmYXVsdCkKK2RubCAkMyA9IENGTEFHUyAoZGVmYXVsdCkgb3IgQ1hYRkxBR1MKK0FDX0RFRlVOKFtDRl9DTEFOR19DT01QSUxFUl0sWworaWZlbHNlKFskMl0sLENMQU5HX0NPTVBJTEVSLFskMl0pPW5vCisKK2lmIHRlc3QgIiRpZmVsc2UoWyQxXSwsWyQxXSxHQ0MpIiA9IHllcyA7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhpcyBpcyByZWFsbHkgQ2xhbmcgaWZlbHNlKFskMV0sR1hYLEMrKyxDKSBjb21waWxlcikKKwljZl9zYXZlX0NGTEFHUz0iJGlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSkiCisJaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKT0iJGlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSkgLVF1bnVzZWQtYXJndW1lbnRzIgorCUFDX1RSWV9DT01QSUxFKFtdLFsKKyNpZmRlZiBfX2NsYW5nX18KKyNlbHNlCittYWtlIGFuIGVycm9yCisjZW5kaWYKK10sW2lmZWxzZShbJDJdLCxDTEFOR19DT01QSUxFUixbJDJdKT15ZXMKK2NmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLVF1bnVzZWQtYXJndW1lbnRzIgorXSxbXSkKKwlpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pPSIkY2Zfc2F2ZV9DRkxBR1MiCisJQUNfTVNHX1JFU1VMVCgkaWZlbHNlKFskMl0sLENMQU5HX0NPTVBJTEVSLFskMl0pKQorZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ1VSU0VTX0hFQURFUiB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTUvMDQvMjMgMjA6MzU6MzAKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgRmluZCBhICJjdXJzZXMiIGhlYWRlciBmaWxlLCBlLmcsLiAiY3Vyc2VzLmgiLCBvciBvbmUgb2YgdGhlIG1vcmUgY29tbW9uCitkbmwgdmFyaWF0aW9ucyBvZiBuY3Vyc2VzJyBpbnN0YWxscy4KK2RubAorZG5sICQxID0gbmN1cnNlcyB3aGVuIGxvb2tpbmcgZm9yIG5jdXJzZXMsIG9yIGlzIGVtcHR5CitBQ19ERUZVTihbQ0ZfQ1VSU0VTX0hFQURFUl0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzLGNmX2N2X25jdXJzZXNfaGVhZGVyLFsKK2NmX2N2X25jdXJzZXNfaGVhZGVyPW5vbmUKK2ZvciBjZl9oZWFkZXIgaW4gXAorCW5jdXJzZXMuaCBpZmVsc2UoJDEsLCxbJDEvbmN1cnNlcy5oXSkgXAorCWN1cnNlcy5oIGlmZWxzZSgkMSwsLFskMS9jdXJzZXMuaF0pIGlmZWxzZSgkMSwsW25jdXJzZXMvbmN1cnNlcy5oIG5jdXJzZXMvY3Vyc2VzLmhdKQorZG8KK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9Pl0sCisJW2luaXRzY3IoKTsgdGdvdG8oIj8iLCAwLDApXSwKKwlbY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX2hlYWRlcjsgYnJlYWtdLFtdKQorZG9uZQorXSkKKworaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaGVhZGVyIiA9IG5vbmUgOyB0aGVuCisJQUNfTVNHX0VSUk9SKE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQpCitmaQorCisjIGNoZWF0LCB0byBnZXQgdGhlIHJpZ2h0ICNkZWZpbmUncyBmb3IgSEFWRV9OQ1VSU0VTX0gsIGV0Yy4KK0FDX0NIRUNLX0hFQURFUlMoJGNmX2N2X25jdXJzZXNfaGVhZGVyKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9ESVJOQU1FIHZlcnNpb246IDQgdXBkYXRlZDogMjAwMi8xMi8yMSAxOToyNTo1MgorZG5sIC0tLS0tLS0tLS0KK2RubCAiZGlybmFtZSIgaXMgbm90IHBvcnRhYmxlLCBzbyB3ZSBmYWtlIGl0IHdpdGggYSBzaGVsbCBzY3JpcHQuCitBQ19ERUZVTihbQ0ZfRElSTkFNRV0sWyQxPWBlY2hvICQyIHwgc2VkIC1lICdzJS9bW14vXV0qJCUlJ2BdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0RJU0FCTEVfRUNITyB2ZXJzaW9uOiAxMyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgWW91IGNhbiBhbHdheXMgdXNlICJtYWtlIC1uIiB0byBzZWUgdGhlIGFjdHVhbCBvcHRpb25zLCBidXQgaXQncyBoYXJkIHRvCitkbmwgcGljayBvdXQvYW5hbHl6ZSB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gdGhlIGNvbXBpbGUtbGluZSBpcyBsb25nLgorZG5sCitkbmwgU2V0czoKK2RubAlFQ0hPX0xUIC0gc3ltYm9sIHRvIGNvbnRyb2wgaWYgbGlidG9vbCBpcyB2ZXJib3NlCitkbmwJRUNIT19MRCAtIHN5bWJvbCB0byBwcmVmaXggImNjIC1vIiBsaW5lcworZG5sCVJVTEVfQ0MgLSBzeW1ib2wgdG8gcHV0IGJlZm9yZSBpbXBsaWNpdCAiY2MgLWMiIGxpbmVzIChlLmcuLCAuYy5vKQorZG5sCVNIT1dfQ0MgLSBzeW1ib2wgdG8gcHV0IGJlZm9yZSBleHBsaWNpdCAiY2MgLWMiIGxpbmVzCitkbmwJRUNIT19DQyAtIHN5bWJvbCB0byBwdXQgYmVmb3JlIGFueSAiY2MiIGxpbmUKK2RubAorQUNfREVGVU4oW0NGX0RJU0FCTEVfRUNIT10sWworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIHNlZSBsb25nIGNvbXBpbGluZyBtZXNzYWdlcykKK0NGX0FSR19ESVNBQkxFKGVjaG8sCisJWyAgLS1kaXNhYmxlLWVjaG8gICAgICAgICAgZG8gbm90IGRpc3BsYXkgImNvbXBpbGluZyIgY29tbWFuZHNdLAorCVsKKwlFQ0hPX0xUPSctLXNpbGVudCcKKwlFQ0hPX0xEPSdAZWNobyBsaW5raW5nIFskXUA7JworCVJVTEVfQ0M9J0BlY2hvIGNvbXBpbGluZyBbJF08JworCVNIT1dfQ0M9J0BlY2hvIGNvbXBpbGluZyBbJF1AJworCUVDSE9fQ0M9J0AnCitdLFsKKwlFQ0hPX0xUPScnCisJRUNIT19MRD0nJworCVJVTEVfQ0M9JycKKwlTSE9XX0NDPScnCisJRUNIT19DQz0nJworXSkKK0FDX01TR19SRVNVTFQoJGVuYWJsZXZhbCkKK0FDX1NVQlNUKEVDSE9fTFQpCitBQ19TVUJTVChFQ0hPX0xEKQorQUNfU1VCU1QoUlVMRV9DQykKK0FDX1NVQlNUKFNIT1dfQ0MpCitBQ19TVUJTVChFQ0hPX0NDKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9ESVNBQkxFX0dOQVRfUFJPSkVDVFMgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDE0LzA2LzAxIDExOjM0OjAwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQ0ZfRElTQUJMRV9HTkFUX1BST0pFQ1RTXSxbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgd2Ugd2FudCB0byB1c2UgR05BVCBwcm9qZWN0cykKK0NGX0FSR19ESVNBQkxFKGduYXQtcHJvamVjdHMsCisJWyAgLS1kaXNhYmxlLWduYXQtcHJvamVjdHMgdGVzdDogZGlzYWJsZSBHTkFUIHByb2plY3RzIGV2ZW4gaWYgdXNhYmxlXSwKKwlbZW5hYmxlX2duYXRfcHJvamVjdHM9bm9dLAorCVtlbmFibGVfZ25hdF9wcm9qZWN0cz15ZXNdKQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX2duYXRfcHJvamVjdHMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0VOQUJMRV9QQ19GSUxFUyB2ZXJzaW9uOiAxMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVGhpcyBpcyB0aGUgIi0tZW5hYmxlLXBjLWZpbGVzIiBvcHRpb24sIHdoaWNoIGlzIGF2YWlsYWJsZSBpZiB0aGVyZSBpcyBhCitkbmwgcGtnLWNvbmZpZyBjb25maWd1cmF0aW9uIG9uIHRoZSBsb2NhbCBtYWNoaW5lLgorQUNfREVGVU4oW0NGX0VOQUJMRV9QQ19GSUxFU10sWworQUNfUkVRVUlSRShbQ0ZfUEtHX0NPTkZJR10pCitBQ19SRVFVSVJFKFtDRl9XSVRIX1BLR19DT05GSUdfTElCRElSXSkKKworaWYgdGVzdCAieCRQS0dfQ09ORklHIiAhPSB4bm9uZQordGhlbgorCUFDX01TR19DSEVDS0lORyhpZiB3ZSBzaG91bGQgaW5zdGFsbCAucGMgZmlsZXMgZm9yICRQS0dfQ09ORklHKQorZWxzZQorCUFDX01TR19DSEVDS0lORyhpZiB3ZSBzaG91bGQgaW5zdGFsbCAucGMgZmlsZXMpCitmaQorCitBQ19BUkdfRU5BQkxFKHBjLWZpbGVzLAorCVsgIC0tZW5hYmxlLXBjLWZpbGVzICAgICAgIGdlbmVyYXRlIGFuZCBpbnN0YWxsIC5wYyBmaWxlcyBmb3IgcGtnLWNvbmZpZ10sCisJW2VuYWJsZV9wY19maWxlcz0kZW5hYmxldmFsXSwKKwlbZW5hYmxlX3BjX2ZpbGVzPW5vXSkKK0FDX01TR19SRVNVTFQoJGVuYWJsZV9wY19maWxlcykKKworaWYgdGVzdCAieCRlbmFibGVfcGNfZmlsZXMiICE9IHhubwordGhlbgorCWNhc2UgIngkUEtHX0NPTkZJR19MSUJESVIiIGluCisJKHhub3x4eWVzKQorCQlBQ19NU0dfV0FSTihubyBQS0dfQ09ORklHX0xJQkRJUiB3YXMgZm91bmQpCisJCU1BS0VfUENfRklMRVM9IiMiCisJCTs7CisJKCopCisJCUNGX1BBVEhfU1lOVEFYKFBLR19DT05GSUdfTElCRElSKQorCQlNQUtFX1BDX0ZJTEVTPQorCQk7OworCWVzYWMKK2Vsc2UKKwlNQUtFX1BDX0ZJTEVTPSIjIgorZmkKK0FDX1NVQlNUKE1BS0VfUENfRklMRVMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0ZJTkRfTElCUkFSWSB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMDgvMDMvMjMgMTQ6NDg6NTQKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBMb29rIGZvciBhIG5vbi1zdGFuZGFyZCBsaWJyYXJ5LCBnaXZlbiBwYXJhbWV0ZXJzIGZvciBBQ19UUllfTElOSy4gIFdlCitkbmwgcHJlZmVyIGEgc3RhbmRhcmQgbG9jYXRpb24sIGFuZCB1c2UgLUwgb3B0aW9ucyBvbmx5IGlmIHdlIGRvIG5vdCBmaW5kIHRoZQorZG5sIGxpYnJhcnkgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgbG9jYXRpb24ocykuCitkbmwJJDEgPSBsaWJyYXJ5IG5hbWUKK2RubAkkMiA9IGxpYnJhcnkgY2xhc3MsIHVzdWFsbHkgdGhlIHNhbWUgYXMgbGlicmFyeSBuYW1lCitkbmwJJDMgPSBpbmNsdWRlcworZG5sCSQ0ID0gY29kZSBmcmFnbWVudCB0byBjb21waWxlL2xpbmsKK2RubAkkNSA9IGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24tbmFtZQorZG5sCSQ2ID0gZmxhZywgbm9ubnVsbCBpZiBmYWlsdXJlIHNob3VsZCBub3QgY2F1c2UgYW4gZXJyb3ItZXhpdAorZG5sCitkbmwgU2V0cyB0aGUgdmFyaWFibGUgIiRjZl9saWJkaXIiIGFzIGEgc2lkZS1lZmZlY3QsIHNvIHdlIGNhbiBzZWUgaWYgd2UgaGFkCitkbmwgdG8gdXNlIGEgLUwgb3B0aW9uLgorQUNfREVGVU4oW0NGX0ZJTkRfTElCUkFSWV0sCitbCisJZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyQxJz1ubycKKwljZl9saWJkaXI9IiIKKwlBQ19DSEVDS19GVU5DKCQ1LAorCQlldmFsICdjZl9jdl9oYXZlX2xpYl8nJDEnPXllcycsWworCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCQlBQ19NU0dfQ0hFQ0tJTkcoZm9yICQ1IGluIC1sJDEpCisJCUxJQlM9Ii1sJDEgJExJQlMiCisJCUFDX1RSWV9MSU5LKFskM10sWyQ0XSwKKwkJCVtBQ19NU0dfUkVTVUxUKHllcykKKwkJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJDEnPXllcycKKwkJCV0sCisJCQlbQUNfTVNHX1JFU1VMVChubykKKwkJCUNGX0xJQlJBUllfUEFUSChjZl9zZWFyY2gsJDIpCisJCQlmb3IgY2ZfbGliZGlyIGluICRjZl9zZWFyY2gKKwkJCWRvCisJCQkJQUNfTVNHX0NIRUNLSU5HKGZvciAtbCQxIGluICRjZl9saWJkaXIpCisJCQkJTElCUz0iLUwkY2ZfbGliZGlyIC1sJDEgJGNmX3NhdmVfTElCUyIKKwkJCQlBQ19UUllfTElOSyhbJDNdLFskNF0sCisJCQkJCVtBQ19NU0dfUkVTVUxUKHllcykKKwkJCSAJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJDEnPXllcycKKwkJCQkJIGJyZWFrXSwKKwkJCQkJW0FDX01TR19SRVNVTFQobm8pCisJCQkJCSBMSUJTPSIkY2Zfc2F2ZV9MSUJTIl0pCisJCQlkb25lCisJCQldKQorCQldKQorZXZhbCAnY2ZfZm91bmRfbGlicmFyeT1bJF1jZl9jdl9oYXZlX2xpYl8nJDEKK2lmZWxzZSgkNiwsWworaWYgdGVzdCAkY2ZfZm91bmRfbGlicmFyeSA9IG5vIDsgdGhlbgorCUFDX01TR19FUlJPUihDYW5ub3QgbGluayAkMSBsaWJyYXJ5KQorZmkKK10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0ZJTkRfTElOS0FHRSB2ZXJzaW9uOiAyMCB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRmluZCBhIGxpYnJhcnkgKHNwZWNpZmljYWxseSB0aGUgbGlua2FnZSB1c2VkIGluIHRoZSBjb2RlIGZyYWdtZW50KSwKK2RubCBzZWFyY2hpbmcgZm9yIGl0IGlmIGl0IGlzIG5vdCBhbHJlYWR5IGluIHRoZSBsaWJyYXJ5IHBhdGguCitkbmwgU2VlIGFsc28gQ0ZfQUREX1NFQVJDSFBBVEguCitkbmwKK2RubCBQYXJhbWV0ZXJzICg0LW9uIGFyZSBvcHRpb25hbCk6CitkbmwgICAgICQxID0gaGVhZGVycyBmb3IgbGlicmFyeSBlbnRyeXBvaW50CitkbmwgICAgICQyID0gY29kZSBmcmFnbWVudCBmb3IgbGlicmFyeSBlbnRyeXBvaW50CitkbmwgICAgICQzID0gdGhlIGxpYnJhcnkgbmFtZSB3aXRob3V0IHRoZSAiLWwiIG9wdGlvbiBvciAiLnNvIiBzdWZmaXguCitkbmwgICAgICQ0ID0gYWN0aW9uIHRvIHBlcmZvcm0gaWYgc3VjY2Vzc2Z1bCAoZGVmYXVsdDogdXBkYXRlIENQUEZMQUdTLCBldGMpCitkbmwgICAgICQ1ID0gYWN0aW9uIHRvIHBlcmZvcm0gaWYgbm90IHN1Y2Nlc3NmdWwKK2RubCAgICAgJDYgPSBtb2R1bGUgbmFtZSwgaWYgbm90IHRoZSBzYW1lIGFzIHRoZSBsaWJyYXJ5IG5hbWUKK2RubCAgICAgJDcgPSBleHRyYSBsaWJyYXJpZXMKK2RubAorZG5sIFNldHMgdGhlc2UgdmFyaWFibGVzOgorZG5sICAgICAkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIC0geWVzL25vIGFjY29yZGluZyB0byB3aGV0aGVyIGxpbmthZ2UgaXMgZm91bmQKK2RubCAgICAgJGNmX2N2X2hlYWRlcl9wYXRoXyQzIC0gaW5jbHVkZS1kaXJlY3RvcnkgaWYgbmVlZGVkCitkbmwgICAgICRjZl9jdl9saWJyYXJ5X3BhdGhfJDMgLSBsaWJyYXJ5LWRpcmVjdG9yeSBpZiBuZWVkZWQKK2RubCAgICAgJGNmX2N2X2xpYnJhcnlfZmlsZV8kMyAtIGxpYnJhcnktZmlsZSBpZiBuZWVkZWQsIGUuZy4sIC1sJDMKK0FDX0RFRlVOKFtDRl9GSU5EX0xJTktBR0VdLFsKKworIyBJZiB0aGUgbGlua2FnZSBpcyBub3QgYWxyZWFkeSBpbiB0aGUgJENQUEZMQUdTLyRMREZMQUdTIGNvbmZpZ3VyYXRpb24sIHRoZXNlCisjIHdpbGwgYmUgc2V0IG9uIGNvbXBsZXRpb24gb2YgdGhlIEFDX1RSWV9MSU5LIGJlbG93LgorY2ZfY3ZfaGVhZGVyX3BhdGhfJDM9CitjZl9jdl9saWJyYXJ5X3BhdGhfJDM9CisKK0NGX01TR19MT0coW1N0YXJ0aW5nIFtGSU5EX0xJTktBR0VdKCQzLCQ2KV0pCisKK2NmX3NhdmVfTElCUz0iJExJQlMiCisKK0FDX1RSWV9MSU5LKFskMV0sWyQyXSxbCisJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllcworCWNmX2N2X2hlYWRlcl9wYXRoXyQzPS91c3IvaW5jbHVkZQorCWNmX2N2X2xpYnJhcnlfcGF0aF8kMz0vdXNyL2xpYgorXSxbCisKK0xJQlM9Ii1sJDMgJDcgJGNmX3NhdmVfTElCUyIKKworQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKKwljZl9jdl9maW5kX2xpbmthZ2VfJDM9eWVzCisJY2ZfY3ZfaGVhZGVyX3BhdGhfJDM9L3Vzci9pbmNsdWRlCisJY2ZfY3ZfbGlicmFyeV9wYXRoXyQzPS91c3IvbGliCisJY2ZfY3ZfbGlicmFyeV9maWxlXyQzPSItbCQzIgorXSxbCisJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPW5vCisJTElCUz0iJGNmX3NhdmVfTElCUyIKKworCUNGX1ZFUkJPU0UoZmluZCBsaW5rYWdlIGZvciAkMyBsaWJyYXJ5KQorCUNGX01TR19MT0coW1NlYXJjaGluZyBmb3IgaGVhZGVycyBpbiBbRklORF9MSU5LQUdFXSgkMywkNildKQorCisJY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWNmX3Rlc3RfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKworCUNGX0hFQURFUl9QQVRIKGNmX3NlYXJjaCxpZmVsc2UoWyQ2XSwsWyQzXSxbJDZdKSkKKwlmb3IgY2ZfY3ZfaGVhZGVyX3BhdGhfJDMgaW4gJGNmX3NlYXJjaAorCWRvCisJCWlmIHRlc3QgLWQgJGNmX2N2X2hlYWRlcl9wYXRoXyQzIDsgdGhlbgorCQkJQ0ZfVkVSQk9TRSguLi4gdGVzdGluZyAkY2ZfY3ZfaGVhZGVyX3BhdGhfJDMpCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MgLUkkY2ZfY3ZfaGVhZGVyX3BhdGhfJDMiCisJCQlBQ19UUllfQ09NUElMRShbJDFdLFskMl0sWworCQkJCUNGX1ZFUkJPU0UoLi4uIGZvdW5kICQzIGhlYWRlcnMgaW4gJGNmX2N2X2hlYWRlcl9wYXRoXyQzKQorCQkJCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz1tYXliZQorCQkJCWNmX3Rlc3RfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwkJCQlicmVha10sWworCQkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCQldKQorCQlmaQorCWRvbmUKKworCWlmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfJDMiID0gbWF5YmUgOyB0aGVuCisKKwkJQ0ZfTVNHX0xPRyhbU2VhcmNoaW5nIGZvciAkMyBsaWJyYXJ5IGluIFtGSU5EX0xJTktBR0VdKCQzLCQ2KV0pCisKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkJY2Zfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKworCQlpZmVsc2UoWyQ2XSwsLFsKKwkJQ1BQRkxBR1M9IiRjZl90ZXN0X0NQUEZMQUdTIgorCQlMSUJTPSItbCQzICQ3ICRjZl9zYXZlX0xJQlMiCisJCUFDX1RSWV9MSU5LKFskMV0sWyQyXSxbCisJCQlDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBsaWJyYXJ5IGluIHN5c3RlbSkKKwkJCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz15ZXNdKQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCV0pCisKKwkJaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV8kMyIgIT0geWVzIDsgdGhlbgorCQkJQ0ZfTElCUkFSWV9QQVRIKGNmX3NlYXJjaCwkMykKKwkJCWZvciBjZl9jdl9saWJyYXJ5X3BhdGhfJDMgaW4gJGNmX3NlYXJjaAorCQkJZG8KKwkJCQlpZiB0ZXN0IC1kICRjZl9jdl9saWJyYXJ5X3BhdGhfJDMgOyB0aGVuCisJCQkJCUNGX1ZFUkJPU0UoLi4uIHRlc3RpbmcgJGNmX2N2X2xpYnJhcnlfcGF0aF8kMykKKwkJCQkJQ1BQRkxBR1M9IiRjZl90ZXN0X0NQUEZMQUdTIgorCQkJCQlMSUJTPSItbCQzICQ3ICRjZl9zYXZlX0xJQlMiCisJCQkJCUxERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MgLUwkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzIgorCQkJCQlBQ19UUllfTElOSyhbJDFdLFskMl0sWworCQkJCQlDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBsaWJyYXJ5IGluICRjZl9jdl9saWJyYXJ5X3BhdGhfJDMpCisJCQkJCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz15ZXMKKwkJCQkJY2ZfY3ZfbGlicmFyeV9maWxlXyQzPSItbCQzIgorCQkJCQlicmVha10sWworCQkJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQkJCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisJCQkJCUxERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MiCisJCQkJCV0pCisJCQkJZmkKKwkJCWRvbmUKKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCUxERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MiCisJCWZpCisKKwllbHNlCisJCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz1ubworCWZpCisJXSwkNykKK10pCisKK0xJQlM9IiRjZl9zYXZlX0xJQlMiCisKK2lmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfJDMiID0geWVzIDsgdGhlbgoraWZlbHNlKFskNF0sLFsKKwlDRl9BRERfSU5DRElSKCRjZl9jdl9oZWFkZXJfcGF0aF8kMykKKwlDRl9BRERfTElCRElSKCRjZl9jdl9saWJyYXJ5X3BhdGhfJDMpCisJQ0ZfQUREX0xJQigkMykKK10sWyQ0XSkKK2Vsc2UKK2lmZWxzZShbJDVdLCxBQ19NU0dfV0FSTihDYW5ub3QgZmluZCAkMyBsaWJyYXJ5KSxbJDVdKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRklYVVBfQURBRkxBR1MgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBtYWtlIEFEQUZMQUdTIGNvbnNpc3RlbnQgd2l0aCBDRkxBR1MKK0FDX0RFRlVOKFtDRl9GSVhVUF9BREFGTEFHU10sWworCUFDX01TR19DSEVDS0lORyhvcHRpbWl6YXRpb24gb3B0aW9ucyBmb3IgQURBRkxBR1MpCisJY2FzZSAiJENGTEFHUyIgaW4KKwkoKi1nKikKKwkJQ0ZfQUREX0FEQUZMQUdTKC1nKQorCQk7OworCWVzYWMKKwljYXNlICIkQ0ZMQUdTIiBpbgorCSgqLU8qKQorCQljZl9PX2ZsYWc9YGVjaG8gIiRDRkxBR1MiIHxzZWQgLWUgJ3MvXi4qLU8vLU8vJyAtZSAncy9bWyAJXV0uKi8vJ2AKKwkJQ0ZfQUREX0FEQUZMQUdTKCRjZl9PX2ZsYWcpCisJCTs7CisJZXNhYworCUFDX01TR19SRVNVTFQoJEFEQUZMQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HQ0NfQVRUUklCVVRFUyB2ZXJzaW9uOiAxNyB1cGRhdGVkOiAyMDE1LzA0LzEyIDE1OjM5OjAwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBUZXN0IGZvciBhdmFpbGFiaWxpdHkgb2YgdXNlZnVsIGdjYyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXMgdG8gcXVpZXQKK2RubCBjb21waWxlciB3YXJuaW5ncy4gIFRob3VnaCB1c2VmdWwsIG5vdCBhbGwgYXJlIHN1cHBvcnRlZCAtLSBhbmQgY29udHJhcnkKK2RubCB0byBkb2N1bWVudGF0aW9uLCB1bnJlY29nbml6ZWQgZGlyZWN0aXZlcyBjYXVzZSBvbGRlciBjb21waWxlcnMgdG8gYmFyZi4KK0FDX0RFRlVOKFtDRl9HQ0NfQVRUUklCVVRFU10sCitbCitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorY2F0ID4gY29uZnRlc3QuaSA8PEVPRgorI2lmbmRlZiBHQ0NfUFJJTlRGCisjZGVmaW5lIEdDQ19QUklOVEYgMAorI2VuZGlmCisjaWZuZGVmIEdDQ19TQ0FORgorI2RlZmluZSBHQ0NfU0NBTkYgMAorI2VuZGlmCisjaWZuZGVmIEdDQ19OT1JFVFVSTgorI2RlZmluZSBHQ0NfTk9SRVRVUk4gLyogbm90aGluZyAqLworI2VuZGlmCisjaWZuZGVmIEdDQ19VTlVTRUQKKyNkZWZpbmUgR0NDX1VOVVNFRCAvKiBub3RoaW5nICovCisjZW5kaWYKK0VPRgoraWYgdGVzdCAiJEdDQyIgPSB5ZXMKK3RoZW4KKwlBQ19DSEVDS0lORyhbZm9yICRDQyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXNdKQorY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgX19vbGluZV9fICIke2FzX21lOi1jb25maWd1cmV9IgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSAiY29uZnRlc3QuaCIKKyNpbmNsdWRlICJjb25mdGVzdC5pIgorI2lmCUdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSAvKm5vdGhpbmcqLworI2VuZGlmCisjaWYJR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIF9fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICAvKm5vdGhpbmcqLworI2VuZGlmCitleHRlcm4gdm9pZCB3b3coY2hhciAqLC4uLikgR0NDX1NDQU5GTElLRSgxLDIpOworZXh0ZXJuIHZvaWQgb29wcyhjaGFyICosLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpIEdDQ19OT1JFVFVSTjsKK2V4dGVybiB2b2lkIGZvbyh2b2lkKSBHQ0NfTk9SRVRVUk47CitpbnQgbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W1tdXSBHQ0NfVU5VU0VEKSB7IHJldHVybiAwOyB9CitFT0YKKwljZl9wcmludGZfYXR0cmlidXRlPW5vCisJY2Zfc2NhbmZfYXR0cmlidXRlPW5vCisJZm9yIGNmX2F0dHJpYnV0ZSBpbiBzY2FuZiBwcmludGYgdW51c2VkIG5vcmV0dXJuCisJZG8KKwkJQ0ZfVVBQRVIoY2ZfQVRUUklCVVRFLCRjZl9hdHRyaWJ1dGUpCisJCWNmX2RpcmVjdGl2ZT0iX19hdHRyaWJ1dGVfXygoJGNmX2F0dHJpYnV0ZSkpIgorCQllY2hvICJjaGVja2luZyBmb3IgJENDICRjZl9kaXJlY3RpdmUiIDE+JkFDX0ZEX0NDCisKKwkJY2FzZSAkY2ZfYXR0cmlidXRlIGluCisJCShwcmludGYpCisJCQljZl9wcmludGZfYXR0cmlidXRlPXllcworCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFIDEKK0VPRgorCQkJOzsKKwkJKHNjYW5mKQorCQkJY2Zfc2NhbmZfYXR0cmlidXRlPXllcworCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFIDEKK0VPRgorCQkJOzsKKwkJKCopCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgJGNmX2RpcmVjdGl2ZQorRU9GCisJCQk7OworCQllc2FjCisKKwkJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBBQ19NU0dfUkVTVUxUKC4uLiAkY2ZfYXR0cmlidXRlKQorCQkJY2F0IGNvbmZ0ZXN0LmggPj5jb25mZGVmcy5oCisJCQljYXNlICRjZl9hdHRyaWJ1dGUgaW4KKwkJCShub3JldHVybikKKwkJCQlBQ19ERUZJTkVfVU5RVU9URUQoR0NDX05PUkVUVVJOLCRjZl9kaXJlY3RpdmUsW0RlZmluZSB0byBub3JldHVybi1hdHRyaWJ1dGUgZm9yIGdjY10pCisJCQkJOzsKKwkJCShwcmludGYpCisJCQkJY2ZfdmFsdWU9Jy8qIG5vdGhpbmcgKi8nCisJCQkJaWYgdGVzdCAiJGNmX3ByaW50Zl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpJworCQkJCQlBQ19ERUZJTkUoR0NDX1BSSU5URiwxLFtEZWZpbmUgdG8gMSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgZ2NjLWxpa2UgcHJpbnRmIGF0dHJpYnV0ZS5dKQorCQkJCWZpCisJCQkJQUNfREVGSU5FX1VOUVVPVEVEKEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpLCRjZl92YWx1ZSxbRGVmaW5lIHRvIHByaW50Zi1hdHRyaWJ1dGUgZm9yIGdjY10pCisJCQkJOzsKKwkJCShzY2FuZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2Zfc2NhbmZfYXR0cmlidXRlIiAhPSBubyA7IHRoZW4KKwkJCQkJY2ZfdmFsdWU9J19fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpJworCQkJCQlBQ19ERUZJTkUoR0NDX1NDQU5GLDEsW0RlZmluZSB0byAxIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBnY2MtbGlrZSBzY2FuZiBhdHRyaWJ1dGUuXSkKKwkJCQlmaQorCQkJCUFDX0RFRklORV9VTlFVT1RFRChHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpLCRjZl92YWx1ZSxbRGVmaW5lIHRvIHNzY2FuZi1hdHRyaWJ1dGUgZm9yIGdjY10pCisJCQkJOzsKKwkJCSh1bnVzZWQpCisJCQkJQUNfREVGSU5FX1VOUVVPVEVEKEdDQ19VTlVTRUQsJGNmX2RpcmVjdGl2ZSxbRGVmaW5lIHRvIHVudXNlZC1hdHRyaWJ1dGUgZm9yIGdjY10pCisJCQkJOzsKKwkJCWVzYWMKKwkJZmkKKwlkb25lCitlbHNlCisJZmdyZXAgZGVmaW5lIGNvbmZ0ZXN0LmkgPj5jb25mZGVmcy5oCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR0NDX1ZFUlNJT04gdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEyLzEwLzE4IDA2OjQ2OjMzCitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBGaW5kIHZlcnNpb24gb2YgZ2NjCitBQ19ERUZVTihbQ0ZfR0NDX1ZFUlNJT05dLFsKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorR0NDX1ZFUlNJT049bm9uZQoraWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKHZlcnNpb24gb2YgJENDKQorCUdDQ19WRVJTSU9OPSJgJHtDQ30gLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgc2VkIC1lICcyLCRkJyAtZSAncy9eLiooR0NDW1teKV1dKikgLy8nIC1lICdzL14uKihEZWJpYW5bW14pXV0qKSAvLycgLWUgJ3MvXltbXjAtOS5dXSovLycgLWUgJ3MvW1teMC05Ll1dLiovLydgIgorCXRlc3QgLXogIiRHQ0NfVkVSU0lPTiIgJiYgR0NDX1ZFUlNJT049dW5rbm93bgorCUFDX01TR19SRVNVTFQoJEdDQ19WRVJTSU9OKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR0NDX1dBUk5JTkdTIHZlcnNpb246IDMyIHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgdXNlZnVsIHdhcm5pbmcgb3B0aW9ucy4gIFRoZXJlJ3MgYSBmZXcgdGhhdAorZG5sIHdlIGRvbid0IHVzZSwgc2ltcGx5IGJlY2F1c2UgdGhleSdyZSB0b28gbm9pc3k6CitkbmwKK2RubAktV2NvbnZlcnNpb24gKHVzZWZ1bCBpbiBvbGRlciB2ZXJzaW9ucyBvZiBnY2MsIGJ1dCBub3QgaW4gZ2NjIDIuNy54KQorZG5sCS1XcmVkdW5kYW50LWRlY2xzIChzeXN0ZW0gaGVhZGVycyBtYWtlIHRoaXMgdG9vIG5vaXN5KQorZG5sCS1XdHJhZGl0aW9uYWwgKGNvbWJpbmVzIHRvbyBtYW55IHVucmVsYXRlZCBtZXNzYWdlcywgb25seSBhIGZldyB1c2VmdWwpCitkbmwJLVd3cml0ZS1zdHJpbmdzICh0b28gbm9pc3ksIGJ1dCBzaG91bGQgcmV2aWV3IG9jY2FzaW9uYWxseSkuICBUaGlzCitkbmwJCWlzIGVuYWJsZWQgZm9yIG5jdXJzZXMgdXNpbmcgIi0tZW5hYmxlLWNvbnN0Ii4KK2RubAktcGVkYW50aWMKK2RubAorZG5sIFBhcmFtZXRlcjoKK2RubAkkMSBpcyBhbiBvcHRpb25hbCBsaXN0IG9mIGdjYyB3YXJuaW5nIGZsYWdzIHRoYXQgYSBwYXJ0aWN1bGFyCitkbmwJCWFwcGxpY2F0aW9uIG1pZ2h0IHdhbnQgdG8gdXNlLCBlLmcuLCAibm8tdW51c2VkIiBmb3IKK2RubAkJLVduby11bnVzZWQKK2RubCBTcGVjaWFsOgorZG5sCUlmICR3aXRoX2V4dF9jb25zdCBpcyAieWVzIiwgYWRkIGEgY2hlY2sgZm9yIC1Xd3JpdGUtc3RyaW5ncworZG5sCitBQ19ERUZVTihbQ0ZfR0NDX1dBUk5JTkdTXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0dDQ19WRVJTSU9OXSkKK0NGX0lOVEVMX0NPTVBJTEVSKEdDQyxJTlRFTF9DT01QSUxFUixDRkxBR1MpCitDRl9DTEFOR19DT01QSUxFUihHQ0MsQ0xBTkdfQ09NUElMRVIsQ0ZMQUdTKQorCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSBfX29saW5lX18gIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltbXV0pIHsgcmV0dXJuIChhcmd2W1thcmdjLTFdXSA9PSAwKSA7IH0KK0VPRgorCitpZiB0ZXN0ICIkSU5URUxfQ09NUElMRVIiID0geWVzCit0aGVuCisjIFRoZSAiLXdkWFhYIiBvcHRpb25zIHN1cHByZXNzIHdhcm5pbmdzOgorIyByZW1hcmsgIzE0MTk6IGV4dGVybmFsIGRlY2xhcmF0aW9uIGluIHByaW1hcnkgc291cmNlIGZpbGUKKyMgcmVtYXJrICMxNjgzOiBleHBsaWNpdCBjb252ZXJzaW9uIG9mIGEgNjQtYml0IGludGVncmFsIHR5cGUgdG8gYSBzbWFsbGVyIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQorIyByZW1hcmsgIzE2ODQ6IGNvbnZlcnNpb24gZnJvbSBwb2ludGVyIHRvIHNhbWUtc2l6ZWQgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCisjIHJlbWFyayAjMTkzOiB6ZXJvIHVzZWQgZm9yIHVuZGVmaW5lZCBwcmVwcm9jZXNzaW5nIGlkZW50aWZpZXIKKyMgcmVtYXJrICM1OTM6IHZhcmlhYmxlICJjdXJzX3NiX2xlZnRfYXJyb3ciIHdhcyBzZXQgYnV0IG5ldmVyIHVzZWQKKyMgcmVtYXJrICM4MTA6IGNvbnZlcnNpb24gZnJvbSAiaW50IiB0byAiRGltZW5zaW9uPXt1bnNpZ25lZCBzaG9ydH0iIG1heSBsb3NlIHNpZ25pZmljYW50IGJpdHMKKyMgcmVtYXJrICM4Njk6IHBhcmFtZXRlciAidHciIHdhcyBuZXZlciByZWZlcmVuY2VkCisjIHJlbWFyayAjOTgxOiBvcGVyYW5kcyBhcmUgZXZhbHVhdGVkIGluIHVuc3BlY2lmaWVkIG9yZGVyCisjIHdhcm5pbmcgIzI3OTogY29udHJvbGxpbmcgZXhwcmVzc2lvbiBpcyBjb25zdGFudAorCisJQUNfQ0hFQ0tJTkcoW2ZvciAkQ0Mgd2FybmluZyBvcHRpb25zXSkKKwljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwlFWFRSQV9DRkxBR1M9Ii1XYWxsIgorCWZvciBjZl9vcHQgaW4gXAorCQl3ZDE0MTkgXAorCQl3ZDE2ODMgXAorCQl3ZDE2ODQgXAorCQl3ZDE5MyBcCisJCXdkNTkzIFwKKwkJd2QyNzkgXAorCQl3ZDgxMCBcCisJCXdkODY5IFwKKwkJd2Q5ODEKKwlkbworCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIEFDX01TR19SRVNVTFQoLi4uIC0kY2Zfb3B0KQorCQkJRVhUUkFfQ0ZMQUdTPSIkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlmaQorCWRvbmUKKwlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKworZWxpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorCUFDX0NIRUNLSU5HKFtmb3IgJENDIHdhcm5pbmcgb3B0aW9uc10pCisJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJRVhUUkFfQ0ZMQUdTPQorCWNmX3dhcm5fQ09OU1Q9IiIKKwl0ZXN0ICIkd2l0aF9leHRfY29uc3QiID0geWVzICYmIGNmX3dhcm5fQ09OU1Q9Ild3cml0ZS1zdHJpbmdzIgorCWNmX2djY193YXJuaW5ncz0iV2lnbm9yZWQtcXVhbGlmaWVycyBXbG9naWNhbC1vcCBXdmFyYXJncyIKKwl0ZXN0ICJ4JENMQU5HX0NPTVBJTEVSIiA9IHh5ZXMgJiYgY2ZfZ2NjX3dhcm5pbmdzPQorCWZvciBjZl9vcHQgaW4gVyBXYWxsIFwKKwkJV2JhZC1mdW5jdGlvbi1jYXN0IFwKKwkJV2Nhc3QtYWxpZ24gXAorCQlXY2FzdC1xdWFsIFwKKwkJV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBcCisJCVdleHRyYSBcCisJCVdpbmxpbmUgXAorCQlXbWlzc2luZy1kZWNsYXJhdGlvbnMgXAorCQlXbWlzc2luZy1wcm90b3R5cGVzIFwKKwkJV25lc3RlZC1leHRlcm5zIFwKKwkJV3BvaW50ZXItYXJpdGggXAorCQlXc2hhZG93IFwKKwkJV3N0cmljdC1wcm90b3R5cGVzIFwKKwkJV3VuZGVmICRjZl9nY2Nfd2FybmluZ3MgJGNmX3dhcm5fQ09OU1QgJDEKKwlkbworCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIEFDX01TR19SRVNVTFQoLi4uIC0kY2Zfb3B0KQorCQkJY2FzZSAkY2Zfb3B0IGluCisJCQkoV2Nhc3QtcXVhbCkKKwkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EWFRTVFJJTkdERUZJTkVTIgorCQkJCTs7CisJCQkoV2lubGluZSkKKwkJCQljYXNlICRHQ0NfVkVSU0lPTiBpbgorCQkJCShbWzM0XV0uKikKKwkJCQkJQ0ZfVkVSQk9TRShmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OKQorCQkJCQljb250aW51ZTs7CisJCQkJZXNhYworCQkJCTs7CisJCQkoV3BvaW50ZXItYXJpdGgpCisJCQkJY2FzZSAkR0NDX1ZFUlNJT04gaW4KKwkJCQkoW1sxMl1dLiopCisJCQkJCUNGX1ZFUkJPU0UoZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTikKKwkJCQkJY29udGludWU7OworCQkJCWVzYWMKKwkJCQk7OworCQkJZXNhYworCQkJRVhUUkFfQ0ZMQUdTPSIkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlmaQorCWRvbmUKKwlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKK2ZpCitybSAtcmYgY29uZnRlc3QqCisKK0FDX1NVQlNUKEVYVFJBX0NGTEFHUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR05BVFBSRVBfT1BUX1QgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDE0LzA4LzAyIDE4OjM3OjI1CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtDRl9HTkFUUFJFUF9PUFRfVF0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgR05BVFBSRVAgc3VwcG9ydHMgLVQgb3B0aW9uLGNmX2N2X2duYXRwcmVwX29wdF90LFsKK2NmX2N2X2duYXRwcmVwX29wdF90PW5vCitnbmF0cHJlcCAtVCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsICYmIGNmX2N2X2duYXRwcmVwX29wdF90PXllcworXSkKK3Rlc3QgIiRjZl9jdl9nbmF0cHJlcF9vcHRfdCIgPSB5ZXMgJiYgR05BVFBSRVBfT1BUUz0iLVQgJEdOQVRQUkVQX09QVFMiCitBQ19TVUJTVChHTkFUUFJFUF9PUFRTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HTkFUX0dFTkVSSUNTIHZlcnNpb246IDMgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtDRl9HTkFUX0dFTkVSSUNTXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0dOQVRfVkVSU0lPTl0pCisKK0FDX01TR19DSEVDS0lORyhpZiBHTkFUIHN1cHBvcnRzIGdlbmVyaWNzKQorY2FzZSAkY2ZfZ25hdF92ZXJzaW9uIGluCisoMy5bWzEtOV1dKnxbWzQtOV1dLiopCisJY2ZfZ25hdF9nZW5lcmljcz15ZXMKKwk7OworKCopCisJY2ZfZ25hdF9nZW5lcmljcz1ubworCTs7Citlc2FjCitBQ19NU0dfUkVTVUxUKCRjZl9nbmF0X2dlbmVyaWNzKQorCitpZiB0ZXN0ICIkY2ZfZ25hdF9nZW5lcmljcyIgPSB5ZXMKK3RoZW4KKwljZl9jb21waWxlX2dlbmVyaWNzPWdlbmVyaWNzCisJY2ZfZ2VuZXJpY19vYmplY3RzPSJcJHtHRU5PQkpTfSIKK2Vsc2UKKwljZl9jb21waWxlX2dlbmVyaWNzPQorCWNmX2dlbmVyaWNfb2JqZWN0cz0KK2ZpCisKK0FDX1NVQlNUKGNmX2NvbXBpbGVfZ2VuZXJpY3MpCitBQ19TVUJTVChjZl9nZW5lcmljX29iamVjdHMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dOQVRfUFJPSkVDVFMgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIEdOQVQgcHJvamVjdHMgYXJlIGNvbmZpZ3VyZWQgd2l0aCAiLmdwciIgcHJvamVjdCBmaWxlcy4KK2RubCBHTkFUIGxpYnJhcmllcyBhcmUgYSBmdXJ0aGVyIGRldmVsb3BtZW50LCB1c2luZyB0aGUgcHJvamVjdCBmZWF0dXJlLgorQUNfREVGVU4oW0NGX0dOQVRfUFJPSkVDVFNdLAorWworQUNfUkVRVUlSRShbQ0ZfR05BVF9WRVJTSU9OXSkKK0FDX1JFUVVJUkUoW0NGX0RJU0FCTEVfR05BVF9QUk9KRUNUU10pCisKK2NmX2duYXRfbGlicmFyaWVzPW5vCitjZl9nbmF0X3Byb2plY3RzPW5vCisKK2lmIHRlc3QgIiRlbmFibGVfZ25hdF9wcm9qZWN0cyIgIT0gbm8gOyB0aGVuCitBQ19NU0dfQ0hFQ0tJTkcoaWYgR05BVCBzdXBwb3J0cyBwcm9qZWN0IGZpbGVzKQorY2FzZSAkY2ZfZ25hdF92ZXJzaW9uIGluCisoMy5bWzAtOV1dKikKKwk7OworKCopCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoY3lnd2luKnxtc3lzKikKKwkJOzsKKwkoKikKKwkJbWtkaXIgY29uZnRlc3Quc3JjIGNvbmZ0ZXN0LmJpbiBjb25mdGVzdC5saWIKKwkJY2QgY29uZnRlc3Quc3JjCisJCXJtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKKwkJY2F0ID4+bGlicmFyeS5ncHIgPDxDRl9FT0YKK3Byb2plY3QgTGlicmFyeSBpcworICBLaW5kIDo9IEV4dGVybmFsICgiTElCX0tJTkQiKTsKKyAgZm9yIExpYnJhcnlfTmFtZSB1c2UgIkNvbmZUZXN0IjsKKyAgZm9yIE9iamVjdF9EaXIgdXNlICIuIjsKKyAgZm9yIExpYnJhcnlfQUxJX0RpciB1c2UgRXh0ZXJuYWwoIkxJQlJBUllfRElSIik7CisgIGZvciBMaWJyYXJ5X1ZlcnNpb24gdXNlIEV4dGVybmFsICgiU09OQU1FIik7CisgIGZvciBMaWJyYXJ5X0tpbmQgdXNlIEtpbmQ7CisgIGZvciBMaWJyYXJ5X0RpciB1c2UgRXh0ZXJuYWwoIkJVSUxEX0RJUiIpOworICBTb3VyY2VfRGlyIDo9IEV4dGVybmFsICgiU09VUkNFX0RJUiIpOworICBmb3IgU291cmNlX0RpcnMgdXNlIChTb3VyY2VfRGlyKTsKK2VuZCBMaWJyYXJ5OworQ0ZfRU9GCisJCWNhdCA+PmNvbmZwYWNrYWdlLmFkcyA8PENGX0VPRgorcGFja2FnZSBDb25mUGFja2FnZSBpcworICAgcHJvY2VkdXJlIGNvbmZ0ZXN0OworZW5kIENvbmZQYWNrYWdlOworQ0ZfRU9GCisJCWNhdCA+PmNvbmZwYWNrYWdlLmFkYiA8PENGX0VPRgord2l0aCBUZXh0X0lPOworcGFja2FnZSBib2R5IENvbmZQYWNrYWdlIGlzCisgICBwcm9jZWR1cmUgY29uZnRlc3QgaXMKKyAgIGJlZ2luCisgICAgICBUZXh0X0lPLlB1dCAoIkhlbGxvIFdvcmxkIik7CisgICAgICBUZXh0X0lPLk5ld19MaW5lOworICAgZW5kIGNvbmZ0ZXN0OworZW5kIENvbmZQYWNrYWdlOworQ0ZfRU9GCisJCWlmICggJGNmX2FkYV9tYWtlICRBREFGTEFHUyBcCisJCQkJLVBsaWJyYXJ5LmdwciBcCisJCQkJLVhCVUlMRF9ESVI9YGNkIC4uL2NvbmZ0ZXN0LmJpbjtwd2RgIFwKKwkJCQktWExJQlJBUllfRElSPWBjZCAuLi9jb25mdGVzdC5saWI7cHdkYCBcCisJCQkJLVhTT1VSQ0VfRElSPWBwd2RgIFwKKwkJCQktWFNPTkFNRT1saWJDb25mVGVzdC5zby4xIFwKKwkJCQktWExJQl9LSU5EPXN0YXRpYyAxPiZBQ19GRF9DQyAyPiYxICkgOyB0aGVuCisJCQljZl9nbmF0X3Byb2plY3RzPXllcworCQlmaQorCQljZCAuLgorCQlpZiB0ZXN0IC1mIGNvbmZ0ZXN0LmxpYi9jb25mcGFja2FnZS5hbGkKKwkJdGhlbgorCQkJY2ZfZ25hdF9saWJyYXJpZXM9eWVzCisJCWZpCisJCXJtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKKwkJOzsKKwllc2FjCisJOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoJGNmX2duYXRfcHJvamVjdHMpCitmaSAjIGVuYWJsZV9nbmF0X3Byb2plY3RzCisKK2lmIHRlc3QgJGNmX2duYXRfcHJvamVjdHMgPSB5ZXMKK3RoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgR05BVCBzdXBwb3J0cyBsaWJyYXJpZXMpCisJQUNfTVNHX1JFU1VMVCgkY2ZfZ25hdF9saWJyYXJpZXMpCitmaQorCitpZiB0ZXN0ICIkY2ZfZ25hdF9wcm9qZWN0cyIgPSB5ZXMKK3RoZW4KKwlVU0VfT0xEX01BS0VSVUxFUz0iIyIKKwlVU0VfR05BVF9QUk9KRUNUUz0iIgorZWxzZQorCVVTRV9PTERfTUFLRVJVTEVTPSIiCisJVVNFX0dOQVRfUFJPSkVDVFM9IiMiCitmaQorCitpZiB0ZXN0ICIkY2ZfZ25hdF9saWJyYXJpZXMiID0geWVzCit0aGVuCisJVVNFX0dOQVRfTElCUkFSSUVTPSIiCitlbHNlCisJVVNFX0dOQVRfTElCUkFSSUVTPSIjIgorZmkKKworQUNfU1VCU1QoVVNFX09MRF9NQUtFUlVMRVMpCitBQ19TVUJTVChVU0VfR05BVF9QUk9KRUNUUykKK0FDX1NVQlNUKFVTRV9HTkFUX0xJQlJBUklFUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR05BVF9TSUdJTlQgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDExLzAzLzI3IDIwOjA3OjU5CitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBpZiBnbmF0IHN1cHBvcnRzIFNJR0lOVCwgYW5kIHByZXN1bWFibHkgdGFza2luZy4gIEZvciB0aGUgbGF0dGVyLCBpdAorZG5sIGlzIG5vdGVkIHRoYXQgZ25hdCBtYXkgY29tcGlsZSBhIHRhc2tpbmcgdW5pdCBldmVuIGZvciBjb25maWd1cmF0aW9ucyB3aGljaAorZG5sIGZhaWwgYXQgcnVudGltZS4KK0FDX0RFRlVOKFtDRl9HTkFUX1NJR0lOVF0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgR05BVCBzdXBwb3J0cyBTSUdJTlQsY2ZfY3ZfZ25hdF9zaWdpbnQsWworQ0ZfR05BVF9UUllfTElOSyhbd2l0aCBBZGEuSW50ZXJydXB0cy5OYW1lczsKKworcGFja2FnZSBDb25mVGVzdCBpcworCisgICBwcmFnbWEgV2FybmluZ3MgKE9mZik7ICAtLSAgdGhlIG5leHQgcHJhZ21hIGV4aXN0cyBzaW5jZSAzLjExcAorICAgcHJhZ21hIFVucmVzZXJ2ZV9BbGxfSW50ZXJydXB0czsKKyAgIHByYWdtYSBXYXJuaW5ncyAoT24pOworCisgICBwcm90ZWN0ZWQgUHJvY2VzcyBpcworICAgICAgcHJvY2VkdXJlIFN0b3A7CisgICAgICBmdW5jdGlvbiBDb250aW51ZSByZXR1cm4gQm9vbGVhbjsKKyAgICAgIHByYWdtYSBBdHRhY2hfSGFuZGxlciAoU3RvcCwgQWRhLkludGVycnVwdHMuTmFtZXMuU0lHSU5UKTsKKyAgIHByaXZhdGUKKyAgICAgIERvbmUgOiBCb29sZWFuIDo9IEZhbHNlOworICAgZW5kIFByb2Nlc3M7CisKK2VuZCBDb25mVGVzdDtdLAorW3BhY2thZ2UgYm9keSBDb25mVGVzdCBpcworICAgcHJvdGVjdGVkIGJvZHkgUHJvY2VzcyBpcworICAgICAgcHJvY2VkdXJlIFN0b3AgaXMKKyAgICAgIGJlZ2luCisgICAgICAgICBEb25lIDo9IFRydWU7CisgICAgICBlbmQgU3RvcDsKKyAgICAgIGZ1bmN0aW9uIENvbnRpbnVlIHJldHVybiBCb29sZWFuIGlzCisgICAgICBiZWdpbgorICAgICAgICAgcmV0dXJuIG5vdCBEb25lOworICAgICAgZW5kIENvbnRpbnVlOworICAgZW5kIFByb2Nlc3M7CitlbmQgQ29uZlRlc3Q7XSwKKwlbY2ZfY3ZfZ25hdF9zaWdpbnQ9eWVzXSwKKwlbY2ZfY3ZfZ25hdF9zaWdpbnQ9bm9dKV0pCisKK2lmIHRlc3QgJGNmX2N2X2duYXRfc2lnaW50ID0geWVzIDsgdGhlbgorCVVTRV9HTkFUX1NJR0lOVD0iIgorZWxzZQorCVVTRV9HTkFUX1NJR0lOVD0iIyIKK2ZpCitBQ19TVUJTVChVU0VfR05BVF9TSUdJTlQpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dOQVRfVFJZX0xJTksgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDExLzAzLzE5IDE0OjQ3OjQ1CitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIFZlcmlmeSB0aGF0IGEgdGVzdCBwcm9ncmFtIGNvbXBpbGVzL2xpbmtzIHdpdGggR05BVC4KK2RubCAkY2ZfYWRhX21ha2UgaXMgc2V0IHRvIHRoZSBwcm9ncmFtIHRoYXQgY29tcGlsZXMvbGlua3MKK2RubCAkQURBRkxBR1MgbWF5IGJlIHNldCB0byB0aGUgR05BVCBmbGFncy4KK2RubAorZG5sICQxIGlzIHRoZSB0ZXh0IG9mIHRoZSBzcGVjCitkbmwgJDIgaXMgdGhlIHRleHQgb2YgdGhlIGJvZHkKK2RubCAkMyBpcyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGlmIHN1Y2Nlc3NmdWwKK2RubCAkNCBpcyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGlmIG5vdCBzdWNjZXNzZnVsCitBQ19ERUZVTihbQ0ZfR05BVF9UUllfTElOS10sCitbCitybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCitjYXQgPj5jb25mdGVzdC5hZHMgPDxDRl9FT0YKKyQxCitDRl9FT0YKK2NhdCA+PmNvbmZ0ZXN0LmFkYiA8PENGX0VPRgorJDIKK0NGX0VPRgoraWYgKCAkY2ZfYWRhX21ha2UgJEFEQUZMQUdTIGNvbmZ0ZXN0IDE+JkFDX0ZEX0NDIDI+JjEgKSA7IHRoZW4KK2lmZWxzZSgkMywsICAgICAgOixbICAgICAgJDNdKQoraWZlbHNlKCQ0LCwsW2Vsc2UKKyAgICQ0XSkKK2ZpCitybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dOQVRfVFJZX1JVTiB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTEvMDMvMTkgMTQ6NDc6NDUKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBWZXJpZnkgdGhhdCBhIHRlc3QgcHJvZ3JhbSBjb21waWxlcyBhbmQgcnVucyB3aXRoIEdOQVQKK2RubCAkY2ZfYWRhX21ha2UgaXMgc2V0IHRvIHRoZSBwcm9ncmFtIHRoYXQgY29tcGlsZXMvbGlua3MKK2RubCAkQURBRkxBR1MgbWF5IGJlIHNldCB0byB0aGUgR05BVCBmbGFncy4KK2RubAorZG5sICQxIGlzIHRoZSB0ZXh0IG9mIHRoZSBzcGVjCitkbmwgJDIgaXMgdGhlIHRleHQgb2YgdGhlIGJvZHkKK2RubCAkMyBpcyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGlmIHN1Y2Nlc3NmdWwKK2RubCAkNCBpcyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGlmIG5vdCBzdWNjZXNzZnVsCitBQ19ERUZVTihbQ0ZfR05BVF9UUllfUlVOXSwKK1sKK3JtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKK2NhdCA+PmNvbmZ0ZXN0LmFkcyA8PENGX0VPRgorJDEKK0NGX0VPRgorY2F0ID4+Y29uZnRlc3QuYWRiIDw8Q0ZfRU9GCiskMgorQ0ZfRU9GCitpZiAoICRjZl9hZGFfbWFrZSAkQURBRkxBR1MgY29uZnRlc3QgMT4mQUNfRkRfQ0MgMj4mMSApIDsgdGhlbgorICAgaWYgKCAuL2NvbmZ0ZXN0IDE+JkFDX0ZEX0NDIDI+JjEgKSA7IHRoZW4KK2lmZWxzZSgkMywsICAgICAgOixbICAgICAgJDNdKQoraWZlbHNlKCQ0LCwsWyAgIGVsc2UKKyAgICAgICQ0XSkKKyAgIGZpCitpZmVsc2UoJDQsLCxbZWxzZQorICAgJDRdKQorZmkKK3JtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR05BVF9WRVJTSU9OIHZlcnNpb246IDIwIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBWZXJpZnkgdmVyc2lvbiBvZiBHTkFULgorQUNfREVGVU4oW0NGX0dOQVRfVkVSU0lPTl0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGduYXQgdmVyc2lvbikKK2NmX2duYXRfdmVyc2lvbj1gJHtjZl9hZGFfbWFrZTotZ25hdG1ha2V9IC12IDI+JjEgfCBcCisJZ3JlcCAnW1swLTldXS5bWzAtOV1dW1swLTldXSonIHxcCisJc2VkIC1lICcyLCRkJyAtZSAncy9bW14wLTkgXC5dXS8vZycgLWUgJ3MvXltbIF1dKi8vJyAtZSAncy8gLiovLydgCitBQ19NU0dfUkVTVUxUKCRjZl9nbmF0X3ZlcnNpb24pCisKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuMVtbMS05XV0qfDMuW1syLTldXSp8W1s0LTldXS4qfDIwW1swLTldXVtbMC05XV0pCisJY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzCisJOzsKKygqKQorCUFDX01TR19XQVJOKFVuc3VwcG9ydGVkIEdOQVQgdmVyc2lvbiAkY2ZfZ25hdF92ZXJzaW9uLiBXZSByZXF1aXJlIDMuMTEgb3IgYmV0dGVyLiBEaXNhYmxpbmcgQWRhOTUgYmluZGluZy4pCisJY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm8KKwk7OworZXNhYworXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HTlVfU09VUkNFIHZlcnNpb246IDYgdXBkYXRlZDogMjAwNS8wNy8wOSAxMzoyMzowNworZG5sIC0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBpZiB3ZSBtdXN0IGRlZmluZSBfR05VX1NPVVJDRSB0byBnZXQgYSByZWFzb25hYmxlIHZhbHVlIGZvcgorZG5sIF9YT1BFTl9TT1VSQ0UsIHVwb24gd2hpY2ggbWFueSBQT1NJWCBkZWZpbml0aW9ucyBkZXBlbmQuICBUaGlzIGlzIGEgZGVmZWN0CitkbmwgKG9yIG1pc2ZlYXR1cmUpIG9mIGdsaWJjMiwgd2hpY2ggYnJlYWtzIHBvcnRhYmlsaXR5IG9mIG1hbnkgYXBwbGljYXRpb25zLAorZG5sIHNpbmNlIGl0IGlzIGludGVyd292ZW4gd2l0aCBHTlUgZXh0ZW5zaW9ucy4KK2RubAorZG5sIFdlbGwsIHllcyB3ZSBjb3VsZCB3b3JrIGFyb3VuZCBpdC4uLgorQUNfREVGVU4oW0NGX0dOVV9TT1VSQ0VdLAorWworQUNfQ0FDSEVfQ0hFQ0soaWYgd2UgbXVzdCBkZWZpbmUgX0dOVV9TT1VSQ0UsY2ZfY3ZfZ251X3NvdXJjZSxbCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sWworI2lmbmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCVtjZl9jdl9nbnVfc291cmNlPW5vXSwKKwlbY2Zfc2F2ZT0iJENQUEZMQUdTIgorCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0dOVV9TT1VSQ0UiCisJIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSxbCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwlbY2ZfY3ZfZ251X3NvdXJjZT1ub10sCisJW2NmX2N2X2dudV9zb3VyY2U9eWVzXSkKKwlDUFBGTEFHUz0iJGNmX3NhdmUiCisJXSkKK10pCit0ZXN0ICIkY2ZfY3ZfZ251X3NvdXJjZSIgPSB5ZXMgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9HTlVfU09VUkNFIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9IRUFERVJfUEFUSCB2ZXJzaW9uOiAxMyB1cGRhdGVkOiAyMDE1LzA0LzE1IDE5OjA4OjQ4CitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBDb25zdHJ1Y3QgYSBzZWFyY2gtbGlzdCBvZiBkaXJlY3RvcmllcyBmb3IgYSBub25zdGFuZGFyZCBoZWFkZXItZmlsZQorZG5sCitkbmwgUGFyYW1ldGVycworZG5sCSQxID0gdGhlIHZhcmlhYmxlIHRvIHJldHVybiBhcyByZXN1bHQKK2RubAkkMiA9IHRoZSBwYWNrYWdlIG5hbWUKK0FDX0RFRlVOKFtDRl9IRUFERVJfUEFUSF0sCitbCiskMT0KKworIyBjb2xsZWN0IHRoZSBjdXJyZW50IHNldCBvZiBpbmNsdWRlLWRpcmVjdG9yaWVzIGZyb20gY29tcGlsZXIgZmxhZ3MKK2NmX2hlYWRlcl9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7Q0ZMQUdTfSR7Q1BQRkxBR1N9IiA7IHRoZW4KKwlmb3IgY2ZfaGVhZGVyX3BhdGggaW4gJENQUEZMQUdTICRDRkxBR1MKKwlkbworCQljYXNlICRjZl9oZWFkZXJfcGF0aCBpbgorCQkoLUkqKQorCQkJY2ZfaGVhZGVyX3BhdGg9YGVjaG8gIi4kY2ZfaGVhZGVyX3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvaW5jbHVkZSQsLCdgCisJCQlDRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsaW5jbHVkZSwkY2ZfaGVhZGVyX3BhdGgsTk9ORSkKKwkJCWNmX2hlYWRlcl9wYXRoX2xpc3Q9IiRjZl9oZWFkZXJfcGF0aF9saXN0IFskXSQxIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKKyMgYWRkIHRoZSB2YXJpYXRpb25zIGZvciB0aGUgcGFja2FnZSB3ZSBhcmUgbG9va2luZyBmb3IKK0NGX1NVQkRJUl9QQVRIKCQxLCQyLGluY2x1ZGUpCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgJDE9IlskXSQxICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvJDIgJiYgJDE9IlskXSQxICRpbmNsdWRlZGlyLyQyIgorfQorCit0ZXN0ICIkb2xkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCit0ZXN0ICIkb2xkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAordGVzdCAtZCAiJG9sZGluY2x1ZGVkaXIiICYmIHsKKwl0ZXN0IC1kICRvbGRpbmNsdWRlZGlyICAgICYmICQxPSJbJF0kMSAkb2xkaW5jbHVkZWRpciIKKwl0ZXN0IC1kICRvbGRpbmNsdWRlZGlyLyQyICYmICQxPSJbJF0kMSAkb2xkaW5jbHVkZWRpci8kMiIKK30KKworJDE9IlskXSQxICRjZl9oZWFkZXJfcGF0aF9saXN0IgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9IRUxQX01FU1NBR0UgdmVyc2lvbjogMyB1cGRhdGVkOiAxOTk4LzAxLzE0IDEwOjU2OjIzCitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgSW5zZXJ0IHRleHQgaW50byB0aGUgaGVscC1tZXNzYWdlLCBmb3IgcmVhZGFiaWxpdHksIGZyb20gQUNfQVJHX1dJVEguCitBQ19ERUZVTihbQ0ZfSEVMUF9NRVNTQUdFXSwKK1tBQ19ESVZFUlRfSEVMUChbJDFdKWRubAorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9JTkNMVURFX0RJUlMgdmVyc2lvbjogMTAgdXBkYXRlZDogMjAxNC8wOS8xOSAyMDo1ODo0MgorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBpbmNsdWRlLW9wdGlvbnMgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UncmUgYnVpbGRpbmcKK2RubCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSBvciB1c2luZyAnLS1zcmNkaXI9RElSJyBvcHRpb24uCitBQ19ERUZVTihbQ0ZfSU5DTFVERV9ESVJTXSwKK1sKK2lmIHRlc3QgIiRzcmNkaXIiICE9ICIuIjsgdGhlbgorCUNQUEZMQUdTPSItSVwke3NyY2Rpcn0vLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCitmaQorQ1BQRkxBR1M9Ii1JLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCitpZiB0ZXN0ICIkc3JjZGlyIiAhPSAiLiI7IHRoZW4KKwlDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9ICRDUFBGTEFHUyIKK2ZpCitDUFBGTEFHUz0iLUkuICRDUFBGTEFHUyIKK0FDX1NVQlNUKENQUEZMQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9JTlRFTF9DT01QSUxFUiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHRoZSBnaXZlbiBjb21waWxlciBpcyByZWFsbHkgdGhlIEludGVsIGNvbXBpbGVyIGZvciBMaW51eC4gIEl0CitkbmwgdHJpZXMgdG8gaW1pdGF0ZSBnY2MsIGJ1dCBkb2VzIG5vdCByZXR1cm4gYW4gZXJyb3Igd2hlbiBpdCBmaW5kcyBhIG1pc21hdGNoCitkbmwgYmV0d2VlbiBwcm90b3R5cGVzLCBlLmcuLCBhcyBleGVyY2lzZWQgYnkgQ0ZfTUlTU0lOR19DSEVDSy4KK2RubAorZG5sIFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJ1biAic29vbiIgYWZ0ZXIgQUNfUFJPR19DQyBvciBBQ19QUk9HX0NQTFVTUExVUywgdG8KK2RubCBlbnN1cmUgdGhhdCBpdCBpcyBub3QgbWlzdGFrZW4gZm9yIGdjYy9nKysuICBJdCBpcyBub3JtYWxseSBpbnZva2VkIGZyb20KK2RubCB0aGUgd3JhcHBlcnMgZm9yIGdjYyBhbmQgZysrIHdhcm5pbmdzLgorZG5sCitkbmwgJDEgPSBHQ0MgKGRlZmF1bHQpIG9yIEdYWAorZG5sICQyID0gSU5URUxfQ09NUElMRVIgKGRlZmF1bHQpIG9yIElOVEVMX0NQTFVTUExVUworZG5sICQzID0gQ0ZMQUdTIChkZWZhdWx0KSBvciBDWFhGTEFHUworQUNfREVGVU4oW0NGX0lOVEVMX0NPTVBJTEVSXSxbCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCitpZmVsc2UoWyQyXSwsSU5URUxfQ09NUElMRVIsWyQyXSk9bm8KKworaWYgdGVzdCAiJGlmZWxzZShbJDFdLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgorCWNhc2UgJGhvc3Rfb3MgaW4KKwkobGludXgqfGdudSopCisJCUFDX01TR19DSEVDS0lORyhpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBpZmVsc2UoWyQxXSxHWFgsQysrLEMpIGNvbXBpbGVyKQorCQljZl9zYXZlX0NGTEFHUz0iJGlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSkiCisJCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pIC1uby1nY2MiCisJCUFDX1RSWV9DT01QSUxFKFtdLFsKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCitdLFtpZmVsc2UoWyQyXSwsSU5URUxfQ09NUElMRVIsWyQyXSk9eWVzCitjZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC13ZTE0NyIKK10sW10pCisJCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRjZl9zYXZlX0NGTEFHUyIKKwkJQUNfTVNHX1JFU1VMVCgkaWZlbHNlKFskMl0sLElOVEVMX0NPTVBJTEVSLFskMl0pKQorCQk7OworCWVzYWMKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0xBUkdFRklMRSB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBBZGQgY2hlY2tzIGZvciBsYXJnZSBmaWxlIHN1cHBvcnQuCitBQ19ERUZVTihbQ0ZfTEFSR0VGSUxFXSxbCitpZmRlZihbQUNfRlVOQ19GU0VFS09dLFsKKwlBQ19TWVNfTEFSR0VGSUxFCisJaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vIDsgdGhlbgorCUFDX0ZVTkNfRlNFRUtPCisKKwkjIE5vcm1hbGx5IHdlIHdvdWxkIGNvbGxlY3QgdGhlc2UgZGVmaW5pdGlvbnMgaW4gdGhlIGNvbmZpZy5oLAorCSMgYnV0IChsaWtlIF9YT1BFTl9TT1VSQ0UpLCBzb21lIGVudmlyb25tZW50cyByZWx5IG9uIGhhdmluZyB0aGVzZQorCSMgZGVmaW5lZCBiZWZvcmUgYW55IG9mIHRoZSBzeXN0ZW0gaGVhZGVycyBhcmUgaW5jbHVkZWQuICBBbm90aGVyCisJIyBjYXNlIGNvbWVzIHVwIHdpdGggQysrLCBlLmcuLCBvbiBBSVggdGhlIGNvbXBpbGVyIGNvbXBpbGVzIHRoZQorCSMgaGVhZGVyIGZpbGVzIGJ5IHRoZW1zZWx2ZXMgYmVmb3JlIGxvb2tpbmcgYXQgdGhlIGJvZHkgZmlsZXMgaXQgaXMKKwkjIHRvbGQgdG8gY29tcGlsZS4gIEZvciBuY3Vyc2VzLCB0aG9zZSBoZWFkZXIgZmlsZXMgZG8gbm90IGluY2x1ZGUKKwkjIHRoZSBjb25maWcuaAorCXRlc3QgIiRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiICAgICAgIT0gbm8gJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9MQVJHRV9GSUxFUyAiCisJdGVzdCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0xBUkdFRklMRV9TT1VSQ0UgIgorCXRlc3QgIiRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgIT0gbm8gJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9GSUxFX09GRlNFVF9CSVRTPSRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyAiCisKKwlBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRvIHVzZSBzdHJ1Y3QgZGlyZW50NjQsIGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCxbCisJCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKwkJXSxbCisJCS8qIGlmIHRyYW5zaXRpb25hbCBsYXJnZWZpbGUgc3VwcG9ydCBpcyBzZXR1cCwgdGhpcyBpcyB0cnVlICovCisJCWV4dGVybiBzdHJ1Y3QgZGlyZW50NjQgKiByZWFkZGlyKERJUiAqKTsKKwkJc3RydWN0IGRpcmVudDY0ICp4ID0gcmVhZGRpcigoRElSICopMCk7CisJCXN0cnVjdCBkaXJlbnQgKnkgPSByZWFkZGlyKChESVIgKikwKTsKKwkJaW50IHogPSB4IC0geTsKKwkJXSwKKwkJW2NmX2N2X3N0cnVjdF9kaXJlbnQ2ND15ZXNdLAorCQlbY2ZfY3Zfc3RydWN0X2RpcmVudDY0PW5vXSkKKwldKQorCXRlc3QgIiRjZl9jdl9zdHJ1Y3RfZGlyZW50NjQiID0geWVzICYmIEFDX0RFRklORShIQVZFX1NUUlVDVF9ESVJFTlQ2NCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHN0cnVjdCBkaXJlbnQ2NF0pCisJZmkKK10pCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0xEX1JQQVRIX09QVCB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBGb3IgdGhlIGdpdmVuIHN5c3RlbSBhbmQgY29tcGlsZXIsIGZpbmQgdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHBhc3MgdG8gdGhlCitkbmwgbG9hZGVyIHRvIHVzZSB0aGUgInJwYXRoIiBmZWF0dXJlLgorQUNfREVGVU4oW0NGX0xEX1JQQVRIX09QVF0sCitbCitBQ19SRVFVSVJFKFtDRl9DSEVDS19DQUNIRV0pCisKK0xEX1JQQVRIX09QVD0KK0FDX01TR19DSEVDS0lORyhmb3IgYW4gcnBhdGggb3B0aW9uKQorY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKyhpcml4KikKKwlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCWVsc2UKKwkJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCWZpCisJOzsKKyhsaW51eCp8Z251KnxrKmJzZCotZ251KQorCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJOzsKKyhvcGVuYnNkW1syLTldXS4qfG1pcmJzZCopCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKGRyYWdvbmZseSp8ZnJlZWJzZCopCisJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCTs7CisobmV0YnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7Cisob3NmKnxtbHMrKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhzb2xhcmlzMiopCisJTERfUlBBVEhfT1BUPSItUiIKKwk7OworKCopCisJOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoJExEX1JQQVRIX09QVCkKKworY2FzZSAieCRMRF9SUEFUSF9PUFQiIGluCisoeC1SKikKKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgbmVlZCBhIHNwYWNlIGFmdGVyIHJwYXRoIG9wdGlvbikKKwljZl9zYXZlX0xJQlM9IiRMSUJTIgorCUNGX0FERF9MSUJTKCR7TERfUlBBVEhfT1BUfSRsaWJkaXIpCisJQUNfVFJZX0xJTksoLCAsIGNmX3JwYXRoX3NwYWNlPW5vLCBjZl9ycGF0aF9zcGFjZT15ZXMpCisJTElCUz0iJGNmX3NhdmVfTElCUyIKKwlBQ19NU0dfUkVTVUxUKCRjZl9ycGF0aF9zcGFjZSkKKwl0ZXN0ICIkY2ZfcnBhdGhfc3BhY2UiID0geWVzICYmIExEX1JQQVRIX09QVD0iJExEX1JQQVRIX09QVCAiCisJOzsKK2VzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTElCUkFSWV9QQVRIIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDb25zdHJ1Y3QgYSBzZWFyY2gtbGlzdCBvZiBkaXJlY3RvcmllcyBmb3IgYSBub25zdGFuZGFyZCBsaWJyYXJ5LWZpbGUKK2RubAorZG5sIFBhcmFtZXRlcnMKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCitBQ19ERUZVTihbQ0ZfTElCUkFSWV9QQVRIXSwKK1sKKyQxPQorY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7TERGTEFHU30ke0xJQlN9IiA7IHRoZW4KKwlmb3IgY2ZfbGlicmFyeV9wYXRoIGluICRMREZMQUdTICRMSUJTCisJZG8KKwkJY2FzZSAkY2ZfbGlicmFyeV9wYXRoIGluCisJCSgtTCopCisJCQljZl9saWJyYXJ5X3BhdGg9YGVjaG8gIi4kY2ZfbGlicmFyeV9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2xpYiQsLCdgCisJCQlDRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsbGliLCRjZl9saWJyYXJ5X3BhdGgsTk9ORSkKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgWyRdJDEiCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworQ0ZfU1VCRElSX1BBVEgoJDEsJDIsbGliKQorCiskMT0iJGNmX2xpYnJhcnlfcGF0aF9saXN0IFskXSQxIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9MSUJfUFJFRklYIHZlcnNpb246IDExIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQ29tcHV0ZSB0aGUgbGlicmFyeS1wcmVmaXggZm9yIHRoZSBnaXZlbiBob3N0IHN5c3RlbQorZG5sICQxID0gdmFyaWFibGUgdG8gc2V0CitkZWZpbmUoW0NGX0xJQl9QUkVGSVhdLAorWworCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKE9TLzIqfG9zMiopCisJCUxJQl9QUkVGSVg9JycKKwkJOzsKKwkoKikJTElCX1BSRUZJWD0nbGliJworCQk7OworCWVzYWMKK2lmZWxzZSgkMSwsLFskMT0kTElCX1BSRUZJWF0pCisJQUNfU1VCU1QoTElCX1BSRUZJWCkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTElCX1NVRkZJWCB2ZXJzaW9uOiAyNSB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLQorZG5sIENvbXB1dGUgdGhlIGxpYnJhcnkgZmlsZS1zdWZmaXggZnJvbSB0aGUgZ2l2ZW4gbW9kZWwgbmFtZQorZG5sICQxID0gbW9kZWwgbmFtZQorZG5sICQyID0gdmFyaWFibGUgdG8gc2V0ICh0aGUgbm9taW5hbCBsaWJyYXJ5IHN1ZmZpeCkKK2RubCAkMyA9IGRlcGVuZGVuY3kgdmFyaWFibGUgdG8gc2V0IChhY3R1YWwgZmlsZW5hbWUpCitkbmwgVGhlIHZhcmlhYmxlICRMSUJfU1VGRklYLCBpZiBzZXQsIHByZXBlbmRzIHRoZSB2YXJpYWJsZSB0byBzZXQuCitBQ19ERUZVTihbQ0ZfTElCX1NVRkZJWF0sCitbCisJY2FzZSBYJDEgaW4KKwkoWGxpYnRvb2wpCisJCSQyPScubGEnCisJCSQzPVskXSQyCisJCTs7CisJKFhkZWJ1ZykKKwkJJDI9J19nLmEnCisJCSQzPVskXSQyCisJCTs7CisJKFhwcm9maWxlKQorCQkkMj0nX3AuYScKKwkJJDM9WyRdJDIKKwkJOzsKKwkoWHNoYXJlZCkKKwkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkJKGFpeFtbNS03XV0qKQorCQkJJDI9Jy5zbycKKwkJCSQzPVskXSQyCisJCQk7OworCQkoY3lnd2luKnxtc3lzKnxtaW5ndyopCisJCQkkMj0nLmRsbCcKKwkJCSQzPScuZGxsLmEnCisJCQk7OworCQkoZGFyd2luKikKKwkJCSQyPScuZHlsaWInCisJCQkkMz1bJF0kMgorCQkJOzsKKwkJKGhwdXgqKQorCQkJY2FzZSAkdGFyZ2V0IGluCisJCQkoaWE2NCopCisJCQkJJDI9Jy5zbycKKwkJCQkkMz1bJF0kMgorCQkJCTs7CisJCQkoKikKKwkJCQkkMj0nLnNsJworCQkJCSQzPVskXSQyCisJCQkJOzsKKwkJCWVzYWMKKwkJCTs7CisJCSgqKQorCQkJJDI9Jy5zbycKKwkJCSQzPVskXSQyCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCSQyPScuYScKKwkJJDM9WyRdJDIKKwkJOzsKKwllc2FjCisJaWYgdGVzdCAtbiAiJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSIKKwl0aGVuCisJCSQyPSIke0xJQl9TVUZGSVh9JHtFWFRSQV9TVUZGSVh9WyRdeyQyfSIKKwkJJDM9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH1bJF17JDN9IgorCWZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0xJQl9UWVBFIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tCitkbmwgQ29tcHV0ZSB0aGUgc3RyaW5nIHRvIGFwcGVuZCB0byAtbGlicmFyeSBmcm9tIHRoZSBnaXZlbiBtb2RlbCBuYW1lCitkbmwgJDEgPSBtb2RlbCBuYW1lCitkbmwgJDIgPSB2YXJpYWJsZSB0byBzZXQKK2RubCBUaGUgdmFyaWFibGUgJExJQl9TVUZGSVgsIGlmIHNldCwgcHJlcGVuZHMgdGhlIHZhcmlhYmxlIHRvIHNldC4KK0FDX0RFRlVOKFtDRl9MSUJfVFlQRV0sCitbCisJY2FzZSAkMSBpbgorCShsaWJ0b29sKSAkMj0nJyAgIDs7CisJKG5vcm1hbCkgICQyPScnICAgOzsKKwkoZGVidWcpICAgJDI9J19nJyA7OworCShwcm9maWxlKSAkMj0nX3AnIDs7CisJKHNoYXJlZCkgICQyPScnICAgOzsKKwllc2FjCisJdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmICQyPSIke0xJQl9TVUZGSVh9WyRdeyQyfSIKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTElOS19EQVRBT05MWSB2ZXJzaW9uOiAxMCB1cGRhdGVkOiAyMDEyLzEwLzA2IDE3OjQxOjUxCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNvbWUgc3lzdGVtcyBoYXZlIGEgbm9uLUFOU0kgbGlua2VyIHRoYXQgZG9lc24ndCBwdWxsIGluIG1vZHVsZXMgdGhhdCBoYXZlCitkbmwgb25seSBkYXRhIChpLmUuLCBubyBmdW5jdGlvbnMpLCBmb3IgZXhhbXBsZSBOZVhULiAgT24gdGhvc2Ugc3lzdGVtcyB3ZSdsbAorZG5sIGhhdmUgdG8gcHJvdmlkZSB3cmFwcGVycyBmb3IgZ2xvYmFsIHRhYmxlcyB0byBlbnN1cmUgdGhleSdyZSBsaW5rZWQKK2RubCBwcm9wZXJseS4KK0FDX0RFRlVOKFtDRl9MSU5LX0RBVEFPTkxZXSwKK1sKK0FDX01TR19DSEVDS0lORyhbaWYgZGF0YS1vbmx5IGxpYnJhcnkgbW9kdWxlIGxpbmtzXSkKK0FDX0NBQ0hFX1ZBTChjZl9jdl9saW5rX2RhdGFvbmx5LFsKKwlybSAtZiBjb25mdGVzdC5hCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKK2ludAl0ZXN0ZGF0YVtbM11dID0geyAxMjMsIDQ1NiwgNzg5IH07CitFT0YKKwlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSA7IHRoZW4KKwkJbXYgY29uZnRlc3QubyBkYXRhLm8gJiYgXAorCQkoICRBUiAkQVJGTEFHUyBjb25mdGVzdC5hIGRhdGEubyApIDI+JkFDX0ZEX0NDIDE+L2Rldi9udWxsCisJZmkKKwlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGRhdGEubworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCitpbnQJdGVzdGZ1bmMoKQoreworI2lmIGRlZmluZWQoTmVYVCkKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDEpOwkvKiBJJ20gdG9sZCB0aGlzIGxpbmtlciBpcyBicm9rZW4gKi8KKyNlbHNlCisJZXh0ZXJuIGludCB0ZXN0ZGF0YVtbM11dOworCXJldHVybiB0ZXN0ZGF0YVtbMF1dID09IDEyMworCSAgICYmICB0ZXN0ZGF0YVtbMV1dID09IDQ1NgorCSAgICYmICB0ZXN0ZGF0YVtbMl1dID09IDc4OTsKKyNlbmRpZgorfQorRU9GCisJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKwkJbXYgY29uZnRlc3QubyBmdW5jLm8gJiYgXAorCQkoICRBUiAkQVJGTEFHUyBjb25mdGVzdC5hIGZ1bmMubyApIDI+JkFDX0ZEX0NDIDE+L2Rldi9udWxsCisJZmkKKwlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGZ1bmMubworCSggZXZhbCAkUkFOTElCIGNvbmZ0ZXN0LmEgKSAyPiZBQ19GRF9DQyA+L2Rldi9udWxsCisJY2Zfc2F2ZUxJQlM9IiRMSUJTIgorCUxJQlM9ImNvbmZ0ZXN0LmEgJExJQlMiCisJQUNfVFJZX1JVTihbCisJaW50IG1haW4oKQorCXsKKwkJZXh0ZXJuIGludCB0ZXN0ZnVuYygpOworCQkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59ICghdGVzdGZ1bmMoKSk7CisJfQorCV0sCisJW2NmX2N2X2xpbmtfZGF0YW9ubHk9eWVzXSwKKwlbY2ZfY3ZfbGlua19kYXRhb25seT1ub10sCisJW2NmX2N2X2xpbmtfZGF0YW9ubHk9dW5rbm93bl0pCisJTElCUz0iJGNmX3NhdmVMSUJTIgorCV0pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9saW5rX2RhdGFvbmx5KQorCitpZiB0ZXN0ICIkY2ZfY3ZfbGlua19kYXRhb25seSIgPSBubyA7IHRoZW4KKwlBQ19ERUZJTkUoQlJPS0VOX0xJTktFUiwxLFtpZiBkYXRhLW9ubHkgbGlicmFyeSBtb2R1bGUgZG9lcyBub3QgbGlua10pCisJQlJPS0VOX0xJTktFUj0xCitmaQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX01BS0VGTEFHUyB2ZXJzaW9uOiAxNyB1cGRhdGVkOiAyMDE1LzA4LzA1IDIwOjQ0OjI4CitkbmwgLS0tLS0tLS0tLS0tCitkbmwgU29tZSAnbWFrZScgcHJvZ3JhbXMgc3VwcG9ydCAke01BS0VGTEFHU30sIHNvbWUgJHtNRkxBR1N9LCB0byBwYXNzICdtYWtlJworZG5sIG9wdGlvbnMgdG8gbG93ZXItbGV2ZWxzLiAgSXQncyB2ZXJ5IHVzZWZ1bCBmb3IgIm1ha2UgLW4iIC0tIGlmIHdlIGhhdmUgaXQuCitkbmwgKEdOVSAnbWFrZScgZG9lcyBib3RoLCBzb21ldGhpbmcgUE9TSVggJ21ha2UnLCB3aGljaCBoYXBwZW5zIHRvIG1ha2UgdGhlCitkbmwgJHtNQUtFRkxBR1N9IHZhcmlhYmxlIGluY29tcGF0aWJsZSBiZWNhdXNlIGl0IGFkZHMgdGhlIGFzc2lnbm1lbnRzIDotKQorQUNfREVGVU4oW0NGX01BS0VGTEFHU10sCitbCitBQ19DQUNIRV9DSEVDSyhmb3IgbWFrZWZsYWdzIHZhcmlhYmxlLCBjZl9jdl9tYWtlZmxhZ3MsWworCWNmX2N2X21ha2VmbGFncz0nJworCWZvciBjZl9vcHRpb24gaW4gJy0ke01BS0VGTEFHU30nICcke01GTEFHU30nCisJZG8KKwkJY2F0ID5jZl9tYWtlZmxhZ3MudG1wIDw8Q0ZfRU9GCitTSEVMTCA9ICRTSEVMTAorYWxsIDoKKwlAIGVjaG8gJy4kY2Zfb3B0aW9uJworQ0ZfRU9GCisJCWNmX3Jlc3VsdD1gJHtNQUtFOi1tYWtlfSAtayAtZiBjZl9tYWtlZmxhZ3MudG1wIDI+L2Rldi9udWxsIHwgZmdyZXAgLXYgImluZyBkaXJlY3RvcnkiIHwgc2VkIC1lICdzLFtbIAldXSokLCwnYAorCQljYXNlICIkY2ZfcmVzdWx0IiBpbgorCQkoLiprfC4qa3cpCisJCQljZl9yZXN1bHQ9YCR7TUFLRTotbWFrZX0gLWsgLWYgY2ZfbWFrZWZsYWdzLnRtcCBDQz1jYyAyPi9kZXYvbnVsbGAKKwkJCWNhc2UgIiRjZl9yZXN1bHQiIGluCisJCQkoLipDQz0qKQljZl9jdl9tYWtlZmxhZ3M9CisJCQkJOzsKKwkJCSgqKQljZl9jdl9tYWtlZmxhZ3M9JGNmX29wdGlvbgorCQkJCTs7CisJCQllc2FjCisJCQlicmVhaworCQkJOzsKKwkJKC4tKQk7OworCQkoKikJZWNobyAiZ2l2ZW4gb3B0aW9uIFwiJGNmX29wdGlvblwiLCBubyBtYXRjaCBcIiRjZl9yZXN1bHRcIiIKKwkJCTs7CisJCWVzYWMKKwlkb25lCisJcm0gLWYgY2ZfbWFrZWZsYWdzLnRtcAorXSkKKworQUNfU1VCU1QoY2ZfY3ZfbWFrZWZsYWdzKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9NQUtFX1RBR1MgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDEwLzEwLzIzIDE1OjUyOjMyCitkbmwgLS0tLS0tLS0tLS0tCitkbmwgR2VuZXJhdGUgdGFncy9UQUdTIHRhcmdldHMgZm9yIG1ha2VmaWxlcy4gIERvIG5vdCBnZW5lcmF0ZSBUQUdTIGlmIHdlIGhhdmUKK2RubCBhIG1vbm9jYXNlIGZpbGVzeXN0ZW0uCitBQ19ERUZVTihbQ0ZfTUFLRV9UQUdTXSxbCitBQ19SRVFVSVJFKFtDRl9NSVhFRENBU0VfRklMRU5BTUVTXSkKKworQUNfQ0hFQ0tfUFJPR1MoQ1RBR1MsIGV4Y3RhZ3MgY3RhZ3MpCitBQ19DSEVDS19QUk9HUyhFVEFHUywgZXhldGFncyBldGFncykKKworQUNfQ0hFQ0tfUFJPRyhNQUtFX0xPV0VSX1RBR1MsICR7Q1RBR1M6LWN0YWdzfSwgeWVzLCBubykKKworaWYgdGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgOyB0aGVuCisJQUNfQ0hFQ0tfUFJPRyhNQUtFX1VQUEVSX1RBR1MsICR7RVRBR1M6LWV0YWdzfSwgeWVzLCBubykKK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9bm8KK2ZpCisKK2lmIHRlc3QgIiRNQUtFX1VQUEVSX1RBR1MiID0geWVzIDsgdGhlbgorCU1BS0VfVVBQRVJfVEFHUz0KK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9IiMiCitmaQorCitpZiB0ZXN0ICIkTUFLRV9MT1dFUl9UQUdTIiA9IHllcyA7IHRoZW4KKwlNQUtFX0xPV0VSX1RBR1M9CitlbHNlCisJTUFLRV9MT1dFUl9UQUdTPSIjIgorZmkKKworQUNfU1VCU1QoQ1RBR1MpCitBQ19TVUJTVChFVEFHUykKKworQUNfU1VCU1QoTUFLRV9VUFBFUl9UQUdTKQorQUNfU1VCU1QoTUFLRV9MT1dFUl9UQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9NSVhFRENBU0VfRklMRU5BTUVTIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBpZiB0aGUgZmlsZS1zeXN0ZW0gc3VwcG9ydHMgbWl4ZWQtY2FzZSBmaWxlbmFtZXMuICBJZiB3ZSdyZSBhYmxlIHRvCitkbmwgY3JlYXRlIGEgbG93ZXJjYXNlIG5hbWUgYW5kIHNlZSBpdCBhcyB1cHBlcmNhc2UsIGl0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LgorQUNfREVGVU4oW0NGX01JWEVEQ0FTRV9GSUxFTkFNRVNdLAorWworQUNfQ0FDSEVfQ0hFQ0soaWYgZmlsZXN5c3RlbSBzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcyxjZl9jdl9taXhlZGNhc2UsWworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgOyB0aGVuCisJY2FzZSAkdGFyZ2V0X2FsaWFzIGluCisJKCotb3MyLWVteCp8Ki1tc2Rvc2RqZ3BwKnwqLWN5Z3dpbip8Ki1tc3lzKnwqLW1pbmd3KnwqLXV3aW4qKQorCQljZl9jdl9taXhlZGNhc2U9bm8KKwkJOzsKKwkoKikKKwkJY2ZfY3ZfbWl4ZWRjYXNlPXllcworCQk7OworCWVzYWMKK2Vsc2UKKwlybSAtZiBjb25mdGVzdCBDT05GVEVTVAorCWVjaG8gdGVzdCA+Y29uZnRlc3QKKwlpZiB0ZXN0IC1mIENPTkZURVNUIDsgdGhlbgorCQljZl9jdl9taXhlZGNhc2U9bm8KKwllbHNlCisJCWNmX2N2X21peGVkY2FzZT15ZXMKKwlmaQorCXJtIC1mIGNvbmZ0ZXN0IENPTkZURVNUCitmaQorXSkKK3Rlc3QgIiRjZl9jdl9taXhlZGNhc2UiID0geWVzICYmIEFDX0RFRklORShNSVhFRENBU0VfRklMRU5BTUVTLDEsW0RlZmluZSB0byAxIGlmIGZpbGVzeXN0ZW0gc3VwcG9ydHMgbWl4ZWQtY2FzZSBmaWxlbmFtZXMuXSkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTUtTVEVNUCB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTIvMTAvMDMgMDQ6MzQ6NDkKK2RubCAtLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGEgd29ya2luZyBta3N0ZW1wLiAgVGhpcyBjcmVhdGVzIHR3byBmaWxlcywgY2hlY2tzIHRoYXQgdGhleSBhcmUKK2RubCBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgZGlzdGluY3QgKEFtaWdhT1MgYXBwYXJlbnRseSBmYWlscyBvbiB0aGUgbGFzdCkuCitBQ19ERUZVTihbQ0ZfTUtTVEVNUF0sWworQUNfQ0FDSEVfQ0hFQ0soZm9yIHdvcmtpbmcgbWtzdGVtcCwgY2ZfY3ZfZnVuY19ta3N0ZW1wLFsKK3JtIC1yZiBjb25mdGVzdCoKK0FDX1RSWV9SVU4oWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KK2ludCBtYWluKCkKK3sKKwljaGFyICp0bXBsID0gImNvbmZ0ZXN0WFhYWFhYIjsKKwljaGFyIG5hbWVbMl1bODBdOworCWludCBuOworCWludCByZXN1bHQgPSAwOworCWludCBmZDsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKworCXVtYXNrKDA3Nyk7CisJZm9yIChuID0gMDsgbiA8IDI7ICsrbikgeworCQlzdHJjcHkobmFtZVtuXSwgdG1wbCk7CisJCWlmICgoZmQgPSBta3N0ZW1wKG5hbWVbbl0pKSA+PSAwKSB7CisJCQlpZiAoIXN0cmNtcChuYW1lW25dLCB0bXBsKQorCQkJIHx8IHN0YXQobmFtZVtuXSwgJnNiKSAhPSAwCisJCQkgfHwgKHNiLnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUcKKwkJCSB8fCAoc2Iuc3RfbW9kZSAmIDA3NykgIT0gMCkgeworCQkJCXJlc3VsdCA9IDE7CisJCQl9CisJCQljbG9zZShmZCk7CisJCX0KKwl9CisJaWYgKHJlc3VsdCA9PSAwCisJICYmICFzdHJjbXAobmFtZVswXSwgbmFtZVsxXSkpCisJCXJlc3VsdCA9IDE7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShyZXN1bHQpOworfQorXSxbY2ZfY3ZfZnVuY19ta3N0ZW1wPXllcworXSxbY2ZfY3ZfZnVuY19ta3N0ZW1wPW5vCitdLFtjZl9jdl9mdW5jX21rc3RlbXA9bWF5YmVdKQorXSkKK2lmIHRlc3QgIngkY2ZfY3ZfZnVuY19ta3N0ZW1wIiA9IHhtYXliZSA7IHRoZW4KKwlBQ19DSEVDS19GVU5DKG1rc3RlbXApCitmaQoraWYgdGVzdCAieCRjZl9jdl9mdW5jX21rc3RlbXAiID0geHllcyB8fCB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWtzdGVtcCIgPSB4eWVzIDsgdGhlbgorCUFDX0RFRklORShIQVZFX01LU1RFTVAsMSxbRGVmaW5lIHRvIDEgaWYgbWtzdGVtcCgpIGlzIGF2YWlsYWJsZSBhbmQgd29ya2luZy5dKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTVNHX0xPRyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTAvMTAvMjMgMTU6NTI6MzIKK2RubCAtLS0tLS0tLS0tCitkbmwgV3JpdGUgYSBkZWJ1ZyBtZXNzYWdlIHRvIGNvbmZpZy5sb2csIGFsb25nIHdpdGggdGhlIGxpbmUgbnVtYmVyIGluIHRoZQorZG5sIGNvbmZpZ3VyZSBzY3JpcHQuCitBQ19ERUZVTihbQ0ZfTVNHX0xPR10sWworZWNobyAiJHthc19tZTotY29uZmlndXJlfTpfX29saW5lX186IHRlc3RpbmcgJCogLi4uIiAxPiZBQ19GRF9DQworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9OQ1VSU0VTX0FERE9OIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNC8yNiAxODowNjo1OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBDb25maWd1cmUgYW4gbmN1cnNlcyBhZGQtb24sIGJ1aWx0IG91dHNpZGUgdGhlIG5jdXJzZXMgdHJlZS4KK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX0FERE9OXSxbCitBQ19SRVFVSVJFKFtDRl9OQ1VSU0VTX0NPTkZJR10pCisKK0FDX1BST1ZJREUoW0NGX1NVQlNUX05DVVJTRVNfVkVSU0lPTl0pCisKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB3aWRlLWNoYXJhY3RlciBjb2RlKQorQUNfQVJHX0VOQUJMRSh3aWRlYywKKwlbICAtLWVuYWJsZS13aWRlYyAgICAgICAgICBjb21waWxlIHdpdGggd2lkZS1jaGFyL1VURi04IGNvZGVdLAorCVt3aXRoX3dpZGVjPSRlbmFibGV2YWxdLAorCVt3aXRoX3dpZGVjPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfd2lkZWMpCitpZiB0ZXN0ICIkd2l0aF93aWRlYyIgPSB5ZXMgOyB0aGVuCisJQ0ZfVVRGOF9MSUIKKwlDRl9OQ1VSU0VTX0NPTkZJRyhuY3Vyc2VzdykKK2Vsc2UKKwlDRl9OQ1VSU0VTX0NPTkZJRyhuY3Vyc2VzKQorZmkKKworaWYgdGVzdCAiJE5DVVJTRVNfQ09ORklHX1BLRyIgIT0gbm9uZSA7IHRoZW4KKwljZl92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gJE5DVVJTRVNfQ09ORklHX1BLRyAyPi9kZXYvbnVsbGAKKworCU5DVVJTRVNfTUFKT1I9YGVjaG8gIiRjZl92ZXJzaW9uIiB8IHNlZCAtZSAncy9cLi4qLy8nYAorCU5DVVJTRVNfTUlOT1I9YGVjaG8gIiRjZl92ZXJzaW9uIiB8IHNlZCAtZSAncy9eW1swLTldXVtbMC05XV0qXC4vLycgLWUgJ3MvXC4uKi8vJ2AKKwlOQ1VSU0VTX1BBVENIPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXltbMC05XV1bWzAtOV1dKlwuW1swLTldXVtbMC05XV0qXC4vLydgCisKKwljZl9jdl9hYmlfdmVyc2lvbj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hYmlfdmVyc2lvbiAkTkNVUlNFU19DT05GSUdfUEtHIDI+L2Rldi9udWxsYAorCWlmIHRlc3QgLXogIiRjZl9jdl9hYmlfdmVyc2lvbiIKKwl0aGVuCisJCWNmX2N2X2FiaV92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1ham9yX3ZlcnNpb24gJE5DVVJTRVNfQ09ORklHX1BLRyAyPi9kZXYvbnVsbGAKKwlmaQorCitlbGlmIHRlc3QgIiROQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworCWNmX3ZlcnNpb249YCROQ1VSU0VTX0NPTkZJRyAtLXZlcnNpb24gMj4vZGV2L251bGxgCisKKwlOQ1VSU0VTX01BSk9SPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXC4uKi8vJ2AKKwlOQ1VSU0VTX01JTk9SPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXltbMC05XV1bWzAtOV1dKlwuLy8nIC1lICdzL1wuLiovLydgCisJTkNVUlNFU19QQVRDSD1gZWNobyAiJGNmX3ZlcnNpb24iIHwgc2VkIC1lICdzL15bWzAtOV1dW1swLTldXSpcLltbMC05XV1bWzAtOV1dKlwuLy8nYAorCisJIyBBQkkgdmVyc2lvbiBpcyBub3QgYXZhaWxhYmxlIGZyb20gaGVhZGVycworCWNmX2N2X2FiaV92ZXJzaW9uPWAkTkNVUlNFU19DT05GSUcgLS1hYmktdmVyc2lvbiAyPi9kZXYvbnVsbGAKKworZWxzZQorCisJZm9yIGNmX25hbWUgaW4gTUFKT1IgTUlOT1IgUEFUQ0gKKwlkbworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgorCSNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisJQVVUT0NPTkZfJGNmX25hbWUgTkNVUlNFU19WRVJTSU9OXyRjZl9uYW1lCitDRl9FT0YKKwkJY2ZfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgMj4mNSB8IGZncmVwIEFVVE9DT05GXyRjZl9uYW1lID5jb25mdGVzdC5vdXQiCisJCUFDX1RSWV9FVkFMKGNmX3RyeSkKKwkJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCQljZl9yZXN1bHQ9YGNhdCBjb25mdGVzdC5vdXQgfCBzZWQgLWUgInMvXi4qQVVUT0NPTkZfJGNmX25hbWVbWyAJXV1bWyAJXV0qLy8iYAorCQkJZXZhbCBOQ1VSU0VTXyRjZl9uYW1lPVwiJGNmX3Jlc3VsdFwiCisJCQkjIGNhdCBjb25mdGVzdC4kYWNfZXh0CisJCQkjIGNhdCBjb25mdGVzdC5vdXQKKwkJZmkKKwlkb25lCisKKwljZl9jdl9hYmlfdmVyc2lvbj0ke05DVVJTRVNfTUFKT1J9CisKK2ZpCisKK2NmX2N2X3JlbF92ZXJzaW9uPSR7TkNVUlNFU19NQUpPUn0uJHtOQ1VSU0VTX01JTk9SfQorCitkbmwgU2hvdyB0aGUgY29tcHV0ZWQgdmVyc2lvbiwgZm9yIGxvZ2dpbmcKK2NmX2N2X3RpbWVzdGFtcD1gZGF0ZWAKKworQUNfTVNHX1JFU1VMVChDb25maWd1cmluZyBOQ1VSU0VTICRjZl9jdl9yZWxfdmVyc2lvbiBBQkkgJGNmX2N2X2FiaV92ZXJzaW9uICgkY2ZfY3ZfdGltZXN0YW1wKSkKKworZG5sIFdlIG5lZWQgdGhlc2UgdmFsdWVzIGluIHRoZSBnZW5lcmF0ZWQgaGVhZGVycworQUNfU1VCU1QoTkNVUlNFU19NQUpPUikKK0FDX1NVQlNUKE5DVVJTRVNfTUlOT1IpCitBQ19TVUJTVChOQ1VSU0VTX1BBVENIKQorCitkbmwgV2UgbmVlZCB0aGVzZSB2YWx1ZXMgaW4gdGhlIGdlbmVyYXRlZCBtYWtlZmlsZXMKK0FDX1NVQlNUKGNmX2N2X3JlbF92ZXJzaW9uKQorQUNfU1VCU1QoY2ZfY3ZfYWJpX3ZlcnNpb24pCisKK2RubCBGSVhNRSAtIG5vdCBuZWVkZWQgZm9yIEFkYTk1CitBQ19TVUJTVChjZl9jdl9idWlsdGluX2Jvb2wpCitBQ19TVUJTVChjZl9jdl9oZWFkZXJfc3RkYm9vbF9oKQorQUNfU1VCU1QoY2ZfY3ZfdHlwZV9vZl9ib29sKWRubAorCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX05DVVJTRVNfQ0NfQ0hFQ0sgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDA3LzA3LzI5IDEwOjM5OjA1CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHdlIGNhbiBjb21waWxlIHdpdGggbmN1cnNlcycgaGVhZGVyIGZpbGUKK2RubCAkMSBpcyB0aGUgY2FjaGUgdmFyaWFibGUgdG8gc2V0CitkbmwgJDIgaXMgdGhlIGhlYWRlci1maWxlIHRvIGluY2x1ZGUKK2RubCAkMyBpcyB0aGUgcm9vdCBuYW1lIChuY3Vyc2VzIG9yIG5jdXJzZXN3KQorQUNfREVGVU4oW0NGX05DVVJTRVNfQ0NfQ0hFQ0tdLFsKKwlBQ19UUllfQ09NUElMRShbCitdaWZlbHNlKCQzLG5jdXJzZXN3LFsKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI3VuZGVmICBIQVZFX0xJQlVURjhfSAkvKiBpbiBjYXNlIHdlIHVzZWQgQ0ZfVVRGOF9MSUIgKi8KKyNkZWZpbmUgSEFWRV9MSUJVVEY4X0gJLyogdG8gZm9yY2UgbmN1cnNlcycgaGVhZGVyIGZpbGUgdG8gdXNlIGNjaGFyX3QgKi8KK10pWworI2luY2x1ZGUgPCQyPl0sWworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorXWlmZWxzZSgkMyxuY3Vyc2VzdyxbCisjaWZuZGVmIFdBQ1NfQlNTQgorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorXSlbCitwcmludGYoIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorcHJpbnRmKCJvbGRcbiIpOworI2Vsc2UKKwltYWtlIGFuIGVycm9yCisjZW5kaWYKKyNlbmRpZgorCV0KKwksWyQxPSQyXQorCSxbJDE9bm9dKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9OQ1VSU0VTX0NPTkZJRyB2ZXJzaW9uOiAxNyB1cGRhdGVkOiAyMDE1LzA3LzA3IDA0OjIyOjA3CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBUaWUgdG9nZXRoZXIgdGhlIGNvbmZpZ3VyZS1zY3JpcHQgbWFjcm9zIGZvciBuY3Vyc2VzLCBwcmVmZXJyaW5nIHRoZXNlIGluCitkbmwgb3JkZXI6CitkbmwgYSkgIi5wYyIgZmlsZXMgZm9yIHBrZy1jb25maWcsIHVzaW5nICROQ1VSU0VTX0NPTkZJR19QS0cKK2RubCBiKSB0aGUgIi1jb25maWciIHNjcmlwdCBmcm9tIG5jdXJzZXMsIHVzaW5nICROQ1VSU0VTX0NPTkZJRworZG5sIGMpIGp1c3QgcGxhaW4gbGlicmFyaWVzCitkbmwKK2RubCAkMSBpcyB0aGUgcm9vdCBsaWJyYXJ5IG5hbWUgKGRlZmF1bHQ6ICJuY3Vyc2VzIikKK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX0NPTkZJR10sWworQUNfUkVRVUlSRShbQ0ZfUEtHX0NPTkZJR10pCitjZl9uY3Vjb25maWdfcm9vdD1pZmVsc2UoJDEsLG5jdXJzZXMsJDEpCitjZl9oYXZlX25jdWNvbmZpZz1ubworCitpZiB0ZXN0ICJ4JHtQS0dfQ09ORklHOj1ub25lfSIgIT0geG5vbmU7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcocGtnLWNvbmZpZyBmb3IgJGNmX25jdWNvbmZpZ19yb290KQorCWlmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgJGNmX25jdWNvbmZpZ19yb290IDsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKHllcykKKworCQlBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhlICRjZl9uY3Vjb25maWdfcm9vdCBwYWNrYWdlIGZpbGVzIHdvcmspCisJCWNmX2hhdmVfbmN1Y29uZmlnPXVua25vd24KKworCQljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFBLR19DT05GSUcgLS1jZmxhZ3MgJGNmX25jdWNvbmZpZ19yb290YCIKKwkJQ0ZfQUREX0xJQlMoYCRQS0dfQ09ORklHIC0tbGlicyAkY2ZfbmN1Y29uZmlnX3Jvb3RgKQorCisJCUFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJCQlbaW5pdHNjcigpOyBtb3VzZW1hc2soMCwwKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTtdLAorCQkJW0FDX1RSWV9SVU4oWyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisJCQkJaW50IG1haW4odm9pZCkKKwkJCQl7IGNoYXIgKnh4ID0gY3Vyc2VzX3ZlcnNpb24oKTsgcmV0dXJuICh4eCA9PSAwKTsgfV0sCisJCQkJW2NmX2hhdmVfbmN1Y29uZmlnPXllc10sCisJCQkJW2NmX2hhdmVfbmN1Y29uZmlnPW5vXSwKKwkJCQlbY2ZfaGF2ZV9uY3Vjb25maWc9bWF5YmVdKV0sCisJCQlbY2ZfaGF2ZV9uY3Vjb25maWc9bm9dKQorCQlBQ19NU0dfUkVTVUxUKCRjZl9oYXZlX25jdWNvbmZpZykKKwkJdGVzdCAiJGNmX2hhdmVfbmN1Y29uZmlnIiA9IG1heWJlICYmIGNmX2hhdmVfbmN1Y29uZmlnPXllcworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9uY3Vjb25maWciICE9ICJ5ZXMiCisJCXRoZW4KKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisJCQlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorCQllbHNlCisJCQlBQ19ERUZJTkUoTkNVUlNFUywxLFtEZWZpbmUgdG8gMSBpZiB3ZSBhcmUgdXNpbmcgbmN1cnNlcyBoZWFkZXJzL2xpYnJhcmllc10pCisJCQlOQ1VSU0VTX0NPTkZJR19QS0c9JGNmX25jdWNvbmZpZ19yb290CisJCWZpCisKKwllbHNlCisJCUFDX01TR19SRVNVTFQobm8pCisJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJZmkKK2Vsc2UKKwlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorZmkKKworaWYgdGVzdCAieCRjZl9oYXZlX25jdWNvbmZpZyIgPSAieG5vIjsgdGhlbgorCWVjaG8gIkxvb2tpbmcgZm9yICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyIKKworCUNGX0FDVkVSU0lPTl9DSEVDSygyLjUyLAorCQlbQUNfQ0hFQ0tfVE9PTFMoTkNVUlNFU19DT05GSUcsICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9NS1jb25maWcsIG5vbmUpXSwKKwkJW0FDX1BBVEhfUFJPR1MoTkNVUlNFU19DT05GSUcsICAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTUtY29uZmlnLCBub25lKV0pCisKKwlpZiB0ZXN0ICIkTkNVUlNFU19DT05GSUciICE9IG5vbmUgOyB0aGVuCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJE5DVVJTRVNfQ09ORklHIC0tY2ZsYWdzYCIKKwkJQ0ZfQUREX0xJQlMoYCROQ1VSU0VTX0NPTkZJRyAtLWxpYnNgKQorCisJCSMgZXZlbiB3aXRoIGNvbmZpZyBzY3JpcHQsIHNvbWUgcGFja2FnZXMgdXNlIG5vLW92ZXJyaWRlIGZvciBjdXJzZXMuaAorCQlDRl9DVVJTRVNfSEVBREVSKGlmZWxzZSgkMSwsbmN1cnNlcywkMSkpCisKKwkJZG5sIGxpa2UgQ0ZfTkNVUlNFU19DUFBGTEFHUworCQlBQ19ERUZJTkUoTkNVUlNFUywxLFtEZWZpbmUgdG8gMSBpZiB3ZSBhcmUgdXNpbmcgbmN1cnNlcyBoZWFkZXJzL2xpYnJhcmllc10pCisKKwkJZG5sIGxpa2UgQ0ZfTkNVUlNFU19MSUJTCisJCUNGX1VQUEVSKGNmX25jdWxpYl9ST09ULEhBVkVfTElCJGNmX25jdWNvbmZpZ19yb290KQorCQlBQ19ERUZJTkVfVU5RVU9URUQoJGNmX25jdWxpYl9ST09UKQorCisJCWRubCBsaWtlIENGX05DVVJTRVNfVkVSU0lPTgorCQljZl9jdl9uY3Vyc2VzX3ZlcnNpb249YCROQ1VSU0VTX0NPTkZJRyAtLXZlcnNpb25gCisKKwllbHNlCisKKwkJQ0ZfTkNVUlNFU19DUFBGTEFHUyhpZmVsc2UoJDEsLG5jdXJzZXMsJDEpKQorCQlDRl9OQ1VSU0VTX0xJQlMoaWZlbHNlKCQxLCxuY3Vyc2VzLCQxKSkKKworCWZpCitlbHNlCisJTkNVUlNFU19DT05GSUc9bm9uZQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19DUFBGTEFHUyB2ZXJzaW9uOiAyMSB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIExvb2sgZm9yIHRoZSBTVnI0IGN1cnNlcyBjbG9uZSAnbmN1cnNlcycgaW4gdGhlIHN0YW5kYXJkIHBsYWNlcywgYWRqdXN0aW5nCitkbmwgdGhlIENQUEZMQUdTIHZhcmlhYmxlIHNvIHdlIGNhbiBpbmNsdWRlIGl0cyBoZWFkZXIuCitkbmwKK2RubCBUaGUgaGVhZGVyIGZpbGVzIG1heSBiZSBpbnN0YWxsZWQgYXMgZWl0aGVyIGN1cnNlcy5oLCBvciBuY3Vyc2VzLmggKHdvdWxkCitkbmwgYmUgb2Jzb2xldGUsIGV4Y2VwdCB0aGF0IHNvbWUgcGFja2FnZXJzIHByZWZlciB0aGlzIG5hbWUgdG8gZGlzdGluZ3Vpc2ggaXQKK2RubCBmcm9tIGEgIm5hdGl2ZSIgY3Vyc2VzIGltcGxlbWVudGF0aW9uKS4gIElmIG5vdCBpbnN0YWxsZWQgZm9yIG92ZXJ3cml0ZSwKK2RubCB0aGUgY3Vyc2VzLmggZmlsZSB3b3VsZCBiZSBpbiBhbiBuY3Vyc2VzIHN1YmRpcmVjdG9yeSAoZS5nLiwKK2RubCAvdXNyL2luY2x1ZGUvbmN1cnNlcyksIGJ1dCBzb21lb25lIG1heSBoYXZlIGluc3RhbGxlZCBvdmVyd3JpdGluZyB0aGUKK2RubCB2ZW5kb3IncyBjdXJzZXMuICBPbmx5IHZlcnkgb2xkIHZlcnNpb25zIChwcmUtMS45LjJkLCB0aGUgZmlyc3QgYXV0b2NvbmYnZAorZG5sIHZlcnNpb24pIG9mIG5jdXJzZXMgZG9uJ3QgZGVmaW5lIGVpdGhlciBfX05DVVJTRVNfSCBvciBOQ1VSU0VTX1ZFUlNJT04gaW4KK2RubCB0aGUgaGVhZGVyLgorZG5sCitkbmwgSWYgdGhlIGluc3RhbGxlciBoYXMgc2V0ICRDRkxBR1Mgb3IgJENQUEZMQUdTIHNvIHRoYXQgdGhlIG5jdXJzZXMgaGVhZGVyCitkbmwgaXMgYWxyZWFkeSBpbiB0aGUgaW5jbHVkZS1wYXRoLCBkb24ndCBldmVuIGJvdGhlciB3aXRoIHRoaXMsIHNpbmNlIHdlIGNhbm5vdAorZG5sIGVhc2lseSBkZXRlcm1pbmUgd2hpY2ggZmlsZSBpdCBpcy4gIEluIHRoaXMgY2FzZSwgaXQgaGFzIHRvIGJlIDxjdXJzZXMuaD4uCitkbmwKK2RubCBUaGUgb3B0aW9uYWwgcGFyYW1ldGVyIGdpdmVzIHRoZSByb290IG5hbWUgb2YgdGhlIGxpYnJhcnksIGluIGNhc2UgaXQgaXMKK2RubCBub3QgaW5zdGFsbGVkIGFzIHRoZSBkZWZhdWx0IGN1cnNlcyBsaWJyYXJ5LiAgVGhhdCBpcyBob3cgdGhlCitkbmwgd2lkZS1jaGFyYWN0ZXIgdmVyc2lvbiBvZiBuY3Vyc2VzIGlzIGluc3RhbGxlZC4KK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX0NQUEZMQUdTXSwKK1tBQ19SRVFVSVJFKFtDRl9XSVRIX0NVUlNFU19ESVJdKQorCitBQ19QUk9WSURFKFtDRl9DVVJTRVNfQ1BQRkxBR1NdKWRubAorY2ZfbmN1aGRyX3Jvb3Q9aWZlbHNlKCQxLCxuY3Vyc2VzLCQxKQorCit0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2RpciIgJiYgXAordGVzdCAiJGNmX2N2X2N1cnNlc19kaXIiICE9ICJubyIgJiYgeyBcCisgIENGX0FERF9JTkNESVIoJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QpCit9CisKK0FDX0NBQ0hFX0NIRUNLKGZvciAkY2ZfbmN1aGRyX3Jvb3QgaGVhZGVyIGluIGluY2x1ZGUtcGF0aCwgY2ZfY3ZfbmN1cnNlc19oLFsKKwljZl9oZWFkZXJfbGlzdD0iJGNmX25jdWhkcl9yb290L2N1cnNlcy5oICRjZl9uY3VoZHJfcm9vdC9uY3Vyc2VzLmgiCisJKCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlcyB8fCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlc3cgKSAmJiBjZl9oZWFkZXJfbGlzdD0iJGNmX2hlYWRlcl9saXN0IGN1cnNlcy5oIG5jdXJzZXMuaCIKKwlmb3IgY2ZfaGVhZGVyIGluICRjZl9oZWFkZXJfbGlzdAorCWRvCisJCUNGX05DVVJTRVNfQ0NfQ0hFQ0soY2ZfY3ZfbmN1cnNlc19oLCRjZl9oZWFkZXIsJDEpCisJCXRlc3QgIiRjZl9jdl9uY3Vyc2VzX2giICE9IG5vICYmIGJyZWFrCisJZG9uZQorXSkKKworQ0ZfTkNVUlNFU19IRUFERVIKK0NGX1RFUk1fSEVBREVSCisKKyMgc29tZSBhcHBsaWNhdGlvbnMgbmVlZCB0aGlzLCBidXQgc2hvdWxkIGNoZWNrIGZvciBOQ1VSU0VTX1ZFUlNJT04KK0FDX0RFRklORShOQ1VSU0VTLDEsW0RlZmluZSB0byAxIGlmIHdlIGFyZSB1c2luZyBuY3Vyc2VzIGhlYWRlcnMvbGlicmFyaWVzXSkKKworQ0ZfTkNVUlNFU19WRVJTSU9OCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX05DVVJTRVNfSEVBREVSIHZlcnNpb246IDQgdXBkYXRlZDogMjAxNS8wNC8xNSAxOTowODo0OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitkbmwgRmluZCBhICJjdXJzZXMiIGhlYWRlciBmaWxlLCBlLmcsLiAiY3Vyc2VzLmgiLCBvciBvbmUgb2YgdGhlIG1vcmUgY29tbW9uCitkbmwgdmFyaWF0aW9ucyBvZiBuY3Vyc2VzJyBpbnN0YWxscy4KK2RubAorZG5sIFNlZSBhbHNvIENGX0NVUlNFU19IRUFERVIsIHdoaWNoIHNldHMgdGhlIHNhbWUgY2FjaGUgdmFyaWFibGUuCitBQ19ERUZVTihbQ0ZfTkNVUlNFU19IRUFERVJdLFsKKworaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gOyB0aGVuCisJY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX2N2X25jdXJzZXNfaAorZWxzZQorCitBQ19DQUNIRV9DSEVDSyhmb3IgJGNmX25jdWhkcl9yb290IGluY2x1ZGUtcGF0aCwgY2ZfY3ZfbmN1cnNlc19oMixbCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8KKwlDRl9IRUFERVJfUEFUSChjZl9zZWFyY2gsJGNmX25jdWhkcl9yb290KQorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvIHNlYXJjaCBwYXRoICRjZl9zZWFyY2gKKwljZl9zYXZlMl9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWZvciBjZl9pbmNkaXIgaW4gJGNmX3NlYXJjaAorCWRvCisJCUNGX0FERF9JTkNESVIoJGNmX2luY2RpcikKKwkJZm9yIGNmX2hlYWRlciBpbiBcCisJCQluY3Vyc2VzLmggXAorCQkJY3Vyc2VzLmgKKwkJZG8KKwkJCUNGX05DVVJTRVNfQ0NfQ0hFQ0soY2ZfY3ZfbmN1cnNlc19oMiwkY2ZfaGVhZGVyLCQxKQorCQkJaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vIDsgdGhlbgorCQkJCWNmX2N2X25jdXJzZXNfaDI9JGNmX2luY2Rpci8kY2ZfaGVhZGVyCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gJGFjX24gIgkuLi4gZm91bmQgJGFjX2MiIDE+JkFDX0ZEX01TRworCQkJCWJyZWFrCisJCQlmaQorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGVkICRjZl9pbmNkaXIvJGNmX2hlYWRlciIgMT4mQUNfRkRfTVNHCisJCWRvbmUKKwkJQ1BQRkxBR1M9IiRjZl9zYXZlMl9DUFBGTEFHUyIKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vICYmIGJyZWFrCisJZG9uZQorCXRlc3QgIiRjZl9jdl9uY3Vyc2VzX2gyIiA9IG5vICYmIEFDX01TR19FUlJPUihub3QgZm91bmQpCisJXSkKKworCUNGX0RJUk5BTUUoY2ZfMXN0X2luY2RpciwkY2ZfY3ZfbmN1cnNlc19oMikKKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj1gYmFzZW5hbWUgJGNmX2N2X25jdXJzZXNfaDJgCisJaWYgdGVzdCBgYmFzZW5hbWUgJGNmXzFzdF9pbmNkaXJgID0gJGNmX25jdWhkcl9yb290IDsgdGhlbgorCQljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfbmN1aGRyX3Jvb3QvJGNmX2N2X25jdXJzZXNfaGVhZGVyCisJZmkKKwlDRl9BRERfSU5DRElSKCRjZl8xc3RfaW5jZGlyKQorCitmaQorCisjIFNldCBkZWZpbml0aW9ucyB0byBhbGxvdyBpZmRlZidpbmcgZm9yIG5jdXJzZXMuaAorCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKCpuY3Vyc2VzLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU19ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlcy5oXSkKKwk7OworZXNhYworCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKG5jdXJzZXMvY3Vyc2VzLmh8bmN1cnNlcy9uY3Vyc2VzLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU19OQ1VSU0VTX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzL25jdXJzZXMuaF0pCisJOzsKKyhuY3Vyc2Vzdy9jdXJzZXMuaHxuY3Vyc2Vzdy9uY3Vyc2VzLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU1dfTkNVUlNFU19ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlc3cvbmN1cnNlcy5oXSkKKwk7OworZXNhYworCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX05DVVJTRVNfTElCUyB2ZXJzaW9uOiAxNyB1cGRhdGVkOiAyMDE1LzA0LzE1IDE5OjA4OjQ4CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgTG9vayBmb3IgdGhlIG5jdXJzZXMgbGlicmFyeS4gIFRoaXMgaXMgYSBsaXR0bGUgY29tcGxpY2F0ZWQgb24gTGludXgsCitkbmwgYmVjYXVzZSBpdCBtYXkgYmUgbGlua2VkIHdpdGggdGhlIGdwbSAoZ2VuZXJhbCBwdXJwb3NlIG1vdXNlKSBsaWJyYXJ5LgorZG5sIFNvbWUgZGlzdHJpYnV0aW9ucyBoYXZlIGdwbSBsaW5rZWQgd2l0aCAoYnNkKSBjdXJzZXMsIHdoaWNoIG1ha2VzIGl0CitkbmwgdW51c2FibGUgd2l0aCBuY3Vyc2VzLiAgSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0byBsaW5rIHdpdGggZ3BtIHVubGVzcworZG5sIG5jdXJzZXMgaGFzIGEgZGVwZW5kZW5jeSwgc2luY2UgZ3BtIGlzIG5vcm1hbGx5IHNldCB1cCBhcyBhIHNoYXJlZCBsaWJyYXJ5LAorZG5sIGFuZCB0aGUgbGlua2VyIHdpbGwgcmVjb3JkIGEgZGVwZW5kZW5jeS4KK2RubAorZG5sIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgZ2l2ZXMgdGhlIHJvb3QgbmFtZSBvZiB0aGUgbGlicmFyeSwgaW4gY2FzZSBpdCBpcworZG5sIG5vdCBpbnN0YWxsZWQgYXMgdGhlIGRlZmF1bHQgY3Vyc2VzIGxpYnJhcnkuICBUaGF0IGlzIGhvdyB0aGUKK2RubCB3aWRlLWNoYXJhY3RlciB2ZXJzaW9uIG9mIG5jdXJzZXMgaXMgaW5zdGFsbGVkLgorQUNfREVGVU4oW0NGX05DVVJTRVNfTElCU10sCitbQUNfUkVRVUlSRShbQ0ZfTkNVUlNFU19DUFBGTEFHU10pCisKK2NmX25jdWxpYl9yb290PWlmZWxzZSgkMSwsbmN1cnNlcywkMSkKKwkjIFRoaXMgd29ya3MsIGV4Y2VwdCBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBmaW5kIGdwbSwgYnV0CisJIyBuY3Vyc2VzIGlzIGluIGEgbm9uc3RhbmRhcmQgbG9jYXRpb24gdmlhICRMSUJTLCBhbmQgd2UgcmVhbGx5IHdhbnQKKwkjIHRvIGxpbmsgZ3BtLgorY2ZfbmN1cnNlc19MSUJTPSIiCitjZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorQUNfQ0hFQ0tfTElCKGdwbSxHcG1fT3BlbiwKKwlbQUNfQ0hFQ0tfTElCKGdwbSxpbml0c2NyLAorCQlbTElCUz0iJGNmX25jdXJzZXNfU0FWRSJdLAorCQlbY2ZfbmN1cnNlc19MSUJTPSItbGdwbSJdKV0pCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhmcmVlYnNkKikKKwkjIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgaWYgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgYW4gb2Jzb2xldGUKKwkjIHZlcnNpb24gb2YgbmN1cnNlcyAoYnV0IGl0IHNob3VsZCBkbyBubyBoYXJtLCBzaW5jZSBpdCdzIHN0YXRpYykuCisJaWYgdGVzdCAiJGNmX25jdWxpYl9yb290IiA9IG5jdXJzZXMgOyB0aGVuCisJCUFDX0NIRUNLX0xJQihteXRpbmZvLHRnb3RvLFtjZl9uY3Vyc2VzX0xJQlM9Ii1sbXl0aW5mbyAkY2ZfbmN1cnNlc19MSUJTIl0pCisJZmkKKwk7OworZXNhYworCitDRl9BRERfTElCUygkY2ZfbmN1cnNlc19MSUJTKQorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisJQ0ZfQUREX0xJQlMoLWwkY2ZfbmN1bGliX3Jvb3QpCitlbHNlCisJQ0ZfRklORF9MSUJSQVJZKCRjZl9uY3VsaWJfcm9vdCwkY2ZfbmN1bGliX3Jvb3QsCisJCVsjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJCVtpbml0c2NyKCldLAorCQlpbml0c2NyKQorZmkKKworaWYgdGVzdCAtbiAiJGNmX25jdXJzZXNfTElCUyIgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiBsaW5rICRjZl9uY3VsaWJfcm9vdCB3aXRob3V0ICRjZl9uY3Vyc2VzX0xJQlMpCisJY2ZfbmN1cnNlc19TQVZFPSIkTElCUyIKKwlmb3IgcCBpbiAkY2ZfbmN1cnNlc19MSUJTIDsgZG8KKwkJcT1gZWNobyAkTElCUyB8IHNlZCAtZSAicyUkcCAlJSIgLWUgInMlJHAkJSUiYAorCQlpZiB0ZXN0ICIkcSIgIT0gIiRMSUJTIiA7IHRoZW4KKwkJCUxJQlM9IiRxIgorCQlmaQorCWRvbmUKKwlBQ19UUllfTElOSyhbI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT5dLAorCQlbaW5pdHNjcigpOyBtb3VzZW1hc2soMCwwKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTtdLAorCQlbQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKwkJW0FDX01TR19SRVNVTFQobm8pCisJCSBMSUJTPSIkY2ZfbmN1cnNlc19TQVZFIl0pCitmaQorCitDRl9VUFBFUihjZl9uY3VsaWJfUk9PVCxIQVZFX0xJQiRjZl9uY3VsaWJfcm9vdCkKK0FDX0RFRklORV9VTlFVT1RFRCgkY2ZfbmN1bGliX1JPT1QpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX05DVVJTRVNfVkVSU0lPTiB2ZXJzaW9uOiAxNCB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMsIHRvIGFpZCBpbiByZXBvcnRpbmcgYnVncywgZXRjLgorZG5sIENhbGwgQ0ZfQ1VSU0VTX0NQUEZMQUdTIGZpcnN0LCBvciBDRl9OQ1VSU0VTX0NQUEZMQUdTLiAgV2UgZG9uJ3QgdXNlCitkbmwgQUNfUkVRVUlSRSBzaW5jZSB0aGF0IGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgc2hlbGwncyBpZi90aGVuL2Vsc2UvZmkuCitBQ19ERUZVTihbQ0ZfTkNVUlNFU19WRVJTSU9OXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0NVUlNFU19DUFBGTEFHU10pZG5sCitBQ19DQUNIRV9DSEVDSyhmb3IgbmN1cnNlcyB2ZXJzaW9uLCBjZl9jdl9uY3Vyc2VzX3ZlcnNpb24sWworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1ubworCWNmX3RlbXBmaWxlPW91dCQkCisJcm0gLWYgJGNmX3RlbXBmaWxlCisJQUNfVFJZX1JVTihbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgbWFpbigpCit7CisJRklMRSAqZnAgPSBmb3BlbigiJGNmX3RlbXBmaWxlIiwgInciKTsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyMgaWZkZWYgTkNVUlNFU19WRVJTSU9OX1BBVENICisJZnByaW50ZihmcCwgIiVzLiVkXG4iLCBOQ1VSU0VTX1ZFUlNJT04sIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCk7CisjIGVsc2UKKwlmcHJpbnRmKGZwLCAiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjIGVuZGlmCisjZWxzZQorIyBpZmRlZiBfX05DVVJTRVNfSAorCWZwcmludGYoZnAsICJvbGRcbiIpOworIyBlbHNlCisJbWFrZSBhbiBlcnJvcgorIyBlbmRpZgorI2VuZGlmCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgwKTsKK31dLFsKKwljZl9jdl9uY3Vyc2VzX3ZlcnNpb249YGNhdCAkY2ZfdGVtcGZpbGVgXSwsWworCisJIyBUaGlzIHdpbGwgbm90IHdvcmsgaWYgdGhlIHByZXByb2Nlc3NvciBzcGxpdHMgdGhlIGxpbmUgYWZ0ZXIgdGhlCisJIyBBdXRvY29uZiB0b2tlbi4gIFRoZSAndW5wcm90bycgcHJvZ3JhbSBkb2VzIHRoYXQuCisJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyN1bmRlZiBBdXRvY29uZgorI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorQXV0b2NvbmYgTkNVUlNFU19WRVJTSU9OCisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitBdXRvY29uZiAib2xkIgorI2VuZGlmCis7CisjZW5kaWYKK0VPRgorCWNmX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IDI+JkFDX0ZEX0NDIHwgZ3JlcCAnXkF1dG9jb25mICcgPmNvbmZ0ZXN0Lm91dCIKKwlBQ19UUllfRVZBTChjZl90cnkpCisJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCWNmX291dD1gY2F0IGNvbmZ0ZXN0Lm91dCB8IHNlZCAtZSAncyVeQXV0b2NvbmYgJSUnIC1lICdzJV5bW14iXV0qIiUlJyAtZSAncyUiLiolJSdgCisJCXRlc3QgLW4gIiRjZl9vdXQiICYmIGNmX2N2X25jdXJzZXNfdmVyc2lvbj0iJGNmX291dCIKKwkJcm0gLWYgY29uZnRlc3Qub3V0CisJZmkKK10pCisJcm0gLWYgJGNmX3RlbXBmaWxlCitdKQordGVzdCAiJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPSBubyB8fCBBQ19ERUZJTkUoTkNVUlNFUywxLFtEZWZpbmUgdG8gMSBpZiB3ZSBhcmUgdXNpbmcgbmN1cnNlcyBoZWFkZXJzL2xpYnJhcmllc10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX09CSl9TVUJESVIgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLQorZG5sIENvbXB1dGUgdGhlIG9iamVjdC1kaXJlY3RvcnkgbmFtZSBmcm9tIHRoZSBnaXZlbiBtb2RlbCBuYW1lCitBQ19ERUZVTihbQ0ZfT0JKX1NVQkRJUl0sCitbCisJY2FzZSAkMSBpbgorCShsaWJ0b29sKSAkMj0nb2JqX2xvJyAgOzsKKwkobm9ybWFsKSAgJDI9J29iamVjdHMnIDs7CisJKGRlYnVnKSAgICQyPSdvYmpfZycgOzsKKwkocHJvZmlsZSkgJDI9J29ial9wJyA7OworCShzaGFyZWQpCisJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJCShjeWd3aW58bXN5cykKKwkJCSQyPSdvYmplY3RzJyA7OworCQkoKikKKwkJCSQyPSdvYmpfcycgOzsKKwkJZXNhYworCWVzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUEFUSFNFUCB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tCitkbmwgUHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgJFBBVEggYW5kIHNpbWlsYXIgc2VwYXJhdG9yIChvciBhbWVuZCB0aGUgdmFsdWUKK2RubCBhcyBwcm92aWRlZCBpbiBhdXRvY29uZiAyLjV4KS4KK0FDX0RFRlVOKFtDRl9QQVRIU0VQXSwKK1sKKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yIFBBVEggc2VwYXJhdG9yKQorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKG9zMiopCVBBVEhfU0VQQVJBVE9SPSc7JyAgOzsKKwkoKikJJHtQQVRIX1NFUEFSQVRPUjo9JzonfSAgOzsKKwllc2FjCitpZmVsc2UoWyQxXSwsLFskMT0kUEFUSF9TRVBBUkFUT1JdKQorCUFDX1NVQlNUKFBBVEhfU0VQQVJBVE9SKQorCUFDX01TR19SRVNVTFQoJFBBVEhfU0VQQVJBVE9SKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QQVRIX1NZTlRBWCB2ZXJzaW9uOiAxNiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayB0aGUgYXJndW1lbnQgdG8gc2VlIHRoYXQgaXQgbG9va3MgbGlrZSBhIHBhdGhuYW1lLiAgUmV3cml0ZSBpdCBpZiBpdAorZG5sIGJlZ2lucyB3aXRoIG9uZSBvZiB0aGUgcHJlZml4L2V4ZWNfcHJlZml4IHZhcmlhYmxlcywgYW5kIHRoZW4gYWdhaW4gaWYgdGhlCitkbmwgcmVzdWx0IGJlZ2lucyB3aXRoICdOT05FJy4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIGF1dG9jb25mJ3MKK2RubCBkZWxheWVkIGV2YWx1YXRpb24gb2YgdGhvc2Ugc3ltYm9scy4KK0FDX0RFRlVOKFtDRl9QQVRIX1NZTlRBWF0sWworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi5bJF0kMSIgaW4KKyguXFskXVwoKlwpKnwuXCcqXCcqKQorCTs7CisoLi58Li8qfC5cXCopCisJOzsKKyguW1thLXpBLVpdXTpbW1xcL11dKikgIyBPUy8yIEVNWAorCTs7CisoLlxbJF17KnByZWZpeH0qfC5cWyRdeypkaXJ9KikKKwlldmFsICQxPSJbJF0kMSIKKwljYXNlICIuWyRdJDEiIGluCisJKC5OT05FLyopCisJCSQxPWBlY2hvIFskXSQxIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCSQxPWBlY2hvIFskXSQxIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwlpZmVsc2UoWyQyXSwsW0FDX01TR19FUlJPUihbZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiWyRdJDFcIl0pXSwkMikKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QS0dfQ09ORklHIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMjYgMTg6MDY6NTgKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIHRoZSBwYWNrYWdlLWNvbmZpZyBwcm9ncmFtLCB1bmxlc3MgZGlzYWJsZWQgYnkgY29tbWFuZC1saW5lLgorQUNfREVGVU4oW0NGX1BLR19DT05GSUddLAorWworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIHVzZSBwa2ctY29uZmlnKQorQUNfQVJHX1dJVEgocGtnLWNvbmZpZywKKwlbICAtLXdpdGgtcGtnLWNvbmZpZ3s9cGF0aH0gZW5hYmxlL2Rpc2FibGUgdXNlIG9mIHBrZy1jb25maWddLAorCVtjZl9wa2dfY29uZmlnPSR3aXRodmFsXSwKKwlbY2ZfcGtnX2NvbmZpZz15ZXNdKQorQUNfTVNHX1JFU1VMVCgkY2ZfcGtnX2NvbmZpZykKKworY2FzZSAkY2ZfcGtnX2NvbmZpZyBpbgorKG5vKQorCVBLR19DT05GSUc9bm9uZQorCTs7CisoeWVzKQorCUNGX0FDVkVSU0lPTl9DSEVDSygyLjUyLAorCQlbQUNfUEFUSF9UT09MKFBLR19DT05GSUcsIHBrZy1jb25maWcsIG5vbmUpXSwKKwkJW0FDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBub25lKV0pCisJOzsKKygqKQorCVBLR19DT05GSUc9JHdpdGh2YWwKKwk7OworZXNhYworCit0ZXN0IC16ICIkUEtHX0NPTkZJRyIgJiYgUEtHX0NPTkZJRz1ub25lCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKwlDRl9QQVRIX1NZTlRBWChQS0dfQ09ORklHKQorZWxpZiB0ZXN0ICJ4JGNmX3BrZ19jb25maWciICE9IHhubyA7IHRoZW4KKwlBQ19NU0dfV0FSTihwa2ctY29uZmlnIGlzIG5vdCBpbnN0YWxsZWQpCitmaQorCitBQ19TVUJTVChQS0dfQ09ORklHKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QT1NJWF9DX1NPVVJDRSB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIERlZmluZSBfUE9TSVhfQ19TT1VSQ0UgdG8gdGhlIGdpdmVuIGxldmVsLCBhbmQgX1BPU0lYX1NPVVJDRSBpZiBuZWVkZWQuCitkbmwKK2RubAlQT1NJWC4xLTE5OTAJCQkJX1BPU0lYX1NPVVJDRQorZG5sCVBPU0lYLjEtMTk5MCBhbmQJCQlfUE9TSVhfU09VUkNFIGFuZAorZG5sCQlQT1NJWC4yLTE5OTIgQy1MYW5ndWFnZQkJCV9QT1NJWF9DX1NPVVJDRT0yCitkbmwJCUJpbmRpbmdzIE9wdGlvbgorZG5sCVBPU0lYLjFiLTE5OTMJCQkJX1BPU0lYX0NfU09VUkNFPTE5OTMwOUwKK2RubAlQT1NJWC4xYy0xOTk2CQkJCV9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCitkbmwJWC9PcGVuIDIwMDAJCQkJX1BPU0lYX0NfU09VUkNFPTIwMDExMkwKK2RubAorZG5sIFBhcmFtZXRlcnM6CitkbmwJJDEgaXMgdGhlIG5vbWluYWwgdmFsdWUgZm9yIF9QT1NJWF9DX1NPVVJDRQorQUNfREVGVU4oW0NGX1BPU0lYX0NfU09VUkNFXSwKK1sKK2NmX1BPU0lYX0NfU09VUkNFPWlmZWxzZShbJDFdLCwxOTk1MDZMLFskMV0pCisKK2NmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitDRl9SRU1PVkVfREVGSU5FKGNmX3RyaW1fQ0ZMQUdTLCRjZl9zYXZlX0NGTEFHUyxfUE9TSVhfQ19TT1VSQ0UpCitDRl9SRU1PVkVfREVGSU5FKGNmX3RyaW1fQ1BQRkxBR1MsJGNmX3NhdmVfQ1BQRkxBR1MsX1BPU0lYX0NfU09VUkNFKQorCitBQ19DQUNIRV9DSEVDSyhpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSxjZl9jdl9wb3NpeF9jX3NvdXJjZSxbCisJQ0ZfTVNHX0xPRyhpZiB0aGUgc3ltYm9sIGlzIGFscmVhZHkgZGVmaW5lZCBnbyBubyBmdXJ0aGVyKQorCUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSxbCisjaWZuZGVmIF9QT1NJWF9DX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwlbY2ZfY3ZfcG9zaXhfY19zb3VyY2U9bm9dLAorCVtjZl93YW50X3Bvc2l4X3NvdXJjZT1ubworCSBjYXNlIC4kY2ZfUE9TSVhfQ19TT1VSQ0UgaW4KKwkgKC5bWzEyXV0/PyopCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCisJCTs7CisJICguMikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJICguKikKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJIGVzYWMKKwkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KKwkJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLFsKKyNpZmRlZiBfUE9TSVhfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLFtdLAorCQljZl9jdl9wb3NpeF9jX3NvdXJjZT0iJGNmX2N2X3Bvc2l4X2Nfc291cmNlIC1EX1BPU0lYX1NPVVJDRSIpCisJIGZpCisJIENGX01TR19MT0coaWZkZWYgZnJvbSB2YWx1ZSAkY2ZfUE9TSVhfQ19TT1VSQ0UpCisJIENGTEFHUz0iJGNmX3RyaW1fQ0ZMQUdTIgorCSBDUFBGTEFHUz0iJGNmX3RyaW1fQ1BQRkxBR1MgJGNmX2N2X3Bvc2l4X2Nfc291cmNlIgorCSBDRl9NU0dfTE9HKGlmIHRoZSBzZWNvbmQgY29tcGlsZSBkb2VzIG5vdCBsZWF2ZSBvdXIgZGVmaW5pdGlvbiBpbnRhY3QgZXJyb3IpCisJIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSxbCisjaWZuZGVmIF9QT1NJWF9DX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwsCisJIFtjZl9jdl9wb3NpeF9jX3NvdXJjZT1ub10pCisJIENGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCSBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJXSkKK10pCisKK2lmIHRlc3QgIiRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgIT0gbm8gOyB0aGVuCisJQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTIgorCUNGX0FERF9DRkxBR1MoJGNmX2N2X3Bvc2l4X2Nfc291cmNlKQorZmkKKworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QUk9HX0FSIHZlcnNpb246IDEgdXBkYXRlZDogMjAwOS8wMS8wMSAyMDoxNToyMgorZG5sIC0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgYXJjaGl2ZXIgImFyIi4KK0FDX0RFRlVOKFtDRl9QUk9HX0FSXSxbCitBQ19DSEVDS19UT09MKEFSLCBhciwgYXIpCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfQVdLIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNi8wOS8xNiAxMTo0MDo1OQorZG5sIC0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGF3aywgZW5zdXJlIHRoYXQgdGhlIGNoZWNrIGZvdW5kIHNvbWV0aGluZy4KK0FDX0RFRlVOKFtDRl9QUk9HX0FXS10sCitbCitBQ19QUk9HX0FXSwordGVzdCAteiAiJEFXSyIgJiYgQUNfTVNHX0VSUk9SKE5vIGF3ayBwcm9ncmFtIGZvdW5kKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QUk9HX0NDIHZlcnNpb246IDQgdXBkYXRlZDogMjAxNC8wNy8xMiAxODo1Nzo1OAorZG5sIC0tLS0tLS0tLS0KK2RubCBzdGFuZGFyZCBjaGVjayBmb3IgQ0MsIHBsdXMgZm9sbG93dXAgc2FuaXR5IGNoZWNrcworZG5sICQxID0gb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHBhc3MgdG8gQUNfUFJPR19DQyB0byBzcGVjaWZ5IGNvbXBpbGVyIG5hbWUKK0FDX0RFRlVOKFtDRl9QUk9HX0NDXSxbCitpZmVsc2UoJDEsLFtBQ19QUk9HX0NDXSxbQUNfUFJPR19DQygkMSldKQorQ0ZfR0NDX1ZFUlNJT04KK0NGX0FDVkVSU0lPTl9DSEVDSygyLjUyLAorCVtBQ19QUk9HX0NDX1NURENdLAorCVtDRl9BTlNJX0NDX1JFUURdKQorQ0ZfQ0NfRU5WX0ZMQUdTCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfQ0NfQ19PIHZlcnNpb246IDMgdXBkYXRlZDogMjAxMC8wOC8xNCAxODoyNTozNworZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQW5hbG9nb3VzIHRvIEFDX1BST0dfQ0NfQ19PLCBidXQgbW9yZSB1c2VmdWw6IHRlc3RzIG9ubHkgJENDLCBlbnN1cmVzIHRoYXQKK2RubCB0aGUgb3V0cHV0IGZpbGUgY2FuIGJlIHJlbmFtZWQsIGFuZCBhbGxvd3MgZm9yIGEgc2hlbGwgdmFyaWFibGUgdGhhdCBjYW4KK2RubCBiZSB1c2VkIGxhdGVyLiAgVGhlIHBhcmFtZXRlciBpcyBlaXRoZXIgQ0Mgb3IgQ1hYLiAgVGhlIHJlc3VsdCBpcyB0aGUKK2RubCBjYWNoZSB2YXJpYWJsZToKK2RubAkkY2ZfY3ZfcHJvZ19DQ19jX28KK2RubAkkY2ZfY3ZfcHJvZ19DWFhfY19vCitBQ19ERUZVTihbQ0ZfUFJPR19DQ19DX09dLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFskXSQxIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlcl0pCitBQ19DQUNIRV9WQUwoY2ZfY3ZfcHJvZ18kMV9jX28sCitbCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8Q0ZfRU9GCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBtYWluKCkKK3sKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworfQorQ0ZfRU9GCisjIFdlIGRvIHRoZSB0ZXN0IHR3aWNlIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgcmVmdXNlIHRvIG92ZXJ3cml0ZSBhbgorIyBleGlzdGluZyAubyBmaWxlIHdpdGggLW8sIHRob3VnaCB0aGV5IHdpbGwgY3JlYXRlIG9uZS4KK2FjX3RyeT0nWyRdJDEgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+JkFDX0ZEX0NDJworaWYgQUNfVFJZX0VWQUwoYWNfdHJ5KSAmJgorICB0ZXN0IC1mIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ICYmIEFDX1RSWV9FVkFMKGFjX3RyeSk7Cit0aGVuCisgIGV2YWwgY2ZfY3ZfcHJvZ18kMV9jX289eWVzCitlbHNlCisgIGV2YWwgY2ZfY3ZfcHJvZ18kMV9jX289bm8KK2ZpCitybSAtcmYgY29uZnRlc3QqCitdKWRubAoraWYgdGVzdCAkY2ZfY3ZfcHJvZ18kMV9jX28gPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm9dKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUFJPR19FR1JFUCB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQUNfUFJPR19FR1JFUCB3YXMgaW50cm9kdWNlZCBpbiBhdXRvY29uZiAyLjUzLgorZG5sIFRoaXMgbWFjcm8gYWRkcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGUgc2NyaXB0IGZvdW5kIHNvbWV0aGluZy4KK0FDX0RFRlVOKFtDRl9QUk9HX0VHUkVQXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIGVncmVwXSwgW2FjX2N2X3Byb2dfZWdyZXBdLAorCVtpZiBlY2hvIGEgfCAoZ3JlcCAtRSAnKGF8YiknKSA+L2Rldi9udWxsIDI+JjEKKwkJdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJworCQllbHNlIGFjX2N2X3Byb2dfZWdyZXA9J2VncmVwJworCWZpXSkKKwlFR1JFUD0kYWNfY3ZfcHJvZ19lZ3JlcAorCUFDX1NVQlNUKFtFR1JFUF0pCisJdGVzdCAteiAiJEVHUkVQIiAmJiBBQ19NU0dfRVJST1IoTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUFJPR19FWFQgdmVyc2lvbjogMTMgdXBkYXRlZDogMjAxNS8wNC8xOCAwOTowMzo1OAorZG5sIC0tLS0tLS0tLS0tCitkbmwgQ29tcHV0ZSAkUFJPR19FWFQsIHVzZWQgZm9yIG5vbi1Vbml4IHBvcnRzLCBzdWNoIGFzIE9TLzIgRU1YLgorQUNfREVGVU4oW0NGX1BST0dfRVhUXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0NIRUNLX0NBQ0hFXSkKK2Nhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisob3MyKikKKwlDRkxBR1M9IiRDRkxBR1MgLVptdCIKKwlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX19TVF9NVF9FUlJOT19fIgorCUNYWEZMQUdTPSIkQ1hYRkxBR1MgLVptdCIKKwkjIGF1dG9jb25mJ3MgbWFjcm8gc2V0cyAtWmV4ZSBhbmQgc3VmZml4IGJvdGgsIHdoaWNoIGNvbmZsaWN0OncKKwlMREZMQUdTPSIkTERGTEFHUyAtWm10IC1aY3J0ZGxsIgorCWFjX2N2X2V4ZWV4dD0uZXhlCisJOzsKK2VzYWMKKworQUNfRVhFRVhUCitBQ19PQkpFWFQKKworUFJPR19FWFQ9IiRFWEVFWFQiCitBQ19TVUJTVChQUk9HX0VYVCkKK3Rlc3QgLW4gIiRQUk9HX0VYVCIgJiYgQUNfREVGSU5FX1VOUVVPVEVEKFBST0dfRVhULCIkUFJPR19FWFQiLFtEZWZpbmUgdG8gdGhlIHByb2dyYW0gZXh0ZW5zaW9uIChub3JtYWxseSBibGFuayldKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9QUk9HX0dOQVQgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGduYXRtYWtlLCBlbnN1cmUgdGhhdCBpdCBpcyBjb21wbGV0ZS4KK0FDX0RFRlVOKFtDRl9QUk9HX0dOQVRdLFsKK2NmX2FkYV9tYWtlPWduYXRtYWtlCitBQ19DSEVDS19QUk9HKGduYXRfZXhpc3RzLCAkY2ZfYWRhX21ha2UsIHllcywgbm8pCitpZiB0ZXN0ICIkYWNfY3ZfcHJvZ19nbmF0X2V4aXN0cyIgPSBubzsgdGhlbgorCWNmX2FkYV9tYWtlPQorCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCitlbHNlCisJQ0ZfR05BVF9WRVJTSU9OCisJQUNfQ0hFQ0tfUFJPRyhNNF9leGlzdHMsIG00LCB5ZXMsIG5vKQorCWlmIHRlc3QgIiRhY19jdl9wcm9nX000X2V4aXN0cyIgPSBubzsgdGhlbgorCQljZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubworCQllY2hvIEFkYTk1IGJpbmRpbmcgcmVxdWlyZWQgcHJvZ3JhbSBtNCBub3QgZm91bmQuIEFkYTk1IGJpbmRpbmcgZGlzYWJsZWQuCisJZmkKKwlpZiB0ZXN0ICIkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0geWVzOyB0aGVuCisJCUFDX01TR19DSEVDS0lORyhpZiBHTkFUIHdvcmtzKQorCQlDRl9HTkFUX1RSWV9SVU4oW3Byb2NlZHVyZSBjb25mdGVzdDtdLAorW3dpdGggVGV4dF9JTzsKK3dpdGggR05BVC5PU19MaWI7Citwcm9jZWR1cmUgY29uZnRlc3QgaXMKK2JlZ2luCisgICBUZXh0X0lPLlB1dCAoIkhlbGxvIFdvcmxkIik7CisgICBUZXh0X0lPLk5ld19MaW5lOworICAgR05BVC5PU19MaWIuT1NfRXhpdCAoMCk7CitlbmQgY29uZnRlc3Q7XSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzXSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm9dKQorCQlBQ19NU0dfUkVTVUxUKCRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCkKKwlmaQorZmkKKworQUNfU1VCU1QoY2ZfYWRhX21ha2UpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfTE5fUyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTAvMDgvMTQgMTg6MjU6MzcKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBDb21iaW5lIGNoZWNrcyBmb3IgImxuIC1zIiBhbmQgImxuIC1zZiIsIHVwZGF0aW5nICRMTl9TIHRvIGluY2x1ZGUgIi1mIgorZG5sIG9wdGlvbiBpZiBpdCBpcyBzdXBwb3J0ZWQuCitBQ19ERUZVTihbQ0ZfUFJPR19MTl9TXSxbCitBQ19QUk9HX0xOX1MKK0FDX01TR19DSEVDS0lORyhpZiAkTE5fUyAtZiBvcHRpb25zIHdvcmspCisKK3JtIC1mIGNvbmYkJC5zcmMgY29uZiQkZHN0CitlY2hvID5jb25mJCQuZHN0CitlY2hvIGZpcnN0ID5jb25mJCQuc3JjCitpZiAkTE5fUyAtZiBjb25mJCQuc3JjIGNvbmYkJC5kc3QgMj4vZGV2L251bGw7IHRoZW4KKwljZl9wcm9nX2xuX3NmPXllcworZWxzZQorCWNmX3Byb2dfbG5fc2Y9bm8KK2ZpCitybSAtZiBjb25mJCQuZHN0IGNvbmYkJHNyYworQUNfTVNHX1JFU1VMVCgkY2ZfcHJvZ19sbl9zZikKKwordGVzdCAiJGNmX3Byb2dfbG5fc2YiID0geWVzICYmIExOX1M9IiRMTl9TIC1mIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9SRU1PVkVfREVGSU5FIHZlcnNpb246IDMgdXBkYXRlZDogMjAxMC8wMS8wOSAxMTowNTo1MAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBSZW1vdmUgYWxsIC1VIGFuZCAtRCBvcHRpb25zIHRoYXQgcmVmZXIgdG8gdGhlIGdpdmVuIHN5bWJvbCBmcm9tIGEgbGlzdAorZG5sIG9mIEMgY29tcGlsZXIgb3B0aW9ucy4gIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBwcm9ibGVtIHRoYXQgbm90IGFsbAorZG5sIGNvbXBpbGVycyBwcm9jZXNzIC1VIGFuZCAtRCBvcHRpb25zIGZyb20gbGVmdC10by1yaWdodCwgc28gYSAtVSBvcHRpb24KK2RubCBjYW5ub3QgYmUgdXNlZCB0byBjYW5jZWwgdGhlIGVmZmVjdCBvZiBhIHByZWNlZGluZyAtRCBvcHRpb24uCitkbmwKK2RubCAkMSA9IHRhcmdldCAod2hpY2ggY291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHNvdXJjZSB2YXJpYWJsZSkKK2RubCAkMiA9IHNvdXJjZSAoaW5jbHVkaW5nICckJykKK2RubCAkMyA9IHN5bWJvbCB0byByZW1vdmUKK2RlZmluZShbQ0ZfUkVNT1ZFX0RFRklORV0sCitbCiskMT1gZWNobyAiJDIiIHwgXAorCXNlZAktZSAncy8tW1tVRF1dJyIkMyInXCg9W1teIAldXSpcKVw/W1sgCV1dLyAvZycgXAorCQktZSAncy8tW1tVRF1dJyIkMyInXCg9W1teIAldXSpcKVw/WyRdLy9nJ2AKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUkVNT1ZFX0xJQiB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDcvMDIvMTcgMTQ6MTE6NTIKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgUmVtb3ZlIHRoZSBnaXZlbiBsaWJyYXJ5IGZyb20gdGhlIHN5bWJvbAorZG5sCitkbmwgJDEgPSB0YXJnZXQgKHdoaWNoIGNvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBzb3VyY2UgdmFyaWFibGUpCitkbmwgJDIgPSBzb3VyY2UgKGluY2x1ZGluZyAnJCcpCitkbmwgJDMgPSBsaWJyYXJ5IHRvIHJlbW92ZQorZGVmaW5lKFtDRl9SRU1PVkVfTElCXSwKK1sKKyMgcmVtb3ZlICQzIGxpYnJhcnkgZnJvbSAkMgorJDE9YGVjaG8gIiQyIiB8IHNlZCAtZSAncy8tbCQzW1sgCV1dLy9nJyAtZSAncy8tbCQzWyRdLy8nYAorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9TSEFSRURfT1BUUyB2ZXJzaW9uOiA4OCB1cGRhdGVkOiAyMDE1LzA4LzA1IDIwOjQ0OjI4CitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIEF0dGVtcHQgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBDQy9MRCBvcHRpb25zIGZvciBjcmVhdGluZyBhIHNoYXJlZAorZG5sIGxpYnJhcnkuCitkbmwKK2RubCBOb3RlczoKK2RubCBhKSAke0xPQ0FMX0xERkxBR1N9IGlzIHVzZWQgdG8gbGluayBleGVjdXRhYmxlcyB0aGF0IHdpbGwgcnVuIHdpdGhpbgorZG5sIHRoZSBidWlsZC10cmVlLCBpLmUuLCBieSBtYWtpbmcgdXNlIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCBhcmUgY29tcGlsZWQgaW4KK2RubCAkcmVsX2J1aWxkZGlyL2xpYiBXZSBhdm9pZCBjb21waWxpbmctaW4gYSAkcmVsX2J1aWxkZGlyL2xpYiBwYXRoIGZvciB0aGUKK2RubCBzaGFyZWQgbGlicmFyeSBzaW5jZSB0aGF0IGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cyBhdCBydW50aW1lLgorZG5sIGIpICR7TE9DQUxfTERGTEFHUzJ9IGhhcyB0aGUgc2FtZSBpbnRlbnRpb24gYnV0IGFzc3VtZXMgdGhhdCB0aGUgc2hhcmVkCitkbmwgbGlicmFyaWVzIGFyZSBjb21waWxlZCBpbiAuLi8uLi9saWIKK2RubAorZG5sIFRoZSB2YXJpYWJsZSAnY2ZfY3ZfZG9fc3ltbGlua3MnIGlzIHVzZWQgdG8gY29udHJvbCB3aGV0aGVyIHdlIGNvbmZpZ3VyZQorZG5sIHRvIGluc3RhbGwgc3ltYm9saWMgbGlua3MgdG8gdGhlIHJlbC9hYmkgdmVyc2lvbnMgb2Ygc2hhcmVkIGxpYnJhcmllcy4KK2RubAorZG5sIFRoZSB2YXJpYWJsZSAnY2ZfY3Zfc2hsaWJfdmVyc2lvbicgY29udHJvbHMgd2hldGhlciB3ZSB1c2UgdGhlIHJlbCBvciBhYmkKK2RubCB2ZXJzaW9uIHdoZW4gbWFraW5nIHN5bWJvbGljIGxpbmtzLgorZG5sCitkbmwgVGhlIHZhcmlhYmxlICdjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4JyBjb250cm9scyB3aGV0aGVyIHNoYXJlZCBsaWJyYXJ5CitkbmwgdmVyc2lvbiBudW1iZXJzIGFyZSBpbmZpeCAoZXg6IGxpYm5jdXJzZXMuPHZlcj4uZHlsaWIpIG9yIHBvc3RmaXgKK2RubCAoZXg6IGxpYm5jdXJzZXMuc28uPHZlcj4pLgorZG5sCitkbmwgU29tZSBsb2FkZXJzIGxlYXZlICdzb19sb2NhdGlvbnMnIGx5aW5nIGFyb3VuZC4gIEl0J3MgbmljZSB0byBjbGVhbiB1cC4KK0FDX0RFRlVOKFtDRl9TSEFSRURfT1BUU10sCitbCisJQUNfUkVRVUlSRShbQ0ZfTERfUlBBVEhfT1BUXSkKKwlSTV9TSEFSRURfT1BUUz0KKwlMT0NBTF9MREZMQUdTPQorCUxPQ0FMX0xERkxBR1MyPQorCUxEX1NIQVJFRF9PUFRTPQorCUlOU1RBTExfTElCPSItbSA2NDQiCisJOiAke3JlbF9idWlsZGRpcjo9Ln0KKworCXNobGliZGlyPSRsaWJkaXIKKwlBQ19TVUJTVChzaGxpYmRpcikKKworCU1BS0VfRExMUz0iIyIKKwlBQ19TVUJTVChNQUtFX0RMTFMpCisKKwljZl9jdl9kb19zeW1saW5rcz1ubworCWNmX2xkX3JwYXRoX29wdD0KKwl0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyAmJiBjZl9sZF9ycGF0aF9vcHQ9IiRMRF9SUEFUSF9PUFQiCisKKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgcmVsZWFzZS9hYmkgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3Igc2hhcmVkIGxpYnMpCisJQUNfQVJHX1dJVEgoc2hsaWItdmVyc2lvbiwKKwlbICAtLXdpdGgtc2hsaWItdmVyc2lvbj1YICBTcGVjaWZ5IHJlbCBvciBhYmkgdmVyc2lvbiBmb3Igc2hhcmVkIGxpYnNdLAorCVt0ZXN0IC16ICIkd2l0aHZhbCIgJiYgd2l0aHZhbD1hdXRvCisJY2FzZSAkd2l0aHZhbCBpbgorCSh5ZXMpCisJCWNmX2N2X3NobGliX3ZlcnNpb249YXV0bworCQk7OworCShyZWx8YWJpfGF1dG98bm8pCisJCWNmX2N2X3NobGliX3ZlcnNpb249JHdpdGh2YWwKKwkJOzsKKwkoKikKKwkJQUNfTVNHX0VSUk9SKFtvcHRpb24gdmFsdWUgbXVzdCBiZSBvbmUgb2Y6IHJlbCwgYWJpLCBhdXRvIG9yIG5vXSkKKwkJOzsKKwllc2FjCisJXSxbY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hdXRvXSkKKwlBQ19NU0dfUkVTVUxUKCRjZl9jdl9zaGxpYl92ZXJzaW9uKQorCisJY2ZfY3Zfcm1fc29fbG9jcz1ubworCWNmX3RyeV9jZmxhZ3M9CisKKwkjIFNvbWUgbGVzcy1jYXBhYmxlIHBvcnRzIG9mIGdjYyBzdXBwb3J0IG9ubHkgLWZwaWMKKwlDQ19TSEFSRURfT1BUUz0KKwlpZiB0ZXN0ICIkR0NDIiA9IHllcworCXRoZW4KKwkJQUNfTVNHX0NIRUNLSU5HKHdoaWNoICRDQyBvcHRpb24gdG8gdXNlKQorCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJZm9yIENDX1NIQVJFRF9PUFRTIGluIC1mUElDIC1mcGljICcnCisJCWRvCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkQ0NfU0hBUkVEX09QVFMiCisJCQlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGlvLmg+XSxbaW50IHggPSAxXSxbYnJlYWtdLFtdKQorCQlkb25lCisJCUFDX01TR19SRVNVTFQoJENDX1NIQVJFRF9PUFRTKQorCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwlmaQorCisJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD1ubworCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoYWl4NC5bMy05XSp8YWl4W1s1LTddXSopCisJCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJCQlDQ19TSEFSRURfT1BUUz0nLVdsLC1icnRsJworCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLXNoYXJlZCAtV2wsLWJydGwgLVdsLC1ibGlicGF0aDoke1JQQVRIX0xJU1R9Oi91c3IvbGliIC1vIFskXUAnCisJCWVsc2UKKwkJCUNDX1NIQVJFRF9PUFRTPSctYnJ0bCcKKwkJCSMgYXMgd2VsbCBhcyAnLXFwaWM9bGFyZ2UgLUcnIG9yIHBlcmhhcHMgIi1iTTpTUkUgLWJub2VudHJ5IC1iZXhwYWxsIgorCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLUcgLVdsLC1icnRsIC1XbCwtYmxpYnBhdGg6JHtSUEFUSF9MSVNUfTovdXNyL2xpYiAtbyBbJF1AJworCQlmaQorCQk7OworCShiZW9zKikKKwkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1vICRbQF0gLVhsaW5rZXIgLXNvbmFtZT1gYmFzZW5hbWUgJFtAXWAgLW5vc3RhcnQgLWUgMCcKKwkJOzsKKwkoY3lnd2luKikKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JFNIRUxMJyAnJHJlbF9idWlsZGRpcicvbWtfc2hhcmVkX2xpYi5zaCBbJF1AIFskXXtDQ30gWyRde0NGTEFHU30nCisJCVJNX1NIQVJFRF9PUFRTPSIkUk1fU0hBUkVEX09QVFMgJHJlbF9idWlsZGRpci9ta19zaGFyZWRfbGliLnNoICouZGxsLmEiCisJCWNmX2N2X3NobGliX3ZlcnNpb249Y3lnZGxsCisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9Y3lnZGxsCisJCXNobGliZGlyPSRiaW5kaXIKKwkJTUFLRV9ETExTPQorCQljYXQgPm1rX3NoYXJlZF9saWIuc2ggPDwtQ0ZfRU9GCisJCSMhJFNIRUxMCisJCVNIQVJFRF9MSUI9XFskXTEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlxbJF0xIiB8IHNlZCAtZSAncy9jeWcvbGliLycgLWUgJ3MvW1swLTldXSpcLmRsbFskXS8uZGxsLmEvJ1xgCisJCXNoaWZ0CisJCWNhdCA8PC1FT0YKKwkJTGlua2luZyBzaGFyZWQgbGlicmFyeQorCQkqKiBTSEFSRURfTElCIFxbJF1TSEFSRURfTElCCisJCSoqIElNUE9SVF9MSUIgXFskXUlNUE9SVF9MSUIKK0VPRgorCQlleGVjIFxbJF0qIC1zaGFyZWQgLVdsLC0tb3V0LWltcGxpYj1cWyRde0lNUE9SVF9MSUJ9IC1XbCwtLWV4cG9ydC1hbGwtc3ltYm9scyAtbyBcWyRde1NIQVJFRF9MSUJ9CitDRl9FT0YKKwkJY2htb2QgK3ggbWtfc2hhcmVkX2xpYi5zaAorCQk7OworCShtc3lzKikKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JFNIRUxMJyAnJHJlbF9idWlsZGRpcicvbWtfc2hhcmVkX2xpYi5zaCBbJF1AIFskXXtDQ30gWyRde0NGTEFHU30nCisJCVJNX1NIQVJFRF9PUFRTPSIkUk1fU0hBUkVEX09QVFMgJHJlbF9idWlsZGRpci9ta19zaGFyZWRfbGliLnNoICouZGxsLmEiCisJCWNmX2N2X3NobGliX3ZlcnNpb249bXN5c2RsbAorCQljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PW1zeXNkbGwKKwkJc2hsaWJkaXI9JGJpbmRpcgorCQlNQUtFX0RMTFM9CisJCWNhdCA+bWtfc2hhcmVkX2xpYi5zaCA8PC1DRl9FT0YKKwkJIyEkU0hFTEwKKwkJU0hBUkVEX0xJQj1cWyRdMQorCQlJTVBPUlRfTElCPVxgZWNobyAiXFskXTEiIHwgc2VkIC1lICdzL21zeXMtL2xpYi8nIC1lICdzL1tbMC05XV0qXC5kbGxbJF0vLmRsbC5hLydcYAorCQlzaGlmdAorCQljYXQgPDwtRU9GCisJCUxpbmtpbmcgc2hhcmVkIGxpYnJhcnkKKwkJKiogU0hBUkVEX0xJQiBcWyRdU0hBUkVEX0xJQgorCQkqKiBJTVBPUlRfTElCIFxbJF1JTVBPUlRfTElCCitFT0YKKwkJZXhlYyBcWyRdKiAtc2hhcmVkIC1XbCwtLW91dC1pbXBsaWI9XFskXXtJTVBPUlRfTElCfSAtV2wsLS1leHBvcnQtYWxsLXN5bWJvbHMgLW8gXFskXXtTSEFSRURfTElCfQorQ0ZfRU9GCisJCWNobW9kICt4IG1rX3NoYXJlZF9saWIuc2gKKwkJOzsKKwkoZGFyd2luKikKKwkJY2ZfdHJ5X2NmbGFncz0ibm8tY3BwLXByZWNvbXAiCisJCUNDX1NIQVJFRF9PUFRTPSItZHluYW1pYyIKKwkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1keW5hbWljbGliIC1pbnN0YWxsX25hbWUgJHtsaWJkaXJ9L2BiYXNlbmFtZSAkW0BdYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICR7QUJJX1ZFUlNJT059IC1jdXJyZW50X3ZlcnNpb24gJHtBQklfVkVSU0lPTn0gLW8gJFtAXScKKwkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQorCQljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PXllcworCQlBQ19DQUNIRV9DSEVDSyhbaWYgbGQgLXNlYXJjaF9wYXRoc19maXJzdCB3b3Jrc10sIGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0LCBbCisJCQljZl9zYXZlX0xERkxBR1M9JExERkxBR1MKKwkJCUxERkxBR1M9IiRMREZMQUdTIC1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0IgorCQkJQUNfVFJZX0xJTksoLCBbaW50IGk7XSwgY2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3Q9eWVzLCBjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdD1ubykKKwkJCQlMREZMQUdTPSRjZl9zYXZlX0xERkxBR1NdKQorCQlpZiB0ZXN0ICRjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdCA9IHllczsgdGhlbgorCQkJTERGTEFHUz0iJExERkxBR1MgLVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QiCisJCWZpCisJCTs7CisJKGhwdXhbWzctOF1dKikKKwkJIyBIUC1VWCA4LjA3IGxkIGxhY2tzICIrYiIgb3B0aW9uIHVzZWQgZm9yIGxpYmRpciBzZWFyY2gtbGlzdAorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPScrWicKKwkJZmkKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWIgLW8gJFtAXScKKwkJSU5TVEFMTF9MSUI9Ii1tIDU1NSIKKwkJOzsKKwkoaHB1eCopCisJCSMgKHRlc3RlZCB3aXRoIGdjYyAyLjcuMiAtLSBJIGRvbid0IGhhdmUgYzg5KQorCQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQkJTERfU0hBUkVEX09QVFM9Jy1YbGlua2VyICtiIC1YbGlua2VyICR7bGliZGlyfScKKwkJZWxzZQorCQkJQ0NfU0hBUkVEX09QVFM9JytaJworCQkJTERfU0hBUkVEX09QVFM9Jy1XbCwrYiwke2xpYmRpcn0nCisJCWZpCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9ICtiICR7bGliZGlyfSAtYiAtbyAkW0BdJworCQkjIEhQLVVYIHNoYXJlZCBsaWJyYXJpZXMgbXVzdCBiZSBleGVjdXRhYmxlLCBhbmQgc2hvdWxkIGJlCisJCSMgcmVhZG9ubHkgdG8gZXhwbG9pdCBhIHF1aXJrIGluIHRoZSBtZW1vcnkgbWFuYWdlci4KKwkJSU5TVEFMTF9MSUI9Ii1tIDU1NSIKKwkJOzsKKwkoaW50ZXJpeCopCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCQljZl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwkJZWxzZQorCQkJY2Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwkJZmkKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1ycGF0aCwke1JQQVRIX0xJU1R9IC1XbCwtaCwnJGNmX3NoYXJlZF9zb25hbWUnIC1vICRAJworCQk7OworCShpcml4KikKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkRVhUUkFfTERGTEFHUyIKKwkJZmkKKwkJIyB0ZXN0ZWQgd2l0aCBJUklYIDUuMiBhbmQgJ2NjJy4KKwkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisJCQlDQ19TSEFSRURfT1BUUz0nLUtQSUMnCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1yZGF0YV9zaGFyZWQgLXNvbmFtZSBgYmFzZW5hbWUgJFtAXWAgLW8gJFtAXScKKwkJZWxzZQorCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLXNoYXJlZCAtV2wsLXNvbmFtZSxgYmFzZW5hbWUgJFtAXWAgLW8gJFtAXScKKwkJZmkKKwkJY2ZfY3Zfcm1fc29fbG9jcz15ZXMKKwkJOzsKKwkobGludXgqfGdudSp8aypic2QqLWdudSkKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQlDRl9TSEFSRURfU09OQU1FCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkW0BdJworCQk7OworCShtaW5ndyopCisJCWNmX2N2X3NobGliX3ZlcnNpb249bWluZ3cKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD1taW5ndworCQlzaGxpYmRpcj0kYmluZGlyCisJCU1BS0VfRExMUz0KKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSItV2wsLS1lbmFibGUtYXV0by1pbXBvcnQiCisJCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCisJCQlFWFRSQV9MREZMQUdTPSItV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgJEVYVFJBX0xERkxBR1MiCisJCWZpCisJCUNDX1NIQVJFRF9PUFRTPQorCQlNS19TSEFSRURfTElCPSRTSEVMTCcgJyRyZWxfYnVpbGRkaXInL21rX3NoYXJlZF9saWIuc2ggWyRdQCBbJF17Q0N9IFskXXtDRkxBR1N9JworCQlSTV9TSEFSRURfT1BUUz0iJFJNX1NIQVJFRF9PUFRTICRyZWxfYnVpbGRkaXIvbWtfc2hhcmVkX2xpYi5zaCAqLmRsbC5hIgorCQljYXQgPm1rX3NoYXJlZF9saWIuc2ggPDwtQ0ZfRU9GCisJCSMhJFNIRUxMCisJCVNIQVJFRF9MSUI9XFskXTEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlxbJF0xIiB8IHNlZCAtZSAncy9bWzAtOV1dKlwuZGxsWyRdLy5kbGwuYS8nXGAKKwkJc2hpZnQKKwkJY2F0IDw8LUVPRgorCQlMaW5raW5nIHNoYXJlZCBsaWJyYXJ5CisJCSoqIFNIQVJFRF9MSUIgXFskXVNIQVJFRF9MSUIKKwkJKiogSU1QT1JUX0xJQiBcWyRdSU1QT1JUX0xJQgorRU9GCisJCWV4ZWMgXFskXSogLXNoYXJlZCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQsLS1vdXQtaW1wbGliPVxbJF17SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFxbJF17U0hBUkVEX0xJQn0KK0NGX0VPRgorCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoCisJCTs7CisJKG9wZW5ic2RbWzItOV1dLip8bWlyYnNkKikKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgorCQlDRl9TSEFSRURfU09OQU1FCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkW0BdJworCQk7OworCShudG8tcW54KnxvcGVuYnNkKnxmcmVlYnNkW1sxMl1dLiopCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1Cc2hhcmVhYmxlIC1vICRbQF0nCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJOzsKKwkoZHJhZ29uZmx5KnxmcmVlYnNkKikKKwkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgJiYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRMT0NBTF9MREZMQUdTIgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCWZpCisJCUNGX1NIQVJFRF9TT05BTUUKKwkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1zaGFyZWQgLVdsLC1zb25hbWUsJyRjZl9jdl9zaGFyZWRfc29uYW1lJywtc3RhdHMsLWxjIC1vICRbQF0nCisJCTs7CisJKG5ldGJzZCopCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCQoTE9DQUxfTElCRElSKSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQkJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0bzsgdGhlbgorCQkJaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvOyB0aGVuCisJCQkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hYmkKKwkJCWVsc2UKKwkJCQljZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCQkJZmkKKwkJCWZpCisJCQlDRl9TSEFSRURfU09OQU1FCisJCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRbQF0nCisJCWVsc2UKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1XbCwtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSAtbyAkW0BdJworCQlmaQorCQk7OworCShvc2YqfG1scysqKQorCQkjIHRlc3RlZCB3aXRoIE9TRi8xIFYzLjIgYW5kICdjYycKKwkJIyB0ZXN0ZWQgd2l0aCBPU0YvMSBWMy4yIGFuZCBnY2MgMi42LjMgKGJ1dCB0aGUgYysrIGRlbW8gZGlkbid0CisJCSMgbGluayB3aXRoIHNoYXJlZCBsaWJzKS4KKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLXNldF92ZXJzaW9uICR7UkVMX1ZFUlNJT059OiR7QUJJX1ZFUlNJT059IC1leHBlY3RfdW5yZXNvbHZlZCAiKiIgLXNoYXJlZCAtc29uYW1lIGBiYXNlbmFtZSAkW0BdYCcKKwkJY2FzZSAkaG9zdF9vcyBpbgorCQkob3NmNCopCisJCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IC1tc3ltIgorCQkJOzsKKwkJZXNhYworCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IicgLW8gJFtAXScKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQljZl9jdl9ybV9zb19sb2NzPXllcworCQk7OworCShzY28zLjJ2NSopICAjIGFsc28gdXcyKiBhbmQgVVc3OiBob3BzIDEzLUFwci05OAorCQkjIHRlc3RlZCB3aXRoIG9zcjUuMC41CisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1iZWxmIC1LUElDJworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSAtZHkgLUcgLWggYGJhc2VuYW1lICRbQF0gLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfSAtbyBbJF1AJworCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCSMgb25seSB3YXkgaXMgdG8gc2V0IExEX1JVTl9QQVRIIGJ1dCBubyBzd2l0Y2ggZm9yIGl0CisJCQlSVU5fUEFUSD0kbGliZGlyCisJCWZpCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJTElOS19QUk9HUz0nTERfUlVOX1BBVEg9JHtsaWJkaXJ9JworCQlMSU5LX1RFU1RTPSdQd2Q9YHB3ZGA7TERfUlVOX1BBVEg9YGRpcm5hbWUgJCR7UHdkfWAvbGliJworCQk7OworCShzdW5vczQqKQorCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDQuMS4xIGFuZCBnY2MgMi43LjAKKwkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisJCQlDQ19TSEFSRURfT1BUUz0nLUtQSUMnCisJCWZpCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1hc3NlcnQgcHVyZS10ZXh0IC1vICRbQF0nCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJOzsKKwkoc29sYXJpczIqKQorCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDUuNS4xIChzb2xhcmlzIDIuNS4xKSBhbmQgZ2NjIDIuNy4yCisJCSMgdGVzdGVkIHdpdGggU3VuT1MgNS4xMCAoc29sYXJpcyAxMCkgYW5kIGdjYyAzLjQuMworCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9Ii1SIFwkKExPQ0FMX0xJQkRJUik6XCR7bGliZGlyfSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJZmkKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSItUiBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQlDRl9TSEFSRURfU09OQU1FCisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJCQlmb3IgY2Zfc2hhcmVkX29wdHMgaW4gLXhjb2RlPXBpYzMyIC14Y29kZT1waWMxMyAtS1BJQyAtS3BpYyAtTworCQkJZG8KKwkJCQlDRkxBR1M9IiRjZl9zaGFyZWRfb3B0cyAkY2Zfc2F2ZV9DRkxBR1MiCisJCQkJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzdGRpby5oPl0sW3ByaW50ZigiSGVsbG9cbiIpO10sW2JyZWFrXSkKKwkJCWRvbmUKKwkJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCQkJQ0NfU0hBUkVEX09QVFM9JGNmX3NoYXJlZF9vcHRzCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtZHkgLUcgLWggJyRjZl9jdl9zaGFyZWRfc29uYW1lJyAtbyAkW0BdJworCQllbHNlCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1keSAtRyAtaCAnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRbQF0nCisJCWZpCisJCTs7CisJKHN5c3Y1dXc3Knx1bml4X3N2KikKKwkJIyB0ZXN0ZWQgd2l0aCBVbml4V2FyZSA3LjEuMCAoZ2NjIDIuOTUuMiBhbmQgY2MpCisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSAtZCB5IC1HIC1vIFskXUAnCisJCTs7CisJKCopCisJCUNDX1NIQVJFRF9PUFRTPSd1bmtub3duJworCQlNS19TSEFSRURfTElCPSdlY2hvIHVua25vd24nCisJCTs7CisJZXNhYworCisJIyBUaGlzIHdvcmtzIGlmIHRoZSBsYXN0IHRva2VucyBpbiAkTUtfU0hBUkVEX0xJQiBhcmUgdGhlIC1vIHRhcmdldC4KKwljYXNlICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgaW4KKwkocmVsfGFiaSkKKwkJY2FzZSAiJE1LX1NIQVJFRF9MSUIiIGluCisJCSgqJy1vICRbQF0nKQorCQkJdGVzdCAiJGNmX2N2X2RvX3N5bWxpbmtzIiA9IG5vICYmIGNmX2N2X2RvX3N5bWxpbmtzPXllcworCQkJOzsKKwkJKCopCisJCQlBQ19NU0dfV0FSTihpZ25vcmVkIC0td2l0aC1zaGxpYi12ZXJzaW9uKQorCQkJOzsKKwkJZXNhYworCQk7OworCWVzYWMKKworCWlmIHRlc3QgLW4gIiRjZl90cnlfY2ZsYWdzIgorCXRoZW4KK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIF9fb2xpbmVfXyAiJHthc19tZTotY29uZmlndXJlfSIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbW11dKQoreworCXByaW50ZigiaGVsbG9cbiIpOworCXJldHVybiAoYXJndltbYXJnYy0xXV0gPT0gMCkgOworfQorRU9GCisJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQlmb3IgY2Zfb3B0IGluICRjZl90cnlfY2ZsYWdzCisJCWRvCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtJGNmX29wdCIKKwkJCUFDX01TR19DSEVDS0lORyhpZiBDRkxBR1Mgb3B0aW9uIC0kY2Zfb3B0IHdvcmtzKQorCQkJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKwkJCQlBQ19NU0dfUkVTVUxUKHllcykKKwkJCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJCWVsc2UKKwkJCQlBQ19NU0dfUkVTVUxUKG5vKQorCQkJZmkKKwkJZG9uZQorCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwlmaQorCisKKwkjIFJQQVRIX0xJU1QgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcworCXRlc3QgLW4gIiRjZl9sZF9ycGF0aF9vcHQiICYmIE1LX1NIQVJFRF9MSUI9IiRNS19TSEFSRURfTElCICRjZl9sZF9ycGF0aF9vcHRcJHtSUEFUSF9MSVNUfSIKKwl0ZXN0IC16ICIkUlBBVEhfTElTVCIgJiYgUlBBVEhfTElTVD0iXCR7bGliZGlyfSIKKworCXRlc3QgJGNmX2N2X3JtX3NvX2xvY3MgPSB5ZXMgJiYgUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyBzb19sb2NhdGlvbnMiCisKKwlDRl9WRVJCT1NFKENDX1NIQVJFRF9PUFRTOiAkQ0NfU0hBUkVEX09QVFMpCisJQ0ZfVkVSQk9TRShNS19TSEFSRURfTElCOiAgJE1LX1NIQVJFRF9MSUIpCisKKwlBQ19TVUJTVChDQ19TSEFSRURfT1BUUykKKwlBQ19TVUJTVChMRF9SUEFUSF9PUFQpCisJQUNfU1VCU1QoTERfU0hBUkVEX09QVFMpCisJQUNfU1VCU1QoTUtfU0hBUkVEX0xJQikKKwlBQ19TVUJTVChSTV9TSEFSRURfT1BUUykKKworCUFDX1NVQlNUKExJTktfUFJPR1MpCisJQUNfU1VCU1QoTElOS19URVNUUykKKworCUFDX1NVQlNUKEVYVFJBX0xERkxBR1MpCisJQUNfU1VCU1QoTE9DQUxfTERGTEFHUykKKwlBQ19TVUJTVChMT0NBTF9MREZMQUdTMikKKworCUFDX1NVQlNUKElOU1RBTExfTElCKQorCUFDX1NVQlNUKFJQQVRIX0xJU1QpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1NIQVJFRF9TT05BTUUgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDA4LzA5LzA4IDE4OjM0OjQzCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIHV0aWxpdHkgbWFjcm8gZm9yIENGX1NIQVJFRF9PUFRTLCBjb25zdHJ1Y3RzICIkY2ZfY3Zfc2hhcmVkX3NvbmFtZSIgZm9yCitkbmwgc3Vic3RpdHV0aW9uIGludG8gTUtfU0hBUkVEX0xJQiBzdHJpbmcgZm9yIHRoZSAiLXNvbmFtZSIgKG9yIHNpbWlsYXIpCitkbmwgb3B0aW9uLgorZG5sCitkbmwgJDEgaXMgdGhlIGRlZmF1bHQgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIi4KK2RubCBJZiBtaXNzaW5nLCB1c2UgInJlbCIuCitkZWZpbmUoW0NGX1NIQVJFRF9TT05BTUVdLAorWworCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1pZmVsc2UoJDEsLHJlbCwkMSkKKwlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRbQF0gLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwllbHNlCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkW0BdYCcKKwlmaQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9TVFJJUF9HX09QVCB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDIvMTIvMjEgMTk6MjU6NTIKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sCVJlbW92ZSAiLWciIG9wdGlvbiBmcm9tIHRoZSBjb21waWxlciBvcHRpb25zCitBQ19ERUZVTihbQ0ZfU1RSSVBfR19PUFRdLAorWyQxPWBlY2hvICR7JDF9IHwgc2VkIC1lICdzJS1nICUlJyAtZSAncyUtZyQlJSdgXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9TVUJESVJfUEFUSCB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTQvMTIvMDQgMDQ6MzM6MDYKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIENvbnN0cnVjdCBhIHNlYXJjaC1saXN0IGZvciBhIG5vbnN0YW5kYXJkIGhlYWRlci9saWItZmlsZQorZG5sCSQxID0gdGhlIHZhcmlhYmxlIHRvIHJldHVybiBhcyByZXN1bHQKK2RubAkkMiA9IHRoZSBwYWNrYWdlIG5hbWUKK2RubAkkMyA9IHRoZSBzdWJkaXJlY3RvcnksIGUuZy4sIGJpbiwgaW5jbHVkZSBvciBsaWIKK0FDX0RFRlVOKFtDRl9TVUJESVJfUEFUSF0sCitbCiskMT0KKworQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLCQzLCRwcmVmaXgsTk9ORSkKKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwlbJF1IT01FCitkbworCUNGX0FERF9TVUJESVJfUEFUSCgkMSwkMiwkMywkY2Zfc3ViZGlyX3ByZWZpeCwkcHJlZml4KQorZG9uZQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9URVJNX0hFQURFUiB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIExvb2sgZm9yIHRlcm0uaCwgd2hpY2ggaXMgcGFydCBvZiBYL09wZW4gY3Vyc2VzLiAgSXQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlCitkbmwgdG8gdGVybWluZm8gZGF0YWJhc2UuICBVc3VhbGx5IGl0IGlzIGluIHRoZSBzYW1lIGluY2x1ZGUtcGF0aCBhcyBjdXJzZXMuaCwKK2RubCBidXQgc29tZSBwYWNrYWdlcnMgY2hhbmdlIHRoaXMsIGJyZWFraW5nIHZhcmlvdXMgYXBwbGljYXRpb25zLgorQUNfREVGVU4oW0NGX1RFUk1fSEVBREVSXSxbCitBQ19DQUNIRV9DSEVDSyhmb3IgdGVybWluZm8gaGVhZGVyLCBjZl9jdl90ZXJtX2hlYWRlcixbCitjYXNlICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXJ9IGluCisoKi9uY3Vyc2VzLmh8Ki9uY3Vyc2Vzdy5oKQorCWNmX3Rlcm1faGVhZGVyPWBlY2hvICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiIHwgc2VkIC1lICdzJW5jdXJzZXNbW14uXV0qXC5oJCV0ZXJtLmglJ2AKKwk7OworKCopCisJY2ZfdGVybV9oZWFkZXI9dGVybS5oCisJOzsKK2VzYWMKKworZm9yIGNmX3Rlc3QgaW4gJGNmX3Rlcm1faGVhZGVyICJuY3Vyc2VzL3Rlcm0uaCIgIm5jdXJzZXN3L3Rlcm0uaCIKK2RvCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPCRjZl90ZXN0PgorXSxbaW50IHggPSBhdXRvX2xlZnRfbWFyZ2luXSxbCisJY2ZfY3ZfdGVybV9oZWFkZXI9IiRjZl90ZXN0Il0sWworCWNmX2N2X3Rlcm1faGVhZGVyPXVua25vd24KKwldKQorCXRlc3QgIiRjZl9jdl90ZXJtX2hlYWRlciIgIT0gdW5rbm93biAmJiBicmVhaworZG9uZQorXSkKKworIyBTZXQgZGVmaW5pdGlvbnMgdG8gYWxsb3cgaWZkZWYnaW5nIHRvIGFjY29tbW9kYXRlIHN1YmRpcmVjdG9yaWVzCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisoKnRlcm0uaCkKKwlBQ19ERUZJTkUoSEFWRV9URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSB0ZXJtLmhdKQorCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisobmN1cnNlcy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU19URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzL3Rlcm0uaF0pCisJOzsKKyhuY3Vyc2Vzdy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU1dfVEVSTV9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlc3cvdGVybS5oXSkKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9UT1BfQlVJTERESVIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEzLzA3LzI3IDE3OjM4OjMyCitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRGVmaW5lIGEgdG9wX2J1aWxkZGlyIHN5bWJvbCwgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KK0FDX0RFRlVOKFtDRl9UT1BfQlVJTERESVJdLAorWwordG9wX2J1aWxkZGlyPWlmZWxzZSgkMSwsYHB3ZGAsJDEpCitBQ19TVUJTVCh0b3BfYnVpbGRkaXIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1RSWV9YT1BFTl9TT1VSQ0UgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDExLzEwLzMwIDE3OjA5OjUwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIElmIF9YT1BFTl9TT1VSQ0UgaXMgbm90IGRlZmluZWQgaW4gdGhlIGNvbXBpbGUgZW52aXJvbm1lbnQsIGNoZWNrIGlmIHdlCitkbmwgY2FuIGRlZmluZSBpdCBzdWNjZXNzZnVsbHkuCitBQ19ERUZVTihbQ0ZfVFJZX1hPUEVOX1NPVVJDRV0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFLGNmX2N2X3hvcGVuX3NvdXJjZSxbCisJQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorXSxbCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sCisJW2NmX2N2X3hvcGVuX3NvdXJjZT1ub10sCisJW2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKKwkgQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorXSxbCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwlbY2ZfY3ZfeG9wZW5fc291cmNlPW5vXSwKKwlbY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0VdKQorCUNQUEZMQUdTPSIkY2Zfc2F2ZSIKKwldKQorXSkKKworaWYgdGVzdCAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgIT0gbm8gOyB0aGVuCisJQ0ZfUkVNT1ZFX0RFRklORShDRkxBR1MsJENGTEFHUyxfWE9QRU5fU09VUkNFKQorCUNGX1JFTU9WRV9ERUZJTkUoQ1BQRkxBR1MsJENQUEZMQUdTLF9YT1BFTl9TT1VSQ0UpCisJY2ZfdGVtcF94b3Blbl9zb3VyY2U9Ii1EX1hPUEVOX1NPVVJDRT0kY2ZfY3ZfeG9wZW5fc291cmNlIgorCUNGX0FERF9DRkxBR1MoJGNmX3RlbXBfeG9wZW5fc291cmNlKQorZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfVVBQRVIgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDAxLzAxLzI5IDIzOjQwOjU5CitkbmwgLS0tLS0tLS0KK2RubCBNYWtlIGFuIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIGEgdmFyaWFibGUKK2RubCAkMT11cHBlcmNhc2UoJDIpCitBQ19ERUZVTihbQ0ZfVVBQRVJdLAorWworJDE9YGVjaG8gIiQyIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfVVRGOF9MSUIgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCitkbmwgLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgbXVsdGlieXRlIHN1cHBvcnQsIGFuZCBpZiBub3QgZm91bmQsIHV0ZjggY29tcGF0aWJpbGl0eSBsaWJyYXJ5CitBQ19ERUZVTihbQ0ZfVVRGOF9MSUJdLAorWworQUNfQ0FDSEVfQ0hFQ0soZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc3VwcG9ydCxjZl9jdl91dGY4X2xpYixbCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwlBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8c3RkbGliLmg+XSxbcHV0d2MoMCwwKTtdLAorCVtjZl9jdl91dGY4X2xpYj15ZXNdLAorCVtDRl9GSU5EX0xJTktBR0UoWworI2luY2x1ZGUgPGxpYnV0ZjguaD5dLFtwdXR3YygwLDApO10sdXRmOCwKKwkJW2NmX2N2X3V0ZjhfbGliPWFkZC1vbl0sCisJCVtjZl9jdl91dGY4X2xpYj1ub10pCitdKV0pCisKKyMgSEFWRV9MSUJVVEY4X0ggaXMgdXNlZCBieSBuY3Vyc2VzIGlmIGN1cnNlcy5oIGlzIHNoYXJlZCBiZXR3ZWVuCisjIG5jdXJzZXMvbmN1cnNlc3c6CitpZiB0ZXN0ICIkY2ZfY3ZfdXRmOF9saWIiID0gImFkZC1vbiIgOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfTElCVVRGOF9ILDEsW0RlZmluZSB0byAxIGlmIHdlIHNob3VsZCBpbmNsdWRlIGxpYnV0ZjguaF0pCisJQ0ZfQUREX0lOQ0RJUigkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCkKKwlDRl9BRERfTElCRElSKCRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCkKKwlDRl9BRERfTElCUygkY2ZfY3ZfbGlicmFyeV9maWxlX3V0ZjgpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9WRVJCT1NFIHZlcnNpb246IDMgdXBkYXRlZDogMjAwNy8wNy8yOSAwOTo1NToxMgorZG5sIC0tLS0tLS0tLS0KK2RubCBVc2UgQUNfVkVSQk9TRSB3L28gdGhlIHdhcm5pbmdzCitBQ19ERUZVTihbQ0ZfVkVSQk9TRV0sCitbdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkkMSIgMT4mQUNfRkRfTVNHCitDRl9NU0dfTE9HKFskMV0pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dFQUtfU1lNQk9MUyB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDgvMDgvMTYgMTk6MTg6MDYKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgY29tcGlsZXItc3VwcG9ydCBmb3Igd2VhayBzeW1ib2xzLgorZG5sIFRoaXMgd29ya3Mgd2l0aCAicmVjZW50IiBnY2MuCitBQ19ERUZVTihbQ0ZfV0VBS19TWU1CT0xTXSxbCitBQ19DQUNIRV9DSEVDSyhpZiAkQ0Mgc3VwcG9ydHMgd2VhayBzeW1ib2xzLGNmX2N2X3dlYWtfc3ltYm9scyxbCisKK0FDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzdGRpby5oPl0sCitbCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyMgIGlmIGRlZmluZWQgX19VU0VfSVNPQzk5CisjICAgIGRlZmluZSBfY2F0X3ByYWdtYShleHApCV9QcmFnbWEoI2V4cCkKKyMgICAgZGVmaW5lIF93ZWFrX3ByYWdtYShleHApCV9jYXRfcHJhZ21hKHdlYWsgbmFtZSkKKyMgIGVsc2UKKyMgICAgZGVmaW5lIF93ZWFrX3ByYWdtYShleHApCisjICBlbmRpZgorIyAgZGVmaW5lIF9kZWNsYXJlKG5hbWUpCV9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9fdHlwZW9mX18obmFtZSkgbmFtZQorIyAgZGVmaW5lIHdlYWtfc3ltYm9sKG5hbWUpCV93ZWFrX3ByYWdtYShuYW1lKSBfZGVjbGFyZShuYW1lKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKKyNlbmRpZgorCit3ZWFrX3N5bWJvbChmb3Blbik7CitdLFtjZl9jdl93ZWFrX3N5bWJvbHM9eWVzXSxbY2ZfY3Zfd2Vha19zeW1ib2xzPW5vXSkKK10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX0NPTVBJTEVSIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMC8wNi8yNiAxNzozNTo1OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29tbWFuZC1saW5lIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBBZGE5NSBjb21waWxlci4KK0FDX0RFRlVOKFtDRl9XSVRIX0FEQV9DT01QSUxFUl0sWworQUNfTVNHX0NIRUNLSU5HKGZvciBhZGEtY29tcGlsZXIpCitBQ19BUkdfV0lUSChhZGEtY29tcGlsZXIsCisJWyAgLS13aXRoLWFkYS1jb21waWxlcj1DTUQgc3BlY2lmeSBBZGE5NSBjb21waWxlciBjb21tYW5kIChkZWZhdWx0IGduYXRtYWtlKV0sCisJW2NmX2FkYV9jb21waWxlcj0kd2l0aHZhbF0sCisJW2NmX2FkYV9jb21waWxlcj1nbmF0bWFrZV0pCitBQ19TVUJTVChjZl9hZGFfY29tcGlsZXIpCitBQ19NU0dfUkVTVUxUKCRjZl9hZGFfY29tcGlsZXIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX0lOQ0xVREUgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzI2IDE3OjM1OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbW1hbmQtbGluZSBvcHRpb24gdG8gc3BlY2lmeSB3aGVyZSBBZGEgaW5jbHVkZXMgd2lsbCBpbnN0YWxsLgorQUNfREVGVU4oW0NGX1dJVEhfQURBX0lOQ0xVREVdLFsKK0FDX01TR19DSEVDS0lORyhmb3IgYWRhLWluY2x1ZGUpCitDRl9XSVRIX1BBVEgoYWRhLWluY2x1ZGUsCisgICBbICAtLXdpdGgtYWRhLWluY2x1ZGU9RElSICBBZGEgaW5jbHVkZXMgYXJlIGluIERJUl0sCisgICBBREFfSU5DTFVERSwKKyAgIFBSRUZJWC9zaGFyZS9hZGEvYWRhaW5jbHVkZSwKKyAgIFskXXByZWZpeC9zaGFyZS9hZGEvYWRhaW5jbHVkZSkKK0FDX1NVQlNUKEFEQV9JTkNMVURFKQorQUNfTVNHX1JFU1VMVCgkQURBX0lOQ0xVREUpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX09CSkVDVFMgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzI2IDE3OjM1OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbW1hbmQtbGluZSBvcHRpb24gdG8gc3BlY2lmeSB3aGVyZSBBZGEgb2JqZWN0cyB3aWxsIGluc3RhbGwuCitBQ19ERUZVTihbQ0ZfV0lUSF9BREFfT0JKRUNUU10sWworQUNfTVNHX0NIRUNLSU5HKGZvciBhZGEtb2JqZWN0cykKK0NGX1dJVEhfUEFUSChhZGEtb2JqZWN0cywKKyAgIFsgIC0td2l0aC1hZGEtb2JqZWN0cz1ESVIgIEFkYSBvYmplY3RzIGFyZSBpbiBESVJdLAorICAgQURBX09CSkVDVFMsCisgICBQUkVGSVgvbGliL2FkYS9hZGFsaWIsCisgICBbJF1wcmVmaXgvbGliL2FkYS9hZGFsaWIpCitBQ19TVUJTVChBREFfT0JKRUNUUykKK0FDX01TR19SRVNVTFQoJEFEQV9PQkpFQ1RTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX0FEQV9TSEFSRURMSUIgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE0LzA1LzMxIDIxOjA4OjM3CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29tbWFuZC1saW5lIG9wdGlvbiB0byBzcGVjaWZ5IGlmIGFuIEFkYTk1IHNoYXJlZC1saWJyYXJ5IHNob3VsZCBiZSBidWlsdCwKK2RubCBhbmQgb3B0aW9uYWxseSB3aGF0IGl0cyBzb25hbWUgc2hvdWxkIGJlLgorQUNfREVGVU4oW0NGX1dJVEhfQURBX1NIQVJFRExJQl0sWworQUNfTVNHX0NIRUNLSU5HKGlmIGFuIEFkYTk1IHNoYXJlZC1saWJyYXJ5IHNob3VsZCBiZSBidWlsdCkKK0FDX0FSR19XSVRIKGFkYS1zaGFyZWRsaWIsCisJWyAgLS13aXRoLWFkYS1zaGFyZWRsaWI9c29uYW1lIGJ1aWxkIHNoYXJlZC1saWJyYXJ5IChyZXF1aXJlcyBHTkFUIHByb2plY3RzKV0sCisJW3dpdGhfYWRhX3NoYXJlZGxpYj0kd2l0aHZhbF0sCisJW3dpdGhfYWRhX3NoYXJlZGxpYj1ub10pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2FkYV9zaGFyZWRsaWIpCisKK0FEQV9TSEFSRURMSUI9J2xpYiQoTElCX05BTUUpLnNvLjEnCitNQUtFX0FEQV9TSEFSRURMSUI9IiMiCisKK2lmIHRlc3QgIngkd2l0aF9hZGFfc2hhcmVkbGliIiAhPSB4bm8KK3RoZW4KKwlNQUtFX0FEQV9TSEFSRURMSUI9CisJaWYgdGVzdCAieCR3aXRoX2FkYV9zaGFyZWRsaWIiICE9IHh5ZXMKKwl0aGVuCisJCUFEQV9TSEFSRURMSUI9IiR3aXRoX2FkYV9zaGFyZWRsaWIiCisJZmkKK2ZpCisKK0FDX1NVQlNUKEFEQV9TSEFSRURMSUIpCitBQ19TVUJTVChNQUtFX0FEQV9TSEFSRURMSUIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQ1VSU0VTX0RJUiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTAvMTEvMjAgMTc6MDI6MzgKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBXcmFwcGVyIGZvciBBQ19BUkdfV0lUSCB0byBzcGVjaWZ5IGRpcmVjdG9yeSB1bmRlciB3aGljaCB0byBsb29rIGZvciBjdXJzZXMKK2RubCBsaWJyYXJpZXMuCitBQ19ERUZVTihbQ0ZfV0lUSF9DVVJTRVNfRElSXSxbCisKK0FDX01TR19DSEVDS0lORyhmb3Igc3BlY2lmaWMgY3Vyc2VzLWRpcmVjdG9yeSkKK0FDX0FSR19XSVRIKGN1cnNlcy1kaXIsCisJWyAgLS13aXRoLWN1cnNlcy1kaXI9RElSICAgZGlyZWN0b3J5IGluIHdoaWNoIChuKWN1cnNlcyBpcyBpbnN0YWxsZWRdLAorCVtjZl9jdl9jdXJzZXNfZGlyPSR3aXRodmFsXSwKKwlbY2ZfY3ZfY3Vyc2VzX2Rpcj1ub10pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9jdXJzZXNfZGlyKQorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisJQ0ZfUEFUSF9TWU5UQVgod2l0aHZhbCkKKwlpZiB0ZXN0IC1kICIkY2ZfY3ZfY3Vyc2VzX2RpciIKKwl0aGVuCisJCUNGX0FERF9JTkNESVIoJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZSkKKwkJQ0ZfQUREX0xJQkRJUigkY2ZfY3ZfY3Vyc2VzX2Rpci9saWIpCisJZmkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfTElCX1BSRUZJWCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMTIvMDEvMjEgMTk6Mjg6MTAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBBbGxvdyB0aGUgbGlicmFyeS1wcmVmaXggdG8gYmUgb3ZlcnJpZGRlbi4gIE9TLzIgRU1YIG9yaWdpbmFsbHkgaGFkIG5vCitkbmwgImxpYiIgcHJlZml4LCBlLmcuLCBiZWNhdXNlIGl0IHVzZWQgdGhlIGRsbCBuYW1pbmcgY29udmVudGlvbi4KK2RubAorZG5sICQxID0gdmFyaWFibGUgdG8gc2V0CitBQ19ERUZVTihbQ0ZfV0lUSF9MSUJfUFJFRklYXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBoYXZlIGEgbGlicmFyeS1wcmVmaXgpCitBQ19BUkdfV0lUSChsaWItcHJlZml4LAorCVsgIC0td2l0aC1saWItcHJlZml4ICAgICAgIG92ZXJyaWRlIGxpYnJhcnktcHJlZml4XSwKKwlbd2l0aF9saWJfcHJlZml4PSR3aXRodmFsXSwKKwlbd2l0aF9saWJfcHJlZml4PWF1dG9dKQorQUNfTVNHX1JFU1VMVCgkd2l0aF9saWJfcHJlZml4KQorCitpZiB0ZXN0ICR3aXRoX2xpYl9wcmVmaXggPSBhdXRvCit0aGVuCisJQ0ZfTElCX1BSRUZJWCgkMSkKK2VsaWYgdGVzdCAkd2l0aF9saWJfcHJlZml4ID0gbm8KK3RoZW4KKwlMSUJfUFJFRklYPQorZWxzZQorCUxJQl9QUkVGSVg9JHdpdGhfbGliX3ByZWZpeAorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfV0lUSF9QQVRIIHZlcnNpb246IDExIHVwZGF0ZWQ6IDIwMTIvMDkvMjkgMTU6MDQ6MTkKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBXcmFwcGVyIGZvciBBQ19BUkdfV0lUSCB0byBlbnN1cmUgdGhhdCB1c2VyIHN1cHBsaWVzIGEgcGF0aG5hbWUsIG5vdCBqdXN0CitkbmwgZGVmYXVsdGluZyB0byB5ZXMvbm8uCitkbmwKK2RubCAkMSA9IG9wdGlvbiBuYW1lCitkbmwgJDIgPSBoZWxwLXRleHQKK2RubCAkMyA9IGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldAorZG5sICQ0ID0gZGVmYXVsdCB2YWx1ZSwgc2hvd24gaW4gdGhlIGhlbHAtbWVzc2FnZSwgbXVzdCBiZSBhIGNvbnN0YW50CitkbmwgJDUgPSBkZWZhdWx0IHZhbHVlLCBpZiBpdCdzIGFuIGV4cHJlc3Npb24gJiBjYW5ub3QgYmUgaW4gdGhlIGhlbHAtbWVzc2FnZQorZG5sCitBQ19ERUZVTihbQ0ZfV0lUSF9QQVRIXSwKK1tBQ19BUkdfV0lUSCgkMSxbJDIgXShkZWZhdWx0OiBpZmVsc2UoWyQ0XSwsZW1wdHksWyQ0XSkpLCwKK2lmZWxzZShbJDRdLCxbd2l0aHZhbD0iJHskM30iXSxbd2l0aHZhbD0iJHskMzotaWZlbHNlKFskNV0sLFskNF0sWyQ1XSl9Il0pKWRubAoraWYgaWZlbHNlKFskNV0sLHRydWUsW3Rlc3QgLW4gIiQ1Il0pIDsgdGhlbgorQ0ZfUEFUSF9TWU5UQVgod2l0aHZhbCkKK2ZpCitldmFsICQzPSIkd2l0aHZhbCIKK0FDX1NVQlNUKCQzKWRubAorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX1BLR19DT05GSUdfTElCRElSIHZlcnNpb246IDkgdXBkYXRlZDogMjAxNS8wNi8wNiAxOToyNjo0NAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBBbGxvdyB0aGUgY2hvaWNlIG9mIHRoZSBwa2ctY29uZmlnIGxpYnJhcnkgZGlyZWN0b3J5IHRvIGJlIG92ZXJyaWRkZW4uCitBQ19ERUZVTihbQ0ZfV0lUSF9QS0dfQ09ORklHX0xJQkRJUl0sWworaWYgdGVzdCAieCRQS0dfQ09ORklHIiA9IHhub25lIDsgdGhlbgorCVBLR19DT05GSUdfTElCRElSPW5vCitlbHNlCisJQUNfTVNHX0NIRUNLSU5HKGZvciAkUEtHX0NPTkZJRyBsaWJyYXJ5IGRpcmVjdG9yeSkKKwlBQ19BUkdfV0lUSChwa2ctY29uZmlnLWxpYmRpciwKKwkJWyAgLS13aXRoLXBrZy1jb25maWctbGliZGlyPVhYWCB1c2UgZ2l2ZW4gZGlyZWN0b3J5IGZvciBpbnN0YWxsaW5nIHBjLWZpbGVzXSwKKwkJW1BLR19DT05GSUdfTElCRElSPSR3aXRodmFsXSwKKwkJW1BLR19DT05GSUdfTElCRElSPXllc10pCitmaQorCitjYXNlIHgkUEtHX0NPTkZJR19MSUJESVIgaW4KKyh4LyopCisJOzsKKyh4eWVzKQorCSMgTG9vayBmb3IgdGhlIGxpYnJhcnkgZGlyZWN0b3J5IHVzaW5nIHRoZSBzYW1lIHByZWZpeCBhcyB0aGUgZXhlY3V0YWJsZQorCWlmIHRlc3QgIngkUEtHX0NPTkZJRyIgPSB4bm9uZQorCXRoZW4KKwkJY2ZfcGF0aD0kcHJlZml4CisJZWxzZQorCQljZl9wYXRoPWBlY2hvICIkUEtHX0NPTkZJRyIgfCBzZWQgLWUgJ3MsL1tbXi9dXSovW1teL11dKiQsLCdgCisJZmkKKworCSMgSWYgeW91IGRvbid0IGxpa2UgdXNpbmcgdGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZQorCSMgaW50ZW5kZWQgbGlicmFyeSBkaXJlY3RvcnkgYW5kIGNvcnJlc3BvbmRpbmcgY29tcGlsZXIvbGlua2VyIG9wdGlvbnMuCisJIworCSMgVGhpcyBjYXNlIGFsbG93cyBmb3IgRGViaWFuJ3MgMjAxNC1mbGF2b3Igb2YgbXVsdGlhcmNoLCBhbG9uZyB3aXRoIHRoZQorCSMgbW9zdCBjb21tb24gdmFyaWF0aW9ucyBiZWZvcmUgdGhhdCBwb2ludC4gIFNvbWUgb3RoZXIgdmFyaWFudHMgc3BlbGwgdGhlCisJIyBkaXJlY3RvcnkgZGlmZmVyZW50bHksIGUuZy4sICJwa2ctY29uZmlnIiwgYW5kIHB1dCBpdCBpbiB1bnVzdWFsIHBsYWNlcy4KKwkjIHBrZy1jb25maWcgaGFzIGFsd2F5cyBiZWVuIHBvb3JseSBzdGFuZGFyZGl6ZWQsIHdoaWNoIGlzIGlyb25pYy4uLgorCWNhc2UgeGAoYXJjaCkgMj4vZGV2L251bGxgIGluCisJKCo2NCkKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qNjQtbGludXgtZ251IFwKKwkJCSRjZl9wYXRoL3NoYXJlIFwKKwkJCSRjZl9wYXRoL2xpYjY0IFwKKwkJCSRjZl9wYXRoL2xpYjMyIFwKKwkJCSRjZl9wYXRoL2xpYiIKKwkJOzsKKwkoKikKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qLWxpbnV4LWdudSBcCisJCQkkY2ZfcGF0aC9zaGFyZSBcCisJCQkkY2ZfcGF0aC9saWIzMiBcCisJCQkkY2ZfcGF0aC9saWIgXAorCQkJJGNmX3BhdGgvbGliZGF0YSIKKwkJOzsKKwllc2FjCisKKwlDRl9WRVJCT1NFKGxpc3QuLi4pCisJZm9yIGNmX2NvbmZpZyBpbiAkY2Zfc2VhcmNoX3BhdGgKKwlkbworCQlDRl9WRVJCT1NFKGNoZWNraW5nICRjZl9jb25maWcvcGtnY29uZmlnKQorCQlpZiB0ZXN0IC1kICRjZl9jb25maWcvcGtnY29uZmlnCisJCXRoZW4KKwkJCVBLR19DT05GSUdfTElCRElSPSRjZl9jb25maWcvcGtnY29uZmlnCisJCQlBQ19NU0dfQ0hFQ0tJTkcoZG9uZSkKKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCTs7CisoKikKKwk7OworZXNhYworCitpZiB0ZXN0ICJ4JFBLR19DT05GSUciICE9IHhub25lIDsgdGhlbgorCUFDX01TR19SRVNVTFQoJFBLR19DT05GSUdfTElCRElSKQorZmkKKworQUNfU1VCU1QoUEtHX0NPTkZJR19MSUJESVIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfUFRIUkVBRCB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgUE9TSVggdGhyZWFkIGxpYnJhcnkuCitBQ19ERUZVTihbQ0ZfV0lUSF9QVEhSRUFEXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggdGhlIHB0aHJlYWQgbGlicmFyeSkKK0FDX0FSR19XSVRIKHB0aHJlYWQsCisJWyAgLS13aXRoLXB0aHJlYWQgICAgICAgICAgdXNlIFBPU0lYIHRocmVhZCBsaWJyYXJ5XSwKKwlbd2l0aF9wdGhyZWFkPSR3aXRodmFsXSwKKwlbd2l0aF9wdGhyZWFkPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfcHRocmVhZCkKKworaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgIT0gbm8gOyB0aGVuCisJQUNfQ0hFQ0tfSEVBREVSKHB0aHJlYWQuaCxbCisJQUNfREVGSU5FKEhBVkVfUFRIUkVBRFNfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHB0aHJlYWRzLmggaGVhZGVyXSkKKworCWZvciBjZl9saWJfcHRocmVhZCBpbiBwdGhyZWFkIGNfcgorCWRvCisJICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gbGluayB3aXRoIHRoZSAkY2ZfbGliX3B0aHJlYWQgbGlicmFyeSkKKwkgICAgY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkgICAgQ0ZfQUREX0xJQigkY2ZfbGliX3B0aHJlYWQpCisJICAgIEFDX1RSWV9MSU5LKFsKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CitdLFsKKwkJaW50IHJjID0gcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7CisJCWludCByMiA9IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoMCwgMCk7CitdLFt3aXRoX3B0aHJlYWQ9eWVzXSxbd2l0aF9wdGhyZWFkPW5vXSkKKwkgICAgTElCUz0iJGNmX3NhdmVfTElCUyIKKwkgICAgQUNfTVNHX1JFU1VMVCgkd2l0aF9wdGhyZWFkKQorCSAgICB0ZXN0ICIkd2l0aF9wdGhyZWFkIiA9IHllcyAmJiBicmVhaworCWRvbmUKKworCWlmIHRlc3QgIiR3aXRoX3B0aHJlYWQiID0geWVzIDsgdGhlbgorCSAgICBDRl9BRERfTElCKCRjZl9saWJfcHRocmVhZCkKKwkgICAgQUNfREVGSU5FKEhBVkVfTElCUFRIUkVBRFMsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBwdGhyZWFkcyBsaWJyYXJ5XSkKKwllbHNlCisJICAgIEFDX01TR19FUlJPUihDYW5ub3QgbGluayB3aXRoIHB0aHJlYWQgbGlicmFyeSkKKwlmaQorCV0pCitmaQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX1NZU1RZUEUgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDEzLzAxLzI2IDE2OjI2OjEyCitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRm9yIHRlc3RpbmcsIG92ZXJyaWRlIHRoZSBkZXJpdmVkIGhvc3Qgc3lzdGVtLXR5cGUgd2hpY2ggaXMgdXNlZCB0byBkZWNpZGUKK2RubCB0aGluZ3Mgc3VjaCBhcyB0aGUgbGlua2VyIGNvbW1hbmRzIHVzZWQgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcy4gIFRoaXMgaXMKK2RubCBub3JtYWxseSBjaG9zZW4gYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBzeXN0ZW0gd2hpY2ggeW91IGFyZQorZG5sIGJ1aWxkaW5nIG9uLiAgV2UgdXNlIGl0IGZvciB0ZXN0aW5nIHRoZSBjb25maWd1cmUgc2NyaXB0LgorZG5sCitkbmwgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgLS1ob3N0IG9wdGlvbjogaXQgaXMgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHBhcnRzCitkbmwgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd291bGQgbm90IGJlIHJlYWNoYWJsZSB3aXRoIC0taG9zdCBzaW5jZSB0aGF0CitkbmwgcmVsaWVzIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudCBiZWluZyByZWFsLCByYXRoZXIgdGhhbiBtb2NrZWQgdXAuCitBQ19ERUZVTihbQ0ZfV0lUSF9TWVNUWVBFXSxbCitDRl9DSEVDS19DQUNIRShbQUNfQ0FOT05JQ0FMX1NZU1RFTV0pCitBQ19BUkdfV0lUSChzeXN0ZW0tdHlwZSwKKwlbICAtLXdpdGgtc3lzdGVtLXR5cGU9WFhYICB0ZXN0OiBvdmVycmlkZSBkZXJpdmVkIGhvc3Qgc3lzdGVtLXR5cGVdLAorW0FDX01TR19XQVJOKG92ZXJyaWRpbmcgc3lzdGVtIHR5cGUgdG8gJHdpdGh2YWwpCisJY2ZfY3Zfc3lzdGVtX25hbWU9JHdpdGh2YWwKKwlob3N0X29zPSR3aXRodmFsCitdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YT1BFTl9TT1VSQ0UgdmVyc2lvbjogNDkgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIFRyeSB0byBnZXQgX1hPUEVOX1NPVVJDRSBkZWZpbmVkIHByb3Blcmx5IHRoYXQgd2UgY2FuIHVzZSBQT1NJWCBmdW5jdGlvbnMsCitkbmwgb3IgYWRhcHQgdG8gdGhlIHZlbmRvcidzIGRlZmluaXRpb25zIHRvIGdldCBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHksCitkbmwgd2l0aG91dCBsb3NpbmcgdGhlIGNvbW1vbiBub24tUE9TSVggZmVhdHVyZXMuCitkbmwKK2RubCBQYXJhbWV0ZXJzOgorZG5sCSQxIGlzIHRoZSBub21pbmFsIHZhbHVlIGZvciBfWE9QRU5fU09VUkNFCitkbmwJJDIgaXMgdGhlIG5vbWluYWwgdmFsdWUgZm9yIF9QT1NJWF9DX1NPVVJDRQorQUNfREVGVU4oW0NGX1hPUEVOX1NPVVJDRV0sWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitjZl9YT1BFTl9TT1VSQ0U9aWZlbHNlKFskMV0sLDUwMCxbJDFdKQorY2ZfUE9TSVhfQ19TT1VSQ0U9aWZlbHNlKFskMl0sLDE5OTUwNkwsWyQyXSkKK2NmX3hvcGVuX3NvdXJjZT0KKworY2FzZSAkaG9zdF9vcyBpbgorKGFpeFtbNC03XV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfQUxMX1NPVVJDRSIKKwk7OworKGN5Z3dpbnxtc3lzKQorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwk7OworKGRhcndpbltbMC04XV0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0FQUExFX0NfU09VUkNFIgorCTs7CisoZGFyd2luKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0RBUldJTl9DX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhmcmVlYnNkKnxkcmFnb25mbHkqKQorCSMgNS54IGhlYWRlcnMgYXNzb2NpYXRlCisJIwlfWE9QRU5fU09VUkNFPTYwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCisJIwlfWE9QRU5fU09VUkNFPTUwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCisJY2ZfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9UWVBFUyAtRF9fQlNEX1ZJU0lCTEUgLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCTs7CisoaHB1eDExKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT01MDAiCisJOzsKKyhocHV4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIgorCTs7CisoaXJpeFtbNTZdXS4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfU0dJX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhsaW51eCp8Z251KnxtaW50KnxrKmJzZCotZ251KQorCUNGX0dOVV9TT1VSQ0UKKwk7OworKG1pbml4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX05FVEJTRF9TT1VSQ0UiICMgUE9TSVguMS0yMDAxIGZlYXR1cmVzIGFyZSBpZmRlZidkIHdpdGggdGhpcy4uLgorCTs7CisobWlyYnNkKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBvciBfUE9TSVhfU09VUkNFIGJyZWFrcyA8c3lzL3NlbGVjdC5oPiBhbmQgb3RoZXIgaGVhZGVycyB3aGljaCB1c2UgdV9pbnQgLyB1X3Nob3J0IHR5cGVzCisJY2ZfWE9QRU5fU09VUkNFPQorCUNGX1BPU0lYX0NfU09VUkNFKCRjZl9QT1NJWF9DX1NPVVJDRSkKKwk7OworKG5ldGJzZCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9ORVRCU0RfU09VUkNFIiAjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBicmVha3MgSVB2NiBmb3IgbHlueCBvbiBOZXRCU0QgMS42LCBicmVha3MgeHRlcm0sIGlzIG5vdCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJOzsKKyhvcGVuYnNkW1s0LTldXSopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgbG93ZXIgdGhhbiA1MDAgYnJlYWtzIGcrKyBjb21waWxlIHdpdGggd2NoYXIuaCwgbmVlZGVkIGZvciBuY3Vyc2VzdworCWNmX3hvcGVuX3NvdXJjZT0iLURfQlNEX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9NjAwCisJOzsKKyhvcGVuYnNkKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBicmVha3MgeHRlcm0gb24gT3BlbkJTRCAyLjgsIGlzIG5vdCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJOzsKKyhvc2ZbWzQ1XV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfT1NGX1NPVVJDRSIKKwk7OworKG50by1xbngqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfUU5YX1NPVVJDRSIKKwk7OworKHNjbyopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCisJOzsKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCisJOzsKKyhzeXN2NC4ydXcyLiopICMgTm92ZWxsL1NDTyBVbml4V2FyZSAyLnggKHRlc3RlZCBvbiAyLjEuMikKKwljZl9YT1BFTl9TT1VSQ0U9CisJY2ZfUE9TSVhfQ19TT1VSQ0U9CisJOzsKKygqKQorCUNGX1RSWV9YT1BFTl9TT1VSQ0UKKwlDRl9QT1NJWF9DX1NPVVJDRSgkY2ZfUE9TSVhfQ19TT1VSQ0UpCisJOzsKK2VzYWMKKworaWYgdGVzdCAtbiAiJGNmX3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJQ0ZfQUREX0NGTEFHUygkY2ZfeG9wZW5fc291cmNlLHRydWUpCitmaQorCitkbmwgSW4gYW55dGhpbmcgYnV0IHRoZSBkZWZhdWx0IGNhc2UsIHdlIG1heSBoYXZlIHN5c3RlbS1zcGVjaWZpYyBzZXR0aW5nCitkbmwgd2hpY2ggaXMgc3RpbGwgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlkZSBhbGwgb2YgdGhlIGVudHJ5cG9pbnRzIHRoYXQKK2RubCBfWE9QRU5fU09VUkNFIHdvdWxkIHlpZWxkLgoraWYgdGVzdCAtbiAiJGNmX1hPUEVOX1NPVVJDRSIgJiYgdGVzdCAteiAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldCkKKwlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGxpYi5oPl0sWworI2lmbmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCVtjZl9YT1BFTl9TT1VSQ0Vfc2V0PXllc10sCisJW2NmX1hPUEVOX1NPVVJDRV9zZXQ9bm9dKQorCUFDX01TR19SRVNVTFQoJGNmX1hPUEVOX1NPVVJDRV9zZXQpCisJaWYgdGVzdCAkY2ZfWE9QRU5fU09VUkNFX3NldCA9IHllcworCXRoZW4KKwkJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzdGRsaWIuaD5dLFsKKyNpZiAoX1hPUEVOX1NPVVJDRSAtIDApIDwgJGNmX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwkJW2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9eWVzXSwKKwkJW2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9bm9dKQorCQlpZiB0ZXN0ICRjZl9YT1BFTl9TT1VSQ0Vfc2V0X29rID0gbm8KKwkJdGhlbgorCQkJQUNfTVNHX1dBUk4oX1hPUEVOX1NPVVJDRSBpcyBsb3dlciB0aGFuIHJlcXVlc3RlZCkKKwkJZmkKKwllbHNlCisJCUNGX1RSWV9YT1BFTl9TT1VSQ0UKKwlmaQorZmkKK10pCmRpZmYgLS1naXQgYS9BZGE5NS9jb25maWd1cmUgYi9BZGE5NS9jb25maWd1cmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTAxZTcxZQotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L2NvbmZpZ3VyZQpAQCAtMCwwICsxLDE0OTA4IEBACisjISAvYmluL3NoCisjIEZyb20gY29uZmlndXJlLmluIFJldmlzaW9uOiAxLjYwIC4KKyMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KKyMgR2VuZXJhdGVkIGJ5IEF1dG9jb25mIDIuNTIuMjAxNDEyMDQuCisjCisjIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCisKKyMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JworYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCithc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKK2FzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cworCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KK2FzX3RyX3NoPSJzZWQgeSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKKworIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgorYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgorCisjIEJlIEJvdXJuZSBjb21wYXRpYmxlCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKK2VsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIHNldCAtbyBwb3NpeAorZmkKKworIyBOYW1lIG9mIHRoZSBleGVjdXRhYmxlLgorYXNfbWU9YGVjaG8gIiQwIiB8c2VkICdzLC4qW1xcL10sLCdgCisKK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFzX2V4cHI9ZXhwcgorZWxzZQorICBhc19leHByPWZhbHNlCitmaQorCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQorZWNobyA+Y29uZiQkLmZpbGUKK2lmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICAjIFdlIGNvdWxkIGp1c3QgY2hlY2sgZm9yIERKR1BQOyBidXQgdGhpcyB0ZXN0IGEpIHdvcmtzIGIpIGlzIG1vcmUgZ2VuZXJpYworICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KKyAgaWYgdGVzdCAtZiBjb25mJCQuZXhlOyB0aGVuCisgICAgIyBEb24ndCB1c2UgbG4gYXQgYWxsOyB3ZSBkb24ndCBoYXZlIGFueSBsaW5rcworICAgIGFzX2xuX3M9J2NwIC1wJworICBlbHNlCisgICAgYXNfbG5fcz0nbG4gLXMnCisgIGZpCitlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19sbl9zPWxuCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wJworZmkKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCisKK2FzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKKworIyBTdXBwb3J0IHVuc2V0IHdoZW4gcG9zc2libGUuCitpZiAoRk9PPUZPTzsgdW5zZXQgRk9PKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdW5zZXQ9dW5zZXQKK2Vsc2UKKyAgYXNfdW5zZXQ9ZmFsc2UKK2ZpCisKKyMgTkxTIG51aXNhbmNlcy4KKyRhc191bnNldCBMQU5HIHx8IHRlc3QgIiR7TEFORytzZXR9IiAhPSBzZXQgfHwgeyBMQU5HPUM7IGV4cG9ydCBMQU5HOyB9CiskYXNfdW5zZXQgTENfQUxMIHx8IHRlc3QgIiR7TENfQUxMK3NldH0iICE9IHNldCB8fCB7IExDX0FMTD1DOyBleHBvcnQgTENfQUxMOyB9CiskYXNfdW5zZXQgTENfVElNRSB8fCB0ZXN0ICIke0xDX1RJTUUrc2V0fSIgIT0gc2V0IHx8IHsgTENfVElNRT1DOyBleHBvcnQgTENfVElNRTsgfQorJGFzX3Vuc2V0IExDX0NUWVBFIHx8IHRlc3QgIiR7TENfQ1RZUEUrc2V0fSIgIT0gc2V0IHx8IHsgTENfQ1RZUEU9QzsgZXhwb3J0IExDX0NUWVBFOyB9CiskYXNfdW5zZXQgTEFOR1VBR0UgfHwgdGVzdCAiJHtMQU5HVUFHRStzZXR9IiAhPSBzZXQgfHwgeyBMQU5HVUFHRT1DOyBleHBvcnQgTEFOR1VBR0U7IH0KKyRhc191bnNldCBMQ19DT0xMQVRFIHx8IHRlc3QgIiR7TENfQ09MTEFURStzZXR9IiAhPSBzZXQgfHwgeyBMQ19DT0xMQVRFPUM7IGV4cG9ydCBMQ19DT0xMQVRFOyB9CiskYXNfdW5zZXQgTENfTlVNRVJJQyB8fCB0ZXN0ICIke0xDX05VTUVSSUMrc2V0fSIgIT0gc2V0IHx8IHsgTENfTlVNRVJJQz1DOyBleHBvcnQgTENfTlVNRVJJQzsgfQorJGFzX3Vuc2V0IExDX01FU1NBR0VTIHx8IHRlc3QgIiR7TENfTUVTU0FHRVMrc2V0fSIgIT0gc2V0IHx8IHsgTENfTUVTU0FHRVM9QzsgZXhwb3J0IExDX01FU1NBR0VTOyB9CisKKyMgSUZTCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgorYXNfbmw9JworJworSUZTPSIgCSRhc19ubCIKKworIyBDRFBBVEguCiskYXNfdW5zZXQgQ0RQQVRIIHx8IHRlc3QgIiR7Q0RQQVRIK3NldH0iICE9IHNldCB8fCB7IENEUEFUSD06OyBleHBvcnQgQ0RQQVRIOyB9CisKKyMgTmFtZSBvZiB0aGUgaG9zdC4KKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCisjIHNvIHVuYW1lIGdldHMgcnVuIHRvby4KK2FjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAorCitleGVjIDY+JjEKKworIworIyBJbml0aWFsaXphdGlvbnMuCisjCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCitjcm9zc19jb21waWxpbmc9bm8KK3N1YmRpcnM9CitNRkxBR1M9IE1BS0VGTEFHUz0KK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CisKKyMgTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2hlbGwgaGVyZSBkb2N1bWVudC4KKyMgVGhpcyB2YXJpYWJsZSBzZWVtcyBvYnNvbGV0ZS4gIEl0IHNob3VsZCBwcm9iYWJseSBiZSByZW1vdmVkLCBhbmQKKyMgb25seSBhY19tYXhfc2VkX2xpbmVzIHNob3VsZCBiZSB1c2VkLgorOiAke2FjX21heF9oZXJlX2xpbmVzPTM4fQorCithY191bmlxdWVfZmlsZT0iZ2VuL2dlbi5jIgorCisjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuCithY19pbml0X2hlbHA9CithY19pbml0X3ZlcnNpb249ZmFsc2UKKyMgVGhlIHZhcmlhYmxlcyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoCisjIGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuCitjYWNoZV9maWxlPS9kZXYvbnVsbAorZXhlY19wcmVmaXg9Tk9ORQorbm9fY3JlYXRlPQorbm9fcmVjdXJzaW9uPQorcHJlZml4PU5PTkUKK3Byb2dyYW1fcHJlZml4PU5PTkUKK3Byb2dyYW1fc3VmZml4PU5PTkUKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsCitzaWxlbnQ9CitzaXRlPQorc3JjZGlyPQordmVyYm9zZT0KK3hfaW5jbHVkZXM9Tk9ORQoreF9saWJyYXJpZXM9Tk9ORQorCisjIEluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb3B0aW9ucy4KKyMgVGhlc2UgYXJlIGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5zdGFsbCBleGVjX3ByZWZpeD0vZm9vIgorIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgKKyMgYnkgZGVmYXVsdCB3aWxsIGFjdHVhbGx5IGNoYW5nZS4KKyMgVXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNhdXNlIHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRoZW0uCitiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKK3NiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCitsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWJleGVjJworZGF0YXJvb3RkaXI9JyR7cHJlZml4fS9zaGFyZScKK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9Jworc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKK3NoYXJlZHN0YXRlZGlyPScke3ByZWZpeH0vY29tJworbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicKK2xpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJworaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCitvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCitpbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJworbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nCisKKyMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgorUEFDS0FHRV9OQU1FPQorUEFDS0FHRV9UQVJOQU1FPQorUEFDS0FHRV9WRVJTSU9OPQorUEFDS0FHRV9TVFJJTkc9CitQQUNLQUdFX0JVR1JFUE9SVD0KKworYWNfcHJldj0KK2ZvciBhY19vcHRpb24KK2RvCisgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgorICBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAgICBldmFsICIkYWNfcHJldj1cJGFjX29wdGlvbiIKKyAgICBhY19wcmV2PQorICAgIGNvbnRpbnVlCisgIGZpCisKKyAgYWNfb3B0YXJnPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFtePV0qPVwoLipcKSdgCisKKyAgIyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFnbm9zZSB0eXBvcy4KKworICBjYXNlICRhY19vcHRpb24gaW4KKworICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQorICAgIGFjX3ByZXY9YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQorICAgIGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKKyAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpCisgICAgYWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQorICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisgIC0tY29uZmlnLWNhY2hlIHwgLUMpCisgICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKworICAtZGF0YWRpciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCB8IC0tZGF0YSB8IC0tZGF0IHwgLS1kYSkKKyAgICBhY19wcmV2PWRhdGFkaXIgOzsKKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KiB8IC0tZGF0YT0qIHwgLS1kYXQ9KiBcCisgIHwgLS1kYT0qKQorICAgIGRhdGFkaXI9JGFjX29wdGFyZyA7OworCisgIC1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8IC0tZGF0YXJvb3QgXAorICB8IC0tZGF0YXJvbyB8IC0tZGF0YXJvIHwgLS1kYXRhcikKKyAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7CisgIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpPSogfCAtLWRhdGFyb290ZD0qIFwKKyAgfCAtLWRhdGFyb290PSogfCAtLWRhdGFyb289KiB8IC0tZGF0YXJvPSogfCAtLWRhdGFyPSopCisgICAgZGF0YXJvb3RkaXI9JGFjX29wdGFyZyA7OworCisgIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKKyAgICBhY19mZWF0dXJlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY19mZWF0dXJlIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAorICAgIGV2YWwgImVuYWJsZV8kYWNfZmVhdHVyZT1ubyIgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQorICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY19mZWF0dXJlIiA6ICIuKlteLV8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfZmVhdHVyZSIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICBhY19mZWF0dXJlPWBlY2hvICRhY19mZWF0dXJlIHwgc2VkICdzLy0vXy9nJ2AKKyAgICBjYXNlICRhY19vcHRpb24gaW4KKyAgICAgICo9KikgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisgICAgICAqKSBhY19vcHRhcmc9eWVzIDs7CisgICAgZXNhYworICAgIGV2YWwgImVuYWJsZV8kYWNfZmVhdHVyZT0nJGFjX29wdGFyZyciIDs7CisKKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVmaXggfCAtLWV4ZWMtcHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisgIHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQorICAgIGFjX2luaXRfaGVscD1yZWN1cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OworCisgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlhcyA7OworICAtaG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3RfYWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKKyAgfCAtLWluY2x1ZCB8IC0taW5jbHUgfCAtLWluY2wgfCAtLWluYykKKyAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsKKyAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwKKyAgfCAtLWluY2x1ZD0qIHwgLS1pbmNsdT0qIHwgLS1pbmNsPSogfCAtLWluYz0qKQorICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1pbmZvZGlyIHwgLS1pbmZvZGlyIHwgLS1pbmZvZGkgfCAtLWluZm9kIHwgLS1pbmZvIHwgLS1pbmYpCisgICAgYWNfcHJldj1pbmZvZGlyIDs7CisgIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9KiB8IC0taW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0taW5mPSopCisgICAgaW5mb2Rpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8IC0tbGliZCkKKyAgICBhY19wcmV2PWxpYmRpciA7OworICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopCisgICAgbGliZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8IC0tbGliZXhlYyBcCisgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQorICAgIGFjX3ByZXY9bGliZXhlY2RpciA7OworICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXAorICB8IC0tbGliZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikKKyAgICBsaWJleGVjZGlyPSRhY19vcHRhcmcgOzsKKworICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcCisgIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IFwKKyAgfCAtLWxvY2FscyB8IC0tbG9jYWwgfCAtLWxvY2EgfCAtLWxvYyB8IC0tbG8pCisgICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7CisgIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3RhdGVkPSogXAorICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIFwKKyAgfCAtLWxvY2Fscz0qIHwgLS1sb2NhbD0qIHwgLS1sb2NhPSogfCAtLWxvYz0qIHwgLS1sbz0qKQorICAgIGxvY2Fsc3RhdGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1tYW5kaXIgfCAtLW1hbmRpciB8IC0tbWFuZGkgfCAtLW1hbmQgfCAtLW1hbiB8IC0tbWEgfCAtLW0pCisgICAgYWNfcHJldj1tYW5kaXIgOzsKKyAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQorICAgIG1hbmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLW5mcCB8IC0tbmZwIHwgLS1uZikKKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLgorICAgIHdpdGhfZnA9bm8gOzsKKworICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXAorICB8IC0tbm8tY3IgfCAtLW5vLWMpCisgICAgbm9fY3JlYXRlPXllcyA7OworCisgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAorICB8IC0tbm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikKKyAgICBub19yZWN1cnNpb249eWVzIDs7CisKKyAgLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXAorICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwKKyAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQorICAgIGFjX3ByZXY9b2xkaW5jbHVkZWRpciA7OworICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKKyAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXAorICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQorICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAtLXApCisgICAgYWNfcHJldj1wcmVmaXggOzsKKyAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8IC0tcHI9KiB8IC0tcD0qKQorICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAgLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1wcmVmIFwKKyAgfCAtLXByb2dyYW0tcHJlIHwgLS1wcm9ncmFtLXByIHwgLS1wcm9ncmFtLXApCisgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7OworICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKKyAgfCAtLXByb2dyYW0tcHJlZj0qIHwgLS1wcm9ncmFtLXByZT0qIHwgLS1wcm9ncmFtLXByPSogfCAtLXByb2dyYW0tcD0qKQorICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAorICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKKyAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7CisgIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXAorICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopCisgICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFyZyA7OworCisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXAorICB8IC0tcHJvZ3JhbS10cmFucyB8IC0tcHJvZ3JhbS10cmFuIFwKKyAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQorICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7OworICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXAorICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1wcm9ncmFtLXRyYW49KiBcCisgIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikKKyAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCisgICAgYWNfcHJldj1zYmluZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0tc2I9KikKKyAgICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1zaGEgfCAtLXNoKQorICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcCisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXAorICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAgYWNfcHJldj1zaXRlIDs7CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0ZT0kYWNfb3B0YXJnIDs7CisKKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKKyAgICBhY19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0tc3lzYyB8IC0tc3lzIHwgLS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwKKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwgLS1zeT0qKQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OworCisgIC10YXJnZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCisgICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQorICAgIHRhcmdldF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7OworCisgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCisgICAgYWNfaW5pdF92ZXJzaW9uPTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisgICAgYWNfcGFja2FnZT1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY19wYWNrYWdlIiA6ICIuKlteLV8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfcGFja2FnZSIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICBhY19wYWNrYWdlPWBlY2hvICRhY19wYWNrYWdlfCBzZWQgJ3MvLS9fL2cnYAorICAgIGNhc2UgJGFjX29wdGlvbiBpbgorICAgICAgKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsKKyAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKKyAgICBlc2FjCisgICAgZXZhbCAid2l0aF8kYWNfcGFja2FnZT0nJGFjX29wdGFyZyciIDs7CisKKyAgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qKQorICAgIGFjX3BhY2thZ2U9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfcGFja2FnZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3BhY2thZ2UiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgYWNfcGFja2FnZT1gZWNobyAkYWNfcGFja2FnZSB8IHNlZCAncy8tL18vZydgCisgICAgZXZhbCAid2l0aF8kYWNfcGFja2FnZT1ubyIgOzsKKworICAtLXgpCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC14LgorICAgIHdpdGhfeD15ZXMgOzsKKworICAteC1pbmNsdWRlcyB8IC0teC1pbmNsdWRlcyB8IC0teC1pbmNsdWRlIHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBcCisgIHwgLS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpCisgICAgYWNfcHJldj14X2luY2x1ZGVzIDs7CisgIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgtaW5jbHU9KiBcCisgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikKKyAgICB4X2luY2x1ZGVzPSRhY19vcHRhcmcgOzsKKworICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXAorICB8IC0teC1saWJyYXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8IC0teC1saWIgfCAtLXgtbGkgfCAtLXgtbCkKKyAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7CisgIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwKKyAgfCAtLXgtbGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0teC1sPSopCisgICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OworCisgIC0qKSB7IGVjaG8gIiRhc19tZTogZXJyb3I6IHVucmVjb2duaXplZCBvcHRpb246ICRhY19vcHRpb24KK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgIDs7CisKKyAgKj0qKQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY19lbnZ2YXIiIDogIi4qW15fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIHZhcmlhYmxlIG5hbWU6ICRhY19lbnZ2YXIiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYAorICAgIGV2YWwgIiRhY19lbnZ2YXI9JyRhY19vcHRhcmcnIgorICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7CisKKyAgKikKKyAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCisgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjIKKyAgICBleHByICJ4JGFjX29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgorICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KKyAgICA7OworCisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKKyAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCisjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KK2ZvciBhY192YXIgaW4gZXhlY19wcmVmaXggcHJlZml4CitkbworICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFjX3ZhcmAKKyAgY2FzZSAkYWNfdmFsIGluCisgICAgW1xcLyRdKiB8ID86W1xcL10qIHwgTk9ORSB8ICcnICkgOzsKKyAgICAqKSAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhbiBhYnNvbHV0ZSBwYXRoIGZvciAtLSRhY192YXI6ICRhY192YWwiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKKyAgZXNhYworZG9uZQorCisjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KK2ZvciBhY192YXIgaW4gYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgXAorICAgICAgICAgICAgICBsb2NhbHN0YXRlZGlyIGxpYmRpciBpbmNsdWRlZGlyIG9sZGluY2x1ZGVkaXIgaW5mb2RpciBtYW5kaXIKK2RvCisgIGV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAorICBjYXNlICRhY192YWwgaW4KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSA7OworICAgICopICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGFuIGFic29sdXRlIHBhdGggZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OworICBlc2FjCitkb25lCisKKyMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKKyMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3QgZXRjLgorYnVpbGQ9JGJ1aWxkX2FsaWFzCitob3N0PSRob3N0X2FsaWFzCit0YXJnZXQ9JHRhcmdldF9hbGlhcworCisjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCitpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4KKyAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCisgICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlCisgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiBJZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgorICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyCisgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4KKyAgICBjcm9zc19jb21waWxpbmc9eWVzCisgIGZpCitmaQorCithY190b29sX3ByZWZpeD0KK3Rlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0KKwordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAorCisjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCitpZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgorICBhY19zcmNkaXJfZGVmYXVsdGVkPXllcworICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gaXRzIHBhcmVudC4KKyAgYWNfcHJvZz0kMAorICBhY19jb25mZGlyPWBlY2hvICIkYWNfcHJvZyIgfCBzZWQgJ3MlW1xcL11bXlxcL11bXlxcL10qJCUlJ2AKKyAgdGVzdCAieCRhY19jb25mZGlyIiA9ICJ4JGFjX3Byb2ciICYmIGFjX2NvbmZkaXI9LgorICBzcmNkaXI9JGFjX2NvbmZkaXIKKyAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCisgICAgc3JjZGlyPS4uCisgIGZpCitlbHNlCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KK2ZpCitpZiB0ZXN0ICEgLXIgJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGU7IHRoZW4KKyAgaWYgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzOyB0aGVuCisgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBzb3VyY2VzIGluICRhY19jb25mZGlyIG9yIC4uIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICBlbHNlCisgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBzb3VyY2VzIGluICRzcmNkaXIiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgIGZpCitmaQorc3JjZGlyPWBlY2hvICIkc3JjZGlyIiB8IHNlZCAncyVcKFteXFwvXVwpW1xcL10qJCVcMSUnYAorYWNfZW52X2J1aWxkX2FsaWFzX3NldD0ke2J1aWxkX2FsaWFzK3NldH0KK2FjX2Vudl9idWlsZF9hbGlhc192YWx1ZT0kYnVpbGRfYWxpYXMKK2FjX2N2X2Vudl9idWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9CithY19jdl9lbnZfYnVpbGRfYWxpYXNfdmFsdWU9JGJ1aWxkX2FsaWFzCithY19lbnZfaG9zdF9hbGlhc19zZXQ9JHtob3N0X2FsaWFzK3NldH0KK2FjX2Vudl9ob3N0X2FsaWFzX3ZhbHVlPSRob3N0X2FsaWFzCithY19jdl9lbnZfaG9zdF9hbGlhc19zZXQ9JHtob3N0X2FsaWFzK3NldH0KK2FjX2N2X2Vudl9ob3N0X2FsaWFzX3ZhbHVlPSRob3N0X2FsaWFzCithY19lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlhcytzZXR9CithY19lbnZfdGFyZ2V0X2FsaWFzX3ZhbHVlPSR0YXJnZXRfYWxpYXMKK2FjX2N2X2Vudl90YXJnZXRfYWxpYXNfc2V0PSR7dGFyZ2V0X2FsaWFzK3NldH0KK2FjX2N2X2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlhcworYWNfZW52X0NDX3NldD0ke0NDK3NldH0KK2FjX2Vudl9DQ192YWx1ZT0kQ0MKK2FjX2N2X2Vudl9DQ19zZXQ9JHtDQytzZXR9CithY19jdl9lbnZfQ0NfdmFsdWU9JENDCithY19lbnZfQ0ZMQUdTX3NldD0ke0NGTEFHUytzZXR9CithY19lbnZfQ0ZMQUdTX3ZhbHVlPSRDRkxBR1MKK2FjX2N2X2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KK2FjX2N2X2Vudl9DRkxBR1NfdmFsdWU9JENGTEFHUworYWNfZW52X0xERkxBR1Nfc2V0PSR7TERGTEFHUytzZXR9CithY19lbnZfTERGTEFHU192YWx1ZT0kTERGTEFHUworYWNfY3ZfZW52X0xERkxBR1Nfc2V0PSR7TERGTEFHUytzZXR9CithY19jdl9lbnZfTERGTEFHU192YWx1ZT0kTERGTEFHUworYWNfZW52X0NQUEZMQUdTX3NldD0ke0NQUEZMQUdTK3NldH0KK2FjX2Vudl9DUFBGTEFHU192YWx1ZT0kQ1BQRkxBR1MKK2FjX2N2X2Vudl9DUFBGTEFHU19zZXQ9JHtDUFBGTEFHUytzZXR9CithY19jdl9lbnZfQ1BQRkxBR1NfdmFsdWU9JENQUEZMQUdTCithY19lbnZfQ1BQX3NldD0ke0NQUCtzZXR9CithY19lbnZfQ1BQX3ZhbHVlPSRDUFAKK2FjX2N2X2Vudl9DUFBfc2V0PSR7Q1BQK3NldH0KK2FjX2N2X2Vudl9DUFBfdmFsdWU9JENQUAorCisjCisjIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuCisjCitpZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJsb25nIjsgdGhlbgorICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KKyAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgorICBjYXQgPDxFT0YKK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHRoaXMgcGFja2FnZSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgorCitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgorCitEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KKworQ29uZmlndXJhdGlvbjoKKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQorICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKKyAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcworICAgICAgLS1jYWNoZS1maWxlPUZJTEUgICBjYWNoZSB0ZXN0IHJlc3VsdHMgaW4gRklMRSBbZGlzYWJsZWRdCisgIC1DLCAtLWNvbmZpZy1jYWNoZSAgICAgIGFsaWFzIGZvciBcYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnCisgIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCisgICAgICAtLXNyY2Rpcj1ESVIgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMgaW4gRElSIFtjb25maWd1cmUgZGlyIG9yIFxgLi4nXQorCitFT0YKKworICBjYXQgPDxFT0YKK0luc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCisgICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCisgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVhdCisKK0J5IGRlZmF1bHQsIFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbgorXGAkYWNfZGVmYXVsdF9wcmVmaXgvYmluJywgXGAkYWNfZGVmYXVsdF9wcmVmaXgvbGliJyBldGMuICBZb3UgY2FuIHNwZWNpZnkKK2FuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCitmb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhPTUUnLgorCitGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KKworRmluZSB0dW5pbmcgb2YgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKyAgLS1iaW5kaXI9RElSICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dCisgIC0tc2JpbmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmluXQorICAtLWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4ZWN1dGFibGVzIFtFUFJFRklYL2xpYmV4ZWNdCisgIC0tZGF0YXJvb3RkaXI9RElSICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL3NoYXJlXQorICAtLWRhdGFkaXI9RElSICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW0RBVEFST09URElSXQorICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFkLW9ubHkgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL2V0Y10KKyAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL2NvbV0KKyAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQorICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgW0VQUkVGSVgvbGliXQorICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhlYWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdCisgIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIFsvdXNyL2luY2x1ZGVdCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL21hbl0KK0VPRgorCisgIGNhdCA8PFxFT0YKKworUHJvZ3JhbSBuYW1lczoKKyAgLS1wcm9ncmFtLXByZWZpeD1QUkVGSVggICAgICAgICAgICBwcmVwZW5kIFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcworICAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCAgICAgICAgICAgIGFwcGVuZCBTVUZGSVggdG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMKKyAgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPVBST0dSQU0gICBydW4gc2VkIFBST0dSQU0gb24gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMKKworU3lzdGVtIHR5cGVzOgorICAtLWJ1aWxkPUJVSUxEICAgICAgICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQorICAtLWhvc3Q9SE9TVCAgICAgICBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCisgIC0tdGFyZ2V0PVRBUkdFVCAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgY29tcGlsZXJzIGZvciBUQVJHRVQgW0hPU1RdCitFT0YKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCisKKyAgY2F0IDw8XEVPRgorCitPcHRpb25hbCBQYWNrYWdlczoKKyAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNdCisgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKKworT3B0aW9uYWwgRmVhdHVyZXM6CisgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKKyAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQorCisgIC0td2l0aC1zeXN0ZW0tdHlwZT1YWFggIHRlc3Q6IG92ZXJyaWRlIGRlcml2ZWQgaG9zdCBzeXN0ZW0tdHlwZQorICAtLXdpdGgtcGtnLWNvbmZpZ3s9cGF0aH0gZW5hYmxlL2Rpc2FibGUgdXNlIG9mIHBrZy1jb25maWcKKyAgLS13aXRoLXBrZy1jb25maWctbGliZGlyPVhYWCB1c2UgZ2l2ZW4gZGlyZWN0b3J5IGZvciBpbnN0YWxsaW5nIHBjLWZpbGVzCisgIC0td2l0aG91dC10ZXN0cyAgICAgICAgIHN1cHByZXNzIGJ1aWxkIHdpdGggdGVzdC1wcm9ncmFtcworICAtLWVuYWJsZS1taXhlZC1jYXNlICAgICB0aWMgc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lcworICAtLXdpdGgtaW5zdGFsbC1wcmVmaXggICBwcmVmaXhlcyBhY3R1YWwgaW5zdGFsbC1sb2NhdGlvbiAoJERFU1RESVIpCitCdWlsZC1Ub29scyBOZWVkZWQgdG8gQ29tcGlsZSBUZW1wb3JhcnkgQXBwbGljYXRpb25zIGZvciBDcm9zcy1jb21waWxpbmc6CisgIC0td2l0aC1idWlsZC1jYz1YWFggICAgIHRoZSBidWlsZCBDIGNvbXBpbGVyICgkQlVJTERfQ0MpCisgIC0td2l0aC1idWlsZC1jcHA9WFhYICAgIHRoZSBidWlsZCBDIHByZXByb2Nlc3NvciAoJEJVSUxEX0NQUCkKKyAgLS13aXRoLWJ1aWxkLWNmbGFncz1YWFggdGhlIGJ1aWxkIEMgY29tcGlsZXItZmxhZ3MgKCRCVUlMRF9DRkxBR1MpCisgIC0td2l0aC1idWlsZC1jcHBmbGFncz1YWFggdGhlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yLWZsYWdzICgkQlVJTERfQ1BQRkxBR1MpCisgIC0td2l0aC1idWlsZC1sZGZsYWdzPVhYWCB0aGUgYnVpbGQgbGlua2VyLWZsYWdzICgkQlVJTERfTERGTEFHUykKKyAgLS13aXRoLWJ1aWxkLWxpYnM9WFhYICAgdGhlIGJ1aWxkIGxpYnJhcmllcyAoJHtCVUlMRF9MSUJTfSkKK09wdGlvbnMgdG8gU3BlY2lmeSB0aGUgTGlicmFyaWVzIEJ1aWx0L1VzZWQ6CisgIC0td2l0aC1zaGFyZWQgICAgICAgICAgIGdlbmVyYXRlIHNoYXJlZCBDLW9iamVjdHMgKG5lZWRlZCBmb3IgLS13aXRoLWFkYS1zaGFyZWRsaWIpCisgIC0td2l0aC1jdXJzZXMtZGlyPURJUiAgIGRpcmVjdG9yeSBpbiB3aGljaCAobiljdXJzZXMgaXMgaW5zdGFsbGVkCisgIC0tZW5hYmxlLXdpZGVjICAgICAgICAgIGNvbXBpbGUgd2l0aCB3aWRlLWNoYXIvVVRGLTggY29kZQorICAtLXdpdGgtbGliLXByZWZpeCAgICAgICBvdmVycmlkZSBsaWJyYXJ5LXByZWZpeAorICAtLXdpdGgtc2hsaWItdmVyc2lvbj1YICBTcGVjaWZ5IHJlbCBvciBhYmkgdmVyc2lvbiBmb3Igc2hhcmVkIGxpYnMKKyAgLS1lbmFibGUtcnBhdGgtbGluayAgICAgbGluayBzYW1wbGUgcHJvZ3JhbXMgd2l0aCBycGF0aCBvcHRpb24KK0ZpbmUtVHVuaW5nIFlvdXIgQ29uZmlndXJhdGlvbjoKKyAgLS1lbmFibGUtYnJva2VuX2xpbmtlciAgY29tcGlsZSB3aXRoIGJyb2tlbi1saW5rZXIgc3VwcG9ydCBjb2RlCisgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKKyAgLS13aXRoLXJjcy1pZHMgICAgICAgICAgY29tcGlsZS1pbiBSQ1MgaWRlbnRpZmllcnMKK0V4dGVuc2lvbnM6CisgIC0tZGlzYWJsZS1leHQtZnVuY3MgICAgIGRpc2FibGUgZnVuY3Rpb24tZXh0ZW5zaW9ucworICAtLWVuYWJsZS1jb25zdCAgICAgICAgICBjb21waWxlIHdpdGggZXh0cmEvbm9uLXN0YW5kYXJkIGNvbnN0CitEZXZlbG9wbWVudCBDb2RlOgorICAtLXdpdGhvdXQtZGV2ZWxvcCAgICAgICBkaXNhYmxlIGRldmVsb3BtZW50IG9wdGlvbnMKK0V4cGVyaW1lbnRhbCBDb2RlOgorICAtLXdpdGgtcHRocmVhZCAgICAgICAgICB1c2UgUE9TSVggdGhyZWFkIGxpYnJhcnkKKyAgLS1lbmFibGUtd2Vhay1zeW1ib2xzICAgZW5hYmxlIHdlYWstc3ltYm9scyBmb3IgcHRocmVhZHMKKyAgLS1lbmFibGUtcmVlbnRyYW50ICAgICAgY29tcGlsZSB3aXRoIGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZQorICAtLXdpdGgtd3JhcC1wcmVmaXg9WFhYICBvdmVycmlkZSBwcmVmaXggdXNlZCBmb3IgcHVibGljIHZhcmlhYmxlcworVGVzdGluZy9kZXZlbG9wbWVudCBPcHRpb25zOgorICAtLWRpc2FibGUtZWNobyAgICAgICAgICBkbyBub3QgZGlzcGxheSAiY29tcGlsaW5nIiBjb21tYW5kcworICAtLWVuYWJsZS13YXJuaW5ncyAgICAgICBidWlsZDogdHVybiBvbiBHQ0MgY29tcGlsZXIgd2FybmluZ3MKKyAgLS1lbmFibGUtYXNzZXJ0aW9ucyAgICAgdGVzdDogdHVybiBvbiBnZW5lcmF0aW9uIG9mIGFzc2VydGlvbiBjb2RlCisgIC0tZW5hYmxlLWV4cGFuZGVkICAgICAgIHRlc3Q6IGdlbmVyYXRlIGZ1bmN0aW9ucyBmb3IgY2VydGFpbiBtYWNyb3MKKyAgLS1kaXNhYmxlLW1hY3JvcyAgICAgICAgdGVzdDogdXNlIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBtYWNyb3MKKyAgLS13aXRoLXRyYWNlICAgICAgICAgICAgdGVzdDogYWRkIHRyYWNlKCkgZnVuY3Rpb24gdG8gYWxsIG1vZGVscyBvZiBuY3Vyc2VzCisgIC0tZGlzYWJsZS1nbmF0LXByb2plY3RzIHRlc3Q6IGRpc2FibGUgR05BVCBwcm9qZWN0cyBldmVuIGlmIHVzYWJsZQorQWRhOTUgQmluZGluZyBPcHRpb25zOgorICAtLXdpdGgtYWRhLWNvbXBpbGVyPUNNRCBzcGVjaWZ5IEFkYTk1IGNvbXBpbGVyIGNvbW1hbmQgKGRlZmF1bHQgZ25hdG1ha2UpCisgIC0td2l0aC1hZGEtaW5jbHVkZT1ESVIgIEFkYSBpbmNsdWRlcyBhcmUgaW4gRElSIChkZWZhdWx0OiBQUkVGSVgvc2hhcmUvYWRhL2FkYWluY2x1ZGUpCisgIC0td2l0aC1hZGEtb2JqZWN0cz1ESVIgIEFkYSBvYmplY3RzIGFyZSBpbiBESVIgKGRlZmF1bHQ6IFBSRUZJWC9saWIvYWRhL2FkYWxpYikKKyAgLS13aXRoLWFkYS1zaGFyZWRsaWI9c29uYW1lIGJ1aWxkIHNoYXJlZC1saWJyYXJ5IChyZXF1aXJlcyBHTkFUIHByb2plY3RzKQorCitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCisgIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKKyAgTERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZlIGxpYnJhcmllcyBpbiBhCisgICAgICAgICAgICAgIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8bGliIGRpcj4KKyAgQ1BQRkxBR1MgICAgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZiB5b3UgaGF2ZQorICAgICAgICAgICAgICBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KKyAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKKworVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKK2l0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KKworRU9GCitmaQorCitpZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCisgICMgSWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZpYyAtLWhlbHAuCisgIGFjX3BvcGRpcj1gcHdkYAorICBmb3IgYWNfc3ViZGlyIGluIDogJGFjX3N1YmRpcnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX3N1YmRpciIgPSB4OiAmJiBjb250aW51ZQorICAgIGNkICRhY19zdWJkaXIKKyAgICAjIEEgIi4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluIC8kYWNfc3ViZGlyLgorICAgIGFjX2RvdHM9YGVjaG8gJGFjX3N1YmRpciB8CisgICAgICAgICAgICAgc2VkICdzLF5cLi8sLDtzLFteL10kLCYvLDtzLFteL10qLywuLi8sZydgCisKKyAgICBjYXNlICRzcmNkaXIgaW4KKyAgICAuKSAjIE5vIC0tc3JjZGlyIG9wdGlvbi4gIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KKyAgICAgIGFjX3N1Yl9zcmNkaXI9JHNyY2RpciA7OworICAgIFtcXC9dKiB8ID86W1xcL10qICkgIyBBYnNvbHV0ZSBwYXRoLgorICAgICAgYWNfc3ViX3NyY2Rpcj0kc3JjZGlyLyRhY19zdWJkaXIgOzsKKyAgICAqKSAjIFJlbGF0aXZlIHBhdGguCisgICAgICBhY19zdWJfc3JjZGlyPSRhY19kb3RzJHNyY2Rpci8kYWNfc3ViZGlyIDs7CisgICAgZXNhYworCisgICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmU7IG90aGVyd2lzZSBnZXQgQ3lnbnVzIHN0eWxlIGNvbmZpZ3VyZS4KKyAgICBpZiB0ZXN0IC1mICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZS5nbnU7IHRoZW4KKyAgICAgIGVjaG8KKyAgICAgICRTSEVMTCAkYWNfc3ViX3NyY2Rpci9jb25maWd1cmUuZ251ICAtLWhlbHA9cmVjdXJzaXZlCisgICAgZWxpZiB0ZXN0IC1mICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZTsgdGhlbgorICAgICAgZWNobworICAgICAgJFNIRUxMICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZSAgLS1oZWxwPXJlY3Vyc2l2ZQorICAgIGVsaWYgdGVzdCAtZiAkYWNfc3ViX3NyY2Rpci9jb25maWd1cmUuYWMgfHwKKyAgICAgICAgICAgdGVzdCAtZiAkYWNfc3ViX3NyY2Rpci9jb25maWd1cmUuaW47IHRoZW4KKyAgICAgIGVjaG8KKyAgICAgICRhY19jb25maWd1cmUgLS1oZWxwCisgICAgZWxzZQorICAgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19zdWJkaXIiID4mMgorICAgIGZpCisgICAgY2QgJGFjX3BvcGRpcgorICBkb25lCitmaQorCit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0IDAKK2lmICRhY19pbml0X3ZlcnNpb247IHRoZW4KKyAgY2F0IDw8XEVPRgorCitDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgorRU9GCisgIGV4aXQgMAorZmkKK2V4ZWMgNT5jb25maWcubG9nCitjYXQgPiY1IDw8RU9GCitUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQorcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KKworSXQgd2FzIGNyZWF0ZWQgYnkgJGFzX21lLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Mi4yMDE0MTIwNC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworCisgICQgJDAgJEAKKworRU9GCit7CitjYXQgPDxfQVNVTkFNRQorIyMgLS0tLS0tLS0tLSAjIworIyMgUGxhdGZvcm0uICAjIworIyMgLS0tLS0tLS0tLSAjIworCitob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCisKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK2hvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKworUEFUSCA9ICRQQVRICisKK19BU1VOQU1FCit9ID4mNQorCitjYXQgPiY1IDw8RU9GCisjIyAtLS0tLS0tLS0tLS0gIyMKKyMjIENvcmUgdGVzdHMuICAjIworIyMgLS0tLS0tLS0tLS0tICMjCisKK0VPRgorCisjIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgorIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuCisjIEFsc28gcXVvdGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhLWNoYXJhY3RlcnMuCithY19jb25maWd1cmVfYXJncz0KK2FjX3NlcD0KK2ZvciBhY19hcmcKK2RvCisgIGNhc2UgJGFjX2FyZyBpbgorICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXAorICB8IC0tbm8tY3IgfCAtLW5vLWMpIDs7CisgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAorICB8IC0tbm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikgOzsKKyAgKiIgIip8KiIJIip8KltcW1xdXH5cI1wkXF5cJlwqXChcKVx7XH1cXFx8XDtcPFw+XD9cIlwnXSopCisgICAgYWNfYXJnPWBlY2hvICIkYWNfYXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYAorICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MkYWNfc2VwJyRhY19hcmcnIgorICAgIGFjX3NlcD0iICIgOzsKKyAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyRhY19zZXAkYWNfYXJnIgorICAgICBhY19zZXA9IiAiIDs7CisgIGVzYWMKKyAgIyBHZXQgcmlkIG9mIHRoZSBsZWFkaW5nIHNwYWNlLgorZG9uZQorCisjIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlCisjIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCit0cmFwICdleGl0X3N0YXR1cz0kPworICAjIFNhdmUgaW50byBjb25maWcubG9nIHNvbWUgaW5mb3JtYXRpb24gdGhhdCBtaWdodCBoZWxwIGluIGRlYnVnZ2luZy4KKyAgZWNobyA+JjUKKyAgZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMiID4mNQorICBlY2hvICIjIyBDYWNoZSB2YXJpYWJsZXMuICAjIyIgPiY1CisgIGVjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIiA+JjUKKyAgZWNobyA+JjUKKyAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKK3sKKyAgKHNldCkgMj4mMSB8CisgICAgY2FzZSBgKGFjX3NwYWNlPSciJyInICciJyInOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgorICAgICphY19zcGFjZT1cICopCisgICAgICBzZWQgLW4gXAorICAgICAgICAicy8nIiciJy8nIiciJ1xcXFwnIiciJyciJyInL2c7CisgICAgCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nIiciJ1xcMiciJyInL3AiCisgICAgICA7OworICAgICopCisgICAgICBzZWQgLW4gXAorICAgICAgICAicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKKyAgICAgIDs7CisgICAgZXNhYzsKK30gPiY1CisgIHNlZCAiL14kL2QiIGNvbmZkZWZzLmggPmNvbmZ0ZXN0LmxvZworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmxvZzsgdGhlbgorICAgIGVjaG8gPiY1CisgICAgZWNobyAiIyMgLS0tLS0tLS0tLS0tICMjIiA+JjUKKyAgICBlY2hvICIjIyBjb25mZGVmcy5oLiAgIyMiID4mNQorICAgIGVjaG8gIiMjIC0tLS0tLS0tLS0tLSAjIyIgPiY1CisgICAgZWNobyA+JjUKKyAgICBjYXQgY29uZnRlc3QubG9nID4mNQorICBmaQorICAoZWNobzsgZWNobykgPiY1CisgIHRlc3QgIiRhY19zaWduYWwiICE9IDAgJiYKKyAgICBlY2hvICIkYXNfbWU6IGNhdWdodCBzaWduYWwgJGFjX3NpZ25hbCIgPiY1CisgIGVjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMiID4mNQorICBybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZzKiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKKyAgICBleGl0ICRleGl0X3N0YXR1cworICAgICAnIDAKK2ZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbworICB0cmFwICdhY19zaWduYWw9JyRhY19zaWduYWwnOyB7IChleGl0IDEpOyBleGl0IDE7IH0nICRhY19zaWduYWwKK2RvbmUKK2FjX3NpZ25hbD0wCisKKyMgY29uZmRlZnMuaCBhdm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBleGNlZWQuCitybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZzLmgKKyMgQUlYIGNwcCBsb3NlcyBvbiBhbiBlbXB0eSBmaWxlLCBzbyBtYWtlIHN1cmUgaXQgY29udGFpbnMgYXQgbGVhc3QgYSBuZXdsaW5lLgorZWNobyA+Y29uZmRlZnMuaAorCisjIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4KKyMgUHJlZmVyIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCitpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuCisgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorICAgIENPTkZJR19TSVRFPSIkcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgorICBlbHNlCisgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgorICBmaQorZmkKK2ZvciBhY19zaXRlX2ZpbGUgaW4gJENPTkZJR19TSVRFOyBkbworICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgorICAgIHsgZWNobyAiJGFzX21lOjg5NTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjUKK2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQorICAgIGNhdCAiJGFjX3NpdGVfZmlsZSIgPiY1CisgICAgLiAiJGFjX3NpdGVfZmlsZSIKKyAgZmkKK2RvbmUKKworaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsCisgICMgZmlsZXMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0aGF0LgorICBpZiB0ZXN0IC1mICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgICB7IGVjaG8gIiRhc19tZTo5MDY6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4KKyAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAkY2FjaGVfZmlsZTs7CisgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAuIC4vJGNhY2hlX2ZpbGU7OworICAgIGVzYWMKKyAgZmkKK2Vsc2UKKyAgeyBlY2hvICIkYXNfbWU6OTE0OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CitlY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICA+JGNhY2hlX2ZpbGUKK2ZpCisKKyMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFyaWFibGVzIHNhdmVkIGluIHRoZSBjYWNoZSBoYXZlIGtlcHQgdGhlIHNhbWUKKyMgdmFsdWUuCithY19jYWNoZV9jb3JydXB0ZWQ9ZmFsc2UKK2ZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfAorICAgICAgICAgICAgICAgc2VkIC1uICdzL15hY19lbnZfXChbYS16QS1aXzAtOV0qXClfc2V0PS4qL1wxL3AnYDsgZG8KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19vbGRfdmFsPSJcJGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWUiCisgIGV2YWwgYWNfbmV3X3ZhbD0iXCRhY19lbnZfJHthY192YXJ9X3ZhbHVlIgorICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluCisgICAgc2V0LCkKKyAgICAgIHsgZWNobyAiJGFzX21lOjkzMDogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsc2V0KQorICAgICAgeyBlY2hvICIkYXNfbWU6OTM0OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYyO30KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7CisgICAgLCk7OworICAgICopCisgICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192YWwiOyB0aGVuCisgICAgICAgIHsgZWNobyAiJGFzX21lOjk0MDogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKyAgICAgICAgeyBlY2hvICIkYXNfbWU6OTQyOiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjUKK2VjaG8gIiRhc19tZTogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiYyO30KKyAgICAgICAgeyBlY2hvICIkYXNfbWU6OTQ0OiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjUKK2VjaG8gIiRhc19tZTogICBjdXJyZW50IHZhbHVlOiAkYWNfbmV3X3ZhbCIgPiYyO30KKyAgICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPToKKyAgICAgIGZpOzsKKyAgZXNhYworICAjIFBhc3MgcHJlY2lvdXMgdmFyaWFibGVzIHRvIGNvbmZpZy5zdGF0dXMuICBJdCBkb2Vzbid0IG1hdHRlciBpZgorICAjIHdlIHBhc3Mgc29tZSB0d2ljZSAoaW4gYWRkaXRpb24gdG8gdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMpLgorICBpZiB0ZXN0ICIkYWNfbmV3X3NldCIgPSBzZXQ7IHRoZW4KKyAgICBjYXNlICRhY19uZXdfdmFsIGluCisgICAgKiIgIip8KiIJIip8KltcW1xdXH5cI1wkXF5cJlwqXChcKVx7XH1cXFx8XDtcPFw+XD9cIlwnXSopCisgICAgICBhY19hcmc9JGFjX3Zhcj1gZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIKKyAgICAgIDs7CisgICAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAkYWNfdmFyPSRhY19uZXdfdmFsIgorICAgICAgIDs7CisgICAgZXNhYworICBmaQorZG9uZQoraWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsgdGhlbgorICB7IGVjaG8gIiRhc19tZTo5NjM6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjI7fQorICB7IHsgZWNobyAiJGFzX21lOjk2NTogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorYWNfbWFpbl9yZXR1cm49cmV0dXJuCisKK2Nhc2UgYGVjaG8gInRlc3RpbmdcYyIgMj4vZGV2L251bGw7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3RpbmcgMj4vZGV2L251bGw7IGVjaG8gMSwyLDNgIGluCisgICpjKiwtbiopIEVDSE9fTj0gRUNIT19DPQkjIG5ld2xpbmVzIGRvIG5vdCBzZWQgOy0pIG9ubHkgYnJva2VuIHNoZWxscyB3b3VsZCB1c2UgdGhpcyBjYXNlIGFueXdheQorCQkgICBFQ0hPX1Q9JwknIDs7CisgICpjKiwqICApIEVDSE9fTj0tbiBFQ0hPX0M9IEVDSE9fVD0gOzsKKyAgKikgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKK2VzYWMKK2VjaG8gIiMhICRTSEVMTCIgPmNvbmZ0ZXN0LnNoCitlY2hvICAiZXhpdCAwIiAgID4+Y29uZnRlc3Quc2gKK2NobW9kICt4IGNvbmZ0ZXN0LnNoCitpZiB7IChlY2hvICIkYXNfbWU6OTg2OiBQQVRIPVwiLjsuXCI7IGNvbmZ0ZXN0LnNoIikgPiY1CisgIChQQVRIPSIuOy4iOyBjb25mdGVzdC5zaCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCisgIGFjX3BhdGhfc2VwYXJhdG9yPSc7JworZWxzZQorICBhY19wYXRoX3NlcGFyYXRvcj06CitmaQorUEFUSF9TRVBBUkFUT1I9IiRhY19wYXRoX3NlcGFyYXRvciIKK3JtIC1mIGNvbmZ0ZXN0LnNoCisKK2FjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMgaW5jbHVkZS9uY3Vyc2VzX2NmZy5oOmluY2x1ZGUvbmN1cnNlc19jZmcuaGluIgorCit0b3BfYnVpbGRkaXI9YHB3ZGAKKworYWNfYXV4X2Rpcj0KK2ZvciBhY19kaXIgaW4gJHNyY2RpciAkc3JjZGlyLy4uICRzcmNkaXIvLi4vLi47IGRvCisgIGlmIHRlc3QgLWYgJGFjX2Rpci9pbnN0YWxsLXNoOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgJGFjX2Rpci9pbnN0YWxsLnNoOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgJGFjX2Rpci9zaHRvb2w7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQorZG9uZQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgIHsgeyBlY2hvICIkYXNfbWU6MTAxOTogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gJHNyY2RpciAkc3JjZGlyLy4uICRzcmNkaXIvLi4vLi4iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIKK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgorCisjIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCiskYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAorICB7IHsgZWNobyAiJGFzX21lOjEwMjk6IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3ViIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBydW4gJGFjX2NvbmZpZ19zdWIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZWNobyAiJGFzX21lOjEwMzM6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2J1aWxkK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwordGVzdCAteiAiJGFjX2N2X2J1aWxkX2FsaWFzIiAmJgorICBhY19jdl9idWlsZF9hbGlhcz1gJGFjX2NvbmZpZ19ndWVzc2AKK3Rlc3QgLXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKKyAgeyB7IGVjaG8gIiRhc19tZToxMDQyOiBlcnJvcjogY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorYWNfY3ZfYnVpbGQ9YCRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhc2AgfHwKKyAgeyB7IGVjaG8gIiRhc19tZToxMDQ2OiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZC4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZC4iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZmkKK2VjaG8gIiRhc19tZToxMDUxOiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfYnVpbGQiID4mNgorYnVpbGQ9JGFjX2N2X2J1aWxkCitidWlsZF9jcHU9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2J1aWxkX3ZlbmRvcj1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAorYnVpbGRfb3M9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKKworZWNobyAiJGFzX21lOjEwNTg6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMKK3Rlc3QgLXogIiRhY19jdl9ob3N0X2FsaWFzIiAmJgorICBhY19jdl9ob3N0X2FsaWFzPSRhY19jdl9idWlsZF9hbGlhcworYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXNgIHx8CisgIHsgeyBlY2hvICIkYXNfbWU6MTA2NzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZmkKK2VjaG8gIiRhc19tZToxMDcyOiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9ob3N0IiA+JjYKK2hvc3Q9JGFjX2N2X2hvc3QKK2hvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2hvc3RfdmVuZG9yPWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK2hvc3Rfb3M9YGVjaG8gJGFjX2N2X2hvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAorCitpZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmd1ZXNzIHx8IHRlc3QgLWYgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIDsgdGhlbgorCWVjaG8gIiRhc19tZToxMDgwOiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3RhcmdldCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jdl90YXJnZXRfYWxpYXM9JHRhcmdldF9hbGlhcwordGVzdCAieCRhY19jdl90YXJnZXRfYWxpYXMiID0gIngiICYmCisgIGFjX2N2X3RhcmdldF9hbGlhcz0kYWNfY3ZfaG9zdF9hbGlhcworYWNfY3ZfdGFyZ2V0PWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzYCB8fAorICB7IHsgZWNobyAiJGFzX21lOjEwODk6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitmaQorZWNobyAiJGFzX21lOjEwOTQ6IHJlc3VsdDogJGFjX2N2X3RhcmdldCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfdGFyZ2V0IiA+JjYKK3RhcmdldD0kYWNfY3ZfdGFyZ2V0Cit0YXJnZXRfY3B1PWBlY2hvICRhY19jdl90YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAordGFyZ2V0X3ZlbmRvcj1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK3RhcmdldF9vcz1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKKworIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUgJGhvc3QgZXRjLgorIyB3aWxsIGdldCBjYW5vbmljYWxpemVkLgordGVzdCAtbiAiJHRhcmdldF9hbGlhcyIgJiYKKyAgdGVzdCAiJHByb2dyYW1fcHJlZml4JHByb2dyYW1fc3VmZml4JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiID0gXAorICAgIE5PTkVOT05Fcyx4LHgsICYmCisgIHByb2dyYW1fcHJlZml4PSR7dGFyZ2V0X2FsaWFzfS0KKwlzeXN0ZW1fbmFtZT0iJGhvc3Rfb3MiCitlbHNlCisJc3lzdGVtX25hbWU9ImAodW5hbWUgLXMgLXIpIDI+L2Rldi9udWxsYCIKKwlpZiB0ZXN0IC16ICIkc3lzdGVtX25hbWUiIDsgdGhlbgorCQlzeXN0ZW1fbmFtZT0iYChob3N0bmFtZSkgMj4vZGV2L251bGxgIgorCWZpCitmaQordGVzdCAtbiAiJHN5c3RlbV9uYW1lIiAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBTWVNURU1fTkFNRSAiJHN5c3RlbV9uYW1lIgorRU9GCisKK2lmIHRlc3QgIiR7Y2ZfY3Zfc3lzdGVtX25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2ZfY3Zfc3lzdGVtX25hbWU9IiRzeXN0ZW1fbmFtZSIKK2ZpCisKK3Rlc3QgLXogIiRzeXN0ZW1fbmFtZSIgJiYgc3lzdGVtX25hbWU9IiRjZl9jdl9zeXN0ZW1fbmFtZSIKK3Rlc3QgLW4gIiRjZl9jdl9zeXN0ZW1fbmFtZSIgJiYgZWNobyAiJGFzX21lOjExMjY6IHJlc3VsdDogQ29uZmlndXJpbmcgZm9yICRjZl9jdl9zeXN0ZW1fbmFtZSIgPiY1CitlY2hvICIke0VDSE9fVH1Db25maWd1cmluZyBmb3IgJGNmX2N2X3N5c3RlbV9uYW1lIiA+JjYKKworaWYgdGVzdCAiLiRzeXN0ZW1fbmFtZSIgIT0gIi4kY2ZfY3Zfc3lzdGVtX25hbWUiIDsgdGhlbgorCWVjaG8gIiRhc19tZToxMTMwOiByZXN1bHQ6IENhY2hlZCBzeXN0ZW0gbmFtZSAoJHN5c3RlbV9uYW1lKSBkb2VzIG5vdCBhZ3JlZSB3aXRoIGFjdHVhbCAoJGNmX2N2X3N5c3RlbV9uYW1lKSIgPiY1CitlY2hvICIke0VDSE9fVH1DYWNoZWQgc3lzdGVtIG5hbWUgKCRzeXN0ZW1fbmFtZSkgZG9lcyBub3QgYWdyZWUgd2l0aCBhY3R1YWwgKCRjZl9jdl9zeXN0ZW1fbmFtZSkiID4mNgorCXsgeyBlY2hvICIkYXNfbWU6MTEzMjogZXJyb3I6IFwiUGxlYXNlIHJlbW92ZSBjb25maWcuY2FjaGUgYW5kIHRyeSBhZ2Fpbi5cIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBcIlBsZWFzZSByZW1vdmUgY29uZmlnLmNhY2hlIGFuZCB0cnkgYWdhaW4uXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtLXR5cGUgb3IgLS13aXRob3V0LXN5c3RlbS10eXBlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fdHlwZStzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9zeXN0ZW1fdHlwZSIKKyAgeyBlY2hvICIkYXNfbWU6MTE0MDogV0FSTklORzogb3ZlcnJpZGluZyBzeXN0ZW0gdHlwZSB0byAkd2l0aHZhbCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG92ZXJyaWRpbmcgc3lzdGVtIHR5cGUgdG8gJHdpdGh2YWwiID4mMjt9CisJY2ZfY3Zfc3lzdGVtX25hbWU9JHdpdGh2YWwKKwlob3N0X29zPSR3aXRodmFsCisKK2ZpOworCisjIyMJU2F2ZSB0aGUgZ2l2ZW4gJENGTEFHUyB0byBhbGxvdyB1c2VyLW92ZXJyaWRlLgorY2ZfdXNlcl9DRkxBR1M9IiRDRkxBR1MiCisKKyMjIwlEZWZhdWx0IGluc3RhbGwtbG9jYXRpb24KKworZWNobyAiJGFzX21lOjExNTI6IGNoZWNraW5nIGZvciBwcmVmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcHJlZml4Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAieCRwcmVmaXgiID0gInhOT05FIiA7IHRoZW4KKwljYXNlICIkY2ZfY3Zfc3lzdGVtX25hbWUiIGluCisJCSMgbm9uLXZlbmRvciBzeXN0ZW1zIGRvbid0IGhhdmUgYSBjb25mbGljdAorCShvcGVuYnNkKnxmcmVlYnNkKnxtaXJic2QqfGxpbnV4KnxjeWd3aW4qfG1zeXMqfGsqYnNkKi1nbnV8bWluZ3cqKQorCQlwcmVmaXg9L3VzcgorCQk7OworCSgqKQlwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4CisJCTs7CisJZXNhYworZmkKK2VjaG8gIiRhc19tZToxMTY0OiByZXN1bHQ6ICRwcmVmaXgiID4mNQorZWNobyAiJHtFQ0hPX1R9JHByZWZpeCIgPiY2CisKK2lmIHRlc3QgIngkcHJlZml4IiA9ICJ4Tk9ORSIgOyB0aGVuCitlY2hvICIkYXNfbWU6MTE2ODogY2hlY2tpbmcgZm9yIGRlZmF1bHQgaW5jbHVkZS1kaXJlY3RvcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGVmYXVsdCBpbmNsdWRlLWRpcmVjdG9yeS4uLiAkRUNIT19DIiA+JjYKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvIDE+JjYKK2ZvciBjZl9zeW1ib2wgaW4gXAorCSRpbmNsdWRlZGlyIFwKKwkkaW5jbHVkZWRpci9uY3Vyc2VzIFwKKwkkcHJlZml4L2luY2x1ZGUgXAorCSRwcmVmaXgvaW5jbHVkZS9uY3Vyc2VzIFwKKwkvdXNyL2xvY2FsL2luY2x1ZGUgXAorCS91c3IvbG9jYWwvaW5jbHVkZS9uY3Vyc2VzIFwKKwkvdXNyL2luY2x1ZGUgXAorCS91c3IvaW5jbHVkZS9uY3Vyc2VzCitkbworCWNmX2Rpcj1gZXZhbCBlY2hvICRjZl9zeW1ib2xgCisJaWYgdGVzdCAtZiAkY2ZfZGlyL2N1cnNlcy5oIDsgdGhlbgorCWlmICggZmdyZXAgTkNVUlNFU19WRVJTSU9OICRjZl9kaXIvY3Vyc2VzLmggMj4mMSA+L2Rldi9udWxsICkgOyB0aGVuCisJCWluY2x1ZGVkaXI9IiRjZl9zeW1ib2wiCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAgJiYgZWNobyAkYWNfbiAiCWZvdW5kICIgMT4mNgorCQlicmVhaworCWZpCisJZmkKKwl0ZXN0IC1uICIkdmVyYm9zZSIgICYmIGVjaG8gIgl0ZXN0ZWQgJGNmX2RpciIgMT4mNgorZG9uZQorZWNobyAiJGFzX21lOjExOTE6IHJlc3VsdDogJGluY2x1ZGVkaXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGluY2x1ZGVkaXIiID4mNgorZmkKKworIyMjCUNoZWNrcyBmb3IgcHJvZ3JhbXMuCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBnbmF0Z2NjIGdjYyBjYworICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTIwODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorZWNobyAiJGFzX21lOjEyMjM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MTIzMTogcmVzdWx0OiAkQ0MiID4mNQorZWNobyAiJHtFQ0hPX1R9JENDIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjEyMzQ6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICAgIHRlc3QgLW4gIiRDQyIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgIGZvciBhY19wcm9nIGluIGduYXRnY2MgZ2NjIGNjCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjEyNDc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZToxMjYyOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjEyNzA6IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToxMjczOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NDIiAmJiBicmVhaworZG9uZQorCisgIENDPSRhY19jdF9DQworZmkKKwordGVzdCAteiAiJENDIiAmJiB7IHsgZWNobyAiJGFzX21lOjEyODM6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCitlY2hvICIkYXNfbWU6MTI4ODoiIFwKKyAgICAgImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQorYWNfY29tcGlsZXI9YHNldCBYICRhY19jb21waWxlOyBlY2hvICQyYAoreyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5MTogXCIkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyOTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfQoreyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5NjogXCIkYWNfY29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjk5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KK3sgKGV2YWwgZWNobyAiJGFzX21lOjEzMDE6IFwiJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9CisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTMwOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEub3V0IGEuZXhlIgorIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgorIyBJdCB3aWxsIGhlbHAgdXMgZGlhZ25vc2UgYnJva2VuIGNvbXBpbGVycywgYW5kIGZpbmRpbmcgb3V0IGFuIGludHVpdGlvbgorIyBvZiBleGVleHQuCitlY2hvICIkYXNfbWU6MTMyNDogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1dC4uLiAkRUNIT19DIiA+JjYKK2FjX2xpbmtfZGVmYXVsdD1gZWNobyAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMjc6IFwiJGFjX2xpbmtfZGVmYXVsdFwiIikgPiY1CisgIChldmFsICRhY19saW5rX2RlZmF1bHQpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKyAgIyBGaW5kIHRoZSBvdXRwdXQsIHN0YXJ0aW5nIGZyb20gdGhlIG1vc3QgbGlrZWx5LiAgVGhpcyBzY2hlbWUgaXMKKyMgbm90IHJvYnVzdCB0byBqdW5rIGluIGAuJywgaGVuY2UgZ28gdG8gd2lsZGNhcmRzIChhLiopIG9ubHkgYXMgYSBsYXN0CisjIHJlc29ydC4KK2ZvciBhY19maWxlIGluIGBscyBhLmV4ZSBjb25mdGVzdC5leGUgMj4vZGV2L251bGw7CisgICAgICAgICAgICAgICAgbHMgYS5vdXQgY29uZnRlc3QgMj4vZGV2L251bGw7CisgICAgICAgICAgICAgICAgbHMgYS4qIGNvbmZ0ZXN0LiogMj4vZGV2L251bGxgOyBkbworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5kYmcgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLm8gfCAqLm9iaiApIDs7CisgICAgYS5vdXQgKSAjIFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUsIGJ1dCBleGVleHQ9JycgaXMgbW9zdAorICAgICAgICAgICAgIyBjZXJ0YWlubHkgcmlnaHQuCisgICAgICAgICAgICBicmVhazs7CisgICAgKi4qICkgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCisgICAgICAgICAgIyBGSVhNRTogSSBiZWxpZXZlIHdlIGV4cG9ydCBhY19jdl9leGVleHQgZm9yIExpYnRvb2wgLS1ha2ltLgorICAgICAgICAgIGV4cG9ydCBhY19jdl9leGVleHQKKyAgICAgICAgICBicmVhazs7CisgICAgKiApIGJyZWFrOzsKKyAgZXNhYworZG9uZQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Cit7IHsgZWNobyAiJGFzX21lOjEzNTM6IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzIiA+JjI7fQorICAgeyAoZXhpdCA3Nyk7IGV4aXQgNzc7IH07IH0KK2ZpCisKK2FjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0CitlY2hvICIkYXNfbWU6MTM1OTogcmVzdWx0OiAkYWNfZmlsZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfZmlsZSIgPiY2CisKKyMgQ2hlY2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgorIyB0aGUgY29tcGlsZXIgaXMgYnJva2VuLCBvciB3ZSBjcm9zcyBjb21waWxlLgorZWNobyAiJGFzX21lOjEzNjQ6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICRFQ0hPX0MiID4mNgorIyBGSVhNRTogVGhlc2UgY3Jvc3MgY29tcGlsZXIgaGFja3Mgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIEF1dG9jb25mIDMuMAorIyBJZiBub3QgY3Jvc3MgY29tcGlsaW5nLCBjaGVjayB0aGF0IHdlIGNhbiBydW4gYSBzaW1wbGUgcHJvZ3JhbS4KK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgorICBpZiB7IGFjX3RyeT0nLi8kYWNfZmlsZScKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM3MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzNzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz1ubworICBlbHNlCisgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgorCWNyb3NzX2NvbXBpbGluZz15ZXMKKyAgICBlbHNlCisJeyB7IGVjaG8gIiRhc19tZToxMzgwOiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgorSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0taG9zdCcuIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KK0lmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgIGZpCisgIGZpCitmaQorZWNobyAiJGFzX21lOjEzODg6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisKK3JtIC1mIGEub3V0IGEuZXhlIGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKKyMgQ2hlY2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgorIyB0aGUgY29tcGlsZXIgaXMgYnJva2VuLCBvciB3ZSBjcm9zcyBjb21waWxlLgorZWNobyAiJGFzX21lOjEzOTU6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiAkRUNIT19DIiA+JjYKK2VjaG8gIiRhc19tZToxMzk3OiByZXN1bHQ6ICRjcm9zc19jb21waWxpbmciID4mNQorZWNobyAiJHtFQ0hPX1R9JGNyb3NzX2NvbXBpbGluZyIgPiY2CisKK2VjaG8gIiRhc19tZToxNDAwOiBjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXguLi4gJEVDSE9fQyIgPiY2CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDAyOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKyAgIyBJZiBib3RoIGBjb25mdGVzdC5leGUnIGFuZCBgY29uZnRlc3QnIGFyZSBgcHJlc2VudCcgKHdlbGwsIG9ic2VydmFibGUpCisjIGNhdGNoIGBjb25mdGVzdC5leGUnLiAgRm9yIGluc3RhbmNlIHdpdGggQ3lnd2luLCBgbHMgY29uZnRlc3QnIHdpbGwKKyMgd29yayBwcm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0LmV4ZScpLCB3aGlsZSBpdCB3b24ndCB3aXRoCisjIGBybScuCitmb3IgYWNfZmlsZSBpbiBgKGxzIGNvbmZ0ZXN0LmV4ZTsgbHMgY29uZnRlc3Q7IGxzIGNvbmZ0ZXN0LiopIDI+L2Rldi9udWxsYDsgZG8KKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICouZGJnIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5vIHwgKi5vYmogKSA7OworICAgICouKiApIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAorICAgICAgICAgIGV4cG9ydCBhY19jdl9leGVleHQKKyAgICAgICAgICBicmVhazs7CisgICAgKiApIGJyZWFrOzsKKyAgZXNhYworZG9uZQorZWxzZQorICB7IHsgZWNobyAiJGFzX21lOjE0MjE6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBFWEVFWFQ6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjb21wdXRlIEVYRUVYVDogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK3JtIC1mIGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAorZWNobyAiJGFzX21lOjE0Mjc6IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZXhlZXh0IiA+JjYKKworcm0gLWYgY29uZnRlc3QuJGFjX2V4dAorRVhFRVhUPSRhY19jdl9leGVleHQKK2FjX2V4ZWV4dD0kRVhFRVhUCitlY2hvICIkYXNfbWU6MTQzMzogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb2JqZWN0IHN1ZmZpeC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfb2JqZXh0K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQzOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDUxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKyAgZm9yIGFjX2ZpbGUgaW4gYChscyBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iajsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5kYmcgfCAqLnBkYiB8ICoueFNZTSB8ICoubWFwIHwgKi5pbmYgKSA7OworICAgICopIGFjX2N2X29iamV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAorICAgICAgIGJyZWFrOzsKKyAgZXNhYworZG9uZQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Cit7IHsgZWNobyAiJGFzX21lOjE0NjY6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBPQkpFWFQ6IGNhbm5vdCBjb21waWxlIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjb21wdXRlIE9CSkVYVDogY2Fubm90IGNvbXBpbGUiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK3JtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxNDczOiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X29iamV4dCIgPiY2CitPQkpFWFQ9JGFjX2N2X29iamV4dAorYWNfb2JqZXh0PSRPQkpFWFQKK2VjaG8gIiRhc19tZToxNDc3OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ4MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworI2lmbmRlZiBfX0dOVUNfXworICAgICAgIGNob2tlIG1lCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDk4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MDQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY29tcGlsZXJfZ251PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jb21waWxlcl9nbnU9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2FjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKKworZmkKK2VjaG8gIiRhc19tZToxNTE5OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNgorR0NDPWB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXMgJiYgZWNobyB5ZXNgCithY190ZXN0X0NGTEFHUz0ke0NGTEFHUytzZXR9CithY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1nIgorZWNobyAiJGFzX21lOjE1MjU6IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTMxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU0MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTQ5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfcHJvZ19jY19nPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE1NjI6IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19jY19nIiA+JjYKK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KKyAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUworZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1nIC1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9CisgIGZpCitmaQorIyBTb21lIHBlb3BsZSB1c2UgYSBDKysgY29tcGlsZXIgdG8gY29tcGlsZSBDLiAgU2luY2Ugd2UgdXNlIGBleGl0JywKKyMgaW4gQysrIHdlIG5lZWQgdG8gZGVjbGFyZSBpdC4gIEluIGNhc2Ugc29tZW9uZSB1c2VzIHRoZSBzYW1lIGNvbXBpbGVyCisjIGZvciBib3RoIGNvbXBpbGluZyBDIGFuZCBDKysgd2UgbmVlZCB0byBoYXZlIHRoZSBDKysgY29tcGlsZXIgZGVjaWRlCisjIHRoZSBkZWNsYXJhdGlvbiBvZiBleGl0LCBzaW5jZSBpdCdzIHRoZSBtb3N0IGRlbWFuZGluZyBlbnZpcm9ubWVudC4KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2lmbmRlZiBfX2NwbHVzcGx1cworICBjaG9rZSBtZQorI2VuZGlmCitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1ODk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1OTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU5NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1OTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBmb3IgYWNfZGVjbGFyYXRpb24gaW4gXAorICAgJydcCisgICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAorICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCkgdGhyb3cgKCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKKyAgICdleHRlcm4gIkMiIHZvaWQgc3RkOjpleGl0IChpbnQpOyB1c2luZyBzdGQ6OmV4aXQ7JyBcCisgICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCisgICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCk7JyBcCisgICAndm9pZCBleGl0IChpbnQpOycKK2RvCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTYxMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CiskYWNfZGVjbGFyYXRpb24KK2ludAorbWFpbiAoKQoreworZXhpdCAoNDIpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjIzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjI2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2Mjk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Citjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE2NDIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2RlY2xhcmF0aW9uCitpbnQKK21haW4gKCkKK3sKK2V4aXQgKDQyKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY1NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY1NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNjYwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKK3JtIC1yZiBjb25mdGVzdCoKK2lmIHRlc3QgLW4gIiRhY19kZWNsYXJhdGlvbiI7IHRoZW4KKyAgZWNobyAnI2lmZGVmIF9fY3BsdXNwbHVzJyA+PmNvbmZkZWZzLmgKKyAgZWNobyAkYWNfZGVjbGFyYXRpb24gICAgICA+PmNvbmZkZWZzLmgKKyAgZWNobyAnI2VuZGlmJyAgICAgICAgICAgICA+PmNvbmZkZWZzLmgKK2ZpCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorYWNfbWFpbl9yZXR1cm49cmV0dXJuCisKK0dDQ19WRVJTSU9OPW5vbmUKK2lmIHRlc3QgIiRHQ0MiID0geWVzIDsgdGhlbgorCWVjaG8gIiRhc19tZToxNjkzOiBjaGVja2luZyB2ZXJzaW9uIG9mICRDQyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHZlcnNpb24gb2YgJENDLi4uICRFQ0hPX0MiID4mNgorCUdDQ19WRVJTSU9OPSJgJHtDQ30gLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgc2VkIC1lICcyLCRkJyAtZSAncy9eLiooR0NDW14pXSopIC8vJyAtZSAncy9eLiooRGViaWFuW14pXSopIC8vJyAtZSAncy9eW14wLTkuXSovLycgLWUgJ3MvW14wLTkuXS4qLy8nYCIKKwl0ZXN0IC16ICIkR0NDX1ZFUlNJT04iICYmIEdDQ19WRVJTSU9OPXVua25vd24KKwllY2hvICIkYXNfbWU6MTY5NzogcmVzdWx0OiAkR0NDX1ZFUlNJT04iID4mNQorZWNobyAiJHtFQ0hPX1R9JEdDQ19WRVJTSU9OIiA+JjYKK2ZpCisKK2VjaG8gIiRhc19tZToxNzAxOiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgQU5TSSBDIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IEFOU0kgQy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19zdGRjK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X3Byb2dfY2Nfc3RkYz1ubworYWNfc2F2ZV9DQz0kQ0MKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTcwOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYuc2guICAqLworc3RydWN0IGJ1ZiB7IGludCB4OyB9OworRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKK3N0YXRpYyBjaGFyICplIChwLCBpKQorICAgICBjaGFyICoqcDsKKyAgICAgaW50IGk7Cit7CisgIHJldHVybiBwW2ldOworfQorc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQpLCBjaGFyICoqcCwgLi4uKQoreworICBjaGFyICpzOworICB2YV9saXN0IHY7CisgIHZhX3N0YXJ0ICh2LHApOworICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOworICB2YV9lbmQgKHYpOworICByZXR1cm4gczsKK30KK2ludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOworc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307CitzdHJ1Y3QgczIge2ludCAoKmYpIChkb3VibGUgYSk7fTsKK2ludCBwYWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOworaW50IGFyZ2M7CitjaGFyICoqYXJndjsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0gIHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCisjIERvbid0IHRyeSBnY2MgLWFuc2k7IHRoYXQgdHVybnMgb2ZmIHVzZWZ1bCBleHRlbnNpb25zIGFuZAorIyBicmVha3Mgc29tZSBzeXN0ZW1zJyBoZWFkZXIgZmlsZXMuCisjIEFJWAkJCS1xbGFuZ2x2bD1hbnNpCisjIFVsdHJpeCBhbmQgT1NGLzEJLXN0ZDEKKyMgSFAtVVggMTAuMjAgYW5kIGxhdGVyCS1BZQorIyBIUC1VWCBvbGRlciB2ZXJzaW9ucwktQWEgLURfSFBVWF9TT1VSQ0UKKyMgU1ZSNAkJCS1YYyAtRF9fRVhURU5TSU9OU19fCitmb3IgYWNfYXJnIGluICIiIC1xbGFuZ2x2bD1hbnNpIC1zdGQxIC1BZSAiLUFhIC1EX0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCitkbworICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKKyAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc1ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTc2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzY0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTc2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3Byb2dfY2Nfc3RkYz0kYWNfYXJnCiticmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAorZG9uZQorcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0CitDQz0kYWNfc2F2ZV9DQworCitmaQorCitjYXNlICJ4JGFjX2N2X3Byb2dfY2Nfc3RkYyIgaW4KKyAgeHx4bm8pCisgICAgZWNobyAiJGFzX21lOjE3ODQ6IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQorZWNobyAiJHtFQ0hPX1R9bm9uZSBuZWVkZWQiID4mNiA7OworICAqKQorICAgIGVjaG8gIiRhc19tZToxNzg3OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY2CisgICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19zdGRjIiA7OworZXNhYworCisjIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkIGJ5IEFDX1BST0dfQ0MKKzogJHtDQzo9Y2N9CisKK2VjaG8gIiRhc19tZToxNzk1OiBjaGVja2luZyBcJENDIHZhcmlhYmxlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgXCRDQyB2YXJpYWJsZS4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgIiRDQyIgaW4KKygqW1wgXAldLVtJVURdKikKKwllY2hvICIkYXNfbWU6MTc5OTogcmVzdWx0OiBicm9rZW4iID4mNQorZWNobyAiJHtFQ0hPX1R9YnJva2VuIiA+JjYKKwl7IGVjaG8gIiRhc19tZToxODAxOiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0NQUEZMQUdTIG9wdGlvbnMiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0NQUEZMQUdTIG9wdGlvbnMiID4mMjt9CisJIyBodW1vciBoaW0uLi4KKwljZl9mbGFncz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9eW14gCV0qWyAJXS8vJ2AKKwlDQz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9bIAldLiovLydgCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2ZsYWdzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJOzsKKygqKQorCWVjaG8gIiRhc19tZToxODg3OiByZXN1bHQ6IG9rIiA+JjUKK2VjaG8gIiR7RUNIT19UfW9rIiA+JjYKKwk7OworZXNhYworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KK2VjaG8gIiRhc19tZToxODk4OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgorIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQUD0KK2ZpCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKKyAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgorICAgIGRvCisgICAgICBhY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE5MTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5MjQ6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjE5MzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE5NTMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NTc6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjE5NjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVuCisgIGJyZWFrCitmaQorCisgICAgZG9uZQorICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKKworZmkKKyAgQ1BQPSRhY19jdl9wcm9nX0NQUAorZWxzZQorICBhY19jdl9wcm9nX0NQUD0kQ1BQCitmaQorZWNobyAiJGFzX21lOjIwMDA6IHJlc3VsdDogJENQUCIgPiY1CitlY2hvICIke0VDSE9fVH0kQ1BQIiA+JjYKK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjAxMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjAxNTogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjAyMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbi1leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjA0NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA0ODogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjA1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4KKyAgOgorZWxzZQorICB7IHsgZWNobyAiJGFzX21lOjIwODI6IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2siID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworaWYgdGVzdCAkYWNfY3ZfY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4KKyAgICBlY2hvICIkYXNfbWU6MjA5NTogY2hlY2tpbmcgd2hldGhlciAkQ0MgbmVlZHMgLXRyYWRpdGlvbmFsIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgbmVlZHMgLXRyYWRpdGlvbmFsLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2djY190cmFkaXRpb25hbCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICAgIGFjX3BhdHRlcm49IkF1dG9jb25mLioneCciCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjEwMiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c2d0dHkuaD4KK2ludCBBdXRvY29uZiA9IFRJT0NHRVRQOworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgIGVncmVwICIkYWNfcGF0dGVybiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsPXllcworZWxzZQorICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworICBpZiB0ZXN0ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCA9IG5vOyB0aGVuCisgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyMTE3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDx0ZXJtaW8uaD4KK2ludCBBdXRvY29uZiA9IFRDR0VUQTsKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICBlZ3JlcCAiJGFjX3BhdHRlcm4iID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD15ZXMKK2ZpCitybSAtcmYgY29uZnRlc3QqCisKKyAgZmkKK2ZpCitlY2hvICIkYXNfbWU6MjEzMDogcmVzdWx0OiAkYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsIiA+JjYKKyAgaWYgdGVzdCAkYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwgPSB5ZXM7IHRoZW4KKyAgICBDQz0iJENDIC10cmFkaXRpb25hbCIKKyAgZmkKK2ZpCisKK2VjaG8gIiRhc19tZToyMTM3OiBjaGVja2luZyB3aGV0aGVyICRDQyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICRDQyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3Byb2dfQ0NfY19vK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxDRl9FT0YKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitDRl9FT0YKKyMgV2UgZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBzb21lIGNvbXBpbGVycyByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuCisjIGV4aXN0aW5nIC5vIGZpbGUgd2l0aCAtbywgdGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUgb25lLgorYWNfdHJ5PSckQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+JjUnCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTUzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjE1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgIHRlc3QgLWYgY29uZnRlc3QyLiRhY19vYmpleHQgJiYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjE1ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxNjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsKK3RoZW4KKyAgZXZhbCBjZl9jdl9wcm9nX0NDX2Nfbz15ZXMKK2Vsc2UKKyAgZXZhbCBjZl9jdl9wcm9nX0NDX2Nfbz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKK2lmIHRlc3QgJGNmX2N2X3Byb2dfQ0NfY19vID0geWVzOyB0aGVuCisgIGVjaG8gIiRhc19tZToyMTcyOiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjE3NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCit0ZXN0ICIkcHJvZ3JhbV9wcmVmaXgiICE9IE5PTkUgJiYKKyAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyxeLCRwcm9ncmFtX3ByZWZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCisjIFVzZSBhIGRvdWJsZSAkIHNvIG1ha2UgaWdub3JlcyBpdC4KK3Rlc3QgIiRwcm9ncmFtX3N1ZmZpeCIgIT0gTk9ORSAmJgorICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzLFwkLCRwcm9ncmFtX3N1ZmZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCisjIERvdWJsZSBhbnkgXCBvciAkLiAgZWNobyBtaWdodCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCisjIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLgorY2F0IDw8XF9BQ0VPRiA+Y29uZnRlc3Quc2VkCitzL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vCitfQUNFT0YKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9YGVjaG8gJHByb2dyYW1fdHJhbnNmb3JtX25hbWUgfCBzZWQgLWYgY29uZnRlc3Quc2VkYAorcm0gY29uZnRlc3Quc2VkCisKK2ZvciBhY19wcm9nIGluIG1hd2sgZ2F3ayBuYXdrIGF3aworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyMTk2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVdLK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRBV0siOyB0aGVuCisgIGFjX2N2X3Byb2dfQVdLPSIkQVdLIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQVdLPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZToyMjExOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorQVdLPSRhY19jdl9wcm9nX0FXSworaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjIyMTk6IHJlc3VsdDogJEFXSyIgPiY1CitlY2hvICIke0VDSE9fVH0kQVdLIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjIyMjI6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkQVdLIiAmJiBicmVhaworZG9uZQorCit0ZXN0IC16ICIkQVdLIiAmJiB7IHsgZWNobyAiJGFzX21lOjIyMjk6IGVycm9yOiBObyBhd2sgcHJvZ3JhbSBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBObyBhd2sgcHJvZ3JhbSBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitlY2hvICIkYXNfbWU6MjIzMzogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2VncmVwK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIGVjaG8gYSB8IChncmVwIC1FICcoYXxiKScpID4vZGV2L251bGwgMj4mMQorCQl0aGVuIGFjX2N2X3Byb2dfZWdyZXA9J2dyZXAgLUUnCisJCWVsc2UgYWNfY3ZfcHJvZ19lZ3JlcD0nZWdyZXAnCisJZmkKK2ZpCitlY2hvICIkYXNfbWU6MjI0MzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19lZ3JlcCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19lZ3JlcCIgPiY2CisJRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAKKworCXRlc3QgLXogIiRFR1JFUCIgJiYgeyB7IGVjaG8gIiRhc19tZToyMjQ3OiBlcnJvcjogTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBObyBlZ3JlcCBwcm9ncmFtIGZvdW5kIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKKyMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAorIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoKKyMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsCisjIFN1bk9TIC91c3IvZXRjL2luc3RhbGwKKyMgSVJJWCAvc2Jpbi9pbnN0YWxsCisjIEFJWCAvYmluL2luc3RhbGwKKyMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0YWxscyBib290YmxvY2tzIG9uIGZsb3BweSBkaXNjcworIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKKyMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncworIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgorIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCitlY2hvICIkYXNfbWU6MjI2MzogY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgICAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworICAgIElGUz0kYWNfc2F2ZV9JRlMKKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KKyAgICBjYXNlICRhY19kaXIvIGluCisgICAgLyB8IC4vIHwgLi8vIHwgL2NDLyogXAorICAgIHwgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNyL2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogXAorICAgIHwgL3Vzci91Y2IvKiApIDs7CisgICAgKikKKyAgICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuCisgICAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QKKyAgICAgICMgYnkgZGVmYXVsdC4KKyAgICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KKyAgICAgICAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfcHJvZyI7IHRoZW4KKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCisgICAgICAgICAgICBncmVwIGRzcG1zZyAiJGFjX2Rpci8kYWNfcHJvZyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KKwkgICAgOgorCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIHB3cGx1cyAiJGFjX2Rpci8kYWNfcHJvZyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgorCSAgICA6CisJICBlbHNlCisJICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFjX2Rpci8kYWNfcHJvZyAtYyIKKwkgICAgYnJlYWsgMgorCSAgZmkKKwlmaQorICAgICAgZG9uZQorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworZmkKKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKKyAgZWxzZQorICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIFdlIGRvbid0IGNhY2hlIGEKKyAgICAjIHBhdGggZm9yIElOU1RBTEwgd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcworICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUuCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAorICBmaQorZmkKK2VjaG8gIiRhc19tZToyMzEyOiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRJTlNUQUxMIiA+JjYKKworIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBpbiAke3Zhci12YWx9LgorIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KK3Rlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScKKwordGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKKwordGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKKworZWNobyAiJGFzX21lOjIzMjM6IGNoZWNraW5nIHdoZXRoZXIgbG4gLXMgd29ya3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICRFQ0hPX0MiID4mNgorTE5fUz0kYXNfbG5fcworaWYgdGVzdCAiJExOX1MiID0gImxuIC1zIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MjMyNzogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjIzMzA6IHJlc3VsdDogbm8sIHVzaW5nICRMTl9TIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vLCB1c2luZyAkTE5fUyIgPiY2CitmaQorCitlY2hvICIkYXNfbWU6MjMzNDogY2hlY2tpbmcgaWYgJExOX1MgLWYgb3B0aW9ucyB3b3JrIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJExOX1MgLWYgb3B0aW9ucyB3b3JrLi4uICRFQ0hPX0MiID4mNgorCitybSAtZiBjb25mJCQuc3JjIGNvbmYkJGRzdAorZWNobyA+Y29uZiQkLmRzdAorZWNobyBmaXJzdCA+Y29uZiQkLnNyYworaWYgJExOX1MgLWYgY29uZiQkLnNyYyBjb25mJCQuZHN0IDI+L2Rldi9udWxsOyB0aGVuCisJY2ZfcHJvZ19sbl9zZj15ZXMKK2Vsc2UKKwljZl9wcm9nX2xuX3NmPW5vCitmaQorcm0gLWYgY29uZiQkLmRzdCBjb25mJCRzcmMKK2VjaG8gIiRhc19tZToyMzQ2OiByZXN1bHQ6ICRjZl9wcm9nX2xuX3NmIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9wcm9nX2xuX3NmIiA+JjYKKwordGVzdCAiJGNmX3Byb2dfbG5fc2YiID0geWVzICYmIExOX1M9IiRMTl9TIC1mIgorCitlY2hvICIkYXNfbWU6MjM1MTogY2hlY2tpbmcgZm9yIGxvbmcgZmlsZSBuYW1lcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsb25nIGZpbGUgbmFtZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz15ZXMKKyMgVGVzdCBmb3IgbG9uZyBmaWxlIG5hbWVzIGluIGFsbCB0aGUgcGxhY2VzIHdlIGtub3cgbWlnaHQgbWF0dGVyOgorIyAgICAgIC4JCXRoZSBjdXJyZW50IGRpcmVjdG9yeSwgd2hlcmUgYnVpbGRpbmcgd2lsbCBoYXBwZW4KKyMgICAgICAkcHJlZml4L2xpYgl3aGVyZSB3ZSB3aWxsIGJlIGluc3RhbGxpbmcgdGhpbmdzCisjICAgICAgJGV4ZWNfcHJlZml4L2xpYglsaWtld2lzZQorIyBldmFsIGl0IHRvIGV4cGFuZCBleGVjX3ByZWZpeC4KKyMgICAgICAkVE1QRElSCQlpZiBzZXQsIHdoZXJlIGl0IG1pZ2h0IHdhbnQgdG8gd3JpdGUgdGVtcG9yYXJ5IGZpbGVzCisjIGlmICRUTVBESVIgaXMgbm90IHNldDoKKyMgICAgICAvdG1wCQl3aGVyZSBpdCBtaWdodCB3YW50IHRvIHdyaXRlIHRlbXBvcmFyeSBmaWxlcworIyAgICAgIC92YXIvdG1wCQlsaWtld2lzZQorIyAgICAgIC91c3IvdG1wCQlsaWtld2lzZQoraWYgdGVzdCAtbiAiJFRNUERJUiIgJiYgdGVzdCAtZCAiJFRNUERJUiIgJiYgdGVzdCAtdyAiJFRNUERJUiI7IHRoZW4KKyAgYWNfdG1wZGlycz0kVE1QRElSCitlbHNlCisgIGFjX3RtcGRpcnM9Jy90bXAgL3Zhci90bXAgL3Vzci90bXAnCitmaQorZm9yIGFjX2RpciBpbiAgLiAkYWNfdG1wZGlycyBgZXZhbCBlY2hvICRwcmVmaXgvbGliICRleGVjX3ByZWZpeC9saWJgIDsgZG8KKyAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCisgIHRlc3QgLXcgJGFjX2RpciB8fCBjb250aW51ZSAjIEl0IGlzIGxlc3MgY29uZnVzaW5nIHRvIG5vdCBlY2hvIGFueXRoaW5nIGhlcmUuCisgIGFjX3hkaXI9JGFjX2Rpci9jZiQkCisgICh1bWFzayAwNzcgJiYgbWtkaXIgJGFjX3hkaXIgMj4vZGV2L251bGwpIHx8IGNvbnRpbnVlCisgIGFjX3RmMT0kYWNfeGRpci9jb25mdGVzdDkwMTIzNDUKKyAgYWNfdGYyPSRhY194ZGlyL2NvbmZ0ZXN0OTAxMjM0NgorICAoZWNobyAxID4kYWNfdGYxKSAyPi9kZXYvbnVsbAorICAoZWNobyAyID4kYWNfdGYyKSAyPi9kZXYvbnVsbAorICBhY192YWw9YGNhdCAkYWNfdGYxIDI+L2Rldi9udWxsYAorICBpZiB0ZXN0ICEgLWYgJGFjX3RmMSB8fCB0ZXN0ICIkYWNfdmFsIiAhPSAxOyB0aGVuCisgICAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz1ubworICAgIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAorICAgIGJyZWFrCisgIGZpCisgIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAorZG9uZQorZmkKK2VjaG8gIiRhc19tZToyMzkwOiByZXN1bHQ6ICRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjYKK2lmIHRlc3QgJGFjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9MT05HX0ZJTEVfTkFNRVMgMQorRU9GCisKK2ZpCisKKyMgaWYgd2UgZmluZCBwa2ctY29uZmlnLCBjaGVjayBpZiB3ZSBzaG91bGQgaW5zdGFsbCB0aGUgIi5wYyIgZmlsZXMuCisKK2VjaG8gIiRhc19tZToyNDAyOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgcGtnLWNvbmZpZyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBwa2ctY29uZmlnLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXBrZy1jb25maWcgb3IgLS13aXRob3V0LXBrZy1jb25maWcgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BrZ19jb25maWcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfcGtnX2NvbmZpZyIKKyAgY2ZfcGtnX2NvbmZpZz0kd2l0aHZhbAorZWxzZQorICBjZl9wa2dfY29uZmlnPXllcworZmk7CitlY2hvICIkYXNfbWU6MjQxMjogcmVzdWx0OiAkY2ZfcGtnX2NvbmZpZyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcGtnX2NvbmZpZyIgPiY2CisKK2Nhc2UgJGNmX3BrZ19jb25maWcgaW4KKyhubykKKwlQS0dfQ09ORklHPW5vbmUKKwk7OworKHllcykKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjQyNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wYXRoX1BLR19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiOyB0aGVuCisgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhY19kaXIvJGFjX3dvcmQiCisgICBlY2hvICIkYXNfbWU6MjQ0MTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CisgICBicmVhaworZmkKK2RvbmUKKworICA7OworZXNhYworZmkKK1BLR19DT05GSUc9JGFjX2N2X3BhdGhfUEtHX0NPTkZJRworCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjI0NTI6IHJlc3VsdDogJFBLR19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JFBLR19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjQ1NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyI7IHRoZW4KKyAgYWNfcHRfUEtHX0NPTkZJRz0kUEtHX0NPTkZJRworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBrZy1jb25maWc7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyNDY0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9QS0dfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhY19wdF9QS0dfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCI7IHRoZW4KKyAgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX2Rpci8kYWNfd29yZCIKKyAgIGVjaG8gIiRhc19tZToyNDgxOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKKyAgIGJyZWFrCitmaQorZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUciICYmIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0ibm9uZSIKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKKworaWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNDkzOiByZXN1bHQ6ICRhY19wdF9QS0dfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19wdF9QS0dfQ09ORklHIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjI0OTY6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICBQS0dfQ09ORklHPSRhY19wdF9QS0dfQ09ORklHCitlbHNlCisgIFBLR19DT05GSUc9IiRhY19jdl9wYXRoX1BLR19DT05GSUciCitmaQorCisJOzsKKygqKQorCVBLR19DT05GSUc9JHdpdGh2YWwKKwk7OworZXNhYworCit0ZXN0IC16ICIkUEtHX0NPTkZJRyIgJiYgUEtHX0NPTkZJRz1ub25lCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi4kUEtHX0NPTkZJRyIgaW4KKyguXCRcKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLlthLXpBLVpdOltcXC9dKikgIyBPUy8yIEVNWAorCTs7CisoLlwkeypwcmVmaXh9KnwuXCR7KmRpcn0qKQorCWV2YWwgUEtHX0NPTkZJRz0iJFBLR19DT05GSUciCisJY2FzZSAiLiRQS0dfQ09ORklHIiBpbgorCSguTk9ORS8qKQorCQlQS0dfQ09ORklHPWBlY2hvICRQS0dfQ09ORklHIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCVBLR19DT05GSUc9YGVjaG8gJFBLR19DT05GSUcgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJOzsKKygqKQorCXsgeyBlY2hvICIkYXNfbWU6MjUzOTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiRQS0dfQ09ORklHXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJFBLR19DT05GSUdcIiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCTs7Citlc2FjCisKK2VsaWYgdGVzdCAieCRjZl9wa2dfY29uZmlnIiAhPSB4bm8gOyB0aGVuCisJeyBlY2hvICIkYXNfbWU6MjU0NjogV0FSTklORzogcGtnLWNvbmZpZyBpcyBub3QgaW5zdGFsbGVkIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogcGtnLWNvbmZpZyBpcyBub3QgaW5zdGFsbGVkIiA+JjI7fQorZmkKKworaWYgdGVzdCAieCRQS0dfQ09ORklHIiA9IHhub25lIDsgdGhlbgorCVBLR19DT05GSUdfTElCRElSPW5vCitlbHNlCisJZWNobyAiJGFzX21lOjI1NTM6IGNoZWNraW5nIGZvciAkUEtHX0NPTkZJRyBsaWJyYXJ5IGRpcmVjdG9yeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkUEtHX0NPTkZJRyBsaWJyYXJ5IGRpcmVjdG9yeS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wa2ctY29uZmlnLWxpYmRpciBvciAtLXdpdGhvdXQtcGtnLWNvbmZpZy1saWJkaXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BrZ19jb25maWdfbGliZGlyK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3BrZ19jb25maWdfbGliZGlyIgorICBQS0dfQ09ORklHX0xJQkRJUj0kd2l0aHZhbAorZWxzZQorICBQS0dfQ09ORklHX0xJQkRJUj15ZXMKK2ZpOworZmkKKworY2FzZSB4JFBLR19DT05GSUdfTElCRElSIGluCisoeC8qKQorCTs7CisoeHllcykKKwkjIExvb2sgZm9yIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSB1c2luZyB0aGUgc2FtZSBwcmVmaXggYXMgdGhlIGV4ZWN1dGFibGUKKwlpZiB0ZXN0ICJ4JFBLR19DT05GSUciID0geG5vbmUKKwl0aGVuCisJCWNmX3BhdGg9JHByZWZpeAorCWVsc2UKKwkJY2ZfcGF0aD1gZWNobyAiJFBLR19DT05GSUciIHwgc2VkIC1lICdzLC9bXi9dKi9bXi9dKiQsLCdgCisJZmkKKworCSMgSWYgeW91IGRvbid0IGxpa2UgdXNpbmcgdGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZQorCSMgaW50ZW5kZWQgbGlicmFyeSBkaXJlY3RvcnkgYW5kIGNvcnJlc3BvbmRpbmcgY29tcGlsZXIvbGlua2VyIG9wdGlvbnMuCisJIworCSMgVGhpcyBjYXNlIGFsbG93cyBmb3IgRGViaWFuJ3MgMjAxNC1mbGF2b3Igb2YgbXVsdGlhcmNoLCBhbG9uZyB3aXRoIHRoZQorCSMgbW9zdCBjb21tb24gdmFyaWF0aW9ucyBiZWZvcmUgdGhhdCBwb2ludC4gIFNvbWUgb3RoZXIgdmFyaWFudHMgc3BlbGwgdGhlCisJIyBkaXJlY3RvcnkgZGlmZmVyZW50bHksIGUuZy4sICJwa2ctY29uZmlnIiwgYW5kIHB1dCBpdCBpbiB1bnVzdWFsIHBsYWNlcy4KKwkjIHBrZy1jb25maWcgaGFzIGFsd2F5cyBiZWVuIHBvb3JseSBzdGFuZGFyZGl6ZWQsIHdoaWNoIGlzIGlyb25pYy4uLgorCWNhc2UgeGAoYXJjaCkgMj4vZGV2L251bGxgIGluCisJKCo2NCkKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qNjQtbGludXgtZ251IFwKKwkJCSRjZl9wYXRoL3NoYXJlIFwKKwkJCSRjZl9wYXRoL2xpYjY0IFwKKwkJCSRjZl9wYXRoL2xpYjMyIFwKKwkJCSRjZl9wYXRoL2xpYiIKKwkJOzsKKwkoKikKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qLWxpbnV4LWdudSBcCisJCQkkY2ZfcGF0aC9zaGFyZSBcCisJCQkkY2ZfcGF0aC9saWIzMiBcCisJCQkkY2ZfcGF0aC9saWIgXAorCQkJJGNmX3BhdGgvbGliZGF0YSIKKwkJOzsKKwllc2FjCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWxpc3QuLi4iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToyNjA1OiB0ZXN0aW5nIGxpc3QuLi4gLi4uIiAxPiY1CisKKwlmb3IgY2ZfY29uZmlnIGluICRjZl9zZWFyY2hfcGF0aAorCWRvCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJY2hlY2tpbmcgJGNmX2NvbmZpZy9wa2djb25maWciIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToyNjExOiB0ZXN0aW5nIGNoZWNraW5nICRjZl9jb25maWcvcGtnY29uZmlnIC4uLiIgMT4mNQorCisJCWlmIHRlc3QgLWQgJGNmX2NvbmZpZy9wa2djb25maWcKKwkJdGhlbgorCQkJUEtHX0NPTkZJR19MSUJESVI9JGNmX2NvbmZpZy9wa2djb25maWcKKwkJCWVjaG8gIiRhc19tZToyNjE2OiBjaGVja2luZyBkb25lIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZG9uZS4uLiAkRUNIT19DIiA+JjYKKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCTs7CisoKikKKwk7OworZXNhYworCitpZiB0ZXN0ICJ4JFBLR19DT05GSUciICE9IHhub25lIDsgdGhlbgorCWVjaG8gIiRhc19tZToyNjI3OiByZXN1bHQ6ICRQS0dfQ09ORklHX0xJQkRJUiIgPiY1CitlY2hvICIke0VDSE9fVH0kUEtHX0NPTkZJR19MSUJESVIiID4mNgorZmkKKworZWNobyAiJGFzX21lOjI2MzE6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRlc3QtcHJvZ3JhbXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCB0ZXN0LXByb2dyYW1zLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXRlc3RzIG9yIC0td2l0aG91dC10ZXN0cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdGVzdHMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdGVzdHMiCisgIGNmX3dpdGhfdGVzdHM9JHdpdGh2YWwKK2Vsc2UKKyAgY2Zfd2l0aF90ZXN0cz15ZXMKK2ZpOworZWNobyAiJGFzX21lOjI2NDE6IHJlc3VsdDogJGNmX3dpdGhfdGVzdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3dpdGhfdGVzdHMiID4mNgorCitlY2hvICIkYXNfbWU6MjY0NDogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBhc3N1bWUgbWl4ZWQtY2FzZSBmaWxlbmFtZXMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1taXhlZC1jYXNlIG9yIC0tZGlzYWJsZS1taXhlZC1jYXNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX21peGVkX2Nhc2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX21peGVkX2Nhc2UiCisgIGVuYWJsZV9taXhlZGNhc2U9JGVuYWJsZXZhbAorZWxzZQorICBlbmFibGVfbWl4ZWRjYXNlPWF1dG8KK2ZpOworZWNobyAiJGFzX21lOjI2NTQ6IHJlc3VsdDogJGVuYWJsZV9taXhlZGNhc2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGVuYWJsZV9taXhlZGNhc2UiID4mNgoraWYgdGVzdCAiJGVuYWJsZV9taXhlZGNhc2UiID0gImF1dG8iIDsgdGhlbgorCitlY2hvICIkYXNfbWU6MjY1ODogY2hlY2tpbmcgaWYgZmlsZXN5c3RlbSBzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIGZpbGVzeXN0ZW0gc3VwcG9ydHMgbWl4ZWQtY2FzZSBmaWxlbmFtZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X21peGVkY2FzZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KKwljYXNlICR0YXJnZXRfYWxpYXMgaW4KKwkoKi1vczItZW14KnwqLW1zZG9zZGpncHAqfCotY3lnd2luKnwqLW1zeXMqfCotbWluZ3cqfCotdXdpbiopCisJCWNmX2N2X21peGVkY2FzZT1ubworCQk7OworCSgqKQorCQljZl9jdl9taXhlZGNhc2U9eWVzCisJCTs7CisJZXNhYworZWxzZQorCXJtIC1mIGNvbmZ0ZXN0IENPTkZURVNUCisJZWNobyB0ZXN0ID5jb25mdGVzdAorCWlmIHRlc3QgLWYgQ09ORlRFU1QgOyB0aGVuCisJCWNmX2N2X21peGVkY2FzZT1ubworCWVsc2UKKwkJY2ZfY3ZfbWl4ZWRjYXNlPXllcworCWZpCisJcm0gLWYgY29uZnRlc3QgQ09ORlRFU1QKK2ZpCisKK2ZpCitlY2hvICIkYXNfbWU6MjY4NTogcmVzdWx0OiAkY2ZfY3ZfbWl4ZWRjYXNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9taXhlZGNhc2UiID4mNgordGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE1JWEVEQ0FTRV9GSUxFTkFNRVMgMQorRU9GCisKK2Vsc2UKKwljZl9jdl9taXhlZGNhc2U9JGVuYWJsZV9taXhlZGNhc2UKKwlpZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAieWVzIiA7IHRoZW4KKwkJY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTUlYRURDQVNFX0ZJTEVOQU1FUyAxCitFT0YKKworCWZpCitmaQorCisjIGRvIHRoaXMgYWZ0ZXIgbWl4ZWQtY2FzZSBvcHRpb24gKHRhZ3MvVEFHUyBpcyBub3QgYXMgaW1wb3J0YW50IGFzIHRpYykuCitlY2hvICIkYXNfbWU6MjcwMzogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0uLi4gJEVDSE9fQyIgPiY2CitzZXQgZHVtbXkgJHtNQUtFLW1ha2V9OyBhY19tYWtlPWBlY2hvICIkMiIgfCBzZWQgJ3ksLi8rLSxfX3BfLCdgCitpZiBldmFsICJ0ZXN0IFwiXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0K3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XEVPRgorYWxsOgorCUBlY2hvICdhY19tYWtldGVtcD0iJHtNQUtFfSInCitFT0YKKyMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgorZXZhbCBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGwgfCBncmVwIHRlbXA9YAoraWYgdGVzdCAtbiAiJGFjX21ha2V0ZW1wIjsgdGhlbgorICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXMKK2Vsc2UKKyAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC5tYWtlCitmaQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfcHJvZ19tYWtlXycke2FjX21ha2V9X3NldGBcIiA9IHllcyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjI3MjM6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisgIFNFVF9NQUtFPQorZWxzZQorICBlY2hvICIkYXNfbWU6MjcyNzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisgIFNFVF9NQUtFPSJNQUtFPSR7TUFLRS1tYWtlfSIKK2ZpCisKK2ZvciBhY19wcm9nIGluIGV4Y3RhZ3MgY3RhZ3MKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjczNjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NUQUdTK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDVEFHUyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DVEFHUz0iJENUQUdTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQ1RBR1M9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjI3NTE6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitDVEFHUz0kYWNfY3ZfcHJvZ19DVEFHUworaWYgdGVzdCAtbiAiJENUQUdTIjsgdGhlbgorICBlY2hvICIkYXNfbWU6Mjc1OTogcmVzdWx0OiAkQ1RBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JENUQUdTIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjI3NjI6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkQ1RBR1MiICYmIGJyZWFrCitkb25lCisKK2ZvciBhY19wcm9nIGluIGV4ZXRhZ3MgZXRhZ3MKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6Mjc3MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0VUQUdTK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRFVEFHUyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19FVEFHUz0iJEVUQUdTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfRVRBR1M9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjI3ODg6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitFVEFHUz0kYWNfY3ZfcHJvZ19FVEFHUworaWYgdGVzdCAtbiAiJEVUQUdTIjsgdGhlbgorICBlY2hvICIkYXNfbWU6Mjc5NjogcmVzdWx0OiAkRVRBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEVUQUdTIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjI3OTk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkRVRBR1MiICYmIGJyZWFrCitkb25lCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHtDVEFHUzotY3RhZ3N9Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke0NUQUdTOi1jdGFnc307IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyODA4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRNQUtFX0xPV0VSX1RBR1MiOyB0aGVuCisgIGFjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTPSIkTUFLRV9MT1dFUl9UQUdTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTPSJ5ZXMiCitlY2hvICIkYXNfbWU6MjgyMzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUyIgJiYgYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1M9Im5vIgorZmkKK2ZpCitNQUtFX0xPV0VSX1RBR1M9JGFjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTCitpZiB0ZXN0IC1uICIkTUFLRV9MT1dFUl9UQUdTIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MjgzMjogcmVzdWx0OiAkTUFLRV9MT1dFUl9UQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRNQUtFX0xPV0VSX1RBR1MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjgzNTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitpZiB0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyA7IHRoZW4KKwkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7RVRBR1M6LWV0YWdzfSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHtFVEFHUzotZXRhZ3N9OyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6Mjg0MjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTUFLRV9VUFBFUl9UQUdTIjsgdGhlbgorICBhY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUz0iJE1BS0VfVVBQRVJfVEFHUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUz0ieWVzIgorZWNobyAiJGFzX21lOjI4NTc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1MiICYmIGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTPSJubyIKK2ZpCitmaQorTUFLRV9VUFBFUl9UQUdTPSRhY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUworaWYgdGVzdCAtbiAiJE1BS0VfVVBQRVJfVEFHUyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjI4NjY6IHJlc3VsdDogJE1BS0VfVVBQRVJfVEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kTUFLRV9VUFBFUl9UQUdTIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjI4Njk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworZWxzZQorCU1BS0VfVVBQRVJfVEFHUz1ubworZmkKKworaWYgdGVzdCAiJE1BS0VfVVBQRVJfVEFHUyIgPSB5ZXMgOyB0aGVuCisJTUFLRV9VUFBFUl9UQUdTPQorZWxzZQorCU1BS0VfVVBQRVJfVEFHUz0iIyIKK2ZpCisKK2lmIHRlc3QgIiRNQUtFX0xPV0VSX1RBR1MiID0geWVzIDsgdGhlbgorCU1BS0VfTE9XRVJfVEFHUz0KK2Vsc2UKKwlNQUtFX0xPV0VSX1RBR1M9IiMiCitmaQorCitlY2hvICIkYXNfbWU6Mjg4OTogY2hlY2tpbmcgZm9yIG1ha2VmbGFncyB2YXJpYWJsZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtYWtlZmxhZ3MgdmFyaWFibGUuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X21ha2VmbGFncytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfY3ZfbWFrZWZsYWdzPScnCisJZm9yIGNmX29wdGlvbiBpbiAnLSR7TUFLRUZMQUdTfScgJyR7TUZMQUdTfScKKwlkbworCQljYXQgPmNmX21ha2VmbGFncy50bXAgPDxDRl9FT0YKK1NIRUxMID0gJFNIRUxMCithbGwgOgorCUAgZWNobyAnLiRjZl9vcHRpb24nCitDRl9FT0YKKwkJY2ZfcmVzdWx0PWAke01BS0U6LW1ha2V9IC1rIC1mIGNmX21ha2VmbGFncy50bXAgMj4vZGV2L251bGwgfCBmZ3JlcCAtdiAiaW5nIGRpcmVjdG9yeSIgfCBzZWQgLWUgJ3MsWyAJXSokLCwnYAorCQljYXNlICIkY2ZfcmVzdWx0IiBpbgorCQkoLiprfC4qa3cpCisJCQljZl9yZXN1bHQ9YCR7TUFLRTotbWFrZX0gLWsgLWYgY2ZfbWFrZWZsYWdzLnRtcCBDQz1jYyAyPi9kZXYvbnVsbGAKKwkJCWNhc2UgIiRjZl9yZXN1bHQiIGluCisJCQkoLipDQz0qKQljZl9jdl9tYWtlZmxhZ3M9CisJCQkJOzsKKwkJCSgqKQljZl9jdl9tYWtlZmxhZ3M9JGNmX29wdGlvbgorCQkJCTs7CisJCQllc2FjCisJCQlicmVhaworCQkJOzsKKwkJKC4tKQk7OworCQkoKikJZWNobyAiZ2l2ZW4gb3B0aW9uIFwiJGNmX29wdGlvblwiLCBubyBtYXRjaCBcIiRjZl9yZXN1bHRcIiIKKwkJCTs7CisJCWVzYWMKKwlkb25lCisJcm0gLWYgY2ZfbWFrZWZsYWdzLnRtcAorCitmaQorZWNobyAiJGFzX21lOjI5MjM6IHJlc3VsdDogJGNmX2N2X21ha2VmbGFncyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbWFrZWZsYWdzIiA+JjYKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjI5Mjk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIgorZWNobyAiJGFzX21lOjI5NDQ6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitSQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCCitpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICBlY2hvICIkYXNfbWU6Mjk1MjogcmVzdWx0OiAkUkFOTElCIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRSQU5MSUIiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6Mjk1NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgorICBhY19jdF9SQU5MSUI9JFJBTkxJQgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6Mjk2NDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgorZWNobyAiJGFzX21lOjI5Nzk6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIiICYmIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSInOiciCitmaQorZmkKK2FjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKK2lmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyOTg4OiByZXN1bHQ6ICRhY19jdF9SQU5MSUIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1JBTkxJQiIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToyOTkxOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgUkFOTElCPSRhY19jdF9SQU5MSUIKK2Vsc2UKKyAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5MSUIiCitmaQorCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1sZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1sZDsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjMwMDM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MRCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCisgIGFjX2N2X3Byb2dfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0xEPSIke2FjX3Rvb2xfcHJlZml4fWxkIgorZWNobyAiJGFzX21lOjMwMTg6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitMRD0kYWNfY3ZfcHJvZ19MRAoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MzAyNjogcmVzdWx0OiAkTEQiID4mNQorZWNobyAiJHtFQ0hPX1R9JExEIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjMwMjk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0xEIjsgdGhlbgorICBhY19jdF9MRD0kTEQKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJsZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbGQ7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTozMDM4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTEQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0xEIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0xEPSIkYWNfY3RfTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9MRD0ibGQiCitlY2hvICIkYXNfbWU6MzA1MzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X0xEIiAmJiBhY19jdl9wcm9nX2FjX2N0X0xEPSJsZCIKK2ZpCitmaQorYWNfY3RfTEQ9JGFjX2N2X3Byb2dfYWNfY3RfTEQKK2lmIHRlc3QgLW4gIiRhY19jdF9MRCI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjMwNjI6IHJlc3VsdDogJGFjX2N0X0xEIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9MRCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozMDY1OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgTEQ9JGFjX2N0X0xECitlbHNlCisgIExEPSIkYWNfY3ZfcHJvZ19MRCIKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MzA3NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19BUj0iJEFSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCitlY2hvICIkYXNfbWU6MzA5MjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0FSPSRhY19jdl9wcm9nX0FSCitpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozMTAwOiByZXN1bHQ6ICRBUiIgPiY1CitlY2hvICIke0VDSE9fVH0kQVIiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MzEwMzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisgIGFjX2N0X0FSPSRBUgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBhcjsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjMxMTI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKK2VjaG8gIiRhc19tZTozMTI3OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfQVIiICYmIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorZmkKK2ZpCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MzEzNjogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0FSIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjMxMzk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICBBUj0kYWNfY3RfQVIKK2Vsc2UKKyAgQVI9IiRhY19jdl9wcm9nX0FSIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTozMTUxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgorICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKK2VjaG8gIiRhc19tZTozMTY2OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorQVI9JGFjX2N2X3Byb2dfQVIKK2lmIHRlc3QgLW4gIiRBUiI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjMxNzQ6IHJlc3VsdDogJEFSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBUiIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozMTc3OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MzE4NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorZWNobyAiJGFzX21lOjMyMDE6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9BUiIgJiYgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCitmaQorZmkKK2FjX2N0X0FSPSRhY19jdl9wcm9nX2FjX2N0X0FSCitpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozMjEwOiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfQVIiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MzIxMzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIEFSPSRhY19jdF9BUgorZWxzZQorICBBUj0iJGFjX2N2X3Byb2dfQVIiCitmaQorCitlY2hvICIkYXNfbWU6MzIyMjogY2hlY2tpbmcgZm9yIG9wdGlvbnMgdG8gdXBkYXRlIGFyY2hpdmVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG9wdGlvbnMgdG8gdXBkYXRlIGFyY2hpdmVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgorCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorCWRvCisKKwkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCisJCWlmIHRlc3QgIngkQVJGTEFHUyIgIT0gIngiIDsgdGhlbgorCQkJY2ZfY2hlY2tfYXJfZmxhZ3M9YGVjaG8gIngkQVJGTEFHUyIgfCBzZWQgLWUgInMvJGNmX2FyX2ZsYWdzXCQvLyIgLWUgInMvJGNmX2FyX2ZsYWdzIC8gLyJgCisJCQlpZiB0ZXN0ICJ4JEFSRkxBR1MiICE9ICIkY2ZfY2hlY2tfYXJfZmxhZ3MiIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPQorCQkJCWJyZWFrCisJCQlmaQorCQlmaQorCisJCXJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQKKwkJcm0gLWYgY29uZnRlc3QuYQorCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgMzI0NSAiY29uZmlndXJlIgoraW50CXRlc3RkYXRhWzNdID0geyAxMjMsIDQ1NiwgNzg5IH07CitFT0YKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzI0ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzI1MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9IDsgdGhlbgorCQkJZWNobyAiJEFSICRBUkZMQUdTICRjZl9hcl9mbGFncyBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQiID4mNQorCQkJJEFSICRBUkZMQUdTICRjZl9hcl9mbGFncyBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgMj4mNSAxPi9kZXYvbnVsbAorCQkJaWYgdGVzdCAtZiBjb25mdGVzdC5hIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPSRjZl9hcl9mbGFncworCQkJCWJyZWFrCisJCQlmaQorCQllbHNlCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWNhbm5vdCBjb21waWxlIHRlc3QtcHJvZ3JhbSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjMyNjI6IHRlc3RpbmcgY2Fubm90IGNvbXBpbGUgdGVzdC1wcm9ncmFtIC4uLiIgMT4mNQorCisJCQlicmVhaworCQlmaQorCWRvbmUKKwlybSAtZiBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX2N2X29iamV4dAorCitmaQorZWNobyAiJGFzX21lOjMyNzA6IHJlc3VsdDogJGNmX2N2X2FyX2ZsYWdzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9hcl9mbGFncyIgPiY2CisKK2lmIHRlc3QgLW4gIiRBUkZMQUdTIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkY2ZfY3ZfYXJfZmxhZ3MiIDsgdGhlbgorCQlBUkZMQUdTPSIkQVJGTEFHUyAkY2ZfY3ZfYXJfZmxhZ3MiCisJZmkKK2Vsc2UKKwlBUkZMQUdTPSRjZl9jdl9hcl9mbGFncworZmkKKworCWVjaG8gIiRhc19tZTozMjgxOiBjaGVja2luZyBmb3IgUEFUSCBzZXBhcmF0b3IiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgUEFUSCBzZXBhcmF0b3IuLi4gJEVDSE9fQyIgPiY2CisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkob3MyKikJUEFUSF9TRVBBUkFUT1I9JzsnICA7OworCSgqKQkke1BBVEhfU0VQQVJBVE9SOj0nOid9ICA7OworCWVzYWMKKworCWVjaG8gIiRhc19tZTozMjg4OiByZXN1bHQ6ICRQQVRIX1NFUEFSQVRPUiIgPiY1CitlY2hvICIke0VDSE9fVH0kUEFUSF9TRVBBUkFUT1IiID4mNgorCitlY2hvICIkYXNfbWU6MzI5MTogY2hlY2tpbmcgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGluc3RhbGwtcHJlZml4IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGluc3RhbGwtcHJlZml4Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWluc3RhbGwtcHJlZml4IG9yIC0td2l0aG91dC1pbnN0YWxsLXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfaW5zdGFsbF9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfaW5zdGFsbF9wcmVmaXgiCisgIGNhc2UgIiR3aXRodmFsIiBpbgorCSh5ZXN8bm8pCisJCTs7CisJKCopCURFU1RESVI9IiR3aXRodmFsIgorCQk7OworCWVzYWMKK2ZpOworZWNobyAiJGFzX21lOjMzMDQ6IHJlc3VsdDogJERFU1RESVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JERFU1RESVIiID4mNgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCBhbGxvdyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgdG9vbHMgYW5kIHRoZWlyCisjIG9wdGlvbnMuICBUaGUgY29uZmlndXJlIHNjcmlwdCBpcyBvcmllbnRlZCB0b3dhcmQgaWRlbnRpZnlpbmcgdGhlIGhvc3QKKyMgY29tcGlsZXIsIGV0Yy4sIGJ1dCB3ZSBuZWVkIGEgYnVpbGQgY29tcGlsZXIgdG8gZ2VuZXJhdGUgcGFydHMgb2YgdGhlIHNvdXJjZS4KKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgOyB0aGVuCisKKwkjIGRlZmF1bHRzIHRoYXQgd2UgbWlnaHQgd2FudCB0byBvdmVycmlkZQorCTogJHtCVUlMRF9DRkxBR1M6PScnfQorCTogJHtCVUlMRF9DUFBGTEFHUzo9Jyd9CisJOiAke0JVSUxEX0xERkxBR1M6PScnfQorCTogJHtCVUlMRF9MSUJTOj0nJ30KKwk6ICR7QlVJTERfRVhFRVhUOj0nJHgnfQorCTogJHtCVUlMRF9PQkpFWFQ6PSdvJ30KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1jYyBvciAtLXdpdGhvdXQtYnVpbGQtY2Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2J1aWxkX2NjK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2NjIgorICBCVUlMRF9DQz0iJHdpdGh2YWwiCitlbHNlCisgIGZvciBhY19wcm9nIGluIGdjYyBjYyBjbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTozMzMyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQlVJTERfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEJVSUxEX0NDIjsgdGhlbgorICBhY19jdl9wcm9nX0JVSUxEX0NDPSIkQlVJTERfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19CVUlMRF9DQz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MzM0NzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0JVSUxEX0NDPSRhY19jdl9wcm9nX0JVSUxEX0NDCitpZiB0ZXN0IC1uICIkQlVJTERfQ0MiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozMzU1OiByZXN1bHQ6ICRCVUlMRF9DQyIgPiY1CitlY2hvICIke0VDSE9fVH0kQlVJTERfQ0MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MzM1ODogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRCVUlMRF9DQyIgJiYgYnJlYWsKK2RvbmUKKworZmk7CisJZWNobyAiJGFzX21lOjMzNjY6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBjb21waWxlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKKwllY2hvICIkYXNfbWU6MzM2ODogcmVzdWx0OiAkQlVJTERfQ0MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0NDIiA+JjYKKworCWVjaG8gIiRhc19tZTozMzcxOiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIHByZXByb2Nlc3Nvci4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1jcHAgb3IgLS13aXRob3V0LWJ1aWxkLWNwcCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYnVpbGRfY3BwK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2NwcCIKKyAgQlVJTERfQ1BQPSIkd2l0aHZhbCIKK2Vsc2UKKyAgQlVJTERfQ1BQPScke0JVSUxEX0NDfSAtRScKK2ZpOworCWVjaG8gIiRhc19tZTozMzgxOiByZXN1bHQ6ICRCVUlMRF9DUFAiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0NQUCIgPiY2CisKKwllY2hvICIkYXNfbWU6MzM4NDogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIGZsYWdzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIGZsYWdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWNmbGFncyBvciAtLXdpdGhvdXQtYnVpbGQtY2ZsYWdzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9idWlsZF9jZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfY2ZsYWdzIgorICBCVUlMRF9DRkxBR1M9IiR3aXRodmFsIgorZmk7CisJZWNobyAiJGFzX21lOjMzOTI6IHJlc3VsdDogJEJVSUxEX0NGTEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kQlVJTERfQ0ZMQUdTIiA+JjYKKworCWVjaG8gIiRhc19tZTozMzk1OiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yLWZsYWdzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIHByZXByb2Nlc3Nvci1mbGFncy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1jcHBmbGFncyBvciAtLXdpdGhvdXQtYnVpbGQtY3BwZmxhZ3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2J1aWxkX2NwcGZsYWdzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2NwcGZsYWdzIgorICBCVUlMRF9DUFBGTEFHUz0iJHdpdGh2YWwiCitmaTsKKwllY2hvICIkYXNfbWU6MzQwMzogcmVzdWx0OiAkQlVJTERfQ1BQRkxBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0NQUEZMQUdTIiA+JjYKKworCWVjaG8gIiRhc19tZTozNDA2OiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIGxpbmtlci1mbGFncyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWZsYWdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWxkZmxhZ3Mgb3IgLS13aXRob3V0LWJ1aWxkLWxkZmxhZ3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2J1aWxkX2xkZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfbGRmbGFncyIKKyAgQlVJTERfTERGTEFHUz0iJHdpdGh2YWwiCitmaTsKKwllY2hvICIkYXNfbWU6MzQxNDogcmVzdWx0OiAkQlVJTERfTERGTEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kQlVJTERfTERGTEFHUyIgPiY2CisKKwllY2hvICIkYXNfbWU6MzQxNzogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBsaW5rZXItbGlicmFyaWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBsaW5rZXItbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWxpYnMgb3IgLS13aXRob3V0LWJ1aWxkLWxpYnMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2J1aWxkX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfbGlicyIKKyAgQlVJTERfTElCUz0iJHdpdGh2YWwiCitmaTsKKwllY2hvICIkYXNfbWU6MzQyNTogcmVzdWx0OiAkQlVJTERfTElCUyIgPiY1CitlY2hvICIke0VDSE9fVH0kQlVJTERfTElCUyIgPiY2CisKKwkjIHRoaXMgYXNzdW1lcyB3ZSdyZSBvbiBVbml4LgorCUJVSUxEX0VYRUVYVD0KKwlCVUlMRF9PQkpFWFQ9bworCisJOiAke0JVSUxEX0NDOj0nJHtDQ30nfQorCisJaWYgKCB0ZXN0ICIkQlVJTERfQ0MiID0gIiRDQyIgfHwgdGVzdCAiJEJVSUxEX0NDIiA9ICcke0NDfScgKSA7IHRoZW4KKwkJeyB7IGVjaG8gIiRhc19tZTozNDM1OiBlcnJvcjogQ3Jvc3MtYnVpbGQgcmVxdWlyZXMgdHdvIGNvbXBpbGVycy4KK1VzZSAtLXdpdGgtYnVpbGQtY2MgdG8gc3BlY2lmeSB0aGUgbmF0aXZlIGNvbXBpbGVyLiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDcm9zcy1idWlsZCByZXF1aXJlcyB0d28gY29tcGlsZXJzLgorVXNlIC0td2l0aC1idWlsZC1jYyB0byBzcGVjaWZ5IHRoZSBuYXRpdmUgY29tcGlsZXIuIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJZmkKKworZWxzZQorCTogJHtCVUlMRF9DQzo9JyR7Q0N9J30KKwk6ICR7QlVJTERfQ1BQOj0nJHtDUFB9J30KKwk6ICR7QlVJTERfQ0ZMQUdTOj0nJHtDRkxBR1N9J30KKwk6ICR7QlVJTERfQ1BQRkxBR1M6PScke0NQUEZMQUdTfSd9CisJOiAke0JVSUxEX0xERkxBR1M6PScke0xERkxBR1N9J30KKwk6ICR7QlVJTERfTElCUzo9JyR7TElCU30nfQorCTogJHtCVUlMRF9FWEVFWFQ6PSckeCd9CisJOiAke0JVSUxEX09CSkVYVDo9J28nfQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMgT3B0aW9ucyB0byBhbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBzZXQgb2YgbGlicmFyaWVzIHdoaWNoIGFyZSB1c2VkLgorIyMjIFVzZSAiLS13aXRob3V0LW5vcm1hbCAtLXdpdGgtc2hhcmVkIiB0byBhbGxvdyB0aGUgZGVmYXVsdCBtb2RlbCB0byBiZQorIyMjIHNoYXJlZCwgZm9yIGV4YW1wbGUuCitjZl9saXN0X21vZGVscz0iIgorCitlY2hvICIkYXNfbWU6MzQ2MDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgc2hhcmVkIEMtb2JqZWN0cyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHNoYXJlZCBDLW9iamVjdHMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2hhcmVkIG9yIC0td2l0aG91dC1zaGFyZWQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3NoYXJlZCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9zaGFyZWQiCisgIHdpdGhfc2hhcmVkPSR3aXRodmFsCitlbHNlCisgIHdpdGhfc2hhcmVkPW5vCitmaTsKK2VjaG8gIiRhc19tZTozNDcwOiByZXN1bHQ6ICR3aXRoX3NoYXJlZCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9zaGFyZWQiID4mNgordGVzdCAiJHdpdGhfc2hhcmVkIiA9ICJ5ZXMiICYmIGNmX2xpc3RfbW9kZWxzPSIkY2ZfbGlzdF9tb2RlbHMgc2hhcmVkIgorCitlY2hvICIkYXNfbWU6MzQ3NDogY2hlY2tpbmcgZm9yIHNwZWNpZmllZCBtb2RlbHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3BlY2lmaWVkIG1vZGVscy4uLiAkRUNIT19DIiA+JjYKK3Rlc3QgLXogIiRjZl9saXN0X21vZGVscyIgJiYgY2ZfbGlzdF9tb2RlbHM9bm9ybWFsCitlY2hvICIkYXNfbWU6MzQ3NzogcmVzdWx0OiAkY2ZfbGlzdF9tb2RlbHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2xpc3RfbW9kZWxzIiA+JjYKKworIyMjIFVzZSB0aGUgZmlyc3QgbW9kZWwgYXMgdGhlIGRlZmF1bHQsIGFuZCBzYXZlIGl0cyBzdWZmaXggZm9yIHVzZSBpbiBidWlsZGluZworIyMjIHVwIHRlc3QtYXBwbGljYXRpb25zLgorZWNobyAiJGFzX21lOjM0ODI6IGNoZWNraW5nIGZvciBkZWZhdWx0IG1vZGVsIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgbW9kZWwuLi4gJEVDSE9fQyIgPiY2CitERlRfTFdSX01PREVMPWBlY2hvICIkY2ZfbGlzdF9tb2RlbHMiIHwgJEFXSyAne3ByaW50ICQxfSdgCitlY2hvICIkYXNfbWU6MzQ4NTogcmVzdWx0OiAkREZUX0xXUl9NT0RFTCIgPiY1CitlY2hvICIke0VDSE9fVH0kREZUX0xXUl9NT0RFTCIgPiY2CisKK0RGVF9VUFJfTU9ERUw9YGVjaG8gIiRERlRfTFdSX01PREVMIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworZWNobyAiJGFzX21lOjM0OTA6IGNoZWNraW5nIGZvciBzcGVjaWZpYyBjdXJzZXMtZGlyZWN0b3J5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpZmljIGN1cnNlcy1kaXJlY3RvcnkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY3Vyc2VzLWRpciBvciAtLXdpdGhvdXQtY3Vyc2VzLWRpciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3Vyc2VzX2RpcitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9jdXJzZXNfZGlyIgorICBjZl9jdl9jdXJzZXNfZGlyPSR3aXRodmFsCitlbHNlCisgIGNmX2N2X2N1cnNlc19kaXI9bm8KK2ZpOworZWNobyAiJGFzX21lOjM1MDA6IHJlc3VsdDogJGNmX2N2X2N1cnNlc19kaXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2N1cnNlc19kaXIiID4mNgorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisKK2lmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorZWxzZQorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitmaQorCitjYXNlICIuJHdpdGh2YWwiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGh2YWw9IiR3aXRodmFsIgorCWNhc2UgIi4kd2l0aHZhbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjM1MzE6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwk7OworZXNhYworCisJaWYgdGVzdCAtZCAiJGNmX2N2X2N1cnNlc19kaXIiCisJdGhlbgorCitpZiB0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZQorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzU2NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjM1NzY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM1Nzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzU4MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM1ODU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTozNjAyOiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworaWYgdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIvbGliIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfY3ZfY3Vyc2VzX2Rpci9saWIKKwlkbworCQlpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCisJCQk6CisJCWVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgorCQl0aGVuCisJCQljZl9oYXZlX2xpYmRpcj1ubworCQkJaWYgdGVzdCAtbiAiJExERkxBR1MkTElCUyIgOyB0aGVuCisJCQkJIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkJCWZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCisJCQkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KKwkJCQkJCWNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKKwkJCQkJZmkKKwkJCQlkb25lCisJCQlmaQorCQkJaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjM2Mzg6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKKwlmaQorZmkKKworY2ZfbmN1Y29uZmlnX3Jvb3Q9bmN1cnNlcworY2ZfaGF2ZV9uY3Vjb25maWc9bm8KKworaWYgdGVzdCAieCR7UEtHX0NPTkZJRzo9bm9uZX0iICE9IHhub25lOyB0aGVuCisJZWNobyAiJGFzX21lOjM2NTM6IGNoZWNraW5nIHBrZy1jb25maWcgZm9yICRjZl9uY3Vjb25maWdfcm9vdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHBrZy1jb25maWcgZm9yICRjZl9uY3Vjb25maWdfcm9vdC4uLiAkRUNIT19DIiA+JjYKKwlpZiAiJFBLR19DT05GSUciIC0tZXhpc3RzICRjZl9uY3Vjb25maWdfcm9vdCA7IHRoZW4KKwkJZWNobyAiJGFzX21lOjM2NTY6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisKKwkJZWNobyAiJGFzX21lOjM2NTk6IGNoZWNraW5nIGlmIHRoZSAkY2ZfbmN1Y29uZmlnX3Jvb3QgcGFja2FnZSBmaWxlcyB3b3JrIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhlICRjZl9uY3Vjb25maWdfcm9vdCBwYWNrYWdlIGZpbGVzIHdvcmsuLi4gJEVDSE9fQyIgPiY2CisJCWNmX2hhdmVfbmN1Y29uZmlnPXVua25vd24KKworCQljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFBLR19DT05GSUcgLS1jZmxhZ3MgJGNmX25jdWNvbmZpZ19yb290YCIKKworY2ZfYWRkX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgJGNmX25jdWNvbmZpZ19yb290YCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzY4NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzY5NzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzcwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjM3MDM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozNzA2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgY2ZfaGF2ZV9uY3Vjb25maWc9bWF5YmUKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAzNzEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisJCQkJaW50IG1haW4odm9pZCkKKwkJCQl7IGNoYXIgKnh4ID0gY3Vyc2VzX3ZlcnNpb24oKTsgcmV0dXJuICh4eCA9PSAwKTsgfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjM3MTk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM3MjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjM3MjQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozNzI3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfaGF2ZV9uY3Vjb25maWc9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX25jdWNvbmZpZz1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX25jdWNvbmZpZz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJZWNobyAiJGFzX21lOjM3NDQ6IHJlc3VsdDogJGNmX2hhdmVfbmN1Y29uZmlnIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9oYXZlX25jdWNvbmZpZyIgPiY2CisJCXRlc3QgIiRjZl9oYXZlX25jdWNvbmZpZyIgPSBtYXliZSAmJiBjZl9oYXZlX25jdWNvbmZpZz15ZXMKKwkJaWYgdGVzdCAiJGNmX2hhdmVfbmN1Y29uZmlnIiAhPSAieWVzIgorCQl0aGVuCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKKwkJZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTIDEKK0VPRgorCisJCQlOQ1VSU0VTX0NPTkZJR19QS0c9JGNmX25jdWNvbmZpZ19yb290CisJCWZpCisKKwllbHNlCisJCWVjaG8gIiRhc19tZTozNzYyOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKKwlmaQorZWxzZQorCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCitmaQorCitpZiB0ZXN0ICJ4JGNmX2hhdmVfbmN1Y29uZmlnIiA9ICJ4bm8iOyB0aGVuCisJZWNobyAiTG9va2luZyBmb3IgJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnIgorCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9NS1jb25maWcKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjM3Nzg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N2X3Byb2dfTkNVUlNFU19DT05GSUc9IiROQ1VSU0VTX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX05DVVJTRVNfQ09ORklHPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTozNzkzOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorTkNVUlNFU19DT05GSUc9JGFjX2N2X3Byb2dfTkNVUlNFU19DT05GSUcKK2lmIHRlc3QgLW4gIiROQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM4MDE6IHJlc3VsdDogJE5DVVJTRVNfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozODA0OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgICB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N0X05DVVJTRVNfQ09ORklHPSROQ1VSU0VTX0NPTkZJRworICBmb3IgYWNfcHJvZyBpbiAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTUtY29uZmlnCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjM4MTc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUc9IiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTozODMyOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorYWNfY3RfTkNVUlNFU19DT05GSUc9JGFjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUcKK2lmIHRlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM4NDA6IHJlc3VsdDogJGFjX2N0X05DVVJTRVNfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozODQzOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIiB8fCBhY19jdF9OQ1VSU0VTX0NPTkZJRz0ibm9uZSIKKworICBOQ1VSU0VTX0NPTkZJRz0kYWNfY3RfTkNVUlNFU19DT05GSUcKK2ZpCisKKwlpZiB0ZXN0ICIkTkNVUlNFU19DT05GSUciICE9IG5vbmUgOyB0aGVuCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJE5DVVJTRVNfQ09ORklHIC0tY2ZsYWdzYCIKKworY2ZfYWRkX2xpYnM9ImAkTkNVUlNFU19DT05GSUcgLS1saWJzYCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJCSMgZXZlbiB3aXRoIGNvbmZpZyBzY3JpcHQsIHNvbWUgcGFja2FnZXMgdXNlIG5vLW92ZXJyaWRlIGZvciBjdXJzZXMuaAorCitlY2hvICIkYXNfbWU6Mzg3NjogY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjZl9jdl9uY3Vyc2VzX2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIFwKKwluY3Vyc2VzLmggbmN1cnNlcy9uY3Vyc2VzLmggXAorCWN1cnNlcy5oIG5jdXJzZXMvY3Vyc2VzLmgKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDM4ODggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfaGVhZGVyfT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyB0Z290bygiPyIsIDAsMCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzkwMDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzkwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTozOTA2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzkwOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9oZWFkZXI7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKKworZmkKK2VjaG8gIiRhc19tZTozOTIwOiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID0gbm9uZSA7IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjM5MjQ6IGVycm9yOiBObyBjdXJzZXMgaGVhZGVyLWZpbGVzIGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKyMgY2hlYXQsIHRvIGdldCB0aGUgcmlnaHQgI2RlZmluZSdzIGZvciBIQVZFX05DVVJTRVNfSCwgZXRjLgorCitmb3IgYWNfaGVhZGVyIGluICRjZl9jdl9uY3Vyc2VzX2hlYWRlcgorZG8KK2FzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjM5MzQ6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzk0MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGFjX2hlYWRlcj4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mzk0NDogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6Mzk1MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6Mzk2OTogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworY2ZfbmN1bGliX1JPT1Q9YGVjaG8gIkhBVkVfTElCJGNmX25jdWNvbmZpZ19yb290IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9uY3VsaWJfUk9PVCAxCitFT0YKKworCQkJCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gJE5DVVJTRVNfQ09ORklHIC0tdmVyc2lvbmAKKworCWVsc2UKKworY2ZfbmN1aGRyX3Jvb3Q9bmN1cnNlcworCit0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2RpciIgJiYgXAordGVzdCAiJGNmX2N2X2N1cnNlc19kaXIiICE9ICJubyIgJiYgeyBcCisKK2lmIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyL2luY2x1ZGUvJGNmX25jdWhkcl9yb290IiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQwMjIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0MDM0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0MDM3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQwNDA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0MDQzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX2luY2Rpcj15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NDA2MDogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIC4uLiIgMT4mNQorCisJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCisKK30KKworZWNobyAiJGFzX21lOjQwNzk6IGNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaGVhZGVyIGluIGluY2x1ZGUtcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaGVhZGVyIGluIGluY2x1ZGUtcGF0aC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc19oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljZl9oZWFkZXJfbGlzdD0iJGNmX25jdWhkcl9yb290L2N1cnNlcy5oICRjZl9uY3VoZHJfcm9vdC9uY3Vyc2VzLmgiCisJKCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlcyB8fCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlc3cgKSAmJiBjZl9oZWFkZXJfbGlzdD0iJGNmX2hlYWRlcl9saXN0IGN1cnNlcy5oIG5jdXJzZXMuaCIKKwlmb3IgY2ZfaGVhZGVyIGluICRjZl9oZWFkZXJfbGlzdAorCWRvCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQwOTEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDExNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDExODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0MTIxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDEyNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaD0kY2ZfaGVhZGVyCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmN1cnNlc19oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6NDEzOTogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2giID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oIiAhPSBubyA7IHRoZW4KKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfY3ZfbmN1cnNlc19oCitlbHNlCisKK2VjaG8gIiRhc19tZTo0MTQ2OiBjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGluY2x1ZGUtcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaW5jbHVkZS1wYXRoLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2gyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobworCitjZl9zZWFyY2g9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCit0ZXN0ICJ4JGNmX2hlYWRlcl9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9oZWFkZXJfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9oZWFkZXJfcGF0aCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCisJCQljZl9oZWFkZXJfcGF0aF9saXN0PSIkY2ZfaGVhZGVyX3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKKyMgYWRkIHRoZSB2YXJpYXRpb25zIGZvciB0aGUgcGFja2FnZSB3ZSBhcmUgbG9va2luZyBmb3IKKworY2Zfc2VhcmNoPQorCit0ZXN0ICJ4JHByZWZpeCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkcHJlZml4IiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCitkb25lCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkb2xkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIgICAgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK2NmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGhfbGlzdCIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvIHNlYXJjaCBwYXRoICRjZl9zZWFyY2gKKwljZl9zYXZlMl9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWZvciBjZl9pbmNkaXIgaW4gJGNmX3NlYXJjaAorCWRvCisKK2lmIHRlc3QgLW4gIiRjZl9pbmNkaXIiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0MjY0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDI3NjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDI3OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0MjgyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDI4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjQzMDI6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCisJCWZvciBjZl9oZWFkZXIgaW4gXAorCQkJbmN1cnNlcy5oIFwKKwkJCWN1cnNlcy5oCisJCWRvCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQzMjUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDM0OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDM1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0MzU1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDM1ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaDI9JGNmX2hlYWRlcgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25jdXJzZXNfaDI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworCQkJaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vIDsgdGhlbgorCQkJCWNmX2N2X25jdXJzZXNfaDI9JGNmX2luY2Rpci8kY2ZfaGVhZGVyCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gJGFjX24gIgkuLi4gZm91bmQgJGFjX2MiIDE+JjYKKwkJCQlicmVhaworCQkJZmkKKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RlZCAkY2ZfaW5jZGlyLyRjZl9oZWFkZXIiIDE+JjYKKwkJZG9uZQorCQlDUFBGTEFHUz0iJGNmX3NhdmUyX0NQUEZMQUdTIgorCQl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiID0gbm8gJiYgeyB7IGVjaG8gIiRhc19tZTo0Mzc5OiBlcnJvcjogbm90IGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG5vdCBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitmaQorZWNobyAiJGFzX21lOjQzODQ6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaDIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfaDIiID4mNgorCisJY2ZfMXN0X2luY2Rpcj1gZWNobyAkY2ZfY3ZfbmN1cnNlc19oMiB8IHNlZCAtZSAncyUvW14vXSokJSUnYAorCWNmX2N2X25jdXJzZXNfaGVhZGVyPWBiYXNlbmFtZSAkY2ZfY3ZfbmN1cnNlc19oMmAKKwlpZiB0ZXN0IGBiYXNlbmFtZSAkY2ZfMXN0X2luY2RpcmAgPSAkY2ZfbmN1aGRyX3Jvb3QgOyB0aGVuCisJCWNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9uY3VoZHJfcm9vdC8kY2ZfY3ZfbmN1cnNlc19oZWFkZXIKKwlmaQorCitpZiB0ZXN0IC1uICIkY2ZfMXN0X2luY2RpciIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl8xc3RfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0NDE3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDQyOTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDQzMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0NDM1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDQzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjQ0NTU6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCitmaQorCisjIFNldCBkZWZpbml0aW9ucyB0byBhbGxvdyBpZmRlZidpbmcgZm9yIG5jdXJzZXMuaAorCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKCpuY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIgaW4KKyhuY3Vyc2VzL2N1cnNlcy5ofG5jdXJzZXMvbmN1cnNlcy5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy9jdXJzZXMuaHxuY3Vyc2Vzdy9uY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU1dfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjQ1MDM6IGNoZWNraW5nIGZvciB0ZXJtaW5mbyBoZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGVybWluZm8gaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl90ZXJtX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXNlICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXJ9IGluCisoKi9uY3Vyc2VzLmh8Ki9uY3Vyc2Vzdy5oKQorCWNmX3Rlcm1faGVhZGVyPWBlY2hvICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiIHwgc2VkIC1lICdzJW5jdXJzZXNbXi5dKlwuaCQldGVybS5oJSdgCisJOzsKKygqKQorCWNmX3Rlcm1faGVhZGVyPXRlcm0uaAorCTs7Citlc2FjCisKK2ZvciBjZl90ZXN0IGluICRjZl90ZXJtX2hlYWRlciAibmN1cnNlcy90ZXJtLmgiICJuY3Vyc2Vzdy90ZXJtLmgiCitkbworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0NTIxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwkY2ZfdGVzdD4KKworaW50CittYWluICgpCit7CitpbnQgeCA9IGF1dG9fbGVmdF9tYXJnaW4KKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDUzNjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDUzOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0NTQyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDU0NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwljZl9jdl90ZXJtX2hlYWRlcj0iJGNmX3Rlc3QiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWNmX2N2X3Rlcm1faGVhZGVyPXVua25vd24KKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCXRlc3QgIiRjZl9jdl90ZXJtX2hlYWRlciIgIT0gdW5rbm93biAmJiBicmVhaworZG9uZQorCitmaQorZWNobyAiJGFzX21lOjQ1NjE6IHJlc3VsdDogJGNmX2N2X3Rlcm1faGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl90ZXJtX2hlYWRlciIgPiY2CisKKyMgU2V0IGRlZmluaXRpb25zIHRvIGFsbG93IGlmZGVmJ2luZyB0byBhY2NvbW1vZGF0ZSBzdWJkaXJlY3RvcmllcworCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKCp0ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVEVSTV9IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKyhuY3Vyc2VzL3Rlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX1RFUk1fSCAxCitFT0YKKworCTs7CisobmN1cnNlc3cvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNXX1RFUk1fSCAxCitFT0YKKworCTs7Citlc2FjCisKKyMgc29tZSBhcHBsaWNhdGlvbnMgbmVlZCB0aGlzLCBidXQgc2hvdWxkIGNoZWNrIGZvciBOQ1VSU0VTX1ZFUlNJT04KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworZWNobyAiJGFzX21lOjQ1OTk6IGNoZWNraW5nIGZvciBuY3Vyc2VzIHZlcnNpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyB2ZXJzaW9uLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1ubworCWNmX3RlbXBmaWxlPW91dCQkCisJcm0gLWYgJGNmX3RlbXBmaWxlCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKworCSMgVGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBwcmVwcm9jZXNzb3Igc3BsaXRzIHRoZSBsaW5lIGFmdGVyIHRoZQorCSMgQXV0b2NvbmYgdG9rZW4uICBUaGUgJ3VucHJvdG8nIHByb2dyYW0gZG9lcyB0aGF0LgorCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjdW5kZWYgQXV0b2NvbmYKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KK0F1dG9jb25mIE5DVVJTRVNfVkVSU0lPTgorI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorQXV0b2NvbmYgIm9sZCIKKyNlbmRpZgorOworI2VuZGlmCitFT0YKKwljZl90cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCAyPiY1IHwgZ3JlcCAnXkF1dG9jb25mICcgPmNvbmZ0ZXN0Lm91dCIKKwl7IChldmFsIGVjaG8gIiRhc19tZTo0NjI1OiBcIiRjZl90cnlcIiIpID4mNQorICAoZXZhbCAkY2ZfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDYyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9CisJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCWNmX291dD1gY2F0IGNvbmZ0ZXN0Lm91dCB8IHNlZCAtZSAncyVeQXV0b2NvbmYgJSUnIC1lICdzJV5bXiJdKiIlJScgLWUgJ3MlIi4qJSUnYAorCQl0ZXN0IC1uICIkY2Zfb3V0IiAmJiBjZl9jdl9uY3Vyc2VzX3ZlcnNpb249IiRjZl9vdXQiCisJCXJtIC1mIGNvbmZ0ZXN0Lm91dAorCWZpCisKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0NjM4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCUZJTEUgKmZwID0gZm9wZW4oIiRjZl90ZW1wZmlsZSIsICJ3Iik7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjIGlmZGVmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSAorCWZwcmludGYoZnAsICIlcy4lZFxuIiwgTkNVUlNFU19WRVJTSU9OLCBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpOworIyBlbHNlCisJZnByaW50ZihmcCwgIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworIyBlbmRpZgorI2Vsc2UKKyMgaWZkZWYgX19OQ1VSU0VTX0gKKwlmcHJpbnRmKGZwLCAib2xkXG4iKTsKKyMgZWxzZQorCW1ha2UgYW4gZXJyb3IKKyMgZW5kaWYKKyNlbmRpZgorCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDY2MzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDY2NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDY2ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ2NzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPWBjYXQgJGNmX3RlbXBmaWxlYAorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCXJtIC1mICRjZl90ZW1wZmlsZQorCitmaQorZWNobyAiJGFzX21lOjQ2ODU6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA+JjYKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID0gbm8gfHwKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2NmX25jdWxpYl9yb290PW5jdXJzZXMKKwkjIFRoaXMgd29ya3MsIGV4Y2VwdCBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBmaW5kIGdwbSwgYnV0CisJIyBuY3Vyc2VzIGlzIGluIGEgbm9uc3RhbmRhcmQgbG9jYXRpb24gdmlhICRMSUJTLCBhbmQgd2UgcmVhbGx5IHdhbnQKKwkjIHRvIGxpbmsgZ3BtLgorY2ZfbmN1cnNlc19MSUJTPSIiCitjZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorZWNobyAiJGFzX21lOjQ2OTg6IGNoZWNraW5nIGZvciBHcG1fT3BlbiBpbiAtbGdwbSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBHcG1fT3BlbiBpbiAtbGdwbS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2dwbV9HcG1fT3BlbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGdwbSAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQ3MDYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIEdwbV9PcGVuICgpOworaW50CittYWluICgpCit7CitHcG1fT3BlbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ3MjU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ3Mjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0NzMxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDczNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9ncG1fR3BtX09wZW49eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ncG1fR3BtX09wZW49bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjQ3NDU6IHJlc3VsdDogJGFjX2N2X2xpYl9ncG1fR3BtX09wZW4iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ncG1fR3BtX09wZW4iID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiA9IHllczsgdGhlbgorICBlY2hvICIkYXNfbWU6NDc0ODogY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWxncG0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbGdwbS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2dwbV9pbml0c2NyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZ3BtICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNDc1NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgaW5pdHNjciAoKTsKK2ludAorbWFpbiAoKQoreworaW5pdHNjciAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ3NzU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ3Nzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo0NzgxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDc4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9ncG1faW5pdHNjcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2dwbV9pbml0c2NyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo0Nzk1OiByZXN1bHQ6ICRhY19jdl9saWJfZ3BtX2luaXRzY3IiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ncG1faW5pdHNjciIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZ3BtX2luaXRzY3IgPSB5ZXM7IHRoZW4KKyAgTElCUz0iJGNmX25jdXJzZXNfU0FWRSIKK2Vsc2UKKyAgY2ZfbmN1cnNlc19MSUJTPSItbGdwbSIKK2ZpCisKK2ZpCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhmcmVlYnNkKikKKwkjIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgaWYgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgYW4gb2Jzb2xldGUKKwkjIHZlcnNpb24gb2YgbmN1cnNlcyAoYnV0IGl0IHNob3VsZCBkbyBubyBoYXJtLCBzaW5jZSBpdCdzIHN0YXRpYykuCisJaWYgdGVzdCAiJGNmX25jdWxpYl9yb290IiA9IG5jdXJzZXMgOyB0aGVuCisJCWVjaG8gIiRhc19tZTo0ODEwOiBjaGVja2luZyBmb3IgdGdvdG8gaW4gLWxteXRpbmZvIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHRnb3RvIGluIC1sbXl0aW5mby4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX215dGluZm9fdGdvdG8rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxteXRpbmZvICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNDgxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgdGdvdG8gKCk7CitpbnQKK21haW4gKCkKK3sKK3Rnb3RvICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDgzNzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDg0MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ4NDM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0ODQ2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX215dGluZm9fdGdvdG89eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9teXRpbmZvX3Rnb3RvPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo0ODU3OiByZXN1bHQ6ICRhY19jdl9saWJfbXl0aW5mb190Z290byIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX215dGluZm9fdGdvdG8iID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX215dGluZm9fdGdvdG8gPSB5ZXM7IHRoZW4KKyAgY2ZfbmN1cnNlc19MSUJTPSItbG15dGluZm8gJGNmX25jdXJzZXNfTElCUyIKK2ZpCisKKwlmaQorCTs7Citlc2FjCisKK2NmX2FkZF9saWJzPSIkY2ZfbmN1cnNlc19MSUJTIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2lmICggdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIiICYmIHRlc3QgIiRjZl9jdl9jdXJzZXNfZGlyIiAhPSAibm8iICkKK3RoZW4KKworY2ZfYWRkX2xpYnM9Ii1sJGNmX25jdWxpYl9yb290IgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2Vsc2UKKworCWV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPW5vJworCWNmX2xpYmRpcj0iIgorCWVjaG8gIiRhc19tZTo0OTA2OiBjaGVja2luZyBmb3IgaW5pdHNjciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2luaXRzY3Irc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0OTEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGluaXRzY3IgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgaW5pdHNjciAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfaW5pdHNjcikgfHwgZGVmaW5lZCAoX19zdHViX19faW5pdHNjcikKK2Nob2tlIG1lCisjZWxzZQorZiA9IGluaXRzY3I7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDk0MzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDk0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ5NDk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0OTUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19pbml0c2NyPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2luaXRzY3I9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjQ5NjI6IHJlc3VsdDogJGFjX2N2X2Z1bmNfaW5pdHNjciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19pbml0c2NyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfaW5pdHNjciA9IHllczsgdGhlbgorICBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCitlbHNlCisKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkJZWNobyAiJGFzX21lOjQ5Njk6IGNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sJGNmX25jdWxpYl9yb290IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWwkY2ZfbmN1bGliX3Jvb3QuLi4gJEVDSE9fQyIgPiY2CisJCUxJQlM9Ii1sJGNmX25jdWxpYl9yb290ICRMSUJTIgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQ5NzMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0OTg1OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0OTg4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDk5MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ5OTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6NDk5NjogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZWNobyAiJGFzX21lOjUwMDM6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCitjZl9zZWFyY2g9CitjZl9saWJyYXJ5X3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtMREZMQUdTfSR7TElCU30iIDsgdGhlbgorCWZvciBjZl9saWJyYXJ5X3BhdGggaW4gJExERkxBR1MgJExJQlMKKwlkbworCQljYXNlICRjZl9saWJyYXJ5X3BhdGggaW4KKwkJKC1MKikKKwkJCWNmX2xpYnJhcnlfcGF0aD1gZWNobyAiLiRjZl9saWJyYXJ5X3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvbGliJCwsJ2AKKwordGVzdCAieCRjZl9saWJyYXJ5X3BhdGgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJGNmX2xpYnJhcnlfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX2xpYnJhcnlfcGF0aCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290IgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCIKK30KKworCQkJY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiRjZl9saWJyYXJ5X3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKKwl0ZXN0IC1kICRwcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290IgorCXRlc3QgLWQgJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKK2RvbmUKKworY2Zfc2VhcmNoPSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKworCQkJZm9yIGNmX2xpYmRpciBpbiAkY2Zfc2VhcmNoCisJCQlkbworCQkJCWVjaG8gIiRhc19tZTo1MDcxOiBjaGVja2luZyBmb3IgLWwkY2ZfbmN1bGliX3Jvb3QgaW4gJGNmX2xpYmRpciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAtbCRjZl9uY3VsaWJfcm9vdCBpbiAkY2ZfbGliZGlyLi4uICRFQ0hPX0MiID4mNgorCQkJCUxJQlM9Ii1MJGNmX2xpYmRpciAtbCRjZl9uY3VsaWJfcm9vdCAkY2Zfc2F2ZV9MSUJTIgorCQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTA3NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjUwODc6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjUwOTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1MDkzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTA5NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGVjaG8gIiRhc19tZTo1MDk4OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCQkJIAkJIGV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPXllcycKKwkJCQkJIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo1MTA1OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJCQkJIExJQlM9IiRjZl9zYXZlX0xJQlMiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJZG9uZQorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorCitldmFsICdjZl9mb3VuZF9saWJyYXJ5PSRjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290CisKK2lmIHRlc3QgJGNmX2ZvdW5kX2xpYnJhcnkgPSBubyA7IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjUxMjA6IGVycm9yOiBDYW5ub3QgbGluayAkY2ZfbmN1bGliX3Jvb3QgbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayAkY2ZfbmN1bGliX3Jvb3QgbGlicmFyeSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworZmkKKworaWYgdGVzdCAtbiAiJGNmX25jdXJzZXNfTElCUyIgOyB0aGVuCisJZWNobyAiJGFzX21lOjUxMjg6IGNoZWNraW5nIGlmIHdlIGNhbiBsaW5rICRjZl9uY3VsaWJfcm9vdCB3aXRob3V0ICRjZl9uY3Vyc2VzX0xJQlMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBjYW4gbGluayAkY2ZfbmN1bGliX3Jvb3Qgd2l0aG91dCAkY2ZfbmN1cnNlc19MSUJTLi4uICRFQ0hPX0MiID4mNgorCWNmX25jdXJzZXNfU0FWRT0iJExJQlMiCisJZm9yIHAgaW4gJGNmX25jdXJzZXNfTElCUyA7IGRvCisJCXE9YGVjaG8gJExJQlMgfCBzZWQgLWUgInMlJHAgJSUiIC1lICJzJSRwJCUlImAKKwkJaWYgdGVzdCAiJHEiICE9ICIkTElCUyIgOyB0aGVuCisJCQlMSUJTPSIkcSIKKwkJZmkKKwlkb25lCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA1MTM4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgbW91c2VtYXNrKDAsMCk7IHRnb3RvKChjaGFyICopMCwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1MTUwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MTUzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTE1NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjUxNTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6NTE2MTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZWNobyAiJGFzX21lOjUxNjY6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCQkgTElCUz0iJGNmX25jdXJzZXNfU0FWRSIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCitjZl9uY3VsaWJfUk9PVD1gZWNobyAiSEFWRV9MSUIkY2ZfbmN1bGliX3Jvb3QiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9uY3VsaWJfUk9PVCAxCitFT0YKKworCWZpCitlbHNlCisJTkNVUlNFU19DT05GSUc9bm9uZQorZmkKKworZWNobyAiJGFzX21lOjUxODQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IHdpZGUtY2hhcmFjdGVyIGNvZGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB3aWRlLWNoYXJhY3RlciBjb2RlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2lkZWMgb3IgLS1kaXNhYmxlLXdpZGVjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3dpZGVjK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93aWRlYyIKKyAgd2l0aF93aWRlYz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfd2lkZWM9bm8KK2ZpOworZWNobyAiJGFzX21lOjUxOTQ6IHJlc3VsdDogJHdpdGhfd2lkZWMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfd2lkZWMiID4mNgoraWYgdGVzdCAiJHdpdGhfd2lkZWMiID0geWVzIDsgdGhlbgorCitlY2hvICIkYXNfbWU6NTE5ODogY2hlY2tpbmcgZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc3VwcG9ydCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVyIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3V0ZjhfbGliK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljZl9zYXZlX0xJQlM9IiRMSUJTIgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTIwNiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KK2ludAorbWFpbiAoKQoreworcHV0d2MoMCwwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjUyMTk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjUyMjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1MjI1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTIyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3V0ZjhfbGliPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKyMgSWYgdGhlIGxpbmthZ2UgaXMgbm90IGFscmVhZHkgaW4gdGhlICRDUFBGTEFHUy8kTERGTEFHUyBjb25maWd1cmF0aW9uLCB0aGVzZQorIyB3aWxsIGJlIHNldCBvbiBjb21wbGV0aW9uIG9mIHRoZSBBQ19UUllfTElOSyBiZWxvdy4KK2NmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9CitjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOD0KKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1MjQwOiB0ZXN0aW5nIFN0YXJ0aW5nIEZJTkRfTElOS0FHRSh1dGY4LCkgLi4uIiAxPiY1CisKK2NmX3NhdmVfTElCUz0iJExJQlMiCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTI0NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1MjU4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MjYxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTI2NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjUyNjc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9eWVzCisJY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOD0vdXNyL2luY2x1ZGUKKwljZl9jdl9saWJyYXJ5X3BhdGhfdXRmOD0vdXNyL2xpYgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworTElCUz0iLWx1dGY4ICAkY2Zfc2F2ZV9MSUJTIgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDUyODEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8bGlidXRmOC5oPgoraW50CittYWluICgpCit7CitwdXR3YygwLDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTI5NDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTI5NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUzMDA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MzAzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcworCWNmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9L3Vzci9pbmNsdWRlCisJY2ZfY3ZfbGlicmFyeV9wYXRoX3V0Zjg9L3Vzci9saWIKKwljZl9jdl9saWJyYXJ5X2ZpbGVfdXRmOD0iLWx1dGY4IgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PW5vCisJTElCUz0iJGNmX3NhdmVfTElCUyIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZmluZCBsaW5rYWdlIGZvciB1dGY4IGxpYnJhcnkiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1MzIwOiB0ZXN0aW5nIGZpbmQgbGlua2FnZSBmb3IgdXRmOCBsaWJyYXJ5IC4uLiIgMT4mNQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjUzMjI6IHRlc3RpbmcgU2VhcmNoaW5nIGZvciBoZWFkZXJzIGluIEZJTkRfTElOS0FHRSh1dGY4LCkgLi4uIiAxPiY1CisKKwljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitjZl9zZWFyY2g9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCit0ZXN0ICJ4JGNmX2hlYWRlcl9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9oZWFkZXJfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9oZWFkZXJfcGF0aCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjgiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS91dGY4L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUvdXRmOCIKK30KKworCQkJY2ZfaGVhZGVyX3BhdGhfbGlzdD0iJGNmX2hlYWRlcl9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCisjIGFkZCB0aGUgdmFyaWF0aW9ucyBmb3IgdGhlIHBhY2thZ2Ugd2UgYXJlIGxvb2tpbmcgZm9yCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUvdXRmOCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS91dGY4L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvdXRmOCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvdXRmOC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4IgorfQorCitkb25lCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvdXRmOCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGluY2x1ZGVkaXIvdXRmOCIKK30KKwordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9IE5PTkUgJiYgXAordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiICYmIFwKK3Rlc3QgLWQgIiRvbGRpbmNsdWRlZGlyIiAmJiB7CisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpciAgICAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIiCisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpci91dGY4ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpci91dGY4IgorfQorCitjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoX2xpc3QiCisKKwlmb3IgY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCBpbiAkY2Zfc2VhcmNoCisJZG8KKwkJaWYgdGVzdCAtZCAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCA7IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1NDEzOiB0ZXN0aW5nIC4uLiB0ZXN0aW5nICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MgLUkkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIKKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTQxNyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU0MzA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU0MzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTQzNjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU0Mzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gZm91bmQgdXRmOCBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTQ0NDogdGVzdGluZyAuLi4gZm91bmQgdXRmOCBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQkJY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9bWF5YmUKKwkJCQljZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCQkJYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCWZpCisJZG9uZQorCisJaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV91dGY4IiA9IG1heWJlIDsgdGhlbgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjU0NjI6IHRlc3RpbmcgU2VhcmNoaW5nIGZvciB1dGY4IGxpYnJhcnkgaW4gRklORF9MSU5LQUdFKHV0ZjgsKSAuLi4iIDE+JjUKKworCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCQljZl9zYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCisJCWlmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfdXRmOCIgIT0geWVzIDsgdGhlbgorCitjZl9zZWFyY2g9CitjZl9saWJyYXJ5X3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtMREZMQUdTfSR7TElCU30iIDsgdGhlbgorCWZvciBjZl9saWJyYXJ5X3BhdGggaW4gJExERkxBR1MgJExJQlMKKwlkbworCQljYXNlICRjZl9saWJyYXJ5X3BhdGggaW4KKwkJKC1MKikKKwkJCWNmX2xpYnJhcnlfcGF0aD1gZWNobyAiLiRjZl9saWJyYXJ5X3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvbGliJCwsJ2AKKwordGVzdCAieCRjZl9saWJyYXJ5X3BhdGgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJGNmX2xpYnJhcnlfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX2xpYnJhcnlfcGF0aCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliL3V0ZjgiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi91dGY4L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvdXRmOC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliL3V0ZjgiCit9CisKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIiCisJdGVzdCAtZCAkcHJlZml4L2xpYi91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYi91dGY4IgorCXRlc3QgLWQgJHByZWZpeC9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliL3V0ZjgvbGliIgorCXRlc3QgLWQgJHByZWZpeC91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvdXRmOC9saWIvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2xpYi91dGY4IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9zdWJkaXJfcHJlZml4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvdXRmOCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliL3V0ZjgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi91dGY4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliL3V0ZjgiCit9CisKK2RvbmUKKworY2Zfc2VhcmNoPSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKworCQkJZm9yIGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IGluICRjZl9zZWFyY2gKKwkJCWRvCisJCQkJaWYgdGVzdCAtZCAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggOyB0aGVuCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTUzNzogdGVzdGluZyAuLi4gdGVzdGluZyAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggLi4uIiAxPiY1CisKKwkJCQkJQ1BQRkxBR1M9IiRjZl90ZXN0X0NQUEZMQUdTIgorCQkJCQlMSUJTPSItbHV0ZjggICRjZl9zYXZlX0xJQlMiCisJCQkJCUxERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MgLUwkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiCisJCQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTU0MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NTU2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NTU5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTU2MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU1NjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIGZvdW5kIHV0ZjggbGlicmFyeSBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1NTcwOiB0ZXN0aW5nIC4uLiBmb3VuZCB1dGY4IGxpYnJhcnkgaW4gJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQkJCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcworCQkJCQljZl9jdl9saWJyYXJ5X2ZpbGVfdXRmOD0iLWx1dGY4IgorCQkJCQlicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwkJCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJCWZpCisJCQlkb25lCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCQlmaQorCisJZWxzZQorCQljZl9jdl9maW5kX2xpbmthZ2VfdXRmOD1ubworCWZpCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK0xJQlM9IiRjZl9zYXZlX0xJQlMiCisKK2lmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfdXRmOCIgPSB5ZXMgOyB0aGVuCitjZl9jdl91dGY4X2xpYj1hZGQtb24KK2Vsc2UKK2NmX2N2X3V0ZjhfbGliPW5vCitmaQorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo1NjEyOiByZXN1bHQ6ICRjZl9jdl91dGY4X2xpYiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdXRmOF9saWIiID4mNgorCisjIEhBVkVfTElCVVRGOF9IIGlzIHVzZWQgYnkgbmN1cnNlcyBpZiBjdXJzZXMuaCBpcyBzaGFyZWQgYmV0d2VlbgorIyBuY3Vyc2VzL25jdXJzZXN3OgoraWYgdGVzdCAiJGNmX2N2X3V0ZjhfbGliIiA9ICJhZGQtb24iIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQlVURjhfSCAxCitFT0YKKworaWYgdGVzdCAtbiAiJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOAorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTY0NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2NTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU2NjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTY2NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU2Njg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1Njg1OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworaWYgdGVzdCAtbiAiJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgKKwlkbworCQlpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCisJCQk6CisJCWVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgorCQl0aGVuCisJCQljZl9oYXZlX2xpYmRpcj1ubworCQkJaWYgdGVzdCAtbiAiJExERkxBR1MkTElCUyIgOyB0aGVuCisJCQkJIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkJCWZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCisJCQkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KKwkJCQkJCWNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKKwkJCQkJZmkKKwkJCQlkb25lCisJCQlmaQorCQkJaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjU3MjE6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfY3ZfbGlicmFyeV9maWxlX3V0ZjgiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZmkKKworY2ZfbmN1Y29uZmlnX3Jvb3Q9bmN1cnNlc3cKK2NmX2hhdmVfbmN1Y29uZmlnPW5vCisKK2lmIHRlc3QgIngke1BLR19DT05GSUc6PW5vbmV9IiAhPSB4bm9uZTsgdGhlbgorCWVjaG8gIiRhc19tZTo1NzUxOiBjaGVja2luZyBwa2ctY29uZmlnIGZvciAkY2ZfbmN1Y29uZmlnX3Jvb3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBwa2ctY29uZmlnIGZvciAkY2ZfbmN1Y29uZmlnX3Jvb3QuLi4gJEVDSE9fQyIgPiY2CisJaWYgIiRQS0dfQ09ORklHIiAtLWV4aXN0cyAkY2ZfbmN1Y29uZmlnX3Jvb3QgOyB0aGVuCisJCWVjaG8gIiRhc19tZTo1NzU0OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCisJCWVjaG8gIiRhc19tZTo1NzU3OiBjaGVja2luZyBpZiB0aGUgJGNmX25jdWNvbmZpZ19yb290IHBhY2thZ2UgZmlsZXMgd29yayIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRoZSAkY2ZfbmN1Y29uZmlnX3Jvb3QgcGFja2FnZSBmaWxlcyB3b3JrLi4uICRFQ0hPX0MiID4mNgorCQljZl9oYXZlX25jdWNvbmZpZz11bmtub3duCisKKwkJY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgYCRQS0dfQ09ORklHIC0tY2ZsYWdzICRjZl9uY3Vjb25maWdfcm9vdGAiCisKK2NmX2FkZF9saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICRjZl9uY3Vjb25maWdfcm9vdGAiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU3ODMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyBtb3VzZW1hc2soMCwwKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU3OTU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU3OTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1ODAxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTgwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIGNmX2hhdmVfbmN1Y29uZmlnPW1heWJlCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTgxMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorCQkJCWludCBtYWluKHZvaWQpCisJCQkJeyBjaGFyICp4eCA9IGN1cnNlc192ZXJzaW9uKCk7IHJldHVybiAoeHggPT0gMCk7IH0KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1ODE3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1ODIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1ODIyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTgyNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2hhdmVfbmN1Y29uZmlnPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9uY3Vjb25maWc9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9uY3Vjb25maWc9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJCWVjaG8gIiRhc19tZTo1ODQyOiByZXN1bHQ6ICRjZl9oYXZlX25jdWNvbmZpZyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfaGF2ZV9uY3Vjb25maWciID4mNgorCQl0ZXN0ICIkY2ZfaGF2ZV9uY3Vjb25maWciID0gbWF5YmUgJiYgY2ZfaGF2ZV9uY3Vjb25maWc9eWVzCisJCWlmIHRlc3QgIiRjZl9oYXZlX25jdWNvbmZpZyIgIT0gInllcyIKKwkJdGhlbgorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJCWVsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworCQkJTkNVUlNFU19DT05GSUdfUEtHPSRjZl9uY3Vjb25maWdfcm9vdAorCQlmaQorCisJZWxzZQorCQllY2hvICIkYXNfbWU6NTg2MDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJZmkKK2Vsc2UKKwlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorZmkKKworaWYgdGVzdCAieCRjZl9oYXZlX25jdWNvbmZpZyIgPSAieG5vIjsgdGhlbgorCWVjaG8gIkxvb2tpbmcgZm9yICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyIKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTUtY29uZmlnCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo1ODc2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTkNVUlNFU19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE5DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdl9wcm9nX05DVVJTRVNfQ09ORklHPSIkTkNVUlNFU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCitlY2hvICIkYXNfbWU6NTg5MTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK05DVVJTRVNfQ09ORklHPSRhY19jdl9wcm9nX05DVVJTRVNfQ09ORklHCitpZiB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZTo1ODk5OiByZXN1bHQ6ICROQ1VSU0VTX0NPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kTkNVUlNFU19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NTkwMjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgICAgdGVzdCAtbiAiJE5DVVJTRVNfQ09ORklHIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJE5DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdF9OQ1VSU0VTX0NPTkZJRz0kTkNVUlNFU19DT05GSUcKKyAgZm9yIGFjX3Byb2cgaW4gJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9Ni1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH01LWNvbmZpZworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo1OTE1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHPSIkYWNfY3RfTkNVUlNFU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6NTkzMDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X05DVVJTRVNfQ09ORklHPSRhY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHCitpZiB0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZTo1OTM4OiByZXN1bHQ6ICRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfTkNVUlNFU19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NTk0MTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgfHwgYWNfY3RfTkNVUlNFU19DT05GSUc9Im5vbmUiCisKKyAgTkNVUlNFU19DT05GSUc9JGFjX2N0X05DVVJTRVNfQ09ORklHCitmaQorCisJaWYgdGVzdCAiJE5DVVJTRVNfQ09ORklHIiAhPSBub25lIDsgdGhlbgorCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgYCROQ1VSU0VTX0NPTkZJRyAtLWNmbGFnc2AiCisKK2NmX2FkZF9saWJzPSJgJE5DVVJTRVNfQ09ORklHIC0tbGlic2AiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkjIGV2ZW4gd2l0aCBjb25maWcgc2NyaXB0LCBzb21lIHBhY2thZ2VzIHVzZSBuby1vdmVycmlkZSBmb3IgY3Vyc2VzLmgKKworZWNobyAiJGFzX21lOjU5NzQ6IGNoZWNraW5nIGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgaGVhZGVycyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgaGVhZGVycy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfbmN1cnNlc19oZWFkZXI9bm9uZQorZm9yIGNmX2hlYWRlciBpbiBcCisJbmN1cnNlcy5oIG5jdXJzZXN3L25jdXJzZXMuaCBcCisJY3Vyc2VzLmggbmN1cnNlc3cvY3Vyc2VzLmgKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU5ODYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfaGVhZGVyfT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyB0Z290bygiPyIsIDAsMCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTk5ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjAwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2MDA0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjAwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9oZWFkZXI7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKKworZmkKK2VjaG8gIiRhc19tZTo2MDE4OiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID0gbm9uZSA7IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjYwMjI6IGVycm9yOiBObyBjdXJzZXMgaGVhZGVyLWZpbGVzIGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKyMgY2hlYXQsIHRvIGdldCB0aGUgcmlnaHQgI2RlZmluZSdzIGZvciBIQVZFX05DVVJTRVNfSCwgZXRjLgorCitmb3IgYWNfaGVhZGVyIGluICRjZl9jdl9uY3Vyc2VzX2hlYWRlcgorZG8KK2FzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjYwMzI6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjAzOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGFjX2hlYWRlcj4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjA0MjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6NjA0ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NjA2NzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworY2ZfbmN1bGliX1JPT1Q9YGVjaG8gIkhBVkVfTElCJGNmX25jdWNvbmZpZ19yb290IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9uY3VsaWJfUk9PVCAxCitFT0YKKworCQkJCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gJE5DVVJTRVNfQ09ORklHIC0tdmVyc2lvbmAKKworCWVsc2UKKworY2ZfbmN1aGRyX3Jvb3Q9bmN1cnNlc3cKKwordGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIiICYmIFwKK3Rlc3QgIiRjZl9jdl9jdXJzZXNfZGlyIiAhPSAibm8iICYmIHsgXAorCitpZiB0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl9jdl9jdXJzZXNfZGlyL2luY2x1ZGUvJGNmX25jdWhkcl9yb290CisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2MTIwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjEzMjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjEzNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2MTM4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjE0MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjYxNTg6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCit9CisKK2VjaG8gIiRhc19tZTo2MTc3OiBjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGhlYWRlciBpbiBpbmNsdWRlLXBhdGgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGhlYWRlciBpbiBpbmNsdWRlLXBhdGguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfaGVhZGVyX2xpc3Q9IiRjZl9uY3VoZHJfcm9vdC9jdXJzZXMuaCAkY2ZfbmN1aGRyX3Jvb3QvbmN1cnNlcy5oIgorCSggdGVzdCAiJGNmX25jdWhkcl9yb290IiA9IG5jdXJzZXMgfHwgdGVzdCAiJGNmX25jdWhkcl9yb290IiA9IG5jdXJzZXN3ICkgJiYgY2ZfaGVhZGVyX2xpc3Q9IiRjZl9oZWFkZXJfbGlzdCBjdXJzZXMuaCBuY3Vyc2VzLmgiCisJZm9yIGNmX2hlYWRlciBpbiAkY2ZfaGVhZGVyX2xpc3QKKwlkbworCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2MTg5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjdW5kZWYgIEhBVkVfTElCVVRGOF9ICS8qIGluIGNhc2Ugd2UgdXNlZCBDRl9VVEY4X0xJQiAqLworI2RlZmluZSBIQVZFX0xJQlVURjhfSAkvKiB0byBmb3JjZSBuY3Vyc2VzJyBoZWFkZXIgZmlsZSB0byB1c2UgY2NoYXJfdCAqLworCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKKyNpZm5kZWYgV0FDU19CU1NCCisJbWFrZSBhbiBlcnJvcgorI2VuZGlmCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjIyMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjIyNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2MjI3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjIzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaD0kY2ZfaGVhZGVyCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmN1cnNlc19oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6NjI0NTogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2giID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oIiAhPSBubyA7IHRoZW4KKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfY3ZfbmN1cnNlc19oCitlbHNlCisKK2VjaG8gIiRhc19tZTo2MjUyOiBjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGluY2x1ZGUtcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaW5jbHVkZS1wYXRoLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2gyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobworCitjZl9zZWFyY2g9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCit0ZXN0ICJ4JGNmX2hlYWRlcl9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9oZWFkZXJfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9oZWFkZXJfcGF0aCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCisJCQljZl9oZWFkZXJfcGF0aF9saXN0PSIkY2ZfaGVhZGVyX3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKKyMgYWRkIHRoZSB2YXJpYXRpb25zIGZvciB0aGUgcGFja2FnZSB3ZSBhcmUgbG9va2luZyBmb3IKKworY2Zfc2VhcmNoPQorCit0ZXN0ICJ4JHByZWZpeCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkcHJlZml4IiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCitkb25lCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkb2xkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIgICAgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK2NmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGhfbGlzdCIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvIHNlYXJjaCBwYXRoICRjZl9zZWFyY2gKKwljZl9zYXZlMl9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWZvciBjZl9pbmNkaXIgaW4gJGNmX3NlYXJjaAorCWRvCisKK2lmIHRlc3QgLW4gIiRjZl9pbmNkaXIiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2MzcwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjM4MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjM4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2Mzg4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjM5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY0MDg6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCisJCWZvciBjZl9oZWFkZXIgaW4gXAorCQkJbmN1cnNlcy5oIFwKKwkJCWN1cnNlcy5oCisJCWRvCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDY0MzEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjQ1NTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjQ1ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2NDYxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjQ2NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaDI9JGNmX2hlYWRlcgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25jdXJzZXNfaDI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworCQkJaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vIDsgdGhlbgorCQkJCWNmX2N2X25jdXJzZXNfaDI9JGNmX2luY2Rpci8kY2ZfaGVhZGVyCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gJGFjX24gIgkuLi4gZm91bmQgJGFjX2MiIDE+JjYKKwkJCQlicmVhaworCQkJZmkKKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RlZCAkY2ZfaW5jZGlyLyRjZl9oZWFkZXIiIDE+JjYKKwkJZG9uZQorCQlDUFBGTEFHUz0iJGNmX3NhdmUyX0NQUEZMQUdTIgorCQl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiID0gbm8gJiYgeyB7IGVjaG8gIiRhc19tZTo2NDg1OiBlcnJvcjogbm90IGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG5vdCBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitmaQorZWNobyAiJGFzX21lOjY0OTA6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaDIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfaDIiID4mNgorCisJY2ZfMXN0X2luY2Rpcj1gZWNobyAkY2ZfY3ZfbmN1cnNlc19oMiB8IHNlZCAtZSAncyUvW14vXSokJSUnYAorCWNmX2N2X25jdXJzZXNfaGVhZGVyPWBiYXNlbmFtZSAkY2ZfY3ZfbmN1cnNlc19oMmAKKwlpZiB0ZXN0IGBiYXNlbmFtZSAkY2ZfMXN0X2luY2RpcmAgPSAkY2ZfbmN1aGRyX3Jvb3QgOyB0aGVuCisJCWNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9uY3VoZHJfcm9vdC8kY2ZfY3ZfbmN1cnNlc19oZWFkZXIKKwlmaQorCitpZiB0ZXN0IC1uICIkY2ZfMXN0X2luY2RpciIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl8xc3RfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NTIzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjUzNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjUzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2NTQxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjU0NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY1NjE6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCitmaQorCisjIFNldCBkZWZpbml0aW9ucyB0byBhbGxvdyBpZmRlZidpbmcgZm9yIG5jdXJzZXMuaAorCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKCpuY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIgaW4KKyhuY3Vyc2VzL2N1cnNlcy5ofG5jdXJzZXMvbmN1cnNlcy5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy9jdXJzZXMuaHxuY3Vyc2Vzdy9uY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU1dfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjY2MDk6IGNoZWNraW5nIGZvciB0ZXJtaW5mbyBoZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGVybWluZm8gaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl90ZXJtX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXNlICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXJ9IGluCisoKi9uY3Vyc2VzLmh8Ki9uY3Vyc2Vzdy5oKQorCWNmX3Rlcm1faGVhZGVyPWBlY2hvICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiIHwgc2VkIC1lICdzJW5jdXJzZXNbXi5dKlwuaCQldGVybS5oJSdgCisJOzsKKygqKQorCWNmX3Rlcm1faGVhZGVyPXRlcm0uaAorCTs7Citlc2FjCisKK2ZvciBjZl90ZXN0IGluICRjZl90ZXJtX2hlYWRlciAibmN1cnNlcy90ZXJtLmgiICJuY3Vyc2Vzdy90ZXJtLmgiCitkbworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NjI3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwkY2ZfdGVzdD4KKworaW50CittYWluICgpCit7CitpbnQgeCA9IGF1dG9fbGVmdF9tYXJnaW4KKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjY0MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjY0NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2NjQ4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjY1MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwljZl9jdl90ZXJtX2hlYWRlcj0iJGNmX3Rlc3QiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWNmX2N2X3Rlcm1faGVhZGVyPXVua25vd24KKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCXRlc3QgIiRjZl9jdl90ZXJtX2hlYWRlciIgIT0gdW5rbm93biAmJiBicmVhaworZG9uZQorCitmaQorZWNobyAiJGFzX21lOjY2Njc6IHJlc3VsdDogJGNmX2N2X3Rlcm1faGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl90ZXJtX2hlYWRlciIgPiY2CisKKyMgU2V0IGRlZmluaXRpb25zIHRvIGFsbG93IGlmZGVmJ2luZyB0byBhY2NvbW1vZGF0ZSBzdWJkaXJlY3RvcmllcworCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKCp0ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVEVSTV9IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKyhuY3Vyc2VzL3Rlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX1RFUk1fSCAxCitFT0YKKworCTs7CisobmN1cnNlc3cvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNXX1RFUk1fSCAxCitFT0YKKworCTs7Citlc2FjCisKKyMgc29tZSBhcHBsaWNhdGlvbnMgbmVlZCB0aGlzLCBidXQgc2hvdWxkIGNoZWNrIGZvciBOQ1VSU0VTX1ZFUlNJT04KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworZWNobyAiJGFzX21lOjY3MDU6IGNoZWNraW5nIGZvciBuY3Vyc2VzIHZlcnNpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyB2ZXJzaW9uLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1ubworCWNmX3RlbXBmaWxlPW91dCQkCisJcm0gLWYgJGNmX3RlbXBmaWxlCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKworCSMgVGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBwcmVwcm9jZXNzb3Igc3BsaXRzIHRoZSBsaW5lIGFmdGVyIHRoZQorCSMgQXV0b2NvbmYgdG9rZW4uICBUaGUgJ3VucHJvdG8nIHByb2dyYW0gZG9lcyB0aGF0LgorCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjdW5kZWYgQXV0b2NvbmYKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KK0F1dG9jb25mIE5DVVJTRVNfVkVSU0lPTgorI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorQXV0b2NvbmYgIm9sZCIKKyNlbmRpZgorOworI2VuZGlmCitFT0YKKwljZl90cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCAyPiY1IHwgZ3JlcCAnXkF1dG9jb25mICcgPmNvbmZ0ZXN0Lm91dCIKKwl7IChldmFsIGVjaG8gIiRhc19tZTo2NzMxOiBcIiRjZl90cnlcIiIpID4mNQorICAoZXZhbCAkY2ZfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjczNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9CisJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCWNmX291dD1gY2F0IGNvbmZ0ZXN0Lm91dCB8IHNlZCAtZSAncyVeQXV0b2NvbmYgJSUnIC1lICdzJV5bXiJdKiIlJScgLWUgJ3MlIi4qJSUnYAorCQl0ZXN0IC1uICIkY2Zfb3V0IiAmJiBjZl9jdl9uY3Vyc2VzX3ZlcnNpb249IiRjZl9vdXQiCisJCXJtIC1mIGNvbmZ0ZXN0Lm91dAorCWZpCisKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NzQ0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCUZJTEUgKmZwID0gZm9wZW4oIiRjZl90ZW1wZmlsZSIsICJ3Iik7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjIGlmZGVmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSAorCWZwcmludGYoZnAsICIlcy4lZFxuIiwgTkNVUlNFU19WRVJTSU9OLCBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpOworIyBlbHNlCisJZnByaW50ZihmcCwgIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworIyBlbmRpZgorI2Vsc2UKKyMgaWZkZWYgX19OQ1VSU0VTX0gKKwlmcHJpbnRmKGZwLCAib2xkXG4iKTsKKyMgZWxzZQorCW1ha2UgYW4gZXJyb3IKKyMgZW5kaWYKKyNlbmRpZgorCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njc2OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Njc3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njc3NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3Nzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPWBjYXQgJGNmX3RlbXBmaWxlYAorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCXJtIC1mICRjZl90ZW1wZmlsZQorCitmaQorZWNobyAiJGFzX21lOjY3OTE6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA+JjYKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID0gbm8gfHwKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2NmX25jdWxpYl9yb290PW5jdXJzZXN3CisJIyBUaGlzIHdvcmtzLCBleGNlcHQgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgZmluZCBncG0sIGJ1dAorCSMgbmN1cnNlcyBpcyBpbiBhIG5vbnN0YW5kYXJkIGxvY2F0aW9uIHZpYSAkTElCUywgYW5kIHdlIHJlYWxseSB3YW50CisJIyB0byBsaW5rIGdwbS4KK2NmX25jdXJzZXNfTElCUz0iIgorY2ZfbmN1cnNlc19TQVZFPSIkTElCUyIKK2VjaG8gIiRhc19tZTo2ODA0OiBjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9ncG1fR3BtX09wZW4rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxncG0gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2ODEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBHcG1fT3BlbiAoKTsKK2ludAorbWFpbiAoKQoreworR3BtX09wZW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2ODMxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2ODM0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjgzNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY4NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZ3BtX0dwbV9PcGVuPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZ3BtX0dwbV9PcGVuPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo2ODUxOiByZXN1bHQ6ICRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ncG1fR3BtX09wZW4gPSB5ZXM7IHRoZW4KKyAgZWNobyAiJGFzX21lOjY4NTQ6IGNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sZ3BtIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWxncG0uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9ncG1faW5pdHNjcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGdwbSAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDY4NjIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGluaXRzY3IgKCk7CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2ODgxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2ODg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njg4NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY4OTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZ3BtX2luaXRzY3I9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ncG1faW5pdHNjcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6NjkwMTogcmVzdWx0OiAkYWNfY3ZfbGliX2dwbV9pbml0c2NyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ3BtX2luaXRzY3IiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2dwbV9pbml0c2NyID0geWVzOyB0aGVuCisgIExJQlM9IiRjZl9uY3Vyc2VzX1NBVkUiCitlbHNlCisgIGNmX25jdXJzZXNfTElCUz0iLWxncG0iCitmaQorCitmaQorCitjYXNlICRob3N0X29zIGluCisoZnJlZWJzZCopCisJIyBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IGFuIG9ic29sZXRlCisJIyB2ZXJzaW9uIG9mIG5jdXJzZXMgKGJ1dCBpdCBzaG91bGQgZG8gbm8gaGFybSwgc2luY2UgaXQncyBzdGF0aWMpLgorCWlmIHRlc3QgIiRjZl9uY3VsaWJfcm9vdCIgPSBuY3Vyc2VzIDsgdGhlbgorCQllY2hvICIkYXNfbWU6NjkxNjogY2hlY2tpbmcgZm9yIHRnb3RvIGluIC1sbXl0aW5mbyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0Z290byBpbiAtbG15dGluZm8uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9teXRpbmZvX3Rnb3RvK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sbXl0aW5mbyAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDY5MjQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIHRnb3RvICgpOworaW50CittYWluICgpCit7Cit0Z290byAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY5NDM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY5NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2OTQ5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Njk1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfbXl0aW5mb190Z290bz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6Njk2MzogcmVzdWx0OiAkYWNfY3ZfbGliX215dGluZm9fdGdvdG8iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvID0geWVzOyB0aGVuCisgIGNmX25jdXJzZXNfTElCUz0iLWxteXRpbmZvICRjZl9uY3Vyc2VzX0xJQlMiCitmaQorCisJZmkKKwk7OworZXNhYworCitjZl9hZGRfbGlicz0iJGNmX25jdXJzZXNfTElCUyIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisKK2NmX2FkZF9saWJzPSItbCRjZl9uY3VsaWJfcm9vdCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitlbHNlCisKKwlldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz1ubycKKwljZl9saWJkaXI9IiIKKwllY2hvICIkYXNfbWU6NzAxMjogY2hlY2tpbmcgZm9yIGluaXRzY3IiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19pbml0c2NyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzAxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBpbml0c2NyICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGluaXRzY3IgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX2luaXRzY3IpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2luaXRzY3IpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSBpbml0c2NyOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwNDk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcwNTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3MDU1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzA1ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2Z1bmNfaW5pdHNjcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19pbml0c2NyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo3MDY4OiByZXN1bHQ6ICRhY19jdl9mdW5jX2luaXRzY3IiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfaW5pdHNjciIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX2luaXRzY3IgPSB5ZXM7IHRoZW4KKyAgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9eWVzJworZWxzZQorCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisJCWVjaG8gIiRhc19tZTo3MDc1OiBjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbCRjZl9uY3VsaWJfcm9vdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sJGNmX25jdWxpYl9yb290Li4uICRFQ0hPX0MiID4mNgorCQlMSUJTPSItbCRjZl9uY3VsaWJfcm9vdCAkTElCUyIKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3MDc5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzA5MTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzA5NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwOTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MTAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZWNobyAiJGFzX21lOjcxMDI6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisJCQkgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9eWVzJworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo3MTA5OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKworY2Zfc2VhcmNoPQorY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7TERGTEFHU30ke0xJQlN9IiA7IHRoZW4KKwlmb3IgY2ZfbGlicmFyeV9wYXRoIGluICRMREZMQUdTICRMSUJTCisJZG8KKwkJY2FzZSAkY2ZfbGlicmFyeV9wYXRoIGluCisJCSgtTCopCisJCQljZl9saWJyYXJ5X3BhdGg9YGVjaG8gIi4kY2ZfbGlicmFyeV9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2xpYiQsLCdgCisKK3Rlc3QgIngkY2ZfbGlicmFyeV9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9saWJyYXJ5X3BhdGgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9saWJyYXJ5X3BhdGgiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIiCisJdGVzdCAtZCAkcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKK2ZvciBjZl9zdWJkaXJfcHJlZml4IGluIFwKKwkvdXNyIFwKKwkvdXNyL2xvY2FsIFwKKwkvdXNyL3BrZyBcCisJL29wdCBcCisJL29wdC9sb2NhbCBcCisJJEhPTUUKK2RvCisKK3Rlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IiAmJiBcCit0ZXN0IC1kICIkY2Zfc3ViZGlyX3ByZWZpeCIgJiYgXAorKHRlc3QgLXogIiRwcmVmaXgiIHx8IHRlc3QgeCRwcmVmaXggPSB4Tk9ORSB8fCB0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIpICYmIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290IgorfQorCitkb25lCisKK2NmX3NlYXJjaD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0ICRjZl9zZWFyY2giCisKKwkJCWZvciBjZl9saWJkaXIgaW4gJGNmX3NlYXJjaAorCQkJZG8KKwkJCQllY2hvICIkYXNfbWU6NzE3NzogY2hlY2tpbmcgZm9yIC1sJGNmX25jdWxpYl9yb290IGluICRjZl9saWJkaXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgLWwkY2ZfbmN1bGliX3Jvb3QgaW4gJGNmX2xpYmRpci4uLiAkRUNIT19DIiA+JjYKKwkJCQlMSUJTPSItTCRjZl9saWJkaXIgLWwkY2ZfbmN1bGliX3Jvb3QgJGNmX3NhdmVfTElCUyIKKwkJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDcxODEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3MTkzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MTk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzE5OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcyMDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6NzIwNDogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkJCSAJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCisJCQkJCSBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitlY2hvICIkYXNfbWU6NzIxMTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCQkJCSBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCWRvbmUKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKKworZXZhbCAnY2ZfZm91bmRfbGlicmFyeT0kY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdAorCitpZiB0ZXN0ICRjZl9mb3VuZF9saWJyYXJ5ID0gbm8gOyB0aGVuCisJeyB7IGVjaG8gIiRhc19tZTo3MjI2OiBlcnJvcjogQ2Fubm90IGxpbmsgJGNmX25jdWxpYl9yb290IGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGxpbmsgJGNmX25jdWxpYl9yb290IGxpYnJhcnkiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uY3Vyc2VzX0xJQlMiIDsgdGhlbgorCWVjaG8gIiRhc19tZTo3MjM0OiBjaGVja2luZyBpZiB3ZSBjYW4gbGluayAkY2ZfbmN1bGliX3Jvb3Qgd2l0aG91dCAkY2ZfbmN1cnNlc19MSUJTIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgY2FuIGxpbmsgJGNmX25jdWxpYl9yb290IHdpdGhvdXQgJGNmX25jdXJzZXNfTElCUy4uLiAkRUNIT19DIiA+JjYKKwljZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorCWZvciBwIGluICRjZl9uY3Vyc2VzX0xJQlMgOyBkbworCQlxPWBlY2hvICRMSUJTIHwgc2VkIC1lICJzJSRwICUlIiAtZSAicyUkcCQlJSJgCisJCWlmIHRlc3QgIiRxIiAhPSAiJExJQlMiIDsgdGhlbgorCQkJTElCUz0iJHEiCisJCWZpCisJZG9uZQorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzI0NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzI1NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzI1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjcyNjI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MjY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZWNobyAiJGFzX21lOjcyNjc6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo3MjcyOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJIExJQlM9IiRjZl9uY3Vyc2VzX1NBVkUiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworY2ZfbmN1bGliX1JPT1Q9YGVjaG8gIkhBVkVfTElCJGNmX25jdWxpYl9yb290IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSAkY2ZfbmN1bGliX1JPT1QgMQorRU9GCisKKwlmaQorZWxzZQorCU5DVVJTRVNfQ09ORklHPW5vbmUKK2ZpCisKK2Vsc2UKKworY2ZfbmN1Y29uZmlnX3Jvb3Q9bmN1cnNlcworY2ZfaGF2ZV9uY3Vjb25maWc9bm8KKworaWYgdGVzdCAieCR7UEtHX0NPTkZJRzo9bm9uZX0iICE9IHhub25lOyB0aGVuCisJZWNobyAiJGFzX21lOjcyOTY6IGNoZWNraW5nIHBrZy1jb25maWcgZm9yICRjZl9uY3Vjb25maWdfcm9vdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHBrZy1jb25maWcgZm9yICRjZl9uY3Vjb25maWdfcm9vdC4uLiAkRUNIT19DIiA+JjYKKwlpZiAiJFBLR19DT05GSUciIC0tZXhpc3RzICRjZl9uY3Vjb25maWdfcm9vdCA7IHRoZW4KKwkJZWNobyAiJGFzX21lOjcyOTk6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisKKwkJZWNobyAiJGFzX21lOjczMDI6IGNoZWNraW5nIGlmIHRoZSAkY2ZfbmN1Y29uZmlnX3Jvb3QgcGFja2FnZSBmaWxlcyB3b3JrIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhlICRjZl9uY3Vjb25maWdfcm9vdCBwYWNrYWdlIGZpbGVzIHdvcmsuLi4gJEVDSE9fQyIgPiY2CisJCWNmX2hhdmVfbmN1Y29uZmlnPXVua25vd24KKworCQljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFBLR19DT05GSUcgLS1jZmxhZ3MgJGNmX25jdWNvbmZpZ19yb290YCIKKworY2ZfYWRkX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgJGNmX25jdWNvbmZpZ19yb290YCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzMyOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzM0MDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzM0MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjczNDY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MzQ5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgY2ZfaGF2ZV9uY3Vjb25maWc9bWF5YmUKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3MzU1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisJCQkJaW50IG1haW4odm9pZCkKKwkJCQl7IGNoYXIgKnh4ID0gY3Vyc2VzX3ZlcnNpb24oKTsgcmV0dXJuICh4eCA9PSAwKTsgfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjczNjI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjczNjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjczNjc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MzcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfaGF2ZV9uY3Vjb25maWc9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX25jdWNvbmZpZz1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX25jdWNvbmZpZz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJZWNobyAiJGFzX21lOjczODc6IHJlc3VsdDogJGNmX2hhdmVfbmN1Y29uZmlnIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9oYXZlX25jdWNvbmZpZyIgPiY2CisJCXRlc3QgIiRjZl9oYXZlX25jdWNvbmZpZyIgPSBtYXliZSAmJiBjZl9oYXZlX25jdWNvbmZpZz15ZXMKKwkJaWYgdGVzdCAiJGNmX2hhdmVfbmN1Y29uZmlnIiAhPSAieWVzIgorCQl0aGVuCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKKwkJZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTIDEKK0VPRgorCisJCQlOQ1VSU0VTX0NPTkZJR19QS0c9JGNmX25jdWNvbmZpZ19yb290CisJCWZpCisKKwllbHNlCisJCWVjaG8gIiRhc19tZTo3NDA1OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKKwlmaQorZWxzZQorCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCitmaQorCitpZiB0ZXN0ICJ4JGNmX2hhdmVfbmN1Y29uZmlnIiA9ICJ4bm8iOyB0aGVuCisJZWNobyAiTG9va2luZyBmb3IgJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnIgorCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9NS1jb25maWcKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjc0MjE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N2X3Byb2dfTkNVUlNFU19DT05GSUc9IiROQ1VSU0VTX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX05DVVJTRVNfQ09ORklHPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTo3NDM2OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorTkNVUlNFU19DT05GSUc9JGFjX2N2X3Byb2dfTkNVUlNFU19DT05GSUcKK2lmIHRlc3QgLW4gIiROQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjc0NDQ6IHJlc3VsdDogJE5DVVJTRVNfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo3NDQ3OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgICB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N0X05DVVJTRVNfQ09ORklHPSROQ1VSU0VTX0NPTkZJRworICBmb3IgYWNfcHJvZyBpbiAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTUtY29uZmlnCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjc0NjA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUc9IiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTo3NDc1OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorYWNfY3RfTkNVUlNFU19DT05GSUc9JGFjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUcKK2lmIHRlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjc0ODM6IHJlc3VsdDogJGFjX2N0X05DVVJTRVNfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo3NDg2OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIiB8fCBhY19jdF9OQ1VSU0VTX0NPTkZJRz0ibm9uZSIKKworICBOQ1VSU0VTX0NPTkZJRz0kYWNfY3RfTkNVUlNFU19DT05GSUcKK2ZpCisKKwlpZiB0ZXN0ICIkTkNVUlNFU19DT05GSUciICE9IG5vbmUgOyB0aGVuCisKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJE5DVVJTRVNfQ09ORklHIC0tY2ZsYWdzYCIKKworY2ZfYWRkX2xpYnM9ImAkTkNVUlNFU19DT05GSUcgLS1saWJzYCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJCSMgZXZlbiB3aXRoIGNvbmZpZyBzY3JpcHQsIHNvbWUgcGFja2FnZXMgdXNlIG5vLW92ZXJyaWRlIGZvciBjdXJzZXMuaAorCitlY2hvICIkYXNfbWU6NzUxOTogY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjZl9jdl9uY3Vyc2VzX2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIFwKKwluY3Vyc2VzLmggbmN1cnNlcy9uY3Vyc2VzLmggXAorCWN1cnNlcy5oIG5jdXJzZXMvY3Vyc2VzLmgKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc1MzEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfaGVhZGVyfT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyB0Z290bygiPyIsIDAsMCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzU0MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzU0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3NTQ5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzU1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9oZWFkZXI7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKKworZmkKK2VjaG8gIiRhc19tZTo3NTYzOiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID0gbm9uZSA7IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjc1Njc6IGVycm9yOiBObyBjdXJzZXMgaGVhZGVyLWZpbGVzIGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKyMgY2hlYXQsIHRvIGdldCB0aGUgcmlnaHQgI2RlZmluZSdzIGZvciBIQVZFX05DVVJTRVNfSCwgZXRjLgorCitmb3IgYWNfaGVhZGVyIGluICRjZl9jdl9uY3Vyc2VzX2hlYWRlcgorZG8KK2FzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjc1Nzc6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzU4MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGFjX2hlYWRlcj4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzU4NzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6NzU5MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NzYxMjogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworY2ZfbmN1bGliX1JPT1Q9YGVjaG8gIkhBVkVfTElCJGNmX25jdWNvbmZpZ19yb290IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9uY3VsaWJfUk9PVCAxCitFT0YKKworCQkJCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gJE5DVVJTRVNfQ09ORklHIC0tdmVyc2lvbmAKKworCWVsc2UKKworY2ZfbmN1aGRyX3Jvb3Q9bmN1cnNlcworCit0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2RpciIgJiYgXAordGVzdCAiJGNmX2N2X2N1cnNlc19kaXIiICE9ICJubyIgJiYgeyBcCisKK2lmIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyL2luY2x1ZGUvJGNmX25jdWhkcl9yb290IiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc2NjUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3Njc3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NjgwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjc2ODM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3Njg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX2luY2Rpcj15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NzcwMzogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIC4uLiIgMT4mNQorCisJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCisKK30KKworZWNobyAiJGFzX21lOjc3MjI6IGNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaGVhZGVyIGluIGluY2x1ZGUtcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaGVhZGVyIGluIGluY2x1ZGUtcGF0aC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc19oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljZl9oZWFkZXJfbGlzdD0iJGNmX25jdWhkcl9yb290L2N1cnNlcy5oICRjZl9uY3VoZHJfcm9vdC9uY3Vyc2VzLmgiCisJKCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlcyB8fCB0ZXN0ICIkY2ZfbmN1aGRyX3Jvb3QiID0gbmN1cnNlc3cgKSAmJiBjZl9oZWFkZXJfbGlzdD0iJGNmX2hlYWRlcl9saXN0IGN1cnNlcy5oIG5jdXJzZXMuaCIKKwlmb3IgY2ZfaGVhZGVyIGluICRjZl9oZWFkZXJfbGlzdAorCWRvCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc3MzQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Nzc1ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Nzc2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3NzY0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Nzc2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaD0kY2ZfaGVhZGVyCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmN1cnNlc19oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6Nzc4MjogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2giID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oIiAhPSBubyA7IHRoZW4KKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfY3ZfbmN1cnNlc19oCitlbHNlCisKK2VjaG8gIiRhc19tZTo3Nzg5OiBjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGluY2x1ZGUtcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaW5jbHVkZS1wYXRoLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2gyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobworCitjZl9zZWFyY2g9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCit0ZXN0ICJ4JGNmX2hlYWRlcl9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9oZWFkZXJfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9oZWFkZXJfcGF0aCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCisJCQljZl9oZWFkZXJfcGF0aF9saXN0PSIkY2ZfaGVhZGVyX3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKKyMgYWRkIHRoZSB2YXJpYXRpb25zIGZvciB0aGUgcGFja2FnZSB3ZSBhcmUgbG9va2luZyBmb3IKKworY2Zfc2VhcmNoPQorCit0ZXN0ICJ4JHByZWZpeCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkcHJlZml4IiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCitkb25lCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkb2xkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIgICAgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK2NmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGhfbGlzdCIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvIHNlYXJjaCBwYXRoICRjZl9zZWFyY2gKKwljZl9zYXZlMl9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWZvciBjZl9pbmNkaXIgaW4gJGNmX3NlYXJjaAorCWRvCisKK2lmIHRlc3QgLW4gIiRjZl9pbmNkaXIiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3OTA3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzkxOTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzkyMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3OTI1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzkyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojc5NDU6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCisJCWZvciBjZl9oZWFkZXIgaW4gXAorCQkJbmN1cnNlcy5oIFwKKwkJCWN1cnNlcy5oCisJCWRvCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc5NjggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Nzk5MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Nzk5NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3OTk4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODAwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfaDI9JGNmX2hlYWRlcgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25jdXJzZXNfaDI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworCQkJaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vIDsgdGhlbgorCQkJCWNmX2N2X25jdXJzZXNfaDI9JGNmX2luY2Rpci8kY2ZfaGVhZGVyCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gJGFjX24gIgkuLi4gZm91bmQgJGFjX2MiIDE+JjYKKwkJCQlicmVhaworCQkJZmkKKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RlZCAkY2ZfaW5jZGlyLyRjZl9oZWFkZXIiIDE+JjYKKwkJZG9uZQorCQlDUFBGTEFHUz0iJGNmX3NhdmUyX0NQUEZMQUdTIgorCQl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiID0gbm8gJiYgeyB7IGVjaG8gIiRhc19tZTo4MDIyOiBlcnJvcjogbm90IGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG5vdCBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitmaQorZWNobyAiJGFzX21lOjgwMjc6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaDIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfaDIiID4mNgorCisJY2ZfMXN0X2luY2Rpcj1gZWNobyAkY2ZfY3ZfbmN1cnNlc19oMiB8IHNlZCAtZSAncyUvW14vXSokJSUnYAorCWNmX2N2X25jdXJzZXNfaGVhZGVyPWBiYXNlbmFtZSAkY2ZfY3ZfbmN1cnNlc19oMmAKKwlpZiB0ZXN0IGBiYXNlbmFtZSAkY2ZfMXN0X2luY2RpcmAgPSAkY2ZfbmN1aGRyX3Jvb3QgOyB0aGVuCisJCWNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9uY3VoZHJfcm9vdC8kY2ZfY3ZfbmN1cnNlc19oZWFkZXIKKwlmaQorCitpZiB0ZXN0IC1uICIkY2ZfMXN0X2luY2RpciIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl8xc3RfaW5jZGlyCisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4MDYwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODA3MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODA3NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4MDc4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODA4MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjgwOTg6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCitmaQorCisjIFNldCBkZWZpbml0aW9ucyB0byBhbGxvdyBpZmRlZidpbmcgZm9yIG5jdXJzZXMuaAorCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKCpuY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIgaW4KKyhuY3Vyc2VzL2N1cnNlcy5ofG5jdXJzZXMvbmN1cnNlcy5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy9jdXJzZXMuaHxuY3Vyc2Vzdy9uY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU1dfTkNVUlNFU19IIDEKK0VPRgorCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjgxNDY6IGNoZWNraW5nIGZvciB0ZXJtaW5mbyBoZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGVybWluZm8gaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl90ZXJtX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXNlICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXJ9IGluCisoKi9uY3Vyc2VzLmh8Ki9uY3Vyc2Vzdy5oKQorCWNmX3Rlcm1faGVhZGVyPWBlY2hvICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiIHwgc2VkIC1lICdzJW5jdXJzZXNbXi5dKlwuaCQldGVybS5oJSdgCisJOzsKKygqKQorCWNmX3Rlcm1faGVhZGVyPXRlcm0uaAorCTs7Citlc2FjCisKK2ZvciBjZl90ZXN0IGluICRjZl90ZXJtX2hlYWRlciAibmN1cnNlcy90ZXJtLmgiICJuY3Vyc2Vzdy90ZXJtLmgiCitkbworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4MTY0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwkY2ZfdGVzdD4KKworaW50CittYWluICgpCit7CitpbnQgeCA9IGF1dG9fbGVmdF9tYXJnaW4KKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODE3OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODE4MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4MTg1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODE4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwljZl9jdl90ZXJtX2hlYWRlcj0iJGNmX3Rlc3QiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWNmX2N2X3Rlcm1faGVhZGVyPXVua25vd24KKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCXRlc3QgIiRjZl9jdl90ZXJtX2hlYWRlciIgIT0gdW5rbm93biAmJiBicmVhaworZG9uZQorCitmaQorZWNobyAiJGFzX21lOjgyMDQ6IHJlc3VsdDogJGNmX2N2X3Rlcm1faGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl90ZXJtX2hlYWRlciIgPiY2CisKKyMgU2V0IGRlZmluaXRpb25zIHRvIGFsbG93IGlmZGVmJ2luZyB0byBhY2NvbW1vZGF0ZSBzdWJkaXJlY3RvcmllcworCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKCp0ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVEVSTV9IIDEKK0VPRgorCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKyhuY3Vyc2VzL3Rlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX1RFUk1fSCAxCitFT0YKKworCTs7CisobmN1cnNlc3cvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNXX1RFUk1fSCAxCitFT0YKKworCTs7Citlc2FjCisKKyMgc29tZSBhcHBsaWNhdGlvbnMgbmVlZCB0aGlzLCBidXQgc2hvdWxkIGNoZWNrIGZvciBOQ1VSU0VTX1ZFUlNJT04KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworZWNobyAiJGFzX21lOjgyNDI6IGNoZWNraW5nIGZvciBuY3Vyc2VzIHZlcnNpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyB2ZXJzaW9uLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1ubworCWNmX3RlbXBmaWxlPW91dCQkCisJcm0gLWYgJGNmX3RlbXBmaWxlCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKworCSMgVGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBwcmVwcm9jZXNzb3Igc3BsaXRzIHRoZSBsaW5lIGFmdGVyIHRoZQorCSMgQXV0b2NvbmYgdG9rZW4uICBUaGUgJ3VucHJvdG8nIHByb2dyYW0gZG9lcyB0aGF0LgorCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjdW5kZWYgQXV0b2NvbmYKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KK0F1dG9jb25mIE5DVVJTRVNfVkVSU0lPTgorI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorQXV0b2NvbmYgIm9sZCIKKyNlbmRpZgorOworI2VuZGlmCitFT0YKKwljZl90cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCAyPiY1IHwgZ3JlcCAnXkF1dG9jb25mICcgPmNvbmZ0ZXN0Lm91dCIKKwl7IChldmFsIGVjaG8gIiRhc19tZTo4MjY4OiBcIiRjZl90cnlcIiIpID4mNQorICAoZXZhbCAkY2ZfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODI3MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9CisJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCWNmX291dD1gY2F0IGNvbmZ0ZXN0Lm91dCB8IHNlZCAtZSAncyVeQXV0b2NvbmYgJSUnIC1lICdzJV5bXiJdKiIlJScgLWUgJ3MlIi4qJSUnYAorCQl0ZXN0IC1uICIkY2Zfb3V0IiAmJiBjZl9jdl9uY3Vyc2VzX3ZlcnNpb249IiRjZl9vdXQiCisJCXJtIC1mIGNvbmZ0ZXN0Lm91dAorCWZpCisKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4MjgxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCUZJTEUgKmZwID0gZm9wZW4oIiRjZl90ZW1wZmlsZSIsICJ3Iik7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjIGlmZGVmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSAorCWZwcmludGYoZnAsICIlcy4lZFxuIiwgTkNVUlNFU19WRVJTSU9OLCBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpOworIyBlbHNlCisJZnByaW50ZihmcCwgIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworIyBlbmRpZgorI2Vsc2UKKyMgaWZkZWYgX19OQ1VSU0VTX0gKKwlmcHJpbnRmKGZwLCAib2xkXG4iKTsKKyMgZWxzZQorCW1ha2UgYW4gZXJyb3IKKyMgZW5kaWYKKyNlbmRpZgorCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODMwNjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODMwOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODMxMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgzMTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPWBjYXQgJGNmX3RlbXBmaWxlYAorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCXJtIC1mICRjZl90ZW1wZmlsZQorCitmaQorZWNobyAiJGFzX21lOjgzMjg6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA+JjYKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID0gbm8gfHwKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2NmX25jdWxpYl9yb290PW5jdXJzZXMKKwkjIFRoaXMgd29ya3MsIGV4Y2VwdCBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBmaW5kIGdwbSwgYnV0CisJIyBuY3Vyc2VzIGlzIGluIGEgbm9uc3RhbmRhcmQgbG9jYXRpb24gdmlhICRMSUJTLCBhbmQgd2UgcmVhbGx5IHdhbnQKKwkjIHRvIGxpbmsgZ3BtLgorY2ZfbmN1cnNlc19MSUJTPSIiCitjZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorZWNobyAiJGFzX21lOjgzNDE6IGNoZWNraW5nIGZvciBHcG1fT3BlbiBpbiAtbGdwbSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBHcG1fT3BlbiBpbiAtbGdwbS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2dwbV9HcG1fT3BlbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGdwbSAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDgzNDkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIEdwbV9PcGVuICgpOworaW50CittYWluICgpCit7CitHcG1fT3BlbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgzNjg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgzNzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4Mzc0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODM3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9ncG1fR3BtX09wZW49eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ncG1fR3BtX09wZW49bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjgzODg6IHJlc3VsdDogJGFjX2N2X2xpYl9ncG1fR3BtX09wZW4iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ncG1fR3BtX09wZW4iID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiA9IHllczsgdGhlbgorICBlY2hvICIkYXNfbWU6ODM5MTogY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWxncG0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbGdwbS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2dwbV9pbml0c2NyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZ3BtICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODM5OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgaW5pdHNjciAoKTsKK2ludAorbWFpbiAoKQoreworaW5pdHNjciAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjg0MTg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg0MjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4NDI0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODQyNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9ncG1faW5pdHNjcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2dwbV9pbml0c2NyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo4NDM4OiByZXN1bHQ6ICRhY19jdl9saWJfZ3BtX2luaXRzY3IiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ncG1faW5pdHNjciIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZ3BtX2luaXRzY3IgPSB5ZXM7IHRoZW4KKyAgTElCUz0iJGNmX25jdXJzZXNfU0FWRSIKK2Vsc2UKKyAgY2ZfbmN1cnNlc19MSUJTPSItbGdwbSIKK2ZpCisKK2ZpCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhmcmVlYnNkKikKKwkjIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgaWYgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgYW4gb2Jzb2xldGUKKwkjIHZlcnNpb24gb2YgbmN1cnNlcyAoYnV0IGl0IHNob3VsZCBkbyBubyBoYXJtLCBzaW5jZSBpdCdzIHN0YXRpYykuCisJaWYgdGVzdCAiJGNmX25jdWxpYl9yb290IiA9IG5jdXJzZXMgOyB0aGVuCisJCWVjaG8gIiRhc19tZTo4NDUzOiBjaGVja2luZyBmb3IgdGdvdG8gaW4gLWxteXRpbmZvIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHRnb3RvIGluIC1sbXl0aW5mby4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX215dGluZm9fdGdvdG8rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxteXRpbmZvICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODQ2MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgdGdvdG8gKCk7CitpbnQKK21haW4gKCkKK3sKK3Rnb3RvICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODQ4MDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODQ4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg0ODY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NDg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX215dGluZm9fdGdvdG89eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9teXRpbmZvX3Rnb3RvPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo4NTAwOiByZXN1bHQ6ICRhY19jdl9saWJfbXl0aW5mb190Z290byIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX215dGluZm9fdGdvdG8iID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX215dGluZm9fdGdvdG8gPSB5ZXM7IHRoZW4KKyAgY2ZfbmN1cnNlc19MSUJTPSItbG15dGluZm8gJGNmX25jdXJzZXNfTElCUyIKK2ZpCisKKwlmaQorCTs7Citlc2FjCisKK2NmX2FkZF9saWJzPSIkY2ZfbmN1cnNlc19MSUJTIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2lmICggdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIiICYmIHRlc3QgIiRjZl9jdl9jdXJzZXNfZGlyIiAhPSAibm8iICkKK3RoZW4KKworY2ZfYWRkX2xpYnM9Ii1sJGNmX25jdWxpYl9yb290IgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2Vsc2UKKworCWV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPW5vJworCWNmX2xpYmRpcj0iIgorCWVjaG8gIiRhc19tZTo4NTQ5OiBjaGVja2luZyBmb3IgaW5pdHNjciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2luaXRzY3Irc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4NTU1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGluaXRzY3IgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgaW5pdHNjciAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfaW5pdHNjcikgfHwgZGVmaW5lZCAoX19zdHViX19faW5pdHNjcikKK2Nob2tlIG1lCisjZWxzZQorZiA9IGluaXRzY3I7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODU4NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODU4OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg1OTI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NTk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19pbml0c2NyPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2luaXRzY3I9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjg2MDU6IHJlc3VsdDogJGFjX2N2X2Z1bmNfaW5pdHNjciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19pbml0c2NyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfaW5pdHNjciA9IHllczsgdGhlbgorICBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCitlbHNlCisKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkJZWNobyAiJGFzX21lOjg2MTI6IGNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sJGNmX25jdWxpYl9yb290IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWwkY2ZfbmN1bGliX3Jvb3QuLi4gJEVDSE9fQyIgPiY2CisJCUxJQlM9Ii1sJGNmX25jdWxpYl9yb290ICRMSUJTIgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg2MTYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4NjI4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NjMxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODYzNDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg2Mzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6ODYzOTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZWNobyAiJGFzX21lOjg2NDY6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCitjZl9zZWFyY2g9CitjZl9saWJyYXJ5X3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtMREZMQUdTfSR7TElCU30iIDsgdGhlbgorCWZvciBjZl9saWJyYXJ5X3BhdGggaW4gJExERkxBR1MgJExJQlMKKwlkbworCQljYXNlICRjZl9saWJyYXJ5X3BhdGggaW4KKwkJKC1MKikKKwkJCWNmX2xpYnJhcnlfcGF0aD1gZWNobyAiLiRjZl9saWJyYXJ5X3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvbGliJCwsJ2AKKwordGVzdCAieCRjZl9saWJyYXJ5X3BhdGgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJGNmX2xpYnJhcnlfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX2xpYnJhcnlfcGF0aCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290IgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCIKK30KKworCQkJY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiRjZl9saWJyYXJ5X3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKKwl0ZXN0IC1kICRwcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290IgorCXRlc3QgLWQgJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKK2RvbmUKKworY2Zfc2VhcmNoPSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKworCQkJZm9yIGNmX2xpYmRpciBpbiAkY2Zfc2VhcmNoCisJCQlkbworCQkJCWVjaG8gIiRhc19tZTo4NzE0OiBjaGVja2luZyBmb3IgLWwkY2ZfbmN1bGliX3Jvb3QgaW4gJGNmX2xpYmRpciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAtbCRjZl9uY3VsaWJfcm9vdCBpbiAkY2ZfbGliZGlyLi4uICRFQ0hPX0MiID4mNgorCQkJCUxJQlM9Ii1MJGNmX2xpYmRpciAtbCRjZl9uY3VsaWJfcm9vdCAkY2Zfc2F2ZV9MSUJTIgorCQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODcxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjg3MzA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg3MzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4NzM2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODczOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGVjaG8gIiRhc19tZTo4NzQxOiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCQkJIAkJIGV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPXllcycKKwkJCQkJIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo4NzQ4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJCQkJIExJQlM9IiRjZl9zYXZlX0xJQlMiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJZG9uZQorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorCitldmFsICdjZl9mb3VuZF9saWJyYXJ5PSRjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290CisKK2lmIHRlc3QgJGNmX2ZvdW5kX2xpYnJhcnkgPSBubyA7IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjg3NjM6IGVycm9yOiBDYW5ub3QgbGluayAkY2ZfbmN1bGliX3Jvb3QgbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayAkY2ZfbmN1bGliX3Jvb3QgbGlicmFyeSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworZmkKKworaWYgdGVzdCAtbiAiJGNmX25jdXJzZXNfTElCUyIgOyB0aGVuCisJZWNobyAiJGFzX21lOjg3NzE6IGNoZWNraW5nIGlmIHdlIGNhbiBsaW5rICRjZl9uY3VsaWJfcm9vdCB3aXRob3V0ICRjZl9uY3Vyc2VzX0xJQlMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBjYW4gbGluayAkY2ZfbmN1bGliX3Jvb3Qgd2l0aG91dCAkY2ZfbmN1cnNlc19MSUJTLi4uICRFQ0hPX0MiID4mNgorCWNmX25jdXJzZXNfU0FWRT0iJExJQlMiCisJZm9yIHAgaW4gJGNmX25jdXJzZXNfTElCUyA7IGRvCisJCXE9YGVjaG8gJExJQlMgfCBzZWQgLWUgInMlJHAgJSUiIC1lICJzJSRwJCUlImAKKwkJaWYgdGVzdCAiJHEiICE9ICIkTElCUyIgOyB0aGVuCisJCQlMSUJTPSIkcSIKKwkJZmkKKwlkb25lCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4NzgxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgbW91c2VtYXNrKDAsMCk7IHRnb3RvKChjaGFyICopMCwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4NzkzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4Nzk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODc5OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg4MDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6ODgwNDogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZWNobyAiJGFzX21lOjg4MDk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCQkgTElCUz0iJGNmX25jdXJzZXNfU0FWRSIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCitjZl9uY3VsaWJfUk9PVD1gZWNobyAiSEFWRV9MSUIkY2ZfbmN1bGliX3Jvb3QiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9uY3VsaWJfUk9PVCAxCitFT0YKKworCWZpCitlbHNlCisJTkNVUlNFU19DT05GSUc9bm9uZQorZmkKKworZmkKKworaWYgdGVzdCAiJE5DVVJTRVNfQ09ORklHX1BLRyIgIT0gbm9uZSA7IHRoZW4KKwljZl92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gJE5DVVJTRVNfQ09ORklHX1BLRyAyPi9kZXYvbnVsbGAKKworCU5DVVJTRVNfTUFKT1I9YGVjaG8gIiRjZl92ZXJzaW9uIiB8IHNlZCAtZSAncy9cLi4qLy8nYAorCU5DVVJTRVNfTUlOT1I9YGVjaG8gIiRjZl92ZXJzaW9uIiB8IHNlZCAtZSAncy9eWzAtOV1bMC05XSpcLi8vJyAtZSAncy9cLi4qLy8nYAorCU5DVVJTRVNfUEFUQ0g9YGVjaG8gIiRjZl92ZXJzaW9uIiB8IHNlZCAtZSAncy9eWzAtOV1bMC05XSpcLlswLTldWzAtOV0qXC4vLydgCisKKwljZl9jdl9hYmlfdmVyc2lvbj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hYmlfdmVyc2lvbiAkTkNVUlNFU19DT05GSUdfUEtHIDI+L2Rldi9udWxsYAorCWlmIHRlc3QgLXogIiRjZl9jdl9hYmlfdmVyc2lvbiIKKwl0aGVuCisJCWNmX2N2X2FiaV92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1ham9yX3ZlcnNpb24gJE5DVVJTRVNfQ09ORklHX1BLRyAyPi9kZXYvbnVsbGAKKwlmaQorCitlbGlmIHRlc3QgIiROQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworCWNmX3ZlcnNpb249YCROQ1VSU0VTX0NPTkZJRyAtLXZlcnNpb24gMj4vZGV2L251bGxgCisKKwlOQ1VSU0VTX01BSk9SPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXC4uKi8vJ2AKKwlOQ1VSU0VTX01JTk9SPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXlswLTldWzAtOV0qXC4vLycgLWUgJ3MvXC4uKi8vJ2AKKwlOQ1VSU0VTX1BBVENIPWBlY2hvICIkY2ZfdmVyc2lvbiIgfCBzZWQgLWUgJ3MvXlswLTldWzAtOV0qXC5bMC05XVswLTldKlwuLy8nYAorCisJIyBBQkkgdmVyc2lvbiBpcyBub3QgYXZhaWxhYmxlIGZyb20gaGVhZGVycworCWNmX2N2X2FiaV92ZXJzaW9uPWAkTkNVUlNFU19DT05GSUcgLS1hYmktdmVyc2lvbiAyPi9kZXYvbnVsbGAKKworZWxzZQorCisJZm9yIGNmX25hbWUgaW4gTUFKT1IgTUlOT1IgUEFUQ0gKKwlkbworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgorCSNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisJQVVUT0NPTkZfJGNmX25hbWUgTkNVUlNFU19WRVJTSU9OXyRjZl9uYW1lCitDRl9FT0YKKwkJY2ZfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgMj4mNSB8IGZncmVwIEFVVE9DT05GXyRjZl9uYW1lID5jb25mdGVzdC5vdXQiCisJCXsgKGV2YWwgZWNobyAiJGFzX21lOjg4NjI6IFwiJGNmX3RyeVwiIikgPiY1CisgIChldmFsICRjZl90cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4ODY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KKwkJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCQljZl9yZXN1bHQ9YGNhdCBjb25mdGVzdC5vdXQgfCBzZWQgLWUgInMvXi4qQVVUT0NPTkZfJGNmX25hbWVbIAldWyAJXSovLyJgCisJCQlldmFsIE5DVVJTRVNfJGNmX25hbWU9XCIkY2ZfcmVzdWx0XCIKKwkJCSMgY2F0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSMgY2F0IGNvbmZ0ZXN0Lm91dAorCQlmaQorCWRvbmUKKworCWNmX2N2X2FiaV92ZXJzaW9uPSR7TkNVUlNFU19NQUpPUn0KKworZmkKKworY2ZfY3ZfcmVsX3ZlcnNpb249JHtOQ1VSU0VTX01BSk9SfS4ke05DVVJTRVNfTUlOT1J9CisKK2NmX2N2X3RpbWVzdGFtcD1gZGF0ZWAKKworZWNobyAiJGFzX21lOjg4ODM6IHJlc3VsdDogQ29uZmlndXJpbmcgTkNVUlNFUyAkY2ZfY3ZfcmVsX3ZlcnNpb24gQUJJICRjZl9jdl9hYmlfdmVyc2lvbiAoJGNmX2N2X3RpbWVzdGFtcCkiID4mNQorZWNobyAiJHtFQ0hPX1R9Q29uZmlndXJpbmcgTkNVUlNFUyAkY2ZfY3ZfcmVsX3ZlcnNpb24gQUJJICRjZl9jdl9hYmlfdmVyc2lvbiAoJGNmX2N2X3RpbWVzdGFtcCkiID4mNgorCitlY2hvICIkYXNfbWU6ODg4NjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gaGF2ZSBhIGxpYnJhcnktcHJlZml4IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gaGF2ZSBhIGxpYnJhcnktcHJlZml4Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYi1wcmVmaXggb3IgLS13aXRob3V0LWxpYi1wcmVmaXggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2xpYl9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfbGliX3ByZWZpeCIKKyAgd2l0aF9saWJfcHJlZml4PSR3aXRodmFsCitlbHNlCisgIHdpdGhfbGliX3ByZWZpeD1hdXRvCitmaTsKK2VjaG8gIiRhc19tZTo4ODk2OiByZXN1bHQ6ICR3aXRoX2xpYl9wcmVmaXgiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfbGliX3ByZWZpeCIgPiY2CisKK2lmIHRlc3QgJHdpdGhfbGliX3ByZWZpeCA9IGF1dG8KK3RoZW4KKworCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKE9TLzIqfG9zMiopCisJCUxJQl9QUkVGSVg9JycKKwkJOzsKKwkoKikJTElCX1BSRUZJWD0nbGliJworCQk7OworCWVzYWMKK2NmX3ByZWZpeD0kTElCX1BSRUZJWAorCitlbGlmIHRlc3QgJHdpdGhfbGliX3ByZWZpeCA9IG5vCit0aGVuCisJTElCX1BSRUZJWD0KK2Vsc2UKKwlMSUJfUFJFRklYPSR3aXRoX2xpYl9wcmVmaXgKK2ZpCisKK0xJQl9TVUZGSVg9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaWYgdGVzdCBYIiRDQ19HX09QVCIgPSBYIiIgOyB0aGVuCisJQ0NfR19PUFQ9Jy1nJworCXRlc3QgLW4gIiRHQ0MiICYmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19nfSIgIT0geWVzICYmIENDX0dfT1BUPScnCitmaQorCitlY2hvICIkYXNfbWU6ODkyNzogY2hlY2tpbmcgZm9yIGRlZmF1bHQgbG9hZGVyIGZsYWdzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgbG9hZGVyIGZsYWdzLi4uICRFQ0hPX0MiID4mNgorY2FzZSAkREZUX0xXUl9NT0RFTCBpbgorKG5vcm1hbCkgIExEX01PREVMPScnICAgOzsKKyhkZWJ1ZykgICBMRF9NT0RFTD0kQ0NfR19PUFQgOzsKKyhwcm9maWxlKSBMRF9NT0RFTD0nLXBnJzs7Cisoc2hhcmVkKSAgTERfTU9ERUw9JycgICA7OworZXNhYworZWNobyAiJGFzX21lOjg5MzU6IHJlc3VsdDogJExEX01PREVMIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRMRF9NT0RFTCIgPiY2CisKK0xEX1JQQVRIX09QVD0KK2VjaG8gIiRhc19tZTo4OTM5OiBjaGVja2luZyBmb3IgYW4gcnBhdGggb3B0aW9uIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFuIHJwYXRoIG9wdGlvbi4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisoaXJpeCopCisJaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwkJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwllbHNlCisJCUxEX1JQQVRIX09QVD0iLXJwYXRoICIKKwlmaQorCTs7CisobGludXgqfGdudSp8aypic2QqLWdudSkKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7Cisob3BlbmJzZFsyLTldLip8bWlyYnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7CisoZHJhZ29uZmx5KnxmcmVlYnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhuZXRic2QqKQorCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJOzsKKyhvc2YqfG1scysqKQorCUxEX1JQQVRIX09QVD0iLXJwYXRoICIKKwk7OworKHNvbGFyaXMyKikKKwlMRF9SUEFUSF9PUFQ9Ii1SIgorCTs7CisoKikKKwk7OworZXNhYworZWNobyAiJGFzX21lOjg5NzA6IHJlc3VsdDogJExEX1JQQVRIX09QVCIgPiY1CitlY2hvICIke0VDSE9fVH0kTERfUlBBVEhfT1BUIiA+JjYKKworY2FzZSAieCRMRF9SUEFUSF9PUFQiIGluCisoeC1SKikKKwllY2hvICIkYXNfbWU6ODk3NTogY2hlY2tpbmcgaWYgd2UgbmVlZCBhIHNwYWNlIGFmdGVyIHJwYXRoIG9wdGlvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIG5lZWQgYSBzcGFjZSBhZnRlciBycGF0aCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2CisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworY2ZfYWRkX2xpYnM9IiR7TERfUlBBVEhfT1BUfSRsaWJkaXIiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODk5NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5MDA4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDExOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTAxNDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkwMTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9ycGF0aF9zcGFjZT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9ycGF0aF9zcGFjZT15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJTElCUz0iJGNmX3NhdmVfTElCUyIKKwllY2hvICIkYXNfbWU6OTAyNzogcmVzdWx0OiAkY2ZfcnBhdGhfc3BhY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3JwYXRoX3NwYWNlIiA+JjYKKwl0ZXN0ICIkY2ZfcnBhdGhfc3BhY2UiID0geWVzICYmIExEX1JQQVRIX09QVD0iJExEX1JQQVRIX09QVCAiCisJOzsKK2VzYWMKKworCVJNX1NIQVJFRF9PUFRTPQorCUxPQ0FMX0xERkxBR1M9CisJTE9DQUxfTERGTEFHUzI9CisJTERfU0hBUkVEX09QVFM9CisJSU5TVEFMTF9MSUI9Ii1tIDY0NCIKKwk6ICR7cmVsX2J1aWxkZGlyOj0ufQorCisJc2hsaWJkaXI9JGxpYmRpcgorCisJTUFLRV9ETExTPSIjIgorCisJY2ZfY3ZfZG9fc3ltbGlua3M9bm8KKwljZl9sZF9ycGF0aF9vcHQ9CisJdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgJiYgY2ZfbGRfcnBhdGhfb3B0PSIkTERfUlBBVEhfT1BUIgorCisJZWNobyAiJGFzX21lOjkwNDg6IGNoZWNraW5nIGlmIHJlbGVhc2UvYWJpIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHNoYXJlZCBsaWJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgcmVsZWFzZS9hYmkgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3Igc2hhcmVkIGxpYnMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2hsaWItdmVyc2lvbiBvciAtLXdpdGhvdXQtc2hsaWItdmVyc2lvbiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc2hsaWJfdmVyc2lvbitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9zaGxpYl92ZXJzaW9uIgorICB0ZXN0IC16ICIkd2l0aHZhbCIgJiYgd2l0aHZhbD1hdXRvCisJY2FzZSAkd2l0aHZhbCBpbgorCSh5ZXMpCisJCWNmX2N2X3NobGliX3ZlcnNpb249YXV0bworCQk7OworCShyZWx8YWJpfGF1dG98bm8pCisJCWNmX2N2X3NobGliX3ZlcnNpb249JHdpdGh2YWwKKwkJOzsKKwkoKikKKwkJeyB7IGVjaG8gIiRhc19tZTo5MDYzOiBlcnJvcjogb3B0aW9uIHZhbHVlIG11c3QgYmUgb25lIG9mOiByZWwsIGFiaSwgYXV0byBvciBubyIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBvcHRpb24gdmFsdWUgbXVzdCBiZSBvbmUgb2Y6IHJlbCwgYWJpLCBhdXRvIG9yIG5vIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJCTs7CisJZXNhYworCitlbHNlCisgIGNmX2N2X3NobGliX3ZlcnNpb249YXV0bworZmk7CisJZWNobyAiJGFzX21lOjkwNzI6IHJlc3VsdDogJGNmX2N2X3NobGliX3ZlcnNpb24iID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3NobGliX3ZlcnNpb24iID4mNgorCisJY2ZfY3Zfcm1fc29fbG9jcz1ubworCWNmX3RyeV9jZmxhZ3M9CisKKwkjIFNvbWUgbGVzcy1jYXBhYmxlIHBvcnRzIG9mIGdjYyBzdXBwb3J0IG9ubHkgLWZwaWMKKwlDQ19TSEFSRURfT1BUUz0KKwlpZiB0ZXN0ICIkR0NDIiA9IHllcworCXRoZW4KKwkJZWNobyAiJGFzX21lOjkwODI6IGNoZWNraW5nIHdoaWNoICRDQyBvcHRpb24gdG8gdXNlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hpY2ggJENDIG9wdGlvbiB0byB1c2UuLi4gJEVDSE9fQyIgPiY2CisJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQlmb3IgQ0NfU0hBUkVEX09QVFMgaW4gLWZQSUMgLWZwaWMgJycKKwkJZG8KKwkJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRDQ19TSEFSRURfT1BUUyIKKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTA4OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworaW50IHggPSAxCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxMDE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkxMDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTEwNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkxMTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCWRvbmUKKwkJZWNobyAiJGFzX21lOjkxMTk6IHJlc3VsdDogJENDX1NIQVJFRF9PUFRTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDQ19TSEFSRURfT1BUUyIgPiY2CisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCWZpCisKKwljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PW5vCisKKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShhaXg0LjMtOSp8YWl4WzUtN10qKQorCQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1XbCwtYnJ0bCcKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1icnRsIC1XbCwtYmxpYnBhdGg6JHtSUEFUSF9MSVNUfTovdXNyL2xpYiAtbyAkQCcKKwkJZWxzZQorCQkJQ0NfU0hBUkVEX09QVFM9Jy1icnRsJworCQkJIyBhcyB3ZWxsIGFzICctcXBpYz1sYXJnZSAtRycgb3IgcGVyaGFwcyAiLWJNOlNSRSAtYm5vZW50cnkgLWJleHBhbGwiCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtRyAtV2wsLWJydGwgLVdsLC1ibGlicGF0aDoke1JQQVRIX0xJU1R9Oi91c3IvbGliIC1vICRAJworCQlmaQorCQk7OworCShiZW9zKikKKwkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1vICRAIC1YbGlua2VyIC1zb25hbWU9YGJhc2VuYW1lICRAYCAtbm9zdGFydCAtZSAwJworCQk7OworCShjeWd3aW4qKQorCQlDQ19TSEFSRURfT1BUUz0KKwkJTUtfU0hBUkVEX0xJQj0kU0hFTEwnICckcmVsX2J1aWxkZGlyJy9ta19zaGFyZWRfbGliLnNoICRAICR7Q0N9ICR7Q0ZMQUdTfScKKwkJUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyAkcmVsX2J1aWxkZGlyL21rX3NoYXJlZF9saWIuc2ggKi5kbGwuYSIKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1jeWdkbGwKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD1jeWdkbGwKKwkJc2hsaWJkaXI9JGJpbmRpcgorCQlNQUtFX0RMTFM9CisJCWNhdCA+bWtfc2hhcmVkX2xpYi5zaCA8PC1DRl9FT0YKKwkJIyEkU0hFTEwKKwkJU0hBUkVEX0xJQj1cJDEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlwkMSIgfCBzZWQgLWUgJ3MvY3lnL2xpYi8nIC1lICdzL1swLTldKlwuZGxsJC8uZGxsLmEvJ1xgCisJCXNoaWZ0CisJCWNhdCA8PC1FT0YKKwkJTGlua2luZyBzaGFyZWQgbGlicmFyeQorCQkqKiBTSEFSRURfTElCIFwkU0hBUkVEX0xJQgorCQkqKiBJTVBPUlRfTElCIFwkSU1QT1JUX0xJQgorRU9GCisJCWV4ZWMgXCQqIC1zaGFyZWQgLVdsLC0tb3V0LWltcGxpYj1cJHtJTVBPUlRfTElCfSAtV2wsLS1leHBvcnQtYWxsLXN5bWJvbHMgLW8gXCR7U0hBUkVEX0xJQn0KK0NGX0VPRgorCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoCisJCTs7CisJKG1zeXMqKQorCQlDQ19TSEFSRURfT1BUUz0KKwkJTUtfU0hBUkVEX0xJQj0kU0hFTEwnICckcmVsX2J1aWxkZGlyJy9ta19zaGFyZWRfbGliLnNoICRAICR7Q0N9ICR7Q0ZMQUdTfScKKwkJUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyAkcmVsX2J1aWxkZGlyL21rX3NoYXJlZF9saWIuc2ggKi5kbGwuYSIKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1tc3lzZGxsCisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9bXN5c2RsbAorCQlzaGxpYmRpcj0kYmluZGlyCisJCU1BS0VfRExMUz0KKwkJY2F0ID5ta19zaGFyZWRfbGliLnNoIDw8LUNGX0VPRgorCQkjISRTSEVMTAorCQlTSEFSRURfTElCPVwkMQorCQlJTVBPUlRfTElCPVxgZWNobyAiXCQxIiB8IHNlZCAtZSAncy9tc3lzLS9saWIvJyAtZSAncy9bMC05XSpcLmRsbCQvLmRsbC5hLydcYAorCQlzaGlmdAorCQljYXQgPDwtRU9GCisJCUxpbmtpbmcgc2hhcmVkIGxpYnJhcnkKKwkJKiogU0hBUkVEX0xJQiBcJFNIQVJFRF9MSUIKKwkJKiogSU1QT1JUX0xJQiBcJElNUE9SVF9MSUIKK0VPRgorCQlleGVjIFwkKiAtc2hhcmVkIC1XbCwtLW91dC1pbXBsaWI9XCR7SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFwke1NIQVJFRF9MSUJ9CitDRl9FT0YKKwkJY2htb2QgK3ggbWtfc2hhcmVkX2xpYi5zaAorCQk7OworCShkYXJ3aW4qKQorCQljZl90cnlfY2ZsYWdzPSJuby1jcHAtcHJlY29tcCIKKwkJQ0NfU0hBUkVEX09QVFM9Ii1keW5hbWljIgorCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAke2xpYmRpcn0vYGJhc2VuYW1lICRAYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICR7QUJJX1ZFUlNJT059IC1jdXJyZW50X3ZlcnNpb24gJHtBQklfVkVSU0lPTn0gLW8gJEAnCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hYmkKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD15ZXMKKwkJZWNobyAiJGFzX21lOjkxOTA6IGNoZWNraW5nIGlmIGxkIC1zZWFyY2hfcGF0aHNfZmlyc3Qgd29ya3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBsZCAtc2VhcmNoX3BhdGhzX2ZpcnN0IHdvcmtzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJCQljZl9zYXZlX0xERkxBR1M9JExERkxBR1MKKwkJCUxERkxBR1M9IiRMREZMQUdTIC1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0IgorCQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5MTk5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CitpbnQgaTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkyMTE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkyMTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5MjE3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTIyMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCQlMREZMQUdTPSRjZl9zYXZlX0xERkxBR1MKK2ZpCitlY2hvICIkYXNfbWU6OTIzMTogcmVzdWx0OiAkY2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0IiA+JjYKKwkJaWYgdGVzdCAkY2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3QgPSB5ZXM7IHRoZW4KKwkJCUxERkxBR1M9IiRMREZMQUdTIC1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0IgorCQlmaQorCQk7OworCShocHV4WzctOF0qKQorCQkjIEhQLVVYIDguMDcgbGQgbGFja3MgIitiIiBvcHRpb24gdXNlZCBmb3IgbGliZGlyIHNlYXJjaC1saXN0CisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9JytaJworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSAtYiAtbyAkQCcKKwkJSU5TVEFMTF9MSUI9Ii1tIDU1NSIKKwkJOzsKKwkoaHB1eCopCisJCSMgKHRlc3RlZCB3aXRoIGdjYyAyLjcuMiAtLSBJIGRvbid0IGhhdmUgYzg5KQorCQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQkJTERfU0hBUkVEX09QVFM9Jy1YbGlua2VyICtiIC1YbGlua2VyICR7bGliZGlyfScKKwkJZWxzZQorCQkJQ0NfU0hBUkVEX09QVFM9JytaJworCQkJTERfU0hBUkVEX09QVFM9Jy1XbCwrYiwke2xpYmRpcn0nCisJCWZpCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9ICtiICR7bGliZGlyfSAtYiAtbyAkQCcKKwkJIyBIUC1VWCBzaGFyZWQgbGlicmFyaWVzIG11c3QgYmUgZXhlY3V0YWJsZSwgYW5kIHNob3VsZCBiZQorCQkjIHJlYWRvbmx5IHRvIGV4cGxvaXQgYSBxdWlyayBpbiB0aGUgbWVtb3J5IG1hbmFnZXIuCisJCUlOU1RBTExfTElCPSItbSA1NTUiCisJCTs7CisJKGludGVyaXgqKQorCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgorCQkJY2Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JworCQllbHNlCisJCQljZl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgYCcKKwkJZmkKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1ycGF0aCwke1JQQVRIX0xJU1R9IC1XbCwtaCwnJGNmX3NoYXJlZF9zb25hbWUnIC1vICcKKwkJOzsKKwkoaXJpeCopCisJCWlmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCWZpCisJCSMgdGVzdGVkIHdpdGggSVJJWCA1LjIgYW5kICdjYycuCisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJworCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLXNoYXJlZCAtcmRhdGFfc2hhcmVkIC1zb25hbWUgYGJhc2VuYW1lICRAYCAtbyAkQCcKKwkJZWxzZQorCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLXNoYXJlZCAtV2wsLXNvbmFtZSxgYmFzZW5hbWUgJEBgIC1vICRAJworCQlmaQorCQljZl9jdl9ybV9zb19sb2NzPXllcworCQk7OworCShsaW51eCp8Z251KnxrKmJzZCotZ251KQorCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9IiR7TERfUlBBVEhfT1BUfVwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCisJCWZpCisJCWlmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCWZpCisKKwl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JworCWVsc2UKKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwlmaQorCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkQCcKKwkJOzsKKwkobWluZ3cqKQorCQljZl9jdl9zaGxpYl92ZXJzaW9uPW1pbmd3CisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9bWluZ3cKKwkJc2hsaWJkaXI9JGJpbmRpcgorCQlNQUtFX0RMTFM9CisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQkJRVhUUkFfTERGTEFHUz0iLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQlDQ19TSEFSRURfT1BUUz0KKwkJTUtfU0hBUkVEX0xJQj0kU0hFTEwnICckcmVsX2J1aWxkZGlyJy9ta19zaGFyZWRfbGliLnNoICRAICR7Q0N9ICR7Q0ZMQUdTfScKKwkJUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyAkcmVsX2J1aWxkZGlyL21rX3NoYXJlZF9saWIuc2ggKi5kbGwuYSIKKwkJY2F0ID5ta19zaGFyZWRfbGliLnNoIDw8LUNGX0VPRgorCQkjISRTSEVMTAorCQlTSEFSRURfTElCPVwkMQorCQlJTVBPUlRfTElCPVxgZWNobyAiXCQxIiB8IHNlZCAtZSAncy9bMC05XSpcLmRsbCQvLmRsbC5hLydcYAorCQlzaGlmdAorCQljYXQgPDwtRU9GCisJCUxpbmtpbmcgc2hhcmVkIGxpYnJhcnkKKwkJKiogU0hBUkVEX0xJQiBcJFNIQVJFRF9MSUIKKwkJKiogSU1QT1JUX0xJQiBcJElNUE9SVF9MSUIKK0VPRgorCQlleGVjIFwkKiAtc2hhcmVkIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCwtLW91dC1pbXBsaWI9XCR7SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFwke1NIQVJFRF9MSUJ9CitDRl9FT0YKKwkJY2htb2QgK3ggbWtfc2hhcmVkX2xpYi5zaAorCQk7OworCShvcGVuYnNkWzItOV0uKnxtaXJic2QqKQorCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9IiR7TERfUlBBVEhfT1BUfVwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCisJCWZpCisJCWlmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCWZpCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisKKwl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JworCWVsc2UKKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwlmaQorCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkQCcKKwkJOzsKKwkobnRvLXFueCp8b3BlbmJzZCp8ZnJlZWJzZFsxMl0uKikKKwkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLUJzaGFyZWFibGUgLW8gJEAnCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJOzsKKwkoZHJhZ29uZmx5KnxmcmVlYnNkKikKKwkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgJiYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRMT0NBTF9MREZMQUdTIgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCWZpCisKKwl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JworCWVsc2UKKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwlmaQorCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkQCcKKwkJOzsKKwkobmV0YnNkKikKKwkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgJiYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQkJRVhUUkFfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJEVYVFJBX0xERkxBR1MiCisJCQlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvOyB0aGVuCisJCQlpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5lbGZfc287IHRoZW4KKwkJCQljZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQorCQkJZWxzZQorCQkJCWNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJCQlmaQorCQkJZmkKKworCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAIC4ke1JFTF9WRVJTSU9OfWAuJHtBQklfVkVSU0lPTn0nCisJZWxzZQorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEBgJworCWZpCisKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScgLW8gJEAnCisJCWVsc2UKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1XbCwtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSAtbyAkQCcKKwkJZmkKKwkJOzsKKwkob3NmKnxtbHMrKikKKwkJIyB0ZXN0ZWQgd2l0aCBPU0YvMSBWMy4yIGFuZCAnY2MnCisJCSMgdGVzdGVkIHdpdGggT1NGLzEgVjMuMiBhbmQgZ2NjIDIuNi4zIChidXQgdGhlIGMrKyBkZW1vIGRpZG4ndAorCQkjIGxpbmsgd2l0aCBzaGFyZWQgbGlicykuCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1zZXRfdmVyc2lvbiAke1JFTF9WRVJTSU9OfToke0FCSV9WRVJTSU9OfSAtZXhwZWN0X3VucmVzb2x2ZWQgIioiIC1zaGFyZWQgLXNvbmFtZSBgYmFzZW5hbWUgJEBgJworCQljYXNlICRob3N0X29zIGluCisJCShvc2Y0KikKKwkJCU1LX1NIQVJFRF9MSUI9IiR7TUtfU0hBUkVEX0xJQn0gLW1zeW0iCisJCQk7OworCQllc2FjCisJCU1LX1NIQVJFRF9MSUI9IiR7TUtfU0hBUkVEX0xJQn0iJyAtbyAkQCcKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQljZl9jdl9ybV9zb19sb2NzPXllcworCQk7OworCShzY28zLjJ2NSopICAjIGFsc28gdXcyKiBhbmQgVVc3OiBob3BzIDEzLUFwci05OAorCQkjIHRlc3RlZCB3aXRoIG9zcjUuMC41CisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1iZWxmIC1LUElDJworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSAtZHkgLUcgLWggYGJhc2VuYW1lICRAIC4ke1JFTF9WRVJTSU9OfWAuJHtBQklfVkVSU0lPTn0gLW8gJEAnCisJCWlmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJIyBvbmx5IHdheSBpcyB0byBzZXQgTERfUlVOX1BBVEggYnV0IG5vIHN3aXRjaCBmb3IgaXQKKwkJCVJVTl9QQVRIPSRsaWJkaXIKKwkJZmkKKwkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCQlMSU5LX1BST0dTPSdMRF9SVU5fUEFUSD0ke2xpYmRpcn0nCisJCUxJTktfVEVTVFM9J1B3ZD1gcHdkYDtMRF9SVU5fUEFUSD1gZGlybmFtZSAkJHtQd2R9YC9saWInCisJCTs7CisJKHN1bm9zNCopCisJCSMgdGVzdGVkIHdpdGggU3VuT1MgNC4xLjEgYW5kIGdjYyAyLjcuMAorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPSctS1BJQycKKwkJZmkKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWFzc2VydCBwdXJlLXRleHQgLW8gJEAnCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJOzsKKwkoc29sYXJpczIqKQorCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDUuNS4xIChzb2xhcmlzIDIuNS4xKSBhbmQgZ2NjIDIuNy4yCisJCSMgdGVzdGVkIHdpdGggU3VuT1MgNS4xMCAoc29sYXJpcyAxMCkgYW5kIGdjYyAzLjQuMworCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9Ii1SIFwkKExPQ0FMX0xJQkRJUik6XCR7bGliZGlyfSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJZmkKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSItUiBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCisJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwllbHNlCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCisJZmkKKworCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQkJZm9yIGNmX3NoYXJlZF9vcHRzIGluIC14Y29kZT1waWMzMiAteGNvZGU9cGljMTMgLUtQSUMgLUtwaWMgLU8KKwkJCWRvCisJCQkJQ0ZMQUdTPSIkY2Zfc2hhcmVkX29wdHMgJGNmX3NhdmVfQ0ZMQUdTIgorCQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTQ1NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsb1xuIik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk0Njg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk0NzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTQ3NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk0Nzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQlkb25lCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkJCUNDX1NIQVJFRF9PUFRTPSRjZl9zaGFyZWRfb3B0cworCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLWR5IC1HIC1oICckY2ZfY3Zfc2hhcmVkX3NvbmFtZScgLW8gJEAnCisJCWVsc2UKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLWR5IC1HIC1oICckY2ZfY3Zfc2hhcmVkX3NvbmFtZScgLW8gJEAnCisJCWZpCisJCTs7CisJKHN5c3Y1dXc3Knx1bml4X3N2KikKKwkJIyB0ZXN0ZWQgd2l0aCBVbml4V2FyZSA3LjEuMCAoZ2NjIDIuOTUuMiBhbmQgY2MpCisJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSAtZCB5IC1HIC1vICRAJworCQk7OworCSgqKQorCQlDQ19TSEFSRURfT1BUUz0ndW5rbm93bicKKwkJTUtfU0hBUkVEX0xJQj0nZWNobyB1bmtub3duJworCQk7OworCWVzYWMKKworCSMgVGhpcyB3b3JrcyBpZiB0aGUgbGFzdCB0b2tlbnMgaW4gJE1LX1NIQVJFRF9MSUIgYXJlIHRoZSAtbyB0YXJnZXQuCisJY2FzZSAiJGNmX2N2X3NobGliX3ZlcnNpb24iIGluCisJKHJlbHxhYmkpCisJCWNhc2UgIiRNS19TSEFSRURfTElCIiBpbgorCQkoKictbyAkQCcpCisJCQl0ZXN0ICIkY2ZfY3ZfZG9fc3ltbGlua3MiID0gbm8gJiYgY2ZfY3ZfZG9fc3ltbGlua3M9eWVzCisJCQk7OworCQkoKikKKwkJCXsgZWNobyAiJGFzX21lOjk1MTQ6IFdBUk5JTkc6IGlnbm9yZWQgLS13aXRoLXNobGliLXZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpZ25vcmVkIC0td2l0aC1zaGxpYi12ZXJzaW9uIiA+JjI7fQorCQkJOzsKKwkJZXNhYworCQk7OworCWVzYWMKKworCWlmIHRlc3QgLW4gIiRjZl90cnlfY2ZsYWdzIgorCXRoZW4KK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDk1MjQgIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJcHJpbnRmKCJoZWxsb1xuIik7CisJcmV0dXJuIChhcmd2W2FyZ2MtMV0gPT0gMCkgOworfQorRU9GCisJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQlmb3IgY2Zfb3B0IGluICRjZl90cnlfY2ZsYWdzCisJCWRvCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtJGNmX29wdCIKKwkJCWVjaG8gIiRhc19tZTo5NTM2OiBjaGVja2luZyBpZiBDRkxBR1Mgb3B0aW9uIC0kY2Zfb3B0IHdvcmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgQ0ZMQUdTIG9wdGlvbiAtJGNmX29wdCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKKwkJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk1Mzg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk1NDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJCWVjaG8gIiRhc19tZTo5NTQzOiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCQkJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQkJZWxzZQorCQkJCWVjaG8gIiRhc19tZTo5NTQ3OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJCWZpCisJCWRvbmUKKwkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisJZmkKKworCSMgUlBBVEhfTElTVCBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzCisJdGVzdCAtbiAiJGNmX2xkX3JwYXRoX29wdCIgJiYgTUtfU0hBUkVEX0xJQj0iJE1LX1NIQVJFRF9MSUIgJGNmX2xkX3JwYXRoX29wdFwke1JQQVRIX0xJU1R9IgorCXRlc3QgLXogIiRSUEFUSF9MSVNUIiAmJiBSUEFUSF9MSVNUPSJcJHtsaWJkaXJ9IgorCisJdGVzdCAkY2ZfY3Zfcm1fc29fbG9jcyA9IHllcyAmJiBSTV9TSEFSRURfT1BUUz0iJFJNX1NIQVJFRF9PUFRTIHNvX2xvY2F0aW9ucyIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJQ0NfU0hBUkVEX09QVFM6ICRDQ19TSEFSRURfT1BUUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojk1NjI6IHRlc3RpbmcgQ0NfU0hBUkVEX09QVFM6ICRDQ19TSEFSRURfT1BUUyAuLi4iIDE+JjUKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJTUtfU0hBUkVEX0xJQjogICRNS19TSEFSRURfTElCIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06OTU2NjogdGVzdGluZyBNS19TSEFSRURfTElCOiAgJE1LX1NIQVJFRF9MSUIgLi4uIiAxPiY1CisKKyMgVGhlIHRlc3Qvc2FtcGxlIHByb2dyYW1zIGluIHRoZSBvcmlnaW5hbCB0cmVlIGxpbmsgdXNpbmcgcnBhdGggb3B0aW9uLgorIyBNYWtlIGl0IG9wdGlvbmFsIGZvciBwYWNrYWdlcnMuCitpZiB0ZXN0IC1uICIkTE9DQUxfTERGTEFHUyIKK3RoZW4KKwllY2hvICIkYXNfbWU6OTU3MjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayBzYW1wbGUgcHJvZ3JhbXMgd2l0aCBycGF0aCBvcHRpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsaW5rIHNhbXBsZSBwcm9ncmFtcyB3aXRoIHJwYXRoIG9wdGlvbi4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJwYXRoLWxpbmsgb3IgLS1kaXNhYmxlLXJwYXRoLWxpbmsgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcnBhdGhfbGluaytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcnBhdGhfbGluayIKKyAgd2l0aF9ycGF0aF9saW5rPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9ycGF0aF9saW5rPXllcworZmk7CisJZWNobyAiJGFzX21lOjk1ODI6IHJlc3VsdDogJHdpdGhfcnBhdGhfbGluayIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9ycGF0aF9saW5rIiA+JjYKKwlpZiB0ZXN0ICIkd2l0aF9ycGF0aF9saW5rIiA9IG5vCisJdGhlbgorCQlMT0NBTF9MREZMQUdTPQorCQlMT0NBTF9MREZMQUdTMj0KKwlmaQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWJyb2tlbi1saW5rZXIgdG8gZm9yY2Ugb24gdXNlIG9mIGJyb2tlbi1saW5rZXIgc3VwcG9ydAorZWNobyAiJGFzX21lOjk1OTQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IGJyb2tlbi1saW5rZXIgc3VwcG9ydCBjb2RlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgYnJva2VuLWxpbmtlciBzdXBwb3J0IGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1icm9rZW5fbGlua2VyIG9yIC0tZGlzYWJsZS1icm9rZW5fbGlua2VyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2Jyb2tlbl9saW5rZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2Jyb2tlbl9saW5rZXIiCisgIHdpdGhfYnJva2VuX2xpbmtlcj0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfYnJva2VuX2xpbmtlcj0ke0JST0tFTl9MSU5LRVI6LW5vfQorZmk7CitlY2hvICIkYXNfbWU6OTYwNDogcmVzdWx0OiAkd2l0aF9icm9rZW5fbGlua2VyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2Jyb2tlbl9saW5rZXIiID4mNgorCitCUk9LRU5fTElOS0VSPTAKK2lmIHRlc3QgIiR3aXRoX2Jyb2tlbl9saW5rZXIiID0geWVzIDsgdGhlbgorCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEJST0tFTl9MSU5LRVIgMQorRU9GCisKKwlCUk9LRU5fTElOS0VSPTEKK2VsaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gc2hhcmVkIDsgdGhlbgorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKGN5Z3dpbiopCisJCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEJST0tFTl9MSU5LRVIgMQorRU9GCisKKwkJQlJPS0VOX0xJTktFUj0xCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJY3lnd2luIGxpbmtlciBpcyBicm9rZW4gYW55d2F5IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06OTYyNDogdGVzdGluZyBjeWd3aW4gbGlua2VyIGlzIGJyb2tlbiBhbnl3YXkgLi4uIiAxPiY1CisKKwkJOzsKKwllc2FjCitmaQorCisjIENoZWNrIHRvIGRlZmluZSBfWE9QRU5fU09VUkNFICJhdXRvbWF0aWNhbGx5IgorCitjZl9YT1BFTl9TT1VSQ0U9NTAwCitjZl9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCitjZl94b3Blbl9zb3VyY2U9CisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhhaXhbNC03XSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9BTExfU09VUkNFIgorCTs7CisoY3lnd2lufG1zeXMpCisJY2ZfWE9QRU5fU09VUkNFPTYwMAorCTs7CisoZGFyd2luWzAtOF0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0FQUExFX0NfU09VUkNFIgorCTs7CisoZGFyd2luKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0RBUldJTl9DX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhmcmVlYnNkKnxkcmFnb25mbHkqKQorCSMgNS54IGhlYWRlcnMgYXNzb2NpYXRlCisJIwlfWE9QRU5fU09VUkNFPTYwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCisJIwlfWE9QRU5fU09VUkNFPTUwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCisJY2ZfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9UWVBFUyAtRF9fQlNEX1ZJU0lCTEUgLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCTs7CisoaHB1eDExKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT01MDAiCisJOzsKKyhocHV4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIgorCTs7CisoaXJpeFs1Nl0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX1NHSV9TT1VSQ0UiCisJY2ZfWE9QRU5fU09VUkNFPQorCTs7CisobGludXgqfGdudSp8bWludCp8aypic2QqLWdudSkKKworZWNobyAiJGFzX21lOjk2NzA6IGNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9HTlVfU09VUkNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBkZWZpbmUgX0dOVV9TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2dudV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5Njc3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NjkyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5Njk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk2OTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NzAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZ251X3NvdXJjZT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9zYXZlPSIkQ1BQRkxBR1MiCisJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5NzEwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk3MjU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk3Mjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTczMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk3MzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9nbnVfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2dudV9zb3VyY2U9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6OTc0OTogcmVzdWx0OiAkY2ZfY3ZfZ251X3NvdXJjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ251X3NvdXJjZSIgPiY2Cit0ZXN0ICIkY2ZfY3ZfZ251X3NvdXJjZSIgPSB5ZXMgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9HTlVfU09VUkNFIgorCisJOzsKKyhtaW5peCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9ORVRCU0RfU09VUkNFIiAjIFBPU0lYLjEtMjAwMSBmZWF0dXJlcyBhcmUgaWZkZWYnZCB3aXRoIHRoaXMuLi4KKwk7OworKG1pcmJzZCopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0Ugb3IgX1BPU0lYX1NPVVJDRSBicmVha3MgPHN5cy9zZWxlY3QuaD4gYW5kIG90aGVyIGhlYWRlcnMgd2hpY2ggdXNlIHVfaW50IC8gdV9zaG9ydCB0eXBlcworCWNmX1hPUEVOX1NPVVJDRT0KKworY2ZfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFCisKK2NmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitjZl90cmltX0NGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworY2ZfdHJpbV9DUFBGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitlY2hvICIkYXNfbWU6OTc3NDogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfcG9zaXhfY19zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5NzgwOiB0ZXN0aW5nIGlmIHRoZSBzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkIGdvIG5vIGZ1cnRoZXIgLi4uIiAxPiY1CisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk3ODMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTc5ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTgwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5ODA0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTgwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3dhbnRfcG9zaXhfc291cmNlPW5vCisJIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbgorCSAoLlsxMl0/PyopCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCisJCTs7CisJICguMikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJICguKikKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJIGVzYWMKKwkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5ODI4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1BPU0lYX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk4NDM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTg0OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4NTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Bvc2l4X2Nfc291cmNlPSIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UgLURfUE9TSVhfU09VUkNFIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBmaQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojk4NjM6IHRlc3RpbmcgaWZkZWYgZnJvbSB2YWx1ZSAkY2ZfUE9TSVhfQ19TT1VSQ0UgLi4uIiAxPiY1CisKKwkgQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06OTg2ODogdGVzdGluZyBpZiB0aGUgc2Vjb25kIGNvbXBpbGUgZG9lcyBub3QgbGVhdmUgb3VyIGRlZmluaXRpb24gaW50YWN0IGVycm9yIC4uLiIgMT4mNQorCisJIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTg3MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5ODg2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5ODg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk4OTI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5ODk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9wb3NpeF9jX3NvdXJjZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6OTkxMTogcmVzdWx0OiAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Bvc2l4X2Nfc291cmNlIiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiAhPSBubyA7IHRoZW4KKwlDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwlDUFBGTEFHUz0iJGNmX3RyaW1fQ1BQRkxBR1MiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2N2X3Bvc2l4X2Nfc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCisJOzsKKyhuZXRic2QqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfTkVUQlNEX1NPVVJDRSIgIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIElQdjYgZm9yIGx5bnggb24gTmV0QlNEIDEuNiwgYnJlYWtzIHh0ZXJtLCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdworCTs7Cisob3BlbmJzZFs0LTldKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBsb3dlciB0aGFuIDUwMCBicmVha3MgZysrIGNvbXBpbGUgd2l0aCB3Y2hhci5oLCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJY2ZfeG9wZW5fc291cmNlPSItRF9CU0RfU09VUkNFIgorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwk7OworKG9wZW5ic2QqKQorCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGJyZWFrcyB4dGVybSBvbiBPcGVuQlNEIDIuOCwgaXMgbm90IG5lZWRlZCBmb3IgbmN1cnNlc3cKKwk7OworKG9zZls0NV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfT1NGX1NPVVJDRSIKKwk7OworKG50by1xbngqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfUU5YX1NPVVJDRSIKKwk7OworKHNjbyopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCisJOzsKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCisJOzsKKyhzeXN2NC4ydXcyLiopICMgTm92ZWxsL1NDTyBVbml4V2FyZSAyLnggKHRlc3RlZCBvbiAyLjEuMikKKwljZl9YT1BFTl9TT1VSQ0U9CisJY2ZfUE9TSVhfQ19TT1VSQ0U9CisJOzsKKygqKQorCitlY2hvICIkYXNfbWU6MTAwMjk6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfeG9wZW5fc291cmNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMDM2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAwNTU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMDU4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMDYxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwNjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfc2F2ZT0iJENQUEZMQUdTIgorCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMDczICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDA5MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwOTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAwOTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDEwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3hvcGVuX3NvdXJjZT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl94b3Blbl9zb3VyY2U9JGNmX1hPUEVOX1NPVVJDRQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCUNQUEZMQUdTPSIkY2Zfc2F2ZSIKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZWNobyAiJGFzX21lOjEwMTE2OiByZXN1bHQ6ICRjZl9jdl94b3Blbl9zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3hvcGVuX3NvdXJjZSIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl94b3Blbl9zb3VyY2UiICE9IG5vIDsgdGhlbgorCitDRkxBR1M9YGVjaG8gIiRDRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwljZl90ZW1wX3hvcGVuX3NvdXJjZT0iLURfWE9QRU5fU09VUkNFPSRjZl9jdl94b3Blbl9zb3VyY2UiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3RlbXBfeG9wZW5fc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCitjZl9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UKKworY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitjZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKK2NmX3RyaW1fQ0ZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitjZl90cmltX0NQUEZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK2VjaG8gIiRhc19tZToxMDIyNDogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfcG9zaXhfY19zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDIzMDogdGVzdGluZyBpZiB0aGUgc3ltYm9sIGlzIGFscmVhZHkgZGVmaW5lZCBnbyBubyBmdXJ0aGVyIC4uLiIgMT4mNQorCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDIzMyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDI0ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAyNTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAyNTQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDI1NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3dhbnRfcG9zaXhfc291cmNlPW5vCisJIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbgorCSAoLlsxMl0/PyopCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCisJCTs7CisJICguMikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJICguKikKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJIGVzYWMKKwkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDI3OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9QT1NJWF9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDI5MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAyOTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAyOTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDMwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfcG9zaXhfY19zb3VyY2U9IiRjZl9jdl9wb3NpeF9jX3NvdXJjZSAtRF9QT1NJWF9TT1VSQ0UiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJIGZpCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTAzMTM6IHRlc3RpbmcgaWZkZWYgZnJvbSB2YWx1ZSAkY2ZfUE9TSVhfQ19TT1VSQ0UgLi4uIiAxPiY1CisKKwkgQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTAzMTg6IHRlc3RpbmcgaWYgdGhlIHNlY29uZCBjb21waWxlIGRvZXMgbm90IGxlYXZlIG91ciBkZWZpbml0aW9uIGludGFjdCBlcnJvciAuLi4iIDE+JjUKKworCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMzIxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9QT1NJWF9DX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMzM2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDMzOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDM0MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMzQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9wb3NpeF9jX3NvdXJjZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MTAzNjE6IHJlc3VsdDogJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgIT0gbm8gOyB0aGVuCisJQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTIgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl9jdl9wb3NpeF9jX3NvdXJjZQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworCTs7Citlc2FjCisKK2lmIHRlc3QgLW4gIiRjZl94b3Blbl9zb3VyY2UiIDsgdGhlbgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl94b3Blbl9zb3VyY2UKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA1MTk6IHRlc3RpbmcgYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIC4uLiIgMT4mNQorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA1Mjc6IHRlc3RpbmcgYWRkIHRvIFwkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyAuLi4iIDE+JjUKKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkIHRvIFwkRVhUUkFfQ1BQRkxBR1MgJGNmX25ld19leHRyYV9jcHBmbGFncyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNTM1OiB0ZXN0aW5nIGFkZCB0byBcJEVYVFJBX0NQUEZMQUdTICRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgLi4uIiAxPiY1CisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfWE9QRU5fU09VUkNFIiAmJiB0ZXN0IC16ICIkY2ZfY3ZfeG9wZW5fc291cmNlIiA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTA1NDM6IGNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldC4uLiAkRUNIT19DIiA+JjYKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNTQ2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDU2MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA1NjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA1Njc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDU3MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX1hPUEVOX1NPVVJDRV9zZXQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX1hPUEVOX1NPVVJDRV9zZXQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwllY2hvICIkYXNfbWU6MTA1Nzk6IHJlc3VsdDogJGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNgorCWlmIHRlc3QgJGNmX1hPUEVOX1NPVVJDRV9zZXQgPSB5ZXMKKwl0aGVuCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTA1ODQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgoraW50CittYWluICgpCit7CisKKyNpZiAoX1hPUEVOX1NPVVJDRSAtIDApIDwgJGNmX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNTk5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDYwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDYwNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNjA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfWE9QRU5fU09VUkNFX3NldF9vaz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfWE9QRU5fU09VUkNFX3NldF9vaz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQlpZiB0ZXN0ICRjZl9YT1BFTl9TT1VSQ0Vfc2V0X29rID0gbm8KKwkJdGhlbgorCQkJeyBlY2hvICIkYXNfbWU6MTA2MTk6IFdBUk5JTkc6IF9YT1BFTl9TT1VSQ0UgaXMgbG93ZXIgdGhhbiByZXF1ZXN0ZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBfWE9QRU5fU09VUkNFIGlzIGxvd2VyIHRoYW4gcmVxdWVzdGVkIiA+JjI7fQorCQlmaQorCWVsc2UKKworZWNobyAiJGFzX21lOjEwNjI0OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9YT1BFTl9TT1VSQ0UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9YT1BFTl9TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3hvcGVuX3NvdXJjZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDYzMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworaW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNjUwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDY1MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDY1NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNjU5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDY2OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworaW50CittYWluICgpCit7CisKKyNpZmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA2ODc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNjkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNjkzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA2OTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0UKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlDUFBGTEFHUz0iJGNmX3NhdmUiCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZToxMDcxMTogcmVzdWx0OiAkY2ZfY3ZfeG9wZW5fc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl94b3Blbl9zb3VyY2UiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfeG9wZW5fc291cmNlIiAhPSBubyA7IHRoZW4KKworQ0ZMQUdTPWBlY2hvICIkQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCisJY2ZfdGVtcF94b3Blbl9zb3VyY2U9Ii1EX1hPUEVOX1NPVVJDRT0kY2ZfY3ZfeG9wZW5fc291cmNlIgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl90ZW1wX3hvcGVuX3NvdXJjZQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworCWZpCitmaQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIG9yIC0tZGlzYWJsZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9sYXJnZWZpbGUiCisKK2ZpOworaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vOyB0aGVuCisKKyAgZWNobyAiJGFzX21lOjEwODE2OiBjaGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VmaWxlX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICAgYWNfc2F2ZV9DQz0kQ0MKKyAgICAgICB3aGlsZSA6OyBkbworICAgICAJICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQsCisgICAgIAkgIyBzbyB1c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9wdGlvbiBpZiB0aGF0IGhlbHBzLgorICAgICAgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDgyOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorICAgICAJIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwODQ4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDg1MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDg1NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwODU3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgICAgCSBDQz0iJENDIC1uMzIiCisgICAgIAkgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA4Njc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwODcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwODczOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA4NzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CisgICAgICAgICBicmVhaworICAgICAgIGRvbmUKKyAgICAgICBDQz0kYWNfc2F2ZV9DQworICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKKyAgICBmaQorZmkKK2VjaG8gIiRhc19tZToxMDg5MDogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY2CisgIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiAhPSBubzsgdGhlbgorICAgIENDPSRDQyRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDCisgIGZpCisKKyAgZWNobyAiJGFzX21lOjEwODk2OiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICB3aGlsZSA6OyBkbworICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubworICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwOTA0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDkyNDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA5Mjc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA5MzA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDkzMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDk0MiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA5NjM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwOTY2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwOTY5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA5NzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02NDsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBicmVhaworZG9uZQorZmkKK2VjaG8gIiRhc19tZToxMDk4MzogcmVzdWx0OiAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjYKK2lmIHRlc3QgIiRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgIT0gbm87IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMKK0VPRgorCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorICBlY2hvICIkYXNfbWU6MTA5OTM6IGNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlX2ZpbGVzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIHdoaWxlIDo7IGRvCisgIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubworICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExMDAxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTAyMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTEwMjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEwMjc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTAzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTAzOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjZGVmaW5lIF9MQVJHRV9GSUxFUyAxCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEwNjA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExMDYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjExMDY2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTEwNjk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfbGFyZ2VfZmlsZXM9MTsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBicmVhaworZG9uZQorZmkKK2VjaG8gIiRhc19tZToxMTA4MDogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNgoraWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgIT0gbm87IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcworRU9GCisKK2ZpCitybSAtcmYgY29uZnRlc3QqCitmaQorCisJaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vIDsgdGhlbgorCWVjaG8gIiRhc19tZToxMTA5MzogY2hlY2tpbmcgZm9yIF9MQVJHRUZJTEVfU09VUkNFIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgX0xBUkdFRklMRV9TT1VSQ0UgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgd2hpbGUgOjsgZG8KKyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2U9bm8KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTEwMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcmV0dXJuICFmc2Vla287CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExMTEzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTExNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMTExOTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExMTIyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExMTMxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3JldHVybiAhZnNlZWtvOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTE0NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTExNDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTExNTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTE1MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTE7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgYnJlYWsKK2RvbmUKK2ZpCitlY2hvICIkYXNfbWU6MTExNjQ6IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSIgPiY2CitpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlCitFT0YKKworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworIyBXZSB1c2VkIHRvIHRyeSBkZWZpbmluZyBfWE9QRU5fU09VUkNFPTUwMCB0b28sIHRvIHdvcmsgYXJvdW5kIGEgYnVnCisjIGluIGdsaWJjIDIuMS4zLCBidXQgdGhhdCBicmVha3MgdG9vIG1hbnkgb3RoZXIgdGhpbmdzLgorIyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxsbyB3aXRoIGdsaWJjLCB1cGdyYWRlIHRvIGEgZml4ZWQgZ2xpYmMuCitlY2hvICIkYXNfbWU6MTExNzg6IGNoZWNraW5nIGZvciBmc2Vla28iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZnNlZWtvLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2ZzZWVrbytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExMTg0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CityZXR1cm4gZnNlZWtvICYmIGZzZWVrbyAoc3RkaW4sIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTExOTY6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExMTk5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEyMDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTIwNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2Z1bmNfZnNlZWtvPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2ZzZWVrbz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTEyMTU6IHJlc3VsdDogJGFjX2N2X2Z1bmNfZnNlZWtvIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX2ZzZWVrbyIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX2ZzZWVrbyA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0ZTRUVLTyAxCitFT0YKKworZmkKKworCSMgTm9ybWFsbHkgd2Ugd291bGQgY29sbGVjdCB0aGVzZSBkZWZpbml0aW9ucyBpbiB0aGUgY29uZmlnLmgsCisJIyBidXQgKGxpa2UgX1hPUEVOX1NPVVJDRSksIHNvbWUgZW52aXJvbm1lbnRzIHJlbHkgb24gaGF2aW5nIHRoZXNlCisJIyBkZWZpbmVkIGJlZm9yZSBhbnkgb2YgdGhlIHN5c3RlbSBoZWFkZXJzIGFyZSBpbmNsdWRlZC4gIEFub3RoZXIKKwkjIGNhc2UgY29tZXMgdXAgd2l0aCBDKyssIGUuZy4sIG9uIEFJWCB0aGUgY29tcGlsZXIgY29tcGlsZXMgdGhlCisJIyBoZWFkZXIgZmlsZXMgYnkgdGhlbXNlbHZlcyBiZWZvcmUgbG9va2luZyBhdCB0aGUgYm9keSBmaWxlcyBpdCBpcworCSMgdG9sZCB0byBjb21waWxlLiAgRm9yIG5jdXJzZXMsIHRob3NlIGhlYWRlciBmaWxlcyBkbyBub3QgaW5jbHVkZQorCSMgdGhlIGNvbmZpZy5oCisJdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgICAgICAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0xBUkdFX0ZJTEVTICIKKwl0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfTEFSR0VGSUxFX1NPVVJDRSAiCisJdGVzdCAiJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzICIKKworCWVjaG8gIiRhc19tZToxMTIzNjogY2hlY2tpbmcgd2hldGhlciB0byB1c2Ugc3RydWN0IGRpcmVudDY0IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0byB1c2Ugc3RydWN0IGRpcmVudDY0Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9zdHJ1Y3RfZGlyZW50NjQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExMjQzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCitpbnQKK21haW4gKCkKK3sKKworCQkvKiBpZiB0cmFuc2l0aW9uYWwgbGFyZ2VmaWxlIHN1cHBvcnQgaXMgc2V0dXAsIHRoaXMgaXMgdHJ1ZSAqLworCQlleHRlcm4gc3RydWN0IGRpcmVudDY0ICogcmVhZGRpcihESVIgKik7CisJCXN0cnVjdCBkaXJlbnQ2NCAqeCA9IHJlYWRkaXIoKERJUiAqKTApOworCQlzdHJ1Y3QgZGlyZW50ICp5ID0gcmVhZGRpcigoRElSICopMCk7CisJCWludCB6ID0geCAtIHk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEyNjQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExMjY3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjExMjcwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTEyNzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9zdHJ1Y3RfZGlyZW50NjQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3N0cnVjdF9kaXJlbnQ2ND1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZWNobyAiJGFzX21lOjExMjg0OiByZXN1bHQ6ICRjZl9jdl9zdHJ1Y3RfZGlyZW50NjQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCIgPiY2CisJdGVzdCAiJGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX0RJUkVOVDY0IDEKK0VPRgorCisJZmkKKworIyMjIEVuYWJsZSBjb21waWxpbmctaW4gcmNzIGlkJ3MKK2VjaG8gIiRhc19tZToxMTI5NDogY2hlY2tpbmcgaWYgUkNTIGlkZW50aWZpZXJzIHNob3VsZCBiZSBjb21waWxlZC1pbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIFJDUyBpZGVudGlmaWVycyBzaG91bGQgYmUgY29tcGlsZWQtaW4uLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcmNzLWlkcyBvciAtLXdpdGhvdXQtcmNzLWlkcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcmNzX2lkcytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9yY3NfaWRzIgorICB3aXRoX3Jjc19pZHM9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9yY3NfaWRzPW5vCitmaTsKK2VjaG8gIiRhc19tZToxMTMwNDogcmVzdWx0OiAkd2l0aF9yY3NfaWRzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3Jjc19pZHMiID4mNgordGVzdCAiJHdpdGhfcmNzX2lkcyIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9SQ1NfSURTIDEKK0VPRgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyBOb3RlIHRoYXQgc29tZSBmdW5jdGlvbnMgKHN1Y2ggYXMgY29uc3QpIGFyZSBub3JtYWxseSBkaXNhYmxlZCBhbnl3YXkuCitlY2hvICIkYXNfbWU6MTEzMTQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggZnVuY3Rpb24gZXh0ZW5zaW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggZnVuY3Rpb24gZXh0ZW5zaW9ucy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4dC1mdW5jcyBvciAtLWRpc2FibGUtZXh0LWZ1bmNzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4dF9mdW5jcytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfZXh0X2Z1bmNzIgorICB3aXRoX2V4dF9mdW5jcz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfZXh0X2Z1bmNzPXllcworZmk7CitlY2hvICIkYXNfbWU6MTEzMjQ6IHJlc3VsdDogJHdpdGhfZXh0X2Z1bmNzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2V4dF9mdW5jcyIgPiY2CitpZiB0ZXN0ICIkd2l0aF9leHRfZnVuY3MiID0geWVzIDsgdGhlbgorCU5DVVJTRVNfRVhUX0ZVTkNTPTEKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMgMQorRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVNfRVhUX0ZVTkNTIDEKK0VPRgorCitlbHNlCisJTkNVUlNFU19FWFRfRlVOQ1M9MAorZmkKKworIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1jb25zdCB0byB0dXJuIG9uIHVzZSBvZiBjb25zdCBiZXlvbmQgdGhhdCBpbiBYU0kuCitlY2hvICIkYXNfbWU6MTEzNDI6IGNoZWNraW5nIGZvciBleHRlbmRlZCB1c2Ugb2YgY29uc3Qga2V5d29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBleHRlbmRlZCB1c2Ugb2YgY29uc3Qga2V5d29yZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWNvbnN0IG9yIC0tZGlzYWJsZS1jb25zdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9jb25zdCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfY29uc3QiCisgIHdpdGhfZXh0X2NvbnN0PSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9leHRfY29uc3Q9bm8KK2ZpOworZWNobyAiJGFzX21lOjExMzUyOiByZXN1bHQ6ICR3aXRoX2V4dF9jb25zdCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9leHRfY29uc3QiID4mNgorTkNVUlNFU19DT05TVD0nLypub3RoaW5nKi8nCitpZiB0ZXN0ICIkd2l0aF9leHRfY29uc3QiID0geWVzIDsgdGhlbgorCU5DVVJTRVNfQ09OU1Q9Y29uc3QKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRpdmVseSBzYWZlIHRvIGV4cGVyaW1lbnQgd2l0aC4KKworZWNobyAiJGFzX21lOjExMzYyOiBjaGVja2luZyBpZiB5b3Ugd2FudCBhbGwgZGV2ZWxvcG1lbnQgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGFsbCBkZXZlbG9wbWVudCBjb2RlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRldmVsb3Agb3IgLS13aXRob3V0LWRldmVsb3Agd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2RldmVsb3Arc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGV2ZWxvcCIKKyAgd2l0aF9kZXZlbG9wPSR3aXRodmFsCitlbHNlCisgIHdpdGhfZGV2ZWxvcD1ubworZmk7CitlY2hvICIkYXNfbWU6MTEzNzI6IHJlc3VsdDogJHdpdGhfZGV2ZWxvcCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9kZXZlbG9wIiA+JjYKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGVzZSBhcmUganVzdCBleHBlcmltZW50YWwsIHByb2JhYmx5IHNob3VsZCBub3QgYmUgaW4gYSBwYWNrYWdlOgorCisjIFRoaXMgaXMgc3RpbGwgZXhwZXJpbWVudGFsICgyMDA4MDMyOSksIGJ1dCBzaG91bGQgdWx0aW1hdGVseSBiZSBtb3ZlZCB0bworIyB0aGUgc2NyaXB0LWJsb2NrIC0td2l0aC1ub3JtYWwsIGV0Yy4KKworZWNobyAiJGFzX21lOjExMzgxOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggdGhlIHB0aHJlYWQgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCB0aGUgcHRocmVhZCBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXB0aHJlYWQgb3IgLS13aXRob3V0LXB0aHJlYWQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3B0aHJlYWQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfcHRocmVhZCIKKyAgd2l0aF9wdGhyZWFkPSR3aXRodmFsCitlbHNlCisgIHdpdGhfcHRocmVhZD1ubworZmk7CitlY2hvICIkYXNfbWU6MTEzOTE6IHJlc3VsdDogJHdpdGhfcHRocmVhZCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9wdGhyZWFkIiA+JjYKKworaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgIT0gbm8gOyB0aGVuCisJZWNobyAiJGFzX21lOjExMzk1OiBjaGVja2luZyBmb3IgcHRocmVhZC5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHB0aHJlYWQuaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExNDAxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDA1OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMTQxMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfcHRocmVhZF9oPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjExNDMwOiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfcHRocmVhZF9oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfcHRocmVhZF9oIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9wdGhyZWFkX2ggPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9QVEhSRUFEU19IIDEKK0VPRgorCisJZm9yIGNmX2xpYl9wdGhyZWFkIGluIHB0aHJlYWQgY19yCisJZG8KKwkgICAgZWNobyAiJGFzX21lOjExNDQwOiBjaGVja2luZyBpZiB3ZSBjYW4gbGluayB3aXRoIHRoZSAkY2ZfbGliX3B0aHJlYWQgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGNhbiBsaW5rIHdpdGggdGhlICRjZl9saWJfcHRocmVhZCBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgorCSAgICBjZl9zYXZlX0xJQlM9IiRMSUJTIgorCitjZl9hZGRfbGlicz0iLWwkY2ZfbGliX3B0aHJlYWQiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCSAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExNDYxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKworaW50CittYWluICgpCit7CisKKwkJaW50IHJjID0gcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7CisJCWludCByMiA9IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoMCwgMCk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDc4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTQ4MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDg0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE0ODc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICB3aXRoX3B0aHJlYWQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK3dpdGhfcHRocmVhZD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkgICAgTElCUz0iJGNmX3NhdmVfTElCUyIKKwkgICAgZWNobyAiJGFzX21lOjExNDk3OiByZXN1bHQ6ICR3aXRoX3B0aHJlYWQiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfcHRocmVhZCIgPiY2CisJICAgIHRlc3QgIiR3aXRoX3B0aHJlYWQiID0geWVzICYmIGJyZWFrCisJZG9uZQorCisJaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSB5ZXMgOyB0aGVuCisKK2NmX2FkZF9saWJzPSItbCRjZl9saWJfcHRocmVhZCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQlBUSFJFQURTIDEKK0VPRgorCisJZWxzZQorCSAgICB7IHsgZWNobyAiJGFzX21lOjExNTI1OiBlcnJvcjogQ2Fubm90IGxpbmsgd2l0aCBwdGhyZWFkIGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGxpbmsgd2l0aCBwdGhyZWFkIGxpYnJhcnkiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwlmaQorCitmaQorCitmaQorCitlY2hvICIkYXNfbWU6MTE1MzQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHdlYWstc3ltYm9scyBmb3IgcHRocmVhZHMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgb3IgLS1kaXNhYmxlLXdlYWstc3ltYm9scyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV93ZWFrX3N5bWJvbHMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3dlYWtfc3ltYm9scyIKKyAgdXNlX3dlYWtfc3ltYm9scz0kd2l0aHZhbAorZWxzZQorICB1c2Vfd2Vha19zeW1ib2xzPW5vCitmaTsKK2VjaG8gIiRhc19tZToxMTU0NDogcmVzdWx0OiAkdXNlX3dlYWtfc3ltYm9scyIgPiY1CitlY2hvICIke0VDSE9fVH0kdXNlX3dlYWtfc3ltYm9scyIgPiY2CitpZiB0ZXN0ICIkdXNlX3dlYWtfc3ltYm9scyIgPSB5ZXMgOyB0aGVuCisKK2VjaG8gIiRhc19tZToxMTU0ODogY2hlY2tpbmcgaWYgJENDIHN1cHBvcnRzIHdlYWsgc3ltYm9scyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmICRDQyBzdXBwb3J0cyB3ZWFrIHN5bWJvbHMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3dlYWtfc3ltYm9scytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExNTU1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmIGRlZmluZWQoX19HTlVDX18pCisjICBpZiBkZWZpbmVkIF9fVVNFX0lTT0M5OQorIyAgICBkZWZpbmUgX2NhdF9wcmFnbWEoZXhwKQlfUHJhZ21hKCNleHApCisjICAgIGRlZmluZSBfd2Vha19wcmFnbWEoZXhwKQlfY2F0X3ByYWdtYSh3ZWFrIG5hbWUpCisjICBlbHNlCisjICAgIGRlZmluZSBfd2Vha19wcmFnbWEoZXhwKQorIyAgZW5kaWYKKyMgIGRlZmluZSBfZGVjbGFyZShuYW1lKQlfX2V4dGVuc2lvbl9fIGV4dGVybiBfX3R5cGVvZl9fKG5hbWUpIG5hbWUKKyMgIGRlZmluZSB3ZWFrX3N5bWJvbChuYW1lKQlfd2Vha19wcmFnbWEobmFtZSkgX2RlY2xhcmUobmFtZSkgX19hdHRyaWJ1dGVfXygod2VhaykpCisjZW5kaWYKKword2Vha19zeW1ib2woZm9wZW4pOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNTgxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTU4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMTU4NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExNTkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2Vha19zeW1ib2xzPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl93ZWFrX3N5bWJvbHM9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZToxMTYwMTogcmVzdWx0OiAkY2ZfY3Zfd2Vha19zeW1ib2xzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl93ZWFrX3N5bWJvbHMiID4mNgorCitlbHNlCisJY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCitmaQorCitpZiB0ZXN0ICRjZl9jdl93ZWFrX3N5bWJvbHMgPSB5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9XRUFLX1NZTUJPTFMgMQorRU9GCisKK2ZpCisKK1BUSFJFQUQ9CitpZiB0ZXN0ICIkd2l0aF9wdGhyZWFkIiA9ICJ5ZXMiIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfUFRIUkVBRFMgMQorRU9GCisKKwllbmFibGVfcmVlbnRyYW50PXllcworCWlmIHRlc3QgJGNmX2N2X3dlYWtfc3ltYm9scyA9IHllcyA7IHRoZW4KKwkJUFRIUkVBRD0tbHB0aHJlYWQKKwlmaQorZmkKKworIyBPcGVuU1VTRSBpcyBpbnN0YWxsaW5nIG5jdXJzZXM2LCB1c2luZyByZWVudHJhbnQgb3B0aW9uLgorZWNobyAiJGFzX21lOjExNjMwOiBjaGVja2luZyBmb3IgX25jX1RBQlNJWkUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgX25jX1RBQlNJWkUuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfX25jX1RBQlNJWkUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTYzNiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfbmNfVEFCU0laRSAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBfbmNfVEFCU0laRSAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfX25jX1RBQlNJWkUpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19uY19UQUJTSVpFKQorY2hva2UgbWUKKyNlbHNlCitmID0gX25jX1RBQlNJWkU7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE2Njc6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExNjcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE2NzM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTY3NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2Z1bmNfX25jX1RBQlNJWkU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfX25jX1RBQlNJWkU9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjExNjg2OiByZXN1bHQ6ICRhY19jdl9mdW5jX19uY19UQUJTSVpFIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX19uY19UQUJTSVpFIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfX25jX1RBQlNJWkUgPSB5ZXM7IHRoZW4KKyAgYXNzdW1lX3JlZW50cmFudD15ZXMKK2Vsc2UKKyAgYXNzdW1lX3JlZW50cmFudD1ubworZmkKKworIyBSZWVudHJhbnQgY29kZSBoYXMgdG8gYmUgb3BhcXVlOyB0aGVyZSdzIGxpdHRsZSBhZHZhbnRhZ2UgdG8gbWFraW5nIG5jdXJzZXMKKyMgb3BhcXVlIG91dHNpZGUgb2YgdGhhdCwgc28gdGhlcmUgaXMgbm8gLS1lbmFibGUtb3BhcXVlIG9wdGlvbi4gIFdlIGNhbiB1c2UKKyMgdGhpcyBvcHRpb24gd2l0aG91dCAtLXdpdGgtcHRocmVhZHMsIGJ1dCB0aGlzIHdpbGwgYmUgYWx3YXlzIHNldCBmb3IKKyMgcHRocmVhZHMuCitlY2hvICIkYXNfbWU6MTE2OTg6IGNoZWNraW5nIGlmIHlvdSB3YW50IGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlZW50cmFudCBvciAtLWRpc2FibGUtcmVlbnRyYW50IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3JlZW50cmFudCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcmVlbnRyYW50IgorICB3aXRoX3JlZW50cmFudD0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfcmVlbnRyYW50PSRhc3N1bWVfcmVlbnRyYW50CitmaTsKK2VjaG8gIiRhc19tZToxMTcwODogcmVzdWx0OiAkd2l0aF9yZWVudHJhbnQiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfcmVlbnRyYW50IiA+JjYKK2lmIHRlc3QgIiR3aXRoX3JlZW50cmFudCIgPSB5ZXMgOyB0aGVuCisJY2ZfY3ZfZW5hYmxlX3JlZW50cmFudD0xCisJaWYgdGVzdCAkY2ZfY3Zfd2Vha19zeW1ib2xzID0geWVzIDsgdGhlbgorCisjIHJlbW92ZSBwdGhyZWFkIGxpYnJhcnkgZnJvbSAkTElCUworTElCUz1gZWNobyAiJExJQlMiIHwgc2VkIC1lICdzLy1scHRocmVhZFsgCV0vL2cnIC1lICdzLy1scHRocmVhZCQvLydgCisKKwllbGlmIHRlc3QgIiRhc3N1bWVfcmVlbnRyYW50IiA9IG5vIDsgdGhlbgorCQlMSUJfU1VGRklYPSJ0JHtMSUJfU1VGRklYfSIKKwlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfUkVFTlRSQU5UIDEKK0VPRgorCitlbHNlCisJY2ZfY3ZfZW5hYmxlX3JlZW50cmFudD0wCitmaQorCisjIyMgQWxsb3cgdXNpbmcgYSBkaWZmZXJlbnQgd3JhcC1wcmVmaXgKK2lmIHRlc3QgIiRjZl9jdl9lbmFibGVfcmVlbnRyYW50IiAhPSAwIHx8IHRlc3QgIiRCUk9LRU5fTElOS0VSIiA9IDEgOyB0aGVuCisJZWNobyAiJGFzX21lOjExNzMxOiBjaGVja2luZyBmb3IgcHJlZml4IHVzZWQgdG8gd3JhcCBwdWJsaWMgdmFyaWFibGVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHByZWZpeCB1c2VkIHRvIHdyYXAgcHVibGljIHZhcmlhYmxlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC13cmFwLXByZWZpeCBvciAtLXdpdGhvdXQtd3JhcC1wcmVmaXggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3dyYXBfcHJlZml4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3dyYXBfcHJlZml4IgorICBOQ1VSU0VTX1dSQVBfUFJFRklYPSR3aXRodmFsCitlbHNlCisgIE5DVVJTRVNfV1JBUF9QUkVGSVg9X25jXworZmk7CisJZWNobyAiJGFzX21lOjExNzQxOiByZXN1bHQ6ICROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjYKK2Vsc2UKKwlOQ1VSU0VTX1dSQVBfUFJFRklYPV9uY18KK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgTkNVUlNFU19XUkFQX1BSRUZJWCAiJE5DVVJTRVNfV1JBUF9QUkVGSVgiCitFT0YKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtZWNobyB0byBzdXBwcmVzcyBmdWxsIGRpc3BsYXkgY29tcGlsaW5nIGNvbW1hbmRzCisKK2VjaG8gIiRhc19tZToxMTc1NTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGxvbmcgY29tcGlsaW5nIG1lc3NhZ2VzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGxvbmcgY29tcGlsaW5nIG1lc3NhZ2VzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZWNobyBvciAtLWRpc2FibGUtZWNobyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9lY2hvK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9lY2hvIgorICB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyAmJiBlbmFibGV2YWw9eWVzCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gInllcyIgOyB0aGVuCisKKwlFQ0hPX0xUPSctLXNpbGVudCcKKwlFQ0hPX0xEPSdAZWNobyBsaW5raW5nICRAOycKKwlSVUxFX0NDPSdAZWNobyBjb21waWxpbmcgJDwnCisJU0hPV19DQz0nQGVjaG8gY29tcGlsaW5nICRAJworCUVDSE9fQ0M9J0AnCisKKwllbHNlCisKKwlFQ0hPX0xUPScnCisJRUNIT19MRD0nJworCVJVTEVfQ0M9JycKKwlTSE9XX0NDPScnCisJRUNIT19DQz0nJworCisJZmkKK2Vsc2UKKyAgZW5hYmxldmFsPXllcworCisJRUNIT19MVD0nJworCUVDSE9fTEQ9JycKKwlSVUxFX0NDPScnCisJU0hPV19DQz0nJworCUVDSE9fQ0M9JycKKworZmk7CitlY2hvICIkYXNfbWU6MTE3ODk6IHJlc3VsdDogJGVuYWJsZXZhbCIgPiY1CitlY2hvICIke0VDSE9fVH0kZW5hYmxldmFsIiA+JjYKKworIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtd2FybmluZ3MgdG8gdHVybiBvbiBhbGwgZ2NjIHdhcm5pbmdzCitlY2hvICIkYXNfbWU6MTE3OTM6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHNlZSBjb21waWxlciB3YXJuaW5ncyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHNlZSBjb21waWxlciB3YXJuaW5ncy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXdhcm5pbmdzIG9yIC0tZGlzYWJsZS13YXJuaW5ncyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV93YXJuaW5ncytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfd2FybmluZ3MiCisgIHdpdGhfd2FybmluZ3M9JGVuYWJsZXZhbAorZmk7CitlY2hvICIkYXNfbWU6MTE4MDE6IHJlc3VsdDogJHdpdGhfd2FybmluZ3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfd2FybmluZ3MiID4mNgorCitpZiB0ZXN0ICJ4JHdpdGhfd2FybmluZ3MiID0gInh5ZXMiOyB0aGVuCisKKyAJQURBRkxBR1M9IiRBREFGTEFHUyAtZ25hdGciCisKK0lOVEVMX0NPTVBJTEVSPW5vCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzIDsgdGhlbgorCWNhc2UgJGhvc3Rfb3MgaW4KKwkobGludXgqfGdudSopCisJCWVjaG8gIiRhc19tZToxMTgxMzogY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgQyBjb21waWxlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRoaXMgaXMgcmVhbGx5IEludGVsIEMgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CisJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQlDRkxBR1M9IiRDRkxBR1MgLW5vLWdjYyIKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTgxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODM1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTgzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMTg0MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExODQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgSU5URUxfQ09NUElMRVI9eWVzCitjZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC13ZTE0NyIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCQllY2hvICIkYXNfbWU6MTE4NTU6IHJlc3VsdDogJElOVEVMX0NPTVBJTEVSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRJTlRFTF9DT01QSUxFUiIgPiY2CisJCTs7CisJZXNhYworZmkKKworQ0xBTkdfQ09NUElMRVI9bm8KKworaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjExODY0OiBjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBDIGNvbXBpbGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgQ2xhbmcgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKKwljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwlDRkxBR1M9IiRDRkxBR1MgLVF1bnVzZWQtYXJndW1lbnRzIgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTE4NjkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9fY2xhbmdfXworI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODg2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTg4OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMTg5MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExODk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgQ0xBTkdfQ09NUElMRVI9eWVzCitjZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC1RdW51c2VkLWFyZ3VtZW50cyIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisJZWNobyAiJGFzX21lOjExOTA2OiByZXN1bHQ6ICRDTEFOR19DT01QSUxFUiIgPiY1CitlY2hvICIke0VDSE9fVH0kQ0xBTkdfQ09NUElMRVIiID4mNgorZmkKKworY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgMTE5MTEgIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7IHJldHVybiAoYXJndlthcmdjLTFdID09IDApIDsgfQorRU9GCisKK2lmIHRlc3QgIiRJTlRFTF9DT01QSUxFUiIgPSB5ZXMKK3RoZW4KKyMgVGhlICItd2RYWFgiIG9wdGlvbnMgc3VwcHJlc3Mgd2FybmluZ3M6CisjIHJlbWFyayAjMTQxOTogZXh0ZXJuYWwgZGVjbGFyYXRpb24gaW4gcHJpbWFyeSBzb3VyY2UgZmlsZQorIyByZW1hcmsgIzE2ODM6IGV4cGxpY2l0IGNvbnZlcnNpb24gb2YgYSA2NC1iaXQgaW50ZWdyYWwgdHlwZSB0byBhIHNtYWxsZXIgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCisjIHJlbWFyayAjMTY4NDogY29udmVyc2lvbiBmcm9tIHBvaW50ZXIgdG8gc2FtZS1zaXplZCBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKKyMgcmVtYXJrICMxOTM6IHplcm8gdXNlZCBmb3IgdW5kZWZpbmVkIHByZXByb2Nlc3NpbmcgaWRlbnRpZmllcgorIyByZW1hcmsgIzU5MzogdmFyaWFibGUgImN1cnNfc2JfbGVmdF9hcnJvdyIgd2FzIHNldCBidXQgbmV2ZXIgdXNlZAorIyByZW1hcmsgIzgxMDogY29udmVyc2lvbiBmcm9tICJpbnQiIHRvICJEaW1lbnNpb249e3Vuc2lnbmVkIHNob3J0fSIgbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cworIyByZW1hcmsgIzg2OTogcGFyYW1ldGVyICJ0dyIgd2FzIG5ldmVyIHJlZmVyZW5jZWQKKyMgcmVtYXJrICM5ODE6IG9wZXJhbmRzIGFyZSBldmFsdWF0ZWQgaW4gdW5zcGVjaWZpZWQgb3JkZXIKKyMgd2FybmluZyAjMjc5OiBjb250cm9sbGluZyBleHByZXNzaW9uIGlzIGNvbnN0YW50CisKKwl7IGVjaG8gIiRhc19tZToxMTkyODogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNQorZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgJENDIHdhcm5pbmcgb3B0aW9ucy4uLiIgPiY2O30KKwljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwlFWFRSQV9DRkxBR1M9Ii1XYWxsIgorCWZvciBjZl9vcHQgaW4gXAorCQl3ZDE0MTkgXAorCQl3ZDE2ODMgXAorCQl3ZDE2ODQgXAorCQl3ZDE5MyBcCisJCXdkNTkzIFwKKwkJd2QyNzkgXAorCQl3ZDgxMCBcCisJCXdkODY5IFwKKwkJd2Q5ODEKKwlkbworCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTk0NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE5NDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxMTk0OTogcmVzdWx0OiAuLi4gLSRjZl9vcHQiID4mNQorZWNobyAiJHtFQ0hPX1R9Li4uIC0kY2Zfb3B0IiA+JjYKKwkJCUVYVFJBX0NGTEFHUz0iJEVYVFJBX0NGTEFHUyAtJGNmX29wdCIKKwkJZmkKKwlkb25lCisJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisKK2VsaWYgdGVzdCAiJEdDQyIgPSB5ZXMKK3RoZW4KKwl7IGVjaG8gIiRhc19tZToxMTk1ODogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNQorZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgJENDIHdhcm5pbmcgb3B0aW9ucy4uLiIgPiY2O30KKwljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwlFWFRSQV9DRkxBR1M9CisJY2Zfd2Fybl9DT05TVD0iIgorCXRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgJiYgY2Zfd2Fybl9DT05TVD0iV3dyaXRlLXN0cmluZ3MiCisJY2ZfZ2NjX3dhcm5pbmdzPSJXaWdub3JlZC1xdWFsaWZpZXJzIFdsb2dpY2FsLW9wIFd2YXJhcmdzIgorCXRlc3QgIngkQ0xBTkdfQ09NUElMRVIiID0geHllcyAmJiBjZl9nY2Nfd2FybmluZ3M9CisJZm9yIGNmX29wdCBpbiBXIFdhbGwgXAorCQlXYmFkLWZ1bmN0aW9uLWNhc3QgXAorCQlXY2FzdC1hbGlnbiBcCisJCVdjYXN0LXF1YWwgXAorCQlXZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IFwKKwkJV2V4dHJhIFwKKwkJV2lubGluZSBcCisJCVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCisJCVdtaXNzaW5nLXByb3RvdHlwZXMgXAorCQlXbmVzdGVkLWV4dGVybnMgXAorCQlXcG9pbnRlci1hcml0aCBcCisJCVdzaGFkb3cgXAorCQlXc3RyaWN0LXByb3RvdHlwZXMgXAorCQlXdW5kZWYgJGNmX2djY193YXJuaW5ncyAkY2Zfd2Fybl9DT05TVCBXbm8tdW5rbm93bi1wcmFnbWFzIFdzd2l0Y2gtZW51bQorCWRvCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExOTgyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTk4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiJGFzX21lOjExOTg3OiByZXN1bHQ6IC4uLiAtJGNmX29wdCIgPiY1CitlY2hvICIke0VDSE9fVH0uLi4gLSRjZl9vcHQiID4mNgorCQkJY2FzZSAkY2Zfb3B0IGluCisJCQkoV2Nhc3QtcXVhbCkKKwkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EWFRTVFJJTkdERUZJTkVTIgorCQkJCTs7CisJCQkoV2lubGluZSkKKwkJCQljYXNlICRHQ0NfVkVSU0lPTiBpbgorCQkJCShbMzRdLiopCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExOTk4OiB0ZXN0aW5nIGZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04gLi4uIiAxPiY1CisKKwkJCQkJY29udGludWU7OworCQkJCWVzYWMKKwkJCQk7OworCQkJKFdwb2ludGVyLWFyaXRoKQorCQkJCWNhc2UgJEdDQ19WRVJTSU9OIGluCisJCQkJKFsxMl0uKikKKwkJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTIwMDg6IHRlc3RpbmcgZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTiAuLi4iIDE+JjUKKworCQkJCQljb250aW51ZTs7CisJCQkJZXNhYworCQkJCTs7CisJCQllc2FjCisJCQlFWFRSQV9DRkxBR1M9IiRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWZpCisJZG9uZQorCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKKworaWYgdGVzdCAiJEdDQyIgPSB5ZXMKK3RoZW4KK2NhdCA+IGNvbmZ0ZXN0LmkgPDxFT0YKKyNpZm5kZWYgR0NDX1BSSU5URgorI2RlZmluZSBHQ0NfUFJJTlRGIDAKKyNlbmRpZgorI2lmbmRlZiBHQ0NfU0NBTkYKKyNkZWZpbmUgR0NDX1NDQU5GIDAKKyNlbmRpZgorI2lmbmRlZiBHQ0NfTk9SRVRVUk4KKyNkZWZpbmUgR0NDX05PUkVUVVJOIC8qIG5vdGhpbmcgKi8KKyNlbmRpZgorI2lmbmRlZiBHQ0NfVU5VU0VECisjZGVmaW5lIEdDQ19VTlVTRUQgLyogbm90aGluZyAqLworI2VuZGlmCitFT0YKK2lmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCisJeyBlY2hvICIkYXNfbWU6MTIwNDE6IGNoZWNraW5nIGZvciAkQ0MgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmVzLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXMuLi4iID4mNjt9CitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSAxMjA0NCAiJHthc19tZTotY29uZmlndXJlfSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgImNvbmZ0ZXN0LmgiCisjaW5jbHVkZSAiY29uZnRlc3QuaSIKKyNpZglHQ0NfUFJJTlRGCisjZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsZm10LHZhcikpKQorI2Vsc2UKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgLypub3RoaW5nKi8KKyNlbmRpZgorI2lmCUdDQ19TQ0FORgorI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoc2NhbmYsZm10LHZhcikpKQorI2Vsc2UKKyNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAgLypub3RoaW5nKi8KKyNlbmRpZgorZXh0ZXJuIHZvaWQgd293KGNoYXIgKiwuLi4pIEdDQ19TQ0FORkxJS0UoMSwyKTsKK2V4dGVybiB2b2lkIG9vcHMoY2hhciAqLC4uLikgR0NDX1BSSU5URkxJS0UoMSwyKSBHQ0NfTk9SRVRVUk47CitleHRlcm4gdm9pZCBmb28odm9pZCkgR0NDX05PUkVUVVJOOworaW50IG1haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdIEdDQ19VTlVTRUQpIHsgcmV0dXJuIDA7IH0KK0VPRgorCWNmX3ByaW50Zl9hdHRyaWJ1dGU9bm8KKwljZl9zY2FuZl9hdHRyaWJ1dGU9bm8KKwlmb3IgY2ZfYXR0cmlidXRlIGluIHNjYW5mIHByaW50ZiB1bnVzZWQgbm9yZXR1cm4KKwlkbworCitjZl9BVFRSSUJVVEU9YGVjaG8gIiRjZl9hdHRyaWJ1dGUiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCisJCWNmX2RpcmVjdGl2ZT0iX19hdHRyaWJ1dGVfXygoJGNmX2F0dHJpYnV0ZSkpIgorCQllY2hvICJjaGVja2luZyBmb3IgJENDICRjZl9kaXJlY3RpdmUiIDE+JjUKKworCQljYXNlICRjZl9hdHRyaWJ1dGUgaW4KKwkJKHByaW50ZikKKwkJCWNmX3ByaW50Zl9hdHRyaWJ1dGU9eWVzCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQorRU9GCisJCQk7OworCQkoc2NhbmYpCisJCQljZl9zY2FuZl9hdHRyaWJ1dGU9eWVzCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQorRU9GCisJCQk7OworCQkoKikKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAkY2ZfZGlyZWN0aXZlCitFT0YKKwkJCTs7CisJCWVzYWMKKworCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjA5MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIwOTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxMjA5ODogcmVzdWx0OiAuLi4gJGNmX2F0dHJpYnV0ZSIgPiY1CitlY2hvICIke0VDSE9fVH0uLi4gJGNmX2F0dHJpYnV0ZSIgPiY2CisJCQljYXQgY29uZnRlc3QuaCA+PmNvbmZkZWZzLmgKKwkJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgorCQkJKG5vcmV0dXJuKQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19OT1JFVFVSTiAkY2ZfZGlyZWN0aXZlCitFT0YKKworCQkJCTs7CisJCQkocHJpbnRmKQorCQkJCWNmX3ZhbHVlPScvKiBub3RoaW5nICovJworCQkJCWlmIHRlc3QgIiRjZl9wcmludGZfYXR0cmlidXRlIiAhPSBubyA7IHRoZW4KKwkJCQkJY2ZfdmFsdWU9J19fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsZm10LHZhcikpKScKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgR0NDX1BSSU5URiAxCitFT0YKKworCQkJCWZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgJGNmX3ZhbHVlCitFT0YKKworCQkJCTs7CisJCQkoc2NhbmYpCisJCQkJY2ZfdmFsdWU9Jy8qIG5vdGhpbmcgKi8nCisJCQkJaWYgdGVzdCAiJGNmX3NjYW5mX2F0dHJpYnV0ZSIgIT0gbm8gOyB0aGVuCisJCQkJCWNmX3ZhbHVlPSdfX2F0dHJpYnV0ZV9fKChmb3JtYXQoc2NhbmYsZm10LHZhcikpKScKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgR0NDX1NDQU5GIDEKK0VPRgorCisJCQkJZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICRjZl92YWx1ZQorRU9GCisKKwkJCQk7OworCQkJKHVudXNlZCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBHQ0NfVU5VU0VEICRjZl9kaXJlY3RpdmUKK0VPRgorCisJCQkJOzsKKwkJCWVzYWMKKwkJZmkKKwlkb25lCitlbHNlCisJZmdyZXAgZGVmaW5lIGNvbmZ0ZXN0LmkgPj5jb25mZGVmcy5oCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorZmkKKworIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtYXNzZXJ0aW9ucyB0byB0dXJuIG9uIGdlbmVyYXRpb24gb2YgYXNzZXJ0aW9uIGNvZGUKK2VjaG8gIiRhc19tZToxMjE1ODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHJ1bnRpbWUgYXNzZXJ0aW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBydW50aW1lIGFzc2VydGlvbnMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1hc3NlcnRpb25zIG9yIC0tZGlzYWJsZS1hc3NlcnRpb25zIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2Fzc2VydGlvbnMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2Fzc2VydGlvbnMiCisgIHdpdGhfYXNzZXJ0aW9ucz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfYXNzZXJ0aW9ucz1ubworZmk7CitlY2hvICIkYXNfbWU6MTIxNjg6IHJlc3VsdDogJHdpdGhfYXNzZXJ0aW9ucyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9hc3NlcnRpb25zIiA+JjYKK2lmIHRlc3QgLW4gIiRHQ0MiCit0aGVuCisJaWYgdGVzdCAiJHdpdGhfYXNzZXJ0aW9ucyIgPSBubworCXRoZW4KKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRE5ERUJVRyIKKwllbHNlCisKKyAJQURBRkxBR1M9IiRBREFGTEFHUyAtZ25hdGEiCisKKwlmaQorZmkKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWxlYWtzIHRvIHN1cHByZXNzICJwZXJtYW5lbnQiIGxlYWtzLCBmb3IgdGVzdGluZworCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DX0FMTE9DX0ggMQorRU9GCisKKyMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWV4cGFuZGVkIHRvIGdlbmVyYXRlIGNlcnRhaW4gbWFjcm9zIGFzIGZ1bmN0aW9ucworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXhwYW5kZWQgb3IgLS1kaXNhYmxlLWV4cGFuZGVkIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4cGFuZGVkK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9leHBhbmRlZCIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVNfRVhQQU5ERUQgMQorRU9GCisKK2ZpOworCisjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtbWFjcm9zIHRvIHN1cHByZXNzIG1hY3JvcyBpbiBmYXZvciBvZiBmdW5jdGlvbnMKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1hY3JvcyBvciAtLWRpc2FibGUtbWFjcm9zIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX21hY3JvcytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfbWFjcm9zIgorICB0ZXN0ICIkZW5hYmxldmFsIiA9IG5vICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX05PTUFDUk9TIDEKK0VPRgorCitmaTsKKworIyBOb3JtYWxseSB3ZSBvbmx5IGFkZCB0cmFjZSgpIHRvIHRoZSBkZWJ1Zy1saWJyYXJ5LiAgQWxsb3cgdGhpcyB0byBiZQorIyBleHRlbmRlZCB0byBhbGwgbW9kZWxzIG9mIHRoZSBuY3Vyc2VzIGxpYnJhcnk6CitjZl9hbGxfdHJhY2VzPW5vCitjYXNlICIkQ0ZMQUdTICRDUFBGTEFHUyIgaW4KKygqLURUUkFDRSopCisJY2ZfYWxsX3RyYWNlcz15ZXMKKwk7OworZXNhYworCitlY2hvICIkYXNfbWU6MTIyMjE6IGNoZWNraW5nIHdoZXRoZXIgdG8gYWRkIHRyYWNlIGZlYXR1cmUgdG8gYWxsIG1vZGVscyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgdG8gYWRkIHRyYWNlIGZlYXR1cmUgdG8gYWxsIG1vZGVscy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC10cmFjZSBvciAtLXdpdGhvdXQtdHJhY2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3RyYWNlK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3RyYWNlIgorICBjZl93aXRoX3RyYWNlPSR3aXRodmFsCitlbHNlCisgIGNmX3dpdGhfdHJhY2U9JGNmX2FsbF90cmFjZXMKK2ZpOworZWNobyAiJGFzX21lOjEyMjMxOiByZXN1bHQ6ICRjZl93aXRoX3RyYWNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl93aXRoX3RyYWNlIiA+JjYKKworaWYgdGVzdCAiJGNmX3dpdGhfdHJhY2UiID0geWVzIDsgdGhlbgorCUFEQV9UUkFDRT1UUlVFCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gLURUUkFDRQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZWxzZQorCUFEQV9UUkFDRT1GQUxTRQorZmkKKworZWNobyAiJGFzX21lOjEyMzE5OiBjaGVja2luZyBpZiB3ZSB3YW50IHRvIHVzZSBHTkFUIHByb2plY3RzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugd2FudCB0byB1c2UgR05BVCBwcm9qZWN0cy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWduYXQtcHJvamVjdHMgb3IgLS1kaXNhYmxlLWduYXQtcHJvamVjdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZ25hdF9wcm9qZWN0cytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfZ25hdF9wcm9qZWN0cyIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gJiYgZW5hYmxldmFsPXllcworCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICJ5ZXMiIDsgdGhlbgorICAgIGVuYWJsZV9nbmF0X3Byb2plY3RzPW5vCisJZWxzZQorCQllbmFibGVfZ25hdF9wcm9qZWN0cz15ZXMKKwlmaQorZWxzZQorICBlbmFibGV2YWw9eWVzCisJZW5hYmxlX2duYXRfcHJvamVjdHM9eWVzCisKK2ZpOworZWNobyAiJGFzX21lOjEyMzM2OiByZXN1bHQ6ICRlbmFibGVfZ25hdF9wcm9qZWN0cyIgPiY1CitlY2hvICIke0VDSE9fVH0kZW5hYmxlX2duYXRfcHJvamVjdHMiID4mNgorCisjIyMJQ2hlY2tzIGZvciBsaWJyYXJpZXMuCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKCptaW5ndzMyKikKKwk7OworKCopCitlY2hvICIkYXNfbWU6MTIzNDQ6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2dldHRpbWVvZmRheStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyMzUwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldHRpbWVvZmRheSAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBnZXR0aW1lb2ZkYXkgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX2dldHRpbWVvZmRheSkgfHwgZGVmaW5lZCAoX19zdHViX19fZ2V0dGltZW9mZGF5KQorY2hva2UgbWUKKyNlbHNlCitmID0gZ2V0dGltZW9mZGF5OyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMzgxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjM4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMzg3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIzOTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2dldHRpbWVvZmRheT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXk9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEyNDAwOiByZXN1bHQ6ICRhY19jdl9mdW5jX2dldHRpbWVvZmRheSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkiID4mNgoraWYgdGVzdCAkYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQorRU9GCisKK2Vsc2UKKworZWNobyAiJGFzX21lOjEyNDA5OiBjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5IGluIC1sYnNkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSBpbiAtbGJzZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxic2QgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjQxNyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZ2V0dGltZW9mZGF5ICgpOworaW50CittYWluICgpCit7CitnZXR0aW1lb2ZkYXkgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjQzNjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI0Mzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjQ0MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNDQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXk9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZToxMjQ1NjogcmVzdWx0OiAkYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5IiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5ID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfR0VUVElNRU9GREFZIDEKK0VPRgorCisJTElCUz0iJExJQlMgLWxic2QiCitmaQorCitmaQorCTs7Citlc2FjCisKKyMjIwlDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KK2VjaG8gIiRhc19tZToxMjQ3MjogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjQ3OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKworX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjQ4NjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MTI0OTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjUxNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICBlZ3JlcCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgOgorZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyNTMyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgIGVncmVwICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgOgorZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyAvYmluL2NjIGluIElyaXgtNC4wLjUgZ2V0cyBub24tQU5TSSBjdHlwZSBtYWNyb3MgdW5sZXNzIHVzaW5nIC1hbnNpLgorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICA6CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI1NTMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaWYgKCgnICcgJiAweDBGRikgPT0gMHgwMjApCisjIGRlZmluZSBJU0xPV0VSKGMpICgnYScgPD0gKGMpICYmIChjKSA8PSAneicpCisjIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCisjZWxzZQorIyBkZWZpbmUgSVNMT1dFUihjKSAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAorICAgICAgICAgICAgICAgICAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAorICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlmCisKKyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCitpbnQKK21haW4gKCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCisgICAgICAgIHx8IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQorICAgICAgJGFjX21haW5fcmV0dXJuKDIpOworICAkYWNfbWFpbl9yZXR1cm4gKDApOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNTc5OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjU4MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI1ODQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjU4NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitmaQorZmkKK2VjaG8gIiRhc19tZToxMjYwMDogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9zdGRjIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFNURENfSEVBREVSUyAxCitFT0YKKworZmkKKworYWNfaGVhZGVyX2RpcmVudD1ubworZm9yIGFjX2hkciBpbiBkaXJlbnQuaCBzeXMvbmRpci5oIHN5cy9kaXIuaCBuZGlyLmg7IGRvCisgIGFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8ICRhc190cl9zaGAKK2VjaG8gIiRhc19tZToxMjYxMzogY2hlY2tpbmcgZm9yICRhY19oZHIgdGhhdCBkZWZpbmVzIERJUiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI2MTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPCRhY19oZHI+CisKK2ludAorbWFpbiAoKQoreworaWYgKChESVIgKikgMCkKK3JldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjYzNDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI2Mzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI2NDA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjY0MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfSGVhZGVyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMjY1MzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hkciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworYWNfaGVhZGVyX2RpcmVudD0kYWNfaGRyOyBicmVhaworZmkKKworZG9uZQorIyBUd28gdmVyc2lvbnMgb2Ygb3BlbmRpciBldCBhbC4gYXJlIGluIC1sZGlyIGFuZCAtbHggb24gU0NPIFhlbml4LgoraWYgdGVzdCAkYWNfaGVhZGVyX2RpcmVudCA9IGRpcmVudC5oOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMjY2NjogY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWxkaXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbGRpci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2Rpcl9vcGVuZGlyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZGlyICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI2NzQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIG9wZW5kaXIgKCk7CitpbnQKK21haW4gKCkKK3sKK29wZW5kaXIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjY5MzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI2OTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjY5OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNzAyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2Rpcl9vcGVuZGlyPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZGlyX29wZW5kaXI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjEyNzEzOiByZXN1bHQ6ICRhY19jdl9saWJfZGlyX29wZW5kaXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kaXJfb3BlbmRpciIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZGlyX29wZW5kaXIgPSB5ZXM7IHRoZW4KKyAgTElCUz0iJExJQlMgLWxkaXIiCitmaQorCitlbHNlCisgIGVjaG8gIiRhc19tZToxMjcyMDogY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWx4IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWx4Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfeF9vcGVuZGlyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1seCAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyNzI4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBvcGVuZGlyICgpOworaW50CittYWluICgpCit7CitvcGVuZGlyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI3NDc6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNzUwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI3NTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjc1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl94X29wZW5kaXI9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl94X29wZW5kaXI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjEyNzY3OiByZXN1bHQ6ICRhY19jdl9saWJfeF9vcGVuZGlyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfeF9vcGVuZGlyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl94X29wZW5kaXIgPSB5ZXM7IHRoZW4KKyAgTElCUz0iJExJQlMgLWx4IgorZmkKKworZmkKKworZWNobyAiJGFzX21lOjEyNzc1OiBjaGVja2luZyB3aGV0aGVyIHRpbWUuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfdGltZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyNzgxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworaW50CittYWluICgpCit7CitpZiAoKHN0cnVjdCB0bSAqKSAwKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNzk3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjgwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjgwMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyODA2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfaGVhZGVyX3RpbWU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2hlYWRlcl90aW1lPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEyODE2OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfdGltZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3RpbWUiID4mNgoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3RpbWUgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDEKK0VPRgorCitmaQorCisjIyMJY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgorCitlY2hvICIkYXNfbWU6MTI4MzQ6IGNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfY19jb25zdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyODQwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisvKiBGSVhNRTogSW5jbHVkZSB0aGUgY29tbWVudHMgc3VnZ2VzdGVkIGJ5IFBhdWwuICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCisgIC8qIFVsdHJpeCBtaXBzIGNjIHJlamVjdHMgdGhpcy4gICovCisgIHR5cGVkZWYgaW50IGNoYXJzZXRbMl07CisgIGNvbnN0IGNoYXJzZXQgeDsKKyAgLyogU3VuT1MgNC4xLjEgY2MgcmVqZWN0cyB0aGlzLiAgKi8KKyAgY2hhciBjb25zdCAqY29uc3QgKmNjcDsKKyAgY2hhciAqKnA7CisgIC8qIE5FQyBTVlI0LjAuMiBtaXBzIGNjIHJlamVjdHMgdGhpcy4gICovCisgIHN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsKKyAgc3RhdGljIHN0cnVjdCBwb2ludCBjb25zdCB6ZXJvID0gezAsMH07CisgIC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcy4KKyAgICAgSXQgZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCogcG9pbnRlciBmcm9tIGFub3RoZXIgaW4KKyAgICAgYW4gYXJtIG9mIGFuIGlmLWV4cHJlc3Npb24gd2hvc2UgaWYtcGFydCBpcyBub3QgYSBjb25zdGFudAorICAgICBleHByZXNzaW9uICovCisgIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsKKyAgY2NwID0gJmcgKyAoZyA/IGctZyA6IDApOworICAvKiBIUFVYIDcuMCBjYyByZWplY3RzIHRoZXNlLiAqLworICArK2NjcDsKKyAgcCA9IChjaGFyKiopIGNjcDsKKyAgY2NwID0gKGNoYXIgY29uc3QgKmNvbnN0ICopIHA7CisgIHsgLyogU0NPIDMuMnY0IGNjIHJlamVjdHMgdGhpcy4gICovCisgICAgY2hhciAqdDsKKyAgICBjaGFyIGNvbnN0ICpzID0gMCA/IChjaGFyICopIDAgOiAoY2hhciBjb25zdCAqKSAwOworCisgICAgKnQrKyA9IDA7CisgIH0KKyAgeyAvKiBTb21lb25lIHRoaW5rcyB0aGUgU3VuIHN1cHBvc2VkbHktQU5TSSBjb21waWxlciB3aWxsIHJlamVjdCB0aGlzLiAgKi8KKyAgICBpbnQgeFtdID0gezI1LCAxN307CisgICAgY29uc3QgaW50ICpmb28gPSAmeFswXTsKKyAgICArK2ZvbzsKKyAgfQorICB7IC8qIFN1biBTQzEuMCBBTlNJIGNvbXBpbGVyIHJlamVjdHMgdGhpcyAtLSBidXQgbm90IHRoZSBhYm92ZS4gKi8KKyAgICB0eXBlZGVmIGNvbnN0IGludCAqaXB0cjsKKyAgICBpcHRyIHAgPSAwOworICAgICsrcDsKKyAgfQorICB7IC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcyBzYXlpbmcKKyAgICAgICAiay5jIiwgbGluZSAyLjI3OiAxNTA2LTAyNSAoUykgT3BlcmFuZCBtdXN0IGJlIGEgbW9kaWZpYWJsZSBsdmFsdWUuICovCisgICAgc3RydWN0IHMgeyBpbnQgajsgY29uc3QgaW50ICphcFszXTsgfTsKKyAgICBzdHJ1Y3QgcyAqYjsgYi0+aiA9IDU7CisgIH0KKyAgeyAvKiBVTFRSSVgtMzIgVjMuMSAoUmV2IDkpIHZjYyByZWplY3RzIHRoaXMgKi8KKyAgICBjb25zdCBpbnQgZm9vID0gMTA7CisgIH0KKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODk4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjkwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjkwNDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyOTA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfY19jb25zdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfY19jb25zdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMjkxNzogcmVzdWx0OiAkYWNfY3ZfY19jb25zdCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfY19jb25zdCIgPiY2CitpZiB0ZXN0ICRhY19jdl9jX2NvbnN0ID0gbm87IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgY29uc3QKK0VPRgorCitmaQorCisjIyMJQ2hlY2tzIGZvciBleHRlcm5hbC1kYXRhCisKK2VjaG8gIiRhc19tZToxMjkyOTogY2hlY2tpbmcgaWYgZGF0YS1vbmx5IGxpYnJhcnkgbW9kdWxlIGxpbmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZGF0YS1vbmx5IGxpYnJhcnkgbW9kdWxlIGxpbmtzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9saW5rX2RhdGFvbmx5K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwlybSAtZiBjb25mdGVzdC5hCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSAxMjkzNyAiY29uZmlndXJlIgoraW50CXRlc3RkYXRhWzNdID0geyAxMjMsIDQ1NiwgNzg5IH07CitFT0YKKwlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjk0MDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI5NDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA7IHRoZW4KKwkJbXYgY29uZnRlc3QubyBkYXRhLm8gJiYgXAorCQkoICRBUiAkQVJGTEFHUyBjb25mdGVzdC5hIGRhdGEubyApIDI+JjUgMT4vZGV2L251bGwKKwlmaQorCXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgZGF0YS5vCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSAxMjk1MCAiY29uZmlndXJlIgoraW50CXRlc3RmdW5jKCkKK3sKKyNpZiBkZWZpbmVkKE5lWFQpCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgxKTsJLyogSSdtIHRvbGQgdGhpcyBsaW5rZXIgaXMgYnJva2VuICovCisjZWxzZQorCWV4dGVybiBpbnQgdGVzdGRhdGFbM107CisJcmV0dXJuIHRlc3RkYXRhWzBdID09IDEyMworCSAgICYmICB0ZXN0ZGF0YVsxXSA9PSA0NTYKKwkgICAmJiAgdGVzdGRhdGFbMl0gPT0gNzg5OworI2VuZGlmCit9CitFT0YKKwlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjk2MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI5NjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQltdiBjb25mdGVzdC5vIGZ1bmMubyAmJiBcCisJCSggJEFSICRBUkZMQUdTIGNvbmZ0ZXN0LmEgZnVuYy5vICkgMj4mNSAxPi9kZXYvbnVsbAorCWZpCisJcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBmdW5jLm8KKwkoIGV2YWwgJFJBTkxJQiBjb25mdGVzdC5hICkgMj4mNSA+L2Rldi9udWxsCisJY2Zfc2F2ZUxJQlM9IiRMSUJTIgorCUxJQlM9ImNvbmZ0ZXN0LmEgJExJQlMiCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgY2ZfY3ZfbGlua19kYXRhb25seT11bmtub3duCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI5NzkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisJaW50IG1haW4oKQorCXsKKwkJZXh0ZXJuIGludCB0ZXN0ZnVuYygpOworCQkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59ICghdGVzdGZ1bmMoKSk7CisJfQorCitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5OTA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyOTkzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjk5NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyOTk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbGlua19kYXRhb25seT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2xpbmtfZGF0YW9ubHk9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKwlMSUJTPSIkY2Zfc2F2ZUxJQlMiCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMzAxMzogcmVzdWx0OiAkY2ZfY3ZfbGlua19kYXRhb25seSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbGlua19kYXRhb25seSIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9saW5rX2RhdGFvbmx5IiA9IG5vIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBCUk9LRU5fTElOS0VSIDEKK0VPRgorCisJQlJPS0VOX0xJTktFUj0xCitmaQorCisjIyMJQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4KKworZWNobyAiJGFzX21lOjEzMDI3OiBjaGVja2luZyBmb3Igd29ya2luZyBta3N0ZW1wIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWtzdGVtcC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfZnVuY19ta3N0ZW1wK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK3JtIC1yZiBjb25mdGVzdCoKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIGNmX2N2X2Z1bmNfbWtzdGVtcD1tYXliZQorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzMDM4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KK2ludCBtYWluKCkKK3sKKwljaGFyICp0bXBsID0gImNvbmZ0ZXN0WFhYWFhYIjsKKwljaGFyIG5hbWVbMl1bODBdOworCWludCBuOworCWludCByZXN1bHQgPSAwOworCWludCBmZDsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKworCXVtYXNrKDA3Nyk7CisJZm9yIChuID0gMDsgbiA8IDI7ICsrbikgeworCQlzdHJjcHkobmFtZVtuXSwgdG1wbCk7CisJCWlmICgoZmQgPSBta3N0ZW1wKG5hbWVbbl0pKSA+PSAwKSB7CisJCQlpZiAoIXN0cmNtcChuYW1lW25dLCB0bXBsKQorCQkJIHx8IHN0YXQobmFtZVtuXSwgJnNiKSAhPSAwCisJCQkgfHwgKHNiLnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUcKKwkJCSB8fCAoc2Iuc3RfbW9kZSAmIDA3NykgIT0gMCkgeworCQkJCXJlc3VsdCA9IDE7CisJCQl9CisJCQljbG9zZShmZCk7CisJCX0KKwl9CisJaWYgKHJlc3VsdCA9PSAwCisJICYmICFzdHJjbXAobmFtZVswXSwgbmFtZVsxXSkpCisJCXJlc3VsdCA9IDE7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShyZXN1bHQpOworfQorCitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMwNzY6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMDc5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMzA4MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMDg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZnVuY19ta3N0ZW1wPXllcworCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9mdW5jX21rc3RlbXA9bm8KKworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorZWNobyAiJGFzX21lOjEzMDk5OiByZXN1bHQ6ICRjZl9jdl9mdW5jX21rc3RlbXAiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2Z1bmNfbWtzdGVtcCIgPiY2CitpZiB0ZXN0ICJ4JGNmX2N2X2Z1bmNfbWtzdGVtcCIgPSB4bWF5YmUgOyB0aGVuCisJZWNobyAiJGFzX21lOjEzMTAyOiBjaGVja2luZyBmb3IgbWtzdGVtcCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBta3N0ZW1wLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX21rc3RlbXArc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzEwOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBta3N0ZW1wICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIG1rc3RlbXAgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX21rc3RlbXApIHx8IGRlZmluZWQgKF9fc3R1Yl9fX21rc3RlbXApCitjaG9rZSBtZQorI2Vsc2UKK2YgPSBta3N0ZW1wOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMTM5OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzE0MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMTQ1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMxNDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX21rc3RlbXA9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfbWtzdGVtcD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTMxNTg6IHJlc3VsdDogJGFjX2N2X2Z1bmNfbWtzdGVtcCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19ta3N0ZW1wIiA+JjYKKworZmkKK2lmIHRlc3QgIngkY2ZfY3ZfZnVuY19ta3N0ZW1wIiA9IHh5ZXMgfHwgdGVzdCAieCRhY19jdl9mdW5jX21rc3RlbXAiID0geHllcyA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9NS1NURU1QIDEKK0VPRgorCitmaQorCitpZiB0ZXN0IC16ICIkY2ZfdXNlcl9DRkxBR1MiICYmIHRlc3QgIiR3aXRoX25vX2xlYWtzIiA9IG5vIDsgdGhlbgorCUNGTEFHUz1gZWNobyAke0NGTEFHU30gfCBzZWQgLWUgJ3MlLWcgJSUnIC1lICdzJS1nJCUlJ2AKKwlDWFhGTEFHUz1gZWNobyAke0NYWEZMQUdTfSB8IHNlZCAtZSAncyUtZyAlJScgLWUgJ3MlLWckJSUnYAorZmkKKworY2Zfd2l0aF9hZGE9eWVzCitpZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCisKK2NmX2FkYV9tYWtlPWduYXRtYWtlCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRjZl9hZGFfbWFrZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGNmX2FkYV9tYWtlOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTMxODE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19nbmF0X2V4aXN0cytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkZ25hdF9leGlzdHMiOyB0aGVuCisgIGFjX2N2X3Byb2dfZ25hdF9leGlzdHM9IiRnbmF0X2V4aXN0cyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2duYXRfZXhpc3RzPSJ5ZXMiCitlY2hvICIkYXNfbWU6MTMxOTY6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19nbmF0X2V4aXN0cyIgJiYgYWNfY3ZfcHJvZ19nbmF0X2V4aXN0cz0ibm8iCitmaQorZmkKK2duYXRfZXhpc3RzPSRhY19jdl9wcm9nX2duYXRfZXhpc3RzCitpZiB0ZXN0IC1uICIkZ25hdF9leGlzdHMiOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMzIwNTogcmVzdWx0OiAkZ25hdF9leGlzdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGduYXRfZXhpc3RzIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjEzMjA4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2lmIHRlc3QgIiRhY19jdl9wcm9nX2duYXRfZXhpc3RzIiA9IG5vOyB0aGVuCisJY2ZfYWRhX21ha2U9CisJY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm8KK2Vsc2UKKworZWNobyAiJGFzX21lOjEzMjE3OiBjaGVja2luZyBmb3IgZ25hdCB2ZXJzaW9uIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGduYXQgdmVyc2lvbi4uLiAkRUNIT19DIiA+JjYKK2NmX2duYXRfdmVyc2lvbj1gJHtjZl9hZGFfbWFrZTotZ25hdG1ha2V9IC12IDI+JjEgfCBcCisJZ3JlcCAnWzAtOV0uWzAtOV1bMC05XSonIHxcCisJc2VkIC1lICcyLCRkJyAtZSAncy9bXjAtOSBcLl0vL2cnIC1lICdzL15bIF0qLy8nIC1lICdzLyAuKi8vJ2AKK2VjaG8gIiRhc19tZToxMzIyMjogcmVzdWx0OiAkY2ZfZ25hdF92ZXJzaW9uIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9nbmF0X3ZlcnNpb24iID4mNgorCitjYXNlICRjZl9nbmF0X3ZlcnNpb24gaW4KKygzLjFbMS05XSp8My5bMi05XSp8WzQtOV0uKnwyMFswLTldWzAtOV0pCisJY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzCisJOzsKKygqKQorCXsgZWNobyAiJGFzX21lOjEzMjMwOiBXQVJOSU5HOiBVbnN1cHBvcnRlZCBHTkFUIHZlcnNpb24gJGNmX2duYXRfdmVyc2lvbi4gV2UgcmVxdWlyZSAzLjExIG9yIGJldHRlci4gRGlzYWJsaW5nIEFkYTk1IGJpbmRpbmcuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogVW5zdXBwb3J0ZWQgR05BVCB2ZXJzaW9uICRjZl9nbmF0X3ZlcnNpb24uIFdlIHJlcXVpcmUgMy4xMSBvciBiZXR0ZXIuIERpc2FibGluZyBBZGE5NSBiaW5kaW5nLiIgPiYyO30KKwljZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubworCTs7Citlc2FjCisKKwkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm00Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBtNDsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjEzMjM4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTTRfZXhpc3RzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRNNF9leGlzdHMiOyB0aGVuCisgIGFjX2N2X3Byb2dfTTRfZXhpc3RzPSIkTTRfZXhpc3RzIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTTRfZXhpc3RzPSJ5ZXMiCitlY2hvICIkYXNfbWU6MTMyNTM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NNF9leGlzdHMiICYmIGFjX2N2X3Byb2dfTTRfZXhpc3RzPSJubyIKK2ZpCitmaQorTTRfZXhpc3RzPSRhY19jdl9wcm9nX000X2V4aXN0cworaWYgdGVzdCAtbiAiJE00X2V4aXN0cyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjEzMjYyOiByZXN1bHQ6ICRNNF9leGlzdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JE00X2V4aXN0cyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToxMzI2NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisJaWYgdGVzdCAiJGFjX2N2X3Byb2dfTTRfZXhpc3RzIiA9IG5vOyB0aGVuCisJCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCisJCWVjaG8gQWRhOTUgYmluZGluZyByZXF1aXJlZCBwcm9ncmFtIG00IG5vdCBmb3VuZC4gQWRhOTUgYmluZGluZyBkaXNhYmxlZC4KKwlmaQorCWlmIHRlc3QgIiRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB5ZXM7IHRoZW4KKwkJZWNobyAiJGFzX21lOjEzMjc0OiBjaGVja2luZyBpZiBHTkFUIHdvcmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgR05BVCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKKworcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgorY2F0ID4+Y29uZnRlc3QuYWRzIDw8Q0ZfRU9GCitwcm9jZWR1cmUgY29uZnRlc3Q7CitDRl9FT0YKK2NhdCA+PmNvbmZ0ZXN0LmFkYiA8PENGX0VPRgord2l0aCBUZXh0X0lPOword2l0aCBHTkFULk9TX0xpYjsKK3Byb2NlZHVyZSBjb25mdGVzdCBpcworYmVnaW4KKyAgIFRleHRfSU8uUHV0ICgiSGVsbG8gV29ybGQiKTsKKyAgIFRleHRfSU8uTmV3X0xpbmU7CisgICBHTkFULk9TX0xpYi5PU19FeGl0ICgwKTsKK2VuZCBjb25mdGVzdDsKK0NGX0VPRgoraWYgKCAkY2ZfYWRhX21ha2UgJEFEQUZMQUdTIGNvbmZ0ZXN0IDE+JjUgMj4mMSApIDsgdGhlbgorICAgaWYgKCAuL2NvbmZ0ZXN0IDE+JjUgMj4mMSApIDsgdGhlbgorICAgICAgY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzCisgICBlbHNlCisgICAgICBjZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubworICAgZmkKK2Vsc2UKKyAgIGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCitmaQorcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgorCisJCWVjaG8gIiRhc19tZToxMzMwMjogcmVzdWx0OiAkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA+JjYKKwlmaQorZmkKKworCWlmIHRlc3QJIiRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB5ZXM7IHRoZW4KKworCWVjaG8gIiRhc19tZToxMzMwOTogY2hlY2tpbmcgb3B0aW1pemF0aW9uIG9wdGlvbnMgZm9yIEFEQUZMQUdTIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgb3B0aW1pemF0aW9uIG9wdGlvbnMgZm9yIEFEQUZMQUdTLi4uICRFQ0hPX0MiID4mNgorCWNhc2UgIiRDRkxBR1MiIGluCisJKCotZyopCisKKyAJQURBRkxBR1M9IiRBREFGTEFHUyAtZyIKKworCQk7OworCWVzYWMKKwljYXNlICIkQ0ZMQUdTIiBpbgorCSgqLU8qKQorCQljZl9PX2ZsYWc9YGVjaG8gIiRDRkxBR1MiIHxzZWQgLWUgJ3MvXi4qLU8vLU8vJyAtZSAncy9bIAldLiovLydgCisKKyAJQURBRkxBR1M9IiRBREFGTEFHUyAkY2ZfT19mbGFnIgorCisJCTs7CisJZXNhYworCWVjaG8gIiRhc19tZToxMzMyNjogcmVzdWx0OiAkQURBRkxBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEFEQUZMQUdTIiA+JjYKKworZWNobyAiJGFzX21lOjEzMzI5OiBjaGVja2luZyBpZiBHTkFUUFJFUCBzdXBwb3J0cyAtVCBvcHRpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBHTkFUUFJFUCBzdXBwb3J0cyAtVCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2duYXRwcmVwX29wdF90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X2duYXRwcmVwX29wdF90PW5vCitnbmF0cHJlcCAtVCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsICYmIGNmX2N2X2duYXRwcmVwX29wdF90PXllcworCitmaQorZWNobyAiJGFzX21lOjEzMzM5OiByZXN1bHQ6ICRjZl9jdl9nbmF0cHJlcF9vcHRfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ25hdHByZXBfb3B0X3QiID4mNgordGVzdCAiJGNmX2N2X2duYXRwcmVwX29wdF90IiA9IHllcyAmJiBHTkFUUFJFUF9PUFRTPSItVCAkR05BVFBSRVBfT1BUUyIKKworZWNobyAiJGFzX21lOjEzMzQzOiBjaGVja2luZyBpZiBHTkFUIHN1cHBvcnRzIGdlbmVyaWNzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgR05BVCBzdXBwb3J0cyBnZW5lcmljcy4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuWzEtOV0qfFs0LTldLiopCisJY2ZfZ25hdF9nZW5lcmljcz15ZXMKKwk7OworKCopCisJY2ZfZ25hdF9nZW5lcmljcz1ubworCTs7Citlc2FjCitlY2hvICIkYXNfbWU6MTMzNTM6IHJlc3VsdDogJGNmX2duYXRfZ2VuZXJpY3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfZ2VuZXJpY3MiID4mNgorCitpZiB0ZXN0ICIkY2ZfZ25hdF9nZW5lcmljcyIgPSB5ZXMKK3RoZW4KKwljZl9jb21waWxlX2dlbmVyaWNzPWdlbmVyaWNzCisJY2ZfZ2VuZXJpY19vYmplY3RzPSJcJHtHRU5PQkpTfSIKK2Vsc2UKKwljZl9jb21waWxlX2dlbmVyaWNzPQorCWNmX2dlbmVyaWNfb2JqZWN0cz0KK2ZpCisKK2VjaG8gIiRhc19tZToxMzM2NTogY2hlY2tpbmcgaWYgR05BVCBzdXBwb3J0cyBTSUdJTlQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBHTkFUIHN1cHBvcnRzIFNJR0lOVC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfZ25hdF9zaWdpbnQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgorY2F0ID4+Y29uZnRlc3QuYWRzIDw8Q0ZfRU9GCit3aXRoIEFkYS5JbnRlcnJ1cHRzLk5hbWVzOworCitwYWNrYWdlIENvbmZUZXN0IGlzCisKKyAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsgIC0tICB0aGUgbmV4dCBwcmFnbWEgZXhpc3RzIHNpbmNlIDMuMTFwCisgICBwcmFnbWEgVW5yZXNlcnZlX0FsbF9JbnRlcnJ1cHRzOworICAgcHJhZ21hIFdhcm5pbmdzIChPbik7CisKKyAgIHByb3RlY3RlZCBQcm9jZXNzIGlzCisgICAgICBwcm9jZWR1cmUgU3RvcDsKKyAgICAgIGZ1bmN0aW9uIENvbnRpbnVlIHJldHVybiBCb29sZWFuOworICAgICAgcHJhZ21hIEF0dGFjaF9IYW5kbGVyIChTdG9wLCBBZGEuSW50ZXJydXB0cy5OYW1lcy5TSUdJTlQpOworICAgcHJpdmF0ZQorICAgICAgRG9uZSA6IEJvb2xlYW4gOj0gRmFsc2U7CisgICBlbmQgUHJvY2VzczsKKworZW5kIENvbmZUZXN0OworQ0ZfRU9GCitjYXQgPj5jb25mdGVzdC5hZGIgPDxDRl9FT0YKK3BhY2thZ2UgYm9keSBDb25mVGVzdCBpcworICAgcHJvdGVjdGVkIGJvZHkgUHJvY2VzcyBpcworICAgICAgcHJvY2VkdXJlIFN0b3AgaXMKKyAgICAgIGJlZ2luCisgICAgICAgICBEb25lIDo9IFRydWU7CisgICAgICBlbmQgU3RvcDsKKyAgICAgIGZ1bmN0aW9uIENvbnRpbnVlIHJldHVybiBCb29sZWFuIGlzCisgICAgICBiZWdpbgorICAgICAgICAgcmV0dXJuIG5vdCBEb25lOworICAgICAgZW5kIENvbnRpbnVlOworICAgZW5kIFByb2Nlc3M7CitlbmQgQ29uZlRlc3Q7CitDRl9FT0YKK2lmICggJGNmX2FkYV9tYWtlICRBREFGTEFHUyBjb25mdGVzdCAxPiY1IDI+JjEgKSA7IHRoZW4KKyAgICAgIGNmX2N2X2duYXRfc2lnaW50PXllcworZWxzZQorICAgY2ZfY3ZfZ25hdF9zaWdpbnQ9bm8KK2ZpCitybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCisKK2ZpCitlY2hvICIkYXNfbWU6MTM0MTM6IHJlc3VsdDogJGNmX2N2X2duYXRfc2lnaW50IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9nbmF0X3NpZ2ludCIgPiY2CisKK2lmIHRlc3QgJGNmX2N2X2duYXRfc2lnaW50ID0geWVzIDsgdGhlbgorCVVTRV9HTkFUX1NJR0lOVD0iIgorZWxzZQorCVVTRV9HTkFUX1NJR0lOVD0iIyIKK2ZpCisKK2NmX2duYXRfbGlicmFyaWVzPW5vCitjZl9nbmF0X3Byb2plY3RzPW5vCisKK2lmIHRlc3QgIiRlbmFibGVfZ25hdF9wcm9qZWN0cyIgIT0gbm8gOyB0aGVuCitlY2hvICIkYXNfbWU6MTM0MjY6IGNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgcHJvamVjdCBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgcHJvamVjdCBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuWzAtOV0qKQorCTs7CisoKikKKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShjeWd3aW4qfG1zeXMqKQorCQk7OworCSgqKQorCQlta2RpciBjb25mdGVzdC5zcmMgY29uZnRlc3QuYmluIGNvbmZ0ZXN0LmxpYgorCQljZCBjb25mdGVzdC5zcmMKKwkJcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgorCQljYXQgPj5saWJyYXJ5LmdwciA8PENGX0VPRgorcHJvamVjdCBMaWJyYXJ5IGlzCisgIEtpbmQgOj0gRXh0ZXJuYWwgKCJMSUJfS0lORCIpOworICBmb3IgTGlicmFyeV9OYW1lIHVzZSAiQ29uZlRlc3QiOworICBmb3IgT2JqZWN0X0RpciB1c2UgIi4iOworICBmb3IgTGlicmFyeV9BTElfRGlyIHVzZSBFeHRlcm5hbCgiTElCUkFSWV9ESVIiKTsKKyAgZm9yIExpYnJhcnlfVmVyc2lvbiB1c2UgRXh0ZXJuYWwgKCJTT05BTUUiKTsKKyAgZm9yIExpYnJhcnlfS2luZCB1c2UgS2luZDsKKyAgZm9yIExpYnJhcnlfRGlyIHVzZSBFeHRlcm5hbCgiQlVJTERfRElSIik7CisgIFNvdXJjZV9EaXIgOj0gRXh0ZXJuYWwgKCJTT1VSQ0VfRElSIik7CisgIGZvciBTb3VyY2VfRGlycyB1c2UgKFNvdXJjZV9EaXIpOworZW5kIExpYnJhcnk7CitDRl9FT0YKKwkJY2F0ID4+Y29uZnBhY2thZ2UuYWRzIDw8Q0ZfRU9GCitwYWNrYWdlIENvbmZQYWNrYWdlIGlzCisgICBwcm9jZWR1cmUgY29uZnRlc3Q7CitlbmQgQ29uZlBhY2thZ2U7CitDRl9FT0YKKwkJY2F0ID4+Y29uZnBhY2thZ2UuYWRiIDw8Q0ZfRU9GCit3aXRoIFRleHRfSU87CitwYWNrYWdlIGJvZHkgQ29uZlBhY2thZ2UgaXMKKyAgIHByb2NlZHVyZSBjb25mdGVzdCBpcworICAgYmVnaW4KKyAgICAgIFRleHRfSU8uUHV0ICgiSGVsbG8gV29ybGQiKTsKKyAgICAgIFRleHRfSU8uTmV3X0xpbmU7CisgICBlbmQgY29uZnRlc3Q7CitlbmQgQ29uZlBhY2thZ2U7CitDRl9FT0YKKwkJaWYgKCAkY2ZfYWRhX21ha2UgJEFEQUZMQUdTIFwKKwkJCQktUGxpYnJhcnkuZ3ByIFwKKwkJCQktWEJVSUxEX0RJUj1gY2QgLi4vY29uZnRlc3QuYmluO3B3ZGAgXAorCQkJCS1YTElCUkFSWV9ESVI9YGNkIC4uL2NvbmZ0ZXN0LmxpYjtwd2RgIFwKKwkJCQktWFNPVVJDRV9ESVI9YHB3ZGAgXAorCQkJCS1YU09OQU1FPWxpYkNvbmZUZXN0LnNvLjEgXAorCQkJCS1YTElCX0tJTkQ9c3RhdGljIDE+JjUgMj4mMSApIDsgdGhlbgorCQkJY2ZfZ25hdF9wcm9qZWN0cz15ZXMKKwkJZmkKKwkJY2QgLi4KKwkJaWYgdGVzdCAtZiBjb25mdGVzdC5saWIvY29uZnBhY2thZ2UuYWxpCisJCXRoZW4KKwkJCWNmX2duYXRfbGlicmFyaWVzPXllcworCQlmaQorCQlybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCisJCTs7CisJZXNhYworCTs7Citlc2FjCitlY2hvICIkYXNfbWU6MTM0ODY6IHJlc3VsdDogJGNmX2duYXRfcHJvamVjdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfcHJvamVjdHMiID4mNgorZmkgIyBlbmFibGVfZ25hdF9wcm9qZWN0cworCitpZiB0ZXN0ICRjZl9nbmF0X3Byb2plY3RzID0geWVzCit0aGVuCisJZWNobyAiJGFzX21lOjEzNDkyOiBjaGVja2luZyBpZiBHTkFUIHN1cHBvcnRzIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCWVjaG8gIiRhc19tZToxMzQ5NDogcmVzdWx0OiAkY2ZfZ25hdF9saWJyYXJpZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfbGlicmFyaWVzIiA+JjYKK2ZpCisKK2lmIHRlc3QgIiRjZl9nbmF0X3Byb2plY3RzIiA9IHllcwordGhlbgorCVVTRV9PTERfTUFLRVJVTEVTPSIjIgorCVVTRV9HTkFUX1BST0pFQ1RTPSIiCitlbHNlCisJVVNFX09MRF9NQUtFUlVMRVM9IiIKKwlVU0VfR05BVF9QUk9KRUNUUz0iIyIKK2ZpCisKK2lmIHRlc3QgIiRjZl9nbmF0X2xpYnJhcmllcyIgPSB5ZXMKK3RoZW4KKwlVU0VfR05BVF9MSUJSQVJJRVM9IiIKK2Vsc2UKKwlVU0VfR05BVF9MSUJSQVJJRVM9IiMiCitmaQorCitlY2hvICIkYXNfbWU6MTM1MTQ6IGNoZWNraW5nIGZvciBhZGEtY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWRhLWNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1jb21waWxlciBvciAtLXdpdGhvdXQtYWRhLWNvbXBpbGVyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9hZGFfY29tcGlsZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYWRhX2NvbXBpbGVyIgorICBjZl9hZGFfY29tcGlsZXI9JHdpdGh2YWwKK2Vsc2UKKyAgY2ZfYWRhX2NvbXBpbGVyPWduYXRtYWtlCitmaTsKKworZWNobyAiJGFzX21lOjEzNTI1OiByZXN1bHQ6ICRjZl9hZGFfY29tcGlsZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2FkYV9jb21waWxlciIgPiY2CisKKwkJY2ZfYWRhX3BhY2thZ2U9dGVybWluYWxfaW50ZXJmYWNlCisKK2VjaG8gIiRhc19tZToxMzUzMDogY2hlY2tpbmcgZm9yIGFkYS1pbmNsdWRlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFkYS1pbmNsdWRlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1pbmNsdWRlIG9yIC0td2l0aG91dC1hZGEtaW5jbHVkZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWRhX2luY2x1ZGUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYWRhX2luY2x1ZGUiCisKK2Vsc2UKKyAgd2l0aHZhbD0iJHtBREFfSU5DTFVERTotJHByZWZpeC9zaGFyZS9hZGEvYWRhaW5jbHVkZX0iCitmaTsgaWYgdGVzdCAtbiAiJHByZWZpeC9zaGFyZS9hZGEvYWRhaW5jbHVkZSIgOyB0aGVuCisKK2lmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorZWxzZQorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitmaQorCitjYXNlICIuJHdpdGh2YWwiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGh2YWw9IiR3aXRodmFsIgorCWNhc2UgIi4kd2l0aHZhbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjEzNTY2OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJOzsKK2VzYWMKKworZmkKK2V2YWwgQURBX0lOQ0xVREU9IiR3aXRodmFsIgorCitlY2hvICIkYXNfbWU6MTM1NzU6IHJlc3VsdDogJEFEQV9JTkNMVURFIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBREFfSU5DTFVERSIgPiY2CisKK2VjaG8gIiRhc19tZToxMzU3ODogY2hlY2tpbmcgZm9yIGFkYS1vYmplY3RzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFkYS1vYmplY3RzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1vYmplY3RzIG9yIC0td2l0aG91dC1hZGEtb2JqZWN0cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWRhX29iamVjdHMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYWRhX29iamVjdHMiCisKK2Vsc2UKKyAgd2l0aHZhbD0iJHtBREFfT0JKRUNUUzotJHByZWZpeC9saWIvYWRhL2FkYWxpYn0iCitmaTsgaWYgdGVzdCAtbiAiJHByZWZpeC9saWIvYWRhL2FkYWxpYiIgOyB0aGVuCisKK2lmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorZWxzZQorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitmaQorCitjYXNlICIuJHdpdGh2YWwiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGh2YWw9IiR3aXRodmFsIgorCWNhc2UgIi4kd2l0aHZhbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjEzNjE0OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJOzsKK2VzYWMKKworZmkKK2V2YWwgQURBX09CSkVDVFM9IiR3aXRodmFsIgorCitlY2hvICIkYXNfbWU6MTM2MjM6IHJlc3VsdDogJEFEQV9PQkpFQ1RTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBREFfT0JKRUNUUyIgPiY2CisKK2VjaG8gIiRhc19tZToxMzYyNjogY2hlY2tpbmcgaWYgYW4gQWRhOTUgc2hhcmVkLWxpYnJhcnkgc2hvdWxkIGJlIGJ1aWx0IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgYW4gQWRhOTUgc2hhcmVkLWxpYnJhcnkgc2hvdWxkIGJlIGJ1aWx0Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1zaGFyZWRsaWIgb3IgLS13aXRob3V0LWFkYS1zaGFyZWRsaWIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2FkYV9zaGFyZWRsaWIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYWRhX3NoYXJlZGxpYiIKKyAgd2l0aF9hZGFfc2hhcmVkbGliPSR3aXRodmFsCitlbHNlCisgIHdpdGhfYWRhX3NoYXJlZGxpYj1ubworZmk7CitlY2hvICIkYXNfbWU6MTM2MzY6IHJlc3VsdDogJHdpdGhfYWRhX3NoYXJlZGxpYiIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9hZGFfc2hhcmVkbGliIiA+JjYKKworQURBX1NIQVJFRExJQj0nbGliJChMSUJfTkFNRSkuc28uMScKK01BS0VfQURBX1NIQVJFRExJQj0iIyIKKworaWYgdGVzdCAieCR3aXRoX2FkYV9zaGFyZWRsaWIiICE9IHhubwordGhlbgorCU1BS0VfQURBX1NIQVJFRExJQj0KKwlpZiB0ZXN0ICJ4JHdpdGhfYWRhX3NoYXJlZGxpYiIgIT0geHllcworCXRoZW4KKwkJQURBX1NIQVJFRExJQj0iJHdpdGhfYWRhX3NoYXJlZGxpYiIKKwlmaQorZmkKKworCWVsc2UKKwkJeyB7IGVjaG8gIiRhc19tZToxMzY1MjogZXJyb3I6IE5vIHVzYWJsZSBBZGEgY29tcGlsZXIgZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogTm8gdXNhYmxlIEFkYSBjb21waWxlciBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCitlbHNlCisJeyB7IGVjaG8gIiRhc19tZToxMzY1NzogZXJyb3I6IFRoZSBBZGEgY29tcGlsZXIgaXMgbmVlZGVkIGZvciB0aGlzIHBhY2thZ2UiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogVGhlIEFkYSBjb21waWxlciBpcyBuZWVkZWQgZm9yIHRoaXMgcGFja2FnZSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBub3QgbmVlZGVkCitUSU5GT19MREZMQUdTMj0KKworVElORk9fTElCUz0KKworIyMjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBpbmNsdWRlLWRpcmVjdG9yaWVzIHRvIGJlIGdlbmVyYXRlZAorCitpZiB0ZXN0ICIkc3JjZGlyIiAhPSAiLiI7IHRoZW4KKwlDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9Ly4uL2luY2x1ZGUgJENQUEZMQUdTIgorZmkKK0NQUEZMQUdTPSItSS4uL2luY2x1ZGUgJENQUEZMQUdTIgoraWYgdGVzdCAiJHNyY2RpciIgIT0gIi4iOyB0aGVuCisJQ1BQRkxBR1M9Ii1JXCR7c3JjZGlyfSAkQ1BQRkxBR1MiCitmaQorQ1BQRkxBR1M9Ii1JLiAkQ1BQRkxBR1MiCisKK0FDUFBGTEFHUz0iLUkuIC1JLi4vaW5jbHVkZSAtSS4uLy4uL2luY2x1ZGUgJEFDUFBGTEFHUyIKK2lmIHRlc3QgIiRzcmNkaXIiICE9ICIuIjsgdGhlbgorCUFDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9Ly4uLy4uL2luY2x1ZGUgJEFDUFBGTEFHUyIKK2ZpCitpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwlBQ1BQRkxBR1M9IiRBQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKK2VsaWYgdGVzdCAiJGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiOyB0aGVuCisJaWYgdGVzdCAiJGluY2x1ZGVkaXIiID0gJyR7cHJlZml4fS9pbmNsdWRlJyA7IHRoZW4KKwkJaWYgdGVzdCB4JHByZWZpeCAhPSB4L3VzciA7IHRoZW4KKwkJCUFDUFBGTEFHUz0iJEFDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgorCQlmaQorCWVsc2UKKwkJQUNQUEZMQUdTPSIkQUNQUEZMQUdTIC1JXCR7aW5jbHVkZWRpcn0iCisJZmkKK2ZpCisKKyMjIyBCdWlsZCB1cCBwaWVjZXMgZm9yIG1ha2VmaWxlIHJ1bGVzCitlY2hvICIkYXNfbWU6MTM2OTc6IGNoZWNraW5nIGRlZmF1bHQgbGlicmFyeSBzdWZmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBkZWZhdWx0IGxpYnJhcnkgc3VmZml4Li4uICRFQ0hPX0MiID4mNgorCisJY2FzZSAkREZUX0xXUl9NT0RFTCBpbgorCShsaWJ0b29sKSBERlRfQVJHX1NVRkZJWD0nJyAgIDs7CisJKG5vcm1hbCkgIERGVF9BUkdfU1VGRklYPScnICAgOzsKKwkoZGVidWcpICAgREZUX0FSR19TVUZGSVg9J19nJyA7OworCShwcm9maWxlKSBERlRfQVJHX1NVRkZJWD0nX3AnIDs7CisJKHNoYXJlZCkgIERGVF9BUkdfU1VGRklYPScnICAgOzsKKwllc2FjCisJdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmIERGVF9BUkdfU1VGRklYPSIke0xJQl9TVUZGSVh9JHtERlRfQVJHX1NVRkZJWH0iCitlY2hvICIkYXNfbWU6MTM3MDg6IHJlc3VsdDogJERGVF9BUkdfU1VGRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRERlRfQVJHX1NVRkZJWCIgPiY2CisKK2VjaG8gIiRhc19tZToxMzcxMTogY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4Li4uICRFQ0hPX0MiID4mNgorCisJY2FzZSBYJERGVF9MV1JfTU9ERUwgaW4KKwkoWGxpYnRvb2wpCisJCURGVF9MSUJfU1VGRklYPScubGEnCisJCURGVF9ERVBfU1VGRklYPSRERlRfTElCX1NVRkZJWAorCQk7OworCShYZGVidWcpCisJCURGVF9MSUJfU1VGRklYPSdfZy5hJworCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJOzsKKwkoWHByb2ZpbGUpCisJCURGVF9MSUJfU1VGRklYPSdfcC5hJworCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJOzsKKwkoWHNoYXJlZCkKKwkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkJKGFpeFs1LTddKikKKwkJCURGVF9MSUJfU1VGRklYPScuc28nCisJCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJCTs7CisJCShjeWd3aW4qfG1zeXMqfG1pbmd3KikKKwkJCURGVF9MSUJfU1VGRklYPScuZGxsJworCQkJREZUX0RFUF9TVUZGSVg9Jy5kbGwuYScKKwkJCTs7CisJCShkYXJ3aW4qKQorCQkJREZUX0xJQl9TVUZGSVg9Jy5keWxpYicKKwkJCURGVF9ERVBfU1VGRklYPSRERlRfTElCX1NVRkZJWAorCQkJOzsKKwkJKGhwdXgqKQorCQkJY2FzZSAkdGFyZ2V0IGluCisJCQkoaWE2NCopCisJCQkJREZUX0xJQl9TVUZGSVg9Jy5zbycKKwkJCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJCQk7OworCQkJKCopCisJCQkJREZUX0xJQl9TVUZGSVg9Jy5zbCcKKwkJCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJCQk7OworCQkJZXNhYworCQkJOzsKKwkJKCopCisJCQlERlRfTElCX1NVRkZJWD0nLnNvJworCQkJREZUX0RFUF9TVUZGSVg9JERGVF9MSUJfU1VGRklYCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCURGVF9MSUJfU1VGRklYPScuYScKKwkJREZUX0RFUF9TVUZGSVg9JERGVF9MSUJfU1VGRklYCisJCTs7CisJZXNhYworCWlmIHRlc3QgLW4gIiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCisJdGhlbgorCQlERlRfTElCX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7REZUX0xJQl9TVUZGSVh9IgorCQlERlRfREVQX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7REZUX0RFUF9TVUZGSVh9IgorCWZpCitlY2hvICIkYXNfbWU6MTM3Njk6IHJlc3VsdDogJERGVF9ERVBfU1VGRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRERlRfREVQX1NVRkZJWCIgPiY2CisKK2VjaG8gIiRhc19tZToxMzc3MjogY2hlY2tpbmcgZGVmYXVsdCBvYmplY3QgZGlyZWN0b3J5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZGVmYXVsdCBvYmplY3QgZGlyZWN0b3J5Li4uICRFQ0hPX0MiID4mNgorCisJY2FzZSAkREZUX0xXUl9NT0RFTCBpbgorCShsaWJ0b29sKSBERlRfT0JKX1NVQkRJUj0nb2JqX2xvJyAgOzsKKwkobm9ybWFsKSAgREZUX09CSl9TVUJESVI9J29iamVjdHMnIDs7CisJKGRlYnVnKSAgIERGVF9PQkpfU1VCRElSPSdvYmpfZycgOzsKKwkocHJvZmlsZSkgREZUX09CSl9TVUJESVI9J29ial9wJyA7OworCShzaGFyZWQpCisJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJCShjeWd3aW58bXN5cykKKwkJCURGVF9PQkpfU1VCRElSPSdvYmplY3RzJyA7OworCQkoKikKKwkJCURGVF9PQkpfU1VCRElSPSdvYmpfcycgOzsKKwkJZXNhYworCWVzYWMKK2VjaG8gIiRhc19tZToxMzc4ODogcmVzdWx0OiAkREZUX09CSl9TVUJESVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JERGVF9PQkpfU1VCRElSIiA+JjYKKworIyMjIFNldCB1cCBsb3ctbGV2ZWwgdGVybWluZm8gZGVwZW5kZW5jaWVzIGZvciBtYWtlZmlsZXMuCisKK2lmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9IHNoYXJlZCA7IHRoZW4KKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShjeWd3aW4qKQorCQkjICJsaWIiIGZpbGVzIGhhdmUgIi5kbGwuYSIgc3VmZml4LCAiY3lnIiBmaWxlcyBoYXZlICIuZGxsIgorCQk7OworCShtc3lzKikKKwkJIyAibGliIiBmaWxlcyBoYXZlICIuZGxsLmEiIHN1ZmZpeCwgIm1zeXMtIiBmaWxlcyBoYXZlICIuZGxsIgorCQk7OworCWVzYWMKK2ZpCisKK1VTRV9DRkdfU1VGRklYPSR7REZUX0FSR19TVUZGSVh9CisKKyMjIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgZm9yIHdoaWNoIHdlJ2xsIGN1c3RvbWl6ZSBtYWtlZmlsZXMKKyMjIyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb21waWxlLXJ1bGVzLgorCitTVUJfTUFLRUZJTEVTPSJnZW4vYWRhY3Vyc2VzJHtVU0VfQVJHX1NVRkZJWH0tY29uZmlnOmdlbi9hZGFjdXJzZXMtY29uZmlnLmluIgorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIE5DVVJTRVNfUEFUSFNFUCAnJFBBVEhfU0VQQVJBVE9SJworRU9GCisKKyMjIyBOb3cgdGhhdCB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMsIGFkZCB0aGUgY29tcGlsZXItd2FybmluZ3MsIGlmIGFueQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRFWFRSQV9DRkxBR1MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1RFU1RfQVJHMj0KKworVEVTVF9MSUJTMj0KKworTkNVUlNFU19TSExJQjI9InNoIC1jIgorCitBREFfU1VCRElSUz0iaW5jbHVkZSBnZW4gc3JjIGRvYyIKK2lmIHRlc3QgIngkY2Zfd2l0aF90ZXN0cyIgIT0gInhubyIgOyB0aGVuCisJQURBX1NVQkRJUlM9IiRBREFfU1VCRElSUyBzYW1wbGVzIgorZmkKK2ZvciBjZl9kaXIgaW4gJEFEQV9TVUJESVJTCitkbworCVNVQl9NQUtFRklMRVM9IiRTVUJfTUFLRUZJTEVTICRjZl9kaXIvTWFrZWZpbGUiCitkb25lCisKK05DVVJTRVNfVFJFRT0iIyIKKworRVhURVJOQUxfVFJFRT0KKworIyBtYXRjaCBsYXlvdXQgdXNlZCBieSBtYWtlLXRhci5zaAorQURBSFRNTF9ESVI9Li4vZG9jL2FkYQorCithY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgJFNVQl9NQUtFRklMRVMgZG9jL2FkYWN1cnNlcyR7REZUX0FSR19TVUZGSVh9LWNvbmZpZy4xOmRvYy9NS2FkYV9jb25maWcuaW4gTWFrZWZpbGUiCithY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgorIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCisjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuCisjIEl0IGlzIG5vdCB1c2VmdWwgb24gb3RoZXIgc3lzdGVtcy4gIElmIGl0IGNvbnRhaW5zIHJlc3VsdHMgeW91IGRvbid0CisjIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KKyMKKyMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBjYWNoZSBmaWxlIGlmIHlvdSBnaXZlIGl0CisjIHRoZSAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVuIGNvbmZpZ3VyZS4KKyMKKyMgYGFjX2N2X2Vudl9mb28nIHZhcmlhYmxlcyAoc2V0IG9yIHVuc2V0KSB3aWxsIGJlIG92ZXJyaWRlbiB3aGVuCisjIGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhlCisjIGZvbGxvd2luZyB2YWx1ZXMuCisKK19BQ0VPRgorCisjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAorIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KKyMgU28sIGRvbid0IHB1dCBuZXdsaW5lcyBpbiBjYWNoZSB2YXJpYWJsZXMnIHZhbHVlcy4KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAorIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KK3sKKyAgKHNldCkgMj4mMSB8CisgICAgY2FzZSBgKGFjX3NwYWNlPScgJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KKyAgICAqYWNfc3BhY2U9XCAqKQorICAgICAgIyBgc2V0JyBkb2VzIG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXMgKGRvdWJsZS1xdW90ZQorICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXCkuCisgICAgICBzZWQgLW4gXAorICAgICAgICAicy8nLydcXFxcJycvZzsKKyAgICAJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiCisgICAgICA7OworICAgICopCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgorICAgICAgc2VkIC1uIFwKKyAgICAgICAgInMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9XFwyL3AiCisgICAgICA7OworICAgIGVzYWM7Cit9IHwKKyAgc2VkICcKKyAgICAgdCBjbGVhcgorICAgICA6IGNsZWFyCisgICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8KKyAgICAgdCBlbmQKKyAgICAgL15hY19jdl9lbnYvIXMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9LworICAgICA6IGVuZCcgPj5jb25mY2FjaGUKK2lmIGNtcCAtcyAkY2FjaGVfZmlsZSBjb25mY2FjaGU7IHRoZW4gOjsgZWxzZQorICBpZiB0ZXN0IC13ICRjYWNoZV9maWxlOyB0aGVuCisgICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYgZWNobyAidXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiCisgICAgY2F0IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUKKyAgZWxzZQorICAgIGVjaG8gIm5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIgorICBmaQorZmkKK3JtIC1mIGNvbmZjYWNoZQorCit0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4CisjIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KK3Rlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKworIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSAkKHNyY2RpciksCisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKKyMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KK2lmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCisgIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAldKj0veworcy86KlwkKHNyY2Rpcik6Ki86LzsKK3MvOipcJHtzcmNkaXJ9OiovOi87CitzLzoqQHNyY2RpckA6Ki86LzsKK3MvXlwoW149XSo9WyAJXSpcKToqL1wxLzsKK3MvOiokLy87CitzL15bXj1dKj1bIAldKiQvLzsKK30nCitmaQorCitERUZTPS1ESEFWRV9DT05GSUdfSAorCis6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9CithY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcworYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyAkQ09ORklHX1NUQVRVUyIKK3sgZWNobyAiJGFzX21lOjE0MDAwOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1CitlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQorY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZS4KKyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorIyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2VmdWwgZm9yIGRlYnVnZ2luZworIyBjb25maWd1cmUsIGlzIGluIGNvbmZpZy5sb2cgaWYgaXQgZXhpc3RzLgorCitkZWJ1Zz1mYWxzZQorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KK2FjX2NzX2ludm9jYXRpb249IlwkMCBcJEAiCisKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKKyMgQmUgQm91cm5lIGNvbXBhdGlibGUKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorZWxpZiB0ZXN0IC1uICIke0JBU0hfVkVSU0lPTitzZXR9IiAmJiAoc2V0IC1vIHBvc2l4KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgc2V0IC1vIHBvc2l4CitmaQorCisjIE5hbWUgb2YgdGhlIGV4ZWN1dGFibGUuCithc19tZT1gZWNobyAiJDAiIHxzZWQgJ3MsLipbXFwvXSwsJ2AKKworaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCitlY2hvID5jb25mJCQuZmlsZQoraWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCisgICMgYW5kIGMpIHdpbGwgcmVtYWluIHZhbGlkIG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERKR1BQIDIuMDQpLgorICBpZiB0ZXN0IC1mIGNvbmYkJC5leGU7IHRoZW4KKyAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCisgICAgYXNfbG5fcz0nY3AgLXAnCisgIGVsc2UKKyAgICBhc19sbl9zPSdsbiAtcycKKyAgZmkKK2VsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2xuX3M9bG4KK2Vsc2UKKyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKKworYXNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgorCisjIFN1cHBvcnQgdW5zZXQgd2hlbiBwb3NzaWJsZS4KK2lmIChGT089Rk9POyB1bnNldCBGT08pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc191bnNldD11bnNldAorZWxzZQorICBhc191bnNldD1mYWxzZQorZmkKKworIyBOTFMgbnVpc2FuY2VzLgorJGFzX3Vuc2V0IExBTkcgfHwgdGVzdCAiJHtMQU5HK3NldH0iICE9IHNldCB8fCB7IExBTkc9QzsgZXhwb3J0IExBTkc7IH0KKyRhc191bnNldCBMQ19BTEwgfHwgdGVzdCAiJHtMQ19BTEwrc2V0fSIgIT0gc2V0IHx8IHsgTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IH0KKyRhc191bnNldCBMQ19USU1FIHx8IHRlc3QgIiR7TENfVElNRStzZXR9IiAhPSBzZXQgfHwgeyBMQ19USU1FPUM7IGV4cG9ydCBMQ19USU1FOyB9CiskYXNfdW5zZXQgTENfQ1RZUEUgfHwgdGVzdCAiJHtMQ19DVFlQRStzZXR9IiAhPSBzZXQgfHwgeyBMQ19DVFlQRT1DOyBleHBvcnQgTENfQ1RZUEU7IH0KKyRhc191bnNldCBMQU5HVUFHRSB8fCB0ZXN0ICIke0xBTkdVQUdFK3NldH0iICE9IHNldCB8fCB7IExBTkdVQUdFPUM7IGV4cG9ydCBMQU5HVUFHRTsgfQorJGFzX3Vuc2V0IExDX0NPTExBVEUgfHwgdGVzdCAiJHtMQ19DT0xMQVRFK3NldH0iICE9IHNldCB8fCB7IExDX0NPTExBVEU9QzsgZXhwb3J0IExDX0NPTExBVEU7IH0KKyRhc191bnNldCBMQ19OVU1FUklDIHx8IHRlc3QgIiR7TENfTlVNRVJJQytzZXR9IiAhPSBzZXQgfHwgeyBMQ19OVU1FUklDPUM7IGV4cG9ydCBMQ19OVU1FUklDOyB9CiskYXNfdW5zZXQgTENfTUVTU0FHRVMgfHwgdGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiAhPSBzZXQgfHwgeyBMQ19NRVNTQUdFUz1DOyBleHBvcnQgTENfTUVTU0FHRVM7IH0KKworIyBJRlMKKyMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuCithc19ubD0nCisnCitJRlM9IiAJJGFzX25sIgorCisjIENEUEFUSC4KKyRhc191bnNldCBDRFBBVEggfHwgdGVzdCAiJHtDRFBBVEgrc2V0fSIgIT0gc2V0IHx8IHsgQ0RQQVRIPTo7IGV4cG9ydCBDRFBBVEg7IH0KKworZXhlYyA2PiYxCisKK19BQ0VPRgorCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuCitpZiB0ZXN0IC1uICIkYWNfY29uZmlnX2ZpbGVzIjsgdGhlbgorICBlY2hvICJjb25maWdfZmlsZXM9XCIkYWNfY29uZmlnX2ZpbGVzXCIiID4+JENPTkZJR19TVEFUVVMKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19jb25maWdfaGVhZGVycyI7IHRoZW4KKyAgZWNobyAiY29uZmlnX2hlYWRlcnM9XCIkYWNfY29uZmlnX2hlYWRlcnNcIiIgPj4kQ09ORklHX1NUQVRVUworZmkKKworaWYgdGVzdCAtbiAiJGFjX2NvbmZpZ19saW5rcyI7IHRoZW4KKyAgZWNobyAiY29uZmlnX2xpbmtzPVwiJGFjX2NvbmZpZ19saW5rc1wiIiA+PiRDT05GSUdfU1RBVFVTCitmaQorCitpZiB0ZXN0IC1uICIkYWNfY29uZmlnX2NvbW1hbmRzIjsgdGhlbgorICBlY2hvICJjb25maWdfY29tbWFuZHM9XCIkYWNfY29uZmlnX2NvbW1hbmRzXCIiID4+JENPTkZJR19TVEFUVVMKK2ZpCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XEVPRgorCithY19jc191c2FnZT0iXAorXGAkYXNfbWUnIGluc3RhbnRpYXRlcyBmaWxlcyBmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlCitjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisKK1VzYWdlOiAkMCBbT1BUSU9OU10gW0ZJTEVdLi4uCisKKyAgLWgsIC0taGVscCAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKyAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzCisgICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBieSByZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlvbnMKKyAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQorICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQorICAtLWhlYWRlcj1GSUxFWzpURU1QTEFURV0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQorCitDb25maWd1cmF0aW9uIGZpbGVzOgorJGNvbmZpZ19maWxlcworCitDb25maWd1cmF0aW9uIGhlYWRlcnM6CiskY29uZmlnX2hlYWRlcnMKKworQ29uZmlndXJhdGlvbiBjb21tYW5kczoKKyRjb25maWdfY29tbWFuZHMKKworUmVwb3J0IGJ1Z3MgdG8gPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4uIgorRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCithY19jc192ZXJzaW9uPSJcXAorY29uZmlnLnN0YXR1cworY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjUyLjIwMTQxMjA0LAorICB3aXRoIG9wdGlvbnMgXFwiYGVjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvW1xcIiJcYFwkXS9cXFxcJi9nJ2BcXCIKKworQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorc3JjZGlyPSRzcmNkaXIKK0lOU1RBTEw9IiRJTlNUQUxMIgorRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XEVPRgorIyBJZiBubyBmaWxlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHRoZW4gd2UgbmVlZCB0byBwcm92aWRlIGRlZmF1bHQKKyMgdmFsdWUuICBCeSB3ZSBuZWVkIHRvIGtub3cgaWYgZmlsZXMgd2VyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCithY19uZWVkX2RlZmF1bHRzPToKK3doaWxlIHRlc3QgJCMgIT0gMAorZG8KKyAgY2FzZSAkMSBpbgorICAtLSo9KikKKyAgICBhY19vcHRpb249YGV4cHIgIngkMSIgOiAneFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz1gZXhwciAieCQxIiA6ICd4W149XSo9XCguKlwpJ2AKKyAgICBzaGlmdAorICAgIHNldCBkdW1teSAiJGFjX29wdGlvbiIgIiRhY19vcHRhcmciICR7MSsiJEAifQorICAgIHNoaWZ0CisgICAgOzsKKyAgLSopOzsKKyAgKikgIyBUaGlzIGlzIG5vdCBhbiBvcHRpb24sIHNvIHRoZSB1c2VyIGhhcyBwcm9iYWJseSBnaXZlbiBleHBsaWNpdAorICAgICAjIGFyZ3VtZW50cy4KKyAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIGVzYWMKKworICBjYXNlICQxIGluCisgICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQorICAgIGVjaG8gInJ1bm5pbmcgJFNIRUxMICQwICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24iCisgICAgZXhlYyAkU0hFTEwgJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIDs7CitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XEVPRgorICAtLXZlcnNpb24gfCAtLXZlcnMqIHwgLVYgKQorICAgIGVjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhpdCAwIDs7CisgIC0taGUgfCAtLWgpCisgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKKyAgICB7IHsgZWNobyAiJGFzX21lOjE0MTc2OiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTs7CisgIC0taGVscCB8IC0taGVsIHwgLWggKQorICAgIGVjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgMCA7OworICAtLWRlYnVnIHwgLS1kKiB8IC1kICkKKyAgICBkZWJ1Zz06IDs7CisgIC0tZmlsZSB8IC0tZmlsIHwgLS1maSB8IC0tZiApCisgICAgc2hpZnQKKyAgICBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgJDEiCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGVhZGVyIHwgLS1oZWFkZSB8IC0taGVhZCB8IC0taGVhICkKKyAgICBzaGlmdAorICAgIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgJDEiCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisKKyAgIyBUaGlzIGlzIGFuIGVycm9yLgorICAtKikgeyB7IGVjaG8gIiRhc19tZToxNDE5NTogZXJyb3I6IHVucmVjb2duaXplZCBvcHRpb246ICQxCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAkMQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKKworICAqKSBhY19jb25maWdfdGFyZ2V0cz0iJGFjX2NvbmZpZ190YXJnZXRzICQxIiA7OworCisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworZXhlYyA1Pj5jb25maWcubG9nCitjYXQgPiY1IDw8IF9BQ0VPRgorCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgUnVubmluZyBjb25maWcuc3RhdHVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgJGFzX21lIDIuNTIuMjAxNDEyMDQsIGV4ZWN1dGVkIHdpdGgKKyAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUworICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKKyAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUworICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTCisgID4gJGFjX2NzX2ludm9jYXRpb24KK29uIGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAorCitfQUNFT0YKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PEVPRgorIworIyBJTklULUNPTU1BTkRTIHNlY3Rpb24uCisjCisKKyMjIyBTcGVjaWFsIGluaXRpYWxpemF0aW9uIGNvbW1hbmRzLCB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gZnJvbSB0aGUKKyMjIyBjb25maWd1cmF0aW9uLXJ1biBpbnRvIGNvbmZpZy5zdGF0dXMKKworQVdLPSIkQVdLIgorREZUX0FSR19TVUZGSVg9IiRERlRfQVJHX1NVRkZJWCIKK0RGVF9MV1JfTU9ERUw9IiRERlRfTFdSX01PREVMIgorTElCX05BTUU9IiRMSUJfTkFNRSIKK0xJQl9QUkVGSVg9IiRMSUJfUFJFRklYIgorTElCX1NVRkZJWD0iJExJQl9TVUZGSVgiCitMTl9TPSIkTE5fUyIKK05DVVJTRVNfTUFKT1I9IiROQ1VSU0VTX01BSk9SIgorTkNVUlNFU19NSU5PUj0iJE5DVVJTRVNfTUlOT1IiCitOQ1VSU0VTX1BBVENIPSIkTkNVUlNFU19QQVRDSCIKK1VTRV9PTERfTUFLRVJVTEVTPSIkVVNFX09MRF9NQUtFUlVMRVMiCitjZl9jdl9hYmlfdmVyc2lvbj0iJGNmX2N2X2FiaV92ZXJzaW9uIgorY2ZfY3ZfcmVsX3ZlcnNpb249IiRjZl9jdl9yZWxfdmVyc2lvbiIKK2NmX2N2X3JtX3NvX2xvY3M9IiRjZl9jdl9ybV9zb19sb2NzIgorY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nJGNmX2N2X3NoYXJlZF9zb25hbWUnCitjZl9jdl9zaGxpYl92ZXJzaW9uPSIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIKK2NmX2N2X3NobGliX3ZlcnNpb25faW5maXg9IiRjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4IgorY2ZfY3Zfc3lzdGVtX25hbWU9IiRjZl9jdl9zeXN0ZW1fbmFtZSIKK2hvc3Q9IiRob3N0IgordGFyZ2V0PSIkdGFyZ2V0IgorCitFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCitmb3IgYWNfY29uZmlnX3RhcmdldCBpbiAkYWNfY29uZmlnX3RhcmdldHMKK2RvCisgIGNhc2UgIiRhY19jb25maWdfdGFyZ2V0IiBpbgorICAjIEhhbmRsaW5nIG9mIGFyZ3VtZW50cy4KKyAgIiRTVUJfTUFLRUZJTEVTIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAkU1VCX01BS0VGSUxFUyIgOzsKKyAgImRvYy9hZGFjdXJzZXMke0RGVF9BUkdfU1VGRklYfS1jb25maWcuMSIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZG9jL2FkYWN1cnNlcyR7REZUX0FSR19TVUZGSVh9LWNvbmZpZy4xOmRvYy9NS2FkYV9jb25maWcuaW4iIDs7CisgICJNYWtlZmlsZSIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CisgICJkZWZhdWx0IiApIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZWZhdWx0IiA7OworICAiaW5jbHVkZS9uY3Vyc2VzX2NmZy5oIiApIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgaW5jbHVkZS9uY3Vyc2VzX2NmZy5oOmluY2x1ZGUvbmN1cnNlc19jZmcuaGluIiA7OworICAqKSB7IHsgZWNobyAiJGFzX21lOjE0MjY2OiBlcnJvcjogaW52YWxpZCBhcmd1bWVudDogJGFjX2NvbmZpZ190YXJnZXQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBhcmd1bWVudDogJGFjX2NvbmZpZ190YXJnZXQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OworICBlc2FjCitkb25lCisKKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKKyMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgorIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQorIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCisgIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCisgIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hFQURFUlM9JGNvbmZpZ19oZWFkZXJzCisgIHRlc3QgIiR7Q09ORklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1hbmRzCitmaQorCisjIENyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIGFuZCBob29rIGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLgorJGRlYnVnIHx8Cit7CisgIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/OyBybSAtcmYgJHRtcCAmJiBleGl0ICRleGl0X3N0YXR1cycgMAorICB0cmFwICd7IChleGl0IDEpOyBleGl0IDE7IH0nIDEgMiAxMyAxNQorfQorCisjIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KKzogJHtUTVBESVI9L3RtcH0KK3sKKyAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jc1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgorICB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIgorfSAgfHwKK3sKKyAgdG1wPSRUTVBESVIvY3MkJC0kUkFORE9NCisgICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkKK30gfHwKK3sKKyAgIGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH0KK30KKworRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCisKKyMKKyMgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCisjCisKKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGUgc2NyaXB0cyBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdoZW4gLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oCitpZiB0ZXN0IC1uICJcJENPTkZJR19GSUxFUyI7IHRoZW4KKyAgIyBQcm90ZWN0IGFnYWluc3QgYmVpbmcgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4KKyAgc2VkICdzLyxAL0BALzsgcy9ALC9AQC87IHMvLDt0IHRcJC9AO3QgdC87IC9AO3QgdFwkL3MvW1xcXFwmLF0vXFxcXCYvZzsKKyAgIHMvQEAvLEAvOyBzL0BAL0AsLzsgcy9AO3QgdFwkLyw7dCB0LycgPlwkdG1wL3N1YnMuc2VkIDw8XFxDRU9GCitzLEBTSEVMTEAsJFNIRUxMLDt0IHQKK3MsQGV4ZWNfcHJlZml4QCwkZXhlY19wcmVmaXgsO3QgdAorcyxAcHJlZml4QCwkcHJlZml4LDt0IHQKK3MsQHByb2dyYW1fdHJhbnNmb3JtX25hbWVALCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lLDt0IHQKK3MsQGJpbmRpckAsJGJpbmRpciw7dCB0CitzLEBzYmluZGlyQCwkc2JpbmRpciw7dCB0CitzLEBsaWJleGVjZGlyQCwkbGliZXhlY2Rpciw7dCB0CitzLEBkYXRhcm9vdGRpckAsJGRhdGFyb290ZGlyLDt0IHQKK3MsQGRhdGFkaXJALCRkYXRhZGlyLDt0IHQKK3MsQHN5c2NvbmZkaXJALCRzeXNjb25mZGlyLDt0IHQKK3MsQHNoYXJlZHN0YXRlZGlyQCwkc2hhcmVkc3RhdGVkaXIsO3QgdAorcyxAbG9jYWxzdGF0ZWRpckAsJGxvY2Fsc3RhdGVkaXIsO3QgdAorcyxAbGliZGlyQCwkbGliZGlyLDt0IHQKK3MsQGluY2x1ZGVkaXJALCRpbmNsdWRlZGlyLDt0IHQKK3MsQG9sZGluY2x1ZGVkaXJALCRvbGRpbmNsdWRlZGlyLDt0IHQKK3MsQGluZm9kaXJALCRpbmZvZGlyLDt0IHQKK3MsQG1hbmRpckAsJG1hbmRpciw7dCB0CitzLEBQQUNLQUdFX05BTUVALCRQQUNLQUdFX05BTUUsO3QgdAorcyxAUEFDS0FHRV9UQVJOQU1FQCwkUEFDS0FHRV9UQVJOQU1FLDt0IHQKK3MsQFBBQ0tBR0VfVkVSU0lPTkAsJFBBQ0tBR0VfVkVSU0lPTiw7dCB0CitzLEBQQUNLQUdFX1NUUklOR0AsJFBBQ0tBR0VfU1RSSU5HLDt0IHQKK3MsQFBBQ0tBR0VfQlVHUkVQT1JUQCwkUEFDS0FHRV9CVUdSRVBPUlQsO3QgdAorcyxAYnVpbGRfYWxpYXNALCRidWlsZF9hbGlhcyw7dCB0CitzLEBob3N0X2FsaWFzQCwkaG9zdF9hbGlhcyw7dCB0CitzLEB0YXJnZXRfYWxpYXNALCR0YXJnZXRfYWxpYXMsO3QgdAorcyxARUNIT19DQCwkRUNIT19DLDt0IHQKK3MsQEVDSE9fTkAsJEVDSE9fTiw7dCB0CitzLEBFQ0hPX1RALCRFQ0hPX1QsO3QgdAorcyxAUEFUSF9TRVBBUkFUT1JALCRQQVRIX1NFUEFSQVRPUiw7dCB0CitzLEBERUZTQCwkREVGUyw7dCB0CitzLEBMSUJTQCwkTElCUyw7dCB0CitzLEB0b3BfYnVpbGRkaXJALCR0b3BfYnVpbGRkaXIsO3QgdAorcyxAYnVpbGRALCRidWlsZCw7dCB0CitzLEBidWlsZF9jcHVALCRidWlsZF9jcHUsO3QgdAorcyxAYnVpbGRfdmVuZG9yQCwkYnVpbGRfdmVuZG9yLDt0IHQKK3MsQGJ1aWxkX29zQCwkYnVpbGRfb3MsO3QgdAorcyxAaG9zdEAsJGhvc3QsO3QgdAorcyxAaG9zdF9jcHVALCRob3N0X2NwdSw7dCB0CitzLEBob3N0X3ZlbmRvckAsJGhvc3RfdmVuZG9yLDt0IHQKK3MsQGhvc3Rfb3NALCRob3N0X29zLDt0IHQKK3MsQHRhcmdldEAsJHRhcmdldCw7dCB0CitzLEB0YXJnZXRfY3B1QCwkdGFyZ2V0X2NwdSw7dCB0CitzLEB0YXJnZXRfdmVuZG9yQCwkdGFyZ2V0X3ZlbmRvciw7dCB0CitzLEB0YXJnZXRfb3NALCR0YXJnZXRfb3MsO3QgdAorcyxAQ0NALCRDQyw7dCB0CitzLEBDRkxBR1NALCRDRkxBR1MsO3QgdAorcyxATERGTEFHU0AsJExERkxBR1MsO3QgdAorcyxAQ1BQRkxBR1NALCRDUFBGTEFHUyw7dCB0CitzLEBhY19jdF9DQ0AsJGFjX2N0X0NDLDt0IHQKK3MsQEVYRUVYVEAsJEVYRUVYVCw7dCB0CitzLEBPQkpFWFRALCRPQkpFWFQsO3QgdAorcyxARVhUUkFfQ1BQRkxBR1NALCRFWFRSQV9DUFBGTEFHUyw7dCB0CitzLEBDUFBALCRDUFAsO3QgdAorcyxAQVdLQCwkQVdLLDt0IHQKK3MsQEVHUkVQQCwkRUdSRVAsO3QgdAorcyxASU5TVEFMTF9QUk9HUkFNQCwkSU5TVEFMTF9QUk9HUkFNLDt0IHQKK3MsQElOU1RBTExfU0NSSVBUQCwkSU5TVEFMTF9TQ1JJUFQsO3QgdAorcyxASU5TVEFMTF9EQVRBQCwkSU5TVEFMTF9EQVRBLDt0IHQKK3MsQExOX1NALCRMTl9TLDt0IHQKK3MsQFBLR19DT05GSUdALCRQS0dfQ09ORklHLDt0IHQKK3MsQGFjX3B0X1BLR19DT05GSUdALCRhY19wdF9QS0dfQ09ORklHLDt0IHQKK3MsQFBLR19DT05GSUdfTElCRElSQCwkUEtHX0NPTkZJR19MSUJESVIsO3QgdAorcyxAU0VUX01BS0VALCRTRVRfTUFLRSw7dCB0CitzLEBDVEFHU0AsJENUQUdTLDt0IHQKK3MsQEVUQUdTQCwkRVRBR1MsO3QgdAorcyxATUFLRV9MT1dFUl9UQUdTQCwkTUFLRV9MT1dFUl9UQUdTLDt0IHQKK3MsQE1BS0VfVVBQRVJfVEFHU0AsJE1BS0VfVVBQRVJfVEFHUyw7dCB0CitzLEBjZl9jdl9tYWtlZmxhZ3NALCRjZl9jdl9tYWtlZmxhZ3MsO3QgdAorcyxAUkFOTElCQCwkUkFOTElCLDt0IHQKK3MsQGFjX2N0X1JBTkxJQkAsJGFjX2N0X1JBTkxJQiw7dCB0CitzLEBMREAsJExELDt0IHQKK3MsQGFjX2N0X0xEQCwkYWNfY3RfTEQsO3QgdAorcyxAQVJALCRBUiw7dCB0CitzLEBhY19jdF9BUkAsJGFjX2N0X0FSLDt0IHQKK3MsQEFSRkxBR1NALCRBUkZMQUdTLDt0IHQKK3MsQERFU1RESVJALCRERVNURElSLDt0IHQKK3MsQEJVSUxEX0NDQCwkQlVJTERfQ0MsO3QgdAorcyxAQlVJTERfQ1BQQCwkQlVJTERfQ1BQLDt0IHQKK3MsQEJVSUxEX0NGTEFHU0AsJEJVSUxEX0NGTEFHUyw7dCB0CitzLEBCVUlMRF9DUFBGTEFHU0AsJEJVSUxEX0NQUEZMQUdTLDt0IHQKK3MsQEJVSUxEX0xERkxBR1NALCRCVUlMRF9MREZMQUdTLDt0IHQKK3MsQEJVSUxEX0xJQlNALCRCVUlMRF9MSUJTLDt0IHQKK3MsQEJVSUxEX0VYRUVYVEAsJEJVSUxEX0VYRUVYVCw7dCB0CitzLEBCVUlMRF9PQkpFWFRALCRCVUlMRF9PQkpFWFQsO3QgdAorcyxAREZUX0xXUl9NT0RFTEAsJERGVF9MV1JfTU9ERUwsO3QgdAorcyxAREZUX1VQUl9NT0RFTEAsJERGVF9VUFJfTU9ERUwsO3QgdAorcyxATkNVUlNFU19DT05GSUdALCROQ1VSU0VTX0NPTkZJRyw7dCB0CitzLEBhY19jdF9OQ1VSU0VTX0NPTkZJR0AsJGFjX2N0X05DVVJTRVNfQ09ORklHLDt0IHQKK3MsQE5DVVJTRVNfTUFKT1JALCROQ1VSU0VTX01BSk9SLDt0IHQKK3MsQE5DVVJTRVNfTUlOT1JALCROQ1VSU0VTX01JTk9SLDt0IHQKK3MsQE5DVVJTRVNfUEFUQ0hALCROQ1VSU0VTX1BBVENILDt0IHQKK3MsQGNmX2N2X3JlbF92ZXJzaW9uQCwkY2ZfY3ZfcmVsX3ZlcnNpb24sO3QgdAorcyxAY2ZfY3ZfYWJpX3ZlcnNpb25ALCRjZl9jdl9hYmlfdmVyc2lvbiw7dCB0CitzLEBjZl9jdl9idWlsdGluX2Jvb2xALCRjZl9jdl9idWlsdGluX2Jvb2wsO3QgdAorcyxAY2ZfY3ZfaGVhZGVyX3N0ZGJvb2xfaEAsJGNmX2N2X2hlYWRlcl9zdGRib29sX2gsO3QgdAorcyxAY2ZfY3ZfdHlwZV9vZl9ib29sQCwkY2ZfY3ZfdHlwZV9vZl9ib29sLDt0IHQKK3MsQExJQl9QUkVGSVhALCRMSUJfUFJFRklYLDt0IHQKK3MsQExJQl9TVUZGSVhALCRMSUJfU1VGRklYLDt0IHQKK3MsQENDX0dfT1BUQCwkQ0NfR19PUFQsO3QgdAorcyxATERfTU9ERUxALCRMRF9NT0RFTCw7dCB0CitzLEBzaGxpYmRpckAsJHNobGliZGlyLDt0IHQKK3MsQE1BS0VfRExMU0AsJE1BS0VfRExMUyw7dCB0CitzLEBDQ19TSEFSRURfT1BUU0AsJENDX1NIQVJFRF9PUFRTLDt0IHQKK3MsQExEX1JQQVRIX09QVEAsJExEX1JQQVRIX09QVCw7dCB0CitzLEBMRF9TSEFSRURfT1BUU0AsJExEX1NIQVJFRF9PUFRTLDt0IHQKK3MsQE1LX1NIQVJFRF9MSUJALCRNS19TSEFSRURfTElCLDt0IHQKK3MsQFJNX1NIQVJFRF9PUFRTQCwkUk1fU0hBUkVEX09QVFMsO3QgdAorcyxATElOS19QUk9HU0AsJExJTktfUFJPR1MsO3QgdAorcyxATElOS19URVNUU0AsJExJTktfVEVTVFMsO3QgdAorcyxARVhUUkFfTERGTEFHU0AsJEVYVFJBX0xERkxBR1MsO3QgdAorcyxATE9DQUxfTERGTEFHU0AsJExPQ0FMX0xERkxBR1MsO3QgdAorcyxATE9DQUxfTERGTEFHUzJALCRMT0NBTF9MREZMQUdTMiw7dCB0CitzLEBJTlNUQUxMX0xJQkAsJElOU1RBTExfTElCLDt0IHQKK3MsQFJQQVRIX0xJU1RALCRSUEFUSF9MSVNULDt0IHQKK3MsQEJST0tFTl9MSU5LRVJALCRCUk9LRU5fTElOS0VSLDt0IHQKK3MsQE5DVVJTRVNfRVhUX0ZVTkNTQCwkTkNVUlNFU19FWFRfRlVOQ1MsO3QgdAorcyxATkNVUlNFU19DT05TVEAsJE5DVVJTRVNfQ09OU1QsO3QgdAorcyxAUFRIUkVBREAsJFBUSFJFQUQsO3QgdAorcyxAY2ZfY3ZfZW5hYmxlX3JlZW50cmFudEAsJGNmX2N2X2VuYWJsZV9yZWVudHJhbnQsO3QgdAorcyxATkNVUlNFU19XUkFQX1BSRUZJWEAsJE5DVVJTRVNfV1JBUF9QUkVGSVgsO3QgdAorcyxARUNIT19MVEAsJEVDSE9fTFQsO3QgdAorcyxARUNIT19MREAsJEVDSE9fTEQsO3QgdAorcyxAUlVMRV9DQ0AsJFJVTEVfQ0MsO3QgdAorcyxAU0hPV19DQ0AsJFNIT1dfQ0MsO3QgdAorcyxARUNIT19DQ0AsJEVDSE9fQ0MsO3QgdAorcyxAQURBRkxBR1NALCRBREFGTEFHUyw7dCB0CitzLEBFWFRSQV9DRkxBR1NALCRFWFRSQV9DRkxBR1MsO3QgdAorcyxAQURBX1RSQUNFQCwkQURBX1RSQUNFLDt0IHQKK3MsQGduYXRfZXhpc3RzQCwkZ25hdF9leGlzdHMsO3QgdAorcyxATTRfZXhpc3RzQCwkTTRfZXhpc3RzLDt0IHQKK3MsQGNmX2FkYV9tYWtlQCwkY2ZfYWRhX21ha2UsO3QgdAorcyxAR05BVFBSRVBfT1BUU0AsJEdOQVRQUkVQX09QVFMsO3QgdAorcyxAY2ZfY29tcGlsZV9nZW5lcmljc0AsJGNmX2NvbXBpbGVfZ2VuZXJpY3MsO3QgdAorcyxAY2ZfZ2VuZXJpY19vYmplY3RzQCwkY2ZfZ2VuZXJpY19vYmplY3RzLDt0IHQKK3MsQFVTRV9HTkFUX1NJR0lOVEAsJFVTRV9HTkFUX1NJR0lOVCw7dCB0CitzLEBVU0VfT0xEX01BS0VSVUxFU0AsJFVTRV9PTERfTUFLRVJVTEVTLDt0IHQKK3MsQFVTRV9HTkFUX1BST0pFQ1RTQCwkVVNFX0dOQVRfUFJPSkVDVFMsO3QgdAorcyxAVVNFX0dOQVRfTElCUkFSSUVTQCwkVVNFX0dOQVRfTElCUkFSSUVTLDt0IHQKK3MsQGNmX2FkYV9jb21waWxlckAsJGNmX2FkYV9jb21waWxlciw7dCB0CitzLEBjZl9hZGFfcGFja2FnZUAsJGNmX2FkYV9wYWNrYWdlLDt0IHQKK3MsQEFEQV9JTkNMVURFQCwkQURBX0lOQ0xVREUsO3QgdAorcyxAQURBX09CSkVDVFNALCRBREFfT0JKRUNUUyw7dCB0CitzLEBBREFfU0hBUkVETElCQCwkQURBX1NIQVJFRExJQiw7dCB0CitzLEBNQUtFX0FEQV9TSEFSRURMSUJALCRNQUtFX0FEQV9TSEFSRURMSUIsO3QgdAorcyxAVElORk9fTERGTEFHUzJALCRUSU5GT19MREZMQUdTMiw7dCB0CitzLEBUSU5GT19MSUJTQCwkVElORk9fTElCUyw7dCB0CitzLEBBQ1BQRkxBR1NALCRBQ1BQRkxBR1MsO3QgdAorcyxAREZUX0FSR19TVUZGSVhALCRERlRfQVJHX1NVRkZJWCw7dCB0CitzLEBERlRfREVQX1NVRkZJWEAsJERGVF9ERVBfU1VGRklYLDt0IHQKK3MsQERGVF9PQkpfU1VCRElSQCwkREZUX09CSl9TVUJESVIsO3QgdAorcyxAVVNFX0NGR19TVUZGSVhALCRVU0VfQ0ZHX1NVRkZJWCw7dCB0CitzLEBURVNUX0FSRzJALCRURVNUX0FSRzIsO3QgdAorcyxAVEVTVF9MSUJTMkAsJFRFU1RfTElCUzIsO3QgdAorcyxATkNVUlNFU19TSExJQjJALCROQ1VSU0VTX1NITElCMiw7dCB0CitzLEBBREFfU1VCRElSU0AsJEFEQV9TVUJESVJTLDt0IHQKK3MsQE5DVVJTRVNfVFJFRUAsJE5DVVJTRVNfVFJFRSw7dCB0CitzLEBFWFRFUk5BTF9UUkVFQCwkRVhURVJOQUxfVFJFRSw7dCB0CitzLEBBREFIVE1MX0RJUkAsJEFEQUhUTUxfRElSLDt0IHQKK0NFT0YKKworRU9GCisKKyAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgICMgU3BsaXQgdGhlIHN1YnN0aXR1dGlvbnMgaW50byBiaXRlLXNpemVkIHBpZWNlcyBmb3Igc2VkcyB3aXRoCisgICMgc21hbGwgY29tbWFuZCBudW1iZXIgbGltaXRzLCBsaWtlIG9uIERpZ2l0YWwgT1NGLzEgYW5kIEhQLVVYLgorICBhY19tYXhfc2VkX2xpbmVzPTQ4CisgIGFjX3NlZF9mcmFnPTEgIyBOdW1iZXIgb2YgY3VycmVudCBmaWxlLgorICBhY19iZWc9MSAjIEZpcnN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KKyAgYWNfZW5kPSRhY19tYXhfc2VkX2xpbmVzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KKyAgYWNfbW9yZV9saW5lcz06CisgIGFjX3NlZF9jbWRzPQorICB3aGlsZSAkYWNfbW9yZV9saW5lczsgZG8KKyAgICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KKyAgICAgIHNlZCAiMSwke2FjX2JlZ31kOyAke2FjX2VuZH1xIiAkdG1wL3N1YnMuc2VkID4kdG1wL3N1YnMuZnJhZworICAgIGVsc2UKKyAgICAgIHNlZCAiJHthY19lbmR9cSIgJHRtcC9zdWJzLnNlZCA+JHRtcC9zdWJzLmZyYWcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtcyAkdG1wL3N1YnMuZnJhZzsgdGhlbgorICAgICAgYWNfbW9yZV9saW5lcz1mYWxzZQorICAgIGVsc2UKKyAgICAgICMgVGhlIHB1cnBvc2Ugb2YgdGhlIGxhYmVsIGFuZCBvZiB0aGUgYnJhbmNoaW5nIGNvbmRpdGlvbiBpcyB0bworICAgICAgIyBzcGVlZCB1cCB0aGUgc2VkIHByb2Nlc3NpbmcgKGlmIHRoZXJlIGFyZSBubyBgQCcgYXQgYWxsLCB0aGVyZQorICAgICAgIyBpcyBubyBuZWVkIHRvIGJyb3dzZSBhbnkgb2YgdGhlIHN1YnN0aXR1dGlvbnMpLgorICAgICAgIyBUaGVzZSBhcmUgdGhlIHR3byBleHRyYSBzZWQgY29tbWFuZHMgbWVudGlvbmVkIGFib3ZlLgorICAgICAgKGVjaG8gJzp0CisgIC9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWInICYmIGNhdCAkdG1wL3N1YnMuZnJhZykgPiR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkCisgICAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCisgIAlhY19zZWRfY21kcz0ic2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgorICAgICAgZWxzZQorICAJYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKKyAgICAgIGZpCisgICAgICBhY19zZWRfZnJhZz1gZXhwciAkYWNfc2VkX2ZyYWcgKyAxYAorICAgICAgYWNfYmVnPSRhY19lbmQKKyAgICAgIGFjX2VuZD1gZXhwciAkYWNfZW5kICsgJGFjX21heF9zZWRfbGluZXNgCisgICAgZmkKKyAgZG9uZQorICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCisgICAgYWNfc2VkX2NtZHM9Y2F0CisgIGZpCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiCisKK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCitmb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfRklMRVM7IGRvIHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250aW51ZQorICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iLCBkZWZhdWx0aW5nIGluZmlsZT0ib3V0ZmlsZS5pbiIuCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCisgICAgICAgIGNhdCA+JHRtcC9zdGRpbgorICAgICAgICBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAorICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworICAqOiogKSBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAorICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7CisgIGVzYWMKKworICAjIENvbXB1dGUgQHNyY2RpckAsIEB0b3Bfc3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGlyZWN0b3JpZXMuCisgIGFjX2Rpcj1gJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKyAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisgICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXAorICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCBcCisgICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKK2VjaG8gWCIkYWNfZmlsZSIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQorICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQorICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KKyAgCSAgcy8uKi8uLzsgcSdgCisgIGlmIHRlc3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgorICAgIHsgY2FzZSAiJGFjX2RpciIgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhc19pbmNyX2Rpcj07OworICAqKSAgICAgICAgICAgICAgICAgICAgICBhc19pbmNyX2Rpcj0uOzsKK2VzYWMKK2FzX2R1bW15PSIkYWNfZGlyIgorZm9yIGFzX21rZGlyX2RpciBpbiBgSUZTPScvXFwnOyBzZXQgWCAkYXNfZHVtbXk7IHNoaWZ0OyBlY2hvICIkQCJgOyBkbworICBjYXNlICRhc19ta2Rpcl9kaXIgaW4KKyAgICAjIFNraXAgRE9TIGRyaXZlc3BlYworICAgID86KSBhc19pbmNyX2Rpcj0kYXNfbWtkaXJfZGlyIDs7CisgICAgKikKKyAgICAgIGFzX2luY3JfZGlyPSRhc19pbmNyX2Rpci8kYXNfbWtkaXJfZGlyCisgICAgICB0ZXN0IC1kICIkYXNfaW5jcl9kaXIiIHx8IG1rZGlyICIkYXNfaW5jcl9kaXIiCisgICAgOzsKKyAgZXNhYworZG9uZTsgfQorCisgICAgYWNfZGlyX3N1ZmZpeD0iL2BlY2hvICRhY19kaXJ8c2VkICdzLF5cLi8sLCdgIgorICAgICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCisgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzLC9bXi9dKiwuLi8sZydgCisgIGVsc2UKKyAgICBhY19kaXJfc3VmZml4PSBhY19kb3RzPQorICBmaQorCisgIGNhc2UgJHNyY2RpciBpbgorICAuKSAgYWNfc3JjZGlyPS4KKyAgICAgIGlmIHRlc3QgLXogIiRhY19kb3RzIjsgdGhlbgorICAgICAgICAgYWNfdG9wX3NyY2Rpcj0uCisgICAgICBlbHNlCisgICAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzIHwgc2VkICdzLC8kLCwnYAorICAgICAgZmkgOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKQorICAgICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OworICAqKSAjIFJlbGF0aXZlIHBhdGguCisgICAgYWNfc3JjZGlyPSRhY19kb3RzJHNyY2RpciRhY19kaXJfc3VmZml4CisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfZG90cyRzcmNkaXIgOzsKKyAgZXNhYworCisgIGNhc2UgJElOU1RBTEwgaW4KKyAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OworICAqKSBhY19JTlNUQUxMPSRhY19kb3RzJElOU1RBTEwgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KKyAgICB7IGVjaG8gIiRhc19tZToxNDU5MDogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KKyAgICBybSAtZiAiJGFjX2ZpbGUiCisgIGZpCisgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CisgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICBjb25maWd1cmVfaW5wdXQ9IkdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gYGVjaG8gJGFjX2ZpbGVfaW4gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZCAncywuKi8sLCdgIGJ5IGNvbmZpZ3VyZS4iCisKKyAgIyBGaXJzdCBsb29rIGZvciB0aGUgaW5wdXQgZmlsZXMgaW4gdGhlIGJ1aWxkIHRyZWUsIG90aGVyd2lzZSBpbiB0aGUKKyAgIyBzcmMgdHJlZS4KKyAgYWNfZmlsZV9pbnB1dHM9YElGUz06CisgICAgZm9yIGYgaW4gJGFjX2ZpbGVfaW47IGRvCisgICAgICBjYXNlICRmIGluCisgICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKKyAgICAgIFtcXC8kXSopCisgICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQorICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6MTQ2MDg6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgICAgICAgZWNobyAkZjs7CisgICAgICAqKSAjIFJlbGF0aXZlCisgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KKyAgICAgICAgICAgIyBCdWlsZCB0cmVlCisgICAgICAgICAgIGVjaG8gJGYKKyAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KKyAgICAgICAgICAgIyBTb3VyY2UgdHJlZQorICAgICAgICAgICBlY2hvICRzcmNkaXIvJGYKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIyAvZGV2L251bGwgdHJlZQorICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOjE0NjIxOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICAgICAgIGZpOzsKKyAgICAgIGVzYWMKKyAgICBkb25lYCB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgIGFjX3dhcm5fZGF0YXJvb3RkaXI9bm8KKyAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgIGZvciBhY19pdGVtIGluICRhY19maWxlX2lucHV0cworICAgIGRvCisgICAgICBhY19zZWVuPWBncmVwICdAXChkYXRhZGlyXHxtYW5kaXJcfGluZm9kaXJcKUAnICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIGFjX3VzZWQ9YGdyZXAgJ0BkYXRhcm9vdGRpckAnICRhY19pdGVtYAorICAgICAgICBpZiB0ZXN0IC16ICIkYWNfdXNlZCI7IHRoZW4KKyAgICAgICAgICB7IGVjaG8gIiRhc19tZToxNDYzNzogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjI7fQorICAgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgYWNfc2Vlbj1gZ3JlcCAnJHtkYXRhcm9vdGRpcn0nICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIHsgZWNobyAiJGFzX21lOjE0NjQ2OiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mMjt9CisgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKworaWYgdGVzdCAieCRhY193YXJuX2RhdGFyb290ZGlyIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZSAncyxAZGF0YXJvb3RkaXJALFwke3ByZWZpeH0vc2hhcmUsZycgLWUgJ3MsXCR7ZGF0YXJvb3RkaXJ9LFwke3ByZWZpeH0vc2hhcmUsZyciCitmaQorCitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCisgIHNlZCAiJGFjX3Zwc3ViCiskZXh0cmFzdWIKK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCis6dAorL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgorcyxAY29uZmlndXJlX2lucHV0QCwkY29uZmlndXJlX2lucHV0LDt0IHQKK3MsQHNyY2RpckAsJGFjX3NyY2Rpciw7dCB0CitzLEB0b3Bfc3JjZGlyQCwkYWNfdG9wX3NyY2Rpciw7dCB0CitzLEBJTlNUQUxMQCwkYWNfSU5TVEFMTCw7dCB0CisiICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+JHRtcC9vdXQKKyAgcm0gLWYgJHRtcC9zdGRpbgorICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgY3AgJHRtcC9vdXQgJGFjX2ZpbGUKKworICAgIGZvciBhY19uYW1lIGluIHByZWZpeCBleGVjX3ByZWZpeCBkYXRhcm9vdGRpcgorICAgIGRvCisgICAgICAgIGFjX3NlZW49YGZncmVwIC1uICckeyckYWNfbmFtZSdbOj1dLip9JyAkYWNfZmlsZWAKKyAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgICAgICBhY19pbml0PWBlZ3JlcCAnWyAJXSonJGFjX25hbWUnWyAJXSo9JyAkYWNfZmlsZWAKKyAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhY19pbml0IjsgdGhlbgorICAgICAgICAgICAgICBhY19zZWVuPWBlY2hvICIkYWNfc2VlbiIgfHNlZCAtZSAncyxeLCckYWNfZmlsZSc6LCdgCisgICAgICAgICAgICAgIHsgZWNobyAiJGFzX21lOjE0NjgzOiBXQVJOSU5HOiBWYXJpYWJsZSAkYWNfbmFtZSBpcyB1c2VkIGJ1dCB3YXMgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogVmFyaWFibGUgJGFjX25hbWUgaXMgdXNlZCBidXQgd2FzIG5vdCBzZXQ6CiskYWNfc2VlbiIgPiYyO30KKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgZG9uZQorICAgIGVncmVwIC1uICdAW2Etel9dW2Etel8wLTldK0AnICRhY19maWxlID4kdG1wL291dAorICAgIGVncmVwIC1uICdAW0EtWl9dW0EtWl8wLTldK0AnICRhY19maWxlID4+JHRtcC9vdXQKKyAgICBpZiB0ZXN0IC1zICR0bXAvb3V0OyB0aGVuCisgICAgICBhY19zZWVuPWBzZWQgLWUgJ3MsXiwnJGFjX2ZpbGUnOiwnIDwgJHRtcC9vdXRgCisgICAgICB7IGVjaG8gIiRhc19tZToxNDY5NDogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjI7fQorICAgIGZpCisgIGVsc2UKKyAgICBjYXQgJHRtcC9vdXQKKyAgZmkKKyAgcm0gLWYgJHRtcC9vdXQKKworZG9uZQorRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKworIworIyBDT05GSUdfSEVBREVSIHNlY3Rpb24uCisjCisKKyMgVGhlc2Ugc2VkIGNvbW1hbmRzIGFyZSBwYXNzZWQgdG8gc2VkIGFzICJBIE5BTUUgQiBOQU1FIEMgVkFMVUUgRCIsIHdoZXJlCisjIE5BTUUgaXMgdGhlIGNwcCBtYWNybyBiZWluZyBkZWZpbmVkIGFuZCBWQUxVRSBpcyB0aGUgdmFsdWUgaXQgaXMgYmVpbmcgZ2l2ZW4uCisjCisjIGFjX2Qgc2V0cyB0aGUgdmFsdWUgaW4gIiNkZWZpbmUgTkFNRSBWQUxVRSIgbGluZXMuCithY19kQT0ncyxeXChbIAldKlwpI1woWyAJXSpkZWZpbmVbIAldWyAJXSpcKScKK2FjX2RCPSdbIAldLiokLFwxI1wyJworYWNfZEM9JyAnCithY19kRD0nLDt0JworIyBhY19pIHR1cm5zICIjdW5kZWYgTkFNRSIgd2l0aCB0cmFpbGluZyBibGFua3MgaW50byAiI2RlZmluZSBOQU1FIFZBTFVFIi4KK2FjX2lBPSdzLF5cKFsgCV0qXCkjXChbIAldKlwpdW5kZWZcKFsgCV1bIAldKlwpJworYWNfaUI9J1woWyAJXVwpLFwxI1wyZGVmaW5lXDMnCithY19pQz0nICcKK2FjX2lEPSdcNCw7dCcKKyMgYWNfdSB0dXJucyAiI3VuZGVmIE5BTUUiIHdpdGhvdXQgdHJhaWxpbmcgYmxhbmtzIGludG8gIiNkZWZpbmUgTkFNRSBWQUxVRSIuCithY191QT0ncyxeXChbIAldKlwpI1woWyAJXSpcKXVuZGVmXChbIAldWyAJXSpcKScKK2FjX3VCPSckLFwxI1wyZGVmaW5lXDMnCithY191Qz0nICcKK2FjX3VEPScsO3QnCisKK2ZvciBhY19maWxlIGluIDogJENPTkZJR19IRUFERVJTOyBkbyB0ZXN0ICJ4JGFjX2ZpbGUiID0geDogJiYgY29udGludWUKKyAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgorICBjYXNlICRhY19maWxlIGluCisgIC0gfCAqOi0gfCAqOi06KiApICMgaW5wdXQgZnJvbSBzdGRpbgorICAgICAgICBjYXQgPiR0bXAvc3RkaW4KKyAgICAgICAgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKyAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKyAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKyAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKyAgKiApICAgYWNfZmlsZV9pbj0kYWNfZmlsZS5pbiA7OworICBlc2FjCisKKyAgdGVzdCB4IiRhY19maWxlIiAhPSB4LSAmJiB7IGVjaG8gIiRhc19tZToxNDc0MzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KKworICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBpbiB0aGUgYnVpbGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQorICAjIHNyYyB0cmVlLgorICBhY19maWxlX2lucHV0cz1gSUZTPToKKyAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KKyAgICAgIGNhc2UgJGYgaW4KKyAgICAgIC0pIGVjaG8gJHRtcC9zdGRpbiA7OworICAgICAgW1xcLyRdKikKKyAgICAgICAgICMgQWJzb2x1dGUgKGNhbid0IGJlIERPUy1zdHlsZSwgYXMgSUZTPTopCisgICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZToxNDc1NDogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgICAgICBlY2hvICRmOzsKKyAgICAgICopICMgUmVsYXRpdmUKKyAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgorICAgICAgICAgICAjIEJ1aWxkIHRyZWUKKyAgICAgICAgICAgZWNobyAkZgorICAgICAgICAgZWxpZiB0ZXN0IC1mICIkc3JjZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAjIFNvdXJjZSB0cmVlCisgICAgICAgICAgIGVjaG8gJHNyY2Rpci8kZgorICAgICAgICAgZWxzZQorICAgICAgICAgICAjIC9kZXYvbnVsbCB0cmVlCisgICAgICAgICAgIHsgeyBlY2hvICIkYXNfbWU6MTQ3Njc6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgICAgICAgZmk7OworICAgICAgZXNhYworICAgIGRvbmVgIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQorICAjIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2VzLgorICBzZWQgJ3MvWyAJXSokLy8nICRhY19maWxlX2lucHV0cyA+JHRtcC9pbgorCitFT0YKKworIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGEgbGlzdCBvZiAjZGVmaW5lJ3MuICBXZSB3b24ndCB1c2UgaXQgYXMgYSBzZWQKKyMgc2NyaXB0LCBidXQgYXMgZGF0YSB0byBpbnNlcnQgd2hlcmUgd2Ugc2VlIEBERUZTQC4gIFdlIGV4cGVjdCBBQ19TQVZFX0RFRlMgdG8KKyMgYmUgZWl0aGVyICdjYXQnIG9yICdzb3J0Jy4KK2NhdCBjb25mZGVmcy5oIHwgdW5pcSA+Y29uZnRlc3QudmFscworCisjIEJyZWFrIHVwIGNvbmZ0ZXN0LnZhbHMgYmVjYXVzZSBzb21lIHNoZWxscyBoYXZlIGEgbGltaXQgb24KKyMgdGhlIHNpemUgb2YgaGVyZSBkb2N1bWVudHMsIGFuZCBvbGQgc2VkcyBoYXZlIHNtYWxsIGxpbWl0cyB0b28uCisKK3JtIC1mIGNvbmZ0ZXN0LnRhaWwKK2VjaG8gJyAgcm0gLWYgY29uZnRlc3QuZnJhZycgPj4gJENPTkZJR19TVEFUVVMKK3doaWxlIGdyZXAgLiBjb25mdGVzdC52YWxzID4vZGV2L251bGwKK2RvCisgICMgV3JpdGUgY2h1bmtzIG9mIGEgbGltaXRlZC1zaXplIGhlcmUgZG9jdW1lbnQgdG8gY29uZnRlc3QuZnJhZy4KKyAgZWNobyAnICBjYXQgPj4gY29uZnRlc3QuZnJhZyA8PENFT0YnID4+ICRDT05GSUdfU1RBVFVTCisgIHNlZCAke2FjX21heF9oZXJlX2xpbmVzfXEgY29uZnRlc3QudmFscyB8IHNlZCAtZSAncy8jaWZkZWYuKi8jaWYgMC8nID4+ICRDT05GSUdfU1RBVFVTCisgIGVjaG8gJ0NFT0YnID4+ICRDT05GSUdfU1RBVFVTCisgIHNlZCAxLCR7YWNfbWF4X2hlcmVfbGluZXN9ZCBjb25mdGVzdC52YWxzID4gY29uZnRlc3QudGFpbAorICBybSAtZiBjb25mdGVzdC52YWxzCisgIG12IGNvbmZ0ZXN0LnRhaWwgY29uZnRlc3QudmFscworZG9uZQorcm0gLWYgY29uZnRlc3QudmFscworCisjIFJ1biBzZWQgdG8gc3Vic3RpdHV0ZSB0aGUgY29udGVudHMgb2YgY29uZnRlc3QuZnJhZyBpbnRvICR0bXAvaW4gYXQgdGhlCisjIG1hcmtlciBAREVGU0AuCitlY2hvICcgIGNhdCA+PiBjb25mdGVzdC5lZGl0IDw8Q0VPRgorL0BERUZTQC9yIGNvbmZ0ZXN0LmZyYWcKKy9AREVGU0AvZAorQ0VPRgorc2VkIC1mIGNvbmZ0ZXN0LmVkaXQgJHRtcC9pbiA+ICR0bXAvb3V0CitybSAtZiAkdG1wL2luCittdiAkdG1wL291dCAkdG1wL2luCitybSAtZiBjb25mdGVzdC5lZGl0IGNvbmZ0ZXN0LmZyYWcKKycgPj4gJENPTkZJR19TVEFUVVMKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CisgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICBpZiB0ZXN0IHgiJGFjX2ZpbGUiID0geC07IHRoZW4KKyAgICBlY2hvICIvKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLyIgPiR0bXAvY29uZmlnLmgKKyAgZWxzZQorICAgIGVjaG8gIi8qICRhY19maWxlLiAgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlLiAgKi8iID4kdG1wL2NvbmZpZy5oCisgIGZpCisgIGNhdCAkdG1wL2luID4+JHRtcC9jb25maWcuaAorICBybSAtZiAkdG1wL2luCisgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KKyAgICBpZiBjbXAgLXMgJGFjX2ZpbGUgJHRtcC9jb25maWcuaCAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgeyBlY2hvICIkYXNfbWU6MTQ4MjU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY1CitlY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICBhY19kaXI9YCRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisgICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAorICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKyAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAorICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CitlY2hvIFgiJGFjX2ZpbGUiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9CisgIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CisgIAkgIHMvLiovLi87IHEnYAorICAgICAgaWYgdGVzdCAiJGFjX2RpciIgIT0gIiRhY19maWxlIiAmJiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCisgICAgICAgIHsgY2FzZSAiJGFjX2RpciIgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhc19pbmNyX2Rpcj07OworICAqKSAgICAgICAgICAgICAgICAgICAgICBhc19pbmNyX2Rpcj0uOzsKK2VzYWMKK2FzX2R1bW15PSIkYWNfZGlyIgorZm9yIGFzX21rZGlyX2RpciBpbiBgSUZTPScvXFwnOyBzZXQgWCAkYXNfZHVtbXk7IHNoaWZ0OyBlY2hvICIkQCJgOyBkbworICBjYXNlICRhc19ta2Rpcl9kaXIgaW4KKyAgICAjIFNraXAgRE9TIGRyaXZlc3BlYworICAgID86KSBhc19pbmNyX2Rpcj0kYXNfbWtkaXJfZGlyIDs7CisgICAgKikKKyAgICAgIGFzX2luY3JfZGlyPSRhc19pbmNyX2Rpci8kYXNfbWtkaXJfZGlyCisgICAgICB0ZXN0IC1kICIkYXNfaW5jcl9kaXIiIHx8IG1rZGlyICIkYXNfaW5jcl9kaXIiCisgICAgOzsKKyAgZXNhYworZG9uZTsgfQorCisgICAgICBmaQorICAgICAgcm0gLWYgJGFjX2ZpbGUKKyAgICAgIG12ICR0bXAvY29uZmlnLmggJGFjX2ZpbGUKKyAgICBmaQorICBlbHNlCisgICAgY2F0ICR0bXAvY29uZmlnLmgKKyAgICBybSAtZiAkdG1wL2NvbmZpZy5oCisgIGZpCitkb25lCitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XEVPRgorIworIyBDT05GSUdfQ09NTUFORFMgc2VjdGlvbi4KKyMKK2ZvciBhY19maWxlIGluIDogJENPTkZJR19DT01NQU5EUzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCisgIGFjX2Rlc3Q9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgCisgIGFjX3NvdXJjZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKworICBjYXNlICRhY19kZXN0IGluCisgICAgZGVmYXVsdCApCitpZiB0ZXN0IC16ICIkVVNFX09MRF9NQUtFUlVMRVMiIDsgdGhlbgorCSRBV0sgLWYgJHNyY2Rpci9tay0xc3QuYXdrIDwkc3JjZGlyL3NyYy9tb2R1bGVzID4+c3JjL01ha2VmaWxlCitmaQorIDs7CisgIGVzYWMKK2RvbmUKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKworeyAoZXhpdCAwKTsgZXhpdCAwOyB9CitFT0YKK2NobW9kICt4ICRDT05GSUdfU1RBVFVTCithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQorCisjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCisjIGNvbmZpZy5zdGF0dXMgZG9lcyBpdHMgb3duIHJlZGlyZWN0aW9uLCBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZy4KKyMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuCisjIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMKKyMgb3V0cHV0IGlzIHNpbXBseSBkaXNjYXJkZWQuICBTbyB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsCisjIGVmZmVjdGl2ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kCisjIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNvbmZpZ3VyZSwgd2UKKyMgbmVlZCB0byBtYWtlIHRoZSBGRCBhdmFpbGFibGUgYWdhaW4uCitpZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KKyAgYWNfY3Nfc3VjY2Vzcz06CisgIGV4ZWMgNT4vZGV2L251bGwKKyAgJFNIRUxMICRDT05GSUdfU1RBVFVTIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKyAgZXhlYyA1Pj5jb25maWcubG9nCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorICAkYWNfY3Nfc3VjY2VzcyB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KK2ZpCiske01BS0U6LW1ha2V9IHByZWluc3RhbGwKZGlmZiAtLWdpdCBhL0FkYTk1L2NvbmZpZ3VyZS5pbiBiL0FkYTk1L2NvbmZpZ3VyZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDcxOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvY29uZmlndXJlLmluCkBAIC0wLDAgKzEsNjIwIEBACitkbmwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2RubCBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKK2RubCBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorZG5sICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCitkbmwgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKK2RubCBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorZG5sIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCitkbmwgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCitkbmwgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCitkbmwgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKK2RubCBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorZG5sIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCitkbmwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKK2RubCBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorZG5sIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorZG5sIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCitkbmwgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKK2RubCBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitkbmwKK2RubCBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKK2RubAorZG5sICRJZDogY29uZmlndXJlLmluLHYgMS42MCAyMDE1LzA0LzE4IDE4OjQ5OjU3IHRvbSBFeHAgJAorZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCitkbmwKK2RubCBTZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mLyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KK2RubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfUFJFUkVRKDIuNTIuMjAwMzAyMDgpCitBQ19SRVZJU0lPTigkUmV2aXNpb246IDEuNjAgJCkKK0FDX0lOSVQoZ2VuL2dlbi5jKQorQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL25jdXJzZXNfY2ZnLmg6aW5jbHVkZS9uY3Vyc2VzX2NmZy5oaW4pCisKK0NGX1RPUF9CVUlMRERJUgorCitDRl9XSVRIX1NZU1RZUEUKKworIyMjCVNhdmUgdGhlIGdpdmVuICRDRkxBR1MgdG8gYWxsb3cgdXNlci1vdmVycmlkZS4KK2NmX3VzZXJfQ0ZMQUdTPSIkQ0ZMQUdTIgorCisjIyMJRGVmYXVsdCBpbnN0YWxsLWxvY2F0aW9uCitDRl9DRkdfREVGQVVMVFMKKworIyMjCUNoZWNrcyBmb3IgcHJvZ3JhbXMuCitDRl9QUk9HX0NDKGduYXRnY2MgZ2NjIGNjKQorQUNfUFJPR19DUFAKK0FDX1BST0dfR0NDX1RSQURJVElPTkFMCitDRl9QUk9HX0NDX0NfTyhDQykKKworQUNfQVJHX1BST0dSQU0KKworQ0ZfUFJPR19BV0sKK0NGX1BST0dfRUdSRVAKK0FDX1BST0dfSU5TVEFMTAorQ0ZfUFJPR19MTl9TCisKK0FDX1NZU19MT05HX0ZJTEVfTkFNRVMKKworIyBpZiB3ZSBmaW5kIHBrZy1jb25maWcsIGNoZWNrIGlmIHdlIHNob3VsZCBpbnN0YWxsIHRoZSAiLnBjIiBmaWxlcy4KK0NGX1BLR19DT05GSUcKK0NGX1dJVEhfUEtHX0NPTkZJR19MSUJESVIKKworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRlc3QtcHJvZ3JhbXMpCitBQ19BUkdfV0lUSCh0ZXN0cywKKwlbICAtLXdpdGhvdXQtdGVzdHMgICAgICAgICBzdXBwcmVzcyBidWlsZCB3aXRoIHRlc3QtcHJvZ3JhbXNdLAorCVtjZl93aXRoX3Rlc3RzPSR3aXRodmFsXSwKKwlbY2Zfd2l0aF90ZXN0cz15ZXNdKQorQUNfTVNHX1JFU1VMVCgkY2Zfd2l0aF90ZXN0cykKKworQUNfTVNHX0NIRUNLSU5HKGlmIHdlIHNob3VsZCBhc3N1bWUgbWl4ZWQtY2FzZSBmaWxlbmFtZXMpCitBQ19BUkdfRU5BQkxFKG1peGVkLWNhc2UsCisJWyAgLS1lbmFibGUtbWl4ZWQtY2FzZSAgICAgdGljIHNob3VsZCBhc3N1bWUgbWl4ZWQtY2FzZSBmaWxlbmFtZXNdLAorCVtlbmFibGVfbWl4ZWRjYXNlPSRlbmFibGV2YWxdLAorCVtlbmFibGVfbWl4ZWRjYXNlPWF1dG9dKQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX21peGVkY2FzZSkKK2lmIHRlc3QgIiRlbmFibGVfbWl4ZWRjYXNlIiA9ICJhdXRvIiA7IHRoZW4KKwlDRl9NSVhFRENBU0VfRklMRU5BTUVTCitlbHNlCisJY2ZfY3ZfbWl4ZWRjYXNlPSRlbmFibGVfbWl4ZWRjYXNlCisJaWYgdGVzdCAiJGVuYWJsZV9taXhlZGNhc2UiID0gInllcyIgOyB0aGVuCisJCUFDX0RFRklORShNSVhFRENBU0VfRklMRU5BTUVTKQorCWZpCitmaQorCisjIGRvIHRoaXMgYWZ0ZXIgbWl4ZWQtY2FzZSBvcHRpb24gKHRhZ3MvVEFHUyBpcyBub3QgYXMgaW1wb3J0YW50IGFzIHRpYykuCitBQ19QUk9HX01BS0VfU0VUCitDRl9NQUtFX1RBR1MKK0NGX01BS0VGTEFHUworCitkbmwgVGhlc2UgYXJlIHN0YW5kYXJkIGFtb25nICpOSVggc3lzdGVtcywgYnV0IG5vdCB3aGVuIGNyb3NzLWNvbXBpbGluZworQUNfQ0hFQ0tfVE9PTChSQU5MSUIsIHJhbmxpYiwgJzonKQorQUNfQ0hFQ0tfVE9PTChMRCwgbGQsIGxkKQorQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGFyKQorQ0ZfQVJfRkxBR1MKK0NGX1BBVEhTRVAKKworZG5sIFNwZWNpYWwgb3B0aW9uIGZvciB1c2UgYnkgc3lzdGVtLWJ1aWxkZXJzOiB0aGUgaW5zdGFsbC1wcmVmaXggaXMgdXNlZCB0bworZG5sIGFkanVzdCB0aGUgbG9jYXRpb24gaW50byB3aGljaCB0aGUgYWN0dWFsIGluc3RhbGwgaXMgZG9uZSwgc28gdGhhdCBhbgorZG5sIGFyY2hpdmUgY2FuIGJlIGJ1aWx0IHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBob3N0IHN5c3RlbSdzIGNvbmZpZ3VyYXRpb24uCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGluc3RhbGwtcHJlZml4KQorQUNfQVJHX1dJVEgoaW5zdGFsbC1wcmVmaXgsCisJWyAgLS13aXRoLWluc3RhbGwtcHJlZml4ICAgcHJlZml4ZXMgYWN0dWFsIGluc3RhbGwtbG9jYXRpb24gKCRERVNURElSKV0sCisJW2Nhc2UgIiR3aXRodmFsIiBpbgorCSh5ZXN8bm8pCisJCTs7CisJKCopCURFU1RESVI9IiR3aXRodmFsIgorCQk7OworCWVzYWNdKQorQUNfTVNHX1JFU1VMVCgkREVTVERJUikKK0FDX1NVQlNUKERFU1RESVIpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NGX0hFTFBfTUVTU0FHRShCdWlsZC1Ub29scyBOZWVkZWQgdG8gQ29tcGlsZSBUZW1wb3JhcnkgQXBwbGljYXRpb25zIGZvciBDcm9zcy1jb21waWxpbmc6KQorIyBJZiB3ZSdyZSBjcm9zcy1jb21waWxpbmcsIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSB0b29scyBhbmQgdGhlaXIKKyMgb3B0aW9ucy4gIFRoZSBjb25maWd1cmUgc2NyaXB0IGlzIG9yaWVudGVkIHRvd2FyZCBpZGVudGlmeWluZyB0aGUgaG9zdAorIyBjb21waWxlciwgZXRjLiwgYnV0IHdlIG5lZWQgYSBidWlsZCBjb21waWxlciB0byBnZW5lcmF0ZSBwYXJ0cyBvZiB0aGUgc291cmNlLgorQ0ZfQlVJTERfQ0MKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQ0ZfSEVMUF9NRVNTQUdFKE9wdGlvbnMgdG8gU3BlY2lmeSB0aGUgTGlicmFyaWVzIEJ1aWx0L1VzZWQ6KQorCisjIyMgT3B0aW9ucyB0byBhbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBzZXQgb2YgbGlicmFyaWVzIHdoaWNoIGFyZSB1c2VkLgorIyMjIFVzZSAiLS13aXRob3V0LW5vcm1hbCAtLXdpdGgtc2hhcmVkIiB0byBhbGxvdyB0aGUgZGVmYXVsdCBtb2RlbCB0byBiZQorIyMjIHNoYXJlZCwgZm9yIGV4YW1wbGUuCitjZl9saXN0X21vZGVscz0iIgorCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gYnVpbGQgc2hhcmVkIEMtb2JqZWN0cykKK0FDX0FSR19XSVRIKHNoYXJlZCwKKwlbICAtLXdpdGgtc2hhcmVkICAgICAgICAgICBnZW5lcmF0ZSBzaGFyZWQgQy1vYmplY3RzIChuZWVkZWQgZm9yIC0td2l0aC1hZGEtc2hhcmVkbGliKV0sCisJW3dpdGhfc2hhcmVkPSR3aXRodmFsXSwKKwlbd2l0aF9zaGFyZWQ9bm9dKQorQUNfTVNHX1JFU1VMVCgkd2l0aF9zaGFyZWQpCit0ZXN0ICIkd2l0aF9zaGFyZWQiID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBzaGFyZWQiCisKK0FDX01TR19DSEVDS0lORyhmb3Igc3BlY2lmaWVkIG1vZGVscykKK3Rlc3QgLXogIiRjZl9saXN0X21vZGVscyIgJiYgY2ZfbGlzdF9tb2RlbHM9bm9ybWFsCitBQ19NU0dfUkVTVUxUKCRjZl9saXN0X21vZGVscykKKworIyMjIFVzZSB0aGUgZmlyc3QgbW9kZWwgYXMgdGhlIGRlZmF1bHQsIGFuZCBzYXZlIGl0cyBzdWZmaXggZm9yIHVzZSBpbiBidWlsZGluZworIyMjIHVwIHRlc3QtYXBwbGljYXRpb25zLgorQUNfTVNHX0NIRUNLSU5HKGZvciBkZWZhdWx0IG1vZGVsKQorREZUX0xXUl9NT0RFTD1gZWNobyAiJGNmX2xpc3RfbW9kZWxzIiB8ICRBV0sgJ3twcmludCAkMX0nYAorQUNfTVNHX1JFU1VMVCgkREZUX0xXUl9NT0RFTCkKKworQ0ZfVVBQRVIoREZUX1VQUl9NT0RFTCwkREZUX0xXUl9NT0RFTClkbmwKKworQUNfU1VCU1QoREZUX0xXUl9NT0RFTClkbmwJdGhlIGRlZmF1bHQgbW9kZWwgKCJub3JtYWwiKQorQUNfU1VCU1QoREZUX1VQUl9NT0RFTClkbmwJdGhlIGRlZmF1bHQgbW9kZWwgKCJOT1JNQUwiKQorCitDRl9OQ1VSU0VTX0FERE9OCisKK0NGX1dJVEhfTElCX1BSRUZJWChjZl9wcmVmaXgpCisKK0xJQl9TVUZGSVg9CitBQ19TVUJTVChMSUJfU1VGRklYKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RubCBOb3QgYWxsIHBvcnRzIG9mIGdjYyBzdXBwb3J0IHRoZSAtZyBvcHRpb24KKworaWYgdGVzdCBYIiRDQ19HX09QVCIgPSBYIiIgOyB0aGVuCisJQ0NfR19PUFQ9Jy1nJworCXRlc3QgLW4gIiRHQ0MiICYmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19nfSIgIT0geWVzICYmIENDX0dfT1BUPScnCitmaQorQUNfU1VCU1QoQ0NfR19PUFQpCisKK0FDX01TR19DSEVDS0lORyhmb3IgZGVmYXVsdCBsb2FkZXIgZmxhZ3MpCitjYXNlICRERlRfTFdSX01PREVMIGluCisobm9ybWFsKSAgTERfTU9ERUw9JycgICA7OworKGRlYnVnKSAgIExEX01PREVMPSRDQ19HX09QVCA7OworKHByb2ZpbGUpIExEX01PREVMPSctcGcnOzsKKyhzaGFyZWQpICBMRF9NT0RFTD0nJyAgIDs7Citlc2FjCitBQ19TVUJTVChMRF9NT0RFTClkbmwJCXRoZSB0eXBlIG9mIGxpbmsgKGUuZy4sIC1nIG9yIC1wZykKK0FDX01TR19SRVNVTFQoJExEX01PREVMKQorCitDRl9TSEFSRURfT1BUUworCisjIFRoZSB0ZXN0L3NhbXBsZSBwcm9ncmFtcyBpbiB0aGUgb3JpZ2luYWwgdHJlZSBsaW5rIHVzaW5nIHJwYXRoIG9wdGlvbi4KKyMgTWFrZSBpdCBvcHRpb25hbCBmb3IgcGFja2FnZXJzLgoraWYgdGVzdCAtbiAiJExPQ0FMX0xERkxBR1MiCit0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGxpbmsgc2FtcGxlIHByb2dyYW1zIHdpdGggcnBhdGggb3B0aW9uKQorCUFDX0FSR19FTkFCTEUocnBhdGgtbGluaywKKwkJWyAgLS1lbmFibGUtcnBhdGgtbGluayAgICAgbGluayBzYW1wbGUgcHJvZ3JhbXMgd2l0aCBycGF0aCBvcHRpb25dLAorCQlbd2l0aF9ycGF0aF9saW5rPSRlbmFibGV2YWxdLAorCQlbd2l0aF9ycGF0aF9saW5rPXllc10pCisJQUNfTVNHX1JFU1VMVCgkd2l0aF9ycGF0aF9saW5rKQorCWlmIHRlc3QgIiR3aXRoX3JwYXRoX2xpbmsiID0gbm8KKwl0aGVuCisJCUxPQ0FMX0xERkxBR1M9CisJCUxPQ0FMX0xERkxBR1MyPQorCWZpCitmaQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitDRl9IRUxQX01FU1NBR0UoRmluZS1UdW5pbmcgWW91ciBDb25maWd1cmF0aW9uOikKKworIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1icm9rZW4tbGlua2VyIHRvIGZvcmNlIG9uIHVzZSBvZiBicm9rZW4tbGlua2VyIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBicm9rZW4tbGlua2VyIHN1cHBvcnQgY29kZSkKK0FDX0FSR19FTkFCTEUoYnJva2VuX2xpbmtlciwKKwlbICAtLWVuYWJsZS1icm9rZW5fbGlua2VyICBjb21waWxlIHdpdGggYnJva2VuLWxpbmtlciBzdXBwb3J0IGNvZGVdLAorCVt3aXRoX2Jyb2tlbl9saW5rZXI9JGVuYWJsZXZhbF0sCisJW3dpdGhfYnJva2VuX2xpbmtlcj0ke0JST0tFTl9MSU5LRVI6LW5vfV0pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2Jyb2tlbl9saW5rZXIpCisKK0JST0tFTl9MSU5LRVI9MAoraWYgdGVzdCAiJHdpdGhfYnJva2VuX2xpbmtlciIgPSB5ZXMgOyB0aGVuCisJQUNfREVGSU5FKEJST0tFTl9MSU5LRVIpCisJQlJPS0VOX0xJTktFUj0xCitlbGlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9IHNoYXJlZCA7IHRoZW4KKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShjeWd3aW4qKQorCQlBQ19ERUZJTkUoQlJPS0VOX0xJTktFUikKKwkJQlJPS0VOX0xJTktFUj0xCisJCUNGX1ZFUkJPU0UoY3lnd2luIGxpbmtlciBpcyBicm9rZW4gYW55d2F5KQorCQk7OworCWVzYWMKK2ZpCitBQ19TVUJTVChCUk9LRU5fTElOS0VSKQorCisjIENoZWNrIHRvIGRlZmluZSBfWE9QRU5fU09VUkNFICJhdXRvbWF0aWNhbGx5IgorQ0ZfWE9QRU5fU09VUkNFCisKK0NGX0xBUkdFRklMRQorCisjIyMgRW5hYmxlIGNvbXBpbGluZy1pbiByY3MgaWQncworQUNfTVNHX0NIRUNLSU5HKGlmIFJDUyBpZGVudGlmaWVycyBzaG91bGQgYmUgY29tcGlsZWQtaW4pCitBQ19BUkdfV0lUSChyY3MtaWRzLAorCVsgIC0td2l0aC1yY3MtaWRzICAgICAgICAgIGNvbXBpbGUtaW4gUkNTIGlkZW50aWZpZXJzXSwKKwlbd2l0aF9yY3NfaWRzPSR3aXRodmFsXSwKKwlbd2l0aF9yY3NfaWRzPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfcmNzX2lkcykKK3Rlc3QgIiR3aXRoX3Jjc19pZHMiID0geWVzICYmIEFDX0RFRklORShVU0VfUkNTX0lEUywxLFtEZWZpbmUgdG8gMSBpZiBSQ1MgaWRlbnRpZmllcnMgc2hvdWxkIGJlIGNvbXBpbGVkLWluKV0pCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NGX0hFTFBfTUVTU0FHRShFeHRlbnNpb25zOikKKworIyMjIE5vdGUgdGhhdCBzb21lIGZ1bmN0aW9ucyAoc3VjaCBhcyBjb25zdCkgYXJlIG5vcm1hbGx5IGRpc2FibGVkIGFueXdheS4KK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIGZ1bmN0aW9uIGV4dGVuc2lvbnMpCitBQ19BUkdfRU5BQkxFKGV4dC1mdW5jcywKKwlbICAtLWRpc2FibGUtZXh0LWZ1bmNzICAgICBkaXNhYmxlIGZ1bmN0aW9uLWV4dGVuc2lvbnNdLAorCVt3aXRoX2V4dF9mdW5jcz0kZW5hYmxldmFsXSwKKwlbd2l0aF9leHRfZnVuY3M9eWVzXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfZXh0X2Z1bmNzKQoraWYgdGVzdCAiJHdpdGhfZXh0X2Z1bmNzIiA9IHllcyA7IHRoZW4KKwlOQ1VSU0VTX0VYVF9GVU5DUz0xCisJQUNfREVGSU5FKEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgdXNlX2RlZmF1bHRfY29sb3JzIGZ1bmN0aW9uXSkKKwlBQ19ERUZJTkUoTkNVUlNFU19FWFRfRlVOQ1MsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzIGV4dGVuZGVkIGZ1bmN0aW9uc10pCitlbHNlCisJTkNVUlNFU19FWFRfRlVOQ1M9MAorZmkKK0FDX1NVQlNUKE5DVVJTRVNfRVhUX0ZVTkNTKQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWNvbnN0IHRvIHR1cm4gb24gdXNlIG9mIGNvbnN0IGJleW9uZCB0aGF0IGluIFhTSS4KK0FDX01TR19DSEVDS0lORyhmb3IgZXh0ZW5kZWQgdXNlIG9mIGNvbnN0IGtleXdvcmQpCitBQ19BUkdfRU5BQkxFKGNvbnN0LAorCVsgIC0tZW5hYmxlLWNvbnN0ICAgICAgICAgIGNvbXBpbGUgd2l0aCBleHRyYS9ub24tc3RhbmRhcmQgY29uc3RdLAorCVt3aXRoX2V4dF9jb25zdD0kZW5hYmxldmFsXSwKKwlbd2l0aF9leHRfY29uc3Q9bm9dKQorQUNfTVNHX1JFU1VMVCgkd2l0aF9leHRfY29uc3QpCitOQ1VSU0VTX0NPTlNUPScvKm5vdGhpbmcqLycKK2lmIHRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgOyB0aGVuCisJTkNVUlNFU19DT05TVD1jb25zdAorZmkKK0FDX1NVQlNUKE5DVVJTRVNfQ09OU1QpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRpdmVseSBzYWZlIHRvIGV4cGVyaW1lbnQgd2l0aC4KK0NGX0hFTFBfTUVTU0FHRShEZXZlbG9wbWVudCBDb2RlOikKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBhbGwgZGV2ZWxvcG1lbnQgY29kZSkKK0FDX0FSR19XSVRIKGRldmVsb3AsCisJWyAgLS13aXRob3V0LWRldmVsb3AgICAgICAgZGlzYWJsZSBkZXZlbG9wbWVudCBvcHRpb25zXSwKKwlbd2l0aF9kZXZlbG9wPSR3aXRodmFsXSwKKwlbd2l0aF9kZXZlbG9wPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfZGV2ZWxvcCkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGVzZSBhcmUganVzdCBleHBlcmltZW50YWwsIHByb2JhYmx5IHNob3VsZCBub3QgYmUgaW4gYSBwYWNrYWdlOgorQ0ZfSEVMUF9NRVNTQUdFKEV4cGVyaW1lbnRhbCBDb2RlOikKKworIyBUaGlzIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCAoMjAwODAzMjkpLCBidXQgc2hvdWxkIHVsdGltYXRlbHkgYmUgbW92ZWQgdG8KKyMgdGhlIHNjcmlwdC1ibG9jayAtLXdpdGgtbm9ybWFsLCBldGMuCitDRl9XSVRIX1BUSFJFQUQKKworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIHVzZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzKQorQUNfQVJHX0VOQUJMRSh3ZWFrLXN5bWJvbHMsCisJWyAgLS1lbmFibGUtd2Vhay1zeW1ib2xzICAgZW5hYmxlIHdlYWstc3ltYm9scyBmb3IgcHRocmVhZHNdLAorCVt1c2Vfd2Vha19zeW1ib2xzPSR3aXRodmFsXSwKKwlbdXNlX3dlYWtfc3ltYm9scz1ub10pCitBQ19NU0dfUkVTVUxUKCR1c2Vfd2Vha19zeW1ib2xzKQoraWYgdGVzdCAiJHVzZV93ZWFrX3N5bWJvbHMiID0geWVzIDsgdGhlbgorCUNGX1dFQUtfU1lNQk9MUworZWxzZQorCWNmX2N2X3dlYWtfc3ltYm9scz1ubworZmkKKworaWYgdGVzdCAkY2ZfY3Zfd2Vha19zeW1ib2xzID0geWVzIDsgdGhlbgorCUFDX0RFRklORShVU0VfV0VBS19TWU1CT0xTLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzXSkKK2ZpCisKK1BUSFJFQUQ9CitpZiB0ZXN0ICIkd2l0aF9wdGhyZWFkIiA9ICJ5ZXMiIDsgdGhlbgorCUFDX0RFRklORShVU0VfUFRIUkVBRFMsMSxbRGVmaW5lIHRvIDEgdG8gdXNlIHRoZSBwdGhyZWFkcyBsaWJyYXJ5XSkKKwllbmFibGVfcmVlbnRyYW50PXllcworCWlmIHRlc3QgJGNmX2N2X3dlYWtfc3ltYm9scyA9IHllcyA7IHRoZW4KKwkJUFRIUkVBRD0tbHB0aHJlYWQKKwlmaQorZmkKK0FDX1NVQlNUKFBUSFJFQUQpCisKKyMgT3BlblNVU0UgaXMgaW5zdGFsbGluZyBuY3Vyc2VzNiwgdXNpbmcgcmVlbnRyYW50IG9wdGlvbi4KK0FDX0NIRUNLX0ZVTkMoX25jX1RBQlNJWkUsW2Fzc3VtZV9yZWVudHJhbnQ9eWVzXSwgW2Fzc3VtZV9yZWVudHJhbnQ9bm9dKQorCisjIFJlZW50cmFudCBjb2RlIGhhcyB0byBiZSBvcGFxdWU7IHRoZXJlJ3MgbGl0dGxlIGFkdmFudGFnZSB0byBtYWtpbmcgbmN1cnNlcworIyBvcGFxdWUgb3V0c2lkZSBvZiB0aGF0LCBzbyB0aGVyZSBpcyBubyAtLWVuYWJsZS1vcGFxdWUgb3B0aW9uLiAgV2UgY2FuIHVzZQorIyB0aGlzIG9wdGlvbiB3aXRob3V0IC0td2l0aC1wdGhyZWFkcywgYnV0IHRoaXMgd2lsbCBiZSBhbHdheXMgc2V0IGZvcgorIyBwdGhyZWFkcy4KK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgcmVlbnRyYW50IGNvZGUpCitBQ19BUkdfRU5BQkxFKHJlZW50cmFudCwKKwlbICAtLWVuYWJsZS1yZWVudHJhbnQgICAgICBjb21waWxlIHdpdGggZXhwZXJpbWVudGFsIHJlZW50cmFudCBjb2RlXSwKKwlbd2l0aF9yZWVudHJhbnQ9JGVuYWJsZXZhbF0sCisJW3dpdGhfcmVlbnRyYW50PSRhc3N1bWVfcmVlbnRyYW50XSkKK0FDX01TR19SRVNVTFQoJHdpdGhfcmVlbnRyYW50KQoraWYgdGVzdCAiJHdpdGhfcmVlbnRyYW50IiA9IHllcyA7IHRoZW4KKwljZl9jdl9lbmFibGVfcmVlbnRyYW50PTEKKwlpZiB0ZXN0ICRjZl9jdl93ZWFrX3N5bWJvbHMgPSB5ZXMgOyB0aGVuCisJCUNGX1JFTU9WRV9MSUIoTElCUywkTElCUyxwdGhyZWFkKQorCWVsaWYgdGVzdCAiJGFzc3VtZV9yZWVudHJhbnQiID0gbm8gOyB0aGVuCisJCUxJQl9TVUZGSVg9InQke0xJQl9TVUZGSVh9IgorCWZpCisJQUNfREVGSU5FKFVTRV9SRUVOVFJBTlQsMSxbRGVmaW5lIHRvIDEgdG8gY29tcGlsZSB3aXRoIGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZV0pCitlbHNlCisJY2ZfY3ZfZW5hYmxlX3JlZW50cmFudD0wCitmaQorQUNfU1VCU1QoY2ZfY3ZfZW5hYmxlX3JlZW50cmFudCkKKworIyMjIEFsbG93IHVzaW5nIGEgZGlmZmVyZW50IHdyYXAtcHJlZml4CitpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JlZW50cmFudCIgIT0gMCB8fCB0ZXN0ICIkQlJPS0VOX0xJTktFUiIgPSAxIDsgdGhlbgorCUFDX01TR19DSEVDS0lORyhmb3IgcHJlZml4IHVzZWQgdG8gd3JhcCBwdWJsaWMgdmFyaWFibGVzKQorCUFDX0FSR19XSVRIKHdyYXAtcHJlZml4LAorCQlbICAtLXdpdGgtd3JhcC1wcmVmaXg9WFhYICBvdmVycmlkZSBwcmVmaXggdXNlZCBmb3IgcHVibGljIHZhcmlhYmxlc10sCisJCVtOQ1VSU0VTX1dSQVBfUFJFRklYPSR3aXRodmFsXSwKKwkJW05DVVJTRVNfV1JBUF9QUkVGSVg9X25jX10pCisJQUNfTVNHX1JFU1VMVCgkTkNVUlNFU19XUkFQX1BSRUZJWCkKK2Vsc2UKKwlOQ1VSU0VTX1dSQVBfUFJFRklYPV9uY18KK2ZpCitBQ19TVUJTVChOQ1VSU0VTX1dSQVBfUFJFRklYKQorQUNfREVGSU5FX1VOUVVPVEVEKE5DVVJTRVNfV1JBUF9QUkVGSVgsIiROQ1VSU0VTX1dSQVBfUFJFRklYIixbRGVmaW5lIHRvIG92ZXJyaWRlIF9uY18gbmN1cnNlcyBpbnRlcm5hbCBwcmVmaXhdKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitDRl9IRUxQX01FU1NBR0UoVGVzdGluZy9kZXZlbG9wbWVudCBPcHRpb25zOikKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWVjaG8gdG8gc3VwcHJlc3MgZnVsbCBkaXNwbGF5IGNvbXBpbGluZyBjb21tYW5kcworQ0ZfRElTQUJMRV9FQ0hPCisKKyMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLXdhcm5pbmdzIHRvIHR1cm4gb24gYWxsIGdjYyB3YXJuaW5ncworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIHNlZSBjb21waWxlciB3YXJuaW5ncykKK0FDX0FSR19FTkFCTEUod2FybmluZ3MsCisJWyAgLS1lbmFibGUtd2FybmluZ3MgICAgICAgYnVpbGQ6IHR1cm4gb24gR0NDIGNvbXBpbGVyIHdhcm5pbmdzXSwKKwlbd2l0aF93YXJuaW5ncz0kZW5hYmxldmFsXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfd2FybmluZ3MpCisKK2lmIHRlc3QgIngkd2l0aF93YXJuaW5ncyIgPSAieHllcyI7IHRoZW4KKyAJQ0ZfQUREX0FEQUZMQUdTKC1nbmF0ZykKKwlDRl9HQ0NfV0FSTklOR1MoV25vLXVua25vd24tcHJhZ21hcyBXc3dpdGNoLWVudW0pCitmaQorQ0ZfR0NDX0FUVFJJQlVURVMKKworIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtYXNzZXJ0aW9ucyB0byB0dXJuIG9uIGdlbmVyYXRpb24gb2YgYXNzZXJ0aW9uIGNvZGUKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBlbmFibGUgcnVudGltZSBhc3NlcnRpb25zKQorQUNfQVJHX0VOQUJMRShhc3NlcnRpb25zLAorCVsgIC0tZW5hYmxlLWFzc2VydGlvbnMgICAgIHRlc3Q6IHR1cm4gb24gZ2VuZXJhdGlvbiBvZiBhc3NlcnRpb24gY29kZV0sCisJW3dpdGhfYXNzZXJ0aW9ucz0kZW5hYmxldmFsXSwKKwlbd2l0aF9hc3NlcnRpb25zPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfYXNzZXJ0aW9ucykKK2lmIHRlc3QgLW4gIiRHQ0MiCit0aGVuCisJaWYgdGVzdCAiJHdpdGhfYXNzZXJ0aW9ucyIgPSBubworCXRoZW4KKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRE5ERUJVRyIKKwllbHNlCisJCUNGX0FERF9BREFGTEFHUygtZ25hdGEpCisJZmkKK2ZpCisKKyMjIwl1c2Ugb3B0aW9uIC0tZGlzYWJsZS1sZWFrcyB0byBzdXBwcmVzcyAicGVybWFuZW50IiBsZWFrcywgZm9yIHRlc3RpbmcKK0FDX0RFRklORShIQVZFX05DX0FMTE9DX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY19hbGxvYy5oIGhlYWRlcl0pCisKKyMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWV4cGFuZGVkIHRvIGdlbmVyYXRlIGNlcnRhaW4gbWFjcm9zIGFzIGZ1bmN0aW9ucworQUNfQVJHX0VOQUJMRShleHBhbmRlZCwKKwlbICAtLWVuYWJsZS1leHBhbmRlZCAgICAgICB0ZXN0OiBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIGNlcnRhaW4gbWFjcm9zXSwKKwlbdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgJiYgQUNfREVGSU5FKE5DVVJTRVNfRVhQQU5ERUQsMSxbRGVmaW5lIHRvIDEgaWYgbmN1cnNlcyBtYWNyb3Mgc2hvdWxkIGJlIGV4cGFuZGVkIGFzIGZ1bmN0aW9uc10pXSkKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLW1hY3JvcyB0byBzdXBwcmVzcyBtYWNyb3MgaW4gZmF2b3Igb2YgZnVuY3Rpb25zCitBQ19BUkdfRU5BQkxFKG1hY3JvcywKKwlbICAtLWRpc2FibGUtbWFjcm9zICAgICAgICB0ZXN0OiB1c2UgZnVuY3Rpb25zIHJhdGhlciB0aGFuIG1hY3Jvc10sCisJW3Rlc3QgIiRlbmFibGV2YWwiID0gbm8gJiYgQUNfREVGSU5FKE5DVVJTRVNfTk9NQUNST1MsMSxbRGVmaW5lIHRvIDEgaWYgbmN1cnNlcyBtYWNyb3Mgc2hvdWxkIGJlIGV4cGFuZGVkIGFzIGZ1bmN0aW9uc10pXSkKKworIyBOb3JtYWxseSB3ZSBvbmx5IGFkZCB0cmFjZSgpIHRvIHRoZSBkZWJ1Zy1saWJyYXJ5LiAgQWxsb3cgdGhpcyB0byBiZQorIyBleHRlbmRlZCB0byBhbGwgbW9kZWxzIG9mIHRoZSBuY3Vyc2VzIGxpYnJhcnk6CitjZl9hbGxfdHJhY2VzPW5vCitjYXNlICIkQ0ZMQUdTICRDUFBGTEFHUyIgaW4KKygqLURUUkFDRSopCisJY2ZfYWxsX3RyYWNlcz15ZXMKKwk7OworZXNhYworCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBhZGQgdHJhY2UgZmVhdHVyZSB0byBhbGwgbW9kZWxzKQorQUNfQVJHX1dJVEgodHJhY2UsCitbICAtLXdpdGgtdHJhY2UgICAgICAgICAgICB0ZXN0OiBhZGQgdHJhY2UoKSBmdW5jdGlvbiB0byBhbGwgbW9kZWxzIG9mIG5jdXJzZXNdLAorW2NmX3dpdGhfdHJhY2U9JHdpdGh2YWxdLAorW2NmX3dpdGhfdHJhY2U9JGNmX2FsbF90cmFjZXNdKQorQUNfTVNHX1JFU1VMVCgkY2Zfd2l0aF90cmFjZSkKKworaWYgdGVzdCAiJGNmX3dpdGhfdHJhY2UiID0geWVzIDsgdGhlbgorCUFEQV9UUkFDRT1UUlVFCisJQ0ZfQUREX0NGTEFHUygtRFRSQUNFKQorZWxzZQorCUFEQV9UUkFDRT1GQUxTRQorZmkKKworQUNfU1VCU1QoQURBX1RSQUNFKQorCitDRl9ESVNBQkxFX0dOQVRfUFJPSkVDVFMKKworIyMjCUNoZWNrcyBmb3IgbGlicmFyaWVzLgorY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKygqbWluZ3czMiopCisJOzsKKygqKQorQUNfQ0hFQ0tfRlVOQyhnZXR0aW1lb2ZkYXksCisJQUNfREVGSU5FKEhBVkVfR0VUVElNRU9GREFZKSxbCisKK0FDX0NIRUNLX0xJQihic2QsIGdldHRpbWVvZmRheSwKKwlBQ19ERUZJTkUoSEFWRV9HRVRUSU1FT0ZEQVksMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBnZXR0aW1lb2ZkYXldKQorCUxJQlM9IiRMSUJTIC1sYnNkIildKWRubCBDTElYOiBiemVybywgc2VsZWN0LCBnZXR0aW1lb2ZkYXkKKwk7OworZXNhYworCisjIyMJQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCitBQ19TVERDX0hFQURFUlMKK0FDX0hFQURFUl9ESVJFTlQKK0FDX0hFQURFUl9USU1FCisKKyMjIwljaGVja3MgZm9yIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcworQUNfTEFOR19DCitBQ19DX0NPTlNUCisKKyMjIwlDaGVja3MgZm9yIGV4dGVybmFsLWRhdGEKK0NGX0xJTktfREFUQU9OTFkKKworIyMjCUNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCitDRl9NS1NURU1QCisKK2RubCBXZSdsbCBkbyBvdXIgb3duIC1nIGxpYnJhcmllcywgdW5sZXNzIHRoZSB1c2VyJ3Mgb3ZlcnJpZGRlbiB2aWEgJENGTEFHUworaWYgdGVzdCAteiAiJGNmX3VzZXJfQ0ZMQUdTIiAmJiB0ZXN0ICIkd2l0aF9ub19sZWFrcyIgPSBubyA7IHRoZW4KKwlDRl9TVFJJUF9HX09QVChDRkxBR1MpCisJQ0ZfU1RSSVBfR19PUFQoQ1hYRkxBR1MpCitmaQorCitDRl9IRUxQX01FU1NBR0UoQWRhOTUgQmluZGluZyBPcHRpb25zOikKK2NmX3dpdGhfYWRhPXllcworZG5sIENoZWNrIGZvciBhdmFpbGFiaWxpdHkgb2YgR05VIEFkYSBUcmFuc2xhdG9yIChHTkFUKS4KK2RubCBBdCB0aGUgbW9tZW50IHdlIHN1cHBvcnQgbm8gb3RoZXIgQWRhOTUgY29tcGlsZXIuCitpZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCisJQ0ZfUFJPR19HTkFUCisJaWYgdGVzdAkiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9IHllczsgdGhlbgorCQlDRl9GSVhVUF9BREFGTEFHUworCisJCUNGX0dOQVRQUkVQX09QVF9UCisKKwkJQ0ZfR05BVF9HRU5FUklDUworCQlDRl9HTkFUX1NJR0lOVAorCQlDRl9HTkFUX1BST0pFQ1RTCisKKwkJQ0ZfV0lUSF9BREFfQ09NUElMRVIKKworCQljZl9hZGFfcGFja2FnZT10ZXJtaW5hbF9pbnRlcmZhY2UKKwkJQUNfU1VCU1QoY2ZfYWRhX3BhY2thZ2UpCisKKwkJQ0ZfV0lUSF9BREFfSU5DTFVERQorCQlDRl9XSVRIX0FEQV9PQkpFQ1RTCisJCUNGX1dJVEhfQURBX1NIQVJFRExJQgorCWVsc2UKKwkJQUNfTVNHX0VSUk9SKE5vIHVzYWJsZSBBZGEgY29tcGlsZXIgZm91bmQpCisJZmkKK2Vsc2UKKwlBQ19NU0dfRVJST1IoVGhlIEFkYSBjb21waWxlciBpcyBuZWVkZWQgZm9yIHRoaXMgcGFja2FnZSkKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgbm90IG5lZWRlZAorVElORk9fTERGTEFHUzI9CitBQ19TVUJTVChUSU5GT19MREZMQUdTMikKK1RJTkZPX0xJQlM9CitBQ19TVUJTVChUSU5GT19MSUJTKQorCisjIyMgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGluY2x1ZGUtZGlyZWN0b3JpZXMgdG8gYmUgZ2VuZXJhdGVkCitDRl9JTkNMVURFX0RJUlMKK0NGX0FEQV9JTkNMVURFX0RJUlMKKworIyMjIEJ1aWxkIHVwIHBpZWNlcyBmb3IgbWFrZWZpbGUgcnVsZXMKK0FDX01TR19DSEVDS0lORyhkZWZhdWx0IGxpYnJhcnkgc3VmZml4KQorQ0ZfTElCX1RZUEUoJERGVF9MV1JfTU9ERUwsREZUX0FSR19TVUZGSVgpZG5sCitBQ19TVUJTVChERlRfQVJHX1NVRkZJWClkbmwgdGhlIHN0cmluZyB0byBhcHBlbmQgdG8gIi1sbmN1cnNlcyIgKCIiKQorQUNfTVNHX1JFU1VMVCgkREZUX0FSR19TVUZGSVgpCisKK0FDX01TR19DSEVDS0lORyhkZWZhdWx0IGxpYnJhcnktZGVwZW5kZW5jeSBzdWZmaXgpCitDRl9MSUJfU1VGRklYKCRERlRfTFdSX01PREVMLERGVF9MSUJfU1VGRklYLERGVF9ERVBfU1VGRklYKWRubAorQUNfU1VCU1QoREZUX0RFUF9TVUZGSVgpZG5sIHRoZSBjb3JyZXNwb25kaW5nIGxpYnJhcnktc3VmZml4ICgiLmEiKQorQUNfTVNHX1JFU1VMVCgkREZUX0RFUF9TVUZGSVgpCisKK0FDX01TR19DSEVDS0lORyhkZWZhdWx0IG9iamVjdCBkaXJlY3RvcnkpCitDRl9PQkpfU1VCRElSKCRERlRfTFdSX01PREVMLERGVF9PQkpfU1VCRElSKWRubAorQUNfU1VCU1QoREZUX09CSl9TVUJESVIpZG5sIHRoZSBkZWZhdWx0IG9iamVjdC1kaXJlY3RvcnkgKCJvYmoiKQorQUNfTVNHX1JFU1VMVCgkREZUX09CSl9TVUJESVIpCisKKyMjIyBTZXQgdXAgbG93LWxldmVsIHRlcm1pbmZvIGRlcGVuZGVuY2llcyBmb3IgbWFrZWZpbGVzLgorCitpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSBzaGFyZWQgOyB0aGVuCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoY3lnd2luKikKKwkJIyAibGliIiBmaWxlcyBoYXZlICIuZGxsLmEiIHN1ZmZpeCwgImN5ZyIgZmlsZXMgaGF2ZSAiLmRsbCIKKwkJOzsKKwkobXN5cyopCisJCSMgImxpYiIgZmlsZXMgaGF2ZSAiLmRsbC5hIiBzdWZmaXgsICJtc3lzLSIgZmlsZXMgaGF2ZSAiLmRsbCIKKwkJOzsKKwllc2FjCitmaQorCitVU0VfQ0ZHX1NVRkZJWD0ke0RGVF9BUkdfU1VGRklYfQorQUNfU1VCU1QoVVNFX0NGR19TVUZGSVgpCisKKyMjIyBDb25zdHJ1Y3QgdGhlIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgZm9yIHdoaWNoIHdlJ2xsIGN1c3RvbWl6ZSBtYWtlZmlsZXMKKyMjIyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb21waWxlLXJ1bGVzLgorCitTVUJfTUFLRUZJTEVTPSJnZW4vYWRhY3Vyc2VzJHtVU0VfQVJHX1NVRkZJWH0tY29uZmlnOmdlbi9hZGFjdXJzZXMtY29uZmlnLmluIgorCitBQ19ERUZJTkVfVU5RVU9URUQoTkNVUlNFU19QQVRIU0VQLCckUEFUSF9TRVBBUkFUT1InLFtEZWZpbmUgdG8gb3ZlcnJpZGUgJzonIGFzIHRoZSBsaWJyYXJ5IHBhdGgtc2VwYXJhdG9yXSkKKworIyMjIE5vdyB0aGF0IHdlJ3JlIGRvbmUgcnVubmluZyB0ZXN0cywgYWRkIHRoZSBjb21waWxlci13YXJuaW5ncywgaWYgYW55CitDRl9BRERfQ0ZMQUdTKCRFWFRSQV9DRkxBR1MpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1RFU1RfQVJHMj0KK0FDX1NVQlNUKFRFU1RfQVJHMikKKworVEVTVF9MSUJTMj0KK0FDX1NVQlNUKFRFU1RfTElCUzIpCisKK2RubCBmb3Igc2VwYXJhdGUgYnVpbGQsIHRoaXMgaXMgZ29vZCBlbm91Z2ggZm9yICJzaCAkKHRvcF9zcmNkaXIpL21pc2Mvc2hsaWIiCitOQ1VSU0VTX1NITElCMj0ic2ggLWMiCitBQ19TVUJTVChOQ1VSU0VTX1NITElCMikKKworQURBX1NVQkRJUlM9ImluY2x1ZGUgZ2VuIHNyYyBkb2MiCitpZiB0ZXN0ICJ4JGNmX3dpdGhfdGVzdHMiICE9ICJ4bm8iIDsgdGhlbgorCUFEQV9TVUJESVJTPSIkQURBX1NVQkRJUlMgc2FtcGxlcyIKK2ZpCitmb3IgY2ZfZGlyIGluICRBREFfU1VCRElSUworZG8KKwlTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyAkY2ZfZGlyL01ha2VmaWxlIgorZG9uZQorQUNfU1VCU1QoQURBX1NVQkRJUlMpCisKK05DVVJTRVNfVFJFRT0iIyIKK0FDX1NVQlNUKE5DVVJTRVNfVFJFRSkKKworRVhURVJOQUxfVFJFRT0KK0FDX1NVQlNUKEVYVEVSTkFMX1RSRUUpCisKKyMgbWF0Y2ggbGF5b3V0IHVzZWQgYnkgbWFrZS10YXIuc2gKK0FEQUhUTUxfRElSPS4uL2RvYy9hZGEKK0FDX1NVQlNUKEFEQUhUTUxfRElSKQorCitBQ19PVVRQVVQoIFwKKwkkU1VCX01BS0VGSUxFUyBcCisJZG9jL2FkYWN1cnNlcyR7REZUX0FSR19TVUZGSVh9LWNvbmZpZy4xOmRvYy9NS2FkYV9jb25maWcuaW4gXAorCU1ha2VmaWxlLFsKK2lmIHRlc3QgLXogIiRVU0VfT0xEX01BS0VSVUxFUyIgOyB0aGVuCisJJEFXSyAtZiAkc3JjZGlyL21rLTFzdC5hd2sgPCRzcmNkaXIvc3JjL21vZHVsZXMgPj5zcmMvTWFrZWZpbGUKK2ZpCitdLFsKKyMjIyBTcGVjaWFsIGluaXRpYWxpemF0aW9uIGNvbW1hbmRzLCB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gZnJvbSB0aGUKKyMjIyBjb25maWd1cmF0aW9uLXJ1biBpbnRvIGNvbmZpZy5zdGF0dXMKKworQVdLPSIkQVdLIgorREZUX0FSR19TVUZGSVg9IiRERlRfQVJHX1NVRkZJWCIKK0RGVF9MV1JfTU9ERUw9IiRERlRfTFdSX01PREVMIgorTElCX05BTUU9IiRMSUJfTkFNRSIKK0xJQl9QUkVGSVg9IiRMSUJfUFJFRklYIgorTElCX1NVRkZJWD0iJExJQl9TVUZGSVgiCitMTl9TPSIkTE5fUyIKK05DVVJTRVNfTUFKT1I9IiROQ1VSU0VTX01BSk9SIgorTkNVUlNFU19NSU5PUj0iJE5DVVJTRVNfTUlOT1IiCitOQ1VSU0VTX1BBVENIPSIkTkNVUlNFU19QQVRDSCIKK1VTRV9PTERfTUFLRVJVTEVTPSIkVVNFX09MRF9NQUtFUlVMRVMiCitjZl9jdl9hYmlfdmVyc2lvbj0iJGNmX2N2X2FiaV92ZXJzaW9uIgorY2ZfY3ZfcmVsX3ZlcnNpb249IiRjZl9jdl9yZWxfdmVyc2lvbiIKK2NmX2N2X3JtX3NvX2xvY3M9IiRjZl9jdl9ybV9zb19sb2NzIgorY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nJGNmX2N2X3NoYXJlZF9zb25hbWUnCitjZl9jdl9zaGxpYl92ZXJzaW9uPSIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIKK2NmX2N2X3NobGliX3ZlcnNpb25faW5maXg9IiRjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4IgorY2ZfY3Zfc3lzdGVtX25hbWU9IiRjZl9jdl9zeXN0ZW1fbmFtZSIKK2hvc3Q9IiRob3N0IgordGFyZ2V0PSIkdGFyZ2V0IgorCitdLGNhdClkbmwKKyR7TUFLRTotbWFrZX0gcHJlaW5zdGFsbApkaWZmIC0tZ2l0IGEvQWRhOTUvZG9jL01ha2VmaWxlLmluIGIvQWRhOTUvZG9jL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NzM4MjcKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9kb2MvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSw4MiBAQAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40IDIwMTUvMDgvMDUgMjM6MTU6NDEgdG9tIEV4cCAkCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQorIworIyBNYWtlZmlsZSBmb3IgQWRhQ3Vyc2VzIG1hbnVhbCBwYWdlcy4KKworU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKKworREVTVERJUgkJPSBAREVTVERJUkAKK3NyY2RpcgkJPSBAc3JjZGlyQAorcHJlZml4CQk9IEBwcmVmaXhACitleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKK2RhdGFyb290ZGlyCT0gQGRhdGFyb290ZGlyQAorZGF0YWRpcgkJPSBAZGF0YWRpckAKK21hbmRpcgkJPSBAbWFuZGlyQAorCitJTlNUQUxMCQk9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBCT0gQElOU1RBTExfREFUQUAKKworREZUX0FSR19TVUZGSVgJPSBAREZUX0FSR19TVUZGSVhACisKK1RISVMJCT0gQWRhQ3Vyc2VzCitET0NESVIJCT0gJChERVNURElSKSQoZGF0YWRpcikvZG9jLyQoVEhJUykKK01BTkRJUgkJPSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKKworYWxsIFwKK3NvdXJjZXMgXAorZGVwZW5kIFwKK3RhZ3MgOgorCiskKERPQ0RJUikgXAorJChNQU5ESVIpIDoKKwlta2RpciAtcCAkQAorCitpbnN0YWxsIGluc3RhbGwubWFuIDogJChNQU5ESVIpCisJJChJTlNUQUxMX0RBVEEpIGFkYWN1cnNlcyR7REZUX0FSR19TVUZGSVh9LWNvbmZpZy4xICQoTUFORElSKQorCit1bmluc3RhbGwgdW5pbnN0YWxsLm1hbiA6CisJLXJtIC1mICQoTUFORElSKS9hZGFjdXJzZXMke0RGVF9BUkdfU1VGRklYfS1jb25maWcuMQorCisjIEhUTUwgZG9jdW1lbnRhdGlvbiBpcyBvcHRpb25hbCwgdXN1YWxseSBpbiBhIHNlcGFyYXRlIHBhY2thZ2UuCitpbnN0YWxsLmh0bWwgOiAkKERPQ0RJUikKKwljZCAkKHNyY2RpcikgJiYgdGFyIC1jZiAtICouaHRtKiBhZGEgfCB0YXIgLUMgJChET0NESVIpIC14ZiAtCisKK3VuaW5zdGFsbC5odG1sIDoKKwktcm0gLXJmICQoRE9DRElSKQorCittb3N0bHljbGVhbiA6CisJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICoubG4gKi5hdGFjIHRyYWNlCisKK2NsZWFuOgltb3N0bHljbGVhbgorCitkaXN0Y2xlYW4gcmVhbGNsZWFuOiBjbGVhbgorCS1ybSAtZiBNYWtlZmlsZSAqLWNvbmZpZy4xCmRpZmYgLS1naXQgYS9BZGE5NS9nZW4vTWFrZWZpbGUuaW4gYi9BZGE5NS9nZW4vTWFrZWZpbGUuaW4KaW5kZXggYjdlM2JlYy4uNDhkZjMxOCAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL01ha2VmaWxlLmluCisrKyBiL0FkYTk1L2dlbi9NYWtlZmlsZS5pbgpAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI4LDE0ICsyOCwxNSBAQAogIwogIyAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAjCi0jICAkSWQ6IE1ha2VmaWxlLmluLHYgMS42MSAyMDA4LzEwLzA0IDIyOjU4OjMxIHRvbSBFeHAgJAorIyAgJElkOiBNYWtlZmlsZS5pbix2IDEuODUgMjAxNS8wOC8wNSAyMzowNjozMSB0b20gRXhwICQKICMKIC5TVUZGSVhFUzoKIAotU0hFTEwJCT0gL2Jpbi9zaAorU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKIFRISVMJCT0gTWFrZWZpbGUKIAoteAkJPSBAUFJPR19FWFRACit4CQk9IEBFWEVFWFRACiAKIHRvcF9zcmNkaXIJPSBAdG9wX3NyY2RpckAKIERFU1RESVIJCT0gQERFU1RESVJACkBAIC00Myw5ICs0NCw3IEBACiBwcmVmaXgJCT0gQHByZWZpeEAKIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAogYmluZGlyCQk9IEBiaW5kaXJACi0KLUFEQV9JTkNMVURFCT0gJChERVNURElSKUBBREFfSU5DTFVERUAKLUFEQV9PQkpFQ1RTCT0gJChERVNURElSKUBBREFfT0JKRUNUU0AKK2luY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKIAogSU5TVEFMTAkJPSBASU5TVEFMTEAKIElOU1RBTExfUFJPRwk9IEBJTlNUQUxMX1BST0dSQU1ACkBAIC01NiwxMiArNTUsMTUgQEAKIAogQ0MJCT0gQENDQAogSE9TVF9DQwkJPSBAQlVJTERfQ0NACi1DRkxBR1MJCT0gQENGTEFHU0AKIAotQ1BQRkxBR1MJPSBAQUNQUEZMQUdTQCBcCitDRkxBR1MJCT0gQENGTEFHU0AKK0hPU1RfQ0ZMQUdTCT0gQEJVSUxEX0NGTEFHU0AKKworQ1BQRkxBR1MJPSBAQ1BQRkxBR1NACitIT1NUX0NQUEZMQUdTCT0gQEFDUFBGTEFHU0AgQEJVSUxEX0NQUEZMQUdTQCBcCiAJCSAgLURIQVZFX0NPTkZJR19IIC1JJChzcmNkaXIpCiAKLUNDRkxBR1MJCT0gJChDUFBGTEFHUykgJChDRkxBR1MpCitDQ0ZMQUdTCQk9ICQoSE9TVF9DUFBGTEFHUykgJChIT1NUX0NGTEFHUykKIENGTEFHU19OT1JNQUwJPSAkKENDRkxBR1MpCiBDRkxBR1NfREVCVUcJPSAkKENDRkxBR1MpIEBDQ19HX09QVEAgLURUUkFDRQogQ0ZMQUdTX1BST0ZJTEUJPSAkKENDRkxBR1MpIC1wZwpAQCAtNzQsMjAgKzc2LDMyIEBACiBMT0NBTF9MSUJESVIJPSBAdG9wX2J1aWxkZGlyQC9saWIKIAogTElOSwkJPSAkKEhPU1RfQ0MpCi1MRF9GTEFHUwk9IEBMRF9NT0RFTEAgJChMT0NBTF9MSUJTKSBATERGTEFHU0AgQExJQlNAIEBMT0NBTF9MREZMQUdTMkAgJChMREZMQUdTKSBAVElORk9fQVJHUzJACitMREZMQUdTCQk9IEBMREZMQUdTQAorTElCUwkJPSBATElCU0AKKworIyBGb3IgdGhlIHdpZGUtY2hhcmFjdGVyIGNvbmZpZ3VyYXRpb24gY29tYmluZWQgd2l0aCBicm9rZW5fbGlua2VyLCB3ZSBuZWVkCisjIGFkZHJlc3NlcyBvZiBBQ1NfeHh4IGNvbnN0YW50cywgd2hpY2ggcmVxdWlyZXMgbGlua2luZyB3aXRoIHRoZSBuZXdseSBidWlsdAorIyBuY3Vyc2VzIGxpYnJhcnkuICBJZiBjcm9zcy1jb21waWxpbmcsIHRoZSBkZXZlbG9wZXIgaGFzIHRvIGZpbGwgaW4gYSB3b3JrYWJsZQorIyBuYXRpdmUgbGlicmFyeSBmb3IgdGhpcyBwdXJwb3NlLgorTkFUSVZFX0xERkxBR1MJPSBATERfTU9ERUxAICQoTE9DQUxfTElCUykgQFRJTkZPX0xERkxBR1MyQCAkKExERkxBR1MpIEBMSUJTQCBATE9DQUxfTERGTEFHUzJAICQoTERGTEFHUykgQFRJTkZPX0xJQlNACitDUk9TU19MREZMQUdTCT0gQEJVSUxEX0xERkxBR1NAIEBCVUlMRF9MSUJTQAorCitBQ1RVQUxfTERGTEFHUwk9IEBBREFHRU5fTERGTEFHU0AKIAogUkFOTElCCQk9IEBSQU5MSUJACiAKIE00CQk9IG00CiBNNEZMQUdTCQk9IC1ETkNVUlNFU19FWFRfRlVOQ1M9QE5DVVJTRVNfRVhUX0ZVTkNTQAogCi1BREFDVVJTRVNfQ09ORklHID0gYWRhY3Vyc2VzLWNvbmZpZworQURBQ1VSU0VTX0NPTkZJRyA9IGFkYWN1cnNlc0BVU0VfQ0ZHX1NVRkZJWEAtY29uZmlnCiAKLVdSQVBQRVIJCT0gc2ggJCh0b3Bfc3JjZGlyKS9taXNjL3NobGliCi1HRU5FUkFURQk9IC4vZ2VuJHggJ0BERlRfQVJHX1NVRkZJWEAnCitXUkFQUEVSCQk9IEBOQ1VSU0VTX1NITElCMkAKKworUFJPR19HRU5FUkFURQk9IC4vZ2VuZXJhdGUkeAorR0VORVJBVEUJPSAkKFBST0dfR0VORVJBVEUpICdAREZUX0FSR19TVUZGSVhAJwogREVMX0FEQU1PREUJPSBzZWQgLWUgJy9eXC1cLVwgXCBcLVwqXC1cIGFkYVwgXC1cKlwtLiovZCcKIAotR05BVEhUTUwJPSBgdHlwZSAtcCBnbmF0aHRtbCB8fCB0eXBlIC1wIGduYXRodG1sLnBsYAorR05BVEhUTUwJPSBgdHlwZSAtcCBnbmF0aHRtbCB8fCB0eXBlIC1wIGduYXRodG1sLnBsIDI+L2Rldi9udWxsYAogR05BVEhQICAgICAgICAgID0gd3d3LmduYXQuY29tCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC05NiwzOSArMTEwLDYgQEAKIAogQURBX1NSQ0RJUgk9IC4uL3NyYwogCi1HRU5fRklMRVMwICAgICAgPSBCYXNlX0RlZnMKLQotR0VOX0ZJTEVTMSAgICAgID0gQUNTX01hcCAgICAgICAgICAgICAgICAgICAgICAJCVwKLQkJICBBQ19SZXAgICAgICAgICAgICAgICAgICAgICAgIAkJXAotCQkgIEJhc2VfRGVmcwkJCSAgICAgICAgXAotCQkgIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0X1JlcCAgCQlcCi0JCSAgQ29sb3JfRGVmcyAgICAgICAgICAgICAgICAgICAJCVwKLQkJICBLZXlfRGVmaW5pdGlvbnMgICAgICAgICAgICAgIAkJXAotCQkgIExpbmtlcl9PcHRpb25zICAgICAgICAgICAgICAgCQlcCi0JCSAgT2xkX0tleXMgICAgICAgICAgICAgICAgICAgICAJCVwKLQkJICBQdWJsaWNfVmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgIFwKLQkJICBUcmFjZV9EZWZzCQkJCVwKLQkJICBWZXJzaW9uX0luZm8JCQkJXAotCQkgIFdpbmRvd19PZmZzZXRzCi0KLUdFTl9GSUxFUzIgICAgICA9IE1lbnVfT3B0X1JlcCAgICAgICAgCQkgICAgCVwKLQkJICBNZW51X0Jhc2VfRGVmcyAgICAgICAgICAgICAgIAkJXAotCQkgIE1lbnVfTGlua2VyX09wdGlvbnMgICAgICAgICAgCQlcCi0JCSAgSXRlbV9SZXAKLQotR0VOX0ZJTEVTMyAgICAgID0gRm9ybV9PcHRfUmVwICAgICAgICAgICAgICAgICAJCVwKLQkJICBGb3JtX0Jhc2VfRGVmcyAgICAgICAgICAgICAgIAkJXAotCQkgIEZvcm1fTGlua2VyX09wdGlvbnMgICAgICAgICAgCQlcCi0JCSAgRmllbGRfUmVwCi0KLUdFTl9GSUxFUzQgICAgICA9IE1vdXNlX0Jhc2VfRGVmcyAgICAgICAgICAgICAgCQlcCi0JCSAgTW91c2VfRXZlbnRfUmVwCQkJXAotCQkgIE1vdXNlX0V2ZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotCQkgIFBhbmVsX0xpbmtlcl9PcHRpb25zCi0KLUdFTl9GSUxFUzUJPSBDaHR5cGVfRGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQkJICBFdGlfRGVmcwotCiBHRU5fVEFSR0VUUyAgICAgPSAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLmFkcyAgICAgICAgIAkJCVwKIAkJICAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLmFkYiAgICAgICAgIAkJCVwKIAkgICAgICAgICAgJChBREFfU1JDRElSKS8kKEFCQVNFKS1hdXguYWRzICAgCQkJXApAQCAtMTQyLDcgKzEyMyw4IEBACiAJICAgICAgICAgICQoQURBX1NSQ0RJUikvJChBQkFTRSktZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRzCVwKIAkgICAgICAgICAgJChBREFfU1JDRElSKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy5hZHMJCVwKIAkgICAgICAgICAgJChBREFfU1JDRElSKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzCVwKLQkgICAgICAgICAgJChBREFfU1JDRElSKS8kKEFCQVNFKS1wYW5lbHMtdXNlcl9kYXRhLmFkcworCSAgICAgICAgICAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLXBhbmVscy11c2VyX2RhdGEuYWRzICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAkKEFEQV9TUkNESVIpLyQoQUJBU0UpX2NvbnN0YW50cy5hZHMKIAogR0VOX1NSQwkJPSAkKHNyY2RpcikvJChBQkFTRSkuYWRzLm00CQkJCVwKIAkJICAkKHNyY2RpcikvJChBQkFTRSkuYWRiLm00CQkJCVwKQEAgLTE2NiwxNjYgKzE0OCw2NCBAQAogCiBzb3VyY2VzOgogCi0kKEFEQV9JTkNMVURFKSBcCi0kKEFEQV9PQkpFQ1RTKSA6Ci0Jc2ggJCh0b3Bfc3JjZGlyKS9ta2RpcnMuc2ggJEAKKyQoREVTVERJUikkKGJpbmRpcikgOgorCW1rZGlyIC1wICRACiAKIGluc3RhbGwgXAotaW5zdGFsbC5saWJzIDo6ICQoQURBX0lOQ0xVREUpCi0JQGVjaG8gaW5zdGFsbGluZyBwYWNrYWdlICQoQUxJQikgaW4gJChBREFfSU5DTFVERSkKLQlAJCh0b3Bfc3JjZGlyKS90YXItY29weS5zaCAnJChBTElCKSouYWQ/JyAkKEFEQV9TUkNESVIpICQoQURBX0lOQ0xVREUpCi0JQCQodG9wX3NyY2RpcikvdGFyLWNvcHkuc2ggJyQoQUxJQilbLS5dKi5hZD8nICQoQURBX1NSQ0RJUikgJChBREFfSU5DTFVERSkKLQlAdGVzdCAkKHNyY2RpcikgIT0gLi8gJiYgJCh0b3Bfc3JjZGlyKS90YXItY29weS5zaCAnJChBTElCKSouYWQ/JyAkKHNyY2RpcikvLi4vc3JjICQoQURBX0lOQ0xVREUpCi0JQHRlc3QgJChzcmNkaXIpICE9IC4vICYmICQodG9wX3NyY2RpcikvdGFyLWNvcHkuc2ggJyQoQUxJQilbLS5dKi5hZD8nICQoc3JjZGlyKS8uLi9zcmMgJChBREFfSU5DTFVERSkKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgOjogJChBREFfT0JKRUNUUykKLQlAZWNobyBpbnN0YWxsaW5nIHBhY2thZ2UgJChBTElCKSBpbiAkKEFEQV9PQkpFQ1RTKQotCUAtY2htb2QgYS13eCAkKEFEQV9TUkNESVIpLyouYWxpCi0JQCQodG9wX3NyY2RpcikvdGFyLWNvcHkuc2ggJyQoQUxJQikqLmFsaScgJChBREFfU1JDRElSKSAkKEFEQV9PQkpFQ1RTKQotCUAkKHRvcF9zcmNkaXIpL3Rhci1jb3B5LnNoICckKEFMSUIpWy0uXSouYWxpJyAkKEFEQV9TUkNESVIpICQoQURBX09CSkVDVFMpCi0JQC1jaG1vZCB1K3ggJChBREFfU1JDRElSKS8qLmFsaQotCi1pbnN0YWxsIFwKLWluc3RhbGwubGlicyA6OiAkKERFU1RESVIpJChiaW5kaXIpIGFkYWN1cnNlcy1jb25maWcKLQkkKElOU1RBTExfUFJPRykgYWRhY3Vyc2VzLWNvbmZpZyAkKERFU1RESVIpJChiaW5kaXIpLyQoQURBQ1VSU0VTX0NPTkZJRykKLQotdW5pbnN0YWxsIFwKLXVuaW5zdGFsbC5saWJzIDo6Ci0JQGVjaG8gcmVtb3ZpbmcgcGFja2FnZSAkKEFMSUIpIGZyb20gJChBREFfSU5DTFVERSkKLQktQGNkICQoQURBX0lOQ0xVREUpICYmIHJtIC1mICQoQUxJQilbLS5dKgotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnMgOjoKLQlAZWNobyByZW1vdmluZyBwYWNrYWdlICQoQUxJQikgZnJvbSAkKEFEQV9PQkpFQ1RTKQotCS1AY2QgJChBREFfT0JKRUNUUykgJiYgcm0gLWYgJChBTElCKVstLl0qCitpbnN0YWxsLmxpYnMgOjogJChERVNURElSKSQoYmluZGlyKSAkKEFEQUNVUlNFU19DT05GSUcpCisJJChJTlNUQUxMX1BST0cpICQoQURBQ1VSU0VTX0NPTkZJRykgJChERVNURElSKSQoYmluZGlyKS8kKEFEQUNVUlNFU19DT05GSUcpCiAKIHVuaW5zdGFsbCBcCiB1bmluc3RhbGwubGlicyA6OgogCS1ybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoQURBQ1VSU0VTX0NPTkZJRykKIAotZ2VuJHg6CWdlbi5vCi0JQEVDSE9fTElOS0AgJChMSU5LKSAkKENGTEFHU19OT1JNQUwpIGdlbi5vICQoTERfRkxBR1MpIC1vICRACiskKFBST0dfR0VORVJBVEUpOiAgZ2VuLm8KKwlARUNIT19MREAgJChMSU5LKSAkKENGTEFHU19OT1JNQUwpIGdlbi5vICQoQUNUVUFMX0xERkxBR1MpIC1vICRACiAKIGdlbi5vOgkkKHNyY2RpcikvZ2VuLmMKIAkkKEhPU1RfQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLW8gJEAgJChzcmNkaXIpL2dlbi5jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXRfUmVwOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgQSIgPiRACiAKLUJhc2VfRGVmczogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBCIEIiID4kQAotCi1Db2xvcl9EZWZzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgQyIgPiRACi0KLVdpbmRvd19PZmZzZXRzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgRCIgPiRACi0KLUtleV9EZWZpbml0aW9uczogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBCIEsiID4kQAotCi1MaW5rZXJfT3B0aW9uczogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBCIEwiID4kQAotCi1BQ1NfTWFwOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgTSIgPiRACi0KLU9sZF9LZXlzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgTyIgPiRACi0KLVB1YmxpY19WYXJpYWJsZXM6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgQiBQIiA+JEAKLQotQUNfUmVwOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgUiIgPiRACi0KLVZlcnNpb25fSW5mbzogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBCIFYiID4kQAotCi1UcmFjZV9EZWZzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEIgVCIgPiRACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotTWVudV9PcHRfUmVwOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIE0gUiIgPiRACi0KLU1lbnVfQmFzZV9EZWZzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIE0gQiIgPiRACi0KLU1lbnVfTGlua2VyX09wdGlvbnM6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgTSBMIiA+JEAKLQotSXRlbV9SZXA6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgTSBJIiA+JEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1Gb3JtX09wdF9SZXA6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgRiBSIiA+JEAKLQotRm9ybV9CYXNlX0RlZnM6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgRiBCIiA+JEAKLQotRm9ybV9MaW5rZXJfT3B0aW9uczogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBGIEwiID4kQAotCi1GaWVsZF9SZXA6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgRiBJIiA+JEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1Nb3VzZV9CYXNlX0RlZnM6IGdlbiR4Ci0JJChXUkFQUEVSKSAiJChHRU5FUkFURSkgUCBCIiA+JEAKLQotTW91c2VfRXZlbnRfUmVwOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIFAgTSIgPiRACi0KLU1vdXNlX0V2ZW50czogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBCIEUiID4kQAotCi1QYW5lbF9MaW5rZXJfT3B0aW9uczogZ2VuJHgKLQkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSBQIEwiID4kQAotCi1DaHR5cGVfRGVmOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEUgQyIgPiRACi0KLUV0aV9EZWZzOiBnZW4keAotCSQoV1JBUFBFUikgIiQoR0VORVJBVEUpIEUgRSIgPiRACiskKEFEQV9TUkNESVIpLyQoQUJBU0UpX2NvbnN0YW50cy5hZHM6ICQoUFJPR19HRU5FUkFURSkKKwkkKFdSQVBQRVIpICIkKEdFTkVSQVRFKSIgPiRACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJChBREFfU1JDRElSKS8kKEFCQVNFKS5hZHM6IAkkKHNyY2RpcikvJChBQkFTRSkuYWRzLm00IFwKLQkJCQkkKEdFTl9GSUxFUzEpICQoc3JjZGlyKS9ub3JtYWwubTQKKwkJCQkkKHNyY2Rpcikvbm9ybWFsLm00CiAJJChNNCkgJChNNEZMQUdTKSAtRE00TUFDUk89JChzcmNkaXIpL25vcm1hbC5tNCBcCiAJJChzcmNkaXIpLyQoQUJBU0UpLmFkcy5tNCB8XAogCSQoREVMX0FEQU1PREUpID4kQAogCiAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLmFkYjogCSQoc3JjZGlyKS8kKEFCQVNFKS5hZGIubTQgXAotCQkJCSQoR0VOX0ZJTEVTMSkgJChzcmNkaXIpL25vcm1hbC5tNAorCQkJCSQoc3JjZGlyKS9ub3JtYWwubTQKIAkkKE00KSAkKE00RkxBR1MpIC1ETTRNQUNSTz0kKHNyY2Rpcikvbm9ybWFsLm00IFwKIAkkKHNyY2RpcikvJChBQkFTRSkuYWRiLm00IHxcCiAJJChERUxfQURBTU9ERSkgPiRACiAKICQoQURBX1NSQ0RJUikvJChBQkFTRSktYXV4LmFkczogJChzcmNkaXIpLyQoQUJBU0UpLWF1eC5hZHMubTQgXAotCQkJCSQoR0VOX0ZJTEVTNSkgJChzcmNkaXIpL25vcm1hbC5tNAorCQkJCSQoc3JjZGlyKS9ub3JtYWwubTQKIAkkKE00KSAkKE00RkxBR1MpIC1ETTRNQUNSTz0kKHNyY2Rpcikvbm9ybWFsLm00IFwKIAkkKHNyY2RpcikvJChBQkFTRSktYXV4LmFkcy5tNCB8XAogCSQoREVMX0FEQU1PREUpID4kQAogCiAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLXRyYWNlLmFkczogJChzcmNkaXIpLyQoQUJBU0UpLXRyYWNlLmFkcy5tNCBcCi0JCQkJJChHRU5fRklMRVM1KSAkKHNyY2Rpcikvbm9ybWFsLm00CisJCQkJICAkKHNyY2Rpcikvbm9ybWFsLm00CiAJJChNNCkgJChNNEZMQUdTKSAtRE00TUFDUk89JChzcmNkaXIpL25vcm1hbC5tNCBcCiAJJChzcmNkaXIpLyQoQUJBU0UpLXRyYWNlLmFkcy5tNCB8XAogCSQoREVMX0FEQU1PREUpID4kQAogCiAkKEFEQV9TUkNESVIpLyQoQUJBU0UpLW1lbnVzLmFkczogJChzcmNkaXIpLyQoQUJBU0UpLW1lbnVzLmFkcy5tNCBcCi0JCQkJICAkKEdFTl9GSUxFUzIpICQoc3JjZGlyKS9ub3JtYWwubTQKKwkJCQkgICQoc3JjZGlyKS9ub3JtYWwubTQKIAkkKE00KSAkKE00RkxBR1MpIC1ETTRNQUNSTz0kKHNyY2Rpcikvbm9ybWFsLm00IFwKIAkkKHNyY2RpcikvJChBQkFTRSktbWVudXMuYWRzLm00IHxcCiAJJChERUxfQURBTU9ERSkgPiRACiAKICQoQURBX1NSQ0RJUikvJChBQkFTRSktZm9ybXMuYWRzOiAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMuYWRzLm00IFwKLQkJCQkgICQoR0VOX0ZJTEVTMykgJChzcmNkaXIpL25vcm1hbC5tNAorCQkJCSAgJChzcmNkaXIpL25vcm1hbC5tNAogCSQoTTQpICQoTTRGTEFHUykgLURNNE1BQ1JPPSQoc3JjZGlyKS9ub3JtYWwubTQgXAogCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy5hZHMubTQgfFwKIAkkKERFTF9BREFNT0RFKSA+JEAKIAogJChBREFfU1JDRElSKS8kKEFCQVNFKS1tb3VzZS5hZHM6ICQoc3JjZGlyKS8kKEFCQVNFKS1tb3VzZS5hZHMubTQgXAotCQkJCSAgJChHRU5fRklMRVM0KSAkKHNyY2Rpcikvbm9ybWFsLm00CisJCQkJICAkKHNyY2Rpcikvbm9ybWFsLm00CiAJJChNNCkgJChNNEZMQUdTKSAtRE00TUFDUk89JChzcmNkaXIpL25vcm1hbC5tNCBcCiAJJChzcmNkaXIpLyQoQUJBU0UpLW1vdXNlLmFkcy5tNCB8XAogCSQoREVMX0FEQU1PREUpID4kQApAQCAtMzg3LDIzICsyNjcsMTggQEAKIEBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQogCiBtb3N0bHljbGVhbiA6OgotCS1ybSAtZiBhLm91dCBjb3JlIGdlbiR4ICoubwotCS1ybSAtZiAkKEdFTl9GSUxFUzEpCi0JLXJtIC1mICQoR0VOX0ZJTEVTMikKLQktcm0gLWYgJChHRU5fRklMRVMzKQotCS1ybSAtZiAkKEdFTl9GSUxFUzQpCi0JLXJtIC1mICQoR0VOX0ZJTEVTNSkKKwktcm0gLWYgYS5vdXQgY29yZSAkKFBST0dfR0VORVJBVEUpICoubwogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgogCS1ybSAtZiAkKEdFTl9UQVJHRVRTKSBpbnN0YWIudG1wICouYWRbYnNdICouaHRtbCAqLmFsaSAqLnRtcAogCiBkaXN0Y2xlYW4gOjogY2xlYW4KLQktcm0gLWYgYWRhY3Vyc2VzLWNvbmZpZworCS1ybSAtZiAkKEFEQUNVUlNFU19DT05GSUcpCiAJLXJtIC1mIE1ha2VmaWxlCiAKIHJlYWxjbGVhbiA6OiBkaXN0Y2xlYW4KIAotSFRNTF9ESVIgPSAuLi8uLi9kb2MvaHRtbC9hZGEKK0hUTUxfRElSID0gQEFEQUhUTUxfRElSQAogCiBpbnN0YWIudG1wIDogdGFibGUubTQgJChHRU5fU1JDKQogCUBybSAtZiAkQApAQCAtNDMxLDEwICszMDYsMTIgQEAKIAlAcm0gLWYgaW5zdGFiLnRtcAogCiBhZGFodG1sOgorCXRlc3QgLW4gIiQoR05BVEhUTUwpIiB8fCBleGl0IDEKIAlAZmluZCAkKEhUTUxfRElSKSAtdHlwZSBmIC1leGVjIHJtIC1mIHt9IFw7CiAJQG1rZGlyIC1wICQoSFRNTF9ESVIpCiAJY3AgLXAgLi4vc3JjLyouYWRbc2JdIC4gJiYgY2htb2QgK3cgKi5hZFtzYl0KLQlsbiAtc2YgLi4vc3JjLyouYWxpIC4KK0BVU0VfT0xEX01BS0VSVUxFU0AJbG4gLXNmIC4uL3NyYy8qLmFsaSAuCitAVVNFX0dOQVRfUFJPSkVDVFNACWxuIC1zZiAuLi9zdGF0aWMtYWxpLyouYWxpIC4KIAlAZWNobyAiRmlsdGVyaW5nIGdlbmVyYXRlZCBmaWxlcyIKIAlAZm9yIGYgaW4gJChHRU5fU1JDKTsgZG8gXAogCSAgIGg9YGJhc2VuYW1lICQkZmAgO1wKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi9hZGFjdXJzZXMtY29uZmlnIGIvQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTlhMGUuLjAwMDAwMDAKLS0tIGEvQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jISAvYmluL3NoCi0jICRJZDogYWRhY3Vyc2VzLWNvbmZpZy5pbix2IDEuMiAyMDA3LzA0LzA3IDIxOjA2OjUwIHRvbSBFeHAgJAotIwotIyBUaGlzIHNjcmlwdCB3aWxsIHJldHVybiB0aGUgb3B0aW9uIHRvIGFkZCB0byBgZ25hdG1ha2UnIGZvciB1c2luZwotIyBBZGFDdXJzZXMuCi0jCi0KLXByZWZpeD0iL3Vzci9sb2NhbCIKLWV4ZWNfcHJlZml4PSIke3ByZWZpeH0iCi1saWJkaXI9IiR7ZXhlY19wcmVmaXh9L2xpYiIKLQotVkVSU0lPTj0iNS43LjIwMDgxMTAyIgotCi1DRkxBR1M9Ii1JJGxpYmRpci9hZGFjdXJzZXMgLUwkbGliZGlyL2FkYWN1cnNlcyIKLUxJQlM9Ii1MJHByZWZpeC9saWIgLWxBZGFDdXJzZXMiCi0KLWNhc2UgIngkMSIgaW4KLSAgICB4LS12ZXJzaW9uKQotICAgICAgICBlY2hvIEFkYUN1cnNlcyAkVkVSU0lPTgotICAgICAgICA7OwotICAgIHgtLWNmbGFncykKLSAgICAgICAgZWNobyAkQ0ZMQUdTCi0gICAgICAgIDs7Ci0gICAgeC0tbGlicykKLSAgICAgICAgZWNobyAkTElCUwotICAgICAgICA7OwotICAgIHgpCi0gICAgCSMgaWYgbm8gcGFyYW1ldGVyIGlzIGdpdmVuLCBnaXZlIHdoYXQgZ25hdG1ha2UgbmVlZHMKLSAgICAgICAgZWNobyAkQ0ZMQUdTIC1sYXJncyAkTElCUwotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGVjaG8gJ1VzYWdlOiBhZGFjdXJzZXMtY29uZmlnIFstLXZlcnNpb24gfCAtLWNmbGFncyB8IC0tbGlic10nID4mMgotICAgICAgICBleGl0IDEKLSAgICAgICAgOzsKLWVzYWMKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi9hZGFjdXJzZXMtY29uZmlnLmluIGIvQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcuaW4KaW5kZXggYzg4ZDg1Yi4uZTI5YzMwOSAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcuaW4KKysrIGIvQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcuaW4KQEAgLTEsMzUgKzEsODEgQEAKICMhIC9iaW4vc2gKLSMgJElkOiBhZGFjdXJzZXMtY29uZmlnLmluLHYgMS4yIDIwMDcvMDQvMDcgMjE6MDY6NTAgdG9tIEV4cCAkCisjICRJZDogYWRhY3Vyc2VzLWNvbmZpZy5pbix2IDEuOSAyMDE0LzA2LzA3IDE5OjMyOjIyIFBhc2NhbC5QaWduYXJkIEV4cCAkCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTAsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCi0jIFRoaXMgc2NyaXB0IHdpbGwgcmV0dXJuIHRoZSBvcHRpb24gdG8gYWRkIHRvIGBnbmF0bWFrZScgZm9yIHVzaW5nCi0jIEFkYUN1cnNlcy4KLSMKKyMgVGhpcyBzY3JpcHQgcmV0dXJucyB0aGUgb3B0aW9ucyB0byBhZGQgdG8gYGduYXRtYWtlJyBmb3IgdXNpbmcgQWRhQ3Vyc2VzLgogCi1wcmVmaXg9IkBwcmVmaXhAIgotZXhlY19wcmVmaXg9IkBleGVjX3ByZWZpeEAiCi1saWJkaXI9IkBsaWJkaXJAIgorREVTVERJUj1AREVTVERJUkAKK3ByZWZpeD1AcHJlZml4QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACiAKLVZFUlNJT049IkBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAuQE5DVVJTRVNfUEFUQ0hAIgorQURBX0lOQ0xVREU9QEFEQV9JTkNMVURFQAorQURBX09CSkVDVFM9QEFEQV9PQkpFQ1RTQAogCi1DRkxBR1M9Ii1JJGxpYmRpci9hZGFjdXJzZXMgLUwkbGliZGlyL2FkYWN1cnNlcyIKLUxJQlM9Ii1MJHByZWZpeC9saWIgLWxBZGFDdXJzZXMiCitWRVJTSU9OPUBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAuQE5DVVJTRVNfUEFUQ0hACisKK0NGTEFHUz0iLWFJJEFEQV9JTkNMVURFIC1hTyRBREFfT0JKRUNUUyIKK0xJQlM9Ii1MJEFEQV9PQkpFQ1RTIC1sQWRhQ3Vyc2VzIgorCitUSElTPSJhZGFjdXJzZXMiCiAKIGNhc2UgIngkMSIgaW4KLSAgICB4LS12ZXJzaW9uKQotICAgICAgICBlY2hvIEFkYUN1cnNlcyAkVkVSU0lPTgotICAgICAgICA7OwotICAgIHgtLWNmbGFncykKLSAgICAgICAgZWNobyAkQ0ZMQUdTCi0gICAgICAgIDs7Ci0gICAgeC0tbGlicykKLSAgICAgICAgZWNobyAkTElCUwotICAgICAgICA7OwotICAgIHgpCi0gICAgCSMgaWYgbm8gcGFyYW1ldGVyIGlzIGdpdmVuLCBnaXZlIHdoYXQgZ25hdG1ha2UgbmVlZHMKLSAgICAgICAgZWNobyAkQ0ZMQUdTIC1sYXJncyAkTElCUwotICAgICAgICA7OwotICAgICopCi0gICAgICAgIGVjaG8gJ1VzYWdlOiBhZGFjdXJzZXMtY29uZmlnIFstLXZlcnNpb24gfCAtLWNmbGFncyB8IC0tbGlic10nID4mMgotICAgICAgICBleGl0IDEKLSAgICAgICAgOzsKKwl4LS12ZXJzaW9uKQorCQllY2hvIEFkYUN1cnNlcyAkVkVSU0lPTgorCQk7OworCXgtLWNmbGFncykKKwkJZWNobyAkQ0ZMQUdTCisJCTs7CisJeC0tbGlicykKKwkJZWNobyAkTElCUworCQk7OworCXgpCisJCSMgaWYgbm8gcGFyYW1ldGVyIGlzIGdpdmVuLCBnaXZlIHdoYXQgZ25hdG1ha2UgbmVlZHMKKwkJZWNobyAiJENGTEFHUyAtbGFyZ3MgJExJQlMiCisJCTs7CisJeC0taGVscCkKKwkJY2F0IDw8RU5ESEVMUAorVXNhZ2U6ICR7VEhJU30tY29uZmlnIFtvcHRpb25zXQorCitPcHRpb25zOgorICAtLWNmbGFncyAgICAgICAgICAgZWNob3MgdGhlIGduYXQgKEFkYSBjb21waWxlcikgZmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgd2l0aCAke1RISVN9CisgIC0tbGlicyAgICAgICAgICAgICBlY2hvcyB0aGUgZ25hdCBsaWJyYXJpZXMgbmVlZGVkIHRvIGxpbmsgd2l0aCAke1RISVN9CisKKyAgLS12ZXJzaW9uICAgICAgICAgIGVjaG9zIHRoZSByZWxlYXNlK3BhdGNoZGF0ZSB2ZXJzaW9uIG9mICR7VEhJU30KKworICAtLWhlbHAgICAgICAgICAgICAgcHJpbnRzIHRoaXMgbWVzc2FnZQorCitJZiBubyBvcHRpb25zIGFyZSBnaXZlbiwgZWNob3MgdGhlIGZ1bGwgc2V0IG9mIGZsYWdzIG5lZWRlZCBieSBnbmF0bWFrZS4KK0VOREhFTFAKKwkJOzsKKwkqKQorCQllY2hvICdVc2FnZTogYWRhY3Vyc2VzQERGVF9BUkdfU1VGRklYQC1jb25maWcgWy0tdmVyc2lvbiB8IC0tY2ZsYWdzIHwgLS1saWJzXScgPiYyCisJCWV4aXQgMQorCQk7OwogZXNhYwpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL2dlbi5jIGIvQWRhOTUvZ2VuL2dlbi5jCmluZGV4IGQ4ZWE0NGYuLjRlOTg2YTQgMTAwNjQ0Ci0tLSBhL0FkYTk1L2dlbi9nZW4uYworKysgYi9BZGE5NS9nZW4vZ2VuLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiwxNDkyICszMiw1MDMgQEAKIAogLyoKICAgICBWZXJzaW9uIENvbnRyb2wKLSAgICAkSWQ6IGdlbi5jLHYgMS40OSAyMDA4LzEwLzA0IDIxOjU5OjM3IHRvbSBFeHAgJAorICAgICRJZDogZ2VuLmMsdiAxLjY5IDIwMTQvMDUvMzEgMjE6MDA6MDggdG9tIEV4cCAkCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCi0gIFRoaXMgcHJvZ3JhbSBnZW5lcmF0ZXMgdmFyaW91cyByZWNvcmQgc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzIGZyb20gdGhlCi0gIG5jdXJzZXMgaGVhZGVyIGZpbGUgZm9yIHRoZSBBZGE5NSBwYWNrYWdlcy4gRXNzZW50aWFsbHkgaXQgcHJvZHVjZXMKLSAgQWRhOTUgc291cmNlIG9uIHN0ZG91dCwgd2hpY2ggaXMgdGhlbiBtZXJnZWQgdXNpbmcgbTQgaW50byBhIHRlbXBsYXRlCi0gIHRvIHByb2R1Y2UgdGhlIHJlYWwgc291cmNlLgotICAqLworICBUaGlzIHByb2dyYW0gcHJpbnRzIG9uIGl0cyBzdGFuZGFyZCBvdXRwdXQgdGhlIHNvdXJjZSBmb3IgdGhlCisgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXNfQ29uc3RhbnRzIEFkYSBwYWNrYWdlIHNwZWNpZmljYXRpb24uIFRoaXMgcHVyZQorICBwYWNrYWdlIG9ubHkgZXhwb3J0cyBDIGNvbnN0YW50cyB0byB0aGUgQWRhIGNvbXBpbGVyLgorICovCiAKKyNpZmRlZiBIQVZFX0NPTkZJR19ICiAjaW5jbHVkZSA8bmN1cnNlc19jZmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8bmN1cnNlcy5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8bWVudS5oPgogI2luY2x1ZGUgPGZvcm0uaD4KIAotI2RlZmluZSBSRVNfTkFNRSAiUmVzZXJ2ZWQiCisjdW5kZWYgVUNIQVIKKyN1bmRlZiBVSU5UCiAKLXN0YXRpYyBjb25zdCBjaGFyICptb2RlbCA9ICIiOwotc3RhdGljIGludCBsaXR0bGVfZW5kaWFuID0gMDsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBVQ0hBUjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQ7CiAKLXR5cGVkZWYgc3RydWN0Ci0gIHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIHVuc2lnbmVkIGxvbmcgYXR0cjsKLSAgfQotbmFtZV9hdHRyaWJ1dGVfcGFpcjsKKy8qIFRoZXNlIGdsb2JhbCB2YXJpYWJsZXMgd2lsbCBiZSBzZXQgYnkgbWFpbiAoKSAqLworc3RhdGljIGludCBsaXR0bGVfZW5kaWFuOworc3RhdGljIGNvbnN0IGNoYXIgKm15X3Byb2dyYW1faW52b2NhdGlvbl9uYW1lID0gTlVMTDsKIAotc3RhdGljIGludAotZmluZF9wb3MoY2hhciAqcywgdW5zaWduZWQgbGVuLCBpbnQgKmxvdywgaW50ICpoaWdoKQorc3RhdGljIHZvaWQKK215X2Vycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7Ci0gIHVuc2lnbmVkIGludCBpLCBqOwotICBpbnQgbCA9IDA7CisgIGZwcmludGYoc3RkZXJyLCAiJXM6ICVzXG4iLCBteV9wcm9ncmFtX2ludm9jYXRpb25fbmFtZSwgbWVzc2FnZSk7CisgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KIAotICAqaGlnaCA9IC0xOwotICAqbG93ID0gOCAqIGxlbjsKK3N0YXRpYyB2b2lkCitwcmludF9jb25zdGFudChjb25zdCBjaGFyICpuYW1lLAorCSAgICAgICBsb25nIHZhbHVlKQoreworICBwcmludGYoIiAgICUtMjhzIDogY29uc3RhbnQgOj0gJWxkO1xuIiwgbmFtZSwgdmFsdWUpOworfQogCi0gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKywgcysrKQotICAgIHsKLSAgICAgIGlmICgqcykKLQl7Ci0JICBmb3IgKGogPSAwOyBqIDwgOCAqIHNpemVvZihjaGFyKTsgaisrKQorI2RlZmluZSBQUklOVF9OQU1FRF9DT05TVEFOVChuYW1lKSBcCisgIHByaW50X2NvbnN0YW50ICgjbmFtZSwgbmFtZSkKIAotCSAgICB7Ci0JICAgICAgaWYgKCgobGl0dGxlX2VuZGlhbiAmJiAoKCpzKSAmIDB4MDEpKSB8fAotCQkgICAoIWxpdHRsZV9lbmRpYW4gJiYgKCgqcykgJiAweDgwKSkpKQotCQl7Ci0JCSAgaWYgKGwgPiAqaGlnaCkKLQkJICAgICpoaWdoID0gbDsKLQkJICBpZiAobCA8ICpsb3cpCi0JCSAgICAqbG93ID0gbDsKLQkJfQotCSAgICAgIGwrKzsKLQkgICAgICBpZiAobGl0dGxlX2VuZGlhbikKLQkJKnMgPj49IDE7Ci0JICAgICAgZWxzZQotCQkqcyA8PD0gMTsKLQkgICAgfQotCX0KLSAgICAgIGVsc2UKLQlsICs9IDg7Ci0gICAgfQotICByZXR1cm4gKCpoaWdoID49IDAgJiYgKCpsb3cgPD0gKmhpZ2gpKSA/ICpsb3cgOiAtMTsKK3N0YXRpYyB2b2lkCitwcmludF9jb21tZW50KGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisgIHByaW50ZigiXG4gICAtLSAgJXNcblxuIiwgbWVzc2FnZSk7CiB9CiAKIC8qCi0gKiBUaGlzIGhlbHBlciByb3V0aW5lIGdlbmVyYXRlcyBhIHJlcHJlc2VudGF0aW9uIGNsYXVzZSBmb3IgYQotICogcmVjb3JkIHR5cGUgZGVmaW5lZCBpbiB0aGUgYmluZGluZy4KLSAqIFdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCByZWNvcmQgdHlwZXMgd2hpY2ggYXJlIG9mIDMyIG9yIDE2Ci0gKiBiaXQgc2l6ZSwgaS5lLiB0aGV5IGZpdCBpbnRvIGFuICh1KWludCBvciBhICh1KXNob3J0LgorICogTWFrZSBzdXJlIHRoYXQgS0VZX01JTiBhbmQgS0VZX01BWCBhcmUgZGVmaW5lZC4KKyAqIG1haW4gKCkgd2lsbCBwcm90ZXN0IGlmIEtFWV9NSU4gPT0gMjU2CiAgKi8KLXN0YXRpYyB2b2lkCi0gIGdlbl9yZXBzCi0gIChjb25zdCBuYW1lX2F0dHJpYnV0ZV9wYWlyICogbmFwLAkvKiBhcnJheSBvZiBuYW1lX2F0dHJpYnV0ZV9wYWlyIHJlY29yZHMgKi8KLSAgIGNvbnN0IGNoYXIgKm5hbWUsCQkvKiBuYW1lIG9mIHRoZSByZXByZXNlbnRlZCByZWNvcmQgdHlwZSAgKi8KLSAgIGludCBsZW4sCQkJLyogc2l6ZSBvZiB0aGUgcmVjb3JkIGluIGJ5dGVzICAgICAgICAgICovCi0gICBpbnQgYmlhcykKLXsKLSAgaW50IGksIG4sIGwsIGNudCA9IDAsIGxvdywgaGlnaDsKLSAgaW50IHdpZHRoID0gc3RybGVuKFJFU19OQU1FKSArIDM7Ci0gIHVuc2lnbmVkIGxvbmcgYTsKLSAgdW5zaWduZWQgbG9uZyBtYXNrID0gMDsKLQotICBhc3NlcnQobmFwICE9IE5VTEwpOwotCi0gIGZvciAoaSA9IDA7IG5hcFtpXS5uYW1lICE9IChjaGFyICopMDsgaSsrKQotICAgIHsKLSAgICAgIGNudCsrOwotICAgICAgbCA9IHN0cmxlbihuYXBbaV0ubmFtZSk7Ci0gICAgICBpZiAobCA+IHdpZHRoKQotCXdpZHRoID0gbDsKLSAgICB9Ci0gIGFzc2VydCh3aWR0aCA+IDApOwotCi0gIHByaW50ZigiICAgdHlwZSAlcyBpc1xuIiwgbmFtZSk7Ci0gIHByaW50ZigiICAgICAgcmVjb3JkXG4iKTsKLSAgZm9yIChpID0gMDsgbmFwW2ldLm5hbWUgIT0gKGNoYXIgKikwOyBpKyspCi0gICAgewotICAgICAgcHJpbnRmKCIgICAgICAgICAlLSpzIDogQm9vbGVhbjtcbiIsIHdpZHRoLCBuYXBbaV0ubmFtZSk7Ci0gICAgfQotICBwcmludGYoIiAgICAgIGVuZCByZWNvcmQ7XG4iKTsKLSAgcHJpbnRmKCIgICBwcmFnbWEgQ29udmVudGlvbiAoQywgJXMpO1xuXG4iLCBuYW1lKTsKLQotICBwcmludGYoIiAgIGZvciAlcyB1c2VcbiIsIG5hbWUpOwotICBwcmludGYoIiAgICAgIHJlY29yZFxuIik7Ci0KLSAgZm9yIChpID0gMDsgbmFwW2ldLm5hbWUgIT0gKGNoYXIgKikwOyBpKyspCi0gICAgewotICAgICAgYSA9IG5hcFtpXS5hdHRyOwotICAgICAgbWFzayB8PSBhOwotICAgICAgbCA9IGZpbmRfcG9zKChjaGFyICopJmEsIHNpemVvZihhKSwgJmxvdywgJmhpZ2gpOwotICAgICAgaWYgKGwgPj0gMCkKLQlwcmludGYoIiAgICAgICAgICUtKnMgYXQgMCByYW5nZSAlMmQgLi4gJTJkO1xuIiwgd2lkdGgsIG5hcFtpXS5uYW1lLAotCSAgICAgICBsb3cgLSBiaWFzLCBoaWdoIC0gYmlhcyk7Ci0gICAgfQotICBpID0gMTsKLSAgbiA9IGNudDsKLSAgcHJpbnRmKCIgICAgICBlbmQgcmVjb3JkO1xuIik7Ci0gIHByaW50ZigiICAgZm9yICVzJ1NpemUgdXNlICVkO1xuIiwgbmFtZSwgOCAqIGxlbik7Ci0gIHByaW50ZigiICAgLS0gIFBsZWFzZSBub3RlOiB0aGlzIHJlcC4gY2xhdXNlIGlzIGdlbmVyYXRlZCBhbmQgbWF5IGJlXG4iKTsKLSAgcHJpbnRmKCIgICAtLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS4iKTsKLX0KLQotc3RhdGljIHZvaWQKLWNodHlwZV9yZXAoY29uc3QgY2hhciAqbmFtZSwgYXR0cl90IG1hc2spCi17Ci0gIGF0dHJfdCB4ID0gLTE7Ci0gIGF0dHJfdCB0ID0geCAmIG1hc2s7Ci0gIGludCBsb3csIGhpZ2g7Ci0gIGludCBsID0gZmluZF9wb3MoKGNoYXIgKikmdCwgc2l6ZW9mKHQpLCAmbG93LCAmaGlnaCk7Ci0KLSAgaWYgKGwgPj0gMCkKLSAgICBwcmludGYoIiAgICAgICAgICUtNXMgYXQgMCByYW5nZSAlMmQgLi4gJTJkO1xuIiwgbmFtZSwgbG93LCBoaWdoKTsKLX0KLQotc3RhdGljIHZvaWQKLWdlbl9jaHR5cGVfcmVwKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIHByaW50ZigiICAgZm9yICVzIHVzZVxuICAgICAgcmVjb3JkXG4iLCBuYW1lKTsKLSAgY2h0eXBlX3JlcCgiQ2giLCBBX0NIQVJURVhUKTsKLSAgY2h0eXBlX3JlcCgiQ29sb3IiLCBBX0NPTE9SKTsKLSAgY2h0eXBlX3JlcCgiQXR0ciIsIChBX0FUVFJJQlVURVMgJiB+QV9DT0xPUikpOwotICBwcmludGYoIiAgICAgIGVuZCByZWNvcmQ7XG4gICBmb3IgJXMnU2l6ZSB1c2UgJWxkO1xuIiwKLQkgbmFtZSwgKGxvbmcpKDggKiBzaXplb2YoY2h0eXBlKSkpOwotCi0gIHByaW50ZigiICAgICAgLS0gIFBsZWFzZSBub3RlOiB0aGlzIHJlcC4gY2xhdXNlIGlzIGdlbmVyYXRlZCBhbmQgbWF5IGJlXG4iKTsKLSAgcHJpbnRmKCIgICAgICAtLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS5cbiIpOwotfQotCi1zdGF0aWMgdm9pZAotbXJlcF9yZXAoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqcmVjKQotewotICBpbnQgbG93LCBoaWdoOwotICBpbnQgbCA9IGZpbmRfcG9zKChjaGFyICopcmVjLCBzaXplb2YoTUVWRU5UKSwgJmxvdywgJmhpZ2gpOwotCi0gIGlmIChsID49IDApCi0gICAgcHJpbnRmKCIgICAgICAgICAlLTdzIGF0IDAgcmFuZ2UgJTNkIC4uICUzZDtcbiIsIG5hbWUsIGxvdywgaGlnaCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW5fbXJlcF9yZXAoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgTUVWRU5UIHg7Ci0KLSAgcHJpbnRmKCIgICBmb3IgJXMgdXNlXG4gICAgICByZWNvcmRcbiIsIG5hbWUpOwotCi0gIG1lbXNldCgmeCwgMCwgc2l6ZW9mKHgpKTsKLSAgeC5pZCA9IC0xOwotICBtcmVwX3JlcCgiSWQiLCAmeCk7Ci0KLSAgbWVtc2V0KCZ4LCAwLCBzaXplb2YoeCkpOwotICB4LnggPSAtMTsKLSAgbXJlcF9yZXAoIlgiLCAmeCk7Ci0KLSAgbWVtc2V0KCZ4LCAwLCBzaXplb2YoeCkpOwotICB4LnkgPSAtMTsKLSAgbXJlcF9yZXAoIlkiLCAmeCk7Ci0KLSAgbWVtc2V0KCZ4LCAwLCBzaXplb2YoeCkpOwotICB4LnogPSAtMTsKLSAgbXJlcF9yZXAoIloiLCAmeCk7Ci0KLSAgbWVtc2V0KCZ4LCAwLCBzaXplb2YoeCkpOwotICB4LmJzdGF0ZSA9IC0xOwotICBtcmVwX3JlcCgiQnN0YXRlIiwgJngpOwotCi0gIHByaW50ZigiICAgICAgZW5kIHJlY29yZDtcbiIpOwotICBwcmludGYoIiAgICAgIC0tICBQbGVhc2Ugbm90ZTogdGhpcyByZXAuIGNsYXVzZSBpcyBnZW5lcmF0ZWQgYW5kIG1heSBiZVxuIik7Ci0gIHByaW50ZigiICAgICAgLS0gICAgICAgICAgICAgICBkaWZmZXJlbnQgb24geW91ciBzeXN0ZW0uXG4iKTsKLX0KLQotc3RhdGljIHZvaWQKLWdlbl9hdHRyX3NldChjb25zdCBjaGFyICpuYW1lKQotewotICAvKiBBbGwgb2YgdGhlIEFfeHh4IHN5bWJvbHMgYXJlIGRlZmluZWQgaW4gbmN1cnNlcywgYnV0IG5vdCBhbGwgYXJlIG5vbnplcm8KLSAgICogaWYgImNvbmZpZ3VyZSAtLWVuYWJsZS13aWRlYyIgaXMgc3BlY2lmaWVkLgotICAgKi8KLSAgc3RhdGljIGNvbnN0IG5hbWVfYXR0cmlidXRlX3BhaXIgbmFwW10gPQotICB7Ci0jaWYgQV9TVEFORE9VVAotICAgIHsiU3RhbmRfT3V0IiwgQV9TVEFORE9VVH0sCi0jZW5kaWYKLSNpZiBBX1VOREVSTElORQotICAgIHsiVW5kZXJfTGluZSIsIEFfVU5ERVJMSU5FfSwKLSNlbmRpZgotI2lmIEFfUkVWRVJTRQotICAgIHsiUmV2ZXJzZV9WaWRlbyIsIEFfUkVWRVJTRX0sCi0jZW5kaWYKLSNpZiBBX0JMSU5LCi0gICAgeyJCbGluayIsIEFfQkxJTkt9LAotI2VuZGlmCi0jaWYgQV9ESU0KLSAgICB7IkRpbV9DaGFyYWN0ZXIiLCBBX0RJTX0sCi0jZW5kaWYKLSNpZiBBX0JPTEQKLSAgICB7IkJvbGRfQ2hhcmFjdGVyIiwgQV9CT0xEfSwKLSNlbmRpZgotI2lmIEFfQUxUQ0hBUlNFVAotICAgIHsiQWx0ZXJuYXRlX0NoYXJhY3Rlcl9TZXQiLCBBX0FMVENIQVJTRVR9LAotI2VuZGlmCi0jaWYgQV9JTlZJUwotICAgIHsiSW52aXNpYmxlX0NoYXJhY3RlciIsIEFfSU5WSVN9LAotI2VuZGlmCi0jaWYgQV9QUk9URUNUCi0gICAgeyJQcm90ZWN0ZWRfQ2hhcmFjdGVyIiwgQV9QUk9URUNUfSwKLSNlbmRpZgotI2lmIEFfSE9SSVpPTlRBTAotICAgIHsiSG9yaXpvbnRhbCIsIEFfSE9SSVpPTlRBTH0sCi0jZW5kaWYKLSNpZiBBX0xFRlQKLSAgICB7IkxlZnQiLCBBX0xFRlR9LAotI2VuZGlmCi0jaWYgQV9MT1cKLSAgICB7IkxvdyIsIEFfTE9XfSwKLSNlbmRpZgotI2lmIEFfUklHSFQKLSAgICB7IlJpZ2h0IiwgQV9SSUdIVH0sCi0jZW5kaWYKLSNpZiBBX1RPUAotICAgIHsiVG9wIiwgQV9UT1B9LAotI2VuZGlmCi0jaWYgQV9WRVJUSUNBTAotICAgIHsiVmVydGljYWwiLCBBX1ZFUlRJQ0FMfSwKLSNlbmRpZgotICAgIHsoY2hhciAqKTAsIDB9Ci0gIH07Ci0gIGNodHlwZSBhdHRyID0gQV9BVFRSSUJVVEVTICYgfkFfQ09MT1I7Ci0gIGludCBzdGFydCA9IC0xOwotICBpbnQgbGVuID0gMDsKLSAgaW50IGksIHNldDsKLSAgZm9yIChpID0gMDsgaSA8IChpbnQpKDggKiBzaXplb2YoY2h0eXBlKSk7IGkrKykKLQotICAgIHsKLSAgICAgIHNldCA9IGF0dHIgJiAxOwotICAgICAgaWYgKHNldCkKLQl7Ci0JICBpZiAoc3RhcnQgPCAwKQotCSAgICBzdGFydCA9IGk7Ci0JICBpZiAoc3RhcnQgPj0gMCkKLQkgICAgewotCSAgICAgIGxlbisrOwotCSAgICB9Ci0JfQotICAgICAgYXR0ciA9IGF0dHIgPj4gMTsKLSAgICB9Ci0gIGdlbl9yZXBzKG5hcCwgbmFtZSwgKGxlbiArIDcpIC8gOCwgbGl0dGxlX2VuZGlhbiA/IHN0YXJ0IDogMCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW5fdHJhY2UoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgc3RhdGljIGNvbnN0IG5hbWVfYXR0cmlidXRlX3BhaXIgbmFwW10gPQotICB7Ci0gICAgeyJUaW1lcyIsIFRSQUNFX1RJTUVTfSwKLSAgICB7IlRwdXRzIiwgVFJBQ0VfVFBVVFN9LAotICAgIHsiVXBkYXRlIiwgVFJBQ0VfVVBEQVRFfSwKLSAgICB7IkN1cnNvcl9Nb3ZlIiwgVFJBQ0VfTU9WRX0sCi0gICAgeyJDaGFyYWN0ZXJfT3V0cHV0IiwgVFJBQ0VfQ0hBUlBVVH0sCi0gICAgeyJDYWxscyIsIFRSQUNFX0NBTExTfSwKLSAgICB7IlZpcnR1YWxfUHV0cyIsIFRSQUNFX1ZJUlRQVVR9LAotICAgIHsiSW5wdXRfRXZlbnRzIiwgVFJBQ0VfSUVWRU5UfSwKLSAgICB7IlRUWV9TdGF0ZSIsIFRSQUNFX0JJVFN9LAotICAgIHsiSW50ZXJuYWxfQ2FsbHMiLCBUUkFDRV9JQ0FMTFN9LAotICAgIHsiQ2hhcmFjdGVyX0NhbGxzIiwgVFJBQ0VfQ0NBTExTfSwKLSAgICB7IlRlcm1jYXBfVGVybUluZm8iLCBUUkFDRV9EQVRBQkFTRX0sCi0gICAgeyhjaGFyICopMCwgMH0KLSAgfTsKLSAgZ2VuX3JlcHMobmFwLCBuYW1lLCBzaXplb2YoaW50KSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW5fbWVudV9vcHRfcmVwKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIHN0YXRpYyBjb25zdCBuYW1lX2F0dHJpYnV0ZV9wYWlyIG5hcFtdID0KLSAgewotI2lmZGVmIE9fT05FVkFMVUUKLSAgICB7Ik9uZV9WYWx1ZWQiLCBPX09ORVZBTFVFfSwKLSNlbmRpZgotI2lmZGVmIE9fU0hPV0RFU0MKLSAgICB7IlNob3dfRGVzY3JpcHRpb25zIiwgT19TSE9XREVTQ30sCi0jZW5kaWYKLSNpZmRlZiBPX1JPV01BSk9SCi0gICAgeyJSb3dfTWFqb3JfT3JkZXIiLCBPX1JPV01BSk9SfSwKLSNlbmRpZgotI2lmZGVmIE9fSUdOT1JFQ0FTRQotICAgIHsiSWdub3JlX0Nhc2UiLCBPX0lHTk9SRUNBU0V9LAotI2VuZGlmCi0jaWZkZWYgT19TSE9XTUFUQ0gKLSAgICB7IlNob3dfTWF0Y2hlcyIsIE9fU0hPV01BVENIfSwKLSNlbmRpZgotI2lmZGVmIE9fTk9OQ1lDTElDCi0gICAgeyJOb25fQ3ljbGljIiwgT19OT05DWUNMSUN9LAotI2VuZGlmCi0gICAgeyhjaGFyICopMCwgMH0KLSAgfTsKLSAgZ2VuX3JlcHMobmFwLCBuYW1lLCBzaXplb2YoaW50KSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW5faXRlbV9vcHRfcmVwKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIHN0YXRpYyBjb25zdCBuYW1lX2F0dHJpYnV0ZV9wYWlyIG5hcFtdID0KLSAgewotI2lmZGVmIE9fU0VMRUNUQUJMRQotICAgIHsiU2VsZWN0YWJsZSIsIE9fU0VMRUNUQUJMRX0sCi0jZW5kaWYKLSAgICB7KGNoYXIgKikwLCAwfQotICB9OwotICBnZW5fcmVwcyhuYXAsIG5hbWUsIHNpemVvZihpbnQpLCAwKTsKLX0KLQotc3RhdGljIHZvaWQKLWdlbl9mb3JtX29wdF9yZXAoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgc3RhdGljIGNvbnN0IG5hbWVfYXR0cmlidXRlX3BhaXIgbmFwW10gPQotICB7Ci0jaWZkZWYgT19OTF9PVkVSTE9BRAotICAgIHsiTkxfT3ZlcmxvYWQiLCBPX05MX09WRVJMT0FEfSwKLSNlbmRpZgotI2lmZGVmIE9fQlNfT1ZFUkxPQUQKLSAgICB7IkJTX092ZXJsb2FkIiwgT19CU19PVkVSTE9BRH0sCi0jZW5kaWYKLSAgICB7KGNoYXIgKikwLCAwfQotICB9OwotICBnZW5fcmVwcyhuYXAsIG5hbWUsIHNpemVvZihpbnQpLCAwKTsKLX0KLQotLyoKLSAqIEdlbmVyYXRlIHRoZSByZXByZXNlbnRhdGlvbiBjbGF1c2UgZm9yIHRoZSBGaWVsZF9PcHRpb25fU2V0IHJlY29yZAotICovCi1zdGF0aWMgdm9pZAotZ2VuX2ZpZWxkX29wdF9yZXAoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgc3RhdGljIGNvbnN0IG5hbWVfYXR0cmlidXRlX3BhaXIgbmFwW10gPQotICB7Ci0jaWZkZWYgT19WSVNJQkxFCi0gICAgeyJWaXNpYmxlIiwgT19WSVNJQkxFfSwKLSNlbmRpZgotI2lmZGVmIE9fQUNUSVZFCi0gICAgeyJBY3RpdmUiLCBPX0FDVElWRX0sCi0jZW5kaWYKLSNpZmRlZiBPX1BVQkxJQwotICAgIHsiUHVibGljIiwgT19QVUJMSUN9LAotI2VuZGlmCi0jaWZkZWYgT19FRElUCi0gICAgeyJFZGl0IiwgT19FRElUfSwKLSNlbmRpZgotI2lmZGVmIE9fV1JBUAotICAgIHsiV3JhcCIsIE9fV1JBUH0sCi0jZW5kaWYKLSNpZmRlZiBPX0JMQU5LCi0gICAgeyJCbGFuayIsIE9fQkxBTkt9LAotI2VuZGlmCi0jaWZkZWYgT19BVVRPU0tJUAotICAgIHsiQXV0b19Ta2lwIiwgT19BVVRPU0tJUH0sCi0jZW5kaWYKLSNpZmRlZiBPX05VTExPSwotICAgIHsiTnVsbF9PayIsIE9fTlVMTE9LfSwKLSNlbmRpZgotI2lmZGVmIE9fUEFTU09LCi0gICAgeyJQYXNzX09rIiwgT19QQVNTT0t9LAotI2VuZGlmCi0jaWZkZWYgT19TVEFUSUMKLSAgICB7IlN0YXRpYyIsIE9fU1RBVElDfSwKLSNlbmRpZgotICAgIHsoY2hhciAqKTAsIDB9Ci0gIH07Ci0gIGdlbl9yZXBzKG5hcCwgbmFtZSwgc2l6ZW9mKGludCksIDApOwotfQotCi0vKgotICogR2VuZXJhdGUgYSBzaW5nbGUga2V5IGNvZGUgY29uc3RhbnQgZGVmaW5pdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLWtleWRlZihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpvbGRfbmFtZSwgaW50IHZhbHVlLCBpbnQgbW9kZSkKLXsKLSAgaWYgKG1vZGUgPT0gMCkJCS8qIEdlbmVyYXRlIHRoZSBuZXcgbmFtZSAqLwotICAgIHByaW50ZigiICAgJS0zMHMgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlIDo9IDgjJTNvIztcbiIsIG5hbWUsIHZhbHVlKTsKLSAgZWxzZQotICAgIHsJCQkJLyogZ2VuZXJhdGUgdGhlIG9sZCBuYW1lLCBidXQgb25seSBpZiBpdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggdGhlIG9sZAotCQkJCSAqIG5hbWUgKEFkYTk1IGlzbid0IGNhc2Ugc2Vuc2l0aXZlISkKLQkJCQkgKi8KLSAgICAgIGNvbnN0IGNoYXIgKnMgPSBvbGRfbmFtZTsKLSAgICAgIGNvbnN0IGNoYXIgKnQgPSBuYW1lOwotCi0gICAgICB3aGlsZSAoKnMgJiYgKnQgJiYgKHRvdXBwZXIoKnMrKykgPT0gdG91cHBlcigqdCsrKSkpOwotICAgICAgaWYgKCpzIHx8ICp0KQotCXByaW50ZigiICAgJS0xNnMgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgJXM7XG4iLCBvbGRfbmFtZSwgbmFtZSk7Ci0gICAgfQotfQotCi0vKgotICogR2VuZXJhdGUgY29uc3RhbnRzIGZvciB0aGUga2V5IGNvZGVzLiBXaGVuIGNhbGxlZCB3aXRoIG1vZGU9PTAsIGEKLSAqIGNvbXBsZXRlIGxpc3Qgd2l0aCBuaWNlIGNvbnN0YW50IG5hbWVzIGluIHByb3BlciBjYXNpbmcgc3R5bGUgd2lsbAotICogYmUgZ2VuZXJhdGVkLiBPdGhlcndpc2UgYSBsaXN0IG9mIG9sZCAoaS5lLiBDLXN0eWxlKSBuYW1lcyB3aWxsIGJlCi0gKiBnZW5lcmF0ZWQsIGdpdmVuIHRoYXQgdGhlIG5hbWUgd2Fzbid0IGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgIm5pY2UiCi0gKiBsaXN0LgotICovCi1zdGF0aWMgdm9pZAotZ2VuX2tleWRlZnMoaW50IG1vZGUpCi17Ci0gIGNoYXIgYnVmWzE2XTsKLSAgY2hhciBvYnVmWzE2XTsKLSAgaW50IGk7Ci0KLSNpZmRlZiBLRVlfQ09ERV9ZRVMKLSAga2V5ZGVmKCJLZXlfQ29kZV9ZZXMiLCAiS0VZX0NPREVfWUVTIiwgS0VZX0NPREVfWUVTLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9NSU4KLSAga2V5ZGVmKCJLZXlfTWluIiwgIktFWV9NSU4iLCBLRVlfTUlOLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9CUkVBSwotICBrZXlkZWYoIktleV9CcmVhayIsICJLRVlfQlJFQUsiLCBLRVlfQlJFQUssIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0RPV04KLSAga2V5ZGVmKCJLZXlfQ3Vyc29yX0Rvd24iLCAiS0VZX0RPV04iLCBLRVlfRE9XTiwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfVVAKLSAga2V5ZGVmKCJLZXlfQ3Vyc29yX1VwIiwgIktFWV9VUCIsIEtFWV9VUCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfTEVGVAotICBrZXlkZWYoIktleV9DdXJzb3JfTGVmdCIsICJLRVlfTEVGVCIsIEtFWV9MRUZULCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9SSUdIVAotICBrZXlkZWYoIktleV9DdXJzb3JfUmlnaHQiLCAiS0VZX1JJR0hUIiwgS0VZX1JJR0hULCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9IT01FCi0gIGtleWRlZigiS2V5X0hvbWUiLCAiS0VZX0hPTUUiLCBLRVlfSE9NRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQkFDS1NQQUNFCi0gIGtleWRlZigiS2V5X0JhY2tzcGFjZSIsICJLRVlfQkFDS1NQQUNFIiwgS0VZX0JBQ0tTUEFDRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfRjAKLSAga2V5ZGVmKCJLZXlfRjAiLCAiS0VZX0YwIiwgS0VZX0YwLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9GCi0gIGZvciAoaSA9IDE7IGkgPD0gMjQ7IGkrKykKLSAgICB7Ci0gICAgICBzcHJpbnRmKGJ1ZiwgIktleV9GJWQiLCBpKTsKLSAgICAgIHNwcmludGYob2J1ZiwgIktFWV9GJWQiLCBpKTsKLSAgICAgIGtleWRlZihidWYsIG9idWYsIEtFWV9GKGkpLCBtb2RlKTsKLSAgICB9Ci0jZW5kaWYKLSNpZmRlZiBLRVlfREwKLSAga2V5ZGVmKCJLZXlfRGVsZXRlX0xpbmUiLCAiS0VZX0RMIiwgS0VZX0RMLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9JTAotICBrZXlkZWYoIktleV9JbnNlcnRfTGluZSIsICJLRVlfSUwiLCBLRVlfSUwsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0RDCi0gIGtleWRlZigiS2V5X0RlbGV0ZV9DaGFyIiwgIktFWV9EQyIsIEtFWV9EQywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfSUMKLSAga2V5ZGVmKCJLZXlfSW5zZXJ0X0NoYXIiLCAiS0VZX0lDIiwgS0VZX0lDLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9FSUMKLSAga2V5ZGVmKCJLZXlfRXhpdF9JbnNlcnRfTW9kZSIsICJLRVlfRUlDIiwgS0VZX0VJQywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQ0xFQVIKLSAga2V5ZGVmKCJLZXlfQ2xlYXJfU2NyZWVuIiwgIktFWV9DTEVBUiIsIEtFWV9DTEVBUiwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfRU9TCi0gIGtleWRlZigiS2V5X0NsZWFyX0VuZF9PZl9TY3JlZW4iLCAiS0VZX0VPUyIsIEtFWV9FT1MsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0VPTAotICBrZXlkZWYoIktleV9DbGVhcl9FbmRfT2ZfTGluZSIsICJLRVlfRU9MIiwgS0VZX0VPTCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0YKLSAga2V5ZGVmKCJLZXlfU2Nyb2xsXzFfRm9yd2FyZCIsICJLRVlfU0YiLCBLRVlfU0YsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NSCi0gIGtleWRlZigiS2V5X1Njcm9sbF8xX0JhY2t3YXJkIiwgIktFWV9TUiIsIEtFWV9TUiwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfTlBBR0UKLSAga2V5ZGVmKCJLZXlfTmV4dF9QYWdlIiwgIktFWV9OUEFHRSIsIEtFWV9OUEFHRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUFBBR0UKLSAga2V5ZGVmKCJLZXlfUHJldmlvdXNfUGFnZSIsICJLRVlfUFBBR0UiLCBLRVlfUFBBR0UsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NUQUIKLSAga2V5ZGVmKCJLZXlfU2V0X1RhYiIsICJLRVlfU1RBQiIsIEtFWV9TVEFCLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9DVEFCCi0gIGtleWRlZigiS2V5X0NsZWFyX1RhYiIsICJLRVlfQ1RBQiIsIEtFWV9DVEFCLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9DQVRBQgotICBrZXlkZWYoIktleV9DbGVhcl9BbGxfVGFicyIsICJLRVlfQ0FUQUIiLCBLRVlfQ0FUQUIsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0VOVEVSCi0gIGtleWRlZigiS2V5X0VudGVyX09yX1NlbmQiLCAiS0VZX0VOVEVSIiwgS0VZX0VOVEVSLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TUkVTRVQKLSAga2V5ZGVmKCJLZXlfU29mdF9SZXNldCIsICJLRVlfU1JFU0VUIiwgS0VZX1NSRVNFVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUkVTRVQKLSAga2V5ZGVmKCJLZXlfUmVzZXQiLCAiS0VZX1JFU0VUIiwgS0VZX1JFU0VULCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9QUklOVAotICBrZXlkZWYoIktleV9QcmludCIsICJLRVlfUFJJTlQiLCBLRVlfUFJJTlQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0xMCi0gIGtleWRlZigiS2V5X0JvdHRvbSIsICJLRVlfTEwiLCBLRVlfTEwsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0ExCi0gIGtleWRlZigiS2V5X1VwcGVyX0xlZnRfT2ZfS2V5cGFkIiwgIktFWV9BMSIsIEtFWV9BMSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQTMKLSAga2V5ZGVmKCJLZXlfVXBwZXJfUmlnaHRfT2ZfS2V5cGFkIiwgIktFWV9BMyIsIEtFWV9BMywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQjIKLSAga2V5ZGVmKCJLZXlfQ2VudGVyX09mX0tleXBhZCIsICJLRVlfQjIiLCBLRVlfQjIsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0MxCi0gIGtleWRlZigiS2V5X0xvd2VyX0xlZnRfT2ZfS2V5cGFkIiwgIktFWV9DMSIsIEtFWV9DMSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQzMKLSAga2V5ZGVmKCJLZXlfTG93ZXJfUmlnaHRfT2ZfS2V5cGFkIiwgIktFWV9DMyIsIEtFWV9DMywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQlRBQgotICBrZXlkZWYoIktleV9CYWNrX1RhYiIsICJLRVlfQlRBQiIsIEtFWV9CVEFCLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9CRUcKLSAga2V5ZGVmKCJLZXlfQmVnaW5uaW5nIiwgIktFWV9CRUciLCBLRVlfQkVHLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9DQU5DRUwKLSAga2V5ZGVmKCJLZXlfQ2FuY2VsIiwgIktFWV9DQU5DRUwiLCBLRVlfQ0FOQ0VMLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9DTE9TRQotICBrZXlkZWYoIktleV9DbG9zZSIsICJLRVlfQ0xPU0UiLCBLRVlfQ0xPU0UsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0NPTU1BTkQKLSAga2V5ZGVmKCJLZXlfQ29tbWFuZCIsICJLRVlfQ09NTUFORCIsIEtFWV9DT01NQU5ELCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9DT1BZCi0gIGtleWRlZigiS2V5X0NvcHkiLCAiS0VZX0NPUFkiLCBLRVlfQ09QWSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfQ1JFQVRFCi0gIGtleWRlZigiS2V5X0NyZWF0ZSIsICJLRVlfQ1JFQVRFIiwgS0VZX0NSRUFURSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfRU5ECi0gIGtleWRlZigiS2V5X0VuZCIsICJLRVlfRU5EIiwgS0VZX0VORCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfRVhJVAotICBrZXlkZWYoIktleV9FeGl0IiwgIktFWV9FWElUIiwgS0VZX0VYSVQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX0ZJTkQKLSAga2V5ZGVmKCJLZXlfRmluZCIsICJLRVlfRklORCIsIEtFWV9GSU5ELCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9IRUxQCi0gIGtleWRlZigiS2V5X0hlbHAiLCAiS0VZX0hFTFAiLCBLRVlfSEVMUCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfTUFSSwotICBrZXlkZWYoIktleV9NYXJrIiwgIktFWV9NQVJLIiwgS0VZX01BUkssIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX01FU1NBR0UKLSAga2V5ZGVmKCJLZXlfTWVzc2FnZSIsICJLRVlfTUVTU0FHRSIsIEtFWV9NRVNTQUdFLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9NT1ZFCi0gIGtleWRlZigiS2V5X01vdmUiLCAiS0VZX01PVkUiLCBLRVlfTU9WRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfTkVYVAotICBrZXlkZWYoIktleV9OZXh0IiwgIktFWV9ORVhUIiwgS0VZX05FWFQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX09QRU4KLSAga2V5ZGVmKCJLZXlfT3BlbiIsICJLRVlfT1BFTiIsIEtFWV9PUEVOLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9PUFRJT05TCi0gIGtleWRlZigiS2V5X09wdGlvbnMiLCAiS0VZX09QVElPTlMiLCBLRVlfT1BUSU9OUywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUFJFVklPVVMKLSAga2V5ZGVmKCJLZXlfUHJldmlvdXMiLCAiS0VZX1BSRVZJT1VTIiwgS0VZX1BSRVZJT1VTLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9SRURPCi0gIGtleWRlZigiS2V5X1JlZG8iLCAiS0VZX1JFRE8iLCBLRVlfUkVETywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUkVGRVJFTkNFCi0gIGtleWRlZigiS2V5X1JlZmVyZW5jZSIsICJLRVlfUkVGRVJFTkNFIiwgS0VZX1JFRkVSRU5DRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUkVGUkVTSAotICBrZXlkZWYoIktleV9SZWZyZXNoIiwgIktFWV9SRUZSRVNIIiwgS0VZX1JFRlJFU0gsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1JFUExBQ0UKLSAga2V5ZGVmKCJLZXlfUmVwbGFjZSIsICJLRVlfUkVQTEFDRSIsIEtFWV9SRVBMQUNFLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9SRVNUQVJUCi0gIGtleWRlZigiS2V5X1Jlc3RhcnQiLCAiS0VZX1JFU1RBUlQiLCBLRVlfUkVTVEFSVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfUkVTVU1FCi0gIGtleWRlZigiS2V5X1Jlc3VtZSIsICJLRVlfUkVTVU1FIiwgS0VZX1JFU1VNRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0FWRQotICBrZXlkZWYoIktleV9TYXZlIiwgIktFWV9TQVZFIiwgS0VZX1NBVkUsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NCRUcKLSAga2V5ZGVmKCJLZXlfU2hpZnRfQmVnaW4iLCAiS0VZX1NCRUciLCBLRVlfU0JFRywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0NBTkNFTAotICBrZXlkZWYoIktleV9TaGlmdF9DYW5jZWwiLCAiS0VZX1NDQU5DRUwiLCBLRVlfU0NBTkNFTCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0NPTU1BTkQKLSAga2V5ZGVmKCJLZXlfU2hpZnRfQ29tbWFuZCIsICJLRVlfU0NPTU1BTkQiLCBLRVlfU0NPTU1BTkQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NDT1BZCi0gIGtleWRlZigiS2V5X1NoaWZ0X0NvcHkiLCAiS0VZX1NDT1BZIiwgS0VZX1NDT1BZLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TQ1JFQVRFCi0gIGtleWRlZigiS2V5X1NoaWZ0X0NyZWF0ZSIsICJLRVlfU0NSRUFURSIsIEtFWV9TQ1JFQVRFLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TREMKLSAga2V5ZGVmKCJLZXlfU2hpZnRfRGVsZXRlX0NoYXIiLCAiS0VZX1NEQyIsIEtFWV9TREMsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NETAotICBrZXlkZWYoIktleV9TaGlmdF9EZWxldGVfTGluZSIsICJLRVlfU0RMIiwgS0VZX1NETCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0VMRUNUCi0gIGtleWRlZigiS2V5X1NlbGVjdCIsICJLRVlfU0VMRUNUIiwgS0VZX1NFTEVDVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0VORAotICBrZXlkZWYoIktleV9TaGlmdF9FbmQiLCAiS0VZX1NFTkQiLCBLRVlfU0VORCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0VPTAotICBrZXlkZWYoIktleV9TaGlmdF9DbGVhcl9FbmRfT2ZfTGluZSIsICJLRVlfU0VPTCIsIEtFWV9TRU9MLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TRVhJVAotICBrZXlkZWYoIktleV9TaGlmdF9FeGl0IiwgIktFWV9TRVhJVCIsIEtFWV9TRVhJVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0ZJTkQKLSAga2V5ZGVmKCJLZXlfU2hpZnRfRmluZCIsICJLRVlfU0ZJTkQiLCBLRVlfU0ZJTkQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NIRUxQCi0gIGtleWRlZigiS2V5X1NoaWZ0X0hlbHAiLCAiS0VZX1NIRUxQIiwgS0VZX1NIRUxQLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TSE9NRQotICBrZXlkZWYoIktleV9TaGlmdF9Ib21lIiwgIktFWV9TSE9NRSIsIEtFWV9TSE9NRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU0lDCi0gIGtleWRlZigiS2V5X1NoaWZ0X0luc2VydF9DaGFyIiwgIktFWV9TSUMiLCBLRVlfU0lDLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TTEVGVAotICBrZXlkZWYoIktleV9TaGlmdF9DdXJzb3JfTGVmdCIsICJLRVlfU0xFRlQiLCBLRVlfU0xFRlQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NNRVNTQUdFCi0gIGtleWRlZigiS2V5X1NoaWZ0X01lc3NhZ2UiLCAiS0VZX1NNRVNTQUdFIiwgS0VZX1NNRVNTQUdFLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TTU9WRQotICBrZXlkZWYoIktleV9TaGlmdF9Nb3ZlIiwgIktFWV9TTU9WRSIsIEtFWV9TTU9WRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU05FWFQKLSAga2V5ZGVmKCJLZXlfU2hpZnRfTmV4dF9QYWdlIiwgIktFWV9TTkVYVCIsIEtFWV9TTkVYVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU09QVElPTlMKLSAga2V5ZGVmKCJLZXlfU2hpZnRfT3B0aW9ucyIsICJLRVlfU09QVElPTlMiLCBLRVlfU09QVElPTlMsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NQUkVWSU9VUwotICBrZXlkZWYoIktleV9TaGlmdF9QcmV2aW91c19QYWdlIiwgIktFWV9TUFJFVklPVVMiLCBLRVlfU1BSRVZJT1VTLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TUFJJTlQKLSAga2V5ZGVmKCJLZXlfU2hpZnRfUHJpbnQiLCAiS0VZX1NQUklOVCIsIEtFWV9TUFJJTlQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NSRURPCi0gIGtleWRlZigiS2V5X1NoaWZ0X1JlZG8iLCAiS0VZX1NSRURPIiwgS0VZX1NSRURPLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TUkVQTEFDRQotICBrZXlkZWYoIktleV9TaGlmdF9SZXBsYWNlIiwgIktFWV9TUkVQTEFDRSIsIEtFWV9TUkVQTEFDRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU1JJR0hUCi0gIGtleWRlZigiS2V5X1NoaWZ0X0N1cnNvcl9SaWdodCIsICJLRVlfU1JJR0hUIiwgS0VZX1NSSUdIVCwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU1JTVU1FCi0gIGtleWRlZigiS2V5X1NoaWZ0X1Jlc3VtZSIsICJLRVlfU1JTVU1FIiwgS0VZX1NSU1VNRSwgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU1NBVkUKLSAga2V5ZGVmKCJLZXlfU2hpZnRfU2F2ZSIsICJLRVlfU1NBVkUiLCBLRVlfU1NBVkUsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1NTVVNQRU5ECi0gIGtleWRlZigiS2V5X1NoaWZ0X1N1c3BlbmQiLCAiS0VZX1NTVVNQRU5EIiwgS0VZX1NTVVNQRU5ELCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9TVU5ETwotICBrZXlkZWYoIktleV9TaGlmdF9VbmRvIiwgIktFWV9TVU5ETyIsIEtFWV9TVU5ETywgbW9kZSk7Ci0jZW5kaWYKLSNpZmRlZiBLRVlfU1VTUEVORAotICBrZXlkZWYoIktleV9TdXNwZW5kIiwgIktFWV9TVVNQRU5EIiwgS0VZX1NVU1BFTkQsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1VORE8KLSAga2V5ZGVmKCJLZXlfVW5kbyIsICJLRVlfVU5ETyIsIEtFWV9VTkRPLCBtb2RlKTsKLSNlbmRpZgotI2lmZGVmIEtFWV9NT1VTRQotICBrZXlkZWYoIktleV9Nb3VzZSIsICJLRVlfTU9VU0UiLCBLRVlfTU9VU0UsIG1vZGUpOwotI2VuZGlmCi0jaWZkZWYgS0VZX1JFU0laRQotICBrZXlkZWYoIktleV9SZXNpemUiLCAiS0VZX1JFU0laRSIsIEtFWV9SRVNJWkUsIG1vZGUpOwotI2VuZGlmCi19Ci0KLS8qCi0gKiBHZW5lcmF0ZSBhIGNvbnN0YW50IHdpdGggdGhlIGdpdmVuIG5hbWUuIFRoZSBzZWNvbmQgcGFyYW1ldGVyCi0gKiBpcyBhIHJlZmVyZW5jZSB0byB0aGUgQUNTIGNoYXJhY3RlciBpbiB0aGUgYWNzX21hcFtdIGFycmF5IGFuZAotICogd2lsbCBiZSB0cmFuc2xhdGVkIGludG8gYW4gaW5kZXguCi0gKi8KLXN0YXRpYyB2b2lkCi1hY3NfZGVmKGNvbnN0IGNoYXIgKm5hbWUsIGNodHlwZSAqYSkKLXsKLSAgaW50IGMgPSBhIC0gJmFjc19tYXBbMF07Ci0KLSAgcHJpbnRmKCIgICAlLTI0cyA6IGNvbnN0YW50IENoYXJhY3RlciA6PSAiLCBuYW1lKTsKLSAgaWYgKGlzcHJpbnQoYykgJiYgKGMgIT0gJ2AnKSkKLSAgICBwcmludGYoIiclYyc7XG4iLCBjKTsKLSAgZWxzZQotICAgIHByaW50ZigiQ2hhcmFjdGVyJ1ZhbCAoJWQpO1xuIiwgYyk7Ci19Ci0KLS8qCi0gKiBHZW5lcmF0ZSB0aGUgY29uc3RhbnRzIGZvciB0aGUgQUNTIGNoYXJhY3RlcnMKLSAqLwotc3RhdGljIHZvaWQKLWdlbl9hY3Modm9pZCkKLXsKLSAgcHJpbnRmKCIgICB0eXBlIENfQUNTX01hcCBpcyBhcnJheSAoQ2hhcmFjdGVyJ1ZhbCAoMCkgLi4gQ2hhcmFjdGVyJ1ZhbCAoMTI3KSlcbiIpOwotICBwcmludGYoIiAgICAgICAgb2YgQXR0cmlidXRlZF9DaGFyYWN0ZXI7XG4iKTsKLSNpZiBVU0VfUkVFTlRSQU5UIHx8IEJST0tFTl9MSU5LRVIKLSAgcHJpbnRmKCIgICB0eXBlIENfQUNTX1B0ciBpcyBhY2Nlc3MgQ19BQ1NfTWFwO1xuIik7Ci0gIHByaW50ZigiICAgZnVuY3Rpb24gQUNTX01hcCByZXR1cm4gQ19BQ1NfUHRyO1xuIik7Ci0gIHByaW50ZigiICAgcHJhZ21hIEltcG9ydCAoQywgQUNTX01hcCwgXCJfbmNfYWNzX21hcFwiKTtcbiIpOwotI2Vsc2UKLSAgcHJpbnRmKCIgICBBQ1NfTWFwIDogQ19BQ1NfTWFwO1xuIik7Ci0gIHByaW50ZigiICAgcHJhZ21hIEltcG9ydCAoQywgQUNTX01hcCwgXCJhY3NfbWFwXCIpO1xuIik7Ci0jZW5kaWYKLSAgcHJpbnRmKCIgICAtLVxuIik7Ci0gIHByaW50ZigiICAgLS1cbiIpOwotICBwcmludGYoIiAgIC0tICBDb25zdGFudHMgZm9yIHNldmVyYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBBbHRlcm5hdGUgQ2hhcmFjdGVyIFNldFxuIik7Ci0gIHByaW50ZigiICAgLS0gIFlvdSBtdXN0IHVzZSB0aGVzZSBjb25zdGFudHMgYXMgaW5kaWNlcyBpbnRvIHRoZSBBQ1NfTWFwIGFycmF5XG4iKTsKLSAgcHJpbnRmKCIgICAtLSAgdG8gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZWQgY2hhcmFjdGVyIGF0IHJ1bnRpbWUuXG4iKTsKLSAgcHJpbnRmKCIgICAtLVxuIik7Ci0KLSNpZmRlZiBBQ1NfVUxDT1JORVIKLSAgYWNzX2RlZigiQUNTX1VwcGVyX0xlZnRfQ29ybmVyIiwgJkFDU19VTENPUk5FUik7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfTExDT1JORVIKLSAgYWNzX2RlZigiQUNTX0xvd2VyX0xlZnRfQ29ybmVyIiwgJkFDU19MTENPUk5FUik7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfVVJDT1JORVIKLSAgYWNzX2RlZigiQUNTX1VwcGVyX1JpZ2h0X0Nvcm5lciIsICZBQ1NfVVJDT1JORVIpOwotI2VuZGlmCi0jaWZkZWYgQUNTX0xSQ09STkVSCi0gIGFjc19kZWYoIkFDU19Mb3dlcl9SaWdodF9Db3JuZXIiLCAmQUNTX0xSQ09STkVSKTsKLSNlbmRpZgotI2lmZGVmIEFDU19MVEVFCi0gIGFjc19kZWYoIkFDU19MZWZ0X1RlZSIsICZBQ1NfTFRFRSk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfUlRFRQotICBhY3NfZGVmKCJBQ1NfUmlnaHRfVGVlIiwgJkFDU19SVEVFKTsKLSNlbmRpZgotI2lmZGVmIEFDU19CVEVFCi0gIGFjc19kZWYoIkFDU19Cb3R0b21fVGVlIiwgJkFDU19CVEVFKTsKLSNlbmRpZgotI2lmZGVmIEFDU19UVEVFCi0gIGFjc19kZWYoIkFDU19Ub3BfVGVlIiwgJkFDU19UVEVFKTsKLSNlbmRpZgotI2lmZGVmIEFDU19ITElORQotICBhY3NfZGVmKCJBQ1NfSG9yaXpvbnRhbF9MaW5lIiwgJkFDU19ITElORSk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfVkxJTkUKLSAgYWNzX2RlZigiQUNTX1ZlcnRpY2FsX0xpbmUiLCAmQUNTX1ZMSU5FKTsKLSNlbmRpZgotI2lmZGVmIEFDU19QTFVTCi0gIGFjc19kZWYoIkFDU19QbHVzX1N5bWJvbCIsICZBQ1NfUExVUyk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfUzEKLSAgYWNzX2RlZigiQUNTX1NjYW5fTGluZV8xIiwgJkFDU19TMSk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfUzkKLSAgYWNzX2RlZigiQUNTX1NjYW5fTGluZV85IiwgJkFDU19TOSk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfRElBTU9ORAotICBhY3NfZGVmKCJBQ1NfRGlhbW9uZCIsICZBQ1NfRElBTU9ORCk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfQ0tCT0FSRAotICBhY3NfZGVmKCJBQ1NfQ2hlY2tlcl9Cb2FyZCIsICZBQ1NfQ0tCT0FSRCk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfREVHUkVFCi0gIGFjc19kZWYoIkFDU19EZWdyZWUiLCAmQUNTX0RFR1JFRSk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfUExNSU5VUwotICBhY3NfZGVmKCJBQ1NfUGx1c19NaW51cyIsICZBQ1NfUExNSU5VUyk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfQlVMTEVUCi0gIGFjc19kZWYoIkFDU19CdWxsZXQiLCAmQUNTX0JVTExFVCk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfTEFSUk9XCi0gIGFjc19kZWYoIkFDU19MZWZ0X0Fycm93IiwgJkFDU19MQVJST1cpOwotI2VuZGlmCi0jaWZkZWYgQUNTX1JBUlJPVwotICBhY3NfZGVmKCJBQ1NfUmlnaHRfQXJyb3ciLCAmQUNTX1JBUlJPVyk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfREFSUk9XCi0gIGFjc19kZWYoIkFDU19Eb3duX0Fycm93IiwgJkFDU19EQVJST1cpOwotI2VuZGlmCi0jaWZkZWYgQUNTX1VBUlJPVwotICBhY3NfZGVmKCJBQ1NfVXBfQXJyb3ciLCAmQUNTX1VBUlJPVyk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfQk9BUkQKLSAgYWNzX2RlZigiQUNTX0JvYXJkX09mX1NxdWFyZXMiLCAmQUNTX0JPQVJEKTsKLSNlbmRpZgotI2lmZGVmIEFDU19MQU5URVJOCi0gIGFjc19kZWYoIkFDU19MYW50ZXJuIiwgJkFDU19MQU5URVJOKTsKLSNlbmRpZgotI2lmZGVmIEFDU19CTE9DSwotICBhY3NfZGVmKCJBQ1NfU29saWRfQmxvY2siLCAmQUNTX0JMT0NLKTsKLSNlbmRpZgotI2lmZGVmIEFDU19TMwotICBhY3NfZGVmKCJBQ1NfU2Nhbl9MaW5lXzMiLCAmQUNTX1MzKTsKLSNlbmRpZgotI2lmZGVmIEFDU19TNwotICBhY3NfZGVmKCJBQ1NfU2Nhbl9MaW5lXzciLCAmQUNTX1M3KTsKLSNlbmRpZgotI2lmZGVmIEFDU19MRVFVQUwKLSAgYWNzX2RlZigiQUNTX0xlc3NfT3JfRXF1YWwiLCAmQUNTX0xFUVVBTCk7Ci0jZW5kaWYKLSNpZmRlZiBBQ1NfR0VRVUFMCi0gIGFjc19kZWYoIkFDU19HcmVhdGVyX09yX0VxdWFsIiwgJkFDU19HRVFVQUwpOwotI2VuZGlmCi0jaWZkZWYgQUNTX1BJCi0gIGFjc19kZWYoIkFDU19QSSIsICZBQ1NfUEkpOwotI2VuZGlmCi0jaWZkZWYgQUNTX05FUVVBTAotICBhY3NfZGVmKCJBQ1NfTm90X0VxdWFsIiwgJkFDU19ORVFVQUwpOwotI2VuZGlmCi0jaWZkZWYgQUNTX1NURVJMSU5HCi0gIGFjc19kZWYoIkFDU19TdGVybGluZyIsICZBQ1NfU1RFUkxJTkcpOwotI2VuZGlmCi19Ci0KLSNkZWZpbmUgR0VOX0VWRU5UKG5hbWUsdmFsdWUpIFwKLSAgIHByaW50ZigiICAgJS0yNXMgOiBjb25zdGFudCBFdmVudF9NYXNrIDo9IDgjJTAxMWxvIztcbiIsIFwKLSAgICAgICAgICAjbmFtZSwgdmFsdWUpCi0KLSNkZWZpbmUgR0VOX01FVkVOVChuYW1lKSBcCi0gICBwcmludGYoIiAgICUtMjVzIDogY29uc3RhbnQgRXZlbnRfTWFzayA6PSA4IyUwMTFsbyM7XG4iLCBcCi0gICAgICAgICAgI25hbWUsIG5hbWUpCi0KLXN0YXRpYyB2b2lkCi1nZW5fbW91c2VfZXZlbnRzKHZvaWQpCi17Ci0gIG1tYXNrX3QgYWxsMSA9IDA7Ci0gIG1tYXNrX3QgYWxsMiA9IDA7Ci0gIG1tYXNrX3QgYWxsMyA9IDA7Ci0gIG1tYXNrX3QgYWxsNCA9IDA7Ci0KLSNpZmRlZiBCVVRUT04xX1JFTEVBU0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMV9SRUxFQVNFRCk7Ci0gIGFsbDEgfD0gQlVUVE9OMV9SRUxFQVNFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjFfUFJFU1NFRAotICBHRU5fTUVWRU5UKEJVVFRPTjFfUFJFU1NFRCk7Ci0gIGFsbDEgfD0gQlVUVE9OMV9QUkVTU0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OMV9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMV9DTElDS0VEKTsKLSAgYWxsMSB8PSBCVVRUT04xX0NMSUNLRUQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT04xX0RPVUJMRV9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRCk7Ci0gIGFsbDEgfD0gQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjFfVFJJUExFX0NMSUNLRUQKLSAgR0VOX01FVkVOVChCVVRUT04xX1RSSVBMRV9DTElDS0VEKTsKLSAgYWxsMSB8PSBCVVRUT04xX1RSSVBMRV9DTElDS0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OMV9SRVNFUlZFRF9FVkVOVAotICBHRU5fTUVWRU5UKEJVVFRPTjFfUkVTRVJWRURfRVZFTlQpOwotICBhbGwxIHw9IEJVVFRPTjFfUkVTRVJWRURfRVZFTlQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT04yX1JFTEVBU0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMl9SRUxFQVNFRCk7Ci0gIGFsbDIgfD0gQlVUVE9OMl9SRUxFQVNFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjJfUFJFU1NFRAotICBHRU5fTUVWRU5UKEJVVFRPTjJfUFJFU1NFRCk7Ci0gIGFsbDIgfD0gQlVUVE9OMl9QUkVTU0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OMl9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMl9DTElDS0VEKTsKLSAgYWxsMiB8PSBCVVRUT04yX0NMSUNLRUQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT04yX0RPVUJMRV9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OMl9ET1VCTEVfQ0xJQ0tFRCk7Ci0gIGFsbDIgfD0gQlVUVE9OMl9ET1VCTEVfQ0xJQ0tFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjJfVFJJUExFX0NMSUNLRUQKLSAgR0VOX01FVkVOVChCVVRUT04yX1RSSVBMRV9DTElDS0VEKTsKLSAgYWxsMiB8PSBCVVRUT04yX1RSSVBMRV9DTElDS0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OMl9SRVNFUlZFRF9FVkVOVAotICBHRU5fTUVWRU5UKEJVVFRPTjJfUkVTRVJWRURfRVZFTlQpOwotICBhbGwyIHw9IEJVVFRPTjJfUkVTRVJWRURfRVZFTlQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT04zX1JFTEVBU0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OM19SRUxFQVNFRCk7Ci0gIGFsbDMgfD0gQlVUVE9OM19SRUxFQVNFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjNfUFJFU1NFRAotICBHRU5fTUVWRU5UKEJVVFRPTjNfUFJFU1NFRCk7Ci0gIGFsbDMgfD0gQlVUVE9OM19QUkVTU0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OM19DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OM19DTElDS0VEKTsKLSAgYWxsMyB8PSBCVVRUT04zX0NMSUNLRUQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT04zX0RPVUJMRV9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9OM19ET1VCTEVfQ0xJQ0tFRCk7Ci0gIGFsbDMgfD0gQlVUVE9OM19ET1VCTEVfQ0xJQ0tFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjNfVFJJUExFX0NMSUNLRUQKLSAgR0VOX01FVkVOVChCVVRUT04zX1RSSVBMRV9DTElDS0VEKTsKLSAgYWxsMyB8PSBCVVRUT04zX1RSSVBMRV9DTElDS0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9OM19SRVNFUlZFRF9FVkVOVAotICBHRU5fTUVWRU5UKEJVVFRPTjNfUkVTRVJWRURfRVZFTlQpOwotICBhbGwzIHw9IEJVVFRPTjNfUkVTRVJWRURfRVZFTlQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT040X1JFTEVBU0VECi0gIEdFTl9NRVZFTlQoQlVUVE9ONF9SRUxFQVNFRCk7Ci0gIGFsbDQgfD0gQlVUVE9ONF9SRUxFQVNFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjRfUFJFU1NFRAotICBHRU5fTUVWRU5UKEJVVFRPTjRfUFJFU1NFRCk7Ci0gIGFsbDQgfD0gQlVUVE9ONF9QUkVTU0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9ONF9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9ONF9DTElDS0VEKTsKLSAgYWxsNCB8PSBCVVRUT040X0NMSUNLRUQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT040X0RPVUJMRV9DTElDS0VECi0gIEdFTl9NRVZFTlQoQlVUVE9ONF9ET1VCTEVfQ0xJQ0tFRCk7Ci0gIGFsbDQgfD0gQlVUVE9ONF9ET1VCTEVfQ0xJQ0tFRDsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTjRfVFJJUExFX0NMSUNLRUQKLSAgR0VOX01FVkVOVChCVVRUT040X1RSSVBMRV9DTElDS0VEKTsKLSAgYWxsNCB8PSBCVVRUT040X1RSSVBMRV9DTElDS0VEOwotI2VuZGlmCi0jaWZkZWYgQlVUVE9ONF9SRVNFUlZFRF9FVkVOVAotICBHRU5fTUVWRU5UKEJVVFRPTjRfUkVTRVJWRURfRVZFTlQpOwotICBhbGw0IHw9IEJVVFRPTjRfUkVTRVJWRURfRVZFTlQ7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT05fQ1RSTAotICBHRU5fTUVWRU5UKEJVVFRPTl9DVFJMKTsKLSNlbmRpZgotI2lmZGVmIEJVVFRPTl9TSElGVAotICBHRU5fTUVWRU5UKEJVVFRPTl9TSElGVCk7Ci0jZW5kaWYKLSNpZmRlZiBCVVRUT05fQUxUCi0gIEdFTl9NRVZFTlQoQlVUVE9OX0FMVCk7Ci0jZW5kaWYKLSNpZmRlZiBSRVBPUlRfTU9VU0VfUE9TSVRJT04KLSAgR0VOX01FVkVOVChSRVBPUlRfTU9VU0VfUE9TSVRJT04pOwotI2VuZGlmCi0jaWZkZWYgQUxMX01PVVNFX0VWRU5UUwotICBHRU5fTUVWRU5UKEFMTF9NT1VTRV9FVkVOVFMpOwotI2VuZGlmCi0KLSAgR0VOX0VWRU5UKEJVVFRPTjFfRVZFTlRTLCBhbGwxKTsKLSAgR0VOX0VWRU5UKEJVVFRPTjJfRVZFTlRTLCBhbGwyKTsKLSAgR0VOX0VWRU5UKEJVVFRPTjNfRVZFTlRTLCBhbGwzKTsKLSAgR0VOX0VWRU5UKEJVVFRPTjRfRVZFTlRTLCBhbGw0KTsKLX0KLQotc3RhdGljIHZvaWQKLXdyYXBfb25lX3Zhcihjb25zdCBjaGFyICpjX3ZhciwKLQkgICAgIGNvbnN0IGNoYXIgKmNfdHlwZSwKLQkgICAgIGNvbnN0IGNoYXIgKmFkYV9mdW5jLAotCSAgICAgY29uc3QgY2hhciAqYWRhX3R5cGUpCi17Ci0jaWYgVVNFX1JFRU5UUkFOVAotICAvKiBtdXN0IHdyYXAgdmFyaWFibGVzICovCi0gIHByaW50ZigiXG4iKTsKLSAgcHJpbnRmKCIgICBmdW5jdGlvbiAlcyByZXR1cm4gJXNcbiIsIGFkYV9mdW5jLCBhZGFfdHlwZSk7Ci0gIHByaW50ZigiICAgaXNcbiIpOwotICBwcmludGYoIiAgICAgIGZ1bmN0aW9uIFJlc3VsdCByZXR1cm4gJXM7XG4iLCBjX3R5cGUpOwotICBwcmludGYoIiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFJlc3VsdCwgXCJfbmNfJXNcIik7XG4iLCBjX3Zhcik7Ci0gIHByaW50ZigiICAgYmVnaW5cbiIpOwotICBpZiAoc3RyY21wKGNfdHlwZSwgYWRhX3R5cGUpKQotICAgIHByaW50ZigiICAgICAgcmV0dXJuICVzIChSZXN1bHQpO1xuIiwgYWRhX3R5cGUpOwotICBlbHNlCi0gICAgcHJpbnRmKCIgICAgICByZXR1cm4gUmVzdWx0O1xuIik7Ci0gIHByaW50ZigiICAgZW5kICVzO1xuIiwgYWRhX2Z1bmMpOwotI2Vsc2UKLSAgLyogZ2xvYmFsIHZhcmlhYmxlcyBhcmUgcmVhbGx5IGdsb2JhbCAqLwotICBwcmludGYoIlxuIik7Ci0gIHByaW50ZigiICAgZnVuY3Rpb24gJXMgcmV0dXJuICVzXG4iLCBhZGFfZnVuYywgYWRhX3R5cGUpOwotICBwcmludGYoIiAgIGlzXG4iKTsKLSAgcHJpbnRmKCIgICAgICBSZXN1bHQgOiAlcztcbiIsIGNfdHlwZSk7Ci0gIHByaW50ZigiICAgICAgcHJhZ21hIEltcG9ydCAoQywgUmVzdWx0LCBcIiVzXCIpO1xuIiwgY192YXIpOwotICBwcmludGYoIiAgIGJlZ2luXG4iKTsKLSAgaWYgKHN0cmNtcChjX3R5cGUsIGFkYV90eXBlKSkKLSAgICBwcmludGYoIiAgICAgIHJldHVybiAlcyAoUmVzdWx0KTtcbiIsIGFkYV90eXBlKTsKLSAgZWxzZQotICAgIHByaW50ZigiICAgICAgcmV0dXJuIFJlc3VsdDtcbiIpOwotICBwcmludGYoIiAgIGVuZCAlcztcbiIsIGFkYV9mdW5jKTsKLSNlbmRpZgotfQotCi0jZGVmaW5lIEdFTl9QVUJMSUNfVkFSKGNfdmFyLCBjX3R5cGUsIGFkYV9mdW5jLCBhZGFfdHlwZSkgXAotCXdyYXBfb25lX3ZhcigjY192YXIsICNjX3R5cGUsICNhZGFfZnVuYywgI2FkYV90eXBlKQotCi1zdGF0aWMgdm9pZAotZ2VuX3B1YmxpY192YXJzKHZvaWQpCi17Ci0gIEdFTl9QVUJMSUNfVkFSKHN0ZHNjciwgV2luZG93LCBTdGFuZGFyZF9XaW5kb3csIFdpbmRvdyk7Ci0gIEdFTl9QVUJMSUNfVkFSKGN1cnNjciwgV2luZG93LCBDdXJyZW50X1dpbmRvdywgV2luZG93KTsKLSAgR0VOX1BVQkxJQ19WQVIoTElORVMsIENfSW50LCBMaW5lcywgTGluZV9Db3VudCk7Ci0gIEdFTl9QVUJMSUNfVkFSKENPTFMsIENfSW50LCBDb2x1bW5zLCBDb2x1bW5fQ291bnQpOwotICBHRU5fUFVCTElDX1ZBUihUQUJTSVpFLCBDX0ludCwgVGFiX1NpemUsIE5hdHVyYWwpOwotICBHRU5fUFVCTElDX1ZBUihDT0xPUlMsIENfSW50LCBOdW1iZXJfT2ZfQ29sb3JzLCBOYXR1cmFsKTsKLSAgR0VOX1BVQkxJQ19WQVIoQ09MT1JfUEFJUlMsIENfSW50LCBOdW1iZXJfT2ZfQ29sb3JfUGFpcnMsIE5hdHVyYWwpOwotfQotCi0vKgotICogT3V0cHV0IHNvbWUgY29tbWVudCBsaW5lcyBpbmRpY2F0aW5nIHRoYXQgdGhlIGZpbGUgaXMgZ2VuZXJhdGVkLgotICogVGhlIG5hbWUgcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9mIHRoZSBmYWNpbGl0eSB0byBiZSB1c2VkIGluCi0gKiB0aGUgY29tbWVudC4KLSAqLwotc3RhdGljIHZvaWQKLXByb2xvZ3VlKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIHByaW50ZigiLS0gICVzIGJpbmRpbmcuXG4iLCBuYW1lKTsKLSAgcHJpbnRmKCItLSAgVGhpcyBtb2R1bGUgaXMgZ2VuZXJhdGVkLiBQbGVhc2UgZG9uJ3QgY2hhbmdlIGl0IG1hbnVhbGx5IVxuIik7Ci0gIHByaW50ZigiLS0gIFJ1biB0aGUgZ2VuZXJhdG9yIGluc3RlYWQuXG4tLSAgfCIpOwotCi0gIHByaW50ZigiZGVmaW5lKGBNNF9CSVRfT1JERVInLGAlc19PcmRlcl9GaXJzdCcpIiwKLQkgbGl0dGxlX2VuZGlhbiA/ICJMb3ciIDogIkhpZ2giKTsKLX0KLQotLyoKLSAqIFdyaXRlIHRoZSBwcm9sb2d1ZSBmb3IgdGhlIGN1cnNlcyBmYWNpbGl0eSBhbmQgbWFrZSBzdXJlIHRoYXQKLSAqIEtFWV9NSU4gYW5kIEtFWV9NQVggYXJlIGRlZmluZWQgZm9yIHRoZSByZXN0IG9mIHRoaXMgc291cmNlLgotICovCi1zdGF0aWMgdm9pZAotYmFzZWRlZnModm9pZCkKLXsKLSAgcHJvbG9ndWUoImN1cnNlcyIpOwogI2lmbmRlZiBLRVlfTUFYCiAjICBkZWZpbmUgS0VZX01BWCAwNzc3CiAjZW5kaWYKLSAgcHJpbnRmKCJkZWZpbmUoYE00X0tFWV9NQVgnLGA4IyVvIycpIiwgS0VZX01BWCk7CiAjaWZuZGVmIEtFWV9NSU4KICMgIGRlZmluZSBLRVlfTUlOIDA0MDEKICNlbmRpZgotICBpZiAoS0VZX01JTiA9PSAyNTYpCi0gICAgewotICAgICAgZnByaW50ZihzdGRlcnIsICJVbmV4cGVjdGVkIHZhbHVlIGZvciBLRVlfTUlOOiAlZFxuIiwgS0VZX01JTik7Ci0gICAgICBleGl0KDEpOwotICAgIH0KLSAgcHJpbnRmKCJkZWZpbmUoYE00X1NQRUNJQUxfRklSU1QnLGA4IyVvIycpIiwgS0VZX01JTiAtIDEpOwotfQogCi0vKgotICogV3JpdGUgb3V0IHRoZSBjb21tZW50IGxpbmVzIGZvciB0aGUgbWVudSBmYWNpbGl0eQotICovCi1zdGF0aWMgdm9pZAotbWVudV9iYXNlZGVmcyh2b2lkKQorc3RhdGljIFVDSEFSCitiaXRfaXNfc2V0KGNvbnN0IFVDSEFSICogY29uc3QgZGF0YSwKKwkgICBjb25zdCBVSU5UIG9mZnNldCkKIHsKLSAgcHJvbG9ndWUoIm1lbnUiKTsKKyAgY29uc3QgVUNIQVIgYnl0ZSA9IGRhdGFbb2Zmc2V0ID4+IDNdOworICBVSU5UIGJpdDsKKworICBpZiAobGl0dGxlX2VuZGlhbikKKyAgICBiaXQgPSBvZmZzZXQ7CQkvKiBvZmZzZXQgKi8KKyAgZWxzZQkJCQkvKiBvciAqLworICAgIGJpdCA9IH5vZmZzZXQ7CQkvKiA3IC0gb2Zmc2V0ICovCisgIGJpdCAmPSA3OwkJCS8qIG1vZHVsbyA4ICovCisgIHJldHVybiBieXRlICYgKFVDSEFSKSAoMSA8PCBiaXQpOwogfQogCi0vKgotICogV3JpdGUgb3V0IHRoZSBjb21tZW50IGxpbmVzIGZvciB0aGUgZm9ybSBmYWNpbGl0eQotICovCi1zdGF0aWMgdm9pZAotZm9ybV9iYXNlZGVmcyh2b2lkKQotewotICBwcm9sb2d1ZSgiZm9ybSIpOwotfQotCi0vKgotICogV3JpdGUgb3V0IHRoZSBjb21tZW50IGxpbmVzIGZvciB0aGUgbW91c2UgZmFjaWxpdHkKLSAqLwotc3RhdGljIHZvaWQKLW1vdXNlX2Jhc2VkZWZzKHZvaWQpCi17Ci0gIHByb2xvZ3VlKCJtb3VzZSIpOwotfQotCi0vKgotICogV3JpdGUgdGhlIGRlZmluaXRpb24gb2YgYSBzaW5nbGUgY29sb3IKLSAqLwotc3RhdGljIHZvaWQKLWNvbG9yX2RlZihjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gIHByaW50ZigiICAgJS0xNnMgOiBjb25zdGFudCBDb2xvcl9OdW1iZXIgOj0gJWQ7XG4iLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLS8qCi0gKiBHZW5lcmF0ZSBhbGwgY29sb3IgZGVmaW5pdGlvbnMKLSAqLwotc3RhdGljIHZvaWQKLWdlbl9jb2xvcih2b2lkKQotewotI2lmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCi0gIGNvbG9yX2RlZigiRGVmYXVsdF9Db2xvciIsIC0xKTsKLSNlbmRpZgotI2lmZGVmIENPTE9SX0JMQUNLCi0gIGNvbG9yX2RlZigiQmxhY2siLCBDT0xPUl9CTEFDSyk7Ci0jZW5kaWYKLSNpZmRlZiBDT0xPUl9SRUQKLSAgY29sb3JfZGVmKCJSZWQiLCBDT0xPUl9SRUQpOwotI2VuZGlmCi0jaWZkZWYgQ09MT1JfR1JFRU4KLSAgY29sb3JfZGVmKCJHcmVlbiIsIENPTE9SX0dSRUVOKTsKLSNlbmRpZgotI2lmZGVmIENPTE9SX1lFTExPVwotICBjb2xvcl9kZWYoIlllbGxvdyIsIENPTE9SX1lFTExPVyk7Ci0jZW5kaWYKLSNpZmRlZiBDT0xPUl9CTFVFCi0gIGNvbG9yX2RlZigiQmx1ZSIsIENPTE9SX0JMVUUpOwotI2VuZGlmCi0jaWZkZWYgQ09MT1JfTUFHRU5UQQotICBjb2xvcl9kZWYoIk1hZ2VudGEiLCBDT0xPUl9NQUdFTlRBKTsKLSNlbmRpZgotI2lmZGVmIENPTE9SX0NZQU4KLSAgY29sb3JfZGVmKCJDeWFuIiwgQ09MT1JfQ1lBTik7Ci0jZW5kaWYKLSNpZmRlZiBDT0xPUl9XSElURQotICBjb2xvcl9kZWYoIldoaXRlIiwgQ09MT1JfV0hJVEUpOwotI2VuZGlmCi19Ci0KLS8qCi0gKiBHZW5lcmF0ZSB0aGUgbGlua2VyIG9wdGlvbnMgZm9yIHRoZSBiYXNlIGZhY2lsaXR5Ci0gKi8KLXN0YXRpYyB2b2lkCi1nZW5fbGlua29wdHModm9pZCkKLXsKLSAgcHJpbnRmKCIgICBwcmFnbWEgTGlua2VyX09wdGlvbnMgKFwiLWxuY3Vyc2VzJXNcIik7XG4iLCBtb2RlbCk7Ci19Ci0KLS8qCi0gKiBHZW5lcmF0ZSB0aGUgbGlua2VyIG9wdGlvbnMgZm9yIHRoZSBtZW51IGZhY2lsaXR5Ci0gKi8KLXN0YXRpYyB2b2lkCi1nZW5fbWVudV9saW5rb3B0cyh2b2lkKQotewotICBwcmludGYoIiAgIHByYWdtYSBMaW5rZXJfT3B0aW9ucyAoXCItbG1lbnUlc1wiKTtcbiIsIG1vZGVsKTsKLX0KLQotLyoKLSAqIEdlbmVyYXRlIHRoZSBsaW5rZXIgb3B0aW9ucyBmb3IgdGhlIGZvcm0gZmFjaWxpdHkKLSAqLwotc3RhdGljIHZvaWQKLWdlbl9mb3JtX2xpbmtvcHRzKHZvaWQpCi17Ci0gIHByaW50ZigiICAgcHJhZ21hIExpbmtlcl9PcHRpb25zIChcIi1sZm9ybSVzXCIpO1xuIiwgbW9kZWwpOwotfQotCi0vKgotICogR2VuZXJhdGUgdGhlIGxpbmtlciBvcHRpb25zIGZvciB0aGUgcGFuZWwgZmFjaWxpdHkKLSAqLwotc3RhdGljIHZvaWQKLWdlbl9wYW5lbF9saW5rb3B0cyh2b2lkKQotewotICBwcmludGYoIiAgIHByYWdtYSBMaW5rZXJfT3B0aW9ucyAoXCItbHBhbmVsJXNcIik7XG4iLCBtb2RlbCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW5fdmVyc2lvbl9pbmZvKHZvaWQpCi17Ci0gIHN0YXRpYyBjb25zdCBjaGFyICp2MSA9Ci0gICIgICBOQ19NYWpvcl9WZXJzaW9uIDogY29uc3RhbnQgOj0gJWQ7IC0tICBNYWpvciB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5XG4iOwotICBzdGF0aWMgY29uc3QgY2hhciAqdjIgPQotICAiICAgTkNfTWlub3JfVmVyc2lvbiA6IGNvbnN0YW50IDo9ICVkOyAtLSAgTWlub3IgdmVyc2lvbiBvZiB0aGUgbGlicmFyeVxuIjsKLSAgc3RhdGljIGNvbnN0IGNoYXIgKnYzID0KLSAgIiAgIE5DX1ZlcnNpb24gOiBjb25zdGFudCBTdHJpbmcgOj0gJWMlZC4lZCVjOyAgLS0gIFZlcnNpb24gb2YgbGlicmFyeVxuIjsKLQotICBwcmludGYodjEsIE5DVVJTRVNfVkVSU0lPTl9NQUpPUik7Ci0gIHByaW50Zih2MiwgTkNVUlNFU19WRVJTSU9OX01JTk9SKTsKLSAgcHJpbnRmKHYzLCAnIicsIE5DVVJTRVNfVkVSU0lPTl9NQUpPUiwgTkNVUlNFU19WRVJTSU9OX01JTk9SLCAnIicpOwotfQotCisvKiBGaW5kIGxvd2VzdCBhbmQgaGlnaGVzdCB1c2VkIG9mZnNldCBpbiBhIGJ5dGUgYXJyYXkuICovCisvKiBSZXR1cm5zIDAgaWYgYW5kIG9ubHkgaWYgYWxsIGJpdHMgYXJlIHVuc2V0LiAqLwogc3RhdGljIGludAotZXRpX2dlbihjaGFyICpidWYsIGludCBjb2RlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgKmV0aW1pbiwgaW50ICpldGltYXgpCitmaW5kX3Bvcyhjb25zdCBVQ0hBUiAqIGNvbnN0IGRhdGEsCisJIGNvbnN0IFVJTlQgc2l6ZW9mX2RhdGEsCisJIFVJTlQgKiBjb25zdCBsb3csCisJIFVJTlQgKiBjb25zdCBoaWdoKQogewotICBzcHJpbnRmKGJ1ZiwgIiAgIEVfJS0xNnMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gJWQ7XG4iLCBuYW1lLCBjb2RlKTsKLSAgaWYgKGNvZGUgPCAqZXRpbWluKQotICAgICpldGltaW4gPSBjb2RlOwotICBpZiAoY29kZSA+ICpldGltYXgpCi0gICAgKmV0aW1heCA9IGNvZGU7Ci0gIHJldHVybiBzdHJsZW4oYnVmKTsKKyAgY29uc3QgVUlOVCBsYXN0ID0gKHNpemVvZl9kYXRhIDw8IDMpIC0gMTsKKyAgVUlOVCBvZmZzZXQ7CisKKyAgZm9yIChvZmZzZXQgPSBsYXN0OyAhYml0X2lzX3NldChkYXRhLCBvZmZzZXQpOyBvZmZzZXQtLSkKKyAgICBpZiAoIW9mZnNldCkJCS8qIEFsbCBiaXRzIGFyZSAwLiAqLworICAgICAgcmV0dXJuIDA7CisgICpoaWdoID0gb2Zmc2V0OworCisgIGZvciAob2Zmc2V0ID0gMDsgIWJpdF9pc19zZXQoZGF0YSwgb2Zmc2V0KTsgb2Zmc2V0KyspCisgICAgeworICAgIH0KKyAgKmxvdyA9IG9mZnNldDsKKworICByZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyB2b2lkCi1nZW5fb2Zmc2V0cyh2b2lkKQotewotICBjb25zdCBjaGFyICpzX2Jvb2wgPSAiIjsKKyNkZWZpbmUgUFJJTlRfQklUTUFTSyhjX3R5cGUsIGFkYV9uYW1lLCBtYXNrX21hY3JvKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBVSU5UIGZpcnN0LCBsYXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjX3R5cGUgbWFzayA9IChtYXNrX21hY3JvKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWZpbmRfcG9zICgoVUNIQVIgKikmbWFzaywgc2l6ZW9mIChtYXNrKSwgJmZpcnN0LCAmbGFzdCkpICAgICAgIFwKKyAgICAgIG15X2Vycm9yICgiZmFpbGVkIHRvIGxvY2F0ZSAiIGFkYV9uYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcmludF9jb25zdGFudCAoYWRhX25hbWUgIl9GaXJzdCIsIGZpcnN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcmludF9jb25zdGFudCAoYWRhX25hbWUgIl9MYXN0IiwgbGFzdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQogCi0gIGlmIChzaXplb2YoYm9vbCkgPT0gc2l6ZW9mKGNoYXIpKQotICAgIHsKLSAgICAgIHNfYm9vbCA9ICJjaGFyIjsKLSAgICB9Ci0gIGVsc2UgaWYgKHNpemVvZihib29sKSA9PSBzaXplb2Yoc2hvcnQpKQotICAgIHsKLSAgICAgIHNfYm9vbCA9ICJzaG9ydCI7Ci0gICAgfQotICBlbHNlIGlmIChzaXplb2YoYm9vbCkgPT0gc2l6ZW9mKGludCkpCi0gICAgewotICAgICAgc19ib29sID0gImludCI7Ci0gICAgfQotICBwcmludGYoIiAgIFNpemVvZiUtKnMgOiBjb25zdGFudCBOYXR1cmFsIDo9ICUybGQ7IC0tICAlc1xuIiwKLQkgMTIsICJfYm9vbCIsIChsb25nKXNpemVvZihib29sKSwgImJvb2wiKTsKKyNkZWZpbmUgUFJJTlRfTkFNRURfQklUTUFTSyhjX3R5cGUsIG1hc2tfbWFjcm8pICAgICAgICAgXAorICBQUklOVF9CSVRNQVNLIChjX3R5cGUsICNtYXNrX21hY3JvLCBtYXNrX21hY3JvKQogCi0gIC8qIEluIG5jdXJzZXMgX21heHkgYW5kIF9tYXh4IG5lZWRzIGFuIG9mZnNldCBmb3IgdGhlICJwdWJsaWMiCi0gICAqIHZhbHVlCi0gICAqLwotICBwcmludGYoIiAgIE9mZnNldCUtKnMgOiBjb25zdGFudCBOYXR1cmFsIDo9ICUyZDsgLS0gICVzXG4iLAotCSAxMiwgIl9YWSIsIDEsICJpbnQiKTsKLSAgcHJpbnRmKCJcbiIpOwotICBwcmludGYoIiAgIHR5cGUgQ3Vyc2VzX0Jvb2wgaXMgbW9kIDIgKiogSW50ZXJmYWNlcy5DLiVzJ1NpemU7XG4iLCBzX2Jvb2wpOwotfQorI2RlZmluZSBTVFJVQ1RfT0ZGU0VUKHJlY29yZCwgZmllbGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFVJTlQgZmlyc3QsIGxhc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJlY29yZCBtYXNrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG1lbXNldCAoJm1hc2ssIDAsIHNpemVvZiAobWFzaykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG1lbXNldCAoJm1hc2suZmllbGQsIDB4ZmYsIHNpemVvZihtYXNrLmZpZWxkKSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghZmluZF9wb3MgKChVQ0hBUiAqKSZtYXNrLCBzaXplb2YgKG1hc2spLCAmZmlyc3QsICZsYXN0KSkgICAgICAgXAorICAgICAgbXlfZXJyb3IgKCJmYWlsZWQgdG8gbG9jYXRlIiAjcmVjb3JkICJfIiAjZmllbGQpOyAgICAgICAgICAgICAgICAgXAorICAgIHByaW50X2NvbnN0YW50ICgjcmVjb3JkICJfIiAjZmllbGQgIl9GaXJzdCIsIGZpcnN0KTsgICAgICAgICAgICAgICAgXAorICAgIHByaW50X2NvbnN0YW50ICgjcmVjb3JkICJfIiAjZmllbGQgIl9MYXN0IiwgbGFzdCk7ICAgICAgICAgICAgICAgICAgXAorICB9CiAKLS8qCi0gKiBtYWluKCkgZXhwZWN0cyB0d28gYXJndW1lbnRzIG9uIHRoZSBjb21tYW5kbGluZSwgYm90aCBzaW5nbGUgY2hhcmFjdGVycy4KLSAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgZGVub3RlcyB0aGUgZmFjaWxpdHkgZm9yIHdoaWNoIHdlIGdlbmVyYXRlIG91dHB1dC4KLSAqIFBvc3NpYmxlIHZhbHVlcyBhcmUKLSAqICAgQiAtIEJhc2UKLSAqICAgTSAtIE1lbnVzCi0gKiAgIEYgLSBGb3JtcwotICogICBQIC0gUG9pbnRlciBEZXZpY2UgKE1vdXNlKQotICogICBFIC0gRVRJIGJhc2UgZGVmaW5pdGlvbnMKLSAqCi0gKiBUaGUgc2Vjb25kIGNoYXJhY3RlciB0aGVuIGRlbm90ZXMgdGhlIHNwZWNpZmljIG91dHB1dCB0aGF0IHNob3VsZCBiZQotICogZ2VuZXJhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZmFjaWxpdHkuCi0gKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogIFN0YXJ0IG9mIG1haW4gKCkuICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogaW50Ci1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCittYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiB7Ci0gIGludCB4ID0gMHgxMjM0NTY3ODsKLSAgY2hhciAqcyA9IChjaGFyICopJng7CisgIGNvbnN0IGludCB4ID0gMHgxMjM0NTY3ODsKIAotICBpZiAoKnMgPT0gMHg3OCkKLSAgICBsaXR0bGVfZW5kaWFuID0gMTsKKyAgbGl0dGxlX2VuZGlhbiA9ICgqKChjb25zdCBjaGFyICopJngpID09IDB4NzgpOwogCi0gIGlmIChhcmdjICE9IDQpCi0gICAgZXhpdCgxKTsKLSAgbW9kZWwgPSAqKythcmd2OworICBteV9wcm9ncmFtX2ludm9jYXRpb25fbmFtZSA9IGFyZ3ZbMF07CiAKLSAgc3dpdGNoIChhcmd2WzFdWzBdKQotICAgIHsKLSAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotICAgIGNhc2UgJ0InOgkJCS8qIFRoZSBCYXNlIGZhY2lsaXR5ICovCi0gICAgICBzd2l0Y2ggKGFyZ3ZbMl1bMF0pCi0JewotCWNhc2UgJ0EnOgkJLyogY2h0eXBlIHRyYW5zbGF0aW9uIGludG8gQWRhOTUgcmVjb3JkIHR5cGUgKi8KLQkgIGdlbl9hdHRyX3NldCgiQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQiKTsKLQkgIGJyZWFrOwotCWNhc2UgJ0InOgkJLyogd3JpdGUgc29tZSBpbml0aWFsIGNvbW1lbnQgbGluZXMgKi8KLQkgIGJhc2VkZWZzKCk7Ci0JICBicmVhazsKLQljYXNlICdDJzoJCS8qIGdlbmVyYXRlIGNvbG9yIGNvbnN0YW50cyAqLwotCSAgZ2VuX2NvbG9yKCk7Ci0JICBicmVhazsKLQljYXNlICdEJzoJCS8qIGdlbmVyYXRlIGRpc3BsYWNlbWVudHMgb2YgZmllbGRzIGluIFdJTkRPVyBzdHJ1Y3QuICovCi0JICBnZW5fb2Zmc2V0cygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnRSc6CQkvKiBnZW5lcmF0ZSBNb3VzZSBFdmVudCBjb2RlcyAqLwotCSAgZ2VuX21vdXNlX2V2ZW50cygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnSyc6CQkvKiB0cmFuc2xhdGlvbiBvZiBrZXljb2RlcyAqLwotCSAgZ2VuX2tleWRlZnMoMCk7Ci0JICBicmVhazsKLQljYXNlICdMJzoJCS8qIGdlbmVyYXRlIHRoZSBMaW5rZXJfT3B0aW9ucyBwcmFnbWEgKi8KLQkgIGdlbl9saW5rb3B0cygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnTSc6CQkvKiBnZW5lcmF0ZSBjb25zdGFudHMgZm9yIHRoZSBBQ1MgY2hhcmFjdGVycyAqLwotCSAgZ2VuX2FjcygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnTyc6CQkvKiBnZW5lcmF0ZSBkZWZpbml0aW9ucyBvZiB0aGUgb2xkIGtleSBjb2RlIG5hbWVzICovCi0JICBnZW5fa2V5ZGVmcygxKTsKLQkgIGJyZWFrOwotCWNhc2UgJ1AnOgkJLyogZ2VuZXJhdGUgZGVmaW5pdGlvbnMgb2YgdGhlIHB1YmxpYyB2YXJpYWJsZXMgKi8KLQkgIGdlbl9wdWJsaWNfdmFycygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnUic6CQkvKiBnZW5lcmF0ZSByZXByZXNlbnRhdGlvbiBjbGF1c2UgZm9yIEF0dHJpYnV0ZWQgY2hhcmFjdGVyICovCi0JICBnZW5fY2h0eXBlX3JlcCgiQXR0cmlidXRlZF9DaGFyYWN0ZXIiKTsKLQkgIGJyZWFrOwotCWNhc2UgJ1QnOgkJLyogZ2VuZXJhdGUgdGhlIFRyYWNlIGluZm8gKi8KLQkgIGdlbl90cmFjZSgiVHJhY2VfQXR0cmlidXRlX1NldCIpOwotCSAgYnJlYWs7Ci0JY2FzZSAnVic6CQkvKiBnZW5lcmF0ZSB2ZXJzaW9uIGluZm8gKi8KLQkgIGdlbl92ZXJzaW9uX2luZm8oKTsKLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICBicmVhazsKLQl9Ci0gICAgICBicmVhazsKLSAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotICAgIGNhc2UgJ00nOgkJCS8qIFRoZSBNZW51IGZhY2lsaXR5ICovCi0gICAgICBzd2l0Y2ggKGFyZ3ZbMl1bMF0pCi0JewotCWNhc2UgJ1InOgkJLyogZ2VuZXJhdGUgcmVwcmVzZW50YXRpb24gY2xhdXNlIGZvciBNZW51X09wdGlvbl9TZXQgKi8KLQkgIGdlbl9tZW51X29wdF9yZXAoIk1lbnVfT3B0aW9uX1NldCIpOwotCSAgYnJlYWs7Ci0JY2FzZSAnQic6CQkvKiB3cml0ZSBzb21lIGluaXRpYWwgY29tbWVudCBsaW5lcyAqLwotCSAgbWVudV9iYXNlZGVmcygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnTCc6CQkvKiBnZW5lcmF0ZSB0aGUgTGlua2VyX09wdGlvbnMgcHJhZ21hICovCi0JICBnZW5fbWVudV9saW5rb3B0cygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnSSc6CQkvKiBnZW5lcmF0ZSByZXByZXNlbnRhdGlvbiBjbGF1c2UgZm9yIEl0ZW1fT3B0aW9uX1NldCAqLwotCSAgZ2VuX2l0ZW1fb3B0X3JlcCgiSXRlbV9PcHRpb25fU2V0Iik7Ci0JICBicmVhazsKLQlkZWZhdWx0OgotCSAgYnJlYWs7Ci0JfQotICAgICAgYnJlYWs7Ci0gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAgICBjYXNlICdGJzoJCQkvKiBUaGUgRm9ybSBmYWNpbGl0eSAqLwotICAgICAgc3dpdGNoIChhcmd2WzJdWzBdKQotCXsKLQljYXNlICdSJzoJCS8qIGdlbmVyYXRlIHJlcHJlc2VudGF0aW9uIGNsYXVzZSBmb3IgRm9ybV9PcHRpb25fU2V0ICovCi0JICBnZW5fZm9ybV9vcHRfcmVwKCJGb3JtX09wdGlvbl9TZXQiKTsKLQkgIGJyZWFrOwotCWNhc2UgJ0InOgkJLyogd3JpdGUgc29tZSBpbml0aWFsIGNvbW1lbnQgbGluZXMgKi8KLQkgIGZvcm1fYmFzZWRlZnMoKTsKLQkgIGJyZWFrOwotCWNhc2UgJ0wnOgkJLyogZ2VuZXJhdGUgdGhlIExpbmtlcl9PcHRpb25zIHByYWdtYSAqLwotCSAgZ2VuX2Zvcm1fbGlua29wdHMoKTsKLQkgIGJyZWFrOwotCWNhc2UgJ0knOgkJLyogZ2VuZXJhdGUgcmVwcmVzZW50YXRpb24gY2xhdXNlIGZvciBGaWVsZF9PcHRpb25fU2V0ICovCi0JICBnZW5fZmllbGRfb3B0X3JlcCgiRmllbGRfT3B0aW9uX1NldCIpOwotCSAgYnJlYWs7Ci0JZGVmYXVsdDoKLQkgIGJyZWFrOwotCX0KLSAgICAgIGJyZWFrOwotICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gICAgY2FzZSAnUCc6CQkJLyogVGhlIFBvaW50ZXIoPU1vdXNlKSBmYWNpbGl0eSAqLwotICAgICAgc3dpdGNoIChhcmd2WzJdWzBdKQotCXsKLQljYXNlICdCJzoJCS8qIHdyaXRlIHNvbWUgaW5pdGlhbCBjb21tZW50IGxpbmVzICovCi0JICBtb3VzZV9iYXNlZGVmcygpOwotCSAgYnJlYWs7Ci0JY2FzZSAnTSc6CQkvKiBnZW5lcmF0ZSByZXByZXNlbnRhdGlvbiBjbGF1c2UgZm9yIE1vdXNlX0V2ZW50ICovCi0JICBnZW5fbXJlcF9yZXAoIk1vdXNlX0V2ZW50Iik7Ci0JICBicmVhazsKLQljYXNlICdMJzoJCS8qIGdlbmVyYXRlIHRoZSBMaW5rZXJfT3B0aW9ucyBwcmFnbWEgKi8KLQkgIGdlbl9wYW5lbF9saW5rb3B0cygpOwotCSAgYnJlYWs7Ci0JZGVmYXVsdDoKLQkgIGJyZWFrOwotCX0KLSAgICAgIGJyZWFrOwotICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gICAgY2FzZSAnRSc6CQkJLyogY2h0eXBlIHNpemUgZGV0ZWN0aW9uICovCi0gICAgICBzd2l0Y2ggKGFyZ3ZbMl1bMF0pCi0JewotCWNhc2UgJ0MnOgotCSAgewotCSAgICBjb25zdCBjaGFyICpmbXQgPSAiICAgdHlwZSAgICBDX0NodHlwZSAgIGlzIG5ldyAlcztcbiI7Ci0JICAgIGNvbnN0IGNoYXIgKmFmbXQgPSAiICAgdHlwZSAgICBDX0F0dHJUeXBlIGlzIG5ldyAlcztcbiI7CisgIGlmIChLRVlfTUlOID09IDI1NikKKyAgICBteV9lcnJvcigidW5leHBlY3RlZCB2YWx1ZSBmb3IgS0VZX01JTjogMjU2Iik7CiAKLQkgICAgaWYgKHNpemVvZihjaHR5cGUpID09IHNpemVvZihpbnQpKQotCSAgICAgIHsKLQkJaWYgKHNpemVvZihpbnQpID09IHNpemVvZihsb25nKSkKLQkJICAgIHByaW50ZihmbXQsICJDX1VMb25nIik7CisgIGlmIChhcmdjICE9IDIpCisgICAgbXlfZXJyb3IoIk9ubHkgb25lIGFyZ3VtZW50IGV4cGVjdGVkIChERlRfQVJHX1NVRkZJWCkiKTsKIAotCQllbHNlCi0JCSAgcHJpbnRmKGZtdCwgIkNfVUludCIpOwotCSAgICAgIH0KLQkgICAgZWxzZSBpZiAoc2l6ZW9mKGNodHlwZSkgPT0gc2l6ZW9mKGxvbmcpKQotCSAgICAgIHsKLQkJcHJpbnRmKGZtdCwgIkNfVUxvbmciKTsKLQkgICAgICB9Ci0JICAgIGVsc2UKLQkgICAgICBwcmludGYoIkVycm9yXG4iKTsKKyAgcHJpbnRmKCItLSAgR2VuZXJhdGVkIGJ5IHRoZSBDIHByb2dyYW0gJXMgKHNvdXJjZSAiIF9fRklMRV9fICIpLlxuIiwKKwkgbXlfcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUpOworICBwcmludGYoIi0tICBEbyBub3QgZWRpdCB0aGlzIGZpbGUgZGlyZWN0bHkuXG4iKTsKKyAgcHJpbnRmKCItLSAgVGhlIHZhbHVlcyBwcm92aWRlZCBoZXJlIG1heSB2YXJ5IG9uIHlvdXIgc3lzdGVtLlxuIik7CisgIHByaW50ZigiXG4iKTsKKyAgcHJpbnRmKCJ3aXRoIFN5c3RlbTtcbiIpOworICBwcmludGYoInBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlc19Db25zdGFudHMgaXNcbiIpOworICBwcmludGYoIiAgIHByYWdtYSBQdXJlO1xuIik7CisgIHByaW50ZigiXG4iKTsKIAotCSAgICBpZiAoc2l6ZW9mKGF0dHJfdCkgPT0gc2l6ZW9mKGludCkpCi0JICAgICAgewotCQlpZiAoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKGxvbmcpKQotCQkgICAgcHJpbnRmKGFmbXQsICJDX1VMb25nIik7CisgIHByaW50ZigiICAgREZUX0FSR19TVUZGSVggOiBjb25zdGFudCBTdHJpbmcgOj0gXCIlc1wiO1xuIiwgYXJndlsxXSk7CisgIHByaW50ZigiICAgQml0X09yZGVyIDogY29uc3RhbnQgU3lzdGVtLkJpdF9PcmRlciA6PSBTeXN0ZW0uJXNfT3JkZXJfRmlyc3Q7XG4iLAorCSBsaXR0bGVfZW5kaWFuID8gIkxvdyIgOiAiSGlnaCIpOworICBwcmludF9jb25zdGFudCgiU2l6ZW9mX0Jvb2wiLCA4ICogc2l6ZW9mKGJvb2wpKTsKIAotCQllbHNlCi0JCSAgcHJpbnRmKGFmbXQsICJDX1VJbnQiKTsKLQkgICAgICB9Ci0JICAgIGVsc2UgaWYgKHNpemVvZihhdHRyX3QpID09IHNpemVvZihsb25nKSkKLQkgICAgICB7Ci0JCXByaW50ZihhZm10LCAiQ19VTG9uZyIpOwotCSAgICAgIH0KLQkgICAgZWxzZQotCSAgICAgIHByaW50ZigiRXJyb3JcbiIpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChPSyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVSUik7CisgIHByaW50ZigiICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOyAtLSByZWRlZmluaXRpb24gb2YgU3RhbmRhcmQuVHJ1ZSBhbmQgRmFsc2VcbiIpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChUUlVFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRkFMU0UpOworICBwcmludGYoIiAgIHByYWdtYSBXYXJuaW5ncyAoT24pO1xuIik7CiAKLQkgICAgcHJpbnRmKCJkZWZpbmUoYENGX0NVUlNFU19PSycsYCVkJykiLCBPSyk7Ci0JICAgIHByaW50ZigiZGVmaW5lKGBDRl9DVVJTRVNfRVJSJyxgJWQnKSIsIEVSUik7Ci0JICAgIHByaW50ZigiZGVmaW5lKGBDRl9DVVJTRVNfVFJVRScsYCVkJykiLCBUUlVFKTsKLQkgICAgcHJpbnRmKCJkZWZpbmUoYENGX0NVUlNFU19GQUxTRScsYCVkJykiLCBGQUxTRSk7Ci0JICB9Ci0JICBicmVhazsKLQljYXNlICdFJzoKLQkgIHsKLQkgICAgY2hhciAqYnVmID0gKGNoYXIgKiltYWxsb2MoMjA0OCk7Ci0JICAgIGNoYXIgKnAgPSBidWY7Ci0JICAgIGludCBldGltaW4gPSBFX09LOwotCSAgICBpbnQgZXRpbWF4ID0gRV9PSzsKKyAgcHJpbnRfY29tbWVudCgiVmVyc2lvbiBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5IGZyb20gZXh0ZW5zaW9ucygzTkNVUlNFUykiKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoTkNVUlNFU19WRVJTSU9OX01BSk9SKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoTkNVUlNFU19WRVJTSU9OX01JTk9SKTsKKyAgcHJpbnRmKCIgICBWZXJzaW9uIDogY29uc3RhbnQgU3RyaW5nIDo9IFwiJWQuJWRcIjtcbiIsCisJIE5DVVJTRVNfVkVSU0lPTl9NQUpPUiwgTkNVUlNFU19WRVJTSU9OX01JTk9SKTsKIAotCSAgICBpZiAocCkKLQkgICAgICB7Ci0JCXAgKz0gZXRpX2dlbihwLCBFX09LLCAiT2siLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkJcCArPSBldGlfZ2VuKHAsIEVfU1lTVEVNX0VSUk9SLCAiU3lzdGVtX0Vycm9yIiwgJmV0aW1pbiwgJmV0aW1heCk7Ci0JCXAgKz0gZXRpX2dlbihwLCBFX0JBRF9BUkdVTUVOVCwgIkJhZF9Bcmd1bWVudCIsICZldGltaW4sICZldGltYXgpOwotCQlwICs9IGV0aV9nZW4ocCwgRV9QT1NURUQsICJQb3N0ZWQiLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkJcCArPSBldGlfZ2VuKHAsIEVfQ09OTkVDVEVELCAiQ29ubmVjdGVkIiwgJmV0aW1pbiwgJmV0aW1heCk7Ci0JCXAgKz0gZXRpX2dlbihwLCBFX0JBRF9TVEFURSwgIkJhZF9TdGF0ZSIsICZldGltaW4sICZldGltYXgpOwotCQlwICs9IGV0aV9nZW4ocCwgRV9OT19ST09NLCAiTm9fUm9vbSIsICZldGltaW4sICZldGltYXgpOwotCQlwICs9IGV0aV9nZW4ocCwgRV9OT1RfUE9TVEVELCAiTm90X1Bvc3RlZCIsICZldGltaW4sICZldGltYXgpOwotCQlwICs9IGV0aV9nZW4ocCwgRV9VTktOT1dOX0NPTU1BTkQsCi0JCQkgICAgICJVbmtub3duX0NvbW1hbmQiLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkJcCArPSBldGlfZ2VuKHAsIEVfTk9fTUFUQ0gsICJOb19NYXRjaCIsICZldGltaW4sICZldGltYXgpOwotCQlwICs9IGV0aV9nZW4ocCwgRV9OT1RfU0VMRUNUQUJMRSwKLQkJCSAgICAgIk5vdF9TZWxlY3RhYmxlIiwgJmV0aW1pbiwgJmV0aW1heCk7Ci0JCXAgKz0gZXRpX2dlbihwLCBFX05PVF9DT05ORUNURUQsCi0JCQkgICAgICJOb3RfQ29ubmVjdGVkIiwgJmV0aW1pbiwgJmV0aW1heCk7Ci0JCXAgKz0gZXRpX2dlbihwLCBFX1JFUVVFU1RfREVOSUVELAotCQkJICAgICAiUmVxdWVzdF9EZW5pZWQiLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkJcCArPSBldGlfZ2VuKHAsIEVfSU5WQUxJRF9GSUVMRCwKLQkJCSAgICAgIkludmFsaWRfRmllbGQiLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkJcCArPSBldGlfZ2VuKHAsIEVfQ1VSUkVOVCwKLQkJCSAgICAgIkN1cnJlbnQiLCAmZXRpbWluLCAmZXRpbWF4KTsKLQkgICAgICB9Ci0JICAgIHByaW50ZigiICAgc3VidHlwZSBFdGlfRXJyb3IgaXMgQ19JbnQgcmFuZ2UgJWQgLi4gJWQ7XG5cbiIsCi0JCSAgIGV0aW1pbiwgZXRpbWF4KTsKLQkgICAgcHJpbnRmKGJ1Zik7Ci0JICB9Ci0JICBicmVhazsKLQlkZWZhdWx0OgotCSAgYnJlYWs7Ci0JfQotICAgICAgYnJlYWs7Ci0gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAgICBjYXNlICdWJzoJCQkvKiBwbGFpbiB2ZXJzaW9uIGR1bXAgKi8KLSAgICAgIHsKLQlzd2l0Y2ggKGFyZ3ZbMl1bMF0pCi0JICB7Ci0JICBjYXNlICcxJzoJCS8qIG1ham9yIHZlcnNpb24gKi8KLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT05fTUFKT1IKLQkgICAgcHJpbnRmKCIlZCIsIE5DVVJTRVNfVkVSU0lPTl9NQUpPUik7CisgIHByaW50X2NvbW1lbnQoIkNoYXJhY3RlciBub24tY29sb3IgYXR0cmlidXRlcyBmcm9tIGF0dHIoM05DVVJTRVMpIik7CisgIHByaW50ZigiICAgLS0gIGF0dHJfdCBhbmQgY2h0eXBlIG1heSBiZSBzaWduZWQgaW4gQy5cbiIpOworICBwcmludGYoIiAgIHR5cGUgYXR0cl90IGlzIG1vZCAyICoqICVsdTtcbiIsIChsb25nIHVuc2lnbmVkKSg4ICogc2l6ZW9mKGF0dHJfdCkpKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfQ0hBUlRFWFQpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9DT0xPUik7CisgIFBSSU5UX0JJVE1BU0soYXR0cl90LCAiQXR0ciIsIEFfQVRUUklCVVRFUyAmIH5BX0NPTE9SKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfU1RBTkRPVVQpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9VTkRFUkxJTkUpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9SRVZFUlNFKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfQkxJTkspOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9ESU0pOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9CT0xEKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfUFJPVEVDVCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soYXR0cl90LCBBX0lOVklTKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfQUxUQ0hBUlNFVCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soYXR0cl90LCBBX0hPUklaT05UQUwpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9MRUZUKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfTE9XKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhhdHRyX3QsIEFfUklHSFQpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9UT1ApOworICBQUklOVF9OQU1FRF9CSVRNQVNLKGF0dHJfdCwgQV9WRVJUSUNBTCk7CisgIHByaW50X2NvbnN0YW50KCJjaHR5cGVfU2l6ZSIsIDggKiBzaXplb2YoY2h0eXBlKSk7CisKKyAgcHJpbnRfY29tbWVudCgicHJlZGVmaW5lZCBjb2xvciBudW1iZXJzIGZyb20gY29sb3IoM05DVVJTRVMpIik7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKENPTE9SX0JMQUNLKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoQ09MT1JfUkVEKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoQ09MT1JfR1JFRU4pOworICBQUklOVF9OQU1FRF9DT05TVEFOVChDT0xPUl9ZRUxMT1cpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChDT0xPUl9CTFVFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoQ09MT1JfTUFHRU5UQSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKENPTE9SX0NZQU4pOworICBQUklOVF9OQU1FRF9DT05TVEFOVChDT0xPUl9XSElURSk7CisKKyAgcHJpbnRfY29tbWVudCgiRVRJIHJldHVybiBjb2RlcyBmcm9tIG5jdXJzZXMuaCIpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChFX09LKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRV9TWVNURU1fRVJST1IpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChFX0JBRF9BUkdVTUVOVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVfUE9TVEVEKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRV9DT05ORUNURUQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChFX0JBRF9TVEFURSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVfTk9fUk9PTSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVfTk9UX1BPU1RFRCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVfVU5LTk9XTl9DT01NQU5EKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRV9OT19NQVRDSCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEVfTk9UX1NFTEVDVEFCTEUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChFX05PVF9DT05ORUNURUQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChFX1JFUVVFU1RfREVOSUVEKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRV9JTlZBTElEX0ZJRUxEKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoRV9DVVJSRU5UKTsKKworICBwcmludF9jb21tZW50KCJJbnB1dCBrZXkgY29kZXMgbm90IGRlZmluZWQgaW4gYW55IG5jdXJzZXMgbWFucGFnZSIpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfTUlOKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX01BWCk7CisjaWZkZWYgS0VZX0NPREVfWUVTCisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DT0RFX1lFUyk7CiAjZW5kaWYKLQkgICAgYnJlYWs7Ci0JICBjYXNlICcyJzoJCS8qIG1pbm9yIHZlcnNpb24gKi8KLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT05fTUlOT1IKLQkgICAgcHJpbnRmKCIlZCIsIE5DVVJTRVNfVkVSU0lPTl9NSU5PUik7CisKKyAgcHJpbnRfY29tbWVudCgiSW5wdXQga2V5IGNvZGVzIGZyb20gZ2V0Y2goM05DVVJTRVMpIik7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9CUkVBSyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9ET1dOKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1VQKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0xFRlQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUklHSFQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfSE9NRSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9CQUNLU1BBQ0UpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfRjApOworICBwcmludF9jb25zdGFudCgiS0VZX0YxIiwgS0VZX0YoMSkpOworICBwcmludF9jb25zdGFudCgiS0VZX0YyIiwgS0VZX0YoMikpOworICBwcmludF9jb25zdGFudCgiS0VZX0YzIiwgS0VZX0YoMykpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y0IiwgS0VZX0YoNCkpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y1IiwgS0VZX0YoNSkpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y2IiwgS0VZX0YoNikpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y3IiwgS0VZX0YoNykpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y4IiwgS0VZX0YoOCkpOworICBwcmludF9jb25zdGFudCgiS0VZX0Y5IiwgS0VZX0YoOSkpOworICBwcmludF9jb25zdGFudCgiS0VZX0YxMCIsIEtFWV9GKDEwKSk7CisgIHByaW50X2NvbnN0YW50KCJLRVlfRjExIiwgS0VZX0YoMTEpKTsKKyAgcHJpbnRfY29uc3RhbnQoIktFWV9GMTIiLCBLRVlfRigxMikpOworICBwcmludF9jb25zdGFudCgiS0VZX0YxMyIsIEtFWV9GKDEzKSk7CisgIHByaW50X2NvbnN0YW50KCJLRVlfRjE0IiwgS0VZX0YoMTQpKTsKKyAgcHJpbnRfY29uc3RhbnQoIktFWV9GMTUiLCBLRVlfRigxNSkpOworICBwcmludF9jb25zdGFudCgiS0VZX0YxNiIsIEtFWV9GKDE2KSk7CisgIHByaW50X2NvbnN0YW50KCJLRVlfRjE3IiwgS0VZX0YoMTcpKTsKKyAgcHJpbnRfY29uc3RhbnQoIktFWV9GMTgiLCBLRVlfRigxOCkpOworICBwcmludF9jb25zdGFudCgiS0VZX0YxOSIsIEtFWV9GKDE5KSk7CisgIHByaW50X2NvbnN0YW50KCJLRVlfRjIwIiwgS0VZX0YoMjApKTsKKyAgcHJpbnRfY29uc3RhbnQoIktFWV9GMjEiLCBLRVlfRigyMSkpOworICBwcmludF9jb25zdGFudCgiS0VZX0YyMiIsIEtFWV9GKDIyKSk7CisgIHByaW50X2NvbnN0YW50KCJLRVlfRjIzIiwgS0VZX0YoMjMpKTsKKyAgcHJpbnRfY29uc3RhbnQoIktFWV9GMjQiLCBLRVlfRigyNCkpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfREwpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfSUwpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfREMpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfSUMpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfRUlDKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0NMRUFSKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0VPUyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9FT0wpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU0YpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1IpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfTlBBR0UpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUFBBR0UpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1RBQik7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DVEFCKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0NBVEFCKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0VOVEVSKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NSRVNFVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9SRVNFVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9QUklOVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9MTCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9BMSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9BMyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9CMik7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DMSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DMyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9CVEFCKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0JFRyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DQU5DRUwpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfQ0xPU0UpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfQ09NTUFORCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9DT1BZKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0NSRUFURSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9FTkQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfRVhJVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9GSU5EKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX0hFTFApOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfTUFSSyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9NRVNTQUdFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX01PVkUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfTkVYVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9PUEVOKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX09QVElPTlMpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUFJFVklPVVMpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUkVETyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9SRUZFUkVOQ0UpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUkVGUkVTSCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9SRVBMQUNFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1JFU1RBUlQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfUkVTVU1FKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NBVkUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU0JFRyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TQ0FOQ0VMKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NDT01NQU5EKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NDT1BZKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NDUkVBVEUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU0RDKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NETCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TRUxFQ1QpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU0VORCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TRU9MKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NFWElUKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NGSU5EKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NIRUxQKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NIT01FKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NJQyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TTEVGVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TTUVTU0FHRSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TTU9WRSk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TTkVYVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TT1BUSU9OUyk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TUFJFVklPVVMpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1BSSU5UKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NSRURPKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NSRVBMQUNFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1NSSUdIVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9TUlNVTUUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1NBVkUpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1NVU1BFTkQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1VORE8pOworICBQUklOVF9OQU1FRF9DT05TVEFOVChLRVlfU1VTUEVORCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEtFWV9VTkRPKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX01PVVNFKTsKKyAgUFJJTlRfTkFNRURfQ09OU1RBTlQoS0VZX1JFU0laRSk7CisKKyAgcHJpbnRfY29tbWVudCgiYWx0ZXJuYXRlIGNoYXJhY3RlciBjb2RlcyAoQUNTKSBmcm9tIGFkZGNoKDNOQ1VSU0VTKSIpOworI2RlZmluZSBQUklOVF9BQ1MobmFtZSkgcHJpbnRfY29uc3RhbnQgKCNuYW1lLCAmbmFtZSAtICZhY3NfbWFwWzBdKQorICBQUklOVF9BQ1MoQUNTX1VMQ09STkVSKTsKKyAgUFJJTlRfQUNTKEFDU19MTENPUk5FUik7CisgIFBSSU5UX0FDUyhBQ1NfVVJDT1JORVIpOworICBQUklOVF9BQ1MoQUNTX0xSQ09STkVSKTsKKyAgUFJJTlRfQUNTKEFDU19MVEVFKTsKKyAgUFJJTlRfQUNTKEFDU19SVEVFKTsKKyAgUFJJTlRfQUNTKEFDU19CVEVFKTsKKyAgUFJJTlRfQUNTKEFDU19UVEVFKTsKKyAgUFJJTlRfQUNTKEFDU19ITElORSk7CisgIFBSSU5UX0FDUyhBQ1NfVkxJTkUpOworICBQUklOVF9BQ1MoQUNTX1BMVVMpOworICBQUklOVF9BQ1MoQUNTX1MxKTsKKyAgUFJJTlRfQUNTKEFDU19TOSk7CisgIFBSSU5UX0FDUyhBQ1NfRElBTU9ORCk7CisgIFBSSU5UX0FDUyhBQ1NfQ0tCT0FSRCk7CisgIFBSSU5UX0FDUyhBQ1NfREVHUkVFKTsKKyAgUFJJTlRfQUNTKEFDU19QTE1JTlVTKTsKKyAgUFJJTlRfQUNTKEFDU19CVUxMRVQpOworICBQUklOVF9BQ1MoQUNTX0xBUlJPVyk7CisgIFBSSU5UX0FDUyhBQ1NfUkFSUk9XKTsKKyAgUFJJTlRfQUNTKEFDU19EQVJST1cpOworICBQUklOVF9BQ1MoQUNTX1VBUlJPVyk7CisgIFBSSU5UX0FDUyhBQ1NfQk9BUkQpOworICBQUklOVF9BQ1MoQUNTX0xBTlRFUk4pOworICBQUklOVF9BQ1MoQUNTX0JMT0NLKTsKKyAgUFJJTlRfQUNTKEFDU19TMyk7CisgIFBSSU5UX0FDUyhBQ1NfUzcpOworICBQUklOVF9BQ1MoQUNTX0xFUVVBTCk7CisgIFBSSU5UX0FDUyhBQ1NfR0VRVUFMKTsKKyAgUFJJTlRfQUNTKEFDU19QSSk7CisgIFBSSU5UX0FDUyhBQ1NfTkVRVUFMKTsKKyAgUFJJTlRfQUNTKEFDU19TVEVSTElORyk7CisKKyAgcHJpbnRfY29tbWVudCgiTWVudV9PcHRpb25zIGZyb20gb3B0cygzTUVOVSkiKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhNZW51X09wdGlvbnMsIE9fT05FVkFMVUUpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKE1lbnVfT3B0aW9ucywgT19TSE9XREVTQyk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soTWVudV9PcHRpb25zLCBPX1JPV01BSk9SKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhNZW51X09wdGlvbnMsIE9fSUdOT1JFQ0FTRSk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soTWVudV9PcHRpb25zLCBPX1NIT1dNQVRDSCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soTWVudV9PcHRpb25zLCBPX05PTkNZQ0xJQyk7CisgIHByaW50X2NvbnN0YW50KCJNZW51X09wdGlvbnNfU2l6ZSIsIDggKiBzaXplb2YoTWVudV9PcHRpb25zKSk7CisKKyAgcHJpbnRfY29tbWVudCgiSXRlbV9PcHRpb25zIGZyb20gbWVudV9vcHRzKDNNRU5VKSIpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKEl0ZW1fT3B0aW9ucywgT19TRUxFQ1RBQkxFKTsKKyAgcHJpbnRfY29uc3RhbnQoIkl0ZW1fT3B0aW9uc19TaXplIiwgOCAqIHNpemVvZihJdGVtX09wdGlvbnMpKTsKKworICBwcmludF9jb21tZW50KCJGaWVsZF9PcHRpb25zIGZyb20gZmllbGRfb3B0cygzRk9STSkiKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhGaWVsZF9PcHRpb25zLCBPX1ZJU0lCTEUpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKEZpZWxkX09wdGlvbnMsIE9fQUNUSVZFKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhGaWVsZF9PcHRpb25zLCBPX1BVQkxJQyk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soRmllbGRfT3B0aW9ucywgT19FRElUKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhGaWVsZF9PcHRpb25zLCBPX1dSQVApOworICBQUklOVF9OQU1FRF9CSVRNQVNLKEZpZWxkX09wdGlvbnMsIE9fQkxBTkspOworICBQUklOVF9OQU1FRF9CSVRNQVNLKEZpZWxkX09wdGlvbnMsIE9fQVVUT1NLSVApOworICBQUklOVF9OQU1FRF9CSVRNQVNLKEZpZWxkX09wdGlvbnMsIE9fTlVMTE9LKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhGaWVsZF9PcHRpb25zLCBPX1BBU1NPSyk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soRmllbGRfT3B0aW9ucywgT19TVEFUSUMpOworICBwcmludF9jb25zdGFudCgiRmllbGRfT3B0aW9uc19TaXplIiwgOCAqIHNpemVvZihGaWVsZF9PcHRpb25zKSk7CisKKyAgcHJpbnRfY29tbWVudCgiRmllbGRfT3B0aW9ucyBmcm9tIG9wdHMoM0ZPUk0pIik7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soRmllbGRfT3B0aW9ucywgT19OTF9PVkVSTE9BRCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soRmllbGRfT3B0aW9ucywgT19CU19PVkVSTE9BRCk7CisgIC8qICBGaWVsZF9PcHRpb25zX1NpemUgaXMgZGVmaW5lZCBiZWxvdyAqLworCisgIHByaW50X2NvbW1lbnQoIk1FVkVOVCBzdHJ1Y3R1cmUgZnJvbSBtb3VzZSgzTkNVUlNFUykiKTsKKyAgU1RSVUNUX09GRlNFVChNRVZFTlQsIGlkKTsKKyAgU1RSVUNUX09GRlNFVChNRVZFTlQsIHgpOworICBTVFJVQ1RfT0ZGU0VUKE1FVkVOVCwgeSk7CisgIFNUUlVDVF9PRkZTRVQoTUVWRU5ULCB6KTsKKyAgU1RSVUNUX09GRlNFVChNRVZFTlQsIGJzdGF0ZSk7CisgIHByaW50X2NvbnN0YW50KCJNRVZFTlRfU2l6ZSIsIDggKiBzaXplb2YoTUVWRU5UKSk7CisKKyAgcHJpbnRfY29tbWVudCgibW91c2UgZXZlbnRzIGZyb20gbW91c2UoM05DVVJTRVMpIik7CisgIHsKKyAgICBtbWFza190IGFsbF9ldmVudHM7CisKKyNkZWZpbmUgUFJJTlRfTU9VU0VfRVZFTlQoZXZlbnQpICAgICAgICAgICAgICAgIFwKKyAgICBwcmludF9jb25zdGFudCAoI2V2ZW50LCBldmVudCk7ICAgICAgICAgICAgIFwKKyAgICBhbGxfZXZlbnRzIHw9IGV2ZW50CisKKyAgICBhbGxfZXZlbnRzID0gMDsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04xX1JFTEVBU0VEKTsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04xX1BSRVNTRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjFfQ0xJQ0tFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OMV9UUklQTEVfQ0xJQ0tFRCk7CisjaWZkZWYgQlVUVE9OMV9SRVNFUlZFRF9FVkVOVAorICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjFfUkVTRVJWRURfRVZFTlQpOwogI2VuZGlmCi0JICAgIGJyZWFrOwotCSAgY2FzZSAnMyc6CQkvKiBwYXRjaCBsZXZlbCAqLwotI2lmZGVmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSAotCSAgICBwcmludGYoIiVkIiwgTkNVUlNFU19WRVJTSU9OX1BBVENIKTsKKyAgICBwcmludF9jb25zdGFudCgiYWxsX2V2ZW50c19idXR0b25fMSIsIChsb25nKWFsbF9ldmVudHMpOworCisgICAgYWxsX2V2ZW50cyA9IDA7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OMl9SRUxFQVNFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OMl9QUkVTU0VEKTsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04yX0NMSUNLRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjJfRE9VQkxFX0NMSUNLRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjJfVFJJUExFX0NMSUNLRUQpOworI2lmZGVmIEJVVFRPTjJfUkVTRVJWRURfRVZFTlQKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04yX1JFU0VSVkVEX0VWRU5UKTsKICNlbmRpZgotCSAgICBicmVhazsKLQkgIGRlZmF1bHQ6Ci0JICAgIGJyZWFrOwotCSAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gICAgfQotICByZXR1cm4gMDsKKyAgICBwcmludF9jb25zdGFudCgiYWxsX2V2ZW50c19idXR0b25fMiIsIChsb25nKWFsbF9ldmVudHMpOworCisgICAgYWxsX2V2ZW50cyA9IDA7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OM19SRUxFQVNFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9OM19QUkVTU0VEKTsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04zX0NMSUNLRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjNfRE9VQkxFX0NMSUNLRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjNfVFJJUExFX0NMSUNLRUQpOworI2lmZGVmIEJVVFRPTjNfUkVTRVJWRURfRVZFTlQKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT04zX1JFU0VSVkVEX0VWRU5UKTsKKyNlbmRpZgorICAgIHByaW50X2NvbnN0YW50KCJhbGxfZXZlbnRzX2J1dHRvbl8zIiwgKGxvbmcpYWxsX2V2ZW50cyk7CisKKyAgICBhbGxfZXZlbnRzID0gMDsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT040X1JFTEVBU0VEKTsKKyAgICBQUklOVF9NT1VTRV9FVkVOVChCVVRUT040X1BSRVNTRUQpOworICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjRfQ0xJQ0tFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9ONF9ET1VCTEVfQ0xJQ0tFRCk7CisgICAgUFJJTlRfTU9VU0VfRVZFTlQoQlVUVE9ONF9UUklQTEVfQ0xJQ0tFRCk7CisjaWZkZWYgQlVUVE9ONF9SRVNFUlZFRF9FVkVOVAorICAgIFBSSU5UX01PVVNFX0VWRU5UKEJVVFRPTjRfUkVTRVJWRURfRVZFTlQpOworI2VuZGlmCisgICAgcHJpbnRfY29uc3RhbnQoImFsbF9ldmVudHNfYnV0dG9uXzQiLCAobG9uZylhbGxfZXZlbnRzKTsKKyAgfQorICBQUklOVF9OQU1FRF9DT05TVEFOVChCVVRUT05fQ1RSTCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEJVVFRPTl9TSElGVCk7CisgIFBSSU5UX05BTUVEX0NPTlNUQU5UKEJVVFRPTl9BTFQpOworICBQUklOVF9OQU1FRF9DT05TVEFOVChSRVBPUlRfTU9VU0VfUE9TSVRJT04pOworICBQUklOVF9OQU1FRF9DT05TVEFOVChBTExfTU9VU0VfRVZFTlRTKTsKKworICBwcmludF9jb21tZW50KCJ0cmFjZSBzZWxlY3Rpb24gZnJvbSB0cmFjZSgzTkNVUlNFUykiKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhVSU5ULCBUUkFDRV9USU1FUyk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfVFBVVFMpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKFVJTlQsIFRSQUNFX1VQREFURSk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfTU9WRSk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfQ0hBUlBVVCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfQ0FMTFMpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKFVJTlQsIFRSQUNFX1ZJUlRQVVQpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKFVJTlQsIFRSQUNFX0lFVkVOVCk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfQklUUyk7CisgIFBSSU5UX05BTUVEX0JJVE1BU0soVUlOVCwgVFJBQ0VfSUNBTExTKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhVSU5ULCBUUkFDRV9DQ0FMTFMpOworICBQUklOVF9OQU1FRF9CSVRNQVNLKFVJTlQsIFRSQUNFX0RBVEFCQVNFKTsKKyAgUFJJTlRfTkFNRURfQklUTUFTSyhVSU5ULCBUUkFDRV9BVFRSUyk7CisgIHByaW50X2NvbnN0YW50KCJUcmFjZV9TaXplIiwgOCAqIHNpemVvZihVSU5UKSk7CisKKyAgcHJpbnRmKCJlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlc19Db25zdGFudHM7XG4iKTsKKyAgZXhpdChFWElUX1NVQ0NFU1MpOwogfQpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkcy5tNCBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZHMubTQKaW5kZXggZTBjOTM0OC4uYjkwYjhkZCAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRzLm00CkBAIC0xMCw3ICsxMCw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzgsMTQgKzM4LDEyIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE2ICQKKy0tICAkUmV2aXNpb246IDEuMjMgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pbmNsdWRlKGBCYXNlX0RlZnMnKQogd2l0aCBTeXN0ZW07CiB3aXRoIEludGVyZmFjZXMuQzsKIHdpdGggSW50ZXJmYWNlcy5DLlN0cmluZ3M7IHVzZSBJbnRlcmZhY2VzLkMuU3RyaW5nczsKLXdpdGggVW5jaGVja2VkX0NvbnZlcnNpb247CiAKIHBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXggaXMKICAgIHByYWdtYSBQcmVlbGFib3JhdGUgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4KTsKQEAgLTYwLDQxICs1OCw0MSBAQAogICAgc3VidHlwZSBDX1VMb25nICAgIGlzIEludGVyZmFjZXMuQy51bnNpZ25lZF9sb25nOwogICAgc3VidHlwZSBDX0NoYXJfUHRyIGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJzX3B0cjsKICAgIHR5cGUgICAgQ19Wb2lkX1B0ciBpcyBuZXcgU3lzdGVtLkFkZHJlc3M7Ci1pbmNsdWRlKGBDaHR5cGVfRGVmJykKKwogICAgLS0gIFRoaXMgaXMgaG93IHRob3NlIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiBuY3Vyc2VzLiBJIHNlZSB0aGVtIGFsc28KICAgIC0tICBleGFjdGx5IGxpa2UgdGhpcyBpbiBhbGwgRVRJIGltcGxlbWVudGF0aW9ucyBJIGV2ZXIgdGVzdGVkLiBTbyBpdAogICAgLS0gIGNvdWxkIGJlIHRoYXQgdGhpcyBpcyBxdWl0ZSBnZW5lcmFsLCBidXQgcGxlYXNlIGNoZWNrIHdpdGggeW91ciBjdXJzZXMuCi0gICAtLSAgVGhpcyBpcyBjcml0aWNhbCwgYmVjYXVzZSBjdXJzZXMgc29tZXRpbWUgbWl4ZXMgYm9vbGVhbiByZXR1cm5zIHdpdGgKKyAgIC0tICBUaGlzIGlzIGNyaXRpY2FsLCBiZWNhdXNlIGN1cnNlcyBzb21ldGltZSBtaXhlcyBCb29sZWFuIHJldHVybnMgd2l0aAogICAgLS0gIHJldHVybmluZyBhbiBlcnJvciBzdGF0dXMuCi0gICBDdXJzZXNfT2sgICAgOiBjb25zdGFudCBDX0ludCA6PSBDRl9DVVJTRVNfT0s7Ci0gICBDdXJzZXNfRXJyICAgOiBjb25zdGFudCBDX0ludCA6PSBDRl9DVVJTRVNfRVJSOworICAgQ3Vyc2VzX09rICAgIDogY29uc3RhbnQgQ19JbnQgOj0gQ3Vyc2VzX0NvbnN0YW50cy5PSzsKKyAgIEN1cnNlc19FcnIgICA6IGNvbnN0YW50IENfSW50IDo9IEN1cnNlc19Db25zdGFudHMuRVJSOwogCi0gICBDdXJzZXNfVHJ1ZSAgOiBjb25zdGFudCBDX0ludCA6PSBDRl9DVVJTRVNfVFJVRTsKLSAgIEN1cnNlc19GYWxzZSA6IGNvbnN0YW50IENfSW50IDo9IENGX0NVUlNFU19GQUxTRTsKKyAgIEN1cnNlc19UcnVlICA6IGNvbnN0YW50IENfSW50IDo9IEN1cnNlc19Db25zdGFudHMuVFJVRTsKKyAgIEN1cnNlc19GYWxzZSA6IGNvbnN0YW50IENfSW50IDo9IEN1cnNlc19Db25zdGFudHMuRkFMU0U7CiAKICAgIC0tICBFdGlfRXJyb3I6IHR5cGUgZm9yIGVycm9yIGNvZGVzIHJldHVybmVkIGJ5IHRoZSBtZW51IGFuZCBmb3JtIHN1YnN5c3RlbQotaW5jbHVkZShgRXRpX0RlZnMnKQorICAgdHlwZSBFdGlfRXJyb3IgaXMKKyAgICAgKEVfQ3VycmVudCwKKyAgICAgIEVfSW52YWxpZF9GaWVsZCwKKyAgICAgIEVfUmVxdWVzdF9EZW5pZWQsCisgICAgICBFX05vdF9Db25uZWN0ZWQsCisgICAgICBFX05vdF9TZWxlY3RhYmxlLAorICAgICAgRV9Ob19NYXRjaCwKKyAgICAgIEVfVW5rbm93bl9Db21tYW5kLAorICAgICAgRV9Ob3RfUG9zdGVkLAorICAgICAgRV9Ob19Sb29tLAorICAgICAgRV9CYWRfU3RhdGUsCisgICAgICBFX0Nvbm5lY3RlZCwKKyAgICAgIEVfUG9zdGVkLAorICAgICAgRV9CYWRfQXJndW1lbnQsCisgICAgICBFX1N5c3RlbV9FcnJvciwKKyAgICAgIEVfT2spOworCiAgICBwcm9jZWR1cmUgRXRpX0V4Y2VwdGlvbiAoQ29kZSA6IEV0aV9FcnJvcik7Ci0gICAtLSAgRGlzcGF0Y2ggdGhlIGVycm9yIGNvZGUgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24KLSAgIC0tCi0gICAtLQotICAgLS0gIFNvbWUgaGVscGVycwotICAgZnVuY3Rpb24gQ2h0eXBlX1RvX0F0dHJDaGFyIGlzIG5ldwotICAgICBVbmNoZWNrZWRfQ29udmVyc2lvbiAoU291cmNlID0+IENfQ2h0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ID0+IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKLSAgIGZ1bmN0aW9uIEF0dHJDaGFyX1RvX0NodHlwZSBpcyBuZXcKLSAgICAgVW5jaGVja2VkX0NvbnZlcnNpb24gKFNvdXJjZSA9PiBBdHRyaWJ1dGVkX0NoYXJhY3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCA9PiBDX0NodHlwZSk7CisgICAtLSAgRG8gbm90aGluZyBpZiBDb2RlID0gRV9Pay4KKyAgIC0tICBFbHNlIGRpc3BhdGNoIHRoZSBlcnJvciBjb2RlIGFuZCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgogCi0gICBmdW5jdGlvbiBBdHRyQ2hhcl9Ub19BdHRyVHlwZSBpcyBuZXcKLSAgICAgVW5jaGVja2VkX0NvbnZlcnNpb24gKFNvdXJjZSA9PiBBdHRyaWJ1dGVkX0NoYXJhY3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCA9PiBDX0F0dHJUeXBlKTsKLQotICAgZnVuY3Rpb24gQXR0clR5cGVfVG9fQXR0ckNoYXIgaXMgbmV3Ci0gICAgIFVuY2hlY2tlZF9Db252ZXJzaW9uIChTb3VyY2UgPT4gQ19BdHRyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCA9PiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7Ci0KLSAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgIDogaW4gIGNoYXJzX3B0cjsKKyAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgIDogY2hhcnNfcHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nKTsKICAgIC0tICBGaWxsIHRoZSBTdHIgcGFyYW1ldGVyIHdpdGggdGhlIHN0cmluZyBkZW5vdGVkIGJ5IHRoZSBjaGFyc19wdHIKICAgIC0tICBDLVN0eWxlIHN0cmluZy4KQEAgLTEwMiw0ICsxMDAsMjMgQEAKICAgIGZ1bmN0aW9uIEZpbGxfU3RyaW5nIChDcCA6IGNoYXJzX3B0cikgcmV0dXJuIFN0cmluZzsKICAgIC0tICBTYW1lIGJ1dCBhcyBmdW5jdGlvbi4KIAorcHJpdmF0ZQorICAgZm9yIEV0aV9FcnJvcidTaXplIHVzZSBDX0ludCdTaXplOworICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIEV0aV9FcnJvcik7CisgICBmb3IgRXRpX0Vycm9yIHVzZQorICAgICAoRV9DdXJyZW50ICAgICAgICAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX0NVUlJFTlQsCisgICAgICBFX0ludmFsaWRfRmllbGQgICA9PiBDdXJzZXNfQ29uc3RhbnRzLkVfSU5WQUxJRF9GSUVMRCwKKyAgICAgIEVfUmVxdWVzdF9EZW5pZWQgID0+IEN1cnNlc19Db25zdGFudHMuRV9SRVFVRVNUX0RFTklFRCwKKyAgICAgIEVfTm90X0Nvbm5lY3RlZCAgID0+IEN1cnNlc19Db25zdGFudHMuRV9OT1RfQ09OTkVDVEVELAorICAgICAgRV9Ob3RfU2VsZWN0YWJsZSAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX05PVF9TRUxFQ1RBQkxFLAorICAgICAgRV9Ob19NYXRjaCAgICAgICAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX05PX01BVENILAorICAgICAgRV9Vbmtub3duX0NvbW1hbmQgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX1VOS05PV05fQ09NTUFORCwKKyAgICAgIEVfTm90X1Bvc3RlZCAgICAgID0+IEN1cnNlc19Db25zdGFudHMuRV9OT1RfUE9TVEVELAorICAgICAgRV9Ob19Sb29tICAgICAgICAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX05PX1JPT00sCisgICAgICBFX0JhZF9TdGF0ZSAgICAgICA9PiBDdXJzZXNfQ29uc3RhbnRzLkVfQkFEX1NUQVRFLAorICAgICAgRV9Db25uZWN0ZWQgICAgICAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX0NPTk5FQ1RFRCwKKyAgICAgIEVfUG9zdGVkICAgICAgICAgID0+IEN1cnNlc19Db25zdGFudHMuRV9QT1NURUQsCisgICAgICBFX0JhZF9Bcmd1bWVudCAgICA9PiBDdXJzZXNfQ29uc3RhbnRzLkVfQkFEX0FSR1VNRU5ULAorICAgICAgRV9TeXN0ZW1fRXJyb3IgICAgPT4gQ3Vyc2VzX0NvbnN0YW50cy5FX1NZU1RFTV9FUlJPUiwKKyAgICAgIEVfT2sgICAgICAgICAgICAgID0+IEN1cnNlc19Db25zdGFudHMuRV9PSyk7CiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7CmRpZmYgLS1naXQgYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZHMubTQgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZHMubTQKaW5kZXggODgxOTg0NC4uNTE2ODJjZCAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRzLm00CisrKyBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLmFkcy5tNApAQCAtMTAsNyArMTAsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM4LDEwICszOCwxMSBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xNCAkCistLSAgJFJldmlzaW9uOiAxLjE5ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBJbnRlcmZhY2VzLkM7Cit3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwogCiBwYWNrYWdlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMgaXMKICAgIHByYWdtYSBQcmVlbGFib3JhdGUgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMpOwpAQCAtNjQsOCArNjUsOCBAQAogICAgdHlwZSBGaWVsZF9UeXBlX0FjY2VzcyBpcyBhY2Nlc3MgYWxsIEZpZWxkX1R5cGUnQ2xhc3M7CiAKICAgIC0tICBBTkNIT1IoYHNldF9maWVsZF90eXBlKCknLGBTZXRfVHlwZScpCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCAgICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsZF9UeXBlIDogaW4gRmllbGRfVHlwZSkgaXMgYWJzdHJhY3Q7CisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCAgICAgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsZF9UeXBlIDogRmllbGRfVHlwZSkgaXMgYWJzdHJhY3Q7CiAgICAtLSAgQUtBCiAgICAtLSAgQnV0OiB3ZSBoaWRlIHRoZSB2YXJhcmcgbWVjaGFuaXNtIG9mIHRoZSBDIGludGVyZmFjZS4gWW91IGFsd2F5cwogICAgLS0gICAgICAgaGF2ZSB0byBwYXNzIGEgc2luZ2xlIEZpZWxkX1R5cGUgcGFyYW1ldGVyLgpAQCAtNzUsNyArNzYsNyBAQAogICAgLS0gIE1BTlBBR0UoYGZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeCcpCiAKICAgIC0tICBBTkNIT1IoYGZpZWxkX3R5cGUoKScsYEdldF9UeXBlJykKLSAgIGZ1bmN0aW9uIEdldF9UeXBlIChGbGQgOiBpbiBGaWVsZCkgcmV0dXJuIEZpZWxkX1R5cGVfQWNjZXNzOworICAgZnVuY3Rpb24gR2V0X1R5cGUgKEZsZCA6IEZpZWxkKSByZXR1cm4gRmllbGRfVHlwZV9BY2Nlc3M7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGZpZWxkX2FyZygpJykKICAgIC0tICBJbiBBZGE5NSB3ZSBjYW4gY29tYmluZSB0aGVzZS4gSWYgeW91IHRyeSB0byByZXRyaWV2ZSB0aGUgZmllbGQgdHlwZQpAQCAtMTAxLDE1ICsxMDIsMTUgQEAKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBGcmVlYXJnX0Z1bmN0aW9uKTsKIAogICAgdHlwZSBGaWVsZF9DaGVja19GdW5jdGlvbiBpcyBhY2Nlc3MKLSAgICAgZnVuY3Rpb24gKEZsZCA6IEZpZWxkOyBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICBmdW5jdGlvbiAoRmxkIDogRmllbGQ7IFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2w7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgRmllbGRfQ2hlY2tfRnVuY3Rpb24pOwogCiAgICB0eXBlIENoYXJfQ2hlY2tfRnVuY3Rpb24gaXMgYWNjZXNzCi0gICAgIGZ1bmN0aW9uIChDaCA6IENfSW50OyBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICBmdW5jdGlvbiAoQ2ggOiBDX0ludDsgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDdXJzZXNfQm9vbDsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBDaGFyX0NoZWNrX0Z1bmN0aW9uKTsKIAogICAgdHlwZSBDaG9pY2VfRnVuY3Rpb24gaXMgYWNjZXNzCi0gICAgIGZ1bmN0aW9uIChGbGQgOiBGaWVsZDsgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludDsKKyAgICAgZnVuY3Rpb24gKEZsZCA6IEZpZWxkOyBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sOwogICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIENob2ljZV9GdW5jdGlvbik7CiAKICAgIC0tICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE3LDcgKzExOCw3IEBACiAgICAtLSAgfAogICAgdHlwZSBMb3dfTGV2ZWxfRmllbGRfVHlwZSBpcwogICAgICAgcmVjb3JkCi0gICAgICAgICBTdGF0dXMgOiAgICAgICAgICAgICAgSW50ZXJmYWNlcy5DLnNob3J0OworICAgICAgICAgU3RhdHVzIDogICAgICAgICAgICAgIEludGVyZmFjZXMuQy51bnNpZ25lZF9zaG9ydDsKICAgICAgICAgIFJlZl9Db3VudCA6ICAgICAgICAgICBJbnRlcmZhY2VzLkMubG9uZzsKICAgICAgICAgIExlZnQsIFJpZ2h0IDogICAgICAgICBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgIE1ha2VhcmcgOiAgICAgICAgICAgICBNYWtlYXJnX0Z1bmN0aW9uOwpAQCAtMTU5LDcgKzE2MCw3IEBACiAgICAtLSAgQW55IG90aGVyIHZhbHVlIHdpbGwgcmFpc2UgYSBGb3JtX0V4Y2VwdGlvbi4KIAogICAgZnVuY3Rpb24gTWFrZV9BcmcgKEFyZ3MgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwotICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIE1ha2VfQXJnKTsKKyAgIHByYWdtYSBJbXBvcnQgKEMsIE1ha2VfQXJnLCAidm9pZF9zdGFyX21ha2VfYXJnIik7CiAgICAtLSAgVGhpcyBpcyB0aGUgTWFrZWFyZ19GdW5jdGlvbiBmb3IgdGhlIGludGVybmFsIGxvdy1sZXZlbCB0eXBlcwogICAgLS0gIGludHJvZHVjZWQgYnkgdGhpcyBiaW5kaW5nLgogCkBAIC0xNzQsNyArMTc1LDcgQEAKICAgIC0tICBpbnRyb2R1Y2VkIGJ5IHRoaXMgYmluZGluZy4KIAogICAgZnVuY3Rpb24gRmllbGRfQ2hlY2tfUm91dGVyIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDdXJzZXNfQm9vbDsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBGaWVsZF9DaGVja19Sb3V0ZXIpOwogICAgLS0gIFRoaXMgaXMgdGhlIEZpZWxkX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzCiAgICAtLSAgaW50cm9kdWNlZCB0byB3cmFwIHRoZSBsb3ctbGV2ZWwgdHlwZXMgYnkgYSBGaWVsZF9UeXBlIGRlcml2ZWQKQEAgLTE4Miw3ICsxODMsNyBAQAogICAgLS0gIGZ1bmN0aW9uLgogCiAgICBmdW5jdGlvbiBDaGFyX0NoZWNrX1JvdXRlciAoQ2ggOiBDX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2w7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgQ2hhcl9DaGVja19Sb3V0ZXIpOwogICAgLS0gIFRoaXMgaXMgdGhlIENoYXJfQ2hlY2tfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXMKICAgIC0tICBpbnRyb2R1Y2VkIHRvIHdyYXAgdGhlIGxvdy1sZXZlbCB0eXBlcyBieSBhIEZpZWxkX1R5cGUgZGVyaXZlZApAQCAtMTkwLDcgKzE5MSw3IEBACiAgICAtLSAgZnVuY3Rpb24uCiAKICAgIGZ1bmN0aW9uIE5leHRfUm91dGVyIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2w7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgTmV4dF9Sb3V0ZXIpOwogICAgLS0gIFRoaXMgaXMgdGhlIENob2ljZV9GdW5jdGlvbiBmb3IgdGhlIGludGVybmFsIGxvdy1sZXZlbCB0eXBlcwogICAgLS0gIGludHJvZHVjZWQgdG8gd3JhcCB0aGUgbG93LWxldmVsIHR5cGVzIGJ5IGEgRmllbGRfVHlwZSBkZXJpdmVkCkBAIC0xOTgsNyArMTk5LDcgQEAKICAgIC0tICBmdW5jdGlvbi4KIAogICAgZnVuY3Rpb24gUHJldl9Sb3V0ZXIgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDdXJzZXNfQm9vbDsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBQcmV2X1JvdXRlcik7CiAgICAtLSAgVGhpcyBpcyB0aGUgQ2hvaWNlX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzCiAgICAtLSAgaW50cm9kdWNlZCB0byB3cmFwIHRoZSBsb3ctbGV2ZWwgdHlwZXMgYnkgYSBGaWVsZF9UeXBlIGRlcml2ZWQKQEAgLTIyNywxMiArMjI4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrIDogTWFrZWFyZ19GdW5jdGlvbiA6PSBNYWtlX0FyZydBY2Nlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29wIDogQ29weWFyZ19GdW5jdGlvbiA6PSBDb3B5X0FyZydBY2Nlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlIDogRnJlZWFyZ19GdW5jdGlvbiA6PSBGcmVlX0FyZydBY2Nlc3MpCi0gICAgIHJldHVybiBDX0ludDsKKyAgICAgcmV0dXJuIEF1eC5FdGlfRXJyb3I7CiAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmllbGR0eXBlX0FyZywgInNldF9maWVsZHR5cGVfYXJnIik7CiAKICAgIGZ1bmN0aW9uIFNldF9GaWVsZHR5cGVfQ2hvaWNlIChDZnQgOiBDX0ZpZWxkX1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV4dCwgUHJldiA6IENob2ljZV9GdW5jdGlvbikKLSAgICAgcmV0dXJuIENfSW50OworICAgICByZXR1cm4gQXV4LkV0aV9FcnJvcjsKICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GaWVsZHR5cGVfQ2hvaWNlLCAic2V0X2ZpZWxkdHlwZV9jaG9pY2UiKTsKIAogZW5kIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXM7CmRpZmYgLS1naXQgYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkcy5tNAppbmRleCA0MTM5ODgzLi45ZGU3MDBiIDEwMDY0NAotLS0gYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzLm00CisrKyBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZHMubTQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zOCw3ICszOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE1ICQKKy0tICAkUmV2aXNpb246IDEuMTYgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTUxLDE4ICs1MSwxOCBAQAogICAgLS0gIE1BTlBBR0UoYGZvcm1fZmllbGRfdXNlcnB0ci4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHNldF9maWVsZF91c2VycHRyJyxgU2V0X1VzZXJfRGF0YScpCi0gICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoRmxkICA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBVc2VyX0FjY2Vzcyk7CisgICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoRmxkICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2Vzcyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfVXNlcl9EYXRhKTsKIAogICAgLS0gIEFOQ0hPUihgZmllbGRfdXNlcnB0cicsYEdldF9Vc2VyX0RhdGEnKQotICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKEZsZCAgOiBpbiAgRmllbGQ7CisgICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoRmxkICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBvdXQgVXNlcl9BY2Nlc3MpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGBmaWVsZF91c2VycHRyJyxgR2V0X1VzZXJfRGF0YScpCi0gICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChGbGQgIDogaW4gIEZpZWxkKSByZXR1cm4gVXNlcl9BY2Nlc3M7CisgICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChGbGQgIDogRmllbGQpIHJldHVybiBVc2VyX0FjY2VzczsKICAgIC0tICBBS0EKICAgIC0tICBTYW1hIGFzIGZ1bmN0aW9uCiAgICBwcmFnbWEgSW5saW5lIChHZXRfVXNlcl9EYXRhKTsKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkcy5tNCBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkcy5tNAppbmRleCAwYzQ0MjBkLi5mN2ZiMWE3IDEwMDY0NAotLS0gYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZHMubTQKKysrIGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRzLm00CkBAIC0xMCw3ICsxMCw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzgsNyArMzgsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xNCAkCistLSAgJFJldmlzaW9uOiAxLjE1ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01MSwxOCArNTEsMTggQEAKICAgIC0tICBNQU5QQUdFKGBmb3JtX3VzZXJwdHIuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfZm9ybV91c2VycHRyJyxgU2V0X1VzZXJfRGF0YScpCi0gICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIFVzZXJfQWNjZXNzKTsKKyAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChGcm0gIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogVXNlcl9BY2Nlc3MpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1VzZXJfRGF0YSk7CiAKICAgIC0tICBBTkNIT1IoYGZvcm1fdXNlcnB0cicsYEdldF9Vc2VyX0RhdGEnKQotICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKEZybSAgOiBpbiAgRm9ybTsKKyAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChGcm0gIDogRm9ybTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogb3V0IFVzZXJfQWNjZXNzKTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgZm9ybV91c2VycHRyJyxgR2V0X1VzZXJfRGF0YScpCi0gICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChGcm0gIDogaW4gIEZvcm0pIHJldHVybiBVc2VyX0FjY2VzczsKKyAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKEZybSAgOiBGb3JtKSByZXR1cm4gVXNlcl9BY2Nlc3M7CiAgICAtLSAgQUtBCiAgICAtLSAgU2FtZSBhcyBmdW5jdGlvbgogICAgcHJhZ21hIElubGluZSAoR2V0X1VzZXJfRGF0YSk7CmRpZmYgLS1naXQgYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHMubTQgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHMubTQKaW5kZXggNWI3NWVkYi4uYjI2OWY0YyAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzLm00CisrKyBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkcy5tNApAQCAtMTAsNyArMTAsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM4LDE4ICszOCwxNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4yOSAkCi0tLSAgJERhdGU6IDIwMDYvMDYvMjUgMTQ6MzA6MjEgJAorLS0gICRSZXZpc2lvbjogMS4zMyAkCistLSAgJERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6NTcgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pbmNsdWRlKGBGb3JtX0Jhc2VfRGVmcycpCiB3aXRoIFN5c3RlbTsKIHdpdGggQWRhLkNoYXJhY3RlcnMuTGF0aW5fMTsKIAogcGFja2FnZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zIGlzCiAgICBwcmFnbWEgUHJlZWxhYm9yYXRlIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zKTsKLWluY2x1ZGUoYEZvcm1fTGlua2VyX09wdGlvbnMnKWRubAotaW5jbHVkZShgTGlua2VyX09wdGlvbnMnKQorICAgcHJhZ21hIExpbmtlcl9PcHRpb25zICgiLWxmb3JtIiAmIEN1cnNlc19Db25zdGFudHMuREZUX0FSR19TVUZGSVgpOworCiAgICBTcGFjZSA6IENoYXJhY3RlciByZW5hbWVzIEFkYS5DaGFyYWN0ZXJzLkxhdGluXzEuU3BhY2U7CiAKICAgIHR5cGUgRmllbGQgICAgICAgIGlzIHByaXZhdGU7CkBAIC02MywxOCArNjIsNjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaWdodCk7CiAKLSAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsKLWluY2x1ZGUoYEZpZWxkX1JlcCcpRG5sCisgICB0eXBlIEZpZWxkX09wdGlvbl9TZXQgaXMKKyAgICAgIHJlY29yZAorICAgICAgICAgVmlzaWJsZSAgIDogQm9vbGVhbjsKKyAgICAgICAgIEFjdGl2ZSAgICA6IEJvb2xlYW47CisgICAgICAgICBQdWJsaWMgICAgOiBCb29sZWFuOworICAgICAgICAgRWRpdCAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFdyYXAgICAgICA6IEJvb2xlYW47CisgICAgICAgICBCbGFuayAgICAgOiBCb29sZWFuOworICAgICAgICAgQXV0b19Ta2lwIDogQm9vbGVhbjsKKyAgICAgICAgIE51bGxfT2sgICA6IEJvb2xlYW47CisgICAgICAgICBQYXNzX09rICAgOiBCb29sZWFuOworICAgICAgICAgU3RhdGljICAgIDogQm9vbGVhbjsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIEZpZWxkX09wdGlvbl9TZXQpOwogCisgICBmb3IgRmllbGRfT3B0aW9uX1NldCB1c2UKKyAgICAgIHJlY29yZAorICAgICAgICAgVmlzaWJsZSAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX1ZJU0lCTEVfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX1ZJU0lCTEVfTGFzdDsKKyAgICAgICAgIEFjdGl2ZSAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19BQ1RJVkVfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX0FDVElWRV9MYXN0OworICAgICAgICAgUHVibGljICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX1BVQkxJQ19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fUFVCTElDX0xhc3Q7CisgICAgICAgICBFZGl0ICAgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk9fRURJVF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fRURJVF9MYXN0OworICAgICAgICAgV3JhcCAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX1dSQVBfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX1dSQVBfTGFzdDsKKyAgICAgICAgIEJsYW5rICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19CTEFOS19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fQkxBTktfTGFzdDsKKyAgICAgICAgIEF1dG9fU2tpcCBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19BVVRPU0tJUF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fQVVUT1NLSVBfTGFzdDsKKyAgICAgICAgIE51bGxfT2sgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19OVUxMT0tfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX05VTExPS19MYXN0OworICAgICAgICAgUGFzc19PayAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX1BBU1NPS19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fUEFTU09LX0xhc3Q7CisgICAgICAgICBTdGF0aWMgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk9fU1RBVElDX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuT19TVEFUSUNfTGFzdDsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgV2FybmluZ3MgKE9mZik7CisgICBmb3IgRmllbGRfT3B0aW9uX1NldCdTaXplIHVzZSBDdXJzZXNfQ29uc3RhbnRzLkZpZWxkX09wdGlvbnNfU2l6ZTsKICAgIHByYWdtYSBXYXJuaW5ncyAoT24pOwogCiAgICBmdW5jdGlvbiBEZWZhdWx0X0ZpZWxkX09wdGlvbnMgcmV0dXJuIEZpZWxkX09wdGlvbl9TZXQ7CiAgICAtLSAgVGhlIGluaXRpYWwgZGVmYXVsdHMgZm9yIHRoZSBmaWVsZCBvcHRpb25zLgogICAgcHJhZ21hIElubGluZSAoRGVmYXVsdF9GaWVsZF9PcHRpb25zKTsKIAotICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOwotaW5jbHVkZShgRm9ybV9PcHRfUmVwJylEbmwKKyAgIHR5cGUgRm9ybV9PcHRpb25fU2V0IGlzCisgICAgICByZWNvcmQKKyAgICAgICAgIE5MX092ZXJsb2FkIDogQm9vbGVhbjsKKyAgICAgICAgIEJTX092ZXJsb2FkIDogQm9vbGVhbjsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIEZvcm1fT3B0aW9uX1NldCk7CiAKKyAgIGZvciBGb3JtX09wdGlvbl9TZXQgdXNlCisgICAgICByZWNvcmQKKyAgICAgICAgIE5MX092ZXJsb2FkIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX05MX09WRVJMT0FEX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuT19OTF9PVkVSTE9BRF9MYXN0OworICAgICAgICAgQlNfT3ZlcmxvYWQgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk9fQlNfT1ZFUkxPQURfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX0JTX09WRVJMT0FEX0xhc3Q7CisgICAgICBlbmQgcmVjb3JkOworICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOworICAgZm9yIEZvcm1fT3B0aW9uX1NldCdTaXplIHVzZSBDdXJzZXNfQ29uc3RhbnRzLkZpZWxkX09wdGlvbnNfU2l6ZTsKICAgIHByYWdtYSBXYXJuaW5ncyAoT24pOwogCiAgICBmdW5jdGlvbiBEZWZhdWx0X0Zvcm1fT3B0aW9ucyByZXR1cm4gRm9ybV9PcHRpb25fU2V0OwpAQCAtODksNyArMTM4LDcgQEAKICAgIHR5cGUgRmllbGRfQXJyYXlfQWNjZXNzIGlzIGFjY2VzcyBGaWVsZF9BcnJheTsKIAogICAgcHJvY2VkdXJlIEZyZWUgKEZBICAgICAgICAgIDogaW4gb3V0IEZpZWxkX0FycmF5X0FjY2VzczsKLSAgICAgICAgICAgICAgICAgICBGcmVlX0ZpZWxkcyA6IGluIEJvb2xlYW4gOj0gRmFsc2UpOworICAgICAgICAgICAgICAgICAgIEZyZWVfRmllbGRzIDogQm9vbGVhbiA6PSBGYWxzZSk7CiAgICAtLSAgUmVsZWFzZSB0aGUgbWVtb3J5IGZvciBhbiBhbGxvY2F0ZWQgZmllbGQgYXJyYXkKICAgIC0tICBJZiBGcmVlX0ZpZWxkcyBpcyBUcnVlLCBjYWxsIERlbGV0ZSgpIGZvciBhbGwgdGhlIGZpZWxkcyBpbgogICAgLS0gIHRoZSBhcnJheS4KQEAgLTIyOCw3ICsyNzcsNyBAQAogICAgUkVRX05FWFRfQ0hPSUNFICA6IEZvcm1fUmVxdWVzdF9Db2RlIHJlbmFtZXMgRl9OZXh0X0Nob2ljZTsKICAgIFJFUV9QUkVWX0NIT0lDRSAgOiBGb3JtX1JlcXVlc3RfQ29kZSByZW5hbWVzIEZfUHJldmlvdXNfQ2hvaWNlOwogCi0gICBwcm9jZWR1cmUgUmVxdWVzdF9OYW1lIChLZXkgIDogaW4gRm9ybV9SZXF1ZXN0X0NvZGU7CisgICBwcm9jZWR1cmUgUmVxdWVzdF9OYW1lIChLZXkgIDogRm9ybV9SZXF1ZXN0X0NvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIDogb3V0IFN0cmluZyk7CiAKICAgIGZ1bmN0aW9uICBSZXF1ZXN0X05hbWUgKEtleSA6IEZvcm1fUmVxdWVzdF9Db2RlKSByZXR1cm4gU3RyaW5nOwpAQCAtMjg3LDggKzMzNiw4IEBACiAgICAtLSAgTUFOUEFHRShgZm9ybV9maWVsZF9qdXN0LjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX2p1c3QoKScsYFNldF9KdXN0aWZpY2F0aW9uJykKLSAgIHByb2NlZHVyZSBTZXRfSnVzdGlmaWNhdGlvbiAoRmxkICA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IDogaW4gRmllbGRfSnVzdGlmaWNhdGlvbiA6PSBOb25lKTsKKyAgIHByb2NlZHVyZSBTZXRfSnVzdGlmaWNhdGlvbiAoRmxkICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IDogRmllbGRfSnVzdGlmaWNhdGlvbiA6PSBOb25lKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9KdXN0aWZpY2F0aW9uKTsKIApAQCAtMzAxLDI5ICszNTAsMjkgQEAKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX2J1ZmZlcigpJyxgU2V0X0J1ZmZlcicpCiAgICBwcm9jZWR1cmUgU2V0X0J1ZmZlcgotICAgICAoRmxkICAgIDogaW4gRmllbGQ7Ci0gICAgICBCdWZmZXIgOiBpbiBCdWZmZXJfTnVtYmVyIDo9IEJ1ZmZlcl9OdW1iZXInRmlyc3Q7Ci0gICAgICBTdHIgICAgOiBpbiBTdHJpbmcpOworICAgICAoRmxkICAgIDogRmllbGQ7CisgICAgICBCdWZmZXIgOiBCdWZmZXJfTnVtYmVyIDo9IEJ1ZmZlcl9OdW1iZXInRmlyc3Q7CisgICAgICBTdHIgICAgOiBTdHJpbmcpOwogICAgLS0gIEFLQQogICAgLS0gIE5vdCBpbmxpbmVkCiAKICAgIC0tICBBTkNIT1IoYGZpZWxkX2J1ZmZlcigpJyxgR2V0X0J1ZmZlcicpCiAgICBwcm9jZWR1cmUgR2V0X0J1ZmZlcgotICAgICAoRmxkICAgIDogaW4gRmllbGQ7Ci0gICAgICBCdWZmZXIgOiBpbiBCdWZmZXJfTnVtYmVyIDo9IEJ1ZmZlcl9OdW1iZXInRmlyc3Q7CisgICAgIChGbGQgICAgOiBGaWVsZDsKKyAgICAgIEJ1ZmZlciA6IEJ1ZmZlcl9OdW1iZXIgOj0gQnVmZmVyX051bWJlcidGaXJzdDsKICAgICAgIFN0ciAgICA6IG91dCBTdHJpbmcpOwogICAgLS0gIEFLQQogCiAgICBmdW5jdGlvbiBHZXRfQnVmZmVyCi0gICAgIChGbGQgICAgOiBpbiBGaWVsZDsKLSAgICAgIEJ1ZmZlciA6IGluIEJ1ZmZlcl9OdW1iZXIgOj0gQnVmZmVyX051bWJlcidGaXJzdCkgcmV0dXJuIFN0cmluZzsKKyAgICAgKEZsZCAgICA6IEZpZWxkOworICAgICAgQnVmZmVyIDogQnVmZmVyX051bWJlciA6PSBCdWZmZXJfTnVtYmVyJ0ZpcnN0KSByZXR1cm4gU3RyaW5nOwogICAgLS0gIEFLQQogICAgLS0gIFNhbWUgYnV0IGFzIGZ1bmN0aW9uCiAgICBwcmFnbWEgSW5saW5lIChHZXRfQnVmZmVyKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX3N0YXR1cygpJyxgU2V0X1N0YXR1cycpCi0gICBwcm9jZWR1cmUgU2V0X1N0YXR1cyAoRmxkICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgIHByb2NlZHVyZSBTZXRfU3RhdHVzIChGbGQgICAgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1N0YXR1cyk7CiAKQEAgLTMzMywyOSArMzgyLDI5IEBACiAgICBwcmFnbWEgSW5saW5lIChDaGFuZ2VkKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX21heCgpJyxgU2V0X01heGltdW1fU2l6ZScpCi0gICBwcm9jZWR1cmUgU2V0X01heGltdW1fU2l6ZSAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4IDogaW4gTmF0dXJhbCA6PSAwKTsKKyAgIHByb2NlZHVyZSBTZXRfTWF4aW11bV9TaXplIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggOiBOYXR1cmFsIDo9IDApOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X01heGltdW1fU2l6ZSk7CiAKICAgIC0tICBNQU5QQUdFKGBmb3JtX2ZpZWxkX29wdHMuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfZmllbGRfb3B0cygpJyxgU2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChGbGQgICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBpbiBGaWVsZF9PcHRpb25fU2V0KTsKKyAgIHByb2NlZHVyZSBTZXRfT3B0aW9ucyAoRmxkICAgICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogRmllbGRfT3B0aW9uX1NldCk7CiAgICAtLSAgQUtBCiAgICAtLSAgQW4gb3ZlcmxvYWRlZCB2ZXJzaW9uIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZQogCiAgICAtLSAgQU5DSE9SKGBmaWVsZF9vcHRzX29uKCknLGBTd2l0Y2hfT3B0aW9ucycpCi0gICBwcm9jZWR1cmUgU3dpdGNoX09wdGlvbnMgKEZsZCAgICAgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIEZpZWxkX09wdGlvbl9TZXQ7CisgICBwcm9jZWR1cmUgU3dpdGNoX09wdGlvbnMgKEZsZCAgICAgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IEZpZWxkX09wdGlvbl9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uICAgICAgOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBmaWVsZF9vcHRzX29mZigpJykKICAgIC0tICBBbiBvdmVybG9hZGVkIHZlcnNpb24gaXMgZGVmaW5lZCBsYXRlci4gUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlCiAKICAgIC0tICBBTkNIT1IoYGZpZWxkX29wdHMoKScsYEdldF9PcHRpb25zJykKLSAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoRmxkICAgICA6IGluICBGaWVsZDsKKyAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoRmxkICAgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IEZpZWxkX09wdGlvbl9TZXQpOwogICAgLS0gIEFLQQogCkBAIC0zNjksMTkgKzQxOCwxOSBAQAogCiAgICAtLSAgQU5DSE9SKGBzZXRfZmllbGRfZm9yZSgpJyxgU2V0X0ZvcmVncm91bmQnKQogICAgcHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kCi0gICAgIChGbGQgICA6IGluIEZpZWxkOwotICAgICAgRm9yZSAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CisgICAgIChGbGQgICA6IEZpZWxkOworICAgICAgRm9yZSAgOiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87CisgICAgICBDb2xvciA6IENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfRm9yZWdyb3VuZCk7CiAKICAgIC0tICBBTkNIT1IoYGZpZWxkX2ZvcmUoKScsYEZvcmVncm91bmQnKQotICAgcHJvY2VkdXJlIEZvcmVncm91bmQgKEZsZCAgOiBpbiAgRmllbGQ7CisgICBwcm9jZWR1cmUgRm9yZWdyb3VuZCAoRmxkICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGBmaWVsZF9mb3JlKCknLGBGb3JlZ3JvdW5kJykKLSAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChGbGQgICA6IGluICBGaWVsZDsKKyAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChGbGQgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIDogb3V0IENvbG9yX1BhaXIpOwogICAgLS0gIEFLQQpAQCAtMzg5LDMyICs0MzgsMzIgQEAKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX2JhY2soKScsYFNldF9CYWNrZ3JvdW5kJykKICAgIHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZAotICAgICAoRmxkICAgOiBpbiBGaWVsZDsKLSAgICAgIEJhY2sgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgQ29sb3IgOiBpbiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOworICAgICAoRmxkICAgOiBGaWVsZDsKKyAgICAgIEJhY2sgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0JhY2tncm91bmQpOwogCiAgICAtLSAgQU5DSE9SKGBmaWVsZF9iYWNrKCknLGBCYWNrZ3JvdW5kJykKLSAgIHByb2NlZHVyZSBCYWNrZ3JvdW5kIChGbGQgIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKEZsZCAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0KTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgZmllbGRfYmFjaygpJyxgQmFja2dyb3VuZCcpCi0gICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoRmxkICAgOiBpbiAgRmllbGQ7CisgICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoRmxkICAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrICA6IG91dCBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA6IG91dCBDb2xvcl9QYWlyKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEJhY2tncm91bmQpOwogCiAgICAtLSAgQU5DSE9SKGBzZXRfZmllbGRfcGFkKCknLGBTZXRfUGFkX0NoYXJhY3RlcicpCi0gICBwcm9jZWR1cmUgU2V0X1BhZF9DaGFyYWN0ZXIgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWQgOiBpbiBDaGFyYWN0ZXIgOj0gU3BhY2UpOworICAgcHJvY2VkdXJlIFNldF9QYWRfQ2hhcmFjdGVyIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogQ2hhcmFjdGVyIDo9IFNwYWNlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9QYWRfQ2hhcmFjdGVyKTsKIAogICAgLS0gIEFOQ0hPUihgZmllbGRfcGFkKCknLGBQYWRfQ2hhcmFjdGVyJykKLSAgIHByb2NlZHVyZSBQYWRfQ2hhcmFjdGVyIChGbGQgOiBpbiAgRmllbGQ7CisgICBwcm9jZWR1cmUgUGFkX0NoYXJhY3RlciAoRmxkIDogRmllbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogb3V0IENoYXJhY3Rlcik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChQYWRfQ2hhcmFjdGVyKTsKQEAgLTQyMiw3ICs0NzEsNyBAQAogICAgLS0gIE1BTlBBR0UoYGZvcm1fZmllbGRfaW5mby4zeCcpCiAKICAgIC0tICBBTkNIT1IoYGZpZWxkX2luZm8oKScsYEluZm8nKQotICAgcHJvY2VkdXJlIEluZm8gKEZsZCAgICAgICAgICAgICAgICA6IGluICBGaWVsZDsKKyAgIHByb2NlZHVyZSBJbmZvIChGbGQgICAgICAgICAgICAgICAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICBMaW5lcyAgICAgICAgICAgICAgOiBvdXQgTGluZV9Db3VudDsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICAgICAgICAgOiBvdXQgQ29sdW1uX0NvdW50OwogICAgICAgICAgICAgICAgICAgIEZpcnN0X1JvdyAgICAgICAgICA6IG91dCBMaW5lX1Bvc2l0aW9uOwpAQCAtNDMzLDcgKzQ4Miw3IEBACiAgICBwcmFnbWEgSW5saW5lIChJbmZvKTsKIAogICAgLS0gIEFOQ0hPUihgZHluYW1pY19maWVsZF9pbmZvKCknLGBEeW5hbWljX0luZm8nKQotICAgcHJvY2VkdXJlIER5bmFtaWNfSW5mbyAoRmxkICAgICA6IGluIEZpZWxkOworICAgcHJvY2VkdXJlIER5bmFtaWNfSW5mbyAoRmxkICAgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgIDogb3V0IE5hdHVyYWwpOwpAQCAtNDQzLDggKzQ5Miw4IEBACiAgICAtLSAgTUFOUEFHRShgZm9ybV93aW4uM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfZm9ybV93aW4oKScsYFNldF9XaW5kb3cnKQotICAgcHJvY2VkdXJlIFNldF9XaW5kb3cgKEZybSA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgV2luIDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBTZXRfV2luZG93IChGcm0gOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfV2luZG93KTsKIApAQCAtNDU0LDggKzUwMyw4IEBACiAgICBwcmFnbWEgSW5saW5lIChHZXRfV2luZG93KTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2Zvcm1fc3ViKCknLGBTZXRfU3ViX1dpbmRvdycpCi0gICBwcm9jZWR1cmUgU2V0X1N1Yl9XaW5kb3cgKEZybSA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgU2V0X1N1Yl9XaW5kb3cgKEZybSA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfU3ViX1dpbmRvdyk7CiAKQEAgLTQ2NSw3ICs1MTQsNyBAQAogICAgcHJhZ21hIElubGluZSAoR2V0X1N1Yl9XaW5kb3cpOwogCiAgICAtLSAgQU5DSE9SKGBzY2FsZV9mb3JtKCknLGBTY2FsZScpCi0gICBwcm9jZWR1cmUgU2NhbGUgKEZybSAgICAgOiBpbiBGb3JtOworICAgcHJvY2VkdXJlIFNjYWxlIChGcm0gICAgIDogRm9ybTsKICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogb3V0IENvbHVtbl9Db3VudCk7CiAgICAtLSAgQUtBCkBAIC00NzMsMzAgKzUyMiwzMCBAQAogCiAgICAtLSAgTUFOUEFHRShgZm9ybV9ob29rLjN4JykKIAotICAgdHlwZSBGb3JtX0hvb2tfRnVuY3Rpb24gaXMgYWNjZXNzIHByb2NlZHVyZSAoRnJtIDogaW4gRm9ybSk7CisgICB0eXBlIEZvcm1fSG9va19GdW5jdGlvbiBpcyBhY2Nlc3MgcHJvY2VkdXJlIChGcm0gOiBGb3JtKTsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBGb3JtX0hvb2tfRnVuY3Rpb24pOwogCiAgICAtLSAgQU5DSE9SKGBzZXRfZmllbGRfaW5pdCgpJyxgU2V0X0ZpZWxkX0luaXRfSG9vaycpCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX0luaXRfSG9vayAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIEZvcm1fSG9va19GdW5jdGlvbik7CisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX0luaXRfSG9vayAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IEZvcm1fSG9va19GdW5jdGlvbik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfRmllbGRfSW5pdF9Ib29rKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2ZpZWxkX3Rlcm0oKScsYFNldF9GaWVsZF9UZXJtX0hvb2snKQotICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UZXJtX0hvb2sgKEZybSAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBpbiBGb3JtX0hvb2tfRnVuY3Rpb24pOworICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UZXJtX0hvb2sgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBGb3JtX0hvb2tfRnVuY3Rpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0ZpZWxkX1Rlcm1fSG9vayk7CiAKICAgIC0tICBBTkNIT1IoYHNldF9mb3JtX2luaXQoKScsYFNldF9Gb3JtX0luaXRfSG9vaycpCi0gICBwcm9jZWR1cmUgU2V0X0Zvcm1fSW5pdF9Ib29rIChGcm0gIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBpbiBGb3JtX0hvb2tfRnVuY3Rpb24pOworICAgcHJvY2VkdXJlIFNldF9Gb3JtX0luaXRfSG9vayAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Gb3JtX0luaXRfSG9vayk7CiAKICAgIC0tICBBTkNIT1IoYHNldF9mb3JtX3Rlcm0oKScsYFNldF9Gb3JtX1Rlcm1fSG9vaycpCi0gICBwcm9jZWR1cmUgU2V0X0Zvcm1fVGVybV9Ib29rIChGcm0gIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBpbiBGb3JtX0hvb2tfRnVuY3Rpb24pOworICAgcHJvY2VkdXJlIFNldF9Gb3JtX1Rlcm1fSG9vayAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Gb3JtX1Rlcm1fSG9vayk7CiAKQEAgLTUyMywxNCArNTcyLDE0IEBACiAgICAtLSAgTUFOUEFHRShgZm9ybV9maWVsZC4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHNldF9mb3JtX2ZpZWxkcygpJyxgUmVkZWZpbmUnKQotICAgcHJvY2VkdXJlIFJlZGVmaW5lIChGcm0gIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgRmxkcyA6IGluIEZpZWxkX0FycmF5X0FjY2Vzcyk7CisgICBwcm9jZWR1cmUgUmVkZWZpbmUgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICBGbGRzIDogRmllbGRfQXJyYXlfQWNjZXNzKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFJlZGVmaW5lKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2Zvcm1fZmllbGRzKCknLGBTZXRfRmllbGRzJykKLSAgIHByb2NlZHVyZSBTZXRfRmllbGRzIChGcm0gIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBGbGRzIDogaW4gRmllbGRfQXJyYXlfQWNjZXNzKSByZW5hbWVzIFJlZGVmaW5lOworICAgcHJvY2VkdXJlIFNldF9GaWVsZHMgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgIEZsZHMgOiBGaWVsZF9BcnJheV9BY2Nlc3MpIHJlbmFtZXMgUmVkZWZpbmU7CiAgICAtLSAgQUtBCiAgICAtLSAgcHJhZ21hIElubGluZSAoU2V0X0ZpZWxkcyk7CiAKQEAgLTU0Niw5ICs1OTUsOSBAQAogICAgcHJhZ21hIElubGluZSAoRmllbGRfQ291bnQpOwogCiAgICAtLSAgQU5DSE9SKGBtb3ZlX2ZpZWxkKCknLGBNb3ZlJykKLSAgIHByb2NlZHVyZSBNb3ZlIChGbGQgICAgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbik7CisgICBwcm9jZWR1cmUgTW92ZSAoRmxkICAgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoTW92ZSk7CiAKQEAgLTU3NCwyMSArNjIzLDIxIEBACiAgICAtLSAgTUFOUEFHRShgZm9ybV9vcHRzLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X2Zvcm1fb3B0cygpJyxgU2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChGcm0gICAgIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIEZvcm1fT3B0aW9uX1NldCk7CisgICBwcm9jZWR1cmUgU2V0X09wdGlvbnMgKEZybSAgICAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogRm9ybV9PcHRpb25fU2V0KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9PcHRpb25zKTsKIAogICAgLS0gIEFOQ0hPUihgZm9ybV9vcHRzX29uKCknLGBTd2l0Y2hfT3B0aW9ucycpCi0gICBwcm9jZWR1cmUgU3dpdGNoX09wdGlvbnMgKEZybSAgICAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogaW4gRm9ybV9PcHRpb25fU2V0OworICAgcHJvY2VkdXJlIFN3aXRjaF9PcHRpb25zIChGcm0gICAgIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IEZvcm1fT3B0aW9uX1NldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGZvcm1fb3B0c19vZmYoKScpCiAgICBwcmFnbWEgSW5saW5lIChTd2l0Y2hfT3B0aW9ucyk7CiAKICAgIC0tICBBTkNIT1IoYGZvcm1fb3B0cygpJyxgR2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIEdldF9PcHRpb25zIChGcm0gICAgIDogaW4gIEZvcm07CisgICBwcm9jZWR1cmUgR2V0X09wdGlvbnMgKEZybSAgICAgOiBGb3JtOwogICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IEZvcm1fT3B0aW9uX1NldCk7CiAgICAtLSAgQUtBCiAKQEAgLTYwMCw4ICs2NDksOCBAQAogICAgLS0gIE1BTlBBR0UoYGZvcm1fcG9zdC4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHBvc3RfZm9ybSgpJyxgUG9zdCcpCi0gICBwcm9jZWR1cmUgUG9zdCAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgUG9zdCA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICBwcm9jZWR1cmUgUG9zdCAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgUG9zdCA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHVucG9zdF9mb3JtKCknKQogICAgcHJhZ21hIElubGluZSAoUG9zdCk7CkBAIC02NDMsMTkgKzY5MiwxOSBAQAogICAgdHlwZSBQYWdlX051bWJlciBpcyBuZXcgTmF0dXJhbDsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2N1cnJlbnRfZmllbGQoKScsYFNldF9DdXJyZW50JykKLSAgIHByb2NlZHVyZSBTZXRfQ3VycmVudCAoRnJtIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmxkIDogaW4gRmllbGQpOworICAgcHJvY2VkdXJlIFNldF9DdXJyZW50IChGcm0gOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICBGbGQgOiBGaWVsZCk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfQ3VycmVudCk7CiAKICAgIC0tICBBTkNIT1IoYGN1cnJlbnRfZmllbGQoKScsYEN1cnJlbnQnKQotICAgZnVuY3Rpb24gQ3VycmVudCAoRnJtIDogaW4gRm9ybSkgcmV0dXJuIEZpZWxkOworICAgZnVuY3Rpb24gQ3VycmVudCAoRnJtIDogRm9ybSkgcmV0dXJuIEZpZWxkOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoQ3VycmVudCk7CiAKICAgIC0tICBBTkNIT1IoYHNldF9mb3JtX3BhZ2UoKScsYFNldF9QYWdlJykKLSAgIHByb2NlZHVyZSBTZXRfUGFnZSAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgIFBhZ2UgOiBpbiBQYWdlX051bWJlciA6PSBQYWdlX051bWJlcidGaXJzdCk7CisgICBwcm9jZWR1cmUgU2V0X1BhZ2UgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICBQYWdlIDogUGFnZV9OdW1iZXIgOj0gUGFnZV9OdW1iZXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1BhZ2UpOwogCkBAIC02NzUsOCArNzI0LDggQEAKICAgIC0tICBNQU5QQUdFKGBmb3JtX25ld19wYWdlLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X25ld19wYWdlKCknLGBTZXRfTmV3X1BhZ2UnKQotICAgcHJvY2VkdXJlIFNldF9OZXdfUGFnZSAoRmxkICAgICAgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld19QYWdlIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgIHByb2NlZHVyZSBTZXRfTmV3X1BhZ2UgKEZsZCAgICAgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdfUGFnZSA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfTmV3X1BhZ2UpOwogCmRpZmYgLS1naXQgYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZHMubTQgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZHMubTQKaW5kZXggMTRiMjQ2Ni4uNGZmYTQxYiAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRzLm00CisrKyBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLmFkcy5tNApAQCAtMTAsNyArMTAsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM4LDggKzM4LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTYgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuMTcgJAorLS0gICREYXRlOiAyMDA5LzEyLzI2IDE3OjMxOjM1ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01NiwxOCArNTYsMTggQEAKICAgIC0tICBNQU5QQUdFKGBtaXRlbV91c2VycHRyLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X2l0ZW1fdXNlcnB0cicsYFNldF9Vc2VyX0RhdGEnKQotICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKEl0bSAgOiBpbiBJdGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBVc2VyX0FjY2Vzcyk7CisgICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoSXRtICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFVzZXJfQWNjZXNzKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Vc2VyX0RhdGEpOwogCiAgICAtLSAgQU5DSE9SKGBpdGVtX3VzZXJwdHInLGBHZXRfVXNlcl9EYXRhJykKLSAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChJdG0gIDogaW4gIEl0ZW07CisgICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoSXRtICA6IEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IG91dCBVc2VyX0FjY2Vzcyk7CiAgICAtLSAgQUtBCiAKICAgIC0tICBBTkNIT1IoYGl0ZW1fdXNlcnB0cicsYEdldF9Vc2VyX0RhdGEnKQotICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YSAoSXRtICA6IGluICBJdGVtKSByZXR1cm4gVXNlcl9BY2Nlc3M7CisgICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChJdG0gIDogSXRlbSkgcmV0dXJuIFVzZXJfQWNjZXNzOwogICAgLS0gIEFLQQogICAgLS0gIFNhbWUgYXMgZnVuY3Rpb24KICAgIHByYWdtYSBJbmxpbmUgKEdldF9Vc2VyX0RhdGEpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRzLm00CmluZGV4IDY5NjE0OWIuLjkxMzhiYTYgMTAwNjQ0Ci0tLSBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZHMubTQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zOCw3ICszOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE0ICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTUxLDE4ICs1MSwxOCBAQAogICAgLS0gIE1BTlBBR0UoYG1lbnVfdXNlcnB0ci4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHNldF9tZW51X3VzZXJwdHInLGBTZXRfVXNlcl9EYXRhJykKLSAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChNZW4gIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gVXNlcl9BY2Nlc3MpOworICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKE1lbiAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2Vzcyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfVXNlcl9EYXRhKTsKIAogICAgLS0gIEFOQ0hPUihgbWVudV91c2VycHRyJyxgR2V0X1VzZXJfRGF0YScpCi0gICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoTWVuICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKE1lbiAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBvdXQgVXNlcl9BY2Nlc3MpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGBtZW51X3VzZXJwdHInLGBHZXRfVXNlcl9EYXRhJykKLSAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKE1lbiAgOiBpbiAgTWVudSkgcmV0dXJuIFVzZXJfQWNjZXNzOworICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YSAoTWVuICA6IE1lbnUpIHJldHVybiBVc2VyX0FjY2VzczsKICAgIC0tICBBS0EKICAgIC0tICBTYW1lIGFzIGZ1bmN0aW9uCiAgICBwcmFnbWEgSW5saW5lIChHZXRfVXNlcl9EYXRhKTsKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkcy5tNCBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkcy5tNAppbmRleCAxNzk5M2UxLi4wYWQ5YzQ1IDEwMDY0NAotLS0gYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHMubTQKKysrIGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzLm00CkBAIC0xMCw3ICsxMCw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzgsMTggKzM4LDE3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjI3ICQKLS0tICAkRGF0ZTogMjAwNy8wNS8wNSAyMDoyMDo1MiAkCistLSAgJFJldmlzaW9uOiAxLjMxICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTo1NyAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWluY2x1ZGUoYE1lbnVfQmFzZV9EZWZzJykKIHdpdGggU3lzdGVtOwogd2l0aCBBZGEuQ2hhcmFjdGVycy5MYXRpbl8xOwogCiBwYWNrYWdlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTWVudXMgaXMKICAgIHByYWdtYSBQcmVlbGFib3JhdGUgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTWVudXMpOwotaW5jbHVkZShgTWVudV9MaW5rZXJfT3B0aW9ucycpZG5sCi1pbmNsdWRlKGBMaW5rZXJfT3B0aW9ucycpCisgICBwcmFnbWEgTGlua2VyX09wdGlvbnMgKCItbG1lbnUiICYgQ3Vyc2VzX0NvbnN0YW50cy5ERlRfQVJHX1NVRkZJWCk7CisKICAgIFNwYWNlIDogQ2hhcmFjdGVyIHJlbmFtZXMgQWRhLkNoYXJhY3RlcnMuTGF0aW5fMS5TcGFjZTsKIAogICAgdHlwZSBJdGVtIGlzIHByaXZhdGU7CkBAIC0xMDIsNyArMTAxLDcgQEAKICAgIFJFUV9ORVhUX01BVENIICAgIDogTWVudV9SZXF1ZXN0X0NvZGUgcmVuYW1lcyBNX05leHRfTWF0Y2g7CiAgICBSRVFfUFJFVl9NQVRDSCAgICA6IE1lbnVfUmVxdWVzdF9Db2RlIHJlbmFtZXMgTV9QcmV2aW91c19NYXRjaDsKIAotICAgcHJvY2VkdXJlIFJlcXVlc3RfTmFtZSAoS2V5ICA6IGluIE1lbnVfUmVxdWVzdF9Db2RlOworICAgcHJvY2VkdXJlIFJlcXVlc3RfTmFtZSAoS2V5ICA6IE1lbnVfUmVxdWVzdF9Db2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA6IG91dCBTdHJpbmcpOwogCiAgICBmdW5jdGlvbiAgUmVxdWVzdF9OYW1lIChLZXkgOiBNZW51X1JlcXVlc3RfQ29kZSkgcmV0dXJuIFN0cmluZzsKQEAgLTExNiw5ICsxMTUsMzQgQEAKICAgIC0tCiAgICAtLSAgTWVudSBvcHRpb25zCiAgICAtLQotICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOwotaW5jbHVkZShgTWVudV9PcHRfUmVwJylkbmwKKyAgIHR5cGUgTWVudV9PcHRpb25fU2V0IGlzCisgICAgICByZWNvcmQKKyAgICAgICAgIE9uZV9WYWx1ZWQgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFNob3dfRGVzY3JpcHRpb25zIDogQm9vbGVhbjsKKyAgICAgICAgIFJvd19NYWpvcl9PcmRlciAgIDogQm9vbGVhbjsKKyAgICAgICAgIElnbm9yZV9DYXNlICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFNob3dfTWF0Y2hlcyAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIE5vbl9DeWNsaWMgICAgICAgIDogQm9vbGVhbjsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIE1lbnVfT3B0aW9uX1NldCk7CiAKKyAgIGZvciBNZW51X09wdGlvbl9TZXQgdXNlCisgICAgICByZWNvcmQKKyAgICAgICAgIE9uZV9WYWx1ZWQgICAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX09ORVZBTFVFX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuT19PTkVWQUxVRV9MYXN0OworICAgICAgICAgU2hvd19EZXNjcmlwdGlvbnMgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk9fU0hPV0RFU0NfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX1NIT1dERVNDX0xhc3Q7CisgICAgICAgICBSb3dfTWFqb3JfT3JkZXIgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19ST1dNQUpPUl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fUk9XTUFKT1JfTGFzdDsKKyAgICAgICAgIElnbm9yZV9DYXNlICAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX0lHTk9SRUNBU0VfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX0lHTk9SRUNBU0VfTGFzdDsKKyAgICAgICAgIFNob3dfTWF0Y2hlcyAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5PX1NIT1dNQVRDSF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk9fU0hPV01BVENIX0xhc3Q7CisgICAgICAgICBOb25fQ3ljbGljICAgICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuT19OT05DWUNMSUNfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5PX05PTkNZQ0xJQ19MYXN0OworICAgICAgZW5kIHJlY29yZDsKKyAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsKKyAgIGZvciBNZW51X09wdGlvbl9TZXQnU2l6ZSB1c2UgQ3Vyc2VzX0NvbnN0YW50cy5NZW51X09wdGlvbnNfU2l6ZTsKICAgIHByYWdtYSBXYXJuaW5ncyAoT24pOwogCiAgICBmdW5jdGlvbiBEZWZhdWx0X01lbnVfT3B0aW9ucyByZXR1cm4gTWVudV9PcHRpb25fU2V0OwpAQCAtMTI3LDkgKzE1MSwxOSBAQAogICAgLS0KICAgIC0tICBJdGVtIG9wdGlvbnMKICAgIC0tCi0gICBwcmFnbWEgV2FybmluZ3MgKE9mZik7Ci1pbmNsdWRlKGBJdGVtX1JlcCcpZG5sCisgICB0eXBlIEl0ZW1fT3B0aW9uX1NldCBpcworICAgICAgcmVjb3JkCisgICAgICAgICBTZWxlY3RhYmxlIDogQm9vbGVhbjsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIEl0ZW1fT3B0aW9uX1NldCk7CiAKKyAgIGZvciBJdGVtX09wdGlvbl9TZXQgdXNlCisgICAgICByZWNvcmQKKyAgICAgICAgIFNlbGVjdGFibGUgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk9fU0VMRUNUQUJMRV9GaXJzdAorICAgICAgICAgICAuLiAgQ3Vyc2VzX0NvbnN0YW50cy5PX1NFTEVDVEFCTEVfTGFzdDsKKyAgICAgIGVuZCByZWNvcmQ7CisgICBwcmFnbWEgV2FybmluZ3MgKE9mZik7CisgICBmb3IgSXRlbV9PcHRpb25fU2V0J1NpemUgdXNlIEN1cnNlc19Db25zdGFudHMuSXRlbV9PcHRpb25zX1NpemU7CiAgICBwcmFnbWEgV2FybmluZ3MgKE9uKTsKIAogICAgZnVuY3Rpb24gRGVmYXVsdF9JdGVtX09wdGlvbnMgcmV0dXJuIEl0ZW1fT3B0aW9uX1NldDsKQEAgLTE3Miw4ICsyMDYsOCBAQAogICAgLS0gIE1BTlBBR0UoYG1pdGVtX3ZhbHVlLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X2l0ZW1fdmFsdWUoKScsYFNldF9WYWx1ZScpCi0gICBwcm9jZWR1cmUgU2V0X1ZhbHVlIChJdG0gICA6IGluIEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICBwcm9jZWR1cmUgU2V0X1ZhbHVlIChJdG0gICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfVmFsdWUpOwogCkBAIC0xOTIsMTQgKzIyNiwxNCBAQAogICAgLS0gIE1BTlBBR0UoYG1pdGVtX29wdHMuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfaXRlbV9vcHRzKCknLGBTZXRfT3B0aW9ucycpCi0gICBwcm9jZWR1cmUgU2V0X09wdGlvbnMgKEl0bSAgICAgOiBpbiBJdGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogaW4gSXRlbV9PcHRpb25fU2V0KTsKKyAgIHByb2NlZHVyZSBTZXRfT3B0aW9ucyAoSXRtICAgICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBJdGVtX09wdGlvbl9TZXQpOwogICAgLS0gIEFLQQogICAgLS0gIEFuIG92ZXJsb2FkZWQgU2V0X09wdGlvbnMgaXMgZGVmaW5lZCBsYXRlci4gUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlCiAKICAgIC0tICBBTkNIT1IoYGl0ZW1fb3B0c19vbigpJyxgU3dpdGNoX09wdGlvbnMnKQotICAgcHJvY2VkdXJlIFN3aXRjaF9PcHRpb25zIChJdG0gICAgIDogaW4gSXRlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIEl0ZW1fT3B0aW9uX1NldDsKKyAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoSXRtICAgICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBJdGVtX09wdGlvbl9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uICAgICAgOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBpdGVtX29wdHNfb2ZmKCknKQpAQCAtMjA3LDcgKzI0MSw3IEBACiAgICAtLSAgUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlCiAKICAgIC0tICBBTkNIT1IoYGl0ZW1fb3B0cygpJyxgR2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIEdldF9PcHRpb25zIChJdG0gICAgIDogaW4gIEl0ZW07CisgICBwcm9jZWR1cmUgR2V0X09wdGlvbnMgKEl0bSAgICAgOiBJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IEl0ZW1fT3B0aW9uX1NldCk7CiAgICAtLSAgQUtBCiAKQEAgLTIxOSw3ICsyNTMsNyBAQAogICAgLS0gIE1BTlBBR0UoYG1pdGVtX25hbWUuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBpdGVtX25hbWUoKScsYE5hbWUnKQotICAgcHJvY2VkdXJlIE5hbWUgKEl0bSAgOiBpbiBJdGVtOworICAgcHJvY2VkdXJlIE5hbWUgKEl0bSAgOiBJdGVtOwogICAgICAgICAgICAgICAgICAgIE5hbWUgOiBvdXQgU3RyaW5nKTsKICAgIC0tICBBS0EKICAgIGZ1bmN0aW9uICBOYW1lIChJdG0gOiBJdGVtKSByZXR1cm4gU3RyaW5nOwpAQCAtMjI4LDcgKzI2Miw3IEBACiAgICBwcmFnbWEgSW5saW5lIChOYW1lKTsKIAogICAgLS0gIEFOQ0hPUihgaXRlbV9kZXNjcmlwdGlvbigpOycsYERlc2NyaXB0aW9uJykKLSAgIHByb2NlZHVyZSBEZXNjcmlwdGlvbiAoSXRtICAgICAgICAgOiBpbiBJdGVtOworICAgcHJvY2VkdXJlIERlc2NyaXB0aW9uIChJdG0gICAgICAgICA6IEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uIDogb3V0IFN0cmluZyk7CiAgICAtLSAgQUtBCiAKQEAgLTI0MCw4ICsyNzQsOCBAQAogICAgLS0gIE1BTlBBR0UoYG1pdGVtX2N1cnJlbnQuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfY3VycmVudF9pdGVtKCknLGBTZXRfQ3VycmVudCcpCi0gICBwcm9jZWR1cmUgU2V0X0N1cnJlbnQgKE1lbiA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEl0bSA6IGluIEl0ZW0pOworICAgcHJvY2VkdXJlIFNldF9DdXJyZW50IChNZW4gOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICBJdG0gOiBJdGVtKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9DdXJyZW50KTsKIApAQCAtMjUxLDggKzI4NSw4IEBACiAgICBwcmFnbWEgSW5saW5lIChDdXJyZW50KTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X3RvcF9yb3coKScsYFNldF9Ub3BfUm93JykKLSAgIHByb2NlZHVyZSBTZXRfVG9wX1JvdyAoTWVuICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgOiBpbiBMaW5lX1Bvc2l0aW9uKTsKKyAgIHByb2NlZHVyZSBTZXRfVG9wX1JvdyAoTWVuICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgOiBMaW5lX1Bvc2l0aW9uKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Ub3BfUm93KTsKIApAQCAtMjcyLDggKzMwNiw4IEBACiAgICAtLSAgTUFOUEFHRShgbWVudV9wb3N0LjN4JykKIAogICAgLS0gIEFOQ0hPUihgcG9zdF9tZW51KCknLGBQb3N0JykKLSAgIHByb2NlZHVyZSBQb3N0IChNZW4gIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICBQb3N0IDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgIHByb2NlZHVyZSBQb3N0IChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICBQb3N0IDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgdW5wb3N0X21lbnUoKScpCiAgICBwcmFnbWEgSW5saW5lIChQb3N0KTsKQEAgLTI4MSwyMSArMzE1LDIxIEBACiAgICAtLSAgTUFOUEFHRShgbWVudV9vcHRzLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfb3B0cygpJyxgU2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChNZW4gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIE1lbnVfT3B0aW9uX1NldCk7CisgICBwcm9jZWR1cmUgU2V0X09wdGlvbnMgKE1lbiAgICAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogTWVudV9PcHRpb25fU2V0KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9PcHRpb25zKTsKIAogICAgLS0gIEFOQ0hPUihgbWVudV9vcHRzX29uKCknLGBTd2l0Y2hfT3B0aW9ucycpCi0gICBwcm9jZWR1cmUgU3dpdGNoX09wdGlvbnMgKE1lbiAgICAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogaW4gTWVudV9PcHRpb25fU2V0OworICAgcHJvY2VkdXJlIFN3aXRjaF9PcHRpb25zIChNZW4gICAgIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IE1lbnVfT3B0aW9uX1NldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG1lbnVfb3B0c19vZmYoKScpCiAgICBwcmFnbWEgSW5saW5lIChTd2l0Y2hfT3B0aW9ucyk7CiAKICAgIC0tICBBTkNIT1IoYG1lbnVfb3B0cygpJyxgR2V0X09wdGlvbnMnKQotICAgcHJvY2VkdXJlIEdldF9PcHRpb25zIChNZW4gICAgIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgR2V0X09wdGlvbnMgKE1lbiAgICAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IE1lbnVfT3B0aW9uX1NldCk7CiAgICAtLSAgQUtBCiAKQEAgLTMwNyw4ICszNDEsOCBAQAogICAgLS0gIE1BTlBBR0UoYG1lbnVfd2luLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfd2luKCknLGBTZXRfV2luZG93JykKLSAgIHByb2NlZHVyZSBTZXRfV2luZG93IChNZW4gOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgU2V0X1dpbmRvdyAoTWVuIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1dpbmRvdyk7CiAKQEAgLTMxOCw4ICszNTIsOCBAQAogICAgcHJhZ21hIElubGluZSAoR2V0X1dpbmRvdyk7CiAKICAgIC0tICBBTkNIT1IoYHNldF9tZW51X3N1YigpJyxgU2V0X1N1Yl9XaW5kb3cnKQotICAgcHJvY2VkdXJlIFNldF9TdWJfV2luZG93IChNZW4gOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBpbiBXaW5kb3cpOworICAgcHJvY2VkdXJlIFNldF9TdWJfV2luZG93IChNZW4gOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1N1Yl9XaW5kb3cpOwogCkBAIC0zMjksNyArMzYzLDcgQEAKICAgIHByYWdtYSBJbmxpbmUgKEdldF9TdWJfV2luZG93KTsKIAogICAgLS0gIEFOQ0hPUihgc2NhbGVfbWVudSgpJyxgU2NhbGUnKQotICAgcHJvY2VkdXJlIFNjYWxlIChNZW4gICAgIDogaW4gTWVudTsKKyAgIHByb2NlZHVyZSBTY2FsZSAoTWVuICAgICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgIExpbmVzICAgOiBvdXQgTGluZV9Db3VudDsKICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQpOwogICAgLS0gIEFLQQpAQCAtMzQ1LDEzICszNzksMTMgQEAKICAgIC0tICBNQU5QQUdFKGBtZW51X21hcmsuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzZXRfbWVudV9tYXJrKCknLGBTZXRfTWFyaycpCi0gICBwcm9jZWR1cmUgU2V0X01hcmsgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICBNYXJrIDogaW4gU3RyaW5nKTsKKyAgIHByb2NlZHVyZSBTZXRfTWFyayAoTWVuICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgIE1hcmsgOiBTdHJpbmcpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X01hcmspOwogCiAgICAtLSAgQU5DSE9SKGBtZW51X21hcmsoKScsYE1hcmsnKQotICAgcHJvY2VkdXJlIE1hcmsgKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBNYXJrIChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICBNYXJrIDogb3V0IFN0cmluZyk7CiAgICAtLSAgQUtBCiAKQEAgLTM2NCwxOSArMzk4LDE5IEBACiAKICAgIC0tICBBTkNIT1IoYHNldF9tZW51X2ZvcmUoKScsYFNldF9Gb3JlZ3JvdW5kJykKICAgIHByb2NlZHVyZSBTZXRfRm9yZWdyb3VuZAotICAgICAoTWVuICAgOiBpbiBNZW51OwotICAgICAgRm9yZSAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CisgICAgIChNZW4gICA6IE1lbnU7CisgICAgICBGb3JlICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIENvbG9yIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Gb3JlZ3JvdW5kKTsKIAogICAgLS0gIEFOQ0hPUihgbWVudV9mb3JlKCknLGBGb3JlZ3JvdW5kJykKLSAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChNZW4gICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEZvcmVncm91bmQgKE1lbiAgIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JlICA6IG91dCBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCk7CiAgICAtLSAgQUtBCiAKICAgIC0tICBBTkNIT1IoYG1lbnVfZm9yZSgpJyxgRm9yZWdyb3VuZCcpCi0gICBwcm9jZWR1cmUgRm9yZWdyb3VuZCAoTWVuICAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChNZW4gICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yZSAgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgOiBvdXQgQ29sb3JfUGFpcik7CiAgICAtLSAgQUtBCkBAIC0zODQsMTkgKzQxOCwxOSBAQAogCiAgICAtLSAgQU5DSE9SKGBzZXRfbWVudV9iYWNrKCknLGBTZXRfQmFja2dyb3VuZCcpCiAgICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKLSAgICAgKE1lbiAgIDogaW4gTWVudTsKLSAgICAgIEJhY2sgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgQ29sb3IgOiBpbiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOworICAgICAoTWVuICAgOiBNZW51OworICAgICAgQmFjayAgOiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87CisgICAgICBDb2xvciA6IENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfQmFja2dyb3VuZCk7CiAKICAgIC0tICBBTkNIT1IoYG1lbnVfYmFjaygpJyxgQmFja2dyb3VuZCcpCi0gICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoTWVuICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKE1lbiAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpOwogICAgLS0gIEFLQQogICAgLS0gIEFOQ0hPUihgbWVudV9iYWNrKCknLGBCYWNrZ3JvdW5kJykKIAotICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKE1lbiAgIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoTWVuICAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIDogb3V0IENvbG9yX1BhaXIpOwogICAgLS0gIEFLQQpAQCAtNDA0LDMzICs0MzgsMzMgQEAKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfZ3JleSgpJyxgU2V0X0dyZXknKQogICAgcHJvY2VkdXJlIFNldF9HcmV5Ci0gICAgIChNZW4gICA6IGluIE1lbnU7Ci0gICAgICBHcmV5ICA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKLSAgICAgIENvbG9yIDogaW4gQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KTsKKyAgICAgKE1lbiAgIDogTWVudTsKKyAgICAgIEdyZXkgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0dyZXkpOwogCiAgICAtLSAgQU5DSE9SKGBtZW51X2dyZXkoKScsYEdyZXknKQotICAgcHJvY2VkdXJlIEdyZXkgKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBHcmV5IChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICBHcmV5IDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0KTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgbWVudV9ncmV5KCknLGBHcmV5JykKICAgIHByb2NlZHVyZSBHcmV5Ci0gICAgIChNZW4gICA6IGluICBNZW51OworICAgICAoTWVuICAgOiBNZW51OwogICAgICAgR3JleSAgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ7CiAgICAgICBDb2xvciA6IG91dCBDb2xvcl9QYWlyKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEdyZXkpOwogCiAgICAtLSAgQU5DSE9SKGBzZXRfbWVudV9wYWQoKScsYFNldF9QYWRfQ2hhcmFjdGVyJykKLSAgIHByb2NlZHVyZSBTZXRfUGFkX0NoYXJhY3RlciAoTWVuIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogaW4gQ2hhcmFjdGVyIDo9IFNwYWNlKTsKKyAgIHByb2NlZHVyZSBTZXRfUGFkX0NoYXJhY3RlciAoTWVuIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogQ2hhcmFjdGVyIDo9IFNwYWNlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9QYWRfQ2hhcmFjdGVyKTsKIAogICAgLS0gIEFOQ0hPUihgbWVudV9wYWQoKScsYFBhZF9DaGFyYWN0ZXInKQotICAgcHJvY2VkdXJlIFBhZF9DaGFyYWN0ZXIgKE1lbiA6IGluICBNZW51OworICAgcHJvY2VkdXJlIFBhZF9DaGFyYWN0ZXIgKE1lbiA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogb3V0IENoYXJhY3Rlcik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChQYWRfQ2hhcmFjdGVyKTsKQEAgLTQzOCwxNSArNDcyLDE1IEBACiAgICAtLSAgTUFOUEFHRShgbWVudV9zcGFjaW5nLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfc3BhY2luZygpJyxgU2V0X1NwYWNpbmcnKQotICAgcHJvY2VkdXJlIFNldF9TcGFjaW5nIChNZW4gICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyIDogaW4gQ29sdW1uX1Bvc2l0aW9uIDo9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFJvdyAgIDogaW4gTGluZV9Qb3NpdGlvbiAgIDo9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIENvbCAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uIDo9IDApOworICAgcHJvY2VkdXJlIFNldF9TcGFjaW5nIChNZW4gICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyIDogQ29sdW1uX1Bvc2l0aW9uIDo9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdyAgIDogTGluZV9Qb3NpdGlvbiAgIDo9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgIENvbCAgIDogQ29sdW1uX1Bvc2l0aW9uIDo9IDApOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1NwYWNpbmcpOwogCiAgICAtLSAgQU5DSE9SKGBtZW51X3NwYWNpbmcoKScsYFNwYWNpbmcnKQotICAgcHJvY2VkdXJlIFNwYWNpbmcgKE1lbiAgIDogaW4gTWVudTsKKyAgIHByb2NlZHVyZSBTcGFjaW5nIChNZW4gICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgRGVzY3IgOiBvdXQgQ29sdW1uX1Bvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgIFJvdyAgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBvdXQgQ29sdW1uX1Bvc2l0aW9uKTsKQEAgLTQ2Myw3ICs0OTcsNyBAQAogICAgcHJhZ21hIElubGluZSAoU2V0X1BhdHRlcm4pOwogCiAgICAtLSAgQU5DSE9SKGBtZW51X3BhdHRlcm4oKScsYFBhdHRlcm4nKQotICAgcHJvY2VkdXJlIFBhdHRlcm4gKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBQYXR0ZXJuIChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICBUZXh0IDogb3V0IFN0cmluZyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChQYXR0ZXJuKTsKQEAgLTQ3MSw5ICs1MDUsOSBAQAogICAgLS0gIE1BTlBBR0UoYG1lbnVfZm9ybWF0LjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfZm9ybWF0KCknLGBTZXRfRm9ybWF0JykKLSAgIHByb2NlZHVyZSBTZXRfRm9ybWF0IChNZW4gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcyAgIDogaW4gTGluZV9Db3VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogaW4gQ29sdW1uX0NvdW50KTsKKyAgIHByb2NlZHVyZSBTZXRfRm9ybWF0IChNZW4gICAgIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcyAgIDogTGluZV9Db3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogQ29sdW1uX0NvdW50KTsKICAgIC0tICBOb3QgaW1wbGVtZW50ZWQ6IDAgYXJndW1lbnQgZm9yIExpbmVzIG9yIENvbHVtbnM7CiAgICAtLSAgaW5zdGVhZCB1c2UgRm9ybWF0IHRvIGdldCB0aGUgY3VycmVudCBzaXplcwogICAgLS0gICAgICBUaGUgIGRlZmF1bHQgIGZvcm1hdCAgaXMgIDE2ICByb3dzLCAgMSAgY29sdW1uLiAgICBDYWxsaW5nCkBAIC00ODUsNyArNTE5LDcgQEAKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Gb3JtYXQpOwogCiAgICAtLSAgQU5DSE9SKGBtZW51X2Zvcm1hdCgpJyxgRm9ybWF0JykKLSAgIHByb2NlZHVyZSBGb3JtYXQgKE1lbiAgICAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBGb3JtYXQgKE1lbiAgICAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQpOwogICAgLS0gIEFLQQpAQCAtNDkzLDMwICs1MjcsMzAgQEAKIAogICAgLS0gIE1BTlBBR0UoYG1lbnVfaG9vay4zeCcpCiAKLSAgIHR5cGUgTWVudV9Ib29rX0Z1bmN0aW9uIGlzIGFjY2VzcyBwcm9jZWR1cmUgKE1lbiA6IGluIE1lbnUpOworICAgdHlwZSBNZW51X0hvb2tfRnVuY3Rpb24gaXMgYWNjZXNzIHByb2NlZHVyZSAoTWVuIDogTWVudSk7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgTWVudV9Ib29rX0Z1bmN0aW9uKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2l0ZW1faW5pdCgpJyxgU2V0X0l0ZW1fSW5pdF9Ib29rJykKLSAgIHByb2NlZHVyZSBTZXRfSXRlbV9Jbml0X0hvb2sgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIE1lbnVfSG9va19GdW5jdGlvbik7CisgICBwcm9jZWR1cmUgU2V0X0l0ZW1fSW5pdF9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0l0ZW1fSW5pdF9Ib29rKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X2l0ZW1fdGVybSgpJyxgU2V0X0l0ZW1fVGVybV9Ib29rJykKLSAgIHByb2NlZHVyZSBTZXRfSXRlbV9UZXJtX0hvb2sgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIE1lbnVfSG9va19GdW5jdGlvbik7CisgICBwcm9jZWR1cmUgU2V0X0l0ZW1fVGVybV9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0l0ZW1fVGVybV9Ib29rKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfaW5pdCgpJyxgU2V0X01lbnVfSW5pdF9Ib29rJykKLSAgIHByb2NlZHVyZSBTZXRfTWVudV9Jbml0X0hvb2sgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIE1lbnVfSG9va19GdW5jdGlvbik7CisgICBwcm9jZWR1cmUgU2V0X01lbnVfSW5pdF9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X01lbnVfSW5pdF9Ib29rKTsKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfdGVybSgpJyxgU2V0X01lbnVfVGVybV9Ib29rJykKLSAgIHByb2NlZHVyZSBTZXRfTWVudV9UZXJtX0hvb2sgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIE1lbnVfSG9va19GdW5jdGlvbik7CisgICBwcm9jZWR1cmUgU2V0X01lbnVfVGVybV9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X01lbnVfVGVybV9Ib29rKTsKIApAQCAtNTQzLDEzICs1NzcsMTMgQEAKICAgIC0tICBNQU5QQUdFKGBtZW51X2l0ZW1zLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X21lbnVfaXRlbXMoKScsYFJlZGVmaW5lJykKLSAgIHByb2NlZHVyZSBSZWRlZmluZSAoTWVuICAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICBJdGVtcyA6IGluIEl0ZW1fQXJyYXlfQWNjZXNzKTsKKyAgIHByb2NlZHVyZSBSZWRlZmluZSAoTWVuICAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICBJdGVtcyA6IEl0ZW1fQXJyYXlfQWNjZXNzKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFJlZGVmaW5lKTsKIAotICAgcHJvY2VkdXJlIFNldF9JdGVtcyAoTWVuICAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgSXRlbXMgOiBpbiBJdGVtX0FycmF5X0FjY2VzcykgcmVuYW1lcyBSZWRlZmluZTsKKyAgIHByb2NlZHVyZSBTZXRfSXRlbXMgKE1lbiAgIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1zIDogSXRlbV9BcnJheV9BY2Nlc3MpIHJlbmFtZXMgUmVkZWZpbmU7CiAgICAtLSAgcHJhZ21hIElubGluZSAoU2V0X0l0ZW1zKTsKIAogICAgLS0gIEFOQ0hPUihgbWVudV9pdGVtcygpJyxgSXRlbXMnKQpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2UuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2UuYWRzLm00CmluZGV4IGI1OWViYmYuLjhkM2Y4ZWQgMTAwNjQ0Ci0tLSBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlLmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZHMubTQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zOCwyMSArMzgsMTYgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMjcgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuMzIgJAorLS0gICREYXRlOiAyMDE1LzA1LzMwIDIzOjE5OjE5ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaW5jbHVkZShgTW91c2VfQmFzZV9EZWZzJykKIHdpdGggU3lzdGVtOwogCiBwYWNrYWdlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTW91c2UgaXMKICAgIHByYWdtYSBQcmVlbGFib3JhdGUgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTW91c2UpOwogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19tb3VzZS4zeCcpCi0gICAtLSAgUGxlYXNlIG5vdGUsIHRoYXQgaW4gbmN1cnNlcy0xLjkuOWUgZG9jdW1lbnRhdGlvbiBtb3VzZSBzdXBwb3J0Ci0gICAtLSAgaXMgc3RpbGwgbWFya2VkIGFzIGV4cGVyaW1lbnRhbC4gU28gYWxzbyB0aGlzIGJpbmRpbmcgd2lsbCBjaGFuZ2UKLSAgIC0tICBpZiB0aGUgbmN1cnNlcyBtZXRob2RzIGNoYW5nZS4KLSAgIC0tCiAgICAtLSAgbW91c2VfdHJhZm8sIHdtb3VzZV90cmFmbyBhcmUgaW1wbGVtZW50ZWQgYXMgVHJhbnNmb3JtX0Nvb3JkaW5hdGVzCiAgICAtLSAgaW4gdGhlIHBhcmVudCBwYWNrYWdlLgogICAgLS0KQEAgLTk1LDIwICs5MCwyMCBAQAogICAgLS0gIFJldHVybiB0cnVlIGlmIGEgbW91c2UgZGV2aWNlIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgogCiAgICBwcm9jZWR1cmUgUmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudAotICAgICAoQnV0dG9uIDogaW4gTW91c2VfQnV0dG9uOwotICAgICAgU3RhdGUgIDogaW4gQnV0dG9uX1N0YXRlOworICAgICAoQnV0dG9uIDogTW91c2VfQnV0dG9uOworICAgICAgU3RhdGUgIDogQnV0dG9uX1N0YXRlOwogICAgICAgTWFzayAgIDogaW4gb3V0IEV2ZW50X01hc2spOwogICAgLS0gIFN0b3JlcyB0aGUgZXZlbnQgZGVzY3JpYmVkIGJ5IHRoZSBidXR0b24gYW5kIHRoZSBzdGF0ZSBpbiB0aGUgbWFzay4KLSAgIC0tICBCZWZvcmUgeW91IGNhbGwgdGhpcyB0aGUgZmlyc3QgdGltZSwgeW91IHNob3VsZCBpbml0IHRoZSBtYXNrCisgICAtLSAgQmVmb3JlIHlvdSBjYWxsIHRoaXMgdGhlIGZpcnN0IHRpbWUsIHlvdSBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgbWFzawogICAgLS0gIHdpdGggdGhlIEVtcHR5X01hc2sgY29uc3RhbnQKICAgIHByYWdtYSBJbmxpbmUgKFJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQpOwogCiAgICBwcm9jZWR1cmUgUmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudHMKLSAgICAgKEJ1dHRvbiA6IGluIE1vdXNlX0J1dHRvbjsKLSAgICAgIFN0YXRlICA6IGluIEJ1dHRvbl9TdGF0ZXM7CisgICAgIChCdXR0b24gOiBNb3VzZV9CdXR0b247CisgICAgICBTdGF0ZSAgOiBCdXR0b25fU3RhdGVzOwogICAgICAgTWFzayAgIDogaW4gb3V0IEV2ZW50X01hc2spOwogICAgLS0gIFJlZ2lzdGVyIGFsbCBldmVudHMgZGVzY3JpYmVkIGJ5IHRoZSBCdXR0b24gYW5kIHRoZSBTdGF0ZSBiaXRtYXAuCi0gICAtLSAgQmVmb3JlIHlvdSBjYWxsIHRoaXMgdGhlIGZpcnN0IHRpbWUsIHlvdSBzaG91bGQgaW5pdCB0aGUgbWFzaworICAgLS0gIEJlZm9yZSB5b3UgY2FsbCB0aGlzIHRoZSBmaXJzdCB0aW1lLCB5b3Ugc2hvdWxkIGluaXRpYWxpemUgdGhlIG1hc2sKICAgIC0tICB3aXRoIHRoZSBFbXB0eV9NYXNrIGNvbnN0YW50CiAKICAgIC0tICBBTkNIT1IoYG1vdXNlbWFzaygpJyxgU3RhcnRfTW91c2UnKQpAQCAtMTIxLDcgKzExNiw3IEBACiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTdGFydF9Nb3VzZSk7CiAKLSAgIHByb2NlZHVyZSBFbmRfTW91c2UgKE1hc2sgOiBpbiBFdmVudF9NYXNrIDo9IE5vX0V2ZW50cyk7CisgICBwcm9jZWR1cmUgRW5kX01vdXNlIChNYXNrIDogRXZlbnRfTWFzayA6PSBOb19FdmVudHMpOwogICAgLS0gIFRlcm1pbmF0ZXMgdGhlIG1vdXNlLCByZXN0b3JlcyB0aGUgc3BlY2lmaWVkIGV2ZW50IG1hc2sKICAgIHByYWdtYSBJbmxpbmUgKEVuZF9Nb3VzZSk7CiAKQEAgLTEzMCw3ICsxMjUsNyBAQAogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoR2V0X01vdXNlKTsKIAotICAgcHJvY2VkdXJlIEdldF9FdmVudCAoRXZlbnQgIDogaW4gIE1vdXNlX0V2ZW50OworICAgcHJvY2VkdXJlIEdldF9FdmVudCAoRXZlbnQgIDogTW91c2VfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBZICAgICAgOiBvdXQgTGluZV9Qb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFggICAgICA6IG91dCBDb2x1bW5fUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b24gOiBvdXQgTW91c2VfQnV0dG9uOwpAQCAtMTQyLDcgKzEzNyw3IEBACiAgICBwcmFnbWEgSW5saW5lIChHZXRfRXZlbnQpOwogCiAgICAtLSAgQU5DSE9SKGB1bmdldG1vdXNlKCknLGBVbmdldF9Nb3VzZScpCi0gICBwcm9jZWR1cmUgVW5nZXRfTW91c2UgKEV2ZW50IDogaW4gTW91c2VfRXZlbnQpOworICAgcHJvY2VkdXJlIFVuZ2V0X01vdXNlIChFdmVudCA6IE1vdXNlX0V2ZW50KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFVuZ2V0X01vdXNlKTsKIApAQCAtMTU5LDcgKzE1NCwxMCBAQAogICAgcHJhZ21hIElubGluZSAoTW91c2VfSW50ZXJ2YWwpOwogCiBwcml2YXRlCi0gICB0eXBlIEV2ZW50X01hc2sgaXMgbmV3IEludGVyZmFjZXMuQy51bnNpZ25lZF9sb25nOworICAgLS0gIFRoaXMgY2FuIGJlIGFzIGxpdHRsZSBhcyAzMiBiaXRzICh1bnNpZ25lZCksIG9yIGFzIGxvbmcgYXMgdGhlIHN5c3RlbSdzCisgICAtLSAgdW5zaWduZWQgbG9uZy4gIERlY2xhcmUgaXQgYXMgdGhlIG1pbmltdW0gc2l6ZSB0byBoYW5kbGUgYWxsIHZhbGlkCisgICAtLSAgc2l6ZXMuCisgICB0eXBlIEV2ZW50X01hc2sgaXMgbW9kIDQyOTQ5NjcyOTY7CiAKICAgIHR5cGUgTW91c2VfRXZlbnQgaXMKICAgICAgIHJlY29yZApAQCAtMTcxLDEyICsxNjksMzUgQEAKICAgICAgIGVuZCByZWNvcmQ7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgTW91c2VfRXZlbnQpOwogCi1pbmNsdWRlKGBNb3VzZV9FdmVudF9SZXAnKQotICAgR2VuZXJhdGlvbl9CaXRfT3JkZXIgOiBjb25zdGFudCBTeXN0ZW0uQml0X09yZGVyIDo9IFN5c3RlbS5NNF9CSVRfT1JERVI7Ci0gICAtLSAgVGhpcyBjb25zdGFudCBtYXkgYmUgZGlmZmVyZW50IG9uIHlvdXIgc3lzdGVtLgorICAgZm9yIE1vdXNlX0V2ZW50IHVzZQorICAgICAgcmVjb3JkCisgICAgICAgICBJZCAgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk1FVkVOVF9pZF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk1FVkVOVF9pZF9MYXN0OworICAgICAgICAgWCAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5NRVZFTlRfeF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLk1FVkVOVF94X0xhc3Q7CisgICAgICAgICBZICAgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLk1FVkVOVF95X0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuTUVWRU5UX3lfTGFzdDsKKyAgICAgICAgIFogICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuTUVWRU5UX3pfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5NRVZFTlRfel9MYXN0OworICAgICAgICAgQnN0YXRlIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5NRVZFTlRfYnN0YXRlX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuTUVWRU5UX2JzdGF0ZV9MYXN0OworICAgICAgZW5kIHJlY29yZDsKKyAgIGZvciBNb3VzZV9FdmVudCdTaXplIHVzZSBDdXJzZXNfQ29uc3RhbnRzLk1FVkVOVF9TaXplOworICAgR2VuZXJhdGlvbl9CaXRfT3JkZXIgOiBTeXN0ZW0uQml0X09yZGVyIHJlbmFtZXMgQ3Vyc2VzX0NvbnN0YW50cy5CaXRfT3JkZXI7CiAKLWluY2x1ZGUoYE1vdXNlX0V2ZW50cycpCi0gICBOb19FdmVudHMgIDogY29uc3RhbnQgRXZlbnRfTWFzayA6PSAwOwotICAgQWxsX0V2ZW50cyA6IGNvbnN0YW50IEV2ZW50X01hc2sgOj0gQUxMX01PVVNFX0VWRU5UUzsKKyAgIEJVVFRPTl9DVFJMICAgICAgOiBjb25zdGFudCBFdmVudF9NYXNrIDo9IEN1cnNlc19Db25zdGFudHMuQlVUVE9OX0NUUkw7CisgICBCVVRUT05fU0hJRlQgICAgIDogY29uc3RhbnQgRXZlbnRfTWFzayA6PSBDdXJzZXNfQ29uc3RhbnRzLkJVVFRPTl9TSElGVDsKKyAgIEJVVFRPTl9BTFQgICAgICAgOiBjb25zdGFudCBFdmVudF9NYXNrIDo9IEN1cnNlc19Db25zdGFudHMuQlVUVE9OX0FMVDsKKyAgIEJVVFRPTjFfRVZFTlRTICAgOiBjb25zdGFudCBFdmVudF9NYXNrCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuYWxsX2V2ZW50c19idXR0b25fMTsKKyAgIEJVVFRPTjJfRVZFTlRTICAgOiBjb25zdGFudCBFdmVudF9NYXNrCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuYWxsX2V2ZW50c19idXR0b25fMjsKKyAgIEJVVFRPTjNfRVZFTlRTICAgOiBjb25zdGFudCBFdmVudF9NYXNrCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuYWxsX2V2ZW50c19idXR0b25fMzsKKyAgIEJVVFRPTjRfRVZFTlRTICAgOiBjb25zdGFudCBFdmVudF9NYXNrCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuYWxsX2V2ZW50c19idXR0b25fNDsKKyAgIEFMTF9NT1VTRV9FVkVOVFMgOiBjb25zdGFudCBFdmVudF9NYXNrIDo9IEN1cnNlc19Db25zdGFudHMuQUxMX01PVVNFX0VWRU5UUzsKKyAgIE5vX0V2ZW50cyAgICAgICAgOiBjb25zdGFudCBFdmVudF9NYXNrIDo9IDA7CisgICBBbGxfRXZlbnRzICAgICAgIDogY29uc3RhbnQgRXZlbnRfTWFzayA6PSBBTExfTU9VU0VfRVZFTlRTOwogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Nb3VzZTsKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGEuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHMubTQKaW5kZXggZTZkZWY5Yi4uMDNkODExNCAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHMubTQKKysrIGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHMubTQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zOCw3ICszOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE0ICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTUxLDE4ICs1MSwxOCBAQAogICAgLS0gIE1BTlBBR0UoYHBhbmVsLjN4JykKIAogICAgLS0gIEFOQ0hPUihgc2V0X3BhbmVsX3VzZXJwdHInLGBTZXRfVXNlcl9EYXRhJykKLSAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChQYW4gIDogaW4gUGFuZWw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIFVzZXJfQWNjZXNzKTsKKyAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChQYW4gIDogUGFuZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFVzZXJfQWNjZXNzKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Vc2VyX0RhdGEpOwogCiAgICAtLSAgQU5DSE9SKGBwYW5lbF91c2VycHRyJyxgR2V0X1VzZXJfRGF0YScpCi0gICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoUGFuICA6IGluICBQYW5lbDsKKyAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChQYW4gIDogUGFuZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IG91dCBVc2VyX0FjY2Vzcyk7CiAgICAtLSAgQUtBCiAKICAgIC0tICBBTkNIT1IoYHBhbmVsX3VzZXJwdHInLGBHZXRfVXNlcl9EYXRhJykKLSAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKFBhbiAgOiBpbiAgUGFuZWwpIHJldHVybiBVc2VyX0FjY2VzczsKKyAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKFBhbiAgOiBQYW5lbCkgcmV0dXJuIFVzZXJfQWNjZXNzOwogICAgLS0gIEFLQQogICAgLS0gIFNhbWUgYXMgZnVuY3Rpb24KICAgIHByYWdtYSBJbmxpbmUgKEdldF9Vc2VyX0RhdGEpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkcy5tNCBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZHMubTQKaW5kZXggMzliNzI2MC4uYjBlZGE0ZCAxMDA2NDQKLS0tIGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRzLm00CkBAIC0xMCw3ICsxMCw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzgsMTYgKzM4LDE2IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE5ICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiAkCistLSAgJFJldmlzaW9uOiAxLjIyICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTo1NyAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggU3lzdGVtOwogCiBwYWNrYWdlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzIGlzCiAgICBwcmFnbWEgUHJlZWxhYm9yYXRlIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlBhbmVscyk7Ci1pbmNsdWRlKGBQYW5lbF9MaW5rZXJfT3B0aW9ucycpZG5sCi1pbmNsdWRlKGBMaW5rZXJfT3B0aW9ucycpCisgICBwcmFnbWEgTGlua2VyX09wdGlvbnMgKCItbHBhbmVsIiAmIEN1cnNlc19Db25zdGFudHMuREZUX0FSR19TVUZGSVgpOworCiAgICB0eXBlIFBhbmVsIGlzIHByaXZhdGU7CiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzQsMTcgKzc0LDE3IEBACiAgICAtLSAgcHJhZ21hIElubGluZSAoTmV3X1BhbmVsKTsKIAogICAgLS0gIEFOQ0hPUihgYm90dG9tX3BhbmVsKCknLGBCb3R0b20nKQotICAgcHJvY2VkdXJlIEJvdHRvbSAoUGFuIDogaW4gUGFuZWwpOworICAgcHJvY2VkdXJlIEJvdHRvbSAoUGFuIDogUGFuZWwpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoQm90dG9tKTsKIAogICAgLS0gIEFOQ0hPUihgdG9wX3BhbmVsKCknLGBUb3AnKQotICAgcHJvY2VkdXJlIFRvcCAoUGFuIDogaW4gUGFuZWwpOworICAgcHJvY2VkdXJlIFRvcCAoUGFuIDogUGFuZWwpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoVG9wKTsKIAogICAgLS0gIEFOQ0hPUihgc2hvd19wYW5lbCgpJyxgU2hvdycpCi0gICBwcm9jZWR1cmUgU2hvdyAoUGFuIDogaW4gUGFuZWwpOworICAgcHJvY2VkdXJlIFNob3cgKFBhbiA6IFBhbmVsKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNob3cpOwogCkBAIC05NCw3ICs5NCw3IEBACiAgICBwcmFnbWEgSW1wb3J0IChDLCBVcGRhdGVfUGFuZWxzLCAidXBkYXRlX3BhbmVscyIpOwogCiAgICAtLSAgQU5DSE9SKGBoaWRlX3BhbmVsKCknLGBIaWRlJykKLSAgIHByb2NlZHVyZSBIaWRlIChQYW4gOiBpbiBQYW5lbCk7CisgICBwcm9jZWR1cmUgSGlkZSAoUGFuIDogUGFuZWwpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoSGlkZSk7CiAKQEAgLTEwOCwxNSArMTA4LDE1IEBACiAgICAtLSAgcHJhZ21hIElubGluZSAoUGFuZWxfV2luZG93KTsKIAogICAgLS0gIEFOQ0hPUihgcmVwbGFjZV9wYW5lbCgpJyxgUmVwbGFjZScpCi0gICBwcm9jZWR1cmUgUmVwbGFjZSAoUGFuIDogaW4gUGFuZWw7Ci0gICAgICAgICAgICAgICAgICAgICAgV2luIDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBSZXBsYWNlIChQYW4gOiBQYW5lbDsKKyAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoUmVwbGFjZSk7CiAKICAgIC0tICBBTkNIT1IoYG1vdmVfcGFuZWwoKScsYE1vdmUnKQotICAgcHJvY2VkdXJlIE1vdmUgKFBhbiAgICA6IGluIFBhbmVsOwotICAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKTsKKyAgIHByb2NlZHVyZSBNb3ZlIChQYW4gICAgOiBQYW5lbDsKKyAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChNb3ZlKTsKIApkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRzLm00CmluZGV4IDU0NjAwNGYuLmUyMjczNDMgMTAwNjQ0Ci0tLSBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlLmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZHMubTQKQEAgLTksNyArOSw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzcsMTYgKzM3LDYyIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMSAkCistLSAgJFJldmlzaW9uOiAxLjQgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UcmFjZSBpcwogICAgcHJhZ21hIFByZWVsYWJvcmF0ZSAoVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UcmFjZSk7CiAKLSAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsKLWluY2x1ZGUoYFRyYWNlX0RlZnMnKQorICAgdHlwZSBUcmFjZV9BdHRyaWJ1dGVfU2V0IGlzCisgICAgICByZWNvcmQKKyAgICAgICAgIFRpbWVzICAgICAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgVHB1dHMgICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICBVcGRhdGUgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEN1cnNvcl9Nb3ZlICAgICAgOiBCb29sZWFuOworICAgICAgICAgQ2hhcmFjdGVyX091dHB1dCA6IEJvb2xlYW47CisgICAgICAgICBDYWxscyAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFZpcnR1YWxfUHV0cyAgICAgOiBCb29sZWFuOworICAgICAgICAgSW5wdXRfRXZlbnRzICAgICA6IEJvb2xlYW47CisgICAgICAgICBUVFlfU3RhdGUgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEludGVybmFsX0NhbGxzICAgOiBCb29sZWFuOworICAgICAgICAgQ2hhcmFjdGVyX0NhbGxzICA6IEJvb2xlYW47CisgICAgICAgICBUZXJtY2FwX1Rlcm1JbmZvIDogQm9vbGVhbjsKKyAgICAgICAgIEF0dHJpYnV0ZV9Db2xvciAgOiBCb29sZWFuOworICAgICAgZW5kIHJlY29yZDsKKyAgIHByYWdtYSBDb252ZW50aW9uIChDX1Bhc3NfQnlfQ29weSwgVHJhY2VfQXR0cmlidXRlX1NldCk7CiAKKyAgIGZvciBUcmFjZV9BdHRyaWJ1dGVfU2V0IHVzZQorICAgICAgcmVjb3JkCisgICAgICAgICBUaW1lcyAgICAgICAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9USU1FU19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX1RJTUVTX0xhc3Q7CisgICAgICAgICBUcHV0cyAgICAgICAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9UUFVUU19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX1RQVVRTX0xhc3Q7CisgICAgICAgICBVcGRhdGUgICAgICAgICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9VUERBVEVfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9VUERBVEVfTGFzdDsKKyAgICAgICAgIEN1cnNvcl9Nb3ZlICAgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX01PVkVfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9NT1ZFX0xhc3Q7CisgICAgICAgICBDaGFyYWN0ZXJfT3V0cHV0IGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9DSEFSUFVUX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfQ0hBUlBVVF9MYXN0OworICAgICAgICAgQ2FsbHMgICAgICAgICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfQ0FMTFNfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9DQUxMU19MYXN0OworICAgICAgICAgVmlydHVhbF9QdXRzICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfVklSVFBVVF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX1ZJUlRQVVRfTGFzdDsKKyAgICAgICAgIElucHV0X0V2ZW50cyAgICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0lFVkVOVF9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0lFVkVOVF9MYXN0OworICAgICAgICAgVFRZX1N0YXRlICAgICAgICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfQklUU19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0JJVFNfTGFzdDsKKyAgICAgICAgIEludGVybmFsX0NhbGxzICAgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0lDQUxMU19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0lDQUxMU19MYXN0OworICAgICAgICAgQ2hhcmFjdGVyX0NhbGxzICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfQ0NBTExTX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuVFJBQ0VfQ0NBTExTX0xhc3Q7CisgICAgICAgICBUZXJtY2FwX1Rlcm1JbmZvIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9EQVRBQkFTRV9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0RBVEFCQVNFX0xhc3Q7CisgICAgICAgICBBdHRyaWJ1dGVfQ29sb3IgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5UUkFDRV9BVFRSU19GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLlRSQUNFX0FUVFJTX0xhc3Q7CisgICAgICBlbmQgcmVjb3JkOworICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOworICAgZm9yIFRyYWNlX0F0dHJpYnV0ZV9TZXQnU2l6ZSB1c2UgQ3Vyc2VzX0NvbnN0YW50cy5UcmFjZV9TaXplOwogICAgcHJhZ21hIFdhcm5pbmdzIChPbik7CiAKICAgIFRyYWNlX0Rpc2FibGUgIDogY29uc3RhbnQgVHJhY2VfQXR0cmlidXRlX1NldCA6PSAob3RoZXJzID0+IEZhbHNlKTsKZGlmZiAtLWdpdCBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYi5tNCBiL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYi5tNAppbmRleCA3NWRkYjk2Li5iOTg3ODJiIDEwMDY0NAotLS0gYS9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGIubTQKKysrIGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiLm00CkBAIC05LDcgKzksNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM3LDggKzM3LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS41ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0NjozMiAkCistLSAgJFJldmlzaW9uOiAxLjE0ICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggU3lzdGVtOwpAQCAtNjEsNyArNjEsNyBAQAogICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIGNodHlwZV9hcnJheSk7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZnVuY3Rpb24gS2V5X05hbWUgKEtleSA6IGluIFJlYWxfS2V5X0NvZGUpIHJldHVybiBTdHJpbmcKKyAgIGZ1bmN0aW9uIEtleV9OYW1lIChLZXkgOiBSZWFsX0tleV9Db2RlKSByZXR1cm4gU3RyaW5nCiAgICBpcwogICAgICAgZnVuY3Rpb24gS2V5bmFtZSAoSyA6IENfSW50KSByZXR1cm4gY2hhcnNfcHRyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgS2V5bmFtZSwgImtleW5hbWUiKTsKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBLZXlfTmFtZTsKIAotICAgcHJvY2VkdXJlIEtleV9OYW1lIChLZXkgIDogaW4gIFJlYWxfS2V5X0NvZGU7CisgICBwcm9jZWR1cmUgS2V5X05hbWUgKEtleSAgOiAgUmVhbF9LZXlfQ29kZTsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA6IG91dCBTdHJpbmcpCiAgICBpcwogICAgYmVnaW4KQEAgLTEzMiw5ICsxMzIsOSBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIElzX0VuZF9XaW5kb3c7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBNb3ZlX0N1cnNvciAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKQorICAgcHJvY2VkdXJlIE1vdmVfQ3Vyc29yIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gV21vdmUgKFdpbiAgICA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBDX0ludDsKQEAgLTE0NywyMCArMTQ3LDIwIEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgTW92ZV9DdXJzb3I7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICBDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKKyAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICBDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXYWRkY2ggKFcgIDogV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICBDaCA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgIENoIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdhZGRjaCwgIndhZGRjaCIpOwogICAgYmVnaW4KLSAgICAgIGlmIFdhZGRjaCAoV2luLCBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgIGlmIFdhZGRjaCAoV2luLCBDaCkgPSBDdXJzZXNfRXJyIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgQWRkOwogCi0gICBwcm9jZWR1cmUgQWRkIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgQ2ggIDogaW4gQ2hhcmFjdGVyKQorICAgcHJvY2VkdXJlIEFkZCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgIENoICA6IENoYXJhY3RlcikKICAgIGlzCiAgICBiZWdpbgogICAgICAgQWRkIChXaW4sCkBAIC0xNzAsMjkgKzE3MCwzMCBAQAogICAgZW5kIEFkZDsKIAogICAgcHJvY2VkdXJlIEFkZAotICAgICAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBDaCAgICAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgQ2ggICAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gbXZ3YWRkY2ggKFcgIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgIFkgIDogQ19JbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgWCAgOiBDX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBDaCA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgbXZ3YWRkY2gsICJtdndhZGRjaCIpOwogICAgYmVnaW4KICAgICAgIGlmIG12d2FkZGNoIChXaW4sIENfSW50IChMaW5lKSwKICAgICAgICAgICAgICAgICAgICBDX0ludCAoQ29sdW1uKSwKLSAgICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgICAgICAgICAgICBDaCkgPSBDdXJzZXNfRXJyCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIEFkZDsKIAogICAgcHJvY2VkdXJlIEFkZAotICAgICAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBDaCAgICAgOiBpbiBDaGFyYWN0ZXIpCisgICAgIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIENoICAgICA6IENoYXJhY3RlcikKICAgIGlzCiAgICBiZWdpbgogICAgICAgQWRkIChXaW4sCkBAIC0yMDQsMjEgKzIwNSwyMSBAQAogICAgZW5kIEFkZDsKIAogICAgcHJvY2VkdXJlIEFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvCi0gICAgIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgQ2ggIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIpCisgICAgIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2VjaG9jaGFyIChXICA6IFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ2ggOiBDX0NodHlwZSkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICBDaCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXZWNob2NoYXIsICJ3ZWNob2NoYXIiKTsKICAgIGJlZ2luCi0gICAgICBpZiBXZWNob2NoYXIgKFdpbiwgQXR0ckNoYXJfVG9fQ2h0eXBlIChDaCkpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICBpZiBXZWNob2NoYXIgKFdpbiwgQ2gpID0gQ3Vyc2VzX0VyciB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIEFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvOwogCiAgICBwcm9jZWR1cmUgQWRkX1dpdGhfSW1tZWRpYXRlX0VjaG8KLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBDaCAgOiBpbiBDaGFyYWN0ZXIpCisgICAgIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgQ2ggIDogQ2hhcmFjdGVyKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBBZGRfV2l0aF9JbW1lZGlhdGVfRWNobwpAQCAtMzMxLDkgKzMzMiw5IEBACiAgICAgICByZXR1cm4gVzsKICAgIGVuZCBEdXBsaWNhdGU7CiAKLSAgIHByb2NlZHVyZSBNb3ZlX1dpbmRvdyAoV2luICAgIDogaW4gV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb24pCisgICBwcm9jZWR1cmUgTW92ZV9XaW5kb3cgKFdpbiAgICA6IFdpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIE12d2luIChXaW4gICAgOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogQ19JbnQ7CkBAIC0zNDUsOSArMzQ2LDkgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBNb3ZlX1dpbmRvdzsKIAotICAgcHJvY2VkdXJlIE1vdmVfRGVyaXZlZF9XaW5kb3cgKFdpbiAgICA6IGluIFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbikKKyAgIHByb2NlZHVyZSBNb3ZlX0Rlcml2ZWRfV2luZG93IChXaW4gICAgOiBXaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gTXZkZXJ3aW4gKFdpbiAgICA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBDX0ludDsKQEAgLTM1OSw4ICszNjAsOCBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIE1vdmVfRGVyaXZlZF9XaW5kb3c7CiAKLSAgIHByb2NlZHVyZSBTZXRfU3luY2hfTW9kZSAoV2luICA6IGluIFdpbmRvdyAgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlIDogaW4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgIHByb2NlZHVyZSBTZXRfU3luY2hfTW9kZSAoV2luICA6IFdpbmRvdyAgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlIDogQm9vbGVhbiA6PSBGYWxzZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTeW5jb2sgKFdpbiAgOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgOiBDdXJzZXNfQm9vbCkgcmV0dXJuIENfSW50OwpAQCAtMzcxLDkgKzM3Miw5IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgU2V0X1N5bmNoX01vZGU7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICBTdHIgOiBpbiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICBMZW4gOiBpbiBJbnRlZ2VyIDo9IC0xKQorICAgcHJvY2VkdXJlIEFkZCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgIFN0ciA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgIExlbiA6IEludGVnZXIgOj0gLTEpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2FkZG5zdHIgKFdpbiA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgOiBjaGFyX2FycmF5OwpAQCAtMzkwLDExICszOTEsMTEgQEAKICAgIGVuZCBBZGQ7CiAKICAgIHByb2NlZHVyZSBBZGQKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgU3RyICAgIDogaW4gU3RyaW5nOwotICAgICAgTGVuICAgIDogaW4gSW50ZWdlciA6PSAtMSkKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgU3RyICAgIDogU3RyaW5nOworICAgICAgTGVuICAgIDogSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICBiZWdpbgogICAgICAgTW92ZV9DdXJzb3IgKFdpbiwgTGluZSwgQ29sdW1uKTsKQEAgLTQwMiw5ICs0MDMsOSBAQAogICAgZW5kIEFkZDsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJvY2VkdXJlIEFkZAotICAgICAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIFN0ciA6IGluIEF0dHJpYnV0ZWRfU3RyaW5nOwotICAgICAgTGVuIDogaW4gSW50ZWdlciA6PSAtMSkKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBTdHIgOiBBdHRyaWJ1dGVkX1N0cmluZzsKKyAgICAgIExlbiA6IEludGVnZXIgOj0gLTEpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2FkZGNobnN0ciAoV2luIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyIDogY2h0eXBlX2FycmF5OwpAQCAtNDE5LDE3ICs0MjAsMTggQEAKICAgICAgIFR4dCAoU3RyJ0xlbmd0aCkgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CiAgICAgICBpZiBXYWRkY2huc3RyIChXaW4sCiAgICAgICAgICAgICAgICAgICAgICBUeHQsCi0gICAgICAgICAgICAgICAgICAgICBDX0ludCAoTGVuKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgIENfSW50IChMZW4pKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgQWRkOwogCiAgICBwcm9jZWR1cmUgQWRkCi0gICAgIChXaW4gICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTGluZSAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIFN0ciAgICA6IGluIEF0dHJpYnV0ZWRfU3RyaW5nOwotICAgICAgTGVuICAgIDogaW4gSW50ZWdlciA6PSAtMSkKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgU3RyICAgIDogQXR0cmlidXRlZF9TdHJpbmc7CisgICAgICBMZW4gICAgOiBJbnRlZ2VyIDo9IC0xKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBNb3ZlX0N1cnNvciAoV2luLCBMaW5lLCBDb2x1bW4pOwpAQCAtNDM3LDQ2ICs0MzksNDUgQEAKICAgIGVuZCBBZGQ7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHByb2NlZHVyZSBCb3JkZXIKLSAgICAgKFdpbiAgICAgICAgICAgICAgICAgICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTGVmdF9TaWRlX1N5bWJvbCAgICAgICAgICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgUmlnaHRfU2lkZV9TeW1ib2wgICAgICAgICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgVG9wX1NpZGVfU3ltYm9sICAgICAgICAgICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgQm90dG9tX1NpZGVfU3ltYm9sICAgICAgICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgVXBwZXJfTGVmdF9Db3JuZXJfU3ltYm9sICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgVXBwZXJfUmlnaHRfQ29ybmVyX1N5bWJvbCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgTG93ZXJfTGVmdF9Db3JuZXJfU3ltYm9sICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgTG93ZXJfUmlnaHRfQ29ybmVyX1N5bWJvbCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKQorICAgICAoV2luICAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMZWZ0X1NpZGVfU3ltYm9sICAgICAgICAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBSaWdodF9TaWRlX1N5bWJvbCAgICAgICAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBUb3BfU2lkZV9TeW1ib2wgICAgICAgICAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBCb3R0b21fU2lkZV9TeW1ib2wgICAgICAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBVcHBlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBVcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBMb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBMb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2JvcmRlciAoVyAgIDogV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgTFMgIDogQ19DaHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSUyAgOiBDX0NodHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRTICA6IENfQ2h0eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgQlMgIDogQ19DaHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTEMgOiBDX0NodHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFVSQyA6IENfQ2h0eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgTExDIDogQ19DaHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMUkMgOiBDX0NodHlwZSkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgTFMgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICBSUyAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRTICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOworICAgICAgICAgICAgICAgICAgICAgICAgQlMgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICBVTEMgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSQyA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOworICAgICAgICAgICAgICAgICAgICAgICAgTExDIDogQXR0cmlidXRlZF9DaGFyYWN0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICBMUkMgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2JvcmRlciwgIndib3JkZXIiKTsKICAgIGJlZ2luCiAgICAgICBpZiBXYm9yZGVyIChXaW4sCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKExlZnRfU2lkZV9TeW1ib2wpLAotICAgICAgICAgICAgICAgICAgQXR0ckNoYXJfVG9fQ2h0eXBlIChSaWdodF9TaWRlX1N5bWJvbCksCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKFRvcF9TaWRlX1N5bWJvbCksCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKEJvdHRvbV9TaWRlX1N5bWJvbCksCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKFVwcGVyX0xlZnRfQ29ybmVyX1N5bWJvbCksCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKFVwcGVyX1JpZ2h0X0Nvcm5lcl9TeW1ib2wpLAotICAgICAgICAgICAgICAgICAgQXR0ckNoYXJfVG9fQ2h0eXBlIChMb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wpLAotICAgICAgICAgICAgICAgICAgQXR0ckNoYXJfVG9fQ2h0eXBlIChMb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sKQotICAgICAgICAgICAgICAgICAgKSA9IEN1cnNlc19FcnIKKyAgICAgICAgICAgICAgICAgIExlZnRfU2lkZV9TeW1ib2wsCisgICAgICAgICAgICAgICAgICBSaWdodF9TaWRlX1N5bWJvbCwKKyAgICAgICAgICAgICAgICAgIFRvcF9TaWRlX1N5bWJvbCwKKyAgICAgICAgICAgICAgICAgIEJvdHRvbV9TaWRlX1N5bWJvbCwKKyAgICAgICAgICAgICAgICAgIFVwcGVyX0xlZnRfQ29ybmVyX1N5bWJvbCwKKyAgICAgICAgICAgICAgICAgIFVwcGVyX1JpZ2h0X0Nvcm5lcl9TeW1ib2wsCisgICAgICAgICAgICAgICAgICBMb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wsCisgICAgICAgICAgICAgICAgICBMb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sKSA9IEN1cnNlc19FcnIKICAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgQm9yZGVyOwogCiAgICBwcm9jZWR1cmUgQm94Ci0gICAgIChXaW4gICAgICAgICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBWZXJ0aWNhbF9TeW1ib2wgICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOwotICAgICAgSG9yaXpvbnRhbF9TeW1ib2wgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlciA6PSBEZWZhdWx0X0NoYXJhY3RlcikKKyAgICAgKFdpbiAgICAgICAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIFZlcnRpY2FsX1N5bWJvbCAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBIb3Jpem9udGFsX1N5bWJvbCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBCb3JkZXIgKFdpbiwKQEAgLTQ4NSwzNSArNDg2LDM3IEBACiAgICBlbmQgQm94OwogCiAgICBwcm9jZWR1cmUgSG9yaXpvbnRhbF9MaW5lCi0gICAgIChXaW4gICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lX1NpemUgICA6IGluIE5hdHVyYWw7Ci0gICAgICBMaW5lX1N5bWJvbCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKQorICAgICAoV2luICAgICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZV9TaXplICAgOiBOYXR1cmFsOworICAgICAgTGluZV9TeW1ib2wgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlciA6PSBEZWZhdWx0X0NoYXJhY3RlcikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXaGxpbmUgKFcgICA6IFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgQ2ggIDogQ19DaHR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgIENoICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgICAgICAgICAgICAgICAgICBMZW4gOiBDX0ludCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2hsaW5lLCAid2hsaW5lIik7CiAgICBiZWdpbgogICAgICAgaWYgV2hsaW5lIChXaW4sCi0gICAgICAgICAgICAgICAgIEF0dHJDaGFyX1RvX0NodHlwZSAoTGluZV9TeW1ib2wpLAotICAgICAgICAgICAgICAgICBDX0ludCAoTGluZV9TaXplKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgICAgICAgICAgTGluZV9TeW1ib2wsCisgICAgICAgICAgICAgICAgIENfSW50IChMaW5lX1NpemUpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgSG9yaXpvbnRhbF9MaW5lOwogCiAgICBwcm9jZWR1cmUgVmVydGljYWxfTGluZQotICAgICAoV2luICAgICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTGluZV9TaXplICAgOiBpbiBOYXR1cmFsOwotICAgICAgTGluZV9TeW1ib2wgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlciA6PSBEZWZhdWx0X0NoYXJhY3RlcikKKyAgICAgKFdpbiAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmVfU2l6ZSAgIDogTmF0dXJhbDsKKyAgICAgIExpbmVfU3ltYm9sIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV3ZsaW5lIChXICAgOiBXaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgIENoICA6IENfQ2h0eXBlOworICAgICAgICAgICAgICAgICAgICAgICBDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICAgICAgTGVuIDogQ19JbnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFd2bGluZSwgInd2bGluZSIpOwogICAgYmVnaW4KICAgICAgIGlmIFd2bGluZSAoV2luLAotICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKExpbmVfU3ltYm9sKSwKLSAgICAgICAgICAgICAgICAgQ19JbnQgKExpbmVfU2l6ZSkpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgICAgICAgICAgIExpbmVfU3ltYm9sLAorICAgICAgICAgICAgICAgICBDX0ludCAoTGluZV9TaXplKSkgPSBDdXJzZXNfRXJyCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIFZlcnRpY2FsX0xpbmU7CkBAIC01MzQsNyArNTM3LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBHZXRfS2V5c3Ryb2tlOwogCi0gICBwcm9jZWR1cmUgVW5kb19LZXlzdHJva2UgKEtleSA6IGluIFJlYWxfS2V5X0NvZGUpCisgICBwcm9jZWR1cmUgVW5kb19LZXlzdHJva2UgKEtleSA6IFJlYWxfS2V5X0NvZGUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gVW5nZXRjaCAoQ2ggOiBDX0ludCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgVW5nZXRjaCwgInVuZ2V0Y2giKTsKQEAgLTYwNiwxNSArNjA5LDE1IEBACiAgICBlbmQgU3RhbmRvdXQ7CiAKICAgIHByb2NlZHVyZSBTd2l0Y2hfQ2hhcmFjdGVyX0F0dHJpYnV0ZQotICAgICAoV2luICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBBdHRyIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgT24gICA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgKFdpbiAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgQXR0ciA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIE9uICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2F0dHJvbiAoV2luICAgIDogV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgQ19BdHRyIDogQ19BdHRyVHlwZSkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgQ19BdHRyIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdhdHRyb24sICJ3YXR0cl9vbiIpOwogICAgICAgZnVuY3Rpb24gV2F0dHJvZmYgKFdpbiAgICA6IFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBDX0F0dHIgOiBDX0F0dHJUeXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgQ19BdHRyIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdhdHRyb2ZmLCAid2F0dHJfb2ZmIik7CiAgICAgICAtLSAgSW4gQWRhIHdlIHVzZSB0aGUgT24gQm9vbGVhbiB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IHdlIHdhbnQgdG8KICAgICAgIC0tICBzd2l0Y2ggb24gb3Igb2ZmIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBzZXQuCkBAIC02MjQsOSArNjI3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyICA9PiBBdHRyKTsKICAgIGJlZ2luCiAgICAgICBpZiBPbiB0aGVuCi0gICAgICAgICBFcnIgOj0gV2F0dHJvbiAgKFdpbiwgQXR0ckNoYXJfVG9fQXR0clR5cGUgKEFDKSk7CisgICAgICAgICBFcnIgOj0gV2F0dHJvbiAgKFdpbiwgQUMpOwogICAgICAgZWxzZQotICAgICAgICAgRXJyIDo9IFdhdHRyb2ZmIChXaW4sIEF0dHJDaGFyX1RvX0F0dHJUeXBlIChBQykpOworICAgICAgICAgRXJyIDo9IFdhdHRyb2ZmIChXaW4sIEFDKTsKICAgICAgIGVuZCBpZjsKICAgICAgIGlmIEVyciA9IEN1cnNlc19FcnIgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKQEAgLTYzNCwxOSArNjM3LDE4IEBACiAgICBlbmQgU3dpdGNoX0NoYXJhY3Rlcl9BdHRyaWJ1dGU7CiAKICAgIHByb2NlZHVyZSBTZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXMKLSAgICAgKFdpbiAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIEF0dHIgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgQ29sb3IgOiBpbiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCisgICAgIChXaW4gICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBBdHRyICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIENvbG9yIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdhdHRyc2V0IChXaW4gICAgOiBXaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQ19BdHRyIDogQ19BdHRyVHlwZSkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgIENfQXR0ciA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXYXR0cnNldCwgIndhdHRyc2V0Iik7IC0tID8/PyB3YXR0cl9zZXQKICAgIGJlZ2luCi0gICAgICBpZiBXYXR0cnNldCAoV2luLAotICAgICAgICAgICAgICAgICAgIEF0dHJDaGFyX1RvX0F0dHJUeXBlIChBdHRyaWJ1dGVkX0NoYXJhY3RlcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yID0+IENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgPT4gQXR0cikpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgaWYgV2F0dHJzZXQgKFdpbiwgKENoID0+IENoYXJhY3RlcidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyID0+IEF0dHIpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgU2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGVzOwpAQCAtNjU1LDIwICs2NTcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXYXR0cmdldCAoV2luIDogV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgIEF0ciA6IGFjY2VzcyBDX0F0dHJUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgIEF0ciA6IGFjY2VzcyBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBDb2wgOiBhY2Nlc3MgQ19TaG9ydDsKICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2F0dHJnZXQsICJ3YXR0cl9nZXQiKTsKIAotICAgICAgQXR0ciA6IGFsaWFzZWQgQ19BdHRyVHlwZTsKKyAgICAgIEF0dHIgOiBhbGlhc2VkIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgQ29sICA6IGFsaWFzZWQgQ19TaG9ydDsKICAgICAgIFJlcyAgOiBjb25zdGFudCBDX0ludCA6PSBXYXR0cmdldCAoV2luLCBBdHRyJ0FjY2VzcywgQ29sJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLk51bGxfQWRkcmVzcyk7Ci0gICAgICBDaCAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICBiZWdpbgogICAgICAgaWYgUmVzID0gQ3Vyc2VzX09rIHRoZW4KLSAgICAgICAgIENoIDo9IEF0dHJUeXBlX1RvX0F0dHJDaGFyIChBdHRyKTsKLSAgICAgICAgIHJldHVybiBDaC5BdHRyOworICAgICAgICAgcmV0dXJuIEF0dHIuQXR0cjsKICAgICAgIGVsc2UKICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CkBAIC02NzgsMjcgKzY3OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb2xvcl9QYWlyCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2F0dHJnZXQgKFdpbiA6IFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBBdHIgOiBhY2Nlc3MgQ19BdHRyVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBBdHIgOiBhY2Nlc3MgQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sIDogYWNjZXNzIENfU2hvcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdhdHRyZ2V0LCAid2F0dHJfZ2V0Iik7CiAKLSAgICAgIEF0dHIgOiBhbGlhc2VkIENfQXR0clR5cGU7CisgICAgICBBdHRyIDogYWxpYXNlZCBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgIENvbCAgOiBhbGlhc2VkIENfU2hvcnQ7CiAgICAgICBSZXMgIDogY29uc3RhbnQgQ19JbnQgOj0gV2F0dHJnZXQgKFdpbiwgQXR0cidBY2Nlc3MsIENvbCdBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5OdWxsX0FkZHJlc3MpOwotICAgICAgQ2ggICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgYmVnaW4KICAgICAgIGlmIFJlcyA9IEN1cnNlc19PayB0aGVuCi0gICAgICAgICBDaCA6PSBBdHRyVHlwZV9Ub19BdHRyQ2hhciAoQXR0cik7Ci0gICAgICAgICByZXR1cm4gQ2guQ29sb3I7CisgICAgICAgICByZXR1cm4gQXR0ci5Db2xvcjsKICAgICAgIGVsc2UKICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgR2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGU7CiAKLSAgIHByb2NlZHVyZSBTZXRfQ29sb3IgKFdpbiAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgUGFpciA6IGluIENvbG9yX1BhaXIpCisgICBwcm9jZWR1cmUgU2V0X0NvbG9yIChXaW4gIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIgOiBDb2xvcl9QYWlyKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdzZXRfQ29sb3IgKFdpbiAgIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgOiBDX1Nob3J0OwpAQCAtNzA3LDQxICs3MDUsNDQgQEAKICAgIGJlZ2luCiAgICAgICBpZiBXc2V0X0NvbG9yIChXaW4sCiAgICAgICAgICAgICAgICAgICAgICBDX1Nob3J0IChQYWlyKSwKLSAgICAgICAgICAgICAgICAgICAgIENfVm9pZF9QdHIgKFN5c3RlbS5OdWxsX0FkZHJlc3MpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgICAgICAgICAgICAgICAgQ19Wb2lkX1B0ciAoU3lzdGVtLk51bGxfQWRkcmVzcykpID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfQ29sb3I7CiAKICAgIHByb2NlZHVyZSBDaGFuZ2VfQXR0cmlidXRlcwotICAgICAoV2luICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgQ291bnQgOiBpbiBJbnRlZ2VyIDo9IC0xOwotICAgICAgQXR0ciAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCkKKyAgICAgKFdpbiAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIENvdW50IDogSW50ZWdlciA6PSAtMTsKKyAgICAgIEF0dHIgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2NoZ2F0IChXaW4gICA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgQ250ICAgOiBDX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgOiBDX0F0dHJUeXBlOworICAgICAgICAgICAgICAgICAgICAgICBBdHRyICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA6IENfU2hvcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIE9wdHMgIDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2NoZ2F0LCAid2NoZ2F0Iik7Ci0KLSAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0KLSAgICAgICAgKENoID0+IENoYXJhY3RlcidGaXJzdCwgQ29sb3IgPT4gQ29sb3JfUGFpcidGaXJzdCwgQXR0ciA9PiBBdHRyKTsKICAgIGJlZ2luCi0gICAgICBpZiBXY2hnYXQgKFdpbiwgQ19JbnQgKENvdW50KSwgQXR0ckNoYXJfVG9fQXR0clR5cGUgKENoKSwKLSAgICAgICAgICAgICAgICAgQ19TaG9ydCAoQ29sb3IpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgaWYgV2NoZ2F0IChXaW4sCisgICAgICAgICAgICAgICAgIENfSW50IChDb3VudCksCisgICAgICAgICAgICAgICAgIChDaCA9PiBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvcl9QYWlyJ0ZpcnN0LAorICAgICAgICAgICAgICAgICAgQXR0ciA9PiBBdHRyKSwKKyAgICAgICAgICAgICAgICAgQ19TaG9ydCAoQ29sb3IpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgQ2hhbmdlX0F0dHJpYnV0ZXM7CiAKICAgIHByb2NlZHVyZSBDaGFuZ2VfQXR0cmlidXRlcwotICAgICAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb24gOj0gTGluZV9Qb3NpdGlvbidGaXJzdDsKLSAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbiA6PSBDb2x1bW5fUG9zaXRpb24nRmlyc3Q7Ci0gICAgICBDb3VudCAgOiBpbiBJbnRlZ2VyIDo9IC0xOwotICAgICAgQXR0ciAgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgQ29sb3IgIDogaW4gQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQorICAgICAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb24gOj0gTGluZV9Qb3NpdGlvbidGaXJzdDsKKyAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbiA6PSBDb2x1bW5fUG9zaXRpb24nRmlyc3Q7CisgICAgICBDb3VudCAgOiBJbnRlZ2VyIDo9IC0xOworICAgICAgQXR0ciAgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQogICAgaXMKICAgIGJlZ2luCiAgICAgICBNb3ZlX0N1cnNvciAoV2luLCBMaW5lLCBDb2x1bW4pOwpAQCAtNzY4LDcgKzc2OSw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgRmxhc2hfU2NyZWVuOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgU2V0X0NicmVha19Nb2RlIChTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTZXRfQ2JyZWFrX01vZGUgKFN3aXRjaE9uIDogQm9vbGVhbiA6PSBUcnVlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIENicmVhayByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBDYnJlYWssICJjYnJlYWsiKTsKQEAgLTc4Nyw3ICs3ODgsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFNldF9DYnJlYWtfTW9kZTsKIAotICAgcHJvY2VkdXJlIFNldF9SYXdfTW9kZSAoU3dpdGNoT24gOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICBwcm9jZWR1cmUgU2V0X1Jhd19Nb2RlIChTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBSYXcgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgUmF3LCAicmF3Iik7CkBAIC04MDYsNyArODA3LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfUmF3X01vZGU7CiAKLSAgIHByb2NlZHVyZSBTZXRfRWNob19Nb2RlIChTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTZXRfRWNob19Nb2RlIChTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBFY2hvIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEVjaG8sICJlY2hvIik7CkBAIC04MjUsOCArODI2LDggQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfRWNob19Nb2RlOwogCi0gICBwcm9jZWR1cmUgU2V0X01ldGFfTW9kZSAoV2luICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaE9uIDogaW4gQm9vbGVhbiA6PSBUcnVlKQorICAgcHJvY2VkdXJlIFNldF9NZXRhX01vZGUgKFdpbiAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBNZXRhIChXIDogV2luZG93OyBNb2RlIDogQ3Vyc2VzX0Jvb2wpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1ldGEsICJtZXRhIik7CkBAIC04MzYsOCArODM3LDggQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfTWV0YV9Nb2RlOwogCi0gICBwcm9jZWR1cmUgU2V0X0tleVBhZF9Nb2RlIChXaW4gICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTZXRfS2V5UGFkX01vZGUgKFdpbiAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaE9uIDogQm9vbGVhbiA6PSBUcnVlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIEtleXBhZCAoVyA6IFdpbmRvdzsgTW9kZSA6IEN1cnNlc19Cb29sKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBLZXlwYWQsICJrZXlwYWQiKTsKQEAgLTg0Nyw3ICs4NDgsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFNldF9LZXlQYWRfTW9kZTsKIAotICAgZnVuY3Rpb24gR2V0X0tleVBhZF9Nb2RlIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQorICAgZnVuY3Rpb24gR2V0X0tleVBhZF9Nb2RlIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbgogICAgaXMKICAgICAgIGZ1bmN0aW9uIElzX0tleXBhZCAoVyA6IFdpbmRvdykgcmV0dXJuIEN1cnNlc19Cb29sOwpAQCAtODU2LDcgKzg1Nyw3IEBACiAgICAgICByZXR1cm4gKElzX0tleXBhZCAoV2luKSAvPSBDdXJzZXNfQm9vbF9GYWxzZSk7CiAgICBlbmQgR2V0X0tleVBhZF9Nb2RlOwogCi0gICBwcm9jZWR1cmUgSGFsZl9EZWxheSAoQW1vdW50IDogaW4gSGFsZl9EZWxheV9BbW91bnQpCisgICBwcm9jZWR1cmUgSGFsZl9EZWxheSAoQW1vdW50IDogSGFsZl9EZWxheV9BbW91bnQpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSGFsZmRlbGF5IChBbW91bnQgOiBDX0ludCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSGFsZmRlbGF5LCAiaGFsZmRlbGF5Iik7CkBAIC04NjcsOCArODY4LDggQEAKICAgIGVuZCBIYWxmX0RlbGF5OwogCiAgICBwcm9jZWR1cmUgU2V0X0ZsdXNoX09uX0ludGVycnVwdF9Nb2RlCi0gICAgIChXaW4gIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIE1vZGUgOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICAgIChXaW4gIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIE1vZGUgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSW50cmZsdXNoIChXaW4gOiBXaW5kb3c7IE1vZGUgOiBDdXJzZXNfQm9vbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50cmZsdXNoLCAiaW50cmZsdXNoIik7CkBAIC04NzksOCArODgwLDggQEAKICAgIGVuZCBTZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU7CiAKICAgIHByb2NlZHVyZSBTZXRfUXVldWVfSW50ZXJydXB0X01vZGUKLSAgICAgKFdpbiAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIEZsdXNoIDogaW4gQm9vbGVhbiA6PSBUcnVlKQorICAgICAoV2luICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgRmx1c2ggOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgcHJvY2VkdXJlIFFpZmx1c2g7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBRaWZsdXNoLCAicWlmbHVzaCIpOwpAQCAtODk4LDggKzg5OSw4IEBACiAgICBlbmQgU2V0X1F1ZXVlX0ludGVycnVwdF9Nb2RlOwogCiAgICBwcm9jZWR1cmUgU2V0X05vRGVsYXlfTW9kZQotICAgICAoV2luICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBNb2RlIDogaW4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgICAgKFdpbiAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTW9kZSA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICBpcwogICAgICAgZnVuY3Rpb24gTm9kZWxheSAoV2luIDogV2luZG93OyBNb2RlIDogQ3Vyc2VzX0Jvb2wpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE5vZGVsYXksICJub2RlbGF5Iik7CkBAIC05MDksOSArOTEwLDkgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfTm9EZWxheV9Nb2RlOwogCi0gICBwcm9jZWR1cmUgU2V0X1RpbWVvdXRfTW9kZSAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlICAgOiBpbiBUaW1lb3V0X01vZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW1vdW50IDogaW4gTmF0dXJhbCkKKyAgIHByb2NlZHVyZSBTZXRfVGltZW91dF9Nb2RlIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgICA6IFRpbWVvdXRfTW9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbW91bnQgOiBOYXR1cmFsKQogICAgaXMKICAgICAgIHByb2NlZHVyZSBXdGltZW91dCAoV2luIDogV2luZG93OyBBbW91bnQgOiBDX0ludCk7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXdGltZW91dCwgInd0aW1lb3V0Iik7CkBAIC05MzEsMjAgKzkzMiwyMSBAQAogICAgZW5kIFNldF9UaW1lb3V0X01vZGU7CiAKICAgIHByb2NlZHVyZSBTZXRfRXNjYXBlX1RpbWVyX01vZGUKLSAgICAgKFdpbiAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBUaW1lcl9PZmYgOiBpbiBCb29sZWFuIDo9IEZhbHNlKQorICAgICAoV2luICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIFRpbWVyX09mZiA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICBpcwogICAgICAgZnVuY3Rpb24gTm90aW1lb3V0IChXaW4gOiBXaW5kb3c7IE1vZGUgOiBDdXJzZXNfQm9vbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTm90aW1lb3V0LCAibm90aW1lb3V0Iik7CiAgICBiZWdpbgogICAgICAgaWYgTm90aW1lb3V0IChXaW4sIEN1cnNlc19Cb29sIChCb29sZWFuJ1BvcyAoVGltZXJfT2ZmKSkpCi0gICAgICAgID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfRXNjYXBlX1RpbWVyX01vZGU7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9OTF9Nb2RlIChTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTZXRfTkxfTW9kZSAoU3dpdGNoT24gOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gTkwgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTkwsICJubCIpOwpAQCAtOTY0LDggKzk2Niw4IEBACiAgICBlbmQgU2V0X05MX01vZGU7CiAKICAgIHByb2NlZHVyZSBDbGVhcl9Pbl9OZXh0X1VwZGF0ZQotICAgICAoV2luICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgRG9fQ2xlYXIgOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICAgIChXaW4gICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBEb19DbGVhciA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBDbGVhcl9PayAoVyA6IFdpbmRvdzsgRmxhZyA6IEN1cnNlc19Cb29sKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBDbGVhcl9PaywgImNsZWFyb2siKTsKQEAgLTk3Niw4ICs5NzgsOCBAQAogICAgZW5kIENsZWFyX09uX05leHRfVXBkYXRlOwogCiAgICBwcm9jZWR1cmUgVXNlX0luc2VydF9EZWxldGVfTGluZQotICAgICAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIERvX0lkbCA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBEb19JZGwgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSURMX09rIChXIDogV2luZG93OyBGbGFnIDogQ3Vyc2VzX0Jvb2wpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIElETF9PaywgImlkbG9rIik7CkBAIC05ODgsOCArOTkwLDggQEAKICAgIGVuZCBVc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lOwogCiAgICBwcm9jZWR1cmUgVXNlX0luc2VydF9EZWxldGVfQ2hhcmFjdGVyCi0gICAgIChXaW4gICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgRG9fSWRjIDogaW4gQm9vbGVhbiA6PSBUcnVlKQorICAgICAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIERvX0lkYyA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBwcm9jZWR1cmUgSURDX09rIChXIDogV2luZG93OyBGbGFnIDogQ3Vyc2VzX0Jvb2wpOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSURDX09rLCAiaWRjb2siKTsKQEAgLTk5OCw4ICsxMDAwLDggQEAKICAgIGVuZCBVc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI7CiAKICAgIHByb2NlZHVyZSBMZWF2ZV9DdXJzb3JfQWZ0ZXJfVXBkYXRlCi0gICAgIChXaW4gICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBEb19MZWF2ZSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgKFdpbiAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIERvX0xlYXZlIDogQm9vbGVhbiA6PSBUcnVlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIExlYXZlX09rIChXIDogV2luZG93OyBGbGFnIDogQ3Vyc2VzX0Jvb2wpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIExlYXZlX09rLCAibGVhdmVvayIpOwpAQCAtMTAxMCw4ICsxMDEyLDggQEAKICAgIGVuZCBMZWF2ZV9DdXJzb3JfQWZ0ZXJfVXBkYXRlOwogCiAgICBwcm9jZWR1cmUgSW1tZWRpYXRlX1VwZGF0ZV9Nb2RlCi0gICAgIChXaW4gIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIE1vZGUgOiBpbiBCb29sZWFuIDo9IEZhbHNlKQorICAgICAoV2luICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBNb2RlIDogQm9vbGVhbiA6PSBGYWxzZSkKICAgIGlzCiAgICAgICBwcm9jZWR1cmUgSW1tZWRvayAoV2luIDogV2luZG93OyBNb2RlIDogQ3Vyc2VzX0Jvb2wpOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW1tZWRvaywgImltbWVkb2siKTsKQEAgLTEwMjAsOCArMTAyMiw4IEBACiAgICBlbmQgSW1tZWRpYXRlX1VwZGF0ZV9Nb2RlOwogCiAgICBwcm9jZWR1cmUgQWxsb3dfU2Nyb2xsaW5nCi0gICAgIChXaW4gIDogaW4gV2luZG93ICA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBNb2RlIDogaW4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgICAgKFdpbiAgOiBXaW5kb3cgIDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIE1vZGUgOiBCb29sZWFuIDo9IEZhbHNlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNjcm9sbG9rIChXaW4gOiBXaW5kb3c7IE1vZGUgOiBDdXJzZXNfQm9vbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2Nyb2xsb2ssICJzY3JvbGxvayIpOwpAQCAtMTA0MSw5ICsxMDQzLDkgQEAKICAgIGVuZCBTY3JvbGxpbmdfQWxsb3dlZDsKIAogICAgcHJvY2VkdXJlIFNldF9TY3JvbGxfUmVnaW9uCi0gICAgIChXaW4gICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBUb3BfTGluZSAgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBCb3R0b21fTGluZSA6IGluIExpbmVfUG9zaXRpb24pCisgICAgIChXaW4gICAgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBUb3BfTGluZSAgICA6IExpbmVfUG9zaXRpb247CisgICAgICBCb3R0b21fTGluZSA6IExpbmVfUG9zaXRpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gV3NldHNjcnJlZyAoV2luIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluIDogQ19JbnQ7CkBAIC0xMDUxLDcgKzEwNTMsOCBAQAogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV3NldHNjcnJlZywgIndzZXRzY3JyZWciKTsKICAgIGJlZ2luCiAgICAgICBpZiBXc2V0c2NycmVnIChXaW4sIENfSW50IChUb3BfTGluZSksIENfSW50IChCb3R0b21fTGluZSkpCi0gICAgICAgID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfU2Nyb2xsX1JlZ2lvbjsKQEAgLTEwNjYsNyArMTA2OSw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgVXBkYXRlX1NjcmVlbjsKIAotICAgcHJvY2VkdXJlIFJlZnJlc2ggKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCisgICBwcm9jZWR1cmUgUmVmcmVzaCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXcmVmcmVzaCAoVyA6IFdpbmRvdykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV3JlZnJlc2gsICJ3cmVmcmVzaCIpOwpAQCAtMTA3Nyw3ICsxMDgwLDcgQEAKICAgIGVuZCBSZWZyZXNoOwogCiAgICBwcm9jZWR1cmUgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZQotICAgICAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV25vdXRyZWZyZXNoIChXIDogV2luZG93KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXbm91dHJlZnJlc2gsICJ3bm91dHJlZnJlc2giKTsKQEAgLTEwODcsNyArMTA5MCw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZTsKIAotICAgcHJvY2VkdXJlIFJlZHJhdyAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBSZWRyYXcgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCiAgICBpcwogICAgICAgZnVuY3Rpb24gUmVkcmF3d2luIChXaW4gOiBXaW5kb3cpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZHJhd3dpbiwgInJlZHJhd3dpbiIpOwpAQCAtMTA5OCw5ICsxMTAxLDkgQEAKICAgIGVuZCBSZWRyYXc7CiAKICAgIHByb2NlZHVyZSBSZWRyYXcKLSAgICAgKFdpbiAgICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgQmVnaW5fTGluZSA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBMaW5lX0NvdW50IDogaW4gUG9zaXRpdmUpCisgICAgIChXaW4gICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIEJlZ2luX0xpbmUgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgTGluZV9Db3VudCA6IFBvc2l0aXZlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdyZWRyYXdsbiAoV2luIDogV2luZG93OyBGaXJzdCA6IENfSW50OyBDbnQgOiBDX0ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENfSW50OwpAQCAtMTEwOCwxMyArMTExMSwxNCBAQAogICAgYmVnaW4KICAgICAgIGlmIFdyZWRyYXdsbiAoV2luLAogICAgICAgICAgICAgICAgICAgICBDX0ludCAoQmVnaW5fTGluZSksCi0gICAgICAgICAgICAgICAgICAgIENfSW50IChMaW5lX0NvdW50KSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgQ19JbnQgKExpbmVfQ291bnQpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVkcmF3OwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBFcmFzZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBFcmFzZSAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXZXJhc2UgKFcgOiBXaW5kb3cpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdlcmFzZSwgIndlcmFzZSIpOwpAQCAtMTEyNCw3ICsxMTI4LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBFcmFzZTsKIAotICAgcHJvY2VkdXJlIENsZWFyIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQorICAgcHJvY2VkdXJlIENsZWFyIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdjbGVhciAoVyA6IFdpbmRvdykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2NsZWFyLCAid2NsZWFyIik7CkBAIC0xMTM0LDcgKzExMzgsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIENsZWFyOwogCi0gICBwcm9jZWR1cmUgQ2xlYXJfVG9fRW5kX09mX1NjcmVlbiAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBDbGVhcl9Ub19FbmRfT2ZfU2NyZWVuIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdjbGVhcmJvdCAoVyA6IFdpbmRvdykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2NsZWFyYm90LCAid2NscnRvYm90Iik7CkBAIC0xMTQ0LDcgKzExNDgsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIENsZWFyX1RvX0VuZF9PZl9TY3JlZW47CiAKLSAgIHByb2NlZHVyZSBDbGVhcl9Ub19FbmRfT2ZfTGluZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBDbGVhcl9Ub19FbmRfT2ZfTGluZSAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXY2xlYXJlb2wgKFcgOiBXaW5kb3cpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdjbGVhcmVvbCwgIndjbHJ0b2VvbCIpOwpAQCAtMTE1NSwyMyArMTE1OSwyNCBAQAogICAgZW5kIENsZWFyX1RvX0VuZF9PZl9MaW5lOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKICAgIGlzCi0gICAgICBwcm9jZWR1cmUgV0JhY2tncm91bmQgKFcgOiBpbiBXaW5kb3c7IENoIDogaW4gQ19DaHR5cGUpOworICAgICAgcHJvY2VkdXJlIFdCYWNrZ3JvdW5kIChXIDogV2luZG93OyBDaCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdCYWNrZ3JvdW5kLCAid2JrZ2RzZXQiKTsKICAgIGJlZ2luCi0gICAgICBXQmFja2dyb3VuZCAoV2luLCBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSk7CisgICAgICBXQmFja2dyb3VuZCAoV2luLCBDaCk7CiAgICBlbmQgU2V0X0JhY2tncm91bmQ7CiAKICAgIHByb2NlZHVyZSBDaGFuZ2VfQmFja2dyb3VuZAotICAgICAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIENoICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQorICAgICAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIENoICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFdDaGFuZ2VCa2dkIChXIDogV2luZG93OyBDaCA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBXQ2hhbmdlQmtnZCAoVyA6IFdpbmRvdzsgQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKKyAgICAgICAgIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdDaGFuZ2VCa2dkLCAid2JrZ2QiKTsKICAgIGJlZ2luCi0gICAgICBpZiBXQ2hhbmdlQmtnZCAoV2luLCBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgIGlmIFdDaGFuZ2VCa2dkIChXaW4sIENoKSA9IEN1cnNlc19FcnIgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBDaGFuZ2VfQmFja2dyb3VuZDsKQEAgLTExNzksMTYgKzExODQsMTYgQEAKICAgIGZ1bmN0aW9uIEdldF9CYWNrZ3JvdW5kIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgICByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXIKICAgIGlzCi0gICAgICBmdW5jdGlvbiBXZ2V0YmtnZCAoV2luIDogV2luZG93KSByZXR1cm4gQ19DaHR5cGU7CisgICAgICBmdW5jdGlvbiBXZ2V0YmtnZCAoV2luIDogV2luZG93KSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXZ2V0YmtnZCwgImdldGJrZ2QiKTsKICAgIGJlZ2luCi0gICAgICByZXR1cm4gQ2h0eXBlX1RvX0F0dHJDaGFyIChXZ2V0YmtnZCAoV2luKSk7CisgICAgICByZXR1cm4gV2dldGJrZ2QgKFdpbik7CiAgICBlbmQgR2V0X0JhY2tncm91bmQ7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBDaGFuZ2VfTGluZXNfU3RhdHVzIChXaW4gICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50IDogaW4gUG9zaXRpdmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgOiBpbiBCb29sZWFuKQorICAgcHJvY2VkdXJlIENoYW5nZV9MaW5lc19TdGF0dXMgKFdpbiAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydCA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnQgOiBQb3NpdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSA6IEJvb2xlYW4pCiAgICBpcwogICAgICAgZnVuY3Rpb24gV3RvdWNobG4gKFdpbiA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICBTdGEgOiBDX0ludDsKQEAgLTExOTcsMzIgKzEyMDIsMzUgQEAKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFd0b3VjaGxuLCAid3RvdWNobG4iKTsKICAgIGJlZ2luCiAgICAgICBpZiBXdG91Y2hsbiAoV2luLCBDX0ludCAoU3RhcnQpLCBDX0ludCAoQ291bnQpLAotICAgICAgICAgICAgICAgICAgIENfSW50IChCb29sZWFuJ1BvcyAoU3RhdGUpKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgICAgICAgICAgICBDX0ludCAoQm9vbGVhbidQb3MgKFN0YXRlKSkpID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBDaGFuZ2VfTGluZXNfU3RhdHVzOwogCi0gICBwcm9jZWR1cmUgVG91Y2ggKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCisgICBwcm9jZWR1cmUgVG91Y2ggKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCiAgICBpcwogICAgICAgWSA6IExpbmVfUG9zaXRpb247CiAgICAgICBYIDogQ29sdW1uX1Bvc2l0aW9uOwogICAgYmVnaW4KICAgICAgIEdldF9TaXplIChXaW4sIFksIFgpOworICAgICAgcHJhZ21hIFdhcm5pbmdzIChPZmYsIFgpOyAgICAgICAgIC0tICB1bnJlZmVyZW5jZWQKICAgICAgIENoYW5nZV9MaW5lc19TdGF0dXMgKFdpbiwgMCwgUG9zaXRpdmUgKFkpLCBUcnVlKTsKICAgIGVuZCBUb3VjaDsKIAotICAgcHJvY2VkdXJlIFVudG91Y2ggKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCisgICBwcm9jZWR1cmUgVW50b3VjaCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICAgICBZIDogTGluZV9Qb3NpdGlvbjsKICAgICAgIFggOiBDb2x1bW5fUG9zaXRpb247CiAgICBiZWdpbgogICAgICAgR2V0X1NpemUgKFdpbiwgWSwgWCk7CisgICAgICBwcmFnbWEgV2FybmluZ3MgKE9mZiwgWCk7ICAgICAgICAgLS0gIHVucmVmZXJlbmNlZAogICAgICAgQ2hhbmdlX0xpbmVzX1N0YXR1cyAoV2luLCAwLCBQb3NpdGl2ZSAoWSksIEZhbHNlKTsKICAgIGVuZCBVbnRvdWNoOwogCi0gICBwcm9jZWR1cmUgVG91Y2ggKFdpbiAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgU3RhcnQgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICBDb3VudCA6IGluIFBvc2l0aXZlKQorICAgcHJvY2VkdXJlIFRvdWNoIChXaW4gICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgIFN0YXJ0IDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgQ291bnQgOiBQb3NpdGl2ZSkKICAgIGlzCiAgICBiZWdpbgogICAgICAgQ2hhbmdlX0xpbmVzX1N0YXR1cyAoV2luLCBTdGFydCwgQ291bnQsIFRydWUpOwpAQCAtMTI1NiwxNSArMTI2NCwxNSBAQAogICAgZW5kIElzX1RvdWNoZWQ7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHByb2NlZHVyZSBDb3B5Ci0gICAgIChTb3VyY2VfV2luZG93ICAgICAgICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICBEZXN0aW5hdGlvbl9XaW5kb3cgICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICBTb3VyY2VfVG9wX1JvdyAgICAgICAgICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgU291cmNlX0xlZnRfQ29sdW1uICAgICAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fVG9wX1JvdyAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBOb25fRGVzdHJ1Y3RpdmVfTW9kZSAgICAgOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICAgIChTb3VyY2VfV2luZG93ICAgICAgICAgICAgOiBXaW5kb3c7CisgICAgICBEZXN0aW5hdGlvbl9XaW5kb3cgICAgICAgOiBXaW5kb3c7CisgICAgICBTb3VyY2VfVG9wX1JvdyAgICAgICAgICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgU291cmNlX0xlZnRfQ29sdW1uICAgICAgIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fVG9wX1JvdyAgICAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uICA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cgICA6IExpbmVfUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4gOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBOb25fRGVzdHJ1Y3RpdmVfTW9kZSAgICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gQ29weXdpbiAoU3JjIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgRHN0IDogV2luZG93OwpAQCAtMTI4NiwxNCArMTI5NCwxNSBAQAogICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cpLAogICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbiksCiAgICAgICAgICAgICAgICAgICBCb29sZWFuJ1BvcyAoTm9uX0Rlc3RydWN0aXZlX01vZGUpCi0gICAgICAgICAgICAgICAgKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgICAgICAgICAgICApID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBDb3B5OwogCiAgICBwcm9jZWR1cmUgT3ZlcndyaXRlCi0gICAgIChTb3VyY2VfV2luZG93ICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICBEZXN0aW5hdGlvbl9XaW5kb3cgOiBpbiBXaW5kb3cpCisgICAgIChTb3VyY2VfV2luZG93ICAgICAgOiBXaW5kb3c7CisgICAgICBEZXN0aW5hdGlvbl9XaW5kb3cgOiBXaW5kb3cpCiAgICBpcwogICAgICAgZnVuY3Rpb24gT3ZlcndyaXRlIChTcmMgOiBXaW5kb3c7IERzdCA6IFdpbmRvdykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgT3ZlcndyaXRlLCAib3ZlcndyaXRlIik7CkBAIC0xMzA0LDggKzEzMTMsOCBAQAogICAgZW5kIE92ZXJ3cml0ZTsKIAogICAgcHJvY2VkdXJlIE92ZXJsYXkKLSAgICAgKFNvdXJjZV9XaW5kb3cgICAgICA6IGluIFdpbmRvdzsKLSAgICAgIERlc3RpbmF0aW9uX1dpbmRvdyA6IGluIFdpbmRvdykKKyAgICAgKFNvdXJjZV9XaW5kb3cgICAgICA6IFdpbmRvdzsKKyAgICAgIERlc3RpbmF0aW9uX1dpbmRvdyA6IFdpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBPdmVybGF5IChTcmMgOiBXaW5kb3c7IERzdCA6IFdpbmRvdykgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgT3ZlcmxheSwgIm92ZXJsYXkiKTsKQEAgLTEzMTcsOCArMTMyNiw4IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJvY2VkdXJlIEluc2VydF9EZWxldGVfTGluZXMKLSAgICAgKFdpbiAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmVzIDogaW4gSW50ZWdlciAgICAgICA6PSAxKSAtLSBkZWZhdWx0IGlzIHRvIGluc2VydCBvbmUgbGluZSBhYm92ZQorICAgICAoV2luICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZXMgOiBJbnRlZ2VyICAgICAgIDo9IDEpIC0tIGRlZmF1bHQgaXMgdG8gaW5zZXJ0IG9uZSBsaW5lIGFib3ZlCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2luc2RlbGxuIChXIDogV2luZG93OyBOIDogQ19JbnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdpbnNkZWxsbiwgIndpbnNkZWxsbiIpOwpAQCAtMTMyOCwxMyArMTMzNywxMyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIEluc2VydF9EZWxldGVfTGluZXM7CiAKLSAgIHByb2NlZHVyZSBEZWxldGVfTGluZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBEZWxldGVfTGluZSAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICBiZWdpbgogICAgICAgSW5zZXJ0X0RlbGV0ZV9MaW5lcyAoV2luLCAtMSk7CiAgICBlbmQgRGVsZXRlX0xpbmU7CiAKLSAgIHByb2NlZHVyZSBJbnNlcnRfTGluZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBJbnNlcnRfTGluZSAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKICAgIGlzCiAgICBiZWdpbgogICAgICAgSW5zZXJ0X0RlbGV0ZV9MaW5lcyAoV2luLCAxKTsKQEAgLTEzNDIsNyArMTM1MSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgcHJvY2VkdXJlIEdldF9TaXplCi0gICAgIChXaW4gICAgICAgICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgIChXaW4gICAgICAgICAgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CiAgICAgICBOdW1iZXJfT2ZfTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgTnVtYmVyX09mX0NvbHVtbnMgOiBvdXQgQ29sdW1uX0NvdW50KQogICAgaXMKQEAgLTEzNTIsMTcgKzEzNjEsMTUgQEAKICAgICAgIGZ1bmN0aW9uIEdldE1heFggKFcgOiBXaW5kb3cpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEdldE1heFgsICJnZXRtYXh4Iik7CiAKLSAgICAgIFkgOiBjb25zdGFudCBDX0ludCA6PSBHZXRNYXhZIChXaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICsgQ19JbnQgKE9mZnNldF9YWSk7Ci0gICAgICBYIDogY29uc3RhbnQgQ19JbnQgOj0gR2V0TWF4WCAoV2luKQotICAgICAgICAgICAgICAgICAgICAgICAgICArIENfSW50IChPZmZzZXRfWFkpOworICAgICAgWSA6IGNvbnN0YW50IENfSW50IDo9IEdldE1heFkgKFdpbik7CisgICAgICBYIDogY29uc3RhbnQgQ19JbnQgOj0gR2V0TWF4WCAoV2luKTsKICAgIGJlZ2luCiAgICAgICBOdW1iZXJfT2ZfTGluZXMgICA6PSBMaW5lX0NvdW50IChZKTsKICAgICAgIE51bWJlcl9PZl9Db2x1bW5zIDo9IENvbHVtbl9Db3VudCAoWCk7CiAgICBlbmQgR2V0X1NpemU7CiAKICAgIHByb2NlZHVyZSBHZXRfV2luZG93X1Bvc2l0aW9uCi0gICAgIChXaW4gICAgICAgICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAoV2luICAgICAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgIFRvcF9MZWZ0X0xpbmUgICA6IG91dCBMaW5lX1Bvc2l0aW9uOwogICAgICAgVG9wX0xlZnRfQ29sdW1uIDogb3V0IENvbHVtbl9Qb3NpdGlvbikKICAgIGlzCkBAIC0xMzgwLDcgKzEzODcsNyBAQAogICAgZW5kIEdldF9XaW5kb3dfUG9zaXRpb247CiAKICAgIHByb2NlZHVyZSBHZXRfQ3Vyc29yX1Bvc2l0aW9uCi0gICAgIChXaW4gICAgOiBpbiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgKFdpbiAgICA6ICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwogICAgICAgTGluZSAgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICBDb2x1bW4gOiBvdXQgQ29sdW1uX1Bvc2l0aW9uKQogICAgaXMKQEAgLTEzOTgsNyArMTQwNSw3IEBACiAgICBlbmQgR2V0X0N1cnNvcl9Qb3NpdGlvbjsKIAogICAgcHJvY2VkdXJlIEdldF9PcmlnaW5fUmVsYXRpdmVfVG9fUGFyZW50Ci0gICAgIChXaW4gICAgICAgICAgICAgICAgOiBpbiAgV2luZG93OworICAgICAoV2luICAgICAgICAgICAgICAgIDogIFdpbmRvdzsKICAgICAgIFRvcF9MZWZ0X0xpbmUgICAgICA6IG91dCBMaW5lX1Bvc2l0aW9uOwogICAgICAgVG9wX0xlZnRfQ29sdW1uICAgIDogb3V0IENvbHVtbl9Qb3NpdGlvbjsKICAgICAgIElzX05vdF9BX1N1YndpbmRvdyA6IG91dCBCb29sZWFuKQpAQCAtMTQ2NywxMyArMTQ3NCwxMyBAQAogICAgZW5kIFN1Yl9QYWQ7CiAKICAgIHByb2NlZHVyZSBSZWZyZXNoCi0gICAgIChQYWQgICAgICAgICAgICAgICAgICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICBTb3VyY2VfVG9wX1JvdyAgICAgICAgICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgU291cmNlX0xlZnRfQ29sdW1uICAgICAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fVG9wX1JvdyAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb24pCisgICAgIChQYWQgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3c7CisgICAgICBTb3VyY2VfVG9wX1JvdyAgICAgICAgICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgU291cmNlX0xlZnRfQ29sdW1uICAgICAgIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fVG9wX1JvdyAgICAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uICA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cgICA6IExpbmVfUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gUHJlZnJlc2gKICAgICAgICAgKFBhZCAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvdzsKQEAgLTE0OTEsMTkgKzE0OTgsMjAgQEAKICAgICAgICAgICAgICAgICAgICBDX0ludCAoRGVzdGluYXRpb25fVG9wX1JvdyksCiAgICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uKSwKICAgICAgICAgICAgICAgICAgICBDX0ludCAoRGVzdGluYXRpb25fQm90dG9tX1JvdyksCi0gICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbikpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbikpID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBSZWZyZXNoOwogCiAgICBwcm9jZWR1cmUgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZQotICAgICAoUGFkICAgICAgICAgICAgICAgICAgICAgIDogaW4gV2luZG93OwotICAgICAgU291cmNlX1RvcF9Sb3cgICAgICAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIFNvdXJjZV9MZWZ0X0NvbHVtbiAgICAgICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX1RvcF9Sb3cgICAgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiAgOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9Cb3R0b21fUm93ICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fUmlnaHRfQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKQorICAgICAoUGFkICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93OworICAgICAgU291cmNlX1RvcF9Sb3cgICAgICAgICAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIFNvdXJjZV9MZWZ0X0NvbHVtbiAgICAgICA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX1RvcF9Sb3cgICAgICA6IExpbmVfUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9Cb3R0b21fUm93ICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fUmlnaHRfQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFBub3V0cmVmcmVzaAogICAgICAgICAoUGFkICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93OwpAQCAtMTUyMSwyNyArMTUyOSwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoRGVzdGluYXRpb25fVG9wX1JvdyksCiAgICAgICAgICAgICAgICAgICAgICAgIENfSW50IChEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiksCiAgICAgICAgICAgICAgICAgICAgICAgIENfSW50IChEZXN0aW5hdGlvbl9Cb3R0b21fUm93KSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbikpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgIENfSW50IChEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4pKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZTsKIAogICAgcHJvY2VkdXJlIEFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0Ci0gICAgIChQYWQgOiBpbiBXaW5kb3c7Ci0gICAgICBDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikKKyAgICAgKFBhZCA6IFdpbmRvdzsKKyAgICAgIENoICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFBlY2hvY2hhciAoUGFkIDogV2luZG93OyBDaCA6IENfQ2h0eXBlKQorICAgICAgZnVuY3Rpb24gUGVjaG9jaGFyIChQYWQgOiBXaW5kb3c7IENoIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFBlY2hvY2hhciwgInBlY2hvY2hhciIpOwogICAgYmVnaW4KLSAgICAgIGlmIFBlY2hvY2hhciAoUGFkLCBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSkgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgIGlmIFBlY2hvY2hhciAoUGFkLCBDaCkgPSBDdXJzZXNfRXJyIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgQWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ7CiAKICAgIHByb2NlZHVyZSBBZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdAotICAgICAoUGFkIDogaW4gV2luZG93OwotICAgICAgQ2ggIDogaW4gQ2hhcmFjdGVyKQorICAgICAoUGFkIDogV2luZG93OworICAgICAgQ2ggIDogQ2hhcmFjdGVyKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBBZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdApAQCAtMTU1MSw4ICsxNTYwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyICA9PiBOb3JtYWxfVmlkZW8pKTsKICAgIGVuZCBBZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNjcm9sbCAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgIEFtb3VudCA6IGluIEludGVnZXIgOj0gMSkKKyAgIHByb2NlZHVyZSBTY3JvbGwgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICBBbW91bnQgOiBJbnRlZ2VyIDo9IDEpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV3NjcmwgKFdpbiA6IFdpbmRvdzsgTiA6IENfSW50KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXc2NybCwgIndzY3JsIik7CkBAIC0xNTY0LDcgKzE1NzMsNyBAQAogICAgZW5kIFNjcm9sbDsKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgRGVsZXRlX0NoYXJhY3RlciAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykKKyAgIHByb2NlZHVyZSBEZWxldGVfQ2hhcmFjdGVyIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdkZWxjaCAoV2luIDogV2luZG93KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBXZGVsY2gsICJ3ZGVsY2giKTsKQEAgLTE1NzUsOSArMTU4NCw5IEBACiAgICBlbmQgRGVsZXRlX0NoYXJhY3RlcjsKIAogICAgcHJvY2VkdXJlIERlbGV0ZV9DaGFyYWN0ZXIKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKQorICAgICAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb247CisgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gTXZ3ZGVsY2ggKFdpbiA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICBMaW4gOiBDX0ludDsKQEAgLTE1OTIsMTAgKzE2MDEsMTAgQEAKICAgIGZ1bmN0aW9uIFBlZWsgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpCiAgICAgIHJldHVybiBBdHRyaWJ1dGVkX0NoYXJhY3RlcgogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFdpbmNoIChXaW4gOiBXaW5kb3cpIHJldHVybiBDX0NodHlwZTsKKyAgICAgIGZ1bmN0aW9uIFdpbmNoIChXaW4gOiBXaW5kb3cpIHJldHVybiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFdpbmNoLCAid2luY2giKTsKICAgIGJlZ2luCi0gICAgICByZXR1cm4gQ2h0eXBlX1RvX0F0dHJDaGFyIChXaW5jaCAoV2luKSk7CisgICAgICByZXR1cm4gV2luY2ggKFdpbik7CiAgICBlbmQgUGVlazsKIAogICAgZnVuY3Rpb24gUGVlawpAQCAtMTYwNSw0NiArMTYxNCw0NyBAQAogICAgaXMKICAgICAgIGZ1bmN0aW9uIE12d2luY2ggKFdpbiA6IFdpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgIExpbiA6IENfSW50OwotICAgICAgICAgICAgICAgICAgICAgICAgQ29sIDogQ19JbnQpIHJldHVybiBDX0NodHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbCA6IENfSW50KSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNdndpbmNoLCAibXZ3aW5jaCIpOwogICAgYmVnaW4KLSAgICAgIHJldHVybiBDaHR5cGVfVG9fQXR0ckNoYXIgKE12d2luY2ggKFdpbiwgQ19JbnQgKExpbmUpLCBDX0ludCAoQ29sdW1uKSkpOworICAgICAgcmV0dXJuIE12d2luY2ggKFdpbiwgQ19JbnQgKExpbmUpLCBDX0ludCAoQ29sdW1uKSk7CiAgICBlbmQgUGVlazsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIEluc2VydCAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgIENoICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQorICAgcHJvY2VkdXJlIEluc2VydCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgIENoICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFdpbnNjaCAoV2luIDogV2luZG93OyBDaCA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBXaW5zY2ggKFdpbiA6IFdpbmRvdzsgQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2luc2NoLCAid2luc2NoIik7CiAgICBiZWdpbgotICAgICAgaWYgV2luc2NoIChXaW4sIEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgaWYgV2luc2NoIChXaW4sIENoKSA9IEN1cnNlc19FcnIgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBJbnNlcnQ7CiAKICAgIHByb2NlZHVyZSBJbnNlcnQKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgQ2ggICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIpCisgICAgIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIENoICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIE12d2luc2NoIChXaW4gOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgTGluIDogQ19JbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sIDogQ19JbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQ2ggIDogQ19DaHR5cGUpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTXZ3aW5zY2gsICJtdndpbnNjaCIpOwogICAgYmVnaW4KICAgICAgIGlmIE12d2luc2NoIChXaW4sCiAgICAgICAgICAgICAgICAgICAgQ19JbnQgKExpbmUpLAogICAgICAgICAgICAgICAgICAgIENfSW50IChDb2x1bW4pLAotICAgICAgICAgICAgICAgICAgIEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgICAgICAgICAgICAgIENoKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgSW5zZXJ0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgU3RyIDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgTGVuIDogaW4gSW50ZWdlciA6PSAtMSkKKyAgIHByb2NlZHVyZSBJbnNlcnQgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICBTdHIgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICBMZW4gOiBJbnRlZ2VyIDo9IC0xKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFdpbnNuc3RyIChXaW4gOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyIDogY2hhcl9hcnJheTsKQEAgLTE2NjEsMTEgKzE2NzEsMTEgQEAKICAgIGVuZCBJbnNlcnQ7CiAKICAgIHByb2NlZHVyZSBJbnNlcnQKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgU3RyICAgIDogaW4gU3RyaW5nOwotICAgICAgTGVuICAgIDogaW4gSW50ZWdlciA6PSAtMSkKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgU3RyICAgIDogU3RyaW5nOworICAgICAgTGVuICAgIDogSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBNdndpbnNuc3RyIChXaW4gICAgOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBDX0ludDsKQEAgLTE2NzksMTQgKzE2ODksMTUgQEAKICAgIGJlZ2luCiAgICAgICBUb19DIChTdHIsIFR4dCwgTGVuZ3RoKTsKICAgICAgIGlmIE12d2luc25zdHIgKFdpbiwgQ19JbnQgKExpbmUpLCBDX0ludCAoQ29sdW1uKSwgVHh0LCBDX0ludCAoTGVuKSkKLSAgICAgICAgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgPSBDdXJzZXNfRXJyCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIEluc2VydDsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFBlZWsgKFdpbiA6IGluICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgcHJvY2VkdXJlIFBlZWsgKFdpbiA6ICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwogICAgICAgICAgICAgICAgICAgIFN0ciA6IG91dCBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgTGVuIDogaW4gIEludGVnZXIgOj0gLTEpCisgICAgICAgICAgICAgICAgICAgTGVuIDogIEludGVnZXIgOj0gLTEpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2lubnN0ciAoV2luIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgU3RyIDogY2hhcl9hcnJheTsKQEAgLTE3MTQsMTEgKzE3MjUsMTEgQEAKICAgIGVuZCBQZWVrOwogCiAgICBwcm9jZWR1cmUgUGVlawotICAgICAoV2luICAgIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiAgTGluZV9Qb3NpdGlvbjsKLSAgICAgIENvbHVtbiA6IGluICBDb2x1bW5fUG9zaXRpb247CisgICAgIChXaW4gICAgOiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmUgICA6ICBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogIENvbHVtbl9Qb3NpdGlvbjsKICAgICAgIFN0ciAgICA6IG91dCBTdHJpbmc7Ci0gICAgICBMZW4gICAgOiBpbiAgSW50ZWdlciA6PSAtMSkKKyAgICAgIExlbiAgICA6ICBJbnRlZ2VyIDo9IC0xKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBNb3ZlX0N1cnNvciAoV2luLCBMaW5lLCBDb2x1bW4pOwpAQCAtMTcyNiw5ICsxNzM3LDkgQEAKICAgIGVuZCBQZWVrOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBwcm9jZWR1cmUgUGVlawotICAgICAoV2luIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgIChXaW4gOiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgIFN0ciA6IG91dCBBdHRyaWJ1dGVkX1N0cmluZzsKLSAgICAgIExlbiA6IGluICBJbnRlZ2VyIDo9IC0xKQorICAgICAgTGVuIDogIEludGVnZXIgOj0gLTEpCiAgICBpcwogICAgICAgZnVuY3Rpb24gV2luY2huc3RyIChXaW4gOiBXaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciA6IGNodHlwZV9hcnJheTsgICAgICAgICAgICAgLS0gb3V0CkBAIC0xNzYzLDIwICsxNzc0LDIwIEBACiAgICBlbmQgUGVlazsKIAogICAgcHJvY2VkdXJlIFBlZWsKLSAgICAgKFdpbiAgICA6IGluICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTGluZSAgIDogaW4gIExpbmVfUG9zaXRpb247Ci0gICAgICBDb2x1bW4gOiBpbiAgQ29sdW1uX1Bvc2l0aW9uOworICAgICAoV2luICAgIDogIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiAgTGluZV9Qb3NpdGlvbjsKKyAgICAgIENvbHVtbiA6ICBDb2x1bW5fUG9zaXRpb247CiAgICAgICBTdHIgICAgOiBvdXQgQXR0cmlidXRlZF9TdHJpbmc7Ci0gICAgICBMZW4gICAgOiBpbiBJbnRlZ2VyIDo9IC0xKQorICAgICAgTGVuICAgIDogSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICBiZWdpbgogICAgICAgTW92ZV9DdXJzb3IgKFdpbiwgTGluZSwgQ29sdW1uKTsKICAgICAgIFBlZWsgKFdpbiwgU3RyLCBMZW4pOwogICAgZW5kIFBlZWs7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBHZXQgKFdpbiA6IGluICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgcHJvY2VkdXJlIEdldCAoV2luIDogIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CiAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nOwotICAgICAgICAgICAgICAgICAgTGVuIDogaW4gIEludGVnZXIgOj0gLTEpCisgICAgICAgICAgICAgICAgICBMZW4gOiAgSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXZ2V0bnN0ciAoV2luIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciA6IGNoYXJfYXJyYXk7CkBAIC0xODA0LDExICsxODE1LDExIEBACiAgICBlbmQgR2V0OwogCiAgICBwcm9jZWR1cmUgR2V0Ci0gICAgIChXaW4gICAgOiBpbiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmUgICA6IGluICBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gIENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgKFdpbiAgICA6ICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZSAgIDogIExpbmVfUG9zaXRpb247CisgICAgICBDb2x1bW4gOiAgQ29sdW1uX1Bvc2l0aW9uOwogICAgICAgU3RyICAgIDogb3V0IFN0cmluZzsKLSAgICAgIExlbiAgICA6IGluICBJbnRlZ2VyIDo9IC0xKQorICAgICAgTGVuICAgIDogIEludGVnZXIgOj0gLTEpCiAgICBpcwogICAgYmVnaW4KICAgICAgIE1vdmVfQ3Vyc29yIChXaW4sIExpbmUsIENvbHVtbik7CkBAIC0xODE2LDcgKzE4MjcsNyBAQAogICAgZW5kIEdldDsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJvY2VkdXJlIEluaXRfU29mdF9MYWJlbF9LZXlzCi0gICAgIChGb3JtYXQgOiBpbiBTb2Z0X0xhYmVsX0tleV9Gb3JtYXQgOj0gVGhyZWVfVHdvX1RocmVlKQorICAgICAoRm9ybWF0IDogU29mdF9MYWJlbF9LZXlfRm9ybWF0IDo9IFRocmVlX1R3b19UaHJlZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTbGtfSW5pdCAoRm10IDogQ19JbnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNsa19Jbml0LCAic2xrX2luaXQiKTsKQEAgLTE4MjYsOSArMTgzNyw5IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgSW5pdF9Tb2Z0X0xhYmVsX0tleXM7CiAKLSAgIHByb2NlZHVyZSBTZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogaW4gTGFiZWxfTnVtYmVyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgOiBpbiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbXQgICA6IGluIExhYmVsX0p1c3RpZmljYXRpb24gOj0gTGVmdCkKKyAgIHByb2NlZHVyZSBTZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogTGFiZWxfTnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbXQgICA6IExhYmVsX0p1c3RpZmljYXRpb24gOj0gTGVmdCkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTbGtfU2V0IChMYWJlbCA6IENfSW50OwogICAgICAgICAgICAgICAgICAgICAgICAgVHh0ICAgOiBjaGFyX2FycmF5OwpAQCAtMTg0MCw3ICsxODUxLDggQEAKICAgIGJlZ2luCiAgICAgICBUb19DIChUZXh0LCBUeHQsIExlbik7CiAgICAgICBpZiBTbGtfU2V0IChDX0ludCAoTGFiZWwpLCBUeHQsCi0gICAgICAgICAgICAgICAgICBDX0ludCAoTGFiZWxfSnVzdGlmaWNhdGlvbidQb3MgKEZtdCkpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgICAgICAgICAgICAgQ19JbnQgKExhYmVsX0p1c3RpZmljYXRpb24nUG9zIChGbXQpKSkgPSBDdXJzZXNfRXJyCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIFNldF9Tb2Z0X0xhYmVsX0tleTsKQEAgLTE4NjUsNyArMTg3Nyw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVmcmVzaF9Tb2Z0X0xhYmVsX0tleXNfV2l0aG91dF9VcGRhdGU7CiAKLSAgIHByb2NlZHVyZSBHZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogaW4gTGFiZWxfTnVtYmVyOworICAgcHJvY2VkdXJlIEdldF9Tb2Z0X0xhYmVsX0tleSAoTGFiZWwgOiBMYWJlbF9OdW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0ICA6IG91dCBTdHJpbmcpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2xrX0xhYmVsIChMYWJlbCA6IENfSW50KSByZXR1cm4gY2hhcnNfcHRyOwpAQCAtMTg3NCw3ICsxODg2LDcgQEAKICAgICAgIEZpbGxfU3RyaW5nIChTbGtfTGFiZWwgKENfSW50IChMYWJlbCkpLCBUZXh0KTsKICAgIGVuZCBHZXRfU29mdF9MYWJlbF9LZXk7CiAKLSAgIGZ1bmN0aW9uIEdldF9Tb2Z0X0xhYmVsX0tleSAoTGFiZWwgOiBpbiBMYWJlbF9OdW1iZXIpIHJldHVybiBTdHJpbmcKKyAgIGZ1bmN0aW9uIEdldF9Tb2Z0X0xhYmVsX0tleSAoTGFiZWwgOiBMYWJlbF9OdW1iZXIpIHJldHVybiBTdHJpbmcKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTbGtfTGFiZWwgKExhYmVsIDogQ19JbnQpIHJldHVybiBjaGFyc19wdHI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTbGtfTGFiZWwsICJzbGtfbGFiZWwiKTsKQEAgLTE5MTMsMTIgKzE5MjUsMTIgQEAKICAgIGVuZCBUb3VjaF9Tb2Z0X0xhYmVsX0tleXM7CiAKICAgIHByb2NlZHVyZSBTd2l0Y2hfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlcwotICAgICAoQXR0ciA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OwotICAgICAgT24gICA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgKEF0dHIgOiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKKyAgICAgIE9uICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwotICAgICAgZnVuY3Rpb24gU2xrX0F0dHJvbiAoQ2ggOiBDX0NodHlwZSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gU2xrX0F0dHJvbiAoQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2xrX0F0dHJvbiwgInNsa19hdHRyb24iKTsKLSAgICAgIGZ1bmN0aW9uIFNsa19BdHRyb2ZmIChDaCA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBTbGtfQXR0cm9mZiAoQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2xrX0F0dHJvZmYsICJzbGtfYXR0cm9mZiIpOwogCiAgICAgICBFcnIgOiBDX0ludDsKQEAgLTE5MjcsOSArMTkzOSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgPT4gQ29sb3JfUGFpcidGaXJzdCk7CiAgICBiZWdpbgogICAgICAgaWYgT24gdGhlbgotICAgICAgICAgRXJyIDo9IFNsa19BdHRyb24gIChBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSk7CisgICAgICAgICBFcnIgOj0gU2xrX0F0dHJvbiAgKENoKTsKICAgICAgIGVsc2UKLSAgICAgICAgIEVyciA6PSBTbGtfQXR0cm9mZiAoQXR0ckNoYXJfVG9fQ2h0eXBlIChDaCkpOworICAgICAgICAgRXJyIDo9IFNsa19BdHRyb2ZmIChDaCk7CiAgICAgICBlbmQgaWY7CiAgICAgICBpZiBFcnIgPSBDdXJzZXNfRXJyIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CkBAIC0xOTM3LDQ0ICsxOTQ5LDQ0IEBACiAgICBlbmQgU3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM7CiAKICAgIHByb2NlZHVyZSBTZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlcwotICAgICAoQXR0ciAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCkKKyAgICAgKEF0dHIgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCiAgICBpcwotICAgICAgZnVuY3Rpb24gU2xrX0F0dHJzZXQgKENoIDogQ19DaHR5cGUpIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIFNsa19BdHRyc2V0IChDaCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTbGtfQXR0cnNldCwgInNsa19hdHRyc2V0Iik7CiAKICAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgID0+IEF0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvcik7CiAgICBiZWdpbgotICAgICAgaWYgU2xrX0F0dHJzZXQgKEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKSA9IEN1cnNlc19FcnIgdGhlbgorICAgICAgaWYgU2xrX0F0dHJzZXQgKENoKSA9IEN1cnNlc19FcnIgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczsKIAogICAgZnVuY3Rpb24gR2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMgcmV0dXJuIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0CiAgICBpcwotICAgICAgZnVuY3Rpb24gU2xrX0F0dHIgcmV0dXJuIENfQ2h0eXBlOworICAgICAgZnVuY3Rpb24gU2xrX0F0dHIgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2xrX0F0dHIsICJzbGtfYXR0ciIpOwogCi0gICAgICBBdHRyIDogY29uc3RhbnQgQ19DaHR5cGUgOj0gU2xrX0F0dHI7CisgICAgICBBdHRyIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gU2xrX0F0dHI7CiAgICBiZWdpbgotICAgICAgcmV0dXJuIENodHlwZV9Ub19BdHRyQ2hhciAoQXR0cikuQXR0cjsKKyAgICAgIHJldHVybiBBdHRyLkF0dHI7CiAgICBlbmQgR2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM7CiAKICAgIGZ1bmN0aW9uIEdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzIHJldHVybiBDb2xvcl9QYWlyCiAgICBpcwotICAgICAgZnVuY3Rpb24gU2xrX0F0dHIgcmV0dXJuIENfQ2h0eXBlOworICAgICAgZnVuY3Rpb24gU2xrX0F0dHIgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2xrX0F0dHIsICJzbGtfYXR0ciIpOwogCi0gICAgICBBdHRyIDogY29uc3RhbnQgQ19DaHR5cGUgOj0gU2xrX0F0dHI7CisgICAgICBBdHRyIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gU2xrX0F0dHI7CiAgICBiZWdpbgotICAgICAgcmV0dXJuIENodHlwZV9Ub19BdHRyQ2hhciAoQXR0cikuQ29sb3I7CisgICAgICByZXR1cm4gQXR0ci5Db2xvcjsKICAgIGVuZCBHZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczsKIAotICAgcHJvY2VkdXJlIFNldF9Tb2Z0X0xhYmVsX0tleV9Db2xvciAoUGFpciA6IGluIENvbG9yX1BhaXIpCisgICBwcm9jZWR1cmUgU2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yIChQYWlyIDogQ29sb3JfUGFpcikKICAgIGlzCi0gICAgICBmdW5jdGlvbiBTbGtfQ29sb3IgKENvbG9yIDogaW4gQ19TaG9ydCkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gU2xrX0NvbG9yIChDb2xvciA6IENfU2hvcnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNsa19Db2xvciwgInNsa19jb2xvciIpOwogICAgYmVnaW4KICAgICAgIGlmIFNsa19Db2xvciAoQ19TaG9ydCAoUGFpcikpID0gQ3Vyc2VzX0VyciB0aGVuCkBAIC0xOTgzLDIxICsxOTk1LDIyIEBACiAgICBlbmQgU2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yOwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBFbmFibGVfS2V5IChLZXkgICAgOiBpbiBTcGVjaWFsX0tleV9Db2RlOwotICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBFbmFibGVfS2V5IChLZXkgICAgOiBTcGVjaWFsX0tleV9Db2RlOworICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBLZXlvayAoS2V5Y29kZSA6IENfSW50OwogICAgICAgICAgICAgICAgICAgICAgIE9uX09mZiAgOiBDdXJzZXNfQm9vbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgS2V5b2ssICJrZXlvayIpOwogICAgYmVnaW4KICAgICAgIGlmIEtleW9rIChDX0ludCAoS2V5KSwgQ3Vyc2VzX0Jvb2wgKEJvb2xlYW4nUG9zIChFbmFibGUpKSkKLSAgICAgICAgPSBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgPSBDdXJzZXNfRXJyCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDdXJzZXNfRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIEVuYWJsZV9LZXk7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBEZWZpbmVfS2V5IChEZWZpbml0aW9uIDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgOiBpbiBTcGVjaWFsX0tleV9Db2RlKQorICAgcHJvY2VkdXJlIERlZmluZV9LZXkgKERlZmluaXRpb24gOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gRGVma2V5IChEZWYgOiBjaGFyX2FycmF5OwogICAgICAgICAgICAgICAgICAgICAgICBLZXkgOiBDX0ludCkgcmV0dXJuIENfSW50OwpAQCAtMjAxMiwyNCArMjAyNSwyNCBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIERlZmluZV9LZXk7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBVbl9Db250cm9sIChDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKKyAgIHByb2NlZHVyZSBVbl9Db250cm9sIChDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFVuY3RybCAoQ2ggOiBDX0NodHlwZSkgcmV0dXJuIGNoYXJzX3B0cjsKKyAgICAgIGZ1bmN0aW9uIFVuY3RybCAoQ2ggOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIGNoYXJzX3B0cjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFVuY3RybCwgInVuY3RybCIpOwogICAgYmVnaW4KLSAgICAgIEZpbGxfU3RyaW5nIChVbmN0cmwgKEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKSwgU3RyKTsKKyAgICAgIEZpbGxfU3RyaW5nIChVbmN0cmwgKENoKSwgU3RyKTsKICAgIGVuZCBVbl9Db250cm9sOwogCi0gICBmdW5jdGlvbiBVbl9Db250cm9sIChDaCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gU3RyaW5nCisgICBmdW5jdGlvbiBVbl9Db250cm9sIChDaCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gU3RyaW5nCiAgICBpcwotICAgICAgZnVuY3Rpb24gVW5jdHJsIChDaCA6IENfQ2h0eXBlKSByZXR1cm4gY2hhcnNfcHRyOworICAgICAgZnVuY3Rpb24gVW5jdHJsIChDaCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gY2hhcnNfcHRyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgVW5jdHJsLCAidW5jdHJsIik7CiAgICBiZWdpbgotICAgICAgcmV0dXJuIEZpbGxfU3RyaW5nIChVbmN0cmwgKEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKSk7CisgICAgICByZXR1cm4gRmlsbF9TdHJpbmcgKFVuY3RybCAoQ2gpKTsKICAgIGVuZCBVbl9Db250cm9sOwogCi0gICBwcm9jZWR1cmUgRGVsYXlfT3V0cHV0IChNc2VjcyA6IGluIE5hdHVyYWwpCisgICBwcm9jZWR1cmUgRGVsYXlfT3V0cHV0IChNc2VjcyA6IE5hdHVyYWwpCiAgICBpcwogICAgICAgZnVuY3Rpb24gRGVsYXlvdXRwdXQgKE1zZWNzIDogQ19JbnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIERlbGF5b3V0cHV0LCAiZGVsYXlfb3V0cHV0Iik7CkBAIC0yMDk5LDEwICsyMTEyLDEwIEBACiAKICAgIGZ1bmN0aW9uIFN1cHBvcnRlZF9BdHRyaWJ1dGVzIHJldHVybiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldAogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFRlcm1hdHRycyByZXR1cm4gQ19DaHR5cGU7CisgICAgICBmdW5jdGlvbiBUZXJtYXR0cnMgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgVGVybWF0dHJzLCAidGVybWF0dHJzIik7CiAKLSAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChUZXJtYXR0cnMpOworICAgICAgQ2ggOiBjb25zdGFudCBBdHRyaWJ1dGVkX0NoYXJhY3RlciA6PSBUZXJtYXR0cnM7CiAgICBiZWdpbgogICAgICAgcmV0dXJuIENoLkF0dHI7CiAgICBlbmQgU3VwcG9ydGVkX0F0dHJpYnV0ZXM7CkBAIC0yMTM5LDkgKzIxNTIsOSBAQAogICAgICAgcmV0dXJuIEZpbGxfU3RyaW5nIChUZXJtbmFtZSk7CiAgICBlbmQgVGVybWluYWxfTmFtZTsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIEluaXRfUGFpciAoUGFpciA6IGluIFJlZGVmaW5hYmxlX0NvbG9yX1BhaXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3JlIDogaW4gQ29sb3JfTnVtYmVyOwotICAgICAgICAgICAgICAgICAgICAgICAgQmFjayA6IGluIENvbG9yX051bWJlcikKKyAgIHByb2NlZHVyZSBJbml0X1BhaXIgKFBhaXIgOiBSZWRlZmluYWJsZV9Db2xvcl9QYWlyOworICAgICAgICAgICAgICAgICAgICAgICAgRm9yZSA6IENvbG9yX051bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgOiBDb2xvcl9OdW1iZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSW5pdHBhaXIgKFBhaXIgOiBDX1Nob3J0OwogICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgOiBDX1Nob3J0OwpAQCAtMjE1MiwxNiArMjE2NSwxOCBAQAogICAgICAgICAgcmFpc2UgQ29uc3RyYWludF9FcnJvcjsKICAgICAgIGVuZCBpZjsKICAgICAgIGlmIEludGVnZXIgKEZvcmUpID49IE51bWJlcl9PZl9Db2xvcnMgb3IgZWxzZQotICAgICAgICAgSW50ZWdlciAoQmFjaykgPj0gTnVtYmVyX09mX0NvbG9ycyB0aGVuCisgICAgICAgICBJbnRlZ2VyIChCYWNrKSA+PSBOdW1iZXJfT2ZfQ29sb3JzCisgICAgICB0aGVuCiAgICAgICAgICByYWlzZSBDb25zdHJhaW50X0Vycm9yOwogICAgICAgZW5kIGlmOwogICAgICAgaWYgSW5pdHBhaXIgKENfU2hvcnQgKFBhaXIpLCBDX1Nob3J0IChGb3JlKSwgQ19TaG9ydCAoQmFjaykpCi0gICAgICAgID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgID0gQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBJbml0X1BhaXI7CiAKLSAgIHByb2NlZHVyZSBQYWlyX0NvbnRlbnQgKFBhaXIgOiBpbiBDb2xvcl9QYWlyOworICAgcHJvY2VkdXJlIFBhaXJfQ29udGVudCAoUGFpciA6IENvbG9yX1BhaXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JlIDogb3V0IENvbG9yX051bWJlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgOiBvdXQgQ29sb3JfTnVtYmVyKQogICAgaXMKQEAgLTIxOTMsMTAgKzIyMDgsMTAgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBIYXNfQ29sb3JzOwogCi0gICBwcm9jZWR1cmUgSW5pdF9Db2xvciAoQ29sb3IgOiBpbiBDb2xvcl9OdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgUmVkICAgOiBpbiBSR0JfVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgR3JlZW4gOiBpbiBSR0JfVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZSAgOiBpbiBSR0JfVmFsdWUpCisgICBwcm9jZWR1cmUgSW5pdF9Db2xvciAoQ29sb3IgOiBDb2xvcl9OdW1iZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgUmVkICAgOiBSR0JfVmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgR3JlZW4gOiBSR0JfVmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZSAgOiBSR0JfVmFsdWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSW5pdGNvbG9yIChDb2wgICA6IENfU2hvcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZCAgIDogQ19TaG9ydDsKQEAgLTIyMDUsNyArMjIyMCw4IEBACiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbml0Y29sb3IsICJpbml0X2NvbG9yIik7CiAgICBiZWdpbgogICAgICAgaWYgSW5pdGNvbG9yIChDX1Nob3J0IChDb2xvciksIENfU2hvcnQgKFJlZCksIENfU2hvcnQgKEdyZWVuKSwKLSAgICAgICAgICAgICAgICAgICAgQ19TaG9ydCAoQmx1ZSkpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgICAgICAgICAgICAgIENfU2hvcnQgKEJsdWUpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgSW5pdF9Db2xvcjsKQEAgLTIyMjIsNyArMjIzOCw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgQ2FuX0NoYW5nZV9Db2xvcjsKIAotICAgcHJvY2VkdXJlIENvbG9yX0NvbnRlbnQgKENvbG9yIDogaW4gIENvbG9yX051bWJlcjsKKyAgIHByb2NlZHVyZSBDb2xvcl9Db250ZW50IChDb2xvciA6ICBDb2xvcl9OdW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVkICAgOiBvdXQgUkdCX1ZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWVuIDogb3V0IFJHQl9WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVlICA6IG91dCBSR0JfVmFsdWUpCkBAIC0yMjM2LDcgKzIyNTIsOCBAQAogICAgICAgUiwgRywgQiA6IGFsaWFzZWQgQ19TaG9ydDsKICAgIGJlZ2luCiAgICAgICBpZiBDb2xvcmNvbnRlbnQgKENfU2hvcnQgKENvbG9yKSwgUidBY2Nlc3MsIEcnQWNjZXNzLCBCJ0FjY2VzcykgPQotICAgICAgICBDdXJzZXNfRXJyIHRoZW4KKyAgICAgICAgQ3Vyc2VzX0VycgorICAgICAgdGhlbgogICAgICAgICAgcmFpc2UgQ3Vyc2VzX0V4Y2VwdGlvbjsKICAgICAgIGVsc2UKICAgICAgICAgIFJlZCAgIDo9IFJHQl9WYWx1ZSAoUik7CkBAIC0yMjQ2LDcgKzIyNjMsNyBAQAogICAgZW5kIENvbG9yX0NvbnRlbnQ7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNhdmVfQ3Vyc2VzX01vZGUgKE1vZGUgOiBpbiBDdXJzZXNfTW9kZSkKKyAgIHByb2NlZHVyZSBTYXZlX0N1cnNlc19Nb2RlIChNb2RlIDogQ3Vyc2VzX01vZGUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gRGVmX1Byb2dfTW9kZSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBEZWZfUHJvZ19Nb2RlLCAiZGVmX3Byb2dfbW9kZSIpOwpAQCAtMjI2NCw3ICsyMjgxLDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTYXZlX0N1cnNlc19Nb2RlOwogCi0gICBwcm9jZWR1cmUgUmVzZXRfQ3Vyc2VzX01vZGUgKE1vZGUgOiBpbiBDdXJzZXNfTW9kZSkKKyAgIHByb2NlZHVyZSBSZXNldF9DdXJzZXNfTW9kZSAoTW9kZSA6IEN1cnNlc19Nb2RlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFJlc2V0X1Byb2dfTW9kZSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBSZXNldF9Qcm9nX01vZGUsICJyZXNldF9wcm9nX21vZGUiKTsKQEAgLTIzMDIsOCArMjMxOSw4IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVzZXRfVGVybWluYWxfU3RhdGU7CiAKLSAgIHByb2NlZHVyZSBSaXBfT2ZmX0xpbmVzIChMaW5lcyA6IGluIEludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyAgOiBpbiBTdGRzY3JfSW5pdF9Qcm9jKQorICAgcHJvY2VkdXJlIFJpcF9PZmZfTGluZXMgKExpbmVzIDogSW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jICA6IFN0ZHNjcl9Jbml0X1Byb2MpCiAgICBpcwogICAgICAgZnVuY3Rpb24gUmlwb2ZmbGluZSAoTGluZXMgOiBDX0ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgIDogU3Rkc2NyX0luaXRfUHJvYykgcmV0dXJuIENfSW50OwpAQCAtMjMyNyw3ICsyMzQ0LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTZXRfQ3Vyc29yX1Zpc2liaWxpdHk7CiAKLSAgIHByb2NlZHVyZSBOYXBfTWlsbGlfU2Vjb25kcyAoTXMgOiBpbiBOYXR1cmFsKQorICAgcHJvY2VkdXJlIE5hcF9NaWxsaV9TZWNvbmRzIChNcyA6IE5hdHVyYWwpCiAgICBpcwogICAgICAgZnVuY3Rpb24gTmFwbXMgKE1zIDogQ19JbnQpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE5hcG1zLCAibmFwbXMiKTsKQEAgLTIzMzcsMTMgKzIzNTQsNTIgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBOYXBfTWlsbGlfU2Vjb25kczsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaW5jbHVkZShgUHVibGljX1ZhcmlhYmxlcycpCisgICBmdW5jdGlvbiBMaW5lcyByZXR1cm4gTGluZV9Db3VudAorICAgaXMKKyAgICAgIGZ1bmN0aW9uIExJTkVTX0FzX0Z1bmN0aW9uIHJldHVybiBJbnRlcmZhY2VzLkMuaW50OworICAgICAgcHJhZ21hIEltcG9ydCAoQywgTElORVNfQXNfRnVuY3Rpb24sICJMSU5FU19hc19mdW5jdGlvbiIpOworICAgYmVnaW4KKyAgICAgIHJldHVybiBMaW5lX0NvdW50IChMSU5FU19Bc19GdW5jdGlvbik7CisgICBlbmQgTGluZXM7CisKKyAgIGZ1bmN0aW9uIENvbHVtbnMgcmV0dXJuIENvbHVtbl9Db3VudAorICAgaXMKKyAgICAgIGZ1bmN0aW9uIENPTFNfQXNfRnVuY3Rpb24gcmV0dXJuIEludGVyZmFjZXMuQy5pbnQ7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBDT0xTX0FzX0Z1bmN0aW9uLCAiQ09MU19hc19mdW5jdGlvbiIpOworICAgYmVnaW4KKyAgICAgIHJldHVybiBDb2x1bW5fQ291bnQgKENPTFNfQXNfRnVuY3Rpb24pOworICAgZW5kIENvbHVtbnM7CisKKyAgIGZ1bmN0aW9uIFRhYl9TaXplIHJldHVybiBOYXR1cmFsCisgICBpcworICAgICAgZnVuY3Rpb24gVEFCU0laRV9Bc19GdW5jdGlvbiByZXR1cm4gSW50ZXJmYWNlcy5DLmludDsKKyAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFRBQlNJWkVfQXNfRnVuY3Rpb24sICJUQUJTSVpFX2FzX2Z1bmN0aW9uIik7CisKKyAgIGJlZ2luCisgICAgICByZXR1cm4gTmF0dXJhbCAoVEFCU0laRV9Bc19GdW5jdGlvbik7CisgICBlbmQgVGFiX1NpemU7CisKKyAgIGZ1bmN0aW9uIE51bWJlcl9PZl9Db2xvcnMgcmV0dXJuIE5hdHVyYWwKKyAgIGlzCisgICAgICBmdW5jdGlvbiBDT0xPUlNfQXNfRnVuY3Rpb24gcmV0dXJuIEludGVyZmFjZXMuQy5pbnQ7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBDT0xPUlNfQXNfRnVuY3Rpb24sICJDT0xPUlNfYXNfZnVuY3Rpb24iKTsKKyAgIGJlZ2luCisgICAgICByZXR1cm4gTmF0dXJhbCAoQ09MT1JTX0FzX0Z1bmN0aW9uKTsKKyAgIGVuZCBOdW1iZXJfT2ZfQ29sb3JzOworCisgICBmdW5jdGlvbiBOdW1iZXJfT2ZfQ29sb3JfUGFpcnMgcmV0dXJuIE5hdHVyYWwKKyAgIGlzCisgICAgICBmdW5jdGlvbiBDT0xPUl9QQUlSU19Bc19GdW5jdGlvbiByZXR1cm4gSW50ZXJmYWNlcy5DLmludDsKKyAgICAgIHByYWdtYSBJbXBvcnQgKEMsIENPTE9SX1BBSVJTX0FzX0Z1bmN0aW9uLCAiQ09MT1JfUEFJUlNfYXNfZnVuY3Rpb24iKTsKKyAgIGJlZ2luCisgICAgICByZXR1cm4gTmF0dXJhbCAoQ09MT1JfUEFJUlNfQXNfRnVuY3Rpb24pOworICAgZW5kIE51bWJlcl9PZl9Db2xvcl9QYWlyczsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJvY2VkdXJlIFRyYW5zZm9ybV9Db29yZGluYXRlcwotICAgICAoVyAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgKFcgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CiAgICAgICBMaW5lICAgOiBpbiBvdXQgTGluZV9Qb3NpdGlvbjsKICAgICAgIENvbHVtbiA6IGluIG91dCBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBEaXIgICAgOiBpbiBUcmFuc2Zvcm1fRGlyZWN0aW9uIDo9IEZyb21fU2NyZWVuKQorICAgICAgRGlyICAgIDogVHJhbnNmb3JtX0RpcmVjdGlvbiA6PSBGcm9tX1NjcmVlbikKICAgIGlzCiAgICAgICB0eXBlIEludF9BY2Nlc3MgaXMgYWNjZXNzIGFsbCBDX0ludDsKICAgICAgIGZ1bmN0aW9uIFRyYW5zZm9ybSAoVyAgICA6IFdpbmRvdzsKQEAgLTI0MzEsNyArMjQ4Nyw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgVXNlX0V4dGVuZGVkX05hbWVzOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgU2NyZWVuX0R1bXBfVG9fRmlsZSAoRmlsZW5hbWUgOiBpbiBTdHJpbmcpCisgICBwcm9jZWR1cmUgU2NyZWVuX0R1bXBfVG9fRmlsZSAoRmlsZW5hbWUgOiBTdHJpbmcpCiAgICBpcwogICAgICAgZnVuY3Rpb24gc2NyX2R1bXAgKGYgOiBjaGFyX2FycmF5KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBzY3JfZHVtcCwgInNjcl9kdW1wIik7CkBAIC0yNDQ0LDcgKzI1MDAsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFNjcmVlbl9EdW1wX1RvX0ZpbGU7CiAKLSAgIHByb2NlZHVyZSBTY3JlZW5fUmVzdG9yZV9Gcm9tX0ZpbGUgKEZpbGVuYW1lIDogaW4gU3RyaW5nKQorICAgcHJvY2VkdXJlIFNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZSAoRmlsZW5hbWUgOiBTdHJpbmcpCiAgICBpcwogICAgICAgZnVuY3Rpb24gc2NyX3Jlc3RvcmUgKGYgOiBjaGFyX2FycmF5KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBzY3JfcmVzdG9yZSwgInNjcl9yZXN0b3JlIik7CkBAIC0yNDU3LDcgKzI1MTMsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZTsKIAotICAgcHJvY2VkdXJlIFNjcmVlbl9Jbml0X0Zyb21fRmlsZSAoRmlsZW5hbWUgOiBpbiBTdHJpbmcpCisgICBwcm9jZWR1cmUgU2NyZWVuX0luaXRfRnJvbV9GaWxlIChGaWxlbmFtZSA6IFN0cmluZykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBzY3JfaW5pdCAoZiA6IGNoYXJfYXJyYXkpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIHNjcl9pbml0LCAic2NyX2luaXQiKTsKQEAgLTI0NzAsNyArMjUyNiw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgU2NyZWVuX0luaXRfRnJvbV9GaWxlOwogCi0gICBwcm9jZWR1cmUgU2NyZWVuX1NldF9GaWxlIChGaWxlbmFtZSA6IGluIFN0cmluZykKKyAgIHByb2NlZHVyZSBTY3JlZW5fU2V0X0ZpbGUgKEZpbGVuYW1lIDogU3RyaW5nKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIHNjcl9zZXQgKGYgOiBjaGFyX2FycmF5KSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBzY3Jfc2V0LCAic2NyX3NldCIpOwpAQCAtMjQ5Myw3ICsyNTQ5LDggQEAKICAgIGJlZ2luCiAgICAgICBpZiB3cmVzaXplIChXaW4sCiAgICAgICAgICAgICAgICAgICBDX0ludCAoTnVtYmVyX09mX0xpbmVzKSwKLSAgICAgICAgICAgICAgICAgIENfSW50IChOdW1iZXJfT2ZfQ29sdW1ucykpID0gQ3Vyc2VzX0VyciB0aGVuCisgICAgICAgICAgICAgICAgICBDX0ludCAoTnVtYmVyX09mX0NvbHVtbnMpKSA9IEN1cnNlc19FcnIKKyAgICAgIHRoZW4KICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVzaXplOwpkaWZmIC0tZ2l0IGEvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzLm00IGIvQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzLm00CmluZGV4IDRhYmM1NWUuLjI1YmI1ZDkgMTAwNjQ0Ci0tLSBhL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkcy5tNAorKysgYi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHMubTQKQEAgLTksNyArOSw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzcsMjMgKzM3LDI4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjQxICQKLS0tICAkRGF0ZTogMjAwNy8wNS8wNSAyMDozMzo1MiAkCistLSAgJFJldmlzaW9uOiAxLjQ3ICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTo1NyAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWluY2x1ZGUoYEJhc2VfRGVmcycpCiB3aXRoIFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzOwogd2l0aCBJbnRlcmZhY2VzLkM7ICAgLS0gIFdlIG5lZWQgdGhpcyBmb3Igc29tZSBhc3NlcnRpb25zLgogCit3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXNfQ29uc3RhbnRzOworCiBwYWNrYWdlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMgaXMKICAgIHByYWdtYSBQcmVlbGFib3JhdGUgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMpOwotaW5jbHVkZShgTGlua2VyX09wdGlvbnMnKQotaW5jbHVkZShgVmVyc2lvbl9JbmZvJykKKyAgIHByYWdtYSBMaW5rZXJfT3B0aW9ucyAoIi1sbmN1cnNlcyIgJiBDdXJzZXNfQ29uc3RhbnRzLkRGVF9BUkdfU1VGRklYKTsKKworICAgTWFqb3JfVmVyc2lvbiA6IGNvbnN0YW50IDo9IEN1cnNlc19Db25zdGFudHMuTkNVUlNFU19WRVJTSU9OX01BSk9SOworICAgTWlub3JfVmVyc2lvbiA6IGNvbnN0YW50IDo9IEN1cnNlc19Db25zdGFudHMuTkNVUlNFU19WRVJTSU9OX01JTk9SOworICAgTkNfVmVyc2lvbiA6IFN0cmluZyByZW5hbWVzIEN1cnNlc19Db25zdGFudHMuVmVyc2lvbjsKKwogICAgdHlwZSBXaW5kb3cgaXMgcHJpdmF0ZTsKICAgIE51bGxfV2luZG93IDogY29uc3RhbnQgV2luZG93OwogCi0gICB0eXBlIExpbmVfUG9zaXRpb24gICBpcyBuZXcgTmF0dXJhbDsgLS0gIGxpbmUgY29vcmRpbmF0ZQotICAgdHlwZSBDb2x1bW5fUG9zaXRpb24gaXMgbmV3IE5hdHVyYWw7IC0tICBjb2x1bW4gY29vcmRpbmF0ZQorICAgdHlwZSBMaW5lX1Bvc2l0aW9uICAgaXMgbmV3IEludGVnZXI7IC0tICBsaW5lIGNvb3JkaW5hdGUKKyAgIHR5cGUgQ29sdW1uX1Bvc2l0aW9uIGlzIG5ldyBJbnRlZ2VyOyAtLSAgY29sdW1uIGNvb3JkaW5hdGUKIAogICAgc3VidHlwZSBMaW5lX0NvdW50ICAgaXMgTGluZV9Qb3NpdGlvbiAgIHJhbmdlIDEgLi4gTGluZV9Qb3NpdGlvbidMYXN0OwogICAgLS0gIFR5cGUgdG8gY291bnQgbGluZXMuIFdlIGRvIG5vdCBhbGxvdyBudWxsIHdpbmRvd3MsIHNvIG11c3QgYmUgcG9zaXRpdmUKQEAgLTY1LDI0ICs3MCwzMTUgQEAKICAgIC0tICByZXF1ZXN0IGNvZGVzLgogCiAgICAtLSAgRklYTUU6IFRoZSAiLTEiIHNob3VsZCBiZSBDdXJzZXNfRXJyCi0gICBzdWJ0eXBlIFJlYWxfS2V5X0NvZGUgaXMgS2V5X0NvZGUgcmFuZ2UgLTEgLi4gTTRfS0VZX01BWDsKKyAgIHN1YnR5cGUgUmVhbF9LZXlfQ29kZSBpcyBLZXlfQ29kZSByYW5nZSAtMSAuLiBDdXJzZXNfQ29uc3RhbnRzLktFWV9NQVg7CiAgICAtLSAgVGhpcyBhcmUgdGhlIGNvZGVzIHRoYXQgcG90ZW50aWFsbHkgcmVwcmVzZW50IGEgcmVhbCBrZXlzdHJva2UuCiAgICAtLSAgTm90IGFsbCBjb2RlcyBtYXkgYmUgcG9zc2libGUgb24gYSBzcGVjaWZpYyB0ZXJtaW5hbC4gVG8gY2hlY2sgdGhlCiAgICAtLSAgYXZhaWxhYmlsaXR5IG9mIGEgc3BlY2lhbCBrZXksIHRoZSBIYXNfS2V5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkLgogCiAgICBzdWJ0eXBlIFNwZWNpYWxfS2V5X0NvZGUgaXMgUmVhbF9LZXlfQ29kZQotICAgICByYW5nZSBNNF9TUEVDSUFMX0ZJUlNUIC4uIFJlYWxfS2V5X0NvZGUnTGFzdDsKKyAgICAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy4gS0VZX01JTiAtIDEgLi4gUmVhbF9LZXlfQ29kZSdMYXN0OwogICAgLS0gIFR5cGUgZm9yIGEgZnVuY3Rpb24tIG9yIHNwZWNpYWwga2V5IG51bWJlcgogCiAgICBzdWJ0eXBlIE5vcm1hbF9LZXlfQ29kZSBpcyBSZWFsX0tleV9Db2RlIHJhbmdlCiAgICAgIENoYXJhY3RlcidQb3MgKENoYXJhY3RlcidGaXJzdCkgLi4gQ2hhcmFjdGVyJ1BvcyAoQ2hhcmFjdGVyJ0xhc3QpOwogICAgLS0gIFRoaXMgYXJlIHRoZSBjb2RlcyBmb3IgcmVndWxhciAoaW5jbC4gbm9uLWdyYXBoaWNhbCkgY2hhcmFjdGVycy4KIAorICAgLS0gIEZvciB0aG9zZSB3aG8gbGlrZSB0byB1c2UgdGhlIG9yaWdpbmFsIGtleSBuYW1lcyB3ZSBwcm9kdWNlIHRoZW0gd2VyZQorICAgLS0gIHRoZXkgZGlmZmVyIGZyb20gdGhlIG9yaWdpbmFsLgorCiAgICAtLSAgQ29uc3RhbnRzIGZvciBmdW5jdGlvbi0gYW5kIHNwZWNpYWwga2V5cwotICAgLS0KLSAgIEtleV9Ob25lICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUgOj0gTTRfU1BFQ0lBTF9GSVJTVDsKLWluY2x1ZGUoYEtleV9EZWZpbml0aW9ucycpCi0gICBLZXlfTWF4ICAgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICBLZXlfTm9uZSAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX01JTiAtIDE7CisgICBLZXlfTWluICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX01JTjsKKyAgIEtleV9CcmVhayAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfQlJFQUs7CisgICBLRVlfRE9XTiAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0RPV047CisgICBLZXlfQ3Vyc29yX0Rvd24gICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX0RPV047CisgICBLRVlfVVAgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1VQOworICAgS2V5X0N1cnNvcl9VcCAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9VUDsKKyAgIEtFWV9MRUZUICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfTEVGVDsKKyAgIEtleV9DdXJzb3JfTGVmdCAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfTEVGVDsKKyAgIEtFWV9SSUdIVCAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfUklHSFQ7CisgICBLZXlfQ3Vyc29yX1JpZ2h0ICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1JJR0hUOworICAgS2V5X0hvbWUgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9IT01FOworICAgS2V5X0JhY2tzcGFjZSAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9CQUNLU1BBQ0U7CisgICBLZXlfRjAgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YwOworICAgS2V5X0YxICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMTsKKyAgIEtleV9GMiAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjI7CisgICBLZXlfRjMgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YzOworICAgS2V5X0Y0ICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GNDsKKyAgIEtleV9GNSAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjU7CisgICBLZXlfRjYgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0Y2OworICAgS2V5X0Y3ICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GNzsKKyAgIEtleV9GOCAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjg7CisgICBLZXlfRjkgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0Y5OworICAgS2V5X0YxMCAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMTA7CisgICBLZXlfRjExICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YxMTsKKyAgIEtleV9GMTIgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjEyOworICAgS2V5X0YxMyAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMTM7CisgICBLZXlfRjE0ICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YxNDsKKyAgIEtleV9GMTUgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjE1OworICAgS2V5X0YxNiAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMTY7CisgICBLZXlfRjE3ICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YxNzsKKyAgIEtleV9GMTggICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjE4OworICAgS2V5X0YxOSAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMTk7CisgICBLZXlfRjIwICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YyMDsKKyAgIEtleV9GMjEgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjIxOworICAgS2V5X0YyMiAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GMjI7CisgICBLZXlfRjIzICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0YyMzsKKyAgIEtleV9GMjQgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRjI0OworICAgS0VZX0RMICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9ETDsKKyAgIEtleV9EZWxldGVfTGluZSAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfREw7CisgICBLRVlfSUwgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0lMOworICAgS2V5X0luc2VydF9MaW5lICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9JTDsKKyAgIEtFWV9EQyAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfREM7CisgICBLZXlfRGVsZXRlX0NoYXIgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX0RDOworICAgS0VZX0lDICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9JQzsKKyAgIEtleV9JbnNlcnRfQ2hhciAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfSUM7CisgICBLRVlfRUlDICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0VJQzsKKyAgIEtleV9FeGl0X0luc2VydF9Nb2RlICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfRUlDOworICAgS0VZX0NMRUFSICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9DTEVBUjsKKyAgIEtleV9DbGVhcl9TY3JlZW4gICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfQ0xFQVI7CisgICBLRVlfRU9TICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0VPUzsKKyAgIEtleV9DbGVhcl9FbmRfT2ZfU2NyZWVuICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfRU9TOworICAgS0VZX0VPTCAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9FT0w7CisgICBLZXlfQ2xlYXJfRW5kX09mX0xpbmUgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX0VPTDsKKyAgIEtFWV9TRiAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0Y7CisgICBLZXlfU2Nyb2xsXzFfRm9yd2FyZCAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NGOworICAgS0VZX1NSICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TUjsKKyAgIEtleV9TY3JvbGxfMV9CYWNrd2FyZCAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU1I7CisgICBLRVlfTlBBR0UgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX05QQUdFOworICAgS2V5X05leHRfUGFnZSAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9OUEFHRTsKKyAgIEtFWV9QUEFHRSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfUFBBR0U7CisgICBLZXlfUHJldmlvdXNfUGFnZSAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1BQQUdFOworICAgS0VZX1NUQUIgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TVEFCOworICAgS2V5X1NldF9UYWIgICAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TVEFCOworICAgS0VZX0NUQUIgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9DVEFCOworICAgS2V5X0NsZWFyX1RhYiAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9DVEFCOworICAgS0VZX0NBVEFCICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9DQVRBQjsKKyAgIEtleV9DbGVhcl9BbGxfVGFicyAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfQ0FUQUI7CisgICBLRVlfRU5URVIgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0VOVEVSOworICAgS2V5X0VudGVyX09yX1NlbmQgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9FTlRFUjsKKyAgIEtFWV9TUkVTRVQgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU1JFU0VUOworICAgS2V5X1NvZnRfUmVzZXQgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TUkVTRVQ7CisgICBLZXlfUmVzZXQgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1JFU0VUOworICAgS2V5X1ByaW50ICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9QUklOVDsKKyAgIEtFWV9MTCAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfTEw7CisgICBLZXlfQm90dG9tICAgICAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX0xMOworICAgS0VZX0ExICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9BMTsKKyAgIEtleV9VcHBlcl9MZWZ0X09mX0tleXBhZCAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfQTE7CisgICBLRVlfQTMgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0EzOworICAgS2V5X1VwcGVyX1JpZ2h0X09mX0tleXBhZCAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9BMzsKKyAgIEtFWV9CMiAgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfQjI7CisgICBLZXlfQ2VudGVyX09mX0tleXBhZCAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX0IyOworICAgS0VZX0MxICAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9DMTsKKyAgIEtleV9Mb3dlcl9MZWZ0X09mX0tleXBhZCAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfQzE7CisgICBLRVlfQzMgICAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0MzOworICAgS2V5X0xvd2VyX1JpZ2h0X09mX0tleXBhZCAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9DMzsKKyAgIEtFWV9CVEFCICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfQlRBQjsKKyAgIEtleV9CYWNrX1RhYiAgICAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfQlRBQjsKKyAgIEtFWV9CRUcgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfQkVHOworICAgS2V5X0JlZ2lubmluZyAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9CRUc7CisgICBLZXlfQ2FuY2VsICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0NBTkNFTDsKKyAgIEtleV9DbG9zZSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfQ0xPU0U7CisgICBLZXlfQ29tbWFuZCAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0NPTU1BTkQ7CisgICBLZXlfQ29weSAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0NPUFk7CisgICBLZXlfQ3JlYXRlICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX0NSRUFURTsKKyAgIEtleV9FbmQgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfRU5EOworICAgS2V5X0V4aXQgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9FWElUOworICAgS2V5X0ZpbmQgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9GSU5EOworICAgS2V5X0hlbHAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9IRUxQOworICAgS2V5X01hcmsgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9NQVJLOworICAgS2V5X01lc3NhZ2UgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9NRVNTQUdFOworICAgS2V5X01vdmUgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9NT1ZFOworICAgS2V5X05leHQgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9ORVhUOworICAgS2V5X09wZW4gICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9PUEVOOworICAgS2V5X09wdGlvbnMgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9PUFRJT05TOworICAgS2V5X1ByZXZpb3VzICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9QUkVWSU9VUzsKKyAgIEtleV9SZWRvICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfUkVETzsKKyAgIEtleV9SZWZlcmVuY2UgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfUkVGRVJFTkNFOworICAgS2V5X1JlZnJlc2ggICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9SRUZSRVNIOworICAgS2V5X1JlcGxhY2UgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9SRVBMQUNFOworICAgS2V5X1Jlc3RhcnQgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9SRVNUQVJUOworICAgS2V5X1Jlc3VtZSAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9SRVNVTUU7CisgICBLZXlfU2F2ZSAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NBVkU7CisgICBLRVlfU0JFRyAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NCRUc7CisgICBLZXlfU2hpZnRfQmVnaW4gICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NCRUc7CisgICBLRVlfU0NBTkNFTCAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NDQU5DRUw7CisgICBLZXlfU2hpZnRfQ2FuY2VsICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NDQU5DRUw7CisgICBLRVlfU0NPTU1BTkQgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NDT01NQU5EOworICAgS2V5X1NoaWZ0X0NvbW1hbmQgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TQ09NTUFORDsKKyAgIEtFWV9TQ09QWSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0NPUFk7CisgICBLZXlfU2hpZnRfQ29weSAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NDT1BZOworICAgS0VZX1NDUkVBVEUgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TQ1JFQVRFOworICAgS2V5X1NoaWZ0X0NyZWF0ZSAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TQ1JFQVRFOworICAgS0VZX1NEQyAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TREM7CisgICBLZXlfU2hpZnRfRGVsZXRlX0NoYXIgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NEQzsKKyAgIEtFWV9TREwgICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0RMOworICAgS2V5X1NoaWZ0X0RlbGV0ZV9MaW5lICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TREw7CisgICBLZXlfU2VsZWN0ICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NFTEVDVDsKKyAgIEtFWV9TRU5EICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0VORDsKKyAgIEtleV9TaGlmdF9FbmQgICAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU0VORDsKKyAgIEtFWV9TRU9MICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0VPTDsKKyAgIEtleV9TaGlmdF9DbGVhcl9FbmRfT2ZfTGluZSA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU0VPTDsKKyAgIEtFWV9TRVhJVCAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0VYSVQ7CisgICBLZXlfU2hpZnRfRXhpdCAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NFWElUOworICAgS0VZX1NGSU5EICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TRklORDsKKyAgIEtleV9TaGlmdF9GaW5kICAgICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU0ZJTkQ7CisgICBLRVlfU0hFTFAgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NIRUxQOworICAgS2V5X1NoaWZ0X0hlbHAgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TSEVMUDsKKyAgIEtFWV9TSE9NRSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0hPTUU7CisgICBLZXlfU2hpZnRfSG9tZSAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NIT01FOworICAgS0VZX1NJQyAgICAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TSUM7CisgICBLZXlfU2hpZnRfSW5zZXJ0X0NoYXIgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NJQzsKKyAgIEtFWV9TTEVGVCAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU0xFRlQ7CisgICBLZXlfU2hpZnRfQ3Vyc29yX0xlZnQgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NMRUZUOworICAgS0VZX1NNRVNTQUdFICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TTUVTU0FHRTsKKyAgIEtleV9TaGlmdF9NZXNzYWdlICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU01FU1NBR0U7CisgICBLRVlfU01PVkUgICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NNT1ZFOworICAgS2V5X1NoaWZ0X01vdmUgICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TTU9WRTsKKyAgIEtFWV9TTkVYVCAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU05FWFQ7CisgICBLZXlfU2hpZnRfTmV4dF9QYWdlICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NORVhUOworICAgS0VZX1NPUFRJT05TICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TT1BUSU9OUzsKKyAgIEtleV9TaGlmdF9PcHRpb25zICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU09QVElPTlM7CisgICBLRVlfU1BSRVZJT1VTICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NQUkVWSU9VUzsKKyAgIEtleV9TaGlmdF9QcmV2aW91c19QYWdlICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU1BSRVZJT1VTOworICAgS0VZX1NQUklOVCAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TUFJJTlQ7CisgICBLZXlfU2hpZnRfUHJpbnQgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NQUklOVDsKKyAgIEtFWV9TUkVETyAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU1JFRE87CisgICBLZXlfU2hpZnRfUmVkbyAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NSRURPOworICAgS0VZX1NSRVBMQUNFICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TUkVQTEFDRTsKKyAgIEtleV9TaGlmdF9SZXBsYWNlICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU1JFUExBQ0U7CisgICBLRVlfU1JJR0hUICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NSSUdIVDsKKyAgIEtleV9TaGlmdF9DdXJzb3JfUmlnaHQgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU1JJR0hUOworICAgS0VZX1NSU1VNRSAgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TUlNVTUU7CisgICBLZXlfU2hpZnRfUmVzdW1lICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NSU1VNRTsKKyAgIEtFWV9TU0FWRSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU1NBVkU7CisgICBLZXlfU2hpZnRfU2F2ZSAgICAgICAgICAgICAgOiBTcGVjaWFsX0tleV9Db2RlIHJlbmFtZXMgS0VZX1NTQVZFOworICAgS0VZX1NTVVNQRU5EICAgICAgICAgICAgICAgIDogY29uc3RhbnQgU3BlY2lhbF9LZXlfQ29kZQorICAgICA6PSBDdXJzZXNfQ29uc3RhbnRzLktFWV9TU1VTUEVORDsKKyAgIEtleV9TaGlmdF9TdXNwZW5kICAgICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUgcmVuYW1lcyBLRVlfU1NVU1BFTkQ7CisgICBLRVlfU1VORE8gICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1NVTkRPOworICAgS2V5X1NoaWZ0X1VuZG8gICAgICAgICAgICAgIDogU3BlY2lhbF9LZXlfQ29kZSByZW5hbWVzIEtFWV9TVU5ETzsKKyAgIEtleV9TdXNwZW5kICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfU1VTUEVORDsKKyAgIEtleV9VbmRvICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfVU5ETzsKKyAgIEtleV9Nb3VzZSAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKKyAgICAgOj0gQ3Vyc2VzX0NvbnN0YW50cy5LRVlfTU9VU0U7CisgICBLZXlfUmVzaXplICAgICAgICAgICAgICAgICAgOiBjb25zdGFudCBTcGVjaWFsX0tleV9Db2RlCisgICAgIDo9IEN1cnNlc19Db25zdGFudHMuS0VZX1JFU0laRTsKKyAgIEtleV9NYXggICAgICAgICAgICAgICAgICAgICA6IGNvbnN0YW50IFNwZWNpYWxfS2V5X0NvZGUKICAgICAgOj0gU3BlY2lhbF9LZXlfQ29kZSdMYXN0OwogCiAgICBzdWJ0eXBlIFVzZXJfS2V5X0NvZGUgaXMgS2V5X0NvZGUKQEAgLTkwLDEyICszODYsNyBAQAogICAgLS0gIFRoaXMgaXMgcmVzZXJ2ZWQgZm9yIHVzZXIgZGVmaW5lZCBrZXkgY29kZXMuIFRoZSByYW5nZSBiZXR3ZWVuIEtleV9NYXgKICAgIC0tICBhbmQgdGhlIGZpcnN0IHVzZXIgY29kZSBpcyByZXNlcnZlZCBmb3Igc3Vic3lzdGVtcyBsaWtlIG1lbnUgYW5kIGZvcm1zLgogCi0gICAtLSAgRm9yIHRob3NlIHdobyBsaWtlIHRvIHVzZSB0aGUgb3JpZ2luYWwga2V5IG5hbWVzIHdlIHByb2R1Y2UgdGhlbSB3ZXJlCi0gICAtLSAgdGhleSBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwuIFBsZWFzZSBub3RlIHRoYXQgdGhleSBtYXkgZGlmZmVyIGluCi0gICAtLSAgbG93ZXIvdXBwZXIgY2FzZS4KLWluY2x1ZGUoYE9sZF9LZXlzJylkbmwKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICB0eXBlIENvbG9yX051bWJlciBpcyByYW5nZSAtMSAuLiBJbnRlZ2VyIChJbnRlcmZhY2VzLkMuc2hvcnQnTGFzdCk7CiAgICBmb3IgQ29sb3JfTnVtYmVyJ1NpemUgdXNlIEludGVyZmFjZXMuQy5zaG9ydCdTaXplOwpAQCAtMTA0LDcgKzM5NSwxNSBAQAogICAgLS0gIChwb3RlbnRpYWxseSkgZGVmaW5hYmxlIGNvbG9ycy4gU29tZSBvZiB0aG9zZSBpbmRpY2VzIGFyZQogICAgLS0gIHByZWRlZmluZWQgKHNlZSBiZWxvdyksIGFsdGhvdWdoIHRoZXkgbWF5IG5vdCByZWFsbHkgZXhpc3QuCiAKLWluY2x1ZGUoYENvbG9yX0RlZnMnKQorICAgQmxhY2sgICA6IGNvbnN0YW50IENvbG9yX051bWJlciA6PSBDdXJzZXNfQ29uc3RhbnRzLkNPTE9SX0JMQUNLOworICAgUmVkICAgICA6IGNvbnN0YW50IENvbG9yX051bWJlciA6PSBDdXJzZXNfQ29uc3RhbnRzLkNPTE9SX1JFRDsKKyAgIEdyZWVuICAgOiBjb25zdGFudCBDb2xvcl9OdW1iZXIgOj0gQ3Vyc2VzX0NvbnN0YW50cy5DT0xPUl9HUkVFTjsKKyAgIFllbGxvdyAgOiBjb25zdGFudCBDb2xvcl9OdW1iZXIgOj0gQ3Vyc2VzX0NvbnN0YW50cy5DT0xPUl9ZRUxMT1c7CisgICBCbHVlICAgIDogY29uc3RhbnQgQ29sb3JfTnVtYmVyIDo9IEN1cnNlc19Db25zdGFudHMuQ09MT1JfQkxVRTsKKyAgIE1hZ2VudGEgOiBjb25zdGFudCBDb2xvcl9OdW1iZXIgOj0gQ3Vyc2VzX0NvbnN0YW50cy5DT0xPUl9NQUdFTlRBOworICAgQ3lhbiAgICA6IGNvbnN0YW50IENvbG9yX051bWJlciA6PSBDdXJzZXNfQ29uc3RhbnRzLkNPTE9SX0NZQU47CisgICBXaGl0ZSAgIDogY29uc3RhbnQgQ29sb3JfTnVtYmVyIDo9IEN1cnNlc19Db25zdGFudHMuQ09MT1JfV0hJVEU7CisKICAgIHR5cGUgUkdCX1ZhbHVlIGlzIHJhbmdlIDAgLi4gSW50ZWdlciAoSW50ZXJmYWNlcy5DLnNob3J0J0xhc3QpOwogICAgZm9yIFJHQl9WYWx1ZSdTaXplIHVzZSBJbnRlcmZhY2VzLkMuc2hvcnQnU2l6ZTsKICAgIC0tICBTb21lIHN5c3RlbSBtYXkgYWxsb3cgdG8gcmVkZWZpbmUgYSBjb2xvciBieSBzZXR0aW5nIFJHQiB2YWx1ZXMuCkBAIC0xMTcsOCArNDE2LDczIEBACiAgICAtLSAgdHdvIGNvbG9ycyBkZXNjcmliZWQgYnkgQ29sb3JfTnVtYmVycywgb25lIGZvciB0aGUgZm9yZWdyb3VuZCBhbmQKICAgIC0tICB0aGUgb3RoZXIgZm9yIHRoZSBiYWNrZ3JvdW5kCiAKLWluY2x1ZGUoYENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0X1JlcCcpCi0gICAtLSAgKG4pY3Vyc2VzIHVzZXMgYWxsIGJ1dCB0aGUgbG93ZXN0IDE2IEJpdHMgZm9yIEF0dHJpYnV0ZXMuCisgICB0eXBlIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IGlzCisgICAgICByZWNvcmQKKyAgICAgICAgIFN0YW5kX091dCAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFVuZGVyX0xpbmUgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFJldmVyc2VfVmlkZW8gICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEJsaW5rICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIERpbV9DaGFyYWN0ZXIgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEJvbGRfQ2hhcmFjdGVyICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFByb3RlY3RlZF9DaGFyYWN0ZXIgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEludmlzaWJsZV9DaGFyYWN0ZXIgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIEFsdGVybmF0ZV9DaGFyYWN0ZXJfU2V0IDogQm9vbGVhbjsKKyAgICAgICAgIEhvcml6b250YWwgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIExlZnQgICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIExvdyAgICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFJpZ2h0ICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFRvcCAgICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIFZlcnRpY2FsICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgIGVuZCByZWNvcmQ7CisKKyAgIGZvciBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCB1c2UKKyAgICAgIHJlY29yZAorICAgICAgICAgU3RhbmRfT3V0IGF0IDAgcmFuZ2UKKyAgICAgICAgICAgQ3Vyc2VzX0NvbnN0YW50cy5BX1NUQU5ET1VUX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9TVEFORE9VVF9MYXN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0OworICAgICAgICAgVW5kZXJfTGluZSBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9VTkRFUkxJTkVfRmlyc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5BX1VOREVSTElORV9MYXN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0OworICAgICAgICAgUmV2ZXJzZV9WaWRlbyBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9SRVZFUlNFX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9SRVZFUlNFX0xhc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3Q7CisgICAgICAgICBCbGluayBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9CTElOS19GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfQkxJTktfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIERpbV9DaGFyYWN0ZXIgYXQgMCByYW5nZQorICAgICAgICAgICBDdXJzZXNfQ29uc3RhbnRzLkFfRElNX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9ESU1fTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIEJvbGRfQ2hhcmFjdGVyIGF0IDAgcmFuZ2UKKyAgICAgICAgICAgQ3Vyc2VzX0NvbnN0YW50cy5BX0JPTERfRmlyc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5BX0JPTERfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIFByb3RlY3RlZF9DaGFyYWN0ZXIgYXQgMCByYW5nZQorICAgICAgICAgICBDdXJzZXNfQ29uc3RhbnRzLkFfUFJPVEVDVF9GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfUFJPVEVDVF9MYXN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0OworICAgICAgICAgSW52aXNpYmxlX0NoYXJhY3RlciBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9JTlZJU19GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfSU5WSVNfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIEFsdGVybmF0ZV9DaGFyYWN0ZXJfU2V0IGF0IDAgcmFuZ2UKKyAgICAgICAgICAgQ3Vyc2VzX0NvbnN0YW50cy5BX0FMVENIQVJTRVRfRmlyc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5BX0FMVENIQVJTRVRfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIEhvcml6b250YWwgYXQgMCByYW5nZQorICAgICAgICAgICBDdXJzZXNfQ29uc3RhbnRzLkFfSE9SSVpPTlRBTF9GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfSE9SSVpPTlRBTF9MYXN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0OworICAgICAgICAgTGVmdCBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9MRUZUX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9MRUZUX0xhc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3Q7CisgICAgICAgICBMb3cgYXQgMCByYW5nZQorICAgICAgICAgICBDdXJzZXNfQ29uc3RhbnRzLkFfTE9XX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9MT1dfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgICAgIFJpZ2h0IGF0IDAgcmFuZ2UKKyAgICAgICAgICAgQ3Vyc2VzX0NvbnN0YW50cy5BX1JJR0hUX0ZpcnN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9SSUdIVF9MYXN0IC0gQ3Vyc2VzX0NvbnN0YW50cy5BdHRyX0ZpcnN0OworICAgICAgICAgVG9wIGF0IDAgcmFuZ2UKKyAgICAgICAgICAgQ3Vyc2VzX0NvbnN0YW50cy5BX1RPUF9GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfVE9QX0xhc3QgLSBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfRmlyc3Q7CisgICAgICAgICBWZXJ0aWNhbCBhdCAwIHJhbmdlCisgICAgICAgICAgIEN1cnNlc19Db25zdGFudHMuQV9WRVJUSUNBTF9GaXJzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkFfVkVSVElDQUxfTGFzdCAtIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdDsKKyAgICAgIGVuZCByZWNvcmQ7CiAKICAgIE5vcm1hbF9WaWRlbyA6IGNvbnN0YW50IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IChvdGhlcnMgPT4gRmFsc2UpOwogCkBAIC0xMjgsMTcgKzQ5MiwyOSBAQAogICAgICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyOwogICAgICAgICAgQ2ggICAgOiBDaGFyYWN0ZXI7CiAgICAgICBlbmQgcmVjb3JkOwotICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKKyAgIHByYWdtYSBDb252ZW50aW9uIChDX1Bhc3NfQnlfQ29weSwgQXR0cmlidXRlZF9DaGFyYWN0ZXIpOwogICAgLS0gIFRoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0IGZvciB0aGUgY2h0eXBlIGluIEMuCiAKLWluY2x1ZGUoYEFDX1JlcCcpCisgICBmb3IgQXR0cmlidXRlZF9DaGFyYWN0ZXIgdXNlCisgICAgICByZWNvcmQKKyAgICAgICAgIENoICAgIGF0IDAgcmFuZ2UgQ3Vyc2VzX0NvbnN0YW50cy5BX0NIQVJURVhUX0ZpcnN0CisgICAgICAgICAgIC4uIEN1cnNlc19Db25zdGFudHMuQV9DSEFSVEVYVF9MYXN0OworICAgICAgICAgQ29sb3IgYXQgMCByYW5nZSBDdXJzZXNfQ29uc3RhbnRzLkFfQ09MT1JfRmlyc3QKKyAgICAgICAgICAgLi4gQ3Vyc2VzX0NvbnN0YW50cy5BX0NPTE9SX0xhc3Q7CisgICAgICAgICBwcmFnbWEgV2FybmluZ3MgKE9mZik7CisgICAgICAgICBBdHRyICBhdCAwIHJhbmdlIEN1cnNlc19Db25zdGFudHMuQXR0cl9GaXJzdAorICAgICAgICAgICAuLiBDdXJzZXNfQ29uc3RhbnRzLkF0dHJfTGFzdDsKKyAgICAgICAgIHByYWdtYSBXYXJuaW5ncyAoT24pOworICAgICAgZW5kIHJlY29yZDsKKyAgIGZvciBBdHRyaWJ1dGVkX0NoYXJhY3RlcidTaXplIHVzZSBDdXJzZXNfQ29uc3RhbnRzLmNodHlwZV9TaXplOworCiAgICBEZWZhdWx0X0NoYXJhY3RlciA6IGNvbnN0YW50IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyCiAgICAgIDo9IChDaCAgICA9PiBDaGFyYWN0ZXInRmlyc3QsCiAgICAgICAgICBDb2xvciA9PiBDb2xvcl9QYWlyJ0ZpcnN0LAogICAgICAgICAgQXR0ciAgPT4gKG90aGVycyA9PiBGYWxzZSkpOyAgLS0gIHByZWVsYWJvcmF0YWJsZSBOb3JtYWxfVmlkZW8KIAogICAgdHlwZSBBdHRyaWJ1dGVkX1N0cmluZyBpcyBhcnJheSAoUG9zaXRpdmUgcmFuZ2UgPD4pIG9mIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwotICAgcHJhZ21hIFBhY2sgKEF0dHJpYnV0ZWRfU3RyaW5nKTsKKyAgIHByYWdtYSBDb252ZW50aW9uIChDLCBBdHRyaWJ1dGVkX1N0cmluZyk7CiAgICAtLSAgSW4gdGhpcyBiaW5kaW5nIHdlIGFsbG93IHN0cmluZ3Mgb2YgYXR0cmlidXRlZCBjaGFyYWN0ZXJzLgogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4OCw3ICs1NjQsNzggQEAKICAgIGZ1bmN0aW9uIE51bWJlcl9PZl9Db2xvcl9QYWlycyByZXR1cm4gTmF0dXJhbDsKICAgIHByYWdtYSBJbmxpbmUgKE51bWJlcl9PZl9Db2xvcl9QYWlycyk7CiAKLWluY2x1ZGUoYEFDU19NYXAnKWRubAorICAgc3VidHlwZSBBQ1NfSW5kZXggaXMgQ2hhcmFjdGVyIHJhbmdlCisgICAgIENoYXJhY3RlcidWYWwgKDApIC4uIENoYXJhY3RlcidWYWwgKDEyNyk7CisgICBmdW5jdGlvbiBBQ1NfTWFwIChJbmRleCA6IEFDU19JbmRleCkgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOworICAgcHJhZ21hIEltcG9ydCAoQywgQUNTX01hcCwgImFjc19tYXBfYXNfZnVuY3Rpb24iKTsKKworICAgLS0gIENvbnN0YW50cyBmb3Igc2V2ZXJhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIEFsdGVybmF0ZSBDaGFyYWN0ZXIgU2V0CisgICAtLSAgWW91IG11c3QgdXNlIHRoZXNlIGNvbnN0YW50cyBhcyBpbmRpY2VzIGludG8gdGhlIEFDU19NYXAgZnVuY3Rpb24KKyAgIC0tICB0byBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlZCBjaGFyYWN0ZXIgYXQgcnVudGltZQorICAgQUNTX1VwcGVyX0xlZnRfQ29ybmVyICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfVUxDT1JORVIpOworICAgQUNTX0xvd2VyX0xlZnRfQ29ybmVyICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfTExDT1JORVIpOworICAgQUNTX1VwcGVyX1JpZ2h0X0Nvcm5lciA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfVVJDT1JORVIpOworICAgQUNTX0xvd2VyX1JpZ2h0X0Nvcm5lciA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfTFJDT1JORVIpOworICAgQUNTX0xlZnRfVGVlICAgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfTFRFRSk7CisgICBBQ1NfUmlnaHRfVGVlICAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19SVEVFKTsKKyAgIEFDU19Cb3R0b21fVGVlICAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX0JURUUpOworICAgQUNTX1RvcF9UZWUgICAgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfVFRFRSk7CisgICBBQ1NfSG9yaXpvbnRhbF9MaW5lICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19ITElORSk7CisgICBBQ1NfVmVydGljYWxfTGluZSAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19WTElORSk7CisgICBBQ1NfUGx1c19TeW1ib2wgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19QTFVTKTsKKyAgIEFDU19TY2FuX0xpbmVfMSAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX1MxKTsKKyAgIEFDU19TY2FuX0xpbmVfOSAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX1M5KTsKKyAgIEFDU19EaWFtb25kICAgICAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX0RJQU1PTkQpOworICAgQUNTX0NoZWNrZXJfQm9hcmQgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfQ0tCT0FSRCk7CisgICBBQ1NfRGVncmVlICAgICAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19ERUdSRUUpOworICAgQUNTX1BsdXNfTWludXMgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfUExNSU5VUyk7CisgICBBQ1NfQnVsbGV0ICAgICAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19CVUxMRVQpOworICAgQUNTX0xlZnRfQXJyb3cgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfTEFSUk9XKTsKKyAgIEFDU19SaWdodF9BcnJvdyAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX1JBUlJPVyk7CisgICBBQ1NfRG93bl9BcnJvdyAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19EQVJST1cpOworICAgQUNTX1VwX0Fycm93ICAgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfVUFSUk9XKTsKKyAgIEFDU19Cb2FyZF9PZl9TcXVhcmVzICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX0JPQVJEKTsKKyAgIEFDU19MYW50ZXJuICAgICAgICAgICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX0xBTlRFUk4pOworICAgQUNTX1NvbGlkX0Jsb2NrICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfQkxPQ0spOworICAgQUNTX1NjYW5fTGluZV8zICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfUzMpOworICAgQUNTX1NjYW5fTGluZV83ICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfUzcpOworICAgQUNTX0xlc3NfT3JfRXF1YWwgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfTEVRVUFMKTsKKyAgIEFDU19HcmVhdGVyX09yX0VxdWFsICAgOiBjb25zdGFudCBBQ1NfSW5kZXgKKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKEN1cnNlc19Db25zdGFudHMuQUNTX0dFUVVBTCk7CisgICBBQ1NfUEkgICAgICAgICAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19QSSk7CisgICBBQ1NfTm90X0VxdWFsICAgICAgICAgIDogY29uc3RhbnQgQUNTX0luZGV4CisgICAgICA6PSBDaGFyYWN0ZXInVmFsIChDdXJzZXNfQ29uc3RhbnRzLkFDU19ORVFVQUwpOworICAgQUNTX1N0ZXJsaW5nICAgICAgICAgICA6IGNvbnN0YW50IEFDU19JbmRleAorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoQ3Vyc2VzX0NvbnN0YW50cy5BQ1NfU1RFUkxJTkcpOwogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19pbml0c2NyLjN4JykKICAgIC0tICB8IE5vdCBpbXBsZW1lbnRlZDogbmV3dGVybSwgc2V0X3Rlcm0sIGRlbHNjcmVlbgpAQCAtMTk2LDExICs2NDMsMTMgQEAKICAgIC0tICBBTkNIT1IoYHN0ZHNjcicsYFN0YW5kYXJkX1dpbmRvdycpCiAgICBmdW5jdGlvbiBTdGFuZGFyZF9XaW5kb3cgcmV0dXJuIFdpbmRvdzsKICAgIC0tICBBS0EKKyAgIHByYWdtYSBJbXBvcnQgKEMsIFN0YW5kYXJkX1dpbmRvdywgInN0ZHNjcl9hc19mdW5jdGlvbiIpOwogICAgcHJhZ21hIElubGluZSAoU3RhbmRhcmRfV2luZG93KTsKIAogICAgLS0gIEFOQ0hPUihgY3Vyc2NyJyxgQ3VycmVudF9XaW5kb3cnKQogICAgZnVuY3Rpb24gQ3VycmVudF9XaW5kb3cgcmV0dXJuIFdpbmRvdzsKICAgIC0tICBBS0EKKyAgIHByYWdtYSBJbXBvcnQgKEMsIEN1cnJlbnRfV2luZG93LCAiY3Vyc2NyX2FzX2Z1bmN0aW9uIik7CiAgICBwcmFnbWEgSW5saW5lIChDdXJyZW50X1dpbmRvdyk7CiAKICAgIC0tICBBTkNIT1IoYGluaXRzY3IoKScsYEluaXRfU2NyZWVuJykKQEAgLTIyNyw5ICs2NzYsOSBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfbW92ZS4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHdtb3ZlKCknLGBNb3ZlX0N1cnNvcicpCi0gICBwcm9jZWR1cmUgTW92ZV9DdXJzb3IgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbik7CisgICBwcm9jZWR1cmUgTW92ZV9DdXJzb3IgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbik7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG1vdmUoKScpCiAgICBwcmFnbWEgSW5saW5lIChNb3ZlX0N1cnNvcik7CkBAIC0yMzcsNDMgKzY4Niw0MyBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfYWRkY2guM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3YWRkY2goKScsYEFkZCcpCi0gICBwcm9jZWR1cmUgQWRkIChXaW4gOiAgaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgIENoICA6ICBpbiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CisgICBwcm9jZWR1cmUgQWRkIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBhZGRjaCgpJykKIAotICAgcHJvY2VkdXJlIEFkZCAoV2luIDogIGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICBDaCAgOiAgaW4gQ2hhcmFjdGVyKTsKKyAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICBDaCAgOiBDaGFyYWN0ZXIpOwogICAgLS0gIEFkZCBhIHNpbmdsZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgbG9naWNhbCBjdXJzb3IgcG9zaXRpb24gdG8KICAgIC0tICB0aGUgd2luZG93LiBVc2UgdGhlIGN1cnJlbnQgd2luZG93cyBhdHRyaWJ1dGVzLgogCiAgICAtLSAgQU5DSE9SKGBtdndhZGRjaCgpJyxgQWRkJykKICAgIHByb2NlZHVyZSBBZGQKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgQ2ggICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIpOworICAgICAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb247CisgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBDaCAgICAgOiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG12YWRkY2goKScpCiAKICAgIHByb2NlZHVyZSBBZGQKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgQ2ggICAgIDogaW4gQ2hhcmFjdGVyKTsKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgQ2ggICAgIDogQ2hhcmFjdGVyKTsKICAgIC0tICBNb3ZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgYWRkIGEgc2luZ2xlIGNoYXJhY3RlciBpbnRvIHRoZSB3aW5kb3cKICAgIC0tICBUaGVyZSBhcmUgbW9yZSBBZGQgcm91dGluZXMsIHNvIHRoZSBJbmxpbmUgcHJhZ21hIGZvbGxvd3MgbGF0ZXIKIAogICAgLS0gIEFOQ0hPUihgd2VjaG9jaGFyKCknLGBBZGRfV2l0aF9JbW1lZGlhdGVfRWNobycpCiAgICBwcm9jZWR1cmUgQWRkX1dpdGhfSW1tZWRpYXRlX0VjaG8KLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CisgICAgIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBlY2hvY2hhcigpJykKIAogICAgcHJvY2VkdXJlIEFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvCi0gICAgIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgQ2ggIDogaW4gQ2hhcmFjdGVyKTsKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBDaCAgOiBDaGFyYWN0ZXIpOwogICAgLS0gIEFkZCBhIGNoYXJhY3RlciBhbmQgZG8gYW4gaW1tZWRpYXRlIHJlZnJlc2ggb2YgdGhlIHNjcmVlbi4KICAgIHByYWdtYSBJbmxpbmUgKEFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvKTsKIApAQCAtMzMxLDUyICs3ODAsNTIgQEAKICAgIHByYWdtYSBJbmxpbmUgKER1cGxpY2F0ZSk7CiAKICAgIC0tICBBTkNIT1IoYG12d2luKCknLGBNb3ZlX1dpbmRvdycpCi0gICBwcm9jZWR1cmUgTW92ZV9XaW5kb3cgKFdpbiAgICA6IGluIFdpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKTsKKyAgIHByb2NlZHVyZSBNb3ZlX1dpbmRvdyAoV2luICAgIDogV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoTW92ZV9XaW5kb3cpOwogCiAgICAtLSAgQU5DSE9SKGBtdmRlcndpbigpJyxgTW92ZV9EZXJpdmVkX1dpbmRvdycpCi0gICBwcm9jZWR1cmUgTW92ZV9EZXJpdmVkX1dpbmRvdyAoV2luICAgIDogaW4gV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKTsKKyAgIHByb2NlZHVyZSBNb3ZlX0Rlcml2ZWRfV2luZG93IChXaW4gICAgOiBXaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb24pOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoTW92ZV9EZXJpdmVkX1dpbmRvdyk7CiAKICAgIC0tICBBTkNIT1IoYHdzeW5jdXAoKScsYFN5bmNocm9uaXplX1Vwd2FyZHMnKQotICAgcHJvY2VkdXJlIFN5bmNocm9uaXplX1Vwd2FyZHMgKFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgU3luY2hyb25pemVfVXB3YXJkcyAoV2luIDogV2luZG93KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbXBvcnQgKEMsIFN5bmNocm9uaXplX1Vwd2FyZHMsICJ3c3luY3VwIik7CiAKICAgIC0tICBBTkNIT1IoYHdzeW5jZG93bigpJyxgU3luY2hyb25pemVfRG93bndhcmRzJykKLSAgIHByb2NlZHVyZSBTeW5jaHJvbml6ZV9Eb3dud2FyZHMgKFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgU3luY2hyb25pemVfRG93bndhcmRzIChXaW4gOiBXaW5kb3cpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIEltcG9ydCAoQywgU3luY2hyb25pemVfRG93bndhcmRzLCAid3N5bmNkb3duIik7CiAKICAgIC0tICBBTkNIT1IoYHN5bmNvaygpJyxgU2V0X1N5bmNoX01vZGUnKQotICAgcHJvY2VkdXJlIFNldF9TeW5jaF9Nb2RlIChXaW4gIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSA6IGluIEJvb2xlYW4gOj0gRmFsc2UpOworICAgcHJvY2VkdXJlIFNldF9TeW5jaF9Nb2RlIChXaW4gIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSA6IEJvb2xlYW4gOj0gRmFsc2UpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1N5bmNoX01vZGUpOwogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19hZGRzdHIuM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3YWRkbnN0cigpJyxgQWRkJykKLSAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICBTdHIgOiBpbiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICBMZW4gOiBpbiBJbnRlZ2VyIDo9IC0xKTsKKyAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICBTdHIgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICBMZW4gOiBJbnRlZ2VyIDo9IC0xKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgd2FkZHN0cigpJykKICAgIC0tICBBTElBUyhgYWRkbnN0cigpJykKICAgIC0tICBBTElBUyhgYWRkc3RyKCknKQogCiAgICAtLSAgQU5DSE9SKGBtdndhZGRuc3RyKCknLGBBZGQnKQotICAgcHJvY2VkdXJlIEFkZCAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBTdHIgICAgOiBpbiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICBMZW4gICAgOiBpbiBJbnRlZ2VyIDo9IC0xKTsKKyAgIHByb2NlZHVyZSBBZGQgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgU3RyICAgIDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgTGVuICAgIDogSW50ZWdlciA6PSAtMSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG12d2FkZHN0cigpJykKICAgIC0tICBBTElBUyhgbXZhZGRuc3RyKCknKQpAQCAtMzg1LDIwICs4MzQsMjAgQEAKICAgIC0tICBNQU5QQUdFKGBjdXJzX2FkZGNoc3RyLjN4JykKIAogICAgLS0gIEFOQ0hPUihgd2FkZGNobnN0cigpJyxgQWRkJykKLSAgIHByb2NlZHVyZSBBZGQgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICBTdHIgOiBpbiBBdHRyaWJ1dGVkX1N0cmluZzsKLSAgICAgICAgICAgICAgICAgIExlbiA6IGluIEludGVnZXIgOj0gLTEpOworICAgcHJvY2VkdXJlIEFkZCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgIFN0ciA6IEF0dHJpYnV0ZWRfU3RyaW5nOworICAgICAgICAgICAgICAgICAgTGVuIDogSW50ZWdlciA6PSAtMSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHdhZGRjaHN0cigpJykKICAgIC0tICBBTElBUyhgYWRkY2huc3RyKCknKQogICAgLS0gIEFMSUFTKGBhZGRjaHN0cigpJykKIAogICAgLS0gIEFOQ0hPUihgbXZ3YWRkY2huc3RyKCknLGBBZGQnKQotICAgcHJvY2VkdXJlIEFkZCAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBTdHIgICAgOiBpbiBBdHRyaWJ1dGVkX1N0cmluZzsKLSAgICAgICAgICAgICAgICAgIExlbiAgICA6IGluIEludGVnZXIgOj0gLTEpOworICAgcHJvY2VkdXJlIEFkZCAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb247CisgICAgICAgICAgICAgICAgICBTdHIgICAgOiBBdHRyaWJ1dGVkX1N0cmluZzsKKyAgICAgICAgICAgICAgICAgIExlbiAgICA6IEludGVnZXIgOj0gLTEpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBtdndhZGRjaHN0cigpJykKICAgIC0tICBBTElBUyhgbXZhZGRjaG5zdHIoKScpCkBAIC00MTEsMTUgKzg2MCwxNSBAQAogCiAgICAtLSAgQU5DSE9SKGB3Ym9yZGVyKCknLGBCb3JkZXInKQogICAgcHJvY2VkdXJlIEJvcmRlcgotICAgICAoV2luICAgICAgICAgICAgICAgICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMZWZ0X1NpZGVfU3ltYm9sICAgICAgICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBSaWdodF9TaWRlX1N5bWJvbCAgICAgICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBUb3BfU2lkZV9TeW1ib2wgICAgICAgICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBCb3R0b21fU2lkZV9TeW1ib2wgICAgICAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBVcHBlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBVcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBMb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2wgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBMb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXIKKyAgICAgKFdpbiAgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGVmdF9TaWRlX1N5bWJvbCAgICAgICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgUmlnaHRfU2lkZV9TeW1ib2wgICAgICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgVG9wX1NpZGVfU3ltYm9sICAgICAgICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgQm90dG9tX1NpZGVfU3ltYm9sICAgICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgVXBwZXJfTGVmdF9Db3JuZXJfU3ltYm9sICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgVXBwZXJfUmlnaHRfQ29ybmVyX1N5bWJvbCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgTG93ZXJfTGVmdF9Db3JuZXJfU3ltYm9sICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyOworICAgICAgTG93ZXJfUmlnaHRfQ29ybmVyX1N5bWJvbCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyCiAgICAgICk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGJvcmRlcigpJykKQEAgLTQyNywyNiArODc2LDI2IEBACiAKICAgIC0tICBBTkNIT1IoYGJveCgpJyxgQm94JykKICAgIHByb2NlZHVyZSBCb3gKLSAgICAgKFdpbiAgICAgICAgICAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIFZlcnRpY2FsX1N5bWJvbCAgIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7Ci0gICAgICBIb3Jpem9udGFsX1N5bWJvbCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKTsKKyAgICAgKFdpbiAgICAgICAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIFZlcnRpY2FsX1N5bWJvbCAgIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXI7CisgICAgICBIb3Jpem9udGFsX1N5bWJvbCA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEJveCk7CiAKICAgIC0tICBBTkNIT1IoYHdobGluZSgpJyxgSG9yaXpvbnRhbF9MaW5lJykKICAgIHByb2NlZHVyZSBIb3Jpem9udGFsX0xpbmUKLSAgICAgKFdpbiAgICAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIExpbmVfU2l6ZSAgIDogaW4gTmF0dXJhbDsKLSAgICAgIExpbmVfU3ltYm9sIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXIpOworICAgICAoV2luICAgICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZV9TaXplICAgOiBOYXR1cmFsOworICAgICAgTGluZV9TeW1ib2wgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlciA6PSBEZWZhdWx0X0NoYXJhY3Rlcik7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGhsaW5lKCknKQogICAgcHJhZ21hIElubGluZSAoSG9yaXpvbnRhbF9MaW5lKTsKIAogICAgLS0gIEFOQ0hPUihgd3ZsaW5lKCknLGBWZXJ0aWNhbF9MaW5lJykKICAgIHByb2NlZHVyZSBWZXJ0aWNhbF9MaW5lCi0gICAgIChXaW4gICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lX1NpemUgICA6IGluIE5hdHVyYWw7Ci0gICAgICBMaW5lX1N5bWJvbCA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IERlZmF1bHRfQ2hhcmFjdGVyKTsKKyAgICAgKFdpbiAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIExpbmVfU2l6ZSAgIDogTmF0dXJhbDsKKyAgICAgIExpbmVfU3ltYm9sIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gRGVmYXVsdF9DaGFyYWN0ZXIpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGB2bGluZSgpJykKICAgIHByYWdtYSBJbmxpbmUgKFZlcnRpY2FsX0xpbmUpOwpAQCAtNDYxLDEyICs5MTAsMTIgQEAKICAgIC0tICBBTElBUyhgZ2V0Y2goKScpCiAgICAtLSAgR2V0IGEgY2hhcmFjdGVyIGZyb20gdGhlIGtleWJvYXJkIGFuZCBlY2hvIGl0IC0gaWYgZW5hYmxlZCAtIHRvIHRoZQogICAgLS0gIHdpbmRvdy4KLSAgIC0tICBJZiBmb3IgYW55IHJlYXNvbiAoaS5lLiBhIHRpbWVvdXQpIHdlIGNvdWxkbid0IGdldCBhIGNoYXJhY3RlciB0aGUKKyAgIC0tICBJZiBmb3IgYW55IHJlYXNvbiAoaS5lLiBhIHRpbWVvdXQpIHdlIGNvdWxkIG5vdCBnZXQgYSBjaGFyYWN0ZXIgdGhlCiAgICAtLSAgcmV0dXJuZWQga2V5Y29kZSBpcyBLZXlfTm9uZS4KICAgIHByYWdtYSBJbmxpbmUgKEdldF9LZXlzdHJva2UpOwogCiAgICAtLSAgQU5DSE9SKGB1bmdldGNoKCknLGBVbmRvX0tleXN0cm9rZScpCi0gICBwcm9jZWR1cmUgVW5kb19LZXlzdHJva2UgKEtleSA6IGluIFJlYWxfS2V5X0NvZGUpOworICAgcHJvY2VkdXJlIFVuZG9fS2V5c3Ryb2tlIChLZXkgOiBSZWFsX0tleV9Db2RlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFVuZG9fS2V5c3Ryb2tlKTsKIApAQCAtNTA5LDkgKzk1OCw5IEBACiAKICAgIC0tICBBTkNIT1IoYHdhdHRyb24oKScsYFN3aXRjaF9DaGFyYWN0ZXJfQXR0cmlidXRlJykKICAgIHByb2NlZHVyZSBTd2l0Y2hfQ2hhcmFjdGVyX0F0dHJpYnV0ZQotICAgICAoV2luICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBBdHRyIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgT24gICA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7IC0tICBpZiBGYWxzZSB3ZSBzd2l0Y2ggT2ZmLgorICAgICAoV2luICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBBdHRyIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgT24gICA6IEJvb2xlYW4gOj0gVHJ1ZSk7IC0tICBpZiBGYWxzZSB3ZSBzd2l0Y2ggT2ZmLgogICAgLS0gIFN3aXRjaGVzIHRob3NlIEF0dHJpYnV0ZXMgc2V0IHRvIHRydWUgaW4gdGhlIGxpc3QuCiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHdhdHRyb2ZmKCknKQpAQCAtNTIwLDQ5ICs5NjksNDkgQEAKIAogICAgLS0gIEFOQ0hPUihgd2F0dHJzZXQoKScsYFNldF9DaGFyYWN0ZXJfQXR0cmlidXRlcycpCiAgICBwcm9jZWR1cmUgU2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGVzCi0gICAgIChXaW4gICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBBdHRyICA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKLSAgICAgIENvbG9yIDogaW4gQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KTsKKyAgICAgKFdpbiAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIEF0dHIgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBhdHRyc2V0KCknKQogICAgcHJhZ21hIElubGluZSAoU2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGVzKTsKIAogICAgLS0gIEFOQ0hPUihgd2F0dHJfZ2V0KCknLGBHZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXMnKQogICAgZnVuY3Rpb24gR2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGUKLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpIHJldHVybiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpIHJldHVybiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgYXR0cl9nZXQoKScpCiAKICAgIC0tICBBTkNIT1IoYHdhdHRyX2dldCgpJyxgR2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGUnKQogICAgZnVuY3Rpb24gR2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGUKLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpIHJldHVybiBDb2xvcl9QYWlyOworICAgICAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdykgcmV0dXJuIENvbG9yX1BhaXI7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChHZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZSk7CiAKICAgIC0tICBBTkNIT1IoYHdjb2xvcl9zZXQoKScsYFNldF9Db2xvcicpCi0gICBwcm9jZWR1cmUgU2V0X0NvbG9yIChXaW4gIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIgOiBpbiBDb2xvcl9QYWlyKTsKKyAgIHByb2NlZHVyZSBTZXRfQ29sb3IgKFdpbiAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgUGFpciA6IENvbG9yX1BhaXIpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBjb2xvcl9zZXQoKScpCiAgICBwcmFnbWEgSW5saW5lIChTZXRfQ29sb3IpOwogCiAgICAtLSAgQU5DSE9SKGB3Y2hnYXQoKScsYENoYW5nZV9BdHRyaWJ1dGVzJykKICAgIHByb2NlZHVyZSBDaGFuZ2VfQXR0cmlidXRlcwotICAgICAoV2luICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgQ291bnQgOiBpbiBJbnRlZ2VyIDo9IC0xOwotICAgICAgQXR0ciAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CisgICAgIChXaW4gICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBDb3VudCA6IEludGVnZXIgOj0gLTE7CisgICAgICBBdHRyICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIENvbG9yIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgY2hnYXQoKScpCiAKICAgIC0tICBBTkNIT1IoYG12d2NoZ2F0KCknLGBDaGFuZ2VfQXR0cmlidXRlcycpCiAgICBwcm9jZWR1cmUgQ2hhbmdlX0F0dHJpYnV0ZXMKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uIDo9IExpbmVfUG9zaXRpb24nRmlyc3Q7Ci0gICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb24gOj0gQ29sdW1uX1Bvc2l0aW9uJ0ZpcnN0OwotICAgICAgQ291bnQgIDogaW4gSW50ZWdlciA6PSAtMTsKLSAgICAgIEF0dHIgICA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKLSAgICAgIENvbG9yICA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCk7CisgICAgIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbiA6PSBMaW5lX1Bvc2l0aW9uJ0ZpcnN0OworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uIDo9IENvbHVtbl9Qb3NpdGlvbidGaXJzdDsKKyAgICAgIENvdW50ICA6IEludGVnZXIgOj0gLTE7CisgICAgICBBdHRyICAgOiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87CisgICAgICBDb2xvciAgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBtdmNoZ2F0KCknKQogICAgcHJhZ21hIElubGluZSAoQ2hhbmdlX0F0dHJpYnV0ZXMpOwpAQCAtNTg0LDM2ICsxMDMzLDM2IEBACiAgICAtLSAgfCBOb3QgaW1wbGVtZW50ZWQgOiB0eXBlYWhlYWQKICAgIC0tCiAgICAtLSAgQU5DSE9SKGBjYnJlYWsoKScsYFNldF9DYnJlYWtfTW9kZScpCi0gICBwcm9jZWR1cmUgU2V0X0NicmVha19Nb2RlIChTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICBwcm9jZWR1cmUgU2V0X0NicmVha19Nb2RlIChTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG5vY2JyZWFrKCknKQogICAgcHJhZ21hIElubGluZSAoU2V0X0NicmVha19Nb2RlKTsKIAogICAgLS0gIEFOQ0hPUihgcmF3KCknLGBTZXRfUmF3X01vZGUnKQotICAgcHJvY2VkdXJlIFNldF9SYXdfTW9kZSAoU3dpdGNoT24gOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgcHJvY2VkdXJlIFNldF9SYXdfTW9kZSAoU3dpdGNoT24gOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBub3JhdygpJykKICAgIHByYWdtYSBJbmxpbmUgKFNldF9SYXdfTW9kZSk7CiAKICAgIC0tICBBTkNIT1IoYGVjaG8oKScsYFNldF9FY2hvX01vZGUnKQotICAgcHJvY2VkdXJlIFNldF9FY2hvX01vZGUgKFN3aXRjaE9uIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgIHByb2NlZHVyZSBTZXRfRWNob19Nb2RlIChTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG5vZWNobygpJykKICAgIHByYWdtYSBJbmxpbmUgKFNldF9FY2hvX01vZGUpOwogCiAgICAtLSAgQU5DSE9SKGBtZXRhKCknLGBTZXRfTWV0YV9Nb2RlJykKLSAgIHByb2NlZHVyZSBTZXRfTWV0YV9Nb2RlIChXaW4gICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoT24gOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgcHJvY2VkdXJlIFNldF9NZXRhX01vZGUgKFdpbiAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2hPbiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfTWV0YV9Nb2RlKTsKIAogICAgLS0gIEFOQ0hPUihga2V5cGFkKCknLGBTZXRfS2V5UGFkX01vZGUnKQotICAgcHJvY2VkdXJlIFNldF9LZXlQYWRfTW9kZSAoV2luICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoT24gOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgcHJvY2VkdXJlIFNldF9LZXlQYWRfTW9kZSAoV2luICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoT24gOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X0tleVBhZF9Nb2RlKTsKIAotICAgZnVuY3Rpb24gR2V0X0tleVBhZF9Nb2RlIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQorICAgZnVuY3Rpb24gR2V0X0tleVBhZF9Nb2RlIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgIC0tICBUaGlzIGhhcyBubyBwZW5kYW50IGluIEMuIFRoZXJlIHlvdSd2ZSB0byBsb29rIGludG8gdGhlIFdJTkRPV1MKICAgIC0tICBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2YWx1ZS4gQmFkIHByYWN0aWNlLCBub3QgcmVwZWF0ZWQgaW4gQWRhLgpAQCAtNjIxLDEwMCArMTA3MCwxMDAgQEAKICAgIHR5cGUgSGFsZl9EZWxheV9BbW91bnQgaXMgcmFuZ2UgMSAuLiAyNTU7CiAKICAgIC0tICBBTkNIT1IoYGhhbGZkZWxheSgpJyxgSGFsZl9EZWxheScpCi0gICBwcm9jZWR1cmUgSGFsZl9EZWxheSAoQW1vdW50IDogaW4gSGFsZl9EZWxheV9BbW91bnQpOworICAgcHJvY2VkdXJlIEhhbGZfRGVsYXkgKEFtb3VudCA6IEhhbGZfRGVsYXlfQW1vdW50KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEhhbGZfRGVsYXkpOwogCiAgICAtLSAgQU5DSE9SKGBpbnRyZmx1c2goKScsYFNldF9GbHVzaF9Pbl9JbnRlcnJ1cHRfTW9kZScpCiAgICBwcm9jZWR1cmUgU2V0X0ZsdXNoX09uX0ludGVycnVwdF9Nb2RlCi0gICAgIChXaW4gIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIE1vZGUgOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgICAoV2luICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBNb2RlIDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9GbHVzaF9Pbl9JbnRlcnJ1cHRfTW9kZSk7CiAKICAgIC0tICBBTkNIT1IoYHFpZmx1c2goKScsYFNldF9RdWV1ZV9JbnRlcnJ1cHRfTW9kZScpCiAgICBwcm9jZWR1cmUgU2V0X1F1ZXVlX0ludGVycnVwdF9Nb2RlCi0gICAgIChXaW4gICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBGbHVzaCA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICAgIChXaW4gICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBGbHVzaCA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG5vcWlmbHVzaCgpJykKICAgIHByYWdtYSBJbmxpbmUgKFNldF9RdWV1ZV9JbnRlcnJ1cHRfTW9kZSk7CiAKICAgIC0tICBBTkNIT1IoYG5vZGVsYXkoKScsYFNldF9Ob0RlbGF5X01vZGUnKQogICAgcHJvY2VkdXJlIFNldF9Ob0RlbGF5X01vZGUKLSAgICAgKFdpbiAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTW9kZSA6IGluIEJvb2xlYW4gOj0gRmFsc2UpOworICAgICAoV2luICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBNb2RlIDogQm9vbGVhbiA6PSBGYWxzZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfTm9EZWxheV9Nb2RlKTsKIAogICAgdHlwZSBUaW1lb3V0X01vZGUgaXMgKEJsb2NraW5nLCBOb25fQmxvY2tpbmcsIERlbGF5ZWQpOwogCiAgICAtLSAgQU5DSE9SKGB3dGltZW91dCgpJyxgU2V0X1RpbWVvdXRfTW9kZScpCi0gICBwcm9jZWR1cmUgU2V0X1RpbWVvdXRfTW9kZSAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlICAgOiBpbiBUaW1lb3V0X01vZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW1vdW50IDogaW4gTmF0dXJhbCk7IC0tICBpbiBNaWxsaXNlY29uZHMKKyAgIHByb2NlZHVyZSBTZXRfVGltZW91dF9Nb2RlIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgICA6IFRpbWVvdXRfTW9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbW91bnQgOiBOYXR1cmFsKTsgLS0gIGluIE1pbGxpc2Vjb25kcwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGB0aW1lb3V0KCknKQogICAgLS0gIEluc3RlYWQgb2Ygb3ZlcmxvYWRpbmcgdGhlIHNlbWFudGljIG9mIHRoZSBzaWduIG9mIGFtb3VudCwgd2UKICAgIC0tICBpbnRyb2R1Y2UgdGhlIFRpbWVvdXRfTW9kZSBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkIGltcHJvdmUKICAgIC0tICByZWFkYWJpbGl0eS4gRm9yIEJsb2NraW5nIGFuZCBOb25fQmxvY2tpbmcsIHRoZSBBbW91bnQgaXMgbm90CiAgICAtLSAgZXZhbHVhdGVkLgotICAgLS0gIFdlIGRvbid0IGlubGluZSB0aGlzIHByb2NlZHVyZS4KKyAgIC0tICBXZSBkbyBub3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlLgogCiAgICAtLSAgQU5DSE9SKGBub3RpbWVvdXQoKScsYFNldF9Fc2NhcGVfVGltZV9Nb2RlJykKICAgIHByb2NlZHVyZSBTZXRfRXNjYXBlX1RpbWVyX01vZGUKLSAgICAgKFdpbiAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBUaW1lcl9PZmYgOiBpbiBCb29sZWFuIDo9IEZhbHNlKTsKKyAgICAgKFdpbiAgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBUaW1lcl9PZmYgOiBCb29sZWFuIDo9IEZhbHNlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFNldF9Fc2NhcGVfVGltZXJfTW9kZSk7CiAKICAgIC0tICBNQU5QQUdFKGBjdXJzX291dG9wdHMuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBubCgpJyxgU2V0X05MX01vZGUnKQotICAgcHJvY2VkdXJlIFNldF9OTF9Nb2RlIChTd2l0Y2hPbiA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICBwcm9jZWR1cmUgU2V0X05MX01vZGUgKFN3aXRjaE9uIDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgbm9ubCgpJykKICAgIHByYWdtYSBJbmxpbmUgKFNldF9OTF9Nb2RlKTsKIAogICAgLS0gIEFOQ0hPUihgY2xlYXJvaygpJyxgQ2xlYXJfT25fTmV4dF9VcGRhdGUnKQogICAgcHJvY2VkdXJlIENsZWFyX09uX05leHRfVXBkYXRlCi0gICAgIChXaW4gICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBEb19DbGVhciA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICAgIChXaW4gICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBEb19DbGVhciA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChDbGVhcl9Pbl9OZXh0X1VwZGF0ZSk7CiAKICAgIC0tICBBTkNIT1IoYGlkbG9rKCknLGBVc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lJykKICAgIHByb2NlZHVyZSBVc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lCi0gICAgIChXaW4gICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgRG9fSWRsIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBEb19JZGwgOiBCb29sZWFuIDo9IFRydWUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoVXNlX0luc2VydF9EZWxldGVfTGluZSk7CiAKICAgIC0tICBBTkNIT1IoYGlkY29rKCknLGBVc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXInKQogICAgcHJvY2VkdXJlIFVzZV9JbnNlcnRfRGVsZXRlX0NoYXJhY3RlcgotICAgICAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIERvX0lkYyA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CisgICAgIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgRG9fSWRjIDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFVzZV9JbnNlcnRfRGVsZXRlX0NoYXJhY3Rlcik7CiAKICAgIC0tICBBTkNIT1IoYGxlYXZlb2soKScsYExlYXZlX0N1cnNvcl9BZnRlcl9VcGRhdGUnKQogICAgcHJvY2VkdXJlIExlYXZlX0N1cnNvcl9BZnRlcl9VcGRhdGUKLSAgICAgKFdpbiAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIERvX0xlYXZlIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgICAgKFdpbiAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIERvX0xlYXZlIDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKExlYXZlX0N1cnNvcl9BZnRlcl9VcGRhdGUpOwogCiAgICAtLSAgQU5DSE9SKGBpbW1lZG9rKCknLGBJbW1lZGlhdGVfVXBkYXRlX01vZGUnKQogICAgcHJvY2VkdXJlIEltbWVkaWF0ZV9VcGRhdGVfTW9kZQotICAgICAoV2luICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBNb2RlIDogaW4gQm9vbGVhbiA6PSBGYWxzZSk7CisgICAgIChXaW4gIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIE1vZGUgOiBCb29sZWFuIDo9IEZhbHNlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEltbWVkaWF0ZV9VcGRhdGVfTW9kZSk7CiAKICAgIC0tICBBTkNIT1IoYHNjcm9sbG9rKCknLGBBbGxvd19TY3JvbGxpbmcnKQogICAgcHJvY2VkdXJlIEFsbG93X1Njcm9sbGluZwotICAgICAoV2luICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBNb2RlIDogaW4gQm9vbGVhbiA6PSBGYWxzZSk7CisgICAgIChXaW4gIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgIE1vZGUgOiBCb29sZWFuIDo9IEZhbHNlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEFsbG93X1Njcm9sbGluZyk7CiAKQEAgLTcyNCw5ICsxMTczLDkgQEAKIAogICAgLS0gIEFOQ0hPUihgd3NldHNjcnJlZygpJyxgU2V0X1Njcm9sbF9SZWdpb24nKQogICAgcHJvY2VkdXJlIFNldF9TY3JvbGxfUmVnaW9uCi0gICAgIChXaW4gICAgICAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBUb3BfTGluZSAgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBCb3R0b21fTGluZSA6IGluIExpbmVfUG9zaXRpb24pOworICAgICAoV2luICAgICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgVG9wX0xpbmUgICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQm90dG9tX0xpbmUgOiBMaW5lX1Bvc2l0aW9uKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgc2V0c2NycmVnKCknKQogICAgcHJhZ21hIElubGluZSAoU2V0X1Njcm9sbF9SZWdpb24pOwpAQCAtNzM5LDcgKzExODgsNyBAQAogICAgcHJhZ21hIElubGluZSAoVXBkYXRlX1NjcmVlbik7CiAKICAgIC0tICBBTkNIT1IoYHdyZWZyZXNoKCknLGBSZWZyZXNoJykKLSAgIHByb2NlZHVyZSBSZWZyZXNoIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKKyAgIHByb2NlZHVyZSBSZWZyZXNoIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKICAgIC0tICBBS0EKICAgIC0tICBUaGVyZSBpcyBhbiBvdmVybG9hZGVkIFJlZnJlc2ggZm9yIFBhZHMuCiAgICAtLSAgVGhlIElubGluZSBwcmFnbWEgYXBwZWFycyB0aGVyZQpAQCAtNzQ3LDQ3ICsxMTk2LDQ3IEBACiAKICAgIC0tICBBTkNIT1IoYHdub3V0cmVmcmVzaCgpJyxgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZScpCiAgICBwcm9jZWR1cmUgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZQotICAgICAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdyk7CisgICAgIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKICAgIC0tICBBS0EKICAgIC0tICBUaGVyZSBpcyBhbiBvdmVybG9hZGVkIFJlZnJlc2hfV2l0aG91dF9VcGRhdGUgZm9yIFBhZHMuCiAgICAtLSAgVGhlIElubGluZSBwcmFnbWEgYXBwZWFycyB0aGVyZQogCiAgICAtLSAgQU5DSE9SKGByZWRyYXd3aW4oKScsYFJlZHJhdycpCi0gICBwcm9jZWR1cmUgUmVkcmF3IChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKKyAgIHByb2NlZHVyZSBSZWRyYXcgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGB3cmVkcmF3bG4oKScsYFJlZHJhdycpCi0gICBwcm9jZWR1cmUgUmVkcmF3IChXaW4gICAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgIEJlZ2luX0xpbmUgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgTGluZV9Db3VudCA6IGluIFBvc2l0aXZlKTsKKyAgIHByb2NlZHVyZSBSZWRyYXcgKFdpbiAgICAgICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgQmVnaW5fTGluZSA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICBMaW5lX0NvdW50IDogUG9zaXRpdmUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoUmVkcmF3KTsKIAogICAgLS0gIE1BTlBBR0UoYGN1cnNfY2xlYXIuM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3ZXJhc2UoKScsYEVyYXNlJykKLSAgIHByb2NlZHVyZSBFcmFzZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdyk7CisgICBwcm9jZWR1cmUgRXJhc2UgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBlcmFzZSgpJykKICAgIHByYWdtYSBJbmxpbmUgKEVyYXNlKTsKIAogICAgLS0gIEFOQ0hPUihgd2NsZWFyKCknLGBDbGVhcicpCiAgICBwcm9jZWR1cmUgQ2xlYXIKLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgICAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdyk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGNsZWFyKCknKQogICAgcHJhZ21hIElubGluZSAoQ2xlYXIpOwogCiAgICAtLSAgQU5DSE9SKGB3Y2xydG9ib3QoKScsYENsZWFyX1RvX0VuZF9PZl9TY3JlZW4nKQogICAgcHJvY2VkdXJlIENsZWFyX1RvX0VuZF9PZl9TY3JlZW4KLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgICAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdyk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGNscnRvYm90KCknKQogICAgcHJhZ21hIElubGluZSAoQ2xlYXJfVG9fRW5kX09mX1NjcmVlbik7CiAKICAgIC0tICBBTkNIT1IoYHdjbHJ0b2VvbCgpJyxgQ2xlYXJfVG9fRW5kX09mX0xpbmUnKQogICAgcHJvY2VkdXJlIENsZWFyX1RvX0VuZF9PZl9MaW5lCi0gICAgIChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBjbHJ0b2VvbCgpJykKICAgIHByYWdtYSBJbmxpbmUgKENsZWFyX1RvX0VuZF9PZl9MaW5lKTsKQEAgLTc5OSwxNiArMTI0OCwxNiBAQAogICAgLS0gIGJlY2F1c2UgaW4gQyBpdCBpcyBjb21tb24gdG8gc2VlIGJrZ2RzZXQoQV9CT0xEKSBvcgogICAgLS0gIGJrZ2RzZXQoQ09MT1JfUEFJUihuKSkKICAgIHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZAotICAgICAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgIENoICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKKyAgICAgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYGJrZ2RzZXQoKScpCiAgICBwcmFnbWEgSW5saW5lIChTZXRfQmFja2dyb3VuZCk7CiAKICAgIC0tICBBTkNIT1IoYHdia2dkKCknLGBDaGFuZ2VfQmFja2dyb3VuZCcpCiAgICBwcm9jZWR1cmUgQ2hhbmdlX0JhY2tncm91bmQKLSAgICAgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CisgICAgIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBia2dkKCknKQogICAgcHJhZ21hIElubGluZSAoQ2hhbmdlX0JhY2tncm91bmQpOwpAQCAtODI0LDI2ICsxMjczLDI2IEBACiAgICAtLSAgTUFOUEFHRShgY3Vyc190b3VjaC4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHVudG91Y2h3aW4oKScsYFVudG91Y2gnKQotICAgcHJvY2VkdXJlIFVudG91Y2ggKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgcHJvY2VkdXJlIFVudG91Y2ggKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoVW50b3VjaCk7CiAKICAgIC0tICBBTkNIT1IoYHRvdWNod2luKCknLGBUb3VjaCcpCi0gICBwcm9jZWR1cmUgVG91Y2ggKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgcHJvY2VkdXJlIFRvdWNoIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgdG91Y2hsaW5lKCknLGBUb3VjaCcpCi0gICBwcm9jZWR1cmUgVG91Y2ggKFdpbiAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgU3RhcnQgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICBDb3VudCA6IGluIFBvc2l0aXZlKTsKKyAgIHByb2NlZHVyZSBUb3VjaCAoV2luICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICBTdGFydCA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIENvdW50IDogUG9zaXRpdmUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoVG91Y2gpOwogCiAgICAtLSAgQU5DSE9SKGB3dG91Y2hsbigpJyxgQ2hhbmdlX0xpbmVfU3RhdHVzJykKLSAgIHByb2NlZHVyZSBDaGFuZ2VfTGluZXNfU3RhdHVzIChXaW4gICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50IDogaW4gUG9zaXRpdmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgOiBpbiBCb29sZWFuKTsKKyAgIHByb2NlZHVyZSBDaGFuZ2VfTGluZXNfU3RhdHVzIChXaW4gICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50IDogUG9zaXRpdmU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgOiBCb29sZWFuKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKENoYW5nZV9MaW5lc19TdGF0dXMpOwogCkBAIC04NjEsMjcgKzEzMTAsMjcgQEAKIAogICAgLS0gIEFOQ0hPUihgY29weXdpbigpJyxgQ29weScpCiAgICBwcm9jZWR1cmUgQ29weQotICAgICAoU291cmNlX1dpbmRvdyAgICAgICAgICAgIDogaW4gV2luZG93OwotICAgICAgRGVzdGluYXRpb25fV2luZG93ICAgICAgIDogaW4gV2luZG93OwotICAgICAgU291cmNlX1RvcF9Sb3cgICAgICAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIFNvdXJjZV9MZWZ0X0NvbHVtbiAgICAgICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX1RvcF9Sb3cgICAgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiAgOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9Cb3R0b21fUm93ICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fUmlnaHRfQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgTm9uX0Rlc3RydWN0aXZlX01vZGUgICAgIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgICAgKFNvdXJjZV9XaW5kb3cgICAgICAgICAgICA6IFdpbmRvdzsKKyAgICAgIERlc3RpbmF0aW9uX1dpbmRvdyAgICAgICA6IFdpbmRvdzsKKyAgICAgIFNvdXJjZV9Ub3BfUm93ICAgICAgICAgICA6IExpbmVfUG9zaXRpb247CisgICAgICBTb3VyY2VfTGVmdF9Db2x1bW4gICAgICAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9Ub3BfUm93ICAgICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fTGVmdF9Db2x1bW4gIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fQm90dG9tX1JvdyAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIE5vbl9EZXN0cnVjdGl2ZV9Nb2RlICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChDb3B5KTsKIAogICAgLS0gIEFOQ0hPUihgb3ZlcndyaXRlKCknLGBPdmVyd3JpdGUnKQotICAgcHJvY2VkdXJlIE92ZXJ3cml0ZSAoU291cmNlX1dpbmRvdyAgICAgIDogaW4gV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25fV2luZG93IDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBPdmVyd3JpdGUgKFNvdXJjZV9XaW5kb3cgICAgICA6IFdpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uX1dpbmRvdyA6IFdpbmRvdyk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChPdmVyd3JpdGUpOwogCiAgICAtLSAgQU5DSE9SKGBvdmVybGF5KCknLGBPdmVybGF5JykKLSAgIHByb2NlZHVyZSBPdmVybGF5IChTb3VyY2VfV2luZG93ICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25fV2luZG93IDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBPdmVybGF5IChTb3VyY2VfV2luZG93ICAgICAgOiBXaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25fV2luZG93IDogV2luZG93KTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKE92ZXJsYXkpOwogCkBAIC04ODksMjAgKzEzMzgsMjAgQEAKIAogICAgLS0gIEFOQ0hPUihgd2luc2RlbGxuKCknLGBJbnNlcnRfRGVsZXRlX0xpbmVzJykKICAgIHByb2NlZHVyZSBJbnNlcnRfRGVsZXRlX0xpbmVzCi0gICAgIChXaW4gICA6IGluIFdpbmRvdyAgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgTGluZXMgOiBpbiBJbnRlZ2VyIDo9IDEpOyAtLSAgZGVmYXVsdCBpcyB0byBpbnNlcnQgb25lIGxpbmUgYWJvdmUKKyAgICAgKFdpbiAgIDogV2luZG93ICA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lcyA6IEludGVnZXIgOj0gMSk7IC0tICBkZWZhdWx0IGlzIHRvIGluc2VydCBvbmUgbGluZSBhYm92ZQogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBpbnNkZWxsbigpJykKICAgIHByYWdtYSBJbmxpbmUgKEluc2VydF9EZWxldGVfTGluZXMpOwogCiAgICAtLSAgQU5DSE9SKGB3ZGVsZXRlbG4oKScsYERlbGV0ZV9MaW5lJykKLSAgIHByb2NlZHVyZSBEZWxldGVfTGluZSAoV2luIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdyk7CisgICBwcm9jZWR1cmUgRGVsZXRlX0xpbmUgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBkZWxldGVsbigpJykKICAgIHByYWdtYSBJbmxpbmUgKERlbGV0ZV9MaW5lKTsKIAogICAgLS0gIEFOQ0hPUihgd2luc2VydGxuKCknLGBJbnNlcnRfTGluZScpCi0gICBwcm9jZWR1cmUgSW5zZXJ0X0xpbmUgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgcHJvY2VkdXJlIEluc2VydF9MaW5lIChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93KTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgaW5zZXJ0bG4oKScpCiAgICBwcmFnbWEgSW5saW5lIChJbnNlcnRfTGluZSk7CkBAIC05MTEsNyArMTM2MCw3IEBACiAKICAgIC0tICBBTkNIT1IoYGdldG1heHl4KCknLGBHZXRfU2l6ZScpCiAgICBwcm9jZWR1cmUgR2V0X1NpemUKLSAgICAgKFdpbiAgICAgICAgICAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgKFdpbiAgICAgICAgICAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgIE51bWJlcl9PZl9MaW5lcyAgIDogb3V0IExpbmVfQ291bnQ7CiAgICAgICBOdW1iZXJfT2ZfQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQpOwogICAgLS0gIEFLQQpAQCAtOTE5LDcgKzEzNjgsNyBAQAogCiAgICAtLSAgQU5DSE9SKGBnZXRiZWd5eCgpJyxgR2V0X1dpbmRvd19Qb3NpdGlvbicpCiAgICBwcm9jZWR1cmUgR2V0X1dpbmRvd19Qb3NpdGlvbgotICAgICAoV2luICAgICAgICAgICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgKFdpbiAgICAgICAgICAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CiAgICAgICBUb3BfTGVmdF9MaW5lICAgOiBvdXQgTGluZV9Qb3NpdGlvbjsKICAgICAgIFRvcF9MZWZ0X0NvbHVtbiA6IG91dCBDb2x1bW5fUG9zaXRpb24pOwogICAgLS0gIEFLQQpAQCAtOTI3LDcgKzEzNzYsNyBAQAogCiAgICAtLSAgQU5DSE9SKGBnZXR5eCgpJyxgR2V0X0N1cnNvcl9Qb3NpdGlvbicpCiAgICBwcm9jZWR1cmUgR2V0X0N1cnNvcl9Qb3NpdGlvbgotICAgICAoV2luICAgIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgIChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwogICAgICAgTGluZSAgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICBDb2x1bW4gOiBvdXQgQ29sdW1uX1Bvc2l0aW9uKTsKICAgIC0tICBBS0EKQEAgLTkzNSwxMiArMTM4NCwxMiBAQAogCiAgICAtLSAgQU5DSE9SKGBnZXRwYXJ5eCgpJyxgR2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQnKQogICAgcHJvY2VkdXJlIEdldF9PcmlnaW5fUmVsYXRpdmVfVG9fUGFyZW50Ci0gICAgIChXaW4gICAgICAgICAgICAgICAgOiBpbiAgV2luZG93OworICAgICAoV2luICAgICAgICAgICAgICAgIDogV2luZG93OwogICAgICAgVG9wX0xlZnRfTGluZSAgICAgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICBUb3BfTGVmdF9Db2x1bW4gICAgOiBvdXQgQ29sdW1uX1Bvc2l0aW9uOwogICAgICAgSXNfTm90X0FfU3Vid2luZG93IDogb3V0IEJvb2xlYW4pOwogICAgLS0gIEFLQQotICAgLS0gIEluc3RlYWQgb2YgcGxhY2luZyAtMSBpbiB0aGUgY29vcmRpbmF0ZXMgYXMgcmV0dXJuLCB3ZSB1c2UgYSBib29sZWFuCisgICAtLSAgSW5zdGVhZCBvZiBwbGFjaW5nIC0xIGluIHRoZSBjb29yZGluYXRlcyBhcyByZXR1cm4sIHdlIHVzZSBhIEJvb2xlYW4KICAgIC0tICB0byByZXR1cm4gdGhlIGluZm8gdGhhdCB0aGUgd2luZG93IGhhcyBubyBwYXJlbnQuCiAgICBwcmFnbWEgSW5saW5lIChHZXRfT3JpZ2luX1JlbGF0aXZlX1RvX1BhcmVudCk7CiAKQEAgLTk2NCw0NCArMTQxMyw0NCBAQAogCiAgICAtLSAgQU5DSE9SKGBwcmVmcmVzaCgpJyxgUmVmcmVzaCcpCiAgICBwcm9jZWR1cmUgUmVmcmVzaAotICAgICAoUGFkICAgICAgICAgICAgICAgICAgICAgIDogaW4gV2luZG93OwotICAgICAgU291cmNlX1RvcF9Sb3cgICAgICAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIFNvdXJjZV9MZWZ0X0NvbHVtbiAgICAgICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX1RvcF9Sb3cgICAgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiAgOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9Cb3R0b21fUm93ICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fUmlnaHRfQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKTsKKyAgICAgKFBhZCAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvdzsKKyAgICAgIFNvdXJjZV9Ub3BfUm93ICAgICAgICAgICA6IExpbmVfUG9zaXRpb247CisgICAgICBTb3VyY2VfTGVmdF9Db2x1bW4gICAgICAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9Ub3BfUm93ICAgICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fTGVmdF9Db2x1bW4gIDogQ29sdW1uX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fQm90dG9tX1JvdyAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChSZWZyZXNoKTsKIAogICAgLS0gIEFOQ0hPUihgcG5vdXRyZWZyZXNoKCknLGBSZWZyZXNoX1dpdGhvdXRfVXBkYXRlJykKICAgIHByb2NlZHVyZSBSZWZyZXNoX1dpdGhvdXRfVXBkYXRlCi0gICAgIChQYWQgICAgICAgICAgICAgICAgICAgICAgOiBpbiBXaW5kb3c7Ci0gICAgICBTb3VyY2VfVG9wX1JvdyAgICAgICAgICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgU291cmNlX0xlZnRfQ29sdW1uICAgICAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgRGVzdGluYXRpb25fVG9wX1JvdyAgICAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0xlZnRfQ29sdW1uICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERlc3RpbmF0aW9uX0JvdHRvbV9Sb3cgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICBEZXN0aW5hdGlvbl9SaWdodF9Db2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb24pOworICAgICAoUGFkICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93OworICAgICAgU291cmNlX1RvcF9Sb3cgICAgICAgICAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgIFNvdXJjZV9MZWZ0X0NvbHVtbiAgICAgICA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgIERlc3RpbmF0aW9uX1RvcF9Sb3cgICAgICA6IExpbmVfUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbiAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICBEZXN0aW5hdGlvbl9Cb3R0b21fUm93ICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgRGVzdGluYXRpb25fUmlnaHRfQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKFJlZnJlc2hfV2l0aG91dF9VcGRhdGUpOwogCiAgICAtLSAgQU5DSE9SKGBwZWNob2NoYXIoKScsYEFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0JykKICAgIHByb2NlZHVyZSBBZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdAotICAgICAoUGFkIDogaW4gV2luZG93OwotICAgICAgQ2ggIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIpOworICAgICAoUGFkIDogV2luZG93OworICAgICAgQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpOwogICAgLS0gIEFLQQogCiAgICBwcm9jZWR1cmUgQWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQKLSAgICAgKFBhZCA6IGluIFdpbmRvdzsKLSAgICAgIENoICA6IGluIENoYXJhY3Rlcik7CisgICAgIChQYWQgOiBXaW5kb3c7CisgICAgICBDaCAgOiBDaGFyYWN0ZXIpOwogICAgcHJhZ21hIElubGluZSAoQWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQpOwogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19zY3JvbGwuM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3c2NybCgpJyxgU2Nyb2xsJykKLSAgIHByb2NlZHVyZSBTY3JvbGwgKFdpbiAgICA6IGluIFdpbmRvdyAgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgQW1vdW50IDogaW4gSW50ZWdlciA6PSAxKTsKKyAgIHByb2NlZHVyZSBTY3JvbGwgKFdpbiAgICA6IFdpbmRvdyAgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgQW1vdW50IDogSW50ZWdlciA6PSAxKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgc2Nyb2xsKCknKQogICAgLS0gIEFMSUFTKGBzY3JsKCknKQpAQCAtMTAxMCwxNSArMTQ1OSwxNSBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfZGVsY2guM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3ZGVsY2goKScsYERlbGV0ZV9DaGFyYWN0ZXInKQotICAgcHJvY2VkdXJlIERlbGV0ZV9DaGFyYWN0ZXIgKFdpbiA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOworICAgcHJvY2VkdXJlIERlbGV0ZV9DaGFyYWN0ZXIgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3cpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBkZWxjaCgpJykKIAogICAgLS0gIEFOQ0hPUihgbXZ3ZGVsY2goKScsYERlbGV0ZV9DaGFyYWN0ZXInKQogICAgcHJvY2VkdXJlIERlbGV0ZV9DaGFyYWN0ZXIKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uKTsKKyAgICAgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgQ29sdW1uIDogQ29sdW1uX1Bvc2l0aW9uKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgbXZkZWxjaCgpJykKICAgIHByYWdtYSBJbmxpbmUgKERlbGV0ZV9DaGFyYWN0ZXIpOwpAQCAtMTA0MywzNiArMTQ5MiwzNiBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfaW5zY2guM3gnKQogCiAgICAtLSAgQU5DSE9SKGB3aW5zY2goKScsYEluc2VydCcpCi0gICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgQ2ggIDogaW4gQXR0cmlidXRlZF9DaGFyYWN0ZXIpOworICAgcHJvY2VkdXJlIEluc2VydCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICAgIENoICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgaW5zY2goKScpCiAKICAgIC0tICBBTkNIT1IoYG12d2luc2NoKCknLGBJbnNlcnQnKQotICAgcHJvY2VkdXJlIEluc2VydCAoV2luICAgIDogaW4gV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICBDaCAgICAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3Rlcik7CisgICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgIENoICAgICA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgbXZpbnNjaCgpJykKIAogICAgLS0gIE1BTlBBR0UoYGN1cnNfaW5zc3RyLjN4JykKIAogICAgLS0gIEFOQ0hPUihgd2luc25zdHIoKScsYEluc2VydCcpCi0gICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgU3RyIDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgTGVuIDogaW4gSW50ZWdlciA6PSAtMSk7CisgICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgU3RyIDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgTGVuIDogSW50ZWdlciA6PSAtMSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHdpbnNzdHIoKScpCiAgICAtLSAgQUxJQVMoYGluc25zdHIoKScpCiAgICAtLSAgQUxJQVMoYGluc3N0cigpJykKIAogICAgLS0gIEFOQ0hPUihgbXZ3aW5zbnN0cigpJyxgSW5zZXJ0JykKLSAgIHByb2NlZHVyZSBJbnNlcnQgKFdpbiAgICA6IGluIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgQ29sdW1uIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgU3RyICAgIDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgTGVuICAgIDogaW4gSW50ZWdlciA6PSAtMSk7CisgICBwcm9jZWR1cmUgSW5zZXJ0IChXaW4gICAgOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgIFN0ciAgICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgIExlbiAgICA6IEludGVnZXIgOj0gLTEpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGBtdndpbnNzdHIoKScpCiAgICAtLSAgQUxJQVMoYG12aW5zbnN0cigpJykKQEAgLTEwODIsMjAgKzE1MzEsMjAgQEAKICAgIC0tICBNQU5QQUdFKGBjdXJzX2luc3RyLjN4JykKIAogICAgLS0gIEFOQ0hPUihgd2lubnN0cigpJyxgUGVlaycpCi0gICBwcm9jZWR1cmUgUGVlayAoV2luIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICBwcm9jZWR1cmUgUGVlayAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nOwotICAgICAgICAgICAgICAgICAgIExlbiA6IGluICBJbnRlZ2VyIDo9IC0xKTsKKyAgICAgICAgICAgICAgICAgICBMZW4gOiBJbnRlZ2VyIDo9IC0xKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgd2luc3RyKCknKQogICAgLS0gIEFMSUFTKGBpbm5zdHIoKScpCiAgICAtLSAgQUxJQVMoYGluc3RyKCknKQogCiAgICAtLSAgQU5DSE9SKGBtdndpbm5zdHIoKScsYFBlZWsnKQotICAgcHJvY2VkdXJlIFBlZWsgKFdpbiAgICA6IGluICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgIExpbmUgICA6IGluICBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluICBDb2x1bW5fUG9zaXRpb247CisgICBwcm9jZWR1cmUgUGVlayAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICBTdHIgICAgOiBvdXQgU3RyaW5nOwotICAgICAgICAgICAgICAgICAgIExlbiAgICA6IGluICBJbnRlZ2VyIDo9IC0xKTsKKyAgICAgICAgICAgICAgICAgICBMZW4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgbXZ3aW5zdHIoKScpCiAgICAtLSAgQUxJQVMoYG12aW5uc3RyKCknKQpAQCAtMTEwNCwzMiArMTU1MywzMiBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfaW5jaHN0ci4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHdpbmNobnN0cigpJyxgUGVlaycpCi0gICBwcm9jZWR1cmUgUGVlayAoV2luIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICBwcm9jZWR1cmUgUGVlayAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgQXR0cmlidXRlZF9TdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgTGVuIDogaW4gIEludGVnZXIgOj0gLTEpOworICAgICAgICAgICAgICAgICAgIExlbiA6IEludGVnZXIgOj0gLTEpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGB3aW5jaHN0cigpJykKICAgIC0tICBBTElBUyhgaW5jaG5zdHIoKScpCiAgICAtLSAgQUxJQVMoYGluY2hzdHIoKScpCiAKICAgIC0tICBBTkNIT1IoYG12d2luY2huc3RyKCknLGBQZWVrJykKLSAgIHByb2NlZHVyZSBQZWVrIChXaW4gICAgOiBpbiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKLSAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiAgTGluZV9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiAgQ29sdW1uX1Bvc2l0aW9uOworICAgcHJvY2VkdXJlIFBlZWsgKFdpbiAgICA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICAgICAgICAgICAgICAgICAgTGluZSAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgU3RyICAgIDogb3V0IEF0dHJpYnV0ZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgIExlbiAgICA6IGluICBJbnRlZ2VyIDo9IC0xKTsKKyAgICAgICAgICAgICAgICAgICBMZW4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgbXZ3aW5jaHN0cigpJykKICAgIC0tICBBTElBUyhgbXZpbmNobnN0cigpJykKICAgIC0tICBBTElBUyhgbXZpbmNoc3RyKCknKQotICAgLS0gIFdlIGRvbid0IGlubGluZSB0aGUgUGVlayBwcm9jZWR1cmVzCisgICAtLSAgV2UgZG8gbm90IGlubGluZSB0aGUgUGVlayBwcm9jZWR1cmVzCiAKICAgIC0tICBNQU5QQUdFKGBjdXJzX2dldHN0ci4zeCcpCiAKICAgIC0tICBBTkNIT1IoYHdnZXRuc3RyKCknLGBHZXQnKQotICAgcHJvY2VkdXJlIEdldCAoV2luIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICBwcm9jZWR1cmUgR2V0IChXaW4gOiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwogICAgICAgICAgICAgICAgICAgU3RyIDogb3V0IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgIExlbiA6IGluICBJbnRlZ2VyIDo9IC0xKTsKKyAgICAgICAgICAgICAgICAgIExlbiA6IEludGVnZXIgOj0gLTEpOwogICAgLS0gIEFLQQogICAgLS0gIEFMSUFTKGB3Z2V0c3RyKCknKQogICAgLS0gIEFMSUFTKGBnZXRuc3RyKCknKQpAQCAtMTEzOCwxMSArMTU4NywxMSBAQAogICAgLS0gIG92ZXJmbG93cy4KIAogICAgLS0gIEFOQ0hPUihgbXZ3Z2V0bnN0cigpJyxgR2V0JykKLSAgIHByb2NlZHVyZSBHZXQgKFdpbiAgICA6IGluICBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OwotICAgICAgICAgICAgICAgICAgTGluZSAgIDogaW4gIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICBDb2x1bW4gOiBpbiAgQ29sdW1uX1Bvc2l0aW9uOworICAgcHJvY2VkdXJlIEdldCAoV2luICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgICAgICAgICAgICAgICAgIExpbmUgICA6IExpbmVfUG9zaXRpb247CisgICAgICAgICAgICAgICAgICBDb2x1bW4gOiBDb2x1bW5fUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICBTdHIgICAgOiBvdXQgU3RyaW5nOwotICAgICAgICAgICAgICAgICAgTGVuICAgIDogaW4gIEludGVnZXIgOj0gLTEpOworICAgICAgICAgICAgICAgICAgTGVuICAgIDogSW50ZWdlciA6PSAtMSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYG12d2dldHN0cigpJykKICAgIC0tICBBTElBUyhgbXZnZXRuc3RyKCknKQpAQCAtMTE2MiwxNiArMTYxMSwxNiBAQAogCiAgICAtLSAgQU5DSE9SKGBzbGtfaW5pdCgpJyxgSW5pdF9Tb2Z0X0xhYmVsX0tleXMnKQogICAgcHJvY2VkdXJlIEluaXRfU29mdF9MYWJlbF9LZXlzCi0gICAgIChGb3JtYXQgOiBpbiBTb2Z0X0xhYmVsX0tleV9Gb3JtYXQgOj0gVGhyZWVfVHdvX1RocmVlKTsKKyAgICAgKEZvcm1hdCA6IFNvZnRfTGFiZWxfS2V5X0Zvcm1hdCA6PSBUaHJlZV9Ud29fVGhyZWUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoSW5pdF9Tb2Z0X0xhYmVsX0tleXMpOwogCiAgICAtLSAgQU5DSE9SKGBzbGtfc2V0KCknLGBTZXRfU29mdF9MYWJlbF9LZXknKQotICAgcHJvY2VkdXJlIFNldF9Tb2Z0X0xhYmVsX0tleSAoTGFiZWwgOiBpbiBMYWJlbF9OdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0ICA6IGluIFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZtdCAgIDogaW4gTGFiZWxfSnVzdGlmaWNhdGlvbiA6PSBMZWZ0KTsKKyAgIHByb2NlZHVyZSBTZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogTGFiZWxfTnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbXQgICA6IExhYmVsX0p1c3RpZmljYXRpb24gOj0gTGVmdCk7CiAgICAtLSAgQUtBCi0gICAtLSAgV2UgZG9uJ3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlCisgICAtLSAgV2UgZG8gbm90IGlubGluZSB0aGlzIHByb2NlZHVyZQogCiAgICAtLSAgQU5DSE9SKGBzbGtfcmVmcmVzaCgpJyxgUmVmcmVzaF9Tb2Z0X0xhYmVsX0tleScpCiAgICBwcm9jZWR1cmUgUmVmcmVzaF9Tb2Z0X0xhYmVsX0tleXM7CkBAIC0xMTg0LDEyICsxNjMzLDEyIEBACiAgICBwcmFnbWEgSW5saW5lIChSZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZSk7CiAKICAgIC0tICBBTkNIT1IoYHNsa19sYWJlbCgpJyxgR2V0X1NvZnRfTGFiZWxfS2V5JykKLSAgIHByb2NlZHVyZSBHZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogaW4gTGFiZWxfTnVtYmVyOworICAgcHJvY2VkdXJlIEdldF9Tb2Z0X0xhYmVsX0tleSAoTGFiZWwgOiBMYWJlbF9OdW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0ICA6IG91dCBTdHJpbmcpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGBzbGtfbGFiZWwoKScsYEdldF9Tb2Z0X0xhYmVsX0tleScpCi0gICBmdW5jdGlvbiBHZXRfU29mdF9MYWJlbF9LZXkgKExhYmVsIDogaW4gTGFiZWxfTnVtYmVyKSByZXR1cm4gU3RyaW5nOworICAgZnVuY3Rpb24gR2V0X1NvZnRfTGFiZWxfS2V5IChMYWJlbCA6IExhYmVsX051bWJlcikgcmV0dXJuIFN0cmluZzsKICAgIC0tICBBS0EKICAgIC0tICBTYW1lIGFzIGZ1bmN0aW9uCiAgICBwcmFnbWEgSW5saW5lIChHZXRfU29mdF9MYWJlbF9LZXkpOwpAQCAtMTIxMSwxNiArMTY2MCwxNiBAQAogCiAgICAtLSAgQU5DSE9SKGBzbGtfYXR0cm9uKCknLGBTd2l0Y2hfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlcycpCiAgICBwcm9jZWR1cmUgU3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMKLSAgICAgKEF0dHIgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKLSAgICAgIE9uICAgOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgICAoQXR0ciA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OworICAgICAgT24gICA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHNsa19hdHRyb2ZmKCknKQogICAgcHJhZ21hIElubGluZSAoU3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMpOwogCiAgICAtLSAgQU5DSE9SKGBzbGtfYXR0cnNldCgpJyxgU2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMnKQogICAgcHJvY2VkdXJlIFNldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzCi0gICAgIChBdHRyICA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKLSAgICAgIENvbG9yIDogaW4gQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KTsKKyAgICAgKEF0dHIgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoU2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMpOwogCkBAIC0xMjM0LDcgKzE2ODMsNyBAQAogICAgcHJhZ21hIElubGluZSAoR2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMpOwogCiAgICAtLSAgQU5DSE9SKGBzbGtfY29sb3IoKScsYFNldF9Tb2Z0X0xhYmVsX0tleV9Db2xvcicpCi0gICBwcm9jZWR1cmUgU2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yIChQYWlyIDogaW4gQ29sb3JfUGFpcik7CisgICBwcm9jZWR1cmUgU2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yIChQYWlyIDogQ29sb3JfUGFpcik7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChTZXRfU29mdF9MYWJlbF9LZXlfQ29sb3IpOwogCkBAIC0xMjQ0LDE2ICsxNjkzLDE2IEBACiAgICAtLSAgTUFOUEFHRShga2V5b2suM3gnKQogCiAgICAtLSAgQU5DSE9SKGBrZXlvaygpJyxgRW5hYmxlX0tleScpCi0gICBwcm9jZWR1cmUgRW5hYmxlX0tleSAoS2V5ICAgIDogaW4gU3BlY2lhbF9LZXlfQ29kZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgOiBpbiBCb29sZWFuIDo9IFRydWUpOworICAgcHJvY2VkdXJlIEVuYWJsZV9LZXkgKEtleSAgICA6IFNwZWNpYWxfS2V5X0NvZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlIDogQm9vbGVhbiA6PSBUcnVlKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKEVuYWJsZV9LZXkpOwogCiAgICAtLSAgTUFOUEFHRShgZGVmaW5lX2tleS4zeCcpCiAKICAgIC0tICBBTkNIT1IoYGRlZmluZV9rZXkoKScsYERlZmluZV9LZXknKQotICAgcHJvY2VkdXJlIERlZmluZV9LZXkgKERlZmluaXRpb24gOiBpbiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA6IGluIFNwZWNpYWxfS2V5X0NvZGUpOworICAgcHJvY2VkdXJlIERlZmluZV9LZXkgKERlZmluaXRpb24gOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA6IFNwZWNpYWxfS2V5X0NvZGUpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoRGVmaW5lX0tleSk7CiAKQEAgLTEyNjQsMzAgKzE3MTMsMzAgQEAKICAgIC0tCiAKICAgIC0tICBBTkNIT1IoYGtleW5hbWUoKScsYEtleV9OYW1lJykKLSAgIHByb2NlZHVyZSBLZXlfTmFtZSAoS2V5ICA6IGluICBSZWFsX0tleV9Db2RlOworICAgcHJvY2VkdXJlIEtleV9OYW1lIChLZXkgIDogUmVhbF9LZXlfQ29kZTsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA6IG91dCBTdHJpbmcpOwogICAgLS0gIEFLQQogICAgLS0gIFRoZSBleHRlcm5hbCBuYW1lIGZvciBhIHJlYWwga2V5c3Ryb2tlLgogCiAgICAtLSAgQU5DSE9SKGBrZXluYW1lKCknLGBLZXlfTmFtZScpCi0gICBmdW5jdGlvbiBLZXlfTmFtZSAoS2V5ICA6IGluICBSZWFsX0tleV9Db2RlKSByZXR1cm4gU3RyaW5nOworICAgZnVuY3Rpb24gS2V5X05hbWUgKEtleSAgOiBSZWFsX0tleV9Db2RlKSByZXR1cm4gU3RyaW5nOwogICAgLS0gIEFLQQogICAgLS0gIFNhbWUgYXMgZnVuY3Rpb24KLSAgIC0tICBXZSBkb24ndCBpbmxpbmUgdGhpcyByb3V0aW5lCisgICAtLSAgV2UgZG8gbm90IGlubGluZSB0aGlzIHJvdXRpbmUKIAogICAgLS0gIEFOQ0hPUihgdW5jdHJsKCknLGBVbl9Db250cm9sJykKLSAgIHByb2NlZHVyZSBVbl9Db250cm9sIChDaCAgOiBpbiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKKyAgIHByb2NlZHVyZSBVbl9Db250cm9sIChDaCAgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nKTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgdW5jdHJsKCknLGBVbl9Db250cm9sJykKLSAgIGZ1bmN0aW9uIFVuX0NvbnRyb2wgKENoICA6IGluIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gU3RyaW5nOworICAgZnVuY3Rpb24gVW5fQ29udHJvbCAoQ2ggIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBTdHJpbmc7CiAgICAtLSAgQUtBCiAgICAtLSAgU2FtZSBhcyBmdW5jdGlvbgogICAgcHJhZ21hIElubGluZSAoVW5fQ29udHJvbCk7CiAKICAgIC0tICBBTkNIT1IoYGRlbGF5X291dHB1dCgpJyxgRGVsYXlfT3V0cHV0JykKLSAgIHByb2NlZHVyZSBEZWxheV9PdXRwdXQgKE1zZWNzIDogaW4gTmF0dXJhbCk7CisgICBwcm9jZWR1cmUgRGVsYXlfT3V0cHV0IChNc2VjcyA6IE5hdHVyYWwpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoRGVsYXlfT3V0cHV0KTsKIApAQCAtMTM2MiwxNCArMTgxMSwxNCBAQAogICAgcHJhZ21hIEltcG9ydCAoQywgU3RhcnRfQ29sb3IsICJzdGFydF9jb2xvciIpOwogCiAgICAtLSAgQU5DSE9SKGBpbml0X3BhaXIoKScsYEluaXRfUGFpcicpCi0gICBwcm9jZWR1cmUgSW5pdF9QYWlyIChQYWlyIDogaW4gUmVkZWZpbmFibGVfQ29sb3JfUGFpcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgOiBpbiBDb2xvcl9OdW1iZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBCYWNrIDogaW4gQ29sb3JfTnVtYmVyKTsKKyAgIHByb2NlZHVyZSBJbml0X1BhaXIgKFBhaXIgOiBSZWRlZmluYWJsZV9Db2xvcl9QYWlyOworICAgICAgICAgICAgICAgICAgICAgICAgRm9yZSA6IENvbG9yX051bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgOiBDb2xvcl9OdW1iZXIpOwogICAgLS0gIEFLQQogICAgcHJhZ21hIElubGluZSAoSW5pdF9QYWlyKTsKIAogICAgLS0gIEFOQ0hPUihgcGFpcl9jb250ZW50KCknLGBQYWlyX0NvbnRlbnQnKQotICAgcHJvY2VkdXJlIFBhaXJfQ29udGVudCAoUGFpciA6IGluIENvbG9yX1BhaXI7CisgICBwcm9jZWR1cmUgUGFpcl9Db250ZW50IChQYWlyIDogQ29sb3JfUGFpcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgOiBvdXQgQ29sb3JfTnVtYmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjayA6IG91dCBDb2xvcl9OdW1iZXIpOwogICAgLS0gIEFLQQpAQCAtMTM4MSwxMCArMTgzMCwxMCBAQAogICAgcHJhZ21hIElubGluZSAoSGFzX0NvbG9ycyk7CiAKICAgIC0tICBBTkNIT1IoYGluaXRfY29sb3IoKScsYEluaXRfQ29sb3InKQotICAgcHJvY2VkdXJlIEluaXRfQ29sb3IgKENvbG9yIDogaW4gQ29sb3JfTnVtYmVyOwotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZCAgIDogaW4gUkdCX1ZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWVuIDogaW4gUkdCX1ZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgIEJsdWUgIDogaW4gUkdCX1ZhbHVlKTsKKyAgIHByb2NlZHVyZSBJbml0X0NvbG9yIChDb2xvciA6IENvbG9yX051bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBSZWQgICA6IFJHQl9WYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBHcmVlbiA6IFJHQl9WYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBCbHVlICA6IFJHQl9WYWx1ZSk7CiAgICAtLSAgQUtBCiAgICBwcmFnbWEgSW5saW5lIChJbml0X0NvbG9yKTsKIApAQCAtMTM5NCw3ICsxODQzLDcgQEAKICAgIHByYWdtYSBJbmxpbmUgKENhbl9DaGFuZ2VfQ29sb3IpOwogCiAgICAtLSAgQU5DSE9SKGBjb2xvcl9jb250ZW50KCknLGBDb2xvcl9Db250ZW50JykKLSAgIHByb2NlZHVyZSBDb2xvcl9Db250ZW50IChDb2xvciA6IGluICBDb2xvcl9OdW1iZXI7CisgICBwcm9jZWR1cmUgQ29sb3JfQ29udGVudCAoQ29sb3IgOiBDb2xvcl9OdW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVkICAgOiBvdXQgUkdCX1ZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWVuIDogb3V0IFJHQl9WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVlICA6IG91dCBSR0JfVmFsdWUpOwpAQCAtMTQwNywxMyArMTg1NiwxMyBAQAogICAgdHlwZSBDdXJzZXNfTW9kZSBpcyAoQ3Vyc2VzLCBTaGVsbCk7CiAKICAgIC0tICBBTkNIT1IoYGRlZl9wcm9nX21vZGUoKScsYFNhdmVfQ3Vyc2VzX01vZGUnKQotICAgcHJvY2VkdXJlIFNhdmVfQ3Vyc2VzX01vZGUgKE1vZGUgOiBpbiBDdXJzZXNfTW9kZSk7CisgICBwcm9jZWR1cmUgU2F2ZV9DdXJzZXNfTW9kZSAoTW9kZSA6IEN1cnNlc19Nb2RlKTsKICAgIC0tICBBS0EKICAgIC0tICBBTElBUyhgZGVmX3NoZWxsX21vZGUoKScpCiAgICBwcmFnbWEgSW5saW5lIChTYXZlX0N1cnNlc19Nb2RlKTsKIAogICAgLS0gIEFOQ0hPUihgcmVzZXRfcHJvZ19tb2RlKCknLGBSZXNldF9DdXJzZXNfTW9kZScpCi0gICBwcm9jZWR1cmUgUmVzZXRfQ3Vyc2VzX01vZGUgKE1vZGUgOiBpbiBDdXJzZXNfTW9kZSk7CisgICBwcm9jZWR1cmUgUmVzZXRfQ3Vyc2VzX01vZGUgKE1vZGUgOiBDdXJzZXNfTW9kZSk7CiAgICAtLSAgQUtBCiAgICAtLSAgQUxJQVMoYHJlc2V0X3NoZWxsX21vZGUoKScpCiAgICBwcmFnbWEgSW5saW5lIChSZXNldF9DdXJzZXNfTW9kZSk7CkBAIC0xNDM3LDEzICsxODg2LDEzIEBACiAgICAtLSAgICAgICAgYW5kIC0xIG90aGVyd2lzZS4KIAogICAgLS0gIEFOQ0hPUihgcmlwb2ZmbGluZSgpJyxgUmlwX09mZl9MaW5lcycpCi0gICBwcm9jZWR1cmUgUmlwX09mZl9MaW5lcyAoTGluZXMgOiBpbiBJbnRlZ2VyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgIDogaW4gU3Rkc2NyX0luaXRfUHJvYyk7CisgICBwcm9jZWR1cmUgUmlwX09mZl9MaW5lcyAoTGluZXMgOiBJbnRlZ2VyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgIDogU3Rkc2NyX0luaXRfUHJvYyk7CiAgICAtLSAgQUtBCiAgICAtLSAgTi5CLjogdG8gYmUgbW9yZSBwcmVjaXNlLCB0aGlzIHVzZXMgYSBuY3Vyc2VzIHNwZWNpZmljIGVuaGFuY2VtZW50IG9mCiAgICAtLSAgICAgICAgcmlwb2ZmbGluZSgpLCBpbiB3aGljaCB0aGUgTGluZXMgYXJndW1lbnQgYWJzb2x1dGUgdmFsdWUgaXMgdGhlCiAgICAtLSAgICAgICAgbnVtYmVyIG9mIGxpbmVzIHRvIGJlIHJpcHBlZCBvZi4gVGhlIG9mZmljaWFsIHJpcG9mZmxpbmUoKSBvbmx5Ci0gICAtLSAgICAgICAgdXNlcyB0aGUgc2lnbiBvZiBMaW5lcyB0byByaXAgb2YgYSBzaW5nbGUgbGluZSBmcm9tIGJvdHRvbSBvciB0b3AuCisgICAtLSAgICAgICAgdXNlcyB0aGUgc2lnbiBvZiBMaW5lcyB0byByZW1vdmUgYSBzaW5nbGUgbGluZSBmcm9tIGJvdHRvbSBvciB0b3AuCiAgICBwcmFnbWEgSW5saW5lIChSaXBfT2ZmX0xpbmVzKTsKIAogICAgdHlwZSBDdXJzb3JfVmlzaWJpbGl0eSBpcyAoSW52aXNpYmxlLCBOb3JtYWwsIFZlcnlfVmlzaWJsZSk7CkBAIC0xNDU0LDcgKzE5MDMsNyBAQAogICAgcHJhZ21hIElubGluZSAoU2V0X0N1cnNvcl9WaXNpYmlsaXR5KTsKIAogICAgLS0gIEFOQ0hPUihgbmFwbXMoKScsYE5hcF9NaWxsaV9TZWNvbmRzJykKLSAgIHByb2NlZHVyZSBOYXBfTWlsbGlfU2Vjb25kcyAoTXMgOiBpbiBOYXR1cmFsKTsKKyAgIHByb2NlZHVyZSBOYXBfTWlsbGlfU2Vjb25kcyAoTXMgOiBOYXR1cmFsKTsKICAgIC0tICBBS0EKICAgIHByYWdtYSBJbmxpbmUgKE5hcF9NaWxsaV9TZWNvbmRzKTsKIApAQCAtMTQ2MywxOSArMTkxMiwyMSBAQAogICAgLS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIHR5cGUgVHJhbnNmb3JtX0RpcmVjdGlvbiBpcyAoRnJvbV9TY3JlZW4sIFRvX1NjcmVlbik7CiAgICBwcm9jZWR1cmUgVHJhbnNmb3JtX0Nvb3JkaW5hdGVzCi0gICAgIChXICAgICAgOiBpbiBXaW5kb3cgOj0gU3RhbmRhcmRfV2luZG93OworICAgICAoVyAgICAgIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgIExpbmUgICA6IGluIG91dCBMaW5lX1Bvc2l0aW9uOwogICAgICAgQ29sdW1uIDogaW4gb3V0IENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgIERpciAgICA6IGluIFRyYW5zZm9ybV9EaXJlY3Rpb24gOj0gRnJvbV9TY3JlZW4pOworICAgICAgRGlyICAgIDogVHJhbnNmb3JtX0RpcmVjdGlvbiA6PSBGcm9tX1NjcmVlbik7CiAgICAtLSAgVGhpcyBwcm9jZWR1cmUgdHJhbnNmb3JtcyBzY3JlZW4gY29vcmRpbmF0ZXMgaW50byBjb29yZGluYXRlcyByZWxhdGl2ZQogICAgLS0gIHRvIHRoZSB3aW5kb3cgYW5kIHZpY2UgdmVyc2EsIGRlcGVuZGluZyBvbiB0aGUgRGlyIHBhcmFtZXRlci4KLSAgIC0tICBTY3JlZW4gY29vcmRpbmF0ZXMgYXJlIHRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbnMgb24gdGhlIHBoeXNpY2FsIGRldmljZS4KKyAgIC0tICBTY3JlZW4gY29vcmRpbmF0ZXMgYXJlIHRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHBoeXNpY2FsIGRldmljZS4KICAgIC0tICBBbiBDdXJzZXNfRXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIExpbmUgYW5kIENvbHVtbiBhcmUgbm90IGluIHRoZQogICAgLS0gIFdpbmRvdyBvciBpZiB5b3UgcGFzcyB0aGUgTnVsbF9XaW5kb3cgYXMgYXJndW1lbnQuCi0gICAtLSAgV2UgZG9uJ3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlCisgICAtLSAgV2UgZG8gbm90IGlubGluZSB0aGlzIHByb2NlZHVyZQogCiAgICAtLSAgTUFOUEFHRShgZGVmYXVsdF9jb2xvcnMuM3gnKQogCisgICBEZWZhdWx0X0NvbG9yIDogY29uc3RhbnQgQ29sb3JfTnVtYmVyIDo9IC0xOworCiAgICAtLSAgQU5DSE9SKGB1c2VfZGVmYXVsdF9jb2xvcnMoKScsYFVzZV9EZWZhdWx0X0NvbG9ycycpCiAgICBwcm9jZWR1cmUgVXNlX0RlZmF1bHRfQ29sb3JzOwogICAgLS0gIEFLQQpAQCAtMTUwNywyOSArMTk1OCwyOSBAQAogICAgLS0gIE1BTlBBR0UoYGN1cnNfc2NyX2R1bXAuM3gnKQogCiAgICAtLSAgQU5DSE9SKGBzY3JfZHVtcCgpJyxgU2NyZWVuX0R1bXBfVG9fRmlsZScpCi0gICBwcm9jZWR1cmUgU2NyZWVuX0R1bXBfVG9fRmlsZSAoRmlsZW5hbWUgOiBpbiBTdHJpbmcpOworICAgcHJvY2VkdXJlIFNjcmVlbl9EdW1wX1RvX0ZpbGUgKEZpbGVuYW1lIDogU3RyaW5nKTsKICAgIC0tICBBS0EKIAogICAgLS0gIEFOQ0hPUihgc2NyX3Jlc3RvcmUoKScsYFNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZScpCi0gICBwcm9jZWR1cmUgU2NyZWVuX1Jlc3RvcmVfRnJvbV9GaWxlIChGaWxlbmFtZSA6IGluIFN0cmluZyk7CisgICBwcm9jZWR1cmUgU2NyZWVuX1Jlc3RvcmVfRnJvbV9GaWxlIChGaWxlbmFtZSA6IFN0cmluZyk7CiAgICAtLSAgQUtBCiAKICAgIC0tICBBTkNIT1IoYHNjcl9pbml0KCknLGBTY3JlZW5fSW5pdF9Gcm9tX0ZpbGUnKQotICAgcHJvY2VkdXJlIFNjcmVlbl9Jbml0X0Zyb21fRmlsZSAoRmlsZW5hbWUgOiBpbiBTdHJpbmcpOworICAgcHJvY2VkdXJlIFNjcmVlbl9Jbml0X0Zyb21fRmlsZSAoRmlsZW5hbWUgOiBTdHJpbmcpOwogICAgLS0gIEFLQQogCiAgICAtLSAgQU5DSE9SKGBzY3Jfc2V0KCknLGBTY3JlZW5fU2V0X0ZpbGUnKQotICAgcHJvY2VkdXJlIFNjcmVlbl9TZXRfRmlsZSAoRmlsZW5hbWUgOiBpbiBTdHJpbmcpOworICAgcHJvY2VkdXJlIFNjcmVlbl9TZXRfRmlsZSAoRmlsZW5hbWUgOiBTdHJpbmcpOwogICAgLS0gIEFLQQogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19wcmludC4zeCcpCi0gICAtLSAgTm90IGltcGxlbWVudGVkOiAgbWNwcmludAorICAgLS0gIE5vdCBpbXBsZW1lbnRlZDogbWNwcmludAogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19wcmludHcuM3gnKQogICAgLS0gIE5vdCBpbXBsZW1lbnRlZDogcHJpbnR3LCAgd3ByaW50dywgbXZwcmludHcsIG12d3ByaW50dywgdndwcmludHcsCiAgICAtLSAgICAgICAgICAgICAgICAgICB2d19wcmludHcKICAgIC0tICBQbGVhc2UgdXNlIHRoZSBBZGEgc3R5bGUgVGV4dF9JTyBjaGlsZCBwYWNrYWdlcyBmb3IgZm9ybWF0dGVkCi0gICAtLSAgcHJpbnRpbmcuIEl0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBzZW5zZSB0byBtYXAgdGhlIHByaW50ZiBzdHlsZQorICAgLS0gIHByaW50aW5nLiBJdCBkb2VzIG5vdCBtYWtlIGEgbG90IG9mIHNlbnNlIHRvIG1hcCB0aGUgcHJpbnRmIHN0eWxlCiAgICAtLSAgQyBmdW5jdGlvbnMgdG8gQWRhLgogCiAgICAtLSAgTUFOUEFHRShgY3Vyc19zY2Fudy4zeCcpCkBAIC0xNTUzLDcgKzIwMDQsMTEgQEAKICAgIC0tICBUaGUgbmV4dCBjb25zdGFudHMgYXJlIGdlbmVyYXRlZCBhbmQgbWF5IGJlIGRpZmZlcmVudCBvbiB5b3VyCiAgICAtLSAgYXJjaGl0ZWN0dXJlLgogICAgLS0KLWluY2x1ZGUoYFdpbmRvd19PZmZzZXRzJylkbmwKKworICAgU2l6ZW9mX0Jvb2wgOiBjb25zdGFudCA6PSBDdXJzZXNfQ29uc3RhbnRzLlNpemVvZl9Cb29sOworCisgICB0eXBlIEN1cnNlc19Cb29sIGlzIG1vZCAyICoqIFNpemVvZl9Cb29sOworCiAgICBDdXJzZXNfQm9vbF9GYWxzZSA6IGNvbnN0YW50IEN1cnNlc19Cb29sIDo9IDA7CiAKIGVuZCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOwpkaWZmIC0tZ2l0IGEvQWRhOTUvaW5jbHVkZS9NS25jdXJzZXNfZGVmLnNoIGIvQWRhOTUvaW5jbHVkZS9NS25jdXJzZXNfZGVmLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRhYWM4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9pbmNsdWRlL01LbmN1cnNlc19kZWYuc2gKQEAgLTAsMCArMSw4MCBAQAorIyEgL2Jpbi9zaAorIyAkSWQ6IE1LbmN1cnNlc19kZWYuc2gsdiAxLjIgMjAwMy8xMC8yNSAxNjoxOTo0NiB0b20gRXhwICQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgTUtuY3Vyc2VzX2RlZi5zaCAtLSBnZW5lcmF0ZSBmYWxsYmFjayBkZWZpbml0aW9ucyBmb3IgbmN1cnNlc19jZmcuaAorIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMjAwMAorIworIyBHaXZlbiB0aGUgY2hvaWNlIGJldHdlZW4gY29uc3RydWN0cyBzdWNoIGFzCisjCisjCSNpZiBkZWZpbmVkKGZvbykgJiYgZm9vCisjCSNpZiBmb28KKyMKKyMgd2UgY2hvc2UgdGhlIGxhdHRlci4gIEl0IGlzIGd1YXJhbnRlZWQgYnkgdGhlIGxhbmd1YWdlIHN0YW5kYXJkLCBhbmQgdGhlcmUKKyMgYXBwZWFyIHRvIGJlIG5vIGJyb2tlbiBjb21waWxlcnMgdGhhdCBkbyBub3QgaG9ub3IgdGhhdCBkZXRhaWwuICBCdXQgc29tZQorIyBwZW9wbGUgd2FudCB0byB1c2UgZ2NjJ3MgLVd1bmRlZiBvcHRpb24gKGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBsZXNzCisjIHVzZWZ1bCBmZWF0dXJlcyBpbiBXYXRjb20ncyBjb21waWxlcikgdG8gY2hlY2sgZm9yIG1pc3NwZWxsaW5ncy4gIFNvIHdlCisjIGdlbmVyYXRlIGEgc2V0IG9mIGZhbGxiYWNrIGRlZmluaXRpb25zIHRvIHF1aWV0IHRoZSB3YXJuaW5ncyB3aXRob3V0IG1ha2luZworIyB0aGUgY29kZSB1Z2x5LgorIworREVGUz0iJHsxLW5jdXJzZXNfZGVmc30iCitjYXQgPDxFT0YKKy8qCisgKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5ICQwCisgKi8KKworI2lmbmRlZiBOQ19ERUZJTkVfSAorI2RlZmluZSBOQ19ERUZJTkVfSCAxCisKK0VPRgorCiske0FXSy1hd2t9IDwkREVGUyAnCishL15bQCNdLyB7CisJaWYgKCBORiA9PSAxICkKKwl7CisJCXByaW50ICIjaWZuZGVmIiwgJDEKKwkJcHJpbnQgIiNkZWZpbmUiLCAkMSwgIjAiCisJCXByaW50ICIjZW5kaWYiCisJCXByaW50ICIiCisJfSBlbHNlIGlmICggTkYgIT0gMCApIHsKKwkJcHJpbnQgIiNpZm5kZWYiLCAkMQorCQlwcmludGYgIiNkZWZpbmUiCisJCWZvciAobiA9IDE7IG4gPD0gTkY7IG4rKykgeworCQkJcHJpbnRmICIgJXMiLCAkbgorCQl9CisJCXByaW50ICIiCisJCXByaW50ICIjZW5kaWYiCisJCXByaW50ICIiCisJfQorfQorRU5ECXsKK3ByaW50ICIjZW5kaWYgLyogTkNfREVGSU5FX0ggKi8iCisJfQorJwpkaWZmIC0tZ2l0IGEvQWRhOTUvaW5jbHVkZS9NYWtlZmlsZS5pbiBiL0FkYTk1L2luY2x1ZGUvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE4OWVkNgotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L2luY2x1ZGUvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSw5MiBAQAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40IDIwMTUvMDgvMDUgMjM6MTU6NDEgdG9tIEV4cCAkCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTEsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQorIworIyBNYWtlZmlsZSBmb3IgbmN1cnNlcyBzb3VyY2UgY29kZS4KKyMKKyMgVGhpcyBtYWtlcyBoZWFkZXIgZmlsZXMgdXNlZCB3aGVuIGJ1aWxkaW5nIEFkYTk1IGFzIGEgc2VwYXJhdGUgdHJlZS4KKyMKKyMgVGhlIHZhcmlhYmxlICdzcmNkaXInIHJlZmVycyB0byB0aGUgc291cmNlLWRpc3RyaWJ1dGlvbiwgYW5kIGNhbiBiZSBzZXQgd2l0aAorIyB0aGUgY29uZmlndXJlIHNjcmlwdCBieSAiLS1zcmNkaXI9RElSIi4KKworIyB0dXJuIG9mZiBfYWxsXyBzdWZmaXggcnVsZXM7IHdlJ2xsIGdlbmVyYXRlIG91ciBvd24KKy5TVUZGSVhFUzoKKworU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKK1RISVMJCT0gTWFrZWZpbGUKKworREVTVERJUgkJPSBAREVTVERJUkAKK3NyY2RpcgkJPSBAc3JjZGlyQAorcHJlZml4CQk9IEBwcmVmaXhACitleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKK2luY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKKworSU5TVEFMTAkJPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQQk9IEBJTlNUQUxMX0RBVEFACisKK0FXSwkJPSBAQVdLQAorCisjIFRoZXNlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYnkgdGhpcyBtYWtlZmlsZQorQVVUT19TUkMgPSBcCisJbmN1cnNlc19kZWYuaAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworYWxsIFwKK2xpYnMgXAorZGVwZW5kIFwKK3NvdXJjZXMgXAoraW5zdGFsbCA6OgkkKEFVVE9fU1JDKQorCit1bmluc3RhbGwgOjoKKworbmN1cnNlc19kZWYuaDogJChzcmNkaXIpL25jdXJzZXNfZGVmcyAkKHNyY2RpcikvTUtuY3Vyc2VzX2RlZi5zaAorCUFXSz0kKEFXSykgJChTSEVMTCkgJChzcmNkaXIpL01LbmN1cnNlc19kZWYuc2ggJChzcmNkaXIpL25jdXJzZXNfZGVmcyA+JEAKKwordGFnczoKKwljdGFncyAqLltjaF0KKworQE1BS0VfVVBQRVJfVEFHU0BUQUdTOgorQE1BS0VfVVBQRVJfVEFHU0AJZXRhZ3MgKi5bY2hdCisKK21vc3RseWNsZWFuIDo6CisJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQorCitjbGVhbiA6OiBtb3N0bHljbGVhbgorCS1ybSAtZiAkKEFVVE9fU1JDKQorCitkaXN0Y2xlYW4gOjogY2xlYW4KKwktcm0gLWYgTWFrZWZpbGUKKworcmVhbGNsZWFuIDo6IGRpc3RjbGVhbgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGR1cmluZyBjb25maWd1cmF0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9BZGE5NS9pbmNsdWRlL25jdXJzZXNfY2ZnLmhpbiBiL0FkYTk1L2luY2x1ZGUvbmN1cnNlc19jZmcuaGluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOGE0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9pbmNsdWRlL25jdXJzZXNfY2ZnLmhpbgpAQCAtMCwwICsxLDcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGNsYXJrLm5ldD4gMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogbmN1cnNlc19jZmcuaGluLHYgMS43IDIwMDUvMDEvMDIgMDE6MjY6NTggdG9tIEV4cCAkCisgKgorICogVGhpcyBpcyBhIHRlbXBsYXRlLWZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgIm5jdXJzZXNfY2ZnLmgiIGZpbGUuCisgKgorICogUmF0aGVyIHRoYW4gbGlzdCBldmVyeSBkZWZpbml0aW9uLCB0aGUgY29uZmlndXJhdGlvbiBzY3JpcHQgc3Vic3RpdHV0ZXMgdGhlCisgKiBkZWZpbml0aW9ucyB0aGF0IGl0IGZpbmRzIHVzaW5nICdzZWQnLiAgWW91IG5lZWQgYSBwYXRjaCAob3JpZ2luYWwgZGF0ZQorICogOTcxMjIyKSB0byBhdXRvY29uZiAyLjEyIG9yIDIuMTMgdG8gZG8gdGhpcy4KKyAqCisgKiBTZWU6CisgKglodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYXV0b2NvbmYvCisgKglmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi8KKyAqLworI2lmbmRlZiBOQ19DT05GSUdfSAorI2RlZmluZSBOQ19DT05GSUdfSAorQERFRlNACisKKyNpbmNsdWRlIDxuY3Vyc2VzX2RlZi5oPgorCisJLyogVGhlIEMgY29tcGlsZXIgbWF5IG5vdCB0cmVhdCB0aGVzZSBwcm9wZXJseSBidXQgQysrIGhhcyB0byAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisjdW5kZWYgY29uc3QKKyN1bmRlZiBpbmxpbmUKKyNlbHNlCisjaWYgZGVmaW5lZChsaW50KSB8fCBkZWZpbmVkKFRSQUNFKQorI3VuZGVmIGlubGluZQorI2RlZmluZSBpbmxpbmUgLyogbm90aGluZyAqLworI2VuZGlmCisjZW5kaWYKKworCS8qIE9uIEhQLVVYLCB0aGUgQyBjb21waWxlciBkb2Vzbid0IGdyb2sgbWJzdGF0ZV90IHdpdGhvdXQKKwkgICAtRF9YT1BFTl9TT1VSQ0U9NTAwLiBIb3dldmVyLCB0aGlzIGNhdXNlcyBwcm9ibGVtcyBvbgorCSAgIElSSVguIFNvLCB3ZSAjZGVmaW5lIG1ic3RhdGVfdCB0byBpbnQgaW4gY29uZmlndXJlLmluCisJICAgb25seSBmb3IgdGhlIEMgY29tcGlsZXIgaWYgbmVlZGVkLiAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworI2lmZGVmIE5FRURfTUJTVEFURV9UX0RFRgorI2RlZmluZSBtYnN0YXRlX3QgaW50CisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogTkNfQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL0FkYTk1L2luY2x1ZGUvbmN1cnNlc19kZWZzIGIvQWRhOTUvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE3NDYyMAotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L2luY2x1ZGUvbmN1cnNlc19kZWZzCkBAIC0wLDAgKzEsMjA0IEBACisjICRJZDogbmN1cnNlc19kZWZzLHYgMS40NCAyMDEzLzA0LzI3IDE5OjUwOjE3IHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAwMC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBTZWUgIk1LbmN1cnNlc19kZWYuc2giIGZvciBhbiBleHBsYW5hdGlvbi4KKyMKKyMgKGhpbnQ6IGRvbid0IHRyeSB0byBkZWZpbmUgTkRFQlVHIDstKQorCitCUk9LRU5fTElOS0VSCitCU0RfVFBVVFMKK0NQUF9IQVNfUEFSQU1fSU5JVAorQ1VSU0VTX0FDU19BUlJBWQlhY3NfbWFwCitDVVJTRVNfV0FDU19BUlJBWQlfbmNfd2FjcworREVDTF9FUlJOTworRVRJUF9ORUVEU19NQVRIX0gKK0dDQ19OT1JFVFVSTgkvKiBub3RoaW5nICovCitHQ0NfVU5VU0VECS8qIG5vdGhpbmcgKi8KK0hBVkVfQklHX0NPUkUKK0hBVkVfQlNEX0NHRVRFTlQKK0hBVkVfQlNEX1NJR05BTF9ICitIQVZFX0JUT1dDIAorSEFWRV9CVUlMVElOX0gKK0hBVkVfQ0hHQVQJMQorSEFWRV9DT0xPUl9TRVQJMQorSEFWRV9ESVJFTlRfSAorSEFWRV9FUlJOTworSEFWRV9GQ05UTF9ICitIQVZFX0ZJTFRFUgkxCitIQVZFX0ZPUk1fSAorSEFWRV9HRVRCRUdYCTEKK0hBVkVfR0VUQ1VSWAkxCitIQVZFX0dFVENXRAorSEFWRV9HRVRFR0lECitIQVZFX0dFVEVVSUQKK0hBVkVfR0VUTUFYWAkxCitIQVZFX0dFVE5TVFIKK0hBVkVfR0VUT1BUX0gKK0hBVkVfR0VUUEFSWAkxCitIQVZFX0dFVFRJTUVPRkRBWQorSEFWRV9HRVRUVFlOQU0KK0hBVkVfR0VUV0lOCTEKK0hBVkVfR1BNX0gKK0hBVkVfR1BQX0JVSUxUSU5fSAorSEFWRV9HWFhfQlVJTFRJTl9ICitIQVZFX0hBU19LRVkKK0hBVkVfSU9TVFJFQU0KK0hBVkVfSVNBU0NJSQorSEFWRV9JU1NFVFVHSUQKK0hBVkVfTEFOR0lORk9fQ09ERVNFVAorSEFWRV9MSUJDX0gKK0hBVkVfTElCREJNQUxMT0MKK0hBVkVfTElCRE1BTExPQworSEFWRV9MSUJGT1JNCitIQVZFX0xJQkdQTQorSEFWRV9MSUJNRU5VCitIQVZFX0xJQk1QQVRST0wKK0hBVkVfTElCUEFORUwKK0hBVkVfTElNSVRTX0gKK0hBVkVfTElOSworSEFWRV9MT0NBTEVfSAorSEFWRV9MT05HX0ZJTEVfTkFNRVMKK0hBVkVfTUJMRU4KK0hBVkVfTUJSTEVOCitIQVZFX01CUlRPV0MKK0hBVkVfTUJTUlRPV0NTCitIQVZFX01CU1RPV0NTCitIQVZFX01CVE9XQworSEFWRV9NRU5VX0gKK0hBVkVfTUtTVEVNUAorSEFWRV9NVlZMSU5FCTEKK0hBVkVfTVZXVkxJTkUJMQorSEFWRV9OQU5PU0xFRVAKK0hBVkVfTkNfQUxMT0NfSAorSEFWRV9QQU5FTF9ICitIQVZFX1BPTEwKK0hBVkVfUE9MTF9ICitIQVZFX1BVUklGWQorSEFWRV9QVVRXQyAKK0hBVkVfUFVUV0lOCTEKK0hBVkVfUkVHRVhQUl9IX0ZVTkNTCitIQVZFX1JFR0VYUF9IX0ZVTkNTCitIQVZFX1JFR0VYX0hfRlVOQ1MKK0hBVkVfUkVNT1ZFCitIQVZFX1JFU0laRVRFUk0KK0hBVkVfUkVTSVpFX1RFUk0KK0hBVkVfUklQT0ZGTElORQkxCitIQVZFX1NFTEVDVAorSEFWRV9TRVRCVUYKK0hBVkVfU0VUQlVGRkVSCitIQVZFX1NFVFVQVEVSTQkxCitIQVZFX1NFVFZCVUYKK0hBVkVfU0lHQUNUSU9OCitIQVZFX1NJR1ZFQworSEFWRV9TSVpFQ0hBTkdFCitIQVZFX1NMS19DT0xPUgorSEFWRV9TTEtfSU5JVAkxCitIQVZFX1NUUlNUUgorSEFWRV9TWU1MSU5LCitIQVZFX1NZU19CU0RUWVBFU19ICitIQVZFX1NZU19JT0NUTF9ICitIQVZFX1NZU19QQVJBTV9ICitIQVZFX1NZU19QT0xMX0gKK0hBVkVfU1lTX1NFTEVDVF9ICitIQVZFX1NZU19URVJNSU9fSAorSEFWRV9TWVNfVElNRVNfSAorSEFWRV9TWVNfVElNRV9ICitIQVZFX1NZU19USU1FX1NFTEVDVAorSEFWRV9UQ0dFVEFUVFIKK0hBVkVfVENHRVRQR1JQCitIQVZFX1RFTEwKK0hBVkVfVEVSTUFUVFJTCTEKK0hBVkVfVEVSTUlPU19ICitIQVZFX1RFUk1JT19ICitIQVZFX1RFUk1OQU1FCTEKK0hBVkVfVEVSTV9ICTEKK0hBVkVfVEdFVEVOVAkxCitIQVZFX1RJR0VUTlVNCTEKK0hBVkVfVElHRVRTVFIJMQorSEFWRV9USU1FUworSEFWRV9UVFlFTlRfSAorSEFWRV9UWVBFQUhFQUQJMQorSEFWRV9UWVBFSU5GTworSEFWRV9UWVBFX0FUVFJfVAorSEFWRV9UWVBFX1NJR0FDVElPTgorSEFWRV9VTklTVERfSAorSEFWRV9VTkxJTksKK0hBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCitIQVZFX1ZGU0NBTkYKK0hBVkVfVlNOUFJJTlRGCitIQVZFX1ZTU0NBTkYKK0hBVkVfV0NTUlRPTUJTCitIQVZFX1dDU1RPTUJTCitIQVZFX1dDVE9CIAorSEFWRV9XQ1RPTUIKK0hBVkVfV0NUWVBFX0gKK0hBVkVfV0lOU1NUUgkxCitIQVZFX1dPUktJTkdfUE9MTAorSEFWRV9XUkVTSVpFCitIQVZFX19ET1NDQU4KK01JWEVEQ0FTRV9GSUxFTkFNRVMKK05DVVJTRVNfQ0hBUl9FUQorTkNVUlNFU19FWFBBTkRFRAorTkNVUlNFU19FWFRfQ09MT1JTCitOQ1VSU0VTX0VYVF9GVU5DUworTkNVUlNFU19OT19QQURESU5HCitOQ1VSU0VTX1BBVEhTRVAJJzonCitORUVEX1BURU1fSAorTk9fTEVBS1MKK1BVUkVfVEVSTUlORk8KK1NURENfSEVBREVSUworU1ZSNF9BQ1RJT04KK1NWUjRfVEVSTUlPCitTWVNURU1fTkFNRQkidW5rbm93biIKK1RFUk1JTkZPCSJub25lIgorVEVSTVBBVEgJIm5vbmUiCitUSU1FX1dJVEhfU1lTX1RJTUUKK1RZUEVPRl9DSFRZUEUKK1VTRV9DT0xPUkZHQkcKK1VTRV9EQVRBQkFTRQorVVNFX0dFVENBUAorVVNFX0dFVENBUF9DQUNIRQorVVNFX0hBUkRfVEFCUworVVNFX0hBU0hFRF9EQgorVVNFX0hBU0hNQVAKK1VTRV9IT01FX1RFUk1JTkZPCitVU0VfTElOS1MKK1VTRV9NWV9NRU1NT1ZFCitVU0VfT0tfQkNPUFkKK1VTRV9SQ1NfSURTCitVU0VfUkVFTlRSQU5UCitVU0VfU0FGRV9TUFJJTlRGCitVU0VfU0NST0xMX0hJTlRTCitVU0VfU0lHV0lOQ0gKK1VTRV9TWU1MSU5LUworVVNFX1NZU01PVVNFCitVU0VfVEVSTUNBUAorVVNFX1dFQUtfU1lNQk9MUworVVNFX1dJREVDX1NVUFBPUlQKK1VTRV9YTUNfU1VQUE9SVApkaWZmIC0tZ2l0IGEvQWRhOTUvbWFrZS10YXIuc2ggYi9BZGE5NS9tYWtlLXRhci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mM2QwYTY0Ci0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvbWFrZS10YXIuc2gKQEAgLTAsMCArMSwxNTYgQEAKKyMhL2Jpbi9zaAorIyAkSWQ6IG1ha2UtdGFyLnNoLHYgMS4xNSAyMDE1LzA1LzE2IDE3OjEyOjM3IHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb25zdHJ1Y3QgYSB0YXItZmlsZSBjb250YWluaW5nIG9ubHkgdGhlIEFkYTk1IHRyZWUgYXMgd2VsbCBhcyBpdHMgYXNzb2NpYXRlZAorIyBkb2N1bWVudGF0aW9uLiAgVGhlIHJlYXNvbiBmb3IgZG9pbmcgdGhhdCBpcyB0byBzaW1wbGlmeSBkaXN0cmlidXRpbmcgdGhlCisjIGFkYSBiaW5kaW5nIGFzIGEgc2VwYXJhdGUgcGFja2FnZS4KKworQ0RQQVRIPToKK2V4cG9ydCBDRFBBVEgKKworVEFSR0VUPWBwd2RgCisKKzogJHtST09UTkFNRTo9bmN1cnNlcy1BZGE5NX0KKzogJHtQS0dfTkFNRTo9QWRhQ3Vyc2VzfQorOiAke0RFU1RESVI6PSRUQVJHRVR9Cis6ICR7VE1QRElSOj0vdG1wfQorCitncmVwX2Fzc2lnbigpIHsKKwlncmVwX2Fzc2lnbj1gZWdyZXAgIl4kMlw+IiAiJDEiIHwgc2VkIC1lICJzL14kMlsgCV0qPVsgCV0qLy8iIC1lICdzLyIvL2cnYAorCWV2YWwgJDI9XCIkZ3JlcF9hc3NpZ25cIgorfQorCitncmVwX3BhdGNoZGF0ZSgpIHsKKwlncmVwX2Fzc2lnbiAuLi9kaXN0Lm1rIE5DVVJTRVNfTUFKT1IKKwlncmVwX2Fzc2lnbiAuLi9kaXN0Lm1rIE5DVVJTRVNfTUlOT1IKKwlncmVwX2Fzc2lnbiAuLi9kaXN0Lm1rIE5DVVJTRVNfUEFUQ0gKK30KKworIyBUaGUgcnBtIHNwZWMtZmlsZSBpbiB0aGUgbmN1cnNlcyB0cmVlIGlzIGEgdGVtcGxhdGUuICBGaWxsIGluIHRoZSB2ZXJzaW9uCisjIGluZm9ybWF0aW9uIGZyb20gZGlzdC5taworZWRpdF9zcGVjZmlsZSgpIHsKKwlzZWQgXAorCQktZSAicy9cXDxNQUpPUlxcPi8kTkNVUlNFU19NQUpPUi9nIiBcCisJCS1lICJzL1xcPE1JTk9SXFw+LyROQ1VSU0VTX01JTk9SL2ciIFwKKwkJLWUgInMvXFw8WVlZWU1NRERcXD4vJE5DVVJTRVNfUEFUQ0gvZyIgJDEgPiQxLm5ldworCWNobW9kIHUrdyAkMQorCW12ICQxLm5ldyAkMQorfQorCittYWtlX2NoYW5nZWxvZygpIHsKKwl0ZXN0IC1mICQxICYmIGNobW9kIHUrdyAkMQorCWNhdCA+JDEgPDxFT0YKK2BlY2hvICRQS0dfTkFNRXx0ciAnW0EtWl0nICdbYS16XSdgICgkTkNVUlNFU19NQUpPUi4kTkNVUlNFU19NSU5PUiskTkNVUlNFU19QQVRDSCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBzbmFwc2hvdCBvZiBuY3Vyc2VzIHN1YnBhY2thZ2UgZm9yICRQS0dfTkFNRS4KKworIC0tIGBoZWFkIC1uIDEgJEhPTUUvLnNpZ25hdHVyZWAgIGBkYXRlIC1SYAorRU9GCit9CisKKyMgVGhpcyBjYW4gYmUgcnVuIGZyb20gZWl0aGVyIHRoZSBzdWJkaXJlY3RvcnksIG9yIGZyb20gdGhlIHRvcC1sZXZlbAorIyBzb3VyY2UgZGlyZWN0b3J5LiAgV2Ugd2lsbCBwdXQgdGhlIHRhciBmaWxlIGluIHRoZSBvcmlnaW5hbCBkaXJlY3RvcnkuCit0ZXN0IC1kIC4vQWRhOTUgJiYgY2QgLi9BZGE5NQorU09VUkNFPWBjZCAuLjtwd2RgCisKK0JVSUxEPSRUTVBESVIvbWFrZS10YXIkJAordHJhcCAiY2QgLzsgcm0gLXJmICRCVUlMRDsgZXhpdCAwIiAwIDEgMiA1IDE1CisKK3VtYXNrIDA3NworaWYgISAoIG1rZGlyICRCVUlMRCApCit0aGVuCisJZWNobyAiPyBjYW5ub3QgbWFrZSBidWlsZCBkaXJlY3RvcnkgJEJVSUxEIgorZmkKKwordW1hc2sgMDIyCitta2RpciAkQlVJTEQvJFJPT1ROQU1FCisKK2NwIC1wIC1yICogJEJVSUxELyRST09UTkFNRS8gfHwgZXhpdAorCisjIEFkZCB0aGUgY29uZmlnLiogdXRpbGl0eSBzY3JpcHRzIGZyb20gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCitmb3IgaSBpbiAuIC4uCitkbworCWZvciBqIGluIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGluc3RhbGwtc2ggdGFyLWNvcHkuc2gKKwlkbworCQl0ZXN0IC1mICRpLyRqICYmIGNwIC1wICRpLyRqICRCVUlMRC8kUk9PVE5BTUUvCisJZG9uZQorZG9uZQorCisjIE1ha2UgcnBtIGFuZCBkcGtnIHNjcmlwdHMgZm9yIHRlc3QtYnVpbGRzCitncmVwX3BhdGNoZGF0ZQorZm9yIHNwZWMgaW4gJEJVSUxELyRST09UTkFNRS9wYWNrYWdlLyouc3BlYworZG8KKwllZGl0X3NwZWNmaWxlICRzcGVjCitkb25lCitmb3Igc3BlYyBpbiAkQlVJTEQvJFJPT1ROQU1FL3BhY2thZ2UvZGViaWFuKgorZG8KKwltYWtlX2NoYW5nZWxvZyAkc3BlYy9jaGFuZ2Vsb2cKK2RvbmUKKworY3AgLXAgLi4vbWFuL01LYWRhX2NvbmZpZy5pbiAkQlVJTEQvJFJPT1ROQU1FL2RvYy8KK2lmIHRlc3QgLXogIiROT19IVE1MX0RPQ1MiCit0aGVuCisJIyBBZGQgdGhlIGFkYSBkb2N1bWVudGF0aW9uLgorCWNkIC4uL2RvYy9odG1sIHx8IGV4aXQKKworCWNwIC1wIC1yIEFkYSogJEJVSUxELyRST09UTkFNRS9kb2MvCisJY3AgLXAgLXIgYWRhICRCVUlMRC8kUk9PVE5BTUUvZG9jLworZmkKKworY3AgLXAgJFNPVVJDRS9ORVdTICRCVUlMRC8kUk9PVE5BTUUKKworIyBjbGVhbnVwIGVtcHR5IGRpcmVjdG9yaWVzIChhbiBhcnRpZmFjdCBvZiBuY3Vyc2VzIHNvdXJjZSBhcmNoaXZlcykKKwordG91Y2ggJEJVSUxELyRST09UTkFNRS9NQU5JRkVTVCAKKyggY2QgJEJVSUxELyRST09UTkFNRSAmJiBmaW5kIC4gLXR5cGUgZiAtcHJpbnQgfCRTT1VSQ0UvbWlzYy9jc29ydCA+TUFOSUZFU1QgKQorCitjZCAkQlVJTEQgfHwgZXhpdCAKKworIyBSZW1vdmUgYnVpbGQtYXJ0aWZhY3RzLgorZmluZCAuIC1uYW1lIFJDUyAtZXhlYyBybSAtcmYge30gXDsKK2ZpbmQgJEJVSUxELyRST09UTkFNRSAtdHlwZSBkIC1leGVjIHJtZGlyIHt9IFw7IDI+L2Rldi9udWxsCitmaW5kICRCVUlMRC8kUk9PVE5BTUUgLXR5cGUgZCAtZXhlYyBybWRpciB7fSBcOyAyPi9kZXYvbnVsbAorZmluZCAkQlVJTEQvJFJPT1ROQU1FIC10eXBlIGQgLWV4ZWMgcm1kaXIge30gXDsgMj4vZGV2L251bGwKKworIyBUaGVyZSBpcyBubyBuZWVkIGZvciB0aGlzIHNjcmlwdCBpbiB0aGUgdGFyIGZpbGUuCitybSAtZiAkUk9PVE5BTUUvbWFrZS10YXIuc2gKKworIyBSZW1vdmUgYnVpbGQtYXJ0aWZhY3RzLgorZmluZCAuIC1uYW1lICIqLmd6IiAtZXhlYyBybSAtcmYge30gXDsKKworIyBNYWtlIHRoZSBmaWxlcyB3cml0YWJsZS4uLgorY2htb2QgLVIgdSt3IC4KKwordGFyIGNmIC0gJFJPT1ROQU1FIHwgZ3ppcCA+JERFU1RESVIvJFJPT1ROQU1FLnRhci5negorY2QgJERFU1RESVIKKworcHdkCitscyAtbCAkUk9PVE5BTUUudGFyLmd6CisKKyMgdmk6dHM9NCBzdz00CmRpZmYgLS1naXQgYS9BZGE5NS9tay0xc3QuYXdrIGIvQWRhOTUvbWstMXN0LmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzI2NTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvbWstMXN0LmF3awpAQCAtMCwwICsxLDkwIEBACisjICRJZDogbWstMXN0LmF3ayx2IDEuNCAyMDExLzAyLzIyIDA5OjQwOjAxIHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyMKKyMgR2VuZXJhdGUgY29tcGlsZS1ydWxlcyBmb3IgdGhlIEFkYTk1IG1vZHVsZXMgdGhhdCB3ZSBhcmUgdXNpbmcgaW4gbGlicmFyaWVzCisjIG9yIHByb2dyYW1zLiAgVGhpcyBzY3JpcHQgaXMgdXNlZCBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgZ25hdG1ha2UsIHdoaWNoIGRvCisjIG5vdCBidWlsZCBsaWJyYXJpZXMgcmVsaWFibHksIGUuZy4sIGduYXRtYWtlIDMuMTUuCisjCisjIEZpZWxkcyBpbiBzcmMvbW9kdWxlczoKKyMJJDEgPSBtb2R1bGUgbmFtZQorIwkkMiA9IGRpcmVjdG9yeSB3aGVyZSBzcGVjLWRlcGVuZGVuY3kgIi5hZHMiIGlzIGZvdW5kCisjCSQzID0gZGlyZWN0b3J5IHdoZXJlIGJvZHktZGVwZW5kZW5jeSAiLmFkYiIgaXMgZm91bmQKKyMJJDQgPSB1bml0IHRvIGNvbXBpbGUgKHNwZWMgb3IgYm9keSkKKyMKK0JFR0lOCXsKKwkJcHJpbnRmICJcbiI7CisJCXByaW50ZiAiIyBnZW5lcmF0ZWQgYnkgQWRhOTUvbWstMXN0LmF3a1xuIjsKKwl9CisJL15bI10vIHsKKwkJbmV4dAorCX0KKwkvXiQvIHsKKwkJbmV4dAorCX0KKwl7CisJCXByaW50ZiAiXG4iOworCQlwcmludGYgIiVzLm8gOiIsICQxOworCisJCWlmICggJDIgPT0gIm5vbmUiICkgeworCQkJcHJlX3NwZWMgPSAiIjsKKwkJfSBlbHNlIGlmICggJDIgPT0gIi4iICkgeworCQkJcHJlX3NwZWMgPSAiIjsKKwkJCXByaW50ZiAiIFxcXG5cdFx0JXMuYWRzIiwgJDE7CisJCX0gZWxzZSB7CisJCQlwcmVfc3BlYyA9IHNwcmludGYoIiVzLyIsICQyKTsKKwkJCXByaW50ZiAiIFxcXG5cdFx0JXMlcy5hZHMiLCBwcmVfc3BlYywgJDE7CisJCX0KKworCQlpZiAoICQzID09ICJub25lIiApIHsKKwkJCXByZV9ib2R5ID0gIiI7CisJCX0gZWxzZSBpZiAoICQzID09ICIuIiApIHsKKwkJCXByZV9ib2R5ID0gIiI7CisJCQlwcmludGYgIiBcXFxuXHRcdCVzLmFkYiIsICQxOworCQl9IGVsc2UgeworCQkJcHJlX2JvZHkgPSBzcHJpbnRmKCIlcy8iLCAkMyk7CisJCQlwcmludGYgIiBcXFxuXHRcdCVzJXMuYWRiIiwgcHJlX2JvZHksICQxOworCQkJcHJpbnRmICIgXFxcblx0XHQkKEJBU0VERVBTKSI7CisJCX0KKworCQlpZiAoICQ0ID09ICJzcGVjIiApIHsKKwkJCXN1ZmZpeCA9ICJhZHMiOworCQkJcHJlZml4ID0gcHJlX3NwZWM7CisJCX0gZWxzZSB7CisJCQlzdWZmaXggPSAiYWRiIjsKKwkJCXByZWZpeCA9IHByZV9ib2R5OworCQl9CisKKwkJcHJpbnRmICAiXG4iOworCQlwcmludGYgIlx0JChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICVzJXMuJXNcbiIsIHByZWZpeCwgJDEsIHN1ZmZpeAorCX0KK0VORAl7CisJCXByaW50ICAiIgorCX0KZGlmZiAtLWdpdCBhL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLWRvYy5zcGVjIGIvQWRhOTUvcGFja2FnZS9BZGFDdXJzZXMtZG9jLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjOTZhYwotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLWRvYy5zcGVjCkBAIC0wLDAgKzEsNTAgQEAKK1N1bW1hcnk6IEFkYUN1cnNlcyAtIEFkYTk1IGJpbmRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgbmN1cnNlcworJWRlZmluZSBBcHBQcm9ncmFtIEFkYUN1cnNlcworJWRlZmluZSBBcHBWZXJzaW9uIE1BSk9SLk1JTk9SCislZGVmaW5lIEFwcFJlbGVhc2UgWVlZWU1NREQKKyVkZWZpbmUgQXBwUGFja2FnZSAle0FwcFByb2dyYW19LWRvYworIyAkSWQ6IEFkYUN1cnNlcy1kb2Muc3BlYyx2IDEuMyAyMDE1LzA0LzI2IDIzOjM5OjMxIHRvbSBFeHAgJAorTmFtZTogJXtBcHBQYWNrYWdlfQorVmVyc2lvbjogJXtBcHBWZXJzaW9ufQorUmVsZWFzZTogJXtBcHBSZWxlYXNlfQorTGljZW5zZTogTUlUCitHcm91cDogQXBwbGljYXRpb25zL0RldmVsb3BtZW50CitVUkw6IGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0LyV7QXBwUHJvZ3JhbX0KK1NvdXJjZTA6ICV7QXBwUHJvZ3JhbX0tJXtBcHBSZWxlYXNlfS50Z3oKK1BhY2thZ2VyOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CisKKyVkZXNjcmlwdGlvbgorVGhpcyBpcyB0aGUgQWRhOTUgYmluZGluZyBkb2N1bWVudGF0aW9uIGZyb20gdGhlIG5jdXJzZXMgTUFKT1IuTUlOT1IKK2Rpc3RyaWJ1dGlvbiwgZm9yIHBhdGNoLWRhdGUgWVlZWU1NREQuCislcHJlcAorCislZGVmaW5lIGRlYnVnX3BhY2thZ2UgJXtuaWx9CisKKyVzZXR1cCAtcSAtbiAle0FwcFByb2dyYW19LSV7QXBwUmVsZWFzZX0KKworJWJ1aWxkCisKK0lOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScgXAorCS4vY29uZmlndXJlIFwKKwkJLS10YXJnZXQgJXtfdGFyZ2V0X3BsYXRmb3JtfSBcCisJCS0tcHJlZml4PSV7X3ByZWZpeH0gXAorCQktLWRhdGFkaXI9JXtfZGF0YWRpcn0gXAorCQktLXdpdGgtYWRhLXNoYXJlZGxpYgorCislaW5zdGFsbAorWyAiJFJQTV9CVUlMRF9ST09UIiAhPSAiLyIgXSAmJiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKKyhjZCBkb2MgJiYgbWFrZSBpbnN0YWxsLmh0bWwgREVTVERJUj0kUlBNX0JVSUxEX1JPT1QgKQorCislY2xlYW4KK1sgIiRSUE1fQlVJTERfUk9PVCIgIT0gIi8iIF0gJiYgcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCislZmlsZXMKKyVkZWZhdHRyKC0scm9vdCxyb290KQorJXtfZGF0YWRpcn0vZG9jL0FkYUN1cnNlcworCislY2hhbmdlbG9nCisjIGVhY2ggcGF0Y2ggc2hvdWxkIGFkZCBpdHMgQ2hhbmdlTG9nIGVudHJpZXMgaGVyZQorCisqIFNhdCBNYXIgMjYgMjAxMSBUaG9tYXMgRGlja2V5CistIGluaXRpYWwgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvQWRhOTUvcGFja2FnZS9BZGFDdXJzZXMuc3BlYyBiL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUyMzU0YwotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLnNwZWMKQEAgLTAsMCArMSw4NCBAQAorU3VtbWFyeTogQWRhQ3Vyc2VzIC0gQWRhOTUgYmluZGluZyBmb3IgbmN1cnNlcworJWRlZmluZSBBcHBQcm9ncmFtIEFkYUN1cnNlcworJWRlZmluZSBBcHBWZXJzaW9uIE1BSk9SLk1JTk9SCislZGVmaW5lIEFwcFJlbGVhc2UgWVlZWU1NREQKKyMgJElkOiBBZGFDdXJzZXMuc3BlYyx2IDEuMTUgMjAxNS8wNC8yNiAyMzo1NTo1NSB0b20gRXhwICQKK05hbWU6ICV7QXBwUHJvZ3JhbX0KK1ZlcnNpb246ICV7QXBwVmVyc2lvbn0KK1JlbGVhc2U6ICV7QXBwUmVsZWFzZX0KK0xpY2Vuc2U6IE1JVAorR3JvdXA6IEFwcGxpY2F0aW9ucy9EZXZlbG9wbWVudAorVVJMOiBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC8le0FwcFByb2dyYW19CitTb3VyY2UwOiAle0FwcFByb2dyYW19LSV7QXBwUmVsZWFzZX0udGd6CitQYWNrYWdlcjogVGhvbWFzIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgorCislZGVzY3JpcHRpb24KK1RoaXMgaXMgdGhlIEFkYTk1IGJpbmRpbmcgZnJvbSB0aGUgbmN1cnNlcyBNQUpPUi5NSU5PUiBkaXN0cmlidXRpb24sIGZvcgorcGF0Y2gtZGF0ZSBZWVlZTU1ERC4KKworSW4gYWRkaXRpb24gdG8gYSBsaWJyYXJ5LCB0aGlzIHBhY2thZ2UgaW5zdGFsbHMgc2FtcGxlIHByb2dyYW1zIGluCisiYmluL0FkYUN1cnNlcyIgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBvdGhlciBwYWNrYWdlcy4KKyVwcmVwCisKKyVkZWZpbmUgZGVidWdfcGFja2FnZSAle25pbH0KKworIyBodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9FUEVMOlBhY2thZ2luZ19BdXRvcHJvdmlkZXNfYW5kX1JlcXVpcmVzX0ZpbHRlcmluZworJWZpbHRlcl9mcm9tX3JlcXVpcmVzIC9saWJBZGFDdXJzZXMuc28uMS9kCislZmlsdGVyX3NldHVwCisKKyVzZXR1cCAtcSAtbiAle0FwcFByb2dyYW19LSV7QXBwUmVsZWFzZX0KKworJWJ1aWxkCisKKyVkZWZpbmUgYWRhX2xpYmRpciAle19wcmVmaXh9L2xpYi9hZGEvYWRhbGliCisKK0lOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScgXAorCS4vY29uZmlndXJlIFwKKwkJLS10YXJnZXQgJXtfdGFyZ2V0X3BsYXRmb3JtfSBcCisJCS0tcHJlZml4PSV7X3ByZWZpeH0gXAorCQktLWJpbmRpcj0le19iaW5kaXJ9IFwKKwkJLS1saWJkaXI9JXtfbGliZGlyfSBcCisJCS0tbWFuZGlyPSV7X21hbmRpcn0gXAorCQktLWRhdGFkaXI9JXtfZGF0YWRpcn0gXAorCQktLWRpc2FibGUtcnBhdGgtbGluayBcCisJCS0td2l0aC1zaGFyZWQgXAorCQktLXdpdGgtYWRhLXNoYXJlZGxpYgorCittYWtlCisKKyVpbnN0YWxsCitbICIkUlBNX0JVSUxEX1JPT1QiICE9ICIvIiBdICYmIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKKworbWFrZSBpbnN0YWxsICAgICAgICAgICAgICAgREVTVERJUj0kUlBNX0JVSUxEX1JPT1QKKworKCBjZCBzYW1wbGVzICYmCisgIG1ha2UgaW5zdGFsbC5leGFtcGxlcyBcCisgIAlERVNURElSPSRSUE1fQlVJTERfUk9PVCBcCisJQklORElSPSRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0vJXtBcHBQcm9ncmFtfQorKQorCislY2xlYW4KK1sgIiRSUE1fQlVJTERfUk9PVCIgIT0gIi8iIF0gJiYgcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCislZmlsZXMKKyVkZWZhdHRyKC0scm9vdCxyb290KQorJXtfYmluZGlyfS9hZGFjdXJzZXMqLWNvbmZpZworJXtfYmluZGlyfS8le0FwcFByb2dyYW19LyoKKyV7X2xpYmRpcn0vbGliQWRhQ3Vyc2VzLioKKyV7YWRhX2xpYmRpcn0vbGliQWRhQ3Vyc2VzLioKKyV7YWRhX2xpYmRpcn0vdGVybWluYWxfaW50ZXJmYWNlKgorJXtfbWFuZGlyfS9tYW4xL2FkYWN1cnNlcyotY29uZmlnLjEqCisle19kYXRhZGlyfS8le0FwcFByb2dyYW19LyoKKyV7X2RhdGFkaXJ9L2FkYS9hZGFpbmNsdWRlL3Rlcm1pbmFsX2ludGVyZmFjZSoKKworJWNoYW5nZWxvZworIyBlYWNoIHBhdGNoIHNob3VsZCBhZGQgaXRzIENoYW5nZUxvZyBlbnRyaWVzIGhlcmUKKworKiBUaHUgTWFyIDMxIDIwMTEgVGhvbWFzIERpY2tleQorLSB1c2UgLS13aXRoLXNoYXJlZCBvcHRpb24gZm9yIGNvbnNpc3RlbmN5IHdpdGggLS13aXRoLWFkYS1zaGFyZWxpYgorLSBlbnN1cmUgdGhhdCBNWV9EQVRBRElSIGlzIHNldCB3aGVuIGluc3RhbGxpbmcgZXhhbXBsZXMKKy0gYWRkIGFkYV9saWJkaXIgc3ltYm9sIHRvIGhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgbGliZGlyIGlzIC91c3IvbGliNjQKKy0gdXNlIC0tZGlzYWJsZS1ycGF0aC1saW5rIHRvIGxpbmsgc2FtcGxlIHByb2dyYW1zIHdpdGhvdXQgcnBhdGgKKworKiBGcmkgTWFyIDI1IDIwMTEgVGhvbWFzIERpY2tleQorLSBpbml0aWFsIHZlcnNpb24KZGlmZiAtLWdpdCBhL0FkYTk1L3BhY2thZ2UvZGViaWFuL2NvbXBhdCBiL0FkYTk1L3BhY2thZ2UvZGViaWFuL2NvbXBhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ2ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvcGFja2FnZS9kZWJpYW4vY29tcGF0CkBAIC0wLDAgKzEgQEAKKzUKZGlmZiAtLWdpdCBhL0FkYTk1L3BhY2thZ2UvZGViaWFuL2NvbnRyb2wgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YWY5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9jb250cm9sCkBAIC0wLDAgKzEsMTcgQEAKK1NvdXJjZTogYWRhY3Vyc2VzCitNYWludGFpbmVyOiBUaG9tYXMgRS4gRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CitTZWN0aW9uOiBtaXNjCitQcmlvcml0eTogb3B0aW9uYWwKK1N0YW5kYXJkcy1WZXJzaW9uOiAzLjguNAorQnVpbGQtRGVwZW5kczogZGViaGVscGVyICg+PSA1KQorSG9tZXBhZ2U6IGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hZGFjdXJzZXMvCisKK1BhY2thZ2U6IGFkYWN1cnNlcworQXJjaGl0ZWN0dXJlOiBhbnkKK0RlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9LCAke21pc2M6RGVwZW5kc30KK0Rlc2NyaXB0aW9uOiBBZGFDdXJzZXMgLSBBZGE5NSBiaW5kaW5nIGZvciBuY3Vyc2VzCisgVGhpcyBwYWNrYWdlIGluc3RhbGxzIGFzICJhZGFjdXJzZXMiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb3RoZXIgcGFja2FnZXMuCisgVGhpcyBpcyB0aGUgQWRhOTUgYmluZGluZyBmcm9tIHRoZSBuY3Vyc2VzIGRpc3RyaWJ1dGlvbi4KKyAuCisgSW4gYWRkaXRpb24gdG8gYSBsaWJyYXJ5LCB0aGlzIHBhY2thZ2UgaW5zdGFsbHMgc2FtcGxlIHByb2dyYW1zIGluCisgImJpbi9BZGFDdXJzZXMiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb3RoZXIgcGFja2FnZXMuCmRpZmYgLS1naXQgYS9BZGE5NS9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0OTUwYQotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodApAQCAtMCwwICsxLDc4IEBACitVcHN0cmVhbSBzb3VyY2UgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sCisKK0N1cnJlbnQgbmN1cnNlcyBtYWludGFpbmVyOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiAqCitDb3B5cmlnaHQ6IDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorTGljZW5jZTogWDExCisKK0ZpbGVzOiBhY2xvY2FsLm00IHBhY2thZ2UKK0NvcHlyaWdodDogMjAxMC0yMDE0LDIwMTUgYnkgVGhvbWFzIEUuIERpY2tleQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICAgIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICAgIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAgICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICAgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgICBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IKKyAgICBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworICAgIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZQorICAgIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICAgIGF1dGhvcml6YXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiBpbnN0YWxsLXNoCitDb3B5cmlnaHQ6ICAxOTk0IFggQ29uc29ydGl1bQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgICAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAgICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAgICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICAgIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgICAgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICAgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQy0KKyAgICBUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFggQ29uc29ydGl1bSBzaGFsbCBub3QKKyAgICBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbC0KKyAgICBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisgICAgdGl1bS4KKworICAgIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCisKKyAgICBDYWxsaW5nIHRoaXMgc2NyaXB0IGluc3RhbGwtc2ggaXMgcHJlZmVycmVkIG92ZXIgaW5zdGFsbC5zaCwgdG8gcHJldmVudAorICAgIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CisgICAgd2hlbiB0aGVyZSBpcyBubyBNYWtlZmlsZS4KKworICAgIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KKyAgICBmcm9tIHNjcmF0Y2guICBJdCBjYW4gb25seSBpbnN0YWxsIG9uZSBmaWxlIGF0IGEgdGltZSwgYSByZXN0cmljdGlvbgorICAgIHNoYXJlZCB3aXRoIG1hbnkgT1MncyBpbnN0YWxsIHByb2dyYW1zLgorCitPbiBEZWJpYW4gc3lzdGVtcywgdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhlIEdOVSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBjYW4gYmUgZm91bmQgaW4gJy91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzL0dQTC0yJworCistLSB2aWxlOiB0eHRtb2RlIGZpbGUtZW5jb2Rpbmc9dXRmLTgKZGlmZiAtLWdpdCBhL0FkYTk1L3BhY2thZ2UvZGViaWFuL2RvY3MgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9kb2NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDU1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9kb2NzCkBAIC0wLDAgKzEgQEAKK1JFQURNRQpkaWZmIC0tZ2l0IGEvQWRhOTUvcGFja2FnZS9kZWJpYW4vcnVsZXMgYi9BZGE5NS9wYWNrYWdlL2RlYmlhbi9ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ODA1ZjhiCi0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvcGFja2FnZS9kZWJpYW4vcnVsZXMKQEAgLTAsMCArMSw5OSBAQAorIyEvdXNyL2Jpbi9tYWtlIC1mCisjIE1BZGUgd2l0aCB0aGUgYWlkIG9mIGRoX21ha2UsIGJ5IENyYWlnIFNtYWxsCisjIFNhbXBsZSBkZWJpYW4vcnVsZXMgdGhhdCB1c2VzIGRlYmhlbHBlci4gR05VIGNvcHlyaWdodCAxOTk3IGJ5IEpvZXkgSGVzcy4KKyMgU29tZSBsaW5lcyB0YWtlbiBmcm9tIGRlYm1ha2UsIGJ5IENyaXN0b3BoIExhbWV0ZXIuCisKKyMgVW5jb21tZW50IHRoaXMgdG8gdHVybiBvbiB2ZXJib3NlIG1vZGUuCisjZXhwb3J0IERIX1ZFUkJPU0U9MQorCisjIFRoZXNlIGFyZSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcgYW5kIGZvciBzYXZpbmcgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyMgZnJvbSBoYXZpbmcgdG8gZ3Vlc3Mgb3VyIHBsYXRmb3JtIChzaW5jZSB3ZSBrbm93IGl0IGFscmVhZHkpCitERUJfSE9TVF9HTlVfVFlQRSAgID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9HTlVfVFlQRSkKK0RFQl9CVUlMRF9HTlVfVFlQRSAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9CVUlMRF9HTlVfVFlQRSkKKworVEFSR0VUX0RJUiA9ICQoQ1VSRElSKS9kZWJpYW4vYWRhY3Vyc2VzCitTQU1QTEVfRElSID0gJChUQVJHRVRfRElSKS91c3IvYmluL0FkYUN1cnNlcworCitDRkxBR1MgPQorCitpZm5lcSAoLCQoZmluZHN0cmluZyBub29wdCwkKERFQl9CVUlMRF9PUFRJT05TKSkpCisgICAgICAgIENGTEFHUyArPSAtTzAKK2Vsc2UKKyAgICAgICAgQ0ZMQUdTICs9IC1PMgorZW5kaWYKK2lmZXEgKCwkKGZpbmRzdHJpbmcgbm9zdHJpcCwkKERFQl9CVUlMRF9PUFRJT05TKSkpCisgICAgICAgIElOU1RBTExfUFJPR1JBTSArPSAtcworZW5kaWYKKworCitjb25maWd1cmU6IGNvbmZpZ3VyZS1zdGFtcAorY29uZmlndXJlLXN0YW1wOgorCWRoX3Rlc3RkaXIKKworCUNGTEFHUz0iJChDRkxBR1MpIiAuL2NvbmZpZ3VyZSBcCisJCS0taG9zdD0kKERFQl9IT1NUX0dOVV9UWVBFKSBcCisJCS0tYnVpbGQ9JChERUJfQlVJTERfR05VX1RZUEUpIFwKKwkJLS1wcmVmaXg9L3VzciBcCisJCS0tZGlzYWJsZS1ycGF0aC1saW5rIFwKKwkJLS13aXRoLXNoYXJlZCBcCisJCS0td2l0aC1hZGEtc2hhcmVkbGliIFwKKwkJLS13aXRob3V0LXBrZy1jb25maWcKKworCXRvdWNoIGNvbmZpZ3VyZS1zdGFtcAorCitidWlsZDogYnVpbGQtc3RhbXAKK2J1aWxkLXN0YW1wOiBjb25maWd1cmUtc3RhbXAKKwlkaF90ZXN0ZGlyCisKKwkkKE1BS0UpCisKKwl0b3VjaCBidWlsZC1zdGFtcAorCitjbGVhbjoKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKworCVsgISAtZiBtYWtlZmlsZSBdIHx8ICQoTUFLRSkgZGlzdGNsZWFuCisKKwlybSAtZiBjb25maWd1cmUtc3RhbXAgYnVpbGQtc3RhbXAgaW5zdGFsbC1zdGFtcAorCisJZGhfY2xlYW4KKworaW5zdGFsbDogaW5zdGFsbC1zdGFtcAoraW5zdGFsbC1zdGFtcDogYnVpbGQtc3RhbXAKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9jbGVhbiAtaworCWRoX2luc3RhbGxkaXJzCisKKwkkKE1BS0UpIGluc3RhbGwgREVTVERJUj0kKFRBUkdFVF9ESVIpCisJCisJIyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byBtYWtlIHRoZXNlIGludG8gc2VwYXJhdGUgcGFja2FnZXMKKwkoIGNkIHNhbXBsZXMgJiYgJChNQUtFKSBpbnN0YWxsLmV4YW1wbGVzIERFU1RESVI9JChUQVJHRVRfRElSKSBCSU5ESVI9JChTQU1QTEVfRElSKSApCisJKCBjZCBkb2MgJiYgJChNQUtFKSBpbnN0YWxsLmh0bWwgREVTVERJUj0kKFRBUkdFVF9ESVIpICkKKworCXRvdWNoIGluc3RhbGwtc3RhbXAKKworIyBCdWlsZCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaGVyZS4KK2JpbmFyeS1pbmRlcDogYnVpbGQgaW5zdGFsbAorIyBObyBiaW5hcnktaW5kZXAgdGFyZ2V0LgorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgZmlsZXMgaGVyZS4KK2JpbmFyeS1hcmNoOiBidWlsZCBpbnN0YWxsCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGRvY3MKKwlkaF9pbnN0YWxsZXhhbXBsZXMKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyBORVdTCisJZGhfc3RyaXAKKwlkaF9jb21wcmVzcworCWRoX2ZpeHBlcm1zCisJZGhfaW5zdGFsbGRlYgorCWRoX21ha2VzaGxpYnMKKwlkaF9zaGxpYmRlcHMKKwlkaF9nZW5jb250cm9sCisJZGhfbWQ1c3VtcworCWRoX2J1aWxkZGViCisKK2JpbmFyeTogYmluYXJ5LWluZGVwIGJpbmFyeS1hcmNoCisuUEhPTlk6IGJ1aWxkIGNsZWFuIGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaCBiaW5hcnkgaW5zdGFsbCBpbnN0YWxsLXN0YW1wCmRpZmYgLS1naXQgYS9BZGE5NS9wYWNrYWdlL2RlYmlhbi9zb3VyY2UvZm9ybWF0IGIvQWRhOTUvcGFja2FnZS9kZWJpYW4vc291cmNlL2Zvcm1hdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWFlOWRiCi0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvcGFja2FnZS9kZWJpYW4vc291cmNlL2Zvcm1hdApAQCAtMCwwICsxIEBACiszLjAgKG5hdGl2ZSkKZGlmZiAtLWdpdCBhL0FkYTk1L3BhY2thZ2UvZGViaWFuL3dhdGNoIGIvQWRhOTUvcGFja2FnZS9kZWJpYW4vd2F0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5NGFlMwotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3BhY2thZ2UvZGViaWFuL3dhdGNoCkBAIC0wLDAgKzEsNCBAQAordmVyc2lvbj0zCisKK29wdHM9cGFzc2l2ZSBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9BZGFDdXJzZXMvQWRhQ3Vyc2VzLShbXGQuXSspXC50Z3ogXAorIGRlYmlhbiAgdXVwZGF0ZQpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9NYWtlZmlsZS5pbiBiL0FkYTk1L3NhbXBsZXMvTWFrZWZpbGUuaW4KaW5kZXggNWVlNzhkZi4uNWI0MDAyNyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9NYWtlZmlsZS5pbgorKysgYi9BZGE5NS9zYW1wbGVzL01ha2VmaWxlLmluCkBAIC0xLDUgKzEsNSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjgsMTggKzI4LDIyIEBACiAjCiAjICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKICMKLSMgICRJZDogTWFrZWZpbGUuaW4sdiAxLjM0IDIwMDYvMTIvMTcgMTY6NDU6MDIgdG9tIEV4cCAkCisjICAkSWQ6IE1ha2VmaWxlLmluLHYgMS40OSAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIwogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCi14CQk9IEBQUk9HX0VYVEAKK3gJCT0gQEVYRUVYVEAKIAogc3JjZGlyCQk9IEBzcmNkaXJACiBwcmVmaXgJCT0gQHByZWZpeEAKIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAorYmluZGlyCQk9IEBiaW5kaXJACitkYXRhcm9vdGRpcgk9IEBkYXRhcm9vdGRpckAKK2RhdGFkaXIJCT0gQGRhdGFkaXJACiBsaWJkaXIJCT0gQGxpYmRpckAKIGluY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKIApAQCAtNzMsNiArNzcsMTMgQEAKIAogUkFOTElCCQk9IEBSQU5MSUJACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQklORElSCQk9ICQoREVTVERJUikkKGJpbmRpcikKK0RBVEFESVIJCT0gJChERVNURElSKSQoZGF0YWRpcikKK0xJQkRJUgkJPSAkKERFU1RESVIpJChsaWJkaXIpCisKK01ZX0RBVEFESVIJPSAkKERBVEFESVIpL0FkYUN1cnNlcworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogYWRhX3NyY2Rpcj0uLi9zcmMKIAogTERfRkxBR1MgICAgID0gQExEX01PREVMQCAkKExPQ0FMX0xJQlMpIEBMREZMQUdTQCBATElCU0AgQExPQ0FMX0xERkxBR1MyQCAkKExERkxBR1MpCkBAIC04NywzMyArOTgsMTEgQEAKIEFCQVNFICAgICAgICA9ICQoQUxJQiktY3Vyc2VzCiAKIENBUkdTICAgICAgICA9LWNhcmdzICQoQURBRkxBR1MpCi1MQVJHUyAgICAgICAgPS1sYXJncyBAVEVTVF9BUkcyQCAkKExEX0ZMQUdTKSAtbEFkYUN1cnNlcwotIAotUFJPR1MgICAgICAgID0gdG91ciByYWluIG5jdXJzZXMgCitMQVJHUyAgICAgICAgPS1sYXJncyAtTC4uL2xpYiAtbEFkYUN1cnNlcyBAVEVTVF9BUkcyQCAkKExEX0ZMQUdTKSBAVEVTVF9MSUJTMkAKIAotVE9VUl9PQkpTICAgID0JdG91ci5vIHNhbXBsZS5vIHNhbXBsZS1jdXJzZXNfZGVtby5vIHNhbXBsZS1leHBsYW5hdGlvbi5vIAlcCi0JCXNhbXBsZS1mb3JtX2RlbW8ubyBzYW1wbGUtZnVuY3Rpb25fa2V5X3NldHRpbmcubyAJCVwKLQkJc2FtcGxlLWhlYWRlcl9oYW5kbGVyLm8gc2FtcGxlLWhlbHBlcnMubyAJCQlcCi0JCXNhbXBsZS1rZXlib2FyZF9oYW5kbGVyLm8gc2FtcGxlLW1hbmlmZXN0Lm8gc2FtcGxlLW1lbnVfZGVtby5vCVwKLQkJc2FtcGxlLW1lbnVfZGVtby1hdXgubyBzYW1wbGUtdGV4dF9pb19kZW1vLm8JCQlcCi0JCXNhbXBsZS1jdXJzZXNfZGVtby1hdHRyaWJ1dGVzLm8gc2FtcGxlLWN1cnNlc19kZW1vLW1vdXNlLm8JXAotCQlzYW1wbGUtZm9ybV9kZW1vLWF1eC5vIHNhbXBsZS1teV9maWVsZF90eXBlLm8KK1BST0dTICAgICAgICA9IHRvdXIkeCBuY3Vyc2VzJHggQFVTRV9HTkFUX1NJR0lOVEAgcmFpbiR4IAogCi1SQUlOX09CSlMgICAgPQlyYWluLm8gc3RhdHVzLm8KLQotTkNVUlNFU19PQkpTID0gbmN1cnNlcy5vICAgICAgICAJbmN1cnNlczItZ2V0Y2hfdGVzdC5vIFwKLQluY3Vyc2VzMi1hY3NfYW5kX3Njcm9sbC5vICAgICAgIG5jdXJzZXMyLW0ubyBcCi0JbmN1cnNlczItYWNzX2Rpc3BsYXkubyAgICAgICAgICBuY3Vyc2VzMi1tZW51X3Rlc3QubyBcCi0JbmN1cnNlczItYXR0cl90ZXN0Lm8gICAgICAgICAgICBuY3Vyc2VzMi1vdmVybGFwX3Rlc3QubyBcCi0JbmN1cnNlczItY29sb3JfZWRpdC5vICAgICAgICAgICBuY3Vyc2VzMi1zbGtfdGVzdC5vIFwKLQluY3Vyc2VzMi1jb2xvcl90ZXN0Lm8gICAgICAgICAgIG5jdXJzZXMyLXRlc3Rfc2dyX2F0dHJpYnV0ZXMubyBcCi0JbmN1cnNlczItZGVtb19mb3Jtcy5vICAgICAgICAgICBuY3Vyc2VzMi10cmFjZV9zZXQubyBcCi0JbmN1cnNlczItZGVtb19wYWQubyAgICAgICAgICAgICBuY3Vyc2VzMi11dGlsLm8gXAotCW5jdXJzZXMyLWRlbW9fcGFuZWxzLm8gICAgICAgICAgbmN1cnNlczIubyBcCi0JbmN1cnNlczItZmx1c2hpbnBfdGVzdC5vCi0KLQotYWxsIDo6ICB0b3VyJHggcmFpbiR4IG5jdXJzZXMkeAorYWxsIDo6ICAkKFBST0dTKQogCUBlY2hvIG1hZGUgJEAKIAogc291cmNlcyA6CkBAIC0xMjgsMTUgKzExNywyOCBAQAogdW5pbnN0YWxsLmxpYnMgOjoKIAlAZWNobyBtYWRlICRACiAKK2luc3RhbGwuZXhhbXBsZXMgOjogJChCSU5ESVIpICQoUFJPR1MpCisJJChJTlNUQUxMKSAkKFBST0dTKSAkKEJJTkRJUikKKworaW5zdGFsbC5leGFtcGxlcyA6OiAkKE1ZX0RBVEFESVIpCisJJChJTlNUQUxMX0RBVEEpIGV4cGxhaW4udHh0ICQoTVlfREFUQURJUikKKwordW5pbnN0YWxsLmV4YW1wbGVzIDo6CisJLWNkICQoQklORElSKSAmJiBybSAtZiAkKFBST0dTKQorCS1ybWRpciAkKEJJTkRJUikKKwktcm0gLWYgJChNWV9EQVRBRElSKS9leHBsYWluLnR4dAorCS1ybWRpciAkKE1ZX0RBVEFESVIpCisKKyQoQklORElSKSBcCiskKE1ZX0RBVEFESVIpIDoKKwlta2RpciAtcCAkQAorCiBuY3Vyc2VzJHggOgogCSQoQURBTUFLRSkgJChBREFNQUtFRkxBR1MpIG5jdXJzZXMgJChDQVJHUykgJChMQVJHUykKIAotdG91ciR4IDoJZXhwbGFpbi5tc2cKK3RvdXIkeCA6CiAJJChBREFNQUtFKSAkKEFEQU1BS0VGTEFHUykgdG91ciAkKENBUkdTKSAkKExBUkdTKQogCi1leHBsYWluLm1zZzoJJChzcmNkaXIpL2V4cGxhaW4udHh0Ci0JY3AgJChzcmNkaXIpL2V4cGxhaW4udHh0ICRACi0KIHJhaW4keCA6CiAJJChBREFNQUtFKSAkKEFEQU1BS0VGTEFHUykgcmFpbiAkKENBUkdTKSAkKExBUkdTKQogCkBAIC0xNDUsNyArMTQ3LDcgQEAKIAogY2xlYW4gOjogbW9zdGx5Y2xlYW4KIAlybSAtZiAqLm8gKi5hbGkgYl90Ki4qICoucyAkKFBST0dTKSBhLm91dCBjb3JlIGJfKl90ZXN0LmMgKi54cltic10gXAotCWV4cGxhaW4ubXNnIHRyYWNlIHNjcmVlbmR1bXAgCisJdHJhY2Ugc2NyZWVuZHVtcCBifiouYWRbYnNdCiAKIGRpc3RjbGVhbiA6OiBjbGVhbgogCXJtIC1mIE1ha2VmaWxlCmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL2V4cGxhaW4udHh0IGIvQWRhOTUvc2FtcGxlcy9leHBsYWluLnR4dAppbmRleCA1NzBmNjE3Li5iZTJjYmExIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL2V4cGxhaW4udHh0CisrKyBiL0FkYTk1L3NhbXBsZXMvZXhwbGFpbi50eHQKQEAgLTU0LDEzICs1NCwxMyBAQAogI0hFTFAKICNIRUxQS0VZUwogWW91IG1heSBzY3JvbGwgd2l0aCB0aGUgQ3Vyc29yIFVwL0Rvd24gS2V5cy4KLVlvdSBtYXkgbGVhdmUgdGhlIGhlbHAgd2l0aCB0aGUgRnVuY3Rpb24gS2V5IGxhYmVsbGVkICdRdWl0Jy4KK1lvdSBtYXkgbGVhdmUgdGhlIGhlbHAgd2l0aCB0aGUgRnVuY3Rpb24gS2V5IGxhYmVsZWQgJ1F1aXQnLgogI0lOSEVMUAogWW91IGFyZSBhbHJlYWR5IGluIHRoZSBoZWxwIHN5c3RlbS4KLVlvdSBtYXkgbGVhdmUgdGhlIGhlbHAgd2l0aCB0aGUgRnVuY3Rpb24gS2V5IGxhYmVsbGVkICdRdWl0Jy4KK1lvdSBtYXkgbGVhdmUgdGhlIGhlbHAgd2l0aCB0aGUgRnVuY3Rpb24gS2V5IGxhYmVsZWQgJ1F1aXQnLgogI01BSU4KIFRoaXMgaXMgdGhlIG1haW4gbWVudSBvZiB0aGUgc2FtcGxlIHByb2dyYW0gZm9yIHRoZSBuY3Vyc2VzIEFkYTk1Ci1iaW5kaW5nLiBUaGUgbWFpbiBpbnRlbnRpb24gb2YgdGhlIGRlbW8gaXMgbm90IHRvIGRlbW9uc3RhdGUgb3IKK2JpbmRpbmcuIFRoZSBtYWluIGludGVudGlvbiBvZiB0aGUgZGVtbyBpcyBub3QgdG8gZGVtb25zdHJhdGUgb3IKIHRlc3QgYWxsIHRoZSBmZWF0dXJlcyBvZiBuY3Vyc2VzIGFuZCBpdCdzIHN1YnN5c3RlbXMsIGJ1dCB0byBwcm92aWRlCiB0byB5b3Ugc29tZSBzYW1wbGUgY29kZSBob3cgdG8gdXNlIHRoZSBiaW5kaW5nIHdpdGggQWRhOTUuIAogCkBAIC04NiwyMyArODYsMjMgQEAKIHRoZSBpdGVtIG5hbWUgYW5kIHRoZSBkZXNjcmlwdGlvbi4KICNNRU5VMDEKIFRoaXMgaXMgYSBkZW1vIG9mIHRoZSBzb21lIG9mIHRoZSBtZW51IGxheW91dCBvcHRpb25zLiBPbmUgb2YgdGhlbQotaXMgdGhlIHNwYWNpbmcgZnVuY3Rpb25hbGl0eS4gSnVzdCBwcmVzcyB0aGUgS2V5IGxhYmVsbGVkICJGbGlwIiB0byAKK2lzIHRoZSBzcGFjaW5nIGZ1bmN0aW9uYWxpdHkuIEp1c3QgcHJlc3MgdGhlIEtleSBsYWJlbGVkICJGbGlwIiB0byAKIGZsaXAgYmV0d2VlbiB0aGUgbm9uLXNwYWNlZCBhbmQgYSBzcGFjZWQgdmVyc2lvbiBvZiB0aGUgbWVudS4gUGxlYXNlCiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuaXF1ZSBmb3IgbmN1cnNlcyBhbmQgaXMgbm90IGZvdW5kIAogaW4gdGhlIFNWcjQgbWVudSBpbXBsZW1lbnRhdGlvbi4gCiAKLVRoaXMgaXMgYSBtZW51IHRoYXQgc29tZXRpbWVzIGRvZXNuJ3QgZml0IGludG8gaXQncyB3aW5kb3cgYW5kIAorVGhpcyBpcyBhIG1lbnUgdGhhdCBzb21ldGltZXMgZG9lcyBub3QgZml0IGludG8gaXQncyB3aW5kb3cgYW5kIAogdGhlcmVmb3JlIGl0IGJlY29tZXMgYSBzY3JvbGwgbWVudS4gCiAKIFlvdSBjYW4gYWxzbyBzZWUgaGVyZSB2ZXJ5IG5pY2VseSB0aGUgcGF0dGVybiBtYXRjaGluZyBmdW5jdGlvbmFsaXR5CiBvZiBtZW51cy4gVHlwZSBmb3IgZXhhbXBsZSBhICdKJyBhbmQgeW91IHdpbGwgYmUgcG9zaXRpb25lZCB0byB0aGUKIG5leHQgaXRlbSBhZnRlciB0aGUgY3VycmVudCBzdGFydGluZyB3aXRoIGEgJ0onLiBBbnkgbW9yZSBjaGFyYWN0ZXJzCiB5b3UgdHlwZSBpbiBtYWtlIHRoZSBwYXR0ZXJuIG1vcmUgc3BlY2lmaWMuIFdpdGggQ1RSTC1BIGFuZCBDVFJMLVoKLShmb3IgbW9yZSBkZXRhaWxzIHByZXNzIHRoZSBLZXkgbGFiZWxsZWQgIktleXMiKSB5b3UgY2FuIGJyb3dzZQorKGZvciBtb3JlIGRldGFpbHMgcHJlc3MgdGhlIEtleSBsYWJlbGVkICJLZXlzIikgeW91IGNhbiBicm93c2UKIHRocm91Z2ggYWxsIHRoZSBpdGVtcyBtYXRjaGluZyB0aGUgcGF0dGVybi4KIAogWW91IG1heSBjaGFuZ2UgdGhlIGZvcm1hdCBvZiB0aGUgbWVudS4gSnVzdCBwcmVzcyBvbmUgb2YgdGhlIGtleXMKLWxhYmVsbGVkICI0eDEiLCAiNHgyIiBvciAiNHgzIiB0byBnZXQgYSBtZW51IHdpdGggdGhhdCBtYW55IHJvd3MKK2xhYmVsZWQgIjR4MSIsICI0eDIiIG9yICI0eDMiIHRvIGdldCBhIG1lbnUgd2l0aCB0aGF0IG1hbnkgcm93cwogYW5kIGNvbHVtbnMuCiAKIFdpdGggdGhlIEtleXMgIk8tUm93IiBvciAiTy1Db2wiICh0aGV5IG9jY3VweSB0aGUgc2FtZSBsYWJlbCBhbmQKQEAgLTEyMSw3ICsxMjEsNyBAQAogc3dpdGNoIG9uIHNlbGVjdGlvbikgeW91IGNhbiBjaGFuZ2Ugd2hldGhlciBvciBub3QgdGhlIGRlc2NyaXB0aW9ucwogZm9yIGVhY2ggaXRlbSBzaG91bGQgYmUgZGlzcGxheWVkLiBQbGVhc2Ugbm90IHRoYXQgdGhpcyBrZXkgaXMKIG5vdCB2aXNpYmxlIGluIHRoZSAiNHgzIiBsYXlvdXQgbW9kZSwgYmVjYXVzZSBpbiB0aGlzIGNhc2UgdGhlCi1tZW51IHdvdWxkbid0IGZpdCBvbiBhIHR5cGljYWxsIDgweDI0IHNjcmVlbi4KK21lbnUgd291bGQgbm90IGZpdCBvbiBhIHR5cGljYWwgODB4MjQgc2NyZWVuLgogCiBXaXRoIHRoZSBLZXlzICJEaXNhYiIgb3IgIkVuYWIiICh0aGV5IG9jY3VweSB0aGUgc2FtZSBsYWJlbCBhbmQKIHN3aXRjaCBvbiBzZWxlY3Rpb24pIHlvdSBjYW4gZGlzLSBvciBlbmFibGUgdGhlIHNlbGVjdGFiaWxpdHkgb2YKQEAgLTEzMSwxMyArMTMxLDEzIEBACiBUaGUgS2V5cyAiNHgxIiwgIjR4MiIgYW5kICI0eDMiIHdpbGwgY2hhbmdlIHRoZSBmb3JtYXQgb2YgdGhlIG1lbnUuCiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaXMgYSBzY3JvbGxpbmcgbWVudS4gWW91IG1heSBhbHNvIHBsYXkgd2l0aCB0aGUKIHBhdHRlcm4gbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSBvciB0cnkgdG8gY2hhbmdlIHRoZSBmb3JtYXQgb2YgdGhlIG1lbnUuCi1Gb3IgbW9yZSBkZXRhaWxzIHByZXNzIHRoZSBLZXkgbGFiZWxsZWQgIkhlbHAiLgorRm9yIG1vcmUgZGV0YWlscyBwcmVzcyB0aGUgS2V5IGxhYmVsZWQgIkhlbHAiLgogI0ZPUk0wMAogVGhpcyBpcyBhIGRlbW8gb2YgdGhlIGZvcm1zIHBhY2thZ2UuCiAjRk9STS1QQUQwMAogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGRlbW8gaXMgZmFyIGZyb20gYmVpbmcgY29tcGxldGUuIEl0IHJlYWxseSBzaG93cwogb25seSBhIHNtYWxsIHBhcnQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZvcm1zIHBhY2thZ2UuIExldCdzIGhvcGUgCi10aGUgbmV4dCB2ZXJzaW9uIHdpbGwgaGF2ZSBhIHJpY2hlciBkZW1vIChZb3Ugd2FuJ3QgdG8gY29udHJpYnV0ZSA/KS4KK3RoZSBuZXh0IHZlcnNpb24gd2lsbCBoYXZlIGEgcmljaGVyIGRlbW8gKFlvdSB3YW50IHRvIGNvbnRyaWJ1dGUgPykuCiAjTk9USU1QTAogU29ycnkgdGhpcyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkZW1vIGlzIG5vdCBpbXBsZW1lbnRlZCBhdCB0aGUgbW9tZW50LgogUmVtZW1iZXIgdGhpcyBpcyBhIGZyZWV3YXJlIHByb2plY3QsIHNvIEkgY2FuIHVzZSBvbmx5IG15IHZlcnkgcmFyZQpAQCAtMTQ5LDEzICsxNDksMTMgQEAKICNDVVJTRVMtUEFEMDAKIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBkZW1vIGlzIGZhciBmcm9tIGJlaW5nIGNvbXBsZXRlLiBJdCByZWFsbHkgc2hvd3MKIG9ubHkgYSBzbWFsbCBwYXJ0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBjdXJzZXMgcGFja2FnZS4gTGV0J3MgaG9wZSAKLXRoZSBuZXh0IHZlcnNpb24gd2lsbCBoYXZlIGEgcmljaGVyIGRlbW8gKFlvdSB3YW4ndCB0byBjb250cmlidXRlID8pLgordGhlIG5leHQgdmVyc2lvbiB3aWxsIGhhdmUgYSByaWNoZXIgZGVtbyAoWW91IHdhbnQgdG8gY29udHJpYnV0ZSA/KS4KICNNT1VTRUtFWVMKIEluIHRoaXMgZGVtbyB5b3UgbWF5IHVzZSB0aGlzIGtleXM6CiAKLSAgIC0gS2V5IGxhYmVsbGVkICJIZWxwIiAgdG8gZ2V0IGEgaGVscAotICAgLSBLZXkgbGFiZWxsZWQgIktleXMiICBpcyB3aGF0IHlvdSBhcmUgcmVhZGluZyBub3cKLSAgIC0gS2V5IGxhYmVsbGVkICJRdWl0IiAgdG8gbGVhdmUgdGhlIGRlbW8KKyAgIC0gS2V5IGxhYmVsZWQgIkhlbHAiICB0byBnZXQgYSBoZWxwCisgICAtIEtleSBsYWJlbGVkICJLZXlzIiAgaXMgd2hhdCB5b3UgYXJlIHJlYWRpbmcgbm93CisgICAtIEtleSBsYWJlbGVkICJRdWl0IiAgdG8gbGVhdmUgdGhlIGRlbW8KIAogWW91IG1heSBjbGljayB0aGUgbW91c2UgYnV0dG9ucyBhdCBhbnkgbG9jYXRpb24gYXQgdGhlIHNjcmVlbiBhbmQgbG9vawogYXQgdGhlIHByb3RvY29sIHdpbmRvdyAhCkBAIC0xNzksNyArMTc5LDcgQEAKIFlvdSBtYXkgcHJlc3Mgb25lIG9mIHRoZSB0aHJlZSB3ZWxsIGtub3duIHN0YW5kYXJkIGtleXMgb2YgdGhpcyBkZW1vLgogI0FUVFJJQi1QQUQwMAogQWdhaW4gdGhpcyBpcyBhIG1vcmUgdGhhbiBzaW1wbGUgZGVtbyBhbmQganVzdCBoZXJlIHRvIGdpdmUgeW91IHRoZQotc291cmNlY29kZS4gRmVlbCBmcmVlIHRvIGNvbnRyaWJ1dGUgbW9yZS4KK3NvdXJjZSBjb2RlLiBGZWVsIGZyZWUgdG8gY29udHJpYnV0ZSBtb3JlLgogI1RFWFRJTwogI1RFWFRJT0tFWVMKICNURVhUSU8tUEFEMDAKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItYWNzX2FuZF9zY3JvbGwuYWRiIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1hY3NfYW5kX3Njcm9sbC5hZGIKaW5kZXggMDdiMmQ5MS4uMDBlOWFmYyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1hY3NfYW5kX3Njcm9sbC5hZGIKKysrIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1hY3NfYW5kX3Njcm9sbC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiBFdWdlbmUgVi4gTWVsYXJhZ25vIDxhbGRvbWVsQGl4Lm5ldGNvbS5jb20+IDIwMDAKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuOCAkCi0tLSAgJERhdGU6IDIwMDgvMDcvMjYgMTg6NDc6NDIgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJERhdGU6IDIwMTEvMDMvMjMgMDA6MzM6MDAgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgV2luZG93cyBhbmQgc2Nyb2xsaW5nIHRlc3Rlci4KQEAgLTkzLDggKzkzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZHggIDogQ29sdW1uX1Bvc2l0aW9uKTsKICAgIGZ1bmN0aW9uIGRlbGV0ZV9mcmFtZWQgKGZwIDogRnJhbWVBOyBzaG93aXQgOiBCb29sZWFuKSByZXR1cm4gRnJhbWVBOwogCi0gICB1c2UgQWRhLlN0cmVhbXMuU3RyZWFtX0lPOwotCiAgICAtLSAgQSBsaW5rZWQgbGlzdAogICAgLS0gIEkgIHdpc2ggdGhlcmUgd2FzIGEgc3RhbmRhcmQgbGlicmFyeSBsaW5rZWQgbGlzdC4gT2ggd2VsbC4KICAgIHR5cGUgRnJhbWUgaXMgcmVjb3JkCkBAIC0yODUsMTEgKzI4MywxMSBAQAogICAgICAgZWxzZQogICAgICAgICAgQWRkIChTdHIgPT4gIkFsbCBvdGhlciIpOwogICAgICAgZW5kIGlmOwotICAgICAgQWRkIChzdHIgPT4gIiBjaGFyYWN0ZXJzIGFyZSBlY2hvZWQsIHdpbmRvdyBzaG91bGQgIik7CisgICAgICBBZGQgKFN0ciA9PiAiIGNoYXJhY3RlcnMgYXJlIGVjaG9lZCwgd2luZG93IHNob3VsZCAiKTsKICAgICAgIGlmIG5vdCBIYXZlU2Nyb2xsIChjdXJwdykgdGhlbgogICAgICAgICAgQWRkIChTdHIgPT4gIm5vdCAiKTsKICAgICAgIGVuZCBpZjsKLSAgICAgIEFkZCAoc3RyID0+ICJzY3JvbGwiKTsKKyAgICAgIEFkZCAoU3RyID0+ICJzY3JvbGwiKTsKIAogICAgICAgQ2xlYXJfVG9fRW5kX09mX0xpbmU7CiAgICBlbmQgdHJhbnNpZW50OwpAQCAtMzQ3LDcgKzM0NSw3IEBACiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3aGVuIEtFWV9VUCA9PgogICAgICAgICAgICAgICAgaSA6PSBpICsgc2kgLSAxOwotICAgICAgICAgICAgICAgLS0gIHNhbWUgYXMgIGkgOj0gaSAtIDEgYmVjYXVzZSBvZiBNb2R1bHVzIGFyaXRoZXRpYywKKyAgICAgICAgICAgICAgIC0tICBzYW1lIGFzICBpIDo9IGkgLSAxIGJlY2F1c2Ugb2YgTW9kdWx1cyBhcml0aG1ldGljLAogICAgICAgICAgICAgICAgLS0gIG9uIExpbmVfUG9zaXRpb24sIHdoaWNoIGlzIGEgTmF0dXJhbAogICAgICAgICAgICAgICAgLS0gIHRoZSBDIHZlcnNpb24gdXNlcyB0aGlzIGZvcm0gdG9vLCBpbnRlcmVzdGluZ2x5LgogICAgICAgICAgICAgd2hlbiBLRVlfRE9XTiA9PgpAQCAtNDU0LDE5ICs0NTIsMTkgQEAKICAgIGZ1bmN0aW9uIGRlbGV0ZV9mcmFtZWQgKGZwIDogRnJhbWVBOyBzaG93aXQgOiBCb29sZWFuKSByZXR1cm4gRnJhbWVBIGlzCiAgICAgICBucCA6IEZyYW1lQTsKICAgIGJlZ2luCi0gICAgICBmcC5sYXN0Lm5leHQgOj0gZnAubmV4dDsKLSAgICAgIGZwLm5leHQubGFzdCA6PSBmcC5sYXN0OworICAgICAgZnAuYWxsLmxhc3QuYWxsLm5leHQgOj0gZnAuYWxsLm5leHQ7CisgICAgICBmcC5hbGwubmV4dC5hbGwubGFzdCA6PSBmcC5hbGwubGFzdDsKIAogICAgICAgaWYgc2hvd2l0IHRoZW4KLSAgICAgICAgIEVyYXNlIChmcC53aW5kKTsKLSAgICAgICAgIFJlZnJlc2ggKGZwLndpbmQpOworICAgICAgICAgRXJhc2UgKGZwLmFsbC53aW5kKTsKKyAgICAgICAgIFJlZnJlc2ggKGZwLmFsbC53aW5kKTsKICAgICAgIGVuZCBpZjsKLSAgICAgIERlbGV0ZSAoZnAud2luZCk7CisgICAgICBEZWxldGUgKGZwLmFsbC53aW5kKTsKIAotICAgICAgaWYgZnAgPSBmcC5uZXh0IHRoZW4KKyAgICAgIGlmIGZwID0gZnAuYWxsLm5leHQgdGhlbgogICAgICAgICAgbnAgOj0gbnVsbDsKICAgICAgIGVsc2UKLSAgICAgICAgIG5wIDo9IGZwLm5leHQ7CisgICAgICAgICBucCA6PSBmcC5hbGwubmV4dDsKICAgICAgIGVuZCBpZjsKICAgICAgIC0tICBUT0RPIGZyZWUoZnApOwogICAgICAgcmV0dXJuIG5wOwpAQCAtNDk2LDY0ICs0OTQsNjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbF9XaW5kb3cpOwogICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgIG5ld3cud2luZCA6PSBnZXR3aW5kb3c7Ci0gICAgICAgICAgICAgICBpZiBuZXd3LndpbmQgPSBOdWxsX1dpbmRvdyAgdGhlbgorICAgICAgICAgICAgICAgbmV3dy5hbGwud2luZCA6PSBnZXR3aW5kb3c7CisgICAgICAgICAgICAgICBpZiBuZXd3LmFsbC53aW5kID0gTnVsbF9XaW5kb3cgIHRoZW4KICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICAgICAtLSAgd2FzIGdvdG8gYnJlYWtvdXQ7IGhhIGhhIGhhCiAgICAgICAgICAgICAgICBlbHNlCiAKICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQgPSBudWxsICB0aGVuCi0gICAgICAgICAgICAgICAgICAgICBuZXd3Lm5leHQgOj0gbmV3dzsKLSAgICAgICAgICAgICAgICAgICAgIG5ld3cubGFzdCA6PSBuZXd3OworICAgICAgICAgICAgICAgICAgICAgbmV3dy5hbGwubmV4dCA6PSBuZXd3OworICAgICAgICAgICAgICAgICAgICAgbmV3dy5hbGwubGFzdCA6PSBuZXd3OwogICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgbmV3dy5uZXh0IDo9IGN1cnJlbnQubmV4dDsKLSAgICAgICAgICAgICAgICAgICAgIG5ld3cubGFzdCA6PSBjdXJyZW50OwotICAgICAgICAgICAgICAgICAgICAgbmV3dy5sYXN0Lm5leHQgOj0gbmV3dzsKLSAgICAgICAgICAgICAgICAgICAgIG5ld3cubmV4dC5sYXN0IDo9IG5ld3c7CisgICAgICAgICAgICAgICAgICAgICBuZXd3LmFsbC5uZXh0IDo9IGN1cnJlbnQuYWxsLm5leHQ7CisgICAgICAgICAgICAgICAgICAgICBuZXd3LmFsbC5sYXN0IDo9IGN1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICBuZXd3LmFsbC5sYXN0LmFsbC5uZXh0IDo9IG5ld3c7CisgICAgICAgICAgICAgICAgICAgICBuZXd3LmFsbC5uZXh0LmFsbC5sYXN0IDo9IG5ld3c7CiAgICAgICAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICAgICAgICAgICBjdXJyZW50IDo9IG5ld3c7CiAKLSAgICAgICAgICAgICAgICAgIFNldF9LZXlQYWRfTW9kZSAoY3VycmVudC53aW5kLCBUcnVlKTsKLSAgICAgICAgICAgICAgICAgIGN1cnJlbnQuZG9fa2V5cGFkIDo9IEhhdmVLZXlQYWQgKGN1cnJlbnQud2luZCk7Ci0gICAgICAgICAgICAgICAgICBjdXJyZW50LmRvX3Njcm9sbCA6PSBIYXZlU2Nyb2xsIChjdXJyZW50LndpbmQpOworICAgICAgICAgICAgICAgICAgU2V0X0tleVBhZF9Nb2RlIChjdXJyZW50LmFsbC53aW5kLCBUcnVlKTsKKyAgICAgICAgICAgICAgICAgIGN1cnJlbnQuYWxsLmRvX2tleXBhZCA6PSBIYXZlS2V5UGFkIChjdXJyZW50LmFsbC53aW5kKTsKKyAgICAgICAgICAgICAgICAgIGN1cnJlbnQuYWxsLmRvX3Njcm9sbCA6PSBIYXZlU2Nyb2xsIChjdXJyZW50LmFsbC53aW5kKTsKICAgICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgICAgIGVuZDsKICAgICAgICAgIHdoZW4gQ2hhcmFjdGVyJ1BvcyAoJ04nKSBtb2QgMTYjMjAjICA9PiAtLSAgQ3RybCgnTicpCiAgICAgICAgICAgICBpZiBjdXJyZW50IC89IG51bGwgdGhlbgotICAgICAgICAgICAgICAgY3VycmVudCA6PSBjdXJyZW50Lm5leHQ7CisgICAgICAgICAgICAgICBjdXJyZW50IDo9IGN1cnJlbnQuYWxsLm5leHQ7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICB3aGVuIENoYXJhY3RlcidQb3MgKCdQJykgbW9kIDE2IzIwIyAgPT4gLS0gIEN0cmwoJ1AnKQogICAgICAgICAgICAgaWYgY3VycmVudCAvPSBudWxsIHRoZW4KLSAgICAgICAgICAgICAgIGN1cnJlbnQgOj0gY3VycmVudC5sYXN0OworICAgICAgICAgICAgICAgY3VycmVudCA6PSBjdXJyZW50LmFsbC5sYXN0OwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgd2hlbiBDaGFyYWN0ZXInUG9zICgnRicpIG1vZCAxNiMyMCMgID0+IC0tICBDdHJsKCdGJykKLSAgICAgICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCBhbmQgdGhlbiBIYXZlU2Nyb2xsIChjdXJyZW50LndpbmQpIHRoZW4KLSAgICAgICAgICAgICAgIFNjcm9sbCAoY3VycmVudC53aW5kLCAxKTsKKyAgICAgICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCBhbmQgdGhlbiBIYXZlU2Nyb2xsIChjdXJyZW50LmFsbC53aW5kKSB0aGVuCisgICAgICAgICAgICAgICBTY3JvbGwgKGN1cnJlbnQuYWxsLndpbmQsIDEpOwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgd2hlbiBDaGFyYWN0ZXInUG9zICgnQicpIG1vZCAxNiMyMCMgID0+IC0tICBDdHJsKCdCJykKLSAgICAgICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCBhbmQgdGhlbiBIYXZlU2Nyb2xsIChjdXJyZW50LndpbmQpIHRoZW4KKyAgICAgICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCBhbmQgdGhlbiBIYXZlU2Nyb2xsIChjdXJyZW50LmFsbC53aW5kKSB0aGVuCiAgICAgICAgICAgICAtLSAgVGhlIEMgdmVyc2lvbiBvZiBTY3JvbGwgbWF5IHJldHVybiBFUlIgd2hpY2ggaXMgaWdub3JlZAogICAgICAgICAgICAgLS0gIHdlIG5lZWQgdG8gYXZvaWQgdGhlIGV4Y2VwdGlvbgogICAgICAgICAgICAgLS0gIHdpdGggdGhlICdhbmQgSGF2ZVNjcm9sbChjdXJyZW50LndpbmQpJwotICAgICAgICAgICAgICAgU2Nyb2xsIChjdXJyZW50LndpbmQsIC0xKTsKKyAgICAgICAgICAgICAgIFNjcm9sbCAoY3VycmVudC5hbGwud2luZCwgLTEpOwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgd2hlbiBDaGFyYWN0ZXInUG9zICgnSycpIG1vZCAxNiMyMCMgID0+IC0tICBDdHJsKCdLJykKICAgICAgICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCB0aGVuCi0gICAgICAgICAgICAgICBjdXJyZW50LmRvX2tleXBhZCA6PSBub3QgY3VycmVudC5kb19rZXlwYWQ7Ci0gICAgICAgICAgICAgICBTZXRfS2V5UGFkX01vZGUgKGN1cnJlbnQud2luZCwgY3VycmVudC5kb19rZXlwYWQpOworICAgICAgICAgICAgICAgY3VycmVudC5hbGwuZG9fa2V5cGFkIDo9IG5vdCBjdXJyZW50LmFsbC5kb19rZXlwYWQ7CisgICAgICAgICAgICAgICBTZXRfS2V5UGFkX01vZGUgKGN1cnJlbnQuYWxsLndpbmQsIGN1cnJlbnQuYWxsLmRvX2tleXBhZCk7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICB3aGVuIENoYXJhY3RlcidQb3MgKCdTJykgbW9kIDE2IzIwIyAgPT4gLS0gIEN0cmwoJ1MnKQogICAgICAgICAgICAgaWYgY3VycmVudCAvPSBudWxsIHRoZW4KLSAgICAgICAgICAgICAgIGN1cnJlbnQuZG9fc2Nyb2xsIDo9IG5vdCBjdXJyZW50LmRvX3Njcm9sbDsKLSAgICAgICAgICAgICAgIEFsbG93X1Njcm9sbGluZyAoY3VycmVudC53aW5kLCBjdXJyZW50LmRvX3Njcm9sbCk7CisgICAgICAgICAgICAgICBjdXJyZW50LmFsbC5kb19zY3JvbGwgOj0gbm90IGN1cnJlbnQuYWxsLmRvX3Njcm9sbDsKKyAgICAgICAgICAgICAgIEFsbG93X1Njcm9sbGluZyAoY3VycmVudC5hbGwud2luZCwgY3VycmVudC5hbGwuZG9fc2Nyb2xsKTsKICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgIHdoZW4gQ2hhcmFjdGVyJ1BvcyAoJ1cnKSBtb2QgMTYjMjAjICA9PiAtLSAgQ3RybCgnVycpCi0gICAgICAgICAgICBpZiBjdXJyZW50IC89IGN1cnJlbnQubmV4dCB0aGVuCisgICAgICAgICAgICBpZiBjdXJyZW50IC89IGN1cnJlbnQuYWxsLm5leHQgdGhlbgogICAgICAgICAgICAgICAgQ3JlYXRlIChmLCBOYW1lID0+IGR1bXBmaWxlKTsgLS0gVE9ETyBlcnJvciBjaGVja2luZwogICAgICAgICAgICAgICAgaWYgbm90IElzX09wZW4gKGYpIHRoZW4KICAgICAgICAgICAgICAgICAgIHJhaXNlIEN1cnNlc19FeGNlcHRpb247CiAgICAgICAgICAgICAgICBlbmQgaWY7Ci0gICAgICAgICAgICAgICBQdXRfV2luZG93IChjdXJyZW50LndpbmQsIGYpOworICAgICAgICAgICAgICAgUHV0X1dpbmRvdyAoY3VycmVudC5hbGwud2luZCwgZik7CiAgICAgICAgICAgICAgICBDbG9zZSAoZik7CiAgICAgICAgICAgICAgICBjdXJyZW50IDo9IGRlbGV0ZV9mcmFtZWQgKGN1cnJlbnQsIFRydWUpOwogICAgICAgICAgICAgZW5kIGlmOwpAQCAtNTY1LDE1ICs1NjMsMTUgQEAKICAgICAgICAgICAgICAgIE9wZW4gKGYsIE1vZGUgPT4gSW5fRmlsZSwgTmFtZSA9PiBkdW1wZmlsZSk7CiAgICAgICAgICAgICAgICBuZXd3IDo9IG5ldyBGcmFtZScobnVsbCwgbnVsbCwgRmFsc2UsIEZhbHNlLCBOdWxsX1dpbmRvdyk7CiAKLSAgICAgICAgICAgICAgIG5ld3cubmV4dCA6PSBjdXJyZW50Lm5leHQ7Ci0gICAgICAgICAgICAgICBuZXd3Lmxhc3QgOj0gY3VycmVudDsKLSAgICAgICAgICAgICAgIG5ld3cubGFzdC5uZXh0IDo9IG5ld3c7Ci0gICAgICAgICAgICAgICBuZXd3Lm5leHQubGFzdCA6PSBuZXd3OworICAgICAgICAgICAgICAgbmV3dy5hbGwubmV4dCA6PSBjdXJyZW50LmFsbC5uZXh0OworICAgICAgICAgICAgICAgbmV3dy5hbGwubGFzdCA6PSBjdXJyZW50OworICAgICAgICAgICAgICAgbmV3dy5hbGwubGFzdC5hbGwubmV4dCA6PSBuZXd3OworICAgICAgICAgICAgICAgbmV3dy5hbGwubmV4dC5hbGwubGFzdCA6PSBuZXd3OwogCi0gICAgICAgICAgICAgICBuZXd3LndpbmQgOj0gR2V0X1dpbmRvdyAoZik7CisgICAgICAgICAgICAgICBuZXd3LmFsbC53aW5kIDo9IEdldF9XaW5kb3cgKGYpOwogICAgICAgICAgICAgICAgQ2xvc2UgKGYpOwogCi0gICAgICAgICAgICAgICBSZWZyZXNoIChuZXd3LndpbmQpOworICAgICAgICAgICAgICAgUmVmcmVzaCAobmV3dy5hbGwud2luZCk7CiAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICB3aGVuIENoYXJhY3RlcidQb3MgKCdYJykgbW9kIDE2IzIwIyA9PiAtLSAgQ3RybCgnWCcpCiAgICAgICAgICAgICBpZiBjdXJyZW50IC89IG51bGwgdGhlbgpAQCAtNTg5LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICJ0byBtYXJrIG5ldyBjb3JuZXIiKTsKICAgICAgICAgICAgICAgICAgIFJlZnJlc2g7CiAKLSAgICAgICAgICAgICAgICAgIEdldF9XaW5kb3dfUG9zaXRpb24gKGN1cnJlbnQud2luZCwgdWwueSwgdWwueCk7CisgICAgICAgICAgICAgICAgICBHZXRfV2luZG93X1Bvc2l0aW9uIChjdXJyZW50LmFsbC53aW5kLCB1bC55LCB1bC54KTsKIAogICAgICAgICAgICAgICAgICAgc2VsZWN0Y2VsbCAodWwueSwgdWwueCwgTGluZXMgLSBCb3RsaW5lcyAtIDIsIENvbHVtbnMgLSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLCB0bXBib29sKTsKQEAgLTU5Nyw0MyArNTk1LDQzIEBACiAgICAgICAgICAgICAgICAgICAgICAtLSAgdGhlIEMgdmVyc2lvbiBoYWQgYSBnb3RvLiBJIHJlZnVzZSBnb3Rvcy4KICAgICAgICAgICAgICAgICAgICAgIEJlZXA7CiAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBHZXRfU2l6ZSAoY3VycmVudC53aW5kLCBsci55LCBsci54KTsKKyAgICAgICAgICAgICAgICAgICAgIEdldF9TaXplIChjdXJyZW50LmFsbC53aW5kLCBsci55LCBsci54KTsKICAgICAgICAgICAgICAgICAgICAgIGxyLnkgOj0gbHIueSArIHVsLnkgLSAxOwogICAgICAgICAgICAgICAgICAgICAgbHIueCA6PSBsci54ICsgdWwueCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICBPdXRlcmJveCAodWwsIGxyLCBGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICBSZWZyZXNoX1dpdGhvdXRfVXBkYXRlOwogCi0gICAgICAgICAgICAgICAgICAgICBHZXRfU2l6ZSAoY3VycmVudC53aW5kLCBteSwgbXgpOworICAgICAgICAgICAgICAgICAgICAgR2V0X1NpemUgKGN1cnJlbnQuYWxsLndpbmQsIG15LCBteCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiBteSA+IHRtcC55IC0gdWwueSB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRfQ3Vyc29yX1Bvc2l0aW9uIChjdXJyZW50LndpbmQsIGxyLnksIGxyLngpOwotICAgICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKGN1cnJlbnQud2luZCwgdG1wLnkgLSB1bC55ICsgMSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGVhcl9Ub19FbmRfT2ZfU2NyZWVuIChjdXJyZW50LndpbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKGN1cnJlbnQud2luZCwgbHIueSwgbHIueCk7CisgICAgICAgICAgICAgICAgICAgICAgICBHZXRfQ3Vyc29yX1Bvc2l0aW9uIChjdXJyZW50LmFsbC53aW5kLCBsci55LCBsci54KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1vdmVfQ3Vyc29yIChjdXJyZW50LmFsbC53aW5kLCB0bXAueSAtIHVsLnkgKyAxLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyX1RvX0VuZF9PZl9TY3JlZW4gKGN1cnJlbnQuYWxsLndpbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKGN1cnJlbnQuYWxsLndpbmQsIGxyLnksIGxyLngpOwogICAgICAgICAgICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgICAgICAgICAgICAgaWYgbXggPiB0bXAueCAtIHVsLnggdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gMCAuLiBteSAtIDEgbG9vcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKGN1cnJlbnQud2luZCwgaSwgdG1wLnggLSB1bC54ICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBDbGVhcl9Ub19FbmRfT2ZfTGluZSAoY3VycmVudC53aW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdmVfQ3Vyc29yIChjdXJyZW50LmFsbC53aW5kLCBpLCB0bXAueCAtIHVsLnggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyX1RvX0VuZF9PZl9MaW5lIChjdXJyZW50LmFsbC53aW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBsb29wOwogICAgICAgICAgICAgICAgICAgICAgZW5kIGlmOwotICAgICAgICAgICAgICAgICAgICAgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAoY3VycmVudC53aW5kKTsKKyAgICAgICAgICAgICAgICAgICAgIFJlZnJlc2hfV2l0aG91dF9VcGRhdGUgKGN1cnJlbnQuYWxsLndpbmQpOwogCiAgICAgICAgICAgICAgICAgICAgICBsciA6PSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAtLSAgVGhlIEMgdmVyc2lvbiBwYXNzZXMgaW52YWxpZCBhcmdzIHRvIHJlc2l6ZQogICAgICAgICAgICAgICAgICAgICAgLS0gIHdoaWNoIHJldHVybnMgYW4gRVJSLiBGb3IgQWRhIHdlIGF2b2lkIHRoZSBleGNlcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICBpZiBsci55IC89IHVsLnkgYW5kIGxyLnggLz0gdWwueCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBSZXNpemUgKGN1cnJlbnQud2luZCwgbHIueSAtIHVsLnkgKyAwLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzaXplIChjdXJyZW50LmFsbC53aW5kLCBsci55IC0gdWwueSArIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxyLnggLSB1bC54ICsgMCk7CiAgICAgICAgICAgICAgICAgICAgICBlbmQgaWY7CiAKLSAgICAgICAgICAgICAgICAgICAgIEdldF9XaW5kb3dfUG9zaXRpb24gKGN1cnJlbnQud2luZCwgdWwueSwgdWwueCk7Ci0gICAgICAgICAgICAgICAgICAgICBHZXRfU2l6ZSAoY3VycmVudC53aW5kLCBsci55LCBsci54KTsKKyAgICAgICAgICAgICAgICAgICAgIEdldF9XaW5kb3dfUG9zaXRpb24gKGN1cnJlbnQuYWxsLndpbmQsIHVsLnksIHVsLngpOworICAgICAgICAgICAgICAgICAgICAgR2V0X1NpemUgKGN1cnJlbnQuYWxsLndpbmQsIGxyLnksIGxyLngpOwogICAgICAgICAgICAgICAgICAgICAgbHIueSA6PSBsci55ICsgdWwueSAtIDE7CiAgICAgICAgICAgICAgICAgICAgICBsci54IDo9IGxyLnggKyB1bC54IC0gMTsKICAgICAgICAgICAgICAgICAgICAgIE91dGVyYm94ICh1bCwgbHIsIFRydWUpOwogICAgICAgICAgICAgICAgICAgICAgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZTsKIAotICAgICAgICAgICAgICAgICAgICAgUmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAoY3VycmVudC53aW5kKTsKKyAgICAgICAgICAgICAgICAgICAgIFJlZnJlc2hfV2l0aG91dF9VcGRhdGUgKGN1cnJlbnQuYWxsLndpbmQpOwogICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKExpbmUgPT4gMCwgQ29sdW1uID0+IDApOwogICAgICAgICAgICAgICAgICAgICAgQ2xlYXJfVG9fRW5kX09mX0xpbmU7CiAgICAgICAgICAgICAgICAgICAgICBVcGRhdGVfU2NyZWVuOwpAQCAtNjQ5LDMwICs2NDcsMzAgQEAKICAgICAgICAgICAgICAgIFJlZnJlc2g7CiAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICB3aGVuIEtleV9DdXJzb3JfVXAgPT4KLSAgICAgICAgICAgIG5ld3dpbl9tb3ZlIChjdXJyZW50LndpbmQsIC0xLCAwKTsKKyAgICAgICAgICAgIG5ld3dpbl9tb3ZlIChjdXJyZW50LmFsbC53aW5kLCAtMSwgMCk7CiAgICAgICAgICB3aGVuIEtleV9DdXJzb3JfRG93biAgPT4KLSAgICAgICAgICAgIG5ld3dpbl9tb3ZlIChjdXJyZW50LndpbmQsIDEsIDApOworICAgICAgICAgICAgbmV3d2luX21vdmUgKGN1cnJlbnQuYWxsLndpbmQsIDEsIDApOwogICAgICAgICAgd2hlbiBLZXlfQ3Vyc29yX0xlZnQgID0+Ci0gICAgICAgICAgICBuZXd3aW5fbW92ZSAoY3VycmVudC53aW5kLCAwLCAtMSk7CisgICAgICAgICAgICBuZXd3aW5fbW92ZSAoY3VycmVudC5hbGwud2luZCwgMCwgLTEpOwogICAgICAgICAgd2hlbiBLZXlfQ3Vyc29yX1JpZ2h0ICA9PgotICAgICAgICAgICAgbmV3d2luX21vdmUgKGN1cnJlbnQud2luZCwgMCwgMSk7CisgICAgICAgICAgICBuZXd3aW5fbW92ZSAoY3VycmVudC5hbGwud2luZCwgMCwgMSk7CiAgICAgICAgICB3aGVuIEtleV9CYWNrc3BhY2UgfCBLZXlfRGVsZXRlX0NoYXIgID0+CiAgICAgICAgICAgICBkZWNsYXJlCiAgICAgICAgICAgICAgICB5IDogTGluZV9Qb3NpdGlvbjsKICAgICAgICAgICAgICAgIHggOiBDb2x1bW5fUG9zaXRpb247CiAgICAgICAgICAgICAgICB0bXAgOiBMaW5lX1Bvc2l0aW9uOwogICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgIEdldF9DdXJzb3JfUG9zaXRpb24gKGN1cnJlbnQud2luZCwgeSwgeCk7CisgICAgICAgICAgICAgICBHZXRfQ3Vyc29yX1Bvc2l0aW9uIChjdXJyZW50LmFsbC53aW5kLCB5LCB4KTsKICAgICAgICAgICAgICAgIC0tICB4IDo9IHggLSAxOwogICAgICAgICAgICAgICAgLS0gIEkgZ290IHRyaWNrZWQgYnkgdGhlIC0xID0gTWF4X05hdHVyYWwgLSAxIHJlc3VsdAogICAgICAgICAgICAgICAgLS0gIHkgOj0geSAtIDE7CiAgICAgICAgICAgICAgICBpZiBub3QgKHggPSAwIGFuZCB5ID0gMCkgdGhlbgogICAgICAgICAgICAgICAgICAgaWYgeCA9IDAgdGhlbgogICAgICAgICAgICAgICAgICAgICAgeSA6PSB5IC0gMTsKLSAgICAgICAgICAgICAgICAgICAgIEdldF9TaXplIChjdXJyZW50LndpbmQsIHRtcCwgeCk7CisgICAgICAgICAgICAgICAgICAgICBHZXRfU2l6ZSAoY3VycmVudC5hbGwud2luZCwgdG1wLCB4KTsKICAgICAgICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgICAgICAgICAgIHggOj0geCAtIDE7Ci0gICAgICAgICAgICAgICAgICBEZWxldGVfQ2hhcmFjdGVyIChjdXJyZW50LndpbmQsIHksIHgpOworICAgICAgICAgICAgICAgICAgRGVsZXRlX0NoYXJhY3RlciAoY3VycmVudC5hbGwud2luZCwgeSwgeCk7CiAgICAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICB3aGVuIG90aGVycyA9PgpAQCAtNjgwLDcgKzY3OCw3IEBACiAgICAgICAgICAgICBpZiBjdXJyZW50IC89IG51bGwgdGhlbgogICAgICAgICAgICAgICAgZGVjbGFyZQogICAgICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICAgIEFkZCAoY3VycmVudC53aW5kLCBDaCA9PiBDb2RlX1RvX0NoYXIgKGMpKTsKKyAgICAgICAgICAgICAgICAgIEFkZCAoY3VycmVudC5hbGwud2luZCwgQ2ggPT4gQ29kZV9Ub19DaGFyIChjKSk7CiAgICAgICAgICAgICAgICBleGNlcHRpb24KICAgICAgICAgICAgICAgICAgIHdoZW4gQ3Vyc2VzX0V4Y2VwdGlvbiA9PiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgLS0gIHRoaXMgaGFwcGVucyBpZiB3ZSBhcmUgYXQgdGhlCkBAIC02OTAsOSArNjg4LDkgQEAKICAgICAgICAgICAgICAgIEJlZXA7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICBlbmQgY2FzZTsKLSAgICAgIG5ld3dpbl9yZXBvcnQgKGN1cnJlbnQud2luZCk7CisgICAgICBuZXd3aW5fcmVwb3J0IChjdXJyZW50LmFsbC53aW5kKTsKICAgICAgIGlmIGN1cnJlbnQgLz0gbnVsbCB0aGVuCi0gICAgICAgICB1c2VzY3IgOj0gY3VycmVudC53aW5kOworICAgICAgICAgdXNlc2NyIDo9IGN1cnJlbnQuYWxsLndpbmQ7CiAgICAgICBlbHNlCiAgICAgICAgICB1c2VzY3IgOj0gU3RhbmRhcmRfV2luZG93OwogICAgICAgZW5kIGlmOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1jb2xvcl9lZGl0LmFkYiBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItY29sb3JfZWRpdC5hZGIKaW5kZXggYTZhMzVkZS4uMDk4Zjk4ZCAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1jb2xvcl9lZGl0LmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWNvbG9yX2VkaXQuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogRXVnZW5lIFYuIE1lbGFyYWdubyA8YWxkb21lbEBpeC5uZXRjb20uY29tPiAyMDAwCiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjUgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjI0OjQwICQKKy0tICAkUmV2aXNpb246IDEuNiAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIG5jdXJzZXMyLnV0aWw7IHVzZSBuY3Vyc2VzMi51dGlsOwpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICBTZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM7CiAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBTZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM7Ci0gICAgICAgICBBZGQgKGNoID0+ICcpJyk7CisgICAgICAgICBBZGQgKENoID0+ICcpJyk7CiAgICAgICBlbmQgbG9vcDsKICAgICAgIEFkZCAoTGluZSA9PiBMaW5lX1Bvc2l0aW9uIChOdW1iZXJfT2ZfQ29sb3JzICsgMyksIENvbHVtbiA9PiAwLAogICAgICAgICAgICBTdHIgPT4gIlVzZSB1cC9kb3duIHRvIHNlbGVjdCBhIGNvbG9yLCBsZWZ0L3JpZ2h0IHRvIGNoYW5nZSAiICYKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZGVtb19mb3Jtcy5hZGIgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fZm9ybXMuYWRiCmluZGV4IDcxMzdhYTAuLjBlZWViNWUgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZGVtb19mb3Jtcy5hZGIKKysrIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1kZW1vX2Zvcm1zLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS41ICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDoyNDo0MCAkCistLSAgJFJldmlzaW9uOiAxLjcgJAorLS0gICREYXRlOiAyMDE0LzA5LzEzIDE5OjEwOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBuY3Vyc2VzMi51dGlsOyB1c2UgbmN1cnNlczIudXRpbDsKQEAgLTMxNyw4ICszMTcsOSBAQAogICAgZnVuY3Rpb24gbXlfZm9ybV9kcml2ZXIgKGYgOiBGb3JtOyBjIDogS2V5X0NvZGUpIHJldHVybiBCb29sZWFuIGlzCiAgICAgICBmbGFnIDogY29uc3RhbnQgRHJpdmVyX1Jlc3VsdCA6PSBEcml2ZXIgKGYsIEZfVmFsaWRhdGVfRmllbGQpOwogICAgYmVnaW4KLSAgICAgIGlmIGMgPSBGb3JtX1JlcXVlc3RfQ29kZSdMYXN0ICsgMQotICAgICAgICBhbmQgZmxhZyA9IEZvcm1fT2sgdGhlbgorICAgICAgaWYgYyA9IEZvcm1fUmVxdWVzdF9Db2RlJ0xhc3QgKyAxIGFuZAorICAgICAgICAgZmxhZyA9IEZvcm1fT2sKKyAgICAgIHRoZW4KICAgICAgICAgIHJldHVybiBUcnVlOwogICAgICAgZWxzZQogICAgICAgICAgQmVlcDsKQEAgLTQ1MSwxOSArNDUyLDE5IEBACiAgICBSZWZyZXNoOwogCiAgICAtLSAgZGVzY3JpYmUgdGhlIGZvcm0KLSAgIGYgKDEpIDo9IG1ha2VfbGFiZWwgKDAsIDE1LCAiU2FtcGxlIEZvcm0iKTsKLSAgIGYgKDIpIDo9IG1ha2VfbGFiZWwgKDIsIDAsICJMYXN0IE5hbWUiKTsKLSAgIGYgKDMpIDo9IG1ha2VfZmllbGQgKDMsIDAsIDEsIDE4LCBGYWxzZSk7Ci0gICBmICg0KSA6PSBtYWtlX2xhYmVsICgyLCAyMCwgIkZpcnN0IE5hbWUiKTsKLSAgIGYgKDUpIDo9IG1ha2VfZmllbGQgKDMsIDIwLCAxLCAxMiwgRmFsc2UpOwotICAgZiAoNikgOj0gbWFrZV9sYWJlbCAoMiwgMzQsICJNaWRkbGUgTmFtZSIpOwotICAgZiAoNykgOj0gbWFrZV9maWVsZCAoMywgMzQsIDEsIDEyLCBGYWxzZSk7Ci0gICBmICg4KSA6PSBtYWtlX2xhYmVsICg1LCAwLCAiQ29tbWVudHMiKTsKLSAgIGYgKDkpIDo9IG1ha2VfZmllbGQgKDYsIDAsIDQsIDQ2LCBGYWxzZSk7Ci0gICBmICgxMCkgOj0gbWFrZV9sYWJlbCAoNSwgMjAsICJQYXNzd29yZDoiKTsKLSAgIGYgKDExKSA6PSBtYWtlX2ZpZWxkICg1LCAzMCwgMSwgOSwgVHJ1ZSk7Ci0gICBzZWN1cmUgOj0gZiAoMTEpOwotICAgZiAoMTIpIDo9IE51bGxfRmllbGQ7CisgICBmLmFsbCAoMSkgOj0gbWFrZV9sYWJlbCAoMCwgMTUsICJTYW1wbGUgRm9ybSIpOworICAgZi5hbGwgKDIpIDo9IG1ha2VfbGFiZWwgKDIsIDAsICJMYXN0IE5hbWUiKTsKKyAgIGYuYWxsICgzKSA6PSBtYWtlX2ZpZWxkICgzLCAwLCAxLCAxOCwgRmFsc2UpOworICAgZi5hbGwgKDQpIDo9IG1ha2VfbGFiZWwgKDIsIDIwLCAiRmlyc3QgTmFtZSIpOworICAgZi5hbGwgKDUpIDo9IG1ha2VfZmllbGQgKDMsIDIwLCAxLCAxMiwgRmFsc2UpOworICAgZi5hbGwgKDYpIDo9IG1ha2VfbGFiZWwgKDIsIDM0LCAiTWlkZGxlIE5hbWUiKTsKKyAgIGYuYWxsICg3KSA6PSBtYWtlX2ZpZWxkICgzLCAzNCwgMSwgMTIsIEZhbHNlKTsKKyAgIGYuYWxsICg4KSA6PSBtYWtlX2xhYmVsICg1LCAwLCAiQ29tbWVudHMiKTsKKyAgIGYuYWxsICg5KSA6PSBtYWtlX2ZpZWxkICg2LCAwLCA0LCA0NiwgRmFsc2UpOworICAgZi5hbGwgKDEwKSA6PSBtYWtlX2xhYmVsICg1LCAyMCwgIlBhc3N3b3JkOiIpOworICAgZi5hbGwgKDExKSA6PSBtYWtlX2ZpZWxkICg1LCAzMCwgMSwgOSwgVHJ1ZSk7CisgICBzZWN1cmUgOj0gZi5hbGwgKDExKTsKKyAgIGYuYWxsICgxMikgOj0gTnVsbF9GaWVsZDsKIAogICAgbXlmb3JtIDo9IE5ld19Gb3JtIChmKTsKIApkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1kZW1vX3BhZC5hZGIgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFkLmFkYgppbmRleCA4NjJiOGI3Li4wNjJlYzUzIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFkLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFkLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS43ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0NzowNiAkCistLSAgJFJldmlzaW9uOiAxLjkgJAorLS0gICREYXRlOiAyMDE0LzA5LzEzIDE5OjEwOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBuY3Vyc2VzMi51dGlsOyB1c2UgbmN1cnNlczIudXRpbDsKQEAgLTEyMSw4ICsxMjEsOCBAQAogICAgICAgICAgcmV0dmFsLnNlY29uZHMgOj0gMDsKICAgICAgICAgIHJldHZhbC5taWNyb3NlY29uZHMgOj0gMDsKICAgICAgIGVsc2UKLSAgICAgICAgIHJldHZhbC5zZWNvbmRzIDo9IEludGVnZXIgKHQudHZfc2VjKTsKLSAgICAgICAgIHJldHZhbC5taWNyb3NlY29uZHMgOj0gSW50ZWdlciAodC50dl91c2VjKTsKKyAgICAgICAgIHJldHZhbC5zZWNvbmRzIDo9IEludGVnZXIgKHQuYWxsLnR2X3NlYyk7CisgICAgICAgICByZXR2YWwubWljcm9zZWNvbmRzIDo9IEludGVnZXIgKHQuYWxsLnR2X3VzZWMpOwogICAgICAgZW5kIGlmOwogICAgICAgcmV0dXJuIHJldHZhbDsKICAgIGVuZCBnZXR0aW1lOwpAQCAtNDM3LDcgKzQzNyw4IEBACiAgICAgICAgICAgICAgICAtLSAgcGFuIHJpZ2h0d2FyZHMKICAgICAgICAgICAgICAgIC0tICBpZiAoYmFzZXggKyBwb3J0eCAtIChweW1heCA+IHBvcnR5KSA8IHB4bWF4KQogICAgICAgICAgICAgICAgaWYgYmFzZXggKyBwb3J0eCAtCi0gICAgICAgICAgICAgICAgICAgQ29sdW1uX1Bvc2l0aW9uIChncmVhdGVyIChweW1heCwgcG9ydHkpKSA8IHB4bWF4IHRoZW4KKyAgICAgICAgICAgICAgICAgICBDb2x1bW5fUG9zaXRpb24gKGdyZWF0ZXIgKHB5bWF4LCBwb3J0eSkpIDwgcHhtYXgKKyAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgICAgIC0tICBpZiBiYXNleCArIHBvcnR4ICA8IHB4bWF4IG9yCiAgICAgICAgICAgICAgICAgICAtLSAgICAgIChweW1heCA+IHBvcnR5IGFuZCBiYXNleCArIHBvcnR4IC0gMSA8IHB4bWF4KSB0aGVuCiAgICAgICAgICAgICAgICAgICBiYXNleCA6PSBiYXNleCArIDE7CkBAIC00NTcsNyArNDU4LDggQEAKICAgICAgICAgICAgICAgIC0tICBwYW4gZG93bndhcmRzCiAgICAgICAgICAgICAgICAtLSAgc2FtZSBhcyBpZiAoYmFzZXkgKyBwb3J0eSAtIChweG1heCA+IHBvcnR4KSA8IHB5bWF4KQogICAgICAgICAgICAgICAgaWYgYmFzZXkgKyBwb3J0eSAtCi0gICAgICAgICAgICAgICAgICAgTGluZV9Qb3NpdGlvbiAoZ3JlYXRlciAocHhtYXgsIHBvcnR4KSkgPCBweW1heCB0aGVuCisgICAgICAgICAgICAgICAgICAgTGluZV9Qb3NpdGlvbiAoZ3JlYXRlciAocHhtYXgsIHBvcnR4KSkgPCBweW1heAorICAgICAgICAgICAgICAgdGhlbgogICAgICAgICAgICAgICAgICAgLS0gIGlmIChiYXNleSArIHBvcnR5ICA8IHB5bWF4KSBvcgogICAgICAgICAgICAgICAgICAgLS0gICAgICAocHhtYXggPiBwb3J0eCBhbmQgYmFzZXkgKyBwb3J0eSAtIDEgPCBweW1heCkgdGhlbgogICAgICAgICAgICAgICAgICAgYmFzZXkgOj0gYmFzZXkgKyAxOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1kZW1vX3BhbmVscy5hZGIgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFuZWxzLmFkYgppbmRleCBkMjU1OGVkLi45NjkzZTFhIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFuZWxzLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWRlbW9fcGFuZWxzLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA0LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDgsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS42ICQKLS0tICAkRGF0ZTogMjAwOC8wOC8zMCAyMzozNTowMSAkCistLSAgJFJldmlzaW9uOiAxLjcgJAorLS0gICREYXRlOiAyMDExLzAzLzIzIDAwOjQ0OjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBuY3Vyc2VzMi51dGlsOyB1c2UgbmN1cnNlczIudXRpbDsKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAgICBwcm9jZWR1cmUgZmlsbF9wYW5lbCAocGFuIDogUGFuZWwpIGlzCiAgICAgICB3aW4gOiBjb25zdGFudCBXaW5kb3cgOj0gUGFuZWxfV2luZG93IChwYW4pOwotICAgICAgbnVtIDogY29uc3RhbnQgQ2hhcmFjdGVyIDo9IEdldF9Vc2VyX0RhdGEgKHBhbikgKDIpOworICAgICAgbnVtIDogY29uc3RhbnQgQ2hhcmFjdGVyIDo9IEdldF9Vc2VyX0RhdGEgKHBhbikuYWxsICgyKTsKICAgICAgIHRtcDYgOiBTdHJpbmcgKDEgLi4gNikgOj0gIi1wYW54LSI7CiAgICAgICBtYXh5IDogTGluZV9Db3VudDsKICAgICAgIG1heHggOiBDb2x1bW5fQ291bnQ7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdlbmVyaWNwdXRzLmFkYiBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZ2VuZXJpY3B1dHMuYWRiCmluZGV4IDZjYTY1ODMuLjgyOWQwOGQgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZ2VuZXJpY3B1dHMuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZ2VuZXJpY3B1dHMuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogRXVnZW5lIFYuIE1lbGFyYWdubyA8YWxkb21lbEBpeC5uZXRjb20uY29tPiAyMDAwCiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjMgJAotLS0gICREYXRlOiAyMDA4LzA3LzI2IDE4OjQ2OjE4ICQKKy0tICAkUmV2aXNpb246IDEuNCAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOwpAQCAtNDQsOSArNDQsOSBAQAogCiBwYWNrYWdlIGJvZHkgbmN1cnNlczIuZ2VuZXJpY1B1dHMgaXMKIAotICAgcHJvY2VkdXJlIG15R2V0IChXaW4gOiBpbiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgIHByb2NlZHVyZSBteUdldCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgU3RyIDogb3V0IEJTLkJvdW5kZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICBMZW4gOiBpbiAgSW50ZWdlciA6PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgTGVuIDogSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBXZ2V0bnN0ciAoV2luIDogV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciA6IGNoYXJfYXJyYXk7CkBAIC03NCw3ICs3NCw3IEBACiAKICAgIHByb2NlZHVyZSBteVB1dCAoU3RyICA6IG91dCBCUy5Cb3VuZGVkX1N0cmluZzsKICAgICAgICAgICAgICAgICAgICAgaSAgICA6IEludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgIEJhc2UgOiBpbiAgICAgTnVtYmVyX0Jhc2UgOj0gMTApIGlzCisgICAgICAgICAgICAgICAgICAgIEJhc2UgOiBOdW1iZXJfQmFzZSA6PSAxMCkgaXMKICAgICAgIHBhY2thZ2UgSW50X0lPIGlzIG5ldyBJbnRlZ2VyX0lPIChJbnRlZ2VyKTsgdXNlIEludF9JTzsKICAgICAgIHRtcCA6IFN0cmluZyAoMSAuLiBCUy5NYXhfTGVuZ3RoKTsKICAgIGJlZ2luCkBAIC04OSw3ICs4OSw3IEBACiAgICBlbmQgbXlBZGQ7CiAKICAgIC0tICBmcm9tIG5jdXJzZXMtYXV4Ci0gICBwcm9jZWR1cmUgRmlsbF9TdHJpbmcgKENwICA6IGluICBjaGFyc19wdHI7CisgICBwcm9jZWR1cmUgRmlsbF9TdHJpbmcgKENwICA6IGNoYXJzX3B0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyIDogb3V0IEJTLkJvdW5kZWRfU3RyaW5nKQogICAgaXMKICAgICAgIC0tICBGaWxsIHRoZSBzdHJpbmcgd2l0aCB0aGUgY2hhcmFjdGVycyByZWZlcmVuY2VkIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1nZW5lcmljcHV0cy5hZHMgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdlbmVyaWNwdXRzLmFkcwppbmRleCAxNjE0YTExLi5hY2NjM2NjIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdlbmVyaWNwdXRzLmFkcworKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdlbmVyaWNwdXRzLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4yICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDoyNDo0MCAkCistLSAgJFJldmlzaW9uOiAxLjMgJAorLS0gICREYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01NiwxNyArNTYsMTcgQEAKICAgICAgQWRhLlN0cmluZ3MuQm91bmRlZC5HZW5lcmljX0JvdW5kZWRfTGVuZ3RoIChNYXgpOwogICAgdXNlIEJTOwogCi0gICBwcm9jZWR1cmUgbXlHZXQgKFdpbiA6IGluICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLldpbmRvdwotICAgICAgICAgICAgICAgICAgICAgIDo9IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuU3RhbmRhcmRfV2luZG93OworICAgcHJvY2VkdXJlIG15R2V0IChXaW4gOiBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLldpbmRvdworICAgICAgICAgICAgICAgICAgICAgICA6PSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlN0YW5kYXJkX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgU3RyIDogb3V0IEJTLkJvdW5kZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICBMZW4gOiBpbiAgSW50ZWdlciA6PSAtMSk7CisgICAgICAgICAgICAgICAgICAgIExlbiA6ICBJbnRlZ2VyIDo9IC0xKTsKIAotICAgcHJvY2VkdXJlIG15UHV0IChTdHIgOiBvdXQgQlMuQm91bmRlZF9TdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgIGkgOiBJbnRlZ2VyOwotICAgICAgICAgICAgICAgICAgICBCYXNlIDogaW4gTnVtYmVyX0Jhc2UgOj0gMTApOworICAgcHJvY2VkdXJlIG15UHV0IChTdHIgIDogb3V0IEJTLkJvdW5kZWRfU3RyaW5nOworICAgICAgICAgICAgICAgICAgICBpICAgIDogSW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgQmFzZSA6IE51bWJlcl9CYXNlIDo9IDEwKTsKICAgIC0tICB0aGUgZGVmYXVsdCBzaG91bGQgYmUgQWRhLlRleHRfSU8uSW50ZWdlcl9JTy5EZWZhdWx0X0Jhc2UKICAgIC0tICBidXQgRGVmYXVsdF9CYXNlIGlzIGhpZGRlbiBpbiB0aGUgZ2VuZXJpYyBzbyBkb2Vzbid0IGV4aXN0IQogICAgcHJvY2VkdXJlIG15QWRkIChTdHIgOiBCUy5Cb3VuZGVkX1N0cmluZyk7CiAKLSAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgIDogaW4gIGNoYXJzX3B0cjsgU3RyIDogb3V0IEJTLkJvdW5kZWRfU3RyaW5nKTsKKyAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgOiBjaGFyc19wdHI7IFN0ciA6IG91dCBCUy5Cb3VuZGVkX1N0cmluZyk7CiBlbmQgbmN1cnNlczIuZ2VuZXJpY1B1dHM7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdldGNoX3Rlc3QuYWRiIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1nZXRjaF90ZXN0LmFkYgppbmRleCAxNzIzMTJjLi44ZjAyMGU3IDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdldGNoX3Rlc3QuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZ2V0Y2hfdGVzdC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiBFdWdlbmUgVi4gTWVsYXJhZ25vIDxhbGRvbWVsQGl4Lm5ldGNvbS5jb20+IDIwMDAKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuNyAkCi0tLSAgJERhdGU6IDIwMDgvMDcvMjYgMTg6NDY6NTggJAorLS0gICRSZXZpc2lvbjogMS45ICQKKy0tICAkRGF0ZTogMjAxNC8wOS8xMyAxOToxMDoxOCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBDaGFyYWN0ZXIgaW5wdXQgdGVzdApAQCAtMjA1LDEzICsyMDUsMTUgQEAKICAgICAgICAgICAgICAgIEFkZCAoU3RyID0+ICIgSSBzYXcgJyIpOwogICAgICAgICAgICAgICAgbXlBZGQgKFN0ciA9PiBib3VuZGVkYnVmKTsKICAgICAgICAgICAgICAgIEFkZCAoU3RyID0+ICInLiIpOwotICAgICAgICAgICAgICAgQWRkIChjaCA9PiBuZXdsKTsKKyAgICAgICAgICAgICAgIEFkZCAoQ2ggPT4gbmV3bCk7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBlbmQ7CiAgICAgICBlbHNpZiBjID0gQ2hhcmFjdGVyJ1BvcyAoJ3MnKSB0aGVuCiAgICAgICAgICBTaGVsbE91dCAoVHJ1ZSk7Ci0gICAgICBlbHNpZiBjID0gQ2hhcmFjdGVyJ1BvcyAoJ3gnKSBvciBjID0gQ2hhcmFjdGVyJ1BvcyAoJ3EnKSBvcgotICAgICAgICAoYyA9IEtleV9Ob25lIGFuZCBibG9ja2ZsYWcgPSBCbG9ja2luZykgdGhlbgorICAgICAgZWxzaWYgYyA9IENoYXJhY3RlcidQb3MgKCd4Jykgb3IKKyAgICAgICAgICAgIGMgPSBDaGFyYWN0ZXInUG9zICgncScpIG9yCisgICAgICAgICAgIChjID0gS2V5X05vbmUgYW5kIGJsb2NrZmxhZyA9IEJsb2NraW5nKQorICAgICAgdGhlbgogICAgICAgICAgZXhpdDsKICAgICAgIGVsc2lmIGMgPSBDaGFyYWN0ZXInUG9zICgnPycpIHRoZW4KICAgICAgICAgIEFkZCAoU3RyID0+ICJUeXBlIGFueSBrZXkgdG8gc2VlIGl0cyBrZXlwYWQgdmFsdWUuICBBbHNvOiIpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1nZXRvcHQuYWRiIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1nZXRvcHQuYWRiCmluZGV4IDIzOGM0MzkuLjI5ZjFmZWUgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItZ2V0b3B0LmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLWdldG9wdC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA4LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiBFdWdlbmUgVi4gTWVsYXJhZ25vIDxhbGRvbWVsQGl4Lm5ldGNvbS5jb20+IDIwMDAKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuNyAkCi0tLSAgJERhdGU6IDIwMDgvMDcvMjYgMTg6NDY6NDQgJAorLS0gICRSZXZpc2lvbjogMS44ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8xOSAxMjowOTo1MSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0aGUgIEdOVSBnZXRvcHQgZnVuY3Rpb24KQEAgLTU2LDcgKzU2LDcgQEAKICAgIC0tICBhbHNvIHRoZSB1c2VyIGlzIG5vdCBhbGxvd2VkIHRvIG1vZGlmeSBhcmd2IG9yIGFyZ2MKICAgIC0tICBEb2luZyBzbyBpcyBFcnJvbmVvdXMgZXhlY3V0aW9uLgogCi0gICAtLSAgbG9uZ29wdGlvbnMgYXJlIG5vdCBoYW5kbGVkLgorICAgLS0gIGxvbmcgb3B0aW9ucyBhcmUgbm90IGhhbmRsZWQuCiAKICAgIHByb2NlZHVyZSBRZ2V0b3B0IChyZXR2YWwgOiBvdXQgSW50ZWdlcjsKICAgICAgICAgICAgICAgICAgICAgICBhcmdjIDogSW50ZWdlcjsKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC0tICBpZ25vcmVkIGZvciBuY3Vyc2VzLCBtdXN0IGJlIGluaXRpYWxpemVkIHRvIDEgYnkKICAgICAgICAgICAgICAgICAgICAgICAgIC0tICB0aGUgY2FsbGVyCiAgICAgICAgICAgICAgICAgICAgICAgT3B0YXJnIDogb3V0IHN0cmluZ2EKLSAgICAgICAgICAgICAgICAgICAgICAgIC0tICBhIGdhcmJhZ2UgY29sZWN0b3Igd291bGQgYmUgdXNlZnVsIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICAtLSAgYSBnYXJiYWdlIGNvbGxlY3RvciB3b3VsZCBiZSB1c2VmdWwgaGVyZS4KICAgICAgICAgICAgICAgICAgICAgICkgaXMKIAogICAgICAgcGFja2FnZSBCUyBpcyBuZXcgQWRhLlN0cmluZ3MuQm91bmRlZC5HZW5lcmljX0JvdW5kZWRfTGVuZ3RoICgyMDApOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1tZW51X3Rlc3QuYWRiIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1tZW51X3Rlc3QuYWRiCmluZGV4IGE0YzQ4MDcuLmJjZTk3ODIgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItbWVudV90ZXN0LmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLW1lbnVfdGVzdC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA2LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiBFdWdlbmUgVi4gTWVsYXJhZ25vIDxhbGRvbWVsQGl4Lm5ldGNvbS5jb20+IDIwMDAKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuNiAkCi0tLSAgJERhdGU6IDIwMDYvMDYvMjUgMTQ6MjQ6NDAgJAorLS0gICRSZXZpc2lvbjogMS44ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8yMyAwMDozOToyOCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggbmN1cnNlczIudXRpbDsgdXNlIG5jdXJzZXMyLnV0aWw7CkBAIC00NiwxMCArNDYsMTAgQEAKIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Nb3VzZTsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTW91c2U7CiAKIHByb2NlZHVyZSBuY3Vyc2VzMi5tZW51X3Rlc3QgaXMKLSAgIGZ1bmN0aW9uIG1lbnVfdmlydHVhbGl6ZSAoYyA6IEtleV9Db2RlKSByZXR1cm4gTWVudV9SZXF1ZXN0X0NvZGU7CisgICBmdW5jdGlvbiBtZW51X3ZpcnR1YWxpemUgKGMgOiBLZXlfQ29kZSkgcmV0dXJuIEtleV9Db2RlOwogICAgcHJvY2VkdXJlIHhBZGQgKGwgOiBMaW5lX1Bvc2l0aW9uOyBjIDogQ29sdW1uX1Bvc2l0aW9uOyBzIDogU3RyaW5nKTsKIAotICAgZnVuY3Rpb24gbWVudV92aXJ0dWFsaXplIChjIDogS2V5X0NvZGUpIHJldHVybiBNZW51X1JlcXVlc3RfQ29kZSBpcworICAgZnVuY3Rpb24gbWVudV92aXJ0dWFsaXplIChjIDogS2V5X0NvZGUpIHJldHVybiBLZXlfQ29kZSBpcwogICAgYmVnaW4KICAgICAgIGNhc2UgYyBpcwogICAgICAgICAgd2hlbiBDaGFyYWN0ZXInUG9zIChuZXdsKSB8IEtleV9FeGl0ID0+CkBAIC0xMTAsNyArMTEwLDcgQEAKICAgIGMxIDogS2V5X0NvZGU7CiAKICAgIGMgOiBEcml2ZXJfUmVzdWx0OwotICAgciA6IE1lbnVfUmVxdWVzdF9Db2RlOworICAgciA6IEtleV9Db2RlOwogYmVnaW4KICAgIHRtcCA6PSBTdGFydF9Nb3VzZTsKICAgIHhBZGQgKDAsIDAsICJUaGlzIGlzIHRoZSBtZW51IHRlc3Q6Iik7CkBAIC0xMjEsOSArMTIxLDkgQEAKICAgIFJlZnJlc2g7CiAKICAgIGZvciBpIGluIGFuaW1hbHMnUmFuZ2UgbG9vcAotICAgICAgaXRlbXNfYSAoaSkgOj0gTmV3X0l0ZW0gKGFuaW1hbHMgKGkpLmFsbCk7CisgICAgICBpdGVtc19hLmFsbCAoaSkgOj0gTmV3X0l0ZW0gKGFuaW1hbHMgKGkpLmFsbCk7CiAgICBlbmQgbG9vcDsKLSAgIGl0ZW1zX2EgKGFuaW1hbHMnTGFzdCArIDEpIDo9IE51bGxfSXRlbTsKKyAgIGl0ZW1zX2EuYWxsIChhbmltYWxzJ0xhc3QgKyAxKSA6PSBOdWxsX0l0ZW07CiAKICAgIG0gOj0gTmV3X01lbnUgKGl0ZW1zX2EpOwogCmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLW92ZXJsYXBfdGVzdC5hZGIgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLW92ZXJsYXBfdGVzdC5hZGIKaW5kZXggMzdlOGQ0Yy4uOTQ4YjJiMyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi1vdmVybGFwX3Rlc3QuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItb3ZlcmxhcF90ZXN0LmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS40ICQKLS0tICAkRGF0ZTogMjAwNC8wOC8yMSAyMTozNzowMCAkCistLSAgJFJldmlzaW9uOiAxLjcgJAorLS0gICREYXRlOiAyMDE1LzA3LzI1IDIzOjQzOjE5ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBuY3Vyc2VzMi51dGlsOyB1c2UgbmN1cnNlczIudXRpbDsKQEAgLTcyLDggKzcyLDkgQEAKICAgICAgIEdldF9TaXplICh3aW4sIHkxLCB4MSk7CiAgICAgICBmb3IgeSBpbiAwIC4uIHkxIC0gMSBsb29wCiAgICAgICAgICBmb3IgeCBpbiAwIC4uIHgxIC0gMSBsb29wCi0gICAgICAgICAgICBpZiAoKHggPiAoeDEgLSAxKSAvIDMpIGFuZCAoeCA8PSAoMiAqICh4MSAtIDEpKSAvIDMpKQotICAgICAgICAgICAgICAgIG9yICgoKHkgPiAoeTEgLSAxKSAvIDMpIGFuZCAoeSA8PSAoMiAqICh5MSAtIDEpKSAvIDMpKSkgdGhlbgorICAgICAgICAgICAgaWYgKCh4ID4gKHgxIC0gMSkgLyAzKSBhbmQgKHggPD0gKDIgKiAoeDEgLSAxKSkgLyAzKSkgb3IKKyAgICAgICAgICAgICAgICgoKHkgPiAoeTEgLSAxKSAvIDMpIGFuZCAoeSA8PSAoMiAqICh5MSAtIDEpKSAvIDMpKSkKKyAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgIE1vdmVfQ3Vyc29yICh3aW4sIHksIHgpOwogICAgICAgICAgICAgICAgQWRkICh3aW4sIENoID0+IGNoKTsKICAgICAgICAgICAgIGVuZCBpZjsKQEAgLTkzLDcgKzk0LDcgQEAKICAgIEFkZCAoU3RyID0+ICJUaGlzIHRlc3Qgc2hvd3MgdGhlIGJlaGF2aW9yIG9mIHdub3V0cmVmcmVzaCgpIHdpdGggIiAmCiAgICAgICAgICJyZXNwZWN0IHRvIik7CiAgICBBZGQgKENoID0+IG5ld2wpOwotICAgQWRkIChTdHIgPT4gInRoZSBzaGFyZWQgcmVnaW9uIG9mIHR3byBvdmVybGFwcGluZyB3aW5kb3dzIEEgYW5kIEIuICImCisgICBBZGQgKFN0ciA9PiAidGhlIHNoYXJlZCByZWdpb24gb2YgdHdvIG92ZXJsYXBwaW5nIHdpbmRvd3MgQSBhbmQgQi4gIiAmCiAgICAgICAgICJUaGUgY3Jvc3MiKTsKICAgIEFkZCAoQ2ggPT4gbmV3bCk7CiAgICBBZGQgKFN0ciA9PiAicGF0dGVybiBpbiBlYWNoIHdpbmRvdyBkb2VzIG5vdCBvdmVybGFwIHRoZSBvdGhlci4iKTsKQEAgLTEwMSw3ICsxMDIsNyBAQAogCiAgICBNb3ZlX0N1cnNvciAoTGluZSA9PiAxOCwgQ29sdW1uID0+IDApOwogICAgQWRkIChTdHIgPT4gImEgPSByZWZyZXNoIEEsIHRoZW4gQiwgdGhlbiBkb3VwZGF0ZS4gYiA9IHJlZnJlc2ggQiwgIiAmCi0gICAgICAgICJ0aGVuIEEsIHRoZW4gZG91cGRhdXRlIik7CisgICAgICAgICJ0aGVuIEEsIHRoZW4gZG91cGRhdGUiKTsKICAgIEFkZCAoQ2ggPT4gbmV3bCk7CiAgICBBZGQgKFN0ciA9PiAiYyA9IGZpbGwgd2luZG93IEEgd2l0aCBsZXR0ZXIgQS4gICAgICBkID0gZmlsbCB3aW5kb3cgQiAiICYKICAgICAgICAgIndpdGggbGV0dGVyIEIuIik7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLXNsa190ZXN0LmFkYiBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItc2xrX3Rlc3QuYWRiCmluZGV4IDhiZmVlNGUuLmFhMzY4YmEgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItc2xrX3Rlc3QuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItc2xrX3Rlc3QuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwOSwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogRXVnZW5lIFYuIE1lbGFyYWdubyA8YWxkb21lbEBpeC5uZXRjb20uY29tPiAyMDAwCiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjcgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjI0OjQwICQKKy0tICAkUmV2aXNpb246IDEuOSAkCistLSAgJERhdGU6IDIwMTEvMDMvMTkgMTI6MDM6MDggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIG5jdXJzZXMyLnV0aWw7IHVzZSBuY3Vyc2VzMi51dGlsOwpAQCAtNDcsMTMgKzQ3LDEzIEBACiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwogCiBwcm9jZWR1cmUgbmN1cnNlczIuc2xrX3Rlc3QgaXMKLSAgIHByb2NlZHVyZSBteUdldCAoV2luIDogaW4gIFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CisgICBwcm9jZWR1cmUgbXlHZXQgKFdpbiA6IFdpbmRvdyA6PSBTdGFuZGFyZF9XaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgIFN0ciA6IG91dCBBZGEuU3RyaW5ncy5VbmJvdW5kZWQuVW5ib3VuZGVkX1N0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgTGVuIDogaW4gIEludGVnZXIgOj0gLTEpOworICAgICAgICAgICAgICAgICAgICBMZW4gOiBJbnRlZ2VyIDo9IC0xKTsKIAotICAgcHJvY2VkdXJlIG15R2V0IChXaW4gOiBpbiAgV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKKyAgIHByb2NlZHVyZSBteUdldCAoV2luIDogV2luZG93IDo9IFN0YW5kYXJkX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgU3RyIDogb3V0IEFkYS5TdHJpbmdzLlVuYm91bmRlZC5VbmJvdW5kZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICBMZW4gOiBpbiAgSW50ZWdlciA6PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgTGVuIDogSW50ZWdlciA6PSAtMSkKICAgIGlzCiAgICAgICB1c2UgQWRhLlN0cmluZ3MuVW5ib3VuZGVkOwogICAgICAgdXNlIEludGVyZmFjZXMuQzsKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgICAgICAgd2hlbiAneCcgfCAncScgPT4KICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAtLSAgdGhlIEMgdmVyc2lvbiBuZWVkZWQgYSBnb3RvLCBoYSBoYQotICAgICAgICAgICAgLS0gIGJyZWFrcyBleGl0IHRoZSBjYXNlIG5vdCB0aGUgbG9vcCBiZWNhdXNlIGZhbGwtdGhyb3VoCisgICAgICAgICAgICAtLSAgYnJlYWtzIGV4aXQgdGhlIGNhc2Ugbm90IHRoZSBsb29wIGJlY2F1c2UgZmFsbC10aHJvdWdoCiAgICAgICAgICAgICAtLSAgaGFwcGVucyBpbiBDIQogICAgICAgICAgd2hlbiBvdGhlcnMgPT4KICAgICAgICAgICAgIEJlZXA7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLXRyYWNlX3NldC5hZGIgYi9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLXRyYWNlX3NldC5hZGIKaW5kZXggMWUyNzE2ZS4uZGY0NDY4YiAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi10cmFjZV9zZXQuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItdHJhY2Vfc2V0LmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4zICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0NjoxOCAkCistLSAgJFJldmlzaW9uOiAxLjYgJAorLS0gICREYXRlOiAyMDE0LzA5LzEzIDE5OjEwOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBuY3Vyc2VzMi51dGlsOyB1c2UgbmN1cnNlczIudXRpbDsKQEAgLTUwLDE0ICs1MCwxNCBAQAogCiBwcm9jZWR1cmUgbmN1cnNlczIudHJhY2Vfc2V0IGlzCiAKLSAgIGZ1bmN0aW9uIG1lbnVfdmlydHVhbGl6ZSAoYyA6IEtleV9Db2RlKSByZXR1cm4gTWVudV9SZXF1ZXN0X0NvZGU7CisgICBmdW5jdGlvbiBtZW51X3ZpcnR1YWxpemUgKGMgOiBLZXlfQ29kZSkgcmV0dXJuIEtleV9Db2RlOwogICAgZnVuY3Rpb24gc3Vic2V0IChzdXBlciwgc3ViIDogVHJhY2VfQXR0cmlidXRlX1NldCkgcmV0dXJuIEJvb2xlYW47CiAgICBmdW5jdGlvbiB0cmFjZV9vciAoYSwgYiA6IFRyYWNlX0F0dHJpYnV0ZV9TZXQpIHJldHVybiBUcmFjZV9BdHRyaWJ1dGVfU2V0OwogICAgZnVuY3Rpb24gdHJhY2VfbnVtICh0bGV2ZWwgOiBUcmFjZV9BdHRyaWJ1dGVfU2V0KSByZXR1cm4gU3RyaW5nOwogICAgZnVuY3Rpb24gdHJhY2V0cmFjZSAodGxldmVsIDogVHJhY2VfQXR0cmlidXRlX1NldCkgcmV0dXJuIFN0cmluZzsKICAgIGZ1bmN0aW9uIHJ1bl90cmFjZV9tZW51IChtIDogTWVudTsgY291bnQgOiBJbnRlZ2VyKSByZXR1cm4gQm9vbGVhbjsKIAotICAgZnVuY3Rpb24gbWVudV92aXJ0dWFsaXplIChjIDogS2V5X0NvZGUpIHJldHVybiBNZW51X1JlcXVlc3RfQ29kZSBpcworICAgZnVuY3Rpb24gbWVudV92aXJ0dWFsaXplIChjIDogS2V5X0NvZGUpIHJldHVybiBLZXlfQ29kZSBpcwogICAgYmVnaW4KICAgICAgIGNhc2UgYyBpcwogICAgICAgICAgd2hlbiBDaGFyYWN0ZXInUG9zIChuZXdsKSB8IEtleV9FeGl0ID0+CkBAIC0xNDEsNyArMTQxLDggQEAKICAgICAgICAgKHN1cGVyLkludGVybmFsX0NhbGxzIG9yIG5vdCBzdWIuSW50ZXJuYWxfQ2FsbHMpIGFuZAogICAgICAgICAoc3VwZXIuQ2hhcmFjdGVyX0NhbGxzIG9yIG5vdCBzdWIuQ2hhcmFjdGVyX0NhbGxzKSBhbmQKICAgICAgICAgKHN1cGVyLlRlcm1jYXBfVGVybUluZm8gb3Igbm90IHN1Yi5UZXJtY2FwX1Rlcm1JbmZvKSBhbmQKLSAgICAgICAgVHJ1ZSB0aGVuCisgICAgICAgIFRydWUKKyAgICAgIHRoZW4KICAgICAgICAgIHJldHVybiBUcnVlOwogICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIEZhbHNlOwpAQCAtMjUwLDkzICsyNTEsMTA3IEBACiAgICAgICBlbHNlCiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAotICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhUaW1lcyA9PiBUcnVlLCBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgIFRyYWNlX0F0dHJpYnV0ZV9TZXQnKFRpbWVzID0+IFRydWUsIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIlRpbWVzIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAotICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhUcHV0cyA9PiBUcnVlLCBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgIFRyYWNlX0F0dHJpYnV0ZV9TZXQnKFRwdXRzID0+IFRydWUsIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIlRwdXRzIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAotICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhVcGRhdGUgPT4gVHJ1ZSwgb3RoZXJzID0+IEZhbHNlKSkgdGhlbgorICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhVcGRhdGUgPT4gVHJ1ZSwgb3RoZXJzID0+IEZhbHNlKSkKKyAgICAgICAgIHRoZW4KICAgICAgICAgICAgIEFwcGVuZCAoYnVmLCAiVXBkYXRlIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAogICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhDdXJzb3JfTW92ZSA9PiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIkN1cnNvcl9Nb3ZlIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAogICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhDaGFyYWN0ZXJfT3V0cHV0ID0+IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyA9PiBGYWxzZSkpIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzID0+IEZhbHNlKSkKKyAgICAgICAgIHRoZW4KICAgICAgICAgICAgIEFwcGVuZCAoYnVmLCAiQ2hhcmFjdGVyX091dHB1dCIpOwogICAgICAgICAgICAgQXBwZW5kIChidWYsICIsICIpOwogICAgICAgICAgZW5kIGlmOwogCiAgICAgICAgICBpZiBzdWJzZXQgKHRsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgVHJhY2VfT3JkaW5hcnkpIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgVHJhY2VfT3JkaW5hcnkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIk9yZGluYXJ5Iik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAotICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhDYWxscyA9PiBUcnVlLCBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgIFRyYWNlX0F0dHJpYnV0ZV9TZXQnKENhbGxzID0+IFRydWUsIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIkNhbGxzIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAogICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhWaXJ0dWFsX1B1dHMgPT4gVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzID0+IEZhbHNlKSkgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKQorICAgICAgICAgdGhlbgogICAgICAgICAgICAgQXBwZW5kIChidWYsICJWaXJ0dWFsX1B1dHMiKTsKICAgICAgICAgICAgIEFwcGVuZCAoYnVmLCAiLCAiKTsKICAgICAgICAgIGVuZCBpZjsKIAogICAgICAgICAgaWYgc3Vic2V0ICh0bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgIFRyYWNlX0F0dHJpYnV0ZV9TZXQnKElucHV0X0V2ZW50cyA9PiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIklucHV0X0V2ZW50cyIpOwogICAgICAgICAgICAgQXBwZW5kIChidWYsICIsICIpOwogICAgICAgICAgZW5kIGlmOwogCiAgICAgICAgICBpZiBzdWJzZXQgKHRsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgVHJhY2VfQXR0cmlidXRlX1NldCcoVFRZX1N0YXRlID0+IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyA9PiBGYWxzZSkpIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzID0+IEZhbHNlKSkKKyAgICAgICAgIHRoZW4KICAgICAgICAgICAgIEFwcGVuZCAoYnVmLCAiVFRZX1N0YXRlIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAogICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhJbnRlcm5hbF9DYWxscyA9PiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVycyA9PiBGYWxzZSkpCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIkludGVybmFsX0NhbGxzIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAogICAgICAgICAgICAgICAgICAgICBUcmFjZV9BdHRyaWJ1dGVfU2V0JyhDaGFyYWN0ZXJfQ2FsbHMgPT4gVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzID0+IEZhbHNlKSkgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKQorICAgICAgICAgdGhlbgogICAgICAgICAgICAgQXBwZW5kIChidWYsICJDaGFyYWN0ZXJfQ2FsbHMiKTsKICAgICAgICAgICAgIEFwcGVuZCAoYnVmLCAiLCAiKTsKICAgICAgICAgIGVuZCBpZjsKIAogICAgICAgICAgaWYgc3Vic2V0ICh0bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgIFRyYWNlX0F0dHJpYnV0ZV9TZXQnKFRlcm1jYXBfVGVybUluZm8gPT4gVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzID0+IEZhbHNlKSkgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnMgPT4gRmFsc2UpKQorICAgICAgICAgdGhlbgogICAgICAgICAgICAgQXBwZW5kIChidWYsICJUZXJtY2FwX1Rlcm1JbmZvIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CiAKICAgICAgICAgIGlmIHN1YnNldCAodGxldmVsLAotICAgICAgICAgICAgICAgICAgICBUcmFjZV9NYXhpbXVtKSB0aGVuCisgICAgICAgICAgICAgICAgICAgIFRyYWNlX01heGltdW0pCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIk1heGltaXVtIik7CiAgICAgICAgICAgICBBcHBlbmQgKGJ1ZiwgIiwgIik7CiAgICAgICAgICBlbmQgaWY7CkBAIC00MTYsOSArNDMxLDkgQEAKICAgIFJlZnJlc2g7CiAKICAgIGZvciBuIGluIHRfdGJsJ1JhbmdlIGxvb3AKLSAgICAgIGl0ZW1zX2EgKG4pIDo9IE5ld19JdGVtICh0X3RibCAobikubmFtZS5hbGwpOworICAgICAgaXRlbXNfYS5hbGwgKG4pIDo9IE5ld19JdGVtICh0X3RibCAobikubmFtZS5hbGwpOwogICAgZW5kIGxvb3A7Ci0gICBpdGVtc19hICh0X3RibCdMYXN0ICsgMSkgOj0gTnVsbF9JdGVtOworICAgaXRlbXNfYS5hbGwgKHRfdGJsJ0xhc3QgKyAxKSA6PSBOdWxsX0l0ZW07CiAKICAgIG0gOj0gTmV3X01lbnUgKGl0ZW1zX2EpOwogCmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLXV0aWwuYWRiIGIvQWRhOTUvc2FtcGxlcy9uY3Vyc2VzMi11dGlsLmFkYgppbmRleCA4YWUzMjcyLi5lMGYzZDM1IDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL25jdXJzZXMyLXV0aWwuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvbmN1cnNlczItdXRpbC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA4LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTYgKzM1LDEyIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6IEV1Z2VuZSBWLiBNZWxhcmFnbm8gPGFsZG9tZWxAaXgubmV0Y29tLmNvbT4gMjAwMAogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS43ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MToyMCAkCistLSAgJFJldmlzaW9uOiAxLjkgJAorLS0gICREYXRlOiAyMDE0LzA1LzI0IDIxOjMyOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuVGV4dF9JTzsgdXNlIEFkYS5UZXh0X0lPOwogCi1wcmFnbWEgV2FybmluZ3MgKE9mZik7Ci13aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwotcHJhZ21hIFdhcm5pbmdzIChPbik7Ci0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UcmFjZTsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVHJhY2U7CiAKIHdpdGggSW50ZXJmYWNlcy5DOwpAQCAtMTE1LDcgKzExMSw2IEBACiAgICBwcm9jZWR1cmUgQ2Fubm90IChzIDogU3RyaW5nKSBpcwogICAgICAgdXNlIEludGVyZmFjZXMuQzsKICAgICAgIHVzZSBJbnRlcmZhY2VzLkMuU3RyaW5nczsKLSAgICAgIHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsKICAgICAgIGZ1bmN0aW9uIGdldGVudiAoeCA6IGNoYXJfYXJyYXkpICByZXR1cm4gY2hhcnNfcHRyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgZ2V0ZW52LCAiZ2V0ZW52Iik7CiAgICAgICB0bXAxIDogY2hhcl9hcnJheSAoMCAuLiAxMCk7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1jdXJzZXNfZGVtby5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1jdXJzZXNfZGVtby5hZGIKaW5kZXggNzAwZGE3Ni4uNGRkOTZhNyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtY3Vyc2VzX2RlbW8uYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWN1cnNlc19kZW1vLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTUgJAotLS0gICREYXRlOiAyMDA0LzA4LzIxIDIxOjM3OjAwICQKKy0tICAkUmV2aXNpb246IDEuMTcgJAorLS0gICREYXRlOiAyMDExLzAzLzIzIDAwOjI5OjA0ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKQEAgLTYxLDcgKzYxLDcgQEAKICAgIHR5cGUgVXNlcl9EYXRhX0FjY2VzcyBpcyBhY2Nlc3MgYWxsIFVzZXJfRGF0YTsKICAgIHBhY2thZ2UgUFVEIGlzIG5ldyBQYW5lbHMuVXNlcl9EYXRhIChVc2VyX0RhdGEsIFVzZXJfRGF0YV9BY2Nlc3MpOwogICAgLS0gIFdlIHVzZSBhYm92ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBnZW5lcmljIFVzZXJfRGF0YSBwYWNrYWdlIHRvCi0gICAtLSAgZGVtb25zdHJhdGUgYW5kIHRlc3QgdGhlIHVzZSBvZiB0aGUgdXNlciBkYXRhIG1hZWNoYW5pc20uCisgICAtLSAgZGVtb25zdHJhdGUgYW5kIHRlc3QgdGhlIHVzZSBvZiB0aGUgdXNlciBkYXRhIG1lY2hhbmlzbS4KIAogICAgcHJvY2VkdXJlIERlbW8KICAgIGlzCkBAIC0xMjIsOSArMTIyLDkgQEAKICAgICAgICAgIGRlY2xhcmUKICAgICAgICAgICAgIE8gOiBJdGVtX09wdGlvbl9TZXQ7CiAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgR2V0X09wdGlvbnMgKEl0bSAoMiksIE8pOworICAgICAgICAgICAgR2V0X09wdGlvbnMgKEl0bS5hbGwgKDIpLCBPKTsKICAgICAgICAgICAgIE8uU2VsZWN0YWJsZSA6PSBGYWxzZTsKLSAgICAgICAgICAgIFNldF9PcHRpb25zIChJdG0gKDIpLCBPKTsKKyAgICAgICAgICAgIFNldF9PcHRpb25zIChJdG0uYWxsICgyKSwgTyk7CiAgICAgICAgICBlbmQ7CiAgICAgICBlbmQgaWY7CiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWV4cGxhbmF0aW9uLmFkYiBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWV4cGxhbmF0aW9uLmFkYgppbmRleCAxMmE4ZGViLi5hMmQxODIyIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1leHBsYW5hdGlvbi5hZGIKKysrIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZXhwbGFuYXRpb24uYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4yMCAkCi0tLSAgJERhdGU6IDIwMDYvMDYvMjUgMTQ6MzA6MjIgJAorLS0gICRSZXZpc2lvbjogMS4yNyAkCistLSAgJERhdGU6IDIwMTQvMDkvMTMgMTk6MTA6MTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgUG9vciBtYW5zIGhlbHAgc3lzdGVtLiBUaGlzIHNjYW5zIGEgc2VxdWVudGlhbCBmaWxlIGZvciBrZXkgbGluZXMgYW5kCkBAIC01OCw3ICs1OCw3IEBACiAgICBIZWxwX0tleXMgOiBjb25zdGFudCBTdHJpbmcgOj0gIkhFTFBLRVlTIjsKICAgIEluX0hlbHAgICA6IGNvbnN0YW50IFN0cmluZyA6PSAiSU5IRUxQIjsKIAotICAgRmlsZV9OYW1lIDogY29uc3RhbnQgU3RyaW5nIDo9ICJleHBsYWluLm1zZyI7CisgICBGaWxlX05hbWUgOiBjb25zdGFudCBTdHJpbmcgOj0gImV4cGxhaW4udHh0IjsKICAgIEYgOiBGaWxlX1R5cGU7CiAKICAgIHR5cGUgSGVscF9MaW5lOwpAQCAtNzMsOCArNzMsOCBAQAogICAgICAgICAgTGluZSA6IFN0cmluZ19BY2Nlc3M7CiAgICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgRXhwbGFpbiAoS2V5IDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgRXhwbGFpbiAoS2V5IDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdyk7CiAKICAgIHByb2NlZHVyZSBSZWxlYXNlX1N0cmluZyBpcwogICAgICBuZXcgQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb24gKFN0cmluZywKQEAgLTg2LDE0ICs4NiwxNiBAQAogICAgZnVuY3Rpb24gU2VhcmNoIChLZXkgOiBTdHJpbmcpIHJldHVybiBIZWxwX0xpbmVfQWNjZXNzOwogICAgcHJvY2VkdXJlIFJlbGVhc2VfSGVscCAoUm9vdCA6IGluIG91dCBIZWxwX0xpbmVfQWNjZXNzKTsKIAotICAgcHJvY2VkdXJlIEV4cGxhaW4gKEtleSA6IGluIFN0cmluZykKKyAgIGZ1bmN0aW9uIENoZWNrX0ZpbGUgKE5hbWUgOiBTdHJpbmcpIHJldHVybiBCb29sZWFuOworCisgICBwcm9jZWR1cmUgRXhwbGFpbiAoS2V5IDogU3RyaW5nKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBFeHBsYWluIChLZXksIE51bGxfV2luZG93KTsKICAgIGVuZCBFeHBsYWluOwogCi0gICBwcm9jZWR1cmUgRXhwbGFpbiAoS2V5IDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdykKKyAgIHByb2NlZHVyZSBFeHBsYWluIChLZXkgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgV2luIDogV2luZG93KQogICAgaXMKICAgICAgIC0tICBSZXRyaWV2ZSB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkgYW5kIGRpc3BsYXkgaXQgaW4gdGhpcwogICAgICAgLS0gIHdpbmRvdy4gSWYgbm8gd2luZG93IGFyZ3VtZW50IGlzIHBhc3NlZCwgdGhlIHJvdXRpbmUgd2lsbCBjcmVhdGUKQEAgLTEyNiw3ICsxMjgsNyBAQAogICAgICAgICAgQWRkIChXLCBLZXkpOwogICAgICAgICAgQWRkIChXLCAiIG5vdCBmb3VuZC4iKTsKICAgICAgICAgIEFkZCAoVywgQ2hhcmFjdGVyJ1ZhbCAoMTApKTsKLSAgICAgICAgIEFkZCAoVywgIlByZXNzIHRoZSBGdW5jdGlvbiBrZXkgbGFiZWxsZWQgJ1F1aXQnIGtleSB0byBjb250aW51ZS4iKTsKKyAgICAgICAgIEFkZCAoVywgIlByZXNzIHRoZSBGdW5jdGlvbiBrZXkgbGFiZWxlZCAnUXVpdCcga2V5IHRvIGNvbnRpbnVlLiIpOwogICAgICAgZW5kIFVua25vd25fS2V5OwogCiAgICAgICBwcm9jZWR1cmUgUmVkbwpAQCAtMTM1LDkgKzEzNyw5IEBACiAgICAgICBiZWdpbgogICAgICAgICAgaWYgVG9wX0xpbmUgLz0gbnVsbCB0aGVuCiAgICAgICAgICAgICBmb3IgTCBpbiAwIC4uIChIZWlnaHQgLSAxKSBsb29wCi0gICAgICAgICAgICAgICBBZGQgKFcsIEwsIDAsIEguTGluZS5hbGwpOwotICAgICAgICAgICAgICAgZXhpdCB3aGVuIEguTmV4dCA9IG51bGw7Ci0gICAgICAgICAgICAgICBIIDo9IEguTmV4dDsKKyAgICAgICAgICAgICAgIEFkZCAoVywgTCwgMCwgSC5hbGwuTGluZS5hbGwpOworICAgICAgICAgICAgICAgZXhpdCB3aGVuIEguYWxsLk5leHQgPSBudWxsOworICAgICAgICAgICAgICAgSCA6PSBILmFsbC5OZXh0OwogICAgICAgICAgICAgZW5kIGxvb3A7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBVbmtub3duX0tleTsKQEAgLTE4MSwxMiArMTgzLDEyIEBACiAgICAgICAgICBMIDogTGluZV9Qb3NpdGlvbiA6PSAwOwogICAgICAgYmVnaW4KICAgICAgICAgIGxvb3AKLSAgICAgICAgICAgIEFkZCAoVywgTCwgMCwgQy5MaW5lLmFsbCk7CisgICAgICAgICAgICBBZGQgKFcsIEwsIDAsIEMuYWxsLkxpbmUuYWxsKTsKICAgICAgICAgICAgIEwgOj0gTCArIDE7Ci0gICAgICAgICAgICBleGl0IHdoZW4gQy5OZXh0ID0gbnVsbCBvciBlbHNlIEwgPSBIZWlnaHQ7Ci0gICAgICAgICAgICBDIDo9IEMuTmV4dDsKKyAgICAgICAgICAgIGV4aXQgd2hlbiBDLmFsbC5OZXh0ID0gbnVsbCBvciBlbHNlIEwgPSBIZWlnaHQ7CisgICAgICAgICAgICBDIDo9IEMuYWxsLk5leHQ7CiAgICAgICAgICBlbmQgbG9vcDsKLSAgICAgICAgIGlmIEMuTmV4dCAvPSBudWxsIHRoZW4KKyAgICAgICAgIGlmIEMuYWxsLk5leHQgLz0gbnVsbCB0aGVuCiAgICAgICAgICAgICBwcmFnbWEgQXNzZXJ0IChMID0gSGVpZ2h0KTsKICAgICAgICAgICAgIE1vcmUgOj0gVHJ1ZTsKICAgICAgICAgIGVsc2UKQEAgLTI0OCwyMCArMjUwLDIwIEBACiAgICAgICAgICAgICAgICBpZiBLIGluIFNwZWNpYWxfS2V5X0NvZGUnUmFuZ2UgdGhlbgogICAgICAgICAgICAgICAgICAgY2FzZSBLIGlzCiAgICAgICAgICAgICAgICAgICAgICB3aGVuIEtleV9DdXJzb3JfRG93biA9PgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgQ3VycmVudC5OZXh0IC89IG51bGwgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgQ3VycmVudC5hbGwuTmV4dCAvPSBudWxsIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdmVfQ3Vyc29yIChXLCBIZWlnaHQgLSAxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbCAoVywgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IDo9IEN1cnJlbnQuTmV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvcF9MaW5lIDo9IFRvcF9MaW5lLk5leHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgKFcsIEN1cnJlbnQuTGluZS5hbGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCA6PSBDdXJyZW50LmFsbC5OZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9wX0xpbmUgOj0gVG9wX0xpbmUuYWxsLk5leHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgKFcsIEN1cnJlbnQuYWxsLkxpbmUuYWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgICAgICAgICAgICAgIHdoZW4gS2V5X0N1cnNvcl9VcCA9PgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9wX0xpbmUuUHJldiAvPSBudWxsIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFRvcF9MaW5lLmFsbC5QcmV2IC89IG51bGwgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKFcsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Nyb2xsIChXLCAtMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBUb3BfTGluZSA6PSBUb3BfTGluZS5QcmV2OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCA6PSBDdXJyZW50LlByZXY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgKFcsIFRvcF9MaW5lLkxpbmUuYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvcF9MaW5lIDo9IFRvcF9MaW5lLmFsbC5QcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCA6PSBDdXJyZW50LmFsbC5QcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkIChXLCBUb3BfTGluZS5hbGwuTGluZS5hbGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgICAgICAgICAgICAgd2hlbiBRVUlUX0NPREUgPT4gZXhpdDsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gb3RoZXJzID0+IG51bGw7CkBAIC0zMTksOCArMzIxLDEwIEBACiAgICAgICBPdXRlciA6CiAgICAgICBsb29wCiAgICAgICAgICBleGl0IE91dGVyIHdoZW4gbm90IE5leHRfTGluZTsKLSAgICAgICAgIGlmIExhc3QgPSAoMSArIEtleSdMZW5ndGgpIGFuZCB0aGVuIEtleSA9IEJ1ZmZlciAoMiAuLiBMYXN0KQotICAgICAgICAgICBhbmQgdGhlbiBCdWZmZXIgKDEpID0gJyMnIHRoZW4KKyAgICAgICAgIGlmIExhc3QgPSAoMSArIEtleSdMZW5ndGgpCisgICAgICAgICAgIGFuZCB0aGVuIEtleSA9IEJ1ZmZlciAoMiAuLiBMYXN0KQorICAgICAgICAgICBhbmQgdGhlbiBCdWZmZXIgKDEpID0gJyMnCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBsb29wCiAgICAgICAgICAgICAgICBleGl0IHdoZW4gbm90IE5leHRfTGluZTsKICAgICAgICAgICAgICAgIGV4aXQgd2hlbiBCdWZmZXIgKDEpID0gJyMnOwpAQCAtMzMwLDggKzMzNCw4IEBACiAgICAgICAgICAgICAgICAgICBSZWxlYXNlX0hlbHAgKFJvb3QpOwogICAgICAgICAgICAgICAgICAgUm9vdCA6PSBDdXJyZW50OwogICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgVGFpbC5OZXh0IDo9IEN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgICBDdXJyZW50LlByZXYgOj0gVGFpbDsKKyAgICAgICAgICAgICAgICAgIFRhaWwuYWxsLk5leHQgOj0gQ3VycmVudDsKKyAgICAgICAgICAgICAgICAgIEN1cnJlbnQuYWxsLlByZXYgOj0gVGFpbDsKICAgICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgICAgICAgIFRhaWwgOj0gQ3VycmVudDsKICAgICAgICAgICAgIGVuZCBsb29wOwpAQCAtMzQ3LDggKzM1MSw4IEBACiAgICBiZWdpbgogICAgICAgbG9vcAogICAgICAgICAgZXhpdCB3aGVuIFJvb3QgPSBudWxsOwotICAgICAgICAgTmV4dCA6PSBSb290Lk5leHQ7Ci0gICAgICAgICBSZWxlYXNlX1N0cmluZyAoUm9vdC5MaW5lKTsKKyAgICAgICAgIE5leHQgOj0gUm9vdC5hbGwuTmV4dDsKKyAgICAgICAgIFJlbGVhc2VfU3RyaW5nIChSb290LmFsbC5MaW5lKTsKICAgICAgICAgIFJlbGVhc2VfSGVscF9MaW5lIChSb290KTsKICAgICAgICAgIFJvb3QgOj0gTmV4dDsKICAgICAgIGVuZCBsb29wOwpAQCAtMzYwLDcgKzM2NCw3IEBACiAgICAgICBFeHBsYWluIChDb250ZXh0KTsKICAgIGVuZCBFeHBsYWluX0NvbnRleHQ7CiAKLSAgIHByb2NlZHVyZSBOb3RlcGFkIChLZXkgOiBpbiBTdHJpbmcpCisgICBwcm9jZWR1cmUgTm90ZXBhZCAoS2V5IDogU3RyaW5nKQogICAgaXMKICAgICAgIEggOiBjb25zdGFudCBIZWxwX0xpbmVfQWNjZXNzIDo9IFNlYXJjaCAoS2V5KTsKICAgICAgIFQgOiBIZWxwX0xpbmVfQWNjZXNzIDo9IEg7CkBAIC0zNzEsNyArMzc1LDcgQEAKICAgIGJlZ2luCiAgICAgICBpZiBIIC89IG51bGwgdGhlbgogICAgICAgICAgbG9vcAotICAgICAgICAgICAgVCA6PSBULk5leHQ7CisgICAgICAgICAgICBUIDo9IFQuYWxsLk5leHQ7CiAgICAgICAgICAgICBleGl0IHdoZW4gVCA9IG51bGw7CiAgICAgICAgICAgICBOIDo9IE4gKyAxOwogICAgICAgICAgZW5kIGxvb3A7CkBAIC0zOTEsOSArMzk1LDkgQEAKICAgICAgICAgIFAgOj0gTmV3X1BhbmVsIChXKTsKICAgICAgICAgIFQgOj0gSDsKICAgICAgICAgIGxvb3AKLSAgICAgICAgICAgIEFkZCAoVywgTCArIDEsIDEsIFQuTGluZS5hbGwsIEludGVnZXIgKENvbHVtbnMgLSAyKSk7CisgICAgICAgICAgICBBZGQgKFcsIEwgKyAxLCAxLCBULmFsbC5MaW5lLmFsbCwgSW50ZWdlciAoQ29sdW1ucyAtIDIpKTsKICAgICAgICAgICAgIEwgOj0gTCArIDE7Ci0gICAgICAgICAgICBUIDo9IFQuTmV4dDsKKyAgICAgICAgICAgIFQgOj0gVC5hbGwuTmV4dDsKICAgICAgICAgICAgIGV4aXQgd2hlbiBUID0gbnVsbDsKICAgICAgICAgIGVuZCBsb29wOwogICAgICAgICAgVCA6PSBIOwpAQCAtNDAzLDYgKzQwNywyNiBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIE5vdGVwYWQ7CiAKKyAgIGZ1bmN0aW9uIENoZWNrX0ZpbGUgKE5hbWUgOiBTdHJpbmcpIHJldHVybiBCb29sZWFuIGlzCisgICAgICBUaGVfRmlsZSA6IEZpbGVfVHlwZTsKKyAgIGJlZ2luCisgICAgICBPcGVuIChUaGVfRmlsZSwgSW5fRmlsZSwgTmFtZSk7CisgICAgICBDbG9zZSAoVGhlX0ZpbGUpOworICAgICAgcmV0dXJuIFRydWU7CisgICBleGNlcHRpb24KKyAgICAgIHdoZW4gTmFtZV9FcnJvciA9PgorICAgICAgICAgcmV0dXJuIEZhbHNlOworICAgZW5kIENoZWNrX0ZpbGU7CisKIGJlZ2luCi0gICBPcGVuIChGLCBJbl9GaWxlLCBGaWxlX05hbWUpOworICAgaWYgQ2hlY2tfRmlsZSAoIi91c3Ivc2hhcmUvQWRhQ3Vyc2VzLyIgJiBGaWxlX05hbWUpIHRoZW4KKyAgICAgIE9wZW4gKEYsIEluX0ZpbGUsICIvdXNyL3NoYXJlL0FkYUN1cnNlcy8iICYgRmlsZV9OYW1lKTsKKyAgIGVsc2lmIENoZWNrX0ZpbGUgKEZpbGVfTmFtZSkgdGhlbgorICAgICAgT3BlbiAoRiwgSW5fRmlsZSwgRmlsZV9OYW1lKTsKKyAgIGVsc2UKKyAgICAgIFB1dF9MaW5lIChTdGFuZGFyZF9FcnJvciwKKyAgICAgICAgICAgICAgICAiVGhlIGZpbGUgZXhwbGFpbi50eHQgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuIgorICAgICAgICAgICAgICAgICk7CisgICAgICByYWlzZSBOYW1lX0Vycm9yOworICAgZW5kIGlmOwogZW5kIFNhbXBsZS5FeHBsYW5hdGlvbjsKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWV4cGxhbmF0aW9uLmFkcyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWV4cGxhbmF0aW9uLmFkcwppbmRleCAxODYxN2FjLi43Mjg4MjVlIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1leHBsYW5hdGlvbi5hZHMKKysrIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZXhwbGFuYXRpb24uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4xMCAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIFBvb3IgbWFucyBoZWxwIHN5c3RlbS4gVGhpcyBzY2FucyBhIHNlcXVlbnRpYWwgZmlsZSBmb3Iga2V5IGxpbmVzIGFuZApAQCAtNDQsMTMgKzQ0LDEzIEBACiAtLQogcGFja2FnZSBTYW1wbGUuRXhwbGFuYXRpb24gaXMKIAotICAgcHJvY2VkdXJlIEV4cGxhaW4gKEtleSA6IGluIFN0cmluZyk7CisgICBwcm9jZWR1cmUgRXhwbGFpbiAoS2V5IDogU3RyaW5nKTsKICAgIC0tICBSZXRyaWV2ZSB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkgYW5kIGRpc3BsYXkgaXQuCiAKICAgIHByb2NlZHVyZSBFeHBsYWluX0NvbnRleHQ7CiAgICAtLSAgRXhwbGFpbiB0aGUgY3VycmVudCBjb250ZXh0LgogCi0gICBwcm9jZWR1cmUgTm90ZXBhZCAoS2V5IDogaW4gU3RyaW5nKTsKKyAgIHByb2NlZHVyZSBOb3RlcGFkIChLZXkgOiBTdHJpbmcpOwogICAgLS0gIFB1dCBhIG5vdGUgb24gdGhlIHNjcmVlbiBhbmQgbWFpbnRhaW4gaXQgd2l0aCB0aGUgY29udGV4dAogCiAgICBFeHBsYW5hdGlvbl9Ob3RfRm91bmQgOiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8tYXV4LmFkYiBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRiCmluZGV4IDgxYzk3YWQuLmEzYjA0NGQgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4xNiAkCi0tLSAgJERhdGU6IDIwMDQvMDgvMjEgMjE6Mzc6MDAgJAorLS0gICRSZXZpc2lvbjogMS4xNyAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEFkYS5DaGFyYWN0ZXJzLkxhdGluXzE7IHVzZSBBZGEuQ2hhcmFjdGVycy5MYXRpbl8xOwpAQCAtNDgsNyArNDgsNyBAQAogCiBwYWNrYWdlIGJvZHkgU2FtcGxlLkZvcm1fRGVtby5BdXggaXMKIAotICAgcHJvY2VkdXJlIEdlb21ldHJ5IChGICA6IGluICBGb3JtOworICAgcHJvY2VkdXJlIEdlb21ldHJ5IChGICA6IEZvcm07CiAgICAgICAgICAgICAgICAgICAgICAgIEwgIDogb3V0IExpbmVfQ291bnQ7ICAgICAgICAtLSBMaW5lcyB1c2VkIGZvciBtZW51CiAgICAgICAgICAgICAgICAgICAgICAgIEMgIDogb3V0IENvbHVtbl9Db3VudDsgICAgICAtLSBDb2x1bW5zIHVzZWQgZm9yIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAgWSAgOiBvdXQgTGluZV9Qb3NpdGlvbjsgICAgIC0tIFByb3Bvc2VkIExpbmUgZm9yIG1lbnUKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgcmV0dXJuIFBhbjsKICAgIGVuZCBDcmVhdGU7CiAKLSAgIHByb2NlZHVyZSBEZXN0cm95IChGIDogaW4gRm9ybTsKKyAgIHByb2NlZHVyZSBEZXN0cm95IChGIDogRm9ybTsKICAgICAgICAgICAgICAgICAgICAgICBQIDogaW4gb3V0IFBhbmVsKQogICAgaXMKICAgICAgIFcsIFMgOiBXaW5kb3c7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8tYXV4LmFkcyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRzCmluZGV4IDIzMTdlMTQuLjdlN2Y3Y2QgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRzCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1hdXguYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS45ICQKKy0tICAkUmV2aXNpb246IDEuMTEgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7IHVzZSAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKQEAgLTQ0LDEyICs0NCwxMiBAQAogCiBwYWNrYWdlIFNhbXBsZS5Gb3JtX0RlbW8uQXV4IGlzCiAKLSAgIHByb2NlZHVyZSBHZW9tZXRyeSAoRiAgOiBpbiAgRm9ybTsKKyAgIHByb2NlZHVyZSBHZW9tZXRyeSAoRiAgOiBGb3JtOwogICAgICAgICAgICAgICAgICAgICAgICBMICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICBDICA6IG91dCBDb2x1bW5fQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIFkgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIFggIDogb3V0IENvbHVtbl9Qb3NpdGlvbik7Ci0gICAtLSAgQ2FsY3VsYXRlIHRoZSBnZW9tZXRyeSBmb3IgYSBwYW5lbCBiZWVpbmcgYWJsZSB0byBiZSB1c2VkIHRvIGRpc3BsYXkKKyAgIC0tICBDYWxjdWxhdGUgdGhlIGdlb21ldHJ5IGZvciBhIHBhbmVsIGJlaW5nIGFibGUgdG8gYmUgdXNlZCB0byBkaXNwbGF5CiAgICAtLSAgdGhlIG1lbnUuCiAKICAgIGZ1bmN0aW9uIENyZWF0ZSAoRiAgICAgOiBGb3JtOwpAQCAtNTksNyArNTksNyBAQAogICAgLS0gIENyZWF0ZSBhIHBhbmVsIGRlY29yYXRlZCB3aXRoIGEgZnJhbWUgYW5kIHRoZSB0aXRsZSBhdCB0aGUgc3BlY2lmaWVkCiAgICAtLSAgcG9zaXRpb24uIFRoZSBkaW1lbnNpb24gb2YgdGhlIHBhbmVsIGlzIGRlcml2ZWQgZnJvbSB0aGUgbWVudXMgbGF5b3V0LgogCi0gICBwcm9jZWR1cmUgRGVzdHJveSAoRiA6IGluIEZvcm07CisgICBwcm9jZWR1cmUgRGVzdHJveSAoRiA6IEZvcm07CiAgICAgICAgICAgICAgICAgICAgICAgUCA6IGluIG91dCBQYW5lbCk7CiAgICAtLSAgRGVzdHJveSBhbGwgdGhlIHdpbmRvd2luZyBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lbnUgYW5kCiAgICAtLSAgcGFuZWwuCmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8taGFuZGxlci5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8taGFuZGxlci5hZGIKaW5kZXggYWZlODZmNy4uZDg3MWMxYyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZm9ybV9kZW1vLWhhbmRsZXIuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1oYW5kbGVyLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTMgJAotLS0gICREYXRlOiAyMDA0LzA4LzIxIDIxOjM3OjAwICQKKy0tICAkUmV2aXNpb246IDEuMTQgJAorLS0gICREYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBTYW1wbGUuRm9ybV9EZW1vLkF1eDsKQEAgLTQ1LDggKzQ1LDggQEAKIAogICAgcGFja2FnZSBBdXggcmVuYW1lcyBTYW1wbGUuRm9ybV9EZW1vLkF1eDsKIAotICAgcHJvY2VkdXJlIERyaXZlX01lIChGICAgICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogaW4gU3RyaW5nIDo9ICIiKQorICAgcHJvY2VkdXJlIERyaXZlX01lIChGICAgICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKQogICAgaXMKICAgICAgIEwgOiBMaW5lX0NvdW50OwogICAgICAgQyA6IENvbHVtbl9Db3VudDsKQEAgLTU3LDEwICs1NywxMCBAQAogICAgICAgRHJpdmVfTWUgKEYsIFksIFgsIFRpdGxlKTsKICAgIGVuZCBEcml2ZV9NZTsKIAotICAgcHJvY2VkdXJlIERyaXZlX01lIChGICAgICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgIExpbiAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogaW4gU3RyaW5nIDo9ICIiKQorICAgcHJvY2VkdXJlIERyaXZlX01lIChGICAgICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgIExpbiAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKQogICAgaXMKICAgICAgIFBhbiA6IFBhbmVsIDo9IEF1eC5DcmVhdGUgKEYsIFRpdGxlLCBMaW4sIENvbCk7CiAgICAgICBWICAgOiBDdXJzb3JfVmlzaWJpbGl0eSA6PSBOb3JtYWw7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8taGFuZGxlci5hZHMgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8taGFuZGxlci5hZHMKaW5kZXggNGE1NjQxMi4uN2Q4NzVhMCAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZm9ybV9kZW1vLWhhbmRsZXIuYWRzCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby1oYW5kbGVyLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuOSAkCistLSAgJFJldmlzaW9uOiAxLjEwICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOwpAQCAtNTEsMTQgKzUxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbiA6IFBhbmVsKSByZXR1cm4gQm9vbGVhbjsKIHBhY2thZ2UgU2FtcGxlLkZvcm1fRGVtby5IYW5kbGVyIGlzCiAKLSAgIHByb2NlZHVyZSBEcml2ZV9NZSAoRiAgICAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICBMaW4gICA6IGluIExpbmVfUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgIENvbCAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA6IGluIFN0cmluZyA6PSAiIik7CisgICBwcm9jZWR1cmUgRHJpdmVfTWUgKEYgICAgIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgTGluICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICBDb2wgICA6IENvbHVtbl9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBTdHJpbmcgOj0gIiIpOwogICAgLS0gIFBvc2l0aW9uIHRoZSBtZW51IGF0IHRoZSBnaXZlbiBwb2ludCBhbmQgZHJpdmUgaXQuCiAKLSAgIHByb2NlZHVyZSBEcml2ZV9NZSAoRiAgICAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA6IGluIFN0cmluZyA6PSAiIik7CisgICBwcm9jZWR1cmUgRHJpdmVfTWUgKEYgICAgIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBTdHJpbmcgOj0gIiIpOwogICAgLS0gIENlbnRlciBtZW51IGFuZCBkcml2ZSBpdC4KIAogZW5kIFNhbXBsZS5Gb3JtX0RlbW8uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mb3JtX2RlbW8uYWRiCmluZGV4IGUyNmE1ZDkuLmVkODQ1MjYgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZvcm1fZGVtby5hZGIKKysrIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZm9ybV9kZW1vLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTUgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuMTYgJAorLS0gICREYXRlOiAyMDExLzAzLzIzIDAwOjQ0OjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKQEAgLTEwOCwxNiArMTA4LDE2IEBACiAgICAgICBOb3RlcGFkICgiRk9STS1QQUQwMCIpOwogICAgICAgRGVmYXVsdF9MYWJlbHM7CiAKLSAgICAgIFNldF9GaWVsZF9UeXBlIChGQSAoNiksIEVudW1fRmllbGQpOwotICAgICAgU2V0X0ZpZWxkX1R5cGUgKEZBICg3KSwgSV9GKTsKLSAgICAgIFNldF9GaWVsZF9UeXBlIChGQSAoOCksIE1mdCk7CisgICAgICBTZXRfRmllbGRfVHlwZSAoRkEuYWxsICg2KSwgRW51bV9GaWVsZCk7CisgICAgICBTZXRfRmllbGRfVHlwZSAoRkEuYWxsICg3KSwgSV9GKTsKKyAgICAgIFNldF9GaWVsZF9UeXBlIChGQS5hbGwgKDgpLCBNZnQpOwogCiAgICAgICBGMSA6PSBuZXcgVXNlcl9EYXRhJyhEYXRhID0+IDQ3MTEpOwotICAgICAgRmxkX1UuU2V0X1VzZXJfRGF0YSAoRkEgKDEpLCBGMSk7CisgICAgICBGbGRfVS5TZXRfVXNlcl9EYXRhIChGQS5hbGwgKDEpLCBGMSk7CiAKICAgICAgIEZoLkRyaXZlX01lIChGcm0pOwogCi0gICAgICBGbGRfVS5HZXRfVXNlcl9EYXRhIChGQSAoMSksIEYyKTsKKyAgICAgIEZsZF9VLkdldF9Vc2VyX0RhdGEgKEZBLmFsbCAoMSksIEYyKTsKICAgICAgIHByYWdtYSBBc3NlcnQgKEYxID0gRjIpOwogICAgICAgcHJhZ21hIEFzc2VydCAoRjEuRGF0YSA9IEYyLkRhdGEpOwogCmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mdW5jdGlvbl9rZXlfc2V0dGluZy5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mdW5jdGlvbl9rZXlfc2V0dGluZy5hZGIKaW5kZXggZTQwZTRhNC4uNGZmNzBiZSAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZnVuY3Rpb25fa2V5X3NldHRpbmcuYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZ1bmN0aW9uX2tleV9zZXR0aW5nLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTMgJAotLS0gICREYXRlOiAyMDA0LzA4LzIxIDIxOjM3OjAwICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAorLS0gICREYXRlOiAyMDExLzAzLzIzIDAwOjQ0OjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbjsKQEAgLTgxLDI1ICs4MSwyNSBAQAogCiAgICBUb3BfT2ZfU3RhY2sgOiBFbnZfUHRyIDo9IG51bGw7CiAKLSAgIHByb2NlZHVyZSBQdXNoX0Vudmlyb25tZW50IChLZXkgICA6IGluIFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBQdXNoX0Vudmlyb25tZW50IChLZXkgICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBQIDogY29uc3RhbnQgRW52X1B0ciA6PSBuZXcgS2V5X0Vudmlyb25tZW50IChOdW1iZXJfT2ZfS2V5cyk7CiAgICBiZWdpbgogICAgICAgLS0gIFN0b3JlIHRoZSBjdXJyZW50IGxhYmVscyBpbiB0aGUgZW52aXJvbm1lbnQKICAgICAgIGZvciBJIGluIDEgLi4gTnVtYmVyX09mX0tleXMgbG9vcAotICAgICAgICAgR2V0X1NvZnRfTGFiZWxfS2V5IChJLCBQLkxhYmVscyAoSSkpOworICAgICAgICAgR2V0X1NvZnRfTGFiZWxfS2V5IChJLCBQLmFsbC5MYWJlbHMgKEkpKTsKICAgICAgICAgIGlmIFJlc2V0IHRoZW4KICAgICAgICAgICAgIFNldF9Tb2Z0X0xhYmVsX0tleSAoSSwgIiAiKTsKICAgICAgICAgIGVuZCBpZjsKICAgICAgIGVuZCBsb29wOwotICAgICAgUC5QcmV2IDo9IFRvcF9PZl9TdGFjazsKKyAgICAgIFAuYWxsLlByZXYgOj0gVG9wX09mX1N0YWNrOwogICAgICAgLS0gIG5vdyBzdG9yZSBhY3RpdmUgaGVscCBjb250ZXh0IGFuZCBub3RlcGFkCi0gICAgICBQLkhlbHAgOj0gQWN0aXZlX0NvbnRleHQ7Ci0gICAgICBQLk5vdGVwYWQgOj0gQWN0aXZlX05vdGVwYWQ7CisgICAgICBQLmFsbC5IZWxwIDo9IEFjdGl2ZV9Db250ZXh0OworICAgICAgUC5hbGwuTm90ZXBhZCA6PSBBY3RpdmVfTm90ZXBhZDsKICAgICAgIC0tICBUaGUgbm90ZXBhZCBtdXN0IG5vdyB2YW5pc2ggYW5kIHRoZSBuZXcgbm90ZXBhZCBpcyBlbXB0eS4KLSAgICAgIGlmIFAuTm90ZXBhZCAvPSBOdWxsX1BhbmVsIHRoZW4KLSAgICAgICAgIEhpZGUgKFAuTm90ZXBhZCk7CisgICAgICBpZiBQLmFsbC5Ob3RlcGFkIC89IE51bGxfUGFuZWwgdGhlbgorICAgICAgICAgSGlkZSAoUC5hbGwuTm90ZXBhZCk7CiAgICAgICAgICBVcGRhdGVfUGFuZWxzOwogICAgICAgZW5kIGlmOwogICAgICAgQWN0aXZlX05vdGVwYWQgOj0gTnVsbF9QYW5lbDsKQEAgLTExOSwxNCArMTE5LDE0IEBACiAgICAgICAgICByYWlzZSBGdW5jdGlvbl9LZXlfU3RhY2tfRXJyb3I7CiAgICAgICBlbHNlCiAgICAgICAgICBmb3IgSSBpbiAxIC4uIE51bWJlcl9PZl9LZXlzIGxvb3AKLSAgICAgICAgICAgIFNldF9Tb2Z0X0xhYmVsX0tleSAoSSwgUC5MYWJlbHMgKEkpLCBKdXN0aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIFNldF9Tb2Z0X0xhYmVsX0tleSAoSSwgUC5hbGwuTGFiZWxzIChJKSwgSnVzdGlmaWNhdGlvbik7CiAgICAgICAgICBlbmQgbG9vcDsKICAgICAgICAgIHByYWdtYSBBc3NlcnQgKEFjdGl2ZV9Db250ZXh0IC89IG51bGwpOwogICAgICAgICAgUmVsZWFzZV9TdHJpbmcgKEFjdGl2ZV9Db250ZXh0KTsKLSAgICAgICAgIEFjdGl2ZV9Db250ZXh0IDo9IFAuSGVscDsKKyAgICAgICAgIEFjdGl2ZV9Db250ZXh0IDo9IFAuYWxsLkhlbHA7CiAgICAgICAgICBSZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZTsKLSAgICAgICAgIE5vdGVwYWRfVG9fQ29udGV4dCAoUC5Ob3RlcGFkKTsKLSAgICAgICAgIFRvcF9PZl9TdGFjayA6PSBQLlByZXY7CisgICAgICAgICBOb3RlcGFkX1RvX0NvbnRleHQgKFAuYWxsLk5vdGVwYWQpOworICAgICAgICAgVG9wX09mX1N0YWNrIDo9IFAuYWxsLlByZXY7CiAgICAgICAgICBSZWxlYXNlX0Vudmlyb25tZW50IChQKTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBQb3BfRW52aXJvbm1lbnQ7CkBAIC0xNTAsMTcgKzE1MCwxNyBAQAogICAgICAgZWxzZQogICAgICAgICAgbG9vcAogICAgICAgICAgICAgZXhpdCB3aGVuIFAgPSBudWxsOwotICAgICAgICAgICAgaWYgUC5IZWxwLmFsbCA9IEtleSB0aGVuCisgICAgICAgICAgICBpZiBQLmFsbC5IZWxwLmFsbCA9IEtleSB0aGVuCiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIFAgOj0gUC5QcmV2OworICAgICAgICAgICAgICAgUCA6PSBQLmFsbC5QcmV2OwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgZW5kIGxvb3A7CiAgICAgICAgICByZXR1cm4gRmFsc2U7CiAgICAgICBlbmQgaWY7CiAgICBlbmQgRmluZF9Db250ZXh0OwogCi0gICBwcm9jZWR1cmUgTm90ZXBhZF9Ub19Db250ZXh0IChQYW4gOiBpbiBQYW5lbCkKKyAgIHByb2NlZHVyZSBOb3RlcGFkX1RvX0NvbnRleHQgKFBhbiA6IFBhbmVsKQogICAgaXMKICAgICAgIFcgOiBXaW5kb3c7CiAgICBiZWdpbgpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZnVuY3Rpb25fa2V5X3NldHRpbmcuYWRzIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtZnVuY3Rpb25fa2V5X3NldHRpbmcuYWRzCmluZGV4IGUyMGY2MTkuLjQxODgxNTggMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWZ1bmN0aW9uX2tleV9zZXR0aW5nLmFkcworKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1mdW5jdGlvbl9rZXlfc2V0dGluZy5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjkgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7CkBAIC00NSw4ICs0NSw4IEBACiAtLQogcGFja2FnZSBTYW1wbGUuRnVuY3Rpb25fS2V5X1NldHRpbmcgaXMKIAotICAgcHJvY2VkdXJlIFB1c2hfRW52aXJvbm1lbnQgKEtleSAgIDogaW4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0IDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKKyAgIHByb2NlZHVyZSBQdXNoX0Vudmlyb25tZW50IChLZXkgICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCA6IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgICAtLSAgUHVzaCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBrZXlzIG9uIGFuIGludGVybmFsCiAgICAtLSAgc3RhY2suIElmIHRoZSByZXNldCBmbGFnIGlzIHRydWUsIGFsbCBsYWJlbHMgYXJlIHJlc2V0IHdoaWxlCiAgICAtLSAgcHVzaGVkLCBzbyB0aGUgbmV3IGVudmlyb25tZW50IGNhbiBhc3N1bWUgYSB0YWJ1bGEgcmFzYS4KQEAgLTYyLDEzICs2MiwxMyBAQAogICAgLS0gIEluaXRpYWxpemUgdGhlIGVudmlyb25tZW50CiAKICAgIGZ1bmN0aW9uIENvbnRleHQgcmV0dXJuIFN0cmluZzsKLSAgIC0tICBSZXR1cm4gdGhlIGN1cnJlbnQgY29udGV4dCBpZGVudGl0ZmllcgorICAgLS0gIFJldHVybiB0aGUgY3VycmVudCBjb250ZXh0IGlkZW50aWZpZXIKIAogICAgZnVuY3Rpb24gRmluZF9Db250ZXh0IChLZXkgOiBTdHJpbmcpIHJldHVybiBCb29sZWFuOwogICAgLS0gIExvb2sgZm9yIGEgY29udGV4dCwgcmV0dXJuIHRydWUgaWYgaXQgaXMgaW4gdGhlIHN0YWNrLAogICAgLS0gIGZhbHNlIG90aGVyd2lzZS4KIAotICAgcHJvY2VkdXJlIE5vdGVwYWRfVG9fQ29udGV4dCAoUGFuIDogaW4gUGFuZWwpOworICAgcHJvY2VkdXJlIE5vdGVwYWRfVG9fQ29udGV4dCAoUGFuIDogUGFuZWwpOwogICAgLS0gIEFkZCBhIHBhbmVsIHJlcHJlc2VudGluZyBhIG5vdGVwYWQgdG8gdGhlIGN1cnJlbnQgY29udGV4dC4KIAogICAgRnVuY3Rpb25fS2V5X1N0YWNrX0Vycm9yIDogZXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVhZGVyX2hhbmRsZXIuYWRiIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVhZGVyX2hhbmRsZXIuYWRiCmluZGV4IGQxOThkNjYuLmY1NTJlMjAgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWhlYWRlcl9oYW5kbGVyLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1oZWFkZXJfaGFuZGxlci5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTQgKzM1LDE2IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTYgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuMjAgJAorLS0gICREYXRlOiAyMDE0LzA5LzEzIDE5OjEwOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuQ2FsZW5kYXI7IHVzZSBBZGEuQ2FsZW5kYXI7CiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5JbnRlZ2VyX0lPOwogd2l0aCBTYW1wbGUuTWFuaWZlc3Q7IHVzZSBTYW1wbGUuTWFuaWZlc3Q7CiAKK3ByYWdtYSBFbGFib3JhdGVfQWxsIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSW8uSW50ZWdlcl9JTyk7CisKIC0tICBUaGlzIHBhY2thZ2UgaGFuZGxlcyB0aGUgcGFpbnRpbmcgb2YgdGhlIGhlYWRlciBsaW5lIG9mIHRoZSBzY3JlZW4uCiAtLQogcGFja2FnZSBib2R5IFNhbXBsZS5IZWFkZXJfSGFuZGxlciBpcwpAQCAtNjUsNyArNjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogQ29sdW1uX0NvdW50KSByZXR1cm4gSW50ZWdlcjsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBJbml0X0hlYWRlcl9XaW5kb3cpOwogCi0gICBwcm9jZWR1cmUgSW50ZXJuYWxfVXBkYXRlX0hlYWRlcl9XaW5kb3cgKERvX1VwZGF0ZSA6IGluIEJvb2xlYW4pOworICAgcHJvY2VkdXJlIEludGVybmFsX1VwZGF0ZV9IZWFkZXJfV2luZG93IChEb19VcGRhdGUgOiBCb29sZWFuKTsKIAogICAgLS0gIFRoZSBpbml0aWFsaXphdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgSW5pdF9TY3JlZW4uIEl0IHN0ZWFscyB0d28KICAgIC0tICBsaW5lcyBmcm9tIHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4KQEAgLTc1LDExICs3NywxMSBAQAogICAgICAgUmlwX09mZl9MaW5lcyAoMiwgSW5pdF9IZWFkZXJfV2luZG93J0FjY2Vzcyk7CiAgICBlbmQgSW5pdF9IZWFkZXJfSGFuZGxlcjsKIAotICAgcHJvY2VkdXJlIE5fT3V0IChOIDogaW4gSW50ZWdlcik7CisgICBwcm9jZWR1cmUgTl9PdXQgKE4gOiBJbnRlZ2VyKTsKIAogICAgLS0gIEVtaXQgYSB0d28gZGlnaXQgbnVtYmVyIGFuZCBlbnN1cmUgdGhhdCBhIGxlYWRpbmcgemVybyBpcyBnZW5lcmF0ZWQgaWYKICAgIC0tICBuZWNlc3NhcnkuCi0gICBwcm9jZWR1cmUgTl9PdXQgKE4gOiBpbiBJbnRlZ2VyKQorICAgcHJvY2VkdXJlIE5fT3V0IChOIDogSW50ZWdlcikKICAgIGlzCiAgICBiZWdpbgogICAgICAgaWYgTiA8IDEwIHRoZW4KQEAgLTkyLDcgKzk0LDcgQEAKIAogICAgLS0gIFBhaW50IHRoZSBoZWFkZXIgd2luZG93LiBUaGUgaW5wdXQgcGFyYW1ldGVyIGlzIGEgZmxhZyBpbmRpY2F0aW5nCiAgICAtLSAgd2hldGhlciBvciBub3QgdGhlIHNjcmVlbiBzaG91bGQgYmUgdXBkYXRlZCBwaHlzaWNhbGx5IGFmdGVyIHBhaW50aW5nLgotICAgcHJvY2VkdXJlIEludGVybmFsX1VwZGF0ZV9IZWFkZXJfV2luZG93IChEb19VcGRhdGUgOiBpbiBCb29sZWFuKQorICAgcHJvY2VkdXJlIEludGVybmFsX1VwZGF0ZV9IZWFkZXJfV2luZG93IChEb19VcGRhdGUgOiBCb29sZWFuKQogICAgaXMKICAgICAgIHR5cGUgTW9udGhfTmFtZV9BcnJheSBpcwogICAgICAgICAgYXJyYXkgKE1vbnRoX051bWJlcidGaXJzdCAuLiBNb250aF9OdW1iZXInTGFzdCkgb2YgU3RyaW5nICgxIC4uIDkpOwpAQCAtMTE5LDggKzEyMSwxMSBAQAogICAgICAgRCAgICAgIDogY29uc3RhbnQgRGF5X051bWJlciAgIDo9IERheSAoTm93KTsKICAgIGJlZ2luCiAgICAgICBpZiBIZWFkZXJfV2luZG93IC89IE51bGxfV2luZG93IHRoZW4KLSAgICAgICAgIGlmIE1pbnV0ZSAvPSBEaXNwbGF5X01pbiBvciBlbHNlIEhvdXIgLz0gRGlzcGxheV9Ib3VyCi0gICAgICAgICAgIG9yIGVsc2UgRGlzcGxheV9EYXkgLz0gRCBvciBlbHNlIERpc3BsYXlfTW9udGggLz0gTW9uIHRoZW4KKyAgICAgICAgIGlmIE1pbnV0ZSAvPSBEaXNwbGF5X01pbgorICAgICAgICAgICBvciBlbHNlIEhvdXIgLz0gRGlzcGxheV9Ib3VyCisgICAgICAgICAgIG9yIGVsc2UgRGlzcGxheV9EYXkgLz0gRAorICAgICAgICAgICBvciBlbHNlIERpc3BsYXlfTW9udGggLz0gTW9uCisgICAgICAgICB0aGVuCiAgICAgICAgICAgICBNb3ZlX0N1cnNvciAoSGVhZGVyX1dpbmRvdywgMCwgMCk7CiAgICAgICAgICAgICBOX091dCAoRCk7IEFkZCAoSGVhZGVyX1dpbmRvdywgJy4nKTsKICAgICAgICAgICAgIEFkZCAoSGVhZGVyX1dpbmRvdywgTW9udGhfTmFtZXMgKE1vbikpOwpAQCAtMTY5LDcgKzE3NCw3IEBACiAgICAgICAgICBQb3MgOj0gQ29sdW1ucyAtIENvbHVtbl9Qb3NpdGlvbiAoVGl0bGUnTGVuZ3RoKTsKICAgICAgICAgIEFkZCAoV2luLCAwLCBQb3MgLyAyLCBUaXRsZSk7CiAgICAgICAgICAtLSAgSW4gdGhpcyBwaGFzZSB3ZSBtdXN0IG5vdCBhbGxvdyBhIHBoeXNpY2FsIHVwZGF0ZSwgYmVjYXVzZQotICAgICAgICAgLS0gIG5jdXJzZXMgaXNutHQgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgIC0tICBuY3Vyc2VzIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZCBhdCB0aGlzIHBvaW50LgogICAgICAgICAgSW50ZXJuYWxfVXBkYXRlX0hlYWRlcl9XaW5kb3cgKEZhbHNlKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVscGVycy5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1oZWxwZXJzLmFkYgppbmRleCBkMDQ4NTNlLi5jZWVmMjY4IDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1oZWxwZXJzLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1oZWxwZXJzLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSwxOSArMzUsMTkgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4xMiAkCi0tLSAgJERhdGU6IDIwMDgvMDcvMjYgMTg6NDg6MDggJAorLS0gICRSZXZpc2lvbjogMS4xNCAkCistLSAgJERhdGU6IDIwMTEvMDMvMTkgMTI6MTM6MjEgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFNhbXBsZS5FeHBsYW5hdGlvbjsgdXNlIFNhbXBsZS5FeHBsYW5hdGlvbjsKIAotLS0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbnZlbmlhbnQgaGVscGVyIHJvdXRpbmVzIHVzZWQgdGhyb3VnaG91dAorLS0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbnZlbmllbnQgaGVscGVyIHJvdXRpbmVzIHVzZWQgdGhyb3VnaG91dAogLS0gIHRoaXMgZXhhbXBsZS4KIC0tCiBwYWNrYWdlIGJvZHkgU2FtcGxlLkhlbHBlcnMgaXMKIAotICAgcHJvY2VkdXJlIFdpbmRvd19UaXRsZSAoV2luICAgOiBpbiBXaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA6IGluIFN0cmluZykKKyAgIHByb2NlZHVyZSBXaW5kb3dfVGl0bGUgKFdpbiAgIDogV2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBTdHJpbmcpCiAgICBpcwogICAgICAgSGVpZ2h0IDogTGluZV9Db3VudDsKICAgICAgIFdpZHRoICA6IENvbHVtbl9Db3VudDsKZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWhlbHBlcnMuYWRzIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVscGVycy5hZHMKaW5kZXggYzFjOGU3OS4uMjhlODliYiAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVscGVycy5hZHMKKysrIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVscGVycy5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTggKzM1LDE4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuOSAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKIAotLS0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbnZlbmlhbnQgaGVscGVyIHJvdXRpbmVzIHVzZWQgdGhyb3VnaG91dAorLS0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbnZlbmllbnQgaGVscGVyIHJvdXRpbmVzIHVzZWQgdGhyb3VnaG91dAogLS0gIHRoaXMgZXhhbXBsZS4KIC0tCiBwYWNrYWdlIFNhbXBsZS5IZWxwZXJzIGlzCiAKLSAgIHByb2NlZHVyZSBXaW5kb3dfVGl0bGUgKFdpbiAgIDogaW4gV2luZG93OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBpbiBTdHJpbmcpOworICAgcHJvY2VkdXJlIFdpbmRvd19UaXRsZSAoV2luICAgOiBXaW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA6IFN0cmluZyk7CiAgICAtLSAgUHV0IGEgdGl0bGUgc3RyaW5nIGludG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHdpbmRvdwogCiAgICBwcm9jZWR1cmUgTm90X0ltcGxlbWVudGVkOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUta2V5Ym9hcmRfaGFuZGxlci5hZGIgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1rZXlib2FyZF9oYW5kbGVyLmFkYgppbmRleCBmZGFjMDU0Li4xZDNmMjBjIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1rZXlib2FyZF9oYW5kbGVyLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1rZXlib2FyZF9oYW5kbGVyLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTQgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuMTYgJAorLS0gICREYXRlOiAyMDExLzAzLzIzIDAwOjM0OjI0ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuU3RyaW5nczsgdXNlIEFkYS5TdHJpbmdzOwpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgOiBTdHJpbmcgKDEgLi4gUG9zaXRpdmUgKENvbHVtbnMgLSAxMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ21kYyA6IFN0cmluZyAoMSAuLiA4KTsKICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRfQnVmZmVyIChGbGQgPT4gRkEgKDIpLCBTdHIgPT4gQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdldF9CdWZmZXIgKEZsZCA9PiBGQS5hbGwgKDIpLCBTdHIgPT4gQnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFRyaW0gKEJ1ZmZlciwgTGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBCdWZmZXIgKDEpIC89ICcgJyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbWRjIDo9IFRvX1VwcGVyIChCdWZmZXIgKENtZGMnUmFuZ2UpKTsKQEAgLTE1Nyw4ICsxNTcsOCBAQAogICAgICAgICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgICAgICAgZW5kIGxvb3A7CiAgICAgICAgICAgICAgICBFbnVtX0ZpZWxkIDo9IENyZWF0ZSAoRW51bV9JbmZvLCBUcnVlKTsKLSAgICAgICAgICAgICAgIFNldF9GaWVsZF9UeXBlIChGQSAoMiksIEVudW1fRmllbGQpOwotICAgICAgICAgICAgICAgU2V0X0JhY2tncm91bmQgKEZBICgyKSwgTm9ybWFsX1ZpZGVvKTsKKyAgICAgICAgICAgICAgIFNldF9GaWVsZF9UeXBlIChGQS5hbGwgKDIpLCBFbnVtX0ZpZWxkKTsKKyAgICAgICAgICAgICAgIFNldF9CYWNrZ3JvdW5kIChGQS5hbGwgKDIpLCBOb3JtYWxfVmlkZW8pOwogCiAgICAgICAgICAgICAgICBGaC5Ecml2ZV9NZSAoRnJtLCBMaW5lcyAtIDMsIDApOwogICAgICAgICAgICAgICAgRGVsZXRlIChGcm0pOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgICBTZXRfVGltZW91dF9Nb2RlIChXaW4sIERlbGF5ZWQsIDMwMDAwKTsKICAgICAgIGxvb3AKICAgICAgICAgIEsgOj0gR2V0X0tleXN0cm9rZSAoV2luKTsKLSAgICAgICAgIGlmIEsgPSBLZXlfTm9uZSB0aGVuICAtLSBhIHRpbWVvdXQgb2NjdXJlZAorICAgICAgICAgaWYgSyA9IEtleV9Ob25lIHRoZW4gIC0tIGEgdGltZW91dCBvY2N1cnJlZAogICAgICAgICAgICAgVXBkYXRlX0hlYWRlcl9XaW5kb3c7CiAgICAgICAgICBlbHNpZiBLID0gMyBhbmQgdGhlbiBub3QgSW5fQ29tbWFuZCAgdGhlbiAgLS0gQ1RSTC1DCiAgICAgICAgICAgICBLIDo9IENvbW1hbmQ7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8tYXV4LmFkYiBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby1hdXguYWRiCmluZGV4IGI5YjIzN2MuLjA5MWYwOGIgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby1hdXguYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby1hdXguYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbAotLS0gICRSZXZpc2lvbjogMS4xMyAkCi0tLSAgJERhdGU6IDIwMDYvMDYvMjUgMTQ6MzA6MjIgJAorLS0gICRSZXZpc2lvbjogMS4xNCAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEFkYS5DaGFyYWN0ZXJzLkxhdGluXzE7IHVzZSBBZGEuQ2hhcmFjdGVycy5MYXRpbl8xOwpAQCAtNDgsNyArNDgsNyBAQAogCiBwYWNrYWdlIGJvZHkgU2FtcGxlLk1lbnVfRGVtby5BdXggaXMKIAotICAgcHJvY2VkdXJlIEdlb21ldHJ5IChNICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEdlb21ldHJ5IChNICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgIEwgIDogb3V0IExpbmVfQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIEMgIDogb3V0IENvbHVtbl9Db3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgWSAgOiBvdXQgTGluZV9Qb3NpdGlvbjsKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgRnkgOiBvdXQgTGluZV9Qb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgRnggOiBvdXQgQ29sdW1uX1Bvc2l0aW9uKTsKIAotICAgcHJvY2VkdXJlIEdlb21ldHJ5IChNICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEdlb21ldHJ5IChNICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgIEwgIDogb3V0IExpbmVfQ291bnQ7ICAgICAgICAtLSBMaW5lcyB1c2VkIGZvciBtZW51CiAgICAgICAgICAgICAgICAgICAgICAgIEMgIDogb3V0IENvbHVtbl9Db3VudDsgICAgICAtLSBDb2x1bW5zIHVzZWQgZm9yIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAgWSAgOiBvdXQgTGluZV9Qb3NpdGlvbjsgICAgIC0tIFByb3Bvc2VkIExpbmUgZm9yIG1lbnUKQEAgLTgyLDExICs4MiwxMSBAQAogCiAgICBlbmQgR2VvbWV0cnk7CiAKLSAgIHByb2NlZHVyZSBHZW9tZXRyeSAoTSA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEdlb21ldHJ5IChNIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgTCA6IG91dCBMaW5lX0NvdW50OyAgICAgICAgLS0gTGluZXMgdXNlZCBmb3IgbWVudQogICAgICAgICAgICAgICAgICAgICAgICBDIDogb3V0IENvbHVtbl9Db3VudDsgICAgICAtLSBDb2x1bW5zIHVzZWQgZm9yIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAgWSA6IG91dCBMaW5lX1Bvc2l0aW9uOyAgICAgLS0gUHJvcG9zZWQgTGluZSBmb3IgbWVudQotICAgICAgICAgICAgICAgICAgICAgICBYICA6IG91dCBDb2x1bW5fUG9zaXRpb24pICAtLSBQcm9wb3NlZCBDb2x1bW4gZm9yIG1lbnUKKyAgICAgICAgICAgICAgICAgICAgICAgWCA6IG91dCBDb2x1bW5fUG9zaXRpb24pICAgLS0gUHJvcG9zZWQgQ29sdW1uIGZvciBtZW51CiAgICBpcwogICAgICAgRnkgOiBMaW5lX1Bvc2l0aW9uOwogICAgICAgRnggOiBDb2x1bW5fUG9zaXRpb247CkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgIHJldHVybiBQYW47CiAgICBlbmQgQ3JlYXRlOwogCi0gICBwcm9jZWR1cmUgRGVzdHJveSAoTSA6IGluIE1lbnU7CisgICBwcm9jZWR1cmUgRGVzdHJveSAoTSA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgUCA6IGluIG91dCBQYW5lbCkKICAgIGlzCiAgICAgICBXLCBTIDogV2luZG93OwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLWF1eC5hZHMgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8tYXV4LmFkcwppbmRleCA5NjRlMzhlLi5lODJhZWRmIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8tYXV4LmFkcworKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8tYXV4LmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuOSAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOyB1c2UgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7CkBAIC00NCwxMiArNDQsMTIgQEAKIAogcGFja2FnZSBTYW1wbGUuTWVudV9EZW1vLkF1eCBpcwogCi0gICBwcm9jZWR1cmUgR2VvbWV0cnkgKE0gIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgR2VvbWV0cnkgKE0gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgTCAgOiBvdXQgTGluZV9Db3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgQyAgOiBvdXQgQ29sdW1uX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICBZICA6IG91dCBMaW5lX1Bvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBYICA6IG91dCBDb2x1bW5fUG9zaXRpb24pOwotICAgLS0gIENhbGN1bGF0ZSB0aGUgZ2VvbWV0cnkgZm9yIGEgcGFuZWwgYmVlaW5nIGFibGUgdG8gYmUgdXNlZCB0byBkaXNwbGF5CisgICAtLSAgQ2FsY3VsYXRlIHRoZSBnZW9tZXRyeSBmb3IgYSBwYW5lbCBiZWluZyBhYmxlIHRvIGJlIHVzZWQgdG8gZGlzcGxheQogICAgLS0gIHRoZSBtZW51LgogCiAgICBmdW5jdGlvbiBDcmVhdGUgKE0gICAgIDogTWVudTsKQEAgLTU5LDcgKzU5LDcgQEAKICAgIC0tICBDcmVhdGUgYSBwYW5lbCBkZWNvcmF0ZWQgd2l0aCBhIGZyYW1lIGFuZCB0aGUgdGl0bGUgYXQgdGhlIHNwZWNpZmllZAogICAgLS0gIHBvc2l0aW9uLiBUaGUgZGltZW5zaW9uIG9mIHRoZSBwYW5lbCBpcyBkZXJpdmVkIGZyb20gdGhlIG1lbnVzIGxheW91dC4KIAotICAgcHJvY2VkdXJlIERlc3Ryb3kgKE0gOiBpbiBNZW51OworICAgcHJvY2VkdXJlIERlc3Ryb3kgKE0gOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgIFAgOiBpbiBvdXQgUGFuZWwpOwogICAgLS0gIERlc3Ryb3kgYWxsIHRoZSB3aW5kb3dpbmcgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZW51IGFuZAogICAgLS0gIHBhbmVsLgpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLWhhbmRsZXIuYWRiIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLWhhbmRsZXIuYWRiCmluZGV4IDE4NzQ3ZTkuLjg0ZDI5ZjYgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby1oYW5kbGVyLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8taGFuZGxlci5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMTUsNyArMTUsNyBAQAogLS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tCiAtLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS0KIC0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLQotLS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tCistLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIDogICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLQogLS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2wKLS0tICAkUmV2aXNpb246IDEuMTUgJAotLS0gICREYXRlOiAyMDA0LzA4LzIxIDIxOjM3OjAwICQKKy0tICAkUmV2aXNpb246IDEuMTYgJAorLS0gICREYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBTYW1wbGUuTWVudV9EZW1vLkF1eDsKQEAgLTQ3LDggKzQ3LDggQEAKIAogICAgcGFja2FnZSBBdXggcmVuYW1lcyBTYW1wbGUuTWVudV9EZW1vLkF1eDsKIAotICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogaW4gU3RyaW5nIDo9ICIiKQorICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKQogICAgaXMKICAgICAgIEwgOiBMaW5lX0NvdW50OwogICAgICAgQyA6IENvbHVtbl9Db3VudDsKQEAgLTU5LDEwICs1OSwxMCBAQAogICAgICAgRHJpdmVfTWUgKE0sIFksIFgsIFRpdGxlKTsKICAgIGVuZCBEcml2ZV9NZTsKIAotICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgIExpbiAgIDogaW4gTGluZV9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBpbiBDb2x1bW5fUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogaW4gU3RyaW5nIDo9ICIiKQorICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgIExpbiAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKQogICAgaXMKICAgICAgIE1hc2sgOiBFdmVudF9NYXNrIDo9IE5vX0V2ZW50czsKICAgICAgIE9sZCAgOiBFdmVudF9NYXNrOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLWhhbmRsZXIuYWRzIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLWhhbmRsZXIuYWRzCmluZGV4IDFhODJmOWYuLmU5ZWFhNmIgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby1oYW5kbGVyLmFkcworKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8taGFuZGxlci5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjkgJAorLS0gICRSZXZpc2lvbjogMS4xMCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKQEAgLTUxLDE0ICs1MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW4gOiBQYW5lbCkgcmV0dXJuIEJvb2xlYW47CiBwYWNrYWdlIFNhbXBsZS5NZW51X0RlbW8uSGFuZGxlciBpcwogCi0gICBwcm9jZWR1cmUgRHJpdmVfTWUgKE0gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgTGluICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICBDb2wgICA6IGluIENvbHVtbl9Qb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBpbiBTdHJpbmcgOj0gIiIpOworICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgIExpbiAgIDogTGluZV9Qb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBDb2x1bW5fUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKTsKICAgIC0tICBQb3NpdGlvbiB0aGUgbWVudSBhdCB0aGUgZ2l2ZW4gcG9pbnQgYW5kIGRyaXZlIGl0LgogCi0gICBwcm9jZWR1cmUgRHJpdmVfTWUgKE0gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgOiBpbiBTdHJpbmcgOj0gIiIpOworICAgcHJvY2VkdXJlIERyaXZlX01lIChNICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlIDogU3RyaW5nIDo9ICIiKTsKICAgIC0tICBDZW50ZXIgbWVudSBhbmQgZHJpdmUgaXQuCiAKIGVuZCBTYW1wbGUuTWVudV9EZW1vLkhhbmRsZXI7CmRpZmYgLS1naXQgYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8uYWRiIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtbWVudV9kZW1vLmFkYgppbmRleCAzODY0Njc0Li44MGNkOTRiIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1tZW51X2RlbW8uYWRiCisrKyBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLW1lbnVfZGVtby5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjE4ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0ODozMCAkCistLSAgJFJldmlzaW9uOiAxLjE5ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8yMyAwMDo0NDoxMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7CkBAIC0xNTQsNyArMTU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIE8gOiBJdGVtX09wdGlvbl9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIEogaW4gSSdSYW5nZSBsb29wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRfT3B0aW9ucyAoSSAoSiksIE8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0X09wdGlvbnMgKEkuYWxsIChKKSwgTyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPLlNlbGVjdGFibGUgOj0gVHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIEhpZGVfTG9uZyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEogaXMKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBvdGhlcnMgPT4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBjYXNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGlmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0X09wdGlvbnMgKEkgKEopLCBPKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldF9PcHRpb25zIChJLmFsbCAoSiksIE8pOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGxvb3A7CiAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2U7CkBAIC0zNzgsMTQgKzM3OCwxNCBAQAogICAgICAgU2V0X1BhZF9DaGFyYWN0ZXIgKE0sICd8Jyk7CiAKICAgICAgIE1VRC5TZXRfVXNlcl9EYXRhIChNLCBVMSk7Ci0gICAgICBJVUQuU2V0X1VzZXJfRGF0YSAoSXRtICgxKSwgVTMpOworICAgICAgSVVELlNldF9Vc2VyX0RhdGEgKEl0bS5hbGwgKDEpLCBVMyk7CiAKICAgICAgIE1oLkRyaXZlX01lIChNKTsKIAogICAgICAgTVVELkdldF9Vc2VyX0RhdGEgKE0sIFUyKTsKICAgICAgIHByYWdtYSBBc3NlcnQgKFUxID0gVTIgYW5kIFUxLmFsbCA9IDQ3MTEpOwogCi0gICAgICBJVUQuR2V0X1VzZXJfRGF0YSAoSXRtICgxKSwgVTQpOworICAgICAgSVVELkdldF9Vc2VyX0RhdGEgKEl0bS5hbGwgKDEpLCBVNCk7CiAgICAgICBwcmFnbWEgQXNzZXJ0IChVMyA9IFU0IGFuZCBVMy5hbGwgPSA0NzEyKTsKIAogICAgICAgUG9wX0Vudmlyb25tZW50OwpkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtdGV4dF9pb19kZW1vLmFkYiBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLXRleHRfaW9fZGVtby5hZGIKaW5kZXggMGIzODVjNC4uYTQ1OGEzNyAxMDA2NDQKLS0tIGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUtdGV4dF9pb19kZW1vLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS10ZXh0X2lvX2RlbW8uYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDE4ICszNSwyNCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjE2ICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiAkCistLSAgJFJldmlzaW9uOiAxLjE3ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8yMyAwMDo0NDoxMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLk51bWVyaWNzLkdlbmVyaWNfRWxlbWVudGFyeV9GdW5jdGlvbnM7CisKIHdpdGggQWRhLk51bWVyaWNzLkNvbXBsZXhfVHlwZXM7CiB1c2UgIEFkYS5OdW1lcmljcy5Db21wbGV4X1R5cGVzOwogCi13aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOwotd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlBhbmVsczsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzOword2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOwordXNlICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOworCit3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzOwordXNlICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlBhbmVsczsKKwogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU87CiB1c2UgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTzsKKwogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uSW50ZWdlcl9JTzsKIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkZsb2F0X0lPOwogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRW51bWVyYXRpb25fSU87CkBAIC02MCw2ICs2NiwxNCBAQAogd2l0aCBTYW1wbGUuS2V5Ym9hcmRfSGFuZGxlcjsgdXNlIFNhbXBsZS5LZXlib2FyZF9IYW5kbGVyOwogd2l0aCBTYW1wbGUuRXhwbGFuYXRpb247IHVzZSBTYW1wbGUuRXhwbGFuYXRpb247CiAKK3ByYWdtYSBFbGFib3JhdGVfQWxsIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSW8uQ29tcGxleF9JTyk7CitwcmFnbWEgRWxhYm9yYXRlX0FsbCAoVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lvLkRlY2ltYWxfSU8pOworcHJhZ21hIEVsYWJvcmF0ZV9BbGwgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9Jby5FbnVtZXJhdGlvbl9JTyk7CitwcmFnbWEgRWxhYm9yYXRlX0FsbCAoVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lvLkZpeGVkX0lPKTsKK3ByYWdtYSBFbGFib3JhdGVfQWxsIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSW8uRmxvYXRfSU8pOworcHJhZ21hIEVsYWJvcmF0ZV9BbGwgKFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9Jby5JbnRlZ2VyX0lPKTsKK3ByYWdtYSBFbGFib3JhdGVfQWxsIChUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSW8uTW9kdWxhcl9JTyk7CisKIHBhY2thZ2UgYm9keSBTYW1wbGUuVGV4dF9JT19EZW1vIGlzCiAKICAgIHR5cGUgV2Vla2RheSBpcyAoU3VuZGF5LApkaWZmIC0tZ2l0IGEvQWRhOTUvc2FtcGxlcy9zYW1wbGUuYWRiIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUuYWRiCmluZGV4IDY0ODAzNmYuLjliMzc1OWYgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLmFkYgorKysgYi9BZGE5NS9zYW1wbGVzL3NhbXBsZS5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjE3ICQKLS0tICAkRGF0ZTogMjAwOC8wOS8yNyAxNDo0Mjo0MCAkCistLSAgJFJldmlzaW9uOiAxLjE4ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8yMyAwMDo0NDoxMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGV4dF9JTzsKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgICAgICAgVWQuU2V0X1VzZXJfRGF0YSAoTSwgRDEpOwogCiAgICAgICAgICBJMSA6PSBuZXcgVXNlcl9EYXRhJyhEYXRhID0+IDExNzQpOwotICAgICAgICAgSWQuU2V0X1VzZXJfRGF0YSAoSSAoMSksIEkxKTsKKyAgICAgICAgIElkLlNldF9Vc2VyX0RhdGEgKEkuYWxsICgxKSwgSTEpOwogCiAgICAgICAgICBTZXRfU3BhY2luZyAoTWVuID0+IE0sIFJvdyA9PiAyKTsKIApAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgICAgICBwcmFnbWEgQXNzZXJ0IChEMSA9IEQyKTsKICAgICAgICAgIHByYWdtYSBBc3NlcnQgKEQxLkRhdGEgPSBEMi5EYXRhKTsKIAotICAgICAgICAgSWQuR2V0X1VzZXJfRGF0YSAoSSAoMSksIEkyKTsKKyAgICAgICAgIElkLkdldF9Vc2VyX0RhdGEgKEkuYWxsICgxKSwgSTIpOwogICAgICAgICAgcHJhZ21hIEFzc2VydCAoSTEgPSBJMik7CiAgICAgICAgICBwcmFnbWEgQXNzZXJ0IChJMS5EYXRhID0gSTIuRGF0YSk7CiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy9NYWtlZmlsZS5pbiBiL0FkYTk1L3NyYy9NYWtlZmlsZS5pbgppbmRleCAxYzA3MmJmLi5iMGU4MGRlIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvTWFrZWZpbGUuaW4KKysrIGIvQWRhOTUvc3JjL01ha2VmaWxlLmluCkBAIC0xLDUgKzEsNSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjgsMzIgKzI4LDQxIEBACiAjCiAjICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKICMKLSMgICRJZDogTWFrZWZpbGUuaW4sdiAxLjMxIDIwMDcvMDkvMTUgMTg6MjI6MjQgdG9tIEV4cCAkCisjICAkSWQ6IE1ha2VmaWxlLmluLHYgMS43MSAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIwogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCiBNT0RFTAkJPSAuLi8uLi9AREZUX09CSl9TVUJESVJACisKIERFU1RESVIJCT0gQERFU1RESVJACisKK3RvcF9zcmNkaXIJPSBAdG9wX3NyY2RpckAKIHNyY2RpcgkJPSBAc3JjZGlyQAogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKLUFEQV9JTkNMVURFCT0gQEFEQV9JTkNMVURFQAoraW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQAorbGliZGlyCQk9IEBsaWJkaXJACisKK0xJQkRJUgkJPSAkKERFU1RESVIpJChsaWJkaXIpCitBREFfSU5DTFVERQk9ICQoREVTVERJUilAQURBX0lOQ0xVREVACitBREFfT0JKRUNUUwk9ICQoREVTVERJUilAQURBX09CSkVDVFNACiAKIElOU1RBTEwJCT0gQElOU1RBTExACi1JTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQAorSU5TVEFMTF9MSUIJPSBASU5TVEFMTEAgQElOU1RBTExfTElCQAogCiBBUgkJPSBAQVJACi1BUl9PUFRTCQk9IEBBUl9PUFRTQAorQVJGTEFHUwkJPSBAQVJGTEFHU0AKIEFXSwkJPSBAQVdLQAogTE5fUwkJPSBATE5fU0AKIAogQ0MJCT0gQENDQAogQ0ZMQUdTCQk9IEBDRkxBR1NACiAKLUNQUEZMQUdTCT0gQEFDUFBGTEFHU0AgXAorQ1BQRkxBR1MJPSBAQUNQUEZMQUdTQCBAQ1BQRkxBR1NAIFwKIAkJICAtREhBVkVfQ09ORklHX0ggLUkkKHNyY2RpcikKIAogQ0NGTEFHUwkJPSAkKENQUEZMQUdTKSAkKENGTEFHUykKQEAgLTY5LDYwICs3OCw1OCBAQAogTERGTEFHUwkJPSBATERGTEFHU0AgQExEX01PREVMQCBATElCU0AKIAogUkFOTElCCQk9IEBSQU5MSUJACisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBBREEgICAgICAgICAgICAgPSBAY2ZfYWRhX2NvbXBpbGVyQAogQURBUFJFUAkJPSBnbmF0cHJlcAogQURBRkxBR1MgICAgICAgID0gQEFEQUZMQUdTQCAtSS4gLUkkKHNyY2RpcikKIAorTElCX05BTUUJPSBBZGFDdXJzZXMKK1NPTkFNRQkJPSBAQURBX1NIQVJFRExJQkAKKworR05BVF9QUk9KRUNUCT0gJChzcmNkaXIpL2xpYnJhcnkuZ3ByCisKKyMgYnVpbGQvc291cmNlIGFyZSB0aGUgQWRhOTUgdHJlZQorQlVJTERfRElSCT0gLi4KK1NPVVJDRV9ESVIJPSAuLgorCitCVUlMRF9ESVJfTElCCT0gJChCVUlMRF9ESVIpL2xpYgorU09VUkNFX0RJUl9TUkMJPSAkKFNPVVJDRV9ESVIpL3NyYworCiBBREFNQUtFICAgICAgICAgPSBAY2ZfYWRhX21ha2VACi1BREFNQUtFRkxBR1MgICAgPSAKK0FEQU1BS0VGTEFHUyAgICA9IFwKKwktUCQoR05BVF9QUk9KRUNUKSBcCisJLVhCVUlMRF9ESVI9YGNkICQoQlVJTERfRElSKTtwd2RgIFwKKwktWFNPVVJDRV9ESVI9YGNkICQoU09VUkNFX0RJUik7cHdkYCBcCisJLVhTT1VSQ0VfRElSMj1gY2QgJChzcmNkaXIpO3B3ZGAgXAorCS1YTElCX05BTUU9JChMSUJfTkFNRSkgXAorCS1YU09OQU1FPSQoU09OQU1FKQogCiBDQVJHUyAgICAgICAgICAgPSAtY2FyZ3MgJChBREFGTEFHUykKIExBUkdTICAgICAgICAgICA9CiAKK1NUQVRJQ19MSUJOQU1FCT0gbGliJChMSUJfTkFNRSkuYQorU0hBUkVEX0xJQk5BTUUJPSAkKFNPTkFNRSkKK1NIQVJFRF9TWU1MSU5LCT0gbGliJChMSUJfTkFNRSkuc28KKwogQUxJQiAgICAgICAgICAgID0gQGNmX2FkYV9wYWNrYWdlQAogQUJBU0UgICAgICAgICAgID0gJChBTElCKS1jdXJzZXMKLQotTElCQUxJUz0kKEFMSUIpLmFsaSAgICAgICAgICAgICAgCQkJXAotCSQoQUJBU0UpLWF1eC5hbGkgICAgICAgICAJCQlcCi0JJChBQkFTRSkuYWxpICAgICAgICAgICAgIAkJICAgICAgICBcCi0JJChBQkFTRSktdGVybWluZm8uYWxpCQkJCVwKLQkkKEFCQVNFKS10ZXJtY2FwLmFsaQkJCQlcCi0JJChBQkFTRSktcHV0d2luLmFsaQkJCQlcCi0JJChBQkFTRSktdHJhY2UuYWxpCQkJCVwKLQkkKEFCQVNFKS1tb3VzZS5hbGkgICAgICAgCQkJXAotCSQoQUJBU0UpLXBhbmVscy5hbGkgICAgICAJCQlcCi0JJChBQkFTRSktbWVudXMuYWxpICAgICAgIAkJCVwKLQkkKEFCQVNFKS1mb3Jtcy5hbGkgICAgICAgCQkJXAotCSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLmFsaQkgICAgICAgIAlcCi0JJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWxpICAgICAgCVwKLQkkKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWxpICAgICBcCi0JJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWxpICAgICAgCVwKLQkkKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFsaSAgICAgIAlcCi0JJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFsaSAgICAgIAlcCi0JJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWxpICAgICAgXAotCSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hbGkgICAgIFwKLQkkKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFsaQkgICAgICAJXAotCSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFsaSAgICAgCVwKLQkkKEFCQVNFKS10ZXh0X2lvLmFsaSAgICAgCQkJXAotCSQoQUJBU0UpLXRleHRfaW8tYXV4LmFsaQotCi0jIEFkYSBMaWJyYXJ5IGZpbGVzIGZvciBnZW5lcmljIHBhY2thZ2VzLiBTaW5jZSBnbmF0IDMuMTAgdGhleSBhcmUKLSMgYWxzbyBjb21waWxlZAotR0VOQUxJUz0kKEFCQVNFKS1tZW51cy1tZW51X3VzZXJfZGF0YS5hbGkJCVwKLQkkKEFCQVNFKS1tZW51cy1pdGVtX3VzZXJfZGF0YS5hbGkJCVwKLQkkKEFCQVNFKS1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hbGkJCVwKLQkkKEFCQVNFKS1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWxpCQlcCi0JJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFsaQlcCi0JJChBQkFTRSktcGFuZWxzLXVzZXJfZGF0YS5hbGkJCQlcCi0JJChBQkFTRSktdGV4dF9pby1pbnRlZ2VyX2lvLmFsaQkJCVwKLQkkKEFCQVNFKS10ZXh0X2lvLWZsb2F0X2lvLmFsaQkJCVwKLQkkKEFCQVNFKS10ZXh0X2lvLWZpeGVkX2lvLmFsaQkJCVwKLQkkKEFCQVNFKS10ZXh0X2lvLWRlY2ltYWxfaW8uYWxpCQkJXAotCSQoQUJBU0UpLXRleHRfaW8tZW51bWVyYXRpb25faW8uYWxpCQlcCi0JJChBQkFTRSktdGV4dF9pby1tb2R1bGFyX2lvLmFsaQkJCVwKLQkkKEFCQVNFKS10ZXh0X2lvLWNvbXBsZXhfaW8uYWxpCi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitHRU5FUkFURURfU09VUkNFUz0kKEFCQVNFKS5hZHMgICAgICAgICAJCQlcCisJCSAgJChBQkFTRSkuYWRiICAgICAgICAgCQkJXAorCSAgICAgICAgICAkKEFCQVNFKS1hdXguYWRzICAgCQkJXAorCSAgICAgICAgICAkKEFCQVNFKS10cmFjZS5hZHMgICAJCQlcCisJICAgICAgICAgICQoQUJBU0UpLW1lbnVzLmFkcyAgIAkJCVwKKwkgICAgICAgICAgJChBQkFTRSktZm9ybXMuYWRzICAgCQkJXAorCSAgICAgICAgICAkKEFCQVNFKS1tb3VzZS5hZHMgCQkJXAorCSAgICAgICAgICAkKEFCQVNFKS1wYW5lbHMuYWRzCQkJXAorCSAgICAgICAgICAkKEFCQVNFKS1tZW51cy1tZW51X3VzZXJfZGF0YS5hZHMJXAorCSAgICAgICAgICAkKEFCQVNFKS1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZHMJXAorCSAgICAgICAgICAkKEFCQVNFKS1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZHMJXAorCSAgICAgICAgICAkKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy5hZHMJXAorCSAgICAgICAgICAkKEFCQVNFKS1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzCVwKKwkgICAgICAgICAgJChBQkFTRSktcGFuZWxzLXVzZXJfZGF0YS5hZHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBMSUJPQkpTPSQoQUxJQikubyAgICAgICAgICAgICAgICAJCQlcCiAJJChBQkFTRSktYXV4Lm8gICAgICAgICAgIAkJCVwKIAkkKEFCQVNFKS5vICAgICAgICAgICAgICAgCQkJXApAQCAtMTYzLDM0ICsxNzAsNDEgQEAKIAkkKEFCQVNFKS10ZXh0X2lvLW1vZHVsYXJfaW8ubwkJCVwKIAkkKEFCQVNFKS10ZXh0X2lvLWNvbXBsZXhfaW8ubwogCi0KLWFsbCA6OiAgbGliQWRhQ3Vyc2VzLmEKK2FsbCA6OiAgJChCVUlMRF9ESVJfTElCKS8kKFNUQVRJQ19MSUJOQU1FKQogCUBlY2hvIGRvbmUKIAotbGliQWRhQ3Vyc2VzLmEgOjogZG90b3VjaCAkKExJQk9CSlMpIEBjZl9nZW5lcmljX29iamVjdHNACi0JJChBUikgJChBUl9PUFRTKSAkQCAkKExJQk9CSlMpIEBjZl9nZW5lcmljX29iamVjdHNACi0KLWRvdG91Y2ggOgotCUBzaCAtYyAnZm9yIGYgaW4gJChMSUJBTElTKSAkKEdFTkFMSVMpOyBkbyB0ZXN0IC1mICQkZiB8fCB0b3VjaCAkJGY7IGRvbmUnCiskKEFEQV9JTkNMVURFKSBcCiskKEFEQV9PQkpFQ1RTKSBcCiskKExJQkRJUikgXAorJChCVUlMRF9ESVJfTElCKSA6CisJbWtkaXIgLXAgJEAKIAogc291cmNlcyA6CiAJQGVjaG8gbWFkZSAkQAogCiBsaWJzIFwKIGluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKK2luc3RhbGwubGlicyA6OiBcCisJCSQoQlVJTERfRElSX0xJQikvJChTVEFUSUNfTElCTkFNRSkKKwlAZWNobyBtYWRlICQoU1RBVElDX0xJQk5BTUUpCisKK2luc3RhbGwgXAoraW5zdGFsbC5saWJzIDo6IFwKKwkJJChCVUlMRF9ESVJfTElCKS8kKFNUQVRJQ19MSUJOQU1FKSBcCisJCSQoQURBX09CSkVDVFMpCisJQCQoSU5TVEFMTF9MSUIpIFwKKwkJJChCVUlMRF9ESVJfTElCKS8kKFNUQVRJQ19MSUJOQU1FKSBcCisJCSQoQURBX09CSkVDVFMpCisKIHVuaW5zdGFsbCBcCiB1bmluc3RhbGwubGlicyA6OgotCUBlY2hvIG1hZGUgJEAKLQotZ2VuZXJpY3M6ICQoR0VOQUxJUykKLQlAZWNobyBtYWRlICRACisJQHJtIC1mICQoQURBX09CSkVDVFMpLyQoU1RBVElDX0xJQk5BTUUpCiAKIG1vc3RseWNsZWFuIDo6CiAJcm0gLWYgKi5vICouYWxpIGJfdCouKiAqLnMgJChQUk9HUykgYS5vdXQgY29yZSBiXypfdGVzdC5jICoueHJbYnNdICouYQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgotCXJtIC1mICQoTElCQUxJUykgJChHRU5BTElTKSAkKExJQk9CSlMpICQoR0VOT0JKUykgJChBQkFTRSktdHJhY2UuYWRiCisJcm0gLWYgJChBQkFTRSktdHJhY2UuYWRiCiAKIGRpc3RjbGVhbiA6OiBjbGVhbgogCXJtIC1mIE1ha2VmaWxlCkBAIC0xOTksMTkwICsyMTMsMTI3IEBACiAKIEJBU0VERVBTPSQoQUJBU0UpLmFkcyAkKEFCQVNFKS1hdXguYWRzICQoQUJBU0UpLmFkYgogCi0kKEFMSUIpLm86ICQoc3JjZGlyKS8kKEFMSUIpLmFkcwotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBTElCKS5hZHMKLQotCi0kKEFCQVNFKS1hdXgubzogJChzcmNkaXIpLyQoQUJBU0UpLWF1eC5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWF1eC5hZGIKLQotCi0kKEFCQVNFKS5vOiAkKEFCQVNFKS5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChBQkFTRSkuYWRiCi0KLQotJChBQkFTRSktdGVybWluZm8ubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGVybWluZm8uYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRlcm1pbmZvLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktdGVybWluZm8uYWRiCi0KLQotJChBQkFTRSktdGVybWNhcC5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS10ZXJtY2FwLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS10ZXJtY2FwLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktdGVybWNhcC5hZGIKLQotCi0kKEFCQVNFKS1wdXR3aW4ubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktcHV0d2luLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1wdXR3aW4uYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS1wdXR3aW4uYWRiCi0KLQogJChBQkFTRSktdHJhY2UuYWRiIDogJChzcmNkaXIpLyQoQUJBU0UpLXRyYWNlLmFkYl9wCiAJcm0gLWYgJEAKLQkkKEFEQVBSRVApIC1EQURBX1RSQUNFPUBBREFfVFJBQ0VAIC1EUFJBR01BX1VOUkVGPUBQUkFHTUFfVU5SRUZAICQoc3JjZGlyKS8kKEFCQVNFKS10cmFjZS5hZGJfcCAkQAorCSQoQURBUFJFUCkgLURBREFfVFJBQ0U9QEFEQV9UUkFDRUAgQEdOQVRQUkVQX09QVFNAICQoc3JjZGlyKS8kKEFCQVNFKS10cmFjZS5hZGJfcCAkQAogCi0kKEFCQVNFKS10cmFjZS5vOiBcCi0JCSQoQUJBU0UpLXRyYWNlLmFkcyBcCi0JCSQoQUJBU0UpLXRyYWNlLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKEFCQVNFKS10cmFjZS5hZGIKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVXNlIHRoZXNlIGRlZmluaXRpb25zIHdoZW4gYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeS4KK1NIQVJFRF9DX09CSlMJPSBjX3ZhcmFyZ3NfdG9fYWRhLm8gY190aHJlYWRlZF92YXJpYWJsZXMubyBuY3Vyc2VzX2NvbXBhdC5vCitTSEFSRURfT0JKUyAJPSAkKFNIQVJFRF9DX09CSlMpIEBVU0VfT0xEX01BS0VSVUxFU0AkKExJQk9CSlMpIEBjZl9nZW5lcmljX29iamVjdHNACiAKK2NfdmFyYXJnc190b19hZGEubyA6CSQoc3JjZGlyKS9jX3ZhcmFyZ3NfdG9fYWRhLmMKKwkkKENDKSAkKENGTEFHU19ERUZBVUxUKSAtYyAtbyAkQCAkKHNyY2RpcikvY192YXJhcmdzX3RvX2FkYS5jCiAKLSQoQUJBU0UpLW1vdXNlLm86IFwKLQkJJChBQkFTRSktbW91c2UuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLW1vdXNlLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktbW91c2UuYWRiCitjX3RocmVhZGVkX3ZhcmlhYmxlcy5vIDogJChzcmNkaXIpL2NfdGhyZWFkZWRfdmFyaWFibGVzLmMKKwkkKENDKSAkKENGTEFHU19ERUZBVUxUKSAtYyAtbyAkQCAkKHNyY2RpcikvY190aHJlYWRlZF92YXJpYWJsZXMuYwogCituY3Vyc2VzX2NvbXBhdC5vIDoJJChzcmNkaXIpL25jdXJzZXNfY29tcGF0LmMKKwkkKENDKSAkKENGTEFHU19ERUZBVUxUKSAtYyAtbyAkQCAkKHNyY2RpcikvbmN1cnNlc19jb21wYXQuYwogCi0kKEFCQVNFKS1wYW5lbHMubzogXAotCQkkKEFCQVNFKS1wYW5lbHMuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXBhbmVscy5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLXBhbmVscy5hZGIKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVXNlIHRoZXNlIGRlZmluaXRpb25zIHdoZW4gYnVpbGRpbmcgYSBzdGF0aWMgbGlicmFyeS4KK1NUQVRJQ19DX09CSlMJPSBzdGF0aWNfY192YXJhcmdzX3RvX2FkYS5vIHN0YXRpY19jX3RocmVhZGVkX3ZhcmlhYmxlcy5vIHN0YXRpY19uY3Vyc2VzX2NvbXBhdC5vCitTVEFUSUNfT0JKUyAJPSAkKFNUQVRJQ19DX09CSlMpIEBVU0VfT0xEX01BS0VSVUxFU0AkKExJQk9CSlMpIEBjZl9nZW5lcmljX29iamVjdHNACiAKK3N0YXRpY19jX3ZhcmFyZ3NfdG9fYWRhLm8gOgkkKHNyY2RpcikvY192YXJhcmdzX3RvX2FkYS5jCisJJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAtbyAkQCAkKHNyY2RpcikvY192YXJhcmdzX3RvX2FkYS5jCiAKLSQoQUJBU0UpLW1lbnVzLm86IFwKLQkJJChBQkFTRSktbWVudXMuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLW1lbnVzLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktbWVudXMuYWRiCitzdGF0aWNfY190aHJlYWRlZF92YXJpYWJsZXMubyA6ICQoc3JjZGlyKS9jX3RocmVhZGVkX3ZhcmlhYmxlcy5jCisJJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAtbyAkQCAkKHNyY2RpcikvY190aHJlYWRlZF92YXJpYWJsZXMuYwogCitzdGF0aWNfbmN1cnNlc19jb21wYXQubyA6CSQoc3JjZGlyKS9uY3Vyc2VzX2NvbXBhdC5jCisJJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAtbyAkQCAkKHNyY2RpcikvbmN1cnNlc19jb21wYXQuYwogCi0kKEFCQVNFKS1mb3Jtcy5vOiBcCi0JCSQoQUJBU0UpLWZvcm1zLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLmFkYgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy5vOiBcCi0JCSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLmFkYgorQFVTRV9PTERfTUFLRVJVTEVTQCQoQlVJTERfRElSX0xJQikvJChTVEFUSUNfTElCTkFNRSkgOjogXAorQFVTRV9PTERfTUFLRVJVTEVTQAkJJChCVUlMRF9ESVJfTElCKSBcCitAVVNFX09MRF9NQUtFUlVMRVNACQkkKFNUQVRJQ19PQkpTKQorQFVTRV9PTERfTUFLRVJVTEVTQAkkKEFSKSAkKEFSRkxBR1MpICRAICQoU1RBVElDX09CSlMpCiAKLSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkYgorJChCVUlMRF9ESVIpL3N0YXRpYy1hbGkgOiA7IG1rZGlyIC1wICRACiskKEJVSUxEX0RJUikvc3RhdGljLW9iaiA6IDsgbWtkaXIgLXAgJEAKIAotJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYgorU1RBVElDX0RJUlMgPSBcCisJJChCVUlMRF9ESVJfTElCKSBcCisJJChCVUlMRF9ESVIpL3N0YXRpYy1hbGkgXAorCSQoQlVJTERfRElSKS9zdGF0aWMtb2JqCiAKLSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkYgorQFVTRV9HTkFUX1BST0pFQ1RTQCQoQlVJTERfRElSX0xJQikvJChTVEFUSUNfTElCTkFNRSkgOjogXAorQFVTRV9HTkFUX1BST0pFQ1RTQAkJJChBQkFTRSktdHJhY2UuYWRiIFwKK0BVU0VfR05BVF9QUk9KRUNUU0AJCSQoU1RBVElDX0NfT0JKUykgXAorQFVTRV9HTkFUX1BST0pFQ1RTQAkJJChTVEFUSUNfRElSUykKK0BVU0VfR05BVF9QUk9KRUNUU0AJJChBREFNQUtFKSAkKEFEQU1BS0VGTEFHUykgLVhMSUJfS0lORD1zdGF0aWMKK0BVU0VfR05BVF9QUk9KRUNUU0AJJChBUikgJChBUkZMQUdTKSAkQCAkKFNUQVRJQ19DX09CSlMpCitAVVNFX0dOQVRfUFJPSkVDVFNACitAVVNFX0dOQVRfTElCUkFSSUVTQGluc3RhbGwgXAorQFVTRV9HTkFUX0xJQlJBUklFU0BpbnN0YWxsLmxpYnMgOjogXAorQFVTRV9HTkFUX0xJQlJBUklFU0AJCSQoQURBX09CSkVDVFMpCitAVVNFX0dOQVRfTElCUkFSSUVTQAkkKElOU1RBTExfTElCKSBcCitAVVNFX0dOQVRfTElCUkFSSUVTQAkJJChCVUlMRF9ESVIpL3N0YXRpYy1hbGkvKi5hbGkgXAorQFVTRV9HTkFUX0xJQlJBUklFU0AJCSQoQURBX09CSkVDVFMpCiAKLSQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRiCit1bmluc3RhbGwgXAordW5pbnN0YWxsLmxpYnMgOjoKKwlAcm0gLWYgJChBREFfT0JKRUNUUykvJChTVEFUSUNfTElCTkFNRSkKIAotJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkYgorQFVTRV9HTkFUX0xJQlJBUklFU0B1bmluc3RhbGwgXAorQFVTRV9HTkFUX0xJQlJBUklFU0B1bmluc3RhbGwubGlicyA6OgorQFVTRV9HTkFUX0xJQlJBUklFU0AJQCQoU0hFTEwpIC1jICdmb3IgbmFtZSBpbiAkKEJVSUxEX0RJUikvc3RhdGljLWFsaS8qLmFsaSA7IGRvIHJtIC1mICQoQURBX09CSkVDVFMpL2BiYXNlbmFtZSAkJG5hbWVgOyBkb25lJwogCi0kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGIKKyQoQlVJTERfRElSKS9keW5hbWljLWFsaSA6IDsgbWtkaXIgLXAgJEAKKyQoQlVJTERfRElSKS9keW5hbWljLW9iaiA6IDsgbWtkaXIgLXAgJEAKIAotJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkYgorU0hBUkVEX0RJUlMgPSBcCisJJChCVUlMRF9ESVJfTElCKSBcCisJJChCVUlMRF9ESVIpL2R5bmFtaWMtYWxpIFwKKwkkKEJVSUxEX0RJUikvZHluYW1pYy1vYmoKIAotJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtdXNlci5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZGIKK0BNQUtFX0FEQV9TSEFSRURMSUJAYWxsIDo6ICQoQlVJTERfRElSX0xJQikvJChTSEFSRURfTElCTkFNRSkKK0BNQUtFX0FEQV9TSEFSRURMSUJAJChCVUlMRF9ESVJfTElCKS8kKFNIQVJFRF9MSUJOQU1FKSA6OiBcCitATUFLRV9BREFfU0hBUkVETElCQAkJJChBQkFTRSktdHJhY2UuYWRiIFwKK0BNQUtFX0FEQV9TSEFSRURMSUJACQkkKFNIQVJFRF9ESVJTKSBcCitATUFLRV9BREFfU0hBUkVETElCQAkJJChTSEFSRURfT0JKUykKK0BNQUtFX0FEQV9TSEFSRURMSUJACWNwICQoU0hBUkVEX09CSlMpICQoQlVJTERfRElSKS9keW5hbWljLW9iai8KK0BNQUtFX0FEQV9TSEFSRURMSUJACSQoQURBTUFLRSkgJChBREFNQUtFRkxBR1MpIC1YTElCX0tJTkQ9ZHluYW1pYwogCi0kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZGIKK2luc3RhbGwgXAoraW5zdGFsbC5saWJzIDo6ICQoQURBX0lOQ0xVREUpCisJJChJTlNUQUxMX0xJQikgXAorCQkkKFNPVVJDRV9ESVJfU1JDKS8qLmFkW3NiXSBcCisJCSQoQURBX0lOQ0xVREUpCiAKLSQoQUJBU0UpLXRleHRfaW8ubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8uYWRiCitpbnN0YWxsIFwKK2luc3RhbGwubGlicyA6OiAkKEFEQV9JTkNMVURFKQorCSQoSU5TVEFMTF9MSUIpIFwKKwkJJChHRU5FUkFURURfU09VUkNFUykgXAorCQkkKEFEQV9JTkNMVURFKQogCi0kKEFCQVNFKS10ZXh0X2lvLWF1eC5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWF1eC5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1hdXguYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWF1eC5hZGIKK3VuaW5zdGFsbCBcCit1bmluc3RhbGwubGlicyA6OgorCSQoU0hFTEwpIC1jICdmb3IgbmFtZSBpbiAkKFNPVVJDRV9ESVJfU1JDKS8qLmFkW3NiXSAkKEdFTkVSQVRFRF9TT1VSQ0VTKTsgZG8gcm0gLWYgJChBREFfSU5DTFVERSkvYGJhc2VuYW1lICQkbmFtZWA7IGRvbmUnCiAKLSQoQUJBU0UpLW1lbnVzLW1lbnVfdXNlcl9kYXRhLm86IFwKLQkJJChBQkFTRSktbWVudXMtbWVudV91c2VyX2RhdGEuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktbWVudXMtbWVudV91c2VyX2RhdGEuYWRiCitATUFLRV9BREFfU0hBUkVETElCQGluc3RhbGwgXAorQE1BS0VfQURBX1NIQVJFRExJQkBpbnN0YWxsLmxpYnMgOjogJChBREFfT0JKRUNUUykgJChMSUJESVIpCitATUFLRV9BREFfU0hBUkVETElCQAkkKElOU1RBTExfTElCKSBcCitATUFLRV9BREFfU0hBUkVETElCQAkJJChCVUlMRF9ESVIpL2R5bmFtaWMtYWxpLyogXAorQE1BS0VfQURBX1NIQVJFRExJQkAJCSQoQURBX09CSkVDVFMpCitATUFLRV9BREFfU0hBUkVETElCQAkkKElOU1RBTExfTElCKSBcCitATUFLRV9BREFfU0hBUkVETElCQAkJJChCVUlMRF9ESVJfTElCKS8kKFNIQVJFRF9MSUJOQU1FKSBcCitATUFLRV9BREFfU0hBUkVETElCQAkJJChMSUJESVIpCitATUFLRV9BREFfU0hBUkVETElCQAljZCAkKExJQkRJUikgJiYgJChMTl9TKSAkKFNIQVJFRF9MSUJOQU1FKSAkKFNIQVJFRF9TWU1MSU5LKQorQE1BS0VfQURBX1NIQVJFRExJQkAKK0BNQUtFX0FEQV9TSEFSRURMSUJAdW5pbnN0YWxsIFwKK0BNQUtFX0FEQV9TSEFSRURMSUJAdW5pbnN0YWxsLmxpYnMgOjoKK0BNQUtFX0FEQV9TSEFSRURMSUJACSQoU0hFTEwpIC1jICdmb3IgbmFtZSBpbiAkKEJVSUxEX0RJUikvZHluYW1pYy1hbGkvKiA7IGRvIHJtIC1mICQoQURBX09CSkVDVFMpL2BiYXNlbmFtZSAkJG5hbWVgOyBkb25lJworQE1BS0VfQURBX1NIQVJFRExJQkAKK0BNQUtFX0FEQV9TSEFSRURMSUJAdW5pbnN0YWxsIFwKK0BNQUtFX0FEQV9TSEFSRURMSUJAdW5pbnN0YWxsLmxpYnMgOjoKK0BNQUtFX0FEQV9TSEFSRURMSUJACXJtIC1mICQoTElCRElSKS8kKFNIQVJFRF9TWU1MSU5LKQorQE1BS0VfQURBX1NIQVJFRExJQkAJcm0gLWYgJChMSUJESVIpLyQoU0hBUkVEX0xJQk5BTUUpCiAKLSQoQUJBU0UpLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLm86IFwKLQkJJChBQkFTRSktbWVudXMtaXRlbV91c2VyX2RhdGEuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktbWVudXMtaXRlbV91c2VyX2RhdGEuYWRiCi0KLSQoQUJBU0UpLWZvcm1zLWZvcm1fdXNlcl9kYXRhLm86IFwKLQkJJChBQkFTRSktZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRiCi0KLSQoQUJBU0UpLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5vOiBcCi0JCSQoQUJBU0UpLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkYgotCi0kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRiCi0KLSQoQUJBU0UpLXBhbmVscy11c2VyX2RhdGEubzogXAotCQkkKEFCQVNFKS1wYW5lbHMtdXNlcl9kYXRhLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS1wYW5lbHMtdXNlcl9kYXRhLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktcGFuZWxzLXVzZXJfZGF0YS5hZGIKLQotJChBQkFTRSktdGV4dF9pby1pbnRlZ2VyX2lvLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8taW50ZWdlcl9pby5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1pbnRlZ2VyX2lvLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1pbnRlZ2VyX2lvLmFkYgotCi0kKEFCQVNFKS10ZXh0X2lvLWZsb2F0X2lvLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tZmxvYXRfaW8uYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tZmxvYXRfaW8uYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWZsb2F0X2lvLmFkYgotCi0kKEFCQVNFKS10ZXh0X2lvLWZpeGVkX2lvLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tZml4ZWRfaW8uYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tZml4ZWRfaW8uYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWZpeGVkX2lvLmFkYgotCi0kKEFCQVNFKS10ZXh0X2lvLWRlY2ltYWxfaW8ubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1kZWNpbWFsX2lvLmFkcyBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWRlY2ltYWxfaW8uYWRiICQoQkFTRURFUFMpCi0JJChBREEpICQoQURBRkxBR1MpIC1jIC1vICRAICQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLWRlY2ltYWxfaW8uYWRiCi0KLSQoQUJBU0UpLXRleHRfaW8tZW51bWVyYXRpb25faW8ubzogXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1lbnVtZXJhdGlvbl9pby5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1lbnVtZXJhdGlvbl9pby5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tZW51bWVyYXRpb25faW8uYWRiCi0KLSQoQUJBU0UpLXRleHRfaW8tbW9kdWxhcl9pby5vOiBcCi0JCSQoc3JjZGlyKS8kKEFCQVNFKS10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzIFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tbW9kdWxhcl9pby5hZGIgJChCQVNFREVQUykKLQkkKEFEQSkgJChBREFGTEFHUykgLWMgLW8gJEAgJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tbW9kdWxhcl9pby5hZGIKLQotJChBQkFTRSktdGV4dF9pby1jb21wbGV4X2lvLm86IFwKLQkJJChzcmNkaXIpLyQoQUJBU0UpLXRleHRfaW8tY29tcGxleF9pby5hZHMgXAotCQkkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1jb21wbGV4X2lvLmFkYiAkKEJBU0VERVBTKQotCSQoQURBKSAkKEFEQUZMQUdTKSAtYyAtbyAkQCAkKHNyY2RpcikvJChBQkFTRSktdGV4dF9pby1jb21wbGV4X2lvLmFkYgorY2xlYW4gOjoKKwlybSAtcmYgJChCVUlMRF9ESVIpLyotYWxpCisJcm0gLXJmICQoQlVJTERfRElSKS8qLW9iagorCXJtIC1yZiAkKEJVSUxEX0RJUl9MSUIpCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvY190aHJlYWRlZF92YXJpYWJsZXMuYyBiL0FkYTk1L3NyYy9jX3RocmVhZGVkX3ZhcmlhYmxlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNThjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9zcmMvY190aHJlYWRlZF92YXJpYWJsZXMuYwpAQCAtMCwwICsxLDU2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICBBdXRob3I6ICBOaWNvbGFzIEJvdWxlbmd1ZXosIDIwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY190aHJlYWRlZF92YXJpYWJsZXMuaCIKKworI2RlZmluZSBXUkFQKHR5cGUsIG5hbWUpICAgICAgICBcCisgIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbmFtZSAjIyBfYXNfZnVuY3Rpb24gKCkgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIG5hbWU7ICAgICAgICAgICAgICAgIFwKKyAgfQorLyogKklOREVOVC1PRkYqICovCitXUkFQKFdJTkRPVyAqLCBzdGRzY3IpCitXUkFQKFdJTkRPVyAqLCBjdXJzY3IpCisKK1dSQVAoaW50LCBMSU5FUykKK1dSQVAoaW50LCBDT0xTKQorV1JBUChpbnQsIFRBQlNJWkUpCitXUkFQKGludCwgQ09MT1JTKQorV1JBUChpbnQsIENPTE9SX1BBSVJTKQorCitjaHR5cGUKK2Fjc19tYXBfYXNfZnVuY3Rpb24oY2hhciBpbngpCit7CisgIHJldHVybiBhY3NfbWFwWyh1bnNpZ25lZCBjaGFyKSBpbnhdOworfQorLyogKklOREVOVC1PTiogKi8KZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy9jX3RocmVhZGVkX3ZhcmlhYmxlcy5oIGIvQWRhOTUvc3JjL2NfdGhyZWFkZWRfdmFyaWFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYwZjYyZgotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3NyYy9jX3RocmVhZGVkX3ZhcmlhYmxlcy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qICRJZDogY190aHJlYWRlZF92YXJpYWJsZXMuaCx2IDEuMyAyMDE1LzA4LzA2IDIzOjA5OjQ3IHRvbSBFeHAgJCAqLworCisjaWZuZGVmIF9fQ19USFJFQURFRF9WQVJJQUJMRVNfSAorI2RlZmluZSBfX0NfVEhSRUFERURfVkFSSUFCTEVTX0gKKworI2luY2x1ZGUgPG5jdXJzZXNfY2ZnLmg+CisKKyNpZiBIQVZFX0lOVFRZUEVTX0gKKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1RESU5UX0gKKyMgIGluY2x1ZGUgPHN0ZGludC5oPgorIyBlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxjdXJzZXMuaD4KKworZXh0ZXJuIFdJTkRPVyAqc3Rkc2NyX2FzX2Z1bmN0aW9uKHZvaWQpOworZXh0ZXJuIFdJTkRPVyAqY3Vyc2NyX2FzX2Z1bmN0aW9uKHZvaWQpOworCitleHRlcm4gaW50IExJTkVTX2FzX2Z1bmN0aW9uKHZvaWQpOworZXh0ZXJuIGludCBMSU5FU19hc19mdW5jdGlvbih2b2lkKTsKK2V4dGVybiBpbnQgQ09MU19hc19mdW5jdGlvbih2b2lkKTsKK2V4dGVybiBpbnQgVEFCU0laRV9hc19mdW5jdGlvbih2b2lkKTsKK2V4dGVybiBpbnQgQ09MT1JTX2FzX2Z1bmN0aW9uKHZvaWQpOworZXh0ZXJuIGludCBDT0xPUl9QQUlSU19hc19mdW5jdGlvbih2b2lkKTsKKworZXh0ZXJuIGNodHlwZSBhY3NfbWFwX2FzX2Z1bmN0aW9uKGNoYXIgLyogaW5kZXggKi8gKTsKKworI2VuZGlmIC8qIF9fQ19USFJFQURFRF9WQVJJQUJMRVNfSCAqLwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL2NfdmFyYXJnc190b19hZGEuYyBiL0FkYTk1L3NyYy9jX3ZhcmFyZ3NfdG9fYWRhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBiMWJiZQotLS0gL2Rldi9udWxsCisrKyBiL0FkYTk1L3NyYy9jX3ZhcmFyZ3NfdG9fYWRhLmMKQEAgLTAsMCArMSwxMTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgIEF1dGhvcjogIE5pY29sYXMgQm91bGVuZ3VleiwgMjAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICAgVmVyc2lvbiBDb250cm9sCisgICAgJElkOiBjX3ZhcmFyZ3NfdG9fYWRhLmMsdiAxLjYgMjAxNC8wNS8yNCAyMTozMjoxOCB0b20gRXhwICQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAgKi8KKworI2luY2x1ZGUgImNfdmFyYXJnc190b19hZGEuaCIKKworaW50CitzZXRfZmllbGRfdHlwZV9hbG51bShGSUVMRCAqZmllbGQsCisJCSAgICAgaW50IG1pbmltdW1fd2lkdGgpCit7CisgIHJldHVybiBzZXRfZmllbGRfdHlwZShmaWVsZCwgVFlQRV9BTE5VTSwgbWluaW11bV93aWR0aCk7Cit9CisKK2ludAorc2V0X2ZpZWxkX3R5cGVfYWxwaGEoRklFTEQgKmZpZWxkLAorCQkgICAgIGludCBtaW5pbXVtX3dpZHRoKQoreworICByZXR1cm4gc2V0X2ZpZWxkX3R5cGUoZmllbGQsIFRZUEVfQUxQSEEsIG1pbmltdW1fd2lkdGgpOworfQorCitpbnQKK3NldF9maWVsZF90eXBlX2VudW0oRklFTEQgKmZpZWxkLAorCQkgICAgY2hhciAqKnZhbHVlX2xpc3QsCisJCSAgICBpbnQgY2FzZV9zZW5zaXRpdmUsCisJCSAgICBpbnQgdW5pcXVlX21hdGNoKQoreworICByZXR1cm4gc2V0X2ZpZWxkX3R5cGUoZmllbGQsIFRZUEVfRU5VTSwgdmFsdWVfbGlzdCwgY2FzZV9zZW5zaXRpdmUsCisJCQl1bmlxdWVfbWF0Y2gpOworfQorCitpbnQKK3NldF9maWVsZF90eXBlX2ludGVnZXIoRklFTEQgKmZpZWxkLAorCQkgICAgICAgaW50IHByZWNpc2lvbiwKKwkJICAgICAgIGxvbmcgbWluaW11bSwKKwkJICAgICAgIGxvbmcgbWF4aW11bSkKK3sKKyAgcmV0dXJuIHNldF9maWVsZF90eXBlKGZpZWxkLCBUWVBFX0lOVEVHRVIsIHByZWNpc2lvbiwgbWluaW11bSwgbWF4aW11bSk7Cit9CisKK2ludAorc2V0X2ZpZWxkX3R5cGVfbnVtZXJpYyhGSUVMRCAqZmllbGQsCisJCSAgICAgICBpbnQgcHJlY2lzaW9uLAorCQkgICAgICAgZG91YmxlIG1pbmltdW0sCisJCSAgICAgICBkb3VibGUgbWF4aW11bSkKK3sKKyAgcmV0dXJuIHNldF9maWVsZF90eXBlKGZpZWxkLCBUWVBFX05VTUVSSUMsIHByZWNpc2lvbiwgbWluaW11bSwgbWF4aW11bSk7Cit9CisKK2ludAorc2V0X2ZpZWxkX3R5cGVfcmVnZXhwKEZJRUxEICpmaWVsZCwKKwkJICAgICAgY2hhciAqcmVndWxhcl9leHByZXNzaW9uKQoreworICByZXR1cm4gc2V0X2ZpZWxkX3R5cGUoZmllbGQsIFRZUEVfUkVHRVhQLCByZWd1bGFyX2V4cHJlc3Npb24pOworfQorCitpbnQKK3NldF9maWVsZF90eXBlX2lwdjQoRklFTEQgKmZpZWxkKQoreworICByZXR1cm4gc2V0X2ZpZWxkX3R5cGUoZmllbGQsIFRZUEVfSVBWNCk7Cit9CisKK2ludAorc2V0X2ZpZWxkX3R5cGVfdXNlcihGSUVMRCAqZmllbGQsCisJCSAgICBGSUVMRFRZUEUgKmZpZWxkdHlwZSwKKwkJICAgIHZvaWQgKmFyZykKK3sKKyAgcmV0dXJuIHNldF9maWVsZF90eXBlKGZpZWxkLCBmaWVsZHR5cGUsIGFyZyk7Cit9CisKK3ZvaWQgKgordm9pZF9zdGFyX21ha2VfYXJnKHZhX2xpc3QgKmxpc3QpCit7CisgIHJldHVybiB2YV9hcmcoKmxpc3QsIHZvaWQgKik7Cit9CisKKyNpZmRlZiBUUkFDRQordm9pZAorX3RyYWNlcyhjb25zdCBjaGFyICpmbXQsIGNoYXIgKmFyZykKK3sKKyAgX3RyYWNlZihmbXQsIGFyZyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy9jX3ZhcmFyZ3NfdG9fYWRhLmggYi9BZGE5NS9zcmMvY192YXJhcmdzX3RvX2FkYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjk3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9zcmMvY192YXJhcmdzX3RvX2FkYS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qICRJZDogY192YXJhcmdzX3RvX2FkYS5oLHYgMS40IDIwMTUvMDgvMDYgMjM6MDg6NDcgdG9tIEV4cCAkICovCisKKyNpZm5kZWYgX19DX1ZBUkFSR1NfVE9fQURBX0gKKyNkZWZpbmUgX19DX1ZBUkFSR1NfVE9fQURBX0gKKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxuY3Vyc2VzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8Zm9ybS5oPgorCitleHRlcm4gaW50IHNldF9maWVsZF90eXBlX2FsbnVtKEZJRUxEICogLyogZmllbGQgKi8gLAorCQkJCWludCAvKiBtaW5pbXVtX3dpZHRoICovICk7CisKK2V4dGVybiBpbnQgc2V0X2ZpZWxkX3R5cGVfYWxwaGEoRklFTEQgKiAvKiBmaWVsZCAqLyAsCisJCQkJaW50IC8qIG1pbmltdW1fd2lkdGggKi8gKTsKKworZXh0ZXJuIGludCBzZXRfZmllbGRfdHlwZV9lbnVtKEZJRUxEICogLyogZmllbGQgKi8gLAorCQkJICAgICAgIGNoYXIgKiogLyogdmFsdWVfbGlzdCAqLyAsCisJCQkgICAgICAgaW50IC8qIGNhc2Vfc2Vuc2l0aXZlICovICwKKwkJCSAgICAgICBpbnQgLyogdW5pcXVlX21hdGNoICovICk7CisKK2V4dGVybiBpbnQgc2V0X2ZpZWxkX3R5cGVfaW50ZWdlcihGSUVMRCAqIC8qIGZpZWxkICovICwKKwkJCQkgIGludCAvKiBwcmVjaXNpb24gKi8gLAorCQkJCSAgbG9uZyAvKiBtaW5pbXVtICovICwKKwkJCQkgIGxvbmcgLyogbWF4aW11bSAqLyApOworCitleHRlcm4gaW50IHNldF9maWVsZF90eXBlX251bWVyaWMoRklFTEQgKiAvKiBmaWVsZCAqLyAsCisJCQkJICBpbnQgLyogcHJlY2lzaW9uICovICwKKwkJCQkgIGRvdWJsZSAvKiBtaW5pbXVtICovICwKKwkJCQkgIGRvdWJsZSAvKiBtYXhpbXVtICovICk7CisKK2V4dGVybiBpbnQgc2V0X2ZpZWxkX3R5cGVfcmVnZXhwKEZJRUxEICogLyogZmllbGQgKi8gLAorCQkJCSBjaGFyICogLyogcmVndWxhcl9leHByZXNzaW9uICovICk7CisKK2V4dGVybiBpbnQgc2V0X2ZpZWxkX3R5cGVfaXB2NChGSUVMRCAqIC8qIGZpZWxkICovICk7CisKK2V4dGVybiBpbnQgc2V0X2ZpZWxkX3R5cGVfdXNlcihGSUVMRCAqIC8qIGZpZWxkICovICwKKwkJCSAgICAgICBGSUVMRFRZUEUgKiAvKiBmaWVsZHR5cGUgKi8gLAorCQkJICAgICAgIHZvaWQgKiAvKiBhcmcgKi8gKTsKKworZXh0ZXJuIHZvaWQgKnZvaWRfc3Rhcl9tYWtlX2FyZyh2YV9saXN0ICogLyogbGlzdCAqLyApOworCisjaWZkZWYgVFJBQ0UKK2V4dGVybiB2b2lkIF90cmFjZXMoY29uc3QgY2hhciAqCS8qIGZtdCAqLworCQkgICAgLGNoYXIgKiAvKiBhcmcgKi8gKTsKKyNlbmRpZgorCisjZW5kaWYgLyogX19DX1ZBUkFSR1NfVE9fQURBX0ggKi8KZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy9saWJyYXJ5LmdwciBiL0FkYTk1L3NyYy9saWJyYXJ5LmdwcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzM4MGYwCi0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvc3JjL2xpYnJhcnkuZ3ByCkBAIC0wLDAgKzEsNTYgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQorLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCistLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS0KKy0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLQorLS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tCistLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS0KKy0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS0KKy0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS0KKy0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLQorLS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tCistLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS0KKy0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLQorLS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tCistLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tCistLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS0KKy0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLQorLS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tICRJZDogbGlicmFyeS5ncHIsdiAxLjkgMjAxNC8wNi8wMSAwMToxMzowOSB0b20gRXhwICQKKy0tIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2duYXRfdWduX3Vudy9MaWJyYXJ5LVByb2plY3RzLmh0bWwKKy0tIGh0dHA6Ly93d3cuYWRhd29ybGQuY29tL2RlYmlhbi9kZWJpYW4tYWRhLXBvbGljeS5odG1sCitwcm9qZWN0IExpYnJhcnkgaXMKKyAgQnVpbGRfRGlyIDo9IEV4dGVybmFsICgiQlVJTERfRElSIik7CisgIFNvdXJjZV9EaXIgOj0gRXh0ZXJuYWwgKCJTT1VSQ0VfRElSIik7CisgIFNvdXJjZV9EaXIyIDo9IEV4dGVybmFsICgiU09VUkNFX0RJUjIiKTsKKyAgS2luZCA6PSBFeHRlcm5hbCAoIkxJQl9LSU5EIik7CisgIGZvciBMaWJyYXJ5X05hbWUgdXNlIEV4dGVybmFsICgiTElCX05BTUUiKTsKKyAgZm9yIExpYnJhcnlfVmVyc2lvbiB1c2UgRXh0ZXJuYWwgKCJTT05BTUUiKTsKKworICBmb3IgTGlicmFyeV9LaW5kIHVzZSBLaW5kOworICBmb3IgTGlicmFyeV9EaXIgdXNlIEJ1aWxkX0RpciAmICIvbGliIjsKKyAgZm9yIE9iamVjdF9EaXIgdXNlIEJ1aWxkX0RpciAmICIvIiAmIEtpbmQgJiAiLW9iaiI7CisgIGZvciBMaWJyYXJ5X0FMSV9EaXIgdXNlIEJ1aWxkX0RpciAmICIvIiAmIEtpbmQgJiAiLWFsaSI7CisgIGZvciBTb3VyY2VfRGlycyB1c2UgKFNvdXJjZV9EaXIgJiAiL3NyYyIsCisgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZV9EaXIyLAorICAgICAgICAgICAgICAgICAgICAgICBCdWlsZF9EaXIgJiAiL3NyYyIpOworICBmb3IgTGlicmFyeV9PcHRpb25zIHVzZSAoIi1sbmN1cnNlcyIsICItbHBhbmVsIiwgIi1sbWVudSIsICItbGZvcm0iKTsKKyAgcGFja2FnZSBDb21waWxlciBpcworICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZQorICAgICAgICgiLWciLAorICAgICAgICAiLU8yIiwKKyAgICAgICAgIi1nbmF0YWZubyIsCisgICAgICAgICItZ25hdFZhIiwgICAtLSBBbGwgdmFsaWRpdHkgY2hlY2tzCisgICAgICAgICItZ25hdHdhIik7ICAtLSBBY3RpdmF0ZSBhbGwgb3B0aW9uYWwgZXJyb3JzCisgIGVuZCBDb21waWxlcjsKKyAgZm9yIExhbmd1YWdlcyB1c2UgKCJDIiwgIkFkYSIpOworZW5kIExpYnJhcnk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvbW9kdWxlcyBiL0FkYTk1L3NyYy9tb2R1bGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNWUwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9BZGE5NS9zcmMvbW9kdWxlcwpAQCAtMCwwICsxLDcwIEBACisjICRJZDogbW9kdWxlcyx2IDEuMyAyMDEwLzA2LzI2IDIzOjMzOjE0IHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkJMjAxMAorIworCisjIExpYnJhcnkgb2JqZWN0cworIyByb290bmFtZQkJCQlkZXBlbmQtc3BlYwlkZXBlbmQtYm9keQl1bml0CiskKEFMSUIpCQkJCQkkKHNyY2RpcikJbm9uZQkJc3BlYworJChBQkFTRSktYXV4CQkJCW5vbmUJCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKQkJCQlub25lCQkuCQlib2R5CiskKEFCQVNFKS10ZXJtaW5mbwkJCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktdGVybWNhcAkJCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktcHV0d2luCQkJCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktdHJhY2UJCQkJLgkJLgkJYm9keQorJChBQkFTRSktbW91c2UJCQkJLgkJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLXBhbmVscwkJCQkuCQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktbWVudXMJCQkJLgkJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLWZvcm1zCQkJCS4JCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcwkJLgkJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQJJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24JJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MJJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS1mb3Jtcy1maWVsZF90eXBlcy11c2VyCQkkKHNyY2RpcikJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktdGV4dF9pbwkJCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktdGV4dF9pby1hdXgJCQkkKHNyY2RpcikJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLW1lbnVzLW1lbnVfdXNlcl9kYXRhCQkuCQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktbWVudXMtaXRlbV91c2VyX2RhdGEJCS4JCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS1mb3Jtcy1mb3JtX3VzZXJfZGF0YQkJLgkJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLWZvcm1zLWZpZWxkX3VzZXJfZGF0YQkJLgkJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYSAkKHNyY2RpcikJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLXBhbmVscy11c2VyX2RhdGEJCS4JCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS10ZXh0X2lvLWludGVnZXJfaW8JCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQorJChBQkFTRSktdGV4dF9pby1mbG9hdF9pbwkJJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS10ZXh0X2lvLWZpeGVkX2lvCQkkKHNyY2RpcikJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLXRleHRfaW8tZGVjaW1hbF9pbwkJJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS10ZXh0X2lvLWVudW1lcmF0aW9uX2lvCQkkKHNyY2RpcikJJChzcmNkaXIpCWJvZHkKKyQoQUJBU0UpLXRleHRfaW8tbW9kdWxhcl9pbwkJJChzcmNkaXIpCSQoc3JjZGlyKQlib2R5CiskKEFCQVNFKS10ZXh0X2lvLWNvbXBsZXhfaW8JCSQoc3JjZGlyKQkkKHNyY2RpcikJYm9keQpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL25jdXJzZXNfY29tcGF0LmMgYi9BZGE5NS9zcmMvbmN1cnNlc19jb21wYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDRmM2QwCi0tLSAvZGV2L251bGwKKysrIGIvQWRhOTUvc3JjL25jdXJzZXNfY29tcGF0LmMKQEAgLTAsMCArMSwxNDUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgIEF1dGhvcjogIFRob21hcyBFLiBEaWNrZXksIDIwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICAgVmVyc2lvbiBDb250cm9sCisgICAgJElkOiBuY3Vyc2VzX2NvbXBhdC5jLHYgMS4zIDIwMTUvMDgvMDYgMjM6MDk6MTAgdG9tIEV4cCAkCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoKKyAqIFByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMuCisgKi8KKyNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgorCisjaWYgSEFWRV9JTlRUWVBFU19ICisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZWxzZQorIyBpZiBIQVZFX1NURElOVF9ICisjICBpbmNsdWRlIDxzdGRpbnQuaD4KKyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CisKKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTl9QQVRDSCkKKworI2lmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCA8IDIwMDgxMTIyCitleHRlcm4gYm9vbCBoYXNfbW91c2Uodm9pZCk7CitleHRlcm4gaW50IF9uY19oYXNfbW91c2Uodm9pZCk7CisKK2Jvb2wKK2hhc19tb3VzZSh2b2lkKQoreworICByZXR1cm4gKGJvb2wpX25jX2hhc19tb3VzZSgpOworfQorI2VuZGlmCisKKy8qCisgKiBUaGVzZSBhcmUgcHJvdmlkZWQgYnkgbGliX2dlbi5jOgorICovCisjaWYgTkNVUlNFU19WRVJTSU9OX1BBVENIIDwgMjAwNzAzMzEKK2V4dGVybiBib29sIChpc19rZXlwYWQpIChjb25zdCBXSU5ET1cgKik7CitleHRlcm4gYm9vbCAoaXNfc2Nyb2xsb2spIChjb25zdCBXSU5ET1cgKik7CisKK2Jvb2wKK2lzX2tleXBhZChjb25zdCBXSU5ET1cgKndpbikKK3sKKyAgcmV0dXJuICgod2luKS0+X3VzZV9rZXlwYWQpOworfQorCitib29sCisgIChpc19zY3JvbGxvaykgKGNvbnN0IFdJTkRPVyAqd2luKQoreworICByZXR1cm4gKCh3aW4pLT5fc2Nyb2xsKTsKK30KKyNlbmRpZgorCisjaWYgTkNVUlNFU19WRVJTSU9OX1BBVENIIDwgMjAwNjAxMDcKK2V4dGVybiBpbnQgKGdldGJlZ3gpIChXSU5ET1cgKik7CitleHRlcm4gaW50IChnZXRiZWd5KSAoV0lORE9XICopOworZXh0ZXJuIGludCAoZ2V0Y3VyeCkgKFdJTkRPVyAqKTsKK2V4dGVybiBpbnQgKGdldGN1cnkpIChXSU5ET1cgKik7CitleHRlcm4gaW50IChnZXRtYXh4KSAoV0lORE9XICopOworZXh0ZXJuIGludCAoZ2V0bWF4eSkgKFdJTkRPVyAqKTsKK2V4dGVybiBpbnQgKGdldHBhcngpIChXSU5ET1cgKik7CitleHRlcm4gaW50IChnZXRwYXJ5KSAoV0lORE9XICopOworCitpbnQKKyAgKGdldGJlZ3kpIChXSU5ET1cgKndpbikKK3sKKyAgcmV0dXJuICgod2luKSA/ICh3aW4pLT5fYmVneSA6IEVSUik7Cit9CisKK2ludAorICAoZ2V0YmVneCkgKFdJTkRPVyAqd2luKQoreworICByZXR1cm4gKCh3aW4pID8gKHdpbiktPl9iZWd4IDogRVJSKTsKK30KKworaW50CisgIChnZXRjdXJ5KSAoV0lORE9XICp3aW4pCit7CisgIHJldHVybiAoKHdpbikgPyAod2luKS0+X2N1cnkgOiBFUlIpOworfQorCitpbnQKKyAgKGdldGN1cngpIChXSU5ET1cgKndpbikKK3sKKyAgcmV0dXJuICgod2luKSA/ICh3aW4pLT5fY3VyeCA6IEVSUik7Cit9CisKK2ludAorICAoZ2V0bWF4eSkgKFdJTkRPVyAqd2luKQoreworICByZXR1cm4gKCh3aW4pID8gKCh3aW4pLT5fbWF4eSArIDEpIDogRVJSKTsKK30KKworaW50CisgIChnZXRtYXh4KSAoV0lORE9XICp3aW4pCit7CisgIHJldHVybiAoKHdpbikgPyAoKHdpbiktPl9tYXh4ICsgMSkgOiBFUlIpOworfQorCitpbnQKKyAgKGdldHBhcnkpIChXSU5ET1cgKndpbikKK3sKKyAgcmV0dXJuICgod2luKSA/ICh3aW4pLT5fcGFyeSA6IEVSUik7Cit9CisKK2ludAorICAoZ2V0cGFyeCkgKFdJTkRPVyAqd2luKQoreworICByZXR1cm4gKCh3aW4pID8gKHdpbiktPl9wYXJ4IDogRVJSKTsKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRiCmluZGV4IDgxMmU4Y2MuLjljMmY4Y2QgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSwxMyArMzUsMTMgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTAgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eCBpcwogICAgLS0KICAgIC0tICBTb21lIGhlbHBlcnMKLSAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgIDogaW4gIGNoYXJzX3B0cjsKKyAgIHByb2NlZHVyZSBGaWxsX1N0cmluZyAoQ3AgIDogY2hhcnNfcHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgOiBvdXQgU3RyaW5nKQogICAgaXMKICAgICAgIC0tICBGaWxsIHRoZSBzdHJpbmcgd2l0aCB0aGUgY2hhcmFjdGVycyByZWZlcmVuY2VkIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRiCmluZGV4IGY0MzdjZTYuLjljNjE0Y2EgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMzEgKzM1LDIzIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjkgJAotLS0gICREYXRlOiAyMDA4LzA3LzI2IDE4OjUwOjI1ICQKKy0tICAkUmV2aXNpb246IDEuMTMgJAorLS0gICREYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjA1ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwogCiBwYWNrYWdlIGJvZHkgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5BbHBoYSBpcwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBBbHBoYV9GaWVsZCkKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IEFscGhhX0ZpZWxkKQogICAgaXMKLSAgICAgIENfQWxwaGFfRmllbGRfVHlwZSA6IENfRmllbGRfVHlwZTsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIENfQWxwaGFfRmllbGRfVHlwZSwgIlRZUEVfQUxQSEEiKTsKLQogICAgICAgZnVuY3Rpb24gU2V0X0ZsZF9UeXBlIChGICAgIDogRmllbGQgOj0gRmxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZnQgIDogQ19GaWVsZF9UeXBlIDo9IENfQWxwaGFfRmllbGRfVHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMSA6IENfSW50KSByZXR1cm4gQ19JbnQ7Ci0gICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcxIDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9hbHBoYSIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgotICAgICAgUmVzIDo9IFNldF9GbGRfVHlwZSAoQXJnMSA9PiBDX0ludCAoVHlwLk1pbmltdW1fRmllbGRfV2lkdGgpKTsKLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmxkX1R5cGUgKEFyZzEgPT4gQ19JbnQgKFR5cC5NaW5pbXVtX0ZpZWxkX1dpZHRoKSkpOwogICAgICAgV3JhcF9CdWlsdGluIChGbGQsIFR5cCk7CiAgICBlbmQgU2V0X0ZpZWxkX1R5cGU7CiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkcwppbmRleCA2ZjBiNzlkLi43ODc4ZjczIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZHMKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5BbHBoYSBpcwpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBNaW5pbXVtX0ZpZWxkX1dpZHRoIDogTmF0dXJhbCA6PSAwOwogICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBBbHBoYV9GaWVsZCk7CisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBBbHBoYV9GaWVsZCk7CiAgICBwcmFnbWEgSW5saW5lIChTZXRfRmllbGRfVHlwZSk7CiAKIGVuZCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYiBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZGIKaW5kZXggMGMzY2EyOS4uMjcwOTA2ZCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDMxICszNSwyMyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS45ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MDoxNSAkCistLSAgJFJldmlzaW9uOiAxLjEzICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsKIAogcGFja2FnZSBib2R5IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuQWxwaGFOdW1lcmljIGlzCiAKLSAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IGluIEFscGhhTnVtZXJpY19GaWVsZCkKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IEFscGhhTnVtZXJpY19GaWVsZCkKICAgIGlzCi0gICAgICBDX0FscGhhTnVtZXJpY19GaWVsZF9UeXBlIDogQ19GaWVsZF9UeXBlOwotICAgICAgcHJhZ21hIEltcG9ydCAoQywgQ19BbHBoYU51bWVyaWNfRmllbGRfVHlwZSwgIlRZUEVfQUxOVU0iKTsKLQogICAgICAgZnVuY3Rpb24gU2V0X0ZsZF9UeXBlIChGICAgIDogRmllbGQgOj0gRmxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZnQgIDogQ19GaWVsZF9UeXBlIDo9IENfQWxwaGFOdW1lcmljX0ZpZWxkX1R5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBDX0ludCkgcmV0dXJuIENfSW50OwotICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMSA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOworICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGVfYWxudW0iKTsKIAotICAgICAgUmVzIDogRXRpX0Vycm9yOwogICAgYmVnaW4KLSAgICAgIFJlcyA6PSBTZXRfRmxkX1R5cGUgKEFyZzEgPT4gQ19JbnQgKFR5cC5NaW5pbXVtX0ZpZWxkX1dpZHRoKSk7Ci0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZsZF9UeXBlIChBcmcxID0+IENfSW50IChUeXAuTWluaW11bV9GaWVsZF9XaWR0aCkpKTsKICAgICAgIFdyYXBfQnVpbHRpbiAoRmxkLCBUeXApOwogICAgZW5kIFNldF9GaWVsZF9UeXBlOwogCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkcwppbmRleCAxZjIxOTUwLi5jMTAwOWFjIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWRzCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhTnVtZXJpYyBpcwpAQCAtNDcsOCArNDcsOCBAQAogICAgICAgICBNaW5pbXVtX0ZpZWxkX1dpZHRoIDogTmF0dXJhbCA6PSAwOwogICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBBbHBoYU51bWVyaWNfRmllbGQpOworICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogQWxwaGFOdW1lcmljX0ZpZWxkKTsKICAgIHByYWdtYSBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAogZW5kIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuQWxwaGFOdW1lcmljOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkYiBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYS5hZGIKaW5kZXggYjNlYWY0NC4uZDM4ZTA2MiAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTAgJAotLS0gICREYXRlOiAyMDA0LzA4LzIxIDIxOjM3OjAwICQKKy0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICREYXRlOiAyMDExLzAzLzIyIDIzOjM2OjIwICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuQ2hhcmFjdGVycy5IYW5kbGluZzsgdXNlIEFkYS5DaGFyYWN0ZXJzLkhhbmRsaW5nOwpAQCAtNjEsOCArNjEsOCBAQAogICAgICAgICAgaWYgU2V0IC89IFVwcGVyX0Nhc2UgdGhlbgogICAgICAgICAgICAgSS5OYW1lcyAoSikuYWxsIDo9IFRvX0xvd2VyIChJLk5hbWVzIChKKS5hbGwpOwogICAgICAgICAgICAgaWYgU2V0ID0gTWl4ZWRfQ2FzZSB0aGVuCi0gICAgICAgICAgICAgICBJLk5hbWVzIChKKShJLk5hbWVzIChKKS5hbGwnRmlyc3QpIDo9Ci0gICAgICAgICAgICAgICAgIFRvX1VwcGVyIChJLk5hbWVzIChKKShJLk5hbWVzIChKKS5hbGwnRmlyc3QpKTsKKyAgICAgICAgICAgICAgIEkuTmFtZXMgKEopLmFsbCAoSS5OYW1lcyAoSikuYWxsJ0ZpcnN0KSA6PQorICAgICAgICAgICAgICAgICBUb19VcHBlciAoSS5OYW1lcyAoSikuYWxsIChJLk5hbWVzIChKKS5hbGwnRmlyc3QpKTsKICAgICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgIEogOj0gSiArIDE7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGIKaW5kZXggOGJlMjBmMi4uOGQ0YzljZSAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjcgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb247CkBAIC02MywxMyArNjMsMTMgQEAKICAgICAgICAgIGlmIEluZm8uTmFtZXMgKEkpID0gbnVsbCB0aGVuCiAgICAgICAgICAgICByYWlzZSBGb3JtX0V4Y2VwdGlvbjsKICAgICAgICAgIGVuZCBpZjsKLSAgICAgICAgIEUuQXJyIChzaXplX3QgKEkpKSA6PSBOZXdfU3RyaW5nIChJbmZvLk5hbWVzIChJKS5hbGwpOworICAgICAgICAgRS5BcnIuYWxsIChzaXplX3QgKEkpKSA6PSBOZXdfU3RyaW5nIChJbmZvLk5hbWVzIChJKS5hbGwpOwogICAgICAgICAgaWYgQXV0b19SZWxlYXNlX05hbWVzIHRoZW4KICAgICAgICAgICAgIFMgOj0gSW5mby5OYW1lcyAoSSk7CiAgICAgICAgICAgICBSZWxlYXNlX1N0cmluZyAoUyk7CiAgICAgICAgICBlbmQgaWY7CiAgICAgICBlbmQgbG9vcDsKLSAgICAgIEUuQXJyIChMKSA6PSBOdWxsX1B0cjsKKyAgICAgIEUuQXJyLmFsbCAoTCkgOj0gTnVsbF9QdHI7CiAgICAgICByZXR1cm4gRTsKICAgIGVuZCBDcmVhdGU7CiAKQEAgLTc5LDQwICs3OSwzMyBAQAogICAgICAgUCA6IGNoYXJzX3B0cjsKICAgIGJlZ2luCiAgICAgICBsb29wCi0gICAgICAgICBQIDo9IEVudW0uQXJyIChJKTsKKyAgICAgICAgIFAgOj0gRW51bS5BcnIuYWxsIChJKTsKICAgICAgICAgIGV4aXQgd2hlbiBQID0gTnVsbF9QdHI7CiAgICAgICAgICBGcmVlIChQKTsKLSAgICAgICAgIEVudW0uQXJyIChJKSA6PSBOdWxsX1B0cjsKKyAgICAgICAgIEVudW0uQXJyLmFsbCAoSSkgOj0gTnVsbF9QdHI7CiAgICAgICAgICBJIDo9IEkgKyAxOwogICAgICAgZW5kIGxvb3A7CiAgICAgICBFbnVtLkFyciA6PSBudWxsOwogICAgZW5kIFJlbGVhc2U7CiAKLSAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IGluIEVudW1lcmF0aW9uX0ZpZWxkKQorICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogRW51bWVyYXRpb25fRmllbGQpCiAgICBpcwotICAgICAgQ19FbnVtX1R5cGUgOiBDX0ZpZWxkX1R5cGU7Ci0gICAgICBwcmFnbWEgSW1wb3J0IChDLCBDX0VudW1fVHlwZSwgIlRZUEVfRU5VTSIpOwotCiAgICAgICBmdW5jdGlvbiBTZXRfRmxkX1R5cGUgKEYgICAgOiBGaWVsZCA6PSBGbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENmdCAgOiBDX0ZpZWxkX1R5cGUgOj0gQ19FbnVtX1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBjaGFyc19wdHJfYXJyYXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzIgOiBDX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMyA6IENfSW50KSByZXR1cm4gQ19JbnQ7Ci0gICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmczIDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9lbnVtIik7CiAKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCiAgICAgICBpZiBUeXAuQXJyID0gbnVsbCB0aGVuCiAgICAgICAgICByYWlzZSBGb3JtX0V4Y2VwdGlvbjsKICAgICAgIGVuZCBpZjsKLSAgICAgIFJlcyA6PSBTZXRfRmxkX1R5cGUgKEFyZzEgPT4gVHlwLkFyci5hbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcyID0+IENfSW50IChCb29sZWFuJ1BvcyAoVHlwLkNhc2VfU2Vuc2l0aXZlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBcmczID0+IENfSW50IChCb29sZWFuJ1BvcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFR5cC5NYXRjaF9NdXN0X0JlX1VuaXF1ZSkpKTsKLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uCisgICAgICAgIChTZXRfRmxkX1R5cGUKKyAgICAgICAgICAgKEFyZzEgPT4gVHlwLkFyci5hbGwsCisgICAgICAgICAgICBBcmcyID0+IENfSW50IChCb29sZWFuJ1BvcyAoVHlwLkNhc2VfU2Vuc2l0aXZlKSksCisgICAgICAgICAgICBBcmczID0+IENfSW50IChCb29sZWFuJ1BvcyAoVHlwLk1hdGNoX011c3RfQmVfVW5pcXVlKSkpKTsKICAgICAgIFdyYXBfQnVpbHRpbiAoRmxkLCBUeXAsIENfQ2hvaWNlX1JvdXRlcik7CiAgICBlbmQgU2V0X0ZpZWxkX1R5cGU7CiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkcwppbmRleCA1YTdlNDExLi5lNjkyNGY2IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZHMKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggSW50ZXJmYWNlcy5DLlN0cmluZ3M7CkBAIC04MSw4ICs4MSw4IEBACiAgICAtLSAgVGhlIG5leHQgdHlwZSBkZWZpbnRpb25zIGFyZSBhbGwgbmN1cnNlcyBleHRlbnNpb25zLiBUaGV5IGFyZSB0eXBpY2FsbHkKICAgIC0tICBub3QgYXZhaWxhYmxlIGluIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMuCiAKLSAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IGluIEVudW1lcmF0aW9uX0ZpZWxkKTsKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IEVudW1lcmF0aW9uX0ZpZWxkKTsKICAgIHByYWdtYSBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAogcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRiCmluZGV4IDYxZDY2YzQuLjVlYzMzMDUgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMzUgKzM1LDI3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjkgJAotLS0gICREYXRlOiAyMDA4LzA3LzI2IDE4OjUwOjA2ICQKKy0tICAkUmV2aXNpb246IDEuMTMgJAorLS0gICREYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjA1ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsgdXNlIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwogCiBwYWNrYWdlIGJvZHkgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5JbnRGaWVsZCBpcwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBJbnRlZ2VyX0ZpZWxkKQorICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogSW50ZWdlcl9GaWVsZCkKICAgIGlzCi0gICAgICBDX0ludGVnZXJfRmllbGRfVHlwZSA6IENfRmllbGRfVHlwZTsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIENfSW50ZWdlcl9GaWVsZF9UeXBlLCAiVFlQRV9JTlRFR0VSIik7Ci0KICAgICAgIGZ1bmN0aW9uIFNldF9GbGRfVHlwZSAoRiAgICA6IEZpZWxkIDo9IEZsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Z0ICA6IENfRmllbGRfVHlwZSA6PSBDX0ludGVnZXJfRmllbGRfVHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMSA6IENfSW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcyIDogQ19Mb25nX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMyA6IENfTG9uZ19JbnQpIHJldHVybiBDX0ludDsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzMgOiBDX0xvbmdfSW50KSByZXR1cm4gRXRpX0Vycm9yOworICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGVfaW50ZWdlciIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgotICAgICAgUmVzIDo9IFNldF9GbGRfVHlwZSAoQXJnMSA9PiBDX0ludCAoVHlwLlByZWNpc2lvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcyID0+IENfTG9uZ19JbnQgKFR5cC5Mb3dlcl9MaW1pdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBcmczID0+IENfTG9uZ19JbnQgKFR5cC5VcHBlcl9MaW1pdCkpOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9GbGRfVHlwZSAoQXJnMSA9PiBDX0ludCAoVHlwLlByZWNpc2lvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzIgPT4gQ19Mb25nX0ludCAoVHlwLkxvd2VyX0xpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMyA9PiBDX0xvbmdfSW50IChUeXAuVXBwZXJfTGltaXQpKSk7CiAgICAgICBXcmFwX0J1aWx0aW4gKEZsZCwgVHlwKTsKICAgIGVuZCBTZXRfRmllbGRfVHlwZTsKIApkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRzCmluZGV4IGIyODVjYTIuLmU5MGYwZDAgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkludEZpZWxkIGlzCkBAIC00OCw4ICs0OCw4IEBACiAgICAgICAgICBVcHBlcl9MaW1pdCA6IEludGVnZXI7CiAgICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBJbnRlZ2VyX0ZpZWxkKTsKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IEludGVnZXJfRmllbGQpOwogICAgcHJhZ21hIElubGluZSAoU2V0X0ZpZWxkX1R5cGUpOwogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5JbnRGaWVsZDsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRiCmluZGV4IDNkN2M1YjUuLjk3OGE0N2EgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSwzMSArMzUsMjMgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuOSAkCi0tLSAgJERhdGU6IDIwMDgvMDcvMjYgMTg6NDk6NDcgJAorLS0gICRSZXZpc2lvbjogMS4xMyAkCistLSAgJERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7CiAKIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLklQVjRfQWRkcmVzcyBpcwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBJbnRlcm5ldF9WNF9BZGRyZXNzX0ZpZWxkKQorICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogSW50ZXJuZXRfVjRfQWRkcmVzc19GaWVsZCkKICAgIGlzCi0gICAgICBDX0lQVjRfRmllbGRfVHlwZSA6IENfRmllbGRfVHlwZTsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIENfSVBWNF9GaWVsZF9UeXBlLCAiVFlQRV9JUFY0Iik7CisgICAgICBmdW5jdGlvbiBTZXRfRmxkX1R5cGUgKEYgOiBGaWVsZCA6PSBGbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFdGlfRXJyb3I7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9pcHY0Iik7CiAKLSAgICAgIGZ1bmN0aW9uIFNldF9GbGRfVHlwZSAoRiAgICA6IEZpZWxkIDo9IEZsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Z0ICA6IENfRmllbGRfVHlwZSA6PSBDX0lQVjRfRmllbGRfVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENfSW50OwotICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKLQotICAgICAgUmVzIDogRXRpX0Vycm9yOwogICAgYmVnaW4KLSAgICAgIFJlcyA6PSBTZXRfRmxkX1R5cGU7Ci0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZsZF9UeXBlKTsKICAgICAgIFdyYXBfQnVpbHRpbiAoRmxkLCBUeXApOwogICAgZW5kIFNldF9GaWVsZF9UeXBlOwogCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkcwppbmRleCA2ZDBhZWYwLi5hZjM2N2U3IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRzCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLklQVjRfQWRkcmVzcyBpcwpAQCAtNDQsOCArNDQsOCBAQAogCiAgICB0eXBlIEludGVybmV0X1Y0X0FkZHJlc3NfRmllbGQgaXMgbmV3IEZpZWxkX1R5cGUgd2l0aCBudWxsIHJlY29yZDsKIAotICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogaW4gSW50ZXJuZXRfVjRfQWRkcmVzc19GaWVsZCk7CisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBJbnRlcm5ldF9WNF9BZGRyZXNzX0ZpZWxkKTsKICAgIHByYWdtYSBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAogZW5kIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuSVBWNF9BZGRyZXNzOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYgppbmRleCA3OWY4NDg5Li45NGUyYWE3IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEwICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0OTo1NyAkCistLSAgJFJldmlzaW9uOiAxLjE0ICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggSW50ZXJmYWNlcy5DOwpAQCAtNDQsMjkgKzQ0LDIxIEBACiAKIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLk51bWVyaWMgaXMKIAotICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogaW4gTnVtZXJpY19GaWVsZCkKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IE51bWVyaWNfRmllbGQpCiAgICBpcwogICAgICAgdHlwZSBEb3VibGUgaXMgbmV3IEludGVyZmFjZXMuQy5kb3VibGU7CiAKLSAgICAgIENfTnVtZXJpY19GaWVsZF9UeXBlIDogQ19GaWVsZF9UeXBlOwotICAgICAgcHJhZ21hIEltcG9ydCAoQywgQ19OdW1lcmljX0ZpZWxkX1R5cGUsICJUWVBFX05VTUVSSUMiKTsKLQogICAgICAgZnVuY3Rpb24gU2V0X0ZsZF9UeXBlIChGICAgIDogRmllbGQgOj0gRmxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZnQgIDogQ19GaWVsZF9UeXBlIDo9IENfTnVtZXJpY19GaWVsZF9UeXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcxIDogQ19JbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzIgOiBEb3VibGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzMgOiBEb3VibGUpIHJldHVybiBDX0ludDsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzMgOiBEb3VibGUpIHJldHVybiBFdGlfRXJyb3I7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9udW1lcmljIik7CiAKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCi0gICAgICBSZXMgOj0gU2V0X0ZsZF9UeXBlIChBcmcxID0+IENfSW50IChUeXAuUHJlY2lzaW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzIgPT4gRG91YmxlIChUeXAuTG93ZXJfTGltaXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnMyA9PiBEb3VibGUgKFR5cC5VcHBlcl9MaW1pdCkpOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9GbGRfVHlwZSAoQXJnMSA9PiBDX0ludCAoVHlwLlByZWNpc2lvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzIgPT4gRG91YmxlIChUeXAuTG93ZXJfTGltaXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmczID0+IERvdWJsZSAoVHlwLlVwcGVyX0xpbWl0KSkpOwogICAgICAgV3JhcF9CdWlsdGluIChGbGQsIFR5cCk7CiAgICBlbmQgU2V0X0ZpZWxkX1R5cGU7CiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZHMKaW5kZXggZjIxMWJjOC4uN2M2ZjlmYSAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZHMKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLk51bWVyaWMgaXMKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAgIFVwcGVyX0xpbWl0IDogRmxvYXQ7CiAgICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBOdW1lcmljX0ZpZWxkKTsKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IE51bWVyaWNfRmllbGQpOwogICAgcHJhZ21hIElubGluZSAoU2V0X0ZpZWxkX1R5cGUpOwogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5OdW1lcmljOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkYiBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZGIKaW5kZXggY2JkOWUyZi4uZjVlYTBkYiAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHAuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuOCAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBJbnRlcmZhY2VzLkM7IHVzZSBJbnRlcmZhY2VzLkM7CkBAIC00MywyOCArNDMsMTUgQEAKIAogcGFja2FnZSBib2R5IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuUmVnRXhwIGlzCiAKLSAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IGluIFJlZ3VsYXJfRXhwcmVzc2lvbl9GaWVsZCkKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVHlwZSAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cCA6IFJlZ3VsYXJfRXhwcmVzc2lvbl9GaWVsZCkKICAgIGlzCi0gICAgICB0eXBlIENoYXJfUHRyIGlzIGFjY2VzcyBhbGwgSW50ZXJmYWNlcy5DLmNoYXI7Ci0KLSAgICAgIENfUmVnZXhwX0ZpZWxkX1R5cGUgOiBDX0ZpZWxkX1R5cGU7Ci0gICAgICBwcmFnbWEgSW1wb3J0IChDLCBDX1JlZ2V4cF9GaWVsZF9UeXBlLCAiVFlQRV9SRUdFWFAiKTsKLQogICAgICAgZnVuY3Rpb24gU2V0X0Z0eXAgKEYgICAgOiBGaWVsZCA6PSBGbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQ2Z0ICA6IENfRmllbGRfVHlwZSA6PSBDX1JlZ2V4cF9GaWVsZF9UeXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBDaGFyX1B0cikgcmV0dXJuIENfSW50OwotICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0Z0eXAsICJzZXRfZmllbGRfdHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBjaGFyX2FycmF5KSByZXR1cm4gRXRpX0Vycm9yOworICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0Z0eXAsICJzZXRfZmllbGRfdHlwZV9yZWdleHAiKTsKIAotICAgICAgVHh0IDogY2hhcl9hcnJheSAoMCAuLiBUeXAuUmVndWxhcl9FeHByZXNzaW9uLmFsbCdMZW5ndGgpOwotICAgICAgTGVuIDogc2l6ZV90OwotICAgICAgUmVzIDogRXRpX0Vycm9yOwogICAgYmVnaW4KLSAgICAgIFRvX0MgKFR5cC5SZWd1bGFyX0V4cHJlc3Npb24uYWxsLCBUeHQsIExlbik7Ci0gICAgICBSZXMgOj0gU2V0X0Z0eXAgKEFyZzEgPT4gVHh0IChUeHQnRmlyc3QpJ0FjY2Vzcyk7Ci0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0Z0eXAgKEFyZzEgPT4gVG9fQyAoVHlwLlJlZ3VsYXJfRXhwcmVzc2lvbi5hbGwpKSk7CiAgICAgICBXcmFwX0J1aWx0aW4gKEZsZCwgVHlwKTsKICAgIGVuZCBTZXRfRmllbGRfVHlwZTsKIApkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZHMKaW5kZXggMWU0NTFhYi4uMjY4NDEzOCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHAuYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5SZWdFeHAgaXMKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAgIFJlZ3VsYXJfRXhwcmVzc2lvbiA6IFN0cmluZ19BY2Nlc3M7CiAgICAgICBlbmQgcmVjb3JkOwogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBSZWd1bGFyX0V4cHJlc3Npb25fRmllbGQpOworICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogUmVndWxhcl9FeHByZXNzaW9uX0ZpZWxkKTsKICAgIHByYWdtYSBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAogZW5kIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuUmVnRXhwOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRiCmluZGV4IGYyNmE0MmMuLjg0MTRjZDAgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNDIgKzM1LDQwIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE1ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0ODo1OCAkCistLSAgJFJldmlzaW9uOiAxLjIwICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXdpdGggQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uOword2l0aCBTeXN0ZW0uQWRkcmVzc19Ub19BY2Nlc3NfQ29udmVyc2lvbnM7CiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7CiAKIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIuQ2hvaWNlIGlzCiAKLSAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsKLSAgIGZ1bmN0aW9uIFRvX0FyZ3VtZW50X0FjY2VzcyBpcyBuZXcgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uCi0gICAgIChTeXN0ZW0uQWRkcmVzcywgQXJndW1lbnRfQWNjZXNzKTsKLSAgIHByYWdtYSBXYXJuaW5ncyAoT24pOworICAgcGFja2FnZSBBcmd1bWVudF9Db252ZXJzaW9ucyBpcworICAgICAgbmV3IFN5c3RlbS5BZGRyZXNzX1RvX0FjY2Vzc19Db252ZXJzaW9ucyAoQXJndW1lbnQpOwogCiAgICBmdW5jdGlvbiBHZW5lcmljX05leHQgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50CisgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2wKICAgIGlzCiAgICAgICBSZXN1bHQgOiBCb29sZWFuOwogICAgICAgVWRmICAgIDogY29uc3RhbnQgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfV2l0aF9DaG9pY2VfQWNjZXNzIDo9CiAgICAgICAgIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX1dpdGhfQ2hvaWNlX0FjY2VzcwotICAgICAgICAoVG9fQXJndW1lbnRfQWNjZXNzIChVc3IpLlR5cCk7CisgICAgICAgIChBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpLmFsbC5UeXApOwogICAgYmVnaW4KICAgICAgIFJlc3VsdCA6PSBOZXh0IChGbGQsIFVkZi5hbGwpOwotICAgICAgcmV0dXJuIENfSW50IChCb29sZWFuJ1BvcyAoUmVzdWx0KSk7CisgICAgICByZXR1cm4gQ3Vyc2VzX0Jvb2wgKEJvb2xlYW4nUG9zIChSZXN1bHQpKTsKICAgIGVuZCBHZW5lcmljX05leHQ7CiAKICAgIGZ1bmN0aW9uIEdlbmVyaWNfUHJldiAoRmxkIDogRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDdXJzZXNfQm9vbAogICAgaXMKICAgICAgIFJlc3VsdCA6IEJvb2xlYW47CiAgICAgICBVZGYgICAgOiBjb25zdGFudCBVc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZV9BY2Nlc3MgOj0KICAgICAgICAgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfV2l0aF9DaG9pY2VfQWNjZXNzCi0gICAgICAgIChUb19Bcmd1bWVudF9BY2Nlc3MgKFVzcikuVHlwKTsKKyAgICAgICAgKEFyZ3VtZW50X0FjY2VzcyAoQXJndW1lbnRfQ29udmVyc2lvbnMuVG9fUG9pbnRlciAoVXNyKSkuYWxsLlR5cCk7CiAgICBiZWdpbgogICAgICAgUmVzdWx0IDo9IFByZXZpb3VzIChGbGQsIFVkZi5hbGwpOwotICAgICAgcmV0dXJuIENfSW50IChCb29sZWFuJ1BvcyAoUmVzdWx0KSk7CisgICAgICByZXR1cm4gQ3Vyc2VzX0Jvb2wgKEJvb2xlYW4nUG9zIChSZXN1bHQpKTsKICAgIGVuZCBHZW5lcmljX1ByZXY7CiAKICAgIC0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTAsMTYgKzg4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VfQXJnJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weV9BcmcnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlX0FyZydBY2Nlc3MpOwotICAgICAgICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgICAgICAgIGVuZCBpZjsKKyAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7CiAKICAgICAgICAgICAgIFJlcyA6PSBTZXRfRmllbGR0eXBlX0Nob2ljZSAoVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY19OZXh0J0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY19QcmV2J0FjY2Vzcyk7Ci0gICAgICAgICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgICAgICAgZW5kIGlmOworICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKICAgICAgICAgIGVuZCBpZjsKICAgICAgICAgIE1fR2VuZXJpY19DaG9pY2UgOj0gVDsKICAgICAgIGVuZCBpZjsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFkcwppbmRleCAxZTY5ZjQzLi41YjEzMmM5IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZHMKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDggKzM1LDggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTIgJAotLS0gICREYXRlOiAyMDA4LzA3LzI2IDE4OjQ5OjIwICQKKy0tICAkUmV2aXNpb246IDEuMTQgJAorLS0gICREYXRlOiAyMDExLzAzLzE5IDEyOjI3OjQ3ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBJbnRlcmZhY2VzLkM7CkBAIC03OCwxNyArNzgsMTcgQEAKICAgIGZ1bmN0aW9uIENfR2VuZXJpY19DaG9pY2UgcmV0dXJuIENfRmllbGRfVHlwZTsKIAogICAgZnVuY3Rpb24gR2VuZXJpY19OZXh0IChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDdXJzZXNfQm9vbDsKICAgIHByYWdtYSBDb252ZW50aW9uIChDLCBHZW5lcmljX05leHQpOwogICAgLS0gIFRoaXMgaXMgdGhlIGdlbmVyaWMgbmV4dCBDaG9pY2VfRnVuY3Rpb24gZm9yIHRoZSBsb3ctbGV2ZWwgZmllbGR0eXBlCi0gICAtLSAgcmVwcmVzZW50aW5nIGFsbCB0aGUgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUgZGVyaXZhdGVzLiBJdCByb3V0ZXMKKyAgIC0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0aXZlcy4gSXQgcm91dGVzCiAgICAtLSAgdGhlIGNhbGwgdG8gdGhlIE5leHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLgogCiAgICBmdW5jdGlvbiBHZW5lcmljX1ByZXYgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sOwogICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIEdlbmVyaWNfUHJldik7CiAgICAtLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBwcmV2IENob2ljZV9GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGUKLSAgIC0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0ZXMuIEl0IHJvdXRlcworICAgLS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRpdmVzLiBJdCByb3V0ZXMKICAgIC0tICB0aGUgY2FsbCB0byB0aGUgUHJldmlvdXMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLgogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5Vc2VyLkNob2ljZTsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZGIKaW5kZXggMGI0YzEzNi4uOThiY2QyNCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTcgKzM1LDE3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjE1ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0OToyOCAkCistLSAgJFJldmlzaW9uOiAxLjIzICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXdpdGggQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uOword2l0aCBTeXN0ZW0uQWRkcmVzc19Ub19BY2Nlc3NfQ29udmVyc2lvbnM7CiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7CiAKIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIgaXMKIAotICAgcHJvY2VkdXJlIFNldF9GaWVsZF9UeXBlIChGbGQgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwIDogaW4gVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUpCisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBBbGxvY2F0ZV9BcmcgKFQgOiBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFyZ3VtZW50X0FjY2VzczsKQEAgLTUzLDEwICs1Myw4IEBACiAgICAgICBmdW5jdGlvbiBTZXRfRmxkX1R5cGUgKEYgICAgOiBGaWVsZCA6PSBGbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENmdCAgOiBDX0ZpZWxkX1R5cGUgOj0gQ19HZW5lcmljX1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBBcmd1bWVudF9BY2Nlc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDX0ludDsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7Ci0KLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV0aV9FcnJvcjsKKyAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlX3VzZXIiKTsKIAogICAgICAgZnVuY3Rpb24gQWxsb2NhdGVfQXJnIChUIDogVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcmd1bWVudF9BY2Nlc3MKQEAgLTcwLDM3ICs2OCwzNCBAQAogICAgICAgZW5kIEFsbG9jYXRlX0FyZzsKIAogICAgYmVnaW4KLSAgICAgIFJlcyA6PSBTZXRfRmxkX1R5cGUgKEFyZzEgPT4gQWxsb2NhdGVfQXJnIChUeXApKTsKLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmxkX1R5cGUgKEFyZzEgPT4gQWxsb2NhdGVfQXJnIChUeXApKSk7CiAgICBlbmQgU2V0X0ZpZWxkX1R5cGU7CiAKLSAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmKTsKLSAgIGZ1bmN0aW9uIFRvX0FyZ3VtZW50X0FjY2VzcyBpcyBuZXcgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uCi0gICAgIChTeXN0ZW0uQWRkcmVzcywgQXJndW1lbnRfQWNjZXNzKTsKLSAgIHByYWdtYSBXYXJuaW5ncyAoT24pOworICAgcGFja2FnZSBBcmd1bWVudF9Db252ZXJzaW9ucyBpcworICAgICAgbmV3IFN5c3RlbS5BZGRyZXNzX1RvX0FjY2Vzc19Db252ZXJzaW9ucyAoQXJndW1lbnQpOwogCiAgICBmdW5jdGlvbiBHZW5lcmljX0ZpZWxkX0NoZWNrIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2wKICAgIGlzCiAgICAgICBSZXN1bHQgOiBCb29sZWFuOwogICAgICAgVWRmICAgIDogY29uc3RhbnQgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfQWNjZXNzIDo9Ci0gICAgICAgIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzcyAoVG9fQXJndW1lbnRfQWNjZXNzIChVc3IpLlR5cCk7CisgICAgICAgIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzcworICAgICAgICAgIChBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpLmFsbC5UeXApOwogICAgYmVnaW4KICAgICAgIFJlc3VsdCA6PSBGaWVsZF9DaGVjayAoRmxkLCBVZGYuYWxsKTsKLSAgICAgIHJldHVybiBDX0ludCAoQm9vbGVhbidQb3MgKFJlc3VsdCkpOworICAgICAgcmV0dXJuIEN1cnNlc19Cb29sIChCb29sZWFuJ1BvcyAoUmVzdWx0KSk7CiAgICBlbmQgR2VuZXJpY19GaWVsZF9DaGVjazsKIAogICAgZnVuY3Rpb24gR2VuZXJpY19DaGFyX0NoZWNrIChDaCAgOiBDX0ludDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sCiAgICBpcwogICAgICAgUmVzdWx0IDogQm9vbGVhbjsKICAgICAgIFVkZiAgICA6IGNvbnN0YW50IFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzcyA6PQotICAgICAgICBVc2VyX0RlZmluZWRfRmllbGRfVHlwZV9BY2Nlc3MgKFRvX0FyZ3VtZW50X0FjY2VzcyAoVXNyKS5UeXApOworICAgICAgICBVc2VyX0RlZmluZWRfRmllbGRfVHlwZV9BY2Nlc3MKKyAgICAgICAgICAoQXJndW1lbnRfQWNjZXNzIChBcmd1bWVudF9Db252ZXJzaW9ucy5Ub19Qb2ludGVyIChVc3IpKS5hbGwuVHlwKTsKICAgIGJlZ2luCiAgICAgICBSZXN1bHQgOj0gQ2hhcmFjdGVyX0NoZWNrIChDaGFyYWN0ZXInVmFsIChDaCksIFVkZi5hbGwpOwotICAgICAgcmV0dXJuIENfSW50IChCb29sZWFuJ1BvcyAoUmVzdWx0KSk7CisgICAgICByZXR1cm4gQ3Vyc2VzX0Jvb2wgKEJvb2xlYW4nUG9zIChSZXN1bHQpKTsKICAgIGVuZCBHZW5lcmljX0NoYXJfQ2hlY2s7CiAKICAgIC0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIwLDkgKzExNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VfQXJnJ0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weV9BcmcnQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlX0FyZydBY2Nlc3MpOwotICAgICAgICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgICAgICAgIGVuZCBpZjsKKyAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7CiAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBNX0dlbmVyaWNfVHlwZSA6PSBUOwogICAgICAgZW5kIGlmOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZHMgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkcwppbmRleCBhY2VjNjM2Li43MDAwZmNlIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEyICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo0OTozOCAkCistLSAgJFJldmlzaW9uOiAxLjE1ICQKKy0tICAkRGF0ZTogMjAxMS8wMy8xOSAxMjoyNzoyMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggSW50ZXJmYWNlcy5DOwpAQCAtNjcsOCArNjcsOCBAQAogICAgLS0gIElmIFRydWUgaXMgcmV0dXJuZWQsIHRoZSBjaGFyYWN0ZXIgaXMgY29uc2lkZXJlZCBhcyB2YWxpZCBmb3IgdGhlCiAgICAtLSAgZmllbGQsIG90aGVyd2lzZSBhcyBpbnZhbGlkLgogCi0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBpbiBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSk7CisgICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1R5cGUgKEZsZCA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgOiBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSk7CiAgICAtLSAgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIHR5cGVzIGRlcml2ZWQgZnJvbSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZS4KICAgIC0tICBObyBuZWVkIHRvIHJlaW1wbGVtZW50IGl0IGZvciB5b3VyIGRlcml2ZWQgdHlwZS4KIApAQCAtNzksMTcgKzc5LDE3IEBACiAgICBmdW5jdGlvbiBDX0dlbmVyaWNfVHlwZSAgIHJldHVybiBDX0ZpZWxkX1R5cGU7CiAKICAgIGZ1bmN0aW9uIEdlbmVyaWNfRmllbGRfQ2hlY2sgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ3Vyc2VzX0Jvb2w7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgR2VuZXJpY19GaWVsZF9DaGVjayk7CiAgICAtLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBGaWVsZF9DaGVja19GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGUKLSAgIC0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0ZXMuIEl0IHJvdXRlcworICAgLS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRpdmVzLiBJdCByb3V0ZXMKICAgIC0tICB0aGUgY2FsbCB0byB0aGUgRmllbGRfQ2hlY2sgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLgogCiAgICBmdW5jdGlvbiBHZW5lcmljX0NoYXJfQ2hlY2sgKENoICA6IENfSW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sOwogICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIEdlbmVyaWNfQ2hhcl9DaGVjayk7CiAgICAtLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBDaGFyX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgbG93LWxldmVsIGZpZWxkdHlwZQotICAgLS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRlcy4gSXQgcm91dGVzCisgICAtLSAgcmVwcmVzZW50aW5nIGFsbCB0aGUgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUgZGVyaXZhdGl2ZXMuIEl0IHJvdXRlcwogICAgLS0gIHRoZSBjYWxsIHRvIHRoZSBDaGFyYWN0ZXJfQ2hlY2sgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLgogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5Vc2VyOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRiCmluZGV4IGM2ODFjODAuLmJkYTZlNTEgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTMgKzM1LDE0IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjIwICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MDozMyAkCistLSAgJFJldmlzaW9uOiAxLjI4ICQKKy0tICAkRGF0ZTogMjAxNC8wOS8xMyAxOTowMDo0NyAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsKIHdpdGggQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb247Ci13aXRoIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKK3dpdGggU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zOworCiAtLSAgfAogLS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGR0eXBlLjN4CkBAIC01MSwxMCArNTIsOCBAQAogCiAgICB1c2UgdHlwZSBTeXN0ZW0uQWRkcmVzczsKIAotICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOwotICAgZnVuY3Rpb24gVG9fQXJndW1lbnRfQWNjZXNzIGlzIG5ldyBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24KLSAgICAgKFN5c3RlbS5BZGRyZXNzLCBBcmd1bWVudF9BY2Nlc3MpOwotICAgcHJhZ21hIFdhcm5pbmdzIChPbik7CisgICBwYWNrYWdlIEFyZ3VtZW50X0NvbnZlcnNpb25zIGlzCisgICAgICBuZXcgU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zIChBcmd1bWVudCk7CiAKICAgIGZ1bmN0aW9uIEdldF9GaWVsZHR5cGUgKEYgOiBGaWVsZCkgcmV0dXJuIENfRmllbGRfVHlwZTsKICAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9GaWVsZHR5cGUsICJmaWVsZF90eXBlIik7CkBAIC02OCw3ICs2Nyw3IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBmdW5jdGlvbiBHZXRfVHlwZSAoRmxkIDogaW4gRmllbGQpIHJldHVybiBGaWVsZF9UeXBlX0FjY2VzcworICAgZnVuY3Rpb24gR2V0X1R5cGUgKEZsZCA6IEZpZWxkKSByZXR1cm4gRmllbGRfVHlwZV9BY2Nlc3MKICAgIGlzCiAgICAgICBMb3dfTGV2ZWwgOiBjb25zdGFudCBDX0ZpZWxkX1R5cGUgOj0gR2V0X0ZpZWxkdHlwZSAoRmxkKTsKICAgICAgIEFyZyA6IEFyZ3VtZW50X0FjY2VzczsKQEAgLTc3LDE0ICs3NiwxNiBAQAogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICBlbHNlCiAgICAgICAgICBpZiBMb3dfTGV2ZWwgPSBNX0J1aWx0aW5fUm91dGVyIG9yIGVsc2UKLSAgICAgICAgICAgTG93X0xldmVsID0gTV9HZW5lcmljX1R5cGUgb3IgZWxzZQotICAgICAgICAgICBMb3dfTGV2ZWwgPSBNX0Nob2ljZV9Sb3V0ZXIgb3IgZWxzZQotICAgICAgICAgICBMb3dfTGV2ZWwgPSBNX0dlbmVyaWNfQ2hvaWNlIHRoZW4KLSAgICAgICAgICAgIEFyZyA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKEdldF9BcmcgKEZsZCkpOworICAgICAgICAgICAgTG93X0xldmVsID0gTV9HZW5lcmljX1R5cGUgb3IgZWxzZQorICAgICAgICAgICAgTG93X0xldmVsID0gTV9DaG9pY2VfUm91dGVyIG9yIGVsc2UKKyAgICAgICAgICAgIExvd19MZXZlbCA9IE1fR2VuZXJpY19DaG9pY2UKKyAgICAgICAgIHRoZW4KKyAgICAgICAgICAgIEFyZyA6PSBBcmd1bWVudF9BY2Nlc3MKKyAgICAgICAgIChBcmd1bWVudF9Db252ZXJzaW9ucy5Ub19Qb2ludGVyIChHZXRfQXJnIChGbGQpKSk7CiAgICAgICAgICAgICBpZiBBcmcgPSBudWxsIHRoZW4KICAgICAgICAgICAgICAgIHJhaXNlIEZvcm1fRXhjZXB0aW9uOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgcmV0dXJuIEFyZy5UeXA7CisgICAgICAgICAgICAgICByZXR1cm4gQXJnLmFsbC5UeXA7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICByYWlzZSBGb3JtX0V4Y2VwdGlvbjsKQEAgLTkyLDQ5ICs5MywzMiBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIEdldF9UeXBlOwogCi0gICBmdW5jdGlvbiBNYWtlX0FyZyAoQXJncyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3lzdGVtLkFkZHJlc3MKLSAgIGlzCi0gICAgICAtLSAgQWN0dWFsbHkgYXJncyBpcyBhIGRvdWJsZSBpbmRpcmVjdGVkIHBvaW50ZXIgdG8gdGhlIGFyZ3VtZW50cwotICAgICAgLS0gIG9mIGEgQyB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LiBJbiB0aGVvcnkgaXQgaXMgbm93IHF1aXRlCi0gICAgICAtLSAgY29tcGxpY2F0ZWQgdG8gd3JpdGUgcG9ydGFibGUgcm91dGluZSB0aGF0IHJlYWRzIHRoZSBhcmd1bWVudHMsCi0gICAgICAtLSAgYmVjYXVzZSBvbmUgaGFzIHRvIGtub3cgdGhlIGdyb3d0aCBkaXJlY3Rpb24gb2YgdGhlIHN0YWNrIGFuZAotICAgICAgLS0gIHRoZSBzaXplcyBvZiB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuCi0gICAgICAtLSAgRm9ydHVuYXRlbHkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZmlyc3QgYXJndW1lbnQgKCMwKSwKLSAgICAgIC0tICB3ZSBrbm93IGl0cyBzaXplIGFuZCBmb3IgdGhlIGZpcnN0IGFyZyB3ZSBkb24ndCBjYXJlIGFib3V0Ci0gICAgICAtLSAgaW50byB3aGljaCBzdGFjayBkaXJlY3Rpb24gd2UgaGF2ZSB0byBwcm9jZWVkLiBXZSBzaW1wbHkKLSAgICAgIC0tICByZXNvbHZlIHRoZSBkb3VibGUgaW5kaXJlY3Rpb24gYW5kIHRoYXRzIGl0LgotICAgICAgdHlwZSBWIGlzIGFjY2VzcyBhbGwgU3lzdGVtLkFkZHJlc3M7Ci0gICAgICBmdW5jdGlvbiBUb19BY2Nlc3MgaXMgbmV3IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoU3lzdGVtLkFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVik7Ci0gICBiZWdpbgotICAgICAgcmV0dXJuIFRvX0FjY2VzcyAoVG9fQWNjZXNzIChBcmdzKS5hbGwpLmFsbDsKLSAgIGVuZCBNYWtlX0FyZzsKLQogICAgZnVuY3Rpb24gQ29weV9BcmcgKFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3lzdGVtLkFkZHJlc3MKICAgIGlzCiAgICBiZWdpbgogICAgICAgcmV0dXJuIFVzcjsKICAgIGVuZCBDb3B5X0FyZzsKIAotICAgcHJvY2VkdXJlIEZyZWVfQXJnIChVc3IgOiBpbiBTeXN0ZW0uQWRkcmVzcykKKyAgIHByb2NlZHVyZSBGcmVlX0FyZyAoVXNyIDogU3lzdGVtLkFkZHJlc3MpCiAgICBpcwogICAgICAgcHJvY2VkdXJlIEZyZWVfVHlwZSBpcyBuZXcgQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb24KICAgICAgICAgKEZpZWxkX1R5cGUnQ2xhc3MsIEZpZWxkX1R5cGVfQWNjZXNzKTsKICAgICAgIHByb2NlZHVyZSBGcmVlYXJncyBpcyBuZXcgQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb24KICAgICAgICAgKEFyZ3VtZW50LCBBcmd1bWVudF9BY2Nlc3MpOwogCi0gICAgICBUb19CZV9GcmVlIDogQXJndW1lbnRfQWNjZXNzIDo9IFRvX0FyZ3VtZW50X0FjY2VzcyAoVXNyKTsKKyAgICAgIFRvX0JlX0ZyZWUgOiBBcmd1bWVudF9BY2Nlc3MKKyAgIDo9IEFyZ3VtZW50X0FjY2VzcyAoQXJndW1lbnRfQ29udmVyc2lvbnMuVG9fUG9pbnRlciAoVXNyKSk7CiAgICAgICBMb3dfTGV2ZWwgIDogQ19GaWVsZF9UeXBlOwogICAgYmVnaW4KICAgICAgIGlmIFRvX0JlX0ZyZWUgLz0gbnVsbCB0aGVuCi0gICAgICAgICBpZiBUb19CZV9GcmVlLlVzciAvPSBTeXN0ZW0uTnVsbF9BZGRyZXNzIHRoZW4KLSAgICAgICAgICAgIExvd19MZXZlbCA6PSBUb19CZV9GcmVlLkNmdDsKLSAgICAgICAgICAgIGlmIExvd19MZXZlbC5GcmVlYXJnIC89IG51bGwgdGhlbgotICAgICAgICAgICAgICAgTG93X0xldmVsLkZyZWVhcmcgKFRvX0JlX0ZyZWUuVXNyKTsKKyAgICAgICAgIGlmIFRvX0JlX0ZyZWUuYWxsLlVzciAvPSBTeXN0ZW0uTnVsbF9BZGRyZXNzIHRoZW4KKyAgICAgICAgICAgIExvd19MZXZlbCA6PSBUb19CZV9GcmVlLmFsbC5DZnQ7CisgICAgICAgICAgICBpZiBMb3dfTGV2ZWwuYWxsLkZyZWVhcmcgLz0gbnVsbCB0aGVuCisgICAgICAgICAgICAgICBMb3dfTGV2ZWwuYWxsLkZyZWVhcmcgKFRvX0JlX0ZyZWUuYWxsLlVzcik7CiAgICAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBlbmQgaWY7Ci0gICAgICAgICBpZiBUb19CZV9GcmVlLlR5cCAvPSBudWxsIHRoZW4KLSAgICAgICAgICAgIEZyZWVfVHlwZSAoVG9fQmVfRnJlZS5UeXApOworICAgICAgICAgaWYgVG9fQmVfRnJlZS5hbGwuVHlwIC89IG51bGwgdGhlbgorICAgICAgICAgICAgRnJlZV9UeXBlIChUb19CZV9GcmVlLmFsbC5UeXApOwogICAgICAgICAgZW5kIGlmOwogICAgICAgICAgRnJlZWFyZ3MgKFRvX0JlX0ZyZWUpOwogICAgICAgZW5kIGlmOwpAQCAtMTQ3LDExICsxMzEsMTAgQEAKICAgICAgIFVzcl9BcmcgICA6IGNvbnN0YW50IFN5c3RlbS5BZGRyZXNzIDo9IEdldF9BcmcgKEZsZCk7CiAgICAgICBMb3dfTGV2ZWwgOiBjb25zdGFudCBDX0ZpZWxkX1R5cGUgOj0gR2V0X0ZpZWxkdHlwZSAoRmxkKTsKICAgICAgIEFyZyA6IEFyZ3VtZW50X0FjY2VzczsKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgICAgIGZ1bmN0aW9uIFNldF9GbGRfVHlwZSAoRiAgICA6IEZpZWxkIDo9IEZsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2YgICA6IENfRmllbGRfVHlwZSA6PSBDZnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBBcmd1bWVudF9BY2Nlc3MpIHJldHVybiBDX0ludDsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZzEgOiBBcmd1bWVudF9BY2Nlc3MpIHJldHVybiBFdGlfRXJyb3I7CisgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV91c2VyIik7CiAKICAgIGJlZ2luCiAgICAgICBwcmFnbWEgQXNzZXJ0IChMb3dfTGV2ZWwgLz0gTnVsbF9GaWVsZF9UeXBlKTsKQEAgLTE2Miw3MSArMTQ1LDcyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXAgPT4gbmV3IEZpZWxkX1R5cGUnQ2xhc3MnKFR5cCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZnQgPT4gR2V0X0ZpZWxkdHlwZSAoRmxkKSk7CiAgICAgICAgICBpZiBVc3JfQXJnIC89IFN5c3RlbS5OdWxsX0FkZHJlc3MgdGhlbgotICAgICAgICAgICAgaWYgTG93X0xldmVsLkNvcHlhcmcgLz0gbnVsbCB0aGVuCi0gICAgICAgICAgICAgICBBcmcuVXNyIDo9IExvd19MZXZlbC5Db3B5YXJnIChVc3JfQXJnKTsKKyAgICAgICAgICAgIGlmIExvd19MZXZlbC5hbGwuQ29weWFyZyAvPSBudWxsIHRoZW4KKyAgICAgICAgICAgICAgIEFyZy5hbGwuVXNyIDo9IExvd19MZXZlbC5hbGwuQ29weWFyZyAoVXNyX0FyZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICBBcmcuVXNyIDo9IFVzcl9Bcmc7CisgICAgICAgICAgICAgICBBcmcuYWxsLlVzciA6PSBVc3JfQXJnOwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgZW5kIGlmOwogCi0gICAgICAgICBSZXMgOj0gU2V0X0ZsZF9UeXBlIChBcmcxID0+IEFyZyk7Ci0gICAgICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgICAgZW5kIGlmOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZsZF9UeXBlIChBcmcxID0+IEFyZykpOwogICAgICAgZW5kIGlmOwogICAgZW5kIFdyYXBfQnVpbHRpbjsKIAogICAgZnVuY3Rpb24gRmllbGRfQ2hlY2tfUm91dGVyIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBDX0ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sCiAgICBpcwotICAgICAgQXJnICA6IGNvbnN0YW50IEFyZ3VtZW50X0FjY2VzcyA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKFVzcik7CisgICAgICBBcmcgIDogY29uc3RhbnQgQXJndW1lbnRfQWNjZXNzCisgICA6PSBBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpOwogICAgYmVnaW4KLSAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5DZnQgLz0gTnVsbF9GaWVsZF9UeXBlCi0gICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBBcmcuVHlwIC89IG51bGwpOwotICAgICAgaWYgQXJnLkNmdC5GY2hlY2sgLz0gbnVsbCB0aGVuCi0gICAgICAgICByZXR1cm4gQXJnLkNmdC5GY2hlY2sgKEZsZCwgQXJnLlVzcik7CisgICAgICBwcmFnbWEgQXNzZXJ0IChBcmcgLz0gbnVsbCBhbmQgdGhlbiBBcmcuYWxsLkNmdCAvPSBOdWxsX0ZpZWxkX1R5cGUKKyAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIEFyZy5hbGwuVHlwIC89IG51bGwpOworICAgICAgaWYgQXJnLmFsbC5DZnQuYWxsLkZjaGVjayAvPSBudWxsIHRoZW4KKyAgICAgICAgIHJldHVybiBBcmcuYWxsLkNmdC5hbGwuRmNoZWNrIChGbGQsIEFyZy5hbGwuVXNyKTsKICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiAxOwogICAgICAgZW5kIGlmOwogICAgZW5kIEZpZWxkX0NoZWNrX1JvdXRlcjsKIAogICAgZnVuY3Rpb24gQ2hhcl9DaGVja19Sb3V0ZXIgKENoICA6IENfSW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sCiAgICBpcwotICAgICAgQXJnICA6IGNvbnN0YW50IEFyZ3VtZW50X0FjY2VzcyA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKFVzcik7CisgICAgICBBcmcgIDogY29uc3RhbnQgQXJndW1lbnRfQWNjZXNzCisgICA6PSBBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpOwogICAgYmVnaW4KLSAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5DZnQgLz0gTnVsbF9GaWVsZF9UeXBlCi0gICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBBcmcuVHlwIC89IG51bGwpOwotICAgICAgaWYgQXJnLkNmdC5DY2hlY2sgLz0gbnVsbCB0aGVuCi0gICAgICAgICByZXR1cm4gQXJnLkNmdC5DY2hlY2sgKENoLCBBcmcuVXNyKTsKKyAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5hbGwuQ2Z0IC89IE51bGxfRmllbGRfVHlwZQorICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gQXJnLmFsbC5UeXAgLz0gbnVsbCk7CisgICAgICBpZiBBcmcuYWxsLkNmdC5hbGwuQ2NoZWNrIC89IG51bGwgdGhlbgorICAgICAgICAgcmV0dXJuIEFyZy5hbGwuQ2Z0LmFsbC5DY2hlY2sgKENoLCBBcmcuYWxsLlVzcik7CiAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gMTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBDaGFyX0NoZWNrX1JvdXRlcjsKIAogICAgZnVuY3Rpb24gTmV4dF9Sb3V0ZXIgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sCiAgICBpcwotICAgICAgQXJnICA6IGNvbnN0YW50IEFyZ3VtZW50X0FjY2VzcyA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKFVzcik7CisgICAgICBBcmcgIDogY29uc3RhbnQgQXJndW1lbnRfQWNjZXNzCisgICA6PSBBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpOwogICAgYmVnaW4KLSAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5DZnQgLz0gTnVsbF9GaWVsZF9UeXBlCi0gICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBBcmcuVHlwIC89IG51bGwpOwotICAgICAgaWYgQXJnLkNmdC5OZXh0IC89IG51bGwgdGhlbgotICAgICAgICAgcmV0dXJuIEFyZy5DZnQuTmV4dCAoRmxkLCBBcmcuVXNyKTsKKyAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5hbGwuQ2Z0IC89IE51bGxfRmllbGRfVHlwZQorICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gQXJnLmFsbC5UeXAgLz0gbnVsbCk7CisgICAgICBpZiBBcmcuYWxsLkNmdC5hbGwuTmV4dCAvPSBudWxsIHRoZW4KKyAgICAgICAgIHJldHVybiBBcmcuYWxsLkNmdC5hbGwuTmV4dCAoRmxkLCBBcmcuYWxsLlVzcik7CiAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gMTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBOZXh0X1JvdXRlcjsKIAogICAgZnVuY3Rpb24gUHJldl9Sb3V0ZXIgKEZsZCA6IEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgIFVzciA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEN1cnNlc19Cb29sCiAgICBpcwotICAgICAgQXJnICA6IGNvbnN0YW50IEFyZ3VtZW50X0FjY2VzcyA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKFVzcik7CisgICAgICBBcmcgIDogY29uc3RhbnQgQXJndW1lbnRfQWNjZXNzIDo9CisgICAgICAgICAgICAgICBBcmd1bWVudF9BY2Nlc3MgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKFVzcikpOwogICAgYmVnaW4KLSAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5DZnQgLz0gTnVsbF9GaWVsZF9UeXBlCi0gICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBBcmcuVHlwIC89IG51bGwpOwotICAgICAgaWYgQXJnLkNmdC5QcmV2IC89IG51bGwgdGhlbgotICAgICAgICAgcmV0dXJuIEFyZy5DZnQuUHJldiAoRmxkLCBBcmcuVXNyKTsKKyAgICAgIHByYWdtYSBBc3NlcnQgKEFyZyAvPSBudWxsIGFuZCB0aGVuIEFyZy5hbGwuQ2Z0IC89IE51bGxfRmllbGRfVHlwZQorICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gQXJnLmFsbC5UeXAgLz0gbnVsbCk7CisgICAgICBpZiBBcmcuYWxsLkNmdC5hbGwuUHJldiAvPSBudWxsIHRoZW4KKyAgICAgICAgIHJldHVybiBBcmcuYWxsLkNmdC5hbGwuUHJldiAoRmxkLCBBcmcuYWxsLlVzcik7CiAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gMTsKICAgICAgIGVuZCBpZjsKQEAgLTIzNiw3ICsyMjAsNiBAQAogICAgLS0KICAgIGZ1bmN0aW9uIENfQnVpbHRpbl9Sb3V0ZXIgcmV0dXJuIENfRmllbGRfVHlwZQogICAgaXMKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgICAgIFQgICA6IENfRmllbGRfVHlwZTsKICAgIGJlZ2luCiAgICAgICBpZiBNX0J1aWx0aW5fUm91dGVyID0gTnVsbF9GaWVsZF9UeXBlIHRoZW4KQEAgLTI0NSwxMyArMjI4LDEwIEBACiAgICAgICAgICBpZiBUID0gTnVsbF9GaWVsZF9UeXBlIHRoZW4KICAgICAgICAgICAgIHJhaXNlIEZvcm1fRXhjZXB0aW9uOwogICAgICAgICAgZWxzZQotICAgICAgICAgICAgUmVzIDo9IFNldF9GaWVsZHR5cGVfQXJnIChULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlX0FyZydBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlfQXJnJ0FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZV9BcmcnQWNjZXNzKTsKLSAgICAgICAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICAgICAgICBlbmQgaWY7CisgICAgICAgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGR0eXBlX0FyZyAoVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlX0FyZydBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weV9BcmcnQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyZWVfQXJnJ0FjY2VzcykpOwogICAgICAgICAgZW5kIGlmOwogICAgICAgICAgTV9CdWlsdGluX1JvdXRlciA6PSBUOwogICAgICAgZW5kIGlmOwpAQCAtMjYzLDcgKzI0Myw2IEBACiAgICAtLQogICAgZnVuY3Rpb24gQ19DaG9pY2VfUm91dGVyIHJldHVybiBDX0ZpZWxkX1R5cGUKICAgIGlzCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICAgICBUICAgOiBDX0ZpZWxkX1R5cGU7CiAgICBiZWdpbgogICAgICAgaWYgTV9DaG9pY2VfUm91dGVyID0gTnVsbF9GaWVsZF9UeXBlIHRoZW4KQEAgLTI3MiwyMCArMjUxLDE0IEBACiAgICAgICAgICBpZiBUID0gTnVsbF9GaWVsZF9UeXBlIHRoZW4KICAgICAgICAgICAgIHJhaXNlIEZvcm1fRXhjZXB0aW9uOwogICAgICAgICAgZWxzZQotICAgICAgICAgICAgUmVzIDo9IFNldF9GaWVsZHR5cGVfQXJnIChULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlX0FyZydBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlfQXJnJ0FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZV9BcmcnQWNjZXNzKTsKLSAgICAgICAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICAgICAgICBlbmQgaWY7CisgICAgICAgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGR0eXBlX0FyZyAoVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlX0FyZydBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weV9BcmcnQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyZWVfQXJnJ0FjY2VzcykpOwogCi0gICAgICAgICAgICBSZXMgOj0gU2V0X0ZpZWxkdHlwZV9DaG9pY2UgKFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5leHRfUm91dGVyJ0FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJldl9Sb3V0ZXInQWNjZXNzKTsKLSAgICAgICAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICAgICAgICBlbmQgaWY7CisgICAgICAgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGR0eXBlX0Nob2ljZSAoVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXh0X1JvdXRlcidBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJldl9Sb3V0ZXInQWNjZXNzKSk7CiAgICAgICAgICBlbmQgaWY7CiAgICAgICAgICBNX0Nob2ljZV9Sb3V0ZXIgOj0gVDsKICAgICAgIGVuZCBpZjsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRiCmluZGV4IDgxN2ViZTUuLjI0OTc2MTQgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEyICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OwpAQCAtNTEsMjMgKzUxLDIwIEBACiAgICAtLSAgfAogICAgdXNlIHR5cGUgSW50ZXJmYWNlcy5DLmludDsKIAotICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKEZsZCAgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gVXNlcl9BY2Nlc3MpCisgICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoRmxkICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2VzcykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRmllbGRfVXNlcnB0ciAoRmxkIDogRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNyIDogVXNlcl9BY2Nlc3MpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc3IgOiBVc2VyX0FjY2VzcykgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GaWVsZF9Vc2VycHRyLCAic2V0X2ZpZWxkX3VzZXJwdHIiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9GaWVsZF9Vc2VycHRyIChGbGQsIERhdGEpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGRfVXNlcnB0ciAoRmxkLCBEYXRhKSk7CiAgICBlbmQgU2V0X1VzZXJfRGF0YTsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKEZsZCAgOiBpbiAgRmllbGQpIHJldHVybiBVc2VyX0FjY2VzcworICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YSAoRmxkICA6IEZpZWxkKSByZXR1cm4gVXNlcl9BY2Nlc3MKICAgIGlzCiAgICAgICBmdW5jdGlvbiBGaWVsZF9Vc2VycHRyIChGbGQgOiBGaWVsZCkgcmV0dXJuIFVzZXJfQWNjZXNzOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRmllbGRfVXNlcnB0ciwgImZpZWxkX3VzZXJwdHIiKTsKQEAgLTc1LDcgKzcyLDcgQEAKICAgICAgIHJldHVybiBGaWVsZF9Vc2VycHRyIChGbGQpOwogICAgZW5kIEdldF9Vc2VyX0RhdGE7CiAKLSAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChGbGQgIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKEZsZCAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogb3V0IFVzZXJfQWNjZXNzKQogICAgaXMKICAgIGJlZ2luCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZGIKaW5kZXggNTBjNjcwOC4uYThiNzQ2NCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEyICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgfApAQCAtNTIsMjMgKzUyLDIwIEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIFVzZXJfQWNjZXNzKQorICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2VzcykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRm9ybV9Vc2VycHRyIChGcm0gIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2VzcykgIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2VzcykgIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9ybV9Vc2VycHRyLCAic2V0X2Zvcm1fdXNlcnB0ciIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0Zvcm1fVXNlcnB0ciAoRnJtLCBEYXRhKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9Gb3JtX1VzZXJwdHIgKEZybSwgRGF0YSkpOwogICAgZW5kIFNldF9Vc2VyX0RhdGE7CiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChGcm0gIDogaW4gIEZvcm0pIHJldHVybiBVc2VyX0FjY2VzcworICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YSAoRnJtICA6IEZvcm0pIHJldHVybiBVc2VyX0FjY2VzcwogICAgaXMKICAgICAgIGZ1bmN0aW9uIEZvcm1fVXNlcnB0ciAoRnJtIDogRm9ybSkgcmV0dXJuIFVzZXJfQWNjZXNzOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRm9ybV9Vc2VycHRyLCAiZm9ybV91c2VycHRyIik7CkBAIC03Niw3ICs3Myw3IEBACiAgICAgICByZXR1cm4gRm9ybV9Vc2VycHRyIChGcm0pOwogICAgZW5kIEdldF9Vc2VyX0RhdGE7CiAKLSAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChGcm0gIDogaW4gIEZvcm07CisgICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoRnJtICA6IEZvcm07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IG91dCBVc2VyX0FjY2VzcykKICAgIGlzCiAgICBiZWdpbgpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiCmluZGV4IDhiMDFlMTYuLjNlZDA1M2EgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsMTIgKzM1LDExIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjI2ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MDo0NCAkCistLSAgJFJldmlzaW9uOiAxLjMyICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb247Ci13aXRoIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKIAogd2l0aCBJbnRlcmZhY2VzLkM7IHVzZSBJbnRlcmZhY2VzLkM7CiB3aXRoIEludGVyZmFjZXMuQy5TdHJpbmdzOyB1c2UgSW50ZXJmYWNlcy5DLlN0cmluZ3M7CkBAIC02MiwyMyArNjEsNyBAQAogICAgLS0gIHwKICAgIC0tICBzdWJ0eXBlIGNoYXJzX3B0ciBpcyBJbnRlcmZhY2VzLkMuU3RyaW5ncy5jaGFyc19wdHI7CiAKLSAgIGZ1bmN0aW9uIEZPU18yX0NJbnQgaXMgbmV3Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoRmllbGRfT3B0aW9uX1NldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCk7Ci0KLSAgIGZ1bmN0aW9uIENJbnRfMl9GT1MgaXMgbmV3Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoQ19JbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRfT3B0aW9uX1NldCk7Ci0KLSAgIGZ1bmN0aW9uIEZybU9TXzJfQ0ludCBpcyBuZXcKLSAgICAgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uIChGb3JtX09wdGlvbl9TZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQpOwotCi0gICBmdW5jdGlvbiBDSW50XzJfRnJtT1MgaXMgbmV3Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoQ19JbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybV9PcHRpb25fU2V0KTsKLQotICAgcHJvY2VkdXJlIFJlcXVlc3RfTmFtZSAoS2V5ICA6IGluIEZvcm1fUmVxdWVzdF9Db2RlOworICAgcHJvY2VkdXJlIFJlcXVlc3RfTmFtZSAoS2V5ICA6IEZvcm1fUmVxdWVzdF9Db2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIDogb3V0IFN0cmluZykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBGb3JtX1JlcXVlc3RfTmFtZSAoS2V5IDogQ19JbnQpIHJldHVybiBjaGFyc19wdHI7CkBAIC0xMzAsMTUgKzExMywxMSBAQAogLS0gIHwKICAgIHByb2NlZHVyZSBEZWxldGUgKEZsZCA6IGluIG91dCBGaWVsZCkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBGcmVlX0ZpZWxkIChGbGQgOiBGaWVsZCkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRnJlZV9GaWVsZCAoRmxkIDogRmllbGQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGcmVlX0ZpZWxkLCAiZnJlZV9maWVsZCIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgotICAgICAgUmVzIDo9IEZyZWVfRmllbGQgKEZsZCk7Ci0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoRnJlZV9GaWVsZCAoRmxkKSk7CiAgICAgICBGbGQgOj0gTnVsbF9GaWVsZDsKICAgIGVuZCBEZWxldGU7CiAgICAtLSAgfApAQCAtMTkwLDIwICsxNjksMTYgQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfSnVzdGlmaWNhdGlvbiAoRmxkICA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IDogaW4gRmllbGRfSnVzdGlmaWNhdGlvbiA6PSBOb25lKQorICAgcHJvY2VkdXJlIFNldF9KdXN0aWZpY2F0aW9uIChGbGQgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1c3QgOiBGaWVsZF9KdXN0aWZpY2F0aW9uIDo9IE5vbmUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0ZpZWxkX0p1c3QgKEZsZCAgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmllbGRfSnVzdCwgInNldF9maWVsZF9qdXN0Iik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PQotICAgICAgICBTZXRfRmllbGRfSnVzdCAoRmxkLAotICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKEZpZWxkX0p1c3RpZmljYXRpb24nUG9zIChKdXN0KSkpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGRfSnVzdCAoRmxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfSW50IChGaWVsZF9KdXN0aWZpY2F0aW9uJ1BvcyAoSnVzdCkpKSk7CiAgICBlbmQgU2V0X0p1c3RpZmljYXRpb247CiAgICAtLSAgfAogICAgLS0gIHwKQEAgLTIyMywzMyArMTk4LDI1IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIHByb2NlZHVyZSBTZXRfQnVmZmVyCi0gICAgIChGbGQgICAgOiBpbiBGaWVsZDsKLSAgICAgIEJ1ZmZlciA6IGluIEJ1ZmZlcl9OdW1iZXIgOj0gQnVmZmVyX051bWJlcidGaXJzdDsKLSAgICAgIFN0ciAgICA6IGluIFN0cmluZykKKyAgICAgKEZsZCAgICA6IEZpZWxkOworICAgICAgQnVmZmVyIDogQnVmZmVyX051bWJlciA6PSBCdWZmZXJfTnVtYmVyJ0ZpcnN0OworICAgICAgU3RyICAgIDogU3RyaW5nKQogICAgaXMKLSAgICAgIHR5cGUgQ2hhcl9QdHIgaXMgYWNjZXNzIGFsbCBJbnRlcmZhY2VzLkMuY2hhcjsKICAgICAgIGZ1bmN0aW9uIFNldF9GbGRfQnVmZmVyIChGbGQgICAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1Zm51bSA6IENfSW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyAgICAgIDogQ2hhcl9QdHIpCi0gICAgICAgIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgICAgICA6IGNoYXJfYXJyYXkpCisgICAgICAgIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmxkX0J1ZmZlciwgInNldF9maWVsZF9idWZmZXIiKTsKIAotICAgICAgVHh0IDogY2hhcl9hcnJheSAoMCAuLiBTdHInTGVuZ3RoKTsKLSAgICAgIExlbiA6IHNpemVfdDsKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCi0gICAgICBUb19DIChTdHIsIFR4dCwgTGVuKTsKLSAgICAgIFJlcyA6PSBTZXRfRmxkX0J1ZmZlciAoRmxkLCBDX0ludCAoQnVmZmVyKSwgVHh0IChUeHQnRmlyc3QpJ0FjY2Vzcyk7Ci0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZsZF9CdWZmZXIgKEZsZCwgQ19JbnQgKEJ1ZmZlciksIFRvX0MgKFN0cikpKTsKICAgIGVuZCBTZXRfQnVmZmVyOwogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAogICAgcHJvY2VkdXJlIEdldF9CdWZmZXIKLSAgICAgKEZsZCAgICA6IGluIEZpZWxkOwotICAgICAgQnVmZmVyIDogaW4gQnVmZmVyX051bWJlciA6PSBCdWZmZXJfTnVtYmVyJ0ZpcnN0OworICAgICAoRmxkICAgIDogRmllbGQ7CisgICAgICBCdWZmZXIgOiBCdWZmZXJfTnVtYmVyIDo9IEJ1ZmZlcl9OdW1iZXInRmlyc3Q7CiAgICAgICBTdHIgICAgOiBvdXQgU3RyaW5nKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIEZpZWxkX0J1ZmZlciAoRmxkIDogRmllbGQ7CkBAIC0yNjAsOCArMjI3LDggQEAKICAgIGVuZCBHZXRfQnVmZmVyOwogCiAgICBmdW5jdGlvbiBHZXRfQnVmZmVyCi0gICAgIChGbGQgICAgOiBpbiBGaWVsZDsKLSAgICAgIEJ1ZmZlciA6IGluIEJ1ZmZlcl9OdW1iZXIgOj0gQnVmZmVyX051bWJlcidGaXJzdCkgcmV0dXJuIFN0cmluZworICAgICAoRmxkICAgIDogRmllbGQ7CisgICAgICBCdWZmZXIgOiBCdWZmZXJfTnVtYmVyIDo9IEJ1ZmZlcl9OdW1iZXInRmlyc3QpIHJldHVybiBTdHJpbmcKICAgIGlzCiAgICAgICBmdW5jdGlvbiBGaWVsZF9CdWZmZXIgKEZsZCA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCICAgOiBDX0ludCkgcmV0dXJuIGNoYXJzX3B0cjsKQEAgLTI3MiwxNiArMjM5LDE1IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X1N0YXR1cyAoRmxkICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzIDogaW4gQm9vbGVhbiA6PSBUcnVlKQorICAgcHJvY2VkdXJlIFNldF9TdGF0dXMgKEZsZCAgICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cyA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRmxkX1N0YXR1cyAoRmxkIDogRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3QgIDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdCAgOiBDX0ludCkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GbGRfU3RhdHVzLCAic2V0X2ZpZWxkX3N0YXR1cyIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0ZsZF9TdGF0dXMgKEZsZCwgQm9vbGVhbidQb3MgKFN0YXR1cykpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KKyAgICAgIGlmIFNldF9GbGRfU3RhdHVzIChGbGQsIEJvb2xlYW4nUG9zIChTdGF0dXMpKSAvPSBFX09rIHRoZW4KICAgICAgICAgIHJhaXNlIEZvcm1fRXhjZXB0aW9uOwogICAgICAgZW5kIGlmOwogICAgZW5kIFNldF9TdGF0dXM7CkBAIC0zMDQsMTggKzI3MCwxNSBAQAogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAotICAgcHJvY2VkdXJlIFNldF9NYXhpbXVtX1NpemUgKEZsZCA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCA6IGluIE5hdHVyYWwgOj0gMCkKKyAgIHByb2NlZHVyZSBTZXRfTWF4aW11bV9TaXplIChGbGQgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggOiBOYXR1cmFsIDo9IDApCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0ZpZWxkX01heCAoRmxkIDogRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNICAgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSAgIDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmllbGRfTWF4LCAic2V0X21heF9maWVsZCIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0ZpZWxkX01heCAoRmxkLCBDX0ludCAoTWF4KSk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9GaWVsZF9NYXggKEZsZCwgQ19JbnQgKE1heCkpKTsKICAgIGVuZCBTZXRfTWF4aW11bV9TaXplOwogICAgLS0gIHwKICAgIC0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zMjQsNTkgKzI4Nyw0OCBAQAogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAotICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChGbGQgICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBpbiBGaWVsZF9PcHRpb25fU2V0KQorICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChGbGQgICAgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBGaWVsZF9PcHRpb25fU2V0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9GaWVsZF9PcHRzIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdCA6IEZpZWxkX09wdGlvbl9TZXQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmllbGRfT3B0cywgInNldF9maWVsZF9vcHRzIik7CiAKLSAgICAgIE9wdCA6IGNvbnN0YW50IENfSW50IDo9IEZPU18yX0NJbnQgKE9wdGlvbnMpOwotICAgICAgUmVzIDogRXRpX0Vycm9yOwogICAgYmVnaW4KLSAgICAgIFJlcyA6PSBTZXRfRmllbGRfT3B0cyAoRmxkLCBPcHQpOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9GaWVsZF9PcHRzIChGbGQsIE9wdGlvbnMpKTsKICAgIGVuZCBTZXRfT3B0aW9uczsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoRmxkICAgICA6IGluIEZpZWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogaW4gRmllbGRfT3B0aW9uX1NldDsKKyAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoRmxkICAgICA6IEZpZWxkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogRmllbGRfT3B0aW9uX1NldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBGaWVsZF9PcHRzX09uIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdCA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBGaWVsZF9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRmllbGRfT3B0c19PbiwgImZpZWxkX29wdHNfb24iKTsKICAgICAgIGZ1bmN0aW9uIEZpZWxkX09wdHNfT2ZmIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdCA6IEZpZWxkX09wdGlvbl9TZXQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGaWVsZF9PcHRzX09mZiwgImZpZWxkX29wdHNfb2ZmIik7CiAKLSAgICAgIEVyciA6IEV0aV9FcnJvcjsKLSAgICAgIE9wdCA6IGNvbnN0YW50IENfSW50IDo9IEZPU18yX0NJbnQgKE9wdGlvbnMpOwogICAgYmVnaW4KICAgICAgIGlmIE9uIHRoZW4KLSAgICAgICAgIEVyciA6PSBGaWVsZF9PcHRzX09uIChGbGQsIE9wdCk7CisgICAgICAgICBFdGlfRXhjZXB0aW9uIChGaWVsZF9PcHRzX09uIChGbGQsIE9wdGlvbnMpKTsKICAgICAgIGVsc2UKLSAgICAgICAgIEVyciA6PSBGaWVsZF9PcHRzX09mZiAoRmxkLCBPcHQpOwotICAgICAgZW5kIGlmOwotICAgICAgaWYgRXJyIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoRXJyKTsKKyAgICAgICAgIEV0aV9FeGNlcHRpb24gKEZpZWxkX09wdHNfT2ZmIChGbGQsIE9wdGlvbnMpKTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTd2l0Y2hfT3B0aW9uczsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoRmxkICAgICA6IGluICBGaWVsZDsKKyAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoRmxkICAgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IEZpZWxkX09wdGlvbl9TZXQpCiAgICBpcwotICAgICAgZnVuY3Rpb24gRmllbGRfT3B0cyAoRmxkIDogRmllbGQpIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIEZpZWxkX09wdHMgKEZsZCA6IEZpZWxkKSByZXR1cm4gRmllbGRfT3B0aW9uX1NldDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZpZWxkX09wdHMsICJmaWVsZF9vcHRzIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IENfSW50IDo9IEZpZWxkX09wdHMgKEZsZCk7CiAgICBiZWdpbgotICAgICAgT3B0aW9ucyA6PSBDSW50XzJfRk9TIChSZXMpOworICAgICAgT3B0aW9ucyA6PSBGaWVsZF9PcHRzIChGbGQpOwogICAgZW5kIEdldF9PcHRpb25zOwogICAgLS0gIHwKICAgIC0tICB8CkBAIC0zOTcsMTExICszNDksOTggQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgcHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kCi0gICAgIChGbGQgICA6IGluIEZpZWxkOwotICAgICAgRm9yZSAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCkKKyAgICAgKEZsZCAgIDogRmllbGQ7CisgICAgICBGb3JlICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIENvbG9yIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9GaWVsZF9Gb3JlIChGbGQgIDogRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciA6IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZpZWxkX0ZvcmUsICJzZXRfZmllbGRfZm9yZSIpOwogCi0gICAgICBDaCA6IGNvbnN0YW50IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IChDaCAgICA9PiBDaGFyYWN0ZXInRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgID0+IEZvcmUpOwotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9Ci0gICAgICAgIFNldF9GaWVsZF9Gb3JlIChGbGQsIEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9GaWVsZF9Gb3JlIChGbGQsIChDaCAgICA9PiBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgPT4gQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgPT4gRm9yZSkpKTsKICAgIGVuZCBTZXRfRm9yZWdyb3VuZDsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChGbGQgIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIEZvcmVncm91bmQgKEZsZCAgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JlIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0KQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIEZpZWxkX0ZvcmUgKEZsZCA6IEZpZWxkKSByZXR1cm4gQ19DaHR5cGU7CisgICAgICBmdW5jdGlvbiBGaWVsZF9Gb3JlIChGbGQgOiBGaWVsZCkgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRmllbGRfRm9yZSwgImZpZWxkX2ZvcmUiKTsKICAgIGJlZ2luCi0gICAgICBGb3JlIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoRmllbGRfRm9yZSAoRmxkKSkuQXR0cjsKKyAgICAgIEZvcmUgOj0gRmllbGRfRm9yZSAoRmxkKS5BdHRyOwogICAgZW5kIEZvcmVncm91bmQ7CiAKLSAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChGbGQgICA6IGluICBGaWVsZDsKKyAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChGbGQgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIDogb3V0IENvbG9yX1BhaXIpCiAgICBpcwotICAgICAgZnVuY3Rpb24gRmllbGRfRm9yZSAoRmxkIDogRmllbGQpIHJldHVybiBDX0NodHlwZTsKKyAgICAgIGZ1bmN0aW9uIEZpZWxkX0ZvcmUgKEZsZCA6IEZpZWxkKSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGaWVsZF9Gb3JlLCAiZmllbGRfZm9yZSIpOwogICAgYmVnaW4KLSAgICAgIEZvcmUgIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoRmllbGRfRm9yZSAoRmxkKSkuQXR0cjsKLSAgICAgIENvbG9yIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoRmllbGRfRm9yZSAoRmxkKSkuQ29sb3I7CisgICAgICBGb3JlICA6PSBGaWVsZF9Gb3JlIChGbGQpLkF0dHI7CisgICAgICBDb2xvciA6PSBGaWVsZF9Gb3JlIChGbGQpLkNvbG9yOwogICAgZW5kIEZvcmVncm91bmQ7CiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8CiAgICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKLSAgICAgKEZsZCAgIDogaW4gRmllbGQ7Ci0gICAgICBCYWNrICA6IGluIENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKLSAgICAgIENvbG9yIDogaW4gQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQorICAgICAoRmxkICAgOiBGaWVsZDsKKyAgICAgIEJhY2sgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0ZpZWxkX0JhY2sgKEZsZCAgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyIDogQ19DaHR5cGUpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRmllbGRfQmFjaywgInNldF9maWVsZF9iYWNrIik7CiAKLSAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yID0+IENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgPT4gQmFjayk7Ci0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0KLSAgICAgICAgU2V0X0ZpZWxkX0JhY2sgKEZsZCwgQXR0ckNoYXJfVG9fQ2h0eXBlIChDaCkpOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZpZWxkX0JhY2sgKEZsZCwgKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyICA9PiBCYWNrKSkpOwogICAgZW5kIFNldF9CYWNrZ3JvdW5kOwogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAotICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKEZsZCAgOiBpbiAgRmllbGQ7CisgICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoRmxkICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpCiAgICBpcwotICAgICAgZnVuY3Rpb24gRmllbGRfQmFjayAoRmxkIDogRmllbGQpIHJldHVybiBDX0NodHlwZTsKKyAgICAgIGZ1bmN0aW9uIEZpZWxkX0JhY2sgKEZsZCA6IEZpZWxkKSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGaWVsZF9CYWNrLCAiZmllbGRfYmFjayIpOwogICAgYmVnaW4KLSAgICAgIEJhY2sgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChGaWVsZF9CYWNrIChGbGQpKS5BdHRyOworICAgICAgQmFjayA6PSBGaWVsZF9CYWNrIChGbGQpLkF0dHI7CiAgICBlbmQgQmFja2dyb3VuZDsKIAotICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKEZsZCAgIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKEZsZCAgIDogRmllbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjayAgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgOiBvdXQgQ29sb3JfUGFpcikKICAgIGlzCi0gICAgICBmdW5jdGlvbiBGaWVsZF9CYWNrIChGbGQgOiBGaWVsZCkgcmV0dXJuIENfQ2h0eXBlOworICAgICAgZnVuY3Rpb24gRmllbGRfQmFjayAoRmxkIDogRmllbGQpIHJldHVybiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZpZWxkX0JhY2ssICJmaWVsZF9iYWNrIik7CiAgICBiZWdpbgotICAgICAgQmFjayAgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChGaWVsZF9CYWNrIChGbGQpKS5BdHRyOwotICAgICAgQ29sb3IgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChGaWVsZF9CYWNrIChGbGQpKS5Db2xvcjsKKyAgICAgIEJhY2sgIDo9IEZpZWxkX0JhY2sgKEZsZCkuQXR0cjsKKyAgICAgIENvbG9yIDo9IEZpZWxkX0JhY2sgKEZsZCkuQ29sb3I7CiAgICBlbmQgQmFja2dyb3VuZDsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfUGFkX0NoYXJhY3RlciAoRmxkIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZCA6IGluIENoYXJhY3RlciA6PSBTcGFjZSkKKyAgIHByb2NlZHVyZSBTZXRfUGFkX0NoYXJhY3RlciAoRmxkIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZCA6IENoYXJhY3RlciA6PSBTcGFjZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRmllbGRfUGFkIChGbGQgOiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoICA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaCAgOiBDX0ludCkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GaWVsZF9QYWQsICJzZXRfZmllbGRfcGFkIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfRmllbGRfUGFkIChGbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENoYXJhY3RlcidQb3MgKFBhZCkpKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZpZWxkX1BhZCAoRmxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENoYXJhY3RlcidQb3MgKFBhZCkpKSk7CiAgICBlbmQgU2V0X1BhZF9DaGFyYWN0ZXI7CiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgUGFkX0NoYXJhY3RlciAoRmxkIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIFBhZF9DaGFyYWN0ZXIgKEZsZCA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZCA6IG91dCBDaGFyYWN0ZXIpCiAgICBpcwogICAgICAgZnVuY3Rpb24gRmllbGRfUGFkIChGbGQgOiBGaWVsZCkgcmV0dXJuIENfSW50OwpAQCAtNTE2LDcgKzQ1NSw3IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgSW5mbyAoRmxkICAgICAgICAgICAgICAgIDogaW4gIEZpZWxkOworICAgcHJvY2VkdXJlIEluZm8gKEZsZCAgICAgICAgICAgICAgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgIExpbmVzICAgICAgICAgICAgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgICAgICAgICAgICA6IG91dCBDb2x1bW5fQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgRmlyc3RfUm93ICAgICAgICAgIDogb3V0IExpbmVfUG9zaXRpb247CkBAIC01MjcsNTAgKzQ2Niw0MiBAQAogICAgICAgdHlwZSBDX0ludF9BY2Nlc3MgaXMgYWNjZXNzIGFsbCBDX0ludDsKICAgICAgIGZ1bmN0aW9uIEZsZF9JbmZvIChGbGQgOiBGaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICBMLCBDLCBGciwgRmMsIE9zLCBBYiA6IENfSW50X0FjY2VzcykKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZsZF9JbmZvLCAiZmllbGRfaW5mbyIpOwogCiAgICAgICBMLCBDLCBGciwgRmMsIE9zLCBBYiA6IGFsaWFzZWQgQ19JbnQ7Ci0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gRmxkX0luZm8gKEZsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCdBY2Nlc3MsIEMnQWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcidBY2Nlc3MsIEZjJ0FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3MnQWNjZXNzLCBBYidBY2Nlc3MpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbHNlCi0gICAgICAgICBMaW5lcyAgICAgICAgICAgICAgOj0gTGluZV9Db3VudCAoTCk7Ci0gICAgICAgICBDb2x1bW5zICAgICAgICAgICAgOj0gQ29sdW1uX0NvdW50IChDKTsKLSAgICAgICAgIEZpcnN0X1JvdyAgICAgICAgICA6PSBMaW5lX1Bvc2l0aW9uIChGcik7Ci0gICAgICAgICBGaXJzdF9Db2x1bW4gICAgICAgOj0gQ29sdW1uX1Bvc2l0aW9uIChGYyk7Ci0gICAgICAgICBPZmZfU2NyZWVuICAgICAgICAgOj0gTmF0dXJhbCAoT3MpOwotICAgICAgICAgQWRkaXRpb25hbF9CdWZmZXJzIDo9IEJ1ZmZlcl9OdW1iZXIgKEFiKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKEZsZF9JbmZvIChGbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCdBY2Nlc3MsIEMnQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyJ0FjY2VzcywgRmMnQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9zJ0FjY2VzcywgQWInQWNjZXNzKSk7CisgICAgICBMaW5lcyAgICAgICAgICAgICAgOj0gTGluZV9Db3VudCAoTCk7CisgICAgICBDb2x1bW5zICAgICAgICAgICAgOj0gQ29sdW1uX0NvdW50IChDKTsKKyAgICAgIEZpcnN0X1JvdyAgICAgICAgICA6PSBMaW5lX1Bvc2l0aW9uIChGcik7CisgICAgICBGaXJzdF9Db2x1bW4gICAgICAgOj0gQ29sdW1uX1Bvc2l0aW9uIChGYyk7CisgICAgICBPZmZfU2NyZWVuICAgICAgICAgOj0gTmF0dXJhbCAoT3MpOworICAgICAgQWRkaXRpb25hbF9CdWZmZXJzIDo9IEJ1ZmZlcl9OdW1iZXIgKEFiKTsKICAgIGVuZCBJbmZvOwogLS0gIHwKIC0tICB8CiAtLSAgfAotICAgcHJvY2VkdXJlIER5bmFtaWNfSW5mbyAoRmxkICAgICA6IGluIEZpZWxkOworICAgcHJvY2VkdXJlIER5bmFtaWNfSW5mbyAoRmxkICAgICA6IEZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgIDogb3V0IE5hdHVyYWwpCiAgICBpcwogICAgICAgdHlwZSBDX0ludF9BY2Nlc3MgaXMgYWNjZXNzIGFsbCBDX0ludDsKLSAgICAgIGZ1bmN0aW9uIER5bl9JbmZvIChGbGQgOiBGaWVsZDsgTCwgQywgTSA6IENfSW50X0FjY2VzcykgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRHluX0luZm8gKEZsZCA6IEZpZWxkOyBMLCBDLCBNIDogQ19JbnRfQWNjZXNzKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRHluX0luZm8sICJkeW5hbWljX2ZpZWxkX2luZm8iKTsKIAogICAgICAgTCwgQywgTSA6IGFsaWFzZWQgQ19JbnQ7Ci0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gRHluX0luZm8gKEZsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCdBY2Nlc3MsIEMnQWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNJ0FjY2Vzcyk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIExpbmVzICAgOj0gTGluZV9Db3VudCAoTCk7Ci0gICAgICAgICBDb2x1bW5zIDo9IENvbHVtbl9Db3VudCAoQyk7Ci0gICAgICAgICBNYXggICAgIDo9IE5hdHVyYWwgKE0pOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoRHluX0luZm8gKEZsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMJ0FjY2VzcywgQydBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSdBY2Nlc3MpKTsKKyAgICAgIExpbmVzICAgOj0gTGluZV9Db3VudCAoTCk7CisgICAgICBDb2x1bW5zIDo9IENvbHVtbl9Db3VudCAoQyk7CisgICAgICBNYXggICAgIDo9IE5hdHVyYWwgKE0pOwogICAgZW5kIER5bmFtaWNfSW5mbzsKICAgIC0tICB8CiAgICAtLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNTc5LDE4ICs1MTAsMTUgQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfV2luZG93IChGcm0gOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdykKKyAgIHByb2NlZHVyZSBTZXRfV2luZG93IChGcm0gOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRm9ybV9XaW4gKEZybSA6IEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9ybV9XaW4sICJzZXRfZm9ybV93aW4iKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9Gb3JtX1dpbiAoRnJtLCBXaW4pOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0Zvcm1fV2luIChGcm0sIFdpbikpOwogICAgZW5kIFNldF9XaW5kb3c7CiAgICAtLSAgfAogICAgLS0gIHwKQEAgLTYwNywxOCArNTM1LDE1IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X1N1Yl9XaW5kb3cgKEZybSA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IGluIFdpbmRvdykKKyAgIHByb2NlZHVyZSBTZXRfU3ViX1dpbmRvdyAoRnJtIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luIDogV2luZG93KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9Gb3JtX1N1YiAoRnJtIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luIDogV2luZG93KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdykgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Gb3JtX1N1YiwgInNldF9mb3JtX3N1YiIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0Zvcm1fU3ViIChGcm0sIFdpbik7CiAgICBiZWdpbgotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRm9ybV9TdWIgKEZybSwgV2luKSk7CiAgICBlbmQgU2V0X1N1Yl9XaW5kb3c7CiAgICAtLSAgfAogICAgLS0gIHwKQEAgLTYzNSwyMSArNTYwLDE4IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2NhbGUgKEZybSAgICAgOiBpbiBGb3JtOworICAgcHJvY2VkdXJlIFNjYWxlIChGcm0gICAgIDogRm9ybTsKICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogb3V0IENvbHVtbl9Db3VudCkKICAgIGlzCiAgICAgICB0eXBlIENfSW50X0FjY2VzcyBpcyBhY2Nlc3MgYWxsIENfSW50OwotICAgICAgZnVuY3Rpb24gTV9TY2FsZSAoRnJtIDogRm9ybTsgWXAsIFhwIDogQ19JbnRfQWNjZXNzKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBNX1NjYWxlIChGcm0gOiBGb3JtOyBZcCwgWHAgOiBDX0ludF9BY2Nlc3MpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNX1NjYWxlLCAic2NhbGVfZm9ybSIpOwogCiAgICAgICBYLCBZIDogYWxpYXNlZCBDX0ludDsKLSAgICAgIFJlcyAgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gTV9TY2FsZSAoRnJtLCBZJ0FjY2VzcywgWCdBY2Nlc3MpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7Ci0gICAgICBMaW5lcyA6PSBMaW5lX0NvdW50IChZKTsKKyAgICAgIEV0aV9FeGNlcHRpb24gKE1fU2NhbGUgKEZybSwgWSdBY2Nlc3MsIFgnQWNjZXNzKSk7CisgICAgICBMaW5lcyAgIDo9IExpbmVfQ291bnQgKFkpOwogICAgICAgQ29sdW1ucyA6PSBDb2x1bW5fQ291bnQgKFgpOwogICAgZW5kIFNjYWxlOwogICAgLS0gIHwKQEAgLTY1OSw2NiArNTgxLDU0IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX0luaXRfSG9vayAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIEZvcm1fSG9va19GdW5jdGlvbikKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfSW5pdF9Ib29rIChGcm0gIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9GaWVsZF9Jbml0IChGcm0gIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IEZvcm1fSG9va19GdW5jdGlvbikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GaWVsZF9Jbml0LCAic2V0X2ZpZWxkX2luaXQiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9GaWVsZF9Jbml0IChGcm0sIFByb2MpOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZpZWxkX0luaXQgKEZybSwgUHJvYykpOwogICAgZW5kIFNldF9GaWVsZF9Jbml0X0hvb2s7CiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X0ZpZWxkX1Rlcm1fSG9vayAoRnJtICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIEZvcm1fSG9va19GdW5jdGlvbikKKyAgIHByb2NlZHVyZSBTZXRfRmllbGRfVGVybV9Ib29rIChGcm0gIDogRm9ybTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9GaWVsZF9UZXJtIChGcm0gIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogRm9ybV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IEZvcm1fSG9va19GdW5jdGlvbikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9GaWVsZF9UZXJtLCAic2V0X2ZpZWxkX3Rlcm0iKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9GaWVsZF9UZXJtIChGcm0sIFByb2MpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRmllbGRfVGVybSAoRnJtLCBQcm9jKSk7CiAgICBlbmQgU2V0X0ZpZWxkX1Rlcm1fSG9vazsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfRm9ybV9Jbml0X0hvb2sgKEZybSAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIEZvcm1fSG9va19GdW5jdGlvbikKKyAgIHByb2NlZHVyZSBTZXRfRm9ybV9Jbml0X0hvb2sgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IEZvcm1fSG9va19GdW5jdGlvbikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRm9ybV9Jbml0IChGcm0gIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBGb3JtX0hvb2tfRnVuY3Rpb24pIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBGb3JtX0hvb2tfRnVuY3Rpb24pIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9ybV9Jbml0LCAic2V0X2Zvcm1faW5pdCIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0Zvcm1fSW5pdCAoRnJtLCBQcm9jKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9Gb3JtX0luaXQgKEZybSwgUHJvYykpOwogICAgZW5kIFNldF9Gb3JtX0luaXRfSG9vazsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfRm9ybV9UZXJtX0hvb2sgKEZybSAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IGluIEZvcm1fSG9va19GdW5jdGlvbikKKyAgIHByb2NlZHVyZSBTZXRfRm9ybV9UZXJtX0hvb2sgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IEZvcm1fSG9va19GdW5jdGlvbikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfRm9ybV9UZXJtIChGcm0gIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBGb3JtX0hvb2tfRnVuY3Rpb24pIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBGb3JtX0hvb2tfRnVuY3Rpb24pIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9ybV9UZXJtLCAic2V0X2Zvcm1fdGVybSIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0Zvcm1fVGVybSAoRnJtLCBQcm9jKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0Zvcm1fVGVybSAoRnJtLCBQcm9jKSk7CiAgICBlbmQgU2V0X0Zvcm1fVGVybV9Ib29rOwogICAgLS0gIHwKICAgIC0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC03MjcsMjMgKzYzNywxOSBAQAogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAotICAgcHJvY2VkdXJlIFJlZGVmaW5lIChGcm0gIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgRmxkcyA6IGluIEZpZWxkX0FycmF5X0FjY2VzcykKKyAgIHByb2NlZHVyZSBSZWRlZmluZSAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgIEZsZHMgOiBGaWVsZF9BcnJheV9BY2Nlc3MpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0ZybV9GaWVsZHMgKEZybSAgIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtcyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlbXMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Gcm1fRmllbGRzLCAic2V0X2Zvcm1fZmllbGRzIik7CiAKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCi0gICAgICBwcmFnbWEgQXNzZXJ0IChGbGRzIChGbGRzJ0xhc3QpID0gTnVsbF9GaWVsZCk7Ci0gICAgICBpZiBGbGRzIChGbGRzJ0xhc3QpIC89IE51bGxfRmllbGQgdGhlbgorICAgICAgcHJhZ21hIEFzc2VydCAoRmxkcy5hbGwgKEZsZHMnTGFzdCkgPSBOdWxsX0ZpZWxkKTsKKyAgICAgIGlmIEZsZHMuYWxsIChGbGRzJ0xhc3QpIC89IE51bGxfRmllbGQgdGhlbgogICAgICAgICAgcmFpc2UgRm9ybV9FeGNlcHRpb247CiAgICAgICBlbHNlCi0gICAgICAgICBSZXMgOj0gU2V0X0ZybV9GaWVsZHMgKEZybSwgRmxkcyAoRmxkcydGaXJzdCknQWRkcmVzcyk7Ci0gICAgICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgICAgIGVuZCBpZjsKKyAgICAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9Gcm1fRmllbGRzIChGcm0sIEZsZHMuYWxsIChGbGRzJ0ZpcnN0KSdBZGRyZXNzKSk7CiAgICAgICBlbmQgaWY7CiAgICBlbmQgUmVkZWZpbmU7CiAgICAtLSAgfApAQCAtNzc5LDE4ICs2ODUsMTUgQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBNb3ZlIChGbGQgICAgOiBpbiBGaWVsZDsKLSAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbikKKyAgIHByb2NlZHVyZSBNb3ZlIChGbGQgICAgOiBGaWVsZDsKKyAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbikKICAgIGlzCi0gICAgICBmdW5jdGlvbiBNb3ZlIChGbGQgOiBGaWVsZDsgTCwgQyA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBNb3ZlIChGbGQgOiBGaWVsZDsgTCwgQyA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTW92ZSwgIm1vdmVfZmllbGQiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IE1vdmUgKEZsZCwgQ19JbnQgKExpbmUpLCBDX0ludCAoQ29sdW1uKSk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKE1vdmUgKEZsZCwgQ19JbnQgKExpbmUpLCBDX0ludCAoQ29sdW1uKSkpOwogICAgZW5kIE1vdmU7CiAgICAtLSAgfAogICAgLS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTgwNiwxMSArNzA5LDExIEBACiAKICAgICAgIE0gICA6IEZvcm07CiAgICBiZWdpbgotICAgICAgcHJhZ21hIEFzc2VydCAoRmllbGRzIChGaWVsZHMnTGFzdCkgPSBOdWxsX0ZpZWxkKTsKLSAgICAgIGlmIEZpZWxkcyAoRmllbGRzJ0xhc3QpIC89IE51bGxfRmllbGQgdGhlbgorICAgICAgcHJhZ21hIEFzc2VydCAoRmllbGRzLmFsbCAoRmllbGRzJ0xhc3QpID0gTnVsbF9GaWVsZCk7CisgICAgICBpZiBGaWVsZHMuYWxsIChGaWVsZHMnTGFzdCkgLz0gTnVsbF9GaWVsZCB0aGVuCiAgICAgICAgICByYWlzZSBGb3JtX0V4Y2VwdGlvbjsKICAgICAgIGVsc2UKLSAgICAgICAgIE0gOj0gTmV3Rm9ybSAoRmllbGRzIChGaWVsZHMnRmlyc3QpJ0FkZHJlc3MpOworICAgICAgICAgTSA6PSBOZXdGb3JtIChGaWVsZHMuYWxsIChGaWVsZHMnRmlyc3QpJ0FkZHJlc3MpOwogICAgICAgICAgaWYgTSA9IE51bGxfRm9ybSB0aGVuCiAgICAgICAgICAgICByYWlzZSBGb3JtX0V4Y2VwdGlvbjsKICAgICAgICAgIGVuZCBpZjsKQEAgLTgyMiwxNCArNzI1LDExIEBACiAgICAtLSAgfAogICAgcHJvY2VkdXJlIERlbGV0ZSAoRnJtIDogaW4gb3V0IEZvcm0pCiAgICBpcwotICAgICAgZnVuY3Rpb24gRnJlZSAoRnJtIDogRm9ybSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRnJlZSAoRnJtIDogRm9ybSkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZyZWUsICJmcmVlX2Zvcm0iKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IEZyZWUgKEZybSk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKEZyZWUgKEZybSkpOwogICAgICAgRnJtIDo9IE51bGxfRm9ybTsKICAgIGVuZCBEZWxldGU7CiAgICAtLSAgfApAQCAtODM5LDU5ICs3MzksNDggQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfT3B0aW9ucyAoRnJtICAgICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBpbiBGb3JtX09wdGlvbl9TZXQpCisgICBwcm9jZWR1cmUgU2V0X09wdGlvbnMgKEZybSAgICAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogRm9ybV9PcHRpb25fU2V0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9Gb3JtX09wdHMgKEZybSA6IEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogRm9ybV9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0Zvcm1fT3B0cywgInNldF9mb3JtX29wdHMiKTsKIAotICAgICAgT3B0IDogY29uc3RhbnQgQ19JbnQgOj0gRnJtT1NfMl9DSW50IChPcHRpb25zKTsKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCi0gICAgICBSZXMgOj0gU2V0X0Zvcm1fT3B0cyAoRnJtLCBPcHQpOwotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfRm9ybV9PcHRzIChGcm0sIE9wdGlvbnMpKTsKICAgIGVuZCBTZXRfT3B0aW9uczsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoRnJtICAgICA6IGluIEZvcm07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBpbiBGb3JtX09wdGlvbl9TZXQ7CisgICBwcm9jZWR1cmUgU3dpdGNoX09wdGlvbnMgKEZybSAgICAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogRm9ybV9PcHRpb25fU2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIEZvcm1fT3B0c19PbiAoRnJtIDogRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogRm9ybV9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRm9ybV9PcHRzX09uLCAiZm9ybV9vcHRzX29uIik7CiAgICAgICBmdW5jdGlvbiBGb3JtX09wdHNfT2ZmIChGcm0gOiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdCA6IEZvcm1fT3B0aW9uX1NldCkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZvcm1fT3B0c19PZmYsICJmb3JtX29wdHNfb2ZmIik7CiAKLSAgICAgIEVyciA6IEV0aV9FcnJvcjsKLSAgICAgIE9wdCA6IGNvbnN0YW50IENfSW50IDo9IEZybU9TXzJfQ0ludCAoT3B0aW9ucyk7CiAgICBiZWdpbgogICAgICAgaWYgT24gdGhlbgotICAgICAgICAgRXJyIDo9IEZvcm1fT3B0c19PbiAoRnJtLCBPcHQpOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoRm9ybV9PcHRzX09uIChGcm0sIE9wdGlvbnMpKTsKICAgICAgIGVsc2UKLSAgICAgICAgIEVyciA6PSBGb3JtX09wdHNfT2ZmIChGcm0sIE9wdCk7Ci0gICAgICBlbmQgaWY7Ci0gICAgICBpZiBFcnIgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChFcnIpOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoRm9ybV9PcHRzX09mZiAoRnJtLCBPcHRpb25zKSk7CiAgICAgICBlbmQgaWY7CiAgICBlbmQgU3dpdGNoX09wdGlvbnM7CiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgR2V0X09wdGlvbnMgKEZybSAgICAgOiBpbiAgRm9ybTsKKyAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoRnJtICAgICA6IEZvcm07CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBvdXQgRm9ybV9PcHRpb25fU2V0KQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIEZvcm1fT3B0cyAoRnJtIDogRm9ybSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRm9ybV9PcHRzIChGcm0gOiBGb3JtKSByZXR1cm4gRm9ybV9PcHRpb25fU2V0OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRm9ybV9PcHRzLCAiZm9ybV9vcHRzIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IENfSW50IDo9IEZvcm1fT3B0cyAoRnJtKTsKICAgIGJlZ2luCi0gICAgICBPcHRpb25zIDo9IENJbnRfMl9Gcm1PUyAoUmVzKTsKKyAgICAgIE9wdGlvbnMgOj0gRm9ybV9PcHRzIChGcm0pOwogICAgZW5kIEdldF9PcHRpb25zOwogICAgLS0gIHwKICAgIC0tICB8CkBAIC05MTAsMjMgKzc5OSwxOSBAQAogICAgLS0gIHwKICAgIC0tICB8CiAgICAtLSAgfAotICAgcHJvY2VkdXJlIFBvc3QgKEZybSAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgIFBvc3QgOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICBwcm9jZWR1cmUgUG9zdCAoRnJtICA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgUG9zdCA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBNX1Bvc3QgKEZybSA6IEZvcm0pIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIE1fUG9zdCAoRnJtIDogRm9ybSkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1fUG9zdCwgInBvc3RfZm9ybSIpOwotICAgICAgZnVuY3Rpb24gTV9VbnBvc3QgKEZybSA6IEZvcm0pIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIE1fVW5wb3N0IChGcm0gOiBGb3JtKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTV9VbnBvc3QsICJ1bnBvc3RfZm9ybSIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgogICAgICAgaWYgUG9zdCB0aGVuCi0gICAgICAgICBSZXMgOj0gTV9Qb3N0IChGcm0pOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoTV9Qb3N0IChGcm0pKTsKICAgICAgIGVsc2UKLSAgICAgICAgIFJlcyA6PSBNX1VucG9zdCAoRnJtKTsKLSAgICAgIGVuZCBpZjsKLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7CisgICAgICAgICBFdGlfRXhjZXB0aW9uIChNX1VucG9zdCAoRnJtKSk7CiAgICAgICBlbmQgaWY7CiAgICBlbmQgUG9zdDsKICAgIC0tICB8CkBAIC05MzgsMTQgKzgyMywxMSBAQAogICAgLS0gIHwKICAgIHByb2NlZHVyZSBQb3NpdGlvbl9DdXJzb3IgKEZybSA6IEZvcm0pCiAgICBpcwotICAgICAgZnVuY3Rpb24gUG9zX0Zvcm1fQ3Vyc29yIChGcm0gOiBGb3JtKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBQb3NfRm9ybV9DdXJzb3IgKEZybSA6IEZvcm0pIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBQb3NfRm9ybV9DdXJzb3IsICJwb3NfZm9ybV9jdXJzb3IiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFBvc19Gb3JtX0N1cnNvciAoRnJtKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFBvc19Gb3JtX0N1cnNvciAoRnJtKSk7CiAgICBlbmQgUG9zaXRpb25fQ3Vyc29yOwogICAgLS0gIHwKICAgIC0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC05OTMsMjUgKzg3NSwyMiBAQAogICAgZnVuY3Rpb24gRHJpdmVyIChGcm0gOiBGb3JtOwogICAgICAgICAgICAgICAgICAgICBLZXkgOiBLZXlfQ29kZSkgcmV0dXJuIERyaXZlcl9SZXN1bHQKICAgIGlzCi0gICAgICBmdW5jdGlvbiBGcm1fRHJpdmVyIChGcm0gOiBGb3JtOyBLZXkgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRnJtX0RyaXZlciAoRnJtIDogRm9ybTsgS2V5IDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGcm1fRHJpdmVyLCAiZm9ybV9kcml2ZXIiKTsKIAogICAgICAgUiA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBGcm1fRHJpdmVyIChGcm0sIENfSW50IChLZXkpKTsKICAgIGJlZ2luCi0gICAgICBpZiBSIC89IEVfT2sgdGhlbgotICAgICAgICAgaWYgUiA9IEVfVW5rbm93bl9Db21tYW5kIHRoZW4KKyAgICAgIGNhc2UgUiBpcworICAgICAgICAgd2hlbiBFX1Vua25vd25fQ29tbWFuZCA9PgogICAgICAgICAgICAgcmV0dXJuIFVua25vd25fUmVxdWVzdDsKLSAgICAgICAgIGVsc2lmIFIgPSBFX0ludmFsaWRfRmllbGQgdGhlbgorICAgICAgICAgd2hlbiBFX0ludmFsaWRfRmllbGQgPT4KICAgICAgICAgICAgIHJldHVybiBJbnZhbGlkX0ZpZWxkOwotICAgICAgICAgZWxzaWYgUiA9IEVfUmVxdWVzdF9EZW5pZWQgdGhlbgorICAgICAgICAgd2hlbiBFX1JlcXVlc3RfRGVuaWVkID0+CiAgICAgICAgICAgICByZXR1cm4gUmVxdWVzdF9EZW5pZWQ7Ci0gICAgICAgICBlbHNlCisgICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUik7CiAgICAgICAgICAgICByZXR1cm4gRm9ybV9PazsKLSAgICAgICAgIGVuZCBpZjsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBGb3JtX09rOwotICAgICAgZW5kIGlmOworICAgICAgZW5kIGNhc2U7CiAgICBlbmQgRHJpdmVyOwogICAgLS0gIHwKICAgIC0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMDIwLDIyICs4OTksMTkgQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfQ3VycmVudCAoRnJtIDogaW4gRm9ybTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmxkIDogaW4gRmllbGQpCisgICBwcm9jZWR1cmUgU2V0X0N1cnJlbnQgKEZybSA6IEZvcm07CisgICAgICAgICAgICAgICAgICAgICAgICAgIEZsZCA6IEZpZWxkKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIFNldF9DdXJyZW50X0ZsZCAoRnJtIDogRm9ybTsgRmxkIDogRmllbGQpIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIFNldF9DdXJyZW50X0ZsZCAoRnJtIDogRm9ybTsgRmxkIDogRmllbGQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ3VycmVudF9GbGQsICJzZXRfY3VycmVudF9maWVsZCIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0N1cnJlbnRfRmxkIChGcm0sIEZsZCk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9DdXJyZW50X0ZsZCAoRnJtLCBGbGQpKTsKICAgIGVuZCBTZXRfQ3VycmVudDsKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIGZ1bmN0aW9uIEN1cnJlbnQgKEZybSA6IGluIEZvcm0pIHJldHVybiBGaWVsZAorICAgZnVuY3Rpb24gQ3VycmVudCAoRnJtIDogRm9ybSkgcmV0dXJuIEZpZWxkCiAgICBpcwogICAgICAgZnVuY3Rpb24gQ3VycmVudF9GbGQgKEZybSA6IEZvcm0pIHJldHVybiBGaWVsZDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEN1cnJlbnRfRmxkLCAiY3VycmVudF9maWVsZCIpOwpAQCAtMTA1MCwxNyArOTI2LDE0IEBACiAgICAtLSAgfAogICAgLS0gIHwKICAgIC0tICB8Ci0gICBwcm9jZWR1cmUgU2V0X1BhZ2UgKEZybSAgOiBpbiBGb3JtOwotICAgICAgICAgICAgICAgICAgICAgICBQYWdlIDogaW4gUGFnZV9OdW1iZXIgOj0gUGFnZV9OdW1iZXInRmlyc3QpCisgICBwcm9jZWR1cmUgU2V0X1BhZ2UgKEZybSAgOiBGb3JtOworICAgICAgICAgICAgICAgICAgICAgICBQYWdlIDogUGFnZV9OdW1iZXIgOj0gUGFnZV9OdW1iZXInRmlyc3QpCiAgICBpcwotICAgICAgZnVuY3Rpb24gU2V0X0ZybV9QYWdlIChGcm0gOiBGb3JtOyBQZyA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBTZXRfRnJtX1BhZ2UgKEZybSA6IEZvcm07IFBnIDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRnJtX1BhZ2UsICJzZXRfZm9ybV9wYWdlIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfRnJtX1BhZ2UgKEZybSwgQ19JbnQgKFBhZ2UpKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0ZybV9QYWdlIChGcm0sIENfSW50IChQYWdlKSkpOwogICAgZW5kIFNldF9QYWdlOwogICAgLS0gIHwKICAgIC0tICB8CkBAIC0xMDk5LDE3ICs5NzIsMTQgQEAKICAgIC0tICB8CiAgICAtLSAgfAogICAgLS0gIHwKLSAgIHByb2NlZHVyZSBTZXRfTmV3X1BhZ2UgKEZsZCAgICAgIDogaW4gRmllbGQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdfUGFnZSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTZXRfTmV3X1BhZ2UgKEZsZCAgICAgIDogRmllbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdfUGFnZSA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBTZXRfUGFnZSAoRmxkIDogRmllbGQ7IEZsZyA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBTZXRfUGFnZSAoRmxkIDogRmllbGQ7IEZsZyA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1BhZ2UsICJzZXRfbmV3X3BhZ2UiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9QYWdlIChGbGQsIEJvb2xlYW4nUG9zIChOZXdfUGFnZSkpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfUGFnZSAoRmxkLCBCb29sZWFuJ1BvcyAoTmV3X1BhZ2UpKSk7CiAgICBlbmQgU2V0X05ld19QYWdlOwogICAgLS0gIHwKICAgIC0tICB8CkBAIC0xMTI5LDE1ICs5OTksMTUgQEAKICAgIGVuZCBJc19OZXdfUGFnZTsKIAogICAgcHJvY2VkdXJlIEZyZWUgKEZBICAgICAgICAgIDogaW4gb3V0IEZpZWxkX0FycmF5X0FjY2VzczsKLSAgICAgICAgICAgICAgICAgICBGcmVlX0ZpZWxkcyA6IGluIEJvb2xlYW4gOj0gRmFsc2UpCisgICAgICAgICAgICAgICAgICAgRnJlZV9GaWVsZHMgOiBCb29sZWFuIDo9IEZhbHNlKQogICAgaXMKICAgICAgIHByb2NlZHVyZSBSZWxlYXNlIGlzIG5ldyBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbgogICAgICAgICAoRmllbGRfQXJyYXksIEZpZWxkX0FycmF5X0FjY2Vzcyk7CiAgICBiZWdpbgogICAgICAgaWYgRkEgLz0gbnVsbCBhbmQgdGhlbiBGcmVlX0ZpZWxkcyB0aGVuCiAgICAgICAgICBmb3IgSSBpbiBGQSdGaXJzdCAuLiAoRkEnTGFzdCAtIDEpIGxvb3AKLSAgICAgICAgICAgIGlmIEZBIChJKSAvPSBOdWxsX0ZpZWxkIHRoZW4KLSAgICAgICAgICAgICAgIERlbGV0ZSAoRkEgKEkpKTsKKyAgICAgICAgICAgIGlmIEZBLmFsbCAoSSkgLz0gTnVsbF9GaWVsZCB0aGVuCisgICAgICAgICAgICAgICBEZWxldGUgKEZBLmFsbCAoSSkpOwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgZW5kIGxvb3A7CiAgICAgICBlbmQgaWY7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZGIKaW5kZXggNmMzNWQzMy4uZGEyNmY4MCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjExICQKKy0tICAkUmV2aXNpb246IDEuMTQgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEludGVyZmFjZXMuQzsKQEAgLTQ1LDIxICs0NSwxOCBAQAogCiAgICB1c2UgdHlwZSBJbnRlcmZhY2VzLkMuaW50OwogCi0gICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoSXRtICA6IGluIEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIFVzZXJfQWNjZXNzKQorICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKEl0bSAgOiBJdGVtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBVc2VyX0FjY2VzcykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfSXRlbV9Vc2VycHRyIChJdG0gIDogSXRlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHIgOiBVc2VyX0FjY2VzcykgIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHIgOiBVc2VyX0FjY2VzcykgIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSXRlbV9Vc2VycHRyLCAic2V0X2l0ZW1fdXNlcnB0ciIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0l0ZW1fVXNlcnB0ciAoSXRtLCBEYXRhKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9JdGVtX1VzZXJwdHIgKEl0bSwgRGF0YSkpOwogICAgZW5kIFNldF9Vc2VyX0RhdGE7CiAKLSAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKEl0bSAgOiBpbiAgSXRlbSkgcmV0dXJuIFVzZXJfQWNjZXNzCisgICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChJdG0gIDogSXRlbSkgcmV0dXJuIFVzZXJfQWNjZXNzCiAgICBpcwogICAgICAgZnVuY3Rpb24gSXRlbV9Vc2VycHRyIChJdG0gOiBJdGVtKSByZXR1cm4gVXNlcl9BY2Nlc3M7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJdGVtX1VzZXJwdHIsICJpdGVtX3VzZXJwdHIiKTsKQEAgLTY3LDcgKzY0LDcgQEAKICAgICAgIHJldHVybiBJdGVtX1VzZXJwdHIgKEl0bSk7CiAgICBlbmQgR2V0X1VzZXJfRGF0YTsKIAotICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKEl0bSAgOiBpbiAgSXRlbTsKKyAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChJdG0gIDogSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogb3V0IFVzZXJfQWNjZXNzKQogICAgaXMKICAgIGJlZ2luCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZGIKaW5kZXggMjBiOWU4Ni4uNzQ2ZTdiNCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEyICQKKy0tICAkUmV2aXNpb246IDEuMTUgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7CkBAIC00NCwyMSArNDQsMTkgQEAKIAogICAgdXNlIHR5cGUgSW50ZXJmYWNlcy5DLmludDsKIAotICAgcHJvY2VkdXJlIFNldF9Vc2VyX0RhdGEgKE1lbiAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBVc2VyX0FjY2VzcykKKyAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogVXNlcl9BY2Nlc3MpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfVXNlcnB0ciAoTWVuICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogVXNlcl9BY2Nlc3MpICByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogVXNlcl9BY2Nlc3MpICByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X01lbnVfVXNlcnB0ciwgInNldF9tZW51X3VzZXJwdHIiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9NZW51X1VzZXJwdHIgKE1lbiwgRGF0YSk7CiAgICBiZWdpbgotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfTWVudV9Vc2VycHRyIChNZW4sIERhdGEpKTsKKwogICAgZW5kIFNldF9Vc2VyX0RhdGE7CiAKLSAgIGZ1bmN0aW9uIEdldF9Vc2VyX0RhdGEgKE1lbiAgOiBpbiAgTWVudSkgcmV0dXJuIFVzZXJfQWNjZXNzCisgICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChNZW4gIDogTWVudSkgcmV0dXJuIFVzZXJfQWNjZXNzCiAgICBpcwogICAgICAgZnVuY3Rpb24gTWVudV9Vc2VycHRyIChNZW4gOiBNZW51KSByZXR1cm4gVXNlcl9BY2Nlc3M7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNZW51X1VzZXJwdHIsICJtZW51X3VzZXJwdHIiKTsKQEAgLTY2LDcgKzY0LDcgQEAKICAgICAgIHJldHVybiBNZW51X1VzZXJwdHIgKE1lbik7CiAgICBlbmQgR2V0X1VzZXJfRGF0YTsKIAotICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBHZXRfVXNlcl9EYXRhIChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogb3V0IFVzZXJfQWNjZXNzKQogICAgaXMKICAgIGJlZ2luCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGIKaW5kZXggMGIyNGM3NC4uZWYzYTBkMyAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjI2ICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MDo1OCAkCistLSAgJFJldmlzaW9uOiAxLjMyICQKKy0tICAkRGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb247CkBAIC00Niw4ICs0Niw2IEBACiB3aXRoIEludGVyZmFjZXMuQy5TdHJpbmdzOyB1c2UgSW50ZXJmYWNlcy5DLlN0cmluZ3M7CiB3aXRoIEludGVyZmFjZXMuQy5Qb2ludGVyczsKIAotd2l0aCBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb247Ci0KIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzIGlzCiAKICAgIHR5cGUgQ19JdGVtX0FycmF5IGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBhbGlhc2VkIEl0ZW07CkBAIC01NywyNCArNTUsOCBAQAogICAgdXNlIHR5cGUgU3lzdGVtLkJpdF9PcmRlcjsKICAgIHN1YnR5cGUgY2hhcnNfcHRyIGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJzX3B0cjsKIAotICAgZnVuY3Rpb24gTU9TXzJfQ0ludCBpcyBuZXcKLSAgICAgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uIChNZW51X09wdGlvbl9TZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQpOwotCi0gICBmdW5jdGlvbiBDSW50XzJfTU9TIGlzIG5ldwotICAgICBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24gKENfSW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVfT3B0aW9uX1NldCk7Ci0KLSAgIGZ1bmN0aW9uIElPU18yX0NJbnQgaXMgbmV3Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoSXRlbV9PcHRpb25fU2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfSW50KTsKLQotICAgZnVuY3Rpb24gQ0ludF8yX0lPUyBpcyBuZXcKLSAgICAgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uIChDX0ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtX09wdGlvbl9TZXQpOwotCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBSZXF1ZXN0X05hbWUgKEtleSAgOiBpbiBNZW51X1JlcXVlc3RfQ29kZTsKKyAgIHByb2NlZHVyZSBSZXF1ZXN0X05hbWUgKEtleSAgOiBNZW51X1JlcXVlc3RfQ29kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgOiBvdXQgU3RyaW5nKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFJlcXVlc3RfTmFtZSAoS2V5IDogQ19JbnQpIHJldHVybiBjaGFyc19wdHI7CkBAIC0xMjgsMTAgKzExMCw5IEBACiAgICAgICBmdW5jdGlvbiBJdGVtbmFtZSAoSXRtICA6IEl0ZW0pIHJldHVybiBjaGFyc19wdHI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJdGVtbmFtZSwgIml0ZW1fbmFtZSIpOwogCi0gICAgICBmdW5jdGlvbiBGcmVlaXRlbSAoSXRtIDogSXRlbSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRnJlZWl0ZW0gKEl0bSA6IEl0ZW0pIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBGcmVlaXRlbSwgImZyZWVfaXRlbSIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICAgICBQdHIgOiBjaGFyc19wdHI7CiAgICBiZWdpbgogICAgICAgUHRyIDo9IERlc2NuYW1lIChJdG0pOwpAQCAtMTQyLDI1ICsxMjMsMTkgQEAKICAgICAgIGlmIFB0ciAvPSBOdWxsX1B0ciB0aGVuCiAgICAgICAgICBJbnRlcmZhY2VzLkMuU3RyaW5ncy5GcmVlIChQdHIpOwogICAgICAgZW5kIGlmOwotICAgICAgUmVzIDo9IEZyZWVpdGVtIChJdG0pOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKEZyZWVpdGVtIChJdG0pKTsKICAgICAgIEl0bSA6PSBOdWxsX0l0ZW07CiAgICBlbmQgRGVsZXRlOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9WYWx1ZSAoSXRtICAgOiBpbiBJdGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgOiBpbiBCb29sZWFuIDo9IFRydWUpCisgICBwcm9jZWR1cmUgU2V0X1ZhbHVlIChJdG0gICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfSXRlbV9WYWwgKEl0bSA6IEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbCA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbCA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0l0ZW1fVmFsLCAic2V0X2l0ZW1fdmFsdWUiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9JdGVtX1ZhbCAoSXRtLCBCb29sZWFuJ1BvcyAoVmFsdWUpKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9JdGVtX1ZhbCAoSXRtLCBCb29sZWFuJ1BvcyAoVmFsdWUpKSk7CiAgICBlbmQgU2V0X1ZhbHVlOwogCiAgICBmdW5jdGlvbiBWYWx1ZSAoSXRtIDogSXRlbSkgcmV0dXJuIEJvb2xlYW4KQEAgLTE4OCw1NSArMTYzLDQ0IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgVmlzaWJsZTsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBTZXRfT3B0aW9ucyAoSXRtICAgICA6IGluIEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBpbiBJdGVtX09wdGlvbl9TZXQpCisgICBwcm9jZWR1cmUgU2V0X09wdGlvbnMgKEl0bSAgICAgOiBJdGVtOworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogSXRlbV9PcHRpb25fU2V0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9JdGVtX09wdHMgKEl0bSA6IEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogSXRlbV9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0l0ZW1fT3B0cywgInNldF9pdGVtX29wdHMiKTsKIAotICAgICAgT3B0IDogY29uc3RhbnQgQ19JbnQgOj0gSU9TXzJfQ0ludCAoT3B0aW9ucyk7Ci0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgotICAgICAgUmVzIDo9IFNldF9JdGVtX09wdHMgKEl0bSwgT3B0KTsKLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfSXRlbV9PcHRzIChJdG0sIE9wdGlvbnMpKTsKICAgIGVuZCBTZXRfT3B0aW9uczsKIAotICAgcHJvY2VkdXJlIFN3aXRjaF9PcHRpb25zIChJdG0gICAgIDogaW4gSXRlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIEl0ZW1fT3B0aW9uX1NldDsKKyAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoSXRtICAgICA6IEl0ZW07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBJdGVtX09wdGlvbl9TZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uICAgICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSXRlbV9PcHRzX09uIChJdG0gOiBJdGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBJdGVtX09wdGlvbl9TZXQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJdGVtX09wdHNfT24sICJpdGVtX29wdHNfb24iKTsKICAgICAgIGZ1bmN0aW9uIEl0ZW1fT3B0c19PZmYgKEl0bSA6IEl0ZW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogSXRlbV9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSXRlbV9PcHRzX09mZiwgIml0ZW1fb3B0c19vZmYiKTsKIAotICAgICAgT3B0IDogY29uc3RhbnQgQ19JbnQgOj0gSU9TXzJfQ0ludCAoT3B0aW9ucyk7Ci0gICAgICBFcnIgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgogICAgICAgaWYgT24gdGhlbgotICAgICAgICAgRXJyIDo9IEl0ZW1fT3B0c19PbiAoSXRtLCBPcHQpOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoSXRlbV9PcHRzX09uIChJdG0sIE9wdGlvbnMpKTsKICAgICAgIGVsc2UKLSAgICAgICAgIEVyciA6PSBJdGVtX09wdHNfT2ZmIChJdG0sIE9wdCk7Ci0gICAgICBlbmQgaWY7Ci0gICAgICBpZiBFcnIgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChFcnIpOworICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoSXRlbV9PcHRzX09mZiAoSXRtLCBPcHRpb25zKSk7CiAgICAgICBlbmQgaWY7CiAgICBlbmQgU3dpdGNoX09wdGlvbnM7CiAKLSAgIHByb2NlZHVyZSBHZXRfT3B0aW9ucyAoSXRtICAgICA6IGluICBJdGVtOworICAgcHJvY2VkdXJlIEdldF9PcHRpb25zIChJdG0gICAgIDogSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IG91dCBJdGVtX09wdGlvbl9TZXQpCiAgICBpcwotICAgICAgZnVuY3Rpb24gSXRlbV9PcHRzIChJdG0gOiBJdGVtKSByZXR1cm4gQ19JbnQ7CisgICAgICBmdW5jdGlvbiBJdGVtX09wdHMgKEl0bSA6IEl0ZW0pIHJldHVybiBJdGVtX09wdGlvbl9TZXQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJdGVtX09wdHMsICJpdGVtX29wdHMiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgQ19JbnQgOj0gSXRlbV9PcHRzIChJdG0pOwogICAgYmVnaW4KLSAgICAgIE9wdGlvbnMgOj0gQ0ludF8yX0lPUyAoUmVzKTsKKyAgICAgIE9wdGlvbnMgOj0gSXRlbV9PcHRzIChJdG0pOwogICAgZW5kIEdldF9PcHRpb25zOwogCiAgICBmdW5jdGlvbiBHZXRfT3B0aW9ucyAoSXRtIDogSXRlbSA6PSBOdWxsX0l0ZW0pIHJldHVybiBJdGVtX09wdGlvbl9TZXQKQEAgLTI0Nyw3ICsyMTEsNyBAQAogICAgICAgcmV0dXJuIElvczsKICAgIGVuZCBHZXRfT3B0aW9uczsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBOYW1lIChJdG0gIDogaW4gSXRlbTsKKyAgIHByb2NlZHVyZSBOYW1lIChJdG0gIDogSXRlbTsKICAgICAgICAgICAgICAgICAgICBOYW1lIDogb3V0IFN0cmluZykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBJdGVtbmFtZSAoSXRtIDogSXRlbSkgcmV0dXJuIGNoYXJzX3B0cjsKQEAgLTI1Niw3ICsyMjAsNyBAQAogICAgICAgRmlsbF9TdHJpbmcgKEl0ZW1uYW1lIChJdG0pLCBOYW1lKTsKICAgIGVuZCBOYW1lOwogCi0gICBmdW5jdGlvbiBOYW1lIChJdG0gOiBpbiBJdGVtKSByZXR1cm4gU3RyaW5nCisgICBmdW5jdGlvbiBOYW1lIChJdG0gOiBJdGVtKSByZXR1cm4gU3RyaW5nCiAgICBpcwogICAgICAgZnVuY3Rpb24gSXRlbW5hbWUgKEl0bSA6IEl0ZW0pIHJldHVybiBjaGFyc19wdHI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJdGVtbmFtZSwgIml0ZW1fbmFtZSIpOwpAQCAtMjY0LDcgKzIyOCw3IEBACiAgICAgICByZXR1cm4gRmlsbF9TdHJpbmcgKEl0ZW1uYW1lIChJdG0pKTsKICAgIGVuZCBOYW1lOwogCi0gICBwcm9jZWR1cmUgRGVzY3JpcHRpb24gKEl0bSAgICAgICAgIDogaW4gSXRlbTsKKyAgIHByb2NlZHVyZSBEZXNjcmlwdGlvbiAoSXRtICAgICAgICAgOiBJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA6IG91dCBTdHJpbmcpCiAgICBpcwogICAgICAgZnVuY3Rpb24gRGVzY25hbWUgKEl0bSAgOiBJdGVtKSByZXR1cm4gY2hhcnNfcHRyOwpAQCAtMjczLDcgKzIzNyw3IEBACiAgICAgICBGaWxsX1N0cmluZyAoRGVzY25hbWUgKEl0bSksIERlc2NyaXB0aW9uKTsKICAgIGVuZCBEZXNjcmlwdGlvbjsKIAotICAgZnVuY3Rpb24gRGVzY3JpcHRpb24gKEl0bSA6IGluIEl0ZW0pIHJldHVybiBTdHJpbmcKKyAgIGZ1bmN0aW9uIERlc2NyaXB0aW9uIChJdG0gOiBJdGVtKSByZXR1cm4gU3RyaW5nCiAgICBpcwogICAgICAgZnVuY3Rpb24gRGVzY25hbWUgKEl0bSAgOiBJdGVtKSByZXR1cm4gY2hhcnNfcHRyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgRGVzY25hbWUsICJpdGVtX2Rlc2NyaXB0aW9uIik7CkBAIC0yODEsMTggKzI0NSwxNSBAQAogICAgICAgcmV0dXJuIEZpbGxfU3RyaW5nIChEZXNjbmFtZSAoSXRtKSk7CiAgICBlbmQgRGVzY3JpcHRpb247CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgU2V0X0N1cnJlbnQgKE1lbiA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEl0bSA6IGluIEl0ZW0pCisgICBwcm9jZWR1cmUgU2V0X0N1cnJlbnQgKE1lbiA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEl0bSA6IEl0ZW0pCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0N1cnJfSXRlbSAoTWVuIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0bSA6IEl0ZW0pIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0bSA6IEl0ZW0pIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ3Vycl9JdGVtLCAic2V0X2N1cnJlbnRfaXRlbSIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X0N1cnJfSXRlbSAoTWVuLCBJdG0pOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfQ3Vycl9JdGVtIChNZW4sIEl0bSkpOwogICAgZW5kIFNldF9DdXJyZW50OwogCiAgICBmdW5jdGlvbiBDdXJyZW50IChNZW4gOiBNZW51KSByZXR1cm4gSXRlbQpAQCAtMzA4LDE4ICsyNjksMTUgQEAKICAgICAgIHJldHVybiBSZXM7CiAgICBlbmQgQ3VycmVudDsKIAotICAgcHJvY2VkdXJlIFNldF9Ub3BfUm93IChNZW4gIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSA6IGluIExpbmVfUG9zaXRpb24pCisgICBwcm9jZWR1cmUgU2V0X1RvcF9Sb3cgKE1lbiAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lIDogTGluZV9Qb3NpdGlvbikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfVG9wcm93IChNZW4gIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZSA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1RvcHJvdywgInNldF90b3Bfcm93Iik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfVG9wcm93IChNZW4sIENfSW50IChMaW5lKSk7CiAgICBiZWdpbgotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfVG9wcm93IChNZW4sIENfSW50IChMaW5lKSkpOwogICAgZW5kIFNldF9Ub3BfUm93OwogCiAgICBmdW5jdGlvbiBUb3BfUm93IChNZW4gOiBNZW51KSByZXR1cm4gTGluZV9Qb3NpdGlvbgpAQCAtMzQ4LDc1ICszMDYsNjAgQEAKICAgICAgIHJldHVybiBQb3NpdGl2ZSAoTmF0dXJhbCAoUmVzKSArIFBvc2l0aXZlJ0ZpcnN0KTsKICAgIGVuZCBHZXRfSW5kZXg7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgUG9zdCAoTWVuICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgUG9zdCA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBQb3N0IChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICBQb3N0IDogQm9vbGVhbiA6PSBUcnVlKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIE1fUG9zdCAoTWVuIDogTWVudSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gTV9Qb3N0IChNZW4gOiBNZW51KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTV9Qb3N0LCAicG9zdF9tZW51Iik7Ci0gICAgICBmdW5jdGlvbiBNX1VucG9zdCAoTWVuIDogTWVudSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gTV9VbnBvc3QgKE1lbiA6IE1lbnUpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNX1VucG9zdCwgInVucG9zdF9tZW51Iik7CiAKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCiAgICAgICBpZiBQb3N0IHRoZW4KLSAgICAgICAgIFJlcyA6PSBNX1Bvc3QgKE1lbik7CisgICAgICAgICBFdGlfRXhjZXB0aW9uIChNX1Bvc3QgKE1lbikpOwogICAgICAgZWxzZQotICAgICAgICAgUmVzIDo9IE1fVW5wb3N0IChNZW4pOwotICAgICAgZW5kIGlmOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKKyAgICAgICAgIEV0aV9FeGNlcHRpb24gKE1fVW5wb3N0IChNZW4pKTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBQb3N0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9PcHRpb25zIChNZW4gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIE1lbnVfT3B0aW9uX1NldCkKKyAgIHByb2NlZHVyZSBTZXRfT3B0aW9ucyAoTWVuICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBNZW51X09wdGlvbl9TZXQpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfT3B0cyAoTWVuIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdCA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBNZW51X09wdGlvbl9TZXQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfTWVudV9PcHRzLCAic2V0X21lbnVfb3B0cyIpOwogCi0gICAgICBPcHQgOiBjb25zdGFudCBDX0ludCA6PSBNT1NfMl9DSW50IChPcHRpb25zKTsKLSAgICAgIFJlcyA6IEV0aV9FcnJvcjsKICAgIGJlZ2luCi0gICAgICBSZXMgOj0gU2V0X01lbnVfT3B0cyAoTWVuLCBPcHQpOwotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfTWVudV9PcHRzIChNZW4sIE9wdGlvbnMpKTsKICAgIGVuZCBTZXRfT3B0aW9uczsKIAotICAgcHJvY2VkdXJlIFN3aXRjaF9PcHRpb25zIChNZW4gICAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IGluIE1lbnVfT3B0aW9uX1NldDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gICAgICA6IGluIEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIHByb2NlZHVyZSBTd2l0Y2hfT3B0aW9ucyAoTWVuICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgOiBNZW51X09wdGlvbl9TZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uICAgICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICBpcwogICAgICAgZnVuY3Rpb24gTWVudV9PcHRzX09uIChNZW4gOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBNZW51X09wdGlvbl9TZXQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNZW51X09wdHNfT24sICJtZW51X29wdHNfb24iKTsKICAgICAgIGZ1bmN0aW9uIE1lbnVfT3B0c19PZmYgKE1lbiA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHQgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0IDogTWVudV9PcHRpb25fU2V0KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTWVudV9PcHRzX09mZiwgIm1lbnVfb3B0c19vZmYiKTsKIAotICAgICAgT3B0IDogY29uc3RhbnQgQ19JbnQgOj0gTU9TXzJfQ0ludCAoT3B0aW9ucyk7Ci0gICAgICBFcnIgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgogICAgICAgaWYgT24gdGhlbgotICAgICAgICAgRXJyIDo9IE1lbnVfT3B0c19PbiAgKE1lbiwgT3B0KTsKKyAgICAgICAgIEV0aV9FeGNlcHRpb24gKE1lbnVfT3B0c19PbiAgKE1lbiwgT3B0aW9ucykpOwogICAgICAgZWxzZQotICAgICAgICAgRXJyIDo9IE1lbnVfT3B0c19PZmYgKE1lbiwgT3B0KTsKLSAgICAgIGVuZCBpZjsKLSAgICAgIGlmIEVyciAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKEVycik7CisgICAgICAgICBFdGlfRXhjZXB0aW9uIChNZW51X09wdHNfT2ZmIChNZW4sIE9wdGlvbnMpKTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTd2l0Y2hfT3B0aW9uczsKIAotICAgcHJvY2VkdXJlIEdldF9PcHRpb25zIChNZW4gICAgIDogaW4gIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyA6IG91dCBNZW51X09wdGlvbl9TZXQpCisgICBwcm9jZWR1cmUgR2V0X09wdGlvbnMgKE1lbiAgICAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIDogb3V0IE1lbnVfT3B0aW9uX1NldCkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBNZW51X09wdHMgKE1lbiA6IE1lbnUpIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIE1lbnVfT3B0cyAoTWVuIDogTWVudSkgcmV0dXJuIE1lbnVfT3B0aW9uX1NldDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1lbnVfT3B0cywgIm1lbnVfb3B0cyIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBDX0ludCA6PSBNZW51X09wdHMgKE1lbik7CiAgICBiZWdpbgotICAgICAgT3B0aW9ucyA6PSBDSW50XzJfTU9TIChSZXMpOworICAgICAgT3B0aW9ucyA6PSBNZW51X09wdHMgKE1lbik7CiAgICBlbmQgR2V0X09wdGlvbnM7CiAKICAgIGZ1bmN0aW9uIEdldF9PcHRpb25zIChNZW4gOiBNZW51IDo9IE51bGxfTWVudSkgcmV0dXJuIE1lbnVfT3B0aW9uX1NldApAQCAtNDI3LDE4ICszNzAsMTUgQEAKICAgICAgIHJldHVybiBNb3M7CiAgICBlbmQgR2V0X09wdGlvbnM7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgU2V0X1dpbmRvdyAoTWVuIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBpbiBXaW5kb3cpCisgICBwcm9jZWR1cmUgU2V0X1dpbmRvdyAoTWVuIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfV2luIChNZW4gOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luIDogV2luZG93KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X01lbnVfV2luLCAic2V0X21lbnVfd2luIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfTWVudV9XaW4gKE1lbiwgV2luKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9NZW51X1dpbiAoTWVuLCBXaW4pKTsKICAgIGVuZCBTZXRfV2luZG93OwogCiAgICBmdW5jdGlvbiBHZXRfV2luZG93IChNZW4gOiBNZW51KSByZXR1cm4gV2luZG93CkBAIC00NTEsMTggKzM5MSwxNSBAQAogICAgICAgcmV0dXJuIFc7CiAgICBlbmQgR2V0X1dpbmRvdzsKIAotICAgcHJvY2VkdXJlIFNldF9TdWJfV2luZG93IChNZW4gOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBpbiBXaW5kb3cpCisgICBwcm9jZWR1cmUgU2V0X1N1Yl9XaW5kb3cgKE1lbiA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfTWVudV9TdWIgKE1lbiA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbiA6IFdpbmRvdykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfTWVudV9TdWIsICJzZXRfbWVudV9zdWIiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9NZW51X1N1YiAoTWVuLCBXaW4pOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X01lbnVfU3ViIChNZW4sIFdpbikpOwogICAgZW5kIFNldF9TdWJfV2luZG93OwogCiAgICBmdW5jdGlvbiBHZXRfU3ViX1dpbmRvdyAoTWVuIDogTWVudSkgcmV0dXJuIFdpbmRvdwpAQCAtNDc1LDU4ICs0MTIsNDggQEAKICAgICAgIHJldHVybiBXOwogICAgZW5kIEdldF9TdWJfV2luZG93OwogCi0gICBwcm9jZWR1cmUgU2NhbGUgKE1lbiAgICAgOiBpbiBNZW51OworICAgcHJvY2VkdXJlIFNjYWxlIChNZW4gICAgIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICBDb2x1bW5zIDogb3V0IENvbHVtbl9Db3VudCkKICAgIGlzCiAgICAgICB0eXBlIENfSW50X0FjY2VzcyBpcyBhY2Nlc3MgYWxsIENfSW50OwogICAgICAgZnVuY3Rpb24gTV9TY2FsZSAoTWVuICAgIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFlwLCBYcCA6IENfSW50X0FjY2VzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgWXAsIFhwIDogQ19JbnRfQWNjZXNzKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTV9TY2FsZSwgInNjYWxlX21lbnUiKTsKIAogICAgICAgWCwgWSA6IGFsaWFzZWQgQ19JbnQ7Ci0gICAgICBSZXMgIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IE1fU2NhbGUgKE1lbiwgWSdBY2Nlc3MsIFgnQWNjZXNzKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoTV9TY2FsZSAoTWVuLCBZJ0FjY2VzcywgWCdBY2Nlc3MpKTsKICAgICAgIExpbmVzIDo9IExpbmVfQ291bnQgKFkpOwogICAgICAgQ29sdW1ucyA6PSBDb2x1bW5fQ291bnQgKFgpOwogICAgZW5kIFNjYWxlOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgcHJvY2VkdXJlIFBvc2l0aW9uX0N1cnNvciAoTWVuIDogTWVudSkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBQb3NfTWVudV9DdXJzb3IgKE1lbiA6IE1lbnUpIHJldHVybiBDX0ludDsKKyAgICAgIGZ1bmN0aW9uIFBvc19NZW51X0N1cnNvciAoTWVuIDogTWVudSkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFBvc19NZW51X0N1cnNvciwgInBvc19tZW51X2N1cnNvciIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gUG9zX01lbnVfQ3Vyc29yIChNZW4pOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoUG9zX01lbnVfQ3Vyc29yIChNZW4pKTsKICAgIGVuZCBQb3NpdGlvbl9DdXJzb3I7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBTZXRfTWFyayAoTWVuICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgIE1hcmsgOiBpbiBTdHJpbmcpCisgICBwcm9jZWR1cmUgU2V0X01hcmsgKE1lbiAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICBNYXJrIDogU3RyaW5nKQogICAgaXMKICAgICAgIHR5cGUgQ2hhcl9QdHIgaXMgYWNjZXNzIGFsbCBJbnRlcmZhY2VzLkMuY2hhcjsKICAgICAgIGZ1bmN0aW9uIFNldF9NYXJrIChNZW4gIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrIDogQ2hhcl9QdHIpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrIDogQ2hhcl9QdHIpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfTWFyaywgInNldF9tZW51X21hcmsiKTsKIAogICAgICAgVHh0IDogY2hhcl9hcnJheSAoMCAuLiBNYXJrJ0xlbmd0aCk7CiAgICAgICBMZW4gOiBzaXplX3Q7Ci0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgogICAgICAgVG9fQyAoTWFyaywgVHh0LCBMZW4pOwotICAgICAgUmVzIDo9IFNldF9NYXJrIChNZW4sIFR4dCAoVHh0J0ZpcnN0KSdBY2Nlc3MpOwotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9NYXJrIChNZW4sIFR4dCAoVHh0J0ZpcnN0KSdBY2Nlc3MpKTsKICAgIGVuZCBTZXRfTWFyazsKIAotICAgcHJvY2VkdXJlIE1hcmsgKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBNYXJrIChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICBNYXJrIDogb3V0IFN0cmluZykKICAgIGlzCiAgICAgICBmdW5jdGlvbiBHZXRfTWVudV9NYXJrIChNZW4gOiBNZW51KSByZXR1cm4gY2hhcnNfcHRyOwpAQCAtNTQ1LDEzOCArNDcyLDEyNSBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBwcm9jZWR1cmUgU2V0X0ZvcmVncm91bmQKLSAgICAgKE1lbiAgIDogaW4gTWVudTsKLSAgICAgIEZvcmUgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgQ29sb3IgOiBpbiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCisgICAgIChNZW4gICA6IE1lbnU7CisgICAgICBGb3JlICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgIENvbG9yIDogQ29sb3JfUGFpciA6PSBDb2xvcl9QYWlyJ0ZpcnN0KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9NZW51X0ZvcmUgKE1lbiAgOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciA6IENfQ2h0eXBlKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyIDogQXR0cmlidXRlZF9DaGFyYWN0ZXIpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfTWVudV9Gb3JlLCAic2V0X21lbnVfZm9yZSIpOwogCiAgICAgICBDaCA6IGNvbnN0YW50IEF0dHJpYnV0ZWRfQ2hhcmFjdGVyIDo9IChDaCAgICA9PiBDaGFyYWN0ZXInRmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA9PiBDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgID0+IEZvcmUpOwotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9NZW51X0ZvcmUgKE1lbiwgQXR0ckNoYXJfVG9fQ2h0eXBlIChDaCkpOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X01lbnVfRm9yZSAoTWVuLCBDaCkpOwogICAgZW5kIFNldF9Gb3JlZ3JvdW5kOwogCi0gICBwcm9jZWR1cmUgRm9yZWdyb3VuZCAoTWVuICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEZvcmVncm91bmQgKE1lbiAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmUgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpCiAgICBpcwotICAgICAgZnVuY3Rpb24gTWVudV9Gb3JlIChNZW4gOiBNZW51KSByZXR1cm4gQ19DaHR5cGU7CisgICAgICBmdW5jdGlvbiBNZW51X0ZvcmUgKE1lbiA6IE1lbnUpIHJldHVybiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1lbnVfRm9yZSwgIm1lbnVfZm9yZSIpOwogICAgYmVnaW4KLSAgICAgIEZvcmUgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChNZW51X0ZvcmUgKE1lbikpLkF0dHI7CisgICAgICBGb3JlIDo9IE1lbnVfRm9yZSAoTWVuKS5BdHRyOwogICAgZW5kIEZvcmVncm91bmQ7CiAKLSAgIHByb2NlZHVyZSBGb3JlZ3JvdW5kIChNZW4gICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEZvcmVncm91bmQgKE1lbiAgIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JlICA6IG91dCBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldDsKICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA6IG91dCBDb2xvcl9QYWlyKQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIE1lbnVfRm9yZSAoTWVuIDogTWVudSkgcmV0dXJuIENfQ2h0eXBlOworICAgICAgZnVuY3Rpb24gTWVudV9Gb3JlIChNZW4gOiBNZW51KSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNZW51X0ZvcmUsICJtZW51X2ZvcmUiKTsKICAgIGJlZ2luCi0gICAgICBGb3JlICA6PSBDaHR5cGVfVG9fQXR0ckNoYXIgKE1lbnVfRm9yZSAoTWVuKSkuQXR0cjsKLSAgICAgIENvbG9yIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoTWVudV9Gb3JlIChNZW4pKS5Db2xvcjsKKyAgICAgIEZvcmUgIDo9IE1lbnVfRm9yZSAoTWVuKS5BdHRyOworICAgICAgQ29sb3IgOj0gTWVudV9Gb3JlIChNZW4pLkNvbG9yOwogICAgZW5kIEZvcmVncm91bmQ7CiAKICAgIHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZAotICAgICAoTWVuICAgOiBpbiBNZW51OwotICAgICAgQmFjayAgOiBpbiBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCA6PSBOb3JtYWxfVmlkZW87Ci0gICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCkKKyAgICAgKE1lbiAgIDogTWVudTsKKyAgICAgIEJhY2sgIDogQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOworICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfQmFjayAoTWVuICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyIDogQ19DaHR5cGUpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9NZW51X0JhY2ssICJzZXRfbWVudV9iYWNrIik7CiAKICAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yID0+IENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgPT4gQmFjayk7Ci0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X01lbnVfQmFjayAoTWVuLCBBdHRyQ2hhcl9Ub19DaHR5cGUgKENoKSk7CiAgICBiZWdpbgotICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfTWVudV9CYWNrIChNZW4sIENoKSk7CiAgICBlbmQgU2V0X0JhY2tncm91bmQ7CiAKLSAgIHByb2NlZHVyZSBCYWNrZ3JvdW5kIChNZW4gIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoTWVuICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjayA6IG91dCBDaGFyYWN0ZXJfQXR0cmlidXRlX1NldCkKICAgIGlzCi0gICAgICBmdW5jdGlvbiBNZW51X0JhY2sgKE1lbiA6IE1lbnUpIHJldHVybiBDX0NodHlwZTsKKyAgICAgIGZ1bmN0aW9uIE1lbnVfQmFjayAoTWVuIDogTWVudSkgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTWVudV9CYWNrLCAibWVudV9iYWNrIik7CiAgICBiZWdpbgotICAgICAgQmFjayA6PSBDaHR5cGVfVG9fQXR0ckNoYXIgKE1lbnVfQmFjayAoTWVuKSkuQXR0cjsKKyAgICAgIEJhY2sgOj0gTWVudV9CYWNrIChNZW4pLkF0dHI7CiAgICBlbmQgQmFja2dyb3VuZDsKIAotICAgcHJvY2VkdXJlIEJhY2tncm91bmQgKE1lbiAgIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgQmFja2dyb3VuZCAoTWVuICAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgIDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIDogb3V0IENvbG9yX1BhaXIpCiAgICBpcwotICAgICAgZnVuY3Rpb24gTWVudV9CYWNrIChNZW4gOiBNZW51KSByZXR1cm4gQ19DaHR5cGU7CisgICAgICBmdW5jdGlvbiBNZW51X0JhY2sgKE1lbiA6IE1lbnUpIHJldHVybiBBdHRyaWJ1dGVkX0NoYXJhY3RlcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1lbnVfQmFjaywgIm1lbnVfYmFjayIpOwogICAgYmVnaW4KLSAgICAgIEJhY2sgIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoTWVudV9CYWNrIChNZW4pKS5BdHRyOwotICAgICAgQ29sb3IgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChNZW51X0JhY2sgKE1lbikpLkNvbG9yOworICAgICAgQmFjayAgOj0gTWVudV9CYWNrIChNZW4pLkF0dHI7CisgICAgICBDb2xvciA6PSBNZW51X0JhY2sgKE1lbikuQ29sb3I7CiAgICBlbmQgQmFja2dyb3VuZDsKIAotICAgcHJvY2VkdXJlIFNldF9HcmV5IChNZW4gICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgIEdyZXkgIDogaW4gQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQgOj0gTm9ybWFsX1ZpZGVvOwotICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA6IGluIENvbG9yX1BhaXIgOj0gQ29sb3JfUGFpcidGaXJzdCkKKyAgIHByb2NlZHVyZSBTZXRfR3JleSAoTWVuICAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICBHcmV5ICA6IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0IDo9IE5vcm1hbF9WaWRlbzsKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgOiBDb2xvcl9QYWlyIDo9IENvbG9yX1BhaXInRmlyc3QpCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfR3JleSAoTWVuICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyIDogQ19DaHR5cGUpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgOiBBdHRyaWJ1dGVkX0NoYXJhY3RlcikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9NZW51X0dyZXksICJzZXRfbWVudV9ncmV5Iik7CiAKICAgICAgIENoIDogY29uc3RhbnQgQXR0cmlidXRlZF9DaGFyYWN0ZXIgOj0gKENoICAgID0+IENoYXJhY3RlcidGaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yID0+IENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ciAgPT4gR3JleSk7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfTWVudV9HcmV5IChNZW4sIEF0dHJDaGFyX1RvX0NodHlwZSAoQ2gpKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9NZW51X0dyZXkgKE1lbiwgQ2gpKTsKICAgIGVuZCBTZXRfR3JleTsKIAotICAgcHJvY2VkdXJlIEdyZXkgKE1lbiAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBHcmV5IChNZW4gIDogTWVudTsKICAgICAgICAgICAgICAgICAgICBHcmV5IDogb3V0IENoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0KQogICAgaXMKLSAgICAgIGZ1bmN0aW9uIE1lbnVfR3JleSAoTWVuIDogTWVudSkgcmV0dXJuIENfQ2h0eXBlOworICAgICAgZnVuY3Rpb24gTWVudV9HcmV5IChNZW4gOiBNZW51KSByZXR1cm4gQXR0cmlidXRlZF9DaGFyYWN0ZXI7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBNZW51X0dyZXksICJtZW51X2dyZXkiKTsKICAgIGJlZ2luCi0gICAgICBHcmV5IDo9IENodHlwZV9Ub19BdHRyQ2hhciAoTWVudV9HcmV5IChNZW4pKS5BdHRyOworICAgICAgR3JleSA6PSBNZW51X0dyZXkgKE1lbikuQXR0cjsKICAgIGVuZCBHcmV5OwogCi0gICBwcm9jZWR1cmUgR3JleSAoTWVuICA6IGluICBNZW51OworICAgcHJvY2VkdXJlIEdyZXkgKE1lbiAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgIEdyZXkgOiBvdXQgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ7CiAgICAgICAgICAgICAgICAgICAgQ29sb3IgOiBvdXQgQ29sb3JfUGFpcikKICAgIGlzCi0gICAgICBmdW5jdGlvbiBNZW51X0dyZXkgKE1lbiA6IE1lbnUpIHJldHVybiBDX0NodHlwZTsKKyAgICAgIGZ1bmN0aW9uIE1lbnVfR3JleSAoTWVuIDogTWVudSkgcmV0dXJuIEF0dHJpYnV0ZWRfQ2hhcmFjdGVyOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgTWVudV9HcmV5LCAibWVudV9ncmV5Iik7CiAgICBiZWdpbgotICAgICAgR3JleSAgOj0gQ2h0eXBlX1RvX0F0dHJDaGFyIChNZW51X0dyZXkgKE1lbikpLkF0dHI7Ci0gICAgICBDb2xvciA6PSBDaHR5cGVfVG9fQXR0ckNoYXIgKE1lbnVfR3JleSAoTWVuKSkuQ29sb3I7CisgICAgICBHcmV5ICA6PSBNZW51X0dyZXkgKE1lbikuQXR0cjsKKyAgICAgIENvbG9yIDo9IE1lbnVfR3JleSAoTWVuKS5Db2xvcjsKICAgIGVuZCBHcmV5OwogCi0gICBwcm9jZWR1cmUgU2V0X1BhZF9DaGFyYWN0ZXIgKE1lbiA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZCA6IGluIENoYXJhY3RlciA6PSBTcGFjZSkKKyAgIHByb2NlZHVyZSBTZXRfUGFkX0NoYXJhY3RlciAoTWVuIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFkIDogQ2hhcmFjdGVyIDo9IFNwYWNlKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9NZW51X1BhZCAoTWVuIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2ggIDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2ggIDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfTWVudV9QYWQsICJzZXRfbWVudV9wYWQiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9NZW51X1BhZCAoTWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENoYXJhY3RlcidQb3MgKFBhZCkpKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X01lbnVfUGFkIChNZW4sIENfSW50IChDaGFyYWN0ZXInUG9zIChQYWQpKSkpOwogICAgZW5kIFNldF9QYWRfQ2hhcmFjdGVyOwogCi0gICBwcm9jZWR1cmUgUGFkX0NoYXJhY3RlciAoTWVuIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgUGFkX0NoYXJhY3RlciAoTWVuIDogTWVudTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWQgOiBvdXQgQ2hhcmFjdGVyKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIE1lbnVfUGFkIChNZW4gOiBNZW51KSByZXR1cm4gQ19JbnQ7CkBAIC02ODUsNDggKzU5OSw0MSBAQAogICAgICAgUGFkIDo9IENoYXJhY3RlcidWYWwgKE1lbnVfUGFkIChNZW4pKTsKICAgIGVuZCBQYWRfQ2hhcmFjdGVyOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9TcGFjaW5nIChNZW4gICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyIDogaW4gQ29sdW1uX1Bvc2l0aW9uIDo9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFJvdyAgIDogaW4gTGluZV9Qb3NpdGlvbiAgIDo9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIENvbCAgIDogaW4gQ29sdW1uX1Bvc2l0aW9uIDo9IDApCisgICBwcm9jZWR1cmUgU2V0X1NwYWNpbmcgKE1lbiAgIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3IgOiBDb2x1bW5fUG9zaXRpb24gOj0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUm93ICAgOiBMaW5lX1Bvc2l0aW9uICAgOj0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBDb2x1bW5fUG9zaXRpb24gOj0gMCkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfU3BhY2luZyAoTWVuICAgICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRCwgUiwgQyA6IENfSW50KSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCwgUiwgQyA6IENfSW50KSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1NwYWNpbmcsICJzZXRfbWVudV9zcGFjaW5nIik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfU3BhY2luZyAoTWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoRGVzY3IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoUm93KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENvbCkpOwogICAgYmVnaW4KLSAgICAgIGlmIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfU3BhY2luZyAoTWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfSW50IChEZXNjciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKFJvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENvbCkpKTsKICAgIGVuZCBTZXRfU3BhY2luZzsKIAotICAgcHJvY2VkdXJlIFNwYWNpbmcgKE1lbiAgIDogaW4gTWVudTsKKyAgIHByb2NlZHVyZSBTcGFjaW5nIChNZW4gICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgRGVzY3IgOiBvdXQgQ29sdW1uX1Bvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgIFJvdyAgIDogb3V0IExpbmVfUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgQ29sICAgOiBvdXQgQ29sdW1uX1Bvc2l0aW9uKQogICAgaXMKICAgICAgIHR5cGUgQ19JbnRfQWNjZXNzIGlzIGFjY2VzcyBhbGwgQ19JbnQ7CiAgICAgICBmdW5jdGlvbiBHZXRfU3BhY2luZyAoTWVuICAgICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRCwgUiwgQyA6IENfSW50X0FjY2VzcykgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQsIFIsIEMgOiBDX0ludF9BY2Nlc3MpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfU3BhY2luZywgIm1lbnVfc3BhY2luZyIpOwogCiAgICAgICBELCBSLCBDIDogYWxpYXNlZCBDX0ludDsKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBHZXRfU3BhY2luZyAoTWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEJ0FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUidBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMnQWNjZXNzKTsKICAgIGJlZ2luCi0gICAgICBpZiBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZWxzZQotICAgICAgICAgRGVzY3IgOj0gQ29sdW1uX1Bvc2l0aW9uIChEKTsKLSAgICAgICAgIFJvdyAgIDo9IExpbmVfUG9zaXRpb24gKFIpOwotICAgICAgICAgQ29sICAgOj0gQ29sdW1uX1Bvc2l0aW9uIChDKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKEdldF9TcGFjaW5nIChNZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCdBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUidBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQydBY2Nlc3MpKTsKKyAgICAgIERlc2NyIDo9IENvbHVtbl9Qb3NpdGlvbiAoRCk7CisgICAgICBSb3cgICA6PSBMaW5lX1Bvc2l0aW9uIChSKTsKKyAgICAgIENvbCAgIDo9IENvbHVtbl9Qb3NpdGlvbiAoQyk7CiAgICBlbmQgU3BhY2luZzsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGZ1bmN0aW9uIFNldF9QYXR0ZXJuIChNZW4gIDogTWVudTsKQEAgLTczNCw3ICs2NDEsNyBAQAogICAgaXMKICAgICAgIHR5cGUgQ2hhcl9QdHIgaXMgYWNjZXNzIGFsbCBJbnRlcmZhY2VzLkMuY2hhcjsKICAgICAgIGZ1bmN0aW9uIFNldF9QYXR0ZXJuIChNZW4gICAgIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuIDogQ2hhcl9QdHIpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuIDogQ2hhcl9QdHIpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfUGF0dGVybiwgInNldF9tZW51X3BhdHRlcm4iKTsKIAogICAgICAgUyAgIDogY2hhcl9hcnJheSAoMCAuLiBUZXh0J0xlbmd0aCk7CkBAIC03NDQsMTUgKzY1MSwxNSBAQAogICAgICAgVG9fQyAoVGV4dCwgUywgTCk7CiAgICAgICBSZXMgOj0gU2V0X1BhdHRlcm4gKE1lbiwgUyAoUydGaXJzdCknQWNjZXNzKTsKICAgICAgIGNhc2UgUmVzIGlzCi0gICAgICAgICB3aGVuIEVfTm9fTWF0Y2ggPT4gcmV0dXJuIEZhbHNlOwotICAgICAgICAgd2hlbiBFX09rICAgICAgID0+IHJldHVybiBUcnVlOworICAgICAgICAgd2hlbiBFX05vX01hdGNoID0+CisgICAgICAgICAgICByZXR1cm4gRmFsc2U7CiAgICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBUcnVlOwogICAgICAgZW5kIGNhc2U7CiAgICBlbmQgU2V0X1BhdHRlcm47CiAKLSAgIHByb2NlZHVyZSBQYXR0ZXJuIChNZW4gIDogaW4gIE1lbnU7CisgICBwcm9jZWR1cmUgUGF0dGVybiAoTWVuICA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA6IG91dCBTdHJpbmcpCiAgICBpcwogICAgICAgZnVuY3Rpb24gR2V0X1BhdHRlcm4gKE1lbiA6IE1lbnUpIHJldHVybiBjaGFyc19wdHI7CkBAIC03NjEsOTggKzY2OCw4MCBAQAogICAgICAgRmlsbF9TdHJpbmcgKEdldF9QYXR0ZXJuIChNZW4pLCBUZXh0KTsKICAgIGVuZCBQYXR0ZXJuOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9Gb3JtYXQgKE1lbiAgICAgOiBpbiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVzICAgOiBpbiBMaW5lX0NvdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnMgOiBpbiBDb2x1bW5fQ291bnQpCisgICBwcm9jZWR1cmUgU2V0X0Zvcm1hdCAoTWVuICAgICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IExpbmVfQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IENvbHVtbl9Db3VudCkKICAgIGlzCiAgICAgICBmdW5jdGlvbiBTZXRfTWVudV9GbXQgKE1lbiA6IE1lbnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbiA6IENfSW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2wgOiBDX0ludCkgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2wgOiBDX0ludCkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9NZW51X0ZtdCwgInNldF9tZW51X2Zvcm1hdCIpOwogCi0gICAgICBSZXMgOiBjb25zdGFudCBFdGlfRXJyb3IgOj0gU2V0X01lbnVfRm10IChNZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoTGluZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ19JbnQgKENvbHVtbnMpKTsKICAgIGJlZ2luCi0gICAgICBpZiAgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9NZW51X0ZtdCAoTWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoTGluZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX0ludCAoQ29sdW1ucykpKTsKKwogICAgZW5kIFNldF9Gb3JtYXQ7CiAKLSAgIHByb2NlZHVyZSBGb3JtYXQgKE1lbiAgICAgOiBpbiAgTWVudTsKKyAgIHByb2NlZHVyZSBGb3JtYXQgKE1lbiAgICAgOiBNZW51OwogICAgICAgICAgICAgICAgICAgICAgTGluZXMgICA6IG91dCBMaW5lX0NvdW50OwogICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IG91dCBDb2x1bW5fQ291bnQpCiAgICBpcwogICAgICAgdHlwZSBDX0ludF9BY2Nlc3MgaXMgYWNjZXNzIGFsbCBDX0ludDsKICAgICAgIGZ1bmN0aW9uIE1lbnVfRm10IChNZW4gIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBZLCBYIDogQ19JbnRfQWNjZXNzKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgWSwgWCA6IENfSW50X0FjY2VzcykgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1lbnVfRm10LCAibWVudV9mb3JtYXQiKTsKIAogICAgICAgTCwgQyA6IGFsaWFzZWQgQ19JbnQ7Ci0gICAgICBSZXMgIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IE1lbnVfRm10IChNZW4sIEwnQWNjZXNzLCBDJ0FjY2Vzcyk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIExpbmVzICAgOj0gTGluZV9Db3VudCAoTCk7Ci0gICAgICAgICBDb2x1bW5zIDo9IENvbHVtbl9Db3VudCAoQyk7Ci0gICAgICBlbmQgaWY7CisgICAgICBFdGlfRXhjZXB0aW9uIChNZW51X0ZtdCAoTWVuLCBMJ0FjY2VzcywgQydBY2Nlc3MpKTsKKyAgICAgIExpbmVzICAgOj0gTGluZV9Db3VudCAoTCk7CisgICAgICBDb2x1bW5zIDo9IENvbHVtbl9Db3VudCAoQyk7CiAgICBlbmQgRm9ybWF0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIFNldF9JdGVtX0luaXRfSG9vayAoTWVuICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogaW4gTWVudV9Ib29rX0Z1bmN0aW9uKQorICAgcHJvY2VkdXJlIFNldF9JdGVtX0luaXRfSG9vayAoTWVuICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9JdGVtX0luaXQgKE1lbiAgOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IE1lbnVfSG9va19GdW5jdGlvbikgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IE1lbnVfSG9va19GdW5jdGlvbikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9JdGVtX0luaXQsICJzZXRfaXRlbV9pbml0Iik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfSXRlbV9Jbml0IChNZW4sIFByb2MpOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X0l0ZW1fSW5pdCAoTWVuLCBQcm9jKSk7CiAgICBlbmQgU2V0X0l0ZW1fSW5pdF9Ib29rOwogCi0gICBwcm9jZWR1cmUgU2V0X0l0ZW1fVGVybV9Ib29rIChNZW4gIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBpbiBNZW51X0hvb2tfRnVuY3Rpb24pCisgICBwcm9jZWR1cmUgU2V0X0l0ZW1fVGVybV9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X0l0ZW1fVGVybSAoTWVuICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0l0ZW1fVGVybSwgInNldF9pdGVtX3Rlcm0iKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9JdGVtX1Rlcm0gKE1lbiwgUHJvYyk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9JdGVtX1Rlcm0gKE1lbiwgUHJvYykpOwogICAgZW5kIFNldF9JdGVtX1Rlcm1fSG9vazsKIAotICAgcHJvY2VkdXJlIFNldF9NZW51X0luaXRfSG9vayAoTWVuICA6IGluIE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogaW4gTWVudV9Ib29rX0Z1bmN0aW9uKQorICAgcHJvY2VkdXJlIFNldF9NZW51X0luaXRfSG9vayAoTWVuICA6IE1lbnU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9NZW51X0luaXQgKE1lbiAgOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IE1lbnVfSG9va19GdW5jdGlvbikgcmV0dXJuIENfSW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyA6IE1lbnVfSG9va19GdW5jdGlvbikgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9NZW51X0luaXQsICJzZXRfbWVudV9pbml0Iik7CiAKLSAgICAgIFJlcyA6IGNvbnN0YW50IEV0aV9FcnJvciA6PSBTZXRfTWVudV9Jbml0IChNZW4sIFByb2MpOwogICAgYmVnaW4KLSAgICAgIGlmICBSZXMgLz0gRV9PayB0aGVuCi0gICAgICAgICBFdGlfRXhjZXB0aW9uIChSZXMpOwotICAgICAgZW5kIGlmOworICAgICAgRXRpX0V4Y2VwdGlvbiAoU2V0X01lbnVfSW5pdCAoTWVuLCBQcm9jKSk7CiAgICBlbmQgU2V0X01lbnVfSW5pdF9Ib29rOwogCi0gICBwcm9jZWR1cmUgU2V0X01lbnVfVGVybV9Ib29rIChNZW4gIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBpbiBNZW51X0hvb2tfRnVuY3Rpb24pCisgICBwcm9jZWR1cmUgU2V0X01lbnVfVGVybV9Ib29rIChNZW4gIDogTWVudTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2MgOiBNZW51X0hvb2tfRnVuY3Rpb24pCiAgICBpcwogICAgICAgZnVuY3Rpb24gU2V0X01lbnVfVGVybSAoTWVuICA6IE1lbnU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jIDogTWVudV9Ib29rX0Z1bmN0aW9uKSByZXR1cm4gRXRpX0Vycm9yOwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X01lbnVfVGVybSwgInNldF9tZW51X3Rlcm0iKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IFNldF9NZW51X1Rlcm0gKE1lbiwgUHJvYyk7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKFNldF9NZW51X1Rlcm0gKE1lbiwgUHJvYykpOwogICAgZW5kIFNldF9NZW51X1Rlcm1fSG9vazsKIAogICAgZnVuY3Rpb24gR2V0X0l0ZW1fSW5pdF9Ib29rIChNZW4gOiBNZW51KSByZXR1cm4gTWVudV9Ib29rX0Z1bmN0aW9uCkBAIC04ODcsMjMgKzc3NiwxOSBAQAogICAgICAgcmV0dXJuIE1lbnVfVGVybSAoTWVuKTsKICAgIGVuZCBHZXRfTWVudV9UZXJtX0hvb2s7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgUmVkZWZpbmUgKE1lbiAgIDogaW4gTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgSXRlbXMgOiBpbiBJdGVtX0FycmF5X0FjY2VzcykKKyAgIHByb2NlZHVyZSBSZWRlZmluZSAoTWVuICAgOiBNZW51OworICAgICAgICAgICAgICAgICAgICAgICBJdGVtcyA6IEl0ZW1fQXJyYXlfQWNjZXNzKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9JdGVtcyAoTWVuICAgOiBNZW51OwotICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtcyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gQ19JbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1zIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSXRlbXMsICJzZXRfbWVudV9pdGVtcyIpOwogCi0gICAgICBSZXMgOiBFdGlfRXJyb3I7CiAgICBiZWdpbgotICAgICAgcHJhZ21hIEFzc2VydCAoSXRlbXMgKEl0ZW1zJ0xhc3QpID0gTnVsbF9JdGVtKTsKLSAgICAgIGlmIEl0ZW1zIChJdGVtcydMYXN0KSAvPSBOdWxsX0l0ZW0gdGhlbgorICAgICAgcHJhZ21hIEFzc2VydCAoSXRlbXMuYWxsIChJdGVtcydMYXN0KSA9IE51bGxfSXRlbSk7CisgICAgICBpZiBJdGVtcy5hbGwgKEl0ZW1zJ0xhc3QpIC89IE51bGxfSXRlbSB0aGVuCiAgICAgICAgICByYWlzZSBNZW51X0V4Y2VwdGlvbjsKICAgICAgIGVsc2UKLSAgICAgICAgIFJlcyA6PSBTZXRfSXRlbXMgKE1lbiwgSXRlbXMuYWxsJ0FkZHJlc3MpOwotICAgICAgICAgaWYgIFJlcyAvPSBFX09rIHRoZW4KLSAgICAgICAgICAgIEV0aV9FeGNlcHRpb24gKFJlcyk7Ci0gICAgICAgICBlbmQgaWY7CisgICAgICAgICBFdGlfRXhjZXB0aW9uIChTZXRfSXRlbXMgKE1lbiwgSXRlbXMuYWxsJ0FkZHJlc3MpKTsKICAgICAgIGVuZCBpZjsKICAgIGVuZCBSZWRlZmluZTsKIApAQCAtOTQxLDggKzgyNiw4IEBACiAKICAgICAgIE0gICA6IE1lbnU7CiAgICBiZWdpbgotICAgICAgcHJhZ21hIEFzc2VydCAoSXRlbXMgKEl0ZW1zJ0xhc3QpID0gTnVsbF9JdGVtKTsKLSAgICAgIGlmIEl0ZW1zIChJdGVtcydMYXN0KSAvPSBOdWxsX0l0ZW0gdGhlbgorICAgICAgcHJhZ21hIEFzc2VydCAoSXRlbXMuYWxsIChJdGVtcydMYXN0KSA9IE51bGxfSXRlbSk7CisgICAgICBpZiBJdGVtcy5hbGwgKEl0ZW1zJ0xhc3QpIC89IE51bGxfSXRlbSB0aGVuCiAgICAgICAgICByYWlzZSBNZW51X0V4Y2VwdGlvbjsKICAgICAgIGVsc2UKICAgICAgICAgIE0gOj0gTmV3bWVudSAoSXRlbXMuYWxsJ0FkZHJlc3MpOwpAQCAtOTU1LDE0ICs4NDAsMTEgQEAKIAogICAgcHJvY2VkdXJlIERlbGV0ZSAoTWVuIDogaW4gb3V0IE1lbnUpCiAgICBpcwotICAgICAgZnVuY3Rpb24gRnJlZSAoTWVuIDogTWVudSkgcmV0dXJuIENfSW50OworICAgICAgZnVuY3Rpb24gRnJlZSAoTWVuIDogTWVudSkgcmV0dXJuIEV0aV9FcnJvcjsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEZyZWUsICJmcmVlX21lbnUiKTsKIAotICAgICAgUmVzIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IEZyZWUgKE1lbik7CiAgICBiZWdpbgotICAgICAgaWYgUmVzIC89IEVfT2sgdGhlbgotICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUmVzKTsKLSAgICAgIGVuZCBpZjsKKyAgICAgIEV0aV9FeGNlcHRpb24gKEZyZWUgKE1lbikpOwogICAgICAgTWVuIDo9IE51bGxfTWVudTsKICAgIGVuZCBEZWxldGU7CiAKQEAgLTk3MSwzNCArODUzLDM0IEBACiAgICAgICAgICAgICAgICAgICAgIEtleSA6IEtleV9Db2RlKSByZXR1cm4gRHJpdmVyX1Jlc3VsdAogICAgaXMKICAgICAgIGZ1bmN0aW9uIERyaXZlciAoTWVuIDogTWVudTsKLSAgICAgICAgICAgICAgICAgICAgICAgS2V5IDogQ19JbnQpIHJldHVybiBDX0ludDsKKyAgICAgICAgICAgICAgICAgICAgICAgS2V5IDogQ19JbnQpIHJldHVybiBFdGlfRXJyb3I7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBEcml2ZXIsICJtZW51X2RyaXZlciIpOwogCiAgICAgICBSIDogY29uc3RhbnQgRXRpX0Vycm9yIDo9IERyaXZlciAoTWVuLCBDX0ludCAoS2V5KSk7CiAgICBiZWdpbgotICAgICAgaWYgUiAvPSBFX09rIHRoZW4KLSAgICAgICAgIGNhc2UgUiBpcwotICAgICAgICAgICAgd2hlbiBFX1Vua25vd25fQ29tbWFuZCAgPT4gcmV0dXJuIFVua25vd25fUmVxdWVzdDsKLSAgICAgICAgICAgIHdoZW4gRV9Ob19NYXRjaCAgICAgICAgID0+IHJldHVybiBOb19NYXRjaDsKLSAgICAgICAgICAgIHdoZW4gRV9SZXF1ZXN0X0RlbmllZCB8Ci0gICAgICAgICAgICAgICAgIEVfTm90X1NlbGVjdGFibGUgICA9PiByZXR1cm4gUmVxdWVzdF9EZW5pZWQ7Ci0gICAgICAgICAgICB3aGVuIG90aGVycyA9PgotICAgICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUik7Ci0gICAgICAgICBlbmQgY2FzZTsKLSAgICAgIGVuZCBpZjsKLSAgICAgIHJldHVybiBNZW51X09rOworICAgICAgY2FzZSBSIGlzCisgICAgICAgICB3aGVuIEVfVW5rbm93bl9Db21tYW5kID0+CisgICAgICAgICAgICByZXR1cm4gVW5rbm93bl9SZXF1ZXN0OworICAgICAgICAgd2hlbiBFX05vX01hdGNoID0+CisgICAgICAgICAgICByZXR1cm4gTm9fTWF0Y2g7CisgICAgICAgICB3aGVuIEVfUmVxdWVzdF9EZW5pZWQgfCBFX05vdF9TZWxlY3RhYmxlID0+CisgICAgICAgICAgICByZXR1cm4gUmVxdWVzdF9EZW5pZWQ7CisgICAgICAgICB3aGVuIG90aGVycyA9PgorICAgICAgICAgICAgRXRpX0V4Y2VwdGlvbiAoUik7CisgICAgICAgICAgICByZXR1cm4gTWVudV9PazsKKyAgICAgIGVuZCBjYXNlOwogICAgZW5kIERyaXZlcjsKIAogICAgcHJvY2VkdXJlIEZyZWUgKElBICAgICAgICAgOiBpbiBvdXQgSXRlbV9BcnJheV9BY2Nlc3M7Ci0gICAgICAgICAgICAgICAgICAgRnJlZV9JdGVtcyA6IGluIEJvb2xlYW4gOj0gRmFsc2UpCisgICAgICAgICAgICAgICAgICAgRnJlZV9JdGVtcyA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICBpcwogICAgICAgcHJvY2VkdXJlIFJlbGVhc2UgaXMgbmV3IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uCiAgICAgICAgIChJdGVtX0FycmF5LCBJdGVtX0FycmF5X0FjY2Vzcyk7CiAgICBiZWdpbgogICAgICAgaWYgSUEgLz0gbnVsbCBhbmQgdGhlbiBGcmVlX0l0ZW1zIHRoZW4KICAgICAgICAgIGZvciBJIGluIElBJ0ZpcnN0IC4uIChJQSdMYXN0IC0gMSkgbG9vcAotICAgICAgICAgICAgaWYgSUEgKEkpIC89IE51bGxfSXRlbSB0aGVuCi0gICAgICAgICAgICAgICBEZWxldGUgKElBIChJKSk7CisgICAgICAgICAgICBpZiBJQS5hbGwgKEkpIC89IE51bGxfSXRlbSB0aGVuCisgICAgICAgICAgICAgICBEZWxldGUgKElBLmFsbCAoSSkpOwogICAgICAgICAgICAgZW5kIGlmOwogICAgICAgICAgZW5kIGxvb3A7CiAgICAgICBlbmQgaWY7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZGIKaW5kZXggZmE0YzY5ZC4uN2E2MDc1YyAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2UuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjIyICQKLS0tICAkRGF0ZTogMjAwOC8wNy8yNiAxODo1MToxMSAkCistLSAgJFJldmlzaW9uOiAxLjI1ICQKKy0tICAkRGF0ZTogMjAxNC8wOS8xMyAxOToxMDoxOCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsKQEAgLTUwLDcgKzUwLDcgQEAKICAgIGZ1bmN0aW9uIEhhc19Nb3VzZSByZXR1cm4gQm9vbGVhbgogICAgaXMKICAgICAgIGZ1bmN0aW9uIE1vdXNlX0F2YWlsIHJldHVybiBDX0ludDsKLSAgICAgIHByYWdtYSBJbXBvcnQgKEMsIE1vdXNlX0F2YWlsLCAiX25jX2hhc19tb3VzZSIpOworICAgICAgcHJhZ21hIEltcG9ydCAoQywgTW91c2VfQXZhaWwsICJoYXNfbW91c2UiKTsKICAgIGJlZ2luCiAgICAgICBpZiBIYXNfS2V5IChLZXlfTW91c2UpIG9yIGVsc2UgTW91c2VfQXZhaWwgLz0gMCB0aGVuCiAgICAgICAgICByZXR1cm4gVHJ1ZTsKQEAgLTc0LDggKzc0LDggQEAKICAgICAgIHJldHVybiBFdmVudDsKICAgIGVuZCBHZXRfTW91c2U7CiAKLSAgIHByb2NlZHVyZSBSZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50IChCdXR0b24gOiBpbiBNb3VzZV9CdXR0b247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgIDogaW4gQnV0dG9uX1N0YXRlOworICAgcHJvY2VkdXJlIFJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQgKEJ1dHRvbiA6IE1vdXNlX0J1dHRvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgOiBCdXR0b25fU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzayAgIDogaW4gb3V0IEV2ZW50X01hc2spCiAgICBpcwogICAgICAgQnV0dG9uX05yIDogY29uc3RhbnQgTmF0dXJhbCA6PSBNb3VzZV9CdXR0b24nUG9zIChCdXR0b24pOwpAQCAtOTIsOCArOTIsOCBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ7CiAKLSAgIHByb2NlZHVyZSBSZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50cyAoQnV0dG9uIDogaW4gTW91c2VfQnV0dG9uOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgOiBpbiBCdXR0b25fU3RhdGVzOworICAgcHJvY2VkdXJlIFJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnRzIChCdXR0b24gOiBNb3VzZV9CdXR0b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICA6IEJ1dHRvbl9TdGF0ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc2sgICA6IGluIG91dCBFdmVudF9NYXNrKQogICAgaXMKICAgIGJlZ2luCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgIHJldHVybiBPbGQ7CiAgICBlbmQgU3RhcnRfTW91c2U7CiAKLSAgIHByb2NlZHVyZSBFbmRfTW91c2UgKE1hc2sgOiBpbiBFdmVudF9NYXNrIDo9IE5vX0V2ZW50cykKKyAgIHByb2NlZHVyZSBFbmRfTW91c2UgKE1hc2sgOiBFdmVudF9NYXNrIDo9IE5vX0V2ZW50cykKICAgIGlzCiAgICBiZWdpbgogICAgICAgaWYgTWFzayAvPSBOb19FdmVudHMgdGhlbgpAQCAtMTI4LDExICsxMjgsMTEgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBFbmRfTW91c2U7CiAKLSAgIHByb2NlZHVyZSBEaXNwYXRjaF9FdmVudCAoTWFzayAgIDogaW4gIEV2ZW50X01hc2s7CisgICBwcm9jZWR1cmUgRGlzcGF0Y2hfRXZlbnQgKE1hc2sgICA6IEV2ZW50X01hc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvbiA6IG91dCBNb3VzZV9CdXR0b247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICA6IG91dCBCdXR0b25fU3RhdGUpOwogCi0gICBwcm9jZWR1cmUgRGlzcGF0Y2hfRXZlbnQgKE1hc2sgICA6IGluICBFdmVudF9NYXNrOworICAgcHJvY2VkdXJlIERpc3BhdGNoX0V2ZW50IChNYXNrICAgOiBFdmVudF9NYXNrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b24gOiBvdXQgTW91c2VfQnV0dG9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgOiBvdXQgQnV0dG9uX1N0YXRlKSBpcwogICAgICAgTCA6IEV2ZW50X01hc2s7CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBEaXNwYXRjaF9FdmVudDsKIAotICAgcHJvY2VkdXJlIEdldF9FdmVudCAoRXZlbnQgIDogaW4gIE1vdXNlX0V2ZW50OworICAgcHJvY2VkdXJlIEdldF9FdmVudCAoRXZlbnQgIDogTW91c2VfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBZICAgICAgOiBvdXQgTGluZV9Qb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFggICAgICA6IG91dCBDb2x1bW5fUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b24gOiBvdXQgTW91c2VfQnV0dG9uOwpAQCAtMTgxLDcgKzE4MSw3IEBACiAgICAgICBEaXNwYXRjaF9FdmVudCAoTWFzaywgQnV0dG9uLCBTdGF0ZSk7CiAgICBlbmQgR2V0X0V2ZW50OwogCi0gICBwcm9jZWR1cmUgVW5nZXRfTW91c2UgKEV2ZW50IDogaW4gTW91c2VfRXZlbnQpCisgICBwcm9jZWR1cmUgVW5nZXRfTW91c2UgKEV2ZW50IDogTW91c2VfRXZlbnQpCiAgICBpcwogICAgICAgZnVuY3Rpb24gVW5nZXRtb3VzZSAoRXYgOiBNb3VzZV9FdmVudCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgVW5nZXRtb3VzZSwgInVuZ2V0bW91c2UiKTsKQEAgLTE5OSw3ICsxOTksOCBAQAogICAgICAgcHJhZ21hIEltcG9ydCAoQywgV2VuY2xvc2UsICJ3ZW5jbG9zZSIpOwogICAgYmVnaW4KICAgICAgIGlmIFdlbmNsb3NlIChXaW4sIENfSW50IChFdmVudC5ZKSwgQ19JbnQgKEV2ZW50LlgpKQotICAgICAgICA9IEN1cnNlc19Cb29sX0ZhbHNlIHRoZW4KKyAgICAgICAgPSBDdXJzZXNfQm9vbF9GYWxzZQorICAgICAgdGhlbgogICAgICAgICAgcmV0dXJuIEZhbHNlOwogICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIFRydWU7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhLmFkYiBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGEuYWRiCmluZGV4IDIzMWVmYWUuLmQ4NTVmNTQgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGEuYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGEuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggSW50ZXJmYWNlcy5DOwpAQCAtNDgsOCArNDgsOCBAQAogCiAgICB1c2UgdHlwZSBJbnRlcmZhY2VzLkMuaW50OwogCi0gICBwcm9jZWR1cmUgU2V0X1VzZXJfRGF0YSAoUGFuICA6IGluIFBhbmVsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBVc2VyX0FjY2VzcykKKyAgIHByb2NlZHVyZSBTZXRfVXNlcl9EYXRhIChQYW4gIDogUGFuZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFVzZXJfQWNjZXNzKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNldF9QYW5lbF9Vc2VycHRyIChQYW4gIDogUGFuZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkciA6IFVzZXJfQWNjZXNzKSByZXR1cm4gQ19JbnQ7CkBAIC02MCw3ICs2MCw3IEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgU2V0X1VzZXJfRGF0YTsKIAotICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YSAoUGFuICA6IGluICBQYW5lbCkgcmV0dXJuIFVzZXJfQWNjZXNzCisgICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhIChQYW4gIDogUGFuZWwpIHJldHVybiBVc2VyX0FjY2VzcwogICAgaXMKICAgICAgIGZ1bmN0aW9uIFBhbmVsX1VzZXJwdHIgKFBhbiA6IFBhbmVsKSByZXR1cm4gVXNlcl9BY2Nlc3M7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBQYW5lbF9Vc2VycHRyLCAicGFuZWxfdXNlcnB0ciIpOwpAQCAtNjgsNyArNjgsNyBAQAogICAgICAgcmV0dXJuIFBhbmVsX1VzZXJwdHIgKFBhbik7CiAgICBlbmQgR2V0X1VzZXJfRGF0YTsKIAotICAgcHJvY2VkdXJlIEdldF9Vc2VyX0RhdGEgKFBhbiAgOiBpbiAgUGFuZWw7CisgICBwcm9jZWR1cmUgR2V0X1VzZXJfRGF0YSAoUGFuICA6IFBhbmVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBvdXQgVXNlcl9BY2Nlc3MpCiAgICBpcwogICAgYmVnaW4KZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRiCmluZGV4IGQ3ZTE4ZmEuLjg0ZTI5ZTUgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEzICQKLS0tICAkRGF0ZTogMjAwNC8wOC8yMSAyMTozNzowMCAkCistLSAgJFJldmlzaW9uOiAxLjE0ICQKKy0tICAkRGF0ZTogMjAwOS8xMi8yNiAxNzozODo1OCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkF1eDsKQEAgLTYwLDcgKzYwLDcgQEAKICAgICAgIHJldHVybiBQYW47CiAgICBlbmQgQ3JlYXRlOwogCi0gICBwcm9jZWR1cmUgQm90dG9tIChQYW4gOiBpbiBQYW5lbCkKKyAgIHByb2NlZHVyZSBCb3R0b20gKFBhbiA6IFBhbmVsKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIEJvdHRvbXBhbmVsIChQYW4gOiBQYW5lbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgQm90dG9tcGFuZWwsICJib3R0b21fcGFuZWwiKTsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBCb3R0b207CiAKLSAgIHByb2NlZHVyZSBUb3AgKFBhbiA6IGluIFBhbmVsKQorICAgcHJvY2VkdXJlIFRvcCAoUGFuIDogUGFuZWwpCiAgICBpcwogICAgICAgZnVuY3Rpb24gVG9wcGFuZWwgKFBhbiA6IFBhbmVsKSByZXR1cm4gQ19JbnQ7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBUb3BwYW5lbCwgInRvcF9wYW5lbCIpOwpAQCAtODAsNyArODAsNyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFRvcDsKIAotICAgcHJvY2VkdXJlIFNob3cgKFBhbiA6IGluIFBhbmVsKQorICAgcHJvY2VkdXJlIFNob3cgKFBhbiA6IFBhbmVsKQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFNob3dwYW5lbCAoUGFuIDogUGFuZWwpIHJldHVybiBDX0ludDsKICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIFNob3dwYW5lbCwgInNob3dfcGFuZWwiKTsKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgIGVuZCBpZjsKICAgIGVuZCBTaG93OwogCi0gICBwcm9jZWR1cmUgSGlkZSAoUGFuIDogaW4gUGFuZWwpCisgICBwcm9jZWR1cmUgSGlkZSAoUGFuIDogUGFuZWwpCiAgICBpcwogICAgICAgZnVuY3Rpb24gSGlkZXBhbmVsIChQYW4gOiBQYW5lbCkgcmV0dXJuIENfSW50OwogICAgICAgcHJhZ21hIEltcG9ydCAoQywgSGlkZXBhbmVsLCAiaGlkZV9wYW5lbCIpOwpAQCAtMTEzLDggKzExMyw4IEBACiAgICAgICByZXR1cm4gV2luOwogICAgZW5kIEdldF9XaW5kb3c7CiAKLSAgIHByb2NlZHVyZSBSZXBsYWNlIChQYW4gOiBpbiBQYW5lbDsKLSAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBpbiBXaW5kb3cpCisgICBwcm9jZWR1cmUgUmVwbGFjZSAoUGFuIDogUGFuZWw7CisgICAgICAgICAgICAgICAgICAgICAgV2luIDogV2luZG93KQogICAgaXMKICAgICAgIGZ1bmN0aW9uIFJlcGxhY2VfUGFuIChQYW4gOiBQYW5lbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4gOiBXaW5kb3cpIHJldHVybiBDX0ludDsKQEAgLTEyNSw5ICsxMjUsOSBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFJlcGxhY2U7CiAKLSAgIHByb2NlZHVyZSBNb3ZlIChQYW4gICAgOiBpbiBQYW5lbDsKLSAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBpbiBMaW5lX1Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IGluIENvbHVtbl9Qb3NpdGlvbikKKyAgIHByb2NlZHVyZSBNb3ZlIChQYW4gICAgOiBQYW5lbDsKKyAgICAgICAgICAgICAgICAgICBMaW5lICAgOiBMaW5lX1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgIENvbHVtbiA6IENvbHVtbl9Qb3NpdGlvbikKICAgIGlzCiAgICAgICBmdW5jdGlvbiBNb3ZlIChQYW4gICAgOiBQYW5lbDsKICAgICAgICAgICAgICAgICAgICAgIExpbmUgICA6IENfSW50OwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcC5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkYgppbmRleCBmZDNjNjQ2Li42NDM4NjU3IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjExICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKKy0tICAkRGF0ZTogMjAwOS8xMi8yNiAxNzozODo1OCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtODIsNyArODIsNyBAQAogICAgZW5kIEdldF9GbGFnOwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByb2NlZHVyZSBHZXRfTnVtYmVyIChOYW1lICAgOiBpbiAgU3RyaW5nOworICAgcHJvY2VkdXJlIEdldF9OdW1iZXIgKE5hbWUgICA6IFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgOiBvdXQgSW50ZWdlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgOiBvdXQgQm9vbGVhbikKICAgIGlzCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZGIKaW5kZXggYTNmYmUyNS4uOWIzYzlkNSAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw4ICszNSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjUgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyICQKKy0tICAkUmV2aXNpb246IDEuNiAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTQ3LDkgKzQ3LDkgQEAKIAogcGFja2FnZSBib2R5IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGVybWluZm8gaXMKIAotICAgZnVuY3Rpb24gSXNfTWludXNPbmVfUG9pbnRlciAoUCA6IGluIGNoYXJzX3B0cikgcmV0dXJuIEJvb2xlYW47CisgICBmdW5jdGlvbiBJc19NaW51c09uZV9Qb2ludGVyIChQIDogY2hhcnNfcHRyKSByZXR1cm4gQm9vbGVhbjsKIAotICAgZnVuY3Rpb24gSXNfTWludXNPbmVfUG9pbnRlciAoUCA6IGluIGNoYXJzX3B0cikgcmV0dXJuIEJvb2xlYW4gaXMKKyAgIGZ1bmN0aW9uIElzX01pbnVzT25lX1BvaW50ZXIgKFAgOiBjaGFyc19wdHIpIHJldHVybiBCb29sZWFuIGlzCiAgICAgICB0eXBlIFdlaXJkX0FkZHJlc3MgaXMgbmV3IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKICAgICAgIEludmFsaWRfUG9pbnRlciA6IGNvbnN0YW50IFdlaXJkX0FkZHJlc3MgOj0gLTE7CiAgICAgICBmdW5jdGlvbiBUb19XZWlyZCBpcyBuZXcgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uCmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZGIKaW5kZXggMDZiNDg3Ni4uNTBhNGU0NCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXguYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSwxOCArMzUsMTggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTIgJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjI0OjQwICQKKy0tICAkUmV2aXNpb246IDEuMTMgJAorLS0gICREYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBib2R5IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5BdXggaXMKIAogICAgcHJvY2VkdXJlIFB1dF9CdWYKLSAgICAgKFdpbiAgICA6IGluIFdpbmRvdzsKLSAgICAgIEJ1ZiAgICA6IGluIFN0cmluZzsKLSAgICAgIFdpZHRoICA6IGluIEZpZWxkOwotICAgICAgU2lnbmFsIDogaW4gQm9vbGVhbiA6PSBUcnVlOwotICAgICAgTGp1c3QgIDogaW4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgICAgKFdpbiAgICA6IFdpbmRvdzsKKyAgICAgIEJ1ZiAgICA6IFN0cmluZzsKKyAgICAgIFdpZHRoICA6IEZpZWxkOworICAgICAgU2lnbmFsIDogQm9vbGVhbiA6PSBUcnVlOworICAgICAgTGp1c3QgIDogQm9vbGVhbiA6PSBGYWxzZSkKICAgIGlzCiAgICAgICBMICAgOiBGaWVsZDsKICAgICAgIExlbiA6IEZpZWxkOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXguYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXguYWRzCmluZGV4IGRmOGE5YmQuLjZiNTBiMzMgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsOCArMzUsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMyAkCi0tLSAgJERhdGU6IDIwMDYvMDYvMjUgMTQ6MjQ6NDAgJAorLS0gICRSZXZpc2lvbjogMS4xNCAkCistLSAgJERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBwcml2YXRlIHBhY2thZ2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkF1eCBpcwpAQCAtNDYsMTAgKzQ2LDEwIEBACiAgICAtLSAgYW5kIGVudW1lcmF0aW9uIHR5cGVzLgogICAgLS0KICAgIHByb2NlZHVyZSBQdXRfQnVmCi0gICAgIChXaW4gICAgOiBpbiBXaW5kb3c7ICAgICAgICAgICAgICAgLS0gVGhlIG91dHB1dCB3aW5kb3cKLSAgICAgIEJ1ZiAgICA6IGluIFN0cmluZzsgICAgICAgICAgICAgICAtLSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHRleHQKLSAgICAgIFdpZHRoICA6IGluIEZpZWxkOyAgICAgICAgICAgICAgICAtLSBUaGUgd2lkdGggb2YgdGhlIG91dHB1dCBmaWVsZAotICAgICAgU2lnbmFsIDogaW4gQm9vbGVhbiA6PSBUcnVlOyAgICAgIC0tIElmIHRydWUsIHdlIHJhaXNlIExheW91dF9FcnJvcgotICAgICAgTGp1c3QgIDogaW4gQm9vbGVhbiA6PSBGYWxzZSk7ICAgIC0tIFRoZSBCdWYgaXMgbGVmdCBqdXN0aWZpZWQKKyAgICAgKFdpbiAgICA6IFdpbmRvdzsgICAgICAgICAgICAgICAtLSBUaGUgb3V0cHV0IHdpbmRvdworICAgICAgQnVmICAgIDogU3RyaW5nOyAgICAgICAgICAgICAgIC0tIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgdGV4dAorICAgICAgV2lkdGggIDogRmllbGQ7ICAgICAgICAgICAgICAgIC0tIFRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IGZpZWxkCisgICAgICBTaWduYWwgOiBCb29sZWFuIDo9IFRydWU7ICAgICAgLS0gSWYgdHJ1ZSwgd2UgcmFpc2UgTGF5b3V0X0Vycm9yCisgICAgICBManVzdCAgOiBCb29sZWFuIDo9IEZhbHNlKTsgICAgLS0gVGhlIEJ1ZiBpcyBsZWZ0IGp1c3RpZmllZAogCiBlbmQgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkF1eDsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRiCmluZGV4IDNiNTg3MWUuLjZjMmUxNDQgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEwICQKKy0tICAkUmV2aXNpb246IDEuMTEgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5GbG9hdF9JTzsKQEAgLTQ2LDExICs0NiwxMSBAQAogICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRmxvYXRfSU8gKENvbXBsZXhfVHlwZXMuUmVhbCdCYXNlKTsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoV2luICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gOiBpbiBDb21wbGV4OwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogQ29tcGxleDsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApCiAgICBpcwogICAgYmVnaW4KICAgICAgIFB1dCAoV2luLCAnKCcpOwpAQCAtNjEsMTAgKzYxLDEwIEBACiAgICBlbmQgUHV0OwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChJdGVtIDogaW4gQ29tcGxleDsKLSAgICAgIEZvcmUgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7Ci0gICAgICBBZnQgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9BZnQ7Ci0gICAgICBFeHAgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9FeHApCisgICAgIChJdGVtIDogQ29tcGxleDsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApCiAgICBpcwogICAgYmVnaW4KICAgICAgIFB1dCAoR2V0X1dpbmRvdywgSXRlbSwgRm9yZSwgQWZ0LCBFeHApOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZHMKaW5kZXggMjMzZWIzYy4uZTYxMzQ1OCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTAgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLk51bWVyaWNzLkdlbmVyaWNfQ29tcGxleF9UeXBlczsKQEAgLTUyLDE3ICs1MiwxNyBAQAogICAgRGVmYXVsdF9FeHAgIDogRmllbGQgOj0gMzsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoV2luICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gOiBpbiBDb21wbGV4OwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CisgICAgIChXaW4gIDogV2luZG93OworICAgICAgSXRlbSA6IENvbXBsZXg7CisgICAgICBGb3JlIDogRmllbGQgOj0gRGVmYXVsdF9Gb3JlOworICAgICAgQWZ0ICA6IEZpZWxkIDo9IERlZmF1bHRfQWZ0OworICAgICAgRXhwICA6IEZpZWxkIDo9IERlZmF1bHRfRXhwKTsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSA6IGluIENvbXBsZXg7Ci0gICAgICBGb3JlIDogaW4gRmllbGQgOj0gRGVmYXVsdF9Gb3JlOwotICAgICAgQWZ0ICA6IGluIEZpZWxkIDo9IERlZmF1bHRfQWZ0OwotICAgICAgRXhwICA6IGluIEZpZWxkIDo9IERlZmF1bHRfRXhwKTsKKyAgICAgKEl0ZW0gOiBDb21wbGV4OworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CiAKIHByaXZhdGUKICAgIHByYWdtYSBJbmxpbmUgKFB1dCk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkYgppbmRleCAwMjA2OGEwLi4xYjFhZDhjIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pby5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMCAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuVGV4dF9JTzsKQEAgLTQ3LDExICs0NywxMSBAQAogICAgcGFja2FnZSBESU8gaXMgbmV3IEFkYS5UZXh0X0lPLkRlY2ltYWxfSU8gKE51bSk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgOiBpbiBXaW5kb3c7Ci0gICAgICBJdGVtIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKICAgIGlzCiAgICAgICBCdWYgOiBTdHJpbmcgKDEgLi4gRmllbGQnTGFzdCk7CiAgICAgICBMZW4gOiBGaWVsZCA6PSBGb3JlICsgMSArIEFmdDsKQEAgLTY0LDEwICs2NCwxMCBAQAogICAgZW5kIFB1dDsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSAgOiBpbiBOdW07Ci0gICAgICBGb3JlIDogaW4gRmllbGQgOj0gRGVmYXVsdF9Gb3JlOwotICAgICAgQWZ0ICA6IGluIEZpZWxkIDo9IERlZmF1bHRfQWZ0OwotICAgICAgRXhwICA6IGluIEZpZWxkIDo9IERlZmF1bHRfRXhwKSBpcworICAgICAoSXRlbSA6IE51bTsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApIGlzCiAgICBiZWdpbgogICAgICAgUHV0IChHZXRfV2luZG93LCBJdGVtLCBGb3JlLCBBZnQsIEV4cCk7CiAgICBlbmQgUHV0OwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pby5hZHMKaW5kZXggNmY2ZmU3NS4uMTU5MDEyNyAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGdlbmVyaWMKQEAgLTQ4LDE3ICs0OCwxNyBAQAogICAgRGVmYXVsdF9FeHAgIDogRmllbGQgOj0gMDsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoV2luICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gOiBpbiBOdW07Ci0gICAgICBGb3JlIDogaW4gRmllbGQgOj0gRGVmYXVsdF9Gb3JlOwotICAgICAgQWZ0ICA6IGluIEZpZWxkIDo9IERlZmF1bHRfQWZ0OwotICAgICAgRXhwICA6IGluIEZpZWxkIDo9IERlZmF1bHRfRXhwKTsKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKEl0ZW0gIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CisgICAgIChJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CiAKIHByaXZhdGUKICAgIHByYWdtYSBJbmxpbmUgKFB1dCk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkYiBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW8uYWRiCmluZGV4IDUyODg3M2EuLjUzZjNlNTUgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW8uYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW8uYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTAgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLlRleHRfSU87CkBAIC00OCwxMCArNDgsMTAgQEAKICAgIHBhY2thZ2UgRUlPIGlzIG5ldyBBZGEuVGV4dF9JTy5FbnVtZXJhdGlvbl9JTyAoRW51bSk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgIDogaW4gV2luZG93OwotICAgICAgSXRlbSAgOiBpbiBFbnVtOwotICAgICAgV2lkdGggOiBpbiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOwotICAgICAgU2V0ICAgOiBpbiBUeXBlX1NldCA6PSBEZWZhdWx0X1NldHRpbmcpCisgICAgIChXaW4gICA6IFdpbmRvdzsKKyAgICAgIEl0ZW0gIDogRW51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIFNldCAgIDogVHlwZV9TZXQgOj0gRGVmYXVsdF9TZXR0aW5nKQogICAgaXMKICAgICAgIEJ1ZiAgOiBTdHJpbmcgKDEgLi4gRmllbGQnTGFzdCk7CiAgICAgICBUc2V0IDogQWRhLlRleHRfSU8uVHlwZV9TZXQ7CkBAIC02OSw5ICs2OSw5IEBACiAgICBlbmQgUHV0OwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChJdGVtICA6IGluIEVudW07Ci0gICAgICBXaWR0aCA6IGluIEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7Ci0gICAgICBTZXQgICA6IGluIFR5cGVfU2V0IDo9IERlZmF1bHRfU2V0dGluZykKKyAgICAgKEl0ZW0gIDogRW51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIFNldCAgIDogVHlwZV9TZXQgOj0gRGVmYXVsdF9TZXR0aW5nKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBQdXQgKEdldF9XaW5kb3csIEl0ZW0sIFdpZHRoLCBTZXQpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pby5hZHMgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkcwppbmRleCBiMjIxZDdmLi5hOTgxZjBlIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjExICQKKy0tICAkUmV2aXNpb246IDEuMTIgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBnZW5lcmljCkBAIC00NywxNSArNDcsMTUgQEAKICAgIERlZmF1bHRfU2V0dGluZyA6IFR5cGVfU2V0IDo9IE1peGVkX0Nhc2U7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgIDogaW4gV2luZG93OwotICAgICAgSXRlbSAgOiBpbiBFbnVtOwotICAgICAgV2lkdGggOiBpbiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOwotICAgICAgU2V0ICAgOiBpbiBUeXBlX1NldCA6PSBEZWZhdWx0X1NldHRpbmcpOworICAgICAoV2luICAgOiBXaW5kb3c7CisgICAgICBJdGVtICA6IEVudW07CisgICAgICBXaWR0aCA6IEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7CisgICAgICBTZXQgICA6IFR5cGVfU2V0IDo9IERlZmF1bHRfU2V0dGluZyk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKEl0ZW0gIDogaW4gRW51bTsKLSAgICAgIFdpZHRoIDogaW4gRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKLSAgICAgIFNldCAgIDogaW4gVHlwZV9TZXQgOj0gRGVmYXVsdF9TZXR0aW5nKTsKKyAgICAgKEl0ZW0gIDogRW51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIFNldCAgIDogVHlwZV9TZXQgOj0gRGVmYXVsdF9TZXR0aW5nKTsKIAogcHJpdmF0ZQogICAgcHJhZ21hIElubGluZSAoUHV0KTsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW8uYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGIKaW5kZXggZTc0ZjE0OC4uMTNhMzQyMCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMCAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuVGV4dF9JTzsKQEAgLTQ3LDExICs0NywxMSBAQAogICAgcGFja2FnZSBGSVhJTyBpcyBuZXcgQWRhLlRleHRfSU8uRml4ZWRfSU8gKE51bSk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgOiBpbiBXaW5kb3c7Ci0gICAgICBJdGVtIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKICAgIGlzCiAgICAgICBCdWYgOiBTdHJpbmcgKDEgLi4gRmllbGQnTGFzdCk7CiAgICAgICBMZW4gOiBGaWVsZCA6PSBGb3JlICsgMSArIEFmdDsKQEAgLTY0LDEwICs2NCwxMCBAQAogICAgZW5kIFB1dDsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSAgOiBpbiBOdW07Ci0gICAgICBGb3JlIDogaW4gRmllbGQgOj0gRGVmYXVsdF9Gb3JlOwotICAgICAgQWZ0ICA6IGluIEZpZWxkIDo9IERlZmF1bHRfQWZ0OwotICAgICAgRXhwICA6IGluIEZpZWxkIDo9IERlZmF1bHRfRXhwKSBpcworICAgICAoSXRlbSA6IE51bTsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApIGlzCiAgICBiZWdpbgogICAgICAgUHV0IChHZXRfV2luZG93LCBJdGVtLCBGb3JlLCBBZnQsIEV4cCk7CiAgICBlbmQgUHV0OwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZHMgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkcwppbmRleCA0YjhiMTM2Li4zYzIyYTAxIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjExICQKKy0tICAkUmV2aXNpb246IDEuMTIgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBnZW5lcmljCkBAIC00OCwxNyArNDgsMTcgQEAKICAgIERlZmF1bHRfRXhwICA6IEZpZWxkIDo9IDA7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgOiBpbiBXaW5kb3c7Ci0gICAgICBJdGVtIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CisgICAgIChXaW4gIDogV2luZG93OworICAgICAgSXRlbSA6IE51bTsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApOwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChJdGVtICA6IGluIE51bTsKLSAgICAgIEZvcmUgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7Ci0gICAgICBBZnQgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9BZnQ7Ci0gICAgICBFeHAgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9FeHApOworICAgICAoSXRlbSA6IE51bTsKKyAgICAgIEZvcmUgOiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7CisgICAgICBBZnQgIDogRmllbGQgOj0gRGVmYXVsdF9BZnQ7CisgICAgICBFeHAgIDogRmllbGQgOj0gRGVmYXVsdF9FeHApOwogCiBwcml2YXRlCiAgICBwcmFnbWEgSW5saW5lIChQdXQpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pby5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYgppbmRleCAxOWQyNjFiLi5hZjY2N2I0IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEwICQKKy0tICAkUmV2aXNpb246IDEuMTEgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEFkYS5UZXh0X0lPOwpAQCAtNDcsMTEgKzQ3LDExIEBACiAgICBwYWNrYWdlIEZJTyBpcyBuZXcgQWRhLlRleHRfSU8uRmxvYXRfSU8gKE51bSk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgOiBpbiBXaW5kb3c7Ci0gICAgICBJdGVtIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKICAgIGlzCiAgICAgICBCdWYgOiBTdHJpbmcgKDEgLi4gRmllbGQnTGFzdCk7CiAgICAgICBMZW4gOiBGaWVsZCA6PSBGb3JlICsgMSArIEFmdDsKQEAgLTY0LDEwICs2NCwxMCBAQAogICAgZW5kIFB1dDsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSA6IGluIE51bTsKLSAgICAgIEZvcmUgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0ZvcmU7Ci0gICAgICBBZnQgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9BZnQ7Ci0gICAgICBFeHAgIDogaW4gRmllbGQgOj0gRGVmYXVsdF9FeHApCisgICAgIChJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCkKICAgIGlzCiAgICBiZWdpbgogICAgICAgUHV0IChHZXRfV2luZG93LCBJdGVtLCBGb3JlLCBBZnQsIEV4cCk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzCmluZGV4IDA4NTY1MjMuLmIwYTY4ZDAgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGdlbmVyaWMKQEAgLTQ4LDE3ICs0OCwxNyBAQAogICAgRGVmYXVsdF9FeHAgIDogRmllbGQgOj0gMzsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoV2luICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gOiBpbiBOdW07Ci0gICAgICBGb3JlIDogaW4gRmllbGQgOj0gRGVmYXVsdF9Gb3JlOwotICAgICAgQWZ0ICA6IGluIEZpZWxkIDo9IERlZmF1bHRfQWZ0OwotICAgICAgRXhwICA6IGluIEZpZWxkIDo9IERlZmF1bHRfRXhwKTsKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKEl0ZW0gIDogaW4gTnVtOwotICAgICAgRm9yZSA6IGluIEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKLSAgICAgIEFmdCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKLSAgICAgIEV4cCAgOiBpbiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CisgICAgIChJdGVtIDogTnVtOworICAgICAgRm9yZSA6IEZpZWxkIDo9IERlZmF1bHRfRm9yZTsKKyAgICAgIEFmdCAgOiBGaWVsZCA6PSBEZWZhdWx0X0FmdDsKKyAgICAgIEV4cCAgOiBGaWVsZCA6PSBEZWZhdWx0X0V4cCk7CiAKIHByaXZhdGUKICAgIHByYWdtYSBJbmxpbmUgKFB1dCk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRiIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkYgppbmRleCBlNjk0ZTA4Li40ZDE5YzQyIDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRiCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZGIKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMCAkCistLSAgJFJldmlzaW9uOiAxLjExICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2l0aCBBZGEuVGV4dF9JTzsKQEAgLTQ3LDEwICs0NywxMCBAQAogICAgcGFja2FnZSBJSU8gaXMgbmV3IEFkYS5UZXh0X0lPLkludGVnZXJfSU8gKE51bSk7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgIDogaW4gV2luZG93OwotICAgICAgSXRlbSAgOiBpbiBOdW07Ci0gICAgICBXaWR0aCA6IGluIEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7Ci0gICAgICBCYXNlICA6IGluIE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSkKKyAgICAgKFdpbiAgIDogV2luZG93OworICAgICAgSXRlbSAgOiBOdW07CisgICAgICBXaWR0aCA6IEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7CisgICAgICBCYXNlICA6IE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSkKICAgIGlzCiAgICAgICBCdWYgOiBTdHJpbmcgKDEgLi4gRmllbGQnTGFzdCk7CiAgICBiZWdpbgpAQCAtNTksOSArNTksOSBAQAogICAgZW5kIFB1dDsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSAgOiBpbiBOdW07Ci0gICAgICBXaWR0aCA6IGluIEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7Ci0gICAgICBCYXNlICA6IGluIE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSkKKyAgICAgKEl0ZW0gIDogTnVtOworICAgICAgV2lkdGggOiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOworICAgICAgQmFzZSAgOiBOdW1iZXJfQmFzZSA6PSBEZWZhdWx0X0Jhc2UpCiAgICBpcwogICAgYmVnaW4KICAgICAgIFB1dCAoR2V0X1dpbmRvdywgSXRlbSwgV2lkdGgsIEJhc2UpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkcyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZHMKaW5kZXggZDhiMTY5YS4uOWZmZTFlMCAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRzCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDcgKzM1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTEgJAorLS0gICRSZXZpc2lvbjogMS4xMiAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGdlbmVyaWMKQEAgLTQ3LDE1ICs0NywxNSBAQAogICAgRGVmYXVsdF9CYXNlICA6IE51bWJlcl9CYXNlIDo9IDEwOwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChXaW4gICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gIDogaW4gTnVtOwotICAgICAgV2lkdGggOiBpbiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOwotICAgICAgQmFzZSAgOiBpbiBOdW1iZXJfQmFzZSA6PSBEZWZhdWx0X0Jhc2UpOworICAgICAoV2luICAgOiBXaW5kb3c7CisgICAgICBJdGVtICA6IE51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIEJhc2UgIDogTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKTsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoSXRlbSAgOiBpbiBOdW07Ci0gICAgICBXaWR0aCA6IGluIEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7Ci0gICAgICBCYXNlICA6IGluIE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSk7CisgICAgIChJdGVtICA6IE51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIEJhc2UgIDogTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKTsKIAogcHJpdmF0ZQogICAgcHJhZ21hIElubGluZSAoUHV0KTsKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRiCmluZGV4IDhjYzFkNGEuLmZlOGE2ZDAgMTAwNjQ0Ci0tLSBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZGIKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEwICQKKy0tICAkUmV2aXNpb246IDEuMTEgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEFkYS5UZXh0X0lPOwpAQCAtNDcsMTAgKzQ3LDEwIEBACiAgICBwYWNrYWdlIE1JTyBpcyBuZXcgQWRhLlRleHRfSU8uTW9kdWxhcl9JTyAoTnVtKTsKIAogICAgcHJvY2VkdXJlIFB1dAotICAgICAoV2luICAgOiBpbiBXaW5kb3c7Ci0gICAgICBJdGVtICA6IGluIE51bTsKLSAgICAgIFdpZHRoIDogaW4gRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKLSAgICAgIEJhc2UgIDogaW4gTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKQorICAgICAoV2luICAgOiBXaW5kb3c7CisgICAgICBJdGVtICA6IE51bTsKKyAgICAgIFdpZHRoIDogRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKKyAgICAgIEJhc2UgIDogTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKQogICAgaXMKICAgICAgIEJ1ZiA6IFN0cmluZyAoMSAuLiBGaWVsZCdMYXN0KTsKICAgIGJlZ2luCkBAIC01OSw5ICs1OSw5IEBACiAgICBlbmQgUHV0OwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChJdGVtICA6IGluIE51bTsKLSAgICAgIFdpZHRoIDogaW4gRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKLSAgICAgIEJhc2UgIDogaW4gTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKQorICAgICAoSXRlbSAgOiBOdW07CisgICAgICBXaWR0aCA6IEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7CisgICAgICBCYXNlICA6IE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSkKICAgIGlzCiAgICBiZWdpbgogICAgICAgUHV0IChHZXRfV2luZG93LCBJdGVtLCBXaWR0aCwgQmFzZSk7CmRpZmYgLS1naXQgYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvLmFkcwppbmRleCA2MTg3MDZmLi42OGU3MGU1IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzCisrKyBiL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZHMKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNyArMzUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sOgotLS0gICRSZXZpc2lvbjogMS4xMSAkCistLSAgJFJldmlzaW9uOiAxLjEyICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZ2VuZXJpYwpAQCAtNDcsMTUgKzQ3LDE1IEBACiAgICBEZWZhdWx0X0Jhc2UgIDogTnVtYmVyX0Jhc2UgOj0gMTA7CiAKICAgIHByb2NlZHVyZSBQdXQKLSAgICAgKFdpbiAgIDogaW4gV2luZG93OwotICAgICAgSXRlbSAgOiBpbiBOdW07Ci0gICAgICBXaWR0aCA6IGluIEZpZWxkIDo9IERlZmF1bHRfV2lkdGg7Ci0gICAgICBCYXNlICA6IGluIE51bWJlcl9CYXNlIDo9IERlZmF1bHRfQmFzZSk7CisgICAgIChXaW4gICA6IFdpbmRvdzsKKyAgICAgIEl0ZW0gIDogTnVtOworICAgICAgV2lkdGggOiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOworICAgICAgQmFzZSAgOiBOdW1iZXJfQmFzZSA6PSBEZWZhdWx0X0Jhc2UpOwogCiAgICBwcm9jZWR1cmUgUHV0Ci0gICAgIChJdGVtICA6IGluIE51bTsKLSAgICAgIFdpZHRoIDogaW4gRmllbGQgOj0gRGVmYXVsdF9XaWR0aDsKLSAgICAgIEJhc2UgIDogaW4gTnVtYmVyX0Jhc2UgOj0gRGVmYXVsdF9CYXNlKTsKKyAgICAgKEl0ZW0gIDogTnVtOworICAgICAgV2lkdGggOiBGaWVsZCA6PSBEZWZhdWx0X1dpZHRoOworICAgICAgQmFzZSAgOiBOdW1iZXJfQmFzZSA6PSBEZWZhdWx0X0Jhc2UpOwogCiBwcml2YXRlCiAgICBwcmFnbWEgSW5saW5lIChQdXQpOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZGIgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkYgppbmRleCAyNTViMTIzLi44NWE0ZjQ0IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkYgorKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkYgpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSwxNSArMzUsMTUgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NgogLS0gIFZlcnNpb24gQ29udHJvbDoKLS0tICAkUmV2aXNpb246IDEuMTggJAotLS0gICREYXRlOiAyMDA2LzA2LzI1IDE0OjI0OjQwICQKKy0tICAkUmV2aXNpb246IDEuMjIgJAorLS0gICREYXRlOiAyMDE0LzA1LzI0IDIxOjMyOjE4ICQKIC0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcGFja2FnZSBib2R5IFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTyBpcwogCiAgICBEZWZhdWx0X1dpbmRvdyA6IFdpbmRvdyA6PSBOdWxsX1dpbmRvdzsKIAotICAgcHJvY2VkdXJlIFNldF9XaW5kb3cgKFdpbiA6IGluIFdpbmRvdykKKyAgIHByb2NlZHVyZSBTZXRfV2luZG93IChXaW4gOiBXaW5kb3cpCiAgICBpcwogICAgYmVnaW4KICAgICAgIERlZmF1bHRfV2luZG93IDo9IFdpbjsKQEAgLTYwLDcgKzYwLDcgQEAKICAgIGVuZCBHZXRfV2luZG93OwogICAgcHJhZ21hIElubGluZSAoR2V0X1dpbmRvdyk7CiAKLSAgIHByb2NlZHVyZSBGbHVzaCAoV2luIDogaW4gV2luZG93KQorICAgcHJvY2VkdXJlIEZsdXNoIChXaW4gOiBXaW5kb3cpCiAgICBpcwogICAgYmVnaW4KICAgICAgIFJlZnJlc2ggKFdpbik7CkBAIC04MSw3ICs4MSw3IEBACiAgICAtLSAgQSBzY3JvbGwtd2luZG93IGlzIGludGVycHJldGVkIGFzIGFuIHBhZ2Ugd2l0aCB1bmJvdW5kZWQgcGFnZSBsZW5ndGgsCiAgICAtLSAgaS5lLiBpdCByZXR1cm5zIHRoZSBjb252ZW50aW9uYWwgMCBhcyBwYWdlIGxlbmd0aC4KIAotICAgZnVuY3Rpb24gTGluZV9MZW5ndGggKFdpbiA6IGluIFdpbmRvdykgcmV0dXJuIENvdW50CisgICBmdW5jdGlvbiBMaW5lX0xlbmd0aCAoV2luIDogV2luZG93KSByZXR1cm4gQ291bnQKICAgIGlzCiAgICAgICBOX0xpbmVzIDogTGluZV9Db3VudDsKICAgICAgIE5fQ29scyAgOiBDb2x1bW5fQ291bnQ7CkBAIC05OSw3ICs5OSw3IEBACiAgICAgICByZXR1cm4gTGluZV9MZW5ndGggKEdldF9XaW5kb3cpOwogICAgZW5kIExpbmVfTGVuZ3RoOwogCi0gICBmdW5jdGlvbiBQYWdlX0xlbmd0aCAoV2luIDogaW4gV2luZG93KSByZXR1cm4gQ291bnQKKyAgIGZ1bmN0aW9uIFBhZ2VfTGVuZ3RoIChXaW4gOiBXaW5kb3cpIHJldHVybiBDb3VudAogICAgaXMKICAgICAgIE5fTGluZXMgOiBMaW5lX0NvdW50OwogICAgICAgTl9Db2xzICA6IENvbHVtbl9Db3VudDsKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtLSBDb2x1bW4sIExpbmUsIGFuZCBQYWdlIENvbnRyb2wgLS0KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJvY2VkdXJlIE5ld19MaW5lIChXaW4gOiBpbiBXaW5kb3c7IFNwYWNpbmcgOiBpbiBQb3NpdGl2ZV9Db3VudCA6PSAxKQorICAgcHJvY2VkdXJlIE5ld19MaW5lIChXaW4gOiBXaW5kb3c7IFNwYWNpbmcgOiBQb3NpdGl2ZV9Db3VudCA6PSAxKQogICAgaXMKICAgICAgIFBfU2l6ZSA6IGNvbnN0YW50IENvdW50IDo9IFBhZ2VfTGVuZ3RoIChXaW4pOwogICAgYmVnaW4KQEAgLTE0MSwxMyArMTQxLDEzIEBACiAgICAgICBlbmQgbG9vcDsKICAgIGVuZCBOZXdfTGluZTsKIAotICAgcHJvY2VkdXJlIE5ld19MaW5lIChTcGFjaW5nIDogaW4gUG9zaXRpdmVfQ291bnQgOj0gMSkKKyAgIHByb2NlZHVyZSBOZXdfTGluZSAoU3BhY2luZyA6IFBvc2l0aXZlX0NvdW50IDo9IDEpCiAgICBpcwogICAgYmVnaW4KICAgICAgIE5ld19MaW5lIChHZXRfV2luZG93LCBTcGFjaW5nKTsKICAgIGVuZCBOZXdfTGluZTsKIAotICAgcHJvY2VkdXJlIE5ld19QYWdlIChXaW4gOiBpbiBXaW5kb3cpCisgICBwcm9jZWR1cmUgTmV3X1BhZ2UgKFdpbiA6IFdpbmRvdykKICAgIGlzCiAgICBiZWdpbgogICAgICAgQ2xlYXIgKFdpbik7CkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgIE5ld19QYWdlIChHZXRfV2luZG93KTsKICAgIGVuZCBOZXdfUGFnZTsKIAotICAgcHJvY2VkdXJlIFNldF9Db2wgKFdpbiA6IGluIFdpbmRvdzsgIFRvIDogaW4gUG9zaXRpdmVfQ291bnQpCisgICBwcm9jZWR1cmUgU2V0X0NvbCAoV2luIDogV2luZG93OyAgVG8gOiBQb3NpdGl2ZV9Db3VudCkKICAgIGlzCiAgICAgICBZICA6IExpbmVfUG9zaXRpb247CiAgICAgICBYMSA6IENvbHVtbl9Qb3NpdGlvbjsKQEAgLTE4NywxMyArMTg3LDEzIEBACiAgICAgICBlbmQgaWY7CiAgICBlbmQgU2V0X0NvbDsKIAotICAgcHJvY2VkdXJlIFNldF9Db2wgKFRvIDogaW4gUG9zaXRpdmVfQ291bnQpCisgICBwcm9jZWR1cmUgU2V0X0NvbCAoVG8gOiBQb3NpdGl2ZV9Db3VudCkKICAgIGlzCiAgICBiZWdpbgogICAgICAgU2V0X0NvbCAoR2V0X1dpbmRvdywgVG8pOwogICAgZW5kIFNldF9Db2w7CiAKLSAgIHByb2NlZHVyZSBTZXRfTGluZSAoV2luIDogaW4gV2luZG93OyBUbyA6IGluIFBvc2l0aXZlX0NvdW50KQorICAgcHJvY2VkdXJlIFNldF9MaW5lIChXaW4gOiBXaW5kb3c7IFRvIDogUG9zaXRpdmVfQ291bnQpCiAgICBpcwogICAgICAgWTEgOiBMaW5lX1Bvc2l0aW9uOwogICAgICAgWTIgOiBMaW5lX1Bvc2l0aW9uOwpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICBlbmQgaWY7CiAKICAgICAgIEdldF9DdXJzb3JfUG9zaXRpb24gKFdpbiwgWTEsIFgpOworICAgICAgcHJhZ21hIFdhcm5pbmdzIChPZmYsIFgpOyAgICAgICAgIC0tICB1bnJlZmVyZW5jZWQKICAgICAgIE4gIDo9IE5hdHVyYWwgKFRvKTsgTiA6PSBOIC0gMTsKICAgICAgIFkyIDo9IExpbmVfUG9zaXRpb24gKE4pOwogICAgICAgaWYgWTIgPCBZMSB0aGVuCkBAIC0yMTYsMTMgKzIxNywxMyBAQAogICAgICAgZW5kIGlmOwogICAgZW5kIFNldF9MaW5lOwogCi0gICBwcm9jZWR1cmUgU2V0X0xpbmUgKFRvIDogaW4gUG9zaXRpdmVfQ291bnQpCisgICBwcm9jZWR1cmUgU2V0X0xpbmUgKFRvIDogUG9zaXRpdmVfQ291bnQpCiAgICBpcwogICAgYmVnaW4KICAgICAgIFNldF9MaW5lIChHZXRfV2luZG93LCBUbyk7CiAgICBlbmQgU2V0X0xpbmU7CiAKLSAgIGZ1bmN0aW9uIENvbCAoV2luIDogaW4gV2luZG93KSByZXR1cm4gUG9zaXRpdmVfQ291bnQKKyAgIGZ1bmN0aW9uIENvbCAoV2luIDogV2luZG93KSByZXR1cm4gUG9zaXRpdmVfQ291bnQKICAgIGlzCiAgICAgICBZIDogTGluZV9Qb3NpdGlvbjsKICAgICAgIFggOiBDb2x1bW5fUG9zaXRpb247CkBAIC0yNDIsNyArMjQzLDcgQEAKICAgICAgIHJldHVybiBDb2wgKEdldF9XaW5kb3cpOwogICAgZW5kIENvbDsKIAotICAgZnVuY3Rpb24gTGluZSAoV2luIDogaW4gV2luZG93KSByZXR1cm4gUG9zaXRpdmVfQ291bnQKKyAgIGZ1bmN0aW9uIExpbmUgKFdpbiA6IFdpbmRvdykgcmV0dXJuIFBvc2l0aXZlX0NvdW50CiAgICBpcwogICAgICAgWSA6IExpbmVfUG9zaXRpb247CiAgICAgICBYIDogQ29sdW1uX1Bvc2l0aW9uOwpAQCAtMjY2LDcgKzI2Nyw3IEBACiAgICAtLSBDaGFyYWN0ZXJzIE91dHB1dCAtLQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgcHJvY2VkdXJlIFB1dCAoV2luICA6IGluIFdpbmRvdzsgSXRlbSA6IGluIENoYXJhY3RlcikKKyAgIHByb2NlZHVyZSBQdXQgKFdpbiAgOiBXaW5kb3c7IEl0ZW0gOiBDaGFyYWN0ZXIpCiAgICBpcwogICAgICAgUF9TaXplIDogY29uc3RhbnQgQ291bnQgOj0gUGFnZV9MZW5ndGggKFdpbik7CiAgICAgICBZIDogTGluZV9Qb3NpdGlvbjsKQEAgLTI4NCw3ICsyODUsNyBAQAogICAgICAgQWRkIChXaW4sIEl0ZW0pOwogICAgZW5kIFB1dDsKIAotICAgcHJvY2VkdXJlIFB1dCAoSXRlbSA6IGluIENoYXJhY3RlcikKKyAgIHByb2NlZHVyZSBQdXQgKEl0ZW0gOiBDaGFyYWN0ZXIpCiAgICBpcwogICAgYmVnaW4KICAgICAgIFB1dCAoR2V0X1dpbmRvdywgSXRlbSk7CkBAIC0yOTQsNyArMjk1LDcgQEAKICAgIC0tIFN0cmluZ3MtT3V0cHV0IC0tCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICBwcm9jZWR1cmUgUHV0IChXaW4gIDogaW4gV2luZG93OyBJdGVtIDogaW4gU3RyaW5nKQorICAgcHJvY2VkdXJlIFB1dCAoV2luICA6IFdpbmRvdzsgSXRlbSA6IFN0cmluZykKICAgIGlzCiAgICAgICBQX1NpemUgOiBjb25zdGFudCBDb3VudCA6PSBQYWdlX0xlbmd0aCAoV2luKTsKICAgICAgIFkgOiBMaW5lX1Bvc2l0aW9uOwpAQCAtMzEyLDE1ICszMTMsMTUgQEAKICAgICAgIEFkZCAoV2luLCBJdGVtKTsKICAgIGVuZCBQdXQ7CiAKLSAgIHByb2NlZHVyZSBQdXQgKEl0ZW0gOiBpbiBTdHJpbmcpCisgICBwcm9jZWR1cmUgUHV0IChJdGVtIDogU3RyaW5nKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBQdXQgKEdldF9XaW5kb3csIEl0ZW0pOwogICAgZW5kIFB1dDsKIAogICAgcHJvY2VkdXJlIFB1dF9MaW5lCi0gICAgIChXaW4gIDogaW4gV2luZG93OwotICAgICAgSXRlbSA6IGluIFN0cmluZykKKyAgICAgKFdpbiAgOiBXaW5kb3c7CisgICAgICBJdGVtIDogU3RyaW5nKQogICAgaXMKICAgIGJlZ2luCiAgICAgICBQdXQgKFdpbiwgSXRlbSk7CkBAIC0zMjgsNyArMzI5LDcgQEAKICAgIGVuZCBQdXRfTGluZTsKIAogICAgcHJvY2VkdXJlIFB1dF9MaW5lCi0gICAgIChJdGVtIDogaW4gU3RyaW5nKQorICAgICAoSXRlbSA6IFN0cmluZykKICAgIGlzCiAgICBiZWdpbgogICAgICAgUHV0X0xpbmUgKEdldF9XaW5kb3csIEl0ZW0pOwpkaWZmIC0tZ2l0IGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHMgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkcwppbmRleCAyZjZjNDhhLi45YzQwMzI5IDEwMDY0NAotLS0gYS9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkcworKysgYi9BZGE5NS9zcmMvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkcwpAQCAtNyw3ICs3LDcgQEAKIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tCkBAIC0zNSw3ICszNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjEzICQKKy0tICAkUmV2aXNpb246IDEuMTQgJAogLS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB3aXRoIEFkYS5UZXh0X0lPOwpAQCAtNTYsMTMgKzU2LDEzIEBACiAgICAtLSAgdHlwZSBwYXJhbWV0ZXIuIFRoZXkgd2lsbCBvcGVyYXRlIG9uIGEgZGVmYXVsdCB3aW5kb3csIHdoaWNoIGNhbgogICAgLS0gIGJlIHNldCBieSB0aGUgdXNlci4gSXQgaXMgaW5pdGlhbGx5IGVxdWFsIHRvIFN0YW5kYXJkX1dpbmRvdy4KIAotICAgcHJvY2VkdXJlIFNldF9XaW5kb3cgKFdpbiA6IGluIFdpbmRvdyk7CisgICBwcm9jZWR1cmUgU2V0X1dpbmRvdyAoV2luIDogV2luZG93KTsKICAgIC0tICBTZXQgV2luIGFzIHRoZSBkZWZhdWx0IHdpbmRvdwogCiAgICBmdW5jdGlvbiBHZXRfV2luZG93IHJldHVybiBXaW5kb3c7CiAgICAtLSAgR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgd2luZG93CiAKLSAgIHByb2NlZHVyZSBGbHVzaCAoV2luIDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBGbHVzaCAoV2luIDogV2luZG93KTsKICAgIHByb2NlZHVyZSBGbHVzaDsKIAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc0LDUzICs3NCw1MyBAQAogICAgLS0gIEEgc2Nyb2xsLXdpbmRvdyBpcyBpbnRlcnByZXRlZCBhcyBhbiBwYWdlIHdpdGggdW5ib3VuZGVkIHBhZ2UgbGVuZ3RoLAogICAgLS0gIGkuZS4gaXQgcmV0dXJucyB0aGUgY29udmVudGlvbmFsIDAgYXMgcGFnZSBsZW5ndGguCiAKLSAgIGZ1bmN0aW9uIExpbmVfTGVuZ3RoIChXaW4gOiBpbiBXaW5kb3cpIHJldHVybiBDb3VudDsKKyAgIGZ1bmN0aW9uIExpbmVfTGVuZ3RoIChXaW4gOiBXaW5kb3cpIHJldHVybiBDb3VudDsKICAgIGZ1bmN0aW9uIExpbmVfTGVuZ3RoIHJldHVybiBDb3VudDsKIAotICAgZnVuY3Rpb24gUGFnZV9MZW5ndGggKFdpbiA6IGluIFdpbmRvdykgcmV0dXJuIENvdW50OworICAgZnVuY3Rpb24gUGFnZV9MZW5ndGggKFdpbiA6IFdpbmRvdykgcmV0dXJuIENvdW50OwogICAgZnVuY3Rpb24gUGFnZV9MZW5ndGggcmV0dXJuIENvdW50OwogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0tIENvbHVtbiwgTGluZSwgYW5kIFBhZ2UgQ29udHJvbCAtLQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcm9jZWR1cmUgTmV3X0xpbmUgKFdpbiA6IGluIFdpbmRvdzsgU3BhY2luZyA6IGluIFBvc2l0aXZlX0NvdW50IDo9IDEpOwotICAgcHJvY2VkdXJlIE5ld19MaW5lIChTcGFjaW5nIDogaW4gUG9zaXRpdmVfQ291bnQgOj0gMSk7CisgICBwcm9jZWR1cmUgTmV3X0xpbmUgKFdpbiA6IFdpbmRvdzsgU3BhY2luZyA6IFBvc2l0aXZlX0NvdW50IDo9IDEpOworICAgcHJvY2VkdXJlIE5ld19MaW5lIChTcGFjaW5nIDogUG9zaXRpdmVfQ291bnQgOj0gMSk7CiAKLSAgIHByb2NlZHVyZSBOZXdfUGFnZSAoV2luIDogaW4gV2luZG93KTsKKyAgIHByb2NlZHVyZSBOZXdfUGFnZSAoV2luIDogV2luZG93KTsKICAgIHByb2NlZHVyZSBOZXdfUGFnZTsKIAotICAgcHJvY2VkdXJlIFNldF9Db2wgKFdpbiA6IGluIFdpbmRvdzsgIFRvIDogaW4gUG9zaXRpdmVfQ291bnQpOwotICAgcHJvY2VkdXJlIFNldF9Db2wgKFRvIDogaW4gUG9zaXRpdmVfQ291bnQpOworICAgcHJvY2VkdXJlIFNldF9Db2wgKFdpbiA6IFdpbmRvdzsgIFRvIDogUG9zaXRpdmVfQ291bnQpOworICAgcHJvY2VkdXJlIFNldF9Db2wgKFRvIDogUG9zaXRpdmVfQ291bnQpOwogCi0gICBwcm9jZWR1cmUgU2V0X0xpbmUgKFdpbiA6IGluIFdpbmRvdzsgVG8gOiBpbiBQb3NpdGl2ZV9Db3VudCk7Ci0gICBwcm9jZWR1cmUgU2V0X0xpbmUgKFRvIDogaW4gUG9zaXRpdmVfQ291bnQpOworICAgcHJvY2VkdXJlIFNldF9MaW5lIChXaW4gOiBXaW5kb3c7IFRvIDogUG9zaXRpdmVfQ291bnQpOworICAgcHJvY2VkdXJlIFNldF9MaW5lIChUbyA6IFBvc2l0aXZlX0NvdW50KTsKIAotICAgZnVuY3Rpb24gQ29sIChXaW4gOiBpbiBXaW5kb3cpIHJldHVybiBQb3NpdGl2ZV9Db3VudDsKKyAgIGZ1bmN0aW9uIENvbCAoV2luIDogV2luZG93KSByZXR1cm4gUG9zaXRpdmVfQ291bnQ7CiAgICBmdW5jdGlvbiBDb2wgcmV0dXJuIFBvc2l0aXZlX0NvdW50OwogCi0gICBmdW5jdGlvbiBMaW5lIChXaW4gOiBpbiBXaW5kb3cpIHJldHVybiBQb3NpdGl2ZV9Db3VudDsKKyAgIGZ1bmN0aW9uIExpbmUgKFdpbiA6IFdpbmRvdykgcmV0dXJuIFBvc2l0aXZlX0NvdW50OwogICAgZnVuY3Rpb24gTGluZSByZXR1cm4gUG9zaXRpdmVfQ291bnQ7CiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtLSBDaGFyYWN0ZXJzLU91dHB1dCAtLQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgcHJvY2VkdXJlIFB1dCAoV2luICA6IGluIFdpbmRvdzsgSXRlbSA6IGluIENoYXJhY3Rlcik7Ci0gICBwcm9jZWR1cmUgUHV0IChJdGVtIDogaW4gQ2hhcmFjdGVyKTsKKyAgIHByb2NlZHVyZSBQdXQgKFdpbiAgOiBXaW5kb3c7IEl0ZW0gOiBDaGFyYWN0ZXIpOworICAgcHJvY2VkdXJlIFB1dCAoSXRlbSA6IENoYXJhY3Rlcik7CiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtLSBTdHJpbmdzLU91dHB1dCAtLQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgcHJvY2VkdXJlIFB1dCAoV2luICA6IGluIFdpbmRvdzsgSXRlbSA6IGluIFN0cmluZyk7Ci0gICBwcm9jZWR1cmUgUHV0IChJdGVtIDogaW4gU3RyaW5nKTsKKyAgIHByb2NlZHVyZSBQdXQgKFdpbiAgOiBXaW5kb3c7IEl0ZW0gOiBTdHJpbmcpOworICAgcHJvY2VkdXJlIFB1dCAoSXRlbSA6IFN0cmluZyk7CiAKICAgIHByb2NlZHVyZSBQdXRfTGluZQotICAgICAoV2luICA6IGluIFdpbmRvdzsKLSAgICAgIEl0ZW0gOiBpbiBTdHJpbmcpOworICAgICAoV2luICA6IFdpbmRvdzsKKyAgICAgIEl0ZW0gOiBTdHJpbmcpOwogCiAgICBwcm9jZWR1cmUgUHV0X0xpbmUKLSAgICAgKEl0ZW0gOiBpbiBTdHJpbmcpOworICAgICAoSXRlbSA6IFN0cmluZyk7CiAKICAgIC0tICBFeGNlcHRpb25zCiAKZGlmZiAtLWdpdCBhL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlLmFkYl9wIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRiX3AKaW5kZXggNzQ3NDU0YS4uMGRlYWQzNyAxMDA2NDQKLS0tIGEvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRiX3AKKysrIGIvQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRiX3AKQEAgLTcsNyArNyw3IEBACiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDIwMDAsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLQpAQCAtMzUsNjAgKzM1LDM5IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTYKIC0tICBWZXJzaW9uIENvbnRyb2w6Ci0tLSAgJFJldmlzaW9uOiAxLjUgJAorLS0gICRSZXZpc2lvbjogMS4xMSAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICNpZiBBREFfVFJBQ0UgdGhlbgogd2l0aCBJbnRlcmZhY2VzLkM7IHVzZSBJbnRlcmZhY2VzLkM7Ci13aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4OyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXg7Ci13aXRoIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKICNlbmQgaWY7CiAKIHBhY2thZ2UgYm9keSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRyYWNlIGlzCiAKICNpZiBBREFfVFJBQ0UgdGhlbgotICAgdHlwZSBDX1RyYWNlVHlwZSBpcyBuZXcgQ19VSW50OwotCi0gICBmdW5jdGlvbiBUcmFjZUFkYV9Ub19UcmFjZUMgaXMgbmV3Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoU291cmNlID0+IFRyYWNlX0F0dHJpYnV0ZV9TZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ID0+IENfVHJhY2VUeXBlKTsKLQogICAgcHJvY2VkdXJlIFRyYWNlX09uICh4IDogVHJhY2VfQXR0cmlidXRlX1NldCkgaXMKLSAgICAgIHByb2NlZHVyZSB0cmFjZUMgKHkgOiBDX1RyYWNlVHlwZSk7CisgICAgICBwcm9jZWR1cmUgdHJhY2VDICh5IDogVHJhY2VfQXR0cmlidXRlX1NldCk7CiAgICAgICBwcmFnbWEgSW1wb3J0IChDLCB0cmFjZUMsICJ0cmFjZSIpOwogICAgYmVnaW4KLSAgICAgIHRyYWNlQyAoVHJhY2VBZGFfVG9fVHJhY2VDICh4KSk7CisgICAgICB0cmFjZUMgKHgpOwogICAgZW5kIFRyYWNlX09uOwogCi0gICAtLSAgNzUuICgxMikgQSBDIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzIGNhbgotICAgLS0gICAgICBjb3JyZXNwb25kIHRvIHNldmVyYWwgQWRhIHN1YnByb2dyYW1zLCB0YWtpbmcgdmFyaW91cyBzcGVjaWZpYwotICAgLS0gICAgICBudW1iZXJzIGFuZCB0eXBlcyBvZiBwYXJhbWV0ZXJzLgotCiAgICBwcm9jZWR1cmUgVHJhY2VfUHV0IChzdHIgOiBTdHJpbmcpIGlzCiAgICAgICBwcm9jZWR1cmUgdHJhY2VmIChmb3JtYXQgOiBjaGFyX2FycmF5OyBzIDogY2hhcl9hcnJheSk7Ci0gICAgICBwcmFnbWEgSW1wb3J0IChDLCB0cmFjZWYsICJfdHJhY2VmIik7Ci0gICAgICBUeHQgICAgOiBjaGFyX2FycmF5ICgwIC4uIHN0cidMZW5ndGgpOwotICAgICAgTGVuZ3RoIDogc2l6ZV90OwotICAgICAgZm9ybWF0c3RyIDogY29uc3RhbnQgU3RyaW5nIDo9ICIlcyIgJiAgQVNDSUkuTnVsOwotICAgICAgZm9ybWF0dHh0IDogY2hhcl9hcnJheSAoMCAuLiBmb3JtYXRzdHInTGVuZ3RoKTsKKyAgICAgIHByYWdtYSBJbXBvcnQgKEMsIHRyYWNlZiwgIl90cmFjZXMiKTsKKyAgICAgIC0tICBfdHJhY2VzKCkgaXMgZGVmaW5lZCBpbiBjX3ZhcmFyZ3NfdG9fYWRhLmgKICAgIGJlZ2luCi0gICAgICBUb19DIChmb3JtYXRzdHIsIGZvcm1hdHR4dCwgTGVuZ3RoKTsKLSAgICAgIFRvX0MgKHN0ciwgVHh0LCBMZW5ndGgpOwotICAgICAgdHJhY2VmIChmb3JtYXR0eHQsIFR4dCk7CisgICAgICB0cmFjZWYgKFRvX0MgKCIlcyIpLCBUb19DIChzdHIpKTsKICAgIGVuZCBUcmFjZV9QdXQ7CiAjZWxzZQogICAgcHJvY2VkdXJlIFRyYWNlX09uICh4IDogVHJhY2VfQXR0cmlidXRlX1NldCkgaXMKLSNpZiBQUkFHTUFfVU5SRUYKLSAgIHByYWdtYSBVbnJlZmVyZW5jZWQgKHgpOwotI2VuZCBpZjsKKyAgICAgIHByYWdtYSBXYXJuaW5ncyAoT2ZmLCB4KTsgICAgICAgICAtLSAgdW5yZWZlcmVuY2VkCiAgICBiZWdpbgogICAgICAgbnVsbDsKICAgIGVuZCBUcmFjZV9PbjsKIAogICAgcHJvY2VkdXJlIFRyYWNlX1B1dCAoc3RyIDogU3RyaW5nKSBpcwotI2lmIFBSQUdNQV9VTlJFRgotICAgcHJhZ21hIFVucmVmZXJlbmNlZCAoc3RyKTsKLSNlbmQgaWY7CisgICAgICBwcmFnbWEgV2FybmluZ3MgKE9mZiwgc3RyKTsgICAgICAgLS0gIHVucmVmZXJlbmNlZAogICAgYmVnaW4KICAgICAgIG51bGw7CiAgICBlbmQgVHJhY2VfUHV0OwpkaWZmIC0tZ2l0IGEvQW5kcm9pZC5tayBiL0FuZHJvaWQubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDJmMWQuLjAwMDAwMDAKLS0tIGEvQW5kcm9pZC5taworKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUxPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQotaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi0KLUxPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLWMtZmlsZXMtdW5kZXIsIG5jdXJzZXMvdHR5KSAKLUxPQ0FMX1NSQ19GSUxFUyArPSAkKGNhbGwgYWxsLWMtZmlsZXMtdW5kZXIsIG5jdXJzZXMvYmFzZSkgCi1MT0NBTF9TUkNfRklMRVMgOj0gJChmaWx0ZXItb3V0IG5jdXJzZXMvYmFzZS9zaWdhY3Rpb24uYywgJChMT0NBTF9TUkNfRklMRVMpKQotTE9DQUxfU1JDX0ZJTEVTICs9ICQoY2FsbCBhbGwtYy1maWxlcy11bmRlciwgbmN1cnNlcy90aW5mbykgCi1MT0NBTF9TUkNfRklMRVMgOj0gJChmaWx0ZXItb3V0IG5jdXJzZXMvdGluZm8vbWFrZV9rZXlzLmMsICQoTE9DQUxfU1JDX0ZJTEVTKSkKLQotTE9DQUxfU1JDX0ZJTEVTICs9IG5jdXJzZXMvdHJhY2UvbGliX3RyYWNlLmMgXAotCQluY3Vyc2VzL3RyYWNlL3ZhcmFyZ3MuYyBcCi0JCW5jdXJzZXMvdHJhY2UvdmlzYnVmLmMgXAotCQluY3Vyc2VzL2NvZGVzLmMgXAotCQluY3Vyc2VzL2NvbXBfY2FwdGFiLmMgXAotCQluY3Vyc2VzL2V4cGFuZGVkLmMgXAotCQluY3Vyc2VzL2ZhbGxiYWNrLmMgXAotCQluY3Vyc2VzL2xpYl9nZW4uYyBcCi0JCW5jdXJzZXMvbGliX2tleW5hbWUuYyBcCi0JCW5jdXJzZXMvbmFtZXMuYyBcCi0JCW5jdXJzZXMvdW5jdHJsLmMgXAotCi1MT0NBTF9TUkNfRklMRVMgOj0gJChzb3J0ICQoTE9DQUxfU1JDX0ZJTEVTKSkKLQkJCi1MT0NBTF9DRkxBR1MgOj0gLURIQVZFX0NPTkZJR19IIC1VX1hPUEVOX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9NTAwIC1VX1BPU0lYX0NfU09VUkNFIC1EX1BPU0lYX0NfU09VUkNFPTE5OTUwNkwgLUROREVCVUcgCi0KLUxPQ0FMX0NfSU5DTFVERVMgOj0gJChMT0NBTF9QQVRIKSBcCi0JCSQoTE9DQUxfUEFUSCkvaW5jbHVkZSBcCi0JCSQoTE9DQUxfUEFUSCkvbmN1cnNlcyBcCi0KLUxPQ0FMX01PRFVMRV9UQUdTIDo9IGVuZwotTE9DQUxfTU9EVUxFIDo9IGxpYm5jdXJzZXMKLQotaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQotCi0jIENvcHkgb25seSBiYXNpYyB0ZXJtaW5hbCB0eXBlIGRlZmluaXRpb25zIGFzIG5jdXJzZXMtYmFzZSBpbiBkZWJpYW4gZG9lcyBieSBkZWZhdWx0LgotIyBodHRwOi8vYW5vbnNjbS5kZWJpYW4ub3JnL2dpdHdlYi8/cD1jb2xsYWItbWFpbnQvbmN1cnNlcy5naXQ7YT1ibG9iO2Y9ZGViaWFuL3J1bGVzO2hiPUhFQUQjbDE0MAotVEVSTUlORk9fRklMRVMgOj0gXAotCWEvYW5zaSBjL2NvbnMyNSBjL2N5Z3dpbiBkL2R1bWIgRS9FdGVybSBFL0V0ZXJtLWNvbG9yIGgvaHVyZCBsL2xpbnV4IFwKLQltL21hY2ggbS9tYWNoLWJvbGQgbS9tYWNoLWNvbG9yIHAvcGNhbnNpIHIvcnh2dCByL3J4dnQtYmFzaWMgIFwKLQlzL3NjcmVlbiBzL3NjcmVlbi1iY2Ugcy9zY3JlZW4tcyBzL3NjcmVlbi13IHMvc3VuIFwKLQlzL3NjcmVlbi0yNTZjb2xvciBzL3NjcmVlbi0yNTZjb2xvci1iY2Ugdi92dDEwMCB2L3Z0MTAyIFwKLQl2L3Z0MjIwIHYvdnQ1MiB4L3h0ZXJtIHgveHRlcm0teGZyZWU4NiB4L3h0ZXJtLWNvbG9yIHgveHRlcm0tcjUgeC94dGVybS1yNiBcCi0JeC94dGVybS12dDIyMCB4L3h0ZXJtLTI1NmNvbG9yIHcvd3N2dDI1IHcvd3N2dDI1bQotCi1URVJNSU5GT19TT1VSQ0UgOj0gJChMT0NBTF9QQVRIKS9saWIvdGVybWluZm8vCi1URVJNSU5GT19UQVJHRVQgOj0gJChUQVJHRVRfT1VUX0VUQykvdGVybWluZm8KLSQoVEVSTUlORk9fVEFSR0VUKTogJChBQ1ApCi0JCUBlY2hvICJjb3B5IHRlcm1pbmZvIHRvIC9ldGMvIiAKLQkJQG1rZGlyIC1wICRACi0JCUAkKGZvcmVhY2ggVEVSTUlORk9fRklMRSwkKFRFUk1JTkZPX0ZJTEVTKSwgXAotCQkJbWtkaXIgLXAgJEAvJChkaXIgJChURVJNSU5GT19GSUxFKSk7IFwKLQkJCSQoQUNQKSAkKFRFUk1JTkZPX1NPVVJDRSkvJChURVJNSU5GT19GSUxFKSAkQC8kKFRFUk1JTkZPX0ZJTEUpOyBcCi0JCSkKLUFMTF9ERUZBVUxUX0lOU1RBTExFRF9NT0RVTEVTICs9ICQoVEVSTUlORk9fVEFSR0VUKQpkaWZmIC0tZ2l0IGEvQ09QWUlORyBiL0NPUFlJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1MzJjZQotLS0gL2Rldi9udWxsCisrKyBiL0NPUFlJTkcKQEAgLTAsMCArMSwyOCBAQAorQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKK2NvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKK2Rpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAoraW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCitPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCitJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCitEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKK09USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgorVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKK0V4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQKK2hvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlCitzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4KK2F1dGhvcml6YXRpb24uCisKKy0tIHZpbGU6dHh0bW9kZSBmYz03MgorLS0gJElkOiBDT1BZSU5HLHYgMS4zIDIwMTUvMDEvMDMgMjA6MTI6MDEgdG9tIEV4cCAkCmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCBhYjdkY2Q4Li4xZmZlMTM2IDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAgLTEsNSArMSw1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgIC0tCkBAIC0yNSw3ICsyNSw3IEBACiAtLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgIC0tCiAtLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSAkSWQ6IElOU1RBTEwsdiAxLjEzNSAyMDA4LzExLzAyIDIxOjEzOjUxIHRvbSBFeHAgJAorLS0gJElkOiBJTlNUQUxMLHYgMS4xODcgMjAxNS8wNy8xNiAyMzo1OTowOCB0b20gRXhwICQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgIEhvdyB0byBpbnN0YWxsIE5jdXJzZXMvVGVybWluZm8gb24geW91ciBzeXN0ZW0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzksOSArMzksOCBAQAogaW5jbHVkaW5nIGBjKysnLCBgZm9ybScsIGBtYW4nLCBgbWVudScsICdtaXNjJywgYG5jdXJzZXMnLCBgcGFuZWwnLCBgcHJvZ3MnLAogYW5kIGB0ZXN0Jy4gIFNlZSB0aGUgUkVBRE1FIGZpbGUgZm9yIGEgcm9hZG1hcCB0byB0aGUgcGFja2FnZS4KIAotSWYgeW91IGFyZSBhIExpbnV4IG9yIEZyZWVCU0Qgb3IgTmV0QlNEIGRpc3RyaWJ1dGlvbiBpbnRlZ3JhdG9yIG9yIHBhY2thZ2VyLAotcGxlYXNlIHJlYWQgYW5kIGFjdCBvbiB0aGUgc2VjdGlvbiB0aXRsZWQgSUYgWU9VIEFSRSBBIFNZU1RFTSBJTlRFR1JBVE9SCi1iZWxvdy4KK0lmIHlvdSBhcmUgYSBkaXN0cmlidXRpb24gaW50ZWdyYXRvciBvciBwYWNrYWdlciwgcGxlYXNlIHJlYWQgYW5kIGFjdCBvbiB0aGUKK3NlY3Rpb24gdGl0bGVkIElGIFlPVSBBUkUgQSBTWVNURU0gSU5URUdSQVRPUiBiZWxvdy4KIAogSWYgeW91IGFyZSBjb252ZXJ0aW5nIGZyb20gQlNEIGN1cnNlcyBhbmQgZG8gbm90IGhhdmUgcm9vdCBhY2Nlc3MsIGJlIHN1cmUKIHRvIHJlYWQgdGhlIEJTRCBDT05WRVJTSU9OIE5PVEVTIHNlY3Rpb24gYmVsb3cuCkBAIC01OCwxMCArNTcsNiBAQAogSWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEFkYTk1IGJpbmRpbmcsIGdvIHRvIHRoZSBBZGE5NSBkaXJlY3RvcnkgYW5kCiBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyB0aGVyZS4gIFRoZSBBZGE5NSBiaW5kaW5nIGlzIG5vdCBjb3ZlcmVkIGJlbG93LgogCi1JZiB5b3UgYXJlIHVzaW5nIGFueXRoaW5nIGJ1dCAoYSkgTGludXgsIG9yIChiKSBvbmUgb2YgdGhlIDQuNEJTRC1iYXNlZAotaTM4NiBVbml4ZXMsIGdvIHJlYWQgdGhlIFBvcnRhYmlsaXR5IHNlY3Rpb24gaW4gdGhlIFRPLURPIGZpbGUgYmVmb3JlIHlvdQotZG8gYW55dGhpbmcgZWxzZS4KLQogCiBSRVFVSVJFTUVOVFM6CiAtLS0tLS0tLS0tLS0KQEAgLTg2LDE0ICs4MSwxNCBAQAogCiAgICAgVGhlIC0tcHJlZml4IG9wdGlvbiB0byBjb25maWd1cmUgY2hhbmdlcyB0aGUgcm9vdCBkaXJlY3RvcnkgZm9yIGluc3RhbGxpbmcKICAgICBuY3Vyc2VzLiAgVGhlIGRlZmF1bHQgaXMgbm9ybWFsbHkgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3Vzci9sb2NhbCwgZXhjZXB0Ci0gICAgZm9yIHN5c3RlbXMgd2hlcmUgbmN1cnNlcyBpcyBub3JtYWxseSBpbnN0YWxsZWQgYXMgYSBzeXN0ZW0gbGlicmFyeSwgZS5nLiwKLSAgICBMaW51eCwgdGhlIHZhcmlvdXMgQlNEIHN5c3RlbXMgYW5kIEN5Z3dpbi4gIFVzZSAtLXByZWZpeD0vdXNyIHRvIHJlcGxhY2UKLSAgICB5b3VyIGRlZmF1bHQgY3Vyc2VzIGRpc3RyaWJ1dGlvbi4KKyAgICBmb3Igc3lzdGVtcyB3aGVyZSBuY3Vyc2VzIGlzIG5vcm1hbGx5IGluc3RhbGxlZCBhcyBhIHN5c3RlbSBsaWJyYXJ5IChzZWUKKyAgICAiSUYgWU9VIEFSRSBBIFNZU1RFTSBJTlRFR1JBVE9SIikuICBVc2UgLS1wcmVmaXg9L3VzciB0byByZXBsYWNlIHlvdXIKKyAgICBkZWZhdWx0IGN1cnNlcyBkaXN0cmlidXRpb24uCiAKICAgICBUaGUgcGFja2FnZSBnZXRzIGluc3RhbGxlZCBiZW5lYXRoIHRoZSAtLXByZWZpeCBkaXJlY3RvcnkgYXMgZm9sbG93czoKIAogICAgIEluICQocHJlZml4KS9iaW46ICAgICAgICAgIHRpYywgaW5mb2NtcCwgY2FwdG9pbmZvLCB0c2V0LAotCQkJCXJlc2V0LCBjbGVhciwgdHB1dCwgdG9lCisJCQkJcmVzZXQsIGNsZWFyLCB0cHV0LCB0b2UsIHRhYnMKICAgICBJbiAkKHByZWZpeCkvbGliOiAgICAgICAgICBsaWJuY3Vyc2VzKi4qIGxpYmN1cnNlcy5hCiAgICAgSW4gJChwcmVmaXgpL3NoYXJlL3Rlcm1pbmZvOiBjb21waWxlZCB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMKICAgICBJbiAkKHByZWZpeCkvaW5jbHVkZTogICAgICBDIGhlYWRlciBmaWxlcwpAQCAtMTA1LDEyICsxMDAsMTIgQEAKIAogICAgIERvIG5vdCB1c2UgY29tbWFuZHMgc3VjaCBhcwogCi0gICAgCW1ha2UgaW5zdGFsbCBwcmVmaXg9WFhYCisJbWFrZSBpbnN0YWxsIHByZWZpeD1YWFgKIAogICAgIHRvIGNoYW5nZSB0aGUgcHJlZml4IGFmdGVyIGNvbmZpZ3VyYXRpb24sIHNpbmNlIHRoZSBwcmVmaXggdmFsdWUgaXMgdXNlZAogICAgIGZvciBzb21lIGFic29sdXRlIHBhdGhuYW1lcyBzdWNoIGFzIFRFUk1JTkZPLiAgSW5zdGVhZCBkbyB0aGlzCiAKLSAgICAJbWFrZSBpbnN0YWxsIERFU1RESVI9WFhYCisJbWFrZSBpbnN0YWxsIERFU1RESVI9WFhYCiAKICAgICBTZWUgYWxzbyB0aGUgZGlzY3Vzc2lvbiBvZiAtLXdpdGgtaW5zdGFsbC1wcmVmaXguCiAKQEAgLTE0Nyw3ICsxNDIsNyBAQAogICAgIGxpYnJhcnkgaW50ZXJmYWNlcyBhcmUgbm90IGJpbmFyeS1jb21wYXRpYmxlIHdpdGggdGhlIG5vbi13aWRlLWNoYXJhY3RlcgogICAgIHZlcnNpb24uICBCdWlsZGluZyBhbmQgcnVubmluZyB0aGUgd2lkZS1jaGFyYWN0ZXIgY29kZSByZWxpZXMgb24gYSBmYWlybHkKICAgICByZWNlbnQgaW1wbGVtZW50YXRpb24gb2YgbGliaWNvbnYuICBXZSBoYXZlIGJ1aWx0IHRoaXMgY29uZmlndXJhdGlvbiBvbgotICAgIExpbnV4IHVzaW5nIGxpYmljb252LCBzb21ldGltZXMgcmVxdWlyaW5nIGxpYnV0ZjguCisgICAgdmFyaW91cyBzeXN0ZW1zIHVzaW5nIGxpYmljb252LCBzb21ldGltZXMgcmVxdWlyaW5nIGxpYnV0ZjguCiAKICAgICBJZiB5b3UgY29uZmlndXJlIHVzaW5nIHRoZSAtLXdpdGgtcHRocmVhZCBvcHRpb24sIGEgInQiIGlzIGFwcGVuZGVkIHRvCiAgICAgdGhlIGxpYnJhcnkgbmFtZXMgKGUuZy4sIGxpYm5jdXJzZXN0LmEsIGxpYm5jdXJzZXN0dy5hKS4KQEAgLTE3MCw4ICsxNjUsOCBAQAogCS4vY29uZmlndXJlIC0td2l0aC1zaGFyZWQgLS13aXRob3V0LW5vcm1hbCAtLXdpdGhvdXQtZGVidWcKIAogICAgIFJ1bGVzIGZvciBnZW5lcmF0aW5nIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGhpZ2hseSBkZXBlbmRlbnQgdXBvbiB0aGUgY2hvaWNlCi0gICAgb2YgaG9zdCBzeXN0ZW0gYW5kIGNvbXBpbGVyLiAgV2UndmUgYmVlbiB0ZXN0aW5nIHNoYXJlZCBsaWJyYXJpZXMgb24gTGludXgKLSAgICBhbmQgU3VuT1Mgd2l0aCBnY2MsIGJ1dCBtb3JlIHdvcmsgbmVlZHMgdG8gYmUgZG9uZSB0byBtYWtlIHNoYXJlZCBsaWJyYXJpZXMKKyAgICBvZiBob3N0IHN5c3RlbSBhbmQgY29tcGlsZXIuICBXZSd2ZSBiZWVuIHRlc3Rpbmcgc2hhcmVkIGxpYnJhcmllcyBvbgorICAgIHNldmVyYWwgc3lzdGVtcywgYnV0IG1vcmUgd29yayBuZWVkcyB0byBiZSBkb25lIHRvIG1ha2Ugc2hhcmVkIGxpYnJhcmllcwogICAgIHdvcmsgb24gb3RoZXIgc3lzdGVtcy4KIAogICAgIElmIHlvdSBoYXZlIGxpYnRvb2wgaW5zdGFsbGVkLCB5b3UgY2FuIHR5cGUKQEAgLTMyMCw2ICszMTUsMTAgQEAKIAlwcm9ncmFtcyBhcmUgdXNlZnVsIGluIHRoaXMgY29uZmlndXJhdGlvbiwgZS5nLiwgcmVzZXQgYW5kIHRwdXQgdmVyc3VzCiAJaW5mb2NtcCBhbmQgdGljLgogCisgICAgLS1kaXNhYmxlLWRiLWluc3RhbGwKKwlEbyBub3QgaW5zdGFsbCB0aGUgdGVybWluYWwgZGF0YWJhc2UuICBUaGlzIGlzIHVzZWQgdG8gb21pdCBmZWF0dXJlcworCWZvciBwYWNrYWdlcywgYXMgZG9uZSB3aXRoIC0td2l0aG91dC1wcm9ncy4KKwogICAgIC0tZGlzYWJsZS1leHQtZnVuY3MKIAlEaXNhYmxlIGZ1bmN0aW9uLWV4dGVuc2lvbnMuICBDb25maWd1cmUgbmN1cnNlcyB3aXRob3V0IHRoZSBmdW5jdGlvbnMKIAl0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIGJ5IFhTSS4gIFNlZSBuY3Vyc2VzL21vZHVsZXMgZm9yIHRoZSBleGFjdApAQCAtMzM4LDYgKzMzNywyNSBAQAogICAgIC0tZGlzYWJsZS1sYXJnZWZpbGUKIAlEaXNhYmxlIGNvbXBpbGVyIGZsYWdzIG5lZWRlZCB0byB1c2UgbGFyZ2UtZmlsZSBpbnRlcmZhY2VzLgogCisgICAgLS1kaXNhYmxlLWxpYi1zdWZmaXhlcworCVN1cHByZXNzIHRoZSAidyIsICJ0IiBvciAidHciIHN1ZmZpeGVzIHdoaWNoIG5vcm1hbGx5IHdvdWxkIGJlIGFkZGVkCisJdG8gdGhlIGxpYnJhcnkgbmFtZXMgZm9yIHRoZSAtLWVuYWJsZS13aWRlYyBhbmQgLS13aXRoLXB0aHJlYWQgb3B0aW9ucy4KKworICAgIC0tZGlzYWJsZS1saWJ0b29sLXZlcnNpb24KKwl3aGVuIHVzaW5nIC0td2l0aC1saWJ0b29sLCBjb250cm9sIGhvdyB0aGUgbWFqb3IvbWlub3IgdmVyc2lvbiBudW1iZXJzCisJYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyB0aGUgbGlicmFyeSBuYW1lLgorCisJVGhlIGRlZmF1bHQgdXNlcyB0aGUgLXZlcnNpb24tbnVtYmVyIGZlYXR1cmUgb2YgbGlidG9vbCwgd2hpY2ggbWFrZXMKKwl0aGUgbGlicmFyeSBuYW1lcyBjb21wYXRpYmxlICh0aG91Z2ggbm90IGlkZW50aWNhbCkgd2l0aCB0aGUgc3RhbmRhcmQKKwlidWlsZCB1c2luZyAtLXdpdGgtc2hhcmVkLgorCisJVXNlIC0tZGlzYWJsZS1saWJ0b29sLXZlcnNpb24gdG8gdXNlIHRoZSBsaWJ0b29sIC12ZXJzaW9uLWluZm8gZmVhdHVyZS4KKwlUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBzZXR0aW5nIHVzZWQgYmVmb3JlIHBhdGNoIDIwMTAwNTE1LgorCisJU3RhcnRpbmcgd2l0aCBwYXRjaCAyMDE0MTExNSwgdXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIHRoZSBjb25maWd1cmUKKwlzY3JpcHQgdG8gYXBwbHkgdGhlIHRvcC1sZXZlbCBWRVJTSU9OIGZpbGUgdG8gdGhlIEFCSSB2ZXJzaW9uIHVzZWQKKwlmb3IgbGlidG9vbC4KKwogICAgIC0tZGlzYWJsZS1sZWFrcwogCUZvciB0ZXN0aW5nLCBjb21waWxlLWluIGNvZGUgdGhhdCBmcmVlcyBtZW1vcnkgdGhhdCBub3JtYWxseSB3b3VsZCBub3QKIAliZSBmcmVlZCwgdG8gc2ltcGxpZnkgYW5hbHlzaXMgb2YgbWVtb3J5LWxlYWtzLgpAQCAtMzQ2LDExICszNjQsMTcgQEAKIAlhIHNjcmVlbiwgc2luY2UgKGV2ZW4gYWZ0ZXIgY2FsbGluZyBlbmR3aW4oKSksIGl0IG11c3QgYmUgYXZhaWxhYmxlCiAJZm9yIHVzZSBpbiB0aGUgbmV4dCBjYWxsIHRvIHJlZnJlc2goKS4gIFRoZXJlIGFyZSBhbHNvIGNodW5rcyBvZgogCW1lbW9yeSBoZWxkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgVGhhdCBtYWtlcyBpdCBoYXJkIHRvIGFuYWx5emUKLQljdXJzZXMgYXBwbGljYXRpb25zIGZvciBtZW1vcnkgbGVha3MuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCBidWlsZAotCWEgZGVidWdnaW5nIHZlcnNpb24gb2YgdGhlIG5jdXJzZXMgbGlicmFyeSB3aGljaCBmcmVlcyB0aG9zZSBjaHVua3MKKwljdXJzZXMgYXBwbGljYXRpb25zIGZvciBtZW1vcnkgbGVha3MuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCBidWlsZCBhCisJZGVidWdnaW5nIHZlcnNpb24gb2YgdGhlIG5jdXJzZXMgbGlicmFyeSB3aGljaCBmcmVlcyB0aG9zZSBjaHVua3MKIAl3aGljaCBpdCBjYW4sIGFuZCBwcm92aWRlcyB0aGUgX25jX2ZyZWVfYW5kX2V4aXQoKSBmdW5jdGlvbiB0byBmcmVlCi0JdGhlIHJlbWFpbmRlciBvbiBleGl0LiAgVGhlIG5jdXJzZXMgdXRpbGl0eSBhbmQgdGVzdCBwcm9ncmFtcyB1c2UgdGhpcwotCWZlYXR1cmUsIGUuZy4sIHZpYSB0aGUgRXhpdFByb2dyYW0oKSBtYWNyby4KKwl0aGUgcmVtYWluZGVyIGFuZCB0aGVuIGV4aXQuICBUaGUgbmN1cnNlcyB1dGlsaXR5IGFuZCB0ZXN0IHByb2dyYW1zCisJdXNlIHRoaXMgZmVhdHVyZSwgZS5nLiwgdmlhIHRoZSBFeGl0UHJvZ3JhbSgpIG1hY3JvLgorCisJQmVjYXVzZSB0aGlzIGxpZXMgb3V0c2lkZSBvZiB0aGUgbGlicmFyeSdzIGludGVuZGVkIHVzYWdlLCBpdCBpcyBub3QKKwlub3JtYWxseSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIEFCSS4gIElmIHRoZXJlIHdlcmUgc29tZSAoYXMgeWV0CisJdW5wbGFubmVkKSBleHRlbnNpb24gd2hpY2ggZnJlZXMgbWVtb3J5IGluIGEgbWFubmVyIHRoYXQgd291bGQgbGV0IHRoZQorCWxpYnJhcnkgcmVzdW1lIGFuZCByZWFsbG9jYXRlIG1lbW9yeSwgdGhlbiB0aGF0IHdvdWxkIG5vdCB1c2UgYSAiX25jXyIKKwlwcmVmaXguCiAKICAgICAtLWRpc2FibGUtbHA2NAogCVRoZSBoZWFkZXIgZmlsZXMgd2lsbCBpZ25vcmUgdXNlIG9mIHRoZSBfTFA2NCBzeW1ib2wgdG8gbWFrZSBjaHR5cGUKQEAgLTM3Niw2ICs0MDAsMzcgQEAKIAlyYXRoZXIgdGhhbiB0aGUgaW5jbHVkZSBkaXJlY3RvcnkuICBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgdG8gYXZvaWQKIAljb21waWxlLXRpbWUgY29uZmxpY3RzIHdpdGggb3RoZXIgdmVyc2lvbnMgb2YgY3Vyc2VzLmgKIAorCVB1dHRpbmcgdGhlIGhlYWRlciBmaWxlcyBpbnRvIGEgc3ViZGlyZWN0b3J5IGFzc3VtZXMgdGhhdCBhcHBsaWNhdGlvbnMKKwl3aWxsIGZvbGxvdyB0aGUgKHN0YW5kYXJkKSBwcmFjdGljZSBvZiBpbmNsdWRpbmcgdGhlIGhlYWRlcnMgd2l0aAorCXJlZmVyZW5jZSB0byB0aGUgc3ViZGlyZWN0b3J5IG5hbWUuICBGb3IgaW5zdGFuY2UsIHRoZSBub3JtYWwgbmN1cnNlcworCWhlYWRlciB3b3VsZCBiZSBpbmNsdWRlZCB1c2luZworCisJCSNpbmNsdWRlIDxuY3Vyc2VzL2N1cnNlcy5oPgorCQkjaW5jbHVkZSA8bmN1cnNlcy90ZXJtLmg+CisKKwl3aGlsZSB0aGUgbmN1cnNlc3cgaGVhZGVycyB3b3VsZCBiZSBmb3VuZCB0aGlzIHdheToKKworCQkjaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CisJCSNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisKKwlJbiBlaXRoZXIgY2FzZSAod2l0aCBvciB3aXRob3V0IHRoZSAtLWRpc2FibGUtb3ZlcndyaXRlIG9wdGlvbiksCisJYWxtb3N0IGFsbCBhcHBsaWNhdGlvbnMgYXJlIGRlc2lnbmVkIHRvIGluY2x1ZGUgYSByZWxhdGVkIHNldCBvZgorCWN1cnNlcyBoZWFkZXIgZmlsZXMgZnJvbSB0aGUgc2FtZSBkaXJlY3RvcnkuCisKKwlNYW5pcHVsYXRpbmcgdGhlIC0taW5jbHVkZWRpciBjb25maWd1cmUgb3B0aW9uIHRvIHB1dCBoZWFkZXIgZmlsZXMKKwlkaXJlY3RseSBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgbm9ybWFsIGluY2x1ZGUtZGlyZWN0b3J5IGRlZmVhdHMKKwl0aGlzLCBhbmQgYnJlYWtzIGJ1aWxkcyBvZiBwb3J0YWJsZSBhcHBsaWNhdGlvbnMuICBMaWtld2lzZSwgcHV0dGluZworCXNvbWUgaGVhZGVycyBpbiAvdXNyL2luY2x1ZGUsIGFuZCBvdGhlcnMgaW4gYSBzdWJkaXJlY3RvcnkgaXMgYSBnb29kCisJd2F5IHRvIGJyZWFrIGJ1aWxkcy4KKworCVdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1vdmVyd3JpdGUsIHRoZSBpbnN0YWxsZWQgaGVhZGVyIGZpbGVzJworCWVtYmVkZGVkICNpbmNsdWRlJ3MgYXJlIGFkanVzdGVkIHRvIHVzZSB0aGUgc2FtZSBzdHlsZSBvZiBpbmNsdWRlcworCW5vdGVkIGFib3ZlLiAgSW4gcGFydGljdWxhciwgdGhlIHVuY3RybC5oIGhlYWRlciBpcyBpbmNsdWRlZCBmcm9tCisJY3Vyc2VzLmgsIHdoaWNoIG1lYW5zIHRoYXQgYSBtYWtlZmlsZSB3aGljaCB0ZWxscyB0aGUgY29tcGlsZXIgdG8KKwlpbmNsdWRlIGRpcmVjdGx5IGZyb20gdGhlIHN1YmRpcmVjdG9yeSB3aWxsIGZhaWwgdG8gY29tcGlsZSBjb3JyZWN0bHkuCisJV2l0aG91dCBzb21lIHNwZWNpYWwgZWZmb3J0LCBpdCB3aWxsIGVpdGhlciBmYWlsIHRvIGNvbXBpbGUgYXQgYWxsLAorCW9yIHRoZSBjb21waWxlciBtYXkgZmluZCBhIGRpZmZlcmVudCB1bmN0cmwuaCBmaWxlLgorCiAgICAgLS1kaXNhYmxlLXJlbGluawogCUlmIC0tZW5hYmxlLXJwYXRoIGlzIGdpdmVuLCB0aGUgZ2VuZXJhdGVkIG1ha2VmaWxlcyBub3JtYWxseSB3aWxsCiAJcmVidWlsZCB0aGUgbGlicmFyaWVzIGR1cmluZyBpbnN0YWxsLiAgVXNlIHRoaXMgb3B0aW9uIHRvIHNpbXBseQpAQCAtMzg5LDE5ICs0NDQsMjYgQEAKIAlhcHBsaWNhdGlvbi4gIFRoZXNlIGFyZSAoZm9yIGV4YW1wbGUgJFRFUk1JTkZPKSB0aG9zZSB0aGF0IGFsbG93IHRoZQogCXNlYXJjaCBwYXRoIGZvciB0aGUgdGVybWluZm8gb3IgdGVybWNhcCBlbnRyeSB0byBiZSBjdXN0b21pemVkLgogCisgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2sKKwlOb3JtYWxseSB0aGUgY29uZmlndXJlIHNjcmlwdCBoZWxwcyBsaW5rIGxpYnJhcmllcyBmb3VuZCBpbiB1bnVzdWFsCisJcGxhY2VzIGJ5IGFkZGluZyBhbiBycGF0aCBvcHRpb24gdG8gdGhlIGxpbmsgY29tbWFuZC4gIElmIHlvdSBhcmUKKwlidWlsZGluZyBwYWNrYWdlcywgdGhpcyBmZWF0dXJlIG1heSBiZSByZWR1bmRhbnQuICBVc2UgdGhpcyBvcHRpb24KKwl0byBzdXBwcmVzcyB0aGUgZmVhdHVyZS4KKwogICAgIC0tZGlzYWJsZS1zY3JvbGwtaGludHMKIAlDb21waWxlIHdpdGhvdXQgc2Nyb2xsLWhpbnRzIGNvZGUuICBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIHdoZW4KIAloYXNobWFwIHNjcm9sbGluZyBpcyBjb25maWd1cmVkLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KIAogICAgIC0tZGlzYWJsZS10aWMtZGVwZW5kcwogCVdoZW4gYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcywgbm9ybWFsbHkgdGhlIHRpYyBsaWJyYXJ5IGlzIGxpbmtlZCB0bwotCWRlcGVuZCB1cG9uIHRoZSBuY3Vyc2VzIGxpYnJhcnkgKGFuZCBpbiB0dXJuLCBvbiB0aGUgdGVybS1saWJyYXJ5IGlmCi0JdGhlIC0td2l0aC10ZXJtbGliIG9wdGlvbiB3YXMgZ2l2ZW4pLiAgVGhlIHRpYy0gYW5kIHRlcm0tbGlicmFyaWVzCi0JQUJJIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgLS1lbmFibGUtd2lkZWMgb3B0aW9uLiBTb21lIHBhY2thZ2VycyBoYXZlCi0JdXNlZCB0aGlzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGxpYnJhcnkgZmlsZXMgd2hpY2ggYXJlIHBhY2thZ2VkCi0JYnkgdXNpbmcgb25seSBvbmUgY29weSBvZiB0aG9zZSBsaWJyYXJpZXMuICBUbyBtYWtlIHRoaXMgd29yayBwcm9wZXJseSwKKwlkZXBlbmQgdXBvbiB0aGUgbmN1cnNlcyBsaWJyYXJ5IChvciBlcXVpdmFsZW50bHksIG9uIHRoZSB0aW5mby1saWJyYXJ5CisJaWYgdGhlIC0td2l0aC10ZXJtbGliIG9wdGlvbiB3YXMgZ2l2ZW4pLiAgVGhlIHRpYy0gYW5kIHRpbmZvLWxpYnJhcnkKKwlBQklzIGRvIG5vdCBkZXBlbmQgb24gdGhlIC0tZW5hYmxlLXdpZGVjIG9wdGlvbi4gIFNvbWUgcGFja2FnZXJzIGhhdmUKKwl1c2VkIHRoaXMgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgbGlicmFyeSBmaWxlcyB3aGljaCBhcmUgcGFja2FnZWQgYnkKKwl1c2luZyBvbmx5IG9uZSBjb3B5IG9mIHRob3NlIGxpYnJhcmllcy4gIFRvIG1ha2UgdGhpcyB3b3JrIHByb3Blcmx5LAogCXRoZSB0aWMgbGlicmFyeSBtdXN0IGJlIGJ1aWx0IHdpdGhvdXQgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBvbiB0aGUKLQluY3Vyc2VzIChvciBuY3Vyc2VzdykgbGlicmFyeS4gIFVzZSB0aGlzIGNvbmZpZ3VyZSBvcHRpb24gdG8gZG8gdGhhdC4KKwl1bmRlcmx5aW5nIGxpYnJhcnkgKG5jdXJzZXMgdnMgbmN1cnNlc3csIHRpbmZvIHZzIHRpbmZvdykuICBVc2UgdGhpcworCWNvbmZpZ3VyZSBvcHRpb24gdG8gZG8gdGhhdC4KIAlGb3IgZXhhbXBsZQogCQljb25maWd1cmUgLS13aXRoLXRpY2xpYiAtLXdpdGgtc2hhcmVkIC0tZGlzYWJsZS10aWMtZGVwZW5kcwogCkBAIC00MjEsNyArNDgzLDcgQEAKIAljaGFuZ2VzIHNldmVyYWwgZGF0YSByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucyB0byB3b3JrIGFyb3VuZCB0aGlzCiAJcHJvYmxlbS4KIAotCU5PVEU6ICBXaXRoIG5jdXJzZXMgNS4xLCB0aGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBzaW5jZSB3ZSBhcmUKKwlOT1RFOiBXaXRoIG5jdXJzZXMgNS4xLCB0aGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBzaW5jZSB3ZSBhcmUKIAl0b2xkIHRoYXQgc29tZSBsaW5rZXJzIGludGVycHJldCB1bmluaXRpYWxpemVkIGdsb2JhbCBkYXRhIGFzIGEKIAlkaWZmZXJlbnQgdHlwZSBvZiByZWZlcmVuY2Ugd2hpY2ggYmVoYXZlcyBhcyBkZXNjcmliZWQgYWJvdmUuICBXZSBoYXZlCiAJZXhwbGljaXRseSBpbml0aWFsaXplZCBhbGwgb2YgdGhlIGdsb2JhbCBkYXRhIHRvIHdvcmsgYXJvdW5kIHRoZQpAQCAtNDUwLDcgKzUxMiw3IEBACiAJd2FybmluZy4gIFRoZXJlIHdpbGwgc3RpbGwgYmUgd2FybmluZ3MgZHVlIHRvIHN1YnRsZSBpbmNvbnNpc3RlbmNpZXMKIAlpbiB0aGUgaW50ZXJmYWNlLCBidXQgYXQgYSBsb3dlciBsZXZlbC4KIAotCU5PVEU6ICBjb25maWd1cmluZyBuY3Vyc2VzIHdpdGggdGhpcyBvcHRpb24gbWF5IGRldHJhY3QgZnJvbSB0aGUKKwlOT1RFOiBjb25maWd1cmluZyBuY3Vyc2VzIHdpdGggdGhpcyBvcHRpb24gbWF5IGRldHJhY3QgZnJvbSB0aGUKIAlwb3J0YWJpbGl0eSBvZiB5b3VyIGFwcGxpY2F0aW9ucyBieSBlbmNvdXJhZ2luZyB5b3UgdG8gdXNlIGNvbnN0IGluCiAJcGxhY2VzIHdoZXJlIHRoZSBYU0kgY3Vyc2VzIGludGVyZmFjZSB3b3VsZCBub3QgYWxsb3cgdGhlbS4gIFNpbWlsYXIKIAlpc3N1ZXMgYXJpc2Ugd2hlbiBwb3J0aW5nIHRvIFNWcjQgY3Vyc2VzLCB3aGljaCB1c2VzIGNvbnN0IGluIGV2ZW4KQEAgLTQ3MSw3ICs1MzMsNyBAQAogCWVuY29kZWQuICBUaGlzIGFwcGxpZXMgb25seSB0byB0aGUgd2lkZS1jaGFyYWN0ZXIgKC0tZW5hYmxlLXdpZGVjKQogCWNvbmZpZ3VyYXRpb24uCiAKLQlOT1RFOiAgdXNpbmcgdGhpcyBvcHRpb24gd2lsbCBtYWtlIGxpYnJhcmllcyB3aGljaCBhcmUgbm90IGJpbmFyeS0KKwlOT1RFOiB1c2luZyB0aGlzIG9wdGlvbiB3aWxsIG1ha2UgbGlicmFyaWVzIHdoaWNoIGFyZSBub3QgYmluYXJ5LQogCWNvbXBhdGlibGUgd2l0aCBsaWJuY3Vyc2VzdyA1LjQuICBOb25lIG9mIHRoZSBpbnRlcmZhY2VzIGNoYW5nZSwgYnV0CiAJYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYW4gYXJyYXkgb2YgY2NoYXJfdCdzIG11c3QgYmUgcmVjb21waWxlZC4KIApAQCAtNDgwLDEwICs1NDIsMTggQEAKIAlUaGF0IGFsbG93cyBvbmUgdG8gdXNlIG5jdXJzZXMgd2l0aCBhIHdoZWVsIG1vdXNlIHdpdGggeHRlcm0gb3IKIAlzaW1pbGFyIFggdGVybWluYWwgZW11bGF0b3JzLgogCi0JTk9URTogIHVzaW5nIHRoaXMgb3B0aW9uIHdpbGwgbWFrZSBsaWJyYXJpZXMgd2hpY2ggYXJlIG5vdCBiaW5hcnktCisJTk9URTogdXNpbmcgdGhpcyBvcHRpb24gd2lsbCBtYWtlIGxpYnJhcmllcyB3aGljaCBhcmUgbm90IGJpbmFyeS0KIAljb21wYXRpYmxlIHdpdGggbGlibmN1cnNlc3cgNS40LiAgTm9uZSBvZiB0aGUgaW50ZXJmYWNlcyBjaGFuZ2UsIGJ1dAogCWFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIG1vdXNlIG1hc2sgbW1hc2tfdCdzIG11c3QgYmUgcmVjb21waWxlZC4KIAorICAgIC0tZW5hYmxlLWV4dC1wdXR3aW4KKwlNb2RpZnkgdGhlIGZpbGUtZm9ybWF0IHdyaXR0ZW4gYnkgcHV0d2luKCkgdG8gdXNlIHByaW50YWJsZSB0ZXh0IHJhdGhlcgorCXRoYW4gYmluYXJ5IGZpbGVzLCBhbGxvd2luZyBnZXR3aW4oKSB0byByZWFkIHNjcmVlbiBkdW1wcyB3cml0dGVuIGJ5CisJZGlmZmVyZW50bHktY29uZmlndXJlZCBuY3Vyc2VzIGxpYnJhcmllcy4gIFRoZSBleHRlbmRlZCBnZXR3aW4oKSBjYW4KKwlzdGlsbCByZWFkIGJpbmFyeSBzY3JlZW4gZHVtcHMgZnJvbSB0aGUgInNhbWUiIGNvbmZpZ3VyYXRpb24gb2YKKwluY3Vyc2VzLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIEFCSSAodGhlIGJpbmFyeSBpbnRlcmZhY2Ugc2VlbiBieQorCWNhbGxpbmcgYXBwbGljYXRpb25zKS4KKwogICAgIC0tZW5hYmxlLWdldGNhcAogCVVzZSB0aGUgNC40QlNEIGdldGNhcCBjb2RlIGlmIGF2YWlsYWJsZSwgb3IgYSBidW5kbGVkIHZlcnNpb24gb2YgaXQgdG8KIAlmZXRjaCB0ZXJtY2FwIGVudHJpZXMuICBFbnRyaWVzIHJlYWQgaW4gdGhpcyB3YXkgY2Fubm90IHVzZSAobWFrZQpAQCAtNTAwLDcgKzU3MCw3IEBACiAgICAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlCiAJQ2FjaGUgdHJhbnNsYXRlZCB0ZXJtY2FwcyB1bmRlciB0aGUgZGlyZWN0b3J5ICRIT01FLy50ZXJtaW5mbwogCi0JTk9URTogIHRoaXMgc291bmRzIGdvb2QgLSBpdCBtYWtlcyBuY3Vyc2VzIHJ1biBmYXN0ZXIgdGhlIHNlY29uZCB0aW1lLgorCU5PVEU6IHRoaXMgc291bmRzIGdvb2QgLSBpdCBtYWtlcyBuY3Vyc2VzIHJ1biBmYXN0ZXIgdGhlIHNlY29uZCB0aW1lLgogCUJ1dCBsb29rIHdoZXJlIHRoZSBkYXRhIGNvbWVzIGZyb20gLSBhbiAvZXRjL3Rlcm1jYXAgY29udGFpbmluZyBsb3RzIG9mCiAJZW50cmllcyB0aGF0IGFyZSBub3QgdXAgdG8gZGF0ZS4gIElmIHlvdSBjb25maWd1cmUgd2l0aCB0aGlzIG9wdGlvbiBhbmQKIAlmb3JnZXQgdG8gaW5zdGFsbCB0aGUgdGVybWluZm8gZGF0YWJhc2UgYmVmb3JlIHJ1bm5pbmcgYW4gbmN1cnNlcwpAQCAtNTEzLDYgKzU4MywxMCBAQAogCW1heSBub3QgYmUgYWNjdXJhdGUsIG9yIHRoYXQgeW91ciBzdHR5IHNldHRpbmdzIGhhdmUgZGlzYWJsZWQgdGhlIHVzZQogCW9mIHRhYnMuCiAKKyAgICAtLWVuYWJsZS1pbnRlcm9wCisJQ29tcGlsZS1pbiBleHBlcmltZW50YWwgaW50ZXJvcCBiaW5kaW5ncy4gIFRoZXNlIHByb3ZpZGUgZ2VuZXJpYyB0eXBlcworCWZvciB0aGUgZm9ybS1saWJyYXJ5LgorCiAgICAgLS1lbmFibGUtbWl4ZWQtY2FzZQogCUNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpbGVzeXN0ZW0gb24gd2hpY2ggdGhlIHRlcm1pbmZvIGRhdGFiYXNlIHJlc2lkZXMKIAlzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcyAobm9ybWFsIGZvciBVTklYLCBidXQgbm90IG9uIG90aGVyCkBAIC01MjUsMTEgKzU5OSwyMyBAQAogCXRlcm1pbmZvIGVudHJpZXMuICBUaGlzIGlzIHRoZSBkZWZhdWx0LCB1bmxlc3MgeW91IGhhdmUgZGlzYWJsZWQgdGhlCiAJZXh0ZW5kZWQgZnVuY3Rpb25zLgogCisgICAgLS1lbmFibGUtcGMtZmlsZXMKKwlJZiBwa2ctY29uZmlnIGlzIGZvdW5kIChzZWUgLS13aXRoLXBrZy1jb25maWcpLCBnZW5lcmF0ZSAiLnBjIiBmaWxlcworCWZvciBlYWNoIG9mIHRoZSBsaWJyYXJpZXMsIGFuZCBpbnN0YWxsIHRoZW0gaW4gcGtnLWNvbmZpZydzIGxpYnJhcnkKKwlkaXJlY3RvcnkuCisKKyAgICAtLWVuYWJsZS1wdGhyZWFkcy1laW50cgorCWFkZCBsb2dpYyBpbiB0aHJlYWRlZCBjb25maWd1cmF0aW9uIHRvIGVuc3VyZSB0aGF0IGEgcmVhZCgyKSBzeXN0ZW0KKwljYWxsIGNhbiBiZSBpbnRlcnJ1cHRlZCBmb3IgU0lHV0lOQ0guCisKICAgICAtLWVuYWJsZS1yZWVudHJhbnQKIAlDb21waWxlIGV4cGVyaW1lbnRhbCBjb25maWd1cmF0aW9uIHdoaWNoIGltcHJvdmVzIHJlZW50cmFudCB1c2Ugb2YgdGhlCiAJbGlicmFyeSBieSByZWR1Y2luZyBnbG9iYWwgYW5kIHN0YXRpYyB2YXJpYWJsZXMuICBUaGlzIG9wdGlvbiBpcyBhbHNvCiAJc2V0IGlmIC0td2l0aC1wdGhyZWFkIGlzIHVzZWQuCiAKKwlFbmFibGluZyB0aGlzIG9wdGlvbiBhZGRzIGEgInQiIHRvIHRoZSBsaWJyYXJ5IG5hbWVzLCBleGNlcHQgZm9yIHRoZQorCXNwZWNpYWwgY2FzZSB3aGVuIC0tZW5hYmxlLXdlYWstc3ltYm9scyBpcyBhbHNvIHVzZWQuCisKICAgICAtLWVuYWJsZS1ycGF0aAogCVVzZSBycGF0aCBvcHRpb24gd2hlbiBnZW5lcmF0aW5nIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCAod2l0aCBzb21lCiAJcmVzdHJpY3Rpb25zKSB3aGVuIGxpbmtpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcHJvZ3JhbXMuICBUaGlzIG9yaWdpbmFsbHkKQEAgLTU2NSw2ICs2NTEsMTkgQEAKIAlpcyBub3Qgc3RyaWN0bHkgY29tcGF0aWJsZS4gIFRoaXMgb3B0aW9uIGFsbG93cyBvbmUgdG8gaW1wbGVtZW50IHRoaXMKIAlhbHRlcmF0aW9uIHdpdGhvdXQgcGF0Y2hpbmcgdGhlIHNvdXJjZSBjb2RlLgogCisgICAgLS1lbmFibGUtc3AtZnVuY3MKKwlDb21waWxlLWluIHN1cHBvcnQgZm9yIGV4dGVuZGVkIGZ1bmN0aW9ucyB3aGljaCBhY2NlcHQgYSBTQ1JFRU4gcG9pbnRlciwKKwlyZWR1Y2luZyB0aGUgbmVlZCBmb3IganVnZ2xpbmcgdGhlIGdsb2JhbCBTUCB2YWx1ZSB3aXRoIHNldF90ZXJtKCkgYW5kCisJZGVsc2NyZWVuKCkuCisKKyAgICAtLWVuYWJsZS1zdHJpbmctaGFja3MKKwlDb250cm9scyB3aGV0aGVyIHN0cmxjYXQgYW5kIHN0cmxjcHkgbWF5IGJlIHVzZWQuICBUaGUgc2FtZSBpc3N1ZQorCWFwcGxpZXMgdG8gT3BlbkJTRCdzIHdhcm5pbmdzIGFib3V0IHNucHJpbnRmLCBub3RpbmcgdGhhdCB0aGlzIGZ1bmN0aW9uCisJaXMgd2Vha2x5IHN0YW5kYXJkaXplZC4KKworCUFzaWRlIGZyb20gc3RpZmxpbmcgdGhlc2Ugd2FybmluZ3MsIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQKKwlpbiBuY3Vyc2VzLgorCiAgICAgLS1lbmFibGUtc3ltbGlua3MKIAlJZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcywgbWFrZSB0aWMgdXNlIHN5bWJvbGljIGxpbmtzCiAJcmF0aGVyIHRoYW4gaGFyZCBsaW5rcyB0byBzYXZlIGRpc2tzcGFjZSB3aGVuIHdyaXRpbmcgYWxpYXNlcyBpbiB0aGUKQEAgLTU3NiwxMSArNjc1LDIyIEBACiAJY2FwYWJpbGl0aWVzIGFzIHVzZXItZGVmaW5lZCBzdHJpbmdzLiAgVGhpcyBvcHRpb24gaXMgdGhlIGRlZmF1bHQsCiAJdW5sZXNzIHlvdSBoYXZlIGRpc2FibGVkIHRoZSBleHRlbmRlZCBmdW5jdGlvbnMuCiAKKyAgICAtLWVuYWJsZS10ZXJtLWRyaXZlcgorCUVuYWJsZSBleHBlcmltZW50YWwgdGVybWluYWwtZHJpdmVyLiAgVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBmb3IgdGhlCisJTWluR1cgcG9ydCwgYnkgcHJvdmlkaW5nIGEgd2F5IHRvIHN1YnN0aXR1dGUgdGhlIGxvdy1sZXZlbCB0ZXJtaW5mbworCWxpYnJhcnkgd2l0aCBkaWZmZXJlbnQgdGVybWluYWwgZHJpdmVycy4KKwogICAgIC0tZW5hYmxlLXRlcm1jYXAKIAlDb21waWxlIGluIHN1cHBvcnQgZm9yIHJlYWRpbmcgdGVybWluYWwgZGVzY3JpcHRpb25zIGZyb20gdGVybWNhcCBpZiBubwogCW1hdGNoIGlzIGZvdW5kIGluIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4gIFNlZSBhbHNvIHRoZSAtLWVuYWJsZS1nZXRjYXAKIAlhbmQgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIG9wdGlvbnMuCiAKKwlUZXJtY2FwIHN1cHBvcnQgcmVxdWlyZXMgcnVuLXRpbWUgcGFyc2luZyByYXRoZXIgdGhhbiBsb2FkaW5nCisJcHJlZGlnZXN0ZWQgZGF0YS4gIElmIHlvdSBoYXZlIHNwZWNpZmllZCAtLXdpdGgtdGljbGliLCB0aGVuIHlvdQorCWNhbm5vdCBoYXZlIHRlcm1jYXAgc3VwcG9ydCBzaW5jZSBydW4tdGltZSBwYXJzaW5nIGlzIGRvbmUgaW4gdGhlCisJdGljIGxpYnJhcnksIHdoaWNoIGlzIGludGVudGlvbmFsbHkgbm90IHBhcnQgb2Ygbm9ybWFsIGxpbmthZ2UKKwlkZXBlbmRlbmNpZXMuCisKICAgICAtLWVuYWJsZS13YXJuaW5ncwogCVR1cm4gb24gR0NDIGNvbXBpbGVyIHdhcm5pbmdzLiAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBmZXcuCiAKQEAgLTYzMCwxMiArNzQwLDIzIEBACiAgICAgLS13aXRoLWFkYS1vYmplY3RzPURJUgogCVRlbGwgd2hlcmUgdG8gaW5zdGFsbCB0aGUgQWRhIG9iamVjdHMgKGRlZmF1bHQ6ICBQUkVGSVgvbGliL2FkYS9hZGFsaWIpCiAKKyAgICAtLXdpdGgtYWRhLXNoYXJlZGxpYgorCUJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkgZm9yIEFkYTk1IGJpbmRpbmcsIGlmIHRoZSBjb21waWxlciBwZXJtaXRzLgorCisJTk9URTogWW91IG11c3QgYWxzbyBzZXQgdGhlIC0td2l0aC1zaGFyZWQgb3B0aW9uIG9uIHNvbWUgcGxhdGZvcm1zCisJZm9yIGEgc3VjY2Vzc2Z1bCBidWlsZC4gIFlvdSBuZWVkIG5vdCB1c2UgdGhpcyBvcHRpb24gd2hlbiB5b3Ugc2V0CisJLS13aXRoLXNoYXJlZCwgdW5sZXNzIHlvdSB3YW50IHRvIHVzZSB0aGUgQWRhIHNoYXJlZCBsaWJyYXJ5LgorCiAgICAgLS13aXRoLWJvb2w9VFlQRQogCUlmIC0td2l0aG91dC1jeHggaXMgc3BlY2lmaWVkLCBvdmVycmlkZSB0aGUgdHlwZSB1c2VkIGZvciB0aGUgImJvb2wiCiAJZGVjbGFyZWQgaW4gY3Vyc2VzLmggKG5vcm1hbGx5IHRoZSB0eXBlIGlzIGF1dG9tYXRpY2FsbHkgY2hvc2VuIHRvCiAJY29ycmVzcG9uZCB3aXRoIHRoYXQgaW4gPHN0ZGJvb2wuaD4sIG9yIGRlZmF1bHRzIHRvIHBsYXRmb3JtLXNwZWNpZmljCiAJc2l6ZXMpLgogCisgICAgLS13aXRoLWJ1aWxkLWNwcD1YWFgKKwlUaGlzIG9wdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgc2FtZSBtYWNybyB1c2VkIGZvciAkQlVJTERfQ0MsIGV0Yy4sCisJYnV0IGlzIG5vdCBkaXJlY3RseSB1c2VkIGJ5IG5jdXJzZXMuCisKICAgICAtLXdpdGgtYnVpbGQtY2M9WFhYCiAJSWYgY3Jvc3MtY29tcGlsaW5nLCBzcGVjaWZ5IGEgaG9zdCBDIGNvbXBpbGVyLCB3aGljaCBpcyBuZWVkZWQgdG8KIAljb21waWxlIGEgZmV3IHV0aWxpdGllcyB3aGljaCBnZW5lcmF0ZSBzb3VyY2UgbW9kdWxlcyBmb3IgbmN1cnNlcy4KQEAgLTY4MiwxMiArODAzLDIzIEBACiAJdG8gdXNlIGEgdGVybWluZm8gZGF0YWJhc2Ugd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBuYXRpdmUKIAlhcHBsaWNhdGlvbnMuCiAKKyAgICAtLXdpdGgtY2NoYXJ3LW1heD1YWFgKKwlPdmVycmlkZSB0aGUgc2l6ZSBvZiB0aGUgd2lkZS1jaGFyYWN0ZXIgYXJyYXkgaW4gY2NoYXJfdCBzdHJ1Y3R1cmVzLgorCUNoYW5naW5nIHRoaXMgd2lsbCBhbHRlciB0aGUgYmluYXJ5IGludGVyZmFjZS4gIFRoaXMgZGVmYXVsdHMgdG8gNS4KKwogICAgIC0td2l0aC1jaHR5cGU9VFlQRQogCU92ZXJyaWRlIHR5cGUgb2YgY2h0eXBlLCB3aGljaCBzdG9yZXMgdGhlIHZpZGVvIGF0dHJpYnV0ZXMgYW5kIChpZgogCS0tZW5hYmxlLXdpZGVjIGlzIG5vdCBnaXZlbikgYSBjaGFyYWN0ZXIuICBQcmlvciB0byBuY3Vyc2VzIDUuNSwgdGhpcwogCXdhcyBhbHdheXMgdW5zaWduZWQgbG9uZywgYnV0IHdpdGggbmN1cnNlcyA1LjUsIGl0IG1heSBiZSB1bnNpZ25lZC4KIAlVc2UgdGhpcyBvcHRpb24gaWYgeW91IG5lZWQgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIDY0LWJpdAotCWV4ZWN1dGFibGVzLgorCWV4ZWN1dGFibGVzLCBlLmcuLCBieSBzZXR0aW5nICItLXdpdGgtY2h0eXBlPWxvbmciICh0aGUgY29uZmlndXJlCisJc2NyaXB0IHN1cHBsaWVzICJ1bnNpZ25lZCIpLgorCisgICAgLS13aXRoLWN4eC1zaGFyZWQKKwlXaGVuIC0td2l0aC1zaGFyZWQgaXMgc2V0LCBidWlsZCBsaWJuY3Vyc2VzKysgYXMgYSBzaGFyZWQgbGlicmFyeS4KKwlUaGlzIGltcGxpY2l0bHkgcmVsaWVzIHVwb24gYnVpbGRpbmcgd2l0aCBnY2MvZysrLCBzaW5jZSBvdGhlcgorCWNvbXBpbGVyIHN1aXRlcyBtYXkgaGF2ZSBkaWZmZXJlbmNlcyBpbiB0aGUgd2F5IHNoYXJlZCBsaWJyYXJpZXMgYXJlCisJYnVpbHQuICBsaWJ0b29sIGJ5IHRoZSB3YXkgaGFzIHNpbWlsYXIgbGltaXRhdGlvbnMuCiAKICAgICAtLXdpdGgtZGF0YWJhc2U9WFhYCiAJU3BlY2lmeSB0aGUgdGVybWluZm8gc291cmNlIGZpbGUgdG8gaW5zdGFsbC4gIFVzdWFsbHkgeW91IHdpbGwgd2lzaApAQCAtNzExLDYgKzg0MywxNyBAQAogCUZvciB0ZXN0aW5nLCBjb21waWxlIGFuZCBsaW5rIHdpdGggR3JheSBXYXRzb24ncyBkbWFsbG9jIGxpYnJhcnkuCiAJVGhpcyBhbHNvIHNldHMgdGhlIC0tZGlzYWJsZS1sZWFrcyBvcHRpb24uCiAKKyAgICAtLXdpdGgtZXhwb3J0LXN5bXNbPVhYWF0KKwlMaW1pdCBleHBvcnRlZCBzeW1ib2xzIHVzaW5nIGxpYnRvb2wuICBUaGUgY29uZmlndXJlIHNjcmlwdAorCWF1dG9tYXRpY2FsbHkgY2hvb3NlcyBhbiBhcHByb3ByaWF0ZSAiLnN5bSIgZmlsZSwgd2hpY2ggbGlzdHMgdGhlCisJc3ltYm9scyB3aGljaCBhcmUgcGFydCBvZiB0aGUgQUJJLgorCisgICAgLS13aXRoLWV4dHJhLXN1ZmZpeFs9WFhYXQorCUFkZCB0aGUgZ2l2ZW4gc3VmZml4IHRvIGhlYWRlci0gYW5kIGxpYnJhcnktbmFtZXMgdG8gc2ltcGxpZnkKKwlpbnN0YWxsaW5nIGluY29tcGF0aWJsZSBuY3Vyc2VzIGxpYnJhcmllcywgZS5nLiwgdGhvc2UgdXNpbmcgYQorCWRpZmZlcmVudCBBQkkuICBUaGUgcmVuYW1pbmcgYWZmZWN0cyB0aGUgbmFtZSBvZiB0aGUKKwlpbmNsdWRlLXN1YmRpcmVjdG9yeSBpZiAtLWRpc2FibGUtb3ZlcndyaXRlIGlzIGdpdmVuLgorCiAgICAgLS13aXRoLWZhbGxiYWNrcz1YWFgKIAlTcGVjaWZ5IGEgbGlzdCBvZiBmYWxsYmFjayB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgd2hpY2ggd2lsbCBiZQogCWNvbXBpbGVkIGludG8gdGhlIG5jdXJzZXMgbGlicmFyeS4gIFNlZSBDT05GSUdVUklORyBGQUxMQkFDSyBFTlRSSUVTLgpAQCAtNzE5LDcgKzg2Miw3IEBACiAJdXNlIEFsZXNzYW5kcm8gUnViaW5pJ3MgR1BNIGxpYnJhcnkgdG8gcHJvdmlkZSBtb3VzZSBzdXBwb3J0IG9uIHRoZQogCUxpbnV4IGNvbnNvbGUuICBQcmlvciB0byBuY3Vyc2VzIDUuNSwgdGhpcyBpbnRyb2R1Y2VkIGEgZGVwZW5kZW5jeSBvbgogCXRoZSBHUE0gbGlicmFyeS4KLQkKKwogCUN1cnJlbnRseSBuY3Vyc2VzIHVzZXMgdGhlIGRsc3ltKCkgZnVuY3Rpb24gdG8gYmluZCB0byB0aGUgbGlicmFyeSBhdAogCXJ1bnRpbWUsIHNvIGl0IGlzIG9ubHkgbmVjZXNzYXJ5IHRoYXQgdGhlIGxpYnJhcnkgYmUgcHJlc2VudCB3aGVuCiAJbmN1cnNlcyBpcyBidWlsdCwgdG8gb2J0YWluIHRoZSBmaWxlbmFtZSAob3Igc29uYW1lKSB1c2VkIGluIHRoZQpAQCAtNzM2LDcgKzg3OSw3IEBACiAJVXNlIGEgaGFzaGVkIGRhdGFiYXNlIGZvciBzdG9yaW5nIHRlcm1pbmZvIGRhdGEgcmF0aGVyIHRoYW4gc3RvcmluZwogCWVhY2ggY29tcGlsZWQgZW50cnkgaW4gYSBzZXBhcmF0ZSBiaW5hcnkgZmlsZSB3aXRoaW4gYSBkaXJlY3RvcnkKIAl0cmVlLgotCQorCiAJSW4gcGFydGljdWxhciwgdGhpcyB1c2VzIHRoZSBCZXJrZWxleSBkYXRhYmFzZSAxLjguNSBpbnRlcmZhY2UsIGFzCiAJcHJvdmlkZWQgYnkgdGhhdCBhbmQgaXRzIHN1Y2Nlc3NvcnMgZGIgMiwgMywgYW5kIDQuICBUaGUgYWN0dWFsCiAJaW50ZXJmYWNlIGlzIHNsaWdodGx5IGRpZmZlcmVudCBpbiB0aGUgc3VjY2Vzc29yIHZlcnNpb25zIG9mIHRoZQpAQCAtNzU0LDEwICs4OTcsMTUgQEAKIAlmaWxlc3lzdGVtLWJhc2VkIHRlcm1pbmZvIGVudHJpZXMuCiAKIAlVc2UgdGhlIHBhcmFtZXRlciB2YWx1ZSB0byBnaXZlIHRoZSBpbnN0YWxsLXByZWZpeCB1c2VkIGZvciB0aGUKLQlkYXRiYXNlLCBlLmcuLAorCWRhdGFiYXNlLCBlLmcuLAogCQktLXdpdGgtaGFzaGVkLWRiPS91c3IvbG9jYWwvQmlnQmFzZQogCXRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5jbHVkZS0gYW5kIGxpYi1kaXJlY3RvcmllcyB1bmRlciB0aGUKLQlnaXZlbiBkaXJlY3RvcnkuCisJZ2l2ZW4gZGlyZWN0b3J5LiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzcGVjaWZ5IGEgZGlyZWN0b3J5IGxlYWYKKwluYW1lLCBlLmcuLAorCQktLXdpdGgtaGFzaGVkLWRiPWRiNAorCXRvIG1ha2UgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgbG9vayBmb3IgZmlsZXMgaW4gYSBzdWJkaXJlY3Rvcnkgc3VjaCBhcworCQkvdXNyL2luY2x1ZGUvZGI0L2RiLmgKKwkJL3Vzci9saWIvZGI0L2xpYmRiLnNvCiAKIAlTZWUgYWxzbyB0aGUgLS1lbmFibGUtZ2V0Y2FwIG9wdGlvbi4KIApAQCAtNzcwLDEwICs5MTgsMjAgQEAKIAkJbWFrZSBpbnN0YWxsIERFU1RESVI9WFhYCiAJc2luY2UgdGhlIG1ha2VmaWxlcyBwYXNzIHRoYXQgdmFyaWFibGUgdG8gc3Vib3JkaW5hdGUgbWFrZXMuCiAKLQlOT1RFOiAgYSBmZXcgc3lzdGVtcyBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHdpdGggZml4ZWQgcGF0aG5hbWVzOyB0aGlzCisJTk9URTogYSBmZXcgc3lzdGVtcyBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHdpdGggZml4ZWQgcGF0aG5hbWVzOyB0aGlzCiAJb3B0aW9uIHByb2JhYmx5IHdpbGwgbm90IHdvcmsgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zLgogCi0gICAgIC0td2l0aC1saWJ0b29sWz1YWFhdCisgICAgLS13aXRoLWxpYi1wcmVmaXg9WFhYCisJT1MvMiBFTVggdXNlZCBhIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbiBmcm9tIG1vc3QgVW5peC1saWtlCisJcGxhdGZvcm1zLiAgSXQgcmVxdWlyZWQgdGhhdCB0aGUgImxpYiIgcGFydCBvZiBhIGxpYnJhcnkgbmFtZSB3YXMKKwlvbWl0dGVkLiAgTmV3ZXIgRU1YIGFzIHBhcnQgb2YgZUNvbVN0YXRpb24gZG9lcyBub3QgZm9sbG93IHRoYXQKKwljb252ZW50aW9uLiAgVXNlIHRoaXMgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmUgc2NyaXB0J3MKKwlhc3N1bXB0aW9ucyBhYm91dCB0aGUgbGlicmFyeS1wcmVmaXguICBJZiB0aGlzIG9wdGlvbiBpcyBvbWl0dGVkLCBpdAorCXVzZXMgdGhlIG9yaWdpbmFsIE9TLzIgRU1YIGNvbnZlbnRpb24gZm9yIHRoYXQgcGxhdGZvcm0uICBVc2UKKwkiLS13aXRoLWxpYi1wcmVmaXg9bGliIiBmb3IgdGhlIG5ld2VyIEVNWCBpbiBlQ29tU3RhdGlvbi4gIFVzZQorCSItLXdpdGhvdXQtbGliLXByZWZpeCIgdG8gc3VwcHJlc3MgaXQgZm9yIG90aGVyIG9kZCBwbGF0Zm9ybXMuCisKKyAgICAtLXdpdGgtbGlidG9vbFs9WFhYXQogCUdlbmVyYXRlIGxpYnJhcmllcyB3aXRoIGxpYnRvb2wuICBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlbiBpdAogCW92ZXJyaWRlcyBhbGwgb3RoZXIgbGlicmFyeSBtb2RlbCBzcGVjaWZpY2F0aW9ucy4gIE5vdGUgdGhhdCBsaWJ0b29sCiAJbXVzdCBhbHJlYWR5IGJlIGluc3RhbGxlZCwgdXNlcyBtYWtlZmlsZSBydWxlcyBkZXBlbmRlbnQgb24gR05VIG1ha2UsCkBAIC03OTEsNiArOTQ5LDkgQEAKIAl1c2luZyB0aGUgYXBwcm9wcmlhdGUgcGF0Y2ggZm9yIGF1dG9jb25mIGZyb20KIAkJaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mLwogCisgICAgLS13aXRoLWxpYnRvb2wtb3B0cz1YWFgKKwlTcGVjaWZ5IGFkZGl0aW9uYWwgbGlidG9vbCBvcHRpb25zLgorCiAgICAgLS13aXRoLW1hbnBhZ2UtYWxpYXNlcwogCVRlbGwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgeW91IHdpc2ggdG8gY3JlYXRlIGVudHJpZXMgaW4gdGhlCiAJbWFuLWRpcmVjdG9yeSBmb3IgYWxpYXNlcyB0byBtYW5wYWdlcyB3aGljaCBsaXN0IHRoZW0sIGUuZy4sIHRoZQpAQCAtODA3LDkgKzk2OCw5IEBACiAKICAgICAtLXdpdGgtbWFucGFnZS1yZW5hbWVzPVhYWAogCVRlbGwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdGhhdCB5b3Ugd2lzaCB0byByZW5hbWUgdGhlIG1hbnBhZ2VzIHdoaWxlCi0JaW5zdGFsbGluZy4gIEN1cnJlbnRseSB0aGUgb25seSBkaXN0cmlidXRpb24gd2hpY2ggZG9lcyB0aGlzIGlzCi0JdGhlIExpbnV4IERlYmlhbi4gIFRoZSBvcHRpb24gdmFsdWUgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgZmlsZQotCXRoYXQgbGlzdHMgdGhlIHJlbmFtZWQgZmlsZXMsIGUuZy4sICRzcmNkaXIvbWFuL21hbl9kYi5yZW5hbWVzCisJaW5zdGFsbGluZy4gIEN1cnJlbnRseSB0aGUgb25seSBkaXN0cmlidXRpb24gd2hpY2ggZG9lcyB0aGlzIGlzIERlYmlhbi4KKwlUaGUgb3B0aW9uIHZhbHVlIHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGZpbGUgdGhhdCBsaXN0cyB0aGUgcmVuYW1lZAorCWZpbGVzLCBlLmcuLCAkc3JjZGlyL21hbi9tYW5fZGIucmVuYW1lcwogCiAgICAgLS13aXRoLW1hbnBhZ2Utc3ltbGlua3MKIAlUZWxsIHRoZSBjb25maWd1cmUgc2NyaXB0IHRoYXQgeW91IHdpc2ggdG8gbWFrZSBzeW1ib2xpYyBsaW5rcyBpbiB0aGUKQEAgLTg1MCw2ICsxMDExLDE4IEBACiAJdGhvc2UgdXNpbmcgdGVybWNhcCwgZG8gbm90IHVzZSB0aGUgaGlnaGVyIHNwZWVkcy4gIFlvdXIgYXBwbGljYXRpb24KIAkob3Igc3lzdGVtLCBpbiBnZW5lcmFsKSBtYXkgb3IgbWF5IG5vdC4KIAorICAgIC0td2l0aC1wYy1zdWZmaXg9U1VGRklYCisJSWYgIi5wYyIgZmlsZXMgYXJlIGluc3RhbGxlZCwgb3B0aW9uYWxseSBhZGQgYSBzdWZmaXggdG8gdGhlIGZpbGVzCisJYW5kIGNvcnJlc3BvbmRpbmcgcGFja2FnZSBuYW1lcyB0byBzZXBhcmF0ZSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zLgorCUlmIG5vIG9wdGlvbiB2YWx1ZSBpcyBnaXZlbiAob3IgaWYgaXQgaXMgIm5vbmUiKSwgbm8gc3VmZml4IGlzIGFkZGVkLgorCisgICAgLS13aXRoLXBrZy1jb25maWc9W0RJUl0KKwlDaGVjayBmb3IgcGtnLWNvbmZpZywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIGl0cyBwYXRoLgorCisgICAgLS13aXRoLXBrZy1jb25maWctbGliZGlyPVtESVJdCisJSWYgcGtnLWNvbmZpZyB3YXMgZm91bmQsIG92ZXJyaWRlIHRoZSBhdXRvbWF0aWMgY2hlY2sgZm9yIGl0cyBsaWJyYXJ5CisJcGF0aC4KKwogICAgIC0td2l0aC1wcm9maWxlCiAJR2VuZXJhdGUgcHJvZmlsZS1saWJyYXJpZXMgVGhlc2UgYXJlIG5hbWVkIGJ5IGFkZGluZyAiX3AiIHRvIHRoZSByb290LAogCWUuZy4sIGxpYm5jdXJzZXNfcC5hCkBAIC04NzMsNyArMTA0Niw3IEBACiAJd2hpY2ggeW91IGFyZSBidWlsZGluZywgdHlwaWNhbGx5IHVzaW5nIGEgIi5zbyIgc3VmZml4LCBhbG9uZyB3aXRoCiAJc3ltYm9saWMgbGlua3MgdGhhdCByZWZlciB0byB0aGUgcmVsZWFzZSB2ZXJzaW9uLgogCi0JTk9URTogIFVubGVzcyB5b3Ugb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgc2V0dGluZyB0aGUgJENGTEFHUworCU5PVEU6IFVubGVzcyB5b3Ugb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgc2V0dGluZyB0aGUgJENGTEFHUwogCWVudmlyb25tZW50IHZhcmlhYmxlLCB0aGVzZSB3aWxsIG5vdCBiZSBidWlsdCB3aXRoIHRoZSAtZyBkZWJ1Z2dpbmcKIAlvcHRpb24uCiAKQEAgLTg4MiwxMCArMTA1NSwyNiBAQAogCXNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgZW5jb3VudGVyIHByb2JsZW1zIHdpdGggdGhlIGxpbmtlci4KIAlGb3IgZXhhbXBsZSwgaXQgbWF5IHByZXZlbnQgeW91IGZyb20gcnVubmluZyAgdGhlIGJ1aWxkIHRyZWUncwogCWNvcHkgb2YgdGljIChmb3IgaW5zdGFsbGluZyB0aGUgdGVybWluZm8gZGF0YWJhc2UpIGJlY2F1c2UgaXQKLQlsb2FkcyB0aGUgc3lzdGVtJ3MgY29weSBvZiB0aGUgbmN1cnNlcyBzaGFyZWQgbGlicmFyaWVzLiAgSW4gdGhhdAotCWNhc2UsIHVzaW5nIHRoZSBtaXNjL3NobGliIHNjcmlwdCBtYXkgYmUgaGVscGZ1bCwgc2luY2UgaXQgc2V0cwotCSRMRF9MSUJSQVJZX1BBVEggdG8gcG9pbnQgdG8gdGhlIGJ1aWxkIHRyZWUsIGUuZy4sCi0JCS4vbWlzYy9zaGxpYiBtYWtlIGluc3RhbGwgCQorCWxvYWRzIHRoZSBzeXN0ZW0ncyBjb3B5IG9mIHRoZSBuY3Vyc2VzIHNoYXJlZCBsaWJyYXJpZXMuCisKKwlJbiB0aGF0IGNhc2UsIHVzaW5nIHRoZSBtaXNjL3NobGliIHNjcmlwdCBtYXkgYmUgaGVscGZ1bCwgc2luY2UgaXQKKwlzZXRzICRMRF9MSUJSQVJZX1BBVEggdG8gcG9pbnQgdG8gdGhlIGJ1aWxkIHRyZWUsIGUuZy4sCisKKwkJLi9taXNjL3NobGliIG1ha2UgaW5zdGFsbAorCisJQWx0ZXJuYXRpdmVseSwgZm9yIG1vc3QgcGxhdGZvcm1zLCB0aGUgbGlua2VyIGFjY2VwdHMgYSBsaXN0IG9mCisJZGlyZWN0b3JpZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgbGlicmFyaWVzIGF0IHJ1bi10aW1lLiAgVGhlCisJY29uZmlndXJlIHNjcmlwdCBhbGxvd3MgeW91IHRvIG1vZGlmeSB0aGlzIGxpc3QgdXNpbmcgdGhlCisJUlBBVEhfTElTVCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIEl0IGlzIGEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YKKwlkaXJlY3RvcmllcyAoZGVmYXVsdDogIHRoZSAibGliZGlyIiBzZXQgdmlhIHRoZSBjb25maWd1cmUgc2NyaXB0KS4KKwlJZiB5b3Ugc2V0IHRoYXQgdG8gcHV0ICIuLi9saWIiIGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgbGlua2VyIHdpbGwKKwlsb29rIGZpcnN0IGF0IHRoZSBidWlsZC1kaXJlY3RvcnksIGFuZCBhdm9pZCBjb25mbGljdCB3aXRoIGxpYnJhcmllcworCWFscmVhZHkgaW5zdGFsbGVkLiAgT25lIGRyYXdiYWNrIHRvIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBsaWJyYXJpZXMKKwljYW4gYmUgYWNjaWRlbnRhbGx5IHNlYXJjaGVkIGluIGFueSAiLi4vbGliIiBkaXJlY3RvcnkuCisKKwlOT1RFOiBJZiB5b3UgdXNlIHRoZSAtLXdpdGgtYWRhLXNoYXJlZGxpYiBvcHRpb24sIHlvdSBzaG91bGQgYWxzbworCXNldCB0aGlzIG9wdGlvbiwgdG8gZW5zdXJlIHRoYXQgQy1sYW5ndWFnZSBtb2R1bGVzIG5lZWRlZCBmb3IgdGhlCisJQWRhIGJpbmRpbmcgdXNlIGFwcHJvcHJpYXRlIGNvbXBpbGVyIG9wdGlvbnMuCiAKICAgICAtLXdpdGgtc2hsaWItdmVyc2lvbj1YWFgKIAlTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIHRoZSByZWxlYXNlIG9yIEFCSSB2ZXJzaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzLgpAQCAtOTM4LDE0ICsxMTI3LDczIEBACiAJbGlicmFyeSBkZXBlbmRlbmNpZXMgZm9yIHRpYyBhbmQgb3RoZXIgcHJvZ3JhbXMgYnVpbHQgd2l0aCB0aGUgdGljCiAJbGlicmFyeS4KIAorICAgIC0td2l0aC10cGFybS1hcmdbPVhYWF0KKwlPdmVycmlkZSB0aGUgdHlwZSB1c2VkIGZvciB0cGFybSgpIGFyZ3VtZW50cywgd2hpY2ggbm9ybWFsbHkgaXMgYQorCSJsb25nIi4gIEhvd2V2ZXIgdGhlIGZ1bmN0aW9uIG11c3QgYXNzdW1lIHRoYXQgaXRzIGFyZ3VtZW50cyBjYW4gaG9sZCBhCisJcG9pbnRlciB0byBjaGFyJ3Mgd2hpY2ggaXMgbm90IGFsd2F5cyB3b3JrYWJsZSBmb3IgNjQtYml0IHBsYXRmb3Jtcy4gIEEKKwliZXR0ZXIgY2hvaWNlIHdvdWxkIGJlIGludHB0cl90LCB3aGljaCB3YXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZQorCXRwYXJtJ3MgaW50ZXJmYWNlIHdhcyBkZWZpbmVkLgorCisJSWYgdGhlIG9wdGlvbiBpcyBub3QgZ2l2ZW4sIHRoaXMgZGVmYXVsdHMgdG8gImxvbmciLgorCiAgICAgLS13aXRoLXRyYWNlCiAJQ29uZmlndXJlIHRoZSB0cmFjZSgpIGZ1bmN0aW9uIGFzIHBhcnQgb2YgdGhlIGFsbCBtb2RlbHMgb2YgdGhlIG5jdXJzZXMKIAlsaWJyYXJ5LiAgTm9ybWFsbHkgaXQgaXMgcGFydCBvZiB0aGUgZGVidWcgKGxpYm5jdXJzZXNfZykgbGlicmFyeSBvbmx5LgogCisgICAgLS13aXRoLXZlcnNpb25lZC1zeW1zWz1YWFhdCisJVGhlIFNvbGFyaXMsIEdOVSBhbmQgcmVwb3J0ZWRseSBzb21lIG90aGVyIGxpbmtlcnMgKGxkKSBhY2NlcHQgYQorCSItLXZlcnNpb24tc2NyaXB0IiBvcHRpb24gd2hpY2ggdGVsbHMgdGhlIGxpbmtlciB0byBhbm5vdGF0ZSB0aGUKKwlyZXN1bHRpbmcgb2JqZWN0cyB3aXRoIHZlcnNpb24gaWRlbnRpZmllcnMuCisKKwlVc2UgIm9iamR1bXAgLVQiIG9uIGEgbGlicmFyeSB0byBzZWUgdGhlIGFubm90YXRpb25zLgorCisJVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXR0ZW1wdHMgdG8gYXV0b21hdGljYWxseSBhcHBseSBhIHN1aXRhYmxlICIubWFwIgorCWZpbGUgdG8gcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGZvciBMaW51eC4gIFNvbGFyaXMgbWFwZmlsZXMgZGlmZmVyOgorCisJYSkgY29tbWVudHMgYXJlIG5vdCBhY2NlcHRlZAorCWIpIHdpbGRjYXJkcyBhcmUgbm90IGFjY2VwdGVkLCBleGNlcHQgZm9yIGEgc3BlY2lhbCBjYXNlIG9mICJfKiIuCisJYykgZWFjaCBzeW1ib2wgbGlzdGVkIGluIHRoZSBtYXAgZmlsZSBtdXN0IGV4aXN0IGluIHRoZSBsaWJyYXJ5CisKKwlUaGUgU29sYXJpcyBsaW1pdGF0aW9ucyBjb25mbGljdCB3aXRoIHRoZSBkZXZlbG9wbWVudCBnb2FsIG9mIHByb3ZpZGluZworCWEgc21hbGwgc2V0IG9mICIubWFwIiBmaWxlcyBhcyBleGFtcGxlcywgd2hpY2ggY292ZXIgdGhlIG1vc3QgY29tbW9uCisJY29uZmlndXJhdGlvbnMuICBCZWNhdXNlIHRoYXQgY292ZXJhZ2UgaXMgZG9uZSBieSBtZXJnaW5nIHRvZ2V0aGVyCisJc2V2ZXJhbCBidWlsZHMsIHNvbWUgc3ltYm9scyB3aWxsIGJlIGxpc3RlZCBpbiB0aGUgdGhlICIubWFwIiBmaWxlcworCXRoYXQgZG8gbm90IGhhcHBlbiB0byBiZSBwcmVzZW50IGluIG9uZSBjb25maWd1cmF0aW9uIG9yIGFub3RoZXIuCisKKwlUaGUgc2FtcGxlICIubWFwIiAoYW5kICIuc3ltIikgZmlsZXMgYXJlIGdlbmVyYXRlZCB1c2luZyBhIHNldCBvZgorCXNjcmlwdHMgd2hpY2ggYnVpbGQgc2V2ZXJhbCBjb25maWd1cmF0aW9ucyBmb3IgZWFjaCByZWxlYXNlIHZlcnNpb24sCisJY2hlY2tpbmcgdG8gc2VlIHdoaWNoIG9mIHRoZSAiX25jXyIgc3ltYm9scyBjYW4gYmUgbWFkZSBsb2NhbC4gIEluCisJYWRkaXRpb24gdG8gdGhlIG5jdXJzZXMgbGlicmFyaWVzIGFuZCBwcm9ncmFtcywgdGhlIHN5bWJvbHMgdXNlZAorCWJ5IHRoZSAidGFjayIgcHJvZ3JhbSBhcmUgbWFkZSBnbG9iYWwuCisKKwlUaGVzZSBzYW1wbGUgIi5tYXAiIGZpbGVzIHdpbGwgbm90IGNvdmVyIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMuCisJSW4gc29tZSBjYXNlcywgZS5nLiwgd2hlbiB1c2luZyB0aGUgLS13aXRoLXdlYWstc3ltYm9scyBvcHRpb24sIHlvdQorCW1heSBwcmVmZXIgdG8gdXNlIGEgZGlmZmVyZW50ICIubWFwIiBmaWxlIGJ5IHNldHRpbmcgdGhpcyBvcHRpb24ncworCXZhbHVlLgorCisgICAgLS13aXRoLXh0ZXJtLWticz1YWFgKKwlDb25maWd1cmUgeHRlcm0ncyB0ZXJtaW5mbyBlbnRyaWVzIHRvIHVzZSBlaXRoZXIgQlMgKF5ILCBpLmUuLCBBU0NJSQorCWJhY2tzcGFjZSkgb3IgREVMIChePywgb3IgMTI3KS4gIFhYWCBjYW4gYmUgQlMgKG9yIGJzLCA4KSBvciBERUwKKwkob3IgZGVsLCAxMjcpLgorCisJRHVyaW5nIGluc3RhbGxhdGlvbiwgdGhlIG1ha2VmaWxlIGFuZCBzY3JpcHRzIG1vZGlmaWVzIHRoZSAieHRlcm0ra2JzIgorCXRlcm1pbmZvIGVudHJ5IHRvIHVzZSB0aGlzIHNldHRpbmcuCisKICAgICAtLXdpdGgtdmFsZ3JpbmQKIAlGb3IgdGVzdGluZywgY29tcGlsZSB3aXRoIGRlYnVnIG9wdGlvbi4KIAlUaGlzIGFsc28gc2V0cyB0aGUgLS1kaXNhYmxlLWxlYWtzIG9wdGlvbi4KIAorICAgIC0td2l0aC13cmFwLXByZWZpeD1YWFgKKwlXaGVuIHVzaW5nIHRoZSAtLWVuYWJsZS1yZWVudHJhbnQgb3B0aW9uLCBuY3Vyc2VzIHJlZGVmaW5lcyB2YXJpYWJsZXMKKwl0aGF0IHdvdWxkIGJlIGdsb2JhbCBpbiBjdXJzZXMsIGUuZy4sIExJTkVTLCBhcyBhIG1hY3JvIHRoYXQgY2FsbHMgYQorCSJ3cmFwcGluZyIgZnVuY3Rpb24gd2hpY2ggZmV0Y2hlcyB0aGUgZGF0YSBmcm9tIHRoZSBjdXJyZW50IFNDUkVFTgorCXN0cnVjdHVyZS4gIE5vcm1hbGx5IHRoYXQgZnVuY3Rpb24gaXMgbmFtZWQgYnkgcHJlcGVuZGluZyAiX25jXyIgdG8gdGhlCisJdmFyaWFibGUncyBuYW1lLiAgVGhlIGZ1bmN0aW9uIGlzIHRlY2huaWNhbGx5IHByaXZhdGUgKHNpbmNlIHBvcnRhYmxlCisJYXBwbGljYXRpb25zIHdvdWxkIG5vdCByZWZlciBkaXJlY3RseSB0byBpdCkuICBCdXQgYWNjb3JkaW5nIHRvIG9uZQorCWxpbmUgb2YgcmVhc29uaW5nLCBpdCBpcyBub3QgdGhlIHNhbWUgdHlwZSBvZiAicHJpdmF0ZSIgYXMgZnVuY3Rpb25zCisJd2hpY2ggYXBwbGljYXRpb25zIHNob3VsZCBub3QgY2FsbCBldmVuIHZpYSBhIG1hY3JvLiAgVGhpcyBjb25maWd1cmUKKwlvcHRpb24gbGV0cyB5b3UgY2hvb3NlIHRoZSBwcmVmaXggZm9yIHRoZXNlIHdyYXBwZWQgdmFyaWFibGVzLgorCiAgICAgLS13aXRob3V0LWFkYQogCVN1cHByZXNzIHRoZSBjb25maWd1cmUgc2NyaXB0J3MgY2hlY2sgZm9yIEFkYTk1LCBkbyBub3QgYnVpbGQgdGhlCiAJQWRhOTUgYmluZGluZyBhbmQgcmVsYXRlZCBkZW1vLgpAQCAtOTU1LDYgKzEyMDMsOCBAQAogCWluc3RhbGwgYXMgIm5jdXJzZXMuaCIgYW5kIG1vZGlmeSB0aGUgaW5zdGFsbGVkIGhlYWRlcnMgYW5kIG1hbnBhZ2VzCiAJYWNjb3JkaW5nbHkuCiAKKwlMaWtld2lzZSwgZG8gbm90IGluc3RhbGwgYW4gYWxpYXMgImN1cnNlcyIgZm9yIHRoZSBuY3Vyc2VzIG1hbnBhZ2UuCisKICAgICAtLXdpdGhvdXQtY3h4CiAJWFNJIGN1cnNlcyBkZWNsYXJlcyAiYm9vbCIgYXMgcGFydCBvZiB0aGUgaW50ZXJmYWNlLiAgQysrIGFsc28gZGVjbGFyZXMKIAkiYm9vbCIuICBOZWl0aGVyIHNwZWNpZmllcyB0aGUgc2l6ZSBhbmQgdHlwZSBvZiBib29sZWFucywgYnV0IGJvdGgKQEAgLTk3NSwxMSArMTIyNSwxOCBAQAogICAgIC0td2l0aG91dC1kbHN5bQogCURvIG5vdCB1c2UgZGxzeW0oKSB0byBsb2FkIEdQTSBkeW5hbWljYWxseS4KIAorICAgIC0td2l0aG91dC1tYW5wYWdlcworCVRlbGwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdG8gc3VwcHJlc3MgdGhlIGluc3RhbGwgb2YgbmN1cnNlcycgbWFucGFnZXMuCisKICAgICAtLXdpdGhvdXQtcHJvZ3MKIAlUZWxsIHRoZSBjb25maWd1cmUgc2NyaXB0IHRvIHN1cHByZXNzIHRoZSBidWlsZCBvZiBuY3Vyc2VzJyBhcHBsaWNhdGlvbgogCXByb2dyYW1zIChlLmcuLCB0aWMpLiAgVGhlIHRlc3QgYXBwbGljYXRpb25zIHdpbGwgc3RpbGwgYmUgYnVpbHQgaWYgeW91CiAJdHlwZSAibWFrZSIsIHRob3VnaCBub3QgaWYgeW91IHNpbXBseSBkbyAibWFrZSBpbnN0YWxsIi4KIAorICAgIC0td2l0aG91dC10ZXN0cworCVRlbGwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdG8gc3VwcHJlc3MgdGhlIGJ1aWxkIG9mIG5jdXJzZXMnIHRlc3QKKwlwcm9ncmFtcy4KKwogICAgIC0td2l0aG91dC14dGVybS1uZXcKIAlUZWxsIHRoZSBjb25maWd1cmUgc2NyaXB0IHRvIHVzZSAieHRlcm0tb2xkIiBmb3IgdGhlIGVudHJ5IHVzZWQgaW4KIAl0aGUgdGVybWluZm8gZGF0YWJhc2UuICBUaGlzIHdpbGwgd29yayB3aXRoIHZhcmlhdGlvbnMgc3VjaCBhcwpAQCAtMTAwMSw2ICsxMjU4LDYzIEBACiAgICAgeW91IG1heSBlbmNvdW50ZXIgd2hlbiBidWlsZGluZyBhIHN5c3RlbSB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucyBvZgogICAgIG5jdXJzZXM6CiAKKyAgICA2LjAgKD8/PyA/PywgMjAxNSkKKworICAgIDUuOSAoQXByIDA0LCAyMDExKQorICAgIDUuOCAoRmViIDI2LCAyMDExKQorCUludGVyZmFjZSBjaGFuZ2VzOgorCisJKyBhZGQgYW4gYWx0ZXJuYXRlIGxpYnJhcnkgY29uZmlndXJhdGlvbiwgaS5lLiwgInRlcm1pbmFsIGRyaXZlciIgdG8KKwkgIHN1cHBvcnQgcG9ydCB0byBXaW5kb3dzLCBidWlsdCB3aXRoIE1pbkdXLiAgVGhlcmUgYXJlIHR3byBkcml2ZXJzCisJICAodGVybWluZm8gYW5kIFdpbmRvd3MgY29uc29sZSkuICBUaGUgdGVybWluZm8gZHJpdmVyIHdvcmtzIG9uIG90aGVyCisJICBwbGF0Zm9ybXMuCisKKwkrIGFkZCBhIG5ldyBzZXQgb2YgZnVuY3Rpb25zIHdoaWNoIGFjY2VwdCBhIFNDUkVFTiogcGFyYW1ldGVyLCBpbgorCSAgY29udHJhc3Qgd2l0aCB0aGUgb3JpZ2luYWwgc2V0IHdoaWNoIHVzZSB0aGUgZ2xvYmFsIHZhbHVlICJzcCIuCisJICBCeSBkZWZhdWx0LCB0aGVzZSBuYW1lcyBlbmQgd2l0aCAiX3NwIiwgYW5kIGFyZSBvdGhlcndpc2UKKwkgIGZ1bmN0aW9uYWxseSBpZGVudGljYWwgd2l0aCB0aGUgb3JpZ2luYWxzLgorCisJICBJbiBhZGRpdGlvbiB0byB0aGUgIl9zcCIgZnVuY3Rpb25zLCB0aGVyZSBhcmUgYSBmZXcgbmV3IGZ1bmN0aW9ucworCSAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmVhdHVyZTogIGNlaWxpbmdfcGFuZWwsIGdyb3VuZF9wYW5lbCwKKwkgIG5ld19wcmVzY3IuCisKKwkgIElmIHRoZSBsaWJyYXJ5IGlzIG5vdCBidWlsdCB3aXRoIHRoZSBzcC1mdW5jcyBleHRlbnNpb24sIHRoZXJlCisJICBhcmUgbm8gcmVsYXRlZCBpbnRlcmZhY2UgY2hhbmdlcy4KKworCSsgYWRkIHRpcGFybSBmdW5jdGlvbiBiYXNlZCBvbiByZXZpZXcgb2YgWC9PcGVuIEN1cnNlcyBJc3N1ZSA3LgorCisJKyBjaGFuZ2UgaW50ZXJuYWwgX25jX2hhc19tb3VzZSBmdW5jdGlvbiB0byBwdWJsaWMgaGFzX21vdXNlIGZ1bmN0aW9uCisKKwlBZGRlZCBleHRlbnNpb25zOgorCisJKyBhZGQgYSBmZXcgbW9yZSBmdW5jdGlvbnMgdG8gc3VwcG9ydCB0aGUgTkNVUlNFU19PUEFRVUUgZmVhdHVyZToKKwkgIGdldF9lc2NkZWxheSwgaXNfcGFkLCBpc19zdWJ3aW4KKworCUFkZGVkIGludGVybmFsIGZ1bmN0aW9ucyAob3RoZXIgdGhhbiAiX3NwIiB2YXJpYW50cyk6CisJCV9uY19jdXJzY3Jfb2YKKwkJX25jX2Zvcm1hdF9zbGtzCisJCV9uY19nZXRfYWxpYXNfdGFibGUKKwkJX25jX2dldF9oYXNoX2luZm8KKwkJX25jX2luc2VydF93Y2gKKwkJX25jX25ld3Njcl9vZgorCQlfbmNfb3V0Y193cmFwcGVyCisJCV9uY19yZXRyYWNlX2NoYXIKKwkJX25jX3JldHJhY2VfaW50X2F0dHJfdAorCQlfbmNfcmV0cmFjZV9tbWFza190CisJCV9uY19zZXR1cF90aW5mbworCQlfbmNfc3Rkc2NyX29mCisJCV9uY190aW5mb19jbWRjaAorCisJUmVtb3ZlZCBpbnRlcm5hbCBmdW5jdGlvbnM6CisJCV9uY19tYWtlbmV3IChzb21lIGNvbmZpZ3VyYXRpb25zIHJlcGxhY2UgYnkgX25jX21ha2VuZXdfc3ApCisKKwlNb2RpZmllZCBpbnRlcm5hbCBmdW5jdGlvbnM6CisJCV9uY19VcGRhdGVBdHRycworCQlfbmNfZ2V0X2hhc2hfdGFibGUKKwkJX25jX2hhc19tb3VzZQorCQlfbmNfaW5zZXJ0X2NoCisJCV9uY193Z2V0Y2gKKwogICAgIDUuNyAoTm92ZW1iZXIgMiwgMjAwOCkKIAlJbnRlcmZhY2UgY2hhbmdlczoKIApAQCAtMTAxMSw3ICsxMzI1LDcgQEAKIAkgIG9mIHRoZSBuY3Vyc2VzIGxpYnJhcnkgdXNlZCBmb3IgdGhlIHRpYyBwcm9ncmFtIGFzIHdlbGwgYXMgc29tZQogCSAgb3RoZXJzIHN1Y2ggYXMgdGFjay4gIFRoZXJlIGlzIG5vIEFQSSBjaGFuZ2UsIGJ1dCBtYWtlZmlsZXMgd291bGQgYmUKIAkgIGNoYW5nZWQgdG8gdXNlIHRoZSB0aWMtbGlicmFyeSBidWlsdCBzZXBhcmF0ZWx5LgotCSAgCisKIAkgIHRhY2ssIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHkgZnJvbSBuY3Vyc2VzLCB1c2VzIHNvbWUgb2YgdGhlIGludGVybmFsCiAJICBfbmNfWFhYIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGRlY2xhcmVkIGluIHRoZSB0aWMuaCBoZWFkZXIgZmlsZS4KIApAQCAtMTE1OCw3ICsxNDcyLDcgQEAKIAkgIHN0aWxsIHVzZWQgaW4gdGhpcyByZWxlYXNlIHRvIGFsbG93IGNvbXBpbGluZyB3aXRoIG5vdC1zby1vbGQKIAkgIGNvbXBpbGVycy4KIAotCSsgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMgbm93IHdvcmsgd2l0aCB3aWRlLWNoYXJhY3RlciBkYXRhLiAKKwkrIGZvcm0gYW5kIG1lbnUgbGlicmFyaWVzIG5vdyB3b3JrIHdpdGggd2lkZS1jaGFyYWN0ZXIgZGF0YS4KIAkgIEFwcGxpY2F0aW9ucyB3aGljaCBieXBhc3NlZCB0aGUgZm9ybSBsaWJyYXJ5IGFuZCBtYW5pcHVsYXRlZCB0aGUKIAkgIEZJRUxELmJ1ZiBkYXRhIGRpcmVjdGx5IHdpbGwgbm90IHdvcmsgcHJvcGVybHkgd2l0aCBsaWJmb3Jtdywgc2luY2UKIAkgIHRoYXQgbm8gbG9uZ2VyIHBvaW50cyB0byBhbiBhcnJheSBvZiBjaGFyLiAgVGhlIHNldF9maWVsZF9idWZmZXIoKQpAQCAtMTQzOCw4ICsxNzUyLDggQEAKIAogICAgIDQuMCAoRGVjZW1iZXIgMjQsIDE5OTYpCiAKLQlXZSBidW1wZWQgdG8gdmVyc2lvbiA0LjAgYmVjYXVzZSB0aGUgbmV3bHkgcmVsZWFzZWQgZHluYW1pYyBsb2FkZXIKLQkobGQuc28uMS44LjUpIG9uIExpbnV4IGRpZCBub3QgbG9hZCBzaGFyZWQgbGlicmFyaWVzIHdob3NlIEFCSSBhbmQgUkVMCisJV2UgYnVtcGVkIHRvIHZlcnNpb24gNC4wIGJlY2F1c2UgdGhlIG5ld2x5IHJlbGVhc2VkIExpbnV4IGR5bmFtaWMKKwlsb2FkZXIgKGxkLnNvLjEuOC41KSBkaWQgbm90IGxvYWQgc2hhcmVkIGxpYnJhcmllcyB3aG9zZSBBQkkgYW5kIFJFTAogCXZlcnNpb25zIHdlcmUgaW5jb25zaXN0ZW50LiAgQXQgdGhhdCBwb2ludCwgbmN1cnNlcyBBQkkgd2FzIDMuNCBhbmQgdGhlCiAJUkVMIHdhcyAxLjkuOWcsIHNvIHdlIG1hZGUgdGhlbSBjb25zaXN0ZW50LgogCkBAIC0xNDk2LDEwICsxODEwLDEwIEBACiAKICAgICBDb25maWd1cmF0aW9uIGFuZCBJbnN0YWxsYXRpb246CiAKLSAgICAJT24gcGxhdGZvcm1zIHdoZXJlIG5jdXJzZXMgaXMgYXNzdW1lZCB0byBiZSBpbnN0YWxsZWQgaW4gL3Vzci9saWIsCisJT24gcGxhdGZvcm1zIHdoZXJlIG5jdXJzZXMgaXMgYXNzdW1lZCB0byBiZSBpbnN0YWxsZWQgaW4gL3Vzci9saWIsCiAJdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdXNlcyAiL3VzciIgYXMgYSBkZWZhdWx0OgogCi0JCUxpbnV4LCBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIEN5Z3dpbgorCQlHTlUvTGludXgsIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCwgQ3lnd2luCiAKIAlGb3Igb3RoZXIgcGxhdGZvcm1zLCB0aGUgZGVmYXVsdCBpcyAiL3Vzci9sb2NhbCIuICBTZWUgdGhlIGRpc2N1c3Npb24KIAlvZiB0aGUgIi0tZGlzYWJsZS1vdmVyd3JpdGUiIG9wdGlvbi4KQEAgLTE1NjIsNyArMTg3Niw3IEBACiAJCWJzZG9zCS0tIEJTRC9PUwogCiAJSWYgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgaW50ZWdyYXRpbmcgbmN1cnNlcyBmb3Igb25lIG9mIHRoZXNlCi0JZGlzdHJpYnV0aW9uLCBwbGVhc2UgZWl0aGVyIHVzZSB0aGUgcmVjb21tZW5kZWQgbmFtZSBvciBnZXQgYmFjaworCWRpc3RyaWJ1dGlvbnMsIHBsZWFzZSBlaXRoZXIgdXNlIHRoZSByZWNvbW1lbmRlZCBuYW1lIG9yIGdldCBiYWNrCiAJdG8gdXMgZXhwbGFpbmluZyB3aHkgeW91IGRvbid0IHdhbnQgdG8sIHNvIHdlIGNhbiB3b3JrIG91dCBub21lbmNsYXR1cmUKIAl0aGF0IHdpbGwgbWFrZSB1c2VycycgbGl2ZXMgZWFzaWVyIHJhdGhlciB0aGFuIGhhcmRlci4KIApAQCAtMTU4NCw3ICsxODk4LDggQEAKIAl0cmVlIGlzIGFjY2Vzc2libGUgKHRoYXQgaXMsIGluIHNpbmdsZS11c2VyIG1vZGUgb3IgYXQgT1MgaW5zdGFsbGF0aW9uCiAJdGltZSkgdGhlIG5jdXJzZXMgbGlicmFyeSBjYW4gYmUgY29tcGlsZWQgdG8gaW5jbHVkZSBhbiBhcnJheSBvZgogCXByZS1mZXRjaGVkIGZhbGxiYWNrIGVudHJpZXMuICBUaGlzIG11c3QgYmUgZG9uZSBvbiBhIG1hY2hpbmUgd2hpY2gKLQloYXMgbmN1cnNlcycgaW5mb2NtcCBhbmQgdGVybWluZm8gZGF0YWJhc2UgaW5zdGFsbGVkLgorCWhhcyBuY3Vyc2VzJyBpbmZvY21wIGFuZCB0ZXJtaW5mbyBkYXRhYmFzZSBpbnN0YWxsZWQgKGFzIHdlbGwgYXMKKwluY3Vyc2VzJyB0aWMgYW5kIGluZm9jbXAgcHJvZ3JhbXMpLgogCiAJVGhlc2UgZW50cmllcyBhcmUgY2hlY2tlZCBieSBzZXR1cHRlcm0oKSBvbmx5IHdoZW4gdGhlIGNvbnZlbnRpb25hbAogCWZldGNoZXMgZnJvbSB0aGUgdGVybWluZm8gdHJlZSBhbmQgdGhlIHRlcm1jYXAgZmFsbGJhY2sgKGlmIGNvbmZpZ3VyZWQpCkBAIC0xNTk1LDIwICsxOTEwLDM3IEBACiAJQnkgZGVmYXVsdCwgdGhlcmUgYXJlIG5vIGVudHJpZXMgb24gdGhlIGZhbGxiYWNrIGxpc3QuICBBZnRlciB5b3UgaGF2ZQogCWJ1aWx0IHRoZSBuY3Vyc2VzIHN1aXRlIGZvciB0aGUgZmlyc3QgdGltZSwgeW91IGNhbiBjaGFuZ2UgdGhlIGxpc3QKIAkodGhlIHByb2Nlc3MgbmVlZHMgaW5mb2NtcCgxKSkuICBUbyBkbyBzbywgdXNlIHRoZSBzY3JpcHQKLQluY3Vyc2VzL3RpbmZvL01LZmFsbGJhY2suc2guICBBIGNvbmZpZ3VyZSBzY3JpcHQgb3B0aW9uCisJbmN1cnNlcy90aW5mby9NS2ZhbGxiYWNrLnNoLiAgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgb3B0aW9uCiAJLS13aXRoLWZhbGxiYWNrcyBkb2VzIHRoaXMgKGl0IGFjY2VwdHMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUKIAluYW1lcyB5b3Ugd2lzaCwgYW5kIGRvZXMgbm90IHJlcXVpcmUgYSByZWJ1aWxkKS4KIAogCUlmIHlvdSB3YW50ZWQgKHNheSkgdG8gaGF2ZSBsaW51eCwgdnQxMDAsIGFuZCB4dGVybSBmYWxsYmFja3MsIHlvdQotCXdvdWxkIHVzZSB0aGUgY29tbWFuZHMKKwltaWdodCB1c2UgdGhlIGNvbW1hbmRzCiAKIAkJY2QgbmN1cnNlczsKLQkJdGluZm8vTUtmYWxsYmFjay5zaCBsaW51eCB2dDEwMCB4dGVybSA+ZmFsbGJhY2suYworCQl0aW5mby9NS2ZhbGxiYWNrLnNoIFwKKwkJCSRURVJNSU5GTyBcCisJCQkuLi9taXNjL3Rlcm1pbmZvLnNyYyBcCisJCQlgd2hpY2ggdGljYCBcCisJCQlsaW51eCB2dDEwMCB4dGVybSA+ZmFsbGJhY2suYworCisJVGhlIGZpcnN0IHRocmVlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcmlwdCBhcmUgbm9ybWFsbHkgc3VwcGxpZWQgYnkKKwl0aGUgY29uZmlndXJlZCBtYWtlZmlsZXMgdmlhIHRoZSAiLS13aXRoLWZhbGxiYWNrcyIgb3B0aW9uLiAgVGhleQorCWFyZQorCisJCTEpIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGVybWluZm8gZGF0YWJhc2UKKwkJMikgdGhlIHNvdXJjZSBmb3IgdGhlIHRlcm1pbmZvIGVudHJpZXMKKwkJMykgdGhlIGxvY2F0aW9uIG9mIHRoZSB0aWMgcHJvZ3JhbSwgdXNlZCB0byBjcmVhdGUgYSB0ZXJtaW5mbworCQkgICBkYXRhYmFzZS4KIAogCVRoZW4ganVzdCByZWJ1aWxkIGFuZCByZWluc3RhbGwgdGhlIGxpYnJhcnkgYXMgeW91IHdvdWxkIG5vcm1hbGx5LgogCVlvdSBjYW4gcmVzdG9yZSB0aGUgZGVmYXVsdCBlbXB0eSBmYWxsYmFjayBsaXN0IHdpdGgKIAotCQl0aW5mby9NS2ZhbGxiYWNrLnNoID5mYWxsYmFjay5jCisJCXRpbmZvL01LZmFsbGJhY2suc2ggXAorCQkJJFRFUk1JTkZPIFwKKwkJCS4uL21pc2MvdGVybWluZm8uc3JjIFwKKwkJCWB3aGljaCB0aWNgIFwKKwkJCT5mYWxsYmFjay5jCiAKIAlUaGUgb3ZlcmhlYWQgZm9yIGFuIGVtcHR5IGZhbGxiYWNrIGxpc3QgaXMgb25lIHRyaXZpYWwgc3R1YiBmdW5jdGlvbi4KIAlBbnkgbm9uLWVtcHR5IGZhbGxiYWNrIGxpc3QgaXMgY29uc3QtZWQgYW5kIHRoZXJlZm9yZSBsaXZlcyBpbiBzaGFyYWJsZQpAQCAtMTY4OSw4ICsyMDIxLDggQEAKIAl3aXRoIHRoaXMgYnkgbWFraW5nIHRpYyB1c2Ugc3ltYm9saWMgbGlua3MuCiAKIFVTSU5HIE5DVVJTRVMgV0lUSCBHUE06Ci0JTmN1cnNlcyA0LjEgYW5kIHVwIGNhbiBiZSBjb25maWd1cmVkIHRvIHVzZSBHUE0gKEdlbmVyYWwgUHVycG9zZQotCU1vdXNlKSB3aGljaCBpcyB1c2VkIG9uIExpbnV4IGNvbnNvbGUuICBCZSBhd2FyZSB0aGF0IEdQTSBpcyBjb21tb25seQorCU5jdXJzZXMgNC4xIGFuZCB1cCBjYW4gYmUgY29uZmlndXJlZCB0byB1c2UgR1BNIChHZW5lcmFsIFB1cnBvc2UgTW91c2UpCisJd2hpY2ggaXMgdXNlZCB3aXRoIExpbnV4IGNvbnNvbGUuICBCZSBhd2FyZSB0aGF0IEdQTSBpcyBjb21tb25seQogCWluc3RhbGxlZCBhcyBhIHNoYXJlZCBsaWJyYXJ5IHdoaWNoIGNvbnRhaW5zIGEgd3JhcHBlciBmb3IgdGhlIGN1cnNlcwogCXdnZXRjaCgpIGZ1bmN0aW9uIChsaWJjdXJzZXMubykuICBTb21lIGludGVncmF0b3JzIGhhdmUgc2ltcGxpZmllZAogCWxpbmtpbmcgYXBwbGljYXRpb25zIGJ5IGNvbWJpbmluZyBhbGwgb3IgcGFydCBvZiBsaWJjdXJzZXMuc28gaW50byB0aGUKQEAgLTE3MzUsNiArMjA2NywxMCBAQAogCW9wdGlvbiksIG5jdXJzZXMgdXNlcyB0aGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0ncyB0aWMgdG8gZG8gdGhlCiAJIm1ha2UgaW5zdGFsbC5kYXRhIiBwb3J0aW9uLgogCisJVGhlIHN5c3RlbSdzIHRpYyBwcm9ncmFtIGlzIHVzZWQgdG8gaW5zdGFsbCB0aGUgdGVybWluYWwgZGF0YWJhc2UsCisJZXZlbiBmb3IgY3Jvc3MtY29tcGlsZXMuICBGb3IgYmVzdCByZXN1bHRzLCB0aGUgdGljIHByb2dyYW0gc2hvdWxkCisJYmUgZnJvbSB0aGUgbW9zdCBjdXJyZW50IHZlcnNpb24gb2YgbmN1cnNlcy4KKwogQlVHUzoKIAlTZW5kIGFueSBmZWVkYmFjayB0byB0aGUgbmN1cnNlcyBtYWlsaW5nIGxpc3QgYXQKIAlidWctbmN1cnNlc0BnbnUub3JnLiBUbyBzdWJzY3JpYmUgc2VuZCBtYWlsIHRvCmRpZmYgLS1naXQgYS9NQU5JRkVTVCBiL01BTklGRVNUCmluZGV4IGRiMzg3MWYuLmVjYmRjNzggMTAwNjQ0Ci0tLSBhL01BTklGRVNUCisrKyBiL01BTklGRVNUCkBAIC0zLDYgKzMsMTAgQEAKIC4vQWRhOTUvTWFrZWZpbGUuaW4KIC4vQWRhOTUvUkVBRE1FCiAuL0FkYTk1L1RPRE8KKy4vQWRhOTUvYWNsb2NhbC5tNAorLi9BZGE5NS9jb25maWd1cmUKKy4vQWRhOTUvY29uZmlndXJlLmluCisuL0FkYTk1L2RvYy9NYWtlZmlsZS5pbgogLi9BZGE5NS9nZW4vTWFrZWZpbGUuaW4KIC4vQWRhOTUvZ2VuL2FkYWN1cnNlcy1jb25maWcuaW4KIC4vQWRhOTUvZ2VuL2dlbi5jCkBAIC0yMyw2ICsyNywyMSBAQAogLi9BZGE5NS9nZW4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZHMubTQKIC4vQWRhOTUvZ2VuL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiLm00CiAuL0FkYTk1L2dlbi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkcy5tNAorLi9BZGE5NS9pbmNsdWRlL01LbmN1cnNlc19kZWYuc2gKKy4vQWRhOTUvaW5jbHVkZS9NYWtlZmlsZS5pbgorLi9BZGE5NS9pbmNsdWRlL25jdXJzZXNfY2ZnLmhpbgorLi9BZGE5NS9pbmNsdWRlL25jdXJzZXNfZGVmcworLi9BZGE5NS9tYWtlLXRhci5zaAorLi9BZGE5NS9tay0xc3QuYXdrCisuL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLWRvYy5zcGVjCisuL0FkYTk1L3BhY2thZ2UvQWRhQ3Vyc2VzLnNwZWMKKy4vQWRhOTUvcGFja2FnZS9kZWJpYW4vY29tcGF0CisuL0FkYTk1L3BhY2thZ2UvZGViaWFuL2NvbnRyb2wKKy4vQWRhOTUvcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0CisuL0FkYTk1L3BhY2thZ2UvZGViaWFuL2RvY3MKKy4vQWRhOTUvcGFja2FnZS9kZWJpYW4vcnVsZXMKKy4vQWRhOTUvcGFja2FnZS9kZWJpYW4vc291cmNlL2Zvcm1hdAorLi9BZGE5NS9wYWNrYWdlL2RlYmlhbi93YXRjaAogLi9BZGE5NS9zYW1wbGVzL01ha2VmaWxlLmluCiAuL0FkYTk1L3NhbXBsZXMvUkVBRE1FCiAuL0FkYTk1L3NhbXBsZXMvZXhwbGFpbi50eHQKQEAgLTEwOSw2ICsxMjgsMTMgQEAKIC4vQWRhOTUvc2FtcGxlcy90b3VyLmFkYgogLi9BZGE5NS9zYW1wbGVzL3RvdXIuYWRzCiAuL0FkYTk1L3NyYy9NYWtlZmlsZS5pbgorLi9BZGE5NS9zcmMvY190aHJlYWRlZF92YXJpYWJsZXMuYworLi9BZGE5NS9zcmMvY190aHJlYWRlZF92YXJpYWJsZXMuaAorLi9BZGE5NS9zcmMvY192YXJhcmdzX3RvX2FkYS5jCisuL0FkYTk1L3NyYy9jX3ZhcmFyZ3NfdG9fYWRhLmgKKy4vQWRhOTUvc3JjL2xpYnJhcnkuZ3ByCisuL0FkYTk1L3NyYy9tb2R1bGVzCisuL0FkYTk1L3NyYy9uY3Vyc2VzX2NvbXBhdC5jCiAuL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZGIKIC4vQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRiCiAuL0FkYTk1L3NyYy90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkcwpAQCAtMTY2LDE0ICsxOTIsMTcgQEAKIC4vQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHMKIC4vQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRiX3AKIC4vQWRhOTUvc3JjL3Rlcm1pbmFsX2ludGVyZmFjZS5hZHMKKy4vQ09QWUlORwogLi9JTlNUQUxMCiAuL01BTklGRVNUCiAuL01ha2VmaWxlLmluCiAuL01ha2VmaWxlLm9zMgogLi9ORVdTCiAuL1JFQURNRQorLi9SRUFETUUuTWluR1cKIC4vUkVBRE1FLmVteAogLi9UTy1ETworLi9WRVJTSU9OCiAuL2FjbG9jYWwubTQKIC4vYW5ub3VuY2UuaHRtbC5pbgogLi9jKysvTWFrZWZpbGUuaW4KQEAgLTMwNywxMCArMzM2LDEyIEBACiAuL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtCiAuL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtCiAuL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtCisuL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bQogLi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtCiAuL2RvYy9odG1sL2Fubm91bmNlLmh0bWwKIC4vZG9jL2h0bWwvaGFja2d1aWRlLmh0bWwKIC4vZG9jL2h0bWwvaW5kZXguaHRtbAorLi9kb2MvaHRtbC9tYW4vYWRhY3Vyc2VzLWNvbmZpZy4xLmh0bWwKIC4vZG9jL2h0bWwvbWFuL2NhcHRvaW5mby4xbS5odG1sCiAuL2RvYy9odG1sL21hbi9jbGVhci4xLmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfYWRkX3djaC4zeC5odG1sCkBAIC0zNTAsNiArMzgxLDcgQEAKIC4vZG9jL2h0bWwvbWFuL2N1cnNfaW53c3RyLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfbGVnYWN5LjN4Lmh0bWwKKy4vZG9jL2h0bWwvbWFuL2N1cnNfbWVtbGVha3MuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vY3Vyc19tb3VzZS4zeC5odG1sCiAuL2RvYy9odG1sL21hbi9jdXJzX21vdmUuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vY3Vyc19vcGFxdWUuM3guaHRtbApAQCAtMzYzLDYgKzM5NSw3IEBACiAuL2RvYy9odG1sL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfc2Nyb2xsLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfc2xrLjN4Lmh0bWwKKy4vZG9jL2h0bWwvbWFuL2N1cnNfc3BfZnVuY3MuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtY2FwLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfdGVybWluZm8uM3guaHRtbApAQCAtMzcwLDYgKzQwMyw3IEBACiAuL2RvYy9odG1sL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfdHJhY2UuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vY3Vyc191dGlsLjN4Lmh0bWwKKy4vZG9jL2h0bWwvbWFuL2N1cnNfdmFyaWFibGVzLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2RlZmF1bHRfY29sb3JzLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL2RlZmluZV9rZXkuM3guaHRtbApAQCAtMzk1LDYgKzQyOSw3IEBACiAuL2RvYy9odG1sL21hbi9mb3JtX3Bvc3QuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeC5odG1sCiAuL2RvYy9odG1sL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbAorLi9kb2MvaHRtbC9tYW4vZm9ybV92YXJpYWJsZXMuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vZm9ybV93aW4uM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vaW5kZXguaHRtbAogLi9kb2MvaHRtbC9tYW4vaW5mb2NtcC4xbS5odG1sCkBAIC00MjcsMTAgKzQ2MiwxMyBAQAogLi9kb2MvaHRtbC9tYW4vbWl0ZW1fdmFsdWUuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vbWl0ZW1fdmlzaWJsZS4zeC5odG1sCiAuL2RvYy9odG1sL21hbi9uY3Vyc2VzLjN4Lmh0bWwKKy4vZG9jL2h0bWwvbWFuL25jdXJzZXM1LWNvbmZpZy4xLmh0bWwKIC4vZG9jL2h0bWwvbWFuL3BhbmVsLjN4Lmh0bWwKIC4vZG9jL2h0bWwvbWFuL3Jlc2l6ZXRlcm0uM3guaHRtbAorLi9kb2MvaHRtbC9tYW4vdGFicy4xLmh0bWwKIC4vZG9jL2h0bWwvbWFuL3Rlcm0uNS5odG1sCiAuL2RvYy9odG1sL21hbi90ZXJtLjcuaHRtbAorLi9kb2MvaHRtbC9tYW4vdGVybV92YXJpYWJsZXMuM3guaHRtbAogLi9kb2MvaHRtbC9tYW4vdGVybWluZm8uNS5odG1sCiAuL2RvYy9odG1sL21hbi90aWMuMW0uaHRtbAogLi9kb2MvaHRtbC9tYW4vdG9lLjFtLmh0bWwKQEAgLTQ3OSwxMiArNTE3LDE1IEBACiAuL2Zvcm0vZnR5X2FsbnVtLmMKIC4vZm9ybS9mdHlfYWxwaGEuYwogLi9mb3JtL2Z0eV9lbnVtLmMKKy4vZm9ybS9mdHlfZ2VuZXJpYy5jCiAuL2Zvcm0vZnR5X2ludC5jCiAuL2Zvcm0vZnR5X2lwdjQuYwogLi9mb3JtL2Z0eV9udW0uYwogLi9mb3JtL2Z0eV9yZWdleC5jCiAuL2Zvcm0vaGVhZGVycwogLi9mb3JtL2xsaWItbGZvcm0KKy4vZm9ybS9sbGliLWxmb3JtdAorLi9mb3JtL2xsaWItbGZvcm10dwogLi9mb3JtL2xsaWItbGZvcm13CiAuL2Zvcm0vbW9kdWxlcwogLi9pbmNsdWRlL0NhcHMKQEAgLTUwNywxNiArNTQ4LDIyIEBACiAuL2luY2x1ZGUvaGFzaGVkX2RiLmgKIC4vaW5jbHVkZS9oZWFkZXJzCiAuL2luY2x1ZGUvbmNfYWxsb2MuaAorLi9pbmNsdWRlL25jX21pbmd3LmgKIC4vaW5jbHVkZS9uY19wYW5lbC5oCisuL2luY2x1ZGUvbmNfc3RyaW5nLmgKKy4vaW5jbHVkZS9uY190ZXJtaW9zLmgKIC4vaW5jbHVkZS9uY190cGFybS5oCiAuL2luY2x1ZGUvbmN1cnNlc19jZmcuaGluCiAuL2luY2x1ZGUvbmN1cnNlc19kZWZzCi0uL2luY2x1ZGUvbmN1cnNlc19kbGwuaAorLi9pbmNsdWRlL25jdXJzZXNfZGxsLmguaW4KKy4vaW5jbHVkZS9uY3Vyc2VzX21pbmd3LmgKIC4vaW5jbHVkZS90ZXJtX2VudHJ5LmgKIC4vaW5jbHVkZS90ZXJtY2FwLmguaW4KIC4vaW5jbHVkZS90aWMuaAogLi9pbmNsdWRlL3VuY3RybC5oLmluCiAuL2luc3RhbGwtc2gKKy4vbWFuL01LYWRhX2NvbmZpZy5pbgorLi9tYW4vTUtuY3VfY29uZmlnLmluCiAuL21hbi9NS3Rlcm1pbmZvLnNoCiAuL21hbi9NYWtlZmlsZS5pbgogLi9tYW4vY2FwdG9pbmZvLjFtCkBAIC01NzIsNiArNjE5LDcgQEAKIC4vbWFuL2N1cnNfc2NyX2R1bXAuM3gKIC4vbWFuL2N1cnNfc2Nyb2xsLjN4CiAuL21hbi9jdXJzX3Nsay4zeAorLi9tYW4vY3Vyc19zcF9mdW5jcy4zeAogLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3gKIC4vbWFuL2N1cnNfdGVybWNhcC4zeAogLi9tYW4vY3Vyc190ZXJtaW5mby4zeApAQCAtNTc5LDYgKzYyNyw3IEBACiAuL21hbi9jdXJzX3RvdWNoLjN4CiAuL21hbi9jdXJzX3RyYWNlLjN4CiAuL21hbi9jdXJzX3V0aWwuM3gKKy4vbWFuL2N1cnNfdmFyaWFibGVzLjN4CiAuL21hbi9jdXJzX3dpbmRvdy4zeAogLi9tYW4vZGVmYXVsdF9jb2xvcnMuM3gKIC4vbWFuL2RlZmluZV9rZXkuM3gKQEAgLTYwNCw2ICs2NTMsNyBAQAogLi9tYW4vZm9ybV9wb3N0LjN4CiAuL21hbi9mb3JtX3JlcXVlc3RuYW1lLjN4CiAuL21hbi9mb3JtX3VzZXJwdHIuM3gKKy4vbWFuL2Zvcm1fdmFyaWFibGVzLjN4CiAuL21hbi9mb3JtX3dpbi4zeAogLi9tYW4vaW5mb2NtcC4xbQogLi9tYW4vaW5mb3RvY2FwLjFtCkBAIC02MTMsNiArNjYzLDggQEAKIC4vbWFuL2xlZ2FjeV9jb2RpbmcuM3gKIC4vbWFuL21ha2Vfc2VkLnNoCiAuL21hbi9tYW5fZGIucmVuYW1lcworLi9tYW4vbWFuaHRtbC5hbGlhc2VzCisuL21hbi9tYW5odG1sLmV4dGVybnMKIC4vbWFuL21hbmxpbmtzLnNlZAogLi9tYW4vbWVudS4zeAogLi9tYW4vbWVudV9hdHRyaWJ1dGVzLjN4CkBAIC02NDAsOCArNjkyLDEwIEBACiAuL21hbi9uY3Vyc2VzLjN4CiAuL21hbi9wYW5lbC4zeAogLi9tYW4vcmVzaXpldGVybS4zeAorLi9tYW4vdGFicy4xCiAuL21hbi90ZXJtLjUKIC4vbWFuL3Rlcm0uNworLi9tYW4vdGVybV92YXJpYWJsZXMuM3gKIC4vbWFuL3Rlcm1pbmZvLmhlYWQKIC4vbWFuL3Rlcm1pbmZvLnRhaWwKIC4vbWFuL3RpYy4xbQpAQCAtNjU0LDYgKzcwOCw4IEBACiAuL21lbnUvZXRpLmgKIC4vbWVudS9oZWFkZXJzCiAuL21lbnUvbGxpYi1sbWVudQorLi9tZW51L2xsaWItbG1lbnV0CisuL21lbnUvbGxpYi1sbWVudXR3CiAuL21lbnUvbGxpYi1sbWVudXcKIC4vbWVudS9tX2F0dHJpYnMuYwogLi9tZW51L21fY3Vyc29yLmMKQEAgLTY5NCwxMyArNzUwLDEzIEBACiAuL21pc2MvZW14LnNyYwogLi9taXNjL2Zvcm0uZGVmCiAuL21pc2MvZm9ybS5yZWYKKy4vbWlzYy9nZW4tcGtnY29uZmlnLmluCiAuL21pc2MvZ2VuX2VkaXQuc2gKLS4vbWlzYy9qcGYtaW5kZW50CisuL21pc2MvbWFnaWMKIC4vbWlzYy9tYWtlZGVmLmNtZAogLi9taXNjL21ha2VsbGliCiAuL21pc2MvbWVudS5kZWYKIC4vbWlzYy9tZW51LnJlZgotLi9taXNjL25jdS1pbmRlbnQKIC4vbWlzYy9uY3Vyc2VzLWNvbmZpZy5pbgogLi9taXNjL25jdXJzZXMuZGVmCiAuL21pc2MvbmN1cnNlcy5yZWYKQEAgLTcxOSw3ICs3NzUsNiBAQAogLi9tay0xc3QuYXdrCiAuL21rLTJuZC5hd2sKIC4vbWstaGRyLmF3awotLi9ta2RpcnMuc2gKIC4vbmN1cnNlcy9NYWtlZmlsZS5pbgogLi9uY3Vyc2VzL1JFQURNRQogLi9uY3Vyc2VzL1JFQURNRS5JWgpAQCAtNzQ4LDYgKzgwMyw3IEBACiAuL25jdXJzZXMvYmFzZS9saWJfZGVsY2guYwogLi9uY3Vyc2VzL2Jhc2UvbGliX2RlbHdpbi5jCiAuL25jdXJzZXMvYmFzZS9saWJfZGZ0X2ZnYmcuYworLi9uY3Vyc2VzL2Jhc2UvbGliX2RyaXZlci5jCiAuL25jdXJzZXMvYmFzZS9saWJfZWNoby5jCiAuL25jdXJzZXMvYmFzZS9saWJfZW5kd2luLmMKIC4vbmN1cnNlcy9iYXNlL2xpYl9lcmFzZS5jCkBAIC04MDMsNyArODU5LDYgQEAKIC4vbmN1cnNlcy9iYXNlL2xpYl93YXR0cm9uLmMKIC4vbmN1cnNlcy9iYXNlL2xpYl93aW5jaC5jCiAuL25jdXJzZXMvYmFzZS9saWJfd2luZG93LmMKLS4vbmN1cnNlcy9iYXNlL21lbW1vdmUuYwogLi9uY3Vyc2VzL2Jhc2UvbmNfcGFuZWwuYwogLi9uY3Vyc2VzL2Jhc2UvcmVzaXpldGVybS5jCiAuL25jdXJzZXMvYmFzZS9zYWZlX3NwcmludGYuYwpAQCAtODEzLDExICs4NjgsMjEgQEAKIC4vbmN1cnNlcy9iYXNlL3ZlcnNpb24uYwogLi9uY3Vyc2VzL2Jhc2UvdnNzY2FuZi5jCiAuL25jdXJzZXMvYmFzZS93cmVzaXplLmMKKy4vbmN1cnNlcy9idWlsZC5wcml2LmgKIC4vbmN1cnNlcy9jdXJzZXMucHJpdi5oCiAuL25jdXJzZXMvZmlmb19kZWZzLmgKIC4vbmN1cnNlcy9sbGliLWxuY3Vyc2VzCiAuL25jdXJzZXMvbGxpYi1sbmN1cnNlc3QKKy4vbmN1cnNlcy9sbGliLWxuY3Vyc2VzdHcKIC4vbmN1cnNlcy9sbGliLWxuY3Vyc2VzdworLi9uY3Vyc2VzL2xsaWItbHRpYworLi9uY3Vyc2VzL2xsaWItbHRpY3QKKy4vbmN1cnNlcy9sbGliLWx0aWN0dworLi9uY3Vyc2VzL2xsaWItbHRpY3cKKy4vbmN1cnNlcy9sbGliLWx0aW5mbworLi9uY3Vyc2VzL2xsaWItbHRpbmZvdAorLi9uY3Vyc2VzL2xsaWItbHRpbmZvdHcKKy4vbmN1cnNlcy9sbGliLWx0aW5mb3cKIC4vbmN1cnNlcy9tb2R1bGVzCiAuL25jdXJzZXMvdGluZm8vTUtjYXB0YWIuYXdrCiAuL25jdXJzZXMvdGluZm8vTUtjYXB0YWIuc2gKQEAgLTg2MywxMyArOTI4LDE1IEBACiAuL25jdXJzZXMvdGluZm8vbGliX3RwYXJtLmMKIC4vbmN1cnNlcy90aW5mby9saWJfdHB1dHMuYwogLi9uY3Vyc2VzL3RpbmZvL2xpYl90dHlmbGFncy5jCisuL25jdXJzZXMvdGluZm8vbWFrZV9oYXNoLmMKIC4vbmN1cnNlcy90aW5mby9tYWtlX2tleXMuYwogLi9uY3Vyc2VzL3RpbmZvL25hbWVfbWF0Y2guYworLi9uY3Vyc2VzL3RpbmZvL29ic29sZXRlLmMKIC4vbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCiAuL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jCiAuL25jdXJzZXMvdGluZm8vcmVhZF90ZXJtY2FwLmMKLS4vbmN1cnNlcy90aW5mby9zZXRidWYuYwogLi9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworLi9uY3Vyc2VzL3RpbmZvL3RpbmZvX2RyaXZlci5jCiAuL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKIC4vbmN1cnNlcy90aW5mby91c2Vfc2NyZWVuLmMKIC4vbmN1cnNlcy90aW5mby93cml0ZV9lbnRyeS5jCkBAIC04OTIsOSArOTU5LDggQEAKIC4vbmN1cnNlcy90dHkvbGliX3RzdHAuYwogLi9uY3Vyc2VzL3R0eS9saWJfdHdhaXQuYwogLi9uY3Vyc2VzL3R0eS9saWJfdmlkYXR0ci5jCi0uL25jdXJzZXMvdHR5L3R0eV9kaXNwbGF5LmgKLS4vbmN1cnNlcy90dHkvdHR5X2lucHV0LmgKIC4vbmN1cnNlcy90dHkvdHR5X3VwZGF0ZS5jCisuL25jdXJzZXMvd2N3aWR0aC5oCiAuL25jdXJzZXMvd2lkZWNoYXIvY2hhcmFibGUuYwogLi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9hZGRfd2NoLmMKIC4vbmN1cnNlcy93aWRlY2hhci9saWJfYm94X3NldC5jCkBAIC05MTUsOSArOTgxLDQ3IEBACiAuL25jdXJzZXMvd2lkZWNoYXIvbGliX3ZsaW5lX3NldC5jCiAuL25jdXJzZXMvd2lkZWNoYXIvbGliX3dhY3MuYwogLi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl93dW5jdHJsLmMKKy4vbmN1cnNlcy93aWRlY2hhci93aWRlY2hhcnMuYworLi9uY3Vyc2VzL3dpbjMyY29uL2dldHRpbWVvZmRheS5jCisuL25jdXJzZXMvd2luMzJjb24vd2N3aWR0aC5jCisuL25jdXJzZXMvd2luMzJjb24vd2luX2RyaXZlci5jCisuL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NoYW5nZWxvZworLi9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb21wYXQKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3cvY29udHJvbAorLi9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb3B5cmlnaHQKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3cvcnVsZXMKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3cvc291cmNlL2Zvcm1hdAorLi9wYWNrYWdlL2RlYmlhbi1taW5ndy93YXRjaAorLi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NoYW5nZWxvZworLi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvbXBhdAorLi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvbnRyb2wKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9ydWxlcworLi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3NvdXJjZS9mb3JtYXQKKy4vcGFja2FnZS9kZWJpYW4tbWluZ3c2NC93YXRjaAorLi9wYWNrYWdlL2RlYmlhbi9jaGFuZ2Vsb2cKKy4vcGFja2FnZS9kZWJpYW4vY29tcGF0CisuL3BhY2thZ2UvZGViaWFuL2NvbnRyb2wKKy4vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0CisuL3BhY2thZ2UvZGViaWFuL3J1bGVzCisuL3BhY2thZ2UvZGViaWFuL3NvdXJjZS9mb3JtYXQKKy4vcGFja2FnZS9kZWJpYW4vd2F0Y2gKKy4vcGFja2FnZS9taW5ndy1uY3Vyc2VzLm5zaQorLi9wYWNrYWdlL21pbmd3LW5jdXJzZXMuc3BlYworLi9wYWNrYWdlL25jdXJzZXMubWFwCisuL3BhY2thZ2UvbmN1cnNlcy5zcGVjCisuL3BhY2thZ2UvbmN1cnNlcy5zeW0KKy4vcGFja2FnZS9uY3Vyc2VzdC5tYXAKKy4vcGFja2FnZS9uY3Vyc2VzdC5zeW0KKy4vcGFja2FnZS9uY3Vyc2VzdHcubWFwCisuL3BhY2thZ2UvbmN1cnNlc3R3LnN5bQorLi9wYWNrYWdlL25jdXJzZXN3Lm1hcAorLi9wYWNrYWdlL25jdXJzZXN3LnN5bQogLi9wYW5lbC9NYWtlZmlsZS5pbgogLi9wYW5lbC9oZWFkZXJzCiAuL3BhbmVsL2xsaWItbHBhbmVsCisuL3BhbmVsL2xsaWItbHBhbmVsdAorLi9wYW5lbC9sbGliLWxwYW5lbHR3CiAuL3BhbmVsL2xsaWItbHBhbmVsdwogLi9wYW5lbC9tb2R1bGVzCiAuL3BhbmVsL3BfYWJvdmUuYwpAQCAtOTQ3LDExICsxMDUxLDE0IEBACiAuL3Byb2dzL2luZm9jbXAuYwogLi9wcm9ncy9tb2R1bGVzCiAuL3Byb2dzL3Byb2dzLnByaXYuaAorLi9wcm9ncy90YWJzLmMKIC4vcHJvZ3MvdGljLmMKIC4vcHJvZ3MvdG9lLmMKKy4vcHJvZ3MvdHBhcm1fdHlwZS5jCisuL3Byb2dzL3RwYXJtX3R5cGUuaAogLi9wcm9ncy90cHV0LmMKKy4vcHJvZ3MvdHJhbnNmb3JtLmMKIC4vcHJvZ3MvdHNldC5jCi0uL3Rhci1jb3B5LnNoCiAuL3Rlc3QvTWFrZWZpbGUuaW4KIC4vdGVzdC9SRUFETUUKIC4vdGVzdC9hY2xvY2FsLm00CkBAIC05NjMsMTkgKzEwNzAsMjUgQEAKIC4vdGVzdC9jYXJkZmlsZS5jCiAuL3Rlc3QvY2FyZGZpbGUuZGF0CiAuL3Rlc3QvY2hnYXQuYworLi90ZXN0L2NsaXBfcHJpbnR3LmMKKy4vdGVzdC9jb2xvcl9uYW1lLmgKIC4vdGVzdC9jb2xvcl9zZXQuYwogLi90ZXN0L2NvbmZpZ3VyZQogLi90ZXN0L2NvbmZpZ3VyZS5pbgogLi90ZXN0L2RlbW9fYWx0a2V5cy5jCiAuL3Rlc3QvZGVtb19kZWZrZXkuYwogLi90ZXN0L2RlbW9fZm9ybXMuYworLi90ZXN0L2RlbW9fZm9ybXMudHh0CiAuL3Rlc3QvZGVtb19rZXlvay5jCiAuL3Rlc3QvZGVtb19tZW51cy5jCiAuL3Rlc3QvZGVtb19wYW5lbHMuYwogLi90ZXN0L2RlbW9fdGVybWNhcC5jCisuL3Rlc3QvZGVtb190ZXJtaW5mby5jCiAuL3Rlc3QvZGl0dG8uYwogLi90ZXN0L2RvdHMuYworLi90ZXN0L2RvdHNfY3Vyc2VzLmMKIC4vdGVzdC9kb3RzX212Y3VyLmMKKy4vdGVzdC9kb3RzX3Rlcm1jYXAuYwogLi90ZXN0L2VjaG9jaGFyLmMKIC4vdGVzdC9lZGl0X2ZpZWxkLmMKIC4vdGVzdC9lZGl0X2ZpZWxkLmgKQEAgLTk4Myw2ICsxMDk2LDcgQEAKIC4vdGVzdC9maXJld29yay5jCiAuL3Rlc3QvZmlyc3RsYXN0LmMKIC4vdGVzdC9mb2xka2V5cy5jCisuL3Rlc3QvZm9ybV9kcml2ZXJfdy5jCiAuL3Rlc3QvZ2RjLjYKIC4vdGVzdC9nZGMuYwogLi90ZXN0L2hhbm9pLmMKQEAgLTk5MCwxOSArMTEwNCw0NSBAQAogLi90ZXN0L2luY2hfd2lkZS5jCiAuL3Rlc3QvaW5jaHMuYwogLi90ZXN0L2luc193aWRlLmMKKy4vdGVzdC9pbnNkZWxsbi5jCiAuL3Rlc3QvaW5zZXJ0cy5jCiAuL3Rlc3Qva2V5X25hbWVzLmMKIC4vdGVzdC9rZXluYW1lcy5jCiAuL3Rlc3Qva25pZ2h0LmMKKy4vdGVzdC9saW5lZGF0YS5oCiAuL3Rlc3QvbGludXgtY29sb3IuZGF0CiAuL3Rlc3QvbGlzdHVzZWQuc2gKIC4vdGVzdC9scnRlc3QuYworLi90ZXN0L21ha2UtdGFyLnNoCiAuL3Rlc3QvbWstdGVzdC5hd2sKIC4vdGVzdC9tb2R1bGVzCiAuL3Rlc3QvbW92ZXdpbmRvdy5jCiAuL3Rlc3QvbmN1cnNlcy5jCiAuL3Rlc3QvbmN1cnNlc190c3QuaGluCiAuL3Rlc3QvbmV3ZGVtby5jCisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29tcGF0CisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29udHJvbAorLi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvcHlyaWdodAorLi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L2RvY3MKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9ydWxlcworLi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3NvdXJjZS9mb3JtYXQKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy93YXRjaAorLi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29tcGF0CisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb250cm9sCisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2RvY3MKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3J1bGVzCisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9zb3VyY2UvZm9ybWF0CisuL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC93YXRjaAorLi90ZXN0L3BhY2thZ2UvZGViaWFuL2NvbXBhdAorLi90ZXN0L3BhY2thZ2UvZGViaWFuL2NvbnRyb2wKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi9kb2NzCisuL3Rlc3QvcGFja2FnZS9kZWJpYW4vcnVsZXMKKy4vdGVzdC9wYWNrYWdlL2RlYmlhbi9zb3VyY2UvZm9ybWF0CisuL3Rlc3QvcGFja2FnZS9kZWJpYW4vd2F0Y2gKKy4vdGVzdC9wYWNrYWdlL21pbmd3LW5jdXJzZXMtZXhhbXBsZXMuc3BlYworLi90ZXN0L3BhY2thZ2UvbmN1cnNlcy1leGFtcGxlcy5zcGVjCiAuL3Rlc3QvcHJvZ3JhbXMKIC4vdGVzdC9yYWlscm9hZC5jCiAuL3Rlc3QvcmFpbi5jCkBAIC0xMDExLDE5ICsxMTUxLDI4IEBACiAuL3Rlc3Qvc2F2ZXNjcmVlbi5zaAogLi90ZXN0L3RjbG9jay5jCiAuL3Rlc3QvdGVzdC5wcml2LmgKKy4vdGVzdC90ZXN0X2FkZF93Y2hzdHIuYworLi90ZXN0L3Rlc3RfYWRkY2hzdHIuYworLi90ZXN0L3Rlc3RfYWRkc3RyLmMKKy4vdGVzdC90ZXN0X2FkZHdzdHIuYwogLi90ZXN0L3Rlc3RfYXJyYXlzLmMKIC4vdGVzdC90ZXN0X2dldF93c3RyLmMKIC4vdGVzdC90ZXN0X2dldHN0ci5jCiAuL3Rlc3QvdGVzdF9pbnN0ci5jCiAuL3Rlc3QvdGVzdF9pbndzdHIuYwogLi90ZXN0L3Rlc3Rfb3BhcXVlLmMKKy4vdGVzdC90ZXN0X3NldHVwdGVybS5jCisuL3Rlc3QvdGVzdF92aWRfcHV0cy5jCisuL3Rlc3QvdGVzdF92aWRwdXRzLmMKIC4vdGVzdC90ZXN0YWRkY2guYwogLi90ZXN0L3Rlc3RjdXJzLmMKIC4vdGVzdC90ZXN0c2NhbncuYwogLi90ZXN0L3RyYWNlbXVuY2gKIC4vdGVzdC92aWV3LmMKIC4vdGVzdC93aWRlY2hhcnMtdXRmOC50eHQKKy4vdGVzdC93aWRlY2hhcnMuaAogLi90ZXN0L3dvcm0uYwogLi90ZXN0L3htYXMuYwogLi90ZXN0L3h0ZXJtLTE2Y29sb3IuZGF0CisuL3Rlc3QveHRlcm0tMjU2Y29sb3IuZGF0CiAuL3Rlc3QveHRlcm0tODhjb2xvci5kYXQKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNzU4NzAuLjAwMDAwMDAKLS0tIGEvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS4yNCAyMDA1LzAxLzI5IDE5OjMwOjA2IHRvbSBFeHAgJAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCi0jIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKLSMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIwotIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCi0jIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKLSMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIwotIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIwotIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIwotIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCi0jIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKLSMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIwotIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCi0jIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKLSMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKLSMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIwotIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCi0jIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTYsMTk5NwotIwotIyBNYXN0ZXIgTWFrZWZpbGUgZm9yIG5jdXJzZXMgbGlicmFyeS4KLQotU0hFTEwgPSAvYmluL3NoCi0KLURFU1RESVI9Ci1DRl9NRkxBR1MgPSAgREVTVERJUj0iJChERVNURElSKSIKLQotCi0KLU5DVVJTRVNfTUFKT1IJPSA1Ci1OQ1VSU0VTX01JTk9SCT0gNwotTkNVUlNFU19QQVRDSAk9IDIwMDgxMTAyCi0KLXByZWZpeAkJPSAvdXNyL2xvY2FsCi1leGVjX3ByZWZpeAk9ICR7cHJlZml4fQotCi1iaW5kaXIJCT0gJHtleGVjX3ByZWZpeH0vYmluCi10aWNkaXIJCT0gL3Vzci9sb2NhbC9zaGFyZS90ZXJtaW5mbwotaW5jbHVkZWRpcgk9ICR7cHJlZml4fS9pbmNsdWRlL25jdXJzZXMKLWxpYmRpcgkJPSAke2V4ZWNfcHJlZml4fS9saWIKLW1hbmRpcgkJPSAke3ByZWZpeH0vbWFuCi0KLUlOU1RBTEwJCT0gL3Vzci9iaW4vaW5zdGFsbCAtYwotSU5TVEFMTF9EQVRBCT0gJHtJTlNUQUxMfSAtbSA2NDQKLQotRElSU19UT19NQUtFCT0gbGliIG9iamVjdHMgb2JqX2cKLQotYWxsIDo6CSQoRElSU19UT19NQUtFKQotCi0kKERJUlNfVE9fTUFLRSkgOgotCW1rZGlyICRACi0KLXByZWluc3RhbGwgOgotCUAgZWNobyAnJwotCUAgZWNobyAnKiogQ29uZmlndXJhdGlvbiBzdW1tYXJ5IGZvciBOQ1VSU0VTICQoTkNVUlNFU19NQUpPUikuJChOQ1VSU0VTX01JTk9SKSAkKE5DVVJTRVNfUEFUQ0gpOicKLQlAIGVjaG8gJycKLQlAIGVjaG8gJyAgICAgZXh0ZW5kZWQgZnVuY3M6ICdgdGVzdCAxICE9IDAgJiYgZWNobyB5ZXMgfHwgZWNobyBub2AKLQlAIGVjaG8gJyAgICAgeHRlcm0gdGVybWluZm86ICd4dGVybS1uZXcKLQlAIGVjaG8gJycKLQlAIGVjaG8gJyAgICAgIGJpbiBkaXJlY3Rvcnk6ICckKGJpbmRpcikKLQlAIGVjaG8gJyAgICAgIGxpYiBkaXJlY3Rvcnk6ICckKGxpYmRpcikKLQlAIGVjaG8gJyAgaW5jbHVkZSBkaXJlY3Rvcnk6ICckKGluY2x1ZGVkaXIpCi0JQCBlY2hvICcgICAgICBtYW4gZGlyZWN0b3J5OiAnJChtYW5kaXIpCi0JQCBlY2hvICcgdGVybWluZm8gZGlyZWN0b3J5OiAnJCh0aWNkaXIpCi0JQCBlY2hvICcnCi0JQCB0ZXN0ICIkKGluY2x1ZGVkaXIpIiA9ICIkKHByZWZpeCkvaW5jbHVkZSIgfHwgXAotCQllY2hvICcqKiBJbmNsdWRlLWRpcmVjdG9yeSBpcyBub3QgaW4gYSBzdGFuZGFyZCBsb2NhdGlvbicKLQlAIHRlc3QgISAtZiAkKGluY2x1ZGVkaXIpL3Rlcm1jYXAuaCB8fCBcCi0JCWZncmVwIE5DVVJTRVNfVkVSU0lPTiAkKGluY2x1ZGVkaXIpL3Rlcm1jYXAuaCA+L2Rldi9udWxsIHx8IFwKLQkJZWNobyAnKiogV2lsbCBvdmVyd3JpdGUgbm9uLW5jdXJzZXMgdGVybWNhcC5oJwotCUAgdGVzdCAhIC1mICQoaW5jbHVkZWRpcikvY3Vyc2VzLmggfHwgXAotCQlmZ3JlcCBOQ1VSU0VTX1ZFUlNJT04gJChpbmNsdWRlZGlyKS9jdXJzZXMuaCA+L2Rldi9udWxsIHx8IFwKLQkJZWNobyAnKiogV2lsbCBvdmVyd3JpdGUgbm9uLW5jdXJzZXMgY3Vyc2VzLmgnCi0KLSMgUHV0IHRoZSBjb21tb24gcnVsZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgY29uc3RydWN0IHRoZSBsaXN0IG9mCi0jIGRpcmVjdG9yaWVzIHRvIHZpc2l0LgotYWxsIFwKLWNsZWFuIFwKLWRpc3RjbGVhbiBcCi1tb3N0bHljbGVhbiBcCi1yZWFsY2xlYW4gXAotZGVwZW5kIFwKLXNvdXJjZXMgXAotdGFncyBcCi11bmluc3RhbGwgXAotaW5zdGFsbCA6OgotCWNkIG1hbiAmJiAke01BS0V9ICR7Q0ZfTUZMQUdTfSAkQAotCWNkIGluY2x1ZGUgJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAKLQljZCBuY3Vyc2VzICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0JY2QgcHJvZ3MgJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAKLQljZCBwYW5lbCAmJiAke01BS0V9ICR7Q0ZfTUZMQUdTfSAkQAotCWNkIG1lbnUgJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAKLQljZCBmb3JtICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0JY2QgdGVzdCAmJiAke01BS0V9ICR7Q0ZfTUZMQUdTfSAkQAotCWNkIG1pc2MgJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAKLQotbGlicyBcCi1pbnN0YWxsLmxpYnMgXAotdW5pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5pbmNsdWRlcyBcCi11bmluc3RhbGwuaW5jbHVkZXMgOjoKLQljZCBpbmNsdWRlICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLm5jdXJzZXMgXAotdW5pbnN0YWxsLm5jdXJzZXMgOjoKLQljZCBuY3Vyc2VzICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLnByb2dzIFwKLXVuaW5zdGFsbC5wcm9ncyA6OgotCWNkIHByb2dzICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWluc3RhbGwuaW5jbHVkZXMgXAotdW5pbnN0YWxsLmluY2x1ZGVzIFwKLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLnBhbmVsIFwKLXVuaW5zdGFsbC5wYW5lbCA6OgotCWNkIHBhbmVsICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWluc3RhbGwuaW5jbHVkZXMgXAotdW5pbnN0YWxsLmluY2x1ZGVzIFwKLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLm1lbnUgXAotdW5pbnN0YWxsLm1lbnUgOjoKLQljZCBtZW51ICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWluc3RhbGwuaW5jbHVkZXMgXAotdW5pbnN0YWxsLmluY2x1ZGVzIFwKLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLmZvcm0gXAotdW5pbnN0YWxsLmZvcm0gOjoKLQljZCBmb3JtICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWxpbnQgXAotbGlicyBcCi1saW50bGliIFwKLWluc3RhbGwubGlicyBcCi11bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLnRlc3QgXAotdW5pbnN0YWxsLnRlc3QgOjoKLQljZCB0ZXN0ICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWluc3RhbGwubGlicyB1bmluc3RhbGwubGlicyBcCi1pbnN0YWxsLmRhdGEgdW5pbnN0YWxsLmRhdGEgOjoKLQljZCBtaXNjICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9ICRACi0KLWluc3RhbGwubWFuIFwKLXVuaW5zdGFsbC5tYW4gOjoKLQljZCBtYW4gJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAKLQotZGlzdGNsZWFuIDo6Ci0Jcm0gLWYgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgY29uZmlnLnN0YXR1cyBNYWtlZmlsZSBpbmNsdWRlL25jdXJzZXNfY2ZnLmgKLQlybSAtZiBoZWFkZXJzLnNoIGhlYWRlcnMuc2VkIG1rX3NoYXJlZF9saWIuc2gKLQlybSAtcmYgJHtESVJTX1RPX01BS0V9CmRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCmluZGV4IGNiOGNkNDIuLmQ1NjkxNjggMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmluCisrKyBiL01ha2VmaWxlLmluCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS4yNCAyMDA1LzAxLzI5IDE5OjMwOjA2IHRvbSBFeHAgJAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40MCAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjcsMTQgKzI3LDE2IEBACiAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTYsMTk5NworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkJCTE5OTYtb24KICMKICMgTWFzdGVyIE1ha2VmaWxlIGZvciBuY3Vyc2VzIGxpYnJhcnkuCiAKLVNIRUxMID0gL2Jpbi9zaAorU0hFTEwgCQk9IEBTSEVMTEAKK1ZQQVRICQk9IEBzcmNkaXJACiAKIERFU1RESVI9QERFU1RESVJACi1DRl9NRkxBR1MgPSBAY2ZfY3ZfbWFrZWZsYWdzQCBERVNURElSPSIkKERFU1RESVIpIgorUlBBVEhfTElTVD1AUlBBVEhfTElTVEAKK1RPUF9NRkxBR1MgPSBAY2ZfY3ZfbWFrZWZsYWdzQCBERVNURElSPSIkKERFU1RESVIpIiBSUEFUSF9MSVNUPSIkKFJQQVRIX0xJU1QpIgogCiBAU0VUX01BS0VACiAKQEAgLTQyLDE0ICs0NCwyMiBAQAogTkNVUlNFU19NSU5PUgk9IEBOQ1VSU0VTX01JTk9SQAogTkNVUlNFU19QQVRDSAk9IEBOQ1VSU0VTX1BBVENIQAogCit0b3Bfc3JjZGlyCT0gQHRvcF9zcmNkaXJACitzcmNkaXIJCT0gQHNyY2RpckAKKwogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKK2RhdGFyb290ZGlyCT0gQGRhdGFyb290ZGlyQAogCiBiaW5kaXIJCT0gQGJpbmRpckAKIHRpY2RpcgkJPSBAVEVSTUlORk9ACiBpbmNsdWRlZGlyCT0gQGluY2x1ZGVkaXJACitpbmNsdWRlc3ViZGlyCT0gQGluY2x1ZGVzdWJkaXJACiBsaWJkaXIJCT0gQGxpYmRpckAKIG1hbmRpcgkJPSBAbWFuZGlyQAorcGtnZGlyCQk9IEBQS0dfQ09ORklHX0xJQkRJUkAKKworaW5jbHVkZV9kaXIJPSAke2luY2x1ZGVkaXJ9JHtpbmNsdWRlc3ViZGlyfQogCiBJTlNUQUxMCQk9IEBJTlNUQUxMQAogSU5TVEFMTF9EQVRBCT0gQElOU1RBTExfREFUQUAKQEAgLTY1LDI0ICs3NSwyOSBAQAogCUAgZWNobyAnJwogCUAgZWNobyAnKiogQ29uZmlndXJhdGlvbiBzdW1tYXJ5IGZvciBOQ1VSU0VTICQoTkNVUlNFU19NQUpPUikuJChOQ1VSU0VTX01JTk9SKSAkKE5DVVJTRVNfUEFUQ0gpOicKIAlAIGVjaG8gJycKLQlAIGVjaG8gJyAgICAgZXh0ZW5kZWQgZnVuY3M6ICdgdGVzdCBATkNVUlNFU19FWFRfRlVOQ1NAICE9IDAgJiYgZWNobyB5ZXMgfHwgZWNobyBub2AKLQlAIGVjaG8gJyAgICAgeHRlcm0gdGVybWluZm86ICdAV0hJQ0hfWFRFUk1ACisJQCBlY2hvICcgICAgICAgZXh0ZW5kZWQgZnVuY3M6ICdgdGVzdCBATkNVUlNFU19FWFRfRlVOQ1NAICE9IDAgJiYgZWNobyB5ZXMgfHwgZWNobyBub2AKKwlAIGVjaG8gJyAgICAgICB4dGVybSB0ZXJtaW5mbzogJ0BXSElDSF9YVEVSTUAKIAlAIGVjaG8gJycKLQlAIGVjaG8gJyAgICAgIGJpbiBkaXJlY3Rvcnk6ICckKGJpbmRpcikKLQlAIGVjaG8gJyAgICAgIGxpYiBkaXJlY3Rvcnk6ICckKGxpYmRpcikKLQlAIGVjaG8gJyAgaW5jbHVkZSBkaXJlY3Rvcnk6ICckKGluY2x1ZGVkaXIpCi0JQCBlY2hvICcgICAgICBtYW4gZGlyZWN0b3J5OiAnJChtYW5kaXIpCi1ATUFLRV9URVJNSU5GT0AJQCBlY2hvICcgdGVybWluZm8gZGlyZWN0b3J5OiAnJCh0aWNkaXIpCisJQCBlY2hvICcgICAgICAgIGJpbiBkaXJlY3Rvcnk6ICckKGJpbmRpcikKKwlAIGVjaG8gJyAgICAgICAgbGliIGRpcmVjdG9yeTogJyQobGliZGlyKQorCUAgZWNobyAnICAgIGluY2x1ZGUgZGlyZWN0b3J5OiAnJChpbmNsdWRlX2RpcikKKwlAIGVjaG8gJyAgICAgICAgbWFuIGRpcmVjdG9yeTogJyQobWFuZGlyKQorQE1BS0VfVEVSTUlORk9ACUAgZWNobyAnICAgdGVybWluZm8gZGlyZWN0b3J5OiAnJCh0aWNkaXIpCitATUFLRV9QQ19GSUxFU0AJQCBlY2hvICcgcGtnLWNvbmZpZyBkaXJlY3Rvcnk6ICckKHBrZ2RpcikKIAlAIGVjaG8gJycKLQlAIHRlc3QgIiQoaW5jbHVkZWRpcikiID0gIiQocHJlZml4KS9pbmNsdWRlIiB8fCBcCisJQCB0ZXN0ICIkKGluY2x1ZGVfZGlyKSIgPSAiJChwcmVmaXgpL2luY2x1ZGUiIHx8IFwKIAkJZWNobyAnKiogSW5jbHVkZS1kaXJlY3RvcnkgaXMgbm90IGluIGEgc3RhbmRhcmQgbG9jYXRpb24nCi0JQCB0ZXN0ICEgLWYgJChpbmNsdWRlZGlyKS90ZXJtY2FwLmggfHwgXAotCQlmZ3JlcCBOQ1VSU0VTX1ZFUlNJT04gJChpbmNsdWRlZGlyKS90ZXJtY2FwLmggPi9kZXYvbnVsbCB8fCBcCisJQCB0ZXN0ICEgLWYgJChpbmNsdWRlX2RpcikvdGVybWNhcC5oIHx8IFwKKwkJZmdyZXAgTkNVUlNFU19WRVJTSU9OICQoaW5jbHVkZV9kaXIpL3Rlcm1jYXAuaCA+L2Rldi9udWxsIHx8IFwKIAkJZWNobyAnKiogV2lsbCBvdmVyd3JpdGUgbm9uLW5jdXJzZXMgdGVybWNhcC5oJwotCUAgdGVzdCAhIC1mICQoaW5jbHVkZWRpcikvY3Vyc2VzLmggfHwgXAotCQlmZ3JlcCBOQ1VSU0VTX1ZFUlNJT04gJChpbmNsdWRlZGlyKS9jdXJzZXMuaCA+L2Rldi9udWxsIHx8IFwKKwlAIHRlc3QgISAtZiAkKGluY2x1ZGVfZGlyKS9jdXJzZXMuaCB8fCBcCisJCWZncmVwIE5DVVJTRVNfVkVSU0lPTiAkKGluY2x1ZGVfZGlyKS9jdXJzZXMuaCA+L2Rldi9udWxsIHx8IFwKIAkJZWNobyAnKiogV2lsbCBvdmVyd3JpdGUgbm9uLW5jdXJzZXMgY3Vyc2VzLmgnCiAKK2Rpc3RjbGVhbiBcCityZWFsY2xlYW4gOjoKKworCiAjIFB1dCB0aGUgY29tbW9uIHJ1bGVzIGhlcmUgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGNvbnN0cnVjdCB0aGUgbGlzdCBvZgogIyBkaXJlY3RvcmllcyB0byB2aXNpdC4KIGFsbCBcCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCBhNjQ0NTBiLi5mMjRkMmM4IDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTEsNSArMSw1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgIC0tCkBAIC0yNSw3ICsyNSw3IEBACiAtLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgIC0tCiAtLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSAkSWQ6IE5FV1MsdiAxLjEzMjAgMjAwOC8xMS8wMiAwMDo1NjoyMiB0b20gRXhwICQKKy0tICRJZDogTkVXUyx2IDEuMjQ3NiAyMDE1LzA4LzA4IDIzOjI5OjUxIHRvbSBFeHAgJAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGlzIGEgbG9nIG9mIGNoYW5nZXMgdGhhdCBuY3Vyc2VzIGhhcyBnb25lIHRocm91Z2ggc2luY2UgWmV5ZCBzdGFydGVkCkBAIC00NSw2ICs0NSwzMDk2IEBACiBDaGFuZ2VzIHRocm91Z2ggMS45LjllIGRpZCBub3QgY3JlZGl0IGFsbCBjb250cmlidXRpb25zOwogaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFkZCB0aGlzIGluZm9ybWF0aW9uLgogCisyMDE1MDgwOCA2LjAgcmVsZWFzZSBmb3IgdXBsb2FkIHRvIGZ0cC5nbnUub3JnCisKKzIwMTUwODA4CisJKyBidWlsZC1maXggZm9yIEFkYTk1IG9uIG9sZGVyIHBsYXRmb3JtcyB3aXRob3V0IHN0ZGludC5oCisJKyBidWlsZC1maXggZm9yIFNvbGFyaXMsIHdob3NlIC9iaW4vc2ggYW5kIC91c3IvYmluL3NlZCBhcmUgbm9uLVBPU0lYLgorCSsgdXBkYXRlIHJlbGVhc2UgYW5ub3VuY2VtZW50LCBzdW1tYXJpemluZyBtb3JlIHRoYW4gODAwIGNoYW5nZXMgYWNyb3NzCisJICBtb3JlIHRoYW4gMjAwIHNuYXBzaG90cy4KKwkrIG1pbm9yIGZpeGVzIHRvIG1hbnBhZ2VzLCBldGMuLCB0byBzaW1wbGlmeSBsaW5raW5nIGZyb20gYW5ub3VuY2VtZW50CisJICBwYWdlLgorCisyMDE1MDcyNQorCSsgdXBkYXRlZCBsbGliLSogZmlsZXMuCisJKyBidWlsZC1maXhlcyBmb3IgbmN1cnNlcyBsaWJyYXJ5ICJ0ZXN0X3Byb2dzIiBydWxlLgorCSsgdXNlIGFsdGVybmF0ZSB3b3JrYXJvdW5kIGZvciBnY2MgNS54IGZlYXR1cmUgKGFkYXB0ZWQgZnJvbSBwYXRjaCBieQorCSAgTWlraGFpbCBQZXNlbG5paykuCisJKyBhZGQgc3RhdHVzIGxpbmUgdG8gdG11eCB2aWEgeHRlcm0rc2wgKHBhdGNoIGJ5IE5pY2hvbGFzIE1hcnJpb3R0KS4KKwkrIGZpeGVzIGZvciBzdCAwLjUgZnJvbSB0ZXN0aW5nIHdpdGggdGFjayAtVEQKKwkrIHJldmlldy9pbXByb3ZlIHNldmVyYWwgbWFudWFsIHBhZ2VzIHRvIGJyZWFrIHVwIHdhbGwtb2YtdGV4dDoKKwkgIGN1cnNfYWRkX3djaC4zeCwgY3Vyc19hdHRyLjN4LCBjdXJzX2JrZ2QuM3gsIGN1cnNfYmtncm5kLjN4LAorCSAgY3Vyc19nZXRjY2hhci4zeCwgY3Vyc19nZXRjaC4zeCwgY3Vyc19rZXJuZWwuM3gsIGN1cnNfbW91c2UuM3gsCisJICBjdXJzX291dG9wdHMuM3gsIGN1cnNfb3ZlcmxheS4zeCwgY3Vyc19wYWQuM3gsIGN1cnNfdGVybWF0dHJzLjN4CisJICBjdXJzX3RyYWNlLjN4LCBhbmQgY3Vyc193aW5kb3cuM3gKKworMjAxNTA3MTkKKwkrIGNvcnJlY3QgYW4gb2xkIGxvZ2ljIGVycm9yIGZvciAlQSBhbmQgJU8gaW4gdHBhcm0gKHJlcG9ydCBieSAienJlZWQiKS4KKwkrIGltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3Igc2lnbmFsIGhhbmRsZXJzIGJ5IGFkZGluZyBzZWN0aW9uIGluIHRoZQorCSAgY3Vyc19pbml0c2NyLjN4IHBhZ2UuCisJKyBtb2RpZnkgbG9naWMgaW4gbWFrZV9rZXlzLmMgdG8gbm90IGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgc2l6ZQorCSAgb2Ygc3RybmFtZXMgYW5kIHN0cmZuYW1lcyB2YXJpYWJsZXMsIHNpbmNlIHRob3NlIG1heSBiZSBmdW5jdGlvbnMKKwkgIGluIHRoZSB0aHJlYWQtIG9yIGJyb2tlbi1saW5rZXIgY29uZmlndXJhdGlvbnMgKHByb2JsZW0gZm91bmQgYnkKKwkgIENvdmVyaXR5KS4KKwkrIG1vZGlmeSB0ZXN0L2NvbmZpZ3VyZSBzY3JpcHQgdG8gY2hlY2sgZm9yIHB0aHJlYWRzIGNvbmZpZ3VyYXRpb24sCisJICBlLmcuLCBuY3Vyc2VzdHcgbGlicmFyeS4KKworMjAxNTA3MTEKKwkrIG1vZGlmeSBzY3JpcHRzIHRvIGJ1aWxkL3VzZSB0ZXN0LXBhY2thZ2VzIGZvciB0aGUgcHRocmVhZHMKKwkgIGNvbmZpZ3VyYXRpb24gb2YgbmN1cnNlczYuCisJKyBhZGQgcmVmZXJlbmNlcyB0byB0dHl0eXBlIGFuZCB0ZXJtY2FwIHN5bWJvbHMgaW4gZGVtb190ZXJtaW5mby5jIGFuZAorCSAgZGVtb190ZXJtY2FwLmMgdG8gZW5zdXJlIHRoYXQgd2hlbiBidWlsZGluZyBuY3Vyc2VzdC5tYXAsIGV0Yy4sIHRoYXQKKwkgIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVzIHN1Y2ggYXMgX25jX3R0eXR5cGUgYXJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mCisJICB2ZXJzaW9uZWQgc3ltYm9scyAocmVwb3J0IGJ5IFdlcm5lciBGaW5rKQorCSsgZml4IHJlZ3Jlc3Npb24gZnJvbSAyMDE1MDcwNCAocmVwb3J0L3BhdGNoIGJ5IFdlcm5lciBGaW5rKS4KKworMjAxNTA3MDQKKwkrIGZpeCBhIGZldyBwcm9ibGVtcyByZXBvcnRlZCBieSBDb3Zlcml0eS4KKwkrIGZpeCBjb21wYXJpc29uIGFnYWluc3QgIi91c3IvaW5jbHVkZSIgaW4gbWlzYy9nZW4tcGtnY29uZmlnLmluCisJICAocmVwb3J0IGJ5IERhaWtpIFVlbm8sIERlYmlhbiAjNzkwNTQ4LCBjZjogIDIwMTQxMjEzKS4KKworMjAxNTA2MjcKKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IHRvIHJlbW92ZSBkZXByZWNhdGVkIEFCSSA1IHN5bWJvbHMgd2hlbgorCSAgYnVpbGRpbmcgQUJJIDYuCisJKyBhZGQgc3ltYm9scyBfbmNfRGVmYXVsdF9GaWVsZCwgX25jX0RlZmF1bHRfRm9ybSwgX25jX2hhc19tb3VzZSB0bworCSAgbWFwLWZpbGVzLCBidXQgbWFya2VkIGFzIGRlcHJlY2F0ZWQgc28gdGhhdCB0aGV5IGNhbiBlYXNpbHkgYmUKKwkgIHN1cHByZXNzZWQgZnJvbSBBQkkgNiBidWlsZHMgKERlYmlhbiAjNzg4NjEwKS4KKwkrIGNvbW1lbnQtb3V0ICJzY3JlZW4ueHRlcm0iIGVudHJ5LCBhbmQgaW5oZXJpdCBzY3JlZW4ueHRlcm0tMjU2Y29sb3IKKwkgIGZyb20geHRlcm0tbmV3IChyZXBvcnQgYnkgUmljaGFyZCBCaXJrZXR0KSAtVEQKKwkrIG1vZGlmeSByZWFkX2VudHJ5LmMgdG8gc2V0IHRoZSBlcnJvci1yZXR1cm4gdG8gLTEgaWYgbm8gdGVybWluYWwKKwkgIGRhdGFiYXNlcyB3ZXJlIGZvdW5kLCBhcyBkb2N1bWVudGVkIGZvciBzZXR1cHRlcm0uCisJKyBhZGQgdGVzdF9zZXR1cHRlcm0uYyB0byBkZW1vbnN0cmF0ZSBub3JtYWwvZXJyb3IgcmV0dXJucyBmcm9tIHRoZQorCSAgc2V0dXB0ZXJtIGFuZCByZXN0YXJ0dGVybSBmdW5jdGlvbnMuCisJKyBhbWVuZCBjbGVhbnVwIGNoYW5nZSBmcm9tIDIwMTEwODEzIHdoaWNoIHJlbW92ZWQgcmVkdW5kYW50IGRlZmluaXRpb24KKwkgIG9mIHJldF9lcnJvciwgZXRjLiwgZnJvbSB0aW5mb19kcml2ZXIuYywgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdAorCSAgaXQgc2hvdWxkIHJldHVybiBhIGJvb2wgcmF0aGVyIHRoYW4gaW50IChyZXBvcnQvYW5hbHlzaXMgYnkgSm9oYW5uZXMKKwkgIFNjaGluZGVsaW4pLgorCisyMDE1MDYxMworCSsgZml4IG92ZXJmbG93IHdhcm5pbmcgZm9yIE9TWCB3aXRoIGxpYl9iYXVkcmF0ZS5jIChjZjogMjAwMTA2MzApLgorCSsgbW9kaWZ5IHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIG1hcC9zeW0gZmlsZXMgdG8gbWFyayA1LjkuMjAxNTA1MzAgYXMKKwkgIHRoZSBsYXN0ICI1LjkiIHZlcnNpb24sIGFuZCByZWdlbmVyYXRlZCB0aGUgZmlsZXMuICBUaGF0IG1ha2VzIHRoZQorCSAgZmlsZXMgbm90IHVzZSAiLmN1cnJlbnQiIGZvciB0aGUgcG9zdC01Ljkgc3ltYm9scy4gIFRoaXMgYWxzbworCSAgY29ycmVjdHMgdGhlIGxhYmVsIGZvciBfbmNfc2lncHJvY21hc2sgdXNlZCBpbiB3aGVuIHdlYWsgc3ltYm9scyBhcmUKKwkgIGNvbmZpZ3VyZWQgZm9yIHRoZSBuY3Vyc2VzdC9uY3Vyc2VzdHcgbGlicmFyaWVzIChwcm9tcHRlZCBieQorCSAgZGlzY3Vzc2lvbiB3aXRoIFN2ZW4gSm9hY2hpbSkuCisJKyBmaXggdHlwbyBpbiBORVdTIChyZXBvcnQgYnkgU3ZlbiBKb2FjaGltKS4KKworMjAxNTA2MDYgcHJlLXJlbGVhc2UKKwkrIG1ha2UgQUJJIDYgdGhlIGRlZmF1bHQgYnkgdXBkYXRlcyB0byBkaXN0Lm1rIGFuZCBWRVJTSU9OLCB3aXRoIHRoZQorCSAgaW50ZW50aW9uIHRoYXQgdGhlIGV4aXN0aW5nIEFCSSA1IHNob3VsZCBidWlsZCBhcyBiZWZvcmUgdXNpbmcgdGhlCisJICAiLS13aXRoLWFiaS12ZXJzaW9uPTUiIG9wdGlvbi4KKwkrIHJlZ2VuZXJhdGUgYWRhLSBhbmQgbWFuLWh0bWwgZG9jdW1lbnRhdGlvbi4KKwkrIG1pbm9yIGZpeGVzIHRvIGNvbG9yLSBhbmQgdXRpbC1tYW5wYWdlcy4KKwkrIGZpeCBhIHJlZ3Jlc3Npb24gaW4gQWRhOTUvZ2VuL01ha2VmaWxlLmluLCB0byBoYW5kbGUgc3BlY2lhbCBjYXNlIG9mCisJICBDeWd3aW4sIHdoaWNoIHVzZXMgdGhlIGJyb2tlbi1saW5rZXIgZmVhdHVyZS4KKwkrIGFtZW5kIGZpeCBmb3IgQ0ZfTkNVUlNFU19DT05GSUcgdXNlZCBpbiB0ZXN0L2NvbmZpZ3VyZSB0byBhc3N1bWUgdGhhdAorCSAgbmN1cnNlcyBwYWNrYWdlIHNjcmlwdHMgd29yayB3aGVuIHByZXNlbnQgZm9yIGNyb3NzLWNvbXBpbGluZywgYXMgdGhlCisJICBsZXNzb3Igb2YgdHdvIGV2aWxzIChjZjogMjAxNTA1MzApLgorCSsgYWRkIGNoZWNrIGluIGNvbmZpZ3VyZSBzY3JpcHQgdG8gZGlzYWxsb3cgY29uZmxpY3Rpbmcgb3B0aW9ucworCSAgIi0td2l0aC10ZXJtbGliIiBhbmQgIi0tZW5hYmxlLXRlcm0tZHJpdmVyIi4KKwkrIG1vdmUgZGVmYXVsdHMgZm9yICItLWRpc2FibGUtbHA2NCIgYW5kICItLXdpdGgtdmVyc2lvbmVkLXN5bXMiIGludG8KKwkgIENGX0FCSV9ERUZBVUxUUyBtYWNyby4KKworMjAxNTA1MzAKKwkrIGNoYW5nZSBwcml2YXRlIHR5cGUgZm9yIEV2ZW50X01hc2sgaW4gQWRhOTUgYmluZGluZyB0byB3b3JrIHdoZW4KKwkgIG1tYXNrX3QgaXMgc2V0IHRvIDMyLWJpdHMuCisJKyByZW1vdmUgc3B1cmlvdXMgIiU7IiBmcm9tIHN0IGVudHJ5IChyZXBvcnQgYnkgRGFuaWVsIFBpdHRzKSAtVEQKKwkrIGFkZCB2dGUtMjAxNCwgdXBkYXRlIHZ0ZSB0byB1c2UgdGhhdCAtVEQKKwkrIG1vZGlmeSB0aWMgYW5kIGluZm9jbXAgdG8gIm1vdmUiIGEgZGlhZ25vc3RpYyBmb3IgdHBhcm0gc3RyaW5ncyB0aGF0CisJICBoYXZlIGEgc3ludGF4IGVycm9yIHRvIHRpYydzICItYyIgb3B0aW9uIChyZXBvcnQgYnkgRGFuaWVsIFBpdHRzKS4KKwkrIGZpeCB0d28gcHJvYmxlbXMgd2l0aCBjb25maWd1cmUgc2NyaXB0IG1hY3JvcyAoRGViaWFuICM3ODY0MzYsCisJICBjZjogMjAxNTA0MjUsIGNmOiAyMDEwMDUyOSkuCisKKzIwMTUwNTIzCisJKyBhZGQgJ1AnIG1lbnUgaXRlbSB0byB0ZXN0L25jdXJzZXMuYywgdG8gc2hvdyBwYWQgaW4gY29sb3IuCisJKyBpbXByb3ZlIGRpc2N1c3Npb24gaW4gY3Vyc19jb2xvci4zeCBhYm91dCBjb2xvciByZW5kZXJpbmcgKHByb21wdGVkCisJICBieSBjb21tZW50IG9uIFN0YWNrIE92ZXJmbG93IGZvcnVtKToKKwkrIHJlbW92ZSBzY3JlZW4tYmNlLm1sdGVybSwgc2luY2UgbWx0ZXJtIGRvZXMgbm90IGRvICJiY2UiIC1URAorCSsgYWRkIHNldmVyYWwgc2NyZWVuLlhYWCBlbnRyaWVzIHRvIHN1cHBvcnQgdGhlIHJlc3BlY3RpdmUgdmFyaWF0aW9ucworCSAgZm9yIDI1NiBjb2xvcnMgLVRECisJKyBhZGQgcHV0dHkrZm5rZXlzKiBidWlsZGluZy1ibG9jayBlbnRyaWVzIC1URAorCSsgYWRkIHNta3gvcm1reCB0byBjYXBhYmlsaXRpZXMgYW5hbHl6ZWQgd2l0aCBpbmZvY21wICItaSIgb3B0aW9uLgorCisyMDE1MDUxNgorCSsgYW1lbmQgY2hhbmdlIHRvICIucGMiIGZpbGVzIHRvIG9ubHkgdXNlIHRoZSBleHRyYSBsb2FkZXIgZmxhZ3Mgd2hpY2gKKwkgIG1heSBoYXZlIHJwYXRoIG9wdGlvbnMgKHJlcG9ydCBieSBTdmVuIEpvYWNoaW0sIGNmOiAyMDE1MDUwMikuCisJKyBjaGFuZ2UgdmVyc2lvbmluZyBmb3IgZHBrZydzIGluIHRlc3QtcGFja2FnZXMgZm9yIEFkYTk1IGFuZAorCSAgbmN1cnNlcy1leGFtcGxlcyBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWJpYW4sIHRvIHdvcmsgd2l0aCBwYWNrYWdlCisJICB1cGRhdGVzLgorCSsgcmVnZW5lcmF0ZSBodG1sIG1hbnBhZ2VzLgorCSsgY2xhcmlmeSBoYW5kbGluZyBvZiBjYXJyaWFnZSByZXR1cm4gaW4gd2FkZGNoIG1hbnVhbCBwYWdlOyBpdCB3YXMKKwkgIGRpc2N1c3NlZCBvbmx5IGluIHRoZSBwb3J0YWJpbGl0eSBzZWN0aW9uIChwcm9tcHRlZCBieSBjb21tZW50IG9uCisJICBTdGFjayBPdmVyZmxvdyBmb3J1bSk6CisKKzIwMTUwNTA5CisJKyBhZGQgdGVzdC1wYWNrYWdlcyBmb3IgY3Jvc3MtY29tcGlsaW5nIG5jdXJzZXMtZXhhbXBsZXMgdXNpbmcgdGhlCisJICBNaW5HVyB0ZXN0LXBhY2thZ2VzLiAgVGhlc2UgYXJlIG9ubHkgdGhlIERlYmlhbiBwYWNrYWdlczsgUlBNIGxhdGVyLgorCSsgY2xlYW51cCBmb3JtYXQgb2YgZGViaWFuL2NvcHlyaWdodCBmaWxlcworCSsgYWRkIHBjLWZpbGVzIHRvIHRoZSBNaW5HVyBjcm9zcy1jb21waWxpbmcgdGVzdC1wYWNrYWdlcy4KKwkrIGNvcnJlY3QgYSBjb3VwbGUgb2YgcGxhY2VzIGluIGdlbi1wa2djb25maWcuaW4gdG8gaGFuZGxlIHJlbmFtaW5nIG9mCisJICB0aGUgdGluZm8gbGlicmFyeS4KKworMjAxNTA1MDIKKwkrIG1vZGlmeSB0aGUgY29uZmlndXJlIHNjcmlwdCB0byBhbGxvdyBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMKKwkgIGZvciBBQkkgNSB2ZXJzdXMgQUJJIDYuCisJKyBhZGQgd2dldGNoLWV2ZW50cyB0byB0ZXN0LXBhY2thZ2VzLgorCSsgYWRkIGEgbm90ZSBvbiBob3cgdG8gYnVpbGQgbmN1cnNlcy1leGFtcGxlcyB0byB0ZXN0L1JFQURNRS4KKwkrIGZpeCBhIG1lbW9yeSBsZWFrIGluIGRlbHNjcmVlbiAocmVwb3J0IGJ5IERhbmllbCBLYWhuIEdpbGxtb3IsCisJICBEZWJpYW4gIzc4MzQ4NikgLVRECisJKyByZW1vdmUgdW5uZWNlc3NhcnkgJzsnIGZyb20gRTMgY2FwYWJpbGl0aWVzIC1URAorCSsgYWRkIHRtdXggZW50cnksIGRlcml2ZWQgZnJvbSBzY3JlZW4gKHBhdGNoIGJ5IE5pY2hvbGFzIE1hcnJpb3R0KS4KKwkrIHNwbGl0LW91dCByZWNlbnQgY2hhbmdlIHRvIG5zdGVybS1iY2UgYXMgbnN0ZXJtLWJ1aWxkMzI2LCBhbmQgYWRkCisJICBuc3Rlcm0tYnVpbGQzNDIgdG8gcmVmbGVjdCBjaGFuZ2VzIHdpdGggc3VjY2Vzc2l2ZSByZWxlYXNlcyBvZiBPU1gKKwkgIChkaXNjdXNzaW9uIHdpdGggTGVvbmFyZG8gQiBTY2hlbmtlbCkKKwkrIGFkZCB4b24sIGljaDEsIGlsMSB0byBpYm0zMTYxIChwYXRjaCBieSBTdGVwaGVuIFBvd2VsbCwgRGViaWFuCisJICAjNzgzODA2KQorCSsgYWRkIHNhbXBsZSAibWFnaWMiIGZpbGUsIHRvIGRvY3VtZW50IGV4dC1wdXR3aW4uCisJKyBtb2RpZnkgZ2VuLXBrZ2NvbmZpZy5pbiB0byBhZGQgZXhwbGljaXQgLWx0aW5mbywgZXRjLiwgdG8gdGhlCisJICBnZW5lcmF0ZWQgIi5wYyIgZmlsZSB3aGVuIGxkIG9wdGlvbiAiLS1hcy1uZWVkZWQiIGlzIHVzZWQsIG9yIHdoZW4KKwkgIG5jdXJzZXMgYW5kIHRpbmZvIGFyZSBpbnN0YWxsZWQgd2l0aG91dCB1c2luZyBycGF0aCAocHJvbXB0ZWQgYnkKKwkgIGRpc2N1c3Npb24gd2l0aCBTeWx2YWluIEJlcnRyYW5kKS4KKwkrIG1vZGlmeSB0ZXN0LXBhY2thZ2UgZm9yIG5jdXJzZXM2IHRvIG9taXQgcnBhdGggZmVhdHVyZSB3aGVuIGluc3RhbGxlZAorCSAgaW4gL3Vzci4KKwkrIGFkZCBPU1gncyAiKi5kU1lNIiB0byBjbGVhbi1ydWxlcyBpbiBtYWtlZmlsZXMuCisJKyBtYWtlIGV4dHJhLXN1ZmZpeCB3b3JrIGZvciBPU1ggY29uZmlndXJhdGlvbiwgZS5nLiwgZm9yIHNoYXJlZAorCSAgbGlicmFyaWVzLgorCSsgbW9kaWZ5IEFkYTk1L2NvbmZpZ3VyZSBzY3JpcHQgdG8gd29yayB3aXRoIHBrZy1jb25maWcKKwkrIG1vdmUgdGVzdC1wYWNrYWdlIGZvciBuY3Vyc2VzNiB0byAvdXNyLCBzaW5jZSBmaWxlbmFtZS1jb25mbGljdHMgaGF2ZQorCSAgYmVlbiBlbGltaW5hdGVkLgorCSsgY29ycmVjdGVkIGJ1aWxkIHJ1bGVzIGZvciBBZGE5NS9nZW4vZ2VuZXJhdGU7IGl0IGRvZXMgbm90IGRlcGVuZCBvbgorCSAgdGhlIG5jdXJzZXMgbGlicmFyeSBhc2lkZSBmcm9tIGhlYWRlcnMuCisJKyByZXZpZXdlZCBtYW4gcGFnZXMsIGZpeGVkIGEgZmV3IG90aGVyIHNwZWxsaW5nIGVycm9ycy4KKwkrIGZpeCBhIHR5cG8gaW4gY3Vyc191dGlsLjN4IChTdmVuIEpvYWNoaW0pLgorCSsgdXNlIGV4dHJhLXN1ZmZpeCBpbiBzb21lIG92ZXJsb29rZWQgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzCisJICBmb3VuZCBieSAyMDE1MDQyNSBjaGFuZ2VzIGZvciB0ZXN0LXBhY2thZ2VzLgorCSsgdXBkYXRlIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiBmcm9tCisJCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NvbmZpZy5naXQKKworMjAxNTA0MjUKKwkrIGV4cGFuZGVkIGRlc2NyaXB0aW9uIG9mIHRnZXRzdHIncyBhcmVhIHBvaW50ZXIgaW4gbWFudWFsIHBhZ2UKKwkgIChyZXBvcnQgYnkgVG9kZCBNIExld2lzKS4KKwkrIGluLXByb2dyZXNzIGNoYW5nZXMgdG8gbW9kaWZ5IHRlc3QtcGFja2FnZXMgdG8gdXNlIG5jdXJzZXN3NiByYXRoZXIKKwkgIHRoYW4gbmN1cnNlc3csIHdpdGggdXBkYXRlZCBjb25maWd1cmUgc2NyaXB0cy4KKwkrIG1vZGlmeSBDRl9OQ1VSU0VTX0NPTkZJRyBpbiBBZGE5NS0gYW5kIHRlc3QtY29uZmlndXJlIHNjcmlwdHMgdG8KKwkgIGNoZWNrIGZvciAiLnBjIiBmaWxlcyB2aWEgcGtnLWNvbmZpZywgYnV0IGFkZCBhIGxpbmthZ2UgY2hlY2sgc2luY2UKKwkgIGZyZXF1ZW50bHkgcGtnLWNvbmZpZyBjb25maWd1cmF0aW9ucyBhcmUgYnJva2VuLgorCSsgbW9kaWZ5IG1pc2MvZ2VuLXBrZ2NvbmZpZy5pbiB0byBpbmNsdWRlIEVYVFJBX0xERkxBR1MsIGUuZy4sIGZvciB0aGUKKwkgIHJwYXRoIG9wdGlvbi4KKwkrIGFkZCAnZGltJyBjYXBhYmlsaXR5IHRvIHNjcmVlbiBlbnRyeSAocmVwb3J0IGJ5IExlb25hcmRvIEIgU2NoZW5rZWwpCisJKyBhZGQgc2V2ZXJhbCBrZXkgZGVmaW5pdGlvbnMgdG8gbnN0ZXJtLWJjZSB0byBtYXRjaCBwcmVjb25maWd1cmVkCisJICBrZXlzLCBlLmcuLCB3aXRoIE9TWCAxMC45IGFuZCAxMC4xMCAocmVwb3J0IGJ5IExlb25hcmRvIEIgU2NoZW5rZWwpCisJKyBmaXggcmVwZWF0ZWQgImV4dHJhLXN1ZmZpeCIgaW4gbmN1cnNlcy1jb25maWcuaW4gKGNmOiAyMDE1MDQxOCkuCisJKyBpbXByb3ZlIHRlcm1fdmFyaWFibGVzIG1hbnVhbCBwYWdlLCBhZGRpbmcgc2VjdGlvbiBvbiB0aGUgdGVybWluZm8KKwkgIGxvbmctbmFtZSBzeW1ib2xzIHdoaWNoIGFyZSBkZWZpbmVkIGluIHRoZSB0ZXJtLmggaGVhZGVyLgorCSsgZml4IGJ1ZyBpbiBsaWJfdHJhY2ViaXRzLmMgaW50cm9kdWNlZCBpbiBjb25zdC1maXhlcyAoY2Y6IDIwMTUwNDA0KS4KKworMjAxNTA0MTgKKwkrIGF2b2lkIGEgYmxhbmsgbGluZSBpbiBvdXRwdXQgZnJvbSB0YWJzIHByb2dyYW0gYnkgZW5kaW5nIGl0IHdpdGgKKwkgIGEgY2FycmlhZ2UgcmV0dXJuIGFzIGRvbmUgaW4gRnJlZUJTRCAocGF0Y2ggYnkgSmFtZXMgQ2xhcmtlKS4KKwkrIGJ1aWxkLWZpeCBmb3IgdGhlICItLWVuYWJsZS1leHQtcHV0d2luIiBmZWF0dXJlIHdoZW4gbm90IHVzaW5nCisJICB3aWRlIGNoYXJhY3RlcnMgKHJlcG9ydCBieSBXZXJuZXIgRmluaykuCisJKyBtb2RpZnkgYXV0b2NvbmYgbWFjcm9zIHRvIHVzZSBzY3JpcHRpbmcgaW1wcm92ZW1lbnQgZnJvbSB4dGVybS4KKwkrIGFkZCAtYnJ0bCBvcHRpb24gdG8gY29tcGlsZXIgb3B0aW9ucyBvbiBBSVggNS03LCBuZWVkZWQgdG8gbGluaworCSAgd2l0aCB0aGUgc2hhcmVkIGxpYnJhcmllcy4KKwkrIGFkZCAtLXdpdGgtZXh0cmEtc3VmZml4IG9wdGlvbiB0byBoZWxwIHdpdGggaW5zdGFsbGluZyBub25jb25mbGljdGluZworCSAgbmN1cnNlczYgcGFja2FnZXMsIGUuZy4sIGF2b2lkaW5nIGhlYWRlci0gYW5kIGxpYnJhcnktY29uZmxpY3RzLgorCSAgTk9URTogYXMgYSBzaWRlLWVmZmVjdCwgdGhpcyByZW5hbWVzCisJCSAgYWRhY3Vyc2VzLWNvbmZpZyB0byBhZGFjdXJzZXM1LWNvbmZpZyBhbmQKKwkJICBhZGFjdXJzZXN3LWNvbmZpZyB0byBhZGFjdXJzZXN3NS1jb25maWcKKwkrIG1vZGlmeSBkZWJpYW4vcnVsZXMgdGVzdCBwYWNrYWdlIHRvIHN1ZmZpeCBwcm9ncmFtcyB3aXRoICI2Ii4KKwkrIGNsYXJpZnkgaW4gY3Vyc19pbm9wdHMuM3ggdGhhdCB3aW5kb3ctc3BlY2lmaWMgc2V0dGluZ3MgZG8gbm90CisJICBpbmhlcml0IGludG8gbmV3IHdpbmRvd3MuCisKKzIwMTUwNDA0CisJKyBpbXByb3ZlIGRlc2NyaXB0aW9uIG9mIHN0YXJ0X2NvbG9yKCkgaW4gdGhlIG1hbnVhbC4KKwkrIG1vZGlmeSBzZXZlcmFsIGZpbGVzIGluIG5jdXJzZXMtIGFuZCBwcm9ncy1kaXJlY3RvcmllcyB0byBhbGxvdworCSAgY29uc3QgZGF0YSB1c2VkIGluIGludGVybmFsIHRhYmxlcyB0byBiZSBwdXQgYnkgdGhlIGxpbmtlciBpbnRvIHRoZQorCSAgcmVhZG9ubHkgdGV4dCBzZWdtZW50LgorCisyMDE1MDMyOQorCSsgY29ycmVjdCBjdXQvcGFzdGUgZXJyb3IgZm9yICItLWVuYWJsZS1leHQtcHV0d2luIiB0aGF0IG1hZGUgaXQgdGhlCisJICBzYW1lIGFzICItLWVuYWJsZS1leHQtY29sb3JzIiAocmVwb3J0IGJ5IFJvdW1lbiBQZXRyb3YpCisKKzIwMTUwMzI4CisJKyBhZGQgIi1mIiBvcHRpb24gdG8gdGVzdC9zYXZlc2NyZWVuLmMgdG8gaGVscCB3aXRoIHRlc3RpbmcvZGVidWdnaW5nCisJICB0aGUgZXh0ZW5kZWQgcHV0d2luL2dldHdpbi4KKwkrIGFkZCBsb2dpYyBmb3Igd3JpdGluZy9yZWFkaW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGluIHRoZSBleHRlbmRlZAorCSAgcHV0d2luL2dldHdpbi4KKwkrIGFkZCAiLS1lbmFibGUtZXh0LXB1dHdpbiIgY29uZmlndXJlIG9wdGlvbiB0byB0dXJuIG9uIHRoZSBleHRlbmRlZAorCSAgcHV0d2luL2dldHdpbi4KKworMjAxNTAzMjEKKwkrIGluLXByb2dyZXNzIGNoYW5nZXMgdG8gcHJvdmlkZSBhbiBleHRlbmRlZCB2ZXJzaW9uIG9mIHB1dHdpbiBhbmQKKwkgIGdldHdpbiB3aGljaCB3aWxsIGJlIGNhcGFibGUgb2YgcmVhZGluZyBzY3JlZW4tZHVtcHMgYmV0d2VlbiB0aGUKKwkgIHdpZGUvbm9ybWFsIG5jdXJzZXMgY29uZmlndXJhdGlvbnMuICBUaGVzZSBhcmUgdGV4dCBmaWxlcywgZXhjZXB0CisJICBmb3IgYSBtYWdpYyBjb2RlIGF0IHRoZSBiZWdpbm5pbmc6CisJICAwICAgICAgIHN0cmluZyAgICAgICAgICBcMjEwXDIxMCAgICAgICAgU2NyZWVuLWR1bXAgKG5jdXJzZXMpCisKKzIwMTUwMzA3CisJKyBkb2N1bWVudCBsaW1pdGF0aW9ucyBvZiBnZXR3aW4gaW4gbWFudWFsIHBhZ2UgKHByb21wdGVkIGJ5IGRpc2N1c3Npb24KKwkgIHdpdGggSm9obiBTIFVyYmFuKS4KKwkrIGV4dGVuZCB0ZXN0L3NhdmVzY3JlZW4uYyB0byBkZW1vbnN0cmF0ZSB0aGF0IGNvbG9yIHBhaXIgdmFsdWVzCisJICBhbmQgZ3JhcGhpYyBjaGFyYWN0ZXJzIGNhbiBiZSByZXN0b3JlZCB1c2luZyBnZXR3aW4uCisKKzIwMTUwMjI4CisJKyBtb2RpZnkgd2luX2RyaXZlci5jIHRvIGVsaW1pbmF0ZSB0aGUgY29uc3RydWN0b3IsIHRvIG1ha2UgaXQgbW9yZQorCSAgdXNhYmxlIGluIGFuIGFwcGxpY2F0aW9uIHdoaWNoIG1heS9tYXkgbm90IG5lZWQgdGhlIGNvbnNvbGUgd2luZG93CisJICAocmVwb3J0IGJ5IEdyYWR5IE1hcnRpbikuCisKKzIwMTUwMjIxCisJKyBjYXB0dXJlIGRlZmluZSdzIHJlbGF0ZWQgdG8gLURfWE9QRU5fU09VUkNFIGZyb20gdGhlIGNvbmZpZ3VyZSBjaGVjaworCSAgYW5kIGFkZCB0aG9zZSB0byB0aGUgKi1jb25maWcgYW5kICoucGMgZmlsZXMsIHRvIHNpbXBsaWZ5IHVzZSBmb3IKKwkgIHRoZSB3aWRlLWNoYXJhY3RlciBsaWJyYXJpZXMuCisJKyBtb2RpZnkgbmN1cnNlcy5zcGVjIHRvIGFjY29tbW9kYXRlIEZlZG9yYTIxJ3MgbG9jYXRpb24gb2YgcGtnLWNvbmZpZworCSAgZGlyZWN0b3J5LgorCSsgY29ycmVjdCBzZW5zZSBvZiAiLS1kaXNhYmxlLWxpYi1zdWZmaXhlcyIgY29uZmlndXJlIG9wdGlvbiAocmVwb3J0CisJICBieSBOaWNvbGFzIEJvb3MsIGNmOiAyMDE0MDQyNikuCisKKzIwMTUwMjE0CisJKyByZWdlbmVyYXRlIGh0bWwgbWFucGFnZXMgdXNpbmcgaW1wcm92ZWQgbWFuMmh0bWwgZnJvbSB3b3JrIG9uIHh0ZXJtLgorCSsgcmVnZW5lcmF0ZWQgIi5tYXAiIGFuZCAiLnN5bSIgZmlsZXMgdXNpbmcgaW1wcm92ZWQgc2NyaXB0LCBhY2NvdW50aW5nCisJICBmb3IgdGhlICItLWVuYWJsZS13ZWFrLXN5bWJvbHMiIGNvbmZpZ3VyZSBvcHRpb24gKHJlcG9ydCBieSBXZXJuZXIKKwkgIEZpbmspLgorCisyMDE1MDEzMQorCSsgcmVnZW5lcmF0ZWQgIi5tYXAiIGFuZCAiLnN5bSIgZmlsZXMgdXNpbmcgaW1wcm92ZWQgc2NyaXB0LCBzaG93aW5nCisJICB0aGUgY29tYmluYXRpb25zIG9mIGNvbmZpZ3VyZSBvcHRpb25zIHVzZWQgYXQgZWFjaCBzdGFnZS4KKworMjAxNTAxMjQKKwkrIGFkZCBjb25maWd1cmUgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmICJsb2NhbDogXyo7IiBjYW4gYmUgdXNlZCBpbiB0aGUKKwkgICIubWFwIiBmaWxlcyB0byBzZWxlY3RpdmVseSBvbWl0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGggIl8iLiAgT24gYXQKKwkgIGxlYXN0IHJlY2VudCBGcmVlQlNELCB0aGUgd2lsZGNhcmQgYXBwbGllcyB0byBhbGwgIl8iIHN5bWJvbHMuCisJKyByZW1vdmUgb2Jzb2xldGUvY29uZmxpY3RpbmcgcnVsZSBmb3IgbmN1cnNlcy5tYXAgZnJvbQorCSAgbmN1cnNlcy9NYWtlZmlsZS5pbiAoY2Y6ICAyMDEzMDcwNikuCisKKzIwMTUwMTE3CisJKyBpbXByb3ZlIGRlc2NyaXB0aW9uIGluIElOU1RBTEwgb2YgdGhlIC0td2l0aC12ZXJzaW9uZWQtc3ltcyBvcHRpb24uCisJKyBhZGQgY29tYmluYXRpb24gb2YgLS13aXRoLWhhc2hlZC1kYiBhbmQgLS13aXRoLXRpY2xpYiB0bworCSAgY29uZmlndXJhdGlvbnMgZm9yICIubWFwIiBmaWxlcyAocmVwb3J0IGJ5IFdlcm5lciBGaW5rKS4KKworMjAxNTAxMTAKKwkrIGFkZCBhIHN0ZXAgdG8gZ2VuZXJhdGluZyAiLm1hcCIgZmlsZXMsIHRvIGRlY2xhcmUgYW55IHJlbWFpbmluZworCSAgc3ltYm9scyBiZWdpbm5pbmcgd2l0aCAiXyIgYXMgbG9jYWwsIGF0IHRoZSBsYXN0IHZlcnNpb24gbm9kZS4KKwkrIGltcHJvdmUgY29uZmlndXJlIGNoZWNrcyBmb3IgcGtnLWNvbmZpZywgYWRkcmVzc2luZyBhIHZhcmlhbnQgZm91bmQKKwkgIHdpdGggRnJlZUJTRCBwb3J0cy4KKwkrIG1vZGlmeSB3aW5fZHJpdmVyLmMgdG8gcHJvdmlkZSBjaGFyYWN0ZXJzIGZvciBzcGVjaWFsIGtleXMsIGxpa2UKKwkgIGFuc2kuc3lzLCB3aGVuIGtleXBhZCBtb2RlIGlzIG9mZiwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIG5vdGhpbmcgYXQKKwkgIGFsbCAoZGlzY3Vzc2lvbiB3aXRoIEVsaSBaYXJldHNraWkpLgorCSsgYWRkICJicm9rZW5fbGlua2VyIiBhbmQgImhhc2hlZC1kYiIgY29uZmlndXJlIG9wdGlvbnMgdG8gY29tYmluYXRpb25zCisJICB1c2UgZm9yIGdlbmVyYXRpbmcgdGhlICIubWFwIiBhbmQgIi5zeW0iIGZpbGVzLgorCSsgYXZvaWQgdXNpbmcgImxkIiBkaXJlY3RseSB3aGVuIGNyZWF0aW5nIHNoYXJlZCBsaWJyYXJ5LCB0byBzaW1wbGlmeQorCSAgY3Jvc3MtY29tcGlsZXMuICBBbHNvIGRyb3AgIi1Cc2hhcmFibGUiIG9wdGlvbiBmcm9tIHNoYXJlZC1saWJyYXJ5CisJICBydWxlcyBmb3IgRnJlZUJTRCBhbmQgRHJhZ29uRmx5IChGcmVlQlNEICMxOTY1OTIpLgorCSsgZml4IGEgbWVtb3J5IGxlYWsgaW4gZm9ybSBsaWJyYXJ5IEZyZWVfUmVndWxhckV4cHJlc3Npb25fVHlwZSgpCisJICAocmVwb3J0IGJ5IFBhdmVsIEJhbGFldikuCisKKzIwMTUwMTAzCisJKyBtb2RpZnlfbmNfZmx1c2goKSB0byByZXRyeSBpZiBpbnRlcnJ1cHRlZCAocGF0Y2ggYnkgU3RpYW4gU2tqZWxzdGFkKS4KKwkrIGNoYW5nZSBtYXAgZmlsZXMgdG8gbWFrZSBfbmNfZnJlZWFsbCBhIGdsb2JhbCwgc2luY2UgaXQgbWF5IGJlIHVzZWQKKwkgIHZpYSB0aGUgQWRhOTUgYmluZGluZyB3aGVuIGNoZWNraW5nIGZvciBtZW1vcnkgbGVha3MuCisJKyBpbXByb3ZlIHNlZCBzY3JpcHQgdXNlZCBpbiAyMDE0MTIyMCB0byBhY2NvdW50IGZvciB3aWRlLSwgdGhyZWFkZWQtCisJICB2YXJpYXRpb25zIGluIEFCSSA2LgorCisyMDE0MTIyNworCSsgcmVnZW5lcmF0ZSAiLm1hcCIgZmlsZXMsIHVzaW5nIHN0ZXAgb3Zlcmxvb2tlZCBpbiAyMDE0MTIxMyB0byB1c2UKKwkgIHRoZSBzYW1lIHBhdGNoLWRhdGVzIGFjcm9zcyBlYWNoIGZpbGUgdG8gbWF0Y2ggbmN1cnNlcy5tYXAgKHJlcG9ydCBieQorCSAgU3ZlbiBKb2FjaGltKS4KKworMjAxNDEyMjEKKwkrIGZpeCBhbiBpbmNvcnJlY3QgdmFyaWFibGUgYXNzaWdubWVudCBpbiAyMDE0MTIyMCBjaGFuZ2VzIChyZXBvcnQgYnkKKwkgIFN2ZW4gSm9hY2hpbSkuCisKKzIwMTQxMjIwCisJKyB1cGRhdGVkIEFkYTk1L2NvbmZpZ3VyZSB3aXRoIG1hY3JvIGNoYW5nZXMgZnJvbSAyMDE0MTIxMworCSsgdGllIGNvbmZpZ3VyZSBvcHRpb25zIC0td2l0aC1hYmktdmVyc2lvbiBhbmQgLS13aXRoLXZlcnNpb25lZC1zeW1zCisJICB0b2dldGhlciwgc28gdGhhdCBBQkkgNiBsaWJyYXJpZXMgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgdmVyc2lvbnMgZnJvbQorCSAgdGhlIEFCSSA1IGxpYnJhcmllcy4KKwkrIHJlcGxhY2Ugb2Jzb2xldGUvbm9ud29ya2luZyBsaW5rIHRvIG1hbjJodG1sIHdpdGggY3VycmVudCBvbmUsCisJICByZWdlbmVyYXRlIGh0bWwtbWFucGFnZXMuCisKKzIwMTQxMjEzCisJKyBtb2RpZnkgbWlzYy9nZW4tcGtnY29uZmlnLmluIHRvIGFkZCAtSSBvcHRpb24gZm9yIGluY2x1ZGUtZGlyZWN0b3J5CisJICB3aGVuIHVzaW5nIGJvdGggLS1wcmVmaXggYW5kIC0tZGlzYWJsZS1vdmVyd3JpdGUgKHJlcG9ydCBieSBNaXN0eQorCSAgRGUgTWVvKS4KKwkrIGFkZCBjb25maWd1cmUgb3B0aW9uIC0td2l0aC1wYy1zdWZmaXggdG8gYWxsb3cgbWlub3IgcmVuYW1pbmcgb2YKKwkgICIucGMiIGZpbGVzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBsaWJyYXJ5LiAgVXNlIHRoaXMgaW4gdGhlIHRlc3QKKwkgIHBhY2thZ2UgZm9yIG5jdXJzZXM2LgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgc28gdGhhdCBpZiBwa2ctY29uZmlnIGlzIG5vdCBpbnN0YWxsZWQsIGl0CisJICBpcyBzdGlsbCBwb3NzaWJsZSB0byBpbnN0YWxsICIucGMiIGZpbGVzIChyZXBvcnQgYnkgTWlzdHkgRGUgTWVvKS4KKwkrIHVwZGF0ZWQgIi5zeW0iIGZpbGVzLCByZW1vdmluZyBzeW1ib2xzIHdoaWNoIGFyZSBtYXJrZWQgYXMgImxvY2FsIgorCSAgaW4gdGhlIGNvcnJlc3BvbmRpbmcgIi5tYXAiIGZpbGVzLgorCSsgdXBkYXRlZCAiLm1hcCIgZmlsZXMgdG8gcmVmbGVjdCBtb3ZlIG9mIGNvbXBfY2FwdGFiIGFuZCBjb21wX2hhc2gKKwkgIGZyb20gdGljLWxpYnJhcnkgdG8gdGluZm8tbGlicmFyeSBpbiAyMDA5MDcxMSAocmVwb3J0IGJ5IFN2ZW4KKwkgIEpvYWNoaW0pLgorCisyMDE0MTIwNgorCSsgdXBkYXRlZCAiLm1hcCIgZmlsZXMgc28gdGhhdCBlYWNoIHN5bWJvbCB0aGF0IG1heSBiZSBzaGFyZWQgYWNyb3NzCisJICB0aGUgZGlmZmVyZW50IGxpYnJhcnkgY29uZmlndXJhdGlvbnMgaGFzIHRoZSBzYW1lIGxhYmVsLiAgU29tZQorCSAgcmV2aWV3IGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlc2UgYXJlIHJlYWxseSBjb21wYXRpYmxlLgorCSsgbW9kaWZ5IE1LbGliX2dlbi5zaCB0byB3b3JrIGFyb3VuZCBjaGFuZ2UgaW4gZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZgorCSAgZ2NjIGludHJvZHVjZWQgaGVyZToKKwkJICBodHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTQtMDYvbXNnMDIxODUuaHRtbAorCQkgIGh0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNC0wNy9tc2cwMDIzNi5odG1sCisJICAocmVwb3J0cyBieSBNYXJjdXMgU2hhd2Nyb2Z0LCBNYW9odWkgTGVpKS4KKwkrIGltcHJvdmVkIGNvbmZpZ3VyZSBtYWNybyBDRl9TVUJESVJfUEFUSCwgZnJvbSBseW54IGNoYW5nZXMuCisKKzIwMTQxMTI5CisJKyBpbXByb3ZlZCAiLm1hcCIgZmlsZXMgYnkgZ2VuZXJhdGluZyB0aGVtIHdpdGggYSBzY3JpcHQgdGhhdCBidWlsZHMKKwkgIG5jdXJzZXMgd2l0aCBzZXZlcmFsIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIG1lcmdlcyB0aGUgcmVzdWx0cy4KKwkgIEEgZnVydGhlciByZWZpbmVtZW50IGlzIHBsYW5uZWQsIHRvIG1ha2UgdGhlIHRpYy0gYW5kIHRpbmZvLWxpYnJhcnkKKwkgIHN5bWJvbHMgdXNlIHRoZSBzYW1lIHZlcnNpb25zIGFjcm9zcyBlYWNoIG9mIHRoZSBmb3VyIGNvbmZpZ3VyYXRpb25zCisJICB3aGljaCBhcmUgcmVwcmVzZW50ZWQgKHJlcG9ydHMgYnkgU3ZlbiBKb2FjaGltLCBXZXJuZXIgRmluaykuCisKKzIwMTQxMTE1CisJKyBpbXByb3ZlIGRlc2NyaXB0aW9uIG9mIGxpbWl0cyBmb3IgY29sb3IgdmFsdWVzIGFuZCBjb2xvciBwYWlycyBpbgorCSAgY3Vyc19jb2xvci4zeCAocHJvbXB0ZWQgYnkgcGF0Y2ggYnkgVGltIHZhbiBkZXIgTW9sZW4pLgorCSsgYWRkIFZFUlNJT04gZmlsZSwgdXNpbmcgZmlyc3QgZmllbGQgaW4gdGhhdCB0byByZWNvcmQgdGhlIEFCSSB2ZXJzaW9uCisJICB1c2VkIGZvciBjb25maWd1cmUgLS13aXRoLWxpYnRvb2wgLS1kaXNhYmxlLWxpYnRvb2wtdmVyc2lvbgorCSsgYWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciBhcHBseWluZyB0aGUgIi5tYXAiIGFuZCAiLnN5bSIgZmlsZXMgdG8KKwkgIHRoZSBuY3Vyc2VzLCBmb3JtLCBtZW51IGFuZCBwYW5lbCBsaWJyYXJpZXMuCisJKyBhZGQgIi5tYXAiIGFuZCAiLnN5bSIgZmlsZXMgdG8gc2hvdyBleHBvcnRlZCBzeW1ib2xzLCBlLmcuLCBmb3IKKwkgIHN5bWJvbC12ZXJzaW9uaW5nLgorCisyMDE0MTEwMQorCSsgaW1wcm92ZSBzdHJpY3QgY29tcGlsZXItd2FybmluZ3MgYnkgYWRkaW5nIGEgY2FzdCBpbiBUUkFDRV9SRVRVUk4KKwkgIGFuZCBtYWtpbmcgYSBuZXcgVFJBQ0VfUkVUVVJOMSBtYWNybyBmb3IgY2FzZXMgd2hlcmUgdGhlIGNhc3QgZG9lcworCSAgbm90IGFwcGx5LgorCisyMDE0MTAyNQorCSsgaW4tcHJvZ3Jlc3MgY2hhbmdlcyB0byBpbnRlZ3JhdGUgdGhlIHdpbjMyIGNvbnNvbGUgZHJpdmVyIHdpdGggdGhlCisJICBtc3lzMiBjb25maWd1cmF0aW9uLgorCisyMDE0MTAxOAorCSsgcmV2aWV3ZWQgdGVybWlub2xvZ3kgMC42LjEsIGFkZCBmdW5jdGlvbiBrZXkgZGVmaW5pdGlvbnMuICBOb25lIG9mCisJICB0aGUgdnQxMDAtY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2VyZSBpbXByb3ZlZCAtVEQKKwkrIGltcHJvdmUgaW5mb2NtcCBjb252ZXJzaW9uIG9mIGV4dGVuZGVkIGNhcGFiaWxpdGllcyB0byB0ZXJtY2FwIGJ5CisJICBjb3JyZWN0aW5nIHRoZSBsaW1pdCBjaGVjayBhZ2FpbnN0IHBhcmFtZXRyaXplZFtdLCBhcyB3ZWxsIGFzIGZpbGxpbmcKKwkgIGluIGEgY2hlY2sgaWYgdGhlIHN0cmluZyBoYXBwZW5zIHRvIGhhdmUgcGFyYW1ldGVycywgZS5nLiwgInhtIgorCSAgaW4gcmVjZW50IGNoYW5nZXMuCisJKyBhZGQgY2hlY2sgZm9yIHplcm8vbmVnYXRpdmUgZGltZW5zaW9ucyBmb3IgcmVzaXpldGVybSBhbmQgcmVzaXplX3Rlcm0KKwkgIChyZXBvcnQgYnkgTWlrZSBHcmFuKS4KKworMjAxNDEwMTEKKwkrIGFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgeHRlcm0ncyAxMDA1IG1vdXNlIG1vZGUsIHRvIHVzZSBpbiBhCisJICBkZW1vbnN0cmF0aW9uIG9mIGl0cyBsaW1pdGF0aW9ucy4KKwkrIGFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgIiV1IiBmb3JtYXQgdG8gdGVybWluZm8uCisJKyBtb2RpZnkgdGVzdC9uY3Vyc2VzLmMgdG8gYWxzbyBzaG93IHBvc2l0aW9uIHJlcG9ydHMgaW4gJ2EnIHRlc3QuCisJKyBtaW5vciBmb3JtYXR0aW5nIGZpeGVzIHRvIF9uY190cmFjZV9tbWFza190LCBtYWtlIHRoaXMgZnVuY3Rpb24KKwkgIGV4cG9ydGVkIHRvIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgbW91c2UgY2hhbmdlcy4KKwkrIGltcHJvdmUgYmVoYXZpb3Igb2Ygd2hlZWwtbWljZSBmb3IgeHRlcm0gcHJvdG9jb2wsIG5vdGluZyB0aGF0IHRoZXJlCisJICBhcmUgb25seSBidXR0b24tcHJlc3NlcyBmb3IgYnV0dG9ucyAiNCIgYW5kICI1Iiwgc28gdGhlcmUgaXMgbm8gbmVlZAorCSAgdG8gd2FpdCB0byBjb21iaW5lIGV2ZW50cyBpbnRvIGRvdWJsZS1jbGlja3MgKHJlcG9ydC9hbmFseXNpcyBieQorCSAgR3JlZyBGaWVsZCkuCisJKyBwcm92aWRlIGV4YW1wbGVzIHh0ZXJtLTEwMDUgYW5kIHh0ZXJtLTEwMDYgdGVybWluZm8gZW50cmllcyAtVEQKKwkrIGltcGxlbWVudCBkZWNvZGVyIGZvciB4dGVybSBTR1IgMTAwNiBtb3VzZSBtb2RlLgorCisyMDE0MDkyNworCSsgaW1wbGVtZW50IGN1cnNfc2V0IGluIHdpbl9kcml2ZXIuYworCSsgaW1wbGVtZW50IGZsYXNoIGluIHdpbl9kcml2ZXIuYworCSsgZml4IGFuIGluZmluaXRlIGxvb3AgaW4gd2luX2RyaXZlci5jIGlmIHRoZSBjb21tYW5kLXdpbmRvdyBsb3NlcworCSAgZm9jdXMuCisJKyBpbXByb3ZlIHRoZSBub24tYnVmZmVyZWQgbW9kZSwgaS5lLiwgTkNVUlNFU19DT05TT0xFMiwgb2YKKwkgIHdpbl9kcml2ZXIuYyBieSB0ZW1wb3JhcmlseSBjaGFuZ2luZyB0aGUgYnVmZmVyLXNpemUgdG8gbWF0Y2ggdGhlCisJICB3aW5kb3ctc2l6ZSB0byBlbGltaW5hdGUgdGhlIHNjcm9sbGJhY2suICBBbHNvIGVuZm9yY2UgYSBtaW5pbXVtCisJICBzY3JlZW4tc2l6ZSBvZiAyNHg4MCBpbiB0aGUgbm9uLWJ1ZmZlcmVkIG1vZGUuCisJKyBtb2RpZnkgZ2VuZXJhdGVkIG1pc2MvTWFrZWZpbGUgdG8gc3VwcHJlc3MgaW5zdGFsbC5kYXRhIGZyb20gdGhlCisJICBkZXBlbmRlbmNpZXMgaWYgdGhlIC0tZGlzYWJsZS1kYi1pbnN0YWxsIG9wdGlvbiBpcyB1c2VkLCBjb21wZW5zYXRpbmcKKwkgIGZvciB0aGUgdG9wLWxldmVsIG1ha2VmaWxlIGNoYW5nZXMgdXNlZCB0byBhZGQgbmN1cnNlcyotY29uZmlnIGluIHRoZQorCSAgMjAxNDA5MjAgY2hhbmdlcyAocmVwb3J0IGJ5IFN0ZXZlbiBIb25leW1hbikuCisKKzIwMTQwOTIwCisJKyBhZGQgbmN1cnNlcyotY29uZmlnIHRvIGJpbi1kaXJlY3Rvcnkgb2Ygc2FtcGxlIHBhY2thZ2Utc2NyaXB0cy4KKwkrIGFkZCBjaGVjayB0byBlbnN1cmUgdGhhdCBnZXRvcHQgaXMgYXZhaWxhYmxlOyB0aGlzIGlzIGEgcHJvYmxlbSBpbgorCSAgc29tZSBvbGRlciBjcm9zcy1jb21waWxlciBlbnZpcm9ubWVudHMuCisJKyBleHBhbmRlZCBvbiB0aGUgZGVzY3JpcHRpb24gb2YgLS1kaXNhYmxlLW92ZXJ3cml0ZSBpbiBJTlNUQUxMCisJICAocHJvbXB0ZWQgYnkgcmVwb3J0cyBieSBKb2FraW0gVGplcm5sdW5kLCBUaG9tYXMgS2xhdXNuZXIpLgorCSAgU2VlIEdlbnRvbyAjNTIyNTg2IGFuZCBOZXRCU0QgIzQ5MjAwIGZvciBleGFtcGxlcy4KKwkgIHdoaWNoIHJlbGF0ZXMgdG8gdGhlIGNsYXJpZmllZCBndWlkZWxpbmVzLgorCSsgcmVtb3ZlIHNwZWNpYWwgbG9naWMgZnJvbSBDRl9JTkNMVURFX0RJUlMgd2hpY2ggYWRkcyB0aGUgZGlyZWN0b3J5CisJICBmb3IgdGhlIC0taW5jbHVkZWRpciBmcm9tIHRoZSBidWlsZCAocmVwb3J0IGJ5IEpvYWtpbSBUamVybmx1bmQpLgorCSsgYWRkIGNhc2UgZm9yIFVuaXh3YXJlIHRvIENGX1hPUEVOX1NPVVJDRSwgZnJvbSBseW54IGNoYW5nZXMuCisJKyB1cGRhdGUgY29uZmlnLnN1YiBmcm9tCisJCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NvbmZpZy5naXQKKworMjAxNDA5MTMKKwkrIGFkZCBhIGNvbmZpZ3VyZSBjaGVjayB0byBpZ25vcmUgc29tZSBvZiB0aGUgcGxldGhvcmEgb2Ygbm9uLXdvcmtpbmcKKwkgIEMrKyBjcm9zcy1jb21waWxlcnMuCisJKyBidWlsZC1maXhlcyBmb3IgQWRhOTUgd2l0aCBnbmF0IDQuOQorCisyMDE0MDkwNgorCSsgYnVpbGQtZml4IGFuZCBvdGhlciBpbXByb3ZlbWVudHMgZm9yIHBvcnQgb2YgbmN1cnNlcy1leGFtcGxlcyB0bworCSAgTmV0QlNELgorCSsgbWlub3IgY29tcGlsZXItd2FybmluZyBmaXhlcy4KKworMjAxNDA4MzEKKwkrIG1vZGlmeSB0ZXN0L2RlbW9fdGVybWNhcC5jIGFuZCB0ZXN0L2RlbW9fdGVybWluZm8uYyB0byBtYWtlIHRoZWlyCisJICBvcHRpb25zIG1vcmUgZGlyZWN0bHkgY29tcGFyYWJsZSwgYW5kIGFkZCAiLWkiIG9wdGlvbiB0byBzcGVjaWZ5CisJICBhIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZpbGVuYW1lIHRvIHBhcnNlIGZvciBuYW1lcyB0byBsb29rdXAuCisKKzIwMTQwODIzCisJKyBmaXggc3BlY2lhbCBjYXNlIHdoZXJlIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXIgb3ZlcndyaXRlcyBhIHNpbmdsZS0KKwkgIHdpZHRoIGNoYXJhY3RlciBpbiB0aGUgZmlyc3QgY29sdW1uIChyZXBvcnQgYnkgRWdtb250IEtvYmxpbmdlciwKKwkgIGNmOiAyMDA1MDgxMykuCisKKzIwMTQwODE2CisJKyBmaXggY29sb3JzIGluIG5jdXJzZXMgJ2InIHRlc3Qgd2hpY2ggZGlkIG5vdCB3b3JrIGFmdGVyIGNoYW5naW5nCisJICBpdCB0byBwdXQgdGhlIHRlc3Qtc3RyaW5ncyBpbiBzdWJ3aW5kb3dzIChjZjogMjAxNDA3MDUpLgorCSsgbWVyZ2UgcmVkdW5kYW50IFNFRS1BTFNPIHNlY3Rpb25zIGluIGZvcm0gYW5kIG1lbnUgbWFucGFnZXMuCisKKzIwMTQwODA5CisJKyBtb2RpZnkgZGVjbGFyYXRpb25zIGZvciB1c2VyLWRhdGEgcG9pbnRlcnMgaW4gQysrIGJpbmRpbmcgdG8gdXNlCisJICByZWludGVycHJldF9jYXN0IHRvIGZhY2lsaXRhdGUgY29udmVydGluZyB0eXBlZCBwb2ludGVycyB0byB2b2lkKgorCSAgaW4gdXNlcidzIGFwcGxpY2F0aW9uIChwYXRjaCBieSBBZGFtIEppYW5nKS4KKwkrIHJlZ2VuZXJhdGVkIGh0bWwgbWFucGFnZXMuCisJKyBhZGQgbm90ZSByZWdhcmRpbmcgY2F1c2UgYW5kIGVmZmVjdCBmb3IgVEVSTSBpbiBuY3Vyc2VzIG1hbnBhZ2UsCisJICBoYXZpbmcgbm90ZWQgY2x1ZWxlc3MgdmVyYmlhZ2UgaW4gVGVybWluYWwuYXBwJ3MgImhlbHAiIGZpbGUKKwkgIHdoaWNoIHJldmVyc2VzIGNhdXNlL2VmZmVjdC4KKwkrIHJlbW92ZSBzcGVjaWFsIGZhbGxiYWNrIGRlZmluaXRpb24gZm9yIE5DVVJTRVNfQVRUUl9ULCBzaW5jZSBtYWNyb3MKKwkgIGhhdmUgcmVzb2x2ZWQgdHlwZS1taXNtYXRjaGVzIHVzaW5nIGNhc3RzIChjZjogOTcwNDEyKS4KKwkrIGZpeGVzIGZvciB3aW5fZHJpdmVyLmM6CisJICArIGhhbmRsZSByZXBhaW50aW5nIG9uIGVuZHdpbi9yZWZyZXNoIGNvbWJpbmF0aW9uLgorCSAgKyBpbXBsZW1lbnQgYmVlcCgpLgorCSAgKyBtaW5vciBjbGVhbnVwLgorCisyMDE0MDgwMgorCSsgbWlub3IgcG9ydGFiaWxpdHkgZml4ZXMgZm9yIE1pbkdXOgorCSAgKyBlbnN1cmUgV0lOVkVSIGlzIGRlZmluZWQgaW4gbWFrZWZpbGVzIHJhdGhlciB0aGFuIHVzaW5nIGhlYWRlcnMKKwkgICsgYWRkIGNoZWNrIGZvciBnbmF0cHJlcCAiLVQiIG9wdGlvbgorCSAgKyB3b3JrIGFyb3VuZCBidWcgaW50cm9kdWNlZCBieSBnY2MgNC44LjEgaW4gTWluR1cgd2hpY2ggYnJlYWtzCisJICAgICJ0cmFjZSIgZmVhdHVyZToKKwkgICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDg3NzY4OS9nY2MtNC04LTEtbWluZ2d3LWQtb3B0aW9uLWRvZXMtbm90LXdvcmstYXMtdXN1YWwKKwkrIGZpeCBtb3N0IGNvbXBpbGVyIHdhcm5pbmdzIGZvciBDeWd3aW4gbmN1cnNlcy1leGFtcGxlcy4KKwkrIHJlc3RvcmUgInJlZHVuZGFudCIgLUkgb3B0aW9ucyBpbiB0ZXN0L01ha2VmaWxlLmluLCBzaW5jZSB0aGV5IGFyZQorCSAgdHlwaWNhbGx5IG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBkZXJpdmVkIG5jdXJzZXMtZXhhbXBsZXMgcGFja2FnZQorCSAgKGNmOiAyMDE0MDcyNikuCisKKzIwMTQwNzI2CisJKyBlbGltaW5hdGUgc29tZSByZWR1bmRhbnQgLUkgb3B0aW9ucyB1c2VkIGZvciBidWlsZGluZyBsaWJyYXJpZXMsIGFuZAorCSAgZW5zdXJlIHRoYXQgJHtzcmNkaXJ9IGlzIGFkZGVkIHRvIHRoZSBpbmNsdWRlLW9wdGlvbnMgKHByb21wdGVkIGJ5CisJICBkaXNjdXNzaW9uIHdpdGggUGF1bCBHaWxtYXJ0aW4pLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gd29yayB3aXRoIE1pbml4My4yCisJKyBhZGQgZm9ybSBsaWJyYXJ5IGV4dGVuc2lvbiBPX0RZTkFNSUNfSlVTVElGWSBvcHRpb24gd2hpY2ggY2FuIGJlCisJICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIGp1c3RpZmljYXRpb24gZm9yIHN0YXRpYworCSAgdmVyc3VzIGR5bmFtaWMgZmllbGRzIChhZGFwdGVkIGZyb20gcGF0Y2ggYnkgTGVvbiBXaW50ZXIpLgorCSsgYWRkIGEgbnVsbCBwb2ludGVyIGNoZWNrIGluIHRlc3QvZWRpdF9maWVsZC5jIChyZXBvcnQvYW5hbHlzaXMgYnkKKwkgIExlb24gV2ludGVyLCBjZjogMjAxMzA2MDgpLgorCisyMDE0MDcxOQorCSsgbWFrZSB3b3JrYXJvdW5kcyBmb3IgY29tcGlsaW5nIHRlc3QtcHJvZ3JhbXMgd2l0aCBOZXRCU0QgY3Vyc2VzLgorCSsgaW1wcm92ZSBjb25maWd1cmUgbWFjcm8gQ0ZfQUREX0xJQlMsIHRvIGVsaW1pbmF0ZSByZXBlYXRlZCAtbC8tTAorCSAgb3B0aW9ucywgZnJvbSB4dGVybSBjaGFuZ2VzLgorCisyMDE0MDcxMgorCSsgY29ycmVjdCBDaGFyYWJsZSgpIG1hY3JvIGNoZWNrIGZvciBBX0FMVENIQVJTRVQgaW4gd2lkZS1jaGFyYWN0ZXJzLgorCSsgYnVpbGQtZml4IGZvciBwb3NpdGlvbi1kZWJ1ZyBjb2RlIGluIHR0eV91cGRhdGUuYywgdG8gd29yayB3aXRoIG9yCisJICB3aXRob3V0IHNwLWZ1bmNzLgorCisyMDE0MDcwNQorCSsgYWRkIHcvVyB0b2dnbGUgdG8gbmN1cnNlcy5jICdCJyB0ZXN0LCB0byBkZW1vbnN0cmF0ZSBwZXJtdXRhdGlvbiBvZgorCSAgdmlkZW8tYXR0cmlidXRlcyBhbmQgY29sb3JzIHdpdGggZG91YmxlLXdpZHRoIGNoYXJhY3RlciBzdHJpbmdzLgorCisyMDE0MDYyOQorCSsgY29ycmVjdCBjaGVjayBpbiB3aW5fZHJpdmVyLmMgZm9yIHNhdmluZyBzY3JlZW4gY29udGVudHMsIGUuZy4sIHdoZW4KKwkgIE5DVVJTRVNfQ09OU09MRTIgaXMgc2V0IChjZjogMjAxNDA1MDMpLgorCSsgcmVvcmdhbml6ZSBiL0IgbWVudSBpdGVtcyBpbiBuY3Vyc2VzLmMsIHB1dHRpbmcgdGhlIHRlc3Qtc3RyaW5ncyBpbnRvCisJICBzdWJ3aW5kb3dzLiAgVGhpcyBpcyBuZWVkZWQgZm9yIGEgcGxhbm5lZCBjaGFuZ2UgdG8gdXNlIFVuaWNvZGUKKwkgIGZ1bGx3aWR0aCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXN0LXNjcmVlbnMuCisJKyBjb3JyZWN0IHVwZGF0ZSB0byBmb3JtIHN0YXR1cyBmb3IgX05FV1RPUCwgYnJva2VuIGJ5IGZpeGVzIGZvcgorCSAgY29tcGlsZXIgd2FybmluZ3MgKHBhdGNoIGJ5IExlb24gV2ludGVyLCBjZjogMjAxMjA2MTYpLgorCisyMDE0MDYyMQorCSsgY2hhbmdlIHNoYXJlZC1saWJyYXJ5IHN1ZmZpeCBmb3IgQUlYIDUgYW5kIDYgdG8gIi5zbyIsIGF2b2lkaW5nCisJICBjb25mbGljdCB3aXRoIHRoZSBzdGF0aWMgbGlicmFyeSAocmVwb3J0IGJ5IEJlbiBMZW50eikuCisJKyBkb2N1bWVudCBSUEFUSF9MSVNUIGluIElOU1RBTExBVElPTiBmaWxlLCBhcyBwYXJ0IG9mIHdvcmthcm91bmRzIGZvcgorCSAgdXBncmFkaW5nIGFuIG5jdXJzZXMgbGlicmFyeSB1c2luZyB0aGUgIi0td2l0aC1zaGFyZWQiIG9wdGlvbi4KKwkrIG1vZGlmeSB0ZXN0L25jdXJzZXMuYyBjL0MgdGVzdHMgdG8gY3ljbGUgdGhyb3VnaCBzdWJzZXRzIG9mIHRoZQorCSAgdG90YWwgbnVtYmVyIG9mIGNvbG9ycywgdG8gYmV0dGVyIGlsbHVzdHJhdGUgOC8xNi84OC8yNTYtY29sb3JzIGJ5CisJICBwcm92aWRpbmcgZGlyZWN0bHkgY29tcGFyYWJsZSBzY3JlZW5zLgorCSsgYWRkIHRlc3QvZG90c19jdXJzZXMuYywgZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgbG93LWxldmVsIGV4YW1wbGVzLgorCisyMDE0MDYxNAorCSsgZml4IGRlcmVmZXJlbmNlIGJlZm9yZSBudWxsIGNoZWNrIGZvdW5kIGJ5IENvdmVyaXR5IGluIHRpYy5jCisJICAoY2Y6IDIwMTQwNTI0KS4KKwkrIGZpeCBzaWduLWV4dGVuc2lvbiBidWcgaW4gcmVhZF9lbnRyeS5jIHdoaWNoIHByZXZlbnRlZCAidG9lIiBmcm9tCisJICByZWFkaW5nIGVtcHR5ICJzY3JlZW4raXRhbGljcyIgZW50cnkuCisJKyBtb2RpZnkgc2dyIGZvciBzY3JlZW4ueHRlcm0tbmV3IHRvIHN1cHBvcnQgZGltIGNhcGFiaWxpdHkgLVRECisJKyBhZGQgZGltIGNhcGFiaWxpdHkgdG8gbnN0ZXJtKzcgLVRECisJKyBjYW5jZWwgZGltIGNhcGFiaWxpdHkgZm9yIGl0ZXJtIC1URAorCSsgYWRkIGRpbSwgaW52aXMgY2FwYWJpbGl0aWVzIHRvIHZ0ZS0yMDEyIC1URAorCSsgYWRkIHNpdG0vcml0bSB0byBrb25zb2xlLWJhc2UgYW5kIG1sdGVybTMgLVRECisKKzIwMTQwNjA5CisJPiBmaXggcmVncmVzc2lvbiBpbiBzY3JlZW4gdGVybWluZm8gZW50cmllcyAocmVwb3J0cyBieSBDaHJpc3RpYW4KKwkgIEViZXJ0LCBHYWJyaWVsZSBCYWxkdWNjaSkgLVRECisJKyByZXZlcnQgdGhlIGNoYW5nZSB0byBzY3JlZW47IHNlZSBub3RlcyBmb3Igd2h5IHRoaXMgZGlkIG5vdCB3b3JrIC1URAorCSsgY2FuY2VsIHNpdG0vcml0bSBmb3IgZW50cmllcyB3aGljaCBleHRlbmQgInNjcmVlbiIsIHRvIHdvcmsgYXJvdW5kCisJICBzY3JlZW4ncyBoYXJkY29kZWQgYmVoYXZpb3IgZm9yIFNHUiAzIC1URAorCisyMDE0MDYwNworCSsgc2VwYXJhdGUgbWFza2luZyBmb3Igc2dyIGluIHZpZHB1dHMgZnJvbSBzaXRtL3JpdG0sIHdoaWNoIGRvIG5vdAorCSAgb3ZlcmxhcCB3aXRoIHNnciBmdW5jdGlvbmFsaXR5LgorCSsgcmVtb3ZlIHVubmVlZGVkIC1pIG9wdGlvbiBmcm9tIGFkYWN1cnNlcy1jb25maWc7IHB1dCAtYSBpbiB0aGUgLUkKKwkgIG9wdGlvbiBmb3IgY29uc2lzdGVuY3kgKHBhdGNoIGJ5IFBhc2NhbCBQaWduYXJkKS4KKwkrIHVwZGF0ZSB4dGVybS1uZXcgdGVybWluZm8gZW50cnkgdG8geHRlcm0gcGF0Y2ggIzMwNSAtVEQKKwkrIGNoYW5nZSBmb3JtYXQgb2YgdGVzdC1zY3JpcHRzIGZvciBEZWJpYW4gQWRhOTUgYW5kIG5jdXJzZXMtZXhhbXBsZXMKKwkgIHBhY2thZ2VzIHRvIHF1aWx0ZWQgdG8gd29yayBhcm91bmQgRGViaWFuICM3MDAxNzcgKGNmOiAyMDEzMDkwNykuCisJKyBidWlsZCBmaXggZm9yIGZvcm1fZHJpdmVyX3cuYyBhcyBwYXJ0IG9mIG5jdXJzZXMtZXhhbXBsZXMgcGFja2FnZSBmb3IKKwkgIG9sZGVyIG5jdXJzZXMgdGhhbiAyMDEzMTIwNy4KKwkrIGFkZCBIZWxsbyBXb3JsZCBleGFtcGxlIHRvIGFkYWN1cnNlcy1jb25maWcgbWFucGFnZS4KKwkrIHJlbW92ZSB1bnVzZWQgLS1lbmFibGUtcGMtZmlsZXMgb3B0aW9uIGZyb20gQWRhOTUvY29uZmlndXJlLgorCSsgYWRkIC0tZGlzYWJsZS1nbmF0LXByb2plY3RzIG9wdGlvbiBmb3IgdGVzdGluZy4KKwkrIHJldmVydCBjaGFuZ2VzIHRvIEFkYTk1IHByb2plY3QtZmlsZXMgY29uZmlndXJhdGlvbiAoY2Y6IDIwMTQwNTI0KS4KKwkrIGNvcnJlY3RlZCB1c2FnZSBtZXNzYWdlIGluIGFkYWN1cnNlcy1jb25maWcuCisKKzIwMTQwNTI0CisJKyBmaXggdHlwbyBpbiBuY3Vyc2VzIG1hbnBhZ2UgZm9yIHRoZSBOQ1VSU0VTX05PX01BR0lDX0NPT0tJRQorCSAgZW52aXJvbm1lbnQgdmFyaWFibGUuCisJKyBpbXByb3ZlIGRpc2N1c3Npb24gb2YgaW5wdXQtZWNob2luZyBpbiBjdXJzX2dldGNoLjN4CisJKyBjbGFyaWZ5IGRpc2N1c3Npb24gaW4gY3Vyc19hZGRjaC4zeCBvZiB3cmFwcGluZy4KKwkrIG1vZGlmeSBwYXJhbWV0cml6ZWQuaCB0byBtYWtlIGZsbiBub24tcGFkZGVkLgorCSsgY29ycmVjdCBzZXZlcmFsIGVudHJpZXMgd2hpY2ggaGFkIHRlcm1jYXAtc3R5bGUgcGFkZGluZyB1c2VkIGluCisJICB0ZXJtaW5mbzogYWRtMjEsIGFqNTEwLCBhbHRvLWgxOSwgYXR0NjA1LXBjLCB4ODIwIC1URAorCSsgY29ycmVjdCBzeW50YXggZm9yIHBhZGRpbmcgaW4gc29tZSBlbnRyaWVzOiBkZzIxMSwgaDE5IC1URAorCSsgY29ycmVjdCB0aTkyNC04IHdoaWNoIGhhZCBjb25mdXNlZCBwYWRkaW5nIHZlcnN1cyBvY3RhbCBlc2NhcGVzIC1URAorCSsgY29ycmVjdCBwYWRkaW5nIGluIHNiaSBlbnRyeSAtVEQKKwkrIGZpeCBhbiBvbGQgYnVnIGluIHRoZSB0ZXJtY2FwIGVtdWxhdGlvbjsgIiVpIiB3YXMgaWdub3JlZCBpbiB0cGFybSgpCisJICBiZWNhdXNlIHRoZSBwYXJhbWV0ZXJzIHRvIGJlIGluY3JlbWVudGVkIHdlcmUgYWxyZWFkeSBvbiB0aGUgaW50ZXJuYWwKKwkgIHN0YWNrIChyZXBvcnQgYnkgQ29yaW5uYSBWaW5zY2hlbikuCisJKyBtb2RpZnkgdGljJ3MgIi1jIiBvcHRpb24gdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlICItQyIgb3B0aW9uIHRvCisJICBhY3RpdmF0ZSBhZGRpdGlvbmFsIGNoZWNrcyB3aGljaCBjb21wYXJlIHRoZSByZXN1bHRzIGZyb20gcnVubmluZworCSAgdHBhcm0oKSBvbiB0aGUgdGVybWluZm8gZXhwcmVzc2lvbnMgdmVyc3VzIHRoZSB0cmFuc2xhdGVkIHRlcm1jYXAKKwkgIGV4cHJlc3Npb25zLgorCSsgbW9kaWZ5IHRpYyB0byBhbGxvdyBpdCB0byByZWFkIGZyb20gRklGT3MgKHJlcG9ydCBieSBNYXR0aGlldSBGcm9udG9uLAorCSAgY2Y6IDIwMTIwMzI0KS4KKwk+IHBhdGNoZXMgYnkgTmljb2xhcyBCb3VsZW5ndWV6OgorCSsgZXhwbGljaXQgZGVyZWZlcmVuY2VzIHRvIHN1cHByZXNzIHNvbWUgc3R5bGUgd2FybmluZ3MuCisJKyB3aGVuIGNfdmFyYXJnc190b19hZGEuYyBpbmNsdWRlcyBpdHMgaGVhZGVyLCB1c2UgZG91YmxlIHF1b3RlcworCSAgaW5zdGVhZCBvZiA8Pi4KKwkrIHNhbXBsZXMvbmN1cnNlczItdXRpbC5hZGI6ICByZW1vdmVkIHVudXNlZCB3aXRoIGNsYXVzZS4gIFRoZSB3YXJuaW5nCisJICB3YXMgcmVtb3ZlZCBieSBhbiBvYnNvbGV0ZSBwcmFnbWEuCisJKyByZXBsYWNlZCBVbnJlZmVyZW5jZWQgcHJhZ21hcyB3aXRoIFdhcm5pbmdzIChPZmYpLiAgVGhlIGxhdHRlciwKKwkgIGF2YWlsYWJsZSB3aXRoIG9sZGVyIEdOQVRzLCBuZWVkcyBubyBjb25maWd1cmUgdGVzdC4gIFRoaXMgYWxzbworCSAgcmVwbGFjZXMgMyB1bnRlc3RlZCBVbnJlZmVyZW5jZWQgcHJhZ21hcy4KKwkrIHNpbXBsaWZpZWQgVG9fQyB1c2FnZSBpbiB0cmFjZSBoYW5kbGluZy4gIFVzaW5nIHR3byBwYXJhbWV0ZXJzIGFsbG93cworCSAgc29tZSBiYXNpYyBmb3JtYXR0aW5nLCBhbmQgYXZvaWRzIGEgd2FybmluZyBhYm91dCBzZWN1cml0eSB3aXRoIHNvbWUKKwkgIGNvbXBpbGVyIGZsYWdzLgorCSsgZm9yIGdlbmVyYXRlZCBBZGEgc291cmNlcywgcmVwbGFjZSBtYW55IHNuaXBwZXRzIHdpdGggb25lIHB1cmUKKwkgIHBhY2thZ2UuCisJKyByZW1vdmVkIENfQ2h0eXBlIGFuZCBpdHMgY29udmVyc2lvbnMuCisJKyByZW1vdmVkIENfQXR0clR5cGUgYW5kIGl0cyBjb252ZXJzaW9ucy4KKwkrIHJlbW92ZWQgY29udmVyc2lvbnMgYmV0d2VlbiBpbnQsIEl0ZW1fT3B0aW9uX1NldCwgTWVudV9PcHRpb25fU2V0LgorCSsgcmVtb3ZlZCBpbnQsIEZpZWxkX09wdGlvbl9TZXQsIEl0ZW1fT3B0aW9uX1NldCBjb252ZXJzaW9ucy4KKwkrIHJlbW92ZWQgQ19UcmFjZVR5cGUsIEF0dHJpYnV0ZV9PcHRpb25fU2V0IGNvbnZlcnNpb25zLgorCSsgcmVwbGFjZWQgQy5pbnQgd2l0aCBkaXJlY3QgdXNlIG9mIEV0aV9FcnJvciwgbm93IGVudW1lcmF0ZWQuICBBcyBpdAorCSAgd2FzIHVzZWQgaW4gYSBjYXNlIHN0YXRlbWVudCwgdmFsdWVzIHdlcmUgdGVzdGVkIGJ5IHRoZSBBZGEgY29tcGlsZXIKKwkgIHRvIGJlIGNvbnNlY3V0aXZlIGFueXdheS4KKwkrIHNyYy9NYWtlZmlsZS5pbjogcmVtb3ZlIGR1cGxpY2F0ZSBzdGFuemEKKwkrIG9ubHkgY29uc2lkZXIgdXNpbmcgYSBwcm9qZWN0IGZvciBzaGFyZWQgbGlicmFyaWVzLgorCSsgc3R5bGUuIFNpbGVudCBnbmF0LTQuOSB3YXJuaW5nIGFib3V0IG1pc3BsYWNlZCAidGhlbiIuCisJKyBnZW5lcmF0ZSBzaGFyZWQgbGlicmFyeSBwcm9qZWN0IHRvIGhvbm9yIEFEQUZMQUdTLCBMREZMQUdTLgorCisyMDE0MDUxMAorCSsgY2xlYW51cCByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBNaW5nVyBwb3J0LgorCSsgd29ya2Fyb3VuZCBmb3IgJHtNQUtFRkxBR1N9IGNvbmZpZ3VyZSBjaGVjayB2ZXJzdXMgR05VIG1ha2UgNC4wLAorCSAgd2hpY2ggaW50cm9kdWNlcyBtb3JlIHRoYW4gb25lIGdyYXR1aXRvdXMgaW5jb21wYXRpYmlsaXR5LgorCisyMDE0MDUwMworCSsgYWRkIHZ0NTIwYW5zaSB0ZXJtaW5mbyBlbnRyeSAocGF0Y2ggYnkgTWlrZSBHcmFuKQorCSsgZnVydGhlciBpbXByb3ZlIE1pbkdXIHN1cHBvcnQgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSB0aGVyZSBpcyBhbgorCSAgQU5TSS1lc2NhcGVzIGhhbmRsZXIgc3VjaCBhcyBhbnNpY29uIHJ1bm5pbmcgaW4gdGhlIGNvbnNvbGUgd2luZG93CisJICAocGF0Y2ggYnkgSnVlcmdlbiBQZmVpZmVyKS4KKworMjAxNDA0MjYKKwkrIGFkZCAtLWRpc2FibGUtbGliLXN1ZmZpeGVzIG9wdGlvbiAoYWRhcHRlZCBmcm9tIHBhdGNoIGJ5IEp1ZXJnZW4KKwkgIFBmZWlmZXIpLgorCSsgbWVyZ2Ugc29tZSBjaGFuZ2VzIGZyb20gSnVlcmdlbiBQZmVpZmVyJ3Mgd29yayB3aXRoIE1TWVMyLCB0bworCSAgc2ltcGxpZnkgbGF0ZXIgbWVyZ2luZzoKKwkgICsgdXNlIE5DX0lTQVRUWSgpIG1hY3JvIGZvciBpc2F0dHkoKSBpbiBsaWJyYXJ5CisJICArIGFkZCBfbmNfbWluZ3dfaXNhdHR5KCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHdpbmRvd3MtZHJpdmVyCisJICArIHJlbmFtZSB0ZXJtaW5hbCBkcml2ZXIgZW50cnlwb2ludHMgdG8gc2ltcGxpZnkgZ3JlcCdzCisJKyByZW1vdmUgYSBjaGVjayBpbiB0aGUgc3AtZnVuY3MgZmxhdm9yIG9mIG5ld3Rlcm0oKSB3aGljaCBhbGxvd2VkIG9ubHkKKwkgIHRoZSBmaXJzdCBjYWxsIHRvIG5ld3Rlcm0oKSB0byBzdWNjZWVkIChyZXBvcnQgYnkgVGhvbWFzIEJlaWVybGVpbiwKKwkgIGNmOiAyMDA5MDkyNykuCisKKzIwMTQwNDE5CisJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViIGZyb20KKwkJaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvY29uZmlnLmdpdAorCisyMDE0MDQxMgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQ6CisJICArIGRyb3AgdGhlIC1uby1nY2Mgb3B0aW9uIGZyb20gSW50ZWwgY29tcGlsZXIsIGZyb20gbHlueCBjaGFuZ2VzLgorCSAgKyBleHRlbmQgdGhlIC0td2l0aC1oYXNoZWQtZGIgY29uZmlndXJlIG9wdGlvbiB0byBzaW1wbGlmeSBidWlsZGluZworCSAgICB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBCZXJrZWxleSBkYXRhYmFzZSB1c2luZyBGcmVlQlNEIHBvcnRzLgorCSsgaW1wcm92ZSBpbml0aWFsaXphdGlvbiBmb3IgTWluR1cgcG9ydCAoSnVlcmdlbiBQZmVpZmVyKToKKwkgICsgZW5mb3JjZSBXaW5kb3dzLXN0eWxlIHBhdGgtc2VwYXJhdG9yIGlmIGNyb3NzLWNvbXBpbGluZywKKwkgICsgYWRkIGEgZHJpdmVyLW5hbWUgbWV0aG9kIHRvIGVhY2ggb2YgdGhlIGRyaXZlcnMsCisJICArIGFsbG93IHRoZSBXaW5kb3dzIGRyaXZlciBuYW1lIHRvIG1hdGNoICJ1bmtub3duIiwgaWdub3JpbmcgY2FzZSwKKwkgICsgbGVuZ3RoZW4gdGhlIGJ1aWx0LWluIG5hbWUgZm9yIHRoZSBXaW5kb3dzIGNvbnNvbGUgZHJpdmVyIHRvCisJICAgICIjd2luMzJjb25zb2xlIiwgYW5kCisJICArIG1vdmUgdGhlIGNvbXBhcmlzb24gb2YgZHJpdmVyLW5hbWVzIGFsbG93aW5nIGFiYnJldmlhdGlvbiwgZS5nLiwKKwkgICAgdG8gIiN3aW4zMmNvbiIgaW50byB0aGUgV2luZG93cyBjb25zb2xlIGRyaXZlci4KKworMjAxNDAzMjkKKwkrIGFkZCBjaGVjayBpbiB0aWMgZm9yIG1pc21hdGNoIGJldHdlZW4gY2NjIGFuZCBpbml0cC9pbml0YworCSsgY2FuY2VsIGNjYyBpbiBwdXR0eS0yNTZjb2xvciBhbmQga29uc29sZS0yNTZjb2xvciBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggdGhlIGNhbmNlbGxlZCBpbml0YyBjYXBhYmlsaXR5IChwYXRjaCBieSBTdmVuIFp1aGxzZG9yZikuCisJKyBhZGQgeHRlcm0rMjU2c2V0YWYgYnVpbGRpbmcgYmxvY2sgZm9yIHZhcmlvdXMgdGVybWluYWxzIHdoaWNoIG9ubHkKKwkgIGdldCB0aGUgMjU2LWNvbG9yIGZlYXR1cmUgaGFsZi1pbXBsZW1lbnRlZCAtVEQKKwkrIHVwZGF0ZWQgInN0IiBlbnRyeSAobGVhdmluZyB0aGUgMC4xLjEgdmVyc2lvbiBhcyAic2ltcGxldGVybSIpIHRvCisJICAwLjQuMSAtVEQKKworMjAxNDAzMjMKKwkrIGZpeCB0eXBvIGluICJtbHRlcm0iIGVudHJ5IChyZXBvcnQgYnkgR2FicmllbGUgQmFsZHVjY2kpIC1URAorCisyMDE0MDMyMgorCSsgdXNlIHR5cGVzIGZyb20gPHN0ZGludC5oPiBpbiBzYW1wbGUgYnVpbGQtc2NyaXB0cyBmb3IgY2h0eXBlLCBldGMuCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCBhbmQgY3Vyc2VzLmguaW4gdG8gYWxsb3cgdGhlIHR5cGVzIHNwZWNpZmllZAorCSAgdXNpbmcgLS13aXRoLWNodHlwZSBhbmQgcmVsYXRlZCBvcHRpb25zIHRvIGJlIGRlZmluZWQgaW4gPHN0ZGludC5oPgorCSsgYWRkIHRlcm1pbm9sb2d5IGVudHJ5IC1URAorCSsgYWRkIG1sdGVybTMgZW50cnksIHVzZSB0aGF0IGFzICJtbHRlcm0iIC1URAorCSsgaW5oZXJpdCBtbHRlcm0tMjU2Y29sb3IgZnJvbSBtbHRlcm0gLVRECisKKzIwMTQwMzE1CisJKyBtb2RpZnkgX25jX05ld19Ub3BSb3dfYW5kX0N1cnJlbnRJdGVtKCkgdG8gZW5zdXJlIHRoYXQgdGhlIG1lbnUncworCSAgdG9wLXJvdyBpcyBhZGp1c3RlZCBhcyBuZWVkZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgaXRlbSBpcworCSAgb24gdGhlIHNjcmVlbiAocGF0Y2ggYnkgSm9oYW5uIEtsYW1tZXIpLgorCSsgYWRkIHdnZXRkZWxheSgpIHRvIHJldHJpZXZlIF9kZWxheSBtZW1iZXIgb2YgV0lORE9XIGlmIGl0IGhhcHBlbnMgdG8KKwkgIGJlIG9wYXF1ZSwgZS5nLiwgaW4gdGhlIHB0aHJlYWQgY29uZmlndXJhdGlvbiAocHJvbXB0ZWQgYnkgcGF0Y2ggYnkKKwkgIFNvcmVuIEJyaW5rbWFubikuCisKKzIwMTQwMzA4CisJKyBtb2RpZnkgaWZkZWYgaW4gcmVhZF9lbnRyeS5jIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZQorCSAgTkNVUlNFU19VU0VfREFUQUJBU0UgaXMgbm90IGRlZmluZWQgKHBhdGNoIGJ5IFhpbiBMaSkuCisJKyBhZGQgY2FzdCBpbiBmb3JtX2RyaXZlcl93KCkgdG8gZml4IEFSTSBidWlsZCAocGF0Y2ggYnkgWGluIExpKS4KKwkrIGFkZCBsb2dpYyB0byB3aW5fZHJpdmVyLmMgdG8gc2F2ZS9yZXN0b3JlIHNjcmVlbiBjb250ZW50cyB3aGVuIG5vdAorCSAgYWxsb2NhdGluZyBhIGNvbnNvbGUtYnVmZmVyIChjZjogMjAxNDAyMTUpLgorCisyMDE0MDMwMQorCSsgY2xhcmlmeSBlcnJvci1yZXR1cm5zIGZyb20gbmV3d2luIChyZXBvcnQgYnkgUnVzbGFuIE5hYmlvdWxsaW4pLgorCisyMDE0MDIyMgorCSsgZml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgaW4gd2luX2RyaXZlci5jCisJKyB1cGRhdGVkIG5vdGVzIGZvciB3c3Z0MjUgYmFzZWQgb24gdGFjayBhbmQgdnR0ZXN0IC1URAorCSsgYWRkIHRla2VuIGVudHJ5IHRvIHNob3cgYWN0dWFsIHByb3BlcnRpZXMgb2YgRnJlZUJTRCdzICJ4dGVybSIKKwkgIGNvbnNvbGUgLVRECisKKzIwMTQwMjE1CisJKyBpbi1wcm9ncmVzcyBjaGFuZ2VzIHRvIHdpbl9kcml2ZXIuYyB0byBpbXBsZW1lbnQgb3V0cHV0IHdpdGhvdXQKKwkgIGFsbG9jYXRpbmcgYSBjb25zb2xlLWJ1ZmZlci4gIFRoaXMgdXNlcyBhIHByZS1leGlzdGluZyBlbnZpcm9ubWVudAorCSAgdmFyaWFibGUgTkNHREIgdXNlZCBieSBKdWVyZ2VuIFBmZWlmZXIgZm9yIGRlYnVnZ2luZyAocHJvbXB0ZWQgYnkKKwkgIGRpc2N1c3Npb24gd2l0aCBFcndpbiBXYXRlcmxhbmRlciByZWdhcmRpbmcgQ29uc29sZTIsIHdoaWNoIGhhbmdzCisJICB3aGVuIHJlYWRpbmcgaW4gYW4gYWxsb2NhdGVkIGNvbnNvbGUtYnVmZmVyKS4KKwkrIGFkZCAtdCBvcHRpb24gdG8gZ2RjLmMsIGFuZCBtb2RpZnkgdG8gYWNjZXB0ICJTIiB0byBzdGVwIHRocm91Z2ggdGhlCisJICBzY3JvbGxpbmctc3RhZ2VzLgorCSsgcmVnZW5lcmF0ZSBOQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwgdG8gZml4IHNvbWUgb2YgdGhlIGJyb2tlbgorCSAgaHRtbCBlbWl0dGVkIGJ5IGRvY2Jvb2suCisKKzIwMTQwMjA5CisJKyBtb2RpZnkgQ0ZfWE9QRU5fU09VUkNFIG1hY3JvIHRvIG9taXQgZm9sbG93dXAgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmCisJICBfWE9QRU5fU09VUkNFIGNhbi9zaG91bGQgYmUgZGVmaW5lZC4gIGcrKyA0LjcuMiBidWlsdCBvbiBTb2xhcmlzIDEwCisJICBoYXMgc29tZSBoZWFkZXIgYnJlYWthZ2UgZHVlIHRvIGl0cyBvd24gcHJlZGVmaW5pdGlvbiBvZiB0aGlzIHN5bWJvbAorCSAgKHJlcG9ydCBieSBKZWFuLVBpZXJyZSBGbG9yaSwgU2FnZSAjMTU3OTYpLgorCisyMDE0MDIwMQorCSsgYWRkL3VzZSBzeW1ib2wgTkNVUlNFU19QQUlSU19UIGxpa2UgTkNVUlNFU19DT0xPUl9ULCB0byBpbGx1c3RyYXRlCisJICB3aGljaCAic2hvcnQiIHR5cGVzIGFyZSBmb3IgY29sb3IgcGFpcnMgYW5kIHdoaWNoIGFyZSBjb2xvciB2YWx1ZXMuCisJKyBmaXggYnVpbGQgZm9yIHMzOTB4LCBieSBjb3JyZWN0aW5nIGZpZWxkIGJpdCBvZmZzZXRzIGluIGdlbmVyYXRlZAorCSAgcmVwcmVzZW50YXRpb24gY2xhdXNlcyB3aGVuIGludD0zMiBsb25nPTY0IGFuZCBlbmRpYW49YmlnLCBvciBhdAorCSAgbGVhc3Qgb24gczM5MHggKHBhdGNoIGJ5IE5pY29sYXMgQm91bGVuZ3VleikuCisJKyBtaW5vciBjbGVhbnVwIGNoYW5nZSB0byB0ZXN0L2Zvcm1fZHJpdmVyX3cuYyAocGF0Y2ggYnkgR2F1dGUgSG9wZSkuCisKKzIwMTQwMTI1CisJKyByZW1vdmUgdW5uZWNlc3NhcnkgaWZkZWYncyBpbiBBZGE5NS9nZW4vZ2VuLmMsIHdoaWNoIHJlcG9ydGVkbHkgZG8KKwkgIG5vdCB3b3JrIGFzIGlzIHdpdGggZ2NjIDQuOCBkdWUgdG8gZml4ZXMgdXNpbmcgY2h0eXBlIGNhc3QgbWFkZSBmb3IKKwkgIG5ldyBjb21waWxlciB3YXJuaW5ncyBieSBnY2MgNC44IGluIDIwMTMwODI0IChEZWJpYW4gIzczNTc1MywgcGF0Y2gKKwkgIGJ5IE5pY29sYXMgQm91bGVuZ3VleikuCisKKzIwMTQwMTE4CisJKyBhcHBseSBpbmNsdWRlc3ViZGlyIHZhcmlhYmxlIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGluIDIwMTMwODA1IHRvCisJICBnZW4tcGtnY29uZmlnLmluIChEZWJpYW4gIzczNTc4MikuCisKKzIwMTMxMjIxCisJKyBmdXJ0aGVyIGltcHJvdmVkIG1hbjJodG1sLCB1c2VkIHRoaXMgdG8gZml4IGJyb2tlbiBsaW5rcyBpbiBodG1sCisJICBtYW5wYWdlcy4gIFNlZQorCSAgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9wYXRjaGVzL21hbjJodG1sCisKKzIwMTMxMjE0CisJKyBtb2RpZnkgY29uZmlndXJlLXNjcmlwdC9pZmRlZidzIHRvIGFsbG93IE9MRF9UVFkgZmVhdHVyZSB0byBiZQorCSAgc3VwcHJlc3NlZCBpZiB0aGUgdHlwZSBvZiBvc3BlZWQgaXMgY29uZmlndXJlZCB1c2luZyB0aGUgb3B0aW9uCisJICAtLXdpdGgtb3NwZWVkIHRvIG5vdCBiZSBhIHNob3J0LiAgQnkgZGVmYXVsdCwgaXQgaXMgYSBzaG9ydCBmb3IKKwkgIHRlcm1jYXAtY29tcGF0aWJpbGl0eSAoYWRhcHRlZCBmcm9tIHN1Z2dlc3Rpb24gYnkgQ2hyaXN0aWFuCisJICBXZWlzZ2VyYmVyKS4KKwkrIGNvcnJlY3QgYSB0eXBvIGluIF9uY19iYXVkcmF0ZSgpIChwYXRjaCBieSBDaHJpc3RpYW4gV2Vpc2dlcmJlciwKKwkgIGNmOiAyMDA2MTIzMCkuCisJKyBmaXggYSBmZXcgLVdsb2dpY2FsLW9wIHdhcm5pbmdzLgorCSsgdXBkYXRlZCBsbGliLWwqIGZpbGVzLgorCisyMDEzMTIwNworCSsgYWRkIGZvcm1fZHJpdmVyX3coKSBlbnRyeXBvaW50IHRvIHdpZGUtY2hhcmFjdGVyIGZvcm1zIGxpYnJhcnksIGFzCisJICB3ZWxsIGFzIHRlc3QgcHJvZ3JhbSBmb3JtX2RyaXZlcl93IChhZGFwdGVkIGZyb20gcGF0Y2ggYnkgR2F1dGUKKwkgIEhvcGUpLgorCisyMDEzMTEyMworCSsgbWlub3IgZml4IGZvciBDRl9HQ0NfV0FSTklOR1MgdG8gc3BlY2lhbC1jYXNlIG9wdGlvbnMgd2hpY2ggYXJlIG5vdAorCSAgcmVjb2duaXplZCBieSBjbGFuZy4KKworMjAxMzExMTYKKwkrIGFkZCBzcGVjaWFsIGNhc2UgdG8gY29uZmlndXJlIHNjcmlwdCB0byBtb3ZlIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKwkgIGRlZmluaXRpb24gZnJvbSBDUFBGTEFHUyB0byBDRkxBR1MgaWYgaXQgaGFwcGVucyB0byBiZSBuZWVkZWQgZm9yCisJICBTb2xhcmlzLCBiZWNhdXNlIGcrKyBlcnJvcnMgd2l0aCB0aGF0IGRlZmluaXRpb24gKHJlcG9ydCBieQorCSAgSmVhbi1QaWVycmUgRmxvcmksIFNhZ2UgIzE1MjY4KS4KKwkrIGNvcnJlY3QgbG9naWMgaW4gaW5mb2NtcCdzIC1pIG9wdGlvbiB3aGljaCB3YXMgaW50ZW5kZWQgdG8gaWdub3JlCisJICBzdHJpbmdzIHdoaWNoIGNvcnJlc3BvbmQgdG8gZnVuY3Rpb24ta2V5cyBhcyBjYW5kaWRhdGVzIGZvciBwaWVjaW5nCisJICB0b2dldGhlciBpbml0aWFsaXphdGlvbi0gb3IgcmVzZXQtc3RyaW5ncy4gIFRoZSBwcm9ibGVtIGRhdGVzIHRvCisJICAxLjkuN2EsIGJ1dCB3YXMgb3Zlcmxvb2tlZCB1bnRpbCBjaGFuZ2VzIGluIC1XbG9naWNhbC1vcCB3YXJuaW5ncyBmb3IKKwkgIGdjYyA0LjggKHJlcG9ydCBieSBEYXZpZCBCaW5kZXJtYW4pLgorCSsgdXBkYXRlZCBDRl9HQ0NfV0FSTklOR1MgdG8gZG9jdW1lbnRlZCBvcHRpb25zIGZvciBnY2MgNC45LjAsIG1vdmluZworCSAgY2hlY2tzIGZvciAtV2V4dHJhIGFuZCAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBpbnRvIHRoZSBtYWNybywKKwkgIGFuZCBhZGRpbmcgY2hlY2tzIGZvciAtV2lnbm9yZWQtcXVhbGlmaWVycywgLVdsb2dpY2FsLW9wIGFuZAorCSAgLVd2YXJhcmdzCisJKyB1cGRhdGVkIENGX0NVUlNFU19VTkNUUkxfSCBhbmQgQ0ZfU0hBUkVEX09QVFMgbWFjcm9zIGZyb20gb25nb2luZworCSAgd29yayBvbiBjZGsuCisJKyB1cGRhdGUgY29uZmlnLnN1YiBmcm9tCisJCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NvbmZpZy5naXQKKworMjAxMzExMTAKKwkrIG1pbm9yIGNsZWFudXAgb2YgdGVybWluZm8udGFpbAorCisyMDEzMTEwMgorCSsgdXNlIFRTIGV4dGVuc2lvbiB0byBkZXNjcmliZSB4dGVybSdzIHRpdGxlLWVzY2FwZXMgLVRECisJKyBtb2RpZnkgdGVybWluYXRvciBhbmQgbnN0ZXJtLXMgdG8gdXNlIHh0ZXJtK3NsLXR3bSBidWlsZGluZyBibG9jayAtVEQKKwkrIHVwZGF0ZSBodXJkLnRpLCBhZGQgeGVubCB0byByZWZsZWN0IDIwMTEtMDMtMDYgY2hhbmdlIGluCisJICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9odXJkL2h1cmQuZ2l0L2xvZy9jb25zb2xlL2Rpc3BsYXkuYworCSAgKERlYmlhbiAjNzI3MTE5KS4KKwkrIHNpbXBsaWZ5IHBma2V5IGV4cHJlc3Npb24gaW4gYW5zaS5zeXMgLVRECisKKzIwMTMxMDI3CisJKyBjb3JyZWN0L3NpbXBsaWZ5IGlmZGVmJ3MgZm9yIGN1cl90ZXJtIHZlcnN1cyBicm9rZW4tbGlua2VyIGFuZAorCSAgcmVlbnRyYW50IG9wdGlvbnMgKHJlcG9ydCBieSBKZWFuLVBpZXJyZSBGbG9yaSwgY2Y6IDIwMDkwNTMwKS4KKwkrIG1vZGlmeSByZWxlYXNlL3ZlcnNpb24gY29tYmluYXRpb25zIGluIHRlc3QgYnVpbGQtc2NyaXB0cyB0byBtYWtlCisJICB0aGVtIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIHBhY2thZ2VzLgorCisyMDEzMTAxOQorCSsgYWRkIG5jX21pbmd3LmggdG8gaW5zdGFsbGVkIGhlYWRlcnMgZm9yIE1pbkdXIHBvcnQ7IG5lZWRlZCBmb3IKKwkgIGNvbXBpbGluZyBuY3Vyc2VzLWV4YW1wbGVzLgorCSsgYWRkIHJwbS1zY3JpcHQgZm9yIHRlc3RpbmcgY3Jvc3MtY29tcGlsZSBvZiBuY3Vyc2VzLWV4YW1wbGVzLgorCisyMDEzMTAxNAorCSsgZml4IG5ldyB0eXBvIGluIENGX0FEQV9JTkNMVURFX0RJUlMgbWFjcm8gKHJlcG9ydCBieSBSb3VtZW4gUGV0cm92KS4KKworMjAxMzEwMTIKKwkrIGZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncyBpbiBwcm9ncyBhbmQgdGVzdC4KKwkrIG1pbm9yIGZpeCB0byBwYWNrYWdlL2RlYmlhbi1taW5ndy9ydWxlcywgZG8gbm90IHN0cmlwIGRsbCdzLgorCSsgbWlub3IgZml4ZXMgdG8gY29uZmlndXJlIHNjcmlwdCBmb3IgZW1wdHkgJHByZWZpeCwgZS5nLiwgd2hlbiBkb2luZworCSAgY3Jvc3MtY29tcGlsZXMgdG8gTWluR1cuCisJKyBhZGQgc2NyaXB0IGZvciBidWlsZGluZyB0ZXN0LXBhY2thZ2VzIG9mIGJpbmFyaWVzIGNyb3NzLWNvbXBpbGVkIHRvCisJICBNaW5HVyB1c2luZyBOU0lTLgorCisyMDEzMTAwNQorCSsgbWlub3IgZml4ZXMgZm9yIG5jdXJzZXMtZXhhbXBsZSBwYWNrYWdlIGFuZCBtYWtlZmlsZS4KKwkrIGFkZCBzY3JpcHRzIGZvciB0ZXN0LWJ1aWxkcyBvZiBjcm9zcy1jb21waWxlciBwYWNrYWdlcyBmb3IgbmN1cnNlczYKKwkgIHRvIE1pbkdXLgorCisyMDEzMDkyOAorCSsgc29tZSBidWlsZC1maXhlcyBmb3IgbmN1cnNlcy1leGFtcGxlcyB3aXRoIE5ldEJTRC02LjAgY3Vyc2VzLCB0aG91Z2gKKwkgIGl0IGxhY2tzIHNvbWUgY29tbW9uIGZ1bmN0aW9ucyBzdWNoIGFzIHVzZV9lbnYoKSB3aGljaCBpcyBub3QgeWV0CisJICBhZGRyZXNzZWQuCisJKyBidWlsZC1maXggYW5kIHNvbWUgY29tcGlsZXIgd2FybmluZyBmaXhlcyBmb3IgbmN1cnNlcy1leGFtcGxlcyB3aXRoCisJICBPcGVuQlNEIDUuMworCSsgZml4IGEgcG9zc2libGUgbnVsbC1wb2ludGVyIHJlZmVyZW5jZSBpbiBhIHRyYWNlIG1lc3NhZ2UgZnJvbSBuZXd0ZXJtLgorCSsgcXVpZXQgYSBmZXcgd2FybmluZ3MgZnJvbSBOZXRCU0QgNi4wIG5hbWVzcGFjZSBwb2xsdXRpb24gYnkKKwkgIG5vbnN0YW5kYXJkIHBvcGNvdW50KCkgZnVuY3Rpb24gaW4gc3RhbmRhcmQgc3RyaW5ncy5oIGhlYWRlci4KKwkrIGlnbm9yZSBnKysgNC4yLjEgd2FybmluZ3MgZm9yICItV2VmZmMrKyIgaW4gYysrL2N1cnNlc21haW4uY2MKKwkrIGZpeCBhIGZldyBvdmVybG9va2VkIHBsYWNlcyBmb3IgLS1lbmFibGUtc3RyaW5nLWhhY2tzIG9wdGlvbi4KKworMjAxMzA5MjEKKwkrIGZpeCB0eXBvIGluIGN1cnNfYXR0ci4zeCAocGF0Y2ggYnkgU3ZlbiBKb2FjaGltLCBjZjogMjAxMzA4MzEpLgorCSsgYnVpbGQtZml4IGZvciAtLXdpdGgtc2hhcmVkIG9wdGlvbiBmb3IgRHJhZ29uRmx5IGFuZCBGcmVlQlNEIChyZXBvcnQKKwkgIGJ5IFJvbmctRW4gRmFuLCBjZjogMjAxMzA3MjcpLgorCisyMDEzMDkwNworCSsgYnVpbGQtZml4ZXMgZm9yIE1TWVMgZm9yIHR3byB0ZXN0LXByb2dyYW1zIChwYXRjaGVzIGJ5IFJheSBEb25uZWxseSwKKwkgIEFsZXhleSBQYXZsb3YpLgorCSsgcmV2ZXJ0IGNoYW5nZSB0byB0d28gb2YgdGhlIGRwa2cgZm9ybWF0IGZpbGVzLCB0byB3b3JrIHdpdGggZHBrZworCSAgYmVmb3JlL2FmdGVyIERlYmlhbiAjNzAwMTc3LgorCSsgZml4IGdjYyAtV2NvbnZlcnNpb24gd2FybmluZyBpbiB3YXR0cl9nZXQoKSBtYWNyby4KKwkrIGFkZCBtc3lzIGFuZCBtc3lzZGxsIHRvIGtub3duIGhvc3QvY29uZmlndXJhdGlvbiB0eXBlcyAocGF0Y2ggYnkKKwkgIEFsZXhleSBQYXZsb3YpLgorCSsgbW9kaWZ5IENGX1JQQVRIX0hBQ0sgY29uZmlndXJlIG1hY3JvIHRvIG5vdCByZWx5IHVwb24gIi11IiBvcHRpb24KKwkgIG9mIHNvcnQsIGltcHJvdmluZyBwb3J0YWJpbGl0eS4KKwkrIG1pbm9yIGltcHJvdmVtZW50cyBmb3IgdGVzdC1wcm9ncmFtcyBmcm9tIHJldmlld2luZyBTb2xhcmlzIHBvcnQuCisJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViIGZyb20KKwkJaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvY29uZmlnLmdpdAorCisyMDEzMDgzMQorCSsgbW9kaWZ5IHRlc3QvbmN1cnNlcy5jIGIvQiB0ZXN0cyB0byBkaXNwbGF5IGxpbmVzIG9ubHkgZm9yIHRoZQorCSAgYXR0cmlidXRlcyB3aGljaCBhIGdpdmVuIHRlcm1pbmFsIHN1cHBvcnRzLCB0byBtYWtlIHJvb20gZm9yIGFuCisJICBpdGFsaWNzIHRlc3QuCisJKyBjb21wbGV0ZWQgbmN2IHRhYmxlIGluIHRlcm1pbmZvLnRhaWw7IGl0IGRpZCBub3QgbGlzdCB0aGUgd2lkZQorCSAgY2hhcmFjdGVyIGNvZGVzIGxpc3RlZCBpbiBYL09wZW4gQ3Vyc2VzIGlzc3VlIDcuCisJKyBhZGQgQV9JVEFMSUMgZXh0ZW5zaW9uIChwcm9tcHRlZCBieSBkaXNjdXNzaW9uIHdpdGggRWdtb250IEtvYmxpbmdlcikuCisKKzIwMTMwODI0CisJKyBmaXggc29tZSBnY2MgNC44IC1XY29udmVyc2lvbiB3YXJuaW5ncy4KKwkrIGNoYW5nZSBmb3JtYXQgb2YgZHBrZyB0ZXN0LXNjcmlwdHMgdG8gcXVpbHRlZCB0byB3b3JrIGFyb3VuZCBidWcKKwkgIGludHJvZHVjZWQgYnkgRGViaWFuICM3MDAxNzcuCisJKyBkaXNjYXJkIGNhY2hlZCBrZXluYW1lKCkgdmFsdWVzIGlmIG1ldGEoKSBpcyBjaGFuZ2VkIGFmdGVyIGEgdmFsdWUKKwkgIHdhcyBjYWNoZWQgdXNpbmcgKHJlcG9ydCBieSBLdXJiYW4gTWFsbGFjaGlldikuCisKKzIwMTMwODE2CisJKyBhZGQgY2hlY2tzIGluIHRpYyB0byB3YXJuIGFib3V0IHRlcm1pbmFscyB3aGljaCBsYWNrIGN1cnNvcgorCSAgYWRkcmVzc2luZywgY2FwYWJpbGl0aWVzIG9yIGhhdmluZyB0aG9zZSwgYXJlIG1hcmtlZCBhcyBoYXJkX2NvcHkgb3IKKwkgIGdlbmVyaWNfdHlwZS4KKwkrIHVzZSAtLXdpdGhvdXQtcHJvZ3MgaW4gbWluZ3ctbmN1cnNlcyBycG0uCisJKyBzcGxpdCBvdXQgX25jX2luaXRfdGVybXR5cGUoKSBmcm9tIGFsbG9jX2VudHJ5LmMgdG8gdXNlIGluIE1pbkdXCisJICBwb3J0IHdoZW4gdGljIGFuZCBvdGhlciBwcm9ncmFtcyBhcmUgbm90IG5lZWRlZC4KKworMjAxMzA4MDUKKwkrIG1pbm9yIGZpeGVzIHRvIHRoZSAtLWRpc2FibGUtb3ZlcndyaXRlIGxvZ2ljLCB0byBlbnN1cmUgdGhhdCB0aGUKKwkgIGNvbmZpZ3VyZWQgJChpbmNsdWRlZGlyKSBpcyBub3QgY2FuY2VsbGVkIGJ5IHRoZSBtaW5nd3h4LWZpbGVzeXN0ZW0KKwkgIHJwbSBtYWNyb3MuCisJKyBhZGQgLS1kaXNhYmxlLWRiLWluc3RhbGwgY29uZmlndXJlIG9wdGlvbiwgdG8gc2ltcGxpZnkgYnVpbGRpbmcKKwkgIGNyb3NzLWNvbXBpbGUgc3VwcG9ydCBwYWNrYWdlcy4KKwkrIGFkZCBtaW5ndy1uY3Vyc2VzLnNwZWMgZmlsZSwgZm9yIHRlc3RpbmcgY3Jvc3MtY29tcGlsZXMuCisKKzIwMTMwNzI3CisJKyBpbXByb3ZlIGNvbmZpZ3VyZSBtYWNyb3MgZnJvbSBvbmdvaW5nIHdvcmsgb24gY2RrLCBkaWFsb2csIHh0ZXJtOgorCSAgKyBDRl9BRERfTElCX0FGVEVSIC0gZml4IGEgcHJvYmxlbSB3aXRoIC1XbCBvcHRpb25zCisJICArIENGX1JQQVRIX0hBQ0sgLSBhZGQgbWlzc2luZyByZXN1bHQtbWVzc2FnZQorCSAgKyBDRl9TSEFSRURfT1BUUyAtIG1vZGlmeSB0byB1c2UgJHJlbF9idWlsZGRpciBpbiBjeWd3aW4gYW5kIG1pbmd3CisJICAgIGRsbCBzeW1ib2xzICh3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbikgcmF0aGVyIHRoYW4gZXhwbGljaXQgIi4uLyIuCisJICArIENGX1NIQVJFRF9PUFRTIC0gbW9kaWZ5IE5ldEJTRCBhbmQgRHJhZ29uRmx5IHN5bWJvbHMgdG8gdXNlICR7Q0N9CisJICAgIHJhdGhlciB0aGFuICR7TER9IHRvIGltcHJvdmUgcnBhdGggc3VwcG9ydC4KKwkgICsgQ0ZfU0hBUkVEX09QVFMgLSBhZGQgYSBzeW1ib2wgdG8gZGVub3RlIHRoZSB0ZW1wb3JhcnkgZmlsZXMgdGhhdAorCSAgICBhcmUgY3JlYXRlZCBieSB0aGUgbWFjcm8sIHRvIHNpbXBsaWZ5IGNsZWFuLXJ1bGVzLgorCSAgKyBDRl9YX0FUSEVOQSAtIHRyaW0gZXh0cmEgbGlicmFyaWVzIHRvIHdvcmsgd2l0aCAtV2wsLS1hcy1uZWVkZWQKKwkrIGZpeCBhIHJlZ3Jlc3Npb24gaW4gaGFzaGVkLWRhdGFiYXNlIHN1cHBvcnQgZm9yIE5ldEJTRCwgd2hpY2ggdXNlcworCSAgdGhlIGtleS1zaXplIGRpZmZlcmVudGx5IGZyb20gb3RoZXIgaW1wbGVtZW50YXRpb25zIChjZjogMjAxMjEyMjkpLgorCisyMDEzMDcyMAorCSsgZnVydGhlciBpbXByb3ZlbWVudHMgZm9yIHNldHVwdGVybSBtYW5wYWdlLCBjbGFyaWZ5aW5nIHRoZQorCSAgaW5pdGlhbGl6YXRpb24gb2YgY3VyX3Rlcm0uCisKKzIwMTMwNzEzCisJKyBpbXByb3ZlIG1hbnBhZ2VzIGZvciBpbml0c2NyIGFuZCBzZXR1cHRlcm0uCisJKyBtaW5vciBjb21waWxlci13YXJuaW5nIGZpeGVzCisKKzIwMTMwNzA2CisJKyBhZGQgZmFsbGJhY2sgZGVmcyBmb3IgPGludHR5cGVzLmg+IGFuZCA8c3RkaW50Lmg+IChjZjogMjAxMjAyMjUpLgorCSsgYWRkIGNoZWNrIGZvciBzaXplIG9mIHdjaGFyX3QsIHVzZSB0aGF0IHRvIHN1cHByZXNzIGEgY2h1bmsgb2YKKwkgIHdjd2lkdGguaCBpbiBNaW5HVyBwb3J0LgorCSsgcXVpZXQgbGlua2VyIHdhcm5pbmdzIGZvciBNaW5HVyBjcm9zcy1jb21waWxlIHdpdGggZGxsJ3MgdXNpbmcgdGhlCisJICAtLWVuYWJsZS1hdXRvLWltcG9ydCBmbGFnLgorCSsgYWRkIG5jdXJzZXMubWFwIHJ1bGUgdG8gbmN1cnNlcy9NYWtlZmlsZSB0byBoZWxwIGRpYWdub3NlIHN5bWJvbAorCSAgdGFibGUgaXNzdWVzLgorCisyMDEzMDYyMgorCSsgbW9kaWZ5IHRoZSBjbGVhciBwcm9ncmFtIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBFMyBleHRlbmRlZAorCSAgY2FwYWJpbGl0eSB0byBjbGVhciB0aGUgdGVybWluYWwncyBzY3JvbGxiYWNrIGJ1ZmZlciAocGF0Y2ggYnkKKwkgIE1pcm9zbGF2IExpY2h2YXIsIFJlZGhhdCAjODE1NzkwKS4KKwkrIGNsYXJpZnkgaW4gcmVzaXpldGVybSBtYW5wYWdlIHRoYXQgTElORVMgYW5kIENPTFMgYXJlIHVwZGF0ZWQuCisJKyB1cGRhdGVkIGFuc2kgZXhhbXBsZSBpbiB0ZXJtaW5mby50YWlsLCBjb3JyZWN0IG1pc29yZGVyZWQgZXhhbXBsZQorCSAgb2Ygc2dyLgorCSsgZml4IG90aGVyIGRvY2xpZnRlciB3YXJuaW5ncyBmb3IgbWFucGFnZXMKKwkrIHJlbW92ZSB1bm5lY2Vzc2FyeSAiLnRhIiBpbiB0ZXJtaW5mby50YWlsLCBhZGQgbWlzc2luZyAiLmZpIgorCSAgKHBhdGNoIGJ5IEVyaWMgUmF5bW9uZCkuCisKKzIwMTMwNjE1CisJKyBtaW5vciBjaGFuZ2VzIHRvIHNvbWUgY29uZmlndXJlIG1hY3JvcyB0byBtYWtlIHRoZW0gbW9yZSByZXVzYWJsZS4KKwkrIGZpeGVzIGZvciB0YWJzIHByb2dyYW0gKHByb21wdGVkIGJ5IHJlcG9ydCBieSBOaWNrIEFuZHJpaykuCisJICArIGNvcnJlY3RlZCBsb2dpYyBpbiBjb21tYW5kLWxpbmUgcGFyc2luZyBvZiAtYSBhbmQgLWMgcHJlZGVmaW5lZAorCSAgICB0YWItbGlzdHMgb3B0aW9ucy4KKwkgICsgYWxsb3cgIi0wIiBhbmQgIi04IiBvcHRpb25zIHRvIGJlIGNvbWJpbmVkIHdpdGggb3RoZXJzLCBlLmcuLCItMGQiLgorCSAgKyBtYWtlIHdhcm5pbmcgbWVzc2FnZXMgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIG90aGVyIHV0aWxpdGllcyBieQorCSAgICBub3QgcHJpbnRpbmcgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIHByb2dyYW0uCisJICArIGFkZCAtViBvcHRpb24gZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgdXRpbGl0aWVzLgorCSsgZml4IG9mZi1ieS1vbmUgaW4gY29sdW1ucyBmb3IgdGFicyBwcm9ncmFtIHdoZW4gcHJvY2Vzc2luZyBhbiBvcHRpb24KKwkgIHN1Y2ggYXMgIi01IiAocGF0Y2ggYnkgTmljayBBbmRyaWspLgorCisyMDEzMDYwOAorCSsgYWRkIHRvIHRlc3QvZGVtb19mb3Jtcy5jIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBtZW51LWhvb2tzIGFzIHdlbGwKKwkgIGFzIHNob3dpbmcgaG93IHRoZSBtZW51IGl0ZW0gdXNlci1kYXRhIGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBjYWxsYmFjaworCSAgZnVuY3Rpb24gcG9pbnRlci4KKwkrIGFkZCB0ZXN0L2RvdHNfdGVybWNhcC5jCisJKyByZW1vdmUgc2V0dXB0ZXJtIGNhbGwgZnJvbSB0ZXN0L2RlbW9fdGVybWNhcC5jCisJKyBidWlsZC1maXggaWYgLS1kaXNhYmxlLWV4dC1mdW5jcyBjb25maWd1cmUgb3B0aW9uIGlzIHVzZWQuCisJKyBtb2RpZmllZCB0ZXN0L2VkaXRfZmllbGQuYyBhbmQgdGVzdC9kZW1vX2Zvcm1zLmMgdG8gbW92ZSB0aGUgbGVuZ3RocworCSAgaW50byBhIHVzZXItZGF0YSBzdHJ1Y3R1cmUsIGtlZXBpbmcgdGhlIG9yaWdpbmFsIHN0cmluZyBmb3IgbGF0ZXIKKwkgIGV4cGFuc2lvbiB0byBmcmVlLWZvcm1hdCBpbnB1dC9vdXQgZGVtby4KKwkrIG1vZGlmaWVkIHRlc3QvZGVtb19mb3Jtcy5jIHRvIGxvYWQgZGF0YSBmcm9tIGZpbGUuCisJKyBhZGRlZCBub3RlIHRvIGNsYXJpZnkgVGVybWluYWwuYXBwJ3Mgbm9uLWVtdWxhdGlvbiBvZiB0aGUgdmFyaW91cworCSAgdGVybWluYWwgdHlwZXMgbGlzdGVkIGluIHRoZSBwcmVmZXJlbmNlcyBkaWFsb2cgLVRECisJKyBmaXggcmVncmVzc2lvbiBpbiBlcnJvci1yZXBvcnRpbmcgaW4gbGliX3NldHVwLmMgKERlYmlhbiAjNzExMTM0LAorCSAgY2Y6IDIwMTIxMTE3KS4KKwkrIGJ1aWxkLWZpeCBmb3IgYSBjYXNlIHdoZXJlIC0tZW5hYmxlLWJyb2tlbl9saW5rZXIgYW5kCisJICAtLWVuYWJsZS1yZWVudHJhbnQgb3B0aW9ucyBhcmUgY29tYmluZWQgKHJlcG9ydCBieSBHZW9yZ2UgUiBHb2ZmZSkuCisKKzIwMTMwNTI1CisJKyBtb2RpZnkgbXZjdXIoKSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGludGVybmFsIHVzZSBieSB0aGUgbmN1cnNlcworCSAgbGlicmFyeSwgYW5kIGV4dGVybmFsIGNhbGxlcnMsIHByZXZlbnRpbmcgaXQgZnJvbSByZWFkaW5nIHRoZSBjb250ZW50CisJICBvZiB0aGUgc2NyZWVuIHdoaWNoIGlzIG9ubHkgbm9uYmxhbmsgd2hlbiBjdXJzZXMgY2FsbHMgaGF2ZSB1cGRhdGVkCisJICBpdC4gIFRoaXMgbWFrZXMgdGVzdC9kb3RzX212Y3VyLmMgYXZvaWQgcGFpbnRpbmcgY29sb3JlZCBjZWxscyBpbgorCSAgdGhlIGxlZnQgbWFyZ2luIG9mIHRoZSBkaXNwbGF5LgorCSsgbWlub3IgZml4IHRvIHRlc3QvZG90c19tdmN1ci5jCisJKyBtb3ZlIGNvbmZpZ3VyZWQgc3ltYm9scyBVU0VfREFUQUJBU0UgYW5kIFVTRV9URVJNQ0FQIHRvIHRlcm0uaCBhcworCSAgTkNVUlNFU19VU0VfREFUQUJBU0UgYW5kIE5DVVJTRVNfVVNFX1RFUk1DQVAgdG8gYWxsb3cgY29uc2lzdGVudAorCSAgdXNlIG9mIHRoZXNlIHN5bWJvbHMgaW4gdGVybV9lbnRyeS5oCisKKzIwMTMwNTE4CisJKyBjb3JyZWN0ZWQgaWZkZWZzIGluIHRlc3QvdGVzdGN1cnMuYyB0byBhbGxvdyBjb21wYXJpc29uIG9mIG1vdXNlCisJICBpbnRlcmZhY2UgdmVyc3VzIHBkY3Vyc2VzIChjZjogMjAxMzAzMTYpLgorCSsgYWRkIHBvdygpIHRvIGNvbmZpZ3VyZS1jaGVjayBmb3IgbWF0aCBsaWJyYXJ5LCBuZWVkZWQgc2luY2UKKwkgIDIwMTIxMjA4IGZvciB0ZXN0L2hhbm9pIChEZWJpYW4gIzcwODA1NikuCisJKyByZWdlbmVyYXRlZCBodG1sIG1hbnBhZ2VzLgorCSsgdXBkYXRlIGRvY3R5cGUgdXNlZCBmb3IgaHRtbCBkb2N1bWVudGF0aW9uLgorCisyMDEzMDUxMQorCSsgbW92ZSBuc3Rlcm0tcmVsYXRlZCBlbnRyaWVzIG91dCBvZiAib2Jzb2xldGUiIHNlY3Rpb24gdG8gbW9yZQorCSAgcGxhdXNpYmxlICJhbnNpIGNvbnNvbGVzIiAtVEQKKwkrIGFkZGl0aW9uYWwgY2xlYW51cCBvZiB0YWJsZS1vZi1jb250ZW50cyBieSByZW9yZGVyaW5nIC1URAorCSsgcmV2aXNlIGZpeCBmb3IgY2hlY2sgZm9yIDgtYml0IHZhbHVlIGluIF9uY19pbnNlcnRfY2goKTsgcHJpb3IgZml4CisJICBwcmV2ZW50ZWQgaW5zZXJ0cyB3aGVuIHZpZGVvIGF0dHJpYnV0ZXMgd2VyZSBhdHRhY2hlZCB0byB0aGUgZGF0YQorCSAgKGNmOiAyMDEyMTIxNSkgKFJlZGhhdCAjOTU5NTM0KS4KKworMjAxMzA1MDQKKwkrIGZpeGVzIGZvciBpc3N1ZXMgZm91bmQgYnkgQ292ZXJpdHk6CisJICArIGNvcnJlY3QgRk5LRVkoKSBtYWNybyBpbiBwcm9ncy9kdW1wX2VudHJ5LmMsIGFsbG93aW5nIGtmMTEta2Y2MyB0bworCSAgICBkaXNwbGF5IHdoZW4gaW5mb2NtcCdzIC1SIG9wdGlvbiBpcyB1c2VkIGZvciBIUCBvciBBSVggc3Vic2V0cy4KKwkgICsgZml4IGRlYWQtY29kZSBpc3N1ZSB3aXRoIHRlc3QvbW92ZXdpbmRvdy5jCisJICArIGltcHJvdmUgbGltaXRlZC1jaGVja2luZyBpbiBfbmNfcmVhZF90ZXJtdHlwZSgpLgorCisyMDEzMDQyNworCSsgZml4IGNsYW5nIDMuMiB3YXJuaW5nIGluIHByb2dzL2R1bXBfZW50cnkuYworCSsgZHJvcCBBQ19UWVBFX1NJR05BTCBjaGVjazsgbmN1cnNlcyByZWxpZXMgb24gYzg5IGFuZCBsYXRlci4KKworMjAxMzA0MTMKKwkrIGFkZCBNaW5HVyB0byBjYXNlcyB3aGVyZSBuY3Vyc2VzIGluc3RhbGxzIGJ5IGRlZmF1bHQgaW50byAvdXNyCisJICAocHJvbXB0ZWQgYnkgZGlzY3Vzc2lvbiB3aXRoIERhbmllbCBTaWx2YSBGZXJyZWlyYSkuCisJKyBhZGQgLUQgb3B0aW9uIHRvIGluZm9jbXAncyB1c2FnZS1tZXNzYWdlIChwYXRjaCBieSBNaXJvc2xhdiBMaWNodmFyKS4KKwkrIGFkZCBhIG1pc3NpbmcgJ2ludCcgdHlwZSBmb3IgbWFpbiBmdW5jdGlvbiBpbiBjb25maWd1cmUgY2hlY2sgZm9yCisJICB0eXBlIG9mIGJvb2wgdmFyaWFibGUsIHRvIHdvcmsgd2l0aCBjbGFuZyAzLjIgKHJlcG9ydCBieSBEbWl0cmkKKwkgIEdyaWJlbmtvKS4KKwkrIGltcHJvdmUgY29uZmlndXJlIGNoZWNrIGZvciBzdGF0aWNfY2FzdCwgdG8gd29yayB3aXRoIGNsYW5nIDMuMgorCSAgKHJlcG9ydCBieSBEbWl0cmkgR3JpYmVua28pLgorCSsgcmUtb3JkZXIgcnVsZSBmb3IgZGVtby5vIGFuZCBtYWNyb3MgZGVmaW5pbmcgaGVhZGVyIGRlcGVuZGVuY2llcyBpbgorCSAgYysrL01ha2VmaWxlLmluIHRvIGFjY29tbW9kYXRlIGdtYWtlIChyZXBvcnQgYnkgRG1pdHJpIEdyaWJlbmtvKS4KKworMjAxMzA0MDYKKwkrIGltcHJvdmUgcGFyYW1ldGVyIGNoZWNraW5nIGluIGNvcHl3aW4oKS4KKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IHRvIHdvcmsgYXJvdW5kIE9TIFgncyAibGlidG9vbCIgcHJvZ3JhbSwgdG8KKwkgIGNob29zZSBnbGlidG9vbCBpbnN0ZWFkLiAgQXQgdGhlIHNhbWUgdGltZSwgY2hhbmNlIHRoZSBhdXRvY29uZiBtYWNybworCSAgdG8gbG9vayBmb3IgYSAidG9vbCIgcmF0aGVyIHRoYW4gYSAicHJvZyIsIHRvIGhlbHAgd2l0aCBwb3RlbnRpYWwgdXNlCisJICBpbiBjcm9zcy1jb21waWxpbmcuCisJKyBzZXBhcmF0ZSB0aGUgcnBhdGggdXNhZ2UgZm9yIGMrKyBsaWJyYXJ5IGZyb20gZGVtbyBwcm9ncmFtCisJICAoUmVkaGF0ICM5MTE1NDApCisJKyB1cGRhdGUvY29ycmVjdCBoZWFkZXItZGVwZW5kZW5jaWVzIGluIGMrKyBtYWtlZmlsZSAocmVwb3J0IGJ5IFdlcm5lcgorCSAgRmluaykuCisJKyBhZGQgLS13aXRoLWN4eC1zaGFyZWQgdG8gZHBrZy1zY3JpcHQsIGFzIGRvbmUgZm9yIHJwbS1zY3JpcHQuCisKKzIwMTMwMzI0CisJKyBidWlsZC1maXggZm9yIGxpYnRvb2wgY29uZmlndXJhdGlvbiAocmVwb3J0cyBieSBEYW5pZWwgU2lsdmEgRmVycmVpcmEKKwkgIGFuZCBSb3VtZW4gUGV0cm92KS4KKworMjAxMzAzMjMKKwkrIGJ1aWxkLWZpeCBmb3IgT1MgWCwgdG8gaGFuZGxlIGNoYW5nZXMgZm9yIC0td2l0aC1jeHgtc2hhcmVkIGZlYXR1cmUKKwkgIChyZXBvcnQgYnkgQ2hyaXN0aWFuIEViZXJ0KS4KKwkrIGNoYW5nZSBpbml0aWFsaXphdGlvbiBmb3IgdnQyMjAsIHNpbWlsYXIgZW50cmllcyBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggY3Vyc29yLWtleSBzdHJpbmdzIChOZXRCU0QgIzQ3Njc0KSAtVEQKKwkrIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIHRvIGxpbnV4LTE2Y29sb3IgKEJlbmphbWluIFNpdHRsZXIpCisKKzIwMTMwMzE2CisJKyBhZGRpdGlvbmFsIGZpeCBmb3IgdGljLmMsIHRvIGFsbG9jYXRlIG1pc3NpbmcgYnVmZmVyIHNwYWNlLgorCSsgZWxpbWluYXRlIGNvbmZpZ3VyZS1zY3JpcHQgd2FybmluZ3MgZm9yIGdlbi1wa2djb25maWcuaW4KKwkrIGNvcnJlY3QgdHlwbyBpbiBzZ3Igc3RyaW5nIGZvciBzdW4tY29sb3IsCisJICBhZGQgYm9sZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzZ3IsCisJICBjaGFuZ2Ugc21zbyBmb3IgY29uc2lzdGVuY3kgd2l0aCBzZ3IgLVRECisJKyBjb3JyZWN0IHR5cG8gaW4gc2dyIHN0cmluZyBmb3IgdGVybWluYXRvciAtVEQKKwkrIGFkZCBibGluayB0byB0aGUgYXR0cmlidXRlcyBtYXNrZWQgYnkgbmN2IGluIGxpbnV4LTE2Y29sb3IgKHJlcG9ydAorCSAgYnkgQmVuamFtaW4gU2l0dGxlcikKKwkrIGltcHJvdmUgd2FybmluZyBtZXNzYWdlIGZyb20gcG9zdC1sb2FkIGNoZWNraW5nIGZvciBtaXNzaW5nICIlPyIKKwkgIG9wZXJhdG9yIGJ5IHRpYy9pbmZvY21wIGJ5IHNob3dpbmcgdGhlIGVudHJ5IG5hbWUgYW5kIGNhcGFiaWxpdHkuCisJKyBtaW5vciBmb3JtYXR0aW5nIGltcHJvdmVtZW50IHRvIHRpYy9pbmZvY21wIC1mIG9wdGlvbiB0byBlbnN1cmUKKwkgIGxpbmUgc3BsaXQgYWZ0ZXIgIiU7Ii4KKwkrIGFtZW5kIHNjcmlwdGluZyBmb3IgLS13aXRoLWN4eC1zaGFyZWQgb3B0aW9uIHRvIGhhbmRsZSB0aGUgZGVidWcKKwkgIGxpYnJhcnkgImxpYm5jdXJzZXMrK19nLmEiIChyZXBvcnQgYnkgU3ZlbiBKb2FjaGltKS4KKworMjAxMzAzMDkKKwkrIGFtZW5kIGNoYW5nZSB0byB0b2UuYyBmb3IgcmVhZGluZyBmcm9tIC9kZXYvemVybywgdG8gZW5zdXJlIHRoYXQKKwkgIHRoZXJlIGlzIGEgYnVmZmVyIGZvciB0aGUgdGVtcG9yYXJ5IGZpbGVuYW1lIChjZjogMjAxMjAzMjQpLgorCSsgcmVnZW5lcmF0ZWQgaHRtbCBtYW5wYWdlcy4KKwkrIGZpeCB0eXBvIGluIHRlcm1pbmZvLmhlYWQgKHJlcG9ydCBieSBTdmVuIEpvYWNoaW0sIGNmOiAyMDEzMDMwMikuCisJKyB1cGRhdGVkIHNvbWUgYXV0b2NvbmYgbWFjcm9zOgorCSAgKyBDRl9BQ1ZFUlNJT05fQ0hFQ0ssIGZyb20gYnlhY2MgMS45IDIwMTMwMzA0CisJICArIENGX0lOVEVMX0NPTVBJTEVSLCBDRl9YT1BFTl9TT1VSQ0UgZnJvbSBsdWl0IDIuMC0yMDEzMDIxNworCSsgYWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWN4eC1zaGFyZWQgdG8gcGVybWl0IGJ1aWxkaW5nCisJICBsaWJuY3Vyc2VzKysgYXMgYSBzaGFyZWQgbGlicmFyeSB3aGVuIHVzaW5nIGcrKywgZS5nLiwgdGhlIHNhbWUKKwkgIGxpbWl0YXRpb25zIGFzIGxpYnRvb2wgYnV0IGJldHRlciBpbnRlZ3JhdGVkIHdpdGggdGhlIHVzdWFsIGJ1aWxkCisJICBjb25maWd1cmF0aW9uIChSZWRoYXQgIzkxMTU0MCkuCisJKyBtb2RpZnkgTUtrZXlfZGVmcy5zaCB0byBmaWx0ZXIgb3V0IGJ1aWxkLXBhdGggd2hpY2ggd2FzIHVubmVjZXNzYXJpbHkKKwkgIHNob3duIGluIGN1cnNlcy5oIChEZWJpYW4gIzY4OTEzMSkuCisKKzIwMTMwMzAyCisJKyBhZGQgc2VjdGlvbiB0byB0ZXJtaW5mbyBtYW5wYWdlIGRpc2N1c3NpbmcgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcy4KKwkrIHVwZGF0ZSBtYW5wYWdlIGRlc2NyaXB0aW9uIG9mIE5DVVJTRVNfTk9fU0VUQlVGLCBleHBsYWluaW5nIHdoeSBpdAorCSAgaXMgb2Jzb2xldGUuCisJKyBhZGQgYSBjaGVjayBpbiB3YWRkY2hfbm9zeW5jKCkgdG8gZW5zdXJlIHRoYXQgdGFiIGNoYXJhY3RlcnMgYXJlCisJICB0cmVhdGVkIGFzIGNvbnRyb2wgY2hhcmFjdGVyczsgc29tZSBicm9rZW4gbG9jYWxlcyBjbGFpbSB0aGV5IGFyZQorCSAgcHJpbnRhYmxlLgorCSsgYWRkIHNvbWUgdHJhY2VzIHRvIHRoZSBXaW5kb3dzIGNvbnNvbGUgZHJpdmVyLgorCSsgaW5pdGlhbGl6ZSBhIHRlbXBvcmFyeSBhcnJheSBpbiBfbmNfbWJ0b3djLCBuZWVkZWQgZm9yIHNvbWUgY2FzZXMKKwkgIG9mIHJhdyBpbnB1dCBpbiBNaW5HVyBwb3J0LgorCisyMDEzMDIxOAorCSsgY29ycmVjdCBpZmRlZiBvbiBjaGFuZ2UgdG8gbGliX3R3YWl0LmMgKHJlcG9ydCBieSAgV2VybmVyIEZpbmspLgorCSsgdXBkYXRlIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YgorCisyMDEzMDIxNgorCSsgbW9kaWZ5IHRlc3QvdGVzdGN1cnMuYyB0byB3b3JrIHdpdGggbW91c2UgZm9yIG5jdXJzZXMgYXMgaXQgZG9lcyBmb3IKKwkgIHBkY3Vyc2VzLgorCSsgbW9kaWZ5IHRlc3Qva25pZ2h0LmMgdG8gd29yayB3aXRoIG1vdXNlIGZvciBwZGN1cnNlcyBhcyBpdCBkb2VzIGZvcgorCSAgbmN1cnNlcy4KKwkrIG1vZGlmeSBpbnRlcm5hbCByZWN1cnNpb24gaW4gd2dldGNoKCkgd2hpY2ggaGFuZGxlcyBjb29rZWQgbW9kZSB0bworCSAgY2hlY2sgaWYgdGhlIGNhbGwgdG8gd2dldG5zdHIoKSByZXR1cm5lZCBhbiBlcnJvci4gIFRoaXMgY2FuIGhhcHBlbgorCSAgd2hlbiBib3RoIG5vY2JyZWFrKCkgYW5kIG5vZGVsYXkoKSBhcmUgc2V0LCBmb3IgaW5zdGFuY2UgKHJlcG9ydCBieQorCSAgTmlscyBDaHJpc3RvcGhlciBCcmF1c2UpIChjZjogOTYwNDE4KS4KKwkrIGZpeGVzIGZvciBpc3N1ZXMgZm91bmQgYnkgQ292ZXJpdHk6CisJICArIGFkZCBhIGNoZWNrIGZvciB2YWxpZCBwb3NpdGlvbiBpbiBDbGVhclRvRU9TKCkKKwkgICsgZml4IGluIGxpYl90d2FpdC5jIHdoZW4gLS1lbmFibGUtd2dldGNoLWV2ZW50cyBpcyB1c2VkLCBwb2ludGVyCisJICAgIHVzZSBhZnRlciBmcmVlLgorCSAgKyBpbXByb3ZlIGEgbGltaXQtY2hlY2sgaW4gbWFrZV9oYXNoLmMKKwkgICsgZml4IGEgbWVtb3J5IGxlYWsgaW4gaGFzaGVkX2RiLmMKKworMjAxMzAyMDkKKwkrIG1vZGlmeSB0ZXN0L2NvbmZpZ3VyZSBzY3JpcHQgdG8gbWFrZSBpdCBzaW1wbGVyIHRvIG92ZXJyaWRlIG5hbWVzCisJICBvZiBjdXJzZXMtcmVsYXRlZCBsaWJyYXJpZXMsIHRvIGhlbHAgd2l0aCBsaW5raW5nIHdpdGggcGRjdXJzZXMgaW4KKwkgIE1pbkdXIGVudmlyb25tZW50LgorCSsgaWYgdGhlIC0td2l0aC10ZXJtaW5mby1kaXJzIGNvbmZpZ3VyZSBvcHRpb24gaXMgbm90IHVzZWQsIHRoZXJlIGlzCisJICBubyBjb3JyZXNwb25kaW5nIGNvbXBpbGVkLWluIHZhbHVlIGZvciB0aGF0LiAgRmlsbCBpbiAibm8gZGVmYXVsdAorCSAgdmFsdWUiIGZvciB0aGF0IHBhcnQgb2YgdGhlIG1hbnBhZ2Ugc3Vic3RpdHV0aW9uLgorCisyMDEzMDIwMgorCSsgY29ycmVjdCBpbml0aWFsaXphdGlvbiBpbiBrbmlnaHQuYyB3aGljaCBsZXQgaXQgb2NjYXNpb25hbGx5IG1ha2UKKwkgIGFuIGluY29ycmVjdCBtb3ZlIChjZjogMjAwMDEwMjgpLgorCSsgaW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIHRoZSB0ZXJtaW5mby90ZXJtY2FwIHNlYXJjaCBwYXRoLgorCisyMDEzMDEyNgorCSsgZnVydGhlciBmaXhlcyB0byBtdmN1ciB0byBwYXNzIGNhbGxiYWNrIGZ1bmN0aW9uIChjZjogMjAxMzAxMTIpLAorCSAgbmVlZGVkIHRvIG1ha2UgdGVzdC9kb3RzX212Y3VyIHdvcmsuCisJKyByZWR1Y2UgY2FsbHMgdG8gU2V0Q29uc29sZUFjdGl2ZVNjcmVlbkJ1ZmZlciBpbiB3aW5fZHJpdmVyLmMsIHRvCisJICBoZWxwIHJlZHVjZSBmbGlja2VyLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gb21pdCAiK2IiIGZyb20gbGlua2VyIG9wdGlvbnMgZm9yIHZlcnkKKwkgIG9sZCBIUC1VWCBzeXN0ZW1zIChyZXBvcnQgYnkgRGVubmlzIEdyZXZlbnN0ZWluKQorCSsgYWRkIEhQLVVYIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgRUlMU0VRIG9uIG9sZCBIUC1VWCBzeXN0ZW1zIChwYXRjaAorCSAgYnkgRGVubmlzIEdyZXZlbnN0ZWluKS4KKwkrIHJlc3RvcmUgbWVtbW92ZS9zdHJkdXAgc3VwcG9ydCBmb3IgYW50aXF1ZSBzeXN0ZW1zIChyZXF1ZXN0IGJ5CisJICBEZW5uaXMgR3JldmVuc3RlaW4pLgorCSsgY2hhbmdlICVsIGJlaGF2aW9yIGluIHRwYXJtIHRvIHB1c2ggdGhlIHN0cmluZyBsZW5ndGggb250byB0aGUgc3RhY2sKKwkgIHJhdGhlciB0aGFuIHNhdmluZyB0aGUgZm9ybWF0dGVkIGxlbmd0aCBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyCisJICAocmVwb3J0IGJ5IFJveSBNYXJwbGVzLCBjZjogOTgwNjIwKS4KKworMjAxMzAxMTkKKwkrIGZpeGVzIGZvciBpc3N1ZXMgZm91bmQgYnkgQ292ZXJpdHk6CisJICArIGZpeCBtZW1vcnkgbGVhayBpbiBzYWZlX3NwcmludGYuYworCSAgKyBhZGQgY2hlY2sgZm9yIHJldHVybi12YWx1ZSBpbiB0dHlfdXBkYXRlLmMKKwkgICsgY29ycmVjdCBpbml0aWFsaXphdGlvbiBmb3IgLXMgb3B0aW9uIGluIHRlc3Qvdmlldy5jCisJICArIGFkZCBjaGVjayBmb3IgbnVtZXJpYyBvdmVyZmxvdyBpbiBsaWJfaW5zdHIuYworCSAgKyBpbXByb3ZlIGVycm9yLWNoZWNraW5nIGluIGNvcHl3aW4KKwkrIGFkZCBhZHZpY2UgaW4gaW5mb2NtcCBtYW5wYWdlIGZvciB0ZXJtY2FwIHVzZXJzIChEZWJpYW4gIzY5ODQ2OSkuCisJKyBhZGQgIi15IiBvcHRpb24gdG8gdGVzdC9kZW1vX3Rlcm1jYXAgYW5kIHRlc3QvZGVtb190ZXJtaW5mbyB0bworCSAgZGVtb25zdHJhdGUgYmVoYXZpb3Igd2l0aC93aXRob3V0IGV4dGVuZGVkIGNhcGFiaWxpdGllcy4KKwkrIHVwZGF0ZWQgdGVybWNhcCBtYW5wYWdlIHRvIGRvY3VtZW50IGxlZ2FjeSB0ZXJtY2FwIGJlaGF2aW9yIGZvcgorCSAgbWF0Y2hpbmcgY2FwYWJpbGl0eSBuYW1lcy4KKwkrIG1vZGlmeSBuYW1lLWNvbXBhcmlzb24gZm9yIHRnZXRzdHIsIGV0Yy4sIHRvIGFjY29tbW9kYXRlIGxlZ2FjeQorCSAgYXBwbGljYXRpb25zIGFzIHdlbGwgYXMgdG8gaW1wcm92ZSBjb21wYXRiaWxpdHkgd2l0aCBCU0QgNC4yCisJICB0ZXJtY2FwIGltcGxlbWVudGF0aW9ucyAoRGViaWFuICM2OTgyOTkpIChjZjogOTgwNzI1KS4KKworMjAxMzAxMTIKKwkrIGNvcnJlY3QgcHJvdG90eXBlIGluIG1hbnBhZ2UgZm9yIHZpZF9wdXRzLgorCSsgZHJvcCBuY3Vyc2VzL3R0eS90dHlfZGlzcGxheS5oLCBuY3Vyc2VzL3R0eS90dHlfaW5wdXQuaCwgc2luY2UgdGhleQorCSAgYXJlIHVudXNlZCBpbiB0aGUgY3VycmVudCBkcml2ZXIgbW9kZWwuCisJKyBtb2RpZnkgbXZjdXIgdG8gdXNlIHN0ZG91dCBleGNlcHQgd2hlbiBjYWxsZWQgd2l0aGluIHRoZSBuY3Vyc2VzCisJICBsaWJyYXJ5LgorCSsgbW9kaWZ5IHZpZGF0dHIgYW5kIHZpZF9hdHRyIHRvIHVzZSBzdGRvdXQgYXMgZG9jdW1lbnRlZCBpbiBtYW5wYWdlLgorCSsgYW1lbmQgY2hhbmdlcyBtYWRlIHRvIGJ1ZmZlcmluZyBpbiAyMDEyMDgyNSBzbyB0aGF0IHRoZSBsb3ctbGV2ZWwKKwkgIHB1dHAoKSBjYWxsIHVzZXMgc3Rkb3V0IHJhdGhlciB0aGFuIG5jdXJzZXMnIGludGVybmFsIGJ1ZmZlcmluZy4KKwkgIFRoZSBwdXRwX3NwKCkgY2FsbCBkb2VzIHRoZSBzYW1lLCBmb3IgY29uc2lzdGVuY3kgKFJlZGhhdCAjODkyNjc0KS4KKworMjAxMzAxMDUKKwkrIGFkZCAiLXMiIG9wdGlvbiB0byB0ZXN0L3ZpZXcuYyB0byBhbGxvdyBpdCB0byBzdGFydCBpbiBzaW5nbGUtc3RlcAorCSAgbW9kZSwgcmVkdWNpbmcgc2l6ZSBvZiB0cmFjZSBmaWxlcyB3aGVuIGl0IGlzIHVzZWQgZm9yIGRlYnVnZ2luZworCSAgTWluR1cgY2hhbmdlcy4KKwkrIHJldmVydCBwYXJ0IG9mIDIwMTIxMjIyIGNoYW5nZSB0byB0aW5mb19kcml2ZXIuYworCSsgYWRkIGV4cGVyaW1lbnRhbCBsb2dpYyBpbiB3aW5fZHJpdmVyLmMgdG8gaW1wcm92ZSBvcHRpbWl6YXRpb24gb2YKKwkgIHNjcmVlbiB1cGRhdGVzLiAgVGhpcyBkb2VzIG5vdCB5ZXQgd29yayB3aXRoIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXJzLAorCSAgc28gaXQgaXMgaWZkZWYnZCBvdXQgZm9yIHRoZSBtb21lbnQgKHByb21wdGVkIGJ5IHJlcG9ydCBieSBFcndpbgorCSAgV2F0ZXJsYW5kZXIgcmVnYXJkaW5nIHNjcmVlbiBmbGlja2VyKS4KKworMjAxMjEyMjkKKwkrIGZpeCBjb3Zlcml0eSB3YXJuaW5ncyByZWdhcmRpbmcgY29weWluZyBpbnRvIGZpeGVkLXNpemUgYnVmZmVycy4KKwkrIGFkZCB0aHJvdy1kZWNsYXJhdGlvbnMgaW4gdGhlIGMrKyBiaW5kaW5nIHBlciBDb3Zlcml0eSB3YXJuaW5nLgorCSsgbWlub3IgY2hhbmdlcyB0byBuZXctaXRlbXMgZm9yIGNvbnNpc3RlbnQgcmVmZXJlbmNlIHRvIGJ1Zy1yZXBvcnQKKwkgIG51bWJlcnMuCisKKzIwMTIxMjIyCisJKyBhZGQgKi5kU1lNIGRpcmVjdG9yaWVzIHRvIGNsZWFuLXJ1bGUgaW4gbmN1cnNlcyBkaXJlY3RvcnkgbWFrZWZpbGUsCisJICBmb3IgTWFjIE9TIGJ1aWxkcy4KKwkrIGFkZCBhIGNvbmZpZ3VyZSBjaGVjayBmb3IgZ2NjIG9wdGlvbiAtbm8tY3BwLXByZWNvbXAsIHdoaWNoIGlzIG5vdAorCSAgYXZhaWxhYmxlIGluIGFsbCBNYWMgT1MgWCBjb25maWd1cmF0aW9ucyAocmVwb3J0IGJ5IEFuZHJhcyBTYWxhbW9uLAorCSAgY2Y6IDIwMDExMjA4KS4KKwkrIGltcHJvdmUgMjAwMjEyMjEgd29ya2Fyb3VuZCBmb3IgYnJva2VuIGFjcywgaGFuZGxpbmcgYSBjYXNlIHdoZXJlCisJICB0aGF0IEFDU194eHggY2hhcmFjdGVyIGlzIG5vdCBpbiB0aGUgYWNzYyBzdHJpbmcgYnV0IHRoZXJlIGlzIGEga25vd24KKwkgIHdpZGUtY2hhcmFjdGVyIHdoaWNoIGNhbiBiZSB1c2VkLgorCisyMDEyMTIxNQorCSsgZml4IHNldmVyYWwgd2FybmluZ3MgZnJvbSBjbGFuZyAzLjEgLS1hbmFseXplLCBpbmNsdWRlcyBjb3JyZWN0aW5nCisJICBhIG51bGwtcG9pbnRlciBjaGVjayBpbiBfbmNfbXZjdXJfcmVzdW1lLgorCSsgY29ycmVjdCBkaXNwbGF5IG9mIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXJzIHdpdGggTWluR1cgcG9ydCAocmVwb3J0CisJICBieSBFcndpbiBXYXRlcmxhbmRlcikuCisJKyByZXBsYWNlIE1pbkdXJ3Mgd2NydG9tYigpLCBmaXhpbmcgYSBwcm9ibGVtIHdpdGggX25jX3Zpc2NidWYKKwk+IGZpeGVzIGJhc2VkIG9uIENvdmVyaXR5IHJlcG9ydDoKKwkrIGNvcnJlY3QgY29sb3JpbmcgaW4gdGVzdC9icy5jCisJKyBjb3JyZWN0IGNoZWNrIGZvciA4LWJpdCB2YWx1ZSBpbiBfbmNfaW5zZXJ0X2NoKCkuCisJKyByZW1vdmUgZGVhZCBjb2RlIGluIHByb2dzL3RzZXQuYywgdGVzdC9saW5lZGF0YS5oCisJKyBhZGQgbnVsbC1wb2ludGVyIGNoZWNrcyBpbiBsaWJfdHJhY2Vtc2UuYywgcGFuZWwucHJpdi5oLCBhbmQgc29tZQorCSAgdGVzdC1wcm9ncmFtcy4KKworMjAxMjEyMDgKKwkrIG1vZGlmeSB0ZXN0L2tuaWdodC5jIHRvIHNob3cgdGhlIG51bWJlciBvZiBjaG9pY2VzIHBvc3NpYmxlIGZvcgorCSAgZWFjaCBwb3NpdGlvbiBpbiBhdXRvbW92ZSBvcHRpb24sIGUuZy4sIHRvIGFsbG93IHVzZXIgdG8gZm9sbG93CisJICBXYXJuc2RvcmZmJ3MgcnVsZSB0byBzb2x2ZSB0aGUgcHV6emxlLgorCSsgbW9kaWZ5IHRlc3QvaGFub2kuYyB0byBzaG93IHRoZSBtaW5pbXVtIG51bWJlciBvZiBtb3ZlcyBwb3NzaWJsZSBmb3IKKwkgIHRoZSBnaXZlbiBudW1iZXIgb2YgdGlsZXMgKHByb21wdGVkIGJ5IHBhdGNoIGJ5IEx1Y2FzIEdpb2lhKS4KKwk+IGZpeGVzIGJhc2VkIG9uIENvdmVyaXR5IHJlcG9ydDoKKwkrIHJlbW92ZSBhIGZldyByZWR1bmRhbnQgY2hlY2tzLgorCSsgY29ycmVjdCBsb2dpYyBpbiB0ZXN0L2JzLmMsIHdoZW4gcmFuZG9tbHkgcGxhY2luZyBhIHNwZWNpZmljIHR5cGUgb2YKKwkgIHNoaXAuCisJKyBjaGVjayByZXR1cm4gdmFsdWUgZnJvbSByZW1vdmUvdW5saW5rIGluIHRpYy4KKwkrIGNoZWNrIHJldHVybiB2YWx1ZSBmcm9tIHNzY2FuZiBpbiB0ZXN0L25jdXJzZXMuYworCSsgZml4IGEgbnVsbCBkZXJlZmVyZW5jZSBpbiBjKysvY3Vyc2Vzdy5jYworCSsgZml4IHR3byBpbnN0YW5jZXMgb2YgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgd2hlbiBjb25maWd1cmluZyBmb3IgdGhlCisJICB0ZXJtaW5hbCBkcml2ZXIuCisJKyBjb3JyZWN0IHNjb3BlIG9mIHZhcmlhYmxlIHVzZWQgaW4gU2V0U2FmZU91dGNXcmFwcGVyIG1hY3JvLgorCSsgc2V0IHVtYXNrIHdoZW4gY2FsbGluZyBta3N0ZW1wIGluIHRpYy4KKwkrIGluaXRpYWxpemUgd2JrZ3JuZHNldCgpIHRlbXBvcmFyeSB2YXJpYWJsZSB3aGVuIGV4dGVuZGVkLWNvbG9ycyBhcmUKKwkgIHVzZWQuCisKKzIwMTIxMjAxCisJKyBhbHNvIHJlcGxhY2UgTWluR1cncyB3Y3RvbWIoKSwgZml4aW5nIGEgcHJvYmxlbSB3aXRoIHNldGNjaGFyKCkuCisJKyBtb2RpZnkgdGVzdC92aWV3LmMgdG8gbG9hZCBVVEYtOCB3aGVuIGJ1aWx0IHdpdGggTWluR1cgYnkgdXNpbmcKKwkgIHJlZ3VsYXIgd2luMzIgQVBJIGJlY2F1c2UgdGhlIE1pbkdXIGZ1bmN0aW9ucyBtYmxlbigpIGFuZCBtYnRvd2MoKQorCSAgZG8gbm90IHdvcmsuCisKKzIwMTIxMTI0CisJKyBjb3JyZWN0IG9yZGVyIG9mIGNvbG9yIGluaXRpYWxpemF0aW9uIHZlcnN1cyBkaXNwbGF5IGluIHNvbWUgb2YgdGhlCisJICB0ZXN0LXByb2dyYW1zLCBlLmcuLCB0ZXN0X2FkZHN0ci5jCisJPiBmaXhlcyBiYXNlZCBvbiBDb3Zlcml0eSByZXBvcnQ6CisJKyBkZWxldGUgd2luZG93cyBvbiBleGl0IGZyb20gc29tZSBvZiB0aGUgdGVzdC1wcm9ncmFtcy4KKworMjAxMjExMTcKKwk+IGZpeGVzIGJhc2VkIG9uIENvdmVyaXR5IHJlcG9ydDoKKwkrIGFkZCBtaXNzaW5nIGJyYWNlcyBhcm91bmQgRnJlZUFuZE51bGwgaW4gdHdvIHBsYWNlcy4KKwkrIHZhcmlvdXMgZml4ZXMgaW4gdGVzdC9uY3Vyc2VzLmMKKwkrIGltcHJvdmUgbGltaXQtY2hlY2tzIGluIHRpbmZvL21ha2VfaGFzaC5jLCB0aW5mby9yZWFkX2VudHJ5LmMKKwkrIGNvcnJlY3QgbWFsbG9jIHNpemUgaW4gcHJvZ3MvaW5mb2NtcC5jCisJKyBndWFyZCBhZ2FpbnN0IG5lZ2F0aXZlIGFycmF5IGluZGljZXMgaW4gdGVzdC9rbmlnaHQuYworCSsgZml4IG9mZi1ieS1vbmUgbGltaXQgY2hlY2sgaW4gdGVzdC9jb2xvcl9uYW1lLmgKKwkrIGFkZCBudWxsLXBvaW50ZXIgY2hlY2sgaW4gcHJvZ3MvdGFicy5jLCB0ZXN0L2JzLmMsIHRlc3QvZGVtb19mb3Jtcy5jLAorCSAgdGVzdC9pbmNocy5jCisJKyBmaXggbWVtb3J5LWxlYWsgaW4gdGluZm8vbGliX3NldHVwLmMsIHByb2dzL3RvZS5jLAorCSAgdGVzdC9jbGlwX3ByaW50dy5jLCB0ZXN0L2RlbW9fbWVudXMuYworCSsgZGVsZXRlIHVudXNlZCB3aW5kb3dzIGluIHRlc3QvY2hnYXQuYywgdGVzdC9jbGlwX3ByaW50dy5jLAorCSAgdGVzdC9pbnNkZWxsbi5jLCB0ZXN0L25ld2RlbW8uYyBvbiBlcnJvci1yZXR1cm4uCisKKzIwMTIxMTEwCisJKyBtb2RpZnkgY29uZmlndXJlIG1hY3JvIENGX0lOQ0xVREVfRElSUyB0byBwdXQgJENQUEZMQUdTIGFmdGVyIHRoZQorCSAgbG9jYWwgLUkgaW5jbHVkZSBvcHRpb25zIGluIGNhc2Ugc29tZW9uZSBoYXMgc2V0IGNvbmZsaWN0aW5nIC1JCisJICBvcHRpb25zIGluICRDUFBGTEFHUyAocHJvbXB0ZWQgYnkgcGF0Y2ggZm9yIG5jdXJzZXMvTWFrZWZpbGUuaW4gYnkKKwkgIFZhc3NpbGkgQ291cnpha2lzKS4KKwkrIG1vZGlmeSB0aGUgbmN1cnNlcyotY29uZmlnIHNjcmlwdHMgdG8gZWxpbWluYXRlIHJlbGF0aXZlIHBhdGhzIGZyb20KKwkgIHRoZSBSUEFUSF9MSVNUIHZhcmlhYmxlLCBlLmcuLCAiLi4vbGliIiBhcyB1c2VkIGluIGluc3RhbGxpbmcgc2hhcmVkCisJICBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMuCisKKzIwMTIxMTAyCisJKyByZWFsaWduIHRoZXNlIHJlbGF0ZWQgcGFnZXM6CisJICAgIGN1cnNfYWRkX3djaHN0ci4zeAorCSAgICBjdXJzX2FkZGNoc3RyLjN4CisJICAgIGN1cnNfYWRkc3RyLjN4CisJICAgIGN1cnNfYWRkd3N0ci4zeAorCSAgYW5kIGZpeCBhIGxvbmctYWdvIGVycm9yIGluIGN1cnNfYWRkc3RyLjN4IHdoaWNoIHNhaWQgdGhhdCBhIC0xCisJICBsZW5ndGggcGFyYW1ldGVyIHdvdWxkIG9ubHkgd3JpdGUgYXMgbXVjaCBhcyBmaXQgb250byBvbmUgbGluZQorCSAgKHJlcG9ydCBieSBSZXViZW4gVGhvbWFzKS4KKwkrIHJlbW92ZSBvYnNvbGV0ZSBmYWxsYmFjayBfbmNfbWVtbW92ZSgpIGZvciBtZW1tb3ZlKCkvYmNvcHkoKS4KKwkrIHJlbW92ZSBvYnNvbGV0ZSBmYWxsYmFjayBfbmNfc3RyZHVwKCkgZm9yIHN0cmR1cCgpLgorCSsgY2FuY2VsIGFueSBkZWJ1Zy1ycG0gaW4gcGFja2FnZS9uY3Vyc2VzLnNwZWMKKwkrIHJldmlld2VkIHZ0ZS0yMDEyLCByZXZlcnRlZCBtb3N0IG9mIHRoZSBjaGFuZ2Ugc2luY2UgaXQgd2FzIGluY29ycmVjdAorCSAgYmFzZWQgb24gdGVzdGluZyB3aXRoIHRhY2sgLVRECisJKyB1bi1jYW5jZWwgdGhlIGluaXRjIGluIHZ0ZS0yNTZjb2xvciwgc2luY2UgdGhpcyB3YXMgaW1wbGVtZW50ZWQKKwkgIHN0YXJ0aW5nIHdpdGggdmVyc2lvbiAwLjIwIGluIDIwMDkgLVRECisKKzIwMTIxMDI2CisJKyBpbXByb3ZlIG1hbGxvYy9yZWFsbG9jIGNoZWNraW5nIChwcm9tcHRlZCBieSBkaXNjdXNzaW9uIGluIFJlZGhhdAorCSAgIzg2Njk4OSkuCisJKyBhZGQgbmN1cnNlcyB0ZXN0LXByb2dyYW0gYXMgIm5jdXJzZXM2IiB0byB0aGUgcnBtLSBhbmQgZHBrZy1zY3JpcHRzLgorCSsgdXBkYXRlZCBjb25maWd1cmUgbWFjcm9zIENGX0dDQ19WRVJTSU9OIGFuZCBDRl9XSVRIX1BBVEhMSVNULiAgVGhlCisJICBmaXJzdCBjb3JyZWN0cyBwYXR0ZXJuIHVzZWQgZm9yIE1hYyBPUyBYJ3MgY3VzdG9taXphdGlvbiBvZiBnY2MuCisKKzIwMTIxMDE3CisJKyBmaXggY2hhbmdlIHRvIF9uY19zY3JvbGxfb3B0aW1pemUoKSwgd2hpY2ggaW5jb3JyZWN0bHkgZnJlZWQgbWVtb3J5CisJICAoUmVkaGF0ICM4NjY5ODkpLgorCisyMDEyMTAxMworCSsgYWRkIHZ0ZS0yMDEyLCBnbm9tZS0yMDEyLCBtYWtpbmcgdGhlc2UgdGhlIGRlZmF1bHRzIGZvciB2dGUvZ25vbWUKKwkgIChwYXRjaCBieSBDaHJpc3RpYW4gUGVyc2NoKS4KKworMjAxMjEwMDYKKwkrIGltcHJvdmUgQ0ZfR0NDX1ZFUlNJT04gdG8gd29yayBhcm91bmQgRGViaWFuJ3MgY3VzdG9taXphdGlvbiBvZiBnY2MKKwkgIC0tdmVyc2lvbiBtZXNzYWdlLgorCSsgaW1wcm92ZSBjb25maWd1cmUgbWFjcm9zIGFzIGRvbmUgaW4gYnlhY2M6CisJICArIGRyb3AgMi4xMyBjb21wYXRpYmlsaXR5OyB1c2UgMi41Mi54eHh4IHZlcnNpb24gb25seSBzaW5jZSBFTVggcG9ydAorCSAgICBoYXMgdXNlZCB0aGF0IGZvciBhIHdoaWxlLgorCSAgKyBhZGQgM3JkIHBhcmFtZXRlciB0byBBQ19ERUZJTkUncyB0byBhbGxvdyBhdXRvaGVhZGVyIHRvIHJ1biwgaS5lLiwKKwkgICAgZm9yIGV4cGVyaW1lbnRhbCB1c2UuCisJICArIHJlbW92ZSB1bnVzZWQgY29uZmlndXJlIG1hY3Jvcy4KKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IGFuZCBtYWtlZmlsZXMgdG8gcXVpZXQgbmV3IGF1dG9jb25mIHdhcm5pbmcKKwkgIGZvciBMSUJTX1RPX01BS0UgdmFyaWFibGUuCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBzaG93ICRQQVRIX1NFUEFSQVRPUiB2YXJpYWJsZS4KKwkrIHVwZGF0ZSBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIKKworMjAxMjA5MjIKKwkrIG1vZGlmeSBzZXR1cHRlcm0gdG8gc2V0IGl0cyBjb3B5IG9mIFRFUk0gdG8gInVua25vd24iIGlmIGNvbmZpZ3VyZWQKKwkgIGZvciB0aGUgdGVybWluYWwgZHJpdmVyIGFuZCBURVJNIHdhcyBudWxsIG9yIGVtcHR5LgorCSsgbW9kaWZ5IHRyZWF0bWVudCBvZiBURVJNIHZhcmlhYmxlIGZvciBNaW5HVyBwb3J0IHRvIGFsbG93IGV4cGxpY2l0CisJICB1c2Ugb2YgdGhlIHdpbmRvd3MgY29uc29sZSBkcml2ZXIgYnkgY2hlY2tpbmcgaWYgJFRFUk0gaXMgc2V0IHRvCisJICAiI3dpbjMyY29uIiBvciBhbiBhYmJyZXZpYXRpb24gb2YgdGhhdC4KKwkrIHVuZG8gcmVjZW50IGNoYW5nZSB0byBmYWxsYmFjayBkZWZpbml0aW9uIG9mIHZzc2NhbmYoKSB0byBidWlsZCB3aXRoCisJICBvbGRlciBTb2xhcmlzIGNvbXBpbGVycyAoY2Y6IDIwMTIwNzI4KS4KKworMjAxMjA5MDgKKwkrIGFkZCB0ZXN0LXNjcmVlbnMgdG8gdGVzdC9uY3Vyc2VzIHRvIHNob3cgMjU2LWNoYXJhY3RlcnMgYXQgYSB0aW1lLAorCSAgdG8gaGVscCB3aXRoIE1pbkdXIHBvcnQuCisKKzIwMTIwOTAzCisJKyBzaW1wbGlmeSB2YXJhcmdzIGxvZ2ljIGluIGxpYl9wcmludHcuYzsgdmFfY29weSBpcyBubyBsb25nZXIgbmVlZGVkCisJICB0aGVyZS4KKwkrIG1vZGlmaWNhdGlvbnMgZm9yIE1pbkdXIHBvcnQgdG8gbWFrZSB3aWRlLWNoYXJhY3RlciBkaXNwbGF5IHVzYWJsZS4KKworMjAxMjA5MDIKKwkrIHJlZ2VuZXJhdGUgY29uZmlndXJlIHNjcmlwdCAocmVwb3J0IGJ5IFN2ZW4gSm9hY2hpbSwgY2Y6IDIwMTIwOTAxKS4KKworMjAxMjA5MDEKKwkrIGFkZCBhIG51bGwtcG9pbnRlciBjaGVjayBpbiBfbmNfZmx1c2ggKGNmOiAyMDEyMDgyNSkuCisJKyBmaXggYSBjYXNlIGluIF9uY19zY3JvbGxfb3B0aW1pemUoKSB3aGVyZSB0aGUgX29sZG51bXNfbGlzdCBhcnJheQorCSAgbWlnaHQgbm90IGJlIGFsbG9jYXRlZC4KKwkrIGltcHJvdmUgY29tcGFyaXNvbnMgaW4gY29uZmlndXJlLmluIGZvciB1bnNldCBzaGVsbCB2YXJpYWJsZXMuCisKKzIwMTIwODI2CisJKyBpbmNyZWFzZSBzaXplIG9mIG5jdXJzZXMnIG91dHB1dC1idWZmZXIsIGluIGNhc2Ugb2YgdmVyeSBzbWFsbAorCSAgaW5pdGlhbCBzY3JlZW4tc2l6ZXMuCisJKyBmaXggZXZhbHVhdGlvbiBvZiBURVJNSU5GTyBhbmQgVEVSTUlORk9fRElSUyBkZWZhdWx0IHZhbHVlcyBhcyBuZWVkZWQKKwkgIGFmdGVyIGNoYW5nZXMgdG8gdXNlIC0tZGF0YXJvb3RkaXIgKHJlcG9ydHMgYnkgR2FicmllbGUgQmFsZHVjY2ksCisJICBSb3VtZW4gUGV0cm92KS4KKworMjAxMjA4MjUKKwkrIGNoYW5nZSBvdXRwdXQgYnVmZmVyaW5nIHNjaGVtZSwgdXNpbmcgYnVmZmVyIG1haW50YWluZWQgYnkgbmN1cnNlcworCSAgcmF0aGVyIHRoYW4gc3RkaW8sIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggU0lHVFNUUCBoYW5kbGluZyAocmVwb3J0CisJICBieSBCcmlhbiBCbG9uaWFyeikuCisKKzIwMTIwODExCisJKyB1cGRhdGUgYXV0b2NvbmYgcGF0Y2ggdG8gMi41Mi4yMDEyMDgxMSwgYWRkaW5nIC0tZGF0YXJvb3RkaXIKKwkgIChwcm9tcHRlZCBieSBkaXNjdXNzaW9uIHdpdGggRXJ3aW4gV2F0ZXJsYW5kZXIpLgorCSsgaW1wcm92ZSBkZXNjcmlwdGlvbiBvZiAtLWVuYWJsZS1yZWVudHJhbnQgb3B0aW9uIGluIFJFQURNRSBhbmQgdGhlCisJICBJTlNUQUxMIGZpbGUuCisJKyBhZGQgbnN0ZXJtLTI1NmNvbG9yLCBtYWtlIHRoaXMgdGhlIGRlZmF1bHQgbnN0ZXJtIC1URAorCSsgcmVtb3ZlIGJ3IGZyb20gbnN0ZXJtLWJjZSwgcGVyIHRlc3Rpbmcgd2l0aCB0YWNrIC1URAorCisyMDEyMDgwNAorCSsgdXBkYXRlIHRlc3QvY29uZmlndXJlLCBhZGRpbmcgY2hlY2sgZm9yIHRpbmZvIGxpYnJhcnkuCisJKyBpbXByb3ZlIGxpbWl0LWNoZWNrcyBmb3IgdGhlIGdldGNoIGZpZm8gKHJlcG9ydCBieSBXZXJuZXIgRmluaykuCisJKyBmaXggYSByZW1haW5pbmcgbWlzbWF0Y2ggYmV0d2VlbiAkd2l0aF9lY2hvIGFuZCB0aGUgc3ltYm9scyB1cGRhdGVkCisJICBmb3IgQ0ZfRElTQUJMRV9FQ0hPIGFmZmVjdGluZyBwYXJhbWV0ZXJzIGZvciBtay0ybmQuYXdrIChyZXBvcnQgYnkKKwkgIFN2ZW4gSm9hY2hpbSwgY2Y6ICAyMDEyMDMxNykuCisJKyBtb2RpZnkgZm9sbG93dXAgY2hlY2sgZm9yIHBrZy1jb25maWcncyBsaWJyYXJ5IGRpcmVjdG9yeSBpbiB0aGUKKwkgIC0tZW5hYmxlLXBjLWZpbGVzIG9wdGlvbiB0byB2YWxpZGF0ZSBzeW50YXggKHJlcG9ydCBieSBTdmVuIEpvYWNoaW0sCisJICBjZjogMjAxMTA3MTYpLgorCisyMDEyMDcyOAorCSsgY29ycmVjdCBwYXRoIGZvciBuY3Vyc2VzX21pbmd3LmggaW4gaW5jbHVkZS9oZWFkZXJzLCBpbiBjYXNlIGJ1aWxkCisJICBpcyBkb25lIG91dHNpZGUgc291cmNlLXRyZWUgKHBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YpLgorCSsgbW9kaWZ5IHNvbWUgb2xkZXIgeHRlcm0gZW50cmllcyB0byBhbGlnbiB3aXRoIHh0ZXJtIHNvdXJjZSAtVEQKKwkrIHNlcGFyYXRlICJ4dGVybS1vbGQiIGFsaWFzIGZyb20gInh0ZXJtLXI2IiAtVEQKKwkrIGFkZCBFMyBleHRlbmRlZCBjYXBhYmlsaXR5IHRvIHh0ZXJtLWJhc2ljIGFuZCBwdXR0eSAtVEQKKwkrIHBhcmVudGhlc2l6ZSBwYXJhbWV0ZXJzIG9mIG90aGVyIG1hY3JvcyBpbiBjdXJzZXMuaCAtVEQKKwkrIHBhcmVudGhlc2l6ZSBwYXJhbWV0ZXIgb2YgQ09MT1JfUEFJUiBhbmQgUEFJUl9OVU1CRVIgaW4gY3Vyc2VzLmgKKwkgIGluIGNhc2UgaXQgaGFwcGVucyB0byBiZSBhIGNvbW1hLWV4cHJlc3Npb24sIGV0Yy4gIChwYXRjaCBieSBOaWNrCisJICBCbGFjaykuCisKKzIwMTIwNzIxCisJKyBpbXByb3ZlZCBmb3JtX3JlcXVlc3RfYnlfbmFtZSgpIGFuZCBtZW51X3JlcXVlc3RfYnlfbmFtZSgpLgorCSsgZWxpbWluYXRlIHR3byBmaXhlZC1zaXplIGJ1ZmZlcnMgaW4gdG9lLmMKKwkrIGV4dGVuZCB1c2VfdGlvY3RsKCkgdG8gaGF2ZSBleHBlY3RlZCBiZWhhdmlvciB3aGVuIHVzZV9lbnYoRkFMU0UpIGFuZAorCSAgdXNlX3Rpb2N0bChUUlVFKSBhcmUgY2FsbGVkLgorCSsgbW9kaWZ5IG5jdXJzZXMgdGVzdC1wcm9ncmFtLCBhZGRpbmcgLUUgYW5kIC1UIG9wdGlvbnMgdG8gZGVtb25zdHJhdGUKKwkgIHVzZV9lbnYoKSB2ZXJzdXMgdXNlX3Rpb2N0bCgpLgorCisyMDEyMDcxNAorCSsgYWRkIHVzZV90aW9jdGwoKSBmdW5jdGlvbiAoYWRhcHRlZCBmcm9tIHBhdGNoIGJ5IFdlcm5lciBGaW5rLAorCSAgTm92ZWxsICM3Njk3ODgpOgorCisyMDEyMDcwNworCSsgYWRkIG5jdXJzZXNfbWluZ3cuaCB0byBpbnN0YWxsZWQgaGVhZGVycyAocHJvbXB0ZWQgYnkgcGF0Y2ggYnkKKwkgIEp1ZXJnZW4gUGZlaWZlcikuCisJKyBjbGFyaWZ5IHJldHVybi1jb2RlcyBmcm9tIHdnZXRjaCgpIGluIHJlc3BvbnNlIHRvIFNJR1dJTkNIIChwcm9tcHRlZAorCSAgYnkgTm92ZWxsICM3Njk3ODgpLgorCSsgbW9kaWZ5IHJlc2l6ZXRlcm0oKSB0byBhbHdheXMgcHVzaCBhIEtFWV9SRVNJWkUgb250byB0aGUgZmlmbywgZXZlbgorCSAgaWYgc2NyZWVuc2l6ZSBpcyB1bmNoYW5nZWQuICBNb2RpZnkgX25jX3VwZGF0ZV9zY3JlZW5zaXplKCkgdG8gcHVzaCBhCisJICBLRVlfUkVTSVpFIGlmIHRoZXJlIHdhcyBhIFNJR1dJTkNILCBldmVuIGlmIGl0IGRvZXMgbm90IGNhbGwKKwkgIHJlc2l6ZXRlcm0oKS4gIFRoZXNlIGNoYW5nZXMgZWxpbWluYXRlIHRoZSBjYXNlIHdoZXJlIGEgU0lHV0lOQ0ggaXMKKwkgIHJlY2VpdmVkLCBidXQgRVJSIHJldHVybmVkIGZyb20gd2dldGNoIG9yIHdnZXRuc3RyIGJlY2F1c2UgdGhlIHNjcmVlbgorCSAgZGltZW5zaW9ucyBkaWQgbm90IGNoYW5nZSAoTm92ZWxsICM3Njk3ODgpLgorCisyMDEyMDYzMAorCSsgYWRkIC0tZW5hYmxlLWludGVyb3AgdG8gc2FtcGxlIHBhY2thZ2Ugc2NyaXB0cyAoc3VnZ2VzdGVkIGJ5IEp1ZXJnZW4KKwkgIFBmZWlmZXIpLgorCSsgdXBkYXRlIENGX1BBVEhfU1lOVEFYIG1hY3JvLCBmcm9tIG1hd2sgY2hhbmdlcy4KKwkrIG1vZGlmeSBtay0wdGguYXdrIHRvIGFsbG93IGZvciBnZW5lcmF0aW5nIGxsaWItbHRpYywgZXRjLiwgdGhvdWdoCisJICBzb21lIHdvcmsgaXMgbmVlZGVkIG9uIGNwcm90byB0byB3b3JrIHdpdGggbGliX2dlbi5jIHRvIHVwZGF0ZQorCSAgbGxpYi1sbmN1cnNlcy4KKwkrIHJlbW92ZSByZWR1bmRhbnQgZ2V0ZW52KCkgY2FsIGluIGRhdGFiYXNlLWl0ZXJhdG9yIGxlZnRvdmVyIGZyb20KKwkgIGNsZWFudXAgaW4gMjAxMjA2MjIgY2hhbmdlcyAocmVwb3J0IGJ5IFN2ZW4gSm9hY2hpbSkuCisKKzIwMTIwNjIyCisJKyBhZGQgLWQsIC1lIGFuZCAtcSBvcHRpb25zIHRvIHRlc3QvZGVtb190ZXJtaW5mbyBhbmQgdGVzdC9kZW1vX3Rlcm1jYXAKKwkrIGZpeCBjYWNoaW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBkYXRhYmFzZS1pdGVyYXRvciAocGF0Y2ggYnkKKwkgIFBoaWxpcHBlIFRyb2luLCBSZWRoYXQgIzgzMTM2NikuCisKKzIwMTIwNjE2CisJKyBhZGQgY29uZmlndXJlIGNoZWNrIHRvIGRpc3Rpbmd1aXNoIGNsYW5nIGZyb20gZ2NjIHRvIGVsaW1pbmF0ZQorCSAgd2FybmluZ3MgYWJvdXQgdW51c2VkIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXJzIHdoZW4gY29tcGlsZXIgd2FybmluZ3MKKwkgIGFyZSBlbmFibGVkLgorCSsgaW1wcm92ZSBiZWhhdmlvciB3aGVuIHVwZGF0aW5nIHRlcm1pbmZvIGVudHJpZXMgd2hpY2ggYXJlIGhhcmRsaW5rZWQKKwkgIGJ5IGFsbG93aW5nIGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCBhbiBhbGlhcyBoYXMgYmVlbiByZXB1cnBvc2VkIHRvCisJICBhIG5ldyBwcmltYXJ5IG5hbWUuCisJKyBmaXggc29tZSBzdHJpY3QgY29tcGlsZXIgd2FybmluZ3MgYmFzZWQgb24gcGFja2FnZSBzY3JpcHRzLgorCSsgZnVydGhlciBmaXhlcyBmb3IgY29uZmlndXJlIGNoZWNrIGZvciB3b3JraW5nIHBvbGwgKERlYmlhbiAjNjc2NDYxKS4KKworMjAxMjA2MDgKKwkrIGZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIC1jLy1uIGxvZ2ljIGZvciBpbmZvY21wIGNoYW5nZXMKKwkgIChjZjogMjAxMjA1MjYpLgorCSsgY29ycmVjdGVkIGZpeCBmb3IgYnVpbGRpbmcgYysrIGJpbmRpbmcgd2l0aCBjbGFuZyAzLjAgKHJlcG9ydC9wYXRjaAorCSAgYnkgUmljaGFyZCBZYW8sIEdlbnRvbyAjNDE3NjEzLCBjZjogMjAxMTA0MDkpCisJKyBjb3JyZWN0IGNvbmZpZ3VyZSBjaGVjayBmb3Igd29ya2luZyBwb2xsLCBmaXhpbmcgdGhlIGNhc2Ugd2hlcmUgc3RkaW4KKwkgIGlzIHJlZGlyZWN0ZWQsIGUuZy4sIGluIHJwbS9kcGtnIGJ1aWxkcyAoRGViaWFuICM2NzY0NjEpLgorCSsgYWRkIHJwbS0gYW5kIGRwa2ctc2NyaXB0cywgdG8gdGVzdCB0aG9zZSBidWlsZC1lbnZpcm9ubWVudHMuCisJICBUaGUgcmVzdWx0aW5nIHBhY2thZ2VzIGFyZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcuCisKKzIwMTIwNjAyCisJKyBhZGQga2RjaDEgYWthICJSZW1vdmUiIHRvIHZ0MjIwIGFuZCB2dDIyMC04IGVudHJpZXMgLVRECisJKyBhZGQga2RjaDEsIGV0Yy4sIHRvIHF2dDEwOCAtVEQKKwkrIGFkZCBkbDEvaWwxIHRvIHNvbWUgZW50cmllcyBiYXNlZCBvbiBkbC9pbCB2YWx1ZXMgLVRECisJKyBhZGQgZGwgdG8gc2ltcGxldGVybSAtVEQKKwkrIGFkZCBjb25zaXN0ZW5jeS1jaGVja3MgaW4gdGljIGZvciBpbnNlcnQtbGluZSB2cyBkZWxldGUtbGluZQorCSAgY29udHJvbHMsIGFuZCBpbnNlcnQvZGVsZXRlLWNoYXIga2V5cworCSsgY29ycmVjdCBuby1sZWFrcyBsb2dpYyBpbiBpbmZvY21wIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMsIGZpeGluZworCSAgZHVwbGljYXRlIGZyZWUgb2YgZW50cmllcyBnaXZlbiB2aWEgdGhlIGNvbW1hbmQtbGluZSwgYW5kIGZyZWVpbmcKKwkgIGVudHJpZXMgbG9hZGVkIGZyb20gdGhlIGxhc3QtYnV0LW9uZSBvZiBmaWxlcyBzcGVjaWZpZWQgb24gdGhlCisJICBjb21tYW5kLWxpbmUuCisJKyBhZGQga2RjaDEgdG8gd3N2dDI1IGVudHJ5IGZyb20gTmV0QlNEIENWUyAocmVwb3J0ZWQgYnkgRGF2aWQgTG9yZCwKKwkgIGFuYWx5c2lzIGJ5IE1hcnRpbiBIdXNlbWFubikuCisJKyBhZGQgY25vcm0vY2l2aXMgdG8gd3N2dDI1IGVudHJ5IGZyb20gTmV0QlNEIENWUyAocmVwb3J0L2FuYWx5c2lzIGJ5CisJICBPbm5vIHZhbiBkZXIgTGluZGVuKS4KKworMjAxMjA1MjYKKwkrIGV4dGVuZCAtYyBhbmQgLW4gb3B0aW9ucyBvZiBpbmZvY21wIHRvIGFsbG93IGNvbXBhcmluZyBtb3JlIHRoYW4gdHdvCisJICBlbnRyaWVzLgorCSsgY29ycmVjdCBjaGVjayBpbiBpbmZvY21wIGZvciBudW1iZXIgb2YgdGVybWluYWwgbmFtZXMgd2hlbiBtb3JlIHRoYW4KKwkgIHR3byBhcmUgZ2l2ZW4uCisJKyBjb3JyZWN0IHR5cG8gaW4gY3Vyc190aHJlYWRzLjN4IChyZXBvcnQgYnkgWWFuaHVpIFNoZW4gb24KKwkgIGZyZWVic2QtaGFja2VycyBtYWlsaW5nIGxpc3QpLgorCisyMDEyMDUxMgorCSsgY29ycmVjdGVkICdvcCcgZm9yIGJ0ZXJtIChyZXBvcnQgYnkgU2FtdWVsIFRoaWJhdWx0KSAtVEQKKwkrIG1vZGlmeSB0ZXN0L2JhY2tncm91bmQuYyB0byBkZW1vbnN0cmF0ZSBhIGJhY2tncm91bmQgY2hhcmFjdGVyCisJICBob2xkaW5nIGEgY29sb3JlZCBBQ1NfSExJTkUuICBUaGUgYmVoYXZpb3IgZGlmZmVycyBmcm9tIFNWcjQgZHVlIHRvCisJICB0aGUgdGhpY2stIGFuZCBkb3VibGUtbGluZSBleHRlbnNpb24gKGNmOiAyMDA5MTAwMykuCisJKyBtb2RpZnkgaGFuZGxpbmcgb2YgYWNzIGNoYXJhY3RlcnMgaW4gUHV0QXR0ckNoYXIgdG8gYXZvaWQgbWFwcGluZyBhbgorCSAgdW5tYXBwZWQgY2hhcmFjdGVyIHRvIGEgc3BhY2Ugd2l0aCBBX0FMVENIQVJTRVQgc2V0LgorCSsgcmV3cml0ZSB2dDUyMCBlbnRyeSBiYXNlZCBvbiB2dDQyMCAtVEQKKworMjAxMjA1MDUKKwkrIHJlbW92ZSBwNiAoYm9sZCkgZnJvbSBvcHVzM24xKyBmb3IgY29uc2lzdGVuY3kgLVRECisJKyByZW1vdmUgYWNzIHN0dWZmIGZyb20gZW52MjMwIHBlciBjbHVlcyBpbiBJbmdyZXMgdGVybWNhcCAtVEQKKwkrIG1vZGlmeSBlbnYyMzAgc2dyL3NncjAgdG8gbWF0Y2ggb3RoZXIgY2FwYWJpbGl0aWVzIC1URAorCSsgbW9kaWZ5IHNtYWNzL3JtYWNzIGluIGJxMzAwLTggdG8gbWF0Y2ggc2dyL3NncjAgLVRECisJKyBtYWtlIHNnciBmb3IgZGt1NzIwMiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgaWJtcGMgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgbWFrZSBzZ3IgZm9yIHRlazQxMDcgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgbWFrZSBzZ3IgZm9yIG5kcjk1MDAgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgbWFrZSBzZ3IgZm9yIHNjby1hbnNpIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBkNDEwIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBkMjEwIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBkNDcwYywgZDQ3MGMtN2IgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgcmVtb3ZlIHJlZHVuZGFudCBBQ19ERUZJTkUgZm9yIE5ERUJVRyB2ZXJzdXMgTWFrZWZpbGUgZGVmaW5pdGlvbi4KKwkrIGZpeCBhIGJhY2stbGluayBpbiBfbmNfZGVsaW5rX2VudHJ5KCksIHdoaWNoIGlzIG5lZWRlZCBpZiBuY3Vyc2VzIGlzCisJICBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtdGVybWNhcCBhbmQgLS1kaXNhYmxlLWdldGNhcC4KKworMjAxMjA0MjgKKwkrIGZpeCBzb21lIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIHZ0MzIwL3Z0NDIwLCBlLmcuLCBjbm9ybS9jaXZpcyAtVEQKKwkrIGFkZCBlc2xvayBmbGFnIHRvIGRlYytzbCAtVEQKKwkrIGRlYytzbCBhcHBsaWVzIHRvIHZ0MzIwIGFuZCB1cCAtVEQKKwkrIGRyb3Agd3NsIHdpZHRoIGZyb20geHRlcm0rc2wgLVRECisJKyByZXVzZSB4dGVybStzbCBpbiBwdXR0eSBhbmQgbnNjYS1tIC1URAorCSsgYWRkIGFuc2krdGFicyB0byB2dDUyMCAtVEQKKwkrIGFkZCBhbnNpK2VucSB0byB2dDIyMC12dDUyMCAtVEQKKwkrIGZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gZXhhbXBsZSBpbiBuY3Vyc2VzLWludHJvLmRvYyAoUGF1bCBXYXJpbmcpLgorCSsgYWRkZWQgcGFyYWdyYXBoIGluIGtleW5hbWUgbWFucGFnZSB0ZWxsaW5nIGhvdyBleHRlbmRlZCBjYXBhYmlsaXRpZXMKKwkgIGFyZSBpbnRlcnByZXRlZCBhcyBrZXkgZGVmaW5pdGlvbnMuCisJKyBtb2RpZnkgdGljJ3MgY2hlY2sgb2YgY29uZmxpY3Rpbmcga2V5IGRlZmluaXRpb25zIHRvIGluY2x1ZGUgZXh0ZW5kZWQKKwkgIGNhcGFiaWxpdHkgc3RyaW5ncyBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgY2hlY2sgb24gcHJlZGVmaW5lZAorCSAga2V5cy4KKworMjAxMjA0MjEKKwkrIGltcHJvdmUgY2xlYW51cCBvZiB0ZW1wb3JhcnkgZmlsZXMgaW4gdGljIHVzaW5nIGF0ZXhpdCgpLgorCSsgYWRkIG1zZ3IgdG8gdnQ0MjAsIHNpbWlsYXIgREVDIHZ0WFhYIGVudHJpZXMgLVRECisJKyBhZGQgc2V2ZXJhbCBtaXNzaW5nIHZ0NDIwIGNhcGFiaWxpdGllcyBmcm9tIHZ0MjIwIC1URAorCSsgZmFjdG9yIG91dCBhbnNpK3BwIGZyb20gc2V2ZXJhbCBlbnRyaWVzIC1URAorCSsgY2hhbmdlIHh0ZXJtK3NsIGFuZCB4dGVybStzbC10d20gdG8gaW5jbHVkZSBvbmx5IHRoZSBzdGF0dXMtbGluZQorCSAgY2FwYWJpbGl0aWVzIGFuZCBub3QgInVzZT14dGVybSIsIG1ha2luZyB0aGVtIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bAorCSAgYXMgYnVpbGRpbmctYmxvY2tzIC1URAorCSsgYWRkIGRlYytzbCBidWlsZGluZyBibG9jaywgYXMgZXhhbXBsZSAtVEQKKworMjAxMjA0MTQKKwkrIGFkZCBYVCB0byBzb21lIHRlcm1pbmZvIGVudHJpZXMgdG8gaW1wcm92ZSB1c2VmdWxuZXNzIGZvciBvdGhlcgorCSAgYXBwbGljYXRpb25zIHRoYW4gc2NyZWVuLCB3aGljaCB3b3VsZCBsaWtlIHRvIHByZXRlbmQgdGhhdCB4dGVybSdzCisJICB0aXRsZSBpcyBhIHN0YXR1cy1saW5lLiAgLVRECisJKyBjaGFuZ2UgdXNlLWNsYXVzZXMgaW4gYW5zaS1tdGFicywgaHAyNjI2LCBhbmQgaHAyNjIyIGJhc2VkIG9uIHJldmlldworCSAgb2Ygb3JkZXJpbmcgYW5kIG92ZXJyaWRlcyAtVEQKKwkrIGFkZCBjb25zaXN0ZW5jeSBjaGVjayBpbiB0aWMgZm9yIHNjcmVlbidzICJYVCIgY2FwYWJpbGl0eS4KKwkrIGFkZCBzZWN0aW9uIGluIHRlcm1pbmZvLnNyYyBzdW1tYXJpemluZyB0aGUgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcworCSAgdXNlZCBpbiB0aGF0IGZpbGUgLVRECisKKzIwMTIwNDA3CisJKyBmaXggYW4gaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIHRpYy9pbmZvY21wICIteCIgb3B0aW9uOyB0aWMgb21pdHMgYWxsCisJICBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzLCB3aGlsZSBpbmZvY21wIHdhcyBpZ25vcmluZyBvbmx5IHRoZSB1c2VyCisJICBkZWZpbmFibGUgY2FwYWJpbGl0aWVzLgorCSsgaW1wcm92ZSBzcGVjaWFsIGNhc2UgaW4gdGljIHBhcnNpbmcgb2YgZGVzY3JpcHRpb24gdG8gYWxsb3cgaXQgdG8gYmUKKwkgIGZvbGxvd2VkIGJ5IHRlcm1pbmZvIGNhcGFiaWxpdGllcy4gIFByZXZpb3VzbHkgdGhlIGRlc2NyaXB0aW9uIGhhZCB0bworCSAgYmUgdGhlIGxhc3QgZmllbGQgb24gYW4gaW5wdXQgbGluZSB0byBhbGxvdyB0aWMgdG8gZGlzdGluZ3Vpc2gKKwkgIGJldHdlZW4gdGVybWNhcCBhbmQgdGVybWluZm8gZm9ybWF0IHdoaWxlIHN0aWxsIGFsbG93aW5nIGNvbW1hcyB0byBiZQorCSAgZW1iZWRkZWQgaW4gdGhlIGRlc2NyaXB0aW9uLgorCSsgY29ycmVjdCB2YXJpYWJsZSBuYW1lIGluIGdlbl9lZGl0LnNoIHdoaWNoIGJyb2tlIGNvbmZpZ3VyYWJpbGl0eSBvZgorCSAgdGhlIC0td2l0aC14dGVybS1rYnMgb3B0aW9uLgorCSsgcmV2ZXJ0IDIwMTEtMDctMTYgY2hhbmdlIHRvICJsaW51eCIgYWxpYXMsIHJldHVybiB0byAibGludXgyLjIiIC1URAorCSsgZnVydGhlciBhbWVuZCAyMDExMDkxMCBjaGFuZ2UsIHByb3ZpZGluZyBmb3IgY29uZmlndXJlLXNjcmlwdAorCSAgb3ZlcnJpZGUgb2YgdGhlICJsaW51eCIgdGVybWluZm8gZW50cnkgdG8gaW5zdGFsbCBhbmQgY2hhbmdpbmcgdGhlCisJICBkZWZhdWx0IGZvciB0aGF0IHRvICJsaW51eDIuMiIgKERlYmlhbiAjNjY1OTU5KS4KKworMjAxMjAzMzEKKwkrIHVwZGF0ZSBBZGE5NS9jb25maWd1cmUgdG8gdXNlIENGX0RJU0FCTEVfRUNITyAoY2Y6IDIwMTIwMzE3KS4KKwkrIGNvcnJlY3Qgb3JkZXIgb2YgdXNlLWNsYXVzZXMgaW4gc3QtMjU2Y29sb3IgLVRECisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBsb29rIGZvciBnbmF0Z2NjIGlmIHRoZSBBZGE5NSBiaW5kaW5nCisJICBpcyBidWlsdCwgaW4gcHJlZmVyZW5jZSB0byB0aGUgZGVmYXVsdCBnY2MvY2MgKHN1Z2dlc3RlZCBieQorCSAgTmljb2xhcyBCb3VsZW5ndWV6KS4KKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lIC1PbiBvcHRpb24gdXNlZCBmb3IKKwkgIHRoZSBDIGNvbXBpbGVyIGluIENGTEFHUyBpcyB1c2VkIGZvciBBREFGTEFHUyByYXRoZXIgdGhhbiBzaW1wbHkKKwkgIHVzaW5nICItTzMiIChzdWdnZXN0ZWQgYnkgTmljb2xhcyBCb3VsZW5ndWV6KQorCisyMDEyMDMyNAorCSsgYW1lbmQgYW4gb2xkIGZpeCBzbyB0aGF0IG5leHRfY2hhcigpIGV4aXRzIHByb3Blcmx5IGZvciBlbXB0eSBmaWxlcywKKwkgIGUuZy4sIGZyb20gcmVhZGluZyAvZGV2L251bGwgKGNmOiAyMDA4MDgwNCkuCisJKyBtb2RpZnkgdGljIHNvIHRoYXQgaXQgY2FuIHJlYWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsIG9yIGZyb20KKwkgIGEgY2hhcmFjdGVyIGRldmljZS4gIEJlY2F1c2UgdGljIHVzZXMgc2VlaydzLCB0aGlzIHJlcXVpcmVzIHdyaXRpbmcKKwkgIHRoZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUgZmlyc3QgKHByb21wdGVkIGJ5IHJlbWFyayBieSBTdmVuCisJICBKb2FjaGltKSAoY2Y6IDIwMDAwOTIzKS4KKworMjAxMjAzMTcKKwkrIGNvcnJlY3QgYSBjaGVjayBtYWRlIGluIGxpYl9uYXBtcy5jLCBzbyB0aGF0IHRlcm1pbmZvIGFwcGxpY2F0aW9ucworCSAgY2FuIGFnYWluIHVzZSBuYXBtcygpIChjZjogMjAxMTA2MDQpLgorCSsgYWRkIGEgbm90ZSBpbiB0aWMuaCByZWdhcmRpbmcgcmVxdWlyZWQgY2FzdHMgZm9yIEFCU0VOVF9CT09MRUFOCisJICAoY2Y6IDIwMDQwMzI3KS4KKwkrIGNvcnJlY3Qgc2NyaXB0aW5nIGZvciAtLWRpc2FibGUtZWNobyBvcHRpb24gaW4gdGVzdC9jb25maWd1cmUuCisJKyBhbWVuZCBjaGVjayBmb3IgbWlzc2luZyBjKysgY29tcGlsZXIgdG8gd29yayB3aGVuIG5vIGVycm9yIGlzCisJICByZXBvcnRlZCwgYW5kIG5vIHZhcmlhYmxlcyBzZXQgKGNmOiAyMDAyMTIwNikuCisJKyBhZGQvdXNlIGNvbmZpZ3VyZSBtYWNybyBDRl9ESVNBQkxFX0VDSE8uCisKKzIwMTIwMzEwCisJKyBmaXggc29tZSBzdHJpY3QgY29tcGlsZXIgd2FybmluZ3MgZm9yIGFiaTYgYW5kIDY0LWJpdHMuCisJKyB1c2UgYmVnaW5fdmFfY29weS9lbmRfdmFfY29weSBtYWNyb3MgaW4gbGliX3ByaW50dy5jIChjZjogMjAxMjAzMDMpLgorCSsgaW1wcm92ZSBhIGxpbWl0LWNoZWNrIGluIGluZm9jbXAuYyAoV2VybmVyIEZpbmspOgorCisyMDEyMDMwMworCSsgbWlub3IgdGlkeWluZyBvZiB0ZXJtaW5mby50YWlsLCBjbGFyaWZ5IHJlYXNvbiBmb3IgbGltaXRhdGlvbgorCSAgcmVnYXJkaW5nIG1hcHBpbmcgb2YgXDAgdG8gXDIwMAorCSsgbWlub3IgaW1wcm92ZW1lbnQgdG8gX25jX2NvcHlfdGVybXR5cGUoKSwgdXNpbmcgbWVtY3B5IHRvIHJlcGxhY2UKKwkgIGxvb3BzLgorCSsgZml4IG5vLWxlYWtzIGNoZWNraW5nIGluIHRlc3QvZGVtb190ZXJtY2FwLmMgdG8gYWNjb3VudCBmb3IgbXVsdGlwbGUKKwkgIGNhbGxzIHRvIHNldHVwdGVybSgpLgorCSsgbW9kaWZpZWQgdGhlIGxpYmdwbSBjaGFuZ2UgdG8gc2hvdyBwcmV2aW91cyBsb2FkIGFzIGEgcHJvYmxlbSBpbiB0aGUKKwkgIGRlYnVnLXRyYWNlLgorCT4gbWVyZ2Ugc29tZSBwYXRjaGVzIGZyb20gT3BlblNVU0UgcnBtIChXZXJuZXIgRmluayk6CisJKyBuY3Vyc2VzLTUuNy1wcmludHcuZGlmLCBmaXhlcyBmb3IgdmFyYXJncyBoYW5kbGluZyBpbiBsaWJfcHJpbnR3LmMKKwkrIG5jdXJzZXMtNS43LWdwbS5kaWYsIGRvIG5vdCBkbG9wZW4gbGliZ3BtIGlmIGFscmVhZHkgbG9hZGVkIGJ5CisJICBydW50aW1lIGxpbmtlcgorCSsgbmN1cnNlcy01LjYtZmFsbGJhY2suZGlmLCBkbyBub3QgZnJlZSBhcnJheXMgYW5kIHN0cmluZ3MgZnJvbSBzdGF0aWMKKwkgIGZhbGxiYWNrIGVudHJpZXMKKworMjAxMjAyMjgKKwkrIGZpeCBicmVha2FnZSBpbiB0aWMvaW5mb2NtcCBmcm9tIDIwMTIwMjI1IChyZXBvcnQgYnkgV2VybmVyIEZpbmspLgorCisyMDEyMDIyNQorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gYWxsb3cgY3JlYXRpbmcgZGxsJ3MgZm9yIE1pbkdXIHdoZW4KKwkgIGNyb3NzLWNvbXBpbGluZy4KKwkrIGFkZCAtLWVuYWJsZS1zdHJpbmctaGFja3Mgb3B0aW9uIHRvIGNvbnRyb2wgd2hldGhlciBzdHJsY2F0IGFuZAorCSAgc3RybGNweSBtYXkgYmUgdXNlZC4gIFRoZSBzYW1lIGlzc3VlIGFwcGxpZXMgdG8gT3BlbkJTRCdzIHdhcm5pbmdzCisJICBhYm91dCBzbnByaW50Ziwgbm90aW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB3ZWFrbHkgc3RhbmRhcmRpemVkLgorCSsgYWRkIGNvbmZpZ3VyZSBjaGVja3MgZm9yIHN0cmxjYXQsIHN0cmxjcHkgYW5kIHNucHJpbnRmLCB0byBoZWxwCisJICByZWR1Y2UgYm9ndXMgd2FybmluZ3Mgd2l0aCBPcGVuQlNEIGJ1aWxkcy4KKwkrIGJ1aWxkLWZpeCBmb3IgT3BlbkJTRCA0LjkgdG8gc3VwcGx5IGNvbnNpc3RlbnQgaW50cHRyX3QgZGVjbGFyYXRpb24KKwkgIChjZjoyMDExMTIzMSkKKwkrIHVwZGF0ZSBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIKKworMjAxMjAyMTgKKwkrIGNvcnJlY3QgQ0ZfRVRJUF9ERUZJTkVTIGNvbmZpZ3VyZSBtYWNybywgbWFraW5nIGl0IGV4aXQgcHJvcGVybHkgb24KKwkgIHRoZSBmaXJzdCBzdWNjZXNzIChwYXRjaCBieSBQaWVycmUgTGFiYXN0aWUpLgorCSsgaW1wcm92ZSBjb25maWd1cmUgbWFjcm8gQ0ZfTUtTVEVNUCBieSBtb3ZpbmcgZXhpc3RlbmNlLWNoZWNrIGZvcgorCSAgbWtzdGVtcCBvdXQgb2YgdGhlIEFDX1RSWV9SVU4sIHRvIGhlbHAgd2l0aCBjcm9zcy1jb21waWxlcy4KKwkrIGltcHJvdmUgY29uZmlndXJlIG1hY3JvIENGX0ZVTkNfUE9MTCBmcm9tIGx1aXQgY2hhbmdlcyB0byBkZXRlY3QKKwkgIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnMsIGUuZy4sIHdpdGggTWFjIE9TIFguCisJKyBhZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtdHBhcm0tYXJnCisJKyBidWlsZC1maXggZm9yIE1pbkdXIGNyb3NzLWNvbXBpbGluZywgc28gdGhhdCBtYWtlX2hhc2ggZG9lcyBub3QKKwkgIGRlcGVuZCBvbiBUVFkgZGVmaW5pdGlvbiAoY2Y6IDIwMTExMDA4KS4KKworMjAxMjAyMTEKKwkrIG1ha2Ugc2dyIGZvciB4dGVybS1wY29sb3IgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgbWFrZSBzZ3IgZm9yIGF0dDU0MjUgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgbWFrZSBzZ3IgZm9yIGF0dDYzMCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgbGludXggZW50cmllcyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgdHZpOTA2NSBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgbmNyMjYwdnQyMDBhbiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgbmNyMTYwdnQxMDBwcCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgbmNyMjYwdnQzMDBhbiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgYWFhLTYwLWRlYy1ydiwgYWFhK2RlYyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgY3lnd2luLCBjeWd3aW5EQkcgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgYWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXh0ZXJtLWticyB0byBzaW1wbGlmeSBjb25maWd1cmF0aW9uIGZvcgorCSAgTGludXggdmVyc3VzIG1vc3Qgb3RoZXIgc3lzdGVtcy4KKworMjAxMjAyMDQKKwkrIGltcHJvdmVkIHRpYyAtRCBvcHRpb24sIGF2b2lkIG1ha2luZyB0YXJnZXQgZGlyZWN0b3J5IGFuZCBwcm92aWRlCisJICBiZXR0ZXIgZGlhZ25vc3RpY3MuCisKKzIwMTIwMTI4CisJKyBhZGQgbWFjaC1nbnUgKERlYmlhbiAjNjE0MzE2LCBwYXRjaCBieSBTYW11ZWwgVGhpYmF1bHQpCisJKyBhZGQgbWFjaC1nbnUtY29sb3IsIHR3ZWFrcyB0byBtYWNoLWdudSB0ZXJtaW5mbyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBzdW4tY29sb3IgYWdyZWUgd2l0aCBzbXNvIC1URAorCSsgbWFrZSBzZ3IgZm9yIHByaXNtOSBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgaWNsNjQwNCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3Igb2Zjb25zIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBhdHQ1NDEwdjEsIGF0dDQ0MTUsIGF0dDYyMCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisJKyBtYWtlIHNnciBmb3IgYWFhLXVuaywgYWFhLXJ2IGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKwkrIG1ha2Ugc2dyIGZvciBhdnQtbnMgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorCSsgYW1lbmQgZml4IGludGVuZGVkIHRvIHNlcGFyYXRlIGZpeHVwcyBmb3IgYWNzYyB0byBhbGxvdyAidGljIC1jdiIgdG8KKwkgIGdpdmUgdmVyYm9zZSB3YXJuaW5ncyAoY2Y6ICAyMDExMDczMCkuCisJKyBtb2RpZnkgbWlzYy9nZW4tZWRpdC5zaCB0byBtYWtlIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGFic2V0IGRpcmVjdG9yeQorCSAgY29uc2lzdGVudCB3aXRoIG1pc2MvTWFrZWZpbGUuaW4sIGkuZS4sIHVzaW5nICR7ZGF0YWRpcn0vdGFic2V0CisJICAoRGViaWFuICM2NTM0MzUsIHBhdGNoIGJ5IFN2ZW4gSm9hY2hpbSkuCisKKzIwMTIwMTIxCisJKyBhZGQgLS13aXRoLWxpYi1wcmVmaXggb3B0aW9uIHRvIGFsbG93IGNvbmZpZ3VyaW5nIGZvciBvbGQvbmV3IGZsYXZvcnMKKwkgIG9mIE9TLzIgRU1YLgorCSsgbW9kaWZ5IGNoZWNrIGZvciBnbmF0IHZlcnNpb24gdG8gYWxsb3cgZm9yIHllYXIsIGFzIHVzZWQgaW4gRnJlZUJTRAorCSAgcG9ydC4KKwkrIG1vZGlmeSBjaGVja19leGlzdGVuY2UoKSBpbiBkYl9pdGVyYXRvci5jIHRvIHNpbXBseSBjaGVjayBpZiB0aGUKKwkgIHBhdGggaXMgYSBkaXJlY3Rvcnkgb3IgZmlsZSwgYWNjb3JkaW5nIHRvIHRoZSBuZWVkLiAgQ2hlY2tpbmcgZm9yCisJICBkaXJlY3Rvcnkgc2l6ZSBhbHNvIGdpdmVzIG5vIHVzYWJsZSByZXN1bHQgd2l0aCBPUy8yIChjZjogMjAxMjAxMDcpLgorCSsgc3VwcG9ydCBPUy8yIGtMSUJDIChwYXRjaCBieSBLTyBNeXVuZy1IYW4pLgorCisyMDEyMDExNAorCSsgc2V2ZXJhbCBpbXByb3ZlbWVudHMgdG8gdGVzdC9tb3Zld2luZG93LmMgKHByb21wdGVkIGJ5IGRpc2N1c3Npb24gb24KKwkgIExpbnV4IE1pbnQgZm9ydW0pOgorCSAgKyBtb2RpZnkgbW92ZW1lbnQgY29tbWFuZHMgdG8gbWFrZSB0aGVtIGNvbnRpbnVvdXMKKwkgICsgcmV3cm90ZSB0aGUgdGVzdCBmb3IgbXZkZXJ3aW4KKwkgICsgcmV3cm90ZSB0aGUgdGVzdCBmb3IgcmVjdXJzaXZlIG12d2luCisJKyBzcGxpdC1vdXQgcmV1c2FibGUgQ0ZfV0lUSF9OQ1VSU0VTX0VUQyBtYWNybyBpbiB0ZXN0L2NvbmZpZ3VyZS5pbgorCSsgdXBkYXRlZCBjb25maWd1cmUgbWFjcm8gQ0ZfWE9QRU5fU09VUkNFLCBidWlsZC1maXhlcyBmb3IgTWFjIE9TIFgKKwkgIGFuZCBPcGVuQlNELgorCSsgcmVnZW5lcmF0ZWQgaHRtbCBtYW5wYWdlcy4KKworMjAxMjAxMDcKKwkrIHZhcmlvdXMgaW1wcm92bWVudHMgZm9yIE1pbkdXIChKdWVyZ2VuIFBmZWlmZXIpOgorCSAgKyBtb2RpZnkgc3RhdCgpIGNhbGxzIHRvIGlnbm9yZSB0aGUgc3Rfc2l6ZSBtZW1iZXIKKwkgICsgZHJvcCBtay1kbGxzLnNoIHNjcmlwdC4KKwkgICsgY2hhbmdlIHJlY29tbWVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgorCSAgKyBtb2RpZnkgcmFpbi5jIHRvIGFsbG93IGZvciB0aHJlYWRlZCBjb25maWd1cmF0b24uCisJICArIG1vZGlmeSB0c2V0LmMgdG8gYWxsb3cgZm9yIGNhc2Ugd2hlbiBzaXplLWNoYW5nZSBsb2dpYyBpcyBub3QgdXNlZC4KKworMjAxMTEyMzEKKwkrIG1vZGlmeSB0b2UncyByZXBvcnQgd2hlbiAtYSBhbmQgLXMgb3B0aW9ucyBhcmUgY29tYmluZWQsIHRvIGFkZAorCSAgYSBjb2x1bW4gc2hvd2luZyB3aGljaCBlbnRyaWVzIGJlbG9uZyB0byBhIGdpdmVuIGRhdGFiYXNlLgorCSsgYWRkIC1zIG9wdGlvbiB0byB0b2UsIHRvIHNvcnQgaXRzIG91dHB1dC4KKwkrIG1vZGlmeSBwcm9ncy90b2UuYywgc2ltcGxpZnlpbmcgdXNlIG9mIGRiLWl0ZXJhdG9yIHJlc3VsdHMgdG8gdXNlCisJICBjYWNoaW5nIGltcHJvdmVtZW50cyBmcm9tIDIwMTExMDAxIGFuZCAyMDExMTEyNi4KKwkrIGNvcnJlY3QgZ2VuZXJhdGlvbiBvZiBwYy1maWxlcyB3aGVuIHRpY2xpYiBvciB0ZXJtbGliIG9wdGlvbnMgYXJlCisJICBnaXZlbiB0byByZW5hbWUgdGhlIGNvcnJlc3BvbmRpbmcgdGljLSBvciB0aW5mby1saWJyYXJpZXMgKHJlcG9ydAorCSAgYnkgU3ZlbiBKb2FjaGltKS4KKworMjAxMTEyMjQKKwkrIGRvY3VtZW50IGEgcG9ydGFiaWxpdHkgaXNzdWUgd2l0aCB0cHV0LCBpLmUuLCB0aGF0IHNjcmlwdHMgd2hpY2ggd29yaworCSAgd2l0aCBuY3Vyc2VzIG1heSBmYWlsIGluIG90aGVyIGltcGxlbWVudGF0aW9ucyB0aGF0IGRvIG5vIHBhcmFtZXRlcgorCSAgYW5hbHlzaXMuCisJKyBhZGQgcHV0dHktc2NvIGVudHJ5IC1URAorCisyMDExMTIxNworCSsgcmV2aWV3L2ZpeCBwbGFjZXMgaW4gbWFucGFnZXMgd2hlcmUgLS1wcm9ncmFtLXByZWZpeCBjb25maWd1cmUgb3B0aW9uCisJICB3YXMgbm90IGJlaW5nIHVzZWQuCisJKyBhZGQgLUQgb3B0aW9uIHRvIGluZm9jbXAsIHRvIHNob3cgdGhlIGRhdGFiYXNlIGxvY2F0aW9ucyB0aGF0IGl0CisJICBjb3VsZCB1c2UuCisJKyBmaXggYnVpbGQgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGVybS1kcml2ZXIsIHRpY2xpYiBhbmQgdGVybWxpYgorCSAgYXJlIGFsbCBlbmFibGVkLiAgVGhlIHRlcm1pbmFsIGRyaXZlciBkZXBlbmRzIG9uIGEgZmV3IGZlYXR1cmVzIGluCisJICB0aGUgYmFzZSBuY3Vyc2VzIGxpYnJhcnksIHNvIHRpYydzIGRlcGVuZGVuY2llcyBpbmNsdWRlIGJvdGggbmN1cnNlcworCSAgYW5kIHRlcm1saWIuCisJKyBmaXggYnVpbGQgd29yayBmb3IgdGVybS1kcml2ZXIgd2hlbiAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIG9wdGlvbiBpcworCSAgZW5hYmxlZC4KKwkrIHVzZSA8c3RkaW50Lmg+IHR5cGVzIHRvIGZpeCBzb21lIHF1ZXN0aW9uYWJsZSBjYXN0cyB0byB2b2lkKi4KKworMjAxMTEyMTAKKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IHRvIGNoZWNrIGlmIHRocmVhZCBsaWJyYXJ5IHByb3ZpZGVzCisJICBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCksIGUuZy4sIG5vdCBwcm92aWRlZCBieSBTb2xhcmlzIDIuNgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gc3VwcHJlc3MgY2hlY2sgdG8gZGVmaW5lIF9YT1BFTl9TT1VSQ0UKKwkgIGZvciBJUklYNjQsIHNpbmNlIGl0cyBoZWFkZXIgZmlsZXMgaGF2ZSBhIGNvbmZsaWN0IHZlcnN1cworCSAgX1NHSV9TT1VSQ0UuCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBhZGQgIi5wYyIgZmlsZXMgZm9yIHRpYy0gYW5kCisJICB0aW5mby1saWJyYXJpZXMsIHdoaWNoIHdlcmUgb21pdHRlZCBpbiByZWNlbnQgY2hhbmdlIChjZjogMjAxMTExMjYpLgorCSsgZml4IGluY29uc2lzdGVudCBjaGVja3Mgb24gJFBLR19DT05GSUcgdmFyaWFibGUgaW4gY29uZmlndXJlIHNjcmlwdC4KKworMjAxMTEyMDMKKwkrIG1vZGlmeSBjb25maWd1cmUtY2hlY2sgZm9yIGV0aXAuaCBkZXBlbmRlbmNpZXMsIHN1cHBseWluZyBhIHRlbXBvcmFyeQorCSAgY29weSBvZiBuY3Vyc2VzX2RsbC5oIHNpbmNlIGl0IGlzIGEgZ2VuZXJhdGVkIGZpbGUgKHByb21wdGVkIGJ5CisJICBEZWJpYW4gIzY0Njk3NykuCisJKyBtb2RpZnkgQ0ZfQ1BQX1BBUkFNX0lOSVQgIm1haW4iIGZ1bmN0aW9uIHRvIHdvcmsgd2l0aCBjdXJyZW50IEMrKy4KKworMjAxMTExMjYKKwkrIGNvcnJlY3QgZGF0YWJhc2UgaXRlcmF0b3IncyBjaGVjayBmb3IgZHVwbGljYXRlIGVudHJpZXMKKwkgIChjZjogMjAxMTEwMDEpLgorCSsgbW9kaWZ5IGRhdGFiYXNlIGl0ZXJhdG9yIHRvIGlnbm9yZSAkVEVSTUNBUCB3aGVuIGl0IGlzIG5vdCBhbgorCSAgYWJzb2x1dGUgcGF0aG5hbWUuCisJKyBhZGQgLUQgb3B0aW9uIHRvIHRpYywgdG8gc2hvdyB0aGUgZGF0YWJhc2UgbG9jYXRpb25zIHRoYXQgaXQgY291bGQKKwkgIHVzZS4KKwkrIGltcHJvdmUgZGVzY3JpcHRpb24gb2YgZGF0YWJhc2UgbG9jYXRpb25zIGluIHRpYyBtYW5wYWdlLgorCSsgbW9kaWZ5IHRoZSBjb25maWd1cmUgc2NyaXB0IHRvIGdlbmVyYXRlIGEgbGlzdCBvZiB0aGUgIi5wYyIgZmlsZXMgdG8KKwkgIGdlbmVyYXRlLCByYXRoZXIgdGhhbiBkZXJpdmluZyB0aGUgbGlzdCBmcm9tIHRoZSBsaWJyYXJpZXMgd2hpY2ggaGF2ZQorCSAgYmVlbiBidWlsdCAocGF0Y2ggYnkgTWlrZSBGcnlzaW5nZXIpLgorCSsgdXNlIEFDX0NIRUNLX1RPT0xTIGluIHByZWZlcmVuY2UgdG8gQUNfUEFUSF9QUk9HUyB3aGVuIHNlYXJjaGluZyBmb3IKKwkgIG5jdXJzZXMqLWNvbmZpZywgZS5nLiwgaW4gQWRhOTUvY29uZmlndXJlIGFuZCB0ZXN0L2NvbmZpZ3VyZSAoYWRhcHRlZAorCSAgZnJvbSBwYXRjaCBieSBNaWtlIEZyeXNpbmdlcikuCisKKzIwMTExMTE5CisJKyByZW1vdmUgb2Jzb2xldGUvY29uZmxpY3RpbmcgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgX1BPU0lYX1NPVVJDRQorCSAgZnJvbSBjdXJzZXMucHJpdi5oLCBmaXhpbmcgYSByZWdyZXNzaW9uIHdpdGggSVJJWDY0IGFuZCBUcnU2NAorCSAgKGNmOiAyMDExMDQxNikKKwkrIG1vZGlmeSBfbmNfdGljX2RpcigpIHRvIGVuc3VyZSB0aGF0IGl0cyByZXR1cm4tdmFsdWUgaXMgbm9ubnVsbCwKKwkgIGkuZS4sIHRoZSBkYXRhYmFzZSBpdGVyYXRvciB3YXMgbm90IGluaXRpYWxpemVkLiAgVGhpcyBjYXNlIGlzIG5lZWRlZAorCSAgdG8gd2hlbiB0aWMgaXMgdHJhbnNsYXRpbmcgdG8gdGVybWNhcCwgcmF0aGVyIHRoYW4gbG9hZGluZyB0aGUKKwkgIGRhdGFiYXNlIChjZjogIDIwMTExMDAxKS4KKworMjAxMTExMTIKKwkrIGFkZCBwY2NvbiBlbnRyaWVzIGZvciBPcGVuQlNEIGNvbnNvbGUgKEFsZXhlaSBNYWxpbmluKS4KKwkrIGJ1aWxkLWZpeCBmb3IgT3BlbkJTRCA0Ljkgd2l0aCBnY2MgNC4yLjEsIHNldHRpbmcgX1hPUEVOX1NPVVJDRSB0bworCSAgNjAwIHRvIHdvcmsgYXJvdW5kIGluY29uc2lzdGVudCBpZmRlZidpbmcgb2Ygd2NzdG9mIGJldHdlZW4gQyBhbmQKKwkgIEMrKyBoZWFkZXIgZmlsZXMuCisJKyBtb2RpZnkgY2FwY29udmVydCBzY3JpcHQgdG8gYWNjZXB0IG1vcmUgdGhhbiBleGFjdCBtYXRjaCBvbiAieHRlcm0iLAorCSAgZS5nLiwgdGhlICJ4dGVybS0qIiB2YXJpYW50cywgdG8gZXhjbHVkZSBmcm9tIHRoZSBjb252ZXJzaW9uIChwYXRjaAorCSAgYnkgUm9iZXJ0IE1pbGxhbikuCisJKyBhZGQgLWxjX3IgYXMgYWx0ZXJuYXRpdmUgZm9yIC1scHRocmVhZCwgYWxsb3dzIGJ1aWxkIG9mIHRocmVhZGVkIGNvZGUKKwkgIGluIG9sZGVyIEZyZWVCU0QgbWFjaGluZXMuCisJKyBidWlsZC1maXggZm9yIE1pckJTRCwgd2hpY2ggZmFpbHMgd2hlbiBlaXRoZXIgX1hPUEVOX1NPVVJDRSBvcgorCSAgX1BPU0lYX1NPVVJDRSBhcmUgZGVmaW5lZC4KKwkrIGZpeCBhIHR5cG8gbWlzYy9NYWtlZmlsZS5pbiwgdXNlZCBpbiB1bmluc3RhbGxpbmcgcGMtZmlsZXMuCisKKzIwMTExMDMwCisJKyBtb2RpZnkgbWFrZV9kYl9wYXRoKCkgdG8gYWxsb3cgY3JlYXRpbmcgInRlcm1pbmZvLmRiIiBpbiB0aGUgc2FtZQorCSAgZGlyZWN0b3J5IGFzIGFuIGV4aXN0aW5nICJ0ZXJtaW5mbyIgZGlyZWN0b3J5LiAgVGhpcyBmaXhlcyBhIGNhc2UKKwkgIHdoZXJlIHN3aXRjaGluZyBiZXR3ZWVuIGhhc2hlZC9maWxlc3lzdGVtIGRhdGFiYXNlcyB3b3VsZCBjYXVzZSB0aGUKKwkgIG5ldyBoYXNoZWQgZGF0YWJhc2UgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBuZXh0IGJlc3QgbG9jYXRpb24gLQorCSAgcm9vdCdzIGhvbWUgZGlyZWN0b3J5LgorCSsgYWRkIHZhcmlhYmxlIGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IHRvIHRob3NlIHBhc3NlZCB0bworCSAgY29uZmlnLnN0YXR1cywgZml4aW5nIGEgcHJvYmxlbSB3aXRoIEFkYTk1IGJ1aWxkcyAoY2Y6IDIwMTExMDIyKS4KKwkrIGNoYW5nZSBmZWF0dXJlIHRlc3QgZnJvbSBfWFBHNSB0byBfWE9QRU5fU09VUkNFIGluIHR3byBwbGFjZXMsIHRvCisJICBhY2NvbW1vZGF0ZSBicm9rZW4gaW1wbGVtZW50YXRpb25zIGZvciBfWFBHNi4KKwkrIGVsaW1pbmF0ZSB1c2FnZSBvZiBOVUxMIHN5bWJvbCBmcm9tIGV0aXAuaCwgdG8gcmVkdWNlIGhlYWRlcgorCSAgaW50ZXJkZXBlbmRlbmNpZXMuCisJKyBhZGQgY29uZmlndXJlIGNoZWNrIHRvIGRlY2lkZSB3aGVuIHRvIGFkZCBfWE9QRU5fU09VUkNFIGRlZmluZSB0bworCSAgY29tcGlsZXIgb3B0aW9ucywgaS5lLiwgZm9yIFNvbGFyaXMgMTAgYW5kIGxhdGVyIChjZjogMjAxMDA0MDMpLgorCSAgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGdjYyA0LjYsIHdoaWNoIGZhaWxzIHRvIGJ1aWxkIHRoZSBjKysKKwkgIGJpbmRpbmcgaWYgdGhhdCBzeW1ib2wgaXMgZGVmaW5lZCBieSB0aGUgYXBwbGljYXRpb24sIGR1ZSB0bworCSAgaW5jb3JyZWN0bHkgY29tYmluaW5nIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgdGVzdCBtYWNyb3MKKwkgIChyZXBvcnQgYnkgUGV0ZXIgS3J1c2UpLgorCisyMDExMTAyMgorCSsgY29ycmVjdCBsb2dpYyBmb3IgZGlzY2FyZGluZyBtb3VzZSBldmVudHMsIHJldGFpbmluZyB0aGUgcGFydGlhbAorCSAgZXZlbnRzIHVzZWQgdG8gYnVpbGQgdXAgY2xpY2ssIGRvdWJsZS1jbGljaywgZXRjLCB1bnRpbCBuZWVkZWQKKwkgIChjZjogMjAxMTA5MTcpLgorCSsgZml4IGNvbmZpZ3VyZSBzY3JpcHQgdG8gYXZvaWQgY3JlYXRpbmcgdW51c2VkIEFkYTk1IG1ha2VmaWxlIHdoZW4KKwkgIGduYXQgZG9lcyBub3Qgd29yay4KKwkrIGNsZWFudXAgd2lkdGgtcmVsYXRlZCBnY2MgMy40LjMgd2FybmluZ3MgZm9yIDY0LWJpdCBwbGF0Zm9ybSwgZm9yIHRoZQorCSAgaW50ZXJuYWwgZnVuY3Rpb25zIG9mIGxpYm5jdXJzZXMuICBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIG9mIGNvdXJzZXMKKwkgIHVzZXMgYm9vbCwgd2hpY2ggc3RpbGwgcHJvZHVjZXMgdGhlc2Ugd2FybmluZ3MuCisKKzIwMTExMDE1CisJKyBpbXByb3ZlIGRlc2NyaXB0aW9uIG9mIC0tZGlzYWJsZS10aWMtZGVwZW5kcyBvcHRpb24gdG8gbWFrZSBpdAorCSAgY2xlYXIgdGhhdCBpdCBtYXkgYmUgdXNlZnVsIHdoZXRoZXIgb3Igbm90IHRoZSAtLXdpdGgtdGVybWxpYgorCSAgb3B0aW9uIGlzIGFsc28gZ2l2ZW4gKHJlcG9ydCBieSBTdmVuIEpvYWNoaW0pLgorCSsgYW1lbmQgdGVybWNhcCBlcXVpdmFsZW50IGZvciBzZXRfcGdsZW5faW5jaCB0byB1c2UgdGhlIFgvT3BlbgorCSAgIllJIiByYXRoZXIgdGhhbiB0aGUgb2Jzb2xldGUgU29sYXJpcyAyLjUgInNMIiAoY2Y6IDk5MDEwOSkuCisJKyBpbXByb3ZlIG1hbnBhZ2UgZm9yIHRnZXRlbnQgZGlmZmVyZW5jZXMgZnJvbSB0ZXJtY2FwIGxpYnJhcnkuCisKKzIwMTExMDA4CisJKyBtb3ZlZCBzdGF0aWMgZGF0YSBmcm9tIGRiX2l0ZXJhdG9yLmMgdG8gbGliX2RhdGEuYworCSsgbW9kaWZ5IGRiX2l0ZXJhdG9yLmMgZm9yIG1lbW9yeS1sZWFrIGNoZWNraW5nLCBmaXggb25lIGxlYWsuCisJKyBtb2RpZnkgbWlzYy9nZW4tcGtnY29uZmlnLmluIHRvIHVzZSBSZXF1aXJlcy5wcml2YXRlIGZvciB0aGUgcGFydHMKKwkgIG9mIG5jdXJzZXMgcmF0aGVyIHRoYW4gUmVxdWlyZXMsIGFzIHdlbGwgYXMgTGlicy5wcml2YXRlIGZvciB0aGUKKwkgIG90aGVyIGxpYnJhcnkgZGVwZW5kZW5jaWVzIChwcm9tcHRlZCBieSBEZWJpYW4gIzY0NDcyOCkuCisKKzIwMTExMDAxCisJKyBtb2RpZnkgdGljICItSyIgb3B0aW9uIHRvIG9ubHkgc2V0IHRoZSBzdHJpY3QtZmxhZyByYXRoZXIgdGhhbiBmb3JjZQorCSAgc291cmNlLW91dHB1dC4gIFRoYXQgYWxsb3dzIHRoZSBzYW1lIGZsYWcgdG8gY29udHJvbCB0aGUgcGFyc2VyIGZvcgorCSAgaW5wdXQgYW5kIG91dHB1dCBvZiB0ZXJtY2FwIHNvdXJjZS4KKwkrIG1vZGlmeSBfbmNfZ2V0ZW50KCkgdG8gaWdub3JlIGJhY2tzbGFzaCBhdCB0aGUgZW5kIG9mIGEgY29tbWVudCBsaW5lLAorCSAgbWFraW5nIGl0IGNvbnNpc3RlbnQgd2l0aCBuY3Vyc2VzJyBwYXJzZXIuCisJKyByZXN0b3JlIGEgc3BlY2lhbC1jYXNlIGNoZWNrIGZvciBkaXJlY3RvcnkgbmVlZGVkIHRvIG1ha2UgdGVybWNhcAorCSAgdGV4dCBmaWxlcyBsb2FkIGFzIGlmIHRoZXkgd2VyZSBkYXRhYmFzZXMgKGNmOiAyMDExMDkyNCkuCisJKyBtb2RpZnkgdGljJ3MgcmVzb2x1dGlvbi9jb2xsaXNpb24gY2hlY2tpbmcgdG8gYXR0ZW1wdCB0byByZW1vdmUgdGhlCisJICBjb25mbGljdGluZyBhbGlhcyBmcm9tIHRoZSBzZWNvbmQgZW50cnkgaW4gdGhlIHBhaXIsIHdoaWNoIGlzCisJICBub3JtYWxseSBmb2xsb3dpbmcgaW4gdGhlIHNvdXJjZSBmaWxlLiAgQWxzbyBpbXByb3ZlZCB0aGUgd2FybmluZworCSAgbWVzc2FnZSB0byBtYWtlIGl0IHNpbXBsZXIgdG8gc2VlIHdoaWNoIGFsaWFzIGlzIHRoZSBwcm9ibGVtLgorCSsgaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB0aGUgZGF0YWJhc2UgaXRlcmF0b3IgYnkgY2FjaGluZyBzZWFyY2gtbGlzdC4KKworMjAxMTA5MjUKKwkrIGFkZCBhIG1pc3NpbmcgImVsc2UiIGluIGNoYW5nZXMgdG8gX25jX3JlYWRfdGljX2VudHJ5KCkuCisKKzIwMTEwOTI0CisJKyBtb2RpZnkgX25jX3JlYWRfdGljX2VudHJ5KCkgc28gdGhhdCBoYXNoZWQtZGF0YWJhc2UgaXMgY2hlY2tlZCBiZWZvcmUKKwkgIGZpbGVzeXN0ZW0uCisJKyB1cGRhdGVkIENGX0NVUlNFU19MSUJTIGNoZWNrIGluIHRlc3QvY29uZmlndXJlIHNjcmlwdC4KKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IGFuZCBtYWtlZmlsZXMgdG8gc3BsaXQgVElDX0FSR1MgYW5kCisJICBUSU5GT19BUkdTIGludG8gcGllY2VzIGNvcnJlc3BvbmRpbmcgdG8gTERGTEFHUyBhbmQgTElCUyB2YXJpYWJsZXMsCisJICB0byBoZWxwIHNlcGFyYXRlIHNlYXJjaGVzIGZvciB0aWMtIGFuZCB0aW5mby1saWJyYXJpZXMgKHBhdGNoIGJ5IE5pY2sKKwkgIEFsY29jayBha2EgIk5peCIpLgorCSsgYnVpbGQtZml4IGZvciBsaWJfbW91c2UuYyBjaGFuZ2VzIChjZjogMjAxMTA5MTcpLgorCisyMDExMDkxNworCSsgZml4IGNvbXBpbGVyIHdhcm5pbmcgZm9yIGNsYW5nIDIuOQorCSsgaW1wcm92ZSBtZXJnaW5nIG9mIG1vdXNlIGV2ZW50cyAoaW50ZWdyYXRlZCBwYXRjaCBieSBEYW1pZW4KKwkgIEd1aWJvdXJldCkuCisJKyBjb3JyZWN0IG1hc2stY2hlY2sgdXNlZCBpbiBsaWJfbW91c2UgZm9yIHdoZWVsIG1vdXNlIGJ1dHRvbnMgNC81CisJICAocGF0Y2ggYnkgRGFtaWVuIEd1aWJvdXJldCkuCisKKzIwMTEwOTEwCisJKyBtb2RpZnkgbWlzYy9nZW5fZWRpdC5zaCB0byBzZWxlY3QgYSAibGludXgiIGVudHJ5IHdoaWNoIHdvcmtzIHdpdGgKKwkgIHRoZSBjdXJyZW50IGtlcm5lbCByYXRoZXIgdGhhbiBhc3N1bWluZyBpdCBpcyBhbHdheXMgImxpbnV4My4wIgorCSAgKGNmOiAyMDExMDcxNikuCisJKyByZXZlcnQgYSBjaGFuZ2UgdG8gZ2V0bW91c2UoKSB3aGljaCBoYWQgdGhlIHVuZGVzaXJhYmxlIHNpZGUtZWZmZWN0CisJICBvZiBzdXBwcmVzc2luZyBidXR0b24tcmVsZWFzZSBldmVudHMgKHJlcG9ydCBieSBEYW1pZW4gR3VpYm91cmV0LAorCSAgY2Y6IDIwMTAwMTAyKS4KKwkrIGFkZCB4dGVybStrYnMgZnJhZ21lbnQgZnJvbSB4dGVybSAjMjcyIC1URAorCSsgYWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXBrZy1jb25maWctbGliZGlyIHRvIHByb3ZpZGUgY29udHJvbCBvdmVyCisJICB0aGUgYWN0dWFsIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHBjLWZpbGVzIGFyZSBpbnN0YWxsZWQsIGRvIG5vdCB1c2UKKwkgIHRoZSBwa2ctY29uZmlnIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZGlzY3Vzc2lvbiB3aXRoIEZyZWRlcmljIEwgVworCSAgTWV1bmllcikuCisJKyBhZGQgbGluayB0byBtYWlsaW5nLWxpc3QgYXJjaGl2ZSBpbiBhbm5vdW5jZS5odG1sLmluLCBhcyBkb25lIGluCisJICBGQVEgKHByb21wdGVkIGJ5IHF1ZXN0aW9uIGJ5IEFuZHJpdXMgQmVudGt1cykuCisJKyBpbXByb3ZlIG1hbnBhZ2UgaW5zdGFsbCBieSBhZGp1c3RpbmcgdGhlICIjaW5jbHVkZSIgZXhhbXBsZXMgdG8KKwkgIHNob3cgdGhlIG5jdXJzZXMtc3ViZGlyZWN0b3J5IHVzZWQgd2hlbiAtLWRpc2FibGUtb3ZlcndyaXRlIG9wdGlvbgorCSAgaXMgdXNlZC4KKwkrIGluc3RhbGwgYW4gYWxpYXMgZm9yICJjdXJzZXMiIHRvIHRoZSBuY3Vyc2VzIG1hbnBhZ2UsIHRpZWQgdG8gdGhlCisJICAtLXdpdGgtY3Vyc2VzLWggY29uZmlndXJlIG9wdGlvbiAoc3VnZ2VzdGVkIGJ5IFJldWJlbiBUaG9tYXMpLgorCisyMDExMDkwMworCSsgcHJvcGFnYXRlIGVycm9yLXJldHVybnMgZnJvbSB3cmVzaXplLCBpLmUuLCB0aGUgaW50ZXJuYWwKKwkgIGluY3JlYXNlX3NpemUgYW5kIGRlY3JlYXNlX3NpemUgZnVuY3Rpb25zIHRocm91Z2ggcmVzaXplX3Rlcm0gKHJlcG9ydAorCSAgYnkgVGltIHZhbiBkZXIgTW9sZW4sIGNmOiAgMjAwMjA3MTMpLgorCSsgZml4IHR5cG8gaW4gdHNldCBtYW5wYWdlIChwYXRjaCBieSBTdmVuIEpvYWNoaW0pLgorCisyMDExMDgyMAorCSsgYWRkIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGVybWNhcCBmaWxlcyB3aGljaCBtaWdodCBoYXZlICJePyIgZG8KKwkgIG5vdCB1c2UgdGhlIHRlcm1pbmZvIGludGVycHJldGF0aW9uIGFzICJcMTc3Ii4KKwkrIG1pbm9yIGNsZWFudXAgb2YgWC10ZXJtaW5hbCBlbXVsYXRvciBzZWN0aW9uIG9mIHRlcm1pbmZvLnNyYyAtVEQKKwkrIGFkZCB0ZXJtaW5hdG9yIGVudHJ5IC1URAorCSsgYWRkIHNpbXBsZXRlcm0gZW50cnkgLVRECisJKyBpbXByb3ZlIHdhdHRyX2dldCBtYWNyb3MgYnkgZW5zdXJpbmcgdGhhdCBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMKKwkgIG51bGwsIHRoZW4gdGhlIGF0dHJpYnV0ZSBhbmQgY29sb3IgdmFsdWVzIHJldHVybmVkIHdpbGwgYmUgemVybworCSAgKGNmOiAyMDExMDUyOCkuCisKKzIwMTEwODEzCisJKyBhZGQgc3Vic3RpdHV0aW9uIGZvciAkUlBBVEhfTElTVCB0byBtaXNjL25jdXJzZXMtY29uZmlnLmluCisJKyBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRpYyB3aXRoIGhhc2hlZC1kYXRhYmFzZSBieSBjYWNoaW5nIHRoZQorCSAgZGF0YWJhc2UgY29ubmVjdGlvbiwgdXNpbmcgYXRleGl0KCkgdG8gY2xlYW51cC4KKwkrIG1vZGlmeSB0cmVhdG1lbnQgb2YgMi1jaGFyYWN0ZXIgYWxpYXNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRlcm1jYXAKKwkgIGVudHJpZXMgc28gdGhleSBhcmUgbm90IGNvdW50ZWQgaW4gdXNlLXJlc29sdXRpb24sIHNpbmNlIHRoZXNlIGFyZQorCSAgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUuICBBbHNvIGlnbm9yZSB0aGVzZSBhbGlhc2VzIHdoZW4gcmVwb3J0aW5nCisJICB0aGUgcHJpbWFyeSBuYW1lIG9mIHRoZSBlbnRyeSAoY2Y6IDIwMDQwNTAxKQorCSsgZG91YmxlLWNoZWNrIGduIChnZW5lcmljKSBmbGFnIGluIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyB0bworCSAgYWNjb21tb2RhdGUgb2xkL2J1Z2d5IHRlcm1jYXAgZGF0YWJhc2VzIHdoaWNoIG1pc3VzZWQgdGhhdCBmZWF0dXJlLgorCSsgbWlub3IgZml4ZXMgdG8gX25jX3RnZXRlbnQoKSwgZW5zdXJlIGJ1ZmZlciBpcyBpbml0aWFsaXplZCBldmVuIG9uCisJICBlcnJvci1yZXR1cm4uCisKKzIwMTEwODA3CisJKyBpbXByb3ZlIHJwYXRoIGZpeCBmcm9tIDIwMTEwNzMwIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG5ldyAkUlBBVEhfTElTVAorCSAgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgbWFrZWZpbGVzIHdoaWNoIHVzZSBpdC4KKwkrIGJ1aWxkLWZpeCBmb3IgRHJhZ29uRmx5QlNEJ3MgcGtnc3JjIGluIHRlc3QvY29uZmlndXJlIHNjcmlwdC4KKwkrIGJ1aWxkLWZpeGVzIGZvciBOZXRCU0QgNS4xIHdpdGggdGVybWNhcCBzdXBwb3J0IGVuYWJsZWQuCisJKyBjb3JyZWN0ZWQgazkgaW4gZGc0NjAtYW5zaSwgYWRkIG90aGVyIGZlYXR1cmVzIGJhc2VkIG9uIG1hbnVhbHMgLVRECisJKyBpbXByb3ZlIHRyaW1taW5nIG9mIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0ZXJtaW5mby90ZXJtY2FwIG91dHB1dAorCSAgZnJvbSB0aWMvaW5mb2NtcC4KKwkrIHdoZW4gd3JpdGluZyB0ZXJtY2FwIHNvdXJjZSwgZW5zdXJlIHRoYXQgY29sb25zIGluIHRoZSBkZXNjcmlwdGlvbgorCSAgZmllbGQgYXJlIHRyYW5zbGF0ZWQgdG8gYSBub24tZGVsaW1pdGVyLCBpLmUuLCAiPSIuCisJKyBhZGQgIi0wIiBvcHRpb24gdG8gdGljL2luZm9jbXAsIHRvIG1ha2UgdGhlIHRlcm1jYXAvdGVybWluZm8gc291cmNlCisJICB1c2UgYSBzaW5nbGUgbGluZS4KKwkrIGFkZCBhIG51bGwtcG9pbnRlciBjaGVjayB3aGVuIGhhbmRsaW5nIHRoZSAkQ0MgdmFyaWFibGUuCisKKzIwMTEwNzMwCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCBhbmQgbWFrZWZpbGVzIGluIGMrKyBhbmQgcHJvZ3MgdG8gYWxsb3cgdGhlCisJICBkaXJlY3RvcnkgdXNlZCBmb3IgcnBhdGggb3B0aW9uIHRvIGJlIG92ZXJyaWRkZW4sIGUuZy4sIHRvIHdvcmsKKwkgIGFyb3VuZCB1cGRhdGVzIHRvIHRoZSB2YXJpYWJsZXMgdXNlZCBieSB0aWMgZHVyaW5nIGFuIGluc3RhbGwuCisJKyBhZGQgLUsgb3B0aW9uIHRvIHRpYy9pbmZvY21wLCB0byBwcm92aWRlIHN0cmljdGVyIEJTRC1jb21wYXRpYmlsaXR5CisJICBmb3IgdGVybWNhcCBvdXRwdXQuCisJKyBhZGQgX25jX3N0cmljdF9ic2QgdmFyaWFibGUgaW4gdGljIGxpYnJhcnkgd2hpY2ggY29udHJvbHMgdGhlCisJICAic3RyaWN0IiBCU0QgdGVybWNhcCBjb21wYXRpYmlsaXR5IGZyb20gMjAxMTA3MjMsIHBsdXMgdGhlc2UKKwkgIGZlYXR1cmVzOgorCSAgKyBhbGxvdyBlc2NhcGVzIHN1Y2ggYXMgIlw4IiBhbmQgIlw5IiB3aGVuIHJlYWRpbmcgdGVybWNhcAorCSAgKyBkaXNhbGxvdyAiXGEiLCAiXGUiLCAiXGwiLCAiXHMiIGFuZCAiXDoiIGVzY2FwZXMgd2hlbiByZWFkaW5nCisJICAgIHRlcm1jYXAgZmlsZXMsIHBhc3NpbmcgdGhyb3VnaCAiYSIsICJlIiwgZXRjLgorCSAgKyBleHBhbmQgIlw6IiBhcyAiXDA3MiIgb24gb3V0cHV0LgorCSsgbW9kaWZ5IF9uY19nZXRfdG9rZW4oKSB0byByZXNldCB0aGUgdG9rZW4ncyBzdHJpbmcgdmFsdWUgaW4gY2FzZQorCSAgdGhlcmUgaXMgYSBzdHJpbmctdHlwZWQgdG9rZW4gbGFja2luZyB0aGUgIj0iIG1hcmtlci4KKwkrIGZpeCBhIGZldyBtZW1vcnkgbGVha3MgaW4gX25jX3RnZXRlbnQuCisJKyBmaXggYSBmZXcgcGxhY2VzIHdoZXJlIHJlYWRpbmcgZnJvbSBhIHRlcm1jYXAgZmlsZSBjb3VsZCByZWZlciB0bworCSAgZnJlZWQgbWVtb3J5LgorCSsgYWRkIGFuIG92ZXJmbG93IGNoZWNrIHdoZW4gY29udmVydGluZyB0ZXJtaW5mby90ZXJtY2FwIG51bWVyaWMKKwkgIHZhbHVlcywgc2luY2UgdGVybWluZm8gc3RvcmVzIHRob3NlIGluIGEgc2hvcnQsIGFuZCB0aGV5IG11c3QgYmUKKwkgIHBvc2l0aXZlLgorCSsgY29ycmVjdCBpbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdG8gdGVybWNhcCAiJT4iCisJICBmZWF0dXJlLCBhbmQgdHJhbnNsYXRpbmcgZnJvbSB0ZXJtY2FwICVCIHRvIHRlcm1pbmZvLCBuZWVkZWQgYnkKKwkgIHRjdGVzdCAoY2Y6IDE5OTkxMjExKS4KKwkrIGFtZW5kIGEgbWlub3IgZml4IHRvIGFjc2Mgd2hlbiBsb2FkaW5nIGEgdGVybWNhcCBmaWxlIHRvIHNlcGFyYXRlIGl0CisJICBmcm9tIHdhcm5pbmdzIG5lZWRlZCBmb3IgdGljIChjZjogMjAwNDA3MTApCisJKyBtb2RpZnkgbG9naWMgaW4gX25jX3JlYWRfZW50cnkoKSBhbmQgX25jX3JlYWRfdGljX2VudHJ5KCkgdG8gYWxsb3cKKwkgIGEgdGVybWNhcCBmaWxlIHRvIGJlIGhhbmRsZWQgdmlhIFRFUk1JTkZPX0RJUlMuCisJKyBtb2RpZnkgX25jX2luZm90b2NhcCgpIHRvIGluY2x1ZGUgbm9uLW1hbmRhdG9yeSBwYWRkaW5nIHdoZW4KKwkgIHRyYW5zbGF0aW5nIHRvIHRlcm1jYXAuCisJKyBtb2RpZnkgX25jX3JlYWRfdGVybWNhcF9lbnRyeSgpLCBwYXNzaW5nIGEgZmxhZyBpbiB0aGUgY2FzZSB3aGVyZQorCSAgZ2V0Y2FwIGlzIHVzZWQsIHRvIHJlZHVjZSBpbnRlcmFjdGl2ZSB3YXJuaW5nIG1lc3NhZ2VzLgorCisyMDExMDcyMworCSsgYWRkIGEgY2hlY2sgaW4gc3RhcnRfY29sb3IoKSB0byBsaW1pdCBjb2xvci1wYWlycyB0byAyNTYgd2hlbgorCSAgZXh0ZW5kZWQgY29sb3JzIGFyZSBub3Qgc3VwcG9ydGVkIChwYXRjaCBieSBEYXZpZCBCZW5qYW1pbikuCisJKyBtb2RpZnkgc2V0Y2NoYXIgdG8gb21pdCBuby1sb25nZXItbmVlZGVkIE9SJ2luZyBvZiBjb2xvciBwYWlyIGluCisJICB0aGUgU2V0QXR0cigpIG1hY3JvIChwYXRjaCBieSBEYXZpZCBCZW5qYW1pbikuCisJKyBhZGQga2ljaDEgdG8gc3VuIHRlcm1pbmZvIGVudHJ5IChZdXJpIFBhbmtvdikKKwkrIHVzZSBib2xkIHJhdGhlciB0aGFuIHJldmVyc2UgZm9yIHNtc28gaW4gc3VuLWNvbG9yIHRlcm1pbmZvIGVudHJ5CisJICAoWXVyaSBQYW5rb3YpLgorCSsgaW1wcm92ZSBnZW5lcmF0aW9uIG9mIHRlcm1jYXAgdXNpbmcgdGljL2luZm9jbXAgLUMgb3B0aW9uLCBlLmcuLAorCSAgdG8gY29ycmVzcG9uZCB3aXRoIDQuMkJTRCAocHJvbXB0ZWQgYnkgZGlzY3Vzc2lvbiB3aXRoIFl1cmkgUGFua292CisJICByZWdhcmRpbmcgU2NoaWxsaW5nJ3MgdGVzdCBwcm9ncmFtKToKKwkgICsgdHJhbnNsYXRlICUwMiBhbmQgJTAzIHRvICUyIGFuZCAlMyByZXNwZWN0aXZlbHkuCisJICArIHN1cHByZXNzIHN0cmluZyBjYXBhYmlsaXRpZXMgd2hpY2ggdXNlICVzLCBub3Qgc3VwcG9ydGVkIGJ5IHRnb3RvCisJICArIHVzZSBcMDQwIHJhdGhlciB0aGFuIFxzCisJICArIGV4cGFuZCBudWxsIGNoYXJhY3RlcnMgYXMgXDIwMCByYXRoZXIgdGhhbiBcMAorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGZvciBEcmFnb25GbHlCU0QuCisKKzIwMTEwNzE2CisJKyByZXBsYWNlIGFuIGFzc2VydCgpIGluIF9uY19GcmVlX0FyZ3VtZW50KCkgd2l0aCBhIHJlZ3VsYXIgbnVsbAorCSAgcG9pbnRlciBjaGVjayAocmVwb3J0L2FuYWx5c2lzIGJ5IEZyYW5qbyBJdmFuY2ljKS4KKwkrIG1vZGlmeSBjb25maWd1cmUgLS1lbmFibGUtcGMtZmlsZXMgb3B0aW9uIHRvIHRha2UgaW50byBhY2NvdW50IHRoZQorCSAgUEtHX0NPTkZJR19QQVRIIHZhcmlhYmxlIChyZXBvcnQgYnkgRnJlZGVyaWMgTCBXIE1ldW5pZXIpLgorCSsgYWRkL3VzZSB4dGVybSt0bXV4IGNodW5rIGZyb20geHRlcm0gIzI3MSAtVEQKKwkrIHJlc3luYyB4dGVybS1uZXcgZW50cnkgZnJvbSB4dGVybSAjMjcxIC1URAorCSsgYWRkIEUzIGV4dGVuZGVkIGNhcGFiaWxpdHkgdG8gbGludXgtYmFzaWMgKE1pcm9zbGF2IExpY2h2YXIpCisJKyBhZGQgbGludXgyLjIsIGxpbnV4Mi42LCBsaW51eDMuMCBlbnRyaWVzIHRvIGdpdmUgY29udGV4dCBmb3IgRTMgLVRECisJKyBhZGQgU0kvU08gY2hhbmdlIHRvIGxpbnV4Mi42IGVudHJ5IChEZWJpYW4gIzUxNTYwOSkgLVRECisJKyBmaXggaW5jb25zaXN0ZW50IHRhYnNldCBwYXRoIGluIHBjbXcgKFRvZGQgQy4gTWlsbGVyKS4KKwkrIHJlbW92ZSBhIGJhY2tzbGFzaCB3aGljaCBjb250aW51ZWQgY29tbWVudCwgb2JzY3VyaW5nIGFsdG9zMworCSAgZGVmaW5pdGlvbiB3aXRoIE9wZW5CU0QgdG9vbHNldCAoTmljaG9sYXMgTWFycmlvdHQpLgorCisyMDExMDcwMgorCSsgYWRkIHdvcmthcm91bmQgZnJvbSB4dGVybSAjMjcxIGNoYW5nZXMgdG8gZW5zdXJlIHRoYXQgY29tcGlsZXIgZmxhZ3MKKwkgIGFyZSBub3QgdXNlZCBpbiB0aGUgJENDIHZhcmlhYmxlLgorCSsgaW1wcm92ZSBzdXBwb3J0IGZvciBzaGFyZWQgbGlicmFyaWVzLCB0ZXN0ZWQgd2l0aCBBSVggNS4zLCA2LjEgYW5kCisJICA3LjEgd2l0aCBib3RoIGdjYyA0LjIuNCBhbmQgY2MuCisJKyBtb2RpZnkgY29uZmlndXJlIGNoZWNrcyBmb3IgQUlYIHRvIGluY2x1ZGUgcmVsZWFzZSA3LngKKwkrIGFkZCBsb2FkZXIgZmxhZ3MvbGlicmFyaWVzIHRvIGxpYnRvb2wgb3B0aW9ucyBzbyB0aGF0IGR5bmFtaWMgbG9hZGluZworCSAgd29ya3MgcHJvcGVybHksIGFkYXB0ZWQgZnJvbSBuY3Vyc2VzLTUuNy1sZGZsYWdzLXdpdGgtbGlidG9vbC5wYXRjaAorCSAgYXQgZ2VudG9vIHByZWZpeCByZXBvc2l0b3J5IChwYXRjaCBieSBNaWNoYWVsIEhhdWJlbndhbGxuZXIpLgorCisyMDExMDYyNgorCSsgbW92ZSBpbmNsdWRlIG9mIG5jX3Rlcm1pb3MuaCBvdXQgb2YgdGVybV9lbnRyeS5oLCBzaW5jZSB0aGUgbGF0dGVyCisJICBpcyBpbnN0YWxsZWQsIGUuZy4sIGZvciB0YWNrIHdoaWxlIHRoZSBmb3JtZXIgaXMgbm90IChyZXBvcnQgYnkKKwkgIFN2ZW4gSm9hY2hpbSkuCisKKzIwMTEwNjI1CisJKyBpbXByb3ZlIGNsZWFudXAoKSBmdW5jdGlvbiBpbiBsaWJfdHN0cC5jLCB1c2luZyBfZXhpdCgpIHJhdGhlciB0aGFuCisJICBleGl0KCkgYW5kIGNoZWNraW5nIGZvciBTSUdURVJNIHJhdGhlciB0aGFuIFNJR1FVSVQgKHByb21wdGVkIGJ5CisJICBjb21tZW50cyBmb3J3YXJkZWQgYnkgTmljaG9sYXMgTWFycmlvdHQpLgorCSsgcmVkdWNlIG5hbWUgcG9sbHV0aW9uIGZyb20gdGVybS5oLCBtb3ZpbmcgZmFsbGJhY2sgI2RlZmluZSdzIGZvcgorCSAgdGNnZXRhdHRyKCksIGV0Yy4sIHRvIG5ldyBwcml2YXRlIGhlYWRlciBuY190ZXJtaW9zLmggKHJlcG9ydCBieQorCSAgU2VyZ2lvIE5OWCkuCisJKyB0d28gbWlub3IgZml4ZXMgZm9yIHRyYWNpbmcgKHBhdGNoIGJ5IFZhc3NpbGkgQ291cnpha2lzKS4KKwkrIGltcHJvdmUgdHJhY2UgaW5pdGlhbGl6YXRpb24gYnkgc3RhcnRpbmcgaXQgaW4gdXNlX2VudigpIGFuZAorCSAgcmlwb2ZmbGluZSgpLgorCSsgcmV2aWV3IG9sZCBlbWFpbCwgYWRkIGRldGFpbHMgZm9yIHNvbWUgY2hhbmdlbG9nIGVudHJpZXMuCisKKzIwMTEwNjExCisJKyB1cGRhdGUgbWluaXggZW50cnkgdG8gbWluaXggMy4yIChUaG9tYXMgQ29ydCkuCisJKyBmaXggYSBzdHJpY3QgY29tcGlsZXIgd2FybmluZyBpbiBjaGFuZ2UgdG8gd2F0dHJfZ2V0IChjZjogMjAxMTA1MjgpLgorCisyMDExMDYwNAorCSsgZml4ZXMgZm9yIE1pckJTRCBwb3J0OgorCSAgKyBzZXQgZGVmYXVsdCBwcmVmaXggdG8gL3Vzci4KKwkgICsgYWRkIHN1cHBvcnQgZm9yIHNoYXJlZCBsaWJyYXJpZXMgaW4gY29uZmlndXJlIHNjcmlwdC4KKwkgICsgdXNlIFNfSVNSRUcgYW5kIFNfSVNESVIgY29uc2lzdGVudGx5LCB3aXRoIGZhbGxiYWNrIGRlZmluaXRpb25zLgorCSsgYWRkIGEgZmV3IG1vcmUgY2hlY2tzIGJhc2VkIG9uIG5jdXJzZXMvbGlua190ZXN0LgorCSsgbW9kaWZ5IE1LbGliX2dlbi5zaCB0byBoYW5kbGUgc3AtZnVuY3MgcmVuYW1pbmcgb2YgTkNVUlNFU19PVVRDIHR5cGUuCisKKzIwMTEwNTI4CisJKyBhZGQgY2FzZSB0byBDRl9TSEFSRURfT1BUUyBmb3IgSW50ZXJpeCAocGF0Y2ggYnkgTWFya3VzIER1ZnQpLgorCSsgdXNlZCBuY3Vyc2VzL2xpbmtfdGVzdCB0byBjaGVjayBmb3IgYmVoYXZpb3Igd2hlbiB0aGUgdGVybWluYWwgaGFzCisJICBub3QgYmVlbiBpbml0aWFsaXplZCBhbmQgd2hlbiBhbiBhcHBsaWNhdGlvbiBwYXNzZXMgbnVsbCBwb2ludGVycworCSAgdG8gdGhlIGxpYnJhcnkuICBBZGRlZCBjaGVja3MgdG8gY292ZXIgdGhpcyAocHJvbXB0ZWQgYnkgUmVkaGF0CisJICAjNzA3MzQ0KS4KKwkrIG1vZGlmeSBNS2xpYl9nZW4uc2ggdG8gbWFrZSBpdHMgbWFpbigpIGZ1bmN0aW9uIGNhbGwgZWFjaCBmdW5jdGlvbgorCSAgd2l0aCB6ZXJvIHBhcmFtZXRlcnMsIHRvIGhlbHAgZmluZCBpbmNvbnNpc3RlbnQgY2hlY2tpbmcgZm9yIG51bGwKKwkgIHBvaW50ZXJzLCBldGMuCisKKzIwMTEwNTIxCisJKyBmaXggd2FybmluZ3MgZnJvbSBjbGFuZyAyLjcgIi0tYW5hbHl6ZSIKKworMjAxMTA1MTQKKwkrIGNvbXBpbGVyLXdhcm5pbmcgZml4ZXMgaW4gcGFuZWwgYW5kIHByb2dzLgorCSsgbW9kaWZ5IENGX1BLR19DT05GSUcgbWFjcm8sIGZyb20gY2hhbmdlcyB0byB0aW4gLVRECisJKyBtb2RpZnkgQ0ZfQ1VSU0VTX0ZVTkNTIGNvbmZpZ3VyZSBtYWNybywgdXNlZCBpbiB0ZXN0IGRpcmVjdG9yeQorCSAgY29uZmlndXJlIHNjcmlwdDoKKwkgICsgd29yayBhcm91bmQgKG5vbi1vcHRpbWl6ZXIpIGJ1ZyBpbiBnY2MgNC4yLjEgd2hpY2ggY2F1c2VkCisJICAgIHRlc3QtZXhwcmVzc2lvbiB0byBiZSBvbWl0dGVkIGZyb20gZXhlY3V0YWJsZS4KKwkgICsgZm9yY2UgdGhlIGxpbmtlciB0byBzZWUgYSBsaW5rLXRpbWUgZXhwcmVzc2lvbiBvZiBhIHN5bWJvbCwgdG8KKwkgICAgaGVscCB3b3JrIGFyb3VuZCB3ZWFrLXN5bWJvbCBpc3N1ZXMuCisKKzIwMTEwNTA3CisJKyB1cGRhdGUgZGlzY3Vzc2lvbiBvZiBNS2ZhbGxiYWNrLnNoIHNjcmlwdCBpbiBJTlNUQUxMOyBub3JtYWxseSB0aGUKKwkgIHNjcmlwdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkgdmlhIHRoZSBjb25maWd1cmVkIG1ha2VmaWxlcy4gIEhvd2V2ZXIKKwkgIHRoZXJlIGFyZSBzdGlsbCBvY2Nhc2lvbnMgd2hlbiBpdCBtaWdodCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHBhY2thZ2VycworCSAgKHJlcG9ydCBieSBHdW50ZXIgU2NoYWZmbGVyKS4KKwkrIG1vZGlmeSBtaXNjL25jdXJzZXMtY29uZmlnLmluIHRvIG9taXQgdGhlICItTCIgb3B0aW9uIGZyb20gdGhlCisJICAiLS1saWJzIiBvdXRwdXQgaWYgdGhlIGxpYnJhcnkgZGlyZWN0b3J5IGlzIC91c3IvbGliLgorCSsgY2hhbmdlIG9yZGVyIG9mIHRlc3RzIGZvciBjdXJzZXMuaCB2ZXJzdXMgbmN1cnNlcy5oIGhlYWRlcnMgaW4gdGhlCisJICBjb25maWd1cmUgc2NyaXB0cyBmb3IgQWRhOTUgYW5kIHRlc3QtZGlyZWN0b3JpZXMsIHRvIGxvb2sgZm9yCisJICBuY3Vyc2VzLmgsIGZyb20gZml4ZXMgdG8gdGluIC1URAorCSsgbW9kaWZ5IG5jdXJzZXMvdGluZm8vYWNjZXNzLmMgdG8gYWNjb3VudCBmb3IgVGFuZGVtJ3Mgcm9vdCB1aWQKKwkgIChyZXBvcnQgYnkgSm9hY2hpbSBTY2htaXR6KS4KKworMjAxMTA0MzAKKwkrIG1vZGlmeSBydWxlcyBpbiBBZGE5NS9zcmMvTWFrZWZpbGUuaW4gdG8gZW5zdXJlIHRoYXQgdGhlIFBJQyBvcHRpb24KKwkgIGlzIG5vdCB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGF0aWMgbGlicmFyeSAocmVwb3J0IGJ5IE5pY29sYXMKKwkgIEJvdWxlbmd1ZXopOgorCSsgQWRhOTUgYnVpbGQtZml4IGZvciBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgc3VjaCBhcyBzcGFyYy4gIFRoaXMKKwkgIHVuZG9lcyBvbmUgb2YgdGhlIGZpeGVzIGZyb20gMjAxMTAzMTksIHdoaWNoIGFkZGVkIGFuICJVbnVzZWQiIG1lbWJlcgorCSAgdG8gcmVwcmVzZW50YXRpb24gY2xhdXNlcywgcmVwbGFjaW5nIHRoYXQgd2l0aCBwcmFnbWFzIHRvIHN1cHByZXNzCisJICB3YXJuaW5ncyBhYm91dCB1bnVzZWQgYml0cyAocGF0Y2ggYnkgTmljb2xhcyBCb3VsZW5ndWV6KS4KKworMjAxMTA0MjMKKwkrIGFkZCBjaGVjayBpbiB0ZXN0L2NvbmZpZ3VyZSBmb3IgdXNlX3dpbmRvdywgdXNlX3NjcmVlbi4KKwkrIGFkZCBjb25maWd1cmUtY2hlY2tzIGZvciBnZXRvcHQncyB2YXJpYWJsZXMsIHdoaWNoIG1heSBiZSBkZWNsYXJlZAorCSAgYXMgZGlmZmVyZW50IHR5cGVzIG9uIHNvbWUgVW5peCBzeXN0ZW1zLgorCSsgYWRkIGNoZWNrIGluIHRlc3QvY29uZmlndXJlIGZvciBzb21lIGxlZ2FjeSBjdXJzZXMgdHlwZXMgb2YgdGhlCisJICBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCB0byB0cHV0cygpLgorCSsgbW9kaWZ5IGluaXRfcGFpcigpIHRvIGFjY2VwdCAtMSdzIGZvciBjb2xvciB2YWx1ZSBhZnRlcgorCSAgYXNzdW1lX2RlZmF1bHRfY29sb3JzKCkgaGFzIGJlZW4gY2FsbGVkIChEZWJpYW4gIzMzNzA5NSkuCisJKyBtb2RpZnkgdGVzdC9iYWNrZ3JvdW5kLmMsIGFkZGluZyBjb21tbWFuZC1saW5lIG9wdGlvbnMgdG8gZGVtb25zdHJhdGUKKwkgIGFzc3VtZV9kZWZhdWx0X2NvbG9ycygpIGFuZCB1c2VfZGVmYXVsdF9jb2xvcnMoKS4KKworMjAxMTA0MTYKKwkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0L3NvdXJjZS1jb2RlIHRvIG9ubHkgZGVmaW5lIF9QT1NJWF9TT1VSQ0UgaWYKKwkgIHRoZSBjaGVja3MgZm9yIHNpZ2FjdGlvbiBhbmQvb3IgdGVybWlvcyBmYWlsLCBhbmQgaWYgX1BPU0lYX0NfU09VUkNFCisJICBhbmQgX1hPUEVOX1NPVVJDRSBhcmUgdW5kZWZpbmVkIChyZXBvcnQgYnkgVmFsZW50aW4gT2NocykuCisJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViCisKKzIwMTEwNDA5CisJKyBmaXhlcyB0byBidWlsZCBjKysgYmluZGluZyB3aXRoIGNsYW5nIDMuMCAocGF0Y2ggYnkgQWxleGFuZGVyCisJICBLb2xlc2VuKS4KKwkrIGFkZCBjaGVjayBmb3IgdW5jdHJsLmggaW4gdGVzdC9jb25maWd1cmUsIHRvIHdvcmsgYXJvdW5kIGJyZWFrYWdlIGluCisJICBzb21lIG5jdXJzZXMgcGFja2FnZXMuCisJKyBhZGQgIi0tZGlzYWJsZS13aWRlYyIgb3B0aW9uIHRvIHRlc3QvY29uZmlndXJlIHNjcmlwdC4KKwkrIGFkZCAiLS13aXRoLWN1cnNlcy1jb2xyIiBhbmQgIi0td2l0aC1jdXJzZXMtNWxpYiIgb3B0aW9ucyB0byB0aGUKKwkgIHRlc3QvY29uZmlndXJlIHNjcmlwdCB0byBhZGRyZXNzIHRlc3Rpbmcgd2l0aCB2ZXJ5IG9sZCBtYWNoaW5lcy4KKworMjAxMTA0MDQgNS45IHJlbGVhc2UgZm9yIHVwbG9hZCB0byBmdHAuZ251Lm9yZworCisyMDExMDQwMgorCSsgdmFyaW91cyBidWlsZC1maXhlcyBmb3IgdGhlIHJwbS9kcGtnIHNjcmlwdHMuCisJKyBhZGQgIi0tZW5hYmxlLXJwYXRoLWxpbmsiIG9wdGlvbiB0byBBZGE5NS9jb25maWd1cmUsIHRvIGFsbG93CisJICBwYWNrYWdlcyB0byBzdXBwcmVzcyB0aGUgcnBhdGggZmVhdHVyZSB3aGljaCBpcyBub3JtYWxseSB1c2VkIGZvcgorCSAgdGhlIGluLXRyZWUgYnVpbGQgb2Ygc2FtcGxlIHByb2dyYW1zLgorCSsgY29ycmVjdGVkIGRlZmluaXRpb24gb2YgbGliZGlyIHZhcmlhYmxlIGluIEFkYTk1L3NyYy9NYWtlZmlsZS5pbiwKKwkgIG5lZWRlZCBmb3IgcnBtIHNjcmlwdC4KKwkrIGFkZCAiLS13aXRoLXNoYXJlZCIgb3B0aW9uIHRvIEFkYTk1L2NvbmZpZ3VyZSBzY3JpcHQsIHRvIGFsbG93CisJICBtYWtpbmcgdGhlIEMtbGFuZ3VhZ2UgcGFydHMgb2YgdGhlIGJpbmRpbmcgdXNlIGFwcHJvcHJpYXRlIGNvbXBpbGVyCisJICBvcHRpb25zIGlmIGJ1aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkgd2l0aCBnbmF0LgorCisyMDExMDMyOQorCT4gcG9ydGFiaWxpdHkgZml4ZXMgZm9yIEFkYTk1IGJpbmRpbmc6CisJKyBhZGQgY29uZmlndXJlIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFNJR0lOVCB3b3JrcyB3aXRoIGduYXQuICBUaGlzIGlzCisJICBuZWVkZWQgZm9yIHRoZSAicmFpbiIgc2FtcGxlIHByb2dyYW0uICBJZiBTSUdJTlQgZG9lcyBub3Qgd29yaywgb21pdAorCSAgdGhhdCBzYW1wbGUgcHJvZ3JhbS4KKwkrIGNvcnJlY3QgdHlwbyBpbiBjaGVjayBvZiAkUEtHX0NPTkZJRyB2YXJpYWJsZSBpbiBBZGE5NS9jb25maWd1cmUKKwkrIGFkZCBuY3Vyc2VzX2NvbXBhdC5jLCB0byBzdXBwbHkgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIEFkYTk1IGJpbmRpbmcKKwkgIHdoaWNoIHdlcmUgYWRkZWQgaW4gNS43IGFuZCBsYXRlci4KKwkrIG1vZGlmeSBzZWQgZXhwcmVzc2lvbiBpbiBDRl9OQ1VSU0VTX0FERE9OIHRvIGVsaW1pbmF0ZSBhIGRlcGVuZGVuY3kKKwkgIHVwb24gR05VIHNlZC4KKworMjAxMTAzMjYKKwkrIGFkZCBzcGVjaWFsIGNoZWNrIGluIEFkYTk1L2NvbmZpZ3VyZSBzY3JpcHQgZm9yIG5jdXJzZXM2IHJlZW50cmFudAorCSAgY29kZS4KKwkrIHJlZ2VuIEFkYSBodG1sIGRvY3VtZW50YXRpb24uCisJKyBidWlsZC1maXggZm9yIEFkYSBzaGFyZWQgbGlicmFyaWVzIHZlcnN1cyB0aGUgdmFyYXJncyB3b3JrYXJvdW5kLgorCSsgYWRkIHJwbSBhbmQgZHBrZyBzY3JpcHRzIGZvciBBZGE5NSBhbmQgdGVzdCBkaXJlY3RvcmllcywgZm9yIHRlc3QKKwkgIGJ1aWxkcy4KKwkrIHVwZGF0ZSB0ZXN0L2NvbmZpZ3VyZSBtYWNyb3MgQ0ZfQ1VSU0VTX0xJQlMsIENGX1hPUEVOX1NPVVJDRSBhbmQKKwkgIENGX1hfQVRIRU5BX0xJQlMuCisJKyBhZGQgY29uZmlndXJlIGNoZWNrIHRvIGRldGVybWluZSBpZiBnbmF0J3MgcHJvamVjdCBmZWF0dXJlIHN1cHBvcnRzCisJICBsaWJyYXJpZXMsIGkuZS4sIGNvbGxlY3Rpb25zIG9mIC5hbGkgZmlsZXMuCisJKyBtYWtlIGFsbCBkZXJlZmVyZW5jZXMgaW4gQWRhOTUgc2FtcGxlcyBleHBsaWNpdC4KKwkrIGZpeCB0eXBvIGluIGNvbW1lbnQgaW4gbGliX2FkZF93Y2guYyAocGF0Y2ggYnkgUGV0ciBQYXZsdSkuCisJKyBhZGQgY29uZmlndXJlIGNoZWNrIGZvciwgaWZkZWYncyBmb3IgbWF0aC5oIHdoaWNoIGlzIGluIGEgc2VwYXJhdGUKKwkgIHBhY2thZ2Ugb24gU29sYXJpcyBhbmQgcG90ZW50aWFsbHkgbm90IGluc3RhbGxlZCAocmVwb3J0IGJ5IFBldHIKKwkgIFBhdmx1KS4KKwk+IGZpeGVzIGZvciBBZGE5NSBiaW5kaW5nIChOaWNvbGFzIEJvdWxlbmd1ZXopOgorCSsgaW1wcm92ZSB0eXBlLWNoZWNraW5nIGluIEFkYTk1IGJ5IGVsaW1pbmF0aW5nIGEgZmV3IHdhcm5pbmctc3VwcHJlc3MKKwkgIHByYWdtYXMuCisJKyBzdXBwcmVzcyB1bnJlZmVyZW5jZWQgd2FybmluZ3MuCisJKyBtYWtlIGFsbCBkZXJlZmVyZW5jZXMgaW4gYmluZGluZyBleHBsaWNpdC4KKworMjAxMTAzMTkKKwkrIHJlZ2VuIEFkYSBodG1sIGRvY3VtZW50YXRpb24uCisJKyBjaGFuZ2Ugb3JkZXIgb2YgLUkgb3B0aW9ucyBmcm9tIG5jdXJzZXMqLWNvbmZpZyBzY3JpcHQgd2hlbiB0aGUKKwkgIC0tZGlzYWJsZS1vdmVyd3JpdGUgb3B0aW9uIHdhcyB1c2VkLCBzbyB0aGF0IHRoZSBzdWJkaXJlY3RvcnkgaW5jbHVkZQorCSAgaXMgbGlzdGVkIGZpcnN0LgorCSsgbW9kaWZ5IHRoZSBtYWtlLXRhci5zaCBzY3JpcHRzIHRvIGFkZCBhIE1BTklGRVNUIGFuZCBORVdTIGZpbGUuCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBwcm92aWRlIHZhbHVlIGZvciBIVE1MX0RJUiBpbgorCSAgQWRhOTUvZ2VuL01ha2VmaWxlLmluLCB3aGljaCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIEFkYTk1IGJpbmRpbmcgaXMKKwkgIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHkgKHJlcG9ydCBieSBOaWNvbGFzIEJvdWxlbmd1ZXopLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gYWRkICItZyIgYW5kL29yICItTzMiIHRvIEFEQUZMQUdTIGlmIHRoZQorCSAgQ0ZMQUdTIGZvciB0aGUgYnVpbGQgaGFzIHRoZXNlIG9wdGlvbnMuCisJKyBhbWVuZCBjaGFuZ2UgZnJvbSAyMDA3MDMyNCwgdG8gbm90IGFkZCAxIHRvIHRoZSByZXN1bHQgb2YgZ2V0bWF4eAorCSAgYW5kIGdldG1heHkgaW4gdGhlIEFkYSBiaW5kaW5nIChyZXBvcnQgYnkgTmljb2xhcyBCb3VsZW5ndWV6IGZvcgorCSAgdGhyZWFkIGluIGNvbXAubGFuZy5hZGEpLgorCSsgYnVpbGQtZml4IEFkYTk1L3NhbXBsZXMgZm9yIGduYXQgNC41CisJKyBzcGVsbGluZyBmaXhlcyBmb3IgQWRhOTUvc2FtcGxlcy9leHBsYWluLnR4dAorCT4gZml4ZXMgZm9yIEFkYTk1IGJpbmRpbmcgKE5pY29sYXMgQm91bGVuZ3Vleik6CisJKyBhZGQgaXRlbSBpbiBUcmFjZV9BdHRyaWJ1dGVfU2V0IGNvcnJlc3BvbmRpbmcgdG8gVFJBQ0VfQVRUUlMuCisJKyBhZGQgd29ya2Fyb3VuZCBmb3IgYmluZGluZyB0byBzZXRfZmllbGRfdHlwZSgpLCB3aGljaCB1c2VzIHZhcmFyZ3MuCisJICBUaGUgb3JpZ2luYWwgYmluZGluZyBmcm9tIDk5MDIyMCByZWxpZWQgb24gdGhlIHByZXZhbGVudAorCSAgaW1wbGVtZW50YXRpb24gb2YgdmFyYXJncyB3aGljaCBkaWQgbm90IHN1cHBvcnQgb3IgbmVlZCB2YV9jb3B5KCkuCisJKyBhZGQgZGVwZW5kZW5jeSBvbiBnZW4vTWFrZWZpbGUuaW4gbmVlZGVkIGZvciAqLXBhbmVscy5hZHMKKwkrIGFkZCBMaWJyYXJ5X09wdGlvbnMgdG8gbGlicmFyeS5ncHIKKwkrIGFkZCBMYW5ndWFnZXMgdG8gbGlicmFyeS5ncHIsIGZvciBncHJidWlsZAorCisyMDExMDMwNworCSsgcmV2ZXJ0IGNoYW5nZXMgdG8gbGltaXQtY2hlY2tzIGZyb20gMjAxMTAxMjIgKERlYmlhbiAjNjE2NzExKS4KKwk+IG1pbm9yIHR5cGUtY2xlYW51cCBvZiBBZGE5NSBiaW5kaW5nIChOaWNvbGFzIEJvdWxlbmd1ZXopOgorCSsgY29ycmVjdGVkIGEgbWlub3Igc2lnbiBlcnJvciBpbiBhIGZpZWxkIG9mIExvd19MZXZlbF9GaWVsZF9UeXBlLCB0bworCSAgY29uZm9ybSB0byBmb3JtLmguCisJKyByZXBsYWNlZCBDX0ludCBieSBDdXJzZXNfQm9vbCBhcyByZXR1cm4gdHlwZSBmb3Igc29tZSBjYWxsYmFja3MsIHNlZQorCSAgZmllbGR0eXBlKDNGT1JNKS4KKwkrIG1vZGlmeSBzYW1wbGVzL3NhbXBsZS1leHBsYWluLmFkYiB0byBwcm92aWRlIGV4cGxpY2l0IG1lc3NhZ2Ugd2hlbgorCSAgZXhwbGFpbi50eHQgaXMgbm90IGZvdW5kLgorCisyMDExMDMwNQorCSsgaW1wcm92ZSBtYWtlZmlsZXMgZm9yIEFkYTk1IHRyZWUgKHBhdGNoIGJ5IE5pY29sYXMgQm91bGVuZ3VleikuCisJKyBmaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiBfbmNfc2xrX2luaXRpYWxpemUoKSBmcm9tIDIwMTAwNjA1IGZpeGVzCisJICBmb3IgY29tcGlsZXIgd2FybmluZ3MgKHJlcG9ydCBieSBOaWNvbGFzIEJvdWxlbmd1ZXopLgorCSsgbW9kaWZ5IEFkYTk1L2dlbi9nZW4uYyB0byBkZWNsYXJlIHVudXNlZCBiaXRzIGluIGdlbmVyYXRlZCBsYXlvdXRzLAorCSAgbmVlZGVkIHRvIGNvbXBpbGUgd2hlbiBjaHR5cGUgaXMgNjQtYml0cyB1c2luZyBnbmF0IDQuNC41CisKKzIwMTEwMjI2IDUuOCByZWxlYXNlIGZvciB1cGxvYWQgdG8gZnRwLmdudS5vcmcKKworMjAxMTAyMjYKKwkrIHVwZGF0ZSByZWxlYXNlIG5vdGVzLCBmb3IgNS44LgorCSsgcmVnZW5lcmF0ZWQgaHRtbCBtYW5wYWdlcy4KKwkrIGNoYW5nZSBvcGVuKCkgaW4gX25jX3JlYWRfZmlsZV9lbnRyeSgpIHRvIGZvcGVuKCkgZm9yIGNvbnNpc3RlbmN5CisJICB3aXRoIHdyaXRlX2ZpbGUoKS4KKwkrIG1vZGlmeSBtaXNjL3J1bl90aWMuaW4gdG8gY3JlYXRlIHBhcmVudCBkaXJlY3RvcnksIGluIGNhc2UgdGhpcyBpcworCSAgYSBuZXcgaW5zdGFsbCBvZiBoYXNoZWQgZGF0YWJhc2UuCisJKyBmaXggdHlwbyBpbiBBZGE5NS9tay0xc3QuYXdrIHdoaWNoIGNhdXNlcyBlcnJvciB3aXRoIG9yaWdpbmFsIGF3ay4KKworMjAxMTAyMjAKKwkrIGNvbmZpZ3VyZSBzY3JpcHQgcnBhdGggZml4ZXMgZnJvbSB4dGVybSAjMjY5LgorCSsgd29ya2Fyb3VuZCBmb3IgY3lnd2luJ3Mgbm9uLWZ1bmN0aW9uYWwgZmVhdHVyZXMuaCwgdG8gZm9yY2UgbmN1cnNlcycKKwkgIGNvbmZpZ3VyZSBzY3JpcHQgdG8gZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgd2hlbiBidWlsZGluZworCSAgd2lkZS1jaGFyYWN0ZXIgY29uZmlndXJhdGlvbi4KKwkrIGJ1aWxkLWZpeCBpbiBydW5fdGljLnNoIGZvciBPUy8yIEVNWCBpbnN0YWxsCisJKyBhZGQgY29uczI1LWRlYmlhbiBlbnRyeSAocGF0Y2ggYnkgQnJpYW4gTSBDYXJsc29uLCBEZWJpYW4gIzYwNzY2MikuCisKKzIwMTEwMjEyCisJKyByZWdlbmVyYXRlZCBodG1sIG1hbnBhZ2VzLgorCSsgdXNlIF90cmFjZWYoKSBpbiBzaG93X3doZXJlKCkgZnVuY3Rpb24gb2YgdGljLCB0byB3b3JrIGNvcnJlY3RseSB3aXRoCisJICBzcGVjaWFsIGNhc2Ugb2YgdHJhY2UgY29uZmlndXJhdGlvbi4KKworMjAxMTAyMDUKKwkrIGFkZCB4dGVybS11dGY4IGVudHJ5IGFzIGEgZGVtbyBvZiB0aGUgVTggZmVhdHVyZSAtVEQKKwkrIGFkZCBVOCBmZWF0dXJlIHRvIGRlbm90ZSBlbnRyaWVzIGZvciB0ZXJtaW5hbCBlbXVsYXRvcnMgd2hpY2ggZG8gbm90CisJICBzdXBwb3J0IFZUMTAwIFNJL1NPIHdoZW4gcHJvY2Vzc2luZyBVVEYtOCBlbmNvZGluZyAtVEQKKwkrIGltcHJvdmUgdGhlIE5DVVJTRVNfTk9fVVRGOF9BQ1MgZmVhdHVyZSBieSBhZGRpbmcgYSBjaGVjayBmb3IgYW4KKwkgIGV4dGVuZGVkIHRlcm1pbmZvIGNhcGFiaWxpdHkgVTggKHByb21wdGVkIGJ5IG1haWxpbmcgbGlzdAorCSAgZGlzY3Vzc2lvbikuCisKKzIwMTEwMTIyCisJKyBzdGFydCBkb2N1bWVudGluZyBpbnRlcmZhY2UgY2hhbmdlcyBmb3IgdXBjb21pbmcgNS44IHJlbGVhc2UuCisJKyBjb3JyZWN0IGxpbWl0LWNoZWNrcyBpbiBkZXJ3aW4oKS4KKwkrIGNvcnJlY3QgbGltaXQtY2hlY2tzIGluIG5ld3dpbigpLCB0byBlbnN1cmUgdGhhdCB3aW5kb3dzIGhhdmUgbm9uemVybworCSAgc2l6ZSAocmVwb3J0IGJ5IEdhcnJldHQgQ29vcGVyKS4KKwkrIGZpeCBhIG1pc3NpbmcgIndlYWsiIGRlY2xhcmF0aW9uIGZvciBwdGhyZWFkX2tpbGwgKHBhdGNoIGJ5IE5pY2hvbGFzCisJICBBbGNvY2spLgorCSsgaW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIEtFWV9FTlRFUiBpbiBjdXJzX2dldGNoLjN4IG1hbnBhZ2UgKHByb21wdGVkCisJICBieSBkaXNjdXNzaW9uIHdpdGggS2V2aW4gTWFydGluKS4KKworMjAxMTAxMTUKKwkrIG1vZGlmeSBBZGE5NS9jb25maWd1cmUgc2NyaXB0IHRvIG1ha2UgdGhlIC0td2l0aC1jdXJzZXMtZGlyIG9wdGlvbgorCSAgd29yayB3aXRob3V0IHJlcXVpcmluZyB0aGUgLS13aXRoLW5jdXJzZXMgb3B0aW9uLgorCSsgbW9kaWZ5IHRlc3QgcHJvZ3JhbXMgdG8gYWxsb3cgdGhlbSB0byBiZSBidWlsdCB3aXRoIE5ldEJTRCBjdXJzZXMuCisJKyBkb2N1bWVudCB0aGljay0gYW5kIGRvdWJsZS1saW5lIHN5bWJvbHMgaW4gY3Vyc19hZGRfd2NoLjN4IG1hbnBhZ2UuCisJKyBkb2N1bWVudCBXQUNTX3h4eCBjb25zdGFudHMgaW4gY3Vyc19hZGRfd2NoLjN4IG1hbnBhZ2UuCisJKyBmaXggc29tZSB3YXJuaW5ncyBmb3IgY2xhbmcgMi42ICItLWFuYWx5emUiCisJKyBtb2RpZnkgQWRhOTUgbWFrZWZpbGVzIHRvIG1ha2UgaHRtbC1kb2N1bWVudGF0aW9uIHdpdGggdGhlIHByb2plY3QKKwkgIGZpbGUgY29uZmlndXJhdGlvbiBpZiB0aGF0IGlzIHVzZWQuCisJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViCisKKzIwMTEwMTA4CisJKyByZWdlbmVyYXRlZCBodG1sIG1hbnBhZ2VzLgorCSsgbWlub3IgZml4ZXMgdG8gZW5hYmxlIGxpbnQgd2hlbiB0cmFjZSBpcyBub3QgZW5hYmxlZCwgZS5nLiwgd2l0aAorCSAgY2xhbmcgLS1hbmFseXplLgorCSsgZml4IHR5cG8gaW4gbWFuL2RlZmF1bHRfY29sb3JzLjN4IChwYXRjaCBieSBUaW0gdmFuIGRlciBNb2xlbikuCisJKyB1cGRhdGUgbmN1cnNlcy9sbGliLWxuY3Vyc2VzKgorCisyMDExMDEwMQorCSsgZml4IHJlbWFpbmluZyBzdHJpY3QgY29tcGlsZXIgd2FybmluZ3MgaW4gbmN1cnNlcyBsaWJyYXJ5IEFCST01LAorCSAgZXhjZXB0IHRob3NlIGRlYWxpbmcgd2l0aCBmdW5jdGlvbiBwb2ludGVycywgZXRjLgorCisyMDEwMTIyNQorCSsgbW9kaWZ5IG5jX3RwYXJtLmgsIGFkZGluZyBndWFyZHMgYWdhaW5zdCByZXBlYXRlZCBpbmNsdXNpb24sIGFuZAorCSAgYWxsb3dpbmcgVFBBUk1fQVJHIHRvIGJlIG92ZXJyaWRkZW4uCisJKyBmaXggc29tZSBzdHJpY3QgY29tcGlsZXIgd2FybmluZ3MgaW4gbmN1cnNlcyBsaWJyYXJ5LgorCisyMDEwMTIxMQorCSsgc3VwcHJlc3MgbmN2IGluIHNjcmVlbiBlbnRyeSwgYWxsb3dpbmcgdW5kZXJsaW5lIChwYXRjaCBieSBBbGVqYW5kcm8KKwkgIFIgU2VkZW5vKS4KKwkrIGFsc28gc3VwcHJlc3MgbmN2IGluIGtvbnNvbGUtYmFzZSAtVEQKKwkrIGZpeGVzIGluIHdpbnNfbndzdHIoKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoYXQgc3BlY2lhbAorCSAgY2hhcmFjdGVycywgaS5lLiwgY29udHJvbCBjaGFyYWN0ZXJzIGFyZSBoYW5kbGVkIHByb3Blcmx5IHdpdGggdGhlCisJICB3aWRlLWNoYXJhY3RlciBjb25maWd1cmF0aW9uLgorCSsgY29ycmVjdCBhIGNvbXBhcmlzb24gaW4gd2luc19ud3N0cigpIChSZWRoYXQgIzY2MTUwNikuCisJKyBjb3JyZWN0IGhlbHAtbWVzc2FnZXMgaW4gc29tZSBvZiB0aGUgdGVzdC1wcm9ncmFtcywgd2hpY2ggc3RpbGwKKwkgIHJlZmVycmVkIHRvIHF1aXR0aW5nIHdpdGggJ3EnLgorCisyMDEwMTIwNAorCSsgYWRkIHNwZWNpYWwgY2FzZSB0byBfbmNfaW5mb3RvY2FwKCkgdG8gcmVjb2duaXplIHRoZSBzZXRhZi9zZXRhYgorCSAgc3RyaW5ncyBmcm9tIHh0ZXJtKzI1NmNvbG9yIGFuZCB4dGVybSs4OGNvbG9yLCBhbmQgcHJvdmlkZSBhIHJlZHVjZWQKKwkgIHZlcnNpb24gd2hpY2ggd29ya3Mgd2l0aCB0ZXJtY2FwLgorCSsgcmVtb3ZlIG9ic29sZXRlIGVtYWNzICJMb2NhbCBWYXJpYWJsZXMiIHNlY3Rpb24gZnJvbSBkb2N1bWVudGF0aW9uCisJICAocmVxdWVzdCBieSBTdmVuIEpvYWNoaW0pLgorCSsgdXBkYXRlIGRvYy9odG1sL2luZGV4Lmh0bWwgdG8gaW5jbHVkZSBOQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwKKwkgIChyZXBvcnQgYnkgU3ZlbiBKb2FjaGltKS4KKworMjAxMDExMjgKKwkrIG1vZGlmeSB0ZXN0L2NvbmZpZ3VyZSBhbmQgdGVzdC9NYWtlZmlsZS5pbiB0byBoYW5kbGUgdGhpcyBzcGVjaWFsCisJICBjYXNlIG9mIGJ1aWxkaW5nIHdpdGhpbiBhIGJ1aWxkLXRyZWUgKERlYmlhbiAjMzQxODIpOgorCQlta2RpciAtcCBidWlsZCAmJiBjZCBidWlsZCAmJiAuLi90ZXN0L2NvbmZpZ3VyZSAmJiBtYWtlCisKKzIwMTAxMTI3CisJKyBtaXNjZWxsYW5lb3VzIGJ1aWxkLWZpeGVzIGZvciBBZGE5NSBhbmQgdGVzdC1kaXJlY3RvcmllcyB3aGVuIGJ1aWx0CisJICBvdXQtb2YtdHJlZS4KKwkrIHVzZSBWUEFUSCBpbiBtYWtlZmlsZXMgdG8gc2ltcGxpZnkgb3V0LW9mLXRyZWUgYnVpbGRzIChEZWJpYW4gIzM0MTgyKS4KKwkrIGZpeCB0eXBvIGluIHJtc28gZm9yIHRlazQxMDYgZW50cnkgLUdvcmFuIFdlaW5ob2x0CisKKzIwMTAxMTIwCisJKyBpbXByb3ZlIGNoZWNrcyBpbiB0ZXN0L2NvbmZpZ3VyZSBmb3IgWCBsaWJyYXJpZXMsIGZyb20geHRlcm0gIzI2NworCSAgY2hhbmdlcy4KKwkrIG1vZGlmeSB0ZXN0L2NvbmZpZ3VyZSB0byBhbGxvdyBpdCB0byB1c2UgdGhlIGJ1aWxkLXRyZWUncyBsaWJyYXJpZXMKKwkgIGUuZy4sIHdoZW4gdXNpbmcgdGhhdCB0byBjb25maWd1cmUgdGhlIHRlc3QtcHJvZ3JhbXMgd2l0aG91dCB0aGUKKwkgIHJwYXRoIGZlYXR1cmUgKHJlcXVlc3QgYnkgU3ZlbiBKb2FjaGltKS4KKwkrIHJlcHVycG9zZSAiZ25vbWUiIHRlcm1pbmZvIGVudHJpZXMgYXMgInZ0ZSIsIHJldGFpbmluZyAiZ25vbWUiIGl0ZW1zCisJICBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IGdlbmVyYWxseSBkZXByZWNhdGluZyB0aG9zZSBzaW5jZSB0aGUgVlRFCisJICBsaWJyYXJ5IGlzIHdoYXQgYWN0dWFsbHkgZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgImdub21lIiwgZXRjLiwKKwkgIHNpbmNlIDIwMDMgLVRECisKKzIwMTAxMTEzCisJKyBjb21waWxlciB3YXJuaW5nIGZpeGVzIGZvciB0ZXN0IHByb2dyYW1zLgorCSsgdmFyaW91cyBidWlsZC1maXhlcyBmb3IgdGVzdC1wcm9ncmFtcyB3aXRoIHBkY3Vyc2VzLgorCSsgdXBkYXRlZCBjb25maWd1cmUgY2hlY2tzIGZvciBYIHBhY2thZ2VzIGluIHRlc3QvY29uZmlndXJlIGZyb20geHRlcm0KKwkgICMyNjcgY2hhbmdlcy4KKwkrIGFkZCBjb25maWd1cmUgY2hlY2sgdG8gZ25hdG1ha2UsIHRvIGFjY29tbW9kYXRlIGN5Z3dpbi4KKworMjAxMDExMDYKKwkrIGNvcnJlY3QgbGlzdCBvZiBzdWItZGlyZWN0b3JpZXMgbmVlZGVkIGluIEFkYTk1IHRyZWUgZm9yIGJ1aWxkaW5nIGFzCisJICBhIHNlcGFyYXRlIHBhY2thZ2UuCisJKyBtb2RpZnkgc2NyaXB0cyBpbiB0ZXN0LWRpcmVjdG9yeSB0byBpbXByb3ZlIGJ1aWxkcyBhcyBhIHNlcGFyYXRlCisJICBwYWNrYWdlLgorCisyMDEwMTAyMworCSsgY29ycmVjdCBwYXJzaW5nIG9mIHJlbGF0aXZlIHRhYi1zdG9wcyBpbiB0YWJzIHByb2dyYW0gKHJlcG9ydCBieQorCSAgUGhpbGlwIEdhbmNoZXYpLgorCSsgYWRqdXN0IGNvbmZpZ3VyZSBzY3JpcHQgc28gdGhhdCAidCIgaXMgbm90IGFkZGVkIHRvIGxpYnJhcnkgc3VmZml4CisJICB3aGVuIHdlYWstc3ltYm9scyBhcmUgdXNlZCwgYWxsb3dpbmcgdGhlIHB0aHJlYWQgY29uZmlndXJhdGlvbiB0bworCSAgbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBub24tdGhyZWFkIG5hbWluZyAocmVwb3J0IGJ5IFdlcm5lciBGaW5rKS4KKwkrIG1vZGlmeSBjb25maWd1cmUgY2hlY2sgZm9yIHRpYyBwcm9ncmFtLCB1c2VkIGZvciBmYWxsYmFja3MsIHRvIGEKKwkgIHdhcm5pbmcgaWYgbm90IGZvdW5kLiAgVGhpcyBtYWtlcyBpdCBzaW1wbGVyIHRvIHVzZSBhZGRpdG9uYWwKKwkgIHNjcmlwdHMgdG8gYm9vdHN0cmFwIHRoZSBmYWxsYmFja3MgY29kZSB1c2luZyB0aWMgZnJvbSB0aGUgYnVpbGQKKwkgIHRyZWUgKHJlcG9ydCBieSBXZXJuZXIgRmluaykuCisJKyBmaXggc2V2ZXJhbCBwbGFjZXMgaW4gY29uZmlndXJlIHNjcmlwdCB1c2luZyAke3ZhcmlhYmxlLXZhbHVlfSBmb3JtLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBtYWNybyBDRl9MREZMQUdTX1NUQVRJQyB0byBhY2NvbW1vZGF0ZSBzb21lIGxvYWRlcnMKKwkgIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHNlbGVjdGl2ZWx5IGxpbmtpbmcgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCisJICAocmVwb3J0IGJ5IEpvaG4gUC4gSGFydG1hbm4pCisJKyBmaXggYW4gdW5lc2NhcGVkIGRhc2ggaW4gbWFuL3RzZXQuMSAocmVwb3J0IGJ5IFN2ZW4gSm9hY2hpbSkuCisKKzIwMTAxMDA5CisJKyBjb3JyZWN0IGNvbXBhcmlzb24gdXNlZCBmb3Igc2V0dGluZyAxNi1jb2xvcnMgaW4gbGludXgtMTZjb2xvcgorCSAgZW50cnkgKE5vdmVsbCAjNjQ0ODMxKSAtVEQKKwkrIGltcHJvdmUgbGludXgtMTZjb2xvciBlbnRyeSwgdXNpbmcgImRpbSIgZm9yIGNvbG9yLTggd2hpY2ggbWFrZXMgaXQKKwkgIGdyYXkgcmF0aGVyIHRoYW4gYmxhY2sgbGlrZSBjb2xvci0wIC1URAorCSsgZHJvcCBtaXNjL25jdS1pbmRlbnQgYW5kIG1pc2MvanBmLWluZGVudDsgdGhleSBhcmUgcHJvdmlkZWQgYnkgYW4KKwkgIGV4dGVybmFsIHBhY2thZ2UgImNpbmRlbnQiLgorCisyMDEwMTAwMgorCSsgaW1wcm92ZSBsaW5rYWdlcyBpbiBodG1sIG1hbnBhZ2VzLCBhZGRpbmcgcmVmZXJlbmNlcyB0byB0aGUgbmV3ZXIKKwkgIHBhZ2VzLCBlLmcuLCAqX3ZhcmlhYmxlcywgY3Vyc19zcF9mdW5jcywgY3Vyc190aHJlYWRzLgorCSsgYWRkIGNoZWNrcyBpbiB0aWMgZm9yIGluY29uc2lzdGVudCBjdXJzb3ItbW92ZW1lbnQgY29udHJvbHMsIGFuZCBmb3IKKwkgIGluY29uc2lzdGVudCBwcmludGVyLWNvbnRyb2xzLgorCSsgZmlsbCBpbiBuby1wYXJhbWV0ZXIgZm9ybXMgb2YgY3Vyc29yLW1vdmVtZW50IHdoZXJlIGEgcGFyYW1ldGVyaXplZAorCSAgZm9ybSBpcyBhdmFpbGFibGUgLVRECisJKyBmaWxsIGluIG1pc3NpbmcgY3Vyc29yIGNvbnRyb2xzIHdoZXJlIHRoZSBmb3JtIG9mIHRoZSBjb250cm9scyBpcworCSAgQU5TSSAtVEQKKwkrIGZpeCBpbmNvbnNpc3RlbnQgcHVuY3R1YXRpb24gaW4gZm9ybV92YXJpYWJsZXMgbWFucGFnZSAocGF0Y2ggYnkKKwkgIFN2ZW4gSm9hY2hpbSkuCisJKyBhZGQgcGFyYW1ldGVyaXplZCBjdXJzb3ItY29udHJvbHMgdG8gbGludXgtYmFzaWMgKHJlcG9ydCBieSBEYWUpIC1URAorCT4gcGF0Y2ggYnkgSnVlcmdlbiBQZmVpZmVyOgorCSsgZG9jdW1lbnQgaG93IHRvIGJ1aWxkIDMyLWJpdCBsaWJyYXJpZXMgaW4gUkVBRE1FLk1pbkdXCisJKyBmaXhlcyB0byBmaWxlbmFtZSBjb21wdXRhdGlvbiBpbiBtay1kbGxzLnNoLmluCisJKyB1c2UgUE9TSVggbG9jYWxlIGluIG1rLWRsbHMuc2guaW4gcmF0aGVyIHRoYW4gZW5fVVMgKHJlcG9ydCBieSBTdmVuCisJICBKb2FjaGltKS4KKwkrIGFkZCBhIGNoZWNrIGluIG1rLWRsbHMuc2guaW4gdG8gb2J0YWluIHRoZSBzaXplIG9mIGEgcG9pbnRlciB0bworCSAgZGlzdGluZ3Vpc2ggYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBob3N0cy4gIFRoZSByZXN1bHQgaXMgc3RvcmVkCisJICBpbiBtaW5nd19hcmNoCisKKzIwMTAwOTI1CisJKyBhZGQgIlhUIiBjYXBhYmlsaXR5IHRvIGVudHJpZXMgZm9yIHRlcm1pbmFscyB0aGF0IHN1cHBvcnQgYm90aAorCSAgeHRlcm0tc3R5bGUgbW91c2UtIGFuZCB0aXRsZS1jb250cm9scywgZm9yICJzY3JlZW4iIHdoaWNoCisJICBzcGVjaWFsLWNhc2VzIFRFUk0gYmVnaW5uaW5nIHdpdGggInh0ZXJtIiBvciAicnh2dCIgLVRECisJPiBwYXRjaCBieSBKdWVyZ2VuIFBmZWlmZXI6CisJKyB1c2UgNjQtQml0IE1pbkdXIHRvb2xjaGFpbiAocmVjb21tZW5kZWQgcGFja2FnZSBmcm9tIFRETSwgc2VlCisJICBSRUFETUUuTWluR1cpLgorCSsgc3VwcG9ydCBwdGhyZWFkcyB3aGVuIHVzaW5nIHRoZSBURE0gTWluR1cgdG9vbGNoYWluCisKKzIwMTAwOTE4CisJKyByZWdlbmVyYXRlZCBodG1sIG1hbnBhZ2VzLgorCSsgbWlub3IgZml4ZXMgZm9yIHN5bWxpbmtzIHRvIGN1cnNfbGVnYWN5LjN4IGFuZCBjdXJzX3Nsay4zeCBtYW5wYWdlcy4KKwkrIGFkZCBtYW5wYWdlIGZvciBzcC1mdW5jcy4KKwkrIGFkZCBzcC1mdW5jcyB0byB0ZXN0L2xpc3R1c2VkLnNoLCBmb3IgZG9jdW1lbnRhdGlvbiBhaWRzLgorCisyMDEwMDkxMQorCSsgYWRkIG1hbnBhZ2VzIGZvciBzdW1tYXJpemluZyBwdWJsaWMgdmFyaWFibGVzIG9mIGN1cnNlcy0sIHRlcm1pbmZvLQorCSAgYW5kIGZvcm0tbGlicmFyaWVzLgorCSsgbWlub3IgZml4ZXMgdG8gbWFucGFnZXMgZm9yIGNvbnNpc3RlbmN5IChwYXRjaCBieSBKYXNvbiBNY0ludHlyZSkuCisJKyBtb2RpZnkgdGljJ3MgLUkvLUMgZHVtcCB0byByZWZvcm1hdCBhY3NjIHN0cmluZ3MgaW50byBjYW5vbmljYWwgZm9ybQorCSAgKHNvcnRlZCwgdW5pcXVlIG1hcHBpbmcpIChjZjogOTcxMDA0KS4KKwkrIGFkZCBjb25maWd1cmUgY2hlY2sgZm9yIHB0aHJlYWRfa2lsbCgpLCBuZWVkZWQgZm9yIHNvbWUgb2xkCisJICBwbGF0Zm9ybXMuCisKKzIwMTAwOTA0CisJKyBhZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGhvdXQtdGVzdHMsIHRvIHN1cHByZXNzIGJ1aWxkaW5nIHRlc3QKKwkgIHByb2dyYW1zIChyZXF1ZXN0IGJ5IEZyZWRlcmljIEwgVyBNZXVuaWVyKS4KKworMjAxMDA4MjgKKwkrIG1vZGlmeSBuc3Rlcm0sIHhudXBwYyBhbmQgdGVrNDExNSB0byBtYWtlIHNnci9zZ3IwIGNvbnNpc3RlbnQgLVRECisJKyBhZGQgY2hlY2sgaW4gdGVybWluZm8gc291cmNlLXJlYWRlciB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpdmUKKwkgIG1lc3NhZ2Ugd2hlbiBzb21lb25lIGF0dGVtcHRzIHRvIHJ1biB0aWMgb24gYSBjb21waWxlZCB0ZXJtaW5hbAorCSAgZGVzY3JpcHRpb24gKHByb21wdGVkIGJ5IERlYmlhbiAjNTkzOTIwKS4KKwkrIG5vdGUgaW4gaW5mb3RvY2FwIGFuZCBjYXB0b2luZm8gbWFucGFnZXMgdGhhdCB0aGV5IHJlYWQgdGVybWluYWwKKwkgIGRlc2NyaXB0aW9ucyBmcm9tIHRleHQtZmlsZXMgKERlYmlhbiAjNTkzOTIwKS4KKwkrIGltcHJvdmUgYWNzYyBzdHJpbmcgZm9yIHZ0NTIsIHNob3cgYXJyb3cga2V5cyAocGF0Y2ggYnkgQmVuamFtaW4KKwkgIFNpdHRsZXIpLgorCisyMDEwMDgxNAorCSsgZG9jdW1lbnQgaW4gbWFucGFnZXMgdGhhdCAibXYiIGZ1bmN0aW9ucyBmaXJzdCB1c2Ugd21vdmUoKSB0byBjaGVjaworCSAgdGhlIHdpbmRvdyBwb2ludGVyIGFuZCB3aGV0aGVyIHRoZSBwb3NpdGlvbiBsaWVzIHdpdGhpbiB0aGUgd2luZG93CisJICAoc3VnZ2VzdGVkIGJ5IFBvdWwtSGVubmluZyBLYW1wKS4KKwkrIGZpeGVzIHRvIGN1cnNfY29sb3IuM3gsIGN1cnNfa2VybmVsLjN4IGFuZCB3cmVzaXplLjN4IG1hbnBhZ2VzIChwYXRjaAorCSAgYnkgVGltIHZhbiBkZXIgTW9sZW4pLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gdHJhbnNmb3JtIGxpYnJhcnkgbmFtZXMgZm9yIHRpYy0gYW5kCisJICB0aW5mby1saWJyYXJpZXMgc28gdGhhdCB0aG9zZSBidWlsZCBwcm9wZXJseSB3aXRoIE1hYyBPUyBYIHNoYXJlZAorCSAgbGlicmFyeSBjb25maWd1cmF0aW9uLgorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gZW5zdXJlIHRoYXQgaXQgcmVtb3ZlcyBjb25mdGVzdC5kU1lNCisJICBkaXJlY3RvcnkgbGVmdG92ZXIgb24gY2hlY2tzIHdpdGggTWFjIE9TIFguCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBjbGVhbnVwIGFmdGVyIGNoZWNrIGZvciBzeW1ib2xpYyBsaW5rcy4KKworMjAxMDA4MDcKKwkrIGNvcnJlY3QgYSB0eXBvIGluIG1rLTFzdC5hd2sgKHBhdGNoIGJ5IEdhYnJpZWxlIEJhbGR1Y2NpKQorCSAgKGNmOiAyMDEwMDcyNCkKKwkrIGltcHJvdmUgY29uZmlndXJlIGNoZWNrcyBmb3IgbG9jYXRpb24gb2YgdGljIGFuZCBpbmZvY21wIHByb2dyYW1zCisJICB1c2VkIGZvciBpbnN0YWxsaW5nIGRhdGFiYXNlIGFuZCBmb3IgZ2VuZXJhdGluZyBmYWxsYmFjayBkYXRhLAorCSAgZS5nLiwgZm9yIGNyb3NzLWNvbXBpbGluZy4KKwkrIGFkZCBNYXJrdXMgS3VobidzIHdjd2lkdGggZnVuY3Rpb24gZm9yIGNvbXBpbGluZyBNaW5HVworCSsgYWRkIHNwZWNpYWwgY2FzZSB0byBDRl9SRUdFWCBmb3IgY3Jvc3MtY29tcGlsaW5nIHRvIE1pbkdXIHRhcmdldC4KKworMjAxMDA3MzEKKwkrIG1vZGlmeSBpbml0aWFsaXphdGlvbiBjaGVjayBmb3Igd2luMzJjb24gZHJpdmVyIHRvIGVsaW1pbmF0ZSBuZWVkIGZvcgorCSAgc3BlY2lhbCBjYXNlIGZvciBURVJNICJ1bmtub3duIiwgdXNpbmcgdGVybWluYWwgZGF0YWJhc2UgaWYgYXZhaWxhYmxlCisJICAocHJvbXB0ZWQgYnkgZGlzY3Vzc2lvbiB3aXRoIFJvdW1lbiBQZXRyb3YpLgorCSsgZm9yIE1pbkdXIHBvcnQsIGVuc3VyZSB0aGF0IHRlcm1pbmFsIGRyaXZlciBpcyBzZXR1cCBpZiB0Z2V0ZW50KCkKKwkgIGlzIGNhbGxlZCAocGF0Y2ggYnkgUm91bWVuIFBldHJvdikuCisJKyBkb2N1bWVudCB0YWJzICItMCIgYW5kICItOCIgb3B0aW9ucyBpbiBtYW5wYWdlLgorCSsgZml4IERlYmlhbiAibGludGlhbiIgaXNzdWVzIHdpdGggbWFucGFnZXMgcmVwb3J0ZWQgaW4KKwkgIGh0dHA6Ly9saW50aWFuLmRlYmlhbi5vcmcvZnVsbC9jc21hbGxAZGViaWFuLm9yZy5odG1sI25jdXJzZXMKKworMjAxMDA3MjQKKwkrIGFkZCBhIGNoZWNrIGluIHRpYyBmb3IgbWlzc2luZyBzZXRfdGFiIGlmIGNsZWFyX2FsbF90YWJzIGdpdmVuLgorCSsgaW1wcm92ZSB1c2Ugb2Ygc3ltYm9saWMgbGlua3MgaW4gbWFrZWZpbGVzIGJ5IHVzaW5nICItZiIgb3B0aW9uIGlmCisJICBpdCBpcyBzdXBwb3J0ZWQsIHRvIGVsaW1pbmF0ZSB0ZW1wb3JhcnkgcmVtb3ZhbCBvZiB0aGUgdGFyZ2V0CisJICAocHJvbXB0ZWQgYnkgaHR0cDovL3d3dy50Mi1wcm9qZWN0Lm9yZy9wYWNrYWdlcy9uY3Vyc2VzLmh0bWwpCisJKyBtaW5vciBpbXByb3ZlbWVudCB0byB0ZXN0L25jdXJzZXMuYywgcmVzZXQgY29sb3IgcGFpcnMgaW4gJ2QnIHRlc3QKKwkgIGFmdGVyIGV4aXQgZnJvbSAnbScgbWFpbi1tZW51IGNvbW1hbmQuCisJKyBpbXByb3ZlZCBuY3UtaW5kZW50LCBmcm9tIG1hd2sgY2hhbmdlcywgYWxsb3dzIG1vcmUgdGhhbiBvbmUgb2YKKwkgIEdDQ19OT1JFVFVSTiwgR0NDX1BSSU5URkxJS0UgYW5kIEdDQ19TQ0FORkxJS0Ugb24gYSBzaW5nbGUgbGluZS4KKworMjAxMDA3MTcKKwkrIGFkZCBoYXJkLXJlc2V0IGZvciByczIgdG8gd3N2dDI1IHRvIGhlbHAgZW5zdXJlIHRoYXQgcmVzZXQgZW5kcworCSAgdGhlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IChwYXRjaCBieSBOaWNob2xhcyBNYXJyaW90dCkKKwkrIHJlbW92ZSB0YXItY29weS5zaCBhbmQgcmVsYXRlZCBjb25maWd1cmUvTWFrZWZpbGUgY2h1bmtzLCBzaW5jZSB0aGUKKwkgIEFkYTk1IGJpbmRpbmcgaXMgbm93IGluc3RhbGxlZCB1c2luZyBydWxlcyBpbiBBZGE5NS9zcmMuCisKKzIwMTAwNzAzCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyBjaGFuZ2VzIHRvIHVzZSBnbmF0bWFrZSBwcm9qZWN0IGZpbGVzIGluIEFkYTk1CisJICArIGFkZC91c2UgY29uZmlndXJlIGNoZWNrIHRvIHR1cm4gb24gcHJvamVjdCBydWxlcyBmb3IgQWRhOTUvc3JjLgorCSsgcmV2ZXJ0IHRoZSB2Zm9yayBjaGFuZ2UgZnJvbSAyMDEwMDEzMCwgc2luY2UgaXQgZG9lcyBub3Qgd29yay4KKworMjAxMDA2MjYKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nIGNoYW5nZXMgdG8gdXNlIGduYXRtYWtlIHByb2plY3QgZmlsZXMgaW4gQWRhOTUKKwkgICsgb2xkIGduYXRtYWtlICgzLjE1KSBkb2VzIG5vdCBwcm9kdWNlIGxpYnJhcmllcyB1c2luZyBwcm9qZWN0LWZpbGU7CisJICAgIHdvcmsgYXJvdW5kIGJ5IGFkZGluZyBzY3JpcHQgdG8gZ2VuZXJhdGUgYWx0ZXJuYXRlIG1ha2VmaWxlLgorCisyMDEwMDYxOQorCSsgY29udGludWUgaW50ZWdyYXRpbmcgY2hhbmdlcyB0byB1c2UgZ25hdG1ha2UgcHJvamVjdCBmaWxlcyBpbiBBZGE5NQorCSAgKyBhZGQgY29uZmlndXJlIC0td2l0aC1hZGEtc2hhcmVkbGliIG9wdGlvbiwgZm9yIHRoZSB0ZXN0X21ha2UgcnVsZS4KKwkgICsgbW92ZSBBZGE5NS1yZWxhdGVkIGxvZ2ljIGludG8gYWNsb2NhbC5tNCwgc2luY2UgYWRkaXRpb25hbCBjaGVja3MKKwkgICAgd2lsbCBiZSBuZWVkZWQgdG8gZGlzdGluZ3Vpc2ggb2xkL25ldyBpbXBsZW1lbnRhdGlvbnMgb2YgZ25hdC4KKworMjAxMDA2MTIKKwkrIHN0YXJ0IGludGVncmF0aW5nIGNoYW5nZXMgdG8gdXNlIGduYXRtYWtlIHByb2plY3QgZmlsZXMgaW4gQWRhOTUgdHJlZQorCSAgKyBhZGQgdGVzdF9tYWtlIC8gdGVzdF9jbGVhbiAvIHRlc3RfaW5zdGFsbCBydWxlcyBpbiBBZGE5NS9zcmMKKwkgICsgY2hhbmdlIGluc3RhbGwtcGF0aCBmb3IgYWRhaW5jbHVkZSBkaXJlY3RvcnkgdG8gL3Vzci9zaGFyZS9hZGEgKHdhcworCSAgICAvdXNyL2xpYi9hZGEpLgorCSsgdXBkYXRlIEFkYTk1L2NvbmZpZ3VyZS4KKwkrIGFkZCBtbHRlcm0rMjU2Y29sb3IgZW50cnksIGZvciBtbHRlcm0gMy4wLjAgLVRECisJKyBtb2RpZnkgdGVzdC9jb25maWd1cmUgdG8gdXNlIG1hY3JvcyB0byBlbnN1cmUgY29uc2lzdGVudCBvcmRlcgorCSAgb2YgdXBkYXRpbmcgTElCUyB2YXJpYWJsZS4KKworMjAxMDA2MDUKKwkrIGNoYW5nZSBzZWFyY2ggb3JkZXIgb2Ygb3B0aW9ucyBmb3IgU29sYXJpcyBpbiBDRl9TSEFSRURfT1BUUywgdG8KKwkgIHdvcmsgd2l0aCA2NC1iaXQgY29tcGlsZXMuCisJKyBjb3JyZWN0IHF1b3Rpbmcgb2YgYXNzaWdubWVudCBpbiBDRl9TSEFSRURfT1BUUyBjYXNlIGZvciBhaXgKKwkgIChjZjogMjAwODEyMjcpCisKKzIwMTAwNTI5CisJKyByZWdlbmVyYXRlZCBodG1sIGRvY3VtZW50YXRpb24uCisJKyBtb2RpZnkgdGVzdC9jb25maWd1cmUgdG8gc3VwcG9ydCBwa2ctY29uZmlnIGZvciBjaGVja2luZyBYIGxpYnJhcmllcworCSAgdXNlZCBieSBQREN1cnNlcy4KKwkrIGFkZC91c2UgY29uZmlndXJlIG1hY3JvIENGX0FERF9MSUIgdG8gZm9yY2UgY29uc2lzdGVuY3kgb2YKKwkgIGFzc2lnbm1lbnRzIHRvICRMSUJTLCBldGMuCisJKyBmaXggY29uZmlndXJlIHNjcmlwdCBmb3IgY29tYmluaW5nIC0td2l0aC1wdGhyZWFkCisJICBhbmQgLS1lbmFibGUtd2Vhay1zeW1ib2xzIG9wdGlvbnMuCisKKzIwMTAwNTIyCisJKyBjb3JyZWN0IGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmUgY2hlY2sgZm9yIENGX01LU1RFTVAgbWFjcm8sIGJ5CisJICBhZGRpbmcgYSBjaGVjayBjYWNoZSB2YXJpYWJsZSBzZXQgYnkgQUNfQ0hFQ0tfRlVOQyAocmVwb3J0IGJ5CisJICBQaWVycmUgTGFiYXN0aWUpLgorCSsgc2ltcGxpZnkgaW5jbHVkZS1kZXBlbmRlbmNpZXMgb2YgbWFrZV9oYXNoIGFuZCBtYWtlX2tleXMsIHRvIHJlZHVjZQorCSAgdGhlIG5lZWQgZm9yIHNldHRpbmcgQlVJTERfQ1BQRkxBR1MgaW4gY3Jvc3MtY29tcGlsaW5nIHdoZW4gdGhlCisJICBidWlsZC0gYW5kIHRhcmdldC1tYWNoaW5lcyBkaWZmZXIuCisJKyByZXBhaXIgYnJva2VuLWxpbmtlciBjb25maWd1cmF0aW9uIGJ5IHJlc3RvcmluZyBhIGRlZmluaXRpb24gb2YgU1AKKwkgIHZhcmlhYmxlIHRvIGN1cnNlcy5wcml2LmgsIGFuZCBhZGp1c3RpbmcgZm9yIGNhc2VzIHdoZXJlIHNwLWZ1bmNzCisJICBhcmUgdXNlZC4KKwkrIGltcHJvdmUgY29uZmlndXJlIG1hY3JvIENGX0FSX0ZMQUdTLCBhbGxvd2luZyBBUkZMQUdTIGVudmlyb25tZW50CisJICB2YXJpYWJsZSB0byBvdmVycmlkZSAocHJvbXB0ZWQgYnkgcmVwb3J0IGJ5IFBhYmxvIENhemFsbGFzKS4KKworMjAxMDA1MTUKKwkrIGFkZCBjb25maWd1cmUgb3B0aW9uIC0tZW5hYmxlLXB0aHJlYWRzLWVpbnRyIHRvIGNvbnRyb2wgd2hldGhlciB0aGUKKwkgIG5ldyBFSU5UUiBmZWF0dXJlIGlzIGVuYWJsZWQuCisJKyBtb2RpZnkgbG9naWMgaW4gcHRocmVhZCBjb25maWd1cmF0aW9uIHRvIGFsbG93IEVJTlRSIHRvIGludGVycnVwdAorCSAgYSByZWFkIG9wZXJhdGlvbiBpbiB3Z2V0Y2goKSAoTm92ZWxsICM1NDA1NzEsIHBhdGNoIGJ5IFdlcm5lciBGaW5rKS4KKwkrIGRyb3AgbWtkaXJzLnNoLCB1c2UgIm1rZGlyIC1wIi4KKwkrIGFkZCBjb25maWd1cmUgb3B0aW9uIC0tZGlzYWJsZS1saWJ0b29sLXZlcnNpb24sIHRvIHVzZSB0aGUKKwkgICItdmVyc2lvbi1udW1iZXIiIGZlYXR1cmUgd2hpY2ggd2FzIGFkZGVkIGluIGxpYnRvb2wgMS41IChyZXBvcnQgYnkKKwkgIFBldGVyIEhhZXJpbmcpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBvcHRpb24gdXNlcyB0aGUgbmV3ZXIKKwkgIGZlYXR1cmUsIHdoaWNoIG1ha2VzIGxpYnJhcmllcyBnZW5lcmF0ZWQgdXNpbmcgbGlidG9vbCBjb21wYXRpYmxlCisJICB3aXRoIHRoZSBzdGFuZGFyZCBidWlsZHMgb2YgbmN1cnNlcy4KKwkrIHVwZGF0ZWQgdGVzdC9jb25maWd1cmUgdG8gbWF0Y2ggY29uZmlndXJlIHNjcmlwdCBtYWNyb3MuCisJKyBmaXhlcyBmb3IgY29uZmlndXJlIHNjcmlwdCBmcm9tIGx5bnggY2hhbmdlczoKKwkgICsgaW1wcm92ZSBDRl9GSU5EX0xJTktBR0UgbG9naWMgZm9yIHRoZSBjYXNlIHdoZXJlIGEgZnVuY3Rpb24gaXMKKwkgICAgZm91bmQgaW4gcHJlZGVmaW5lZCBsaWJyYXJpZXMuCisJICArIHJldmVydCBwYXJ0IG9mIGNoYW5nZSB0byBDRl9IRUFERVIgKGNmOiAyMDEwMDQyNCkKKworMjAxMDA1MDEKKwkrIGNvcnJlY3QgbGltaXQtY2hlY2sgaW4gd3JlZHJhd2xuLCBhY2NvdW50aW5nIGZvciBiZWd5L2JlZ3ggdmFsdWVzCisJICAocGF0Y2ggYnkgRGF2aWQgQmVuamFtaW4pLgorCSsgZml4IG1vc3QgY29tcGlsZXIgd2FybmluZ3MgZnJvbSBjbGFuZy4KKwkrIGFtZW5kIGJ1aWxkLWZpeCBmb3IgT3BlblNvbGFyaXMsIHRvIGVuc3VyZSB0aGF0IGEgc3lzdGVtIGhlYWRlciBpcworCSAgaW5jbHVkZWQgaW4gY3Vyc2VzLmggYmVmb3JlIHRlc3RpbmcgZmVhdHVyZSBzeW1ib2xzLCBzaW5jZSB0aGV5CisJICBtYXkgYmUgZGVmaW5lZCBieSB0aGF0IHJvdXRlLgorCisyMDEwMDQyNAorCSsgZml4IHNvbWUgc3RyaWN0IGNvbXBpbGVyIHdhcm5pbmdzIGluIG5jdXJzZXMgbGlicmFyeS4KKwkrIG1vZGlmeSBjb25maWd1cmUgbWFjcm8gQ0ZfSEVBREVSX1BBVEggdG8gbm90IGxvb2sgZm9yIHZhcmlhdGlvbnMgaW4KKwkgIHRoZSBwcmVkZWZpbmVkIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisJKyBpbXByb3ZlIGNvbmZpZ3VyZSBtYWNyb3MgQ0ZfR0NDX1ZFUlNJT04gYW5kIENGX0dDQ19XQVJOSU5HUyB0byB3b3JrCisJICB3aXRoIGdjYyA0LngncyBjODkgYWxpYXMsIHdoaWNoIGdpdmVzIHdhcm5pbmcgbWVzc2FnZXMgZm9yIGNhc2VzCisJICB3aGVyZSBvbGRlciB2ZXJzaW9ucyB3b3VsZCBwcm9kdWNlIGFuIGVycm9yLgorCisyMDEwMDQxNworCSsgbW9kaWZ5IF9uY19jYXBjbXAoKSB0byB3b3JrIHdpdGggY2FuY2VsbGVkIHN0cmluZ3MuCisJKyBjb3JyZWN0IHRyYW5zbGF0aW9uIG9mICJeIiBpbiBfbmNfaW5mb3RvY2FwKCksIHVzZWQgdG8gdHJhbnNmb3JtCisJICB0ZXJtaW5mbyB0byB0ZXJtY2FwIHN0cmluZ3MKKwkrIGFkZCBjb25maWd1cmUgLS1kaXNhYmxlLXJwYXRoLWhhY2ssIHRvIGFsbG93IGRpc2FibGluZyB0aGUgZmVhdHVyZQorCSAgd2hpY2ggYWRkcyBycGF0aCBvcHRpb25zIGZvciBsaWJyYXJpZXMgaW4gdW51c3VhbCBwbGFjZXMuCisJKyBpbXByb3ZlIENGX1JQQVRIX0hBQ0tfMiBieSBjaGVja2luZyBpZiB0aGUgcnBhdGggb3B0aW9uIGZvciBhIGdpdmVuCisJICBkaXJlY3Rvcnkgd2FzIGFscmVhZHkgYWRkZWQuCisJKyBpbXByb3ZlIENGX1JQQVRIX0hBQ0tfMiBieSB1c2luZyBsZGQgdG8gcHJvdmlkZSBhIHN0YW5kYXJkIGxpc3Qgb2YKKwkgIGRpcmVjdG9yaWVzICh3aGljaCB3aWxsIGJlIGlnbm9yZWQpLgorCisyMDEwMDQxMAorCSsgaW1wcm92ZSB3aW5fZHJpdmVyLmMgaGFuZGxpbmcgb2YgbW91c2U6CisJICArIGRpc2NhcmQgbW90aW9uIGV2ZW50cworCSAgKyBhdm9pZCBjYWxsaW5nIF9uY190aW1lZF93YWl0IHdoZW4gdGhlcmUgaXMgYSBtb3VzZSBldmVudAorCSAgKyBoYW5kbGUgNHRoIGFuZCAicmlnaHRtb3N0IiBidXR0b25zLgorCSsgcXVvdGUgc3Vic3RpdHV0aW9ucyBpbiBDRl9SUEFUSF9IQUNLXzIgY29uZmlndXJlIG1hY3JvLCBuZWVkZWQgZm9yCisJICBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgZW1iZWRkZWQgYmxhbmtzIGluIHRoZSBycGF0aCBvcHRpb24uCisKKzIwMTAwNDAzCisJKyBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBleGN0YWdzIHZzIGN0YWdzLCB0byB3b3JrIGFyb3VuZCBwa2dzcmMuCisJKyBzaW1wbGlmeSBsb2dpYyBpbiBfbmNfZ2V0X3NjcmVlbnNpemUoKSB0byBtYWtlIGl0IGVhc2llciB0byBzZWUgaG93CisJICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbWF5IG92ZXJyaWRlIHN5c3RlbS0gYW5kIHRlcm1pbmZvLXZhbHVlcworCSAgKHByb21wdGVkIGJ5IGRpc2N1c3Npb24gd2l0aCBJZ29yIEJ1am5hKS4KKwkrIG1ha2UgZGVidWctdHJhY2VzIGZvciBDT0xPUl9QQUlSIGFuZCBQQUlSX05VTUJFUiBsZXNzIHZlcmJvc2UuCisJKyBpbXByb3ZlIGhhbmRsaW5nIG9mIGNvbG9yLXBhaXJzIGVtYmVkZGVkIGluIGF0dHJpYnV0ZXMgZm9yIHRoZQorCSAgZXh0ZW5kZWQtY29sb3JzIGNvbmZpZ3VyYXRpb24uCisJKyBtb2RpZnkgTUtsaWJfZ2VuLnNoIHRvIGJ1aWxkIGxpbmtfdGVzdCB3aXRoIHNwLWZ1bmNzLgorCSsgYnVpbGQtZml4ZXMgZm9yIE9wZW5Tb2xhcmlzIGFrYSBTb2xhcmlzIDExLCBmb3Igd2lkZS1jaGFyYWN0ZXIKKwkgIGNvbmZpZ3VyYXRpb24gYXMgd2VsbCBhcyBmb3IgcnBhdGggZmVhdHVyZSBpbiAqLWNvbmZpZyBzY3JpcHRzLgorCisyMDEwMDMyNworCSsgcmVmYWN0b3IgQ0ZfU0hBUkVEX09QVFMgY29uZmlndXJlIG1hY3JvLCBtYWtpbmcgQ0ZfUlBBVEhfSEFDSyBtb3JlCisJICByZXVzYWJsZS4KKwkrIGltcHJvdmUgY29uZmlndXJlIENGX1JFR0VYLCBzaW1pbGFyIGZpeGVzLgorCSsgaW1wcm92ZSBjb25maWd1cmUgQ0ZfRklORF9MSU5LQUdFLCBhZGRpbmcgYWRkIGNoZWNrIGJldHdlZW4gc3lzdGVtCisJICAoZGVmYXVsdCkgYW5kIGV4cGxpY2l0IHBhdGhzLCB3aGVyZSB3ZSBjYW4gZmluZCB0aGUgZW50cnlwb2ludCBpbiB0aGUKKwkgIGdpdmVuIGxpYnJhcnkuCisJKyBhZGQgY2hlY2sgaWYgR3BtX09wZW4oKSByZXR1cm5zIGEgLTIsIGUuZy4sIGZvciAieHRlcm0iLiAgVGhpcyBpcworCSAgbm9ybWFsbHkgc3VwcHJlc3NlZCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgJE5DVVJTRVNfR1BNX1RFUk1TLgorCSAgRW5zdXJlIHRoYXQgR3BtX0Nsb3NlKCkgaXMgY2FsbGVkIGluIHRoaXMgY2FzZS4KKworMjAxMDAzMjAKKwkrIHJlbmFtZSBhdGFyaSBhbmQgc3Q1MiB0ZXJtaW5mbyBlbnRyaWVzIHRvIGF0YXJpLW9sZCwgc3Q1Mi1vbGQsIHVzZQorCSAgbmV3ZXIgZW50cmllcyBmcm9tIEZyZWVNaU5UIGJ5IEd1aWRvIEZsb2hyIChmcm9tIHBhdGNoL3JlcG9ydCBieSBBbGFuCisJICBIb3VyaWhhbmUpLgorCisyMDEwMDMxMworCSsgbW9kaWZ5IGluc3RhbGwtcnVsZSBmb3IgbWFucGFnZXMgc28gdGhhdCAqLWNvbmZpZyBtYW5wYWdlcyB3aWxsCisJICBpbnN0YWxsIHdoZW4gYnVpbGRpbmcgd2l0aCAtLXNyY2RpciAocmVwb3J0IGJ5IFN2ZW4gSm9hY2hpbSkuCisJKyBtb2RpZnkgQ0ZfRElTQUJMRV9MRUFLUyBjb25maWd1cmUgbWFjcm8gc28gdGhhdCB0aGUgLS1lbmFibGUtbGVha3MKKwkgIG9wdGlvbiBpcyBub3QgdGhlIHNhbWUgYXMgLS1kaXNhYmxlLWxlYWtzIChHZW5Ub28gIzMwNTg4OSkuCisJKyBtb2RpZnkgI2RlZmluZSdzIGZvciBidWlsZC1jb21waWxlciB0byBzdXBwcmVzcyBjY2hhcl90IHN5bWJvbCBmcm9tCisJICBjb21waWxlIG9mIG1ha2VfaGFzaCBhbmQgbWFrZV9rZXlzLCBpbXByb3ZpbmcgY3Jvc3MtY29tcGlsYXRpb24gb2YKKwkgIG5jdXJzZXN3IChyZXBvcnQgYnkgQmVybmhhcmQgUm9zZW5rcmFlbnplcikuCisJKyBtb2RpZnkgQ0ZfTUFOX1BBR0VTIGNvbmZpZ3VyZSBtYWNybyB0byByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZgorCSAgVFBVVCBpbiB0cHV0LjEncyBtYW5wYWdlIChEZWJpYW4gIzU3MzU5NywgcmVwb3J0L2FuYWx5c2lzIGJ5IEFuZGVycworCSAgS2FzZW9yZykuCisKKzIwMTAwMzA2CisJKyBnZW5lcmF0ZSBtYW5wYWdlcyBmb3IgdGhlICotY29uZmlnIHNjcmlwdHMsIGFkYXB0ZWQgZnJvbSBoZWxwMm1hbgorCSAgKHN1Z2dlc3RlZCBieSBTdmVuIEpvYWNoaW0pLgorCSsgdXNlIHZhX2NvcHkoKSBpbiBfbmNfcHJpbnRmX3N0cmluZygpIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHVzZSBvZgorCSAgdmFfbGlzdCB2YWx1ZSBpbiBfbmNfcHJpbnRmX2xlbmd0aCgpIChyZXBvcnQgYnkgV2ltIExld2lzKS4KKworMjAxMDAyMjcKKwkrIGFkZCBBZGE5NS9jb25maWd1cmUgc2NyaXB0LCB0byB1c2UgaW4gdGFyLWZpbGUgY3JlYXRlZCBieQorCSAgQWRhOTUvbWFrZS10YXIuc2gKKwkrIGZpeCB0eXBvIGluIHdyZXNpemUuM3ggKHBhdGNoIGJ5IFRpbSB2YW4gZGVyIE1vbGVuKS4KKwkrIG1vZGlmeSBzY3JlZW4tYmNlLlhYWCBlbnRyaWVzIHRvIGV4Y2x1ZGUgZWNoLCBzaW5jZSBzY3JlZW4ncyBjb2xvcgorCSAgbW9kZWwgZG9lcyBub3QgY2xlYXIgd2l0aCBjb2xvciBmb3IgdGhhdCBmZWF0dXJlIC1URAorCisyMDEwMDIyMAorCSsgYWRkIG1ha2UtdGFyLnNoIHNjcmlwdHMgdG8gQWRhOTUgYW5kIHRlc3Qgc3ViZGlyZWN0b3JpZXMgdG8gaGVscCB3aXRoCisJICBtYWtpbmcgdGhvc2Ugc2VwYXJhdGVseSBkaXN0cmlidXRhYmxlLgorCSsgYnVpbGQtZml4IGZvciBzdGF0aWMgbGlicmFyaWVzIHdpdGhvdXQgZGxzeW0gKERlYmlhbiAjNTU2Mzc4KS4KKwkrIGZpeCBhIHN5bnRheCBlcnJvciBpbiBtYW4vZm9ybV9maWVsZF9vcHRzLjN4IChwYXRjaCBieSBJbmdvCisJICBTY2h3YXJ6ZSkuCisKKzIwMTAwMjEzCisJKyBhZGQgc2V2ZXJhbCBzY3JlZW4tYmNlLlhYWCBlbnRyaWVzIC1URAorCisyMDEwMDIwNgorCSsgdXBkYXRlIG1yeHZ0IHRlcm1pbmZvIGVudHJ5IC1URAorCSsgbW9kaWZ5IHdpbl9kcml2ZXIuYyB0byBzdXBwb3J0IG1vdXNlIHNpbmdsZS1jbGlja3MuCisJKyBjb3JyZWN0IG5hbWUgZm9yIHRlcm1saWIgaW4gbmN1cnNlcyotY29uZmlnLCBlLmcuLCBpZiBpdCBpcyByZW5hbWVkCisJICB0byBwcm92aWRlIGEgc2luZ2xlIGZpbGUgZm9yIG5jdXJzZXMvbmN1cnNlc3cgbGlicmFyaWVzIChwYXRjaCBieQorCSAgTWlyb3NsYXYgTGljaHZhcikuCisKKzIwMTAwMTMwCisJKyB1c2UgdmZvcmsgaW4gdGVzdC9kaXR0by5jIGlmIGF2YWlsYWJsZSAocmVxdWVzdCBieSBNaWtlIEZyeXNpbmdlcikuCisJKyBtaXNjZWxsYW5lb3VzIGNsZWFudXAgb2YgbWFucGFnZXMuCisJKyBmaXggdHlwbyBpbiBjdXJzX2JrZ2QuM3ggKHBhdGNoIGJ5IFRpbSB2YW4gZGVyIE1vbGVuKS4KKwkrIGJ1aWxkLWZpeCBmb3IgLS1zcmNkaXIgKHBhdGNoIGJ5IE1pcm9zbGF2IExpY2h2YXIpLgorCisyMDEwMDEyMworCSsgZm9yIHRlcm0tZHJpdmVyIGNvbmZpZ3VyYXRpb24sIGVuc3VyZSB0aGF0IHRoZSBkcml2ZXIgcG9pbnRlciBpcworCSAgaW5pdGlhbGl6ZWQgaW4gc2V0dXB0ZXJtIHNvIHRoYXQgdGVybWluZm8vdGVybWNhcCBwcm9ncmFtcyB3b3JrLgorCSsgYW1lbmQgZml4IGZvciBEZWJpYW4gIzU0MjAzMSB0byBlbnN1cmUgdGhhdCB3YXR0cnNldCgpIHJldHVybnMgb25seQorCSAgT0sgb3IgRVJSLCByYXRoZXIgdGhhbiB0aGUgYXR0cmlidXRlIHZhbHVlIChyZXBvcnQgYnkgTWlyb3NsYXYKKwkgIExpY2h2YXIpLgorCSsgcmVvcmRlciBXSU5ET1dMSVNUIHRvIHB1dCBXSU5ET1cgZGF0YSBhZnRlciBTQ1JFRU4gcG9pbnRlciwgbWFraW5nCisJICBfbmNfc2NyZWVuX29mKCkgY29tcGF0aWJsZSBiZXR3ZWVuIG5vcm1hbC93aWRlIGxpYnJhcmllcyBhZ2FpbiAocGF0Y2gKKwkgIGJ5IE1pcm9zbGF2IExpY2h2YXIpCisJKyByZXZpZXcvZml4IGluY2x1ZGUtZGVwZW5kZW5jaWVzIGluIG1vZHVsZXMgZmlsZXMgKHJlcG9ydCBieSBNaXJvc2xhdgorCSAgTGljaHZhcikuCisKKzIwMTAwMTE2CisJKyBtb2RpZnkgd2luX2RyaXZlci5jIHRvIGluaXRpYWxpemUgYWNzX21hcCBmb3Igd2luMzIgY29uc29sZSwgc28KKwkgIHRoYXQgbGluZS1kcmF3aW5nIHdvcmtzLgorCSsgbW9kaWZ5IHdpbl9kcml2ZXIuYyB0byBpbml0aWFsaXplIFRFUk1JTkFMIHN0cnVjdCBzbyB0aGF0IHByb2dyYW1zCisJICBzdWNoIGFzIHRlc3QvbHJ0ZXN0LmMgYW5kIHRlc3QvbmN1cnNlcy5jIHdoaWNoIHRlc3Qgc3RyaW5nCisJICBjYXBhYmlsaXRpZXMgY2FuIHJ1bi4KKwkrIG1vZGlmeSB0ZXJtLWRyaXZlciBtb2R1bGVzIHRvIGVsaW1pbmF0ZSBmb3J3YXJkLXJlZmVyZW5jZQorCSAgZGVjbGFyYXRpb25zLgorCisyMDEwMDEwOQorCSsgbW9kaWZ5IGNvbmZpZ3VyZSBtYWNybyBDRl9YT1BFTl9TT1VSQ0UsIGV0Yy4sIHRvIHVzZSBDRl9BRERfQ0ZMQUdTCisJICBjb25zaXN0ZW50bHkgdG8gYWRkIG5ldyAtRCdzIHdoaWxlIHJlbW92aW5nIGR1cGxpY2F0ZXMuCisJKyBtb2RpZnkgYSBmZXcgY29uZmlndXJlIG1hY3JvcyB0byBjb25zaXN0ZW50bHkgcHV0IG5ldyBvcHRpb25zCisJICBiZWZvcmUgb2xkZXIgaW4gdGhlIGxpc3QuCisJKyBhZGQgdGlwYXJtKCksIGJhc2VkIG9uIHJldmlldyBvZiBYL09wZW4gQ3Vyc2VzIElzc3VlIDcuCisJKyBtaW5vciBkb2N1bWVudGF0aW9uIGNsZWFudXAuCisJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViIGZyb20KKwkJaHR0cDovL3NhdmFubmFoLmdudS5vcmcvcHJvamVjdHMvY29uZmlnCisJICAoY2F2ZWF0IC0gaXRzIG1haW50YWluZXIgcHV0IDIwMTAgY29weXJpZ2h0IGRhdGUgb24gZmlsZXMgZGF0ZWQgMjAwOSkKKworMjAxMDAxMDIKKwkrIG1pbm9yIGltcHJvdmVtZW50IHRvIHRpYydzIGNoZWNraW5nIG9mIHNpbWlsYXIgU0dSJ3MgdG8gYWxsb3cgZm9yIHRoZQorCSAgbW9zdCBjb21tb24gY2FzZSBvZiBTR1IgMC4KKwkrIG1vZGlmeSBnZXRtb3VzZSgpIHRvIGFjdCBhcyBpdHMgZG9jdW1lbnRhdGlvbiBpbXBsaWVkLCByZXR1cm5pbmcgb24KKwkgIGVhY2ggY2FsbCB0aGUgcHJlY2VkaW5nIGV2ZW50IHVudGlsIG5vbmUgYXJlIGxlZnQuICBXaGVuIG5vIG1vcmUKKwkgIGV2ZW50cyByZW1haW4sIGl0IHdpbGwgcmV0dXJuIEVSUi4KKworMjAwOTEyMjcKKwkrIGNoYW5nZSBvcmRlciBvZiBsb29rdXAgaW4gcHJvZ3MvdHB1dC5jLCBsb29raW5nIGZvciB0ZXJtaW5mbyBkYXRhCisJICBmaXJzdC4gIFRoaXMgZml4ZXMgYSBjb25mdXNpb24gYmV0d2VlbiB0ZXJtY2FwICJzZyIgYW5kIHRlcm1pbmZvCisJICAic2dyIiBvciAic2dyMCIsIG9yaWdpbmFsbHkgZnJvbSA5OTAxMjMgY2hhbmdlcywgYnV0IGV4cG9zZWQgYnkKKwkgIDIwMDkxMTE0IGZpeGVzIGZvciBoYXNoaW5nLiAgV2l0aCB0aGlzIGNoYW5nZSwgb25seSAiZGwiIGFuZCAiZWQiIGFyZQorCSAgYW1iaWd1b3VzIChNYW5kcml2YSAjNTYyNzIpLgorCisyMDA5MTIyNgorCSsgYWRkIGJ0ZXJtIHRlcm1pbmZvIGVudHJ5LCBiYXNlZCBvbiBib2dsIDAuMS4xOCAtVEQKKwkrIG1pbm9yIGZpeCB0byByeHZ0K3BjZmtleXMgdGVybWluZm8gZW50cnkgLVRECisJKyBidWlsZC1maXhlcyBmb3IgQWRhOTUgdHJlZSBmb3IgZ25hdCA0LjQgInN0eWxlIi4KKworMjAwOTEyMTkKKwkrIHJlbW92ZSBvbGQgY2hlY2sgaW4gbXZkZXJ3aW4oKSB3aGljaCBwcmV2ZW50ZWQgbW92aW5nIGEgZGVyaXZlZAorCSAgd2luZG93IHdob3NlIG9yaWdpbiBoYXBwZW5lZCB0byBjb2luY2lkZSB3aXRoIGl0cyBwYXJlbnQncyBvcmlnaW4KKwkgIChyZXBvcnQgYnkgS2F0YXJpbmEgTWFjaGFsa292YSkuCisJKyBpbXByb3ZlIHRlc3QvbmN1cnNlcy5jIHRvIHB1dCBtb3VzZSBkcm9wcGluZ3MgaW4gdGhlIHByb3BlciB3aW5kb3cuCisJKyB1cGRhdGUgbWluaXggdGVybWluZm8gZW50cnkgLVRECisJKyBhZGQgYncgKGF1dG8tbGVmdC1tYXJnaW4pIHRvIG5zdGVybSogZW50cmllcyAoQmVuamFtaW4gU2l0dGxlcikKKworMjAwOTEyMTIKKwkrIGNvcnJlY3QgdHJhbnNmZXIgb2YgbXVsdGljb2x1bW4gY2hhcmFjdGVycyBpbiBtdWx0aXJvdworCSAgZmllbGRfYnVmZmVyKCksIHdoaWNoIHN0b3BwZWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlyc3Qgcm93IGR1ZSB0bworCSAgZmlsbGluZyBvZiB1bnVzZWQgZW50cmllcyBpbiBhIGNjaGFyX3QgYXJyYXkgd2l0aCBudWxscy4KKwkrIHVwZGF0ZWQgbnN0ZXJtKiBlbnRyaWVzIChCZW5qYW1pbiBTaXR0bGVyLCBFbWFudWVsZSBHaWFxdWludGEpCisJKyBtb2RpZnkgX25jX3Zpc2NidWYyKCkgYW5kIF90cmFjZWNjaGFyX3QyKCkgdG8gc2hvdyB3aWRlLWNoYXJhY3RlcgorCSAgbnVsbHMuCisJKyB1c2Ugc3RyZHVwKCkgaW4gc2V0X21lbnVfbWFyaygpLCByZXN0b3JlIC5tYXJrbGVuIHN0cnVjdCBtZW1iZXIgb24KKwkgIGZhaWx1cmUuCisJKyBlbGltaW5hdGUgY2xhdXNlIDMgZnJvbSB0aGUgVUNCIGNvcHlyaWdodHMgaW4gcmVhZF90ZXJtY2FwLmMgYW5kCisJICB0c2V0LmMgcGVyCisJCWZ0cDovL2Z0cC5jcy5iZXJrZWxleS5lZHUvcHViLzRic2QvUkVBRE1FLkltcHQuTGljZW5zZS5DaGFuZ2UKKwkgIChwYXRjaCBieSBOaWNob2xhcyBNYXJyaW90dCkuCisJKyByZXBsYWNlIGEgbWFsbG9jIGluIHRpYy5jIHdpdGggc3RyZHVwLCBjaGVja2luZyBmb3IgZmFpbHVyZSAocGF0Y2ggYnkKKwkgIE5pY2hvbGFzIE1hcnJpb3R0KS4KKwkrIHVwZGF0ZSBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIgZnJvbQorCQlodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9jb25maWcKKworMjAwOTEyMDUKKwkrIGNvcnJlY3QgbGF5b3V0IG9mIHdvcmtpbmcgd2luZG93IHVzZWQgdG8gZXh0cmFjdCBkYXRhIGluCisJICB3aWRlLWNoYXJhY3RlciBjb25maWd1cmVkIGJ5IHNldF9maWVsZF9idWZmZXIgKHBhdGNoIGJ5IFJhZmFlbAorCSAgR2FycmlkbyBGZXJuYW5kZXopCisJKyBpbXByb3ZlIHNvbWUgbGltaXQtY2hlY2tzIHJlbGF0ZWQgdG8gZmlsZW5hbWUgbGVuZ3RoIGluIHJlYWRpbmcgYW5kCisJICB3cml0aW5nIHRlcm1pbmZvIGVudHJpZXMuCisJKyBlbnN1cmUgdGhhdCBmaWxlbmFtZSBpcyBhbHdheXMgZmlsbGVkIGluIHdoZW4gYXR0ZW1wdGluZyB0byByZWFkCisJICBhIHRlcm1pbmZvIGVudHJ5LCBzbyB0aGF0IGluZm9jbXAgY2FuIHJlcG9ydCB0aGUgZmlsZW5hbWUgKHBhdGNoCisJICBieSBOaWNob2xhcyBNYXJyaW90dCkuCisKKzIwMDkxMTI4CisJKyBtb2RpZnkgbWstMXN0LmF3ayB0byBhbGxvdyB0aW5mbyBsaWJyYXJ5IHRvIGJlIGJ1aWx0IHdoZW4gdGVybS1kcml2ZXIKKwkgIGlzIGVuYWJsZWQuCisJKyBhZGQgZXJyb3ItY2hlY2sgdG8gY29uZmlndXJlIHNjcmlwdCB0byBlbnN1cmUgdGhhdCBzcC1mdW5jcyBpcworCSAgZW5hYmxlZCBpZiB0ZXJtLWRyaXZlciBpcywgc2luY2Ugc29tZSBpbnRlcm5hbCBpbnRlcmZhY2VzIHJlbHkgdXBvbgorCSAgdGhpcy4KKworMjAwOTExMjEKKwkrIGZpeCBjYXNlIHdoZXJlIHByb2dzL3RwdXQgaXMgdXNlZCB3aGlsZSBzcC1mdW5jcyBpcyBjb25maWd1cmU7IHRoaXMKKwkgIHJlcXVpcmVzIHNhdmUvcmVzdG9yZSBvZiBvdXQtY2hhcmFjdGVyIGZ1bmN0aW9uIGZyb20gX25jX3ByZXNjcmVlbgorCSAgcmF0aGVyIHRoYW4gdGhlIFNDUkVFTiBzdHJ1Y3R1cmUgKHJlcG9ydCBieSBDaGFybGVzIFdpbHNvbikuCisJKyBmaXggdHlwbyBpbiBtYW4vY3Vyc190cmFjZS4zeCB3aGljaCBjYXVzZWQgaW5jb3JyZWN0IHN5bWJvbGljIGxpbmtzCisJKyBpbXByb3ZlZCBjb25maWd1cmUgbWFjcm9zIENGX0dDQ19BVFRSSUJVVEVTLCBDRl9QUk9HX0xJTlQuCisKKzIwMDkxMTE0CisKKwkrIHVwZGF0ZWQgbWFuL2N1cnNfdHJhY2UuM3gKKwkrIGxpbWl0IGhhc2hpbmcgZm9yIHRlcm1jYXAtbmFtZXMgdG8gMi1jaGFyYWN0ZXJzIChVYnVudHUgIzQ4MTc0MCkuCisJKyBjaGFuZ2UgYSB2YXJpYWJsZSBuYW1lIGluIGxpYl9uZXd3aW4uYyB0byBtYWtlIGl0IGNsZWFyZXIgd2hpY2gKKwkgIHZhbHVlIGlzIGJlaW5nIGZyZWVkIG9uIGVycm9yIChwYXRjaCBieSBOaWNob2xhcyBNYXJyaW90dCkuCisKKzIwMDkxMTA3CisJKyBpbXByb3ZlIHRlc3QvbmN1cnNlcy5jIGNvbG9yLWN5Y2xpbmcgdGVzdCBieSByZXVzaW5nIGF0dHJpYnV0ZS0KKwkgIGFuZCBjb2xvci1jeWNsaW5nIGxvZ2ljIGZyb20gdGhlIHZpZGVvLWF0dHJpYnV0ZXMgc2NyZWVuLgorCSsgYWRkIGlmZGVmJ2Qgd2l0aCBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MgZXhwZXJpbWVudGFsIGJpbmRpbmdzIGluIGZvcm0KKwkgIGxpYnJhcnkgd2hpY2ggaGVscCBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aCBpbnRlcm9wIGFwcGxpY2F0aW9ucworCSAgKHBhdGNoIGJ5IEp1ZXJnZW4gUGZlaWZlcikuCisJKyBhZGQgY29uZmlndXJlIG9wdGlvbiAtLWVuYWJsZS1pbnRlcm9wLCBmb3IgaW50ZWdyYXRpbmcgY2hhbmdlcworCSAgZm9yIGdlbmVyaWMvaW50ZXJvcCBzdXBwb3J0IHRvIGZvcm0tbGlicmFyeSBieSBKdWVyZ2VuIFBmZWlmZXIKKworMjAwOTEwMzEKKwkrIG1vZGlmeSB1c2Ugb2YgJENDIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIGlzIGRlZmluZWQgYnkgWC9PcGVuCisJICBhcyBhIGN1cnNlcyBmZWF0dXJlLCB0byBpZ25vcmUgaXQgaWYgaXQgaXMgbm90IGEgc2luZ2xlIGNoYXJhY3RlcgorCSAgKHByb21wdGVkIGJ5IGRpc2N1c3Npb24gd2l0aCBCZW5qYW1pbiBDIFcgU2l0dGxlcikuCisJKyBhZGQgU1RBUlRfVFJBQ0UgaW4gc2xrX2luaXQKKwkrIGZpeCBhIHJlZ3Jlc3Npb24gaW4gX25jX3JpcG9mZmxpbmUgd2hpY2ggbWFkZSB0ZXN0L25jdXJzZXMuYyBub3Qgc2hvdworCSAgc29mdC1rZXlzLCBicm9rZW4gaW4gMjAwOTA5MjcgbWVyZ2luZy4KKwkrIGNoYW5nZSBpbml0aWFsaXphdGlvbiBvZiAiaGlkZGVuIiBmbGFnIGZvciBzb2Z0LWtleXMgZnJvbSB0cnVlIHRvCisJICBmYWxzZSwgYnJva2VuIGluIDIwMDkwNzA0IG1lcmdpbmcgKFVidW50dSAjNDY0Mjc0KS4KKwkrIHVwZGF0ZSBuc3Rlcm0gZW50cmllcyAocGF0Y2ggYnkgQmVuamFtaW4gQyBXIFNpdHRsZXIsIHByb21wdGVkIGJ5CisJICBkaXNjdXNzaW9uIHdpdGggRmFiaWFuIEdyb2ZmZW4gaW4gR2VuVG9vICMyMDYyMDEpLgorCSsgYWRkIHRlc3QveHRlcm0tMjU2Y29sb3IuZGF0CisKKzIwMDkxMDI0CisJKyBxdWlldCBzb21lIHBlZGFudGljIGdjYyB3YXJuaW5ncy4KKwkrIG1vZGlmeSBfbmNfd2dldGNoKCkgdG8gY2hlY2sgZm9yIGEgLTEgaW4gdGhlIGZpZm8sIGUuZy4sIGFmdGVyIGEKKwkgIFNJR1dJTkNILCBhbmQgZGlzY2FyZCB0aGF0IHZhbHVlLCB0byBhdm9pZCBjb25mdXNpbmcgYXBwbGljYXRpb24KKwkgIChwYXRjaCBieSBFeWdlbmUgUnlhYmlua2luLCBGcmVlQlNEICMxMzYyMjMpLgorCisyMDA5MTAxNworCSsgbW9kaWZ5IGhhbmRsaW5nIG9mICRQS0dfQ09ORklHX0xJQkRJUiB0byB1c2Ugb25seSB0aGUgZmlyc3QgaXRlbSBpbgorCSAgYSBwb3NzaWJseSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCAoRGViaWFuICM1NTA3MTYpLgorCisyMDA5MTAxMAorCSsgc3VwcGx5IGEgbnVsbC10ZXJtaW5hdG9yIHRvIGJ1ZmZlciBpbiBfbmNfdmlzd2lidWYoKS4KKwkrIGZpeCBhIHNpZ24tZXh0ZW5zaW9uIGJ1ZyBpbiB1bmdldF93Y2goKSAocmVwb3J0IGJ5IE1pa2UgR3JhbikuCisJKyBtaW5vciBmaXhlcyB0byBlcnJvci1yZXR1cm5zIGluIGRlZmF1bHQgZnVuY3Rpb24gZm9yIHRwdXRzLCBhcyB3ZWxsCisJICBhcyBpbiBsaWJfc2NyZWVuLmMKKworMjAwOTEwMDMKKwkrIGFkZCBXQUNTX3h4eCBkZWZpbml0aW9ucyB0byB3aWRlLWNoYXJhY3RlciBjb25maWd1cmF0aW9uIGZvciB0aGljay0KKwkgIGFuZCBkb3VibGUtbGluZXMgKGRpc2N1c3Npb24gd2l0aCBTbGF2YSBaYW5rbykuCisJKyByZW1vdmUgdW5uZWNlc3Nhcnkga2NhbiBhc3NpZ25tZW50IHRvIF5DIGZyb20gcHV0dHkgKFN2ZW4gSm9hY2hpbSkKKwkrIGFkZCBjY2MgYW5kIGluaXRjIGNhcGFiaWxpdGllcyB0byB4dGVybS0xNmNvbG9yIC1URAorCT4gcGF0Y2ggYnkgQmVuamFtaW4gQyBXIFNpdHRsZXI6CisJKyBhZGQgbGludXgtMTZjb2xvcgorCSsgY29ycmVjdCBpbml0YyBjYXBhYmlsaXR5IG9mIGxpbnV4LWMtbmMgZW5kLW9mLXJhbmdlCisJKyBzaW1pbGFyIGNoYW5nZSBmb3IgZGcrY2NjIGFuZCBkZ3VuaXgrY2NjCisKKzIwMDkwOTI3CisJKyBtb3ZlIGxlYWstY2hlY2tpbmcgZm9yIGNvbXBfY2FwdGFiLmMgaW50byBfbmNfbGVha3NfdGluZm8oKSBzaW5jZQorCSAgdGhhdCBtb2R1bGUgc2luY2UgMjAwOTA3MTEgaXMgaW4gbGlidGluZm8uCisJKyBhZGQgY29uZmlndXJlIG9wdGlvbiAtLWVuYWJsZS10ZXJtLWRyaXZlciwgdG8gYWxsb3cgY29tcGlsaW5nIHdpdGgKKwkgIHRlcm1pbmFsLWRyaXZlci4gIFRoYXQgaXMgdXNlZCBpbiBNaW5HVyBwb3J0LCBhbmQgKGJlaW5nIHNvbWV3aGF0CisJICBtb3JlIGNvbXBsaWNhdGVkKSBpcyBhbiBleHBlcmltZW50YWwgYWx0ZXJuYXRpdmUgdG8gdGhlIGNvbnZlbnRpb25hbAorCSAgdGVybWxpYiBpbnRlcm5hbHMuICBDdXJyZW50bHksIGl0IHJlcXVpcmVzIHRoZSBzcC1mdW5jcyBmZWF0dXJlIHRvCisJICBiZSBlbmFibGVkLgorCSsgY29tcGxldGVkIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIGluIG5jdXJzZXMKKwkgIGxpYnJhcnkgKHNvbWUgd29yayByZW1haW5zIGZvciBmb3JtcyBsaWJyYXJ5KS4KKworMjAwOTA5MTkKKwkrIGRvY3VtZW50IHJldHVybiBjb2RlIGZyb20gZGVmaW5lX2tleSAocmVwb3J0IGJ5IE1pa2UgR3JhbikuCisJKyBtYWtlIHNvbWUgc3ltYm9saWMgbGlua3MgaW4gdGhlIHRlcm1pbmZvIGRpcmVjdG9yeS10cmVlIHNob3J0ZXIKKwkgIChwYXRjaCBieSBEYW5pZWwgSmFjb2Jvd2l0eiwgZm9yd2FyZGVkIGJ5IFN2ZW4gSm9hY2hpbSkuKS4KKwkrIGZpeCBzb21lIGdyb2ZmIHdhcm5pbmdzIGluIHRlcm1pbmZvLjUsIGV0Yy4sIGZyb20gcmVjZW50IERlYmlhbgorCSAgY2hhbmdlcy4KKwkrIGNoYW5nZSBuY3YgYW5kIG9wIGNhcGFiaWxpdGllcyBpbiBzdW4tY29sb3IgdGVybWluZm8gZW50cnkgdG8gbWF0Y2gKKwkgIFN1bidzIGVudHJ5IGZvciB0aGlzIChyZXBvcnQgYnkgTGFzemxvIFBldGVyKS4KKwkrIGltcHJvdmUgaW50ZXJpeCBzbXNvIHRlcm1pbmZvIGNhcGFiaWxpdHkgYnkgdXNpbmcgcmV2ZXJzZSByYXRoZXIgdGhhbgorCSAgYm9sZCAocmVwb3J0IGJ5IEtyaXN0b2YgWmVsZWNob3Zza2kpLgorCisyMDA5MDkxMgorCSsgYWRkIHNvbWUgdGVzdCBwcm9ncmFtcyAoYW5kIG1ha2UgdGhlc2UgdXNlIHRoZSBzYW1lIHNwZWNpYWwga2V5cworCSAgYnkgc2hhcmluZyBsaW5lZGF0YS5oIGZ1bmN0aW9ucyk6CisJICB0ZXN0L3Rlc3RfYWRkc3RyLmMKKwkgIHRlc3QvdGVzdF9hZGR3c3RyLmMKKwkgIHRlc3QvdGVzdF9hZGRjaHN0ci5jCisJICB0ZXN0L3Rlc3RfYWRkX3djaHN0ci5jCisJKyBjb3JyZWN0IGludGVybmFsIF9uY19pbnNlcnRfY2goKSB0byB1c2UgX25jX2luc2VydF93Y2goKSB3aGVuCisJICBpbnNlcnRpbmcgd2lkZSBjaGFyYWN0ZXJzLCBzaW5jZSB0aGUgd2luc193Y2goKSBmdW5jdGlvbiB0aGF0IGl0IHVzZWQKKwkgIGRpZCBub3QgdXBkYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24gKHJlcG9ydCBieSBDaXByaWFuIENyYWNpdW4pLgorCisyMDA5MDkwNgorCSsgZml4IHR5cG8gcy9pc190aW1lb3V0L2lzX25vdGltZW91dC8gd2hpY2ggbWFkZSAibWFuIGlzX25vdGltZW91dCIgbm90CisJICB3b3JrLgorCSsgYWRkIG51bGwtcG9pbnRlciBjaGVja3MgdG8gb3RoZXIgb3BhcXVlLWZ1bmN0aW9ucy4KKwkrIGFkZCBpc19wYWQoKSBhbmQgaXNfc3Vid2luKCkgZnVuY3Rpb25zIGZvciBvcGFxdWUgYWNjZXNzIHRvIFdJTkRPVworCSAgKGRpc2N1c3Npb24gd2l0aCBNYXJrIERpY2tpbnNvbikuCisJKyBjb3JyZWN0IG1lcmdlIHRvIGxpYl9uZXd0ZXJtLmMsIHdoaWNoIGJyb2tlIHdoZW4gc3AtZnVuY3Mgd2FzCisJICBlbmFibGVkLgorCisyMDA5MDkwNQorCSsgYnVpbGQtZml4IGZvciBidWlsZGluZyBvdXRzaWRlIHNvdXJjZS10cmVlIChyZXBvcnQgYnkgU3ZlbiBKb2FjaGltKS4KKwkrIGZpeCBEZWJpYW4gbGludGlhbiB3YXJuaW5nIGZvciBtYW4vdGFicy4xIGJ5IG1ha2luZyBzZWN0aW9uIG51bWJlcgorCSAgYWdyZWUgd2l0aCBmaWxlLXN1ZmZpeCAocmVwb3J0IGJ5IFN2ZW4gSm9hY2hpbSkuCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisKKzIwMDkwODI5CisJKyB3b3JrYXJvdW5kIGZvciBidWcgaW4gZysrIDQuMS00LjQgd2FybmluZ3MgZm9yIHdhdHRyc2V0KCkgbWFjcm8gb24KKwkgIGFtZDY0IChEZWJpYW4gIzU0MjAzMSkuCisJKyBmaXggdHlwbyBpbiBjdXJzX21vdXNlLjN4IChEZWJpYW4gIzQyOTE5OCkuCisKKzIwMDkwODIyCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisKKzIwMDkwODE1CisJKyBjb3JyZWN0IHVzZSBvZiB0ZXJtaW5mbyBjYXBhYmlsaXRpZXMgZm9yIGluaXRpYWxpemluZyBzb2Z0LWtleXMsCisJICBicm9rZW4gaW4gMjAwOTA1MTAgbWVyZ2luZy4KKwkrIG1vZGlmeSB3Z2V0Y2goKSB0byBlbnN1cmUgaXQgY2hlY2tzIFNJR1dJTkNIIHdoZW4gaXQgZ2V0cyBhbiBlcnJvcgorCSAgaW4gbm9uLWJsb2NraW5nIG1vZGUgKHBhdGNoIGJ5IENsZW1lbnMgTGFkaXNjaCkuCisJKyB1c2UgUEFUSF9TRVBBUkFUT1Igc3ltYm9sIHdoZW4gc3Vic3RpdHV0aW5nIGludG8gcnVuX3RpYy5zaCwgdG8KKwkgIGhlbHAgd2l0aCBidWlsZHMgb24gbm9uLVVuaXggcGxhdGZvcm1zIHN1Y2ggYXMgT1MvMiBFTVguCisJKyBtb2RpZnkgc2NyaXB0aW5nIGZvciBtaXNjL3J1bl90aWMuc2ggdG8gdGVzdCBjb25maWd1cmUgc2NyaXB0J3MKKwkgICRjcm9zc19jb21waWxpbmcgdmFyaWFibGUgZGlyZWN0bHkgcmF0aGVyIHRoYW4gY29tcGFyaW5nIGhvc3QvYnVpbGQKKwkgIGNvbXBpbGVyIG5hbWVzIChwcm9tcHRlZCBieSBjb21tZW50IGluIEdlblRvbyAjMjQ5MzYzKS4KKwkrIGZpeCBjb25maWd1cmUgc2NyaXB0IG9wdGlvbiAtLXdpdGgtZGF0YWJhc2UsIHdoaWNoIHdhcyBjb2RlZCBhcyBhbgorCSAgZW5hYmxlLXR5cGUgc3dpdGNoLgorCSsgYnVpbGQtZml4ZXMgZm9yIC0tc3JjZGlyIChyZXBvcnQgYnkgRnJlZGVyaWMgTCBXIE1ldW5pZXIpLgorCisyMDA5MDgwOAorCSsgc2VwYXJhdGUgX25jX2ZpbmRfZW50cnkoKSBhbmQgX25jX2ZpbmRfdHlwZV9lbnRyeSgpIGZyb20KKwkgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaGFzaCBmdW5jdGlvbi4KKworMjAwOTA4MDMKKwkrIGFkZCB0YWJzLjEgdG8gbWFuL21hbl9kYi5yZW5hbWVzCisJKyBtb2RpZnkgbGliX2FkZGNoLmMgdG8gY29tcGVuc2F0ZSBmb3IgcmVtb3ZhbCBvZiB3aWRlLWNoYXJhY3RlciB0ZXN0CisJICBmcm9tIHVuY3RybCgpIGluIDIwMDkwNzA0IChEZWJpYW4gIzUzOTczNSkuCisKKzIwMDkwODAxCisJKyBpbXByb3ZlIGRpc2N1c3Npb24gaW4gSU5TVEFMTCBmb3IgdXNlIG9mIHN5c3RlbSdzIHRpYy9pbmZvY21wIGZvcgorCSAgY3Jvc3MtY29tcGlsaW5nIGFuZCBidWlsZGluZyBmYWxsYmFja3MuCisJKyBtb2RpZnkgdGVzdC9kZW1vX3Rlcm1jYXAuYyB0byBjb3JyZXNwb25kIGJldHRlciB0byBvcHRpb25zIGluCisJICB0ZXN0L2RlbW9fdGVybWluZm8uYworCSsgY29udGludWUgaW50ZWdyYXRpbmcgInNwLWZ1bmNzIiBieSBKdWVyZ2VuIFBmZWlmZXIgKGluY29tcGxldGUpLgorCSsgZml4IGxvZ2ljIGZvciAnVicgaW4gdGVzdC9uY3Vyc2VzLmMgdGVzdHMgZi9GLgorCisyMDA5MDcyOAorCSsgY29ycmVjdCBsb2dpYyBpbiB0aWdldG51bSgpLCB3aGljaCBjYXVzZWQgdHB1dCBwcm9ncmFtIHRvIHRyZWF0IGFsbAorCSAgc3RyaW5nIGNhcGFiaWxpdGllcyBhcyBudW1lcmljIChyZXBvcnQgYnkgUmFqZWV2IFYgUGlsbGFpLAorCSAgY2Y6IDIwMDkwNzExKS4KKworMjAwOTA3MjUKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA3MTgKKwkrIGZpeCBhIG51bGwtcG9pbnRlciBjaGVjayBpbiBfbmNfZm9ybWF0X3Nsa3MoKSBpbiBsaWJfc2xrLmMsIGZyb20KKwkgIDIwMDkwNzA0IGNoYW5nZXMuCisJKyBtb2RpZnkgX25jX2ZpbmRfdHlwZV9lbnRyeSgpIHRvIHVzZSBoYXNoaW5nLgorCSsgbWFrZSBDQ0hBUldfTUFYIHZhbHVlIGNvbmZpZ3VyYWJsZSwgbm90aW5nIHRoYXQgY2hhbmdpbmcgdGhpcyB3b3VsZAorCSAgY2hhbmdlIHRoZSBzaXplIG9mIGNjaGFyX3QsIGFuZCB3b3VsZCBiZSBBQkktaW5jb21wYXRpYmxlLgorCSsgbW9kaWZ5IHRlc3QtcHJvZ3JhbXMsIGUuZywuICB0ZXN0L3ZpZXcuYywgdG8gYWRkcmVzcyBzdWJ0bGUKKwkgIGRpZmZlcmVuY2VzIGJldHdlZW4gVHJ1NjQvU29sYXJpcyBhbmQgSFBVWC9BSVggZ2V0Y2NoYXIoKSByZXR1cm4KKwkgIHZhbHVlcy4KKwkrIG1vZGlmeSBsZW5ndGggcmV0dXJuZWQgYnkgZ2V0Y2NoYXIoKSB0byBjb3VudCB0aGUgdHJhaWxpbmcgbnVsbAorCSAgd2hpY2ggaXMgZG9jdW1lbnRlZCBpbiBYL09wZW4gKGNmOiAyMDAyMDQyNykuCisJKyBmaXhlcyBmb3IgdGVzdCBwcm9ncmFtcyB0byBidWlsZC93b3JrIG9uIEhQVVggYW5kIEFJWCwgZXRjLgorCisyMDA5MDcxMQorCSsgaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB0aWdldHN0ciwgZXRjLiwgYnkgdXNpbmcgaGFzaGluZyBjb2RlIGZyb20gdGljLgorCSsgbWlub3IgZml4ZXMgZm9yIG1lbW9yeS1sZWFrIGNoZWNraW5nLgorCSsgYWRkIHRlc3QvZGVtb190ZXJtaW5mbywgZm9yIGNvbXBhcmlzb24gd2l0aCBkZW1vX3Rlcm1jYXAKKworMjAwOTA3MDQKKwkrIHJlbW92ZSB3aWRlLWNoYXJhY3RlciBjaGVja3MgZnJvbSB1bmN0cmwoKSAocGF0Y2ggYnkgQ2xlbWVucyBMYWRpc2NoKS4KKwkrIHJldmlzZSB3YWRkX3djaCgpIGFuZCB3ZWNob193Y2hhcigpIHRvIGVsaW1pbmF0ZSBkZXBlbmRlbmN5IG9uCisJICB1bmN0cmwoKS4KKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA2MjcKKwkrIHVwZGF0ZSBsbGliLWxuY3Vyc2VzW3d0XSB0byB1c2Ugc3AtZnVuY3MuCisJKyB2YXJpb3VzIGNvZGUtZml4ZXMgdG8gYnVpbGQvd29yayB3aXRoIC0tZGlzYWJsZS1tYWNyb3MgY29uZmlndXJlCisJICBvcHRpb24uCisJKyBhZGQgc2V2ZXJhbCBuZXcgZmlsZXMgZnJvbSBKdWVyZ2VuIFBmZWlmZXIgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4KKwkgIGludGVncmF0aW9uIG9mICJzcC1mdW5jcyIgaXMgY29tcGxldGUuICBUaGlzIGluY2x1ZGVzIGEgcG9ydCB0bworCSAgTWluR1cuCisKKzIwMDkwNjEzCisJKyBtb3ZlIGRlZmluaXRpb24gZm9yIE5DVVJTRVNfV1JBUFBFRF9WQVIgYmFjayB0byBuY3Vyc2VzX2RsbC5oLCB0bworCSAgbWFrZSBpbmNsdWRlcyBvZiB0ZXJtLmggd2l0aG91dCBjdXJzZXMuaCB3b3JrIChyZXBvcnQgYnkgIk5peCIpLgorCSsgY29udGludWUgaW50ZWdyYXRpbmcgInNwLWZ1bmNzIiBieSBKdWVyZ2VuIFBmZWlmZXIgKGluY29tcGxldGUpLgorCisyMDA5MDYwNworCSsgZml4IGEgcmVncmVzc2lvbiBpbiBsaWJfdHB1dHMuYywgZnJvbSBvbmdvaW5nIG1lcmdlcy4KKworMjAwOTA2MDYKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA1MzAKKwkrIGZpeCBhbiBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiBhZGRpbmcgYSBsZWdhY3ktY29kaW5nIDgtYml0IHZhbHVlCisJICB1c2luZyBpbnNjaCgpIChyZXBvcnQgYnkgQ2xlbWVucyBMYWRpc2NoKS4KKwkrIGZyZWUgaG9tZS10ZXJtaW5mbyBzdHJpbmcgaW4gZGVsX2N1cnRlcm0oKSAocGF0Y2ggYnkgRGFuIFdlYmVyKS4KKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA1MjMKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA1MTYKKwkrIHdvcmsgYXJvdW5kIGFudGlxdWUgQlNEIGdhbWUncyBtYW5pcHVsYXRpb24gb2Ygc3Rkc2NyLCBldGMuLCB2ZXJzdXMKKwkgIFNDUkVFTidzIGNvcHkgb2YgdGhlIHBvaW50ZXIgKERlYmlhbiAjNTI4NDExKS4KKwkrIGFkZCBhIGNhc3QgdG8gd2F0dHJzZXQgbWFjcm8gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZyB3aGVuIGNvbXBhcmluZworCSAgaXRzIHJlc3VsdCBhZ2FpbnN0IEVSUiAoYWRhcHRlZCBmcm9tIHBhdGNoIGJ5IE1hdHQgS3JhaWksIERlYmlhbgorCSAgIzUyODM3NCkuCisKKzIwMDkwNTEwCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisKKzIwMDkwNTAyCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisJKyBhZGQgdndtdGVybSB0ZXJtaW5mbyBlbnRyeSAocGF0Y2ggYnkgQnJ5YW4gQ2hyaXN0KS4KKworMjAwOTA0MjUKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA0MTkKKwkrIGJ1aWxkIGZpeCBmb3IgX25jX2ZyZWVfYW5kX2V4aXQoKSBjaGFuZ2UgaW4gMjAwOTA0MTggKHJlcG9ydCBieQorCSAgQ2hyaXN0aWFuIEViZXJ0KS4KKworMjAwOTA0MTgKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKworMjAwOTA0MTEKKwkrIGNvbnRpbnVlIGludGVncmF0aW5nICJzcC1mdW5jcyIgYnkgSnVlcmdlbiBQZmVpZmVyIChpbmNvbXBsZXRlKS4KKwkgIFRoaXMgY2hhbmdlIGZpbmlzaGVzIG1lcmdpbmcgZm9yIG1lbnUgYW5kIHBhbmVsIGxpYnJhcmllcywgZG9lcworCSAgcGFydCBvZiB0aGUgZm9ybSBsaWJyYXJ5LgorCisyMDA5MDQwNAorCSsgc3VwcHJlc3MgY29uZmlndXJlIGNoZWNrIGZvciBzdGF0aWMvZHluYW1pYyBsaW5rZXIgZmxhZ3MgZm9yIGdjYyBvbgorCSAgRGFyd2luIChyZXBvcnQgYnkgTmVsc29uIEJlZWJlKS4KKworMjAwOTAzMjgKKwkrIGV4dGVuZCBhbnNpLnN5cyBwZmtleSBjYXBhYmlsaXR5IGZyb20ga2YxLWtmMTAgdG8ga2YxLWtmNDgsIG1vdmluZworCSAgZnVuY3Rpb24ga2V5IGRlZmluaXRpb25zIGZyb20gZW14LWJhc2UgZm9yIGNvbnNpc3RlbmN5IC1URAorCSsgY29ycmVjdCBtaXNzaW5nIGZpbmFsICdwJyBpbiBwZmtleSBjYXBhYmlsaXR5IG9mIGFuc2kuc3lzLW9sZCAocmVwb3J0CisJICBieSBLYWxsZSBPbGF2aSBOaWVtaXRhbG8pLgorCSsgaW1wcm92ZSB0ZXN0L25jdXJzZXMuYyAnRicgdGVzdCwgc2hvdyBjb21iaW5pbmcgY2hhcmFjdGVycyBpbiBjb2xvci4KKwkrIHF1aWV0IGEgZmFsc2UgcmVwb3J0IGJ5IGNwcGNoZWNrIGluIGMrKy9jdXJzZXN3LmNjIGJ5IGVsaW1pbmF0aW5nCisJICBhIHRlbXBvcmFyeSB2YXJpYWJsZS4KKwkrIHVzZSBfbmNfZG9hbGxvYygpIHJhdGhlciB0aGFuIHJlYWxsb2MoKSBpbiBhIGZldyBwbGFjZXMgaW4gbmN1cnNlcworCSAgbGlicmFyeSB0byBhdm9pZCBsZWFrIGluIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uIChyZXBvcnRzIGJ5IFdpbGxpYW0KKwkgIEVnZXJ0IGFuZCBNYXJ0aW4gRXR0bCBiYXNlZCBvbiBjcHBjaGVjayB0b29sKS4KKwkrIGFkZCAtLXdpdGgtbmN1cnNlcy13cmFwLXByZWZpeCBvcHRpb24gdG8gdGVzdC9jb25maWd1cmUgKGRpc2N1c3Npb24KKwkgIHdpdGggQ2hhcmxlcyBXaWxzb24pLgorCSsgdXNlIG5jdXJzZXMqLWNvbmZpZyBzY3JpcHRzIGlmIGF2YWlsYWJsZSBmb3IgdGVzdC9jb25maWd1cmUuCisJKyB1cGRhdGUgdGVzdC9hY2xvY2FsLm00IGFuZCB0ZXN0L2NvbmZpZ3VyZQorCT4gcGF0Y2hlcyBieSBDaGFybGVzIFdpbHNvbjoKKwkrIG1vZGlmeSBDRl9XSVRIX0xJQlRPT0wgY29uZmlndXJlIGNoZWNrIHRvIGFsbG93IHVucmVsZWFzZWQgbGlidG9vbAorCSAgdmVyc2lvbiBudW1iZXJzIChlLmcuICB3aGljaCBpbmNsdWRlIGFscGhhYmV0aWMgY2hhcnMsIGFzIHdlbGwgYXMKKwkgIGRpZ2l0cywgYWZ0ZXIgdGhlIGZpbmFsICcuJykuCisJKyBpbXByb3ZlIHVzZSBvZiAtbm8tdW5kZWZpbmVkIG9wdGlvbiBmb3IgbGlidG9vbCBieSBzZXR0aW5nIGFuCisJICBpbnRlcm1lZGlhdGUgdmFyaWFibGUgTFRfVU5ERUYgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIGFuZCB0aGVuCisJICB1c2luZyB0aGF0IGluIHRoZSBsaWJ0b29sIGxpbmstY29tbWFuZHMuCisJKyBmaXggYW4gbWlzc2luZyB1c2Ugb2YgTkNVUlNFU19QVUJMSUNfVkFSKCkgaW4gdGluZm8vTUtjb2Rlcy5hd2sKKwkgIGZyb20gMjAwOTAzMjEgY2hhbmdlcy4KKwkrIGltcHJvdmUgbWstMXN0LmF3ayBzY3JpcHQgYnkgd3JpdGluZyBzZXBhcmF0ZSBjYXNlcyBmb3IgdGhlCisJICBMSUJUT09MX0xJTksgY29tbWFuZCwgZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcnkgKG5jdXJzZXMsIHRpY2xpYiwKKwkgIHRlcm1saWIpIGlzIHRvIGJlIGxpbmtlZC4KKwkrIG1vZGlmeSBjb25maWd1cmUuaW4gdG8gYWxsb3cgYnJva2VuLWxpbmtlciBjb25maWd1cmF0aW9ucywgbm90IGp1c3QKKwkgIGVuYWJsZS1yZWVudHJhbnQsIHRvIHNldCBwdWJsaWMgd3JhcCBwcmVmaXguCisKKzIwMDkwMzIxCisJKyBhZGQgVElDU19MSVNUIGFuZCBTSExJQl9MSVNUIHRvIGFsbG93IGxpYnRvb2wgMi4yLjYgb24gQ3lnd2luIHRvCisJICBidWlsZCB3aXRoIHRpYyBhbmQgdGVybSBsaWJyYXJpZXMgKHBhdGNoIGJ5IENoYXJsZXMgV2lsc29uKS4KKwkrIGFkZCAtbm8tdW5kZWZpbmVkIG9wdGlvbiB0byBsaWJ0b29sIGZvciBDeWd3aW4sIE1pbkdXLCBVL1dpbiBhbmQgQUlYCisJICAocmVwb3J0IGJ5IENoYXJsZXMgV2lsc29uKS4KKwkrIGZpeCBkZWZpbml0aW9uIGZvciBjKysvTWFrZWZpbGUuaW4ncyBTSExJQl9MSVNULCB3aGljaCBkaWQgbm90IGxpc3QKKwkgIHRoZSBmb3JtLCBtZW51IG9yIHBhbmVsIGxpYnJhcmllcyAocGF0Y2ggYnkgQ2hhcmxlcyBXaWxzb24pLgorCSsgYWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXdyYXAtcHJlZml4IHRvIGFsbG93IHNldHRpbmcgdGhlIHByZWZpeAorCSAgZm9yIGZ1bmN0aW9ucyB1c2VkIHRvIHdyYXAgZ2xvYmFsIHZhcmlhYmxlcyB0byBzb21ldGhpbmcgb3RoZXIgdGhhbgorCSAgIl9uY18iIChkaXNjdXNzaW9uIHdpdGggQ2hhcmxlcyBXaWxzb24pLgorCisyMDA5MDMxNAorCSsgbW9kaWZ5IHNjcmlwdHMgdG8gZ2VuZXJhdGUgbmN1cnNlcyotY29uZmlnIGFuZCBwYy1maWxlcyB0byBhZGQKKwkgIGRlcGVuZGVuY3kgZm9yIHRpbmZvIGxpYnJhcnkgKHBhdGNoIGJ5IENoYXJsZXMgV2lsc29uKS4KKwkrIGltcHJvdmUgY29tcGFyaXNvbiBvZiBwcm9ncmFtLW5hbWVzIHdoZW4gY2hlY2tpbmcgZm9yIGxpbmtlZCBmbGF2b3JzCisJICBzdWNoIGFzICJyZXNldCIgYnkgaWdub3JpbmcgdGhlIGV4ZWN1dGFibGUgc3VmZml4IChyZXBvcnRzIGJ5IENoYXJsZXMKKwkgIFdpbHNvbiwgU2FtdWVsIFRoaWJhdWx0IGFuZCBDZWRyaWMgQnJldGF1ZGVhdSBvbiBDeWd3aW4gbWFpbGluZworCSAgbGlzdCkuCisJKyBzdXBwcmVzcyBjb25maWd1cmUgY2hlY2sgZm9yIHN0YXRpYy9keW5hbWljIGxpbmtlciBmbGFncyBmb3IgZ2NjIG9uCisJICBTb2xhcmlzIDEwLCBzaW5jZSBnY2MgaXMgY29uZnVzZWQgYnkgYWJzZW5jZSBvZiBzdGF0aWMgbGliYywgYW5kCisJICBkb2VzIG5vdCBzd2l0Y2ggYmFjayB0byBkeW5hbWljIG1vZGUgYmVmb3JlIGZpbmlzaGluZyB0aGUgbGlicmFyaWVzCisJICAocmVwb3J0cyBieSBKb2VsIEJlcnRyYW5kLCBBbGFuIFBhZSkuCisJKyBtaW5vciBmaXhlcyB0byBJbnRlbCBjb21waWxlciB3YXJuaW5nIGNoZWNrcyBpbiBjb25maWd1cmUgc2NyaXB0LgorCSsgbW9kaWZ5IF9uY19sZWFrc190aW5mbygpIHNvIGxlYWstY2hlY2tpbmcgaW4gdGVzdC9yYWlscm9hZC5jIHdvcmtzLgorCSsgbW9kaWZ5IHNldF9jdXJ0ZXJtKCkgdG8gbWFrZSBicm9rZW4tbGlua2VyIGNvbmZpZ3VyYXRpb24gd29yayB3aXRoCisJICBjaGFuZ2VzIGZyb20gMjAwOTAyMjggKHJlcG9ydCBieSBDaGFybGVzIFdpbHNvbikuCisKKzIwMDkwMjI4CisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisJKyBtb2RpZnkgZGVjbGFyYXRpb24gb2YgY3VyX3Rlcm0gd2hlbiBicm9rZW4tbGlua2VyIGlzIHVzZWQsIGJ1dAorCSAgZW5hYmxlLXJlZW50cmFudCBpcyBub3QsIHRvIG1hdGNoIHByZS01LjcgKHJlcG9ydCBieSBDaGFybGVzIFdpbHNvbikuCisKKzIwMDkwMjIxCisJKyBjb250aW51ZSBpbnRlZ3JhdGluZyAic3AtZnVuY3MiIGJ5IEp1ZXJnZW4gUGZlaWZlciAoaW5jb21wbGV0ZSkuCisKKzIwMDkwMjE0CisJKyBhZGQgY29uZmlndXJlIHNjcmlwdCAtLWVuYWJsZS1zcC1mdW5jcyB0byBlbmFibGUgdGhlIG5ldyBzZXQgb2YKKwkgIGV4dGVuZGVkIGZ1bmN0aW9ucy4KKwkrIHN0YXJ0IGludGVncmF0aW5nIHBhdGNoZXMgYnkgSnVlcmdlbiBQZmVpZmVyOgorCSAgKyBhZGQgZXh0ZW5kZWQgZnVuY3Rpb25zIHdoaWNoIHNwZWNpZnkgdGhlIFNDUkVFTiBwb2ludGVyIGZvciBzZXZlcmFsCisJICAgIGN1cnNlcyBmdW5jdGlvbnMgd2hpY2ggdXNlIHRoZSBnbG9iYWwgU1AgKHRoZXNlIGFyZSBpbmNvbXBsZXRlOworCSAgICBzb21lIGludGVybmFscyB3b3JrIGlzIG5lZWRlZCB0byBjb21wbGV0ZSB0aGVzZSkuCisJICArIGFkZCBzcGVjaWFsIGNhc2VzIHRvIGNvbmZpZ3VyZSBzY3JpcHQgZm9yIE1pbkdXIHBvcnQuCisKKzIwMDkwMjA3CisJKyB1cGRhdGUgc2V2ZXJhbCBjb25maWd1cmUgbWFjcm9zIGZyb20gbHlueCBjaGFuZ2VzCisJICArIGFwcGVuZCAobm90IHByZXBlbmQpIHRvIENGTEFHUy9DUFBGTEFHUworCSAgKyBjaGFuZ2UgdmFyaWFibGUgZnJvbSBQQVRIU0VQIHRvIFBBVEhfU0VQQVJBVE9SCisJKyBpbXByb3ZlIGluc3RhbGwtcnVsZXMgZm9yIHBjLWZpbGVzIChwYXRjaCBieSBNaXJvc2xhdiBMaWNodmFyKS4KKwkgICsgbWFrZSBpdCB3b3JrIHdpdGggJERFU1RESVIKKwkgICsgY3JlYXRlIHRoZSBwa2ctY29uZmlnIGxpYnJhcnkgZGlyZWN0b3J5IGlmIG5lZWRlZC4KKworMjAwOTAxMjQKKwkrIG1vZGlmeSBpbml0X3BhaXIoKSB0byBhbGxvdyBjYWxsZXIgdG8gY3JlYXRlIGV4dHJhIGNvbG9yIHBhaXJzIGJleW9uZAorCSAgdGhlIGNvbG9yX3BhaXJzIGxpbWl0LCB3aGljaCB1c2UgZGVmYXVsdCBjb2xvcnMgKHJlcXVlc3QgYnkgRW1hbnVlbGUKKwkgIEdpYXF1aW50YSkuCisJKyBhZGQgbWlzYy90ZXJtaW5mby50bXAgYW5kIG1pc2MvKi5wYyB0byAic291cmNlcyIgcnVsZS4KKwkrIGZpeCB0eXBvICI9PSIgd2hlcmUgIj0iIGlzIG5lZWRlZCBpbiBuY3Vyc2VzLWNvbmZpZy5pbiBhbmQKKwkgIGdlbi1wa2djb25maWcuaW4gZmlsZXMgKERlYmlhbiAjNTEyMTYxKS4KKworMjAwOTAxMTcKKwkrIGFkZCAtc2hhcmVkIG9wdGlvbiB0byBNS19TSEFSRURfTElCIHdoZW4gLUJzaGFyYWJsZSBpcyB1c2VkLCBmb3IKKwkgICpCU0Qncywgd2l0aG91dCB3aGljaCAibWFpbiIgbWlnaHQgYmUgb25lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSdzCisJICBkZXBlbmRlbmNpZXMgKHJlcG9ydC9hbmFseXNpcyBieSBLZW4gRGlja2V5KS4KKwkrIG1vZGlmeSB3YWRkY2hfbGl0ZXJhbCgpLCB1cGRhdGluZyBsaW5lLXBvaW50ZXIgYWZ0ZXIgYSBtdWx0aWNvbHVtbgorCSAgY2hhcmFjdGVyIGlzIGZvdW5kIHRvIG5vdCBmaXQgb24gdGhlIGN1cnJlbnQgcm93LCBhbmQgd3JhcHBpbmcgaXMKKwkgIGRvbmUuICBTaW5jZSB0aGUgbGluZS1wb2ludGVyIHdhcyBub3QgdXBkYXRlZCwgdGhlIHdyYXBwZWQKKwkgIG11bHRpY29sdW1uIGNoYXJhY3RlciB3YXMgd3JpdHRlbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IHJvdworCSAgKGNmOiAyMDA0MTAyMywgcmVwb3J0ZWQgYnkgIk5pY2siIHJlZ2FyZGluZyBwcm9ibGVtIHdpdGggbmNtcGMKKwkgIGh0dHA6Ly9tdXNpY3BkLm9yZy9tYW50aXMvYnVnX3ZpZXdfcGFnZS5waHA/YnVnX2lkPTE5MzApLgorCisyMDA5MDExMAorCSsgYWRkIHNjcmVlbi5FdGVybSB0ZXJtaW5mbyBlbnRyeSAoR2VuVG9vICMxMjQ4ODcpIC1URAorCSsgbW9kaWZ5IGFkYWN1cnNlcy1jb25maWcgdG8gbG9vayBmb3IgIi5hbGkiIGZpbGVzIGluIHRoZSBhZGFsaWIKKwkgIGRpcmVjdG9yeS4KKwkrIGNvcnJlY3QgaW5zdGFsbCBmb3IgQWRhOTUsIHdoaWNoIG9taXR0ZWQgbGliQWRhQ3Vyc2VzLmEgdXNlZCBpbgorCSAgYWRhY3Vyc2VzLWNvbmZpZworCSsgY2hhbmdlIGluc3RhbGwgZm9yIGFkYWN1cnNlcy1jb25maWcgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGZsYXZvcnMKKwkgIHN1Y2ggYXMgYWRhY3Vyc2Vzdy1jb25maWcsIGZvciBuY3Vyc2VzdyAoR2VuVG9vICMxNjc4NDkpLgorCisyMDA5MDEwNQorCSsgcmVtb3ZlIHVuZGV2ZWxvcGVkIGZlYXR1cmUgaW4gbmN1cnNlcy1jb25maWcuaW4gZm9yIHNldHRpbmcKKwkgIHByZWZpeCB2YXJpYWJsZS4KKwkrIHJlY2VudCBjaGFuZ2UgdG8gbmN1cnNlcy1jb25maWcuaW4gZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUKKwkgIC0tZGlzYWJsZS1vdmVyd3JpdGUgb3B0aW9uLCB3aGljaCBzZXRzICRpbmNsdWRlZGlyIHRvIHRoZQorCSAgc3ViZGlyZWN0b3J5IGFuZCB1c2luZyBqdXN0IHRoYXQgZm9yIGEgLUkgb3B0aW9uIGRvZXMgbm90IHdvcmsgLSBmaXgKKwkgIChyZXBvcnQgYnkgRnJlZGVyaWMgTCBXIE1ldW5pZXIpLgorCisyMDA5MDEwNAorCSsgbW9kaWZ5IGdlbi1wa2djb25maWcuaW4gdG8gZWxpbWluYXRlIGEgZGVwZW5kZW5jeSBvbiBycGF0aCB3aGVuCisJICBkZWNpZGluZyB3aGV0aGVyIHRvIGFkZCAkTElCUyB0byAtLWxpYnMgb3V0cHV0OyB0aGF0IHNob3VsZCBiZSBzaG93bgorCSAgZm9yIHRoZSBuY3Vyc2VzIGFuZCB0aW5mbyBsaWJyYXJpZXMgd2l0aG91dCB0YWtpbmcgcnBhdGggaW50bworCSAgYWNjb3VudC4KKwkrIGZpeCBhbiBvdmVybG9va2VkIGNoYW5nZSBmcm9tICRBUl9PUFRTIHRvICRBUkZMQUdTIGluIG1rLTFzdC5hd2ssCisJICB1c2VkIGluIHN0YXRpYyBsaWJyYXJpZXMgKHJlcG9ydCBieSBNYXJ0eSBKYWNrKS4KKworMjAwOTAxMDMKKwkrIGFkZCBhIGNvbmZpZ3VyZS10aW1lIGNoZWNrIHRvIHBpY2sgYSBzdWl0YWJsZSB2YWx1ZSBmb3IKKwkgIENDX1NIQVJFRF9PUFRTIGZvciBTb2xhcmlzIChyZXBvcnQgYnkgRGFnb2JlcnQgTWljaGVsc2VuKS4KKwkrIGFkZCBjb25maWd1cmUgLS13aXRoLXBrZy1jb25maWcgYW5kIC0tZW5hYmxlLXBjLWZpbGVzIG9wdGlvbnMsIGFsb25nCisJICB3aXRoIG1pc2MvZ2VuLXBrZ2NvbmZpZy5pbiB3aGljaCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSAiLnBjIiBmaWxlcworCSAgZm9yIHBrZy1jb25maWcgKHJlcXVlc3QgYnkgSmFuIEVuZ2VsaGFyZHQpLgorCSsgdXNlICRpbmNsdWRlZGlyIHN5bWJvbCBpbiBtaXNjL25jdXJzZXMtY29uZmlnLmluLCBhZGQgLS1pbmNsdWRlZGlyCisJICBvcHRpb24uCisJKyBjaGFuZ2UgbWFrZWZpbGVzIHRvIHVzZSAkQVJGTEFHUyByYXRoZXIgdGhhbiAkQVJfT1BUUywgcHJvdmlkZSBhCisJICBjb25maWd1cmUgY2hlY2sgdG8gZGV0ZWN0IHdoZXRoZXIgYSAiLSIgaXMgbmVlZGVkIGJlZm9yZSAiYXIiCisJICBvcHRpb25zLgorCSsgdXBkYXRlIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiBmcm9tCisJCWh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2NvbmZpZworCisyMDA4MTIyNworCSsgbW9kaWZ5IG1rLTFzdC5hd2sgdG8gd29yayB3aXRoIGV4dHJhIGNhdGVnb3JpZXMgZm9yIHRpbmZvIGxpYnJhcnkuCisJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBhbGxvdyBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzIHdpdGggZ2NjCisJICBvbiBBSVggNSBvciA2IChhZGFwdGVkIGZyb20gcGF0Y2ggYnkgTGl0YWwgTmF0YW4pLgorCisyMDA4MTIyMAorCSsgbW9kaWZ5IHRvIG9taXQgdGhlIG9wYXF1ZS1mdW5jdGlvbnMgZnJvbSBsaWJfZ2VuLm8gd2hlbgorCSAgLS1kaXNhYmxlLWV4dC1mdW5jcyBpcyB1c2VkLgorCSsgYWRkIHRlc3QvY2xpcF9wcmludHcuYyB0byBpbGx1c3RyYXRlIGhvdyB0byB1c2UgcHJpbnR3IHdpdGhvdXQKKwkgIHdyYXBwaW5nLgorCSsgbW9kaWZ5IG5jdXJzZXMgJ0YnIHRlc3QgdG8gZGVtbyB3Ym9yZGVyX3NldCgpIHdpdGggY29sb3JlZCBsaW5lcy4KKwkrIG1vZGlmeSBuY3Vyc2VzICdmJyB0ZXN0IHRvIGRlbW8gd2JvcmRlcigpIHdpdGggY29sb3JlZCBsaW5lcy4KKworMjAwODEyMTMKKwkrIGFkZCBjaGVjayBmb3IgZmFpbHVyZSB0byBvcGVuIGhhc2hlZC1kYXRhYmFzZSBuZWVkZWQgZm9yIGRiNC42CisJICAoR2VuVG9vICMyNDUzNzApLgorCSsgY29ycmVjdGVkIC0td2l0aG91dC1tYW5wYWdlcyBvcHRpb247IHByZXZpb3VzIGNoYW5nZSBvbmx5IHN1cHByZXNzZWQKKwkgIHRoZSBhdXhpbGlhcnkgcnVsZXMgaW5zdGFsbC5tYW4gYW5kIHVuaW5zdGFsbC5tYW4KKwkrIGFkZCBjYXNlIGZvciBGcmVlTUlOVCB0byBjb25maWd1cmUgbWFjcm8gQ0ZfWE9QRU5fU09VUkNFIChwYXRjaCBmcm9tCisJICBHZW5Ub28gIzI1MDQ1NCkuCisJKyBmaXhlcyBmcm9tIE5ldEJTRCBwb3J0IGF0CisJICBodHRwOi8vY3Zzd2ViLm5ldGJzZC5vcmcvYnNkd2ViLmNnaS9wa2dzcmMvZGV2ZWwvbmN1cnNlcy9wYXRjaGVzCisJICBwYXRjaC1hYyAoYnVpbGQtZml4IGZvciBEcmFnb25GbHkpCisJICBwYXRjaC1hZSAodXNlIElOU1RBTExfU0NSSVBUIGZvciBpbnN0YWxsaW5nIG1pc2MvbmN1cnNlcyotY29uZmlnKS4KKwkrIGltcHJvdmUgY29uZmlndXJlIHNjcmlwdCBtYWNyb3MgQ0ZfSEVBREVSX1BBVEggYW5kIENGX0xJQlJBUllfUEFUSAorCSAgYnkgYWRkaW5nIENGTEFHUywgQ1BQRkxBR1MgYW5kIExERkxBR1MsIExJQlMgdmFsdWVzIHRvIHRoZQorCSAgc2VhcmNoLWxpc3RzLgorCSsgY29ycmVjdCB0aXRsZSBzdHJpbmcgZm9yIGtleWJvdW5kIG1hbnBhZ2UgKHBhdGNoIGJ5IEZyZWRlcmljIEN1bG90LAorCSAgT3BlbkJTRCBkb2N1bWVudGF0aW9uLzYwMTkpLAorCisyMDA4MTIwNgorCSsgbW92ZSBkZWxfY3VydGVybSgpIGNhbGwgZnJvbSBfbmNfZnJlZWFsbCgpIHRvIF9uY19sZWFrc190aW5mbygpIHRvCisJICB3b3JrIGZvciBwcm9ncy9jbGVhciwgcHJvZ3MvdGFicywgZXRjLgorCSsgY29ycmVjdCBidWZmZXItc2l6ZSBhZnRlciBpbnRlcm5hbCByZXNpemluZyBvZiB3aWRlLWNoYXJhY3RlcgorCSAgc2V0X2ZpZWxkX2J1ZmZlcigpLCBicm9rZW4gaW4gMjAwODEwMTggY2hhbmdlcyAocmVwb3J0IGJ5IE1pa2UgR3JhbikuCisJKyBhZGQgIi1pIiBvcHRpb24gdG8gdGVzdC9maWx0ZXIuYyB0byB0ZWxsIGl0IHRvIHVzZSBpbml0c2NyKCkgcmF0aGVyCisJICB0aGFuIG5ld3Rlcm0oKSwgdG8gaW52ZXN0aWdhdGUgcmVwb3J0IG9uIGNvbXAudW5peC5wcm9ncmFtbWVyIHRoYXQKKwkgIG5jdXJzZXMgd291bGQgY2xlYXIgdGhlIHNjcmVlbiBpbiB0aGF0IGNhc2UgKGl0IGRvZXMgbm90IC0gdGhlIGlzc3VlCisJICB3YXMgeHRlcm0ncyBhbHRlcm5hdGUgc2NyZWVuIGZlYXR1cmUpLgorCSsgYWRkIGNoZWNrIGluIG1vdXNlLWRyaXZlciB0byBkaXNhYmxlIGNvbm5lY3Rpb24gaWYgR1BNIHJldHVybnMgYQorCSAgemVybywgaW5kaWNhdGluZyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCAoRGViaWFuICM1MDY3MTcsCisJICBhZGFwdGVkIGZyb20gcGF0Y2ggYnkgU2FtdWVsIFRoaWJhdWx0KS4KKworMjAwODExMjkKKwkrIGltcHJvdmUgYSB3b3JrYXJvdW5kIGluIGFkZGluZyB3aWRlLWNoYXJhY3RlcnMsIHdoZW4gYSBjb250cm9sCisJICBjaGFyYWN0ZXIgaXMgZm91bmQuICBUaGUgbGlicmFyeSAoY2Y6IDIwMDQwMjA3KSB1c2VzIHVuY3RybCgpIHRvCisJICBvYnRhaW4gYSBwcmludGFibGUgdmVyc2lvbiBvZiB0aGUgY29udHJvbCBjaGFyYWN0ZXIsIGJ1dCB3YXMgbm90CisJICBwYXNzaW5nIGNvbG9yIG9yIHZpZGVvIGF0dHJpYnV0ZXMuCisJKyBpbXByb3ZlIHRlc3QvbmN1cnNlcy5jICdhJyB0ZXN0LCB1c2luZyB1bmN0cmwoKSBtb3JlIGNvbnNpc3RlbnRseSB0bworCSAgZGlzcGxheSBtZXRhLWNoYXJhY3RlcnMuCisJKyB0dXJuIG9uIF9YT1BFTl9DVVJTRVMgZGVmaW5pdGlvbiBpbiBjdXJzZXMuaAorCSsgYWRkIGV0ZXJtLWNvbG9yIGVudHJ5IChyZXBvcnQgYnkgVmluY2VudCBMZWZldnJlKSAtVEQKKwkrIGNvcnJlY3QgdXNlIG9mIGtleV9uYW1lKCkgaW4gdGVzdC9uY3Vyc2VzLmMgJ0EnIHRlc3QsIHdoaWNoIG9ubHkKKwkgIGRpc3BsYXlzIHdpZGUtY2hhcmFjdGVycywgbm90IGtleS1jb2RlcyBzaW5jZSAyMDA3MDYxMiAocmVwb3J0IGJ5CisJICBSaWNhcmRvIENhbnR1KS4KKworMjAwODExMjIKKwkrIGNoYW5nZSBfbmNfaGFzX21vdXNlKCkgdG8gaGFzX21vdXNlKCksIHJlZmxlY3QgaXRzIHVzZSBpbiBDKysgYW5kCisJICBBZGE5NSAocGF0Y2ggYnkgSnVlcmdlbiBQZmVpZmVyKS4KKwkrIGRvY3VtZW50IGluIFRPLURPIGFuIGlzc3VlIHdpdGggQ3lnd2luJ3MgcGFja2FnZSBmb3IgR05BVCAocmVwb3J0CisJICBieSBNaWtlIERlbm5pc29uKS4KKwkrIGltcHJvdmUgZXJyb3ItY2hlY2tpbmcgb2YgY29tbWFuZC1saW5lIG9wdGlvbnMgaW4gInRhYnMiIHByb2dyYW0uCisKKzIwMDgxMTE1CisJKyBjaGFuZ2Ugc2V2ZXJhbCB0ZXJtaW5mbyBlbnRyaWVzIHRvIG1ha2UgY29uc2lzdGVudCB1c2Ugb2YgQU5TSQorCSAgY2xlYXItYWxsLXRhYnMgLVRECisJKyBhZGQgInRhYnMiIHByb2dyYW0gKHByb21wdGVkIGJ5IERlYmlhbiAjNTAyMjYwKS4KKwkrIGFkZCBjb25maWd1cmUgLS13aXRob3V0LW1hbnBhZ2VzIG9wdGlvbiAocmVxdWVzdCBieSBNaWtlIEZyeXNpbmdlcikuCisKIDIwMDgxMTAyIDUuNyByZWxlYXNlIGZvciB1cGxvYWQgdG8gZnRwLmdudS5vcmcKIAogMjAwODEwMjUKQEAgLTc3LDcgKzMxNjcsNyBAQAogCSAgb3Zlcmxvb2tlZCB0aWwgbm93LgogCiAyMDA4MTAxMQotCSsgdXBkYXRlIGh0bWwgZG9jdW1lbnRhdGlvbi4KKwkrIHJlZ2VuZXJhdGVkIGh0bWwgZG9jdW1lbnRhdGlvbi4KIAkrIGFkZCAtbSBhbmQgLXMgb3B0aW9ucyB0byB0ZXN0L2tleW5hbWVzLmMgYW5kIHRlc3Qva2V5X25hbWVzLmMgdG8gdGVzdAogCSAgdGhlIG1ldGEoKSBmdW5jdGlvbiB3aXRoIGtleW5hbWUoKSBvciBrZXlfbmFtZSgpLCByZXNwZWN0aXZlbHkuCiAJKyBjb3JyZWN0IHJldHVybiB2YWx1ZSBvZiBrZXlfbmFtZSgpIG9uIGVycm9yOyBpdCBpcyBudWxsLgpAQCAtNDYzLDggKzM1NTMsOCBAQAogCSAgdGhhdCBsaWJyYXJ5LgogCSsgYWRkL21vZGlmeSBudWxsLXBvaW50ZXIgY2hlY2tzIGluIHNldmVyYWwgZnVuY3Rpb25zIGZvciBTUCBhbmQvb3IKIAkgIHRoZSBXSU5ET1cqIHBhcmFtZXRlciAocmVwb3J0IGJ5IFRob3JiZW4gS3J1ZWdlcikuCi0JKyBmaXhlcyBmb3IgZmllbGRfYnVmZmVyKCkgaW4gZm9ybXcgbGlicmFyeSAoc2VlIFJlZGhhdCBCdWd6aWxsYQotCSAgIzMxMDA3MSwgcGF0Y2hlcyBieSBNaXJvc2xhdiBMaWNodmFyKS4KKwkrIGZpeGVzIGZvciBmaWVsZF9idWZmZXIoKSBpbiBmb3JtdyBsaWJyYXJ5IChzZWUgUmVkaGF0ICMzMTAwNzEsCisJICBwYXRjaGVzIGJ5IE1pcm9zbGF2IExpY2h2YXIpLgogCSsgaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBOQ1VSU0VTX0NIQVJfRVEgY29kZSAocGF0Y2ggYnkgTWlyb3NsYXYKIAkgIExpY2h2YXIpLgogCSsgdXBkYXRlL2ltcHJvdmUgbWx0ZXJtIGFuZCByeHZ0IHRlcm1pbmZvIGVudHJpZXMsIGUuZy4sIGZvcgpAQCAtNTc1LDcgKzM2NjUsNyBAQAogCSsgbW9kaWZ5IGNvbmZpZ3VyZSBzY3JpcHQgdG8gcXVpZXQgYysrIGJ1aWxkIHdpdGggbGlidG9vbCB3aGVuIHRoZQogCSAgLS1kaXNhYmxlLWVjaG8gb3B0aW9uIGlzIHVzZWQuCiAJKyBtb2RpZnkgY29uZmlndXJlIHNjcmlwdCB0byBkaXNhYmxlIGFkYTk1IGlmIGxpYnRvb2wgaXMgc2VsZWN0ZWQsCi0JICB3cml0aW5nIGEgd2FybmluZyBtZXNzYWdlIChhZGRyZXNzZXMgRnJlZUJTRCBwb3J0cy8xMTQ0OTMpLgorCSAgd3JpdGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYWRkcmVzc2VzIEZyZWVCU0QgIzExNDQ5MykuCiAJKyB1cGRhdGUgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViCiAKIDIwMDcwNzA3CkBAIC0xMDYwLDggKzQxNTAsNyBAQAogCSsgd29ya2Fyb3VuZCBmb3IgMjAwNTA4MDYgaWZkZWYncyBjaGFuZ2UgdG8gYWxsb3cgdmlzYnVmLmMgdG8gY29tcGlsZQogCSAgd2hlbiB1c2luZyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2Ugb3B0aW9ucy4KIAkrIGltcHJvdmUgdGdldHN0cigpIGJ5IG1ha2luZyB0aGUgcmV0dXJuIHZhbHVlIHBvaW50IGludG8gdGhlIHVzZXIncwotCSAgYnVmZmVyLCBpZiBwcm92aWRlZCAocGF0Y2ggYnkgTWlyb3NsYXYgTGljaHZhciAoc2VlIFJlZGhhdCBCdWd6aWxsYQotCSAgIzIwMjQ4MCkpLgorCSAgYnVmZmVyLCBpZiBwcm92aWRlZCAocGF0Y2ggYnkgTWlyb3NsYXYgTGljaHZhciAoc2VlIFJlZGhhdCAjMjAyNDgwKSkuCiAJKyBjb3JyZWN0IGxpYnJhcmllcyBuZWVkZWQgZm9yIGZvbGRrZXlzIChyZXBvcnQgYnkgU3RhbmlzbGF2IElldmxldikKIAogMjAwNjA4MjYKQEAgLTEwNzQsMTAgKzQxNjMsMTAgQEAKIAkgIHNvdXJjZSBvdXRwdXQgKERlYmlhbiAjMzc4NzgzKS4KIAkrIG1vZGlmeSBjb25maWd1cmUgc2NyaXB0IHRvIGVuc3VyZSB0aGF0IGlmIHRoZSBDIGNvbXBpbGVyIGlzIHVzZWQKIAkgIHJhdGhlciB0aGFuIHRoZSBsb2FkZXIgaW4gbWFraW5nIHNoYXJlZCBsaWJyYXJpZXMsIHRoZSAkKENGTEFHUykKLQkgIHZhcmlhYmxlIGlzIGFsc28gdXNlZCAoUmVkaGF0IEJ1Z3ppbGxhICMxOTkzNjkpLgorCSAgdmFyaWFibGUgaXMgYWxzbyB1c2VkIChSZWRoYXQgIzE5OTM2OSkuCiAJKyBwb3J0IGhhc2hlZC1kYiBjb2RlIHRvIGRiMiBhbmQgZGIzLgogCSsgZml4IGEgYnVnIGluIHRnZXRlbnQoKSBmcm9tIDIwMDYwNjI1IGFuZCAyMDA2MDcxNSBjaGFuZ2VzCi0JICAocGF0Y2gvYW5hbHlzaXMgYnkgTWlyb3NsYXYgTGljaHZhciAoc2VlIFJlZGhhdCBCdWd6aWxsYSAjMjAyNDgwKSkuCisJICAocGF0Y2gvYW5hbHlzaXMgYnkgTWlyb3NsYXYgTGljaHZhciAoc2VlIFJlZGhhdCAjMjAyNDgwKSkuCiAKIDIwMDYwODA1CiAJKyB1cGRhdGVkIHh0ZXJtIGZ1bmN0aW9uLWtleXMgdGVybWluZm8gdG8gbWF0Y2ggeHRlcm0gIzIxNiAtVEQKQEAgLTE4NjksNyArNDk1OCw3IEBACiAJICBvZiBjdXJfdGVybSBpZiB0aGUgc2FtZSBvdXRwdXQgd2FzIHNlbGVjdGVkLiAgVGhpcyBub3cgcmV1c2VzIGl0IG9ubHkKIAkgIHdoZW4gc2V0dXB0ZXJtKCkgaXMgY2FsbGVkIGZyb20gdGdldGVudCgpLCB3aGljaCBoYXMgbm8gbm90aW9uIG9mCiAJICBzZXBhcmF0ZSBTQ1JFRU5zLiAgTm90ZSB0aGF0IHRnZXRlbnQoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBpbml0c2NyKCkKLQkgIG9yIG5ld3Rlcm0oKSB0byB1c2UgdGhpcyBmZWF0dXJlIChSZWRoYXQgQnVnemlsbGEgIzE0MDMyNikuCisJICBvciBuZXd0ZXJtKCkgdG8gdXNlIHRoaXMgZmVhdHVyZSAoUmVkaGF0ICMxNDAzMjYpLgogCSsgYWRkIGEgY2hlY2sgaW4gQ0ZfQlVJTERfQ0MgbWFjcm8gdG8gZW5zdXJlIHRoYXQgZGV2ZWxvcGVyIGhhcyBnaXZlbgogCSAgdGhlIC0td2l0aC1idWlsZC1jYyBvcHRpb24gd2hlbiBjcm9zcy1jb21waWxpbmcgKHJlcG9ydCBieSBBbGV4YW5kcmUKIAkgIENhbXBvKS4KQEAgLTE5NjIsNyArNTA1MSw3IEBACiAJICBlbnRyaWVzLCBlLmcuLCBzbyBpdCBjYW4gYW5hbHl6ZSB0aGUgeHRlcm0tOGJpdCBlbnRyeS4KIAkrIGFkZCBtb3JwaG9zIHRlcm1pbmZvIGVudHJ5LCBpbXByb3ZlIGFtaWdhLThiaXQgZW50cnkgKFBhdmVsIEZlZGluKS4KIAkrIGNvcnJlY3QgdHJhbnNsYXRpb24gb2YgIiUlIiBpbiB0ZXJtaW5mbyBmb3JtYXQgdG8gdGVybWNhcCwgZS5nLiwKLQkgIHVzaW5nICJ0aWMgLUMiIChSZWRoYXQgQnVnemlsbGEgIzEzMDkyMSkuCisJICB1c2luZyAidGljIC1DIiAoUmVkaGF0ICMxMzA5MjEpLgogCSsgbW9kaWZpZWQgY29uZmlndXJlIHNjcmlwdCBDRl9YT1BFTl9TT1VSQ0UgbWFjcm8gdG8gZW5zdXJlIHRoYXQgaWYKIAkgIGl0IGRlZmluZXMgX1BPU0lYX0NfU09VUkNFLCB0aGF0IGl0IGRlZmluZXMgaXQgdG8gYSBzcGVjaWZpYyB2YWx1ZQogCSAgKGNvbXAub3Muc3RyYXR1cyBuZXdzZ3JvdXAgY29tbWVudCkuCkBAIC0xOTczLDkgKzUwNjIsOSBAQAogCSAgSG93ZXZlciB0aGF0IGRpZCBmaW5kIGEgY29kaW5nIGVycm9yIGluIEFzc3VtZV9EZWZhdWx0X0NvbG9ycygpLgogCSsgbW9kaWZ5IHNldmVyYWwgdGVybWluZm8gZW50cmllcyB0byBlbnN1cmUgeHRlcm0gbW91c2UgYW5kIGN1cnNvcgogCSAgdmlzaWJpbGl0eSBhcmUgcmVzZXQgaW4gcnMyIHN0cmluZzogIGh1cmQsIHB1dHR5LCBnbm9tZSwKLQkgIGtvbnNvbGUtYmFzZSwgbWx0ZXJtLCBFdGVybSwgc2NyZWVuIChEZWJpYW4gIzI2NTc4NCwgIzU1NjM3KS4gIFRoZQotCSAgeHRlcm0gZW50cmllcyBhcmUgbGVmdCBhbG9uZSAtIG9sZCBvbmVzIGZvciBjb21wYXRpYmlsaXR5LCBhbmQgdGhlCi0JICBuZXcgb25lcyBkbyBub3QgcmVxdWlyZSB0aGlzIGNoYW5nZS4gLVRECisJICBrb25zb2xlLWJhc2UsIG1sdGVybSwgRXRlcm0sIHNjcmVlbiAoRGViaWFuICMyNjU3ODQsIERlYmlhbiAjNTU2MzcpLgorCSAgVGhlIHh0ZXJtIGVudHJpZXMgYXJlIGxlZnQgYWxvbmUgLSBvbGQgb25lcyBmb3IgY29tcGF0aWJpbGl0eSwgYW5kCisJICB0aGUgbmV3IG9uZXMgZG8gbm90IHJlcXVpcmUgdGhpcyBjaGFuZ2UuIC1URAogCiAyMDA0MDgxNAogCSsgZmFrZSBhIFNJR1dJTkNIIGluIG5ld3Rlcm0oKSB0byBhY2NvbW1vZGF0ZSBidWdneSB0ZXJtaW5hbCBlbXVsYXRvcnMKQEAgLTIwMDYsOCArNTA5NSw4IEBACiAJKyBtb2RpZnkgInRpYyAtY3YiIHRvIGlnbm9yZSBkZWxheXMgd2hlbiBjb21wYXJpbmcgc3RyaW5ncy4gIEFsc28KIAkgIG1vZGlmeSBpdCB0byBpZ25vcmUgYSBjYW5jZWxlZCBzZ3Igc3RyaW5nLCBlLmcuLCBmb3IgdGVybWluYWxzIHdoaWNoCiAJICBjYW5ub3QgcHJvcGVybHkgY29tYmluZSBhdHRyaWJ1dGVzIGluIG9uZSBjb250cm9sIHNlcXVlbmNlLgotCSsgY29ycmVjdGlvbnMgZm9yIGdub21lIGFuZCBrb25zb2xlIGVudHJpZXMgKFJlZGhhdCBCdWd6aWxsYSAjMTIyODE1LAotCSAgcGF0Y2ggYnkgSGFucyBkZSBHb2VkZSkKKwkrIGNvcnJlY3Rpb25zIGZvciBnbm9tZSBhbmQga29uc29sZSBlbnRyaWVzIChSZWRoYXQgIzEyMjgxNSwgcGF0Y2ggYnkKKwkgIEhhbnMgZGUgR29lZGUpCiAJPiB0ZXJtaW5mbyB1cGRhdGVzIC1URAogCSsgbWFrZSBuY3NhLW0gcm1hY3Mvc21hY3MgY29uc2lzdGVudCB3aXRoIHNncgogCSsgYWRkIHNnciwgcmMvc2MgYW5kIGVjaCB0byBzeXNjb25zIGVudHJpZXMKQEAgLTIwMjAsNyArNTEwOSw3IEBACiAJPiB0ZXJtaW5mbyB1cGRhdGVzIC1URAogCSsgYWRkIHh0ZXJtLXBjLWZrZXlzCiAJKyByZXZpZXcvdXBkYXRlIGdub21lIGFuZCBnbm9tZS1yaDkwIGVudHJpZXMgKHByb21wdGVkIGJ5IFJlZGhhdAotCSAgQnVnemlsbGEgIzEyMjgxNSkuCisJICAjMTIyODE1KS4KIAkrIHJldmlldy91cGRhdGUga29uc29sZSBlbnRyaWVzCiAJKyBhZGQgc2dyLCBjb3JyZWN0IHNncjAgZm9yIGt0ZXJtIGFuZCBtbHRlcm0KIAkrIGNvcnJlY3QgdHNsIHN0cmluZyBpbiBrdGVybQpAQCAtMjIwNCw3ICs1MjkzLDcgQEAKIAkgIChyZXF1ZXN0IGJ5IE1pa2UgQXVidXJ5KS4KIAkrIGFkZCBzeW1ib2wgdG8gY3Vyc2VzLmggd2hpY2ggY2FuIGJlIHVzZWQgdG8gc3VwcHJlc3MgaW5jbHVkZSBvZgogCSAgc3RkYm9vbC5oLCBlLmcuLAotCSAgCSNkZWZpbmUgTkNVUlNFU19FTkFCTEVfU1REQk9PTF9IIDAKKwkJI2RlZmluZSBOQ1VSU0VTX0VOQUJMRV9TVERCT09MX0ggMAogCQkjaW5jbHVkZSA8Y3Vyc2VzLmg+CiAJICAoZGlzY3Vzc2lvbiBvbiBYRnJlZTg2IG1haWxpbmcgbGlzdCkuCiAKQEAgLTI0MzMsNyArNTUyMiw3IEBACiAJICBnZW5lcmF0ZWQgd2hlbiBjcm9zcy1jb21waWxpbmcgZm9yIERKR1BQLgogCSsgbW9kaWZ5IGluZm9jbXAgdG8gb21pdCBjaGVjayBmb3IgJFRFUk0gZm9yIG9wZXJhdGlvbnMgdGhhdCBkbyBub3QKIAkgIHJlcXVpcmUgaXQsIGUuZy4sICJpbmZvY21wIC1lIiB1c2VkIHRvIGJ1aWxkIGZhbGxiYWNrIGxpc3QgKHJlcG9ydCBieQotCSAgS29ibGluZ2VyIEVnbW9udCkuCisJICBFZ21vbnQgS29ibGluZ2VyKS4KIAogMjAwMzEwMDQKIAkrIGFkZCB0ZXJtaW5mbyBlbnRyaWVzIGZvciBESkdQUC4KQEAgLTI3ODQsNyArNTg3Myw3IEBACiAKIDIwMDMwMjA4CiAJKyBhZGQgY2hlY2tpbmcgaW4gdGljIGZvciBpbmNvbXBsZXRlIGxpbmUtZHJhd2luZyBjaGFyYWN0ZXIgbWFwcGluZy4KLQkrIHVwZGF0ZSBjb25maWd1cmUgc2NyaXB0IHRvIHJlZmxlY3QgZml4IGZvciBBQ19QUk9HX0dDQ19UUkFESVRJT05BTCwKKwkrIHVwZGF0ZWQgY29uZmlndXJlIHNjcmlwdCB0byByZWZsZWN0IGZpeCBmb3IgQUNfUFJPR19HQ0NfVFJBRElUSU9OQUwsCiAJICB3aGljaCBpcyBicm9rZW4gaW4gYXV0b2NvbmYgMi41eCBmb3IgTWFjIE9TIFggMTAuMi4zIChyZXBvcnQgYnkKIAkgIEdlcmJlbiBXaWVyZGEgPFNoZXJsb2NrQHJuYS5ubD4pLgogCSsgbWFrZSByZXR1cm4gdmFsdWUgZnJvbSBfbmNfcHJpbnRmX3N0cmluZygpIGNvbnNpc3RlbnQuICBCZWZvcmUsCkBAIC0zMTM0LDcgKzYyMjMsNyBAQAogCSsgYWRkIGEgY2hlY2sgaW4ga2dldGNoKCkgZm9yIGNvb2tlZCBjaGFyYWN0ZXJzIGluIHRoZSBmaWZvIHRvIGF2b2lkCiAJICBjYWxsaW5nIGZpZm9fcHVzaCgpIHdoZW4gYSBLRVlfUkVTSVpFIGlzIGF2YWlsYWJsZSAocmVwb3J0L2FuYWx5c2lzCiAJICBieSBTYW0gVmFyc2hhdmNoaWsgPG1yc2FtQGNvdXJpZXItbXRhLmNvbT4pLgotCSsgZml4IGFuIG92ZXJsb29rZWQgY2FzZSBmb3IgYnVnemlsbGEgIzY4MTk5IChQaGlsaXBwZSBCbGFpbikuCisJKyBmaXggYW4gb3Zlcmxvb2tlZCBjYXNlIGZvciBSZWRoYXQgIzY4MTk5IChQaGlsaXBwZSBCbGFpbikuCiAJKyBlbnN1cmUgY2xlYXJlcnIoKSBpcyBjYWxsZWQgYmVmb3JlIHVzaW5nIGZlcnJvcigpIGUuZy4sIGluCiAJICBsaWJfc2NyZWVuLmMgKHJlcG9ydCBieSBQaGlsaXBwZSBCbGFpbikuCiAKQEAgLTMxNDIsNyArNjIzMSw3IEBACiAJKyBtb2RpZnkgbGliX3NjcmVlbi5jIGFuZCBsaWJfbmV3d2luLmMgdG8gbWFpbnRhaW4gdGhlIFNDUkVFTi1zcGVjaWZpYwogCSAgcG9pbnRlcnMgZm9yIGN1cnNjci9zdGRzY3IvbmV3c2NyIHdoZW4gc2NyX3NhdmUoKSBhbmQgc2NyX3Jlc3RvcmUoKQogCSAgbW9kaWZ5IHRoZSBnbG9iYWwgY3Vyc2NyL3N0ZHNjci9uZXdzY3IgdmFyaWFibGVzLiAgRml4ZXMgUmVkaGF0Ci0JICBidWd6aWxsYSAjNjgxOTkgZGF0ZWQgMjAwMi0wNy0wNy4KKwkgICM2ODE5OS4KIAkrIGFkZCBjaGVja3MgZm9yIG51bGwgcG9pbnRlciBpbiBjYWxscyB0byB0cGFybSgpIGFuZCB0Z290bygpIGJhc2VkIG9uCiAJICBGcmVlQlNEIGJ1ZyByZXBvcnQuICBJZiBuY3Vyc2VzIHdlcmUgYnVpbHQgd2l0aCB0ZXJtY2FwIHN1cHBvcnQsIGFuZAogCSAgdGhlIGZpcnN0IGNhbGwgdG8gdGdvdG8oKSB3ZXJlIGEgemVyby1sZW5ndGggc3RyaW5nLCB0aGUgcmVzdWx0IHdvdWxkCkBAIC0zMTc1LDcgKzYyNjQsNyBAQAogCSAgT2xhZiBCdWRkZW5oYWdlbiA8b2xhZkJ1ZGRlbmhhZ2VuQHdlYi5kZT4pLgogCSsgbW9kaWZpZWQgd3Jlc2l6ZSgpIHRvIGVuc3VyZSB0aGF0IGEgZmFpbGVkIHJlYWxsb2Mgd2lsbCBub3QgY29ycnVwdAogCSAgdGhlIHdpbmRvdyBzdHJ1Y3R1cmUsIGFuZCB0byBtYWtlIHN1YndpbmRvd3MgZml0IHdpdGhpbiB0aGUgcmVzaXplZAotCSAgd2luZG93IChjb21wbGV0ZXMgRGViaWFuICM4NzY3OCwgIzEwMTY5OSkKKwkgIHdpbmRvdyAoY29tcGxldGVzIERlYmlhbiAjODc2NzgsIERlYmlhbiAjMTAxNjk5KQogCiAyMDAyMDgwMwogCSsgZml4IGFuIG9mZi1ieS1vbmUgaW4gbGliX3BhZC5jIGNoZWNrIGZvciBsaW1pdHMgb2YgcGFkIChwYXRjaCBieQpAQCAtMzUwMyw3ICs2NTkyLDcgQEAKIAkrIHJlc3RvcmUgc3BlY2lhbCBjYXNlIGZyb20gMjAwMTA5MjIgY2hhbmdlcyB0byBvbWl0IFNBX1JFU1RBUlQgd2hlbgogCSAgc2V0dGluZyB1cCBTSUdXSU5DSCBoYW5kbGVyLCB3aGljaCBpcyBuZWVkZWQgdG8gYWxsb3cgd2dldGNoKCkgdG8gYmUKIAkgIGludGVycnVwdGVkIGJ5IHRoYXQgc2lnbmFsLgotCSsgdXBkYXRlIGNvbmZpZ3VyZSBtYWNybyBDRl9XSVRIX1BBVEhMSVNULCB0byBvbWl0IHNvbWUgZG91YmxlIHF1b3RlcworCSsgdXBkYXRlZCBjb25maWd1cmUgbWFjcm8gQ0ZfV0lUSF9QQVRITElTVCwgdG8gb21pdCBzb21lIGRvdWJsZSBxdW90ZXMKIAkgIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZiAyLjUyCiAJKyByZXZlcnQgY29uZmlndXJlIHNjcmlwdCB0byBhdXRvY29uZiAyLjEzIHBhdGNoZWQgd2l0aAogCQlhdXRvY29uZi0yLjEzLTE5OTkwMTE3LnBhdGNoLmd6IChvciBsYXRlcikKQEAgLTM4NzAsOSArNjk1OSw5IEBACiAJICB3aGljaCBtYXkgYmUgaW4gbGlidXRmOC4KIAkrIHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IHRleHQgZnJvbSBjdXJzX2V4dGVuZC4zeCBhbmQKIAkgIGRlZmF1bHRfY29sb3JzLjN4IHdoaWNoIGNhdXNlZCBtYW4tZGIgdG8gbWFrZSBpbmNvcnJlY3Qgc3ltYm9saWMKLQkgIGxpbmtzIChEZWJpYW4gYnVnIHJlcG9ydCAjOTk1NTApLgorCSAgbGlua3MgKERlYmlhbiAjOTk1NTApLgogCSsgYWRkIGNvbmZpZ3VyZSBjaGVjayBpZiBjYXN0IGZvciBfSU9fdmFfbGlzdCBpcyBuZWVkZWQgdG8gY29tcGlsZQotCSAgQysrIHZzY2FuIGNvZGUgKERlYmlhbiBidWcgcmVwb3J0ICM5Nzk0NSkuCisJICBDKysgdnNjYW4gY29kZSAoRGViaWFuICM5Nzk0NSkuCiAJPiBzZXZlcmFsIHBhdGNoZXMgZnJvbSBTdmVuIFZlcmRvb2xhZWdlOgogCSsgY29ycmVjdCBjb2RlIHRoYXQgdXNlZCBub24tc3RhbmRhcmQgYXV0by1pbml0aWFsaXphdGlvbiBvZiBhIHN0cnVjdCwKIAkgIHdoaWNoIGdjYyBhbGxvd3MgKHJlcG9ydCBieSBMYXJyeSBWaXJkZW4pLgpAQCAtNDAwNyw3ICs3MDk2LDcgQEAKIAkrIGFkZCBzb21lIGV4YW1wbGVzIG9mIGN1c3RvbWl6aW5nIHNjcmVlbidzIHRlcm1pbmZvOgogCSAgc2NyZWVuLnh0ZXJtLXhmcmVlODYsIHNjcmVlbi54dGVybS1yNiwgc2NyZWVuLnRlcmF0ZXJtIC1URAogCSsgbW9kaWZ5IHNjcmVlbidzIHRlcm1pbmZvIGVudHJ5IHRvIG1hdGNoIHRoZSBraG9tZS9rZW5kIGluIHNjcmVlbgotCSAgMy4wOS4wOCAoRGViaWFuIGJ1ZyByZXBvcnQgIzkyMjE1KS4KKwkgIDMuMDkuMDggKERlYmlhbiAjOTIyMTUpLgogCSsgY29ycmVjdCBhIG1lbW9yeSBsZWFrIGluIGZvcm1zIGxpYnJhcnkgKHJlcG9ydCBieSBTdGVmYW4gVm9ndG5lcgogCSAgPHN0ZWZhbkB2b2d0bmVyLmRlPikgKHBhdGNoIGJ5IEp1ZXJnZW4gUGZlaWZlcikuCiAKQEAgLTQwMjEsMTIgKzcxMTAsMTIgQEAKIAkrIGFkZCAuY2MuaWkgcnVsZSB0byBjKysgbWFrZWZpbGUsIHRvIGdldCBwcmVwcm9jZXNzb3Igb3V0cHV0IGZvcgogCSAgZGVidWdnaW5nLgogCSsgY29ycmVjdCBjb25maWd1cmUgc2NyaXB0IGhhbmRsaW5nIG9mIEBrZXl3b3JkQCBzdWJzdGl0dXRpb25zIHdoZW4gdGhlCi0JICAtLXdpdGgtbWFucGFnZS1yZW5hbWVzIG9wdGlvbiBpcyBnaXZlbiAoY2Y6ICAyMDAwMDcxNSwgZml4ZXMgRGViaWFuCi0JICBidWcgIzg5OTM5KS4KKwkgIC0td2l0aC1tYW5wYWdlLXJlbmFtZXMgb3B0aW9uIGlzIGdpdmVuIChjZjogMjAwMDA3MTUsIGZpeGVzIERlYmlhbgorCSAgIzg5OTM5KS4KIAkrIHJlcG9ydCBzdGFjayB1bmRlcmZsb3cvb3ZlcmZsb3cgaW4gdHBhcm0oKSB3aGVuIHRpYyAtY3Ygb3B0aW9uIGlzCiAJICBnaXZlbi4KIAkrIHJlbW92ZSBzcHVyaW91cyAiJXwiIG9wZXJhdG9yIGZyb20geHRlcm0teGZyZWU4NiB0ZXJtaW5mbyBlbnRyeSwKLQkgIChyZXBvcnRlZCBieSBBZGFtIENvc3RlbGxvIDxhbWNAY3MuYmVya2VsZXkuZWR1PiwgRGViaWFuIGJ1ZyAjODkyMjIpLgorCSAgKHJlcG9ydGVkIGJ5IEFkYW0gQ29zdGVsbG8gPGFtY0Bjcy5iZXJrZWxleS5lZHU+LCBEZWJpYW4gIzg5MjIyKS4KIAogMjAwMTAzMTAKIAkrIGNsZWFudXAgb2YgbmV3ZGVtby5jLCBmaXhpbmcgc29tZSBhbWJpZ3VvdXMgZXhwcmVzc2lvbnMgbm90ZWQgYnkgZ2NjCkBAIC00NzMwLDcgKzc4MTksNyBAQAogCSsgY29ycmVjdCBzcGVsbGluZyBlcnJvciBpbiB0ZXJtaW5mbyBlbnRyeSBuYW1lOiAgYnEzMDAtcnYgd2FzIGdpdmVuIGFzCiAJICBiZzMwMC1ydiBpbiBlc3IncyB2ZXJzaW9uLgogCSsgbW9kaWZ5IHJlZHJhd3dpbigpIG1hY3JvIHNvIGl0cyBwYXJhbWV0ZXIgaXMgZnVsbHkgcGFyZW50aGVzaXplZAotCSAgKGZpeGVzIERlYmlhbiBidWcgcmVwb3J0ICM2MTA4OCkuCisJICAoZml4ZXMgRGViaWFuICM2MTA4OCkuCiAJKyBjb3JyZWN0IGZvcm1hdHRpbmcgZXJyb3IgaW4gZHVtcF9lbnRyeSgpIHdoaWNoIHNldCBpbmNvcnJlY3QgY29sdW1uCiAJICB2YWx1ZSB3aGVuIG5vIG5ld2xpbmUgdHJpbW1pbmcgd2FzIG5lZWRlZCBhdCB0aGUgZW5kIG9mIGFuIGVudHJ5LAogCSAgYmVmb3JlIGFwcGVuZGluZyAidXNlPSIgY2xhdXNlcyAoY2Y6IDk2MDQwNikuCkBAIC01NDYwLDcgKzg1NDksNyBAQAogCSAgaGFuZGxpbmcgaW4gbHlueCAocmVwb3J0ZWQgYnkgS2ltIERlVmF1Z2huKS4KIAogOTkwMzA2CXByZS1yZWxlYXNlCi0JKyBhZGQgLUcgb3B0aW9uIHRvIHRpYyBhbmQgaW5mb2NtcCwgdG8gcmV2ZXJzZSB0aGUgLWcgb3B0aW9uLgorCSsgYWRkIC1HIG9wdGlvbiB0byB0aWMgYW5kIGluZm9jbXAsIHRvIHJldmVyc2UgdGhlICItZyIgb3B0aW9uLgogCSsgcmVjb2RlIGZ1bmN0aW9ucyBpbiBuYW1lX21hdGNoLmMgdG8gYXZvaWQgdXNlIG9mIHN0cm5jcHksIHdoaWNoCiAJICBjYXVzZWQgYSA0LWZvbGQgc2xvd2Rvd24gaW4gdGljIChjZjogOTgwNTMwKS4KIAkrIGNvcnJlY3QgYSBmZXcgd2FybmluZ3MgYWJvdXQgc2lnbi1leHRlbnNpb24gaW4gcmVjZW50IGNoYW5nZXMuCkBAIC01ODMxLDcgKzg5MjAsNyBAQAogCSAgc2luY2UgdGhhdCBpcyBhIGxpdHRsZSBtb3JlIGVmZmljaWVudC4KIAkrIG1pbm9yIGNvcnJlY3Rpb24gdG8gaW5mb2NtcCB0byBhdm9pZCBkaXNwbGF5aW5nICJkaWZmZXJlbmNlIiBiZXR3ZWVuCiAJICB0d28gY2FwYWJpbGl0aWVzIHRoYXQgYXJlIHJlbmRlcmVkIGluIGVxdWl2YWxlbnQgZm9ybXMuCi0JKyBhZGQgLWcgb3B0aW9uIHRvIHRpYy9pbmZvY21wIHRvIGZvcmNlIGNoYXJhY3RlciBjb25zdGFudHMgdG8gYmUKKwkrIGFkZCAiLWciIG9wdGlvbiB0byB0aWMvaW5mb2NtcCB0byBmb3JjZSBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGJlCiAJICBkaXNwbGF5ZWQgaW4gcXVvdGVkIGZvcm0uICBPdGhlcndpc2UgdGhlaXIgZGVjaW1hbCB2YWx1ZXMgYXJlIHNob3duLgogCSsgbW9kaWZ5IHNldHVwdGVybSBzbyB0aGF0IGNhbmNlbGxlZCBzdHJpbmdzIGFyZSB0cmVhdGVkIHRoZSBzYW1lIGFzCiAJICBhYnNlbnQgc3RyaW5ncywgY2FuY2VsbGVkIGFuZCBhYnNlbnQgYm9vbGVhbnMgZmFsc2UgKGRvZXMgbm90IGFmZmVjdApAQCAtNjU3MCw3ICs5NjU5LDcgQEAKIAkrIHJlbW92ZSBfbmNfZXJyX2Fib3J0KCkgY2FsbHMgd2hlbiB3cml0ZV9lbnRyeS5jIGZpbmRzIGEgZGlyZWN0b3J5IGJ1dAogCSAgY2Fubm90IHdyaXRlIHRvIGl0LCBlLmcuLCB3aGVuIHRyYW5zbGF0aW5nIHBhcnQvYWxsIG9mIC9ldGMvdGVybWNhcAogCSAgKHJlcG9ydGVkIGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBhcnRodXIucmhlaW4tbmVja2FyLmRlPikuCi0JICAodGhpcyBkYXRlcyBiYWNrIHRvIDk1MTEwMiwgaW4gMS45LjdhKS4KKwkgICh0aGlzIGRhdGVzIGJhY2sgdG8gOTUxMTAyIGluIDEuOS43YSkuCiAJKyBtaW5vciBpZmRlZiBmaXhlcyB0byBjb21waWxlIHdpdGggYXRhYyBhbmQgZ2xpYmMgMi4wLjVjCiAJKyBhZGQgY2hlY2sgZm9yIC1sZ2VuIHdoZW4gY29uZmlndXJpbmcgcmVnZXhwci5oCiAJKyBtb2RpZnkgU29sYXJpcyBzaGFyZWQtbGlicmFyeSBvcHRpb24gIi1kIHkiIHRvICItZHkiIHRvIHdvcmthcm91bmQKQEAgLTcwMzksNyArMTAxMjgsNyBAQAogCSsgbW9kaWZ5IHRzZXQgdG8gbG9vayBpbiAvZXRjL3R0eXMgb3IgL2V0Yy90dHl0eXBlIGlmIHRoZSBjb25maWd1cmF0aW9uCiAJICBkb2VzIG5vdCBoYXZlIGdldHR0eW5hbSgpLgogCSsgZXh0ZW5kIGJhdWRyYXRlIHRhYmxlIGluIHRzZXQuYyB0byBtYXRjaCBiYXVkcmF0ZSgpIGZ1bmN0aW9uLgotCSsgYWRkIHRhYmxlIGVudHJpZXMgZm9yIDIzMDQwMCBhbmQgNDYwODAwIGJkIHRvIGJhdWRyYXRlKCkgZnVuY3Rpb24uCisJKyBhZGQgdGFibGUgZW50cmllcyBmb3IgQjIzMDQwMCBhbmQgQjQ2MDgwMCB0byBiYXVkcmF0ZSgpIGZ1bmN0aW9uLgogCSsgaW1wcm92ZSBicmVha291dCBsb2dpYyBieSBhbGxvd2luZyBpdCBiZWZvcmUgdGhlIGZpcnN0IGxpbmUgdXBkYXRlZCwKIAkgIHdoaWNoIGlzIHdoYXQgU1ZyNCBjdXJzZXMgZG9lcyAocGF0Y2ggYnkgQWxleGFuZGVyIFYuIEx1a3lhbm92KS4KIAkrIGNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2YgdmNvc3QgaW4gcmVsYXRpdmVfbW92ZSgpLCBmb3IgY3Vyc29yLWRvd24KQEAgLTc5MDksMTUgKzEwOTk4LDE4IEBACiAJKyBjb3JyZWN0aW9uIHRvICMzMTcuCiAJPiBwYXRjaCAzMTcgKEVTUik6CiAJKyByZS1hZGQgX25jX2hhc2hfbWFwCi0JKyBtb2RpZnkgRW1pdFJhbmdlIHRvIG1haW50YWluIHBvc2l0aW9uIGFzIHBlciBvcmlnaW5hbCBkZXNpZ24uCi0JKyBhZGQgaGFzaHRlc3QuYywgcHJvZ3JhbSB0byB0aW1lIHRoZSBoYXNobWFwIG9wdGltaXphdGlvbi4KKwkrIG1vZGlmeSBFbWl0UmFuZ2UgdG8gbWFpbnRhaW4gcG9zaXRpb24gYXMgcGVyIG9yaWdpbmFsIGRlc2lnbgorCSAgKHBhdGNoIGJ5IEEuIEx1a3lhbm92KS4KKwkrIG1vZGlmeSB0ZXN0L25jdXJzZXMuYyBhbmQgdHB1dHMsIGV0Yy4sIHRvIGFsbG93IHRyYWNlIGNvdW50aW5nCisJICBvdXRwdXQgY2hhcmFjdGVycy4KKwkrIGFkZCBoYXNodGVzdC5jIHByb2dyYW0gdG8gdGltZSB0aGUgaGFzaG1hcCBvcHRpbWl6YXRpb24uCiAJPiBwYXRjaCAzMTYgKEVTUik6CiAJKyBhZGQgbG9naWMgdG8gZGVhbCB3aXRoIG1hZ2ljLWNvb2tpZSAoaG93IHdhcyB0aGlzIHRlc3RlZD8pCiAJICAobGliX2RvdXBkYXRlLmMpLgogCSsgYWRkIG5jdXJzZXMuYyBkcml2ZXIgZm9yIG1hZ2ljLWNvb2tpZSwgc29tZSBmaXhlcyB0byBuY3Vyc2VzLmMKIAk+IHBhdGNoIDMxNSAoRVNSKToKLQkrIG1lcmdlZCBBbGV4YW5kZXIgViBMdWt5YW5vdidzIHBhdGNoIHRvIHVzZSBlY2ggYW5kIHJlcCAtIHVudGVzdGVkCi0JICAobGliX2RvdXBkYXRlLmMpLgorCSsgbWVyZ2UgY2hhbmdlcyB0byBsaWJfZG91cGRhdGUuYyB0byB1c2UgZWNoIGFuZCByZXAgLSB1bnRlc3RlZAorCSAgKHBhdGNoIGJ5IEFsZXhhbmRlciBWIEx1a3lhbm92KS4KIAkrIG1vZGlmaWVkIGhhbmRsaW5nIG9mIGludGVycnVwdGVkIHN5c3RlbSBjYWxscyAtIHVudGVzdGVkCiAJICAobGliX2dldGNoLmMsIGxpYl90d2FpdC5jKS4KIAkrIG5ldyBmdW5jdGlvbiBfbmNfbXZjdXJfcmVzdW1lKCkKQEAgLTc5ODksMTIgKzExMDgxLDEyIEBACiAJKyBjb3JyZWN0ZWQgdHlwbyBpbiBkdHRlcm0gZGVzY3JpcHRpb24uCiAJPiBwYXRjaCAzMTMgKEVTUik6CiAJKyBhZGQgZHR0ZXJtIGRlc2NyaXB0aW9uCi0JKyBjbGFyaWZ5IG5jdXJzZXMgJ2knIHRlc3QgKGRyb3AgdnNjYW5mIHN1YnRlc3QpCisJKyBjbGFyaWZ5IG5jdXJzZXMgJ2knIHRlc3QgKGRyb3AgbXZ3c2Nhbncgc3VidGVzdCkKIAogOTYwODEwCS0gc25hcHNob3QKIAkrIGNvcnJlY3QgbmwoKS9ub25sKCkgdG8gd29yayBhcyBwZXIgU1ZyNCAmIFhTSS4KIAkrIG1pbm9yIGZpeGVzIHRvIG5jdXJzZXMuYyAodXNlICdub3JhdygpJywgbXZzY2FudyByZXR1cm4tY29kZSkKLQkrIHJlZmluZSBjb25maWd1cmUtdGVzdCBmb3IgLWcgb3B0aW9uIChUaW0gTW9vbmV5KS4KKwkrIHJlZmluZSBjb25maWd1cmUtdGVzdCBmb3IgIi1nIiBvcHRpb24gKFRpbSBNb29uZXkpLgogCSsgY29ycmVjdCBpbnRlcmFjdGlvbiBiZXR3ZWVuIE9fQkxBTksgYW5kIE5FV19MSU5FIHJlcXVlc3QgaW4gZm9ybQogCSAgbGlicmFyeSAoSnVlcmdlbiBQZmVpZmVyKQogCkBAIC04MDAzLDcgKzExMDk1LDggQEAKIAk+IHBhdGNoIDMxMiAoRVNSKToKIAkgIGNvcnJlY3QgdGVybWluZm8uc3JjIGNvcnJ1cHRlZCBieSAjMzEwCiAJPiBwYXRjaCAzMTEgKEVTUik6Ci0JKyBmaXggaWRsb2soKSBhbmQgaWRjb2soKSBhbmQgdGhlIGRlZmF1bHQgb2YgdGhlIGlkbG9rIHN3aXRjaC4KKwkrIGZpeCBpZGxvaygpIGFuZCBpZGNvaygpIGFuZCB0aGUgZGVmYXVsdCBvZiB0aGUgaWRsb2sgc3dpdGNoIChyZXBvcnQKKwkgIGJ5IFZpbGxlIFN1bGtvKS4KIAogOTYwODAzCS0gc25hcHNob3QKIAkrIGNvcnJlY3RlZCB0cGFybSB0byBoYW5kbGUgY2FwYWJpbGl0eSBzdHJpbmdzIHdpdGhvdXQgZXhwbGljaXQgcG9wCkBAIC04MDEzLDcgKzExMTA2LDcgQEAKIAk+IHBhdGNoIDMxMCAoRVNSKToKIAkrIGRvY3VtZW50YXRpb24gYW5kIHByb3RvdHlwaW5nIGVycm9ycyBmb3IgaGFzX2NvbG9yLCBpbW1lZG9rIGFuZCBpZGNvawogCSAgKHJlcG9ydGVkIGJ5IFdpbGxpYW0gUCBTZXR6ZXIgPHdzZXR6ZXJAcGFtcy5uY3N1LmVkdT4pCi0JKyB1cGRhdGVkIHFueCB0ZXJtaW5mbyBlbnRyeSAoYnkgTWljaGFlbCBIdW50ZXIpCisJKyB1cGRhdGVkIHFueCB0ZXJtaW5mbyBlbnRyeSAocGF0Y2ggYnkgTWljaGFlbCBIdW50ZXIpCiAKIDk2MDczMAogCSsgZWxpbWluYXRlIHF1b3RlZCBpbmNsdWRlcyBpbiBuY3Vyc2VzIHN1YmRpcmVjdG9yeSwgZW5zdXJlIGNvbmZpZy5oCkBAIC04MDI1LDcgKzExMTE4LDcgQEAKIAkrIGNhbGwgY2JyZWFrKCkgaW4gaW5pdHNjcigpLCBhcyBwZXIgWFNJICYgU1ZyNC4KIAkrIHR1cm4gb2ZmIGhhcmR3YXJlIGVjaG8gaW4gaW5pdHNjcigpIGFzIHBlciBYU0kgJiBTVnI0CiAJPiBwYXRjaCAzMDkgKEVTUik6Ci0JKyB0ZXJtaW5mbyBjaGFuZ2VzICg5LjMuMTApLCBmcm9tIEJSTAorCSsgdGVybWluZm8gY2hhbmdlcyAoOS4zLjkpLCBmcm9tIEJSTAogCSsgYWRkIG1vcmUgY2hlY2tzIHRvIHRlcm1pbmZvIHBhcnNlci4KIAkrIGFkZCBtb3JlIHN5bWJvbHMgdG8gaW5mb2NtcC4KIApAQCAtODA0NCw2ICsxMTEzNyw3IEBACiAJPiBwYXRjaCAzMDggKEVTUik6CiAJKyB0ZXJtaW5mbyBjaGFuZ2VzICg5LjMuOCkKIAkrIG1vZGlmaWVkIGxvZ2ljIG9mIGVycm9yLXJlcG9ydGluZyBpbiB0ZXJtaW5mbyBwYXJzZXIKKwkrIGZpeCBvcHRpb24tcHJvY2Vzc2luZyBidWcgaW4gdG9lLgogCiA5NjA3MTMJLSBzbmFwc2hvdAogCSsgYWx3YXlzIGNoZWNrIGZvciA8c3lzL2JzZHR5cGVzLmg+IHNpbmNlIElTQyBuZWVkcyBpdCB0byBkZWNsYXJlCkBAIC04MDUyLDkgKzExMTQ2LDE5IEBACiAJICBieSBKdWVyZ2VuIFBmZWlmZXIsIE1pa2UgTG9uZykKIAkrIGFkZCBMT0NBTF9MREZMQUdTMiBzeW1ib2wgKEp1ZXJnZW4gUGZlaWZlcikKIAkrIGNvcnJlY3RlZCBwcm90b3R5cGUgZm9yIGRlbGF5X291dHB1dCgpIC0tIGJ1bXAgQUJJIHRvIDMuMgotCSsgdGVybWluZm8gcGF0Y2hlcyAjMzA2LzMwNyAoRVNSKS4KKwkrIHBhdGNoIDMwNyAoRVNSKToKKwkrIGVuYWJsZSBtb3JlIHRyYW5zbGF0aW9ucyBvZiBub25zdGFuZGFyZCBjYXBzLCBhbmQgZG9jdW1lbnQgdGhlbS4KKwkrIG1pc2MvdGVybWluZm8uc3JjIHVwZGF0ZSB0byA5LjEzLjgKKwkrIHBhdGNoIDMwNiAoRVNSKToKIAkrIG1vdmVkIGxvZ2ljIHRoYXQgZmlsdGVycyBvdXQgcm11bCBhbmQgcm1zbyBmcm9tIHNldHVwdGVybSB0byBuZXd0ZXJtCiAJICB3aGVyZSBpdCBpcyBsZXNzIGxpa2VseSB0byBpbnRlcmZlcmUgd2l0aCB0ZXJtY2FwIGFwcGxpY2F0aW9ucy4KKwkrIGNvc21ldGljIGZpeGVzIHRvIHRlc3QvbmN1cnNlcy5jCisJKyBtb2RpZnkgb3BlbigpIGNhbGwgaW4gbmN1cnNlcy9yZWFkX2VudHJ5LmMgdG8gdXNlIE9fUkRPTkxZIHN5bWJvbAorCSAgcmF0aGVyIHRoYW4gY29uc3RhbnQgKHJlcG9ydCBieSBtaWIpLgorCSsgbWlzYy90ZXJtaW5mby5zcmMgc2dyMCBhbmQgYWNzYyBjaGFuZ2VzIChyZXBvcnQgYnkgUGhpbGlwcGUgRGUKKwkgIE11eXRlcikuCisJKyBtb2RpZnkgbmN1cnNlcy9jb21wX3BhcnNlLmMgc28gdGhhdCBlbnRyaWVzIGNvbnRhaW5pbmcgYSAiKyIgY2FuCisJICBoYXZlIG1pc3Npbmcgcm1jdXAgdnMgc21jdXAuCiAKIDk2MDcwNwogCSsgcm9sbGJhY2sgRVNSJ3MgIzMwNSBjaGFuZ2UgdG8gdGVybWluZm8uc3JjIChpdCBicmVha3MgZXhpc3RpbmcKQEAgLTgwNjksNyArMTExNzMsNiBAQAogCSsgbWFrZSBsaWJfdmlkYXR0ci5jIG1vcmUgcmVhZGFibGUgdXNpbmcgbWFjcm9zLgogCSsgZmlsdGVyIG91dCBybXVsLCBybXNvIHRoYXQgY29uZmxpY3Qgd2l0aCBzZ3IwIHdoZW4gcmVhZGluZyB0ZXJtaW5hbAogCSAgZGVzY3JpcHRpb25zLgotCSsgYWRkZWQgc2FuaXR5LWNoZWNraW5nIG9mIHZhcmlvdXMgcGFpcmVkIHN0cmluZyBhdHRyaWJ1dGVzIChFU1IpLgogCSsgd29yayBhcm91bmQgYXV0b2NvbmYgYnVnLCBmb3JjZSAkSU5TVEFMTCB0byBhYnNvbHV0ZSBwYXRoCiAJICAocmVwb3J0ZWQgYnkgWmV5ZCkuCiAJKyBtb2RpZnkgbWFuLXBhZ2UgaW5zdGFsbCBmb3IgQlNESSB0byBpbnN0YWxsIHByZWZvcm1hdHRlZCAuMCBmaWxlcwpAQCAtODA4Miw2ICsxMTE4NSwxMiBAQAogCSsgZGlzYWJsZSBzY3JvbGxvayBkdXJpbmcgdGhlIG5jdXJzZXMgJ3AnIHRlc3Q7IGlmIGl0IGlzIGVuYWJsZWQgdGhlCiAJICBzdGRzY3Igd2lsbCBzY3JvbGwgd2hlbiBwdXR0aW5nIHRoZSBib3gtY29ybmVycyBpbiB0aGUgbG93ZXItcmlnaHQKIAkgIG9mIHRoZSBzY3JlZW4uCisJPiBwYXRjaCAzMDUgKEVTUik6CisJKyBhZGRlZCBzYW5pdHktY2hlY2tpbmcgb2YgdmFyaW91cyBwYWlyZWQgc3RyaW5nIGF0dHJpYnV0ZXMuCisJKyBtaXNjL3Rlcm1pbmZvLnNyYyB1cGRhdGUgdG8gOS4xMy43IChyZXBvcnQgYnkgQS4gTHVreWFub3YpLgorCSsgbW9kaWZ5IG1hbi9NYWtlZmlsZS5pbiB0byBtYWtlIHRlcm1pbmZvLjUgZHVyaW5nIG5vcm1hbCBidWlsZC4KKwk+IHBhdGNoIDMwNCAoRVNSKToKKwkrIGNvcnJlY3RlZCBhbGxvY2F0aW9uLWxlbmd0aCBmb3IgJEhPTUUvLnRlcm1pbmZvIHBhdGguCiAKIDk2MDYyOQktIHNuYXBzaG90CiAJKyBjaGVjayByZXR1cm4gY29kZSBvZiBfbmNfbXZjdXJfc2Nyb2xsbigpIGluIF9uY19zY3JvbGxfb3B0aW1pemUoKSBmb3IKQEAgLTgxNjQsNiArMTEyNzMsNyBAQAogCSsgYmV0dGVyIGZpeCBmb3IgbnZpIHJlZnJlc2gtYnVnIChSaWNrIE1hcnNoYWxsKQogCSsgZml4IGZvciBidWcgaW4gaGFuZGxpbmcgb2YgaW50ZXJydXB0ZWQga2V5c3Ryb2tlIHdhaXRzLAogCSAgKFdlcm5lciBGbGVjaykuCisJKyBtaXNjL25jdXJzZXMtaW50cm8uaHRtbCBzeW50YXggZml4IChLYWppeWFtYSBUYW1pdG8pLgogCiA5NjA2MDEJLSBzbmFwc2hvdAogCSsgYXV0by1jb25maWd1cmUgbWFuLXBhZ2UgY29tcHJlc3Npb24tZm9ybWF0IGFuZCByZW5hbWVzIGZvciBEZWJpYW4uCkBAIC04MTc4LDcgKzExMjg4LDcgQEAKIAkrIGVuaGFuY2VtZW50IHRvIHRoZSBjb250cm9sIG92ZXIgdGhlIG5ldyBQQy1zdHlsZSBzb2Z0IGtleSBmb3JtYXQuCiAJICBhbGxvdyBjYWxsZXIgbm93IHRvIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBvbmUgd2FudHMgdG8gaGF2ZQogCSAgdGhlIGluZGV4LWxpbmU7IHNlZSBjdXJzX3Nsay4zeCBmb3IgZG9jdW1lbnRhdGlvbiAoSnVlcmdlbiBQZmVpZmVyKS4KLQkrIHR5cG9zLCBkb24ndCB1c2UgaW5saW5lIHdpdGggLWcgKFBoaWxpcHBlIERlIE11eXRlcikKKwkrIHR5cG9zLCBkb24ndCB1c2UgaW5saW5lIHdpdGggIi1nIiAoUGhpbGlwcGUgRGUgTXV5dGVyKQogCSsgZml4ZXMgZm9yIG1lbnVzICYgd2F0dHItLCBzbGstZnVuY3Rpb25zIChKdWVyZ2VuIFBmZWlmZXIpCiAKIDk2MDUyNgktIHNuYXBzaG90CkBAIC04MTkzLDYgKzExMzAzLDkgQEAKIAkrIGluY2x1ZGUgc3lzL3R5cGVzLmggaW4gY2FzZSBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIHNpemVfdC4KIAkrIGZpeGVzIGZvciBtYWtlZmlsZSAoVGltIE1vb25leSkKIAkrIGZpeGVzIGZvciBtZW51cyAmIGZvcm1zIChKdWVyZ2VuIFBmZWlmZXIpCisJPiBwYXRjaCAzMDIgKEVTUik6CisJKyBpbXByb3ZlIGhhc2ggZnVuY3Rpb24gKHN1Z2dlc3RlZCBieSBBbGV4YW5kZXIgViBMdWt5YW5vdikuCisJKyA5LjEzLjQgdXBkYXRlIGZvciB0ZXJtaW5mby5zcmMKIAogOTYwNTE4CS0gc25hcHNob3QKIAkrIHJldmlzZWQgbmN1cnNlcy5jIHBhbm5lciB0ZXN0LCBsZXQgcGFkIGFidXQgYWxsIDQgc2lkZXMgb2Ygc2NyZWVuLgpAQCAtODIwNSw2ICsxMTMxOCw4IEBACiAJICBjb25mdXNpb24sIGFuZCBtYWRlIHRoaXMgY2hlY2sgZm9yIHRoZSAvdXNyL2xpYi90ZXJtaW5mbyBwcmUtZXhpc3RpbmcKIAkgIGRpcmVjdG9yeS4KIAk+IHBhdGNoZXMgMjk5LTMwMSAoRVNSKToKKwkrIGh0bWwgZml4ZXMgKFBoaWxsaXBwZSBkZSBNdXl0ZXIpLgorCSsgZml4IHR5cG8gaW4gbmN1cnNlcy1pbnRyby5odG1sIChyZXBvcnQgYnkgRmFicml6aW8gUG9sYWNjbykuCiAJKyBhZGRlZCBoYXNobWFwLmMKIAkrIG1vZHMgdG8gdHJhY2luZywgZXNwZWNpYWxseSBmb3IgQUNTIGNoYXJzLgogCSsgY29ycmVjdGVkIG9mZi1ieS1vbmUgaW4gSURDdHJhbnNmb3JtLgpAQCAtODIyNCwxMyArMTEzMzksMjEgQEAKIAk+IHBhdGNoZXMgMjk3LCAyOTggKEVTUik6CiAJKyBpbXBsZW1lbnQgVEVSTUlORk9fRElSUywgYW5kIC1vIG9wdGlvbiBvZiB0aWMKIAkrIGFkZGVkIFRSQUNFX0lFVkVOVAotCSsgcmVtb3ZlZCBib29sZWFuIHZlcnNpb24gb2YgJ2dldG0nCi0JKyBhZGRlZCBsaWJfcHJpbnQuYyAoZm9yIFJpY2sgTWFyc2hhbGwpCi0JKyBhZGRlZCBoYXNfa2V5KCkKKwkrIGZpeCBSRVFfVE9HR0xFX0lURU0gaW4gbWVudS9tZW51X2RyaXZlci5jOyBpdCBjb3VsZCBzZWxlY3QgYnV0IG5vdAorCSAgZGVzZWxlY3QuCisJKyBhZGRlZCBsaWJfcHJpbnQuYyAocmVxdWVzdCBieSBSaWNrIE1hcnNoYWxsKS4KKwkrIGFkZGVkIGhhc19rZXkoKSAocmVxdWVzdCBieSBKdWVyZ2VuIFBmZWlmZXIpLgorCSsgZG8gbm90IGlzc3VlIGNscnRvZW9sIG9yIGNscnRvYm90IGlmIHRoZSByZWxldmFudCBwb3J0aW9uIG9mIHRoZSBsaW5lCisJICBpcyBhbHJlYWR5IGJsYW5rIChhbmFseXNpcyBieSBLZWl0aCBCb3N0aWMpLgorCSsgYWRkIHBhcmVudGhlc2VzIGZvciBwYXJhbWV0ZXJzIG9mIENPTE9SX1BBSVIgYW5kIFBBSVJfTlVNQkVSIG1hY3JvcworCSAgKGFuYWx5c2lzIGJ5IEp1cmdlbiBFaWR0KS4KKwkrIHVwZGF0ZSBzY3JlZW4ncyBub3Rpb24gb2YgY3Vyc29yIHBvc2l0aW9uIGluIGVuZHdpbigpIChhbmFseXNpcyBieQorCSAgQWxleGFuZGVyIEx1a3lhbm92KS4KIAkrIGFkZGVkICd0JyB0byBuY3Vyc2VzLmMgdGVzdC4KIAkrIG1vdmVkIGRlbGF5X291dHB1dCgpIHRvIGxpYl90cHV0cy5jCiAJKyByZW1vdmVkIHRwYXJhbSgpICh3YXMgYWRkZWQgaW4gMS45LjksIGJ1dCBjb25mbGljdHMgd2l0aCBlbWFjcyBhbmQKIAkgIGlzIG5vdCBwYXJ0IG9mIFgvT3BlbiBDdXJzZXMpLgorCSsgcmVtb3ZlZCBib29sZWFuIHZlcnNpb24gb2YgJ2dldG0nLgogCSsgbWlzYyBjdXJzb3IgJiBvcHRpbWl6YXRpb24gZml4ZXMuCiAKIDk2MDUwNAktIHNuYXBzaG90CkBAIC04MjU2LDExICsxMTM3OSwyMCBAQAogCSsgbWFrZSBUSU9DR1dJTlNaIGNvbmZpZ3VyZSB0ZXN0IGxlc3Mgc3RyaW5nZW50LCBpbiBjYXNlIHVzZXIKIAkgIGNvbmZpZ3VyZXMgdmlhIHRlcm1pbmFsIHRoYXQgY2Fubm90IGdldCBzY3JlZW4gc2l6ZS4KIAk+IHBhdGNoZXMgMjk1LCAyOTYgKEVTUik6Ci0JKyBuZXcgIi1lIiBvcHRpb24gb2YgdGljLgotCSsgZml4IGZvciAiaW5mb2NtcCAtZSIuCi0JKyByZXN0b3JlIHdvcmtpbmctZGlyZWN0b3J5IGluIHJlYWRfdGVybWNhcC5jCiAJKyBzcGxpdCBsaWJfa2VybmVsLmMsIGxpYl9zZXR1cC5jIGFuZCBuYW1lcy5jIGluIG9yZGVyIHRvIHJlZHVjZQogCSAgb3ZlcmhlYWQgZm9yIHByb2dyYW1zIHRoYXQgdXNlIG9ubHkgdGVybWNhcCBmZWF0dXJlcy4KKwkrIG5ldyAiLWUiIGFuZCAiLWgiIG9wdGlvbnMgb2YgdGljIChyZXF1ZXN0IGJ5IFRvbnkgTnVnZW50KS4KKwkrIGZpeCBidWcgaW4gbWFuZGF0b3J5LWRlbGF5IGxvZ2ljIGluIGxpYl90cHV0cy5jIChyZXBvcnQgYnkgU3ZlbgorCSAgVmVyZG9vbGFlZ2UpLgorCSsgZml4IGZvciAiaW5mb2NtcCAtZSIgdG8gZW1pdCBjb3JyZWN0IGluaXRpYWxpemVycyAocmVwb3J0ZWQgYnkgTWFudWFsCisJICBKIE5vdm9hIElJSSkuCisJKyByZXN0b3JlIHdvcmtpbmctZGlyZWN0b3J5IGluIHJlYWRfdGVybWNhcC5jIChyZXBvcnQgYnkgS2F5dmFuCisJICBTeWx2YW4pLgorCSsgdXNlICItaCIgb3B0aW9uIG9uIFNvbGFyaXMgd2hlbiBnZW5lcmF0aW5nIHNoYXJlZCBsaWJyYXJpZXMgb24KKwkgIFNvbGFyaXMgMi41IHRvIHJlY29yZCB0aGUgbGlicmFyeSBuYW1lIGluIHRoZSBmaWxlLCBmb3IgYXNzaXN0aW5nCisJICB0aGUgbG9hZGVyIChwYXRjaCBieSBTY290dCBLcmFtZXIpLgorCSsgdW5kbyBwYXRjaCAjMjk0IGNoYW5nZXMgdG8gZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMgKHJlcXVlc3QgYnkKKwkgIEp1ZXJnZW4gUGZlaWZlcikuCiAKIDk2MDQxOAktIHNuYXBzaG90CiAJKyB1c2UgYXV0b2NvbmYgMi45CkBAIC04MjY4LDEwICsxMTQwMCwyMiBAQAogCSAgZGVmaW5pdGlvbnMgdmlhIDx0ZXJtaW9zLmg+LCBtb2RpZmllZCBtYWNyb3MgaW4gbGliX3Jhdy5jIHRvIGF2b2lkCiAJICBLJlItc3R5bGUgc3Vic3RpdHV0aW9uKQogCT4gcGF0Y2hlcyAyOTMsIDI5NCAoRVNSKToKLQkrIG1vZHMgdG8gd2dldGNoKCkgaW4gY29va2VkIG1vZGUKLQkrIGNvcnJlY3RlZCBhc2t1c2VyKCkgbG9naWMgaW4gdHNldAotCSsgY29ycmVjdCBpbnRlcmFjdGlvbiBvZiBlbmR3aW4oKSB3aXRoIG1vdXNlIHByb2Nlc3NpbmcKKwkrIHJld3JpdGUgd3N5bmN1cCgpLCB3c3luY2Rvd24oKSwgYXMgd2VsbCBhcyBzbWFsbCBmaXhlcyB0byBmb3JtIGFuZAorCSAgbWVudSBsaWJyYXJpZXMgdG8gZml4IGVjaG8tYnJlYWthZ2UgaW50cm9kdWNlZCBieSAxLjguOSwgMS45LjllCisJICBjaGFuZ2VzIChwYXRjaGVzIGJ5IEp1ZXJnZW4gUGZlaWZlcikuCisJKyBmaXggY29tcGlsZSB1bmRlciBRTlggNC4yIGJ5IGRlZmluaW5nIE9OTENSIGluIGxpYl9yYXcuYyB3aGVuCisJICBfX1FOWF9fIGlzIGRlZmluZWQgKHBhdGNoIGJ5IE1pY2hhZWwgSHVudGVyKS4KKwkrIG1vZGlmeSBzZXR1cHRlcm0oKSB0byBtYXRjaCBkb2N1bWVudGF0aW9uIGZvciBpdHMgcmV0dXJuIHZhbHVlLCBmaXgKKwkgIG5ld3Rlcm0gdG8gd29yayB3aXRoIHRoaXMgY2hhbmdlIChyZXBvcnQgYnkgRW1tZXQgTGF6aWNoKS4KKwkrIGFkZCBjaGVja3MgaW4gZ2V0Y2goKSBmb3IgZXJyb3IsIHJldHVybiBFUlIgYXMgYXBwcm9wcmlhdGUgKHJlcG9ydCBieQorCSAgRW1tZXQgTGF6aWNoKS4KKwkrIG1vZHMgdG8gd2dldGNoKCkgaW4gY29va2VkIG1vZGUgKHJlcG9ydCBieSBQZXRlIFNlZWJhY2gpLgorCSsgY29ycmVjdGVkIGFza3VzZXIoKSBsb2dpYyBpbiB0c2V0IChwYXRjaCBieSBSZW1jbyBUcmVmZmtvcm4pLgorCSsgY29ycmVjdCBpbnRlcmFjdGlvbiBvZiBlbmR3aW4oKSB3aXRoIG1vdXNlIHByb2Nlc3NpbmcgKHJlcG9ydCBieQorCSAgTWljaGFlbCBFbGtpbnMpLgogCSsgYWRkZWQgdHJhY2Ugc3VwcG9ydCBmb3IgVFRZIGZsYWdzCisJKyB1cGRhdGUgdGVybWluZm8uc3JjIHRvIDkuMTMuMQorCSsgRnJlZUJTRCBjb25zb2xlIGVudHJpZXMgKHBhdGNoIGJ5IEFuZHJldyBDaGVybm92KS4KIAogOTYwNDA2CiAJKyBmaXhlcyBmb3IgTmVYVCwgSVNDIGFuZCBIUFVYIGF1dG8tY29uZmlndXJlCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNTZiYzM4NS4uYzUwOTM1MiAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw1ICsxLDUgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAgLS0KQEAgLTI1LDcgKzI1LDcgQEAKIC0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgLS0KIC0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tICRJZDogUkVBRE1FLHYgMS4yMyAyMDA2LzA0LzIyIDIyOjE5OjM3IHRvbSBFeHAgJAorLS0gJElkOiBSRUFETUUsdiAxLjI1IDIwMTIvMDgvMTEgMjA6MTE6MjYgdG9tIEV4cCAkCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAJCVJFQURNRSBmaWxlIGZvciB0aGUgbmN1cnNlcyBwYWNrYWdlCiAKQEAgLTc4LDYgKzc4LDEwIEBACiBsaWJyYXJ5IGludGVyZmFjZXMgYXJlIG5vdCBiaW5hcnktY29tcGF0aWJsZSB3aXRoIHRoZSBub24td2lkZS1jaGFyYWN0ZXIKIHZlcnNpb24uCiAKK0lmIHlvdSBjb25maWd1cmUgdXNpbmcgdGhlIC0tZW5hYmxlLXJlZW50cmFudCBvcHRpb24sIGEgInQiIGlzIGFwcGVuZGVkIHRvIHRoZQorbGlicmFyeSBuYW1lcyAoZS5nLiwgbGlibmN1cnNlc3QuYSkgYW5kIHRoZSByZXN1bHRpbmcgbGlicmFyaWVzIGhhdmUgYQorZGlmZmVyZW50IGJpbmFyeSBpbnRlcmZhY2Ugd2hpY2ggbWFrZXMgdGhlIG5jdXJzZXMgaW50ZXJmYWNlIG1vcmUgIm9wYXF1ZSIuCisKIFRoZSBuY3Vyc2VzIGxpYnJhcmllcyBpbXBsZW1lbnQgdGhlIGN1cnNlcyBBUEkuICBUaGUgcGFuZWwsIG1lbnUgYW5kIGZvcm1zCiBsaWJyYXJpZXMgaW1wbGVtZW50IGNsb25lcyBvZiB0aGUgU1ZyNCBwYW5lbCwgbWVudSBhbmQgZm9ybXMgQVBJcy4gIFRoZSBzb3VyY2UKIGNvZGUgZm9yIHRoZXNlIGxpdmVzIGluIHRoZSBgbmN1cnNlcycsIGBwYW5lbCcsIGBtZW51JywgYW5kIGBmb3JtJyBkaXJlY3RvcmllcwpAQCAtMTIyLDggKzEyNiw5IEBACiAJdGljICAgICAgICAgICAgIC0tIHRlcm1pbmZvIHNvdXJjZSB0byBiaW5hcnkgY29tcGlsZXIKIAlpbmZvY21wICAgICAgICAgLS0gdGVybWluZm8gYmluYXJ5IHRvIHNvdXJjZSBkZWNvbXBpbGVyL2NvbXBhcmF0b3IKIAljbGVhciAgICAgICAgICAgLS0gZW1pdHMgY2xlYXItc2NyZWVuIGZvciBjdXJyZW50IHRlcm1pbmFsCisJdGFicyAgICAgICAgICAgIC0tIHNldCB0YWJzIG9uIGEgdGVybWluYWwKIAl0cHV0ICAgICAgICAgICAgLS0gc2hlbGwtc2NyaXB0IGFjY2VzcyB0byB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMuCi0JdG9lCQktLSB0YWJsZSBvZiBlbnRyaWVzIHV0aWxpdHkKKwl0b2UgICAgICAgICAgICAgLS0gdGFibGUgb2YgZW50cmllcyB1dGlsaXR5CiAJdHNldCAgICAgICAgICAgIC0tIHRlcm1pbmFsLWluaXRpYWxpemF0aW9uIHV0aWxpdHkKIAogVGhlIGZpcnN0IHR3byAodGljIGFuZCBpbmZvY21wKSBhcmUgdXNlZCBmb3IgbWFuaXB1bGF0aW5nIHRlcm1pbmZvCkBAIC0xNTMsOCArMTU4LDEwIEBACiAJY29uZmlndXJhdGlvbiBzY3JpcHRzLCBwb3J0aW5nLCBtb2RzIHRvIGFkaGVyZSB0byBYU0kgQ3Vyc2VzIGluIHRoZQogCWFyZWFzIG9mIGJhY2tncm91bmQgY29sb3IsIHRlcm1pbmFsIG1vZGVzLiAgQWxzbyBtZW1vcnkgbGVhayB0ZXN0aW5nLAogCXRoZSB3cmVzaXplLCBkZWZhdWx0IGNvbG9ycyBhbmQga2V5IGRlZmluaXRpb24gZXh0ZW5zaW9ucyBhbmQgbnVtZXJvdXMKLQlidWcgZml4ZXMgKG1vcmUgdGhhbiBoYWxmIG9mIHRob3NlIGVudW1lcmF0ZWQgaW4gTkVXUyBiZWdpbm5pbmcgd2l0aAotCXRoZSBpbnRlcm5hbCByZWxlYXNlIDEuOC45KS4KKwlidWcgZml4ZXMgLS0gbW9yZSB0aGFuIGhhbGYgb2YgdGhvc2UgZW51bWVyYXRlZCBpbiBORVdTIGJlZ2lubmluZyB3aXRoCisJdGhlIGludGVybmFsIHJlbGVhc2UgMS44LjksIHNlZQorCisJCWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9wZXJzb25hbC9jaGFuZ2Vsb2dzLmh0bWwKIAogRmxvcmlhbiBMYSBSb2NoZSAob2ZmaWNpYWwgbWFpbnRhaW5lciBmb3IgRlNGJ3MgbmN1cnNlcyA0LjIpCiAJQmVnaW5uaW5nIHdpdGggcmVsZWFzZSA0LjIsIG5jdXJzZXMgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlULXN0eWxlCmRpZmYgLS1naXQgYS9SRUFETUUuTWluR1cgYi9SRUFETUUuTWluR1cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkNzg5NwotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5NaW5HVwpAQCAtMCwwICsxLDEzOCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAtLQorLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICAtLQorLS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICAtLQorLS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICAtLQorLS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyAtLQorLS0gb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkICAtLQorLS0gdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICAtLQorLS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICAtLQorLS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICAtLQorLS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiAtLQorLS0gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICAgICAtLQorLS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICAtLQorLS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSAtLQorLS0gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAtLQorLS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICAtLQorLS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAtLQorLS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gJElkOiBSRUFETUUuTWluR1csdiAxLjkgMjAxMi8wOS8yMiAxNzo0NjowNCB0b20gRXhwICQKKy0tIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgd29yayBpbiBwcm9ncmVzcywgYnV0IGl0J3MgaW4gYW4gc3RhdGUgd2hlcmUgb25lIGNhbiBzZWUgaXQKK3dvcmtzIGF0IGxlYXN0IG9uIHRoZSBXaW5kb3dzIENvbnNvbGUuCisKK1lvdSBzaG91bGQgaW5zdGFsbCB0aGUgTVNZUyBwYWNrYWdlLCBzbyB0aGF0IHlvdSd2ZSBhIHNoZWxsIGVudmlyb25tZW50IHRoYXQKK2FsbG93cyB5b3UgdG8gcnVuIHRoZSBzY3JpcHRzLCBlc3BlY2lhbGx5IGNvbmZpZ3VyZSBldGMuICBZb3UgY2FuIGdldCB0aGF0Citmcm9tIGh0dHA6Ly93d3cubWluZ3cub3JnCisKK1RvIGJ1aWxkIG5jdXJzZXMgZm9yIG5hdGl2ZSBXaW5kb3dzLCB5b3UgbmVlZCB0aGUgTWluR1cgdG9vbGNoYWluLiAgVGhlCitvcmlnaW5hbCBNaW5HVyB0b29sY2hhaW4gZnJvbSB0aGUgYWJvdmUgc2l0ZSBpcyBvbmx5IGZvciAzMi1CaXQgV2luZG93cy4gIEFzCitXaW5kb3dzIFNlcnZlciAtIGFuZCBhbHNvIHJlZ3VsYXIgd29ya3N0YXRpb25zIC0gYXJlIG1vdmluZyB0byA2NC1CaXQsIGl0CitzZWVtcyB0byBiZSByZWFzb25hYmxlIHRvIGhhdmUgYSB0b29sY2hhaW4gdGhhdCBzdXBwb3J0cyBib3RoIGFyY2hpdGVjdHVyZXMuCitJIHJlY29tbWVuZCB0byB1c2UgdGhlIFRETSBnY2MgdG9vbGNoYWluIHdoaWNoIHlvdSBjYW4gZmluZCBhdAoraHR0cDovL3RkbS1nY2MudGRyYWdvbi5uZXQvZG93bmxvYWQuICBHbyB0byB0aGUgZG93bmxvYWQgc2VjdGlvbiBhbmQgc2VsZWN0Cit0aGUgYnVuZGxlIGluc3RhbGxlciBmb3IgdGRtNjQgKE1pbkdXLXc2NCkuICBUaGlzIGluc3RhbGxzIGEgbXVsdGlsaWIgdmVyc2lvbgorb2YgdGhlIGdjYyB0b29sY2hhaW4gdGhhdCBjYW4gY29tcGlsZSBmb3IgbmF0aXZlIDMyLSBhbmQgNjQtQml0IFdpbmRvd3MKK3ZlcnNpb25zLiAgSXQgYWxzbyBjb21lcyB3aXRoIGEgd29ya2luZyBwdGhyZWFkIGltcGxlbWVudGF0aW9uLgorCitUaGUgbGF0ZXN0IGNvbmZpZyBhbmQgYnVpbGQgc2NyaXB0cyB3ZSB1c2UgZm9yIE1pbkdXIGhhdmUgb25seSBiZWVuIHRlc3RlZAorZm9yIHRoZSBnY2MtNC42LjEgY29tcGlsZXIgdG9vbGNoYWluIChvciBiZXR0ZXIpLgorCitVc2luZyBNaW5HVyBpcyBhIHByYWdtYXRpYyBkZWNpc2lvbiwgaXQncyB0aGUgZWFzaWVzdCB3YXkgdG8gcG9ydCB0aGlzCitoZWF2aWx5IFVOSVggYmFzZWQgc291cmNlYmFzZSB0byBuYXRpdmUgV2luZG93cy4gVGhlIGdvYWwgaXMgb2YgY291cnNlCit0byBwcm92aWRlIHRoZSBpbmNsdWRlcywgbGlicmFyaWVzIGFuZCBETExzIHRvIGJlIHVzZWQgd2l0aCB0aGUgbW9yZQorY29tbW9uIHRyYWRpdGlvbmFsIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBvbiBXaW5kb3dzLCBtYWlubHkgd2l0aAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uCisKK1RoZSBURVJNIGVudmlyb25tZW50IHZhcmlhYmxlIG11c3QgYmUgc2V0IHNwZWNpYWxseSB0byBhY3RpdmUgdGhlIFdpbmRvd3MKK2NvbnNvbGUtZHJpdmVyLiAgVGhlIGRyaXZlciBjaGVja3MgaWYgVEVSTSBpcyBzZXQgdG8gIiN3aW4zMmNvbiIgKGV4cGxpY2l0Cit1c2UpIG9yIGlmIFRFUk0gaXMgdW5zZXQgb3IgZW1wdHkgKGltcGxpY2l0KS4KKworUGxlYXNlIGFsc28gbWFrZSBzdXJlIHRoYXQgTVNZUyBsaW5rcyB0byB0aGUgY29ycmVjdCBkaXJlY3RvcnkgY29udGFpbmluZworeW91ciBNaW5HVyB0b29sY2hhaW4uIEZvciBURE0gdGhpcyBpcyB1c3VhbGx5IEM6XE1pbkdXNjQuIEluIHlvdXIgV2luZG93cworQ01ELkVYRSBjb21tYW5kIHNoZWxsIGdvIHRvIHRoZSBNU1lTIHJvb3QgZGlyZWN0b3J5IChtb3N0IHByb2JhYmx5CitDOlxNU1lTIG9yIEM6XE1TWVNcMS4wKSBhbmQgdmVyaWZ5LCB0aGF0IHRoZXJlIGlzIGEganVuY3Rpb24gcG9pbnQgbWluZ3cKK3RoYXQgcG9pbnRzIHRvIHRoZSBNaW5HVyB0b29sY2hhaW4gZGlyZWN0b3J5LiBJZiBub3QsIGRlbGV0ZSB0aGUgbWluZ3cKK2RpcmVjdG9yeSBhbmQgdXNlIHRoZSBta2xpbmsgY29tbWFuZCAob3IgdGhlIGxpbmtkLmV4ZSB1dGlsaXR5IG9uIG9sZGVyCitXaW5kb3dzKSB0byBjcmVhdGUgdGhlIGp1bmN0aW9uIHBvaW50LgorCitUaGlzIGNvZGUgcmVxdWlyZXMgV2luZG93c05UIDUuMSBvciBiZXR0ZXIsIHdoaWNoIG1lYW5zIG9uIHRoZSBjbGllbnQKK1dpbmRvd3MgWFAgb3IgYmV0dGVyLCBvbiB0aGUgc2VydmVyIFdpbmRvd3MgU2VydmVyIDIwMDMgb3IgYmV0dGVyLgorCitJIHJlY29tbWVuZCB1c2luZyBsaWJ0b29sIHRvIGJ1aWxkIG5jdXJzZXMgb24gTWluR1csIGJlY2F1c2UgbGlidG9vbAora25vd3MgZXhhY3RseSBob3cgdG8gYnVpbGQgZGxsJ3Mgb24gV2luZG93cyBmb3IgdXNlIHdpdGggTWluR1cuCisKK1RvIGJ1aWxkIGEgbW9kZXJuIGJ1dCBzdGlsbCBzbWFsbCBmb290cHJpbnQgbmN1cnNlcyB0aGF0IHByb3ZpZGVzCitob29rcyBmb3IgaW50ZXJvcCwgSSByZWNvbW1lbmQgdXNpbmcgdGhlc2Ugb3B0aW9uczoKKworCSAgLS13aXRoLWxpYnRvb2wKKwkgIC0tZGlzYWJsZS1ob21lLXRlcm1pbmZvCisJICAtLWVuYWJsZS1kYXRhYmFzZQorCSAgLS1kaXNhYmxlLXRlcm1jYXAKKwkgIC0tZW5hYmxlLXNwLWZ1bmNzCisJICAtLWVuYWJsZS10ZXJtLWRyaXZlcgorCSAgLS1lbmFibGUtaW50ZXJvcAorCitUaGlzIGlzIHRoZSBjb25maWd1cmF0aW9uIGNvbW1hbmRsaW5lIGFzIEknbSB1c2luZyBpdCBhdCB0aGUgbW9tZW50IChhc3N1bWluZworZW52aXJvbm1lbnQgdmFyaWFibGUgTUlOR1dfUk9PVCB0byBob2xkIHRoZSByb290IGRpcmVjdG9yeSBuYW1lIG9mIHlvdXIgTWluR1cKK2J1aWxkKToKKworLi9jb25maWd1cmUgXAorCS0tcHJlZml4PSRNSU5HV19ST09UIFwKKwktLXdpdGgtY3h4IFwKKwktLXdpdGhvdXQtYWRhIFwKKwktLWVuYWJsZS13YXJuaW5ncyBcCisJLS1lbmFibGUtYXNzZXJ0aW9ucyBcCisJLS1kaXNhYmxlLWhvbWUtdGVybWluZm8gXAorCS0tZW5hYmxlLWRhdGFiYXNlIFwKKwktLWVuYWJsZS1zcC1mdW5jcyBcCisJLS1lbmFibGUtdGVybS1kcml2ZXIgXAorCS0tZW5hYmxlLWludGVyb3AgXAorCS0tZGlzYWJsZS10ZXJtY2FwIFwKKwktLXdpdGgtcHJvZ3MgXAorCS0td2l0aC1saWJ0b29sIFwKKwktLWVuYWJsZS1wYy1maWxlcyBcCisJLS1tYW5kaXI9JE1JTkdXX1JPT1Qvc2hhcmUvbWFuCisKK1BsZWFzZSBub3RlIHRoYXQgaXQgaXMgYWxzbyBuZWNlc3NhcnkgdG8gc2V0IHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGU6CisKK2V4cG9ydCBQQVRIX1NFUEFSQVRPUj0iOyIKKworaW4gb3JkZXIgdG8gcGFyc2UgdGhlIHRlcm1pbmZvIHBhdGhzIGNvcnJlY3RseS4gVGVybWluZm8gcGF0aHMgc2hvdWxkCithbHdheXMgYmUgc2VwYXJhdGVkIGJ5IGEgc2VlZWVtaWNvbG9uLGV2ZW4gd2hlbiBydW5uaW5nIHVuZGVyIE1TWVMuCisKK1RvIHN1cHBvcnQgcmVndWxhciBleHByZXNzaW9ucyBwcm9wZXJseSwgbmN1cnNlcyB1bmRlciBNaW5HVyBzaG91bGQgYmUKK2xpbmtlZCBhZ2FpbnN0IHRoZSBnbnVyeCByZWdleCBsaWJyYXJ5LCB3aGljaCBtdXN0IGJlIGJ1aWx0IHNlcGFyYXRlbHkKK3VuZGVyIE1pbkdXLiAgU2VlCisKKyAgICBmdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9iaW5hcmllcy93aW4zMi9kZXBlbmRlbmNpZXMvbGliZ251cngtc3JjLTIuNS56aXAKKworQWxsIHRoZSBvcHRpb25zIGFib3ZlIGFyZSAtIGxpa2UgdGhlIHdob2xlIFdpbmRvd3Mgc3VwcG9ydCAtCitleHBlcmltZW50YWwuCisKK0EgbG90IGlzIHN0aWxsIFRPRE8sIGUuZy46CisKKyAgLSBXaWRlIENoYXJhY3RlciBzdXBwb3J0IChkaXNwbGF5IGlzIHdvcmthYmxlLCBidXQgaW5wdXQgdW50ZXN0ZWQpCisgICAgVGhlIFdpbjMyQ29uIGRyaXZlciBzaG91bGQgYWN0dWFsbHkgb25seSB1c2UgVW5pY29kZSBpbiB0aGUKKyAgICBmdXR1cmUuCisgIC0gVGhyZWFkIHN1cHBvcnQgKGxvY2tpbmcpLiBJZiB1c2luZyBURE0gdG9vbGNoYWluIHRoaXMgaXMgZG9uZSBieQorICAgIGNvbmZpZ3VyaW5nIHB0aHJlYWRzLgorICAtIEEgR1VJIGNvbnNvbGUgZHJpdmVyCisgIC0gU3VwcG9ydCBmb3IgVGVybWluYWxzIGF0dGFjaGVkIHZpYSBhIHNlcmlhbCBwb3J0ICh2aWEgdGVybWluZm8pCisgIC0gU3VwcG9ydCBmb3IgbmV0d29ya2VkIFRlcm1pbmFsIGNvbm5lY3Rpb25zICh2aWEgdGVybWluZm8pCisgIC0gV29ya2Fyb3VuZHMgZm9yIE1pbkdXJ3MgZmlsZXN5c3RlbSBhY2Nlc3MgYXJlIG5lY2Vzc2FyeSB0byBtYWtlIGluZm9jbXAKKyAgICB3b3JrICh0aG91Z2ggdGljIHdvcmtzKS4KKworVG8gc3VwcG9ydCB0ZXJtaW5mbywgd2Ugd291bGQgbmVlZCB0byBoYXZlIGFuIGlvY3RsKCkgc2ltdWxhdGlvbiBmb3IgdGhlCitzZXJpYWwgYW5kIG5ldHdvcmtlZCB0ZXJtaW5hbHMuCmRpZmYgLS1naXQgYS9UTy1ETyBiL1RPLURPCmluZGV4IGNhNDdkMDIuLjVkZjdmNDcgMTAwNjQ0Ci0tLSBhL1RPLURPCisrKyBiL1RPLURPCkBAIC0xLDUgKzEsNSBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAtLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAtLQogLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICAtLQpAQCAtMjUsNyArMjUsNyBAQAogLS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAtLQogLS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gJElkOiBUTy1ETyx2IDEuNTEgMjAwOC8xMC8xMSAxOToyMjoyNyB0b20gRXhwICQKKy0tICRJZDogVE8tRE8sdiAxLjU3IDIwMTEvMDMvMjggMDA6MjM6MDIgdG9tIEV4cCAkCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFNIT1JULVRFUk0gVE8tRE8gSVRFTVM6CkBAIC00NSw3ICs0NSw3IEBACiArIFNjcm9sbGluZyBvcHRpbWl6YXRpb24gaGFzIGhvbGVzOiAgZm9yIGV4YW1wbGUsIGl0IGZvcmNlcyByZXBhaW50cyBvZiB0aGUKICAgc2NyZWVuIGJldHdlZW4gY2FsbHMgdG8gcmVmcmVzaCgpLgogCi0rIFNWcjQgdXNlcyBzbGlnaHRseSBkaWZmZXJlbnQgcnVsZXMgZm9yIGRldGVybWluaW5nIHdoZW4gc29mdGtleXMgYXJlIHNob3duLiAKKysgU1ZyNCB1c2VzIHNsaWdodGx5IGRpZmZlcmVudCBydWxlcyBmb3IgZGV0ZXJtaW5pbmcgd2hlbiBzb2Z0a2V5cyBhcmUgc2hvd24uCiAgIEZvciBleGFtcGxlLCB0aGV5IGFyZSBpbml0aWFsbHkgZGlzcGxheWVkIChiZWZvcmUgdGhlIG5jdXJzZXMgJ2UnIHRlc3QKICAgYWN0aXZhdGVzIHRoZW0pLCBhbmQgYSB0b3VjaHdpbiBjYW4gYXBwYXJlbnRseSBhbHNvIGZvcmNlIHRoZW0gdG8gYmUKICAgZGlzcGxheWVkLgpAQCAtNTgsNyArNTgsNyBAQAogKyBUaGUgd2luZG93IGNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgYysrIHN1YmRpcmVjdG9yeSBuZWVkIGRvY3VtZW50YXRpb24uICBTb21lCiAgIEMrKyBwcm9ncmFtbWVyIGNvdWxkIGVhcm4gYSBsb3Qgb2YgZ29vZCBrYXJtYSBieSBkb2luZyB0aGlzLi4uCiAKLSsgdmlkX2F0dHIoKSBzaG91bGQgc3VwcG9ydCB0aGUgc2V0X2FfYXR0cmlidXRlcyAoc2dyMSkgc3RyaW5nLCBidXQgZG9lcyBub3QuIAorKyB2aWRfYXR0cigpIHNob3VsZCBzdXBwb3J0IHRoZSBzZXRfYV9hdHRyaWJ1dGVzIChzZ3IxKSBzdHJpbmcsIGJ1dCBkb2VzIG5vdC4KICAgVGhlcmUgYXBwZWFyIHRvIGJlIG5vIHRlcm1pbmFscyB0aGF0IHJlcXVpcmUgdGhhdCBmdW5jdGlvbmFsaXR5LgogCiArIHRoZSBjb25maWd1cmUgLS1kaXNhYmxlLWV4dC1mdW5jcyBvcHRpb24gZG9lcyBub3Qgd29yayBmb3IgQWRhOTUgdHJlZS4KQEAgLTcyLDI3ICs3MiwyOCBAQAogICBCdWlsZGluZyB0aG9zZSB3aXRoIGxpYnRvb2wgZG9lcyBub3Qgd29yayBlaXRoZXIuICAoVGhpcyBpcyBhIHByb2JsZW0gd2l0aAogICB0aGUgQlNEIHBsYXRmb3JtcykuCiAKKysgbW9yZSB3b3JrIGlzIG5lZWRlZCB0byBtYWtlIHRoZSBNaW5HVyBwb3J0IHN1cHBvcnQgb3JkaW5hcnkgdGVybWluYWxzLgorCiBQb3J0YWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKToKIAogKyBVc2VycyBvZiBvbGRlciBTeXN0ZW0gViBVTklYZXMgKGJ1dCBub3QgU29sYXJpcywgYW5kIHByb2JhYmx5IG5vdCBTVnI0KSBtYXkKICAgdHJpcCBvdmVyIGEga25vd24gcHJvYmxlbSB3aXRoIHRoZSBzaWduYWwtaGFuZGxpbmcgY29kZSB3aGljaCBjYXVzZXMgYWJydXB0CiAgIHRlcm1pbmF0aW9uIG9mIG5jdXJzZXMgYXBwbGljYXRpb25zIGZvbGxvd2luZyByZXN1bWUgZnJvbSBhIF5aIHN1c3BlbmQgKHRoaXMKICAgcHJvYmxlbSB3YXMgZmlyc3Qgc2VlbiBydW5uaW5nIGx5bngpLiAgWW91IHdpbGwgbm90IHNlZSB0aGlzIHByb2JsZW0gaWYgeW91Ci0gIGFyZSBydW5uaW5nIExpbnV4IG9yIG9uZSBvZiB0aGUgNC40QlNEIGRlcml2YXRpdmVzIGxpa2UgRnJlZUJTRCwgTmV0QlNELCBvcgotICBCU0RJLiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgYW5hbHlzaXMgaW4gdGhlIGhlYWRlciBjb21tZW50IG9mCi0gIG5jdXJzZXMvdHR5L2xpYl90c3RwLmMgLgorICBhcmUgdXNpbmcgb25lIG9mIHRoZSA0LjRCU0QgZGVyaXZhdGl2ZXMgbGlrZSBzdWNoIGFzLCBOZXRCU0QsIG9yIEJTREksIG9yCisgIHN5c3RlbXMgdXNpbmcgdGhhdCBjb252ZW50aW9uLiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgYW5hbHlzaXMgaW4gdGhlIGhlYWRlcgorICBjb21tZW50IG9mIG5jdXJzZXMvdHR5L2xpYl90c3RwLmMgLgogCiArIEluIHRoZW9yeSwgdndwcmludHcgYW5kIHZ3c2NhbmYgYXJlIHN1cHBvc2VkIHRvIHVzZSB0aGUgb2xkZXIgdmFyYXJncy5oCiAgIGludGVyZmFjZSBmb3IgaGFuZGxpbmcgdmFyaWFkaWMgYXJndW1lbnQgbGlzdHMgKGFuZCBhcmUgZGVwcmVjYXRlZCBieSBYL09wZW4KLSAgZm9yIHRoYXQgcmVhc29uKS4gIExpbnV4IGRvZXNuJ3QgaGF2ZSB2YXJhcmdzLmgsIGl0IGhhcyB0aGUgbmV3ZXIKLSAgWC9PcGVuLXN0YW5kYXJkIHN0ZGFyZ3MuaCBlcXVpdmFsZW50LiAgU28gdGhlc2UgZnVuY3Rpb25zIHVzZSBzdGRhcmdzCi0gIGluc3RlYWQuICBUaGlzIGlzIHVubGlrZWx5IHRvIGJlIGEgcHJvYmxlbSB1bmxlc3MgeW91J3JlIGJ1aWxkaW5nIG5jdXJzZXMgb24KLSAgYSBTeXN0ZW0gViBvbGQgZW5vdWdoIHRvIG9ubHkgaGF2ZSB2YXJhcmdzLmguICAoU29sYXJpcyAyLjUuMSB1c2VkIHRoZQotICBzdGRhcmcuaCBiaW5kaW5nIGFzIHdlbGwpLgorICBmb3IgdGhhdCByZWFzb24pLiAgTWFueSBuZXdlciBzeXN0ZW1zIGRvIG5vIGhhdmUgdmFyYXJncy5oLCBpbnN0ZWFkIHRoZXkgaGF2ZQorICBvbmx5IHRoZSBuZXdlciBYL09wZW4tc3RhbmRhcmQgc3RkYXJncy5oIGVxdWl2YWxlbnQuICBTbyB0aGVzZSBmdW5jdGlvbnMgdXNlCisgIHN0ZGFyZ3MgaW5zdGVhZC4gIFRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVtIHVubGVzcyB5b3UncmUgYnVpbGRpbmcKKyAgbmN1cnNlcyBvbiBhIFN5c3RlbSBWIG9sZCBlbm91Z2ggdG8gb25seSBoYXZlIHZhcmFyZ3MuaC4gIChTb2xhcmlzIDIuNS4xIHVzZWQKKyAgdGhlIHN0ZGFyZy5oIGJpbmRpbmcgYXMgd2VsbCkuCiAKLSsgSWYgeW91J3JlIHVzaW5nIGEgQlNEIGVhcmxpZXIgdGhhbiA0LjRCU0QsIG9yIGEgTGludXggb2xkIGVub3VnaCBub3QgdG8gaGF2ZQotICBhIG5hdGl2ZSB2c3NjYW5mKDMpIGluIGl0cyBsaWJyYXJ5LCB2d3NjYW53KCkgd2lsbCBub3Qgd29yay4gIFlvdSBsb3NlLiAgKEl0Ci0gIHNob3VsZCB3b3JrIG9uIGFueSBTeXN0ZW0gViwgaG93ZXZlcikuICBJZiB5b3Ugd2FudCB0byBmaXggdGhpcywgYWRkIGFuCisrIElmIHlvdSdyZSB1c2luZyBhIHN5c3RlbSBvbGQgZW5vdWdoIG5vdCB0byBoYXZlIGEgbmF0aXZlIHZzc2NhbmYoMykgaW4gaXRzCisgIGxpYnJhcnksIHZ3c2NhbncoKSB3aWxsIG5vdCB3b3JrLiAgSWYgeW91IHdhbnQgdG8gZml4IHRoaXMsIGFkZCBhbgogICBpbXBsZW1lbnRhdGlvbiB0byBuY3Vyc2VzL3Zzc2NhbmYuYy4KIAogKyBUaGUgQysrIGJpbmRpbmcgZmFpbHMgdG8gYnVpbGQgd2l0aCBhIGZldyBDKysgY29tcGlsZXJzLgpAQCAtMTIyLDcgKzEyMyw3IEBACiAyLiBET1MgcG9ydAogCiBPbmx5IGEgZmV3IG9mIHRoZSBmaWxlcyBpbiB0aGUgbGlicmFyeSBkZXBlbmQgb24gdGhlIHRlcm1pbmZvIGZvcm1hdC4KLUl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBmdXJ0aGVyIGtlcm5lbGl6ZSB0aGUgcGFja2FnZSwgdGhlbiByZXdyaXRlIAorSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGZ1cnRoZXIga2VybmVsaXplIHRoZSBwYWNrYWdlLCB0aGVuIHJld3JpdGUKIGEgc21hbGwgbnVtYmVyIG9mIGNvcmUgZmlsZXMgdG8gcHJvZHVjZSBhIGZ1bmN0aW9uYWxseS1jb21wYXRpYmxlCiBwb3J0IHRoYXQgd291bGQgZG8gdXBkYXRlcyB0byBhIG1lbW9yeS1tYXBwZWQgc2NyZWVuIGFyZWEuICBUaGUgZmlyc3QKIHJlc3VsdCBvZiB0aGlzIHdvdWxkIGJlIGEgRE9TIHBvcnQuCkBAIC0xOTUsMTAgKzE5NiwxMCBAQAogCQltb3ZlX2luc2VydCwgZGVzdF90YWJzX21hZ2ljX3Ntc28sIHRyYW5zcGFyZW50X3VuZGVybGluZSwKIAkJbmVlZHNfeG9uX3hvZmYsIGhhcmRfY3Vyc29yLgogCU51bWVyaWNzOiBsaW5lc19vZl9tZW1vcnksIGJ1dHRvbnMuCi0JU3RyaW5nczogcGtleV9rZXksIHBrZXlfbG9jYWwsIHBrZXlfeG1pdCwgdW5kZXJsaW5lX2NoYXIsIAotCQllbnRlcl94b25fbW9kZSwJZXhpdF94b25fbW9kZSwgeG9uX2NoYXJhY3RlciwgeG9mZl9jaGFyYWN0ZXIsIAorCVN0cmluZ3M6IHBrZXlfa2V5LCBwa2V5X2xvY2FsLCBwa2V5X3htaXQsIHVuZGVybGluZV9jaGFyLAorCQllbnRlcl94b25fbW9kZSwJZXhpdF94b25fbW9kZSwgeG9uX2NoYXJhY3RlciwgeG9mZl9jaGFyYWN0ZXIsCiAJCWRpc3BsYXlfY2xvY2ssIHJlbW92ZV9jbG9jaywgdXNlclswLTVdLCBkaXNwbGF5X3BjX2NoYXIsCi0JCWVudGVyX3NjYW5jb2RlX21vZGUsIGV4aXRfc2NhbmNvZGVfbW9kZSwgcGNfdGVybV9vcHRpb25zLCAKKwkJZW50ZXJfc2NhbmNvZGVfbW9kZSwgZXhpdF9zY2FuY29kZV9tb2RlLCBwY190ZXJtX29wdGlvbnMsCiAJCXNjYW5jb2RlX2VzY2FwZSwgYWx0X3NjYW5jb2RlX2VzYy4KIAogVGhlc2UgYXJlIHRoZSBwb3RlbnRpYWxseSBpbXBvcnRhbnQgb25lcyBmb3IgbmN1cnNlcy4gIE5vdGVzOgpkaWZmIC0tZ2l0IGEvVkVSU0lPTiBiL1ZFUlNJT04KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE5ZmEzZAotLS0gL2Rldi9udWxsCisrKyBiL1ZFUlNJT04KQEAgLTAsMCArMSBAQAorNTowOjkJNi4wCTIwMTUwODA4CmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCA0YzhlODE4Li5kZTFmNzA0IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTEsNSArMSw1IEBACiBkbmwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLWRubCBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorZG5sIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiBkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIGRubCBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogZG5sIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw3ICsyOCw3IEBACiBkbmwKIGRubCBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NS1vbgogZG5sCi1kbmwgJElkOiBhY2xvY2FsLm00LHYgMS40NzAgMjAwOC8xMC8yNSAyMjoxNTozMiB0b20gRXhwICQKK2RubCAkSWQ6IGFjbG9jYWwubTQsdiAxLjc2MSAyMDE1LzA4LzA2IDAwOjQ2OjM0IHRvbSBFeHAgJAogZG5sIE1hY3JvcyB1c2VkIGluIE5DVVJTRVMgYXV0by1jb25maWd1cmF0aW9uIHNjcmlwdC4KIGRubAogZG5sIFRoZXNlIG1hY3JvcyBhcmUgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGZyb20gTkNVUlNFUy4gIFRoZSBjb3B5cmlnaHQgb24KQEAgLTM5LDcgKzM5LDcgQEAKIGRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIEFNX0xBTkdJTkZPX0NPREVTRVQgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDAyLzEwLzI3IDIzOjIxOjQyCitkbmwgQU1fTEFOR0lORk9fQ09ERVNFVCB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgSW5zZXJ0ZWQgYXMgcmVxdWVzdGVkIGJ5IGdldHRleHQgMC4xMC40MAogZG5sIEZpbGUgZnJvbSAvdXNyL3NoYXJlL2FjbG9jYWwKQEAgLTUwLDI1ICs1MCw4NiBAQAogZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgogQUNfREVGVU4oW0FNX0xBTkdJTkZPX0NPREVTRVRdLAogWwotICBBQ19DQUNIRV9DSEVDSyhbZm9yIG5sX2xhbmdpbmZvIGFuZCBDT0RFU0VUXSwgYW1fY3ZfbGFuZ2luZm9fY29kZXNldCwKLSAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsYW5naW5mby5oPl0sCi0gICAgICBbY2hhciogY3MgPSBubF9sYW5naW5mbyhDT0RFU0VUKTtdLAotICAgICAgYW1fY3ZfbGFuZ2luZm9fY29kZXNldD15ZXMsCi0gICAgICBhbV9jdl9sYW5naW5mb19jb2Rlc2V0PW5vKQotICAgIF0pCi0gIGlmIHRlc3QgJGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQgPSB5ZXM7IHRoZW4KLSAgICBBQ19ERUZJTkUoSEFWRV9MQU5HSU5GT19DT0RFU0VULCAxLAotICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5sX2xhbmdpbmZvKENPREVTRVQpLl0pCi0gIGZpCitBQ19DQUNIRV9DSEVDSyhbZm9yIG5sX2xhbmdpbmZvIGFuZCBDT0RFU0VUXSwgYW1fY3ZfbGFuZ2luZm9fY29kZXNldCwKKwlbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsYW5naW5mby5oPl0sCisJW2NoYXIqIGNzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7XSwKKwlhbV9jdl9sYW5naW5mb19jb2Rlc2V0PXllcywKKwlhbV9jdl9sYW5naW5mb19jb2Rlc2V0PW5vKQorCV0pCisJaWYgdGVzdCAkYW1fY3ZfbGFuZ2luZm9fY29kZXNldCA9IHllczsgdGhlbgorCQlBQ19ERUZJTkUoSEFWRV9MQU5HSU5GT19DT0RFU0VULCAxLAorCQlbRGVmaW5lIGlmIHlvdSBoYXZlIDxsYW5naW5mby5oPiBhbmQgbmxfbGFuZ2luZm8oQ09ERVNFVCkuXSkKKwlmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9BREFfSU5DTFVERV9ESVJTIHZlcnNpb246IDUgdXBkYXRlZDogMjAwNi8xMC8xNCAxNToyMzoxNQorZG5sIENGX0FCSV9ERUZBVUxUUyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTUvMDYvMDYgMTM6NDk6NTgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBQcm92aWRlIGNvbmZpZ3VyZS1zY3JpcHQgZGVmYXVsdHMgZm9yIGRpZmZlcmVudCBuY3Vyc2VzIEFCSXMuCitBQ19ERUZVTihbQ0ZfQUJJX0RFRkFVTFRTXSxbCitBQ19SRVFVSVJFKFtDRl9OQ1VSU0VTX1dJVEhfQUJJX1ZFUlNJT05dKQorY2FzZSB4JGNmX2N2X2FiaV92ZXJzaW9uIGluCisoeFtbNjc4OV1dKQorCWNmX2RmdF9leHRfY29sb3JzPXllcworCWNmX2RmdF9leHRfY29uc3Q9eWVzCisJY2ZfZGZ0X2V4dF9tb3VzZT15ZXMKKwljZl9kZnRfZXh0X3B1dHdpbj15ZXMKKwljZl9kZnRfZXh0X3NwZnVuY3M9eWVzCisJY2ZfZGZ0X2ZpbHRlcl9zeW1zPXllcworCWNmX2RmdF9jaHR5cGU9dWludDMyX3QKKwljZl9kZnRfbW1hc2tfdD11aW50MzJfdAorCWNmX2RmdF9pbnRlcm9wPXllcworCWNmX2RmdF90cGFybV9hcmc9aW50cHRyX3QKKwljZl9kZnRfd2l0aF9scDY0PXllcworCTs7CisoKikKKwljZl9kZnRfZXh0X2NvbG9ycz1ubworCWNmX2RmdF9leHRfY29uc3Q9bm8KKwljZl9kZnRfZXh0X21vdXNlPW5vCisJY2ZfZGZ0X2V4dF9wdXR3aW49bm8KKwljZl9kZnRfZXh0X3NwZnVuY3M9bm8KKwljZl9kZnRfZmlsdGVyX3N5bXM9bm8KKwljZl9kZnRfY2h0eXBlPWF1dG8KKwljZl9kZnRfbW1hc2tfdD1hdXRvCisJY2ZfZGZ0X2ludGVyb3A9bm8KKwljZl9kZnRfdHBhcm1fYXJnPWxvbmcKKwljZl9kZnRfd2l0aF9scDY0PW5vCisJOzsKK2VzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUNWRVJTSU9OX0NIRUNLIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNC8wNi8wNCAxOToxMTo0OQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbmRpdGlvbmFsbHkgZ2VuZXJhdGUgc2NyaXB0IGFjY29yZGluZyB0byB3aGV0aGVyIHdlJ3JlIHVzaW5nIGEgZ2l2ZW4gYXV0b2NvbmYuCitkbmwKK2RubCAkMSA9IHZlcnNpb24gdG8gY29tcGFyZSBhZ2FpbnN0CitkbmwgJDIgPSBjb2RlIHRvIHVzZSBpZiBBQ19BQ1ZFUlNJT04gaXMgYXQgbGVhc3QgYXMgaGlnaCBhcyAkMS4KK2RubCAkMyA9IGNvZGUgdG8gdXNlIGlmIEFDX0FDVkVSU0lPTiBpcyBvbGRlciB0aGFuICQxLgorZGVmaW5lKFtDRl9BQ1ZFUlNJT05fQ0hFQ0tdLAorWworaWZkZWYoW0FDX0FDVkVSU0lPTl0sICxbaWZkZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLFttNF9jb3B5KFtBQ19BVVRPQ09ORl9WRVJTSU9OXSxbQUNfQUNWRVJTSU9OXSldLFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLFtBQ19BQ1ZFUlNJT05dKV0pXSlkbmwKK2lmZGVmKFttNF92ZXJzaW9uX2NvbXBhcmVdLAorW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShtNF9kZWZuKFtBQ19BQ1ZFUlNJT05dKSwgWyQxXSksIC0xLCBbJDNdLCBbJDJdKV0sCitbQ0ZfQUNWRVJTSU9OX0NPTVBBUkUoCitBQ19QUkVSRVFfQ0FOT04oQUNfUFJFUkVRX1NQTElUKFskMV0pKSwKK0FDX1BSRVJFUV9DQU5PTihBQ19QUkVSRVFfU1BMSVQoQUNfQUNWRVJTSU9OKSksIEFDX0FDVkVSU0lPTiwgWyQyXSwgWyQzXSldKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUNWRVJTSU9OX0NPTVBBUkUgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEyLzEwLzAzIDE4OjM5OjUzCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BQ1ZFUlNJT05fQ09NUEFSRShNQUpPUjEsIE1JTk9SMSwgVEVSTkFSWTEsCitkbmwgICAgICAgICAgICAgICAgICAgICAgTUFKT1IyLCBNSU5PUjIsIFRFUk5BUlkyLAorZG5sICAgICAgICAgICAgICAgICAgICAgIFBSSU5UQUJMRTIsIG5vdCBGT1VORCwgRk9VTkQpCitkZWZpbmUoW0NGX0FDVkVSU0lPTl9DT01QQVJFXSwKK1tpZmVsc2UoYnVpbHRpbihbZXZhbF0sIFskMiA8ICQ1XSksIDEsCitbaWZlbHNlKFskOF0sICwgLFskOF0pXSwKK1tpZmVsc2UoWyQ5XSwgLCAsWyQ5XSldKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQURBX0lOQ0xVREVfRElSUyB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTMvMTAvMTQgMDQ6MjQ6MDcKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGluY2x1ZGUtb3B0aW9ucyBmb3IgdGhlIEMgcHJvZ3JhbXMgaW4gdGhlIEFkYTk1CiBkbmwgYmluZGluZy4KIEFDX0RFRlVOKFtDRl9BREFfSU5DTFVERV9ESVJTXSwKIFsKLUFDUFBGTEFHUz0iLUkuIC1JLi4vLi4vaW5jbHVkZSAkQUNQUEZMQUdTIgorQUNQUEZMQUdTPSItSS4gLUkuLi9pbmNsdWRlIC1JLi4vLi4vaW5jbHVkZSAkQUNQUEZMQUdTIgogaWYgdGVzdCAiJHNyY2RpciIgIT0gIi4iOyB0aGVuCiAJQUNQUEZMQUdTPSItSVwke3NyY2Rpcn0vLi4vLi4vaW5jbHVkZSAkQUNQUEZMQUdTIgogZmkKQEAgLTc2LDcgKzEzNyw3IEBACiAJQUNQUEZMQUdTPSIkQUNQUEZMQUdTIC1JXCR7aW5jbHVkZWRpcn0iCiBlbGlmIHRlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIjsgdGhlbgogCWlmIHRlc3QgIiRpbmNsdWRlZGlyIiA9ICcke3ByZWZpeH0vaW5jbHVkZScgOyB0aGVuCi0JCWlmIHRlc3QgJHByZWZpeCAhPSAvdXNyIDsgdGhlbgorCQlpZiB0ZXN0IHgkcHJlZml4ICE9IHgvdXNyIDsgdGhlbgogCQkJQUNQUEZMQUdTPSIkQUNQUEZMQUdTIC1JXCR7aW5jbHVkZWRpcn0iCiAJCWZpCiAJZWxzZQpAQCAtODYsNyArMTQ3LDE1IEBACiBBQ19TVUJTVChBQ1BQRkxBR1MpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0FERF9DRkxBR1MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDA0LzA0LzI1IDE3OjQ4OjMwCitkbmwgQ0ZfQUREX0FEQUZMQUdTIHZlcnNpb246IDEgdXBkYXRlZDogMjAxMC8wNi8xOSAxNToyMjoxOAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIEFkZCB0byAkQURBRkxBR1MsIHdoaWNoIGlzIHN1YnN0aXR1dGVkIGludG8gbWFrZWZpbGUgYW5kIHNjcmlwdHMuCitBQ19ERUZVTihbQ0ZfQUREX0FEQUZMQUdTXSxbCisgCUFEQUZMQUdTPSIkQURBRkxBR1MgJDEiCisJQUNfU1VCU1QoQURBRkxBR1MpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9DRkxBR1MgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAogZG5sIC0tLS0tLS0tLS0tLS0KIGRubCBDb3B5IG5vbi1wcmVwcm9jZXNzb3IgZmxhZ3MgdG8gJENGTEFHUywgcHJlcHJvY2Vzc29yIGZsYWdzIHRvICRDUFBGTEFHUwogZG5sIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlmIGdpdmVuIG1ha2VzIHRoaXMgbWFjcm8gdmVyYm9zZS4KQEAgLTEwNCwxNiArMTczLDE2IEBACiBmb3IgY2ZfYWRkX2NmbGFncyBpbiAkMQogZG8KIGNhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgotbm8pCi0JY2FzZSAkY2ZfYWRkX2NmbGFncyBpbiAjKHZpCi0JLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpICModmkKKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQogCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCi0JCS1EKikKKwkJKC1EKikKIAkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtbXj1dXSo9J1wnJ1wiW1teIl1dKi8vJ2AKIAotCQkJdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwogCiAJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCiAJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgpAQCAtMTI1LDQyICsxOTQsNDggQEAKIAkJCTs7CiAJCWVzYWMKIAkJY2FzZSAiJENQUEZMQUdTIiBpbgotCQkqJGNmX2FkZF9jZmxhZ3MpICModmkKKwkJKCokY2ZfYWRkX2NmbGFncykKIAkJCTs7Ci0JCSopICModmkKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKwkJCQlDRl9SRU1PVkVfREVGSU5FKENQUEZMQUdTLCRDUFBGTEFHUywkY2ZfdHN0X2NwcGZsYWdzKQorCQkJCTs7CisJCQllc2FjCiAJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCiAJCQk7OwogCQllc2FjCiAJCTs7Ci0JKikKKwkoKikKIAkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCiAJCTs7CiAJZXNhYwogCTs7Ci15ZXMpCisoeWVzKQogCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKIAogCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bW14iXV0qIidcJycvLydgCiAKLQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCiAJOzsKIGVzYWMKIGRvbmUKIAogaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgotCWlmZWxzZSgkMiwsLFtDRl9WRVJCT1NFKGFkZCB0byBcJENGTEFHUyAkY2ZfbmV3X2NmbGFncyldKQorCWlmZWxzZShbJDJdLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzKV0pCiAJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgogZmkKIAogaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCi0JaWZlbHNlKCQyLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyldKQotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKKwlpZmVsc2UoWyQyXSwsLFtDRl9WRVJCT1NFKGFkZCB0byBcJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MpXSkKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCiBmaQogCiBpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KLQlpZmVsc2UoJDIsLCxbQ0ZfVkVSQk9TRShhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzKV0pCisJaWZlbHNlKFskMl0sLCxbQ0ZfVkVSQk9TRShhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzKV0pCiAJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgogZmkKIApAQCAtMTY4LDcgKzI0Myw3IEBACiAKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfQUREX0lOQ0RJUiB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMDgvMDIvMDkgMTM6MTU6MzQKK2RubCBDRl9BRERfSU5DRElSIHZlcnNpb246IDE0IHVwZGF0ZWQ6IDIwMTUvMDUvMjUgMjA6NTM6MDQKIGRubCAtLS0tLS0tLS0tLS0tCiBkbmwgQWRkIGFuIGluY2x1ZGUtZGlyZWN0b3J5IHRvICRDUFBGTEFHUy4gIERvbid0IGFkZCAvdXNyL2luY2x1ZGUsIHNpbmNlIGl0J3MKIGRubCByZWR1bmRhbnQuICBXZSBkb24ndCBub3JtYWxseSBuZWVkIHRvIGFkZCAtSS91c3IvbG9jYWwvaW5jbHVkZSBmb3IgZ2NjLApAQCAtMTk1LDcgKzI3MCw3IEBACiAJCWZpCiAKIAkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgotICAgICAgICAgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCiAJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcwogCQkJdGhlbgogCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwpAQCAtMjExLDIxICsyODYsMzEgQEAKIAogCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCiAJCSAgQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoKQotCQkgIGlmZWxzZSgkMiwsQ1BQRkxBR1MsJDIpPSItSSRjZl9hZGRfaW5jZGlyICRpZmVsc2UoJDIsLENQUEZMQUdTLFskXSQyKSIKKwkJICBpZmVsc2UoWyQyXSwsQ1BQRkxBR1MsWyQyXSk9IiRpZmVsc2UoWyQyXSwsQ1BQRkxBR1MsWyQyXSkgLUkkY2ZfYWRkX2luY2RpciIKIAotICAgICAgICAgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCi0gICAgICAgICAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhawotICAgICAgICAgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgogCQllbHNlCiAJCSAgYnJlYWsKIAkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKIAkgIGZpCiAJZG9uZQogICBkb25lCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9BRERfTElCRElSIHZlcnNpb246IDYgdXBkYXRlZDogMjAwOC8wMi8wOSAxMzoxNTozNAorZG5sIENGX0FERF9MSUIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzAyIDA1OjAzOjA1CitkbmwgLS0tLS0tLS0tLQorZG5sIEFkZCBhIGxpYnJhcnksIHVzZWQgdG8gZW5mb3JjZSBjb25zaXN0ZW5jeS4KK2RubAorZG5sICQxID0gbGlicmFyeSB0byBhZGQsIHdpdGhvdXQgdGhlICItbCIKK2RubCAkMiA9IHZhcmlhYmxlIHRvIHVwZGF0ZSAoZGVmYXVsdCAkTElCUykKK0FDX0RFRlVOKFtDRl9BRERfTElCXSxbQ0ZfQUREX0xJQlMoLWwkMSxpZmVsc2UoJDIsLExJQlMsWyQyXSkpXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfTElCRElSIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKIGRubCAtLS0tLS0tLS0tLS0tCiBkbmwJQWRkcyB0byB0aGUgbGlicmFyeS1wYXRoCiBkbmwKQEAgLTIzNywzMSArMzIyLDU3IEBACiBBQ19ERUZVTihbQ0ZfQUREX0xJQkRJUl0sCiBbCiBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0gIGZvciBjZl9hZGRfbGliZGlyIGluICQxCi0gIGRvCi0gICAgaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgotICAgICAgOgotICAgIGVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgotICAgIHRoZW4KLSAgICAgIGNmX2hhdmVfbGliZGlyPW5vCi0gICAgICBpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KLSAgICAgICAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycwotICAgICAgICBmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbwotICAgICAgICAgIGlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KLSAgICAgICAgICAgIGNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKLSAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgotICAgICAgICBDRl9WRVJCT1NFKGFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgpCi0gICAgICAgIGlmZWxzZSgkMiwsTERGTEFHUywkMik9Ii1MJGNmX2FkZF9saWJkaXIgJGlmZWxzZSgkMiwsTERGTEFHUyxbJF0kMikiCi0gICAgICBmaQotICAgIGZpCi0gIGRvbmUKKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkMQorCWRvCisJCWlmIHRlc3QgJGNmX2FkZF9saWJkaXIgPSAvdXNyL2xpYiA7IHRoZW4KKwkJCToKKwkJZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCisJCXRoZW4KKwkJCWNmX2hhdmVfbGliZGlyPW5vCisJCQlpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KKwkJCQkjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCQkJZm9yIGNmX3Rlc3RfbGliZGlyIGluICRMREZMQUdTICRMSUJTIDsgZG8KKwkJCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgorCQkJCQkJY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWZpCisJCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCisJCQkJQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoKQorCQkJCWlmZWxzZShbJDJdLCxMREZMQUdTLFskMl0pPSItTCRjZl9hZGRfbGliZGlyICRpZmVsc2UoWyQyXSwsTERGTEFHUyxbJDJdKSIKKwkJCWZpCisJCWZpCisJZG9uZQogZmkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfQUREX1NVQkRJUl9QQVRIIHZlcnNpb246IDIgdXBkYXRlZDogMjAwNy8wNy8yOSAxMDoxMjo1OQorZG5sIENGX0FERF9MSUJTIHZlcnNpb246IDIgdXBkYXRlZDogMjAxNC8wNy8xMyAxNDozMzoyNworZG5sIC0tLS0tLS0tLS0tCitkbmwgQWRkIG9uZSBvciBtb3JlIGxpYnJhcmllcywgdXNlZCB0byBlbmZvcmNlIGNvbnNpc3RlbmN5LiAgTGlicmFyaWVzIGFyZQorZG5sIHByZXBlbmRlZCB0byBhbiBleGlzdGluZyBsaXN0LCBzaW5jZSB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGFzc3VtZWQgdG8KK2RubCBhbHJlYWR5IGV4aXN0IGluIHRoZSBsaXN0LgorZG5sCitkbmwgJDEgPSBsaWJyYXJpZXMgdG8gYWRkLCB3aXRoIHRoZSAiLWwiLCBldGMuCitkbmwgJDIgPSB2YXJpYWJsZSB0byB1cGRhdGUgKGRlZmF1bHQgJExJQlMpCitBQ19ERUZVTihbQ0ZfQUREX0xJQlNdLFsKK2NmX2FkZF9saWJzPSIkMSIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiBbJF1pZmVsc2UoJDIsLExJQlMsWyQyXSkKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK2lmZWxzZSgkMiwsTElCUyxbJDJdKT0iJGNmX2FkZF9saWJzIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfU1VCRElSX1BBVEggdmVyc2lvbjogNCB1cGRhdGVkOiAyMDEzLzEwLzA4IDE3OjQ3OjA1CiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQXBwZW5kIHRvIGEgc2VhcmNoLWxpc3QgZm9yIGEgbm9uc3RhbmRhcmQgaGVhZGVyL2xpYi1maWxlCiBkbmwJJDEgPSB0aGUgdmFyaWFibGUgdG8gcmV0dXJuIGFzIHJlc3VsdApAQCAtMjcxLDkgKzM4Miw5IEBACiBkbmwgJDUgPSBhIGRpcmVjdG9yeSB0aGF0IHdlIGRvIG5vdCB3YW50ICQ0IHRvIG1hdGNoCiBBQ19ERUZVTihbQ0ZfQUREX1NVQkRJUl9QQVRIXSwKIFsKLXRlc3QgIiQ0IiAhPSAiJDUiICYmIFwKK3Rlc3QgIngkNCIgIT0gIngkNSIgJiYgXAogdGVzdCAtZCAiJDQiICYmIFwKLWlmZWxzZShbJDVdLE5PTkUsLFsodGVzdCAkNSA9IE5PTkUgfHwgdGVzdCAtZCAkNSkgJiZdKSB7CitpZmVsc2UoWyQ1XSxOT05FLCxbKHRlc3QgLXogIiQ1IiB8fCB0ZXN0IHgkNSA9IHhOT05FIHx8IHRlc3QgIngkNCIgIT0gIngkNSIpICYmXSkgewogCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yICQzLWRpcmVjdG9yaWVzIHVuZGVyICQ0IgogCXRlc3QgLWQgJDQvJDMgJiYgICAgICAgICAgJDE9IlskXSQxICQ0LyQzIgogCXRlc3QgLWQgJDQvJDMvJDIgJiYgICAgICAgJDE9IlskXSQxICQ0LyQzLyQyIgpAQCAtMjgzLDc3ICszOTQsODkgQEAKIH0KIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfQU5TSV9DQ19DSEVDSyB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMDEvMTIvMzAgMTc6NTM6MzQKLWRubCAtLS0tLS0tLS0tLS0tLS0tCi1kbmwgVGhpcyBpcyBhZGFwdGVkIGZyb20gdGhlIG1hY3JvcyAnZnBfUFJPR19DQ19TVERDJyBhbmQgJ2ZwX0NfUFJPVE9UWVBFUycKLWRubCBpbiB0aGUgc2hhcnV0aWxzIDQuMiBkaXN0cmlidXRpb24uCi1BQ19ERUZVTihbQ0ZfQU5TSV9DQ19DSEVDS10sCi1bCi1BQ19DQUNIRV9DSEVDSyhmb3IgJHtDQy1jY30gb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMsIGNmX2N2X2Fuc2lfY2MsWwotY2ZfY3ZfYW5zaV9jYz1ubwotY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi1jZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0jIERvbid0IHRyeSBnY2MgLWFuc2k7IHRoYXQgdHVybnMgb2ZmIHVzZWZ1bCBleHRlbnNpb25zIGFuZAotIyBicmVha3Mgc29tZSBzeXN0ZW1zJyBoZWFkZXIgZmlsZXMuCi0jIEFJWAkJCS1xbGFuZ2x2bD1hbnNpCi0jIFVsdHJpeCBhbmQgT1NGLzEJLXN0ZDEKLSMgSFAtVVgJCQktQWEgLURfSFBVWF9TT1VSQ0UKLSMgU1ZSNAkJCS1YYwotIyBVbml4V2FyZSAxLjIJCShjYW5ub3QgdXNlIC1YYywgc2luY2UgQU5TSS9QT1NJWCBjbGFzaGVzKQotZm9yIGNmX2FyZyBpbiAiLURDQ19IQVNfUFJPVE9TIiBcCi0JIiIgXAotCS1xbGFuZ2x2bD1hbnNpIFwKLQktc3RkMSBcCi0JLUFlIFwKLQkiLUFhIC1EX0hQVVhfU09VUkNFIiBcCi0JLVhjCi1kbwotCUNGX0FERF9DRkxBR1MoJGNmX2FyZykKLQlBQ19UUllfQ09NUElMRSgKLVsKLSNpZm5kZWYgQ0NfSEFTX1BST1RPUwotI2lmICFkZWZpbmVkKF9fU1REQ19fKSB8fCAoX19TVERDX18gIT0gMSkKLWNob2tlIG1lCi0jZW5kaWYKLSNlbmRpZgotXSxbCi0JaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Ci0Jc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307Ci0Jc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307XSwKLQlbY2ZfY3ZfYW5zaV9jYz0iJGNmX2FyZyI7IGJyZWFrXSkKLWRvbmUKLUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgotQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorZG5sIENGX0FSR19ESVNBQkxFIHZlcnNpb246IDMgdXBkYXRlZDogMTk5OS8wMy8zMCAxNzoyNDozMQorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQWxsb3cgdXNlciB0byBkaXNhYmxlIGEgbm9ybWFsbHktb24gb3B0aW9uLgorQUNfREVGVU4oW0NGX0FSR19ESVNBQkxFXSwKK1tDRl9BUkdfT1BUSU9OKCQxLFskMl0sWyQzXSxbJDRdLHllcyldKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FSR19PUFRJT04gdmVyc2lvbjogNSB1cGRhdGVkOiAyMDE1LzA1LzEwIDE5OjUyOjE0CitkbmwgLS0tLS0tLS0tLS0tLQorZG5sIFJlc3RyaWN0ZWQgZm9ybSBvZiBBQ19BUkdfRU5BQkxFIHRoYXQgZW5zdXJlcyB1c2VyIGRvZXNuJ3QgZ2l2ZSBib2d1cworZG5sIHZhbHVlcy4KK2RubAorZG5sIFBhcmFtZXRlcnM6CitkbmwgJDEgPSBvcHRpb24gbmFtZQorZG5sICQyID0gaGVscC1zdHJpbmcKK2RubCAkMyA9IGFjdGlvbiB0byBwZXJmb3JtIGlmIG9wdGlvbiBpcyBub3QgZGVmYXVsdAorZG5sICQ0ID0gYWN0aW9uIGlmIHBlcmZvcm0gaWYgb3B0aW9uIGlzIGRlZmF1bHQKK2RubCAkNSA9IGRlZmF1bHQgb3B0aW9uIHZhbHVlIChlaXRoZXIgJ3llcycgb3IgJ25vJykKK0FDX0RFRlVOKFtDRl9BUkdfT1BUSU9OXSwKK1tBQ19BUkdfRU5BQkxFKFskMV0sWyQyXSxbdGVzdCAiJGVuYWJsZXZhbCIgIT0gaWZlbHNlKFskNV0sbm8seWVzLG5vKSAmJiBlbmFibGV2YWw9aWZlbHNlKFskNV0sbm8sbm8seWVzKQorCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICIkNSIgOyB0aGVuCitpZmVsc2UoWyQzXSwsWyAgICA6XWRubAorLFsgICAgJDNdKSBpZmVsc2UoWyQ0XSwsLFsKKwllbHNlCisJCSQ0XSkKKwlmaV0sW2VuYWJsZXZhbD0kNSBpZmVsc2UoWyQ0XSwsLFsKKwkkNAorXSlkbmwKK10pXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BUl9GTEFHUyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTAvMDUvMjAgMjA6MjQ6MjkKK2RubCAtLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciBzdWl0YWJsZSAiYXIiIChhcmNoaXZlcikgb3B0aW9ucyBmb3IgdXBkYXRpbmcgYW4gYXJjaGl2ZS4KK0FDX0RFRlVOKFtDRl9BUl9GTEFHU10sWworQUNfUkVRVUlSRShbQ0ZfUFJPR19BUl0pCisKK0FDX0NBQ0hFX0NIRUNLKGZvciBvcHRpb25zIHRvIHVwZGF0ZSBhcmNoaXZlcywgY2ZfY3ZfYXJfZmxhZ3MsWworCWNmX2N2X2FyX2ZsYWdzPXVua25vd24KKwlmb3IgY2ZfYXJfZmxhZ3MgaW4gLWN1cnYgY3VydiAtY3J2IGNydiAtY3F2IGNxdiAtcnYgcnYKKwlkbworCisJCSMgY2hlY2sgaWYgJEFSRkxBR1MgYWxyZWFkeSBjb250YWlucyB0aGlzIGNob2ljZQorCQlpZiB0ZXN0ICJ4JEFSRkxBR1MiICE9ICJ4IiA7IHRoZW4KKwkJCWNmX2NoZWNrX2FyX2ZsYWdzPWBlY2hvICJ4JEFSRkxBR1MiIHwgc2VkIC1lICJzLyRjZl9hcl9mbGFnc1wkLy8iIC1lICJzLyRjZl9hcl9mbGFncyAvIC8iYAorCQkJaWYgdGVzdCAieCRBUkZMQUdTIiAhPSAiJGNmX2NoZWNrX2FyX2ZsYWdzIiA7IHRoZW4KKwkJCQljZl9jdl9hcl9mbGFncz0KKwkJCQlicmVhaworCQkJZmkKKwkJZmkKKworCQlybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0CisJCXJtIC1mIGNvbmZ0ZXN0LmEKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgoraW50CXRlc3RkYXRhW1szXV0gPSB7IDEyMywgNDU2LCA3ODkgfTsKK0VPRgorCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSA7IHRoZW4KKwkJCWVjaG8gIiRBUiAkQVJGTEFHUyAkY2ZfYXJfZmxhZ3MgY29uZnRlc3QuYSBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IiA+JkFDX0ZEX0NDCisJCQkkQVIgJEFSRkxBR1MgJGNmX2FyX2ZsYWdzIGNvbmZ0ZXN0LmEgY29uZnRlc3QuJGFjX2N2X29iamV4dCAyPiZBQ19GRF9DQyAxPi9kZXYvbnVsbAorCQkJaWYgdGVzdCAtZiBjb25mdGVzdC5hIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPSRjZl9hcl9mbGFncworCQkJCWJyZWFrCisJCQlmaQorCQllbHNlCisJCQlDRl9WRVJCT1NFKGNhbm5vdCBjb21waWxlIHRlc3QtcHJvZ3JhbSkKKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXJtIC1mIGNvbmZ0ZXN0LmEgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0CiBdKQogCi1pZiB0ZXN0ICIkY2ZfY3ZfYW5zaV9jYyIgIT0gIm5vIjsgdGhlbgotaWYgdGVzdCAiLiRjZl9jdl9hbnNpX2NjIiAhPSAiLi1EQ0NfSEFTX1BST1RPUyI7IHRoZW4KLQlDRl9BRERfQ0ZMQUdTKCRjZl9jdl9hbnNpX2NjKQoraWYgdGVzdCAtbiAiJEFSRkxBR1MiIDsgdGhlbgorCWlmIHRlc3QgLW4gIiRjZl9jdl9hcl9mbGFncyIgOyB0aGVuCisJCUFSRkxBR1M9IiRBUkZMQUdTICRjZl9jdl9hcl9mbGFncyIKKwlmaQogZWxzZQotCUFDX0RFRklORShDQ19IQVNfUFJPVE9TKQorCUFSRkxBR1M9JGNmX2N2X2FyX2ZsYWdzCiBmaQotZmkKLV0pZG5sCisKK0FDX1NVQlNUKEFSRkxBR1MpCitdKQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0FOU0lfQ0NfUkVRRCB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDgvMDMvMjMgMTQ6NDg6NTQKLWRubCAtLS0tLS0tLS0tLS0tLS0KLWRubCBGb3IgcHJvZ3JhbXMgdGhhdCBtdXN0IHVzZSBhbiBBTlNJIGNvbXBpbGVyLCBvYnRhaW4gY29tcGlsZXIgb3B0aW9ucyB0aGF0Ci1kbmwgd2lsbCBtYWtlIGl0IHJlY29nbml6ZSBwcm90b3R5cGVzLiAgV2UnbGwgZG8gcHJlcHJvY2Vzc29yIGNoZWNrcyBpbiBvdGhlcgotZG5sIG1hY3Jvcywgc2luY2UgdG9vbHMgc3VjaCBhcyB1bnByb3RvIGNhbiBmYWtlIHByb3RvdHlwZXMsIGJ1dCBvbmx5IHBhcnQgb2YKLWRubCB0aGUgcHJlcHJvY2Vzc29yLgotQUNfREVGVU4oW0NGX0FOU0lfQ0NfUkVRRF0sCi1bQUNfUkVRVUlSRShbQ0ZfQU5TSV9DQ19DSEVDS10pCi1pZiB0ZXN0ICIkY2ZfY3ZfYW5zaV9jYyIgPSAibm8iOyB0aGVuCi0JQUNfTVNHX0VSUk9SKAotW1lvdXIgY29tcGlsZXIgZG9lcyBub3QgYXBwZWFyIHRvIHJlY29nbml6ZSBwcm90b3R5cGVzLgotWW91IGhhdmUgdGhlIGZvbGxvd2luZyBjaG9pY2VzOgotCWEuIGFkanVzdCB5b3VyIGNvbXBpbGVyIG9wdGlvbnMKLQliLiBnZXQgYW4gdXAtdG8tZGF0ZSBjb21waWxlcgotCWMuIHVzZSBhIHdyYXBwZXIgc3VjaCBhcyB1bnByb3RvXSkKLWZpCi1dKWRubAotZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0FXS19CSUdfUFJJTlRGIHZlcnNpb246IDIgdXBkYXRlZDogMjAwOC8xMC8wNCAxNzoxNjoxOAorZG5sIENGX0FXS19CSUdfUFJJTlRGIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgaWYgYXdrIGNhbiBoYW5kbGUgYmlnIHN0cmluZ3MgdXNpbmcgcHJpbnRmLiAgU29tZSBvbGRlciB2ZXJzaW9ucyBvZgogZG5sIGF3ayBjaG9rZSBvbiBsYXJnZSBzdHJpbmdzIHBhc3NlZCB2aWEgIiVzIi4KQEAgLTM2MiwxOSArNDg1LDE5IEBACiBkbmwgJDIgPSB2YXJpYWJsZSB0byBzZXQgd2l0aCByZXN1bHQKIEFDX0RFRlVOKFtDRl9BV0tfQklHX1BSSU5URl0sCiBbCi0gICAgY2FzZSB4JEFXSyBpbiAjKHZpCi0gICAgeCkKLSAgICAgICAgZXZhbCAkMj1ubwotICAgICAgICA7OwotICAgICopICModmkKLSAgICAgICAgaWYgKCAke0FXS30gJ0JFR0lOIHsgeHggPSAieCI7IHdoaWxlIChsZW5ndGgoeHgpIDwgJDEpIHsgeHggPSB4eCAieCI7IH07IHByaW50ZigiJXNcbiIsIHh4KTsgfScgXAotICAgICAgICAgICAgfCAkQVdLICd7IHByaW50ZiAiJWRcbiIsIGxlbmd0aChbJF0wKTsgfScgfCAkQVdLICdCRUdJTiB7IGVxbHM9MDsgcmVjcz0wOyB9IHsgcmVjcysrOyBpZiAoWyRdMCA9PSAxMjAwMCkgZXFscysrOyB9IEVORCB7IGlmIChyZWNzICE9IDEgfHwgZXFscyAhPSAxKSBleGl0IDE7IH0nIDI+L2Rldi9udWxsID4vZGV2L251bGwgKSA7IHRoZW4KLSAgICAgICAgICAgIGV2YWwgJDI9eWVzCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGV2YWwgJDI9bm8KLSAgICAgICAgZmkKLSAgICAgICAgOzsKLSAgICBlc2FjCisJY2FzZSB4JEFXSyBpbgorCSh4KQorCQlldmFsICQyPW5vCisJCTs7CisJKCopCisJCWlmICggJHtBV0t9ICdCRUdJTiB7IHh4ID0gIngiOyB3aGlsZSAobGVuZ3RoKHh4KSA8ICQxKSB7IHh4ID0geHggIngiOyB9OyBwcmludGYoIiVzXG4iLCB4eCk7IH0nIDI+L2Rldi9udWxsIFwKKwkJCXwgJEFXSyAneyBwcmludGYgIiVkXG4iLCBsZW5ndGgoWyRdMCk7IH0nIDI+L2Rldi9udWxsIHwgJEFXSyAnQkVHSU4geyBlcWxzPTA7IHJlY3M9MDsgfSB7IHJlY3MrKzsgaWYgKFskXTAgPT0gMTIwMDApIGVxbHMrKzsgfSBFTkQgeyBpZiAocmVjcyAhPSAxIHx8IGVxbHMgIT0gMSkgZXhpdCAxOyB9JyAyPi9kZXYvbnVsbCA+L2Rldi9udWxsICkgOyB0aGVuCisJCQlldmFsICQyPXllcworCQllbHNlCisJCQlldmFsICQyPW5vCisJCWZpCisJCTs7CisJZXNhYwogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9CT09MX0RFQ0wgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDA0LzAxLzMwIDE1OjUxOjE4CkBAIC00MjQsNyArNTQ3LDcgQEAKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0JPT0xfU0laRSB2ZXJzaW9uOiAxMiB1cGRhdGVkOiAyMDA2LzEyLzE2IDEyOjMzOjMwCitkbmwgQ0ZfQk9PTF9TSVpFIHZlcnNpb246IDE0IHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKIGRubCAtLS0tLS0tLS0tLS0KIGRubCBUZXN0IGZvciB0aGUgc2l6ZSBvZiAnYm9vbCcgaW4gdGhlIGNvbmZpZ3VyZWQgQysrIGNvbXBpbGVyIChlLmcuLCBhIHR5cGUpLgogZG5sIERvbid0IGJvdGhlciBsb29raW5nIGZvciBib29sLmgsIHNpbmNlIGl0J3MgYmVlbiBkZXByZWNhdGVkLgpAQCAtNDU4LDcgKzU4MSw3IEBACiAKICNlbmRpZgogCi1tYWluKCkKK2ludCBtYWluKCkKIHsKIAlGSUxFICpmcCA9IGZvcGVuKCJjZl90ZXN0Lm91dCIsICJ3Iik7CiAJaWYgKGZwICE9IDApIHsKQEAgLTQ4NCwxNSArNjA3LDE1IEBACiAJcm0gLWYgY2ZfdGVzdC5vdXQKIEFDX01TR19SRVNVTFQoJGNmX2N2X3R5cGVfb2ZfYm9vbCkKIGlmIHRlc3QgIiRjZl9jdl90eXBlX29mX2Jvb2wiID0gdW5rbm93biA7IHRoZW4KLQljYXNlIC4kTkNVUlNFU19CT09MIGluICModmkKLQkuYXV0b3wuKSBOQ1VSU0VTX0JPT0w9dW5zaWduZWQ7OworCWNhc2UgLiROQ1VSU0VTX0JPT0wgaW4KKwkoLmF1dG98LikgTkNVUlNFU19CT09MPXVuc2lnbmVkOzsKIAllc2FjCiAJQUNfTVNHX1dBUk4oQXNzdW1pbmcgJE5DVVJTRVNfQk9PTCBmb3IgdHlwZSBvZiBib29sKQogCWNmX2N2X3R5cGVfb2ZfYm9vbD0kTkNVUlNFU19CT09MCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9CVUlMRF9DQyB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMDYvMTAvMTQgMTU6MjM6MTUKK2RubCBDRl9CVUlMRF9DQyB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTU6MzE6NTUKIGRubCAtLS0tLS0tLS0tLQogZG5sIElmIHdlJ3JlIGNyb3NzLWNvbXBpbGluZywgYWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHRvb2xzIGFuZCB0aGVpcgogZG5sIG9wdGlvbnMuICBUaGUgY29uZmlndXJlIHNjcmlwdCBpcyBvcmllbnRlZCB0b3dhcmQgaWRlbnRpZnlpbmcgdGhlIGhvc3QKQEAgLTUwMiw3ICs2MjUsOCBAQAogZG5sICQxID0gZGVmYXVsdCBmb3IgJENQUEZMQUdTCiBkbmwgJDIgPSBkZWZhdWx0IGZvciAkTElCUwogQUNfREVGVU4oW0NGX0JVSUxEX0NDXSxbCi1BQ19SRVFVSVJFKFtDRl9QUk9HX0VYVF0pCitDRl9BQ1ZFUlNJT05fQ0hFQ0soMi41MiwsCisJW0FDX1JFUVVJUkUoW0NGX1BST0dfRVhUXSldKQogaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgOyB0aGVuCiAKIAkjIGRlZmF1bHRzIHRoYXQgd2UgbWlnaHQgd2FudCB0byBvdmVycmlkZQpAQCAtNTgzLDcgKzcwNywzMyBAQAogQUNfU1VCU1QoQlVJTERfT0JKRVhUKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9DRkdfREVGQVVMVFMgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDA1LzA5LzI0IDE2OjE1OjAwCitkbmwgQ0ZfQ0NfRU5WX0ZMQUdTIHZlcnNpb246IDIgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciB1c2VyJ3MgZW52aXJvbm1lbnQtYnJlYWthZ2UgYnkgc3R1ZmZpbmcgQ0ZMQUdTL0NQUEZMQUdTIGNvbnRlbnQKK2RubCBpbnRvIENDLiAgVGhpcyB3aWxsIG5vdCBoZWxwIHdpdGggYnJva2VuIHNjcmlwdHMgdGhhdCB3cmFwIHRoZSBjb21waWxlciB3aXRoCitkbmwgb3B0aW9ucywgYnV0IGVsaW1pbmF0ZXMgYSBtb3JlIGNvbW1vbiBjYXRlZ29yeSBvZiB1c2VyIGNvbmZ1c2lvbi4KK0FDX0RFRlVOKFtDRl9DQ19FTlZfRkxBR1NdLAorWworIyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gZGVmaW5lZCBieSBBQ19QUk9HX0NDCis6ICR7Q0M6PWNjfQorCitBQ19NU0dfQ0hFQ0tJTkcoXCRDQyB2YXJpYWJsZSkKK2Nhc2UgIiRDQyIgaW4KKygqW1tcIFwJXV0tW1tJVURdXSopCisJQUNfTVNHX1JFU1VMVChicm9rZW4pCisJQUNfTVNHX1dBUk4oeW91ciBlbnZpcm9ubWVudCBtaXN1c2VzIHRoZSBDQyB2YXJpYWJsZSB0byBob2xkIENGTEFHUy9DUFBGTEFHUyBvcHRpb25zKQorCSMgaHVtb3IgaGltLi4uCisJY2ZfZmxhZ3M9YGVjaG8gIiRDQyIgfCBzZWQgLWUgJ3MvXltbXiAJXV0qW1sgCV1dLy8nYAorCUNDPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL1tbIAldXS4qLy8nYAorCUNGX0FERF9DRkxBR1MoJGNmX2ZsYWdzKQorCTs7CisoKikKKwlBQ19NU0dfUkVTVUxUKG9rKQorCTs7Citlc2FjCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NGR19ERUZBVUxUUyB2ZXJzaW9uOiAxMSB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaW50byB3aGljaCB3ZSdsbCBpbnN0YWxsIG5jdXJzZXMuICBUaGlzCiBkbmwgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIHVzZXIncyBjb21tYW5kLWxpbmUgb3B0aW9ucy4gIFRoZXJlJ3MgdHdvIGl0ZW1zIHRvCkBAIC02MDEsMTAgKzc1MSwxMCBAQAogaWYgdGVzdCAieCRwcmVmaXgiID0gInhOT05FIiA7IHRoZW4KIAljYXNlICIkY2ZfY3Zfc3lzdGVtX25hbWUiIGluCiAJCSMgbm9uLXZlbmRvciBzeXN0ZW1zIGRvbid0IGhhdmUgYSBjb25mbGljdAotCW9wZW5ic2QqfGZyZWVic2QqfGxpbnV4KnxjeWd3aW4qfGsqYnNkKi1nbnUpCisJKG9wZW5ic2QqfGZyZWVic2QqfG1pcmJzZCp8bGludXgqfGN5Z3dpbip8bXN5cyp8aypic2QqLWdudXxtaW5ndyopCiAJCXByZWZpeD0vdXNyCiAJCTs7Ci0JKikJcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAorCSgqKQlwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4CiAJCTs7CiAJZXNhYwogZmkKQEAgLTYzNywzMCArNzg3LDUxIEBACiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9DR0VURU5UIHZlcnNpb246IDMgdXBkYXRlZDogMjAwMC8wOC8xMiAyMzoxODo1MgorZG5sIENGX0NHRVRFTlQgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDEyLzEwLzA2IDE3OjU2OjEzCiBkbmwgLS0tLS0tLS0tLQogZG5sIENoZWNrIGlmIHRoZSB0ZXJtaW5hbC1jYXBhYmlsaXR5IGRhdGFiYXNlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlLiAgSWYgbm90LAogZG5sIG5jdXJzZXMgaGFzIGEgbXVjaC1yZWR1Y2VkIHZlcnNpb24uCiBBQ19ERUZVTihbQ0ZfQ0dFVEVOVF0sWwotQUNfTVNHX0NIRUNLSU5HKGZvciB0ZXJtaW5hbC1jYXBhYmlsaXR5IGRhdGFiYXNlIGZ1bmN0aW9ucykKLUFDX0NBQ0hFX1ZBTChjZl9jdl9jZ2V0ZW50LFsKK0FDX0NBQ0hFX0NIRUNLKGZvciB0ZXJtaW5hbC1jYXBhYmlsaXR5IGRhdGFiYXNlIGZ1bmN0aW9ucyxjZl9jdl9jZ2V0ZW50LFsKIEFDX1RSWV9MSU5LKFsKICNpbmNsdWRlIDxzdGRsaWIuaD5dLFsKIAljaGFyIHRlbXBbMTI4XTsKIAljaGFyICpidWYgPSB0ZW1wOwogCWNoYXIgKmRiX2FycmF5ID0gdGVtcDsKLQljZ2V0ZW50KCZidWYsIC8qIGludCAqLCAqLyAmZGJfYXJyYXksICJ2dDEwMCIpOworCWNnZXRlbnQoJmJ1ZiwgJmRiX2FycmF5LCAidnQxMDAiKTsKIAljZ2V0Y2FwKGJ1ZiwgInRjIiwgJz0nKTsKIAljZ2V0bWF0Y2goYnVmLCAidGMiKTsKIAldLAogCVtjZl9jdl9jZ2V0ZW50PXllc10sCiAJW2NmX2N2X2NnZXRlbnQ9bm9dKQogXSkKLUFDX01TR19SRVNVTFQoJGNmX2N2X2NnZXRlbnQpCi10ZXN0ICIkY2ZfY3ZfY2dldGVudCIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfQlNEX0NHRVRFTlQpCisKK2lmIHRlc3QgIiRjZl9jdl9jZ2V0ZW50IiA9IHllcwordGhlbgorCUFDX0RFRklORShIQVZFX0JTRF9DR0VURU5ULDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgQlNEIGNnZXRlbnRdKQorQUNfQ0FDSEVfQ0hFQ0soaWYgY2dldGVudCB1c2VzIGNvbnN0IHBhcmFtZXRlcixjZl9jdl9jZ2V0ZW50X2NvbnN0LFsKK0FDX1RSWV9MSU5LKFsKKyNpbmNsdWRlIDxzdGRsaWIuaD5dLFsKKwljaGFyIHRlbXBbMTI4XTsKKwljaGFyICpidWYgPSB0ZW1wOworI2lmbmRlZiBfTkVUQlNEX1NPVVJDRQkJCS8qIGdpdmVuLCBzaW5jZSBBcHJpbCAyMDA0IGluIHN0ZGxpYi5oICovCisJY29uc3QgY2hhciAqZGJfYXJyYXkgPSB0ZW1wOworCWNnZXRlbnQoJmJ1ZiwgJmRiX2FycmF5LCAidnQxMDAiKTsKKyNlbmRpZgorCWNnZXRjYXAoYnVmLCAidGMiLCAnPScpOworCWNnZXRtYXRjaChidWYsICJ0YyIpOworCV0sCisJW2NmX2N2X2NnZXRlbnRfY29uc3Q9eWVzXSwKKwlbY2ZfY3ZfY2dldGVudF9jb25zdD1ub10pCitdKQorCWlmIHRlc3QgIiRjZl9jdl9jZ2V0ZW50X2NvbnN0IiA9IHllcworCXRoZW4KKwkJQUNfREVGSU5FX1VOUVVPVEVEKENHRVRFTlRfQ09OU1QsY29uc3QsW0RlZmluZSB0byBjb25zdCBpZiBuZWVkZWQgZm9yIHNvbWUgQlNEIGNnZXRlbnQgdmFyaWF0aW9uc10pCisJZmkKK2ZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0NIRUNLX0NBQ0hFIHZlcnNpb246IDExIHVwZGF0ZWQ6IDIwMDgvMDMvMjMgMTQ6NDU6NTkKK2RubCBDRl9DSEVDS19DQUNIRSB2ZXJzaW9uOiAxMiB1cGRhdGVkOiAyMDEyLzEwLzAyIDIwOjU1OjAzCiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB3ZSdyZSBhY2NpZGVudGFsbHkgdXNpbmcgYSBjYWNoZSBmcm9tIGEgZGlmZmVyZW50IG1hY2hpbmUuCiBkbmwgRGVyaXZlIHRoZSBzeXN0ZW0gbmFtZSwgYXMgYSBjaGVjayBmb3IgcmV1c2luZyB0aGUgYXV0b2NvbmYgY2FjaGUuCkBAIC02ODMsNyArODU0LDcgQEAKIAkJc3lzdGVtX25hbWU9ImAoaG9zdG5hbWUpIDI+L2Rldi9udWxsYCIKIAlmaQogZmkKLXRlc3QgLW4gIiRzeXN0ZW1fbmFtZSIgJiYgQUNfREVGSU5FX1VOUVVPVEVEKFNZU1RFTV9OQU1FLCIkc3lzdGVtX25hbWUiKQordGVzdCAtbiAiJHN5c3RlbV9uYW1lIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoU1lTVEVNX05BTUUsIiRzeXN0ZW1fbmFtZSIsW0RlZmluZSB0byB0aGUgc3lzdGVtIG5hbWUuXSkKIEFDX0NBQ0hFX1ZBTChjZl9jdl9zeXN0ZW1fbmFtZSxbY2ZfY3Zfc3lzdGVtX25hbWU9IiRzeXN0ZW1fbmFtZSJdKQogCiB0ZXN0IC16ICIkc3lzdGVtX25hbWUiICYmIHN5c3RlbV9uYW1lPSIkY2ZfY3Zfc3lzdGVtX25hbWUiCkBAIC02OTUsNyArODY2LDcgQEAKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0NIRUNLX0VSUk5PIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMDgvMDgvMjIgMTY6MzM6MjIKK2RubCBDRl9DSEVDS19FUlJOTyB2ZXJzaW9uOiAxMiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3IgZGF0YSB0aGF0IGlzIHVzdWFsbHkgZGVjbGFyZWQgaW4gPHN0ZGlvLmg+IG9yIDxlcnJuby5oPiwgZS5nLiwKIGRubCB0aGUgJ2Vycm5vJyB2YXJpYWJsZS4gIERlZmluZSBhIERFQ0xfeHh4IHN5bWJvbCBpZiB3ZSBtdXN0IGRlY2xhcmUgaXQKQEAgLTcwNiwyOCArODc3LDI4IEBACiBBQ19ERUZVTihbQ0ZfQ0hFQ0tfRVJSTk9dLAogWwogQUNfQ0FDSEVfQ0hFQ0soaWYgZXh0ZXJuYWwgJDEgaXMgZGVjbGFyZWQsIGNmX2N2X2RjbF8kMSxbCi0gICAgQUNfVFJZX0NPTVBJTEUoWworCUFDX1RSWV9DT01QSUxFKFsKICNpZmRlZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPGVycm5vLmg+IF0sCi0gICAgaWZlbHNlKCQyLCxpbnQsJDIpIHggPSAoaWZlbHNlKCQyLCxpbnQsJDIpKSAkMSwKLSAgICBbY2ZfY3ZfZGNsXyQxPXllc10sCi0gICAgW2NmX2N2X2RjbF8kMT1ub10pCisJaWZlbHNlKFskMl0sLGludCxbJDJdKSB4ID0gKGlmZWxzZShbJDJdLCxpbnQsWyQyXSkpICQxLAorCVtjZl9jdl9kY2xfJDE9eWVzXSwKKwlbY2ZfY3ZfZGNsXyQxPW5vXSkKIF0pCiAKIGlmIHRlc3QgIiRjZl9jdl9kY2xfJDEiID0gbm8gOyB0aGVuCi0gICAgQ0ZfVVBQRVIoY2ZfcmVzdWx0LGRlY2xfJDEpCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKCRjZl9yZXN1bHQpCisJQ0ZfVVBQRVIoY2ZfcmVzdWx0LGRlY2xfJDEpCisJQUNfREVGSU5FX1VOUVVPVEVEKCRjZl9yZXN1bHQpCiBmaQogCiAjIEl0J3MgcG9zc2libGUgKGZvciBuZWFyLVVOSVggY2xvbmVzKSB0aGF0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QKLUNGX0NIRUNLX0VYVEVSTl9EQVRBKCQxLGlmZWxzZSgkMiwsaW50LCQyKSkKK0NGX0NIRUNLX0VYVEVSTl9EQVRBKCQxLGlmZWxzZShbJDJdLCxpbnQsWyQyXSkpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0NIRUNLX0VYVEVSTl9EQVRBIHZlcnNpb246IDMgdXBkYXRlZDogMjAwMS8xMi8zMCAxODowMzoyMworZG5sIENGX0NIRUNLX0VYVEVSTl9EQVRBIHZlcnNpb246IDQgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBleHRlcm5hbCBkYXRhIGluIHRoZSBjdXJyZW50IHNldCBvZiBsaWJyYXJpZXMuICBJZgogZG5sIHdlIGNhbiBtb2RpZnkgaXQsIGl0J3MgcmVhbCBlbm91Z2guCkBAIC03MzYsMjMgKzkwNywyMyBAQAogQUNfREVGVU4oW0NGX0NIRUNLX0VYVEVSTl9EQVRBXSwKIFsKIEFDX0NBQ0hFX0NIRUNLKGlmIGV4dGVybmFsICQxIGV4aXN0cywgY2ZfY3ZfaGF2ZV8kMSxbCi0gICAgQUNfVFJZX0xJTksoWworCUFDX1RSWV9MSU5LKFsKICN1bmRlZiAkMQogZXh0ZXJuICQyICQxOwogXSwKLSAgICBbJDEgPSAyXSwKLSAgICBbY2ZfY3ZfaGF2ZV8kMT15ZXNdLAotICAgIFtjZl9jdl9oYXZlXyQxPW5vXSkKKwlbJDEgPSAyXSwKKwlbY2ZfY3ZfaGF2ZV8kMT15ZXNdLAorCVtjZl9jdl9oYXZlXyQxPW5vXSkKIF0pCiAKIGlmIHRlc3QgIiRjZl9jdl9oYXZlXyQxIiA9IHllcyA7IHRoZW4KLSAgICBDRl9VUFBFUihjZl9yZXN1bHQsaGF2ZV8kMSkKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoJGNmX3Jlc3VsdCkKKwlDRl9VUFBFUihjZl9yZXN1bHQsaGF2ZV8kMSkKKwlBQ19ERUZJTkVfVU5RVU9URUQoJGNmX3Jlc3VsdCkKIGZpCiAKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfQ0hFQ0tfR1BNX1dHRVRDSCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDcvMDQvMjggMTQ6Mzg6MDYKK2RubCBDRl9DSEVDS19HUE1fV0dFVENIIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMC8wOC8xNCAxODoyNTozNwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiBHUE0gaXMgYWxyZWFkeSBsaW5rZWQgd2l0aCBjdXJzZXMuICBJZiBzbyAtIGFuZCBpZiB0aGUgbGlua2FnZQogZG5sIGlzIG5vdCAid2VhayIgLSB3YXJuIGFib3V0IHRoaXMgYmVjYXVzZSBpdCBjYW4gY3JlYXRlIHByb2JsZW1zIGxpbmtpbmcKQEAgLTc4Niw3ICs5NTcsNyBAQAogCQkJdGVzdCAteiAiJGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2giICYmIGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2g9bm8KIAkJZmkKIAlmaQotCXJtIC1mIGNvbmZ0ZXN0KgorCXJtIC1yZiBjb25mdGVzdCoKIAlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgogZmkKIF0pCkBAIC03OTYsNyArOTY3LDgyIEBACiBmaQogXSldKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0NQUF9QQVJBTV9JTklUIHZlcnNpb246IDQgdXBkYXRlZDogMjAwMS8wNC8wNyAyMjozMToxOAorZG5sIENGX0NIRUNLX0xJQlRPT0xfVkVSU0lPTiB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMTMvMDQvMDYgMTg6MDM6MDkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaG93IHRoZSB2ZXJzaW9uIG9mIGxpYnRvb2wKK2RubAorZG5sIFNhdmUgdGhlIHZlcnNpb24gaW4gYSBjYWNoZSB2YXJpYWJsZSAtIHRoaXMgaXMgbm90IGVudGlyZWx5IGEgZ29vZCB0aGluZywKK2RubCBidXQgdGhlIHZlcnNpb24gc3RyaW5nIGZyb20gbGlidG9vbCBpcyB2ZXJ5IHVnbHksIGFuZCBmb3IgYnVnIHJlcG9ydHMgaXQKK2RubCBtaWdodCBiZSB1c2VmdWwgdG8gaGF2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorQUNfREVGVU4oW0NGX0NIRUNLX0xJQlRPT0xfVkVSU0lPTl0sWworaWYgdGVzdCAtbiAiJExJQlRPT0wiICYmIHRlc3QgIiRMSUJUT09MIiAhPSBub25lCit0aGVuCisJQUNfTVNHX0NIRUNLSU5HKHZlcnNpb24gb2YgJExJQlRPT0wpCisJQ0ZfTElCVE9PTF9WRVJTSU9OCisJQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfbGlidG9vbF92ZXJzaW9uKQorCWlmIHRlc3QgLXogIiRjZl9jdl9saWJ0b29sX3ZlcnNpb24iIDsgdGhlbgorCQlBQ19NU0dfRVJST1IoVGhpcyBpcyBub3QgR05VIGxpYnRvb2wpCisJZmkKK2Vsc2UKKwlBQ19NU0dfRVJST1IoR05VIGxpYnRvb2wgaGFzIG5vdCBiZWVuIGZvdW5kKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ0hFQ0tfV0NIQVJfSCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMTEvMTAvMjkgMTU6MDE6MDUKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgd2NoYXIuaCBjYW4gYmUgdXNlZCwgaS5lLiwgd2l0aG91dCBkZWZpbmluZyBfWE9QRU5fU09VUkNFX0VYVEVOREVECitBQ19ERUZVTihbQ0ZfQ0hFQ0tfV0NIQVJfSF0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgd2NoYXIuaCBjYW4gYmUgdXNlZCBhcyBpcyxjZl9jdl93Y2hhcl9oX29rYXksWworQUNfVFJZX0NPTVBJTEUoCitbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KK10sWworCXdpbnRfdCBmb28gPSAwOworCWludCBiYXIgPSBpc3dwdW5jdChmb28pXSwKKwlbY2ZfY3Zfd2NoYXJfaF9va2F5PXllc10sCisJW2NmX2N2X3djaGFyX2hfb2theT1ub10pXSkKKworaWYgdGVzdCAkY2ZfY3Zfd2NoYXJfaF9va2F5ID0gbm8KK3RoZW4KKwlDRl9QUkVERUZJTkUoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NMQU5HX0NPTVBJTEVSIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMy8xMS8xOSAxOToyMzozNQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgdGhlIGdpdmVuIGNvbXBpbGVyIGlzIHJlYWxseSBjbGFuZy4gIGNsYW5nJ3MgQyBkcml2ZXIgZGVmaW5lcworZG5sIF9fR05VQ19fIChmb29saW5nIHRoZSBjb25maWd1cmUgc2NyaXB0IGludG8gc2V0dGluZyAkR0NDIHRvIHllcykgYnV0IGRvZXMKK2RubCBub3QgaWdub3JlIHNvbWUgZ2NjIG9wdGlvbnMuCitkbmwKK2RubCBUaGlzIG1hY3JvIHNob3VsZCBiZSBydW4gInNvb24iIGFmdGVyIEFDX1BST0dfQ0Mgb3IgQUNfUFJPR19DUExVU1BMVVMsIHRvCitkbmwgZW5zdXJlIHRoYXQgaXQgaXMgbm90IG1pc3Rha2VuIGZvciBnY2MvZysrLiAgSXQgaXMgbm9ybWFsbHkgaW52b2tlZCBmcm9tCitkbmwgdGhlIHdyYXBwZXJzIGZvciBnY2MgYW5kIGcrKyB3YXJuaW5ncy4KK2RubAorZG5sICQxID0gR0NDIChkZWZhdWx0KSBvciBHWFgKK2RubCAkMiA9IENMQU5HX0NPTVBJTEVSIChkZWZhdWx0KQorZG5sICQzID0gQ0ZMQUdTIChkZWZhdWx0KSBvciBDWFhGTEFHUworQUNfREVGVU4oW0NGX0NMQU5HX0NPTVBJTEVSXSxbCitpZmVsc2UoWyQyXSwsQ0xBTkdfQ09NUElMRVIsWyQyXSk9bm8KKworaWYgdGVzdCAiJGlmZWxzZShbJDFdLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgorCUFDX01TR19DSEVDS0lORyhpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBpZmVsc2UoWyQxXSxHWFgsQysrLEMpIGNvbXBpbGVyKQorCWNmX3NhdmVfQ0ZMQUdTPSIkaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKSIKKwlpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pPSIkaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKSAtUXVudXNlZC1hcmd1bWVudHMiCisJQUNfVFJZX0NPTVBJTEUoW10sWworI2lmZGVmIF9fY2xhbmdfXworI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorXSxbaWZlbHNlKFskMl0sLENMQU5HX0NPTVBJTEVSLFskMl0pPXllcworY2Zfc2F2ZV9DRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtUXVudXNlZC1hcmd1bWVudHMiCitdLFtdKQorCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRjZl9zYXZlX0NGTEFHUyIKKwlBQ19NU0dfUkVTVUxUKCRpZmVsc2UoWyQyXSwsQ0xBTkdfQ09NUElMRVIsWyQyXSkpCitmaQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DUFBfUEFSQU1fSU5JVCB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NTY6MTMKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGlmIHRoZSBDKysgY29tcGlsZXIgYWNjZXB0cyBkdXBsaWNhdGUgcGFyYW1ldGVyIGluaXRpYWxpemF0aW9uLiAgVGhpcwogZG5sIGlzIGEgbGF0ZSBmZWF0dXJlIGZvciB0aGUgc3RhbmRhcmQgYW5kIGlzIG5vdCBpbiBzb21lIHJlY2VudCBjb21waWxlcnMKQEAgLTgyMCw3ICsxMDY2LDcgQEAKIHsKIAl2YWx1ZSA9IHg7CiB9Ci12b2lkIG1haW4oKSB7IH0KK2ludCBtYWluKCkgeyB9CiBdLAogCVtjZl9jdl9jcHBfcGFyYW1faW5pdD15ZXNdLAogCVtjZl9jdl9jcHBfcGFyYW1faW5pdD1ub10sCkBAIC04MjgsMTAgKzEwNzQsMTAgQEAKIAlBQ19MQU5HX1JFU1RPUkUKIF0pCiBmaQotdGVzdCAiJGNmX2N2X2NwcF9wYXJhbV9pbml0IiA9IHllcyAmJiBBQ19ERUZJTkUoQ1BQX0hBU19QQVJBTV9JTklUKQordGVzdCAiJGNmX2N2X2NwcF9wYXJhbV9pbml0IiA9IHllcyAmJiBBQ19ERUZJTkUoQ1BQX0hBU19QQVJBTV9JTklULDEsW0RlZmluZSB0byAxIGlmIEMrKyBoYXMgcGFyYW1ldGVyIGluaXRpYWxpemF0aW9uXSkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfQ1BQX1NUQVRJQ19DQVNUIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNS8wNy8yMyAxNjo1Mjo0MworZG5sIENGX0NQUF9TVEFUSUNfQ0FTVCB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTMvMDQvMTMgMTg6MDM6MjEKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB0aGUgQysrIGNvbXBpbGVyIGFjY2VwdHMgc3RhdGljX2Nhc3QgaW4gZ2VuZXJpY3MuICBUaGlzIGFwcGVhcnMgdG8KIGRubCBub3QgYmUgc3VwcG9ydGVkIGluIGcrKyBiZWZvcmUgMy4wCkBAIC04NTMsNyArMTA5OSw3IEBACiAJICAgICAgIGludCBiZWdpbl94ID0gMCkKICAgewogICB9Ci0KKyAgTkN1cnNlc1BhbmVsKCk7CiAgIH5OQ3Vyc2VzUGFuZWwoKTsKIH07CiAKQEAgLTg4NCwxMCArMTEzMCw1OCBAQAogCiBmaQogCi10ZXN0ICIkY2ZfY3ZfY3BwX3N0YXRpY19jYXN0IiA9IHllcyAmJiBBQ19ERUZJTkUoQ1BQX0hBU19TVEFUSUNfQ0FTVCkKK3Rlc3QgIiRjZl9jdl9jcHBfc3RhdGljX2Nhc3QiID0geWVzICYmIEFDX0RFRklORShDUFBfSEFTX1NUQVRJQ19DQVNULDEsW0RlZmluZSB0byAxIGlmIEMrKyBoYXMgc3RhdGljX2Nhc3RdKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9DX0lOTElORSB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMDcvMDgvMTEgMTQ6MDk6NTAKK2RubCBDRl9DWFhfQVJfRkxBR1MgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgU2V0dXAgc3BlY2lhbCBhcmNoaXZlciBmbGFncyBmb3IgZ2l2ZW4gY29tcGlsZXJzLgorQUNfREVGVU4oW0NGX0NYWF9BUl9GTEFHU10sWworCUNYWF9BUj0nJChBUiknCisJQ1hYX0FSRkxBR1M9JyQoQVJGTEFHUyknCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoaXJpeCopCisJICAgIGlmIHRlc3QgIiRHWFgiICE9IHllcyA7IHRoZW4KKwkJQ1hYX0FSPSckKENYWCknCisJCUNYWF9BUkZMQUdTPSctYXIgLW8nCisJICAgIGZpCisJICAgIDs7CisJKHNjbzMuMnY1KikKKwkgICAgQ1hYTERGTEFHUz0iLXUgbWFpbiIKKwkgICAgOzsKKwkoc29sYXJpczIqKQorCSAgICBpZiB0ZXN0ICIkR1hYIiAhPSB5ZXMgOyB0aGVuCisJCUNYWF9BUj0nJChDWFgpJworCQlDWFhfQVJGTEFHUz0nLXhhciAtbycKKwkgICAgZmkKKwkgICAgOzsKKwllc2FjCisJQUNfU1VCU1QoQ1hYTERGTEFHUykKKwlBQ19TVUJTVChDWFhfQVIpCisJQUNfU1VCU1QoQ1hYX0FSRkxBR1MpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NYWF9JT1NUUkVBTV9OQU1FU1BBQ0UgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEyLzEwLzA2IDE3OjU2OjEzCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEZvciBjKyssIGNoZWNrIGlmIGlvc3RyZWFtIHVzZXMgInN0ZDo6IiBuYW1lc3BhY2UuCitBQ19ERUZVTihbQ0ZfQ1hYX0lPU1RSRUFNX05BTUVTUEFDRV0sWworQUNfQ0hFQ0tfSEVBREVSUyhpb3N0cmVhbSkKK2lmIHRlc3QgeCIkYWNfY3ZfaGVhZGVyX2lvc3RyZWFtIiA9IHh5ZXMgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIGlvc3RyZWFtIHVzZXMgc3RkLW5hbWVzcGFjZSkKKwlBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8aW9zdHJlYW0+Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6OmNlcnI7XSxbCitjZXJyIDw8ICJ0ZXN0aW5nIiA8PCBlbmRsOworXSxbY2ZfaW9zdHJlYW1fbmFtZXNwYWNlPXllc10sW2NmX2lvc3RyZWFtX25hbWVzcGFjZT1ub10pCisJQUNfTVNHX1JFU1VMVCgkY2ZfaW9zdHJlYW1fbmFtZXNwYWNlKQorCWlmIHRlc3QgIiRjZl9pb3N0cmVhbV9uYW1lc3BhY2UiID0geWVzIDsgdGhlbgorCQlBQ19ERUZJTkUoSU9TVFJFQU1fTkFNRVNQQUNFLDEsW0RlZmluZSB0byAxIGlmIEMrKyBoYXMgbmFtZXNwYWNlIGlvc3RyZWFtXSkKKwlmaQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ19JTkxJTkUgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAiaW5saW5lIi4KIGRubCAkMSBpcyB0aGUgbmFtZSBvZiBhIHNoZWxsIHZhcmlhYmxlIHRvIHNldCBpZiBpbmxpbmUgaXMgc3VwcG9ydGVkCkBAIC04OTYsMjUgKzExOTAsMjggQEAKIEFDX0NfSU5MSU5FCiAkMT0KIGlmIHRlc3QgIiRhY19jdl9jX2lubGluZSIgIT0gbm8gOyB0aGVuCi0gICQxPWlubGluZQotICBpZiB0ZXN0ICIkSU5URUxfQ09NUElMRVIiID0geWVzCi0gIHRoZW4KLSAgICA6Ci0gIGVsaWYgdGVzdCAiJEdDQyIgPSB5ZXMKLSAgdGhlbgotICAgIEFDX0NBQ0hFX0NIRUNLKGlmIGdjYyBzdXBwb3J0cyBvcHRpb25zIHRvIHR1bmUgaW5saW5pbmcsY2ZfY3ZfZ2NjX2lubGluZSxbCi0gICAgICBjZl9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZT0kMiIKLSAgICAgIEFDX1RSWV9DT01QSUxFKFtpbmxpbmUgaW50IGZvbyh2b2lkKSB7IHJldHVybiAxOyB9XSwKLSAgICAgIFske2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59IGZvbygpXSwKLSAgICAgIFtjZl9jdl9nY2NfaW5saW5lPXllc10sCi0gICAgICBbY2ZfY3ZfZ2NjX2lubGluZT1ub10pCi0gICAgICBDRkxBR1M9JGNmX3NhdmVfQ0ZMQUdTCi0gICAgXSkKLSAgICBpZiB0ZXN0ICIkY2ZfY3ZfZ2NjX2lubGluZSIgPSB5ZXMgOyB0aGVuCi0gICAgICAgIENGX0FERF9DRkxBR1MoWy0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGU9JDJdKQotICAgIGZpCi0gIGZpCisJJDE9aW5saW5lCisJaWYgdGVzdCAiJElOVEVMX0NPTVBJTEVSIiA9IHllcworCXRoZW4KKwkJOgorCWVsaWYgdGVzdCAiJENMQU5HX0NPTVBJTEVSIiA9IHllcworCXRoZW4KKwkJOgorCWVsaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwl0aGVuCisJCUFDX0NBQ0hFX0NIRUNLKGlmICRDQyBzdXBwb3J0cyBvcHRpb25zIHRvIHR1bmUgaW5saW5pbmcsY2ZfY3ZfZ2NjX2lubGluZSxbCisJCWNmX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKwkJQ0ZMQUdTPSIkQ0ZMQUdTIC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGU9JDIiCisJCUFDX1RSWV9DT01QSUxFKFtpbmxpbmUgaW50IGZvbyh2b2lkKSB7IHJldHVybiAxOyB9XSwKKwkJWyR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0gZm9vKCldLAorCQlbY2ZfY3ZfZ2NjX2lubGluZT15ZXNdLAorCQlbY2ZfY3ZfZ2NjX2lubGluZT1ub10pCisJCUNGTEFHUz0kY2Zfc2F2ZV9DRkxBR1MKKwkJXSkKKwkJaWYgdGVzdCAiJGNmX2N2X2djY19pbmxpbmUiID0geWVzIDsgdGhlbgorCQkJQ0ZfQUREX0NGTEFHUyhbLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZT0kMl0pCisJCWZpCisJZmkKIGZpCiBBQ19TVUJTVCgkMSkKIF0pZG5sCkBAIC05NDUsNyArMTI0Miw1NSBAQAogQUNfU1VCU1QoRElSU19UT19NQUtFKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9ESVNBQkxFX0xFQUtTIHZlcnNpb246IDQgdXBkYXRlZDogMjAwNi8xMi8xNiAxNToxMDo0MgorZG5sIENGX0RJU0FCTEVfRUNITyB2ZXJzaW9uOiAxMyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgWW91IGNhbiBhbHdheXMgdXNlICJtYWtlIC1uIiB0byBzZWUgdGhlIGFjdHVhbCBvcHRpb25zLCBidXQgaXQncyBoYXJkIHRvCitkbmwgcGljayBvdXQvYW5hbHl6ZSB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gdGhlIGNvbXBpbGUtbGluZSBpcyBsb25nLgorZG5sCitkbmwgU2V0czoKK2RubAlFQ0hPX0xUIC0gc3ltYm9sIHRvIGNvbnRyb2wgaWYgbGlidG9vbCBpcyB2ZXJib3NlCitkbmwJRUNIT19MRCAtIHN5bWJvbCB0byBwcmVmaXggImNjIC1vIiBsaW5lcworZG5sCVJVTEVfQ0MgLSBzeW1ib2wgdG8gcHV0IGJlZm9yZSBpbXBsaWNpdCAiY2MgLWMiIGxpbmVzIChlLmcuLCAuYy5vKQorZG5sCVNIT1dfQ0MgLSBzeW1ib2wgdG8gcHV0IGJlZm9yZSBleHBsaWNpdCAiY2MgLWMiIGxpbmVzCitkbmwJRUNIT19DQyAtIHN5bWJvbCB0byBwdXQgYmVmb3JlIGFueSAiY2MiIGxpbmUKK2RubAorQUNfREVGVU4oW0NGX0RJU0FCTEVfRUNIT10sWworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIHNlZSBsb25nIGNvbXBpbGluZyBtZXNzYWdlcykKK0NGX0FSR19ESVNBQkxFKGVjaG8sCisJWyAgLS1kaXNhYmxlLWVjaG8gICAgICAgICAgZG8gbm90IGRpc3BsYXkgImNvbXBpbGluZyIgY29tbWFuZHNdLAorCVsKKwlFQ0hPX0xUPSctLXNpbGVudCcKKwlFQ0hPX0xEPSdAZWNobyBsaW5raW5nIFskXUA7JworCVJVTEVfQ0M9J0BlY2hvIGNvbXBpbGluZyBbJF08JworCVNIT1dfQ0M9J0BlY2hvIGNvbXBpbGluZyBbJF1AJworCUVDSE9fQ0M9J0AnCitdLFsKKwlFQ0hPX0xUPScnCisJRUNIT19MRD0nJworCVJVTEVfQ0M9JycKKwlTSE9XX0NDPScnCisJRUNIT19DQz0nJworXSkKK0FDX01TR19SRVNVTFQoJGVuYWJsZXZhbCkKK0FDX1NVQlNUKEVDSE9fTFQpCitBQ19TVUJTVChFQ0hPX0xEKQorQUNfU1VCU1QoUlVMRV9DQykKK0FDX1NVQlNUKFNIT1dfQ0MpCitBQ19TVUJTVChFQ0hPX0NDKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9ESVNBQkxFX0dOQVRfUFJPSkVDVFMgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDE0LzA2LzAxIDExOjM0OjAwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQ0ZfRElTQUJMRV9HTkFUX1BST0pFQ1RTXSxbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgd2Ugd2FudCB0byB1c2UgR05BVCBwcm9qZWN0cykKK0NGX0FSR19ESVNBQkxFKGduYXQtcHJvamVjdHMsCisJWyAgLS1kaXNhYmxlLWduYXQtcHJvamVjdHMgdGVzdDogZGlzYWJsZSBHTkFUIHByb2plY3RzIGV2ZW4gaWYgdXNhYmxlXSwKKwlbZW5hYmxlX2duYXRfcHJvamVjdHM9bm9dLAorCVtlbmFibGVfZ25hdF9wcm9qZWN0cz15ZXNdKQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX2duYXRfcHJvamVjdHMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0RJU0FCTEVfTEVBS1MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEyLzEwLzAyIDIwOjU1OjAzCiBkbmwgLS0tLS0tLS0tLS0tLS0tLQogZG5sIENvbWJpbmUgbm8tbGVhayBjaGVja3Mgd2l0aCB0aGUgbGlicmFyaWVzIG9yIHRvb2xzIHRoYXQgYXJlIHVzZWQgZm9yIHRoZQogZG5sIGNoZWNrcy4KQEAgLTk1OCwyNyArMTMwMywxNTggQEAKIEFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBwZXJmb3JtIG1lbW9yeS1sZWFrIHRlc3RpbmcpCiBBQ19BUkdfRU5BQkxFKGxlYWtzLAogCVsgIC0tZGlzYWJsZS1sZWFrcyAgICAgICAgIHRlc3Q6IGZyZWUgcGVybWFuZW50IG1lbW9yeSwgYW5hbHl6ZSBsZWFrc10sCi0JW3dpdGhfbm9fbGVha3M9eWVzXSwKKwlbaWYgdGVzdCAieCRlbmFibGV2YWwiID0geG5vOyB0aGVuIHdpdGhfbm9fbGVha3M9eWVzOyBlbHNlIHdpdGhfbm9fbGVha3M9bm87IGZpXSwKIAk6ICR7d2l0aF9ub19sZWFrczo9bm99KQogQUNfTVNHX1JFU1VMVCgkd2l0aF9ub19sZWFrcykKIAogaWYgdGVzdCAiJHdpdGhfbm9fbGVha3MiID0geWVzIDsgdGhlbgotCUFDX0RFRklORShOT19MRUFLUykKKwlBQ19ERUZJTkUoTk9fTEVBS1MsMSxbRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nLl0pCisJQUNfREVGSU5FKFlZX05PX0xFQUtTLDEsW0RlZmluZSB0byAxIGlmIHlvdSB3YW50IHRvIHBlcmZvcm0gbWVtb3J5LWxlYWsgdGVzdGluZy5dKQogZmkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRU5BQkxFX1JQQVRIIHZlcnNpb246IDEgdXBkYXRlZDogMjAwOC8wOS8xMyAxMDoyMjozMAorZG5sIENGX0RJU0FCTEVfTElCVE9PTF9WRVJTSU9OIHZlcnNpb246IDMgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSB0aGUgbGlidG9vbCAxLjUgZmVhdHVyZSAiLXZlcnNpb24tbnVtYmVyIiBpbnN0ZWFkIG9mCitkbmwgdGhlIG9sZGVyICItdmVyc2lvbi1pbmZvIiBmZWF0dXJlLiAgVGhlIG5ld2VyIGZlYXR1cmUgYWxsb3dzIHVzIHRvIHVzZQorZG5sIHZlcnNpb24gbnVtYmVyaW5nIG9uIHNoYXJlZCBsaWJyYXJpZXMgd2hpY2ggbWFrZSB0aGVtIGNvbXBhdGlibGUgd2l0aAorZG5sIHZhcmlvdXMgc3lzdGVtcy4KK0FDX0RFRlVOKFtDRl9ESVNBQkxFX0xJQlRPT0xfVkVSU0lPTl0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgbGlidG9vbCAtdmVyc2lvbi1udW1iZXIgc2hvdWxkIGJlIHVzZWQpCitDRl9BUkdfRElTQUJMRShsaWJ0b29sLXZlcnNpb24sCisJWyAgLS1kaXNhYmxlLWxpYnRvb2wtdmVyc2lvbiAgZW5hYmxlIHRvIHVzZSBsaWJ0b29sJ3MgaW5jb21wYXRpYmxlIG5hbWluZyBzY2hlbWVdLAorCVtjZl9saWJ0b29sX3ZlcnNpb249bm9dLAorCVtjZl9saWJ0b29sX3ZlcnNpb249eWVzXSkKK0FDX01TR19SRVNVTFQoJGNmX2xpYnRvb2xfdmVyc2lvbikKKworaWYgdGVzdCAiJGNmX2xpYnRvb2xfdmVyc2lvbiIgPSB5ZXMgOyB0aGVuCisJTElCVE9PTF9WRVJTSU9OPSItdmVyc2lvbi1udW1iZXIiCitlbHNlCisJTElCVE9PTF9WRVJTSU9OPSItdmVyc2lvbi1pbmZvIgorCWNhc2UgIngkVkVSU0lPTiIgaW4KKwkoeCkKKwkJQUNfTVNHX1dBUk4oVkVSU0lPTiB3YXMgbm90IHNldCkKKwkJOzsKKwkoeCouKi4qKQorCQlBQklfVkVSU0lPTj0iJFZFUlNJT04iCisJCUNGX1ZFUkJPU0UoQUJJX1ZFUlNJT046ICRBQklfVkVSU0lPTikKKwkJOzsKKwkoeCo6KjoqKQorCQlBQklfVkVSU0lPTj1gZWNobyAiJFZFUlNJT04iIHwgc2VkIC1lICdzLzovLi9nJ2AKKwkJQ0ZfVkVSQk9TRShBQklfVkVSU0lPTjogJEFCSV9WRVJTSU9OKQorCQk7OworCSgqKQorCQlBQ19NU0dfV0FSTih1bmV4cGVjdGVkIFZFUlNJT04gdmFsdWU6ICRWRVJTSU9OKQorCQk7OworCWVzYWMKK2ZpCisKK0FDX1NVQlNUKEFCSV9WRVJTSU9OKQorQUNfU1VCU1QoTElCVE9PTF9WRVJTSU9OKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9ESVNBQkxFX1JQQVRIX0hBQ0sgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDExLzAyLzEzIDEzOjMxOjMzCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVGhlIHJwYXRoLWhhY2sgbWFrZXMgaXQgc2ltcGxlciB0byBidWlsZCBwcm9ncmFtcywgcGFydGljdWxhcmx5IHdpdGggdGhlCitkbmwgKkJTRCBwb3J0cyB3aGljaCBtYXkgaGF2ZSBlc3NlbnRpYWwgbGlicmFyaWVzIGluIHVudXN1YWwgcGxhY2VzLiAgQnV0IGl0CitkbmwgY2FuIGludGVyZmVyZSB3aXRoIGJ1aWxkaW5nIGFuIGV4ZWN1dGFibGUgZm9yIHRoZSBiYXNlIHN5c3RlbS4gIFVzZSB0aGlzCitkbmwgb3B0aW9uIGluIHRoYXQgY2FzZS4KK0FDX0RFRlVOKFtDRl9ESVNBQkxFX1JQQVRIX0hBQ0tdLAorWworQUNfTVNHX0NIRUNLSU5HKGlmIHJwYXRoLWhhY2sgc2hvdWxkIGJlIGRpc2FibGVkKQorQ0ZfQVJHX0RJU0FCTEUocnBhdGgtaGFjaywKKwlbICAtLWRpc2FibGUtcnBhdGgtaGFjayAgICBkb24ndCBhZGQgcnBhdGggb3B0aW9ucyBmb3IgYWRkaXRpb25hbCBsaWJyYXJpZXNdLAorCVtjZl9kaXNhYmxlX3JwYXRoX2hhY2s9eWVzXSwKKwlbY2ZfZGlzYWJsZV9ycGF0aF9oYWNrPW5vXSkKK0FDX01TR19SRVNVTFQoJGNmX2Rpc2FibGVfcnBhdGhfaGFjaykKK2lmIHRlc3QgIiRjZl9kaXNhYmxlX3JwYXRoX2hhY2siID0gbm8gOyB0aGVuCisJQ0ZfUlBBVEhfSEFDSworZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRU5BQkxFX1BDX0ZJTEVTIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBUaGlzIGlzIHRoZSAiLS1lbmFibGUtcGMtZmlsZXMiIG9wdGlvbiwgd2hpY2ggaXMgYXZhaWxhYmxlIGlmIHRoZXJlIGlzIGEKK2RubCBwa2ctY29uZmlnIGNvbmZpZ3VyYXRpb24gb24gdGhlIGxvY2FsIG1hY2hpbmUuCitBQ19ERUZVTihbQ0ZfRU5BQkxFX1BDX0ZJTEVTXSxbCitBQ19SRVFVSVJFKFtDRl9QS0dfQ09ORklHXSkKK0FDX1JFUVVJUkUoW0NGX1dJVEhfUEtHX0NPTkZJR19MSUJESVJdKQorCitpZiB0ZXN0ICJ4JFBLR19DT05GSUciICE9IHhub25lCit0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIHdlIHNob3VsZCBpbnN0YWxsIC5wYyBmaWxlcyBmb3IgJFBLR19DT05GSUcpCitlbHNlCisJQUNfTVNHX0NIRUNLSU5HKGlmIHdlIHNob3VsZCBpbnN0YWxsIC5wYyBmaWxlcykKK2ZpCisKK0FDX0FSR19FTkFCTEUocGMtZmlsZXMsCisJWyAgLS1lbmFibGUtcGMtZmlsZXMgICAgICAgZ2VuZXJhdGUgYW5kIGluc3RhbGwgLnBjIGZpbGVzIGZvciBwa2ctY29uZmlnXSwKKwlbZW5hYmxlX3BjX2ZpbGVzPSRlbmFibGV2YWxdLAorCVtlbmFibGVfcGNfZmlsZXM9bm9dKQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX3BjX2ZpbGVzKQorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wY19maWxlcyIgIT0geG5vCit0aGVuCisJY2FzZSAieCRQS0dfQ09ORklHX0xJQkRJUiIgaW4KKwkoeG5vfHh5ZXMpCisJCUFDX01TR19XQVJOKG5vIFBLR19DT05GSUdfTElCRElSIHdhcyBmb3VuZCkKKwkJTUFLRV9QQ19GSUxFUz0iIyIKKwkJOzsKKwkoKikKKwkJQ0ZfUEFUSF9TWU5UQVgoUEtHX0NPTkZJR19MSUJESVIpCisJCU1BS0VfUENfRklMRVM9CisJCTs7CisJZXNhYworZWxzZQorCU1BS0VfUENfRklMRVM9IiMiCitmaQorQUNfU1VCU1QoTUFLRV9QQ19GSUxFUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRU5BQkxFX1JQQVRIIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMC8wMy8yNyAxODozOTo0MgogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGlmIHRoZSBycGF0aCBvcHRpb24gc2hvdWxkIGJlIHVzZWQsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUKLWRubCBjZl9jdl9sZF9ycGF0aCBpZiBzby4KK2RubCBjZl9jdl9lbmFibGVfcnBhdGggaWYgc28uCiBBQ19ERUZVTihbQ0ZfRU5BQkxFX1JQQVRIXSwKIFsKIEFDX01TR19DSEVDS0lORyhpZiBycGF0aCBvcHRpb24gc2hvdWxkIGJlIHVzZWQpCiBBQ19BUkdfRU5BQkxFKHJwYXRoLAogWyAgLS1lbmFibGUtcnBhdGggICAgICAgICAgdXNlIHJwYXRoIG9wdGlvbiB3aGVuIGdlbmVyYXRpbmcgc2hhcmVkIGxpYnJhcmllc10sCi1bY2ZfY3ZfbGRfcnBhdGg9JGVuYWJsZXZhbF0sCi1bY2ZfY3ZfbGRfcnBhdGg9bm9dKQotQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfbGRfcnBhdGgpCitbY2ZfY3ZfZW5hYmxlX3JwYXRoPSRlbmFibGV2YWxdLAorW2NmX2N2X2VuYWJsZV9ycGF0aD1ub10pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9lbmFibGVfcnBhdGgpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0VOQUJMRV9TVFJJTkdfSEFDS1MgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEzLzAxLzI2IDE2OjI2OjEyCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIE9uIGEgZmV3IHBsYXRmb3JtcywgdGhlIGNvbXBpbGVyIGFuZC9vciBsb2FkZXIgbmFncyB3aXRoIHVudHJ1dGhmdWwKK2RubCBjb21tZW50cyBzdGF0aW5nIHRoYXQgIm1vc3QiIHVzZXMgb2Ygc3RyY2F0L3N0cmNweS9zcHJpbnRmIGFyZSBpbmNvcnJlY3QsCitkbmwgYW5kIGltcGx5aW5nIHRoYXQgbW9zdCB1c2VzIG9mIHRoZSByZWNvbW1lbmRlZCBhbHRlcm5hdGl2ZXMgYXJlIGNvcnJlY3QuCitkbmwKK2RubCBGYWN0dWFsbHkgc3BlYWtpbmcsIG5vIG9uZSBoYXMgYWN0dWFsbHkgY291bnRlZCB0aGUgbnVtYmVyIG9mIHVzZXMgb2YgdGhlc2UKK2RubCBmdW5jdGlvbnMgdmVyc3VzIHRoZSB0b3RhbCBvZiBpbmNvcnJlY3QgdXNlcy4gIFNhbXBsZXMgb2YgYSBmZXcgdGhvdXNhbmQKK2RubCBpbnN0YW5jZXMgYXJlIG1lYW5pbmdsZXNzIGNvbXBhcmVkIHRvIHRoZSBodW5kcmVkcyBvZiBtaWxsaW9ucyBvZiBsaW5lcyBvZgorZG5sIGV4aXN0aW5nIEMgY29kZS4KK2RubAorZG5sIHN0cmxjYXQvc3RybGNweSBhcmUgKGFzIG9mIDIwMTIpIG5vbi1zdGFuZGFyZCwgYW5kIGFyZSBhdmFpbGFibGUgb24gc29tZQorZG5sIHBsYXRmb3JtcywgaW4gaW1wbGVtZW50YXRpb25zIG9mIHZhcnlpbmcgcXVhbGl0eS4gIExpa2V3aXNlLCBzbnByaW50ZiBpcworZG5sIHN0YW5kYXJkIC0gYnV0IGV2b2x2ZWQgdGhyb3VnaCBwaGFzZXMsIGFuZCBvbGRlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGxpa2VseQorZG5sIHRvIHlpZWxkIHN1cnByaXNpbmcgcmVzdWx0cywgYXMgZG9jdW1lbnRlZCBpbiBtYW5wYWdlcyBvbiB2YXJpb3VzIHN5c3RlbXMuCitBQ19ERUZVTihbQ0ZfRU5BQkxFX1NUUklOR19IQUNLU10sCitbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gd29yayBhcm91bmQgYm9ndXMgY29tcGlsZXIvbG9hZGVyIHdhcm5pbmdzKQorQUNfQVJHX0VOQUJMRShzdHJpbmctaGFja3MsCisJWyAgLS1lbmFibGUtc3RyaW5nLWhhY2tzICAgd29yayBhcm91bmQgYm9ndXMgY29tcGlsZXIvbG9hZGVyIHdhcm5pbmdzXSwKKwlbd2l0aF9zdHJpbmdfaGFja3M9JGVuYWJsZXZhbF0sCisJW3dpdGhfc3RyaW5nX2hhY2tzPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfc3RyaW5nX2hhY2tzKQorCitpZiB0ZXN0ICJ4JHdpdGhfc3RyaW5nX2hhY2tzIiA9ICJ4eWVzIjsgdGhlbgorIAlBQ19ERUZJTkUoVVNFX1NUUklOR19IQUNLUywxLFtEZWZpbmUgdG8gMSB0byB3b3JrIGFyb3VuZCBib2d1cyBjb21waWxlci9sb2FkZXIgd2FybmluZ3NdKQorCUFDX01TR19XQVJOKGVuYWJsaW5nIHN0cmluZy1oYWNrcyB0byB3b3JrIGFyb3VuZCBib2d1cyBjb21waWxlci9sb2FkZXIgd2FybmluZ3MpCisJQUNfQ0hFQ0tfRlVOQ1MoIHN0cmxjYXQgc3RybGNweSBzbnByaW50ZiApCitmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9FUlJOTyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDE5OTcvMTEvMzAgMTI6NDQ6MzkKQEAgLTk4OSw3ICsxNDY1LDcgQEAKIENGX0NIRUNLX0VSUk5PKGVycm5vKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9FVElQX0RFRklORVMgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDAzLzAzLzIyIDE5OjEzOjQzCitkbmwgQ0ZfRVRJUF9ERUZJTkVTIHZlcnNpb246IDUgdXBkYXRlZDogMjAxMi8wMi8xOCAxNzo1MTowNwogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIFRlc3QgZm9yIGNvbmZsaWN0aW5nIGRlZmluaXRpb25zIG9mIGV4Y2VwdGlvbiBpbiBnY2MgMi44LjAsIGV0Yy4sIGJldHdlZW4KIGRubCBtYXRoLmggYW5kIGJ1aWx0aW4uaCwgb25seSBmb3IgbmN1cnNlcwpAQCAtOTk4LDExICsxNDc0LDE3IEBACiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHNwZWNpYWwgZGVmaW5lcyBuZWVkZWQgZm9yIGV0aXAuaCkKIGNmX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKIGNmX3Jlc3VsdD0ibm9uZSIKKworIyBldGlwLmggaW5jbHVkZXMgbmN1cnNlcy5oIHdoaWNoIGluY2x1ZGVzIG5jdXJzZXNfZGxsLmgKKyMgQnV0IG5jdXJzZXNfZGxsLmggaXMgZ2VuZXJhdGVkIC0gZml4IGhlcmUuCit0ZXN0IC1kIGluY2x1ZGUgfHwgbWtkaXIgaW5jbHVkZQordGVzdCAtZiBpbmNsdWRlL25jdXJzZXNfZGxsLmggfHwgc2VkIC1lICdzL0BOQ1VSU0VTX1dSQVBfUFJFRklYQC8nJE5DVVJTRVNfV1JBUF9QUkVGSVgnL2cnICR7c3JjZGlyfS9pbmNsdWRlL25jdXJzZXNfZGxsLmguaW4gPmluY2x1ZGUvbmN1cnNlc19kbGwuaAorCiBmb3IgY2ZfbWF0aCBpbiAiIiBNQVRIX0gKIGRvCiBmb3IgY2ZfZXhjcCBpbiAiIiBNQVRIX0VYQ0VQVElPTgogZG8KLQlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgLUkke3NyY2Rpcn0vYysrIC1JJHtzcmNkaXJ9L21lbnUgLUkke3NyY2Rpcn0vaW5jbHVkZSIKKwlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgLUkke3NyY2Rpcn0vYysrIC1JJHtzcmNkaXJ9L21lbnUgLUlpbmNsdWRlIC1JJHtzcmNkaXJ9L2luY2x1ZGUiCiAJdGVzdCAtbiAiJGNmX21hdGgiICYmIENYWEZMQUdTPSIkQ1hYRkxBR1MgLURFVElQX05FRURTXyR7Y2ZfbWF0aH0iCiAJdGVzdCAtbiAiJGNmX2V4Y3AiICYmIENYWEZMQUdTPSIkQ1hYRkxBR1MgLURFVElQX05FRURTXyR7Y2ZfZXhjcH0iCiBBQ19UUllfQ09NUElMRShbCkBAIC0xMDExLDcgKzE0OTMsNyBAQAogCXRlc3QgLW4gIiRjZl9tYXRoIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoRVRJUF9ORUVEU18ke2NmX21hdGh9KQogCXRlc3QgLW4gIiRjZl9leGNwIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoRVRJUF9ORUVEU18ke2NmX2V4Y3B9KQogCWNmX3Jlc3VsdD0iJGNmX21hdGggJGNmX2V4Y3AiCi0JYnJlYWsKKwlicmVhayAyCiBdLFtdKQogZG9uZQogZG9uZQpAQCAtMTAxOSw3ICsxNTAxLDcgQEAKIENYWEZMQUdTPSIkY2Zfc2F2ZV9DWFhGTEFHUyIKIF0pCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRklORF9MSU5LQUdFIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMDcvMDcvMjkgMjA6MTM6NTMKK2RubCBDRl9GSU5EX0xJTktBR0UgdmVyc2lvbjogMjAgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIEZpbmQgYSBsaWJyYXJ5IChzcGVjaWZpY2FsbHkgdGhlIGxpbmthZ2UgdXNlZCBpbiB0aGUgY29kZSBmcmFnbWVudCksCiBkbmwgc2VhcmNoaW5nIGZvciBpdCBpZiBpdCBpcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlicmFyeSBwYXRoLgpAQCAtMTA0OCw5MCArMTUzMCwxNzAgQEAKIAogQ0ZfTVNHX0xPRyhbU3RhcnRpbmcgW0ZJTkRfTElOS0FHRV0oJDMsJDYpXSkKIAotQUNfVFJZX0xJTksoWyQxXSxbJDJdLAotICAgIGNmX2N2X2ZpbmRfbGlua2FnZV8kMz15ZXMsWwotICAgIGNmX2N2X2ZpbmRfbGlua2FnZV8kMz1ubworY2Zfc2F2ZV9MSUJTPSIkTElCUyIKIAotICAgIENGX01TR19MT0coW1NlYXJjaGluZyBmb3IgaGVhZGVycyBpbiBbRklORF9MSU5LQUdFXSgkMywkNildKQorQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKKwljZl9jdl9maW5kX2xpbmthZ2VfJDM9eWVzCisJY2ZfY3ZfaGVhZGVyX3BhdGhfJDM9L3Vzci9pbmNsdWRlCisJY2ZfY3ZfbGlicmFyeV9wYXRoXyQzPS91c3IvbGliCitdLFsKIAotICAgIGNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgICBjZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCitMSUJTPSItbCQzICQ3ICRjZl9zYXZlX0xJQlMiCiAKLSAgICBDRl9IRUFERVJfUEFUSChjZl9zZWFyY2gsaWZlbHNlKFskNl0sLFskM10sWyQ2XSkpCi0gICAgZm9yIGNmX2N2X2hlYWRlcl9wYXRoXyQzIGluICRjZl9zZWFyY2gKLSAgICBkbwotICAgICAgaWYgdGVzdCAtZCAkY2ZfY3ZfaGVhZGVyX3BhdGhfJDMgOyB0aGVuCi0gICAgICAgIENGX1ZFUkJPU0UoLi4uIHRlc3RpbmcgJGNmX2N2X2hlYWRlcl9wYXRoXyQzKQotICAgICAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MgLUkkY2ZfY3ZfaGVhZGVyX3BhdGhfJDMiCi0gICAgICAgIEFDX1RSWV9DT01QSUxFKFskMV0sWyQyXSxbCi0gICAgICAgICAgICBDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF8kMykKLSAgICAgICAgICAgIGNmX2N2X2ZpbmRfbGlua2FnZV8kMz1tYXliZQotICAgICAgICAgICAgY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgotICAgICAgICAgICAgYnJlYWtdLFsKLSAgICAgICAgICAgIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLSAgICAgICAgICAgIF0pCi0gICAgICBmaQotICAgIGRvbmUKK0FDX1RSWV9MSU5LKFskMV0sWyQyXSxbCisJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllcworCWNmX2N2X2hlYWRlcl9wYXRoXyQzPS91c3IvaW5jbHVkZQorCWNmX2N2X2xpYnJhcnlfcGF0aF8kMz0vdXNyL2xpYgorCWNmX2N2X2xpYnJhcnlfZmlsZV8kMz0iLWwkMyIKK10sWworCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz1ubworCUxJQlM9IiRjZl9zYXZlX0xJQlMiCiAKLSAgICBpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiA9IG1heWJlIDsgdGhlbgorCUNGX1ZFUkJPU0UoZmluZCBsaW5rYWdlIGZvciAkMyBsaWJyYXJ5KQorCUNGX01TR19MT0coW1NlYXJjaGluZyBmb3IgaGVhZGVycyBpbiBbRklORF9MSU5LQUdFXSgkMywkNildKQogCi0gICAgICBDRl9NU0dfTE9HKFtTZWFyY2hpbmcgZm9yICQzIGxpYnJhcnkgaW4gW0ZJTkRfTElOS0FHRV0oJDMsJDYpXSkKKwljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgogCi0gICAgICBjZl9zYXZlX0xJQlM9IiRMSUJTIgotICAgICAgY2Zfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKwlDRl9IRUFERVJfUEFUSChjZl9zZWFyY2gsaWZlbHNlKFskNl0sLFskM10sWyQ2XSkpCisJZm9yIGNmX2N2X2hlYWRlcl9wYXRoXyQzIGluICRjZl9zZWFyY2gKKwlkbworCQlpZiB0ZXN0IC1kICRjZl9jdl9oZWFkZXJfcGF0aF8kMyA7IHRoZW4KKwkJCUNGX1ZFUkJPU0UoLi4uIHRlc3RpbmcgJGNmX2N2X2hlYWRlcl9wYXRoXyQzKQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIC1JJGNmX2N2X2hlYWRlcl9wYXRoXyQzIgorCQkJQUNfVFJZX0NPTVBJTEUoWyQxXSxbJDJdLFsKKwkJCQlDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF8kMykKKwkJCQljZl9jdl9maW5kX2xpbmthZ2VfJDM9bWF5YmUKKwkJCQljZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCQkJYnJlYWtdLFsKKwkJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQkJXSkKKwkJZmkKKwlkb25lCiAKLSAgICAgIGlmZWxzZShbJDZdLCwsWwotICAgICAgICBDUFBGTEFHUz0iJGNmX3Rlc3RfQ1BQRkxBR1MiCi0gICAgICAgIExJQlM9Ii1sJDMgJDcgJGNmX3NhdmVfTElCUyIKLSAgICAgICAgQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKLSAgICAgICAgICAgIENGX1ZFUkJPU0UoLi4uIGZvdW5kICQzIGxpYnJhcnkgaW4gc3lzdGVtKQotICAgICAgICAgICAgY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllc10pCi0gICAgICAgICAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCi0gICAgICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICAgICAgXSkKKwlpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiA9IG1heWJlIDsgdGhlbgogCi0gICAgICBpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiAhPSB5ZXMgOyB0aGVuCi0gICAgICAgIENGX0xJQlJBUllfUEFUSChjZl9zZWFyY2gsJDMpCi0gICAgICAgIGZvciBjZl9jdl9saWJyYXJ5X3BhdGhfJDMgaW4gJGNmX3NlYXJjaAotICAgICAgICBkbwotICAgICAgICAgIGlmIHRlc3QgLWQgJGNmX2N2X2xpYnJhcnlfcGF0aF8kMyA7IHRoZW4KLSAgICAgICAgICAgIENGX1ZFUkJPU0UoLi4uIHRlc3RpbmcgJGNmX2N2X2xpYnJhcnlfcGF0aF8kMykKLSAgICAgICAgICAgIENQUEZMQUdTPSIkY2ZfdGVzdF9DUFBGTEFHUyIKLSAgICAgICAgICAgIExJQlM9Ii1sJDMgJDcgJGNmX3NhdmVfTElCUyIKLSAgICAgICAgICAgIExERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MgLUwkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzIgotICAgICAgICAgICAgQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKLSAgICAgICAgICAgICAgICBDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBsaWJyYXJ5IGluICRjZl9jdl9saWJyYXJ5X3BhdGhfJDMpCi0gICAgICAgICAgICAgICAgY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllcwotICAgICAgICAgICAgICAgIGNmX2N2X2xpYnJhcnlfZmlsZV8kMz0iLWwkMyIKLSAgICAgICAgICAgICAgICBicmVha10sWwotICAgICAgICAgICAgICAgIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLSAgICAgICAgICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICAgICAgICAgIExERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MiCi0gICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIExJQlM9IiRjZl9zYXZlX0xJQlMiCi0gICAgICAgIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyIKLSAgICAgIGZpCisJCUNGX01TR19MT0coW1NlYXJjaGluZyBmb3IgJDMgbGlicmFyeSBpbiBbRklORF9MSU5LQUdFXSgkMywkNildKQogCi0gICAgZWxzZQotICAgICAgY2ZfY3ZfZmluZF9saW5rYWdlXyQzPW5vCi0gICAgZmkKLSAgICBdLCQ3KQorCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCQljZl9zYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCisJCWlmZWxzZShbJDZdLCwsWworCQlDUFBGTEFHUz0iJGNmX3Rlc3RfQ1BQRkxBR1MiCisJCUxJQlM9Ii1sJDMgJDcgJGNmX3NhdmVfTElCUyIKKwkJQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKKwkJCUNGX1ZFUkJPU0UoLi4uIGZvdW5kICQzIGxpYnJhcnkgaW4gc3lzdGVtKQorCQkJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllc10pCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJXSkKKworCQlpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiAhPSB5ZXMgOyB0aGVuCisJCQlDRl9MSUJSQVJZX1BBVEgoY2Zfc2VhcmNoLCQzKQorCQkJZm9yIGNmX2N2X2xpYnJhcnlfcGF0aF8kMyBpbiAkY2Zfc2VhcmNoCisJCQlkbworCQkJCWlmIHRlc3QgLWQgJGNmX2N2X2xpYnJhcnlfcGF0aF8kMyA7IHRoZW4KKwkJCQkJQ0ZfVkVSQk9TRSguLi4gdGVzdGluZyAkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzKQorCQkJCQlDUFBGTEFHUz0iJGNmX3Rlc3RfQ1BQRkxBR1MiCisJCQkJCUxJQlM9Ii1sJDMgJDcgJGNmX3NhdmVfTElCUyIKKwkJCQkJTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyAtTCRjZl9jdl9saWJyYXJ5X3BhdGhfJDMiCisJCQkJCUFDX1RSWV9MSU5LKFskMV0sWyQyXSxbCisJCQkJCUNGX1ZFUkJPU0UoLi4uIGZvdW5kICQzIGxpYnJhcnkgaW4gJGNmX2N2X2xpYnJhcnlfcGF0aF8kMykKKwkJCQkJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllcworCQkJCQljZl9jdl9saWJyYXJ5X2ZpbGVfJDM9Ii1sJDMiCisJCQkJCWJyZWFrXSxbCisJCQkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCQkJTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyIKKwkJCQkJXSkKKwkJCQlmaQorCQkJZG9uZQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyIKKwkJZmkKKworCWVsc2UKKwkJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPW5vCisJZmkKKwldLCQ3KQorXSkKKworTElCUz0iJGNmX3NhdmVfTElCUyIKIAogaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV8kMyIgPSB5ZXMgOyB0aGVuCiBpZmVsc2UoWyQ0XSwsWwotICBDRl9BRERfSU5DRElSKCRjZl9jdl9oZWFkZXJfcGF0aF8kMykKLSAgQ0ZfQUREX0xJQkRJUigkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzKQotICBMSUJTPSItbCQzICRMSUJTIgorCUNGX0FERF9JTkNESVIoJGNmX2N2X2hlYWRlcl9wYXRoXyQzKQorCUNGX0FERF9MSUJESVIoJGNmX2N2X2xpYnJhcnlfcGF0aF8kMykKKwlDRl9BRERfTElCKCQzKQogXSxbJDRdKQogZWxzZQogaWZlbHNlKFskNV0sLEFDX01TR19XQVJOKENhbm5vdCBmaW5kICQzIGxpYnJhcnkpLFskNV0pCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9GVU5DX0RMU1lNIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNC8wNi8xNiAyMDo1Mjo0NQorZG5sIENGX0ZJTkRfU1VCX0lOQ0RJUiB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBGaW5kIGFuIGluY2x1ZGUtZGlyZWN0b3J5IHdpdGggdGhlIGdpdmVuIGxlYWYtbmFtZS4gIFRoaXMgaXMgdXNlZnVsIGZvcgorZG5sIGV4YW1wbGUgd2l0aCBGcmVlQlNEIHBvcnRzLCB3aGljaCB1c2UgdGhpcyBjb252ZW50aW9uIHRvIGRpc3Rpbmd1aXNoCitkbmwgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHBvcnQuCitBQ19ERUZVTihbQ0ZfRklORF9TVUJfSU5DRElSXSxbCisJQ0ZfU1VCRElSX1BBVEgoY2Zfc2VhcmNoLCQxLGluY2x1ZGUpCisJZm9yIGNmX2l0ZW0gaW4gJGNmX3NlYXJjaAorCWRvCisJCWNhc2UgJGNmX2l0ZW0gaW4KKwkJKCovJDEpCisJCQlDRl9BRERfSU5DRElSKCRjZl9pdGVtKQorCQkJOzsKKwkJZXNhYworCWRvbmUKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRklORF9TVUJfTElCRElSIHZlcnNpb246IDIgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEZpbmQgYSBsaWJyYXJ5LWRpcmVjdG9yeSB3aXRoIHRoZSBnaXZlbiBsZWFmLW5hbWUuICBUaGlzIGlzIHVzZWZ1bCBmb3IKK2RubCBleGFtcGxlIHdpdGggRnJlZUJTRCBwb3J0cywgd2hpY2ggdXNlIHRoaXMgY29udmVudGlvbiB0byBkaXN0aW5ndWlzaAorZG5sIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBwb3J0LgorQUNfREVGVU4oW0NGX0ZJTkRfU1VCX0xJQkRJUl0sWworCUNGX1NVQkRJUl9QQVRIKGNmX3NlYXJjaCwkMSxsaWIpCisJZm9yIGNmX2l0ZW0gaW4gJGNmX3NlYXJjaAorCWRvCisJCWNhc2UgJGNmX2l0ZW0gaW4KKwkJKCovJDEpCisJCQlDRl9BRERfTElCRElSKCRjZl9pdGVtKQorCQkJOzsKKwkJZXNhYworCWRvbmUKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRklYVVBfQURBRkxBR1MgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBtYWtlIEFEQUZMQUdTIGNvbnNpc3RlbnQgd2l0aCBDRkxBR1MKK0FDX0RFRlVOKFtDRl9GSVhVUF9BREFGTEFHU10sWworCUFDX01TR19DSEVDS0lORyhvcHRpbWl6YXRpb24gb3B0aW9ucyBmb3IgQURBRkxBR1MpCisJY2FzZSAiJENGTEFHUyIgaW4KKwkoKi1nKikKKwkJQ0ZfQUREX0FEQUZMQUdTKC1nKQorCQk7OworCWVzYWMKKwljYXNlICIkQ0ZMQUdTIiBpbgorCSgqLU8qKQorCQljZl9PX2ZsYWc9YGVjaG8gIiRDRkxBR1MiIHxzZWQgLWUgJ3MvXi4qLU8vLU8vJyAtZSAncy9bWyAJXV0uKi8vJ2AKKwkJQ0ZfQUREX0FEQUZMQUdTKCRjZl9PX2ZsYWcpCisJCTs7CisJZXNhYworCUFDX01TR19SRVNVTFQoJEFEQUZMQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9GT1JHRVRfVE9PTCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMTMvMDQvMDYgMTg6MDM6MDkKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIEZvcmdldCB0aGF0IHdlIHNhdyB0aGUgZ2l2ZW4gdG9vbC4KK0FDX0RFRlVOKFtDRl9GT1JHRVRfVE9PTF0sWwordW5zZXQgYWNfY3ZfcHJvZ19hY19jdF8kMQordW5zZXQgYWNfY3RfJDEKK3Vuc2V0ICQxCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0ZVTkNfRExTWU0gdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEyLzEwLzA2IDExOjE3OjE1CiBkbmwgLS0tLS0tLS0tLS0tLQogZG5sIFRlc3QgZm9yIGRsc3ltKCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIGxpYmRsLgogZG5sCkBAIC0xMTQ4LDcgKzE3MTAsNyBAQAogCWNmX2hhdmVfbGliZGw9eWVzXSldKQogCiBpZiB0ZXN0ICIkY2ZfaGF2ZV9kbHN5bSIgPSB5ZXMgOyB0aGVuCi0JdGVzdCAiJGNmX2hhdmVfbGliZGwiID0geWVzICYmIExJQlM9Ii1sZGwgJExJQlMiCisJdGVzdCAiJGNmX2hhdmVfbGliZGwiID0geWVzICYmIENGX0FERF9MSUIoZGwpCiAKIAlBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBhYmxlIHRvIGxpbmsgdG8gZGwqKCkgZnVuY3Rpb25zKQogCUFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8ZGxmY24uaD5dLFsKQEAgLTExNTgsNyArMTcyMCw3IEBACiAJCQlkbGNsb3NlKG9iaik7CiAJCQl9CiAJCX1dLFsKLQkJQUNfREVGSU5FKEhBVkVfTElCREwpXSxbCisJCUFDX0RFRklORShIQVZFX0xJQkRMLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgZGwgbGlicmFyeV0pXSxbCiAJCUFDX01TR19FUlJPUihDYW5ub3QgbGluayB0ZXN0IHByb2dyYW0gZm9yIGxpYmRsKV0pCiAJQUNfTVNHX1JFU1VMVChvaykKIGVsc2UKQEAgLTExNjYsNyArMTcyOCw3IEBACiBmaQogXSkKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9GVU5DX01FTU1PVkUgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDA2LzEyLzE2IDEyOjMzOjMwCitkbmwgQ0ZfRlVOQ19NRU1NT1ZFIHZlcnNpb246IDggdXBkYXRlZDogMjAxMi8xMC8wNCAyMDoxMjoyMAogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGZvciBtZW1tb3ZlLCBvciBhIGJjb3B5IHRoYXQgY2FuIGhhbmRsZSBvdmVybGFwcGluZyBjb3B5LiAgSWYgbmVpdGhlcgogZG5sIGlzIGZvdW5kLCBhZGQgb3VyIG93biB2ZXJzaW9uIG9mIG1lbW1vdmUgdG8gdGhlIGxpc3Qgb2Ygb2JqZWN0cy4KQEAgLTExOTEsMTMgKzE3NTMsMTMgQEAKIAkJXSkKIAldLFtjZl9jdl9nb29kX2Jjb3B5PW5vXSkKIAlpZiB0ZXN0ICIkY2ZfY3ZfZ29vZF9iY29weSIgPSB5ZXMgOyB0aGVuCi0JCUFDX0RFRklORShVU0VfT0tfQkNPUFkpCisJCUFDX0RFRklORShVU0VfT0tfQkNPUFksMSxbRGVmaW5lIHRvIDEgdG8gdXNlIGJjb3B5IHdoZW4gbWVtbW92ZSBpcyB1bmF2YWlsYWJsZV0pCiAJZWxzZQotCQlBQ19ERUZJTkUoVVNFX01ZX01FTU1PVkUpCisJCUFDX0RFRklORShVU0VfTVlfTUVNTU9WRSwxLFtEZWZpbmUgdG8gMSB0byB1c2UgcmVwbGFjZW1lbnQgZnVuY3Rpb24gd2hlbiBtZW1tb3ZlIGlzIHVuYXZhaWxhYmxlXSkKIAlmaQogXSldKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0ZVTkNfTkFOT1NMRUVQIHZlcnNpb246IDMgdXBkYXRlZDogMjAwNi8xMi8xNiAxMjozMzozMAorZG5sIENGX0ZVTkNfTkFOT1NMRUVQIHZlcnNpb246IDQgdXBkYXRlZDogMjAxMi8xMC8wNiAxNzo1NjoxMwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiB3b3JrYWJsZSBuYW5vc2xlZXAoKSBmdW5jdGlvbi4gIFNvbWUgc3lzdGVtcywgZS5nLiwKIGRubCBBSVggNC54LCBwcm92aWRlIGEgbm9uLXdvcmtpbmcgdmVyc2lvbi4KQEAgLTEyMjgsMTAgKzE3OTAsMTAgQEAKIAlbY2ZfY3ZfZnVuY19uYW5vc2xlZXA9bm9dLAogCVtjZl9jdl9mdW5jX25hbm9zbGVlcD11bmtub3duXSldKQogCi10ZXN0ICIkY2ZfY3ZfZnVuY19uYW5vc2xlZXAiID0gInllcyIgJiYgQUNfREVGSU5FKEhBVkVfTkFOT1NMRUVQKQordGVzdCAiJGNmX2N2X2Z1bmNfbmFub3NsZWVwIiA9ICJ5ZXMiICYmIEFDX0RFRklORShIQVZFX05BTk9TTEVFUCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIG5hbm9zbGVlcCgpXSkKIF0pCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRlVOQ19PUEVOUFRZIHZlcnNpb246IDIgdXBkYXRlZDogMjAwOC8wNC8xMiAxOTo0OTowMQorZG5sIENGX0ZVTkNfT1BFTlBUWSB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKIGRubCAtLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3Igb3BlbnB0eSgpIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIDxwdHkuaD4gaGVhZGVyLiAgSXQgbWF5IG5lZWQgdGhlCiBkbmwgInV0aWwiIGxpYnJhcnkgYXMgd2VsbC4KQEAgLTEyMzksMzQgKzE4MDEsMzcgQEAKIFsKIEFDX0NIRUNLX0xJQih1dGlsLG9wZW5wdHksY2ZfY3ZfbGliX3V0aWw9eWVzLGNmX2N2X2xpYl91dGlsPW5vKQogQUNfQ0FDSEVfQ0hFQ0soZm9yIG9wZW5wdHkgaGVhZGVyLGNmX2N2X2Z1bmNfb3BlbnB0eSxbCi0gICAgY2Zfc2F2ZV9MSUJTPSIkTElCUyIKLSAgICB0ZXN0ICRjZl9jdl9saWJfdXRpbCA9IHllcyAmJiBMSUJTPSItbHV0aWwgJExJQlMiCi0gICAgZm9yIGNmX2hlYWRlciBpbiBwdHkuaCBsaWJ1dGlsLmggdXRpbC5oCi0gICAgZG8KLSAgICBBQ19UUllfTElOSyhbCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwl0ZXN0ICRjZl9jdl9saWJfdXRpbCA9IHllcyAmJiBDRl9BRERfTElCKHV0aWwpCisJZm9yIGNmX2hlYWRlciBpbiBwdHkuaCBsaWJ1dGlsLmggdXRpbC5oCisJZG8KKwlBQ19UUllfTElOSyhbCiAjaW5jbHVkZSA8JGNmX2hlYWRlcj4KIF0sWwotICAgIGludCB4ID0gb3BlbnB0eSgoaW50ICopMCwgKGludCAqKTAsIChjaGFyICopMCwKLSAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRlcm1pb3MgKikwLCAoc3RydWN0IHdpbnNpemUgKikwKTsKKwlpbnQgeCA9IG9wZW5wdHkoKGludCAqKTAsIChpbnQgKikwLCAoY2hhciAqKTAsCisJCQkJICAgKHN0cnVjdCB0ZXJtaW9zICopMCwgKHN0cnVjdCB3aW5zaXplICopMCk7CiBdLFsKLSAgICAgICAgY2ZfY3ZfZnVuY19vcGVucHR5PSRjZl9oZWFkZXIKLSAgICAgICAgYnJlYWsKKwkJY2ZfY3ZfZnVuY19vcGVucHR5PSRjZl9oZWFkZXIKKwkJYnJlYWsKIF0sWwotICAgICAgICBjZl9jdl9mdW5jX29wZW5wdHk9bm8KKwkJY2ZfY3ZfZnVuY19vcGVucHR5PW5vCiBdKQotICAgIGRvbmUKLSAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCWRvbmUKKwlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgogXSkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRlVOQ19QT0xMIHZlcnNpb246IDQgdXBkYXRlZDogMjAwNi8xMi8xNiAxMjozMzozMAorZG5sIENGX0ZVTkNfUE9MTCB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTIvMTAvMDQgMDU6MjQ6MDcKIGRubCAtLS0tLS0tLS0tLS0KIGRubCBTZWUgaWYgdGhlIHBvbGwgZnVuY3Rpb24gcmVhbGx5IHdvcmtzLiAgU29tZSBwbGF0Zm9ybXMgaGF2ZSBwb2xsKCksIGJ1dAogZG5sIGl0IGRvZXMgbm90IHdvcmsgZm9yIHRlcm1pbmFscyBvciBmaWxlcy4KIEFDX0RFRlVOKFtDRl9GVU5DX1BPTExdLFsKIEFDX0NBQ0hFX0NIRUNLKGlmIHBvbGwgcmVhbGx5IHdvcmtzLGNmX2N2X3dvcmtpbmdfcG9sbCxbCiBBQ19UUllfUlVOKFsKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CiAjaWZkZWYgSEFWRV9QT0xMX0gKICNpbmNsdWRlIDxwb2xsLmg+CiAjZWxzZQpAQCAtMTI3NiwxOSArMTg0MSw0MiBAQAogCXN0cnVjdCBwb2xsZmQgbXlmZHM7CiAJaW50IHJldDsKIAotCW15ZmRzLmZkID0gMDsKKwkvKiBjaGVjayBmb3IgRGFyd2luIGJ1ZyB3aXRoIHJlc3BlY3QgdG8gImRldmljZXMiICovCisJbXlmZHMuZmQgPSBvcGVuKCIvZGV2L251bGwiLCAxKTsJLyogT19XUk9OTFkgKi8KKwlpZiAobXlmZHMuZmQgPCAwKQorCQlteWZkcy5mZCA9IDA7CiAJbXlmZHMuZXZlbnRzID0gUE9MTElOOworCW15ZmRzLnJldmVudHMgPSAwOwogCiAJcmV0ID0gcG9sbCgmbXlmZHMsIDEsIDEwMCk7Ci0JJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShyZXQgIT0gMCk7CisKKwlpZiAocmV0IDwgMCB8fCAobXlmZHMucmV2ZW50cyAmIFBPTExOVkFMKSkgeworCQlyZXQgPSAtMTsKKwl9IGVsc2UgeworCQlpbnQgZmQgPSAwOworCQlpZiAoIWlzYXR0eShmZCkpIHsKKwkJCWZkID0gb3BlbigiL2Rldi90dHkiLCAyKTsJLyogT19SRFdSICovCisJCX0KKworCQlpZiAoZmQgPj0gMCkgeworCQkJLyogYWxzbyBjaGVjayB3aXRoIHN0YW5kYXJkIGlucHV0ICovCisJCQlteWZkcy5mZCA9IGZkOworCQkJbXlmZHMuZXZlbnRzID0gUE9MTElOOworCQkJbXlmZHMucmV2ZW50cyA9IDA7CisJCQlyZXQgPSBwb2xsKCZteWZkcywgMSwgMTAwKTsKKwkJfSBlbHNlIHsKKwkJCXJldCA9IC0xOworCQl9CisJfQorCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0ocmV0IDwgMCk7CiB9XSwKIAlbY2ZfY3Zfd29ya2luZ19wb2xsPXllc10sCiAJW2NmX2N2X3dvcmtpbmdfcG9sbD1ub10sCiAJW2NmX2N2X3dvcmtpbmdfcG9sbD11bmtub3duXSldKQotdGVzdCAiJGNmX2N2X3dvcmtpbmdfcG9sbCIgPSAieWVzIiAmJiBBQ19ERUZJTkUoSEFWRV9XT1JLSU5HX1BPTEwpCit0ZXN0ICIkY2ZfY3Zfd29ya2luZ19wb2xsIiA9ICJ5ZXMiICYmIEFDX0RFRklORShIQVZFX1dPUktJTkdfUE9MTCwxLFtEZWZpbmUgdG8gMSBpZiB0aGUgcG9sbCBmdW5jdGlvbiBzZWVtcyB0byB3b3JrXSkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRlVOQ19URVJNSU9TIHZlcnNpb246IDIgdXBkYXRlZDogMjAwMC8wNy8yMiAyMzozNzoyNAorZG5sIENGX0ZVTkNfVEVSTUlPUyB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NTY6MTMKIGRubCAtLS0tLS0tLS0tLS0tLS0KIGRubCBTb21lIG9sZC9icm9rZW4gdmFyaWF0aW9ucyBkZWZpbmUgdGNnZXRhdHRyKCkgb25seSBhcyBhIG1hY3JvIGluCiBkbmwgdGVybWlvKHMpLmgKQEAgLTEzMTQsMTAgKzE5MDIsMTAgQEAKIHRjZ2V0YXR0cigxLCAmZm9vKTtdLAogW2NmX2N2X2hhdmVfdGNnZXRhdHRyPXllc10sCiBbY2ZfY3ZfaGF2ZV90Y2dldGF0dHI9bm9dKV0pCi10ZXN0ICIkY2ZfY3ZfaGF2ZV90Y2dldGF0dHIiID0geWVzICYmIEFDX0RFRklORShIQVZFX1RDR0VUQVRUUikKK3Rlc3QgIiRjZl9jdl9oYXZlX3RjZ2V0YXR0ciIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfVENHRVRBVFRSLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgdGNnZXRhdHRyXSkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfRlVOQ19WU1NDQU5GIHZlcnNpb246IDMgdXBkYXRlZDogMjAwMS8xMi8xOSAwMDo1MDoxMAorZG5sIENGX0ZVTkNfVlNTQ0FORiB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKIGRubCAtLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3IgdnNzY2FuZigpIGZ1bmN0aW9uLCB3aGljaCBpcyBpbiBjOXggYnV0IGdlbmVyYWxseSBub3QgaW4gZWFybGllcgogZG5sIHZlcnNpb25zIG9mIEMuICBJdCBpcyBpbiB0aGUgR05VIEMgbGlicmFyeSwgYW5kIGNhbiBvZnRlbiBiZSBzaW11bGF0ZWQgYnkKQEAgLTEzMzMsMzYgKzE5MjEsMzYgQEAKIEFDX1RSWV9MSU5LKFsKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPl0sWwotICAgIEZJTEUgc3RyYnVmOwotICAgIGNoYXIgKnN0ciA9ICJmcm9tIjsKKwlGSUxFIHN0cmJ1ZjsKKwljaGFyICpzdHIgPSAiZnJvbSI7CiAKLSAgICBzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOwotICAgIHN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOwotICAgIHN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7Ci0gICAgc3RyYnVmLl9maWxlID0gX05GSUxFOwotICAgIHJldHVybiAodmZzY2FuZigmc3RyYnVmLCAiJWQiLCBhcCkpXSxbY2ZfY3ZfZnVuY192c3NjYW5mPXZmc2NhbmZdLFsKKwlzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOworCXN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOworCXN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7CisJc3RyYnVmLl9maWxlID0gX05GSUxFOworCXJldHVybiAodmZzY2FuZigmc3RyYnVmLCAiJWQiLCBhcCkpXSxbY2ZfY3ZfZnVuY192c3NjYW5mPXZmc2NhbmZdLFsKIEFDX1RSWV9MSU5LKFsKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPl0sWwotICAgIEZJTEUgc3RyYnVmOwotICAgIGNoYXIgKnN0ciA9ICJmcm9tIjsKKwlGSUxFIHN0cmJ1ZjsKKwljaGFyICpzdHIgPSAiZnJvbSI7CiAKLSAgICBzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOwotICAgIHN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOwotICAgIHN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7Ci0gICAgc3RyYnVmLl9maWxlID0gX05GSUxFOwotICAgIHJldHVybiAoX2Rvc2Nhbigmc3RyYnVmLCAiJWQiLCBhcCkpXSxbY2ZfY3ZfZnVuY192c3NjYW5mPV9kb3NjYW5dLFsKKwlzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOworCXN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOworCXN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7CisJc3RyYnVmLl9maWxlID0gX05GSUxFOworCXJldHVybiAoX2Rvc2Nhbigmc3RyYnVmLCAiJWQiLCBhcCkpXSxbY2ZfY3ZfZnVuY192c3NjYW5mPV9kb3NjYW5dLFsKIGNmX2N2X2Z1bmNfdnNzY2FuZj1ub10pXSldKV0pCiAKLWNhc2UgJGNmX2N2X2Z1bmNfdnNzY2FuZiBpbiAjKHZpCi12c3NjYW5mKSBBQ19ERUZJTkUoSEFWRV9WU1NDQU5GKTs7ICModmkKLXZmc2NhbmYpIEFDX0RFRklORShIQVZFX1ZGU0NBTkYpOzsgIyh2aQotX2Rvc2NhbikgQUNfREVGSU5FKEhBVkVfX0RPU0NBTik7OworY2FzZSAkY2ZfY3ZfZnVuY192c3NjYW5mIGluCisodnNzY2FuZikgQUNfREVGSU5FKEhBVkVfVlNTQ0FORiwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHZzc2NhbmZdKTs7CisodmZzY2FuZikgQUNfREVGSU5FKEhBVkVfVkZTQ0FORiwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHZmc2NhbmZdKTs7CisoX2Rvc2NhbikgQUNfREVGSU5FKEhBVkVfX0RPU0NBTiwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIF9kb3NjYW5dKTs7CiBlc2FjCiAKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfR0NDX0FUVFJJQlVURVMgdmVyc2lvbjogMTEgdXBkYXRlZDogMjAwNy8wNy8yOSAwOTo1NToxMgorZG5sIENGX0dDQ19BVFRSSUJVVEVTIHZlcnNpb246IDE3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIFRlc3QgZm9yIGF2YWlsYWJpbGl0eSBvZiB1c2VmdWwgZ2NjIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlcyB0byBxdWlldAogZG5sIGNvbXBpbGVyIHdhcm5pbmdzLiAgVGhvdWdoIHVzZWZ1bCwgbm90IGFsbCBhcmUgc3VwcG9ydGVkIC0tIGFuZCBjb250cmFyeQpAQCAtMTM4OSw3ICsxOTc3LDcgQEAKIHRoZW4KIAlBQ19DSEVDS0lORyhbZm9yICRDQyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXNdKQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgX19vbGluZV9fICIke2FzX21lLWNvbmZpZ3VyZX0iCisjbGluZSBfX29saW5lX18gIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlICJjb25mdGVzdC5oIgogI2luY2x1ZGUgImNvbmZ0ZXN0LmkiCkBAIC0xNDA4LDI2ICsxOTk2LDYxIEBACiBleHRlcm4gdm9pZCBmb28odm9pZCkgR0NDX05PUkVUVVJOOwogaW50IG1haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltbXV0gR0NDX1VOVVNFRCkgeyByZXR1cm4gMDsgfQogRU9GCisJY2ZfcHJpbnRmX2F0dHJpYnV0ZT1ubworCWNmX3NjYW5mX2F0dHJpYnV0ZT1ubwogCWZvciBjZl9hdHRyaWJ1dGUgaW4gc2NhbmYgcHJpbnRmIHVudXNlZCBub3JldHVybgogCWRvCiAJCUNGX1VQUEVSKGNmX0FUVFJJQlVURSwkY2ZfYXR0cmlidXRlKQogCQljZl9kaXJlY3RpdmU9Il9fYXR0cmlidXRlX18oKCRjZl9hdHRyaWJ1dGUpKSIKIAkJZWNobyAiY2hlY2tpbmcgZm9yICRDQyAkY2ZfZGlyZWN0aXZlIiAxPiZBQ19GRF9DQworCiAJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgotCQlzY2FuZnxwcmludGYpCi0JCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorCQkocHJpbnRmKQorCQkJY2ZfcHJpbnRmX2F0dHJpYnV0ZT15ZXMKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgogI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAxCiBFT0YKIAkJCTs7Ci0JCSopCi0JCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorCQkoc2NhbmYpCisJCQljZl9zY2FuZl9hdHRyaWJ1dGU9eWVzCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQorRU9GCisJCQk7OworCQkoKikKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgogI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAkY2ZfZGlyZWN0aXZlCiBFT0YKIAkJCTs7CiAJCWVzYWMKKwogCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIEFDX01TR19SRVNVTFQoLi4uICRjZl9hdHRyaWJ1dGUpCiAJCQljYXQgY29uZnRlc3QuaCA+PmNvbmZkZWZzLmgKKwkJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgorCQkJKG5vcmV0dXJuKQorCQkJCUFDX0RFRklORV9VTlFVT1RFRChHQ0NfTk9SRVRVUk4sJGNmX2RpcmVjdGl2ZSxbRGVmaW5lIHRvIG5vcmV0dXJuLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHByaW50ZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2ZfcHJpbnRmX2F0dHJpYnV0ZSIgIT0gbm8gOyB0aGVuCisJCQkJCWNmX3ZhbHVlPSdfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSknCisJCQkJCUFDX0RFRklORShHQ0NfUFJJTlRGLDEsW0RlZmluZSB0byAxIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBnY2MtbGlrZSBwcmludGYgYXR0cmlidXRlLl0pCisJCQkJZmkKKwkJCQlBQ19ERUZJTkVfVU5RVU9URUQoR0NDX1BSSU5URkxJS0UoZm10LHZhciksJGNmX3ZhbHVlLFtEZWZpbmUgdG8gcHJpbnRmLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHNjYW5mKQorCQkJCWNmX3ZhbHVlPScvKiBub3RoaW5nICovJworCQkJCWlmIHRlc3QgIiRjZl9zY2FuZl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSknCisJCQkJCUFDX0RFRklORShHQ0NfU0NBTkYsMSxbRGVmaW5lIHRvIDEgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGdjYy1saWtlIHNjYW5mIGF0dHJpYnV0ZS5dKQorCQkJCWZpCisJCQkJQUNfREVGSU5FX1VOUVVPVEVEKEdDQ19TQ0FORkxJS0UoZm10LHZhciksJGNmX3ZhbHVlLFtEZWZpbmUgdG8gc3NjYW5mLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHVudXNlZCkKKwkJCQlBQ19ERUZJTkVfVU5RVU9URUQoR0NDX1VOVVNFRCwkY2ZfZGlyZWN0aXZlLFtEZWZpbmUgdG8gdW51c2VkLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJZXNhYwogCQlmaQogCWRvbmUKIGVsc2UKQEAgLTE0MzcsNyArMjA2MCw3IEBACiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9HQ0NfVkVSU0lPTiB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDUvMDgvMjcgMDk6NTM6NDIKK2RubCBDRl9HQ0NfVkVSU0lPTiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTIvMTAvMTggMDY6NDY6MzMKIGRubCAtLS0tLS0tLS0tLS0tLQogZG5sIEZpbmQgdmVyc2lvbiBvZiBnY2MKIEFDX0RFRlVOKFtDRl9HQ0NfVkVSU0lPTl0sWwpAQCAtMTQ0NSwxMyArMjA2OCwxMyBAQAogR0NDX1ZFUlNJT049bm9uZQogaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCiAJQUNfTVNHX0NIRUNLSU5HKHZlcnNpb24gb2YgJENDKQotCUdDQ19WRVJTSU9OPSJgJHtDQ30gLS12ZXJzaW9ufCBzZWQgLWUgJzIsJGQnIC1lICdzL14uKihHQ0MpIC8vJyAtZSAncy9eW1teMC05Ll1dKi8vJyAtZSAncy9bW14wLTkuXV0uKi8vJ2AiCisJR0NDX1ZFUlNJT049ImAke0NDfSAtLXZlcnNpb24gMj4vZGV2L251bGwgfCBzZWQgLWUgJzIsJGQnIC1lICdzL14uKihHQ0NbW14pXV0qKSAvLycgLWUgJ3MvXi4qKERlYmlhbltbXildXSopIC8vJyAtZSAncy9eW1teMC05Ll1dKi8vJyAtZSAncy9bW14wLTkuXV0uKi8vJ2AiCiAJdGVzdCAteiAiJEdDQ19WRVJTSU9OIiAmJiBHQ0NfVkVSU0lPTj11bmtub3duCiAJQUNfTVNHX1JFU1VMVCgkR0NDX1ZFUlNJT04pCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9HQ0NfV0FSTklOR1MgdmVyc2lvbjogMjMgdXBkYXRlZDogMjAwOC8wNy8yNiAxNzo1NDowMgorZG5sIENGX0dDQ19XQVJOSU5HUyB2ZXJzaW9uOiAzMiB1cGRhdGVkOiAyMDE1LzA0LzEyIDE1OjM5OjAwCiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHVzZWZ1bCB3YXJuaW5nIG9wdGlvbnMuICBUaGVyZSdzIGEgZmV3IHRoYXQKIGRubCB3ZSBkb24ndCB1c2UsIHNpbXBseSBiZWNhdXNlIHRoZXkncmUgdG9vIG5vaXN5OgpAQCAtMTQ3NCw5ICsyMDk3LDEwIEBACiBbCiBBQ19SRVFVSVJFKFtDRl9HQ0NfVkVSU0lPTl0pCiBDRl9JTlRFTF9DT01QSUxFUihHQ0MsSU5URUxfQ09NUElMRVIsQ0ZMQUdTKQorQ0ZfQ0xBTkdfQ09NUElMRVIoR0NDLENMQU5HX0NPTVBJTEVSLENGTEFHUykKIAogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgX19vbGluZV9fICIke2FzX21lLWNvbmZpZ3VyZX0iCisjbGluZSBfX29saW5lX18gIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltbXV0pIHsgcmV0dXJuIChhcmd2W1thcmdjLTFdXSA9PSAwKSA7IH0KIEVPRgogCkBAIC0xNDg0LDcgKzIxMDgsNiBAQAogdGhlbgogIyBUaGUgIi13ZFhYWCIgb3B0aW9ucyBzdXBwcmVzcyB3YXJuaW5nczoKICMgcmVtYXJrICMxNDE5OiBleHRlcm5hbCBkZWNsYXJhdGlvbiBpbiBwcmltYXJ5IHNvdXJjZSBmaWxlCi0jIHJlbWFyayAjMTY4MjogaW1wbGljaXQgY29udmVyc2lvbiBvZiBhIDY0LWJpdCBpbnRlZ3JhbCB0eXBlIHRvIGEgc21hbGxlciBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKICMgcmVtYXJrICMxNjgzOiBleHBsaWNpdCBjb252ZXJzaW9uIG9mIGEgNjQtYml0IGludGVncmFsIHR5cGUgdG8gYSBzbWFsbGVyIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQogIyByZW1hcmsgIzE2ODQ6IGNvbnZlcnNpb24gZnJvbSBwb2ludGVyIHRvIHNhbWUtc2l6ZWQgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCiAjIHJlbWFyayAjMTkzOiB6ZXJvIHVzZWQgZm9yIHVuZGVmaW5lZCBwcmVwcm9jZXNzaW5nIGlkZW50aWZpZXIKQEAgLTE0OTIsMTkgKzIxMTUsMTggQEAKICMgcmVtYXJrICM4MTA6IGNvbnZlcnNpb24gZnJvbSAiaW50IiB0byAiRGltZW5zaW9uPXt1bnNpZ25lZCBzaG9ydH0iIG1heSBsb3NlIHNpZ25pZmljYW50IGJpdHMKICMgcmVtYXJrICM4Njk6IHBhcmFtZXRlciAidHciIHdhcyBuZXZlciByZWZlcmVuY2VkCiAjIHJlbWFyayAjOTgxOiBvcGVyYW5kcyBhcmUgZXZhbHVhdGVkIGluIHVuc3BlY2lmaWVkIG9yZGVyCi0jIHdhcm5pbmcgIzI2OTogaW52YWxpZCBmb3JtYXQgc3RyaW5nIGNvbnZlcnNpb24KKyMgd2FybmluZyAjMjc5OiBjb250cm9sbGluZyBleHByZXNzaW9uIGlzIGNvbnN0YW50CiAKIAlBQ19DSEVDS0lORyhbZm9yICRDQyB3YXJuaW5nIG9wdGlvbnNdKQogCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgogCUVYVFJBX0NGTEFHUz0iLVdhbGwiCiAJZm9yIGNmX29wdCBpbiBcCiAJCXdkMTQxOSBcCi0JCXdkMTY4MiBcCiAJCXdkMTY4MyBcCiAJCXdkMTY4NCBcCiAJCXdkMTkzIFwKLQkJd2QyNzkgXAogCQl3ZDU5MyBcCisJCXdkMjc5IFwKIAkJd2Q4MTAgXAogCQl3ZDg2OSBcCiAJCXdkOTgxCkBAIC0xNTIxLDEzICsyMTQzLDE3IEBACiB0aGVuCiAJQUNfQ0hFQ0tJTkcoW2ZvciAkQ0Mgd2FybmluZyBvcHRpb25zXSkKIAljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLQlFWFRSQV9DRkxBR1M9Ii1XIC1XYWxsIgorCUVYVFJBX0NGTEFHUz0KIAljZl93YXJuX0NPTlNUPSIiCiAJdGVzdCAiJHdpdGhfZXh0X2NvbnN0IiA9IHllcyAmJiBjZl93YXJuX0NPTlNUPSJXd3JpdGUtc3RyaW5ncyIKLQlmb3IgY2Zfb3B0IGluIFwKKwljZl9nY2Nfd2FybmluZ3M9IldpZ25vcmVkLXF1YWxpZmllcnMgV2xvZ2ljYWwtb3AgV3ZhcmFyZ3MiCisJdGVzdCAieCRDTEFOR19DT01QSUxFUiIgPSB4eWVzICYmIGNmX2djY193YXJuaW5ncz0KKwlmb3IgY2Zfb3B0IGluIFcgV2FsbCBcCiAJCVdiYWQtZnVuY3Rpb24tY2FzdCBcCiAJCVdjYXN0LWFsaWduIFwKIAkJV2Nhc3QtcXVhbCBcCisJCVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgXAorCQlXZXh0cmEgXAogCQlXaW5saW5lIFwKIAkJV21pc3NpbmctZGVjbGFyYXRpb25zIFwKIAkJV21pc3NpbmctcHJvdG90eXBlcyBcCkBAIC0xNTM1LDE4ICsyMTYxLDI1IEBACiAJCVdwb2ludGVyLWFyaXRoIFwKIAkJV3NoYWRvdyBcCiAJCVdzdHJpY3QtcHJvdG90eXBlcyBcCi0JCVd1bmRlZiAkY2Zfd2Fybl9DT05TVCAkMQorCQlXdW5kZWYgJGNmX2djY193YXJuaW5ncyAkY2Zfd2Fybl9DT05TVCAkMQogCWRvCiAJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCiAJCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgQUNfTVNHX1JFU1VMVCguLi4gLSRjZl9vcHQpCi0JCQljYXNlICRjZl9vcHQgaW4gIyh2aQotCQkJV2Nhc3QtcXVhbCkgIyh2aQorCQkJY2FzZSAkY2Zfb3B0IGluCisJCQkoV2Nhc3QtcXVhbCkKIAkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EWFRTVFJJTkdERUZJTkVTIgogCQkJCTs7Ci0JCQlXaW5saW5lKSAjKHZpCisJCQkoV2lubGluZSkKIAkJCQljYXNlICRHQ0NfVkVSU0lPTiBpbgotCQkJCVtbMzRdXS4qKQorCQkJCShbWzM0XV0uKikKKwkJCQkJQ0ZfVkVSQk9TRShmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OKQorCQkJCQljb250aW51ZTs7CisJCQkJZXNhYworCQkJCTs7CisJCQkoV3BvaW50ZXItYXJpdGgpCisJCQkJY2FzZSAkR0NDX1ZFUlNJT04gaW4KKwkJCQkoW1sxMl1dLiopCiAJCQkJCUNGX1ZFUkJPU0UoZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTikKIAkJCQkJY29udGludWU7OwogCQkJCWVzYWMKQEAgLTE1NTcsMTIgKzIxOTAsMjI4IEBACiAJZG9uZQogCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgogZmkKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KgogCiBBQ19TVUJTVChFWFRSQV9DRkxBR1MpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0dOQVRfVFJZX0xJTksgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA0LzA4LzIxIDE5OjAyOjA4CitkbmwgQ0ZfR0VUT1BUX0hFQURFUiB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTQvMDcvMjIgMTQ6NDU6NTQKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGdldG9wdCdzIHZhcmlhYmxlcyB3aGljaCBhcmUgY29tbW9ubHkgZGVmaW5lZCBpbiBzdGRsaWIuaCwKK2RubCB1bmlzdGQuaCBvciAobm9uc3RhbmRhcmQpIGluIGdldG9wdC5oCitBQ19ERUZVTihbQ0ZfR0VUT1BUX0hFQURFUl0sCitbCitBQ19IQVZFX0hFQURFUlModW5pc3RkLmggZ2V0b3B0LmgpCitBQ19DQUNIRV9DSEVDSyhmb3IgaGVhZGVyIGRlY2xhcmluZyBnZXRvcHQgdmFyaWFibGVzLGNmX2N2X2dldG9wdF9oZWFkZXIsWworY2ZfY3ZfZ2V0b3B0X2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIHN0ZGlvLmggc3RkbGliLmggdW5pc3RkLmggZ2V0b3B0LmgKK2RvCitBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8JGNmX2hlYWRlcj5dLAorW2ludCB4ID0gb3B0aW5kOyBjaGFyICp5ID0gb3B0YXJnXSwKK1tjZl9jdl9nZXRvcHRfaGVhZGVyPSRjZl9oZWFkZXIKKyBicmVha10pCitkb25lCitdKQoraWYgdGVzdCAkY2ZfY3ZfZ2V0b3B0X2hlYWRlciAhPSBub25lIDsgdGhlbgorCUFDX0RFRklORShIQVZFX0dFVE9QVF9IRUFERVIsMSxbRGVmaW5lIHRvIDEgaWYgZ2V0b3B0IHZhcmlhYmxlcyBhcmUgZGVjbGFyZWQgaW4gaGVhZGVyXSkKK2ZpCitpZiB0ZXN0ICRjZl9jdl9nZXRvcHRfaGVhZGVyID0gZ2V0b3B0LmggOyB0aGVuCisJQUNfREVGSU5FKE5FRURfR0VUT1BUX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgbXVzdCBpbmNsdWRlIGdldG9wdC5oXSkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dOQVRQUkVQX09QVF9UIHZlcnNpb246IDEgdXBkYXRlZDogMjAxNC8wOC8wMiAxODozNzoyNQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQ0ZfR05BVFBSRVBfT1BUX1RdLFsKK0FDX0NBQ0hFX0NIRUNLKGlmIEdOQVRQUkVQIHN1cHBvcnRzIC1UIG9wdGlvbixjZl9jdl9nbmF0cHJlcF9vcHRfdCxbCitjZl9jdl9nbmF0cHJlcF9vcHRfdD1ubworZ25hdHByZXAgLVQgMj4vZGV2L251bGwgPi9kZXYvbnVsbCAmJiBjZl9jdl9nbmF0cHJlcF9vcHRfdD15ZXMKK10pCit0ZXN0ICIkY2ZfY3ZfZ25hdHByZXBfb3B0X3QiID0geWVzICYmIEdOQVRQUkVQX09QVFM9Ii1UICRHTkFUUFJFUF9PUFRTIgorQUNfU1VCU1QoR05BVFBSRVBfT1BUUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR05BVF9HRU5FUklDUyB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQ0ZfR05BVF9HRU5FUklDU10sCitbCitBQ19SRVFVSVJFKFtDRl9HTkFUX1ZFUlNJT05dKQorCitBQ19NU0dfQ0hFQ0tJTkcoaWYgR05BVCBzdXBwb3J0cyBnZW5lcmljcykKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuW1sxLTldXSp8W1s0LTldXS4qKQorCWNmX2duYXRfZ2VuZXJpY3M9eWVzCisJOzsKKygqKQorCWNmX2duYXRfZ2VuZXJpY3M9bm8KKwk7OworZXNhYworQUNfTVNHX1JFU1VMVCgkY2ZfZ25hdF9nZW5lcmljcykKKworaWYgdGVzdCAiJGNmX2duYXRfZ2VuZXJpY3MiID0geWVzCit0aGVuCisJY2ZfY29tcGlsZV9nZW5lcmljcz1nZW5lcmljcworCWNmX2dlbmVyaWNfb2JqZWN0cz0iXCR7R0VOT0JKU30iCitlbHNlCisJY2ZfY29tcGlsZV9nZW5lcmljcz0KKwljZl9nZW5lcmljX29iamVjdHM9CitmaQorCitBQ19TVUJTVChjZl9jb21waWxlX2dlbmVyaWNzKQorQUNfU1VCU1QoY2ZfZ2VuZXJpY19vYmplY3RzKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HTkFUX1BST0pFQ1RTIHZlcnNpb246IDggdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBHTkFUIHByb2plY3RzIGFyZSBjb25maWd1cmVkIHdpdGggIi5ncHIiIHByb2plY3QgZmlsZXMuCitkbmwgR05BVCBsaWJyYXJpZXMgYXJlIGEgZnVydGhlciBkZXZlbG9wbWVudCwgdXNpbmcgdGhlIHByb2plY3QgZmVhdHVyZS4KK0FDX0RFRlVOKFtDRl9HTkFUX1BST0pFQ1RTXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0dOQVRfVkVSU0lPTl0pCitBQ19SRVFVSVJFKFtDRl9ESVNBQkxFX0dOQVRfUFJPSkVDVFNdKQorCitjZl9nbmF0X2xpYnJhcmllcz1ubworY2ZfZ25hdF9wcm9qZWN0cz1ubworCitpZiB0ZXN0ICIkZW5hYmxlX2duYXRfcHJvamVjdHMiICE9IG5vIDsgdGhlbgorQUNfTVNHX0NIRUNLSU5HKGlmIEdOQVQgc3VwcG9ydHMgcHJvamVjdCBmaWxlcykKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuW1swLTldXSopCisJOzsKKygqKQorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKGN5Z3dpbip8bXN5cyopCisJCTs7CisJKCopCisJCW1rZGlyIGNvbmZ0ZXN0LnNyYyBjb25mdGVzdC5iaW4gY29uZnRlc3QubGliCisJCWNkIGNvbmZ0ZXN0LnNyYworCQlybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCisJCWNhdCA+PmxpYnJhcnkuZ3ByIDw8Q0ZfRU9GCitwcm9qZWN0IExpYnJhcnkgaXMKKyAgS2luZCA6PSBFeHRlcm5hbCAoIkxJQl9LSU5EIik7CisgIGZvciBMaWJyYXJ5X05hbWUgdXNlICJDb25mVGVzdCI7CisgIGZvciBPYmplY3RfRGlyIHVzZSAiLiI7CisgIGZvciBMaWJyYXJ5X0FMSV9EaXIgdXNlIEV4dGVybmFsKCJMSUJSQVJZX0RJUiIpOworICBmb3IgTGlicmFyeV9WZXJzaW9uIHVzZSBFeHRlcm5hbCAoIlNPTkFNRSIpOworICBmb3IgTGlicmFyeV9LaW5kIHVzZSBLaW5kOworICBmb3IgTGlicmFyeV9EaXIgdXNlIEV4dGVybmFsKCJCVUlMRF9ESVIiKTsKKyAgU291cmNlX0RpciA6PSBFeHRlcm5hbCAoIlNPVVJDRV9ESVIiKTsKKyAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoU291cmNlX0Rpcik7CitlbmQgTGlicmFyeTsKK0NGX0VPRgorCQljYXQgPj5jb25mcGFja2FnZS5hZHMgPDxDRl9FT0YKK3BhY2thZ2UgQ29uZlBhY2thZ2UgaXMKKyAgIHByb2NlZHVyZSBjb25mdGVzdDsKK2VuZCBDb25mUGFja2FnZTsKK0NGX0VPRgorCQljYXQgPj5jb25mcGFja2FnZS5hZGIgPDxDRl9FT0YKK3dpdGggVGV4dF9JTzsKK3BhY2thZ2UgYm9keSBDb25mUGFja2FnZSBpcworICAgcHJvY2VkdXJlIGNvbmZ0ZXN0IGlzCisgICBiZWdpbgorICAgICAgVGV4dF9JTy5QdXQgKCJIZWxsbyBXb3JsZCIpOworICAgICAgVGV4dF9JTy5OZXdfTGluZTsKKyAgIGVuZCBjb25mdGVzdDsKK2VuZCBDb25mUGFja2FnZTsKK0NGX0VPRgorCQlpZiAoICRjZl9hZGFfbWFrZSAkQURBRkxBR1MgXAorCQkJCS1QbGlicmFyeS5ncHIgXAorCQkJCS1YQlVJTERfRElSPWBjZCAuLi9jb25mdGVzdC5iaW47cHdkYCBcCisJCQkJLVhMSUJSQVJZX0RJUj1gY2QgLi4vY29uZnRlc3QubGliO3B3ZGAgXAorCQkJCS1YU09VUkNFX0RJUj1gcHdkYCBcCisJCQkJLVhTT05BTUU9bGliQ29uZlRlc3Quc28uMSBcCisJCQkJLVhMSUJfS0lORD1zdGF0aWMgMT4mQUNfRkRfQ0MgMj4mMSApIDsgdGhlbgorCQkJY2ZfZ25hdF9wcm9qZWN0cz15ZXMKKwkJZmkKKwkJY2QgLi4KKwkJaWYgdGVzdCAtZiBjb25mdGVzdC5saWIvY29uZnBhY2thZ2UuYWxpCisJCXRoZW4KKwkJCWNmX2duYXRfbGlicmFyaWVzPXllcworCQlmaQorCQlybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCisJCTs7CisJZXNhYworCTs7Citlc2FjCitBQ19NU0dfUkVTVUxUKCRjZl9nbmF0X3Byb2plY3RzKQorZmkgIyBlbmFibGVfZ25hdF9wcm9qZWN0cworCitpZiB0ZXN0ICRjZl9nbmF0X3Byb2plY3RzID0geWVzCit0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIEdOQVQgc3VwcG9ydHMgbGlicmFyaWVzKQorCUFDX01TR19SRVNVTFQoJGNmX2duYXRfbGlicmFyaWVzKQorZmkKKworaWYgdGVzdCAiJGNmX2duYXRfcHJvamVjdHMiID0geWVzCit0aGVuCisJVVNFX09MRF9NQUtFUlVMRVM9IiMiCisJVVNFX0dOQVRfUFJPSkVDVFM9IiIKK2Vsc2UKKwlVU0VfT0xEX01BS0VSVUxFUz0iIgorCVVTRV9HTkFUX1BST0pFQ1RTPSIjIgorZmkKKworaWYgdGVzdCAiJGNmX2duYXRfbGlicmFyaWVzIiA9IHllcwordGhlbgorCVVTRV9HTkFUX0xJQlJBUklFUz0iIgorZWxzZQorCVVTRV9HTkFUX0xJQlJBUklFUz0iIyIKK2ZpCisKK0FDX1NVQlNUKFVTRV9PTERfTUFLRVJVTEVTKQorQUNfU1VCU1QoVVNFX0dOQVRfUFJPSkVDVFMpCitBQ19TVUJTVChVU0VfR05BVF9MSUJSQVJJRVMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dOQVRfU0lHSU5UIHZlcnNpb246IDEgdXBkYXRlZDogMjAxMS8wMy8yNyAyMDowNzo1OQorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgZ25hdCBzdXBwb3J0cyBTSUdJTlQsIGFuZCBwcmVzdW1hYmx5IHRhc2tpbmcuICBGb3IgdGhlIGxhdHRlciwgaXQKK2RubCBpcyBub3RlZCB0aGF0IGduYXQgbWF5IGNvbXBpbGUgYSB0YXNraW5nIHVuaXQgZXZlbiBmb3IgY29uZmlndXJhdGlvbnMgd2hpY2gKK2RubCBmYWlsIGF0IHJ1bnRpbWUuCitBQ19ERUZVTihbQ0ZfR05BVF9TSUdJTlRdLFsKK0FDX0NBQ0hFX0NIRUNLKGlmIEdOQVQgc3VwcG9ydHMgU0lHSU5ULGNmX2N2X2duYXRfc2lnaW50LFsKK0NGX0dOQVRfVFJZX0xJTksoW3dpdGggQWRhLkludGVycnVwdHMuTmFtZXM7CisKK3BhY2thZ2UgQ29uZlRlc3QgaXMKKworICAgcHJhZ21hIFdhcm5pbmdzIChPZmYpOyAgLS0gIHRoZSBuZXh0IHByYWdtYSBleGlzdHMgc2luY2UgMy4xMXAKKyAgIHByYWdtYSBVbnJlc2VydmVfQWxsX0ludGVycnVwdHM7CisgICBwcmFnbWEgV2FybmluZ3MgKE9uKTsKKworICAgcHJvdGVjdGVkIFByb2Nlc3MgaXMKKyAgICAgIHByb2NlZHVyZSBTdG9wOworICAgICAgZnVuY3Rpb24gQ29udGludWUgcmV0dXJuIEJvb2xlYW47CisgICAgICBwcmFnbWEgQXR0YWNoX0hhbmRsZXIgKFN0b3AsIEFkYS5JbnRlcnJ1cHRzLk5hbWVzLlNJR0lOVCk7CisgICBwcml2YXRlCisgICAgICBEb25lIDogQm9vbGVhbiA6PSBGYWxzZTsKKyAgIGVuZCBQcm9jZXNzOworCitlbmQgQ29uZlRlc3Q7XSwKK1twYWNrYWdlIGJvZHkgQ29uZlRlc3QgaXMKKyAgIHByb3RlY3RlZCBib2R5IFByb2Nlc3MgaXMKKyAgICAgIHByb2NlZHVyZSBTdG9wIGlzCisgICAgICBiZWdpbgorICAgICAgICAgRG9uZSA6PSBUcnVlOworICAgICAgZW5kIFN0b3A7CisgICAgICBmdW5jdGlvbiBDb250aW51ZSByZXR1cm4gQm9vbGVhbiBpcworICAgICAgYmVnaW4KKyAgICAgICAgIHJldHVybiBub3QgRG9uZTsKKyAgICAgIGVuZCBDb250aW51ZTsKKyAgIGVuZCBQcm9jZXNzOworZW5kIENvbmZUZXN0O10sCisJW2NmX2N2X2duYXRfc2lnaW50PXllc10sCisJW2NmX2N2X2duYXRfc2lnaW50PW5vXSldKQorCitpZiB0ZXN0ICRjZl9jdl9nbmF0X3NpZ2ludCA9IHllcyA7IHRoZW4KKwlVU0VfR05BVF9TSUdJTlQ9IiIKK2Vsc2UKKwlVU0VfR05BVF9TSUdJTlQ9IiMiCitmaQorQUNfU1VCU1QoVVNFX0dOQVRfU0lHSU5UKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HTkFUX1RSWV9MSU5LIHZlcnNpb246IDMgdXBkYXRlZDogMjAxMS8wMy8xOSAxNDo0Nzo0NQogZG5sIC0tLS0tLS0tLS0tLS0tLS0KIGRubCBWZXJpZnkgdGhhdCBhIHRlc3QgcHJvZ3JhbSBjb21waWxlcy9saW5rcyB3aXRoIEdOQVQuCiBkbmwgJGNmX2FkYV9tYWtlIGlzIHNldCB0byB0aGUgcHJvZ3JhbSB0aGF0IGNvbXBpbGVzL2xpbmtzCkBAIC0xNTc0LDcgKzI0MjMsNyBAQAogZG5sICQ0IGlzIHRoZSBzaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUgaWYgbm90IHN1Y2Nlc3NmdWwKIEFDX0RFRlVOKFtDRl9HTkFUX1RSWV9MSU5LXSwKIFsKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgogY2F0ID4+Y29uZnRlc3QuYWRzIDw8Q0ZfRU9GCiAkMQogQ0ZfRU9GCkBAIC0xNTg2LDEwICsyNDM1LDEwIEBACiBpZmVsc2UoJDQsLCxbZWxzZQogICAgJDRdKQogZmkKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9HTkFUX1RSWV9SVU4gdmVyc2lvbjogMyB1cGRhdGVkOiAyMDA0LzA4LzIxIDE5OjAyOjA4CitkbmwgQ0ZfR05BVF9UUllfUlVOIHZlcnNpb246IDUgdXBkYXRlZDogMjAxMS8wMy8xOSAxNDo0Nzo0NQogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIFZlcmlmeSB0aGF0IGEgdGVzdCBwcm9ncmFtIGNvbXBpbGVzIGFuZCBydW5zIHdpdGggR05BVAogZG5sICRjZl9hZGFfbWFrZSBpcyBzZXQgdG8gdGhlIHByb2dyYW0gdGhhdCBjb21waWxlcy9saW5rcwpAQCAtMTYwMSw3ICsyNDUwLDcgQEAKIGRubCAkNCBpcyB0aGUgc2hlbGwgY29tbWFuZCB0byBleGVjdXRlIGlmIG5vdCBzdWNjZXNzZnVsCiBBQ19ERUZVTihbQ0ZfR05BVF9UUllfUlVOXSwKIFsKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgogY2F0ID4+Y29uZnRlc3QuYWRzIDw8Q0ZfRU9GCiAkMQogQ0ZfRU9GCkBAIC0xNjE3LDM1ICsyNDY2LDI4IEBACiBpZmVsc2UoJDQsLCxbZWxzZQogICAgJDRdKQogZmkKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9HTkFUX1ZFUlNJT04gdmVyc2lvbjogMTIgdXBkYXRlZDogMjAwNi8xMC8xNCAxNToyMzoxNQorZG5sIENGX0dOQVRfVkVSU0lPTiB2ZXJzaW9uOiAyMCB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgVmVyaWZ5IHZlcnNpb24gb2YgR05BVC4KIEFDX0RFRlVOKFtDRl9HTkFUX1ZFUlNJT05dLAogWwogQUNfTVNHX0NIRUNLSU5HKGZvciBnbmF0IHZlcnNpb24pCi1jZl9nbmF0X3ZlcnNpb249YCR7Y2ZfYWRhX21ha2UtZ25hdG1ha2V9IC12IDI+JjEgfCBncmVwICdbWzAtOV1dLltbMC05XV1bWzAtOV1dKicgfFwKLSAgc2VkIC1lICcyLCRkJyAtZSAncy9bW14wLTkgXC5dXS8vZycgLWUgJ3MvXltbIF1dKi8vJyAtZSAncy8gLiovLydgCitjZl9nbmF0X3ZlcnNpb249YCR7Y2ZfYWRhX21ha2U6LWduYXRtYWtlfSAtdiAyPiYxIHwgXAorCWdyZXAgJ1tbMC05XV0uW1swLTldXVtbMC05XV0qJyB8XAorCXNlZCAtZSAnMiwkZCcgLWUgJ3MvW1teMC05IFwuXV0vL2cnIC1lICdzL15bWyBdXSovLycgLWUgJ3MvIC4qLy8nYAogQUNfTVNHX1JFU1VMVCgkY2ZfZ25hdF92ZXJzaW9uKQogCiBjYXNlICRjZl9nbmF0X3ZlcnNpb24gaW4KLSAgMy4xW1sxLTldXSp8My5bWzItOV1dKnxbWzQtOV1dLiopCi0gICAgY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzCi0gICAgOzsKLSAgKikgZWNobyBVbnN1cHBvcnRlZCBHTkFUIHZlcnNpb24gJGNmX2duYXRfdmVyc2lvbi4gUmVxdWlyZWQgaXMgMy4xMSBvciBiZXR0ZXIuIERpc2FibGluZyBBZGE5NSBiaW5kaW5nLgotICAgICBjZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubwotICAgICA7OwotZXNhYwotY2FzZSAkY2ZfZ25hdF92ZXJzaW9uIGluCi0gIDMuW1sxLTldXSp8W1s0LTldXS4qKQotICAgICAgY2ZfY29tcGlsZV9nZW5lcmljcz1nZW5lcmljcwotICAgICAgY2ZfZ2VuZXJpY19vYmplY3RzPSJcJHtHRU5PQkpTfSIKLSAgICAgIDs7Ci0gICopICBjZl9jb21waWxlX2dlbmVyaWNzPQotICAgICAgY2ZfZ2VuZXJpY19vYmplY3RzPQotICAgICAgOzsKKygzLjFbWzEtOV1dKnwzLltbMi05XV0qfFtbNC05XV0uKnwyMFtbMC05XV1bWzAtOV1dKQorCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PXllcworCTs7CisoKikKKwlBQ19NU0dfV0FSTihVbnN1cHBvcnRlZCBHTkFUIHZlcnNpb24gJGNmX2duYXRfdmVyc2lvbi4gV2UgcmVxdWlyZSAzLjExIG9yIGJldHRlci4gRGlzYWJsaW5nIEFkYTk1IGJpbmRpbmcuKQorCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCisJOzsKIGVzYWMKIF0pCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjc5LDcgKzI1MjEsNyBAQAogdGVzdCAiJGNmX2N2X2dudV9zb3VyY2UiID0geWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfR1BQX0xJQlJBUlkgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDAzLzAyLzAyIDAxOjQxOjQ2CitkbmwgQ0ZfR1BQX0xJQlJBUlkgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAogZG5sIC0tLS0tLS0tLS0tLS0tCiBkbmwgSWYgd2UncmUgdHJ5aW5nIHRvIHVzZSBnKyssIHRlc3QgaWYgbGliZysrIGlzIGluc3RhbGxlZCAoYSByYXRoZXIgY29tbW9uCiBkbmwgcHJvYmxlbSA6LSkuICBJZiB3ZSBoYXZlIHRoZSBjb21waWxlciBidXQgbm8gbGlicmFyeSwgd2UnbGwgYmUgYWJsZSB0bwpAQCAtMTY4Nyw1NyArMjUyOSw1NyBAQAogQUNfREVGVU4oW0NGX0dQUF9MSUJSQVJZXSwKIFsKIGNmX2N4eF9saWJyYXJ5PXVua25vd24KLWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluICModmkKLW9zMiopICModmkKK2Nhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisob3MyKikKIAljZl9ncHBfbGlibmFtZT1ncHAKIAk7OwotKikKKygqKQogCWNmX2dwcF9saWJuYW1lPWcrKwogCTs7CiBlc2FjCiBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogCUFDX01TR19DSEVDS0lORyhbZm9yIGxpYiRjZl9ncHBfbGlibmFtZV0pCiAJY2Zfc2F2ZT0iJExJQlMiCi0JTElCUz0iJExJQlMgLWwkY2ZfZ3BwX2xpYm5hbWUiCisJQ0ZfQUREX0xJQigkY2ZfZ3BwX2xpYm5hbWUpCiAJQUNfVFJZX0xJTksoWwogI2luY2x1ZGUgPCRjZl9ncHBfbGlibmFtZS9idWlsdGluLmg+CiAJXSwKIAlbdHdvX2FyZ19lcnJvcl9oYW5kbGVyX3QgZm9vMiA9IGxpYl9lcnJvcl9oYW5kbGVyXSwKIAlbY2ZfY3h4X2xpYnJhcnk9eWVzCi0JIENYWExJQlM9IiRDWFhMSUJTIC1sJGNmX2dwcF9saWJuYW1lIgorCSBDRl9BRERfTElCKCRjZl9ncHBfbGlibmFtZSxDWFhMSUJTKQogCSBpZiB0ZXN0ICIkY2ZfZ3BwX2xpYm5hbWUiID0gY3BwIDsgdGhlbgotCSAgICBBQ19ERUZJTkUoSEFWRV9HUFBfQlVJTFRJTl9IKQorCSAgICBBQ19ERUZJTkUoSEFWRV9HUFBfQlVJTFRJTl9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgZ3BwIGJ1aWx0aW4uaF0pCiAJIGVsc2UKLQkgICAgQUNfREVGSU5FKEhBVkVfR1hYX0JVSUxUSU5fSCkKKwkgICAgQUNfREVGSU5FKEhBVkVfR1hYX0JVSUxUSU5fSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIGcrKyBidWlsdGluLmhdKQogCSBmaV0sCiAJW0FDX1RSWV9MSU5LKFsKICNpbmNsdWRlIDxidWlsdGluLmg+CiAJXSwKIAlbdHdvX2FyZ19lcnJvcl9oYW5kbGVyX3QgZm9vMiA9IGxpYl9lcnJvcl9oYW5kbGVyXSwKIAlbY2ZfY3h4X2xpYnJhcnk9eWVzCi0JIENYWExJQlM9IiRDWFhMSUJTIC1sJGNmX2dwcF9saWJuYW1lIgotCSBBQ19ERUZJTkUoSEFWRV9CVUlMVElOX0gpXSwKKwkgQ0ZfQUREX0xJQigkY2ZfZ3BwX2xpYm5hbWUsQ1hYTElCUykKKwkgQUNfREVGSU5FKEhBVkVfQlVJTFRJTl9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgYnVpbHRpbi5oXSldLAogCVtjZl9jeHhfbGlicmFyeT1ub10pXSkKIAlMSUJTPSIkY2Zfc2F2ZSIKIAlBQ19NU0dfUkVTVUxUKCRjZl9jeHhfbGlicmFyeSkKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0dYWF9WRVJTSU9OIHZlcnNpb246IDUgdXBkYXRlZDogMjAwNS8wOC8yNyAwOTo1Mzo0MgorZG5sIENGX0dYWF9WRVJTSU9OIHZlcnNpb246IDcgdXBkYXRlZDogMjAxMi8wNi8xNiAxNDo1NTozOQogZG5sIC0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgZm9yIHZlcnNpb24gb2YgZysrCiBBQ19ERUZVTihbQ0ZfR1hYX1ZFUlNJT05dLFsKIEFDX1JFUVVJUkUoW0FDX1BST0dfQ1BQXSkKIEdYWF9WRVJTSU9OPW5vbmUKIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JQUNfTVNHX0NIRUNLSU5HKHZlcnNpb24gb2YgZysrKQotCUdYWF9WRVJTSU9OPSJgJHtDWFgtZysrfSAtLXZlcnNpb258IHNlZCAtZSAnMiwkZCcgLWUgJ3MvXi4qKEdDQykgLy8nIC1lICdzL15bW14wLTkuXV0qLy8nIC1lICdzL1tbXjAtOS5dXS4qLy8nYCIKKwlBQ19NU0dfQ0hFQ0tJTkcodmVyc2lvbiBvZiAke0NYWDotZysrfSkKKwlHWFhfVkVSU0lPTj0iYCR7Q1hYOi1nKyt9IC0tdmVyc2lvbnwgc2VkIC1lICcyLCRkJyAtZSAncy9eLiooR0NDKSAvLycgLWUgJ3MvXltbXjAtOS5dXSovLycgLWUgJ3MvW1teMC05Ll1dLiovLydgIgogCXRlc3QgLXogIiRHWFhfVkVSU0lPTiIgJiYgR1hYX1ZFUlNJT049dW5rbm93bgogCUFDX01TR19SRVNVTFQoJEdYWF9WRVJTSU9OKQogZmkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfR1hYX1dBUk5JTkdTIHZlcnNpb246IDUgdXBkYXRlZDogMjAwNS8wOC8xMyAxNDo1NDozOAorZG5sIENGX0dYWF9XQVJOSU5HUyB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKIGRubCAtLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgdXNlZnVsIHdhcm5pbmcgb3B0aW9ucy4KIGRubApAQCAtMTc2MCw2ICsyNjAyLDcgQEAKIFsKIAogQ0ZfSU5URUxfQ09NUElMRVIoR1hYLElOVEVMX0NQTFVTUExVUyxDWFhGTEFHUykKK0NGX0NMQU5HX0NPTVBJTEVSKEdYWCxDTEFOR19DUExVU1BMVVMsQ1hYRkxBR1MpCiAKIEFDX1JFUVVJUkUoW0NGX0dYWF9WRVJTSU9OXSkKIApAQCAtMTgxNiwyNSArMjY1OSwyNiBAQAogCWNmX2d4eF9leHRyYV93YXJuaW5ncz0iIgogCXRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgJiYgY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzPSJXd3JpdGUtc3RyaW5ncyIKIAljYXNlICIkR0NDX1ZFUlNJT04iIGluCi0JW1sxLTJdXS4qKQorCShbWzEtMl1dLiopCiAJCTs7Ci0JKikKKwkoKikKIAkJY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzPSIkY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzIFdlZmZjKysiCiAJCTs7CiAJZXNhYwogCWZvciBjZl9vcHQgaW4gXAogCQlXYWJpIFwKIAkJZmFiaS12ZXJzaW9uPTAgXAorCQlXZXh0cmEgXAorCQlXaWdub3JlZC1xdWFsaWZpZXJzIFwKKwkJV2xvZ2ljYWwtb3AgXAogCQlXb3ZlcmxvYWRlZC12aXJ0dWFsIFwKIAkJV3NpZ24tcHJvbW8gXAogCQlXc3ludGggXAogCQlXb2xkLXN0eWxlLWNhc3QgXAogCQlXY2FzdC1hbGlnbiBcCiAJCVdjYXN0LXF1YWwgXAotCQlXbWlzc2luZy1wcm90b3R5cGVzIFwKIAkJV3BvaW50ZXItYXJpdGggXAogCQlXc2hhZG93IFwKLQkJV3N0cmljdC1wcm90b3R5cGVzIFwKIAkJV3VuZGVmICRjZl9neHhfZXh0cmFfd2FybmluZ3MgJDEKIAlkbwogCQlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgJEVYVFJBX0NYWEZMQUdTIC1XZXJyb3IgLSRjZl9vcHQiCkBAIC0xODQ4LDEyICsyNjkyLDEyIEBACiAJQ1hYRkxBR1M9IiRjZl9zYXZlX0NYWEZMQUdTIgogZmkKIAotcm0gLWYgY29uZnRlc3QqCitybSAtcmYgY29uZnRlc3QqCiBBQ19MQU5HX1JFU1RPUkUKIEFDX1NVQlNUKEVYVFJBX0NYWEZMQUdTKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9IQVNIRURfREIgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDA3LzExLzI0IDE3OjQzOjM3CitkbmwgQ0ZfSEFTSEVEX0RCIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLQogZG5sIExvb2sgZm9yIGFuIGluc3RhbmNlIG9mIHRoZSBCZXJrZWxleSBoYXNoZWQgZGF0YWJhc2UuCiBkbmwKQEAgLTE4NjEsMTQgKzI3MDUsMjQgQEAKIEFDX0RFRlVOKFtDRl9IQVNIRURfREJdLAogWwogaWZlbHNlKFskMV0sLCxbCi1jYXNlICQxIGluICModmkKLXllc3wqYWJsZSopICModmkKLSAgICA7OwotKikKLSAgICBpZiB0ZXN0IC1kICIkMSIgOyB0aGVuCi0gICAgICAgIENGX0FERF9JTkNESVIoJDEvaW5jbHVkZSkKLSAgICAgICAgQ0ZfQUREX0xJQkRJUigkMS9saWIpCi0gICAgZmkKK2Nhc2UgJDEgaW4KKyh5ZXN8KmFibGUqKQorCTs7CisoKikKKwlpZiB0ZXN0IC1kICIkMSIgOyB0aGVuCisJCUNGX0FERF9JTkNESVIoJDEvaW5jbHVkZSkKKwkJQ0ZfQUREX0xJQkRJUigkMS9saWIpCisJZWxzZQorCQljYXNlICIkMSIgaW4KKwkJKC4vKnwuLi8qfC8qKQorCQkJQUNfTVNHX1dBUk4obm8gc3VjaCBkaXJlY3RvcnkgJDEpCisJCQk7OworCQkoKikKKwkJCUNGX0ZJTkRfU1VCX0lOQ0RJUigkMSkKKwkJCUNGX0ZJTkRfU1VCX0xJQkRJUigkMSkKKwkJCTs7CisJCWVzYWMKKwlmaQogZXNhYwogXSkKIEFDX0NIRUNLX0hFQURFUihkYi5oLFsKQEAgLTE4ODAsNyArMjczNCw3IEBACiAJaWYgdGVzdCAiJGNmX2N2X2hhc2hlZF9kYl9saWJzIiA9IHVua25vd24gOyB0aGVuCiAJCUFDX01TR19FUlJPUihDYW5ub3QgZGV0ZXJtaW5lIGxpYnJhcnkgZm9yIGRiKQogCWVsaWYgdGVzdCAiJGNmX2N2X2hhc2hlZF9kYl9saWJzIiAhPSBkZWZhdWx0IDsgdGhlbgotCQlMSUJTPSItbCRjZl9jdl9oYXNoZWRfZGJfbGlicyAkTElCUyIKKwkJQ0ZfQUREX0xJQigkY2ZfY3ZfaGFzaGVkX2RiX2xpYnMpCiAJZmkKIGZpCiBdLFsKQEAgLTE4ODgsNyArMjc0Miw3IEBACiBdKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9IQVNIRURfREJfTElCUyB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMDgvMDgvMDQgMDY6MTg6MDYKK2RubCBDRl9IQVNIRURfREJfTElCUyB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTAvMDUvMjkgMTY6MzE6MDIKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIEdpdmVuIHRoYXQgd2UgaGF2ZSB0aGUgaGVhZGVyIGFuZCB2ZXJzaW9uIGZvciBoYXNoZWQgZGF0YWJhc2UsIGZpbmQgdGhlCiBkbmwgbGlicmFyeSBpbmZvcm1hdGlvbi4KQEAgLTE5MDAsNyArMjc1NCw3IEBACiBkbwogCWNmX3NhdmVfbGlicz0iJExJQlMiCiAJaWYgdGVzdCAtbiAiJGNmX2RiX2xpYnMiOyB0aGVuCi0JCUxJQlM9Ii1sJGNmX2RiX2xpYnMgJExJQlMiCisJCUNGX0FERF9MSUIoJGNmX2RiX2xpYnMpCiAJZmkKIAlDRl9NU0dfTE9HKGNoZWNraW5nIGZvciBsaWJyYXJ5ICIkY2ZfZGJfbGlicyIpCiAJQUNfVFJZX0xJTksoWwpAQCAtMTk2MCw3ICsyODE0LDcgQEAKIF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0hBU0hFRF9EQl9WRVJTSU9OIHZlcnNpb246IDMgdXBkYXRlZDogMjAwNy8xMi8wMSAxNTowMTozNworZG5sIENGX0hBU0hFRF9EQl9WRVJTSU9OIHZlcnNpb246IDQgdXBkYXRlZDogMjAxNC8wNC8xMiAxNjo0NzowMQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgR2l2ZW4gdGhhdCB3ZSBoYXZlIHRoZSBoZWFkZXIgZmlsZSBmb3IgaGFzaGVkIGRhdGFiYXNlLCBmaW5kIHRoZSB2ZXJzaW9uCiBkbmwgaW5mb3JtYXRpb24uCkBAIC0xOTY5LDcgKzI4MjMsNyBAQAogQUNfQ0FDSEVfQ0hFQ0soZm9yIHZlcnNpb24gb2YgZGIsIGNmX2N2X2hhc2hlZF9kYl92ZXJzaW9uLFsKIGNmX2N2X2hhc2hlZF9kYl92ZXJzaW9uPXVua25vd24KIAotZm9yIGNmX2RiX3ZlcnNpb24gaW4gMSAyIDMgNCA1Citmb3IgY2ZfZGJfdmVyc2lvbiBpbiAxIDIgMyA0IDUgNgogZG8KIAlDRl9NU0dfTE9HKGNoZWNraW5nIGZvciBkYiB2ZXJzaW9uICRjZl9kYl92ZXJzaW9uKQogCUFDX1RSWV9DT01QSUxFKFsKQEAgLTE5OTgsMTEgKzI4NTIsMzUgQEAKIF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0hFQURFUl9QQVRIIHZlcnNpb246IDggdXBkYXRlZDogMjAwMi8xMS8xMCAxNDo0Njo1OQorZG5sIENGX0hFQURFUl9QQVRIIHZlcnNpb246IDEzIHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKIGRubCAtLS0tLS0tLS0tLS0tLQotZG5sIENvbnN0cnVjdCBhIHNlYXJjaC1saXN0IGZvciBhIG5vbnN0YW5kYXJkIGhlYWRlci1maWxlCitkbmwgQ29uc3RydWN0IGEgc2VhcmNoLWxpc3Qgb2YgZGlyZWN0b3JpZXMgZm9yIGEgbm9uc3RhbmRhcmQgaGVhZGVyLWZpbGUKK2RubAorZG5sIFBhcmFtZXRlcnMKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCiBBQ19ERUZVTihbQ0ZfSEVBREVSX1BBVEhdLAotW0NGX1NVQkRJUl9QQVRIKCQxLCQyLGluY2x1ZGUpCitbCiskMT0KKworIyBjb2xsZWN0IHRoZSBjdXJyZW50IHNldCBvZiBpbmNsdWRlLWRpcmVjdG9yaWVzIGZyb20gY29tcGlsZXIgZmxhZ3MKK2NmX2hlYWRlcl9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7Q0ZMQUdTfSR7Q1BQRkxBR1N9IiA7IHRoZW4KKwlmb3IgY2ZfaGVhZGVyX3BhdGggaW4gJENQUEZMQUdTICRDRkxBR1MKKwlkbworCQljYXNlICRjZl9oZWFkZXJfcGF0aCBpbgorCQkoLUkqKQorCQkJY2ZfaGVhZGVyX3BhdGg9YGVjaG8gIi4kY2ZfaGVhZGVyX3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvaW5jbHVkZSQsLCdgCisJCQlDRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsaW5jbHVkZSwkY2ZfaGVhZGVyX3BhdGgsTk9ORSkKKwkJCWNmX2hlYWRlcl9wYXRoX2xpc3Q9IiRjZl9oZWFkZXJfcGF0aF9saXN0IFskXSQxIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKKyMgYWRkIHRoZSB2YXJpYXRpb25zIGZvciB0aGUgcGFja2FnZSB3ZSBhcmUgbG9va2luZyBmb3IKK0NGX1NVQkRJUl9QQVRIKCQxLCQyLGluY2x1ZGUpCisKIHRlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKIHRlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCiB0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgewpAQCAtMjAxNyw2ICsyODk1LDcgQEAKIAl0ZXN0IC1kICRvbGRpbmNsdWRlZGlyLyQyICYmICQxPSJbJF0kMSAkb2xkaW5jbHVkZWRpci8kMiIKIH0KIAorJDE9IlskXSQxICRjZl9oZWFkZXJfcGF0aF9saXN0IgogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9IRUxQX01FU1NBR0UgdmVyc2lvbjogMyB1cGRhdGVkOiAxOTk4LzAxLzE0IDEwOjU2OjIzCkBAIC0yMDI2LDMzICsyOTA1LDI0IEBACiBbQUNfRElWRVJUX0hFTFAoWyQxXSlkbmwKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfSU5DTFVERV9ESVJTIHZlcnNpb246IDUgdXBkYXRlZDogMjAwNi8xMC8xNCAxNToyMzoxNQorZG5sIENGX0lOQ0xVREVfRElSUyB2ZXJzaW9uOiAxMCB1cGRhdGVkOiAyMDE0LzA5LzE5IDIwOjU4OjQyCiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGluY2x1ZGUtb3B0aW9ucyBhY2NvcmRpbmcgdG8gd2hldGhlciB3ZSdyZSBidWlsZGluZwotZG5sIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5IG9yIHVzaW5nICctLXNyY2Rpcj1ESVInIG9wdGlvbi4gIElmIHdlJ3JlIGJ1aWxkaW5nCi1kbmwgd2l0aCBnY2MsIGRvbid0IGFwcGVuZCB0aGUgaW5jbHVkZWRpciBpZiBpdCBoYXBwZW5zIHRvIGJlIC91c3IvaW5jbHVkZSwKLWRubCBzaW5jZSB0aGF0IHVzdWFsbHkgYnJlYWtzIGdjYydzIHNoYWRvdy1pbmNsdWRlcy4KK2RubCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSBvciB1c2luZyAnLS1zcmNkaXI9RElSJyBvcHRpb24uCiBBQ19ERUZVTihbQ0ZfSU5DTFVERV9ESVJTXSwKIFsKLUNQUEZMQUdTPSItSS4gLUkuLi9pbmNsdWRlICRDUFBGTEFHUyIKIGlmIHRlc3QgIiRzcmNkaXIiICE9ICIuIjsgdGhlbgogCUNQUEZMQUdTPSItSVwke3NyY2Rpcn0vLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCiBmaQotaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgotZWxpZiB0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSI7IHRoZW4KLQlpZiB0ZXN0ICIkaW5jbHVkZWRpciIgPSAnJHtwcmVmaXh9L2luY2x1ZGUnIDsgdGhlbgotCQlpZiB0ZXN0ICRwcmVmaXggIT0gL3VzciA7IHRoZW4KLQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKLQkJZmkKLQllbHNlCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKLQlmaQorQ1BQRkxBR1M9Ii1JLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCitpZiB0ZXN0ICIkc3JjZGlyIiAhPSAiLiI7IHRoZW4KKwlDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9ICRDUFBGTEFHUyIKIGZpCitDUFBGTEFHUz0iLUkuICRDUFBGTEFHUyIKIEFDX1NVQlNUKENQUEZMQUdTKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9JTlRFTF9DT01QSUxFUiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDUvMDgvMDYgMTg6Mzc6MjkKK2RubCBDRl9JTlRFTF9DT01QSUxFUiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGlmIHRoZSBnaXZlbiBjb21waWxlciBpcyByZWFsbHkgdGhlIEludGVsIGNvbXBpbGVyIGZvciBMaW51eC4gIEl0CiBkbmwgdHJpZXMgdG8gaW1pdGF0ZSBnY2MsIGJ1dCBkb2VzIG5vdCByZXR1cm4gYW4gZXJyb3Igd2hlbiBpdCBmaW5kcyBhIG1pc21hdGNoCkBAIC0yMDY2LDMwICsyOTM2LDMxIEBACiBkbmwgJDIgPSBJTlRFTF9DT01QSUxFUiAoZGVmYXVsdCkgb3IgSU5URUxfQ1BMVVNQTFVTCiBkbmwgJDMgPSBDRkxBR1MgKGRlZmF1bHQpIG9yIENYWEZMQUdTCiBBQ19ERUZVTihbQ0ZfSU5URUxfQ09NUElMRVJdLFsKLWlmZWxzZSgkMiwsSU5URUxfQ09NUElMRVIsWyQyXSk9bm8KK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKK2lmZWxzZShbJDJdLCxJTlRFTF9DT01QSUxFUixbJDJdKT1ubwogCi1pZiB0ZXN0ICIkaWZlbHNlKCQxLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgoraWYgdGVzdCAiJGlmZWxzZShbJDFdLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgogCWNhc2UgJGhvc3Rfb3MgaW4KLQlsaW51eCp8Z251KikKLQkJQUNfTVNHX0NIRUNLSU5HKGlmIHRoaXMgaXMgcmVhbGx5IEludGVsIGlmZWxzZSgkMSxHWFgsQysrLEMpIGNvbXBpbGVyKQotCQljZl9zYXZlX0NGTEFHUz0iJGlmZWxzZSgkMywsQ0ZMQUdTLFskM10pIgotCQlpZmVsc2UoJDMsLENGTEFHUyxbJDNdKT0iJGlmZWxzZSgkMywsQ0ZMQUdTLFskM10pIC1uby1nY2MiCisJKGxpbnV4KnxnbnUqKQorCQlBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgaWZlbHNlKFskMV0sR1hYLEMrKyxDKSBjb21waWxlcikKKwkJY2Zfc2F2ZV9DRkxBR1M9IiRpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pIgorCQlpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pPSIkaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKSAtbm8tZ2NjIgogCQlBQ19UUllfQ09NUElMRShbXSxbCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgogI2Vsc2UKIG1ha2UgYW4gZXJyb3IKICNlbmRpZgotXSxbaWZlbHNlKCQyLCxJTlRFTF9DT01QSUxFUixbJDJdKT15ZXMKLWNmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLXdlMTQ3IC1uby1nY2MiCitdLFtpZmVsc2UoWyQyXSwsSU5URUxfQ09NUElMRVIsWyQyXSk9eWVzCitjZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC13ZTE0NyIKIF0sW10pCi0JCWlmZWxzZSgkMywsQ0ZMQUdTLFskM10pPSIkY2Zfc2F2ZV9DRkxBR1MiCi0JCUFDX01TR19SRVNVTFQoJGlmZWxzZSgkMiwsSU5URUxfQ09NUElMRVIsWyQyXSkpCisJCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRjZl9zYXZlX0NGTEFHUyIKKwkJQUNfTVNHX1JFU1VMVCgkaWZlbHNlKFskMl0sLElOVEVMX0NPTVBJTEVSLFskMl0pKQogCQk7OwogCWVzYWMKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0lTQVNDSUkgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDAwLzA4LzEyIDIzOjE4OjUyCitkbmwgQ0ZfSVNBU0NJSSB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NTY6MTMKIGRubCAtLS0tLS0tLS0tCiBkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBlaXRoZXIgYSBmdW5jdGlvbiBvciBtYWNybyBmb3IgJ2lzYXNjaWkoKScuCiBBQ19ERUZVTihbQ0ZfSVNBU0NJSV0sCkBAIC0yMTAxLDE2ICsyOTcyLDE2IEBACiAJW2NmX2N2X2hhdmVfaXNhc2NpaT1ub10pCiBdKWRubAogQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfaGF2ZV9pc2FzY2lpKQotdGVzdCAiJGNmX2N2X2hhdmVfaXNhc2NpaSIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfSVNBU0NJSSkKK3Rlc3QgIiRjZl9jdl9oYXZlX2lzYXNjaWkiID0geWVzICYmIEFDX0RFRklORShIQVZFX0lTQVNDSUksMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBpc2FzY2lpKCldKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9MQVJHRUZJTEUgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDA3LzA2LzAyIDExOjU4OjUwCitkbmwgQ0ZfTEFSR0VGSUxFIHZlcnNpb246IDkgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLQogZG5sIEFkZCBjaGVja3MgZm9yIGxhcmdlIGZpbGUgc3VwcG9ydC4KIEFDX0RFRlVOKFtDRl9MQVJHRUZJTEVdLFsKIGlmZGVmKFtBQ19GVU5DX0ZTRUVLT10sWwotICAgIEFDX1NZU19MQVJHRUZJTEUKLSAgICBpZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm8gOyB0aGVuCisJQUNfU1lTX0xBUkdFRklMRQorCWlmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubyA7IHRoZW4KIAlBQ19GVU5DX0ZTRUVLTwogCiAJIyBOb3JtYWxseSB3ZSB3b3VsZCBjb2xsZWN0IHRoZXNlIGRlZmluaXRpb25zIGluIHRoZSBjb25maWcuaCwKQEAgLTIxMzgsMTIgKzMwMDksMTIgQEAKIAkJW2NmX2N2X3N0cnVjdF9kaXJlbnQ2ND15ZXNdLAogCQlbY2ZfY3Zfc3RydWN0X2RpcmVudDY0PW5vXSkKIAldKQotCXRlc3QgIiRjZl9jdl9zdHJ1Y3RfZGlyZW50NjQiID0geWVzICYmIEFDX0RFRklORShIQVZFX1NUUlVDVF9ESVJFTlQ2NCkKLSAgICBmaQorCXRlc3QgIiRjZl9jdl9zdHJ1Y3RfZGlyZW50NjQiID0geWVzICYmIEFDX0RFRklORShIQVZFX1NUUlVDVF9ESVJFTlQ2NCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHN0cnVjdCBkaXJlbnQ2NF0pCisJZmkKIF0pCiBdKQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0xERkxBR1NfU1RBVElDIHZlcnNpb246IDQgdXBkYXRlZDogMjAwOC8xMC8xOCAxNzo1ODoyMAorZG5sIENGX0xERkxBR1NfU1RBVElDIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGZvciBjb21waWxlci9saW5rZXIgZmxhZ3MgdXNlZCB0byB0ZW1wb3JhcmlseSBmb3JjZSB1c2FnZSBvZiBzdGF0aWMKIGRubCBsaWJyYXJpZXMuICBUaGlzIGRlcGVuZHMgb24gdGhlIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybS4gIFVzZSB0aGlzIHRvIGhlbHAKQEAgLTIxNTIsNzUgKzMwMjMsMjE2IEBACiBBQ19ERUZVTihbQ0ZfTERGTEFHU19TVEFUSUNdLFsKIAogaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIygKLQlPUy8yKnxvczIqfGFpeFtbNDVdXSopIAkjKCB2aQorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKE9TLzIqfG9zMip8YWl4W1s0XV0qfHNvbGFyaXMyLjFbWzAtOV1dfGRhcndpbiopCiAJCUxERkxBR1NfU1RBVElDPQogCQlMREZMQUdTX1NIQVJFRD0KIAkJOzsKLSAgICAqKSAJIyggbm9ybWFsbHksIGV4Y2VwdCB3aGVuIGJyb2tlbgotICAgICAgICBMREZMQUdTX1NUQVRJQz0tc3RhdGljCi0gICAgICAgIExERkxBR1NfU0hBUkVEPS1keW5hbWljCi0gICAgICAgIDs7Ci0gICAgZXNhYworCSgqKSAJIyBub3JtYWxseSwgZXhjZXB0IHdoZW4gYnJva2VuCisJCUxERkxBR1NfU1RBVElDPS1zdGF0aWMKKwkJTERGTEFHU19TSEFSRUQ9LWR5bmFtaWMKKwkJOzsKKwllc2FjCiBlbHNlCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIygKLQlhaXhbWzQ1XV0qKSAJIyggZnJvbSBsZCBtYW5wYWdlCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoYWl4W1s0LTddXSopIAkjIGZyb20gbGQgbWFucGFnZQogCQlMREZMQUdTX1NUQVRJQz0tYnN0YXRpYwogCQlMREZMQUdTX1NIQVJFRD0tYmR5bmFtaWMKIAkJOzsKLQlocHV4KikJCSMoIGZyb20gbGQgbWFucGFnZSBmb3IgaHB1eDEwLjIwLCBocHV4MTEuMTEKKwkoaHB1eCopCQkjIGZyb20gbGQgbWFucGFnZSBmb3IgaHB1eDEwLjIwLCBocHV4MTEuMTEKIAkJIyBXZSBjb3VsZCBhbHNvIHVzZSBqdXN0ICJhcmNoaXZlIiBhbmQgInNoYXJlZCIuCiAJCUxERkxBR1NfU1RBVElDPS1XbCwtYSxhcmNoaXZlX3NoYXJlZAogCQlMREZMQUdTX1NIQVJFRD0tV2wsLWEsc2hhcmVkX2FyY2hpdmUKIAkJOzsKLQlpcml4KikJCSMoIGZyb20gbGQgbWFucGFnZSBJUklYNjQKKwkoaXJpeCopCQkjIGZyb20gbGQgbWFucGFnZSBJUklYNjQKIAkJTERGTEFHU19TVEFUSUM9LUJzdGF0aWMKIAkJTERGTEFHU19TSEFSRUQ9LUJkeW5hbWljCiAJCTs7Ci0Jb3NmW1s0NV1dKikJIyggZnJvbSBsZCBtYW5wYWdlIG9zZjQuMGQsIG9zZjUuMQorCShvc2ZbWzQ1XV0qKQkjIGZyb20gbGQgbWFucGFnZSBvc2Y0LjBkLCBvc2Y1LjEKIAkJIyBhbHRlcm5hdGl2ZSAiLW9sZHN0eWxlX2xpYmxvb2t1cCIgKG5vdCBpbiBjYyBtYW5wYWdlKQotCQlMREZMQUdTX1NUQVRJQz0tbm9zbyAKKwkJTERGTEFHU19TVEFUSUM9LW5vc28KIAkJTERGTEFHU19TSEFSRUQ9LXNvX2FyY2hpdmUKIAkJOzsKLQlzb2xhcmlzMiopCisJKHNvbGFyaXMyKikKIAkJTERGTEFHU19TVEFUSUM9LUJzdGF0aWMKIAkJTERGTEFHU19TSEFSRUQ9LUJkeW5hbWljCiAJCTs7CiAJZXNhYwogZmkKIAoraWYgdGVzdCAtbiAiJExERkxBR1NfU1RBVElDIiAmJiB0ZXN0IC1uICIkTERGTEFHU19TSEFSRUQiCit0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIGxpbmtlciBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBzdGF0aWMvZHluYW1pYykKKworCXJtIC1mIGxpYmNvbmZ0ZXN0LmEKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgY2ZfbGRmbGFnc19zdGF0aWMoRklMRSAqZnApIHsgcmV0dXJuIGZmbHVzaChmcCk7IH0KK0VPRgorCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDsgdGhlbgorCQkoICRBUiAkQVJGTEFHUyBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gKSAyPiZBQ19GRF9DQyAxPi9kZXYvbnVsbAorCQkoIGV2YWwgJFJBTkxJQiBsaWJjb25mdGVzdC5hICkgMj4mQUNfRkRfQ0MgPi9kZXYvbnVsbAorCWZpCisJcm0gLWYgY29uZnRlc3QuKgorCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworCUxJQlM9IiRMREZMQUdTX1NUQVRJQyAtTGBwd2RgIC1sY29uZnRlc3QgJExERkxBR1NfRFlOQU1JQyAkTElCUyIKKwlBQ19UUllfTElOSyhbCisjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IGNmX2xkZmxhZ3Nfc3RhdGljKEZJTEUgKmZwKTsKK10sWworCXJldHVybiBjZl9sZGZsYWdzX3N0YXRpYyhzdGRpbik7CitdLFsKKwkjIHNvbWUgbGlua2VycyBzaW1wbHkgaWdub3JlIHRoZSAtZHluYW1pYworCWNhc2UgeGBmaWxlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbGAgaW4KKwkoKnN0YXRpYyopCisJCWNmX2xkZmxhZ3Nfc3RhdGljPW5vCisJCTs7CisJKCopCisJCWNmX2xkZmxhZ3Nfc3RhdGljPXllcworCQk7OworCWVzYWMKK10sW2NmX2xkZmxhZ3Nfc3RhdGljPW5vXSkKKworCXJtIC1mIGxpYmNvbmZ0ZXN0LioKKwlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCisJQUNfTVNHX1JFU1VMVCgkY2ZfbGRmbGFnc19zdGF0aWMpCisKKwlpZiB0ZXN0ICRjZl9sZGZsYWdzX3N0YXRpYyAhPSB5ZXMKKwl0aGVuCisJCUxERkxBR1NfU1RBVElDPQorCQlMREZMQUdTX1NIQVJFRD0KKwlmaQorZWxzZQorCUxERkxBR1NfU1RBVElDPQorCUxERkxBR1NfU0hBUkVEPQorZmkKKwogQUNfU1VCU1QoTERGTEFHU19TVEFUSUMpCiBBQ19TVUJTVChMREZMQUdTX1NIQVJFRCkKIF0pCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfTElCUkFSWV9QQVRIIHZlcnNpb246IDcgdXBkYXRlZDogMjAwMi8xMS8xMCAxNDo0Njo1OQorZG5sIENGX0xEX1JQQVRIX09QVCB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKIGRubCAtLS0tLS0tLS0tLS0tLS0KLWRubCBDb25zdHJ1Y3QgYSBzZWFyY2gtbGlzdCBmb3IgYSBub25zdGFuZGFyZCBsaWJyYXJ5LWZpbGUKLUFDX0RFRlVOKFtDRl9MSUJSQVJZX1BBVEhdLAotW0NGX1NVQkRJUl9QQVRIKCQxLCQyLGxpYildKWRubAorZG5sIEZvciB0aGUgZ2l2ZW4gc3lzdGVtIGFuZCBjb21waWxlciwgZmluZCB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gcGFzcyB0byB0aGUKK2RubCBsb2FkZXIgdG8gdXNlIHRoZSAicnBhdGgiIGZlYXR1cmUuCitBQ19ERUZVTihbQ0ZfTERfUlBBVEhfT1BUXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0NIRUNLX0NBQ0hFXSkKKworTERfUlBBVEhfT1BUPQorQUNfTVNHX0NIRUNLSU5HKGZvciBhbiBycGF0aCBvcHRpb24pCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKGlyaXgqKQorCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJZWxzZQorCQlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJZmkKKwk7OworKGxpbnV4KnxnbnUqfGsqYnNkKi1nbnUpCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKG9wZW5ic2RbWzItOV1dLip8bWlyYnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7CisoZHJhZ29uZmx5KnxmcmVlYnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhuZXRic2QqKQorCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJOzsKKyhvc2YqfG1scysqKQorCUxEX1JQQVRIX09QVD0iLXJwYXRoICIKKwk7OworKHNvbGFyaXMyKikKKwlMRF9SUEFUSF9PUFQ9Ii1SIgorCTs7CisoKikKKwk7OworZXNhYworQUNfTVNHX1JFU1VMVCgkTERfUlBBVEhfT1BUKQorCitjYXNlICJ4JExEX1JQQVRIX09QVCIgaW4KKyh4LVIqKQorCUFDX01TR19DSEVDS0lORyhpZiB3ZSBuZWVkIGEgc3BhY2UgYWZ0ZXIgcnBhdGggb3B0aW9uKQorCWNmX3NhdmVfTElCUz0iJExJQlMiCisJQ0ZfQUREX0xJQlMoJHtMRF9SUEFUSF9PUFR9JGxpYmRpcikKKwlBQ19UUllfTElOSygsICwgY2ZfcnBhdGhfc3BhY2U9bm8sIGNmX3JwYXRoX3NwYWNlPXllcykKKwlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCUFDX01TR19SRVNVTFQoJGNmX3JwYXRoX3NwYWNlKQorCXRlc3QgIiRjZl9ycGF0aF9zcGFjZSIgPSB5ZXMgJiYgTERfUlBBVEhfT1BUPSIkTERfUlBBVEhfT1BUICIKKwk7OworZXNhYworXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9MSUJfUFJFRklYIHZlcnNpb246IDggdXBkYXRlZDogMjAwOC8wOS8xMyAxMTozNDoxNgorZG5sIENGX0xJQlJBUllfUEFUSCB2ZXJzaW9uOiAxMCB1cGRhdGVkOiAyMDE1LzA0LzE1IDE5OjA4OjQ4CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29uc3RydWN0IGEgc2VhcmNoLWxpc3Qgb2YgZGlyZWN0b3JpZXMgZm9yIGEgbm9uc3RhbmRhcmQgbGlicmFyeS1maWxlCitkbmwKK2RubCBQYXJhbWV0ZXJzCitkbmwJJDEgPSB0aGUgdmFyaWFibGUgdG8gcmV0dXJuIGFzIHJlc3VsdAorZG5sCSQyID0gdGhlIHBhY2thZ2UgbmFtZQorQUNfREVGVU4oW0NGX0xJQlJBUllfUEFUSF0sCitbCiskMT0KK2NmX2xpYnJhcnlfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0xERkxBR1N9JHtMSUJTfSIgOyB0aGVuCisJZm9yIGNmX2xpYnJhcnlfcGF0aCBpbiAkTERGTEFHUyAkTElCUworCWRvCisJCWNhc2UgJGNmX2xpYnJhcnlfcGF0aCBpbgorCQkoLUwqKQorCQkJY2ZfbGlicmFyeV9wYXRoPWBlY2hvICIuJGNmX2xpYnJhcnlfcGF0aCIgfHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLC9saWIkLCwnYAorCQkJQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLGxpYiwkY2ZfbGlicmFyeV9wYXRoLE5PTkUpCisJCQljZl9saWJyYXJ5X3BhdGhfbGlzdD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0IFskXSQxIgorCQkJOzsKKwkJZXNhYworCWRvbmUKK2ZpCisKK0NGX1NVQkRJUl9QQVRIKCQxLCQyLGxpYikKKworJDE9IiRjZl9saWJyYXJ5X3BhdGhfbGlzdCBbJF0kMSIKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTElCVE9PTF9WRVJTSU9OIHZlcnNpb246IDEgdXBkYXRlZDogMjAxMy8wNC8wNiAxODowMzowOQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0NGX0xJQlRPT0xfVkVSU0lPTl0sWworaWYgdGVzdCAtbiAiJExJQlRPT0wiICYmIHRlc3QgIiRMSUJUT09MIiAhPSBub25lCit0aGVuCisJY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPWAkTElCVE9PTCAtLXZlcnNpb24gMj4mMSB8IHNlZCAtZSAnL14kL2QnIHxzZWQgLWUgJzIsJGQnIC1lICdzLyhbW14pXV0qKS8vZycgLWUgJ3MvXltbXjEtOV1dKi8vJyAtZSAncy9bW14wLTkuXV0uKi8vJ2AKK2Vsc2UKKwljZl9jdl9saWJ0b29sX3ZlcnNpb249CitmaQordGVzdCAteiAiJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiIgJiYgdW5zZXQgY2ZfY3ZfbGlidG9vbF92ZXJzaW9uCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0xJQl9QUkVGSVggdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLS0KIGRubCBDb21wdXRlIHRoZSBsaWJyYXJ5LXByZWZpeCBmb3IgdGhlIGdpdmVuIGhvc3Qgc3lzdGVtCiBkbmwgJDEgPSB2YXJpYWJsZSB0byBzZXQKLUFDX0RFRlVOKFtDRl9MSUJfUFJFRklYXSwKK2RlZmluZShbQ0ZfTElCX1BSRUZJWF0sCiBbCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIyh2aQotCU9TLzIqfG9zMiopICModmkKLSAgICAgICAgTElCX1BSRUZJWD0nJwotICAgICAgICA7OwotCSopCUxJQl9QUkVGSVg9J2xpYicKLSAgICAgICAgOzsKKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShPUy8yKnxvczIqKQorCQlMSUJfUFJFRklYPScnCisJCTs7CisJKCopCUxJQl9QUkVGSVg9J2xpYicKKwkJOzsKIAllc2FjCiBpZmVsc2UoJDEsLCxbJDE9JExJQl9QUkVGSVhdKQogCUFDX1NVQlNUKExJQl9QUkVGSVgpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0xJQl9SVUxFUyB2ZXJzaW9uOiA1MyB1cGRhdGVkOiAyMDA4LzA5LzIwIDE5OjUxOjU5CitkbmwgQ0ZfTElCX1JVTEVTIHZlcnNpb246IDgzIHVwZGF0ZWQ6IDIwMTUvMDgvMDUgMjA6NDQ6MjgKIGRubCAtLS0tLS0tLS0tLS0KIGRubCBBcHBlbmQgZGVmaW5pdGlvbnMgYW5kIHJ1bGVzIGZvciB0aGUgZ2l2ZW4gbW9kZWxzIHRvIHRoZSBzdWJkaXJlY3RvcnkKIGRubCBNYWtlZmlsZXMsIGFuZCB0aGUgcmVjdXJzaW9uIHJ1bGUgZm9yIHRoZSB0b3AtbGV2ZWwgTWFrZWZpbGUuICBJZiB0aGUKLWRubCBzdWJkaXJlY3RvcnkgaXMgYSBsaWJyYXJ5LXNvdXJjZSBkaXJlY3RvcnksIG1vZGlmeSB0aGUgTElCU19UT19NQUtFIGxpc3QgaW4KK2RubCBzdWJkaXJlY3RvcnkgaXMgYSBsaWJyYXJ5LXNvdXJjZSBkaXJlY3RvcnksIG1vZGlmeSB0aGUgTGlic19Ub19NYWtlIGxpc3QgaW4KIGRubCB0aGUgY29ycmVzcG9uZGluZyBtYWtlZmlsZSB0byBsaXN0IHRoZSBtb2RlbHMgdGhhdCB3ZSdsbCBnZW5lcmF0ZS4KIGRubAogZG5sIEZvciBzaGFyZWQgbGlicmFyaWVzLCBtYWtlIGEgbGlzdCBvZiBzeW1ib2xpYyBsaW5rcyB0byBjb25zdHJ1Y3Qgd2hlbgpAQCAtMjIyOSwxNCArMzI0MSwzNSBAQAogZG5sCWxpYjxuYW1lPi5zbwktPgogZG5sCWxpYjxuYW1lPi5zby48bWFqb3I+CS0+CiBkbmwJbGliPG5hbWU+LnNvLjxtYWo+LjxtaW5vcj4KK2RubAorZG5sIE5vdGU6IExpYnNfVG9fTWFrZSBpcyBtaXhlZCBjYXNlLCBzaW5jZSBpdCBpcyBub3QgYSBwdXJlIGF1dG9jb25mIHZhcmlhYmxlLgogQUNfREVGVU4oW0NGX0xJQl9SVUxFU10sCiBbCi1DRl9MSUJfUFJFRklYKGNmX3ByZWZpeCkKK2NmX3ByZWZpeD0kTElCX1BSRUZJWAogQUNfUkVRVUlSRShbQ0ZfU1VCU1RfTkNVUlNFU19WRVJTSU9OXSkKIAotaWYgdGVzdCAkY2ZfY3Zfc2hsaWJfdmVyc2lvbiA9IGN5Z2RsbCA7IHRoZW4KK2Nhc2UgJGNmX2N2X3NobGliX3ZlcnNpb24gaW4KKyhjeWdkbGx8bXN5c2RsbHxtaW5ndykKIAlUSU5GT19OQU1FPSRUSU5GT19BUkdfU1VGRklYCiAJVElORk9fU1VGRklYPS5kbGwKKwk7OworZXNhYworCitpZiB0ZXN0IC1uICIkVElORk9fU1VGRklYIiA7IHRoZW4KKwljYXNlICRUSU5GT19TVUZGSVggaW4KKwkodHcqKQorCQlUSU5GT19OQU1FPSIke1RJTkZPX05BTUV9dHcke0VYVFJBX1NVRkZJWH0iCisJCVRJTkZPX1NVRkZJWD1gZWNobyAkVElORk9fU1VGRklYIHwgc2VkICdzL150dyckRVhUUkFfU1VGRklYJy8vJ2AKKwkJOzsKKwkodCopCisJCVRJTkZPX05BTUU9IiR7VElORk9fTkFNRX10JHtFWFRSQV9TVUZGSVh9IgorCQlUSU5GT19TVUZGSVg9YGVjaG8gJFRJTkZPX1NVRkZJWCB8IHNlZCAncy9edCckRVhUUkFfU1VGRklYJy8vJ2AKKwkJOzsKKwkodyopCisJCVRJTkZPX05BTUU9IiR7VElORk9fTkFNRX13JHtFWFRSQV9TVUZGSVh9IgorCQlUSU5GT19TVUZGSVg9YGVjaG8gJFRJTkZPX1NVRkZJWCB8IHNlZCAncy9edyckRVhUUkFfU1VGRklYJy8vJ2AKKwkJOzsKKwllc2FjCiBmaQogCiBmb3IgY2ZfZGlyIGluICRTUkNfU1VCRElSUwpAQCAtMjI0Niw4MyArMzI3OSwxMzAgQEAKIAllbGlmIHRlc3QgLWYgJHNyY2Rpci8kY2ZfZGlyL21vZHVsZXM7IHRoZW4KIAogCQlTSEFSRURfTElCPQotCQlMSUJTX1RPX01BS0U9CisJCUxpYnNfVG9fTWFrZT0KKworCQljZl9zZWRfb3B0aW9ucz0KKwkJaWYgdGVzdCAtbiAiJHtjZl9jdl9hYmlfdmVyc2lvbn0iICYmIHRlc3QgIngke2NmX2N2X2FiaV92ZXJzaW9ufSIgIT0gIng1IgorCQl0aGVuCisJCQljZl9zZWRfb3B0aW9ucz0iJGNmX3NlZF9vcHRpb25zIC1lIFwicy9OQ1VSU0VTXFwoW1tXVF1dXFwrXFwpXD9fL05DVVJTRVNcXDEke2NmX2N2X2FiaV92ZXJzaW9ufV8vZ1wiIgorCQkJY2Zfc2VkX29wdGlvbnM9IiRjZl9zZWRfb3B0aW9ucyAtZSBcIi9kZXByZWNhdGVkIGluIEFCSSR7Y2ZfY3ZfYWJpX3ZlcnNpb259L2RcIiIKKwkJZmkKKworCQlpZiB0ZXN0ICJ4JFdJTERDQVJEX1NZTVMiID0geG5vCisJCXRoZW4KKwkJCWNmX3NlZF9vcHRpb25zPSIkY2Zfc2VkX29wdGlvbnMgLWUgXCJzL19cKjsvL2dcIiIKKwkJZmkKKworCQlpZiB0ZXN0ICJ4JGNmX3NlZF9vcHRpb25zIiAhPSAieCIKKwkJdGhlbgorCQkJY2F0ID4+JGNmX2Rpci9NYWtlZmlsZSA8PENGX0VPRgorCisjIEdlbmVyYXRlZCBieSBDRl9MSUJfUlVMRVMKK3Jlc3VsdGluZy5tYXA6ICRVTkFMVEVSRURfU1lNUworCXNlZCAkY2Zfc2VkX29wdGlvbnMgPCAkVU5BTFRFUkVEX1NZTVMgPlxbJF1ACisKK2NsZWFuOjoKKwlybSAtZiByZXN1bHRpbmcubWFwCitDRl9FT0YKKwkJZmkKKwogCQlmb3IgY2ZfaXRlbSBpbiAkY2ZfTElTVF9NT0RFTFMKIAkJZG8KIAkJCUNGX0xJQl9TVUZGSVgoJGNmX2l0ZW0sY2Zfc3VmZml4LGNmX2RlcHN1ZikKKwkJCWNmX2xpYm5hbWU9JGNmX2RpcgorCQkJdGVzdCAiJGNmX2RpciIgPSBjKysgJiYgY2ZfbGlibmFtZT1uY3Vyc2VzKysKIAkJCWlmIHRlc3QgJGNmX2l0ZW0gPSBzaGFyZWQgOyB0aGVuCi0JCQlpZiB0ZXN0ICIkY2ZfY3ZfZG9fc3ltbGlua3MiID0geWVzIDsgdGhlbgotCQkJCWNhc2UgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiBpbiAjKHZpCi0JCQkJcmVsKSAjKHZpCi0JCQkJCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4gIyh2aQotCQkJCQlkYXJ3aW4qKQotCQkJCQljYXNlIC4ke0xJQl9TVUZGSVh9IGluCi0JCQkJCS53KikKLQkJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQkJY2Zfc3VmZml4PXcnLiR7UkVMX1ZFUlNJT059JyIkY2Zfc3VmZml4IgorCQkJCWlmIHRlc3QgLW4gIiR7TElCX1NVRkZJWH0iCisJCQkJdGhlbgorCQkJCQljZl9zaGFyZWRfc3VmZml4PWBlY2hvICIkY2Zfc3VmZml4IiB8IHNlZCAncy9eJyIke1VTRV9MSUJfU1VGRklYfSInLy8nYAorCQkJCWVsc2UKKwkJCQkJY2Zfc2hhcmVkX3N1ZmZpeD0iJGNmX3N1ZmZpeCIKKwkJCQlmaQorCQkJCWlmIHRlc3QgIiRjZl9jdl9kb19zeW1saW5rcyIgPSB5ZXMgOyB0aGVuCisJCQkJCWNmX3ZlcnNpb25fbmFtZT0KKworCQkJCQljYXNlICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgaW4KKwkJCQkJKHJlbCkKKwkJCQkJCWNmX3ZlcnNpb25fbmFtZT1SRUxfVkVSU0lPTgogCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJCWNmX3N1ZmZpeD0nLiR7UkVMX1ZFUlNJT059JyIkY2Zfc3VmZml4IgorCQkJCQkoYWJpKQorCQkJCQkJY2ZfdmVyc2lvbl9uYW1lPUFCSV9WRVJTSU9OCiAJCQkJCQk7OwogCQkJCQllc2FjCi0JCQkJCTs7ICModmkKLQkJCQkJKikgY2Zfc3VmZml4PSIkY2Zfc3VmZml4IicuJHtSRUxfVkVSU0lPTn0nIDs7Ci0JCQkJCWVzYWMKKworCQkJCQlpZiB0ZXN0IC1uICIkY2ZfdmVyc2lvbl9uYW1lIgorCQkJCQl0aGVuCisJCQkJCQljYXNlICIkY2ZfY3Zfc3lzdGVtX25hbWUiIGluCisJCQkJCQkoZGFyd2luKikKKwkJCQkJCQkjICJ3IiwgZXRjPworCQkJCQkJCWNmX3N1ZmZpeD0iJHtVU0VfTElCX1NVRkZJWH0iJy4keyckY2ZfdmVyc2lvbl9uYW1lJ30nIiRjZl9zaGFyZWRfc3VmZml4IgorCQkJCQkJCTs7CisJCQkJCQkoKikKKwkJCQkJCQljZl9zdWZmaXg9IiRjZl9zdWZmaXgiJy4keyckY2ZfdmVyc2lvbl9uYW1lJ30nCisJCQkJCQkJOzsKKwkJCQkJCWVzYWMKKwkJCQkJZmkKKwkJCQkJaWYgdGVzdCAtbiAiJHtVU0VfTElCX1NVRkZJWH0iCisJCQkJCXRoZW4KKwkJCQkJCWNmX3NoYXJlZF9zdWZmaXg9YGVjaG8gIiRjZl9zdWZmaXgiIHwgc2VkICdzL14nIiR7VVNFX0xJQl9TVUZGSVh9IicvLydgCisJCQkJCWVsc2UKKwkJCQkJCWNmX3NoYXJlZF9zdWZmaXg9IiRjZl9zdWZmaXgiCisJCQkJCWZpCisJCQkJZmkKKwkJCQkjIGN5Z3dpbiBuZWVkcyBpbXBvcnQgbGlicmFyeSwgYW5kIGhhcyB1bmlxdWUgbmFtaW5nIGNvbnZlbnRpb24KKwkJCQkjIHVzZSBhdXRvZGV0ZWN0ZWQgJHtjZl9wcmVmaXh9IGZvciBpbXBvcnQgbGliIGFuZCBzdGF0aWMgbGliLCBidXQKKwkJCQkjIHVzZSAnY3lnJyBwcmVmaXggZm9yIHNoYXJlZCBsaWIuCisJCQkJY2FzZSAkY2ZfY3Zfc2hsaWJfdmVyc2lvbiBpbgorCQkJCShjeWdkbGwpCisJCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAorCQkJCQljZl9hZGRfbGliPSIuLi9saWIvY3lnJHtjZl9saWJuYW1lfSR7Y2ZfY3lnc3VmfSIKIAkJCQkJOzsKLQkJCQlhYmkpCi0JCQkJCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4gIyh2aQotCQkJCQlkYXJ3aW4qKQotCQkJCQljYXNlIC4ke0xJQl9TVUZGSVh9IGluCi0JCQkJCS53KikKLQkJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQkJY2Zfc3VmZml4PXcnLiR7QUJJX1ZFUlNJT059JyIkY2Zfc3VmZml4IgotCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJCWNmX3N1ZmZpeD0nLiR7QUJJX1ZFUlNJT059JyIkY2Zfc3VmZml4IgotCQkJCQkJOzsKLQkJCQkJZXNhYwotCQkJCQk7OyAjKHZpCi0JCQkJCSopIGNmX3N1ZmZpeD0iJGNmX3N1ZmZpeCInLiR7QUJJX1ZFUlNJT059JyA7OwotCQkJCQllc2FjCisJCQkJKG1zeXNkbGwpCisJCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAorCQkJCQljZl9hZGRfbGliPSIuLi9saWIvbXN5cy0ke2NmX2xpYm5hbWV9JHtjZl9jeWdzdWZ9IgorCQkJCQk7OworCQkJCShtaW5ndykKKwkJCQkJY2ZfY3lnc3VmPWBlY2hvICIkY2Zfc3VmZml4IiB8IHNlZCAtZSAncy9cLmRsbC9cJHtBQklfVkVSU0lPTn0uZGxsLydgCisJCQkJCWNmX2FkZF9saWI9Ii4uL2xpYi9saWIke2NmX2xpYm5hbWV9JHtjZl9jeWdzdWZ9IgorCQkJCQk7OworCQkJCSgqKQorCQkJCQljZl9hZGRfbGliPQogCQkJCQk7OwogCQkJCWVzYWMKKwkJCQlpZiB0ZXN0IC1uICIkY2ZfYWRkX2xpYiIKKwkJCQl0aGVuCisJCQkJCUxpYnNfVG9fTWFrZT0iJExpYnNfVG9fTWFrZSAkY2ZfYWRkX2xpYiIKKwkJCQkJY29udGludWUKKwkJCQlmaQogCQkJZmkKLQkJCSMgY3lnd2luIG5lZWRzIGltcG9ydCBsaWJyYXJ5LCBhbmQgaGFzIHVuaXF1ZSBuYW1pbmcgY29udmVudGlvbgotCQkJIyB1c2UgYXV0b2RldGVjdGVkICR7Y2ZfcHJlZml4fSBmb3IgaW1wb3J0IGxpYiBhbmQgc3RhdGljIGxpYiwgYnV0Ci0JCQkjIHVzZSAnY3lnJyBwcmVmaXggZm9yIHNoYXJlZCBsaWIuCi0JCQlpZiB0ZXN0ICRjZl9jdl9zaGxpYl92ZXJzaW9uID0gY3lnZGxsIDsgdGhlbgotCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAotCQkJCUxJQlNfVE9fTUFLRT0iJExJQlNfVE9fTUFLRSAuLi9saWIvY3lnJHtjZl9kaXJ9JHtjZl9jeWdzdWZ9IgotCQkJCWNvbnRpbnVlCi0JCQlmaQotCQkJZmkKLQkJCUxJQlNfVE9fTUFLRT0iJExJQlNfVE9fTUFLRSAuLi9saWIvJHtjZl9wcmVmaXh9JHtjZl9kaXJ9JHtjZl9zdWZmaXh9IgorCQkJY2ZfYWRkX2xpYj0iLi4vbGliLyR7Y2ZfcHJlZml4fSR7Y2ZfbGlibmFtZX0ke2NmX3N1ZmZpeH0iCisJCQlMaWJzX1RvX01ha2U9IiRMaWJzX1RvX01ha2UgJGNmX2FkZF9saWIiCiAJCWRvbmUKIAogCQlpZiB0ZXN0ICRjZl9kaXIgPSBuY3Vyc2VzIDsgdGhlbgogCQkJY2Zfc3Vic2V0cz0iJExJQl9TVUJTRVRTIgogCQkJY2Zfcl9wYXJ0cz0iJGNmX3N1YnNldHMiCi0JCQljZl9saWJsaXN0PSIkTElCU19UT19NQUtFIgorCQkJY2ZfbGlibGlzdD0iJExpYnNfVG9fTWFrZSIKIAogCQkJd2hpbGUgdGVzdCAtbiAiJGNmX3JfcGFydHMiCiAJCQlkbwogCQkJCWNmX2xfcGFydHM9YGVjaG8gIiRjZl9yX3BhcnRzIiB8c2VkIC1lICdzLyAuKiQvLydgCiAJCQkJY2Zfcl9wYXJ0cz1gZWNobyAiJGNmX3JfcGFydHMiIHxzZWQgLWUgJ3MvXltbXiBdXSogLy8nYAogCQkJCWlmIHRlc3QgIiRjZl9sX3BhcnRzIiAhPSAiJGNmX3JfcGFydHMiIDsgdGhlbgotCQkJCQljZl9pdGVtPQotCQkJCQljYXNlICRjZl9sX3BhcnRzIGluICModmkKLQkJCQkJKnRlcm1saWIqKSAjKHZpCi0JCQkJCQljZl9pdGVtPWBlY2hvICRjZl9saWJsaXN0IHxzZWQgLWUgcyUke0xJQl9OQU1FfSR7TElCX1NVRkZJWH0lJHtUSU5GT19MSUJfU1VGRklYfSVnYAorCQkJCQljZl9hZGRfbGliPQorCQkJCQljYXNlICRjZl9sX3BhcnRzIGluCisJCQkJCSgqdGVybWxpYiopCisJCQkJCQljZl9hZGRfbGliPWBlY2hvICRjZl9saWJsaXN0IHxzZWQgLWUgcyUke0xJQl9OQU1FfSR7VVNFX0xJQl9TVUZGSVh9JSR7VElORk9fTElCX1NVRkZJWH0lZ2AKIAkJCQkJCTs7Ci0JCQkJCSp0aWNsaWIqKQotCQkJCQkJY2ZfaXRlbT1gZWNobyAkY2ZfbGlibGlzdCB8c2VkIC1lIHMlJHtMSUJfTkFNRX0ke0xJQl9TVUZGSVh9JSR7VElDU19MSUJfU1VGRklYfSVnYAorCQkJCQkoKnRpY2xpYiopCisJCQkJCQljZl9hZGRfbGliPWBlY2hvICRjZl9saWJsaXN0IHxzZWQgLWUgcyUke0xJQl9OQU1FfSR7VVNFX0xJQl9TVUZGSVh9JSR7VElDU19MSUJfU1VGRklYfSVnYAogCQkJCQkJOzsKLQkJCQkJKikKKwkJCQkJKCopCiAJCQkJCQlicmVhawogCQkJCQkJOzsKIAkJCQkJZXNhYwotCQkJCQlpZiB0ZXN0IC1uICIkY2ZfaXRlbSI7IHRoZW4KLQkJCQkJCUxJQlNfVE9fTUFLRT0iJGNmX2l0ZW0gJExJQlNfVE9fTUFLRSIKKwkJCQkJaWYgdGVzdCAtbiAiJGNmX2FkZF9saWIiOyB0aGVuCisJCQkJCQlMaWJzX1RvX01ha2U9IiRjZl9hZGRfbGliICRMaWJzX1RvX01ha2UiCiAJCQkJCWZpCiAJCQkJZWxzZQogCQkJCQlicmVhawpAQCAtMjMzMiwxMyArMzQxMiw0MCBAQAogCQkJY2Zfc3Vic2V0cz1gZWNobyAiJExJQl9TVUJTRVRTIiB8IHNlZCAtZSAncy9edGVybWxpYi4qIC8vJ2AKIAkJZmkKIAotCQlzZWQgLWUgInMlQExJQlNfVE9fTUFLRUAlJExJQlNfVE9fTUFLRSUiIFwKKwkJaWYgdGVzdCAkY2ZfZGlyID0gYysrOyB0aGVuCisJCQlpZiB0ZXN0ICJ4JHdpdGhfc2hhcmVkX2N4eCIgIT0geHllcyAmJiB0ZXN0IC1uICIkY2Zfc2hhcmVkX3N1ZmZpeCI7IHRoZW4KKwkJCQljZl9saXN0PQorCQkJCWZvciBjZl9pdGVtIGluICRMaWJzX1RvX01ha2UKKwkJCQlkbworCQkJCQljYXNlICRjZl9pdGVtIGluCisJCQkJCSgqLmEpCisJCQkJCQk7OworCQkJCQkoKikKKwkJCQkJCWNmX2l0ZW09YGVjaG8gIiRjZl9pdGVtIiB8IHNlZCAtZSAicywiJGNmX3NoYXJlZF9zdWZmaXgiLC5hLCJgCisJCQkJCQk7OworCQkJCQllc2FjCisJCQkJCWZvciBjZl90ZXN0IGluICRjZl9saXN0CisJCQkJCWRvCisJCQkJCQlpZiB0ZXN0ICIkY2ZfdGVzdCIgPSAiJGNmX2l0ZW0iCisJCQkJCQl0aGVuCisJCQkJCQkJY2ZfTElTVF9NT0RFTFM9YGVjaG8gIiRjZl9MSVNUX01PREVMUyIgfCBzZWQgLWUgJ3Mvbm9ybWFsLy8nYAorCQkJCQkJCWNmX2l0ZW09CisJCQkJCQkJYnJlYWsKKwkJCQkJCWZpCisJCQkJCWRvbmUKKwkJCQkJdGVzdCAtbiAiJGNmX2l0ZW0iICYmIGNmX2xpc3Q9IiRjZl9saXN0ICRjZl9pdGVtIgorCQkJCWRvbmUKKwkJCQlMaWJzX1RvX01ha2U9IiRjZl9saXN0IgorCQkJZmkKKwkJZmkKKworCQlzZWQgLWUgInMlQExpYnNfVG9fTWFrZUAlJExpYnNfVG9fTWFrZSUiIFwKIAkJICAgIC1lICJzJUBTSEFSRURfTElCQCUkU0hBUkVEX0xJQiUiIFwKIAkJCSRjZl9kaXIvTWFrZWZpbGUgPiRjZl9kaXIvTWFrZWZpbGUub3V0CiAJCW12ICRjZl9kaXIvTWFrZWZpbGUub3V0ICRjZl9kaXIvTWFrZWZpbGUKIAogCQkkQVdLIC1mICRzcmNkaXIvbWstMHRoLmF3ayBcCi0JCQlsaWJuYW1lPSIke2NmX2Rpcn0ke0xJQl9TVUZGSVh9IiBzdWJzZXRzPSIkTElCX1NVQlNFVFMiIFwKKwkJCWxpYm5hbWU9IiR7Y2ZfZGlyfSR7TElCX1NVRkZJWH0iIHN1YnNldHM9IiRMSUJfU1VCU0VUUyIgdGljbGliPSIkVElDU19MSUJfU1VGRklYIiB0ZXJtbGliPSIkVElORk9fTElCX1NVRkZJWCIgXAogCQkJJHNyY2Rpci8kY2ZfZGlyL21vZHVsZXMgPj4kY2ZfZGlyL01ha2VmaWxlCiAKIAkJZm9yIGNmX3N1YnNldCBpbiAkY2Zfc3Vic2V0cwpAQCAtMjM0Niw4ICszNDUzLDIzIEBACiAJCQljZl9zdWJkaXJzPQogCQkJZm9yIGNmX2l0ZW0gaW4gJGNmX0xJU1RfTU9ERUxTCiAJCQlkbworCiAJCQllY2hvICJBcHBlbmRpbmcgcnVsZXMgZm9yICR7Y2ZfaXRlbX0gbW9kZWwgKCR7Y2ZfZGlyfTogJHtjZl9zdWJzZXR9KSIKIAkJCUNGX1VQUEVSKGNmX0lURU0sJGNmX2l0ZW0pCisKKwkJCUNYWF9NT0RFTD0kY2ZfSVRFTQorCQkJaWYgdGVzdCAiJENYWF9NT0RFTCIgPSBTSEFSRUQ7IHRoZW4KKwkJCQljYXNlICRjZl9jdl9zaGxpYl92ZXJzaW9uIGluCisJCQkJKGN5Z2RsbHxtc3lzZGxsfG1pbmd3KQorCQkJCQl0ZXN0ICJ4JHdpdGhfc2hhcmVkX2N4eCIgPSB4bm8gJiYgQ0ZfVkVSQk9TRShvdmVycmlkaW5nIENYWF9NT0RFTCB0byBTSEFSRUQpCisJCQkJCXdpdGhfc2hhcmVkX2N4eD15ZXMKKwkJCQkJOzsKKwkJCQkoKikKKwkJCQkJdGVzdCAieCR3aXRoX3NoYXJlZF9jeHgiID0geG5vICYmIENYWF9NT0RFTD1OT1JNQUwKKwkJCQkJOzsKKwkJCQllc2FjCisJCQlmaQorCiAJCQlDRl9MSUJfU1VGRklYKCRjZl9pdGVtLGNmX3N1ZmZpeCxjZl9kZXBzdWYpCiAJCQlDRl9PQkpfU1VCRElSKCRjZl9pdGVtLGNmX3N1YmRpcikKIApAQCAtMjM1NSwyMiArMzQ3NywyNCBAQAogCQkJY2ZfbGlibmFtZT0kY2ZfZGlyCiAJCQlpZiB0ZXN0ICRjZl9kaXIgPSBuY3Vyc2VzIDsgdGhlbgogCQkJCWNhc2UgJGNmX3N1YnNldCBpbgotCQkJCSpiYXNlKikKLQkJCQkJY2ZfbGlibmFtZT0ke2NmX2xpYm5hbWV9JExJQl9TVUZGSVgKKwkJCQkoKmJhc2UqKQorCQkJCQljZl9saWJuYW1lPSR7Y2ZfbGlibmFtZX0kVVNFX0xJQl9TVUZGSVgKIAkJCQkJOzsKLQkJCQkqdGVybWxpYiopCisJCQkJKCp0ZXJtbGliKikKIAkJCQkJY2ZfbGlibmFtZT0kVElORk9fTElCX1NVRkZJWAogCQkJCQk7OwotCQkJCXRpY2xpYiopCisJCQkJKHRpY2xpYiopCiAJCQkJCWNmX2xpYm5hbWU9JFRJQ1NfTElCX1NVRkZJWAogCQkJCQk7OwogCQkJCWVzYWMKKwkJCWVsaWYgdGVzdCAkY2ZfZGlyID0gYysrIDsgdGhlbgorCQkJCWNmX2xpYm5hbWU9bmN1cnNlcysrJFVTRV9MSUJfU1VGRklYCiAJCQllbHNlCi0JCQkJY2ZfbGlibmFtZT0ke2NmX2xpYm5hbWV9JExJQl9TVUZGSVgKKwkJCQljZl9saWJuYW1lPSR7Y2ZfbGlibmFtZX0kVVNFX0xJQl9TVUZGSVgKIAkJCWZpCi0JCQlpZiB0ZXN0IC1uICIke0RGVF9BUkdfU1VGRklYfSIgOyB0aGVuCi0JCQkJIyB1bmRvICRMSUJfU1VGRklYIGFkZC1vbiBpbiBDRl9MSUJfU1VGRklYCi0JCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfHNlZCAtZSAicyVeJHtMSUJfU1VGRklYfSUlImAKKwkJCWlmIHRlc3QgLW4gIiR7VVNFX0FSR19TVUZGSVh9IiA7IHRoZW4KKwkJCQkjIHVuZG8gJFVTRV9MSUJfU1VGRklYIGFkZC1vbiBpbiBDRl9MSUJfU1VGRklYCisJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfHNlZCAtZSAicyVeJHtVU0VfTElCX1NVRkZJWH0lJSJgCiAJCQlmaQogCiAJCQkjIFRoZXNlIGRlcGVuZGVuY2llcyByZWFsbHkgYXJlIGZvciBkZXZlbG9wbWVudCwgbm90CkBAIC0yMzkxLDEyICszNTE1LDI3IEBACiAgCQkJY2ZfZGlyX3N1ZmZpeD0KICAJCQlvbGRfY2Zfc3VmZml4PSIkY2Zfc3VmZml4IgogIAkJCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4IiA9IHllcyA7IHRoZW4KLQkJCWlmIHRlc3QgLW4gIiRMSUJfU1VGRklYIiA7IHRoZW4KLQkJCQljYXNlICRMSUJfU1VGRklYIGluCi0JCQkJdyopCi0JCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvdyQvLydgCi0JCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQljZl9kaXJfc3VmZml4PXcKKwkJCWlmIHRlc3QgLW4gIiRVU0VfTElCX1NVRkZJWCIgOyB0aGVuCisJCQkJY2FzZSAkVVNFX0xJQl9TVUZGSVggaW4KKwkJCQkodHcqKQorCQkJCQljZl9saWJuYW1lPWBlY2hvICRjZl9saWJuYW1lIHwgc2VkICdzL3R3JyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXnR3JyRFWFRSQV9TVUZGSVgnLy8nYAorCQkJCQljZl9kaXJfc3VmZml4PXR3JEVYVFJBX1NVRkZJWAorCQkJCQk7OworCQkJCSh0KikKKwkJCQkJY2ZfbGlibmFtZT1gZWNobyAkY2ZfbGlibmFtZSB8IHNlZCAncy90JyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXnQnJEVYVFJBX1NVRkZJWCcvLydgCisJCQkJCWNmX2Rpcl9zdWZmaXg9dCRFWFRSQV9TVUZGSVgKKwkJCQkJOzsKKwkJCQkodyopCisJCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvdyckRVhUUkFfU1VGRklYJyQvLydgCisJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153JyRFWFRSQV9TVUZGSVgnLy8nYAorCQkJCQljZl9kaXJfc3VmZml4PXckRVhUUkFfU1VGRklYCisJCQkJCTs7CisJCQkJKCopCisJCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvJyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXickRVhUUkFfU1VGRklYJy8vJ2AKKwkJCQkJY2ZfZGlyX3N1ZmZpeD0kRVhUUkFfU1VGRklYCiAJCQkJCTs7CiAJCQkJZXNhYwogCQkJZmkKQEAgLTI0MDYsMjEgKzM1NDUsMjUgQEAKIAkJCQluYW1lPSR7Y2ZfbGlibmFtZX0ke2NmX2Rpcl9zdWZmaXh9IFwKIAkJCQl0cmFjZXM9JExJQl9UUkFDSU5HIFwKIAkJCQlNT0RFTD0kY2ZfSVRFTSBcCisJCQkJQ1hYX01PREVMPSRDWFhfTU9ERUwgXAogCQkJCW1vZGVsPSRjZl9zdWJkaXIgXAogCQkJCXByZWZpeD0kY2ZfcHJlZml4IFwKIAkJCQlzdWZmaXg9JGNmX3N1ZmZpeCBcCiAJCQkJc3Vic2V0PSRjZl9zdWJzZXQgXAorCQkJCWRyaXZlcj0kY2ZfY3ZfdGVybV9kcml2ZXIgXAorCQkJCVN5bUxpbms9IiRMTl9TIiBcCiAJCQkJVGVybWxpYlJvb3Q9JFRJTkZPX05BTUUgXAogCQkJCVRlcm1saWJTdWZmaXg9JFRJTkZPX1NVRkZJWCBcCiAJCQkJU2hsaWJWZXI9JGNmX2N2X3NobGliX3ZlcnNpb24gXAogCQkJCVNobGliVmVySW5maXg9JGNmX2N2X3NobGliX3ZlcnNpb25faW5maXggXAotCQkJCVJlTGluaz0ke2NmX2N2X2RvX3JlbGluay1ub30gXAorCQkJCVJlTGluaz0ke2NmX2N2X2RvX3JlbGluazotbm99IFwKIAkJCQlEb0xpbmtzPSRjZl9jdl9kb19zeW1saW5rcyBcCiAJCQkJcm1Tb0xvY3M9JGNmX2N2X3JtX3NvX2xvY3MgXAogCQkJCWxkY29uZmlnPSIkTERDT05GSUciIFwKIAkJCQlvdmVyd3JpdGU9JFdJVEhfT1ZFUldSSVRFIFwKIAkJCQlkZXBlbmQ9IiRjZl9kZXBlbmQiIFwKIAkJCQlob3N0PSIkaG9zdCIgXAorCQkJCWxpYnRvb2xfdmVyc2lvbj0iJExJQlRPT0xfVkVSU0lPTiIgXAogCQkJCSRzcmNkaXIvJGNmX2Rpci9tb2R1bGVzID4+JGNmX2Rpci9NYWtlZmlsZQogCiAJCQljZl9zdWZmaXg9IiRvbGRfY2Zfc3VmZml4IgpAQCAtMjQ0Niw3ICszNTg5LDcgQEAKIAkJZG9uZQogCWZpCiAKLQllY2hvICcJY2QgJyRjZl9kaXInICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9IFskXUAnID4+TWFrZWZpbGUKKwllY2hvICcJY2QgJyRjZl9kaXInICYmICR7TUFLRX0gJHtUT1BfTUZMQUdTfSBbJF1AJyA+Pk1ha2VmaWxlCiBkb25lCiAKIGZvciBjZl9kaXIgaW4gJFNSQ19TVUJESVJTCkBAIC0yNDU3LDExICszNjAwLDExIEBACiAKIAlpZiB0ZXN0IC1mICRjZl9kaXIvTWFrZWZpbGUgOyB0aGVuCiAJCWNhc2UgIiRjZl9kaXIiIGluCi0JCUFkYTk1KSAjKHZpCisJCShBZGE5NSkKIAkJCWVjaG8gJ2xpYnMgXCcgPj4gTWFrZWZpbGUKIAkJCWVjaG8gJ2luc3RhbGwubGlicyBcJyA+PiBNYWtlZmlsZQogCQkJZWNobyAndW5pbnN0YWxsLmxpYnMgOjonID4+IE1ha2VmaWxlCi0JCQllY2hvICcJY2QgJyRjZl9kaXInICYmICR7TUFLRX0gJHtDRl9NRkxBR1N9IFskXUAnID4+IE1ha2VmaWxlCisJCQllY2hvICcJY2QgJyRjZl9kaXInICYmICR7TUFLRX0gJHtUT1BfTUZMQUdTfSBbJF1AJyA+PiBNYWtlZmlsZQogCQkJOzsKIAkJZXNhYwogCWZpCkBAIC0yNDg0LDcgKzM2MjcsNyBAQAogdW5pbnN0YWxsLmxpYnMgXFwKIGluc3RhbGwuJGNmX2RpciBcXAogdW5pbnN0YWxsLiRjZl9kaXIgOjoKLQljZCAkY2ZfZGlyICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXFskXUAKKwljZCAkY2ZfZGlyICYmIFwke01BS0V9IFwke1RPUF9NRkxBR1N9IFxbJF1ACiBDRl9FT0YKIAllbGlmIHRlc3QgLWYgJHNyY2Rpci8kY2ZfZGlyL2hlYWRlcnM7IHRoZW4KIGNhdCA+PiBNYWtlZmlsZSA8PENGX0VPRgpAQCAtMjQ5NCwzOCArMzYzNyw1NyBAQAogdW5pbnN0YWxsLmxpYnMgXFwKIGluc3RhbGwuaW5jbHVkZXMgXFwKIHVuaW5zdGFsbC5pbmNsdWRlcyA6OgotCWNkICRjZl9kaXIgJiYgXCR7TUFLRX0gXCR7Q0ZfTUZMQUdTfSBcWyRdQAorCWNkICRjZl9kaXIgJiYgXCR7TUFLRX0gXCR7VE9QX01GTEFHU30gXFskXUAKIENGX0VPRgogZmkKIGRvbmUKIAoraWYgdGVzdCAieCRjZl93aXRoX2RiX2luc3RhbGwiID0geHllczsgdGhlbgogY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCiAKIGluc3RhbGwubGlicyB1bmluc3RhbGwubGlicyBcXAogaW5zdGFsbC5kYXRhIHVuaW5zdGFsbC5kYXRhIDo6Ci0kTUFLRV9URVJNSU5GTwljZCBtaXNjICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXFskXUAKKyRNQUtFX1RFUk1JTkZPCWNkIG1pc2MgJiYgXCR7TUFLRX0gXCR7VE9QX01GTEFHU30gXFskXUAKK0NGX0VPRgorZWxzZQorY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCisKK2luc3RhbGwubGlicyB1bmluc3RhbGwubGlicyA6OgorCWNkIG1pc2MgJiYgXCR7TUFLRX0gXCR7VE9QX01GTEFHU30gXFskXUAKK0NGX0VPRgorZmkKKworaWYgdGVzdCAieCRjZl93aXRoX21hbnBhZ2VzIiA9IHh5ZXM7IHRoZW4KK2NhdCA+PiBNYWtlZmlsZSA8PENGX0VPRgogCiBpbnN0YWxsLm1hbiBcXAogdW5pbnN0YWxsLm1hbiA6OgotCWNkIG1hbiAmJiBcJHtNQUtFfSBcJHtDRl9NRkxBR1N9IFxbJF1ACisJY2QgbWFuICYmIFwke01BS0V9IFwke1RPUF9NRkxBR1N9IFxbJF1ACitDRl9FT0YKK2ZpCisKK2NhdCA+PiBNYWtlZmlsZSA8PENGX0VPRgogCiBkaXN0Y2xlYW4gOjoKIAlybSAtZiBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBjb25maWcuc3RhdHVzIE1ha2VmaWxlIGluY2x1ZGUvbmN1cnNlc19jZmcuaAogCXJtIC1mIGhlYWRlcnMuc2ggaGVhZGVycy5zZWQgbWtfc2hhcmVkX2xpYi5zaAorCXJtIC1mIGVkaXRfbWFuLiogbWFuX2FsaWFzLioKIAlybSAtcmYgXCR7RElSU19UT19NQUtFfQogQ0ZfRU9GCiAKICMgU3BlY2lhbCBjYXNlOiB0YWNrJ3MgbWFucGFnZSBsaXZlcyBpbiBpdHMgb3duIGRpcmVjdG9yeS4KK2lmIHRlc3QgIngkY2Zfd2l0aF9tYW5wYWdlcyIgPSB4eWVzOyB0aGVuCiBpZiB0ZXN0IC1kIHRhY2sgOyB0aGVuCiBpZiB0ZXN0IC1mICRzcmNkaXIvJHRhY2suaDsgdGhlbgogY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCiAKIGluc3RhbGwubWFuIFxcCiB1bmluc3RhbGwubWFuIDo6Ci0JY2QgdGFjayAmJiBcJHtNQUtFfSBcJHtDRl9NRkxBR1N9IFxbJF1ACisJY2QgdGFjayAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcWyRdQAogQ0ZfRU9GCiBmaQogZmkKK2ZpCiAKIGRubCBJZiB3ZSdyZSBpbnN0YWxsaW5nIGludG8gYSBzdWJkaXJlY3Rvcnkgb2YgL3Vzci9pbmNsdWRlLCBldGMuLCB3ZSBzaG91bGQKIGRubCBwcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkncyBuYW1lIHRvIHRoZSAiI2luY2x1ZGUiIHBhdGhzLiAgSXQgd29uJ3QgaHVydApAQCAtMjUzOCw3ICszNzAwLDcgQEAKIGRubCAoIGdlbmVyYXRpbmcgdGhpcyBzY3JpcHQgbWFrZXMgdGhlIG1ha2VmaWxlcyBhIGxpdHRsZSB0aWRpZXIgOi0pCiBlY2hvIGNyZWF0aW5nIGhlYWRlcnMuc2gKIGNhdCA+aGVhZGVycy5zaCA8PENGX0VPRgotIyEgL2Jpbi9zaAorIyEgJFNIRUxMCiAjIFRoaXMgc2hlbGwgc2NyaXB0IGlzIGdlbmVyYXRlZCBieSB0aGUgJ2NvbmZpZ3VyZScgc2NyaXB0LiAgSXQgaXMgaW52b2tlZCBpbiBhCiAjIHN1YmRpcmVjdG9yeSBvZiB0aGUgYnVpbGQgdHJlZS4gIEl0IGdlbmVyYXRlcyBhIHNlZC1zY3JpcHQgaW4gdGhlIHBhcmVudAogIyBkaXJlY3RvcnkgdGhhdCBpcyB1c2VkIHRvIGFkanVzdCBpbmNsdWRlcyBmb3IgaGVhZGVyIGZpbGVzIHRoYXQgcmVzaWRlIGluIGEKQEAgLTI1NTEsMTUgKzM3MTMsMTUgQEAKIERTVD1cWyRdMQogUkVGPVxbJF0yCiBTUkM9XFskXTMKLVRNUFNSQz1cJHtUTVBESVItL3RtcH0vXGBiYXNlbmFtZSBcJFNSQ1xgXCRcJAotVE1QU0VEPVwke1RNUERJUi0vdG1wfS9oZWFkZXJzLnNlZFwkXCQKK1RNUFNSQz1cJHtUTVBESVI6LS90bXB9L1xgYmFzZW5hbWUgXCRTUkNcYFwkXCQKK1RNUFNFRD1cJHtUTVBESVI6LS90bXB9L2hlYWRlcnMuc2VkXCRcJAogZWNobyBpbnN0YWxsaW5nIFwkU1JDIGluIFwkRFNUCiBDRl9FT0YKIAogaWYgdGVzdCAkV0lUSF9DVVJTRVNfSCA9IHllczsgdGhlbgogCWNhdCA+PmhlYWRlcnMuc2ggPDxDRl9FT0YKIGNhc2UgXCREU1QgaW4KLS8qL2luY2x1ZGUvKikKKygvKi9pbmNsdWRlLyopCiAJRU5EPVxgYmFzZW5hbWUgXCREU1RcYAogCWZvciBpIGluIFxgY2F0IFwkUkVGLy4uLyovaGVhZGVycyB8ZmdyZXAgLXYgIiMiXGAKIAlkbwpAQCAtMjU2Nyw3ICszNzI5LDcgQEAKIAkJZWNobyAicy88XCROQU1FPi88XCRFTkRcL1wkTkFNRT4vIiA+PiBcJFRNUFNFRAogCWRvbmUKIAk7OwotKikKKygqKQogCWVjaG8gIiIgPj4gXCRUTVBTRUQKIAk7OwogZXNhYwpAQCAtMjU3Niw3ICszNzM4LDcgQEAKIGVsc2UKIAljYXQgPj5oZWFkZXJzLnNoIDw8Q0ZfRU9GCiBjYXNlIFwkRFNUIGluCi0vKi9pbmNsdWRlLyopCisoLyovaW5jbHVkZS8qKQogCUVORD1cYGJhc2VuYW1lIFwkRFNUXGAKIAlmb3IgaSBpbiBcYGNhdCBcJFJFRi8uLi8qL2hlYWRlcnMgfGZncmVwIC12ICIjIlxgCiAJZG8KQEAgLTI1ODksNyArMzc1MSw3IEBACiAJCWVjaG8gInMvPFwkTkFNRT4vPFwkRU5EXC9cJE5BTUU+LyIgPj4gXCRUTVBTRUQKIAlkb25lCiAJOzsKLSopCisoKikKIAllY2hvICJzLzxjdXJzZXMuaD4vPG5jdXJzZXMuaD4vIiA+PiBcJFRNUFNFRAogCTs7CiBlc2FjCkBAIC0yNjM5LDEwICszODAxLDEwIEBACiAJCWZpCiAJZmkKIGRvbmUKLQorQUNfU1VCU1QoTGlic19Ub19NYWtlKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9MSUJfU09OQU1FIHZlcnNpb246IDMgdXBkYXRlZDogMjAwNi8xMi8xNiAxNTo1NTo0NgorZG5sIENGX0xJQl9TT05BTUUgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDEwLzA4LzE0IDE4OjI1OjM3CiBkbmwgLS0tLS0tLS0tLS0tLQogZG5sIEZpbmQgdGhlIGFuZCBzb25hbWUgZm9yIHRoZSBnaXZlbiBzaGFyZWQgbGlicmFyeS4gIFNldCB0aGUgY2FjaGUgdmFyaWFibGUKIGRubCBjZl9jdl8kM19zb25hbWUgdG8gdGhpcywgdW5sZXNzIGl0IGlzIG5vdCBmb3VuZC4gIFRoZW4gc2V0IHRoZSBjYWNoZQpAQCAtMjY2NiwyMCArMzgyOCwyMCBAQAogfQogQ0ZfRU9GCiBjZl9zYXZlX0xJQlM9IiRMSUJTIgotCUxJQlM9Ii1sJDMgJExJQlMiCisJQ0ZfQUREX0xJQigkMykKIAlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSA7IHRoZW4KIAkJaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgOyB0aGVuCiAJCQljZl9jdl8kM19zb25hbWU9YGxkZCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MsXi4qLywsJyAtZSAncywgLiokLCwnIHwgZmdyZXAgbGliJDMuYAogCQkJdGVzdCAteiAiJGNmX2N2XyQzX3NvbmFtZSIgJiYgY2ZfY3ZfJDNfc29uYW1lPXVua25vd24KIAkJZmkKIAlmaQotcm0gLWYgY29uZnRlc3QqCitybSAtcmYgY29uZnRlc3QqCiBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgogZmkKIF0pCiBdKQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0xJQl9TVUZGSVggdmVyc2lvbjogMTUgdXBkYXRlZDogMjAwOC8wOS8xMyAxMTo1NDo0OAorZG5sIENGX0xJQl9TVUZGSVggdmVyc2lvbjogMjUgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAogZG5sIC0tLS0tLS0tLS0tLS0KIGRubCBDb21wdXRlIHRoZSBsaWJyYXJ5IGZpbGUtc3VmZml4IGZyb20gdGhlIGdpdmVuIG1vZGVsIG5hbWUKIGRubCAkMSA9IG1vZGVsIG5hbWUKQEAgLTI2ODgsNTYgKzM4NTAsNjQgQEAKIGRubCBUaGUgdmFyaWFibGUgJExJQl9TVUZGSVgsIGlmIHNldCwgcHJlcGVuZHMgdGhlIHZhcmlhYmxlIHRvIHNldC4KIEFDX0RFRlVOKFtDRl9MSUJfU1VGRklYXSwKIFsKLQlBQ19SRVFVSVJFKFtDRl9TVUJTVF9OQ1VSU0VTX1ZFUlNJT05dKQotCWNhc2UgJDEgaW4KLQlsaWJ0b29sKQorCWNhc2UgWCQxIGluCisJKFhsaWJ0b29sKQogCQkkMj0nLmxhJwogCQkkMz1bJF0kMgogCQk7OwotCW5vcm1hbCkKLQkJJDI9Jy5hJwotCQkkMz1bJF0kMgotCQk7OwotCWRlYnVnKQorCShYZGVidWcpCiAJCSQyPSdfZy5hJwogCQkkMz1bJF0kMgogCQk7OwotCXByb2ZpbGUpCisJKFhwcm9maWxlKQogCQkkMj0nX3AuYScKIAkJJDM9WyRdJDIKIAkJOzsKLQlzaGFyZWQpCisJKFhzaGFyZWQpCiAJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCi0JCWN5Z3dpbiopCisJCShhaXhbWzUtN11dKikKKwkJCSQyPScuc28nCisJCQkkMz1bJF0kMgorCQkJOzsKKwkJKGN5Z3dpbip8bXN5cyp8bWluZ3cqKQogCQkJJDI9Jy5kbGwnCiAJCQkkMz0nLmRsbC5hJwogCQkJOzsKLQkJZGFyd2luKikKKwkJKGRhcndpbiopCiAJCQkkMj0nLmR5bGliJwogCQkJJDM9WyRdJDIKIAkJCTs7Ci0JCWhwdXgqKQorCQkoaHB1eCopCiAJCQljYXNlICR0YXJnZXQgaW4KLQkJCWlhNjQqKQorCQkJKGlhNjQqKQogCQkJCSQyPScuc28nCiAJCQkJJDM9WyRdJDIKIAkJCQk7OwotCQkJKikKKwkJCSgqKQogCQkJCSQyPScuc2wnCiAJCQkJJDM9WyRdJDIKIAkJCQk7OwogCQkJZXNhYwogCQkJOzsKLQkJKikJJDI9Jy5zbycKKwkJKCopCisJCQkkMj0nLnNvJwogCQkJJDM9WyRdJDIKIAkJCTs7CiAJCWVzYWMKKwkJOzsKKwkoKikKKwkJJDI9Jy5hJworCQkkMz1bJF0kMgorCQk7OwogCWVzYWMKLQl0ZXN0IC1uICIkTElCX1NVRkZJWCIgJiYgJDI9IiR7TElCX1NVRkZJWH1bJF17JDJ9IgotCXRlc3QgLW4gIiRMSUJfU1VGRklYIiAmJiAkMz0iJHtMSUJfU1VGRklYfVskXXskM30iCisJaWYgdGVzdCAtbiAiJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSIKKwl0aGVuCisJCSQyPSIke0xJQl9TVUZGSVh9JHtFWFRSQV9TVUZGSVh9WyRdeyQyfSIKKwkJJDM9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH1bJF17JDN9IgorCWZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0xJQl9UWVBFIHZlcnNpb246IDQgdXBkYXRlZDogMjAwMC8xMC8yMCAyMjo1Nzo0OQorZG5sIENGX0xJQl9UWVBFIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAogZG5sIC0tLS0tLS0tLS0tCiBkbmwgQ29tcHV0ZSB0aGUgc3RyaW5nIHRvIGFwcGVuZCB0byAtbGlicmFyeSBmcm9tIHRoZSBnaXZlbiBtb2RlbCBuYW1lCiBkbmwgJDEgPSBtb2RlbCBuYW1lCkBAIC0yNzQ2LDE2ICszOTE2LDE2IEBACiBBQ19ERUZVTihbQ0ZfTElCX1RZUEVdLAogWwogCWNhc2UgJDEgaW4KLQlsaWJ0b29sKSAkMj0nJyAgIDs7Ci0Jbm9ybWFsKSAgJDI9JycgICA7OwotCWRlYnVnKSAgICQyPSdfZycgOzsKLQlwcm9maWxlKSAkMj0nX3AnIDs7Ci0Jc2hhcmVkKSAgJDI9JycgICA7OworCShsaWJ0b29sKSAkMj0nJyAgIDs7CisJKG5vcm1hbCkgICQyPScnICAgOzsKKwkoZGVidWcpICAgJDI9J19nJyA7OworCShwcm9maWxlKSAkMj0nX3AnIDs7CisJKHNoYXJlZCkgICQyPScnICAgOzsKIAllc2FjCiAJdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmICQyPSIke0xJQl9TVUZGSVh9WyRdeyQyfSIKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfTElOS19EQVRBT05MWSB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMDYvMTIvMTYgMTI6MzM6MzAKK2RubCBDRl9MSU5LX0RBVEFPTkxZIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NDE6NTEKIGRubCAtLS0tLS0tLS0tLS0tLS0tCiBkbmwgU29tZSBzeXN0ZW1zIGhhdmUgYSBub24tQU5TSSBsaW5rZXIgdGhhdCBkb2Vzbid0IHB1bGwgaW4gbW9kdWxlcyB0aGF0IGhhdmUKIGRubCBvbmx5IGRhdGEgKGkuZS4sIG5vIGZ1bmN0aW9ucyksIGZvciBleGFtcGxlIE5lWFQuICBPbiB0aG9zZSBzeXN0ZW1zIHdlJ2xsCkBAIC0yNzcyLDcgKzM5NDIsNyBAQAogRU9GCiAJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgOyB0aGVuCiAJCW12IGNvbmZ0ZXN0Lm8gZGF0YS5vICYmIFwKLQkJKCAkQVIgJEFSX09QVFMgY29uZnRlc3QuYSBkYXRhLm8gKSAyPiZBQ19GRF9DQyAxPi9kZXYvbnVsbAorCQkoICRBUiAkQVJGTEFHUyBjb25mdGVzdC5hIGRhdGEubyApIDI+JkFDX0ZEX0NDIDE+L2Rldi9udWxsCiAJZmkKIAlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGRhdGEubwogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgpAQCAtMjc5MSw3ICszOTYxLDcgQEAKIEVPRgogCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAJCW12IGNvbmZ0ZXN0Lm8gZnVuYy5vICYmIFwKLQkJKCAkQVIgJEFSX09QVFMgY29uZnRlc3QuYSBmdW5jLm8gKSAyPiZBQ19GRF9DQyAxPi9kZXYvbnVsbAorCQkoICRBUiAkQVJGTEFHUyBjb25mdGVzdC5hIGZ1bmMubyApIDI+JkFDX0ZEX0NDIDE+L2Rldi9udWxsCiAJZmkKIAlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGZ1bmMubwogCSggZXZhbCAkUkFOTElCIGNvbmZ0ZXN0LmEgKSAyPiZBQ19GRF9DQyA+L2Rldi9udWxsCkBAIC0yODEyLDEzICszOTgyLDEzIEBACiBBQ19NU0dfUkVTVUxUKCRjZl9jdl9saW5rX2RhdGFvbmx5KQogCiBpZiB0ZXN0ICIkY2ZfY3ZfbGlua19kYXRhb25seSIgPSBubyA7IHRoZW4KLQlBQ19ERUZJTkUoQlJPS0VOX0xJTktFUikKKwlBQ19ERUZJTkUoQlJPS0VOX0xJTktFUiwxLFtpZiBkYXRhLW9ubHkgbGlicmFyeSBtb2R1bGUgZG9lcyBub3QgbGlua10pCiAJQlJPS0VOX0xJTktFUj0xCiBmaQogCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX0xJTktfRlVOQ1MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDA2LzEyLzE2IDEyOjMzOjMwCitkbmwgQ0ZfTElOS19GVU5DUyB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NTY6MTMKIGRubCAtLS0tLS0tLS0tLS0tCiBkbmwgTW9zdCBVbml4IHN5c3RlbXMgaGF2ZSBib3RoIGxpbmsgYW5kIHN5bWxpbmssIGEgZmV3IGRvbid0IGhhdmUgc3ltbGluay4KIGRubCBBIGZldyBub24tVW5peCBzeXN0ZW1zIGltcGxlbWVudCBzeW1saW5rLCBidXQgbm90IGxpbmsuCkBAIC0yODcwLDI0ICs0MDQwLDEyIEBACiAJCWRvbmUKIAkJdGVzdCAteiAiJGNmX2N2X2xpbmtfZnVuY3MiICYmIGNmX2N2X2xpbmtfZnVuY3M9bm8KIAldKQotCXRlc3QgIiRhY19jdl9mdW5jX2xpbmsiICAgID0geWVzICYmIEFDX0RFRklORShIQVZFX0xJTkspCi0JdGVzdCAiJGFjX2N2X2Z1bmNfc3ltbGluayIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfU1lNTElOSykKKwl0ZXN0ICIkYWNfY3ZfZnVuY19saW5rIiAgICA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9MSU5LLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbGluaygpIGZ1bmN0aW9uXSkKKwl0ZXN0ICIkYWNfY3ZfZnVuY19zeW1saW5rIiA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9TWU1MSU5LLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgc3ltbGluaygpIGZ1bmN0aW9uXSkKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01BSU5fUkVUVVJOIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNi8xMi8xMCAwOTo1MTo1NAotZG5sIC0tLS0tLS0tLS0tLS0tCi1kbmwgQ2hlY2sgaWYgYSByZXR1cm4gZnJvbSBtYWluIHRvIHRoZSBzaGVsbCBhY3R1YWxseSByZXR1cm5zIHRoZSBzYW1lIGV4aXQKLWRubCBjb2RlLiAgVGhpcyBpcyB0cnVlIGZvciBhbG1vc3QgYW55IFBPU0lYIGVudmlyb25tZW50LgotZG5sCi1kbmwgU29tZSB2ZXJ5IG9sZCBlbnZpcm9ubWVudHMgZGlkIG5vdCBmbHVzaCBzdGRvdXQsIGV0Yy4sIG9uIGFuIGV4aXQuICBUaGF0Ci1kbmwgd291bGQgYmUgYSB1c2VmdWwgY2FzZSB0byB0ZXN0IGZvciBhbHNvLgotQUNfREVGVU4oW0NGX01BSU5fUkVUVVJOXSwKLVsKLWNmX2N2X21haW5fcmV0dXJuPXJldHVybgotXSlkbmwKLWRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9NQUtFRkxBR1MgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAwNi8xMC8yMSAwODoyNzowMworZG5sIENGX01BS0VGTEFHUyB2ZXJzaW9uOiAxNyB1cGRhdGVkOiAyMDE1LzA4LzA1IDIwOjQ0OjI4CiBkbmwgLS0tLS0tLS0tLS0tCiBkbmwgU29tZSAnbWFrZScgcHJvZ3JhbXMgc3VwcG9ydCAke01BS0VGTEFHU30sIHNvbWUgJHtNRkxBR1N9LCB0byBwYXNzICdtYWtlJwogZG5sIG9wdGlvbnMgdG8gbG93ZXItbGV2ZWxzLiAgSXQncyB2ZXJ5IHVzZWZ1bCBmb3IgIm1ha2UgLW4iIC0tIGlmIHdlIGhhdmUgaXQuCkBAIC0yOTAwLDI0ICs0MDU4LDI0IEBACiAJZm9yIGNmX29wdGlvbiBpbiAnLSR7TUFLRUZMQUdTfScgJyR7TUZMQUdTfScKIAlkbwogCQljYXQgPmNmX21ha2VmbGFncy50bXAgPDxDRl9FT0YKLVNIRUxMID0gL2Jpbi9zaAorU0hFTEwgPSAkU0hFTEwKIGFsbCA6CiAJQCBlY2hvICcuJGNmX29wdGlvbicKIENGX0VPRgotCQljZl9yZXN1bHQ9YCR7TUFLRS1tYWtlfSAtayAtZiBjZl9tYWtlZmxhZ3MudG1wIDI+L2Rldi9udWxsIHwgc2VkIC1lICdzLFtbIAldXSokLCwnYAorCQljZl9yZXN1bHQ9YCR7TUFLRTotbWFrZX0gLWsgLWYgY2ZfbWFrZWZsYWdzLnRtcCAyPi9kZXYvbnVsbCB8IGZncmVwIC12ICJpbmcgZGlyZWN0b3J5IiB8IHNlZCAtZSAncyxbWyAJXV0qJCwsJ2AKIAkJY2FzZSAiJGNmX3Jlc3VsdCIgaW4KLQkJLiprKQotCQkJY2ZfcmVzdWx0PWAke01BS0UtbWFrZX0gLWsgLWYgY2ZfbWFrZWZsYWdzLnRtcCBDQz1jYyAyPi9kZXYvbnVsbGAKKwkJKC4qa3wuKmt3KQorCQkJY2ZfcmVzdWx0PWAke01BS0U6LW1ha2V9IC1rIC1mIGNmX21ha2VmbGFncy50bXAgQ0M9Y2MgMj4vZGV2L251bGxgCiAJCQljYXNlICIkY2ZfcmVzdWx0IiBpbgotCQkJLipDQz0qKQljZl9jdl9tYWtlZmxhZ3M9CisJCQkoLipDQz0qKQljZl9jdl9tYWtlZmxhZ3M9CiAJCQkJOzsKLQkJCSopCWNmX2N2X21ha2VmbGFncz0kY2Zfb3B0aW9uCisJCQkoKikJY2ZfY3ZfbWFrZWZsYWdzPSRjZl9vcHRpb24KIAkJCQk7OwogCQkJZXNhYwogCQkJYnJlYWsKIAkJCTs7Ci0JCS4tKQk7OwotCQkqKQllY2hvICJnaXZlbiBvcHRpb24gXCIkY2Zfb3B0aW9uXCIsIG5vIG1hdGNoIFwiJGNmX3Jlc3VsdFwiIgorCQkoLi0pCTs7CisJCSgqKQllY2hvICJnaXZlbiBvcHRpb24gXCIkY2Zfb3B0aW9uXCIsIG5vIG1hdGNoIFwiJGNmX3Jlc3VsdFwiIgogCQkJOzsKIAkJZXNhYwogCWRvbmUKQEAgLTI5MjcsMTYgKzQwODUsMjAgQEAKIEFDX1NVQlNUKGNmX2N2X21ha2VmbGFncykKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfTUFLRV9UQUdTIHZlcnNpb246IDIgdXBkYXRlZDogMjAwMC8xMC8wNCAwOToxODo0MAorZG5sIENGX01BS0VfVEFHUyB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTAvMTAvMjMgMTU6NTI6MzIKIGRubCAtLS0tLS0tLS0tLS0KIGRubCBHZW5lcmF0ZSB0YWdzL1RBR1MgdGFyZ2V0cyBmb3IgbWFrZWZpbGVzLiAgRG8gbm90IGdlbmVyYXRlIFRBR1MgaWYgd2UgaGF2ZQogZG5sIGEgbW9ub2Nhc2UgZmlsZXN5c3RlbS4KIEFDX0RFRlVOKFtDRl9NQUtFX1RBR1NdLFsKIEFDX1JFUVVJUkUoW0NGX01JWEVEQ0FTRV9GSUxFTkFNRVNdKQotQUNfQ0hFQ0tfUFJPRyhNQUtFX0xPV0VSX1RBR1MsIGN0YWdzLCB5ZXMsIG5vKQorCitBQ19DSEVDS19QUk9HUyhDVEFHUywgZXhjdGFncyBjdGFncykKK0FDX0NIRUNLX1BST0dTKEVUQUdTLCBleGV0YWdzIGV0YWdzKQorCitBQ19DSEVDS19QUk9HKE1BS0VfTE9XRVJfVEFHUywgJHtDVEFHUzotY3RhZ3N9LCB5ZXMsIG5vKQogCiBpZiB0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyA7IHRoZW4KLQlBQ19DSEVDS19QUk9HKE1BS0VfVVBQRVJfVEFHUywgZXRhZ3MsIHllcywgbm8pCisJQUNfQ0hFQ0tfUFJPRyhNQUtFX1VQUEVSX1RBR1MsICR7RVRBR1M6LWV0YWdzfSwgeWVzLCBubykKIGVsc2UKIAlNQUtFX1VQUEVSX1RBR1M9bm8KIGZpCkBAIC0yOTQ2LDE3ICs0MTA4LDIxIEBACiBlbHNlCiAJTUFLRV9VUFBFUl9UQUdTPSIjIgogZmkKLUFDX1NVQlNUKE1BS0VfVVBQRVJfVEFHUykKIAogaWYgdGVzdCAiJE1BS0VfTE9XRVJfVEFHUyIgPSB5ZXMgOyB0aGVuCiAJTUFLRV9MT1dFUl9UQUdTPQogZWxzZQogCU1BS0VfTE9XRVJfVEFHUz0iIyIKIGZpCisKK0FDX1NVQlNUKENUQUdTKQorQUNfU1VCU1QoRVRBR1MpCisKK0FDX1NVQlNUKE1BS0VfVVBQRVJfVEFHUykKIEFDX1NVQlNUKE1BS0VfTE9XRVJfVEFHUykKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfTUFOUEFHRV9GT1JNQVQgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDAzLzEyLzIwIDE5OjMwOjM0CitkbmwgQ0ZfTUFOUEFHRV9GT1JNQVQgdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgT3B0aW9uIHRvIGFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gb2YgbWFucGFnZSBmb3JtYXQuCiBkbmwgVGhlcmUgYXJlIHNldmVyYWwgc3BlY2lhbCBjYXNlczoKQEAgLTI5ODcsODUgKzQxNTMsODUgQEAKIGNmX3Vua25vd249CiAKIGNhc2UgJE1BTlBBR0VfRk9STUFUIGluCi11bmtub3duKQotICBpZiB0ZXN0IC16ICIkTUFOUEFUSCIgOyB0aGVuCi0gICAgTUFOUEFUSD0iL3Vzci9tYW46L3Vzci9zaGFyZS9tYW4iCi0gIGZpCisodW5rbm93bikKKwlpZiB0ZXN0IC16ICIkTUFOUEFUSCIgOyB0aGVuCisJCU1BTlBBVEg9Ii91c3IvbWFuOi91c3Ivc2hhcmUvbWFuIgorCWZpCiAKLSAgIyBsb29rIGZvciB0aGUgJ2RhdGUnIG1hbi1wYWdlIChpdCdzIG1vc3QgbGlrZWx5IHRvIGJlIGluc3RhbGxlZCEpCi0gIE1BTlBBR0VfRk9STUFUPQotICBjZl9wcmVmb3JtPW5vCi0gIGNmX2NhdG9ubHk9eWVzCi0gIGNmX2V4YW1wbGU9ZGF0ZQorCSMgbG9vayBmb3IgdGhlICdkYXRlJyBtYW4tcGFnZSAoaXQncyBtb3N0IGxpa2VseSB0byBiZSBpbnN0YWxsZWQhKQorCU1BTlBBR0VfRk9STUFUPQorCWNmX3ByZWZvcm09bm8KKwljZl9jYXRvbmx5PXllcworCWNmX2V4YW1wbGU9ZGF0ZQogCi0gIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSR7UEFUSFNFUH0iCi0gIGZvciBjZl9kaXIgaW4gJE1BTlBBVEg7IGRvCi0gICAgdGVzdCAteiAiJGNmX2RpciIgJiYgY2ZfZGlyPS91c3IvbWFuCi0gICAgZm9yIGNmX25hbWUgaW4gJGNmX2Rpci9tYW4qLyRjZl9leGFtcGxlLltbMDFdXSogJGNmX2Rpci9jYXQqLyRjZl9leGFtcGxlLltbMDFdXSogJGNmX2Rpci9tYW4qLyRjZl9leGFtcGxlICRjZl9kaXIvY2F0Ki8kY2ZfZXhhbXBsZQotICAgIGRvCi0gICAgICBjZl90ZXN0PWBlY2hvICRjZl9uYW1lIHwgc2VkIC1lICdzLyovLydgCi0gICAgICBpZiB0ZXN0ICJ4JGNmX3Rlc3QiID0gIngkY2ZfbmFtZSIgOyB0aGVuCisJSUZTPSIke0lGUzotIAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSR7UEFUSF9TRVBBUkFUT1J9IgorCWZvciBjZl9kaXIgaW4gJE1BTlBBVEg7IGRvCisJCXRlc3QgLXogIiRjZl9kaXIiICYmIGNmX2Rpcj0vdXNyL21hbgorCQlmb3IgY2ZfbmFtZSBpbiAkY2ZfZGlyL21hbiovJGNmX2V4YW1wbGUuW1swMV1dKiAkY2ZfZGlyL2NhdCovJGNmX2V4YW1wbGUuW1swMV1dKiAkY2ZfZGlyL21hbiovJGNmX2V4YW1wbGUgJGNmX2Rpci9jYXQqLyRjZl9leGFtcGxlCisJCWRvCisJCQljZl90ZXN0PWBlY2hvICRjZl9uYW1lIHwgc2VkIC1lICdzLyovLydgCisJCQlpZiB0ZXN0ICJ4JGNmX3Rlc3QiID0gIngkY2ZfbmFtZSIgOyB0aGVuCiAKLQljYXNlICIkY2ZfbmFtZSIgaW4KLQkqLmd6KSBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGd6aXAiOzsKLQkqLlopICBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGNvbXByZXNzIjs7Ci0JKi4wKQlNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIEJTREkiOzsKLQkqKSAgICBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIG5vcm1hbCI7OworCQkJCWNhc2UgIiRjZl9uYW1lIiBpbgorCQkJCSgqLmd6KSBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGd6aXAiOzsKKwkJCQkoKi5aKSAgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBjb21wcmVzcyI7OworCQkJCSgqLjApICBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIEJTREkiOzsKKwkJCQkoKikgICAgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBub3JtYWwiOzsKKwkJCQllc2FjCisKKwkJCQljYXNlICIkY2ZfbmFtZSIgaW4KKwkJCQkoJGNmX2Rpci9tYW4qKQorCQkJCQljZl9jYXRvbmx5PW5vCisJCQkJCTs7CisJCQkJKCRjZl9kaXIvY2F0KikKKwkJCQkJY2ZfcHJlZm9ybT15ZXMKKwkJCQkJOzsKKwkJCQllc2FjCisJCQkJYnJlYWsKKwkJCWZpCisKKwkJCSMgaWYgd2UgZm91bmQgYSBtYXRjaCBpbiBlaXRoZXIgbWFuKiBvciBjYXQqLCBzdG9wIGxvb2tpbmcKKwkJCWlmIHRlc3QgLW4gIiRNQU5QQUdFX0ZPUk1BVCIgOyB0aGVuCisJCQkJY2ZfZm91bmQ9bm8KKwkJCQl0ZXN0ICIkY2ZfcHJlZm9ybSIgPSB5ZXMgJiYgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBmb3JtYXR0ZWQiCisJCQkJdGVzdCAiJGNmX2NhdG9ubHkiID0geWVzICYmIE1BTlBBR0VfRk9STUFUPSIkTUFOUEFHRV9GT1JNQVQgY2F0b25seSIKKwkJCQljYXNlICIkY2ZfbmFtZSIgaW4KKwkJCQkoJGNmX2Rpci9jYXQqKQorCQkJCQljZl9mb3VuZD15ZXMKKwkJCQkJOzsKKwkJCQllc2FjCisJCQkJdGVzdCAkY2ZfZm91bmQ9eWVzICYmIGJyZWFrCisJCQlmaQorCQlkb25lCisJCSMgb25seSBjaGVjayB0aGUgZmlyc3QgZGlyZWN0b3J5IGluICRNQU5QQVRIIHdoZXJlIHdlIGZpbmQgbWFucGFnZXMKKwkJaWYgdGVzdCAtbiAiJE1BTlBBR0VfRk9STUFUIiA7IHRoZW4KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCSMgaWYgd2UgZGlkIG5vdCBmaW5kIHRoZSBleGFtcGxlLCBqdXN0IGFzc3VtZSBpdCBpcyBub3JtYWwKKwl0ZXN0IC16ICIkTUFOUEFHRV9GT1JNQVQiICYmIE1BTlBBR0VfRk9STUFUPW5vcm1hbAorCUlGUz0iJGFjX3NhdmVfaWZzIgorCTs7CisoKikKKwlmb3IgY2Zfb3B0aW9uIGluICRNQU5QQUdFX0ZPUk1BVDsgZG8KKwljYXNlICRjZl9vcHRpb24gaW4KKwkoZ3ppcHxjb21wcmVzc3xCU0RJfG5vcm1hbHxmb3JtYXR0ZWR8Y2F0b25seSkKKwkJOzsKKwkoKikKKwkJY2ZfdW5rbm93bj0iJGNmX3Vua25vd24gJGNmX29wdGlvbiIKKwkJOzsKIAllc2FjCi0KLQljYXNlICIkY2ZfbmFtZSIgaW4KLQkkY2ZfZGlyL21hbiopCi0JICBjZl9jYXRvbmx5PW5vCi0JICA7OwotCSRjZl9kaXIvY2F0KikKLQkgIGNmX3ByZWZvcm09eWVzCi0JICA7OwotCWVzYWMKLQlicmVhawotICAgICAgZmkKLQotICAgICAgIyBpZiB3ZSBmb3VuZCBhIG1hdGNoIGluIGVpdGhlciBtYW4qIG9yIGNhdCosIHN0b3AgbG9va2luZwotICAgICAgaWYgdGVzdCAtbiAiJE1BTlBBR0VfRk9STUFUIiA7IHRoZW4KLQljZl9mb3VuZD1ubwotCXRlc3QgIiRjZl9wcmVmb3JtIiA9IHllcyAmJiBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGZvcm1hdHRlZCIKLQl0ZXN0ICIkY2ZfY2F0b25seSIgPSB5ZXMgJiYgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBjYXRvbmx5IgotCWNhc2UgIiRjZl9uYW1lIiBpbgotCSRjZl9kaXIvY2F0KikKLQkgIGNmX2ZvdW5kPXllcwotCSAgOzsKLQllc2FjCi0JdGVzdCAkY2ZfZm91bmQ9eWVzICYmIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICAjIG9ubHkgY2hlY2sgdGhlIGZpcnN0IGRpcmVjdG9yeSBpbiAkTUFOUEFUSCB3aGVyZSB3ZSBmaW5kIG1hbnBhZ2VzCi0gICAgaWYgdGVzdCAtbiAiJE1BTlBBR0VfRk9STUFUIiA7IHRoZW4KLSAgICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKLSAgIyBpZiB3ZSBkaWQgbm90IGZpbmQgdGhlIGV4YW1wbGUsIGp1c3QgYXNzdW1lIGl0IGlzIG5vcm1hbAotICB0ZXN0IC16ICIkTUFOUEFHRV9GT1JNQVQiICYmIE1BTlBBR0VfRk9STUFUPW5vcm1hbAotICBJRlM9IiRhY19zYXZlX2lmcyIKLSAgOzsKLSopCi0gIGZvciBjZl9vcHRpb24gaW4gJE1BTlBBR0VfRk9STUFUOyBkbwotICAgICBjYXNlICRjZl9vcHRpb24gaW4gIyh2aQotICAgICBnemlwfGNvbXByZXNzfEJTREl8bm9ybWFsfGZvcm1hdHRlZHxjYXRvbmx5KQotICAgICAgIDs7Ci0gICAgICopCi0gICAgICAgY2ZfdW5rbm93bj0iJGNmX3Vua25vd24gJGNmX29wdGlvbiIKLSAgICAgICA7OwotICAgICBlc2FjCi0gIGRvbmUKLSAgOzsKKwlkb25lCisJOzsKIGVzYWMKIAogQUNfTVNHX1JFU1VMVCgkTUFOUEFHRV9GT1JNQVQpCiBpZiB0ZXN0IC1uICIkY2ZfdW5rbm93biIgOyB0aGVuCi0gIEFDX01TR19XQVJOKFVuZXhwZWN0ZWQgbWFucGFnZS1mb3JtYXQgJGNmX3Vua25vd24pCisJQUNfTVNHX1dBUk4oVW5leHBlY3RlZCBtYW5wYWdlLWZvcm1hdCAkY2ZfdW5rbm93bikKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01BTlBBR0VfUkVOQU1FUyB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMDUvMDYvMTggMTg6NTE6NTcKK2RubCBDRl9NQU5QQUdFX1JFTkFNRVMgdmVyc2lvbjogMTAgdXBkYXRlZDogMjAxNS8wOC8wNSAyMDo0NDoyOAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQogZG5sIFRoZSBEZWJpYW4gcGVvcGxlIGhhdmUgdGhlaXIgb3duIG5hbWluZyBjb252ZW50aW9uIGZvciBtYW5wYWdlcy4gIFRoaXMKIGRubCBvcHRpb24gbGV0cyB1cyBvdmVycmlkZSB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHJlbmFtaW5nLCBvcgpAQCAtMzA3OSw0MCArNDI0NSw0MCBAQAogCVtNQU5QQUdFX1JFTkFNRVM9JHdpdGh2YWxdLAogCVtNQU5QQUdFX1JFTkFNRVM9eWVzXSkKIAotY2FzZSAiLiRNQU5QQUdFX1JFTkFNRVMiIGluICModmkKLS5ubykgIyh2aQotICA7OwotLnwueWVzKQotICAjIERlYmlhbiAnbWFuJyBwcm9ncmFtPwotICBpZiB0ZXN0IC1mIC9ldGMvZGViaWFuX3ZlcnNpb24gOyB0aGVuCi0gICAgTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyICYmIHB3ZGAvbWFuL21hbl9kYi5yZW5hbWVzCi0gIGVsc2UKLSAgICBNQU5QQUdFX1JFTkFNRVM9bm8KLSAgZmkKLSAgOzsKK2Nhc2UgIi4kTUFOUEFHRV9SRU5BTUVTIiBpbgorKC5ubykKKwk7OworKC58LnllcykKKwkjIERlYmlhbiAnbWFuJyBwcm9ncmFtPworCWlmIHRlc3QgLWYgL2V0Yy9kZWJpYW5fdmVyc2lvbiA7IHRoZW4KKwkJTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyICYmIHB3ZGAvbWFuL21hbl9kYi5yZW5hbWVzCisJZWxzZQorCQlNQU5QQUdFX1JFTkFNRVM9bm8KKwlmaQorCTs7CiBlc2FjCiAKIGlmIHRlc3QgIiRNQU5QQUdFX1JFTkFNRVMiICE9IG5vIDsgdGhlbgotICBpZiB0ZXN0IC1mICRzcmNkaXIvbWFuLyRNQU5QQUdFX1JFTkFNRVMgOyB0aGVuCi0gICAgTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyL21hbiAmJiBwd2RgLyRNQU5QQUdFX1JFTkFNRVMKLSAgZWxpZiB0ZXN0ICEgLWYgJE1BTlBBR0VfUkVOQU1FUyA7IHRoZW4KLSAgICBBQ19NU0dfRVJST1Iobm90IGEgZmlsZW5hbWU6ICRNQU5QQUdFX1JFTkFNRVMpCi0gIGZpCisJaWYgdGVzdCAtZiAkc3JjZGlyL21hbi8kTUFOUEFHRV9SRU5BTUVTIDsgdGhlbgorCQlNQU5QQUdFX1JFTkFNRVM9YGNkICRzcmNkaXIvbWFuICYmIHB3ZGAvJE1BTlBBR0VfUkVOQU1FUworCWVsaWYgdGVzdCAhIC1mICRNQU5QQUdFX1JFTkFNRVMgOyB0aGVuCisJCUFDX01TR19FUlJPUihub3QgYSBmaWxlbmFtZTogJE1BTlBBR0VfUkVOQU1FUykKKwlmaQogCi0gIHRlc3QgISAtZCBtYW4gJiYgbWtkaXIgbWFuCisJdGVzdCAhIC1kIG1hbiAmJiBta2RpciBtYW4KIAotICAjIENvbnN0cnVjdCBhIHNlZC1zY3JpcHQgdG8gcGVyZm9ybSByZW5hbWluZyB3aXRoaW4gbWFuLXBhZ2VzCi0gIGlmIHRlc3QgLW4gIiRNQU5QQUdFX1JFTkFNRVMiIDsgdGhlbgotICAgIHRlc3QgISAtZCBtYW4gJiYgbWtkaXIgbWFuCi0gICAgc2ggJHNyY2Rpci9tYW4vbWFrZV9zZWQuc2ggJE1BTlBBR0VfUkVOQU1FUyA+Li9lZGl0X21hbi5zZWQKLSAgZmkKKwkjIENvbnN0cnVjdCBhIHNlZC1zY3JpcHQgdG8gcGVyZm9ybSByZW5hbWluZyB3aXRoaW4gbWFuLXBhZ2VzCisJaWYgdGVzdCAtbiAiJE1BTlBBR0VfUkVOQU1FUyIgOyB0aGVuCisJCXRlc3QgISAtZCBtYW4gJiYgbWtkaXIgbWFuCisJCSRTSEVMTCAkc3JjZGlyL21hbi9tYWtlX3NlZC5zaCAkTUFOUEFHRV9SRU5BTUVTID4uL2VkaXRfbWFuLnNlZAorCWZpCiBmaQogCiBBQ19NU0dfUkVTVUxUKCRNQU5QQUdFX1JFTkFNRVMpCiBBQ19TVUJTVChNQU5QQUdFX1JFTkFNRVMpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01BTlBBR0VfU1lNTElOS1MgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDAzLzEyLzEzIDE4OjAxOjU4CitkbmwgQ0ZfTUFOUEFHRV9TWU1MSU5LUyB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgU29tZSBwZW9wbGUgZXhwZWN0IGVhY2ggdG9vbCB0byBtYWtlIGFsbCBhbGlhc2VzIGZvciBtYW5wYWdlcyBpbiB0aGUKIGRubCBtYW4tZGlyZWN0b3J5LiAgVGhpcyBhY2NvbW1vZGF0ZXMgdGhlIG9sZGVyLCBsZXNzLWNhcGFibGUgaW1wbGVtZW50YXRpb25zCkBAIC0zMTI4LDExICs0Mjk0LDE0IEBACiAKIEFDX01TR19SRVNVTFQoJE1BTlBBR0VfQUxJQVNFUykKIAotaWYgdGVzdCAiJExOX1MiID0gImxuIC1zIjsgdGhlbgorY2FzZSAieCRMTl9TIiBpbgorKHhsbiopCiAJY2ZfdXNlX3N5bWxpbmtzPXllcwotZWxzZQorCTs7CisoKikKIAljZl91c2Vfc3ltbGlua3M9bm8KLWZpCisJOzsKK2VzYWMKIAogTUFOUEFHRV9TWU1MSU5LUz1ubwogaWYgdGVzdCAiJE1BTlBBR0VfQUxJQVNFUyIgPSB5ZXMgOyB0aGVuCkBAIC0zMTcxLDcgKzQzNDAsNyBAQAogQUNfTVNHX1JFU1VMVCgkTUFOUEFHRV9UQkwpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01BTl9QQUdFUyB2ZXJzaW9uOiAzNSB1cGRhdGVkOiAyMDA3LzAzLzMxIDExOjQ3OjI5CitkbmwgQ0ZfTUFOX1BBR0VTIHZlcnNpb246IDQ2IHVwZGF0ZWQ6IDIwMTUvMDgvMDUgMjA6NDQ6MjgKIGRubCAtLS0tLS0tLS0tLS0KIGRubCBUcnkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtYW4tcGFnZXMgb24gdGhlIHN5c3RlbSBhcmUgY29tcHJlc3NlZCwgYW5kIGlmCiBkbmwgc28sIHdoYXQgZm9ybWF0IGlzIHVzZWQuICBVc2UgdGhpcyBpbmZvcm1hdGlvbiB0byBjb25zdHJ1Y3QgYSBzY3JpcHQgdGhhdApAQCAtMzE4NCw1MCArNDM1Myw1MSBAQAogQ0ZfTUFOUEFHRV9TWU1MSU5LUwogQ0ZfTUFOUEFHRV9UQkwKIAotICBpZiB0ZXN0ICIkcHJlZml4IiA9ICJOT05FIiA7IHRoZW4KLSAgICAgY2ZfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0gIGVsc2UKLSAgICAgY2ZfcHJlZml4PSIkcHJlZml4IgotICBmaQoraWYgdGVzdCAiJHByZWZpeCIgPSAiTk9ORSIgOyB0aGVuCisJY2ZfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitlbHNlCisJY2ZfcHJlZml4PSIkcHJlZml4IgorZmkKIAotICBjYXNlICIkTUFOUEFHRV9GT1JNQVQiIGluICMgKHZpCi0gICpjYXRvbmx5KikgIyAodmkKLSAgICBjZl9mb3JtYXQ9eWVzCi0gICAgY2ZfaW5ib3RoPW5vCi0gICAgOzsKLSAgKmZvcm1hdHRlZCopICMgKHZpCi0gICAgY2ZfZm9ybWF0PXllcwotICAgIGNmX2luYm90aD15ZXMKLSAgICA7OwotICAqKQotICAgIGNmX2Zvcm1hdD1ubwotICAgIGNmX2luYm90aD1ubwotICAgIDs7Ci0gIGVzYWMKK2Nhc2UgIiRNQU5QQUdFX0ZPUk1BVCIgaW4KKygqY2F0b25seSopCisJY2ZfZm9ybWF0PXllcworCWNmX2luYm90aD1ubworCTs7CisoKmZvcm1hdHRlZCopCisJY2ZfZm9ybWF0PXllcworCWNmX2luYm90aD15ZXMKKwk7OworKCopCisJY2ZfZm9ybWF0PW5vCisJY2ZfaW5ib3RoPW5vCisJOzsKK2VzYWMKIAogdGVzdCAhIC1kIG1hbiAmJiBta2RpciBtYW4KIAogY2Zfc29fc3RyaXA9CiBjZl9jb21wcmVzcz0KLWNhc2UgIiRNQU5QQUdFX0ZPUk1BVCIgaW4gIyh2aQotKmNvbXByZXNzKikgIyh2aQorY2FzZSAiJE1BTlBBR0VfRk9STUFUIiBpbgorKCpjb21wcmVzcyopCiAJY2Zfc29fc3RyaXA9IloiCiAJY2ZfY29tcHJlc3M9Y29tcHJlc3MKLSAgOzsKLSpnemlwKikgIyh2aQorCTs7CisoKmd6aXAqKQogCWNmX3NvX3N0cmlwPSJneiIKIAljZl9jb21wcmVzcz1nemlwCi0gIDs7CisJOzsKIGVzYWMKIAogY2ZfZWRpdF9tYW49Li9lZGl0X21hbi5zaAogY2ZfbWFuX2FsaWFzPWBwd2RgL21hbl9hbGlhcy5zZWQKIAogY2F0ID4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLSMhIC9iaW4vc2gKKyMhICRTSEVMTAogIyB0aGlzIHNjcmlwdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIGNvbmZpZ3VyZS1zY3JpcHQgQ0ZfTUFOX1BBR0VTIG1hY3JvLgogCiBwcmVmaXg9IiRjZl9wcmVmaXgiCitkYXRhcm9vdGRpcj0iJGRhdGFyb290ZGlyIgogZGF0YWRpcj0iJGRhdGFkaXIiCiAKIE5DVVJTRVNfTUFKT1I9IiROQ1VSU0VTX01BSk9SIgpAQCAtMzIzNywxNCArNDQwNywxMiBAQAogTkNVUlNFU19PU1BFRUQ9IiROQ1VSU0VTX09TUEVFRCIKIFRFUk1JTkZPPSIkVEVSTUlORk8iCiAKLU1LRElSUz0ic2ggYGNkICRzcmNkaXIgJiYgcHdkYC9ta2RpcnMuc2giCi0KIElOU1RBTEw9IiRJTlNUQUxMIgogSU5TVEFMTF9EQVRBPSIkSU5TVEFMTF9EQVRBIgogCiB0cmFuc2Zvcm09IiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIgogCi1UTVA9XCR7VE1QRElSLS90bXB9L21hblwkXCQKK1RNUD1cJHtUTVBESVI6PS90bXB9L21hblwkXCQKIHRyYXAgInJtIC1mIFwkVE1QIiAwIDEgMiA1IDE1CiAKIGZvcm09XFskXTEKQEAgLTMyNjMsNyArNDQzMSw3IEBACiBpZiB0ZXN0ICJcJGZvcm0iID0gbm9ybWFsIDsgdGhlbgogCWlmIHRlc3QgIiRjZl9mb3JtYXQiID0geWVzIDsgdGhlbgogCWlmIHRlc3QgIiRjZl9pbmJvdGgiID0gbm8gOyB0aGVuCi0JCXNoIFxbJF0wIGZvcm1hdCBcJHZlcmIgXCRtYW5kaXIgXCRzcmNkaXIgXFskXSoKKwkJJFNIRUxMIFxbJF0wIGZvcm1hdCBcJHZlcmIgXCRtYW5kaXIgXCRzcmNkaXIgXFskXSoKIAkJZXhpdCAkPwogCWZpCiAJZmkKQEAgLTMyNzYsMTMgKzQ0NDQsMTMgQEAKIAogIyBwcm9jZXNzIHRoZSBsaXN0IG9mIHNvdXJjZS1maWxlcwogZm9yIGkgaW4gXFskXSogOyBkbwotY2FzZSBcJGkgaW4gIyh2aQotKi5vcmlnfCoucmVqKSA7OyAjKHZpCi0qLltbMC05XV0qKQorY2FzZSBcJGkgaW4KKygqLm9yaWd8Ki5yZWopIDs7CisoKi5bWzAtOV1dKikKIAlzZWN0aW9uPVxgZXhwciAiXCRpIiA6ICcuKlxcLlxcKFtbMC05XV1cXClbW3htXV0qJ1xgOwogCWlmIHRlc3QgXCR2ZXJiID0gaW5zdGFsbGluZyA7IHRoZW4KIAlpZiB0ZXN0ICEgLWQgXCRjZl9zdWJkaXJcJHtzZWN0aW9ufSA7IHRoZW4KLQkJXCRNS0RJUlMgXCRjZl9zdWJkaXJcJHNlY3Rpb24KKwkJbWtkaXIgLXAgXCRjZl9zdWJkaXJcJHNlY3Rpb24KIAlmaQogCWZpCiAKQEAgLTMyOTAsMTEgKzQ0NTgsMTIgQEAKIAlpZiB0ZXN0ICEgLWYgJGNmX21hbl9hbGlhcyA7IHRoZW4KIGNhdCA+PiRjZl9tYW5fYWxpYXMgPDwtQ0ZfRU9GMgogCQlzLEBEQVRBRElSQCxcJGRhdGFkaXIsZwotCQlzLEBURVJNSU5GT0AsXCRURVJNSU5GTyxnCi0JCXMsQE5DVVJTRVNfTUFKT1JALFwkTkNVUlNFU19NQUpPUixnCi0JCXMsQE5DVVJTRVNfTUlOT1JALFwkTkNVUlNFU19NSU5PUixnCi0JCXMsQE5DVVJTRVNfUEFUQ0hALFwkTkNVUlNFU19QQVRDSCxnCi0JCXMsQE5DVVJTRVNfT1NQRUVEQCxcJE5DVVJTRVNfT1NQRUVELGcKKwkJcyxAVEVSTUlORk9ALFwke1RFUk1JTkZPOj0ibm8gZGVmYXVsdCB2YWx1ZSJ9LGcKKwkJcyxAVEVSTUlORk9fRElSU0AsXCR7VEVSTUlORk9fRElSUzo9Im5vIGRlZmF1bHQgdmFsdWUifSxnCisJCXMsQE5DVVJTRVNfTUFKT1JALFwke05DVVJTRVNfTUFKT1I6PSJubyBkZWZhdWx0IHZhbHVlIn0sZworCQlzLEBOQ1VSU0VTX01JTk9SQCxcJHtOQ1VSU0VTX01JTk9SOj0ibm8gZGVmYXVsdCB2YWx1ZSJ9LGcKKwkJcyxATkNVUlNFU19QQVRDSEAsXCR7TkNVUlNFU19QQVRDSDo9Im5vIGRlZmF1bHQgdmFsdWUifSxnCisJCXMsQE5DVVJTRVNfT1NQRUVEQCxcJHtOQ1VSU0VTX09TUEVFRDo9Im5vIGRlZmF1bHQgdmFsdWUifSxnCiBDRl9FT0YKIAlpZmVsc2UoJDEsLCxbCiAJZm9yIGNmX25hbWUgaW4gJDEKQEAgLTMzMDIsNyArNDQ3MSw3IEBACiAJCWNmX05BTUU9YGVjaG8gIiRjZl9uYW1lIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKIAkJY2ZfbmFtZT1gZWNobyAkY2ZfbmFtZXxzZWQgIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lImAKIGNhdCA+PiRjZl9lZGl0X21hbiA8PC1DRl9FT0YKLQkJcyxAJGNmX05BTUVALCRjZl9uYW1lLAorCQlzLEAkY2ZfTkFNRUAsJGNmX25hbWUsZwogQ0ZfRU9GCiAJZG9uZQogCV0pCkBAIC0zMzIzLDcgKzQ0OTIsOSBAQAogCiBpZiB0ZXN0ICIkTUFOUEFHRV9BTElBU0VTIiAhPSBubyA7IHRoZW4KIGNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCWFsaWFzZXM9XGBzZWQgLWYgXCR0b3Bfc3JjZGlyL21hbi9tYW5saW5rcy5zZWQgXCRpbmFsaWFzIHxzZWQgLWYgJGNmX21hbl9hbGlhcyB8IHNvcnQgLXVcYAorCW5DdXJzZXM9aWdub3JlLjN4CisJdGVzdCAkd2l0aF9jdXJzZXNfaCA9IHllcyAmJiBuQ3Vyc2VzPW5jdXJzZXMuM3gKKwlhbGlhc2VzPVxgc2VkIC1mIFwkdG9wX3NyY2Rpci9tYW4vbWFubGlua3Muc2VkIFwkaW5hbGlhcyB8c2VkIC1mICRjZl9tYW5fYWxpYXMgfCBzb3J0IC11OyB0ZXN0IFwkaW5hbGlhcyA9IFwkbkN1cnNlcyAmJiBlY2hvIGN1cnNlc1xgCiBDRl9FT0YKIGZpCiAKQEAgLTMzNjksNiArNDU0MCwxMyBAQAogZmkKIENGX0VPRgogCitpZiB0ZXN0ICR3aXRoX292ZXJ3cml0ZSAhPSB5ZXMgOyB0aGVuCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwlzZWQgLWUgIi9cI1sgICAgXSppbmNsdWRlL3MsPGN1cnNlcy5oLDxuY3Vyc2VzJExJQl9TVUZGSVgvY3Vyc2VzLmgsIiA8IFwkVE1QID5cJFRNUC5vdXQKKwltdiBcJFRNUC5vdXQgXCRUTVAKK0NGX0VPRgorZmkKKwogaWYgdGVzdCAkd2l0aF9jdXJzZXNfaCAhPSB5ZXMgOyB0aGVuCiBjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKIAlzZWQgLWUgIi9cI1sgICAgXSppbmNsdWRlL3MsY3Vyc2VzLmgsbmN1cnNlcy5oLCIgPCBcJFRNUCA+XCRUTVAub3V0CkBAIC0zMzk1LDggKzQ1NzMsOCBAQAogQ0ZfRU9GCiBmaQogCi1jYXNlICIkTUFOUEFHRV9GT1JNQVQiIGluICModmkKLSpCU0RJKikKK2Nhc2UgIiRNQU5QQUdFX0ZPUk1BVCIgaW4KKygqQlNESSopCiBjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKIAlpZiB0ZXN0IFwkZm9ybSA9IGZvcm1hdCA7IHRoZW4KIAkJIyBCU0RJIGluc3RhbGxzIG9ubHkgLjAgc3VmZml4ZXMgaW4gdGhlIGNhdCBkaXJlY3RvcmllcwpAQCAtMzQzMSw4ICs0NjA5LDIxIEBACiAJCQkJCQkJZmkKIAkJCQkJCWZpCiAJCQkJCQllY2hvIC4uIFwkdmVyYiBhbGlhcyBcJGNmX2FsaWFzXCR7c3VmZml4fQorQ0ZfRU9GCitjYXNlICJ4JExOX1MiIGluCisoKi1mKQorY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJCQkJCQkkTE5fUyBcJGNmX3RhcmdldCBcJGNmX2FsaWFzXCR7c3VmZml4fQorQ0ZfRU9GCisJOzsKKygqKQorY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCiAJCQkJCQlybSAtZiBcJGNmX2FsaWFzXCR7c3VmZml4fQogCQkJCQkJJExOX1MgXCRjZl90YXJnZXQgXCRjZl9hbGlhc1wke3N1ZmZpeH0KK0NGX0VPRgorCTs7Citlc2FjCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKIAkJCQkJZWxpZiB0ZXN0ICJcJGNmX3RhcmdldCIgIT0gIlwkY2ZfYWxpYXNcJHtzdWZmaXh9IiA7IHRoZW4KIAkJCQkJCWVjaG8gIi5zbyBcJGNmX3NvdXJjZSIgPlwkVE1QCiBDRl9FT0YKQEAgLTM0ODEsNyArNDY3Miw3IEBACiAKIGlmIHRlc3QgJGNmX2luYm90aCA9IHllcyA7IHRoZW4KIGlmIHRlc3QgXCRmb3JtICE9IGZvcm1hdCA7IHRoZW4KLQlzaCBcWyRdMCBmb3JtYXQgXCR2ZXJiIFwkbWFuZGlyIFwkc3JjZGlyIFxbJF0qCisJJFNIRUxMIFxbJF0wIGZvcm1hdCBcJHZlcmIgXCRtYW5kaXIgXCRzcmNkaXIgXFskXSoKIGZpCiBmaQogCkBAIC0zNDkxLDcgKzQ2ODIsNyBAQAogCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01BVEhfTElCIHZlcnNpb246IDUgdXBkYXRlZDogMjAwMC8wNS8yOCAwMTozOToxMAorZG5sIENGX01BVEhfTElCIHZlcnNpb246IDggdXBkYXRlZDogMjAxMC8wNS8yOSAxNjozMTowMgogZG5sIC0tLS0tLS0tLS0tCiBkbmwgQ2hlY2tzIGZvciBsaWJyYXJpZXMuICBBdCBsZWFzdCBvbmUgVU5JWCBzeXN0ZW0sIEFwcGxlIE1hY2ludG9zaAogZG5sIFJoYXBzb2R5IDUuNSwgZG9lcyBub3QgaGF2ZSAtbG0uICBXZSBjYW5ub3QgdXNlIHRoZSBzaW1wbGVyCkBAIC0zNTA0LDE4ICs0Njk1LDE4IEBACiAJI2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2luY2x1ZGUgPG1hdGguaD4KIAldLAotCVtkb3VibGUgeCA9IHJhbmQoKTsgcHJpbnRmKCJyZXN1bHQgPSAlZ1xuIiwgXWlmZWxzZSgkMiwsc2luKHgpLCQyKVspXSwKKwlbZG91YmxlIHggPSByYW5kKCk7IHByaW50ZigicmVzdWx0ID0gJWdcbiIsIF1pZmVsc2UoWyQyXSwsc2luKHgpLCQyKVspXSwKIAlbY2ZfY3ZfbmVlZF9saWJtPW5vXSwKIAlbY2ZfY3ZfbmVlZF9saWJtPXllc10pXSkKIGlmIHRlc3QgIiRjZl9jdl9uZWVkX2xpYm0iID0geWVzCiB0aGVuCiBpZmVsc2UoJDEsLFsKLQlMSUJTPSIkTElCUyAtbG0iCisJQ0ZfQUREX0xJQihtKQogXSxbJDE9LWxtXSkKIGZpCiBdKQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01JWEVEQ0FTRV9GSUxFTkFNRVMgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDAzLzA5LzIwIDE3OjA3OjU1CitkbmwgQ0ZfTUlYRURDQVNFX0ZJTEVOQU1FUyB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgaWYgdGhlIGZpbGUtc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzLiAgSWYgd2UncmUgYWJsZSB0bwogZG5sIGNyZWF0ZSBhIGxvd2VyY2FzZSBuYW1lIGFuZCBzZWUgaXQgYXMgdXBwZXJjYXNlLCBpdCBkb2Vzbid0IHN1cHBvcnQgdGhhdC4KQEAgLTM1MjMsMTEgKzQ3MTQsMTEgQEAKIFsKIEFDX0NBQ0hFX0NIRUNLKGlmIGZpbGVzeXN0ZW0gc3VwcG9ydHMgbWl4ZWQtY2FzZSBmaWxlbmFtZXMsY2ZfY3ZfbWl4ZWRjYXNlLFsKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgotCWNhc2UgJHRhcmdldF9hbGlhcyBpbiAjKHZpCi0JKi1vczItZW14KnwqLW1zZG9zZGpncHAqfCotY3lnd2luKnwqLW1pbmd3MzIqfCotdXdpbiopICModmkKKwljYXNlICR0YXJnZXRfYWxpYXMgaW4KKwkoKi1vczItZW14KnwqLW1zZG9zZGpncHAqfCotY3lnd2luKnwqLW1zeXMqfCotbWluZ3cqfCotdXdpbiopCiAJCWNmX2N2X21peGVkY2FzZT1ubwogCQk7OwotCSopCisJKCopCiAJCWNmX2N2X21peGVkY2FzZT15ZXMKIAkJOzsKIAllc2FjCkBAIC0zNTQyLDE2ICs0NzMzLDE2IEBACiAJcm0gLWYgY29uZnRlc3QgQ09ORlRFU1QKIGZpCiBdKQotdGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgJiYgQUNfREVGSU5FKE1JWEVEQ0FTRV9GSUxFTkFNRVMpCit0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyAmJiBBQ19ERUZJTkUoTUlYRURDQVNFX0ZJTEVOQU1FUywxLFtEZWZpbmUgdG8gMSBpZiBmaWxlc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzLl0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01LU1RFTVAgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDA2LzEyLzE2IDEyOjMzOjMwCitkbmwgQ0ZfTUtTVEVNUCB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTIvMTAvMDMgMDQ6MzQ6NDkKIGRubCAtLS0tLS0tLS0tCiBkbmwgQ2hlY2sgZm9yIGEgd29ya2luZyBta3N0ZW1wLiAgVGhpcyBjcmVhdGVzIHR3byBmaWxlcywgY2hlY2tzIHRoYXQgdGhleSBhcmUKIGRubCBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgZGlzdGluY3QgKEFtaWdhT1MgYXBwYXJlbnRseSBmYWlscyBvbiB0aGUgbGFzdCkuCiBBQ19ERUZVTihbQ0ZfTUtTVEVNUF0sWwogQUNfQ0FDSEVfQ0hFQ0soZm9yIHdvcmtpbmcgbWtzdGVtcCwgY2ZfY3ZfZnVuY19ta3N0ZW1wLFsKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KgogQUNfVFJZX1JVTihbCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNTg3LDQ2ICs0Nzc4LDQ4IEBACiB9CiBdLFtjZl9jdl9mdW5jX21rc3RlbXA9eWVzCiBdLFtjZl9jdl9mdW5jX21rc3RlbXA9bm8KLV0sW0FDX0NIRUNLX0ZVTkMobWtzdGVtcCkKK10sW2NmX2N2X2Z1bmNfbWtzdGVtcD1tYXliZV0pCiBdKQotXSkKLWlmIHRlc3QgIiRjZl9jdl9mdW5jX21rc3RlbXAiID0geWVzIDsgdGhlbgotCUFDX0RFRklORShIQVZFX01LU1RFTVApCitpZiB0ZXN0ICJ4JGNmX2N2X2Z1bmNfbWtzdGVtcCIgPSB4bWF5YmUgOyB0aGVuCisJQUNfQ0hFQ0tfRlVOQyhta3N0ZW1wKQorZmkKK2lmIHRlc3QgIngkY2ZfY3ZfZnVuY19ta3N0ZW1wIiA9IHh5ZXMgfHwgdGVzdCAieCRhY19jdl9mdW5jX21rc3RlbXAiID0geHllcyA7IHRoZW4KKwlBQ19ERUZJTkUoSEFWRV9NS1NURU1QLDEsW0RlZmluZSB0byAxIGlmIG1rc3RlbXAoKSBpcyBhdmFpbGFibGUgYW5kIHdvcmtpbmcuXSkKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX01TR19MT0cgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDA3LzA3LzI5IDA5OjU1OjEyCitkbmwgQ0ZfTVNHX0xPRyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTAvMTAvMjMgMTU6NTI6MzIKIGRubCAtLS0tLS0tLS0tCiBkbmwgV3JpdGUgYSBkZWJ1ZyBtZXNzYWdlIHRvIGNvbmZpZy5sb2csIGFsb25nIHdpdGggdGhlIGxpbmUgbnVtYmVyIGluIHRoZQogZG5sIGNvbmZpZ3VyZSBzY3JpcHQuCiBBQ19ERUZVTihbQ0ZfTVNHX0xPR10sWwotZWNobyAiJHthc19tZS1jb25maWd1cmV9Ol9fb2xpbmVfXzogdGVzdGluZyAkKiAuLi4iIDE+JkFDX0ZEX0NDCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ol9fb2xpbmVfXzogdGVzdGluZyAkKiAuLi4iIDE+JkFDX0ZEX0NDCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX05DVVJTRVNfQUJJXzYgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA1LzA5LzE3IDE4OjQyOjQ5CitkbmwgQ0ZfTkNVUlNFU19BQklfNiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTUvMDYvMDYgMTY6MTA6MTEKIGRubCAtLS0tLS0tLS0tLS0tLS0tCiBkbmwgU2V0IG5jdXJzZXMnIEFCSSB0byA2IHVubGVzcyBvdmVycmlkZGVuIGJ5IGV4cGxpY2l0IGNvbmZpZ3VyZSBvcHRpb24sIGFuZAogZG5sIHdhcm4gYWJvdXQgdGhpcy4KIEFDX0RFRlVOKFtDRl9OQ1VSU0VTX0FCSV82XSxbCiBpZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgIT0gc2V0OyB0aGVuCiAJY2FzZSAkY2ZfY3ZfcmVsX3ZlcnNpb24gaW4KLQk1LiopCisJKDUuKikKIAkJY2ZfY3ZfcmVsX3ZlcnNpb249Ni4wCiAJCWNmX2N2X2FiaV92ZXJzaW9uPTYKLQkJQUNfTVNHX1dBUk4oT3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24pCisJCUFDX01TR19XQVJOKG92ZXJyaWRpbmcgQUJJIHZlcnNpb24gdG8gJGNmX2N2X2FiaV92ZXJzaW9uKQogCQk7OwogCWVzYWMKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX05PX0xFQUtTX09QVElPTiB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDYvMTIvMTYgMTQ6MjQ6MDUKK2RubCBDRl9OT19MRUFLU19PUFRJT04gdmVyc2lvbjogNiB1cGRhdGVkOiAyMDE1LzA0LzEyIDE1OjM5OjAwCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgc2VlIENGX1dJVEhfTk9fTEVBS1MKIEFDX0RFRlVOKFtDRl9OT19MRUFLU19PUFRJT05dLFsKIEFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2UgJDEgZm9yIHRlc3RpbmcpCiBBQ19BUkdfV0lUSCgkMSwKIAlbJDJdLAotCVtBQ19ERUZJTkUoJDMpaWZlbHNlKFskNF0sLFsKKwlbQUNfREVGSU5FX1VOUVVPVEVEKCQzLDEsIkRlZmluZSB0byAxIGlmIHlvdSB3YW50IHRvIHVzZSAkMSBmb3IgdGVzdGluZy4iKWlmZWxzZShbJDRdLCxbCiAJICQ0CiBdKQogCTogJHt3aXRoX2NmbGFnczo9LWd9CkBAIC0zNjM1LDEyICs0ODI4LDEyIEBACiAJW3dpdGhfJDE9XSkKIEFDX01TR19SRVNVTFQoJHt3aXRoXyQxOi1ub30pCiAKLWNhc2UgLiR3aXRoX2NmbGFncyBpbiAjKHZpCi0uKi1nKikKLQljYXNlIC4kQ0ZMQUdTIGluICModmkKLQkuKi1nKikgIyh2aQorY2FzZSAuJHdpdGhfY2ZsYWdzIGluCisoLiotZyopCisJY2FzZSAuJENGTEFHUyBpbgorCSguKi1nKikKIAkJOzsKLQkqKQorCSgqKQogCQlDRl9BRERfQ0ZMQUdTKFstZ10pCiAJCTs7CiAJZXNhYwpAQCAtMzY0OCwxNyArNDg0MSwxNyBAQAogZXNhYwogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9OVU1CRVJfU1lOVEFYIHZlcnNpb246IDEgdXBkYXRlZDogMjAwMy8wOS8yMCAxODoxMjo0OQorZG5sIENGX05VTUJFUl9TWU5UQVggdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CiBkbmwgLS0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGlmIHRoZSBnaXZlbiB2YXJpYWJsZSBpcyBhIG51bWJlci4gIElmIG5vdCwgcmVwb3J0IGFuIGVycm9yLgogZG5sICQxIGlzIHRoZSB2YXJpYWJsZQogZG5sICQyIGlzIHRoZSBtZXNzYWdlCiBBQ19ERUZVTihbQ0ZfTlVNQkVSX1NZTlRBWF0sWwogaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICBjYXNlICQxIGluICModmkKLSAgW1swLTldXSopICModmkKKyAgY2FzZSAkMSBpbgorICAoW1swLTldXSopCiAgCTs7Ci0gICopCisgICgqKQogCUFDX01TR19FUlJPUigkMiBpcyBub3QgYSBudW1iZXI6ICQxKQogIAk7OwogICBlc2FjCkBAIC0zNjY3LDQwICs0ODYwLDQzIEBACiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9PQkpfU1VCRElSIHZlcnNpb246IDQgdXBkYXRlZDogMjAwMi8wMi8yMyAyMDozODozMQorZG5sIENGX09CSl9TVUJESVIgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CiBkbmwgLS0tLS0tLS0tLS0tLQogZG5sIENvbXB1dGUgdGhlIG9iamVjdC1kaXJlY3RvcnkgbmFtZSBmcm9tIHRoZSBnaXZlbiBtb2RlbCBuYW1lCiBBQ19ERUZVTihbQ0ZfT0JKX1NVQkRJUl0sCiBbCiAJY2FzZSAkMSBpbgotCWxpYnRvb2wpICQyPSdvYmpfbG8nICA7OwotCW5vcm1hbCkgICQyPSdvYmplY3RzJyA7OwotCWRlYnVnKSAgICQyPSdvYmpfZycgOzsKLQlwcm9maWxlKSAkMj0nb2JqX3AnIDs7Ci0Jc2hhcmVkKQotCQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi0JCWN5Z3dpbikgIyh2aQorCShsaWJ0b29sKSAkMj0nb2JqX2xvJyAgOzsKKwkobm9ybWFsKSAgJDI9J29iamVjdHMnIDs7CisJKGRlYnVnKSAgICQyPSdvYmpfZycgOzsKKwkocHJvZmlsZSkgJDI9J29ial9wJyA7OworCShzaGFyZWQpCisJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJCShjeWd3aW58bXN5cykKIAkJCSQyPSdvYmplY3RzJyA7OwotCQkqKQorCQkoKikKIAkJCSQyPSdvYmpfcycgOzsKIAkJZXNhYwogCWVzYWMKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfUEFUSFNFUCB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDEvMDEvMTIgMDE6MjM6NTMKK2RubCBDRl9QQVRIU0VQIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAogZG5sIC0tLS0tLS0tLS0KLWRubCBQcm92aWRlIGEgdmFsdWUgZm9yIHRoZSAkUEFUSCBhbmQgc2ltaWxhciBzZXBhcmF0b3IKK2RubCBQcm92aWRlIGEgdmFsdWUgZm9yIHRoZSAkUEFUSCBhbmQgc2ltaWxhciBzZXBhcmF0b3IgKG9yIGFtZW5kIHRoZSB2YWx1ZQorZG5sIGFzIHByb3ZpZGVkIGluIGF1dG9jb25mIDIuNXgpLgogQUNfREVGVU4oW0NGX1BBVEhTRVBdLAogWworCUFDX01TR19DSEVDS0lORyhmb3IgUEFUSCBzZXBhcmF0b3IpCiAJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KLQlvczIqKQlQQVRIU0VQPSc7JyAgOzsKLQkqKQlQQVRIU0VQPSc6JyAgOzsKKwkob3MyKikJUEFUSF9TRVBBUkFUT1I9JzsnICA7OworCSgqKQkke1BBVEhfU0VQQVJBVE9SOj0nOid9ICA7OwogCWVzYWMKLWlmZWxzZSgkMSwsLFskMT0kUEFUSFNFUF0pCi0JQUNfU1VCU1QoUEFUSFNFUCkKK2lmZWxzZShbJDFdLCwsWyQxPSRQQVRIX1NFUEFSQVRPUl0pCisJQUNfU1VCU1QoUEFUSF9TRVBBUkFUT1IpCisJQUNfTVNHX1JFU1VMVCgkUEFUSF9TRVBBUkFUT1IpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1BBVEhfU1lOVEFYIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMDgvMDMvMjMgMTQ6NDU6NTkKK2RubCBDRl9QQVRIX1NZTlRBWCB2ZXJzaW9uOiAxNiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayB0aGUgYXJndW1lbnQgdG8gc2VlIHRoYXQgaXQgbG9va3MgbGlrZSBhIHBhdGhuYW1lLiAgUmV3cml0ZSBpdCBpZiBpdAogZG5sIGJlZ2lucyB3aXRoIG9uZSBvZiB0aGUgcHJlZml4L2V4ZWNfcHJlZml4IHZhcmlhYmxlcywgYW5kIHRoZW4gYWdhaW4gaWYgdGhlCkBAIC0zNzA4LDM2ICs0OTA0LDcyIEBACiBkbmwgZGVsYXllZCBldmFsdWF0aW9uIG9mIHRob3NlIHN5bWJvbHMuCiBBQ19ERUZVTihbQ0ZfUEFUSF9TWU5UQVhdLFsKIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBjZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKKwljZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKIGVsc2UKLSAgY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKwljZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgogZmkKIAotY2FzZSAiLlskXSQxIiBpbiAjKHZpCi0uXFskXVwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLltbYS16QS1aXV06W1tcXC9dXSopICModmkgT1MvMiBFTVgKLSAgOzsKLS5cWyRdeypwcmVmaXh9KikgIyh2aQotICBldmFsICQxPSJbJF0kMSIKLSAgY2FzZSAiLlskXSQxIiBpbiAjKHZpCi0gIC5OT05FLyopCi0gICAgJDE9YGVjaG8gWyRdJDEgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gICAgOzsKLSAgZXNhYwotICA7OyAjKHZpCi0ubm98Lk5PTkUvKikKLSAgJDE9YGVjaG8gWyRdJDEgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gIDs7Ci0qKQotICBpZmVsc2UoJDIsLFtBQ19NU0dfRVJST1IoW2V4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIlskXSQxXCJdKV0sJDIpCi0gIDs7CitjYXNlICIuWyRdJDEiIGluCisoLlxbJF1cKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLltbYS16QS1aXV06W1tcXC9dXSopICMgT1MvMiBFTVgKKwk7OworKC5cWyRdeypwcmVmaXh9KnwuXFskXXsqZGlyfSopCisJZXZhbCAkMT0iWyRdJDEiCisJY2FzZSAiLlskXSQxIiBpbgorCSguTk9ORS8qKQorCQkkMT1gZWNobyBbJF0kMSB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwkkMT1gZWNobyBbJF0kMSB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJaWZlbHNlKFskMl0sLFtBQ19NU0dfRVJST1IoW2V4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIlskXSQxXCJdKV0sJDIpCisJOzsKIGVzYWMKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfUE9TSVhfQ19TT1VSQ0UgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDA1LzA3LzE0IDIwOjI1OjEwCitkbmwgQ0ZfUEtHX0NPTkZJRyB2ZXJzaW9uOiAxMCB1cGRhdGVkOiAyMDE1LzA0LzI2IDE4OjA2OjU4CitkbmwgLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciB0aGUgcGFja2FnZS1jb25maWcgcHJvZ3JhbSwgdW5sZXNzIGRpc2FibGVkIGJ5IGNvbW1hbmQtbGluZS4KK0FDX0RFRlVOKFtDRl9QS0dfQ09ORklHXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2UgcGtnLWNvbmZpZykKK0FDX0FSR19XSVRIKHBrZy1jb25maWcsCisJWyAgLS13aXRoLXBrZy1jb25maWd7PXBhdGh9IGVuYWJsZS9kaXNhYmxlIHVzZSBvZiBwa2ctY29uZmlnXSwKKwlbY2ZfcGtnX2NvbmZpZz0kd2l0aHZhbF0sCisJW2NmX3BrZ19jb25maWc9eWVzXSkKK0FDX01TR19SRVNVTFQoJGNmX3BrZ19jb25maWcpCisKK2Nhc2UgJGNmX3BrZ19jb25maWcgaW4KKyhubykKKwlQS0dfQ09ORklHPW5vbmUKKwk7OworKHllcykKKwlDRl9BQ1ZFUlNJT05fQ0hFQ0soMi41MiwKKwkJW0FDX1BBVEhfVE9PTChQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBub25lKV0sCisJCVtBQ19QQVRIX1BST0coUEtHX0NPTkZJRywgcGtnLWNvbmZpZywgbm9uZSldKQorCTs7CisoKikKKwlQS0dfQ09ORklHPSR3aXRodmFsCisJOzsKK2VzYWMKKwordGVzdCAteiAiJFBLR19DT05GSUciICYmIFBLR19DT05GSUc9bm9uZQoraWYgdGVzdCAiJFBLR19DT05GSUciICE9IG5vbmUgOyB0aGVuCisJQ0ZfUEFUSF9TWU5UQVgoUEtHX0NPTkZJRykKK2VsaWYgdGVzdCAieCRjZl9wa2dfY29uZmlnIiAhPSB4bm8gOyB0aGVuCisJQUNfTVNHX1dBUk4ocGtnLWNvbmZpZyBpcyBub3QgaW5zdGFsbGVkKQorZmkKKworQUNfU1VCU1QoUEtHX0NPTkZJRykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUE9TSVhfQ19TT1VSQ0UgdmVyc2lvbjogOSB1cGRhdGVkOiAyMDE1LzA0LzEyIDE1OjM5OjAwCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBEZWZpbmUgX1BPU0lYX0NfU09VUkNFIHRvIHRoZSBnaXZlbiBsZXZlbCwgYW5kIF9QT1NJWF9TT1VSQ0UgaWYgbmVlZGVkLgogZG5sCkBAIC0zNzUzLDcgKzQ5ODUsNyBAQAogZG5sCSQxIGlzIHRoZSBub21pbmFsIHZhbHVlIGZvciBfUE9TSVhfQ19TT1VSQ0UKIEFDX0RFRlVOKFtDRl9QT1NJWF9DX1NPVVJDRV0sCiBbCi1jZl9QT1NJWF9DX1NPVVJDRT1pZmVsc2UoJDEsLDE5OTUwNkwsJDEpCitjZl9QT1NJWF9DX1NPVVJDRT1pZmVsc2UoWyQxXSwsMTk5NTA2TCxbJDFdKQogCiBjZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKIGNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKQEAgLTM3NjksMTUgKzUwMDEsMTUgQEAKICNlbmRpZl0sCiAJW2NmX2N2X3Bvc2l4X2Nfc291cmNlPW5vXSwKIAlbY2Zfd2FudF9wb3NpeF9zb3VyY2U9bm8KLQkgY2FzZSAuJGNmX1BPU0lYX0NfU09VUkNFIGluICModmkKLQkgLltbMTJdXT8/KikgIyh2aQorCSBjYXNlIC4kY2ZfUE9TSVhfQ19TT1VSQ0UgaW4KKwkgKC5bWzEyXV0/PyopCiAJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCiAJCTs7Ci0JIC4yKSAjKHZpCisJICguMikKIAkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKIAkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCiAJCTs7Ci0JIC4qKQorCSAoLiopCiAJCWNmX3dhbnRfcG9zaXhfc291cmNlPXllcwogCQk7OwogCSBlc2FjCkBAIC0zODA1LDE3ICs1MDM3LDEyIEBACiBpZiB0ZXN0ICIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiICE9IG5vIDsgdGhlbgogCUNGTEFHUz0iJGNmX3RyaW1fQ0ZMQUdTIgogCUNQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyIKLQlpZiB0ZXN0ICIkY2ZfY3ZfY2NfdV9kX29wdGlvbnMiID0geWVzIDsgdGhlbgotCQljZl90ZW1wX3Bvc2l4X2Nfc291cmNlPWBlY2hvICIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiIHwgXAotCQkJCXNlZCAtZSAncy8tRC8tVS9nJyAtZSAncy89W1teIAldXSovL2cnYAotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl90ZW1wX3Bvc2l4X2Nfc291cmNlIgotCWZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisJQ0ZfQUREX0NGTEFHUygkY2ZfY3ZfcG9zaXhfY19zb3VyY2UpCiBmaQogCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1BSRURFRklORSB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDMvMDcvMjYgMTc6NTM6NTYKK2RubCBDRl9QUkVERUZJTkUgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA1LzI2IDE2OjQ0OjU3CiBkbmwgLS0tLS0tLS0tLS0tCiBkbmwgQWRkIGRlZmluaXRpb25zIHRvIENQUEZMQUdTIHRvIGVuc3VyZSB0aGV5J3JlIHByZWRlZmluZWQgZm9yIGFsbCBjb21waWxlcy4KIGRubApAQCAtMzgzMiw3ICs1MDU5LDcgQEAKIEFDX01TR19SRVNVTFQoJGNmX3Jlc3VsdCkKIAogaWYgdGVzdCAiJGNmX3Jlc3VsdCIgPSB5ZXMgOyB0aGVuCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyBpZmVsc2UoJDIsLC1EJDEsWy1EJDE9JDJdKSIKKwlDUFBGTEFHUz0iJENQUEZMQUdTIGlmZWxzZShbJDJdLCwtRCQxLFstRCQxPSQyXSkiCiBlbGlmIHRlc3QgIngkMiIgIT0gIngiIDsgdGhlbgogCUFDX01TR19DSEVDS0lORyhjaGVja2luZyBmb3IgY29tcGF0aWJsZSB2YWx1ZSB2ZXJzdXMgJDIpCiAJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTM4NzIsNiArNTA5OSwxMyBAQAogCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfQVIgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA5LzAxLzAxIDIwOjE1OjIyCitkbmwgLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciBhcmNoaXZlciAiYXIiLgorQUNfREVGVU4oW0NGX1BST0dfQVJdLFsKK0FDX0NIRUNLX1RPT0woQVIsIGFyLCBhcikKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ0ZfUFJPR19BV0sgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA2LzA5LzE2IDExOjQwOjU5CiBkbmwgLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3IgYXdrLCBlbnN1cmUgdGhhdCB0aGUgY2hlY2sgZm91bmQgc29tZXRoaW5nLgpAQCAtMzg4MSw3ICs1MTE1LDIwIEBACiB0ZXN0IC16ICIkQVdLIiAmJiBBQ19NU0dfRVJST1IoTm8gYXdrIHByb2dyYW0gZm91bmQpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1BST0dfQ0NfQ19PIHZlcnNpb246IDIgdXBkYXRlZDogMjAwNi8xMi8xNiAxNTo1NTo0NgorZG5sIENGX1BST0dfQ0MgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE0LzA3LzEyIDE4OjU3OjU4CitkbmwgLS0tLS0tLS0tLQorZG5sIHN0YW5kYXJkIGNoZWNrIGZvciBDQywgcGx1cyBmb2xsb3d1cCBzYW5pdHkgY2hlY2tzCitkbmwgJDEgPSBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gcGFzcyB0byBBQ19QUk9HX0NDIHRvIHNwZWNpZnkgY29tcGlsZXIgbmFtZQorQUNfREVGVU4oW0NGX1BST0dfQ0NdLFsKK2lmZWxzZSgkMSwsW0FDX1BST0dfQ0NdLFtBQ19QUk9HX0NDKCQxKV0pCitDRl9HQ0NfVkVSU0lPTgorQ0ZfQUNWRVJTSU9OX0NIRUNLKDIuNTIsCisJW0FDX1BST0dfQ0NfU1REQ10sCisJW0NGX0FOU0lfQ0NfUkVRRF0pCitDRl9DQ19FTlZfRkxBR1MKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUFJPR19DQ19DX08gdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEwLzA4LzE0IDE4OjI1OjM3CiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBBbmFsb2dvdXMgdG8gQUNfUFJPR19DQ19DX08sIGJ1dCBtb3JlIHVzZWZ1bDogdGVzdHMgb25seSAkQ0MsIGVuc3VyZXMgdGhhdAogZG5sIHRoZSBvdXRwdXQgZmlsZSBjYW4gYmUgcmVuYW1lZCwgYW5kIGFsbG93cyBmb3IgYSBzaGVsbCB2YXJpYWJsZSB0aGF0IGNhbgpAQCAtMzkxMSw3ICs1MTU4LDcgQEAKIGVsc2UKICAgZXZhbCBjZl9jdl9wcm9nXyQxX2Nfbz1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KgogXSlkbmwKIGlmIHRlc3QgJGNmX2N2X3Byb2dfJDFfY19vID0geWVzOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoW3llc10pCkBAIC0zOTIwLDcyICs1MTY3LDU2IEBACiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9QUk9HX0NDX1VfRCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDUvMDcvMTQgMTY6NTk6MzAKLWRubCAtLS0tLS0tLS0tLS0tLQotZG5sIENoZWNrIGlmIEMgKHByZXByb2Nlc3NvcikgLVUgYW5kIC1EIG9wdGlvbnMgYXJlIHByb2Nlc3NlZCBpbiB0aGUgb3JkZXIKLWRubCBnaXZlbiByYXRoZXIgdGhhbiBieSB0eXBlIG9mIG9wdGlvbi4gIFNvbWUgY29tcGlsZXJzIGluc2lzdCBvbiBhcHBseSBhbGwKLWRubCBvZiB0aGUgLVUgb3B0aW9ucyBhZnRlciBhbGwgb2YgdGhlIC1EIG9wdGlvbnMuICBPdGhlcnMgYWxsb3cgbWl4aW5nIHRoZW0sCi1kbmwgYW5kIG1heSBwcmVkZWZpbmUgc3ltYm9scyB0aGF0IGNvbmZsaWN0IHdpdGggdGhvc2Ugd2UgZGVmaW5lLgotQUNfREVGVU4oW0NGX1BST0dfQ0NfVV9EXSwKLVsKLUFDX0NBQ0hFX0NIRUNLKGlmICRDQyAtVSBhbmQgLUQgb3B0aW9ucyB3b3JrIHRvZ2V0aGVyLGNmX2N2X2NjX3VfZF9vcHRpb25zLFsKLQljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0JQ1BQRkxBR1M9Ii1VVV9EX09QVElPTlMgLURVX0RfT1BUSU9OUyAtRERfVV9PUFRJT05TIC1VRF9VX09QVElPTlMiCi0JQUNfVFJZX0NPTVBJTEUoW10sWwotI2lmbmRlZiBVX0RfT1BUSU9OUwotbWFrZSBhbiB1bmRlZmluZWQtZXJyb3IKLSNlbmRpZgotI2lmZGVmICBEX1VfT1BUSU9OUwotbWFrZSBhIGRlZmluZWQtZXJyb3IKLSNlbmRpZgotCV0sWwotCWNmX2N2X2NjX3VfZF9vcHRpb25zPXllc10sWwotCWNmX2N2X2NjX3VfZF9vcHRpb25zPW5vXSkKLQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCi1dKQotXSlkbmwKLWRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9QUk9HX0VHUkVQIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNi8wOS8xNiAxMTo0MDo1OQorZG5sIENGX1BST0dfRUdSRVAgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLQogZG5sIEFDX1BST0dfRUdSRVAgd2FzIGludHJvZHVjZWQgaW4gYXV0b2NvbmYgMi41My4KIGRubCBUaGlzIG1hY3JvIGFkZHMgYSBjaGVjayB0byBlbnN1cmUgdGhlIHNjcmlwdCBmb3VuZCBzb21ldGhpbmcuCiBBQ19ERUZVTihbQ0ZfUFJPR19FR1JFUF0sCiBbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBlZ3JlcF0sIFthY19jdl9wcm9nX2VncmVwXSwKLSAgIFtpZiBlY2hvIGEgfCAoZ3JlcCAtRSAnKGF8YiknKSA+L2Rldi9udWxsIDI+JjEKLSAgICB0aGVuIGFjX2N2X3Byb2dfZWdyZXA9J2dyZXAgLUUnCi0gICAgZWxzZSBhY19jdl9wcm9nX2VncmVwPSdlZ3JlcCcKLSAgICBmaV0pCi0gRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAKLSBBQ19TVUJTVChbRUdSRVBdKQotdGVzdCAteiAiJEVHUkVQIiAmJiBBQ19NU0dfRVJST1IoTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCkKKwlbaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCisJCXRoZW4gYWNfY3ZfcHJvZ19lZ3JlcD0nZ3JlcCAtRScKKwkJZWxzZSBhY19jdl9wcm9nX2VncmVwPSdlZ3JlcCcKKwlmaV0pCisJRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAKKwlBQ19TVUJTVChbRUdSRVBdKQorCXRlc3QgLXogIiRFR1JFUCIgJiYgQUNfTVNHX0VSUk9SKE5vIGVncmVwIHByb2dyYW0gZm91bmQpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1BST0dfRVhUIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMDQvMDEvMDMgMTk6Mjg6MTgKLWRubCAtLS0tLS0tLS0tLQotZG5sIENvbXB1dGUgJFBST0dfRVhULCB1c2VkIGZvciBub24tVW5peCBwb3J0cywgc3VjaCBhcyBPUy8yIEVNWC4KLUFDX0RFRlVOKFtDRl9QUk9HX0VYVF0sCi1bCi1BQ19SRVFVSVJFKFtDRl9DSEVDS19DQUNIRV0pCi1jYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgotb3MyKikKLSAgICBDRkxBR1M9IiRDRkxBR1MgLVptdCIKLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX19TVF9NVF9FUlJOT19fIgotICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVptdCIKLSAgICAjIGF1dG9jb25mJ3MgbWFjcm8gc2V0cyAtWmV4ZSBhbmQgc3VmZml4IGJvdGgsIHdoaWNoIGNvbmZsaWN0OncKLSAgICBMREZMQUdTPSIkTERGTEFHUyAtWm10IC1aY3J0ZGxsIgotICAgIGFjX2N2X2V4ZWV4dD0uZXhlCi0gICAgOzsKLWVzYWMKK2RubCBDRl9QUk9HX0dOQVQgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CitkbmwgLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGduYXRtYWtlLCBlbnN1cmUgdGhhdCBpdCBpcyBjb21wbGV0ZS4KK0FDX0RFRlVOKFtDRl9QUk9HX0dOQVRdLFsKK2NmX2FkYV9tYWtlPWduYXRtYWtlCitBQ19DSEVDS19QUk9HKGduYXRfZXhpc3RzLCAkY2ZfYWRhX21ha2UsIHllcywgbm8pCitpZiB0ZXN0ICIkYWNfY3ZfcHJvZ19nbmF0X2V4aXN0cyIgPSBubzsgdGhlbgorCWNmX2FkYV9tYWtlPQorCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCitlbHNlCisJQ0ZfR05BVF9WRVJTSU9OCisJQUNfQ0hFQ0tfUFJPRyhNNF9leGlzdHMsIG00LCB5ZXMsIG5vKQorCWlmIHRlc3QgIiRhY19jdl9wcm9nX000X2V4aXN0cyIgPSBubzsgdGhlbgorCQljZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubworCQllY2hvIEFkYTk1IGJpbmRpbmcgcmVxdWlyZWQgcHJvZ3JhbSBtNCBub3QgZm91bmQuIEFkYTk1IGJpbmRpbmcgZGlzYWJsZWQuCisJZmkKKwlpZiB0ZXN0ICIkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0geWVzOyB0aGVuCisJCUFDX01TR19DSEVDS0lORyhpZiBHTkFUIHdvcmtzKQorCQlDRl9HTkFUX1RSWV9SVU4oW3Byb2NlZHVyZSBjb25mdGVzdDtdLAorW3dpdGggVGV4dF9JTzsKK3dpdGggR05BVC5PU19MaWI7Citwcm9jZWR1cmUgY29uZnRlc3QgaXMKK2JlZ2luCisgICBUZXh0X0lPLlB1dCAoIkhlbGxvIFdvcmxkIik7CisgICBUZXh0X0lPLk5ld19MaW5lOworICAgR05BVC5PU19MaWIuT1NfRXhpdCAoMCk7CitlbmQgY29uZnRlc3Q7XSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzXSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm9dKQorCQlBQ19NU0dfUkVTVUxUKCRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCkKKwlmaQorZmkKIAotQUNfRVhFRVhUCi1BQ19PQkpFWFQKLQotUFJPR19FWFQ9IiRFWEVFWFQiCi1BQ19TVUJTVChQUk9HX0VYVCkKLXRlc3QgLW4gIiRQUk9HX0VYVCIgJiYgQUNfREVGSU5FX1VOUVVPVEVEKFBST0dfRVhULCIkUFJPR19FWFQiKQorQUNfU1VCU1QoY2ZfYWRhX21ha2UpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1BST0dfSU5TVEFMTCB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMDIvMTIvMjEgMjI6NDY6MDcKK2RubCBDRl9QUk9HX0lOU1RBTEwgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgRm9yY2UgJElOU1RBTEwgdG8gYmUgYW4gYWJzb2x1dGUtcGF0aC4gIE90aGVyd2lzZSwgZWRpdF9tYW4uc2ggYW5kIHRoZQogZG5sIG1pc2MvdGFic2V0IGluc3RhbGwgd29uJ3Qgd29yayBwcm9wZXJseS4gIFVzdWFsbHkgdGhpcyBoYXBwZW5zIG9ubHkgd2hlbgpAQCAtMzk5Myw3OSArNTIyNCwxNDcgQEAKIEFDX0RFRlVOKFtDRl9QUk9HX0lOU1RBTExdLAogW0FDX1BST0dfSU5TVEFMTAogY2FzZSAkSU5TVEFMTCBpbgotLyopCi0gIDs7Ci0qKQotICBDRl9ESVJOQU1FKGNmX2RpciwkSU5TVEFMTCkKLSAgdGVzdCAteiAiJGNmX2RpciIgJiYgY2ZfZGlyPS4KLSAgSU5TVEFMTD1gY2QgJGNmX2RpciAmJiBwd2RgL2BlY2hvICRJTlNUQUxMIHwgc2VkIC1lICdzJV4uKi8lJSdgCi0gIDs7CisoLyopCisJOzsKKygqKQorCUNGX0RJUk5BTUUoY2ZfZGlyLCRJTlNUQUxMKQorCXRlc3QgLXogIiRjZl9kaXIiICYmIGNmX2Rpcj0uCisJSU5TVEFMTD1gY2QgJGNmX2RpciAmJiBwd2RgL2BlY2hvICRJTlNUQUxMIHwgc2VkIC1lICdzJV4uKi8lJSdgCisJOzsKIGVzYWMKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfUFJPR19MRENPTkZJRyB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDMvMDkvMjAgMTc6MDc6NTUKK2RubCBDRl9QUk9HX0xEQ09ORklHIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NwogZG5sIC0tLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3IgbGRjb25maWcsIG5lZWRlZCB0byBmaXh1cCBzaGFyZWQgbGlicmFyaWVzIHRoYXQgd291bGQgYmUgYnVpbHQKIGRubCBhbmQgdGhlbiB1c2VkIGluIHRoZSBpbnN0YWxsLgogQUNfREVGVU4oW0NGX1BST0dfTERDT05GSUddLFsKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgotICBMRENPTkZJRz06CisJTERDT05GSUc9OgogZWxzZQotY2FzZSAiJGNmX2N2X3N5c3RlbV9uYW1lIiBpbiAjKHZpCi1mcmVlYnNkKikgIyh2aQotICB0ZXN0IC16ICIkTERDT05GSUciICYmIExEQ09ORklHPSIvc2Jpbi9sZGNvbmZpZyAtUiIKLSAgOzsKLSopIExEUEFUSD0kUEFUSDovc2JpbjovdXNyL3NiaW4KLSAgQUNfUEFUSF9QUk9HKExEQ09ORklHLGxkY29uZmlnLCwkTERQQVRIKQotICA7OwotZXNhYworCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4KKwkoZHJhZ29uZmx5KnxtaXJic2QqfGZyZWVic2QqKQorCQl0ZXN0IC16ICIkTERDT05GSUciICYmIExEQ09ORklHPSIvc2Jpbi9sZGNvbmZpZyAtUiIKKwkJOzsKKwkoKikgTERQQVRIPSRQQVRIOi9zYmluOi91c3Ivc2JpbgorCQlBQ19QQVRIX1BST0coTERDT05GSUcsbGRjb25maWcsLCRMRFBBVEgpCisJCTs7CisJZXNhYwogZmkKIEFDX1NVQlNUKExEQ09ORklHKQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9QUk9HX0xJTlQgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA2LzA5LzE2IDExOjQwOjU5CitkbmwgQ0ZfUFJPR19MSU5UIHZlcnNpb246IDIgdXBkYXRlZDogMjAwOS8wOC8xMiAwNDo0MzoxNAogZG5sIC0tLS0tLS0tLS0tLQogQUNfREVGVU4oW0NGX1BST0dfTElOVF0sCiBbCi1BQ19DSEVDS19QUk9HUyhMSU5ULCB0ZGxpbnQgbGludCBhbGludCkKK0FDX0NIRUNLX1BST0dTKExJTlQsIHRkbGludCBsaW50IGFsaW50IHNwbGludCBsY2xpbnQpCiBBQ19TVUJTVChMSU5UX09QVFMpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1JFR0VYIHZlcnNpb246IDMgdXBkYXRlZDogMTk5Ny8xMS8wMSAxNDoyNjowMQorZG5sIENGX1BST0dfTE5fUyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTAvMDgvMTQgMTg6MjU6MzcKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBDb21iaW5lIGNoZWNrcyBmb3IgImxuIC1zIiBhbmQgImxuIC1zZiIsIHVwZGF0aW5nICRMTl9TIHRvIGluY2x1ZGUgIi1mIgorZG5sIG9wdGlvbiBpZiBpdCBpcyBzdXBwb3J0ZWQuCitBQ19ERUZVTihbQ0ZfUFJPR19MTl9TXSxbCitBQ19QUk9HX0xOX1MKK0FDX01TR19DSEVDS0lORyhpZiAkTE5fUyAtZiBvcHRpb25zIHdvcmspCisKK3JtIC1mIGNvbmYkJC5zcmMgY29uZiQkZHN0CitlY2hvID5jb25mJCQuZHN0CitlY2hvIGZpcnN0ID5jb25mJCQuc3JjCitpZiAkTE5fUyAtZiBjb25mJCQuc3JjIGNvbmYkJC5kc3QgMj4vZGV2L251bGw7IHRoZW4KKwljZl9wcm9nX2xuX3NmPXllcworZWxzZQorCWNmX3Byb2dfbG5fc2Y9bm8KK2ZpCitybSAtZiBjb25mJCQuZHN0IGNvbmYkJHNyYworQUNfTVNHX1JFU1VMVCgkY2ZfcHJvZ19sbl9zZikKKwordGVzdCAiJGNmX3Byb2dfbG5fc2YiID0geWVzICYmIExOX1M9IiRMTl9TIC1mIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9SRUdFWCB2ZXJzaW9uOiAxMiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0KIGRubCBBdHRlbXB0IHRvIGRldGVybWluZSBpZiB3ZSd2ZSBnb3Qgb25lIG9mIHRoZSBmbGF2b3JzIG9mIHJlZ3VsYXItZXhwcmVzc2lvbgogZG5sIGNvZGUgdGhhdCB3ZSBjYW4gc3VwcG9ydC4KIEFDX0RFRlVOKFtDRl9SRUdFWF0sCiBbCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciByZWd1bGFyLWV4cHJlc3Npb24gaGVhZGVyc10pCi1BQ19DQUNIRV9WQUwoY2ZfY3ZfcmVnZXgsWwotQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxyZWdleC5oPl0sWwotCXJlZ2V4X3QgKnA7Ci0JaW50IHggPSByZWdjb21wKHAsICIiLCAwKTsKLQlpbnQgeSA9IHJlZ2V4ZWMocCwgIiIsIDAsIDAsIDApOwotCXJlZ2ZyZWUocCk7Ci0JXSxbY2ZfY3ZfcmVnZXg9InJlZ2V4LmgiXSxbCi0JQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxyZWdleHAuaD5dLFsKLQkJY2hhciAqcCA9IGNvbXBpbGUoIiIsICIiLCAiIiwgMCk7Ci0JCWludCB4ID0gc3RlcCgiIiwgIiIpOwotCV0sW2NmX2N2X3JlZ2V4PSJyZWdleHAuaCJdLFsKLQkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKLQkJTElCUz0iLWxnZW4gJExJQlMiCi0JCUFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cmVnZXhwci5oPl0sWwotCQkJY2hhciAqcCA9IGNvbXBpbGUoIiIsICIiLCAiIik7Ci0JCQlpbnQgeCA9IHN0ZXAoIiIsICIiKTsKLQkJXSxbY2ZfY3ZfcmVnZXg9InJlZ2V4cHIuaCJdLFtMSUJTPSIkY2Zfc2F2ZV9MSUJTIl0pXSldKQorCitjZl9yZWdleF9mdW5jPW5vCisKK2NmX3JlZ2V4X2xpYnM9InJlZ2V4IHJlIgorY2FzZSAkaG9zdF9vcyBpbgorKG1pbmd3KikKKwljZl9yZWdleF9saWJzPSJnbnVyeCAkY2ZfcmVnZXhfbGlicyIKKwk7OworZXNhYworCitBQ19DSEVDS19GVU5DKHJlZ2NvbXAsW2NmX3JlZ2V4X2Z1bmM9cmVnY29tcF0sWworCWZvciBjZl9yZWdleF9saWIgaW4gJGNmX3JlZ2V4X2xpYnMKKwlkbworCQlBQ19DSEVDS19MSUIoJGNmX3JlZ2V4X2xpYixyZWdjb21wLFsKKwkJCQlDRl9BRERfTElCKCRjZl9yZWdleF9saWIpCisJCQkJY2ZfcmVnZXhfZnVuYz1yZWdjb21wCisJCQkJYnJlYWtdKQorCWRvbmUKIF0pCi1BQ19NU0dfUkVTVUxUKCRjZl9jdl9yZWdleCkKLWNhc2UgJGNmX2N2X3JlZ2V4IGluCi0JcmVnZXguaCkgICBBQ19ERUZJTkUoSEFWRV9SRUdFWF9IX0ZVTkNTKSA7OwotCXJlZ2V4cC5oKSAgQUNfREVGSU5FKEhBVkVfUkVHRVhQX0hfRlVOQ1MpIDs7Ci0JcmVnZXhwci5oKSBBQ19ERUZJTkUoSEFWRV9SRUdFWFBSX0hfRlVOQ1MpIDs7CisKK2lmIHRlc3QgIiRjZl9yZWdleF9mdW5jIiA9IG5vIDsgdGhlbgorCUFDX0NIRUNLX0ZVTkMoY29tcGlsZSxbY2ZfcmVnZXhfZnVuYz1jb21waWxlXSxbCisJCUFDX0NIRUNLX0xJQihnZW4sY29tcGlsZSxbCisJCQkJQ0ZfQUREX0xJQihnZW4pCisJCQkJY2ZfcmVnZXhfZnVuYz1jb21waWxlXSldKQorZmkKKworaWYgdGVzdCAiJGNmX3JlZ2V4X2Z1bmMiID0gbm8gOyB0aGVuCisJQUNfTVNHX1dBUk4oY2Fubm90IGZpbmQgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkpCitmaQorCitBQ19DQUNIRV9DSEVDSyhmb3IgcmVndWxhci1leHByZXNzaW9uIGhlYWRlcnMsY2ZfY3ZfcmVnZXhfaGRycyxbCisKK2NmX2N2X3JlZ2V4X2hkcnM9bm8KK2Nhc2UgJGNmX3JlZ2V4X2Z1bmMgaW4KKyhjb21waWxlKQorCWZvciBjZl9yZWdleF9oZHIgaW4gcmVnZXhwLmggcmVnZXhwci5oCisJZG8KKwkJQUNfVFJZX0xJTksoWyNpbmNsdWRlIDwkY2ZfcmVnZXhfaGRyPl0sWworCQkJY2hhciAqcCA9IGNvbXBpbGUoIiIsICIiLCAiIiwgMCk7CisJCQlpbnQgeCA9IHN0ZXAoIiIsICIiKTsKKwkJXSxbCisJCQljZl9jdl9yZWdleF9oZHJzPSRjZl9yZWdleF9oZHIKKwkJCWJyZWFrCisJCV0pCisJZG9uZQorCTs7CisoKikKKwlmb3IgY2ZfcmVnZXhfaGRyIGluIHJlZ2V4LmgKKwlkbworCQlBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPCRjZl9yZWdleF9oZHI+XSxbCisJCQlyZWdleF90ICpwOworCQkJaW50IHggPSByZWdjb21wKHAsICIiLCAwKTsKKwkJCWludCB5ID0gcmVnZXhlYyhwLCAiIiwgMCwgMCwgMCk7CisJCQlyZWdmcmVlKHApOworCQldLFsKKwkJCWNmX2N2X3JlZ2V4X2hkcnM9JGNmX3JlZ2V4X2hkcgorCQkJYnJlYWsKKwkJXSkKKwlkb25lCisJOzsKK2VzYWMKKworXSkKKworY2FzZSAkY2ZfY3ZfcmVnZXhfaGRycyBpbgorCShubykJCUFDX01TR19XQVJOKG5vIHJlZ3VsYXIgZXhwcmVzc2lvbiBoZWFkZXIgZm91bmQpIDs7CisJKHJlZ2V4LmgpCUFDX0RFRklORShIQVZFX1JFR0VYX0hfRlVOQ1MsMSxbRGVmaW5lIHRvIDEgdG8gaW5jbHVkZSByZWdleC5oIGZvciByZWd1bGFyIGV4cHJlc3Npb25zXSkgOzsKKwkocmVnZXhwLmgpCUFDX0RFRklORShIQVZFX1JFR0VYUF9IX0ZVTkNTLDEsW0RlZmluZSB0byAxIHRvIGluY2x1ZGUgcmVnZXhwLmggZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnNdKSA7OworCShyZWdleHByLmgpIEFDX0RFRklORShIQVZFX1JFR0VYUFJfSF9GVU5DUywxLFtEZWZpbmUgdG8gMSB0byBpbmNsdWRlIHJlZ2V4cHIuaCBmb3IgcmVndWxhciBleHByZXNzaW9uc10pIDs7CiBlc2FjCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1JFTU9WRV9ERUZJTkUgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDA1LzA3LzA5IDE2OjEyOjE4CitkbmwgQ0ZfUkVNT1ZFX0RFRklORSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTAvMDEvMDkgMTE6MDU6NTAKIGRubCAtLS0tLS0tLS0tLS0tLS0tCiBkbmwgUmVtb3ZlIGFsbCAtVSBhbmQgLUQgb3B0aW9ucyB0aGF0IHJlZmVyIHRvIHRoZSBnaXZlbiBzeW1ib2wgZnJvbSBhIGxpc3QKIGRubCBvZiBDIGNvbXBpbGVyIG9wdGlvbnMuICBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgcHJvYmxlbSB0aGF0IG5vdCBhbGwKQEAgLTQwNzcsMTAgKzUzNzYsOSBAQAogZG5sICQzID0gc3ltYm9sIHRvIHJlbW92ZQogZGVmaW5lKFtDRl9SRU1PVkVfREVGSU5FXSwKIFsKLSMgcmVtb3ZlICQzIHN5bWJvbCBmcm9tICQyCiAkMT1gZWNobyAiJDIiIHwgXAotCXNlZAktZSAncy8tW1tVRF1dJDNcKD1bW14gCV1dKlwpXD9bWyAJXV0vIC9nJyBcCi0JCS1lICdzLy1bW1VEXV0kM1woPVtbXiAJXV0qXClcP1skXS8vZydgCisJc2VkCS1lICdzLy1bW1VEXV0nIiQzIidcKD1bW14gCV1dKlwpXD9bWyAJXV0vIC9nJyBcCisJCS1lICdzLy1bW1VEXV0nIiQzIidcKD1bW14gCV1dKlwpXD9bJF0vL2cnYAogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9SRU1PVkVfTElCIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNy8wMi8xNyAxNDoxMTo1MgpAQCAtNDA5Niw2OSArNTM5NCwxMzYgQEAKICQxPWBlY2hvICIkMiIgfCBzZWQgLWUgJ3MvLWwkM1tbIAldXS8vZycgLWUgJ3MvLWwkM1skXS8vJ2AKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfUlBBVEhfSEFDSyB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDgvMDkvMTMgMTI6NTM6MjYKK2RubCBDRl9SUEFUSF9IQUNLIHZlcnNpb246IDExIHVwZGF0ZWQ6IDIwMTMvMDkvMDEgMTM6MDI6MDAKIGRubCAtLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbQ0ZfUlBBVEhfSEFDS10sCiBbCi1BQ19SRVFVSVJFKFtDRl9TSEFSRURfT1BUU10pCitBQ19SRVFVSVJFKFtDRl9MRF9SUEFUSF9PUFRdKQogQUNfTVNHX0NIRUNLSU5HKGZvciB1cGRhdGVkIExERkxBR1MpCi1pZiB0ZXN0IC1uICIkTERGTEFHUyIgOyB0aGVuCi1BQ19NU0dfUkVTVUxUKG1heWJlKQotQ0ZfVkVSQk9TRSguLi5jaGVja2luZyBMREZMQUdTICRMREZMQUdTKQotQ0ZfVkVSQk9TRSguLi5jaGVja2luZyBFWFRSQV9MREZMQUdTICRFWFRSQV9MREZMQUdTKQotY2FzZSAiJEVYVFJBX0xERkxBR1MiIGluICModmkKLS1XbCwtcnBhdGgsKikgIyh2aQotCWNmX3JwYXRoX2hhY2s9Ii1XbCwtcnBhdGgsIgotCTs7Ci0tUlwgKikKLQljZl9ycGF0aF9oYWNrPSItUiAiCi0JOzsKLS1SKikKLQljZl9ycGF0aF9oYWNrPSItUiIKLQk7OwotKikKLQljZl9ycGF0aF9oYWNrPQotCTs7Ci1lc2FjCi1pZiB0ZXN0IC1uICIkY2ZfcnBhdGhfaGFjayIgOyB0aGVuCi0JY2ZfcnBhdGhfZHN0PQotCWZvciBjZl9ycGF0aF9zcmMgaW4gJExERkxBR1MKLQlkbwotCQlDRl9WRVJCT1NFKEZpbHRlcmluZyAkY2ZfcnBhdGhfc3JjKQotCQljYXNlICRjZl9ycGF0aF9zcmMgaW4gIyh2aQotCQktTCopICModmkKLQkJCWlmIHRlc3QgIiRjZl9ycGF0aF9oYWNrIiA9ICItUiAiIDsgdGhlbgotCQkJCWNmX3JwYXRoX3RtcD1gZWNobyAiJGNmX3JwYXRoX3NyYyIgfHNlZCAtZSAncyUtTCUtUiAlJ2AKLQkJCWVsc2UKLQkJCQljZl9ycGF0aF90bXA9YGVjaG8gIiRjZl9ycGF0aF9zcmMiIHxzZWQgLWUgcyUtTCUkY2ZfcnBhdGhfaGFjayVgCi0JCQlmaQotCQkJQ0ZfVkVSQk9TRSguLi5GaWx0ZXIgJGNmX3JwYXRoX3RtcCkKLQkJCUVYVFJBX0xERkxBR1M9IiRjZl9ycGF0aF90bXAgJEVYVFJBX0xERkxBR1MiCi0JCQk7OwotCQllc2FjCi0JCWNmX3JwYXRoX2RzdD0iJGNmX3JwYXRoX2RzdCAkY2ZfcnBhdGhfc3JjIgotCWRvbmUKLQlMREZMQUdTPSRjZl9ycGF0aF9kc3QKLQlDRl9WRVJCT1NFKC4uLmNoZWNrZWQgTERGTEFHUyAkTERGTEFHUykKK2lmIHRlc3QgLW4gIiRMRF9SUEFUSF9PUFQiIDsgdGhlbgorCUFDX01TR19SRVNVTFQobWF5YmUpCisKKwlBQ19DSEVDS19QUk9HUyhjZl9sZGRfcHJvZyxsZGQsbm8pCisJY2ZfcnBhdGhfbGlzdD0iL3Vzci9saWIgL2xpYiIKKwlpZiB0ZXN0ICIkY2ZfbGRkX3Byb2ciICE9IG5vCisJdGhlbgorCQljZl9ycGF0aF9vb3BzPQorCitBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN0ZGlvLmg+XSwKKwkJW3ByaW50ZigiSGVsbG8iKTtdLAorCQlbY2ZfcnBhdGhfb29wcz1gJGNmX2xkZF9wcm9nIGNvbmZ0ZXN0JGFjX2V4ZWV4dCB8IGZncmVwICcgbm90IGZvdW5kJyB8IHNlZCAtZSAncyUgPT4uKiQlJScgfHNvcnQgfCB1bmlxYAorCQkgY2ZfcnBhdGhfbGlzdD1gJGNmX2xkZF9wcm9nIGNvbmZ0ZXN0JGFjX2V4ZWV4dCB8IGZncmVwIC8gfCBzZWQgLWUgJ3MlXi4qW1sgCV1dLyUvJScgLWUgJ3MlL1tbXi9dXVtbXi9dXSokJSUnIHxzb3J0IHwgdW5pcWBdKQorCisJCSMgSWYgd2UgcGFzc2VkIHRoZSBsaW5rLXRlc3QsIGJ1dCBnZXQgYSAibm90IGZvdW5kIiBvbiBhIGdpdmVuIGxpYnJhcnksCisJCSMgdGhpcyBjb3VsZCBiZSBkdWUgdG8gaW5lcHQgcmVjb25maWd1cmF0aW9uIG9mIGdjYyB0byBtYWtlIGl0IG9ubHkKKwkJIyBwYXJ0bHkgaG9ub3IgL3Vzci9sb2NhbC9saWIgKG9yIHdoYXRldmVyKS4gIFNvbWV0aW1lcyB0aGlzIGJlaGF2aW9yCisJCSMgaXMgaW50ZW50aW9uYWwsIGUuZy4sIGluc3RhbGxpbmcgZ2NjIGluIC91c3IvYmluIGFuZCBzdXBwcmVzc2luZyB0aGUKKwkJIyAvdXNyL2xvY2FsIGxpYnJhcmllcy4KKwkJaWYgdGVzdCAtbiAiJGNmX3JwYXRoX29vcHMiCisJCXRoZW4KKwkJCWZvciBjZl9ycGF0aF9zcmMgaW4gJGNmX3JwYXRoX29vcHMKKwkJCWRvCisJCQkJZm9yIGNmX3JwYXRoX2RpciBpbiBcCisJCQkJCS91c3IvbG9jYWwgXAorCQkJCQkvdXNyL3BrZyBcCisJCQkJCS9vcHQvc2Z3CisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAkY2ZfcnBhdGhfZGlyL2xpYi8kY2ZfcnBhdGhfc3JjCisJCQkJCXRoZW4KKwkJCQkJCUNGX1ZFUkJPU0UoLi4uYWRkaW5nIC1MJGNmX3JwYXRoX2Rpci9saWIgdG8gTERGTEFHUyBmb3IgJGNmX3JwYXRoX3NyYykKKwkJCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJGNmX3JwYXRoX2Rpci9saWIiCisJCQkJCQlicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWRvbmUKKwkJZmkKKwlmaQorCisJQ0ZfVkVSQk9TRSguLi5jaGVja2luZyBFWFRSQV9MREZMQUdTICRFWFRSQV9MREZMQUdTKQorCisJQ0ZfUlBBVEhfSEFDS18yKExERkxBR1MpCisJQ0ZfUlBBVEhfSEFDS18yKExJQlMpCisKIAlDRl9WRVJCT1NFKC4uLmNoZWNrZWQgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUykKLWZpCiBlbHNlCi1BQ19NU0dfUkVTVUxUKG5vKQorCUFDX01TR19SRVNVTFQobm8pCiBmaQorQUNfU1VCU1QoRVhUUkFfTERGTEFHUykKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfU0hBUkVEX09QVFMgdmVyc2lvbjogNTMgdXBkYXRlZDogMjAwOC8xMC8yNSAxODoxNDoyMAorZG5sIENGX1JQQVRIX0hBQ0tfMiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBEbyBvbmUgc2V0IG9mIHN1YnN0aXR1dGlvbnMgZm9yIENGX1JQQVRIX0hBQ0ssIGFkZGluZyBhbiBycGF0aCBvcHRpb24gdG8KK2RubCBFWFRSQV9MREZMQUdTIGZvciBlYWNoIC1MIG9wdGlvbiBmb3VuZC4KK2RubAorZG5sICRjZl9ycGF0aF9saXN0IGNvbnRhaW5zIGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBpZ25vcmUuCitkbmwKK2RubCAkMSA9IHZhcmlhYmxlIG5hbWUgdG8gdXBkYXRlLiAgVGhlIExERkxBR1MgdmFyaWFibGUgc2hvdWxkIGJlIHRoZSBvbmx5IG9uZSwKK2RubCAgICAgIGJ1dCBMSUJTIG9mdGVuIGhhcyBtaXNwbGFjZWQgLUwgb3B0aW9ucy4KK0FDX0RFRlVOKFtDRl9SUEFUSF9IQUNLXzJdLAorWworQ0ZfVkVSQk9TRSguLi5jaGVja2luZyAkMSBbJF0kMSkKKworY2ZfcnBhdGhfZHN0PQorZm9yIGNmX3JwYXRoX3NyYyBpbiBbJF0kMQorZG8KKwljYXNlICRjZl9ycGF0aF9zcmMgaW4KKwkoLUwqKQorCisJCSMgY2hlY2sgaWYgdGhpcyByZWZlcnMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggd2Ugd2lsbCBpZ25vcmUKKwkJY2ZfcnBhdGhfc2tpcD1ubworCQlpZiB0ZXN0IC1uICIkY2ZfcnBhdGhfbGlzdCIKKwkJdGhlbgorCQkJZm9yIGNmX3JwYXRoX2l0ZW0gaW4gJGNmX3JwYXRoX2xpc3QKKwkJCWRvCisJCQkJaWYgdGVzdCAieCRjZl9ycGF0aF9zcmMiID0gIngtTCRjZl9ycGF0aF9pdGVtIgorCQkJCXRoZW4KKwkJCQkJY2ZfcnBhdGhfc2tpcD15ZXMKKwkJCQkJYnJlYWsKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9ycGF0aF9za2lwIiA9IG5vCisJCXRoZW4KKwkJCSMgdHJhbnNmb3JtIHRoZSBvcHRpb24KKwkJCWlmIHRlc3QgIiRMRF9SUEFUSF9PUFQiID0gIi1SICIgOyB0aGVuCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJS1SICUiYAorCQkJZWxzZQorCQkJCWNmX3JwYXRoX3RtcD1gZWNobyAiJGNmX3JwYXRoX3NyYyIgfHNlZCAtZSAicyUtTCUkTERfUlBBVEhfT1BUJSJgCisJCQlmaQorCisJCQkjIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgYWRkZWQgdGhpcywgYWRkIGl0IG5vdworCQkJY2ZfcnBhdGhfdHN0PWBlY2hvICIkRVhUUkFfTERGTEFHUyIgfCBzZWQgLWUgInMlJGNmX3JwYXRoX3RtcCAlJSJgCisJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3RzdCIgPSAieCRFWFRSQV9MREZMQUdTIgorCQkJdGhlbgorCQkJCUNGX1ZFUkJPU0UoLi4uRmlsdGVyICRjZl9ycGF0aF9zcmMgLT4kY2ZfcnBhdGhfdG1wKQorCQkJCUVYVFJBX0xERkxBR1M9IiRjZl9ycGF0aF90bXAgJEVYVFJBX0xERkxBR1MiCisJCQlmaQorCQlmaQorCQk7OworCWVzYWMKKwljZl9ycGF0aF9kc3Q9IiRjZl9ycGF0aF9kc3QgJGNmX3JwYXRoX3NyYyIKK2RvbmUKKyQxPSRjZl9ycGF0aF9kc3QKKworQ0ZfVkVSQk9TRSguLi5jaGVja2VkICQxIFskXSQxKQorQUNfU1VCU1QoRVhUUkFfTERGTEFHUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfU0hBUkVEX09QVFMgdmVyc2lvbjogODggdXBkYXRlZDogMjAxNS8wOC8wNSAyMDo0NDoyOAogZG5sIC0tLS0tLS0tLS0tLS0tCiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBBdHRlbXB0IHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgQ0MvTEQgb3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBzaGFyZWQKIGRubCBsaWJyYXJ5LgogZG5sCi1kbmwgTm90ZTogJHtMT0NBTF9MREZMQUdTfSBpcyB1c2VkIHRvIGxpbmsgZXhlY3V0YWJsZXMgdGhhdCB3aWxsIHJ1biB3aXRoaW4gdGhlCi1kbmwgYnVpbGQtdHJlZSwgaS5lLiwgYnkgbWFraW5nIHVzZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgYXJlIGNvbXBpbGVkIGluIC4uL2xpYgotZG5sIFdlIGF2b2lkIGNvbXBpbGluZy1pbiBhIC4uL2xpYiBwYXRoIGZvciB0aGUgc2hhcmVkIGxpYnJhcnkgc2luY2UgdGhhdCBjYW4KLWRubCBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cyBhdCBydW50aW1lLgotZG5sICR7TE9DQUxfTERGTEFHUzJ9IGhhcyB0aGUgc2FtZSBpbnRlbnRpb24gYnV0IGFzc3VtZXMgdGhhdCB0aGUgc2hhcmVkIGxpYnJhcmllcwotZG5sIGFyZSBjb21waWxlZCBpbiAuLi8uLi9saWIKK2RubCBOb3RlczoKK2RubCBhKSAke0xPQ0FMX0xERkxBR1N9IGlzIHVzZWQgdG8gbGluayBleGVjdXRhYmxlcyB0aGF0IHdpbGwgcnVuIHdpdGhpbgorZG5sIHRoZSBidWlsZC10cmVlLCBpLmUuLCBieSBtYWtpbmcgdXNlIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCBhcmUgY29tcGlsZWQgaW4KK2RubCAkcmVsX2J1aWxkZGlyL2xpYiBXZSBhdm9pZCBjb21waWxpbmctaW4gYSAkcmVsX2J1aWxkZGlyL2xpYiBwYXRoIGZvciB0aGUKK2RubCBzaGFyZWQgbGlicmFyeSBzaW5jZSB0aGF0IGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cyBhdCBydW50aW1lLgorZG5sIGIpICR7TE9DQUxfTERGTEFHUzJ9IGhhcyB0aGUgc2FtZSBpbnRlbnRpb24gYnV0IGFzc3VtZXMgdGhhdCB0aGUgc2hhcmVkCitkbmwgbGlicmFyaWVzIGFyZSBjb21waWxlZCBpbiAuLi8uLi9saWIKIGRubAogZG5sIFRoZSB2YXJpYWJsZSAnY2ZfY3ZfZG9fc3ltbGlua3MnIGlzIHVzZWQgdG8gY29udHJvbCB3aGV0aGVyIHdlIGNvbmZpZ3VyZQogZG5sIHRvIGluc3RhbGwgc3ltYm9saWMgbGlua3MgdG8gdGhlIHJlbC9hYmkgdmVyc2lvbnMgb2Ygc2hhcmVkIGxpYnJhcmllcy4KQEAgLTQxNzMsMjYgKzU1MzgsMzYgQEAKIGRubCBTb21lIGxvYWRlcnMgbGVhdmUgJ3NvX2xvY2F0aW9ucycgbHlpbmcgYXJvdW5kLiAgSXQncyBuaWNlIHRvIGNsZWFuIHVwLgogQUNfREVGVU4oW0NGX1NIQVJFRF9PUFRTXSwKIFsKLQlBQ19SRVFVSVJFKFtDRl9TVUJTVF9OQ1VSU0VTX1ZFUlNJT05dKQorCUFDX1JFUVVJUkUoW0NGX0xEX1JQQVRIX09QVF0pCisJUk1fU0hBUkVEX09QVFM9CiAJTE9DQUxfTERGTEFHUz0KIAlMT0NBTF9MREZMQUdTMj0KIAlMRF9TSEFSRURfT1BUUz0KIAlJTlNUQUxMX0xJQj0iLW0gNjQ0IgorCTogJHtyZWxfYnVpbGRkaXI6PS59CisKKwlzaGxpYmRpcj0kbGliZGlyCisJQUNfU1VCU1Qoc2hsaWJkaXIpCisKKwlNQUtFX0RMTFM9IiMiCisJQUNfU1VCU1QoTUFLRV9ETExTKQogCiAJY2ZfY3ZfZG9fc3ltbGlua3M9bm8KKwljZl9sZF9ycGF0aF9vcHQ9CisJdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgJiYgY2ZfbGRfcnBhdGhfb3B0PSIkTERfUlBBVEhfT1BUIgogCiAJQUNfTVNHX0NIRUNLSU5HKGlmIHJlbGVhc2UvYWJpIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHNoYXJlZCBsaWJzKQogCUFDX0FSR19XSVRIKHNobGliLXZlcnNpb24sCiAJWyAgLS13aXRoLXNobGliLXZlcnNpb249WCAgU3BlY2lmeSByZWwgb3IgYWJpIHZlcnNpb24gZm9yIHNoYXJlZCBsaWJzXSwKIAlbdGVzdCAteiAiJHdpdGh2YWwiICYmIHdpdGh2YWw9YXV0bwotCWNhc2UgJHdpdGh2YWwgaW4gIyh2aQotCXllcykgIyh2aQorCWNhc2UgJHdpdGh2YWwgaW4KKwkoeWVzKQogCQljZl9jdl9zaGxpYl92ZXJzaW9uPWF1dG8KIAkJOzsKLQlyZWx8YWJpfGF1dG98bm8pICModmkKKwkocmVsfGFiaXxhdXRvfG5vKQogCQljZl9jdl9zaGxpYl92ZXJzaW9uPSR3aXRodmFsCiAJCTs7Ci0JKikKKwkoKikKIAkJQUNfTVNHX0VSUk9SKFtvcHRpb24gdmFsdWUgbXVzdCBiZSBvbmUgb2Y6IHJlbCwgYWJpLCBhdXRvIG9yIG5vXSkKIAkJOzsKIAllc2FjCkBAIC00MjAwLDYgKzU1NzUsNyBAQAogCUFDX01TR19SRVNVTFQoJGNmX2N2X3NobGliX3ZlcnNpb24pCiAKIAljZl9jdl9ybV9zb19sb2NzPW5vCisJY2ZfdHJ5X2NmbGFncz0KIAogCSMgU29tZSBsZXNzLWNhcGFibGUgcG9ydHMgb2YgZ2NjIHN1cHBvcnQgb25seSAtZnBpYwogCUNDX1NIQVJFRF9PUFRTPQpAQCAtNDIxOSwxNiArNTU5NSwyOSBAQAogCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9bm8KIAogCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCi0JYmVvcyopCisJKGFpeDQuWzMtOV0qfGFpeFtbNS03XV0qKQorCQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQkJQ0NfU0hBUkVEX09QVFM9Jy1XbCwtYnJ0bCcKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1icnRsIC1XbCwtYmxpYnBhdGg6JHtSUEFUSF9MSVNUfTovdXNyL2xpYiAtbyBbJF1AJworCQllbHNlCisJCQlDQ19TSEFSRURfT1BUUz0nLWJydGwnCisJCQkjIGFzIHdlbGwgYXMgJy1xcGljPWxhcmdlIC1HJyBvciBwZXJoYXBzICItYk06U1JFIC1ibm9lbnRyeSAtYmV4cGFsbCIKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1HIC1XbCwtYnJ0bCAtV2wsLWJsaWJwYXRoOiR7UlBBVEhfTElTVH06L3Vzci9saWIgLW8gWyRdQCcKKwkJZmkKKwkJOzsKKwkoYmVvcyopCiAJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtbyAkW0BdIC1YbGlua2VyIC1zb25hbWU9YGJhc2VuYW1lICRbQF1gIC1ub3N0YXJ0IC1lIDAnCiAJCTs7Ci0JY3lnd2luKikKKwkoY3lnd2luKikKIAkJQ0NfU0hBUkVEX09QVFM9Ci0JCU1LX1NIQVJFRF9MSUI9J3NoIC4uL21rX3NoYXJlZF9saWIuc2ggWyRdQCBbJF17Q0N9IFskXXtDRkxBR1N9JworCQlNS19TSEFSRURfTElCPSRTSEVMTCcgJyRyZWxfYnVpbGRkaXInL21rX3NoYXJlZF9saWIuc2ggWyRdQCBbJF17Q0N9IFskXXtDRkxBR1N9JworCQlSTV9TSEFSRURfT1BUUz0iJFJNX1NIQVJFRF9PUFRTICRyZWxfYnVpbGRkaXIvbWtfc2hhcmVkX2xpYi5zaCAqLmRsbC5hIgogCQljZl9jdl9zaGxpYl92ZXJzaW9uPWN5Z2RsbAogCQljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PWN5Z2RsbAorCQlzaGxpYmRpcj0kYmluZGlyCisJCU1BS0VfRExMUz0KIAkJY2F0ID5ta19zaGFyZWRfbGliLnNoIDw8LUNGX0VPRgotCQkjIS9iaW4vc2gKKwkJIyEkU0hFTEwKIAkJU0hBUkVEX0xJQj1cWyRdMQogCQlJTVBPUlRfTElCPVxgZWNobyAiXFskXTEiIHwgc2VkIC1lICdzL2N5Zy9saWIvJyAtZSAncy9bWzAtOV1dKlwuZGxsWyRdLy5kbGwuYS8nXGAKIAkJc2hpZnQKQEAgLTQyMzcsMTIgKzU2MjYsMzQgQEAKIAkJKiogU0hBUkVEX0xJQiBcWyRdU0hBUkVEX0xJQgogCQkqKiBJTVBPUlRfTElCIFxbJF1JTVBPUlRfTElCCiBFT0YKLQkJZXhlYyBcWyRdKiAtc2hhcmVkIC1XbCwtLW91dC1pbXBsaWI9Li4vbGliL1xbJF17SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIC4uL2xpYi9cWyRde1NIQVJFRF9MSUJ9CisJCWV4ZWMgXFskXSogLXNoYXJlZCAtV2wsLS1vdXQtaW1wbGliPVxbJF17SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFxbJF17U0hBUkVEX0xJQn0KIENGX0VPRgotCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoIAorCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoCiAJCTs7Ci0JZGFyd2luKikKLQkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCisJKG1zeXMqKQorCQlDQ19TSEFSRURfT1BUUz0KKwkJTUtfU0hBUkVEX0xJQj0kU0hFTEwnICckcmVsX2J1aWxkZGlyJy9ta19zaGFyZWRfbGliLnNoIFskXUAgWyRde0NDfSBbJF17Q0ZMQUdTfScKKwkJUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyAkcmVsX2J1aWxkZGlyL21rX3NoYXJlZF9saWIuc2ggKi5kbGwuYSIKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1tc3lzZGxsCisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9bXN5c2RsbAorCQlzaGxpYmRpcj0kYmluZGlyCisJCU1BS0VfRExMUz0KKwkJY2F0ID5ta19zaGFyZWRfbGliLnNoIDw8LUNGX0VPRgorCQkjISRTSEVMTAorCQlTSEFSRURfTElCPVxbJF0xCisJCUlNUE9SVF9MSUI9XGBlY2hvICJcWyRdMSIgfCBzZWQgLWUgJ3MvbXN5cy0vbGliLycgLWUgJ3MvW1swLTldXSpcLmRsbFskXS8uZGxsLmEvJ1xgCisJCXNoaWZ0CisJCWNhdCA8PC1FT0YKKwkJTGlua2luZyBzaGFyZWQgbGlicmFyeQorCQkqKiBTSEFSRURfTElCIFxbJF1TSEFSRURfTElCCisJCSoqIElNUE9SVF9MSUIgXFskXUlNUE9SVF9MSUIKK0VPRgorCQlleGVjIFxbJF0qIC1zaGFyZWQgLVdsLC0tb3V0LWltcGxpYj1cWyRde0lNUE9SVF9MSUJ9IC1XbCwtLWV4cG9ydC1hbGwtc3ltYm9scyAtbyBcWyRde1NIQVJFRF9MSUJ9CitDRl9FT0YKKwkJY2htb2QgK3ggbWtfc2hhcmVkX2xpYi5zaAorCQk7OworCShkYXJ3aW4qKQorCQljZl90cnlfY2ZsYWdzPSJuby1jcHAtcHJlY29tcCIKIAkJQ0NfU0hBUkVEX09QVFM9Ii1keW5hbWljIgogCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAke2xpYmRpcn0vYGJhc2VuYW1lICRbQF1gIC1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJHtBQklfVkVSU0lPTn0gLWN1cnJlbnRfdmVyc2lvbiAke0FCSV9WRVJTSU9OfSAtbyAkW0BdJwogCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249YWJpCkBAIC00MjU2LDcgKzU2NjcsMTUgQEAKIAkJCUxERkxBR1M9IiRMREZMQUdTIC1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0IgogCQlmaQogCQk7OwotCWhwdXgqKQorCShocHV4W1s3LThdXSopCisJCSMgSFAtVVggOC4wNyBsZCBsYWNrcyAiK2IiIG9wdGlvbiB1c2VkIGZvciBsaWJkaXIgc2VhcmNoLWxpc3QKKwkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisJCQlDQ19TSEFSRURfT1BUUz0nK1onCisJCWZpCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1iIC1vICRbQF0nCisJCUlOU1RBTExfTElCPSItbSA1NTUiCisJCTs7CisJKGhwdXgqKQogCQkjICh0ZXN0ZWQgd2l0aCBnY2MgMi43LjIgLS0gSSBkb24ndCBoYXZlIGM4OSkKIAkJaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAkJCUxEX1NIQVJFRF9PUFRTPSctWGxpbmtlciArYiAtWGxpbmtlciAke2xpYmRpcn0nCkBAIC00MjY5LDE1ICs1Njg4LDE5IEBACiAJCSMgcmVhZG9ubHkgdG8gZXhwbG9pdCBhIHF1aXJrIGluIHRoZSBtZW1vcnkgbWFuYWdlci4KIAkJSU5TVEFMTF9MSUI9Ii1tIDU1NSIKIAkJOzsKLQlpcml4KikKLQkJaWYgdGVzdCAiJGNmX2N2X2xkX3JwYXRoIiA9IHllcyA7IHRoZW4KLQkJCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JCQkJY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJCQlFWFRSQV9MREZMQUdTPSItV2wsLXJwYXRoLFwke2xpYmRpcn0gJEVYVFJBX0xERkxBR1MiCi0JCQllbHNlCi0JCQkJY2ZfbGRfcnBhdGhfb3B0PSItcnBhdGggIgotCQkJCUVYVFJBX0xERkxBR1M9Ii1ycGF0aCBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgotCQkJZmkKKwkoaW50ZXJpeCopCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCQljZl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwkJZWxzZQorCQkJY2Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwkJZmkKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1ycGF0aCwke1JQQVRIX0xJU1R9IC1XbCwtaCwnJGNmX3NoYXJlZF9zb25hbWUnIC1vICRAJworCQk7OworCShpcml4KikKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkRVhUUkFfTERGTEFHUyIKIAkJZmkKIAkJIyB0ZXN0ZWQgd2l0aCBJUklYIDUuMiBhbmQgJ2NjJy4KIAkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCkBAIC00Mjg4LDU0ICs1NzExLDc3IEBACiAJCWZpCiAJCWNmX2N2X3JtX3NvX2xvY3M9eWVzCiAJCTs7Ci0JbGludXgqfGdudSp8aypic2QqLWdudSkKKwkobGludXgqfGdudSp8aypic2QqLWdudSkKIAkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItV2wsLXJwYXRoLFwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgogCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgogCQlmaQotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkRVhUUkFfTERGTEFHUyIKIAkJZmkKIAkJQ0ZfU0hBUkVEX1NPTkFNRQogCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJFtAXScKIAkJOzsKLQlvcGVuYnNkW1syLTldXS4qKQorCShtaW5ndyopCisJCWNmX2N2X3NobGliX3ZlcnNpb249bWluZ3cKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD1taW5ndworCQlzaGxpYmRpcj0kYmluZGlyCisJCU1BS0VfRExMUz0KIAkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItV2wsLXJwYXRoLFwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTPSItV2wsLS1lbmFibGUtYXV0by1pbXBvcnQiCisJCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCisJCQlFWFRSQV9MREZMQUdTPSItV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgJEVYVFJBX0xERkxBR1MiCisJCWZpCisJCUNDX1NIQVJFRF9PUFRTPQorCQlNS19TSEFSRURfTElCPSRTSEVMTCcgJyRyZWxfYnVpbGRkaXInL21rX3NoYXJlZF9saWIuc2ggWyRdQCBbJF17Q0N9IFskXXtDRkxBR1N9JworCQlSTV9TSEFSRURfT1BUUz0iJFJNX1NIQVJFRF9PUFRTICRyZWxfYnVpbGRkaXIvbWtfc2hhcmVkX2xpYi5zaCAqLmRsbC5hIgorCQljYXQgPm1rX3NoYXJlZF9saWIuc2ggPDwtQ0ZfRU9GCisJCSMhJFNIRUxMCisJCVNIQVJFRF9MSUI9XFskXTEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlxbJF0xIiB8IHNlZCAtZSAncy9bWzAtOV1dKlwuZGxsWyRdLy5kbGwuYS8nXGAKKwkJc2hpZnQKKwkJY2F0IDw8LUVPRgorCQlMaW5raW5nIHNoYXJlZCBsaWJyYXJ5CisJCSoqIFNIQVJFRF9MSUIgXFskXVNIQVJFRF9MSUIKKwkJKiogSU1QT1JUX0xJQiBcWyRdSU1QT1JUX0xJQgorRU9GCisJCWV4ZWMgXFskXSogLXNoYXJlZCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQsLS1vdXQtaW1wbGliPVxbJF17SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFxbJF17U0hBUkVEX0xJQn0KK0NGX0VPRgorCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoCisJCTs7CisJKG9wZW5ic2RbWzItOV1dLip8bWlyYnNkKikKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgogCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgogCQlmaQotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkRVhUUkFfTERGTEFHUyIKIAkJZmkKIAkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKIAkJQ0ZfU0hBUkVEX1NPTkFNRQotCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLVdsLC1Cc2hhcmVhYmxlLC1zb25hbWUsJyRjZl9jdl9zaGFyZWRfc29uYW1lJywtc3RhdHMsLWxjIC1vICRbQF0nCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkW0BdJwogCQk7OwotCW50by1xbngqfG9wZW5ic2QqfGZyZWVic2RbWzEyXV0uKikKKwkobnRvLXFueCp8b3BlbmJzZCp8ZnJlZWJzZFtbMTJdXS4qKQogCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgogCQlNS19TSEFSRURfTElCPScke0xEfSAtQnNoYXJlYWJsZSAtbyAkW0BdJwogCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCiAJCTs7Ci0JZnJlZWJzZCopCisJKGRyYWdvbmZseSp8ZnJlZWJzZCopCiAJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCi0JCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9sZF9ycGF0aCIgPSB5ZXMgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItcnBhdGggXCQoTE9DQUxfTElCRElSKSIKLQkJCUxPQ0FMX0xERkxBR1MyPSItcnBhdGggXCR7bGliZGlyfSAkTE9DQUxfTERGTEFHUyIKLQkJCWNmX2xkX3JwYXRoX29wdD0iLXJwYXRoICIKLQkJCUVYVFJBX0xERkxBR1M9Ii1ycGF0aCBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgorCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiAmJiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTMj0iJHtjZl9sZF9ycGF0aF9vcHR9XCR7UlBBVEhfTElTVH0gJExPQ0FMX0xERkxBR1MiCisJCQlFWFRSQV9MREZMQUdTPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkRVhUUkFfTERGTEFHUyIKIAkJZmkKIAkJQ0ZfU0hBUkVEX1NPTkFNRQotCQlNS19TSEFSRURfTElCPScke0xEfSAtQnNoYXJlYWJsZSAtc29uYW1lPWBiYXNlbmFtZSAkW0BdYCAtbyAkW0BdJworCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJFtAXScKIAkJOzsKLQluZXRic2QqKQorCShuZXRic2QqKQogCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgotCQl0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzICYmIGNmX2xkX3JwYXRoX29wdD0iLVdsLC1ycGF0aCwiCi0JCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9sZF9ycGF0aCIgPSB5ZXMgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItV2wsLXJwYXRoLFwkKExPQ0FMX0xJQkRJUikiCisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCQoTE9DQUxfTElCRElSKSIKIAkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKLQkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgogCQkJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0bzsgdGhlbgogCQkJaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvOyB0aGVuCiAJCQkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hYmkKQEAgLTQzNDYsMzcgKzU3OTIsMzMgQEAKIAkJCUNGX1NIQVJFRF9TT05BTUUKIAkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtc2hhcmVkIC1XbCwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScgLW8gJFtAXScKIAkJZWxzZQotCQkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLUJzaGFyZWFibGUgLW8gJFtAXScKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1XbCwtc2hhcmVkIC1XbCwtQnNoYXJlYWJsZSAtbyAkW0BdJwogCQlmaQogCQk7OwotCW9zZip8bWxzKyopCisJKG9zZip8bWxzKyopCiAJCSMgdGVzdGVkIHdpdGggT1NGLzEgVjMuMiBhbmQgJ2NjJwogCQkjIHRlc3RlZCB3aXRoIE9TRi8xIFYzLjIgYW5kIGdjYyAyLjYuMyAoYnV0IHRoZSBjKysgZGVtbyBkaWRuJ3QKIAkJIyBsaW5rIHdpdGggc2hhcmVkIGxpYnMpLgogCQlNS19TSEFSRURfTElCPScke0xEfSAtc2V0X3ZlcnNpb24gJHtSRUxfVkVSU0lPTn06JHtBQklfVkVSU0lPTn0gLWV4cGVjdF91bnJlc29sdmVkICIqIiAtc2hhcmVkIC1zb25hbWUgYGJhc2VuYW1lICRbQF1gJwogCQljYXNlICRob3N0X29zIGluCi0JCW9zZjQqKQorCQkob3NmNCopCiAJCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IC1tc3ltIgogCQkJOzsKIAkJZXNhYwogCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IicgLW8gJFtAXScKIAkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItV2wsLXJwYXRoLFwkKExPQ0FMX0xJQkRJUikiCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgogCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgogCQlmaQotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJY2ZfbGRfcnBhdGhfb3B0PSItcnBhdGgiCi0JCQkjIEVYVFJBX0xERkxBR1M9IiRMT0NBTF9MREZMQUdTICRFWFRSQV9MREZMQUdTIgotCQlmaQogCQljZl9jdl9ybV9zb19sb2NzPXllcwogCQk7OwotCXNjbzMuMnY1KikgICMgKGFsc28gdXcyKiBhbmQgVVc3KSBob3BzIDEzLUFwci05OAorCShzY28zLjJ2NSopICAjIGFsc28gdXcyKiBhbmQgVVc3OiBob3BzIDEzLUFwci05OAogCQkjIHRlc3RlZCB3aXRoIG9zcjUuMC41CiAJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgogCQkJQ0NfU0hBUkVEX09QVFM9Jy1iZWxmIC1LUElDJwogCQlmaQogCQlNS19TSEFSRURfTElCPScke0xEfSAtZHkgLUcgLWggYGJhc2VuYW1lICRbQF0gLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfSAtbyBbJF1AJwotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KIAkJCSMgb25seSB3YXkgaXMgdG8gc2V0IExEX1JVTl9QQVRIIGJ1dCBubyBzd2l0Y2ggZm9yIGl0CiAJCQlSVU5fUEFUSD0kbGliZGlyCiAJCWZpCkBAIC00Mzg0LDcgKzU4MjYsNyBAQAogCQlMSU5LX1BST0dTPSdMRF9SVU5fUEFUSD0ke2xpYmRpcn0nCiAJCUxJTktfVEVTVFM9J1B3ZD1gcHdkYDtMRF9SVU5fUEFUSD1gZGlybmFtZSAkJHtQd2R9YC9saWInCiAJCTs7Ci0Jc3Vub3M0KikKKwkoc3Vub3M0KikKIAkJIyB0ZXN0ZWQgd2l0aCBTdW5PUyA0LjEuMSBhbmQgZ2NjIDIuNy4wCiAJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgogCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJwpAQCAtNDM5Miw3MiArNTgzNCwxMDkgQEAKIAkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWFzc2VydCBwdXJlLXRleHQgLW8gJFtAXScKIAkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAogCQk7OwotCXNvbGFyaXMyKikKKwkoc29sYXJpczIqKQogCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDUuNS4xIChzb2xhcmlzIDIuNS4xKSBhbmQgZ2NjIDIuNy4yCiAJCSMgdGVzdGVkIHdpdGggU3VuT1MgNS4xMCAoc29sYXJpcyAxMCkgYW5kIGdjYyAzLjQuMwogCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KIAkJCUxPQ0FMX0xERkxBR1M9Ii1SIFwkKExPQ0FMX0xJQkRJUik6XCR7bGliZGlyfSIKIAkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKIAkJZmkKLQkJaWYgdGVzdCAiJGNmX2N2X2xkX3JwYXRoIiA9IHllcyA7IHRoZW4KLQkJCWNmX2xkX3JwYXRoX29wdD0iLVIiCi0JCQlFWFRSQV9MREZMQUdTPSIkTE9DQUxfTERGTEFHUyAkRVhUUkFfTERGTEFHUyIKKwkJaWYgdGVzdCAiJGNmX2N2X2VuYWJsZV9ycGF0aCIgPSB5ZXMgOyB0aGVuCisJCQlFWFRSQV9MREZMQUdTPSItUiBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgogCQlmaQogCQlDRl9TSEFSRURfU09OQU1FCiAJCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotCQkJQ0NfU0hBUkVEX09QVFM9Jy14Y29kZT1waWMzMicKKwkJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQkJZm9yIGNmX3NoYXJlZF9vcHRzIGluIC14Y29kZT1waWMzMiAteGNvZGU9cGljMTMgLUtQSUMgLUtwaWMgLU8KKwkJCWRvCisJCQkJQ0ZMQUdTPSIkY2Zfc2hhcmVkX29wdHMgJGNmX3NhdmVfQ0ZMQUdTIgorCQkJCUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkaW8uaD5dLFtwcmludGYoIkhlbGxvXG4iKTtdLFticmVha10pCisJCQlkb25lCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkJCUNDX1NIQVJFRF9PUFRTPSRjZl9zaGFyZWRfb3B0cwogCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLWR5IC1HIC1oICckY2ZfY3Zfc2hhcmVkX3NvbmFtZScgLW8gJFtAXScKIAkJZWxzZQogCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLXNoYXJlZCAtZHkgLUcgLWggJyRjZl9jdl9zaGFyZWRfc29uYW1lJyAtbyAkW0BdJwogCQlmaQogCQk7OwotCXN5c3Y1dXc3Knx1bml4X3N2KikKKwkoc3lzdjV1dzcqfHVuaXhfc3YqKQogCQkjIHRlc3RlZCB3aXRoIFVuaXhXYXJlIDcuMS4wIChnY2MgMi45NS4yIGFuZCBjYykKIAkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCiAJCQlDQ19TSEFSRURfT1BUUz0nLUtQSUMnCiAJCWZpCiAJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1kIHkgLUcgLW8gWyRdQCcKIAkJOzsKLQkqKQorCSgqKQogCQlDQ19TSEFSRURfT1BUUz0ndW5rbm93bicKIAkJTUtfU0hBUkVEX0xJQj0nZWNobyB1bmtub3duJwogCQk7OwogCWVzYWMKIAogCSMgVGhpcyB3b3JrcyBpZiB0aGUgbGFzdCB0b2tlbnMgaW4gJE1LX1NIQVJFRF9MSUIgYXJlIHRoZSAtbyB0YXJnZXQuCi0JY2FzZSAiJGNmX2N2X3NobGliX3ZlcnNpb24iIGluICModmkKLQlyZWx8YWJpKQotCQljYXNlICIkTUtfU0hBUkVEX0xJQiIgaW4gIyh2aQotCQkqJy1vICRbQF0nKQorCWNhc2UgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiBpbgorCShyZWx8YWJpKQorCQljYXNlICIkTUtfU0hBUkVEX0xJQiIgaW4KKwkJKConLW8gJFtAXScpCiAJCQl0ZXN0ICIkY2ZfY3ZfZG9fc3ltbGlua3MiID0gbm8gJiYgY2ZfY3ZfZG9fc3ltbGlua3M9eWVzCiAJCQk7OwotCQkqKQorCQkoKikKIAkJCUFDX01TR19XQVJOKGlnbm9yZWQgLS13aXRoLXNobGliLXZlcnNpb24pCiAJCQk7OwogCQllc2FjCiAJCTs7CiAJZXNhYwogCi0JaWYgdGVzdCAtbiAiJGNmX2xkX3JwYXRoX29wdCIgOyB0aGVuCi0JCUFDX01TR19DSEVDS0lORyhpZiB3ZSBuZWVkIGEgc3BhY2UgYWZ0ZXIgcnBhdGggb3B0aW9uKQotCQljZl9zYXZlX0xJQlM9IiRMSUJTIgotCQlMSUJTPSIkTElCUyAke2NmX2xkX3JwYXRoX29wdH0kbGliZGlyIgotCQlBQ19UUllfTElOSygsICwgY2ZfcnBhdGhfc3BhY2U9bm8sIGNmX3JwYXRoX3NwYWNlPXllcykKLQkJTElCUz0iJGNmX3NhdmVfTElCUyIKLQkJQUNfTVNHX1JFU1VMVCgkY2ZfcnBhdGhfc3BhY2UpCi0JCXRlc3QgIiRjZl9ycGF0aF9zcGFjZSIgPSB5ZXMgJiYgY2ZfbGRfcnBhdGhfb3B0PSIkY2ZfbGRfcnBhdGhfb3B0ICIKLQkJTUtfU0hBUkVEX0xJQj0iJE1LX1NIQVJFRF9MSUIgJGNmX2xkX3JwYXRoX29wdFwke2xpYmRpcn0iCisJaWYgdGVzdCAtbiAiJGNmX3RyeV9jZmxhZ3MiCisJdGhlbgorY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgX19vbGluZV9fICIke2FzX21lOi1jb25maWd1cmV9IgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltbXV0pCit7CisJcHJpbnRmKCJoZWxsb1xuIik7CisJcmV0dXJuIChhcmd2W1thcmdjLTFdXSA9PSAwKSA7Cit9CitFT0YKKwkJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJCWZvciBjZl9vcHQgaW4gJGNmX3RyeV9jZmxhZ3MKKwkJZG8KKwkJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC0kY2Zfb3B0IgorCQkJQUNfTVNHX0NIRUNLSU5HKGlmIENGTEFHUyBvcHRpb24gLSRjZl9vcHQgd29ya3MpCisJCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorCQkJCUFDX01TR19SRVNVTFQoeWVzKQorCQkJCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCQkJZWxzZQorCQkJCUFDX01TR19SRVNVTFQobm8pCisJCQlmaQorCQlkb25lCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgogCWZpCiAKKworCSMgUlBBVEhfTElTVCBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzCisJdGVzdCAtbiAiJGNmX2xkX3JwYXRoX29wdCIgJiYgTUtfU0hBUkVEX0xJQj0iJE1LX1NIQVJFRF9MSUIgJGNmX2xkX3JwYXRoX29wdFwke1JQQVRIX0xJU1R9IgorCXRlc3QgLXogIiRSUEFUSF9MSVNUIiAmJiBSUEFUSF9MSVNUPSJcJHtsaWJkaXJ9IgorCisJdGVzdCAkY2ZfY3Zfcm1fc29fbG9jcyA9IHllcyAmJiBSTV9TSEFSRURfT1BUUz0iJFJNX1NIQVJFRF9PUFRTIHNvX2xvY2F0aW9ucyIKKworCUNGX1ZFUkJPU0UoQ0NfU0hBUkVEX09QVFM6ICRDQ19TSEFSRURfT1BUUykKKwlDRl9WRVJCT1NFKE1LX1NIQVJFRF9MSUI6ICAkTUtfU0hBUkVEX0xJQikKKwogCUFDX1NVQlNUKENDX1NIQVJFRF9PUFRTKQorCUFDX1NVQlNUKExEX1JQQVRIX09QVCkKIAlBQ19TVUJTVChMRF9TSEFSRURfT1BUUykKIAlBQ19TVUJTVChNS19TSEFSRURfTElCKQorCUFDX1NVQlNUKFJNX1NIQVJFRF9PUFRTKQorCiAJQUNfU1VCU1QoTElOS19QUk9HUykKIAlBQ19TVUJTVChMSU5LX1RFU1RTKQorCiAJQUNfU1VCU1QoRVhUUkFfTERGTEFHUykKIAlBQ19TVUJTVChMT0NBTF9MREZMQUdTKQogCUFDX1NVQlNUKExPQ0FMX0xERkxBR1MyKQorCiAJQUNfU1VCU1QoSU5TVEFMTF9MSUIpCisJQUNfU1VCU1QoUlBBVEhfTElTVCkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ0ZfU0hBUkVEX1NPTkFNRSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDgvMDkvMDggMTg6MzQ6NDMKQEAgLTQ1MzcsNyArNjAxNiw3IEBACiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9TSUdfQVRPTUlDX1QgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDA1LzA5LzE4IDE3OjI3OjEyCitkbmwgQ0ZfU0lHX0FUT01JQ19UIHZlcnNpb246IDMgdXBkYXRlZDogMjAxMi8xMC8wNCAyMDoxMjoyMAogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIHNpZ25hbCBoYW5kbGVyLCBidXQgdGhlcmUgYXJlIHNvbWUgZ2NjIGRlcGVkZW5jaWVzIGluIHRoYXQgcmVjb21tZW5kYXRpb24uCiBkbmwgVHJ5IGFueXdheS4KQEAgLTQ1NjksMTAgKzYwNDgsMTAgQEAKIAlkb25lCiAJXSkKIEFDX01TR19SRVNVTFQoJGNmX2N2X3NpZ19hdG9taWNfdCkKLXRlc3QgIiRjZl9jdl9zaWdfYXRvbWljX3QiICE9IG5vICYmIEFDX0RFRklORV9VTlFVT1RFRChTSUdfQVRPTUlDX1QsICRjZl9jdl9zaWdfYXRvbWljX3QpCit0ZXN0ICIkY2ZfY3Zfc2lnX2F0b21pY190IiAhPSBubyAmJiBBQ19ERUZJTkVfVU5RVU9URUQoU0lHX0FUT01JQ19ULCAkY2ZfY3Zfc2lnX2F0b21pY190LFtEZWZpbmUgdG8gc2lnbmFsIGdsb2JhbCBkYXRhdHlwZV0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1NJWkVDSEFOR0UgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDAwLzExLzA0IDEyOjIyOjE2CitkbmwgQ0ZfU0laRUNIQU5HRSB2ZXJzaW9uOiAxMSB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGZvciBkZWZpbml0aW9ucyAmIHN0cnVjdHVyZXMgbmVlZGVkIGZvciB3aW5kb3cgc2l6ZS1jaGFuZ2luZwogZG5sIEZJWE1FOiBjaGVjayB0aGF0IHRoaXMgd29ya3Mgd2l0aCAic25ha2UiIChIUC1VWCAxMC54KQpAQCAtNDU4MCwxNSArNjA1OSwxNSBAQAogWwogQUNfUkVRVUlSRShbQ0ZfU1RSVUNUX1RFUk1JT1NdKQogQUNfQ0FDSEVfQ0hFQ0soZGVjbGFyYXRpb24gb2Ygc2l6ZS1jaGFuZ2UsIGNmX2N2X3NpemVjaGFuZ2UsWwotICAgIGNmX2N2X3NpemVjaGFuZ2U9dW5rbm93bgotICAgIGNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwljZl9jdl9zaXplY2hhbmdlPXVua25vd24KKwljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCiAKIGZvciBjZl9vcHRzIGluICIiICJORUVEX1BURU1fSCIKIGRvCiAKLSAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCi0gICAgdGVzdCAtbiAiJGNmX29wdHMiICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUQkY2Zfb3B0cyIKLSAgICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwl0ZXN0IC1uICIkY2Zfb3B0cyIgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRCRjZl9vcHRzIgorCUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9URVJNSU9TX0gKICNpbmNsdWRlIDx0ZXJtaW9zLmg+CiAjZWxzZQpAQCAtNDYzMywxNiArNjExMiwxNiBAQAogZG9uZQogXSkKIGlmIHRlc3QgIiRjZl9jdl9zaXplY2hhbmdlIiAhPSBubyA7IHRoZW4KLQlBQ19ERUZJTkUoSEFWRV9TSVpFQ0hBTkdFKQotCWNhc2UgJGNmX2N2X3NpemVjaGFuZ2UgaW4gIyh2aQotCU5FRUQqKQorCUFDX0RFRklORShIQVZFX1NJWkVDSEFOR0UsMSxbRGVmaW5lIHRvIDEgaWYgc2l6ZWNoYXIgZGVjbGFyYXRpb25zIGFyZSBwcm92aWRlZF0pCisJY2FzZSAkY2ZfY3Zfc2l6ZWNoYW5nZSBpbgorCShORUVEKikKIAkJQUNfREVGSU5FX1VOUVVPVEVEKCRjZl9jdl9zaXplY2hhbmdlICkKIAkJOzsKIAllc2FjCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9TUkNfTU9EVUxFUyB2ZXJzaW9uOiAxOCB1cGRhdGVkOiAyMDA1LzA1LzI4IDEyOjU4OjU0CitkbmwgQ0ZfU1JDX01PRFVMRVMgdmVyc2lvbjogMjkgdXBkYXRlZDogMjAxNS8wNC8xMiAxMTo0MjowMQogZG5sIC0tLS0tLS0tLS0tLS0tCiBkbmwgRm9yIGVhY2ggcGFyYW1ldGVyLCB0ZXN0IGlmIHRoZSBzb3VyY2UtZGlyZWN0b3J5IGV4aXN0cywgYW5kIGlmIGl0IGNvbnRhaW5zCiBkbmwgYSAnbW9kdWxlcycgZmlsZS4gIElmIHNvLCBhZGQgdG8gdGhlIGxpc3QgJGNmX2N2X3NyY19tb2R1bGVzIHdoaWNoIHdlJ2xsCkBAIC00NjYxLDEwICs2MTQwLDExIEBACiAJVEVTVF9BUkdTPSIke1RFU1RfREVQU30iCiAJVEVTVF9BUkcyPSIke1RFU1RfREVQMn0iCiBlbHNlCi0JVEVTVF9BUkdTPSItbCR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0gJFRFU1RfQVJHUyIKLQlURVNUX0FSRzI9Ii1sJHtMSUJfTkFNRX0ke0RGVF9BUkdfU1VGRklYfSAkVEVTVF9BUkcyIgorCVRFU1RfQVJHUz0iLWwke0xJQl9OQU1FfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCisJVEVTVF9BUkcyPSItbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0gJFRFU1RfQVJHMiIKIGZpCiAKK1BDX01PRFVMRVNfVE9fTUFLRT0ibmN1cnNlcyR7VVNFX0FSR19TVUZGSVh9IgogY2ZfY3Zfc3JjX21vZHVsZXM9CiBmb3IgY2ZfZGlyIGluICQxCiBkbwpAQCAtNDcwMCw5ICs2MTgwLDEwIEBACiAJCQkJVEVTVF9BUkdTPSIke1RFU1RfREVQU30iCiAJCQkJVEVTVF9BUkcyPSIke1RFU1RfREVQMn0iCiAJCQllbHNlCi0JCQkJVEVTVF9BUkdTPSItbCR7Y2ZfZGlyfSR7REZUX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCi0JCQkJVEVTVF9BUkcyPSItbCR7Y2ZfZGlyfSR7REZUX0FSR19TVUZGSVh9ICRURVNUX0FSRzIiCisJCQkJVEVTVF9BUkdTPSItbCR7Y2ZfZGlyfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCisJCQkJVEVTVF9BUkcyPSItbCR7Y2ZfZGlyfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSRzIiCiAJCQlmaQorCQkJUENfTU9EVUxFU19UT19NQUtFPSIke1BDX01PRFVMRVNfVE9fTUFLRX0gJHtjZl9kaXJ9JHtVU0VfQVJHX1NVRkZJWH0iCiAJCWZpCiAJZmkKIGRvbmUKQEAgLTQ3MTcsMTkgKzYxOTgsMzcgQEAKIEFDX1NVQlNUKFRFU1RfQVJHMikKIEFDX1NVQlNUKFRFU1RfREVQMikKIAotU1JDX1NVQkRJUlM9Im1hbiBpbmNsdWRlIgorU1JDX1NVQkRJUlM9CitpZiB0ZXN0ICJ4JGNmX3dpdGhfbWFucGFnZXMiICE9IHhubyA7IHRoZW4KKwlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIG1hbiIKK2ZpCitTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIGluY2x1ZGUiCiBmb3IgY2ZfZGlyIGluICRjZl9jdl9zcmNfbW9kdWxlcwogZG8KIAlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTICRjZl9kaXIiCiBkb25lCi1TUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIHRlc3QiCi10ZXN0IC16ICIkTUFLRV9URVJNSU5GTyIgJiYgU1JDX1NVQkRJUlM9IiRTUkNfU1VCRElSUyBtaXNjIgotdGVzdCAiJGNmX3dpdGhfY3h4X2JpbmRpbmciICE9IG5vICYmIFNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgYysrIgoraWYgdGVzdCAieCRjZl93aXRoX3Rlc3RzIiAhPSAieG5vIiA7IHRoZW4KKwlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIHRlc3QiCitmaQorIyBhbHdheXMgbWFrZSB0aGlzLCB0byBpbnN0YWxsIHRoZSBuY3Vyc2VzLWNvbmZpZyBzY3JpcHQKK1NSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgbWlzYyIKK2lmIHRlc3QgIiRjZl93aXRoX2N4eF9iaW5kaW5nIiAhPSBubzsgdGhlbgorCVBDX01PRFVMRVNfVE9fTUFLRT0iJHtQQ19NT0RVTEVTX1RPX01BS0V9IG5jdXJzZXMrKyR7VVNFX0FSR19TVUZGSVh9IgorCVNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgYysrIgorZmkKKwordGVzdCAieCR3aXRoX3Rlcm1saWIiICE9IHhubyAmJiBQQ19NT0RVTEVTX1RPX01BS0U9IiRQQ19NT0RVTEVTX1RPX01BS0UgJFRJTkZPX0FSR19TVUZGSVgiCit0ZXN0ICJ4JHdpdGhfdGljbGliIiAhPSB4bm8gJiYgUENfTU9EVUxFU19UT19NQUtFPSIkUENfTU9EVUxFU19UT19NQUtFICRUSUNTX0FSR19TVUZGSVgiCisKK0FDX1NVQlNUKFBDX01PRFVMRVNfVE9fTUFLRSkKIAogQURBX1NVQkRJUlM9Ci1pZiB0ZXN0ICIkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0geWVzICYmIHRlc3QgLWYgJHNyY2Rpci9BZGE5NS9NYWtlZmlsZS5pbjsgdGhlbgotICAgU1JDX1NVQkRJUlM9IiRTUkNfU1VCRElSUyBBZGE5NSIKLSAgIEFEQV9TVUJESVJTPSJnZW4gc3JjIHNhbXBsZXMiCitpZiB0ZXN0ICJ4JGNmX3dpdGhfYWRhIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9IHh5ZXMgJiYgdGVzdCAtZiAkc3JjZGlyL0FkYTk1L01ha2VmaWxlLmluOyB0aGVuCisJU1JDX1NVQkRJUlM9IiRTUkNfU1VCRElSUyBBZGE5NSIKKwlBREFfU1VCRElSUz0iZ2VuIHNyYyIKKwlpZiB0ZXN0ICJ4JGNmX3dpdGhfdGVzdHMiICE9ICJ4bm8iIDsgdGhlbgorCQlBREFfU1VCRElSUz0iJEFEQV9TVUJESVJTIHNhbXBsZXMiCisJZmkKIGZpCiAKIFNVQl9NQUtFRklMRVM9CkBAIC00NzM5LDMxICs2MjM4LDMxIEBACiBkb25lCiAKIGlmIHRlc3QgLW4gIiRBREFfU1VCRElSUyI7IHRoZW4KLSAgIGZvciBjZl9kaXIgaW4gJEFEQV9TVUJESVJTCi0gICBkbwotICAgICAgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgQWRhOTUvJGNmX2Rpci9NYWtlZmlsZSIKLSAgIGRvbmUKLSAgIEFDX1NVQlNUKEFEQV9TVUJESVJTKQorCWZvciBjZl9kaXIgaW4gJEFEQV9TVUJESVJTCisJZG8KKwkJU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgQWRhOTUvJGNmX2Rpci9NYWtlZmlsZSIKKwlkb25lCisJQUNfU1VCU1QoQURBX1NVQkRJUlMpCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9TVERDUFBfTElCUkFSWSB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMDAvMDgvMTIgMjM6MTg6NTIKK2RubCBDRl9TVERDUFBfTElCUkFSWSB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKIGRubCAtLS0tLS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGZvciAtbHN0ZGMrKywgd2hpY2ggaXMgR05VJ3Mgc3RhbmRhcmQgQysrIGxpYnJhcnkuCiBBQ19ERUZVTihbQ0ZfU1REQ1BQX0xJQlJBUlldLAogWwogaWYgdGVzdCAtbiAiJEdYWCIgOyB0aGVuCi1jYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi1vczIqKSAjKHZpCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKG9zMiopCiAJY2Zfc3RkY3BwX2xpYm5hbWU9c3RkY3BwCiAJOzsKLSopCisoKikKIAljZl9zdGRjcHBfbGlibmFtZT1zdGRjKysKIAk7OwogZXNhYwogQUNfQ0FDSEVfQ0hFQ0soZm9yIGxpYnJhcnkgJGNmX3N0ZGNwcF9saWJuYW1lLGNmX2N2X2xpYnN0ZGNwcCxbCiAJY2Zfc2F2ZT0iJExJQlMiCi0JTElCUz0iJExJQlMgLWwkY2Zfc3RkY3BwX2xpYm5hbWUiCisJQ0ZfQUREX0xJQigkY2Zfc3RkY3BwX2xpYm5hbWUpCiBBQ19UUllfTElOSyhbCiAjaW5jbHVkZSA8c3Ryc3RyZWFtLmg+XSxbCiBjaGFyIGJ1Zls4MF07CkBAIC00NzczLDcgKzYyNzIsNyBAQAogCVtjZl9jdl9saWJzdGRjcHA9bm9dKQogCUxJQlM9IiRjZl9zYXZlIgogXSkKLXRlc3QgIiRjZl9jdl9saWJzdGRjcHAiID0geWVzICYmIENYWExJQlM9IiRDWFhMSUJTIC1sJGNmX3N0ZGNwcF9saWJuYW1lIgordGVzdCAiJGNmX2N2X2xpYnN0ZGNwcCIgPSB5ZXMgJiYgQ0ZfQUREX0xJQigkY2Zfc3RkY3BwX2xpYm5hbWUsQ1hYTElCUykKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc4MywxMyArNjI4MiwxMyBAQAogQUNfREVGVU4oW0NGX1NUUklQX0dfT1BUXSwKIFskMT1gZWNobyAkeyQxfSB8IHNlZCAtZSAncyUtZyAlJScgLWUgJ3MlLWckJSUnYF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfU1RSVUNUX1NJR0FDVElPTiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDAvMDgvMTIgMjM6MTg6NTIKK2RubCBDRl9TVFJVQ1RfU0lHQUNUSU9OIHZlcnNpb246IDUgdXBkYXRlZDogMjAxMi8xMC8wNiAxNzo1NjoxMwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB3ZSBuZWVkIF9QT1NJWF9TT1VSQ0UgZGVmaW5lZCB0byB1c2Ugc3RydWN0IHNpZ2FjdGlvbi4gIFdlJ2xsIG9ubHkKIGRubCBkbyB0aGlzIGlmIHdlJ3ZlIGZvdW5kIHRoZSBzaWdhY3Rpb24gZnVuY3Rpb24uCi1kbmwKLWRubCBJZiBuZWVkZWQsIGRlZmluZSBTVlI0X0FDVElPTi4KIEFDX0RFRlVOKFtDRl9TVFJVQ1RfU0lHQUNUSU9OXSxbCitBQ19SRVFVSVJFKFtDRl9YT1BFTl9TT1VSQ0VdKQorCiBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19zaWdhY3Rpb24iID0geWVzOyB0aGVuCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBzaWdhY3Rpb24gbmVlZHMgX1BPU0lYX1NPVVJDRSkKIEFDX1RSWV9DT01QSUxFKFsKQEAgLTQ4MDQsMzAgKzYzMDMsMzIgQEAKICNpbmNsdWRlIDxzaWduYWwuaD5dLAogCVtzdHJ1Y3Qgc2lnYWN0aW9uIGFjdF0sCiAJW3NpZ2FjdF9iYWQ9eWVzCi0JIEFDX0RFRklORShTVlI0X0FDVElPTildLAorCSBBQ19ERUZJTkUoX1BPU0lYX1NPVVJDRSwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBtdXN0IGRlZmluZSBfUE9TSVhfU09VUkNFXSldLAogCSBbc2lnYWN0X2JhZD11bmtub3duXSldKQogQUNfTVNHX1JFU1VMVCgkc2lnYWN0X2JhZCkKIGZpCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1NUUlVDVF9URVJNSU9TIHZlcnNpb246IDUgdXBkYXRlZDogMjAwMC8xMS8wNCAxMjoyMjo0NgorZG5sIENGX1NUUlVDVF9URVJNSU9TIHZlcnNpb246IDggdXBkYXRlZDogMjAxNS8wNC8xNSAxOTowODo0OAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgU29tZSBtYWNoaW5lcyByZXF1aXJlIF9QT1NJWF9TT1VSQ0UgdG8gY29tcGxldGVseSBkZWZpbmUgc3RydWN0IHRlcm1pb3MuCi1kbmwgSWYgc28sIGRlZmluZSBTVlI0X1RFUk1JTwogQUNfREVGVU4oW0NGX1NUUlVDVF9URVJNSU9TXSxbCitBQ19SRVFVSVJFKFtDRl9YT1BFTl9TT1VSQ0VdKQorCiBBQ19DSEVDS19IRUFERVJTKCBcCiB0ZXJtaW8uaCBcCiB0ZXJtaW9zLmggXAogdW5pc3RkLmggXAogKQorCiBpZiB0ZXN0ICIkSVNDIiA9IHllcyA7IHRoZW4KIAlBQ19DSEVDS19IRUFERVJTKCBzeXMvdGVybWlvLmggKQogZmkKIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfdGVybWlvc19oIiA9IHllcyA7IHRoZW4KIAljYXNlICIkQ0ZMQUdTICRDUFBGTEFHUyIgaW4KLQkqLURfUE9TSVhfU09VUkNFKikKKwkoKi1EX1BPU0lYX1NPVVJDRSopCiAJCXRlcm1pb3NfYmFkPWR1bm5vIDs7Ci0JKikJdGVybWlvc19iYWQ9bWF5YmUgOzsKKwkoKikJdGVybWlvc19iYWQ9bWF5YmUgOzsKIAllc2FjCiAJaWYgdGVzdCAiJHRlcm1pb3NfYmFkIiA9IG1heWJlIDsgdGhlbgogCUFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRlcm1pb3MuaCBuZWVkcyBfUE9TSVhfU09VUkNFKQpAQCAtNDgzOSw0NCArNjM0MCwzNSBAQAogI2luY2x1ZGUgPHRlcm1pb3MuaD5dLAogCQkJW3N0cnVjdCB0ZXJtaW9zIGZvbzsgaW50IHggPSBmb28uY19pZmxhZ10sCiAJCQl0ZXJtaW9zX2JhZD11bmtub3duLAotCQkJdGVybWlvc19iYWQ9eWVzIEFDX0RFRklORShTVlI0X1RFUk1JTykpCisJCQl0ZXJtaW9zX2JhZD15ZXMgQUNfREVGSU5FKF9QT1NJWF9TT1VSQ0UsMSxbRGVmaW5lIHRvIDEgaWYgd2UgbXVzdCBkZWZpbmUgX1BPU0lYX1NPVVJDRV0pKQogCQkJXSkKIAlBQ19NU0dfUkVTVUxUKCR0ZXJtaW9zX2JhZCkKIAlmaQogZmkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfU1VCRElSX1BBVEggdmVyc2lvbjogNSB1cGRhdGVkOiAyMDA3LzA3LzI5IDA5OjU1OjEyCitkbmwgQ0ZfU1VCRElSX1BBVEggdmVyc2lvbjogNyB1cGRhdGVkOiAyMDE0LzEyLzA0IDA0OjMzOjA2CiBkbmwgLS0tLS0tLS0tLS0tLS0KIGRubCBDb25zdHJ1Y3QgYSBzZWFyY2gtbGlzdCBmb3IgYSBub25zdGFuZGFyZCBoZWFkZXIvbGliLWZpbGUKIGRubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CiBkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCiBkbmwJJDMgPSB0aGUgc3ViZGlyZWN0b3J5LCBlLmcuLCBiaW4sIGluY2x1ZGUgb3IgbGliCiBBQ19ERUZVTihbQ0ZfU1VCRElSX1BBVEhdLAotWyQxPSIiCitbCiskMT0KIAotQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLCQzLC91c3IsJHByZWZpeCkKIENGX0FERF9TVUJESVJfUEFUSCgkMSwkMiwkMywkcHJlZml4LE5PTkUpCi1DRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsJDMsL3Vzci9sb2NhbCwkcHJlZml4KQotQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLCQzLC9vcHQsJHByZWZpeCkKLUNGX0FERF9TVUJESVJfUEFUSCgkMSwkMiwkMyxbJF1IT01FLCRwcmVmaXgpCi1dKWRubAotZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1NVQlNUIHZlcnNpb246IDQgdXBkYXRlZDogMjAwNi8wNi8xNyAxMjozMzowMwotZG5sIC0tLS0tLS0tCi1kbmwJU2hvcnRoYW5kIG1hY3JvIGZvciBzdWJzdGl0dXRpbmcgdGhpbmdzIHRoYXQgdGhlIHVzZXIgbWF5IG92ZXJyaWRlCi1kbmwJd2l0aCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLWRubAotZG5sCSQxID0gbG9uZy9kZXNjcmlwdGl2ZSBuYW1lCi1kbmwJJDIgPSBlbnZpcm9ubWVudCB2YXJpYWJsZQotZG5sCSQzID0gZGVmYXVsdCB2YWx1ZQotQUNfREVGVU4oW0NGX1NVQlNUXSwKLVtBQ19DQUNIRV9WQUwoY2ZfY3Zfc3Vic3RfJDIsWwotQUNfTVNHX0NIRUNLSU5HKGZvciAkMSAoc3ltYm9sICQyKSkKLUNGX1NVQlNUX0lGKFsteiAiWyRdJDIiXSwgWyQyXSwgWyQzXSkKLWNmX2N2X3N1YnN0XyQyPVskXSQyCi1BQ19NU0dfUkVTVUxUKFskXSQyKQotXSkKKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwlbJF1IT01FCitkbworCUNGX0FERF9TVUJESVJfUEFUSCgkMSwkMiwkMywkY2Zfc3ViZGlyX3ByZWZpeCwkcHJlZml4KQorZG9uZQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9TVUJTVF9JRiB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMDYvMDYvMTcgMTI6MzM6MDMKQEAgLTQ5MjQsNyArNjQxNiw3IEBACiBBQ19TVUJTVChjZl9jdl90eXBlX29mX2Jvb2wpZG5sCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1NZU19USU1FX1NFTEVDVCB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDAvMTAvMDQgMDk6MTg6NDAKK2RubCBDRl9TWVNfVElNRV9TRUxFQ1QgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgaWYgd2UgY2FuIGluY2x1ZGUgPHN5cy90aW1lLmg+IHdpdGggPHN5cy9zZWxlY3QuaD47IHRoaXMgYnJlYWtzIG9uCiBkbmwgb2xkZXIgU0NPIGNvbmZpZ3VyYXRpb25zLgpAQCAtNDk0MSwyMiArNjQzMyw2MSBAQAogI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KICNlbmRpZgogXSxbXSxbY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0PXllc10sCi0gICAgIFtjZl9jdl9zeXNfdGltZV9zZWxlY3Q9bm9dKQotICAgICBdKQorCSBbY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0PW5vXSkKKwkgXSkKIEFDX01TR19SRVNVTFQoJGNmX2N2X3N5c190aW1lX3NlbGVjdCkKLXRlc3QgIiRjZl9jdl9zeXNfdGltZV9zZWxlY3QiID0geWVzICYmIEFDX0RFRklORShIQVZFX1NZU19USU1FX1NFTEVDVCkKK3Rlc3QgIiRjZl9jdl9zeXNfdGltZV9zZWxlY3QiID0geWVzICYmIEFDX0RFRklORShIQVZFX1NZU19USU1FX1NFTEVDVCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBjYW4gaW5jbHVkZSA8c3lzL3RpbWUuaD4gd2l0aCA8c3lzL3NlbGVjdC5oPl0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1RPUF9CVUlMRERJUiB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDYvMTAvMTUgMTY6MzM6MjMKK2RubCBDRl9UT1BfQlVJTERESVIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEzLzA3LzI3IDE3OjM4OjMyCiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgRGVmaW5lIGEgdG9wX2J1aWxkZGlyIHN5bWJvbCwgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIEFDX0RFRlVOKFtDRl9UT1BfQlVJTERESVJdLAogWwotdG9wX2J1aWxkZGlyPWBwd2RgCit0b3BfYnVpbGRkaXI9aWZlbHNlKCQxLCxgcHdkYCwkMSkKIEFDX1NVQlNUKHRvcF9idWlsZGRpcikKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfVFlQRU9GX0NIVFlQRSB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMDYvMTIvMTYgMTI6MzM6MzAKK2RubCBDRl9UUllfWE9QRU5fU09VUkNFIHZlcnNpb246IDEgdXBkYXRlZDogMjAxMS8xMC8zMCAxNzowOTo1MAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBJZiBfWE9QRU5fU09VUkNFIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBjb21waWxlIGVudmlyb25tZW50LCBjaGVjayBpZiB3ZQorZG5sIGNhbiBkZWZpbmUgaXQgc3VjY2Vzc2Z1bGx5LgorQUNfREVGVU4oW0NGX1RSWV9YT1BFTl9TT1VSQ0VdLFsKK0FDX0NBQ0hFX0NIRUNLKGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRSxjZl9jdl94b3Blbl9zb3VyY2UsWworCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK10sWworI2lmbmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCVtjZl9jdl94b3Blbl9zb3VyY2U9bm9dLAorCVtjZl9zYXZlPSIkQ1BQRkxBR1MiCisJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFPSRjZl9YT1BFTl9TT1VSQ0UiCisJIEFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK10sWworI2lmZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sCisJW2NmX2N2X3hvcGVuX3NvdXJjZT1ub10sCisJW2NmX2N2X3hvcGVuX3NvdXJjZT0kY2ZfWE9QRU5fU09VUkNFXSkKKwlDUFBGTEFHUz0iJGNmX3NhdmUiCisJXSkKK10pCisKK2lmIHRlc3QgIiRjZl9jdl94b3Blbl9zb3VyY2UiICE9IG5vIDsgdGhlbgorCUNGX1JFTU9WRV9ERUZJTkUoQ0ZMQUdTLCRDRkxBR1MsX1hPUEVOX1NPVVJDRSkKKwlDRl9SRU1PVkVfREVGSU5FKENQUEZMQUdTLCRDUFBGTEFHUyxfWE9QRU5fU09VUkNFKQorCWNmX3RlbXBfeG9wZW5fc291cmNlPSItRF9YT1BFTl9TT1VSQ0U9JGNmX2N2X3hvcGVuX3NvdXJjZSIKKwlDRl9BRERfQ0ZMQUdTKCRjZl90ZW1wX3hvcGVuX3NvdXJjZSkKK2ZpCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1RZUEVPRl9DSFRZUEUgdmVyc2lvbjogOSB1cGRhdGVkOiAyMDEyLzEwLzA2IDE3OjU2OjEzCiBkbmwgLS0tLS0tLS0tLS0tLS0tLQogZG5sIERldGVybWluZSB0aGUgdHlwZSB3ZSBzaG91bGQgdXNlIGZvciBjaHR5cGUgKGFuZCBhdHRyX3QsIHdoaWNoIGlzIHRyZWF0ZWQKIGRubCBhcyB0aGUgc2FtZSB0aGluZykuICBXZSB3YW50IGFyb3VuZCAzMiBiaXRzLCBzbyBvbiBtb3N0IG1hY2hpbmVzIHdhbnQgYQpAQCAtNTAwNSwxMCArNjUzNiwxMCBAQAogQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfdHlwZW9mX2NodHlwZSkKIAogQUNfU1VCU1QoY2ZfY3ZfdHlwZW9mX2NodHlwZSkKLUFDX0RFRklORV9VTlFVT1RFRChUWVBFT0ZfQ0hUWVBFLCRjZl9jdl90eXBlb2ZfY2h0eXBlKQorQUNfREVGSU5FX1VOUVVPVEVEKFRZUEVPRl9DSFRZUEUsJGNmX2N2X3R5cGVvZl9jaHR5cGUsW0RlZmluZSB0byBhY3R1YWwgdHlwZSBpZiBuZWVkZWQgZm9yIGNodHlwZV0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1RZUEVfU0lHQUNUSU9OIHZlcnNpb246IDMgdXBkYXRlZDogMjAwMC8wOC8xMiAyMzoxODo1MgorZG5sIENGX1RZUEVfU0lHQUNUSU9OIHZlcnNpb246IDQgdXBkYXRlZDogMjAxMi8xMC8wNiAxNzo1NjoxMwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tCiBkbmwKIEFDX0RFRlVOKFtDRl9UWVBFX1NJR0FDVElPTl0sCkBAIC01MDIxLDcgKzY1NTIsNyBAQAogCQlbY2ZfY3ZfdHlwZV9zaWdhY3Rpb249eWVzXSwKIAkJW2NmX2N2X3R5cGVfc2lnYWN0aW9uPW5vXSldKQogQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfdHlwZV9zaWdhY3Rpb24pCi10ZXN0ICIkY2ZfY3ZfdHlwZV9zaWdhY3Rpb24iID0geWVzICYmIEFDX0RFRklORShIQVZFX1RZUEVfU0lHQUNUSU9OKQordGVzdCAiJGNmX2N2X3R5cGVfc2lnYWN0aW9uIiA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9UWVBFX1NJR0FDVElPTiwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHRoZSBzaWdhY3Rpb25fdCB0eXBlXSkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ0ZfVU5TSUdORURfTElURVJBTFMgdmVyc2lvbjogMiB1cGRhdGVkOiAxOTk4LzAyLzA3IDIyOjEwOjE2CkBAIC01MDQ4LDcgKzY1NzksNyBAQAogJDE9YGVjaG8gIiQyIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfVVRGOF9MSUIgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDA4LzEwLzE3IDE5OjM3OjUyCitkbmwgQ0ZfVVRGOF9MSUIgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCiBkbmwgLS0tLS0tLS0tLS0KIGRubCBDaGVjayBmb3IgbXVsdGlieXRlIHN1cHBvcnQsIGFuZCBpZiBub3QgZm91bmQsIHV0ZjggY29tcGF0aWJpbGl0eSBsaWJyYXJ5CiBBQ19ERUZVTihbQ0ZfVVRGOF9MSUJdLApAQCAtNTA2NywxMyArNjU5OCw0MyBAQAogIyBIQVZFX0xJQlVURjhfSCBpcyB1c2VkIGJ5IG5jdXJzZXMgaWYgY3Vyc2VzLmggaXMgc2hhcmVkIGJldHdlZW4KICMgbmN1cnNlcy9uY3Vyc2VzdzoKIGlmIHRlc3QgIiRjZl9jdl91dGY4X2xpYiIgPSAiYWRkLW9uIiA7IHRoZW4KLQlBQ19ERUZJTkUoSEFWRV9MSUJVVEY4X0gpCisJQUNfREVGSU5FKEhBVkVfTElCVVRGOF9ILDEsW0RlZmluZSB0byAxIGlmIHdlIHNob3VsZCBpbmNsdWRlIGxpYnV0ZjguaF0pCiAJQ0ZfQUREX0lOQ0RJUigkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCkKIAlDRl9BRERfTElCRElSKCRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCkKLQlMSUJTPSItbHV0ZjggJExJQlMiCisJQ0ZfQUREX0xJQlMoJGNmX2N2X2xpYnJhcnlfZmlsZV91dGY4KQogZmkKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfVkFfQ09QWSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTE6MTc6MTUKK2RubCAtLS0tLS0tLS0tCitkbmwgY2hlY2sgZm9yIHZhX2NvcHksIHBhcnQgb2Ygc3RkYXJnLmgKK2RubCBBbHNvLCB3b3JrYXJvdW5kIGZvciBnbGliYydzIF9fdmFfY29weSwgYnkgY2hlY2tpbmcgZm9yIGJvdGguCitBQ19ERUZVTihbQ0ZfVkFfQ09QWV0sWworQUNfQ0FDSEVfQ0hFQ0soZm9yIHZhX2NvcHksIGNmX2N2X2hhdmVfdmFfY29weSxbCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8c3RkYXJnLmg+CitdLFsKKwlzdGF0aWMgdmFfbGlzdCBkc3Q7CisJc3RhdGljIHZhX2xpc3Qgc3JjOworCXZhX2NvcHkoZHN0LCBzcmMpXSwKKwljZl9jdl9oYXZlX3ZhX2NvcHk9eWVzLAorCWNmX2N2X2hhdmVfdmFfY29weT1ubyldKQorCit0ZXN0ICIkY2ZfY3ZfaGF2ZV92YV9jb3B5IiA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9WQV9DT1BZLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgdmFfY29weV0pCisKK0FDX0NBQ0hFX0NIRUNLKGZvciBfX3ZhX2NvcHksIGNmX2N2X2hhdmVfX192YV9jb3B5LFsKK0FDX1RSWV9MSU5LKFsKKyNpbmNsdWRlIDxzdGRhcmcuaD4KK10sWworCXN0YXRpYyB2YV9saXN0IGRzdDsKKwlzdGF0aWMgdmFfbGlzdCBzcmM7CisJX192YV9jb3B5KGRzdCwgc3JjKV0sCisJY2ZfY3ZfaGF2ZV9fX3ZhX2NvcHk9eWVzLAorCWNmX2N2X2hhdmVfX192YV9jb3B5PW5vKV0pCisKK3Rlc3QgIiRjZl9jdl9oYXZlX19fdmFfY29weSIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfX19WQV9DT1BZLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgX192YV9jb3B5XSkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ0ZfVkVSQk9TRSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMDcvMDcvMjkgMDk6NTU6MTIKIGRubCAtLS0tLS0tLS0tCiBkbmwgVXNlIEFDX1ZFUkJPU0Ugdy9vIHRoZSB3YXJuaW5ncwpAQCAtNTA4Miw3ICs2NjQzLDk1IEBACiBDRl9NU0dfTE9HKFskMV0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1dDSEFSX1RZUEUgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDA0LzAxLzE3IDE5OjE4OjIwCitkbmwgQ0ZfVkVSU0lPTl9JTkZPIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIERlZmluZSBzZXZlcmFsIHVzZWZ1bCBzeW1ib2xzIGRlcml2ZWQgZnJvbSB0aGUgVkVSU0lPTiBmaWxlLiAgQSBzZXBhcmF0ZQorZG5sIGZpbGUgaXMgcHJlZmVycmVkIHRvIGVtYmVkZGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHZhcmlvdXMgc2NyaXB0cy4KK2RubCAoYXV0b21ha2UgaXMgYSB0ZXh0Ym9vay1leGFtcGxlIG9mIHdoeSB0aGUgbGF0dGVyIGlzIGEgYmFkIGlkZWEsIGJ1dCB0aGVyZQorZG5sIGFyZSBvdGhlcnMpLgorZG5sCitkbmwgVGhlIGZpbGUgY29udGVudHMgYXJlOgorZG5sCWxpYnRvb2wtdmVyc2lvbglyZWxlYXNlLXZlcnNpb24JcGF0Y2gtdmVyc2lvbgorZG5sIG9yCitkbmwJcmVsZWFzZS12ZXJzaW9uCitkbmwgd2hlcmUKK2RubAlsaWJ0b29sLXZlcnNpb24gKHNlZSA/KSBjb25zaXN0cyBvZiAzIGludGVnZXJzIHNlcGFyYXRlZCBieSAnLicKK2RubAlyZWxlYXNlLXZlcnNpb24gY29uc2lzdHMgb2YgYSBtYWpvciB2ZXJzaW9uIGFuZCBtaW5vciB2ZXJzaW9uCitkbmwJCXNlcGFyYXRlZCBieSAnLicsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBwYXRjaC12ZXJzaW9uCitkbmwJCXNlcGFyYXRlZCBieSAnLScuICBUaGUgbWlub3IgdmVyc2lvbiBuZWVkIG5vdCBiZSBhbgorZG5sCQlpbnRlZ2VyIChidXQgaXQgaXMgcHJlZmVycmVkKS4KK2RubAlwYXRjaC12ZXJzaW9uIGlzIGFuIGludGVnZXIgaW4gdGhlIGZvcm0geXl5eW1tZGQsIHNvIGlmZGVmJ3MgYW5kCitkbmwJCXNjcmlwdHMgY2FuIGVhc2lseSBjb21wYXJlIHZlcnNpb25zLgorZG5sCitkbmwgSWYgbGlidG9vbCBpcyB1c2VkLCB0aGUgZmlyc3QgZm9ybSBpcyByZXF1aXJlZCwgc2luY2UgQ0ZfV0lUSF9MSUJUT09MCitkbmwgc2ltcGx5IGV4dHJhY3RzIHRoZSBmaXJzdCBmaWVsZCB1c2luZyAnY3V0IC1mMScuCitkbmwKK2RubCBPcHRpb25hbCBwYXJhbWV0ZXJzOgorZG5sICQxID0gaW50ZXJuYWwgbmFtZSBmb3IgcGFja2FnZQorZG5sICQyID0gZXh0ZXJuYWwgbmFtZSBmb3IgcGFja2FnZQorQUNfREVGVU4oW0NGX1ZFUlNJT05fSU5GT10sCitbCitpZiB0ZXN0IC1mICRzcmNkaXIvVkVSU0lPTiA7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yIHBhY2thZ2UgdmVyc2lvbikKKworCSMgaWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggZmllbGRzLCBjdXQgcmV0dXJucyB0aGUgbGFzdCBvbmUuLi4KKwljZl9maWVsZDE9YHNlZCAtZSAnMiwkZCcgJHNyY2Rpci9WRVJTSU9OfGN1dCAtZjFgCisJY2ZfZmllbGQyPWBzZWQgLWUgJzIsJGQnICRzcmNkaXIvVkVSU0lPTnxjdXQgLWYyYAorCWNmX2ZpZWxkMz1gc2VkIC1lICcyLCRkJyAkc3JjZGlyL1ZFUlNJT058Y3V0IC1mM2AKKworCSMgdGhpcyBpcyBob3cgQ0ZfQlVORExFRF9JTlRMIHVzZXMgJFZFUlNJT046CisJVkVSU0lPTj0iJGNmX2ZpZWxkMSIKKworCVZFUlNJT05fTUFKT1I9YGVjaG8gIiRjZl9maWVsZDIiIHwgc2VkIC1lICdzL1wuLiovLydgCisJdGVzdCAteiAiJFZFUlNJT05fTUFKT1IiICYmIEFDX01TR19FUlJPUihtaXNzaW5nIG1ham9yLXZlcnNpb24pCisKKwlWRVJTSU9OX01JTk9SPWBlY2hvICIkY2ZfZmllbGQyIiB8IHNlZCAtZSAncy9eW1teLl1dKlwuLy8nIC1lICdzLy0uKi8vJ2AKKwl0ZXN0IC16ICIkVkVSU0lPTl9NSU5PUiIgJiYgQUNfTVNHX0VSUk9SKG1pc3NpbmcgbWlub3ItdmVyc2lvbikKKworCUFDX01TR19SRVNVTFQoJHtWRVJTSU9OX01BSk9SfS4ke1ZFUlNJT05fTUlOT1J9KQorCisJQUNfTVNHX0NIRUNLSU5HKGZvciBwYWNrYWdlIHBhdGNoIGRhdGUpCisJVkVSU0lPTl9QQVRDSD1gZWNobyAiJGNmX2ZpZWxkMyIgfCBzZWQgLWUgJ3MvXltbXi1dXSotLy8nYAorCWNhc2UgLiRWRVJTSU9OX1BBVENIIGluCisJKC4pCisJCUFDX01TR19FUlJPUihtaXNzaW5nIHBhdGNoLWRhdGUgJFZFUlNJT05fUEFUQ0gpCisJCTs7CisJKC5bWzAtOV1dW1swLTldXVtbMC05XV1bWzAtOV1dW1swLTldXVtbMC05XV1bWzAtOV1dW1swLTldXSkKKwkJOzsKKwkoKikKKwkJQUNfTVNHX0VSUk9SKGlsbGVnYWwgcGF0Y2gtZGF0ZSAkVkVSU0lPTl9QQVRDSCkKKwkJOzsKKwllc2FjCisJQUNfTVNHX1JFU1VMVCgkVkVSU0lPTl9QQVRDSCkKK2Vsc2UKKwlBQ19NU0dfRVJST1IoZGlkIG5vdCBmaW5kICRzcmNkaXIvVkVSU0lPTikKK2ZpCisKKyMgc2hvdyB0aGUgYWN0dWFsIGRhdGEgdGhhdCB3ZSBoYXZlIGZvciB2ZXJzaW9uczoKK0NGX1ZFUkJPU0UoQUJJIFZFUlNJT04gJFZFUlNJT04pCitDRl9WRVJCT1NFKFZFUlNJT05fTUFKT1IgJFZFUlNJT05fTUFKT1IpCitDRl9WRVJCT1NFKFZFUlNJT05fTUlOT1IgJFZFUlNJT05fTUlOT1IpCitDRl9WRVJCT1NFKFZFUlNJT05fUEFUQ0ggJFZFUlNJT05fUEFUQ0gpCisKK0FDX1NVQlNUKFZFUlNJT04pCitBQ19TVUJTVChWRVJTSU9OX01BSk9SKQorQUNfU1VCU1QoVkVSU0lPTl9NSU5PUikKK0FDX1NVQlNUKFZFUlNJT05fUEFUQ0gpCisKK2RubCBpZiBhIHBhY2thZ2UgbmFtZSBpcyBnaXZlbiwgZGVmaW5lIGl0cyBjb3JyZXNwb25kaW5nIHZlcnNpb24gaW5mby4gIFdlCitkbmwgbmVlZCB0aGUgcGFja2FnZSBuYW1lIHRvIGVuc3VyZSB0aGF0IHRoZSBkZWZpbmVkIHN5bWJvbHMgYXJlIHVuaXF1ZS4KK2lmZWxzZSgkMSwsLFsKKwljZl9QQUNLQUdFPSQxCisJUEFDS0FHRT1pZmVsc2UoJDIsLCQxLCQyKQorCUFDX0RFRklORV9VTlFVT1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLFtEZWZpbmUgdG8gdGhlIHBhY2thZ2UtbmFtZV0pCisJQUNfU1VCU1QoUEFDS0FHRSkKKwlDRl9VUFBFUihjZl9QQUNLQUdFLCRjZl9QQUNLQUdFKQorCUFDX0RFRklORV9VTlFVT1RFRCgke2NmX1BBQ0tBR0V9X1ZFUlNJT04sIiR7VkVSU0lPTl9NQUpPUn0uJHtWRVJTSU9OX01JTk9SfSIpCisJQUNfREVGSU5FX1VOUVVPVEVEKCR7Y2ZfUEFDS0FHRX1fUEFUQ0hEQVRFLCR7VkVSU0lPTl9QQVRDSH0pCitdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XQ0hBUl9UWVBFIHZlcnNpb246IDQgdXBkYXRlZDogMjAxMi8xMC8wNiAxNjozOTo1OAogZG5sIC0tLS0tLS0tLS0tLS0KIGRubCBDaGVjayBpZiB0eXBlIHdpZGUtY2hhcmFjdGVyIHR5cGUgJDEgaXMgZGVjbGFyZWQsIGFuZCBpZiBzbywgd2hpY2ggaGVhZGVyCiBkbmwgZmlsZSBpcyBuZWVkZWQuICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNldCBhIHNoZWxsIHZhcmlhYmxlIHdoZW4KQEAgLTUxMTQsMTEgKzY3NjMsMTEgQEAKIAlbY2ZfY3ZfJDE9dW5rbm93bl0pXSldKQogCiBpZiB0ZXN0ICIkY2ZfY3ZfJDEiID0geWVzIDsgdGhlbgotCUFDX0RFRklORShORUVEX1dDSEFSX0gpCisJQUNfREVGSU5FKE5FRURfV0NIQVJfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBtdXN0IGluY2x1ZGUgd2NoYXIuaF0pCiAJTkVFRF9XQ0hBUl9IPTEKIGZpCiAKLWlmZWxzZSgkMiwsLFsKK2lmZWxzZShbJDJdLCwsWwogIyBpZiB3ZSBkbyBub3QgZmluZCAkMSBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgogaWYgdGVzdCAiJGNmX2N2XyQxIiA9IHVua25vd24gOyB0aGVuCiAJJDI9MQpAQCAtNTE1OCw3ICs2ODA3LDcgQEAKIF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1dJVEhfQUJJX1ZFUlNJT04gdmVyc2lvbjogMSB1cGRhdGVkOiAyMDAzLzA5LzIwIDE4OjEyOjQ5CitkbmwgQ0ZfV0lUSF9BQklfVkVSU0lPTiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTUvMDYvMDYgMTY6MTA6MTEKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgQWxsb3cgbGlicmFyeSdzIEFCSSB0byBiZSBvdmVycmlkZGVuLiAgR2VuZXJhbGx5IHRoaXMgaGFwcGVucyB3aGVuIGEKIGRubCBwYWNrYWdlciBoYXMgaW5jcmVtZW50ZWQgdGhlIEFCSSBwYXN0IHRoYXQgdXNlZCBpbiB0aGUgb3JpZ2luYWwgcGFja2FnZSwKQEAgLTUxNjksMTYgKzY4MTgsMTE4IEBACiBBQ19ERUZVTihbQ0ZfV0lUSF9BQklfVkVSU0lPTl0sWwogdGVzdCAteiAiJGNmX2N2X2FiaV92ZXJzaW9uIiAmJiBjZl9jdl9hYmlfdmVyc2lvbj0wCiBBQ19BUkdfV0lUSChhYmktdmVyc2lvbiwKLVsgIC0td2l0aC1hYmktdmVyc2lvbj1YWFggIG92ZXJyaWRlIGRlcml2ZWQgQUJJIHZlcnNpb25dLAotW0FDX01TR19XQVJOKG92ZXJyaWRpbmcgQUJJIHZlcnNpb24gJGNmX2N2X2FiaV92ZXJzaW9uIHRvICR3aXRodmFsKQotIGNmX2N2X2FiaV92ZXJzaW9uPSR3aXRodmFsXSkKLSBDRl9OVU1CRVJfU1lOVEFYKCRjZl9jdl9hYmlfdmVyc2lvbixBQkkgdmVyc2lvbikKK1sgIC0td2l0aC1hYmktdmVyc2lvbj1YWFggIG92ZXJyaWRlIGRlcml2ZWQgQUJJIHZlcnNpb25dLFsKKwlpZiB0ZXN0ICJ4JGNmX2N2X2FiaV92ZXJzaW9uIiAhPSAieCR3aXRodmFsIgorCXRoZW4KKwkJQUNfTVNHX1dBUk4ob3ZlcnJpZGluZyBBQkkgdmVyc2lvbiAkY2ZfY3ZfYWJpX3ZlcnNpb24gdG8gJHdpdGh2YWwpCisJCWNhc2UgJGNmX2N2X3JlbF92ZXJzaW9uIGluCisJCSg1LiopCisJCQljZl9jdl9yZWxfdmVyc2lvbj0kd2l0aHZhbC4wCisJCQk7OworCQkoNi4qKQorCQkJY2ZfY3ZfcmVsX3ZlcnNpb249JHdpdGh2YWwuOQkjIEZJWE1FOiBzaG91bGQgYmUgMTAgYXMgb2YgNi4wIHJlbGVhc2UKKwkJCTs7CisJCWVzYWMKKwlmaQorCWNmX2N2X2FiaV92ZXJzaW9uPSR3aXRodmFsXSkKKwlDRl9OVU1CRVJfU1lOVEFYKCRjZl9jdl9hYmlfdmVyc2lvbixBQkkgdmVyc2lvbikKIGlmZWxzZSgkMSwsLFsKICQxX0FCST0kY2ZfY3ZfYWJpX3ZlcnNpb24KIF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1dJVEhfREJNQUxMT0MgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDA2LzEyLzE2IDE0OjI0OjA1CitkbmwgQ0ZfTkNVUlNFU19XSVRIX0FCSV9WRVJTSU9OIHZlcnNpb246IDEgdXBkYXRlZDogMjAxNS8wNi8wNiAxMzo0OTo1OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQUJJX1ZFUlNJT04gdmVyc2lvbjogMSB1cGRhdGVkOiAyMDAzLzA5LzIwIDE4OjEyOjQ5CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEFsbG93IG5jdXJzZXMncyBBQkkgdG8gYmUgb3ZlcnJpZGRlbi4gIEdlbmVyYWxseSB0aGlzIGhhcHBlbnMgd2hlbiBhCitkbmwgcGFja2FnZXIgaGFzIGluY3JlbWVudGVkIHRoZSBBQkkgcGFzdCB0aGF0IHVzZWQgaW4gdGhlIG9yaWdpbmFsIHBhY2thZ2UsCitkbmwgYW5kIHdpc2hlcyB0byBrZWVwIGRvaW5nIHRoaXMuCitkbmwKK2RubCAkMSBpcyB0aGUgcGFja2FnZSBuYW1lLCBpZiBhbnksIHRvIGRlcml2ZSBhIGNvcnJlc3BvbmRpbmcge3BhY2thZ2V9X0FCSQorZG5sIHN5bWJvbC4KK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX1dJVEhfQUJJX1ZFUlNJT05dLFsKK0NGX1dJVEhfQUJJX1ZFUlNJT04oJDEpCitpZiB0ZXN0ICJ4JGNmX2N2X2FiaV92ZXJzaW9uIiAhPSAieCR3aXRoX2FiaV92ZXJzaW9uIgordGhlbgorCWNhc2UgJGNmX2N2X3JlbF92ZXJzaW9uIGluCisJKDUuKikKKwkJY2ZfY3ZfcmVsX3ZlcnNpb249JHdpdGhfYWJpX3ZlcnNpb24uMAorCQk7OworCWVzYWMKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX0NPTVBJTEVSIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMC8wNi8yNiAxNzozNTo1OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29tbWFuZC1saW5lIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBBZGE5NSBjb21waWxlci4KK0FDX0RFRlVOKFtDRl9XSVRIX0FEQV9DT01QSUxFUl0sWworQUNfTVNHX0NIRUNLSU5HKGZvciBhZGEtY29tcGlsZXIpCitBQ19BUkdfV0lUSChhZGEtY29tcGlsZXIsCisJWyAgLS13aXRoLWFkYS1jb21waWxlcj1DTUQgc3BlY2lmeSBBZGE5NSBjb21waWxlciBjb21tYW5kIChkZWZhdWx0IGduYXRtYWtlKV0sCisJW2NmX2FkYV9jb21waWxlcj0kd2l0aHZhbF0sCisJW2NmX2FkYV9jb21waWxlcj1nbmF0bWFrZV0pCitBQ19TVUJTVChjZl9hZGFfY29tcGlsZXIpCitBQ19NU0dfUkVTVUxUKCRjZl9hZGFfY29tcGlsZXIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX0lOQ0xVREUgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzI2IDE3OjM1OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbW1hbmQtbGluZSBvcHRpb24gdG8gc3BlY2lmeSB3aGVyZSBBZGEgaW5jbHVkZXMgd2lsbCBpbnN0YWxsLgorQUNfREVGVU4oW0NGX1dJVEhfQURBX0lOQ0xVREVdLFsKK0FDX01TR19DSEVDS0lORyhmb3IgYWRhLWluY2x1ZGUpCitDRl9XSVRIX1BBVEgoYWRhLWluY2x1ZGUsCisgICBbICAtLXdpdGgtYWRhLWluY2x1ZGU9RElSICBBZGEgaW5jbHVkZXMgYXJlIGluIERJUl0sCisgICBBREFfSU5DTFVERSwKKyAgIFBSRUZJWC9zaGFyZS9hZGEvYWRhaW5jbHVkZSwKKyAgIFskXXByZWZpeC9zaGFyZS9hZGEvYWRhaW5jbHVkZSkKK0FDX1NVQlNUKEFEQV9JTkNMVURFKQorQUNfTVNHX1JFU1VMVCgkQURBX0lOQ0xVREUpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQURBX09CSkVDVFMgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzI2IDE3OjM1OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbW1hbmQtbGluZSBvcHRpb24gdG8gc3BlY2lmeSB3aGVyZSBBZGEgb2JqZWN0cyB3aWxsIGluc3RhbGwuCitBQ19ERUZVTihbQ0ZfV0lUSF9BREFfT0JKRUNUU10sWworQUNfTVNHX0NIRUNLSU5HKGZvciBhZGEtb2JqZWN0cykKK0NGX1dJVEhfUEFUSChhZGEtb2JqZWN0cywKKyAgIFsgIC0td2l0aC1hZGEtb2JqZWN0cz1ESVIgIEFkYSBvYmplY3RzIGFyZSBpbiBESVJdLAorICAgQURBX09CSkVDVFMsCisgICBQUkVGSVgvbGliL2FkYS9hZGFsaWIsCisgICBbJF1wcmVmaXgvbGliL2FkYS9hZGFsaWIpCitBQ19TVUJTVChBREFfT0JKRUNUUykKK0FDX01TR19SRVNVTFQoJEFEQV9PQkpFQ1RTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX0FEQV9TSEFSRURMSUIgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE0LzA1LzMxIDIxOjA4OjM3CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29tbWFuZC1saW5lIG9wdGlvbiB0byBzcGVjaWZ5IGlmIGFuIEFkYTk1IHNoYXJlZC1saWJyYXJ5IHNob3VsZCBiZSBidWlsdCwKK2RubCBhbmQgb3B0aW9uYWxseSB3aGF0IGl0cyBzb25hbWUgc2hvdWxkIGJlLgorQUNfREVGVU4oW0NGX1dJVEhfQURBX1NIQVJFRExJQl0sWworQUNfTVNHX0NIRUNLSU5HKGlmIGFuIEFkYTk1IHNoYXJlZC1saWJyYXJ5IHNob3VsZCBiZSBidWlsdCkKK0FDX0FSR19XSVRIKGFkYS1zaGFyZWRsaWIsCisJWyAgLS13aXRoLWFkYS1zaGFyZWRsaWI9c29uYW1lIGJ1aWxkIHNoYXJlZC1saWJyYXJ5IChyZXF1aXJlcyBHTkFUIHByb2plY3RzKV0sCisJW3dpdGhfYWRhX3NoYXJlZGxpYj0kd2l0aHZhbF0sCisJW3dpdGhfYWRhX3NoYXJlZGxpYj1ub10pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2FkYV9zaGFyZWRsaWIpCisKK0FEQV9TSEFSRURMSUI9J2xpYiQoTElCX05BTUUpLnNvLjEnCitNQUtFX0FEQV9TSEFSRURMSUI9IiMiCisKK2lmIHRlc3QgIngkd2l0aF9hZGFfc2hhcmVkbGliIiAhPSB4bm8KK3RoZW4KKwlNQUtFX0FEQV9TSEFSRURMSUI9CisJaWYgdGVzdCAieCR3aXRoX2FkYV9zaGFyZWRsaWIiICE9IHh5ZXMKKwl0aGVuCisJCUFEQV9TSEFSRURMSUI9IiR3aXRoX2FkYV9zaGFyZWRsaWIiCisJZmkKK2ZpCisKK0FDX1NVQlNUKEFEQV9TSEFSRURMSUIpCitBQ19TVUJTVChNQUtFX0FEQV9TSEFSRURMSUIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfREJNQUxMT0MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEwLzA2LzIxIDE3OjI2OjQ3CiBkbmwgLS0tLS0tLS0tLS0tLS0tLQogZG5sIENvbmZpZ3VyZS1vcHRpb24gZm9yIGRibWFsbG9jLiAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlciBpcyB1c2VkIHRvIG92ZXJyaWRlCiBkbmwgdGhlIHVwZGF0aW5nIG9mICRMSUJTLCBlLmcuLCB0byBhdm9pZCBjb25mbGljdCB3aXRoIHN1YnNlcXVlbnQgdGVzdHMuCkBAIC01MTg5LDExICs2OTQwLDExIEBACiAKIGlmIHRlc3QgIiR3aXRoX2RibWFsbG9jIiA9IHllcyA7IHRoZW4KIAlBQ19DSEVDS19IRUFERVIoZGJtYWxsb2MuaCwKLQkJW0FDX0NIRUNLX0xJQihkYm1hbGxvYyxbZGVidWdfbWFsbG9jXWlmZWxzZSgkMSwsW10sWywkMV0pKV0pCisJCVtBQ19DSEVDS19MSUIoZGJtYWxsb2MsW2RlYnVnX21hbGxvY11pZmVsc2UoWyQxXSwsW10sWywkMV0pKV0pCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9XSVRIX0RNQUxMT0MgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDA2LzEyLzE2IDE0OjI0OjA1CitkbmwgQ0ZfV0lUSF9ETUFMTE9DIHZlcnNpb246IDcgdXBkYXRlZDogMjAxMC8wNi8yMSAxNzoyNjo0NwogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIENvbmZpZ3VyZS1vcHRpb24gZm9yIGRtYWxsb2MuICBUaGUgb3B0aW9uYWwgcGFyYW1ldGVyIGlzIHVzZWQgdG8gb3ZlcnJpZGUKIGRubCB0aGUgdXBkYXRpbmcgb2YgJExJQlMsIGUuZy4sIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggc3Vic2VxdWVudCB0ZXN0cy4KQEAgLTUyMDQsMTEgKzY5NTUsMzcgQEAKIAogaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgOyB0aGVuCiAJQUNfQ0hFQ0tfSEVBREVSKGRtYWxsb2MuaCwKLQkJW0FDX0NIRUNLX0xJQihkbWFsbG9jLFtkbWFsbG9jX2RlYnVnXWlmZWxzZSgkMSwsW10sWywkMV0pKV0pCisJCVtBQ19DSEVDS19MSUIoZG1hbGxvYyxbZG1hbGxvY19kZWJ1Z11pZmVsc2UoWyQxXSwsW10sWywkMV0pKV0pCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9XSVRIX0dQTSB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMDgvMDMvMjMgMTQ6NDg6NTQKK2RubCBDRl9XSVRIX0VYUE9SVF9TWU1TIHZlcnNpb246IDMgdXBkYXRlZDogMjAxNC8xMi8yMCAxOToxNjowOAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBVc2UgdGhpcyB3aXRoIGxpYnRvb2wgdG8gc3BlY2lmeSB0aGUgbGlzdCBvZiBzeW1ib2xzIHRoYXQgbWF5IGJlIGV4cG9ydGVkLgorZG5sIFRoZSBpbnB1dCBmaWxlIGNvbnRhaW5zIG9uZSBzeW1ib2wgcGVyIGxpbmU7IGNvbW1lbnRzIHdvcmsgd2l0aCAiIyIuCitkbmwKK2RubCAkMSA9IGJhc2VuYW1lIG9mIHRoZSAiLnN5bSIgZmlsZSAoZGVmYXVsdCAkUEFDS0FHRSkKK0FDX0RFRlVOKFtDRl9XSVRIX0VYUE9SVF9TWU1TXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiBleHBvcnRlZC1zeW1ib2xzIGZpbGUgc2hvdWxkIGJlIHVzZWQpCitBQ19BUkdfV0lUSChleHBvcnQtc3ltcywKKwlbICAtLXdpdGgtZXhwb3J0LXN5bXM9WFhYICBsaW1pdCBleHBvcnRlZCBzeW1ib2xzIHVzaW5nIGxpYnRvb2xdLAorCVt3aXRoX2V4cG9ydF9zeW1zPSR3aXRodmFsXSwKKwlbd2l0aF9leHBvcnRfc3ltcz1ub10pCitpZiB0ZXN0ICJ4JHdpdGhfZXhwb3J0X3N5bXMiID0geHllcwordGhlbgorCXdpdGhfZXhwb3J0X3N5bXM9JyR7dG9wX3NyY2Rpcn0vcGFja2FnZS9pZmVsc2UoJDEsLCR7UEFDS0FHRX0sWyQxXSkuc3ltJworCUFDX1NVQlNUKFBBQ0tBR0UpCitmaQorQUNfTVNHX1JFU1VMVCgkd2l0aF9leHBvcnRfc3ltcykKK2lmIHRlc3QgIngkd2l0aF9leHBvcnRfc3ltcyIgIT0geG5vCit0aGVuCisJRVhQT1JUX1NZTVM9Ii1leHBvcnQtc3ltYm9scyAkd2l0aF9leHBvcnRfc3ltcyIKKwlBQ19TVUJTVChFWFBPUlRfU1lNUykKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfR1BNIHZlcnNpb246IDggdXBkYXRlZDogMjAxMi8xMC8wNiAxNzo1NjoxMwogZG5sIC0tLS0tLS0tLS0tCiBkbmwKIGRubCBUaGUgb3B0aW9uIHBhcmFtZXRlciAoaWYgbmVpdGhlciB5ZXMvbm8pIGlzIGFzc3VtZWQgdG8gYmUgdGhlIG5hbWUgb2YKQEAgLTUyMjQsMTAgKzcwMDEsMTAgQEAKIAogaWYgdGVzdCAiJHdpdGhfZ3BtIiAhPSBubyA7IHRoZW4KIAlBQ19DSEVDS19IRUFERVIoZ3BtLmgsWwotCQlBQ19ERUZJTkUoSEFWRV9HUE1fSCkKKwkJQUNfREVGSU5FKEhBVkVfR1BNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBncG0uaCBoZWFkZXJdKQogCQlpZiB0ZXN0ICIkd2l0aF9ncG0iICE9IHllcyAmJiB0ZXN0ICIkd2l0aF9ncG0iICE9IG1heWJlIDsgdGhlbgogCQkJQ0ZfVkVSQk9TRShhc3N1bWluZyB3ZSByZWFsbHkgaGF2ZSBHUE0gbGlicmFyeSkKLQkJCUFDX0RFRklORShIQVZFX0xJQkdQTSkKKwkJCUFDX0RFRklORShIQVZFX0xJQkdQTSwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHRoZSBncG0gbGlicmFyeV0pCiAJCWVsc2UKIAkJCUFDX0NIRUNLX0xJQihncG0sR3BtX09wZW4sWzpdLFsKIAkJCQlBQ19NU0dfRVJST1IoQ2Fubm90IGxpbmsgd2l0aCBHUE0gbGlicmFyeSkKQEAgLTUyNDEsNyArNzAxOCw3IEBACiBmaQogXSkKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9XSVRIX0xJQlRPT0wgdmVyc2lvbjogMTkgdXBkYXRlZDogMjAwOC8wMy8yOSAxNTo0Njo0MworZG5sIENGX1dJVEhfTElCVE9PTCB2ZXJzaW9uOiAzMiB1cGRhdGVkOiAyMDE1LzA0LzE3IDIxOjEzOjA0CiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgUHJvdmlkZSBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gaW5jb3Jwb3JhdGUgbGlidG9vbC4gIERlZmluZSBzZXZlcmFsIHVzZWZ1bAogZG5sIHN5bWJvbHMgZm9yIHRoZSBtYWtlZmlsZSBydWxlcy4KQEAgLTUyNjEsMjIgKzcwMzgsMjMgQEAKIGRubAkJZWNobyBjYW5ub3QgZmluZCBsaWJ0b29sLm00IGZpbGUKIGRubAkJZXhpdCAxCiBkbmwJZmkKLWRubAkKK2RubAogZG5sCUxPQ0FMPWFjbG9jYWwubTQKIGRubAlPUklHPWFjbG9jYWwubTQub3JpZwotZG5sCQorZG5sCiBkbmwJdHJhcCAibXYgJE9SSUcgJExPQ0FMIiAwIDEgMiA1IDE1CiBkbmwJcm0gLWYgJE9SSUcKIGRubAltdiAkTE9DQUwgJE9SSUcKLWRubAkKK2RubAogZG5sCSMgc2VkIHRoZSBMSUJUT09MPSBhc3NpZ25tZW50IHRvIG9taXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5PwotZG5sCXNlZCAtZSAncy9eTElCVE9PTD0uKi9MSUJUT09MPSR7TElCVE9PTC1saWJ0b29sfS8nICRBQ0xPQ0FML2xpYnRvb2wubTQgPj4kTE9DQUwKK2RubAlzZWQgLWUgJ3MvXkxJQlRPT0w9LiovTElCVE9PTD0ke0xJQlRPT0w6LWxpYnRvb2x9LycgJEFDTE9DQUwvbGlidG9vbC5tNCA+PiRMT0NBTAogZG5sCWNhdCAkT1JJRyA+PiRMT0NBTAotZG5sCQorZG5sCiBkbmwJYXV0b2NvbmYtMjU3ICQqCiBkbmwKIEFDX0RFRlVOKFtDRl9XSVRIX0xJQlRPT0xdLAogWworQUNfUkVRVUlSRShbQ0ZfRElTQUJMRV9MSUJUT09MX1ZFUlNJT05dKQogaWZkZWYoW0FDX1BST0dfTElCVE9PTF0sLFsKIExJQlRPT0w9CiBdKQpAQCAtNTMwNiwxNyArNzA4NCwyNCBAQAogCUFDX1BST0dfTElCVE9PTAogCSMgbWlzc2luZ19jb250ZW50X0FDX1BST0dfTElCVE9PTH19CiBdLFsKLSAJaWYgdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gInllcyIgOyB0aGVuCisJaWYgdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gInllcyIgOyB0aGVuCiAJCUNGX1BBVEhfU1lOVEFYKHdpdGhfbGlidG9vbCkKIAkJTElCVE9PTD0kd2l0aF9saWJ0b29sCiAJZWxzZQotIAkJQUNfUEFUSF9QUk9HKExJQlRPT0wsbGlidG9vbCkKLSAJZmkKLSAJaWYgdGVzdCAteiAiJExJQlRPT0wiIDsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKENhbm5vdCBmaW5kIGxpYnRvb2wpCi0gCWZpCisJCUFDX0NIRUNLX1RPT0xTKExJQlRPT0wsW2xpYnRvb2wgZ2xpYnRvb2xdLG5vbmUpCisJCUNGX0xJQlRPT0xfVkVSU0lPTgorCQlpZiB0ZXN0IC16ICIkY2ZfY3ZfbGlidG9vbF92ZXJzaW9uIiAmJiB0ZXN0ICIkTElCVE9PTCIgPSBsaWJ0b29sCisJCXRoZW4KKwkJCUNGX0ZPUkdFVF9UT09MKExJQlRPT0wpCisJCQlBQ19DSEVDS19UT09MUyhMSUJUT09MLFtnbGlidG9vbF0sbm9uZSkKKwkJCUNGX0xJQlRPT0xfVkVSU0lPTgorCQlmaQorCWZpCisJaWYgdGVzdCAteiAiJExJQlRPT0wiIDsgdGhlbgorCQlBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgbGlidG9vbCkKKwlmaQogXSlkbmwKLQlMSUJfQ1JFQVRFPScke0xJQlRPT0x9IC0tbW9kZT1saW5rICR7Q0N9IC1ycGF0aCAke0RFU1RESVJ9JHtsaWJkaXJ9IC12ZXJzaW9uLWluZm8gYGN1dCAtZjEgJHtzcmNkaXJ9L1ZFUlNJT05gICR7TElCVE9PTF9PUFRTfSAtbycKKwlMSUJfQ1JFQVRFPScke0xJQlRPT0x9IC0tbW9kZT1saW5rICR7Q0N9IC1ycGF0aCAke0RFU1RESVJ9JHtsaWJkaXJ9ICR7TElCVE9PTF9WRVJTSU9OfSBgY3V0IC1mMSAke3RvcF9zcmNkaXJ9L1ZFUlNJT05gICR7TElCVE9PTF9PUFRTfSAke0xUX1VOREVGfSAkKExJQlMpIC1vJwogCUxJQl9PQkpFQ1Q9JyR7T0JKRUNUUzoubz0ubG99JwogCUxJQl9TVUZGSVg9LmxhCiAJTElCX0NMRUFOPScke0xJQlRPT0x9IC0tbW9kZT1jbGVhbicKQEAgLTUzMjYsMjUgKzcxMTEsMjQgQEAKIAlMSUJfVU5JTlNUQUxMPScke0xJQlRPT0x9IC0tbW9kZT11bmluc3RhbGwnCiAJTElCX1BSRVA9OgogCi0JIyBTaG93IHRoZSB2ZXJzaW9uIG9mIGxpYnRvb2wKLQlBQ19NU0dfQ0hFQ0tJTkcodmVyc2lvbiBvZiBsaWJ0b29sKQorCUNGX0NIRUNLX0xJQlRPT0xfVkVSU0lPTgogCi0JIyBTYXZlIHRoZSB2ZXJzaW9uIGluIGEgY2FjaGUgdmFyaWFibGUgLSB0aGlzIGlzIG5vdCBlbnRpcmVseSBhIGdvb2QKLQkjIHRoaW5nLCBidXQgdGhlIHZlcnNpb24gc3RyaW5nIGZyb20gbGlidG9vbCBpcyB2ZXJ5IHVnbHksIGFuZCBmb3IKLQkjIGJ1ZyByZXBvcnRzIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBoYXZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCi0JY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPWAkTElCVE9PTCAtLXZlcnNpb24gMj4mMSB8IHNlZCAtZSAnL14kL2QnIHxzZWQgLWUgJzIsJGQnIC1lICdzLyhbW14pXV0qKS8vZycgLWUgJ3MvXltbXjEtOV1dKi8vJyAtZSAncy9bW14wLTkuXV0uKi8vJ2AKLQlBQ19NU0dfUkVTVUxUKCRjZl9jdl9saWJ0b29sX3ZlcnNpb24pCi0JaWYgdGVzdCAteiAiJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiIgOyB0aGVuCi0JCUFDX01TR19FUlJPUihUaGlzIGlzIG5vdCBHTlUgbGlidG9vbCkKLQlmaQorCSMgc3BlY2lhbCBoYWNrIHRvIGFkZCAtbm8tdW5kZWZpbmVkICh3aGljaCBsaWJ0b29sIHNob3VsZCBkbyBmb3IgaXRzZWxmKQorCUxUX1VOREVGPQorCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4KKwkoY3lnd2luKnxtc3lzKnxtaW5ndzMyKnx1d2luKnxhaXhbWzQtN11dKQorCQlMVF9VTkRFRj0tbm8tdW5kZWZpbmVkCisJCTs7CisJZXNhYworCUFDX1NVQlNUKFtMVF9VTkRFRl0pCiAKIAkjIHNwZWNpYWwgaGFjayB0byBhZGQgLS10YWcgb3B0aW9uIGZvciBDKysgY29tcGlsZXIKIAljYXNlICRjZl9jdl9saWJ0b29sX3ZlcnNpb24gaW4KLQkxLltbNS05XV0qfFtbMi05XV0qKQorCSgxLltbNS05XV0qfFtbMi05XV0uW1swLTkuYS16XV0qKQogCQlMSUJUT09MX0NYWD0iJExJQlRPT0wgLS10YWc9Q1hYIgogCQlMSUJUT09MPSIkTElCVE9PTCAtLXRhZz1DQyIKIAkJOzsKLQkqKQorCSgqKQogCQlMSUJUT09MX0NYWD0iJExJQlRPT0wiCiAJCTs7CiAJZXNhYwpAQCAtNTM3Miw3ICs3MTU2LDU5IEBACiAKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfV0lUSF9QQVRIIHZlcnNpb246IDggdXBkYXRlZDogMjAwNy8wNS8xMyAxMzoxNjozNQorZG5sIENGX1dJVEhfTElCVE9PTF9PUFRTIHZlcnNpb246IDQgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToxMzowNAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQWxsb3cgdXNlciB0byBwYXNzIGFkZGl0aW9uYWwgbGlidG9vbCBvcHRpb25zIGludG8gdGhlIGxpYnJhcnkgY3JlYXRpb24KK2RubCBhbmQgbGluayBzdGVwcy4gIFRoZSBtYWluIHVzZSBmb3IgdGhpcyBpcyB0byBkbyBzb21ldGhpbmcgbGlrZQorZG5sCS4vY29uZmlndXJlIC0td2l0aC1saWJ0b29sLW9wdHM9LXN0YXRpYworZG5sIHRvIGdldCB0aGUgc2FtZSBiZWhhdmlvciBhcyBhdXRvbWFrZS1mbGF2b3JlZAorZG5sCS4vY29uZmlndXJlIC0tZW5hYmxlLXN0YXRpYworQUNfREVGVU4oW0NGX1dJVEhfTElCVE9PTF9PUFRTXSxbCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGFkZGl0aW9uYWwgbGlidG9vbCBvcHRpb25zKQorQUNfQVJHX1dJVEgobGlidG9vbC1vcHRzLAorCVsgIC0td2l0aC1saWJ0b29sLW9wdHM9WFhYIHNwZWNpZnkgYWRkaXRpb25hbCBsaWJ0b29sIG9wdGlvbnNdLAorCVt3aXRoX2xpYnRvb2xfb3B0cz0kd2l0aHZhbF0sCisJW3dpdGhfbGlidG9vbF9vcHRzPW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfbGlidG9vbF9vcHRzKQorCitjYXNlIC4kd2l0aF9saWJ0b29sX29wdHMgaW4KKygueWVzfC5ub3wuKQorCTs7CisoKikKKwlMSUJUT09MX09QVFM9IiRMSUJUT09MX09QVFMgJHdpdGhfbGlidG9vbF9vcHRzIgorCTs7Citlc2FjCisKK0FDX1NVQlNUKExJQlRPT0xfT1BUUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfV0lUSF9MSUJfUFJFRklYIHZlcnNpb246IDEgdXBkYXRlZDogMjAxMi8wMS8yMSAxOToyODoxMAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIEFsbG93IHRoZSBsaWJyYXJ5LXByZWZpeCB0byBiZSBvdmVycmlkZGVuLiAgT1MvMiBFTVggb3JpZ2luYWxseSBoYWQgbm8KK2RubCAibGliIiBwcmVmaXgsIGUuZy4sIGJlY2F1c2UgaXQgdXNlZCB0aGUgZGxsIG5hbWluZyBjb252ZW50aW9uLgorZG5sCitkbmwgJDEgPSB2YXJpYWJsZSB0byBzZXQKK0FDX0RFRlVOKFtDRl9XSVRIX0xJQl9QUkVGSVhdLAorWworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGhhdmUgYSBsaWJyYXJ5LXByZWZpeCkKK0FDX0FSR19XSVRIKGxpYi1wcmVmaXgsCisJWyAgLS13aXRoLWxpYi1wcmVmaXggICAgICAgb3ZlcnJpZGUgbGlicmFyeS1wcmVmaXhdLAorCVt3aXRoX2xpYl9wcmVmaXg9JHdpdGh2YWxdLAorCVt3aXRoX2xpYl9wcmVmaXg9YXV0b10pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2xpYl9wcmVmaXgpCisKK2lmIHRlc3QgJHdpdGhfbGliX3ByZWZpeCA9IGF1dG8KK3RoZW4KKwlDRl9MSUJfUFJFRklYKCQxKQorZWxpZiB0ZXN0ICR3aXRoX2xpYl9wcmVmaXggPSBubwordGhlbgorCUxJQl9QUkVGSVg9CitlbHNlCisJTElCX1BSRUZJWD0kd2l0aF9saWJfcHJlZml4CitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX1BBVEggdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxMi8wOS8yOSAxNTowNDoxOQogZG5sIC0tLS0tLS0tLS0tLQogZG5sIFdyYXBwZXIgZm9yIEFDX0FSR19XSVRIIHRvIGVuc3VyZSB0aGF0IHVzZXIgc3VwcGxpZXMgYSBwYXRobmFtZSwgbm90IGp1c3QKIGRubCBkZWZhdWx0aW5nIHRvIHllcy9uby4KQEAgLTUzODQsMTYgKzcyMjAsMTYgQEAKIGRubCAkNSA9IGRlZmF1bHQgdmFsdWUsIGlmIGl0J3MgYW4gZXhwcmVzc2lvbiAmIGNhbm5vdCBiZSBpbiB0aGUgaGVscC1tZXNzYWdlCiBkbmwKIEFDX0RFRlVOKFtDRl9XSVRIX1BBVEhdLAotW0FDX0FSR19XSVRIKCQxLFskMiBdKGRlZmF1bHQ6IGlmZWxzZSgkNCwsZW1wdHksJDQpKSwsCi1pZmVsc2UoJDQsLFt3aXRodmFsPSIkeyQzfSJdLFt3aXRodmFsPSIkeyQzLWlmZWxzZSgkNSwsJDQsJDUpfSJdKSlkbmwKLWlmIGlmZWxzZSgkNSwsdHJ1ZSxbdGVzdCAtbiAiJDUiXSkgOyB0aGVuCitbQUNfQVJHX1dJVEgoJDEsWyQyIF0oZGVmYXVsdDogaWZlbHNlKFskNF0sLGVtcHR5LFskNF0pKSwsCitpZmVsc2UoWyQ0XSwsW3dpdGh2YWw9IiR7JDN9Il0sW3dpdGh2YWw9IiR7JDM6LWlmZWxzZShbJDVdLCxbJDRdLFskNV0pfSJdKSlkbmwKK2lmIGlmZWxzZShbJDVdLCx0cnVlLFt0ZXN0IC1uICIkNSJdKSA7IHRoZW4KIENGX1BBVEhfU1lOVEFYKHdpdGh2YWwpCiBmaQotJDM9IiR3aXRodmFsIgorZXZhbCAkMz0iJHdpdGh2YWwiCiBBQ19TVUJTVCgkMylkbmwKIF0pZG5sCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kbmwgQ0ZfV0lUSF9QQVRITElTVCB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMDEvMTIvMTAgMDE6Mjg6MzAKK2RubCBDRl9XSVRIX1BBVEhMSVNUIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKIGRubCAtLS0tLS0tLS0tLS0tLS0tCiBkbmwgUHJvY2VzcyBhbiBvcHRpb24gc3BlY2lmeWluZyBhIGxpc3Qgb2YgY29sb24tc2VwYXJhdGVkIHBhdGhzLgogZG5sCkBAIC01NDA3LDE0ICs3MjQzLDE0IEBACiBBQ19ERUZVTihbQ0ZfV0lUSF9QQVRITElTVF0sWwogQUNfUkVRVUlSRShbQ0ZfUEFUSFNFUF0pCiBBQ19BUkdfV0lUSCgkMSxbJDIgXShkZWZhdWx0OiBpZmVsc2UoJDQsLGVtcHR5LCQ0KSksLAotaWZlbHNlKCQ0LCxbd2l0aHZhbD0keyQzfV0sW3dpdGh2YWw9JHskMy1pZmVsc2UoJDUsLCQ0LCQ1KX1dKSlkbmwKK2lmZWxzZSgkNCwsW3dpdGh2YWw9JHskM31dLFt3aXRodmFsPSR7JDM6LWlmZWxzZSgkNSwsJDQsJDUpfV0pKWRubAogCi1JRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke1BBVEhTRVB9IgorSUZTPSIke0lGUzotIAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7UEFUSF9TRVBBUkFUT1J9IgogY2ZfZHN0X3BhdGg9CiBmb3IgY2Zfc3JjX3BhdGggaW4gJHdpdGh2YWwKIGRvCiAgIENGX1BBVEhfU1lOVEFYKGNmX3NyY19wYXRoKQotICB0ZXN0IC1uICIkY2ZfZHN0X3BhdGgiICYmIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofToiCisgIHRlc3QgLW4gIiRjZl9kc3RfcGF0aCIgJiYgY2ZfZHN0X3BhdGg9IiR7Y2ZfZHN0X3BhdGh9JFBBVEhfU0VQQVJBVE9SIgogICBjZl9kc3RfcGF0aD0iJHtjZl9kc3RfcGF0aH0ke2NmX3NyY19wYXRofSIKIGRvbmUKIElGUz0iJGFjX3NhdmVfaWZzIgpAQCAtNTQyMiw1MyArNzI1OCwxNDMgQEAKIGlmZWxzZSgkNixkZWZpbmUsWwogIyBTdHJpcCBzaW5nbGUgcXVvdGVzIGZyb20gdGhlIHZhbHVlLCBlLmcuLCB3aGVuIGl0IHdhcyBzdXBwbGllZCBhcyBhIGxpdGVyYWwKICMgZm9yICQ0IG9yICQ1LgotY2FzZSAkY2ZfZHN0X3BhdGggaW4gIyh2aQotXCcqKQorY2FzZSAkY2ZfZHN0X3BhdGggaW4KKyhcJyopCiAgIGNmX2RzdF9wYXRoPWBlY2hvICRjZl9kc3RfcGF0aCB8c2VkIC1lIHMvXCcvLyAtZSBzL1wnXCQvL2AKICAgOzsKIGVzYWMKIGNmX2RzdF9wYXRoPWBlY2hvICIkY2ZfZHN0X3BhdGgiIHwgc2VkIC1lICdzL1xcXFwvXFxcXFxcXFwvZydgCiBdKQogCi1ldmFsICckMz0iJGNmX2RzdF9wYXRoIicKKyMgVGhpcyBtYXkgdXNlIHRoZSBwcmVmaXgvZXhlY19wcmVmaXggc3ltYm9scyB3aGljaCB3aWxsIG9ubHkgeWllbGQgIk5PTkUiCisjIHNvIHdlIGhhdmUgdG8gY2hlY2svd29yayBhcm91bmQuICBXZSBkbyBwcmVmZXIgdGhlIHJlc3VsdCBvZiAiZXZhbCIuLi4KK2V2YWwgY2ZfZHN0X2V2YWw9IiRjZl9kc3RfcGF0aCIKK2Nhc2UgIngkY2ZfZHN0X2V2YWwiIGluCisoeE5PTkUqKQorCSQzPSRjZl9kc3RfcGF0aAorCTs7CisoKikKKwkkMz0iJGNmX2RzdF9ldmFsIgorCTs7Citlc2FjCiBBQ19TVUJTVCgkMylkbmwKIAogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRubCBDRl9XSVRIX1BUSFJFQUQgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDA4LzA4LzIzIDE4OjI2OjA1CitkbmwgQ0ZfV0lUSF9QS0dfQ09ORklHX0xJQkRJUiB2ZXJzaW9uOiA5IHVwZGF0ZWQ6IDIwMTUvMDYvMDYgMTk6MjY6NDQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQWxsb3cgdGhlIGNob2ljZSBvZiB0aGUgcGtnLWNvbmZpZyBsaWJyYXJ5IGRpcmVjdG9yeSB0byBiZSBvdmVycmlkZGVuLgorQUNfREVGVU4oW0NGX1dJVEhfUEtHX0NPTkZJR19MSUJESVJdLFsKK2lmIHRlc3QgIngkUEtHX0NPTkZJRyIgPSB4bm9uZSA7IHRoZW4KKwlQS0dfQ09ORklHX0xJQkRJUj1ubworZWxzZQorCUFDX01TR19DSEVDS0lORyhmb3IgJFBLR19DT05GSUcgbGlicmFyeSBkaXJlY3RvcnkpCisJQUNfQVJHX1dJVEgocGtnLWNvbmZpZy1saWJkaXIsCisJCVsgIC0td2l0aC1wa2ctY29uZmlnLWxpYmRpcj1YWFggdXNlIGdpdmVuIGRpcmVjdG9yeSBmb3IgaW5zdGFsbGluZyBwYy1maWxlc10sCisJCVtQS0dfQ09ORklHX0xJQkRJUj0kd2l0aHZhbF0sCisJCVtQS0dfQ09ORklHX0xJQkRJUj15ZXNdKQorZmkKKworY2FzZSB4JFBLR19DT05GSUdfTElCRElSIGluCisoeC8qKQorCTs7CisoeHllcykKKwkjIExvb2sgZm9yIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSB1c2luZyB0aGUgc2FtZSBwcmVmaXggYXMgdGhlIGV4ZWN1dGFibGUKKwlpZiB0ZXN0ICJ4JFBLR19DT05GSUciID0geG5vbmUKKwl0aGVuCisJCWNmX3BhdGg9JHByZWZpeAorCWVsc2UKKwkJY2ZfcGF0aD1gZWNobyAiJFBLR19DT05GSUciIHwgc2VkIC1lICdzLC9bW14vXV0qL1tbXi9dXSokLCwnYAorCWZpCisKKwkjIElmIHlvdSBkb24ndCBsaWtlIHVzaW5nIHRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSwgeW91IGhhdmUgdG8gc3BlY2lmeSB0aGUKKwkjIGludGVuZGVkIGxpYnJhcnkgZGlyZWN0b3J5IGFuZCBjb3JyZXNwb25kaW5nIGNvbXBpbGVyL2xpbmtlciBvcHRpb25zLgorCSMKKwkjIFRoaXMgY2FzZSBhbGxvd3MgZm9yIERlYmlhbidzIDIwMTQtZmxhdm9yIG9mIG11bHRpYXJjaCwgYWxvbmcgd2l0aCB0aGUKKwkjIG1vc3QgY29tbW9uIHZhcmlhdGlvbnMgYmVmb3JlIHRoYXQgcG9pbnQuICBTb21lIG90aGVyIHZhcmlhbnRzIHNwZWxsIHRoZQorCSMgZGlyZWN0b3J5IGRpZmZlcmVudGx5LCBlLmcuLCAicGtnLWNvbmZpZyIsIGFuZCBwdXQgaXQgaW4gdW51c3VhbCBwbGFjZXMuCisJIyBwa2ctY29uZmlnIGhhcyBhbHdheXMgYmVlbiBwb29ybHkgc3RhbmRhcmRpemVkLCB3aGljaCBpcyBpcm9uaWMuLi4KKwljYXNlIHhgKGFyY2gpIDI+L2Rldi9udWxsYCBpbgorCSgqNjQpCisJCWNmX3NlYXJjaF9wYXRoPSJcCisJCQkkY2ZfcGF0aC9saWIvKjY0LWxpbnV4LWdudSBcCisJCQkkY2ZfcGF0aC9zaGFyZSBcCisJCQkkY2ZfcGF0aC9saWI2NCBcCisJCQkkY2ZfcGF0aC9saWIzMiBcCisJCQkkY2ZfcGF0aC9saWIiCisJCTs7CisJKCopCisJCWNmX3NlYXJjaF9wYXRoPSJcCisJCQkkY2ZfcGF0aC9saWIvKi1saW51eC1nbnUgXAorCQkJJGNmX3BhdGgvc2hhcmUgXAorCQkJJGNmX3BhdGgvbGliMzIgXAorCQkJJGNmX3BhdGgvbGliIFwKKwkJCSRjZl9wYXRoL2xpYmRhdGEiCisJCTs7CisJZXNhYworCisJQ0ZfVkVSQk9TRShsaXN0Li4uKQorCWZvciBjZl9jb25maWcgaW4gJGNmX3NlYXJjaF9wYXRoCisJZG8KKwkJQ0ZfVkVSQk9TRShjaGVja2luZyAkY2ZfY29uZmlnL3BrZ2NvbmZpZykKKwkJaWYgdGVzdCAtZCAkY2ZfY29uZmlnL3BrZ2NvbmZpZworCQl0aGVuCisJCQlQS0dfQ09ORklHX0xJQkRJUj0kY2ZfY29uZmlnL3BrZ2NvbmZpZworCQkJQUNfTVNHX0NIRUNLSU5HKGRvbmUpCisJCQlicmVhaworCQlmaQorCWRvbmUKKwk7OworKCopCisJOzsKK2VzYWMKKworaWYgdGVzdCAieCRQS0dfQ09ORklHIiAhPSB4bm9uZSA7IHRoZW4KKwlBQ19NU0dfUkVTVUxUKCRQS0dfQ09ORklHX0xJQkRJUikKK2ZpCisKK0FDX1NVQlNUKFBLR19DT05GSUdfTElCRElSKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX1BUSFJFQUQgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDE1LzA0LzE4IDA4OjU2OjU3CiBkbmwgLS0tLS0tLS0tLS0tLS0tCiBkbmwgQ2hlY2sgZm9yIFBPU0lYIHRocmVhZCBsaWJyYXJ5LgogQUNfREVGVU4oW0NGX1dJVEhfUFRIUkVBRF0sCiBbCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHRoZSBwdGhyZWFkIGxpYnJhcnkpCiBBQ19BUkdfV0lUSChwdGhyZWFkLAotICAgIFsgIC0td2l0aC1wdGhyZWFkICAgICAgICAgIHVzZSBQT1NJWCB0aHJlYWQgbGlicmFyeV0sCi0gICAgW3dpdGhfcHRocmVhZD0kd2l0aHZhbF0sCi0gICAgW3dpdGhfcHRocmVhZD1ub10pCisJWyAgLS13aXRoLXB0aHJlYWQgICAgICAgICAgdXNlIFBPU0lYIHRocmVhZCBsaWJyYXJ5XSwKKwlbd2l0aF9wdGhyZWFkPSR3aXRodmFsXSwKKwlbd2l0aF9wdGhyZWFkPW5vXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfcHRocmVhZCkKIAogaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgIT0gbm8gOyB0aGVuCi0gICAgQUNfQ0hFQ0tfSEVBREVSKHB0aHJlYWQuaCxbCi0gICAgICAgIEFDX0RFRklORShIQVZFX1BUSFJFQURTX0gpCisJQUNfQ0hFQ0tfSEVBREVSKHB0aHJlYWQuaCxbCisJQUNfREVGSU5FKEhBVkVfUFRIUkVBRFNfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHB0aHJlYWRzLmggaGVhZGVyXSkKIAotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIGxpbmsgd2l0aCB0aGUgcHRocmVhZCBsaWJyYXJ5KQotICAgICAgICBjZl9zYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBMSUJTPSItbHB0aHJlYWQgJExJQlMiCi0gICAgICAgIEFDX1RSWV9MSU5LKFsKKwlmb3IgY2ZfbGliX3B0aHJlYWQgaW4gcHRocmVhZCBjX3IKKwlkbworCSAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIGxpbmsgd2l0aCB0aGUgJGNmX2xpYl9wdGhyZWFkIGxpYnJhcnkpCisJICAgIGNmX3NhdmVfTElCUz0iJExJQlMiCisJICAgIENGX0FERF9MSUIoJGNmX2xpYl9wdGhyZWFkKQorCSAgICBBQ19UUllfTElOSyhbCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogXSxbCi0gICAgICAgIGludCByYyA9IHB0aHJlYWRfY3JlYXRlKDAsMCwwLDApOworCQlpbnQgcmMgPSBwdGhyZWFkX2NyZWF0ZSgwLDAsMCwwKTsKKwkJaW50IHIyID0gcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgwLCAwKTsKIF0sW3dpdGhfcHRocmVhZD15ZXNdLFt3aXRoX3B0aHJlYWQ9bm9dKQotICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICBBQ19NU0dfUkVTVUxUKCR3aXRoX3B0aHJlYWQpCisJICAgIExJQlM9IiRjZl9zYXZlX0xJQlMiCisJICAgIEFDX01TR19SRVNVTFQoJHdpdGhfcHRocmVhZCkKKwkgICAgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSB5ZXMgJiYgYnJlYWsKKwlkb25lCiAKLSAgICAgICAgaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSB5ZXMgOyB0aGVuCi0gICAgICAgICAgICBMSUJTPSItbHB0aHJlYWQgJExJQlMiCi0gICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJQVEhSRUFEUykKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQUNfTVNHX0VSUk9SKENhbm5vdCBsaW5rIHdpdGggcHRocmVhZCBsaWJyYXJ5KQotICAgICAgICBmaQotICAgIF0pCisJaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSB5ZXMgOyB0aGVuCisJICAgIENGX0FERF9MSUIoJGNmX2xpYl9wdGhyZWFkKQorCSAgICBBQ19ERUZJTkUoSEFWRV9MSUJQVEhSRUFEUywxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIHB0aHJlYWRzIGxpYnJhcnldKQorCWVsc2UKKwkgICAgQUNfTVNHX0VSUk9SKENhbm5vdCBsaW5rIHdpdGggcHRocmVhZCBsaWJyYXJ5KQorCWZpCisJXSkKIGZpCiBdKQogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQ5Nyw3ICs3NDIzLDcgQEAKIF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1dJVEhfU1lTTU9VU0UgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDAzLzAzLzIyIDE5OjEzOjQzCitkbmwgQ0ZfV0lUSF9TWVNNT1VTRSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTc6NTY6MTMKIGRubCAtLS0tLS0tLS0tLS0tLS0tCiBkbmwgSWYgd2UgY2FuIGNvbXBpbGUgd2l0aCBzeXNtb3VzZSwgbWFrZSBpdCBhdmFpbGFibGUgdW5sZXNzIGl0IGlzIG5vdCB3YW50ZWQuCiBBQ19ERUZVTihbQ0ZfV0lUSF9TWVNNT1VTRV0sWwpAQCAtNTUyMywxMCArNzQ0OSwzMCBAQAogXSxbY2Zfd2l0aF9zeXNtb3VzZT15ZXNdLFtjZl93aXRoX3N5c21vdXNlPW5vXSkKIAlmaQogQUNfTVNHX1JFU1VMVCgkY2Zfd2l0aF9zeXNtb3VzZSkKLXRlc3QgIiRjZl93aXRoX3N5c21vdXNlIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX1NZU01PVVNFKQordGVzdCAiJGNmX3dpdGhfc3lzbW91c2UiID0geWVzICYmIEFDX0RFRklORShVU0VfU1lTTU9VU0UsMSxbRGVmaW5lIHRvIDEgaWYgd2UgY2FuL3Nob3VsZCB1c2UgdGhlIHN5c21vdXNlIGludGVyZmFjZV0pCiBmaQogXSlkbmwKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9XSVRIX1NZU1RZUEUgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDEzLzAxLzI2IDE2OjI2OjEyCitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRm9yIHRlc3RpbmcsIG92ZXJyaWRlIHRoZSBkZXJpdmVkIGhvc3Qgc3lzdGVtLXR5cGUgd2hpY2ggaXMgdXNlZCB0byBkZWNpZGUKK2RubCB0aGluZ3Mgc3VjaCBhcyB0aGUgbGlua2VyIGNvbW1hbmRzIHVzZWQgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcy4gIFRoaXMgaXMKK2RubCBub3JtYWxseSBjaG9zZW4gYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBzeXN0ZW0gd2hpY2ggeW91IGFyZQorZG5sIGJ1aWxkaW5nIG9uLiAgV2UgdXNlIGl0IGZvciB0ZXN0aW5nIHRoZSBjb25maWd1cmUgc2NyaXB0LgorZG5sCitkbmwgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgLS1ob3N0IG9wdGlvbjogaXQgaXMgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHBhcnRzCitkbmwgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd291bGQgbm90IGJlIHJlYWNoYWJsZSB3aXRoIC0taG9zdCBzaW5jZSB0aGF0CitkbmwgcmVsaWVzIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudCBiZWluZyByZWFsLCByYXRoZXIgdGhhbiBtb2NrZWQgdXAuCitBQ19ERUZVTihbQ0ZfV0lUSF9TWVNUWVBFXSxbCitDRl9DSEVDS19DQUNIRShbQUNfQ0FOT05JQ0FMX1NZU1RFTV0pCitBQ19BUkdfV0lUSChzeXN0ZW0tdHlwZSwKKwlbICAtLXdpdGgtc3lzdGVtLXR5cGU9WFhYICB0ZXN0OiBvdmVycmlkZSBkZXJpdmVkIGhvc3Qgc3lzdGVtLXR5cGVdLAorW0FDX01TR19XQVJOKG92ZXJyaWRpbmcgc3lzdGVtIHR5cGUgdG8gJHdpdGh2YWwpCisJY2ZfY3Zfc3lzdGVtX25hbWU9JHdpdGh2YWwKKwlob3N0X29zPSR3aXRodmFsCitdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRubCBDRl9XSVRIX1ZBTEdSSU5EIHZlcnNpb246IDEgdXBkYXRlZDogMjAwNi8xMi8xNCAxODowMDoyMQogZG5sIC0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtDRl9XSVRIX1ZBTEdSSU5EXSxbCkBAIC01NTM1LDcgKzc0ODEsMTM0IEBACiAJW1VTRV9WQUxHUklORF0pCiBdKWRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZG5sIENGX1hPUEVOX1NPVVJDRSB2ZXJzaW9uOiAyNiB1cGRhdGVkOiAyMDA4LzA3LzI3IDExOjI2OjU3CitkbmwgQ0ZfV0lUSF9WRVJTSU9ORURfU1lNUyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTUvMDQvMTcgMjE6MTM6MDQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVXNlIHRoaXMgd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyeSB3aXRoIEVMRiwgdG8gbWFya3VwIHN5bWJvbHMgd2l0aCB0aGUKK2RubCB2ZXJzaW9uIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2l2ZW4gaW5wdXQgZmlsZS4gIEdlbmVyYWxseSB0aGF0IGlkZW50aWZpZXIgaXMKK2RubCB0aGUgc2FtZSBhcyB0aGUgU09OQU1FIGF0IHdoaWNoIHRoZSBzeW1ib2wgd2FzIGZpcnN0IGludHJvZHVjZWQuCitkbmwKK2RubCAkMSA9IGJhc2VuYW1lIG9mIHRoZSAiLm1hcCIgZmlsZSAoZGVmYXVsdCAkUEFDS0FHRSkKK0FDX0RFRlVOKFtDRl9XSVRIX1ZFUlNJT05FRF9TWU1TXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiB2ZXJzaW9uZWQtc3ltYm9scyBmaWxlIHNob3VsZCBiZSB1c2VkKQorQUNfQVJHX1dJVEgodmVyc2lvbmVkLXN5bXMsCisJWyAgLS13aXRoLXZlcnNpb25lZC1zeW1zPVggbWFya3VwIHZlcnNpb25lZCBzeW1ib2xzIHVzaW5nIGxkXSwKKwlbd2l0aF92ZXJzaW9uZWRfc3ltcz0kd2l0aHZhbF0sCisJW3dpdGhfdmVyc2lvbmVkX3N5bXM9bm9dKQoraWYgdGVzdCAieCR3aXRoX3ZlcnNpb25lZF9zeW1zIiA9IHh5ZXMKK3RoZW4KKwl3aXRoX3ZlcnNpb25lZF9zeW1zPScke3RvcF9zcmNkaXJ9L3BhY2thZ2UvaWZlbHNlKCQxLCwke1BBQ0tBR0V9LFskMV0pLm1hcCcKKwlBQ19TVUJTVChQQUNLQUdFKQorZmkKK0FDX01TR19SRVNVTFQoJHdpdGhfdmVyc2lvbmVkX3N5bXMpCisKK1JFU1VMVElOR19TWU1TPQorVkVSU0lPTkVEX1NZTVM9CitXSUxEQ0FSRF9TWU1TPQorCitpZiB0ZXN0ICJ4JHdpdGhfdmVyc2lvbmVkX3N5bXMiICE9IHhubwordGhlbgorCVJFU1VMVElOR19TWU1TPSR3aXRoX3ZlcnNpb25lZF9zeW1zCisJY2FzZSAieCRNS19TSEFSRURfTElCIiBpbgorCSgqLVdsLCopCisJCVZFUlNJT05FRF9TWU1TPSItV2wsLS12ZXJzaW9uLXNjcmlwdCxcJHtSRVNVTFRJTkdfU1lNU30iCisJCU1LX1NIQVJFRF9MSUI9YGVjaG8gIiRNS19TSEFSRURfTElCIiB8IHNlZCAtZSAicyUtV2wsJVxcWyRde1ZFUlNJT05FRF9TWU1TfSAtV2wsJSJgCisJCUNGX1ZFUkJPU0UoTUtfU0hBUkVEX0xJQjogICRNS19TSEFSRURfTElCKQorCQk7OworCSgqLWR5XCAqKQorCQlWRVJTSU9ORURfU1lNUz0iLVdsLC1NLFwke1JFU1VMVElOR19TWU1TfSIKKwkJTUtfU0hBUkVEX0xJQj1gZWNobyAiJE1LX1NIQVJFRF9MSUIiIHwgc2VkIC1lICJzJS1keSVcXFskXXtWRVJTSU9ORURfU1lNU30gLWR5JSJgCisJCUNGX1ZFUkJPU0UoTUtfU0hBUkVEX0xJQjogICRNS19TSEFSRURfTElCKQorCQk7OworCSgqKQorCQlBQ19NU0dfV0FSTih0aGlzIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHZlcnNpb25lZC1zeW1ib2xzKQorCQk7OworCWVzYWMKKworCSMgTGludXggbGQgY2FuIHNlbGVjdGl2ZWx5IG92ZXJyaWRlIHNjb3BlLCBlLmcuLCBvZiBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCisJIyAiXyIgYnkgZmlyc3QgZGVjbGFyaW5nIHNvbWUgYXMgZ2xvYmFsLCBhbmQgdGhlbiB1c2luZyBhIHdpbGRjYXJkIHRvCisJIyBkZWNsYXJlIHRoZSBvdGhlcnMgYXMgbG9jYWwuICBTb21lIG90aGVyIGxvYWRlcnMgY2Fubm90IGRvIHRoaXMuICBDaGVjaworCSMgYnkgY29uc3RydWN0aW5nIGEgKHZlcnkpIHNpbXBsZSBzaGFyZWQgbGlicmFyeSBhbmQgaW5zcGVjdGluZyBpdHMKKwkjIHN5bWJvbHMuCisJaWYgdGVzdCAieCRWRVJTSU9ORURfU1lNUyIgIT0gIngiCisJdGhlbgorCQlBQ19NU0dfQ0hFQ0tJTkcoaWYgd2lsZGNhcmRzIGNhbiBiZSB1c2VkIHRvIHNlbGVjdGl2ZWx5IG9taXQgc3ltYm9scykKKwkJV0lMRENBUkRfU1lNUz1ubworCisJCSMgbWFrZSBzb3VyY2VzCisJCXJtIC1mIGNvbmZ0ZXN0LioKKworCQljYXQgPmNvbmZ0ZXN0LnZlciA8PEVPRgorbW9kdWxlXzEuMCB7CitnbG9iYWw6CisJZ2xvYmFsZjE7Citsb2NhbDoKKwlsb2NhbGYxOworfTsKK21vZHVsZV8yLjAgeworZ2xvYmFsOgorCWdsb2JhbGYyOworbG9jYWw6CisJbG9jYWxmMjsKKwlfKjsKK30gbW9kdWxlXzEuMDsKK3N1Ym1vZHVsZV8xLjAgeworZ2xvYmFsOgorCXN1Ymdsb2JhbGYxOworCV9pc21pc3Npbmc7Citsb2NhbDoKKwlzdWJsb2NhbGYxOworfTsKK3N1Ym1vZHVsZV8yLjAgeworZ2xvYmFsOgorCXN1Ymdsb2JhbGYyOworbG9jYWw6CisJc3VibG9jYWxmMjsKKwlfKjsKK30gc3VibW9kdWxlXzEuMDsKK0VPRgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgoraW50CV9pc21pc3Npbmcodm9pZCkgeyByZXR1cm4gMTsgfQoraW50CV9sb2NhbGYxKHZvaWQpIHsgcmV0dXJuIDE7IH0KK2ludAlfbG9jYWxmMih2b2lkKSB7IHJldHVybiAyOyB9CitpbnQJZ2xvYmFsZjEodm9pZCkgeyByZXR1cm4gMTsgfQoraW50CWdsb2JhbGYyKHZvaWQpIHsgcmV0dXJuIDI7IH0KK2ludAlfc3VibG9jYWxmMSh2b2lkKSB7IHJldHVybiAxOyB9CitpbnQJX3N1YmxvY2FsZjIodm9pZCkgeyByZXR1cm4gMjsgfQoraW50CXN1Ymdsb2JhbGYxKHZvaWQpIHsgcmV0dXJuIDE7IH0KK2ludAlzdWJnbG9iYWxmMih2b2lkKSB7IHJldHVybiAyOyB9CitFT0YKKwkJY2F0ID5jb25mdGVzdC5tayA8PEVPRgorQ0M9JHtDQ30KK0NGTEFHUz0ke0NGTEFHU30KK0NQUEZMQUdTPSR7Q1BQRkxBR1N9CitMREZMQUdTPSR7TERGTEFHU30KK0xJQlM9JHtMSUJTfQorVkVSU0lPTkVEX1NZTVM9JHtWRVJTSU9ORURfU1lNU30KK1JFU1VMVElOR19TWU1TPWNvbmZ0ZXN0LnZlcgorTUtfU0hBUkVEX0xJQj0ke01LX1NIQVJFRF9MSUJ9Citjb25mdGVzdC5zbzogY29uZnRlc3QuJGFjX2N2X29iamV4dAorCQlcJChNS19TSEFSRURfTElCKSBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0CitFT0YKKworCQkjIGNvbXBpbGUgc291cmNlLCBtYWtlIGxpYnJhcnkKKwkJaWYgbWFrZSAtZiBjb25mdGVzdC5tayAyPiZBQ19GRF9DQyA+L2Rldi9udWxsCisJCXRoZW4KKwkJCSMgdGVzdCBmb3IgbWlzc2luZyBzeW1ib2wKKwkJCWNmX21pc3Npbmc9YG5tIC1QIGNvbmZ0ZXN0LnNvIDI+JkFDX0ZEX0NDIHxmZ3JlcCBfaXNtaXNzaW5nIHwgZWdyZXAgJ1tbIAldXVRbWyAJXV0nYAorCQkJdGVzdCAtbiAiJGNmX21pc3NpbmciICYmIFdJTERDQVJEX1NZTVM9eWVzCisJCWZpCisJCUFDX01TR19SRVNVTFQoJFdJTERDQVJEX1NZTVMpCisJCXJtIC1mIGNvbmZ0ZXN0LioKKwlmaQorZmkKK0FDX1NVQlNUKFJFU1VMVElOR19TWU1TKQorQUNfU1VCU1QoVkVSU0lPTkVEX1NZTVMpCitBQ19TVUJTVChXSUxEQ0FSRF9TWU1TKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YT1BFTl9TT1VSQ0UgdmVyc2lvbjogNDkgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAogZG5sIC0tLS0tLS0tLS0tLS0tLQogZG5sIFRyeSB0byBnZXQgX1hPUEVOX1NPVVJDRSBkZWZpbmVkIHByb3Blcmx5IHRoYXQgd2UgY2FuIHVzZSBQT1NJWCBmdW5jdGlvbnMsCiBkbmwgb3IgYWRhcHQgdG8gdGhlIHZlbmRvcidzIGRlZmluaXRpb25zIHRvIGdldCBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHksCkBAIC01NTQ1LDgwICs3NjE4LDExOSBAQAogZG5sCSQxIGlzIHRoZSBub21pbmFsIHZhbHVlIGZvciBfWE9QRU5fU09VUkNFCiBkbmwJJDIgaXMgdGhlIG5vbWluYWwgdmFsdWUgZm9yIF9QT1NJWF9DX1NPVVJDRQogQUNfREVGVU4oW0NGX1hPUEVOX1NPVVJDRV0sWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQogCi1BQ19SRVFVSVJFKFtDRl9QUk9HX0NDX1VfRF0pCitjZl9YT1BFTl9TT1VSQ0U9aWZlbHNlKFskMV0sLDUwMCxbJDFdKQorY2ZfUE9TSVhfQ19TT1VSQ0U9aWZlbHNlKFskMl0sLDE5OTUwNkwsWyQyXSkKK2NmX3hvcGVuX3NvdXJjZT0KIAotY2ZfWE9QRU5fU09VUkNFPWlmZWxzZSgkMSwsNTAwLCQxKQotY2ZfUE9TSVhfQ19TT1VSQ0U9aWZlbHNlKCQyLCwxOTk1MDZMLCQyKQotCi1jYXNlICRob3N0X29zIGluICModmkKLWFpeFtbNDVdXSopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0FMTF9TT1VSQ0UiCitjYXNlICRob3N0X29zIGluCisoYWl4W1s0LTddXSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9BTExfU09VUkNFIgogCTs7Ci1mcmVlYnNkKnxkcmFnb25mbHkqKSAjKHZpCisoY3lnd2lufG1zeXMpCisJY2ZfWE9QRU5fU09VUkNFPTYwMAorCTs7CisoZGFyd2luW1swLThdXS4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfQVBQTEVfQ19TT1VSQ0UiCisJOzsKKyhkYXJ3aW4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfREFSV0lOX0NfU09VUkNFIgorCWNmX1hPUEVOX1NPVVJDRT0KKwk7OworKGZyZWVic2QqfGRyYWdvbmZseSopCiAJIyA1LnggaGVhZGVycyBhc3NvY2lhdGUKIAkjCV9YT1BFTl9TT1VSQ0U9NjAwIHdpdGggX1BPU0lYX0NfU09VUkNFPTIwMDExMkwKIAkjCV9YT1BFTl9TT1VSQ0U9NTAwIHdpdGggX1BPU0lYX0NfU09VUkNFPTE5OTUwNkwKIAljZl9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCiAJY2ZfWE9QRU5fU09VUkNFPTYwMAotCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfQlNEX1RZUEVTIC1EX19CU0RfVklTSUJMRSAtRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UgLURfWE9QRU5fU09VUkNFPSRjZl9YT1BFTl9TT1VSQ0UiCisJY2ZfeG9wZW5fc291cmNlPSItRF9CU0RfVFlQRVMgLURfX0JTRF9WSVNJQkxFIC1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKIAk7OwotaHB1eCopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0hQVVhfU09VUkNFIgorKGhwdXgxMSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9IUFVYX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9NTAwIgogCTs7Ci1pcml4W1s1Nl1dLiopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1NHSV9TT1VSQ0UiCisoaHB1eCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9IUFVYX1NPVVJDRSIKIAk7OwotbGludXgqfGdudSp8aypic2QqLWdudSkgIyh2aQorKGlyaXhbWzU2XV0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX1NHSV9TT1VSQ0UiCisJY2ZfWE9QRU5fU09VUkNFPQorCTs7CisobGludXgqfGdudSp8bWludCp8aypic2QqLWdudSkKIAlDRl9HTlVfU09VUkNFCiAJOzsKLW1pcmJzZCopICModmkKLQkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBvciBfUE9TSVhfU09VUkNFIGJyZWFrcyA8YXJwYS9pbmV0Lmg+CisobWluaXgqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfTkVUQlNEX1NPVVJDRSIgIyBQT1NJWC4xLTIwMDEgZmVhdHVyZXMgYXJlIGlmZGVmJ2Qgd2l0aCB0aGlzLi4uCiAJOzsKLW5ldGJzZCopICModmkKLQkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBicmVha3MgSVB2NiBmb3IgbHlueCBvbiBOZXRCU0QgMS42LCBicmVha3MgeHRlcm0sIGlzIG5vdCBuZWVkZWQgZm9yIG5jdXJzZXN3CisobWlyYnNkKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBvciBfUE9TSVhfU09VUkNFIGJyZWFrcyA8c3lzL3NlbGVjdC5oPiBhbmQgb3RoZXIgaGVhZGVycyB3aGljaCB1c2UgdV9pbnQgLyB1X3Nob3J0IHR5cGVzCisJY2ZfWE9QRU5fU09VUkNFPQorCUNGX1BPU0lYX0NfU09VUkNFKCRjZl9QT1NJWF9DX1NPVVJDRSkKIAk7Owotb3BlbmJzZCopICModmkKKyhuZXRic2QqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfTkVUQlNEX1NPVVJDRSIgIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIElQdjYgZm9yIGx5bnggb24gTmV0QlNEIDEuNiwgYnJlYWtzIHh0ZXJtLCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdworCTs7Cisob3BlbmJzZFtbNC05XV0qKQorCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGxvd2VyIHRoYW4gNTAwIGJyZWFrcyBnKysgY29tcGlsZSB3aXRoIHdjaGFyLmgsIG5lZWRlZCBmb3IgbmN1cnNlc3cKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9TT1VSQ0UiCisJY2ZfWE9QRU5fU09VUkNFPTYwMAorCTs7Cisob3BlbmJzZCopCiAJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIHh0ZXJtIG9uIE9wZW5CU0QgMi44LCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdwogCTs7Ci1vc2ZbWzQ1XV0qKSAjKHZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9PU0ZfU09VUkNFIgorKG9zZltbNDVdXSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9PU0ZfU09VUkNFIgogCTs7Ci1udG8tcW54KikgIyh2aQotCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfUU5YX1NPVVJDRSIKKyhudG8tcW54KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX1FOWF9TT1VSQ0UiCiAJOzsKLXNjbyopICModmkKKyhzY28qKQogCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGJyZWFrcyBMeW54IG9uIFNDTyBVbml4IC8gT3BlblNlcnZlcgogCTs7Ci1zb2xhcmlzKikgIyh2aQotCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfX0VYVEVOU0lPTlNfXyIKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCiAJOzsKLSopCi0JQUNfQ0FDSEVfQ0hFQ0soaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFLGNmX2N2X3hvcGVuX3NvdXJjZSxbCi0JQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLFsKLSNpZm5kZWYgX1hPUEVOX1NPVVJDRQotbWFrZSBhbiBlcnJvcgotI2VuZGlmXSwKLQlbY2ZfY3ZfeG9wZW5fc291cmNlPW5vXSwKLQlbY2Zfc2F2ZT0iJENQUEZMQUdTIgotCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgotCSBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sWwotI2lmZGVmIF9YT1BFTl9TT1VSQ0UKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZl0sCi0JW2NmX2N2X3hvcGVuX3NvdXJjZT1ub10sCi0JW2NmX2N2X3hvcGVuX3NvdXJjZT0kY2ZfWE9QRU5fU09VUkNFXSkKLQlDUFBGTEFHUz0iJGNmX3NhdmUiCi0JXSkKLV0pCi0JaWYgdGVzdCAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgIT0gbm8gOyB0aGVuCi0JCUNGX1JFTU9WRV9ERUZJTkUoQ0ZMQUdTLCRDRkxBR1MsX1hPUEVOX1NPVVJDRSkKLQkJQ0ZfUkVNT1ZFX0RFRklORShDUFBGTEFHUywkQ1BQRkxBR1MsX1hPUEVOX1NPVVJDRSkKLQkJdGVzdCAiJGNmX2N2X2NjX3VfZF9vcHRpb25zIiA9IHllcyAmJiBcCi0JCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1VX1hPUEVOX1NPVVJDRSIKLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX2N2X3hvcGVuX3NvdXJjZSIKLQlmaQorKHN5c3Y0LjJ1dzIuKikgIyBOb3ZlbGwvU0NPIFVuaXhXYXJlIDIueCAodGVzdGVkIG9uIDIuMS4yKQorCWNmX1hPUEVOX1NPVVJDRT0KKwljZl9QT1NJWF9DX1NPVVJDRT0KKwk7OworKCopCisJQ0ZfVFJZX1hPUEVOX1NPVVJDRQogCUNGX1BPU0lYX0NfU09VUkNFKCRjZl9QT1NJWF9DX1NPVVJDRSkKIAk7OwogZXNhYworCitpZiB0ZXN0IC1uICIkY2ZfeG9wZW5fc291cmNlIiA7IHRoZW4KKwlDRl9BRERfQ0ZMQUdTKCRjZl94b3Blbl9zb3VyY2UsdHJ1ZSkKK2ZpCisKK2RubCBJbiBhbnl0aGluZyBidXQgdGhlIGRlZmF1bHQgY2FzZSwgd2UgbWF5IGhhdmUgc3lzdGVtLXNwZWNpZmljIHNldHRpbmcKK2RubCB3aGljaCBpcyBzdGlsbCBub3QgZ3VhcmFudGVlZCB0byBwcm92aWRlIGFsbCBvZiB0aGUgZW50cnlwb2ludHMgdGhhdAorZG5sIF9YT1BFTl9TT1VSQ0Ugd291bGQgeWllbGQuCitpZiB0ZXN0IC1uICIkY2ZfWE9QRU5fU09VUkNFIiAmJiB0ZXN0IC16ICIkY2ZfY3ZfeG9wZW5fc291cmNlIiA7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgX1hPUEVOX1NPVVJDRSByZWFsbHkgaXMgc2V0KQorCUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkbGliLmg+XSxbCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sCisJW2NmX1hPUEVOX1NPVVJDRV9zZXQ9eWVzXSwKKwlbY2ZfWE9QRU5fU09VUkNFX3NldD1ub10pCisJQUNfTVNHX1JFU1VMVCgkY2ZfWE9QRU5fU09VUkNFX3NldCkKKwlpZiB0ZXN0ICRjZl9YT1BFTl9TT1VSQ0Vfc2V0ID0geWVzCisJdGhlbgorCQlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGxpYi5oPl0sWworI2lmIChfWE9QRU5fU09VUkNFIC0gMCkgPCAkY2ZfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCQlbY2ZfWE9QRU5fU09VUkNFX3NldF9vaz15ZXNdLAorCQlbY2ZfWE9QRU5fU09VUkNFX3NldF9vaz1ub10pCisJCWlmIHRlc3QgJGNmX1hPUEVOX1NPVVJDRV9zZXRfb2sgPSBubworCQl0aGVuCisJCQlBQ19NU0dfV0FSTihfWE9QRU5fU09VUkNFIGlzIGxvd2VyIHRoYW4gcmVxdWVzdGVkKQorCQlmaQorCWVsc2UKKwkJQ0ZfVFJZX1hPUEVOX1NPVVJDRQorCWZpCitmaQogXSkKZGlmZiAtLWdpdCBhL2Fubm91bmNlLmh0bWwuaW4gYi9hbm5vdW5jZS5odG1sLmluCmluZGV4IDFkNDEyMWUuLjg5ZmIzZWIgMTAwNjQ0Ci0tLSBhL2Fubm91bmNlLmh0bWwuaW4KKysrIGIvYW5ub3VuY2UuaHRtbC5pbgpAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMy4wLy9FTiI+CiA8IS0tCi0gICRJZDogYW5ub3VuY2UuaHRtbC5pbix2IDEuNzAgMjAwOC8xMS8wMiAwMTowMzowNSB0b20gRXhwICQKKyAgJElkOiBhbm5vdW5jZS5odG1sLmluLHYgMS45MSAyMDE1LzA4LzA4IDE5OjI3OjE3IHRvbSBFeHAgJAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNTYwICsyOCwyMzk0IEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLS0+Ci08SFRNTD4KLTxIRUFEPgotPFRJVExFPkFubm91bmNpbmcgbmN1cnNlcyBAVkVSU0lPTkA8L1RJVExFPgotPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08L0hFQUQ+Ci08Qk9EWT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorCis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9CisgICJIVE1MIFRpZHkgZm9yIExpbnV4ICh2ZXJzIDI1IE1hcmNoIDIwMDkpLCBzZWUgd3d3LnczLm9yZyI+CisKKyAgPHRpdGxlPkFubm91bmNpbmcgbmN1cnNlcyBAVkVSU0lPTkA8L3RpdGxlPgorICA8bGluayByZXY9Im1hZGUiIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PQorICAidGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AsbGkgeyBtYXgtd2lkdGg6NzAwcHg7IH0KKyAgZGQgeyBtYXgtd2lkdGg6NjMwcHg7IH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxoMSBjbGFzcz0ibm8taGVhZGVyIj5Bbm5vdW5jaW5nIG5jdXJzZXMgQFZFUlNJT05APC9oMT4KKworICA8aDI+PGEgbmFtZT0iaDItb3ZlcnZpZXciIGlkPSJoMi1vdmVydmlldyI+T3ZlcnZpZXc8L2E+PC9oMj4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gKG5ldyBjdXJzZXMpIGxpYnJhcnkKKyAgaXMgYSBmcmVlIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBjdXJzZXMgaW4gU3lzdGVtIFYgUmVsZWFzZSA0LjAKKyAgKFNWcjQpLCBhbmQgbW9yZS4gSXQgdXNlcyB0ZXJtaW5mbyBmb3JtYXQsIHN1cHBvcnRzIHBhZHMgYW5kCisgIGNvbG9yIGFuZCBtdWx0aXBsZSBoaWdobGlnaHRzIGFuZCBmb3JtcyBjaGFyYWN0ZXJzIGFuZAorICBmdW5jdGlvbi1rZXkgbWFwcGluZywgYW5kIGhhcyBhbGwgdGhlIG90aGVyIFNWcjQtY3Vyc2VzCisgIGVuaGFuY2VtZW50cyBvdmVyIEJTRCBjdXJzZXMuIFNWcjQgY3Vyc2VzIGlzIGJldHRlciBrbm93biB0b2RheQorICBhcyBYL09wZW4gQ3Vyc2VzLjwvcD4KKworICA8cD5JbiBtaWQtSnVuZSAxOTk1LCB0aGUgbWFpbnRhaW5lciBvZiA0LjRCU0QgY3Vyc2VzIGRlY2xhcmVkCisgIHRoYXQgaGUgY29uc2lkZXJlZCA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUKKyAga2VlcGVycyBvZiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPnVuaXg8L2VtPiByZWxlYXNlcyBzdWNoIGFzCisgIEJTRC9PUywgRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHN3aXRjaCBvdmVyIHRvIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPi48L3A+CisKKyAgPHA+U2luY2UgMTk5NSwgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gaGFzIGJlZW4KKyAgcG9ydGVkIHRvIG1hbnkgc3lzdGVtczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT5JdCBpcyB1c2VkIGluIGFsbW9zdCBldmVyeSBzeXN0ZW0gYmFzZWQgb24gdGhlIExpbnV4IGtlcm5lbAorICAgIChhc2lkZSBmcm9tIHNvbWUgZW1iZWRkZWQgYXBwbGljYXRpb25zKS48L2xpPgorCisgICAgPGxpPkl0IGlzIHVzZWQgYXMgdGhlIHN5c3RlbSBjdXJzZXMgbGlicmFyeSBvbiBPcGVuQlNELCBGcmVlQlNECisgICAgYW5kIE9TWC48L2xpPgorCisgICAgPGxpPkl0IGlzIHVzZWQgaW4gZW52aXJvbm1lbnRzIHN1Y2ggYXMgQ3lnd2luIGFuZCBNaW5HVy4gVGhlCisgICAgZmlyc3Qgb2YgdGhlc2Ugd2FzIEVNWCBvbiBPUy8yIFdhcnAuPC9saT4KKworICAgIDxsaT5JdCBpcyB1c2VkICh0aG91Z2ggdXN1YWxseSBub3QgYXMgdGhlIDxlbT5zeXN0ZW08L2VtPgorICAgIGN1cnNlcykgb24gYWxsIG9mIHRoZSB2ZW5kb3IgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj51bml4PC9lbT4KKyAgICBzeXN0ZW1zLCBlLmcuLCBBSVgsIEhQLVVYLCBJUklYNjQsIFNDTywgU29sYXJpcywgVHJ1NjQuPC9saT4KKworICAgIDxsaT5JdCBzaG91bGQgd29yayByZWFkaWx5IG9uIGFueSBBTlNJL1BPU0lYLWNvbmZvcm1pbmcKKyAgICA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPnVuaXg8L2VtPi48L2xpPgorICA8L3VsPgorCisgIDxwPlRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgdGhlIGxpYnJhcnkgYW5kIHN1cHBvcnQgdXRpbGl0aWVzLAorICBpbmNsdWRpbmc8L3A+CisKKyAgPHVsPgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2FwdG9pbmZvLjFtLmh0bWwiPmNhcHRvaW5mbzwvYT4sCisgICAgYSB0ZXJtY2FwIGNvbnZlcnNpb24gdG9vbDwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NsZWFyLjEuaHRtbCI+Y2xlYXI8L2E+LAorICAgIHV0aWxpdHkgZm9yIGNsZWFyaW5nIHRoZSBzY3JlZW48L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9pbmZvY21wLjFtLmh0bWwiPmluZm9jbXA8L2E+LAorICAgIHRoZSB0ZXJtaW5mbyBkZWNvbXBpbGVyPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdGFicy4xLmh0bWwiPnRhYnM8L2E+LAorICAgIHNldCB0YWJzIG9uIGEgdGVybWluYWw8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90aWMuMW0uaHRtbCI+dGljPC9hPiwKKyAgICB0aGUgdGVybWluZm8gY29tcGlsZXI8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90b2UuMW0uaHRtbCI+dG9lPC9hPiwKKyAgICBsaXN0ICh0YWJsZSBvZikgdGVybWluZm8gZW50cmllczwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RwdXQuMS5odG1sIj50cHV0PC9hPiwKKyAgICB1dGlsaXR5IGZvciByZXRyaWV2aW5nIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBpbiBzaGVsbAorICAgIHNjcmlwdHM8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90c2V0LjEuaHRtbCI+dHNldDwvYT4sCisgICAgdG8gaW5pdGlhbGl6ZSB0aGUgdGVybWluYWw8L2xpPgorICA8L3VsPgorCisgIDxwPkZ1bGwgbWFudWFsIHBhZ2VzIGFyZSBwcm92aWRlZCBmb3IgdGhlIGxpYnJhcnkgYW5kIHRvb2xzLjwvcD4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gZGlzdHJpYnV0aW9uIGlzCisgIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIEZUUCBhdCB0aGUgR05VIGRpc3RyaWJ1dGlvbiBzaXRlPC9wPgorCisgIDxibG9ja3F1b3RlPgorICAgIDxwPjxhIGhyZWY9CisgICAgImZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLyI+ZnRwOi8vZnRwLmdudS5vcmcvZ251L25jdXJzZXMvPC9hPiZuYnNwOy48L3A+CisgIDwvYmxvY2txdW90ZT5JdCBpcyBhbHNvIGF2YWlsYWJsZSBhdAorCisgIDxibG9ja3F1b3RlPgorICAgIDxwPjxhIGhyZWY9CisgICAgImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvIj5mdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLzwvYT4mbmJzcDsuPC9wPgorICA8L2Jsb2NrcXVvdGU+CisKKyAgPGgyPjxhIG5hbWU9ImgyLXJlbGVhc2Utbm90ZXMiIGlkPSJoMi1yZWxlYXNlLW5vdGVzIj5SZWxlYXNlCisgIE5vdGVzPC9hPjwvaDI+CisKKyAgPHA+VGhlc2Ugbm90ZXMgYXJlIGZvciA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPgorICBAVkVSU0lPTkAsIHJlbGVhc2VkIDxzdHJvbmc+QXVndXN0IDgsIDIwMTU8L3N0cm9uZz4uPC9wPgorCisgIDxwPlRoaXMgcmVsZWFzZSBpcyBkZXNpZ25lZCB0byBiZSBzb3VyY2UtY29tcGF0aWJsZSB3aXRoCisgIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IDUuMCB0aHJvdWdoIDUuOTsgcHJvdmlkaW5nIGEKKyAgbmV3IGFwcGxpY2F0aW9uIGJpbmFyeSBpbnRlcmZhY2UgKEFCSSkuIEFsdGhvdWdoIHRoZSBzb3VyY2UgY2FuCisgIHN0aWxsIGJlIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aGUgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IDUgQUJJLCB0aGUgaW50ZW50IG9mIHRoZSByZWxlYXNlIGlzIHRvCisgIHByb3ZpZGUgZXh0ZW5zaW9ucyB3aGljaCBhcmUgZ2VuZXJhbGx5IHVzZWZ1bCwgYnV0CisgIGJpbmFyeS1pbmNvbXBhdGlibGUgd2l0aCA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPgorICA1OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+RXh0ZW5kIHRoZSA8Y29kZT5jY2hhcl90PC9jb2RlPiBzdHJ1Y3R1cmUgdG8gYWxsb3cgbW9yZQorICAgICAgdGhhbiAxNiBjb2xvcnMgdG8gYmUgZW5jb2RlZC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPk1vZGlmeSB0aGUgZW5jb2Rpbmcgb2YgbW91c2Ugc3RhdGUgdG8gbWFrZSByb29tIGZvciBhIDV0aAorICAgICAgbW91c2UgYnV0dG9uLiBUaGF0IGFsbG93cyBvbmUgdG8gdXNlIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gd2l0aCBhIHdoZWVsIG1vdXNlIHdpdGggeHRlcm0gb3IKKyAgICAgIHNpbWlsYXIgWCB0ZXJtaW5hbCBlbXVsYXRvcnMuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlcmUgYXJlLCBvZiBjb3Vyc2UsIG51bWVyb3VzIG90aGVyIGltcHJvdmVtZW50cywKKyAgaW5jbHVkaW5nPC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5maXhlcyBtYWRlIGJhc2VkIG9uIHRoZSBDbGFuZyBhbmQgQ292ZXJpdHkgc3RhdGljCisgICAgICBhbmFseXplcnMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tZW1vcnkgbGVhayBmaXhlcyB1c2luZyBWYWxncmluZDwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZSByZWxlYXNlIG5vdGVzIG1lbnRpb24gc29tZSBidWctZml4ZXMsIGJ1dCBhcmUgZm9jdXNlZCBvbgorICBuZXcgZmVhdHVyZXMgYW5kIGltcHJvdmVtZW50cyB0byBleGlzdGluZyBmZWF0dXJlcyBsb2cgc2luY2UKKyAgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gNS45IHJlbGVhc2UuPC9wPgorCisgIDxwPldoaWxlIHRoZSBpbnRlbnQgb2YgdGhlIHJlbGVhc2UgaXMgdG8gcHJvdmlkZSBhIG5ldyBzdGFibGUKKyAgQUJJLCB0aGVyZSBhcmUgb3RoZXIgZGV2ZWxvcG1lbnQgYWN0aXZpdGllcyB3aGljaCBhcmUgc3VtbWFyaXplZAorICBiZWxvdy48L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPlRoZSBvcmlnaW5hbCByZWxlYXNlIHBsYW4sIGUuZy4sIGZvciAiNS4xMCIgd2FzIHRvIGltcHJvdmUKKyAgICAgIHRoZSBNaW5HVyBwb3J0LiBVbHRpbWF0ZWx5IHRoYXQgd2FzIGNvbXBsZXRlZCAod2lkZS1jaGFyYWN0ZXIKKyAgICAgIHN1cHBvcnQsIG1vdXNlLCBldGMpLCBidXQgd2FzIGRlZmVycmVkIHRvIGZvY3VzIG9uIHRlcm1jYXAKKyAgICAgIHN1cHBvcnQgYW5kIHBlcmZvcm1hbmNlIGlzc3Vlcy4gQWxzbywgcGlucG9pbnRpbmcgdGhlCisgICAgICBwcm9ibGVtcyB3aXRoIDxjb2RlPkNvbnNvbGUyPC9jb2RlPiB0b29rIGEgd2hpbGUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5BIHJldmlldyBvZiB0ZXJtY2FwIGNvbXBhdGliaWxpdHkgaW4gMjAxMSBsZWQgdG8gc2V2ZXJhbAorICAgICAgbWlub3IgZml4ZXMgaW4gdGhlIGxpYnJhcnkgYW5kIGltcHJvdmVtZW50cyB0byB1dGlsaXRpZXMuIFRvCisgICAgICBkbyB0aGlzIHByb3Blcmx5LCBhIHJldmlldyBvZiB0aGUgdmFyaW91cyBleHRlbnQgdGVybWNhcAorICAgICAgaW1wbGVtZW50YXRpb25zIHdhcyBuZWVkZWQuPC9wPgorCisgICAgICA8cD5UaGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90Y3Rlc3QuaHRtbCI+dGVybWNhcAorICAgICAgbGlicmFyeSBjaGVja2VyICh0Y3Rlc3QpPC9hPiAobm90IHBhcnQgb2YgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPikgd2FzIG9uZSByZXN1bHQuIEEgZm9sbG93dXAgcmV2aWV3CisgICAgICBvZiBwZXJmb3JtYW5jZSB1c2luZyA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbCI+bmN1cnNlcy1leGFtcGxlczwvYT4KKyAgICAgIGluIDIwMTQgbGVkIHRvIGFkZGl0aW9uYWwgaW1wcm92ZW1lbnRzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+T3V0cHV0IGJ1ZmZlcmluZyBwcm92aWRlZCBhIGZ1cnRoZXIsIGJ1dCB3b3J0aHdoaWxlCisgICAgICBkaXN0cmFjdGlvbi4gQSBidWcgcmVwb3J0IGluIDIwMTIgcmVnYXJkaW5nIHRoZSB1c2Ugb2Ygc2lnbmFsCisgICAgICBoYW5kbGVycyBpbiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPikgcG9pbnRlZCBvdXQKKyAgICAgIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1uY3Vyc2VzLzIwMTItMDcvbXNnMDAwMjkuaHRtbCI+CisgICAgICBhIHByb2JsZW08L2E+IHdpdGggdGhlIHVzZSBvZiB1bnNhZmUgZnVuY3Rpb25zIGZvciBoYW5kbGluZworICAgICAgPGNvZGU+U0lHVFNUUDwvY29kZT4uIE90aGVyIHNpZ25hbHMgY291bGQgYmUgYWRkcmVzc2VkIHdpdGgKKyAgICAgIHdvcmthcm91bmRzOyByZXBhaXJpbmcgPGNvZGU+U0lHVFNUUDwvY29kZT4gcmVxdWlyZWQgYQorICAgICAgZGlmZmVyZW50IGFwcHJvYWNoLiBUaGUgc29sdXRpb24gcmVxdWlyZWQgY2hhbmdpbmcgaW50ZXJuYWwKKyAgICAgIGJlaGF2aW9yIG9mIHRoZSBsaWJyYXJ5OiBob3cgaXQgaGFuZGxlcyBvdXRwdXQgYnVmZmVyaW5nLjwvcD4KKworICAgICAgPHA+Tm93IDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGJ1ZmZlcnMgaXRzIG93bgorICAgICAgb3V0cHV0LCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzdGFuZGFyZCBvdXRwdXQuIEEgZmV3CisgICAgICBhcHBsaWNhdGlvbnMgcmVsaWVkIHVwb24gdGhlIGxpYnJhcnkncyBkaXJlY3QgcmV1c2Ugb2YgdGhlCisgICAgICBzdGFuZGFyZCBvdXRwdXQgYnVmZmVyaW5nOyBob3dldmVyIHRoYXQgaXMKKyAgICAgIDxlbT51bnNwZWNpZmllZDwvZW0+IGJlaGF2aW9yIGFuZCBoYXMgbmV2ZXIgYmVlbiBhCisgICAgICByZWNvbW1lbmRlZCBwcmFjdGljZS4gSWRlbnRpZnlpbmcgdGhlc2UgYXBwbGljYXRpb25zIGFzIHdlbGwKKyAgICAgIGFzIHJlZmluaW5nIHRoZSBjaGFuZ2UgdG8gcGVybWl0IGxvdy1sZXZlbCBhcHBsaWNhdGlvbnMgdG8KKyAgICAgIHdvcmsgY29uc2lzdGVudGx5IHRvb2sgdGltZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlNpbmNlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciAyNTYKKyAgICAgIGNvbG9ycyBlYXJseSBpbiA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0MjAwNTAxMDEiPjIwMDU8L2E+CisgICAgICAocmVsZWFzZWQgaW4gPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9hbm5vdW5jZS01LjUuaHRtbCI+bmN1cnNlcworICAgICAgNS41PC9hPiksIHRoZXJlIGhhcyBiZWVuIGluY3JlYXNlZCB1c2VyIGludGVyZXN0LiBBbG1vc3QgYWxsCisgICAgICBwYWNrYWdlcnMgY29udGludWUgcHJvdmlkaW5nIHRoZSBuY3Vyc2VzIEFCSSA1IHdoaWNoIGNhbm5vdAorICAgICAgc3VwcG9ydCAyNTYgY29sb3JzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+U3ltYm9sIHZlcnNpb25pbmcsIG9yIHRoZSBsYWNrIG9mIGl0IGluIG5jdXJzZXMsIGlzIHRoZQorICAgICAgbWFpbiByZWFzb24gd2h5IHBhY2thZ2VycyB3b3VsZCBiZSByZWx1Y3RhbnQgdG8gYWRkIGEgbmV3CisgICAgICBuY3Vyc2VzIEFCSS48L3A+CisKKyAgICAgIDxwPlRoaXMgcmVsZWFzZSBwcm92aWRlcyB0aGUgbmV3IEFCSSBhbG9uZyB3aXRoCisgICAgICBzY3JpcHQtZ2VuZXJhdGVkIGxpc3RzIG9mIHZlcnNpb25lZCBzeW1ib2xzIHdoaWNoIGNhbiBiZSB1c2VkCisgICAgICBmb3IgYm90aCBBQkkgNSBhbmQgNiAod2l0aCBkaXN0aW5jdCBuYW1lcyB0byBrZWVwIHRoZSB0d28KKyAgICAgIHNlcGFyYXRlKS4gVGhpcyB0b29rIHRpbWUgdG8gZGV2ZWxvcG1lbnQsIGFzIHJlcG9ydGVkIGluCisgICAgICA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWFwc3ltcy5odG1sIj5TeW1ib2wKKyAgICAgIHZlcnNpb25pbmcgaW4gPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+LjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoMz48YSBuYW1lPSJoMy1saWJyYXJ5IiBpZD0iaDMtbGlicmFyeSI+TGlicmFyeQorICBpbXByb3ZlbWVudHM8L2E+PC9oMz4KKworICA8aDM+PGEgbmFtZT0iaDMtbGliLXNldGJ1ZiIgaWQ9ImgzLWxpYi1zZXRidWYiPk91dHB1dAorICBidWZmZXJpbmc8L2E+PC9oMz4KKworICA8cD5YL09wZW4gY3Vyc2VzIHByb3ZpZGVzIG1vcmUgdGhhbiBvbmUgaW5pdGlhbGl6YXRpb24KKyAgZnVuY3Rpb246PC9wPgorCisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sI2gzLWluaXRzY3IiPgorICAgIGluaXRzY3I8L2E+ICh0aGUgc2ltcGxlc3QpIGFjY2VwdHMgbm8gcGFyYW1ldGVycy48L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCNoMy1uZXd0ZXJtIj4KKyAgICBuZXd0ZXJtPC9hPiBhY2NlcHRzIHBhcmFtZXRlcnMgZm9yIHRoZSBzdHJlYW0gaW5wdXQgYW5kCisgICAgb3V0cHV0PC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sI2gzLUluaXRpYWxpemF0aW9uIj4KKyAgICBzZXR1cHRlcm08L2E+ICh0aGUgbG93LWxldmVsIGZ1bmN0aW9uKSBhY2NlcHRzIGEgcGFyYW1ldGVyIGZvcgorICAgIHRoZSA8ZW0+ZmlsZSBkZXNjcmlwdG9yPC9lbT4gb2YgdGhlIG91dHB1dC48L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXkgYXJlIGRvY3VtZW50ZWQgaW4gWC9PcGVuIDxlbT5hcyBpZjwvZW0+CisgIDxjb2RlPmluaXRzY3I8L2NvZGU+IGNhbGxzIDxjb2RlPm5ld3Rlcm08L2NvZGU+IHVzaW5nCisgIDxjb2RlPnN0ZG91dDwvY29kZT4gZm9yIG91dHB1dCBzdHJlYW0sIGFuZCBpbiB0dXJuCisgIDxjb2RlPm5ld3Rlcm08L2NvZGU+IGNhbGxzIDxjb2RlPnNldHVwdGVybTwvY29kZT4gdXNpbmcKKyAgPGNvZGU+ZmlsZW5vKHN0ZG91dCk8L2NvZGU+IGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yLiBBcyBsb25nIGFzCisgIGFuIGltcGxlbWVudGF0aW9uIGFjdHMgPGVtPmFzIGlmPC9lbT4gaXQgZG9lcyB0aGlzLCBpdCBjb25mb3Jtcy4KKyAgSW4gcHJhY3RpY2UsIGltcGxlbWVudGF0aW9ucyBkbyB3aGF0IGlzIGltcGxpZWQuIFRoaXMgY3JlYXRlcyBhCisgIHByb2JsZW06IHRoZSBsb3ctbGV2ZWwgPGNvZGU+c2V0dXB0ZXJtPC9jb2RlPiBmdW5jdGlvbidzIGZpbGUKKyAgZGVzY3JpcHRvciBpcyB1bmJ1ZmZlcmVkLCB3aGlsZSA8Y29kZT5uZXd0ZXJtPC9jb2RlPiBpbXBsaWVzCisgIGJ1ZmZlcmVkIG91dHB1dC4gWC9PcGVuIEN1cnNlcyBzYXlzIHRoYXQgYWxsIG91dHB1dCBpcyBkb25lCisgIHRocm91Z2ggdGhlIGZpbGUgZGVzY3JpcHRvciwgYW5kIGRvZXMgbm90IHNheSBob3cgdGhlIG91dHB1dAorICBzdHJlYW0gaXMgYWN0dWFsbHkgdXNlZC48L3A+CisKKyAgPHA+SW5pdGlhbGx5LCA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiB1c2VkIHRoZSBmaWxlCisgIGRlc2NyaXB0b3IgKG9idGFpbmVkIGZyb20gdGhlIG91dHB1dCBzdHJlYW0gcGFzc2VkIHRvCisgIDxjb2RlPm5ld3Rlcm08L2NvZGU+KSBmb3IgY2hhbmdpbmcgdGhlIHRlcm1pbmFsIG1vZGVzLCBhbmQgcmVsaWVkCisgIHVwb24gdGhlIG91dHB1dCBwYXJhbWV0ZXIgb2YgPGNvZGU+bmV3dGVybTwvY29kZT4gZm9yIGJ1ZmZlcmVkCisgIG91dHB1dC4gTGF0ZXIgKHRvIGF2b2lkIHVzaW5nIHVuc2FmZSBidWZmZXJlZCBJL08gaW4gc2lnbmFsCisgIGhhbmRsZXJzKSwgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gd2FzIG1vZGlmaWVkIHRvCisgIHVzZSB0aGUgZmlsZSBkZXNjcmlwdG9yICh1bmJ1ZmZlcmVkIG91dHB1dCkgd2hlbiBjbGVhbmluZyB1cCBvbgorICByZWNlaXB0IG9mIGEgc2lnbmFsLiBPdGhlcndpc2UgKHdoZW4gbm90IGhhbmRsaW5nIGEgc2lnbmFsKSwgaXQKKyAgY29udGludWVkIHRvIHVzZSB0aGUgYnVmZmVyZWQgb3V0cHV0LjwvcD4KKworICA8cD5UaGF0IGFwcHJvYWNoIHdvcmtlZCByZWFzb25hYmx5IHdlbGwgYW5kIGFzIGEgc2lkZSBlZmZlY3QsCisgIHVzaW5nIHRoZSBzYW1lIGJ1ZmZlcmVkIG91dHB1dCBhcyBhbiBhcHBsaWNhdGlvbiBtaWdodCB1c2UgZm9yCisgIDxjb2RlPnByaW50ZjwvY29kZT4gbWVhbnQgdGhhdCBubyBmbHVzaGluZyB3YXMgbmVlZGVkIHdoZW4KKyAgc3dpdGNoaW5nIGJldHdlZW4gbm9ybWFsLSBhbmQgc2NyZWVuLW1vZGVzLjwvcD4KKworICA8cD5UaGVyZSB3ZXJlIGEgY291cGxlIG9mIHByb2JsZW1zOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+dG8gZ2V0IGdvb2QgcGVyZm9ybWFuY2UsIGN1cnNlcyAobm90IG9ubHkgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiwgYnV0IFNWcjQgY3Vyc2VzIGluIGdlbmVyYWwpIHNldCBhbgorICAgICAgb3V0cHV0IGJ1ZmZlciB1c2luZyA8Y29kZT5zZXRidWY8L2NvZGU+IG9yIHNpbWlsYXIgZnVuY3Rpb24uCisgICAgICBUaGVyZSBpcyBubyBzdGFuZGFyZCAob3IgcG9ydGFibGUpIHdheSB0byB0dXJuIHRoYXQgb3V0cHV0CisgICAgICBidWZmZXIgb2ZmLCBhbmQgcmV2ZXJ0IHRvIGxpbmUtYnVmZmVyaW5nLiBUaGUgPGNvZGU+PGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vbmN1cnNlcy4zeC5odG1sI2gzLU5DVVJTRVNfTk9fU0VUQlVGIj4KKyAgICAgIE5DVVJTRVNfTk9fU0VUQlVGPC9hPjwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgZGlkIG1ha2UgaXQKKyAgICAgIG9wdGlvbmFsLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dG8gaGFuZGxlIDxjb2RlPlNJR1RTVFA8L2NvZGU+ICh0aGUgJmxkcXVvO3N0b3AmcmRxdW87CisgICAgICBzaWduYWwpLCA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiByZWxpZWQgdXBvbgorICAgICAgdW5zYWZlIGZ1bmN0aW9ucy4gVGhhdCBpcywgZHVlIHRvIHRoZSBjb21wbGV4aXR5IG9mIHRoZQorICAgICAgZmVhdHVyZSwgaXQgcmVsaWVkIHVwb24gcmV1c2luZyBleGlzdGluZyBmdW5jdGlvbnMgd2hpY2gKKyAgICAgIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCB2aWEgdGhlIHNpZ25hbCBoYW5kbGVyLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkNvbnZlbmllbnRseSwgc29sdmluZyB0aGUgc2Vjb25kIHByb2JsZW0gKGJ5IG1ha2luZyA8ZW0gY2xhc3M9CisgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gZG8gaXRzIDxlbT5vd248L2VtPiBvdXRwdXQgYnVmZmVyaW5nKQorICBhbHNvIGZpeGVkIHRoZSBmaXJzdCBvbmUuIEJ1dCB0aGVyZSB3ZXJlIHNwZWNpYWwgY2FzZXMgdG8KKyAgcmVzb2x2ZTogPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPjxlbT4KKyAgbG93LWxldmVsPC9lbT48L2E+IGZ1bmN0aW9ucyBzdWNoIGFzIG12Y3VyLCBwdXRwLCB2aWRhdHRyCisgIGV4cGxpY2l0bHkgdXNlIHRoZSBzdGFuZGFyZCBvdXRwdXQuIFRob3NlIGZ1bmN0aW9ucyB3ZXJlIHJldXNlZAorICBpbnRlcm5hbGx5LCBhbmQgcmVxdWlyZWQgbW9kaWZpY2F0aW9uIHRvIGRpc3Rpbmd1aXNoIHdoZXRoZXIgdGhleQorICB3ZXJlIHVzZWQgYnkgdGhlIGhpZ2gtbGV2ZWwgb3IgbG93LWxldmVsIGludGVyZmFjZXMuPC9wPgorCisgIDxwPkZpbmFsbHksIHRoZXJlIG1heSBzdGlsbCBiZSBhIGZldyBwcm9ncmFtcyB3aGljaCBzaG91bGQgYmUKKyAgbW9kaWZpZWQgdG8gaW1wcm92ZSB0aGVpciBwb3J0YWJpbGl0eSwgZS5nLiwgYWRkaW5nIGFuPC9wPgorCisgIDxibG9ja3F1b3RlPgorICAgIDxwcmUgY2xhc3M9ImNvZGUtYmxvY2siPgorZmZsdXNoKHN0ZG91dCk7Cis8L3ByZT4KKyAgPC9ibG9ja3F1b3RlPgorCisgIDxwPndoZW4gc3dpdGNoaW5nIGZyb20gJmxkcXVvOzxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCNoMy1yZXNldF9wcm9nX21vZGVfLXJlc2V0X3NoZWxsX21vZGUiPnNoZWxsPC9hPiZyZHF1bzsKKyAgbW9kZSB0byAmbGRxdW87PGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sI2gzLXJlc2V0X3Byb2dfbW9kZV8tcmVzZXRfc2hlbGxfbW9kZSI+cHJvZ3JhbTwvYT4mcmRxdW87CisgIChjdXJzZXMpIG1vZGUuIFRob3NlIGFyZSBmYWlybHkgcmFyZSBiZWNhdXNlIG1vc3QgcHJvZ3JhbW1lcnMKKyAgaGF2ZSBsZWFybmVkIG5vdCB0byBtaXggPGNvZGU+cHJpbnRmPC9jb2RlPiBhbmQgPGNvZGU+PGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3ByaW50dy4zeC5odG1sIj5wcmludHc8L2E+PC9jb2RlPi48L3A+CisKKyAgPGgzPjxhIG5hbWU9ImgzLWxpYi12ZXJzaW9uaW5nIiBpZD0iaDMtbGliLXZlcnNpb25pbmciPlN5bWJvbAorICB2ZXJzaW9uaW5nPC9hPjwvaDM+CisKKyAgPHA+VGhpcyByZWxlYXNlIGludHJvZHVjZXMgc3ltYm9sLXZlcnNpb25pbmcgdG8gPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGJlY2F1c2Ugd2l0aG91dCBpdCwgdGhlIGNoYW5nZSBvZiBBQkkKKyAgd291bGQgYmUgbGVzcyBzdWNjZXNzZnVsLiBBIGxlbmd0aHkgZGlzY3Vzc2lvbiB3aWxsIGJlIHByZXNlbnRlZAorICBpbiA8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1tYXBzeW1zLmh0bWwiPlN5bWJvbAorICB2ZXJzaW9uaW5nIGluIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPi4gVGhlc2UKKyAgbm90ZXMgc3VtbWFyaXplIHdoYXQgaGFzIGNoYW5nZWQsIGFuZCB3aGF0IGNhbiBiZSBkb25lIHdpdGggdGhlCisgIG5ldyByZWxlYXNlLjwvcD4KKworICA8cD5TeW1ib2wtdmVyc2lvbmluZyBhbGxvd3MgdGhlIGRldmVsb3BlcnMgb2YgYSBsaWJyYXJ5IHRvIG1hcmsKKyAgZWFjaCBwdWJsaWMgc3ltYm9sIChib3RoIGRhdGEgYW5kIGZ1bmN0aW9ucykgd2l0aCBhbiBpZGVudGlmaWVyCisgIGRlbm90aW5nIHRoZSBsaWJyYXJ5IG5hbWUgYW5kIHRoZSB2ZXJzaW9uIGZvciB3aGljaCBpdCB3YXMgYnVpbHQuCisgIEJ5IGRvaW5nIHRoaXMsIHVzZXJzIG9mIHRoZSBsaWJyYXJ5IGhhdmUgYSB3YXkgdG8gaGVscCBlbnN1cmUKKyAgdGhhdCBhcHBsaWNhdGlvbnMgZG8gbm90IGFjY2lkZW50YWxseSBsb2FkIGFuIGluY29tcGF0aWJsZQorICBsaWJyYXJ5LiBJbiBhZGRpdGlvbiwgcHJpdmF0ZSBzeW1ib2xzIGNhbiBiZSBoaWRkZW4gZW50aXJlbHkuPC9wPgorCisgIDxwPlRoaXMgcmVsZWFzZSBwcm92aWRlcyBzYW1wbGUgZmlsZXMgZm9yIHRoZSBmb3VyIHByaW5jaXBhbAorICBjb25maWd1cmF0aW9ucyBvZiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBsaWJyYXJpZXM6CisgIDxjb2RlPm5jdXJzZXM8L2NvZGU+LCA8Y29kZT5uY3Vyc2VzdzwvY29kZT4sCisgIDxjb2RlPm5jdXJzZXN0PC9jb2RlPiBhbmQgPGNvZGU+bmN1cnNlc3R3PC9jb2RlPi4gRWFjaCBzYW1wbGUgaXMKKyAgZ2l2ZW4gaW4gdHdvIGZvcm1zOjwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8ZGw+CisgICAgICA8ZHQ+JmxkcXVvOzxjb2RlPi5tYXA8L2NvZGU+JnJkcXVvOzwvZHQ+CisKKyAgICAgIDxkZD5UaGVzZSBsaXN0IGFsbCBwdWJsaWMgc3ltYm9scywgdG9nZXRoZXIgd2l0aCB2ZXJzaW9uCisgICAgICBuYW1lcy48L2RkPgorCisgICAgICA8ZHQ+JmxkcXVvOzxjb2RlPi5zeW08L2NvZGU+JnJkcXVvOzwvZHQ+CisKKyAgICAgIDxkZD5UaGVzZSBsaXN0IGFsbCBwdWJsaWMgc3ltYm9scywgd2l0aG91dCB2ZXJzaW9uCisgICAgICBuYW1lcy48L2RkPgorICAgIDwvZGw+CisgIDwvYmxvY2txdW90ZT4KKworICA8cD5UaGUgc2FtcGxlIGZpbGVzIGFyZSA8ZW0+Z2VuZXJhdGVkPC9lbT4gYnkgc2NyaXB0cyB3aGljaCB0YWtlCisgIGludG8gYWNjb3VudCBhIGZldyBzcGVjaWFsIGNhc2VzIHN1Y2ggYXMgPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RhY2suaHRtbCI+dGFjazwvYT4gdG8gb21pdAorICBtYW55IG9mIHRoZSA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBwcml2YXRlIHN5bWJvbHMKKyAgKGJlZ2lubmluZyB3aXRoICZsZHF1bzs8Y29kZT5fbmNfPC9jb2RlPiZyZHF1bzspLiBIZXJlIGFyZQorICBjb3VudHMgb2YgZ2xvYmFscyB2ZXJzdXMgbG9jYWxzOjwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8dGFibGUgYm9yZGVyPSIxIiBzdW1tYXJ5PSJUb3RhbCBnbG9iYWwgYW5kIGxvY2FsIHN5bWJvbHMiPgorICAgICAgPHRyPgorICAgICAgICA8dGg+Q29uZmlnPC90aD4KKworICAgICAgICA8dGg+U3ltYm9sczwvdGg+CisKKyAgICAgICAgPHRoPkdsb2JhbHM8L3RoPgorCisgICAgICAgIDx0aD5Mb2NhbHM8L3RoPgorCisgICAgICAgIDx0aD4iX25jXyI8L3RoPgorICAgICAgPC90cj4KKworICAgICAgPHRyPgorICAgICAgICA8dGQ+bmN1cnNlczwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+OTc2PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij43OTY8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjE4MDwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MzMyPC90ZD4KKyAgICAgIDwvdHI+CisKKyAgICAgIDx0cj4KKyAgICAgICAgPHRkPm5jdXJzZXN3PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4xMDg5PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij45MDU8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjE4NDwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MzQzPC90ZD4KKyAgICAgIDwvdHI+CisKKyAgICAgIDx0cj4KKyAgICAgICAgPHRkPm5jdXJzZXN0PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij45Nzk8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjgwNDwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MTc1PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4zNTg8L3RkPgorICAgICAgPC90cj4KKworICAgICAgPHRyPgorICAgICAgICA8dGQ+bmN1cnNlc3R3PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4xMDk4PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij45MTQ8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjE4NDwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MzcyPC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90YWJsZT4KKyAgPC9ibG9ja3F1b3RlPgorCisgIDxwPkFsdGhvdWdoIG9ubHkgZm91ciBzYW1wbGUgY29uZmlndXJhdGlvbnMgYXJlIHByZXNlbnRlZCwgZWFjaAorICBpcyBmb3JtZWQgYnkgbWVyZ2luZyBzeW1ib2xzIGZyb20gc2V2ZXJhbCBjb21iaW5hdGlvbnMgb2YKKyAgY29uZmlndXJlLXNjcmlwdCBvcHRpb25zLCB0YWtpbmcgaW50byBhY2NvdW50IGFkdmljZSBmcm9tCisgIGRvd25zdHJlYW0gcGFja2FnZXJzLiBCZWNhdXNlIHRoZXkgYXJlIGZvcm1lZCBieSBtZXJnaW5nLCB0aGUKKyAgc2FtcGxlIGZpbGVzIG1heSBsaXN0IGEgc3ltYm9sIHdoaWNoIGlzIG5vdCBpbiBhIGdpdmVuIHBhY2thZ2UuCisgIFRoYXQgaXMgZXhwZWN0ZWQuIFRoZSBzYW1wbGVzIGhhdmUgYmVlbiB0ZXN0ZWQgYW5kIGFyZSB3b3JraW5nCisgIHdpdGggc3lzdGVtcyAoc3VjaCBhcyBGZWRvcmEsIEZyZWVCU0QgYW5kIERlYmlhbikgd2hpY2ggZnVsbHkKKyAgc3VwcG9ydCB0aGlzIGZlYXR1cmUuIFRoZXJlIGFyZSBvdGhlciBzeXN0ZW1zIHdoaWNoIGRvCisgIDxlbT5ub3Q8L2VtPiBzdXBwb3J0IHRoZSBmZWF0dXJlLCBhbmQgYSBmZXcgKHN1Y2ggYXMgU29sYXJpcykKKyAgd2hpY2ggcHJvdmlkZSBpbmNvbXBsZXRlIHN1cHBvcnQuPC9wPgorCisgIDxwPlRoZSB2ZXJzaW9uLW5hbWluZyBjb252ZW50aW9uIHVzZWQgYWxsb3dzIHRoZXNlIHNhbXBsZSBmaWxlcworICB0byBidWlsZCBkaXN0aW5jdCBsaWJyYXJpZXMgZm9yIEFCSSA1IGFuZCA2LiBWZXJzaW9uIG5hbWVzCisgIGNvbnNpc3Qgb2Y8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmNvbmZpZ3VyYXRpb24gbmFtZSwgZS5nLiwKKyAgICAgICZsZHF1bzs8Y29kZT5OQ1VSU0VTVzwvY29kZT4mcmRxdW87IGZvciB0aGUgd2lkZS1jaGFyYWN0ZXIKKyAgICAgIGxpYnJhcmllczwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+QUJJIHZlcnNpb24gKGlmIG5vdCA1KTwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bGlicmFyeSBuYW1lIGZvciB0d28gc3BlY2lhbCBjYXNlcyB3aGljaCBoYXZlIHRoZSBzYW1lCisgICAgICBpbnRlcmZhY2UgYWNyb3NzIGNvbmZpZ3VyYXRpb25zOgorICAgICAgJmxkcXVvOzxjb2RlPlRJTkZPPC9jb2RlPiZyZHF1bzsgYW5kCisgICAgICAmbGRxdW87PGNvZGU+VElDPC9jb2RlPiZyZHF1bzs8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnJlbGVhc2UgdmVyc2lvbjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+cGF0Y2ggZGF0ZSAoZm9yIHRoZSByZWxlYXNlIHZlcnNpb24pPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+Rm9yIGV4YW1wbGUsIHJ1bm5pbmcgPGNvZGU+bm0gLUQ8L2NvZGU+IG9uIHRoZSBsaWJyYXJpZXMgaW4KKyAgdGhlIG5jdXJzZXM2IHRlc3QgcGFja2FnZSBzaG93cyB0aGVzZSBzeW1ib2wtdmVyc2lvbnM6PC9wPgorCisgIDxibG9ja3F1b3RlPgorICAgIDxwcmUgY2xhc3M9ImNvZGUtYmxvY2siPgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjAuMTk5OTEwMjMKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS4xLjIwMDAwNzA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuNS4yMDA1MTAxMAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjcuMjAwODExMDIKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS45LjIwMTUwNTMwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS4wLjE5OTkxMDIzCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS4xLjIwMDAwNzA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS4yLjIwMDAxMDIxCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS4zLjIwMDIxMDE5CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS40LjIwMDQwMjA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS41LjIwMDUxMDEwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS42LjIwMDYxMjE3CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS43LjIwMDgxMTAyCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS44LjIwMTEwMjI2CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElORk9fNS45LjIwMTUwNTMwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuMS4yMDAwMDcwOAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjMuMjAwMjEwMTkKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS40LjIwMDQwMjA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuNS4yMDA1MTAxMAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjYuMjAwNjEyMTcKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS43LjIwMDgxMTAyCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuOC4yMDExMDIyNgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjkuMjAxNTA1MzAKKzwvcHJlPgorICA8L2Jsb2NrcXVvdGU+CisKKyAgPHA+QXMgYSBzcGVjaWFsIGNhc2UsIHRoaXMgcmVsZWFzZSAod2hpY2ggbWFrZXMgdGhlIGZpbmFsIGNoYW5nZQorICBmb3IgQUJJIDUpIGlzIG1hcmtlZCB3aXRoIHJlbGVhc2UgdmVyc2lvbiA1LjkgYW5kIHBhdGNoIGRhdGUKKyAgMjAxNTA1MzAuPC9wPgorCisgIDxoMz48YSBuYW1lPSJoMy1saWItb3RoZXIiIGlkPQorICAiaDMtbGliLW90aGVyIj5NaXNjZWxsYW5lb3VzPC9hPjwvaDM+CisKKyAgPHA+VGhlIG5ldyByZWxlYXNlIGhhcyBzZXZlcmFsIGltcHJvdmVtZW50cyBmb3IgcGVyZm9ybWFuY2UgYW5kCisgIGJ1aWxkaW5nLiBGb3IgaW5zdGFuY2U6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5zZXZlcmFsIGZpbGVzIGluIG5jdXJzZXMtIGFuZCBwcm9ncy1kaXJlY3RvcmllcyB3ZXJlCisgICAgICBtb2RpZmllZCB0byBhbGxvdyA8Y29kZT5jb25zdDwvY29kZT4gZGF0YSB1c2VkIGluIGludGVybmFsCisgICAgICB0YWJsZXMgdG8gYmUgcHV0IGJ5IHRoZSBsaW5rZXIgaW50byB0aGUgcmVhZG9ubHkgdGV4dAorICAgICAgc2VnbWVudC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnZhcmlvdXMgaW1wcm92ZW1lbnRzIHdlcmUgbWFkZSB0byBidWlsZGluZyB0aGUgQWRhOTUKKyAgICAgIGJpbmRpbmcsIGJvdGggaW4gc2ltcGxpZnlpbmcgdGhlIGdlbmVyYXRlZCBmaWxlcyBhcyB3ZWxsIGFzCisgICAgICBpbXByb3ZpbmcgdGhlIHdheSBpdCB1c2VzIDxjb2RlPmduYXRtYWtlPC9jb2RlPjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXJlIGFyZSBhbHNvIG5ldyBmZWF0dXJlcyBpbiB0aGUgbGlicmFyaWVzOjwvcD4KKworICA8dWw+CisgICAgPGxpPmFkZGVkIDxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy11c2VfdGlvY3RsIj4KKyAgICB1c2VfdGlvY3RsPC9hPiBmdW5jdGlvbjwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX29wYXF1ZS4zeC5odG1sIj4KKyAgICAgIHdnZXRkZWxheTwvYT4gdG8gcmV0cmlldmUgX2RlbGF5IG1lbWJlciBvZiBXSU5ET1cgaWYgaXQKKyAgICAgIGhhcHBlbnMgdG8gYmUgb3BhcXVlLCBlLmcuLCBpbiB0aGUgcHRocmVhZCBjb25maWd1cmF0aW9uLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwjaDItUE9SVEFCSUxJVFkiPgorICAgICAgQV9JVEFMSUM8L2E+IGV4dGVuc2lvbi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIGZvcm0gbGlicmFyeSBleHRlbnNpb24gPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vZm9ybV9maWVsZF9vcHRzLjN4Lmh0bWwiPgorICAgICAgT19EWU5BTUlDX0pVU1RJRlk8L2E+IG9wdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZQorICAgICAgdGhlIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YganVzdGlmaWNhdGlvbiBmb3Igc3RhdGljIHZlcnN1cworICAgICAgZHluYW1pYyBmaWVsZHMgLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+cmV3cm90ZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy1wdXR3aW5fZ2V0d2luIj4KKyAgICAgIHB1dHdpbjwvYT4gYW5kIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdXRpbC4zeC5odG1sI2gzLXB1dHdpbl9nZXR3aW4iPgorICAgICAgZ2V0d2luPC9hPiwgbWFraW5nIGFuIGV4dGVuZGVkIHZlcnNpb24gd2hpY2ggaXMgY2FwYWJsZSBvZgorICAgICAgcmVhZGluZyBzY3JlZW4tZHVtcHMgYmV0d2VlbiB0aGUgd2lkZS9ub3JtYWwgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBjb25maWd1cmF0aW9ucy4gVGhlc2UgYXJlIHRleHQKKyAgICAgIGZpbGVzLCBleGNlcHQgZm9yIGEgPGVtPm1hZ2ljPC9lbT4gY29kZSBhdCB0aGUgYmVnaW5uaW5nOjwvcD4KKworICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgIDxwcmUgY2xhc3M9ImNvZGUtYmxvY2siPgorMCAgICAgICBzdHJpbmcgICAgICAgICAgXDIxMFwyMTAgICAgICAgIFNjcmVlbi1kdW1wIChuY3Vyc2VzKQorPC9wcmU+CisgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnNldmVyYWwgY2hhbmdlcyB0byBtb3VzZSBzdXBwb3J0IGluY2x1ZGU6PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT5hZGRlZCBkZWNvZGVyIGZvciB4dGVybSBTR1IgMTAwNiBtb3VzZSBtb2RlLjwvbGk+CisKKyAgICAgICAgPGxpPmFkZGVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvcgorICAgICAgICAmbGRxdW87PGNvZGU+JXU8L2NvZGU+JnJkcXVvOyBmb3JtYXQgdG8gdGVybWluZm8uPC9saT4KKworICAgICAgICA8bGk+aW1wcm92ZWQgYmVoYXZpb3Igb2Ygd2hlZWwtbWljZSBmb3IgeHRlcm0gcHJvdG9jb2w6CisgICAgICAgIG5vdGluZyB0aGF0IHRoZXJlIGFyZSBvbmx5IGJ1dHRvbi1wcmVzc2VzIGZvciBidXR0b25zCisgICAgICAgICZsZHF1bzs0JnJkcXVvOyBhbmQgJmxkcXVvOzUmcmRxdW87LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvCisgICAgICAgIHdhaXQgdG8gY29tYmluZSBldmVudHMgaW50byBkb3VibGUtY2xpY2tzIC48L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXJlIGFyZSBhIGZldyBuZXcgY29uZmlndXJlIG9wdGlvbnMgZGVhbGluZyB3aXRoIGxpYnJhcnkKKyAgY3VzdG9taXphdGlvbjo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmFkZCAmbGRxdW87PGNvZGU+LS1lbmFibGUtZXh0LXB1dHdpbjwvY29kZT4mcmRxdW87CisgICAgICBjb25maWd1cmUgb3B0aW9uIHRvIHR1cm4gb24gdGhlIGV4dGVuZGVkIHB1dHdpbi9nZXR3aW4uIEJ5CisgICAgICBkZWZhdWx0LCB0aGlzIGlzIGVuYWJsZWQgZm9yIEFCSSA2IGFuZCBkaXNhYmxlZCB3aXRoIEFCSQorICAgICAgNS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZCAmbGRxdW87PGNvZGU+LS1lbmFibGUtc3RyaW5nLWhhY2tzPC9jb2RlPiZyZHF1bzsKKyAgICAgIG9wdGlvbiB0byBjb250cm9sIHdoZXRoZXIgc3RybGNhdCBhbmQgc3RybGNweSBtYXkgYmUgdXNlZC4KKyAgICAgIEJlY2F1c2UgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gYWxyZWFkeSBkb2VzIHRoZQorICAgICAgcmVxdWlzaXRlIGJ1ZmZlci1saW1pdCBjaGVja3MsIHRoaXMgZmVhdHVyZSBpcyBtYWlubHkgb2YKKyAgICAgIGludGVyZXN0IHRvIHF1aWV0IGNvbXBpbGVyLXdhcm5pbmdzIG9uIGEgZmV3IHN5c3RlbXMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGQgY29uZmlndXJlIG9wdGlvbgorICAgICAgJmxkcXVvOzxjb2RlPi0td2l0aC10cGFybS1hcmc8L2NvZGU+JnJkcXVvOyB0byBhbGxvdyA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtRm9ybWF0dGluZy1PdXRwdXQiPgorICAgICAgdHBhcm08L2E+J3MgcGFyYW1ldGVycyB0byBiZSBzb21ldGhpbmcgbW9yZSBsaWtlbHkgdG8gYmUgdGhlCisgICAgICBzYW1lIHNpemUgYXMgYSBwb2ludGVyLCBlLmcuLCA8Y29kZT5pbnRwdHJfdDwvY29kZT4gKGFnYWluLAorICAgICAgdGhlIGRlZmF1bHQgaXMgc2V0IGZvciBBQkkgNikuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPGgzPjxhIG5hbWU9ImgzLXByb2dyYW1zIiBpZD0iaDMtcHJvZ3JhbXMiPlByb2dyYW0KKyAgaW1wcm92ZW1lbnRzPC9hPjwvaDM+CisKKyAgPGg0PjxhIG5hbWU9Img0LXV0aWxpdGllcyIgaWQ9Img0LXV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPjwvaDQ+CisKKyAgPHA+TW9zdCBvZiB0aGUgdGVybWNhcC1yZWxhdGVkIGNoYW5nZXMgYmFzZWQgb24gZGV2ZWxvcG1lbnQgb2YKKyAgPGEgaHJlZj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwiPnRjdGVzdAorICAodGVybWNhcCBsaWJyYXJ5IGNoZWNrZXIpPC9hPiBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIHRpYyBhbmQKKyAgaW5mb2NtcCBwcm9ncmFtcyByYXRoZXIgdGhhbiBhZmZlY3RpbmcgdGhlIGxpYnJhcnkuIEFzIG5vdGVkIGluCisgIHRoZSA8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwjbXktYmV0dGVyLXRyYW5zbGF0aW9uIj4KKyAgZGlzY3Vzc2lvbjwvYT4gb2YgPGNvZGU+dGN0ZXN0PC9jb2RlPiwgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+J3MgYWJpbGl0eSB0byB0cmFuc2xhdGUgYmV0d2VlbiB0ZXJtaW5mbworICBhbmQgdGVybWNhcCBmb3JtYXRzIGhhcyBiZWVuIGltcHJvdmVkIGF0IGRpZmZlcmVudCB0aW1lcywgYnV0CisgIHN1YmplY3QgdG8gZmVlZGJhY2sgZnJvbSAicmVhbCIgdGVybWNhcCB1c2Vycy4gVGhlcmUgYXJlIHZlcnkgZmV3CisgIG9mIHRob3NlLiBOb3dhZGF5cywgdmlydHVhbGx5IGFsbCA8ZW0+dGVybWNhcDwvZW0+IHVzZXJzIGFyZQorICB1c2luZyA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiAob3IgTmV0QlNELCB3aXRoIGl0cworICBvd24gdGVybWluZm8gbGlicmFyeSkgYW5kIHRoZWlyIHByb2dyYW1zIGFyZSBhY3R1YWxseSB1c2luZworICB0ZXJtaW5mbyByYXRoZXIgdGhhbiB0ZXJtY2FwIGRhdGEuPC9wPgorCisgIDxwPlN0aWxsLCB0aGVyZSBhcmUgYSBmZXcuIEEgY29tbWVudCBhYm91dCB0aGUgdHJhbnNsYXRpb24gb2YgdGhlCisgIEFTQ0lJIDxjb2RlPk5VTDwvY29kZT4gY2hhcmFjdGVyIHByb21wdGVkIGEgcmV2aWV3OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+Qm90aCB0ZXJtaW5mbyBhbmQgdGVybWNhcCBzdG9yZSBzdHJpbmcgY2FwYWJpbGl0aWVzIGFzCisgICAgICA8Y29kZT5OVUw8L2NvZGU+LXRlcm1pbmF0ZWQgc3RyaW5ncy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkluIHRlcm1pbmZvLCBhIDxjb2RlPlwwPC9jb2RlPiBpbiBhIHRlcm1pbmFsIGRlc2NyaXB0aW9uCisgICAgICBpcyBzdG9yZWQgYXMgPGNvZGU+XDIwMDwvY29kZT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGVyZSBhcmUgbm8gKGtub3duKSB0ZXJtaW5hbHMgd2hpY2ggd291bGQgYmVoYXZlCisgICAgICBkaWZmZXJlbnRseSB3aGVuIHNlbnQgPGNvZGU+XDA8L2NvZGU+IG9yCisgICAgICA8Y29kZT5cMjAwPC9jb2RlPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPldoZW4gdHJhbnNsYXRpbmcgdG8gdGVybWluZm8gZm9ybWF0IChvciBkaXNwbGF5aW5nIGEKKyAgICAgIHByaW50YWJsZSB2ZXJzaW9uIG9mIGFuIGVudHJ5IHVzaW5nIGluZm9jbXApLCA8ZW0gY2xhc3M9CisgICAgICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IHNob3dzIDxjb2RlPlwyMDA8L2NvZGU+IGFzCisgICAgICA8Y29kZT5cMDwvY29kZT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5JdCBoYXMgZG9uZSB0aGlzIHNpbmNlIDE5OTggKHF1b3RpbmcgZnJvbSB0aGUgTkVXUworICAgICAgZmlsZSk6PC9wPgorCisgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgPHByZSBjbGFzcz0iY29kZS1ibG9jayI+Cis8YSBocmVmPQorImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0OTgwMTAzIj45ODAxMDM8L2E+CisuLi4KKyAgICAgICAgKyBtb2RpZnkgX25jX3RpY19leHBhbmQoKSB0byBnZW5lcmF0ZSBcMCByYXRoZXIgdGhhbiBcMjAwLgorLi4uCisgICAgICAgICsgY29ycmVjdCB0cmFuc2xhdGlvbiBvZiB0ZXJtaW5mbyAiXkAiLCB0byBcMjAwLCBsaWtlIFwwLgorPC9wcmU+CisgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkhvd2V2ZXIsIHRoZSA8Y29kZT5fbmNfdGljX2V4cGFuZDwvY29kZT4gZnVuY3Rpb24gKHdoaWNoCisgICAgICBvcHRpb25hbGx5IHByb2R1Y2VzIHRlcm1pbmZvIG9yIHRlcm1jYXAgZm9ybWF0KSBkaWQgbm90CisgICAgICBhZGRyZXNzIHRoaXMgc3BlY2lhbCBjYXNlIGZvciB0ZXJtY2FwLiBFdmVuIHRoZSBsYXRlciA0LjRCU0QKKyAgICAgIDxhIGhyZWY9CisgICAgICAiaHR0cHM6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2xpYi9saWJjL2dlbi9nZXRjYXAuYz9yZXZpc2lvbj0yNDQwOTImYW1wO3ZpZXc9bWFya3VwI2w3ODQiPgorICAgICAgY2dldHN0cjwvYT4gaW50ZXJwcmV0cyBhIDxjb2RlPlwwPC9jb2RlPiBsaXRlcmFsbHksIGVuZGluZworICAgICAgPGVtPnRoYXQ8L2VtPiBzdHJpbmcgKHJhdGhlciB0aGFuIHVzaW5nIHRoZSB0ZXJtaW5mbworICAgICAgaW1wcm92ZW1lbnQpLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkFzIGEgcmVzdWx0IG9mIHRoZSByZXZpZXcsIHNldmVyYWwgaW1wcm92ZW1lbnRzIHdlcmUgbWFkZSB0bworICA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiB0cmFuc2xhdGlvbiB0by9mcm9tIHRlcm1jYXAKKyAgZm9ybWF0ICZtZGFzaDsgYW5kIGltcHJvdmluZyB0aGUgY2hlY2tzIG1hZGUgaW4gdGljIGZvcgorICBjb25zaXN0ZW5jeSBvZiBlbnRyaWVzLiBNb3N0IG9mIHRoZXNlIGFyZSBub3Qgb2YgZ2VuZXJhbAorICBpbnRlcmVzdCwgZXhjZXB0IGZvciB0d28gbmV3IGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aWMgYW5kCisgIGluZm9jbXA6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD50aGUgJmxkcXVvOzxjb2RlPi0wPC9jb2RlPiZyZHF1bzsgb3B0aW9uIGdlbmVyYXRlcworICAgICAgdGVybWNhcC90ZXJtaW5mbyBzb3VyY2Ugb24gYSBzaW5nbGUgbGluZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSAmbGRxdW87PGNvZGU+LUs8L2NvZGU+JnJkcXVvOyBvcHRpb24gcHJvdmlkZXMgc3RyaWN0ZXIKKyAgICAgIEJTRC1jb21wYXRpYmlsaXR5IGZvciB0ZXJtY2FwIG91dHB1dC48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5PdGhlciB1c2VyLXZpc2libGUgaW1wcm92ZW1lbnRzIGFuZCBuZXcgZmVhdHVyZXMgaW5jbHVkZTo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkICZsZHF1bzs8Y29kZT4tRDwvY29kZT4mcmRxdW87IG9wdGlvbiB0byB0aWMgYW5kCisgICAgICBpbmZvY21wLCB0byBzaG93IHRoZSBkYXRhYmFzZSBsb2NhdGlvbnMgdGhhdCBpdCBjb3VsZAorICAgICAgdXNlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgJmxkcXVvOzxjb2RlPi1zPC9jb2RlPiZyZHF1bzsgb3B0aW9uIHRvIHRvZSwgdG8gc29ydAorICAgICAgaXRzIG91dHB1dC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmV4dGVuZGVkICZsZHF1bzs8Y29kZT4tYzwvY29kZT4mcmRxdW87IGFuZAorICAgICAgJmxkcXVvOzxjb2RlPi1uPC9jb2RlPiZyZHF1bzsgb3B0aW9ucyBvZiBpbmZvY21wIHRvIGFsbG93CisgICAgICBjb21wYXJpbmcgbW9yZSB0aGFuIHR3byBlbnRyaWVzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgdG9lJ3MgcmVwb3J0IHdoZW4gJmxkcXVvOzxjb2RlPi1hPC9jb2RlPiZyZHF1bzsKKyAgICAgIGFuZCAmbGRxdW87PGNvZGU+LXM8L2NvZGU+JnJkcXVvOyBvcHRpb25zIGFyZSBjb21iaW5lZCwgdG8KKyAgICAgIGFkZCBhIGNvbHVtbiBzaG93aW5nIHdoaWNoIGVudHJpZXMgYmVsb25nIHRvIGEgZ2l2ZW4KKyAgICAgIGRhdGFiYXNlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgdGhlIGNsZWFyIHByb2dyYW0gdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlCisgICAgICAmbGRxdW87PGNvZGU+RTM8L2NvZGU+JnJkcXVvOyBleHRlbmRlZCBjYXBhYmlsaXR5IHRvIGNsZWFyCisgICAgICB0aGUgdGVybWluYWwncyBzY3JvbGxiYWNrIGJ1ZmZlci48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDQ+PGEgbmFtZT0iaDQtZXhhbXBsZXMiIGlkPSJoNC1leGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9oND4KKworICA8cD5BbG9uZyB3aXRoIHRoZSBsaWJyYXJ5IGFuZCB1dGlsaXRpZXMsIG1hbnkgaW1wcm92ZW1lbnRzIHdlcmUKKyAgbWFkZSB0byB0aGUgPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbCI+bmN1cnNlcy1leGFtcGxlczwvYT4uCisgIFNvbWUgd2VyZSBtYWRlIHRvIGFsbG93IGJ1aWxkaW5nIChhbmQgY29tcGFyaXNvbi10ZXN0aW5nKSBhZ2FpbnN0CisgIE5ldEJTRCBjdXJzZXMgYW5kIFBEQ3Vyc2VzLiBCb3RoIGxhY2sgc29tZSBvZiB0aGUgWC9PcGVuIEN1cnNlcworICBmZWF0dXJlcywgbmVjZXNzaXRhdGluZyBjdXN0b21pemF0aW9uLiBCdXQgdGhpcyBhY3Rpdml0eSB3YXMKKyAgdXNlZnVsIGJlY2F1c2UgaXQgc2hvd2VkIHNvbWUgcmVtYWluaW5nIHBlcmZvcm1hbmNlIGlzc3VlcyAod2hpY2gKKyAgaGF2ZSBiZWVuIHJlc29sdmVkIGluIHRoaXMgcmVsZWFzZSkuPC9wPgorCisgIDxwPlRoZXNlIGNoYW5nZXMgd2VyZSBtYWRlIHRvIHZlcmlmeSBjb21wYXRpYmlsaXR5IG9yIGNvbXBhcmUKKyAgcGVyZm9ybWFuY2Ugb2YgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT46PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5tYWRlIHdvcmthcm91bmRzIGZvciBjb21waWxpbmcgdGVzdC1wcm9ncmFtcyB3aXRoIE5ldEJTRAorICAgICAgY3Vyc2VzLCB0aG91Z2ggaXQgbGFja3Mgc29tZSBjb21tb24gZnVuY3Rpb25zIHN1Y2ggYXMKKyAgICAgIDxhIGhyZWY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy11c2VfZW52Ij4KKyAgICAgIHVzZV9lbnY8L2E+LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgZG90c190ZXJtY2FwIHRlc3QtcHJvZ3JhbTwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgZG90c19jdXJzZXMgdGVzdC1wcm9ncmFtLCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZQorICAgICAgbG93LWxldmVsIGV4YW1wbGVzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgdGVzdF9zZXR1cHRlcm0gdGVzdC1wcm9yYW0gdG8gZGVtb25zdHJhdGUKKyAgICAgIG5vcm1hbC9lcnJvciByZXR1cm5zIGZyb20gdGhlIHNldHVwdGVybSBhbmQgcmVzdGFydHRlcm0KKyAgICAgIGZ1bmN0aW9ucy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkICZsZHF1bzs8Y29kZT4tZDwvY29kZT4mcmRxdW87LAorICAgICAgJmxkcXVvOzxjb2RlPi1lPC9jb2RlPiZyZHF1bzsgYW5kCisgICAgICAmbGRxdW87PGNvZGU+LXE8L2NvZGU+JnJkcXVvOyBvcHRpb25zIHRvIHRoZSBkZW1vX3Rlcm1pbmZvCisgICAgICBhbmQgZGVtb190ZXJtY2FwIHRlc3QtcHJvZ3JhbXMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCAmbGRxdW87PGNvZGU+LXk8L2NvZGU+JnJkcXVvOyBvcHRpb24gdG8gZGVtb190ZXJtY2FwCisgICAgICBhbmQgdGVzdC9kZW1vX3Rlcm1pbmZvIHRlc3QtcHJvZ3JhbXMgdG8gZGVtb25zdHJhdGUgYmVoYXZpb3IKKyAgICAgIHdpdGgvd2l0aG91dCBleHRlbmRlZCBjYXBhYmlsaXRpZXMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCBkZW1vX3Rlcm1jYXAgYW5kIGRlbW9fdGVybWluZm8gdGVzdC1wcm9ncmFtcyB0bworICAgICAgbWFrZSB0aGVpciBvcHRpb25zIG1vcmUgZGlyZWN0bHkgY29tcGFyYWJsZSwgYW5kIGFkZAorICAgICAgJmxkcXVvOzxjb2RlPi1pPC9jb2RlPiZyZHF1bzsgb3B0aW9uIHRvIHNwZWNpZnkgYSB0ZXJtaW5hbAorICAgICAgZGVzY3JpcHRpb24gZmlsZW5hbWUgdG8gcGFyc2UgZm9yIG5hbWVzIHRvIGxvb2t1cC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnJld3JvdGUgdGhlIHRlc3RzIGZvciA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sI2gzLWRlcndpbiI+CisgICAgICBtdmRlcndpbjwvYT4gYW5kIHRlc3QgZm9yIHJlY3Vyc2l2ZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sI2gzLW12d2luIj4KKyAgICAgIG12d2luPC9hPiBpbiB0aGUgbW92ZXdpbmRvdyB0ZXN0LXByb2dyYW0uPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gaGVscCB3aXRoIHRoZSBNaW5HVyBwb3J0OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgdGVzdC1zY3JlZW5zIHRvIHRoZSBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSB0byBzaG93CisgICAgICAyNTYtY2hhcmFjdGVycyBhdCBhIHRpbWUsIHRvIGhlbHAgd2l0aCBNaW5HVyBwb3J0LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgdGhlIHZpZXcgdGVzdC1wcm9ncmFtIHRvIGxvYWQgVVRGLTggd2hlbiBidWlsdAorICAgICAgd2l0aCBNaW5HVyBieSB1c2luZyByZWd1bGFyIHdpbjMyIEFQSSBiZWNhdXNlIHRoZSBNaW5HVworICAgICAgZnVuY3Rpb25zIG1ibGVuIGFuZCBtYnRvd2MgZG8gbm90IHdvcmsuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCAmbGRxdW87PGNvZGU+LXM8L2NvZGU+JnJkcXVvOyBvcHRpb24gdG8gdGhlIHZpZXcKKyAgICAgIHRlc3QtcHJvZ3JhbSB0byBhbGxvdyBpdCB0byBzdGFydCBpbiBzaW5nbGUtc3RlcCBtb2RlLAorICAgICAgcmVkdWNpbmcgc2l6ZSBvZiB0cmFjZSBmaWxlcyB3aGVuIGl0IGlzIHVzZWQgZm9yIGRlYnVnZ2luZworICAgICAgTWluR1cgY2hhbmdlcy48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGVzZSBjaGFuZ2VzIHdlcmUgbWFkZSB0byB2ZXJpZnkgbmV3IGV4dGVuc2lvbnMgaW4gPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vZm9ybV9kcml2ZXIuM3guaHRtbCNoMy1mb3JtX2RyaXZlcl93Ij4KKyAgICAgIGZvcm1fZHJpdmVyX3c8L2E+IGVudHJ5cG9pbnQgdG8gd2lkZS1jaGFyYWN0ZXIgZm9ybXMgbGlicmFyeSwKKyAgICAgIGFzIHdlbGwgYXMgZm9ybV9kcml2ZXJfdyB0ZXN0LXByb2dyYW0uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSdzIGIvQiB0ZXN0cyB0byBkaXNwbGF5IGxpbmVzCisgICAgICBvbmx5IGZvciB0aGUgYXR0cmlidXRlcyB3aGljaCBhIGdpdmVuIHRlcm1pbmFsIHN1cHBvcnRzLCB0bworICAgICAgbWFrZSByb29tIGZvciBhbiBpdGFsaWNzIHRlc3QuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSwgYWRkaW5nCisgICAgICAmbGRxdW87PGNvZGU+LUU8L2NvZGU+JnJkcXVvOyBhbmQKKyAgICAgICZsZHF1bzs8Y29kZT4tVDwvY29kZT4mcmRxdW87IG9wdGlvbnMgdG8gZGVtb25zdHJhdGUgdXNlX2VudgorICAgICAgdmVyc3VzIHVzZV90aW9jdGwuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSdzIGMvQyB0ZXN0cyB0byBjeWNsZSB0aHJvdWdoCisgICAgICBzdWJzZXRzIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sb3JzLCB0byBiZXR0ZXIgaWxsdXN0cmF0ZQorICAgICAgOC8xNi84OC8yNTYtY29sb3JzIGJ5IHByb3ZpZGluZyBkaXJlY3RseSBjb21wYXJhYmxlCisgICAgICBzY3JlZW5zLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgdGhlIG5jdXJzZXMgdGVzdC1wcm9ncmFtIHRvIGFsc28gc2hvdyBwb3NpdGlvbgorICAgICAgcmVwb3J0cyBpbiAnYScgdGVzdC48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGVzZSBjaGFuZ2VzIHdlcmUgbWFkZSB0byBtYWtlIHRoZSBleGFtcGxlcyBtb3JlIHVzZWZ1bDo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHNjcmlwdHMgZm9yIGJ1aWxkaW5nIGRwa2cgYW5kIHJwbSB0ZXN0LXBhY2thZ2VzPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCB0aGUgaGFub2kgdGVzdC1wcm9ncmFtIHRvIHNob3cgdGhlIG1pbmltdW0gbnVtYmVyCisgICAgICBvZiBtb3ZlcyBwb3NzaWJsZSBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiB0aWxlcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRoZSBrbmlnaHQgdGVzdC1wcm9ncmFtIHRvIHNob3cgdGhlIG51bWJlciBvZgorICAgICAgY2hvaWNlcyBwb3NzaWJsZSBmb3IgZWFjaCBwb3NpdGlvbiBpbiBhdXRvbW92ZSBvcHRpb24sIGUuZy4sCisgICAgICB0byBhbGxvdyB1c2VyIHRvIGZvbGxvdyBXYXJuc2RvcmZmJ3MgcnVsZSB0byBzb2x2ZSB0aGUKKyAgICAgIHB1enpsZS48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDM+PGEgbmFtZT0iaDMtZGF0YWJhc2UiIGlkPSJoMy1kYXRhYmFzZSI+VGVybWluYWwKKyAgZGF0YWJhc2U8L2E+PC9oMz4KKworICA8cD5UaGlzIHJlbGVhc2UgcHJvdmlkZXMgaW1wcm92ZW1lbnRzIHRvIHRpYydzCisgICZsZHF1bzs8Y29kZT4tYzwvY29kZT4mcmRxdW87IGNoZWNraW5nIG9wdGlvbiwgd2hpY2ggd2FzIHVzZWQgZm9yCisgIGV4YW1wbGUgdG88L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPm1ha2UgPGNvZGU+c2dyPC9jb2RlPiBpbiBzZXZlcmFsIGVudHJpZXMgYWdyZWUgd2l0aCBvdGhlcgorICAgICAgY2Fwcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmNvcnJlY3QgcGFkZGluZyBpbiBzb21lIGVudHJpZXMgd2hlcmUgZWFybGllciB2ZXJzaW9ucyBoYWQKKyAgICAgIG1pc2NvdW50ZWQgdGhlIG51bWJlciBvZiBvY3RhbCBkaWdpdHMuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlcmUgYXJlIHNldmVyYWwgbmV3IHRlcm1pbmFsIGRlc2NyaXB0aW9uczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0b2MtX01fTF9UX0VfUl9NIj4KKyAgICBtbHRlcm08L2E+IGlzIG5vdyBhbGlhc2VkIHRvIG1sdGVybTM8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy1uc3Rlcm0iPgorICAgIG5zdGVybTwvYT4gaXMgbm93IGRlcml2ZWQgZnJvbSBuc3Rlcm0tMjU2Y29sb3I8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy1wdXR0eS1zY28iPgorICAgIHB1dHR5LXNjbzwvYT48L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy10ZWtlbiI+CisgICAgdGVrZW48L2E+IGlzIEZyZWVCU0QncyAieHRlcm0iIGNvbnNvbGUuPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0b2MtX1RfRV9SX01fSV9OX0FfVF9PX1IiPgorICAgIHRlcm1pbmF0b3I8L2E+PC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0b2MtX1RfRV9SX01fSV9OX09fTF9PX0dfWSI+CisgICAgdGVybWlub2xvZ3k8L2E+PC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdG11eCI+CisgICAgdG11eDwvYT4gaXMgZGVyaXZlZCBmcm9tIHNjcmVlbi48L2xpPgorCisgICAgPGxpPnNldmVyYWwgc2NyZWVuLlhYWCBlbnRyaWVzIHN1cHBvcnQgdGhlIHJlc3BlY3RpdmUKKyAgICB2YXJpYXRpb25zIGZvciAyNTYgY29sb3JzLjwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9TX0lfTV9QX0xfRV9UX0VfUl9NIj4KKyAgICBzaW1wbGV0ZXJtPC9hPiBpcyBub3cgMC41PC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnRlIj4KKyAgICB2dGU8L2E+IGlzIGFsaWFzZWQgdG8gdnRlLTIwMTI8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy12dDUyMGFuc2kiPgorICAgIHZ0NTIwYW5zaTwvYT48L2xpPgorICA8L3VsPgorCisgIDxwPkEgZmV3IGVudHJpZXMgdXNlIGV4dGVuc2lvbnMgKHVzZXItZGVmaW5lZCB0ZXJtaW5hbAorICBjYXBhYmlsaXRpZXMpOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+PGNvZGU+RTM8L2NvZGU+LCB1c2VkIGluIGxpbnV4LCBwdXR0eSBhbmQgeHRlcm0tYmFzaWMgaXMKKyAgICAgIHRlc3RlZCBpbiB0aGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vYWVyaWUuamV4aXVtLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2xlYXIuMS5odG1sIj5jbGVhcjwvYT4KKyAgICAgIHByb2dyYW0gdG8gZXJhc2UgYSB0ZXJtaW5hbCdzIHNjcm9sbGJhY2suPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD48Y29kZT5UUzwvY29kZT4gaXMgdXNlZCBpbiB0aGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm1fc2wiPgorICAgICAgeHRlcm0rc2w8L2E+IGJ1aWxkaW5nIGJsb2NrIHRvIGhlbHAgZGVwcmVjYXRlIHRoZSBtaXN1c2Ugb2YKKyAgICAgIDxjb2RlPnRzbDwvY29kZT4gZm9yIHh0ZXJtJ3MgdGl0bGUtc3RyaW5nLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGNvZGU+WFQ8L2NvZGU+IGlzIHVzZWQgaW4gc29tZSB0ZXJtaW5mbyBlbnRyaWVzIHRvCisgICAgICBpbXByb3ZlIHVzZWZ1bG5lc3MgZm9yIG90aGVyIGFwcGxpY2F0aW9ucyB0aGFuIHNjcmVlbiwgd2hpY2gKKyAgICAgIHdvdWxkIGxpa2UgdG8gcHJldGVuZCB0aGF0IHh0ZXJtJ3MgdGl0bGUgaXMgYQorICAgICAgc3RhdHVzLWxpbmUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD48Y29kZT54bTwvY29kZT4gaXMgdXNlZCBpbiBleGFtcGxlcyA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy14dGVybS0xMDA1Ij4KKyAgICAgIHh0ZXJtLTEwMDU8L2E+IGFuZCA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy14dGVybS0xMDA2Ij4KKyAgICAgIHh0ZXJtLTEwMDY8L2E+IHRvIGlsbHVzdHJhdGUgYSB3YXkgdG8gbWFrZSBtb3VzZSBoYW5kbGluZworICAgICAgbW9yZSBnZW5lcmFsPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+QSBmZXcgdGVybWluYWxzIHN1cHBvcnQgaXRhbGljcyBhbmQvb3IgZGltIGNhcGFiaWxpdGllcy4gSW4KKyAgcGFydGljdWxhciwgc2NyZWVuIGRvZXMgbm90LiBEb2N1bWVudGVkIHRoYXQsIGFuZCBhY2NvbW1vZGF0ZWQKKyAgdGhlIHRlcm1pbmFscyB3aGVyZSB0aGlzIGZlYXR1cmUgd29ya3Mgd2l0aCB0aGUKKyAgPGNvZGU+QV9JVEFMSUM8L2NvZGU+IGV4dGVuc2lvbi48L3A+CisKKyAgPHVsPgorICAgIDxsaT5rb25zb2xlLCBtbHRlcm0zIChpdGFsaWNzKTwvbGk+CisKKyAgICA8bGk+bnN0ZXJtIChkaW0pPC9saT4KKworICAgIDxsaT5zY3JlZW4gKGRpbSk8L2xpPgorCisgICAgPGxpPnZ0ZSAoZGltLCBpdGFsaWNzKTwvbGk+CisKKyAgICA8bGk+eHRlcm0gKGRpbSwgaXRhbGljcyk8L2xpPgorICA8L3VsPgorCisgIDxoMz48YSBuYW1lPSJoMy1kb2N1bWVudGF0aW9uIiBpZD0KKyAgImgzLWRvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9oMz4KKworICA8cD5BcyB1c3VhbCwgdGhpcyByZWxlYXNlPC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5pbXByb3ZlcyBkb2N1bWVudGF0aW9uIGJ5IGRlc2NyaWJpbmcgbmV3IGZlYXR1cmVzLDwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YXR0ZW1wdHMgdG8gaW1wcm92ZSB0aGUgZGVzY3JpcHRpb24gb2YgZmVhdHVyZXMgd2hpY2gKKyAgICAgIHVzZXJzIGhhdmUgZm91bmQgY29uZnVzaW5nPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5maWxscyBpbiBvdmVybG9va2VkIGRlc2NyaXB0aW9ucyBvZiBmZWF0dXJlcyB3aGljaCB3ZXJlCisgICAgICBkZXNjcmliZWQgaW4gdGhlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sIj5ORVdTPC9hPiBmaWxlCisgICAgICBidXQgdHJlYXRlZCBza2V0Y2hpbHkgaW4gbWFudWFsIHBhZ2VzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkluIGFkZGl0aW9uLCB0aGUgbWVjaGFuaXNtIGZvciBwcm9kdWNpbmcgSFRNTCB2ZXJzaW9ucyBvZiB0aGUKKyAgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBpbXByb3ZlZDo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPnVzZSBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+CisgICAgICB0byBnZW5lcmF0ZSBodG1sIG1hbnBhZ2VzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+cmVnZW5lcmF0ZWQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwiPgorICAgICAgTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5odG1sPC9hPiB0byBmaXggc29tZSBvZiB0aGUgYnJva2VuCisgICAgICBodG1sIGVtaXR0ZWQgYnkgZG9jYm9vay48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDM+PGEgbmFtZT0iaDMtYnVnLWZpeGVzIiBpZD0iaDMtYnVnLWZpeGVzIj5JbnRlcmVzdGluZworICBidWctZml4ZXM8L2E+PC9oMz4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+QWRhOTUgYmluZGluZzo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPm1vZGlmeSBtYWtlZmlsZSBydWxlcyB0byBlbnN1cmUgdGhhdCB0aGUgUElDIG9wdGlvbiBpcworICAgICAgICAgIG5vdCB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGF0aWMgbGlicmFyeTwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+bWFrZSBBZGE5NSBidWlsZC1maXggZm9yIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBzdWNoCisgICAgICAgICAgYXMgc3BhcmMuIFRoaXMgdW5kb2VzIG9uZSBvZiB0aGUgZml4ZXMgZnJvbSA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDIwMTEwMzE5Ij4KKyAgICAgICAgICAyMDExMDMxOTwvYT4sIHdoaWNoIGFkZGVkIGFuCisgICAgICAgICAgJmxkcXVvOzxjb2RlPlVudXNlZDwvY29kZT4mcmRxdW87IG1lbWJlciB0bworICAgICAgICAgIHJlcHJlc2VudGF0aW9uIGNsYXVzZXMsIHJlcGxhY2luZyB0aGF0IHdpdGggcHJhZ21hcyB0bworICAgICAgICAgIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IHVudXNlZCBiaXRzLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkNvbG9yIGFuZCBhdHRyaWJ1dGVzOjwvcD4KKworICAgICAgPHVsPgorICAgICAgICA8bGk+CisgICAgICAgICAgPHA+cGFyZW50aGVzaXplIHBhcmFtZXRlciBvZiA8Y29kZT5DT0xPUl9QQUlSPC9jb2RlPiBhbmQKKyAgICAgICAgICA8Y29kZT5QQUlSX05VTUJFUjwvY29kZT4gaW4gY3Vyc2VzLmggaW4gY2FzZSBpdCBoYXBwZW5zCisgICAgICAgICAgdG8gYmUgYSBjb21tYS1leHByZXNzaW9uLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+aW1wcm92ZSA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDIwMDIxMjIxIj4KKyAgICAgICAgICAyMDAyMTIyMTwvYT4gd29ya2Fyb3VuZCBmb3IgYnJva2VuIGFjcywgaGFuZGxpbmcgYSBjYXNlCisgICAgICAgICAgd2hlcmUgdGhhdCBBQ1NfPGVtPnh4eDwvZW0+IGNoYXJhY3RlciBpcyBub3QgaW4gdGhlCisgICAgICAgICAgPGNvZGU+YWNzYzwvY29kZT4gc3RyaW5nIGJ1dCB0aGVyZSBpcyBhIGtub3duCisgICAgICAgICAgd2lkZS1jaGFyYWN0ZXIgd2hpY2ggY2FuIGJlIHVzZWQuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfY29sb3IuM3guaHRtbCNoMy1Sb3V0aW5lLURlc2NyaXB0aW9ucyI+CisgICAgICAgICAgaW5pdF9wYWlyPC9hPiB0byBhY2NlcHQgLTEncyBmb3IgY29sb3IgdmFsdWUgYWZ0ZXIKKyAgICAgICAgICA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+CisgICAgICAgICAgYXNzdW1lX2RlZmF1bHRfY29sb3JzPC9hPiBoYXMgYmVlbiBjYWxsZWQuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5hZGQgYSBjaGVjayBpbiA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19jb2xvci4zeC5odG1sI2gzLVJvdXRpbmUtRGVzY3JpcHRpb25zIj4KKyAgICAgICAgICBzdGFydF9jb2xvcjwvYT4gdG8gbGltaXQgY29sb3ItcGFpcnMgdG8gMjU2IHdoZW4gZXh0ZW5kZWQKKyAgICAgICAgICBjb2xvcnMgYXJlIG5vdCBzdXBwb3J0ZWQuPC9wPgorICAgICAgICA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+UmVzaXppbmcgdGhlIHNjcmVlbjo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnByb3BhZ2F0ZSBlcnJvci1yZXR1cm5zIGZyb20gd3Jlc2l6ZSwgaS5lLiwgdGhlCisgICAgICAgICAgaW50ZXJuYWwgaW5jcmVhc2Vfc2l6ZSBhbmQgZGVjcmVhc2Vfc2l6ZSBmdW5jdGlvbnMKKyAgICAgICAgICB0aHJvdWdoIDxhIGhyZWY9CisgICAgICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9yZXNpemV0ZXJtLjN4Lmh0bWwiPgorICAgICAgICAgIHJlc2l6ZV90ZXJtPC9hPi48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmFkZCBjaGVjayBmb3IgemVyby9uZWdhdGl2ZSBkaW1lbnNpb25zIGZvcgorICAgICAgICAgIDxjb2RlPnJlc2l6ZXRlcm08L2NvZGU+IGFuZCA8Y29kZT5yZXNpemVfdGVybTwvY29kZT4uPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgPGNvZGU+cmVzaXpldGVybTwvY29kZT4gdG8gYWx3YXlzIHB1c2ggYQorICAgICAgICAgIDxjb2RlPktFWV9SRVNJWkU8L2NvZGU+IG9udG8gdGhlIGZpZm8sIGV2ZW4gaWYgc2NyZWVuc2l6ZQorICAgICAgICAgIGlzIHVuY2hhbmdlZC4gTW9kaWZ5IGxpYnJhcnkgdG8gcHVzaCBhCisgICAgICAgICAgPGNvZGU+S0VZX1JFU0laRTwvY29kZT4gaWYgdGhlcmUgd2FzIGEgU0lHV0lOQ0gsIGV2ZW4gaWYKKyAgICAgICAgICBpdCBkb2VzIG5vdCBjYWxsIDxjb2RlPnJlc2l6ZXRlcm08L2NvZGU+KS4gVGhlc2UgY2hhbmdlcworICAgICAgICAgIGVsaW1pbmF0ZSB0aGUgY2FzZSB3aGVyZSBhIFNJR1dJTkNIIGlzIHJlY2VpdmVkLCBidXQgRVJSCisgICAgICAgICAgaXMgcmV0dXJuZWQgZnJvbSA8Y29kZT53Z2V0Y2g8L2NvZGU+IG9yCisgICAgICAgICAgPGNvZGU+d2dldG5zdHI8L2NvZGU+IGJlY2F1c2UgdGhlIHNjcmVlbiBkaW1lbnNpb25zIGRpZAorICAgICAgICAgIG5vdCBjaGFuZ2UuPC9wPgorICAgICAgICA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+TG93LWxldmVsIGludGVyZmFjZXM8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmZpeCBhbiBvbGQgYnVnIGluIHRoZSB0ZXJtY2FwIGVtdWxhdGlvbjsKKyAgICAgICAgICAmbGRxdW87PGNvZGU+JWk8L2NvZGU+JnJkcXVvOyB3YXMgaWdub3JlZCBpbgorICAgICAgICAgIDxjb2RlPnRwYXJtPC9jb2RlPiBiZWNhdXNlIHRoZSBwYXJhbWV0ZXJzIHRvIGJlCisgICAgICAgICAgaW5jcmVtZW50ZWQgd2VyZSBhbHJlYWR5IG9uIHRoZSBpbnRlcm5hbCBzdGFjay48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmNoYW5nZSAmbGRxdW87PGNvZGU+JWw8L2NvZGU+JnJkcXVvOyBiZWhhdmlvciBpbiB0cGFybQorICAgICAgICAgIHRvIHB1c2ggdGhlIHN0cmluZyBsZW5ndGggb250byB0aGUgc3RhY2sgcmF0aGVyIHRoYW4KKyAgICAgICAgICBzYXZpbmcgdGhlIGZvcm1hdHRlZCBsZW5ndGggaW50byB0aGUgb3V0cHV0IGJ1ZmZlci48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPm1vZGlmeSBuYW1lLWNvbXBhcmlzb24gZm9yIHRnZXRzdHIsIGV0Yy4sIHRvCisgICAgICAgICAgYWNjb21tb2RhdGUgbGVnYWN5IGFwcGxpY2F0aW9ucyBhcyB3ZWxsIGFzIHRvIGltcHJvdmUKKyAgICAgICAgICBjb21wYXRiaWxpdHkgd2l0aCBCU0QgNC4yIHRlcm1jYXAgaW1wbGVtZW50YXRpb25zIChzZWUKKyAgICAgICAgICBub3RlIGZvciA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDcyNSI+OTgwNzI1PC9hPikuPC9wPgorICAgICAgICA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorCisgICAgPGxpPkhpZ2gtbGV2ZWwgaW50ZXJmYWNlcworCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgaW50ZXJuYWwgcmVjdXJzaW9uIGluIDxjb2RlPndnZXRjaDwvY29kZT4gd2hpY2gKKyAgICAgICAgICBoYW5kbGVzIGNvb2tlZCBtb2RlIHRvIGNoZWNrIGlmIHRoZSBjYWxsIHRvCisgICAgICAgICAgPGNvZGU+d2dldG5zdHI8L2NvZGU+IHJldHVybmVkIGFuIGVycm9yLiBUaGlzIGNhbiBoYXBwZW4KKyAgICAgICAgICB3aGVuIGJvdGggPGNvZGU+bm9jYnJlYWs8L2NvZGU+IGFuZCA8Y29kZT5ub2RlbGF5PC9jb2RlPgorICAgICAgICAgIGFyZSBzZXQsIGZvciBpbnN0YW5jZSAoc2VlIG5vdGUgZm9yIDxhIGhyZWY9CisgICAgICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0OTYwNDE4Ij45NjA0MTg8L2E+KS48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmFkZCBhIGNoZWNrIGluIGludGVybmFsIGZ1bmN0aW9uCisgICAgICAgICAgPGNvZGU+d2FkZGNoX25vc3luYzwvY29kZT4gdG8gZW5zdXJlIHRoYXQgdGFiIGNoYXJhY3RlcnMKKyAgICAgICAgICBhcmUgdHJlYXRlZCBhcyBjb250cm9sIGNoYXJhY3RlcnM7IHNvbWUgYnJva2VuIGxvY2FsZXMKKyAgICAgICAgICBjbGFpbSB0aGV5IGFyZSBwcmludGFibGUuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgbWVudSBsaWJyYXJ5IHRvIGVuc3VyZSB0aGF0IGEgbWVudSdzIHRvcC1yb3cgaXMKKyAgICAgICAgICBhZGp1c3RlZCBhcyBuZWVkZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgaXRlbSBpcyBvbgorICAgICAgICAgIHRoZSBzY3JlZW48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmZpeCBzcGVjaWFsIGNhc2Ugd2hlcmUgZG91YmxlLXdpZHRoIGNoYXJhY3RlcgorICAgICAgICAgIG92ZXJ3cml0ZXMgYSBzaW5nbGUtIHdpZHRoIGNoYXJhY3RlciBpbiB0aGUgZmlyc3QKKyAgICAgICAgICBjb2x1bW4uPC9wPgorICAgICAgICA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoMz48YSBuYW1lPSJoMy1jb25maWctY29uZmlnIiBpZD0KKyAgImgzLWNvbmZpZy1jb25maWciPkNvbmZpZ3VyYXRpb24gY2hhbmdlczwvYT48L2gzPgorCisgIDxoND48YSBuYW1lPSJoNC1jb25maWctbWFqb3IiIGlkPSJoNC1jb25maWctbWFqb3IiPk1ham9yCisgIGNoYW5nZXM8L2E+PC9oND4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gNi4wIGNvbmZpZ3VyZSBzY3JpcHQKKyAgbWFrZXMgY2hhbmdlcyB0byB0aGUgPGVtPmRlZmF1bHQ8L2VtPiB2YWx1ZSBvZiBzZXZlcmFsIGNvbmZpZ3VyZQorICBvcHRpb25zLCBkZXBlbmRpbmcgb24gdGhlIDxjb2RlPi0td2l0aC1hYmktdmVyc2lvbjwvY29kZT4gb3B0aW9uCisgIChpLmUuLCB3aGV0aGVyIGl0cyB2YWx1ZSBpcyAmbGRxdW87NSZyZHF1bzsgb3IKKyAgJmxkcXVvOzYmcmRxdW87KTo8L3A+CisKKyAgPGRsPgorICAgIDxkdD48Y29kZT4tLWVuYWJsZS1jb25zdDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+RmVhdHVyZSBpbnRyb2R1Y2VkIGluIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3Q5NzA0MDUiPjk3MDQwNTwvYT4KKyAgICAgIHN1cHBvcnRzIHRoZSB1c2Ugb2YgPGNvZGU+Y29uc3Q8L2NvZGU+IHdoZXJlIFgvT3BlbiBDdXJzZXMKKyAgICAgIHNob3VsZCBoYXZlLCBidXQgZGlkIG5vdC4gTmV0QlNEIGN1cnNlcyBkb2VzIHNvbWV0aGluZworICAgICAgc2ltaWxhciB3aXRoIDxjb2RlPmNvbnN0PC9jb2RlPi48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWVuYWJsZS1leHQtY29sb3JzPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5FeHRlbmRzIHRoZSA8Y29kZT5jY2hhcl90PC9jb2RlPiBzdHJ1Y3R1cmUgdG8gYWxsb3cgbW9yZQorICAgICAgdGhhbiAxNiBjb2xvcnMgdG8gYmUgZW5jb2RlZC4gVGhpcyBhcHBsaWVzIG9ubHkgdG8gdGhlCisgICAgICB3aWRlLWNoYXJhY3RlciAoPGNvZGU+LS1lbmFibGUtd2lkZWM8L2NvZGU+KQorICAgICAgY29uZmlndXJhdGlvbi48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWVuYWJsZS1leHQtbW91c2U8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPk1vZGlmaWVzIHRoZSBlbmNvZGluZyBvZiBtb3VzZSBzdGF0ZSB0byBtYWtlIHJvb20gZm9yIGEKKyAgICAgIDV0aCBtb3VzZSBidXR0b24uIFRoYXQgYWxsb3dzIG9uZSB0byB1c2UgbmN1cnNlcyB3aXRoIGEgd2hlZWwKKyAgICAgIG1vdXNlIHdpdGggeHRlcm0gb3Igc2ltaWxhciBYIHRlcm1pbmFsIGVtdWxhdG9ycy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWVuYWJsZS1leHQtcHV0d2luPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5Nb2RpZmllcyB0aGUgZmlsZS1mb3JtYXQgd3JpdHRlbiBieSA8Y29kZT5wdXR3aW48L2NvZGU+IHRvCisgICAgICB1c2UgcHJpbnRhYmxlIHRleHQgcmF0aGVyIHRoYW4gYmluYXJ5IGZpbGVzLCBhbGxvd2luZworICAgICAgPGNvZGU+Z2V0d2luPC9jb2RlPiB0byByZWFkIHNjcmVlbiBkdW1wcyB3cml0dGVuIGJ5CisgICAgICBkaWZmZXJlbnRseS1jb25maWd1cmVkIG5jdXJzZXMgbGlicmFyaWVzLiBUaGUgZXh0ZW5kZWQKKyAgICAgIDxjb2RlPmdldHdpbjwvY29kZT4gY2FuIHN0aWxsIHJlYWQgYmluYXJ5IHNjcmVlbiBkdW1wcyBmcm9tCisgICAgICB0aGUgPGVtPnNhbWU8L2VtPiBjb25maWd1cmF0aW9uIG9mIG5jdXJzZXMuIFRoaXMgZG9lcyBub3QKKyAgICAgIGNoYW5nZSB0aGUgQUJJICh0aGUgYmluYXJ5IGludGVyZmFjZSBzZWVuIGJ5IGNhbGxpbmcKKyAgICAgIGFwcGxpY2F0aW9ucykuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1lbmFibGUtaW50ZXJvcDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+TW9kaWZpZXMgdGhlIDxjb2RlPkZJRUxEVFlQRTwvY29kZT4gc3RydWN0dXJlIHVzZWQgZm9yIHRoZQorICAgICAgZm9ybSBsaWJyYXJ5IHRvIG1ha2UgaXQgbW9yZSBnZW5lcmljLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0tZW5hYmxlLWxwNjQ8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPkFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBkZWZpbmUgPGNvZGU+X0xQNjQ8L2NvZGU+IHRvCisgICAgICBkZWNsYXJlIDxjb2RlPmNodHlwZTwvY29kZT4gYW5kIDxjb2RlPm1tYXNrX3Q8L2NvZGU+IGFzCisgICAgICBzaW1wbHkgJmxkcXVvOzxjb2RlPnVuc2lnbmVkPC9jb2RlPiZyZHF1bzsgcmF0aGVyIHRoYW4gdGhlCisgICAgICBjb25maWd1cmVkIHR5cGVzIHVzaW5nIHRoZSA8Y29kZT4tLXdpdGgtY2h0eXBlPC9jb2RlPiBhbmQKKyAgICAgIDxjb2RlPi0td2l0aC1tbWFza190PC9jb2RlPiBvcHRpb25zLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0tZW5hYmxlLXNwLWZ1bmNzPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5Db21waWxlLWluIHN1cHBvcnQgZm9yIGV4dGVuZGVkIGZ1bmN0aW9ucyB3aGljaCBhY2NlcHQgYQorICAgICAgU0NSRUVOIHBvaW50ZXIsIHJlZHVjaW5nIHRoZSBuZWVkIGZvciBqdWdnbGluZyB0aGUgZ2xvYmFsIFNQCisgICAgICB2YWx1ZSB3aXRoIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sI2gzLXNldF90ZXJtIj4KKyAgICAgIHNldF90ZXJtPC9hPiBhbmQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtZGVsc2NyZWVuIj4KKyAgICAgIGRlbHNjcmVlbjwvYT4uPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS13aXRoLWNodHlwZT11aW50MzJfdDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+TWFrZXMgPGNvZGU+Y2h0eXBlPC9jb2RlPiBleHBsaWNpdGx5IGEgMzItYml0IHVuc2lnbmVkCisgICAgICB2YWx1ZS48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLXdpdGgtbW1hc2tfdD11aW50MzJfdDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+TWFrZXMgPGNvZGU+bW1hc2tfdDwvY29kZT4gZXhwbGljaXRseSBhIDMyLWJpdCB1bnNpZ25lZAorICAgICAgdmFsdWUuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS13aXRoLXRwYXJtLWFyZz1pbnRwdHJfdDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+WC9PcGVuIEN1cnNlcyBkZWNsYXJlcyA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtRm9ybWF0dGluZy1PdXRwdXQiPgorICAgICAgdHBhcm08L2E+IHVzaW5nIDxjb2RlPmxvbmc8L2NvZGU+IGZvciBlYWNoIG9mIHRoZSBwYXJhbWV0ZXJzCisgICAgICBhc2lkZSBmcm9tIHRoZSBmb3JtYXR0aW5nIHN0cmluZywgcHJlc3VtaW5nIHRoYXQKKyAgICAgIDxjb2RlPmxvbmc8L2NvZGU+IGFuZCA8Y29kZT5jaGFyKjwvY29kZT4gYXJlIHRoZSBzYW1lIHNpemUuCisgICAgICBUaGlzIGNvbmZpZ3VyZSBvcHRpb24gdXNlcyA8Y29kZT5pbnRwdHJfdDwvY29kZT4gd2hpY2gKKyAgICAgIHByb3ZpZGVzIGEgYmV0dGVyIGd1YXJhbnRlZSBvZiB0aGUgc2l6ZXMuPC9wPgorICAgIDwvZGQ+CisgIDwvZGw+CisKKyAgPHA+VGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm8gbG9uZ2VyIGNoZWNrcyBmb3IgYW50aXF1ZSBjb21waWxlcnM7CisgIDxjb2RlPmM4OTwvY29kZT4gaXMgYXNzdW1lZCBhcyBhIG1pbmltdW0uIFRoZXJlIGFyZSBhIGZldworICBmZWF0dXJlcyBmcm9tIGxhdGVyIHJldmlzaW9ucyB3aGljaCBhcmUgdXNlZCB3aGVuIGF2YWlsYWJsZS4gVGhlCisgIGNvbmZpZ3VyZSBzY3JpcHQgbWFrZXMgY2hlY2tzIHRvIHR1cm4gb24gdXNlZnVsIHdhcm5pbmdzIGZyb20KKyAgY2xhbmcsIGdjYyBhbmQgaWNjLiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IDYuMCB3aXRoIGFueSBvZiB0aGUgY3VycmVudCAob3Igbm90IHNvCisgIGN1cnJlbnQpIEMgY29tcGlsZXJzIGF2YWlsYWJsZSBpbiAyMDE1LjwvcD4KKworICA8cD5UaGUgY29uZmlndXJlIHNjcmlwdCwgYnkgdGhlIHdheSwgbWFrZXMgY2hhbmdlcyB3aGljaCBkbyBub3QKKyAgd29yayB3aXRoIHN5c3RlbXMgd2hvc2UgPGNvZGU+L2Jpbi9zaDwvY29kZT4gaXMgbm9uLVBPU0lYLiBUaGlzCisgIG1haW5seSBhZmZlY3RzIFNvbGFyaXMgKHRoZSBvdGhlciB2ZW5kb3IgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+dW5peDwvZW0+IHN5c3RlbXMgaGF2ZSBmb2xsb3dlZCB0aGUgUE9TSVggZ3VpZGVsaW5lcworICBmb3IgdGhlIHBhc3QgdHdlbnR5IHllYXJzKS4gSWYgeW91IG11c3QgYnVpbGQgb24gU29sYXJpcywgaXRzCisgIDxhIGhyZWY9CisgICJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UxOTI1My0wMS9odG1sLzgxNy0wNTUyL2Zoa3B5Lmh0bWwiPnhwZzQ8L2E+CisgIGJpbmFyaWVzIHN1ZmZpY2UsIGUuZy4sPC9wPgorCisgIDxibG9ja3F1b3RlIGNsYXNzPSJjb2RlLWJsb2NrIj4KKyAgICA8IS0te3thdHIyaHRtbC0tPgorCisgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTBwdDsiPgorICAgIDxmb250IGNvbG9yPSIjODAwMDAwIj4jIS9iaW4vc2g8L2ZvbnQ+PGJyPgorICAgIDxmb250IGNvbG9yPSIjMDA4MDgwIj5XSEFUPC9mb250Pj08c3Ryb25nPjxlbT48Zm9udCBjb2xvcj0KKyAgICAiIzgwMDAwMCI+YDwvZm9udD48L2VtPjwvc3Ryb25nPmhvc3RuYW1lfHNlZCZuYnNwOy1lJm5ic3A7PGZvbnQgY29sb3I9IiM4MDAwODAiPidzL1wuLiovLyc8L2ZvbnQ+PHN0cm9uZz48ZW0+PGZvbnQgY29sb3I9IiM4MDAwMDAiPmA8L2ZvbnQ+PC9lbT48L3N0cm9uZz48YnI+CisKKyAgICA8Zm9udCBjb2xvcj0iIzAwODA4MCI+T1VUPC9mb250Pj1jb25maWd1cmUub3V0PGJyPgorICAgIDxzdHJvbmc+PGZvbnQgY29sb3I9CisgICAgIiMwMDAwODAiPmNhdDwvZm9udD48L3N0cm9uZz4mbmJzcDsmZ3Q7Jmd0Ozxmb250IGNvbG9yPQorICAgICIjMDA4MDgwIj4kT1VUPC9mb250PiZuYnNwOzxmb250IGNvbG9yPQorICAgICIjODAwMDgwIj4mbHQ7Jmx0O0VPRi88L2ZvbnQ+PGZvbnQgY29sb3I9IiM4MDAwODAiPjxicj4KKyAgICAqKiZuYnNwOzwvZm9udD48c3Ryb25nPjxlbT48Zm9udCBjb2xvcj0KKyAgICAiIzgwMDAwMCI+YDwvZm9udD48L2VtPjwvc3Ryb25nPmRhdGU8c3Ryb25nPjxlbT48Zm9udCBjb2xvcj0KKyAgICAiIzgwMDAwMCI+YDwvZm9udD48L2VtPjwvc3Ryb25nPjxmb250IGNvbG9yPSIjODAwMDgwIj48YnI+CisgICAgKiombmJzcDtub2RlOiZuYnNwOzwvZm9udD48Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+JFdIQVQ8L2ZvbnQ+PGZvbnQgY29sb3I9IiM4MDAwODAiPjxicj4KKyAgICAqKiZuYnNwO3VzZXI6Jm5ic3A7PC9mb250PjxzdHJvbmc+PGVtPjxmb250IGNvbG9yPQorICAgICIjODAwMDAwIj5gPC9mb250PjwvZW0+PC9zdHJvbmc+aWQ8c3Ryb25nPjxlbT48Zm9udCBjb2xvcj0KKyAgICAiIzgwMDAwMCI+YDwvZm9udD48L2VtPjwvc3Ryb25nPjxmb250IGNvbG9yPSIjODAwMDgwIj48YnI+CisgICAgKiombmJzcDtjb25mOiZuYnNwOyQqPGJyPgorICAgIEVPRi88L2ZvbnQ+PGJyPgorICAgICZuYnNwOzxicj4KKyAgICA8Zm9udCBjb2xvcj0iIzAwODA4MCI+U0hFTEw8L2ZvbnQ+PS9iaW4vc2g8YnI+CisgICAgPHN0cm9uZz48Zm9udCBjb2xvcj0KKyAgICAiIzAwMDA4MCI+aWY8L2ZvbnQ+PC9zdHJvbmc+Jm5ic3A7PHN0cm9uZz48Zm9udCBjb2xvcj0KKyAgICAiIzAwMDA4MCI+dGVzdDwvZm9udD48L3N0cm9uZz4mbmJzcDstZiZuYnNwOy91c3IveHBnNC9iaW4vc2g8YnI+CisKKyAgICA8c3Ryb25nPjxmb250IGNvbG9yPSIjMDAwMDgwIj50aGVuPC9mb250Pjwvc3Ryb25nPjxicj4KKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+Q09ORklHX1NIRUxMPC9mb250Pj0vdXNyL3hwZzQvYmluL3NoPGJyPgorICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxzdHJvbmc+PGZvbnQgY29sb3I9IiMwMDAwODAiPmV4cG9ydDwvZm9udD48L3N0cm9uZz4mbmJzcDtDT05GSUdfU0hFTEw8YnI+CisKKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+U0hFTEw8L2ZvbnQ+PTxmb250IGNvbG9yPQorICAgICIjMDA4MDgwIj4kQ09ORklHX1NIRUxMPC9mb250Pjxicj4KKyAgICA8c3Ryb25nPjxmb250IGNvbG9yPSIjMDAwMDgwIj5maTwvZm9udD48L3N0cm9uZz48YnI+CisgICAgJm5ic3A7PGJyPgorICAgIHJtJm5ic3A7LWYmbmJzcDtjb25maWcuc3RhdHVzJm5ic3A7Y29uZmlnLmNhY2hlPGJyPgorICAgIDxmb250IGNvbG9yPSIjMDA4MDgwIj5UT1A8L2ZvbnQ+PTxmb250IGNvbG9yPQorICAgICIjMDA4MDgwIj4kSE9NRTwvZm9udD4vPGZvbnQgY29sb3I9IiMwMDgwODAiPiRXSEFUPC9mb250Pjxicj4KKyAgICA8Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+JFNIRUxMPC9mb250PiZuYnNwOy4vY29uZmlndXJlJm5ic3A7LS12ZXJib3NlJm5ic3A7XDxicj4KKworICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0tZGlzYWJsZS1lY2hvJm5ic3A7XDxicj4KKworICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0tZGlzYWJsZS1vdmVyd3JpdGUmbmJzcDtcPGJyPgorCisgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7LS1lbmFibGUtd2FybmluZ3MmbmJzcDtcPGJyPgorCisgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7LS13aXRoLXdhcm5pbmdzJm5ic3A7XDxicj4KKworICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0tcHJlZml4PTxmb250IGNvbG9yPSIjMDA4MDgwIj4kVE9QPC9mb250PiZuYnNwOzxmb250IGNvbG9yPSIjMDA4MDgwIj4kKjwvZm9udD4mbmJzcDs8c3Ryb25nPjxmb250IGNvbG9yPSIjMDA4MDgwIj4yPC9mb250Pjwvc3Ryb25nPiZndDsmYW1wOzxzdHJvbmc+PGZvbnQgY29sb3I9IiMwMDgwODAiPjE8L2ZvbnQ+PC9zdHJvbmc+Jm5ic3A7fCZuYnNwO3RlZSZuYnNwOy1hJm5ic3A7PGZvbnQgY29sb3I9IiMwMDgwODAiPiRPVVQ8L2ZvbnQ+PGJyPgorCisgICAgPCEtLWF0cjJodG1sfX0tLT48L3A+CisgIDwvYmxvY2txdW90ZT4KKworICA8cD5PdGhlciBtYWpvciBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGluY2x1ZGU6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5BQkkgNiBpcyBub3cgdGhlIGRlZmF1bHQsIGludGVuZGluZyB0aGF0IHRoZSBleGlzdGluZyBBQkkKKyAgICAgIDUgc2hvdWxkIGJ1aWxkIGFzIGJlZm9yZSB1c2luZyB0aGUKKyAgICAgICZsZHF1bzs8Y29kZT4tLXdpdGgtYWJpLXZlcnNpb249NTwvY29kZT4mcmRxdW87IG9wdGlvbi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIDxjb2RlPi0td2l0aC1leHRyYS1zdWZmaXg8L2NvZGU+IG9wdGlvbiB0byBoZWxwIHdpdGgKKyAgICAgIGluc3RhbGxpbmcgbm9uY29uZmxpY3RpbmcgbmN1cnNlczYgcGFja2FnZXMsIGUuZy4sIGF2b2lkaW5nCisgICAgICBoZWFkZXItIGFuZCBsaWJyYXJ5LWNvbmZsaWN0cy48L3A+CisKKyAgICAgIDxwPjxzdHJvbmc+Tk9URTo8L3N0cm9uZz4gYXMgYSBzaWRlLWVmZmVjdCwgdGhpcyByZW5hbWVzPC9wPgorCisgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgPHA+PGNvZGU+YWRhY3Vyc2VzLWNvbmZpZzwvY29kZT4gdG8KKyAgICAgICAgPGNvZGU+YWRhY3Vyc2VzNS1jb25maWc8L2NvZGU+IGFuZDxicj4KKyAgICAgICAgPGNvZGU+YWRhY3Vyc2Vzdy1jb25maWc8L2NvZGU+IHRvCisgICAgICAgIDxjb2RlPmFkYWN1cnNlc3c1LWNvbmZpZzwvY29kZT48L3A+CisgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgc2NyaXB0IGxvb2tzIGZvciBnbmF0Z2NjIGlmIHRoZSBBZGE5NQorICAgICAgYmluZGluZyBpcyBidWlsdCwgaW4gcHJlZmVyZW5jZSB0byB0aGUgZGVmYXVsdCBnY2MvY2MuIFRoZQorICAgICAgc2NyaXB0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBBZGE5NSBiaW5kaW5nIGlzIGJ1aWx0IHdpdGggdGhlCisgICAgICBsZXZlbCBvZiBvcHRpbWl6YXRpb24gYXMgdGhlIEMgbGlicmFyaWVzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2FwdHVyZXMgZGVmaW5lJ3MgcmVsYXRlZCB0bworICAgICAgLURfWE9QRU5fU09VUkNFIGZyb20gdGhlIGNvbmZpZ3VyZSBjaGVjayBhbmQgYWRkcyB0aG9zZSB0bworICAgICAgdGhlICotY29uZmlnIGFuZCAqLnBjIGZpbGVzLCB0byBzaW1wbGlmeSB1c2UgZm9yIHRoZQorICAgICAgd2lkZS1jaGFyYWN0ZXIgbGlicmFyaWVzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoND48YSBuYW1lPSJoNC1jb25maWctb3B0aW9ucyIgaWQ9CisgICJoNC1jb25maWctb3B0aW9ucyI+Q29uZmlndXJhdGlvbiBvcHRpb25zPC9hPjwvaDQ+CisKKyAgPHA+VGhlcmUgYXJlIHNldmVyYWwgbmV3IChvciBleHRlbmRlZCkgY29uZmlndXJlIG9wdGlvbnM6PC9wPgorCisgIDxkbD4KKyAgICA8ZHQ+PGNvZGU+LS1kaXNhYmxlLWRiLWluc3RhbGw8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPkRvIG5vdCBpbnN0YWxsIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZS4gVGhpcyBpcyB1c2VkIHRvIG9taXQKKyAgICAgIGZlYXR1cmVzIGZvciBwYWNrYWdlcywgYXMgZG9uZSB3aXRoCisgICAgICA8Y29kZT4tLXdpdGhvdXQtcHJvZ3M8L2NvZGU+LiBUaGUgb3B0aW9uIHNpbXBsaWZpZXMgYnVpbGRpbmcKKyAgICAgIGNyb3NzLWNvbXBpbGUgc3VwcG9ydCBwYWNrYWdlcy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWRpc2FibGUtZ25hdC1wcm9qZWN0czwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+VGhpcyBvcHRpb24gaXMgdXNlZCBmb3IgcmVncmVzc2lvbiB0ZXN0aW5nPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1kaXNhYmxlLWxpYi1zdWZmaXhlczwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+U3VwcHJlc3MgdGhlICZsZHF1bzt3JnJkcXVvOywgJmxkcXVvO3QmcmRxdW87IG9yCisgICAgICAmbGRxdW87dHcmcmRxdW87IHN1ZmZpeGVzIHdoaWNoIG5vcm1hbGx5IHdvdWxkIGJlIGFkZGVkIHRvCisgICAgICB0aGUgbGlicmFyeSBuYW1lcyBmb3IgdGhlIDxjb2RlPi0tZW5hYmxlLXdpZGVjPC9jb2RlPiBhbmQKKyAgICAgIDxjb2RlPi0td2l0aC1wdGhyZWFkPC9jb2RlPiBvcHRpb25zLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC1jeHgtc2hhcmVkPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5XaGVuIDxjb2RlPi0td2l0aC1zaGFyZWQ8L2NvZGU+IGlzIHNldCwgYnVpbGQgbGlibmN1cnNlcysrCisgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5LiBUaGlzIGltcGxpY2l0bHkgcmVsaWVzIHVwb24gYnVpbGRpbmcKKyAgICAgIHdpdGggZ2NjL2crKywgc2luY2Ugb3RoZXIgY29tcGlsZXIgc3VpdGVzIG1heSBoYXZlCisgICAgICBkaWZmZXJlbmNlcyBpbiB0aGUgd2F5IHNoYXJlZCBsaWJyYXJpZXMgYXJlIGJ1aWx0LiBsaWJ0b29sIGJ5CisgICAgICB0aGUgd2F5IGhhcyBzaW1pbGFyIGxpbWl0YXRpb25zLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC1oYXNoZWQtZGI8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPkV4dGVuZGVkIHRoaXMgY29uZmlndXJlIG9wdGlvbiB0byBzaW1wbGlmeSBidWlsZGluZyB3aXRoCisgICAgICBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgQmVya2VsZXkgZGF0YWJhc2UgdXNpbmcgRnJlZUJTRAorICAgICAgcG9ydHMuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS13aXRoLXBjLXN1ZmZpeDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+SWYgIi5wYyIgZmlsZXMgYXJlIGluc3RhbGxlZCwgb3B0aW9uYWxseSBhZGQgYSBzdWZmaXggdG8KKyAgICAgIHRoZSBmaWxlcyBhbmQgY29ycmVzcG9uZGluZyBwYWNrYWdlIG5hbWVzIHRvIHNlcGFyYXRlIHVudXN1YWwKKyAgICAgIGNvbmZpZ3VyYXRpb25zLiBJZiBubyBvcHRpb24gdmFsdWUgaXMgZ2l2ZW4gKG9yIGlmIGl0IGlzCisgICAgICAibm9uZSIpLCBubyBzdWZmaXggaXMgYWRkZWQuIFRoaXMgb3B0aW9uIGlzIHVzZWQgaW4gdGhlIHRlc3QKKyAgICAgIHBhY2thZ2UgZm9yIG5jdXJzZXM2LjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC14dGVybS1rYnM8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPkNvbmZpZ3VyZSB4dGVybSdzIHRlcm1pbmZvIGVudHJpZXMgdG8gdXNlIGVpdGhlciBCUworICAgICAgKDxjb2RlPl5IPC9jb2RlPiwgaS5lLiwgQVNDSUkgYmFja3NwYWNlKSBvciBERUwKKyAgICAgICg8Y29kZT5ePzwvY29kZT4sIG9yIDEyNykuPC9wPgorICAgIDwvZGQ+CisgIDwvZGw+CisKKyAgPGgzPjxhIG5hbWU9ImgzLXBvcnRhYmlsaXR5IiBpZD0KKyAgImgzLXBvcnRhYmlsaXR5Ij5Qb3J0YWJpbGl0eTwvYT48L2gzPgorCisgIDxoND48YSBuYW1lPSJoNC1wb3J0LW1pbmd3IiBpZD0iaDQtcG9ydC1taW5ndyI+TWluR1c8L2E+PC9oND4KKworICA8cD5Nb3N0IG9mIHRoZSBwb3J0YWJpbGl0eS1yZWxhdGVkIHdvcmsgc2luY2UgPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL2Fubm91bmNlLTUuOS5odG1sIj48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPgorICBuY3Vyc2VzPC9lbT4gNS45PC9hPiBleHRlbmRlZCBhbmQgaW1wcm92ZWQgdGhlIE1pbkdXIHBvcnQKKyAgaW50cm9kdWNlZCBpbiA8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS44Lmh0bWwiPjxlbSBjbGFzcz0ic21hbGwtY2FwcyI+CisgIG5jdXJzZXM8L2VtPiA1Ljg8L2E+LjwvcD4KKworICA8cD5UaGUgTWluR1cgcG9ydCBjYW4gYmUgcmVhZGlseSBjcm9zcy1jb21waWxlZDo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIGNvbmZpZ3VyZSBzY3JpcHQgdG8gYWxsb3cgY3JlYXRpbmcgZGxsJ3MgZm9yCisgICAgICBNaW5HVyB3aGVuIGNyb3NzLWNvbXBpbGluZy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmVuZm9yY2VkIFdpbmRvd3Mtc3R5bGUgcGF0aC1zZXBhcmF0b3IgaWYKKyAgICAgIGNyb3NzLWNvbXBpbGluZyw8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHNjcmlwdHMgZm9yIHRlc3QtYnVpbGRzIG9mIGNyb3NzLWNvbXBpbGVkIHBhY2thZ2VzCisgICAgICBmb3IgbmN1cnNlczYgdG8gTWluR1cuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCBwYy1maWxlcyB0byB0aGUgTWluR1cgY3Jvc3MtY29tcGlsaW5nCisgICAgICB0ZXN0LXBhY2thZ2VzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgc2NyaXB0IGZvciBidWlsZGluZyB0ZXN0LXBhY2thZ2VzIG9mIGJpbmFyaWVzCisgICAgICBjcm9zcy1jb21waWxlZCB0byBNaW5HVyB1c2luZyBOU0lTLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgPGNvZGU+bmNfbWluZ3cuaDwvY29kZT4gdG8gaW5zdGFsbGVkIGhlYWRlcnMgZm9yCisgICAgICBNaW5HVyBwb3J0OyB0aGlzIGlzIG5lZWRlZCBmb3IgY3Jvc3MtY29tcGlsaW5nIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sIj5uY3Vyc2VzLWV4YW1wbGVzPC9hPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHRlc3QtcGFja2FnZXMgZm9yIGNyb3NzLWNvbXBpbGluZyBuY3Vyc2VzLWV4YW1wbGVzCisgICAgICB1c2luZyB0aGUgTWluR1cgdGVzdC1wYWNrYWdlcy48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGUgTWluR1ctc3BlY2lmaWMgV2luZG93cyBkcml2ZXIgYWNjb3VudHMgZm9yIHNldmVyYWwKKyAgY2hhbmdlczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPndpZGUtY2hhcmFjdGVyIGRpc3BsYXkgaXMgbWFkZSB1c2FibGUgYnkgcmVwbGFjaW5nIE1pbkdXJ3MKKyAgICAgIG5vbi13b3JraW5nIDxjb2RlPndjcnRvbWI8L2NvZGU+IGFuZCA8Y29kZT53Y3RvbWI8L2NvZGU+CisgICAgICBmdW5jdGlvbnMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5pbXBsZW1lbnRlZCBzb21lIGRpc3BsYXkgZmVhdHVyZXM6IDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5iZWVwPC9hPiwKKyAgICAgIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5mbGFzaDwvYT4sCisgICAgICA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sI2gzLWN1cnNfc2V0Ij4KKyAgICAgIGN1cnNfc2V0PC9hPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBkcml2ZXIgaGFuZGxlcyByZXBhaW50aW5nIG9uIGVuZHdpbi9yZWZyZXNoCisgICAgICBjb21iaW5hdGlvbi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRyZWF0bWVudCBvZiA8Y29kZT5URVJNPC9jb2RlPiB2YXJpYWJsZSBmb3IgTWluR1cKKyAgICAgIHBvcnQgdG8gYWxsb3cgZXhwbGljaXQgdXNlIG9mIHRoZSBXaW5kb3dzIGNvbnNvbGUgZHJpdmVyIGJ5CisgICAgICBjaGVja2luZyBpZiA8Y29kZT4kVEVSTTwvY29kZT4gaXMgc2V0IHRvCisgICAgICAmbGRxdW87PGNvZGU+I3dpbjMyY29uc29sZTwvY29kZT4mcmRxdW87IG9yIGFuIGFiYnJldmlhdGlvbgorICAgICAgb2YgdGhhdC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBXaW5kb3dzIGRyaXZlciBhbHNvIG1hdGNoZXMgdGhlIHNwZWNpYWwKKyAgICAgIDxjb2RlPlRFUk08L2NvZGU+IHZhbHVlICZsZHF1bzt1bmtub3duJnJkcXVvOzwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGRyaXZlciBub3cgcmV0dXJucyBjaGFyYWN0ZXJzIGZvciBzcGVjaWFsIGtleXMsIChsaWtlCisgICAgICA8Y29kZT5hbnNpLnN5czwvY29kZT4gZG9lcyksIHdoZW4ga2V5cGFkIG1vZGUgaXMgb2ZmLCByYXRoZXIKKyAgICAgIHRoYW4gcmV0dXJuaW5nIG5vdGhpbmcgYXQgYWxsLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGRyaXZlciBjaGVja3MgYSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vbmN1cnNlcy4zeC5odG1sI2gzLU5DVVJTRVNfQ09OU09MRTIiPgorICAgICAgTkNVUlNFU19DT05TT0xFMjwvYT4gdG8gb3B0aW9uYWxseSB3b3JrIGFyb3VuZCBhIGRlZmljaWVuY3kKKyAgICAgIGluIDxjb2RlPkNvbnNvbGUyPC9jb2RlPiAoYW5kIGl0cyBkZXNjZW5kZW50CisgICAgICA8Y29kZT5Db25zb2xlWjwvY29kZT4pIHdoaWNoIGhhbmcgd2hlbiBhbiBhcHBsaWNhdGlvbiBjcmVhdGVzCisgICAgICBhIGNvbnNvbGUgYnVmZmVyLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkZpbmFsbHksIHRoZXJlIGFyZSBvdGhlciBpbXByb3ZlbWVudHM6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5NaW5HVyBpcyBvbmUgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIHdoZXJlIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gaW5zdGFsbHMgYnkgZGVmYXVsdCBpbnRvIC91c3I8L3A+CisgICAgPC9saT4KKworICAgIDxsaT5jb25maWd1cmF0aW9uIGZvciBjcm9zcy1jb21waWxpbmcgdXNlcyBBQ19DSEVDS19UT09MUyBpbgorICAgIHByZWZlcmVuY2UgdG8gQUNfUEFUSF9QUk9HUyB3aGVuIHNlYXJjaGluZyBmb3IgbmN1cnNlcyotY29uZmlnLAorICAgIGUuZy4sIGluIEFkYTk1L2NvbmZpZ3VyZSBhbmQgdGVzdC9jb25maWd1cmUuPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmV4dGVuZCBXaW5kb3dzIHN1cHBvcnQgdG8gd29yayB3aXRoIE1TWVMyOzwvcD4KKworICAgICAgPHVsPgorICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhpcyB3b3JrcyB3aXRoIGEgc2NlbmFyaW8gd2hlcmUgdGhlcmUgaXMgYW4KKyAgICAgICAgICBBTlNJLWVzY2FwZSBoYW5kbGVyIHN1Y2ggYXMgPGNvZGU+YW5zaWNvbjwvY29kZT4gcnVubmluZworICAgICAgICAgIGluIHRoZSBjb25zb2xlIHdpbmRvdy48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPndyYXAgPGNvZGU+aXNhdHR5PC9jb2RlPiBjYWxscyB3aXRoIGEgbWFjcm8sIHByb3ZpZGUgYQorICAgICAgICBjb3JyZXNwb25kaW5nIHNldCBvZiBzdXBwb3J0IHJvdXRpbmVzIHRvIGFkZHJlc3MKKyAgICAgICAgZGlmZmVyZW5jZXMgYmV0d2VlbiBNaW5HVyBhbmQgTVNZUzIuPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmVuc3VyZSA8Y29kZT5XSU5WRVI8L2NvZGU+IGlzIGRlZmluZWQgaW4gbWFrZWZpbGVzIHJhdGhlcgorICAgICAgdGhhbiB1c2luZyBoZWFkZXJzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkIGNoZWNrIGZvciB0aGUgPGNvZGU+Z25hdHByZXA8L2NvZGU+CisgICAgICAmbGRxdW87PGNvZGU+LVQ8L2NvZGU+JnJkcXVvOyBvcHRpb24uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD53b3JrIGFyb3VuZCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IDxhIGhyZWY9CisgICAgICAiaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDg3NzY4OS9nY2MtNC04LTEtbWluZ2d3LWQtb3B0aW9uLWRvZXMtbm90LXdvcmstYXMtdXN1YWwiPgorICAgICAgZ2NjIDQuOC4xPC9hPiBpbiBNaW5HVyB3aGljaCBicmVha3MgInRyYWNlIiBmZWF0dXJlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkIGEgZHJpdmVyLW5hbWUgbWV0aG9kIHRvIGVhY2ggb2YgdGhlIGRyaXZlcnMuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPGg0PjxhIG5hbWU9Img0LXBvcnQtc3lzdGVtcyIgaWQ9Img0LXBvcnQtc3lzdGVtcyI+T3RoZXIKKyAgcG9ydHM8L2E+PC9oND4KKworICA8cD5UaGVzZSBjaGFuZ2VzIGFmZmVjdCBjZXJ0YWluIHBsYXRmb3JtcyAocG9ydHMpOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+dGhlIGNvbmZpZ3VyZSBzY3JpcHQga25vd3MgaG93IHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgIHdpdGggRHJhZ29uRmx5QlNEIGFuZCBJbnRlcml4LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+c3VwcG9ydCBmb3IgQUlYIHNoYXJlZCBsaWJyYXJpZXMgaXMgaW1wcm92ZWQsIHRlc3RlZCB3aXRoCisgICAgICBBSVggNS4zLCA2LjEgYW5kIDcuMSB3aXRoIGJvdGggZ2NjIDQuMi40IGFuZCBjYzo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnRoZSBzaGFyZWQtbGlicmFyeSBzdWZmaXggZm9yIEFJWCA1IGFuZCA2IGlzIG5vdworICAgICAgICAgICIuc28iPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgPGNvZGU+LWJydGw8L2NvZGU+IG9wdGlvbiBpcyB1c2VkIHdpdGggQUlYIDUtNzsgaXQKKyAgICAgICAgICBpcyBuZWVkZWQgdG8gbGluayB3aXRoIHRoZSBzaGFyZWQgbGlicmFyaWVzLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgPGNvZGU+LS1lbmFibGUtcGMtZmlsZXM8L2NvZGU+IG9wdGlvbiB0YWtlcworICAgICAgaW50byBhY2NvdW50IHRoZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9saW51eC5kaWUubmV0L21hbi8xL3BrZy1jb25maWciPjxjb2RlPlBLR19DT05GSUdfUEFUSDwvY29kZT48L2E+CisgICAgICB2YXJpYWJsZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgb3B0aW9uIDxjb2RlPi0td2l0aC1wa2ctY29uZmlnLWxpYmRpcjwvY29kZT4KKyAgICAgIHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgYWN0dWFsIGRpcmVjdG9yeSBpbnRvIHdoaWNoCisgICAgICBwYy1maWxlcyBhcmUgaW5zdGFsbGVkLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGJ1aWxkIHNjcmlwdHMgYWRkIGV4cGxpY2l0IC1sdGluZm8sIGV0Yy4sIHRvIHRoZQorICAgICAgZ2VuZXJhdGVkICIucGMiIGZpbGUgd2hlbiA8Y29kZT5sZDwvY29kZT4gb3B0aW9uCisgICAgICAmbGRxdW87PGNvZGU+LS1hcy1uZWVkZWQ8L2NvZGU+JnJkcXVvOyBpcyB1c2VkLCBvciB3aGVuCisgICAgICBuY3Vyc2VzIGFuZCB0aW5mbyBhcmUgaW5zdGFsbGVkIHdpdGhvdXQgdXNpbmcgcnBhdGguPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY29uZmlndXJlIHNjcmlwdCBkaXNhbGxvd3MgY29uZmxpY3Rpbmcgb3B0aW9ucworICAgICAgJmxkcXVvOzxjb2RlPi0td2l0aC10ZXJtbGliPC9jb2RlPiZyZHF1bzsgYW5kCisgICAgICAmbGRxdW87PGNvZGU+LS1lbmFibGUtdGVybS1kcml2ZXI8L2NvZGU+JnJkcXVvOy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjaGVjayBmb3IgbWlzc2luZyBjKysgY29tcGlsZXIgdG8gd29yayB3aGVuIG5vIGVycm9yCisgICAgICBpcyByZXBvcnRlZCwgYW5kIG5vIHZhcmlhYmxlcyBzZXQgaXMgaW1wcm92ZWQgKHNlZSBub3RlIGZvcgorICAgICAgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDIwMDIxMjA2Ij4yMDAyMTIwNjwvYT4pLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIG1pc2MvZ2VuX2VkaXQuc2ggc2NyaXB0IHNlbGVjdHMgYSAibGludXgiIGVudHJ5IHdoaWNoCisgICAgICB3b3JrcyB3aXRoIHRoZSBjdXJyZW50IGtlcm5lbCByYXRoZXIgdGhhbiBhc3N1bWluZyBpdCBpcworICAgICAgYWx3YXlzICJsaW51eDMuMCI8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSB0ZXN0L2NvbmZpZ3VyZSBzY3JpcHQgbWFrZXMgaXQgc2ltcGxlciB0byBvdmVycmlkZQorICAgICAgbmFtZXMgb2YgY3Vyc2VzLXJlbGF0ZWQgbGlicmFyaWVzLCB0byBoZWxwIHdpdGggbGlua2luZyB3aXRoCisgICAgICBwZGN1cnNlcyBpbiBNaW5HVyBlbnZpcm9ubWVudC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUtc2NyaXB0L2lmZGVmJ3MgYWxsb3cgdGhlIEJTRCBPTERfVFRZIGZlYXR1cmUKKyAgICAgIHRvIGJlIHN1cHByZXNzZWQgaWYgdGhlIHR5cGUgb2YgPGNvZGU+b3NwZWVkPC9jb2RlPiBpcworICAgICAgY29uZmlndXJlZCB1c2luZyB0aGUgb3B0aW9uIDxjb2RlPi0td2l0aC1vc3BlZWQ8L2NvZGU+IHRvIG5vdAorICAgICAgYmUgYSA8Y29kZT5zaG9ydDwvY29kZT4uIEJ5IGRlZmF1bHQsIGl0IGlzIGEKKyAgICAgIDxjb2RlPnNob3J0PC9jb2RlPiBmb3IgdGVybWNhcC1jb21wYXRpYmlsaXR5LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIE1LbGliX2dlbi5zaCBzY3JpcHQgd29ya3MgYXJvdW5kIGEgcmVjZW50IGNoYW5nZSBpbgorICAgICAgZ2NjIDUgKHJlbGVhc2VkIDxhIGhyZWY9CisgICAgICAiaHR0cHM6Ly9nY2MuZ251Lm9yZy9nY2MtNS8iPm1pZC0yMDE1PC9hPikgd2hpY2ggZXNzZW50aWFsbHkKKyAgICAgIGVtaXRzIG11bHRpcGxlIDxjb2RlPiNsaW5lPC9jb2RlPiBzdGF0ZW1lbnRzIGZvciB0aGUgc2FtZQorICAgICAgcG9zaXRpb24gaW4gYSBmaWxlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGNvbmZpZ3VyZSBzY3JpcHQgd29ya3Mgd2l0aCBNaW5peDMuMiAoc2VlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mL3BvcnRhYmlsaXR5LXRlc3QuaHRtbCI+bm90ZTwvYT4KKyAgICAgIG9uIHBvcnRhYmlsaXR5KTwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+T1MvMiByZWR1eDo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnRoZSBjb25maWd1cmUgc2NyaXB0IHN1cHBvcnRzIE9TLzIga0xJQkMuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgPGNvZGU+LS13aXRoLWxpYi1wcmVmaXg8L2NvZGU+IG9wdGlvbiBhbGxvd3MKKyAgICAgICAgICBjb25maWd1cmluZyBmb3Igb2xkL25ldyBmbGF2b3JzIG9mIE9TLzIgRU1YLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmltcHJvdmVkIGNvbmZpZ3VyZS1zY3JpcHQgY2hlY2tzIGZvcgorICAgICAgPGNvZGU+X1hPUEVOX1NPVVJDRTwvY29kZT46PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgZGVmaW5pdGlvbiB3b3JrcyBzdGFydGluZyB3aXRoIFNvbGFyaXMgMTAuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgZGVmaW5pdGlvbiBpcyBzdXBwcmVzc2VkIGZvciBJUklYNjQsIHNpbmNlIGl0cworICAgICAgICAgIGhlYWRlciBmaWxlcyBoYXZlIGEgY29uZmxpY3QgdmVyc3VzCisgICAgICAgICAgPGNvZGU+X1NHSV9TT1VSQ0U8L2NvZGU+LjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKyAgPC91bD4KKyAgPGhyPgorCisgIDxoMj48YSBuYW1lPSJoMi1mZWF0dXJlcyIgaWQ9ImgyLWZlYXR1cmVzIj5GZWF0dXJlcyBvZiA8ZW0gY2xhc3M9CisgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+PC9oMj4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gcGFja2FnZSBpcyBmdWxseQorICB1cHdhcmQtY29tcGF0aWJsZSB3aXRoIFNWcjQgKFN5c3RlbSBWIFJlbGVhc2UgNCkgY3Vyc2VzOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+QWxsIG9mIHRoZSBTVnI0IGNhbGxzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCAoYW5kIGFyZQorICAgICAgZG9jdW1lbnRlZCkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBzdXBwb3J0cyBhbGwgb2YgdGhlCisgICAgICBmb3IgU1ZyNCBjdXJzZXMgZmVhdHVyZXMgaW5jbHVkaW5nIGtleWJvYXJkIG1hcHBpbmcsIGNvbG9yLAorICAgICAgZm9ybXMtZHJhd2luZyB3aXRoIEFDUyBjaGFyYWN0ZXJzLCBhbmQgYXV0b21hdGljIHJlY29nbml0aW9uCisgICAgICBvZiBrZXlwYWQgYW5kIGZ1bmN0aW9uIGtleXMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBwcm92aWRlcyB0aGVzZSBTVnI0CisgICAgICBhZGQtb24gbGlicmFyaWVzIChub3QgcGFydCBvZiBYL09wZW4gQ3Vyc2VzKTo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnRoZSBwYW5lbHMgbGlicmFyeSwgc3VwcG9ydGluZyBhIHN0YWNrIG9mIHdpbmRvd3Mgd2l0aAorICAgICAgICAgIGJhY2tpbmcgc3RvcmUuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgbWVudXMgbGlicmFyeSwgc3VwcG9ydGluZyBhIHVuaWZvcm0gYnV0IGZsZXhpYmxlCisgICAgICAgICAgaW50ZXJmYWNlIGZvciBtZW51IHByb2dyYW1taW5nLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIGZvcm0gbGlicmFyeSwgc3VwcG9ydGluZyBkYXRhIGNvbGxlY3Rpb24gdGhyb3VnaAorICAgICAgICAgIG9uLXNjcmVlbiBmb3Jtcy48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPidzIHRlcm1pbmFsIGRhdGFiYXNlIGlzCisgICAgICBmdWxseSBjb21wYXRpYmxlIHdpdGggdGhhdCB1c2VkIGJ5IFNWcjQgY3Vyc2VzLjwvcD4KKworICAgICAgPHVsPgorICAgICAgICA8bGk+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gc3VwcG9ydHMKKyAgICAgICAgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcyB3aGljaCBpdCBjYW4gc2VlLCBidXQgd2hpY2ggYXJlCisgICAgICAgIGhpZGRlbiBmcm9tIFNWcjQgY3Vyc2VzIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUKKyAgICAgICAgPGVtPnNhbWU8L2VtPiB0ZXJtaW5hbCBkYXRhYmFzZS48L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5JdCBjYW4gYmUgb3B0aW9uYWxseSBjb25maWd1cmVkIHRvIG1hdGNoIHRoZSBmb3JtYXQKKyAgICAgICAgICB1c2VkIGluIHJlbGF0ZWQgc3lzdGVtcyBzdWNoIGFzIEFJWCBhbmQgVHJ1NjQuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5BbHRlcm5hdGl2ZWx5LCA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBjYW4KKyAgICAgICAgICBiZSBjb25maWd1cmVkIHRvIHVzZSBoYXNoZWQgZGF0YWJhc2VzIHJhdGhlciB0aGFuIHRoZQorICAgICAgICAgIGRpcmVjdG9yeSBvZiBmaWxlcyB1c2VkIGJ5IFNWcjQgY3Vyc2VzLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlRoZSA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiB1dGlsaXRpZXMgaGF2ZQorICAgICAgb3B0aW9ucyB0byBhbGxvdyB5b3UgdG8gZmlsdGVyIHRlcm1pbmZvIGVudHJpZXMgZm9yIHVzZSB3aXRoCisgICAgICBsZXNzIGNhcGFibGUgPGVtPmN1cnNlczwvZW0+LzxlbT50ZXJtaW5mbzwvZW0+IHZlcnNpb25zIHN1Y2gKKyAgICAgIGFzIHRoZSBIUC9VWCBhbmQgQUlYIHBvcnRzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZSA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBwYWNrYWdlIGFsc28gaGFzIG1hbnkKKyAgdXNlZnVsIGV4dGVuc2lvbnMgb3ZlciBTVnI0OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+VGhlIEFQSSBpcyA4LWJpdCBjbGVhbiBhbmQgYmFzZS1sZXZlbCBjb25mb3JtYW50IHdpdGggdGhlCisgICAgICBYL09QRU4gY3Vyc2VzIHNwZWNpZmljYXRpb24sIFhTSSBjdXJzZXMgKHRoYXQgaXMsIGl0CisgICAgICBpbXBsZW1lbnRzIGFsbCBCQVNFIGxldmVsIGZlYXR1cmVzLCBhbmQgbW9zdCBFWFRFTkRFRAorICAgICAgZmVhdHVyZXMpLiBJdCBpbmNsdWRlcyBtYW55IGZ1bmN0aW9uIGNhbGxzIG5vdCBzdXBwb3J0ZWQKKyAgICAgIHVuZGVyIFNWcjQgY3Vyc2VzIChidXQgcG9ydGFiaWxpdHkgb2YgYWxsIGNhbGxzIGlzIGRvY3VtZW50ZWQKKyAgICAgIHNvIHlvdSBjYW4gdXNlIHRoZSBTVnI0IHN1YnNldCBvbmx5KS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlVubGlrZSBTVnIzIGN1cnNlcywgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4KKyAgICAgIGNhbiB3cml0ZSB0byB0aGUgcmlnaHRtb3N0LWJvdHRvbW1vc3QgY29ybmVyIG9mIHRoZSBzY3JlZW4gaWYKKyAgICAgIHlvdXIgdGVybWluYWwgaGFzIGFuIGluc2VydC1jaGFyYWN0ZXIgY2FwYWJpbGl0eS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkFkYTk1IGFuZCBDKysgYmluZGluZ3MuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5TdXBwb3J0IGZvciBtb3VzZSBldmVudCByZXBvcnRpbmcgd2l0aCBYIFdpbmRvdyB4dGVybSBhbmQKKyAgICAgIEZyZWVCU0QgYW5kIE9TLzIgY29uc29sZSB3aW5kb3dzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+RXh0ZW5kZWQgbW91c2Ugc3VwcG9ydCB2aWEgQWxlc3NhbmRybyBSdWJpbmkncyBncG0KKyAgICAgIHBhY2thZ2UuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgZnVuY3Rpb24gPGNvZGU+d3Jlc2l6ZTwvY29kZT4gYWxsb3dzIHlvdSB0byByZXNpemUKKyAgICAgIHdpbmRvd3MsIHByZXNlcnZpbmcgdGhlaXIgZGF0YS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlRoZSBmdW5jdGlvbiA8Y29kZT51c2VfZGVmYXVsdF9jb2xvcnM8L2NvZGU+IGFsbG93cyB5b3UgdG8KKyAgICAgIHVzZSB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9ycyBmb3IgdGhlIGRlZmF1bHQgY29sb3IgcGFpciwKKyAgICAgIGFjaGlldmluZyB0aGUgZWZmZWN0IG9mIHRyYW5zcGFyZW50IGNvbG9ycy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlRoZSBmdW5jdGlvbnMgPGNvZGU+a2V5b2s8L2NvZGU+IGFuZAorICAgICAgPGNvZGU+ZGVmaW5lX2tleTwvY29kZT4gYWxsb3cgeW91IHRvIGJldHRlciBjb250cm9sIHRoZSB1c2UKKyAgICAgIG9mIGZ1bmN0aW9uIGtleXMsIGUuZy4sIGRpc2FibGluZyB0aGUgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBLRVlfTU9VU0UsIG9yIGJ5IGRlZmluaW5nIG1vcmUgdGhhbgorICAgICAgb25lIGNvbnRyb2wgc2VxdWVuY2UgdG8gbWFwIHRvIGEgZ2l2ZW4ga2V5IGNvZGUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5TdXBwb3J0IGZvciAyNTYtY29sb3IgdGVybWluYWxzLCBzdWNoIGFzIG1vZGVybiB4dGVybS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlN1cHBvcnQgZm9yIDE2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyA8ZW0+YWl4dGVybTwvZW0+CisgICAgICBhbmQgPGVtPm1vZGVybiB4dGVybTwvZW0+LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+QmV0dGVyIGN1cnNvci1tb3ZlbWVudCBvcHRpbWl6YXRpb24uIFRoZSBwYWNrYWdlIG5vdworICAgICAgZmVhdHVyZXMgYSBjdXJzb3ItbG9jYWwtbW92ZW1lbnQgY29tcHV0YXRpb24gbW9yZSBlZmZpY2llbnQKKyAgICAgIHRoYW4gZWl0aGVyIEJTRCdzIG9yIFN5c3RlbSBWJ3MuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5TdXBlciBoYXJkd2FyZSBzY3JvbGxpbmcgc3VwcG9ydC4gVGhlIHNjcmVlbi11cGRhdGUgY29kZQorICAgICAgaW5jb3Jwb3JhdGVzIGEgbm92ZWwsIHNpbXBsZSwgYW5kIGNoZWFwIGFsZ29yaXRobSB0aGF0CisgICAgICBlbmFibGVzIGl0IHRvIG1ha2Ugb3B0aW1hbCB1c2Ugb2YgaGFyZHdhcmUgc2Nyb2xsaW5nLAorICAgICAgbGluZS1pbnNlcnRpb24sIGFuZCBsaW5lLWRlbGV0aW9uIGZvciBzY3JlZW4tbGluZSBtb3ZlbWVudHMuCisgICAgICBUaGlzIGFsZ29yaXRobSBpcyBtb3JlIHBvd2VyZnVsIHRoYW4gdGhlIDQuNEJTRCBjdXJzZXMKKyAgICAgIDxjb2RlPnF1aWNrY2g8L2NvZGU+IHJvdXRpbmUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5SZWFsIHN1cHBvcnQgZm9yIHRlcm1pbmFscyB3aXRoIHRoZSBtYWdpYy1jb29raWUgZ2xpdGNoLgorICAgICAgVGhlIHNjcmVlbi11cGRhdGUgY29kZSB3aWxsIHJlZnJhaW4gZnJvbSBkcmF3aW5nIGEgaGlnaGxpZ2h0CisgICAgICBpZiB0aGUgbWFnaWMtIGNvb2tpZSB1bmF0dHJpYnV0ZWQgc3BhY2VzIHJlcXVpcmVkIGp1c3QgYmVmb3JlCisgICAgICB0aGUgYmVnaW5uaW5nIGFuZCBhZnRlciB0aGUgZW5kIHdvdWxkIHN0ZXAgb24gYSBub24tc3BhY2UKKyAgICAgIGNoYXJhY3Rlci4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNoaWZ0IGhpZ2hsaWdodCBib3VuZGFyaWVzCisgICAgICB3aGVuIGRvaW5nIHNvIHdvdWxkIG1ha2UgaXQgcG9zc2libGUgdG8gZHJhdyB0aGUgaGlnaGxpZ2h0CisgICAgICB3aXRob3V0IGNoYW5naW5nIHRoZSB2aXN1YWwgYXBwZWFyYW5jZSBvZiB0aGUgc2NyZWVuLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+SXQgaXMgcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhlIGxpYnJhcnkgd2l0aCBhIGxpc3Qgb2YKKyAgICAgIHByZS1sb2FkZWQgZmFsbGJhY2sgZW50cmllcyBsaW5rZWQgdG8gaXQgc28gdGhhdCBpdCBjYW4gc2VydmUKKyAgICAgIHRob3NlIHRlcm1pbmFsIHR5cGVzIGV2ZW4gd2hlbiBubyB0ZXJtaW5mbyB0cmVlIG9yIHRlcm1jYXAKKyAgICAgIGZpbGUgaXMgYWNjZXNzaWJsZSAodGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzdXBwb3J0IG9mCisgICAgICBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbXMgdGhhdCBtdXN0IHJ1biBpbiBzaW5nbGUtdXNlcgorICAgICAgbW9kZSkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdGljLjFtLmh0bWwiPnRpYzwvYT4vPGEgaHJlZj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sIj5jYXB0b2luZm88L2E+CisgICAgICB1dGlsaXR5IHByb3ZpZGVkIHdpdGggPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gaGFzCisgICAgICB0aGUgYWJpbGl0eSB0byB0cmFuc2xhdGUgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNCisgICAgICBhbmQgQVQmYW1wO1QgZXh0ZW5zaW9uIHNldHMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5BIEJTRC1saWtlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RzZXQuMS5odG1sIj50c2V0PC9hPgorICAgICAgdXRpbGl0eSBpcyBwcm92aWRlZC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlRoZSA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBsaWJyYXJ5IGFuZAorICAgICAgdXRpbGl0aWVzIHdpbGwgYXV0b21hdGljYWxseSByZWFkIHRlcm1pbmZvIGVudHJpZXMgZnJvbQorICAgICAgJEhPTUUvLnRlcm1pbmZvIGlmIGl0IGV4aXN0cywgYW5kIGNvbXBpbGUgdG8gdGhhdCBkaXJlY3RvcnkKKyAgICAgIGlmIGl0IGV4aXN0cyBhbmQgdGhlIHVzZXIgaGFzIG5vIHdyaXRlIGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICBkaXJlY3RvcnkuIFRoaXMgZmVhdHVyZSBtYWtlcyBpdCBlYXNpZXIgZm9yIHVzZXJzIHRvIGhhdmUKKyAgICAgIHBlcnNvbmFsIHRlcm1pbmZvIGVudHJpZXMgd2l0aG91dCBnaXZpbmcgdXAgYWNjZXNzIHRvIHRoZQorICAgICAgc3lzdGVtIHRlcm1pbmZvIGRpcmVjdG9yeS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPllvdSBtYXkgc3BlY2lmeSBhIHBhdGggb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvcgorICAgICAgY29tcGlsZWQgZGVzY3JpcHRpb25zIHdpdGggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICBURVJNSU5GT19ESVJTICh0aGlzIGdlbmVyYWxpemVzIHRoZSBmZWF0dXJlIHByb3ZpZGVkIGJ5CisgICAgICBURVJNSU5GTyB1bmRlciBzdG9jayBTeXN0ZW0gVi4pPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5JbiB0ZXJtaW5mbyBzb3VyY2UgZmlsZXMsIHVzZSBjYXBhYmlsaXRpZXMgbWF5IHJlZmVyIG5vdAorICAgICAganVzdCB0byBvdGhlciBlbnRyaWVzIGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlIChhcyBpbiBTeXN0ZW0KKyAgICAgIFYpIGJ1dCBhbHNvIHRvIGNvbXBpbGVkIGVudHJpZXMgaW4gZWl0aGVyIHRoZSBzeXN0ZW0gdGVybWluZm8KKyAgICAgIGRpcmVjdG9yeSBvciB0aGUgdXNlcidzICRIT01FLy50ZXJtaW5mbyBkaXJlY3RvcnkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgdGFibGUtb2YtZW50cmllcyB1dGlsaXR5IDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RvZS4xbS5odG1sIj50b2U8L2E+CisgICAgICBtYWtlcyBpdCBlYXN5IGZvciB1c2VycyB0byBzZWUgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzCisgICAgICBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgbGlicmFyeSBtZWV0cyB0aGUgWFNJIHJlcXVpcmVtZW50IHRoYXQgZXZlcnkgbWFjcm8KKyAgICAgIGVudHJ5IHBvaW50IGhhdmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHdoaWNoIG1heSBiZSBsaW5rZWQKKyAgICAgIChhbmQgd2lsbCBiZSBwcm90b3R5cGUtY2hlY2tlZCkgaWYgdGhlIG1hY3JvIGRlZmluaXRpb24gaXMKKyAgICAgIGRpc2FibGVkIHdpdGggPGNvZGU+I3VuZGVmPC9jb2RlPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkV4dGVuc2l2ZSBkb2N1bWVudGF0aW9uIGlzIHByb3ZpZGVkIChzZWUgdGhlIDxlbT48YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuZmFxLmh0bWwjYWRkaXRpb25hbF9yZWFkaW5nIj4KKyAgICAgIEFkZGl0aW9uYWwgUmVhZGluZzwvYT48L2VtPiBzZWN0aW9uIG9mIHRoZSA8ZW0+PGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLmZhcS5odG1sIj48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPgorICAgICAgbmN1cnNlczwvZW0+IEZBUTwvYT48L2VtPiBmb3Igb25saW5lIGRvY3VtZW50YXRpb24pLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoMj48YSBuYW1lPSJoMi13aG8tdXNlcyIgaWQ9ImgyLXdoby11c2VzIj5BcHBsaWNhdGlvbnMgdXNpbmcKKyAgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+PC9oMj4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gZGlzdHJpYnV0aW9uIGluY2x1ZGVzCisgIGEgc2VsZWN0aW9uIG9mIHRlc3QgcHJvZ3JhbXMgKGluY2x1ZGluZyBhIGZldyBnYW1lcykuIFRoZXNlIGFyZQorICBhdmFpbGFibGUgc2VwYXJhdGVseSBhcyA8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sIj5uY3Vyc2VzLWV4YW1wbGVzPC9hPjwvcD4KKworICA8cD5UaGUgbmN1cnNlcyBsaWJyYXJ5IGhhcyBiZWVuIHRlc3RlZCB3aXRoIGEgd2lkZSB2YXJpZXR5IG9mCisgIGFwcGxpY2F0aW9ucyBpbmNsdWRpbmc6PC9wPgorCisgIDxibG9ja3F1b3RlPgorICAgIDxkbD4KKyAgICAgIDxkdD5jZGs8L2R0PgorCisgICAgICA8ZGQ+CisgICAgICAgIDxwPkN1cnNlcyBEZXZlbG9wbWVudCBLaXQ8L3A+CisKKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvY2RrLzwvYT48YnI+CisgICAgICAgIDwvcD4KKyAgICAgIDwvZGQ+CisKKyAgICAgIDxkdD5kZWQ8L2R0PgorCisgICAgICA8ZGQ+CisgICAgICAgIDxwPmRpcmVjdG9yeS1lZGl0b3I8L3A+CisKKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLzwvYT48L3A+CisgICAgICA8L2RkPgorCisgICAgICA8ZHQ+ZGlhbG9nPC9kdD4KKworICAgICAgPGRkPgorICAgICAgICA8cD50aGUgdW5kZXJseWluZyBhcHBsaWNhdGlvbiB1c2VkIGluIFNsYWNrd2FyZSdzIHNldHVwLAorICAgICAgICBhbmQgdGhlIGJhc2lzIGZvciBzaW1pbGFyIGluc3RhbGwvY29uZmlndXJlIGFwcGxpY2F0aW9ucyBvbgorICAgICAgICBtYW55IHN5c3RlbXMuPC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy88L2E+PC9wPgorICAgICAgPC9kZD4KKworICAgICAgPGR0Pmx5bng8L2R0PgorCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRoZSB0ZXh0IFdXVyBicm93c2VyPC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vbHlueC5pc2Mub3JnLyI+aHR0cDovL2x5bnguaXNjLm9yZy88L2E+PC9wPgorICAgICAgPC9kZD4KKworICAgICAgPGR0Pk1pZG5pZ2h0IENvbW1hbmRlcjwvZHQ+CisKKyAgICAgIDxkZD4KKyAgICAgICAgPHA+ZmlsZSBtYW5hZ2VyPC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIj5odHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvPC9hPjwvcD4KKyAgICAgIDwvZGQ+CisKKyAgICAgIDxkdD5tdXR0PC9kdD4KKworICAgICAgPGRkPgorICAgICAgICA8cD5tYWlsIHV0aWxpdHk8L3A+CisKKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cubXV0dC5vcmcvIj5odHRwOi8vd3d3Lm11dHQub3JnLzwvYT48L3A+CisgICAgICA8L2RkPgogCi08SDE+QW5ub3VuY2luZyBuY3Vyc2VzIEBWRVJTSU9OQDwvSDE+CisgICAgICA8ZHQ+bmNmdHA8L2R0PgogCi1UaGUgbmN1cnNlcyAobmV3IGN1cnNlcykgbGlicmFyeSBpcyBhIGZyZWUgc29mdHdhcmUgZW11bGF0aW9uIG9mCi1jdXJzZXMgaW4gU3lzdGVtIFYgUmVsZWFzZSA0LjAsIGFuZCBtb3JlLiAgSXQgdXNlcyB0ZXJtaW5mbyBmb3JtYXQsCi1zdXBwb3J0cyBwYWRzIGFuZCBjb2xvcgotYW5kIG11bHRpcGxlIGhpZ2hsaWdodHMgYW5kIGZvcm1zIGNoYXJhY3RlcnMgYW5kIGZ1bmN0aW9uLWtleSBtYXBwaW5nLAotYW5kIGhhcyBhbGwgdGhlIG90aGVyIFNZU1YtY3Vyc2VzIGVuaGFuY2VtZW50cyBvdmVyIEJTRCBjdXJzZXMuPFA+CisgICAgICA8ZGQ+CisgICAgICAgIDxwPmZpbGUtdHJhbnNmZXIgdXRpbGl0eTwvcD4KIAotSW4gbWlkLUp1bmUgMTk5NSwgdGhlIG1haW50YWluZXIgb2YgNC40QlNEIGN1cnNlcyBkZWNsYXJlZCB0aGF0IGhlCi1jb25zaWRlcmVkIDQuNEJTRCBjdXJzZXMgb2Jzb2xldGUsIGFuZCBlbmNvdXJhZ2VkIHRoZSBrZWVwZXJzIG9mCi1Vbml4IHJlbGVhc2VzIHN1Y2ggYXMgQlNEL09TLCBGcmVlQlNEIGFuZCBOZXRCU0QgdG8gc3dpdGNoIG92ZXIgdG8KLW5jdXJzZXMuPFA+CisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3Lm5jZnRwLmNvbS8iPmh0dHA6Ly93d3cubmNmdHAuY29tLzwvYT48L3A+CisgICAgICA8L2RkPgogCi1UaGUgbmN1cnNlcyBjb2RlIHdhcyBkZXZlbG9wZWQgdW5kZXIgR05VL0xpbnV4LgotSXQgaGFzIGJlZW4gaW4gdXNlIGZvciBzb21lIHRpbWUgd2l0aCBPcGVuQlNEIGFzIHRoZSBzeXN0ZW0gY3Vyc2VzIGxpYnJhcnksCi1hbmQgb24gRnJlZUJTRCBhbmQgTmV0QlNEIGFzIGFuIGV4dGVybmFsIHBhY2thZ2UuCi1JdCBzaG91bGQgcG9ydCBlYXNpbHkgdG8gYW55IEFOU0kvUE9TSVgtY29uZm9ybWluZyBVTklYLgotSXQgaGFzIGV2ZW4gYmVlbiBwb3J0ZWQgdG8gT1MvMiBXYXJwITxQPgorICAgICAgPGR0Pm52aTwvZHQ+CiAKLVRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgdGhlIGxpYnJhcnkgYW5kIHN1cHBvcnQgdXRpbGl0aWVzLCBpbmNsdWRpbmcgYQotdGVybWluZm8gY29tcGlsZXIgdGljKDEpLCBhIGRlY29tcGlsZXIgaW5mb2NtcCgxKSwgY2xlYXIoMSksIHRwdXQoMSksIHRzZXQoMSksCi1hbmQgYSB0ZXJtY2FwIGNvbnZlcnNpb24gdG9vbCBjYXB0b2luZm8oMSkuICBGdWxsIG1hbnVhbCBwYWdlcyBhcmUgcHJvdmlkZWQgZm9yCi10aGUgbGlicmFyeSBhbmQgdG9vbHMuPFA+CisgICAgICA8ZGQ+CisgICAgICAgIDxwPk5ldyB2aSB1c2VzIG5jdXJzZXMuPC9wPgogCi1UaGUgbmN1cnNlcyBkaXN0cmlidXRpb24gaXMgYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgRlRQIGF0Ci10aGUgR05VIGRpc3RyaWJ1dGlvbiBzaXRlCi08QSBIUkVGPSJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvbmN1cnNlcy8iPmZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLzwvQT4mbmJzcDsuCi08YnI+SXQgaXMgYWxzbyBhdmFpbGFibGUgYXQKLTxBIEhSRUY9ImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvIj5mdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLzwvQT4mbmJzcDsuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljL252aSI+aHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL2EvYm9zdGljLmNvbS9rZWl0aGJvc3RpYy9udmk8L2E+PGJyPgorICAgICAgICA8L3A+CisgICAgICA8L2RkPgogCi08SDE+UmVsZWFzZSBOb3RlczwvSDE+CisgICAgICA8ZHQ+dGluPC9kdD4KIAotVGhpcyByZWxlYXNlIGlzIGRlc2lnbmVkIHRvIGJlIHVwd2FyZCBjb21wYXRpYmxlIGZyb20gbmN1cnNlcyA1LjAgdGhyb3VnaCA1LjY7Ci12ZXJ5IGZldyBhcHBsaWNhdGlvbnMgd2lsbCByZXF1aXJlIHJlY29tcGlsYXRpb24sIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCi1UaGVzZSBhcmUgdGhlIGhpZ2hsaWdodHMgZnJvbSB0aGUgY2hhbmdlLWxvZyBzaW5jZSBuY3Vyc2VzIDUuNiByZWxlYXNlLgotPHA+Ci1JbnRlcmZhY2UgY2hhbmdlczoKLTx1bD4KLQk8bGk+Z2VuZXJhdGUgbGlua2FibGUgc3R1YnMgZm9yIHNvbWUgbWFjcm9zOgotCTxicj4KLQkgIGdldGF0dHJzCisgICAgICA8ZGQ+CisgICAgICAgIDxwPm5ld3NyZWFkZXIsIHN1cHBvcnRpbmcgY29sb3IsIE1JTUU8L3A+CiAKLTwvdWw+Ci1OZXcgZmVhdHVyZXMgYW5kIGltcHJvdmVtZW50czoKLTx1bD4KLSAgICAgICAgPGxpPmxpYnJhcnkKLQk8dWw+Ci0JCTxsaT5uZXcgZmxhdm9yIG9mIHRoZSBuY3Vyc2VzIGxpYnJhcnkgcHJvdmlkZXMgcnVkaW1lbnRhcnkKLQkJICAgIHN1cHBvcnQgZm9yIFBPU0lYIHRocmVhZHMuICBTZXZlcmFsIGZ1bmN0aW9ucyBhcmUKLQkJICAgIHJlZW50cmFudCwgYnV0IG1vc3QgcmVxdWlyZSBlaXRoZXIgYSB3aW5kb3ctbGV2ZWwgb3IKLQkJICAgIHNjcmVlbi1sZXZlbCBtdXRleC48YnI+Ci0JCSAgICAoVGhpcyBpcyA8ZW0+QVBJPC9lbT4tY29tcGF0aWJsZSwKLQkJICAgICBidXQgbm90IDxlbT5BQkk8L2VtPi1jb21wYXRpYmxlIHdpdGggdGhlIG5vcm1hbCBsaWJyYXJ5KS4KKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cudGluLm9yZy8iPmh0dHA6Ly93d3cudGluLm9yZy88L2E+PC9wPgorICAgICAgPC9kZD4KKyAgICA8L2RsPgorICA8L2Jsb2NrcXVvdGU+CiAKLQkJPGxpPmFkZCA8Y29kZT5OQ1VSU0VTX09QQVFVRTwvY29kZT4gc3ltYm9sIHRvIGN1cnNlcy5oLCB3aWxsCi0JCSAgICB1c2UgdG8gbWFrZSBzdHJ1Y3RzIG9wYXF1ZSBpbiBzZWxlY3RlZCBjb25maWd1cmF0aW9ucy4KKyAgPHA+YXMgd2VsbCBhcyBzb21lIHRoYXQgdXNlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+CisgIGZvciB0aGUgdGVybWluZm8gc3VwcG9ydCBhbG9uZTo8L3A+CiAKLQkJPGxpPmFkZCA8Y29kZT5OQ1VSU0VTX0VYVF9GVU5DUzwvY29kZT4gYW5kCi0JCSAgICA8Y29kZT5OQ1VSU0VTX0VYVF9DT0xPUlM8L2NvZGU+IHN5bWJvbHMgdG8gY3Vyc2VzLmggdG8gbWFrZQotCQkgICAgaXQgc2ltcGxlciB0byB0ZWxsIGlmIHRoZSBleHRlbmRlZCBmdW5jdGlvbnMgYW5kL29yIGNvbG9ycwotCQkgICAgYXJlIGRlY2xhcmVkLgorICA8YmxvY2txdW90ZT4KKyAgICA8ZGw+CisgICAgICA8ZHQ+bWluaWNvbTwvZHQ+CiAKLQkJPGxpPmFkZCB3cmVzaXplKCkgdG8gQysrIGJpbmRpbmcgCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRlcm1pbmFsIGVtdWxhdG9yIGZvciBzZXJpYWwgbW9kZW0gY29ubmVjdGlvbnM8L3A+CiAKLQkJPGxpPmVsaW1pbmF0ZSBmaXhlZC1idWZmZXIgdnNwcmludGYoKSBjYWxscyBpbiBDKysgYmluZGluZy4KKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLyI+aHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL21pbmljb20vPC9hPjwvcD4KKyAgICAgIDwvZGQ+CiAKLQkJPGxpPmFkZCBzZXZlcmFsIGZ1bmN0aW9ucyB0byBDKysgYmluZGluZyB3aGljaCB3cmFwIEMgZnVuY3Rpb25zCi0JCSAgICB0aGF0IHBhc3MgYSBXSU5ET1cqIHBhcmFtZXRlci4KKyAgICAgIDxkdD5tb3NoPC9kdD4KIAotCQk8bGk+YWRhcHQgbW91c2UtaGFuZGxpbmcgY29kZSBmcm9tIG1lbnUgbGlicmFyeSBpbiBmb3JtLWxpYnJhcnkKKyAgICAgIDxkZD4KKyAgICAgICAgPHA+YSByZXBsYWNlbWVudCBmb3IgPGNvZGU+c3NoPC9jb2RlPi48L3A+CiAKLQkJPGxpPmltcHJvdmUgdHJhY2luZyBmb3IgZm9ybSBsaWJyYXJ5LCBzaG93aW5nIGNyZWF0ZWQgZm9ybXMsCi0JCSAgICBmaWVsZHMsIGV0Yy4KKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHBzOi8vbW9zaC5taXQuZWR1LyI+aHR0cHM6Ly9tb3NoLm1pdC5lZHUvPC9hPjwvcD4KKyAgICAgIDwvZGQ+CiAKLQkJPGxpPm1ha2UgJE5DVVJTRVNfTk9fUEFERElORyBmZWF0dXJlIHdvcmsgZm9yIHRlcm1jYXAgaW50ZXJmYWNlIC4KKyAgICAgIDxkdD50YWNrPC9kdD4KIAotCQk8bGk+YWRkIGNoZWNrIHRvIHRyYWNlLWZpbGUgb3BlbiwgaWYgdGhlIGdpdmVuIG5hbWUgaXMgYQotCQkgICAgZGlyZWN0b3J5LCBhZGQgIi5sb2ciIHRvIHRoZSBuYW1lIGFuZCB0cnkgYWdhaW4uCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRlcm1pbmZvIGFjdGlvbiBjaGVja2VyPC9wPgogCi0JCTxsaT5zZXZlcmFsIG5ldyBtYW5wYWdlczogIGN1cnNfbGVnYWN5LjN4LCBjdXJzX21lbWxlYWtzLjN4LAotCQkgICAgY3Vyc19vcGFxdWUuM3ggYW5kIGN1cnNfdGhyZWFkcy4zeAotCTwvdWw+CisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWwiPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RhY2suaHRtbDwvYT48L3A+CisgICAgICA8L2RkPgogCi0gICAgICAgIDxsaT5wcm9ncmFtczoKLQk8dWw+Ci0JCTxsaT5tb2RpZmllZCB0aHJlZSB0ZXN0LXByb2dyYW1zIHRvIGRlbW9uc3RyYXRlIHRoZSB0aHJlYWRpbmcKLQkJICAgIHN1cHBvcnQgaW4gdGhpcyB2ZXJzaW9uOiBkaXR0bywgcmFpbiwgd29ybS4KKyAgICAgIDxkdD50bXV4PC9kdD4KIAotCQk8bGk+c2V2ZXJhbCBuZXcgdGVzdC1wcm9ncmFtczogZGVtb19wYW5lbHMsIGRvdHNfbXZjdXIsCi0JCSAgICBpbmNoX3dpZGUsIGluY2hzLCBrZXlfbmFtZSwga2V5X25hbWVzLCBzYXZlc2NyZWVuLAotCQkgICAgc2F2ZXNjcmVlbi5zaCB0ZXN0X2FycmF5cywgdGVzdF9nZXRfd3N0ciwgdGVzdF9nZXRzdHIsCi0JCSAgICB0ZXN0X2luc3RyLCB0ZXN0X2lud3N0ciBhbmQgdGVzdF9vcGFxdWUuCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRlcm1pbmFsIG11bHRpcGxleG9yPC9wPgogCi0JCTxsaT5hZGQgPGNvZGU+YWRhY3Vyc2VzLWNvbmZpZzwvY29kZT4gdG8gdGhlIEFkYTk1IGluc3RhbGwuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vdG11eC5naXRodWIuaW8vIj5odHRwOi8vdG11eC5naXRodWIuaW8vPC9hPjwvcD4KKyAgICAgIDwvZGQ+CiAKLQkJPGxpPm1vZGlmeSB0aWMgPGNvZGU+LWY8L2NvZGU+IG9wdGlvbiB0byBmb3JtYXQgc3BhY2VzIGFzCi0JCSAgICA8Y29kZT5cczwvY29kZT4gdG8gcHJldmVudCB0aGVtIGZyb20gYmVpbmcgbG9zdCB3aGVuIHRoYXQKLQkJICAgIGlzIHJlYWQgYmFjayBpbiB1bmZvcm1hdHRlZCBzdHJpbmdzLgorICAgICAgPGR0PnZpbGU8L2R0PgogCi0JCTxsaT5UaGUgPGNvZGU+dGFjazwvY29kZT4gcHJvZ3JhbSBpcyBub3cgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseQotCQkgICAgZnJvbSBuY3Vyc2VzLgotCTwvdWw+CisgICAgICA8ZGQ+CisgICAgICAgIDxwPnZpLWxpa2UtZW1hY3MgbWF5IGJlIGJ1aWx0IHRvIHVzZSB0aGUgdGVybWluZm8sIHRlcm1jYXAKKyAgICAgICAgb3IgY3Vyc2VzIGludGVyZmFjZXMuPC9wPgogCi0JPGxpPnRlcm1pbmFsIGRhdGFiYXNlCi0JPHVsPgotCSAgICA8bGk+YWRkZWQgZW50cmllczoKLQkJPHVsPgotCQk8bGk+PGNvZGU+RXRlcm0tMjU2Y29sb3I8L2NvZGU+LAotCQkgICAgPGNvZGU+RXRlcm0tODhjb2xvcjwvY29kZT4gYW5kCi0JCSAgICA8Y29kZT5yeHZ0LTg4Y29sb3I8L2NvZGU+Ci0JCTxsaT48Y29kZT5hdGVybTwvY29kZT4KLQkJPGxpPjxjb2RlPmtvbnNvbGUtMjU2Y29sb3I8L2NvZGU+Ci0JCTxsaT48Y29kZT5tcnh2dDwvY29kZT4KLQkJPGxpPjxjb2RlPnNjcmVlbi5tbHRlcm08L2NvZGU+Ci0JCTxsaT48Y29kZT5zY3JlZW4ucnh2dDwvY29kZT4KLQkJPGxpPjxjb2RlPnRlcmF0ZXJtNC41OTwvY29kZT4gaXMgbm93IHRoZSBwcmltYXJ5IHByaW1hcnkKLQkJICAgIHRlcmF0ZXJtIGVudHJ5LCByZW5hbWVkIG9yaWdpbmFsIHRvCi0JCSAgICA8Y29kZT50ZXJhdGVybTIuMzwvY29kZT4KLQkJPGxpPjxjb2RlPjl0ZXJtPC9jb2RlPiB0ZXJtaW5hbAotCQk8bGk+TmV3YnVyeSBEYXRhIGVudHJpZXMKLQkJPC91bD4KLQkgICAgPGxpPnVwZGF0ZWQvaW1wcm92ZWQgZW50cmllczoKLQkJPHVsPgotCSAgICAgICAgPGxpPjxjb2RlPmdub21lPC9jb2RlPiB0byB2ZXJzaW9uIDIuMjIuMwotCQk8bGk+PGNvZGU+aDE5PC9jb2RlPiwgPGNvZGU+ejEwMDwvY29kZT4KLQkJPGxpPjxjb2RlPmtvbnNvbGU8L2NvZGU+IHRvIHZlcnNpb24gMS42LjYKLQkJPGxpPjxjb2RlPm1sdGVybTwvY29kZT4sIDxjb2RlPm1sdGVybStwY2ZrZXlzPC9jb2RlPgotCQk8bGk+PGNvZGU+eHRlcm08L2NvZGU+LCBhbmQgYnVpbGRpbmctYmxvY2tzIGZvciBmdW5jdGlvbi1rZXlzCi0JCSAgICB0byA8YSBocmVmPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQveHRlcm0veHRlcm0ubG9nLmh0bWwjeHRlcm1fMjMwIj54dGVybSBwYXRjaCAjMjMwPC9hPi4KLQkJPC91bD4KLQk8L3VsPgotPC91bD4KLU1ham9yIGJ1ZyBmaXhlczoKLTx1bD4KLQk8bGk+YWRkIGxvZ2ljIHRvIHRpYyBmb3IgY2FuY2VsbGluZyBzdHJpbmdzIGluIHVzZXItZGVmaW5lZAotCSAgICBjYXBhYmlsaXRpZXMKLQkgICAgKHRoaXMgaXMgPGVtPm5lZWRlZDwvZW0+IGZvcgotCSAgICAgY3VycmVudCA8Y29kZT5rb25zb2xlPC9jb2RlPiB0ZXJtaW5mbyBlbnRyeSkuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS8iPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLzwvYT48L3A+CisgICAgICA8L2RkPgorICAgIDwvZGw+CisgIDwvYmxvY2txdW90ZT4KIAotCTxsaT5tb2RpZnkgPGNvZGU+bWstMXN0LmF3azwvY29kZT4gc28gdGhlIGdlbmVyYXRlZCBtYWtlZmlsZSBydWxlcyBmb3IKLQkgICAgbGlua2luZyBvciBpbnN0YWxsaW5nIHNoYXJlZCBsaWJyYXJpZXMgZG8gbm90IGZpcnN0IHJlbW92ZSB0aGUKLQkgICAgbGlicmFyeSwgaW4gY2FzZSBpdCBpcyBpbiB1c2UsIGUuZy4sIDxjb2RlPmxpYm5jdXJzZXMuc288L2NvZGU+IGJ5Ci0JICAgIDxjb2RlPi9iaW4vc2g8L2NvZGU+LgorICA8cD5hbmQgZmluYWxseSwgdGhvc2Ugd2hpY2ggdXNlIG9ubHkgdGhlIHRlcm1jYXAgaW50ZXJmYWNlOjwvcD4KIAotCTxsaT5jb3JyZWN0IGNoZWNrIGZvciBub3RpbWVvdXQoKSBpbiB3Z2V0Y2goKS4KKyAgPGJsb2NrcXVvdGU+CisgICAgPGRsPgorICAgICAgPGR0PmVtYWNzPC9kdD4KIAotCTxsaT5maXggYSBzaWduLWV4dGVuc2lvbiBidWcgaW4gaW5mb2NtcCdzIHJlcGFpcl9hY3NjKCkgZnVuY3Rpb24uCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRleHQgZWRpdG9yPC9wPgogCi0JPGxpPmNoYW5nZSB3aW5uc3RyKCkgdG8gc3RvcCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VtYWNzLyI+aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VtYWNzLzwvYT48L3A+CisgICAgICA8L2RkPgogCi0JPGxpPm1ha2UgQWRhOTUgZGVtb19wYW5lbHMoKSBleGFtcGxlIHdvcmsuCisgICAgICA8ZHQ+c2NyZWVuPC9kdD4KIAotCTxsaT5maXggZm9yIGFkZGluZyBhIG5vbi1zcGFjaW5nIGNoYXJhY3RlciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4KKyAgICAgIDxkZD4KKyAgICAgICAgPHA+dGVybWluYWwgbXVsdGlwbGV4b3I8L3A+CiAKLQk8bGk+ZmlsbCBpbiBleHRlbmRlZC1jb2xvciBwYWlyIHRvIG1ha2UgY29sb3JzIHdvcmsKLQkgICAgZm9yIHdpZGUtY2hhcmFjdGVycyB1c2luZyBleHRlbmRlZC1jb2xvcnMuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyI+aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi88L2E+PC9wPgorICAgICAgPC9kZD4KIAotCTxsaT5pbXByb3ZlIHJlZnJlc2ggb2Ygd2luZG93IG9uIHRvcCBvZiBtdWx0aS1jb2x1bW4gY2hhcmFjdGVycywKLQkgICAgdGFraW5nIGludG8gYWNjb3VudCBzcGxpdCBjaGFyYWN0ZXJzIG9uIGxlZnQvcmlnaHQgd2luZG93Ci0JICAgIGJvdW5kYXJpZXMuCisgICAgICA8ZHQ+dmltPC9kdD4KIAotCTxsaT5tb2RpZnkgPGNvZGU+d2luX3djaG5zdHIoKTwvY29kZT4gdG8gZW5zdXJlIHRoYXQgb25seSBhIGJhc2UgY2VsbAotCSAgICBpcyByZXR1cm5lZCBmb3IgZWFjaCBtdWx0aS1jb2x1bW4gY2hhcmFjdGVyLgorICAgICAgPGRkPgorICAgICAgICA8cD50ZXh0IGVkaXRvcjwvcD4KIAotCTxsaT5pbXByb3ZlIDxjb2RlPndhZGRjaCgpPC9jb2RlPiBhbmQgPGNvZGU+d2luc2NoKCk8L2NvZGU+IGhhbmRsaW5nIG9mCi0JICAgIEVJTFNFUSBmcm9tIDxjb2RlPm1icnRvd2MoKTwvY29kZT4gYnkgdXNpbmcgPGNvZGU+dW5jdHJsKCk8L2NvZGU+Ci0JICAgIHRvIGRpc3BsYXkgaWxsZWdhbCBieXRlcyByYXRoZXIgdGhhbiB0cnlpbmcgdG8gYXBwZW5kIGZ1cnRoZXIgYnl0ZXMKLQkgICAgdG8gbWFrZSB1cCBhIHZhbGlkIHNlcXVlbmNlLgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy52aW0ub3JnLyI+aHR0cDovL3d3dy52aW0ub3JnLzwvYT48L3A+CisgICAgICA8L2RkPgorICAgIDwvZGw+CisgIDwvYmxvY2txdW90ZT4KIAotCTxsaT5yZXN0b3JlIDxjb2RlPmN1cnNfc2V0KCk8L2NvZGU+IHN0YXRlIGFmdGVyCi0JICAgIDxjb2RlPmVuZHdpbigpPC9jb2RlPi88Y29kZT5yZWZyZXNoKCk8L2NvZGU+CisgIDxoMj48YSBuYW1lPSJoMi1kZXZlbG9wbWVudCIgaWQ9ImgyLWRldmVsb3BtZW50Ij5EZXZlbG9wbWVudAorICBhY3Rpdml0aWVzPC9hPjwvaDI+CiAKLQk8bGk+bW9kaWZ5IDxjb2RlPmtleW5hbWUoKTwvY29kZT4gdG8gdXNlICJeWCIgZm9ybSBvbmx5IGlmCi0JICAgIDxjb2RlPm1ldGEoKTwvY29kZT4gaGFzIGJlZW4gY2FsbGVkLCBvciBpZiA8Y29kZT5rZXluYW1lKCk8L2NvZGU+Ci0JICAgIGlzIGNhbGxlZCB3aXRob3V0IGluaXRpYWxpemluZyBjdXJzZXMsIGUuZy4sIHZpYQotCSAgICA8Y29kZT5pbml0c2NyKCk8L2NvZGU+IG9yIDxjb2RlPm5ld3Rlcm0oKTwvY29kZT4uCisgIDxwPlpleWQgQmVuLUhhbGltIHN0YXJ0ZWQgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4KKyAgZnJvbSBhIHByZXZpb3VzIHBhY2thZ2UgcGN1cnNlcywgd3JpdHRlbiBieSBQYXZlbCBDdXJ0aXMuIEVyaWMgUy4KKyAgUmF5bW9uZCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuIEomdXVtbDtyZ2VuIFBmZWlmZXIgd3JvdGUgbW9zdCBvZgorICB0aGUgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMuIE9uZ29pbmcgZGV2ZWxvcG1lbnQgd29yayBpcyBkb25lIGJ5CisgIDxhIGhyZWY9Im1haWx0bzpkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQiPlRob21hcyBEaWNrZXk8L2E+LgorICBUaG9tYXMgRGlja2V5IGFsc28gYWN0cyBhcyB0aGUgbWFpbnRhaW5lciBmb3IgdGhlIEZyZWUgU29mdHdhcmUKKyAgRm91bmRhdGlvbiwgd2hpY2ggaG9sZHMgdGhlIDxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWxpY2Vuc2UuaHRtbCI+Y29weXJpZ2h0CisgIG9uIG5jdXJzZXM8L2E+LjwvcD4KIAotCTxsaT5tb2RpZnkgPGNvZGU+dW5jdHJsKCk8L2NvZGU+IHRvIGNoZWNrIGNvZGVzIGluIDEyOC0yNTUgcmFuZ2UgdmVyc3VzCi0JICAgIDxjb2RlPmlzcHJpbnQoKTwvY29kZT4uCi0JICAgIElmIHRoZXkgYXJlIG5vdCBwcmludGFibGUsIGFuZCBsb2NhbGUgd2FzIHNldCwgdXNlIGEgIk0tIiBvciAifiIKLQkgICAgc2VxdWVuY2UuCisgIDxwPkNvbnRhY3QgdGhlIGN1cnJlbnQgbWFpbnRhaW5lcnMgYXQ8L3A+CiAKLQk8bGk+aW1wcm92ZSA8Y29kZT5yZXNpemV0ZXJtKCk8L2NvZGU+IGJ5IG1vdmluZyByaXBwZWQtb2ZmIGxpbmVzLCBhbmQKLQkgICAgcmVwYWludGluZyB0aGUgc29mdC1rZXlzLgorICA8YmxvY2txdW90ZT4KKyAgICA8YSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+YnVnLW5jdXJzZXNAZ251Lm9yZzwvYT4KKyAgPC9ibG9ja3F1b3RlPgogCi0JPGxpPm1vZGlmeSBmb3JtIGxpYnJhcnkgdG8gYWNjZXB0IGNvbnRyb2wgY2hhcmFjdGVycyBzdWNoIGFzIG5ld2xpbmUKLQkgICAgaW4gc2V0X2ZpZWxkX2J1ZmZlcigpLCB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggU29sYXJpcy4KKyAgPHA+VG8gam9pbiB0aGUgbmN1cnNlcyBtYWlsaW5nIGxpc3QsIHBsZWFzZSB3cml0ZSBlbWFpbCB0bzwvcD4KIAotCTxsaT51c2UgPGNvZGU+TkNVUlNFU19NT1VTRV9NQVNLKCk8L2NvZGU+IGluIGRlZmluaXRpb24gb2YKLQkgICAgPGNvZGU+QlVUVE9OX1JFTEVBU0UoKTwvY29kZT4sIGV0Yy4sIHRvIG1ha2UgdGhvc2Ugd29yayBwcm9wZXJseQotCSAgICB3aXRoIHRoZSA8Y29kZT4tLWVuYWJsZS1leHQtbW91c2U8L2NvZGU+IGNvbmZpZ3VyYXRpb24KKyAgPGJsb2NrcXVvdGU+CisgICAgPGEgaHJlZj0KKyAgICAibWFpbHRvOmJ1Zy1uY3Vyc2VzLXJlcXVlc3RAZ251Lm9yZyI+YnVnLW5jdXJzZXMtcmVxdWVzdEBnbnUub3JnPC9hPgorICA8L2Jsb2NrcXVvdGU+Y29udGFpbmluZyB0aGUgbGluZToKIAotCTxsaT5jb3JyZWN0IHNvbWUgZnVuY3Rpb25zIGluIEFkYTk1IGJpbmRpbmcgd2hpY2ggd2VyZSB1c2luZyByZXR1cm4KLQkgICAgdmFsdWUgZnJvbSBDIHdoZXJlIG5vbmUgd2FzIHJldHVybmVkLgorICA8YmxvY2txdW90ZT4KKyAgICA8cD48Y29kZT5zdWJzY3JpYmU8L2NvZGU+CisgICAgPGVtPiZsdDtuYW1lJmd0O0AmbHQ7aG9zdC5kb21haW4mZ3Q7PC9lbT48L3A+CisgIDwvYmxvY2txdW90ZT4KIAotCTxsaT5yZXZpZXdlZC9maXhlZCBpc3N1ZXMgcmVwb3J0ZWQgYnkgQ292ZXJpdHkgYW5kIEtsb2N3b3JrIHRvb2xzLgotPC91bD4KKyAgPHA+VGhpcyBsaXN0IGlzIG9wZW4gdG8gYW55b25lIGludGVyZXN0ZWQgaW4gaGVscGluZyB3aXRoIHRoZQorICBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBvZiB0aGlzIHBhY2thZ2UuPC9wPgogCi1Qb3J0YWJpbGl0eToKLTx1bD4KLSAgICAgICAgPGxpPmNvbmZpZ3VyZSBzY3JpcHQ6Ci0gICAgICAgICAgPHVsPgotICAgICAgICAgIDxsaT5uZXcgb3B0aW9uczoKLSAgICAgICAgICAgIDxkbD4KKyAgPHA+QmV0YSB2ZXJzaW9ucyBvZiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBhbmQKKyAgcGF0Y2hlcyB0byB0aGUgY3VycmVudCByZWxlYXNlIGFyZSBtYWRlIGF2YWlsYWJsZSBhdDwvcD4KIAotCSAgICA8ZHQ+LS1kaXNhYmxlLWJpZy1zdHJpbmdzCi0JICAgIDxkZD5jb250cm9sIHdoZXRoZXIgc3RhdGljIHN0cmluZyB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhcyBzaW5nbGUKLQkgICAgICAgIGxhcmdlIHN0cmluZ3MgKHRvIGltcHJvdmUgc3RhcnR1cCBwZXJmb3JtYW5jZSksIG9yIGFzIGFycmF5Ci0JCW9mIGluZGl2aWR1YWwgc3RyaW5ncy4KKyAgPGJsb2NrcXVvdGU+CisgICAgPHA+PGEgaHJlZj0KKyAgICAiZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8iPmZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvPC9hPiZuYnNwOy48L3A+CisgIDwvYmxvY2txdW90ZT4KIAotCSAgICA8ZHQ+LS1kaXNhYmxlLXJlbGluawotCSAgICA8ZGQ+Y29udHJvbCB3aGV0aGVyIHNoYXJlZCBsaWJyYXJpZXMgYXJlIHJlbGlua2VkIChkdXJpbmcgaW5zdGFsbCkKLQkJd2hlbiBycGF0aCBpcyBlbmFibGVkLgorICA8cD5UaGVyZSBpcyBhbiBhcmNoaXZlIG9mIHRoZSBtYWlsaW5nIGxpc3QgaGVyZTo8L3A+CiAKLQkgICAgPGR0Pi0tZGlzYWJsZS10aWMtZGVwZW5kcwotCSAgICA8ZGQ+bWFrZSBleHBsaWNpdCB3aGV0aGVyIHRpYyBsaWJyYXJ5IGRlcGVuZHMgb24gbmN1cnNlcy9uY3Vyc2VzdwotCSAgICAgICAgbGlicmFyeS4KKyAgPGJsb2NrcXVvdGU+CisgICAgPHA+PGEgaHJlZj0KKyAgICAiaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1uY3Vyc2VzIj5odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXM8L2E+CisgICAgKGFsc28gPGEgaHJlZj0KKyAgICAiaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctbmN1cnNlcyI+aHR0cHM8L2E+KTwvcD4KKyAgPC9ibG9ja3F1b3RlPgogCi0JICAgIDxkdD4tLWVuYWJsZS1taXhlZC1jYXNlCi0JICAgIDxkZD5vdmVycmlkZSB0aGUgY29uZmlndXJlIHNjcmlwdCdzIGNoZWNrIGlmIHRoZSBmaWxlc3lzdGVtCi0JCXN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzLgotCSAgICAgICAgVGhpcyBhbGxvd3Mgb25lIHRvIGNvbnRyb2wgaG93IHRoZSB0ZXJtaW5hbCBkYXRhYmFzZQotCQltYXBzIHRvIHRoZSBmaWxlc3lzdGVtLgotCQlGb3IgZmlsZXN5c3RlbXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtaXhlZC1jYXNlLCB0aGUgbGlicmFyeQotCQl1c2VzIGdlbmVyYXRlIDItY2hhcmFjdGVyIChoZXhhZGVjaW1hbCkgY29kZXMgZm9yIHRoZQotCQlsb3dlci1sZXZlbCBvZiB0aGUgZmlsZXN5c3RlbSB0ZXJtaW5mbyBkYXRhYmFzZQorICA8aDI+PGEgbmFtZT0iaDItdGhpcy1zdHVmZiIgaWQ9ImgyLXRoaXMtc3R1ZmYiPlJlbGF0ZWQKKyAgcmVzb3VyY2VzPC9hPjwvaDI+CiAKLQkgICAgPGR0Pi0tZW5hYmxlLXJlZW50cmFudAotCSAgICA8ZGQ+YnVpbGRzIGEgZGlmZmVyZW50IGZsYXZvciBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5IChuY3Vyc2VzdCkKLQkgICAgICAgIHdoaWNoIGltcHJvdmVzIHJlZW50cmFudCB1c2Ugb2YgdGhlCi0JCWxpYnJhcnkgYnkgcmVkdWNpbmcgZ2xvYmFsIGFuZCBzdGF0aWMgdmFyaWFibGVzCi0JICAgICAgICAoc2VlIHRoZSAiLS13aXRoLXB0aHJlYWQiIG9wdGlvbiBmb3IgdGhlIHRocmVhZGVkIHN1cHBvcnQpLgorICA8cD5UaGUgcmVsZWFzZSBub3RlcyBtYWtlIHNjYXR0ZXJlZCByZWZlcmVuY2VzIHRvIHRoZXNlIHBhZ2VzLAorICB3aGljaCBtYXkgYmUgaW50ZXJlc3RpbmcgYnkgdGhlbXNlbHZlczo8L3A+CiAKLQkgICAgPGR0Pi0tZW5hYmxlLXdlYWstc3ltYm9scwotCSAgICA8ZGQ+dXNlIHdlYWstc3ltYm9scyBmb3IgbGlua2luZyB0byB0aGUgUE9TSVggdGhyZWFkIGxpYnJhcnksCi0JICAgICAgICBhbmQgdXNlIHRoZSBzYW1lIHNvbmFtZSBmb3IgdGhlIG5jdXJzZXMgc2hhcmVkIGxpYnJhcnkKLQkJYXMgdGhlIG5vcm1hbCBsaWJyYXJ5IChjYXZlYXQ6IHRoZSBBQkkgaXMgZm9yIHRoZSB0aHJlYWRlZAotCQlsaWJyYXJ5LCB3aGljaCBtYWtlcyBnbG9iYWwgZGF0YSBhY2Nlc3NlZCB2aWEgZnVuY3Rpb25zKS4KKyAgPHVsPgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT48L2xpPgogCi0JICAgIDxkdD4tLXdpdGgtcHRocmVhZAotCSAgICA8ZGQ+YnVpbGQgd2l0aCB0aGUgUE9TSVggdGhyZWFkIGxpYnJhcnkgKHRlc3RlZCB3aXRoIEFJWCwKLQkgICAgICAgIExpbnV4LCBGcmVlQlNELCBPcGVuQlNELCBIUFVYLCBJUklYNjQsIFNvbGFyaXMsIFRydTY0KS4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1saWNlbnNlLmh0bWwiPgorICAgIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGxpY2Vuc2luZzwvYT48L2xpPgogCi0JICAgIDxkdD4tLXdpdGgtdGljbGliCi0JICAgIDxkZD5idWlsZC9pbnN0YWxsIHRoZSB0aWMtc3VwcG9ydCBmdW5jdGlvbnMgaW4gYSBzZXBhcmF0ZSBsaWJyYXJ5CisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWFwc3ltcy5odG1sIj5TeW1ib2wKKyAgICB2ZXJzaW9uaW5nIGluIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPjwvbGk+CiAKLSAgICAgICAgICAgIDwvZGw+CisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWluZ3cuaHRtbCI+VGhlCisgICAgTWluR1cgcG9ydCBvZiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPjwvYT48L2xpPgogCi0JICA8bGk+aW1wcm92ZWQgb3B0aW9uczoKLQkgICAgPGRsPgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWwiPnRhY2sgJm5kYXNoOworICAgIHRlcm1pbmZvIGFjdGlvbiBjaGVja2VyPC9hPjwvbGk+CiAKLQkgICAgPGR0Pi0tZW5hYmxlLWV4dC1jb2xvcnMKLQkgICAgPGRkPnJlcXVpcmVzIHRoZSB3aWRlLWNoYXJhY3RlciBjb25maWd1cmF0aW9uLgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYXV0b2NvbmYvcG9ydGFiaWxpdHktdGFyLmh0bWwiPnRhcgorICAgIHZlcnN1cyBwb3J0YWJpbGl0eTwvYT48L2xpPgogCi0JICAgIDxkdD4tLXdpdGgtY2h0eXBlCi0JICAgIDxkZD5pZ25vcmUgb3B0aW9uIHZhbHVlICJ1bnNpZ25lZCIgaXMgYWx3YXlzIGFkZGVkIHRvCi0JCXRoZSB0eXBlIGluIGN1cnNlcy5oOyBkbyB0aGUgc2FtZSBmb3IgLS13aXRoLW1tYXNrLXQuCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RjdGVzdC5odG1sIj50Y3Rlc3QKKyAgICAmbmRhc2g7IHRlcm1jYXAgbGlicmFyeSBjaGVja2VyPC9hPjwvbGk+CiAKLQkgICAgPGR0Pi0td2l0aC1kbWFsbG9jCi0JICAgIDxkZD5idWlsZC1maXggZm9yIHJlZGVmaW5pdGlvbiBvZiA8Y29kZT5zdHJuZHVwPC9jb2RlPi4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5odG1sI2Rvd25sb2FkX2RhdGFiYXNlIj4KKyAgICBUZXJtaW5hbCBEYXRhYmFzZTwvYT48L2xpPgorICA8L3VsPgogCi0JICAgIDxkdD4tLXdpdGgtaGFzaGVkLWRiCi0JICAgIDxkZD5hY2NlcHRzIGEgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBpbnN0YWxsLXByZWZpeCBvZiBhIGdpdmVuCi0JICAgICAgICBCZXJrZWxleSBEYXRhYmFzZS4KKyAgPGgyPjxhIG5hbWU9ImgyLW90aGVyLXN0dWZmIiBpZD0iaDItb3RoZXItc3R1ZmYiPk90aGVyCisgIHJlc291cmNlczwvYT48L2gyPgogCi0JICAgIDxkdD4tLXdpdGgtaGFzaGVkLWRiCi0JICAgIDxkZD50aGUgJExJQlMgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzIHRoZSBzZWFyY2ggZm9yIHRoZSBkYgotCQlsaWJyYXJ5LgorICA8cD5UaGUgZGlzdHJpYnV0aW9uIHByb3ZpZGVzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUKKyAgdGVybWluZm8tZm9ybWF0IHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZpbGUgb25jZSBtYWludGFpbmVkIGJ5CisgIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2F0Yi5vcmcvfmVzci90ZXJtaW5mby8iPkVyaWMKKyAgUmF5bW9uZDwvYT4mbmJzcDsuIFVubGlrZSB0aGUgb2xkZXIgdmVyc2lvbiwgdGhlIHRlcm1jYXAgYW5kCisgIHRlcm1pbmZvIGRhdGEgYXJlIHByb3ZpZGVkIGluIHRoZSBzYW1lIGZpbGUsIGFuZCBwcm92aWRlcyBzZXZlcmFsCisgIHVzZXItZGVmaW5hYmxlIGV4dGVuc2lvbnMgYmV5b25kIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi48L3A+CiAKLQkgICAgPGR0Pi0td2l0aG91dC1oYXNoZWQtZGIKLQkgICAgPGRkPmFzc3VtZWQgd2hlbiAiLS1kaXNhYmxlLWRhdGFiYXNlIiBpcyB1c2VkLgorICA8cD5Zb3UgY2FuIGZpbmQgbG90cyBvZiBpbmZvcm1hdGlvbiBvbiB0ZXJtaW5hbC1yZWxhdGVkIHRvcGljcworICBub3QgY292ZXJlZCBpbiB0aGUgdGVybWluZm8gZmlsZSBhdCA8YSBocmVmPQorICAiaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWwiPgorICBSaWNoYXJkIFNodWZvcmQncyBhcmNoaXZlPC9hPiZuYnNwOy48L3A+CiAKLQkgICAgPC9kbD4KKyAgPGRpdiBjbGFzcz0ibmF2Ij4KKyAgICA8dWw+CisgICAgICA8bGk+PGEgaHJlZj0iI2gyLW92ZXJ2aWV3Ij5PdmVydmlldzwvYT48L2xpPgogCi0JPC91bD4KKyAgICAgIDxsaT4KKyAgICAgICAgPGEgaHJlZj0iI2gyLXJlbGVhc2Utbm90ZXMiPlJlbGVhc2UgTm90ZXM8L2E+CiAKLQk8bGk+b3RoZXIgY29uZmlndXJlL2J1aWxkIGlzc3VlczoKLQkgIDx1bD4KLQkgIDxsaT5idWlsZC1maXhlcyBmb3IgTHlueE9TCi0JICA8bGk+bW9kaWZ5IHNoYXJlZC1saWJyYXJ5IHJ1bGVzIHRvIGFsbG93IEZyZWVCU0QgMy54IHRvIHVzZSBycGF0aC4KLQkgIDxsaT5idWlsZC1maXggZm9yIEZyZWVCU0QgImNvbnRlbXBvcmFyeSIgVFRZIGludGVyZmFjZS4KLQkgIDxsaT5idWlsZC1maXhlcyBmb3IgQUlYIHdpdGggbGlidG9vbC4KLQkgIDxsaT5idWlsZC1maXhlcyBmb3IgRGFyd2luIGFuZCBsaWJ0b29sLgotCSAgPGxpPm1vZGlmeSBCZU9TLXNwZWNpZmljIGlmZGVmJ3MgdG8gYnVpbGQgb24gSGFpa3UuCi0JICA8bGk+Y29ycmVjdGVkIGdjYyBvcHRpb25zIGZvciBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzIG9uIFNvbGFyaXMKLQkgICAgICBhbmQgSVJJWDY0LgotCSAgPGxpPmNoYW5nZSBzaGFyZWQtbGlicmFyeSBjb25maWd1cmF0aW9uIGZvciBPcGVuQlNELCBtYWtlIHJwYXRoIHdvcmsuCi0JICA8bGk+YnVpbGQtZml4ZXMgZm9yIHVzaW5nIGxpYnV0ZjgsIGUuZy4sIG9uIE9wZW5CU0QgMy43Ci0JICA8bGk+YWRkICItZSIgb3B0aW9uIGluIG5jdXJzZXMvTWFrZWZpbGUuaW4gd2hlbiBnZW5lcmF0aW5nIHNvdXJjZS1maWxlcwotCSAgICAgIHRvIGZvcmNlIGVhcmxpZXIgZXhpdCBpZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgZmFpbHMgdW5leHBlY3RlZGx5LgotCSAgPGxpPmFkZCBzdXBwb3J0IGZvciBzaGFyZWQgbGlicmFyaWVzIGZvciBRTlguCi0JICA8bGk+Y2hhbmdlIGRlbGltaXRlciBpbiA8Y29kZT5NS2xpYl9nZW4uc2g8L2NvZGU+IGZyb20gJyUnIHRvICdAJywgdG8KLQkgICAgICBhdm9pZCBzdWJzdGl0dXRpb24gYnkgSUJNIHhsYyB0byAnIycgYXMgcGFydCBvZiBpdHMgZXh0ZW5zaW9ucyB0bwotCSAgICAgIGRpZ3JhcGhzLgotCTwvdWw+CisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIjaDMtbGlicmFyeSI+TGlicmFyeSBpbXByb3ZlbWVudHM8L2E+CiAKLQk8bGk+bGlicmFyeToKLQk8dWw+Ci0JPGxpPnJld3JpdGUgd3JhcHBlciBmb3IgPGNvZGU+d2NydG9tYigpPC9jb2RlPiwgbWFraW5nIGl0IHdvcmsgb24KLQkgICAgU29sYXJpcy4gIFRoaXMgaXMgdXNlZCBpbiB0aGUgZm9ybSBsaWJyYXJ5IHRvIGRldGVybWluZSB0aGUgbGVuZ3RoCi0JICAgIG9mIHRoZSBidWZmZXIgbmVlZGVkIGJ5IDxjb2RlPmZpZWxkX2J1ZmZlcjwvY29kZT4uCi0JPGxpPmFkZC91c2UgY29uZmlndXJlIHNjcmlwdCBtYWNybyBDRl9TSUdfQVRPTUlDX1QsIHVzZSB0aGUgY29ycmVzcG9uZGluZwotCSAgICB0eXBlIGZvciBkYXRhIG1hbmlwdWxhdGVkIGJ5IHNpZ25hbCBoYW5kbGVycy4KLQk8bGk+c2V0IGxvY2FsZSBpbiBtaXNjL25jdXJzZXMtY29uZmlnLmluIHNpbmNlIGl0IHVzZXMgYSByYW5nZQotCTxsaT5kaXNhYmxlIEdQTSBtb3VzZSBzdXBwb3J0IHdoZW4gJFRFUk0gZG9lcyBub3QgaGFwcGVuIHRvIGNvbnRhaW4KLQkgICAgImxpbnV4Iiwgc2luY2UgR3BtX09wZW4oKSBubyBsb25nZXIgbGltaXRzIGl0cyBhc3NlcnRpb24gdG8gdGVybWluYWxzCi0JICAgIHRoYXQgaXQgbWlnaHQgaGFuZGxlLCBlLmcuLCB3aXRoaW4gInNjcmVlbiIgaW4geHRlcm0uCi0JPGxpPnJlc2V0IG1vdXNlIGZpbGUtZGVzY3JpcHRvciB3aGVuIHVubG9hZGluZyBHUE0gbGlicmFyeS4KLQk8L3VsPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2gzLWxpYi1zZXRidWYiPk91dHB1dAorICAgICAgICAgICAgICBidWZmZXJpbmc8L2E+PC9saT4KIAotCTxsaT50ZXN0IHByb2dyYW1zOgotCTx1bD4KLQk8bGk+dXBkYXRlIHRlc3QgcHJvZ3JhbXMgdG8gYnVpbGQvd29yayB3aXRoIHZhcmlvdXMgVU5JWCBjdXJzZXMgZm9yCi0JICAgIGNvbXBhcmlzb25zLgotCTwvdWw+Ci08L3VsPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2gzLWxpYi12ZXJzaW9uaW5nIj5TeW1ib2wKKyAgICAgICAgICAgICAgdmVyc2lvbmluZzwvYT48L2xpPgogCi08SDE+RmVhdHVyZXMgb2YgTmN1cnNlczwvSDE+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDMtbGliLW90aGVyIj5NaXNjZWxsYW5lb3VzPC9hPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAgIDwvbGk+CiAKLVRoZSBuY3Vyc2VzIHBhY2thZ2UgaXMgZnVsbHkgY29tcGF0aWJsZSB3aXRoIFNWcjQgKFN5c3RlbSBWIFJlbGVhc2UgNCkgY3Vyc2VzOgorICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxhIGhyZWY9IiNoMy1wcm9ncmFtcyI+UHJvZ3JhbSBpbXByb3ZlbWVudHM8L2E+CiAKLTxVTD4KLTxMST5BbGwgMjU3IG9mIHRoZSBTVnI0IGNhbGxzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCAoYW5kIGFyZSBkb2N1bWVudGVkKS4KLTxMST5GdWxsIHN1cHBvcnQgZm9yIFNWcjQgY3Vyc2VzIGZlYXR1cmVzIGluY2x1ZGluZyBrZXlib2FyZCBtYXBwaW5nLCBjb2xvciwKLWZvcm1zLWRyYXdpbmcgd2l0aCBBQ1MgY2hhcmFjdGVycywgYW5kIGF1dG9tYXRpYyByZWNvZ25pdGlvbiBvZiBrZXlwYWQKLWFuZCBmdW5jdGlvbiBrZXlzLgotPExJPkFuIGVtdWxhdGlvbiBvZiB0aGUgU1ZyNCBwYW5lbHMgbGlicmFyeSwgc3VwcG9ydGluZwotYSBzdGFjayBvZiB3aW5kb3dzIHdpdGggYmFja2luZyBzdG9yZSwgaXMgaW5jbHVkZWQuCi08TEk+QW4gZW11bGF0aW9uIG9mIHRoZSBTVnI0IG1lbnVzIGxpYnJhcnksIHN1cHBvcnRpbmcKLWEgdW5pZm9ybSBidXQgZmxleGlibGUgaW50ZXJmYWNlIGZvciBtZW51IHByb2dyYW1taW5nLCBpcyBpbmNsdWRlZC4KLTxMST5BbiBlbXVsYXRpb24gb2YgdGhlIFNWcjQgZm9ybSBsaWJyYXJ5LCBzdXBwb3J0aW5nCi1kYXRhIGNvbGxlY3Rpb24gdGhyb3VnaCBvbi1zY3JlZW4gZm9ybXMsIGlzIGluY2x1ZGVkLgotPExJPkJpbmFyeSB0ZXJtaW5mbyBlbnRyaWVzIGdlbmVyYXRlZCBieSB0aGUgbmN1cnNlcyB0aWMoMSkgaW1wbGVtZW50YXRpb24KLWFyZSBiaXQtZm9yLWJpdC1jb21wYXRpYmxlIHdpdGggdGhlIGVudHJ5IGZvcm1hdCBTVnI0IGN1cnNlcyB1c2VzLgotPExJPlRoZSB1dGlsaXRpZXMgaGF2ZSBvcHRpb25zIHRvIGFsbG93IHlvdSB0byBmaWx0ZXIgdGVybWluZm8KLWVudHJpZXMgZm9yIHVzZSB3aXRoIGxlc3MgY2FwYWJsZSA8U1RST05HPmN1cnNlczwvU1RST05HPi88U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+Ci12ZXJzaW9ucyBzdWNoIGFzIHRoZSBIUC9VWCBhbmQgQUlYIHBvcnRzLjwvVUw+CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtdXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+PC9saT4KIAotVGhlIG5jdXJzZXMgcGFja2FnZSBhbHNvIGhhcyBtYW55IHVzZWZ1bCBleHRlbnNpb25zIG92ZXIgU1ZyNDoKKyAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoNC1leGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgPC9saT4KIAotPFVMPgotPExJPlRoZSBBUEkgaXMgOC1iaXQgY2xlYW4gYW5kIGJhc2UtbGV2ZWwgY29uZm9ybWFudCB3aXRoIHRoZSBYL09QRU4gY3Vyc2VzCi1zcGVjaWZpY2F0aW9uLCBYU0kgY3Vyc2VzICh0aGF0IGlzLCBpdCBpbXBsZW1lbnRzIGFsbCBCQVNFIGxldmVsIGZlYXR1cmVzLAotYW5kIG1vc3QgRVhURU5ERUQgZmVhdHVyZXMpLgotSXQgaW5jbHVkZXMgbWFueSBmdW5jdGlvbiBjYWxscyBub3Qgc3VwcG9ydGVkIHVuZGVyIFNWcjQgY3Vyc2VzCi0oYnV0IHBvcnRhYmlsaXR5IG9mIGFsbAotY2FsbHMgaXMgZG9jdW1lbnRlZCBzbyB5b3UgY2FuIHVzZSB0aGUgU1ZyNCBzdWJzZXQgb25seSkuCi08TEk+VW5saWtlIFNWcjMgY3Vyc2VzLCBuY3Vyc2VzIGNhbiB3cml0ZSB0byB0aGUgcmlnaHRtb3N0LWJvdHRvbW1vc3QgY29ybmVyCi1vZiB0aGUgc2NyZWVuIGlmIHlvdXIgdGVybWluYWwgaGFzIGFuIGluc2VydC1jaGFyYWN0ZXIgY2FwYWJpbGl0eS4KLTxMST5BZGE5NSBhbmQgQysrIGJpbmRpbmdzLgotPExJPlN1cHBvcnQgZm9yIG1vdXNlIGV2ZW50IHJlcG9ydGluZyB3aXRoIFggV2luZG93IHh0ZXJtCi1hbmQgRnJlZUJTRCBhbmQgT1MvMiBjb25zb2xlIHdpbmRvd3MuCi08TEk+RXh0ZW5kZWQgbW91c2Ugc3VwcG9ydCB2aWEgQWxlc3NhbmRybyBSdWJpbmkncyBncG0gcGFja2FnZS4KLTxMST5UaGUgZnVuY3Rpb24gPENPREU+d3Jlc2l6ZSgpPC9DT0RFPiBhbGxvd3MgeW91IHRvIHJlc2l6ZSB3aW5kb3dzLCBwcmVzZXJ2aW5nCi10aGVpciBkYXRhLgotPExJPlRoZSBmdW5jdGlvbiA8Q09ERT51c2VfZGVmYXVsdF9jb2xvcnMoKTwvQ09ERT4gYWxsb3dzIHlvdSB0bwotdXNlIHRoZSB0ZXJtaW5hbCdzIGRlZmF1bHQgY29sb3JzIGZvciB0aGUgZGVmYXVsdCBjb2xvciBwYWlyLAotYWNoaWV2aW5nIHRoZSBlZmZlY3Qgb2YgdHJhbnNwYXJlbnQgY29sb3JzLgotPExJPlRoZSBmdW5jdGlvbnMgPENPREU+a2V5b2soKTwvQ09ERT4KLWFuZCA8Q09ERT5kZWZpbmVfa2V5KCk8L0NPREU+IGFsbG93Ci15b3UgdG8gYmV0dGVyIGNvbnRyb2wgdGhlIHVzZSBvZiBmdW5jdGlvbiBrZXlzLAotZS5nLiwgZGlzYWJsaW5nIHRoZSBuY3Vyc2VzIEtFWV9NT1VTRSwKLW9yIGJ5IGRlZmluaW5nIG1vcmUgdGhhbiBvbmUgY29udHJvbCBzZXF1ZW5jZSB0byBtYXAgdG8gYSBnaXZlbiBrZXkgY29kZS4KLTxMST5TdXBwb3J0IGZvciAyNTYtY29sb3IgdGVybWluYWxzLCBzdWNoIGFzIG1vZGVybiB4dGVybSwgd2hlbiBjb25maWd1cmVkCi11c2luZyB0aGUgPGNvZGU+LS1lbmFibGUtZXh0LWNvbG9yczwvY29kZT4gb3B0aW9uLgotPExJPlN1cHBvcnQgZm9yIDE2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyBhaXh0ZXJtIGFuZCBtb2Rlcm4geHRlcm0uCi08TEk+QmV0dGVyIGN1cnNvci1tb3ZlbWVudCBvcHRpbWl6YXRpb24uICBUaGUgcGFja2FnZSBub3cgZmVhdHVyZXMgYQotY3Vyc29yLWxvY2FsLW1vdmVtZW50IGNvbXB1dGF0aW9uIG1vcmUgZWZmaWNpZW50IHRoYW4gZWl0aGVyIEJTRCdzCi1vciBTeXN0ZW0gVidzLgotPExJPlN1cGVyIGhhcmR3YXJlIHNjcm9sbGluZyBzdXBwb3J0LiAgVGhlIHNjcmVlbi11cGRhdGUgY29kZSBpbmNvcnBvcmF0ZXMKLWEgbm92ZWwsIHNpbXBsZSwgYW5kIGNoZWFwIGFsZ29yaXRobSB0aGF0IGVuYWJsZXMgaXQgdG8gbWFrZSBvcHRpbWFsCi11c2Ugb2YgaGFyZHdhcmUgc2Nyb2xsaW5nLCBsaW5lLWluc2VydGlvbiwgYW5kIGxpbmUtZGVsZXRpb24KLWZvciBzY3JlZW4tbGluZSBtb3ZlbWVudHMuICBUaGlzIGFsZ29yaXRobSBpcyBtb3JlIHBvd2VyZnVsIHRoYW4KLXRoZSA0LjRCU0QgY3Vyc2VzIHF1aWNrY2goKSByb3V0aW5lLgotPExJPlJlYWwgc3VwcG9ydCBmb3IgdGVybWluYWxzIHdpdGggdGhlIG1hZ2ljLWNvb2tpZSBnbGl0Y2guICBUaGUKLXNjcmVlbi11cGRhdGUgY29kZSB3aWxsIHJlZnJhaW4gZnJvbSBkcmF3aW5nIGEgaGlnaGxpZ2h0IGlmIHRoZSBtYWdpYy0KLWNvb2tpZSB1bmF0dHJpYnV0ZWQgc3BhY2VzIHJlcXVpcmVkIGp1c3QgYmVmb3JlIHRoZSBiZWdpbm5pbmcgYW5kCi1hZnRlciB0aGUgZW5kIHdvdWxkIHN0ZXAgb24gYSBub24tc3BhY2UgY2hhcmFjdGVyLiAgSXQgd2lsbAotYXV0b21hdGljYWxseSBzaGlmdCBoaWdobGlnaHQgYm91bmRhcmllcyB3aGVuIGRvaW5nIHNvIHdvdWxkIG1ha2UgaXQKLXBvc3NpYmxlIHRvIGRyYXcgdGhlIGhpZ2hsaWdodCB3aXRob3V0IGNoYW5naW5nIHRoZSB2aXN1YWwgYXBwZWFyYW5jZQotb2YgdGhlIHNjcmVlbi4KLTxMST5JdCBpcyBwb3NzaWJsZSB0byBnZW5lcmF0ZSB0aGUgbGlicmFyeSB3aXRoIGEgbGlzdCBvZiBwcmUtbG9hZGVkCi1mYWxsYmFjayBlbnRyaWVzIGxpbmtlZCB0byBpdCBzbyB0aGF0IGl0IGNhbiBzZXJ2ZSB0aG9zZSB0ZXJtaW5hbCB0eXBlcyBldmVuCi13aGVuIG5vIHRlcm1pbmZvIHRyZWUgb3IgdGVybWNhcCBmaWxlIGlzIGFjY2Vzc2libGUgKHRoaXMgbWF5IGJlIHVzZWZ1bAotZm9yIHN1cHBvcnQgb2Ygc2NyZWVuLW9yaWVudGVkIHByb2dyYW1zIHRoYXQgbXVzdCBydW4gaW4gc2luZ2xlLXVzZXIgbW9kZSkuCi08TEk+VGhlIHRpYygxKS9jYXB0b2luZm8gdXRpbGl0eSBwcm92aWRlZCB3aXRoIG5jdXJzZXMgaGFzIHRoZQotYWJpbGl0eSB0byB0cmFuc2xhdGUgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNIGFuZAotQVQmYW1wO1QgZXh0ZW5zaW9uIHNldHMuCi08TEk+QSBCU0QtbGlrZSB0c2V0KDEpIHV0aWxpdHkgaXMgcHJvdmlkZWQuCi08TEk+VGhlIG5jdXJzZXMgbGlicmFyeSBhbmQgdXRpbGl0aWVzIHdpbGwgYXV0b21hdGljYWxseSByZWFkIHRlcm1pbmZvCi1lbnRyaWVzIGZyb20gJEhPTUUvLnRlcm1pbmZvIGlmIGl0IGV4aXN0cywgYW5kIGNvbXBpbGUgdG8gdGhhdCBkaXJlY3RvcnkKLWlmIGl0IGV4aXN0cyBhbmQgdGhlIHVzZXIgaGFzIG5vIHdyaXRlIGFjY2VzcyB0byB0aGUgc3lzdGVtIGRpcmVjdG9yeS4KLVRoaXMgZmVhdHVyZSBtYWtlcyBpdCBlYXNpZXIgZm9yIHVzZXJzIHRvIGhhdmUgcGVyc29uYWwgdGVybWluZm8gZW50cmllcwotd2l0aG91dCBnaXZpbmcgdXAgYWNjZXNzIHRvIHRoZSBzeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5LgotPExJPllvdSBtYXkgc3BlY2lmeSBhIHBhdGggb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBjb21waWxlZAotZGVzY3JpcHRpb25zIHdpdGggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFRFUk1JTkZPX0RJUlMgKHRoaXMKLWdlbmVyYWxpemVzIHRoZSBmZWF0dXJlIHByb3ZpZGVkIGJ5IFRFUk1JTkZPIHVuZGVyIHN0b2NrIFN5c3RlbSBWLikKLTxMST5JbiB0ZXJtaW5mbyBzb3VyY2UgZmlsZXMsIHVzZSBjYXBhYmlsaXRpZXMgbWF5IHJlZmVyIG5vdCBqdXN0IHRvCi1vdGhlciBlbnRyaWVzIGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlIChhcyBpbiBTeXN0ZW0gVikgYnV0IGFsc28gdG8KLWNvbXBpbGVkIGVudHJpZXMgaW4gZWl0aGVyIHRoZSBzeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5IG9yIHRoZSB1c2VyJ3MKLSRIT01FLy50ZXJtaW5mbyBkaXJlY3RvcnkuCi08TEk+QSBzY3JpcHQgKDxTVFJPTkc+Y2FwY29udmVydDwvU1RST05HPikgaXMgcHJvdmlkZWQgdG8gaGVscCBCU0QgdXNlcnMKLXRyYW5zaXRpb24gZnJvbSB0ZXJtY2FwIHRvIHRlcm1pbmZvLiAgSXQgZ2F0aGVycyB0aGUgaW5mb3JtYXRpb24gaW4gYQotVEVSTUNBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQvb3IgYSB+Ly50ZXJtY2FwIGxvY2FsIGVudHJpZXMgZmlsZQotYW5kIGNvbnZlcnRzIGl0IHRvIGFuIGVxdWl2YWxlbnQgbG9jYWwgdGVybWluZm8gdHJlZSB1bmRlciAkSE9NRS8udGVybWluZm8uCi08TEk+QXV0b21hdGljIGZhbGxiYWNrIHRvIHRoZSAvZXRjL3Rlcm1jYXAgZmlsZSBjYW4gYmUgY29tcGlsZWQgaW4KLXdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGJ1aWxkIGEgdGVybWluZm8gdHJlZS4gIFRoaXMgZmVhdHVyZSBpcyBuZWl0aGVyCi1mYXN0IG5vciBjaGVhcCwgeW91IGRvbid0IHdhbnQgdG8gdXNlIGl0IHVubGVzcyB5b3UgaGF2ZSB0bywKLWJ1dCBpdCdzIHRoZXJlLgotPExJPlRoZSB0YWJsZS1vZi1lbnRyaWVzIHV0aWxpdHkgPFNUUk9ORz50b2U8L1NUUk9ORz4gbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8KLXNlZSBleGFjdGx5IHdoYXQgdGVybWluYWwgdHlwZXMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgotPExJPlRoZSBsaWJyYXJ5IG1lZXRzIHRoZSBYU0kgcmVxdWlyZW1lbnQgdGhhdCBldmVyeSBtYWNybyBlbnRyeQotcG9pbnQgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gd2hpY2ggbWF5IGJlIGxpbmtlZCAoYW5kIHdpbGwgYmUKLXByb3RvdHlwZS1jaGVja2VkKSBpZiB0aGUgbWFjcm8gZGVmaW5pdGlvbiBpcyBkaXNhYmxlZCB3aXRoCi08Q09ERT4jdW5kZWY8L0NPREU+LgotPExJPkFuIEhUTUwgIkludHJvZHVjdGlvbiB0byBQcm9ncmFtbWluZyB3aXRoIE5DVVJTRVMiIGRvY3VtZW50IHByb3ZpZGVzCi1hIG5hcnJhdGl2ZSBpbnRyb2R1Y3Rpb24gdG8gdGhlIGN1cnNlcyBwcm9ncmFtbWluZyBpbnRlcmZhY2UuCi08L1VMPgorICAgICAgICAgIDxsaT48YSBocmVmPSIjaDMtZGF0YWJhc2UiPlRlcm1pbmFsIGRhdGFiYXNlPC9hPjwvbGk+CiAKLTxIMT5TdGF0ZSBvZiB0aGUgUGFja2FnZTwvSDE+CisgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoMy1kb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAKLU51bWVyb3VzIGJ1Z3MgcHJlc2VudCBpbiBlYXJsaWVyIHZlcnNpb25zIGhhdmUgYmVlbiBmaXhlZDsgdGhlCi1saWJyYXJ5IGlzIGZhciBtb3JlIHJlbGlhYmxlIHRoYW4gaXQgdXNlZCB0byBiZS4gIEJvdW5kcyBjaGVja2luZyBpbiBtYW55Ci1gZGFuZ2Vyb3VzJyBlbnRyeSBwb2ludHMgaGFzIGJlZW4gaW1wcm92ZWQuICBUaGUgY29kZSBpcyBub3cgdHlwZS1zYWZlCi1hY2NvcmRpbmcgdG8gZ2NjIC1XYWxsLiAgVGhlIGxpYnJhcnkgaGFzIGJlZW4gY2hlY2tlZCBmb3IgbWFsbG9jIGxlYWtzIGFuZAotYXJlbmEgY29ycnVwdGlvbiBieSB0aGUgUHVyaWZ5IG1lbW9yeS1hbGxvY2F0aW9uIHRlc3Rlci48UD4KKyAgICAgICAgICA8bGk+PGEgaHJlZj0iI2gzLWJ1Zy1maXhlcyI+SW50ZXJlc3RpbmcKKyAgICAgICAgICBidWctZml4ZXM8L2E+PC9saT4KIAotVGhlIG5jdXJzZXMgY29kZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMKLWluY2x1ZGluZyAodmVyc2lvbnMgc3RhcnRpbmcgd2l0aCB0aG9zZSBub3RlZCk6Ci08REw+Ci08RFQ+IGNkawotPEREPiBDdXJzZXMgRGV2ZWxvcG1lbnQgS2l0Ci08YnI+Ci08QSBIUkVGPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvY2RrLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay88L0E+Ci08YnI+Ci08QSBIUkVGPSJodHRwOi8vd3d3LnZleHVzLmNhL3Byb2R1Y3RzL0NESy8iPmh0dHA6Ly93d3cudmV4dXMuY2EvcHJvZHVjdHMvQ0RLLzwvYT4KLTxEVD4gZGVkCi08REQ+IGRpcmVjdG9yeS1lZGl0b3IKLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLzwvQT4KLTxEVD4gZGlhbG9nCi08REQ+IHRoZSB1bmRlcmx5aW5nIGFwcGxpY2F0aW9uIHVzZWQgaW4gU2xhY2t3YXJlJ3Mgc2V0dXAsIGFuZCB0aGUgYmFzaXMKLWZvciBzaW1pbGFyIGFwcGxpY2F0aW9ucyBvbiBHTlUvTGludXguCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy88L0E+Ci08RFQ+IGx5bngKLTxERD4gdGhlIGNoYXJhY3Rlci1zY3JlZW4gV1dXIGJyb3dzZXIKLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly9seW54LmlzYy5vcmcvcmVsZWFzZS8iPmh0dHA6Ly9seW54LmlzYy5vcmcvcmVsZWFzZS88L0E+Ci08RFQ+IE1pZG5pZ2h0IENvbW1hbmRlcgotPEREPiBmaWxlIG1hbmFnZXIKLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvbWMvIj5odHRwOi8vd3d3LmliaWJsaW8ub3JnL21jLzwvQT4KLTxEVD4gbXV0dAotPEREPiBtYWlsIHV0aWxpdHkKLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly93d3cubXV0dC5vcmcvIj5odHRwOi8vd3d3Lm11dHQub3JnLzwvQT4KLTxEVD4gbmNmdHAKLTxERD4gZmlsZS10cmFuc2ZlciB1dGlsaXR5Ci08YnI+Ci08QSBIUkVGPSJodHRwOi8vd3d3Lm5jZnRwLmNvbS8iPmh0dHA6Ly93d3cubmNmdHAuY29tLzwvQT4KLTxEVD4gbnZpCi08REQ+IE5ldyB2aSB2ZXJzaW9ucyAxLjUwIGFyZSBhYmxlIHRvIHVzZSBuY3Vyc2VzIHZlcnNpb25zIDEuOS43IGFuZCBsYXRlci4KLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly93d3cuYm9zdGljLmNvbS92aS8iPmh0dHA6Ly93d3cuYm9zdGljLmNvbS92aS88L0E+Ci08YnI+Ci08RFQ+IHBpbmZvCi08REQ+IEx5bngtbGlrZSBpbmZvIGJyb3dzZXIuCi08QSBIUkVGPSJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL3BpbmZvLyI+aHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9waW5mby88L0E+Ci08RFQ+IHRpbgotPEREPiBuZXdzcmVhZGVyLCBzdXBwb3J0aW5nIGNvbG9yLCBNSU1FCi08QSBIUkVGPSJodHRwOi8vd3d3LnRpbi5vcmcvIj5odHRwOi8vd3d3LnRpbi5vcmcvPC9BPgotPC9ETD4KLWFzIHdlbGwgYXMgc29tZSB0aGF0IHVzZSBuY3Vyc2VzIGZvciB0aGUgdGVybWluZm8gc3VwcG9ydCBhbG9uZToKLTxETD4KLTxEVD4gbWluaWNvbQotPEREPiB0ZXJtaW5hbCBlbXVsYXRvcgotPGJyPgotPEEgSFJFRj0iaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL21pbmljb20vIj4KLWh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLzwvQT4KLTxEVD4gdmlsZQotPEREPiB2aS1saWtlLWVtYWNzCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS8iPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLzwvQT4KLTwvREw+Ci08UD4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIjaDMtY29uZmlnLWNvbmZpZyI+Q29uZmlndXJhdGlvbiBjaGFuZ2VzPC9hPgogCi1UaGUgbmN1cnNlcyBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZWxlY3Rpb24gb2YgdGVzdCBwcm9ncmFtcyAoaW5jbHVkaW5nCi1hIGZldyBnYW1lcykuCisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtY29uZmlnLW1ham9yIj5NYWpvciBjaGFuZ2VzPC9hPjwvbGk+CiAKLTxIMj5XaG8ncyBXaG8gYW5kIFdoYXQncyBXaGF0PC9IMj4KKyAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoNC1jb25maWctb3B0aW9ucyI+Q29uZmlndXJhdGlvbgorICAgICAgICAgICAgICBvcHRpb25zPC9hPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAgIDwvbGk+CiAKLVpleWQgQmVuLUhhbGltCi1zdGFydGVkIGl0IGZyb20gYSBwcmV2aW91cyBwYWNrYWdlIHBjdXJzZXMsIHdyaXR0ZW4gYnkgUGF2ZWwgQ3VydGlzLgotRXJpYyBTLiBSYXltb25kCi1jb250aW51ZWQgZGV2ZWxvcG1lbnQuCi1KJnV1bWw7cmdlbiBQZmVpZmVyIHdyb3RlIG1vc3Qgb2YgdGhlIGZvcm0gYW5kIG1lbnUgbGlicmFyaWVzLgotT25nb2luZyB3b3JrIGlzIGJlaW5nIGRvbmUgYnkKLTxBIEhSRUY9Im1haWx0bzpkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQiPlRob21hcyBEaWNrZXk8L0E+LgotVGhvbWFzIERpY2tleQotYWN0cyBhcyB0aGUgbWFpbnRhaW5lciBmb3IgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLXdoaWNoIGhvbGRzIHRoZSBjb3B5cmlnaHQgb24gbmN1cnNlcy4KLUNvbnRhY3QgdGhlIGN1cnJlbnQgbWFpbnRhaW5lcnMgYXQKLTxBIEhSRUY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj5idWctbmN1cnNlc0BnbnUub3JnPC9BPi4KLTxQPgorICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxhIGhyZWY9IiNoMy1wb3J0YWJpbGl0eSI+UG9ydGFiaWxpdHk8L2E+CiAKLVRvIGpvaW4gdGhlIG5jdXJzZXMgbWFpbGluZyBsaXN0LCBwbGVhc2Ugd3JpdGUgZW1haWwgdG8KLTxDT0RFPmJ1Zy1uY3Vyc2VzLXJlcXVlc3RAZ251Lm9yZzwvQ09ERT4gY29udGFpbmluZyB0aGUgbGluZToKLTxQUkU+Ci0gICAgICAgICAgICAgc3Vic2NyaWJlICZsdDtuYW1lJmd0O0AmbHQ7aG9zdC5kb21haW4mZ3Q7Ci08L1BSRT4KKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoNC1wb3J0LW1pbmd3Ij5NaW5HVzwvYT48L2xpPgogCi1UaGlzIGxpc3QgaXMgb3BlbiB0byBhbnlvbmUgaW50ZXJlc3RlZCBpbiBoZWxwaW5nIHdpdGggdGhlIGRldmVsb3BtZW50IGFuZAotdGVzdGluZyBvZiB0aGlzIHBhY2thZ2UuPFA+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtcG9ydC1zeXN0ZW1zIj5PdGhlciBwb3J0czwvYT48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L3VsPgorICAgICAgPC9saT4KIAotQmV0YSB2ZXJzaW9ucyBvZiBuY3Vyc2VzIGFuZCBwYXRjaGVzIHRvIHRoZSBjdXJyZW50IHJlbGVhc2UgYXJlIG1hZGUgYXZhaWxhYmxlIGF0Ci08QSBIUkVGPSJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLyI+ZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy88L0E+Jm5ic3A7LgorICAgICAgPGxpPjxhIGhyZWY9IiNoMi1mZWF0dXJlcyI+RmVhdHVyZXMgb2YgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPjwvYT48L2xpPgogCi08SDI+RnV0dXJlIFBsYW5zPC9IMj4KLTxVTD4KLTxMST5FeHRlbmRlZC1sZXZlbCBYUEc0IGNvbmZvcm1hbmNlLCB3aXRoIGludGVybmF0aW9uYWxpemF0aW9uIHN1cHBvcnQuCi08TEk+UG9ydHMgdG8gbW9yZSBzeXN0ZW1zLCBpbmNsdWRpbmcgRE9TIGFuZCBXaW5kb3dzLgotPC9VTD4KLVdlIG5lZWQgcGVvcGxlIHRvIGhlbHAgd2l0aCB0aGVzZSBwcm9qZWN0cy4gIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB3b3JraW5nCi1vbiB0aGVtLCBwbGVhc2Ugam9pbiB0aGUgbmN1cnNlcyBsaXN0LgorICAgICAgPGxpPjxhIGhyZWY9IiNoMi13aG8tdXNlcyI+QXBwbGljYXRpb25zIHVzaW5nIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+PC9saT4KIAotPEgyPk90aGVyIFJlbGF0ZWQgUmVzb3VyY2VzPC9IMj4KKyAgICAgIDxsaT48YSBocmVmPSIjaDItZGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50IGFjdGl2aXRpZXM8L2E+PC9saT4KIAotVGhlIGRpc3RyaWJ1dGlvbiBwcm92aWRlcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIHRlcm1pbmZvLWZvcm1hdAotdGVybWluYWwgZGVzY3JpcHRpb24gZmlsZSBvbmNlIG1haW50YWluZWQgYnkKLTxBIEhSRUY9Imh0dHA6Ly93d3cuY2F0Yi5vcmcvfmVzci90ZXJtaW5mby8iPkVyaWMgUmF5bW9uZDwvQT4mbmJzcDsuCi1Vbmxpa2UgdGhlIG9sZGVyIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZCB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZAotaW4gdGhlIHNhbWUgZmlsZSwgYW5kIHByb3ZpZGVzIHNldmVyYWwgdXNlci1kZWZpbmFibGUgZXh0ZW5zaW9ucwotYmV5b25kIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi48UD4KKyAgICAgIDxsaT48YSBocmVmPSIjaDItdGhpcy1zdHVmZiI+UmVsYXRlZCByZXNvdXJjZXM8L2E+PC9saT4KIAotWW91IGNhbiBmaW5kIGxvdHMgb2YgaW5mb3JtYXRpb24gb24gdGVybWluYWwtcmVsYXRlZCB0b3BpY3MKLW5vdCBjb3ZlcmVkIGluIHRoZSB0ZXJtaW5mbyBmaWxlIGF0Ci08QSBIUkVGPSJodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWxfaW5kZXguaHRtbCI+UmljaGFyZCBTaHVmb3JkJ3MKLWFyY2hpdmU8L0E+Jm5ic3A7LgotPC9CT0RZPgotPC9IVE1MPgotPCEtLQotIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgbW9kZTpodG1sCi0jIGNhc2UtZm9sZC1zZWFyY2g6bmlsCi0jIGZpbGwtY29sdW1uOjcwCi0jIEVuZDoKLS0tPgorICAgICAgPGxpPjxhIGhyZWY9IiNoMi1vdGhlci1zdHVmZiI+T3RoZXIgcmVzb3VyY2VzPC9hPjwvbGk+CisgICAgPC91bD4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9jKysvTWFrZWZpbGUuaW4gYi9jKysvTWFrZWZpbGUuaW4KaW5kZXggOTZkNTg3OS4uNGY1Yjk2MCAxMDA2NDQKLS0tIGEvYysrL01ha2VmaWxlLmluCisrKyBiL2MrKy9NYWtlZmlsZS5pbgpAQCAtMSw2ICsxLDYgQEAKLSMgJElkOiBNYWtlZmlsZS5pbix2IDEuODQgMjAwNy8wNC8yOCAxNToyOToxMiB0b20gRXhwICQKKyMgJElkOiBNYWtlZmlsZS5pbix2IDEuMTExIDIwMTUvMDgvMDUgMjM6MTU6NDEgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0zNCw3ICszNCw4IEBACiAjIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogCiBDRl9NRkxBR1MgCT0gQGNmX2N2X21ha2VmbGFnc0AKIEBTRVRfTUFLRUAKQEAgLTQzLDI4ICs0NCw0MSBAQAogCiBNT0RFTAkJPSAuLi9AREZUX09CSl9TVUJESVJACiBERVNURElSCQk9IEBERVNURElSQAordG9wX3NyY2Rpcgk9IEB0b3Bfc3JjZGlyQAogc3JjZGlyCQk9IEBzcmNkaXJACiBwcmVmaXgJCT0gQHByZWZpeEAKIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAorYmluZGlyCQk9IEBiaW5kaXJACiBsaWJkaXIJCT0gQGxpYmRpckAKIGluY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKK2luY2x1ZGVzdWJkaXIJPSBAaW5jbHVkZXN1YmRpckAKKworSU5DTFVERURJUgk9ICQoREVTVERJUikkKGluY2x1ZGVkaXIpJChpbmNsdWRlc3ViZGlyKQorCitQQUNLQUdFCQk9IEBQQUNLQUdFQAogCiBMSUJUT09MCQk9IEBMSUJUT09MX0NYWEAKK0xJQlRPT0xfT1BUUwk9IEBMSUJUT09MX09QVFNACiBMSUJUT09MX0NMRUFOCT0gQExJQl9DTEVBTkAKIExJQlRPT0xfQ09NUElMRQk9IEBMSUJfQ09NUElMRUAKIExJQlRPT0xfTElOSwk9IEBMSUJfTElOS0AKIExJQlRPT0xfSU5TVEFMTAk9IEBMSUJfSU5TVEFMTEAKIExJQlRPT0xfVU5JTlNUQUxMID0gQExJQl9VTklOU1RBTExACitMSUJUT09MX1ZFUlNJT04gPSBATElCVE9PTF9WRVJTSU9OQAorTFRfVU5ERUYJPSBATFRfVU5ERUZACiAKIElOU1RBTEwJCT0gQElOU1RBTExACiBJTlNUQUxMX0xJQgk9IEBJTlNUQUxMQCBASU5TVEFMTF9MSUJACiBJTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQAogCiBBUgkJPSBAQVJACi1BUl9PUFRTCQk9IEBBUl9PUFRTQAorQVJGTEFHUwkJPSBAQVJGTEFHU0AKK0FXSwkJPSBAQVdLQAorTEQJCT0gQExEQAorTE5fUwkJPSBATE5fU0AKIAogQ1hYX0FSCQk9IEBDWFhfQVJACi1DWFhfQVJfT1BUUwk9IEBDWFhfQVJfT1BUU0AKK0NYWF9BUkZMQUdTCT0gQENYWF9BUkZMQUdTQAogUkFOTElCCQk9IEBMSUJfUFJFUEAKIAogQ1hYCQk9IEBDWFhACkBAIC03Myw3ICs4NywxMCBAQAogQ1hYTElCUwkJPSBAQ1hYTElCU0AKIAogSU5DRElSCQk9IC4uL2luY2x1ZGUKLUNQUEZMQUdTCT0gLUkuLi9jKysgLUkkKElOQ0RJUikgLUkkKHNyY2RpcikgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKK0NQUEZMQUdTCT0gLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKKworQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAogCiBDQwkJPSAke0NYWH0KIENDRkxBR1MJCT0gJChDUFBGTEFHUykgJChDWFhGTEFHUykKQEAgLTk1LDEwNiArMTEyLDcwIEBACiAKIExJTksJCT0gQExJTktfUFJPR1NAICQoTElCVE9PTF9MSU5LKSBAQ1hYTERGTEFHU0AKIFNITElCX0RJUlMJPSAtTC4uL2xpYgotU0hMSUJfTElTVAk9ICQoU0hMSUJfRElSUykgLWxuY3Vyc2VzQExJQl9TVUZGSVhAIEBTSExJQl9MSVNUQAorU0hMSUJfTElTVAk9ICQoU0hMSUJfRElSUykgLWxmb3JtQFVTRV9MSUJfU1VGRklYQCAtbG1lbnVAVVNFX0xJQl9TVUZGSVhAIC1scGFuZWxAVVNFX0xJQl9TVUZGSVhAIC1sbmN1cnNlc0BVU0VfTElCX1NVRkZJWEAgQFNITElCX0xJU1RACiAKIExJQlJPT1QJCT0gbmN1cnNlcysrCiAKLUxJQk5BTUVfTElCVE9PTAk9IEBMSUJfUFJFRklYQCQoTElCUk9PVClATElCX1NVRkZJWEAubGEKLUxJQk5BTUVfTk9STUFMCT0gQExJQl9QUkVGSVhAJChMSUJST09UKUBMSUJfU1VGRklYQC5hCitMSUJOQU1FX0xJQlRPT0wJPSBATElCX1BSRUZJWEAkKExJQlJPT1QpQFVTRV9MSUJfU1VGRklYQC5sYQorTElCTkFNRV9OT1JNQUwJPSBATElCX1BSRUZJWEAkKExJQlJPT1QpQFVTRV9MSUJfU1VGRklYQC5hCiBMSUJOQU1FCQk9IEBMSUJfUFJFRklYQCQoTElCUk9PVClAQ1hYX0xJQl9TVUZGSVhACiAKLUxJTktfRkxBR1MJPSBARVhUUkFfTERGTEFHU0AgLUwuLi9saWIgLWwkKExJQlJPT1QpQExJQl9TVUZGSVhACitMSUJSQVJJRVMJPSBATGlic19Ub19NYWtlQAogCi1MSU5LX0xJQlRPT0wJPSBARVhUUkFfTERGTEFHU0AgLUwuLi9saWIgLi4vbGliLyQoTElCTkFNRSkKK0xJTktfRkxBR1MJPSBARVhUUkFfTERGTEFHU0AgLUwuLi9saWIgLWwkKExJQlJPT1QpQFVTRV9MSUJfU1VGRklYQAorUlBBVEhfTElTVAk9IEBSUEFUSF9MSVNUQAorTUtfU0hBUkVEX0xJQgk9IEBNS19TSEFSRURfTElCQAorCitMSU5LX0xJQlRPT0wJPSBARVhUUkFfTERGTEFHU0AgLUwuLi9saWIgJChMSUJSQVJJRVMpCiBMSU5LX05PUk1BTAk9ICQoTElOS19GTEFHUykKIExJTktfREVCVUcJPSAkKExJTktfRkxBR1MpCiBMSU5LX1BST0ZJTEUJPSAkKExJTktfRkxBR1MpCiBMSU5LX1NIQVJFRAk9ICQoTElOS19GTEFHUykKIAorIyBmbGFncyBmb3IgdGVzdC1wcm9ncmFtcworVEVTVF9MSUJTCT0gQFRFU1RfTElCU0AKIFRFU1RfQVJHUwk9IEBMREZMQUdTX1NUQVRJQ0AgQFRFU1RfQVJHU0AgQExERkxBR1NfU0hBUkVEQCAKK1RFU1RfTERGTEFHUwk9ICQoVEVTVF9BUkdTKSBATERGTEFHU0AgXAorCUBMRF9NT0RFTEAgJChURVNUX0xJQlMpIEBMSUJTQCBATE9DQUxfTERGTEFHU0AgJChDWFhMSUJTKQogCi1MREZMQUdTCQk9ICQoVEVTVF9BUkdTKSBATERGTEFHU0AgXAotCUBMRF9NT0RFTEAgQExJQlNAIEBMT0NBTF9MREZMQUdTQCAkKENYWExJQlMpCi0KLUxERkxBR1NfTElCVE9PTAk9ICQoTERGTEFHUykgJChDRkxBR1NfTElCVE9PTCkKLUxERkxBR1NfTk9STUFMCT0gJChMREZMQUdTKSAkKENGTEFHU19OT1JNQUwpCi1MREZMQUdTX0RFQlVHCT0gJChMREZMQUdTKSAkKENGTEFHU19ERUJVRykKLUxERkxBR1NfUFJPRklMRQk9ICQoTERGTEFHUykgJChDRkxBR1NfUFJPRklMRSkKLUxERkxBR1NfU0hBUkVECT0gJChMREZMQUdTKSAkKENGTEFHU19TSEFSRUQpIEBMRF9TSEFSRURfT1BUU0AKK0xERkxBR1NfTElCVE9PTAk9ICQoVEVTVF9MREZMQUdTKSAkKENGTEFHU19MSUJUT09MKQorTERGTEFHU19OT1JNQUwJPSAkKFRFU1RfTERGTEFHUykgJChDRkxBR1NfTk9STUFMKQorTERGTEFHU19ERUJVRwk9ICQoVEVTVF9MREZMQUdTKSAkKENGTEFHU19ERUJVRykKK0xERkxBR1NfUFJPRklMRQk9ICQoVEVTVF9MREZMQUdTKSAkKENGTEFHU19QUk9GSUxFKQorTERGTEFHU19TSEFSRUQJPSAkKFRFU1RfTERGTEFHUykgJChDRkxBR1NfU0hBUkVEKSBATERfU0hBUkVEX09QVFNACiAKIExERkxBR1NfREVGQVVMVAk9ICQoTElOS19AREZUX1VQUl9NT0RFTEApICQoTERGTEFHU19AREZUX1VQUl9NT0RFTEApCiAKKyMgZmxhZ3MgZm9yIGxpYnJhcnkgYnVpbHQgYnkgdGhpcyBtYWtlZmlsZQorTERGTEFHUwkJPSAkKFRFU1RfQVJHUykgQExERkxBR1NAIFwKKwlATERfTU9ERUxAICQoVEVTVF9MSUJTKSBATElCU0AgJChDWFhMSUJTKQorCiBBVVRPX1NSQwk9IFwKIAkJZXRpcC5oCiAKIGFsbCBcCi1saWJzIDo6CQkkKEFVVE9fU1JDKSAuLi9saWIvJChMSUJOQU1FKQorbGlicyA6OgkJJChBVVRPX1NSQykgJChMSUJSQVJJRVMpCiAKLWFsbCA6OgkJZGVtbyR4CitATUFLRV9URVNUU0BhbGwgOjoJCWRlbW8keAogCiBzb3VyY2VzIDoJJChBVVRPX1NSQykKIAogZGVwZW5kIDoKIAogdGFnczoKLQljdGFncyAqLltoXSAqLmNjCi0KLSMgQnVpbGQgYSBjb252ZW50aW9uYWwgbGlicmFyeSBmb3IgaW5zdGFsbGluZywgc2luY2UgYSBzaGFyZWQgbGlicmFyeSB3b3VsZAotIyBwdWxsIGluIGFsbCBvZiB0aGUgbmN1cnNlcyBsaWJyYXJpZXMgKHBhbmVsLCBtZW51LCBmb3JtLCBuY3Vyc2VzKSBhcyBkaXJlY3QKLSMgZGVwZW5kZW5jaWVzLgotTElCX09CSlMgPSBcCi0JJChNT0RFTCkvY3Vyc2VzZiRvIFwKLQkkKE1PREVMKS9jdXJzZXNtJG8gXAotCSQoTU9ERUwpL2N1cnNlc3ckbyBcCi0JJChNT0RFTCkvY3Vyc2VzcGFkJG8gXAotCSQoTU9ERUwpL2N1cnNlc3AkbyBcCi0JJChNT0RFTCkvY3Vyc3NsayRvIFwKLQkkKE1PREVMKS9jdXJzZXNhcHAkbyBcCi0JJChNT0RFTCkvY3Vyc2VzbWFpbiRvCi0KLS4uL2xpYi8kKExJQk5BTUVfTk9STUFMKSA6ICQoTElCX09CSlMpCi0JJChDWFhfQVIpICQoQ1hYX0FSX09QVFMpICRAICQ/Ci0JJChSQU5MSUIpICRACi0KLS4uL2xpYi8kKExJQk5BTUVfTElCVE9PTCkgOiAkKExJQl9PQkpTKQotCWNkIC4uL2xpYiAmJiAkKExJQlRPT0xfTElOSykgJChDWFgpICQoQ1hYRkxBR1MpIFwKLQkJLW8gJChMSUJOQU1FKSAkKExJQl9PQkpTOiRvPS5sbykgXAotCQktcnBhdGggJChJTlNUQUxMX1BSRUZJWCkkKGxpYmRpcikgXAotCQktdmVyc2lvbi1pbmZvICQoTkNVUlNFU19NQUpPUik6JChOQ1VSU0VTX01JTk9SKSAkKFNITElCX0xJU1QpCi0KLU9CSlNfREVNTyA9ICQoTU9ERUwpL2RlbW8kbwotCi0kKE1PREVMKS9kZW1vJG8gOiAkKHNyY2RpcikvZGVtby5jYyBcCi0JJChjdXJzZXNmX2gpICQoY3Vyc2VzbV9oKSAkKGN1cnNlc2FwcF9oKQotCi1kZW1vJHg6CSQoT0JKU19ERU1PKSBcCi0JLi4vbGliLyQoTElCTkFNRSkgIFwKLQlAVEVTVF9ERVBTQAotCUBFQ0hPX0xJTktAICQoTElOSykgLW8gJEAgJChPQkpTX0RFTU8pICQoTERGTEFHU19ERUZBVUxUKQotCi1ldGlwLmg6CSQoc3JjZGlyKS9ldGlwLmguaW4gJChzcmNkaXIpL2VkaXRfY2ZnLnNoCi0JY3AgJChzcmNkaXIpL2V0aXAuaC5pbiAkQAotCXNoICQoc3JjZGlyKS9lZGl0X2NmZy5zaCAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggJEAKKwkkKENUQUdTKSAqLltoXSAqLmNjCiAKICQoREVTVERJUikkKGxpYmRpcikgOgotCXNoICQoc3JjZGlyKS8uLi9ta2RpcnMuc2ggJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnM6OiAuLi9saWIvJChMSUJOQU1FKSAkKERFU1RESVIpJChsaWJkaXIpCi0JJChMSUJUT09MX0lOU1RBTEwpICQoSU5TVEFMTF9MSUIpIC4uL2xpYi8kKExJQk5BTUUpICQoREVTVERJUikkKGxpYmRpcikvJChMSUJOQU1FKQotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnM6OgotCS0kKExJQlRPT0xfVU5JTlNUQUxMKSBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpLyQoTElCTkFNRSkKKwlta2RpciAtcCAkQAogCiBtb3N0bHljbGVhbiA6OgogCS1ybSAtZiBjb3JlIHRhZ3MgVEFHUyAqfiAqLmJhayAqLmkgKi5paSAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgotCS1zaCAtYyAiaWYgdGVzdCAtbiAnJHgnIDsgdGhlbiAkKE1BS0UpIGNsZWFuIHg9Jyc7IGZpIgorCS0kKFNIRUxMKSAtYyAiaWYgdGVzdCAtbiAnJHgnIDsgdGhlbiAkKE1BS0UpIGNsZWFuIHg9Jyc7IGZpIgogCS1ybSAtcmYgJChNT0RFTCkvU3VuV1NfY2FjaGUKLQktJChMSUJUT09MX0NMRUFOKSBybSAtZiBkZW1vJHggJChBVVRPX1NSQykgLi4vbGliLyQoTElCTkFNRSkgJChMSUJfT0JKUykgJChPQkpTX0RFTU8pCi0JLXJtIC1yZiAubGlicworCS0kKExJQlRPT0xfQ0xFQU4pIHJtIC1mIGRlbW8keCAkKEFVVE9fU1JDKSAkKExJQlJBUklFUykgJChPQkpTX0RFTU8pCisJLXJtIC1yZiAubGlicyAqLmRTWU0KIAogZGlzdGNsZWFuIDo6IGNsZWFuCiAJLXJtIC1mIE1ha2VmaWxlCkBAIC0yMDMsOCArMTg0LDE2IEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAoraW50ZXJuYWxfaAk9ICQoc3JjZGlyKS9pbnRlcm5hbC5oIFwKKwkJICAkKElOQ0RJUikvbmN1cnNlc19jZmcuaCBcCisJCSAgJChJTkNESVIpL25jX21pbmd3LmggXAorCQkgICQoSU5DRElSKS9uY19zdHJpbmcuaAorCitldGlwX2gJCT0gZXRpcC5oIFwKKwkJICAkKElOQ0RJUikvbmN1cnNlc19kbGwuaAorCiBjdXJzZXN3X2gJPSAkKHNyY2RpcikvY3Vyc2Vzdy5oIFwKLQkJICBldGlwLmggXAorCQkgICQoZXRpcF9oKSBcCiAJCSAgJChJTkNESVIpL2N1cnNlcy5oCiAKIGN1cnNlc3BfaAk9ICQoc3JjZGlyKS9jdXJzZXNwLmggXApAQCAtMjM1LDUgKzIyNCwyNiBAQAogCWNkIC4uL3BhbmVsICYmICQoTUFLRSkgJEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitPQkpTX0RFTU8gPSAkKE1PREVMKS9kZW1vJG8KKworJChNT0RFTCkvZGVtbyRvIDogJChzcmNkaXIpL2RlbW8uY2MgXAorCQkkKGludGVybmFsX2gpIFwKKwkJJChjdXJzZXNmX2gpIFwKKwkJJChjdXJzZXNtX2gpIFwKKwkJJChjdXJzZXNhcHBfaCkKKwlAZWNobyAnY29tcGlsaW5nIGRlbW8gKG9ial9zKScKKwlAJChMSUJUT09MX0NPTVBJTEUpICQoQ1hYKSAkKENGTEFHU19ERUZBVUxUKSAtYyAkKHNyY2RpcikvZGVtby5jYyAtbyAkQAorCitkZW1vJHg6CSQoT0JKU19ERU1PKSBcCisJJChMSUJSQVJJRVMpICBcCisJQFRFU1RfREVQU0AKKwlARUNIT19MREAgJChMSU5LKSAtbyAkQCAkKE9CSlNfREVNTykgJChMREZMQUdTX0RFRkFVTFQpCisKK2V0aXAuaDoJJChzcmNkaXIpL2V0aXAuaC5pbiAkKHNyY2RpcikvZWRpdF9jZmcuc2gKKwljcCAkKHNyY2RpcikvZXRpcC5oLmluICRACisJJChTSEVMTCkgJChzcmNkaXIpL2VkaXRfY2ZnLnNoIC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAkQAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGR1cmluZyBjb25maWd1cmF0aW9uCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9jKysvY3Vyc2VzYXBwLmggYi9jKysvY3Vyc2VzYXBwLmgKaW5kZXggN2U5OTVkMi4uZTNjYmMwNCAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc2FwcC5oCisrKyBiL2MrKy9jdXJzZXNhcHAuaApAQCAtMSw2ICsxLDYgQEAKIC8vICogVGhpcyBtYWtlcyBlbWFjcyBoYXBweSAtKi1Nb2RlOiBDKys7LSotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMSw3ICszMSw3IEBACiAgKiAgIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyLCAxOTk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8vICRJZDogY3Vyc2VzYXBwLmgsdiAxLjExIDIwMDUvMDUvMjggMjE6NTc6NDQgdG9tIEV4cCAkCisvLyAkSWQ6IGN1cnNlc2FwcC5oLHYgMS4xMiAyMDExLzA5LzE3IDIyOjEyOjEwIHRvbSBFeHAgJAogCiAjaWZuZGVmIE5DVVJTRVNfQ1VSU0VTQVBQX0hfaW5jbAogI2RlZmluZSBOQ1VSU0VTX0NVUlNFU0FQUF9IX2luY2wKQEAgLTgwLDYgKzgwLDcgQEAKICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIGluaXRpYWxpemUgdGhlIFNMS3MuIERlZmF1bHQgaXMgbm90aGluZy4KICAgLy8gWW91IG1heSByZXdyaXRlIHRoaXMgaW4geW91ciBkZXJpdmVkIGNsYXNzCiAgIHZpcnR1YWwgdm9pZCBpbml0X2xhYmVscyhTb2Z0X0xhYmVsX0tleV9TZXQmIFMpIGNvbnN0IHsKKyAgICAodm9pZCkgUzsKICAgfQogCiAgIC8vIFlvdXIgZGVyaXZlZCBjbGFzcyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0CkBAIC0xMTgsNiArMTE5LDggQEAKICAgLy8gUHJvY2VzcyB0aGUgY29tbWFuZGxpbmUgYXJndW1lbnRzLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBzaW1wbHkKICAgLy8gaWdub3JlcyB0aGVtLiBZb3VyIGRlcml2ZWQgY2xhc3MgbWF5IHJld3JpdGUgdGhpcy4KICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyZ3MoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworICAgICh2b2lkKSBhcmdjOworICAgICh2b2lkKSBhcmd2OwogICB9CiAKICAgLy8gRG9lcyB0aGlzIGFwcGxpY2F0aW9uIHVzZSBjb2xvcnM/CkBAIC0xMzgsMzcgKzE0MSwzNyBAQAogCiAgIC8vIEF0dHJpYnV0ZXMgdG8gdXNlIGZvciBtZW51IGFuZCBmb3JtcyBmb3JlZ3JvdW5kcwogICB2aXJ0dWFsIGNodHlwZSBmb3JlZ3JvdW5kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gYl9Db2xvcnMgPyBDT0xPUl9QQUlSKDEpIDogQV9CT0xEOworICAgIHJldHVybiBiX0NvbG9ycyA/IHN0YXRpY19jYXN0PGNodHlwZT4oQ09MT1JfUEFJUigxKSkgOiBBX0JPTEQ7CiAgIH0KIAogICAvLyBBdHRyaWJ1dGVzIHRvIHVzZSBmb3IgbWVudSBhbmQgZm9ybXMgYmFja2dyb3VuZHMKICAgdmlydHVhbCBjaHR5cGUgYmFja2dyb3VuZHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJfQ29sb3JzID8gQ09MT1JfUEFJUigyKSA6IEFfTk9STUFMOworICAgIHJldHVybiBiX0NvbG9ycyA/IHN0YXRpY19jYXN0PGNodHlwZT4oQ09MT1JfUEFJUigyKSkgOiBBX05PUk1BTDsKICAgfQogCiAgIC8vIEF0dHJpYnV0ZXMgdG8gdXNlIGZvciBpbmFjdGl2ZSAobWVudSkgZWxlbWVudHMKICAgdmlydHVhbCBjaHR5cGUgaW5hY3RpdmVzKCkgY29uc3QgewotICAgIHJldHVybiBiX0NvbG9ycyA/IChDT0xPUl9QQUlSKDMpfEFfRElNKSA6IEFfRElNOworICAgIHJldHVybiBiX0NvbG9ycyA/IHN0YXRpY19jYXN0PGNodHlwZT4oQ09MT1JfUEFJUigzKXxBX0RJTSkgOiBBX0RJTTsKICAgfQogCiAgIC8vIEF0dHJpYnV0ZXMgdG8gdXNlIGZvciAoZm9ybSkgbGFiZWxzIGFuZCBTTEtzCiAgIHZpcnR1YWwgY2h0eXBlIGxhYmVscygpIGNvbnN0IHsKLSAgICByZXR1cm4gYl9Db2xvcnMgPyBDT0xPUl9QQUlSKDQpIDogQV9OT1JNQUw7CisgICAgcmV0dXJuIGJfQ29sb3JzID8gc3RhdGljX2Nhc3Q8Y2h0eXBlPihDT0xPUl9QQUlSKDQpKSA6IEFfTk9STUFMOwogICB9CiAKICAgLy8gQXR0cmlidXRlcyB0byB1c2UgZm9yIGZvcm0gYmFja2dyb3VuZHMKICAgdmlydHVhbCBjaHR5cGUgZGlhbG9nX2JhY2tncm91bmRzKCkgY29uc3QgewotICAgIHJldHVybiBiX0NvbG9ycyA/IENPTE9SX1BBSVIoNCkgOiBBX05PUk1BTDsKKyAgICByZXR1cm4gYl9Db2xvcnMgPyBzdGF0aWNfY2FzdDxjaHR5cGU+KENPTE9SX1BBSVIoNCkpIDogQV9OT1JNQUw7CiAgIH0KIAogICAvLyBBdHRyaWJ1dGVzIHRvIHVzZSBhcyBkZWZhdWx0IGZvciAoZm9ybSkgd2luZG93IGJhY2tncm91bmRzCiAgIHZpcnR1YWwgY2h0eXBlIHdpbmRvd19iYWNrZ3JvdW5kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gYl9Db2xvcnMgPyBDT0xPUl9QQUlSKDUpIDogQV9OT1JNQUw7CisgICAgcmV0dXJuIGJfQ29sb3JzID8gc3RhdGljX2Nhc3Q8Y2h0eXBlPihDT0xPUl9QQUlSKDUpKSA6IEFfTk9STUFMOwogICB9CiAKICAgLy8gQXR0cmlidXRlcyB0byB1c2UgZm9yIHRoZSB0aXRsZSB3aW5kb3cKICAgdmlydHVhbCBjaHR5cGUgc2NyZWVuX3RpdGxlcygpIGNvbnN0IHsKLSAgICByZXR1cm4gYl9Db2xvcnMgPyBDT0xPUl9QQUlSKDYpIDogQV9CT0xEOworICAgIHJldHVybiBiX0NvbG9ycyA/IHN0YXRpY19jYXN0PGNodHlwZT4oQ09MT1JfUEFJUig2KSkgOiBBX0JPTEQ7CiAgIH0KIAogfTsKZGlmZiAtLWdpdCBhL2MrKy9jdXJzZXNmLmNjIGIvYysrL2N1cnNlc2YuY2MKaW5kZXggYWFmMTIwMi4uNzk1NjA1NCAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc2YuY2MKKysrIGIvYysrL2N1cnNlc2YuY2MKQEAgLTEsNiArMSw2IEBACiAvLyAqIHRoaXMgaXMgZm9yIG1ha2luZyBlbWFjcyBoYXBweTogLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgImN1cnNlc2YuaCIKICNpbmNsdWRlICJjdXJzZXNhcHAuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGN1cnNlc2YuY2MsdiAxLjIxIDIwMDUvMDgvMTMgMTg6MDk6MDYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBjdXJzZXNmLmNjLHYgMS4yMiAyMDExLzA5LzE3IDIyOjEyOjEwIHRvbSBFeHAgJCIpCiAKIE5DdXJzZXNGb3JtRmllbGQ6On5OQ3Vyc2VzRm9ybUZpZWxkICgpCiB7CkBAIC0yMzQsMTEgKzIzNCwxMyBAQAogdm9pZAogTkN1cnNlc0Zvcm06Ok9uX0ZpZWxkX0luaXQoTkN1cnNlc0Zvcm1GaWVsZCYgZmllbGQpCiB7CisgICh2b2lkKSBmaWVsZDsKIH0KIAogdm9pZAogTkN1cnNlc0Zvcm06Ok9uX0ZpZWxkX1Rlcm1pbmF0aW9uKE5DdXJzZXNGb3JtRmllbGQmIGZpZWxkKQogeworICAodm9pZCkgZmllbGQ7CiB9CiAKIC8vIGNhbGwgdGhlIGZvcm0gZHJpdmVyIGFuZCBkbyBiYXNpYyBlcnJvciBjaGVja2luZy4KQEAgLTI2MCwxNiArMjYyLDE5IEBACiAKIHZvaWQgTkN1cnNlc0Zvcm06Ok9uX1JlcXVlc3RfRGVuaWVkKGludCBjKSBjb25zdAogeworICAodm9pZCkgYzsKICAgOjpiZWVwKCk7CiB9CiAKIHZvaWQgTkN1cnNlc0Zvcm06Ok9uX0ludmFsaWRfRmllbGQoaW50IGMpIGNvbnN0CiB7CisgICh2b2lkKSBjOwogICA6OmJlZXAoKTsKIH0KIAogdm9pZCBOQ3Vyc2VzRm9ybTo6T25fVW5rbm93bl9Db21tYW5kKGludCBjKSBjb25zdAogeworICAodm9pZCkgYzsKICAgOjpiZWVwKCk7CiB9CiAKQEAgLTM3Myw2ICszNzgsNyBAQAogLy8KIGJvb2wgX25jX3h4X2ZsZF9mY2hlY2soRklFTEQgKmYsIGNvbnN0IHZvaWQgKnUpCiB7CisgICh2b2lkKSBmOwogICBOQ3Vyc2VzRm9ybUZpZWxkKiBGID0gcmVpbnRlcnByZXRfY2FzdDxOQ3Vyc2VzRm9ybUZpZWxkKj4oY29uc3RfY2FzdDx2b2lkICo+KHUpKTsKICAgYXNzZXJ0KEYgIT0gMCk7CiAgIFVzZXJEZWZpbmVkRmllbGRUeXBlKiB1ZGYgPSByZWludGVycHJldF9jYXN0PFVzZXJEZWZpbmVkRmllbGRUeXBlKj4oRi0+ZmllbGR0eXBlKCkpOwpAQCAtNDA1LDYgKzQxMSw3IEBACiAKIGJvb2wgX25jX3h4X25leHRfY2hvaWNlKEZJRUxEICpmLCBjb25zdCB2b2lkICp1KQogeworICAodm9pZCkgZjsKICAgTkN1cnNlc0Zvcm1GaWVsZCogRiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TkN1cnNlc0Zvcm1GaWVsZCo+KGNvbnN0X2Nhc3Q8dm9pZCAqPih1KSk7CiAgIGFzc2VydChGICE9IDApOwogICBVc2VyRGVmaW5lZEZpZWxkVHlwZV9XaXRoX0Nob2ljZSogdWRmID0KQEAgLTQxNSw2ICs0MjIsNyBAQAogCiBib29sIF9uY194eF9wcmV2X2Nob2ljZShGSUVMRCAqZiwgY29uc3Qgdm9pZCAqdSkKIHsKKyAgKHZvaWQpIGY7CiAgIE5DdXJzZXNGb3JtRmllbGQqIEYgPSByZWludGVycHJldF9jYXN0PE5DdXJzZXNGb3JtRmllbGQqPihjb25zdF9jYXN0PHZvaWQgKj4odSkpOwogICBhc3NlcnQoRiAhPSAwKTsKICAgVXNlckRlZmluZWRGaWVsZFR5cGVfV2l0aF9DaG9pY2UqIHVkZiA9CmRpZmYgLS1naXQgYS9jKysvY3Vyc2VzZi5oIGIvYysrL2N1cnNlc2YuaAppbmRleCA3MGEzMGMzLi5mZTFmMWFhIDEwMDY0NAotLS0gYS9jKysvY3Vyc2VzZi5oCisrKyBiL2MrKy9jdXJzZXNmLmgKQEAgLTEsNiArMSw2IEBACiAvLyAqIFRoaXMgbWFrZXMgZW1hY3MgaGFwcHkgLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzEsNyArMzEsNyBAQAogICogICBBdXRob3I6IEp1ZXJnZW4gUGZlaWZlciwgMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vLyAkSWQ6IGN1cnNlc2YuaCx2IDEuMjggMjAwNS8wOC8xMyAxODowODoyNCB0b20gRXhwICQKKy8vICRJZDogY3Vyc2VzZi5oLHYgMS4zMiAyMDE0LzA4LzA5IDIyOjA2OjExIEFkYW0uSmlhbmcgRXhwICQKIAogI2lmbmRlZiBOQ1VSU0VTX0NVUlNFU0ZfSF9pbmNsCiAjZGVmaW5lIE5DVVJTRVNfQ1VSU0VTRl9IX2luY2wgMQpAQCAtNjEsNyArNjEsNyBAQAogcHJvdGVjdGVkOgogICBGSUVMRFRZUEUqIGZpZWxkdHlwZTsKIAotICBpbmxpbmUgdm9pZCBPbkVycm9yKGludCBlcnIpIGNvbnN0IFRIUk9XUyhOQ3Vyc2VzRm9ybUV4Y2VwdGlvbikgeworICBpbmxpbmUgdm9pZCBPbkVycm9yKGludCBlcnIpIGNvbnN0IFRIUk9XMihOQ3Vyc2VzRXhjZXB0aW9uIGNvbnN0LCBOQ3Vyc2VzRm9ybUV4Y2VwdGlvbikgewogICAgIGlmIChlcnIhPUVfT0spCiAgICAgICBUSFJPVyhuZXcgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGVycikpOwogICB9CkBAIC0xMDksNyArMTA5LDcgQEAKICAgTkN1cnNlc0ZpZWxkVHlwZSogZnR5cGU7ICAgLy8gQXNzb2NpYXRlZCBmaWVsZCB0eXBlCiAKICAgLy8gRXJyb3IgaGFuZGxlcgotICBpbmxpbmUgdm9pZCBPbkVycm9yIChpbnQgZXJyKSBjb25zdCBUSFJPV1MoTkN1cnNlc0Zvcm1FeGNlcHRpb24pIHsKKyAgaW5saW5lIHZvaWQgT25FcnJvciAoaW50IGVycikgY29uc3QgVEhST1cyKE5DdXJzZXNFeGNlcHRpb24gY29uc3QsIE5DdXJzZXNGb3JtRXhjZXB0aW9uKSB7CiAgICAgaWYgKGVyciAhPSBFX09LKQogICAgICAgVEhST1cobmV3IE5DdXJzZXNGb3JtRXhjZXB0aW9uIChlcnIpKTsKICAgfQpAQCAtMzkxLDcgKzM5MSw3IEBACiAJCSBib29sIHdpdGhfZnJhbWUsCiAJCSBib29sIGF1dG9EZWxldGVGaWVsZHMpOwogCi0gIGlubGluZSB2b2lkIE9uRXJyb3IgKGludCBlcnIpIGNvbnN0IFRIUk9XUyhOQ3Vyc2VzRm9ybUV4Y2VwdGlvbikgeworICBpbmxpbmUgdm9pZCBPbkVycm9yIChpbnQgZXJyKSBjb25zdCBUSFJPVzIoTkN1cnNlc0V4Y2VwdGlvbiBjb25zdCwgTkN1cnNlc0Zvcm1FeGNlcHRpb24pIHsKICAgICBpZiAoZXJyICE9IEVfT0spCiAgICAgICBUSFJPVyhuZXcgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGVycikpOwogICB9CkBAIC02NzMsMjAgKzY3MywyMSBAQAogCQkgICBjb25zdCBUKiBwX1VzZXJEYXRhID0gU1RBVElDX0NBU1QoVCopKDApKQogICAgIDogTkN1cnNlc0Zvcm0obmxpbmVzLG5jb2xzLGJlZ2luX3ksYmVnaW5feCkgewogICAgICAgaWYgKGZvcm0pCi0Jc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihwX1VzZXJEYXRhKSk7CisJc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPgorCQkJCSAgICAgKHBfVXNlckRhdGEpKSk7CiAgIH0KIAogcHVibGljOgotICBOQ3Vyc2VzVXNlckZvcm0gKE5DdXJzZXNGb3JtRmllbGQgRmllbGRzW10sCisgIE5DdXJzZXNVc2VyRm9ybSAoTkN1cnNlc0Zvcm1GaWVsZCogRmllbGRzW10sCiAJCSAgIGNvbnN0IFQqIHBfVXNlckRhdGEgPSBTVEFUSUNfQ0FTVChUKikoMCksCiAJCSAgIGJvb2wgd2l0aF9mcmFtZT1GQUxTRSwKIAkJICAgYm9vbCBhdXRvRGVsZXRlX0ZpZWxkcz1GQUxTRSkKICAgICA6IE5DdXJzZXNGb3JtIChGaWVsZHMsIHdpdGhfZnJhbWUsIGF1dG9EZWxldGVfRmllbGRzKSB7CiAgICAgICBpZiAoZm9ybSkKLQlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHBfVXNlckRhdGEpKTsKKwlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHBfVXNlckRhdGEpKSk7CiAgIH07CiAKLSAgTkN1cnNlc1VzZXJGb3JtIChOQ3Vyc2VzRm9ybUZpZWxkIEZpZWxkc1tdLAorICBOQ3Vyc2VzVXNlckZvcm0gKE5DdXJzZXNGb3JtRmllbGQqIEZpZWxkc1tdLAogCQkgICBpbnQgbmxpbmVzLAogCQkgICBpbnQgbmNvbHMsCiAJCSAgIGludCBiZWdpbl95ID0gMCwKQEAgLTY5NywxOSArNjk4LDIwIEBACiAgICAgOiBOQ3Vyc2VzRm9ybSAoRmllbGRzLCBubGluZXMsIG5jb2xzLCBiZWdpbl95LCBiZWdpbl94LAogCQkgICB3aXRoX2ZyYW1lLCBhdXRvRGVsZXRlX0ZpZWxkcykgewogICAgICAgaWYgKGZvcm0pCi0Jc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihwX1VzZXJEYXRhKSk7CisJc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPgorCQkJCSAgICAgKHBfVXNlckRhdGEpKSk7CiAgIH07CiAKICAgdmlydHVhbCB+TkN1cnNlc1VzZXJGb3JtKCkgewogICB9OwogCi0gIGlubGluZSBUKiBVc2VyRGF0YSAodm9pZCkgY29uc3QgeworICBpbmxpbmUgVCogVXNlckRhdGEgKHZvaWQpIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oZ2V0X3VzZXIgKCkpOwogICB9OwogCiAgIGlubGluZSB2aXJ0dWFsIHZvaWQgc2V0VXNlckRhdGEgKGNvbnN0IFQqIHBfVXNlckRhdGEpIHsKICAgICBpZiAoZm9ybSkKLSAgICAgIHNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocF9Vc2VyRGF0YSkpOworICAgICAgc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwX1VzZXJEYXRhKSkpOwogICB9CiAKIH07CmRpZmYgLS1naXQgYS9jKysvY3Vyc2VzbS5jYyBiL2MrKy9jdXJzZXNtLmNjCmluZGV4IGMyNTNhNjcuLjIyMmRlNDYgMTAwNjQ0Ci0tLSBhL2MrKy9jdXJzZXNtLmNjCisrKyBiL2MrKy9jdXJzZXNtLmNjCkBAIC0xLDYgKzEsNiBAQAogLy8gKiB0aGlzIGlzIGZvciBtYWtpbmcgZW1hY3MgaGFwcHk6IC0qLU1vZGU6IEMrKzstKi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJjdXJzZXNtLmgiCiAjaW5jbHVkZSAiY3Vyc2VzYXBwLmgiCiAKLU1PRFVMRV9JRCgiJElkOiBjdXJzZXNtLmNjLHYgMS4yMiAyMDA1LzA0LzAyIDIwOjM5OjA1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogY3Vyc2VzbS5jYyx2IDEuMjMgMjAxMS8wOS8xNyAyMjoxMTozMiB0b20gRXhwICQiKQogCiBOQ3Vyc2VzTWVudUl0ZW06On5OQ3Vyc2VzTWVudUl0ZW0oKQogewpAQCAtMzc1LDMzICszNzUsMzkgQEAKIHZvaWQKIE5DdXJzZXNNZW51OjpPbl9JdGVtX0luaXQoTkN1cnNlc01lbnVJdGVtJiBpdGVtKQogeworICAodm9pZCkgaXRlbTsKIH0KIAogdm9pZAogTkN1cnNlc01lbnU6Ok9uX0l0ZW1fVGVybWluYXRpb24oTkN1cnNlc01lbnVJdGVtJiBpdGVtKQogeworICAodm9pZCkgaXRlbTsKIH0KIAogdm9pZAogTkN1cnNlc01lbnU6Ok9uX1JlcXVlc3RfRGVuaWVkKGludCBjKSBjb25zdAogeworICAodm9pZCkgYzsKICAgOjpiZWVwKCk7CiB9CiAKIHZvaWQKIE5DdXJzZXNNZW51OjpPbl9Ob3RfU2VsZWN0YWJsZShpbnQgYykgY29uc3QKIHsKKyAgKHZvaWQpIGM7CiAgIDo6YmVlcCgpOwogfQogCiB2b2lkCiBOQ3Vyc2VzTWVudTo6T25fTm9fTWF0Y2goaW50IGMpIGNvbnN0CiB7CisgICh2b2lkKSBjOwogICA6OmJlZXAoKTsKIH0KIAogdm9pZAogTkN1cnNlc01lbnU6Ok9uX1Vua25vd25fQ29tbWFuZChpbnQgYykgY29uc3QKIHsKKyAgKHZvaWQpIGM7CiAgIDo6YmVlcCgpOwogfQpkaWZmIC0tZ2l0IGEvYysrL2N1cnNlc20uaCBiL2MrKy9jdXJzZXNtLmgKaW5kZXggZDljMjI3My4uZjhmOTY2NSAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc20uaAorKysgYi9jKysvY3Vyc2VzbS5oCkBAIC0xLDYgKzEsNiBAQAogLy8gKiBUaGlzIG1ha2VzIGVtYWNzIGhhcHB5IC0qLU1vZGU6IEMrKzstKi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMxLDcgKzMxLDcgQEAKICAqICAgQXV0aG9yOiBKdWVyZ2VuIFBmZWlmZXIsIDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLy8gJElkOiBjdXJzZXNtLmgsdiAxLjI1IDIwMDUvMDgvMTMgMTg6MTA6MzYgdG9tIEV4cCAkCisvLyAkSWQ6IGN1cnNlc20uaCx2IDEuMzAgMjAxNC8wOC8wOSAyMjowNjoxOCBBZGFtLkppYW5nIEV4cCAkCiAKICNpZm5kZWYgTkNVUlNFU19DVVJTRVNNX0hfaW5jbAogI2RlZmluZSBOQ1VSU0VTX0NVUlNFU01fSF9pbmNsIDEKQEAgLTUzLDcgKzUzLDcgQEAKIHByb3RlY3RlZDoKICAgSVRFTSAqaXRlbTsKIAotICBpbmxpbmUgdm9pZCBPbkVycm9yIChpbnQgZXJyKSBjb25zdCBUSFJPV1MoTkN1cnNlc01lbnVFeGNlcHRpb24pIHsKKyAgaW5saW5lIHZvaWQgT25FcnJvciAoaW50IGVycikgY29uc3QgVEhST1cyKE5DdXJzZXNFeGNlcHRpb24gY29uc3QsIE5DdXJzZXNNZW51RXhjZXB0aW9uKSB7CiAgICAgaWYgKGVyciAhPSBFX09LKQogICAgICAgVEhST1cobmV3IE5DdXJzZXNNZW51RXhjZXB0aW9uIChlcnIpKTsKICAgfQpAQCAtODIsNiArODIsNyBAQAogICBOQ3Vyc2VzTWVudUl0ZW0oY29uc3QgTkN1cnNlc01lbnVJdGVtJiByaHMpCiAgICAgOiBpdGVtKDApCiAgIHsKKyAgICAodm9pZCkgcmhzOwogICB9CiAKICAgdmlydHVhbCB+TkN1cnNlc01lbnVJdGVtICgpOwpAQCAtMjUyLDcgKzI1Myw3IEBACiAJCSBib29sIHdpdGhfZnJhbWUsCiAJCSBib29sIGF1dG9EZWxldGVJdGVtcyk7CiAKLSAgaW5saW5lIHZvaWQgT25FcnJvciAoaW50IGVycikgY29uc3QgVEhST1dTKE5DdXJzZXNNZW51RXhjZXB0aW9uKSB7CisgIGlubGluZSB2b2lkIE9uRXJyb3IgKGludCBlcnIpIGNvbnN0IFRIUk9XMihOQ3Vyc2VzRXhjZXB0aW9uIGNvbnN0LCBOQ3Vyc2VzTWVudUV4Y2VwdGlvbikgewogICAgIGlmIChlcnIgIT0gRV9PSykKICAgICAgIFRIUk9XKG5ldyBOQ3Vyc2VzTWVudUV4Y2VwdGlvbiAodGhpcywgZXJyKSk7CiAgIH0KQEAgLTYzMSwyMCArNjMyLDIwIEBACiAJCSAgIGNvbnN0IFQqIHBfVXNlckRhdGEgPSBTVEFUSUNfQ0FTVChUKikoMCkpCiAgICAgOiBOQ3Vyc2VzTWVudShubGluZXMsbmNvbHMsYmVnaW5feSxiZWdpbl94KSB7CiAgICAgICBpZiAobWVudSkKLQlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHBfVXNlckRhdGEpKTsKKwlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHBfVXNlckRhdGEpKSk7CiAgIH0KIAogcHVibGljOgotICBOQ3Vyc2VzVXNlck1lbnUgKE5DdXJzZXNNZW51SXRlbSBJdGVtc1tdLAorICBOQ3Vyc2VzVXNlck1lbnUgKE5DdXJzZXNNZW51SXRlbSogSXRlbXNbXSwKIAkJICAgY29uc3QgVCogcF9Vc2VyRGF0YSA9IFNUQVRJQ19DQVNUKFQqKSgwKSwKIAkJICAgYm9vbCB3aXRoX2ZyYW1lPUZBTFNFLAogCQkgICBib29sIGF1dG9EZWxldGVfSXRlbXM9RkFMU0UpCiAgICAgOiBOQ3Vyc2VzTWVudSAoSXRlbXMsIHdpdGhfZnJhbWUsIGF1dG9EZWxldGVfSXRlbXMpIHsKICAgICAgIGlmIChtZW51KQotCXNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocF9Vc2VyRGF0YSkpOworCXNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4ocF9Vc2VyRGF0YSkpKTsKICAgfTsKIAotICBOQ3Vyc2VzVXNlck1lbnUgKE5DdXJzZXNNZW51SXRlbSBJdGVtc1tdLAorICBOQ3Vyc2VzVXNlck1lbnUgKE5DdXJzZXNNZW51SXRlbSogSXRlbXNbXSwKIAkJICAgaW50IG5saW5lcywKIAkJICAgaW50IG5jb2xzLAogCQkgICBpbnQgYmVnaW5feSA9IDAsCkBAIC02NTMsMTkgKzY1NCwxOSBAQAogCQkgICBib29sIHdpdGhfZnJhbWU9RkFMU0UpCiAgICAgOiBOQ3Vyc2VzTWVudSAoSXRlbXMsIG5saW5lcywgbmNvbHMsIGJlZ2luX3ksIGJlZ2luX3gsIHdpdGhfZnJhbWUpIHsKICAgICAgIGlmIChtZW51KQotCXNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocF9Vc2VyRGF0YSkpOworCXNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4ocF9Vc2VyRGF0YSkpKTsKICAgfTsKIAogICB2aXJ0dWFsIH5OQ3Vyc2VzVXNlck1lbnUoKSB7CiAgIH07CiAKLSAgaW5saW5lIFQqIFVzZXJEYXRhICh2b2lkKSBjb25zdCB7CisgIGlubGluZSBUKiBVc2VyRGF0YSAodm9pZCkgewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihnZXRfdXNlciAoKSk7CiAgIH07CiAKICAgaW5saW5lIHZpcnR1YWwgdm9pZCBzZXRVc2VyRGF0YSAoY29uc3QgVCogcF9Vc2VyRGF0YSkgewogICAgIGlmIChtZW51KQotICAgICAgc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihwX1VzZXJEYXRhKSk7CisgICAgICBzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHBfVXNlckRhdGEpKSk7CiAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL2MrKy9jdXJzZXNtYWluLmNjIGIvYysrL2N1cnNlc21haW4uY2MKaW5kZXggMWY4MmQ0YS4uZTg3MDk5NSAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc21haW4uY2MKKysrIGIvYysrL2N1cnNlc21haW4uY2MKQEAgLTEsNiArMSw2IEBACiAvLyAqIHRoaXMgaXMgZm9yIG1ha2luZyBlbWFjcyBoYXBweTogLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsMTMgKzM1LDE1IEBACiAjaW5jbHVkZSAiY3Vyc2VzYXBwLmgiCiAKICNpZiBDUFBfSEFTX1RSWV9DQVRDSCAmJiBIQVZFX0lPU1RSRUFNCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZWZmYysrIgogI2luY2x1ZGUgPGlvc3RyZWFtPgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyB3YXJuaW5nICItV2VmZmMrKyIKICNlbHNlCiAjdW5kZWYgQ1BQX0hBU19UUllfQ0FUQ0gKICNkZWZpbmUgQ1BQX0hBU19UUllfQ0FUQ0ggMAogI2VuZGlmCiAKLU1PRFVMRV9JRCgiJElkOiBjdXJzZXNtYWluLmNjLHYgMS4xNCAyMDA3LzA0LzA3IDE3OjEwOjExIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogY3Vyc2VzbWFpbi5jYyx2IDEuMTUgMjAxMy8wOS8yOCAyMDo1Njo0NyB0b20gRXhwICQiKQogCiAjaWYgSEFWRV9MT0NBTEVfSAogI2luY2x1ZGUgPGxvY2FsZS5oPgpkaWZmIC0tZ2l0IGEvYysrL2N1cnNlc3AuaCBiL2MrKy9jdXJzZXNwLmgKaW5kZXggOWI2M2Q2ZC4uNTRiMGQ1OCAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc3AuaAorKysgYi9jKysvY3Vyc2VzcC5oCkBAIC0xLDYgKzEsNiBAQAogLy8gKiBUaGlzIG1ha2VzIGVtYWNzIGhhcHB5IC0qLU1vZGU6IEMrKzstKi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM0LDcgKzM0LDcgQEAKICNpZm5kZWYgTkNVUlNFU19DVVJTRVNQX0hfaW5jbAogI2RlZmluZSBOQ1VSU0VTX0NVUlNFU1BfSF9pbmNsIDEKIAotLy8gJElkOiBjdXJzZXNwLmgsdiAxLjI5IDIwMDgvMDgvMTYgMTc6MjA6MjMgdG9tIEV4cCAkCisvLyAkSWQ6IGN1cnNlc3AuaCx2IDEuMzEgMjAxNC8wOC8wOSAyMjowNjoyNiBBZGFtLkppYW5nIEV4cCAkCiAKICNpbmNsdWRlIDxjdXJzZXN3Lmg+CiAKQEAgLTg2LDcgKzg2LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAKLSAgdm9pZCBPbkVycm9yIChpbnQgZXJyKSBjb25zdCBUSFJPV1MoTkN1cnNlc1BhbmVsRXhjZXB0aW9uKQorICB2b2lkIE9uRXJyb3IgKGludCBlcnIpIGNvbnN0IFRIUk9XMihOQ3Vyc2VzRXhjZXB0aW9uIGNvbnN0LCBOQ3Vyc2VzUGFuZWxFeGNlcHRpb24pCiAgIHsKICAgICBpZiAoZXJyPT1FUlIpCiAgICAgICBUSFJPVyhuZXcgTkN1cnNlc1BhbmVsRXhjZXB0aW9uICh0aGlzLCBlcnIpKTsKQEAgLTIzNiw3ICsyMzYsOCBAQAogICAgIDogTkN1cnNlc1BhbmVsIChubGluZXMsIG5jb2xzLCBiZWdpbl95LCBiZWdpbl94KQogICB7CiAgICAgICBpZiAocCkKLQlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHBfVXNlckRhdGEpKTsKKwlzZXRfdXNlciAoY29uc3RfY2FzdDx2b2lkICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+CisJCQkJICAgICAocF9Vc2VyRGF0YSkpKTsKICAgfTsKICAgLy8gVGhpcyBjcmVhdGVzIGFuIHVzZXIgcGFuZWwgb2YgdGhlIHJlcXVlc3RlZCBzaXplIHdpdGggYXNzb2NpYXRlZAogICAvLyB1c2VyIGRhdGEgcG9pbnRlZCB0byBieSBwX1VzZXJEYXRhLgpAQCAtMjQ0LDE0ICsyNDUsMTQgQEAKICAgTkN1cnNlc1VzZXJQYW5lbChjb25zdCBUKiBwX1VzZXJEYXRhID0gU1RBVElDX0NBU1QoVCopKDApKSA6IE5DdXJzZXNQYW5lbCgpCiAgIHsKICAgICBpZiAocCkKLSAgICAgIHNldF91c2VyKGNvbnN0X2Nhc3Q8dm9pZCAqPihwX1VzZXJEYXRhKSk7CisgICAgICBzZXRfdXNlcihjb25zdF9jYXN0PHZvaWQgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4ocF9Vc2VyRGF0YSkpKTsKICAgfTsKICAgLy8gVGhpcyBjcmVhdGVzIGFuIHVzZXIgcGFuZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSA6OnN0ZHNjciBhbmQgdXNlciBkYXRhCiAgIC8vIHBvaW50ZWQgdG8gYnkgcF9Vc2VyRGF0YS4KIAogICB2aXJ0dWFsIH5OQ3Vyc2VzVXNlclBhbmVsKCkge307CiAKLSAgVCogVXNlckRhdGEgKHZvaWQpIGNvbnN0CisgIFQqIFVzZXJEYXRhICh2b2lkKQogICB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGdldF91c2VyICgpKTsKICAgfTsKQEAgLTI2MCw3ICsyNjEsNyBAQAogICB2aXJ0dWFsIHZvaWQgc2V0VXNlckRhdGEgKGNvbnN0IFQqIHBfVXNlckRhdGEpCiAgIHsKICAgICBpZiAocCkKLSAgICAgIHNldF91c2VyIChjb25zdF9jYXN0PHZvaWQgKj4ocF9Vc2VyRGF0YSkpOworICAgICAgc2V0X3VzZXIgKGNvbnN0X2Nhc3Q8dm9pZCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwX1VzZXJEYXRhKSkpOwogICB9CiAgIC8vIEFzc29jaWF0ZSB0aGUgdXNlciBwYW5lbCB3aXRoIHRoZSB1c2VyIGRhdGEgcG9pbnRlZCB0byBieSBwX1VzZXJEYXRhLgogfTsKZGlmZiAtLWdpdCBhL2MrKy9jdXJzZXNwYWQuY2MgYi9jKysvY3Vyc2VzcGFkLmNjCmluZGV4IDI4YzU4ZmEuLmE1MzQ3MTMgMTAwNjQ0Ci0tLSBhL2MrKy9jdXJzZXNwYWQuY2MKKysrIGIvYysrL2N1cnNlc3BhZC5jYwpAQCAtMSw2ICsxLDYgQEAKIC8vICogdGhpcyBpcyBmb3IgbWFraW5nIGVtYWNzIGhhcHB5OiAtKi1Nb2RlOiBDKys7LSotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMywxMCArMzMsOSBAQAogCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKIAotI2luY2x1ZGUgPGV0aXAuaD4KICNpbmNsdWRlIDxjdXJzZXN3Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBjdXJzZXNwYWQuY2MsdiAxLjEzIDIwMDgvMDgvMDQgMTg6NTk6MjIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBjdXJzZXNwYWQuY2MsdiAxLjE3IDIwMTMvMDMvMzAgMTk6NDU6MzYgdG9tIEV4cCAkIikKIAogTkN1cnNlc1BhZDo6TkN1cnNlc1BhZChpbnQgbmxpbmVzLCBpbnQgbmNvbHMpCiAgIDogTkN1cnNlc1dpbmRvdygpLApAQCAtMjIwLDYgKzIxOSw3IEBACiAKIHZvaWQgTkN1cnNlc0ZyYW1lZFBhZDo6T25PcGVyYXRpb24oaW50IHBhZF9yZXEpCiB7CisgICh2b2lkKSBwYWRfcmVxOwogICBOQ3Vyc2VzV2luZG93KiBXID0gV2luKCk7CiAgIE5DdXJzZXNXaW5kb3cqIFcyID0gZ2V0V2luZG93KCk7CiAKQEAgLTIyOCwyNSArMjI4LDQ1IEBACiAgICAgaW50IEhlaWdodCA9IFctPmhlaWdodCgpOwogICAgIGludCBpLCByb3csIGNvbCwgaF9sZW4sIHZfbGVuOwogCi0gICAgaF9sZW4gPSAoV2lkdGgqV2lkdGggKyB3aWR0aCgpIC0gMSkvd2lkdGgoKTsKLSAgICBpZiAoaF9sZW49PTApCisgICAgaW50IG15X3dpZHRoID0gd2lkdGgoKTsKKworICAgIGlmIChteV93aWR0aCAhPSAwKSB7CisgICAgICBoX2xlbiA9IChXaWR0aCpXaWR0aCArIG15X3dpZHRoIC0gMSkgLyBteV93aWR0aDsKKyAgICAgIGlmIChoX2xlbj09MCkKKwloX2xlbiA9IDE7CisgICAgICBpZiAoaF9sZW4gPiBXaWR0aCkKKwloX2xlbiA9IFdpZHRoOworICAgIH0gZWxzZSB7CiAgICAgICBoX2xlbiA9IDE7Ci0gICAgaWYgKGhfbGVuID4gV2lkdGgpCi0gICAgICBoX2xlbiA9IFdpZHRoOworICAgIH0KIAotICAgIHZfbGVuID0gKEhlaWdodCpIZWlnaHQgKyBoZWlnaHQoKSAtIDEpL2hlaWdodCgpOwotICAgIGlmICh2X2xlbj09MCkKKyAgICBpbnQgbXlfaGVpZ2h0ID0gaGVpZ2h0KCk7CisKKyAgICBpZiAobXlfaGVpZ2h0ICE9IDApIHsKKyAgICAgIHZfbGVuID0gKEhlaWdodCpIZWlnaHQgKyBteV9oZWlnaHQgLSAxKSAvIG15X2hlaWdodDsKKyAgICAgIGlmICh2X2xlbj09MCkKKwl2X2xlbiA9IDE7CisgICAgICBpZiAodl9sZW4gPiBIZWlnaHQpCisJdl9sZW4gPSBIZWlnaHQ7CisgICAgfSBlbHNlIHsKICAgICAgIHZfbGVuID0gMTsKLSAgICBpZiAodl9sZW4gPiBIZWlnaHQpCi0gICAgICB2X2xlbiA9IEhlaWdodDsKKyAgICB9CiAKLSAgICBjb2wgID0gKG1pbl9jb2wgKiBXaWR0aCArIHdpZHRoKCkgLSAxKSAgLyB3aWR0aCgpOwotICAgIGlmIChjb2wgKyBoX2xlbiA+IFdpZHRoKQotICAgICAgY29sID0gV2lkdGggLSBoX2xlbjsKKyAgICBpZiAobXlfd2lkdGggIT0gMCkgeworICAgICAgY29sICA9IChtaW5fY29sICogV2lkdGggKyBteV93aWR0aCAtIDEpIC8gbXlfd2lkdGg7CisgICAgICBpZiAoY29sICsgaF9sZW4gPiBXaWR0aCkKKyAgICAgICAgY29sID0gV2lkdGggLSBoX2xlbjsKKyAgICB9IGVsc2UgeworICAgICAgY29sID0gMDsKKyAgICB9CiAKLSAgICByb3cgID0gKG1pbl9yb3cgKiBIZWlnaHQgKyBoZWlnaHQoKSAtIDEpIC8gaGVpZ2h0KCk7Ci0gICAgaWYgKHJvdyArIHZfbGVuID4gSGVpZ2h0KQotICAgICAgcm93ID0gSGVpZ2h0IC0gdl9sZW47CisgICAgaWYgKG15X2hlaWdodCAhPSAwKSB7CisgICAgICByb3cgID0gKG1pbl9yb3cgKiBIZWlnaHQgKyBteV9oZWlnaHQgLSAxKSAvIG15X2hlaWdodDsKKyAgICAgIGlmIChyb3cgKyB2X2xlbiA+IEhlaWdodCkKKyAgICAgICAgcm93ID0gSGVpZ2h0IC0gdl9sZW47CisgICAgfSBlbHNlIHsKKyAgICAgIHJvdyA9IDA7CisgICAgfQogCiAgICAgVzItPnZsaW5lKDEsV2lkdGgrMSxIZWlnaHQpOwogICAgIFcyLT5hdHRyb24oQV9SRVZFUlNFKTsKZGlmZiAtLWdpdCBhL2MrKy9jdXJzZXN3LmNjIGIvYysrL2N1cnNlc3cuY2MKaW5kZXggODI1ZDA4ZC4uMTY0Mzg3NyAxMDA2NDQKLS0tIGEvYysrL2N1cnNlc3cuY2MKKysrIGIvYysrL2N1cnNlc3cuY2MKQEAgLTEsNiArMSw2IEBACiAvLyAqIHRoaXMgaXMgZm9yIG1ha2luZyBlbWFjcyBoYXBweTogLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgImludGVybmFsLmgiCiAjaW5jbHVkZSAiY3Vyc2Vzdy5oIgogCi1NT0RVTEVfSUQoIiRJZDogY3Vyc2Vzdy5jYyx2IDEuNDkgMjAwNy8xMi8xNSAyMzowMTo1NyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGN1cnNlc3cuY2MsdiAxLjU0IDIwMTQvMDIvMDEgMjI6MTA6NDIgdG9tIEV4cCAkIikKIAogI2RlZmluZSBDT0xPUlNfTkVFRF9JTklUSUFMSVpBVElPTiAgLTEKICNkZWZpbmUgQ09MT1JTX05PVF9JTklUSUFMSVpFRCAgICAgICAwCkBAIC0xOTIsNyArMTkyLDYgQEAKICAgICBjb25zdHJ1Y3RpbmcoKTsKIAogICAgIHcgPSBzdGF0aWNfY2FzdDxXSU5ET1cgKj4oMCk7Ci0gICAgc2V0X2tleWJvYXJkKCk7CiB9CiAKIE5DdXJzZXNXaW5kb3c6Ok5DdXJzZXNXaW5kb3coaW50IG5saW5lcywgaW50IG5jb2xzLCBpbnQgYmVnaW5feSwgaW50IGJlZ2luX3gpCkBAIC0yODUsMTkgKzI4NCwxOSBAQAogTkN1cnNlc1dpbmRvdzo6TkN1cnNlc1dpbmRvdyhXSU5ET1cgKndpbiwgaW50IG5jb2xzKQogICA6IHcoMCksIGFsbG9jZWQoRkFMU0UpLCBwYXIoMCksIHN1YndpbnMoMCksIHNpYigwKQogeworICAgICh2b2lkKSBuY29sczsKICAgICBpbml0aWFsaXplKCk7CiAgICAgdyA9IHdpbjsKLSAgICBhc3NlcnQoKHctPl9tYXh4ICsxICkgPT0gbmNvbHMpOwogfQogCiBpbnQgX25jX3h4X3JpcG9mZl9pbml0KFdJTkRPVyAqdywgaW50IG5jb2xzKQogeworICAgICh2b2lkKSBuY29sczsKICAgICBpbnQgcmVzID0gRVJSOwogCiAgICAgUklQT0ZGSU5JVCBpbml0ID0gKnByaXArKzsKICAgICBpZiAoaW5pdCkgewotCU5DdXJzZXNXaW5kb3cqIFcgPSBuZXcgTkN1cnNlc1dpbmRvdyh3LG5jb2xzKTsKLQlyZXMgPSBpbml0KCpXKTsKKwlyZXMgPSBpbml0KCoobmV3IE5DdXJzZXNXaW5kb3codyxuY29scykpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTQwMiwxNiArNDAxLDE2IEBACiAgICAgfQogfQogCi1zaG9ydAorTkNVUlNFU19QQUlSU19UCiBOQ3Vyc2VzV2luZG93OjpnZXRQYWlyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2hvcnQ+KFBBSVJfTlVNQkVSKGdldGF0dHJzKHcpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5DVVJTRVNfUEFJUlNfVD4oUEFJUl9OVU1CRVIoZ2V0YXR0cnModykpKTsKIH0KIAotc2hvcnQKK05DVVJTRVNfQ09MT1JfVAogTkN1cnNlc1dpbmRvdzo6Z2V0Y29sb3IoaW50IGdldGJhY2spIGNvbnN0CiB7Ci0gICAgc2hvcnQgZm9yZSwgYmFjazsKKyAgICBOQ1VSU0VTX0NPTE9SX1QgZm9yZSwgYmFjazsKIAogICAgIGlmIChIYXZlQ29sb3JzKCkpIHsKIAlpZiAoOjpwYWlyX2NvbnRlbnQoZ2V0UGFpcigpLCAmZm9yZSwgJmJhY2spID09IEVSUikKQEAgLTQyOSwyNyArNDI4LDI3IEBACiAgICAgcmV0dXJuIChIYXZlQ29sb3JzKCkpID8gQ09MT1JTIDogMTsKIH0KIAotc2hvcnQKK05DVVJTRVNfUEFJUlNfVAogTkN1cnNlc1dpbmRvdzo6Z2V0Y29sb3IoKSBjb25zdAogewogICAgIHJldHVybiAoSGF2ZUNvbG9ycygpKSA/IGdldFBhaXIoKSA6IDA7CiB9CiAKIGludAotTkN1cnNlc1dpbmRvdzo6c2V0cGFsZXR0ZShzaG9ydCBmb3JlLCBzaG9ydCBiYWNrLCBzaG9ydCBwYWlyKQorTkN1cnNlc1dpbmRvdzo6c2V0cGFsZXR0ZShOQ1VSU0VTX0NPTE9SX1QgZm9yZSwgTkNVUlNFU19DT0xPUl9UIGJhY2ssIE5DVVJTRVNfUEFJUlNfVCBwYWlyKQogewogICAgIHJldHVybiAoSGF2ZUNvbG9ycygpKSA/IDo6aW5pdF9wYWlyKHBhaXIsIGZvcmUsIGJhY2spIDogT0s7CiB9CiAKIGludAotTkN1cnNlc1dpbmRvdzo6c2V0cGFsZXR0ZShzaG9ydCBmb3JlLCBzaG9ydCBiYWNrKQorTkN1cnNlc1dpbmRvdzo6c2V0cGFsZXR0ZShOQ1VSU0VTX0NPTE9SX1QgZm9yZSwgTkNVUlNFU19DT0xPUl9UIGJhY2spCiB7CiAgICAgcmV0dXJuIHNldHBhbGV0dGUoZm9yZSwgYmFjaywgZ2V0UGFpcigpKTsKIH0KIAogCiBpbnQKLU5DdXJzZXNXaW5kb3c6OnNldGNvbG9yKHNob3J0IHBhaXIpCitOQ3Vyc2VzV2luZG93OjpzZXRjb2xvcihOQ1VSU0VTX1BBSVJTX1QgcGFpcikKIHsKICAgICBpZiAoSGF2ZUNvbG9ycygpKSB7CiAJaWYgKChwYWlyIDwgMSkgfHwgKHBhaXIgPiBDT0xPUl9QQUlSUykpCkBAIC00NjQsNyArNDYzLDcgQEAKICNpZiBIQVZFX0hBU19LRVkKIGJvb2wgTkN1cnNlc1dpbmRvdzo6aGFzX21vdXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKCg6Omhhc19rZXkoS0VZX01PVVNFKSB8fCA6Ol9uY19oYXNfbW91c2UoKSkKKyAgICByZXR1cm4gKCg6Omhhc19rZXkoS0VZX01PVVNFKSB8fCA6Omhhc19tb3VzZSgpKQogCSAgICAgPyBUUlVFIDogRkFMU0UpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9jKysvY3Vyc2Vzdy5oIGIvYysrL2N1cnNlc3cuaAppbmRleCBiOGU5MjFhLi5jYTA3YjA0IDEwMDY0NAotLS0gYS9jKysvY3Vyc2Vzdy5oCisrKyBiL2MrKy9jdXJzZXN3LmgKQEAgLTEsNyArMSw3IEBACiAvLyAqIFRoaXMgbWFrZXMgZW1hY3MgaGFwcHkgLSotTW9kZTogQysrOy0qLQogLy8gdmlsZTpjcHBtb2RlCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIE5DVVJTRVNfQ1VSU0VTV19IX2luY2wKICNkZWZpbmUgTkNVUlNFU19DVVJTRVNXX0hfaW5jbCAxCiAKLS8vICRJZDogY3Vyc2Vzdy5oLHYgMS40OCAyMDA4LzAxLzE5IDIxOjA5OjEwIHRvbSBFeHAgJAorLy8gJElkOiBjdXJzZXN3LmgsdiAxLjUwIDIwMTQvMDIvMDEgMjI6MTc6MzcgdG9tIEV4cCAkCiAKICNpbmNsdWRlIDxldGlwLmg+CiAKQEAgLTExOCw3ICsxMTgsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBjaGdhdAotaW5saW5lIGludCBVTkRFRihjaGdhdCkoaW50IG4sIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cykgeworaW5saW5lIGludCBVTkRFRihjaGdhdCkoaW50IG4sIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgY29sb3IsIGNvbnN0IHZvaWQgKm9wdHMpIHsKICAgcmV0dXJuIGNoZ2F0KG4sIGF0dHIsIGNvbG9yLCBvcHRzKTsgfQogI3VuZGVmIGNoZ2F0CiAjZGVmaW5lIGNoZ2F0IFVOREVGKGNoZ2F0KQpAQCAtMTUxLDcgKzE1MSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIGNvbG9yX3NldAotaW5saW5lIGNodHlwZSBVTkRFRihjb2xvcl9zZXQpKHNob3J0IHAsIHZvaWQqIG9wdHMpIHsgcmV0dXJuIGNvbG9yX3NldChwLCBvcHRzKTsgfQoraW5saW5lIGNodHlwZSBVTkRFRihjb2xvcl9zZXQpKE5DVVJTRVNfUEFJUlNfVCBwLCB2b2lkKiBvcHRzKSB7IHJldHVybiBjb2xvcl9zZXQocCwgb3B0cyk7IH0KICN1bmRlZiBjb2xvcl9zZXQKICNkZWZpbmUgY29sb3Jfc2V0IFVOREVGKGNvbG9yX3NldCkKICNlbmRpZgpAQCAtMzYxLDcgKzM2MSw3IEBACiAKICNpZmRlZiBtdmNoZ2F0CiBpbmxpbmUgaW50IFVOREVGKG12Y2hnYXQpKGludCB5LCBpbnQgeCwgaW50IG4sCi0JCQkgIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cykgeworCQkJICBhdHRyX3QgYXR0ciwgTkNVUlNFU19QQUlSU19UIGNvbG9yLCBjb25zdCB2b2lkICpvcHRzKSB7CiAgIHJldHVybiBtdmNoZ2F0KHksIHgsIG4sIGF0dHIsIGNvbG9yLCBvcHRzKTsgfQogI3VuZGVmIG12Y2hnYXQKICNkZWZpbmUgbXZjaGdhdCBVTkRFRihtdmNoZ2F0KQpAQCAtNDYzLDcgKzQ2Myw3IEBACiAKICNpZmRlZiBtdndjaGdhdAogaW5saW5lIGludCBVTkRFRihtdndjaGdhdCkoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgaW50IG4sCi0JCQkgICBhdHRyX3QgYXR0ciwgc2hvcnQgY29sb3IsIGNvbnN0IHZvaWQgKm9wdHMpIHsKKwkJCSAgIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgY29sb3IsIGNvbnN0IHZvaWQgKm9wdHMpIHsKICAgcmV0dXJuIG12d2NoZ2F0KHdpbiwgeSwgeCwgbiwgYXR0ciwgY29sb3IsIG9wdHMpOyB9CiAjdW5kZWYgbXZ3Y2hnYXQKICNkZWZpbmUgbXZ3Y2hnYXQgVU5ERUYobXZ3Y2hnYXQpCkBAIC03NjMsMTAgKzc2MywxMCBAQAogCiAgIHZvaWQgICAgICAgICAgIHNldF9rZXlib2FyZCgpOwogCi0gIHNob3J0ICAgICAgICAgIGdldGNvbG9yKGludCBnZXRiYWNrKSBjb25zdDsKLSAgc2hvcnQgICAgICAgICAgZ2V0UGFpcigpIGNvbnN0OworICBOQ1VSU0VTX0NPTE9SX1QgZ2V0Y29sb3IoaW50IGdldGJhY2spIGNvbnN0OworICBOQ1VSU0VTX1BBSVJTX1QgZ2V0UGFpcigpIGNvbnN0OwogCi0gIHN0YXRpYyBpbnQgICAgIHNldHBhbGV0dGUoc2hvcnQgZm9yZSwgc2hvcnQgYmFjaywgc2hvcnQgcGFpcik7CisgIHN0YXRpYyBpbnQgICAgIHNldHBhbGV0dGUoTkNVUlNFU19DT0xPUl9UIGZvcmUsIE5DVVJTRVNfQ09MT1JfVCBiYWNrLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcik7CiAgIHN0YXRpYyBpbnQgICAgIGNvbG9ySW5pdGlhbGl6ZWQ7CiAKICAgLy8gVGhpcyBwcml2YXRlIGNvbnN0cnVjdG9yIGlzIG9ubHkgdXNlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uCkBAIC04OTYsMTkgKzg5NiwxOSBAQAogICBpbnQgICAgICAgICAgICBtYXh5KCkgY29uc3QgeyByZXR1cm4gZ2V0bWF4eSh3KSA9PSBFUlIgPyBFUlIgOiBnZXRtYXh5KHcpLTE7IH0KICAgLy8gTGFyZ2VzdCB5IGNvb3JkIGluIHdpbmRvdwogCi0gIHNob3J0ICAgICAgICAgIGdldGNvbG9yKCkgY29uc3Q7CisgIE5DVVJTRVNfUEFJUlNfVCBnZXRjb2xvcigpIGNvbnN0OwogICAvLyBBY3R1YWwgY29sb3IgcGFpcgogCi0gIHNob3J0ICAgICAgICAgIGZvcmVncm91bmQoKSBjb25zdCB7IHJldHVybiBnZXRjb2xvcigwKTsgfQorICBOQ1VSU0VTX0NPTE9SX1QgZm9yZWdyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIGdldGNvbG9yKDApOyB9CiAgIC8vIEFjdHVhbCBmb3JlZ3JvdW5kIGNvbG9yCiAKLSAgc2hvcnQgICAgICAgICAgYmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIGdldGNvbG9yKDEpOyB9CisgIE5DVVJTRVNfQ09MT1JfVCBiYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gZ2V0Y29sb3IoMSk7IH0KICAgLy8gQWN0dWFsIGJhY2tncm91bmQgY29sb3IKIAotICBpbnQgICAgICAgICAgICBzZXRwYWxldHRlKHNob3J0IGZvcmUsIHNob3J0IGJhY2spOworICBpbnQgICAgICAgICAgICBzZXRwYWxldHRlKE5DVVJTRVNfQ09MT1JfVCBmb3JlLCBOQ1VSU0VTX0NPTE9SX1QgYmFjayk7CiAgIC8vIFNldCBjb2xvciBwYWxldHRlIGVudHJ5CiAKLSAgaW50ICAgICAgICAgICAgc2V0Y29sb3Ioc2hvcnQgcGFpcik7CisgIGludCAgICAgICAgICAgIHNldGNvbG9yKE5DVVJTRVNfUEFJUlNfVCBwYWlyKTsKICAgLy8gU2V0IGFjdHVhbGx5IHVzZWQgcGFsZXR0ZSBlbnRyeQogCiAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMDcsMTggKzExMDcsMTggQEAKICAgY2h0eXBlICAgICAgICAgYXR0cmdldCgpIHsgcmV0dXJuIDo6Z2V0YXR0cnModyk7IH0KICAgLy8gR2V0IHRoZSB3aW5kb3cgYXR0cmlidXRlczsKIAotICBpbnQgICAgICAgICAgICBjb2xvcl9zZXQoc2hvcnQgY29sb3JfcGFpcl9udW1iZXIsIHZvaWQqIG9wdHM9TlVMTCkgeworICBpbnQgICAgICAgICAgICBjb2xvcl9zZXQoTkNVUlNFU19QQUlSU19UIGNvbG9yX3BhaXJfbnVtYmVyLCB2b2lkKiBvcHRzPU5VTEwpIHsKICAgICByZXR1cm4gOjp3Y29sb3Jfc2V0KHcsIGNvbG9yX3BhaXJfbnVtYmVyLCBvcHRzKTsgfQogICAvLyBTZXQgdGhlIHdpbmRvdyBjb2xvciBhdHRyaWJ1dGU7CiAKLSAgaW50ICAgICAgICAgICAgY2hnYXQoaW50IG4sIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cz1OVUxMKSB7CisgIGludCAgICAgICAgICAgIGNoZ2F0KGludCBuLCBhdHRyX3QgYXR0ciwgTkNVUlNFU19QQUlSU19UIGNvbG9yLCBjb25zdCB2b2lkICpvcHRzPU5VTEwpIHsKICAgICByZXR1cm4gOjp3Y2hnYXQodywgbiwgYXR0ciwgY29sb3IsIG9wdHMpOyB9CiAgIC8vIENoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiB0aGUgbmV4dCBuIGNoYXJhY3RlcnMgaW4gdGhlIGN1cnJlbnQgbGluZS4gSWYKICAgLy8gbiBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiByZW1haW5pbmcgY2hhcmFjdGVycyBpbiB0aGUKICAgLy8gbGluZSwgdGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBjaGFuZ2VkIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCiAKICAgaW50ICAgICAgICAgICAgY2hnYXQoaW50IHksIGludCB4LAotCQkgICAgICAgaW50IG4sIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cz1OVUxMKSB7CisJCSAgICAgICBpbnQgbiwgYXR0cl90IGF0dHIsIE5DVVJTRVNfUEFJUlNfVCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cz1OVUxMKSB7CiAgICAgcmV0dXJuIDo6bXZ3Y2hnYXQodywgeSwgeCwgbiwgYXR0ciwgY29sb3IsIG9wdHMpOyB9CiAgIC8vIE1vdmUgdGhlIGN1cnNvciB0byB0aGUgcmVxdWVzdGVkIHBvc2l0aW9uIGFuZCB0aGVuIHBlcmZvcm0gY2hnYXQoKSBhcwogICAvLyBkZXNjcmliZWQgYWJvdmUuCkBAIC0xNDM4LDE2ICsxNDM4LDE5IEBACiAgIC8vIFRoZSBkcml2ZXIgdHJhbnNsYXRlcyB0aGUga2V5c3Ryb2tlIGMgaW50byBhbiBQYWRfUmVxdWVzdAogCiAgIHZpcnR1YWwgdm9pZCBPblVua25vd25PcGVyYXRpb24oaW50IHBhZF9yZXEpIHsKKyAgICAodm9pZCkgcGFkX3JlcTsKICAgICA6OmJlZXAoKTsKICAgfQogICAvLyBUaGlzIGlzIGNhbGxlZCBpZiB0aGUgZHJpdmVyIHJldHVybnMgYW4gdW5rbm93biBvcC1jb2RlCiAKICAgdmlydHVhbCB2b2lkIE9uTmF2aWdhdGlvbkVycm9yKGludCBwYWRfcmVxKSB7CisgICAgKHZvaWQpIHBhZF9yZXE7CiAgICAgOjpiZWVwKCk7CiAgIH0KICAgLy8gVGhpcyBpcyBjYWxsZWQgaWYgYSBuYXZpZ2F0aW9uIHJlcXVlc3QgY291bGRuJ3QgYmUgc2F0aXNmaWVkCiAKICAgdmlydHVhbCB2b2lkIE9uT3BlcmF0aW9uKGludCBwYWRfcmVxKSB7CisgICAgKHZvaWQpIHBhZF9yZXE7CiAgIH07CiAgIC8vIE9uT3BlcmF0aW9uIGlzIGNhbGxlZCBpZiBhIFBhZF9PcGVyYXRpb24gd2FzIGV4ZWN1dGVkIGFuZCBqdXN0IGJlZm9yZQogICAvLyB0aGUgcmVmcmVzaCgpIG9wZXJhdGlvbiBpcyBkb25lLgpAQCAtMTU0MiwxMSArMTU0NSwxNSBAQAogICB9CiAKICAgdm9pZCBzZXRXaW5kb3coTkN1cnNlc1dpbmRvdyYgdmlldywgaW50IHZfZ3JpZCA9IDEsIGludCBoX2dyaWQgPSAxKSB7CisgICAgKHZvaWQpIHZpZXc7CisgICAgKHZvaWQpIHZfZ3JpZDsKKyAgICAodm9pZCkgaF9ncmlkOwogICAgIGVycl9oYW5kbGVyKCJPcGVyYXRpb24gbm90IGFsbG93ZWQiKTsKICAgfQogICAvLyBEaXNhYmxlIHRoaXMgY2FsbDsgdGhlIHZpZXdwb3J0IGlzIGFscmVhZHkgZGVmaW5lZAogCiAgIHZvaWQgc2V0U3ViV2luZG93KE5DdXJzZXNXaW5kb3cmIHN1YikgeworICAgICh2b2lkKSBzdWI7CiAgICAgZXJyX2hhbmRsZXIoIk9wZXJhdGlvbiBub3QgYWxsb3dlZCIpOwogICB9CiAgIC8vIERpc2FibGUgdGhpcyBjYWxsOyB0aGUgdmlld3BvcnQgc3Vid2luZG93IGlzIGFscmVhZHkgZGVmaW5lZApkaWZmIC0tZ2l0IGEvYysrL2N1cnNzbGsuY2MgYi9jKysvY3Vyc3Nsay5jYwppbmRleCBjZmJjOWRhLi4yMzc4NWRmIDEwMDY0NAotLS0gYS9jKysvY3Vyc3Nsay5jYworKysgYi9jKysvY3Vyc3Nsay5jYwpAQCAtMSw2ICsxLDYgQEAKIC8vICogdGhpcyBpcyBmb3IgbWFraW5nIGVtYWNzIGhhcHB5OiAtKi1Nb2RlOiBDKys7LSotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNSwxNCArMzUsMTUgQEAKICNpbmNsdWRlICJjdXJzc2xrLmgiCiAjaW5jbHVkZSAiY3Vyc2VzYXBwLmgiCiAKLU1PRFVMRV9JRCgiJElkOiBjdXJzc2xrLmNjLHYgMS4xNSAyMDA1LzA4LzA2IDIyOjEyOjM2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogY3Vyc3Nsay5jYyx2IDEuMTYgMjAxMi8wMi8yMyAxMDo0MTo1NiB0b20gRXhwICQiKQogCiBTb2Z0X0xhYmVsX0tleV9TZXQ6OlNvZnRfTGFiZWxfS2V5JgogICBTb2Z0X0xhYmVsX0tleV9TZXQ6OlNvZnRfTGFiZWxfS2V5OjpvcGVyYXRvcj0oY2hhciAqdGV4dCkKIHsKICAgZGVsZXRlW10gbGFiZWw7Ci0gIGxhYmVsID0gbmV3IGNoYXJbMSArIDo6c3RybGVuKHRleHQpXTsKLSAgKDo6c3RyY3B5KShsYWJlbCx0ZXh0KTsKKyAgc2l6ZV90IG5lZWQgPSAxICsgOjpzdHJsZW4odGV4dCk7CisgIGxhYmVsID0gbmV3IGNoYXJbbmVlZF07CisgIDo6X25jX1NUUkNQWShsYWJlbCx0ZXh0LG5lZWQpOwogICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL2MrKy9kZW1vLmNjIGIvYysrL2RlbW8uY2MKaW5kZXggZGRkNWYyYi4uOGJjZmIxNCAxMDA2NDQKLS0tIGEvYysrL2RlbW8uY2MKKysrIGIvYysrL2RlbW8uY2MKQEAgLTEsNiArMSw2IEBACiAvLyAqIFRoaXMgbWFrZXMgZW1hY3MgaGFwcHkgLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsNyArMzUsNyBAQAogICogICBEZW1vIGNvZGUgZm9yIE5DdXJzZXNNZW51IGFuZCBOQ3Vyc2VzRm9ybSB3cml0dGVuIGJ5CiAgKiAgIEp1ZXJnZW4gUGZlaWZlcgogICoKLSAqICRJZDogZGVtby5jYyx2IDEuMzggMjAwOC8wOC8wNCAxNzoxNjo1NyB0b20gRXhwICQKKyAqICRJZDogZGVtby5jYyx2IDEuNDEgMjAxMi8wMi8yMyAxMDo0MTo1NiB0b20gRXhwICQKICAqLwogCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKQEAgLTQzLDcgKzQzLDEzIEBACiAjaW5jbHVkZSAiY3Vyc2VzbS5oIgogI2luY2x1ZGUgImN1cnNlc2YuaCIKIAorI2lmZGVmIF9fTUlOR1czMl9fCisjdW5kZWYgS0VZX0VWRU5UCisjZW5kaWYKKworI2lmbmRlZiBfX01JTkdXMzJfXwogZXh0ZXJuICJDIiB1bnNpZ25lZCBpbnQgc2xlZXAodW5zaWduZWQgaW50KTsKKyNlbmRpZgogCiAjdW5kZWYgaW5kZXggLy8gbmVlZGVkIGZvciBOZVhUCiAKQEAgLTIxNCw2ICsyMjAsNyBAQAogICBpbnQgY2hrOwogcHJvdGVjdGVkOgogICBib29sIGZpZWxkX2NoZWNrKE5DdXJzZXNGb3JtRmllbGQmIGYpIHsKKyAgICAodm9pZCkgZjsKICAgICByZXR1cm4gVFJVRTsKICAgfQogICBib29sIGNoYXJfY2hlY2soaW50IGMpIHsKQEAgLTMxMyw3ICszMjAsNyBAQAogICAgIGZvcihpbnQgaT0xOyBpIDw9IFMtPmxhYmVscygpOyBpKyspIHsKICAgICAgIGNoYXIgYnVmWzhdOwogICAgICAgYXNzZXJ0KGkgPCAxMDApOwotICAgICAgOjpzcHJpbnRmKGJ1ZiwgIkZybSUwMmQiLCBpKTsKKyAgICAgIDo6X25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKHNpemVvZihidWYpKSAiRnJtJTAyZCIsIGkpOwogICAgICAgKCpTKVtpXSA9IGJ1ZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHQKICAgICAgICgqUylbaV0gPSBTb2Z0X0xhYmVsX0tleV9TZXQ6OlNvZnRfTGFiZWxfS2V5OjpMZWZ0OyAvLyBKdXN0aWZpY2F0aW9uCiAgICAgfQpAQCAtNTMzLDcgKzU0MCw3IEBACiAgIGZvcihpbnQgaT0xOyBpIDw9IFMubGFiZWxzKCk7IGkrKykgewogICAgIGNoYXIgYnVmWzhdOwogICAgIGFzc2VydChpIDwgMTAwKTsKLSAgICA6OnNwcmludGYoYnVmLCAiS2V5JTAyZCIsIGkpOworICAgIDo6X25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKHNpemVvZihidWYpKSAiS2V5JTAyZCIsIGkpOwogICAgIFNbaV0gPSBidWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0CiAgICAgU1tpXSA9IFNvZnRfTGFiZWxfS2V5X1NldDo6U29mdF9MYWJlbF9LZXk6OkxlZnQ7IC8vIEp1c3RpZmljYXRpb24KICAgfQpkaWZmIC0tZ2l0IGEvYysrL2V0aXAuaC5pbiBiL2MrKy9ldGlwLmguaW4KaW5kZXggMjA2NDJhNi4uOWY2NDJlZSAxMDA2NDQKLS0tIGEvYysrL2V0aXAuaC5pbgorKysgYi9jKysvZXRpcC5oLmluCkBAIC0xLDYgKzEsNiBAQAogLy8gKiBUaGlzIG1ha2VzIGVtYWNzIGhhcHB5IC0qLU1vZGU6IEMrKzstKi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMxLDcgKzMxLDcgQEAKICAqICAgQXV0aG9yOiBKdWVyZ2VuIFBmZWlmZXIsIDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLy8gJElkOiBldGlwLmguaW4sdiAxLjM3IDIwMDgvMDgvMzAgMTk6Mjc6MzIgdG9tIEV4cCAkCisvLyAkSWQ6IGV0aXAuaC5pbix2IDEuMzkgMjAxMi8xMi8yOSAyMTo1MDo0NCB0b20gRXhwICQKIAogI2lmbmRlZiBOQ1VSU0VTX0VUSVBfSF9pbmNsCiAjZGVmaW5lIE5DVVJTRVNfRVRJUF9IX2luY2wgMQpAQCAtMTg0LDcgKzE4NCw3IEBACiAKICAgTkN1cnNlc1BhbmVsRXhjZXB0aW9uIChjb25zdCBjaGFyICptc2csIGludCBlcnIpIDoKICAgICBOQ3Vyc2VzRXhjZXB0aW9uIChtc2csIGVyciksCi0gICAgcCAoTlVMTCkKKyAgICBwICgwKQogICAgIHt9OwogCiAgIE5DdXJzZXNQYW5lbEV4Y2VwdGlvbiAoY29uc3QgTkN1cnNlc1BhbmVsKiBwYW5lbCwKQEAgLTE5Niw3ICsxOTYsNyBAQAogCiAgIE5DdXJzZXNQYW5lbEV4Y2VwdGlvbiAoaW50IGVycikgOgogICAgIE5DdXJzZXNFeGNlcHRpb24gKCJwYW5lbCBsaWJyYXJ5IGVycm9yIiwgZXJyKSwKLSAgICBwIChOVUxMKQorICAgIHAgKDApCiAgICAge307CiAKICAgTkN1cnNlc1BhbmVsRXhjZXB0aW9uIChjb25zdCBOQ3Vyc2VzUGFuZWwqIHBhbmVsLApAQCAtMjM1LDcgKzIzNSw3IEBACiAKICAgTkN1cnNlc01lbnVFeGNlcHRpb24gKGNvbnN0IGNoYXIgKm1zZywgaW50IGVycikgOgogICAgIE5DdXJzZXNFeGNlcHRpb24gKG1zZywgZXJyKSwKLSAgICBtIChOVUxMKQorICAgIG0gKDApCiAgICAge307CiAKICAgTkN1cnNlc01lbnVFeGNlcHRpb24gKGNvbnN0IE5DdXJzZXNNZW51KiBtZW51LApAQCAtMjQ3LDcgKzI0Nyw3IEBACiAKICAgTkN1cnNlc01lbnVFeGNlcHRpb24gKGludCBlcnIpIDoKICAgICBOQ3Vyc2VzRXhjZXB0aW9uICgibWVudSBsaWJyYXJ5IGVycm9yIiwgZXJyKSwKLSAgICBtIChOVUxMKQorICAgIG0gKDApCiAgICAge307CiAKICAgTkN1cnNlc01lbnVFeGNlcHRpb24gKGNvbnN0IE5DdXJzZXNNZW51KiBtZW51LApAQCAtMjg2LDcgKzI4Niw3IEBACiAKICAgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGNvbnN0IGNoYXIgKm1zZywgaW50IGVycikgOgogICAgIE5DdXJzZXNFeGNlcHRpb24gKG1zZywgZXJyKSwKLSAgICBmIChOVUxMKQorICAgIGYgKDApCiAgICAge307CiAKICAgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGNvbnN0IE5DdXJzZXNGb3JtKiBmb3JtLApAQCAtMjk4LDcgKzI5OCw3IEBACiAKICAgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGludCBlcnIpIDoKICAgICBOQ3Vyc2VzRXhjZXB0aW9uICgiZm9ybSBsaWJyYXJ5IGVycm9yIiwgZXJyKSwKLSAgICBmIChOVUxMKQorICAgIGYgKDApCiAgICAge307CiAKICAgTkN1cnNlc0Zvcm1FeGNlcHRpb24gKGNvbnN0IE5DdXJzZXNGb3JtKiBmb3JtLApAQCAtMzY3LDExICszNjcsMTMgQEAKICNkZWZpbmUgTkNVUlNFU19DUFBfVFJZCQkvKiBub3RoaW5nICovCiAjZGVmaW5lIE5DVVJTRVNfQ1BQX0NBVENIKGUpCWlmIChmYWxzZSkKICNkZWZpbmUgVEhST1dTKHMpCQkvKiBub3RoaW5nICovCisjZGVmaW5lIFRIUk9XMihzLHQpCQkvKiBub3RoaW5nICovCiAjZWxpZiBDUFBfSEFTX1RSWV9DQVRDSAogICB0aHJvdyAqZTsKICNkZWZpbmUgTkNVUlNFU19DUFBfVFJZCQl0cnkKICNkZWZpbmUgTkNVUlNFU19DUFBfQ0FUQ0goZSkJY2F0Y2goZSkKICNkZWZpbmUgVEhST1dTKHMpCQl0aHJvdyhzKQorI2RlZmluZSBUSFJPVzIocyx0KQkJdGhyb3cocyx0KQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL2MrKy9pbnRlcm5hbC5oIGIvYysrL2ludGVybmFsLmgKaW5kZXggMzA2NmU3Mi4uMWY2YjRhNiAxMDA2NDQKLS0tIGEvYysrL2ludGVybmFsLmgKKysrIGIvYysrL2ludGVybmFsLmgKQEAgLTEsNiArMSw2IEBACiAvLyAqIFRoaXMgbWFrZXMgZW1hY3MgaGFwcHkgLSotTW9kZTogQysrOy0qLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzEsNyArMzEsNyBAQAogICogICBBdXRob3I6IEp1ZXJnZW4gUGZlaWZlciwgMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vLyAkSWQ6IGludGVybmFsLmgsdiAxLjE2IDIwMDgvMTAvMjUgMjE6MzU6NDQgdG9tIEV4cCAkCisvLyAkSWQ6IGludGVybmFsLmgsdiAxLjE4IDIwMTIvMDIvMjMgMTA6NDE6NTYgdG9tIEV4cCAkCiAKICNpZm5kZWYgTkNVUlNFU19DUExVU19JTlRFUk5BTF9ICiAjZGVmaW5lIE5DVVJTRVNfQ1BMVVNfSU5URVJOQUxfSCAxCkBAIC00NCw2ICs0NCwxMSBAQAogI2RlZmluZSBNT0RVTEVfSUQoaWQpIC8qbm90aGluZyovCiAjZW5kaWYKIAorI2lmZGVmIF9fTUlOR1czMl9fCisjaW5jbHVkZSA8bmNfbWluZ3cuaD4KKyN1bmRlZiBLRVlfRVZFTlQKKyNlbmRpZgorCiAjaWZuZGVmIF9RTlhfU09VUkNFCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC01Nyw0ICs2Miw2IEBACiAjZGVmaW5lIE5VTEwgMAogI2VuZGlmCiAKKyNpbmNsdWRlIDxuY19zdHJpbmcuaD4KKwogI2VuZGlmIC8qIE5DVVJTRVNfQ1BMVVNfSU5URVJOQUxfSCAqLwpkaWZmIC0tZ2l0IGEvYysrL21vZHVsZXMgYi9jKysvbW9kdWxlcwppbmRleCBiYzRmYWU1Li41NmRkYWQ1IDEwMDY0NAotLS0gYS9jKysvbW9kdWxlcworKysgYi9jKysvbW9kdWxlcwpAQCAtMSw3ICsxLDcgQEAKICMgUHJvZ3JhbSBtb2R1bGVzCi0jICRJZDogbW9kdWxlcyx2IDEuNyAyMDA2LzEyLzI0IDAwOjUzOjA4IHRvbSBFeHAgJAorIyAkSWQ6IG1vZHVsZXMsdiAxLjExIDIwMTMvMDMvMzAgMTk6NDE6MTEgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0zMiwxNCArMzIsMTMgQEAKICMKIAogQCBiYXNlCi1jdXJzZXNmCQljKysJCSQoc3JjZGlyKQkkKGN1cnNlc2ZfaCkgJChjdXJzZXNhcHBfaCkKLWN1cnNlc20JCWMrKwkJJChzcmNkaXIpCSQoY3Vyc2VzbV9oKSAkKGN1cnNlc2FwcF9oKQotY3Vyc2VzcAkJYysrCQkkKHNyY2RpcikJJChjdXJzZXNwX2gpCi1jdXJzZXN3CQljKysJCSQoc3JjZGlyKQkkKGN1cnNlc3dfaCkKLWN1cnNlc3BhZAljKysJCSQoc3JjZGlyKQkkKGN1cnNlc3dfaCkKLWN1cnNzbGsJCWMrKwkJJChzcmNkaXIpCSQoY3Vyc3Nsa19oKSAkKGN1cnNlc2FwcF9oKQotY3Vyc2VzYXBwCWMrKwkJJChzcmNkaXIpCSQoY3Vyc2VzYXBwX2gpCi1jdXJzZXNtYWluCWMrKwkJJChzcmNkaXIpCSQoY3Vyc2VzYXBwX2gpCi1kZW1vCQljKysJCSQoc3JjZGlyKQkkKGN1cnNlc2ZfaCkgJChjdXJzZXNtX2gpICQoY3Vyc2VzYXBwX2gpCitjdXJzZXNmCQljKysJCSQoc3JjZGlyKQkkKGludGVybmFsX2gpICQoY3Vyc2VzZl9oKSAkKGN1cnNlc2FwcF9oKQorY3Vyc2VzbQkJYysrCQkkKHNyY2RpcikJJChpbnRlcm5hbF9oKSAkKGN1cnNlc21faCkgJChjdXJzZXNhcHBfaCkKK2N1cnNlc3cJCWMrKwkJJChzcmNkaXIpCSQoaW50ZXJuYWxfaCkgJChjdXJzZXN3X2gpCitjdXJzZXNwYWQJYysrCQkkKHNyY2RpcikJJChpbnRlcm5hbF9oKSAkKGN1cnNlc3dfaCkKK2N1cnNlc3AJCWMrKwkJJChzcmNkaXIpCSQoaW50ZXJuYWxfaCkgJChjdXJzZXNwX2gpCitjdXJzc2xrCQljKysJCSQoc3JjZGlyKQkkKGludGVybmFsX2gpICQoY3Vyc2VzYXBwX2gpCitjdXJzZXNhcHAJYysrCQkkKHNyY2RpcikJJChpbnRlcm5hbF9oKSAkKGN1cnNlc2FwcF9oKQorY3Vyc2VzbWFpbgljKysJCSQoc3JjZGlyKQkkKGludGVybmFsX2gpICQoY3Vyc2VzYXBwX2gpICQoSU5DRElSKS9uY19hbGxvYy5oCiAKICMgdmlsZTptYWtlbW9kZQpkaWZmIC0tZ2l0IGEvY29uZmlnLmd1ZXNzIGIvY29uZmlnLmd1ZXNzCmluZGV4IGM3NjA3YzcuLmY3ZWIxNDEgMTAwNzU1Ci0tLSBhL2NvbmZpZy5ndWVzcworKysgYi9jb25maWcuZ3Vlc3MKQEAgLTEsMTQgKzEsMTIgQEAKICMhIC9iaW4vc2gKICMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KLSMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOAotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAxOTkyLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wNC0xNCcKK3RpbWVzdGFtcD0nMjAxNS0wMy0wNCcKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CkBAIC0xNywyNiArMTUsMjIgQEAKICMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQotIyAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAjCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCiAjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCi0jIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLQotCi0jIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdAorIyBwcm9ncmFtLiAgVGhpcyBFeGNlcHRpb24gaXMgYW4gYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIHNlY3Rpb24gNworIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMyAoIkdQTHYzIikuCiAjCi0jIFRoaXMgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lIHNpbWlsYXIgdG8KLSMgY29uZmlnLnN1Yi4gIElmIGl0IHN1Y2NlZWRzLCBpdCBwcmludHMgdGhlIHN5c3RlbSBuYW1lIG9uIHN0ZG91dCwgYW5kCi0jIGV4aXRzIHdpdGggMC4gIE90aGVyd2lzZSwgaXQgZXhpdHMgd2l0aCAxLgorIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXI7IG1haW50YWluZWQgc2luY2UgMjAwMCBieSBCZW4gRWxsaXN0b24uCiAjCi0jIFRoZSBwbGFuIGlzIHRoYXQgdGhpcyBjYW4gYmUgY2FsbGVkIGJ5IGNvbmZpZ3VyZSBzY3JpcHRzIGlmIHlvdQotIyBkb24ndCBzcGVjaWZ5IGFuIGV4cGxpY2l0IGJ1aWxkIHN5c3RlbSB0eXBlLgorIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECisjCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LgorCiAKIG1lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAogCkBAIC01Niw4ICs1MCw3IEBACiBHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQogCiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCi1Db3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0yMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IDE5OTItMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTEzOSwxMiArMTMyLDMzIEBACiBVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgogVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCiAKK2Nhc2UgIiR7VU5BTUVfU1lTVEVNfSIgaW4KK0xpbnV4fEdOVXxHTlUvKikKKwkjIElmIHRoZSBzeXN0ZW0gbGFja3MgYSBjb21waWxlciwgdGhlbiBqdXN0IHBpY2sgZ2xpYmMuCisJIyBXZSBjb3VsZCBwcm9iYWJseSB0cnkgaGFyZGVyLgorCUxJQkM9Z251CisKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJY2F0IDw8LUVPRiA+ICRkdW1teS5jCisJI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisJI2lmIGRlZmluZWQoX19VQ0xJQkNfXykKKwlMSUJDPXVjbGliYworCSNlbGlmIGRlZmluZWQoX19kaWV0bGliY19fKQorCUxJQkM9ZGlldGxpYmMKKwkjZWxzZQorCUxJQkM9Z251CisJI2VuZGlmCisJRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15MSUJDJyB8IHNlZCAncywgLCxnJ2AKKwk7OworZXNhYworCiAjIE5vdGU6IG9yZGVyIGlzIHNpZ25pZmljYW50IC0gdGhlIGNhc2UgYnJhbmNoZXMgYXJlIG5vdCBleGNsdXNpdmUuCiAKIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KICAgICAqOk5ldEJTRDoqOiopCiAJIyBOZXRCU0QgKG5ic2QpIHRhcmdldHMgc2hvdWxkICh3aGVyZSBhcHBsaWNhYmxlKSBtYXRjaCBvbmUgb3IKLQkjIG1vcmUgb2YgdGhlIHR1cHBsZXM6ICotKi1uZXRic2RlbGYqLCAqLSotbmV0YnNkYW91dCosCisJIyBtb3JlIG9mIHRoZSB0dXBsZXM6ICotKi1uZXRic2RlbGYqLCAqLSotbmV0YnNkYW91dCosCiAJIyAqLSotbmV0YnNkZWNvZmYqIGFuZCAqLSotbmV0YnNkKi4gIEZvciB0YXJnZXRzIHRoYXQgcmVjZW50bHkKIAkjIHN3aXRjaGVkIHRvIEVMRiwgKi0qLW5ldGJzZCogd291bGQgc2VsZWN0IHRoZSBvbGQKIAkjIG9iamVjdCBmaWxlIGZvcm1hdC4gIFRoaXMgcHJvdmlkZXMgYm90aCBmb3J3YXJkCkBAIC0xNTQsMjMgKzE2OCwzMCBAQAogCSMgTm90ZTogTmV0QlNEIGRvZXNuJ3QgcGFydGljdWxhcmx5IGNhcmUgYWJvdXQgdGhlIHZlbmRvcgogCSMgcG9ydGlvbiBvZiB0aGUgbmFtZS4gIFdlIGFsd2F5cyBzZXQgaXQgdG8gInVua25vd24iLgogCXN5c2N0bD0ic3lzY3RsIC1uIGh3Lm1hY2hpbmVfYXJjaCIKLQlVTkFNRV9NQUNISU5FX0FSQ0g9YCgvc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgL3Vzci9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duKWAKKwlVTkFNRV9NQUNISU5FX0FSQ0g9YCh1bmFtZSAtcCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIGVjaG8gdW5rbm93bilgCiAJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgogCSAgICBhcm1lYikgbWFjaGluZT1hcm1lYi11bmtub3duIDs7CiAJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsKIAkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKIAkgICAgc2gzZWIpIG1hY2hpbmU9c2gtdW5rbm93biA7OwogCSAgICBzaDVlbCkgbWFjaGluZT1zaDVsZS11bmtub3duIDs7CisJICAgIGVhcm12KikKKwkJYXJjaD1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLWUgJ3MsXmVcKGFybXZbMC05XVwpLiokLFwxLCdgCisJCWVuZGlhbj1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLW5lICdzLF4uKlwoZWJcKSQsXDEscCdgCisJCW1hY2hpbmU9JHthcmNofSR7ZW5kaWFufS11bmtub3duCisJCTs7CiAJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKIAllc2FjCiAJIyBUaGUgT3BlcmF0aW5nIFN5c3RlbSBpbmNsdWRpbmcgb2JqZWN0IGZvcm1hdCwgaWYgaXQgaGFzIHN3aXRjaGVkCiAJIyB0byBFTEYgcmVjZW50bHksIG9yIHdpbGwgaW4gdGhlIGZ1dHVyZS4KIAljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCi0JICAgIGFybSp8aTM4NnxtNjhrfG5zMzJrfHNoMyp8c3BhcmN8dmF4KQorCSAgICBhcm0qfGVhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKIAkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAotCQkJfCBncmVwIF9fRUxGX18gPi9kZXYvbnVsbAorCQkJfCBncmVwIC1xIF9fRUxGX18KIAkJdGhlbgogCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgogCQkgICAgIyBSZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CkBAIC0xODAsNyArMjAxLDE0IEBACiAJCWZpCiAJCTs7CiAJICAgICopCi0JICAgICAgICBvcz1uZXRic2QKKwkJb3M9bmV0YnNkCisJCTs7CisJZXNhYworCSMgRGV0ZXJtaW5lIEFCSSB0YWdzLgorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgZWFybSopCisJCWV4cHI9J3MvXmVhcm12WzAtOV0vLWVhYmkvO3MvZWIkLy8nCisJCWFiaT1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLWUgIiRleHByImAKIAkJOzsKIAllc2FjCiAJIyBUaGUgT1MgcmVsZWFzZQpAQCAtMTk5LDcgKzIyNywxMSBAQAogCSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgogCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgogCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KLQllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKKwllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSR7YWJpfSIKKwlleGl0IDs7CisgICAgKjpCaXRyaWc6KjoqKQorCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9CaXRyaWcuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tYml0cmlnJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICAqOk9wZW5CU0Q6KjoqKQogCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKQEAgLTIyMyw3ICsyNTUsNyBAQAogCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAogCQk7OwogCSo1LiopCi0JICAgICAgICBVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAogCQk7OwogCWVzYWMKIAkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgpAQCAtMjY5LDcgKzMwMSwxMCBAQAogCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgogCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAotCWV4aXQgOzsKKwkjIFJlc2V0IEVYSVQgdHJhcCBiZWZvcmUgZXhpdGluZyB0byBhdm9pZCBzcHVyaW91cyBub24temVybyBleGl0IGNvZGUuCisJZXhpdGNvZGU9JD8KKwl0cmFwICcnIDAKKwlleGl0ICRleGl0Y29kZSA7OwogICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCiAJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPwogCSMgU2hvdWxkIHdlIGNoYW5nZSBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZApAQCAtMjk1LDEyICszMzAsMTIgQEAKIAllY2hvIHMzOTAtaWJtLXp2bW9lCiAJZXhpdCA7OwogICAgICo6T1M0MDA6KjoqKQotICAgICAgICBlY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZWNobyBwb3dlcnBjLWlibS1vczQwMAogCWV4aXQgOzsKICAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCiAJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKLSAgICBhcm06cmlzY29zOio6Knxhcm06UklTQ09TOio6KikKKyAgICBhcm0qOnJpc2NvczoqOip8YXJtKjpSSVNDT1M6KjoqKQogCWVjaG8gYXJtLXVua25vd24tcmlzY29zCiAJZXhpdCA7OwogICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCkBAIC0zMjQsMTQgKzM1OSwzMyBAQAogCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgogCSAgICBzcGFyYykgZWNobyBzcGFyYy1pY2wtbng3OyBleGl0IDs7CiAJZXNhYyA7OworICAgIHMzOTB4OlN1bk9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OwogICAgIHN1bjRIOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtaGFsLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OwogICAgIHN1bjQqOlN1bk9TOjUuKjoqIHwgdGFkcG9sZSo6U3VuT1M6NS4qOiopCiAJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKIAlleGl0IDs7CisgICAgaTg2cGM6QXVyb3JhVVg6NS4qOiogfCBpODZ4ZW46QXVyb3JhVVg6NS4qOiopCisJZWNobyBpMzg2LXBjLWF1cm9yYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBpODZwYzpTdW5PUzo1Lio6KiB8IGk4NnhlbjpTdW5PUzo1Lio6KikKLQllY2hvIGkzODYtcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJU1VOX0FSQ0g9ImkzODYiCisJIyBJZiB0aGVyZSBpcyBhIGNvbXBpbGVyLCBzZWUgaWYgaXQgaXMgY29uZmlndXJlZCBmb3IgNjQtYml0IG9iamVjdHMuCisJIyBOb3RlIHRoYXQgdGhlIFN1biBjYyBkb2VzIG5vdCB0dXJuIF9fTFA2NF9fIGludG8gMSBsaWtlIGdjYyBkb2VzLgorCSMgVGhpcyB0ZXN0IHdvcmtzIGZvciBib3RoIGNvbXBpbGVycy4KKwlpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KKwkgICAgaWYgKGVjaG8gJyNpZmRlZiBfX2FtZDY0JzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJZ3JlcCBJU182NEJJVF9BUkNIID4vZGV2L251bGwKKwkgICAgdGhlbgorCQlTVU5fQVJDSD0ieDg2XzY0IgorCSAgICBmaQorCWZpCisJZWNobyAke1NVTl9BUkNIfS1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKICAgICBzdW40KjpTdW5PUzo2KjoqKQogCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRoaXMgaXMgdGhlIHByb3BlciB3YXkgdG8gY2Fub25pY2FsaXplCkBAIC0zNzUsMjMgKzQyOSwyMyBAQAogICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBhdGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAogICAgICMgYmUgbm8gcHJvYmxlbS4KICAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKIAllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICAqZmFsY29uKjoqTWlOVDoqOiogfCAqZmFsY29uKjoqbWludDoqOiogfCAqZmFsY29uKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIG02OGs6bWFjaHRlbjoqOiopCiAJZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwpAQCAtNDYxLDggKzUxNSw4IEBACiAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCiAJZXhpdCA7OwogICAgIEFWaWlPTjpkZ3V4Oio6KikKLSAgICAgICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKLSAgICAgICAgVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwkjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcworCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCiAJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQogCXRoZW4KIAkgICAgaWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCkBAIC00NzUsNyArNTI5LDcgQEAKIAllbHNlCiAJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQogCWZpCi0gCWV4aXQgOzsKKwlleGl0IDs7CiAgICAgTTg4KjpEb2xwaGluT1M6KjoqKQkjIERvbHBoaW5PUyAoU1ZSMykKIAllY2hvIG04OGstZG9scGhpbi1zeXN2MwogCWV4aXQgOzsKQEAgLTUzMiwxNSArNTg2LDE2IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKIAllbHNlCiAJCUlCTV9BUkNIPXBvd2VycGMKIAlmaQotCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgotCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWlmIFsgLXggL3Vzci9iaW4vbHNscHAgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vbHNscHAgLUxxYyBib3MucnRlLmxpYmMgfAorCQkJICAgYXdrIC1GOiAneyBwcmludCAkMyB9JyB8IHNlZCBzL1swLTldKiQvMC9gCiAJZWxzZQogCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQogCWZpCkBAIC01NzUsNTIgKzYzMCw1MiBAQAogCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkKIAkJaWYgWyAteCAvdXNyL2Jpbi9nZXRjb25mIF07IHRoZW4KIAkJICAgIHNjX2NwdV92ZXJzaW9uPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCi0gICAgICAgICAgICAgICAgICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCi0gICAgICAgICAgICAgICAgICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCi0gICAgICAgICAgICAgICAgICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OwotICAgICAgICAgICAgICAgICAgICAgICAgICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CisJCSAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKKwkJICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorCQkgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKKwkJICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKwkJCSAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OwogCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCi0gICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7Ci0gICAgICAgICAgICAgICAgICAgIGVzYWMKKwkJCWVzYWMgOzsKKwkJICAgIGVzYWMKIAkJZmkKIAkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCiAJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0JCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkJICAgIHNlZCAncy9eCQkvLycgPDwgRU9GID4kZHVtbXkuYwogCi0gICAgICAgICAgICAgICNkZWZpbmUgX0hQVVhfU09VUkNFCi0gICAgICAgICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorCQkjZGVmaW5lIF9IUFVYX1NPVVJDRQorCQkjaW5jbHVkZSA8c3RkbGliLmg+CisJCSNpbmNsdWRlIDx1bmlzdGQuaD4KIAotICAgICAgICAgICAgICBpbnQgbWFpbiAoKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKLSAgICAgICAgICAgICAgICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCQlpbnQgbWFpbiAoKQorCQl7CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKwkJI2VuZGlmCisJCSAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOwogCi0gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKLSAgICAgICAgICAgICAgCXsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgotICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCi0gICAgICAgICAgICAgIAkgICAgc3dpdGNoIChiaXRzKQotICAgICAgICAgICAgICAJCXsKLSAgICAgICAgICAgICAgCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOwotICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJCX0gYnJlYWs7Ci0gICAgICAgICAgICAgICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCi0gICAgICAgICAgICAgIAkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAl9Ci0gICAgICAgICAgICAgICAgICBleGl0ICgwKTsKLSAgICAgICAgICAgICAgfQorCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJyZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KIEVPRgogCQkgICAgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQX0FSQ0g9YCRkdW1teWAKIAkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9BUkNIPWhwcGEKQEAgLTY0MCw3ICs2OTUsNyBAQAogCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKIAogCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8Ci0JCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorCQlncmVwIC1xIF9fTFA2NF9fCiAJICAgIHRoZW4KIAkJSFBfQVJDSD0iaHBwYTIuMHciCiAJICAgIGVsc2UKQEAgLTcxMSwyMiArNzY2LDIyIEBACiAJZXhpdCA7OwogICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCiAJZWNobyBjMS1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKIAl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKIAllbHNlIGVjaG8gYzItY29udmV4LWJzZAogCWZpCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQogCWVjaG8gYzM0LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCiAJZWNobyBjMzgtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCiAJZWNobyBjNC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQ1JBWSpZLU1QOio6KjoqKQogCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCiAJZXhpdCA7OwpAQCAtNzUwLDE0ICs4MDUsMTQgQEAKIAlleGl0IDs7CiAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCiAJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKLSAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAotICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICBlY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgotICAgICAgICBleGl0IDs7CisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CiAgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQotICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCi0gICAgICAgIGVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCiAJZXhpdCA7OwogICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwgRW1iZWRkZWQvT1M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9SRUxFQVNFfQpAQCAtNzY5LDM0ICs4MjQsMzkgQEAKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICAqOkZyZWVCU0Q6KjoqKQotCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgotCSAgICBwYzk4KQotCQllY2hvIGkzODYtdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJY2FzZSAke1VOQU1FX1BST0NFU1NPUn0gaW4KIAkgICAgYW1kNjQpCiAJCWVjaG8geDg2XzY0LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKIAkgICAgKikKLQkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OwogCWVzYWMKIAlleGl0IDs7CiAgICAgaSo6Q1lHV0lOKjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KIAlleGl0IDs7CisgICAgKjpNSU5HVzY0KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzY0CisJZXhpdCA7OwogICAgICo6TUlOR1cqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKIAlleGl0IDs7CisgICAgKjpNU1lTKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc3lzCisJZXhpdCA7OwogICAgIGkqOndpbmRvd3MzMio6KikKLSAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCiAJZXhpdCA7OwogICAgIGkqOlBXKjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCiAJZXhpdCA7OwotICAgICo6SW50ZXJpeCo6WzM0NTZdKikKLSAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisgICAgKjpJbnRlcml4KjoqKQorCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgogCSAgICB4ODYpCiAJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQogCQlleGl0IDs7Ci0JICAgIEVNNjRUIHwgYXV0aGVudGljYW1kKQorCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKIAkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQogCQlleGl0IDs7CiAJICAgIElBNjQpCkBAIC04MDYsNiArODY2LDkgQEAKICAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwgWzM0NV04NjpXaW5kb3dzX05UOiopCiAJZWNobyBpJHtVTkFNRV9NQUNISU5FfS1wYy1ta3MKIAlleGl0IDs7CisgICAgODY2NDpXaW5kb3dzX05UOiopCisJZWNobyB4ODZfNjQtcGMtbWtzCisJZXhpdCA7OwogICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpXaW5kb3dzX05UKjoqKQogCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KIAkjIEl0IGFsc28gY29uZmxpY3RzIHdpdGggcHJlLTIuMCB2ZXJzaW9ucyBvZiBBVCZUIFVXSU4uIFNob3VsZCB3ZQpAQCAtODI2LDEwMCArODg5LDIxIEBACiAJZXhpdCA7OwogICAgICo6R05VOio6KikKIAkjIHRoZSBHTlUgc3lzdGVtCi0JZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCisJZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLSR7TElCQ31gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncywvLiokLCwnYAogCWV4aXQgOzsKICAgICAqOkdOVS8qOio6KikKIAkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWBlY2hvICR7VU5BTUVfU1lTVEVNfSB8IHNlZCAncyxeW14vXSovLCwnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtJHtMSUJDfQogCWV4aXQgOzsKICAgICBpKjg2Ok1pbml4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKIAlleGl0IDs7Ci0gICAgYXJtKjpMaW51eDoqOiopCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLQkgICAgfCBncmVwIC1xIF9fQVJNX0VBQklfXwotCXRoZW4KLQkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0JZWxzZQotCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCi0JZmkKKyAgICBhYXJjaDY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwotICAgIGF2cjMyKjpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIGNyaXM6TGludXg6KjoqKQotCWVjaG8gY3Jpcy1heGlzLWxpbnV4LWdudQotCWV4aXQgOzsKLSAgICBjcmlzdjMyOkxpbnV4Oio6KikKLQllY2hvIGNyaXN2MzItYXhpcy1saW51eC1nbnUKLQlleGl0IDs7Ci0gICAgZnJ2OkxpbnV4Oio6KikKLSAgICAJZWNobyBmcnYtdW5rbm93bi1saW51eC1nbnUKLQlleGl0IDs7Ci0gICAgaWE2NDpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIG0zMnIqOkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLQlleGl0IDs7Ci0gICAgbTY4KjpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIG1pcHM6TGludXg6KjoqKQotCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLQlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYwotCSN1bmRlZiBDUFUKLQkjdW5kZWYgbWlwcwotCSN1bmRlZiBtaXBzZWwKLQkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzZWwKLQkjZWxzZQotCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19NSVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCi0JQ1BVPW1pcHMKLQkjZWxzZQotCUNQVT0KLQkjZW5kaWYKLQkjZW5kaWYKLUVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15DUFUvewotCQlzOiA6OmcKLQkJcAotCSAgICB9J2AiCi0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLQk7OwotICAgIG1pcHM2NDpMaW51eDoqOiopCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI3VuZGVmIENQVQotCSN1bmRlZiBtaXBzNjQKLQkjdW5kZWYgbWlwczY0ZWwKLQkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzNjRlbAotCSNlbHNlCi0JI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKLQlDUFU9bWlwczY0Ci0JI2Vsc2UKLQlDUFU9Ci0JI2VuZGlmCi0JI2VuZGlmCi1FT0YKLQlldmFsICJgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0JICAgIC9eQ1BVL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgotCXRlc3QgeCIke0NQVX0iICE9IHggJiYgeyBlY2hvICIke0NQVX0tdW5rbm93bi1saW51eC1nbnUiOyBleGl0OyB9Ci0JOzsKLSAgICBvcjMyOkxpbnV4Oio6KikKLQllY2hvIG9yMzItdW5rbm93bi1saW51eC1nbnUKLQlleGl0IDs7Ci0gICAgcHBjOkxpbnV4Oio6KikKLQllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKLQlleGl0IDs7Ci0gICAgcHBjNjQ6TGludXg6KjoqKQotCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251CisgICAgYWFyY2g2NF9iZTpMaW51eDoqOiopCisJVU5BTUVfTUFDSElORT1hYXJjaDY0X2JlCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKICAgICBhbHBoYTpMaW51eDoqOiopCiAJY2FzZSBgc2VkIC1uICcvXmNwdSBtb2RlbC9zL14uKjogXCguKlwpL1wxL3AnIDwgL3Byb2MvY3B1aW5mb2AgaW4KQEAgLTkzMCwxMDMgKzkxNCwxMzUgQEAKIAkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CiAJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKIAkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OwotICAgICAgICBlc2FjCi0Jb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCBsZC5zby4xID4vZGV2L251bGwKLQlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwllc2FjCisJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBsZC5zby4xCisJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0iZ251bGliYzEiIDsgZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGFyYzpMaW51eDoqOiogfCBhcmNlYjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZWxzZQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ31lYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfWVhYmloZgorCSAgICBmaQorCWZpCisJZXhpdCA7OworICAgIGF2cjMyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgZTJrOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGZydjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBoZXhhZ29uOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGkqODY6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGlhNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgbTY4KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBtaXBzOkxpbnV4Oio6KiB8IG1pcHM2NDpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9CisJI3VuZGVmICR7VU5BTUVfTUFDSElORX1lbAorCSNpZiBkZWZpbmVkKF9fTUlQU0VMX18pIHx8IGRlZmluZWQoX19NSVBTRUwpIHx8IGRlZmluZWQoX01JUFNFTCkgfHwgZGVmaW5lZChNSVBTRUwpCisJQ1BVPSR7VU5BTUVfTUFDSElORX1lbAorCSNlbHNlCisJI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9JHtVTkFNRV9NQUNISU5FfQorCSNlbHNlCisJQ1BVPQorCSNlbmRpZgorCSNlbmRpZgorRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15DUFUnYAorCXRlc3QgeCIke0NQVX0iICE9IHggJiYgeyBlY2hvICIke0NQVX0tdW5rbm93bi1saW51eC0ke0xJQkN9IjsgZXhpdDsgfQorCTs7CisgICAgb3BlbnJpc2MqOkxpbnV4Oio6KikKKwllY2hvIG9yMWstdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIG9yMzI6TGludXg6KjoqIHwgb3Ixayo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcGFkcmU6TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKIAkjIExvb2sgZm9yIENQVSBsZXZlbAogCWNhc2UgYGdyZXAgJ15jcHVbXmEtel0qOicgL3Byb2MvY3B1aW5mbyAyPi9kZXYvbnVsbCB8IGN1dCAtZCcgJyAtZjJgIGluCi0JICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtZ251IDs7CisJICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7CisJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7CisJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7CiAJZXNhYwogCWV4aXQgOzsKLSAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQotCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgtZ251CisgICAgcHBjNjQ6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcHBjNjRsZTpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcHBjbGU6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwY2xlLXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKICAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHNoNjQqOkxpbnV4Oio6KikKLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKICAgICBzaCo6TGludXg6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7CiAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHg4Nl82NDpMaW51eDoqOiopCi0JZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwogICAgIHh0ZW5zYSo6TGludXg6KjoqKQotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwotICAgIGkqODY6TGludXg6KjoqKQotCSMgVGhlIEJGRCBsaW5rZXIga25vd3Mgd2hhdCB0aGUgZGVmYXVsdCBvYmplY3QgZmlsZSBmb3JtYXQgaXMsIHNvCi0JIyBmaXJzdCBzZWUgaWYgaXQgd2lsbCB0ZWxsIHVzLiBjZCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJldmVudAotCSMgcHJvYmxlbXMgd2l0aCBvdGhlciBwcm9ncmFtcyBvciBkaXJlY3RvcmllcyBjYWxsZWQgYGxkJyBpbiB0aGUgcGF0aC4KLQkjIFNldCBMQ19BTEw9QyB0byBlbnN1cmUgbGQgb3V0cHV0cyBtZXNzYWdlcyBpbiBFbmdsaXNoLgotCWxkX3N1cHBvcnRlZF90YXJnZXRzPWBjZCAvOyBMQ19BTEw9QyBsZCAtLWhlbHAgMj4mMSBcCi0JCQkgfCBzZWQgLW5lICcvc3VwcG9ydGVkIHRhcmdldHM6LyFkCi0JCQkJICAgIHMvWyAJXVsgCV0qLyAvZwotCQkJCSAgICBzLy4qc3VwcG9ydGVkIHRhcmdldHM6ICovLwotCQkJCSAgICBzLyAuKi8vCi0JCQkJICAgIHAnYAotICAgICAgICBjYXNlICIkbGRfc3VwcG9ydGVkX3RhcmdldHMiIGluCi0JICBlbGYzMi1pMzg2KQotCQlURU5UQVRJVkU9IiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtZ251IgotCQk7OwotCSAgYS5vdXQtaTM4Ni1saW51eCkKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnVhb3V0IgotCQlleGl0IDs7Ci0JICAiIikKLQkJIyBFaXRoZXIgYSBwcmUtQkZEIGEub3V0IGxpbmtlciAobGludXgtZ251b2xkbGQpIG9yCi0JCSMgb25lIHRoYXQgZG9lcyBub3QgZ2l2ZSB1cyB1c2VmdWwgLS1oZWxwLgotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxkIgotCQlleGl0IDs7Ci0JZXNhYwotCSMgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgYS5vdXQgb3IgZWxmCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0JI2lmZGVmIF9fRUxGX18KLQkjIGlmZGVmIF9fR0xJQkNfXwotCSMgIGlmIF9fR0xJQkNfXyA+PSAyCi0JTElCQz1nbnUKLQkjICBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgIGVuZGlmCi0JIyBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgZW5kaWYKLQkjZWxzZQotCSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19QR0kpIHx8IGRlZmluZWQoX19TVU5QUk9fQykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLQlMSUJDPWdudQotCSNlbHNlCi0JTElCQz1nbnVhb3V0Ci0JI2VuZGlmCi0JI2VuZGlmCi0JI2lmZGVmIF9fZGlldGxpYmNfXwotCUxJQkM9ZGlldGxpYmMKLQkjZW5kaWYKLUVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15MSUJDL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgotCXRlc3QgeCIke0xJQkN9IiAhPSB4ICYmIHsKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotCQlleGl0Ci0JfQotCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RFTlRBVElWRX0iOyBleGl0OyB9Ci0JOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCiAJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aApAQCAtMTAzNCwxMSArMTA1MCwxMSBAQAogCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CiAJZXhpdCA7OwogICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCi0gICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KLSAgICAgICAgIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgotICAgICAgICAjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCiAJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgotICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQogCWV4aXQgOzsKICAgICBpKjg2Ok9TLzI6KjoqKQpAQCAtMTA1NSw3ICsxMDcxLDcgQEAKICAgICBpKjg2OnN5bGxhYmxlOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKIAlleGl0IDs7Ci0gICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCiAJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBpKjg2OipET1M6KjoqKQpAQCAtMTA3MCw3ICsxMDg2LDcgQEAKIAlmaQogCWV4aXQgOzsKICAgICBpKjg2Oio6NTpbNjc4XSopCi0gICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgogCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCiAJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwogCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKQEAgLTEwOTgsMTAgKzExMTQsMTMgQEAKIAlleGl0IDs7CiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6Ci0gICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGkzODYuCi0JZWNobyBpMzg2LXBjLW1zZG9zZGpncHAKLSAgICAgICAgZXhpdCA7OworCSMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisJIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CiAgICAgSW50ZWw6TWFjaDozKjoqKQogCWVjaG8gaTM4Ni1wYy1tYWNoMwogCWV4aXQgOzsKQEAgLTExMzYsOCArMTE1NSwxOCBAQAogCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAogCSAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKICAgICAzWzM0XT8/Oio6NC4wOiogfCAzWzM0XT8/LCo6Kjo0LjA6KikKLSAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCi0gICAgICAgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQogCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMTUwLDcgKzExNzksNyBAQAogICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCiAJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQorICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQogCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgU01bQkVdUzpVTklYX1NWOio6KikKQEAgLTExNzAsMTAgKzExOTksMTAgQEAKIAkJZWNobyBuczMyay1zbmktc3lzdgogCWZpCiAJZXhpdCA7OwotICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgotICAgICAgICBlY2hvIGk1ODYtdW5pc3lzLXN5c3Y0Ci0gICAgICAgIGV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKQkjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorCQkJIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorCWVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKwlleGl0IDs7CiAgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCiAJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgogCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQpAQCAtMTE5OSwxMSArMTIyOCwxMSBAQAogCWV4aXQgOzsKICAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKIAlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KLQkgICAgICAgIGVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwkJZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQogCWVsc2UKLQkgICAgICAgIGVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJCWVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CiAJZmkKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwgUFBDIG9ubHkuCiAJZWNobyBwb3dlcnBjLWJlLWJlb3MKIAlleGl0IDs7CkBAIC0xMjE2LDYgKzEyNDUsOSBAQAogICAgIEJlUEM6SGFpa3U6KjoqKQkjIEhhaWt1IHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KIAllY2hvIGk1ODYtcGMtaGFpa3UKIAlleGl0IDs7CisgICAgeDg2XzY0OkhhaWt1Oio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWhhaWt1CisJZXhpdCA7OwogICAgIFNYLTQ6U1VQRVItVVg6KjoqKQogCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNDIsOSArMTI3NCwzMSBAQAogCWV4aXQgOzsKICAgICAqOkRhcndpbjoqOiopCiAJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09SPXVua25vd24KLQljYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KLQkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKLQllc2FjCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gdW5rbm93biA7IHRoZW4KKwkgICAgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMKKwlmaQorCWlmIHRlc3QgYGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9cLi4qLy8nYCAtbGUgMTAgOyB0aGVuCisJICAgIGlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQlpZiAoZWNobyAnI2lmZGVmIF9fTFA2NF9fJzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQl0aGVuCisJCSAgICBjYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KKwkJCWkzODYpIFVOQU1FX1BST0NFU1NPUj14ODZfNjQgOzsKKwkJCXBvd2VycGMpIFVOQU1FX1BST0NFU1NPUj1wb3dlcnBjNjQgOzsKKwkJICAgIGVzYWMKKwkJZmkKKwkgICAgZmkKKwllbGlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gaTM4NiA7IHRoZW4KKwkgICAgIyBBdm9pZCBleGVjdXRpbmcgY2Mgb24gT1MgWCAxMC45LCBhcyBpdCBzaGlwcyB3aXRoIGEgc3R1YgorCSAgICAjIHRoYXQgcHV0cyB1cCBhIGdyYXBoaWNhbCBhbGVydCBwcm9tcHRpbmcgdG8gaW5zdGFsbAorCSAgICAjIGRldmVsb3BlciB0b29scy4gIEFueSBzeXN0ZW0gcnVubmluZyBNYWMgT1MgWCAxMC43IG9yCisJICAgICMgbGF0ZXIgKERhcndpbiAxMSBhbmQgbGF0ZXIpIGlzIHJlcXVpcmVkIHRvIGhhdmUgYSA2NC1iaXQKKwkgICAgIyBwcm9jZXNzb3IuIFRoaXMgaXMgbm90IHRydWUgb2YgdGhlIEFSTSB2ZXJzaW9uIG9mIERhcndpbgorCSAgICAjIHRoYXQgQXBwbGUgdXNlcyBpbiBwb3J0YWJsZSBkZXZpY2VzLgorCSAgICBVTkFNRV9QUk9DRVNTT1I9eDg2XzY0CisJZmkKIAllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQpAQCAtMTI1OCw3ICsxMzEyLDEwIEBACiAgICAgKjpRTlg6Kjo0KikKIAllY2hvIGkzODYtcGMtcW54CiAJZXhpdCA7OwotICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKyAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNFLSo6Tk9OU1RPUF9LRVJORUw6KjoqKQogCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKQEAgLTEzMDMsMTMgKzEzNjAsMTMgQEAKIAllY2hvIHBkcDEwLXVua25vd24taXRzCiAJZXhpdCA7OwogICAgIFNFSToqOio6U0VJVVgpCi0gICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgKjpEcmFnb25GbHk6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKIAlleGl0IDs7CiAgICAgKjoqVk1TOio6KikKLSAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAogCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCiAJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CiAJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyA7IGV4aXQgOzsKQEAgLTEzMjQsMTU5ICsxMzgxLDE0IEBACiAgICAgaSo4NjpyZG9zOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcmRvcwogCWV4aXQgOzsKKyAgICBpKjg2OkFST1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1hcm9zCisJZXhpdCA7OworICAgIHg4Nl82NDpWTWtlcm5lbDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZXN4CisJZXhpdCA7OwogZXNhYwogCi0jZWNobyAnKE5vIHVuYW1lIGNvbW1hbmQgb3IgdW5hbWUgb3V0cHV0IG5vdCByZWNvZ25pemVkLiknIDE+JjIKLSNlY2hvICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIDE+JjIKLQotZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotY2F0ID4kZHVtbXkuYyA8PEVPRgotI2lmZGVmIF9TRVFVRU5UXwotIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSMgaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSNlbmRpZgotbWFpbiAoKQotewotI2lmIGRlZmluZWQgKHNvbnkpCi0jaWYgZGVmaW5lZCAoTUlQU0VCKQotICAvKiBCRkQgd2FudHMgImJzZCIgaW5zdGVhZCBvZiAibmV3c29zIi4gIFBlcmhhcHMgQkZEIHNob3VsZCBiZSBjaGFuZ2VkLAotICAgICBJIGRvbid0IGtub3cuLi4uICAqLwotICBwcmludGYgKCJtaXBzLXNvbnktYnNkXG4iKTsgZXhpdCAoMCk7Ci0jZWxzZQotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotICBwcmludGYgKCJtNjhrLXNvbnktbmV3c29zJXNcbiIsCi0jaWZkZWYgTkVXU09TNAotICAgICAgICAgICI0IgotI2Vsc2UKLQkgICIiCi0jZW5kaWYKLSAgICAgICAgICk7IGV4aXQgKDApOwotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQgKF9fYXJtKSAmJiBkZWZpbmVkIChfX2Fjb3JuKSAmJiBkZWZpbmVkIChfX3VuaXgpCi0gIHByaW50ZiAoImFybS1hY29ybi1yaXNjaXhcbiIpOyBleGl0ICgwKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAoaHAzMDApICYmICFkZWZpbmVkIChocHV4KQotICBwcmludGYgKCJtNjhrLWhwLWJzZFxuIik7IGV4aXQgKDApOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkIChOZVhUKQotI2lmICFkZWZpbmVkIChfX0FSQ0hJVEVDVFVSRV9fKQotI2RlZmluZSBfX0FSQ0hJVEVDVFVSRV9fICJtNjhrIgotI2VuZGlmCi0gIGludCB2ZXJzaW9uOwotICB2ZXJzaW9uPWAoaG9zdGluZm8gfCBzZWQgLW4gJ3MvLipOZVhUIE1hY2ggXChbMC05XSpcKS4qL1wxL3AnKSAyPi9kZXYvbnVsbGA7Ci0gIGlmICh2ZXJzaW9uIDwgNCkKLSAgICBwcmludGYgKCIlcy1uZXh0LW5leHRzdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOwotICBlbHNlCi0gICAgcHJpbnRmICgiJXMtbmV4dC1vcGVuc3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKLSAgZXhpdCAoMCk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQgKE1VTFRJTUFYKSB8fCBkZWZpbmVkIChuMTYpCi0jaWYgZGVmaW5lZCAoVU1BWFYpCi0gIHByaW50ZiAoIm5zMzJrLWVuY29yZS1zeXN2XG4iKTsgZXhpdCAoMCk7Ci0jZWxzZQotI2lmIGRlZmluZWQgKENNVSkKLSAgcHJpbnRmICgibnMzMmstZW5jb3JlLW1hY2hcbiIpOyBleGl0ICgwKTsKLSNlbHNlCi0gIHByaW50ZiAoIm5zMzJrLWVuY29yZS1ic2RcbiIpOyBleGl0ICgwKTsKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQgKF9fMzg2QlNEX18pCi0gIHByaW50ZiAoImkzODYtcGMtYnNkXG4iKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQgKHNlcXVlbnQpCi0jaWYgZGVmaW5lZCAoaTM4NikKLSAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkIChuczMyMDAwKQotICBwcmludGYgKCJuczMyay1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAoX1NFUVVFTlRfKQotICAgIHN0cnVjdCB1dHNuYW1lIHVuOwotCi0gICAgdW5hbWUoJnVuKTsKLQotICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMiIsIDIpID09IDApIHsKLQlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MlxuIik7IGV4aXQgKDApOwotICAgIH0KLSAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjEiLCAyKSA9PSAwKSB7IC8qIFhYWCBpcyBWMSBjb3JyZWN0PyAqLwotCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgxXG4iKTsgZXhpdCAoMCk7Ci0gICAgfQotICAgIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHhcbiIpOyBleGl0ICgwKTsKLQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkICh2YXgpCi0jIGlmICFkZWZpbmVkICh1bHRyaXgpCi0jICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSMgIGlmIGRlZmluZWQgKEJTRCkKLSMgICBpZiBCU0QgPT0gNDMKLSAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zXG4iKTsgZXhpdCAoMCk7Ci0jICAgZWxzZQotIyAgICBpZiBCU0QgPT0gMTk5MDA2Ci0gICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM3Jlbm9cbiIpOyBleGl0ICgwKTsKLSMgICAgZWxzZQotICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKLSMgICAgZW5kaWYKLSMgICBlbmRpZgotIyAgZWxzZQotICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7Ci0jICBlbmRpZgotIyBlbHNlCi0gICAgcHJpbnRmICgidmF4LWRlYy11bHRyaXhcbiIpOyBleGl0ICgwKTsKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAoYWxsaWFudCkgJiYgZGVmaW5lZCAoaTg2MCkKLSAgcHJpbnRmICgiaTg2MC1hbGxpYW50LWJzZFxuIik7IGV4aXQgKDApOwotI2VuZGlmCi0KLSAgZXhpdCAoMSk7Ci19Ci1FT0YKLQotJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKLQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KLQotIyBBcG9sbG9zIHB1dCB0aGUgc3lzdGVtIHR5cGUgaW4gdGhlIGVudmlyb25tZW50LgotCi10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQ7IH0KLQotIyBDb252ZXggdmVyc2lvbnMgdGhhdCBwcmVkYXRlIHVuYW1lIGNhbiB1c2UgZ2V0c3lzaW5mbygxKQotCi1pZiBbIC14IC91c3IvY29udmV4L2dldHN5c2luZm8gXQotdGhlbgotICAgIGNhc2UgYGdldHN5c2luZm8gLWYgY3B1X3R5cGVgIGluCi0gICAgYzEqKQotCWVjaG8gYzEtY29udmV4LWJzZAotCWV4aXQgOzsKLSAgICBjMiopCi0JaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCi0JdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCi0JZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKLQlmaQotCWV4aXQgOzsKLSAgICBjMzQqKQotCWVjaG8gYzM0LWNvbnZleC1ic2QKLQlleGl0IDs7Ci0gICAgYzM4KikKLQllY2hvIGMzOC1jb252ZXgtYnNkCi0JZXhpdCA7OwotICAgIGM0KikKLQllY2hvIGM0LWNvbnZleC1ic2QKLQlleGl0IDs7Ci0gICAgZXNhYwotZmkKLQogY2F0ID4mMiA8PEVPRgogJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQogCmRpZmYgLS1naXQgYS9jb25maWcuc3ViIGIvY29uZmlnLnN1YgppbmRleCBhNjQ5MzUwLi44ZjEyMjljIDEwMDc1NQotLS0gYS9jb25maWcuc3ViCisrKyBiL2NvbmZpZy5zdWIKQEAgLTEsNDQgKzEsNDAgQEAKICMhIC9iaW4vc2gKICMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgotIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IDE5OTItMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA4LTA2LTE2JwordGltZXN0YW1wPScyMDE1LTAzLTA4JwogCi0jIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KLSMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3VnZ2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQotIyBjYW4gaGFuZGxlIHRoYXQgbWFjaGluZS4gIEl0IGRvZXMgbm90IGltcGx5IEFMTCBHTlUgc29mdHdhcmUgY2FuLgotIwotIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQotIyAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAjCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCiAjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCi0jIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdAorIyBwcm9ncmFtLiAgVGhpcyBFeGNlcHRpb24gaXMgYW4gYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIHNlY3Rpb24gNworIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMyAoIkdQTHYzIikuCiAKIAotIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKLSMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgorIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4KICMKICMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCiAjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KICMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCiAjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCiAKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKwogIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKICMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCiAjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCkBAIC03Miw4ICs2OCw3IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAxOTkyLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCkBAIC0xMjAsMTIgKzExNSwxOCBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtbXVzbCogfCBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBuZXRic2QqLWVhYmkqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKICAgICA7OworICBhbmRyb2lkLWxpbnV4KQorICAgIG9zPS1saW51eC1hbmRyb2lkCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AtdW5rbm93bgorICAgIDs7CiAgICopCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy8tW14tXSokLy8nYAogICAgIGlmIFsgJGJhc2ljX21hY2hpbmUgIT0gJDEgXQpAQCAtMTQ4LDEwICsxNDksMTMgQEAKIAktY29udmVyZ2VudCogfCAtbmNyKiB8IC1uZXdzIHwgLTMyKiB8IC0zNjAwKiB8IC0zMTAwKiB8IC1oaXRhY2hpKiB8XAogCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwgLXVsdHJhIHwgLXR0aSogfCBcCiAJLWhhcnJpcyB8IC1kb2xwaGluIHwgLWhpZ2hsZXZlbCB8IC1nb3VsZCB8IC1jYm0gfCAtbnMgfCAtbWFzc2NvbXAgfCBcCi0JLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSkKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5IHwgLW1pY3JvYmxhemUqKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OworCS1ibHVlZ2VuZSopCisJCW9zPS1jbmsKKwkJOzsKIAktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKIAkJb3M9CiAJCWJhc2ljX21hY2hpbmU9JDEKQEAgLTE2NiwxMCArMTcwLDEwIEBACiAJCW9zPS1jaG9ydXNvcwogCQliYXNpY19tYWNoaW5lPSQxCiAJCTs7Ci0gCS1jaG9ydXNyZGIpCi0gCQlvcz0tY2hvcnVzcmRiCisJLWNob3J1c3JkYikKKwkJb3M9LWNob3J1c3JkYgogCQliYXNpY19tYWNoaW5lPSQxCi0gCQk7OworCQk7OwogCS1oaXV4KikKIAkJb3M9LWhpdXh3ZTIKIAkJOzsKQEAgLTIxNCw2ICsyMTgsMTIgQEAKIAktaXNjKikKIAkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAogCQk7OworCS1seW54KjE3OCkKKwkJb3M9LWx5bnhvczE3OAorCQk7OworCS1seW54KjUpCisJCW9zPS1seW54b3M1CisJCTs7CiAJLWx5bngqKQogCQlvcz0tbHlueG9zCiAJCTs7CkBAIC0yMzgsMTkgKzI0OCwyOCBAQAogCSMgU29tZSBhcmUgb21pdHRlZCBoZXJlIGJlY2F1c2UgdGhleSBoYXZlIHNwZWNpYWwgbWVhbmluZ3MgYmVsb3cuCiAJMTc1MGEgfCA1ODAgXAogCXwgYTI5ayBcCisJfCBhYXJjaDY0IHwgYWFyY2g2NF9iZSBcCiAJfCBhbHBoYSB8IGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhZXY2Wzc4XSB8IGFscGhhcGNhNVs2N10gXAogCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCiAJfCBhbTMzXzIuMCBcCi0JfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCisJfCBhcmMgfCBhcmNlYiBcCisJfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyLThdIHwgYXJtdlszLThdW2xiXSB8IGFybXY3W2FybV0gXAorCXwgYXZyIHwgYXZyMzIgXAorCXwgYmUzMiB8IGJlNjQgXAogCXwgYmZpbiBcCi0JfCBjNHggfCBjbGlwcGVyIFwKKwl8IGM0eCB8IGM4MDUxIHwgY2xpcHBlciBcCiAJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAotCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAorCXwgZTJrIHwgZXBpcGhhbnkgXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgfCBmdDMyIFwKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKIAl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAogCXwgaXAyayB8IGlxMjAwMCBcCisJfCBrMW9tIFwKKwl8IGxlMzIgfCBsZTY0IFwKKwl8IGxtMzIgXAogCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCi0JfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWljcm9ibGF6ZWVsIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCiAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKIAl8IG1pcHMxNiBcCiAJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCkBAIC0yNjQsMzUgKzI4Myw1NSBAQAogCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwgXAogCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAogCXwgbWlwc2lzYTMycjIgfCBtaXBzaXNhMzJyMmVsIFwKKwl8IG1pcHNpc2EzMnI2IHwgbWlwc2lzYTMycjZlbCBcCiAJfCBtaXBzaXNhNjQgfCBtaXBzaXNhNjRlbCBcCiAJfCBtaXBzaXNhNjRyMiB8IG1pcHNpc2E2NHIyZWwgXAorCXwgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsIFwKIAl8IG1pcHNpc2E2NHNiMSB8IG1pcHNpc2E2NHNiMWVsIFwKIAl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCisJfCBtaXBzcjU5MDAgfCBtaXBzcjU5MDBlbCBcCiAJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAogCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKLQl8IG5pb3MgfCBuaW9zMiBcCisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKKwl8IG5pb3MgfCBuaW9zMiB8IG5pb3MyZWIgfCBuaW9zMmVsIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAotCXwgb3IzMiBcCisJfCBvcGVuOCB8IG9yMWsgfCBvcjFrbmQgfCBvcjMyIFwKIAl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCi0JfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgfCBwcGNiZSBcCisJfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgXAogCXwgcHlyYW1pZCBcCisJfCByaXNjdjMyIHwgcmlzY3Y2NCBcCisJfCBybDc4IHwgcnggXAogCXwgc2NvcmUgXAotCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKKwl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCiAJfCBzaDY0IHwgc2g2NGxlIFwKIAl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKIAl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCi0JfCBzcHUgfCBzdHJvbmdhcm0gXAotCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKLQl8IHY4NTAgfCB2ODUwZSBcCisJfCBzcHUgXAorCXwgdGFob2UgfCB0aWM0eCB8IHRpYzU0eCB8IHRpYzU1eCB8IHRpYzZ4IHwgdGljODAgfCB0cm9uIFwKKwl8IHViaWNvbTMyIFwKKwl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKKwl8IHZpc2l1bSBcCiAJfCB3ZTMyayBcCi0JfCB4ODYgfCB4YzE2eCB8IHhzY2FsZSB8IHhzY2FsZWVbYmxdIHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKLQl8IHo4aykKKwl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8IHo4MCkKIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCTs7Ci0JbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyKQotCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KKwljNTR4KQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC11bmtub3duCisJCTs7CisJYzU1eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgorCQk7OworCWM2eCkKKwkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCisJCTs7CisJbGVvbnxsZW9uWzMtOV0pCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtJGJhc2ljX21hY2hpbmUKKwkJOzsKKwltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBtNjhoY3MxMnggfCBudnB0eCB8IHBpY29jaGlwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJb3M9LW5vbmUKIAkJOzsKQEAgLTMwMiw2ICszNDEsMjEgQEAKIAkJYmFzaWNfbWFjaGluZT1tdC11bmtub3duCiAJCTs7CiAKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhzY2FsZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCXhnYXRlKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LW5vbmUKKwkJOzsKKwl4c2NhbGVlYikKKwkJYmFzaWNfbWFjaGluZT1hcm1lYi11bmtub3duCisJCTs7CisKKwl4c2NhbGVlbCkKKwkJYmFzaWNfbWFjaGluZT1hcm1lbC11bmtub3duCisJCTs7CisKIAkjIFdlIHVzZSBgcGMnIHJhdGhlciB0aGFuIGB1bmtub3duJwogCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAogCSMgKDIpIHRoZSB3b3JkICJ1bmtub3duIiB0ZW5kcyB0byBjb25mdXNlIGJlZ2lubmluZyB1c2Vycy4KQEAgLTMxNiwyNCArMzcwLDMxIEBACiAJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRoIGNvbXBhbnkgbmFtZS4KIAk1ODAtKiBcCiAJfCBhMjlrLSogXAorCXwgYWFyY2g2NC0qIHwgYWFyY2g2NF9iZS0qIFwKIAl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwgYWxwaGFldjZbNzhdLSogXAogCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhhNjRldjU2LSogfCBhbHBoYTY0ZXY2Wzc4XS0qIFwKLQl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAorCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiB8IGFyY2ViLSogXAogCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCiAJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmUzMi0qIHwgYmU2NC0qIFwKIAl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKLQl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAotCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIFwKKwl8IGM4MDUxLSogfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAogCXwgZDEwdi0qIHwgZDMwdi0qIHwgZGx4LSogXAotCXwgZWx4c2ktKiBcCisJfCBlMmstKiB8IGVseHNpLSogXAogCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAogCXwgaDgzMDAtKiB8IGg4NTAwLSogXAogCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGhleGFnb24tKiBcCiAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAogCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgazFvbS0qIFwKKwl8IGxlMzItKiB8IGxlNjQtKiBcCisJfCBsbTMyLSogXAogCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAogCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKIAl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFnLSogXAorCXwgbWljcm9ibGF6ZS0qIHwgbWljcm9ibGF6ZWVsLSogXAogCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAogCXwgbWlwczE2LSogXAogCXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwKQEAgLTM0NywzNSArNDA4LDQ1IEBACiAJfCBtaXBzNjR2cjU5MDAtKiB8IG1pcHM2NHZyNTkwMGVsLSogXAogCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKIAl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTMycjYtKiB8IG1pcHNpc2EzMnI2ZWwtKiBcCiAJfCBtaXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAogCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRyNi0qIHwgbWlwc2lzYTY0cjZlbC0qIFwKIAl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCiAJfCBtaXBzaXNhNjRzcjcxay0qIHwgbWlwc2lzYTY0c3I3MWtlbC0qIFwKKwl8IG1pcHNyNTkwMC0qIHwgbWlwc3I1OTAwZWwtKiBcCiAJfCBtaXBzdHgzOS0qIHwgbWlwc3R4MzllbC0qIFwKIAl8IG1taXgtKiBcCiAJfCBtdC0qIFwKIAl8IG1zcDQzMC0qIFwKLQl8IG5pb3MtKiB8IG5pb3MyLSogXAorCXwgbmRzMzItKiB8IG5kczMybGUtKiB8IG5kczMyYmUtKiBcCisJfCBuaW9zLSogfCBuaW9zMi0qIHwgbmlvczJlYi0qIHwgbmlvczJlbC0qIFwKIAl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3BlbjgtKiBcCisJfCBvcjFrKi0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCi0JfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIFwKLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCi0JfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCi0JfCB0YWhvZS0qIHwgdGh1bWItKiBcCi0JfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8IHRpbGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKIAl8IHRyb24tKiBcCi0JfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSogfCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCisJfCB2YXgtKiBcCisJfCB2aXNpdW0tKiBcCiAJfCB3ZTMyay0qIFwKLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogfCB4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCiAJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCiAJfCB5bXAtKiBcCi0JfCB6OGstKikKKwl8IHo4ay0qIHwgejgwLSopCiAJCTs7CiAJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNoLgogCXh0ZW5zYSopCkBAIC0zOTcsNyArNDY4LDcgQEAKIAkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAogCQlvcz0tdWRpCiAJCTs7Ci0gICAgCWFiYWN1cykKKwlhYmFjdXMpCiAJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KIAkJOzsKIAlhZG9iZTY4aykKQEAgLTQ0Myw2ICs1MTQsMTMgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbwogCQlvcz0tYnNkCiAJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CisgICAgICAgIGFzbWpzKQorCQliYXNpY19tYWNoaW5lPWFzbWpzLXVua25vd24KKwkJOzsKIAlhdXgpCiAJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQogCQlvcz0tYXV4CkBAIC00NTksMTEgKzUzNywyNCBAQAogCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKIAkJb3M9LWxpbnV4CiAJCTs7CisJYmx1ZWdlbmUqKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1jbmsKKwkJOzsKKwljNTR4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzU1eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM2eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJYzkwKQogCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CiAJCW9zPS11bmljb3MKIAkJOzsKLSAgICAgICAgY2VnY2MpCisJY2VnY2MpCiAJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KIAkJb3M9LWNlZ2NjCiAJCTs7CkBAIC00OTUsNyArNTg2LDcgQEAKIAkJYmFzaWNfbWFjaGluZT1jcmF5bnYtY3JheQogCQlvcz0tdW5pY29zbXAKIAkJOzsKLQljcjE2KQorCWNyMTYgfCBjcjE2LSopCiAJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCiAJCW9zPS1lbGYKIAkJOzsKQEAgLTY1Myw3ICs3NDQsNiBAQAogCWkzNzAtaWJtKiB8IGlibSopCiAJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KIAkJOzsKLSMgSSdtIG5vdCBzdXJlIHdoYXQgIlN5c3YzMiIgbWVhbnMuICBTaG91bGQgdGhpcyBiZSBzeXN2My4yPwogCWkqODZ2MzIpCiAJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAogCQlvcz0tc3lzdjMyCkBAIC02OTIsNiArNzgyLDkgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWlzaQogCQlvcz0tc3lzdgogCQk7OworCWxlb24tKnxsZW9uWzMtOV0tKikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy8tLiovLydgCisJCTs7CiAJbTY4a25vbW11KQogCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgogCQlvcz0tbGludXgKQEAgLTcxMSw4ICs4MDQsMTUgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7CisJbWljcm9ibGF6ZSopCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzY0KQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYworCQlvcz0tbWluZ3c2NAorCQk7OwogCW1pbmd3MzIpCi0JCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKIAkJb3M9LW1pbmd3MzIKIAkJOzsKIAltaW5ndzMyY2UpCkBAIC03NDAsNiArODQwLDEwIEBACiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCiAJCW9zPS1tb3JwaG9zCiAJCTs7CisJbW94aWVib3gpCisJCWJhc2ljX21hY2hpbmU9bW94aWUtdW5rbm93bgorCQlvcz0tbW94aWVib3gKKwkJOzsKIAltc2RvcykKIAkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCiAJCW9zPS1tc2RvcwpAQCAtNzQ3LDEwICs4NTEsMTggQEAKIAltczEtKikKIAkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9tczEtL210LS8nYAogCQk7OworCW1zeXMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbXN5cworCQk7OwogCW12cykKIAkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQogCQlvcz0tbXZzCiAJCTs7CisJbmFjbCkKKwkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KKwkJb3M9LW5hY2wKKwkJOzsKIAluY3IzMDAwKQogCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCiAJCW9zPS1zeXN2NApAQCAtODE1LDYgKzkyNywxMiBAQAogCW5wMSkKIAkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKIAkJOzsKKwluZW8tdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5lby10YW5kZW0KKwkJOzsKKwluc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTg5Nyw5ICsxMDE1LDEwIEBACiAJCTs7CiAJcG93ZXIpCWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCiAJCTs7Ci0JcHBjKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCXBwYyB8IHBwY2JlKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgogCQk7OwotCXBwYy0qKQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwlwcGMtKiB8IHBwY2JlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAogCQk7OwogCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQogCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCkBAIC05MjQsNyArMTA0MywxMSBAQAogCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgogCQlvcz0tcHczMgogCQk7OwotCXJkb3MpCisJcmRvcyB8IHJkb3M2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJb3M9LXJkb3MKKwkJOzsKKwlyZG9zMzIpCiAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYwogCQlvcz0tcmRvcwogCQk7OwpAQCAtOTkzLDYgKzExMTYsOSBAQAogCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cwogCQlvcz0tc3lzdjQKIAkJOzsKKwlzdHJvbmdhcm0tKiB8IHRodW1iLSopCisJCWJhc2ljX21hY2hpbmU9YXJtLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJc3VuMikKIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCiAJCTs7CkBAIC0xMDQ5LDIwICsxMTc1LDggQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7CiAJdGlsZSopCi0JCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgogCQlvcz0tbGludXgtZ251CiAJCTs7CiAJdHgzOSkKQEAgLTExMzIsNiArMTI0Niw5IEBACiAJeHBzIHwgeHBzMTAwKQogCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKIAkJOzsKKwl4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXnhzY2FsZS9hcm0vJ2AKKwkJOzsKIAl5bXApCiAJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKIAkJb3M9LXVuaWNvcwpAQCAtMTE0MCw2ICsxMjU3LDEwIEBACiAJCWJhc2ljX21hY2hpbmU9ejhrLXVua25vd24KIAkJb3M9LXNpbQogCQk7OworCXo4MC0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejgwLXVua25vd24KKwkJb3M9LXNpbQorCQk7OwogCW5vbmUpCiAJCWJhc2ljX21hY2hpbmU9bm9uZS1ub25lCiAJCW9zPS1ub25lCkBAIC0xMTc4LDcgKzEyOTksNyBAQAogCXdlMzJrKQogCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAogCQk7OwotCXNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCiAJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgogCQk7OwogCXNwYXJjIHwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQpAQCAtMTIyNSw5ICsxMzQ2LDEyIEBACiBpZiBbIHgiJG9zIiAhPSB4IiIgXQogdGhlbgogY2FzZSAkb3MgaW4KLSAgICAgICAgIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKLSAgICAgICAgIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKIAktc29sYXJpczEgfCAtc29sYXJpczEuKikKIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAogCQk7OwpAQCAtMTI0OCwyOSArMTM3MiwzMSBAQAogCSMgRWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiBBICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCiAJIyAtc3lzdiogaXMgbm90IGhlcmUgYmVjYXVzZSBpdCBjb21lcyBsYXRlciwgYWZ0ZXIgc3lzdnI0LgogCS1nbnUqIHwgLWJzZCogfCAtbWFjaCogfCAtbWluaXgqIHwgLWdlbml4KiB8IC11bHRyaXgqIHwgLWlyaXgqIFwKLQkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAotCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtc29sYXJpcyogfCAtc3ltKiBcCisJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogfCAtcGxhbjkqIFwKIAkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAtdW5pY29zKiB8IC1hb2YqIFwKLQkgICAgICB8IC1hb3MqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIHwgLWNsb3VkYWJpKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKIAkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCi0JICAgICAgfCAtb3BlbmJzZCogfCAtc29saWRic2QqIFwKKwkgICAgICB8IC1iaXRyaWcqIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCiAJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCogfCAtbHlueG9zKiBcCiAJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFvdXQqIHwgLWVsZiogfCAtb2FiaSogXAogCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKIAkgICAgICB8IC11ZGkqIHwgLWVhYmkqIHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKIAkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAotCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCi0JICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtbXN5cyogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1taW5ndzY0KiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKKwkgICAgICB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LW11c2wqIHwgLWxpbnV4LXVjbGliYyogXAorCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIHwgLW1veGllYm94KiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKIAkgICAgICB8IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKIAkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCiAJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCiAJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKLQkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKikKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyogfCAtdGlydG9zKikKIAkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCiAJCTs7CiAJLXFueCopCkBAIC0xMzA5LDcgKzE0MzUsNyBAQAogCS1vcGVuZWQqKQogCQlvcz0tb3BlbmVkaXRpb24KIAkJOzsKLSAgICAgICAgLW9zNDAwKikKKwktb3M0MDAqKQogCQlvcz0tb3M0MDAKIAkJOzsKIAktd2luY2UqKQpAQCAtMTM1OCw3ICsxNDg0LDcgQEAKIAktc2luaXgqKQogCQlvcz0tc3lzdjQKIAkJOzsKLSAgICAgICAgLXRwZiopCisJLXRwZiopCiAJCW9zPS10cGYKIAkJOzsKIAktdHJpdG9uKikKQEAgLTEzOTQsMTUgKzE1MjAsMTQgQEAKIAktYXJvcyopCiAJCW9zPS1hcm9zCiAJCTs7Ci0JLWthb3MqKQotCQlvcz0ta2FvcwotCQk7OwogCS16dm1vZSkKIAkJb3M9LXp2bW9lCiAJCTs7CiAJLWRpY29zKikKIAkJb3M9LWRpY29zCiAJCTs7CisJLW5hY2wqKQorCQk7OwogCS1ub25lKQogCQk7OwogCSopCkBAIC0xNDI1LDEwICsxNTUwLDEwIEBACiAjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgogCiBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gICAgICAgIHNjb3JlLSopCisJc2NvcmUtKikKIAkJb3M9LWVsZgogCQk7OwotICAgICAgICBzcHUtKikKKwlzcHUtKikKIAkJb3M9LWVsZgogCQk7OwogCSotYWNvcm4pCkBAIC0xNDQwLDggKzE1NjUsMjMgQEAKIAlhcm0qLXNlbWkpCiAJCW9zPS1hb3V0CiAJCTs7Ci0gICAgICAgIGM0eC0qIHwgdGljNHgtKikKLSAgICAgICAgCW9zPS1jb2ZmCisJYzR4LSogfCB0aWM0eC0qKQorCQlvcz0tY29mZgorCQk7OworCWM4MDUxLSopCisJCW9zPS1lbGYKKwkJOzsKKwloZXhhZ29uLSopCisJCW9zPS1lbGYKKwkJOzsKKwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgogCQk7OwogCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KIAlwZHAxMC0qKQpAQCAtMTQ2MSwxNCArMTYwMSwxMSBAQAogCQk7OwogCW02ODAwMC1zdW4pCiAJCW9zPS1zdW5vczMKLQkJIyBUaGlzIGFsc28gZXhpc3RzIGluIHRoZSBjb25maWd1cmUgcHJvZ3JhbSwgYnV0IHdhcyBub3QgdGhlCi0JCSMgZGVmYXVsdC4KLQkJIyBvcz0tc3Vub3M0CiAJCTs7CiAJbTY4Ki1jaXNjbykKIAkJb3M9LWFvdXQKIAkJOzsKLSAgICAgICAgbWVwLSopCisJbWVwLSopCiAJCW9zPS1lbGYKIAkJOzsKIAltaXBzKi1jaXNjbykKQEAgLTE0OTUsNyArMTYzMiw3IEBACiAJKi1pYm0pCiAJCW9zPS1haXgKIAkJOzsKLSAgICAJKi1rbnV0aCkKKwkqLWtudXRoKQogCQlvcz0tbW1peHdhcmUKIAkJOzsKIAkqLXdlYykKQEAgLTE2MDAsNyArMTczNyw3IEBACiAJCQktc3Vub3MqKQogCQkJCXZlbmRvcj1zdW4KIAkJCQk7OwotCQkJLWFpeCopCisJCQktY25rKnwtYWl4KikKIAkJCQl2ZW5kb3I9aWJtCiAJCQkJOzsKIAkJCS1iZW9zKikKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxMzQyMzg3Li4yNWUzNTFiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDcgKzEsNyBAQAogIyEgL2Jpbi9zaAotIyBGcm9tIGNvbmZpZ3VyZS5pbiBSZXZpc2lvbjogMS40NTQgLgorIyBGcm9tIGNvbmZpZ3VyZS5pbiBSZXZpc2lvbjogMS42MTggLgogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgQXV0b2NvbmYgMi41Mi4yMDA4MDMyNS4KKyMgR2VuZXJhdGVkIGJ5IEF1dG9jb25mIDIuNTIuMjAxNDEyMDQuCiAjCiAjIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxCiAjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTcxLDE1ICsxNzEsMTYgQEAKIGJpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJwogc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKIGxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCi1kYXRhZGlyPScke3ByZWZpeH0vc2hhcmUnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCiBzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwogc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCiBsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJwogbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCiBpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKIG9sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScKLWluZm9kaXI9JyR7cHJlZml4fS9pbmZvJwotbWFuZGlyPScke3ByZWZpeH0vbWFuJworaW5mb2Rpcj0nJHtkYXRhcm9vdGRpcn0vaW5mbycKK21hbmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJwogCiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0KQEAgLTIzMCw2ICsyMzEsMTMgQEAKICAgfCAtLWRhPSopCiAgICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7CiAKKyAgLWRhdGFyb290ZGlyIHwgLS1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaSB8IC0tZGF0YXJvb3RkIHwgLS1kYXRhcm9vdCBcCisgIHwgLS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQorICAgIGFjX3ByZXY9ZGF0YXJvb3RkaXIgOzsKKyAgLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGk9KiB8IC0tZGF0YXJvb3RkPSogXAorICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0tZGF0YXI9KikKKyAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJnIDs7CisKICAgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0qKQogICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgpAQCAtNTA1LDcgKzUxMyw3IEBACiBkb25lCiAKICMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIHBhdGhzLgotZm9yIGFjX3ZhciBpbiBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBcCitmb3IgYWNfdmFyIGluIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIFwKICAgICAgICAgICAgICAgbG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFuZGlyCiBkbwogICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFjX3ZhcmAKQEAgLTY1NCwxNSArNjYyLDE2IEBACiAgIC0tYmluZGlyPURJUiAgICAgICAgICAgIHVzZXIgZXhlY3V0YWJsZXMgW0VQUkVGSVgvYmluXQogICAtLXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgvc2Jpbl0KICAgLS1saWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJWC9saWJleGVjXQotICAtLWRhdGFkaXI9RElSICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9zaGFyZV0KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvc2hhcmVdCisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCiAgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQogICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQogICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCiAgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCiAgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KICAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KLSAgLS1pbmZvZGlyPURJUiAgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtQUkVGSVgvaW5mb10KLSAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW1BSRUZJWC9tYW5dCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL21hbl0KIEVPRgogCiAgIGNhdCA8PFxFT0YKQEAgLTY5NCwxMSArNzAzLDE4IEBACiAgIC0td2l0aC1yZWwtdmVyc2lvbj1YWFggIG92ZXJyaWRlIGRlcml2ZWQgcmVsZWFzZSB2ZXJzaW9uCiAgIC0td2l0aC1hYmktdmVyc2lvbj1YWFggIG92ZXJyaWRlIGRlcml2ZWQgQUJJIHZlcnNpb24KICAgLS13aXRoLXN5c3RlbS10eXBlPVhYWCAgdGVzdDogb3ZlcnJpZGUgZGVyaXZlZCBob3N0IHN5c3RlbS10eXBlCisgIC0td2l0aG91dC1hZGEgICAgICAgICAgIHN1cHByZXNzIGNoZWNrIGZvciBBZGE5NSwgZG9uJ3QgYnVpbGQgZGVtbwogICAtLXdpdGhvdXQtY3h4ICAgICAgICAgICBkbyBub3QgYWRqdXN0IG5jdXJzZXMgYm9vbCB0byBtYXRjaCBDKysKICAgLS13aXRob3V0LWN4eC1iaW5kaW5nICAgZG8gbm90IGJ1aWxkIEMrKyBiaW5kaW5nIGFuZCBkZW1vCi0gIC0td2l0aG91dC1hZGEgICAgICAgICAgIHN1cHByZXNzIGNoZWNrIGZvciBBZGE5NSwgZG9uJ3QgYnVpbGQgZGVtbwotICAtLXdpdGhvdXQtcHJvZ3MgICAgICAgICBzdXBwcmVzcyBidWlsZCB3aXRoIHByb2dyYW1zIChlLmcuLCB0aWMpCisgIC0tZGlzYWJsZS1kYi1pbnN0YWxsICAgIHN1cHByZXNzIGluc3RhbGwgb2YgdGVybWluYWwgZGF0YWJhc2UKKyAgLS13aXRob3V0LW1hbnBhZ2VzICAgICAgc3VwcHJlc3MgaW5zdGFsbCBvZiBtYW5wYWdlcworICAtLXdpdGhvdXQtcHJvZ3MgICAgICAgICBzdXBwcmVzcyBidWlsZC9pbnN0YWxsIHdpdGggcHJvZ3JhbXMgKGUuZy4sIHRpYykKKyAgLS13aXRob3V0LXRlc3RzICAgICAgICAgc3VwcHJlc3MgYnVpbGQvaW5zdGFsbCB3aXRoIHRlc3QtcHJvZ3JhbXMKICAgLS13aXRob3V0LWN1cnNlcy1oICAgICAgaW5zdGFsbCBjdXJzZXMuaCBhcyBuY3Vyc2VzLmggb25seQorICAtLXdpdGgtcGtnLWNvbmZpZ3s9cGF0aH0gZW5hYmxlL2Rpc2FibGUgdXNlIG9mIHBrZy1jb25maWcKKyAgLS13aXRoLXBrZy1jb25maWctbGliZGlyPVhYWCB1c2UgZ2l2ZW4gZGlyZWN0b3J5IGZvciBpbnN0YWxsaW5nIHBjLWZpbGVzCisgIC0tZW5hYmxlLXBjLWZpbGVzICAgICAgIGdlbmVyYXRlIGFuZCBpbnN0YWxsIC5wYyBmaWxlcyBmb3IgcGtnLWNvbmZpZworICAtLXdpdGgtcGMtc3VmZml4ICAgICAgICBzdWZmaXhlcyBwYy1maWxlcwogICAtLWVuYWJsZS1taXhlZC1jYXNlICAgICB0aWMgc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lcwogICAtLXdpdGgtaW5zdGFsbC1wcmVmaXggICBwcmVmaXhlcyBhY3R1YWwgaW5zdGFsbC1sb2NhdGlvbiAoJERFU1RESVIpCiBCdWlsZC1Ub29scyBOZWVkZWQgdG8gQ29tcGlsZSBUZW1wb3JhcnkgQXBwbGljYXRpb25zIGZvciBDcm9zcy1jb21waWxpbmc6CkBAIC03MDksMTEgKzcyNSwxNCBAQAogICAtLXdpdGgtYnVpbGQtbGRmbGFncz1YWFggdGhlIGJ1aWxkIGxpbmtlci1mbGFncyAoJEJVSUxEX0xERkxBR1MpCiAgIC0td2l0aC1idWlsZC1saWJzPVhYWCAgIHRoZSBidWlsZCBsaWJyYXJpZXMgKCR7QlVJTERfTElCU30pCiBPcHRpb25zIHRvIFNwZWNpZnkgdGhlIExpYnJhcmllcyBCdWlsdC9Vc2VkOgorICAtLWRpc2FibGUtbGlidG9vbC12ZXJzaW9uICBlbmFibGUgdG8gdXNlIGxpYnRvb2wncyBpbmNvbXBhdGlibGUgbmFtaW5nIHNjaGVtZQogICAtLXdpdGgtbGlidG9vbCAgICAgICAgICBnZW5lcmF0ZSBsaWJyYXJpZXMgd2l0aCBsaWJ0b29sCiAgIC0td2l0aC1zaGFyZWQgICAgICAgICAgIGdlbmVyYXRlIHNoYXJlZC1saWJyYXJpZXMKICAgLS13aXRoLW5vcm1hbCAgICAgICAgICAgZ2VuZXJhdGUgbm9ybWFsLWxpYnJhcmllcyAoZGVmYXVsdCkKICAgLS13aXRoLWRlYnVnICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWctbGlicmFyaWVzIChkZWZhdWx0KQogICAtLXdpdGgtcHJvZmlsZSAgICAgICAgICBnZW5lcmF0ZSBwcm9maWxlLWxpYnJhcmllcworICAtLXdpdGgtY3h4LXNoYXJlZCAgICAgICBnZW5lcmF0ZSBDKysgc2hhcmVkLWxpYnJhcmllcworICAtLXdpdGgtbGliLXByZWZpeCAgICAgICBvdmVycmlkZSBsaWJyYXJ5LXByZWZpeAogICAtLXdpdGgtdGVybWxpYiAgICAgICAgICBnZW5lcmF0ZSBzZXBhcmF0ZSB0ZXJtaW5mbyBsaWJyYXJ5CiAgIC0td2l0aC10aWNsaWIgICAgICAgICAgIGdlbmVyYXRlIHNlcGFyYXRlIHRpYyBsaWJyYXJ5CiAgIC0td2l0aC1ncG0gICAgICAgICAgICAgIHVzZSBBbGVzc2FuZHJvIFJ1YmluaSdzIEdQTSBsaWJyYXJ5CkBAIC03MjIsMTMgKzc0MSwyMCBAQAogICAtLWVuYWJsZS1ycGF0aCAgICAgICAgICB1c2UgcnBhdGggb3B0aW9uIHdoZW4gZ2VuZXJhdGluZyBzaGFyZWQgbGlicmFyaWVzCiAgIC0tZGlzYWJsZS1yZWxpbmsgICAgICAgIHJlbGluayBzaGFyZWQgbGlicmFyaWVzIGR1cmluZyBpbnN0YWxsCiAgIC0td2l0aC1zaGxpYi12ZXJzaW9uPVggIFNwZWNpZnkgcmVsIG9yIGFiaSB2ZXJzaW9uIGZvciBzaGFyZWQgbGlicworICAtLXdpdGgtbGlidG9vbC1vcHRzPVhYWCBzcGVjaWZ5IGFkZGl0aW9uYWwgbGlidG9vbCBvcHRpb25zCisgIC0td2l0aC1leHBvcnQtc3ltcz1YWFggIGxpbWl0IGV4cG9ydGVkIHN5bWJvbHMgdXNpbmcgbGlidG9vbAorICAtLXdpdGgtdmVyc2lvbmVkLXN5bXM9WCBtYXJrdXAgdmVyc2lvbmVkIHN5bWJvbHMgdXNpbmcgbGQKKyAgLS1kaXNhYmxlLWxpYi1zdWZmaXhlcyAgZGlzYWJsZSBsaWJyYXJ5IHN1ZmZpeGVzCisgIC0tZGlzYWJsZS1ycGF0aC1oYWNrICAgIGRvbid0IGFkZCBycGF0aCBvcHRpb25zIGZvciBhZGRpdGlvbmFsIGxpYnJhcmllcwogRmluZS1UdW5pbmcgWW91ciBDb25maWd1cmF0aW9uOgotICAtLWRpc2FibGUtb3ZlcndyaXRlICAgICBsZWF2ZSBvdXQgdGhlIGxpbmsgdG8gLWxjdXJzZXMKKyAgLS13aXRoLWV4dHJhLXN1ZmZpeD1YICAgYXBwZW5kIGV4dHJhIHN1ZmZpeCB0byBoZWFkZXIvbGlicmFyeSBwYXRocworICAtLWRpc2FibGUtb3ZlcndyaXRlICAgICBwdXQgaGVhZGVycyBpbiBzdWJkaXIsIG9taXQgbGluayB0byAtbGN1cnNlcwogICAtLWRpc2FibGUtZGF0YWJhc2UgICAgICBkbyBub3QgdXNlIHRlcm1pbmZvLCBvbmx5IGZhbGxiYWNrcy90ZXJtY2FwCiAgIC0td2l0aC1kYXRhYmFzZT1YWFggICAgIHNwZWNpZnkgdGVybWluZm8gc291cmNlIHRvIGluc3RhbGwKICAgLS13aXRoLWhhc2hlZC1kYiAgICAgICAgc3BlY2lmeSBoYXNoZWQtZGF0YWJhc2UgbGlicmFyeQogICAtLXdpdGgtZmFsbGJhY2tzPVhYWCAgICBzcGVjaWZ5IGxpc3Qgb2YgZmFsbGJhY2sgdGVybWluYWwgZGVzY3JpcHRpb25zCiAgIC0td2l0aG91dC14dGVybS1uZXcgICAgIHNwZWNpZnkgaWYgeHRlcm0gdGVybWluZm8gc2hvdWxkIGJlIG9sZCB2ZXJzaW9uCisgIC0td2l0aC14dGVybS1rYnM9WFhYICAgIHNwZWNpZnkgaWYgeHRlcm0gYmFja3NwYWNlIHNlbmRzIEJTIG9yIERFTAogICAtLXdpdGgtdGVybWluZm8tZGlycz1YWFggc3BlY2lmeSBsaXN0IG9mIHRlcm1pbmZvIGRpcmVjdG9yaWVzIChkZWZhdWx0OiBEQVRBRElSL3Rlcm1pbmZvKQogICAtLXdpdGgtZGVmYXVsdC10ZXJtaW5mby1kaXI9RElSIGRlZmF1bHQgdGVybWluZm8gZGlyZWN0b3J5IChkZWZhdWx0OiBEQVRBRElSL3Rlcm1pbmZvKQogICAtLWRpc2FibGUtYmlnLWNvcmUgICAgICBhc3N1bWUgbWFjaGluZSBoYXMgbGl0dGxlIG1lbW9yeQpAQCAtNzUyLDYgKzc3OCw4IEBACiAgIC0td2l0aC1jaHR5cGU9VFlQRSAgICAgIG92ZXJyaWRlIHR5cGUgb2YgY2h0eXBlCiAgIC0td2l0aC1vc3BlZWQ9VFlQRSAgICAgIG92ZXJyaWRlIHR5cGUgb2Ygb3NwZWVkIHZhcmlhYmxlCiAgIC0td2l0aC1tbWFzay10PVRZUEUgICAgIG92ZXJyaWRlIHR5cGUgb2YgbW1hc2tfdAorICAtLXdpdGgtY2NoYXJ3LW1heD1YWFggICBvdmVycmlkZSBzaXplIENDSEFSV19NQVgKKyAgLS13aXRoLXRwYXJtLWFyZz1UWVBFICAgb3ZlcnJpZGUgcGFyYW1ldGVyIHR5cGUgb2YgdHBhcm0KICAgLS13aXRoLXJjcy1pZHMgICAgICAgICAgY29tcGlsZS1pbiBSQ1MgaWRlbnRpZmllcnMKIE9wdGlvbnMgdG8gU3BlY2lmeSBIb3cgTWFucGFnZXMgYXJlIEluc3RhbGxlZDoKICAgLS13aXRoLW1hbnBhZ2UtZm9ybWF0ICAgc3BlY2lmeSBtYW5wYWdlLWZvcm1hdDogZ3ppcC9jb21wcmVzcy9CU0RJL25vcm1hbCBhbmQKQEAgLTc2Miw5ICs3OTAsMTIgQEAKICAgLS13aXRoLW1hbnBhZ2UtdGJsICAgICAgc3BlY2lmeSBtYW5wYWdlIHByb2Nlc3Npbmcgd2l0aCB0YmwKIEV4dGVuc2lvbnM6CiAgIC0tZGlzYWJsZS1leHQtZnVuY3MgICAgIGRpc2FibGUgZnVuY3Rpb24tZXh0ZW5zaW9ucworICAtLWVuYWJsZS1zcC1mdW5jcyAgICAgICBlbmFibGUgU0NSRUVOLWV4dGVuc2lvbnMKKyAgLS1lbmFibGUtdGVybS1kcml2ZXIgICAgZW5hYmxlIHRlcm1pbmFsLWRyaXZlcgogICAtLWVuYWJsZS1jb25zdCAgICAgICAgICBjb21waWxlIHdpdGggZXh0cmEvbm9uLXN0YW5kYXJkIGNvbnN0CiAgIC0tZW5hYmxlLWV4dC1jb2xvcnMgICAgIGNvbXBpbGUgZm9yIDI1Ni1jb2xvciBzdXBwb3J0CiAgIC0tZW5hYmxlLWV4dC1tb3VzZSAgICAgIGNvbXBpbGUgZm9yIGV4dGVuZGVkIG1vdXNlLWVuY29kaW5nCisgIC0tZW5hYmxlLWV4dC1wdXR3aW4gICAgIGNvbXBpbGUgd2l0aCBleHRlbmRlZCBwdXR3aW4vc2NyZWVuZHVtcAogICAtLWVuYWJsZS1uby1wYWRkaW5nICAgICBjb21waWxlIHdpdGggJE5DVVJTRVNfTk9fUEFERElORyBjb2RlCiAgIC0tZW5hYmxlLXNpZ25lZC1jaGFyICAgIGNvbXBpbGUgdXNpbmcgc2lnbmVkIEJvb2xlYW4ncyBpbiB0ZXJtLmgKICAgLS1lbmFibGUtc2lnd2luY2ggICAgICAgY29tcGlsZSB3aXRoIFNJR1dJTkNIIGhhbmRsZXIKQEAgLTc3NiwxNiArODA3LDIwIEBACiBFeHBlcmltZW50YWwgQ29kZToKICAgLS1kaXNhYmxlLWFzc3VtZWQtY29sb3IgZG8gbm90IGFzc3VtZSBhbnl0aGluZyBhYm91dCBkZWZhdWx0LWNvbG9ycwogICAtLWRpc2FibGUtaGFzaG1hcCAgICAgICBjb21waWxlIHdpdGhvdXQgaGFzaG1hcCBzY3JvbGxpbmctb3B0aW1pemF0aW9uCi0gIC0tZW5hYmxlLWNvbG9yZmdiZyAgICAgIGNvbXBpbGUgd2l0aCAkQ09MT1JGR0JHIGNvZGUKKyAgLS1lbmFibGUtY29sb3JmZ2JnICAgICAgY29tcGlsZS1pbiBleHBlcmltZW50YWwgJENPTE9SRkdCRyBjb2RlCisgIC0tZW5hYmxlLWludGVyb3AgICAgICAgIGNvbXBpbGUtaW4gaW50ZXJvcCBiaW5kaW5ncwogICAtLXdpdGgtcHRocmVhZCAgICAgICAgICB1c2UgUE9TSVggdGhyZWFkIGxpYnJhcnkKKyAgLS1lbmFibGUtcHRocmVhZHMtZWludHIgZW5hYmxlIEVJTlRSIGluIHdnZXRjaCB3aXRoIHB0aHJlYWRzCiAgIC0tZW5hYmxlLXdlYWstc3ltYm9scyAgIGVuYWJsZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzCi0gIC0tZW5hYmxlLXJlZW50cmFudCAgICAgIGNvbXBpbGUgd2l0aCBleHBlcmltZW50YWwgcmVlbnRyYW50IGNvZGUKKyAgLS1lbmFibGUtcmVlbnRyYW50ICAgICAgY29tcGlsZSB3aXRoIHJlZW50cmFudCBjb2RlCisgIC0td2l0aC13cmFwLXByZWZpeD1YWFggIG92ZXJyaWRlIHByZWZpeCB1c2VkIGZvciBwdWJsaWMgdmFyaWFibGVzCiAgIC0tZW5hYmxlLXNhZmUtc3ByaW50ZiAgIGNvbXBpbGUgd2l0aCBleHBlcmltZW50YWwgc2FmZS1zcHJpbnRmIGNvZGUKICAgLS1kaXNhYmxlLXNjcm9sbC1oaW50cyAgY29tcGlsZSB3aXRob3V0IHNjcm9sbC1oaW50cyBjb2RlCi0gIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgIGNvbXBpbGUgd2l0aCBleHBlcmltZW50YWwgd2dldGNoLWV2ZW50cyBjb2RlCisgIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgIGNvbXBpbGUgd2l0aCB3Z2V0Y2gtZXZlbnRzIGNvZGUKIFRlc3RpbmcvZGV2ZWxvcG1lbnQgT3B0aW9uczoKLSAgLS1lbmFibGUtZWNobyAgICAgICAgICAgYnVpbGQ6IGRpc3BsYXkgImNvbXBpbGluZyIgY29tbWFuZHMgKGRlZmF1bHQpCisgIC0tZGlzYWJsZS1lY2hvICAgICAgICAgIGRvIG5vdCBkaXNwbGF5ICJjb21waWxpbmciIGNvbW1hbmRzCiAgIC0tZW5hYmxlLXdhcm5pbmdzICAgICAgIGJ1aWxkOiB0dXJuIG9uIEdDQyBjb21waWxlciB3YXJuaW5ncworICAtLWVuYWJsZS1zdHJpbmctaGFja3MgICB3b3JrIGFyb3VuZCBib2d1cyBjb21waWxlci9sb2FkZXIgd2FybmluZ3MKICAgLS1lbmFibGUtYXNzZXJ0aW9ucyAgICAgdGVzdDogdHVybiBvbiBnZW5lcmF0aW9uIG9mIGFzc2VydGlvbiBjb2RlCiAgIC0td2l0aC1kbWFsbG9jICAgICAgICAgIHRlc3Q6IHVzZSBHcmF5IFdhdHNvbidzIGRtYWxsb2MgbGlicmFyeQogICAtLXdpdGgtZGJtYWxsb2MgICAgICAgICB0ZXN0OiB1c2UgQ29ub3IgQ2FoaWxsJ3MgZGJtYWxsb2MgbGlicmFyeQpAQCAtNzk0LDEwICs4MjksMTIgQEAKICAgLS1lbmFibGUtZXhwYW5kZWQgICAgICAgdGVzdDogZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciBjZXJ0YWluIG1hY3JvcwogICAtLWRpc2FibGUtbWFjcm9zICAgICAgICB0ZXN0OiB1c2UgZnVuY3Rpb25zIHJhdGhlciB0aGFuIG1hY3JvcwogICAtLXdpdGgtdHJhY2UgICAgICAgICAgICB0ZXN0OiBhZGQgdHJhY2UoKSBmdW5jdGlvbiB0byBhbGwgbW9kZWxzIG9mIG5jdXJzZXMKKyAgLS1kaXNhYmxlLWduYXQtcHJvamVjdHMgdGVzdDogZGlzYWJsZSBHTkFUIHByb2plY3RzIGV2ZW4gaWYgdXNhYmxlCiBBZGE5NSBCaW5kaW5nIE9wdGlvbnM6CiAgIC0td2l0aC1hZGEtY29tcGlsZXI9Q01EIHNwZWNpZnkgQWRhOTUgY29tcGlsZXIgY29tbWFuZCAoZGVmYXVsdCBnbmF0bWFrZSkKLSAgLS13aXRoLWFkYS1pbmNsdWRlPURJUiAgQWRhIGluY2x1ZGVzIGFyZSBpbiBESVIgKGRlZmF1bHQ6IFBSRUZJWC9saWIvYWRhL2FkYWluY2x1ZGUpCisgIC0td2l0aC1hZGEtaW5jbHVkZT1ESVIgIEFkYSBpbmNsdWRlcyBhcmUgaW4gRElSIChkZWZhdWx0OiBQUkVGSVgvc2hhcmUvYWRhL2FkYWluY2x1ZGUpCiAgIC0td2l0aC1hZGEtb2JqZWN0cz1ESVIgIEFkYSBvYmplY3RzIGFyZSBpbiBESVIgKGRlZmF1bHQ6IFBSRUZJWC9saWIvYWRhL2FkYWxpYikKKyAgLS13aXRoLWFkYS1zaGFyZWRsaWI9c29uYW1lIGJ1aWxkIHNoYXJlZC1saWJyYXJ5IChyZXF1aXJlcyBHTkFUIHByb2plY3RzKQogCiBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCkBAIC04NzAsNyArOTA3LDcgQEAKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKIEl0IHdhcyBjcmVhdGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTIuMjAwODAzMjUuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Mi4yMDE0MTIwNC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgICQgJDAgJEAKIApAQCAtOTk0LDcgKzEwMzEsNyBAQAogZmkKIGZvciBhY19zaXRlX2ZpbGUgaW4gJENPTkZJR19TSVRFOyBkbwogICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgotICAgIHsgZWNobyAiJGFzX21lOjk5NzogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjUKKyAgICB7IGVjaG8gIiRhc19tZToxMDM0OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQogZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CiAgICAgY2F0ICIkYWNfc2l0ZV9maWxlIiA+JjUKICAgICAuICIkYWNfc2l0ZV9maWxlIgpAQCAtMTAwNSw3ICsxMDQyLDcgQEAKICAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwKICAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuCiAgIGlmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgotICAgIHsgZWNobyAiJGFzX21lOjEwMDg6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorICAgIHsgZWNobyAiJGFzX21lOjEwNDU6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQogZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQogICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4KICAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAkY2FjaGVfZmlsZTs7CkBAIC0xMDEzLDcgKzEwNTAsNyBAQAogICAgIGVzYWMKICAgZmkKIGVsc2UKLSAgeyBlY2hvICIkYXNfbWU6MTAxNjogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQorICB7IGVjaG8gIiRhc19tZToxMDUzOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQogICA+JGNhY2hlX2ZpbGUKIGZpCkBAIC0xMDI5LDIxICsxMDY2LDIxIEBACiAgIGV2YWwgYWNfbmV3X3ZhbD0iXCRhY19lbnZfJHthY192YXJ9X3ZhbHVlIgogICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluCiAgICAgc2V0LCkKLSAgICAgIHsgZWNobyAiJGFzX21lOjEwMzI6IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1CisgICAgICB7IGVjaG8gIiRhc19tZToxMDY5OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CiAgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OwogICAgICxzZXQpCi0gICAgICB7IGVjaG8gIiRhc19tZToxMDM2OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKKyAgICAgIHsgZWNobyAiJGFzX21lOjEwNzM6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQogICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKICAgICAsKTs7CiAgICAgKikKICAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4KLSAgICAgICAgeyBlY2hvICIkYXNfbWU6MTA0MjogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQorICAgICAgICB7IGVjaG8gIiRhc19tZToxMDc5OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQotICAgICAgICB7IGVjaG8gIiRhc19tZToxMDQ0OiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjUKKyAgICAgICAgeyBlY2hvICIkYXNfbWU6MTA4MTogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiY1CiBlY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgJGFjX29sZF92YWwiID4mMjt9Ci0gICAgICAgIHsgZWNobyAiJGFzX21lOjEwNDY6ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mNQorICAgICAgICB7IGVjaG8gIiRhc19tZToxMDgzOiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjUKIGVjaG8gIiRhc19tZTogICBjdXJyZW50IHZhbHVlOiAkYWNfbmV3X3ZhbCIgPiYyO30KICAgICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPToKICAgICAgIGZpOzsKQEAgLTEwNjIsOSArMTA5OSw5IEBACiAgIGZpCiBkb25lCiBpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCi0gIHsgZWNobyAiJGFzX21lOjEwNjU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQorICB7IGVjaG8gIiRhc19tZToxMTAyOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLSAgeyB7IGVjaG8gIiRhc19tZToxMDY3OiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTEwNDogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKQEAgLTEwNzYsMTkgKzExMTMsMTkgQEAKIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKIGFjX21haW5fcmV0dXJuPXJldHVybgogCi1jYXNlIGBlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzYCxgZWNobyAtbiB0ZXN0aW5nOyBlY2hvIDEsMiwzYCBpbgotICAqYyosLW4qKSBFQ0hPX049IEVDSE9fQz0nCi0nIEVDSE9fVD0nCScgOzsKK2Nhc2UgYGVjaG8gInRlc3RpbmdcYyIgMj4vZGV2L251bGw7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3RpbmcgMj4vZGV2L251bGw7IGVjaG8gMSwyLDNgIGluCisgICpjKiwtbiopIEVDSE9fTj0gRUNIT19DPQkjIG5ld2xpbmVzIGRvIG5vdCBzZWQgOy0pIG9ubHkgYnJva2VuIHNoZWxscyB3b3VsZCB1c2UgdGhpcyBjYXNlIGFueXdheQorCQkgICBFQ0hPX1Q9JwknIDs7CiAgICpjKiwqICApIEVDSE9fTj0tbiBFQ0hPX0M9IEVDSE9fVD0gOzsKICAgKikgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKIGVzYWMKIGVjaG8gIiMhICRTSEVMTCIgPmNvbmZ0ZXN0LnNoCiBlY2hvICAiZXhpdCAwIiAgID4+Y29uZnRlc3Quc2gKIGNobW9kICt4IGNvbmZ0ZXN0LnNoCi1pZiB7IChlY2hvICIkYXNfbWU6MTA4ODogUEFUSD1cIi47LlwiOyBjb25mdGVzdC5zaCIpID4mNQoraWYgeyAoZWNobyAiJGFzX21lOjExMjU6IFBBVEg9XCIuOy5cIjsgY29uZnRlc3Quc2giKSA+JjUKICAgKFBBVEg9Ii47LiI7IGNvbmZ0ZXN0LnNoKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTA5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxMTI4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KICAgYWNfcGF0aF9zZXBhcmF0b3I9JzsnCiBlbHNlCkBAIC0xMTAxLDIxICsxMTM4LDIxIEBACiAKIHRvcF9idWlsZGRpcj1gcHdkYAogCi1lY2hvICIkYXNfbWU6MTEwNDogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKK2VjaG8gIiRhc19tZToxMTQxOiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZWdyZXAuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfZWdyZXArc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCi0gICAgdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJwotICAgIGVsc2UgYWNfY3ZfcHJvZ19lZ3JlcD0nZWdyZXAnCi0gICAgZmkKKwkJdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJworCQllbHNlIGFjX2N2X3Byb2dfZWdyZXA9J2VncmVwJworCWZpCiBmaQotZWNobyAiJGFzX21lOjExMTQ6IHJlc3VsdDogJGFjX2N2X3Byb2dfZWdyZXAiID4mNQorZWNobyAiJGFzX21lOjExNTE6IHJlc3VsdDogJGFjX2N2X3Byb2dfZWdyZXAiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfZWdyZXAiID4mNgotIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCisJRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAKIAotdGVzdCAteiAiJEVHUkVQIiAmJiB7IHsgZWNobyAiJGFzX21lOjExMTg6IGVycm9yOiBObyBlZ3JlcCBwcm9ncmFtIGZvdW5kIiA+JjUKKwl0ZXN0IC16ICIkRUdSRVAiICYmIHsgeyBlY2hvICIkYXNfbWU6MTE1NTogZXJyb3I6IE5vIGVncmVwIHByb2dyYW0gZm91bmQiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogCkBAIC0xMTI1LDE1ICsxMTYyLDk5IEBACiBjZl9jdl9hYmlfdmVyc2lvbj0ke05DVVJTRVNfTUFKT1J9CiBjZl9jdl9yZWxfdmVyc2lvbj0ke05DVVJTRVNfTUFKT1J9LiR7TkNVUlNFU19NSU5PUn0KIGNmX2N2X3RpbWVzdGFtcD1gZGF0ZWAKLWVjaG8gIiRhc19tZToxMTI4OiByZXN1bHQ6IENvbmZpZ3VyaW5nIE5DVVJTRVMgJGNmX2N2X3JlbF92ZXJzaW9uIEFCSSAkY2ZfY3ZfYWJpX3ZlcnNpb24gKCRjZl9jdl90aW1lc3RhbXApIiA+JjUKK2VjaG8gIiRhc19tZToxMTY1OiByZXN1bHQ6IENvbmZpZ3VyaW5nIE5DVVJTRVMgJGNmX2N2X3JlbF92ZXJzaW9uIEFCSSAkY2ZfY3ZfYWJpX3ZlcnNpb24gKCRjZl9jdl90aW1lc3RhbXApIiA+JjUKIGVjaG8gIiR7RUNIT19UfUNvbmZpZ3VyaW5nIE5DVVJTRVMgJGNmX2N2X3JlbF92ZXJzaW9uIEFCSSAkY2ZfY3ZfYWJpX3ZlcnNpb24gKCRjZl9jdl90aW1lc3RhbXApIiA+JjYKIAoraWYgdGVzdCAtZiAkc3JjZGlyL1ZFUlNJT04gOyB0aGVuCisJZWNobyAiJGFzX21lOjExNjk6IGNoZWNraW5nIGZvciBwYWNrYWdlIHZlcnNpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcGFja2FnZSB2ZXJzaW9uLi4uICRFQ0hPX0MiID4mNgorCisJIyBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBmaWVsZHMsIGN1dCByZXR1cm5zIHRoZSBsYXN0IG9uZS4uLgorCWNmX2ZpZWxkMT1gc2VkIC1lICcyLCRkJyAkc3JjZGlyL1ZFUlNJT058Y3V0IC1mMWAKKwljZl9maWVsZDI9YHNlZCAtZSAnMiwkZCcgJHNyY2Rpci9WRVJTSU9OfGN1dCAtZjJgCisJY2ZfZmllbGQzPWBzZWQgLWUgJzIsJGQnICRzcmNkaXIvVkVSU0lPTnxjdXQgLWYzYAorCisJIyB0aGlzIGlzIGhvdyBDRl9CVU5ETEVEX0lOVEwgdXNlcyAkVkVSU0lPTjoKKwlWRVJTSU9OPSIkY2ZfZmllbGQxIgorCisJVkVSU0lPTl9NQUpPUj1gZWNobyAiJGNmX2ZpZWxkMiIgfCBzZWQgLWUgJ3MvXC4uKi8vJ2AKKwl0ZXN0IC16ICIkVkVSU0lPTl9NQUpPUiIgJiYgeyB7IGVjaG8gIiRhc19tZToxMTgxOiBlcnJvcjogbWlzc2luZyBtYWpvci12ZXJzaW9uIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG1pc3NpbmcgbWFqb3ItdmVyc2lvbiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCisJVkVSU0lPTl9NSU5PUj1gZWNobyAiJGNmX2ZpZWxkMiIgfCBzZWQgLWUgJ3MvXlteLl0qXC4vLycgLWUgJ3MvLS4qLy8nYAorCXRlc3QgLXogIiRWRVJTSU9OX01JTk9SIiAmJiB7IHsgZWNobyAiJGFzX21lOjExODY6IGVycm9yOiBtaXNzaW5nIG1pbm9yLXZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogbWlzc2luZyBtaW5vci12ZXJzaW9uIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKKwllY2hvICIkYXNfbWU6MTE5MDogcmVzdWx0OiAke1ZFUlNJT05fTUFKT1J9LiR7VkVSU0lPTl9NSU5PUn0iID4mNQorZWNobyAiJHtFQ0hPX1R9JHtWRVJTSU9OX01BSk9SfS4ke1ZFUlNJT05fTUlOT1J9IiA+JjYKKworCWVjaG8gIiRhc19tZToxMTkzOiBjaGVja2luZyBmb3IgcGFja2FnZSBwYXRjaCBkYXRlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHBhY2thZ2UgcGF0Y2ggZGF0ZS4uLiAkRUNIT19DIiA+JjYKKwlWRVJTSU9OX1BBVENIPWBlY2hvICIkY2ZfZmllbGQzIiB8IHNlZCAtZSAncy9eW14tXSotLy8nYAorCWNhc2UgLiRWRVJTSU9OX1BBVENIIGluCisJKC4pCisJCXsgeyBlY2hvICIkYXNfbWU6MTE5ODogZXJyb3I6IG1pc3NpbmcgcGF0Y2gtZGF0ZSAkVkVSU0lPTl9QQVRDSCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBtaXNzaW5nIHBhdGNoLWRhdGUgJFZFUlNJT05fUEFUQ0giID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwkJOzsKKwkoLlswLTldWzAtOV1bMC05XVswLTldWzAtOV1bMC05XVswLTldWzAtOV0pCisJCTs7CisJKCopCisJCXsgeyBlY2hvICIkYXNfbWU6MTIwNTogZXJyb3I6IGlsbGVnYWwgcGF0Y2gtZGF0ZSAkVkVSU0lPTl9QQVRDSCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBpbGxlZ2FsIHBhdGNoLWRhdGUgJFZFUlNJT05fUEFUQ0giID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwkJOzsKKwllc2FjCisJZWNobyAiJGFzX21lOjEyMTA6IHJlc3VsdDogJFZFUlNJT05fUEFUQ0giID4mNQorZWNobyAiJHtFQ0hPX1R9JFZFUlNJT05fUEFUQ0giID4mNgorZWxzZQorCXsgeyBlY2hvICIkYXNfbWU6MTIxMzogZXJyb3I6IGRpZCBub3QgZmluZCAkc3JjZGlyL1ZFUlNJT04iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZGlkIG5vdCBmaW5kICRzcmNkaXIvVkVSU0lPTiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworIyBzaG93IHRoZSBhY3R1YWwgZGF0YSB0aGF0IHdlIGhhdmUgZm9yIHZlcnNpb25zOgordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglBQkkgVkVSU0lPTiAkVkVSU0lPTiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEyMjE6IHRlc3RpbmcgQUJJIFZFUlNJT04gJFZFUlNJT04gLi4uIiAxPiY1CisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJVkVSU0lPTl9NQUpPUiAkVkVSU0lPTl9NQUpPUiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEyMjU6IHRlc3RpbmcgVkVSU0lPTl9NQUpPUiAkVkVSU0lPTl9NQUpPUiAuLi4iIDE+JjUKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglWRVJTSU9OX01JTk9SICRWRVJTSU9OX01JTk9SIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTIyOTogdGVzdGluZyBWRVJTSU9OX01JTk9SICRWRVJTSU9OX01JTk9SIC4uLiIgMT4mNQorCit0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCVZFUlNJT05fUEFUQ0ggJFZFUlNJT05fUEFUQ0giIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjMzOiB0ZXN0aW5nIFZFUlNJT05fUEFUQ0ggJFZFUlNJT05fUEFUQ0ggLi4uIiAxPiY1CisKKwljZl9QQUNLQUdFPU5DVVJTRVMKKwlQQUNLQUdFPW5jdXJzZXMKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBQQUNLQUdFICIkUEFDS0FHRSIKK0VPRgorCitjZl9QQUNLQUdFPWBlY2hvICIkY2ZfUEFDS0FHRSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICR7Y2ZfUEFDS0FHRX1fVkVSU0lPTiAiJHtWRVJTSU9OX01BSk9SfS4ke1ZFUlNJT05fTUlOT1J9IgorRU9GCisKKwljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICR7Y2ZfUEFDS0FHRX1fUEFUQ0hEQVRFICR7VkVSU0lPTl9QQVRDSH0KK0VPRgorCiB0ZXN0IC16ICIkY2ZfY3ZfcmVsX3ZlcnNpb24iICYmIGNmX2N2X3JlbF92ZXJzaW9uPTAuMAogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXJlbC12ZXJzaW9uIG9yIC0td2l0aG91dC1yZWwtdmVyc2lvbiB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfcmVsX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfcmVsX3ZlcnNpb24iCi0gIHsgZWNobyAiJGFzX21lOjExMzY6IFdBUk5JTkc6IG92ZXJyaWRpbmcgcmVsZWFzZSB2ZXJzaW9uICRjZl9jdl9yZWxfdmVyc2lvbiB0byAkd2l0aHZhbCIgPiY1CisgIHsgZWNobyAiJGFzX21lOjEyNTc6IFdBUk5JTkc6IG92ZXJyaWRpbmcgcmVsZWFzZSB2ZXJzaW9uICRjZl9jdl9yZWxfdmVyc2lvbiB0byAkd2l0aHZhbCIgPiY1CiBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG92ZXJyaWRpbmcgcmVsZWFzZSB2ZXJzaW9uICRjZl9jdl9yZWxfdmVyc2lvbiB0byAkd2l0aHZhbCIgPiYyO30KICBjZl9jdl9yZWxfdmVyc2lvbj0kd2l0aHZhbAogZmk7CkBAIC0xMTQyLDMzICsxMjYzLDMzIEBACiAgTkNVUlNFU19NSU5PUj1gZWNobyAiJGNmX2N2X3JlbF92ZXJzaW9uIiB8IHNlZCAtZSAncy9eW14uXSovLycgLWUgJ3MvXlwuLy8nIC1lICdzL1wuLiovLydgCiAKIGlmIHRlc3QgLW4gIiROQ1VSU0VTX01BSk9SIiA7IHRoZW4KLSAgY2FzZSAkTkNVUlNFU19NQUpPUiBpbiAjKHZpCi0gIFswLTldKikgIyh2aQorICBjYXNlICROQ1VSU0VTX01BSk9SIGluCisgIChbMC05XSopCiAgCTs7Ci0gICopCi0JeyB7IGVjaG8gIiRhc19tZToxMTQ5OiBlcnJvcjogUmVsZWFzZSBtYWpvci12ZXJzaW9uIGlzIG5vdCBhIG51bWJlcjogJE5DVVJTRVNfTUFKT1IiID4mNQorICAoKikKKwl7IHsgZWNobyAiJGFzX21lOjEyNzA6IGVycm9yOiBSZWxlYXNlIG1ham9yLXZlcnNpb24gaXMgbm90IGEgbnVtYmVyOiAkTkNVUlNFU19NQUpPUiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBSZWxlYXNlIG1ham9yLXZlcnNpb24gaXMgbm90IGEgbnVtYmVyOiAkTkNVUlNFU19NQUpPUiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogIAk7OwogICBlc2FjCiBlbHNlCi0gIHsgeyBlY2hvICIkYXNfbWU6MTE1NTogZXJyb3I6IFJlbGVhc2UgbWFqb3ItdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTI3NjogZXJyb3I6IFJlbGVhc2UgbWFqb3ItdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBSZWxlYXNlIG1ham9yLXZlcnNpb24gdmFsdWUgaXMgZW1wdHkiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCiAKIGlmIHRlc3QgLW4gIiROQ1VSU0VTX01JTk9SIiA7IHRoZW4KLSAgY2FzZSAkTkNVUlNFU19NSU5PUiBpbiAjKHZpCi0gIFswLTldKikgIyh2aQorICBjYXNlICROQ1VSU0VTX01JTk9SIGluCisgIChbMC05XSopCiAgCTs7Ci0gICopCi0JeyB7IGVjaG8gIiRhc19tZToxMTY1OiBlcnJvcjogUmVsZWFzZSBtaW5vci12ZXJzaW9uIGlzIG5vdCBhIG51bWJlcjogJE5DVVJTRVNfTUlOT1IiID4mNQorICAoKikKKwl7IHsgZWNobyAiJGFzX21lOjEyODY6IGVycm9yOiBSZWxlYXNlIG1pbm9yLXZlcnNpb24gaXMgbm90IGEgbnVtYmVyOiAkTkNVUlNFU19NSU5PUiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBSZWxlYXNlIG1pbm9yLXZlcnNpb24gaXMgbm90IGEgbnVtYmVyOiAkTkNVUlNFU19NSU5PUiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogIAk7OwogICBlc2FjCiBlbHNlCi0gIHsgeyBlY2hvICIkYXNfbWU6MTE3MTogZXJyb3I6IFJlbGVhc2UgbWlub3ItdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTI5MjogZXJyb3I6IFJlbGVhc2UgbWlub3ItdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBSZWxlYXNlIG1pbm9yLXZlcnNpb24gdmFsdWUgaXMgZW1wdHkiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCkBAIC0xMTc4LDI3ICsxMjk5LDQ4IEBACiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFiaS12ZXJzaW9uIG9yIC0td2l0aG91dC1hYmktdmVyc2lvbiB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfYWJpX3ZlcnNpb24iCi0gIHsgZWNobyAiJGFzX21lOjExODE6IFdBUk5JTkc6IG92ZXJyaWRpbmcgQUJJIHZlcnNpb24gJGNmX2N2X2FiaV92ZXJzaW9uIHRvICR3aXRodmFsIiA+JjUKKworCWlmIHRlc3QgIngkY2ZfY3ZfYWJpX3ZlcnNpb24iICE9ICJ4JHdpdGh2YWwiCisJdGhlbgorCQl7IGVjaG8gIiRhc19tZToxMzA1OiBXQVJOSU5HOiBvdmVycmlkaW5nIEFCSSB2ZXJzaW9uICRjZl9jdl9hYmlfdmVyc2lvbiB0byAkd2l0aHZhbCIgPiY1CiBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG92ZXJyaWRpbmcgQUJJIHZlcnNpb24gJGNmX2N2X2FiaV92ZXJzaW9uIHRvICR3aXRodmFsIiA+JjI7fQotIGNmX2N2X2FiaV92ZXJzaW9uPSR3aXRodmFsCisJCWNhc2UgJGNmX2N2X3JlbF92ZXJzaW9uIGluCisJCSg1LiopCisJCQljZl9jdl9yZWxfdmVyc2lvbj0kd2l0aHZhbC4wCisJCQk7OworCQkoNi4qKQorCQkJY2ZfY3ZfcmVsX3ZlcnNpb249JHdpdGh2YWwuOQkjIEZJWE1FOiBzaG91bGQgYmUgMTAgYXMgb2YgNi4wIHJlbGVhc2UKKwkJCTs7CisJCWVzYWMKKwlmaQorCWNmX2N2X2FiaV92ZXJzaW9uPSR3aXRodmFsCiBmaTsKIAogaWYgdGVzdCAtbiAiJGNmX2N2X2FiaV92ZXJzaW9uIiA7IHRoZW4KLSAgY2FzZSAkY2ZfY3ZfYWJpX3ZlcnNpb24gaW4gIyh2aQotICBbMC05XSopICModmkKKyAgY2FzZSAkY2ZfY3ZfYWJpX3ZlcnNpb24gaW4KKyAgKFswLTldKikKICAJOzsKLSAgKikKLQl7IHsgZWNobyAiJGFzX21lOjExOTE6IGVycm9yOiBBQkkgdmVyc2lvbiBpcyBub3QgYSBudW1iZXI6ICRjZl9jdl9hYmlfdmVyc2lvbiIgPiY1CisgICgqKQorCXsgeyBlY2hvICIkYXNfbWU6MTMyNDogZXJyb3I6IEFCSSB2ZXJzaW9uIGlzIG5vdCBhIG51bWJlcjogJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IEFCSSB2ZXJzaW9uIGlzIG5vdCBhIG51bWJlcjogJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgCTs7CiAgIGVzYWMKIGVsc2UKLSAgeyB7IGVjaG8gIiRhc19tZToxMTk3OiBlcnJvcjogQUJJIHZlcnNpb24gdmFsdWUgaXMgZW1wdHkiID4mNQorICB7IHsgZWNobyAiJGFzX21lOjEzMzA6IGVycm9yOiBBQkkgdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBBQkkgdmVyc2lvbiB2YWx1ZSBpcyBlbXB0eSIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIAoraWYgdGVzdCAieCRjZl9jdl9hYmlfdmVyc2lvbiIgIT0gIngkd2l0aF9hYmlfdmVyc2lvbiIKK3RoZW4KKwljYXNlICRjZl9jdl9yZWxfdmVyc2lvbiBpbgorCSg1LiopCisJCWNmX2N2X3JlbF92ZXJzaW9uPSR3aXRoX2FiaV92ZXJzaW9uLjAKKwkJOzsKKwllc2FjCitmaQorCiBhY19hdXhfZGlyPQogZm9yIGFjX2RpciBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLjsgZG8KICAgaWYgdGVzdCAtZiAkYWNfZGlyL2luc3RhbGwtc2g7IHRoZW4KQEAgLTEyMTYsNyArMTM1OCw3IEBACiAgIGZpCiBkb25lCiBpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgeyB7IGVjaG8gIiRhc19tZToxMjE5OiBlcnJvcjogY2Fubm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiA+JjUKKyAgeyB7IGVjaG8gIiRhc19tZToxMzYxOiBlcnJvcjogY2Fubm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKQEAgLTEyMjYsMTEgKzEzNjgsMTEgQEAKIAogIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgogJGFjX2NvbmZpZ19zdWIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKLSAgeyB7IGVjaG8gIiRhc19tZToxMjI5OiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTM3MTogZXJyb3I6IGNhbm5vdCBydW4gJGFjX2NvbmZpZ19zdWIiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogCi1lY2hvICIkYXNfbWU6MTIzMzogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorZWNobyAiJGFzX21lOjEzNzU6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X2J1aWxkK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xMjM5LDIzICsxMzgxLDIzIEBACiB0ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCiAgIGFjX2N2X2J1aWxkX2FsaWFzPWAkYWNfY29uZmlnX2d1ZXNzYAogdGVzdCAteiAiJGFjX2N2X2J1aWxkX2FsaWFzIiAmJgotICB7IHsgZWNobyAiJGFzX21lOjEyNDI6IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiID4mNQorICB7IHsgZWNobyAiJGFzX21lOjEzODQ6IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBhY19jdl9idWlsZD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzYCB8fAotICB7IHsgZWNobyAiJGFzX21lOjEyNDY6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXMgZmFpbGVkLiIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTM4ODogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhcyBmYWlsZWQuIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhcyBmYWlsZWQuIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAKIGZpCi1lY2hvICIkYXNfbWU6MTI1MTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQorZWNobyAiJGFzX21lOjEzOTM6IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl9idWlsZCIgPiY2CiBidWlsZD0kYWNfY3ZfYnVpbGQKIGJ1aWxkX2NwdT1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAogYnVpbGRfdmVuZG9yPWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCiBidWlsZF9vcz1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAogCi1lY2hvICIkYXNfbWU6MTI1ODogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CitlY2hvICIkYXNfbWU6MTQwMDogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X2hvc3Qrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTEyNjQsMTIgKzE0MDYsMTIgQEAKIHRlc3QgLXogIiRhY19jdl9ob3N0X2FsaWFzIiAmJgogICBhY19jdl9ob3N0X2FsaWFzPSRhY19jdl9idWlsZF9hbGlhcwogYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXNgIHx8Ci0gIHsgeyBlY2hvICIkYXNfbWU6MTI2NzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1CisgIHsgeyBlY2hvICIkYXNfbWU6MTQwOTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIAogZmkKLWVjaG8gIiRhc19tZToxMjcyOiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKK2VjaG8gIiRhc19tZToxNDE0OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl9ob3N0IiA+JjYKIGhvc3Q9JGFjX2N2X2hvc3QKIGhvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKQEAgLTEyNzcsNyArMTQxOSw3IEBACiBob3N0X29zPWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKIAogaWYgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5ndWVzcyB8fCB0ZXN0IC1mICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyA7IHRoZW4KLQllY2hvICIkYXNfbWU6MTI4MDogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKKwllY2hvICIkYXNfbWU6MTQyMjogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHthY19jdl90YXJnZXQrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTEyODYsMTIgKzE0MjgsMTIgQEAKIHRlc3QgIngkYWNfY3ZfdGFyZ2V0X2FsaWFzIiA9ICJ4IiAmJgogICBhY19jdl90YXJnZXRfYWxpYXM9JGFjX2N2X2hvc3RfYWxpYXMKIGFjX2N2X3RhcmdldD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhc2AgfHwKLSAgeyB7IGVjaG8gIiRhc19tZToxMjg5OiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhcyBmYWlsZWQiID4mNQorICB7IHsgZWNobyAiJGFzX21lOjE0MzE6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogCiBmaQotZWNobyAiJGFzX21lOjEyOTQ6IHJlc3VsdDogJGFjX2N2X3RhcmdldCIgPiY1CitlY2hvICIkYXNfbWU6MTQzNjogcmVzdWx0OiAkYWNfY3ZfdGFyZ2V0IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl90YXJnZXQiID4mNgogdGFyZ2V0PSRhY19jdl90YXJnZXQKIHRhcmdldF9jcHU9YGVjaG8gJGFjX2N2X3RhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCkBAIC0xMzExLDcgKzE0NTMsOCBAQAogCQlzeXN0ZW1fbmFtZT0iYChob3N0bmFtZSkgMj4vZGV2L251bGxgIgogCWZpCiBmaQotdGVzdCAtbiAiJHN5c3RlbV9uYW1lIiAmJiBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCit0ZXN0IC1uICIkc3lzdGVtX25hbWUiICYmCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCiAjZGVmaW5lIFNZU1RFTV9OQU1FICIkc3lzdGVtX25hbWUiCiBFT0YKIApAQCAtMTMyMiwxMyArMTQ2NSwxMyBAQAogZmkKIAogdGVzdCAteiAiJHN5c3RlbV9uYW1lIiAmJiBzeXN0ZW1fbmFtZT0iJGNmX2N2X3N5c3RlbV9uYW1lIgotdGVzdCAtbiAiJGNmX2N2X3N5c3RlbV9uYW1lIiAmJiBlY2hvICIkYXNfbWU6MTMyNTogcmVzdWx0OiBDb25maWd1cmluZyBmb3IgJGNmX2N2X3N5c3RlbV9uYW1lIiA+JjUKK3Rlc3QgLW4gIiRjZl9jdl9zeXN0ZW1fbmFtZSIgJiYgZWNobyAiJGFzX21lOjE0Njg6IHJlc3VsdDogQ29uZmlndXJpbmcgZm9yICRjZl9jdl9zeXN0ZW1fbmFtZSIgPiY1CiBlY2hvICIke0VDSE9fVH1Db25maWd1cmluZyBmb3IgJGNmX2N2X3N5c3RlbV9uYW1lIiA+JjYKIAogaWYgdGVzdCAiLiRzeXN0ZW1fbmFtZSIgIT0gIi4kY2ZfY3Zfc3lzdGVtX25hbWUiIDsgdGhlbgotCWVjaG8gIiRhc19tZToxMzI5OiByZXN1bHQ6IENhY2hlZCBzeXN0ZW0gbmFtZSAoJHN5c3RlbV9uYW1lKSBkb2VzIG5vdCBhZ3JlZSB3aXRoIGFjdHVhbCAoJGNmX2N2X3N5c3RlbV9uYW1lKSIgPiY1CisJZWNobyAiJGFzX21lOjE0NzI6IHJlc3VsdDogQ2FjaGVkIHN5c3RlbSBuYW1lICgkc3lzdGVtX25hbWUpIGRvZXMgbm90IGFncmVlIHdpdGggYWN0dWFsICgkY2ZfY3Zfc3lzdGVtX25hbWUpIiA+JjUKIGVjaG8gIiR7RUNIT19UfUNhY2hlZCBzeXN0ZW0gbmFtZSAoJHN5c3RlbV9uYW1lKSBkb2VzIG5vdCBhZ3JlZSB3aXRoIGFjdHVhbCAoJGNmX2N2X3N5c3RlbV9uYW1lKSIgPiY2Ci0JeyB7IGVjaG8gIiRhc19tZToxMzMxOiBlcnJvcjogXCJQbGVhc2UgcmVtb3ZlIGNvbmZpZy5jYWNoZSBhbmQgdHJ5IGFnYWluLlwiIiA+JjUKKwl7IHsgZWNobyAiJGFzX21lOjE0NzQ6IGVycm9yOiBcIlBsZWFzZSByZW1vdmUgY29uZmlnLmNhY2hlIGFuZCB0cnkgYWdhaW4uXCIiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogXCJQbGVhc2UgcmVtb3ZlIGNvbmZpZy5jYWNoZSBhbmQgdHJ5IGFnYWluLlwiIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQpAQCAtMTMzNiw5ICsxNDc5LDExIEBACiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3RlbS10eXBlIG9yIC0td2l0aG91dC1zeXN0ZW0tdHlwZSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfc3lzdGVtX3R5cGUiCi0gIHsgZWNobyAiJGFzX21lOjEzMzk6IFdBUk5JTkc6IG92ZXJyaWRpbmcgc3lzdGVtIHR5cGUgdG8gJHdpdGh2YWwiID4mNQorICB7IGVjaG8gIiRhc19tZToxNDgyOiBXQVJOSU5HOiBvdmVycmlkaW5nIHN5c3RlbSB0eXBlIHRvICR3aXRodmFsIiA+JjUKIGVjaG8gIiRhc19tZTogV0FSTklORzogb3ZlcnJpZGluZyBzeXN0ZW0gdHlwZSB0byAkd2l0aHZhbCIgPiYyO30KLSBjZl9jdl9zeXN0ZW1fbmFtZT0kd2l0aHZhbAorCWNmX2N2X3N5c3RlbV9uYW1lPSR3aXRodmFsCisJaG9zdF9vcz0kd2l0aHZhbAorCiBmaTsKIAogIyMjCVNhdmUgdGhlIGdpdmVuICRDRkxBR1MgdG8gYWxsb3cgdXNlci1vdmVycmlkZS4KQEAgLTEzNDYsMjMgKzE0OTEsMjMgQEAKIAogIyMjCURlZmF1bHQgaW5zdGFsbC1sb2NhdGlvbgogCi1lY2hvICIkYXNfbWU6MTM0OTogY2hlY2tpbmcgZm9yIHByZWZpeCIgPiY1CitlY2hvICIkYXNfbWU6MTQ5NDogY2hlY2tpbmcgZm9yIHByZWZpeCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBwcmVmaXguLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiIDsgdGhlbgogCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4KIAkJIyBub24tdmVuZG9yIHN5c3RlbXMgZG9uJ3QgaGF2ZSBhIGNvbmZsaWN0Ci0Jb3BlbmJzZCp8ZnJlZWJzZCp8bGludXgqfGN5Z3dpbip8aypic2QqLWdudSkKKwkob3BlbmJzZCp8ZnJlZWJzZCp8bWlyYnNkKnxsaW51eCp8Y3lnd2luKnxtc3lzKnxrKmJzZCotZ251fG1pbmd3KikKIAkJcHJlZml4PS91c3IKIAkJOzsKLQkqKQlwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4CisJKCopCXByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKIAkJOzsKIAllc2FjCiBmaQotZWNobyAiJGFzX21lOjEzNjE6IHJlc3VsdDogJHByZWZpeCIgPiY1CitlY2hvICIkYXNfbWU6MTUwNjogcmVzdWx0OiAkcHJlZml4IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRwcmVmaXgiID4mNgogCiBpZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiIDsgdGhlbgotZWNobyAiJGFzX21lOjEzNjU6IGNoZWNraW5nIGZvciBkZWZhdWx0IGluY2x1ZGUtZGlyZWN0b3J5IiA+JjUKK2VjaG8gIiRhc19tZToxNTEwOiBjaGVja2luZyBmb3IgZGVmYXVsdCBpbmNsdWRlLWRpcmVjdG9yeSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkZWZhdWx0IGluY2x1ZGUtZGlyZWN0b3J5Li4uICRFQ0hPX0MiID4mNgogdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gMT4mNgogZm9yIGNmX3N5bWJvbCBpbiBcCkBAIC0xMzg1LDExICsxNTMwLDU3IEBACiAJZmkKIAl0ZXN0IC1uICIkdmVyYm9zZSIgICYmIGVjaG8gIgl0ZXN0ZWQgJGNmX2RpciIgMT4mNgogZG9uZQotZWNobyAiJGFzX21lOjEzODg6IHJlc3VsdDogJGluY2x1ZGVkaXIiID4mNQorZWNobyAiJGFzX21lOjE1MzM6IHJlc3VsdDogJGluY2x1ZGVkaXIiID4mNQogZWNobyAiJHtFQ0hPX1R9JGluY2x1ZGVkaXIiID4mNgogZmkKIAorIyMjIERlZmF1bHRzIGZvciBuY3Vyc2VzIEFCSQorCitjYXNlIHgkY2ZfY3ZfYWJpX3ZlcnNpb24gaW4KKyh4WzY3ODldKQorCWNmX2RmdF9leHRfY29sb3JzPXllcworCWNmX2RmdF9leHRfY29uc3Q9eWVzCisJY2ZfZGZ0X2V4dF9tb3VzZT15ZXMKKwljZl9kZnRfZXh0X3B1dHdpbj15ZXMKKwljZl9kZnRfZXh0X3NwZnVuY3M9eWVzCisJY2ZfZGZ0X2ZpbHRlcl9zeW1zPXllcworCWNmX2RmdF9jaHR5cGU9dWludDMyX3QKKwljZl9kZnRfbW1hc2tfdD11aW50MzJfdAorCWNmX2RmdF9pbnRlcm9wPXllcworCWNmX2RmdF90cGFybV9hcmc9aW50cHRyX3QKKwljZl9kZnRfd2l0aF9scDY0PXllcworCTs7CisoKikKKwljZl9kZnRfZXh0X2NvbG9ycz1ubworCWNmX2RmdF9leHRfY29uc3Q9bm8KKwljZl9kZnRfZXh0X21vdXNlPW5vCisJY2ZfZGZ0X2V4dF9wdXR3aW49bm8KKwljZl9kZnRfZXh0X3NwZnVuY3M9bm8KKwljZl9kZnRfZmlsdGVyX3N5bXM9bm8KKwljZl9kZnRfY2h0eXBlPWF1dG8KKwljZl9kZnRfbW1hc2tfdD1hdXRvCisJY2ZfZGZ0X2ludGVyb3A9bm8KKwljZl9kZnRfdHBhcm1fYXJnPWxvbmcKKwljZl9kZnRfd2l0aF9scDY0PW5vCisJOzsKK2VzYWMKKwogIyMjCUNoZWNrcyBmb3IgcHJvZ3JhbXMuCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWRhIG9yIC0td2l0aG91dC1hZGEgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2FkYStzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9hZGEiCisgIGNmX3dpdGhfYWRhPSR3aXRodmFsCitlbHNlCisgIGNmX3dpdGhfYWRhPXllcworZmk7CitpZiB0ZXN0ICJ4JGNmX3dpdGhfYWRhIiA9IHh5ZXMKK3RoZW4KKwljZl9QUk9HX0NDPSJnbmF0Z2NjIGdjYyBjYyIKK2Vsc2UKKwljZl9QUk9HX0NDPSJnY2MgY2MiCitmaQorCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTEzOTcsMjEzICsxNTg4LDExIEBACiBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CiBhY19tYWluX3JldHVybj1yZXR1cm4KIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZToxNDAyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCi1hY19kdW1teT0iJFBBVEgiCi1mb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgSUZTPSRhY19zYXZlX0lGUwotICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQotYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1nY2MiCi1lY2hvICIkYXNfbWU6MTQxNzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi1maQotZmkKLUNDPSRhY19jdl9wcm9nX0NDCi1pZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gIGVjaG8gIiRhc19tZToxNDI1OiByZXN1bHQ6ICRDQyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6MTQyODogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCi0gIGFjX2N0X0NDPSRDQwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6MTQzNzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfYWNfY3RfQ0M9ImdjYyIKLWVjaG8gIiRhc19tZToxNDUyOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLWZpCi1maQotYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLWlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE0NjA6IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZToxNDYzOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgQ0M9JGFjX2N0X0NDCi1lbHNlCi0gIENDPSIkYWNfY3ZfcHJvZ19DQyIKLWZpCi0KLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZToxNDc2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCi1hY19kdW1teT0iJFBBVEgiCi1mb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgSUZTPSRhY19zYXZlX0lGUwotICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQotYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1jYyIKLWVjaG8gIiRhc19tZToxNDkxOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLWZpCi1maQotQ0M9JGFjX2N2X3Byb2dfQ0MKLWlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE0OTk6IHJlc3VsdDogJENDIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZToxNTAyOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DQyI7IHRoZW4KLSAgYWNfY3RfQ0M9JENDCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6MTUxMTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfYWNfY3RfQ0M9ImNjIgotZWNobyAiJGFzX21lOjE1MjY6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotZmkKLWZpCi1hY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQwotaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MTUzNDogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0NDIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjE1Mzc6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotICBDQz0kYWNfY3RfQ0MKLWVsc2UKLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotZmkKLQotZmkKLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZToxNTUwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19wcm9nX3JlamVjdGVkPW5vCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1pZiB0ZXN0ICIkYWNfZGlyLyRhY193b3JkIiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLSAgYWNfcHJvZ19yZWplY3RlZD15ZXMKLSAgY29udGludWUKLWZpCi1hY19jdl9wcm9nX0NDPSJjYyIKLWVjaG8gIiRhc19tZToxNTcwOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLWlmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4KLSAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgotICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKLSAgc2hpZnQKLSAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuCi0gICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuCi0gICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgotICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgotICAgIHNoaWZ0Ci0gICAgc2V0IGR1bW15ICIkYWNfZGlyLyRhY193b3JkIiAkezErIiRAIn0KLSAgICBzaGlmdAotICAgIGFjX2N2X3Byb2dfQ0M9IiRAIgotICBmaQotZmkKLWZpCi1maQotQ0M9JGFjX2N2X3Byb2dfQ0MKLWlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE1OTI6IHJlc3VsdDogJENDIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZToxNTk1OiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLWZpCi1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgZm9yIGFjX3Byb2cgaW4gY2wKKyAgZm9yIGFjX3Byb2cgaW4gJGNmX1BST0dfQ0MKICAgZG8KICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjE2MDY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICIkYXNfbWU6MTU5NTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNjE4LDcgKzE2MDcsNyBAQAogICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQogYWNfY3ZfcHJvZ19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi1lY2hvICIkYXNfbWU6MTYyMTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CitlY2hvICIkYXNfbWU6MTYxMDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiBicmVhawogZG9uZQogCkBAIC0xNjI2LDEwICsxNjE1LDEwIEBACiBmaQogQ0M9JGFjX2N2X3Byb2dfQ0MKIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE2Mjk6IHJlc3VsdDogJENDIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MTg6IHJlc3VsdDogJENDIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRDQyIgPiY2CiBlbHNlCi0gIGVjaG8gIiRhc19tZToxNjMyOiByZXN1bHQ6IG5vIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MjE6IHJlc3VsdDogbm8iID4mNQogZWNobyAiJHtFQ0hPX1R9bm8iID4mNgogZmkKIApAQCAtMTYzOCwxMSArMTYyNywxMSBAQAogZmkKIGlmIHRlc3QgLXogIiRDQyI7IHRoZW4KICAgYWNfY3RfQ0M9JENDCi0gIGZvciBhY19wcm9nIGluIGNsCisgIGZvciBhY19wcm9nIGluICRjZl9QUk9HX0NDCiBkbwogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjE2NDU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICIkYXNfbWU6MTYzNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNjU3LDcgKzE2NDYsNyBAQAogICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQogYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX3Byb2ciCi1lY2hvICIkYXNfbWU6MTY2MDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CitlY2hvICIkYXNfbWU6MTY0OTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiBicmVhawogZG9uZQogCkBAIC0xNjY1LDEwICsxNjU0LDEwIEBACiBmaQogYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE2Njg6IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NTc6IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2CiBlbHNlCi0gIGVjaG8gIiRhc19tZToxNjcxOiByZXN1bHQ6IG5vIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NjA6IHJlc3VsdDogbm8iID4mNQogZWNobyAiJHtFQ0hPX1R9bm8iID4mNgogZmkKIApAQCAtMTY3OCwzNCArMTY2NywzMiBAQAogICBDQz0kYWNfY3RfQ0MKIGZpCiAKLWZpCi0KLXRlc3QgLXogIiRDQyIgJiYgeyB7IGVjaG8gIiRhc19tZToxNjgzOiBlcnJvcjogbm8gYWNjZXB0YWJsZSBjYyBmb3VuZCBpbiBcJFBBVEgiID4mNQordGVzdCAteiAiJENDIiAmJiB7IHsgZWNobyAiJGFzX21lOjE2NzA6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogCiAjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCi1lY2hvICIkYXNfbWU6MTY4ODoiIFwKK2VjaG8gIiRhc19tZToxNjc1OiIgXAogICAgICAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1CiBhY19jb21waWxlcj1gc2V0IFggJGFjX2NvbXBpbGU7IGVjaG8gJDJgCi17IChldmFsIGVjaG8gIiRhc19tZToxNjkxOiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQoreyAoZXZhbCBlY2hvICIkYXNfbWU6MTY3ODogXCIkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE2OTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY4MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9Ci17IChldmFsIGVjaG8gIiRhc19tZToxNjk2OiBcIiRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNVwiIikgPiY1Cit7IChldmFsIGVjaG8gIiRhc19tZToxNjgzOiBcIiRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE2OTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY4NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9Ci17IChldmFsIGVjaG8gIiRhc19tZToxNzAxOiBcIiRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4mNVwiIikgPiY1Cit7IChldmFsIGVjaG8gIiRhc19tZToxNjg4OiBcIiRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4mNVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4mNSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE3MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9CiAKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTcwOCAiY29uZmlndXJlIgorI2xpbmUgMTY5NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludApAQCAtMTcyMSwxMyArMTcwOCwxMyBAQAogIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgogIyBJdCB3aWxsIGhlbHAgdXMgZGlhZ25vc2UgYnJva2VuIGNvbXBpbGVycywgYW5kIGZpbmRpbmcgb3V0IGFuIGludHVpdGlvbgogIyBvZiBleGVleHQuCi1lY2hvICIkYXNfbWU6MTcyNDogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQiID4mNQorZWNobyAiJGFzX21lOjE3MTE6IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQuLi4gJEVDSE9fQyIgPiY2CiBhY19saW5rX2RlZmF1bHQ9YGVjaG8gIiRhY19saW5rIiB8IHNlZCAncy8gLW8gKmNvbmZ0ZXN0W14gXSovLydgCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzI3OiBcIiRhY19saW5rX2RlZmF1bHRcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcxNDogXCIkYWNfbGlua19kZWZhdWx0XCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmtfZGVmYXVsdCkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE3MzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTcxNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCiAgICMgRmluZCB0aGUgb3V0cHV0LCBzdGFydGluZyBmcm9tIHRoZSBtb3N0IGxpa2VseS4gIFRoaXMgc2NoZW1lIGlzCiAjIG5vdCByb2J1c3QgdG8ganVuayBpbiBgLicsIGhlbmNlIGdvIHRvIHdpbGRjYXJkcyAoYS4qKSBvbmx5IGFzIGEgbGFzdApAQCAtMTczNiw3ICsxNzIzLDcgQEAKICAgICAgICAgICAgICAgICBscyBhLm91dCBjb25mdGVzdCAyPi9kZXYvbnVsbDsKICAgICAgICAgICAgICAgICBscyBhLiogY29uZnRlc3QuKiAyPi9kZXYvbnVsbGA7IGRvCiAgIGNhc2UgJGFjX2ZpbGUgaW4KLSAgICAqLiRhY19leHQgfCAqLm8gfCAqLm9iaiB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiICkgOzsKKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLmRiZyB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICoubyB8ICoub2JqICkgOzsKICAgICBhLm91dCApICMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0CiAgICAgICAgICAgICAjIGNlcnRhaW5seSByaWdodC4KICAgICAgICAgICAgIGJyZWFrOzsKQEAgLTE3NTAsMzQgKzE3MzcsMzQgQEAKIGVsc2UKICAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQoteyB7IGVjaG8gIiRhc19tZToxNzUzOiBlcnJvcjogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzIiA+JjUKK3sgeyBlY2hvICIkYXNfbWU6MTc0MDogZXJyb3I6IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcyIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMiID4mMjt9CiAgICB7IChleGl0IDc3KTsgZXhpdCA3NzsgfTsgfQogZmkKIAogYWNfZXhlZXh0PSRhY19jdl9leGVleHQKLWVjaG8gIiRhc19tZToxNzU5OiByZXN1bHQ6ICRhY19maWxlIiA+JjUKK2VjaG8gIiRhc19tZToxNzQ2OiByZXN1bHQ6ICRhY19maWxlIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19maWxlIiA+JjYKIAogIyBDaGVjayB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElmIG5vdCwgZWl0aGVyCiAjIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCi1lY2hvICIkYXNfbWU6MTc2NDogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1CitlY2hvICIkYXNfbWU6MTc1MTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MuLi4gJEVDSE9fQyIgPiY2CiAjIEZJWE1FOiBUaGVzZSBjcm9zcyBjb21waWxlciBoYWNrcyBzaG91bGQgYmUgcmVtb3ZlZCBmb3IgQXV0b2NvbmYgMy4wCiAjIElmIG5vdCBjcm9zcyBjb21waWxpbmcsIGNoZWNrIHRoYXQgd2UgY2FuIHJ1biBhIHNpbXBsZSBwcm9ncmFtLgogaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCiAgIGlmIHsgYWNfdHJ5PScuLyRhY19maWxlJwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNzcwOiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzU3OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTc3MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzYwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgICBjcm9zc19jb21waWxpbmc9bm8KICAgZWxzZQogICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KIAljcm9zc19jb21waWxpbmc9eWVzCiAgICAgZWxzZQotCXsgeyBlY2hvICIkYXNfbWU6MTc4MDogZXJyb3I6IGNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KKwl7IHsgZWNobyAiJGFzX21lOjE3Njc6IGVycm9yOiBjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCiBJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4iID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgogSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0taG9zdCcuIiA+JjI7fQpAQCAtMTc4NSwyNCArMTc3MiwyNCBAQAogICAgIGZpCiAgIGZpCiBmaQotZWNobyAiJGFzX21lOjE3ODg6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiRhc19tZToxNzc1OiByZXN1bHQ6IHllcyIgPiY1CiBlY2hvICIke0VDSE9fVH15ZXMiID4mNgogCiBybSAtZiBhLm91dCBhLmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQKIGFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCiAjIENoZWNrIHRoZSBjb21waWxlciBwcm9kdWNlcyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKICMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KLWVjaG8gIiRhc19tZToxNzk1OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmciID4mNQorZWNobyAiJGFzX21lOjE3ODI6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiAkRUNIT19DIiA+JjYKLWVjaG8gIiRhc19tZToxNzk3OiByZXN1bHQ6ICRjcm9zc19jb21waWxpbmciID4mNQorZWNobyAiJGFzX21lOjE3ODQ6IHJlc3VsdDogJGNyb3NzX2NvbXBpbGluZyIgPiY1CiBlY2hvICIke0VDSE9fVH0kY3Jvc3NfY29tcGlsaW5nIiA+JjYKIAotZWNobyAiJGFzX21lOjE4MDA6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICIkYXNfbWU6MTc4NzogY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4Li4uICRFQ0hPX0MiID4mNgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTgwMjogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzg5OiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxODA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3OTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgogICAjIElmIGJvdGggYGNvbmZ0ZXN0LmV4ZScgYW5kIGBjb25mdGVzdCcgYXJlIGBwcmVzZW50JyAod2VsbCwgb2JzZXJ2YWJsZSkKICMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3IgaW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbApAQCAtMTgxMCw3ICsxNzk3LDcgQEAKICMgYHJtJy4KIGZvciBhY19maWxlIGluIGAobHMgY29uZnRlc3QuZXhlOyBscyBjb25mdGVzdDsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbwogICBjYXNlICRhY19maWxlIGluCi0gICAgKi4kYWNfZXh0IHwgKi5vIHwgKi5vYmogfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiApIDs7CisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5kYmcgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLm8gfCAqLm9iaiApIDs7CiAgICAgKi4qICkgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCiAgICAgICAgICAgZXhwb3J0IGFjX2N2X2V4ZWV4dAogICAgICAgICAgIGJyZWFrOzsKQEAgLTE4MTgsMjUgKzE4MDUsMjUgQEAKICAgZXNhYwogZG9uZQogZWxzZQotICB7IHsgZWNobyAiJGFzX21lOjE4MjE6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBFWEVFWFQ6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rIiA+JjUKKyAgeyB7IGVjaG8gIiRhc19tZToxODA4OiBlcnJvcjogY2Fubm90IGNvbXB1dGUgRVhFRVhUOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluayIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBFWEVFWFQ6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogCiBybSAtZiBjb25mdGVzdCRhY19jdl9leGVleHQKLWVjaG8gIiRhc19tZToxODI3OiByZXN1bHQ6ICRhY19jdl9leGVleHQiID4mNQorZWNobyAiJGFzX21lOjE4MTQ6IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfZXhlZXh0IiA+JjYKIAogcm0gLWYgY29uZnRlc3QuJGFjX2V4dAogRVhFRVhUPSRhY19jdl9leGVleHQKIGFjX2V4ZWV4dD0kRVhFRVhUCi1lY2hvICIkYXNfbWU6MTgzMzogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgiID4mNQorZWNobyAiJGFzX21lOjE4MjA6IGNoZWNraW5nIGZvciBvYmplY3Qgc3VmZml4IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXguLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE4MzkgImNvbmZpZ3VyZSIKKyNsaW5lIDE4MjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQKQEAgLTE4NDgsMTQgKzE4MzUsMTQgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QubyBjb25mdGVzdC5vYmoKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4NTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTgzODogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTg1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxODQxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KICAgZm9yIGFjX2ZpbGUgaW4gYChscyBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iajsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbwogICBjYXNlICRhY19maWxlIGluCi0gICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgKSA7OworICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICouZGJnIHwgKi5wZGIgfCAqLnhTWU0gfCAqLm1hcCB8ICouaW5mICkgOzsKICAgICAqKSBhY19jdl9vYmpleHQ9YGV4cHIgIiRhY19maWxlIiA6ICcuKlwuXCguKlwpJ2AKICAgICAgICBicmVhazs7CiAgIGVzYWMKQEAgLTE4NjMsMjQgKzE4NTAsMjQgQEAKIGVsc2UKICAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQoteyB7IGVjaG8gIiRhc19tZToxODY2OiBlcnJvcjogY2Fubm90IGNvbXB1dGUgT0JKRVhUOiBjYW5ub3QgY29tcGlsZSIgPiY1Cit7IHsgZWNobyAiJGFzX21lOjE4NTM6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBPQkpFWFQ6IGNhbm5vdCBjb21waWxlIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjb21wdXRlIE9CSkVYVDogY2Fubm90IGNvbXBpbGUiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCiAKIHJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKLWVjaG8gIiRhc19tZToxODczOiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4mNQorZWNobyAiJGFzX21lOjE4NjA6IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3Zfb2JqZXh0IiA+JjYKIE9CSkVYVD0kYWNfY3Zfb2JqZXh0CiBhY19vYmpleHQ9JE9CSkVYVAotZWNobyAiJGFzX21lOjE4Nzc6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CitlY2hvICIkYXNfbWU6MTg2NDogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHthY19jdl9jX2NvbXBpbGVyX2dudStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE4ODMgImNvbmZpZ3VyZSIKKyNsaW5lIDE4NzAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQKQEAgLTE4OTUsMTYgKzE4ODIsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTg5ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODg1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxOTAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE4ODg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTkwNDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTg5MTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE5MDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTg5NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGFjX2NvbXBpbGVyX2dudT15ZXMKIGVsc2UKQEAgLTE5MTYsMTkgKzE5MDMsMTkgQEAKIGFjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKIAogZmkKLWVjaG8gIiRhc19tZToxOTE5OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1CitlY2hvICIkYXNfbWU6MTkwNjogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjYKIEdDQz1gdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzICYmIGVjaG8geWVzYAogYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQogYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwogQ0ZMQUdTPSItZyIKLWVjaG8gIiRhc19tZToxOTI1OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKK2VjaG8gIiRhc19tZToxOTEyOiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19nK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTkzMSAiY29uZmlndXJlIgorI2xpbmUgMTkxOCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludApAQCAtMTk0MCwxNiArMTkyNywxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTQzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5MzA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE5NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkzMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxOTQ5OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxOTM2OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTk1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgYWNfY3ZfcHJvZ19jY19nPXllcwogZWxzZQpAQCAtMTk1OSw3ICsxOTQ2LDcgQEAKIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1lY2hvICIkYXNfbWU6MTk2MjogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKK2VjaG8gIiRhc19tZToxOTQ5OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY2NfZyIgPiY2CiBpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCiAgIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKQEAgLTE5ODYsMTYgKzE5NzMsMTYgQEAKICNlbmRpZgogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTg5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NzY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE5OTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTk3OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxOTk1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxOTgyOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTk5ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTg1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgZm9yIGFjX2RlY2xhcmF0aW9uIGluIFwKICAgICcnXApAQCAtMjAwNyw3ICsxOTk0LDcgQEAKICAgICd2b2lkIGV4aXQgKGludCk7JwogZG8KICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAyMDEwICJjb25maWd1cmUiCisjbGluZSAxOTk3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICRhY19kZWNsYXJhdGlvbgpAQCAtMjAyMCwxNiArMjAwNywxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyMDIzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwMTA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjIwMjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAxMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToyMDI5OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToyMDE2OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MjAzMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgOgogZWxzZQpAQCAtMjAzOSw3ICsyMDI2LDcgQEAKIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAyMDQyICJjb25maWd1cmUiCisjbGluZSAyMDI5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICRhY19kZWNsYXJhdGlvbgogaW50CkBAIC0yMDUxLDE2ICsyMDM4LDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwNTQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA0MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MjA1NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwNjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwNDc6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyMDYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwNTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBicmVhawogZWxzZQpAQCAtMjA2OSw3ICsyMDU2LDcgQEAKIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGRvbmUKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KgogaWYgdGVzdCAtbiAiJGFjX2RlY2xhcmF0aW9uIjsgdGhlbgogICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAogICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29uZmRlZnMuaApAQCAtMjA5MCw5ODc4ICsyMDc3LDE1IEBACiAKIEdDQ19WRVJTSU9OPW5vbmUKIGlmIHRlc3QgIiRHQ0MiID0geWVzIDsgdGhlbgotCWVjaG8gIiRhc19tZToyMDkzOiBjaGVja2luZyB2ZXJzaW9uIG9mICRDQyIgPiY1CisJZWNobyAiJGFzX21lOjIwODA6IGNoZWNraW5nIHZlcnNpb24gb2YgJENDIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgdmVyc2lvbiBvZiAkQ0MuLi4gJEVDSE9fQyIgPiY2Ci0JR0NDX1ZFUlNJT049ImAke0NDfSAtLXZlcnNpb258IHNlZCAtZSAnMiwkZCcgLWUgJ3MvXi4qKEdDQykgLy8nIC1lICdzL15bXjAtOS5dKi8vJyAtZSAncy9bXjAtOS5dLiovLydgIgorCUdDQ19WRVJTSU9OPSJgJHtDQ30gLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgc2VkIC1lICcyLCRkJyAtZSAncy9eLiooR0NDW14pXSopIC8vJyAtZSAncy9eLiooRGViaWFuW14pXSopIC8vJyAtZSAncy9eW14wLTkuXSovLycgLWUgJ3MvW14wLTkuXS4qLy8nYCIKIAl0ZXN0IC16ICIkR0NDX1ZFUlNJT04iICYmIEdDQ19WRVJTSU9OPXVua25vd24KLQllY2hvICIkYXNfbWU6MjA5NzogcmVzdWx0OiAkR0NDX1ZFUlNJT04iID4mNQorCWVjaG8gIiRhc19tZToyMDg0OiByZXN1bHQ6ICRHQ0NfVkVSU0lPTiIgPiY1CiBlY2hvICIke0VDSE9fVH0kR0NDX1ZFUlNJT04iID4mNgogZmkKIAotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotYWNfbWFpbl9yZXR1cm49cmV0dXJuCi1lY2hvICIkYXNfbWU6MjEwNzogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAkRUNIT19DIiA+JjYKLSMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi1pZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgotICBDUFA9Ci1maQotaWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLSAgaWYgdGVzdCAiJHthY19jdl9wcm9nX0NQUCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCi0gICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKLSAgICBkbwotICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQotZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi1kbwotICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCi0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAotICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAyMTI4ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSAgICAgICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgotX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTMzOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZToyMTM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIDoKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhlYWRlcnMKLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAyMTYyICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTY2OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZToyMTcyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi1jb250aW51ZQotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KLWFjX3ByZXByb2Nfb2s9OgotYnJlYWsKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotCi1kb25lCi0jIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1pZiAkYWNfcHJlcHJvY19vazsgdGhlbgotICBicmVhawotZmkKLQotICAgIGRvbmUKLSAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0KLWZpCi0gIENQUD0kYWNfY3ZfcHJvZ19DUFAKLWVsc2UKLSAgYWNfY3ZfcHJvZ19DUFA9JENQUAotZmkKLWVjaG8gIiRhc19tZToyMjA5OiByZXN1bHQ6ICRDUFAiID4mNQotZWNobyAiJHtFQ0hPX1R9JENQUCIgPiY2Ci1hY19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDIyMTkgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPGFzc2VydC5oPgotICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIyMjQ6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotICBybSAtZiBjb25mdGVzdC5lcjEKLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjIyMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotICBlbHNlCi0gICAgYWNfY3BwX2Vycj0KLSAgZmkKLWVsc2UKLSAgYWNfY3BwX2Vycj15ZXMKLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLSAgOgotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgotY29udGludWUKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotCi0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDIyNTMgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+Ci1fQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIyNTc6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotICBybSAtZiBjb25mdGVzdC5lcjEKLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjIyNjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotICBlbHNlCi0gICAgYWNfY3BwX2Vycj0KLSAgZmkKLWVsc2UKLSAgYWNfY3BwX2Vycj15ZXMKLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0gIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0KLWRvbmUKLSMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLWlmICRhY19wcmVwcm9jX29rOyB0aGVuCi0gIDoKLWVsc2UKLSAgeyB7IGVjaG8gIiRhc19tZToyMjkxOiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IEMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjayIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotZmkKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotYWNfbWFpbl9yZXR1cm49cmV0dXJuCi0KLWlmIHRlc3QgJGFjX2N2X2NfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCi0gICAgZWNobyAiJGFzX21lOjIzMDQ6IGNoZWNraW5nIHdoZXRoZXIgJENDIG5lZWRzIC10cmFkaXRpb25hbCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENDIG5lZWRzIC10cmFkaXRpb25hbC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgICBhY19wYXR0ZXJuPSJBdXRvY29uZi4qJ3gnIgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDIzMTEgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHNndHR5Lmg+Ci1pbnQgQXV0b2NvbmYgPSBUSU9DR0VUUDsKLV9BQ0VPRgotaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotICBlZ3JlcCAiJGFjX3BhdHRlcm4iID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD15ZXMKLWVsc2UKLSAgYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWw9bm8KLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotICBpZiB0ZXN0ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCA9IG5vOyB0aGVuCi0gICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAyMzI2ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDx0ZXJtaW8uaD4KLWludCBBdXRvY29uZiA9IFRDR0VUQTsKLV9BQ0VPRgotaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotICBlZ3JlcCAiJGFjX3BhdHRlcm4iID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD15ZXMKLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotICBmaQotZmkKLWVjaG8gIiRhc19tZToyMzM5OiByZXN1bHQ6ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwiID4mNgotICBpZiB0ZXN0ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCA9IHllczsgdGhlbgotICAgIENDPSIkQ0MgLXRyYWRpdGlvbmFsIgotICBmaQotZmkKLQotZWNobyAiJGFzX21lOjIzNDY6IGNoZWNraW5nIHdoZXRoZXIgJENDIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENDIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlci4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfcHJvZ19DQ19jX28rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLQotY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci1pbnQgbWFpbigpCi17Ci0JJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgwKTsKLX0KLUNGX0VPRgotIyBXZSBkbyB0aGUgdGVzdCB0d2ljZSBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIHJlZnVzZSB0byBvdmVyd3JpdGUgYW4KLSMgZXhpc3RpbmcgLm8gZmlsZSB3aXRoIC1vLCB0aG91Z2ggdGhleSB3aWxsIGNyZWF0ZSBvbmUuCi1hY190cnk9JyRDQyAtYyBjb25mdGVzdC4kYWNfZXh0IC1vIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ID4mNScKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIzNjI6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyMzY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgdGVzdCAtZiBjb25mdGVzdDIuJGFjX29iamV4dCAmJiB7IChldmFsIGVjaG8gIiRhc19tZToyMzY3OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MjM3MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OwotdGhlbgotICBldmFsIGNmX2N2X3Byb2dfQ0NfY19vPXllcwotZWxzZQotICBldmFsIGNmX2N2X3Byb2dfQ0NfY19vPW5vCi1maQotcm0gLWYgY29uZnRlc3QqCi0KLWZpCi1pZiB0ZXN0ICRjZl9jdl9wcm9nX0NDX2NfbyA9IHllczsgdGhlbgotICBlY2hvICIkYXNfbWU6MjM4MTogcmVzdWx0OiB5ZXMiID4mNQotZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjIzODQ6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotZWNobyAiJGFzX21lOjIzODg6IGNoZWNraW5nIGZvciBQT1NJWGl6ZWQgSVNDIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIFBPU0lYaXplZCBJU0MuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0IC1kIC9ldGMvY29uZi9rY29uZmlnLmQgJiYKLSAgIGdyZXAgX1BPU0lYX1ZFUlNJT04gL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCA+L2Rldi9udWxsIDI+JjEKLXRoZW4KLSAgZWNobyAiJGFzX21lOjIzOTM6IHJlc3VsdDogeWVzIiA+JjUKLWVjaG8gIiR7RUNIT19UfXllcyIgPiY2Ci0gIElTQz15ZXMgIyBJZiBsYXRlciB0ZXN0cyB3YW50IHRvIGNoZWNrIGZvciBJU0MuCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMQotRU9GCi0KLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICBDQz0iJENDIC1wb3NpeCIKLSAgZWxzZQotICAgIENDPSIkQ0MgLVhwIgotICBmaQotZWxzZQotICBlY2hvICIkYXNfbWU6MjQwNzogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0gIElTQz0KLWZpCi0KLWVjaG8gIiRhc19tZToyNDEyOiBjaGVja2luZyBmb3IgJHtDQy1jY30gb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJHtDQy1jY30gb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X2Fuc2lfY2Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLQotY2ZfY3ZfYW5zaV9jYz1ubwotY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi1jZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0jIERvbid0IHRyeSBnY2MgLWFuc2k7IHRoYXQgdHVybnMgb2ZmIHVzZWZ1bCBleHRlbnNpb25zIGFuZAotIyBicmVha3Mgc29tZSBzeXN0ZW1zJyBoZWFkZXIgZmlsZXMuCi0jIEFJWAkJCS1xbGFuZ2x2bD1hbnNpCi0jIFVsdHJpeCBhbmQgT1NGLzEJLXN0ZDEKLSMgSFAtVVgJCQktQWEgLURfSFBVWF9TT1VSQ0UKLSMgU1ZSNAkJCS1YYwotIyBVbml4V2FyZSAxLjIJCShjYW5ub3QgdXNlIC1YYywgc2luY2UgQU5TSS9QT1NJWCBjbGFzaGVzKQotZm9yIGNmX2FyZyBpbiAiLURDQ19IQVNfUFJPVE9TIiBcCi0JIiIgXAotCS1xbGFuZ2x2bD1hbnNpIFwKLQktc3RkMSBcCi0JLUFlIFwKLQkiLUFhIC1EX0hQVVhfU09VUkNFIiBcCi0JLVhjCi1kbwotCi1jZl9maXhfY3BwZmxhZ3M9bm8KLWNmX25ld19jZmxhZ3M9Ci1jZl9uZXdfY3BwZmxhZ3M9Ci1jZl9uZXdfZXh0cmFfY3BwZmxhZ3M9Ci0KLWZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl9hcmcKLWRvCi1jYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLW5vKQotCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4gIyh2aQotCS11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKSAjKHZpCi0JCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KLQkJLUQqKQotCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCi0KLQkJCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCi0KLQkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWZpCi0JCQk7OwotCQllc2FjCi0JCWNhc2UgIiRDUFBGTEFHUyIgaW4KLQkJKiRjZl9hZGRfY2ZsYWdzKSAjKHZpCi0JCQk7OwotCQkqKSAjKHZpCi0JCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQk7OwotCQllc2FjCi0JCTs7Ci0JKikKLQkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCTs7Ci0JZXNhYwotCTs7Ci15ZXMpCi0JY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCi0JY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCi0KLQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KLQk7OwotZXNhYwotZG9uZQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCi0KLQlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KLQotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKLWZpCi0KLWlmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgotCi0JRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgotZmkKLQotCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMjUwNiAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpZm5kZWYgQ0NfSEFTX1BST1RPUwotI2lmICFkZWZpbmVkKF9fU1REQ19fKSB8fCAoX19TVERDX18gIT0gMSkKLWNob2tlIG1lCi0jZW5kaWYKLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLQotCWludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOwotCXN0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9OwotCXN0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyNTI3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyNTMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjI1MzM6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyNTM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfYW5zaV9jYz0iJGNmX2FyZyI7IGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWRvbmUKLUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgotQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgotCi1maQotZWNobyAiJGFzX21lOjI1NDk6IHJlc3VsdDogJGNmX2N2X2Fuc2lfY2MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2Fuc2lfY2MiID4mNgotCi1pZiB0ZXN0ICIkY2ZfY3ZfYW5zaV9jYyIgIT0gIm5vIjsgdGhlbgotaWYgdGVzdCAiLiRjZl9jdl9hbnNpX2NjIiAhPSAiLi1EQ0NfSEFTX1BST1RPUyI7IHRoZW4KLQotY2ZfZml4X2NwcGZsYWdzPW5vCi1jZl9uZXdfY2ZsYWdzPQotY2ZfbmV3X2NwcGZsYWdzPQotY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQotCi1mb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfY3ZfYW5zaV9jYwotZG8KLWNhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgotbm8pCi0JY2FzZSAkY2ZfYWRkX2NmbGFncyBpbiAjKHZpCi0JLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpICModmkKLQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgotCQktRCopCi0JCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKLQotCQkJdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKLQotCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgotCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQkJCQljb250aW51ZQotCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgotCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQkJCQljb250aW51ZQotCQkJZmkKLQkJCTs7Ci0JCWVzYWMKLQkJY2FzZSAiJENQUEZMQUdTIiBpbgotCQkqJGNmX2FkZF9jZmxhZ3MpICModmkKLQkJCTs7Ci0JCSopICModmkKLQkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQkJCTs7Ci0JCWVzYWMKLQkJOzsKLQkqKQotCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQkJOzsKLQllc2FjCi0JOzsKLXllcykKLQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0KLQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKLQotCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIGNmX2ZpeF9jcHBmbGFncz1ubwotCTs7Ci1lc2FjCi1kb25lCi0KLWlmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KLQotCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKLWZpCi0KLWlmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgotCi0JQ1BQRkxBR1M9IiRjZl9uZXdfY3BwZmxhZ3MgJENQUEZMQUdTIgotZmkKLQotaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCi0KLQlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCi1maQotCi1lbHNlCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgQ0NfSEFTX1BST1RPUyAxCi1FT0YKLQotZmkKLWZpCi0KLWlmIHRlc3QgIiRjZl9jdl9hbnNpX2NjIiA9ICJubyI7IHRoZW4KLQl7IHsgZWNobyAiJGFzX21lOjI2MzI6IGVycm9yOiBZb3VyIGNvbXBpbGVyIGRvZXMgbm90IGFwcGVhciB0byByZWNvZ25pemUgcHJvdG90eXBlcy4KLVlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgY2hvaWNlczoKLQlhLiBhZGp1c3QgeW91ciBjb21waWxlciBvcHRpb25zCi0JYi4gZ2V0IGFuIHVwLXRvLWRhdGUgY29tcGlsZXIKLQljLiB1c2UgYSB3cmFwcGVyIHN1Y2ggYXMgdW5wcm90byIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBZb3VyIGNvbXBpbGVyIGRvZXMgbm90IGFwcGVhciB0byByZWNvZ25pemUgcHJvdG90eXBlcy4KLVlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgY2hvaWNlczoKLQlhLiBhZGp1c3QgeW91ciBjb21waWxlciBvcHRpb25zCi0JYi4gZ2V0IGFuIHVwLXRvLWRhdGUgY29tcGlsZXIKLQljLiB1c2UgYSB3cmFwcGVyIHN1Y2ggYXMgdW5wcm90byIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotZmkKLQotY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KLW9zMiopCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1abXQiCi0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9fU1RfTVRfRVJSTk9fXyIKLSAgICBDWFhGTEFHUz0iJENYWEZMQUdTIC1abXQiCi0gICAgIyBhdXRvY29uZidzIG1hY3JvIHNldHMgLVpleGUgYW5kIHN1ZmZpeCBib3RoLCB3aGljaCBjb25mbGljdDp3Ci0gICAgTERGTEFHUz0iJExERkxBR1MgLVptdCAtWmNydGRsbCIKLSAgICBhY19jdl9leGVleHQ9LmV4ZQotICAgIDs7Ci1lc2FjCi0KLVBST0dfRVhUPSIkRVhFRVhUIgotCi10ZXN0IC1uICIkUFJPR19FWFQiICYmIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgUFJPR19FWFQgIiRQUk9HX0VYVCIKLUVPRgotCi1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KLSAgTERDT05GSUc9OgotZWxzZQotY2FzZSAiJGNmX2N2X3N5c3RlbV9uYW1lIiBpbiAjKHZpCi1mcmVlYnNkKikgIyh2aQotICB0ZXN0IC16ICIkTERDT05GSUciICYmIExEQ09ORklHPSIvc2Jpbi9sZGNvbmZpZyAtUiIKLSAgOzsKLSopIExEUEFUSD0kUEFUSDovc2JpbjovdXNyL3NiaW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJsZGNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgbGRjb25maWc7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZToyNjcyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfTERDT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2FzZSAkTERDT05GSUcgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfTERDT05GSUc9IiRMRENPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkTERQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCI7IHRoZW4KLSAgIGFjX2N2X3BhdGhfTERDT05GSUc9IiRhY19kaXIvJGFjX3dvcmQiCi0gICBlY2hvICIkYXNfbWU6MjY4OTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci0gICBicmVhawotZmkKLWRvbmUKLQotICA7OwotZXNhYwotZmkKLUxEQ09ORklHPSRhY19jdl9wYXRoX0xEQ09ORklHCi0KLWlmIHRlc3QgLW4gIiRMRENPTkZJRyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjI3MDA6IHJlc3VsdDogJExEQ09ORklHIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRMRENPTkZJRyIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZToyNzAzOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgOzsKLWVzYWMKLWZpCi0KLWVjaG8gIiRhc19tZToyNzExOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBlbnN1cmUgYm9vbCBpcyBjb25zaXN0ZW50IHdpdGggQysrIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gZW5zdXJlIGJvb2wgaXMgY29uc2lzdGVudCB3aXRoIEMrKy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jeHggb3IgLS13aXRob3V0LWN4eCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfY3h4K3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2N4eCIKLSAgY2Zfd2l0aF9jeHg9JHdpdGh2YWwKLWVsc2UKLSAgY2Zfd2l0aF9jeHg9eWVzCi1maTsKLWVjaG8gIiRhc19tZToyNzIxOiByZXN1bHQ6ICRjZl93aXRoX2N4eCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2Zfd2l0aF9jeHgiID4mNgotaWYgdGVzdCAiWCRjZl93aXRoX2N4eCIgPSBYbm8gOyB0aGVuCi0JQ1hYPSIiCi0JR1hYPSIiCi1lbHNlCi0JIyB3aXRoIGF1dG9jb25mIDIuMTMsIHdlIGNhbiBjaGFuZ2UgdGhlIGVycm9yIHRvIGEgd2FybmluZzoKLQkJYWNfZXh0PWNjCi1hY19jcHA9JyRDWFhDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENYWCAtYyAkQ1hYRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENYWEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQotYWNfbWFpbl9yZXR1cm49cmV0dXJuCi1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gIGZvciBhY19wcm9nIGluICRDQ0MgZysrIGMrKyBncHAgYUNDIENDIGN4eCBjYysrIGNsIEZDQyBLQ0MgUkNDIHhsQ19yIHhsQwotICBkbwotICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6MjczOTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NYWCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICBhY19jdl9wcm9nX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX0NYWD0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi1lY2hvICIkYXNfbWU6Mjc1NDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi1maQotZmkKLUNYWD0kYWNfY3ZfcHJvZ19DWFgKLWlmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCi0gIGVjaG8gIiRhc19tZToyNzYyOiByZXN1bHQ6ICRDWFgiID4mNQotZWNobyAiJHtFQ0hPX1R9JENYWCIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZToyNzY1OiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhawotICBkb25lCi1maQotaWYgdGVzdCAteiAiJENYWCI7IHRoZW4KLSAgYWNfY3RfQ1hYPSRDWFgKLSAgZm9yIGFjX3Byb2cgaW4gJENDQyBnKysgYysrIGdwcCBhQ0MgQ0MgY3h4IGNjKysgY2wgRkNDIEtDQyBSQ0MgeGxDX3IgeGxDCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjI3Nzg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DWFgrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DWFg9IiRhY19jdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCi1hY19kdW1teT0iJFBBVEgiCi1mb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgSUZTPSRhY19zYXZlX0lGUwotICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQotYWNfY3ZfcHJvZ19hY19jdF9DWFg9IiRhY19wcm9nIgotZWNobyAiJGFzX21lOjI3OTM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotZmkKLWZpCi1hY19jdF9DWFg9JGFjX2N2X3Byb2dfYWNfY3RfQ1hYCi1pZiB0ZXN0IC1uICIkYWNfY3RfQ1hYIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MjgwMTogcmVzdWx0OiAkYWNfY3RfQ1hYIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DWFgiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6MjgwNDogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi0gIHRlc3QgLW4gIiRhY19jdF9DWFgiICYmIGJyZWFrCi1kb25lCi10ZXN0IC1uICIkYWNfY3RfQ1hYIiB8fCBhY19jdF9DWFg9ImcrKyIKLQotICBDWFg9JGFjX2N0X0NYWAotZmkKLQotIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgotZWNobyAiJGFzX21lOjI4MTY6IiBcCi0gICAgICJjaGVja2luZyBmb3IgQysrIGNvbXBpbGVyIHZlcnNpb24iID4mNQotYWNfY29tcGlsZXI9YHNldCBYICRhY19jb21waWxlOyBlY2hvICQyYAoteyAoZXZhbCBlY2hvICIkYXNfbWU6MjgxOTogXCIkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjI4MjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfQoteyAoZXZhbCBlY2hvICIkYXNfbWU6MjgyNDogXCIkYWNfY29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyODI3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KLXsgKGV2YWwgZWNobyAiJGFzX21lOjI4Mjk6IFwiJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MjgzMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9Ci0KLWVjaG8gIiRhc19tZToyODM1OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMrKyBjb21waWxlciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQysrIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9jeHhfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMjg0MSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotI2lmbmRlZiBfX0dOVUNfXwotICAgICAgIGNob2tlIG1lCi0jZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyODU2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyODU5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjI4NjI6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyODY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY29tcGlsZXJfZ251PXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jb21waWxlcl9nbnU9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWFjX2N2X2N4eF9jb21waWxlcl9nbnU9JGFjX2NvbXBpbGVyX2dudQotCi1maQotZWNobyAiJGFzX21lOjI4Nzc6IHJlc3VsdDogJGFjX2N2X2N4eF9jb21waWxlcl9nbnUiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2N4eF9jb21waWxlcl9nbnUiID4mNgotR1hYPWB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXMgJiYgZWNobyB5ZXNgCi1hY190ZXN0X0NYWEZMQUdTPSR7Q1hYRkxBR1Mrc2V0fQotYWNfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSItZyIKLWVjaG8gIiRhc19tZToyODgzOiBjaGVja2luZyB3aGV0aGVyICRDWFggYWNjZXB0cyAtZyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENYWCBhY2NlcHRzIC1nLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX2N4eF9nK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMjg4OSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjI5MDE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjI5MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjkwNzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjI5MTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9wcm9nX2N4eF9nPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl9wcm9nX2N4eF9nPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjI5MjA6IHJlc3VsdDogJGFjX2N2X3Byb2dfY3h4X2ciID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY3h4X2ciID4mNgotaWYgdGVzdCAiJGFjX3Rlc3RfQ1hYRkxBR1MiID0gc2V0OyB0aGVuCi0gIENYWEZMQUdTPSRhY19zYXZlX0NYWEZMQUdTCi1lbGlmIHRlc3QgJGFjX2N2X3Byb2dfY3h4X2cgPSB5ZXM7IHRoZW4KLSAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICBDWFhGTEFHUz0iLWcgLU8yIgotICBlbHNlCi0gICAgQ1hYRkxBR1M9Ii1nIgotICBmaQotZWxzZQotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgIENYWEZMQUdTPSItTzIiCi0gIGVsc2UKLSAgICBDWFhGTEFHUz0KLSAgZmkKLWZpCi1mb3IgYWNfZGVjbGFyYXRpb24gaW4gXAotICAgJydcCi0gICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAotICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCkgdGhyb3cgKCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKLSAgICdleHRlcm4gIkMiIHZvaWQgc3RkOjpleGl0IChpbnQpOyB1c2luZyBzdGQ6OmV4aXQ7JyBcCi0gICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCi0gICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCk7JyBcCi0gICAndm9pZCBleGl0IChpbnQpOycKLWRvCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMjk0NyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0kYWNfZGVjbGFyYXRpb24KLWludAotbWFpbiAoKQotewotZXhpdCAoNDIpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToyOTYwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyOTYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjI5NjY6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToyOTY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgOgotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jb250aW51ZQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDI5NzkgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotJGFjX2RlY2xhcmF0aW9uCi1pbnQKLW1haW4gKCkKLXsKLWV4aXQgKDQyKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjk5MTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Mjk5NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToyOTk3OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MzAwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWRvbmUKLXJtIC1mIGNvbmZ0ZXN0KgotaWYgdGVzdCAtbiAiJGFjX2RlY2xhcmF0aW9uIjsgdGhlbgotICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAotICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29uZmRlZnMuaAotICBlY2hvICcjZW5kaWYnICAgICAgICAgICAgID4+Y29uZmRlZnMuaAotZmkKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotYWNfbWFpbl9yZXR1cm49cmV0dXJuCi0KLQkJIyBhdXRvY29uZiAyLjV4IHJlbW92ZWQgdGhlIGVycm9yIC0gYnkgaGFyZGNvZGluZyBpdCB0byBnKysuCi0JaWYgdGVzdCAiJENYWCIgPSAiZysrIiA7IHRoZW4KLQkJIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjMwMjc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9DWFgrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2FzZSAkQ1hYIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiOyB0aGVuCi0gICBhY19jdl9wYXRoX0NYWD0iJGFjX2Rpci8kYWNfd29yZCIKLSAgIGVjaG8gIiRhc19tZTozMDQ0OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLSAgIGJyZWFrCi1maQotZG9uZQotCi0gIDs7Ci1lc2FjCi1maQotQ1hYPSRhY19jdl9wYXRoX0NYWAotCi1pZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzA1NTogcmVzdWx0OiAkQ1hYIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRDWFgiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6MzA1ODogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi0JZmkKLQlpZiB0ZXN0ICIkQ1hYIiA9ICJnKysiIDsgdGhlbgotCQl7IGVjaG8gIiRhc19tZTozMDY0OiBXQVJOSU5HOiBpZ25vcmluZyBoYXJkY29kZWQgZysrIiA+JjUKLWVjaG8gIiRhc19tZTogV0FSTklORzogaWdub3JpbmcgaGFyZGNvZGVkIGcrKyIgPiYyO30KLQkJY2Zfd2l0aF9jeHg9bm87IENYWD0iIjsgR1hYPSIiOwotCWZpCi1maQotCi1HWFhfVkVSU0lPTj1ub25lCi1pZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotCWVjaG8gIiRhc19tZTozMDcyOiBjaGVja2luZyB2ZXJzaW9uIG9mIGcrKyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHZlcnNpb24gb2YgZysrLi4uICRFQ0hPX0MiID4mNgotCUdYWF9WRVJTSU9OPSJgJHtDWFgtZysrfSAtLXZlcnNpb258IHNlZCAtZSAnMiwkZCcgLWUgJ3MvXi4qKEdDQykgLy8nIC1lICdzL15bXjAtOS5dKi8vJyAtZSAncy9bXjAtOS5dLiovLydgIgotCXRlc3QgLXogIiRHWFhfVkVSU0lPTiIgJiYgR1hYX1ZFUlNJT049dW5rbm93bgotCWVjaG8gIiRhc19tZTozMDc2OiByZXN1bHQ6ICRHWFhfVkVSU0lPTiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kR1hYX1ZFUlNJT04iID4mNgotZmkKLQotY2FzZSAkR1hYX1ZFUlNJT04gaW4KLTEqfDIuWzAtNl0qKQotCSMgR1hYPSIiOyBDWFg9IiI7IGFjX2N2X3Byb2dfZ3h4PW5vCi0JIyBjZl9jeHhfbGlicmFyeT1ubwotCXsgZWNobyAiJGFzX21lOjMwODQ6IFdBUk5JTkc6IHRlbXBsYXRlcyBkbyBub3Qgd29yayIgPiY1Ci1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHRlbXBsYXRlcyBkbyBub3Qgd29yayIgPiYyO30KLQk7OwotZXNhYwotCi1lY2hvICIkYXNfbWU6MzA4OTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgQysrIGJpbmRpbmcgYW5kIGRlbW8iID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBDKysgYmluZGluZyBhbmQgZGVtby4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jeHgtYmluZGluZyBvciAtLXdpdGhvdXQtY3h4LWJpbmRpbmcgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2N4eF9iaW5kaW5nK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2N4eF9iaW5kaW5nIgotICBjZl93aXRoX2N4eF9iaW5kaW5nPSR3aXRodmFsCi1lbHNlCi0gIGNmX3dpdGhfY3h4X2JpbmRpbmc9JGNmX3dpdGhfY3h4Ci1maTsKLWVjaG8gIiRhc19tZTozMDk5OiByZXN1bHQ6ICRjZl93aXRoX2N4eF9iaW5kaW5nIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl93aXRoX2N4eF9iaW5kaW5nIiA+JjYKLQotZWNobyAiJGFzX21lOjMxMDI6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggQWRhOTUiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIEFkYTk1Li4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYSBvciAtLXdpdGhvdXQtYWRhIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9hZGErc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfYWRhIgotICBjZl93aXRoX2FkYT0kd2l0aHZhbAotZWxzZQotICBjZl93aXRoX2FkYT15ZXMKLWZpOwotZWNobyAiJGFzX21lOjMxMTI6IHJlc3VsdDogJGNmX3dpdGhfYWRhIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl93aXRoX2FkYSIgPiY2Ci0KLWVjaG8gIiRhc19tZTozMTE1OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBwcm9ncmFtcyBzdWNoIGFzIHRpYyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHByb2dyYW1zIHN1Y2ggYXMgdGljLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXByb2dzIG9yIC0td2l0aG91dC1wcm9ncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfcHJvZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfcHJvZ3MiCi0gIGNmX3dpdGhfcHJvZ3M9JHdpdGh2YWwKLWVsc2UKLSAgY2Zfd2l0aF9wcm9ncz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjMxMjU6IHJlc3VsdDogJGNmX3dpdGhfcHJvZ3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX3dpdGhfcHJvZ3MiID4mNgotCi1lY2hvICIkYXNfbWU6MzEyODogY2hlY2tpbmcgaWYgeW91IHdpc2ggdG8gaW5zdGFsbCBjdXJzZXMuaCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgY3Vyc2VzLmguLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY3Vyc2VzLWggb3IgLS13aXRob3V0LWN1cnNlcy1oIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9jdXJzZXNfaCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9jdXJzZXNfaCIKLSAgd2l0aF9jdXJzZXNfaD0kd2l0aHZhbAotZWxzZQotICB3aXRoX2N1cnNlc19oPXllcwotZmk7Ci1lY2hvICIkYXNfbWU6MzEzODogcmVzdWx0OiAkd2l0aF9jdXJzZXNfaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9jdXJzZXNfaCIgPiY2Ci0KLW1vZHVsZXNfdG9fYnVpbGQ9Im5jdXJzZXMiCi1pZiB0ZXN0ICJYJGNmX3dpdGhfcHJvZ3MiICE9IFhubyA7IHRoZW4KLW1vZHVsZXNfdG9fYnVpbGQ9IiRtb2R1bGVzX3RvX2J1aWxkIHByb2dzIHRhY2siCi1maQotbW9kdWxlc190b19idWlsZD0iJG1vZHVsZXNfdG9fYnVpbGQgcGFuZWwgbWVudSBmb3JtIgotCi10ZXN0ICIkcHJvZ3JhbV9wcmVmaXgiICE9IE5PTkUgJiYKLSAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyxeLCRwcm9ncmFtX3ByZWZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCi0jIFVzZSBhIGRvdWJsZSAkIHNvIG1ha2UgaWdub3JlcyBpdC4KLXRlc3QgIiRwcm9ncmFtX3N1ZmZpeCIgIT0gTk9ORSAmJgotICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzLFwkLCRwcm9ncmFtX3N1ZmZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCi0jIERvdWJsZSBhbnkgXCBvciAkLiAgZWNobyBtaWdodCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCi0jIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLgotY2F0IDw8XF9BQ0VPRiA+Y29uZnRlc3Quc2VkCi1zL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vCi1fQUNFT0YKLXByb2dyYW1fdHJhbnNmb3JtX25hbWU9YGVjaG8gJHByb2dyYW1fdHJhbnNmb3JtX25hbWUgfCBzZWQgLWYgY29uZnRlc3Quc2VkYAotcm0gY29uZnRlc3Quc2VkCi0KLWZvciBhY19wcm9nIGluIG1hd2sgZ2F3ayBuYXdrIGF3awotZG8KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZTozMTY0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVdLK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRBV0siOyB0aGVuCi0gIGFjX2N2X3Byb2dfQVdLPSIkQVdLIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfQVdLPSIkYWNfcHJvZyIKLWVjaG8gIiRhc19tZTozMTc5OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLWZpCi1maQotQVdLPSRhY19jdl9wcm9nX0FXSwotaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjMxODc6IHJlc3VsdDogJEFXSyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQVdLIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjMxOTA6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotICB0ZXN0IC1uICIkQVdLIiAmJiBicmVhawotZG9uZQotCi10ZXN0IC16ICIkQVdLIiAmJiB7IHsgZWNobyAiJGFzX21lOjMxOTc6IGVycm9yOiBObyBhd2sgcHJvZ3JhbSBmb3VuZCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBObyBhd2sgcHJvZ3JhbSBmb3VuZCIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotCi1lY2hvICIkYXNfbWU6MzIwMTogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX2VncmVwK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIGVjaG8gYSB8IChncmVwIC1FICcoYXxiKScpID4vZGV2L251bGwgMj4mMQotICAgIHRoZW4gYWNfY3ZfcHJvZ19lZ3JlcD0nZ3JlcCAtRScKLSAgICBlbHNlIGFjX2N2X3Byb2dfZWdyZXA9J2VncmVwJwotICAgIGZpCi1maQotZWNobyAiJGFzX21lOjMyMTE6IHJlc3VsdDogJGFjX2N2X3Byb2dfZWdyZXAiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfZWdyZXAiID4mNgotIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCi0KLXRlc3QgLXogIiRFR1JFUCIgJiYgeyB7IGVjaG8gIiRhc19tZTozMjE1OiBlcnJvcjogTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBObyBlZ3JlcCBwcm9ncmFtIGZvdW5kIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0KLSMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAotIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCi0jIGluY29tcGF0aWJsZSB2ZXJzaW9uczoKLSMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsCi0jIFN1bk9TIC91c3IvZXRjL2luc3RhbGwKLSMgSVJJWCAvc2Jpbi9pbnN0YWxsCi0jIEFJWCAvYmluL2luc3RhbGwKLSMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0YWxscyBib290YmxvY2tzIG9uIGZsb3BweSBkaXNjcwotIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKLSMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncwotIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgotIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCi1lY2hvICIkYXNfbWU6MzIzMTogY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gICAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbwotICAgIElGUz0kYWNfc2F2ZV9JRlMKLSAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KLSAgICBjYXNlICRhY19kaXIvIGluCi0gICAgLyB8IC4vIHwgLi8vIHwgL2NDLyogXAotICAgIHwgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNyL2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogXAotICAgIHwgL3Vzci91Y2IvKiApIDs7Ci0gICAgKikKLSAgICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuCi0gICAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QKLSAgICAgICMgYnkgZGVmYXVsdC4KLSAgICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KLSAgICAgICAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfcHJvZyI7IHRoZW4KLQkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0gICAgICAgICAgICBncmVwIGRzcG1zZyAiJGFjX2Rpci8kYWNfcHJvZyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KLQkgICAgOgotCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgotCSAgICBncmVwIHB3cGx1cyAiJGFjX2Rpci8kYWNfcHJvZyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgotCSAgICA6Ci0JICBlbHNlCi0JICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFjX2Rpci8kYWNfcHJvZyAtYyIKLQkgICAgYnJlYWsgMgotCSAgZmkKLQlmaQotICAgICAgZG9uZQotICAgICAgOzsKLSAgICBlc2FjCi0gIGRvbmUKLQotZmkKLSAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKLSAgZWxzZQotICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIFdlIGRvbid0IGNhY2hlIGEKLSAgICAjIHBhdGggZm9yIElOU1RBTEwgd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKLSAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcwotICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUuCi0gICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAotICBmaQotZmkKLWVjaG8gIiRhc19tZTozMjgwOiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRJTlNUQUxMIiA+JjYKLQotIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBpbiAke3Zhci12YWx9LgotIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KLXRlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScKLQotdGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKLQotdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKLQotY2FzZSAkSU5TVEFMTCBpbgotLyopCi0gIDs7Ci0qKQotICBjZl9kaXI9YGVjaG8gJElOU1RBTEwgfCBzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLSAgdGVzdCAteiAiJGNmX2RpciIgJiYgY2ZfZGlyPS4KLSAgSU5TVEFMTD1gY2QgJGNmX2RpciAmJiBwd2RgL2BlY2hvICRJTlNUQUxMIHwgc2VkIC1lICdzJV4uKi8lJSdgCi0gIDs7Ci1lc2FjCi0KLWZvciBhY19wcm9nIGluIHRkbGludCBsaW50IGFsaW50Ci1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjMzMDU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MSU5UK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRMSU5UIjsgdGhlbgotICBhY19jdl9wcm9nX0xJTlQ9IiRMSU5UIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfTElOVD0iJGFjX3Byb2ciCi1lY2hvICIkYXNfbWU6MzMyMDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi1maQotZmkKLUxJTlQ9JGFjX2N2X3Byb2dfTElOVAotaWYgdGVzdCAtbiAiJExJTlQiOyB0aGVuCi0gIGVjaG8gIiRhc19tZTozMzI4OiByZXN1bHQ6ICRMSU5UIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRMSU5UIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjMzMzE6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotICB0ZXN0IC1uICIkTElOVCIgJiYgYnJlYWsKLWRvbmUKLQotZWNobyAiJGFzX21lOjMzMzg6IGNoZWNraW5nIHdoZXRoZXIgbG4gLXMgd29ya3MiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICRFQ0hPX0MiID4mNgotTE5fUz0kYXNfbG5fcwotaWYgdGVzdCAiJExOX1MiID0gImxuIC1zIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzM0MjogcmVzdWx0OiB5ZXMiID4mNQotZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjMzNDU6IHJlc3VsdDogbm8sIHVzaW5nICRMTl9TIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vLCB1c2luZyAkTE5fUyIgPiY2Ci1maQotCi1lY2hvICIkYXNfbWU6MzM0OTogY2hlY2tpbmcgZm9yIGxvbmcgZmlsZSBuYW1lcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsb25nIGZpbGUgbmFtZXMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz15ZXMKLSMgVGVzdCBmb3IgbG9uZyBmaWxlIG5hbWVzIGluIGFsbCB0aGUgcGxhY2VzIHdlIGtub3cgbWlnaHQgbWF0dGVyOgotIyAgICAgIC4JCXRoZSBjdXJyZW50IGRpcmVjdG9yeSwgd2hlcmUgYnVpbGRpbmcgd2lsbCBoYXBwZW4KLSMgICAgICAkcHJlZml4L2xpYgl3aGVyZSB3ZSB3aWxsIGJlIGluc3RhbGxpbmcgdGhpbmdzCi0jICAgICAgJGV4ZWNfcHJlZml4L2xpYglsaWtld2lzZQotIyBldmFsIGl0IHRvIGV4cGFuZCBleGVjX3ByZWZpeC4KLSMgICAgICAkVE1QRElSCQlpZiBzZXQsIHdoZXJlIGl0IG1pZ2h0IHdhbnQgdG8gd3JpdGUgdGVtcG9yYXJ5IGZpbGVzCi0jIGlmICRUTVBESVIgaXMgbm90IHNldDoKLSMgICAgICAvdG1wCQl3aGVyZSBpdCBtaWdodCB3YW50IHRvIHdyaXRlIHRlbXBvcmFyeSBmaWxlcwotIyAgICAgIC92YXIvdG1wCQlsaWtld2lzZQotIyAgICAgIC91c3IvdG1wCQlsaWtld2lzZQotaWYgdGVzdCAtbiAiJFRNUERJUiIgJiYgdGVzdCAtZCAiJFRNUERJUiIgJiYgdGVzdCAtdyAiJFRNUERJUiI7IHRoZW4KLSAgYWNfdG1wZGlycz0kVE1QRElSCi1lbHNlCi0gIGFjX3RtcGRpcnM9Jy90bXAgL3Zhci90bXAgL3Vzci90bXAnCi1maQotZm9yIGFjX2RpciBpbiAgLiAkYWNfdG1wZGlycyBgZXZhbCBlY2hvICRwcmVmaXgvbGliICRleGVjX3ByZWZpeC9saWJgIDsgZG8KLSAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCi0gIHRlc3QgLXcgJGFjX2RpciB8fCBjb250aW51ZSAjIEl0IGlzIGxlc3MgY29uZnVzaW5nIHRvIG5vdCBlY2hvIGFueXRoaW5nIGhlcmUuCi0gIGFjX3hkaXI9JGFjX2Rpci9jZiQkCi0gICh1bWFzayAwNzcgJiYgbWtkaXIgJGFjX3hkaXIgMj4vZGV2L251bGwpIHx8IGNvbnRpbnVlCi0gIGFjX3RmMT0kYWNfeGRpci9jb25mdGVzdDkwMTIzNDUKLSAgYWNfdGYyPSRhY194ZGlyL2NvbmZ0ZXN0OTAxMjM0NgotICAoZWNobyAxID4kYWNfdGYxKSAyPi9kZXYvbnVsbAotICAoZWNobyAyID4kYWNfdGYyKSAyPi9kZXYvbnVsbAotICBhY192YWw9YGNhdCAkYWNfdGYxIDI+L2Rldi9udWxsYAotICBpZiB0ZXN0ICEgLWYgJGFjX3RmMSB8fCB0ZXN0ICIkYWNfdmFsIiAhPSAxOyB0aGVuCi0gICAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz1ubwotICAgIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAotICAgIGJyZWFrCi0gIGZpCi0gIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAotZG9uZQotZmkKLWVjaG8gIiRhc19tZTozMzg4OiByZXN1bHQ6ICRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjYKLWlmIHRlc3QgJGFjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMgPSB5ZXM7IHRoZW4KLQotY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9MT05HX0ZJTEVfTkFNRVMgMQotRU9GCi0KLWZpCi0KLWVjaG8gIiRhc19tZTozMzk4OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgYXNzdW1lIG1peGVkLWNhc2UgZmlsZW5hbWVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lcy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1peGVkLWNhc2Ugb3IgLS1kaXNhYmxlLW1peGVkLWNhc2Ugd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfbWl4ZWRfY2FzZStzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfbWl4ZWRfY2FzZSIKLSAgZW5hYmxlX21peGVkY2FzZT0kZW5hYmxldmFsCi1lbHNlCi0gIGVuYWJsZV9taXhlZGNhc2U9YXV0bwotZmk7Ci1lY2hvICIkYXNfbWU6MzQwODogcmVzdWx0OiAkZW5hYmxlX21peGVkY2FzZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kZW5hYmxlX21peGVkY2FzZSIgPiY2Ci1pZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAiYXV0byIgOyB0aGVuCi0KLWVjaG8gIiRhc19tZTozNDEyOiBjaGVja2luZyBpZiBmaWxlc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZmlsZXN5c3RlbSBzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcy4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfbWl4ZWRjYXNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgotCWNhc2UgJHRhcmdldF9hbGlhcyBpbiAjKHZpCi0JKi1vczItZW14KnwqLW1zZG9zZGpncHAqfCotY3lnd2luKnwqLW1pbmd3MzIqfCotdXdpbiopICModmkKLQkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCi0JCTs7Ci0JKikKLQkJY2ZfY3ZfbWl4ZWRjYXNlPXllcwotCQk7OwotCWVzYWMKLWVsc2UKLQlybSAtZiBjb25mdGVzdCBDT05GVEVTVAotCWVjaG8gdGVzdCA+Y29uZnRlc3QKLQlpZiB0ZXN0IC1mIENPTkZURVNUIDsgdGhlbgotCQljZl9jdl9taXhlZGNhc2U9bm8KLQllbHNlCi0JCWNmX2N2X21peGVkY2FzZT15ZXMKLQlmaQotCXJtIC1mIGNvbmZ0ZXN0IENPTkZURVNUCi1maQotCi1maQotZWNobyAiJGFzX21lOjM0Mzk6IHJlc3VsdDogJGNmX2N2X21peGVkY2FzZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfbWl4ZWRjYXNlIiA+JjYKLXRlc3QgIiRjZl9jdl9taXhlZGNhc2UiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIE1JWEVEQ0FTRV9GSUxFTkFNRVMgMQotRU9GCi0KLWVsc2UKLSAgICBjZl9jdl9taXhlZGNhc2U9JGVuYWJsZV9taXhlZGNhc2UKLSAgICBpZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAieWVzIiA7IHRoZW4KLSAgICAgICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgTUlYRURDQVNFX0ZJTEVOQU1FUyAxCi1FT0YKLQotICAgIGZpCi1maQotCi0jIGRvIHRoaXMgYWZ0ZXIgbWl4ZWQtY2FzZSBvcHRpb24gKHRhZ3MvVEFHUyBpcyBub3QgYXMgaW1wb3J0YW50IGFzIHRpYykuCi1lY2hvICIkYXNfbWU6MzQ1NjogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0uLi4gJEVDSE9fQyIgPiY2Ci1zZXQgZHVtbXkgJHtNQUtFLW1ha2V9OyBhY19tYWtlPWBlY2hvICIkMiIgfCBzZWQgJ3ksLi8rLSxfX3BfLCdgCi1pZiBldmFsICJ0ZXN0IFwiXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0K3NldH1cIiA9IHNldCI7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XEVPRgotYWxsOgotCUBlY2hvICdhY19tYWtldGVtcD0iJHtNQUtFfSInCi1FT0YKLSMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgotZXZhbCBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGwgfCBncmVwIHRlbXA9YAotaWYgdGVzdCAtbiAiJGFjX21ha2V0ZW1wIjsgdGhlbgotICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXMKLWVsc2UKLSAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC5tYWtlCi1maQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfcHJvZ19tYWtlXycke2FjX21ha2V9X3NldGBcIiA9IHllcyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjM0NzY6IHJlc3VsdDogeWVzIiA+JjUKLWVjaG8gIiR7RUNIT19UfXllcyIgPiY2Ci0gIFNFVF9NQUtFPQotZWxzZQotICBlY2hvICIkYXNfbWU6MzQ4MDogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0gIFNFVF9NQUtFPSJNQUtFPSR7TUFLRS1tYWtlfSIKLWZpCi0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY3RhZ3MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGN0YWdzOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6MzQ4NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkTUFLRV9MT1dFUl9UQUdTIjsgdGhlbgotICBhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUz0iJE1BS0VfTE9XRVJfVEFHUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUz0ieWVzIgotZWNobyAiJGFzX21lOjM1MDI6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1MiICYmIGFjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTPSJubyIKLWZpCi1maQotTUFLRV9MT1dFUl9UQUdTPSRhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUwotaWYgdGVzdCAtbiAiJE1BS0VfTE9XRVJfVEFHUyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjM1MTE6IHJlc3VsdDogJE1BS0VfTE9XRVJfVEFHUyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kTUFLRV9MT1dFUl9UQUdTIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjM1MTQ6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotaWYgdGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgOyB0aGVuCi0JIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJldGFncyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgZXRhZ3M7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZTozNTIxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRNQUtFX1VQUEVSX1RBR1MiOyB0aGVuCi0gIGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTPSIkTUFLRV9VUFBFUl9UQUdTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTPSJ5ZXMiCi1lY2hvICIkYXNfbWU6MzUzNjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUyIgJiYgYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1M9Im5vIgotZmkKLWZpCi1NQUtFX1VQUEVSX1RBR1M9JGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTCi1pZiB0ZXN0IC1uICIkTUFLRV9VUFBFUl9UQUdTIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzU0NTogcmVzdWx0OiAkTUFLRV9VUFBFUl9UQUdTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRNQUtFX1VQUEVSX1RBR1MiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6MzU0ODogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi1lbHNlCi0JTUFLRV9VUFBFUl9UQUdTPW5vCi1maQotCi1pZiB0ZXN0ICIkTUFLRV9VUFBFUl9UQUdTIiA9IHllcyA7IHRoZW4KLQlNQUtFX1VQUEVSX1RBR1M9Ci1lbHNlCi0JTUFLRV9VUFBFUl9UQUdTPSIjIgotZmkKLQotaWYgdGVzdCAiJE1BS0VfTE9XRVJfVEFHUyIgPSB5ZXMgOyB0aGVuCi0JTUFLRV9MT1dFUl9UQUdTPQotZWxzZQotCU1BS0VfTE9XRVJfVEFHUz0iIyIKLWZpCi0KLWVjaG8gIiRhc19tZTozNTY4OiBjaGVja2luZyBmb3IgbWFrZWZsYWdzIHZhcmlhYmxlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1ha2VmbGFncyB2YXJpYWJsZS4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfbWFrZWZsYWdzK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLQljZl9jdl9tYWtlZmxhZ3M9JycKLQlmb3IgY2Zfb3B0aW9uIGluICctJHtNQUtFRkxBR1N9JyAnJHtNRkxBR1N9JwotCWRvCi0JCWNhdCA+Y2ZfbWFrZWZsYWdzLnRtcCA8PENGX0VPRgotU0hFTEwgPSAvYmluL3NoCi1hbGwgOgotCUAgZWNobyAnLiRjZl9vcHRpb24nCi1DRl9FT0YKLQkJY2ZfcmVzdWx0PWAke01BS0UtbWFrZX0gLWsgLWYgY2ZfbWFrZWZsYWdzLnRtcCAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncyxbIAldKiQsLCdgCi0JCWNhc2UgIiRjZl9yZXN1bHQiIGluCi0JCS4qaykKLQkJCWNmX3Jlc3VsdD1gJHtNQUtFLW1ha2V9IC1rIC1mIGNmX21ha2VmbGFncy50bXAgQ0M9Y2MgMj4vZGV2L251bGxgCi0JCQljYXNlICIkY2ZfcmVzdWx0IiBpbgotCQkJLipDQz0qKQljZl9jdl9tYWtlZmxhZ3M9Ci0JCQkJOzsKLQkJCSopCWNmX2N2X21ha2VmbGFncz0kY2Zfb3B0aW9uCi0JCQkJOzsKLQkJCWVzYWMKLQkJCWJyZWFrCi0JCQk7OwotCQkuLSkJOzsKLQkJKikJZWNobyAiZ2l2ZW4gb3B0aW9uIFwiJGNmX29wdGlvblwiLCBubyBtYXRjaCBcIiRjZl9yZXN1bHRcIiIKLQkJCTs7Ci0JCWVzYWMKLQlkb25lCi0Jcm0gLWYgY2ZfbWFrZWZsYWdzLnRtcAotCi1maQotZWNobyAiJGFzX21lOjM2MDI6IHJlc3VsdDogJGNmX2N2X21ha2VmbGFncyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfbWFrZWZsYWdzIiA+JjYKLQotaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjM2MDg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCi1hY19kdW1teT0iJFBBVEgiCi1mb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgSUZTPSRhY19zYXZlX0lGUwotICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQotYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIgotZWNobyAiJGFzX21lOjM2MjM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotZmkKLWZpCi1SQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCCi1pZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzYzMTogcmVzdWx0OiAkUkFOTElCIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRSQU5MSUIiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6MzYzNDogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgotICBhY19jdF9SQU5MSUI9JFJBTkxJQgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6MzY0MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgotICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgotZWNobyAiJGFzX21lOjM2NTg6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIiICYmIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSInOiciCi1maQotZmkKLWFjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKLWlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCi0gIGVjaG8gIiRhc19tZTozNjY3OiByZXN1bHQ6ICRhY19jdF9SQU5MSUIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1JBTkxJQiIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTozNjcwOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgUkFOTElCPSRhY19jdF9SQU5MSUIKLWVsc2UKLSAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5MSUIiCi1maQotCi1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1sZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1sZDsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjM2ODI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MRCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX0xEPSIke2FjX3Rvb2xfcHJlZml4fWxkIgotZWNobyAiJGFzX21lOjM2OTc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQotYnJlYWsKLWRvbmUKLQotZmkKLWZpCi1MRD0kYWNfY3ZfcHJvZ19MRAotaWYgdGVzdCAtbiAiJExEIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzcwNTogcmVzdWx0OiAkTEQiID4mNQotZWNobyAiJHtFQ0hPX1R9JExEIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjM3MDg6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotZmkKLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0xEIjsgdGhlbgotICBhY19jdF9MRD0kTEQKLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJsZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgbGQ7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZTozNzE3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTEQrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0xEIjsgdGhlbgotICBhY19jdl9wcm9nX2FjX2N0X0xEPSIkYWNfY3RfTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCi1hY19kdW1teT0iJFBBVEgiCi1mb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgSUZTPSRhY19zYXZlX0lGUwotICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQotYWNfY3ZfcHJvZ19hY19jdF9MRD0ibGQiCi1lY2hvICIkYXNfbWU6MzczMjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X0xEIiAmJiBhY19jdl9wcm9nX2FjX2N0X0xEPSJsZCIKLWZpCi1maQotYWNfY3RfTEQ9JGFjX2N2X3Byb2dfYWNfY3RfTEQKLWlmIHRlc3QgLW4gIiRhY19jdF9MRCI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjM3NDE6IHJlc3VsdDogJGFjX2N0X0xEIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdF9MRCIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTozNzQ0OiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgTEQ9JGFjX2N0X0xECi1lbHNlCi0gIExEPSIkYWNfY3ZfcHJvZ19MRCIKLWZpCi0KLWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi1lY2hvICIkYXNfbWU6Mzc1NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19BUj0iJEFSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKLWFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi1lY2hvICIkYXNfbWU6Mzc3MTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1Ci1icmVhawotZG9uZQotCi1maQotZmkKLUFSPSRhY19jdl9wcm9nX0FSCi1pZiB0ZXN0IC1uICIkQVIiOyB0aGVuCi0gIGVjaG8gIiRhc19tZTozNzc5OiByZXN1bHQ6ICRBUiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQVIiID4mNgotZWxzZQotICBlY2hvICIkYXNfbWU6Mzc4MjogcmVzdWx0OiBubyIgPiY1Ci1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci1maQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0gIGFjX2N0X0FSPSRBUgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjM3OTE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLWVjaG8gIiRhc19tZTozODA2OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfQVIiICYmIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotZmkKLWZpCi1hY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgotaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MzgxNTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0FSIiA+JjYKLWVsc2UKLSAgZWNobyAiJGFzX21lOjM4MTg6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotICBBUj0kYWNfY3RfQVIKLWVsc2UKLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotZmkKLQotaWYgdGVzdCAiJHtjZl9jdl9zdWJzdF9BUl9PUFRTK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWVjaG8gIiRhc19tZTozODMxOiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgb3B0aW9ucyAoc3ltYm9sIEFSX09QVFMpIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIG9wdGlvbnMgKHN5bWJvbCBBUl9PUFRTKS4uLiAkRUNIT19DIiA+JjYKLQotaWYgdGVzdCAteiAiJEFSX09QVFMiIDsgdGhlbgotCUFSX09QVFM9cnYKLQotZmkKLQotY2ZfY3Zfc3Vic3RfQVJfT1BUUz0kQVJfT1BUUwotZWNobyAiJGFzX21lOjM4NDA6IHJlc3VsdDogJEFSX09QVFMiID4mNQotZWNobyAiJHtFQ0hPX1R9JEFSX09QVFMiID4mNgotCi1maQotCi1lY2hvICIkYXNfbWU6Mzg0NTogY2hlY2tpbmcgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGluc3RhbGwtcHJlZml4IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGluc3RhbGwtcHJlZml4Li4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWluc3RhbGwtcHJlZml4IG9yIC0td2l0aG91dC1pbnN0YWxsLXByZWZpeCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfaW5zdGFsbF9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfaW5zdGFsbF9wcmVmaXgiCi0gIGNhc2UgIiR3aXRodmFsIiBpbiAjKHZpCi0JeWVzfG5vKSAjKHZpCi0JCTs7Ci0JKikJREVTVERJUj0iJHdpdGh2YWwiCi0JCTs7Ci0JZXNhYwotZmk7Ci1lY2hvICIkYXNfbWU6Mzg1ODogcmVzdWx0OiAkREVTVERJUiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kREVTVERJUiIgPiY2Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJZiB3ZSdyZSBjcm9zcy1jb21waWxpbmcsIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSB0b29scyBhbmQgdGhlaXIKLSMgb3B0aW9ucy4gIFRoZSBjb25maWd1cmUgc2NyaXB0IGlzIG9yaWVudGVkIHRvd2FyZCBpZGVudGlmeWluZyB0aGUgaG9zdAotIyBjb21waWxlciwgZXRjLiwgYnV0IHdlIG5lZWQgYSBidWlsZCBjb21waWxlciB0byBnZW5lcmF0ZSBwYXJ0cyBvZiB0aGUgc291cmNlLgotCi1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KLQotCSMgZGVmYXVsdHMgdGhhdCB3ZSBtaWdodCB3YW50IHRvIG92ZXJyaWRlCi0JOiAke0JVSUxEX0NGTEFHUzo9Jyd9Ci0JOiAke0JVSUxEX0NQUEZMQUdTOj0nJ30KLQk6ICR7QlVJTERfTERGTEFHUzo9Jyd9Ci0JOiAke0JVSUxEX0xJQlM6PScnfQotCTogJHtCVUlMRF9FWEVFWFQ6PSckeCd9Ci0JOiAke0JVSUxEX09CSkVYVDo9J28nfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWNjIG9yIC0td2l0aG91dC1idWlsZC1jYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfYnVpbGRfY2Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfY2MiCi0gIEJVSUxEX0NDPSIkd2l0aHZhbCIKLWVsc2UKLSAgZm9yIGFjX3Byb2cgaW4gZ2NjIGNjIGNsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjM4ODY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19CVUlMRF9DQytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkQlVJTERfQ0MiOyB0aGVuCi0gIGFjX2N2X3Byb2dfQlVJTERfQ0M9IiRCVUlMRF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi0gIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKLWFjX2R1bW15PSIkUEFUSCIKLWZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICBJRlM9JGFjX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCi1hY19jdl9wcm9nX0JVSUxEX0NDPSIkYWNfcHJvZyIKLWVjaG8gIiRhc19tZTozOTAxOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLWJyZWFrCi1kb25lCi0KLWZpCi1maQotQlVJTERfQ0M9JGFjX2N2X3Byb2dfQlVJTERfQ0MKLWlmIHRlc3QgLW4gIiRCVUlMRF9DQyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjM5MDk6IHJlc3VsdDogJEJVSUxEX0NDIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRCVUlMRF9DQyIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTozOTEyOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAgdGVzdCAtbiAiJEJVSUxEX0NDIiAmJiBicmVhawotZG9uZQotCi1maTsKLQllY2hvICIkYXNfbWU6MzkyMDogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIGNvbXBpbGVyIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgotCWVjaG8gIiRhc19tZTozOTIyOiByZXN1bHQ6ICRCVUlMRF9DQyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQlVJTERfQ0MiID4mNgotCi0JZWNobyAiJGFzX21lOjM5MjU6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBwcmVwcm9jZXNzb3IiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWNwcCBvciAtLXdpdGhvdXQtYnVpbGQtY3BwIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9idWlsZF9jcHArc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfY3BwIgotICBCVUlMRF9DUFA9IiR3aXRodmFsIgotZWxzZQotICBCVUlMRF9DUFA9JyR7QlVJTERfQ0N9IC1FJwotZmk7Ci0JZWNobyAiJGFzX21lOjM5MzU6IHJlc3VsdDogJEJVSUxEX0NQUCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQlVJTERfQ1BQIiA+JjYKLQotCWVjaG8gIiRhc19tZTozOTM4OiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgZmxhZ3MiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgZmxhZ3MuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtY2ZsYWdzIG9yIC0td2l0aG91dC1idWlsZC1jZmxhZ3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2J1aWxkX2NmbGFncytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9idWlsZF9jZmxhZ3MiCi0gIEJVSUxEX0NGTEFHUz0iJHdpdGh2YWwiCi1maTsKLQllY2hvICIkYXNfbWU6Mzk0NjogcmVzdWx0OiAkQlVJTERfQ0ZMQUdTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRCVUlMRF9DRkxBR1MiID4mNgotCi0JZWNobyAiJGFzX21lOjM5NDk6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBwcmVwcm9jZXNzb3ItZmxhZ3MiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgcHJlcHJvY2Vzc29yLWZsYWdzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWJ1aWxkLWNwcGZsYWdzIG9yIC0td2l0aG91dC1idWlsZC1jcHBmbGFncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfYnVpbGRfY3BwZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfYnVpbGRfY3BwZmxhZ3MiCi0gIEJVSUxEX0NQUEZMQUdTPSIkd2l0aHZhbCIKLWZpOwotCWVjaG8gIiRhc19tZTozOTU3OiByZXN1bHQ6ICRCVUlMRF9DUFBGTEFHUyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kQlVJTERfQ1BQRkxBR1MiID4mNgotCi0JZWNobyAiJGFzX21lOjM5NjA6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWZsYWdzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBsaW5rZXItZmxhZ3MuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtbGRmbGFncyBvciAtLXdpdGhvdXQtYnVpbGQtbGRmbGFncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfYnVpbGRfbGRmbGFncytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9idWlsZF9sZGZsYWdzIgotICBCVUlMRF9MREZMQUdTPSIkd2l0aHZhbCIKLWZpOwotCWVjaG8gIiRhc19tZTozOTY4OiByZXN1bHQ6ICRCVUlMRF9MREZMQUdTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRCVUlMRF9MREZMQUdTIiA+JjYKLQotCWVjaG8gIiRhc19tZTozOTcxOiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIGxpbmtlci1saWJyYXJpZXMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIGxpbmtlci1saWJyYXJpZXMuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtbGlicyBvciAtLXdpdGhvdXQtYnVpbGQtbGlicyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfYnVpbGRfbGlicytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9idWlsZF9saWJzIgotICBCVUlMRF9MSUJTPSIkd2l0aHZhbCIKLWZpOwotCWVjaG8gIiRhc19tZTozOTc5OiByZXN1bHQ6ICRCVUlMRF9MSUJTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRCVUlMRF9MSUJTIiA+JjYKLQotCSMgdGhpcyBhc3N1bWVzIHdlJ3JlIG9uIFVuaXguCi0JQlVJTERfRVhFRVhUPQotCUJVSUxEX09CSkVYVD1vCi0KLQk6ICR7QlVJTERfQ0M6PScke0NDfSd9Ci0KLQlpZiAoIHRlc3QgIiRCVUlMRF9DQyIgPSAiJENDIiB8fCB0ZXN0ICIkQlVJTERfQ0MiID0gJyR7Q0N9JyApIDsgdGhlbgotCQl7IHsgZWNobyAiJGFzX21lOjM5ODk6IGVycm9yOiBDcm9zcy1idWlsZCByZXF1aXJlcyB0d28gY29tcGlsZXJzLgotVXNlIC0td2l0aC1idWlsZC1jYyB0byBzcGVjaWZ5IHRoZSBuYXRpdmUgY29tcGlsZXIuIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IENyb3NzLWJ1aWxkIHJlcXVpcmVzIHR3byBjb21waWxlcnMuCi1Vc2UgLS13aXRoLWJ1aWxkLWNjIHRvIHNwZWNpZnkgdGhlIG5hdGl2ZSBjb21waWxlci4iID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLQlmaQotCi1lbHNlCi0JOiAke0JVSUxEX0NDOj0nJHtDQ30nfQotCTogJHtCVUlMRF9DUFA6PScke0NQUH0nfQotCTogJHtCVUlMRF9DRkxBR1M6PScke0NGTEFHU30nfQotCTogJHtCVUlMRF9DUFBGTEFHUzo9JyR7Q1BQRkxBR1N9J30KLQk6ICR7QlVJTERfTERGTEFHUzo9JyR7TERGTEFHU30nfQotCTogJHtCVUlMRF9MSUJTOj0nJHtMSUJTfSd9Ci0JOiAke0JVSUxEX0VYRUVYVDo9JyR4J30KLQk6ICR7QlVJTERfT0JKRVhUOj0nbyd9Ci1maQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMjIyBPcHRpb25zIHRvIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHNldCBvZiBsaWJyYXJpZXMgd2hpY2ggYXJlIHVzZWQuCi0jIyMgVXNlICItLXdpdGhvdXQtbm9ybWFsIC0td2l0aC1zaGFyZWQiIHRvIGFsbG93IHRoZSBkZWZhdWx0IG1vZGVsIHRvIGJlCi0jIyMgc2hhcmVkLCBmb3IgZXhhbXBsZS4KLWNmX2xpc3RfbW9kZWxzPSIiCi0KLUxJQlRPT0w9Ci0KLSMgY29tbW9uIGxpYnJhcnkgbWFpbnRlbmFuY2Ugc3ltYm9scyB0aGF0IGFyZSBjb252ZW5pZW50IGZvciBsaWJ0b29sIHNjcmlwdHM6Ci1MSUJfQ1JFQVRFPScke0FSfSAtY3InCi1MSUJfT0JKRUNUPScke09CSkVDVFN9JwotTElCX1NVRkZJWD0uYQotTElCX1BSRVA9IiRSQU5MSUIiCi0KLSMgc3ltYm9scyB1c2VkIHRvIHByb3AgbGlidG9vbCB1cCB0byBlbmFibGUgaXQgdG8gZGV0ZXJtaW5lIHdoYXQgaXQgc2hvdWxkIGJlCi0jIGRvaW5nOgotTElCX0NMRUFOPQotTElCX0NPTVBJTEU9Ci1MSUJfTElOSz0nJHtDQ30nCi1MSUJfSU5TVEFMTD0KLUxJQl9VTklOU1RBTEw9Ci0KLWVjaG8gIiRhc19tZTo0MDMwOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBsaWJyYXJpZXMgd2l0aCBsaWJ0b29sIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgbGlicmFyaWVzIHdpdGggbGlidG9vbC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sIG9yIC0td2l0aG91dC1saWJ0b29sIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9saWJ0b29sK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2xpYnRvb2wiCi0gIHdpdGhfbGlidG9vbD0kd2l0aHZhbAotZWxzZQotICB3aXRoX2xpYnRvb2w9bm8KLWZpOwotZWNobyAiJGFzX21lOjQwNDA6IHJlc3VsdDogJHdpdGhfbGlidG9vbCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9saWJ0b29sIiA+JjYKLWlmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJubyI7IHRoZW4KLQotIAlpZiB0ZXN0ICIkd2l0aF9saWJ0b29sIiAhPSAieWVzIiA7IHRoZW4KLQotaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCi0gIGNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgotZWxzZQotICBjZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgotZmkKLQotY2FzZSAiLiR3aXRoX2xpYnRvb2wiIGluICModmkKLS5cJFwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLlthLXpBLVpdOltcXC9dKikgIyh2aSBPUy8yIEVNWAotICA7OwotLlwkeypwcmVmaXh9KikgIyh2aQotICBldmFsIHdpdGhfbGlidG9vbD0iJHdpdGhfbGlidG9vbCIKLSAgY2FzZSAiLiR3aXRoX2xpYnRvb2wiIGluICModmkKLSAgLk5PTkUvKikKLSAgICB3aXRoX2xpYnRvb2w9YGVjaG8gJHdpdGhfbGlidG9vbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKLSAgICA7OwotICBlc2FjCi0gIDs7ICModmkKLS5ub3wuTk9ORS8qKQotICB3aXRoX2xpYnRvb2w9YGVjaG8gJHdpdGhfbGlidG9vbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKLSAgOzsKLSopCi0gIHsgeyBlY2hvICIkYXNfbWU6NDA3MTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRoX2xpYnRvb2xcIiIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aF9saWJ0b29sXCIiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAgOzsKLWVzYWMKLQotCQlMSUJUT09MPSR3aXRoX2xpYnRvb2wKLQllbHNlCi0gCQkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxpYnRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGxpYnRvb2w7IGFjX3dvcmQ9JDIKLWVjaG8gIiRhc19tZTo0MDgxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfTElCVE9PTCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXNlICRMSUJUT09MIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0xJQlRPT0w9IiRMSUJUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgotYWNfZHVtbXk9IiRQQVRIIgotZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCI7IHRoZW4KLSAgIGFjX2N2X3BhdGhfTElCVE9PTD0iJGFjX2Rpci8kYWNfd29yZCIKLSAgIGVjaG8gIiRhc19tZTo0MDk4OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKLSAgIGJyZWFrCi1maQotZG9uZQotCi0gIDs7Ci1lc2FjCi1maQotTElCVE9PTD0kYWNfY3ZfcGF0aF9MSUJUT09MCi0KLWlmIHRlc3QgLW4gIiRMSUJUT09MIjsgdGhlbgotICBlY2hvICIkYXNfbWU6NDEwOTogcmVzdWx0OiAkTElCVE9PTCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kTElCVE9PTCIgPiY2Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTo0MTEyOiByZXN1bHQ6IG5vIiA+JjUKLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLWZpCi0KLSAJZmkKLSAJaWYgdGVzdCAteiAiJExJQlRPT0wiIDsgdGhlbgotIAkJeyB7IGVjaG8gIiRhc19tZTo0MTE4OiBlcnJvcjogQ2Fubm90IGZpbmQgbGlidG9vbCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgZmluZCBsaWJ0b29sIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0gCWZpCi0JTElCX0NSRUFURT0nJHtMSUJUT09MfSAtLW1vZGU9bGluayAke0NDfSAtcnBhdGggJHtERVNURElSfSR7bGliZGlyfSAtdmVyc2lvbi1pbmZvIGBjdXQgLWYxICR7c3JjZGlyfS9WRVJTSU9OYCAke0xJQlRPT0xfT1BUU30gLW8nCi0JTElCX09CSkVDVD0nJHtPQkpFQ1RTOi5vPS5sb30nCi0JTElCX1NVRkZJWD0ubGEKLQlMSUJfQ0xFQU49JyR7TElCVE9PTH0gLS1tb2RlPWNsZWFuJwotCUxJQl9DT01QSUxFPScke0xJQlRPT0x9IC0tbW9kZT1jb21waWxlJwotCUxJQl9MSU5LPScke0xJQlRPT0x9IC0tbW9kZT1saW5rICR7Q0N9ICR7TElCVE9PTF9PUFRTfScKLQlMSUJfSU5TVEFMTD0nJHtMSUJUT09MfSAtLW1vZGU9aW5zdGFsbCcKLQlMSUJfVU5JTlNUQUxMPScke0xJQlRPT0x9IC0tbW9kZT11bmluc3RhbGwnCi0JTElCX1BSRVA9OgotCi0JIyBTaG93IHRoZSB2ZXJzaW9uIG9mIGxpYnRvb2wKLQllY2hvICIkYXNfbWU6NDEzMzogY2hlY2tpbmcgdmVyc2lvbiBvZiBsaWJ0b29sIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgdmVyc2lvbiBvZiBsaWJ0b29sLi4uICRFQ0hPX0MiID4mNgotCi0JIyBTYXZlIHRoZSB2ZXJzaW9uIGluIGEgY2FjaGUgdmFyaWFibGUgLSB0aGlzIGlzIG5vdCBlbnRpcmVseSBhIGdvb2QKLQkjIHRoaW5nLCBidXQgdGhlIHZlcnNpb24gc3RyaW5nIGZyb20gbGlidG9vbCBpcyB2ZXJ5IHVnbHksIGFuZCBmb3IKLQkjIGJ1ZyByZXBvcnRzIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBoYXZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCi0JY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPWAkTElCVE9PTCAtLXZlcnNpb24gMj4mMSB8IHNlZCAtZSAnL14kL2QnIHxzZWQgLWUgJzIsJGQnIC1lICdzLyhbXildKikvL2cnIC1lICdzL15bXjEtOV0qLy8nIC1lICdzL1teMC05Ll0uKi8vJ2AKLQllY2hvICIkYXNfbWU6NDE0MDogcmVzdWx0OiAkY2ZfY3ZfbGlidG9vbF92ZXJzaW9uIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9saWJ0b29sX3ZlcnNpb24iID4mNgotCWlmIHRlc3QgLXogIiRjZl9jdl9saWJ0b29sX3ZlcnNpb24iIDsgdGhlbgotCQl7IHsgZWNobyAiJGFzX21lOjQxNDM6IGVycm9yOiBUaGlzIGlzIG5vdCBHTlUgbGlidG9vbCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBUaGlzIGlzIG5vdCBHTlUgbGlidG9vbCIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotCWZpCi0KLQkjIHNwZWNpYWwgaGFjayB0byBhZGQgLS10YWcgb3B0aW9uIGZvciBDKysgY29tcGlsZXIKLQljYXNlICRjZl9jdl9saWJ0b29sX3ZlcnNpb24gaW4KLQkxLls1LTldKnxbMi05XSopCi0JCUxJQlRPT0xfQ1hYPSIkTElCVE9PTCAtLXRhZz1DWFgiCi0JCUxJQlRPT0w9IiRMSUJUT09MIC0tdGFnPUNDIgotCQk7OwotCSopCi0JCUxJQlRPT0xfQ1hYPSIkTElCVE9PTCIKLQkJOzsKLQllc2FjCi1lbHNlCi0JTElCVE9PTD0iIgotCUxJQlRPT0xfQ1hYPSIiCi1maQotCi10ZXN0IC16ICIkTElCVE9PTCIgJiYgRUNIT19MVD0KLQotaWYgdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gIm5vIiA7IHRoZW4KLQotY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBsaWJ0b29sIgotCi1lbHNlCi0KLWVjaG8gIiRhc19tZTo0MTcxOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zaGFyZWQgb3IgLS13aXRob3V0LXNoYXJlZCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc2hhcmVkK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX3NoYXJlZCIKLSAgd2l0aF9zaGFyZWQ9JHdpdGh2YWwKLWVsc2UKLSAgd2l0aF9zaGFyZWQ9bm8KLWZpOwotZWNobyAiJGFzX21lOjQxODE6IHJlc3VsdDogJHdpdGhfc2hhcmVkIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3NoYXJlZCIgPiY2Ci10ZXN0ICIkd2l0aF9zaGFyZWQiID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBzaGFyZWQiCi0KLWVjaG8gIiRhc19tZTo0MTg1OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1ub3JtYWwgb3IgLS13aXRob3V0LW5vcm1hbCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfbm9ybWFsK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX25vcm1hbCIKLSAgd2l0aF9ub3JtYWw9JHdpdGh2YWwKLWVsc2UKLSAgd2l0aF9ub3JtYWw9eWVzCi1maTsKLWVjaG8gIiRhc19tZTo0MTk1OiByZXN1bHQ6ICR3aXRoX25vcm1hbCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9ub3JtYWwiID4mNgotdGVzdCAiJHdpdGhfbm9ybWFsIiA9ICJ5ZXMiICYmIGNmX2xpc3RfbW9kZWxzPSIkY2ZfbGlzdF9tb2RlbHMgbm9ybWFsIgotCi1lY2hvICIkYXNfbWU6NDE5OTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgZGVidWcgbGlicmFyaWVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgZGVidWcgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWRlYnVnIG9yIC0td2l0aG91dC1kZWJ1ZyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfZGVidWciCi0gIHdpdGhfZGVidWc9JHdpdGh2YWwKLWVsc2UKLSAgd2l0aF9kZWJ1Zz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjQyMDk6IHJlc3VsdDogJHdpdGhfZGVidWciID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfZGVidWciID4mNgotdGVzdCAiJHdpdGhfZGVidWciID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBkZWJ1ZyIKLQotZWNobyAiJGFzX21lOjQyMTM6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHByb2ZpbGluZyBsaWJyYXJpZXMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBwcm9maWxpbmcgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXByb2ZpbGUgb3IgLS13aXRob3V0LXByb2ZpbGUgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3Byb2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfcHJvZmlsZSIKLSAgd2l0aF9wcm9maWxlPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfcHJvZmlsZT1ubwotZmk7Ci1lY2hvICIkYXNfbWU6NDIyMzogcmVzdWx0OiAkd2l0aF9wcm9maWxlIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3Byb2ZpbGUiID4mNgotdGVzdCAiJHdpdGhfcHJvZmlsZSIgPSAieWVzIiAmJiBjZl9saXN0X21vZGVscz0iJGNmX2xpc3RfbW9kZWxzIHByb2ZpbGUiCi0KLWZpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotZWNobyAiJGFzX21lOjQyMzE6IGNoZWNraW5nIGZvciBzcGVjaWZpZWQgbW9kZWxzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpZmllZCBtb2RlbHMuLi4gJEVDSE9fQyIgPiY2Ci10ZXN0IC16ICIkY2ZfbGlzdF9tb2RlbHMiICYmIGNmX2xpc3RfbW9kZWxzPW5vcm1hbAotdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gIm5vIiAmJiBjZl9saXN0X21vZGVscz1saWJ0b29sCi1lY2hvICIkYXNfbWU6NDIzNTogcmVzdWx0OiAkY2ZfbGlzdF9tb2RlbHMiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2xpc3RfbW9kZWxzIiA+JjYKLQotIyMjIFVzZSB0aGUgZmlyc3QgbW9kZWwgYXMgdGhlIGRlZmF1bHQsIGFuZCBzYXZlIGl0cyBzdWZmaXggZm9yIHVzZSBpbiBidWlsZGluZwotIyMjIHVwIHRlc3QtYXBwbGljYXRpb25zLgotZWNobyAiJGFzX21lOjQyNDA6IGNoZWNraW5nIGZvciBkZWZhdWx0IG1vZGVsIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgbW9kZWwuLi4gJEVDSE9fQyIgPiY2Ci1ERlRfTFdSX01PREVMPWBlY2hvICIkY2ZfbGlzdF9tb2RlbHMiIHwgJEFXSyAne3ByaW50ICQxfSdgCi1lY2hvICIkYXNfbWU6NDI0MzogcmVzdWx0OiAkREZUX0xXUl9NT0RFTCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kREZUX0xXUl9NT0RFTCIgPiY2Ci0KLURGVF9VUFJfTU9ERUw9YGVjaG8gIiRERlRfTFdSX01PREVMIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKLQotVElDU19OQU1FPXRpYwotCi1USU5GT19OQU1FPXRpbmZvCi0KLUxJQl9OQU1FPW5jdXJzZXMKLQotTElCX0RJUj0uLi9saWIKLUxJQl8yTkQ9Li4vLi4vbGliCi0KLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi0JT1MvMip8b3MyKikgIyh2aQotICAgICAgICBMSUJfUFJFRklYPScnCi0gICAgICAgIDs7Ci0JKikJTElCX1BSRUZJWD0nbGliJwotICAgICAgICA7OwotCWVzYWMKLWNmX3ByZWZpeD0kTElCX1BSRUZJWAotCi1MSUJfUFJFRklYPSRjZl9wcmVmaXgKLQotTElCX1NVRkZJWD0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1lY2hvICIkYXNfbWU6NDI3MjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgYSBzZXBhcmF0ZSB0ZXJtaW5mbyBsaWJyYXJ5IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgYSBzZXBhcmF0ZSB0ZXJtaW5mbyBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRlcm1saWIgb3IgLS13aXRob3V0LXRlcm1saWIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3Rlcm1saWIrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfdGVybWxpYiIKLSAgd2l0aF90ZXJtbGliPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfdGVybWxpYj1ubwotZmk7Ci1lY2hvICIkYXNfbWU6NDI4MjogcmVzdWx0OiAkd2l0aF90ZXJtbGliIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3Rlcm1saWIiID4mNgotCi1lY2hvICIkYXNfbWU6NDI4NTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgYSBzZXBhcmF0ZSB0aWMgbGlicmFyeSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGEgc2VwYXJhdGUgdGljIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdGljbGliIG9yIC0td2l0aG91dC10aWNsaWIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3RpY2xpYitzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF90aWNsaWIiCi0gIHdpdGhfdGljbGliPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfdGljbGliPW5vCi1maTsKLWVjaG8gIiRhc19tZTo0Mjk1OiByZXN1bHQ6ICR3aXRoX3RpY2xpYiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF90aWNsaWIiID4mNgotCi0jIyMgQ2hlY2tzIGZvciBzcGVjaWFsIGxpYnJhcmllcywgbXVzdCBiZSBkb25lIHVwLWZyb250LgotU0hMSUJfTElTVD0iIgotCi1lY2hvICIkYXNfbWU6NDMwMTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHRoZSBHUE0gbW91c2UgbGlicmFyeSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCB0aGUgR1BNIG1vdXNlIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZ3BtIG9yIC0td2l0aG91dC1ncG0gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2dwbStzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9ncG0iCi0gIHdpdGhfZ3BtPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfZ3BtPW1heWJlCi1maTsKLWVjaG8gIiRhc19tZTo0MzExOiByZXN1bHQ6ICR3aXRoX2dwbSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9ncG0iID4mNgotCi1pZiB0ZXN0ICIkd2l0aF9ncG0iICE9IG5vIDsgdGhlbgotCWVjaG8gIiRhc19tZTo0MzE1OiBjaGVja2luZyBmb3IgZ3BtLmgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZ3BtLmguLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9ncG1faCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDQzMjEgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPGdwbS5oPgotX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo0MzI1OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZTo0MzMxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIGFjX2N2X2hlYWRlcl9ncG1faD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gIGFjX2N2X2hlYWRlcl9ncG1faD1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjQzNTA6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9ncG1faCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX2dwbV9oIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9ncG1faCA9IHllczsgdGhlbgotCi0JCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEhBVkVfR1BNX0ggMQotRU9GCi0KLQkJaWYgdGVzdCAiJHdpdGhfZ3BtIiAhPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ3BtIiAhPSBtYXliZSA7IHRoZW4KLQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYXNzdW1pbmcgd2UgcmVhbGx5IGhhdmUgR1BNIGxpYnJhcnkiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjQzNjE6IHRlc3RpbmcgYXNzdW1pbmcgd2UgcmVhbGx5IGhhdmUgR1BNIGxpYnJhcnkgLi4uIiAxPiY1Ci0KLQkJCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEhBVkVfTElCR1BNIDEKLUVPRgotCi0JCWVsc2UKLQkJCWVjaG8gIiRhc19tZTo0MzY4OiBjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0iID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0uLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9ncG1fR3BtX09wZW4rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxncG0gICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA0Mzc2ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0vKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotY2hhciBHcG1fT3BlbiAoKTsKLWludAotbWFpbiAoKQotewotR3BtX09wZW4gKCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo0Mzk1OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo0Mzk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDQwMTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ0MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfZ3BtX0dwbV9PcGVuPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl9saWJfZ3BtX0dwbV9PcGVuPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLWVjaG8gIiRhc19tZTo0NDE1OiByZXN1bHQ6ICRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9ncG1fR3BtX09wZW4gPSB5ZXM7IHRoZW4KLSAgOgotZWxzZQotCi0JCQkJeyB7IGVjaG8gIiRhc19tZTo0NDIxOiBlcnJvcjogQ2Fubm90IGxpbmsgd2l0aCBHUE0gbGlicmFyeSIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIEdQTSBsaWJyYXJ5IiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0JCWZpCi0JCXdpdGhfZ3BtPXllcwotCi1maQotCi1lbHNlCi0KLQkJdGVzdCAiJHdpdGhfZ3BtIiAhPSBtYXliZSAmJiB7IGVjaG8gIiRhc19tZTo0NDMxOiBXQVJOSU5HOiBDYW5ub3QgZmluZCBHUE0gaGVhZGVyIiA+JjUKLWVjaG8gIiRhc19tZTogV0FSTklORzogQ2Fubm90IGZpbmQgR1BNIGhlYWRlciIgPiYyO30KLQkJd2l0aF9ncG09bm8KLQotZmkKLQotZmkKLQotaWYgdGVzdCAiJHdpdGhfZ3BtIiAhPSBubyA7IHRoZW4KLQllY2hvICIkYXNfbWU6NDQ0MDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbG9hZCBHUE0gZHluYW1pY2FsbHkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsb2FkIEdQTSBkeW5hbWljYWxseS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kbHN5bSBvciAtLXdpdGhvdXQtZGxzeW0gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2Rsc3ltK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2Rsc3ltIgotICB3aXRoX2Rsc3ltPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfZGxzeW09eWVzCi1maTsKLQllY2hvICIkYXNfbWU6NDQ1MDogcmVzdWx0OiAkd2l0aF9kbHN5bSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9kbHN5bSIgPiY2Ci0JaWYgdGVzdCAiJHdpdGhfZGxzeW0iID0geWVzIDsgdGhlbgotCi1jZl9oYXZlX2Rsc3ltPW5vCi1lY2hvICIkYXNfbWU6NDQ1NTogY2hlY2tpbmcgZm9yIGRsc3ltIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRsc3ltLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9mdW5jX2Rsc3ltK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNDQ2MSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0vKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCi0gICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBkbHN5bSAoKTsgYmVsb3cuICAqLwotI2luY2x1ZGUgPGFzc2VydC5oPgotLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0vKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotY2hhciBkbHN5bSAoKTsKLWNoYXIgKCpmKSAoKTsKLQotaW50Ci1tYWluICgpCi17Ci0vKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCi0gICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKLSAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KLSNpZiBkZWZpbmVkIChfX3N0dWJfZGxzeW0pIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2Rsc3ltKQotY2hva2UgbWUKLSNlbHNlCi1mID0gZGxzeW07Ci0jZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDQ5MjogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDQ5NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ0OTg6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo0NTAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfZnVuY19kbHN5bT15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfZnVuY19kbHN5bT1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6NDUxMTogcmVzdWx0OiAkYWNfY3ZfZnVuY19kbHN5bSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19kbHN5bSIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9mdW5jX2Rsc3ltID0geWVzOyB0aGVuCi0gIGNmX2hhdmVfZGxzeW09eWVzCi1lbHNlCi0KLWNmX2hhdmVfbGliZGw9bm8KLWVjaG8gIiRhc19tZTo0NTE4OiBjaGVja2luZyBmb3IgZGxzeW0gaW4gLWxkbCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkbHN5bSBpbiAtbGRsLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfZGxfZGxzeW0rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxkbCAgJExJQlMiCi1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDQ1MjYgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0vKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyIGRsc3ltICgpOwotaW50Ci1tYWluICgpCi17Ci1kbHN5bSAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ1NDU6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ1NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo0NTUxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDU1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2N2X2xpYl9kbF9kbHN5bT15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfbGliX2RsX2Rsc3ltPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLWVjaG8gIiRhc19tZTo0NTY1OiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxzeW0iID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kbF9kbHN5bSIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9saWJfZGxfZGxzeW0gPSB5ZXM7IHRoZW4KLQotCWNmX2hhdmVfZGxzeW09eWVzCi0JY2ZfaGF2ZV9saWJkbD15ZXMKLWZpCi0KLWZpCi0KLWlmIHRlc3QgIiRjZl9oYXZlX2Rsc3ltIiA9IHllcyA7IHRoZW4KLQl0ZXN0ICIkY2ZfaGF2ZV9saWJkbCIgPSB5ZXMgJiYgTElCUz0iLWxkbCAkTElCUyIKLQotCWVjaG8gIiRhc19tZTo0NTc4OiBjaGVja2luZyB3aGV0aGVyIGFibGUgdG8gbGluayB0byBkbCooKSBmdW5jdGlvbnMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIGFibGUgdG8gbGluayB0byBkbCooKSBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2Ci0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA0NTgxICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxkbGZjbi5oPgotaW50Ci1tYWluICgpCi17Ci0KLQkJdm9pZCAqb2JqOwotCQlpZiAoKG9iaiA9IGRsb3BlbigiZmlsZW5hbWUiLCAwKSkgIT0gMCkgewotCQkJaWYgKGRsc3ltKG9iaiwgInN5bWJvbG5hbWUiKSA9PSAwKSB7Ci0JCQlkbGNsb3NlKG9iaik7Ci0JCQl9Ci0JCX0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ1OTk6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ2MDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo0NjA1OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDYwODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0KLQkJY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9MSUJETCAxCi1FT0YKLQotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLQkJeyB7IGVjaG8gIiRhc19tZTo0NjE5OiBlcnJvcjogQ2Fubm90IGxpbmsgdGVzdCBwcm9ncmFtIGZvciBsaWJkbCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayB0ZXN0IHByb2dyYW0gZm9yIGxpYmRsIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotCWVjaG8gIiRhc19tZTo0NjI0OiByZXN1bHQ6IG9rIiA+JjUKLWVjaG8gIiR7RUNIT19UfW9rIiA+JjYKLWVsc2UKLQl7IHsgZWNobyAiJGFzX21lOjQ2Mjc6IGVycm9yOiBDYW5ub3QgZmluZCBkbHN5bSBmdW5jdGlvbiIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgZmluZCBkbHN5bSBmdW5jdGlvbiIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotZmkKLQotCQlpZiB0ZXN0ICIkd2l0aF9ncG0iICE9IHllcyA7IHRoZW4KLQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYXNzdW1pbmcgc29uYW1lIGZvciBncG0gaXMgJHdpdGhfZ3BtIiAxPiY2Ci0KLWVjaG8gIiR7YXNfbWUtY29uZmlndXJlfTo0NjM1OiB0ZXN0aW5nIGFzc3VtaW5nIHNvbmFtZSBmb3IgZ3BtIGlzICR3aXRoX2dwbSAuLi4iIDE+JjUKLQotCQkJY2ZfY3ZfZ3BtX3NvbmFtZT0iJHdpdGhfZ3BtIgotCQllbHNlCi0KLWVjaG8gIiRhc19tZTo0NjQwOiBjaGVja2luZyBmb3Igc29uYW1lIG9mIGdwbSBsaWJyYXJ5IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNvbmFtZSBvZiBncG0gbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfZ3BtX3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi1jZl9jdl9ncG1fc29uYW1lPXVua25vd24KLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllcyA7IHRoZW4KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgotI2luY2x1ZGUgPGdwbS5oPgotaW50IG1haW4oKQotewotaWYgKEdwbV9PcGVuKDAsMCkpIEdwbV9DbG9zZSgpOwotCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Ci19Ci1DRl9FT0YKLWNmX3NhdmVfTElCUz0iJExJQlMiCi0JTElCUz0iLWxncG0gJExJQlMiCi0JaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDY1ODogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDY2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9IDsgdGhlbgotCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0NjYzOiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo0NjY2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gOyB0aGVuCi0JCQljZl9jdl9ncG1fc29uYW1lPWBsZGQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgc2VkIC1lICdzLF4uKi8sLCcgLWUgJ3MsIC4qJCwsJyB8IGZncmVwIGxpYmdwbS5gCi0JCQl0ZXN0IC16ICIkY2ZfY3ZfZ3BtX3NvbmFtZSIgJiYgY2ZfY3ZfZ3BtX3NvbmFtZT11bmtub3duCi0JCWZpCi0JZmkKLXJtIC1mIGNvbmZ0ZXN0KgotTElCUz0iJGNmX3NhdmVfTElCUyIKLWZpCi0KLWZpCi1lY2hvICIkYXNfbWU6NDY3NzogcmVzdWx0OiAkY2ZfY3ZfZ3BtX3NvbmFtZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ3BtX3NvbmFtZSIgPiY2Ci0KLQkJZmkKLQkJdGVzdCAiJGNmX2N2X2dwbV9zb25hbWUiICE9ICJ1bmtub3duIiAmJiBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIExJQkdQTV9TT05BTUUgIiRjZl9jdl9ncG1fc29uYW1lIgotRU9GCi0KLQkJU0hMSUJfTElTVD0iLWxkbCAkU0hMSUJfTElTVCIKLQllbHNlCi0JCVNITElCX0xJU1Q9Ii1sZ3BtICRTSExJQl9MSVNUIgotCWZpCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9MSUJHUE0gMQotRU9GCi0KLWVjaG8gIiRhc19tZTo0NjkzOiBjaGVja2luZyBmb3IgR3BtX1dnZXRjaCBpbiAtbGdwbSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBHcG1fV2dldGNoIGluIC1sZ3BtLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfZ3BtX0dwbV9XZ2V0Y2grc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxncG0gICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA0NzAxICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0vKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotY2hhciBHcG1fV2dldGNoICgpOwotaW50Ci1tYWluICgpCi17Ci1HcG1fV2dldGNoICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDcyMDogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDcyMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ3MjY6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo0NzI5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX2dwbV9HcG1fV2dldGNoPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl9saWJfZ3BtX0dwbV9XZ2V0Y2g9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCi1maQotZWNobyAiJGFzX21lOjQ3NDA6IHJlc3VsdDogJGFjX2N2X2xpYl9ncG1fR3BtX1dnZXRjaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2dwbV9HcG1fV2dldGNoIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9ncG1fR3BtX1dnZXRjaCA9IHllczsgdGhlbgotCi1lY2hvICIkYXNfbWU6NDc0NDogY2hlY2tpbmcgaWYgR1BNIGlzIHdlYWtseSBib3VuZCB0byBjdXJzZXMgbGlicmFyeSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdQTSBpcyB3ZWFrbHkgYm91bmQgdG8gY3Vyc2VzIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X2NoZWNrX2dwbV93Z2V0Y2grc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLQotY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD11bmtub3duCi1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXMgOyB0aGVuCi0KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgotI2luY2x1ZGUgPGdwbS5oPgotaW50IG1haW4oKQotewotCUdwbV9XZ2V0Y2goKTsKLQkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOwotfQotQ0ZfRU9GCi0KLQljZl9zYXZlX0xJQlM9IiRMSUJTIgotCSMgVGhpcyBvbmx5IHdvcmtzIGlmIHdlIGNhbiBsb29rIGF0IHRoZSBzeW1ib2wgdGFibGUuICBJZiBhIHNoYXJlZAotCSMgbGlicmFyeSBpcyBzdHJpcHBlZCBmb3IgaW5zdGFsbCwgd2UgY2Fubm90IHVzZSB0aGF0LiAgU28gd2UncmUgZm9yY2VkCi0JIyB0byByZWx5IG9uIHRoZSBzdGF0aWMgbGlicmFyeSwgbm90aW5nIHRoYXQgc29tZSBwYWNrYWdlcnMgbWF5IG5vdAotCSMgaW5jbHVkZSBpdC4KLQlMSUJTPSItc3RhdGljIC1sZ3BtIC1keW5hbWljICRMSUJTIgotCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ3Njg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ3NzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA7IHRoZW4KLQkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDc3MzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDc3NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9IDsgdGhlbgotCQkJY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD1gbm0gY29uZnRlc3QkYWNfZXhlZXh0IHwgZWdyZXAgJ1w8d2dldGNoXD4nIHwgZWdyZXAgJ1w8W3ZWd1ddXD4nYAotCQkJdGVzdCAtbiAiJGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2giICYmIGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2g9eWVzCi0JCQl0ZXN0IC16ICIkY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaCIgJiYgY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD1ubwotCQlmaQotCWZpCi0Jcm0gLWYgY29uZnRlc3QqCi0JTElCUz0iJGNmX3NhdmVfTElCUyIKLWZpCi0KLWZpCi1lY2hvICIkYXNfbWU6NDc4ODogcmVzdWx0OiAkY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaCIgPiY2Ci0KLWlmIHRlc3QgIiRjZl9jdl9jaGVja19ncG1fd2dldGNoIiAhPSB5ZXMgOyB0aGVuCi0JeyBlY2hvICIkYXNfbWU6NDc5MjogV0FSTklORzogR1BNIGxpYnJhcnkgaXMgYWxyZWFkeSBsaW5rZWQgd2l0aCBjdXJzZXMgLSByZWFkIHRoZSBGQVEiID4mNQotZWNobyAiJGFzX21lOiBXQVJOSU5HOiBHUE0gbGlicmFyeSBpcyBhbHJlYWR5IGxpbmtlZCB3aXRoIGN1cnNlcyAtIHJlYWQgdGhlIEZBUSIgPiYyO30KLWZpCi0KLWZpCi0KLWZpCi0KLSMgbm90IGV2ZXJ5b25lIGhhcyAidGVzdCAtYyIKLWlmIHRlc3QgLWMgL2Rldi9zeXNtb3VzZSAyPi9kZXYvbnVsbCA7IHRoZW4KLWVjaG8gIiRhc19tZTo0ODAyOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2Ugc3lzbW91c2UiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2Ugc3lzbW91c2UuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzbW91c2Ugb3IgLS13aXRob3V0LXN5c21vdXNlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zeXNtb3VzZStzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9zeXNtb3VzZSIKLSAgY2Zfd2l0aF9zeXNtb3VzZT0kd2l0aHZhbAotZWxzZQotICBjZl93aXRoX3N5c21vdXNlPW1heWJlCi1maTsKLQlpZiB0ZXN0ICIkY2Zfd2l0aF9zeXNtb3VzZSIgIT0gbm8gOyB0aGVuCi0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA0ODE0ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPG9zcmVsZGF0ZS5oPgotI2lmIChfX0ZyZWVCU0RfdmVyc2lvbiA+PSA0MDAwMTcpCi0jaW5jbHVkZSA8c3lzL2NvbnNpby5oPgotI2luY2x1ZGUgPHN5cy9mYmlvLmg+Ci0jZWxzZQotI2luY2x1ZGUgPG1hY2hpbmUvY29uc29sZS5oPgotI2VuZGlmCi0KLWludAotbWFpbiAoKQotewotCi0Jc3RydWN0IG1vdXNlX2luZm8gdGhlX21vdXNlOwotCWlvY3RsKDAsIENPTlNfTU9VU0VDVEwsICZ0aGVfbW91c2UpOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ4Mzc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ4NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDg0MzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjQ4NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl93aXRoX3N5c21vdXNlPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl93aXRoX3N5c21vdXNlPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0JZmkKLWVjaG8gIiRhc19tZTo0ODU2OiByZXN1bHQ6ICRjZl93aXRoX3N5c21vdXNlIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl93aXRoX3N5c21vdXNlIiA+JjYKLXRlc3QgIiRjZl93aXRoX3N5c21vdXNlIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBVU0VfU1lTTU9VU0UgMQotRU9GCi0KLWZpCi0KLWlmIHRlc3QgWCIkQ0NfR19PUFQiID0gWCIiIDsgdGhlbgotCUNDX0dfT1BUPSctZycKLQl0ZXN0IC1uICIkR0NDIiAmJiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZ30iICE9IHllcyAmJiBDQ19HX09QVD0nJwotZmkKLQotaWYgdGVzdCBYIiRDWFhfR19PUFQiID0gWCIiIDsgdGhlbgotCUNYWF9HX09QVD0nLWcnCi0JdGVzdCAtbiAiJEdYWCIgJiYgdGVzdCAiJHthY19jdl9wcm9nX2N4eF9nfSIgIT0geWVzICYmIENYWF9HX09QVD0nJwotZmkKLQotZWNobyAiJGFzX21lOjQ4NzQ6IGNoZWNraW5nIGZvciBkZWZhdWx0IGxvYWRlciBmbGFncyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkZWZhdWx0IGxvYWRlciBmbGFncy4uLiAkRUNIT19DIiA+JjYKLWNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLWxpYnRvb2wpIExEX01PREVMPScnICAgOzsKLW5vcm1hbCkgIExEX01PREVMPScnICAgOzsKLWRlYnVnKSAgIExEX01PREVMPSRDQ19HX09QVCA7OwotcHJvZmlsZSkgTERfTU9ERUw9Jy1wZyc7Owotc2hhcmVkKSAgTERfTU9ERUw9JycgICA7OwotZXNhYwotZWNobyAiJGFzX21lOjQ4ODM6IHJlc3VsdDogJExEX01PREVMIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRMRF9NT0RFTCIgPiY2Ci0KLWNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLXNoYXJlZCkKLQotZWNobyAiJGFzX21lOjQ4ODk6IGNoZWNraW5nIGlmIHJwYXRoIG9wdGlvbiBzaG91bGQgYmUgdXNlZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJwYXRoIG9wdGlvbiBzaG91bGQgYmUgdXNlZC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJwYXRoIG9yIC0tZGlzYWJsZS1ycGF0aCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9ycGF0aCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfcnBhdGgiCi0gIGNmX2N2X2xkX3JwYXRoPSRlbmFibGV2YWwKLWVsc2UKLSAgY2ZfY3ZfbGRfcnBhdGg9bm8KLWZpOwotZWNobyAiJGFzX21lOjQ4OTk6IHJlc3VsdDogJGNmX2N2X2xkX3JwYXRoIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9sZF9ycGF0aCIgPiY2Ci0KLWVjaG8gIiRhc19tZTo0OTAyOiBjaGVja2luZyBpZiBzaGFyZWQgbGlicmFyaWVzIHNob3VsZCBiZSByZWxpbmtlZCBkdXJpbmcgaW5zdGFsbCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHNoYXJlZCBsaWJyYXJpZXMgc2hvdWxkIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcmVsaW5rIG9yIC0tZGlzYWJsZS1yZWxpbmsgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfcmVsaW5rK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9yZWxpbmsiCi0gIGNmX2N2X2RvX3JlbGluaz0kZW5hYmxldmFsCi1lbHNlCi0gIGNmX2N2X2RvX3JlbGluaz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjQ5MTI6IHJlc3VsdDogJGNmX2N2X2RvX3JlbGluayIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfZG9fcmVsaW5rIiA+JjYKLQk7OwotZXNhYwotCi0JTE9DQUxfTERGTEFHUz0KLQlMT0NBTF9MREZMQUdTMj0KLQlMRF9TSEFSRURfT1BUUz0KLQlJTlNUQUxMX0xJQj0iLW0gNjQ0IgotCi0JY2ZfY3ZfZG9fc3ltbGlua3M9bm8KLQotCWVjaG8gIiRhc19tZTo0OTI0OiBjaGVja2luZyBpZiByZWxlYXNlL2FiaSB2ZXJzaW9uIHNob3VsZCBiZSB1c2VkIGZvciBzaGFyZWQgbGlicyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJlbGVhc2UvYWJpIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHNoYXJlZCBsaWJzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXNobGliLXZlcnNpb24gb3IgLS13aXRob3V0LXNobGliLXZlcnNpb24gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3NobGliX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfc2hsaWJfdmVyc2lvbiIKLSAgdGVzdCAteiAiJHdpdGh2YWwiICYmIHdpdGh2YWw9YXV0bwotCWNhc2UgJHdpdGh2YWwgaW4gIyh2aQotCXllcykgIyh2aQotCQljZl9jdl9zaGxpYl92ZXJzaW9uPWF1dG8KLQkJOzsKLQlyZWx8YWJpfGF1dG98bm8pICModmkKLQkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj0kd2l0aHZhbAotCQk7OwotCSopCi0JCXsgeyBlY2hvICIkYXNfbWU6NDkzOTogZXJyb3I6IG9wdGlvbiB2YWx1ZSBtdXN0IGJlIG9uZSBvZjogcmVsLCBhYmksIGF1dG8gb3Igbm8iID4mNQotZWNobyAiJGFzX21lOiBlcnJvcjogb3B0aW9uIHZhbHVlIG11c3QgYmUgb25lIG9mOiByZWwsIGFiaSwgYXV0byBvciBubyIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotCQk7OwotCWVzYWMKLQotZWxzZQotICBjZl9jdl9zaGxpYl92ZXJzaW9uPWF1dG8KLWZpOwotCWVjaG8gIiRhc19tZTo0OTQ4OiByZXN1bHQ6ICRjZl9jdl9zaGxpYl92ZXJzaW9uIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9zaGxpYl92ZXJzaW9uIiA+JjYKLQotCWNmX2N2X3JtX3NvX2xvY3M9bm8KLQotCSMgU29tZSBsZXNzLWNhcGFibGUgcG9ydHMgb2YgZ2NjIHN1cHBvcnQgb25seSAtZnBpYwotCUNDX1NIQVJFRF9PUFRTPQotCWlmIHRlc3QgIiRHQ0MiID0geWVzCi0JdGhlbgotCQllY2hvICIkYXNfbWU6NDk1NzogY2hlY2tpbmcgd2hpY2ggJENDIG9wdGlvbiB0byB1c2UiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGljaCAkQ0Mgb3B0aW9uIHRvIHVzZS4uLiAkRUNIT19DIiA+JjYKLQkJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0JCWZvciBDQ19TSEFSRURfT1BUUyBpbiAtZlBJQyAtZnBpYyAnJwotCQlkbwotCQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgJENDX1NIQVJFRF9PUFRTIgotCQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA0OTY0ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotaW50Ci1tYWluICgpCi17Ci1pbnQgeCA9IDEKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDk3NjogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDk3OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo0OTgyOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NDk4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQkJZG9uZQotCQllY2hvICIkYXNfbWU6NDk5NDogcmVzdWx0OiAkQ0NfU0hBUkVEX09QVFMiID4mNQotZWNobyAiJHtFQ0hPX1R9JENDX1NIQVJFRF9PUFRTIiA+JjYKLQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCi0JZmkKLQotCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9bm8KLQotCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCi0JYmVvcyopCi0JCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtbyAkQCAtWGxpbmtlciAtc29uYW1lPWBiYXNlbmFtZSAkQGAgLW5vc3RhcnQgLWUgMCcKLQkJOzsKLQljeWd3aW4qKQotCQlDQ19TSEFSRURfT1BUUz0KLQkJTUtfU0hBUkVEX0xJQj0nc2ggLi4vbWtfc2hhcmVkX2xpYi5zaCAkQCAke0NDfSAke0NGTEFHU30nCi0JCWNmX2N2X3NobGliX3ZlcnNpb249Y3lnZGxsCi0JCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9Y3lnZGxsCi0JCWNhdCA+bWtfc2hhcmVkX2xpYi5zaCA8PC1DRl9FT0YKLQkJIyEvYmluL3NoCi0JCVNIQVJFRF9MSUI9XCQxCi0JCUlNUE9SVF9MSUI9XGBlY2hvICJcJDEiIHwgc2VkIC1lICdzL2N5Zy9saWIvJyAtZSAncy9bMC05XSpcLmRsbCQvLmRsbC5hLydcYAotCQlzaGlmdAotCQljYXQgPDwtRU9GCi0JCUxpbmtpbmcgc2hhcmVkIGxpYnJhcnkKLQkJKiogU0hBUkVEX0xJQiBcJFNIQVJFRF9MSUIKLQkJKiogSU1QT1JUX0xJQiBcJElNUE9SVF9MSUIKLUVPRgotCQlleGVjIFwkKiAtc2hhcmVkIC1XbCwtLW91dC1pbXBsaWI9Li4vbGliL1wke0lNUE9SVF9MSUJ9IC1XbCwtLWV4cG9ydC1hbGwtc3ltYm9scyAtbyAuLi9saWIvXCR7U0hBUkVEX0xJQn0KLUNGX0VPRgotCQljaG1vZCAreCBta19zaGFyZWRfbGliLnNoCi0JCTs7Ci0JZGFyd2luKikKLQkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCi0JCUNDX1NIQVJFRF9PUFRTPSItZHluYW1pYyIKLQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1keW5hbWljbGliIC1pbnN0YWxsX25hbWUgJHtsaWJkaXJ9L2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAke0FCSV9WRVJTSU9OfSAtY3VycmVudF92ZXJzaW9uICR7QUJJX1ZFUlNJT059IC1vICRAJwotCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249YWJpCi0JCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9eWVzCi0JCWVjaG8gIiRhc19tZTo1MDMwOiBjaGVja2luZyBpZiBsZCAtc2VhcmNoX3BhdGhzX2ZpcnN0IHdvcmtzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbGQgLXNlYXJjaF9wYXRoc19maXJzdCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLQotCQkJY2Zfc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0JCQlMREZMQUdTPSIkTERGTEFHUyAtV2wsLXNlYXJjaF9wYXRoc19maXJzdCIKLQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNTAzOSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotaW50IGk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo1MDUxOiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo1MDU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTA1NzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjUwNjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3Q9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0JCQkJTERGTEFHUz0kY2Zfc2F2ZV9MREZMQUdTCi1maQotZWNobyAiJGFzX21lOjUwNzE6IHJlc3VsdDogJGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdCIgPiY2Ci0JCWlmIHRlc3QgJGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0ID0geWVzOyB0aGVuCi0JCQlMREZMQUdTPSIkTERGTEFHUyAtV2wsLXNlYXJjaF9wYXRoc19maXJzdCIKLQkJZmkKLQkJOzsKLQlocHV4KikKLQkJIyAodGVzdGVkIHdpdGggZ2NjIDIuNy4yIC0tIEkgZG9uJ3QgaGF2ZSBjODkpCi0JCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JCQlMRF9TSEFSRURfT1BUUz0nLVhsaW5rZXIgK2IgLVhsaW5rZXIgJHtsaWJkaXJ9JwotCQllbHNlCi0JCQlDQ19TSEFSRURfT1BUUz0nK1onCi0JCQlMRF9TSEFSRURfT1BUUz0nLVdsLCtiLCR7bGliZGlyfScKLQkJZmkKLQkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gK2IgJHtsaWJkaXJ9IC1iIC1vICRAJwotCQkjIEhQLVVYIHNoYXJlZCBsaWJyYXJpZXMgbXVzdCBiZSBleGVjdXRhYmxlLCBhbmQgc2hvdWxkIGJlCi0JCSMgcmVhZG9ubHkgdG8gZXhwbG9pdCBhIHF1aXJrIGluIHRoZSBtZW1vcnkgbWFuYWdlci4KLQkJSU5TVEFMTF9MSUI9Ii1tIDU1NSIKLQkJOzsKLQlpcml4KikKLQkJaWYgdGVzdCAiJGNmX2N2X2xkX3JwYXRoIiA9IHllcyA7IHRoZW4KLQkJCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JCQkJY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJCQlFWFRSQV9MREZMQUdTPSItV2wsLXJwYXRoLFwke2xpYmRpcn0gJEVYVFJBX0xERkxBR1MiCi0JCQllbHNlCi0JCQkJY2ZfbGRfcnBhdGhfb3B0PSItcnBhdGggIgotCQkJCUVYVFJBX0xERkxBR1M9Ii1ycGF0aCBcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgotCQkJZmkKLQkJZmkKLQkJIyB0ZXN0ZWQgd2l0aCBJUklYIDUuMiBhbmQgJ2NjJy4KLQkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0JCQlDQ19TSEFSRURfT1BUUz0nLUtQSUMnCi0JCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1yZGF0YV9zaGFyZWQgLXNvbmFtZSBgYmFzZW5hbWUgJEBgIC1vICRAJwotCQllbHNlCi0JCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1XbCwtc29uYW1lLGBiYXNlbmFtZSAkQGAgLW8gJEAnCi0JCWZpCi0JCWNmX2N2X3JtX3NvX2xvY3M9eWVzCi0JCTs7Ci0JbGludXgqfGdudSp8aypic2QqLWdudSkKLQkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItV2wsLXJwYXRoLFwkKExPQ0FMX0xJQkRJUikiCi0JCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCi0JCWZpCi0JCWlmIHRlc3QgIiRjZl9jdl9sZF9ycGF0aCIgPSB5ZXMgOyB0aGVuCi0JCQljZl9sZF9ycGF0aF9vcHQ9Ii1XbCwtcnBhdGgsIgotCQkJRVhUUkFfTERGTEFHUz0iLVdsLC1ycGF0aCxcJHtsaWJkaXJ9ICRFWFRSQV9MREZMQUdTIgotCQlmaQotCi0JdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAotCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgotCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKLQllbHNlCi0JCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCi0JZmkKLQotCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJEAnCi0JCTs7Ci0Jb3BlbmJzZFsyLTldLiopCi0JCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiIDsgdGhlbgotCQkJTE9DQUxfTERGTEFHUz0iLVdsLC1ycGF0aCxcJChMT0NBTF9MSUJESVIpIgotCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgotCQlmaQotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKLQkJZmkKLQkJQ0NfU0hBUkVEX09QVFM9IiRDQ19TSEFSRURfT1BUUyAtRFBJQyIKLQotCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKLQlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KLQkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAIC4ke1JFTF9WRVJTSU9OfWAuJHtBQklfVkVSU0lPTn0nCi0JZWxzZQotCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEBgJwotCWZpCi0KLQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1XbCwtQnNoYXJlYWJsZSwtc29uYW1lLCckY2ZfY3Zfc2hhcmVkX3NvbmFtZScsLXN0YXRzLC1sYyAtbyAkQCcKLQkJOzsKLQludG8tcW54KnxvcGVuYnNkKnxmcmVlYnNkWzEyXS4qKQotCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgotCQlNS19TSEFSRURfTElCPScke0xEfSAtQnNoYXJlYWJsZSAtbyAkQCcKLQkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAotCQk7OwotCWZyZWVic2QqKQotCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgotCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiAmJiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJTE9DQUxfTERGTEFHUz0iLXJwYXRoIFwkKExPQ0FMX0xJQkRJUikiCi0JCQlMT0NBTF9MREZMQUdTMj0iLXJwYXRoIFwke2xpYmRpcn0gJExPQ0FMX0xERkxBR1MiCi0JCQljZl9sZF9ycGF0aF9vcHQ9Ii1ycGF0aCAiCi0JCQlFWFRSQV9MREZMQUdTPSItcnBhdGggXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKLQkJZmkKLQotCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKLQlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KLQkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAIC4ke1JFTF9WRVJTSU9OfWAuJHtBQklfVkVSU0lPTn0nCi0JZWxzZQotCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEBgJwotCWZpCi0KLQkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLUJzaGFyZWFibGUgLXNvbmFtZT1gYmFzZW5hbWUgJEBgIC1vICRAJwotCQk7OwotCW5ldGJzZCopCi0JCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCi0JCXRlc3QgIiRjZl9jdl9sZF9ycGF0aCIgPSB5ZXMgJiYgY2ZfbGRfcnBhdGhfb3B0PSItV2wsLXJwYXRoLCIKLQkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgJiYgdGVzdCAiJGNmX2N2X2xkX3JwYXRoIiA9IHllcyA7IHRoZW4KLQkJCUxPQ0FMX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCQoTE9DQUxfTElCRElSKSIKLQkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKLQkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKLQkJCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG87IHRoZW4KLQkJCWlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLmVsZl9zbzsgdGhlbgotCQkJCWNmX2N2X3NobGliX3ZlcnNpb249YWJpCi0JCQllbHNlCi0JCQkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKLQkJCWZpCi0JCQlmaQotCi0JdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAotCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgotCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKLQllbHNlCi0JCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCi0JZmkKLQotCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1zaGFyZWQgLVdsLC1zb25hbWUsJyRjZl9jdl9zaGFyZWRfc29uYW1lJyAtbyAkQCcKLQkJZWxzZQotCQkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLUJzaGFyZWFibGUgLW8gJEAnCi0JCWZpCi0JCTs7Ci0Jb3NmKnxtbHMrKikKLQkJIyB0ZXN0ZWQgd2l0aCBPU0YvMSBWMy4yIGFuZCAnY2MnCi0JCSMgdGVzdGVkIHdpdGggT1NGLzEgVjMuMiBhbmQgZ2NjIDIuNi4zIChidXQgdGhlIGMrKyBkZW1vIGRpZG4ndAotCQkjIGxpbmsgd2l0aCBzaGFyZWQgbGlicykuCi0JCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1zZXRfdmVyc2lvbiAke1JFTF9WRVJTSU9OfToke0FCSV9WRVJTSU9OfSAtZXhwZWN0X3VucmVzb2x2ZWQgIioiIC1zaGFyZWQgLXNvbmFtZSBgYmFzZW5hbWUgJEBgJwotCQljYXNlICRob3N0X29zIGluCi0JCW9zZjQqKQotCQkJTUtfU0hBUkVEX0xJQj0iJHtNS19TSEFSRURfTElCfSAtbXN5bSIKLQkJCTs7Ci0JCWVzYWMKLQkJTUtfU0hBUkVEX0xJQj0iJHtNS19TSEFSRURfTElCfSInIC1vICRAJwotCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KLQkJCUxPQ0FMX0xERkxBR1M9Ii1XbCwtcnBhdGgsXCQoTE9DQUxfTElCRElSKSIKLQkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKLQkJZmkKLQkJaWYgdGVzdCAiJGNmX2N2X2xkX3JwYXRoIiA9IHllcyA7IHRoZW4KLQkJCWNmX2xkX3JwYXRoX29wdD0iLXJwYXRoIgotCQkJIyBFWFRSQV9MREZMQUdTPSIkTE9DQUxfTERGTEFHUyAkRVhUUkFfTERGTEFHUyIKLQkJZmkKLQkJY2ZfY3Zfcm1fc29fbG9jcz15ZXMKLQkJOzsKLQlzY28zLjJ2NSopICAjIChhbHNvIHV3MiogYW5kIFVXNykgaG9wcyAxMy1BcHItOTgKLQkJIyB0ZXN0ZWQgd2l0aCBvc3I1LjAuNQotCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLQkJCUNDX1NIQVJFRF9PUFRTPSctYmVsZiAtS1BJQycKLQkJZmkKLQkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWR5IC1HIC1oIGBiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059IC1vICRAJwotCQlpZiB0ZXN0ICIkY2ZfY3ZfbGRfcnBhdGgiID0geWVzIDsgdGhlbgotCQkJIyBvbmx5IHdheSBpcyB0byBzZXQgTERfUlVOX1BBVEggYnV0IG5vIHN3aXRjaCBmb3IgaXQKLQkJCVJVTl9QQVRIPSRsaWJkaXIKLQkJZmkKLQkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAotCQlMSU5LX1BST0dTPSdMRF9SVU5fUEFUSD0ke2xpYmRpcn0nCi0JCUxJTktfVEVTVFM9J1B3ZD1gcHdkYDtMRF9SVU5fUEFUSD1gZGlybmFtZSAkJHtQd2R9YC9saWInCi0JCTs7Ci0Jc3Vub3M0KikKLQkJIyB0ZXN0ZWQgd2l0aCBTdW5PUyA0LjEuMSBhbmQgZ2NjIDIuNy4wCi0JCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJwotCQlmaQotCQlNS19TSEFSRURfTElCPScke0xEfSAtYXNzZXJ0IHB1cmUtdGV4dCAtbyAkQCcKLQkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAotCQk7OwotCXNvbGFyaXMyKikKLQkJIyB0ZXN0ZWQgd2l0aCBTdW5PUyA1LjUuMSAoc29sYXJpcyAyLjUuMSkgYW5kIGdjYyAyLjcuMgotCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDUuMTAgKHNvbGFyaXMgMTApIGFuZCBnY2MgMy40LjMKLQkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCi0JCQlMT0NBTF9MREZMQUdTPSItUiBcJChMT0NBTF9MSUJESVIpOlwke2xpYmRpcn0iCi0JCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCi0JCWZpCi0JCWlmIHRlc3QgIiRjZl9jdl9sZF9ycGF0aCIgPSB5ZXMgOyB0aGVuCi0JCQljZl9sZF9ycGF0aF9vcHQ9Ii1SIgotCQkJRVhUUkFfTERGTEFHUz0iJExPQ0FMX0xERkxBR1MgJEVYVFJBX0xERkxBR1MiCi0JCWZpCi0KLQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCi0JaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCi0JCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JwotCWVsc2UKLQkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKLQlmaQotCi0JCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotCQkJQ0NfU0hBUkVEX09QVFM9Jy14Y29kZT1waWMzMicKLQkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1keSAtRyAtaCAnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRAJwotCQllbHNlCi0JCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1keSAtRyAtaCAnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRAJwotCQlmaQotCQk7OwotCXN5c3Y1dXc3Knx1bml4X3N2KikKLQkJIyB0ZXN0ZWQgd2l0aCBVbml4V2FyZSA3LjEuMCAoZ2NjIDIuOTUuMiBhbmQgY2MpCi0JCWlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotCQkJQ0NfU0hBUkVEX09QVFM9Jy1LUElDJwotCQlmaQotCQlNS19TSEFSRURfTElCPScke0xEfSAtZCB5IC1HIC1vICRAJwotCQk7OwotCSopCi0JCUNDX1NIQVJFRF9PUFRTPSd1bmtub3duJwotCQlNS19TSEFSRURfTElCPSdlY2hvIHVua25vd24nCi0JCTs7Ci0JZXNhYwotCi0JIyBUaGlzIHdvcmtzIGlmIHRoZSBsYXN0IHRva2VucyBpbiAkTUtfU0hBUkVEX0xJQiBhcmUgdGhlIC1vIHRhcmdldC4KLQljYXNlICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgaW4gIyh2aQotCXJlbHxhYmkpCi0JCWNhc2UgIiRNS19TSEFSRURfTElCIiBpbiAjKHZpCi0JCSonLW8gJEAnKQotCQkJdGVzdCAiJGNmX2N2X2RvX3N5bWxpbmtzIiA9IG5vICYmIGNmX2N2X2RvX3N5bWxpbmtzPXllcwotCQkJOzsKLQkJKikKLQkJCXsgZWNobyAiJGFzX21lOjUyODg6IFdBUk5JTkc6IGlnbm9yZWQgLS13aXRoLXNobGliLXZlcnNpb24iID4mNQotZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpZ25vcmVkIC0td2l0aC1zaGxpYi12ZXJzaW9uIiA+JjI7fQotCQkJOzsKLQkJZXNhYwotCQk7OwotCWVzYWMKLQotCWlmIHRlc3QgLW4gIiRjZl9sZF9ycGF0aF9vcHQiIDsgdGhlbgotCQllY2hvICIkYXNfbWU6NTI5NjogY2hlY2tpbmcgaWYgd2UgbmVlZCBhIHNwYWNlIGFmdGVyIHJwYXRoIG9wdGlvbiIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIG5lZWQgYSBzcGFjZSBhZnRlciBycGF0aCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2Ci0JCWNmX3NhdmVfTElCUz0iJExJQlMiCi0JCUxJQlM9IiRMSUJTICR7Y2ZfbGRfcnBhdGhfb3B0fSRsaWJkaXIiCi0JCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNTMwMSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo1MzEzOiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo1MzE2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTMxOTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjUzMjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9ycGF0aF9zcGFjZT1ubwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl9ycGF0aF9zcGFjZT15ZXMKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0JCUxJQlM9IiRjZl9zYXZlX0xJQlMiCi0JCWVjaG8gIiRhc19tZTo1MzMyOiByZXN1bHQ6ICRjZl9ycGF0aF9zcGFjZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfcnBhdGhfc3BhY2UiID4mNgotCQl0ZXN0ICIkY2ZfcnBhdGhfc3BhY2UiID0geWVzICYmIGNmX2xkX3JwYXRoX29wdD0iJGNmX2xkX3JwYXRoX29wdCAiCi0JCU1LX1NIQVJFRF9MSUI9IiRNS19TSEFSRURfTElCICRjZl9sZF9ycGF0aF9vcHRcJHtsaWJkaXJ9IgotCWZpCi0KLWlmIHRlc3QgIiRDQ19TSEFSRURfT1BUUyIgPSAidW5rbm93biI7IHRoZW4KLQlmb3IgbW9kZWwgaW4gJGNmX2xpc3RfbW9kZWxzOyBkbwotCQlpZiB0ZXN0ICIkbW9kZWwiID0gInNoYXJlZCI7IHRoZW4KLQkJCXsgeyBlY2hvICIkYXNfbWU6NTM0MTogZXJyb3I6IFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0JCWZpCi0JZG9uZQotZmkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtb3ZlcndyaXRlIHRvIGxlYXZlIG91dCB0aGUgbGluayB0byAtbGN1cnNlcwotZWNobyAiJGFzX21lOjUzNTE6IGNoZWNraW5nIGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgbmN1cnNlcyBvdmVyd3JpdGluZyBjdXJzZXMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2lzaCB0byBpbnN0YWxsIG5jdXJzZXMgb3ZlcndyaXRpbmcgY3Vyc2VzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb3ZlcndyaXRlIG9yIC0tZGlzYWJsZS1vdmVyd3JpdGUgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfb3ZlcndyaXRlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9vdmVyd3JpdGUiCi0gIHdpdGhfb3ZlcndyaXRlPSRlbmFibGV2YWwKLWVsc2UKLSAgaWYgdGVzdCAiJHByZWZpeCIgPSAiL3VzciIgOyB0aGVuIHdpdGhfb3ZlcndyaXRlPXllczsgZWxzZSB3aXRoX292ZXJ3cml0ZT1ubzsgZmkKLWZpOwotZWNobyAiJGFzX21lOjUzNjE6IHJlc3VsdDogJHdpdGhfb3ZlcndyaXRlIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX292ZXJ3cml0ZSIgPiY2Ci0KLWVjaG8gIiRhc19tZTo1MzY0OiBjaGVja2luZyBpZiBleHRlcm5hbCB0ZXJtaW5mby1kYXRhYmFzZSBpcyB1c2VkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZXh0ZXJuYWwgdGVybWluZm8tZGF0YWJhc2UgaXMgdXNlZC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRhdGFiYXNlIG9yIC0tZGlzYWJsZS1kYXRhYmFzZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9kYXRhYmFzZStzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfZGF0YWJhc2UiCi0gIHVzZV9kYXRhYmFzZT0kZW5hYmxldmFsCi1lbHNlCi0gIHVzZV9kYXRhYmFzZT15ZXMKLWZpOwotZWNobyAiJGFzX21lOjUzNzQ6IHJlc3VsdDogJHVzZV9kYXRhYmFzZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kdXNlX2RhdGFiYXNlIiA+JjYKLQotY2FzZSAkaG9zdF9vcyBpbiAjKHZpCi1vczIqKSAjKHZpCi0JVEVSTUlORk9fU1JDPScke3RvcF9zcmNkaXJ9L21pc2MvZW14LnNyYycKLQk7OwotKikgIyh2aQotCVRFUk1JTkZPX1NSQz0nJHt0b3Bfc3JjZGlyfS9taXNjL3Rlcm1pbmZvLnNyYycKLQk7OwotZXNhYwotCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KLQlvczIqKQlQQVRIU0VQPSc7JyAgOzsKLQkqKQlQQVRIU0VQPSc6JyAgOzsKLQllc2FjCi0KLWlmIHRlc3QgIiR1c2VfZGF0YWJhc2UiICE9IG5vIDsgdGhlbgotCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9EQVRBQkFTRSAxCi1FT0YKLQotCWVjaG8gIiRhc19tZTo1Mzk2OiBjaGVja2luZyB3aGljaCB0ZXJtaW5mbyBzb3VyY2UtZmlsZSB3aWxsIGJlIGluc3RhbGxlZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoaWNoIHRlcm1pbmZvIHNvdXJjZS1maWxlIHdpbGwgYmUgaW5zdGFsbGVkLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGF0YWJhc2Ugb3IgLS1kaXNhYmxlLWRhdGFiYXNlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2RhdGFiYXNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9kYXRhYmFzZSIKLSAgVEVSTUlORk9fU1JDPSR3aXRodmFsCi1maTsKLQllY2hvICIkYXNfbWU6NTQwNDogcmVzdWx0OiAkVEVSTUlORk9fU1JDIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRURVJNSU5GT19TUkMiID4mNgotCi0JZWNobyAiJGFzX21lOjU0MDc6IGNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIGhhc2hlZCBkYXRhYmFzZSBpbnN0ZWFkIG9mIGRpcmVjdG9yeS90cmVlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0byB1c2UgaGFzaGVkIGRhdGFiYXNlIGluc3RlYWQgb2YgZGlyZWN0b3J5L3RyZWUuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaGFzaGVkLWRiIG9yIC0td2l0aG91dC1oYXNoZWQtZGIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2hhc2hlZF9kYitzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9oYXNoZWRfZGIiCi0KLWVsc2UKLSAgd2l0aF9oYXNoZWRfZGI9bm8KLWZpOwotCWVjaG8gIiRhc19tZTo1NDE3OiByZXN1bHQ6ICR3aXRoX2hhc2hlZF9kYiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9oYXNoZWRfZGIiID4mNgotZWxzZQotCXdpdGhfaGFzaGVkX2RiPW5vCi1maQotCi1lY2hvICIkYXNfbWU6NTQyMzogY2hlY2tpbmcgZm9yIGxpc3Qgb2YgZmFsbGJhY2sgZGVzY3JpcHRpb25zIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGxpc3Qgb2YgZmFsbGJhY2sgZGVzY3JpcHRpb25zLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWZhbGxiYWNrcyBvciAtLXdpdGhvdXQtZmFsbGJhY2tzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9mYWxsYmFja3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfZmFsbGJhY2tzIgotICB3aXRoX2ZhbGxiYWNrPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfZmFsbGJhY2s9Ci1maTsKLWVjaG8gIiRhc19tZTo1NDMzOiByZXN1bHQ6ICR3aXRoX2ZhbGxiYWNrIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2ZhbGxiYWNrIiA+JjYKLUZBTExCQUNLX0xJU1Q9YGVjaG8gIiR3aXRoX2ZhbGxiYWNrIiB8IHNlZCAtZSAncy8sLyAvZydgCi0KLWVjaG8gIiRhc19tZTo1NDM3OiBjaGVja2luZyBpZiB5b3Ugd2FudCBtb2Rlcm4geHRlcm0gb3IgYW50aXF1ZSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IG1vZGVybiB4dGVybSBvciBhbnRpcXVlLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXh0ZXJtLW5ldyBvciAtLXdpdGhvdXQteHRlcm0tbmV3IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF94dGVybV9uZXcrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfeHRlcm1fbmV3IgotICB3aXRoX3h0ZXJtX25ldz0kd2l0aHZhbAotZWxzZQotICB3aXRoX3h0ZXJtX25ldz15ZXMKLWZpOwotY2FzZSAkd2l0aF94dGVybV9uZXcgaW4KLW5vKQl3aXRoX3h0ZXJtX25ldz14dGVybS1vbGQ7OwotKikJd2l0aF94dGVybV9uZXc9eHRlcm0tbmV3OzsKLWVzYWMKLWVjaG8gIiRhc19tZTo1NDUxOiByZXN1bHQ6ICR3aXRoX3h0ZXJtX25ldyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF94dGVybV9uZXciID4mNgotV0hJQ0hfWFRFUk09JHdpdGhfeHRlcm1fbmV3Ci0KLU1BS0VfVEVSTUlORk89Ci1pZiB0ZXN0ICIkdXNlX2RhdGFiYXNlIiA9IG5vIDsgdGhlbgotCVRFUk1JTkZPPSIke2RhdGFkaXJ9L3Rlcm1pbmZvIgotCU1BS0VfVEVSTUlORk89IiMiCi1lbHNlCi0KLWVjaG8gIiRhc19tZTo1NDYxOiBjaGVja2luZyBmb3IgbGlzdCBvZiB0ZXJtaW5mbyBkaXJlY3RvcmllcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaXN0IG9mIHRlcm1pbmZvIGRpcmVjdG9yaWVzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRlcm1pbmZvLWRpcnMgb3IgLS13aXRob3V0LXRlcm1pbmZvLWRpcnMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3Rlcm1pbmZvX2RpcnMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfdGVybWluZm9fZGlycyIKLQotZWxzZQotICB3aXRodmFsPSR7VEVSTUlORk9fRElSUy0ke2RhdGFkaXJ9L3Rlcm1pbmZvfQotZmk7Ci1JRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke1BBVEhTRVB9IgotY2ZfZHN0X3BhdGg9Ci1mb3IgY2Zfc3JjX3BhdGggaW4gJHdpdGh2YWwKLWRvCi0KLWlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBjZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKLWVsc2UKLSAgY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLWZpCi0KLWNhc2UgIi4kY2Zfc3JjX3BhdGgiIGluICModmkKLS5cJFwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLlthLXpBLVpdOltcXC9dKikgIyh2aSBPUy8yIEVNWAotICA7OwotLlwkeypwcmVmaXh9KikgIyh2aQotICBldmFsIGNmX3NyY19wYXRoPSIkY2Zfc3JjX3BhdGgiCi0gIGNhc2UgIi4kY2Zfc3JjX3BhdGgiIGluICModmkKLSAgLk5PTkUvKikKLSAgICBjZl9zcmNfcGF0aD1gZWNobyAkY2Zfc3JjX3BhdGggfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gICAgOzsKLSAgZXNhYwotICA7OyAjKHZpCi0ubm98Lk5PTkUvKikKLSAgY2Zfc3JjX3BhdGg9YGVjaG8gJGNmX3NyY19wYXRoIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAotICA7OwotKikKLSAgeyB7IGVjaG8gIiRhc19tZTo1NTAxOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mNQotZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAgOzsKLWVzYWMKLQotICB0ZXN0IC1uICIkY2ZfZHN0X3BhdGgiICYmIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofToiCi0gIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofSR7Y2Zfc3JjX3BhdGh9IgotZG9uZQotSUZTPSIkYWNfc2F2ZV9pZnMiCi0KLWV2YWwgJ1RFUk1JTkZPX0RJUlM9IiRjZl9kc3RfcGF0aCInCi0KLWVjaG8gIiRhc19tZTo1NTE0OiByZXN1bHQ6ICRURVJNSU5GT19ESVJTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRURVJNSU5GT19ESVJTIiA+JjYKLXRlc3QgLW4gIiRURVJNSU5GT19ESVJTIiAmJiBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIFRFUk1JTkZPX0RJUlMgIiRURVJNSU5GT19ESVJTIgotRU9GCi0KLWVjaG8gIiRhc19tZTo1NTIwOiBjaGVja2luZyBmb3IgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGVmYXVsdC10ZXJtaW5mby1kaXIgb3IgLS13aXRob3V0LWRlZmF1bHQtdGVybWluZm8tZGlyIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kZWZhdWx0X3Rlcm1pbmZvX2RpcitzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9kZWZhdWx0X3Rlcm1pbmZvX2RpciIKLQotZWxzZQotICB3aXRodmFsPSIke1RFUk1JTkZPLSR7ZGF0YWRpcn0vdGVybWluZm99IgotZmk7IGlmIHRlc3QgLW4gIiR7ZGF0YWRpcn0vdGVybWluZm8iIDsgdGhlbgotCi1pZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KLSAgY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCi1lbHNlCi0gIGNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi1maQotCi1jYXNlICIuJHdpdGh2YWwiIGluICModmkKLS5cJFwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLlthLXpBLVpdOltcXC9dKikgIyh2aSBPUy8yIEVNWAotICA7OwotLlwkeypwcmVmaXh9KikgIyh2aQotICBldmFsIHdpdGh2YWw9IiR3aXRodmFsIgotICBjYXNlICIuJHdpdGh2YWwiIGluICModmkKLSAgLk5PTkUvKikKLSAgICB3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAotICAgIDs7Ci0gIGVzYWMKLSAgOzsgIyh2aQotLm5vfC5OT05FLyopCi0gIHdpdGh2YWw9YGVjaG8gJHdpdGh2YWwgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gIDs7Ci0qKQotICB7IHsgZWNobyAiJGFzX21lOjU1NTY6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAgOzsKLWVzYWMKLQotZmkKLVRFUk1JTkZPPSIkd2l0aHZhbCIKLQotZWNobyAiJGFzX21lOjU1NjU6IHJlc3VsdDogJFRFUk1JTkZPIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRURVJNSU5GTyIgPiY2Ci1jYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIFRFUk1JTkZPICIkVEVSTUlORk8iCi1FT0YKLQotZmkKLQotIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWJpZy1jb3JlIHRvIG1ha2UgdGljIHJ1biBvbiBzbWFsbCBtYWNoaW5lcwotIyMjCVdlIG5lZWQgNE1iLCBjaGVjayBpZiB3ZSBjYW4gYWxsb2NhdGUgNTAlIG1vcmUgdGhhbiB0aGF0LgotZWNobyAiJGFzX21lOjU1NzU6IGNoZWNraW5nIGlmIGJpZy1jb3JlIG9wdGlvbiBzZWxlY3RlZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIGJpZy1jb3JlIG9wdGlvbiBzZWxlY3RlZC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJpZy1jb3JlIG9yIC0tZGlzYWJsZS1iaWctY29yZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9iaWdfY29yZStzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfYmlnX2NvcmUiCi0gIHdpdGhfYmlnX2NvcmU9JGVuYWJsZXZhbAotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotICB3aXRoX2JpZ19jb3JlPW5vCi1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNTU4NyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLWludCBtYWluKCkgewotCXVuc2lnbmVkIGxvbmcgbiA9IDYwMDAwMDBMOwotCWNoYXIgKnMgPSBtYWxsb2Mobik7Ci0JaWYgKHMgIT0gMCkKLQkJc1swXSA9IHNbbi0xXSA9IDA7Ci0JJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShzID09IDApOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2MDE6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjU2MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2MDY6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo1NjA5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgd2l0aF9iaWdfY29yZT15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLWVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLXdpdGhfYmlnX2NvcmU9bm8KLWZpCi1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLWZpOwotZWNobyAiJGFzX21lOjU2MjE6IHJlc3VsdDogJHdpdGhfYmlnX2NvcmUiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfYmlnX2NvcmUiID4mNgotdGVzdCAiJHdpdGhfYmlnX2NvcmUiID0gInllcyIgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9CSUdfQ09SRSAxCi1FT0YKLQotIyMjIElTTyBDIG9ubHkgZ3VhcmFudGVlcyA1MTItY2hhciBzdHJpbmdzLCB3ZSBoYXZlIHRhYmxlcyB3aGljaCBsb2FkIGZhc3RlcgotIyMjIHdoZW4gY29uc3RydWN0ZWQgdXNpbmcgImJpZyIgc3RyaW5ncy4gIE1vcmUgdGhhbiB0aGUgQyBjb21waWxlciwgdGhlIGF3awotIyMjIHByb2dyYW0gaXMgYSBsaW1pdCBvbiBtb3N0IHZlbmRvciBVTklYIHN5c3RlbXMuICBDaGVjayB0aGF0IHdlIGNhbiBidWlsZC4KLWVjaG8gIiRhc19tZTo1NjMwOiBjaGVja2luZyBpZiBiaWctc3RyaW5ncyBvcHRpb24gc2VsZWN0ZWQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBiaWctc3RyaW5ncyBvcHRpb24gc2VsZWN0ZWQuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1iaWctc3RyaW5ncyBvciAtLWRpc2FibGUtYmlnLXN0cmluZ3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfYmlnX3N0cmluZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2JpZ19zdHJpbmdzIgotICB3aXRoX2JpZ19zdHJpbmdzPSRlbmFibGV2YWwKLWVsc2UKLQotICAgIGNhc2UgeCRBV0sgaW4gIyh2aQotICAgIHgpCi0gICAgICAgIGV2YWwgd2l0aF9iaWdfc3RyaW5ncz1ubwotICAgICAgICA7OwotICAgICopICModmkKLSAgICAgICAgaWYgKCAke0FXS30gJ0JFR0lOIHsgeHggPSAieCI7IHdoaWxlIChsZW5ndGgoeHgpIDwgMTIwMDApIHsgeHggPSB4eCAieCI7IH07IHByaW50ZigiJXNcbiIsIHh4KTsgfScgXAotICAgICAgICAgICAgfCAkQVdLICd7IHByaW50ZiAiJWRcbiIsIGxlbmd0aCgkMCk7IH0nIHwgJEFXSyAnQkVHSU4geyBlcWxzPTA7IHJlY3M9MDsgfSB7IHJlY3MrKzsgaWYgKCQwID09IDEyMDAwKSBlcWxzKys7IH0gRU5EIHsgaWYgKHJlY3MgIT0gMSB8fCBlcWxzICE9IDEpIGV4aXQgMTsgfScgMj4vZGV2L251bGwgPi9kZXYvbnVsbCApIDsgdGhlbgotICAgICAgICAgICAgZXZhbCB3aXRoX2JpZ19zdHJpbmdzPXllcwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBldmFsIHdpdGhfYmlnX3N0cmluZ3M9bm8KLSAgICAgICAgZmkKLSAgICAgICAgOzsKLSAgICBlc2FjCi0KLWZpOwotZWNobyAiJGFzX21lOjU2NTQ6IHJlc3VsdDogJHdpdGhfYmlnX3N0cmluZ3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfYmlnX3N0cmluZ3MiID4mNgotCi1VU0VfQklHX1NUUklOR1M9MAotdGVzdCAiJHdpdGhfYmlnX3N0cmluZ3MiID0gInllcyIgJiYgVVNFX0JJR19TVFJJTkdTPTEKLQotIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtdGVybWNhcCB0byBjb21waWxlIGluIHRoZSB0ZXJtY2FwIGZhbGxiYWNrIHN1cHBvcnQKLWVjaG8gIiRhc19tZTo1NjYxOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0ZXJtY2FwLWZhbGxiYWNrIHN1cHBvcnQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0ZXJtY2FwLWZhbGxiYWNrIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10ZXJtY2FwIG9yIC0tZGlzYWJsZS10ZXJtY2FwIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3Rlcm1jYXArc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3Rlcm1jYXAiCi0gIHdpdGhfdGVybWNhcD0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfdGVybWNhcD1ubwotZmk7Ci1lY2hvICIkYXNfbWU6NTY3MTogcmVzdWx0OiAkd2l0aF90ZXJtY2FwIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3Rlcm1jYXAiID4mNgotCi1pZiB0ZXN0ICIkd2l0aF90ZXJtY2FwIiAhPSAieWVzIiA7IHRoZW4KLQlpZiB0ZXN0ICIkdXNlX2RhdGFiYXNlIiA9IG5vIDsgdGhlbgotCQlpZiB0ZXN0IC16ICIkd2l0aF9mYWxsYmFjayIgOyB0aGVuCi0JCQl7IHsgZWNobyAiJGFzX21lOjU2Nzc6IGVycm9yOiBZb3UgaGF2ZSBkaXNhYmxlZCB0aGUgZGF0YWJhc2Ugdy9vIHNwZWNpZnlpbmcgZmFsbGJhY2tzIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IFlvdSBoYXZlIGRpc2FibGVkIHRoZSBkYXRhYmFzZSB3L28gc3BlY2lmeWluZyBmYWxsYmFja3MiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLQkJZmkKLQlmaQotCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFBVUkVfVEVSTUlORk8gMQotRU9GCi0KLWVsc2UKLQotaWYgdGVzdCAiJHdpdGhfdGljbGliIiAhPSBubyA7IHRoZW4KLQl7IHsgZWNobyAiJGFzX21lOjU2ODk6IGVycm9yOiBPcHRpb25zIC0td2l0aC10aWNsaWIgYW5kIC0tZW5hYmxlLXRlcm1jYXAgY2Fubm90IGJlIGNvbWJpbmVkIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IE9wdGlvbnMgLS13aXRoLXRpY2xpYiBhbmQgLS1lbmFibGUtdGVybWNhcCBjYW5ub3QgYmUgY29tYmluZWQiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLWZpCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9URVJNQ0FQIDEKLUVPRgotCi1lY2hvICIkYXNfbWU6NTY5ODogY2hlY2tpbmcgZm9yIGxpc3Qgb2YgdGVybWNhcCBmaWxlcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaXN0IG9mIHRlcm1jYXAgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdGVybXBhdGggb3IgLS13aXRob3V0LXRlcm1wYXRoIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF90ZXJtcGF0aCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF90ZXJtcGF0aCIKLQotZWxzZQotICB3aXRodmFsPSR7VEVSTVBBVEgtL2V0Yy90ZXJtY2FwOi91c3Ivc2hhcmUvbWlzYy90ZXJtY2FwfQotZmk7Ci1JRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke1BBVEhTRVB9IgotY2ZfZHN0X3BhdGg9Ci1mb3IgY2Zfc3JjX3BhdGggaW4gJHdpdGh2YWwKLWRvCi0KLWlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBjZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKLWVsc2UKLSAgY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLWZpCi0KLWNhc2UgIi4kY2Zfc3JjX3BhdGgiIGluICModmkKLS5cJFwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLlthLXpBLVpdOltcXC9dKikgIyh2aSBPUy8yIEVNWAotICA7OwotLlwkeypwcmVmaXh9KikgIyh2aQotICBldmFsIGNmX3NyY19wYXRoPSIkY2Zfc3JjX3BhdGgiCi0gIGNhc2UgIi4kY2Zfc3JjX3BhdGgiIGluICModmkKLSAgLk5PTkUvKikKLSAgICBjZl9zcmNfcGF0aD1gZWNobyAkY2Zfc3JjX3BhdGggfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gICAgOzsKLSAgZXNhYwotICA7OyAjKHZpCi0ubm98Lk5PTkUvKikKLSAgY2Zfc3JjX3BhdGg9YGVjaG8gJGNmX3NyY19wYXRoIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAotICA7OwotKikKLSAgeyB7IGVjaG8gIiRhc19tZTo1NzM4OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mNQotZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAgOzsKLWVzYWMKLQotICB0ZXN0IC1uICIkY2ZfZHN0X3BhdGgiICYmIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofToiCi0gIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofSR7Y2Zfc3JjX3BhdGh9IgotZG9uZQotSUZTPSIkYWNfc2F2ZV9pZnMiCi0KLWV2YWwgJ1RFUk1QQVRIPSIkY2ZfZHN0X3BhdGgiJwotCi1lY2hvICIkYXNfbWU6NTc1MTogcmVzdWx0OiAkVEVSTVBBVEgiID4mNQotZWNobyAiJHtFQ0hPX1R9JFRFUk1QQVRIIiA+JjYKLXRlc3QgLW4gIiRURVJNUEFUSCIgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBURVJNUEFUSCAiJFRFUk1QQVRIIgotRU9GCi0KLSMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWdldGNhcCB0byB1c2UgYSBoYWNrZWQgZ2V0Y2FwIGZvciByZWFkaW5nIHRlcm1jYXBzCi1lY2hvICIkYXNfbWU6NTc1ODogY2hlY2tpbmcgaWYgZmFzdCB0ZXJtY2FwLWxvYWRlciBpcyBuZWVkZWQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBmYXN0IHRlcm1jYXAtbG9hZGVyIGlzIG5lZWRlZC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdldGNhcCBvciAtLWRpc2FibGUtZ2V0Y2FwIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2dldGNhcCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfZ2V0Y2FwIgotICB3aXRoX2dldGNhcD0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfZ2V0Y2FwPW5vCi1maTsKLWVjaG8gIiRhc19tZTo1NzY4OiByZXN1bHQ6ICR3aXRoX2dldGNhcCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9nZXRjYXAiID4mNgotdGVzdCAiJHdpdGhfZ2V0Y2FwIiA9ICJ5ZXMiICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9HRVRDQVAgMQotRU9GCi0KLWVjaG8gIiRhc19tZTo1Nzc0OiBjaGVja2luZyBpZiB0cmFuc2xhdGVkIHRlcm1jYXBzIHdpbGwgYmUgY2FjaGVkIGluIH4vLnRlcm1pbmZvIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdHJhbnNsYXRlZCB0ZXJtY2FwcyB3aWxsIGJlIGNhY2hlZCBpbiB+Ly50ZXJtaW5mby4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdldGNhcC1jYWNoZSBvciAtLWRpc2FibGUtZ2V0Y2FwLWNhY2hlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2dldGNhcF9jYWNoZStzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfZ2V0Y2FwX2NhY2hlIgotICB3aXRoX2dldGNhcF9jYWNoZT0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfZ2V0Y2FwX2NhY2hlPW5vCi1maTsKLWVjaG8gIiRhc19tZTo1Nzg0OiByZXN1bHQ6ICR3aXRoX2dldGNhcF9jYWNoZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9nZXRjYXBfY2FjaGUiID4mNgotdGVzdCAiJHdpdGhfZ2V0Y2FwX2NhY2hlIiA9ICJ5ZXMiICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9HRVRDQVBfQ0FDSEUgMQotRU9GCi0KLWZpCi0KLSMjIyAgIFVzZSBvcHRpb24gLS1kaXNhYmxlLWhvbWUtdGVybWluZm8gdG8gY29tcGxldGVseSByZW1vdmUgfi8udGVybWluZm8KLWVjaG8gIiRhc19tZTo1NzkzOiBjaGVja2luZyBpZiB+Ly50ZXJtaW5mbyBpcyB3YW50ZWQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB+Ly50ZXJtaW5mbyBpcyB3YW50ZWQuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ob21lLXRlcm1pbmZvIG9yIC0tZGlzYWJsZS1ob21lLXRlcm1pbmZvIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2hvbWVfdGVybWluZm8rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2hvbWVfdGVybWluZm8iCi0gIHdpdGhfaG9tZV90ZXJtaW5mbz0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfaG9tZV90ZXJtaW5mbz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjU4MDM6IHJlc3VsdDogJHdpdGhfaG9tZV90ZXJtaW5mbyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9ob21lX3Rlcm1pbmZvIiA+JjYKLXRlc3QgIiR3aXRoX2hvbWVfdGVybWluZm8iID0gInllcyIgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX0hPTUVfVEVSTUlORk8gMQotRU9GCi0KLWVjaG8gIiRhc19tZTo1ODA5OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgcmVzdHJpY3RlZCBlbnZpcm9ubWVudCB3aGVuIHJ1bm5pbmcgYXMgcm9vdCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSByZXN0cmljdGVkIGVudmlyb25tZW50IHdoZW4gcnVubmluZyBhcyByb290Li4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcm9vdC1lbnZpcm9uIG9yIC0tZGlzYWJsZS1yb290LWVudmlyb24gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfcm9vdF9lbnZpcm9uK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9yb290X2Vudmlyb24iCi0gIHdpdGhfcm9vdF9lbnZpcm9uPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9yb290X2Vudmlyb249eWVzCi1maTsKLWVjaG8gIiRhc19tZTo1ODE5OiByZXN1bHQ6ICR3aXRoX3Jvb3RfZW52aXJvbiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9yb290X2Vudmlyb24iID4mNgotdGVzdCAiJHdpdGhfcm9vdF9lbnZpcm9uIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBVU0VfUk9PVF9FTlZJUk9OIDEKLUVPRgotCi0jIyMgICBVc2Ugb3B0aW9uIC0tZW5hYmxlLXN5bWxpbmtzIHRvIG1ha2UgdGljIHVzZSBzeW1saW5rcywgbm90IGhhcmQgbGlua3MKLSMjIyAgIHRvIHJlZHVjZSBzdG9yYWdlIHJlcXVpcmVtZW50cyBmb3IgdGhlIHRlcm1pbmZvIGRhdGFiYXNlLgotCi1mb3IgYWNfZnVuYyBpbiBcCi0JcmVtb3ZlIFwKLQl1bmxpbmsKLWRvCi1hc19hY192YXI9YGVjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAotZWNobyAiJGFzX21lOjU4MzM6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKLWlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA1ODM5ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLS8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jICgpOyBiZWxvdy4gICovCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0vKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyICRhY19mdW5jICgpOwotY2hhciAoKmYpICgpOwotCi1pbnQKLW1haW4gKCkKLXsKLS8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKLSAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAotICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwotI2lmIGRlZmluZWQgKF9fc3R1Yl8kYWNfZnVuYykgfHwgZGVmaW5lZCAoX19zdHViX19fJGFjX2Z1bmMpCi1jaG9rZSBtZQotI2Vsc2UKLWYgPSAkYWNfZnVuYzsKLSNlbmRpZgotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo1ODcwOiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo1ODczOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTg3NjogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjU4Nzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBldmFsICIkYXNfYWNfdmFyPXllcyIKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotZXZhbCAiJGFzX2FjX3Zhcj1ubyIKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjU4ODk6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQotZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgotaWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKLUVPRgotCi1maQotZG9uZQotCi1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KLQotZm9yIGFjX2Z1bmMgaW4gXAotCQlsaW5rIFwKLQkJc3ltbGluawotZG8KLWFzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCi1lY2hvICIkYXNfbWU6NTkwNjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19mdW5jLi4uICRFQ0hPX0MiID4mNgotaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY192YXIrc2V0fVwiID0gc2V0IjsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDU5MTIgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LiAgKi8KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgJGFjX2Z1bmMgKCk7Ci1jaGFyICgqZikgKCk7Ci0KLWludAotbWFpbiAoKQotewotLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwotICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCi0gICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0jaWYgZGVmaW5lZCAoX19zdHViXyRhY19mdW5jKSB8fCBkZWZpbmVkIChfX3N0dWJfX18kYWNfZnVuYykKLWNob2tlIG1lCi0jZWxzZQotZiA9ICRhY19mdW5jOwotI2VuZGlmCi0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU5NDM6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjU5NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo1OTQ5OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NTk1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGV2YWwgIiRhc19hY192YXI9eWVzIgotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1ldmFsICIkYXNfYWNfdmFyPW5vIgotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6NTk2MjogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1Ci1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2Ci1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQotRU9GCi0KLWZpCi1kb25lCi0KLWVsc2UKLQllY2hvICIkYXNfbWU6NTk3MzogY2hlY2tpbmcgaWYgbGluay9zeW1saW5rIGZ1bmN0aW9ucyB3b3JrIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbGluay9zeW1saW5rIGZ1bmN0aW9ucyB3b3JrLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHtjZl9jdl9saW5rX2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLQkJY2ZfY3ZfbGlua19mdW5jcz0KLQkJZm9yIGNmX2Z1bmMgaW4gbGluayBzeW1saW5rIDsgZG8KLQkJCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0KLQkJCWV2YWwgJ2FjX2N2X2Z1bmNfJyRjZl9mdW5jJz1lcnJvcicKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA1OTg2ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaWZkZWYgSEFWRV9VTklTVERfSAotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi1pbnQgbWFpbigpCi17Ci0JaW50IGZhaWwgPSAwOwotCWNoYXIgKnNyYyA9ICJjb25maWcubG9nIjsKLQljaGFyICpkc3QgPSAiY29uZnRlc3QuY2hrIjsKLQlzdHJ1Y3Qgc3RhdCBzcmNfc2I7Ci0Jc3RydWN0IHN0YXQgZHN0X3NiOwotCi0Jc3RhdChzcmMsICZzcmNfc2IpOwotCWZhaWwgPSAoJGNmX2Z1bmMoImNvbmZpZy5sb2ciLCAiY29uZnRlc3QuY2hrIikgPCAwKQotCSAgICB8fCAoc3RhdChkc3QsICZkc3Rfc2IpIDwgMCkKLQkgICAgfHwgKGRzdF9zYi5zdF9tdGltZSAhPSBzcmNfc2Iuc3RfbXRpbWUpOwotI2lmZGVmIEhBVkVfVU5MSU5LCi0JdW5saW5rKGRzdCk7Ci0jZWxzZQotCXJlbW92ZShkc3QpOwotI2VuZGlmCi0JJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSAoZmFpbCk7Ci19Ci0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MDE2OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2MDE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2MDIxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjAyNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0KLQkJCWNmX2N2X2xpbmtfZnVuY3M9IiRjZl9jdl9saW5rX2Z1bmNzICRjZl9mdW5jIgotCQkJZXZhbCAnYWNfY3ZfZnVuY18nJGNmX2Z1bmMnPXllcycKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLWVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotCQkJZXZhbCAnYWNfY3ZfZnVuY18nJGNmX2Z1bmMnPW5vJwotZmkKLXJtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotCQlkb25lCi0JCXRlc3QgLXogIiRjZl9jdl9saW5rX2Z1bmNzIiAmJiBjZl9jdl9saW5rX2Z1bmNzPW5vCi0KLWZpCi1lY2hvICIkYXNfbWU6NjA0MjogcmVzdWx0OiAkY2ZfY3ZfbGlua19mdW5jcyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfbGlua19mdW5jcyIgPiY2Ci0JdGVzdCAiJGFjX2N2X2Z1bmNfbGluayIgICAgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9MSU5LIDEKLUVPRgotCi0JdGVzdCAiJGFjX2N2X2Z1bmNfc3ltbGluayIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9TWU1MSU5LIDEKLUVPRgotCi1maQotCi13aXRoX2xpbmtzPW5vCi13aXRoX3N5bWxpbmtzPW5vCi0KLSMgc29mdCBsaW5rcyAoc3ltYm9saWMgbGlua3MpIGFyZSB1c2VmdWwgZm9yIHNvbWUgc3lzdGVtcyB3aGVyZSBoYXJkIGxpbmtzIGRvCi0jIG5vdCB3b3JrLCBvciB0byBtYWtlIGl0IHNpbXBsZXIgdG8gY29weSB0ZXJtaW5mbyB0cmVlcyBhcm91bmQuCi1pZiB0ZXN0ICIkYWNfY3ZfZnVuY19zeW1saW5rIiA9IHllcyA7IHRoZW4KLSAgICBlY2hvICIkYXNfbWU6NjA2MDogY2hlY2tpbmcgaWYgdGljIHNob3VsZCB1c2Ugc3ltYm9saWMgbGlua3MiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aWMgc2hvdWxkIHVzZSBzeW1ib2xpYyBsaW5rcy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN5bWxpbmtzIG9yIC0tZGlzYWJsZS1zeW1saW5rcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zeW1saW5rcytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfc3ltbGlua3MiCi0gIHdpdGhfc3ltbGlua3M9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3N5bWxpbmtzPW5vCi1maTsKLSAgICBlY2hvICIkYXNfbWU6NjA3MDogcmVzdWx0OiAkd2l0aF9zeW1saW5rcyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9zeW1saW5rcyIgPiY2Ci1maQotCi0jIElmIHdlIGhhdmUgaGFyZCBsaW5rcyBhbmQgZGlkIG5vdCBjaG9vc2UgdG8gdXNlIHNvZnQgbGlua3MgaW5zdGVhZCwgdGhlcmUgaXMKLSMgbm8gcmVhc29uIHRvIG1ha2UgdGhpcyBjaG9pY2Ugb3B0aW9uYWwgLSB1c2UgdGhlIGhhcmQgbGlua3MuCi1pZiB0ZXN0ICIkd2l0aF9zeW1saW5rcyIgPSBubyA7IHRoZW4KLSAgICBlY2hvICIkYXNfbWU6NjA3NzogY2hlY2tpbmcgaWYgdGljIHNob3VsZCB1c2UgaGFyZCBsaW5rcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRpYyBzaG91bGQgdXNlIGhhcmQgbGlua3MuLi4gJEVDSE9fQyIgPiY2Ci0gICAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfbGluayIgPSB5ZXMgOyB0aGVuCi0Jd2l0aF9saW5rcz15ZXMKLSAgICBlbHNlCi0Jd2l0aF9saW5rcz1ubwotICAgIGZpCi0gICAgZWNobyAiJGFzX21lOjYwODQ6IHJlc3VsdDogJHdpdGhfbGlua3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfbGlua3MiID4mNgotZmkKLQotdGVzdCAiJHdpdGhfbGlua3MiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9MSU5LUyAxCi1FT0YKLQotdGVzdCAiJHdpdGhfc3ltbGlua3MiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9TWU1MSU5LUyAxCi1FT0YKLQotIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1icm9rZW4tbGlua2VyIHRvIGZvcmNlIG9uIHVzZSBvZiBicm9rZW4tbGlua2VyIHN1cHBvcnQKLWVjaG8gIiRhc19tZTo2MDk3OiBjaGVja2luZyBpZiB5b3Ugd2FudCBicm9rZW4tbGlua2VyIHN1cHBvcnQgY29kZSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGJyb2tlbi1saW5rZXIgc3VwcG9ydCBjb2RlLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYnJva2VuX2xpbmtlciBvciAtLWRpc2FibGUtYnJva2VuX2xpbmtlciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9icm9rZW5fbGlua2VyK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9icm9rZW5fbGlua2VyIgotICB3aXRoX2Jyb2tlbl9saW5rZXI9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX2Jyb2tlbl9saW5rZXI9JHtCUk9LRU5fTElOS0VSLW5vfQotZmk7Ci1lY2hvICIkYXNfbWU6NjEwNzogcmVzdWx0OiAkd2l0aF9icm9rZW5fbGlua2VyIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2Jyb2tlbl9saW5rZXIiID4mNgotCi1CUk9LRU5fTElOS0VSPTAKLWlmIHRlc3QgIiR3aXRoX2Jyb2tlbl9saW5rZXIiID0geWVzIDsgdGhlbgotCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEJST0tFTl9MSU5LRVIgMQotRU9GCi0KLQlCUk9LRU5fTElOS0VSPTEKLWVsaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gc2hhcmVkIDsgdGhlbgotCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluICModmkKLQljeWd3aW4qKQotCQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBCUk9LRU5fTElOS0VSIDEKLUVPRgotCi0JCUJST0tFTl9MSU5LRVI9MQotCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWN5Z3dpbiBsaW5rZXIgaXMgYnJva2VuIGFueXdheSIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NjEyNzogdGVzdGluZyBjeWd3aW4gbGlua2VyIGlzIGJyb2tlbiBhbnl3YXkgLi4uIiAxPiY1Ci0KLQkJOzsKLQllc2FjCi1maQotCi0jIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWJzZHBhZCB0byBoYXZlIHRwdXRzIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nCi1lY2hvICIkYXNfbWU6NjEzNDogY2hlY2tpbmcgaWYgdHB1dHMgc2hvdWxkIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdHB1dHMgc2hvdWxkIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYnNkcGFkIG9yIC0tZGlzYWJsZS1ic2RwYWQgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfYnNkcGFkK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9ic2RwYWQiCi0gIHdpdGhfYnNkcGFkPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9ic2RwYWQ9bm8KLWZpOwotZWNobyAiJGFzX21lOjYxNDQ6IHJlc3VsdDogJHdpdGhfYnNkcGFkIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2JzZHBhZCIgPiY2Ci10ZXN0ICIkd2l0aF9ic2RwYWQiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEJTRF9UUFVUUyAxCi1FT0YKLQotIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS13aWRlYyB0byB0dXJuIG9uIHVzZSBvZiB3aWRlLWNoYXJhY3RlciBzdXBwb3J0Ci1OQ1VSU0VTX0NIX1Q9Y2h0eXBlCi1OQ1VSU0VTX0xJQlVURjg9MAotCi1ORUVEX1dDSEFSX0g9MAotTkNVUlNFU19NQlNUQVRFX1Q9MAotTkNVUlNFU19XQ0hBUl9UPTAKLU5DVVJTRVNfV0lOVF9UPTAKLQotIyBDaGVjayB0byBkZWZpbmUgX1hPUEVOX1NPVVJDRSAiYXV0b21hdGljYWxseSIKLQotZWNobyAiJGFzX21lOjYxNjE6IGNoZWNraW5nIGlmICRDQyAtVSBhbmQgLUQgb3B0aW9ucyB3b3JrIHRvZ2V0aGVyIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJENDIC1VIGFuZCAtRCBvcHRpb25zIHdvcmsgdG9nZXRoZXIuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X2NjX3VfZF9vcHRpb25zK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLQljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0JQ1BQRkxBR1M9Ii1VVV9EX09QVElPTlMgLURVX0RfT1BUSU9OUyAtRERfVV9PUFRJT05TIC1VRF9VX09QVElPTlMiCi0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2MTcwICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotaW50Ci1tYWluICgpCi17Ci0KLSNpZm5kZWYgVV9EX09QVElPTlMKLW1ha2UgYW4gdW5kZWZpbmVkLWVycm9yCi0jZW5kaWYKLSNpZmRlZiAgRF9VX09QVElPTlMKLW1ha2UgYSBkZWZpbmVkLWVycm9yCi0jZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MTg5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2MTkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjYxOTU6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2MTk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLQotCWNmX2N2X2NjX3VfZF9vcHRpb25zPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLQljZl9jdl9jY191X2Rfb3B0aW9ucz1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLQotZmkKLWVjaG8gIiRhc19tZTo2MjEyOiByZXN1bHQ6ICRjZl9jdl9jY191X2Rfb3B0aW9ucyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfY2NfdV9kX29wdGlvbnMiID4mNgotCi1jZl9YT1BFTl9TT1VSQ0U9NTAwCi1jZl9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCi0KLWNhc2UgJGhvc3Rfb3MgaW4gIyh2aQotYWl4WzQ1XSopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0FMTF9TT1VSQ0UiCi0JOzsKLWZyZWVic2QqfGRyYWdvbmZseSopICModmkKLQkjIDUueCBoZWFkZXJzIGFzc29jaWF0ZQotCSMJX1hPUEVOX1NPVVJDRT02MDAgd2l0aCBfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAotCSMJX1hPUEVOX1NPVVJDRT01MDAgd2l0aCBfUE9TSVhfQ19TT1VSQ0U9MTk5NTA2TAotCWNmX1BPU0lYX0NfU09VUkNFPTIwMDExMkwKLQljZl9YT1BFTl9TT1VSQ0U9NjAwCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9CU0RfVFlQRVMgLURfX0JTRF9WSVNJQkxFIC1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKLQk7OwotaHB1eCopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0hQVVhfU09VUkNFIgotCTs7Ci1pcml4WzU2XS4qKSAjKHZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9TR0lfU09VUkNFIgotCTs7Ci1saW51eCp8Z251KnxrKmJzZCotZ251KSAjKHZpCi0KLWVjaG8gIiRhc19tZTo2MjM4OiBjaGVja2luZyBpZiB3ZSBtdXN0IGRlZmluZSBfR05VX1NPVVJDRSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9HTlVfU09VUkNFLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHtjZl9jdl9nbnVfc291cmNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNjI0NSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1pbnQKLW1haW4gKCkKLXsKLQotI2lmbmRlZiBfWE9QRU5fU09VUkNFCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjI2MDogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjI2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2MjY2OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjI2OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X2dudV9zb3VyY2U9bm8KLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2Zfc2F2ZT0iJENQUEZMQUdTIgotCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0dOVV9TT1VSQ0UiCi0JIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNjI3OCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1pbnQKLW1haW4gKCkKLXsKLQotI2lmZGVmIF9YT1BFTl9TT1VSQ0UKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZgotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MjkzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2Mjk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjYyOTk6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2MzAyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfZ251X3NvdXJjZT1ubwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl9jdl9nbnVfc291cmNlPXllcwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCUNQUEZMQUdTPSIkY2Zfc2F2ZSIKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCi1maQotZWNobyAiJGFzX21lOjYzMTc6IHJlc3VsdDogJGNmX2N2X2dudV9zb3VyY2UiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2dudV9zb3VyY2UiID4mNgotdGVzdCAiJGNmX2N2X2dudV9zb3VyY2UiID0geWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKLQotCTs7Ci1taXJic2QqKSAjKHZpCi0JIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0Ugb3IgX1BPU0lYX1NPVVJDRSBicmVha3MgPGFycGEvaW5ldC5oPgotCTs7Ci1uZXRic2QqKSAjKHZpCi0JIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIElQdjYgZm9yIGx5bnggb24gTmV0QlNEIDEuNiwgYnJlYWtzIHh0ZXJtLCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdwotCTs7Ci1vcGVuYnNkKikgIyh2aQotCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGJyZWFrcyB4dGVybSBvbiBPcGVuQlNEIDIuOCwgaXMgbm90IG5lZWRlZCBmb3IgbmN1cnNlc3cKLQk7Owotb3NmWzQ1XSopICModmkKLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX09TRl9TT1VSQ0UiCi0JOzsKLW50by1xbngqKSAjKHZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9RTlhfU09VUkNFIgotCTs7Ci1zY28qKSAjKHZpCi0JIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCi0JOzsKLXNvbGFyaXMqKSAjKHZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9fRVhURU5TSU9OU19fIgotCTs7Ci0qKQotCWVjaG8gIiRhc19tZTo2MzQ0OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9YT1BFTl9TT1VSQ0UiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9YT1BFTl9TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3hvcGVuX3NvdXJjZStzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2MzUxICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWludAotbWFpbiAoKQotewotCi0jaWZuZGVmIF9YT1BFTl9TT1VSQ0UKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZgotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MzY2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2MzY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjYzNzI6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2Mzc1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX3NhdmU9IiRDUFBGTEFHUyIKLQkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKLQkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2Mzg0ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWludAotbWFpbiAoKQotewotCi0jaWZkZWYgX1hPUEVOX1NPVVJDRQotbWFrZSBhbiBlcnJvcgotI2VuZGlmCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjYzOTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY0MDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjQwNTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY0MDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0UKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQlDUFBGTEFHUz0iJGNmX3NhdmUiCi0KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotZmkKLWVjaG8gIiRhc19tZTo2NDIzOiByZXN1bHQ6ICRjZl9jdl94b3Blbl9zb3VyY2UiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3hvcGVuX3NvdXJjZSIgPiY2Ci0JaWYgdGVzdCAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgIT0gbm8gOyB0aGVuCi0KLSMgcmVtb3ZlIF9YT1BFTl9TT1VSQ0Ugc3ltYm9sIGZyb20gJENGTEFHUwotQ0ZMQUdTPWBlY2hvICIkQ0ZMQUdTIiB8IFwKLQlzZWQJLWUgJ3MvLVtVRF1fWE9QRU5fU09VUkNFXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCi0JCS1lICdzLy1bVURdX1hPUEVOX1NPVVJDRVwoPVteIAldKlwpXD8kLy9nJ2AKLQotIyByZW1vdmUgX1hPUEVOX1NPVVJDRSBzeW1ib2wgZnJvbSAkQ1BQRkxBR1MKLUNQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAotCXNlZAktZSAncy8tW1VEXV9YT1BFTl9TT1VSQ0VcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKLQkJLWUgJ3MvLVtVRF1fWE9QRU5fU09VUkNFXCg9W14gCV0qXClcPyQvL2cnYAotCi0JCXRlc3QgIiRjZl9jdl9jY191X2Rfb3B0aW9ucyIgPSB5ZXMgJiYgXAotCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtVV9YT1BFTl9TT1VSQ0UiCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFPSRjZl9jdl94b3Blbl9zb3VyY2UiCi0JZmkKLQotY2ZfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFCi0KLWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotCi0jIHJlbW92ZSBfUE9TSVhfQ19TT1VSQ0Ugc3ltYm9sIGZyb20gJGNmX3NhdmVfQ0ZMQUdTCi1jZl90cmltX0NGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ0ZMQUdTIiB8IFwKLQlzZWQJLWUgJ3MvLVtVRF1fUE9TSVhfQ19TT1VSQ0VcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKLQkJLWUgJ3MvLVtVRF1fUE9TSVhfQ19TT1VSQ0VcKD1bXiAJXSpcKVw/JC8vZydgCi0KLSMgcmVtb3ZlIF9QT1NJWF9DX1NPVVJDRSBzeW1ib2wgZnJvbSAkY2Zfc2F2ZV9DUFBGTEFHUwotY2ZfdHJpbV9DUFBGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ1BQRkxBR1MiIHwgXAotCXNlZAktZSAncy8tW1VEXV9QT1NJWF9DX1NPVVJDRVwoPVteIAldKlwpXD9bIAldLyAvZycgXAotCQktZSAncy8tW1VEXV9QT1NJWF9DX1NPVVJDRVwoPVteIAldKlwpXD8kLy9nJ2AKLQotZWNobyAiJGFzX21lOjY0NTc6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1BPU0lYX0NfU09VUkNFIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3Bvc2l4X2Nfc291cmNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWVjaG8gIiR7YXNfbWUtY29uZmlndXJlfTo2NDYzOiB0ZXN0aW5nIGlmIHRoZSBzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkIGdvIG5vIGZ1cnRoZXIgLi4uIiAxPiY1Ci0KLQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDY0NjYgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotaW50Ci1tYWluICgpCi17Ci0KLSNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjQ4MTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjQ4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2NDg3OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjQ5MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX3dhbnRfcG9zaXhfc291cmNlPW5vCi0JIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbiAjKHZpCi0JIC5bMTJdPz8qKSAjKHZpCi0JCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCi0JCTs7Ci0JIC4yKSAjKHZpCi0JCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCi0JCWNmX3dhbnRfcG9zaXhfc291cmNlPXllcwotCQk7OwotCSAuKikKLQkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCi0JCTs7Ci0JIGVzYWMKLQkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KLQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2NTExICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWludAotbWFpbiAoKQotewotCi0jaWZkZWYgX1BPU0lYX1NPVVJDRQotbWFrZSBhbiBlcnJvcgotI2VuZGlmCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY1MjY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY1Mjk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjUzMjogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY1MzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICA6Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2N2X3Bvc2l4X2Nfc291cmNlPSIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UgLURfUE9TSVhfU09VUkNFIgotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCSBmaQotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NjU0NjogdGVzdGluZyBpZmRlZiBmcm9tIHZhbHVlICRjZl9QT1NJWF9DX1NPVVJDRSAuLi4iIDE+JjUKLQotCSBDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKLQkgQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTICRjZl9jdl9wb3NpeF9jX3NvdXJjZSIKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjY1NTE6IHRlc3RpbmcgaWYgdGhlIHNlY29uZCBjb21waWxlIGRvZXMgbm90IGxlYXZlIG91ciBkZWZpbml0aW9uIGludGFjdCBlcnJvciAuLi4iIDE+JjUKLQotCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDY1NTQgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotaW50Ci1tYWluICgpCi17Ci0KLSNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjU2OTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjU3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2NTc1OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjU3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIDoKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfY3ZfcG9zaXhfY19zb3VyY2U9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQkgQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCi0JIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCi1maQotZWNobyAiJGFzX21lOjY1OTQ6IHJlc3VsdDogJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgPiY2Ci0KLWlmIHRlc3QgIiRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgIT0gbm8gOyB0aGVuCi0JQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCi0JQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTIgotCWlmIHRlc3QgIiRjZl9jdl9jY191X2Rfb3B0aW9ucyIgPSB5ZXMgOyB0aGVuCi0JCWNmX3RlbXBfcG9zaXhfY19zb3VyY2U9YGVjaG8gIiRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgfCBcCi0JCQkJc2VkIC1lICdzLy1ELy1VL2cnIC1lICdzLz1bXiAJXSovL2cnYAotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl90ZW1wX3Bvc2l4X2Nfc291cmNlIgotCWZpCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCi1maQotCi0JOzsKLWVzYWMKLQotIyBXb3JrIGFyb3VuZCBicmVha2FnZSBvbiBPUyBYCi0KLWVjaG8gIiRhc19tZTo2NjEzOiBjaGVja2luZyBpZiBTSUdXSU5DSCBpcyBkZWZpbmVkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgU0lHV0lOQ0ggaXMgZGVmaW5lZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDY2MjAgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgotCi1pbnQKLW1haW4gKCkKLXsKLWludCB4ID0gU0lHV0lOQ0gKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjYzNTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjYzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2NjQxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjY0NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X2RlZmluZV9zaWd3aW5jaD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2NjUxICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI3VuZGVmIF9YT1BFTl9TT1VSQ0UKLSN1bmRlZiBfUE9TSVhfU09VUkNFCi0jdW5kZWYgX1BPU0lYX0NfU09VUkNFCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgotCi1pbnQKLW1haW4gKCkKLXsKLWludCB4ID0gU0lHV0lOQ0gKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjY2OTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjY3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2Njc1OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NjY3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X2RlZmluZV9zaWd3aW5jaD1tYXliZQotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl9jdl9kZWZpbmVfc2lnd2luY2g9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCi1maQotZWNobyAiJGFzX21lOjY2OTI6IHJlc3VsdDogJGNmX2N2X2RlZmluZV9zaWd3aW5jaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoIiA+JjYKLQotaWYgdGVzdCAiJGNmX2N2X2RlZmluZV9zaWd3aW5jaCIgPSBtYXliZSA7IHRoZW4KLWVjaG8gIiRhc19tZTo2Njk2OiBjaGVja2luZyBmb3IgYWN0dWFsIFNJR1dJTkNIIGRlZmluaXRpb24iID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWN0dWFsIFNJR1dJTkNIIGRlZmluaXRpb24uLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X2ZpeHVwX3NpZ3dpbmNoK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWNmX2N2X2ZpeHVwX3NpZ3dpbmNoPXVua25vd24KLWNmX3NpZ3dpbmNoPTMyCi13aGlsZSB0ZXN0ICRjZl9zaWd3aW5jaCAhPSAxCi1kbwotCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNjcwNyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSN1bmRlZiBfWE9QRU5fU09VUkNFCi0jdW5kZWYgX1BPU0lYX1NPVVJDRQotI3VuZGVmIF9QT1NJWF9DX1NPVVJDRQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSNpZiBTSUdXSU5DSCAhPSAkY2Zfc2lnd2luY2gKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZgotaW50IHggPSBTSUdXSU5DSAotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2NzI5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2NzMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjY3MzU6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2NzM4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfZml4dXBfc2lnd2luY2g9JGNmX3NpZ3dpbmNoCi0JIGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotY2Zfc2lnd2luY2g9YGV4cHIgJGNmX3NpZ3dpbmNoIC0gMWAKLWRvbmUKLQotZmkKLWVjaG8gIiRhc19tZTo2NzUyOiByZXN1bHQ6ICRjZl9jdl9maXh1cF9zaWd3aW5jaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfZml4dXBfc2lnd2luY2giID4mNgotCi0JaWYgdGVzdCAiJGNmX2N2X2ZpeHVwX3NpZ3dpbmNoIiAhPSB1bmtub3duIDsgdGhlbgotCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EU0lHV0lOQ0g9JGNmX2N2X2ZpeHVwX3NpZ3dpbmNoIgotCWZpCi1maQotCi0jIENoZWNrcyBmb3IgQ09ERVNFVCBzdXBwb3J0LgotCi0gIGVjaG8gIiRhc19tZTo2NzYyOiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FtX2N2X2xhbmdpbmZvX2NvZGVzZXQrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2NzY4ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxsYW5naW5mby5oPgotaW50Ci1tYWluICgpCi17Ci1jaGFyKiBjcyA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njc4MDogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Njc4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjY3ODY6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2Nzg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYW1fY3ZfbGFuZ2luZm9fY29kZXNldD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYW1fY3ZfbGFuZ2luZm9fY29kZXNldD1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotZmkKLWVjaG8gIiRhc19tZTo2ODAwOiByZXN1bHQ6ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhbV9jdl9sYW5naW5mb19jb2Rlc2V0IiA+JjYKLSAgaWYgdGVzdCAkYW1fY3ZfbGFuZ2luZm9fY29kZXNldCA9IHllczsgdGhlbgotCi1jYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX0xBTkdJTkZPX0NPREVTRVQgMQotRU9GCi0KLSAgZmkKLQotIyB1c2UgdGhlc2UgdmFyaWFibGVzIHRvIHdvcmsgYXJvdW5kIGEgZGVmZWN0IGluIGdjYydzIGZpeGluY2x1ZGVzLgotTkNVUlNFU19PS19XQ0hBUl9UPQotTkNVUlNFU19PS19XSU5UX1Q9Ci0KLWVjaG8gIiRhc19tZTo2ODE0OiBjaGVja2luZyBpZiB5b3Ugd2FudCB3aWRlLWNoYXJhY3RlciBjb2RlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgd2lkZS1jaGFyYWN0ZXIgY29kZS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXdpZGVjIG9yIC0tZGlzYWJsZS13aWRlYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV93aWRlYytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfd2lkZWMiCi0gIHdpdGhfd2lkZWM9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3dpZGVjPW5vCi1maTsKLWVjaG8gIiRhc19tZTo2ODI0OiByZXN1bHQ6ICR3aXRoX3dpZGVjIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3dpZGVjIiA+JjYKLWlmIHRlc3QgIiR3aXRoX3dpZGVjIiA9IHllcyA7IHRoZW4KLQlMSUJfU1VGRklYPSJ3JHtMSUJfU1VGRklYfSIKLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBVU0VfV0lERUNfU1VQUE9SVCAxCi1FT0YKLQotZWNobyAiJGFzX21lOjY4MzI6IGNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBtdXN0IGRlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVELi4uICRFQ0hPX0MiID4mNgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2ODM1ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotbWFrZSBhbiBlcnJvcgotI2VuZGlmCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY4NTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY4NTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njg1NzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY4NjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9yZXN1bHQ9bm8KLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfcmVzdWx0PXllcwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZWNobyAiJGFzX21lOjY4Njk6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKLQotaWYgdGVzdCAiJGNmX3Jlc3VsdCIgPSB5ZXMgOyB0aGVuCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQiCi1lbGlmIHRlc3QgIngiICE9ICJ4IiA7IHRoZW4KLQllY2hvICIkYXNfbWU6Njg3NTogY2hlY2tpbmcgY2hlY2tpbmcgZm9yIGNvbXBhdGlibGUgdmFsdWUgdmVyc3VzICIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGNoZWNraW5nIGZvciBjb21wYXRpYmxlIHZhbHVlIHZlcnN1cyAuLi4gJEVDSE9fQyIgPiY2Ci0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA2ODc4ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSNpZiBfWE9QRU5fU09VUkNFX0VYVEVOREVELSA8IDAKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZgotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo2ODk0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2ODk3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjY5MDA6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo2OTAzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfcmVzdWx0PXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl9yZXN1bHQ9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQllY2hvICIkYXNfbWU6NjkxMjogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgotCWlmIHRlc3QgIiRjZl9yZXN1bHQiID0gbm8gOyB0aGVuCi0JCSMgcGVyaGFwcyB3ZSBjYW4gb3ZlcnJpZGUgaXQgLSB0cnkuLi4KLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQ9IgotCWZpCi1maQotCi0JIyB3aXRoX292ZXJ3cml0ZT1ubwotCU5DVVJTRVNfQ0hfVD1jY2hhcl90Ci0KLWZvciBhY19mdW5jIGluIHB1dHdjIGJ0b3djIHdjdG9iIG1idG93YyB3Y3RvbWIgbWJsZW4gbWJybGVuIG1icnRvd2Mgd2NzcnRvbWJzIG1ic3J0b3djcyB3Y3N0b21icyBtYnN0b3djcwotZG8KLWFzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCi1lY2hvICIkYXNfbWU6NjkyNjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19mdW5jLi4uICRFQ0hPX0MiID4mNgotaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY192YXIrc2V0fVwiID0gc2V0IjsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDY5MzIgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LiAgKi8KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgJGFjX2Z1bmMgKCk7Ci1jaGFyICgqZikgKCk7Ci0KLWludAotbWFpbiAoKQotewotLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwotICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCi0gICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0jaWYgZGVmaW5lZCAoX19zdHViXyRhY19mdW5jKSB8fCBkZWZpbmVkIChfX3N0dWJfX18kYWNfZnVuYykKLWNob2tlIG1lCi0jZWxzZQotZiA9ICRhY19mdW5jOwotI2VuZGlmCi0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY5NjM6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjY5NjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo2OTY5OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Njk3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGV2YWwgIiRhc19hY192YXI9eWVzIgotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1ldmFsICIkYXNfYWNfdmFyPW5vIgotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6Njk4MjogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1Ci1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2Ci1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQotRU9GCi0KLWZpCi1kb25lCi0KLQlpZiB0ZXN0ICIkYWNfY3ZfZnVuY19wdXR3YyIgIT0geWVzIDsgdGhlbgotCi1lY2hvICIkYXNfbWU6Njk5NDogY2hlY2tpbmcgZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc3VwcG9ydCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVyIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3V0ZjhfbGliK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLQljZl9zYXZlX0xJQlM9IiRMSUJTIgotCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzAwMiAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLWludAotbWFpbiAoKQotewotcHV0d2MoMCwwKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwMTU6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjcwMTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3MDIxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzAyNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X3V0ZjhfbGliPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSMgSWYgdGhlIGxpbmthZ2UgaXMgbm90IGFscmVhZHkgaW4gdGhlICRDUFBGTEFHUy8kTERGTEFHUyBjb25maWd1cmF0aW9uLCB0aGVzZQotIyB3aWxsIGJlIHNldCBvbiBjb21wbGV0aW9uIG9mIHRoZSBBQ19UUllfTElOSyBiZWxvdy4KLWNmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9Ci1jZl9jdl9saWJyYXJ5X3BhdGhfdXRmOD0KLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjcwMzY6IHRlc3RpbmcgU3RhcnRpbmcgRklORF9MSU5LQUdFKHV0ZjgsKSAuLi4iIDE+JjUKLQotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA3MDM5ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPGxpYnV0ZjguaD4KLWludAotbWFpbiAoKQotewotcHV0d2MoMCwwKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwNTI6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjcwNTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3MDU4OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzA2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSAgICBjZl9jdl9maW5kX2xpbmthZ2VfdXRmOD1ubwotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzA3MDogdGVzdGluZyBTZWFyY2hpbmcgZm9yIGhlYWRlcnMgaW4gRklORF9MSU5LQUdFKHV0ZjgsKSAuLi4iIDE+JjUKLQotICAgIGNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgICBjZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0KLSAgICBjZl9zZWFyY2g9IiIKLQotdGVzdCAiL3VzciIgIT0gIiRwcmVmaXgiICYmIFwKLXRlc3QgLWQgIi91c3IiICYmIFwKLSh0ZXN0ICRwcmVmaXggPSBOT05FIHx8IHRlc3QgLWQgJHByZWZpeCkgJiYgewotCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgL3VzciIKLQl0ZXN0IC1kIC91c3IvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci9pbmNsdWRlIgotCXRlc3QgLWQgL3Vzci9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvaW5jbHVkZS91dGY4IgotCXRlc3QgLWQgL3Vzci9pbmNsdWRlL3V0ZjgvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKLQl0ZXN0IC1kIC91c3IvdXRmOC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL3V0ZjgvaW5jbHVkZSIKLQl0ZXN0IC1kIC91c3IvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvdXRmOC9pbmNsdWRlL3V0ZjgiCi19Ci0KLXRlc3QgIiRwcmVmaXgiICE9ICJOT05FIiAmJiBcCi10ZXN0IC1kICIkcHJlZml4IiAmJiBcCi0gewotCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKLQl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlIgotCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS91dGY4IgotCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKLQl0ZXN0IC1kICRwcmVmaXgvdXRmOC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L3V0ZjgvaW5jbHVkZSIKLQl0ZXN0IC1kICRwcmVmaXgvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvdXRmOC9pbmNsdWRlL3V0ZjgiCi19Ci0KLXRlc3QgIi91c3IvbG9jYWwiICE9ICIkcHJlZml4IiAmJiBcCi10ZXN0IC1kICIvdXNyL2xvY2FsIiAmJiBcCi0odGVzdCAkcHJlZml4ID0gTk9ORSB8fCB0ZXN0IC1kICRwcmVmaXgpICYmIHsKLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyIC91c3IvbG9jYWwiCi0JdGVzdCAtZCAvdXNyL2xvY2FsL2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvbG9jYWwvaW5jbHVkZSIKLQl0ZXN0IC1kIC91c3IvbG9jYWwvaW5jbHVkZS91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xvY2FsL2luY2x1ZGUvdXRmOCIKLQl0ZXN0IC1kIC91c3IvbG9jYWwvaW5jbHVkZS91dGY4L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvbG9jYWwvaW5jbHVkZS91dGY4L2luY2x1ZGUiCi0JdGVzdCAtZCAvdXNyL2xvY2FsL3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci9sb2NhbC91dGY4L2luY2x1ZGUiCi0JdGVzdCAtZCAvdXNyL2xvY2FsL3V0ZjgvaW5jbHVkZS91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xvY2FsL3V0ZjgvaW5jbHVkZS91dGY4IgotfQotCi10ZXN0ICIvb3B0IiAhPSAiJHByZWZpeCIgJiYgXAotdGVzdCAtZCAiL29wdCIgJiYgXAotKHRlc3QgJHByZWZpeCA9IE5PTkUgfHwgdGVzdCAtZCAkcHJlZml4KSAmJiB7Ci0JdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAvb3B0IgotCXRlc3QgLWQgL29wdC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvb3B0L2luY2x1ZGUiCi0JdGVzdCAtZCAvb3B0L2luY2x1ZGUvdXRmOCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL29wdC9pbmNsdWRlL3V0ZjgiCi0JdGVzdCAtZCAvb3B0L2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvb3B0L2luY2x1ZGUvdXRmOC9pbmNsdWRlIgotCXRlc3QgLWQgL29wdC91dGY4L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC9vcHQvdXRmOC9pbmNsdWRlIgotCXRlc3QgLWQgL29wdC91dGY4L2luY2x1ZGUvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL29wdC91dGY4L2luY2x1ZGUvdXRmOCIKLX0KLQotdGVzdCAiJEhPTUUiICE9ICIkcHJlZml4IiAmJiBcCi10ZXN0IC1kICIkSE9NRSIgJiYgXAotKHRlc3QgJHByZWZpeCA9IE5PTkUgfHwgdGVzdCAtZCAkcHJlZml4KSAmJiB7Ci0JdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkSE9NRSIKLQl0ZXN0IC1kICRIT01FL2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRIT01FL2luY2x1ZGUiCi0JdGVzdCAtZCAkSE9NRS9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRIT01FL2luY2x1ZGUvdXRmOCIKLQl0ZXN0IC1kICRIT01FL2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkSE9NRS9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKLQl0ZXN0IC1kICRIT01FL3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJEhPTUUvdXRmOC9pbmNsdWRlIgotCXRlc3QgLWQgJEhPTUUvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRIT01FL3V0ZjgvaW5jbHVkZS91dGY4IgotfQotCi10ZXN0ICIkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCi10ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAotdGVzdCAtZCAiJGluY2x1ZGVkaXIiICYmIHsKLQl0ZXN0IC1kICRpbmNsdWRlZGlyICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpciIKLQl0ZXN0IC1kICRpbmNsdWRlZGlyL3V0ZjggJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyL3V0ZjgiCi19Ci0KLXRlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKLXRlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCi10ZXN0IC1kICIkb2xkaW5jbHVkZWRpciIgJiYgewotCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIgICAgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyIgotCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIvdXRmOCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIvdXRmOCIKLX0KLQotICAgIGZvciBjZl9jdl9oZWFkZXJfcGF0aF91dGY4IGluICRjZl9zZWFyY2gKLSAgICBkbwotICAgICAgaWYgdGVzdCAtZCAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCA7IHRoZW4KLSAgICAgICAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzE1MTogdGVzdGluZyAuLi4gdGVzdGluZyAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCAuLi4iIDE+JjUKLQotICAgICAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MgLUkkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIKLSAgICAgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA3MTU1ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPGxpYnV0ZjguaD4KLWludAotbWFpbiAoKQotewotcHV0d2MoMCwwKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzE2ODogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzE3MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3MTc0OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzE3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0KLSAgICAgICAgICAgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIGZvdW5kIHV0ZjggaGVhZGVycyBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzE4MjogdGVzdGluZyAuLi4gZm91bmQgdXRmOCBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IC4uLiIgMT4mNQotCi0gICAgICAgICAgICBjZl9jdl9maW5kX2xpbmthZ2VfdXRmOD1tYXliZQotICAgICAgICAgICAgY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgotICAgICAgICAgICAgYnJlYWsKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotCi0gICAgICAgICAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCi0KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV91dGY4IiA9IG1heWJlIDsgdGhlbgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzIwMDogdGVzdGluZyBTZWFyY2hpbmcgZm9yIHV0ZjggbGlicmFyeSBpbiBGSU5EX0xJTktBR0UodXRmOCwpIC4uLiIgMT4mNQotCi0gICAgICBjZl9zYXZlX0xJQlM9IiRMSUJTIgotICAgICAgY2Zfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLQotICAgICAgaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV91dGY4IiAhPSB5ZXMgOyB0aGVuCi0gICAgICAgIGNmX3NlYXJjaD0iIgotCi10ZXN0ICIvdXNyIiAhPSAiJHByZWZpeCIgJiYgXAotdGVzdCAtZCAiL3VzciIgJiYgXAotKHRlc3QgJHByZWZpeCA9IE5PTkUgfHwgdGVzdCAtZCAkcHJlZml4KSAmJiB7Ci0JdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyIC91c3IiCi0JdGVzdCAtZCAvdXNyL2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci9saWIiCi0JdGVzdCAtZCAvdXNyL2xpYi91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xpYi91dGY4IgotCXRlc3QgLWQgL3Vzci9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvbGliL3V0ZjgvbGliIgotCXRlc3QgLWQgL3Vzci91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci91dGY4L2xpYiIKLQl0ZXN0IC1kIC91c3IvdXRmOC9saWIvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci91dGY4L2xpYi91dGY4IgotfQotCi10ZXN0ICIkcHJlZml4IiAhPSAiTk9ORSIgJiYgXAotdGVzdCAtZCAiJHByZWZpeCIgJiYgXAotIHsKLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJHByZWZpeCIKLQl0ZXN0IC1kICRwcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYiIKLQl0ZXN0IC1kICRwcmVmaXgvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliL3V0ZjgiCi0JdGVzdCAtZCAkcHJlZml4L2xpYi91dGY4L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvdXRmOC9saWIiCi0JdGVzdCAtZCAkcHJlZml4L3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L3V0ZjgvbGliIgotCXRlc3QgLWQgJHByZWZpeC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L3V0ZjgvbGliL3V0ZjgiCi19Ci0KLXRlc3QgIi91c3IvbG9jYWwiICE9ICIkcHJlZml4IiAmJiBcCi10ZXN0IC1kICIvdXNyL2xvY2FsIiAmJiBcCi0odGVzdCAkcHJlZml4ID0gTk9ORSB8fCB0ZXN0IC1kICRwcmVmaXgpICYmIHsKLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgL3Vzci9sb2NhbCIKLQl0ZXN0IC1kIC91c3IvbG9jYWwvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xvY2FsL2xpYiIKLQl0ZXN0IC1kIC91c3IvbG9jYWwvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC91c3IvbG9jYWwvbGliL3V0ZjgiCi0JdGVzdCAtZCAvdXNyL2xvY2FsL2xpYi91dGY4L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL3Vzci9sb2NhbC9saWIvdXRmOC9saWIiCi0JdGVzdCAtZCAvdXNyL2xvY2FsL3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xvY2FsL3V0ZjgvbGliIgotCXRlc3QgLWQgL3Vzci9sb2NhbC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvdXNyL2xvY2FsL3V0ZjgvbGliL3V0ZjgiCi19Ci0KLXRlc3QgIi9vcHQiICE9ICIkcHJlZml4IiAmJiBcCi10ZXN0IC1kICIvb3B0IiAmJiBcCi0odGVzdCAkcHJlZml4ID0gTk9ORSB8fCB0ZXN0IC1kICRwcmVmaXgpICYmIHsKLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgL29wdCIKLQl0ZXN0IC1kIC9vcHQvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvb3B0L2xpYiIKLQl0ZXN0IC1kIC9vcHQvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoIC9vcHQvbGliL3V0ZjgiCi0JdGVzdCAtZCAvb3B0L2xpYi91dGY4L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggL29wdC9saWIvdXRmOC9saWIiCi0JdGVzdCAtZCAvb3B0L3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvb3B0L3V0ZjgvbGliIgotCXRlc3QgLWQgL29wdC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAvb3B0L3V0ZjgvbGliL3V0ZjgiCi19Ci0KLXRlc3QgIiRIT01FIiAhPSAiJHByZWZpeCIgJiYgXAotdGVzdCAtZCAiJEhPTUUiICYmIFwKLSh0ZXN0ICRwcmVmaXggPSBOT05FIHx8IHRlc3QgLWQgJHByZWZpeCkgJiYgewotCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkSE9NRSIKLQl0ZXN0IC1kICRIT01FL2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJEhPTUUvbGliIgotCXRlc3QgLWQgJEhPTUUvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRIT01FL2xpYi91dGY4IgotCXRlc3QgLWQgJEhPTUUvbGliL3V0ZjgvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkSE9NRS9saWIvdXRmOC9saWIiCi0JdGVzdCAtZCAkSE9NRS91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJEhPTUUvdXRmOC9saWIiCi0JdGVzdCAtZCAkSE9NRS91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkSE9NRS91dGY4L2xpYi91dGY4IgotfQotCi0gICAgICAgIGZvciBjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCBpbiAkY2Zfc2VhcmNoCi0gICAgICAgIGRvCi0gICAgICAgICAgaWYgdGVzdCAtZCAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggOyB0aGVuCi0gICAgICAgICAgICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nICRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzI2ODogdGVzdGluZyAuLi4gdGVzdGluZyAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggLi4uIiAxPiY1Ci0KLSAgICAgICAgICAgIENQUEZMQUdTPSIkY2ZfdGVzdF9DUFBGTEFHUyIKLSAgICAgICAgICAgIExJQlM9Ii1sdXRmOCAgJGNmX3NhdmVfTElCUyIKLSAgICAgICAgICAgIExERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MgLUwkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiCi0gICAgICAgICAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDcyNzQgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0jaW5jbHVkZSA8bGlidXRmOC5oPgotaW50Ci1tYWluICgpCi17Ci1wdXR3YygwLDApOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzI4NzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzI5MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjcyOTM6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3Mjk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLQotICAgICAgICAgICAgICAgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIGZvdW5kIHV0ZjggbGlicmFyeSBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjczMDE6IHRlc3RpbmcgLi4uIGZvdW5kIHV0ZjggbGlicmFyeSBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggLi4uIiAxPiY1Ci0KLSAgICAgICAgICAgICAgICBjZl9jdl9maW5kX2xpbmthZ2VfdXRmOD15ZXMKLSAgICAgICAgICAgICAgICBjZl9jdl9saWJyYXJ5X2ZpbGVfdXRmOD0iLWx1dGY4IgotICAgICAgICAgICAgICAgIGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotICAgICAgICAgICAgICAgIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKLSAgICAgICAgICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICAgICAgICAgIExERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MiCi0KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MiCi0gICAgICBmaQotCi0gICAgZWxzZQotICAgICAgY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9bm8KLSAgICBmaQotCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotCi1pZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlX3V0ZjgiID0geWVzIDsgdGhlbgotY2ZfY3ZfdXRmOF9saWI9YWRkLW9uCi1lbHNlCi1jZl9jdl91dGY4X2xpYj1ubwotZmkKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6NzMzOTogcmVzdWx0OiAkY2ZfY3ZfdXRmOF9saWIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3V0ZjhfbGliIiA+JjYKLQotIyBIQVZFX0xJQlVURjhfSCBpcyB1c2VkIGJ5IG5jdXJzZXMgaWYgY3Vyc2VzLmggaXMgc2hhcmVkIGJldHdlZW4KLSMgbmN1cnNlcy9uY3Vyc2VzdzoKLWlmIHRlc3QgIiRjZl9jdl91dGY4X2xpYiIgPSAiYWRkLW9uIiA7IHRoZW4KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX0xJQlVURjhfSCAxCi1FT0YKLQotaWYgdGVzdCAtbiAiJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiIDsgdGhlbgotICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOAotICBkbwotCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCi0JZG8KLQkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKLQkgIHRoZW4KLQkJY2ZfaGF2ZV9pbmNkaXI9bm8KLQkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCi0JCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycwotCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCi0JCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCi0JCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKLQkJCWZpCi0JCSAgZG9uZQotCQlmaQotCi0JCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KLSAgICAgICAgICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCi0JCQlpZiB0ZXN0ICIkR0NDIiA9IHllcwotCQkJdGhlbgotCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCi0JCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzM3MyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLWludAotbWFpbiAoKQotewotcHJpbnRmKCJIZWxsbyIpCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjczODU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjczODg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzM5MTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjczOTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICA6Ci1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2hhdmVfaW5jZGlyPXllcwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUwotCQkJZmkKLQkJICBmaQotCQlmaQotCi0JCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KLQkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9Ojc0MTE6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKLQotCQkgIENQUEZMQUdTPSItSSRjZl9hZGRfaW5jZGlyICRDUFBGTEFHUyIKLQotICAgICAgICAgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCi0gICAgICAgICAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhawotICAgICAgICAgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgotCQllbHNlCi0JCSAgYnJlYWsKLQkJZmkKLQkgIGZpCi0JZG9uZQotICBkb25lCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiIDsgdGhlbgotICBmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgKLSAgZG8KLSAgICBpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCi0gICAgICA6Ci0gICAgZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCi0gICAgdGhlbgotICAgICAgY2ZfaGF2ZV9saWJkaXI9bm8KLSAgICAgIGlmIHRlc3QgLW4gIiRMREZMQUdTJExJQlMiIDsgdGhlbgotICAgICAgICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCi0gICAgICAgIGZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCi0gICAgICAgICAgaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgotICAgICAgICAgICAgY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhawotICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCi0gICAgICAgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06NzQ0NTogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoIC4uLiIgMT4mNQotCi0gICAgICAgIExERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCi0gICAgICBmaQotICAgIGZpCi0gIGRvbmUKLWZpCi0KLQlMSUJTPSItbHV0ZjggJExJQlMiCi1maQotCi0JCWlmIHRlc3QgIiRjZl9jdl91dGY4X2xpYiIgIT0gbm8gOyB0aGVuCi0JCQlOQ1VSU0VTX0xJQlVURjg9MQotCQlmaQotCWZpCi0KLSMgVGhpcyBpcyBuZWVkZWQgb24gVHJ1NjQgNS4wIHRvIGRlY2xhcmUgbWJzdGF0ZV90Ci1lY2hvICIkYXNfbWU6NzQ2MjogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSBtYnN0YXRlX3QiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBtdXN0IGluY2x1ZGUgd2NoYXIuaCB0byBkZWNsYXJlIG1ic3RhdGVfdC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3ZfbWJzdGF0ZV90K3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzQ2OSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmZGVmIEhBVkVfTElCVVRGOF9ICi0jaW5jbHVkZSA8bGlidXRmOC5oPgotI2VuZGlmCi1pbnQKLW1haW4gKCkKLXsKLW1ic3RhdGVfdCBzdGF0ZQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo3NDg3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3NDkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjc0OTM6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3NDk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfbWJzdGF0ZV90PW5vCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzUwMyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jaWZkZWYgSEFWRV9MSUJVVEY4X0gKLSNpbmNsdWRlIDxsaWJ1dGY4Lmg+Ci0jZW5kaWYKLWludAotbWFpbiAoKQotewotbWJzdGF0ZV90IHZhbHVlCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc1MjI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc1MjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzUyODogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc1MzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl9tYnN0YXRlX3Q9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2N2X21ic3RhdGVfdD11bmtub3duCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjc1NDM6IHJlc3VsdDogJGNmX2N2X21ic3RhdGVfdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfbWJzdGF0ZV90IiA+JjYKLQotaWYgdGVzdCAiJGNmX2N2X21ic3RhdGVfdCIgPSB5ZXMgOyB0aGVuCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgTkVFRF9XQ0hBUl9IIDEKLUVPRgotCi0JTkVFRF9XQ0hBUl9IPTEKLWZpCi0KLSMgaWYgd2UgZG8gbm90IGZpbmQgbWJzdGF0ZV90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCi1pZiB0ZXN0ICIkY2ZfY3ZfbWJzdGF0ZV90IiA9IHVua25vd24gOyB0aGVuCi0JTkNVUlNFU19NQlNUQVRFX1Q9MQotZmkKLQotIyBUaGlzIGlzIG5lZWRlZCBvbiBUcnU2NCA1LjAgdG8gZGVjbGFyZSB3Y2hhcl90Ci1lY2hvICIkYXNfbWU6NzU2MDogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90Li4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHtjZl9jdl93Y2hhcl90K3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzU2NyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmZGVmIEhBVkVfTElCVVRGOF9ICi0jaW5jbHVkZSA8bGlidXRmOC5oPgotI2VuZGlmCi1pbnQKLW1haW4gKCkKLXsKLXdjaGFyX3Qgc3RhdGUKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzU4NTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzU4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3NTkxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6NzU5NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X3djaGFyX3Q9bm8KLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA3NjAxICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpZmRlZiBIQVZFX0xJQlVURjhfSAotI2luY2x1ZGUgPGxpYnV0ZjguaD4KLSNlbmRpZgotaW50Ci1tYWluICgpCi17Ci13Y2hhcl90IHZhbHVlCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc2MjA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc2MjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzYyNjogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc2Mjk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl93Y2hhcl90PXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1jZl9jdl93Y2hhcl90PXVua25vd24KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6NzY0MTogcmVzdWx0OiAkY2ZfY3Zfd2NoYXJfdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3Zfd2NoYXJfdCIgPiY2Ci0KLWlmIHRlc3QgIiRjZl9jdl93Y2hhcl90IiA9IHllcyA7IHRoZW4KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBORUVEX1dDSEFSX0ggMQotRU9GCi0KLQlORUVEX1dDSEFSX0g9MQotZmkKLQotIyBpZiB3ZSBkbyBub3QgZmluZCB3Y2hhcl90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCi1pZiB0ZXN0ICIkY2ZfY3Zfd2NoYXJfdCIgPSB1bmtub3duIDsgdGhlbgotCU5DVVJTRVNfV0NIQVJfVD0xCi1maQotCi0jIGlmIHdlIGZpbmQgd2NoYXJfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgotaWYgdGVzdCAiJGNmX2N2X3djaGFyX3QiICE9IHVua25vd24gOyB0aGVuCi0JTkNVUlNFU19PS19XQ0hBUl9UPTEKLWZpCi0KLSMgVGhpcyBpcyBuZWVkZWQgb24gVHJ1NjQgNS4wIHRvIGRlY2xhcmUgd2ludF90Ci1lY2hvICIkYXNfbWU6NzY2MzogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3aW50X3QiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBtdXN0IGluY2x1ZGUgd2NoYXIuaCB0byBkZWNsYXJlIHdpbnRfdC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7Y2ZfY3Zfd2ludF90K3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzY3MCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmZGVmIEhBVkVfTElCVVRGOF9ICi0jaW5jbHVkZSA8bGlidXRmOC5oPgotI2VuZGlmCi1pbnQKLW1haW4gKCkKLXsKLXdpbnRfdCBzdGF0ZQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo3Njg4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3NjkxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjc2OTQ6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3Njk3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3Zfd2ludF90PW5vCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzcwNCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jaWZkZWYgSEFWRV9MSUJVVEY4X0gKLSNpbmNsdWRlIDxsaWJ1dGY4Lmg+Ci0jZW5kaWYKLWludAotbWFpbiAoKQotewotd2ludF90IHZhbHVlCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc3MjM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc3MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzcyOTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc3MzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl93aW50X3Q9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2N2X3dpbnRfdD11bmtub3duCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjc3NDQ6IHJlc3VsdDogJGNmX2N2X3dpbnRfdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3Zfd2ludF90IiA+JjYKLQotaWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgPSB5ZXMgOyB0aGVuCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgTkVFRF9XQ0hBUl9IIDEKLUVPRgotCi0JTkVFRF9XQ0hBUl9IPTEKLWZpCi0KLSMgaWYgd2UgZG8gbm90IGZpbmQgd2ludF90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCi1pZiB0ZXN0ICIkY2ZfY3Zfd2ludF90IiA9IHVua25vd24gOyB0aGVuCi0JTkNVUlNFU19XSU5UX1Q9MQotZmkKLQotIyBpZiB3ZSBmaW5kIHdpbnRfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgotaWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgIT0gdW5rbm93biA7IHRoZW4KLQlOQ1VSU0VTX09LX1dJTlRfVD0xCi1maQotCi0JaWYgdGVzdCAiJE5DVVJTRVNfTUJTVEFURV9UIiAhPSAwOyB0aGVuCi0JCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIE5FRURfTUJTVEFURV9UX0RFRiAxCi1FT0YKLQotCWZpCi1maQotCi0jIyMgICB1c2Ugb3B0aW9uIC0tZGlzYWJsZS1scDY0IHRvIGFsbG93IGxvbmcgY2h0eXBlCi1jYXNlICRjZl9jdl9hYmlfdmVyc2lvbiBpbgotWzM0NV0qKQotCWRlZmF1bHRfd2l0aF9scDY0PW5vCi0JOzsKLSopCi0JZGVmYXVsdF93aXRoX2xwNjQ9eWVzCi0JOzsKLWVzYWMKLQotZWNobyAiJGFzX21lOjc3ODM6IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIF9MUDY0IGRlZmluaXRpb24gaW4gY3Vyc2VzLmgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBfTFA2NCBkZWZpbml0aW9uIGluIGN1cnNlcy5oLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbHA2NCBvciAtLWRpc2FibGUtbHA2NCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9scDY0K3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9scDY0IgotICB3aXRoX2xwNjQ9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX2xwNjQ9JGRlZmF1bHRfd2l0aF9scDY0Ci1maTsKLWVjaG8gIiRhc19tZTo3NzkzOiByZXN1bHQ6ICR3aXRoX2xwNjQiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfbHA2NCIgPiY2Ci0KLWlmIHRlc3QgIiR3aXRoX2xwNjQiID0geWVzIDsgdGhlbgotCWNmX2N2X2VuYWJsZV9scDY0PTEKLWVsc2UKLQljZl9jdl9lbmFibGVfbHA2ND0wCi1maQotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIG9yIC0tZGlzYWJsZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9sYXJnZWZpbGUiCi0KLWZpOwotaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vOyB0aGVuCi0KLSAgZWNobyAiJGFzX21lOjc4MDk6IGNoZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubwotICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBhY19zYXZlX0NDPSRDQwotICAgICAgIHdoaWxlIDo7IGRvCi0gICAgIAkgIyBJUklYIDYuMiBhbmQgbGF0ZXIgZG8gbm90IHN1cHBvcnQgbGFyZ2UgZmlsZXMgYnkgZGVmYXVsdCwKLSAgICAgCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCi0gICAgICAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDc4MjEgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLSAgICAgCSBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo3ODQxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3ODQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjc4NDc6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo3ODUwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYnJlYWsKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgCSBDQz0iJENDIC1uMzIiCi0gICAgIAkgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Nzg2MDogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Nzg2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3ODY2OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Nzg2OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9JyAtbjMyJzsgYnJlYWsKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgICAgIGJyZWFrCi0gICAgICAgZG9uZQotICAgICAgIENDPSRhY19zYXZlX0NDCi0gICAgICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotICAgIGZpCi1maQotZWNobyAiJGFzX21lOjc4ODM6IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNgotICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KLSAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQwotICBmaQotCi0gIGVjaG8gIiRhc19tZTo3ODg5OiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICB3aGlsZSA6OyBkbwotICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubwotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDc4OTcgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc5MTc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc5MjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzkyMzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjc5MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBicmVhawotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzkzNSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0gICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLSAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKLSAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0JCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAxIDogLTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Nzk1NjogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Nzk1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo3OTYyOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6Nzk2NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0OyBicmVhawotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGJyZWFrCi1kb25lCi1maQotZWNobyAiJGFzX21lOjc5NzY6IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgPiY2Ci1pZiB0ZXN0ICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiICE9IG5vOyB0aGVuCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzCi1FT0YKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0KgotICBlY2hvICIkYXNfbWU6Nzk4NjogY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VfZmlsZXMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgd2hpbGUgOjsgZG8KLSAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPW5vCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgNzk5NCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0gICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLSAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKLSAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0JCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAxIDogLTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODAxNDogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6ODAxNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo4MDIwOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6ODAyMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA4MDMyICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNkZWZpbmUgX0xBUkdFX0ZJTEVTIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQotICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLQkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotCQkgICAgICA/IDEgOiAtMV07Ci1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MDUzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo4MDU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjgwNTk6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo4MDYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgYnJlYWsKLWRvbmUKLWZpCi1lY2hvICIkYXNfbWU6ODA3MzogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNgotaWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgIT0gbm87IHRoZW4KLQotY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcwotRU9GCi0KLWZpCi1ybSAtZiBjb25mdGVzdCoKLWZpCi0KLSAgICBpZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm8gOyB0aGVuCi0JZWNobyAiJGFzX21lOjgwODY6IGNoZWNraW5nIGZvciBfTEFSR0VGSUxFX1NPVVJDRSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIF9MQVJHRUZJTEVfU09VUkNFIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIHdoaWxlIDo7IGRvCi0gIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPW5vCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgODA5NCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLWludAotbWFpbiAoKQotewotcmV0dXJuICFmc2Vla287Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgxMDY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjgxMDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODExMjogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjgxMTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBicmVhawotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgODEyNCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKLSNpbmNsdWRlIDxzdGRpby5oPgotaW50Ci1tYWluICgpCi17Ci1yZXR1cm4gIWZzZWVrbzsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODEzNzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6ODE0MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo4MTQzOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6ODE0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTE7IGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgYnJlYWsKLWRvbmUKLWZpCi1lY2hvICIkYXNfbWU6ODE1NzogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjYKLWlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSIgIT0gbm87IHRoZW4KLQotY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UKLUVPRgotCi1maQotcm0gLWYgY29uZnRlc3QqCi0KLSMgV2UgdXNlZCB0byB0cnkgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRT01MDAgdG9vLCB0byB3b3JrIGFyb3VuZCBhIGJ1ZwotIyBpbiBnbGliYyAyLjEuMywgYnV0IHRoYXQgYnJlYWtzIHRvbyBtYW55IG90aGVyIHRoaW5ncy4KLSMgSWYgeW91IHdhbnQgZnNlZWtvIGFuZCBmdGVsbG8gd2l0aCBnbGliYywgdXBncmFkZSB0byBhIGZpeGVkIGdsaWJjLgotZWNobyAiJGFzX21lOjgxNzE6IGNoZWNraW5nIGZvciBmc2Vla28iID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZnNlZWtvLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9mdW5jX2ZzZWVrbytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDgxNzcgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci1pbnQKLW1haW4gKCkKLXsKLXJldHVybiBmc2Vla28gJiYgZnNlZWtvIChzdGRpbiwgMCwgMCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MTg5OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo4MTkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODE5NTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjgxOTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9mdW5jX2ZzZWVrbz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfZnVuY19mc2Vla289bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjgyMDg6IHJlc3VsdDogJGFjX2N2X2Z1bmNfZnNlZWtvIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX2ZzZWVrbyIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9mdW5jX2ZzZWVrbyA9IHllczsgdGhlbgotCi1jYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX0ZTRUVLTyAxCi1FT0YKLQotZmkKLQotCSMgTm9ybWFsbHkgd2Ugd291bGQgY29sbGVjdCB0aGVzZSBkZWZpbml0aW9ucyBpbiB0aGUgY29uZmlnLmgsCi0JIyBidXQgKGxpa2UgX1hPUEVOX1NPVVJDRSksIHNvbWUgZW52aXJvbm1lbnRzIHJlbHkgb24gaGF2aW5nIHRoZXNlCi0JIyBkZWZpbmVkIGJlZm9yZSBhbnkgb2YgdGhlIHN5c3RlbSBoZWFkZXJzIGFyZSBpbmNsdWRlZC4gIEFub3RoZXIKLQkjIGNhc2UgY29tZXMgdXAgd2l0aCBDKyssIGUuZy4sIG9uIEFJWCB0aGUgY29tcGlsZXIgY29tcGlsZXMgdGhlCi0JIyBoZWFkZXIgZmlsZXMgYnkgdGhlbXNlbHZlcyBiZWZvcmUgbG9va2luZyBhdCB0aGUgYm9keSBmaWxlcyBpdCBpcwotCSMgdG9sZCB0byBjb21waWxlLiAgRm9yIG5jdXJzZXMsIHRob3NlIGhlYWRlciBmaWxlcyBkbyBub3QgaW5jbHVkZQotCSMgdGhlIGNvbmZpZy5oCi0JdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgICAgICAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0xBUkdFX0ZJTEVTICIKLQl0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfTEFSR0VGSUxFX1NPVVJDRSAiCi0JdGVzdCAiJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzICIKLQotCWVjaG8gIiRhc19tZTo4MjI5OiBjaGVja2luZyB3aGV0aGVyIHRvIHVzZSBzdHJ1Y3QgZGlyZW50NjQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRvIHVzZSBzdHJ1Y3QgZGlyZW50NjQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3N0cnVjdF9kaXJlbnQ2NCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi0JCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgODIzNiAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLQkJLyogaWYgdHJhbnNpdGlvbmFsIGxhcmdlZmlsZSBzdXBwb3J0IGlzIHNldHVwLCB0aGlzIGlzIHRydWUgKi8KLQkJZXh0ZXJuIHN0cnVjdCBkaXJlbnQ2NCAqIHJlYWRkaXIoRElSICopOwotCQlzdHJ1Y3QgZGlyZW50NjQgKnggPSByZWFkZGlyKChESVIgKikwKTsKLQkJc3RydWN0IGRpcmVudCAqeSA9IHJlYWRkaXIoKERJUiAqKTApOwotCQlpbnQgeiA9IHggLSB5OwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgyNTc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjgyNjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODI2MzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjgyNjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBjZl9jdl9zdHJ1Y3RfZGlyZW50NjQ9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2N2X3N0cnVjdF9kaXJlbnQ2ND1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCi1maQotZWNobyAiJGFzX21lOjgyNzc6IHJlc3VsdDogJGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3Zfc3RydWN0X2RpcmVudDY0IiA+JjYKLQl0ZXN0ICIkY2ZfY3Zfc3RydWN0X2RpcmVudDY0IiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX1NUUlVDVF9ESVJFTlQ2NCAxCi1FT0YKLQotICAgIGZpCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXRwYXJtLXZhcmFyZ3MgdG8gbWFrZSB0cGFybSgpIGNvbmZvcm0gdG8gWC9PcGVuCi1lY2hvICIkYXNfbWU6ODI4NjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdHBhcm0gbm90IHRvIHVzZSBYL09wZW4gZml4ZWQtcGFyYW1ldGVyIGxpc3QiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0cGFybSBub3QgdG8gdXNlIFgvT3BlbiBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRwYXJtLXZhcmFyZ3Mgb3IgLS1kaXNhYmxlLXRwYXJtLXZhcmFyZ3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfdHBhcm1fdmFyYXJncytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfdHBhcm1fdmFyYXJncyIKLSAgd2l0aF90cGFybV92YXJhcmdzPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF90cGFybV92YXJhcmdzPXllcwotZmk7Ci1lY2hvICIkYXNfbWU6ODI5NjogcmVzdWx0OiAkd2l0aF90cGFybV92YXJhcmdzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3RwYXJtX3ZhcmFyZ3MiID4mNgotTkNVUlNFU19UUEFSTV9WQVJBUkdTPTAKLXRlc3QgIiR3aXRoX3RwYXJtX3ZhcmFyZ3MiID0geWVzICYmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUz0xCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXRpYy1kZXBlbmRzIHRvIG1ha2UgbGlidGljIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiBuY3Vyc2VzL25jdXJzZXN3Ci1pZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgotZWNobyAiJGFzX21lOjgzMDM6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRpYyBsaWJyYXJ5IHRvIHVzZSBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIG5jdXJzZXMkTElCX1NVRkZJWCBsaWJyYXJ5IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdGljIGxpYnJhcnkgdG8gdXNlIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gbmN1cnNlcyRMSUJfU1VGRklYIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10aWMtZGVwZW5kcyBvciAtLWRpc2FibGUtdGljLWRlcGVuZHMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfdGljX2RlcGVuZHMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3RpY19kZXBlbmRzIgotICB3aXRoX3RpY19kZXBlbmRzPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF90aWNfZGVwZW5kcz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjgzMTM6IHJlc3VsdDogJHdpdGhfdGljX2RlcGVuZHMiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfdGljX2RlcGVuZHMiID4mNgotZWxzZQotCXdpdGhfdGljX2RlcGVuZHM9bm8KLWZpCi0KLSMjIyAgIHVzZSBvcHRpb24gLS13aXRoLWJvb2wgdG8gb3ZlcnJpZGUgYm9vbCdzIHR5cGUKLWVjaG8gIiRhc19tZTo4MzIwOiBjaGVja2luZyBmb3IgdHlwZSBvZiBib29sIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgb2YgYm9vbC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1ib29sIG9yIC0td2l0aG91dC1ib29sIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9ib29sK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2Jvb2wiCi0gIE5DVVJTRVNfQk9PTD0iJHdpdGh2YWwiCi1lbHNlCi0gIE5DVVJTRVNfQk9PTD1hdXRvCi1maTsKLWVjaG8gIiRhc19tZTo4MzMwOiByZXN1bHQ6ICROQ1VSU0VTX0JPT0wiID4mNQotZWNobyAiJHtFQ0hPX1R9JE5DVVJTRVNfQk9PTCIgPiY2Ci0KLWVjaG8gIiRhc19tZTo4MzMzOiBjaGVja2luZyBmb3IgYWx0ZXJuYXRlIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBmaWxlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFsdGVybmF0ZSB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgZmlsZS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jYXBzIG9yIC0td2l0aG91dC1jYXBzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9jYXBzK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2NhcHMiCi0gIFRFUk1JTkZPX0NBUFM9Q2Fwcy4kd2l0aHZhbAotZWxzZQotICBURVJNSU5GT19DQVBTPUNhcHMKLWZpOwotdGVzdCAtZiAiJHtzcmNkaXJ9L2luY2x1ZGUvJHtURVJNSU5GT19DQVBTfSIgfHwgVEVSTUlORk9fQ0FQUz1DYXBzCi1lY2hvICIkYXNfbWU6ODM0NDogcmVzdWx0OiAkVEVSTUlORk9fQ0FQUyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kVEVSTUlORk9fQ0FQUyIgPiY2Ci0KLSMjIyAgIHVzZSBvcHRpb24gLS13aXRoLWNodHlwZSB0byBvdmVycmlkZSBjaHR5cGUncyB0eXBlCi1lY2hvICIkYXNfbWU6ODM0ODogY2hlY2tpbmcgZm9yIHR5cGUgb2YgY2h0eXBlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgb2YgY2h0eXBlLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWNodHlwZSBvciAtLXdpdGhvdXQtY2h0eXBlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9jaHR5cGUrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfY2h0eXBlIgotICBOQ1VSU0VTX0NIVFlQRT0iJHdpdGh2YWwiCi1lbHNlCi0gIE5DVVJTRVNfQ0hUWVBFPWF1dG8KLWZpOwotZWNobyAiJGFzX21lOjgzNTg6IHJlc3VsdDogJE5DVVJTRVNfQ0hUWVBFIiA+JjUKLWVjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0NIVFlQRSIgPiY2Ci0KLSMjIyAgIHVzZSBvcHRpb24gLS13aXRoLW9zcGVlZCB0byBvdmVycmlkZSBvc3BlZWQncyB0eXBlCi1lY2hvICIkYXNfbWU6ODM2MjogY2hlY2tpbmcgZm9yIHR5cGUgb2Ygb3NwZWVkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgb2Ygb3NwZWVkLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLW9zcGVlZCBvciAtLXdpdGhvdXQtb3NwZWVkIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9vc3BlZWQrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfb3NwZWVkIgotICBOQ1VSU0VTX09TUEVFRD0iJHdpdGh2YWwiCi1lbHNlCi0gIE5DVVJTRVNfT1NQRUVEPXNob3J0Ci1maTsKLWVjaG8gIiRhc19tZTo4MzcyOiByZXN1bHQ6ICROQ1VSU0VTX09TUEVFRCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kTkNVUlNFU19PU1BFRUQiID4mNgotCi0jIyMgICB1c2Ugb3B0aW9uIC0td2l0aC1tbWFzay10IHRvIG92ZXJyaWRlIG1tYXNrX3QncyB0eXBlCi1lY2hvICIkYXNfbWU6ODM3NjogY2hlY2tpbmcgZm9yIHR5cGUgb2YgbW1hc2tfdCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIG9mIG1tYXNrX3QuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbW1hc2stdCBvciAtLXdpdGhvdXQtbW1hc2stdCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfbW1hc2tfdCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9tbWFza190IgotICBOQ1VSU0VTX01NQVNLX1Q9IiR3aXRodmFsIgotZWxzZQotICBOQ1VSU0VTX01NQVNLX1Q9YXV0bwotZmk7Ci1lY2hvICIkYXNfbWU6ODM4NjogcmVzdWx0OiAkTkNVUlNFU19NTUFTS19UIiA+JjUKLWVjaG8gIiR7RUNIT19UfSROQ1VSU0VTX01NQVNLX1QiID4mNgotCi0jIyMgRW5hYmxlIGNvbXBpbGluZy1pbiByY3MgaWQncwotZWNobyAiJGFzX21lOjgzOTA6IGNoZWNraW5nIGlmIFJDUyBpZGVudGlmaWVycyBzaG91bGQgYmUgY29tcGlsZWQtaW4iID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBSQ1MgaWRlbnRpZmllcnMgc2hvdWxkIGJlIGNvbXBpbGVkLWluLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXJjcy1pZHMgb3IgLS13aXRob3V0LXJjcy1pZHMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3Jjc19pZHMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfcmNzX2lkcyIKLSAgd2l0aF9yY3NfaWRzPSR3aXRodmFsCi1lbHNlCi0gIHdpdGhfcmNzX2lkcz1ubwotZmk7Ci1lY2hvICIkYXNfbWU6ODQwMDogcmVzdWx0OiAkd2l0aF9yY3NfaWRzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3Jjc19pZHMiID4mNgotdGVzdCAiJHdpdGhfcmNzX2lkcyIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1JDU19JRFMgMQotRU9GCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotZWNobyAiJGFzX21lOjg0MDg6IGNoZWNraW5nIGZvcm1hdCBvZiBtYW4tcGFnZXMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3JtYXQgb2YgbWFuLXBhZ2VzLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLW1hbnBhZ2UtZm9ybWF0IG9yIC0td2l0aG91dC1tYW5wYWdlLWZvcm1hdCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfbWFucGFnZV9mb3JtYXQrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfbWFucGFnZV9mb3JtYXQiCi0gIE1BTlBBR0VfRk9STUFUPSR3aXRodmFsCi1lbHNlCi0gIE1BTlBBR0VfRk9STUFUPXVua25vd24KLWZpOwotCi10ZXN0IC16ICIkTUFOUEFHRV9GT1JNQVQiICYmIE1BTlBBR0VfRk9STUFUPXVua25vd24KLU1BTlBBR0VfRk9STUFUPWBlY2hvICIkTUFOUEFHRV9GT1JNQVQiIHwgc2VkIC1lICdzLywvIC9nJ2AKLQotY2ZfdW5rbm93bj0KLQotY2FzZSAkTUFOUEFHRV9GT1JNQVQgaW4KLXVua25vd24pCi0gIGlmIHRlc3QgLXogIiRNQU5QQVRIIiA7IHRoZW4KLSAgICBNQU5QQVRIPSIvdXNyL21hbjovdXNyL3NoYXJlL21hbiIKLSAgZmkKLQotICAjIGxvb2sgZm9yIHRoZSAnZGF0ZScgbWFuLXBhZ2UgKGl0J3MgbW9zdCBsaWtlbHkgdG8gYmUgaW5zdGFsbGVkISkKLSAgTUFOUEFHRV9GT1JNQVQ9Ci0gIGNmX3ByZWZvcm09bm8KLSAgY2ZfY2F0b25seT15ZXMKLSAgY2ZfZXhhbXBsZT1kYXRlCi0KLSAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JHtQQVRIU0VQfSIKLSAgZm9yIGNmX2RpciBpbiAkTUFOUEFUSDsgZG8KLSAgICB0ZXN0IC16ICIkY2ZfZGlyIiAmJiBjZl9kaXI9L3Vzci9tYW4KLSAgICBmb3IgY2ZfbmFtZSBpbiAkY2ZfZGlyL21hbiovJGNmX2V4YW1wbGUuWzAxXSogJGNmX2Rpci9jYXQqLyRjZl9leGFtcGxlLlswMV0qICRjZl9kaXIvbWFuKi8kY2ZfZXhhbXBsZSAkY2ZfZGlyL2NhdCovJGNmX2V4YW1wbGUKLSAgICBkbwotICAgICAgY2ZfdGVzdD1gZWNobyAkY2ZfbmFtZSB8IHNlZCAtZSAncy8qLy8nYAotICAgICAgaWYgdGVzdCAieCRjZl90ZXN0IiA9ICJ4JGNmX25hbWUiIDsgdGhlbgotCi0JY2FzZSAiJGNmX25hbWUiIGluCi0JKi5neikgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBnemlwIjs7Ci0JKi5aKSAgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBjb21wcmVzcyI7OwotCSouMCkJTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBCU0RJIjs7Ci0JKikgICAgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBub3JtYWwiOzsKLQllc2FjCi0KLQljYXNlICIkY2ZfbmFtZSIgaW4KLQkkY2ZfZGlyL21hbiopCi0JICBjZl9jYXRvbmx5PW5vCi0JICA7OwotCSRjZl9kaXIvY2F0KikKLQkgIGNmX3ByZWZvcm09eWVzCi0JICA7OwotCWVzYWMKLQlicmVhawotICAgICAgZmkKLQotICAgICAgIyBpZiB3ZSBmb3VuZCBhIG1hdGNoIGluIGVpdGhlciBtYW4qIG9yIGNhdCosIHN0b3AgbG9va2luZwotICAgICAgaWYgdGVzdCAtbiAiJE1BTlBBR0VfRk9STUFUIiA7IHRoZW4KLQljZl9mb3VuZD1ubwotCXRlc3QgIiRjZl9wcmVmb3JtIiA9IHllcyAmJiBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGZvcm1hdHRlZCIKLQl0ZXN0ICIkY2ZfY2F0b25seSIgPSB5ZXMgJiYgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBjYXRvbmx5IgotCWNhc2UgIiRjZl9uYW1lIiBpbgotCSRjZl9kaXIvY2F0KikKLQkgIGNmX2ZvdW5kPXllcwotCSAgOzsKLQllc2FjCi0JdGVzdCAkY2ZfZm91bmQ9eWVzICYmIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICAjIG9ubHkgY2hlY2sgdGhlIGZpcnN0IGRpcmVjdG9yeSBpbiAkTUFOUEFUSCB3aGVyZSB3ZSBmaW5kIG1hbnBhZ2VzCi0gICAgaWYgdGVzdCAtbiAiJE1BTlBBR0VfRk9STUFUIiA7IHRoZW4KLSAgICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKLSAgIyBpZiB3ZSBkaWQgbm90IGZpbmQgdGhlIGV4YW1wbGUsIGp1c3QgYXNzdW1lIGl0IGlzIG5vcm1hbAotICB0ZXN0IC16ICIkTUFOUEFHRV9GT1JNQVQiICYmIE1BTlBBR0VfRk9STUFUPW5vcm1hbAotICBJRlM9IiRhY19zYXZlX2lmcyIKLSAgOzsKLSopCi0gIGZvciBjZl9vcHRpb24gaW4gJE1BTlBBR0VfRk9STUFUOyBkbwotICAgICBjYXNlICRjZl9vcHRpb24gaW4gIyh2aQotICAgICBnemlwfGNvbXByZXNzfEJTREl8bm9ybWFsfGZvcm1hdHRlZHxjYXRvbmx5KQotICAgICAgIDs7Ci0gICAgICopCi0gICAgICAgY2ZfdW5rbm93bj0iJGNmX3Vua25vd24gJGNmX29wdGlvbiIKLSAgICAgICA7OwotICAgICBlc2FjCi0gIGRvbmUKLSAgOzsKLWVzYWMKLQotZWNobyAiJGFzX21lOjg0OTc6IHJlc3VsdDogJE1BTlBBR0VfRk9STUFUIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRNQU5QQUdFX0ZPUk1BVCIgPiY2Ci1pZiB0ZXN0IC1uICIkY2ZfdW5rbm93biIgOyB0aGVuCi0gIHsgZWNobyAiJGFzX21lOjg1MDA6IFdBUk5JTkc6IFVuZXhwZWN0ZWQgbWFucGFnZS1mb3JtYXQgJGNmX3Vua25vd24iID4mNQotZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmV4cGVjdGVkIG1hbnBhZ2UtZm9ybWF0ICRjZl91bmtub3duIiA+JjI7fQotZmkKLQotZWNobyAiJGFzX21lOjg1MDQ6IGNoZWNraW5nIGZvciBtYW5wYWdlIHJlbmFtaW5nIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1hbnBhZ2UgcmVuYW1pbmcuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbWFucGFnZS1yZW5hbWVzIG9yIC0td2l0aG91dC1tYW5wYWdlLXJlbmFtZXMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX21hbnBhZ2VfcmVuYW1lcytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9tYW5wYWdlX3JlbmFtZXMiCi0gIE1BTlBBR0VfUkVOQU1FUz0kd2l0aHZhbAotZWxzZQotICBNQU5QQUdFX1JFTkFNRVM9eWVzCi1maTsKLQotY2FzZSAiLiRNQU5QQUdFX1JFTkFNRVMiIGluICModmkKLS5ubykgIyh2aQotICA7OwotLnwueWVzKQotICAjIERlYmlhbiAnbWFuJyBwcm9ncmFtPwotICBpZiB0ZXN0IC1mIC9ldGMvZGViaWFuX3ZlcnNpb24gOyB0aGVuCi0gICAgTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyICYmIHB3ZGAvbWFuL21hbl9kYi5yZW5hbWVzCi0gIGVsc2UKLSAgICBNQU5QQUdFX1JFTkFNRVM9bm8KLSAgZmkKLSAgOzsKLWVzYWMKLQotaWYgdGVzdCAiJE1BTlBBR0VfUkVOQU1FUyIgIT0gbm8gOyB0aGVuCi0gIGlmIHRlc3QgLWYgJHNyY2Rpci9tYW4vJE1BTlBBR0VfUkVOQU1FUyA7IHRoZW4KLSAgICBNQU5QQUdFX1JFTkFNRVM9YGNkICRzcmNkaXIvbWFuICYmIHB3ZGAvJE1BTlBBR0VfUkVOQU1FUwotICBlbGlmIHRlc3QgISAtZiAkTUFOUEFHRV9SRU5BTUVTIDsgdGhlbgotICAgIHsgeyBlY2hvICIkYXNfbWU6ODUzMjogZXJyb3I6IG5vdCBhIGZpbGVuYW1lOiAkTUFOUEFHRV9SRU5BTUVTIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IG5vdCBhIGZpbGVuYW1lOiAkTUFOUEFHRV9SRU5BTUVTIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0gIGZpCi0KLSAgdGVzdCAhIC1kIG1hbiAmJiBta2RpciBtYW4KLQotICAjIENvbnN0cnVjdCBhIHNlZC1zY3JpcHQgdG8gcGVyZm9ybSByZW5hbWluZyB3aXRoaW4gbWFuLXBhZ2VzCi0gIGlmIHRlc3QgLW4gIiRNQU5QQUdFX1JFTkFNRVMiIDsgdGhlbgotICAgIHRlc3QgISAtZCBtYW4gJiYgbWtkaXIgbWFuCi0gICAgc2ggJHNyY2Rpci9tYW4vbWFrZV9zZWQuc2ggJE1BTlBBR0VfUkVOQU1FUyA+Li9lZGl0X21hbi5zZWQKLSAgZmkKLWZpCi0KLWVjaG8gIiRhc19tZTo4NTQ2OiByZXN1bHQ6ICRNQU5QQUdFX1JFTkFNRVMiID4mNQotZWNobyAiJHtFQ0hPX1R9JE1BTlBBR0VfUkVOQU1FUyIgPiY2Ci0KLWVjaG8gIiRhc19tZTo4NTQ5OiBjaGVja2luZyBpZiBtYW5wYWdlIGFsaWFzZXMgd2lsbCBiZSBpbnN0YWxsZWQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBtYW5wYWdlIGFsaWFzZXMgd2lsbCBiZSBpbnN0YWxsZWQuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbWFucGFnZS1hbGlhc2VzIG9yIC0td2l0aG91dC1tYW5wYWdlLWFsaWFzZXMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX21hbnBhZ2VfYWxpYXNlcytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9tYW5wYWdlX2FsaWFzZXMiCi0gIE1BTlBBR0VfQUxJQVNFUz0kd2l0aHZhbAotZWxzZQotICBNQU5QQUdFX0FMSUFTRVM9eWVzCi1maTsKLQotZWNobyAiJGFzX21lOjg1NjA6IHJlc3VsdDogJE1BTlBBR0VfQUxJQVNFUyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kTUFOUEFHRV9BTElBU0VTIiA+JjYKLQotaWYgdGVzdCAiJExOX1MiID0gImxuIC1zIjsgdGhlbgotCWNmX3VzZV9zeW1saW5rcz15ZXMKLWVsc2UKLQljZl91c2Vfc3ltbGlua3M9bm8KLWZpCi0KLU1BTlBBR0VfU1lNTElOS1M9bm8KLWlmIHRlc3QgIiRNQU5QQUdFX0FMSUFTRVMiID0geWVzIDsgdGhlbgotZWNobyAiJGFzX21lOjg1NzE6IGNoZWNraW5nIGlmIG1hbnBhZ2Ugc3ltbGlua3Mgc2hvdWxkIGJlIHVzZWQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBtYW5wYWdlIHN5bWxpbmtzIHNob3VsZCBiZSB1c2VkLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLW1hbnBhZ2Utc3ltbGlua3Mgb3IgLS13aXRob3V0LW1hbnBhZ2Utc3ltbGlua3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX21hbnBhZ2Vfc3ltbGlua3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgd2l0aHZhbD0iJHdpdGhfbWFucGFnZV9zeW1saW5rcyIKLSAgTUFOUEFHRV9TWU1MSU5LUz0kd2l0aHZhbAotZWxzZQotICBNQU5QQUdFX1NZTUxJTktTPSRjZl91c2Vfc3ltbGlua3MKLWZpOwotCi1pZiB0ZXN0ICIkJGNmX3VzZV9zeW1saW5rcyIgPSBubzsgdGhlbgotaWYgdGVzdCAiJE1BTlBBR0VfU1lNTElOS1MiID0geWVzIDsgdGhlbgotCXsgZWNobyAiJGFzX21lOjg1ODQ6IFdBUk5JTkc6IGNhbm5vdCBtYWtlIHN5bWxpbmtzIiA+JjUKLWVjaG8gIiRhc19tZTogV0FSTklORzogY2Fubm90IG1ha2Ugc3ltbGlua3MiID4mMjt9Ci0JTUFOUEFHRV9TWU1MSU5LUz1ubwotZmkKLWZpCi0KLWVjaG8gIiRhc19tZTo4NTkwOiByZXN1bHQ6ICRNQU5QQUdFX1NZTUxJTktTIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRNQU5QQUdFX1NZTUxJTktTIiA+JjYKLWZpCi0KLWVjaG8gIiRhc19tZTo4NTk0OiBjaGVja2luZyBmb3IgbWFucGFnZSB0YmwiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFucGFnZSB0YmwuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbWFucGFnZS10Ymwgb3IgLS13aXRob3V0LW1hbnBhZ2UtdGJsIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9tYW5wYWdlX3RibCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9tYW5wYWdlX3RibCIKLSAgTUFOUEFHRV9UQkw9JHdpdGh2YWwKLWVsc2UKLSAgTUFOUEFHRV9UQkw9bm8KLWZpOwotCi1lY2hvICIkYXNfbWU6ODYwNTogcmVzdWx0OiAkTUFOUEFHRV9UQkwiID4mNQotZWNobyAiJHtFQ0hPX1R9JE1BTlBBR0VfVEJMIiA+JjYKLQotICBpZiB0ZXN0ICIkcHJlZml4IiA9ICJOT05FIiA7IHRoZW4KLSAgICAgY2ZfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0gIGVsc2UKLSAgICAgY2ZfcHJlZml4PSIkcHJlZml4IgotICBmaQotCi0gIGNhc2UgIiRNQU5QQUdFX0ZPUk1BVCIgaW4gIyAodmkKLSAgKmNhdG9ubHkqKSAjICh2aQotICAgIGNmX2Zvcm1hdD15ZXMKLSAgICBjZl9pbmJvdGg9bm8KLSAgICA7OwotICAqZm9ybWF0dGVkKikgIyAodmkKLSAgICBjZl9mb3JtYXQ9eWVzCi0gICAgY2ZfaW5ib3RoPXllcwotICAgIDs7Ci0gICopCi0gICAgY2ZfZm9ybWF0PW5vCi0gICAgY2ZfaW5ib3RoPW5vCi0gICAgOzsKLSAgZXNhYwotCi10ZXN0ICEgLWQgbWFuICYmIG1rZGlyIG1hbgotCi1jZl9zb19zdHJpcD0KLWNmX2NvbXByZXNzPQotY2FzZSAiJE1BTlBBR0VfRk9STUFUIiBpbiAjKHZpCi0qY29tcHJlc3MqKSAjKHZpCi0JY2Zfc29fc3RyaXA9IloiCi0JY2ZfY29tcHJlc3M9Y29tcHJlc3MKLSAgOzsKLSpnemlwKikgIyh2aQotCWNmX3NvX3N0cmlwPSJneiIKLQljZl9jb21wcmVzcz1nemlwCi0gIDs7Ci1lc2FjCi0KLWNmX2VkaXRfbWFuPS4vZWRpdF9tYW4uc2gKLWNmX21hbl9hbGlhcz1gcHdkYC9tYW5fYWxpYXMuc2VkCi0KLWNhdCA+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCi0jISAvYmluL3NoCi0jIHRoaXMgc2NyaXB0IGlzIGdlbmVyYXRlZCBieSB0aGUgY29uZmlndXJlLXNjcmlwdCBDRl9NQU5fUEFHRVMgbWFjcm8uCi0KLXByZWZpeD0iJGNmX3ByZWZpeCIKLWRhdGFkaXI9IiRkYXRhZGlyIgotCi1OQ1VSU0VTX01BSk9SPSIkTkNVUlNFU19NQUpPUiIKLU5DVVJTRVNfTUlOT1I9IiROQ1VSU0VTX01JTk9SIgotTkNVUlNFU19QQVRDSD0iJE5DVVJTRVNfUEFUQ0giCi0KLU5DVVJTRVNfT1NQRUVEPSIkTkNVUlNFU19PU1BFRUQiCi1URVJNSU5GTz0iJFRFUk1JTkZPIgotCi1NS0RJUlM9InNoIGBjZCAkc3JjZGlyICYmIHB3ZGAvbWtkaXJzLnNoIgotCi1JTlNUQUxMPSIkSU5TVEFMTCIKLUlOU1RBTExfREFUQT0iJElOU1RBTExfREFUQSIKLQotdHJhbnNmb3JtPSIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIKLQotVE1QPVwke1RNUERJUi0vdG1wfS9tYW5cJFwkCi10cmFwICJybSAtZiBcJFRNUCIgMCAxIDIgNSAxNQotCi1mb3JtPVwkMQotc2hpZnQgfHwgZXhpdCAxCi0KLXZlcmI9XCQxCi1zaGlmdCB8fCBleGl0IDEKLQotbWFuZGlyPVwkMQotc2hpZnQgfHwgZXhpdCAxCi0KLXNyY2Rpcj1cJDEKLXRvcF9zcmNkaXI9XCRzcmNkaXIvLi4KLXNoaWZ0IHx8IGV4aXQgMQotCi1pZiB0ZXN0ICJcJGZvcm0iID0gbm9ybWFsIDsgdGhlbgotCWlmIHRlc3QgIiRjZl9mb3JtYXQiID0geWVzIDsgdGhlbgotCWlmIHRlc3QgIiRjZl9pbmJvdGgiID0gbm8gOyB0aGVuCi0JCXNoIFwkMCBmb3JtYXQgXCR2ZXJiIFwkbWFuZGlyIFwkc3JjZGlyIFwkKgotCQlleGl0ICQ/Ci0JZmkKLQlmaQotCWNmX3N1YmRpcj1cJG1hbmRpci9tYW4KLQljZl90YWJsZXM9JE1BTlBBR0VfVEJMCi1lbHNlCi0JY2Zfc3ViZGlyPVwkbWFuZGlyL2NhdAotCWNmX3RhYmxlcz15ZXMKLWZpCi0KLSMgcHJvY2VzcyB0aGUgbGlzdCBvZiBzb3VyY2UtZmlsZXMKLWZvciBpIGluIFwkKiA7IGRvCi1jYXNlIFwkaSBpbiAjKHZpCi0qLm9yaWd8Ki5yZWopIDs7ICModmkKLSouWzAtOV0qKQotCXNlY3Rpb249XGBleHByICJcJGkiIDogJy4qXFwuXFwoWzAtOV1cXClbeG1dKidcYDsKLQlpZiB0ZXN0IFwkdmVyYiA9IGluc3RhbGxpbmcgOyB0aGVuCi0JaWYgdGVzdCAhIC1kIFwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0gOyB0aGVuCi0JCVwkTUtESVJTIFwkY2Zfc3ViZGlyXCRzZWN0aW9uCi0JZmkKLQlmaQotCi0JIyByZXBsYWNlIHZhcmlhYmxlcyBpbiBtYW4gcGFnZQotCWlmIHRlc3QgISAtZiAkY2ZfbWFuX2FsaWFzIDsgdGhlbgotY2F0ID4+JGNmX21hbl9hbGlhcyA8PC1DRl9FT0YyCi0JCXMsQERBVEFESVJALFwkZGF0YWRpcixnCi0JCXMsQFRFUk1JTkZPQCxcJFRFUk1JTkZPLGcKLQkJcyxATkNVUlNFU19NQUpPUkAsXCROQ1VSU0VTX01BSk9SLGcKLQkJcyxATkNVUlNFU19NSU5PUkAsXCROQ1VSU0VTX01JTk9SLGcKLQkJcyxATkNVUlNFU19QQVRDSEAsXCROQ1VSU0VTX1BBVENILGcKLQkJcyxATkNVUlNFU19PU1BFRURALFwkTkNVUlNFU19PU1BFRUQsZwotQ0ZfRU9GCi0KLQlmb3IgY2ZfbmFtZSBpbiAgY2FwdG9pbmZvIGNsZWFyIGluZm9jbXAgaW5mb3RvY2FwIHRpYyB0b2UgdHB1dAotCWRvCi0JCWNmX05BTUU9YGVjaG8gIiRjZl9uYW1lIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKLQkJY2ZfbmFtZT1gZWNobyAkY2ZfbmFtZXxzZWQgIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lImAKLWNhdCA+PiRjZl9lZGl0X21hbiA8PC1DRl9FT0YKLQkJcyxAJGNmX05BTUVALCRjZl9uYW1lLAotQ0ZfRU9GCi0JZG9uZQotCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLUNGX0VPRjIKLQkJZWNobyAiLi4ubWFkZSAkY2ZfbWFuX2FsaWFzIgotCWZpCi0KLQlhbGlhc2VzPQotCWNmX3NvdXJjZT1cYGJhc2VuYW1lIFwkaVxgCi0JaW5hbGlhcz1cJGNmX3NvdXJjZQotCXRlc3QgISAtZiBcJGluYWxpYXMgJiYgaW5hbGlhcz0iXCRzcmNkaXIvXCRpbmFsaWFzIgotCWlmIHRlc3QgISAtZiBcJGluYWxpYXMgOyB0aGVuCi0JCWVjaG8gLi4gc2tpcHBlZCBcJGNmX3NvdXJjZQotCQljb250aW51ZQotCWZpCi1DRl9FT0YKLQotaWYgdGVzdCAiJE1BTlBBR0VfQUxJQVNFUyIgIT0gbm8gOyB0aGVuCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLQlhbGlhc2VzPVxgc2VkIC1mIFwkdG9wX3NyY2Rpci9tYW4vbWFubGlua3Muc2VkIFwkaW5hbGlhcyB8c2VkIC1mICRjZl9tYW5fYWxpYXMgfCBzb3J0IC11XGAKLUNGX0VPRgotZmkKLQotaWYgdGVzdCAiJE1BTlBBR0VfUkVOQU1FUyIgPSBubyA7IHRoZW4KLWNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCSMgcGVyZm9ybSBwcm9ncmFtIHRyYW5zZm9ybWF0aW9ucyBmb3Igc2VjdGlvbiAxIG1hbiBwYWdlcwotCWlmIHRlc3QgXCRzZWN0aW9uID0gMSA7IHRoZW4KLQkJY2ZfdGFyZ2V0PVwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0vXGBlY2hvIFwkY2Zfc291cmNlfHNlZCAiXCR7dHJhbnNmb3JtfSJcYAotCWVsc2UKLQkJY2ZfdGFyZ2V0PVwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0vXCRjZl9zb3VyY2UKLQlmaQotQ0ZfRU9GCi1lbHNlCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLQljZl90YXJnZXQ9XGBncmVwICJeXCRjZl9zb3VyY2UiICRNQU5QQUdFX1JFTkFNRVMgfCAkQVdLICd7cHJpbnQgXCQyfSdcYAotCWlmIHRlc3QgLXogIlwkY2ZfdGFyZ2V0IiA7IHRoZW4KLQkJZWNobyAnPyBtaXNzaW5nIHJlbmFtZSBmb3IgJ1wkY2Zfc291cmNlCi0JCWNmX3RhcmdldD0iXCRjZl9zb3VyY2UiCi0JZmkKLQljZl90YXJnZXQ9IlwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0vXCR7Y2ZfdGFyZ2V0fSIKLQotQ0ZfRU9GCi1maQotCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLQlzZWQJLWYgJGNmX21hbl9hbGlhcyBcXAotQ0ZfRU9GCi0KLWlmIHRlc3QgLWYgJE1BTlBBR0VfUkVOQU1FUyA7IHRoZW4KLWNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCQk8IFwkaSB8IHNlZCAtZiBgcHdkYC9lZGl0X21hbi5zZWQgPlwkVE1QCi1DRl9FT0YKLWVsc2UKLWNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCQk8IFwkaSA+XCRUTVAKLUNGX0VPRgotZmkKLQotY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCi1pZiB0ZXN0IFwkY2ZfdGFibGVzID0geWVzIDsgdGhlbgotCXRibCBcJFRNUCA+XCRUTVAub3V0Ci0JbXYgXCRUTVAub3V0IFwkVE1QCi1maQotQ0ZfRU9GCi0KLWlmIHRlc3QgJHdpdGhfY3Vyc2VzX2ggIT0geWVzIDsgdGhlbgotY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCi0Jc2VkIC1lICIvXCNbICAgIF0qaW5jbHVkZS9zLGN1cnNlcy5oLG5jdXJzZXMuaCwiIDwgXCRUTVAgPlwkVE1QLm91dAotCW12IFwkVE1QLm91dCBcJFRNUAotQ0ZfRU9GCi1maQotCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLQlpZiB0ZXN0IFwkZm9ybSA9IGZvcm1hdCA7IHRoZW4KLQkJbnJvZmYgLW1hbiBcJFRNUCA+XCRUTVAub3V0Ci0JCW12IFwkVE1QLm91dCBcJFRNUAotCWZpCi1DRl9FT0YKLQotaWYgdGVzdCAtbiAiJGNmX2NvbXByZXNzIiA7IHRoZW4KLWNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCWlmIHRlc3QgXCR2ZXJiID0gaW5zdGFsbGluZyA7IHRoZW4KLQlpZiAoICRjZl9jb21wcmVzcyAtZiBcJFRNUCApCi0JdGhlbgotCQltdiBcJFRNUC4kY2Zfc29fc3RyaXAgXCRUTVAKLQlmaQotCWZpCi0JY2ZfdGFyZ2V0PSJcJGNmX3RhcmdldC4kY2Zfc29fc3RyaXAiCi1DRl9FT0YKLWZpCi0KLWNhc2UgIiRNQU5QQUdFX0ZPUk1BVCIgaW4gIyh2aQotKkJTREkqKQotY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCi0JaWYgdGVzdCBcJGZvcm0gPSBmb3JtYXQgOyB0aGVuCi0JCSMgQlNESSBpbnN0YWxscyBvbmx5IC4wIHN1ZmZpeGVzIGluIHRoZSBjYXQgZGlyZWN0b3JpZXMKLQkJY2ZfdGFyZ2V0PSJcYGVjaG8gXCRjZl90YXJnZXR8c2VkIC1lICdzL1wuWzEtOV1cK1thLXpdKi8uMC8nXGAiCi0JZmkKLUNGX0VPRgotICA7OwotZXNhYwotCi1jYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKLQlzdWZmaXg9XGBiYXNlbmFtZSBcJGNmX3RhcmdldCB8IHNlZCAtZSAncyVeW14uXSolJSdcYAotCWlmIHRlc3QgXCR2ZXJiID0gaW5zdGFsbGluZyA7IHRoZW4KLQkJZWNobyBcJHZlcmIgXCRjZl90YXJnZXQKLQkJXCRJTlNUQUxMX0RBVEEgXCRUTVAgXCRjZl90YXJnZXQKLQkJdGVzdCAtZCBcJGNmX3N1YmRpclwke3NlY3Rpb259ICYmCi0JCXRlc3QgLW4gIlwkYWxpYXNlcyIgJiYgKAotCQkJY2QgXCRjZl9zdWJkaXJcJHtzZWN0aW9ufSAmJiAoCi0JCQkJY2Zfc291cmNlPVxgZWNobyBcJGNmX3RhcmdldCB8c2VkIC1lICdzJV4uKi9cKFteL11bXi9dKi9bXi9dW14vXSokXCklXDElJ1xgCi0JCQkJdGVzdCAtbiAiJGNmX3NvX3N0cmlwIiAmJiBjZl9zb3VyY2U9XGBlY2hvIFwkY2Zfc291cmNlIHxzZWQgLWUgJ3MlXC4kY2Zfc29fc3RyaXBcJCUlJ1xgCi0JCQkJY2ZfdGFyZ2V0PVxgYmFzZW5hbWUgXCRjZl90YXJnZXRcYAotCQkJCWZvciBjZl9hbGlhcyBpbiBcJGFsaWFzZXMKLQkJCQlkbwotCQkJCQlpZiB0ZXN0IFwkc2VjdGlvbiA9IDEgOyB0aGVuCi0JCQkJCQljZl9hbGlhcz1cYGVjaG8gXCRjZl9hbGlhc3xzZWQgIlwke3RyYW5zZm9ybX0iXGAKLQkJCQkJZmkKLQotCQkJCQlpZiB0ZXN0ICIkTUFOUEFHRV9TWU1MSU5LUyIgPSB5ZXMgOyB0aGVuCi0JCQkJCQlpZiB0ZXN0IC1mIFwkY2ZfYWxpYXNcJHtzdWZmaXh9IDsgdGhlbgotCQkJCQkJCWlmICggY21wIC1zIFwkY2ZfdGFyZ2V0IFwkY2ZfYWxpYXNcJHtzdWZmaXh9ICkKLQkJCQkJCQl0aGVuCi0JCQkJCQkJCWNvbnRpbnVlCi0JCQkJCQkJZmkKLQkJCQkJCWZpCi0JCQkJCQllY2hvIC4uIFwkdmVyYiBhbGlhcyBcJGNmX2FsaWFzXCR7c3VmZml4fQotCQkJCQkJcm0gLWYgXCRjZl9hbGlhc1wke3N1ZmZpeH0KLQkJCQkJCSRMTl9TIFwkY2ZfdGFyZ2V0IFwkY2ZfYWxpYXNcJHtzdWZmaXh9Ci0JCQkJCWVsaWYgdGVzdCAiXCRjZl90YXJnZXQiICE9ICJcJGNmX2FsaWFzXCR7c3VmZml4fSIgOyB0aGVuCi0JCQkJCQllY2hvICIuc28gXCRjZl9zb3VyY2UiID5cJFRNUAotQ0ZfRU9GCi1pZiB0ZXN0IC1uICIkY2ZfY29tcHJlc3MiIDsgdGhlbgotY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCi0JCQkJCQlpZiB0ZXN0IC1uICIkY2Zfc29fc3RyaXAiIDsgdGhlbgotCQkJCQkJCSRjZl9jb21wcmVzcyAtZiBcJFRNUAotCQkJCQkJCW12IFwkVE1QLiRjZl9zb19zdHJpcCBcJFRNUAotCQkJCQkJZmkKLUNGX0VPRgotZmkKLWNhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgotCQkJCQkJZWNobyAuLiBcJHZlcmIgYWxpYXMgXCRjZl9hbGlhc1wke3N1ZmZpeH0KLQkJCQkJCXJtIC1mIFwkY2ZfYWxpYXNcJHtzdWZmaXh9Ci0JCQkJCQlcJElOU1RBTExfREFUQSBcJFRNUCBcJGNmX2FsaWFzXCR7c3VmZml4fQotCQkJCQlmaQotCQkJCWRvbmUKLQkJCSkKLQkJKQotCWVsaWYgdGVzdCBcJHZlcmIgPSByZW1vdmluZyA7IHRoZW4KLQkJdGVzdCAtZiBcJGNmX3RhcmdldCAmJiAoCi0JCQllY2hvIFwkdmVyYiBcJGNmX3RhcmdldAotCQkJcm0gLWYgXCRjZl90YXJnZXQKLQkJKQotCQl0ZXN0IC1kIFwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0gJiYKLQkJdGVzdCAtbiAiXCRhbGlhc2VzIiAmJiAoCi0JCQljZCBcJGNmX3N1YmRpclwke3NlY3Rpb259ICYmICgKLQkJCQlmb3IgY2ZfYWxpYXMgaW4gXCRhbGlhc2VzCi0JCQkJZG8KLQkJCQkJaWYgdGVzdCBcJHNlY3Rpb24gPSAxIDsgdGhlbgotCQkJCQkJY2ZfYWxpYXM9XGBlY2hvIFwkY2ZfYWxpYXN8c2VkICJcJHt0cmFuc2Zvcm19IlxgCi0JCQkJCWZpCi0KLQkJCQkJZWNobyAuLiBcJHZlcmIgYWxpYXMgXCRjZl9hbGlhc1wke3N1ZmZpeH0KLQkJCQkJcm0gLWYgXCRjZl9hbGlhc1wke3N1ZmZpeH0KLQkJCQlkb25lCi0JCQkpCi0JCSkKLQllbHNlCi0jCQllY2hvICIuaHkgMCIKLQkJY2F0IFwkVE1QCi0JZmkKLQk7OwotZXNhYwotZG9uZQotCi1pZiB0ZXN0ICRjZl9pbmJvdGggPSB5ZXMgOyB0aGVuCi1pZiB0ZXN0IFwkZm9ybSAhPSBmb3JtYXQgOyB0aGVuCi0Jc2ggXCQwIGZvcm1hdCBcJHZlcmIgXCRtYW5kaXIgXCRzcmNkaXIgXCQqCi1maQotZmkKLQotZXhpdCAwCi1DRl9FT0YKLWNobW9kIDc1NSAkY2ZfZWRpdF9tYW4KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIyMgTm90ZSB0aGF0IHNvbWUgZnVuY3Rpb25zIChzdWNoIGFzIGNvbnN0KSBhcmUgbm9ybWFsbHkgZGlzYWJsZWQgYW55d2F5LgotZWNobyAiJGFzX21lOjg5MTY6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggZnVuY3Rpb24gZXh0ZW5zaW9ucyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggZnVuY3Rpb24gZXh0ZW5zaW9ucy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4dC1mdW5jcyBvciAtLWRpc2FibGUtZXh0LWZ1bmNzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2V4dF9mdW5jcytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfZXh0X2Z1bmNzIgotICB3aXRoX2V4dF9mdW5jcz0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfZXh0X2Z1bmNzPXllcwotZmk7Ci1lY2hvICIkYXNfbWU6ODkyNjogcmVzdWx0OiAkd2l0aF9leHRfZnVuY3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfZXh0X2Z1bmNzIiA+JjYKLWlmIHRlc3QgIiR3aXRoX2V4dF9mdW5jcyIgPSB5ZXMgOyB0aGVuCi0JTkNVUlNFU19FWFRfRlVOQ1M9MQotCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEhBVkVfQ1VSU0VTX1ZFUlNJT04gMQotRU9GCi0KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX0hBU19LRVkgMQotRU9GCi0KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX1JFU0laRVRFUk0gMQotRU9GCi0KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX1JFU0laRV9URVJNIDEKLUVPRgotCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMgMQotRU9GCi0KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBIQVZFX1dSRVNJWkUgMQotRU9GCi0KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOQ1VSU0VTX0VYVF9GVU5DUyAxCi1FT0YKLQotZWxzZQotCU5DVVJTRVNfRVhUX0ZVTkNTPTAKLWZpCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtY29uc3QgdG8gdHVybiBvbiB1c2Ugb2YgY29uc3QgYmV5b25kIHRoYXQgaW4gWFNJLgotZWNobyAiJGFzX21lOjg5NjM6IGNoZWNraW5nIGZvciBleHRlbmRlZCB1c2Ugb2YgY29uc3Qga2V5d29yZCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBleHRlbmRlZCB1c2Ugb2YgY29uc3Qga2V5d29yZC4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWNvbnN0IG9yIC0tZGlzYWJsZS1jb25zdCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9jb25zdCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfY29uc3QiCi0gIHdpdGhfZXh0X2NvbnN0PSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9leHRfY29uc3Q9bm8KLWZpOwotZWNobyAiJGFzX21lOjg5NzM6IHJlc3VsdDogJHdpdGhfZXh0X2NvbnN0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2V4dF9jb25zdCIgPiY2Ci1OQ1VSU0VTX0NPTlNUPScvKm5vdGhpbmcqLycKLWlmIHRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgOyB0aGVuCi0JTkNVUlNFU19DT05TVD1jb25zdAotZmkKLQotIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1leHQtY29sb3JzIHRvIHR1cm4gb24gdXNlIG9mIGNvbG9ycyBiZXlvbmQgMTYuCi1lY2hvICIkYXNfbWU6ODk4MTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIGNvbG9ycyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBleHRlbmRlZCBjb2xvcnMuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1leHQtY29sb3JzIG9yIC0tZGlzYWJsZS1leHQtY29sb3JzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2V4dF9jb2xvcnMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2V4dF9jb2xvcnMiCi0gIHdpdGhfZXh0X2NvbG9ycz0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfZXh0X2NvbG9ycz1ubwotZmk7Ci1lY2hvICIkYXNfbWU6ODk5MTogcmVzdWx0OiAkd2l0aF9leHRfY29sb3JzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2V4dF9jb2xvcnMiID4mNgotTkNVUlNFU19FWFRfQ09MT1JTPTAKLWlmIHRlc3QgIiR3aXRoX2V4dF9jb2xvcnMiID0geWVzIDsgdGhlbgotCWlmIHRlc3QgIiR3aXRoX3dpZGVjIiAhPSB5ZXMgOyB0aGVuCi0JCXsgeyBlY2hvICIkYXNfbWU6ODk5NjogZXJyb3I6IFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5IiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5IiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0JZWxzZQotCQkjIGNhbm5vdCBiZSBBQkkgNSBzaW5jZSBpdCBjaGFuZ2VzIHNpemVvZihjY2hhcl90KQotCi1pZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgIT0gc2V0OyB0aGVuCi0JY2FzZSAkY2ZfY3ZfcmVsX3ZlcnNpb24gaW4KLQk1LiopCi0JCWNmX2N2X3JlbF92ZXJzaW9uPTYuMAotCQljZl9jdl9hYmlfdmVyc2lvbj02Ci0JCXsgZWNobyAiJGFzX21lOjkwMDc6IFdBUk5JTkc6IE92ZXJyaWRpbmcgQUJJIHZlcnNpb24gdG8gJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjUKLWVjaG8gIiRhc19tZTogV0FSTklORzogT3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24iID4mMjt9Ci0JCTs7Ci0JZXNhYwotZmkKLQotCWZpCi0JTkNVUlNFU19FWFRfQ09MT1JTPTEKLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOQ1VSU0VTX0VYVF9DT0xPUlMgMQotRU9GCi0KLWZpCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtZXh0LW1vdXNlIHRvIG1vZGlmeSBjb2RpbmcgdG8gc3VwcG9ydCA1LWJ1dHRvbiBtaWNlCi1lY2hvICIkYXNfbWU6OTAyMjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIG1vdXNlIGVuY29kaW5nIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIG1vdXNlIGVuY29kaW5nLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXh0LW1vdXNlIG9yIC0tZGlzYWJsZS1leHQtbW91c2Ugd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfZXh0X21vdXNlK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9leHRfbW91c2UiCi0gIHdpdGhfZXh0X21vdXNlPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9leHRfbW91c2U9bm8KLWZpOwotZWNobyAiJGFzX21lOjkwMzI6IHJlc3VsdDogJHdpdGhfZXh0X21vdXNlIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2V4dF9tb3VzZSIgPiY2Ci1OQ1VSU0VTX01PVVNFX1ZFUlNJT049MQotaWYgdGVzdCAiJHdpdGhfZXh0X21vdXNlIiA9IHllcyA7IHRoZW4KLQlOQ1VSU0VTX01PVVNFX1ZFUlNJT049MgotCi1pZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgIT0gc2V0OyB0aGVuCi0JY2FzZSAkY2ZfY3ZfcmVsX3ZlcnNpb24gaW4KLQk1LiopCi0JCWNmX2N2X3JlbF92ZXJzaW9uPTYuMAotCQljZl9jdl9hYmlfdmVyc2lvbj02Ci0JCXsgZWNobyAiJGFzX21lOjkwNDM6IFdBUk5JTkc6IE92ZXJyaWRpbmcgQUJJIHZlcnNpb24gdG8gJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjUKLWVjaG8gIiRhc19tZTogV0FSTklORzogT3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24iID4mMjt9Ci0JCTs7Ci0JZXNhYwotZmkKLQotZmkKLQotZWNobyAiJGFzX21lOjkwNTE6IGNoZWNraW5nIGlmIHlvdSB3YW50IFwkTkNVUlNFU19OT19QQURESU5HIGNvZGUiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBcJE5DVVJTRVNfTk9fUEFERElORyBjb2RlLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbm8tcGFkZGluZyBvciAtLWRpc2FibGUtbm8tcGFkZGluZyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9ub19wYWRkaW5nK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9ub19wYWRkaW5nIgotICB3aXRoX25vX3BhZGRpbmc9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX25vX3BhZGRpbmc9JHdpdGhfZXh0X2Z1bmNzCi1maTsKLWVjaG8gIiRhc19tZTo5MDYxOiByZXN1bHQ6ICR3aXRoX25vX3BhZGRpbmciID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfbm9fcGFkZGluZyIgPiY2Ci10ZXN0ICIkd2l0aF9ub19wYWRkaW5nIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOQ1VSU0VTX05PX1BBRERJTkcgMQotRU9GCi0KLWVjaG8gIiRhc19tZTo5MDY3OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDkwNzMgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0KLV9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTA4MTogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0gIGFjX3N0YXR1cz0kPwotICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6OTA4NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0gIGVsc2UKLSAgICBhY19jcHBfZXJyPQotICBmaQotZWxzZQotICBhY19jcHBfZXJyPXllcwotZmkKLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLSAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFyeSB0byBBTlNJLgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDkxMDkgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1fQUNFT0YKLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLSAgZWdyZXAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIDoKLWVsc2UKLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotZmkKLQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLSAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJLgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDkxMjcgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi1fQUNFT0YKLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLSAgZWdyZXAgImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbgotICA6Ci1lbHNlCi0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi1maQotcm0gLWYgY29uZnRlc3QqCi0KLWZpCi0KLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0gICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSAgOgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDkxNDggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaWYgKCgnICcgJiAweDBGRikgPT0gMHgwMjApCi0jIGRlZmluZSBJU0xPV0VSKGMpICgnYScgPD0gKGMpICYmIChjKSA8PSAneicpCi0jIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCi0jZWxzZQotIyBkZWZpbmUgSVNMT1dFUihjKSAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAotICAgICAgICAgICAgICAgICAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAotICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCi0jIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQotI2VuZGlmCi0KLSNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCi1pbnQKLW1haW4gKCkKLXsKLSAgaW50IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKLSAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCi0gICAgICAgIHx8IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQotICAgICAgJGFjX21haW5fcmV0dXJuKDIpOwotICAkYWNfbWFpbl9yZXR1cm4gKDApOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxNzQ6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkxNzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxNzk6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo5MTgyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgOgotZWxzZQotICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQotZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLWZpCi1maQotZWNobyAiJGFzX21lOjkxOTU6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3RkYyIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgotCi1jYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBTVERDX0hFQURFUlMgMQotRU9GCi0KLWZpCi0KLSMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCi0KLWZvciBhY19oZWFkZXIgaW4gc3lzL3R5cGVzLmggc3lzL3N0YXQuaCBzdGRsaWIuaCBzdHJpbmcuaCBtZW1vcnkuaCBzdHJpbmdzLmggXAotICAgICAgICAgICAgICAgICAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAotZG8KLWFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAotZWNobyAiJGFzX21lOjkyMTE6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2Ci1pZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgOTIxNyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotI2luY2x1ZGUgPCRhY19oZWFkZXI+Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkyMjM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkyMjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTIyOTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkyMzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6OTI0MjogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1Ci1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi1FT0YKLQotZmkKLWRvbmUKLQotZWNobyAiJGFzX21lOjkyNTI6IGNoZWNraW5nIGZvciBzaWduZWQgY2hhciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzaWduZWQgY2hhci4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfdHlwZV9zaWduZWRfY2hhcitzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDkyNTggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotaWYgKChzaWduZWQgY2hhciAqKSAwKQotICByZXR1cm4gMDsKLWlmIChzaXplb2YgKHNpZ25lZCBjaGFyKSkKLSAgcmV0dXJuIDA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkyNzM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkyNzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTI3OTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkyODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl90eXBlX3NpZ25lZF9jaGFyPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl90eXBlX3NpZ25lZF9jaGFyPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjkyOTI6IHJlc3VsdDogJGFjX2N2X3R5cGVfc2lnbmVkX2NoYXIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3R5cGVfc2lnbmVkX2NoYXIiID4mNgotCi1lY2hvICIkYXNfbWU6OTI5NTogY2hlY2tpbmcgc2l6ZSBvZiBzaWduZWQgY2hhciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIHNpemUgb2Ygc2lnbmVkIGNoYXIuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcitzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9zaWduZWRfY2hhciIgPSB5ZXM7IHRoZW4KLSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSAgIyBEZXBlbmRpbmcgdXBvbiB0aGUgc2l6ZSwgY29tcHV0ZSB0aGUgbG8gYW5kIGhpIGJvdW5kcy4KLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgOTMwNCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotaW50Ci1tYWluICgpCi17Ci1pbnQgX2FycmF5XyBbMSAtIDIgKiAhKChzaXplb2YgKHNpZ25lZCBjaGFyKSkgPj0gMCldCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkzMTY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkzMTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTMyMjogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkzMjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19sbz0wIGFjX21pZD0wCi0gIHdoaWxlIDo7IGRvCi0gICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA5MzMwICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSRhY19pbmNsdWRlc19kZWZhdWx0Ci1pbnQKLW1haW4gKCkKLXsKLWludCBfYXJyYXlfIFsxIC0gMiAqICEoKHNpemVvZiAoc2lnbmVkIGNoYXIpKSA8PSAkYWNfbWlkKV0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTM0MjogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTM0NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo5MzQ4OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTM1MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2hpPSRhY19taWQ7IGJyZWFrCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2xvPWBleHByICRhY19taWQgKyAxYDsgYWNfbWlkPWBleHByIDIgJyonICRhY19taWQgKyAxYAotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBkb25lCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2hpPS0xIGFjX21pZD0tMQotICB3aGlsZSA6OyBkbwotICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgOTM2NyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotaW50Ci1tYWluICgpCi17Ci1pbnQgX2FycmF5XyBbMSAtIDIgKiAhKChzaXplb2YgKHNpZ25lZCBjaGFyKSkgPj0gJGFjX21pZCldCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkzNzk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkzODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTM4NTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjkzODg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19sbz0kYWNfbWlkOyBicmVhawotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19oaT1gZXhwciAkYWNfbWlkIC0gMWA7IGFjX21pZD1gZXhwciAyICcqJyAkYWNfbWlkYAotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBkb25lCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0jIEJpbmFyeSBzZWFyY2ggYmV0d2VlbiBsbyBhbmQgaGkgYm91bmRzLgotd2hpbGUgdGVzdCAieCRhY19sbyIgIT0gIngkYWNfaGkiOyBkbwotICBhY19taWQ9YGV4cHIgJygnICRhY19oaSAtICRhY19sbyAnKScgLyAyICsgJGFjX2xvYAotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDk0MDQgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotaW50IF9hcnJheV8gWzEgLSAyICogISgoc2l6ZW9mIChzaWduZWQgY2hhcikpIDw9ICRhY19taWQpXQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NDE2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo5NDE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjk0MjI6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo5NDI1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfaGk9JGFjX21pZAotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19sbz1gZXhwciAkYWNfbWlkICsgMWAKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWRvbmUKLWFjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0kYWNfbG8KLWVsc2UKLSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSAgeyB7IGVjaG8gIiRhc19tZTo5NDM4OiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZyIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDk0NDMgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3QudmFsIiwgInciKTsKLWlmICghZikKLSAgJGFjX21haW5fcmV0dXJuICgxKTsKLWZwcmludGYgKGYsICIlZCIsIChzaXplb2YgKHNpZ25lZCBjaGFyKSkpOwotZmNsb3NlIChmKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NDU5OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTo5NDYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo5NDY0OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTQ2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGFjX2N2X3NpemVvZl9zaWduZWRfY2hhcj1gY2F0IGNvbmZ0ZXN0LnZhbGAKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLWVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLWZpCi1ybSAtZiBjb25mdGVzdC52YWwKLWVsc2UKLSAgYWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyPTAKLWZpCi1maQotZWNobyAiJGFzX21lOjk0ODM6IHJlc3VsdDogJGFjX2N2X3NpemVvZl9zaWduZWRfY2hhciIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyIiA+JjYKLWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgU0laRU9GX1NJR05FRF9DSEFSICRhY19jdl9zaXplb2Zfc2lnbmVkX2NoYXIKLUVPRgotCi1pZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyIiA9IDEgOyB0aGVuCi0JTkNVUlNFU19TQk9PTD0ic2lnbmVkIGNoYXIiCi1lbHNlCi0JTkNVUlNFU19TQk9PTD0iY2hhciIKLWZpCi1lY2hvICIkYXNfbWU6OTQ5NDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHNpZ25lZCBCb29sZWFuIGFycmF5IGluIHRlcm0uaCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBzaWduZWQgQm9vbGVhbiBhcnJheSBpbiB0ZXJtLmguLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zaWduZWQtY2hhciBvciAtLWRpc2FibGUtc2lnbmVkLWNoYXIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfc2lnbmVkX2NoYXIrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3NpZ25lZF9jaGFyIgotICB3aXRoX3NpZ25lZF9jaGFyPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9zaWduZWRfY2hhcj1ubwotZmk7Ci1lY2hvICIkYXNfbWU6OTUwNDogcmVzdWx0OiAkd2l0aF9zaWduZWRfY2hhciIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9zaWduZWRfY2hhciIgPiY2Ci10ZXN0ICIkd2l0aF9zaWduZWRfY2hhciIgIT0geWVzICYmIE5DVVJTRVNfU0JPT0w9ImNoYXIiCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtc2lnd2luY2ggdG8gdHVybiBvbiB1c2Ugb2YgU0lHV0lOQ0ggbG9naWMKLWVjaG8gIiRhc19tZTo5NTA5OiBjaGVja2luZyBpZiB5b3Ugd2FudCBTSUdXSU5DSCBoYW5kbGVyIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgU0lHV0lOQ0ggaGFuZGxlci4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNpZ3dpbmNoIG9yIC0tZGlzYWJsZS1zaWd3aW5jaCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zaWd3aW5jaCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfc2lnd2luY2giCi0gIHdpdGhfc2lnd2luY2g9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3NpZ3dpbmNoPSR3aXRoX2V4dF9mdW5jcwotZmk7Ci1lY2hvICIkYXNfbWU6OTUxOTogcmVzdWx0OiAkd2l0aF9zaWd3aW5jaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9zaWd3aW5jaCIgPiY2Ci10ZXN0ICIkd2l0aF9zaWd3aW5jaCIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1NJR1dJTkNIIDEKLUVPRgotCi0jIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLXRjYXAtbmFtZXMgdG8gYWxsb3cgdXNlciB0byBkZWZpbmUgbmV3IGNhcGFiaWxpdGllcwotZWNobyAiJGFzX21lOjk1MjY6IGNoZWNraW5nIGlmIHlvdSB3YW50IHVzZXItZGVmaW5hYmxlIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBsaWtlIHRlcm1jYXAiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB1c2VyLWRlZmluYWJsZSB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgbGlrZSB0ZXJtY2FwLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdGNhcC1uYW1lcyBvciAtLWRpc2FibGUtdGNhcC1uYW1lcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV90Y2FwX25hbWVzK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV90Y2FwX25hbWVzIgotICB3aXRoX3RjYXBfbmFtZXM9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3RjYXBfbmFtZXM9JHdpdGhfZXh0X2Z1bmNzCi1maTsKLWVjaG8gIiRhc19tZTo5NTM2OiByZXN1bHQ6ICR3aXRoX3RjYXBfbmFtZXMiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfdGNhcF9uYW1lcyIgPiY2Ci1OQ1VSU0VTX1hOQU1FUz0wCi10ZXN0ICIkd2l0aF90Y2FwX25hbWVzIiA9IHllcyAmJiBOQ1VSU0VTX1hOQU1FUz0xCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRpdmVseSBzYWZlIHRvIGV4cGVyaW1lbnQgd2l0aC4KLQotZWNobyAiJGFzX21lOjk1NDQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IGFsbCBkZXZlbG9wbWVudCBjb2RlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgYWxsIGRldmVsb3BtZW50IGNvZGUuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGV2ZWxvcCBvciAtLXdpdGhvdXQtZGV2ZWxvcCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZGV2ZWxvcCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9kZXZlbG9wIgotICB3aXRoX2RldmVsb3A9JHdpdGh2YWwKLWVsc2UKLSAgd2l0aF9kZXZlbG9wPW5vCi1maTsKLWVjaG8gIiRhc19tZTo5NTU0OiByZXN1bHQ6ICR3aXRoX2RldmVsb3AiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfZGV2ZWxvcCIgPiY2Ci0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtaGFyZC10YWJzIHRvIHR1cm4gb24gdXNlIG9mIGhhcmQtdGFicyBvcHRpbWl6ZQotZWNobyAiJGFzX21lOjk1NTg6IGNoZWNraW5nIGlmIHlvdSB3YW50IGhhcmQtdGFicyBjb2RlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgaGFyZC10YWJzIGNvZGUuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1oYXJkLXRhYnMgb3IgLS1kaXNhYmxlLWhhcmQtdGFicyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9oYXJkX3RhYnMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2hhcmRfdGFicyIKLQotZWxzZQotICBlbmFibGVfaGFyZF90YWJzPSR3aXRoX2RldmVsb3AKLWZpOwotZWNobyAiJGFzX21lOjk1Njg6IHJlc3VsdDogJGVuYWJsZV9oYXJkX3RhYnMiID4mNQotZWNobyAiJHtFQ0hPX1R9JGVuYWJsZV9oYXJkX3RhYnMiID4mNgotdGVzdCAiJGVuYWJsZV9oYXJkX3RhYnMiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9IQVJEX1RBQlMgMQotRU9GCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUteG1jLWdsaXRjaCB0byB0dXJuIG9uIHVzZSBvZiBtYWdpYy1jb29raWUgb3B0aW1pemUKLWVjaG8gIiRhc19tZTo5NTc1OiBjaGVja2luZyBpZiB5b3Ugd2FudCBsaW1pdGVkIHN1cHBvcnQgZm9yIHhtYyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGxpbWl0ZWQgc3VwcG9ydCBmb3IgeG1jLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteG1jLWdsaXRjaCBvciAtLWRpc2FibGUteG1jLWdsaXRjaCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV94bWNfZ2xpdGNoK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV94bWNfZ2xpdGNoIgotCi1lbHNlCi0gIGVuYWJsZV94bWNfZ2xpdGNoPSR3aXRoX2RldmVsb3AKLWZpOwotZWNobyAiJGFzX21lOjk1ODU6IHJlc3VsdDogJGVuYWJsZV94bWNfZ2xpdGNoIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRlbmFibGVfeG1jX2dsaXRjaCIgPiY2Ci10ZXN0ICIkZW5hYmxlX3htY19nbGl0Y2giID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9YTUNfU1VQUE9SVCAxCi1FT0YKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGVzZSBhcmUganVzdCBleHBlcmltZW50YWwsIHByb2JhYmx5IHNob3VsZCBub3QgYmUgaW4gYSBwYWNrYWdlOgotCi1lY2hvICIkYXNfbWU6OTU5NDogY2hlY2tpbmcgaWYgeW91IGRvIG5vdCB3YW50IHRvIGFzc3VtZSBjb2xvcnMgYXJlIHdoaXRlLW9uLWJsYWNrIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IGRvIG5vdCB3YW50IHRvIGFzc3VtZSBjb2xvcnMgYXJlIHdoaXRlLW9uLWJsYWNrLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYXNzdW1lZC1jb2xvciBvciAtLWRpc2FibGUtYXNzdW1lZC1jb2xvciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9hc3N1bWVkX2NvbG9yK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9hc3N1bWVkX2NvbG9yIgotICB3aXRoX2Fzc3VtZWRfY29sb3I9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX2Fzc3VtZWRfY29sb3I9eWVzCi1maTsKLWVjaG8gIiRhc19tZTo5NjA0OiByZXN1bHQ6ICR3aXRoX2Fzc3VtZWRfY29sb3IiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfYXNzdW1lZF9jb2xvciIgPiY2Ci10ZXN0ICIkd2l0aF9hc3N1bWVkX2NvbG9yIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBVU0VfQVNTVU1FRF9DT0xPUiAxCi1FT0YKLQotIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1oYXNobWFwIHRvIHR1cm4gb24gdXNlIG9mIGhhc2htYXAgc2Nyb2xsaW5nIGxvZ2ljCi1lY2hvICIkYXNfbWU6OTYxMTogY2hlY2tpbmcgaWYgeW91IHdhbnQgaGFzaG1hcCBzY3JvbGxpbmctb3B0aW1pemF0aW9uIGNvZGUiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBoYXNobWFwIHNjcm9sbGluZy1vcHRpbWl6YXRpb24gY29kZS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWhhc2htYXAgb3IgLS1kaXNhYmxlLWhhc2htYXAgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfaGFzaG1hcCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfaGFzaG1hcCIKLSAgd2l0aF9oYXNobWFwPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9oYXNobWFwPXllcwotZmk7Ci1lY2hvICIkYXNfbWU6OTYyMTogcmVzdWx0OiAkd2l0aF9oYXNobWFwIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2hhc2htYXAiID4mNgotdGVzdCAiJHdpdGhfaGFzaG1hcCIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX0hBU0hNQVAgMQotRU9GCi0KLSMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtY29sb3JmZ2JnIHRvIHR1cm4gb24gdXNlIG9mICRDT0xPUkZHQkcgZW52aXJvbm1lbnQKLWVjaG8gIiRhc19tZTo5NjI4OiBjaGVja2luZyBpZiB5b3Ugd2FudCBjb2xvcmZnYmcgY29kZSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGNvbG9yZmdiZyBjb2RlLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtY29sb3JmZ2JnIG9yIC0tZGlzYWJsZS1jb2xvcmZnYmcgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfY29sb3JmZ2JnK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9jb2xvcmZnYmciCi0gIHdpdGhfY29sb3JmZ2JnPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9jb2xvcmZnYmc9bm8KLWZpOwotZWNobyAiJGFzX21lOjk2Mzg6IHJlc3VsdDogJHdpdGhfY29sb3JmZ2JnIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2NvbG9yZmdiZyIgPiY2Ci10ZXN0ICIkd2l0aF9jb2xvcmZnYmciID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9DT0xPUkZHQkcgMQotRU9GCi0KLSMgVGhpcyBpcyBzdGlsbCBleHBlcmltZW50YWwgKDIwMDgwMzI5KSwgYnV0IHNob3VsZCB1bHRpbWF0ZWx5IGJlIG1vdmVkIHRvCi0jIHRoZSBzY3JpcHQtYmxvY2sgLS13aXRoLW5vcm1hbCwgZXRjLgotCi1lY2hvICIkYXNfbWU6OTY0NzogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHRoZSBwdGhyZWFkIGxpYnJhcnkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggdGhlIHB0aHJlYWQgbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wdGhyZWFkIG9yIC0td2l0aG91dC1wdGhyZWFkIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9wdGhyZWFkK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX3B0aHJlYWQiCi0gIHdpdGhfcHRocmVhZD0kd2l0aHZhbAotZWxzZQotICB3aXRoX3B0aHJlYWQ9bm8KLWZpOwotZWNobyAiJGFzX21lOjk2NTc6IHJlc3VsdDogJHdpdGhfcHRocmVhZCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9wdGhyZWFkIiA+JjYKLQotaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgIT0gbm8gOyB0aGVuCi0gICAgZWNobyAiJGFzX21lOjk2NjE6IGNoZWNraW5nIGZvciBwdGhyZWFkLmgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcHRocmVhZC5oLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfcHRocmVhZF9oK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgOTY2NyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NjcxOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZTo5Njc3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIGFjX2N2X2hlYWRlcl9wdGhyZWFkX2g9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0gIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICBhY19jdl9oZWFkZXJfcHRocmVhZF9oPW5vCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6OTY5NjogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfcHRocmVhZF9oID0geWVzOyB0aGVuCi0KLSAgICAgICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9QVEhSRUFEU19IIDEKLUVPRgotCi0gICAgICAgIGVjaG8gIiRhc19tZTo5NzA0OiBjaGVja2luZyBpZiB3ZSBjYW4gbGluayB3aXRoIHRoZSBwdGhyZWFkIGxpYnJhcnkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBjYW4gbGluayB3aXRoIHRoZSBwdGhyZWFkIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Ci0gICAgICAgIGNmX3NhdmVfTElCUz0iJExJQlMiCi0gICAgICAgIExJQlM9Ii1scHRocmVhZCAkTElCUyIKLSAgICAgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSA5NzA5ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgICAgICAgaW50IHJjID0gcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk3MjU6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjk3Mjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo5NzMxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTczNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIHdpdGhfcHRocmVhZD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotd2l0aF9wdGhyZWFkPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgotICAgICAgICBlY2hvICIkYXNfbWU6OTc0NDogcmVzdWx0OiAkd2l0aF9wdGhyZWFkIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3B0aHJlYWQiID4mNgotCi0gICAgICAgIGlmIHRlc3QgIiR3aXRoX3B0aHJlYWQiID0geWVzIDsgdGhlbgotICAgICAgICAgICAgTElCUz0iLWxwdGhyZWFkICRMSUJTIgotICAgICAgICAgICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9MSUJQVEhSRUFEUyAxCi1FT0YKLQotICAgICAgICBlbHNlCi0gICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOjk3NTQ6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIHB0aHJlYWQgbGlicmFyeSIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIHB0aHJlYWQgbGlicmFyeSIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotICAgICAgICBmaQotCi1maQotCi1maQotCi1lY2hvICIkYXNfbWU6OTc2MzogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHdlYWstc3ltYm9scyBmb3IgcHRocmVhZHMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2Ugd2Vhay1zeW1ib2xzIGZvciBwdGhyZWFkcy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXdlYWstc3ltYm9scyBvciAtLWRpc2FibGUtd2Vhay1zeW1ib2xzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3dlYWtfc3ltYm9scytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfd2Vha19zeW1ib2xzIgotICB1c2Vfd2Vha19zeW1ib2xzPSR3aXRodmFsCi1lbHNlCi0gIHVzZV93ZWFrX3N5bWJvbHM9bm8KLWZpOwotZWNobyAiJGFzX21lOjk3NzM6IHJlc3VsdDogJHVzZV93ZWFrX3N5bWJvbHMiID4mNQotZWNobyAiJHtFQ0hPX1R9JHVzZV93ZWFrX3N5bWJvbHMiID4mNgotaWYgdGVzdCAiJHVzZV93ZWFrX3N5bWJvbHMiID0geWVzIDsgdGhlbgotCi1lY2hvICIkYXNfbWU6OTc3NzogY2hlY2tpbmcgaWYgJENDIHN1cHBvcnRzIHdlYWsgc3ltYm9scyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmICRDQyBzdXBwb3J0cyB3ZWFrIHN5bWJvbHMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3dlYWtfc3ltYm9scytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDk3ODQgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLWludAotbWFpbiAoKQotewotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgIGlmIGRlZmluZWQgX19VU0VfSVNPQzk5Ci0jICAgIGRlZmluZSBfY2F0X3ByYWdtYShleHApCV9QcmFnbWEoI2V4cCkKLSMgICAgZGVmaW5lIF93ZWFrX3ByYWdtYShleHApCV9jYXRfcHJhZ21hKHdlYWsgbmFtZSkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIF93ZWFrX3ByYWdtYShleHApCi0jICBlbmRpZgotIyAgZGVmaW5lIF9kZWNsYXJlKG5hbWUpCV9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9fdHlwZW9mX18obmFtZSkgbmFtZQotIyAgZGVmaW5lIHdlYWtfc3ltYm9sKG5hbWUpCV93ZWFrX3ByYWdtYShuYW1lKSBfZGVjbGFyZShuYW1lKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKLSNlbmRpZgotCi13ZWFrX3N5bWJvbChmb3Blbik7Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTgxMDogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTgxMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZTo5ODE2OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6OTgxOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X3dlYWtfc3ltYm9scz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0KLWZpCi1lY2hvICIkYXNfbWU6OTgzMDogcmVzdWx0OiAkY2ZfY3Zfd2Vha19zeW1ib2xzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl93ZWFrX3N5bWJvbHMiID4mNgotCi1lbHNlCi0gICAgY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCi1maQotCi1pZiB0ZXN0ICRjZl9jdl93ZWFrX3N5bWJvbHMgPSB5ZXMgOyB0aGVuCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1dFQUtfU1lNQk9MUyAxCi1FT0YKLQotZmkKLQotUFRIUkVBRD0KLWlmIHRlc3QgIiR3aXRoX3B0aHJlYWQiID0gInllcyIgOyB0aGVuCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1BUSFJFQURTIDEKLUVPRgotCi0gICAgZW5hYmxlX3JlZW50cmFudD15ZXMKLSAgICBpZiB0ZXN0ICRjZl9jdl93ZWFrX3N5bWJvbHMgPSB5ZXMgOyB0aGVuCi0gICAgICAgIFBUSFJFQUQ9LWxwdGhyZWFkCi0gICAgZmkKLWZpCi0KLSMgUmVlbnRyYW50IGNvZGUgaGFzIHRvIGJlIG9wYXF1ZTsgdGhlcmUncyBsaXR0bGUgYWR2YW50YWdlIHRvIG1ha2luZyBuY3Vyc2VzCi0jIG9wYXF1ZSBvdXRzaWRlIG9mIHRoYXQsIHNvIHRoZXJlIGlzIG5vIC0tZW5hYmxlLW9wYXF1ZSBvcHRpb24uICBXZSBjYW4gdXNlCi0jIHRoaXMgb3B0aW9uIHdpdGhvdXQgLS13aXRoLXB0aHJlYWRzLCBidXQgdGhpcyB3aWxsIGJlIGFsd2F5cyBzZXQgZm9yCi0jIHB0aHJlYWRzLgotZWNobyAiJGFzX21lOjk4NjA6IGNoZWNraW5nIGlmIHlvdSB3YW50IGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlZW50cmFudCBvciAtLWRpc2FibGUtcmVlbnRyYW50IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3JlZW50cmFudCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfcmVlbnRyYW50IgotICB3aXRoX3JlZW50cmFudD0kZW5hYmxldmFsCi1lbHNlCi0gIHdpdGhfcmVlbnRyYW50PW5vCi1maTsKLWVjaG8gIiRhc19tZTo5ODcwOiByZXN1bHQ6ICR3aXRoX3JlZW50cmFudCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9yZWVudHJhbnQiID4mNgotaWYgdGVzdCAiJHdpdGhfcmVlbnRyYW50IiA9IHllcyA7IHRoZW4KLQljZl9jdl9lbmFibGVfcmVlbnRyYW50PTEKLQljZl9jdl9lbmFibGVfb3BhcXVlPSJOQ1VSU0VTX0lOVEVSTkFMUyIKLQlOQ1VSU0VTX09QQVFVRT0xCi0JTkNVUlNFU19TSVpFX1Q9aW50Ci0gICAgaWYgdGVzdCAkY2ZfY3Zfd2Vha19zeW1ib2xzID0geWVzIDsgdGhlbgotCi0jIHJlbW92ZSBwdGhyZWFkIGxpYnJhcnkgZnJvbSAkTElCUwotTElCUz1gZWNobyAiJExJQlMiIHwgc2VkIC1lICdzLy1scHRocmVhZFsgCV0vL2cnIC1lICdzLy1scHRocmVhZCQvLydgCi0KLSAgICBlbHNlCi0gICAgICAgIExJQl9TVUZGSVg9InQke0xJQl9TVUZGSVh9IgotICAgIGZpCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1JFRU5UUkFOVCAxCi1FT0YKLQotaWYgdGVzdCAiJHt3aXRoX2FiaV92ZXJzaW9uK3NldH0iICE9IHNldDsgdGhlbgotCWNhc2UgJGNmX2N2X3JlbF92ZXJzaW9uIGluCi0JNS4qKQotCQljZl9jdl9yZWxfdmVyc2lvbj02LjAKLQkJY2ZfY3ZfYWJpX3ZlcnNpb249NgotCQl7IGVjaG8gIiRhc19tZTo5ODk0OiBXQVJOSU5HOiBPdmVycmlkaW5nIEFCSSB2ZXJzaW9uIHRvICRjZl9jdl9hYmlfdmVyc2lvbiIgPiY1Ci1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IE92ZXJyaWRpbmcgQUJJIHZlcnNpb24gdG8gJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjI7fQotCQk7OwotCWVzYWMKLWZpCi0KLWVsc2UKLQljZl9jdl9lbmFibGVfcmVlbnRyYW50PTAKLQljZl9jdl9lbmFibGVfb3BhcXVlPSJOQ1VSU0VTX09QQVFVRSIKLQlOQ1VSU0VTX09QQVFVRT0wCi0JTkNVUlNFU19TSVpFX1Q9c2hvcnQKLWZpCi0KLWVjaG8gIiRhc19tZTo5OTA3OiBjaGVja2luZyBpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgc2FmZS1zcHJpbnRmIGNvZGUiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgc2FmZS1zcHJpbnRmIGNvZGUuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zYWZlLXNwcmludGYgb3IgLS1kaXNhYmxlLXNhZmUtc3ByaW50ZiB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zYWZlX3NwcmludGYrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3NhZmVfc3ByaW50ZiIKLSAgd2l0aF9zYWZlX3NwcmludGY9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3NhZmVfc3ByaW50Zj1ubwotZmk7Ci1lY2hvICIkYXNfbWU6OTkxNzogcmVzdWx0OiAkd2l0aF9zYWZlX3NwcmludGYiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfc2FmZV9zcHJpbnRmIiA+JjYKLXRlc3QgIiR3aXRoX3NhZmVfc3ByaW50ZiIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1NBRkVfU1BSSU5URiAxCi1FT0YKLQotIyMjICAgdXNlIG9wdGlvbiAtLWRpc2FibGUtc2Nyb2xsLWhpbnRzIHRvIHR1cm4gb2ZmIHVzZSBvZiBzY3JvbGwtaGludHMgc2Nyb2xsaW5nIGxvZ2ljCi0jIHdoZW4gaGFzaG1hcCBpcyB1c2VkIHNjcm9sbCBoaW50cyBhcmUgdXNlbGVzcwotaWYgdGVzdCAiJHdpdGhfaGFzaG1hcCIgPSBubyA7IHRoZW4KLWVjaG8gIiRhc19tZTo5OTI2OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBleHBlcmltZW50IHdpdGhvdXQgc2Nyb2xsaW5nLWhpbnRzIGNvZGUiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBleHBlcmltZW50IHdpdGhvdXQgc2Nyb2xsaW5nLWhpbnRzIGNvZGUuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zY3JvbGwtaGludHMgb3IgLS1kaXNhYmxlLXNjcm9sbC1oaW50cyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zY3JvbGxfaGludHMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3Njcm9sbF9oaW50cyIKLSAgd2l0aF9zY3JvbGxfaGludHM9JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX3Njcm9sbF9oaW50cz15ZXMKLWZpOwotZWNobyAiJGFzX21lOjk5MzY6IHJlc3VsdDogJHdpdGhfc2Nyb2xsX2hpbnRzIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX3Njcm9sbF9oaW50cyIgPiY2Ci10ZXN0ICIkd2l0aF9zY3JvbGxfaGludHMiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9TQ1JPTExfSElOVFMgMQotRU9GCi0KLWZpCi0KLWVjaG8gIiRhc19tZTo5OTQ0OiBjaGVja2luZyBpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgd2dldGNoLWV2ZW50cyBjb2RlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgZXhwZXJpbWVudGFsIHdnZXRjaC1ldmVudHMgY29kZS4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgb3IgLS1kaXNhYmxlLXdnZXRjaC1ldmVudHMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfd2dldGNoX2V2ZW50cytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfd2dldGNoX2V2ZW50cyIKLSAgd2l0aF93Z2V0Y2hfZXZlbnRzPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF93Z2V0Y2hfZXZlbnRzPW5vCi1maTsKLWVjaG8gIiRhc19tZTo5OTU0OiByZXN1bHQ6ICR3aXRoX3dnZXRjaF9ldmVudHMiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfd2dldGNoX2V2ZW50cyIgPiY2Ci10ZXN0ICIkd2l0aF93Z2V0Y2hfZXZlbnRzIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMgMQotRU9GCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWVjaG8gdG8gc3VwcHJlc3MgZnVsbCBkaXNwbGF5IGNvbXBpbGluZyBjb21tYW5kcwotZWNobyAiJGFzX21lOjk5NjM6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGRpc3BsYXkgZnVsbCBjb21tYW5kcyBkdXJpbmcgYnVpbGQiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBkaXNwbGF5IGZ1bGwgY29tbWFuZHMgZHVyaW5nIGJ1aWxkLi4uICRFQ0hPX0MiID4mNgotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZWNobyBvciAtLWRpc2FibGUtZWNobyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9lY2hvK3NldH0iID0gc2V0OyB0aGVuCi0gIGVuYWJsZXZhbD0iJGVuYWJsZV9lY2hvIgotICB3aXRoX2VjaG89JGVuYWJsZXZhbAotZWxzZQotICB3aXRoX2VjaG89eWVzCi1maTsKLWlmIHRlc3QgIiR3aXRoX2VjaG8iID0geWVzOyB0aGVuCi0JRUNIT19MSU5LPQotZWxzZQotCUVDSE9fTElOSz0nQCBlY2hvIGxpbmtpbmcgJEAgLi4uIDsnCi0JdGVzdCAtbiAiJExJQlRPT0wiICYmIExJQlRPT0w9IiRMSUJUT09MIC0tc2lsZW50IgotCXRlc3QgLW4gIiRMSUJUT09MX0NYWCIgJiYgTElCVE9PTF9DWFg9IiRMSUJUT09MX0NYWCAtLXNpbGVudCIKLWZpCi1lY2hvICIkYXNfbWU6OTk4MDogcmVzdWx0OiAkd2l0aF9lY2hvIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2VjaG8iID4mNgotCi0jIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS13YXJuaW5ncyB0byB0dXJuIG9uIGFsbCBnY2Mgd2FybmluZ3MKLWVjaG8gIiRhc19tZTo5OTg0OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBzZWUgY29tcGlsZXIgd2FybmluZ3MiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBzZWUgY29tcGlsZXIgd2FybmluZ3MuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS13YXJuaW5ncyBvciAtLWRpc2FibGUtd2FybmluZ3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfd2FybmluZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX3dhcm5pbmdzIgotICB3aXRoX3dhcm5pbmdzPSRlbmFibGV2YWwKLWZpOwotZWNobyAiJGFzX21lOjk5OTI6IHJlc3VsdDogJHdpdGhfd2FybmluZ3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JHdpdGhfd2FybmluZ3MiID4mNgotCi1pZiB0ZXN0ICJ4JHdpdGhfd2FybmluZ3MiID0gInh5ZXMiOyB0aGVuCi0gCUFEQUZMQUdTPSIkQURBRkxBR1MgLWduYXRnIgotCi1JTlRFTF9DT01QSUxFUj1ubwotCi1pZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KLQljYXNlICRob3N0X29zIGluCi0JbGludXgqfGdudSopCi0JCWVjaG8gIiRhc19tZToxMDAwMzogY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgQyBjb21waWxlciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRoaXMgaXMgcmVhbGx5IEludGVsIEMgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2Ci0JCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotCQlDRkxBR1M9IiRDRkxBR1MgLW5vLWdjYyIKLQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMDAwOCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotCi0jaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2Vsc2UKLW1ha2UgYW4gZXJyb3IKLSNlbmRpZgotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMDI1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMDAyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMDAzMTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEwMDM0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgSU5URUxfQ09NUElMRVI9eWVzCi1jZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC13ZTE0NyAtbm8tZ2NjIgotCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCi0JCWVjaG8gIiRhc19tZToxMDA0NTogcmVzdWx0OiAkSU5URUxfQ09NUElMRVIiID4mNQotZWNobyAiJHtFQ0hPX1R9JElOVEVMX0NPTVBJTEVSIiA+JjYKLQkJOzsKLQllc2FjCi1maQotCi1jYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAxMDA1MiAiJHthc19tZS1jb25maWd1cmV9IgotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeyByZXR1cm4gKGFyZ3ZbYXJnYy0xXSA9PSAwKSA7IH0KLUVPRgotCi1pZiB0ZXN0ICIkSU5URUxfQ09NUElMRVIiID0geWVzCi10aGVuCi0jIFRoZSAiLXdkWFhYIiBvcHRpb25zIHN1cHByZXNzIHdhcm5pbmdzOgotIyByZW1hcmsgIzE0MTk6IGV4dGVybmFsIGRlY2xhcmF0aW9uIGluIHByaW1hcnkgc291cmNlIGZpbGUKLSMgcmVtYXJrICMxNjgyOiBpbXBsaWNpdCBjb252ZXJzaW9uIG9mIGEgNjQtYml0IGludGVncmFsIHR5cGUgdG8gYSBzbWFsbGVyIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQotIyByZW1hcmsgIzE2ODM6IGV4cGxpY2l0IGNvbnZlcnNpb24gb2YgYSA2NC1iaXQgaW50ZWdyYWwgdHlwZSB0byBhIHNtYWxsZXIgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCi0jIHJlbWFyayAjMTY4NDogY29udmVyc2lvbiBmcm9tIHBvaW50ZXIgdG8gc2FtZS1zaXplZCBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKLSMgcmVtYXJrICMxOTM6IHplcm8gdXNlZCBmb3IgdW5kZWZpbmVkIHByZXByb2Nlc3NpbmcgaWRlbnRpZmllcgotIyByZW1hcmsgIzU5MzogdmFyaWFibGUgImN1cnNfc2JfbGVmdF9hcnJvdyIgd2FzIHNldCBidXQgbmV2ZXIgdXNlZAotIyByZW1hcmsgIzgxMDogY29udmVyc2lvbiBmcm9tICJpbnQiIHRvICJEaW1lbnNpb249e3Vuc2lnbmVkIHNob3J0fSIgbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cwotIyByZW1hcmsgIzg2OTogcGFyYW1ldGVyICJ0dyIgd2FzIG5ldmVyIHJlZmVyZW5jZWQKLSMgcmVtYXJrICM5ODE6IG9wZXJhbmRzIGFyZSBldmFsdWF0ZWQgaW4gdW5zcGVjaWZpZWQgb3JkZXIKLSMgd2FybmluZyAjMjY5OiBpbnZhbGlkIGZvcm1hdCBzdHJpbmcgY29udmVyc2lvbgotCi0JeyBlY2hvICIkYXNfbWU6MTAwNzA6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjUKLWVjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9Ci0JY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0JRVhUUkFfQ0ZMQUdTPSItV2FsbCIKLQlmb3IgY2Zfb3B0IGluIFwKLQkJd2QxNDE5IFwKLQkJd2QxNjgyIFwKLQkJd2QxNjgzIFwKLQkJd2QxNjg0IFwKLQkJd2QxOTMgXAotCQl3ZDI3OSBcCi0JCXdkNTkzIFwKLQkJd2Q4MTAgXAotCQl3ZDg2OSBcCi0JCXdkOTgxCi0JZG8KLQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgJEVYVFJBX0NGTEFHUyAtJGNmX29wdCIKLQkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAwODc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEwMDkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KLQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTAwOTI6IHJlc3VsdDogLi4uIC0kY2Zfb3B0IiA+JjUKLWVjaG8gIiR7RUNIT19UfS4uLiAtJGNmX29wdCIgPiY2Ci0JCQlFWFRSQV9DRkxBR1M9IiRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCi0JCWZpCi0JZG9uZQotCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgotCi1lbGlmIHRlc3QgIiRHQ0MiID0geWVzCi10aGVuCi0JeyBlY2hvICIkYXNfbWU6MTAxMDE6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjUKLWVjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9Ci0JY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0JRVhUUkFfQ0ZMQUdTPSItVyAtV2FsbCIKLQljZl93YXJuX0NPTlNUPSIiCi0JdGVzdCAiJHdpdGhfZXh0X2NvbnN0IiA9IHllcyAmJiBjZl93YXJuX0NPTlNUPSJXd3JpdGUtc3RyaW5ncyIKLQlmb3IgY2Zfb3B0IGluIFwKLQkJV2JhZC1mdW5jdGlvbi1jYXN0IFwKLQkJV2Nhc3QtYWxpZ24gXAotCQlXY2FzdC1xdWFsIFwKLQkJV2lubGluZSBcCi0JCVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0JCVdtaXNzaW5nLXByb3RvdHlwZXMgXAotCQlXbmVzdGVkLWV4dGVybnMgXAotCQlXcG9pbnRlci1hcml0aCBcCi0JCVdzaGFkb3cgXAotCQlXc3RyaWN0LXByb3RvdHlwZXMgXAotCQlXdW5kZWYgJGNmX3dhcm5fQ09OU1QgV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBXZXh0cmEgV25vLXVua25vd24tcHJhZ21hcyBXc3dpdGNoLWVudW0KLQlkbwotCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgotCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDEyMTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTAxMjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxMDEyNjogcmVzdWx0OiAuLi4gLSRjZl9vcHQiID4mNQotZWNobyAiJHtFQ0hPX1R9Li4uIC0kY2Zfb3B0IiA+JjYKLQkJCWNhc2UgJGNmX29wdCBpbiAjKHZpCi0JCQlXY2FzdC1xdWFsKSAjKHZpCi0JCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRFhUU1RSSU5HREVGSU5FUyIKLQkJCQk7OwotCQkJV2lubGluZSkgIyh2aQotCQkJCWNhc2UgJEdDQ19WRVJTSU9OIGluCi0JCQkJWzM0XS4qKQotCQkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04iIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjEwMTM3OiB0ZXN0aW5nIGZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04gLi4uIiAxPiY1Ci0KLQkJCQkJY29udGludWU7OwotCQkJCWVzYWMKLQkJCQk7OwotCQkJZXNhYwotCQkJRVhUUkFfQ0ZMQUdTPSIkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgotCQlmaQotCWRvbmUKLQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotCWlmIHRlc3QgIiRjZl93aXRoX2N4eCIgPSB5ZXMgOyB0aGVuCi0KLUlOVEVMX0NQTFVTUExVUz1ubwotCi1pZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KLQljYXNlICRob3N0X29zIGluCi0JbGludXgqfGdudSopCi0JCWVjaG8gIiRhc19tZToxMDE1NzogY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgQysrIGNvbXBpbGVyIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgQysrIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgotCQljZl9zYXZlX0NGTEFHUz0iJENYWEZMQUdTIgotCQlDWFhGTEFHUz0iJENYWEZMQUdTIC1uby1nY2MiCi0JCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTAxNjIgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi1pbnQKLW1haW4gKCkKLXsKLQotI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKLSNlbHNlCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDE3OTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTAxODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAxODU6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMDE4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIElOVEVMX0NQTFVTUExVUz15ZXMKLWNmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLXdlMTQ3IC1uby1nY2MiCi0KLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCQlDWFhGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgotCQllY2hvICIkYXNfbWU6MTAxOTk6IHJlc3VsdDogJElOVEVMX0NQTFVTUExVUyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kSU5URUxfQ1BMVVNQTFVTIiA+JjYKLQkJOzsKLQllc2FjCi1maQotCi1hY19leHQ9Y2MKLWFjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ1hYIC1jICRDWFhGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251Ci1hY19tYWluX3JldHVybj1yZXR1cm4KLQotY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTAyMTMgImNvbmZpZ3VyZSIKLWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsgcmV0dXJuIChhcmd2W2FyZ2MtMV0gPT0gMCkgOyB9Ci1FT0YKLQotaWYgdGVzdCAiJElOVEVMX0NQTFVTUExVUyIgPSB5ZXMKLXRoZW4KLSMgVGhlICItd2RYWFgiIG9wdGlvbnMgc3VwcHJlc3Mgd2FybmluZ3M6Ci0jIHJlbWFyayAjMTQxOTogZXh0ZXJuYWwgZGVjbGFyYXRpb24gaW4gcHJpbWFyeSBzb3VyY2UgZmlsZQotIyByZW1hcmsgIzE2ODI6IGltcGxpY2l0IGNvbnZlcnNpb24gb2YgYSA2NC1iaXQgaW50ZWdyYWwgdHlwZSB0byBhIHNtYWxsZXIgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCi0jIHJlbWFyayAjMTY4MzogZXhwbGljaXQgY29udmVyc2lvbiBvZiBhIDY0LWJpdCBpbnRlZ3JhbCB0eXBlIHRvIGEgc21hbGxlciBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKLSMgcmVtYXJrICMxNjg0OiBjb252ZXJzaW9uIGZyb20gcG9pbnRlciB0byBzYW1lLXNpemVkIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQotIyByZW1hcmsgIzE5MzogemVybyB1c2VkIGZvciB1bmRlZmluZWQgcHJlcHJvY2Vzc2luZyBpZGVudGlmaWVyCi0jIHJlbWFyayAjNTkzOiB2YXJpYWJsZSAiY3Vyc19zYl9sZWZ0X2Fycm93IiB3YXMgc2V0IGJ1dCBuZXZlciB1c2VkCi0jIHJlbWFyayAjODEwOiBjb252ZXJzaW9uIGZyb20gImludCIgdG8gIkRpbWVuc2lvbj17dW5zaWduZWQgc2hvcnR9IiBtYXkgbG9zZSBzaWduaWZpY2FudCBiaXRzCi0jIHJlbWFyayAjODY5OiBwYXJhbWV0ZXIgInR3IiB3YXMgbmV2ZXIgcmVmZXJlbmNlZAotIyByZW1hcmsgIzk4MTogb3BlcmFuZHMgYXJlIGV2YWx1YXRlZCBpbiB1bnNwZWNpZmllZCBvcmRlcgotIyB3YXJuaW5nICMyNjk6IGludmFsaWQgZm9ybWF0IHN0cmluZyBjb252ZXJzaW9uCi0KLQl7IGVjaG8gIiRhc19tZToxMDIzMTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNQotZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgJENDIHdhcm5pbmcgb3B0aW9ucy4uLiIgPiY2O30KLQljZl9zYXZlX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCi0JRVhUUkFfQ1hYRkxBR1M9Ii1XYWxsIgotCWZvciBjZl9vcHQgaW4gXAotCQl3ZDE0MTkgXAotCQl3ZDE2ODIgXAotCQl3ZDE2ODMgXAotCQl3ZDE2ODQgXAotCQl3ZDE5MyBcCi0JCXdkMjc5IFwKLQkJd2Q1OTMgXAotCQl3ZDgxMCBcCi0JCXdkODY5IFwKLQkJd2Q5ODEKLQlkbwotCQlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgJEVYVFJBX0NYWEZMQUdTIC0kY2Zfb3B0IgotCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDI0ODogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTAyNTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxMDI1MzogcmVzdWx0OiAuLi4gLSRjZl9vcHQiID4mNQotZWNobyAiJHtFQ0hPX1R9Li4uIC0kY2Zfb3B0IiA+JjYKLQkJCUVYVFJBX0NYWEZMQUdTPSIkRVhUUkFfQ1hYRkxBR1MgLSRjZl9vcHQiCi0JCWZpCi0JZG9uZQotCUNYWEZMQUdTPSIkY2Zfc2F2ZV9DWFhGTEFHUyIKLQotZWxpZiB0ZXN0ICIkR1hYIiA9IHllcwotdGhlbgotCXsgZWNobyAiJGFzX21lOjEwMjYyOiBjaGVja2luZyBmb3IgJENYWCB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNQotZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgJENYWCB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9Ci0JY2Zfc2F2ZV9DWFhGTEFHUz0iJENYWEZMQUdTIgotCUVYVFJBX0NYWEZMQUdTPSItVyAtV2FsbCIKLQljZl9neHhfZXh0cmFfd2FybmluZ3M9IiIKLQl0ZXN0ICIkd2l0aF9leHRfY29uc3QiID0geWVzICYmIGNmX2d4eF9leHRyYV93YXJuaW5ncz0iV3dyaXRlLXN0cmluZ3MiCi0JY2FzZSAiJEdDQ19WRVJTSU9OIiBpbgotCVsxLTJdLiopCi0JCTs7Ci0JKikKLQkJY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzPSIkY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzIFdlZmZjKysiCi0JCTs7Ci0JZXNhYwotCWZvciBjZl9vcHQgaW4gXAotCQlXYWJpIFwKLQkJZmFiaS12ZXJzaW9uPTAgXAotCQlXb3ZlcmxvYWRlZC12aXJ0dWFsIFwKLQkJV3NpZ24tcHJvbW8gXAotCQlXc3ludGggXAotCQlXb2xkLXN0eWxlLWNhc3QgXAotCQlXY2FzdC1hbGlnbiBcCi0JCVdjYXN0LXF1YWwgXAotCQlXbWlzc2luZy1wcm90b3R5cGVzIFwKLQkJV3BvaW50ZXItYXJpdGggXAotCQlXc2hhZG93IFwKLQkJV3N0cmljdC1wcm90b3R5cGVzIFwKLQkJV3VuZGVmICRjZl9neHhfZXh0cmFfd2FybmluZ3MgV25vLXVudXNlZAotCWRvCi0JCUNYWEZMQUdTPSIkY2Zfc2F2ZV9DWFhGTEFHUyAkRVhUUkFfQ1hYRkxBR1MgLVdlcnJvciAtJGNmX29wdCIKLQkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAyOTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEwMjk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KLQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTAyOTY6IHJlc3VsdDogLi4uIC0kY2Zfb3B0IiA+JjUKLWVjaG8gIiR7RUNIT19UfS4uLiAtJGNmX29wdCIgPiY2Ci0JCQlFWFRSQV9DWFhGTEFHUz0iJEVYVFJBX0NYWEZMQUdTIC0kY2Zfb3B0IgotCQllbHNlCi0JCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiJGFzX21lOjEwMzAwOiByZXN1bHQ6IC4uLiBubyAtJGNmX29wdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0uLi4gbm8gLSRjZl9vcHQiID4mNgotCQlmaQotCWRvbmUKLQlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MiCi1maQotCi1ybSAtZiBjb25mdGVzdCoKLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLWFjX21haW5fcmV0dXJuPXJldHVybgotCi0JZmkKLWZpCi0KLWlmIHRlc3QgIiRHQ0MiID0geWVzCi10aGVuCi1jYXQgPiBjb25mdGVzdC5pIDw8RU9GCi0jaWZuZGVmIEdDQ19QUklOVEYKLSNkZWZpbmUgR0NDX1BSSU5URiAwCi0jZW5kaWYKLSNpZm5kZWYgR0NDX1NDQU5GCi0jZGVmaW5lIEdDQ19TQ0FORiAwCi0jZW5kaWYKLSNpZm5kZWYgR0NDX05PUkVUVVJOCi0jZGVmaW5lIEdDQ19OT1JFVFVSTiAvKiBub3RoaW5nICovCi0jZW5kaWYKLSNpZm5kZWYgR0NDX1VOVVNFRAotI2RlZmluZSBHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotRU9GCi1pZiB0ZXN0ICIkR0NDIiA9IHllcwotdGhlbgotCXsgZWNobyAiJGFzX21lOjEwMzM2OiBjaGVja2luZyBmb3IgJENDIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlcy4uLiIgPiY1Ci1lY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciAkQ0MgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmVzLi4uIiA+JjY7fQotY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTAzMzkgIiR7YXNfbWUtY29uZmlndXJlfSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgImNvbmZ0ZXN0LmgiCi0jaW5jbHVkZSAiY29uZnRlc3QuaSIKLSNpZglHQ0NfUFJJTlRGCi0jZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsZm10LHZhcikpKQotI2Vsc2UKLSNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgLypub3RoaW5nKi8KLSNlbmRpZgotI2lmCUdDQ19TQ0FORgotI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoc2NhbmYsZm10LHZhcikpKQotI2Vsc2UKLSNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAgLypub3RoaW5nKi8KLSNlbmRpZgotZXh0ZXJuIHZvaWQgd293KGNoYXIgKiwuLi4pIEdDQ19TQ0FORkxJS0UoMSwyKTsKLWV4dGVybiB2b2lkIG9vcHMoY2hhciAqLC4uLikgR0NDX1BSSU5URkxJS0UoMSwyKSBHQ0NfTk9SRVRVUk47Ci1leHRlcm4gdm9pZCBmb28odm9pZCkgR0NDX05PUkVUVVJOOwotaW50IG1haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdIEdDQ19VTlVTRUQpIHsgcmV0dXJuIDA7IH0KLUVPRgotCWZvciBjZl9hdHRyaWJ1dGUgaW4gc2NhbmYgcHJpbnRmIHVudXNlZCBub3JldHVybgotCWRvCi0KLWNmX0FUVFJJQlVURT1gZWNobyAiJGNmX2F0dHJpYnV0ZSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCi0KLQkJY2ZfZGlyZWN0aXZlPSJfX2F0dHJpYnV0ZV9fKCgkY2ZfYXR0cmlidXRlKSkiCi0JCWVjaG8gImNoZWNraW5nIGZvciAkQ0MgJGNmX2RpcmVjdGl2ZSIgMT4mNQotCQljYXNlICRjZl9hdHRyaWJ1dGUgaW4KLQkJc2NhbmZ8cHJpbnRmKQotCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKLSNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQotRU9GCi0JCQk7OwotCQkqKQotCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKLSNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgJGNmX2RpcmVjdGl2ZQotRU9GCi0JCQk7OwotCQllc2FjCi0JCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMzc3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMDM4MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCi0JCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiJGFzX21lOjEwMzgyOiByZXN1bHQ6IC4uLiAkY2ZfYXR0cmlidXRlIiA+JjUKLWVjaG8gIiR7RUNIT19UfS4uLiAkY2ZfYXR0cmlidXRlIiA+JjYKLQkJCWNhdCBjb25mdGVzdC5oID4+Y29uZmRlZnMuaAotCQlmaQotCWRvbmUKLWVsc2UKLQlmZ3JlcCBkZWZpbmUgY29uZnRlc3QuaSA+PmNvbmZkZWZzLmgKLWZpCi1ybSAtcmYgY29uZnRlc3QqCi1maQotCi0jIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS1hc3NlcnRpb25zIHRvIHR1cm4gb24gZ2VuZXJhdGlvbiBvZiBhc3NlcnRpb24gY29kZQotZWNobyAiJGFzX21lOjEwMzk0OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBlbmFibGUgcnVudGltZSBhc3NlcnRpb25zIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHJ1bnRpbWUgYXNzZXJ0aW9ucy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWFzc2VydGlvbnMgb3IgLS1kaXNhYmxlLWFzc2VydGlvbnMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfYXNzZXJ0aW9ucytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfYXNzZXJ0aW9ucyIKLSAgd2l0aF9hc3NlcnRpb25zPSRlbmFibGV2YWwKLWVsc2UKLSAgd2l0aF9hc3NlcnRpb25zPW5vCi1maTsKLWVjaG8gIiRhc19tZToxMDQwNDogcmVzdWx0OiAkd2l0aF9hc3NlcnRpb25zIiA+JjUKLWVjaG8gIiR7RUNIT19UfSR3aXRoX2Fzc2VydGlvbnMiID4mNgotaWYgdGVzdCAtbiAiJEdDQyIKLXRoZW4KLQlpZiB0ZXN0ICIkd2l0aF9hc3NlcnRpb25zIiA9IG5vCi0JdGhlbgotCQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOREVCVUcgMQotRU9GCi0KLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRE5ERUJVRyIKLQllbHNlCi0JCUFEQUZMQUdTPSIkQURBRkxBR1MgLWduYXRhIgotCWZpCi1maQotCi0jIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtbGVha3MgdG8gc3VwcHJlc3MgInBlcm1hbmVudCIgbGVha3MsIGZvciB0ZXN0aW5nCi0KLWVjaG8gIiRhc19tZToxMDQyMjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRtYWxsb2MgZm9yIHRlc3RpbmciID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgZG1hbGxvYyBmb3IgdGVzdGluZy4uLiAkRUNIT19DIiA+JjYKLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kbWFsbG9jIG9yIC0td2l0aG91dC1kbWFsbG9jIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kbWFsbG9jK3NldH0iID0gc2V0OyB0aGVuCi0gIHdpdGh2YWw9IiR3aXRoX2RtYWxsb2MiCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIFVTRV9ETUFMTE9DIDEKLUVPRgotCi0JOiAke3dpdGhfY2ZsYWdzOj0tZ30KLQk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQotCSB3aXRoX2RtYWxsb2M9eWVzCi1lbHNlCi0gIHdpdGhfZG1hbGxvYz0KLWZpOwotZWNobyAiJGFzX21lOjEwNDM4OiByZXN1bHQ6ICR7d2l0aF9kbWFsbG9jOi1ub30iID4mNQotZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RtYWxsb2M6LW5vfSIgPiY2Ci0KLWNhc2UgLiR3aXRoX2NmbGFncyBpbiAjKHZpCi0uKi1nKikKLQljYXNlIC4kQ0ZMQUdTIGluICModmkKLQkuKi1nKikgIyh2aQotCQk7OwotCSopCi0KLWNmX2ZpeF9jcHBmbGFncz1ubwotY2ZfbmV3X2NmbGFncz0KLWNmX25ld19jcHBmbGFncz0KLWNmX25ld19leHRyYV9jcHBmbGFncz0KLQotZm9yIGNmX2FkZF9jZmxhZ3MgaW4gLWcKLWRvCi1jYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLW5vKQotCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4gIyh2aQotCS11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKSAjKHZpCi0JCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KLQkJLUQqKQotCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCi0KLQkJCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCi0KLQkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWZpCi0JCQk7OwotCQllc2FjCi0JCWNhc2UgIiRDUFBGTEFHUyIgaW4KLQkJKiRjZl9hZGRfY2ZsYWdzKSAjKHZpCi0JCQk7OwotCQkqKSAjKHZpCi0JCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQk7OwotCQllc2FjCi0JCTs7Ci0JKikKLQkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCTs7Ci0JZXNhYwotCTs7Ci15ZXMpCi0JY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCi0JY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCi0KLQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KLQk7OwotZXNhYwotZG9uZQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCi0KLQlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KLQotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKLWZpCi0KLWlmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgotCi0JRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgotZmkKLQotCQk7OwotCWVzYWMKLQk7OwotZXNhYwotCi1pZiB0ZXN0ICIkd2l0aF9kbWFsbG9jIiA9IHllcyA7IHRoZW4KLQllY2hvICIkYXNfbWU6MTA1MjI6IGNoZWNraW5nIGZvciBkbWFsbG9jLmgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZG1hbGxvYy5oLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfZG1hbGxvY19oK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTA1MjggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPGRtYWxsb2MuaD4KLV9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA1MzI6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotICBybSAtZiBjb25mdGVzdC5lcjEKLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjEwNTM4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIGFjX2N2X2hlYWRlcl9kbWFsbG9jX2g9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0gIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICBhY19jdl9oZWFkZXJfZG1hbGxvY19oPW5vCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6MTA1NTc6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9kbWFsbG9jX2giID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9kbWFsbG9jX2giID4mNgotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2RtYWxsb2NfaCA9IHllczsgdGhlbgotCi1lY2hvICIkYXNfbWU6MTA1NjE6IGNoZWNraW5nIGZvciBkbWFsbG9jX2RlYnVnIGluIC1sZG1hbGxvYyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkbWFsbG9jX2RlYnVnIGluIC1sZG1hbGxvYy4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1ZytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGRtYWxsb2MgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMDU2OSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgZG1hbGxvY19kZWJ1ZyAoKTsKLWludAotbWFpbiAoKQotewotZG1hbGxvY19kZWJ1ZyAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNTg4OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMDU5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNTk0OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTA1OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfZG1hbGxvY19kbWFsbG9jX2RlYnVnPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl9saWJfZG1hbGxvY19kbWFsbG9jX2RlYnVnPW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLWVjaG8gIiRhc19tZToxMDYwODogcmVzdWx0OiAkYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1ZyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1ZyIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9saWJfZG1hbGxvY19kbWFsbG9jX2RlYnVnID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgSEFWRV9MSUJETUFMTE9DIDEKLUVPRgotCi0gIExJQlM9Ii1sZG1hbGxvYyAkTElCUyIKLQotZmkKLQotZmkKLQotZmkKLQotZWNobyAiJGFzX21lOjEwNjIzOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgZGJtYWxsb2MgZm9yIHRlc3RpbmciID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgZGJtYWxsb2MgZm9yIHRlc3RpbmcuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGJtYWxsb2Mgb3IgLS13aXRob3V0LWRibWFsbG9jIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kYm1hbGxvYytzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF9kYm1hbGxvYyIKLSAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX0RCTUFMTE9DIDEKLUVPRgotCi0JOiAke3dpdGhfY2ZsYWdzOj0tZ30KLQk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQotCSB3aXRoX2RibWFsbG9jPXllcwotZWxzZQotICB3aXRoX2RibWFsbG9jPQotZmk7Ci1lY2hvICIkYXNfbWU6MTA2Mzk6IHJlc3VsdDogJHt3aXRoX2RibWFsbG9jOi1ub30iID4mNQotZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RibWFsbG9jOi1ub30iID4mNgotCi1jYXNlIC4kd2l0aF9jZmxhZ3MgaW4gIyh2aQotLiotZyopCi0JY2FzZSAuJENGTEFHUyBpbiAjKHZpCi0JLiotZyopICModmkKLQkJOzsKLQkqKQotCi1jZl9maXhfY3BwZmxhZ3M9bm8KLWNmX25ld19jZmxhZ3M9Ci1jZl9uZXdfY3BwZmxhZ3M9Ci1jZl9uZXdfZXh0cmFfY3BwZmxhZ3M9Ci0KLWZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCi1kbwotY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCi1ubykKLQljYXNlICRjZl9hZGRfY2ZsYWdzIGluICModmkKLQktdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykgIyh2aQotCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCi0JCS1EKikKLQkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAotCi0JCQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwotCi0JCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCi0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJCWNvbnRpbnVlCi0JCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCi0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJCWNvbnRpbnVlCi0JCQlmaQotCQkJOzsKLQkJZXNhYwotCQljYXNlICIkQ1BQRkxBR1MiIGluCi0JCSokY2ZfYWRkX2NmbGFncykgIyh2aQotCQkJOzsKLQkJKikgIyh2aQotCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJOzsKLQkJZXNhYwotCQk7OwotCSopCi0JCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQk7OwotCWVzYWMKLQk7OwoteWVzKQotCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQotCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAotCi0JdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JJiYgY2ZfZml4X2NwcGZsYWdzPW5vCi0JOzsKLWVzYWMKLWRvbmUKLQotaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgotCi0JQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgotZmkKLQotaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCi0KLQlDUFBGTEFHUz0iJGNmX25ld19jcHBmbGFncyAkQ1BQRkxBR1MiCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KLQotCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKLWZpCi0KLQkJOzsKLQllc2FjCi0JOzsKLWVzYWMKLQotaWYgdGVzdCAiJHdpdGhfZGJtYWxsb2MiID0geWVzIDsgdGhlbgotCWVjaG8gIiRhc19tZToxMDcyMzogY2hlY2tpbmcgZm9yIGRibWFsbG9jLmgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGJtYWxsb2MuaC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2RibWFsbG9jX2grc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMDcyOSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8ZGJtYWxsb2MuaD4KLV9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA3MzM6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotICBybSAtZiBjb25mdGVzdC5lcjEKLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjEwNzM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSAgYWNfY3ZfaGVhZGVyX2RibWFsbG9jX2g9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotZmkKLWVjaG8gIiRhc19tZToxMDc1ODogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX2RibWFsbG9jX2giID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oID0geWVzOyB0aGVuCi0KLWVjaG8gIiRhc19tZToxMDc2MjogY2hlY2tpbmcgZm9yIGRlYnVnX21hbGxvYyBpbiAtbGRibWFsbG9jIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRlYnVnX21hbGxvYyBpbiAtbGRibWFsbG9jLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfZGJtYWxsb2NfZGVidWdfbWFsbG9jK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLUxJQlM9Ii1sZGJtYWxsb2MgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMDc3MCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgZGVidWdfbWFsbG9jICgpOwotaW50Ci1tYWluICgpCi17Ci1kZWJ1Z19tYWxsb2MgKCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDc4OTogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTA3OTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMDc5NTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEwNzk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX2RibWFsbG9jX2RlYnVnX21hbGxvYz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfbGliX2RibWFsbG9jX2RlYnVnX21hbGxvYz1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6MTA4MDk6IHJlc3VsdDogJGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2MiID4mNgotaWYgdGVzdCAkYWNfY3ZfbGliX2RibWFsbG9jX2RlYnVnX21hbGxvYyA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIEhBVkVfTElCREJNQUxMT0MgMQotRU9GCi0KLSAgTElCUz0iLWxkYm1hbGxvYyAkTElCUyIKLQotZmkKLQotZmkKLQotZmkKLQotZWNobyAiJGFzX21lOjEwODI0OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgdmFsZ3JpbmQgZm9yIHRlc3RpbmciID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgdmFsZ3JpbmQgZm9yIHRlc3RpbmcuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdmFsZ3JpbmQgb3IgLS13aXRob3V0LXZhbGdyaW5kIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF92YWxncmluZCtzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF92YWxncmluZCIKLSAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgVVNFX1ZBTEdSSU5EIDEKLUVPRgotCi0JOiAke3dpdGhfY2ZsYWdzOj0tZ30KLQk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQotCSB3aXRoX3ZhbGdyaW5kPXllcwotZWxzZQotICB3aXRoX3ZhbGdyaW5kPQotZmk7Ci1lY2hvICIkYXNfbWU6MTA4NDA6IHJlc3VsdDogJHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNQotZWNobyAiJHtFQ0hPX1R9JHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNgotCi1jYXNlIC4kd2l0aF9jZmxhZ3MgaW4gIyh2aQotLiotZyopCi0JY2FzZSAuJENGTEFHUyBpbiAjKHZpCi0JLiotZyopICModmkKLQkJOzsKLQkqKQotCi1jZl9maXhfY3BwZmxhZ3M9bm8KLWNmX25ld19jZmxhZ3M9Ci1jZl9uZXdfY3BwZmxhZ3M9Ci1jZl9uZXdfZXh0cmFfY3BwZmxhZ3M9Ci0KLWZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCi1kbwotY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCi1ubykKLQljYXNlICRjZl9hZGRfY2ZsYWdzIGluICModmkKLQktdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykgIyh2aQotCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCi0JCS1EKikKLQkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAotCi0JCQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwotCi0JCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCi0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJCWNvbnRpbnVlCi0JCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCi0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJCWNvbnRpbnVlCi0JCQlmaQotCQkJOzsKLQkJZXNhYwotCQljYXNlICIkQ1BQRkxBR1MiIGluCi0JCSokY2ZfYWRkX2NmbGFncykgIyh2aQotCQkJOzsKLQkJKikgIyh2aQotCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQkJOzsKLQkJZXNhYwotCQk7OwotCSopCi0JCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCQk7OwotCWVzYWMKLQk7OwoteWVzKQotCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKLQotCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAotCi0JdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JJiYgY2ZfZml4X2NwcGZsYWdzPW5vCi0JOzsKLWVzYWMKLWRvbmUKLQotaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgotCi0JQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgotZmkKLQotaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCi0KLQlDUFBGTEFHUz0iJGNmX25ld19jcHBmbGFncyAkQ1BQRkxBR1MiCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KLQotCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKLWZpCi0KLQkJOzsKLQllc2FjCi0JOzsKLWVzYWMKLQotZWNobyAiJGFzX21lOjEwOTIzOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBwZXJmb3JtIG1lbW9yeS1sZWFrIHRlc3RpbmciID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBwZXJmb3JtIG1lbW9yeS1sZWFrIHRlc3RpbmcuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1sZWFrcyBvciAtLWRpc2FibGUtbGVha3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfbGVha3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZW5hYmxldmFsPSIkZW5hYmxlX2xlYWtzIgotICB3aXRoX25vX2xlYWtzPXllcwotZWxzZQotICA6ICR7d2l0aF9ub19sZWFrczo9bm99Ci1maTsKLWVjaG8gIiRhc19tZToxMDkzMzogcmVzdWx0OiAkd2l0aF9ub19sZWFrcyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kd2l0aF9ub19sZWFrcyIgPiY2Ci0KLWlmIHRlc3QgIiR3aXRoX25vX2xlYWtzIiA9IHllcyA7IHRoZW4KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBOT19MRUFLUyAxCi1FT0YKLQotZmkKLQotY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9OQ19BTExPQ19IIDEKLUVPRgotCi0jIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS1leHBhbmRlZCB0byBnZW5lcmF0ZSBjZXJ0YWluIG1hY3JvcyBhcyBmdW5jdGlvbnMKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4cGFuZGVkIG9yIC0tZGlzYWJsZS1leHBhbmRlZCB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9leHBhbmRlZCtzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfZXhwYW5kZWQiCi0gIHRlc3QgIiRlbmFibGV2YWwiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIE5DVVJTRVNfRVhQQU5ERUQgMQotRU9GCi0KLWZpOwotCi0jIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtbWFjcm9zIHRvIHN1cHByZXNzIG1hY3JvcyBpbiBmYXZvciBvZiBmdW5jdGlvbnMKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1hY3JvcyBvciAtLWRpc2FibGUtbWFjcm9zIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX21hY3JvcytzZXR9IiA9IHNldDsgdGhlbgotICBlbmFibGV2YWw9IiRlbmFibGVfbWFjcm9zIgotICB0ZXN0ICIkZW5hYmxldmFsIiA9IG5vICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIE5DVVJTRVNfTk9NQUNST1MgMQotRU9GCi0KLWZpOwotCi0jIE5vcm1hbGx5IHdlIG9ubHkgYWRkIHRyYWNlKCkgdG8gdGhlIGRlYnVnLWxpYnJhcnkuICBBbGxvdyB0aGlzIHRvIGJlCi0jIGV4dGVuZGVkIHRvIGFsbCBtb2RlbHMgb2YgdGhlIG5jdXJzZXMgbGlicmFyeToKLWNmX2FsbF90cmFjZXM9bm8KLWNhc2UgIiRDRkxBR1MgJENQUEZMQUdTIiBpbgotKi1EVFJBQ0UqKQotCWNmX2FsbF90cmFjZXM9eWVzCi0JOzsKLWVzYWMKLQotZWNobyAiJGFzX21lOjEwOTc4OiBjaGVja2luZyB3aGV0aGVyIHRvIGFkZCB0cmFjZSBmZWF0dXJlIHRvIGFsbCBtb2RlbHMiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRvIGFkZCB0cmFjZSBmZWF0dXJlIHRvIGFsbCBtb2RlbHMuLi4gJEVDSE9fQyIgPiY2Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdHJhY2Ugb3IgLS13aXRob3V0LXRyYWNlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF90cmFjZStzZXR9IiA9IHNldDsgdGhlbgotICB3aXRodmFsPSIkd2l0aF90cmFjZSIKLSAgY2Zfd2l0aF90cmFjZT0kd2l0aHZhbAotZWxzZQotICBjZl93aXRoX3RyYWNlPSRjZl9hbGxfdHJhY2VzCi1maTsKLWVjaG8gIiRhc19tZToxMDk4ODogcmVzdWx0OiAkY2Zfd2l0aF90cmFjZSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2Zfd2l0aF90cmFjZSIgPiY2Ci0KLWlmIHRlc3QgIiRjZl93aXRoX3RyYWNlIiA9IHllcyA7IHRoZW4KLQlMSUJfVFJBQ0lORz1hbGwKLQlBREFfVFJBQ0U9VFJVRQotCi1jZl9maXhfY3BwZmxhZ3M9bm8KLWNmX25ld19jZmxhZ3M9Ci1jZl9uZXdfY3BwZmxhZ3M9Ci1jZl9uZXdfZXh0cmFfY3BwZmxhZ3M9Ci0KLWZvciBjZl9hZGRfY2ZsYWdzIGluIC1EVFJBQ0UKLWRvCi1jYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLW5vKQotCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4gIyh2aQotCS11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKSAjKHZpCi0JCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KLQkJLUQqKQotCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCi0KLQkJCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCi0KLQkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQkJY29udGludWUKLQkJCWZpCi0JCQk7OwotCQllc2FjCi0JCWNhc2UgIiRDUFBGTEFHUyIgaW4KLQkJKiRjZl9hZGRfY2ZsYWdzKSAjKHZpCi0JCQk7OwotCQkqKSAjKHZpCi0JCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCQk7OwotCQllc2FjCi0JCTs7Ci0JKikKLQkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0JCTs7Ci0JZXNhYwotCTs7Ci15ZXMpCi0JY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotCi0JY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCi0KLQl0ZXN0ICIke2NmX2FkZF9jZmxhZ3N9IiAhPSAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KLQk7OwotZXNhYwotZG9uZQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCi0KLQlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCi1maQotCi1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KLQotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKLWZpCi0KLWlmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgotCi0JRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgotZmkKLQotZWxzZQotCUxJQl9UUkFDSU5HPURFQlVHCi0JQURBX1RSQUNFPUZBTFNFCi1maQotCi0jIyMJQ2hlY2tzIGZvciBsaWJyYXJpZXMuCi1lY2hvICIkYXNfbWU6MTEwNjk6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5Li4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9mdW5jX2dldHRpbWVvZmRheStzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDExMDc1ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLS8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldHRpbWVvZmRheSAoKTsgYmVsb3cuICAqLwotI2luY2x1ZGUgPGFzc2VydC5oPgotLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0vKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotY2hhciBnZXR0aW1lb2ZkYXkgKCk7Ci1jaGFyICgqZikgKCk7Ci0KLWludAotbWFpbiAoKQotewotLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwotICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCi0gICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0jaWYgZGVmaW5lZCAoX19zdHViX2dldHRpbWVvZmRheSkgfHwgZGVmaW5lZCAoX19zdHViX19fZ2V0dGltZW9mZGF5KQotY2hva2UgbWUKLSNlbHNlCi1mID0gZ2V0dGltZW9mZGF5OwotI2VuZGlmCi0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExMTA2OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTEwOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjExMTEyOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTExMTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9mdW5jX2dldHRpbWVvZmRheT15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXk9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjExMTI1OiByZXN1bHQ6ICRhY19jdl9mdW5jX2dldHRpbWVvZmRheSIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkiID4mNgotaWYgdGVzdCAkYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkgPSB5ZXM7IHRoZW4KLSAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQotRU9GCi0KLWVsc2UKLQotZWNobyAiJGFzX21lOjExMTM0OiBjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5IGluIC1sYnNkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSBpbiAtbGJzZC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxic2QgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTE0MiAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgZ2V0dGltZW9mZGF5ICgpOwotaW50Ci1tYWluICgpCi17Ci1nZXR0aW1lb2ZkYXkgKCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTE2MTogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTExNjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTE2NzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExMTcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXk9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5PW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLWVjaG8gIiRhc19tZToxMTE4MTogcmVzdWx0OiAkYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5IiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5ID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEhBVkVfR0VUVElNRU9GREFZIDEKLUVPRgotCi0JTElCUz0iJExJQlMgLWxic2QiCi1maQotCi1maQotCi1lY2hvICIkYXNfbWU6MTExOTM6IGNoZWNraW5nIGlmIC1sbSBuZWVkZWQgZm9yIG1hdGggZnVuY3Rpb25zIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgLWxtIG5lZWRlZCBmb3IgbWF0aCBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X25lZWRfbGlibStzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi0JY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTIwMCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLQkjaW5jbHVkZSA8c3RkaW8uaD4KLQkjaW5jbHVkZSA8bWF0aC5oPgotCi1pbnQKLW1haW4gKCkKLXsKLWRvdWJsZSB4ID0gcmFuZCgpOyBwcmludGYoInJlc3VsdCA9ICVnXG4iLCBzaW4oeCkpCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTIxNTogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTEyMTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTIyMTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExMjI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfbmVlZF9saWJtPW5vCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWNmX2N2X25lZWRfbGlibT15ZXMKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjExMjM0OiByZXN1bHQ6ICRjZl9jdl9uZWVkX2xpYm0iID4mNQotZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25lZWRfbGlibSIgPiY2Ci1pZiB0ZXN0ICIkY2ZfY3ZfbmVlZF9saWJtIiA9IHllcwotdGhlbgotTUFUSF9MSUI9LWxtCi1maQotCi0jIyMJQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCi1lY2hvICIkYXNfbWU6MTEyNDI6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTEyNDggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0KLV9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEyNTY6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotICBybSAtZiBjb25mdGVzdC5lcjEKLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjExMjYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLSAgZWxzZQotICAgIGFjX2NwcF9lcnI9Ci0gIGZpCi1lbHNlCi0gIGFjX2NwcF9lcnI9eWVzCi1maQotaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0gIGFjX2N2X2hlYWRlcl9zdGRjPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgotICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTEyODQgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1fQUNFT0YKLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLSAgZWdyZXAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIDoKLWVsc2UKLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotZmkKLQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLSAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJLgotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDExMzAyICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotX0FDRU9GCi1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0gIGVncmVwICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgOgotZWxzZQotICBhY19jdl9oZWFkZXJfc3RkYz1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0KgotCi1maQotCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgotICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gIDoKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTMyMyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNpZiAoKCcgJyAmIDB4MEZGKSA9PSAweDAyMCkKLSMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKLSMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkKLSNlbHNlCi0jIGRlZmluZSBJU0xPV0VSKGMpICgoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ2knKSBcCi0gICAgICAgICAgICAgICAgICAgICB8fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCi0gICAgICAgICAgICAgICAgICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKLSMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCi0jZW5kaWYKLQotI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKLWludAotbWFpbiAoKQotewotICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKLSAgICAgICAgfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCi0gICAgICAkYWNfbWFpbl9yZXR1cm4oMik7Ci0gICRhY19tYWluX3JldHVybiAoMCk7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTEzNDk6IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExMzUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTM1NDogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExMzU3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgOgotZWxzZQotICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQotZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLWZpCi1maQotZWNobyAiJGFzX21lOjExMzcwOiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3RkYyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNgotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLQotY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLUVPRgotCi1maQotCi1hY19oZWFkZXJfZGlyZW50PW5vCi1mb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KLSAgYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfZGlyZW50XyRhY19oZHIiIHwgJGFzX3RyX3NoYAotZWNobyAiJGFzX21lOjExMzgzOiBjaGVja2luZyBmb3IgJGFjX2hkciB0aGF0IGRlZmluZXMgRElSIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZHIgdGhhdCBkZWZpbmVzIERJUi4uLiAkRUNIT19DIiA+JjYKLWlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTM4OSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8JGFjX2hkcj4KLQotaW50Ci1tYWluICgpCi17Ci1pZiAoKERJUiAqKSAwKQotcmV0dXJuIDA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDA0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTQwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTQxMDogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNDEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWV2YWwgIiRhc19hY19IZWFkZXI9bm8iCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjExNDIzOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLWVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKLWlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KLSAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGRyIiB8ICRhc190cl9jcHBgIDEKLUVPRgotCi1hY19oZWFkZXJfZGlyZW50PSRhY19oZHI7IGJyZWFrCi1maQotCi1kb25lCi0jIFR3byB2ZXJzaW9ucyBvZiBvcGVuZGlyIGV0IGFsLiBhcmUgaW4gLWxkaXIgYW5kIC1seCBvbiBTQ08gWGVuaXguCi1pZiB0ZXN0ICRhY19oZWFkZXJfZGlyZW50ID0gZGlyZW50Lmg7IHRoZW4KLSAgZWNobyAiJGFzX21lOjExNDM2OiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbGRpciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1sZGlyLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfZGlyX29wZW5kaXIrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxkaXIgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTQ0NCAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgb3BlbmRpciAoKTsKLWludAotbWFpbiAoKQotewotb3BlbmRpciAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDYzOiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTQ2NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNDY5OiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE0NzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfZGlyX29wZW5kaXI9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2N2X2xpYl9kaXJfb3BlbmRpcj1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6MTE0ODM6IHJlc3VsdDogJGFjX2N2X2xpYl9kaXJfb3BlbmRpciIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2Rpcl9vcGVuZGlyIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9kaXJfb3BlbmRpciA9IHllczsgdGhlbgotICBMSUJTPSIkTElCUyAtbGRpciIKLWZpCi0KLWVsc2UKLSAgZWNobyAiJGFzX21lOjExNDkwOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHguLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl94X29wZW5kaXIrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWx4ICAkTElCUyIKLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE0OTggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0vKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyIG9wZW5kaXIgKCk7Ci1pbnQKLW1haW4gKCkKLXsKLW9wZW5kaXIgKCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTUxNzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE1MjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTUyMzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNTI2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX3hfb3BlbmRpcj15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfbGliX3hfb3BlbmRpcj1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6MTE1Mzc6IHJlc3VsdDogJGFjX2N2X2xpYl94X29wZW5kaXIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl94X29wZW5kaXIiID4mNgotaWYgdGVzdCAkYWNfY3ZfbGliX3hfb3BlbmRpciA9IHllczsgdGhlbgotICBMSUJTPSIkTElCUyAtbHgiCi1maQotCi1maQotCi1lY2hvICIkYXNfbWU6MTE1NDU6IGNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0aW1lLmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl90aW1lK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE1NTEgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi1pbnQKLW1haW4gKCkKLXsKLWlmICgoc3RydWN0IHRtICopIDApCi1yZXR1cm4gMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE1Njc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNTcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNTczOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE1NzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9oZWFkZXJfdGltZT15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfaGVhZGVyX3RpbWU9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6MTE1ODY6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90aW1lIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfdGltZSIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfdGltZSA9IHllczsgdGhlbgotCi1jYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBUSU1FX1dJVEhfU1lTX1RJTUUgMQotRU9GCi0KLWZpCi0KLWVjaG8gIiRhc19tZToxMTU5NjogY2hlY2tpbmcgZm9yIHJlZ3VsYXItZXhwcmVzc2lvbiBoZWFkZXJzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJlZ3VsYXItZXhwcmVzc2lvbiBoZWFkZXJzLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHtjZl9jdl9yZWdleCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDExNjAzICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxyZWdleC5oPgotaW50Ci1tYWluICgpCi17Ci0KLQlyZWdleF90ICpwOwotCWludCB4ID0gcmVnY29tcChwLCAiIiwgMCk7Ci0JaW50IHkgPSByZWdleGVjKHAsICIiLCAwLCAwLCAwKTsKLQlyZWdmcmVlKHApOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTYyMTogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE2MjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTYyNzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNjMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfcmVnZXg9InJlZ2V4LmgiCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE2MzggImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHJlZ2V4cC5oPgotaW50Ci1tYWluICgpCi17Ci0KLQkJY2hhciAqcCA9IGNvbXBpbGUoIiIsICIiLCAiIiwgMCk7Ci0JCWludCB4ID0gc3RlcCgiIiwgIiIpOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTY1MzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE2NTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTY1OTogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNjYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfcmVnZXg9InJlZ2V4cC5oIgotZWxzZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLQkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKLQkJTElCUz0iLWxnZW4gJExJQlMiCi0JCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE2NzIgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHJlZ2V4cHIuaD4KLWludAotbWFpbiAoKQotewotCi0JCQljaGFyICpwID0gY29tcGlsZSgiIiwgIiIsICIiKTsKLQkJCWludCB4ID0gc3RlcCgiIiwgIiIpOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTY4NzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE2OTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMTY5MzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjExNjk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgY2ZfY3ZfcmVnZXg9InJlZ2V4cHIuaCIKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotTElCUz0iJGNmX3NhdmVfTElCUyIKLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotZmkKLQotZWNobyAiJGFzX21lOjExNzEyOiByZXN1bHQ6ICRjZl9jdl9yZWdleCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfcmVnZXgiID4mNgotY2FzZSAkY2ZfY3ZfcmVnZXggaW4KLQlyZWdleC5oKSAgIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCi0jZGVmaW5lIEhBVkVfUkVHRVhfSF9GVU5DUyAxCi1FT0YKLSA7OwotCXJlZ2V4cC5oKSAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9SRUdFWFBfSF9GVU5DUyAxCi1FT0YKLSA7OwotCXJlZ2V4cHIuaCkgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9SRUdFWFBSX0hfRlVOQ1MgMQotRU9GCi0gOzsKLWVzYWMKLQotZm9yIGFjX2hlYWRlciBpbiBcCi1mY250bC5oIFwKLWdldG9wdC5oIFwKLWxpbWl0cy5oIFwKLWxvY2FsZS5oIFwKLXBvbGwuaCBcCi1zeXMvYnNkdHlwZXMuaCBcCi1zeXMvaW9jdGwuaCBcCi1zeXMvcGFyYW0uaCBcCi1zeXMvcG9sbC5oIFwKLXN5cy9zZWxlY3QuaCBcCi1zeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIFwKLXR0eWVudC5oIFwKLXVuaXN0ZC5oIFwKLXdjdHlwZS5oIFwKLQotZG8KLWFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAotZWNobyAiJGFzX21lOjExNzQ4OiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgotaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDExNzU0ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLSNpbmNsdWRlIDwkYWNfaGVhZGVyPgotX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTc1ODogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0gIGFjX3N0YXR1cz0kPwotICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6MTE3NjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotICBlbHNlCi0gICAgYWNfY3BwX2Vycj0KLSAgZmkKLWVsc2UKLSAgYWNfY3BwX2Vycj15ZXMKLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLSAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0gIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICBldmFsICIkYXNfYWNfSGVhZGVyPW5vIgotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1maQotZWNobyAiJGFzX21lOjExNzgzOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLWVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKLWlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KLSAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLUVPRgotCi1maQotZG9uZQotCi0jIGNoZWNrIGZvciBJU0MgKHRoaXMgbWF5IGFsc28gZGVmaW5lIF9QT1NJWF9TT1VSQ0UpCi0jIE5vdGU6IGV2ZW4gbm9uLVBvc2l4IElTQyBuZWVkcyA8c3lzL2JzZHR5cGVzLmg+IHRvIGRlY2xhcmUgZmRfc2V0Ci1pZiB0ZXN0ICIkSVNDIiA9IHllcyA7IHRoZW4KLQotZWNobyAiJGFzX21lOjExNzk3OiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbGNwb3NpeCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtYWluIGluIC1sY3Bvc2l4Li4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfY3Bvc2l4X21haW4rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxjcG9zaXggICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMTgwNSAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLWludAotbWFpbiAoKQotewotbWFpbiAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODE3OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTgyMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODIzOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE4MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfY3Bvc2l4X21haW49eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2N2X2xpYl9jcG9zaXhfbWFpbj1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6MTE4Mzc6IHJlc3VsdDogJGFjX2N2X2xpYl9jcG9zaXhfbWFpbiIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2Nwb3NpeF9tYWluIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9jcG9zaXhfbWFpbiA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCi0jZGVmaW5lIEhBVkVfTElCQ1BPU0lYIDEKLUVPRgotCi0gIExJQlM9Ii1sY3Bvc2l4ICRMSUJTIgotCi1maQotCi0JZWNobyAiJGFzX21lOjExODQ4OiBjaGVja2luZyBmb3IgYnplcm8gaW4gLWxpbmV0IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGJ6ZXJvIGluIC1saW5ldC4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2luZXRfYnplcm8rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxpbmV0ICAkTElCUyIKLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE4NTYgImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotCi0vKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyIGJ6ZXJvICgpOwotaW50Ci1tYWluICgpCi17Ci1iemVybyAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODc1OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTg3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODgxOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE4ODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfaW5ldF9iemVybz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotYWNfY3ZfbGliX2luZXRfYnplcm89bm8KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCi1maQotZWNobyAiJGFzX21lOjExODk1OiByZXN1bHQ6ICRhY19jdl9saWJfaW5ldF9iemVybyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2luZXRfYnplcm8iID4mNgotaWYgdGVzdCAkYWNfY3ZfbGliX2luZXRfYnplcm8gPSB5ZXM7IHRoZW4KLSAgTElCUz0iJExJQlMgLWxpbmV0IgotZmkKLWZpCi0KLWVjaG8gIiRhc19tZToxMTkwMjogY2hlY2tpbmcgaWYgc3lzL3RpbWUuaCB3b3JrcyB3aXRoIHN5cy9zZWxlY3QuaCIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHN5cy90aW1lLmggd29ya3Mgd2l0aCBzeXMvc2VsZWN0LmguLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2NmX2N2X3N5c190aW1lX3NlbGVjdCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotCi1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDExOTA5ICJjb25maWd1cmUiCi0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSAotI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTkyOTogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTE5MzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE5MzU6IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMTkzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0gIGNmX2N2X3N5c190aW1lX3NlbGVjdD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLWNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0PW5vCi1maQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0KLWZpCi0KLWVjaG8gIiRhc19tZToxMTk1MDogcmVzdWx0OiAkY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSRjZl9jdl9zeXNfdGltZV9zZWxlY3QiID4mNgotdGVzdCAiJGNmX2N2X3N5c190aW1lX3NlbGVjdCIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgSEFWRV9TWVNfVElNRV9TRUxFQ1QgMQotRU9GCi0KLSMjIwljaGVja3MgZm9yIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcwotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotYWNfbWFpbl9yZXR1cm49cmV0dXJuCi0KLWVjaG8gIiRhc19tZToxMTk2NDogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IEFOU0kgQyIgPiY1CitlY2hvICIkYXNfbWU6MjA4ODogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IEFOU0kgQyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2Nfc3RkYytzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTE5NjksNyArMjA5Myw3IEBACiAgIGFjX2N2X3Byb2dfY2Nfc3RkYz1ubwogYWNfc2F2ZV9DQz0kQ0MKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTE5NzIgImNvbmZpZ3VyZSIKKyNsaW5lIDIwOTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMjAxOCwxNiArMjE0MiwxNiBAQAogZG8KICAgQ0M9IiRhY19zYXZlX0NDICRhY19hcmciCiAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMDIxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxNDU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyMDI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIxNDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIwMjc6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxNTE6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjAzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMTU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19hcmcKIGJyZWFrCkBAIC0xMjA0NCwyMSArMjE2OCwxMzUwNyBAQAogCiBjYXNlICJ4JGFjX2N2X3Byb2dfY2Nfc3RkYyIgaW4KICAgeHx4bm8pCi0gICAgZWNobyAiJGFzX21lOjEyMDQ3OiByZXN1bHQ6IG5vbmUgbmVlZGVkIiA+JjUKKyAgICBlY2hvICIkYXNfbWU6MjE3MTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CiBlY2hvICIke0VDSE9fVH1ub25lIG5lZWRlZCIgPiY2IDs7CiAgICopCi0gICAgZWNobyAiJGFzX21lOjEyMDUwOiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNQorICAgIGVjaG8gIiRhc19tZToyMTc0OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY2CiAgICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19zdGRjIiA7OwogZXNhYwogCi1lY2hvICIkYXNfbWU6MTIwNTU6IGNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdCIgPiY1CisjIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkIGJ5IEFDX1BST0dfQ0MKKzogJHtDQzo9Y2N9CisKK2VjaG8gIiRhc19tZToyMTgyOiBjaGVja2luZyBcJENDIHZhcmlhYmxlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgXCRDQyB2YXJpYWJsZS4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgIiRDQyIgaW4KKygqW1wgXAldLVtJVURdKikKKwllY2hvICIkYXNfbWU6MjE4NjogcmVzdWx0OiBicm9rZW4iID4mNQorZWNobyAiJHtFQ0hPX1R9YnJva2VuIiA+JjYKKwl7IGVjaG8gIiRhc19tZToyMTg4OiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0NQUEZMQUdTIG9wdGlvbnMiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0NQUEZMQUdTIG9wdGlvbnMiID4mMjt9CisJIyBodW1vciBoaW0uLi4KKwljZl9mbGFncz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9eW14gCV0qWyAJXS8vJ2AKKwlDQz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9bIAldLiovLydgCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2ZsYWdzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJOzsKKygqKQorCWVjaG8gIiRhc19tZToyMjc0OiByZXN1bHQ6IG9rIiA+JjUKK2VjaG8gIiR7RUNIT19UfW9rIiA+JjYKKwk7OworZXNhYworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KK2VjaG8gIiRhc19tZToyMjg1OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgorIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQUD0KK2ZpCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKKyAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgorICAgIGRvCisgICAgICBhY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDIzMDYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIzMTE6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjIzMTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycworICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDIzNDAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIzNDQ6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjIzNTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICAjIFBhc3NlcyBib3RoIHRlc3RzLgorYWNfcHJlcHJvY19vaz06CiticmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVuCisgIGJyZWFrCitmaQorCisgICAgZG9uZQorICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKKworZmkKKyAgQ1BQPSRhY19jdl9wcm9nX0NQUAorZWxzZQorICBhY19jdl9wcm9nX0NQUD0kQ1BQCitmaQorZWNobyAiJGFzX21lOjIzODc6IHJlc3VsdDogJENQUCIgPiY1CitlY2hvICIke0VDSE9fVH0kQ1BQIiA+JjYKK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjM5NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjQwMjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjQwODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbi1leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjQzMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjQzNTogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjQ0MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4KKyAgOgorZWxzZQorICB7IHsgZWNobyAiJGFzX21lOjI0Njk6IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2siID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworaWYgdGVzdCAkYWNfY3ZfY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4KKyAgICBlY2hvICIkYXNfbWU6MjQ4MjogY2hlY2tpbmcgd2hldGhlciAkQ0MgbmVlZHMgLXRyYWRpdGlvbmFsIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgbmVlZHMgLXRyYWRpdGlvbmFsLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2djY190cmFkaXRpb25hbCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICAgIGFjX3BhdHRlcm49IkF1dG9jb25mLioneCciCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjQ4OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c2d0dHkuaD4KK2ludCBBdXRvY29uZiA9IFRJT0NHRVRQOworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgIGVncmVwICIkYWNfcGF0dGVybiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsPXllcworZWxzZQorICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworICBpZiB0ZXN0ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCA9IG5vOyB0aGVuCisgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyNTA0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDx0ZXJtaW8uaD4KK2ludCBBdXRvY29uZiA9IFRDR0VUQTsKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICBlZ3JlcCAiJGFjX3BhdHRlcm4iID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19jdl9wcm9nX2djY190cmFkaXRpb25hbD15ZXMKK2ZpCitybSAtcmYgY29uZnRlc3QqCisKKyAgZmkKK2ZpCitlY2hvICIkYXNfbWU6MjUxNzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsIiA+JjYKKyAgaWYgdGVzdCAkYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwgPSB5ZXM7IHRoZW4KKyAgICBDQz0iJENDIC10cmFkaXRpb25hbCIKKyAgZmkKK2ZpCisKK2VjaG8gIiRhc19tZToyNTI0OiBjaGVja2luZyB3aGV0aGVyICRDQyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICRDQyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3Byb2dfQ0NfY19vK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxDRl9FT0YKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitDRl9FT0YKKyMgV2UgZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBzb21lIGNvbXBpbGVycyByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuCisjIGV4aXN0aW5nIC5vIGZpbGUgd2l0aCAtbywgdGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUgb25lLgorYWNfdHJ5PSckQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+JjUnCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyNTQwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjU0MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgIHRlc3QgLWYgY29uZnRlc3QyLiRhY19vYmpleHQgJiYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjU0NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI1NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsKK3RoZW4KKyAgZXZhbCBjZl9jdl9wcm9nX0NDX2Nfbz15ZXMKK2Vsc2UKKyAgZXZhbCBjZl9jdl9wcm9nX0NDX2Nfbz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKK2lmIHRlc3QgJGNmX2N2X3Byb2dfQ0NfY19vID0geWVzOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNTU5OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjU2MjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KKwlMRENPTkZJRz06CitlbHNlCisJY2FzZSAiJGNmX2N2X3N5c3RlbV9uYW1lIiBpbgorCShkcmFnb25mbHkqfG1pcmJzZCp8ZnJlZWJzZCopCisJCXRlc3QgLXogIiRMRENPTkZJRyIgJiYgTERDT05GSUc9Ii9zYmluL2xkY29uZmlnIC1SIgorCQk7OworCSgqKSBMRFBBVEg9JFBBVEg6L3NiaW46L3Vzci9zYmluCisJCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibGRjb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGxkY29uZmlnOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjU3NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wYXRoX0xEQ09ORklHK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhc2UgJExEQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0xEQ09ORklHPSIkTERDT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJExEUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiOyB0aGVuCisgICBhY19jdl9wYXRoX0xEQ09ORklHPSIkYWNfZGlyLyRhY193b3JkIgorICAgZWNobyAiJGFzX21lOjI1OTM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorICAgYnJlYWsKK2ZpCitkb25lCisKKyAgOzsKK2VzYWMKK2ZpCitMRENPTkZJRz0kYWNfY3ZfcGF0aF9MRENPTkZJRworCitpZiB0ZXN0IC1uICIkTERDT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNjA0OiByZXN1bHQ6ICRMRENPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kTERDT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjYwNzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisJCTs7CisJZXNhYworZmkKKworZWNobyAiJGFzX21lOjI2MTU6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGVuc3VyZSBib29sIGlzIGNvbnNpc3RlbnQgd2l0aCBDKysiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBlbnN1cmUgYm9vbCBpcyBjb25zaXN0ZW50IHdpdGggQysrLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWN4eCBvciAtLXdpdGhvdXQtY3h4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9jeHgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfY3h4IgorICBjZl93aXRoX2N4eD0kd2l0aHZhbAorZWxzZQorICBjZl93aXRoX2N4eD15ZXMKK2ZpOworZWNobyAiJGFzX21lOjI2MjU6IHJlc3VsdDogJGNmX3dpdGhfY3h4IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl93aXRoX2N4eCIgPiY2CitpZiB0ZXN0ICJYJGNmX3dpdGhfY3h4IiA9IFhubyA7IHRoZW4KKwlDWFg9IiIKKwlHWFg9IiIKK2Vsc2UKKwkjIHdpdGggYXV0b2NvbmYgMi4xMywgd2UgY2FuIGNoYW5nZSB0aGUgZXJyb3IgdG8gYSB3YXJuaW5nOgorCQlhY19leHQ9Y2MKK2FjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ1hYIC1jICRDWFhGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBnKysgYysrIGdwcCBhQ0MgQ0MgY3h4IGNjKysgY2wgRkNDIEtDQyBSQ0MgeGxDX3IgeGxDCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyNjQzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1hYK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ1hYPSIkQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQ1hYPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKK2VjaG8gIiRhc19tZToyNjU4OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorQ1hYPSRhY19jdl9wcm9nX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjI2NjY6IHJlc3VsdDogJENYWCIgPiY1CitlY2hvICIke0VDSE9fVH0kQ1hYIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjI2Njk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICAgIHRlc3QgLW4gIiRDWFgiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ1hYIjsgdGhlbgorICBhY19jdF9DWFg9JENYWAorICBmb3IgYWNfcHJvZyBpbiAkQ0NDIGcrKyBjKysgZ3BwIGFDQyBDQyBjeHggY2MrKyBjbCBGQ0MgS0NDIFJDQyB4bENfciB4bEMKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjY4MjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NYWCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ1hYIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NYWD0iJGFjX2N0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X0NYWD0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MjY5NzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X0NYWD0kYWNfY3ZfcHJvZ19hY19jdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNzA1OiByZXN1bHQ6ICRhY19jdF9DWFgiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0NYWCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToyNzA4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NYWCIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRhY19jdF9DWFgiIHx8IGFjX2N0X0NYWD0iZysrIgorCisgIENYWD0kYWNfY3RfQ1hYCitmaQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCitlY2hvICIkYXNfbWU6MjcyMDoiIFwKKyAgICAgImNoZWNraW5nIGZvciBDKysgY29tcGlsZXIgdmVyc2lvbiIgPiY1CithY19jb21waWxlcj1gc2V0IFggJGFjX2NvbXBpbGU7IGVjaG8gJDJgCit7IChldmFsIGVjaG8gIiRhc19tZToyNzIzOiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjcyNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9Cit7IChldmFsIGVjaG8gIiRhc19tZToyNzI4OiBcIiRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI3MzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfQoreyAoZXZhbCBlY2hvICIkYXNfbWU6MjczMzogXCIkYWNfY29tcGlsZXIgLVYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZXIgLVYgPC9kZXYvbnVsbCA+JjUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyNzM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KKworZWNobyAiJGFzX21lOjI3Mzk6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQysrIGNvbXBpbGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDKysgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2N4eF9jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyNzQ1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9fR05VQ19fCisgICAgICAgY2hva2UgbWUKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjI3NjA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI3NjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjc2NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI3Njk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jb21waWxlcl9nbnU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2NvbXBpbGVyX2dudT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY3ZfY3h4X2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CisKK2ZpCitlY2hvICIkYXNfbWU6Mjc4MTogcmVzdWx0OiAkYWNfY3ZfY3h4X2NvbXBpbGVyX2dudSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudSIgPiY2CitHWFg9YHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllcyAmJiBlY2hvIHllc2AKK2FjX3Rlc3RfQ1hYRkxBR1M9JHtDWFhGTEFHUytzZXR9CithY19zYXZlX0NYWEZMQUdTPSRDWFhGTEFHUworQ1hYRkxBR1M9Ii1nIgorZWNobyAiJGFzX21lOjI3ODc6IGNoZWNraW5nIHdoZXRoZXIgJENYWCBhY2NlcHRzIC1nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ1hYIGFjY2VwdHMgLWcuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY3h4X2crc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyNzkzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjgwNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjgwODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyODExOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjgxNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3Byb2dfY3h4X2c9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X3Byb2dfY3h4X2c9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MjgyNDogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jeHhfZyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19jeHhfZyIgPiY2CitpZiB0ZXN0ICIkYWNfdGVzdF9DWFhGTEFHUyIgPSBzZXQ7IHRoZW4KKyAgQ1hYRkxBR1M9JGFjX3NhdmVfQ1hYRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jeHhfZyA9IHllczsgdGhlbgorICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIENYWEZMQUdTPSItZyAtTzIiCisgIGVsc2UKKyAgICBDWFhGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgQ1hYRkxBR1M9Ii1PMiIKKyAgZWxzZQorICAgIENYWEZMQUdTPQorICBmaQorZmkKK2ZvciBhY19kZWNsYXJhdGlvbiBpbiBcCisgICAnJ1wKKyAgICcjaW5jbHVkZSA8c3RkbGliLmg+JyBcCisgICAnZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhpdCAoaW50KSB0aHJvdyAoKTsgdXNpbmcgc3RkOjpleGl0OycgXAorICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKKyAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KSB0aHJvdyAoKTsnIFwKKyAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KTsnIFwKKyAgICd2b2lkIGV4aXQgKGludCk7JworZG8KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyODUxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyRhY19kZWNsYXJhdGlvbgoraW50CittYWluICgpCit7CitleGl0ICg0Mik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjI4NjQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI4Njc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjg3MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI4NzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjg4MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfZGVjbGFyYXRpb24KK2ludAorbWFpbiAoKQoreworZXhpdCAoNDIpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyODk1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyODk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjI5MDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyOTA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorcm0gLXJmIGNvbmZ0ZXN0KgoraWYgdGVzdCAtbiAiJGFjX2RlY2xhcmF0aW9uIjsgdGhlbgorICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAorICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29uZmRlZnMuaAorICBlY2hvICcjZW5kaWYnICAgICAgICAgICAgID4+Y29uZmRlZnMuaAorZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorYWNfbWFpbl9yZXR1cm49cmV0dXJuCisKKwlhY19leHQ9Y2MKK2FjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ1hYIC1jICRDWFhGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworCWlmIHRlc3QgIngkY2Zfd2l0aF9jeHgiICE9IHhubworCXRoZW4KKwkJIyBTZXZlcmFsIG9mIHRoZSBDKysgY29uZmlndXJhdGlvbnMgZG8gbm90IHdvcmssIHBhcnRpY3VsYXJseSB3aGVuCisJCSMgY3Jvc3MtY29tcGlsaW5nICgyMDE0MDkxMyAtVEQpCisJCWVjaG8gIiRhc19tZToyOTM4OiBjaGVja2luZyBpZiAkQ1hYIHdvcmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJENYWCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKKworCQlzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCWV2YWwgY2ZfaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9CisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke2NmX2luY2x1ZGVkaXJ9IgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDI5NDYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50CittYWluICgpCit7CisKKwkJcHJpbnRmKCJIZWxsbyB3b3JsZCFcbiIpCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjk2MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mjk2NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyOTY5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mjk3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N4eF93b3Jrcz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3h4X3dvcmtzPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCUNQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKworCQllY2hvICIkYXNfbWU6Mjk4MzogcmVzdWx0OiAkY2ZfY3h4X3dvcmtzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jeHhfd29ya3MiID4mNgorCQlpZiB0ZXN0ICJ4JGNmX2N4eF93b3JrcyIgPSB4bm8KKwkJdGhlbgorCQkJeyBlY2hvICIkYXNfbWU6Mjk4NzogV0FSTklORzogSWdub3JlICRDWFgsIHNpbmNlIGl0IGNhbm5vdCBjb21waWxlIGhlbGxvLXdvcmxkLiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IElnbm9yZSAkQ1hYLCBzaW5jZSBpdCBjYW5ub3QgY29tcGlsZSBoZWxsby13b3JsZC4iID4mMjt9CisJCQljZl93aXRoX2N4eD1ubzsgQ1hYPSIiOyBHWFg9IiI7CisJCWZpCisJZmkKKwlhY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworCSMgYXV0b2NvbmYgMi41eCByZW1vdmVkIHRoZSBlcnJvciAoaGFyZGNvZGluZyBpdCB0byBnKyssIG9yIGp1c3QgYmxhbmspCisJaWYgdGVzdCAiJENYWCIgPSAiZysrIiA7IHRoZW4KKwkJIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjMwMDM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9DWFgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiOyB0aGVuCisgICBhY19jdl9wYXRoX0NYWD0iJGFjX2Rpci8kYWNfd29yZCIKKyAgIGVjaG8gIiRhc19tZTozMDIwOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKKyAgIGJyZWFrCitmaQorZG9uZQorCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAorCitpZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MzAzMTogcmVzdWx0OiAkQ1hYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDWFgiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MzAzNDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisJZmkKKwljYXNlICJ4JENYWCIgaW4KKwkoeHx4ZysrKQorCQl7IGVjaG8gIiRhc19tZTozMDQxOiBXQVJOSU5HOiBZb3UgZG9uJ3QgaGF2ZSBhbnkgQysrIGNvbXBpbGVyLCB0b28gYmFkIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogWW91IGRvbid0IGhhdmUgYW55IEMrKyBjb21waWxlciwgdG9vIGJhZCIgPiYyO30KKwkJY2Zfd2l0aF9jeHg9bm87IENYWD0iIjsgR1hYPSIiOworCQk7OworCWVzYWMKK2ZpCisKK0dYWF9WRVJTSU9OPW5vbmUKK2lmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisJZWNobyAiJGFzX21lOjMwNTA6IGNoZWNraW5nIHZlcnNpb24gb2YgJHtDWFg6LWcrK30iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB2ZXJzaW9uIG9mICR7Q1hYOi1nKyt9Li4uICRFQ0hPX0MiID4mNgorCUdYWF9WRVJTSU9OPSJgJHtDWFg6LWcrK30gLS12ZXJzaW9ufCBzZWQgLWUgJzIsJGQnIC1lICdzL14uKihHQ0MpIC8vJyAtZSAncy9eW14wLTkuXSovLycgLWUgJ3MvW14wLTkuXS4qLy8nYCIKKwl0ZXN0IC16ICIkR1hYX1ZFUlNJT04iICYmIEdYWF9WRVJTSU9OPXVua25vd24KKwllY2hvICIkYXNfbWU6MzA1NDogcmVzdWx0OiAkR1hYX1ZFUlNJT04iID4mNQorZWNobyAiJHtFQ0hPX1R9JEdYWF9WRVJTSU9OIiA+JjYKK2ZpCisKK2Nhc2UgJEdYWF9WRVJTSU9OIGluCisoMSp8Mi5bMC02XSopCisJIyBHWFg9IiI7IENYWD0iIjsgYWNfY3ZfcHJvZ19neHg9bm8KKwkjIGNmX2N4eF9saWJyYXJ5PW5vCisJeyBlY2hvICIkYXNfbWU6MzA2MjogV0FSTklORzogdGVtcGxhdGVzIGRvIG5vdCB3b3JrIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogdGVtcGxhdGVzIGRvIG5vdCB3b3JrIiA+JjI7fQorCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZTozMDY3OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBDKysgYmluZGluZyBhbmQgZGVtbyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIEMrKyBiaW5kaW5nIGFuZCBkZW1vLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWN4eC1iaW5kaW5nIG9yIC0td2l0aG91dC1jeHgtYmluZGluZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3h4X2JpbmRpbmcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfY3h4X2JpbmRpbmciCisgIGNmX3dpdGhfY3h4X2JpbmRpbmc9JHdpdGh2YWwKK2Vsc2UKKyAgY2Zfd2l0aF9jeHhfYmluZGluZz0kY2Zfd2l0aF9jeHgKK2ZpOworZWNobyAiJGFzX21lOjMwNzc6IHJlc3VsdDogJGNmX3dpdGhfY3h4X2JpbmRpbmciID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3dpdGhfY3h4X2JpbmRpbmciID4mNgorCitlY2hvICIkYXNfbWU6MzA4MDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCBBZGE5NSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggQWRhOTUuLi4gJEVDSE9fQyIgPiY2CitlY2hvICIkYXNfbWU6MzA4MjogcmVzdWx0OiAkY2Zfd2l0aF9hZGEiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3dpdGhfYWRhIiA+JjYKKworZWNobyAiJGFzX21lOjMwODU6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgdGVybWluYWwgZGF0YWJhc2UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIHRlcm1pbmFsIGRhdGFiYXNlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGItaW5zdGFsbCBvciAtLWRpc2FibGUtZGItaW5zdGFsbCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9kYl9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9kYl9pbnN0YWxsIgorICBjZl93aXRoX2RiX2luc3RhbGw9JGVuYWJsZXZhbAorZWxzZQorICBjZl93aXRoX2RiX2luc3RhbGw9eWVzCitmaTsKK2VjaG8gIiRhc19tZTozMDk1OiByZXN1bHQ6ICRjZl93aXRoX2RiX2luc3RhbGwiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3dpdGhfZGJfaW5zdGFsbCIgPiY2CisKK2VjaG8gIiRhc19tZTozMDk4OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIG1hbnBhZ2VzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBtYW5wYWdlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1tYW5wYWdlcyBvciAtLXdpdGhvdXQtbWFucGFnZXMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX21hbnBhZ2VzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX21hbnBhZ2VzIgorICBjZl93aXRoX21hbnBhZ2VzPSR3aXRodmFsCitlbHNlCisgIGNmX3dpdGhfbWFucGFnZXM9eWVzCitmaTsKK2VjaG8gIiRhc19tZTozMTA4OiByZXN1bHQ6ICRjZl93aXRoX21hbnBhZ2VzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl93aXRoX21hbnBhZ2VzIiA+JjYKKworZWNobyAiJGFzX21lOjMxMTE6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHByb2dyYW1zIHN1Y2ggYXMgdGljIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgcHJvZ3JhbXMgc3VjaCBhcyB0aWMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcHJvZ3Mgb3IgLS13aXRob3V0LXByb2dzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9wcm9ncytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9wcm9ncyIKKyAgY2Zfd2l0aF9wcm9ncz0kd2l0aHZhbAorZWxzZQorICBjZl93aXRoX3Byb2dzPXllcworZmk7CitlY2hvICIkYXNfbWU6MzEyMTogcmVzdWx0OiAkY2Zfd2l0aF9wcm9ncyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2Zfd2l0aF9wcm9ncyIgPiY2CisKK2VjaG8gIiRhc19tZTozMTI0OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCB0ZXN0LXByb2dyYW1zIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGVzdC1wcm9ncmFtcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC10ZXN0cyBvciAtLXdpdGhvdXQtdGVzdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3Rlc3RzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3Rlc3RzIgorICBjZl93aXRoX3Rlc3RzPSR3aXRodmFsCitlbHNlCisgIGNmX3dpdGhfdGVzdHM9eWVzCitmaTsKK2VjaG8gIiRhc19tZTozMTM0OiByZXN1bHQ6ICRjZl93aXRoX3Rlc3RzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl93aXRoX3Rlc3RzIiA+JjYKKworZWNobyAiJGFzX21lOjMxMzc6IGNoZWNraW5nIGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgY3Vyc2VzLmgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2lzaCB0byBpbnN0YWxsIGN1cnNlcy5oLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWN1cnNlcy1oIG9yIC0td2l0aG91dC1jdXJzZXMtaCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3Vyc2VzX2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfY3Vyc2VzX2giCisgIHdpdGhfY3Vyc2VzX2g9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9jdXJzZXNfaD15ZXMKK2ZpOworZWNobyAiJGFzX21lOjMxNDc6IHJlc3VsdDogJHdpdGhfY3Vyc2VzX2giID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfY3Vyc2VzX2giID4mNgorCittb2R1bGVzX3RvX2J1aWxkPSJuY3Vyc2VzIgoraWYgdGVzdCAiWCRjZl93aXRoX3Byb2dzIiAhPSBYbm8gOyB0aGVuCittb2R1bGVzX3RvX2J1aWxkPSIkbW9kdWxlc190b19idWlsZCBwcm9ncyB0YWNrIgorZmkKK21vZHVsZXNfdG9fYnVpbGQ9IiRtb2R1bGVzX3RvX2J1aWxkIHBhbmVsIG1lbnUgZm9ybSIKKwordGVzdCAiJHByb2dyYW1fcHJlZml4IiAhPSBOT05FICYmCisgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMsXiwkcHJvZ3JhbV9wcmVmaXgsOyRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIgorIyBVc2UgYSBkb3VibGUgJCBzbyBtYWtlIGlnbm9yZXMgaXQuCit0ZXN0ICIkcHJvZ3JhbV9zdWZmaXgiICE9IE5PTkUgJiYKKyAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyxcJCwkcHJvZ3JhbV9zdWZmaXgsOyRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIgorIyBEb3VibGUgYW55IFwgb3IgJC4gIGVjaG8gbWlnaHQgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorIyBCeSBkZWZhdWx0IHdhcyBgcyx4LHgnLCByZW1vdmUgaXQgaWYgdXNlbGVzcy4KK2NhdCA8PFxfQUNFT0YgPmNvbmZ0ZXN0LnNlZAorcy9bXFwkXS8mJi9nO3MvO3MseCx4LCQvLworX0FDRU9GCitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPWBlY2hvICRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIHwgc2VkIC1mIGNvbmZ0ZXN0LnNlZGAKK3JtIGNvbmZ0ZXN0LnNlZAorCitmb3IgYWNfcHJvZyBpbiBtYXdrIGdhd2sgbmF3ayBhd2sKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MzE3MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgorICBhY19jdl9wcm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MzE4ODogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0FXSz0kYWNfY3ZfcHJvZ19BV0sKK2lmIHRlc3QgLW4gIiRBV0siOyB0aGVuCisgIGVjaG8gIiRhc19tZTozMTk2OiByZXN1bHQ6ICRBV0siID4mNQorZWNobyAiJHtFQ0hPX1R9JEFXSyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozMTk5OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJEFXSyIgJiYgYnJlYWsKK2RvbmUKKwordGVzdCAteiAiJEFXSyIgJiYgeyB7IGVjaG8gIiRhc19tZTozMjA2OiBlcnJvcjogTm8gYXdrIHByb2dyYW0gZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogTm8gYXdrIHByb2dyYW0gZm91bmQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZWNobyAiJGFzX21lOjMyMTA6IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19lZ3JlcCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiBlY2hvIGEgfCAoZ3JlcCAtRSAnKGF8YiknKSA+L2Rldi9udWxsIDI+JjEKKwkJdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJworCQllbHNlIGFjX2N2X3Byb2dfZWdyZXA9J2VncmVwJworCWZpCitmaQorZWNobyAiJGFzX21lOjMyMjA6IHJlc3VsdDogJGFjX2N2X3Byb2dfZWdyZXAiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfZWdyZXAiID4mNgorCUVHUkVQPSRhY19jdl9wcm9nX2VncmVwCisKKwl0ZXN0IC16ICIkRUdSRVAiICYmIHsgeyBlY2hvICIkYXNfbWU6MzIyNDogZXJyb3I6IE5vIGVncmVwIHByb2dyYW0gZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogTm8gZWdyZXAgcHJvZ3JhbSBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKKyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgorIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbAorIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCisjIElSSVggL3NiaW4vaW5zdGFsbAorIyBBSVggL2Jpbi9pbnN0YWxsCisjIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKKyMgQUlYIDQgL3Vzci9iaW4vaW5zdGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MKKyMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKKyMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgorZWNobyAiJGFzX21lOjMyNDA6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICAgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKKyAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKyAgICBJRlM9JGFjX3NhdmVfSUZTCisgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCisgICAgY2FzZSAkYWNfZGlyLyBpbgorICAgIC8gfCAuLyB8IC4vLyB8IC9jQy8qIFwKKyAgICB8IC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIFwKKyAgICB8IC91c3IvdWNiLyogKSA7OworICAgICopCisgICAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgorICAgICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBzaW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290CisgICAgICAjIGJ5IGRlZmF1bHQuCisgICAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCisgICAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3Byb2ciOyB0aGVuCisJICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorICAgICAgICAgICAgZ3JlcCBkc3Btc2cgIiRhY19kaXIvJGFjX3Byb2ciID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCisJICAgIDoKKwkgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBwd3BsdXMgIiRhY19kaXIvJGFjX3Byb2ciID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRvbid0IHVzZS4KKwkgICAgOgorCSAgZWxzZQorCSAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhY19kaXIvJGFjX3Byb2cgLWMiCisJICAgIGJyZWFrIDIKKwkgIGZpCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKK2ZpCisgIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCisgICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxsCisgIGVsc2UKKyAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVsbCBzY3JpcHQuICBXZSBkb24ndCBjYWNoZSBhCisgICAgIyBwYXRoIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsCisgICAgIyBicmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMKKyAgICAjIHJlbW92ZWQsIG9yIGlmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLgorICAgIElOU1RBTEw9JGFjX2luc3RhbGxfc2gKKyAgZmkKK2ZpCitlY2hvICIkYXNfbWU6MzI4OTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1CitlY2hvICIke0VDSE9fVH0kSU5TVEFMTCIgPiY2CisKKyMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFuZGxlcyBicmFjZXMgaW4gJHt2YXItdmFsfS4KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRzIHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX1NDUklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX0RBVEEiICYmIElOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCisKK2Nhc2UgJElOU1RBTEwgaW4KKygvKikKKwk7OworKCopCisJY2ZfZGlyPWBlY2hvICRJTlNUQUxMIHwgc2VkIC1lICdzJS9bXi9dKiQlJSdgCisJdGVzdCAteiAiJGNmX2RpciIgJiYgY2ZfZGlyPS4KKwlJTlNUQUxMPWBjZCAkY2ZfZGlyICYmIHB3ZGAvYGVjaG8gJElOU1RBTEwgfCBzZWQgLWUgJ3MlXi4qLyUlJ2AKKwk7OworZXNhYworCitmb3IgYWNfcHJvZyBpbiB0ZGxpbnQgbGludCBhbGludCBzcGxpbnQgbGNsaW50CitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjMzMTQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MSU5UK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRMSU5UIjsgdGhlbgorICBhY19jdl9wcm9nX0xJTlQ9IiRMSU5UIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTElOVD0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MzMyOTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0xJTlQ9JGFjX2N2X3Byb2dfTElOVAoraWYgdGVzdCAtbiAiJExJTlQiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozMzM3OiByZXN1bHQ6ICRMSU5UIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRMSU5UIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjMzNDA6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkTElOVCIgJiYgYnJlYWsKK2RvbmUKKworZWNobyAiJGFzX21lOjMzNDc6IGNoZWNraW5nIHdoZXRoZXIgbG4gLXMgd29ya3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICRFQ0hPX0MiID4mNgorTE5fUz0kYXNfbG5fcworaWYgdGVzdCAiJExOX1MiID0gImxuIC1zIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MzM1MTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjMzNTQ6IHJlc3VsdDogbm8sIHVzaW5nICRMTl9TIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vLCB1c2luZyAkTE5fUyIgPiY2CitmaQorCitlY2hvICIkYXNfbWU6MzM1ODogY2hlY2tpbmcgaWYgJExOX1MgLWYgb3B0aW9ucyB3b3JrIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJExOX1MgLWYgb3B0aW9ucyB3b3JrLi4uICRFQ0hPX0MiID4mNgorCitybSAtZiBjb25mJCQuc3JjIGNvbmYkJGRzdAorZWNobyA+Y29uZiQkLmRzdAorZWNobyBmaXJzdCA+Y29uZiQkLnNyYworaWYgJExOX1MgLWYgY29uZiQkLnNyYyBjb25mJCQuZHN0IDI+L2Rldi9udWxsOyB0aGVuCisJY2ZfcHJvZ19sbl9zZj15ZXMKK2Vsc2UKKwljZl9wcm9nX2xuX3NmPW5vCitmaQorcm0gLWYgY29uZiQkLmRzdCBjb25mJCRzcmMKK2VjaG8gIiRhc19tZTozMzcwOiByZXN1bHQ6ICRjZl9wcm9nX2xuX3NmIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9wcm9nX2xuX3NmIiA+JjYKKwordGVzdCAiJGNmX3Byb2dfbG5fc2YiID0geWVzICYmIExOX1M9IiRMTl9TIC1mIgorCitlY2hvICIkYXNfbWU6MzM3NTogY2hlY2tpbmcgZm9yIGxvbmcgZmlsZSBuYW1lcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsb25nIGZpbGUgbmFtZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz15ZXMKKyMgVGVzdCBmb3IgbG9uZyBmaWxlIG5hbWVzIGluIGFsbCB0aGUgcGxhY2VzIHdlIGtub3cgbWlnaHQgbWF0dGVyOgorIyAgICAgIC4JCXRoZSBjdXJyZW50IGRpcmVjdG9yeSwgd2hlcmUgYnVpbGRpbmcgd2lsbCBoYXBwZW4KKyMgICAgICAkcHJlZml4L2xpYgl3aGVyZSB3ZSB3aWxsIGJlIGluc3RhbGxpbmcgdGhpbmdzCisjICAgICAgJGV4ZWNfcHJlZml4L2xpYglsaWtld2lzZQorIyBldmFsIGl0IHRvIGV4cGFuZCBleGVjX3ByZWZpeC4KKyMgICAgICAkVE1QRElSCQlpZiBzZXQsIHdoZXJlIGl0IG1pZ2h0IHdhbnQgdG8gd3JpdGUgdGVtcG9yYXJ5IGZpbGVzCisjIGlmICRUTVBESVIgaXMgbm90IHNldDoKKyMgICAgICAvdG1wCQl3aGVyZSBpdCBtaWdodCB3YW50IHRvIHdyaXRlIHRlbXBvcmFyeSBmaWxlcworIyAgICAgIC92YXIvdG1wCQlsaWtld2lzZQorIyAgICAgIC91c3IvdG1wCQlsaWtld2lzZQoraWYgdGVzdCAtbiAiJFRNUERJUiIgJiYgdGVzdCAtZCAiJFRNUERJUiIgJiYgdGVzdCAtdyAiJFRNUERJUiI7IHRoZW4KKyAgYWNfdG1wZGlycz0kVE1QRElSCitlbHNlCisgIGFjX3RtcGRpcnM9Jy90bXAgL3Zhci90bXAgL3Vzci90bXAnCitmaQorZm9yIGFjX2RpciBpbiAgLiAkYWNfdG1wZGlycyBgZXZhbCBlY2hvICRwcmVmaXgvbGliICRleGVjX3ByZWZpeC9saWJgIDsgZG8KKyAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCisgIHRlc3QgLXcgJGFjX2RpciB8fCBjb250aW51ZSAjIEl0IGlzIGxlc3MgY29uZnVzaW5nIHRvIG5vdCBlY2hvIGFueXRoaW5nIGhlcmUuCisgIGFjX3hkaXI9JGFjX2Rpci9jZiQkCisgICh1bWFzayAwNzcgJiYgbWtkaXIgJGFjX3hkaXIgMj4vZGV2L251bGwpIHx8IGNvbnRpbnVlCisgIGFjX3RmMT0kYWNfeGRpci9jb25mdGVzdDkwMTIzNDUKKyAgYWNfdGYyPSRhY194ZGlyL2NvbmZ0ZXN0OTAxMjM0NgorICAoZWNobyAxID4kYWNfdGYxKSAyPi9kZXYvbnVsbAorICAoZWNobyAyID4kYWNfdGYyKSAyPi9kZXYvbnVsbAorICBhY192YWw9YGNhdCAkYWNfdGYxIDI+L2Rldi9udWxsYAorICBpZiB0ZXN0ICEgLWYgJGFjX3RmMSB8fCB0ZXN0ICIkYWNfdmFsIiAhPSAxOyB0aGVuCisgICAgYWNfY3Zfc3lzX2xvbmdfZmlsZV9uYW1lcz1ubworICAgIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAorICAgIGJyZWFrCisgIGZpCisgIHJtIC1yZiAkYWNfeGRpciAyPi9kZXYvbnVsbAorZG9uZQorZmkKK2VjaG8gIiRhc19tZTozNDE0OiByZXN1bHQ6ICRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbG9uZ19maWxlX25hbWVzIiA+JjYKK2lmIHRlc3QgJGFjX2N2X3N5c19sb25nX2ZpbGVfbmFtZXMgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9MT05HX0ZJTEVfTkFNRVMgMQorRU9GCisKK2ZpCisKKyMgaWYgd2UgZmluZCBwa2ctY29uZmlnLCBjaGVjayBpZiB3ZSBzaG91bGQgaW5zdGFsbCB0aGUgIi5wYyIgZmlsZXMuCisKK2VjaG8gIiRhc19tZTozNDI2OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgcGtnLWNvbmZpZyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBwa2ctY29uZmlnLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXBrZy1jb25maWcgb3IgLS13aXRob3V0LXBrZy1jb25maWcgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BrZ19jb25maWcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfcGtnX2NvbmZpZyIKKyAgY2ZfcGtnX2NvbmZpZz0kd2l0aHZhbAorZWxzZQorICBjZl9wa2dfY29uZmlnPXllcworZmk7CitlY2hvICIkYXNfbWU6MzQzNjogcmVzdWx0OiAkY2ZfcGtnX2NvbmZpZyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcGtnX2NvbmZpZyIgPiY2CisKK2Nhc2UgJGNmX3BrZ19jb25maWcgaW4KKyhubykKKwlQS0dfQ09ORklHPW5vbmUKKwk7OworKHllcykKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MzQ0ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wYXRoX1BLR19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiOyB0aGVuCisgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhY19kaXIvJGFjX3dvcmQiCisgICBlY2hvICIkYXNfbWU6MzQ2NTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CisgICBicmVhaworZmkKK2RvbmUKKworICA7OworZXNhYworZmkKK1BLR19DT05GSUc9JGFjX2N2X3BhdGhfUEtHX0NPTkZJRworCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM0NzY6IHJlc3VsdDogJFBLR19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JFBLR19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MzQ3OTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyI7IHRoZW4KKyAgYWNfcHRfUEtHX0NPTkZJRz0kUEtHX0NPTkZJRworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBrZy1jb25maWc7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTozNDg4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9QS0dfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhY19wdF9QS0dfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCI7IHRoZW4KKyAgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX2Rpci8kYWNfd29yZCIKKyAgIGVjaG8gIiRhc19tZTozNTA1OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKKyAgIGJyZWFrCitmaQorZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUciICYmIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0ibm9uZSIKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKKworaWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZTozNTE3OiByZXN1bHQ6ICRhY19wdF9QS0dfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19wdF9QS0dfQ09ORklHIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjM1MjA6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICBQS0dfQ09ORklHPSRhY19wdF9QS0dfQ09ORklHCitlbHNlCisgIFBLR19DT05GSUc9IiRhY19jdl9wYXRoX1BLR19DT05GSUciCitmaQorCisJOzsKKygqKQorCVBLR19DT05GSUc9JHdpdGh2YWwKKwk7OworZXNhYworCit0ZXN0IC16ICIkUEtHX0NPTkZJRyIgJiYgUEtHX0NPTkZJRz1ub25lCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi4kUEtHX0NPTkZJRyIgaW4KKyguXCRcKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLlthLXpBLVpdOltcXC9dKikgIyBPUy8yIEVNWAorCTs7CisoLlwkeypwcmVmaXh9KnwuXCR7KmRpcn0qKQorCWV2YWwgUEtHX0NPTkZJRz0iJFBLR19DT05GSUciCisJY2FzZSAiLiRQS0dfQ09ORklHIiBpbgorCSguTk9ORS8qKQorCQlQS0dfQ09ORklHPWBlY2hvICRQS0dfQ09ORklHIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCVBLR19DT05GSUc9YGVjaG8gJFBLR19DT05GSUcgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJOzsKKygqKQorCXsgeyBlY2hvICIkYXNfbWU6MzU2MzogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiRQS0dfQ09ORklHXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJFBLR19DT05GSUdcIiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCTs7Citlc2FjCisKK2VsaWYgdGVzdCAieCRjZl9wa2dfY29uZmlnIiAhPSB4bm8gOyB0aGVuCisJeyBlY2hvICIkYXNfbWU6MzU3MDogV0FSTklORzogcGtnLWNvbmZpZyBpcyBub3QgaW5zdGFsbGVkIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogcGtnLWNvbmZpZyBpcyBub3QgaW5zdGFsbGVkIiA+JjI7fQorZmkKKworaWYgdGVzdCAieCRQS0dfQ09ORklHIiA9IHhub25lIDsgdGhlbgorCVBLR19DT05GSUdfTElCRElSPW5vCitlbHNlCisJZWNobyAiJGFzX21lOjM1Nzc6IGNoZWNraW5nIGZvciAkUEtHX0NPTkZJRyBsaWJyYXJ5IGRpcmVjdG9yeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkUEtHX0NPTkZJRyBsaWJyYXJ5IGRpcmVjdG9yeS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wa2ctY29uZmlnLWxpYmRpciBvciAtLXdpdGhvdXQtcGtnLWNvbmZpZy1saWJkaXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BrZ19jb25maWdfbGliZGlyK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3BrZ19jb25maWdfbGliZGlyIgorICBQS0dfQ09ORklHX0xJQkRJUj0kd2l0aHZhbAorZWxzZQorICBQS0dfQ09ORklHX0xJQkRJUj15ZXMKK2ZpOworZmkKKworY2FzZSB4JFBLR19DT05GSUdfTElCRElSIGluCisoeC8qKQorCTs7CisoeHllcykKKwkjIExvb2sgZm9yIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSB1c2luZyB0aGUgc2FtZSBwcmVmaXggYXMgdGhlIGV4ZWN1dGFibGUKKwlpZiB0ZXN0ICJ4JFBLR19DT05GSUciID0geG5vbmUKKwl0aGVuCisJCWNmX3BhdGg9JHByZWZpeAorCWVsc2UKKwkJY2ZfcGF0aD1gZWNobyAiJFBLR19DT05GSUciIHwgc2VkIC1lICdzLC9bXi9dKi9bXi9dKiQsLCdgCisJZmkKKworCSMgSWYgeW91IGRvbid0IGxpa2UgdXNpbmcgdGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZQorCSMgaW50ZW5kZWQgbGlicmFyeSBkaXJlY3RvcnkgYW5kIGNvcnJlc3BvbmRpbmcgY29tcGlsZXIvbGlua2VyIG9wdGlvbnMuCisJIworCSMgVGhpcyBjYXNlIGFsbG93cyBmb3IgRGViaWFuJ3MgMjAxNC1mbGF2b3Igb2YgbXVsdGlhcmNoLCBhbG9uZyB3aXRoIHRoZQorCSMgbW9zdCBjb21tb24gdmFyaWF0aW9ucyBiZWZvcmUgdGhhdCBwb2ludC4gIFNvbWUgb3RoZXIgdmFyaWFudHMgc3BlbGwgdGhlCisJIyBkaXJlY3RvcnkgZGlmZmVyZW50bHksIGUuZy4sICJwa2ctY29uZmlnIiwgYW5kIHB1dCBpdCBpbiB1bnVzdWFsIHBsYWNlcy4KKwkjIHBrZy1jb25maWcgaGFzIGFsd2F5cyBiZWVuIHBvb3JseSBzdGFuZGFyZGl6ZWQsIHdoaWNoIGlzIGlyb25pYy4uLgorCWNhc2UgeGAoYXJjaCkgMj4vZGV2L251bGxgIGluCisJKCo2NCkKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qNjQtbGludXgtZ251IFwKKwkJCSRjZl9wYXRoL3NoYXJlIFwKKwkJCSRjZl9wYXRoL2xpYjY0IFwKKwkJCSRjZl9wYXRoL2xpYjMyIFwKKwkJCSRjZl9wYXRoL2xpYiIKKwkJOzsKKwkoKikKKwkJY2Zfc2VhcmNoX3BhdGg9IlwKKwkJCSRjZl9wYXRoL2xpYi8qLWxpbnV4LWdudSBcCisJCQkkY2ZfcGF0aC9zaGFyZSBcCisJCQkkY2ZfcGF0aC9saWIzMiBcCisJCQkkY2ZfcGF0aC9saWIgXAorCQkJJGNmX3BhdGgvbGliZGF0YSIKKwkJOzsKKwllc2FjCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWxpc3QuLi4iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTozNjI5OiB0ZXN0aW5nIGxpc3QuLi4gLi4uIiAxPiY1CisKKwlmb3IgY2ZfY29uZmlnIGluICRjZl9zZWFyY2hfcGF0aAorCWRvCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJY2hlY2tpbmcgJGNmX2NvbmZpZy9wa2djb25maWciIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTozNjM1OiB0ZXN0aW5nIGNoZWNraW5nICRjZl9jb25maWcvcGtnY29uZmlnIC4uLiIgMT4mNQorCisJCWlmIHRlc3QgLWQgJGNmX2NvbmZpZy9wa2djb25maWcKKwkJdGhlbgorCQkJUEtHX0NPTkZJR19MSUJESVI9JGNmX2NvbmZpZy9wa2djb25maWcKKwkJCWVjaG8gIiRhc19tZTozNjQwOiBjaGVja2luZyBkb25lIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZG9uZS4uLiAkRUNIT19DIiA+JjYKKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCTs7CisoKikKKwk7OworZXNhYworCitpZiB0ZXN0ICJ4JFBLR19DT05GSUciICE9IHhub25lIDsgdGhlbgorCWVjaG8gIiRhc19tZTozNjUxOiByZXN1bHQ6ICRQS0dfQ09ORklHX0xJQkRJUiIgPiY1CitlY2hvICIke0VDSE9fVH0kUEtHX0NPTkZJR19MSUJESVIiID4mNgorZmkKKworaWYgdGVzdCAieCRQS0dfQ09ORklHIiAhPSB4bm9uZQordGhlbgorCWVjaG8gIiRhc19tZTozNjU3OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgaW5zdGFsbCAucGMgZmlsZXMgZm9yICRQS0dfQ09ORklHIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGluc3RhbGwgLnBjIGZpbGVzIGZvciAkUEtHX0NPTkZJRy4uLiAkRUNIT19DIiA+JjYKK2Vsc2UKKwllY2hvICIkYXNfbWU6MzY2MDogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGluc3RhbGwgLnBjIGZpbGVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGluc3RhbGwgLnBjIGZpbGVzLi4uICRFQ0hPX0MiID4mNgorZmkKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBjLWZpbGVzIG9yIC0tZGlzYWJsZS1wYy1maWxlcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9wY19maWxlcytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcGNfZmlsZXMiCisgIGVuYWJsZV9wY19maWxlcz0kZW5hYmxldmFsCitlbHNlCisgIGVuYWJsZV9wY19maWxlcz1ubworZmk7CitlY2hvICIkYXNfbWU6MzY3MTogcmVzdWx0OiAkZW5hYmxlX3BjX2ZpbGVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRlbmFibGVfcGNfZmlsZXMiID4mNgorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wY19maWxlcyIgIT0geG5vCit0aGVuCisJY2FzZSAieCRQS0dfQ09ORklHX0xJQkRJUiIgaW4KKwkoeG5vfHh5ZXMpCisJCXsgZWNobyAiJGFzX21lOjM2Nzg6IFdBUk5JTkc6IG5vIFBLR19DT05GSUdfTElCRElSIHdhcyBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIFBLR19DT05GSUdfTElCRElSIHdhcyBmb3VuZCIgPiYyO30KKwkJTUFLRV9QQ19GSUxFUz0iIyIKKwkJOzsKKwkoKikKKworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi4kUEtHX0NPTkZJR19MSUJESVIiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIFBLR19DT05GSUdfTElCRElSPSIkUEtHX0NPTkZJR19MSUJESVIiCisJY2FzZSAiLiRQS0dfQ09ORklHX0xJQkRJUiIgaW4KKwkoLk5PTkUvKikKKwkJUEtHX0NPTkZJR19MSUJESVI9YGVjaG8gJFBLR19DT05GSUdfTElCRElSIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCVBLR19DT05GSUdfTElCRElSPWBlY2hvICRQS0dfQ09ORklHX0xJQkRJUiB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJeyB7IGVjaG8gIiRhc19tZTozNzA5OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJFBLR19DT05GSUdfTElCRElSXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJFBLR19DT05GSUdfTElCRElSXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwk7OworZXNhYworCisJCU1BS0VfUENfRklMRVM9CisJCTs7CisJZXNhYworZWxzZQorCU1BS0VfUENfRklMRVM9IiMiCitmaQorCitpZiB0ZXN0IC16ICIkTUFLRV9QQ19GSUxFUyIKK3RoZW4KKwllY2hvICIkYXNfbWU6MzcyNDogY2hlY2tpbmcgZm9yIHN1ZmZpeCB0byBhZGQgdG8gcGMtZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3VmZml4IHRvIGFkZCB0byBwYy1maWxlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wYy1zdWZmaXggb3IgLS13aXRob3V0LXBjLXN1ZmZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcGNfc3VmZml4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3BjX3N1ZmZpeCIKKyAgY2FzZSAieCR3aXRodmFsIiBpbgorCSh4eWVzfHhubykKKwkJUENfTU9EVUxFX1NVRkZJWD0KKwkJOzsKKwkoKikJUENfTU9EVUxFX1NVRkZJWD0iJHdpdGh2YWwiCisJCTs7CisJZXNhYworZmk7CisJdGVzdCAteiAiJFBDX01PRFVMRV9TVUZGSVgiICYmIFBDX01PRFVMRV9TVUZGSVg9bm9uZQorCWVjaG8gIiRhc19tZTozNzM5OiByZXN1bHQ6ICRQQ19NT0RVTEVfU1VGRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRQQ19NT0RVTEVfU1VGRklYIiA+JjYKKwl0ZXN0ICIkUENfTU9EVUxFX1NVRkZJWCIgPSBub25lICYmIFBDX01PRFVMRV9TVUZGSVg9CisKK2ZpCisKK2VjaG8gIiRhc19tZTozNzQ1OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgYXNzdW1lIG1peGVkLWNhc2UgZmlsZW5hbWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1peGVkLWNhc2Ugb3IgLS1kaXNhYmxlLW1peGVkLWNhc2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbWl4ZWRfY2FzZStzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfbWl4ZWRfY2FzZSIKKyAgZW5hYmxlX21peGVkY2FzZT0kZW5hYmxldmFsCitlbHNlCisgIGVuYWJsZV9taXhlZGNhc2U9YXV0bworZmk7CitlY2hvICIkYXNfbWU6Mzc1NTogcmVzdWx0OiAkZW5hYmxlX21peGVkY2FzZSIgPiY1CitlY2hvICIke0VDSE9fVH0kZW5hYmxlX21peGVkY2FzZSIgPiY2CitpZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAiYXV0byIgOyB0aGVuCisKK2VjaG8gIiRhc19tZTozNzU5OiBjaGVja2luZyBpZiBmaWxlc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZmlsZXN5c3RlbSBzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbWl4ZWRjYXNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgorCWNhc2UgJHRhcmdldF9hbGlhcyBpbgorCSgqLW9zMi1lbXgqfCotbXNkb3NkamdwcCp8Ki1jeWd3aW4qfCotbXN5cyp8Ki1taW5ndyp8Ki11d2luKikKKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJCTs7CisJKCopCisJCWNmX2N2X21peGVkY2FzZT15ZXMKKwkJOzsKKwllc2FjCitlbHNlCisJcm0gLWYgY29uZnRlc3QgQ09ORlRFU1QKKwllY2hvIHRlc3QgPmNvbmZ0ZXN0CisJaWYgdGVzdCAtZiBDT05GVEVTVCA7IHRoZW4KKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJZWxzZQorCQljZl9jdl9taXhlZGNhc2U9eWVzCisJZmkKKwlybSAtZiBjb25mdGVzdCBDT05GVEVTVAorZmkKKworZmkKK2VjaG8gIiRhc19tZTozNzg2OiByZXN1bHQ6ICRjZl9jdl9taXhlZGNhc2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X21peGVkY2FzZSIgPiY2Cit0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTUlYRURDQVNFX0ZJTEVOQU1FUyAxCitFT0YKKworZWxzZQorCWNmX2N2X21peGVkY2FzZT0kZW5hYmxlX21peGVkY2FzZQorCWlmIHRlc3QgIngkZW5hYmxlX21peGVkY2FzZSIgPSAieHllcyIgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE1JWEVEQ0FTRV9GSUxFTkFNRVMgMQorRU9GCisKKwlmaQorZmkKKworIyBkbyB0aGlzIGFmdGVyIG1peGVkLWNhc2Ugb3B0aW9uICh0YWdzL1RBR1MgaXMgbm90IGFzIGltcG9ydGFudCBhcyB0aWMpLgorZWNobyAiJGFzX21lOjM4MDU6IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9Li4uICRFQ0hPX0MiID4mNgorc2V0IGR1bW15ICR7TUFLRS1tYWtlfTsgYWNfbWFrZT1gZWNobyAiJDIiIHwgc2VkICd5LC4vKy0sX19wXywnYAoraWYgZXZhbCAidGVzdCBcIlwke2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCtzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxFT0YKK2FsbDoKKwlAZWNobyAnYWNfbWFrZXRlbXA9IiR7TUFLRX0iJworRU9GCisjIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KK2V2YWwgYCR7TUFLRS1tYWtlfSAtZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsIHwgZ3JlcCB0ZW1wPWAKK2lmIHRlc3QgLW4gIiRhY19tYWtldGVtcCI7IHRoZW4KKyAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzCitlbHNlCisgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PW5vCitmaQorcm0gLWYgY29uZnRlc3QubWFrZQorZmkKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X3Byb2dfbWFrZV8nJHthY19tYWtlfV9zZXRgXCIgPSB5ZXMiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozODI1OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorICBTRVRfTUFLRT0KK2Vsc2UKKyAgZWNobyAiJGFzX21lOjM4Mjk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0iCitmaQorCitmb3IgYWNfcHJvZyBpbiBleGN0YWdzIGN0YWdzCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjM4Mzg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DVEFHUytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ1RBR1MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ1RBR1M9IiRDVEFHUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0NUQUdTPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTozODUzOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorQ1RBR1M9JGFjX2N2X3Byb2dfQ1RBR1MKK2lmIHRlc3QgLW4gIiRDVEFHUyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM4NjE6IHJlc3VsdDogJENUQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDVEFHUyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozODY0OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJENUQUdTIiAmJiBicmVhaworZG9uZQorCitmb3IgYWNfcHJvZyBpbiBleGV0YWdzIGV0YWdzCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjM4NzU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19FVEFHUytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkRVRBR1MiOyB0aGVuCisgIGFjX2N2X3Byb2dfRVRBR1M9IiRFVEFHUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0VUQUdTPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTozODkwOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorRVRBR1M9JGFjX2N2X3Byb2dfRVRBR1MKK2lmIHRlc3QgLW4gIiRFVEFHUyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM4OTg6IHJlc3VsdDogJEVUQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRFVEFHUyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozOTAxOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJEVUQUdTIiAmJiBicmVhaworZG9uZQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7Q1RBR1M6LWN0YWdzfSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHtDVEFHUzotY3RhZ3N9OyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MzkxMDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTUFLRV9MT1dFUl9UQUdTIjsgdGhlbgorICBhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUz0iJE1BS0VfTE9XRVJfVEFHUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUz0ieWVzIgorZWNobyAiJGFzX21lOjM5MjU6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1MiICYmIGFjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTPSJubyIKK2ZpCitmaQorTUFLRV9MT1dFUl9UQUdTPSRhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUworaWYgdGVzdCAtbiAiJE1BS0VfTE9XRVJfVEFHUyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjM5MzQ6IHJlc3VsdDogJE1BS0VfTE9XRVJfVEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kTUFLRV9MT1dFUl9UQUdTIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjM5Mzc6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworaWYgdGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgOyB0aGVuCisJIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke0VUQUdTOi1ldGFnc30iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7RVRBR1M6LWV0YWdzfTsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjM5NDQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE1BS0VfVVBQRVJfVEFHUyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1M9IiRNQUtFX1VQUEVSX1RBR1MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1M9InllcyIKK2VjaG8gIiRhc19tZTozOTU5OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTIiAmJiBhY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUz0ibm8iCitmaQorZmkKK01BS0VfVVBQRVJfVEFHUz0kYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1MKK2lmIHRlc3QgLW4gIiRNQUtFX1VQUEVSX1RBR1MiOyB0aGVuCisgIGVjaG8gIiRhc19tZTozOTY4OiByZXN1bHQ6ICRNQUtFX1VQUEVSX1RBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JE1BS0VfVVBQRVJfVEFHUyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTozOTcxOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9bm8KK2ZpCisKK2lmIHRlc3QgIiRNQUtFX1VQUEVSX1RBR1MiID0geWVzIDsgdGhlbgorCU1BS0VfVVBQRVJfVEFHUz0KK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9IiMiCitmaQorCitpZiB0ZXN0ICIkTUFLRV9MT1dFUl9UQUdTIiA9IHllcyA7IHRoZW4KKwlNQUtFX0xPV0VSX1RBR1M9CitlbHNlCisJTUFLRV9MT1dFUl9UQUdTPSIjIgorZmkKKworZWNobyAiJGFzX21lOjM5OTE6IGNoZWNraW5nIGZvciBtYWtlZmxhZ3MgdmFyaWFibGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFrZWZsYWdzIHZhcmlhYmxlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9tYWtlZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2N2X21ha2VmbGFncz0nJworCWZvciBjZl9vcHRpb24gaW4gJy0ke01BS0VGTEFHU30nICcke01GTEFHU30nCisJZG8KKwkJY2F0ID5jZl9tYWtlZmxhZ3MudG1wIDw8Q0ZfRU9GCitTSEVMTCA9ICRTSEVMTAorYWxsIDoKKwlAIGVjaG8gJy4kY2Zfb3B0aW9uJworQ0ZfRU9GCisJCWNmX3Jlc3VsdD1gJHtNQUtFOi1tYWtlfSAtayAtZiBjZl9tYWtlZmxhZ3MudG1wIDI+L2Rldi9udWxsIHwgZmdyZXAgLXYgImluZyBkaXJlY3RvcnkiIHwgc2VkIC1lICdzLFsgCV0qJCwsJ2AKKwkJY2FzZSAiJGNmX3Jlc3VsdCIgaW4KKwkJKC4qa3wuKmt3KQorCQkJY2ZfcmVzdWx0PWAke01BS0U6LW1ha2V9IC1rIC1mIGNmX21ha2VmbGFncy50bXAgQ0M9Y2MgMj4vZGV2L251bGxgCisJCQljYXNlICIkY2ZfcmVzdWx0IiBpbgorCQkJKC4qQ0M9KikJY2ZfY3ZfbWFrZWZsYWdzPQorCQkJCTs7CisJCQkoKikJY2ZfY3ZfbWFrZWZsYWdzPSRjZl9vcHRpb24KKwkJCQk7OworCQkJZXNhYworCQkJYnJlYWsKKwkJCTs7CisJCSguLSkJOzsKKwkJKCopCWVjaG8gImdpdmVuIG9wdGlvbiBcIiRjZl9vcHRpb25cIiwgbm8gbWF0Y2ggXCIkY2ZfcmVzdWx0XCIiCisJCQk7OworCQllc2FjCisJZG9uZQorCXJtIC1mIGNmX21ha2VmbGFncy50bXAKKworZmkKK2VjaG8gIiRhc19tZTo0MDI1OiByZXN1bHQ6ICRjZl9jdl9tYWtlZmxhZ3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X21ha2VmbGFncyIgPiY2CisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5saWI7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0MDMxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgIGFjX2N2X3Byb2dfUkFOTElCPSIkUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKK2VjaG8gIiRhc19tZTo0MDQ2OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQgoraWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQwNTQ6IHJlc3VsdDogJFJBTkxJQiIgPiY1CitlY2hvICIke0VDSE9fVH0kUkFOTElCIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjQwNTc6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX1JBTkxJQiI7IHRoZW4KKyAgYWNfY3RfUkFOTElCPSRSQU5MSUIKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjQwNjY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9InJhbmxpYiIKK2VjaG8gIiRhc19tZTo0MDgxOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCIiAmJiBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJzonIgorZmkKK2ZpCithY19jdF9SQU5MSUI9JGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCCitpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDA5MDogcmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9SQU5MSUIiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDA5MzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIFJBTkxJQj0kYWNfY3RfUkFOTElCCitlbHNlCisgIFJBTkxJQj0iJGFjX2N2X3Byb2dfUkFOTElCIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bGQ7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0MTA1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTEQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBhY19jdl9wcm9nX0xEPSIkTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19MRD0iJHthY190b29sX3ByZWZpeH1sZCIKK2VjaG8gIiRhc19tZTo0MTIwOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorTEQ9JGFjX2N2X3Byb2dfTEQKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQxMjg6IHJlc3VsdDogJExEIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRMRCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0MTMxOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19MRCI7IHRoZW4KKyAgYWNfY3RfTEQ9JExECisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGxkOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NDE0MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0xEK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9MRCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9MRD0iJGFjX2N0X0xEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfTEQ9ImxkIgorZWNobyAiJGFzX21lOjQxNTU6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9MRCIgJiYgYWNfY3ZfcHJvZ19hY19jdF9MRD0ibGQiCitmaQorZmkKK2FjX2N0X0xEPSRhY19jdl9wcm9nX2FjX2N0X0xECitpZiB0ZXN0IC1uICIkYWNfY3RfTEQiOyB0aGVuCisgIGVjaG8gIiRhc19tZTo0MTY0OiByZXN1bHQ6ICRhY19jdF9MRCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfTEQiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDE2NzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIExEPSRhY19jdF9MRAorZWxzZQorICBMRD0iJGFjX2N2X3Byb2dfTEQiCitmaQorCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjQxNzk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCisgIGFjX2N2X3Byb2dfQVI9IiRBUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorZWNobyAiJGFzX21lOjQxOTQ6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitBUj0kYWNfY3ZfcHJvZ19BUgoraWYgdGVzdCAtbiAiJEFSIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDIwMjogcmVzdWx0OiAkQVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JEFSIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjQyMDU6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorICBhY19jdF9BUj0kQVIKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0MjE0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCitlY2hvICIkYXNfbWU6NDIyOTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X0FSIiAmJiBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKK2ZpCitmaQorYWNfY3RfQVI9JGFjX2N2X3Byb2dfYWNfY3RfQVIKK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQyMzg6IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9BUiIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0MjQxOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgQVI9JGFjX2N0X0FSCitlbHNlCisgIEFSPSIkYWNfY3ZfcHJvZ19BUiIKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW5tIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW5tOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NDI1MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX05NK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiROTSI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19OTT0iJE5NIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTk09IiR7YWNfdG9vbF9wcmVmaXh9bm0iCitlY2hvICIkYXNfbWU6NDI2ODogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK05NPSRhY19jdl9wcm9nX05NCitpZiB0ZXN0IC1uICIkTk0iOyB0aGVuCisgIGVjaG8gIiRhc19tZTo0Mjc2OiByZXN1bHQ6ICROTSIgPiY1CitlY2hvICIke0VDSE9fVH0kTk0iID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDI3OTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTk0iOyB0aGVuCisgIGFjX2N0X05NPSROTQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm5tIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBubTsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjQyODg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9OTStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfTk0iOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTk09IiRhY19jdF9OTSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X05NPSJubSIKK2VjaG8gIiRhc19tZTo0MzAzOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfTk0iICYmIGFjX2N2X3Byb2dfYWNfY3RfTk09Im5tIgorZmkKK2ZpCithY19jdF9OTT0kYWNfY3ZfcHJvZ19hY19jdF9OTQoraWYgdGVzdCAtbiAiJGFjX2N0X05NIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDMxMjogcmVzdWx0OiAkYWNfY3RfTk0iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X05NIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjQzMTU6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICBOTT0kYWNfY3RfTk0KK2Vsc2UKKyAgTk09IiRhY19jdl9wcm9nX05NIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0MzI3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgorICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKK2VjaG8gIiRhc19tZTo0MzQyOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorQVI9JGFjX2N2X3Byb2dfQVIKK2lmIHRlc3QgLW4gIiRBUiI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQzNTA6IHJlc3VsdDogJEFSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBUiIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0MzUzOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NDM2MjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorZWNobyAiJGFzX21lOjQzNzc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9BUiIgJiYgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCitmaQorZmkKK2FjX2N0X0FSPSRhY19jdl9wcm9nX2FjX2N0X0FSCitpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCisgIGVjaG8gIiRhc19tZTo0Mzg2OiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfQVIiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDM4OTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIEFSPSRhY19jdF9BUgorZWxzZQorICBBUj0iJGFjX2N2X3Byb2dfQVIiCitmaQorCitlY2hvICIkYXNfbWU6NDM5ODogY2hlY2tpbmcgZm9yIG9wdGlvbnMgdG8gdXBkYXRlIGFyY2hpdmVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG9wdGlvbnMgdG8gdXBkYXRlIGFyY2hpdmVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgorCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorCWRvCisKKwkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCisJCWlmIHRlc3QgIngkQVJGTEFHUyIgIT0gIngiIDsgdGhlbgorCQkJY2ZfY2hlY2tfYXJfZmxhZ3M9YGVjaG8gIngkQVJGTEFHUyIgfCBzZWQgLWUgInMvJGNmX2FyX2ZsYWdzXCQvLyIgLWUgInMvJGNmX2FyX2ZsYWdzIC8gLyJgCisJCQlpZiB0ZXN0ICJ4JEFSRkxBR1MiICE9ICIkY2ZfY2hlY2tfYXJfZmxhZ3MiIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPQorCQkJCWJyZWFrCisJCQlmaQorCQlmaQorCisJCXJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQKKwkJcm0gLWYgY29uZnRlc3QuYQorCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgNDQyMSAiY29uZmlndXJlIgoraW50CXRlc3RkYXRhWzNdID0geyAxMjMsIDQ1NiwgNzg5IH07CitFT0YKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDQyNDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDQyNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9IDsgdGhlbgorCQkJZWNobyAiJEFSICRBUkZMQUdTICRjZl9hcl9mbGFncyBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQiID4mNQorCQkJJEFSICRBUkZMQUdTICRjZl9hcl9mbGFncyBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgMj4mNSAxPi9kZXYvbnVsbAorCQkJaWYgdGVzdCAtZiBjb25mdGVzdC5hIDsgdGhlbgorCQkJCWNmX2N2X2FyX2ZsYWdzPSRjZl9hcl9mbGFncworCQkJCWJyZWFrCisJCQlmaQorCQllbHNlCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWNhbm5vdCBjb21waWxlIHRlc3QtcHJvZ3JhbSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjQ0Mzg6IHRlc3RpbmcgY2Fubm90IGNvbXBpbGUgdGVzdC1wcm9ncmFtIC4uLiIgMT4mNQorCisJCQlicmVhaworCQlmaQorCWRvbmUKKwlybSAtZiBjb25mdGVzdC5hIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX2N2X29iamV4dAorCitmaQorZWNobyAiJGFzX21lOjQ0NDY6IHJlc3VsdDogJGNmX2N2X2FyX2ZsYWdzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9hcl9mbGFncyIgPiY2CisKK2lmIHRlc3QgLW4gIiRBUkZMQUdTIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkY2ZfY3ZfYXJfZmxhZ3MiIDsgdGhlbgorCQlBUkZMQUdTPSIkQVJGTEFHUyAkY2ZfY3ZfYXJfZmxhZ3MiCisJZmkKK2Vsc2UKKwlBUkZMQUdTPSRjZl9jdl9hcl9mbGFncworZmkKKworZWNobyAiJGFzX21lOjQ0NTc6IGNoZWNraW5nIGlmIHlvdSBoYXZlIHNwZWNpZmllZCBhbiBpbnN0YWxsLXByZWZpeCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSBoYXZlIHNwZWNpZmllZCBhbiBpbnN0YWxsLXByZWZpeC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1pbnN0YWxsLXByZWZpeCBvciAtLXdpdGhvdXQtaW5zdGFsbC1wcmVmaXggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2luc3RhbGxfcHJlZml4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2luc3RhbGxfcHJlZml4IgorICBjYXNlICJ4JHdpdGh2YWwiIGluCisJKHh5ZXN8eG5vKQorCQk7OworCSgqKQlERVNURElSPSIkd2l0aHZhbCIKKwkJOzsKKwllc2FjCitmaTsKK2VjaG8gIiRhc19tZTo0NDcwOiByZXN1bHQ6ICRERVNURElSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRERVNURElSIiA+JjYKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIElmIHdlJ3JlIGNyb3NzLWNvbXBpbGluZywgYWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHRvb2xzIGFuZCB0aGVpcgorIyBvcHRpb25zLiAgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgb3JpZW50ZWQgdG93YXJkIGlkZW50aWZ5aW5nIHRoZSBob3N0CisjIGNvbXBpbGVyLCBldGMuLCBidXQgd2UgbmVlZCBhIGJ1aWxkIGNvbXBpbGVyIHRvIGdlbmVyYXRlIHBhcnRzIG9mIHRoZSBzb3VyY2UuCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgorCisJIyBkZWZhdWx0cyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gb3ZlcnJpZGUKKwk6ICR7QlVJTERfQ0ZMQUdTOj0nJ30KKwk6ICR7QlVJTERfQ1BQRkxBR1M6PScnfQorCTogJHtCVUlMRF9MREZMQUdTOj0nJ30KKwk6ICR7QlVJTERfTElCUzo9Jyd9CisJOiAke0JVSUxEX0VYRUVYVDo9JyR4J30KKwk6ICR7QlVJTERfT0JKRVhUOj0nbyd9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtY2Mgb3IgLS13aXRob3V0LWJ1aWxkLWNjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9idWlsZF9jYytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9idWlsZF9jYyIKKyAgQlVJTERfQ0M9IiR3aXRodmFsIgorZWxzZQorICBmb3IgYWNfcHJvZyBpbiBnY2MgY2MgY2wKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NDQ5ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0JVSUxEX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRCVUlMRF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19CVUlMRF9DQz0iJEJVSUxEX0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQlVJTERfQ0M9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjQ1MTM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitCVUlMRF9DQz0kYWNfY3ZfcHJvZ19CVUlMRF9DQworaWYgdGVzdCAtbiAiJEJVSUxEX0NDIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDUyMTogcmVzdWx0OiAkQlVJTERfQ0MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0NDIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjQ1MjQ6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkQlVJTERfQ0MiICYmIGJyZWFrCitkb25lCisKK2ZpOworCWVjaG8gIiRhc19tZTo0NTMyOiBjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIEMgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CisJZWNobyAiJGFzX21lOjQ1MzQ6IHJlc3VsdDogJEJVSUxEX0NDIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRCVUlMRF9DQyIgPiY2CisKKwllY2hvICIkYXNfbWU6NDUzNzogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIHByZXByb2Nlc3NvciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBwcmVwcm9jZXNzb3IuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtY3BwIG9yIC0td2l0aG91dC1idWlsZC1jcHAgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2J1aWxkX2NwcCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9idWlsZF9jcHAiCisgIEJVSUxEX0NQUD0iJHdpdGh2YWwiCitlbHNlCisgIEJVSUxEX0NQUD0nJHtCVUlMRF9DQ30gLUUnCitmaTsKKwllY2hvICIkYXNfbWU6NDU0NzogcmVzdWx0OiAkQlVJTERfQ1BQIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRCVUlMRF9DUFAiID4mNgorCisJZWNobyAiJGFzX21lOjQ1NTA6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBmbGFncyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBmbGFncy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1jZmxhZ3Mgb3IgLS13aXRob3V0LWJ1aWxkLWNmbGFncyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYnVpbGRfY2ZsYWdzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2NmbGFncyIKKyAgQlVJTERfQ0ZMQUdTPSIkd2l0aHZhbCIKK2ZpOworCWVjaG8gIiRhc19tZTo0NTU4OiByZXN1bHQ6ICRCVUlMRF9DRkxBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0NGTEFHUyIgPiY2CisKKwllY2hvICIkYXNfbWU6NDU2MTogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBDIHByZXByb2Nlc3Nvci1mbGFncyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgQyBwcmVwcm9jZXNzb3ItZmxhZ3MuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYnVpbGQtY3BwZmxhZ3Mgb3IgLS13aXRob3V0LWJ1aWxkLWNwcGZsYWdzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9idWlsZF9jcHBmbGFncytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9idWlsZF9jcHBmbGFncyIKKyAgQlVJTERfQ1BQRkxBR1M9IiR3aXRodmFsIgorZmk7CisJZWNobyAiJGFzX21lOjQ1Njk6IHJlc3VsdDogJEJVSUxEX0NQUEZMQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRCVUlMRF9DUFBGTEFHUyIgPiY2CisKKwllY2hvICIkYXNfbWU6NDU3MjogY2hlY2tpbmcgZm9yIG5hdGl2ZSBidWlsZCBsaW5rZXItZmxhZ3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmF0aXZlIGJ1aWxkIGxpbmtlci1mbGFncy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1sZGZsYWdzIG9yIC0td2l0aG91dC1idWlsZC1sZGZsYWdzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9idWlsZF9sZGZsYWdzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2xkZmxhZ3MiCisgIEJVSUxEX0xERkxBR1M9IiR3aXRodmFsIgorZmk7CisJZWNobyAiJGFzX21lOjQ1ODA6IHJlc3VsdDogJEJVSUxEX0xERkxBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0xERkxBR1MiID4mNgorCisJZWNobyAiJGFzX21lOjQ1ODM6IGNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuYXRpdmUgYnVpbGQgbGlua2VyLWxpYnJhcmllcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1idWlsZC1saWJzIG9yIC0td2l0aG91dC1idWlsZC1saWJzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9idWlsZF9saWJzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2J1aWxkX2xpYnMiCisgIEJVSUxEX0xJQlM9IiR3aXRodmFsIgorZmk7CisJZWNobyAiJGFzX21lOjQ1OTE6IHJlc3VsdDogJEJVSUxEX0xJQlMiID4mNQorZWNobyAiJHtFQ0hPX1R9JEJVSUxEX0xJQlMiID4mNgorCisJIyB0aGlzIGFzc3VtZXMgd2UncmUgb24gVW5peC4KKwlCVUlMRF9FWEVFWFQ9CisJQlVJTERfT0JKRVhUPW8KKworCTogJHtCVUlMRF9DQzo9JyR7Q0N9J30KKworCWlmICggdGVzdCAiJEJVSUxEX0NDIiA9ICIkQ0MiIHx8IHRlc3QgIiRCVUlMRF9DQyIgPSAnJHtDQ30nICkgOyB0aGVuCisJCXsgeyBlY2hvICIkYXNfbWU6NDYwMTogZXJyb3I6IENyb3NzLWJ1aWxkIHJlcXVpcmVzIHR3byBjb21waWxlcnMuCitVc2UgLS13aXRoLWJ1aWxkLWNjIHRvIHNwZWNpZnkgdGhlIG5hdGl2ZSBjb21waWxlci4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ3Jvc3MtYnVpbGQgcmVxdWlyZXMgdHdvIGNvbXBpbGVycy4KK1VzZSAtLXdpdGgtYnVpbGQtY2MgdG8gc3BlY2lmeSB0aGUgbmF0aXZlIGNvbXBpbGVyLiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCisKK2Vsc2UKKwk6ICR7QlVJTERfQ0M6PScke0NDfSd9CisJOiAke0JVSUxEX0NQUDo9JyR7Q1BQfSd9CisJOiAke0JVSUxEX0NGTEFHUzo9JyR7Q0ZMQUdTfSd9CisJOiAke0JVSUxEX0NQUEZMQUdTOj0nJHtDUFBGTEFHU30nfQorCTogJHtCVUlMRF9MREZMQUdTOj0nJHtMREZMQUdTfSd9CisJOiAke0JVSUxEX0xJQlM6PScke0xJQlN9J30KKwk6ICR7QlVJTERfRVhFRVhUOj0nJHgnfQorCTogJHtCVUlMRF9PQkpFWFQ6PSdvJ30KK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjIE9wdGlvbnMgdG8gYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgc2V0IG9mIGxpYnJhcmllcyB3aGljaCBhcmUgdXNlZC4KKyMjIyBVc2UgIi0td2l0aG91dC1ub3JtYWwgLS13aXRoLXNoYXJlZCIgdG8gYWxsb3cgdGhlIGRlZmF1bHQgbW9kZWwgdG8gYmUKKyMjIyBzaGFyZWQsIGZvciBleGFtcGxlLgorY2ZfbGlzdF9tb2RlbHM9IiIKKworZWNobyAiJGFzX21lOjQ2MjY6IGNoZWNraW5nIGlmIGxpYnRvb2wgLXZlcnNpb24tbnVtYmVyIHNob3VsZCBiZSB1c2VkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbGlidG9vbCAtdmVyc2lvbi1udW1iZXIgc2hvdWxkIGJlIHVzZWQuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLXZlcnNpb24gb3IgLS1kaXNhYmxlLWxpYnRvb2wtdmVyc2lvbiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2xpYnRvb2xfdmVyc2lvbiIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gJiYgZW5hYmxldmFsPXllcworCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICJ5ZXMiIDsgdGhlbgorICAgIGNmX2xpYnRvb2xfdmVyc2lvbj1ubworCWVsc2UKKwkJY2ZfbGlidG9vbF92ZXJzaW9uPXllcworCWZpCitlbHNlCisgIGVuYWJsZXZhbD15ZXMKKwljZl9saWJ0b29sX3ZlcnNpb249eWVzCisKK2ZpOworZWNobyAiJGFzX21lOjQ2NDM6IHJlc3VsdDogJGNmX2xpYnRvb2xfdmVyc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfbGlidG9vbF92ZXJzaW9uIiA+JjYKKworaWYgdGVzdCAiJGNmX2xpYnRvb2xfdmVyc2lvbiIgPSB5ZXMgOyB0aGVuCisJTElCVE9PTF9WRVJTSU9OPSItdmVyc2lvbi1udW1iZXIiCitlbHNlCisJTElCVE9PTF9WRVJTSU9OPSItdmVyc2lvbi1pbmZvIgorCWNhc2UgIngkVkVSU0lPTiIgaW4KKwkoeCkKKwkJeyBlY2hvICIkYXNfbWU6NDY1MjogV0FSTklORzogVkVSU0lPTiB3YXMgbm90IHNldCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IFZFUlNJT04gd2FzIG5vdCBzZXQiID4mMjt9CisJCTs7CisJKHgqLiouKikKKwkJQUJJX1ZFUlNJT049IiRWRVJTSU9OIgorCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCUFCSV9WRVJTSU9OOiAkQUJJX1ZFUlNJT04iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo0NjU5OiB0ZXN0aW5nIEFCSV9WRVJTSU9OOiAkQUJJX1ZFUlNJT04gLi4uIiAxPiY1CisKKwkJOzsKKwkoeCo6KjoqKQorCQlBQklfVkVSU0lPTj1gZWNobyAiJFZFUlNJT04iIHwgc2VkIC1lICdzLzovLi9nJ2AKKwkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglBQklfVkVSU0lPTjogJEFCSV9WRVJTSU9OIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NDY2NjogdGVzdGluZyBBQklfVkVSU0lPTjogJEFCSV9WRVJTSU9OIC4uLiIgMT4mNQorCisJCTs7CisJKCopCisJCXsgZWNobyAiJGFzX21lOjQ2NzA6IFdBUk5JTkc6IHVuZXhwZWN0ZWQgVkVSU0lPTiB2YWx1ZTogJFZFUlNJT04iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bmV4cGVjdGVkIFZFUlNJT04gdmFsdWU6ICRWRVJTSU9OIiA+JjI7fQorCQk7OworCWVzYWMKK2ZpCisKK0xJQlRPT0w9CisKKyMgY29tbW9uIGxpYnJhcnkgbWFpbnRlbmFuY2Ugc3ltYm9scyB0aGF0IGFyZSBjb252ZW5pZW50IGZvciBsaWJ0b29sIHNjcmlwdHM6CitMSUJfQ1JFQVRFPScke0FSfSAtY3InCitMSUJfT0JKRUNUPScke09CSkVDVFN9JworTElCX1NVRkZJWD0uYQorTElCX1BSRVA9IiRSQU5MSUIiCisKKyMgc3ltYm9scyB1c2VkIHRvIHByb3AgbGlidG9vbCB1cCB0byBlbmFibGUgaXQgdG8gZGV0ZXJtaW5lIHdoYXQgaXQgc2hvdWxkIGJlCisjIGRvaW5nOgorTElCX0NMRUFOPQorTElCX0NPTVBJTEU9CitMSUJfTElOSz0nJHtDQ30nCitMSUJfSU5TVEFMTD0KK0xJQl9VTklOU1RBTEw9CisKK2VjaG8gIiRhc19tZTo0NjkyOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBsaWJyYXJpZXMgd2l0aCBsaWJ0b29sIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgbGlicmFyaWVzIHdpdGggbGlidG9vbC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sIG9yIC0td2l0aG91dC1saWJ0b29sIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2xpYnRvb2wiCisgIHdpdGhfbGlidG9vbD0kd2l0aHZhbAorZWxzZQorICB3aXRoX2xpYnRvb2w9bm8KK2ZpOworZWNobyAiJGFzX21lOjQ3MDI6IHJlc3VsdDogJHdpdGhfbGlidG9vbCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9saWJ0b29sIiA+JjYKK2lmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJubyI7IHRoZW4KKworCWlmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJ5ZXMiIDsgdGhlbgorCitpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KKwljZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKK2Vsc2UKKwljZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgorZmkKKworY2FzZSAiLiR3aXRoX2xpYnRvb2wiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGhfbGlidG9vbD0iJHdpdGhfbGlidG9vbCIKKwljYXNlICIuJHdpdGhfbGlidG9vbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aF9saWJ0b29sPWBlY2hvICR3aXRoX2xpYnRvb2wgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJCTs7CisJZXNhYworCTs7CisoLm5vfC5OT05FLyopCisJd2l0aF9saWJ0b29sPWBlY2hvICR3aXRoX2xpYnRvb2wgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJOzsKKygqKQorCXsgeyBlY2hvICIkYXNfbWU6NDczMzogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRoX2xpYnRvb2xcIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aF9saWJ0b29sXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwk7OworZXNhYworCisJCUxJQlRPT0w9JHdpdGhfbGlidG9vbAorCWVsc2UKKwkJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBsaWJ0b29sIGdsaWJ0b29sCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0NzQ2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTElCVE9PTCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTElCVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19MSUJUT09MPSIkTElCVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0xJQlRPT0w9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorZWNobyAiJGFzX21lOjQ3NjE6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitMSUJUT09MPSRhY19jdl9wcm9nX0xJQlRPT0wKK2lmIHRlc3QgLW4gIiRMSUJUT09MIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDc2OTogcmVzdWx0OiAkTElCVE9PTCIgPiY1CitlY2hvICIke0VDSE9fVH0kTElCVE9PTCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0NzcyOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgICB0ZXN0IC1uICIkTElCVE9PTCIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRMSUJUT09MIjsgdGhlbgorICBhY19jdF9MSUJUT09MPSRMSUJUT09MCisgIGZvciBhY19wcm9nIGluIGxpYnRvb2wgZ2xpYnRvb2wKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NDc4NTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0xJQlRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0xJQlRPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTElCVE9PTD0iJGFjX2N0X0xJQlRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9MSUJUT09MPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZTo0ODAwOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorYWNfY3RfTElCVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9MSUJUT09MCitpZiB0ZXN0IC1uICIkYWNfY3RfTElCVE9PTCI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQ4MDg6IHJlc3VsdDogJGFjX2N0X0xJQlRPT0wiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0xJQlRPT0wiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDgxMTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRhY19jdF9MSUJUT09MIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJGFjX2N0X0xJQlRPT0wiIHx8IGFjX2N0X0xJQlRPT0w9Im5vbmUiCisKKyAgTElCVE9PTD0kYWNfY3RfTElCVE9PTAorZmkKKworaWYgdGVzdCAtbiAiJExJQlRPT0wiICYmIHRlc3QgIiRMSUJUT09MIiAhPSBub25lCit0aGVuCisJY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPWAkTElCVE9PTCAtLXZlcnNpb24gMj4mMSB8IHNlZCAtZSAnL14kL2QnIHxzZWQgLWUgJzIsJGQnIC1lICdzLyhbXildKikvL2cnIC1lICdzL15bXjEtOV0qLy8nIC1lICdzL1teMC05Ll0uKi8vJ2AKK2Vsc2UKKwljZl9jdl9saWJ0b29sX3ZlcnNpb249CitmaQordGVzdCAteiAiJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiIgJiYgdW5zZXQgY2ZfY3ZfbGlidG9vbF92ZXJzaW9uCisKKwkJaWYgdGVzdCAteiAiJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiIgJiYgdGVzdCAiJExJQlRPT0wiID0gbGlidG9vbAorCQl0aGVuCisKK3Vuc2V0IGFjX2N2X3Byb2dfYWNfY3RfTElCVE9PTAordW5zZXQgYWNfY3RfTElCVE9PTAordW5zZXQgTElCVE9PTAorCisJCQlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGdsaWJ0b29sCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0ODQyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTElCVE9PTCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTElCVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19MSUJUT09MPSIkTElCVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0xJQlRPT0w9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorZWNobyAiJGFzX21lOjQ4NTc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitMSUJUT09MPSRhY19jdl9wcm9nX0xJQlRPT0wKK2lmIHRlc3QgLW4gIiRMSUJUT09MIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDg2NTogcmVzdWx0OiAkTElCVE9PTCIgPiY1CitlY2hvICIke0VDSE9fVH0kTElCVE9PTCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0ODY4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgICB0ZXN0IC1uICIkTElCVE9PTCIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRMSUJUT09MIjsgdGhlbgorICBhY19jdF9MSUJUT09MPSRMSUJUT09MCisgIGZvciBhY19wcm9nIGluIGdsaWJ0b29sCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjQ4ODE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9MSUJUT09MK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9MSUJUT09MIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0xJQlRPT0w9IiRhY19jdF9MSUJUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfTElCVE9PTD0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6NDg5NjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X0xJQlRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTElCVE9PTAoraWYgdGVzdCAtbiAiJGFjX2N0X0xJQlRPT0wiOyB0aGVuCisgIGVjaG8gIiRhc19tZTo0OTA0OiByZXN1bHQ6ICRhY19jdF9MSUJUT09MIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9MSUJUT09MIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjQ5MDc6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkYWNfY3RfTElCVE9PTCIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRhY19jdF9MSUJUT09MIiB8fCBhY19jdF9MSUJUT09MPSJub25lIgorCisgIExJQlRPT0w9JGFjX2N0X0xJQlRPT0wKK2ZpCisKK2lmIHRlc3QgLW4gIiRMSUJUT09MIiAmJiB0ZXN0ICIkTElCVE9PTCIgIT0gbm9uZQordGhlbgorCWNmX2N2X2xpYnRvb2xfdmVyc2lvbj1gJExJQlRPT0wgLS12ZXJzaW9uIDI+JjEgfCBzZWQgLWUgJy9eJC9kJyB8c2VkIC1lICcyLCRkJyAtZSAncy8oW14pXSopLy9nJyAtZSAncy9eW14xLTldKi8vJyAtZSAncy9bXjAtOS5dLiovLydgCitlbHNlCisJY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPQorZmkKK3Rlc3QgLXogIiRjZl9jdl9saWJ0b29sX3ZlcnNpb24iICYmIHVuc2V0IGNmX2N2X2xpYnRvb2xfdmVyc2lvbgorCisJCWZpCisJZmkKKwlpZiB0ZXN0IC16ICIkTElCVE9PTCIgOyB0aGVuCisJCXsgeyBlY2hvICIkYXNfbWU6NDkyOTogZXJyb3I6IENhbm5vdCBmaW5kIGxpYnRvb2wiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGZpbmQgbGlidG9vbCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCisJTElCX0NSRUFURT0nJHtMSUJUT09MfSAtLW1vZGU9bGluayAke0NDfSAtcnBhdGggJHtERVNURElSfSR7bGliZGlyfSAke0xJQlRPT0xfVkVSU0lPTn0gYGN1dCAtZjEgJHt0b3Bfc3JjZGlyfS9WRVJTSU9OYCAke0xJQlRPT0xfT1BUU30gJHtMVF9VTkRFRn0gJChMSUJTKSAtbycKKwlMSUJfT0JKRUNUPScke09CSkVDVFM6Lm89LmxvfScKKwlMSUJfU1VGRklYPS5sYQorCUxJQl9DTEVBTj0nJHtMSUJUT09MfSAtLW1vZGU9Y2xlYW4nCisJTElCX0NPTVBJTEU9JyR7TElCVE9PTH0gLS1tb2RlPWNvbXBpbGUnCisJTElCX0xJTks9JyR7TElCVE9PTH0gLS1tb2RlPWxpbmsgJHtDQ30gJHtMSUJUT09MX09QVFN9JworCUxJQl9JTlNUQUxMPScke0xJQlRPT0x9IC0tbW9kZT1pbnN0YWxsJworCUxJQl9VTklOU1RBTEw9JyR7TElCVE9PTH0gLS1tb2RlPXVuaW5zdGFsbCcKKwlMSUJfUFJFUD06CisKK2lmIHRlc3QgLW4gIiRMSUJUT09MIiAmJiB0ZXN0ICIkTElCVE9PTCIgIT0gbm9uZQordGhlbgorCWVjaG8gIiRhc19tZTo0OTQ1OiBjaGVja2luZyB2ZXJzaW9uIG9mICRMSUJUT09MIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgdmVyc2lvbiBvZiAkTElCVE9PTC4uLiAkRUNIT19DIiA+JjYKKworaWYgdGVzdCAtbiAiJExJQlRPT0wiICYmIHRlc3QgIiRMSUJUT09MIiAhPSBub25lCit0aGVuCisJY2ZfY3ZfbGlidG9vbF92ZXJzaW9uPWAkTElCVE9PTCAtLXZlcnNpb24gMj4mMSB8IHNlZCAtZSAnL14kL2QnIHxzZWQgLWUgJzIsJGQnIC1lICdzLyhbXildKikvL2cnIC1lICdzL15bXjEtOV0qLy8nIC1lICdzL1teMC05Ll0uKi8vJ2AKK2Vsc2UKKwljZl9jdl9saWJ0b29sX3ZlcnNpb249CitmaQordGVzdCAteiAiJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiIgJiYgdW5zZXQgY2ZfY3ZfbGlidG9vbF92ZXJzaW9uCisKKwllY2hvICIkYXNfbWU6NDk1NjogcmVzdWx0OiAkY2ZfY3ZfbGlidG9vbF92ZXJzaW9uIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9saWJ0b29sX3ZlcnNpb24iID4mNgorCWlmIHRlc3QgLXogIiRjZl9jdl9saWJ0b29sX3ZlcnNpb24iIDsgdGhlbgorCQl7IHsgZWNobyAiJGFzX21lOjQ5NTk6IGVycm9yOiBUaGlzIGlzIG5vdCBHTlUgbGlidG9vbCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBUaGlzIGlzIG5vdCBHTlUgbGlidG9vbCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCitlbHNlCisJeyB7IGVjaG8gIiRhc19tZTo0OTY0OiBlcnJvcjogR05VIGxpYnRvb2wgaGFzIG5vdCBiZWVuIGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IEdOVSBsaWJ0b29sIGhhcyBub3QgYmVlbiBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworCSMgc3BlY2lhbCBoYWNrIHRvIGFkZCAtbm8tdW5kZWZpbmVkICh3aGljaCBsaWJ0b29sIHNob3VsZCBkbyBmb3IgaXRzZWxmKQorCUxUX1VOREVGPQorCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4KKwkoY3lnd2luKnxtc3lzKnxtaW5ndzMyKnx1d2luKnxhaXhbNC03XSkKKwkJTFRfVU5ERUY9LW5vLXVuZGVmaW5lZAorCQk7OworCWVzYWMKKworCSMgc3BlY2lhbCBoYWNrIHRvIGFkZCAtLXRhZyBvcHRpb24gZm9yIEMrKyBjb21waWxlcgorCWNhc2UgJGNmX2N2X2xpYnRvb2xfdmVyc2lvbiBpbgorCSgxLls1LTldKnxbMi05XS5bMC05LmEtel0qKQorCQlMSUJUT09MX0NYWD0iJExJQlRPT0wgLS10YWc9Q1hYIgorCQlMSUJUT09MPSIkTElCVE9PTCAtLXRhZz1DQyIKKwkJOzsKKwkoKikKKwkJTElCVE9PTF9DWFg9IiRMSUJUT09MIgorCQk7OworCWVzYWMKK2Vsc2UKKwlMSUJUT09MPSIiCisJTElCVE9PTF9DWFg9IiIKK2ZpCisKK3Rlc3QgLXogIiRMSUJUT09MIiAmJiBFQ0hPX0xUPQorCitpZiB0ZXN0ICIkd2l0aF9saWJ0b29sIiAhPSAibm8iIDsgdGhlbgorCitjZl9saXN0X21vZGVscz0iJGNmX2xpc3RfbW9kZWxzIGxpYnRvb2wiCisKK2Vsc2UKKworZWNobyAiJGFzX21lOjUwMDA6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXNoYXJlZCBvciAtLXdpdGhvdXQtc2hhcmVkIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zaGFyZWQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfc2hhcmVkIgorICB3aXRoX3NoYXJlZD0kd2l0aHZhbAorZWxzZQorICB3aXRoX3NoYXJlZD1ubworZmk7CitlY2hvICIkYXNfbWU6NTAxMDogcmVzdWx0OiAkd2l0aF9zaGFyZWQiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfc2hhcmVkIiA+JjYKK3Rlc3QgIngkd2l0aF9zaGFyZWQiID0gInh5ZXMiICYmIGNmX2xpc3RfbW9kZWxzPSIkY2ZfbGlzdF9tb2RlbHMgc2hhcmVkIgorCitlY2hvICIkYXNfbWU6NTAxNDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbm9ybWFsIG9yIC0td2l0aG91dC1ub3JtYWwgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX25vcm1hbCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9ub3JtYWwiCisgIHdpdGhfbm9ybWFsPSR3aXRodmFsCitlbHNlCisgIHdpdGhfbm9ybWFsPXllcworZmk7CitlY2hvICIkYXNfbWU6NTAyNDogcmVzdWx0OiAkd2l0aF9ub3JtYWwiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfbm9ybWFsIiA+JjYKK3Rlc3QgIngkd2l0aF9ub3JtYWwiID0gInh5ZXMiICYmIGNmX2xpc3RfbW9kZWxzPSIkY2ZfbGlzdF9tb2RlbHMgbm9ybWFsIgorCitlY2hvICIkYXNfbWU6NTAyODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgZGVidWcgbGlicmFyaWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgZGVidWcgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRlYnVnIG9yIC0td2l0aG91dC1kZWJ1ZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGVidWciCisgIHdpdGhfZGVidWc9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9kZWJ1Zz15ZXMKK2ZpOworZWNobyAiJGFzX21lOjUwMzg6IHJlc3VsdDogJHdpdGhfZGVidWciID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZGVidWciID4mNgordGVzdCAieCR3aXRoX2RlYnVnIiA9ICJ4eWVzIiAmJiBjZl9saXN0X21vZGVscz0iJGNmX2xpc3RfbW9kZWxzIGRlYnVnIgorCitlY2hvICIkYXNfbWU6NTA0MjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgcHJvZmlsaW5nIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHByb2ZpbGluZyBsaWJyYXJpZXMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcHJvZmlsZSBvciAtLXdpdGhvdXQtcHJvZmlsZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcHJvZmlsZStzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9wcm9maWxlIgorICB3aXRoX3Byb2ZpbGU9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9wcm9maWxlPW5vCitmaTsKK2VjaG8gIiRhc19tZTo1MDUyOiByZXN1bHQ6ICR3aXRoX3Byb2ZpbGUiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfcHJvZmlsZSIgPiY2Cit0ZXN0ICJ4JHdpdGhfcHJvZmlsZSIgPSAieHllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBwcm9maWxlIgorCitmaQorCitpZiB0ZXN0ICJYJGNmX3dpdGhfY3h4X2JpbmRpbmciICE9IFhubzsgdGhlbgoraWYgdGVzdCAieCR3aXRoX3NoYXJlZCIgPSAieHllcyI7IHRoZW4KK2VjaG8gIiRhc19tZTo1MDYwOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBDKysgc2hhcmVkIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIEMrKyBzaGFyZWQgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWN4eC1zaGFyZWQgb3IgLS13aXRob3V0LWN4eC1zaGFyZWQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2N4eF9zaGFyZWQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfY3h4X3NoYXJlZCIKKyAgd2l0aF9zaGFyZWRfY3h4PSR3aXRodmFsCitlbHNlCisgIHdpdGhfc2hhcmVkX2N4eD1ubworZmk7CitlY2hvICIkYXNfbWU6NTA3MDogcmVzdWx0OiAkd2l0aF9zaGFyZWRfY3h4IiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3NoYXJlZF9jeHgiID4mNgorZmkKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZWNobyAiJGFzX21lOjUwNzc6IGNoZWNraW5nIGZvciBzcGVjaWZpZWQgbW9kZWxzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpZmllZCBtb2RlbHMuLi4gJEVDSE9fQyIgPiY2Cit0ZXN0IC16ICIkY2ZfbGlzdF9tb2RlbHMiICYmIGNmX2xpc3RfbW9kZWxzPW5vcm1hbAordGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gIm5vIiAmJiBjZl9saXN0X21vZGVscz1saWJ0b29sCitlY2hvICIkYXNfbWU6NTA4MTogcmVzdWx0OiAkY2ZfbGlzdF9tb2RlbHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2xpc3RfbW9kZWxzIiA+JjYKKworIyMjIFVzZSB0aGUgZmlyc3QgbW9kZWwgYXMgdGhlIGRlZmF1bHQsIGFuZCBzYXZlIGl0cyBzdWZmaXggZm9yIHVzZSBpbiBidWlsZGluZworIyMjIHVwIHRlc3QtYXBwbGljYXRpb25zLgorZWNobyAiJGFzX21lOjUwODY6IGNoZWNraW5nIGZvciBkZWZhdWx0IG1vZGVsIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgbW9kZWwuLi4gJEVDSE9fQyIgPiY2CitERlRfTFdSX01PREVMPWBlY2hvICIkY2ZfbGlzdF9tb2RlbHMiIHwgJEFXSyAne3ByaW50ICQxfSdgCitlY2hvICIkYXNfbWU6NTA4OTogcmVzdWx0OiAkREZUX0xXUl9NT0RFTCIgPiY1CitlY2hvICIke0VDSE9fVH0kREZUX0xXUl9NT0RFTCIgPiY2CisKK0RGVF9VUFJfTU9ERUw9YGVjaG8gIiRERlRfTFdSX01PREVMIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworVElDU19OQU1FPXRpYworCitUSU5GT19OQU1FPXRpbmZvCisKK0xJQl9OQU1FPW5jdXJzZXMKKworTElCX0RJUj0uLi9saWIKK0xJQl8yTkQ9Li4vLi4vbGliCisKK2VjaG8gIiRhc19tZTo1MTAzOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBoYXZlIGEgbGlicmFyeS1wcmVmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBoYXZlIGEgbGlicmFyeS1wcmVmaXguLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGliLXByZWZpeCBvciAtLXdpdGhvdXQtbGliLXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbGliX3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9saWJfcHJlZml4IgorICB3aXRoX2xpYl9wcmVmaXg9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9saWJfcHJlZml4PWF1dG8KK2ZpOworZWNobyAiJGFzX21lOjUxMTM6IHJlc3VsdDogJHdpdGhfbGliX3ByZWZpeCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9saWJfcHJlZml4IiA+JjYKKworaWYgdGVzdCAkd2l0aF9saWJfcHJlZml4ID0gYXV0bwordGhlbgorCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoT1MvMip8b3MyKikKKwkJTElCX1BSRUZJWD0nJworCQk7OworCSgqKQlMSUJfUFJFRklYPSdsaWInCisJCTs7CisJZXNhYworY2ZfcHJlZml4PSRMSUJfUFJFRklYCisKK2VsaWYgdGVzdCAkd2l0aF9saWJfcHJlZml4ID0gbm8KK3RoZW4KKwlMSUJfUFJFRklYPQorZWxzZQorCUxJQl9QUkVGSVg9JHdpdGhfbGliX3ByZWZpeAorZmkKKworTElCX1NVRkZJWD0KKworCWVjaG8gIiRhc19tZTo1MTM3OiBjaGVja2luZyBmb3IgUEFUSCBzZXBhcmF0b3IiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgUEFUSCBzZXBhcmF0b3IuLi4gJEVDSE9fQyIgPiY2CisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkob3MyKikJUEFUSF9TRVBBUkFUT1I9JzsnICA7OworCSgqKQkke1BBVEhfU0VQQVJBVE9SOj0nOid9ICA7OworCWVzYWMKKworCWVjaG8gIiRhc19tZTo1MTQ0OiByZXN1bHQ6ICRQQVRIX1NFUEFSQVRPUiIgPiY1CitlY2hvICIke0VDSE9fVH0kUEFUSF9TRVBBUkFUT1IiID4mNgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2VjaG8gIiRhc19tZTo1MTQ5OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBhIHNlcGFyYXRlIHRlcm1pbmZvIGxpYnJhcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBhIHNlcGFyYXRlIHRlcm1pbmZvIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdGVybWxpYiBvciAtLXdpdGhvdXQtdGVybWxpYiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdGVybWxpYitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF90ZXJtbGliIgorICB3aXRoX3Rlcm1saWI9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF90ZXJtbGliPW5vCitmaTsKK2VjaG8gIiRhc19tZTo1MTU5OiByZXN1bHQ6ICR3aXRoX3Rlcm1saWIiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfdGVybWxpYiIgPiY2CisKK2VjaG8gIiRhc19tZTo1MTYyOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCBhIHNlcGFyYXRlIHRpYyBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgYSBzZXBhcmF0ZSB0aWMgbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC10aWNsaWIgb3IgLS13aXRob3V0LXRpY2xpYiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdGljbGliK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3RpY2xpYiIKKyAgd2l0aF90aWNsaWI9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF90aWNsaWI9bm8KK2ZpOworZWNobyAiJGFzX21lOjUxNzI6IHJlc3VsdDogJHdpdGhfdGljbGliIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3RpY2xpYiIgPiY2CisKKyMjIyBDaGVja3MgZm9yIHNwZWNpYWwgbGlicmFyaWVzLCBtdXN0IGJlIGRvbmUgdXAtZnJvbnQuCitTSExJQl9MSVNUPSIiCisKK2VjaG8gIiRhc19tZTo1MTc4OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggdGhlIEdQTSBtb3VzZSBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHRoZSBHUE0gbW91c2UgbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1ncG0gb3IgLS13aXRob3V0LWdwbSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZ3BtK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2dwbSIKKyAgd2l0aF9ncG09JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9ncG09bWF5YmUKK2ZpOworZWNobyAiJGFzX21lOjUxODg6IHJlc3VsdDogJHdpdGhfZ3BtIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2dwbSIgPiY2CisKK2lmIHRlc3QgIiR3aXRoX2dwbSIgIT0gbm8gOyB0aGVuCisJZWNobyAiJGFzX21lOjUxOTI6IGNoZWNraW5nIGZvciBncG0uaCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBncG0uaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2dwbV9oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTE5OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8Z3BtLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjUyMDI6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjUyMDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgYWNfY3ZfaGVhZGVyX2dwbV9oPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX2dwbV9oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NTIyNzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX2dwbV9oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfZ3BtX2giID4mNgoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2dwbV9oID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfR1BNX0ggMQorRU9GCisKKwkJaWYgdGVzdCAiJHdpdGhfZ3BtIiAhPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ3BtIiAhPSBtYXliZSA7IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYXNzdW1pbmcgd2UgcmVhbGx5IGhhdmUgR1BNIGxpYnJhcnkiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1MjM4OiB0ZXN0aW5nIGFzc3VtaW5nIHdlIHJlYWxseSBoYXZlIEdQTSBsaWJyYXJ5IC4uLiIgMT4mNQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQkdQTSAxCitFT0YKKworCQllbHNlCisJCQllY2hvICIkYXNfbWU6NTI0NTogY2hlY2tpbmcgZm9yIEdwbV9PcGVuIGluIC1sZ3BtIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEdwbV9PcGVuIGluIC1sZ3BtLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZ3BtX0dwbV9PcGVuK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZ3BtICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTI1MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgR3BtX09wZW4gKCk7CitpbnQKK21haW4gKCkKK3sKK0dwbV9PcGVuICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTI3MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTI3NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUyNzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MjgxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2dwbV9HcG1fT3Blbj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2dwbV9HcG1fT3Blbj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6NTI5MjogcmVzdWx0OiAkYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZ3BtX0dwbV9PcGVuID0geWVzOyB0aGVuCisgIDoKK2Vsc2UKKworCQkJCXsgeyBlY2hvICIkYXNfbWU6NTI5ODogZXJyb3I6IENhbm5vdCBsaW5rIHdpdGggR1BNIGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGxpbmsgd2l0aCBHUE0gbGlicmFyeSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCQlmaQorCQl3aXRoX2dwbT15ZXMKKworZmkKKworZWxzZQorCisJCXRlc3QgIiR3aXRoX2dwbSIgIT0gbWF5YmUgJiYgeyBlY2hvICIkYXNfbWU6NTMwODogV0FSTklORzogQ2Fubm90IGZpbmQgR1BNIGhlYWRlciIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IENhbm5vdCBmaW5kIEdQTSBoZWFkZXIiID4mMjt9CisJCXdpdGhfZ3BtPW5vCisKK2ZpCisKK2ZpCisKK2lmIHRlc3QgIiR3aXRoX2dwbSIgIT0gbm8gOyB0aGVuCisJZWNobyAiJGFzX21lOjUzMTc6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxvYWQgR1BNIGR5bmFtaWNhbGx5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbG9hZCBHUE0gZHluYW1pY2FsbHkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGxzeW0gb3IgLS13aXRob3V0LWRsc3ltIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kbHN5bStzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9kbHN5bSIKKyAgd2l0aF9kbHN5bT0kd2l0aHZhbAorZWxzZQorICB3aXRoX2Rsc3ltPXllcworZmk7CisJZWNobyAiJGFzX21lOjUzMjc6IHJlc3VsdDogJHdpdGhfZGxzeW0iID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZGxzeW0iID4mNgorCWlmIHRlc3QgIngkd2l0aF9kbHN5bSIgPSB4eWVzIDsgdGhlbgorCitjZl9oYXZlX2Rsc3ltPW5vCitlY2hvICIkYXNfbWU6NTMzMjogY2hlY2tpbmcgZm9yIGRsc3ltIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRsc3ltLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2Rsc3ltK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTMzOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBkbHN5bSAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBkbHN5bSAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfZGxzeW0pIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2Rsc3ltKQorY2hva2UgbWUKKyNlbHNlCitmID0gZGxzeW07IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTM2OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTM3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUzNzU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1Mzc4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19kbHN5bT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19kbHN5bT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NTM4ODogcmVzdWx0OiAkYWNfY3ZfZnVuY19kbHN5bSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19kbHN5bSIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX2Rsc3ltID0geWVzOyB0aGVuCisgIGNmX2hhdmVfZGxzeW09eWVzCitlbHNlCisKK2NmX2hhdmVfbGliZGw9bm8KK2VjaG8gIiRhc19tZTo1Mzk1OiBjaGVja2luZyBmb3IgZGxzeW0gaW4gLWxkbCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkbHN5bSBpbiAtbGRsLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZGxfZGxzeW0rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkbCAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU0MDMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGRsc3ltICgpOworaW50CittYWluICgpCit7CitkbHN5bSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU0MjI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU0MjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1NDI4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTQzMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9kbF9kbHN5bT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2RsX2Rsc3ltPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo1NDQyOiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxzeW0iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kbF9kbHN5bSIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZGxfZGxzeW0gPSB5ZXM7IHRoZW4KKworCWNmX2hhdmVfZGxzeW09eWVzCisJY2ZfaGF2ZV9saWJkbD15ZXMKK2ZpCisKK2ZpCisKK2lmIHRlc3QgIiRjZl9oYXZlX2Rsc3ltIiA9IHllcyA7IHRoZW4KKwl0ZXN0ICIkY2ZfaGF2ZV9saWJkbCIgPSB5ZXMgJiYKK2NmX2FkZF9saWJzPSItbGRsIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwllY2hvICIkYXNfbWU6NTQ3MDogY2hlY2tpbmcgd2hldGhlciBhYmxlIHRvIGxpbmsgdG8gZGwqKCkgZnVuY3Rpb25zIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBhYmxlIHRvIGxpbmsgdG8gZGwqKCkgZnVuY3Rpb25zLi4uICRFQ0hPX0MiID4mNgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTQ3MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8ZGxmY24uaD4KK2ludAorbWFpbiAoKQoreworCisJCXZvaWQgKm9iajsKKwkJaWYgKChvYmogPSBkbG9wZW4oImZpbGVuYW1lIiwgMCkpICE9IDApIHsKKwkJCWlmIChkbHN5bShvYmosICJzeW1ib2xuYW1lIikgPT0gMCkgeworCQkJZGxjbG9zZShvYmopOworCQkJfQorCQl9CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NDkxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NDk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTQ5NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU1MDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQkRMIDEKK0VPRgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCQl7IHsgZWNobyAiJGFzX21lOjU1MTE6IGVycm9yOiBDYW5ub3QgbGluayB0ZXN0IHByb2dyYW0gZm9yIGxpYmRsIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IENhbm5vdCBsaW5rIHRlc3QgcHJvZ3JhbSBmb3IgbGliZGwiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJZWNobyAiJGFzX21lOjU1MTY6IHJlc3VsdDogb2siID4mNQorZWNobyAiJHtFQ0hPX1R9b2siID4mNgorZWxzZQorCXsgeyBlY2hvICIkYXNfbWU6NTUxOTogZXJyb3I6IENhbm5vdCBmaW5kIGRsc3ltIGZ1bmN0aW9uIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IENhbm5vdCBmaW5kIGRsc3ltIGZ1bmN0aW9uIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCisJCWlmIHRlc3QgIngkd2l0aF9ncG0iICE9IHh5ZXMgOyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFzc3VtaW5nIHNvbmFtZSBmb3IgZ3BtIGlzICR3aXRoX2dwbSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjU1Mjc6IHRlc3RpbmcgYXNzdW1pbmcgc29uYW1lIGZvciBncG0gaXMgJHdpdGhfZ3BtIC4uLiIgMT4mNQorCisJCQljZl9jdl9ncG1fc29uYW1lPSIkd2l0aF9ncG0iCisJCWVsc2UKKworZWNobyAiJGFzX21lOjU1MzI6IGNoZWNraW5nIGZvciBzb25hbWUgb2YgZ3BtIGxpYnJhcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc29uYW1lIG9mIGdwbSBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9ncG1fc29uYW1lK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X2dwbV9zb25hbWU9dW5rbm93bgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzIDsgdGhlbgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8Q0ZfRU9GCisjaW5jbHVkZSA8Z3BtLmg+CitpbnQgbWFpbigpCit7CitpZiAoR3BtX09wZW4oMCwwKSkgR3BtX0Nsb3NlKCk7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgwKTsKK30KK0NGX0VPRgorY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworY2ZfYWRkX2xpYnM9Ii1sZ3BtIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwlpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NTY2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NTY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gOyB0aGVuCisJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU1NzE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU1NzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA7IHRoZW4KKwkJCWNmX2N2X2dwbV9zb25hbWU9YGxkZCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MsXi4qLywsJyAtZSAncywgLiokLCwnIHwgZmdyZXAgbGliZ3BtLmAKKwkJCXRlc3QgLXogIiRjZl9jdl9ncG1fc29uYW1lIiAmJiBjZl9jdl9ncG1fc29uYW1lPXVua25vd24KKwkJZmkKKwlmaQorcm0gLXJmIGNvbmZ0ZXN0KgorTElCUz0iJGNmX3NhdmVfTElCUyIKK2ZpCisKK2ZpCitlY2hvICIkYXNfbWU6NTU4NTogcmVzdWx0OiAkY2ZfY3ZfZ3BtX3NvbmFtZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ3BtX3NvbmFtZSIgPiY2CisKKwkJZmkKKwkJdGVzdCAiJGNmX2N2X2dwbV9zb25hbWUiICE9ICJ1bmtub3duIiAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBMSUJHUE1fU09OQU1FICIkY2ZfY3ZfZ3BtX3NvbmFtZSIKK0VPRgorCisJCVNITElCX0xJU1Q9Ii1sZGwgJFNITElCX0xJU1QiCisJZWxzZQorCQlTSExJQl9MSVNUPSItbGdwbSAkU0hMSUJfTElTVCIKKworY2ZfYWRkX2xpYnM9Ii1sZ3BtIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRURVNUX0xJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK1RFU1RfTElCUz0iJGNmX2FkZF9saWJzIgorCisJZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9MSUJHUE0gMQorRU9GCisKK2VjaG8gIiRhc19tZTo1NjIwOiBjaGVja2luZyBmb3IgR3BtX1dnZXRjaCBpbiAtbGdwbSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBHcG1fV2dldGNoIGluIC1sZ3BtLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZ3BtX0dwbV9XZ2V0Y2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxncG0gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA1NjI4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBHcG1fV2dldGNoICgpOworaW50CittYWluICgpCit7CitHcG1fV2dldGNoICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTY0NzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTY1MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2NTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NjU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2dwbV9HcG1fV2dldGNoPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZ3BtX0dwbV9XZ2V0Y2g9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjU2Njc6IHJlc3VsdDogJGFjX2N2X2xpYl9ncG1fR3BtX1dnZXRjaCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2dwbV9HcG1fV2dldGNoIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ncG1fR3BtX1dnZXRjaCA9IHllczsgdGhlbgorCitlY2hvICIkYXNfbWU6NTY3MTogY2hlY2tpbmcgaWYgR1BNIGlzIHdlYWtseSBib3VuZCB0byBjdXJzZXMgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdQTSBpcyB3ZWFrbHkgYm91bmQgdG8gY3Vyc2VzIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2NoZWNrX2dwbV93Z2V0Y2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD11bmtub3duCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXMgOyB0aGVuCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PENGX0VPRgorI2luY2x1ZGUgPGdwbS5oPgoraW50IG1haW4oKQoreworCUdwbV9XZ2V0Y2goKTsKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworfQorQ0ZfRU9GCisKKwljZl9zYXZlX0xJQlM9IiRMSUJTIgorCSMgVGhpcyBvbmx5IHdvcmtzIGlmIHdlIGNhbiBsb29rIGF0IHRoZSBzeW1ib2wgdGFibGUuICBJZiBhIHNoYXJlZAorCSMgbGlicmFyeSBpcyBzdHJpcHBlZCBmb3IgaW5zdGFsbCwgd2UgY2Fubm90IHVzZSB0aGF0LiAgU28gd2UncmUgZm9yY2VkCisJIyB0byByZWx5IG9uIHRoZSBzdGF0aWMgbGlicmFyeSwgbm90aW5nIHRoYXQgc29tZSBwYWNrYWdlcnMgbWF5IG5vdAorCSMgaW5jbHVkZSBpdC4KKwlMSUJTPSItc3RhdGljIC1sZ3BtIC1keW5hbWljICRMSUJTIgorCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2OTU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU2OTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA7IHRoZW4KKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTcwMDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTcwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9IDsgdGhlbgorCQkJY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD1gbm0gY29uZnRlc3QkYWNfZXhlZXh0IHwgZWdyZXAgJ1w8d2dldGNoXD4nIHwgZWdyZXAgJ1w8W3ZWd1ddXD4nYAorCQkJdGVzdCAtbiAiJGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2giICYmIGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2g9eWVzCisJCQl0ZXN0IC16ICIkY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaCIgJiYgY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaD1ubworCQlmaQorCWZpCisJcm0gLXJmIGNvbmZ0ZXN0KgorCUxJQlM9IiRjZl9zYXZlX0xJQlMiCitmaQorCitmaQorZWNobyAiJGFzX21lOjU3MTU6IHJlc3VsdDogJGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2giID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2NoZWNrX2dwbV93Z2V0Y2giID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfY2hlY2tfZ3BtX3dnZXRjaCIgIT0geWVzIDsgdGhlbgorCXsgZWNobyAiJGFzX21lOjU3MTk6IFdBUk5JTkc6IEdQTSBsaWJyYXJ5IGlzIGFscmVhZHkgbGlua2VkIHdpdGggY3Vyc2VzIC0gcmVhZCB0aGUgRkFRIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogR1BNIGxpYnJhcnkgaXMgYWxyZWFkeSBsaW5rZWQgd2l0aCBjdXJzZXMgLSByZWFkIHRoZSBGQVEiID4mMjt9CitmaQorCitmaQorCitmaQorCisjIG5vdCBldmVyeW9uZSBoYXMgInRlc3QgLWMiCitpZiB0ZXN0IC1jIC9kZXYvc3lzbW91c2UgMj4vZGV2L251bGwgOyB0aGVuCitlY2hvICIkYXNfbWU6NTcyOTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHN5c21vdXNlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHN5c21vdXNlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c21vdXNlIG9yIC0td2l0aG91dC1zeXNtb3VzZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3lzbW91c2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfc3lzbW91c2UiCisgIGNmX3dpdGhfc3lzbW91c2U9JHdpdGh2YWwKK2Vsc2UKKyAgY2Zfd2l0aF9zeXNtb3VzZT1tYXliZQorZmk7CisJaWYgdGVzdCAiJGNmX3dpdGhfc3lzbW91c2UiICE9IG5vIDsgdGhlbgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTc0MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxvc3JlbGRhdGUuaD4KKyNpZiAoX19GcmVlQlNEX3ZlcnNpb24gPj0gNDAwMDE3KQorI2luY2x1ZGUgPHN5cy9jb25zaW8uaD4KKyNpbmNsdWRlIDxzeXMvZmJpby5oPgorI2Vsc2UKKyNpbmNsdWRlIDxtYWNoaW5lL2NvbnNvbGUuaD4KKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKworCXN0cnVjdCBtb3VzZV9pbmZvIHRoZV9tb3VzZTsKKwlpb2N0bCgwLCBDT05TX01PVVNFQ1RMLCAmdGhlX21vdXNlKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NzY0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NzY3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU3NzA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NzczOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2Zfd2l0aF9zeXNtb3VzZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfd2l0aF9zeXNtb3VzZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCWZpCitlY2hvICIkYXNfbWU6NTc4MzogcmVzdWx0OiAkY2Zfd2l0aF9zeXNtb3VzZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2Zfd2l0aF9zeXNtb3VzZSIgPiY2Cit0ZXN0ICIkY2Zfd2l0aF9zeXNtb3VzZSIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9TWVNNT1VTRSAxCitFT0YKKworZmkKKworaWYgdGVzdCBYIiRDQ19HX09QVCIgPSBYIiIgOyB0aGVuCisJQ0NfR19PUFQ9Jy1nJworCXRlc3QgLW4gIiRHQ0MiICYmIHRlc3QgIngke2FjX2N2X3Byb2dfY2NfZ30iICE9IHh5ZXMgJiYgQ0NfR19PUFQ9JycKK2ZpCisKK2lmIHRlc3QgWCIkQ1hYX0dfT1BUIiA9IFgiIiA7IHRoZW4KKwlDWFhfR19PUFQ9Jy1nJworCXRlc3QgLW4gIiRHWFgiICYmIHRlc3QgIngke2FjX2N2X3Byb2dfY3h4X2d9IiAhPSB4eWVzICYmIENYWF9HX09QVD0nJworZmkKKworZWNobyAiJGFzX21lOjU4MDI6IGNoZWNraW5nIGZvciBkZWZhdWx0IGxvYWRlciBmbGFncyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkZWZhdWx0IGxvYWRlciBmbGFncy4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgJERGVF9MV1JfTU9ERUwgaW4KKyhsaWJ0b29sKSBMRF9NT0RFTD0nJyAgIDs7Cisobm9ybWFsKSAgTERfTU9ERUw9JycgICA7OworKGRlYnVnKSAgIExEX01PREVMPSRDQ19HX09QVCA7OworKHByb2ZpbGUpIExEX01PREVMPSctcGcnOzsKKyhzaGFyZWQpICBMRF9NT0RFTD0nJyAgIDs7Citlc2FjCitlY2hvICIkYXNfbWU6NTgxMTogcmVzdWx0OiAkTERfTU9ERUwiID4mNQorZWNobyAiJHtFQ0hPX1R9JExEX01PREVMIiA+JjYKKworY2FzZSAkREZUX0xXUl9NT0RFTCBpbgorKHNoYXJlZCkKKworZWNobyAiJGFzX21lOjU4MTc6IGNoZWNraW5nIGlmIHJwYXRoIG9wdGlvbiBzaG91bGQgYmUgdXNlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJwYXRoIG9wdGlvbiBzaG91bGQgYmUgdXNlZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJwYXRoIG9yIC0tZGlzYWJsZS1ycGF0aCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ycGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcnBhdGgiCisgIGNmX2N2X2VuYWJsZV9ycGF0aD0kZW5hYmxldmFsCitlbHNlCisgIGNmX2N2X2VuYWJsZV9ycGF0aD1ubworZmk7CitlY2hvICIkYXNfbWU6NTgyNzogcmVzdWx0OiAkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9lbmFibGVfcnBhdGgiID4mNgorCitlY2hvICIkYXNfbWU6NTgzMDogY2hlY2tpbmcgaWYgc2hhcmVkIGxpYnJhcmllcyBzaG91bGQgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGwiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBzaGFyZWQgbGlicmFyaWVzIHNob3VsZCBiZSByZWxpbmtlZCBkdXJpbmcgaW5zdGFsbC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlbGluayBvciAtLWRpc2FibGUtcmVsaW5rIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3JlbGluaytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcmVsaW5rIgorICBjZl9jdl9kb19yZWxpbms9JGVuYWJsZXZhbAorZWxzZQorICBjZl9jdl9kb19yZWxpbms9eWVzCitmaTsKK2VjaG8gIiRhc19tZTo1ODQwOiByZXN1bHQ6ICRjZl9jdl9kb19yZWxpbmsiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2RvX3JlbGluayIgPiY2CisJOzsKK2VzYWMKKworIyB3ZSB3aWxsIGJ1aWxkIGxpYnJhcmllcyBvbmUtbGV2ZWwgZG93bi4KK3JlbF9idWlsZGRpcj0uLgorCitMRF9SUEFUSF9PUFQ9CitlY2hvICIkYXNfbWU6NTg0OTogY2hlY2tpbmcgZm9yIGFuIHJwYXRoIG9wdGlvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhbiBycGF0aCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2CitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKGlyaXgqKQorCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJZWxzZQorCQlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJZmkKKwk7OworKGxpbnV4KnxnbnUqfGsqYnNkKi1nbnUpCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKG9wZW5ic2RbMi05XS4qfG1pcmJzZCopCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKGRyYWdvbmZseSp8ZnJlZWJzZCopCisJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCTs7CisobmV0YnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7Cisob3NmKnxtbHMrKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhzb2xhcmlzMiopCisJTERfUlBBVEhfT1BUPSItUiIKKwk7OworKCopCisJOzsKK2VzYWMKK2VjaG8gIiRhc19tZTo1ODgwOiByZXN1bHQ6ICRMRF9SUEFUSF9PUFQiID4mNQorZWNobyAiJHtFQ0hPX1R9JExEX1JQQVRIX09QVCIgPiY2CisKK2Nhc2UgIngkTERfUlBBVEhfT1BUIiBpbgorKHgtUiopCisJZWNobyAiJGFzX21lOjU4ODU6IGNoZWNraW5nIGlmIHdlIG5lZWQgYSBzcGFjZSBhZnRlciBycGF0aCBvcHRpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBuZWVkIGEgc3BhY2UgYWZ0ZXIgcnBhdGggb3B0aW9uLi4uICRFQ0hPX0MiID4mNgorCWNmX3NhdmVfTElCUz0iJExJQlMiCisKK2NmX2FkZF9saWJzPSIke0xEX1JQQVRIX09QVH0kbGliZGlyIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU5MDYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTkxODogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTkyMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU5MjQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1OTI3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcnBhdGhfc3BhY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcnBhdGhfc3BhY2U9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisJZWNobyAiJGFzX21lOjU5Mzc6IHJlc3VsdDogJGNmX3JwYXRoX3NwYWNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9ycGF0aF9zcGFjZSIgPiY2CisJdGVzdCAiJGNmX3JwYXRoX3NwYWNlIiA9IHllcyAmJiBMRF9SUEFUSF9PUFQ9IiRMRF9SUEFUSF9PUFQgIgorCTs7Citlc2FjCisKKwlSTV9TSEFSRURfT1BUUz0KKwlMT0NBTF9MREZMQUdTPQorCUxPQ0FMX0xERkxBR1MyPQorCUxEX1NIQVJFRF9PUFRTPQorCUlOU1RBTExfTElCPSItbSA2NDQiCisJOiAke3JlbF9idWlsZGRpcjo9Ln0KKworCXNobGliZGlyPSRsaWJkaXIKKworCU1BS0VfRExMUz0iIyIKKworCWNmX2N2X2RvX3N5bWxpbmtzPW5vCisJY2ZfbGRfcnBhdGhfb3B0PQorCXRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzICYmIGNmX2xkX3JwYXRoX29wdD0iJExEX1JQQVRIX09QVCIKKworCWVjaG8gIiRhc19tZTo1OTU4OiBjaGVja2luZyBpZiByZWxlYXNlL2FiaSB2ZXJzaW9uIHNob3VsZCBiZSB1c2VkIGZvciBzaGFyZWQgbGlicyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJlbGVhc2UvYWJpIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHNoYXJlZCBsaWJzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXNobGliLXZlcnNpb24gb3IgLS13aXRob3V0LXNobGliLXZlcnNpb24gd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3NobGliX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfc2hsaWJfdmVyc2lvbiIKKyAgdGVzdCAteiAiJHdpdGh2YWwiICYmIHdpdGh2YWw9YXV0bworCWNhc2UgJHdpdGh2YWwgaW4KKwkoeWVzKQorCQljZl9jdl9zaGxpYl92ZXJzaW9uPWF1dG8KKwkJOzsKKwkocmVsfGFiaXxhdXRvfG5vKQorCQljZl9jdl9zaGxpYl92ZXJzaW9uPSR3aXRodmFsCisJCTs7CisJKCopCisJCXsgeyBlY2hvICIkYXNfbWU6NTk3MzogZXJyb3I6IG9wdGlvbiB2YWx1ZSBtdXN0IGJlIG9uZSBvZjogcmVsLCBhYmksIGF1dG8gb3Igbm8iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogb3B0aW9uIHZhbHVlIG11c3QgYmUgb25lIG9mOiByZWwsIGFiaSwgYXV0byBvciBubyIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCQk7OworCWVzYWMKKworZWxzZQorICBjZl9jdl9zaGxpYl92ZXJzaW9uPWF1dG8KK2ZpOworCWVjaG8gIiRhc19tZTo1OTgyOiByZXN1bHQ6ICRjZl9jdl9zaGxpYl92ZXJzaW9uIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9zaGxpYl92ZXJzaW9uIiA+JjYKKworCWNmX2N2X3JtX3NvX2xvY3M9bm8KKwljZl90cnlfY2ZsYWdzPQorCisJIyBTb21lIGxlc3MtY2FwYWJsZSBwb3J0cyBvZiBnY2Mgc3VwcG9ydCBvbmx5IC1mcGljCisJQ0NfU0hBUkVEX09QVFM9CisJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwl0aGVuCisJCWVjaG8gIiRhc19tZTo1OTkyOiBjaGVja2luZyB3aGljaCAkQ0Mgb3B0aW9uIHRvIHVzZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoaWNoICRDQyBvcHRpb24gdG8gdXNlLi4uICRFQ0hPX0MiID4mNgorCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJZm9yIENDX1NIQVJFRF9PUFRTIGluIC1mUElDIC1mcGljICcnCisJCWRvCisJCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkQ0NfU0hBUkVEX09QVFMiCisJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU5OTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK2ludCB4ID0gMQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MDExOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2MDE0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjYwMTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2MDIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQlkb25lCisJCWVjaG8gIiRhc19tZTo2MDI5OiByZXN1bHQ6ICRDQ19TSEFSRURfT1BUUyIgPiY1CitlY2hvICIke0VDSE9fVH0kQ0NfU0hBUkVEX09QVFMiID4mNgorCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwlmaQorCisJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD1ubworCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoYWl4NC4zLTkqfGFpeFs1LTddKikKKwkJaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPSctV2wsLWJydGwnCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1XbCwtYnJ0bCAtV2wsLWJsaWJwYXRoOiR7UlBBVEhfTElTVH06L3Vzci9saWIgLW8gJEAnCisJCWVsc2UKKwkJCUNDX1NIQVJFRF9PUFRTPSctYnJ0bCcKKwkJCSMgYXMgd2VsbCBhcyAnLXFwaWM9bGFyZ2UgLUcnIG9yIHBlcmhhcHMgIi1iTTpTUkUgLWJub2VudHJ5IC1iZXhwYWxsIgorCQkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gLUcgLVdsLC1icnRsIC1XbCwtYmxpYnBhdGg6JHtSUEFUSF9MSVNUfTovdXNyL2xpYiAtbyAkQCcKKwkJZmkKKwkJOzsKKwkoYmVvcyopCisJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9ICR7Q0ZMQUdTfSAtbyAkQCAtWGxpbmtlciAtc29uYW1lPWBiYXNlbmFtZSAkQGAgLW5vc3RhcnQgLWUgMCcKKwkJOzsKKwkoY3lnd2luKikKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JFNIRUxMJyAnJHJlbF9idWlsZGRpcicvbWtfc2hhcmVkX2xpYi5zaCAkQCAke0NDfSAke0NGTEFHU30nCisJCVJNX1NIQVJFRF9PUFRTPSIkUk1fU0hBUkVEX09QVFMgJHJlbF9idWlsZGRpci9ta19zaGFyZWRfbGliLnNoICouZGxsLmEiCisJCWNmX2N2X3NobGliX3ZlcnNpb249Y3lnZGxsCisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9Y3lnZGxsCisJCXNobGliZGlyPSRiaW5kaXIKKwkJTUFLRV9ETExTPQorCQljYXQgPm1rX3NoYXJlZF9saWIuc2ggPDwtQ0ZfRU9GCisJCSMhJFNIRUxMCisJCVNIQVJFRF9MSUI9XCQxCisJCUlNUE9SVF9MSUI9XGBlY2hvICJcJDEiIHwgc2VkIC1lICdzL2N5Zy9saWIvJyAtZSAncy9bMC05XSpcLmRsbCQvLmRsbC5hLydcYAorCQlzaGlmdAorCQljYXQgPDwtRU9GCisJCUxpbmtpbmcgc2hhcmVkIGxpYnJhcnkKKwkJKiogU0hBUkVEX0xJQiBcJFNIQVJFRF9MSUIKKwkJKiogSU1QT1JUX0xJQiBcJElNUE9SVF9MSUIKK0VPRgorCQlleGVjIFwkKiAtc2hhcmVkIC1XbCwtLW91dC1pbXBsaWI9XCR7SU1QT1JUX0xJQn0gLVdsLC0tZXhwb3J0LWFsbC1zeW1ib2xzIC1vIFwke1NIQVJFRF9MSUJ9CitDRl9FT0YKKwkJY2htb2QgK3ggbWtfc2hhcmVkX2xpYi5zaAorCQk7OworCShtc3lzKikKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JFNIRUxMJyAnJHJlbF9idWlsZGRpcicvbWtfc2hhcmVkX2xpYi5zaCAkQCAke0NDfSAke0NGTEFHU30nCisJCVJNX1NIQVJFRF9PUFRTPSIkUk1fU0hBUkVEX09QVFMgJHJlbF9idWlsZGRpci9ta19zaGFyZWRfbGliLnNoICouZGxsLmEiCisJCWNmX2N2X3NobGliX3ZlcnNpb249bXN5c2RsbAorCQljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PW1zeXNkbGwKKwkJc2hsaWJkaXI9JGJpbmRpcgorCQlNQUtFX0RMTFM9CisJCWNhdCA+bWtfc2hhcmVkX2xpYi5zaCA8PC1DRl9FT0YKKwkJIyEkU0hFTEwKKwkJU0hBUkVEX0xJQj1cJDEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlwkMSIgfCBzZWQgLWUgJ3MvbXN5cy0vbGliLycgLWUgJ3MvWzAtOV0qXC5kbGwkLy5kbGwuYS8nXGAKKwkJc2hpZnQKKwkJY2F0IDw8LUVPRgorCQlMaW5raW5nIHNoYXJlZCBsaWJyYXJ5CisJCSoqIFNIQVJFRF9MSUIgXCRTSEFSRURfTElCCisJCSoqIElNUE9SVF9MSUIgXCRJTVBPUlRfTElCCitFT0YKKwkJZXhlYyBcJCogLXNoYXJlZCAtV2wsLS1vdXQtaW1wbGliPVwke0lNUE9SVF9MSUJ9IC1XbCwtLWV4cG9ydC1hbGwtc3ltYm9scyAtbyBcJHtTSEFSRURfTElCfQorQ0ZfRU9GCisJCWNobW9kICt4IG1rX3NoYXJlZF9saWIuc2gKKwkJOzsKKwkoZGFyd2luKikKKwkJY2ZfdHJ5X2NmbGFncz0ibm8tY3BwLXByZWNvbXAiCisJCUNDX1NIQVJFRF9PUFRTPSItZHluYW1pYyIKKwkJTUtfU0hBUkVEX0xJQj0nJHtDQ30gJHtDRkxBR1N9IC1keW5hbWljbGliIC1pbnN0YWxsX25hbWUgJHtsaWJkaXJ9L2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAke0FCSV9WRVJTSU9OfSAtY3VycmVudF92ZXJzaW9uICR7QUJJX1ZFUlNJT059IC1vICRAJworCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249YWJpCisJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9eWVzCisJCWVjaG8gIiRhc19tZTo2MTAwOiBjaGVja2luZyBpZiBsZCAtc2VhcmNoX3BhdGhzX2ZpcnN0IHdvcmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbGQgLXNlYXJjaF9wYXRoc19maXJzdCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3Qrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCQkJY2Zfc2F2ZV9MREZMQUdTPSRMREZMQUdTCisJCQlMREZMQUdTPSIkTERGTEFHUyAtV2wsLXNlYXJjaF9wYXRoc19maXJzdCIKKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjEwOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworaW50IGk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MTIxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2MTI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjEyNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjYxMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbGRmbGFnc19zZWFyY2hfcGF0aHNfZmlyc3Q9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkJTERGTEFHUz0kY2Zfc2F2ZV9MREZMQUdTCitmaQorZWNobyAiJGFzX21lOjYxNDE6IHJlc3VsdDogJGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9sZGZsYWdzX3NlYXJjaF9wYXRoc19maXJzdCIgPiY2CisJCWlmIHRlc3QgJGNmX2N2X2xkZmxhZ3Nfc2VhcmNoX3BhdGhzX2ZpcnN0ID0geWVzOyB0aGVuCisJCQlMREZMQUdTPSIkTERGTEFHUyAtV2wsLXNlYXJjaF9wYXRoc19maXJzdCIKKwkJZmkKKwkJOzsKKwkoaHB1eFs3LThdKikKKwkJIyBIUC1VWCA4LjA3IGxkIGxhY2tzICIrYiIgb3B0aW9uIHVzZWQgZm9yIGxpYmRpciBzZWFyY2gtbGlzdAorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPScrWicKKwkJZmkKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWIgLW8gJEAnCisJCUlOU1RBTExfTElCPSItbSA1NTUiCisJCTs7CisJKGhwdXgqKQorCQkjICh0ZXN0ZWQgd2l0aCBnY2MgMi43LjIgLS0gSSBkb24ndCBoYXZlIGM4OSkKKwkJaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwkJCUxEX1NIQVJFRF9PUFRTPSctWGxpbmtlciArYiAtWGxpbmtlciAke2xpYmRpcn0nCisJCWVsc2UKKwkJCUNDX1NIQVJFRF9PUFRTPScrWicKKwkJCUxEX1NIQVJFRF9PUFRTPSctV2wsK2IsJHtsaWJkaXJ9JworCQlmaQorCQlNS19TSEFSRURfTElCPScke0xEfSArYiAke2xpYmRpcn0gLWIgLW8gJEAnCisJCSMgSFAtVVggc2hhcmVkIGxpYnJhcmllcyBtdXN0IGJlIGV4ZWN1dGFibGUsIGFuZCBzaG91bGQgYmUKKwkJIyByZWFkb25seSB0byBleHBsb2l0IGEgcXVpcmsgaW4gdGhlIG1lbW9yeSBtYW5hZ2VyLgorCQlJTlNUQUxMX0xJQj0iLW0gNTU1IgorCQk7OworCShpbnRlcml4KikKKwkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCQlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KKwkJCWNmX3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwkJZWxzZQorCQkJY2Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lIGAnCisJCWZpCisJCUNDX1NIQVJFRF9PUFRTPQorCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1XbCwtcnBhdGgsJHtSUEFUSF9MSVNUfSAtV2wsLWgsJyRjZl9zaGFyZWRfc29uYW1lJyAtbyAnCisJCTs7CisJKGlyaXgqKQorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQkjIHRlc3RlZCB3aXRoIElSSVggNS4yIGFuZCAnY2MnLgorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPSctS1BJQycKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLXJkYXRhX3NoYXJlZCAtc29uYW1lIGBiYXNlbmFtZSAkQGAgLW8gJEAnCisJCWVsc2UKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1zaGFyZWQgLVdsLC1zb25hbWUsYGJhc2VuYW1lICRAYCAtbyAkQCcKKwkJZmkKKwkJY2ZfY3Zfcm1fc29fbG9jcz15ZXMKKwkJOzsKKwkobGludXgqfGdudSp8aypic2QqLWdudSkKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCisJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwllbHNlCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCisJZmkKKworCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJEAnCisJCTs7CisJKG1pbmd3KikKKwkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1taW5ndworCQljZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4PW1pbmd3CisJCXNobGliZGlyPSRiaW5kaXIKKwkJTUFLRV9ETExTPQorCQlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIiA7IHRoZW4KKwkJCUxPQ0FMX0xERkxBR1M9Ii1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJCUVYVFJBX0xERkxBR1M9Ii1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCAkRVhUUkFfTERGTEFHUyIKKwkJZmkKKwkJQ0NfU0hBUkVEX09QVFM9CisJCU1LX1NIQVJFRF9MSUI9JFNIRUxMJyAnJHJlbF9idWlsZGRpcicvbWtfc2hhcmVkX2xpYi5zaCAkQCAke0NDfSAke0NGTEFHU30nCisJCVJNX1NIQVJFRF9PUFRTPSIkUk1fU0hBUkVEX09QVFMgJHJlbF9idWlsZGRpci9ta19zaGFyZWRfbGliLnNoICouZGxsLmEiCisJCWNhdCA+bWtfc2hhcmVkX2xpYi5zaCA8PC1DRl9FT0YKKwkJIyEkU0hFTEwKKwkJU0hBUkVEX0xJQj1cJDEKKwkJSU1QT1JUX0xJQj1cYGVjaG8gIlwkMSIgfCBzZWQgLWUgJ3MvWzAtOV0qXC5kbGwkLy5kbGwuYS8nXGAKKwkJc2hpZnQKKwkJY2F0IDw8LUVPRgorCQlMaW5raW5nIHNoYXJlZCBsaWJyYXJ5CisJCSoqIFNIQVJFRF9MSUIgXCRTSEFSRURfTElCCisJCSoqIElNUE9SVF9MSUIgXCRJTVBPUlRfTElCCitFT0YKKwkJZXhlYyBcJCogLXNoYXJlZCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQsLS1vdXQtaW1wbGliPVwke0lNUE9SVF9MSUJ9IC1XbCwtLWV4cG9ydC1hbGwtc3ltYm9scyAtbyBcJHtTSEFSRURfTElCfQorQ0ZfRU9GCisJCWNobW9kICt4IG1rX3NoYXJlZF9saWIuc2gKKwkJOzsKKwkob3BlbmJzZFsyLTldLip8bWlyYnNkKikKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSIke0xEX1JQQVRIX09QVH1cJChMT0NBTF9MSUJESVIpIgorCQkJTE9DQUxfTERGTEFHUzI9IiRMT0NBTF9MREZMQUdTIgorCQlmaQorCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCQlDQ19TSEFSRURfT1BUUz0iJENDX1NIQVJFRF9PUFRTIC1EUElDIgorCisJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwllbHNlCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCisJZmkKKworCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLUJzaGFyZWFibGUsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJEAnCisJCTs7CisJKG50by1xbngqfG9wZW5ic2QqfGZyZWVic2RbMTJdLiopCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1Cc2hhcmVhYmxlIC1vICRAJworCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJCTs7CisJKGRyYWdvbmZseSp8ZnJlZWJzZCopCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCQoTE9DQUxfTElCRElSKSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIke2NmX2xkX3JwYXRoX29wdH1cJHtSUEFUSF9MSVNUfSAkTE9DQUxfTERGTEFHUyIKKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQlmaQorCisJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IHJlbDsgdGhlbgorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEAgLiR7UkVMX1ZFUlNJT059YC4ke0FCSV9WRVJTSU9OfScKKwllbHNlCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQGAnCisJZmkKKworCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnLC1zdGF0cywtbGMgLW8gJEAnCisJCTs7CisJKG5ldGJzZCopCisJCUNDX1NIQVJFRF9PUFRTPSIkQ0NfU0hBUkVEX09QVFMgLURQSUMiCisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiICYmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iJHtjZl9sZF9ycGF0aF9vcHR9XCQoTE9DQUxfTElCRElSKSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJCUVYVFJBX0xERkxBR1M9IiR7Y2ZfbGRfcnBhdGhfb3B0fVwke1JQQVRIX0xJU1R9ICRFWFRSQV9MREZMQUdTIgorCQkJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0bzsgdGhlbgorCQkJaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvOyB0aGVuCisJCQkJY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hYmkKKwkJCWVsc2UKKwkJCQljZl9jdl9zaGxpYl92ZXJzaW9uPXJlbAorCQkJZmkKKwkJCWZpCisKKwl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJaWYgdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gcmVsOyB0aGVuCisJCWNmX2N2X3NoYXJlZF9zb25hbWU9J2BiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059JworCWVsc2UKKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAYCcKKwlmaQorCisJCQlNS19TSEFSRURfTElCPScke0NDfSAke0NGTEFHU30gLXNoYXJlZCAtV2wsLXNvbmFtZSwnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRAJworCQllbHNlCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtV2wsLXNoYXJlZCAtV2wsLUJzaGFyZWFibGUgLW8gJEAnCisJCWZpCisJCTs7CisJKG9zZip8bWxzKyopCisJCSMgdGVzdGVkIHdpdGggT1NGLzEgVjMuMiBhbmQgJ2NjJworCQkjIHRlc3RlZCB3aXRoIE9TRi8xIFYzLjIgYW5kIGdjYyAyLjYuMyAoYnV0IHRoZSBjKysgZGVtbyBkaWRuJ3QKKwkJIyBsaW5rIHdpdGggc2hhcmVkIGxpYnMpLgorCQlNS19TSEFSRURfTElCPScke0xEfSAtc2V0X3ZlcnNpb24gJHtSRUxfVkVSU0lPTn06JHtBQklfVkVSU0lPTn0gLWV4cGVjdF91bnJlc29sdmVkICIqIiAtc2hhcmVkIC1zb25hbWUgYGJhc2VuYW1lICRAYCcKKwkJY2FzZSAkaG9zdF9vcyBpbgorCQkob3NmNCopCisJCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IC1tc3ltIgorCQkJOzsKKwkJZXNhYworCQlNS19TSEFSRURfTElCPSIke01LX1NIQVJFRF9MSUJ9IicgLW8gJEAnCisJCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiIDsgdGhlbgorCQkJTE9DQUxfTERGTEFHUz0iJHtMRF9SUEFUSF9PUFR9XCQoTE9DQUxfTElCRElSKSIKKwkJCUxPQ0FMX0xERkxBR1MyPSIkTE9DQUxfTERGTEFHUyIKKwkJZmkKKwkJY2ZfY3Zfcm1fc29fbG9jcz15ZXMKKwkJOzsKKwkoc2NvMy4ydjUqKSAgIyBhbHNvIHV3MiogYW5kIFVXNzogaG9wcyAxMy1BcHItOTgKKwkJIyB0ZXN0ZWQgd2l0aCBvc3I1LjAuNQorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPSctYmVsZiAtS1BJQycKKwkJZmkKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWR5IC1HIC1oIGBiYXNlbmFtZSAkQCAuJHtSRUxfVkVSU0lPTn1gLiR7QUJJX1ZFUlNJT059IC1vICRAJworCQlpZiB0ZXN0ICIkY2ZfY3ZfZW5hYmxlX3JwYXRoIiA9IHllcyA7IHRoZW4KKwkJCSMgb25seSB3YXkgaXMgdG8gc2V0IExEX1JVTl9QQVRIIGJ1dCBubyBzd2l0Y2ggZm9yIGl0CisJCQlSVU5fUEFUSD0kbGliZGlyCisJCWZpCisJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwkJTElOS19QUk9HUz0nTERfUlVOX1BBVEg9JHtsaWJkaXJ9JworCQlMSU5LX1RFU1RTPSdQd2Q9YHB3ZGA7TERfUlVOX1BBVEg9YGRpcm5hbWUgJCR7UHdkfWAvbGliJworCQk7OworCShzdW5vczQqKQorCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDQuMS4xIGFuZCBnY2MgMi43LjAKKwkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisJCQlDQ19TSEFSRURfT1BUUz0nLUtQSUMnCisJCWZpCisJCU1LX1NIQVJFRF9MSUI9JyR7TER9IC1hc3NlcnQgcHVyZS10ZXh0IC1vICRAJworCQl0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSBhdXRvICYmIGNmX2N2X3NobGliX3ZlcnNpb249cmVsCisJCTs7CisJKHNvbGFyaXMyKikKKwkJIyB0ZXN0ZWQgd2l0aCBTdW5PUyA1LjUuMSAoc29sYXJpcyAyLjUuMSkgYW5kIGdjYyAyLjcuMgorCQkjIHRlc3RlZCB3aXRoIFN1bk9TIDUuMTAgKHNvbGFyaXMgMTApIGFuZCBnY2MgMy40LjMKKwkJaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCIgOyB0aGVuCisJCQlMT0NBTF9MREZMQUdTPSItUiBcJChMT0NBTF9MSUJESVIpOlwke2xpYmRpcn0iCisJCQlMT0NBTF9MREZMQUdTMj0iJExPQ0FMX0xERkxBR1MiCisJCWZpCisJCWlmIHRlc3QgIiRjZl9jdl9lbmFibGVfcnBhdGgiID0geWVzIDsgdGhlbgorCQkJRVhUUkFfTERGTEFHUz0iLVIgXCR7bGliZGlyfSAkRVhUUkFfTERGTEFHUyIKKwkJZmkKKworCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1yZWwKKwlpZiB0ZXN0ICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgPSByZWw7IHRoZW4KKwkJY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nYGJhc2VuYW1lICRAIC4ke1JFTF9WRVJTSU9OfWAuJHtBQklfVkVSU0lPTn0nCisJZWxzZQorCQljZl9jdl9zaGFyZWRfc29uYW1lPSdgYmFzZW5hbWUgJEBgJworCWZpCisKKwkJaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisJCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJCWZvciBjZl9zaGFyZWRfb3B0cyBpbiAteGNvZGU9cGljMzIgLXhjb2RlPXBpYzEzIC1LUElDIC1LcGljIC1PCisJCQlkbworCQkJCUNGTEFHUz0iJGNmX3NoYXJlZF9vcHRzICRjZl9zYXZlX0NGTEFHUyIKKwkJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDYzNjYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG9cbiIpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2Mzc4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2MzgxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjYzODQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2Mzg3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJZG9uZQorCQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisJCQlDQ19TSEFSRURfT1BUUz0kY2Zfc2hhcmVkX29wdHMKKwkJCU1LX1NIQVJFRF9MSUI9JyR7Q0N9IC1keSAtRyAtaCAnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRAJworCQllbHNlCisJCQlNS19TSEFSRURfTElCPScke0NDfSAtc2hhcmVkIC1keSAtRyAtaCAnJGNmX2N2X3NoYXJlZF9zb25hbWUnIC1vICRAJworCQlmaQorCQk7OworCShzeXN2NXV3Nyp8dW5peF9zdiopCisJCSMgdGVzdGVkIHdpdGggVW5peFdhcmUgNy4xLjAgKGdjYyAyLjk1LjIgYW5kIGNjKQorCQlpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKwkJCUNDX1NIQVJFRF9PUFRTPSctS1BJQycKKwkJZmkKKwkJTUtfU0hBUkVEX0xJQj0nJHtMRH0gLWQgeSAtRyAtbyAkQCcKKwkJOzsKKwkoKikKKwkJQ0NfU0hBUkVEX09QVFM9J3Vua25vd24nCisJCU1LX1NIQVJFRF9MSUI9J2VjaG8gdW5rbm93bicKKwkJOzsKKwllc2FjCisKKwkjIFRoaXMgd29ya3MgaWYgdGhlIGxhc3QgdG9rZW5zIGluICRNS19TSEFSRURfTElCIGFyZSB0aGUgLW8gdGFyZ2V0LgorCWNhc2UgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiBpbgorCShyZWx8YWJpKQorCQljYXNlICIkTUtfU0hBUkVEX0xJQiIgaW4KKwkJKConLW8gJEAnKQorCQkJdGVzdCAiJGNmX2N2X2RvX3N5bWxpbmtzIiA9IG5vICYmIGNmX2N2X2RvX3N5bWxpbmtzPXllcworCQkJOzsKKwkJKCopCisJCQl7IGVjaG8gIiRhc19tZTo2NDI0OiBXQVJOSU5HOiBpZ25vcmVkIC0td2l0aC1zaGxpYi12ZXJzaW9uIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogaWdub3JlZCAtLXdpdGgtc2hsaWItdmVyc2lvbiIgPiYyO30KKwkJCTs7CisJCWVzYWMKKwkJOzsKKwllc2FjCisKKwlpZiB0ZXN0IC1uICIkY2ZfdHJ5X2NmbGFncyIKKwl0aGVuCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSA2NDM0ICIke2FzX21lOi1jb25maWd1cmV9IgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXByaW50ZigiaGVsbG9cbiIpOworCXJldHVybiAoYXJndlthcmdjLTFdID09IDApIDsKK30KK0VPRgorCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJZm9yIGNmX29wdCBpbiAkY2ZfdHJ5X2NmbGFncworCQlkbworCQkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLSRjZl9vcHQiCisJCQllY2hvICIkYXNfbWU6NjQ0NjogY2hlY2tpbmcgaWYgQ0ZMQUdTIG9wdGlvbiAtJGNmX29wdCB3b3JrcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIENGTEFHUyBvcHRpb24gLSRjZl9vcHQgd29ya3MuLi4gJEVDSE9fQyIgPiY2CisJCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2NDQ4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2NDUxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKwkJCQllY2hvICIkYXNfbWU6NjQ1MzogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkJCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJCWVsc2UKKwkJCQllY2hvICIkYXNfbWU6NjQ1NzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCQlmaQorCQlkb25lCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCWZpCisKKwkjIFJQQVRIX0xJU1QgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcworCXRlc3QgLW4gIiRjZl9sZF9ycGF0aF9vcHQiICYmIE1LX1NIQVJFRF9MSUI9IiRNS19TSEFSRURfTElCICRjZl9sZF9ycGF0aF9vcHRcJHtSUEFUSF9MSVNUfSIKKwl0ZXN0IC16ICIkUlBBVEhfTElTVCIgJiYgUlBBVEhfTElTVD0iXCR7bGliZGlyfSIKKworCXRlc3QgJGNmX2N2X3JtX3NvX2xvY3MgPSB5ZXMgJiYgUk1fU0hBUkVEX09QVFM9IiRSTV9TSEFSRURfT1BUUyBzb19sb2NhdGlvbnMiCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCUNDX1NIQVJFRF9PUFRTOiAkQ0NfU0hBUkVEX09QVFMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2NDcyOiB0ZXN0aW5nIENDX1NIQVJFRF9PUFRTOiAkQ0NfU0hBUkVEX09QVFMgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCU1LX1NIQVJFRF9MSUI6ICAkTUtfU0hBUkVEX0xJQiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY0NzY6IHRlc3RpbmcgTUtfU0hBUkVEX0xJQjogICRNS19TSEFSRURfTElCIC4uLiIgMT4mNQorCitmb3IgbW9kZWwgaW4gJGNmX2xpc3RfbW9kZWxzOyBkbworCWNhc2UgJG1vZGVsIGluCisJKGxpYnRvb2wpCisKK2VjaG8gIiRhc19tZTo2NDgyOiBjaGVja2luZyBmb3IgYWRkaXRpb25hbCBsaWJ0b29sIG9wdGlvbnMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWRkaXRpb25hbCBsaWJ0b29sIG9wdGlvbnMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1vcHRzIG9yIC0td2l0aG91dC1saWJ0b29sLW9wdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfb3B0cytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9saWJ0b29sX29wdHMiCisgIHdpdGhfbGlidG9vbF9vcHRzPSR3aXRodmFsCitlbHNlCisgIHdpdGhfbGlidG9vbF9vcHRzPW5vCitmaTsKK2VjaG8gIiRhc19tZTo2NDkyOiByZXN1bHQ6ICR3aXRoX2xpYnRvb2xfb3B0cyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9saWJ0b29sX29wdHMiID4mNgorCitjYXNlIC4kd2l0aF9saWJ0b29sX29wdHMgaW4KKygueWVzfC5ub3wuKQorCTs7CisoKikKKwlMSUJUT09MX09QVFM9IiRMSUJUT09MX09QVFMgJHdpdGhfbGlidG9vbF9vcHRzIgorCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZTo2NTAzOiBjaGVja2luZyBpZiBleHBvcnRlZC1zeW1ib2xzIGZpbGUgc2hvdWxkIGJlIHVzZWQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBleHBvcnRlZC1zeW1ib2xzIGZpbGUgc2hvdWxkIGJlIHVzZWQuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZXhwb3J0LXN5bXMgb3IgLS13aXRob3V0LWV4cG9ydC1zeW1zIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9leHBvcnRfc3ltcytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9leHBvcnRfc3ltcyIKKyAgd2l0aF9leHBvcnRfc3ltcz0kd2l0aHZhbAorZWxzZQorICB3aXRoX2V4cG9ydF9zeW1zPW5vCitmaTsKK2lmIHRlc3QgIngkd2l0aF9leHBvcnRfc3ltcyIgPSB4eWVzCit0aGVuCisJd2l0aF9leHBvcnRfc3ltcz0nJHt0b3Bfc3JjZGlyfS9wYWNrYWdlLyR7UEFDS0FHRX0uc3ltJworCitmaQorZWNobyAiJGFzX21lOjY1MTg6IHJlc3VsdDogJHdpdGhfZXhwb3J0X3N5bXMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZXhwb3J0X3N5bXMiID4mNgoraWYgdGVzdCAieCR3aXRoX2V4cG9ydF9zeW1zIiAhPSB4bm8KK3RoZW4KKwlFWFBPUlRfU1lNUz0iLWV4cG9ydC1zeW1ib2xzICR3aXRoX2V4cG9ydF9zeW1zIgorCitmaQorCisJCTs7CisJKHNoYXJlZCkKKwkJaWYgdGVzdCAiJENDX1NIQVJFRF9PUFRTIiA9ICJ1bmtub3duIjsgdGhlbgorCQkJeyB7IGVjaG8gIiRhc19tZTo2NTI5OiBlcnJvcjogU2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogU2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwkJZmkKKworZWNobyAiJGFzX21lOjY1MzQ6IGNoZWNraW5nIGlmIHZlcnNpb25lZC1zeW1ib2xzIGZpbGUgc2hvdWxkIGJlIHVzZWQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB2ZXJzaW9uZWQtc3ltYm9scyBmaWxlIHNob3VsZCBiZSB1c2VkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXZlcnNpb25lZC1zeW1zIG9yIC0td2l0aG91dC12ZXJzaW9uZWQtc3ltcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdmVyc2lvbmVkX3N5bXMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdmVyc2lvbmVkX3N5bXMiCisgIHdpdGhfdmVyc2lvbmVkX3N5bXM9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF92ZXJzaW9uZWRfc3ltcz1ubworZmk7CitpZiB0ZXN0ICJ4JHdpdGhfdmVyc2lvbmVkX3N5bXMiID0geHllcwordGhlbgorCXdpdGhfdmVyc2lvbmVkX3N5bXM9JyR7dG9wX3NyY2Rpcn0vcGFja2FnZS8ke1BBQ0tBR0V9Lm1hcCcKKworZmkKK2VjaG8gIiRhc19tZTo2NTQ5OiByZXN1bHQ6ICR3aXRoX3ZlcnNpb25lZF9zeW1zIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3ZlcnNpb25lZF9zeW1zIiA+JjYKKworUkVTVUxUSU5HX1NZTVM9CitWRVJTSU9ORURfU1lNUz0KK1dJTERDQVJEX1NZTVM9CisKK2lmIHRlc3QgIngkd2l0aF92ZXJzaW9uZWRfc3ltcyIgIT0geG5vCit0aGVuCisJUkVTVUxUSU5HX1NZTVM9JHdpdGhfdmVyc2lvbmVkX3N5bXMKKwljYXNlICJ4JE1LX1NIQVJFRF9MSUIiIGluCisJKCotV2wsKikKKwkJVkVSU0lPTkVEX1NZTVM9Ii1XbCwtLXZlcnNpb24tc2NyaXB0LFwke1JFU1VMVElOR19TWU1TfSIKKwkJTUtfU0hBUkVEX0xJQj1gZWNobyAiJE1LX1NIQVJFRF9MSUIiIHwgc2VkIC1lICJzJS1XbCwlXFwke1ZFUlNJT05FRF9TWU1TfSAtV2wsJSJgCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJTUtfU0hBUkVEX0xJQjogICRNS19TSEFSRURfTElCIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NjU2NTogdGVzdGluZyBNS19TSEFSRURfTElCOiAgJE1LX1NIQVJFRF9MSUIgLi4uIiAxPiY1CisKKwkJOzsKKwkoKi1keVwgKikKKwkJVkVSU0lPTkVEX1NZTVM9Ii1XbCwtTSxcJHtSRVNVTFRJTkdfU1lNU30iCisJCU1LX1NIQVJFRF9MSUI9YGVjaG8gIiRNS19TSEFSRURfTElCIiB8IHNlZCAtZSAicyUtZHklXFwke1ZFUlNJT05FRF9TWU1TfSAtZHklImAKKwkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglNS19TSEFSRURfTElCOiAgJE1LX1NIQVJFRF9MSUIiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2NTczOiB0ZXN0aW5nIE1LX1NIQVJFRF9MSUI6ICAkTUtfU0hBUkVEX0xJQiAuLi4iIDE+JjUKKworCQk7OworCSgqKQorCQl7IGVjaG8gIiRhc19tZTo2NTc3OiBXQVJOSU5HOiB0aGlzIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHZlcnNpb25lZC1zeW1ib2xzIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogdGhpcyBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCB2ZXJzaW9uZWQtc3ltYm9scyIgPiYyO30KKwkJOzsKKwllc2FjCisKKwkjIExpbnV4IGxkIGNhbiBzZWxlY3RpdmVseSBvdmVycmlkZSBzY29wZSwgZS5nLiwgb2Ygc3ltYm9scyBiZWdpbm5pbmcgd2l0aAorCSMgIl8iIGJ5IGZpcnN0IGRlY2xhcmluZyBzb21lIGFzIGdsb2JhbCwgYW5kIHRoZW4gdXNpbmcgYSB3aWxkY2FyZCB0bworCSMgZGVjbGFyZSB0aGUgb3RoZXJzIGFzIGxvY2FsLiAgU29tZSBvdGhlciBsb2FkZXJzIGNhbm5vdCBkbyB0aGlzLiAgQ2hlY2sKKwkjIGJ5IGNvbnN0cnVjdGluZyBhICh2ZXJ5KSBzaW1wbGUgc2hhcmVkIGxpYnJhcnkgYW5kIGluc3BlY3RpbmcgaXRzCisJIyBzeW1ib2xzLgorCWlmIHRlc3QgIngkVkVSU0lPTkVEX1NZTVMiICE9ICJ4IgorCXRoZW4KKwkJZWNobyAiJGFzX21lOjY1ODk6IGNoZWNraW5nIGlmIHdpbGRjYXJkcyBjYW4gYmUgdXNlZCB0byBzZWxlY3RpdmVseSBvbWl0IHN5bWJvbHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3aWxkY2FyZHMgY2FuIGJlIHVzZWQgdG8gc2VsZWN0aXZlbHkgb21pdCBzeW1ib2xzLi4uICRFQ0hPX0MiID4mNgorCQlXSUxEQ0FSRF9TWU1TPW5vCisKKwkJIyBtYWtlIHNvdXJjZXMKKwkJcm0gLWYgY29uZnRlc3QuKgorCisJCWNhdCA+Y29uZnRlc3QudmVyIDw8RU9GCittb2R1bGVfMS4wIHsKK2dsb2JhbDoKKwlnbG9iYWxmMTsKK2xvY2FsOgorCWxvY2FsZjE7Cit9OworbW9kdWxlXzIuMCB7CitnbG9iYWw6CisJZ2xvYmFsZjI7Citsb2NhbDoKKwlsb2NhbGYyOworCV8qOworfSBtb2R1bGVfMS4wOworc3VibW9kdWxlXzEuMCB7CitnbG9iYWw6CisJc3ViZ2xvYmFsZjE7CisJX2lzbWlzc2luZzsKK2xvY2FsOgorCXN1YmxvY2FsZjE7Cit9Oworc3VibW9kdWxlXzIuMCB7CitnbG9iYWw6CisJc3ViZ2xvYmFsZjI7Citsb2NhbDoKKwlzdWJsb2NhbGYyOworCV8qOworfSBzdWJtb2R1bGVfMS4wOworRU9GCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgNjYyNiAiY29uZmlndXJlIgoraW50CV9pc21pc3Npbmcodm9pZCkgeyByZXR1cm4gMTsgfQoraW50CV9sb2NhbGYxKHZvaWQpIHsgcmV0dXJuIDE7IH0KK2ludAlfbG9jYWxmMih2b2lkKSB7IHJldHVybiAyOyB9CitpbnQJZ2xvYmFsZjEodm9pZCkgeyByZXR1cm4gMTsgfQoraW50CWdsb2JhbGYyKHZvaWQpIHsgcmV0dXJuIDI7IH0KK2ludAlfc3VibG9jYWxmMSh2b2lkKSB7IHJldHVybiAxOyB9CitpbnQJX3N1YmxvY2FsZjIodm9pZCkgeyByZXR1cm4gMjsgfQoraW50CXN1Ymdsb2JhbGYxKHZvaWQpIHsgcmV0dXJuIDE7IH0KK2ludAlzdWJnbG9iYWxmMih2b2lkKSB7IHJldHVybiAyOyB9CitFT0YKKwkJY2F0ID5jb25mdGVzdC5tayA8PEVPRgorQ0M9JHtDQ30KK0NGTEFHUz0ke0NGTEFHU30KK0NQUEZMQUdTPSR7Q1BQRkxBR1N9CitMREZMQUdTPSR7TERGTEFHU30KK0xJQlM9JHtMSUJTfQorVkVSU0lPTkVEX1NZTVM9JHtWRVJTSU9ORURfU1lNU30KK1JFU1VMVElOR19TWU1TPWNvbmZ0ZXN0LnZlcgorTUtfU0hBUkVEX0xJQj0ke01LX1NIQVJFRF9MSUJ9Citjb25mdGVzdC5zbzogY29uZnRlc3QuJGFjX2N2X29iamV4dAorCQlcJChNS19TSEFSRURfTElCKSBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0CitFT0YKKworCQkjIGNvbXBpbGUgc291cmNlLCBtYWtlIGxpYnJhcnkKKwkJaWYgbWFrZSAtZiBjb25mdGVzdC5tayAyPiY1ID4vZGV2L251bGwKKwkJdGhlbgorCQkJIyB0ZXN0IGZvciBtaXNzaW5nIHN5bWJvbAorCQkJY2ZfbWlzc2luZz1gbm0gLVAgY29uZnRlc3Quc28gMj4mNSB8ZmdyZXAgX2lzbWlzc2luZyB8IGVncmVwICdbIAldVFsgCV0nYAorCQkJdGVzdCAtbiAiJGNmX21pc3NpbmciICYmIFdJTERDQVJEX1NZTVM9eWVzCisJCWZpCisJCWVjaG8gIiRhc19tZTo2NjU3OiByZXN1bHQ6ICRXSUxEQ0FSRF9TWU1TIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRXSUxEQ0FSRF9TWU1TIiA+JjYKKwkJcm0gLWYgY29uZnRlc3QuKgorCWZpCitmaQorCisJCTs7CisJZXNhYworZG9uZQorCisjIHByZXRlbmQgdGhhdCBuY3Vyc2VzPT1uY3Vyc2Vzdz09bmN1cnNlc3QKK2VjaG8gIiRhc19tZTo2NjY4OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGxpYnJhcnkgc3VmZml4ZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGxpYnJhcnkgc3VmZml4ZXMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWItc3VmZml4ZXMgb3IgLS1kaXNhYmxlLWxpYi1zdWZmaXhlcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9saWJfc3VmZml4ZXMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2xpYl9zdWZmaXhlcyIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gJiYgZW5hYmxldmFsPXllcworCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICJ5ZXMiIDsgdGhlbgorICAgIGRpc2FibGVfbGliX3N1ZmZpeGVzPXllcworCWVsc2UKKwkJZGlzYWJsZV9saWJfc3VmZml4ZXM9bm8KKwlmaQorZWxzZQorICBlbmFibGV2YWw9eWVzCisJZGlzYWJsZV9saWJfc3VmZml4ZXM9bm8KKworZmk7CitlY2hvICIkYXNfbWU6NjY4NTogcmVzdWx0OiAkZGlzYWJsZV9saWJfc3VmZml4ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGRpc2FibGVfbGliX3N1ZmZpeGVzIiA+JjYKKworIyMjIElmIHdlJ3JlIGJ1aWxkaW5nIHdpdGggcnBhdGgsIHRyeSB0byBsaW5rIG5vbi1zdGFuZGFyZCBsaWJzIHRoYXQgd2F5IHRvby4KK2lmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiOyB0aGVuCisKK2VjaG8gIiRhc19tZTo2NjkxOiBjaGVja2luZyBpZiBycGF0aC1oYWNrIHNob3VsZCBiZSBkaXNhYmxlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJwYXRoLWhhY2sgc2hvdWxkIGJlIGRpc2FibGVkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcnBhdGgtaGFjayBvciAtLWRpc2FibGUtcnBhdGgtaGFjayB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ycGF0aF9oYWNrK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9ycGF0aF9oYWNrIgorICB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyAmJiBlbmFibGV2YWw9eWVzCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gInllcyIgOyB0aGVuCisgICAgY2ZfZGlzYWJsZV9ycGF0aF9oYWNrPXllcworCWVsc2UKKwkJY2ZfZGlzYWJsZV9ycGF0aF9oYWNrPW5vCisJZmkKK2Vsc2UKKyAgZW5hYmxldmFsPXllcworCWNmX2Rpc2FibGVfcnBhdGhfaGFjaz1ubworCitmaTsKK2VjaG8gIiRhc19tZTo2NzA4OiByZXN1bHQ6ICRjZl9kaXNhYmxlX3JwYXRoX2hhY2siID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2Rpc2FibGVfcnBhdGhfaGFjayIgPiY2CitpZiB0ZXN0ICIkY2ZfZGlzYWJsZV9ycGF0aF9oYWNrIiA9IG5vIDsgdGhlbgorCitlY2hvICIkYXNfbWU6NjcxMjogY2hlY2tpbmcgZm9yIHVwZGF0ZWQgTERGTEFHUyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB1cGRhdGVkIExERkxBR1MuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0IC1uICIkTERfUlBBVEhfT1BUIiA7IHRoZW4KKwllY2hvICIkYXNfbWU6NjcxNTogcmVzdWx0OiBtYXliZSIgPiY1CitlY2hvICIke0VDSE9fVH1tYXliZSIgPiY2CisKKwlmb3IgYWNfcHJvZyBpbiBsZGQKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NjcyMjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2NmX2xkZF9wcm9nK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRjZl9sZGRfcHJvZyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19jZl9sZGRfcHJvZz0iJGNmX2xkZF9wcm9nIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfY2ZfbGRkX3Byb2c9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjY3Mzc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitjZl9sZGRfcHJvZz0kYWNfY3ZfcHJvZ19jZl9sZGRfcHJvZworaWYgdGVzdCAtbiAiJGNmX2xkZF9wcm9nIjsgdGhlbgorICBlY2hvICIkYXNfbWU6Njc0NTogcmVzdWx0OiAkY2ZfbGRkX3Byb2ciID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2xkZF9wcm9nIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjY3NDg6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkY2ZfbGRkX3Byb2ciICYmIGJyZWFrCitkb25lCit0ZXN0IC1uICIkY2ZfbGRkX3Byb2ciIHx8IGNmX2xkZF9wcm9nPSJubyIKKworCWNmX3JwYXRoX2xpc3Q9Ii91c3IvbGliIC9saWIiCisJaWYgdGVzdCAiJGNmX2xkZF9wcm9nIiAhPSBubworCXRoZW4KKwkJY2ZfcnBhdGhfb29wcz0KKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NzYyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2Nzc0OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2Nzc3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njc4MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3ODM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9ycGF0aF9vb3BzPWAkY2ZfbGRkX3Byb2cgY29uZnRlc3QkYWNfZXhlZXh0IHwgZmdyZXAgJyBub3QgZm91bmQnIHwgc2VkIC1lICdzJSA9Pi4qJCUlJyB8c29ydCB8IHVuaXFgCisJCSBjZl9ycGF0aF9saXN0PWAkY2ZfbGRkX3Byb2cgY29uZnRlc3QkYWNfZXhlZXh0IHwgZmdyZXAgLyB8IHNlZCAtZSAncyVeLipbIAldLyUvJScgLWUgJ3MlL1teL11bXi9dKiQlJScgfHNvcnQgfCB1bmlxYAorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCisJCSMgSWYgd2UgcGFzc2VkIHRoZSBsaW5rLXRlc3QsIGJ1dCBnZXQgYSAibm90IGZvdW5kIiBvbiBhIGdpdmVuIGxpYnJhcnksCisJCSMgdGhpcyBjb3VsZCBiZSBkdWUgdG8gaW5lcHQgcmVjb25maWd1cmF0aW9uIG9mIGdjYyB0byBtYWtlIGl0IG9ubHkKKwkJIyBwYXJ0bHkgaG9ub3IgL3Vzci9sb2NhbC9saWIgKG9yIHdoYXRldmVyKS4gIFNvbWV0aW1lcyB0aGlzIGJlaGF2aW9yCisJCSMgaXMgaW50ZW50aW9uYWwsIGUuZy4sIGluc3RhbGxpbmcgZ2NjIGluIC91c3IvYmluIGFuZCBzdXBwcmVzc2luZyB0aGUKKwkJIyAvdXNyL2xvY2FsIGxpYnJhcmllcy4KKwkJaWYgdGVzdCAtbiAiJGNmX3JwYXRoX29vcHMiCisJCXRoZW4KKwkJCWZvciBjZl9ycGF0aF9zcmMgaW4gJGNmX3JwYXRoX29vcHMKKwkJCWRvCisJCQkJZm9yIGNmX3JwYXRoX2RpciBpbiBcCisJCQkJCS91c3IvbG9jYWwgXAorCQkJCQkvdXNyL3BrZyBcCisJCQkJCS9vcHQvc2Z3CisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAkY2ZfcnBhdGhfZGlyL2xpYi8kY2ZfcnBhdGhfc3JjCisJCQkJCXRoZW4KKwkJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYWRkaW5nIC1MJGNmX3JwYXRoX2Rpci9saWIgdG8gTERGTEFHUyBmb3IgJGNmX3JwYXRoX3NyYyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY4MTE6IHRlc3RpbmcgLi4uYWRkaW5nIC1MJGNmX3JwYXRoX2Rpci9saWIgdG8gTERGTEFHUyBmb3IgJGNmX3JwYXRoX3NyYyAuLi4iIDE+JjUKKworCQkJCQkJTERGTEFHUz0iJExERkxBR1MgLUwkY2ZfcnBhdGhfZGlyL2xpYiIKKwkJCQkJCWJyZWFrCisJCQkJCWZpCisJCQkJZG9uZQorCQkJZG9uZQorCQlmaQorCWZpCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmNoZWNraW5nIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2ODIzOiB0ZXN0aW5nIC4uLmNoZWNraW5nIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MgLi4uIiAxPiY1CisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uY2hlY2tpbmcgTERGTEFHUyAkTERGTEFHUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY4Mjc6IHRlc3RpbmcgLi4uY2hlY2tpbmcgTERGTEFHUyAkTERGTEFHUyAuLi4iIDE+JjUKKworY2ZfcnBhdGhfZHN0PQorZm9yIGNmX3JwYXRoX3NyYyBpbiAkTERGTEFHUworZG8KKwljYXNlICRjZl9ycGF0aF9zcmMgaW4KKwkoLUwqKQorCisJCSMgY2hlY2sgaWYgdGhpcyByZWZlcnMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggd2Ugd2lsbCBpZ25vcmUKKwkJY2ZfcnBhdGhfc2tpcD1ubworCQlpZiB0ZXN0IC1uICIkY2ZfcnBhdGhfbGlzdCIKKwkJdGhlbgorCQkJZm9yIGNmX3JwYXRoX2l0ZW0gaW4gJGNmX3JwYXRoX2xpc3QKKwkJCWRvCisJCQkJaWYgdGVzdCAieCRjZl9ycGF0aF9zcmMiID0gIngtTCRjZl9ycGF0aF9pdGVtIgorCQkJCXRoZW4KKwkJCQkJY2ZfcnBhdGhfc2tpcD15ZXMKKwkJCQkJYnJlYWsKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9ycGF0aF9za2lwIiA9IG5vCisJCXRoZW4KKwkJCSMgdHJhbnNmb3JtIHRoZSBvcHRpb24KKwkJCWlmIHRlc3QgIiRMRF9SUEFUSF9PUFQiID0gIi1SICIgOyB0aGVuCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJS1SICUiYAorCQkJZWxzZQorCQkJCWNmX3JwYXRoX3RtcD1gZWNobyAiJGNmX3JwYXRoX3NyYyIgfHNlZCAtZSAicyUtTCUkTERfUlBBVEhfT1BUJSJgCisJCQlmaQorCisJCQkjIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgYWRkZWQgdGhpcywgYWRkIGl0IG5vdworCQkJY2ZfcnBhdGhfdHN0PWBlY2hvICIkRVhUUkFfTERGTEFHUyIgfCBzZWQgLWUgInMlJGNmX3JwYXRoX3RtcCAlJSJgCisJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3RzdCIgPSAieCRFWFRSQV9MREZMQUdTIgorCQkJdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uRmlsdGVyICRjZl9ycGF0aF9zcmMgLT4kY2ZfcnBhdGhfdG1wIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06Njg2NDogdGVzdGluZyAuLi5GaWx0ZXIgJGNmX3JwYXRoX3NyYyAtPiRjZl9ycGF0aF90bXAgLi4uIiAxPiY1CisKKwkJCQlFWFRSQV9MREZMQUdTPSIkY2ZfcnBhdGhfdG1wICRFWFRSQV9MREZMQUdTIgorCQkJZmkKKwkJZmkKKwkJOzsKKwllc2FjCisJY2ZfcnBhdGhfZHN0PSIkY2ZfcnBhdGhfZHN0ICRjZl9ycGF0aF9zcmMiCitkb25lCitMREZMQUdTPSRjZl9ycGF0aF9kc3QKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2VkIExERkxBR1MgJExERkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2ODc3OiB0ZXN0aW5nIC4uLmNoZWNrZWQgTERGTEFHUyAkTERGTEFHUyAuLi4iIDE+JjUKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2luZyBMSUJTICRMSUJTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06Njg4MTogdGVzdGluZyAuLi5jaGVja2luZyBMSUJTICRMSUJTIC4uLiIgMT4mNQorCitjZl9ycGF0aF9kc3Q9Citmb3IgY2ZfcnBhdGhfc3JjIGluICRMSUJTCitkbworCWNhc2UgJGNmX3JwYXRoX3NyYyBpbgorCSgtTCopCisKKwkJIyBjaGVjayBpZiB0aGlzIHJlZmVycyB0byBhIGRpcmVjdG9yeSB3aGljaCB3ZSB3aWxsIGlnbm9yZQorCQljZl9ycGF0aF9za2lwPW5vCisJCWlmIHRlc3QgLW4gIiRjZl9ycGF0aF9saXN0IgorCQl0aGVuCisJCQlmb3IgY2ZfcnBhdGhfaXRlbSBpbiAkY2ZfcnBhdGhfbGlzdAorCQkJZG8KKwkJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3NyYyIgPSAieC1MJGNmX3JwYXRoX2l0ZW0iCisJCQkJdGhlbgorCQkJCQljZl9ycGF0aF9za2lwPXllcworCQkJCQlicmVhaworCQkJCWZpCisJCQlkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX3JwYXRoX3NraXAiID0gbm8KKwkJdGhlbgorCQkJIyB0cmFuc2Zvcm0gdGhlIG9wdGlvbgorCQkJaWYgdGVzdCAiJExEX1JQQVRIX09QVCIgPSAiLVIgIiA7IHRoZW4KKwkJCQljZl9ycGF0aF90bXA9YGVjaG8gIiRjZl9ycGF0aF9zcmMiIHxzZWQgLWUgInMlLUwlLVIgJSJgCisJCQllbHNlCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJSRMRF9SUEFUSF9PUFQlImAKKwkJCWZpCisKKwkJCSMgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBhZGRlZCB0aGlzLCBhZGQgaXQgbm93CisJCQljZl9ycGF0aF90c3Q9YGVjaG8gIiRFWFRSQV9MREZMQUdTIiB8IHNlZCAtZSAicyUkY2ZfcnBhdGhfdG1wICUlImAKKwkJCWlmIHRlc3QgIngkY2ZfcnBhdGhfdHN0IiA9ICJ4JEVYVFJBX0xERkxBR1MiCisJCQl0aGVuCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5GaWx0ZXIgJGNmX3JwYXRoX3NyYyAtPiRjZl9ycGF0aF90bXAiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2OTE4OiB0ZXN0aW5nIC4uLkZpbHRlciAkY2ZfcnBhdGhfc3JjIC0+JGNmX3JwYXRoX3RtcCAuLi4iIDE+JjUKKworCQkJCUVYVFJBX0xERkxBR1M9IiRjZl9ycGF0aF90bXAgJEVYVFJBX0xERkxBR1MiCisJCQlmaQorCQlmaQorCQk7OworCWVzYWMKKwljZl9ycGF0aF9kc3Q9IiRjZl9ycGF0aF9kc3QgJGNmX3JwYXRoX3NyYyIKK2RvbmUKK0xJQlM9JGNmX3JwYXRoX2RzdAorCit0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmNoZWNrZWQgTElCUyAkTElCUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY5MzE6IHRlc3RpbmcgLi4uY2hlY2tlZCBMSUJTICRMSUJTIC4uLiIgMT4mNQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2VkIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2OTM1OiB0ZXN0aW5nIC4uLmNoZWNrZWQgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUyAuLi4iIDE+JjUKKworZWxzZQorCWVjaG8gIiRhc19tZTo2OTM4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2ZpCisKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjCXVzZSBvcHRpb24gLS13aXRoLWV4dHJhLXN1ZmZpeCB0byBhcHBlbmQgc3VmZml4IHRvIGhlYWRlcnMgYW5kIGxpYnJhcmllcworZWNobyAiJGFzX21lOjY5NDk6IGNoZWNraW5nIGlmIHlvdSB3aXNoIHRvIGFwcGVuZCBleHRyYSBzdWZmaXggdG8gaGVhZGVyL2xpYnJhcnkgcGF0aHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2lzaCB0byBhcHBlbmQgZXh0cmEgc3VmZml4IHRvIGhlYWRlci9saWJyYXJ5IHBhdGhzLi4uICRFQ0hPX0MiID4mNgorRVhUUkFfU1VGRklYPQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWV4dHJhLXN1ZmZpeCBvciAtLXdpdGhvdXQtZXh0cmEtc3VmZml4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9leHRyYV9zdWZmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZXh0cmFfc3VmZml4IgorICBjYXNlIHgkd2l0aHZhbCBpbgorCShubykKKwkJOzsKKwkoeHllc3x4KQorCQlFWFRSQV9TVUZGSVg9JGNmX2N2X2FiaV92ZXJzaW9uCisJCTs7CisJKCopCisJCUVYVFJBX1NVRkZJWD0kd2l0aHZhbAorCQk7OworCWVzYWMKKworZmk7CitlY2hvICIkYXNfbWU6Njk2ODogcmVzdWx0OiAkRVhUUkFfU1VGRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRFWFRSQV9TVUZGSVgiID4mNgorCisjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtb3ZlcndyaXRlIHRvIGxlYXZlIG91dCB0aGUgbGluayB0byAtbGN1cnNlcworZWNobyAiJGFzX21lOjY5NzI6IGNoZWNraW5nIGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgbmN1cnNlcyBvdmVyd3JpdGluZyBjdXJzZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2lzaCB0byBpbnN0YWxsIG5jdXJzZXMgb3ZlcndyaXRpbmcgY3Vyc2VzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb3ZlcndyaXRlIG9yIC0tZGlzYWJsZS1vdmVyd3JpdGUgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfb3ZlcndyaXRlK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9vdmVyd3JpdGUiCisgIHdpdGhfb3ZlcndyaXRlPSRlbmFibGV2YWwKK2Vsc2UKKyAgaWYgdGVzdCAiJHByZWZpeCIgPSAiL3VzciIgOyB0aGVuIHdpdGhfb3ZlcndyaXRlPXllczsgZWxzZSB3aXRoX292ZXJ3cml0ZT1ubzsgZmkKK2ZpOworZWNobyAiJGFzX21lOjY5ODI6IHJlc3VsdDogJHdpdGhfb3ZlcndyaXRlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX292ZXJ3cml0ZSIgPiY2CisKK2VjaG8gIiRhc19tZTo2OTg1OiBjaGVja2luZyBpZiBleHRlcm5hbCB0ZXJtaW5mby1kYXRhYmFzZSBpcyB1c2VkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZXh0ZXJuYWwgdGVybWluZm8tZGF0YWJhc2UgaXMgdXNlZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRhdGFiYXNlIG9yIC0tZGlzYWJsZS1kYXRhYmFzZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9kYXRhYmFzZStzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfZGF0YWJhc2UiCisgIHVzZV9kYXRhYmFzZT0kZW5hYmxldmFsCitlbHNlCisgIHVzZV9kYXRhYmFzZT15ZXMKK2ZpOworZWNobyAiJGFzX21lOjY5OTU6IHJlc3VsdDogJHVzZV9kYXRhYmFzZSIgPiY1CitlY2hvICIke0VDSE9fVH0kdXNlX2RhdGFiYXNlIiA+JjYKKworY2FzZSAkaG9zdF9vcyBpbgorKG9zMiopCisJVEVSTUlORk9fU1JDPScke3RvcF9zcmNkaXJ9L21pc2MvZW14LnNyYycKKwk7OworKCopCisJVEVSTUlORk9fU1JDPScke3RvcF9zcmNkaXJ9L21pc2MvdGVybWluZm8uc3JjJworCTs7Citlc2FjCisKK05DVVJTRVNfVVNFX0RBVEFCQVNFPTAKK2lmIHRlc3QgIiR1c2VfZGF0YWJhc2UiICE9IG5vIDsgdGhlbgorCU5DVVJTRVNfVVNFX0RBVEFCQVNFPTEKKworCWVjaG8gIiRhc19tZTo3MDExOiBjaGVja2luZyB3aGljaCB0ZXJtaW5mbyBzb3VyY2UtZmlsZSB3aWxsIGJlIGluc3RhbGxlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoaWNoIHRlcm1pbmZvIHNvdXJjZS1maWxlIHdpbGwgYmUgaW5zdGFsbGVkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRhdGFiYXNlIG9yIC0td2l0aG91dC1kYXRhYmFzZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZGF0YWJhc2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGF0YWJhc2UiCisgIFRFUk1JTkZPX1NSQz0kd2l0aHZhbAorZmk7CisJZWNobyAiJGFzX21lOjcwMTk6IHJlc3VsdDogJFRFUk1JTkZPX1NSQyIgPiY1CitlY2hvICIke0VDSE9fVH0kVEVSTUlORk9fU1JDIiA+JjYKKworCWVjaG8gIiRhc19tZTo3MDIyOiBjaGVja2luZyB3aGV0aGVyIHRvIHVzZSBoYXNoZWQgZGF0YWJhc2UgaW5zdGVhZCBvZiBkaXJlY3RvcnkvdHJlZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIGhhc2hlZCBkYXRhYmFzZSBpbnN0ZWFkIG9mIGRpcmVjdG9yeS90cmVlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWhhc2hlZC1kYiBvciAtLXdpdGhvdXQtaGFzaGVkLWRiIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9oYXNoZWRfZGIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfaGFzaGVkX2RiIgorCitlbHNlCisgIHdpdGhfaGFzaGVkX2RiPW5vCitmaTsKKwllY2hvICIkYXNfbWU6NzAzMjogcmVzdWx0OiAkd2l0aF9oYXNoZWRfZGIiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfaGFzaGVkX2RiIiA+JjYKK2Vsc2UKKwl3aXRoX2hhc2hlZF9kYj1ubworZmkKKworZWNobyAiJGFzX21lOjcwMzg6IGNoZWNraW5nIGZvciBsaXN0IG9mIGZhbGxiYWNrIGRlc2NyaXB0aW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaXN0IG9mIGZhbGxiYWNrIGRlc2NyaXB0aW9ucy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1mYWxsYmFja3Mgb3IgLS13aXRob3V0LWZhbGxiYWNrcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZmFsbGJhY2tzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2ZhbGxiYWNrcyIKKyAgd2l0aF9mYWxsYmFjaz0kd2l0aHZhbAorZWxzZQorICB3aXRoX2ZhbGxiYWNrPQorZmk7CitlY2hvICIkYXNfbWU6NzA0ODogcmVzdWx0OiAkd2l0aF9mYWxsYmFjayIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9mYWxsYmFjayIgPiY2CitGQUxMQkFDS19MSVNUPWBlY2hvICIkd2l0aF9mYWxsYmFjayIgfCBzZWQgLWUgJ3MvLC8gL2cnYAorCitlY2hvICIkYXNfbWU6NzA1MjogY2hlY2tpbmcgaWYgeW91IHdhbnQgbW9kZXJuIHh0ZXJtIG9yIGFudGlxdWUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBtb2Rlcm4geHRlcm0gb3IgYW50aXF1ZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC14dGVybS1uZXcgb3IgLS13aXRob3V0LXh0ZXJtLW5ldyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfeHRlcm1fbmV3K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3h0ZXJtX25ldyIKKyAgd2l0aF94dGVybV9uZXc9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF94dGVybV9uZXc9eWVzCitmaTsKK2Nhc2UgJHdpdGhfeHRlcm1fbmV3IGluCisobm8pIHdpdGhfeHRlcm1fbmV3PXh0ZXJtLW9sZDs7CisoKikJIHdpdGhfeHRlcm1fbmV3PXh0ZXJtLW5ldzs7Citlc2FjCitlY2hvICIkYXNfbWU6NzA2NjogcmVzdWx0OiAkd2l0aF94dGVybV9uZXciID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfeHRlcm1fbmV3IiA+JjYKK1dISUNIX1hURVJNPSR3aXRoX3h0ZXJtX25ldworCitlY2hvICIkYXNfbWU6NzA3MDogY2hlY2tpbmcgaWYgeHRlcm0gYmFja3NwYWNlIHNlbmRzIEJTIG9yIERFTCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHh0ZXJtIGJhY2tzcGFjZSBzZW5kcyBCUyBvciBERUwuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgteHRlcm0ta2JzIG9yIC0td2l0aG91dC14dGVybS1rYnMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3h0ZXJtX2ticytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF94dGVybV9rYnMiCisgIHdpdGhfeHRlcm1fa2JzPSR3aXRodmFsCitlbHNlCisgIHdpdGhfeHRlcm1fa2JzPUJTCitmaTsKK2Nhc2UgeCR3aXRoX3h0ZXJtX2ticyBpbgorKHh5ZXN8eG5vfHhCU3x4YnN8eDgpCisJd2l0aF94dGVybV9rYnM9QlMKKwk7OworKHhERUx8eGRlbHx4MTI3KQorCXdpdGhfeHRlcm1fa2JzPURFTAorCTs7CisoKikKKwl3aXRoX3h0ZXJtX2ticz0kd2l0aHZhbAorCTs7Citlc2FjCitlY2hvICIkYXNfbWU6NzA5MTogcmVzdWx0OiAkd2l0aF94dGVybV9rYnMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfeHRlcm1fa2JzIiA+JjYKK1hURVJNX0tCUz0kd2l0aF94dGVybV9rYnMKKworTUFLRV9URVJNSU5GTz0KK2lmIHRlc3QgIiR1c2VfZGF0YWJhc2UiID0gbm8gOyB0aGVuCisJVEVSTUlORk89IiR7ZGF0YWRpcn0vdGVybWluZm8iCisJTUFLRV9URVJNSU5GTz0iIyIKK2Vsc2UKKworZWNobyAiJGFzX21lOjcxMDE6IGNoZWNraW5nIGZvciBsaXN0IG9mIHRlcm1pbmZvIGRpcmVjdG9yaWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGxpc3Qgb2YgdGVybWluZm8gZGlyZWN0b3JpZXMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdGVybWluZm8tZGlycyBvciAtLXdpdGhvdXQtdGVybWluZm8tZGlycyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdGVybWluZm9fZGlycytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF90ZXJtaW5mb19kaXJzIgorCitlbHNlCisgIHdpdGh2YWw9JHtURVJNSU5GT19ESVJTOi0ke2RhdGFkaXJ9L3Rlcm1pbmZvfQorZmk7CitJRlM9IiR7SUZTOi0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtQQVRIX1NFUEFSQVRPUn0iCitjZl9kc3RfcGF0aD0KK2ZvciBjZl9zcmNfcGF0aCBpbiAkd2l0aHZhbAorZG8KKworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi4kY2Zfc3JjX3BhdGgiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIGNmX3NyY19wYXRoPSIkY2Zfc3JjX3BhdGgiCisJY2FzZSAiLiRjZl9zcmNfcGF0aCIgaW4KKwkoLk5PTkUvKikKKwkJY2Zfc3JjX3BhdGg9YGVjaG8gJGNmX3NyY19wYXRoIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCWNmX3NyY19wYXRoPWBlY2hvICRjZl9zcmNfcGF0aCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJeyB7IGVjaG8gIiRhc19tZTo3MTQxOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJGNmX3NyY19wYXRoXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwk7OworZXNhYworCisgIHRlc3QgLW4gIiRjZl9kc3RfcGF0aCIgJiYgY2ZfZHN0X3BhdGg9IiR7Y2ZfZHN0X3BhdGh9JFBBVEhfU0VQQVJBVE9SIgorICBjZl9kc3RfcGF0aD0iJHtjZl9kc3RfcGF0aH0ke2NmX3NyY19wYXRofSIKK2RvbmUKK0lGUz0iJGFjX3NhdmVfaWZzIgorCisjIFRoaXMgbWF5IHVzZSB0aGUgcHJlZml4L2V4ZWNfcHJlZml4IHN5bWJvbHMgd2hpY2ggd2lsbCBvbmx5IHlpZWxkICJOT05FIgorIyBzbyB3ZSBoYXZlIHRvIGNoZWNrL3dvcmsgYXJvdW5kLiAgV2UgZG8gcHJlZmVyIHRoZSByZXN1bHQgb2YgImV2YWwiLi4uCitldmFsIGNmX2RzdF9ldmFsPSIkY2ZfZHN0X3BhdGgiCitjYXNlICJ4JGNmX2RzdF9ldmFsIiBpbgorKHhOT05FKikKKwlURVJNSU5GT19ESVJTPSRjZl9kc3RfcGF0aAorCTs7CisoKikKKwlURVJNSU5GT19ESVJTPSIkY2ZfZHN0X2V2YWwiCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjcxNjQ6IHJlc3VsdDogJFRFUk1JTkZPX0RJUlMiID4mNQorZWNobyAiJHtFQ0hPX1R9JFRFUk1JTkZPX0RJUlMiID4mNgordGVzdCAtbiAiJFRFUk1JTkZPX0RJUlMiICYmCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFRFUk1JTkZPX0RJUlMgIiRURVJNSU5GT19ESVJTIgorRU9GCisKK2VjaG8gIiRhc19tZTo3MTcxOiBjaGVja2luZyBmb3IgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGVmYXVsdC10ZXJtaW5mby1kaXIgb3IgLS13aXRob3V0LWRlZmF1bHQtdGVybWluZm8tZGlyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kZWZhdWx0X3Rlcm1pbmZvX2RpcitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9kZWZhdWx0X3Rlcm1pbmZvX2RpciIKKworZWxzZQorICB3aXRodmFsPSIke1RFUk1JTkZPOi0ke2RhdGFkaXJ9L3Rlcm1pbmZvfSIKK2ZpOyBpZiB0ZXN0IC1uICIke2RhdGFkaXJ9L3Rlcm1pbmZvIiA7IHRoZW4KKworaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisJY2ZfcGF0aF9zeW50YXg9IiRwcmVmaXgiCitlbHNlCisJY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKK2ZpCisKK2Nhc2UgIi4kd2l0aHZhbCIgaW4KKyguXCRcKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLlthLXpBLVpdOltcXC9dKikgIyBPUy8yIEVNWAorCTs7CisoLlwkeypwcmVmaXh9KnwuXCR7KmRpcn0qKQorCWV2YWwgd2l0aHZhbD0iJHdpdGh2YWwiCisJY2FzZSAiLiR3aXRodmFsIiBpbgorCSguTk9ORS8qKQorCQl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCQk7OworCWVzYWMKKwk7OworKC5ub3wuTk9ORS8qKQorCXdpdGh2YWw9YGVjaG8gJHdpdGh2YWwgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJOzsKKygqKQorCXsgeyBlY2hvICIkYXNfbWU6NzIwNzogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCTs7Citlc2FjCisKK2ZpCitldmFsIFRFUk1JTkZPPSIkd2l0aHZhbCIKKworZWNobyAiJGFzX21lOjcyMTY6IHJlc3VsdDogJFRFUk1JTkZPIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRURVJNSU5GTyIgPiY2CisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgVEVSTUlORk8gIiRURVJNSU5GTyIKK0VPRgorCitmaQorCisjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtYmlnLWNvcmUgdG8gbWFrZSB0aWMgcnVuIG9uIHNtYWxsIG1hY2hpbmVzCisjIyMJV2UgbmVlZCA0TWIsIGNoZWNrIGlmIHdlIGNhbiBhbGxvY2F0ZSA1MCUgbW9yZSB0aGFuIHRoYXQuCitlY2hvICIkYXNfbWU6NzIyNzogY2hlY2tpbmcgaWYgYmlnLWNvcmUgb3B0aW9uIHNlbGVjdGVkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgYmlnLWNvcmUgb3B0aW9uIHNlbGVjdGVkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYmlnLWNvcmUgb3IgLS1kaXNhYmxlLWJpZy1jb3JlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2JpZ19jb3JlK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9iaWdfY29yZSIKKyAgd2l0aF9iaWdfY29yZT0kZW5hYmxldmFsCitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIHdpdGhfYmlnX2NvcmU9bm8KK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3MjM5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgoraW50IG1haW4oKSB7CisJdW5zaWduZWQgbG9uZyBuID0gNjAwMDAwMEw7CisJY2hhciAqcyA9IG1hbGxvYyhuKTsKKwlpZiAocyAhPSAwKQorCQlzWzBdID0gc1tuLTFdID0gMDsKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KHMgPT0gMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzI1MzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzI1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzI1ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcyNjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICB3aXRoX2JpZ19jb3JlPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQord2l0aF9iaWdfY29yZT1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZmk7CitlY2hvICIkYXNfbWU6NzI3MzogcmVzdWx0OiAkd2l0aF9iaWdfY29yZSIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9iaWdfY29yZSIgPiY2Cit0ZXN0ICJ4JHdpdGhfYmlnX2NvcmUiID0gInh5ZXMiICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0JJR19DT1JFIDEKK0VPRgorCisjIyMgSVNPIEMgb25seSBndWFyYW50ZWVzIDUxMi1jaGFyIHN0cmluZ3MsIHdlIGhhdmUgdGFibGVzIHdoaWNoIGxvYWQgZmFzdGVyCisjIyMgd2hlbiBjb25zdHJ1Y3RlZCB1c2luZyAiYmlnIiBzdHJpbmdzLiAgTW9yZSB0aGFuIHRoZSBDIGNvbXBpbGVyLCB0aGUgYXdrCisjIyMgcHJvZ3JhbSBpcyBhIGxpbWl0IG9uIG1vc3QgdmVuZG9yIFVOSVggc3lzdGVtcy4gIENoZWNrIHRoYXQgd2UgY2FuIGJ1aWxkLgorZWNobyAiJGFzX21lOjcyODM6IGNoZWNraW5nIGlmIGJpZy1zdHJpbmdzIG9wdGlvbiBzZWxlY3RlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIGJpZy1zdHJpbmdzIG9wdGlvbiBzZWxlY3RlZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJpZy1zdHJpbmdzIG9yIC0tZGlzYWJsZS1iaWctc3RyaW5ncyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9iaWdfc3RyaW5ncytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfYmlnX3N0cmluZ3MiCisgIHdpdGhfYmlnX3N0cmluZ3M9JGVuYWJsZXZhbAorZWxzZQorCisJY2FzZSB4JEFXSyBpbgorCSh4KQorCQlldmFsIHdpdGhfYmlnX3N0cmluZ3M9bm8KKwkJOzsKKwkoKikKKwkJaWYgKCAke0FXS30gJ0JFR0lOIHsgeHggPSAieCI7IHdoaWxlIChsZW5ndGgoeHgpIDwgMTIwMDApIHsgeHggPSB4eCAieCI7IH07IHByaW50ZigiJXNcbiIsIHh4KTsgfScgMj4vZGV2L251bGwgXAorCQkJfCAkQVdLICd7IHByaW50ZiAiJWRcbiIsIGxlbmd0aCgkMCk7IH0nIDI+L2Rldi9udWxsIHwgJEFXSyAnQkVHSU4geyBlcWxzPTA7IHJlY3M9MDsgfSB7IHJlY3MrKzsgaWYgKCQwID09IDEyMDAwKSBlcWxzKys7IH0gRU5EIHsgaWYgKHJlY3MgIT0gMSB8fCBlcWxzICE9IDEpIGV4aXQgMTsgfScgMj4vZGV2L251bGwgPi9kZXYvbnVsbCApIDsgdGhlbgorCQkJZXZhbCB3aXRoX2JpZ19zdHJpbmdzPXllcworCQllbHNlCisJCQlldmFsIHdpdGhfYmlnX3N0cmluZ3M9bm8KKwkJZmkKKwkJOzsKKwllc2FjCisKK2ZpOworZWNobyAiJGFzX21lOjczMDc6IHJlc3VsdDogJHdpdGhfYmlnX3N0cmluZ3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfYmlnX3N0cmluZ3MiID4mNgorCitVU0VfQklHX1NUUklOR1M9MAordGVzdCAieCR3aXRoX2JpZ19zdHJpbmdzIiA9ICJ4eWVzIiAmJiBVU0VfQklHX1NUUklOR1M9MQorCisjIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS10ZXJtY2FwIHRvIGNvbXBpbGUgaW4gdGhlIHRlcm1jYXAgZmFsbGJhY2sgc3VwcG9ydAorZWNobyAiJGFzX21lOjczMTQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRlcm1jYXAtZmFsbGJhY2sgc3VwcG9ydCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRlcm1jYXAtZmFsbGJhY2sgc3VwcG9ydC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRlcm1jYXAgb3IgLS1kaXNhYmxlLXRlcm1jYXAgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfdGVybWNhcCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfdGVybWNhcCIKKyAgd2l0aF90ZXJtY2FwPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF90ZXJtY2FwPW5vCitmaTsKK2VjaG8gIiRhc19tZTo3MzI0OiByZXN1bHQ6ICR3aXRoX3Rlcm1jYXAiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfdGVybWNhcCIgPiY2CisKK05DVVJTRVNfVVNFX1RFUk1DQVA9MAoraWYgdGVzdCAieCR3aXRoX3Rlcm1jYXAiICE9ICJ4eWVzIiA7IHRoZW4KKwlpZiB0ZXN0ICIkdXNlX2RhdGFiYXNlIiA9IG5vIDsgdGhlbgorCQlpZiB0ZXN0IC16ICIkd2l0aF9mYWxsYmFjayIgOyB0aGVuCisJCQl7IHsgZWNobyAiJGFzX21lOjczMzE6IGVycm9yOiBZb3UgaGF2ZSBkaXNhYmxlZCB0aGUgZGF0YWJhc2Ugdy9vIHNwZWNpZnlpbmcgZmFsbGJhY2tzIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IFlvdSBoYXZlIGRpc2FibGVkIHRoZSBkYXRhYmFzZSB3L28gc3BlY2lmeWluZyBmYWxsYmFja3MiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwkJZmkKKwlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBQVVJFX1RFUk1JTkZPIDEKK0VPRgorCitlbHNlCisKKwlpZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgorCQl7IHsgZWNobyAiJGFzX21lOjczNDQ6IGVycm9yOiBPcHRpb25zIC0td2l0aC10aWNsaWIgYW5kIC0tZW5hYmxlLXRlcm1jYXAgY2Fubm90IGJlIGNvbWJpbmVkIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IE9wdGlvbnMgLS13aXRoLXRpY2xpYiBhbmQgLS1lbmFibGUtdGVybWNhcCBjYW5ub3QgYmUgY29tYmluZWQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwlmaQorCisJTkNVUlNFU19VU0VfVEVSTUNBUD0xCisJZWNobyAiJGFzX21lOjczNTA6IGNoZWNraW5nIGZvciBsaXN0IG9mIHRlcm1jYXAgZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbGlzdCBvZiB0ZXJtY2FwIGZpbGVzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXRlcm1wYXRoIG9yIC0td2l0aG91dC10ZXJtcGF0aCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdGVybXBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdGVybXBhdGgiCisKK2Vsc2UKKyAgd2l0aHZhbD0ke1RFUk1QQVRIOi0vZXRjL3Rlcm1jYXA6L3Vzci9zaGFyZS9taXNjL3Rlcm1jYXB9CitmaTsKK0lGUz0iJHtJRlM6LSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke1BBVEhfU0VQQVJBVE9SfSIKK2NmX2RzdF9wYXRoPQorZm9yIGNmX3NyY19wYXRoIGluICR3aXRodmFsCitkbworCitpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KKwljZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKK2Vsc2UKKwljZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgorZmkKKworY2FzZSAiLiRjZl9zcmNfcGF0aCIgaW4KKyguXCRcKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLlthLXpBLVpdOltcXC9dKikgIyBPUy8yIEVNWAorCTs7CisoLlwkeypwcmVmaXh9KnwuXCR7KmRpcn0qKQorCWV2YWwgY2Zfc3JjX3BhdGg9IiRjZl9zcmNfcGF0aCIKKwljYXNlICIuJGNmX3NyY19wYXRoIiBpbgorCSguTk9ORS8qKQorCQljZl9zcmNfcGF0aD1gZWNobyAkY2Zfc3JjX3BhdGggfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJCTs7CisJZXNhYworCTs7CisoLm5vfC5OT05FLyopCisJY2Zfc3JjX3BhdGg9YGVjaG8gJGNmX3NyY19wYXRoIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjczOTA6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkY2Zfc3JjX3BhdGhcIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkY2Zfc3JjX3BhdGhcIiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCTs7Citlc2FjCisKKyAgdGVzdCAtbiAiJGNmX2RzdF9wYXRoIiAmJiBjZl9kc3RfcGF0aD0iJHtjZl9kc3RfcGF0aH0kUEFUSF9TRVBBUkFUT1IiCisgIGNmX2RzdF9wYXRoPSIke2NmX2RzdF9wYXRofSR7Y2Zfc3JjX3BhdGh9IgorZG9uZQorSUZTPSIkYWNfc2F2ZV9pZnMiCisKKyMgVGhpcyBtYXkgdXNlIHRoZSBwcmVmaXgvZXhlY19wcmVmaXggc3ltYm9scyB3aGljaCB3aWxsIG9ubHkgeWllbGQgIk5PTkUiCisjIHNvIHdlIGhhdmUgdG8gY2hlY2svd29yayBhcm91bmQuICBXZSBkbyBwcmVmZXIgdGhlIHJlc3VsdCBvZiAiZXZhbCIuLi4KK2V2YWwgY2ZfZHN0X2V2YWw9IiRjZl9kc3RfcGF0aCIKK2Nhc2UgIngkY2ZfZHN0X2V2YWwiIGluCisoeE5PTkUqKQorCVRFUk1QQVRIPSRjZl9kc3RfcGF0aAorCTs7CisoKikKKwlURVJNUEFUSD0iJGNmX2RzdF9ldmFsIgorCTs7Citlc2FjCisKKwllY2hvICIkYXNfbWU6NzQxMzogcmVzdWx0OiAkVEVSTVBBVEgiID4mNQorZWNobyAiJHtFQ0hPX1R9JFRFUk1QQVRIIiA+JjYKKwl0ZXN0IC1uICIkVEVSTVBBVEgiICYmCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFRFUk1QQVRIICIkVEVSTVBBVEgiCitFT0YKKworCSMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWdldGNhcCB0byB1c2UgYSBoYWNrZWQgZ2V0Y2FwIGZvciByZWFkaW5nIHRlcm1jYXBzCisJZWNobyAiJGFzX21lOjc0MjE6IGNoZWNraW5nIGlmIGZhc3QgdGVybWNhcC1sb2FkZXIgaXMgbmVlZGVkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZmFzdCB0ZXJtY2FwLWxvYWRlciBpcyBuZWVkZWQuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nZXRjYXAgb3IgLS1kaXNhYmxlLWdldGNhcCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9nZXRjYXArc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2dldGNhcCIKKyAgd2l0aF9nZXRjYXA9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX2dldGNhcD1ubworZmk7CisJZWNobyAiJGFzX21lOjc0MzE6IHJlc3VsdDogJHdpdGhfZ2V0Y2FwIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2dldGNhcCIgPiY2CisJdGVzdCAieCR3aXRoX2dldGNhcCIgPSAieHllcyIgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9HRVRDQVAgMQorRU9GCisKKwllY2hvICIkYXNfbWU6NzQzODogY2hlY2tpbmcgaWYgdHJhbnNsYXRlZCB0ZXJtY2FwcyB3aWxsIGJlIGNhY2hlZCBpbiB+Ly50ZXJtaW5mbyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRyYW5zbGF0ZWQgdGVybWNhcHMgd2lsbCBiZSBjYWNoZWQgaW4gfi8udGVybWluZm8uLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgb3IgLS1kaXNhYmxlLWdldGNhcC1jYWNoZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9nZXRjYXBfY2FjaGUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2dldGNhcF9jYWNoZSIKKyAgd2l0aF9nZXRjYXBfY2FjaGU9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX2dldGNhcF9jYWNoZT1ubworZmk7CisJZWNobyAiJGFzX21lOjc0NDg6IHJlc3VsdDogJHdpdGhfZ2V0Y2FwX2NhY2hlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2dldGNhcF9jYWNoZSIgPiY2CisJdGVzdCAieCR3aXRoX2dldGNhcF9jYWNoZSIgPSAieHllcyIgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9HRVRDQVBfQ0FDSEUgMQorRU9GCisKK2ZpCisKKyMjIyAgIFVzZSBvcHRpb24gLS1kaXNhYmxlLWhvbWUtdGVybWluZm8gdG8gY29tcGxldGVseSByZW1vdmUgfi8udGVybWluZm8KK2VjaG8gIiRhc19tZTo3NDU4OiBjaGVja2luZyBpZiB+Ly50ZXJtaW5mbyBpcyB3YW50ZWQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB+Ly50ZXJtaW5mbyBpcyB3YW50ZWQuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ob21lLXRlcm1pbmZvIG9yIC0tZGlzYWJsZS1ob21lLXRlcm1pbmZvIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2hvbWVfdGVybWluZm8rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2hvbWVfdGVybWluZm8iCisgIHdpdGhfaG9tZV90ZXJtaW5mbz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfaG9tZV90ZXJtaW5mbz15ZXMKK2ZpOworZWNobyAiJGFzX21lOjc0Njg6IHJlc3VsdDogJHdpdGhfaG9tZV90ZXJtaW5mbyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9ob21lX3Rlcm1pbmZvIiA+JjYKK3Rlc3QgIngkd2l0aF9ob21lX3Rlcm1pbmZvIiA9ICJ4eWVzIiAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX0hPTUVfVEVSTUlORk8gMQorRU9GCisKK2VjaG8gIiRhc19tZTo3NDc1OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgcmVzdHJpY3RlZCBlbnZpcm9ubWVudCB3aGVuIHJ1bm5pbmcgYXMgcm9vdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSByZXN0cmljdGVkIGVudmlyb25tZW50IHdoZW4gcnVubmluZyBhcyByb290Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcm9vdC1lbnZpcm9uIG9yIC0tZGlzYWJsZS1yb290LWVudmlyb24gd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcm9vdF9lbnZpcm9uK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9yb290X2Vudmlyb24iCisgIHdpdGhfcm9vdF9lbnZpcm9uPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9yb290X2Vudmlyb249eWVzCitmaTsKK2VjaG8gIiRhc19tZTo3NDg1OiByZXN1bHQ6ICR3aXRoX3Jvb3RfZW52aXJvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9yb290X2Vudmlyb24iID4mNgordGVzdCAieCR3aXRoX3Jvb3RfZW52aXJvbiIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfUk9PVF9FTlZJUk9OIDEKK0VPRgorCisjIyMgICBVc2Ugb3B0aW9uIC0tZW5hYmxlLXN5bWxpbmtzIHRvIG1ha2UgdGljIHVzZSBzeW1saW5rcywgbm90IGhhcmQgbGlua3MKKyMjIyAgIHRvIHJlZHVjZSBzdG9yYWdlIHJlcXVpcmVtZW50cyBmb3IgdGhlIHRlcm1pbmZvIGRhdGFiYXNlLgorCitmb3IgYWNfZnVuYyBpbiBcCisJcmVtb3ZlIFwKKwl1bmxpbmsKK2RvCithc19hY192YXI9YGVjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjc1MDA6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3NTA2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyICRhY19mdW5jICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl8kYWNfZnVuYykgfHwgZGVmaW5lZCAoX19zdHViX19fJGFjX2Z1bmMpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSAkYWNfZnVuYzsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3NTM3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NTQwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzU0MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc1NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBldmFsICIkYXNfYWNfdmFyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZXZhbCAiJGFzX2FjX3Zhcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjc1NTY6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KKworZm9yIGFjX2Z1bmMgaW4gXAorCQlsaW5rIFwKKwkJc3ltbGluaworZG8KK2FzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6NzU3MzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19mdW5jLi4uICRFQ0hPX0MiID4mNgoraWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY192YXIrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc1NzkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgJGFjX2Z1bmMgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViXyRhY19mdW5jKSB8fCBkZWZpbmVkIChfX3N0dWJfX18kYWNfZnVuYykKK2Nob2tlIG1lCisjZWxzZQorZiA9ICRhY19mdW5jOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc2MTA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc2MTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3NjE2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzYxOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY192YXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfdmFyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NzYyOTogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKK2Vsc2UKKwllY2hvICIkYXNfbWU6NzY0MDogY2hlY2tpbmcgaWYgbGluay9zeW1saW5rIGZ1bmN0aW9ucyB3b3JrIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbGluay9zeW1saW5rIGZ1bmN0aW9ucyB3b3JrLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9saW5rX2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwkJY2ZfY3ZfbGlua19mdW5jcz0KKwkJZm9yIGNmX2Z1bmMgaW4gbGluayBzeW1saW5rIDsgZG8KKwkJCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisKKwkJCWV2YWwgJ2FjX2N2X2Z1bmNfJyRjZl9mdW5jJz1lcnJvcicKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3NjUzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCitpbnQgbWFpbigpCit7CisJaW50IGZhaWwgPSAwOworCWNoYXIgKnNyYyA9ICJjb25maWcubG9nIjsKKwljaGFyICpkc3QgPSAiY29uZnRlc3QuY2hrIjsKKwlzdHJ1Y3Qgc3RhdCBzcmNfc2I7CisJc3RydWN0IHN0YXQgZHN0X3NiOworCisJc3RhdChzcmMsICZzcmNfc2IpOworCWZhaWwgPSAoJGNmX2Z1bmMoImNvbmZpZy5sb2ciLCAiY29uZnRlc3QuY2hrIikgPCAwKQorCSAgICB8fCAoc3RhdChkc3QsICZkc3Rfc2IpIDwgMCkKKwkgICAgfHwgKGRzdF9zYi5zdF9tdGltZSAhPSBzcmNfc2Iuc3RfbXRpbWUpOworI2lmZGVmIEhBVkVfVU5MSU5LCisJdW5saW5rKGRzdCk7CisjZWxzZQorCXJlbW92ZShkc3QpOworI2VuZGlmCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSAoZmFpbCk7Cit9CisKK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3NjgzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3Njg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3Njg4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzY5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwkJCWNmX2N2X2xpbmtfZnVuY3M9IiRjZl9jdl9saW5rX2Z1bmNzICRjZl9mdW5jIgorCQkJZXZhbCAnYWNfY3ZfZnVuY18nJGNmX2Z1bmMnPXllcycKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCQkJZXZhbCAnYWNfY3ZfZnVuY18nJGNmX2Z1bmMnPW5vJworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCQlkb25lCisJCXRlc3QgLXogIiRjZl9jdl9saW5rX2Z1bmNzIiAmJiBjZl9jdl9saW5rX2Z1bmNzPW5vCisKK2ZpCitlY2hvICIkYXNfbWU6NzcwOTogcmVzdWx0OiAkY2ZfY3ZfbGlua19mdW5jcyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbGlua19mdW5jcyIgPiY2CisJdGVzdCAiJGFjX2N2X2Z1bmNfbGluayIgICAgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTElOSyAxCitFT0YKKworCXRlc3QgIiRhY19jdl9mdW5jX3N5bWxpbmsiID0geWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1NZTUxJTksgMQorRU9GCisKK2ZpCisKK3dpdGhfbGlua3M9bm8KK3dpdGhfc3ltbGlua3M9bm8KKworIyBzb2Z0IGxpbmtzIChzeW1ib2xpYyBsaW5rcykgYXJlIHVzZWZ1bCBmb3Igc29tZSBzeXN0ZW1zIHdoZXJlIGhhcmQgbGlua3MgZG8KKyMgbm90IHdvcmssIG9yIHRvIG1ha2UgaXQgc2ltcGxlciB0byBjb3B5IHRlcm1pbmZvIHRyZWVzIGFyb3VuZC4KK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19zeW1saW5rIiA9IHh5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjc3Mjk6IGNoZWNraW5nIGlmIHRpYyBzaG91bGQgdXNlIHN5bWJvbGljIGxpbmtzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGljIHNob3VsZCB1c2Ugc3ltYm9saWMgbGlua3MuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zeW1saW5rcyBvciAtLWRpc2FibGUtc3ltbGlua3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfc3ltbGlua3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3N5bWxpbmtzIgorICB3aXRoX3N5bWxpbmtzPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9zeW1saW5rcz1ubworZmk7CisJZWNobyAiJGFzX21lOjc3Mzk6IHJlc3VsdDogJHdpdGhfc3ltbGlua3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfc3ltbGlua3MiID4mNgorZmkKKworIyBJZiB3ZSBoYXZlIGhhcmQgbGlua3MgYW5kIGRpZCBub3QgY2hvb3NlIHRvIHVzZSBzb2Z0IGxpbmtzIGluc3RlYWQsIHRoZXJlIGlzCisjIG5vIHJlYXNvbiB0byBtYWtlIHRoaXMgY2hvaWNlIG9wdGlvbmFsIC0gdXNlIHRoZSBoYXJkIGxpbmtzLgoraWYgdGVzdCAiJHdpdGhfc3ltbGlua3MiID0gbm8gOyB0aGVuCisJZWNobyAiJGFzX21lOjc3NDY6IGNoZWNraW5nIGlmIHRpYyBzaG91bGQgdXNlIGhhcmQgbGlua3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aWMgc2hvdWxkIHVzZSBoYXJkIGxpbmtzLi4uICRFQ0hPX0MiID4mNgorCWlmIHRlc3QgIngkYWNfY3ZfZnVuY19saW5rIiA9IHh5ZXMgOyB0aGVuCisJCXdpdGhfbGlua3M9eWVzCisJZWxzZQorCQl3aXRoX2xpbmtzPW5vCisJZmkKKwllY2hvICIkYXNfbWU6Nzc1MzogcmVzdWx0OiAkd2l0aF9saW5rcyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9saW5rcyIgPiY2CitmaQorCit0ZXN0ICJ4JHdpdGhfbGlua3MiID0geHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX0xJTktTIDEKK0VPRgorCit0ZXN0ICJ4JHdpdGhfc3ltbGlua3MiID0geHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1NZTUxJTktTIDEKK0VPRgorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWJyb2tlbi1saW5rZXIgdG8gZm9yY2Ugb24gdXNlIG9mIGJyb2tlbi1saW5rZXIgc3VwcG9ydAorZWNobyAiJGFzX21lOjc3Njg6IGNoZWNraW5nIGlmIHlvdSB3YW50IGJyb2tlbi1saW5rZXIgc3VwcG9ydCBjb2RlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgYnJva2VuLWxpbmtlciBzdXBwb3J0IGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1icm9rZW5fbGlua2VyIG9yIC0tZGlzYWJsZS1icm9rZW5fbGlua2VyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2Jyb2tlbl9saW5rZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2Jyb2tlbl9saW5rZXIiCisgIHdpdGhfYnJva2VuX2xpbmtlcj0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfYnJva2VuX2xpbmtlcj0ke0JST0tFTl9MSU5LRVI6LW5vfQorZmk7CitlY2hvICIkYXNfbWU6Nzc3ODogcmVzdWx0OiAkd2l0aF9icm9rZW5fbGlua2VyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2Jyb2tlbl9saW5rZXIiID4mNgorCitCUk9LRU5fTElOS0VSPTAKK2lmIHRlc3QgIngkd2l0aF9icm9rZW5fbGlua2VyIiA9IHh5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEJST0tFTl9MSU5LRVIgMQorRU9GCisKKwlCUk9LRU5fTElOS0VSPTEKK2VsaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gc2hhcmVkIDsgdGhlbgorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKGN5Z3dpbiopCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEJST0tFTl9MSU5LRVIgMQorRU9GCisKKwkJQlJPS0VOX0xJTktFUj0xCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJY3lnd2luIGxpbmtlciBpcyBicm9rZW4gYW55d2F5IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NzgwMDogdGVzdGluZyBjeWd3aW4gbGlua2VyIGlzIGJyb2tlbiBhbnl3YXkgLi4uIiAxPiY1CisKKwkJOzsKKwllc2FjCitmaQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWJzZHBhZCB0byBoYXZlIHRwdXRzIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nCitlY2hvICIkYXNfbWU6NzgwNzogY2hlY2tpbmcgaWYgdHB1dHMgc2hvdWxkIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdHB1dHMgc2hvdWxkIHByb2Nlc3MgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYnNkcGFkIG9yIC0tZGlzYWJsZS1ic2RwYWQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfYnNkcGFkK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9ic2RwYWQiCisgIHdpdGhfYnNkcGFkPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9ic2RwYWQ9bm8KK2ZpOworZWNobyAiJGFzX21lOjc4MTc6IHJlc3VsdDogJHdpdGhfYnNkcGFkIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2JzZHBhZCIgPiY2Cit0ZXN0ICJ4JHdpdGhfYnNkcGFkIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEJTRF9UUFVUUyAxCitFT0YKKworIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS13aWRlYyB0byB0dXJuIG9uIHVzZSBvZiB3aWRlLWNoYXJhY3RlciBzdXBwb3J0CitOQ1VSU0VTX0NIX1Q9Y2h0eXBlCitOQ1VSU0VTX0xJQlVURjg9MAorCitORUVEX1dDSEFSX0g9MAorTkNVUlNFU19NQlNUQVRFX1Q9MAorTkNVUlNFU19XQ0hBUl9UPTAKK05DVVJTRVNfV0lOVF9UPTAKKworIyBDaGVjayB0byBkZWZpbmUgX1hPUEVOX1NPVVJDRSAiYXV0b21hdGljYWxseSIKK0NQUEZMQUdTX2JlZm9yZV9YT1BFTj0iJENQUEZMQUdTIgorCitjZl9YT1BFTl9TT1VSQ0U9NTAwCitjZl9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCitjZl94b3Blbl9zb3VyY2U9CisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhhaXhbNC03XSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9BTExfU09VUkNFIgorCTs7CisoY3lnd2lufG1zeXMpCisJY2ZfWE9QRU5fU09VUkNFPTYwMAorCTs7CisoZGFyd2luWzAtOF0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0FQUExFX0NfU09VUkNFIgorCTs7CisoZGFyd2luKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0RBUldJTl9DX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhmcmVlYnNkKnxkcmFnb25mbHkqKQorCSMgNS54IGhlYWRlcnMgYXNzb2NpYXRlCisJIwlfWE9QRU5fU09VUkNFPTYwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCisJIwlfWE9QRU5fU09VUkNFPTUwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCisJY2ZfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9UWVBFUyAtRF9fQlNEX1ZJU0lCTEUgLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCTs7CisoaHB1eDExKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT01MDAiCisJOzsKKyhocHV4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIgorCTs7CisoaXJpeFs1Nl0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX1NHSV9TT1VSQ0UiCisJY2ZfWE9QRU5fU09VUkNFPQorCTs7CisobGludXgqfGdudSp8bWludCp8aypic2QqLWdudSkKKworZWNobyAiJGFzX21lOjc4NzQ6IGNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9HTlVfU09VUkNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBkZWZpbmUgX0dOVV9TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2dudV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3ODgxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3ODk2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3ODk5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjc5MDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3OTA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZ251X3NvdXJjZT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9zYXZlPSIkQ1BQRkxBR1MiCisJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3OTE0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc5Mjk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc5MzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzkzNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc5Mzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9nbnVfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2dudV9zb3VyY2U9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6Nzk1MzogcmVzdWx0OiAkY2ZfY3ZfZ251X3NvdXJjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ251X3NvdXJjZSIgPiY2Cit0ZXN0ICIkY2ZfY3ZfZ251X3NvdXJjZSIgPSB5ZXMgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9HTlVfU09VUkNFIgorCisJOzsKKyhtaW5peCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9ORVRCU0RfU09VUkNFIiAjIFBPU0lYLjEtMjAwMSBmZWF0dXJlcyBhcmUgaWZkZWYnZCB3aXRoIHRoaXMuLi4KKwk7OworKG1pcmJzZCopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0Ugb3IgX1BPU0lYX1NPVVJDRSBicmVha3MgPHN5cy9zZWxlY3QuaD4gYW5kIG90aGVyIGhlYWRlcnMgd2hpY2ggdXNlIHVfaW50IC8gdV9zaG9ydCB0eXBlcworCWNmX1hPUEVOX1NPVVJDRT0KKworY2ZfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFCisKK2NmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitjZl90cmltX0NGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworY2ZfdHJpbV9DUFBGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitlY2hvICIkYXNfbWU6Nzk3ODogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfcG9zaXhfY19zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo3OTg0OiB0ZXN0aW5nIGlmIHRoZSBzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkIGdvIG5vIGZ1cnRoZXIgLi4uIiAxPiY1CisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc5ODcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODAwMjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODAwNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4MDA4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODAxMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3dhbnRfcG9zaXhfc291cmNlPW5vCisJIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbgorCSAoLlsxMl0/PyopCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCisJCTs7CisJICguMikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJICguKikKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJIGVzYWMKKwkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4MDMyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1BPU0lYX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgwNDc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgwNTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODA1MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgwNTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Bvc2l4X2Nfc291cmNlPSIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UgLURfUE9TSVhfU09VUkNFIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBmaQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjgwNjc6IHRlc3RpbmcgaWZkZWYgZnJvbSB2YWx1ZSAkY2ZfUE9TSVhfQ19TT1VSQ0UgLi4uIiAxPiY1CisKKwkgQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODA3MjogdGVzdGluZyBpZiB0aGUgc2Vjb25kIGNvbXBpbGUgZG9lcyBub3QgbGVhdmUgb3VyIGRlZmluaXRpb24gaW50YWN0IGVycm9yIC4uLiIgMT4mNQorCisJIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODA3NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MDkwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MDkzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjgwOTY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MDk5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9wb3NpeF9jX3NvdXJjZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6ODExNTogcmVzdWx0OiAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Bvc2l4X2Nfc291cmNlIiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiAhPSBubyA7IHRoZW4KKwlDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwlDUFBGTEFHUz0iJGNmX3RyaW1fQ1BQRkxBR1MiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2N2X3Bvc2l4X2Nfc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCisJOzsKKyhuZXRic2QqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfTkVUQlNEX1NPVVJDRSIgIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIElQdjYgZm9yIGx5bnggb24gTmV0QlNEIDEuNiwgYnJlYWtzIHh0ZXJtLCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdworCTs7Cisob3BlbmJzZFs0LTldKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBsb3dlciB0aGFuIDUwMCBicmVha3MgZysrIGNvbXBpbGUgd2l0aCB3Y2hhci5oLCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJY2ZfeG9wZW5fc291cmNlPSItRF9CU0RfU09VUkNFIgorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwk7OworKG9wZW5ic2QqKQorCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGJyZWFrcyB4dGVybSBvbiBPcGVuQlNEIDIuOCwgaXMgbm90IG5lZWRlZCBmb3IgbmN1cnNlc3cKKwk7OworKG9zZls0NV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfT1NGX1NPVVJDRSIKKwk7OworKG50by1xbngqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfUU5YX1NPVVJDRSIKKwk7OworKHNjbyopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCisJOzsKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCisJOzsKKyhzeXN2NC4ydXcyLiopICMgTm92ZWxsL1NDTyBVbml4V2FyZSAyLnggKHRlc3RlZCBvbiAyLjEuMikKKwljZl9YT1BFTl9TT1VSQ0U9CisJY2ZfUE9TSVhfQ19TT1VSQ0U9CisJOzsKKygqKQorCitlY2hvICIkYXNfbWU6ODIzMzogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl94b3Blbl9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODI0MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworaW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgyNTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgyNjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODI2NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgyNjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfc2F2ZT0iJENQUEZMQUdTIgorCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDgyNzcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjgyOTY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgyOTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODMwMjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgzMDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0UKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlDUFBGTEFHUz0iJGNmX3NhdmUiCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZTo4MzIwOiByZXN1bHQ6ICRjZl9jdl94b3Blbl9zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3hvcGVuX3NvdXJjZSIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl94b3Blbl9zb3VyY2UiICE9IG5vIDsgdGhlbgorCitDRkxBR1M9YGVjaG8gIiRDRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwljZl90ZW1wX3hvcGVuX3NvdXJjZT0iLURfWE9QRU5fU09VUkNFPSRjZl9jdl94b3Blbl9zb3VyY2UiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3RlbXBfeG9wZW5fc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCitjZl9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UKKworY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitjZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKK2NmX3RyaW1fQ0ZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitjZl90cmltX0NQUEZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK2VjaG8gIiRhc19tZTo4NDI4OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1BPU0lYX0NfU09VUkNFLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9wb3NpeF9jX3NvdXJjZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojg0MzQ6IHRlc3RpbmcgaWYgdGhlIHN5bWJvbCBpcyBhbHJlYWR5IGRlZmluZWQgZ28gbm8gZnVydGhlciAuLi4iIDE+JjUKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODQzNyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4NDUyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NDU1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg0NTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NDYxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfcG9zaXhfY19zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfd2FudF9wb3NpeF9zb3VyY2U9bm8KKwkgY2FzZSAuJGNmX1BPU0lYX0NfU09VUkNFIGluCisJICguWzEyXT8/KikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJOzsKKwkgKC4yKQorCQljZl9jdl9wb3NpeF9jX3NvdXJjZT0iLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIgorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgKC4qKQorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgZXNhYworCSBpZiB0ZXN0ICIkY2Zfd2FudF9wb3NpeF9zb3VyY2UiID0geWVzIDsgdGhlbgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg0ODIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZmRlZiBfUE9TSVhfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODQ5NzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODUwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4NTAzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODUwNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfcG9zaXhfY19zb3VyY2U9IiRjZl9jdl9wb3NpeF9jX3NvdXJjZSAtRF9QT1NJWF9TT1VSQ0UiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJIGZpCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODUxNzogdGVzdGluZyBpZmRlZiBmcm9tIHZhbHVlICRjZl9QT1NJWF9DX1NPVVJDRSAuLi4iIDE+JjUKKworCSBDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTICRjZl9jdl9wb3NpeF9jX3NvdXJjZSIKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo4NTIyOiB0ZXN0aW5nIGlmIHRoZSBzZWNvbmQgY29tcGlsZSBkb2VzIG5vdCBsZWF2ZSBvdXIgZGVmaW5pdGlvbiBpbnRhY3QgZXJyb3IgLi4uIiAxPiY1CisKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4NTI1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9QT1NJWF9DX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjg1NDA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg1NDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODU0NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg1NDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJIENGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCSBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZTo4NTY1OiByZXN1bHQ6ICRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfcG9zaXhfY19zb3VyY2UiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiICE9IG5vIDsgdGhlbgorCUNGTEFHUz0iJGNmX3RyaW1fQ0ZMQUdTIgorCUNQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyIKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2ZpCisKKwk7OworZXNhYworCitpZiB0ZXN0IC1uICIkY2ZfeG9wZW5fc291cmNlIiA7IHRoZW4KKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfeG9wZW5fc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZCB0byBcJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojg3MjM6IHRlc3RpbmcgYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIC4uLiIgMT4mNQorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODczMTogdGVzdGluZyBhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIC4uLiIgMT4mNQorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODczOTogdGVzdGluZyBhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIC4uLiIgMT4mNQorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworaWYgdGVzdCAtbiAiJGNmX1hPUEVOX1NPVVJDRSIgJiYgdGVzdCAteiAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJZWNobyAiJGFzX21lOjg3NDc6IGNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldC4uLiAkRUNIT19DIiA+JjYKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg3NTAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjg3NjU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg3Njg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODc3MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg3NzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9YT1BFTl9TT1VSQ0Vfc2V0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9YT1BFTl9TT1VSQ0Vfc2V0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJZWNobyAiJGFzX21lOjg3ODM6IHJlc3VsdDogJGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNgorCWlmIHRlc3QgJGNmX1hPUEVOX1NPVVJDRV9zZXQgPSB5ZXMKKwl0aGVuCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODc4OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmIChfWE9QRU5fU09VUkNFIC0gMCkgPCAkY2ZfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODgwMzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODgwNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4ODA5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODgxMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX1hPUEVOX1NPVVJDRV9zZXRfb2s9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJaWYgdGVzdCAkY2ZfWE9QRU5fU09VUkNFX3NldF9vayA9IG5vCisJCXRoZW4KKwkJCXsgZWNobyAiJGFzX21lOjg4MjM6IFdBUk5JTkc6IF9YT1BFTl9TT1VSQ0UgaXMgbG93ZXIgdGhhbiByZXF1ZXN0ZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBfWE9QRU5fU09VUkNFIGlzIGxvd2VyIHRoYW4gcmVxdWVzdGVkIiA+JjI7fQorCQlmaQorCWVsc2UKKworZWNobyAiJGFzX21lOjg4Mjg6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfeG9wZW5fc291cmNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg4MzUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4ODU0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4ODU3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg4NjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4ODYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4ODcyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4ODkxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4ODk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg4OTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4OTAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3hvcGVuX3NvdXJjZT0kY2ZfWE9QRU5fU09VUkNFCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6ODkxNTogcmVzdWx0OiAkY2ZfY3ZfeG9wZW5fc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl94b3Blbl9zb3VyY2UiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfeG9wZW5fc291cmNlIiAhPSBubyA7IHRoZW4KKworQ0ZMQUdTPWBlY2hvICIkQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCisJY2ZfdGVtcF94b3Blbl9zb3VyY2U9Ii1EX1hPUEVOX1NPVVJDRT0kY2ZfY3ZfeG9wZW5fc291cmNlIgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl90ZW1wX3hvcGVuX3NvdXJjZQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworCWZpCitmaQorCitDUFBGTEFHU19hZnRlcl9YT1BFTj0iJENQUEZMQUdTIgorCisjIFdvcmsgYXJvdW5kIGJyZWFrYWdlIG9uIE9TIFgKKworZWNobyAiJGFzX21lOjkwMTc6IGNoZWNraW5nIGlmIFNJR1dJTkNIIGlzIGRlZmluZWQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBTSUdXSU5DSCBpcyBkZWZpbmVkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9kZWZpbmVfc2lnd2luY2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTAyNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+CisKK2ludAorbWFpbiAoKQoreworaW50IHggPSBTSUdXSU5DSAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5MDM5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDQyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjkwNDU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDQ4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDkwNTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjdW5kZWYgX1hPUEVOX1NPVVJDRQorI3VuZGVmIF9QT1NJWF9TT1VSQ0UKKyN1bmRlZiBfUE9TSVhfQ19TT1VSQ0UKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+CisKK2ludAorbWFpbiAoKQoreworaW50IHggPSBTSUdXSU5DSAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5MDczOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDc2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjkwNzk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDgyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoPW1heWJlCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2RlZmluZV9zaWd3aW5jaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6OTA5NjogcmVzdWx0OiAkY2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9kZWZpbmVfc2lnd2luY2giID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfZGVmaW5lX3NpZ3dpbmNoIiA9IG1heWJlIDsgdGhlbgorZWNobyAiJGFzX21lOjkxMDA6IGNoZWNraW5nIGZvciBhY3R1YWwgU0lHV0lOQ0ggZGVmaW5pdGlvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhY3R1YWwgU0lHV0lOQ0ggZGVmaW5pdGlvbi4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfZml4dXBfc2lnd2luY2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfZml4dXBfc2lnd2luY2g9dW5rbm93bgorY2Zfc2lnd2luY2g9MzIKK3doaWxlIHRlc3QgJGNmX3NpZ3dpbmNoICE9IDEKK2RvCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5MTExICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI3VuZGVmIF9YT1BFTl9TT1VSQ0UKKyN1bmRlZiBfUE9TSVhfU09VUkNFCisjdW5kZWYgX1BPU0lYX0NfU09VUkNFCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgorCitpbnQKK21haW4gKCkKK3sKKworI2lmIFNJR1dJTkNIICE9ICRjZl9zaWd3aW5jaAorbWFrZSBhbiBlcnJvcgorI2VuZGlmCitpbnQgeCA9IFNJR1dJTkNICisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxMzM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkxMzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTEzOTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkxNDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9maXh1cF9zaWd3aW5jaD0kY2Zfc2lnd2luY2gKKwkgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitjZl9zaWd3aW5jaD1gZXhwciAkY2Zfc2lnd2luY2ggLSAxYAorZG9uZQorCitmaQorZWNobyAiJGFzX21lOjkxNTY6IHJlc3VsdDogJGNmX2N2X2ZpeHVwX3NpZ3dpbmNoIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9maXh1cF9zaWd3aW5jaCIgPiY2CisKKwlpZiB0ZXN0ICIkY2ZfY3ZfZml4dXBfc2lnd2luY2giICE9IHVua25vd24gOyB0aGVuCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURTSUdXSU5DSD0kY2ZfY3ZfZml4dXBfc2lnd2luY2giCisJZmkKK2ZpCisKKyMgQ2hlY2tzIGZvciBDT0RFU0VUIHN1cHBvcnQuCisKK2VjaG8gIiRhc19tZTo5MTY2OiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FtX2N2X2xhbmdpbmZvX2NvZGVzZXQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5MTcyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxsYW5naW5mby5oPgoraW50CittYWluICgpCit7CitjaGFyKiBjcyA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTE4NDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTE4NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxOTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MTkzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYW1fY3ZfbGFuZ2luZm9fY29kZXNldD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYW1fY3ZfbGFuZ2luZm9fY29kZXNldD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZTo5MjA0OiByZXN1bHQ6ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhbV9jdl9sYW5naW5mb19jb2Rlc2V0IiA+JjYKKwlpZiB0ZXN0ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0ID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTEFOR0lORk9fQ09ERVNFVCAxCitFT0YKKworCWZpCisKKyMgdXNlIHRoZXNlIHZhcmlhYmxlcyB0byB3b3JrIGFyb3VuZCBhIGRlZmVjdCBpbiBnY2MncyBmaXhpbmNsdWRlcy4KK05DVVJTRVNfT0tfV0NIQVJfVD0KK05DVVJTRVNfT0tfV0lOVF9UPQorCitlY2hvICIkYXNfbWU6OTIxODogY2hlY2tpbmcgaWYgeW91IHdhbnQgd2lkZS1jaGFyYWN0ZXIgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHdpZGUtY2hhcmFjdGVyIGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS13aWRlYyBvciAtLWRpc2FibGUtd2lkZWMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfd2lkZWMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3dpZGVjIgorICB3aXRoX3dpZGVjPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF93aWRlYz1ubworZmk7CitlY2hvICIkYXNfbWU6OTIyODogcmVzdWx0OiAkd2l0aF93aWRlYyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF93aWRlYyIgPiY2CitpZiB0ZXN0ICJ4JHdpdGhfd2lkZWMiID0geHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JGRpc2FibGVfbGliX3N1ZmZpeGVzIiA9IHhubyA7IHRoZW4KKwkJTElCX1NVRkZJWD0idyR7TElCX1NVRkZJWH0iCisJZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1dJREVDX1NVUFBPUlQgMQorRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVNfV0lERUNIQVIgMQorRU9GCisKK2VjaG8gIiRhc19tZTo5MjQzOiBjaGVja2luZyBpZiB3Y2hhci5oIGNhbiBiZSB1c2VkIGFzIGlzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2NoYXIuaCBjYW4gYmUgdXNlZCBhcyBpcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3Zfd2NoYXJfaF9va2F5K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTI1MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorCitpbnQKK21haW4gKCkKK3sKKworCXdpbnRfdCBmb28gPSAwOworCWludCBiYXIgPSBpc3dwdW5jdChmb28pCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkyNjc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkyNzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTI3MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkyNzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl93Y2hhcl9oX29rYXk9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3djaGFyX2hfb2theT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo5Mjg2OiByZXN1bHQ6ICRjZl9jdl93Y2hhcl9oX29rYXkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3djaGFyX2hfb2theSIgPiY2CisKK2lmIHRlc3QgJGNmX2N2X3djaGFyX2hfb2theSA9IG5vCit0aGVuCisKK2VjaG8gIiRhc19tZTo5MjkyOiBjaGVja2luZyBpZiB3ZSBtdXN0IGRlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRC4uLiAkRUNIT19DIiA+JjYKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTI5NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5MzExOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MzE0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjkzMTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MzIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZTo5MzI5OiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CisKK2lmIHRlc3QgIiRjZl9yZXN1bHQiID0geWVzIDsgdGhlbgorCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFX0VYVEVOREVEIgorZWxpZiB0ZXN0ICJ4IiAhPSAieCIgOyB0aGVuCisJZWNobyAiJGFzX21lOjkzMzU6IGNoZWNraW5nIGNoZWNraW5nIGZvciBjb21wYXRpYmxlIHZhbHVlIHZlcnN1cyAiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBjaGVja2luZyBmb3IgY29tcGF0aWJsZSB2YWx1ZSB2ZXJzdXMgLi4uICRFQ0hPX0MiID4mNgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTMzOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRC0gPCAwCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTM1NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTM1NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5MzYwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTM2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJZWNobyAiJGFzX21lOjkzNzI6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKwlpZiB0ZXN0ICIkY2ZfcmVzdWx0IiA9IG5vIDsgdGhlbgorCQkjIHBlcmhhcHMgd2UgY2FuIG92ZXJyaWRlIGl0IC0gdHJ5Li4uCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFX0VYVEVOREVEPSIKKwlmaQorZmkKKworZmkKKworCSMgd2l0aF9vdmVyd3JpdGU9bm8KKwlOQ1VSU0VTX0NIX1Q9Y2NoYXJfdAorCitmb3IgYWNfZnVuYyBpbiBwdXR3YyBidG93YyB3Y3RvYiBtYnRvd2Mgd2N0b21iIG1ibGVuIG1icmxlbiBtYnJ0b3djIHdjc3J0b21icyBtYnNydG93Y3Mgd2NzdG9tYnMgbWJzdG93Y3MKK2RvCithc19hY192YXI9YGVjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjkzODg6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5Mzk0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyICRhY19mdW5jICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl8kYWNfZnVuYykgfHwgZGVmaW5lZCAoX19zdHViX19fJGFjX2Z1bmMpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSAkYWNfZnVuYzsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NDI1OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NDI4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTQzMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk0MzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBldmFsICIkYXNfYWNfdmFyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZXZhbCAiJGFzX2FjX3Zhcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjk0NDQ6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCisJaWYgdGVzdCAieCRhY19jdl9mdW5jX3B1dHdjIiAhPSB4eWVzIDsgdGhlbgorCitlY2hvICIkYXNfbWU6OTQ1NjogY2hlY2tpbmcgZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc3VwcG9ydCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVyIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3V0ZjhfbGliK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljZl9zYXZlX0xJQlM9IiRMSUJTIgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTQ2NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KK2ludAorbWFpbiAoKQoreworcHV0d2MoMCwwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk0Nzc6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk0ODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5NDgzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTQ4NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3V0ZjhfbGliPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKyMgSWYgdGhlIGxpbmthZ2UgaXMgbm90IGFscmVhZHkgaW4gdGhlICRDUFBGTEFHUy8kTERGTEFHUyBjb25maWd1cmF0aW9uLCB0aGVzZQorIyB3aWxsIGJlIHNldCBvbiBjb21wbGV0aW9uIG9mIHRoZSBBQ19UUllfTElOSyBiZWxvdy4KK2NmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9CitjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOD0KKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5NDk4OiB0ZXN0aW5nIFN0YXJ0aW5nIEZJTkRfTElOS0FHRSh1dGY4LCkgLi4uIiAxPiY1CisKK2NmX3NhdmVfTElCUz0iJExJQlMiCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTUwMyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NTE2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NTE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTUyMjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk1MjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9eWVzCisJY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOD0vdXNyL2luY2x1ZGUKKwljZl9jdl9saWJyYXJ5X3BhdGhfdXRmOD0vdXNyL2xpYgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworTElCUz0iLWx1dGY4ICAkY2Zfc2F2ZV9MSUJTIgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk1MzkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8bGlidXRmOC5oPgoraW50CittYWluICgpCit7CitwdXR3YygwLDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTU1MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTU1NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk1NTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NTYxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcworCWNmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9L3Vzci9pbmNsdWRlCisJY2ZfY3ZfbGlicmFyeV9wYXRoX3V0Zjg9L3Vzci9saWIKKwljZl9jdl9saWJyYXJ5X2ZpbGVfdXRmOD0iLWx1dGY4IgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PW5vCisJTElCUz0iJGNmX3NhdmVfTElCUyIKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZmluZCBsaW5rYWdlIGZvciB1dGY4IGxpYnJhcnkiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5NTc4OiB0ZXN0aW5nIGZpbmQgbGlua2FnZSBmb3IgdXRmOCBsaWJyYXJ5IC4uLiIgMT4mNQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojk1ODA6IHRlc3RpbmcgU2VhcmNoaW5nIGZvciBoZWFkZXJzIGluIEZJTkRfTElOS0FHRSh1dGY4LCkgLi4uIiAxPiY1CisKKwljZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitjZl9zZWFyY2g9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCit0ZXN0ICJ4JGNmX2hlYWRlcl9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9oZWFkZXJfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9oZWFkZXJfcGF0aCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjgiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS91dGY4L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC91dGY4L2luY2x1ZGUvdXRmOCIKK30KKworCQkJY2ZfaGVhZGVyX3BhdGhfbGlzdD0iJGNmX2hlYWRlcl9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCisjIGFkZCB0aGUgdmFyaWF0aW9ucyBmb3IgdGhlIHBhY2thZ2Ugd2UgYXJlIGxvb2tpbmcgZm9yCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUvdXRmOCIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS91dGY4L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvdXRmOCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvdXRmOC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvdXRmOC9pbmNsdWRlL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4IgorfQorCitkb25lCisKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJGluY2x1ZGVkaXIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJGluY2x1ZGVkaXIvdXRmOCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGluY2x1ZGVkaXIvdXRmOCIKK30KKwordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9IE5PTkUgJiYgXAordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiICYmIFwKK3Rlc3QgLWQgIiRvbGRpbmNsdWRlZGlyIiAmJiB7CisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpciAgICAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIiCisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpci91dGY4ICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpci91dGY4IgorfQorCitjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoX2xpc3QiCisKKwlmb3IgY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCBpbiAkY2Zfc2VhcmNoCisJZG8KKwkJaWYgdGVzdCAtZCAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCA7IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5NjcxOiB0ZXN0aW5nIC4uLiB0ZXN0aW5nICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MgLUkkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIKKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTY3NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk2ODg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk2OTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTY5NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk2OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gZm91bmQgdXRmOCBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06OTcwMjogdGVzdGluZyAuLi4gZm91bmQgdXRmOCBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQkJY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9bWF5YmUKKwkJCQljZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCQkJYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCWZpCisJZG9uZQorCisJaWYgdGVzdCAiJGNmX2N2X2ZpbmRfbGlua2FnZV91dGY4IiA9IG1heWJlIDsgdGhlbgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojk3MjA6IHRlc3RpbmcgU2VhcmNoaW5nIGZvciB1dGY4IGxpYnJhcnkgaW4gRklORF9MSU5LQUdFKHV0ZjgsKSAuLi4iIDE+JjUKKworCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCQljZl9zYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCisJCWlmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfdXRmOCIgIT0geWVzIDsgdGhlbgorCitjZl9zZWFyY2g9CitjZl9saWJyYXJ5X3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtMREZMQUdTfSR7TElCU30iIDsgdGhlbgorCWZvciBjZl9saWJyYXJ5X3BhdGggaW4gJExERkxBR1MgJExJQlMKKwlkbworCQljYXNlICRjZl9saWJyYXJ5X3BhdGggaW4KKwkJKC1MKikKKwkJCWNmX2xpYnJhcnlfcGF0aD1gZWNobyAiLiRjZl9saWJyYXJ5X3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvbGliJCwsJ2AKKwordGVzdCAieCRjZl9saWJyYXJ5X3BhdGgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJGNmX2xpYnJhcnlfcGF0aCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX2xpYnJhcnlfcGF0aCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliL3V0ZjgiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi91dGY4L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIvdXRmOC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL3V0ZjgvbGliL3V0ZjgiCit9CisKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIiCisJdGVzdCAtZCAkcHJlZml4L2xpYi91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYi91dGY4IgorCXRlc3QgLWQgJHByZWZpeC9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliL3V0ZjgvbGliIgorCXRlc3QgLWQgJHByZWZpeC91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvdXRmOC9saWIvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2xpYi91dGY4IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9zdWJkaXJfcHJlZml4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvdXRmOCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliL3V0ZjgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi91dGY4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvbGliL3V0ZjgiCit9CisKK2RvbmUKKworY2Zfc2VhcmNoPSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKworCQkJZm9yIGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IGluICRjZl9zZWFyY2gKKwkJCWRvCisJCQkJaWYgdGVzdCAtZCAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggOyB0aGVuCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06OTc5NTogdGVzdGluZyAuLi4gdGVzdGluZyAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjggLi4uIiAxPiY1CisKKwkJCQkJQ1BQRkxBR1M9IiRjZl90ZXN0X0NQUEZMQUdTIgorCQkJCQlMSUJTPSItbHV0ZjggICRjZl9zYXZlX0xJQlMiCisJCQkJCUxERkxBR1M9IiRjZl9zYXZlX0xERkxBR1MgLUwkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiCisJCQkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTgwMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5ODE0OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5ODE3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTgyMDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4MjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIGZvdW5kIHV0ZjggbGlicmFyeSBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5ODI4OiB0ZXN0aW5nIC4uLiBmb3VuZCB1dGY4IGxpYnJhcnkgaW4gJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQkJCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcworCQkJCQljZl9jdl9saWJyYXJ5X2ZpbGVfdXRmOD0iLWx1dGY4IgorCQkJCQlicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwkJCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJCWZpCisJCQlkb25lCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCQlmaQorCisJZWxzZQorCQljZl9jdl9maW5kX2xpbmthZ2VfdXRmOD1ubworCWZpCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK0xJQlM9IiRjZl9zYXZlX0xJQlMiCisKK2lmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfdXRmOCIgPSB5ZXMgOyB0aGVuCitjZl9jdl91dGY4X2xpYj1hZGQtb24KK2Vsc2UKK2NmX2N2X3V0ZjhfbGliPW5vCitmaQorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo5ODcwOiByZXN1bHQ6ICRjZl9jdl91dGY4X2xpYiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdXRmOF9saWIiID4mNgorCisjIEhBVkVfTElCVVRGOF9IIGlzIHVzZWQgYnkgbmN1cnNlcyBpZiBjdXJzZXMuaCBpcyBzaGFyZWQgYmV0d2VlbgorIyBuY3Vyc2VzL25jdXJzZXN3OgoraWYgdGVzdCAiJGNmX2N2X3V0ZjhfbGliIiA9ICJhZGQtb24iIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQlVURjhfSCAxCitFT0YKKworaWYgdGVzdCAtbiAiJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOAorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTkwNSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk5MTc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk5MjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTkyMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk5MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo5OTQzOiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworaWYgdGVzdCAtbiAiJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoX3V0ZjgKKwlkbworCQlpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCisJCQk6CisJCWVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgorCQl0aGVuCisJCQljZl9oYXZlX2xpYmRpcj1ubworCQkJaWYgdGVzdCAtbiAiJExERkxBR1MkTElCUyIgOyB0aGVuCisJCQkJIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkJCWZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCisJCQkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KKwkJCQkJCWNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKKwkJCQkJZmkKKwkJCQlkb25lCisJCQlmaQorCQkJaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9Ojk5Nzk6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfY3ZfbGlicmFyeV9maWxlX3V0ZjgiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZmkKKworCQlpZiB0ZXN0ICIkY2ZfY3ZfdXRmOF9saWIiICE9IG5vIDsgdGhlbgorCQkJTkNVUlNFU19MSUJVVEY4PTEKKwkJZmkKKwlmaQorCisjIFRoaXMgaXMgbmVlZGVkIG9uIFRydTY0IDUuMCB0byBkZWNsYXJlIG1ic3RhdGVfdAorZWNobyAiJGFzX21lOjEwMDExOiBjaGVja2luZyBpZiB3ZSBtdXN0IGluY2x1ZGUgd2NoYXIuaCB0byBkZWNsYXJlIG1ic3RhdGVfdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIG11c3QgaW5jbHVkZSB3Y2hhci5oIHRvIGRlY2xhcmUgbWJzdGF0ZV90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9tYnN0YXRlX3Qrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDAxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfTElCVVRGOF9ICisjaW5jbHVkZSA8bGlidXRmOC5oPgorI2VuZGlmCitpbnQKK21haW4gKCkKK3sKK21ic3RhdGVfdCBzdGF0ZQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDAzNjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwMzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAwNDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDA0NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X21ic3RhdGVfdD1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMDUyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7CittYnN0YXRlX3QgdmFsdWUKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAwNzE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMDc0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMDc3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9tYnN0YXRlX3Q9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X21ic3RhdGVfdD11bmtub3duCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEwMDkyOiByZXN1bHQ6ICRjZl9jdl9tYnN0YXRlX3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X21ic3RhdGVfdCIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9tYnN0YXRlX3QiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBORUVEX1dDSEFSX0ggMQorRU9GCisKKwlORUVEX1dDSEFSX0g9MQorZmkKKworIyBpZiB3ZSBkbyBub3QgZmluZCBtYnN0YXRlX3QgaW4gZWl0aGVyIHBsYWNlLCB1c2Ugc3Vic3RpdHV0aW9uIHRvIHByb3ZpZGUgYSBmYWxsYmFjay4KK2lmIHRlc3QgIiRjZl9jdl9tYnN0YXRlX3QiID0gdW5rbm93biA7IHRoZW4KKwlOQ1VSU0VTX01CU1RBVEVfVD0xCitmaQorCisjIFRoaXMgaXMgbmVlZGVkIG9uIFRydTY0IDUuMCB0byBkZWNsYXJlIHdjaGFyX3QKK2VjaG8gIiRhc19tZToxMDExMDogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl93Y2hhcl90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTAxMTcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7Cit3Y2hhcl90IHN0YXRlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMTM1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDEzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDE0MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMTQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2NoYXJfdD1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMTUxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7Cit3Y2hhcl90IHZhbHVlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMTcwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDE3MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDE3NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMTc5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2NoYXJfdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfd2NoYXJfdD11bmtub3duCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEwMTkxOiByZXN1bHQ6ICRjZl9jdl93Y2hhcl90IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl93Y2hhcl90IiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3djaGFyX3QiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBORUVEX1dDSEFSX0ggMQorRU9GCisKKwlORUVEX1dDSEFSX0g9MQorZmkKKworIyBpZiB3ZSBkbyBub3QgZmluZCB3Y2hhcl90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCitpZiB0ZXN0ICIkY2ZfY3Zfd2NoYXJfdCIgPSB1bmtub3duIDsgdGhlbgorCU5DVVJTRVNfV0NIQVJfVD0xCitmaQorCisjIGlmIHdlIGZpbmQgd2NoYXJfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgoraWYgdGVzdCAiJGNmX2N2X3djaGFyX3QiICE9IHVua25vd24gOyB0aGVuCisJTkNVUlNFU19PS19XQ0hBUl9UPTEKK2ZpCisKKyMgVGhpcyBpcyBuZWVkZWQgb24gVHJ1NjQgNS4wIHRvIGRlY2xhcmUgd2ludF90CitlY2hvICIkYXNfbWU6MTAyMTQ6IGNoZWNraW5nIGlmIHdlIG11c3QgaW5jbHVkZSB3Y2hhci5oIHRvIGRlY2xhcmUgd2ludF90IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3aW50X3QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3dpbnRfdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMjIxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9MSUJVVEY4X0gKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CisjZW5kaWYKK2ludAorbWFpbiAoKQoreword2ludF90IHN0YXRlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMjM5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDI0MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDI0NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMjQ4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2ludF90PW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTAyNTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2lmZGVmIEhBVkVfTElCVVRGOF9ICisjaW5jbHVkZSA8bGlidXRmOC5oPgorI2VuZGlmCitpbnQKK21haW4gKCkKK3sKK3dpbnRfdCB2YWx1ZQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDI3NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAyNzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTAyODA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDI4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3dpbnRfdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfd2ludF90PXVua25vd24KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTAyOTU6IHJlc3VsdDogJGNmX2N2X3dpbnRfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3Zfd2ludF90IiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgPSB5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5FRURfV0NIQVJfSCAxCitFT0YKKworCU5FRURfV0NIQVJfSD0xCitmaQorCisjIGlmIHdlIGRvIG5vdCBmaW5kIHdpbnRfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgoraWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgPSB1bmtub3duIDsgdGhlbgorCU5DVVJTRVNfV0lOVF9UPTEKK2ZpCisKKyMgaWYgd2UgZmluZCB3aW50X3QgaW4gZWl0aGVyIHBsYWNlLCB1c2Ugc3Vic3RpdHV0aW9uIHRvIHByb3ZpZGUgYSBmYWxsYmFjay4KK2lmIHRlc3QgIiRjZl9jdl93aW50X3QiICE9IHVua25vd24gOyB0aGVuCisJTkNVUlNFU19PS19XSU5UX1Q9MQorZmkKKworCWlmIHRlc3QgIiROQ1VSU0VTX01CU1RBVEVfVCIgIT0gMDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBORUVEX01CU1RBVEVfVF9ERUYgMQorRU9GCisKKwlmaQorZmkKKworIyMjICAgdXNlIG9wdGlvbiAtLWRpc2FibGUtbHA2NCB0byBhbGxvdyBsb25nIGNodHlwZQorZWNobyAiJGFzX21lOjEwMzI3OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBfTFA2NCBkZWZpbml0aW9uIGluIGN1cnNlcy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgX0xQNjQgZGVmaW5pdGlvbiBpbiBjdXJzZXMuaC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxwNjQgb3IgLS1kaXNhYmxlLWxwNjQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbHA2NCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfbHA2NCIKKyAgd2l0aF9scDY0PSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9scDY0PSRjZl9kZnRfd2l0aF9scDY0CitmaTsKK2VjaG8gIiRhc19tZToxMDMzNzogcmVzdWx0OiAkd2l0aF9scDY0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2xwNjQiID4mNgorCitpZiB0ZXN0ICJ4JHdpdGhfbHA2NCIgPSB4eWVzIDsgdGhlbgorCWNmX2N2X2VuYWJsZV9scDY0PTEKK2Vsc2UKKwljZl9jdl9lbmFibGVfbHA2ND0wCitmaQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIG9yIC0tZGlzYWJsZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9sYXJnZWZpbGUiCisKK2ZpOworaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vOyB0aGVuCisKKyAgZWNobyAiJGFzX21lOjEwMzUzOiBjaGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VmaWxlX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICAgYWNfc2F2ZV9DQz0kQ0MKKyAgICAgICB3aGlsZSA6OyBkbworICAgICAJICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQsCisgICAgIAkgIyBzbyB1c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9wdGlvbiBpZiB0aGF0IGhlbHBzLgorICAgICAgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDM2NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorICAgICAJIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMzg1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDM4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDM5MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMzk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgICAgCSBDQz0iJENDIC1uMzIiCisgICAgIAkgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA0MDQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNDA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNDEwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA0MTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CisgICAgICAgICBicmVhaworICAgICAgIGRvbmUKKyAgICAgICBDQz0kYWNfc2F2ZV9DQworICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKKyAgICBmaQorZmkKK2VjaG8gIiRhc19tZToxMDQyNzogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY2CisgIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiAhPSBubzsgdGhlbgorICAgIENDPSRDQyRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDCisgIGZpCisKKyAgZWNobyAiJGFzX21lOjEwNDMzOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICB3aGlsZSA6OyBkbworICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubworICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNDQxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDQ2MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA0NjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA0Njc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDQ3MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDQ3OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA1MDA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNTAzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNTA2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA1MDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02NDsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBicmVhaworZG9uZQorZmkKK2VjaG8gIiRhc19tZToxMDUyMDogcmVzdWx0OiAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjYKK2lmIHRlc3QgIiRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgIT0gbm87IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMKK0VPRgorCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorICBlY2hvICIkYXNfbWU6MTA1MzA6IGNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlX2ZpbGVzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIHdoaWxlIDo7IGRvCisgIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubworICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNTM4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDU1ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA1NjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA1NjQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDU2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDU3NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjZGVmaW5lIF9MQVJHRV9GSUxFUyAxCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA1OTc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNjAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNjAzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA2MDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zeXNfbGFyZ2VfZmlsZXM9MTsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBicmVhaworZG9uZQorZmkKK2VjaG8gIiRhc19tZToxMDYxNzogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNgoraWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgIT0gbm87IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcworRU9GCisKK2ZpCitybSAtcmYgY29uZnRlc3QqCitmaQorCisJaWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vIDsgdGhlbgorCWVjaG8gIiRhc19tZToxMDYzMDogY2hlY2tpbmcgZm9yIF9MQVJHRUZJTEVfU09VUkNFIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgX0xBUkdFRklMRV9TT1VSQ0UgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgd2hpbGUgOjsgZG8KKyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2U9bm8KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDYzOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcmV0dXJuICFmc2Vla287CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwNjUwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDY1MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDY1NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNjU5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNjY4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3JldHVybiAhZnNlZWtvOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDY4MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA2ODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA2ODc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDY5MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTE7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgYnJlYWsKK2RvbmUKK2ZpCitlY2hvICIkYXNfbWU6MTA3MDE6IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZSIgPiY2CitpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlCitFT0YKKworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworIyBXZSB1c2VkIHRvIHRyeSBkZWZpbmluZyBfWE9QRU5fU09VUkNFPTUwMCB0b28sIHRvIHdvcmsgYXJvdW5kIGEgYnVnCisjIGluIGdsaWJjIDIuMS4zLCBidXQgdGhhdCBicmVha3MgdG9vIG1hbnkgb3RoZXIgdGhpbmdzLgorIyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxsbyB3aXRoIGdsaWJjLCB1cGdyYWRlIHRvIGEgZml4ZWQgZ2xpYmMuCitlY2hvICIkYXNfbWU6MTA3MTU6IGNoZWNraW5nIGZvciBmc2Vla28iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZnNlZWtvLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2ZzZWVrbytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNzIxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CityZXR1cm4gZnNlZWtvICYmIGZzZWVrbyAoc3RkaW4sIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA3MzM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNzM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA3Mzk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDc0MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2Z1bmNfZnNlZWtvPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2ZzZWVrbz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTA3NTI6IHJlc3VsdDogJGFjX2N2X2Z1bmNfZnNlZWtvIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX2ZzZWVrbyIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX2ZzZWVrbyA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0ZTRUVLTyAxCitFT0YKKworZmkKKworCSMgTm9ybWFsbHkgd2Ugd291bGQgY29sbGVjdCB0aGVzZSBkZWZpbml0aW9ucyBpbiB0aGUgY29uZmlnLmgsCisJIyBidXQgKGxpa2UgX1hPUEVOX1NPVVJDRSksIHNvbWUgZW52aXJvbm1lbnRzIHJlbHkgb24gaGF2aW5nIHRoZXNlCisJIyBkZWZpbmVkIGJlZm9yZSBhbnkgb2YgdGhlIHN5c3RlbSBoZWFkZXJzIGFyZSBpbmNsdWRlZC4gIEFub3RoZXIKKwkjIGNhc2UgY29tZXMgdXAgd2l0aCBDKyssIGUuZy4sIG9uIEFJWCB0aGUgY29tcGlsZXIgY29tcGlsZXMgdGhlCisJIyBoZWFkZXIgZmlsZXMgYnkgdGhlbXNlbHZlcyBiZWZvcmUgbG9va2luZyBhdCB0aGUgYm9keSBmaWxlcyBpdCBpcworCSMgdG9sZCB0byBjb21waWxlLiAgRm9yIG5jdXJzZXMsIHRob3NlIGhlYWRlciBmaWxlcyBkbyBub3QgaW5jbHVkZQorCSMgdGhlIGNvbmZpZy5oCisJdGVzdCAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgICAgICAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0xBUkdFX0ZJTEVTICIKKwl0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfTEFSR0VGSUxFX1NPVVJDRSAiCisJdGVzdCAiJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzICIKKworCWVjaG8gIiRhc19tZToxMDc3MzogY2hlY2tpbmcgd2hldGhlciB0byB1c2Ugc3RydWN0IGRpcmVudDY0IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0byB1c2Ugc3RydWN0IGRpcmVudDY0Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9zdHJ1Y3RfZGlyZW50NjQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwNzgwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCitpbnQKK21haW4gKCkKK3sKKworCQkvKiBpZiB0cmFuc2l0aW9uYWwgbGFyZ2VmaWxlIHN1cHBvcnQgaXMgc2V0dXAsIHRoaXMgaXMgdHJ1ZSAqLworCQlleHRlcm4gc3RydWN0IGRpcmVudDY0ICogcmVhZGRpcihESVIgKik7CisJCXN0cnVjdCBkaXJlbnQ2NCAqeCA9IHJlYWRkaXIoKERJUiAqKTApOworCQlzdHJ1Y3QgZGlyZW50ICp5ID0gcmVhZGRpcigoRElSICopMCk7CisJCWludCB6ID0geCAtIHk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTA4MDE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwODA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwODA3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA4MTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9zdHJ1Y3RfZGlyZW50NjQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3N0cnVjdF9kaXJlbnQ2ND1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZWNobyAiJGFzX21lOjEwODIxOiByZXN1bHQ6ICRjZl9jdl9zdHJ1Y3RfZGlyZW50NjQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCIgPiY2CisJdGVzdCAiJGNmX2N2X3N0cnVjdF9kaXJlbnQ2NCIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX0RJUkVOVDY0IDEKK0VPRgorCisJZmkKKworIyMjICAgdXNlIG9wdGlvbiAtLWRpc2FibGUtdHBhcm0tdmFyYXJncyB0byBtYWtlIHRwYXJtKCkgY29uZm9ybSB0byBYL09wZW4KK2VjaG8gIiRhc19tZToxMDgzMTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdHBhcm0gbm90IHRvIHVzZSBYL09wZW4gZml4ZWQtcGFyYW1ldGVyIGxpc3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0cGFybSBub3QgdG8gdXNlIFgvT3BlbiBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRwYXJtLXZhcmFyZ3Mgb3IgLS1kaXNhYmxlLXRwYXJtLXZhcmFyZ3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfdHBhcm1fdmFyYXJncytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfdHBhcm1fdmFyYXJncyIKKyAgd2l0aF90cGFybV92YXJhcmdzPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF90cGFybV92YXJhcmdzPXllcworZmk7CitlY2hvICIkYXNfbWU6MTA4NDE6IHJlc3VsdDogJHdpdGhfdHBhcm1fdmFyYXJncyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF90cGFybV92YXJhcmdzIiA+JjYKK05DVVJTRVNfVFBBUk1fVkFSQVJHUz0wCit0ZXN0ICJ4JHdpdGhfdHBhcm1fdmFyYXJncyIgPSB4eWVzICYmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUz0xCisKKyMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXRpYy1kZXBlbmRzIHRvIG1ha2UgbGlidGljIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiBuY3Vyc2VzL25jdXJzZXN3CitpZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgorZWNobyAiJGFzX21lOjEwODQ4OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0aWMgbGlicmFyeSB0byB1c2UgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBuY3Vyc2VzJExJQl9TVUZGSVggbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRpYyBsaWJyYXJ5IHRvIHVzZSBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIG5jdXJzZXMkTElCX1NVRkZJWCBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdGljLWRlcGVuZHMgb3IgLS1kaXNhYmxlLXRpYy1kZXBlbmRzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3RpY19kZXBlbmRzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV90aWNfZGVwZW5kcyIKKyAgd2l0aF90aWNfZGVwZW5kcz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfdGljX2RlcGVuZHM9eWVzCitmaTsKK2VjaG8gIiRhc19tZToxMDg1ODogcmVzdWx0OiAkd2l0aF90aWNfZGVwZW5kcyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF90aWNfZGVwZW5kcyIgPiY2CitlbHNlCisJd2l0aF90aWNfZGVwZW5kcz1ubworZmkKKworIyMjICAgdXNlIG9wdGlvbiAtLXdpdGgtYm9vbCB0byBvdmVycmlkZSBib29sJ3MgdHlwZQorZWNobyAiJGFzX21lOjEwODY1OiBjaGVja2luZyBmb3IgdHlwZSBvZiBib29sIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgb2YgYm9vbC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1ib29sIG9yIC0td2l0aG91dC1ib29sIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9ib29sK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2Jvb2wiCisgIE5DVVJTRVNfQk9PTD0iJHdpdGh2YWwiCitlbHNlCisgIE5DVVJTRVNfQk9PTD1hdXRvCitmaTsKK2VjaG8gIiRhc19tZToxMDg3NTogcmVzdWx0OiAkTkNVUlNFU19CT09MIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0JPT0wiID4mNgorCitlY2hvICIkYXNfbWU6MTA4Nzg6IGNoZWNraW5nIGZvciBhbHRlcm5hdGUgdGVybWluYWwgY2FwYWJpbGl0aWVzIGZpbGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWx0ZXJuYXRlIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBmaWxlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWNhcHMgb3IgLS13aXRob3V0LWNhcHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2NhcHMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfY2FwcyIKKyAgVEVSTUlORk9fQ0FQUz1DYXBzLiR3aXRodmFsCitlbHNlCisgIFRFUk1JTkZPX0NBUFM9Q2FwcworZmk7Cit0ZXN0IC1mICIke3NyY2Rpcn0vaW5jbHVkZS8ke1RFUk1JTkZPX0NBUFN9IiB8fCBURVJNSU5GT19DQVBTPUNhcHMKK2VjaG8gIiRhc19tZToxMDg4OTogcmVzdWx0OiAkVEVSTUlORk9fQ0FQUyIgPiY1CitlY2hvICIke0VDSE9fVH0kVEVSTUlORk9fQ0FQUyIgPiY2CisKKyMjIyAgIHVzZSBvcHRpb24gLS13aXRoLWNodHlwZSB0byBvdmVycmlkZSBjaHR5cGUncyB0eXBlCitlY2hvICIkYXNfbWU6MTA4OTM6IGNoZWNraW5nIGZvciB0eXBlIG9mIGNodHlwZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIG9mIGNodHlwZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jaHR5cGUgb3IgLS13aXRob3V0LWNodHlwZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY2h0eXBlK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2NodHlwZSIKKyAgTkNVUlNFU19DSFRZUEU9IiR3aXRodmFsIgorZWxzZQorICBOQ1VSU0VTX0NIVFlQRT0kY2ZfZGZ0X2NodHlwZQorZmk7CitlY2hvICIkYXNfbWU6MTA5MDM6IHJlc3VsdDogJE5DVVJTRVNfQ0hUWVBFIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0NIVFlQRSIgPiY2CisKKyMjIyAgIHVzZSBvcHRpb24gLS13aXRoLW9zcGVlZCB0byBvdmVycmlkZSBvc3BlZWQncyB0eXBlCitlY2hvICIkYXNfbWU6MTA5MDc6IGNoZWNraW5nIGZvciB0eXBlIG9mIG9zcGVlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIG9mIG9zcGVlZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1vc3BlZWQgb3IgLS13aXRob3V0LW9zcGVlZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfb3NwZWVkK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX29zcGVlZCIKKyAgTkNVUlNFU19PU1BFRUQ9IiR3aXRodmFsIgorZWxzZQorICBOQ1VSU0VTX09TUEVFRD1zaG9ydAorZmk7CitlY2hvICIkYXNfbWU6MTA5MTc6IHJlc3VsdDogJE5DVVJTRVNfT1NQRUVEIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX09TUEVFRCIgPiY2CisKKyMjIyAgIHVzZSBvcHRpb24gLS13aXRoLW1tYXNrLXQgdG8gb3ZlcnJpZGUgbW1hc2tfdCdzIHR5cGUKK2VjaG8gIiRhc19tZToxMDkyMTogY2hlY2tpbmcgZm9yIHR5cGUgb2YgbW1hc2tfdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIG9mIG1tYXNrX3QuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbW1hc2stdCBvciAtLXdpdGhvdXQtbW1hc2stdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbW1hc2tfdCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9tbWFza190IgorICBOQ1VSU0VTX01NQVNLX1Q9IiR3aXRodmFsIgorZWxzZQorICBOQ1VSU0VTX01NQVNLX1Q9JGNmX2RmdF9tbWFza190CitmaTsKK2VjaG8gIiRhc19tZToxMDkzMTogcmVzdWx0OiAkTkNVUlNFU19NTUFTS19UIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX01NQVNLX1QiID4mNgorCisjIyMgICB1c2Ugb3B0aW9uIC0td2l0aC1jY2hhcnctbWF4IHRvIG92ZXJyaWRlIENDSEFSV19NQVggc2l6ZQorZWNobyAiJGFzX21lOjEwOTM1OiBjaGVja2luZyBmb3Igc2l6ZSBDQ0hBUldfTUFYIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNpemUgQ0NIQVJXX01BWC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jY2hhcnctbWF4IG9yIC0td2l0aG91dC1jY2hhcnctbWF4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9jY2hhcndfbWF4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX2NjaGFyd19tYXgiCisgIE5DVVJTRVNfQ0NIQVJXX01BWD0iJHdpdGh2YWwiCitlbHNlCisgIE5DVVJTRVNfQ0NIQVJXX01BWD01CitmaTsKK2VjaG8gIiRhc19tZToxMDk0NTogcmVzdWx0OiAkTkNVUlNFU19DQ0hBUldfTUFYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX0NDSEFSV19NQVgiID4mNgorCisjIyMgICB1c2Ugb3B0aW9uIC0td2l0aC10cGFybS1hcmcgdG8gb3ZlcnJpZGUgdHBhcm0ncyBhcmd1bWVudCB0eXBlCitlY2hvICIkYXNfbWU6MTA5NDk6IGNoZWNraW5nIGZvciB0eXBlIG9mIHRwYXJtIGFyZ3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdHlwZSBvZiB0cGFybSBhcmdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXRwYXJtLWFyZyBvciAtLXdpdGhvdXQtdHBhcm0tYXJnIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF90cGFybV9hcmcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdHBhcm1fYXJnIgorICBOQ1VSU0VTX1RQQVJNX0FSRz0iJHdpdGh2YWwiCitlbHNlCisgIE5DVVJTRVNfVFBBUk1fQVJHPSRjZl9kZnRfdHBhcm1fYXJnCitmaTsKK2VjaG8gIiRhc19tZToxMDk1OTogcmVzdWx0OiAkTkNVUlNFU19UUEFSTV9BUkciID4mNQorZWNobyAiJHtFQ0hPX1R9JE5DVVJTRVNfVFBBUk1fQVJHIiA+JjYKKworIyMjIEVuYWJsZSBjb21waWxpbmctaW4gcmNzIGlkJ3MKK2VjaG8gIiRhc19tZToxMDk2MzogY2hlY2tpbmcgaWYgUkNTIGlkZW50aWZpZXJzIHNob3VsZCBiZSBjb21waWxlZC1pbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIFJDUyBpZGVudGlmaWVycyBzaG91bGQgYmUgY29tcGlsZWQtaW4uLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcmNzLWlkcyBvciAtLXdpdGhvdXQtcmNzLWlkcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcmNzX2lkcytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9yY3NfaWRzIgorICB3aXRoX3Jjc19pZHM9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9yY3NfaWRzPW5vCitmaTsKK2VjaG8gIiRhc19tZToxMDk3MzogcmVzdWx0OiAkd2l0aF9yY3NfaWRzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3Jjc19pZHMiID4mNgordGVzdCAieCR3aXRoX3Jjc19pZHMiID0geHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1JDU19JRFMgMQorRU9GCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZWNobyAiJGFzX21lOjEwOTgyOiBjaGVja2luZyBmb3JtYXQgb2YgbWFuLXBhZ2VzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9ybWF0IG9mIG1hbi1wYWdlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1tYW5wYWdlLWZvcm1hdCBvciAtLXdpdGhvdXQtbWFucGFnZS1mb3JtYXQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX21hbnBhZ2VfZm9ybWF0K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX21hbnBhZ2VfZm9ybWF0IgorICBNQU5QQUdFX0ZPUk1BVD0kd2l0aHZhbAorZWxzZQorICBNQU5QQUdFX0ZPUk1BVD11bmtub3duCitmaTsKKwordGVzdCAteiAiJE1BTlBBR0VfRk9STUFUIiAmJiBNQU5QQUdFX0ZPUk1BVD11bmtub3duCitNQU5QQUdFX0ZPUk1BVD1gZWNobyAiJE1BTlBBR0VfRk9STUFUIiB8IHNlZCAtZSAncy8sLyAvZydgCisKK2NmX3Vua25vd249CisKK2Nhc2UgJE1BTlBBR0VfRk9STUFUIGluCisodW5rbm93bikKKwlpZiB0ZXN0IC16ICIkTUFOUEFUSCIgOyB0aGVuCisJCU1BTlBBVEg9Ii91c3IvbWFuOi91c3Ivc2hhcmUvbWFuIgorCWZpCisKKwkjIGxvb2sgZm9yIHRoZSAnZGF0ZScgbWFuLXBhZ2UgKGl0J3MgbW9zdCBsaWtlbHkgdG8gYmUgaW5zdGFsbGVkISkKKwlNQU5QQUdFX0ZPUk1BVD0KKwljZl9wcmVmb3JtPW5vCisJY2ZfY2F0b25seT15ZXMKKwljZl9leGFtcGxlPWRhdGUKKworCUlGUz0iJHtJRlM6LSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30ke1BBVEhfU0VQQVJBVE9SfSIKKwlmb3IgY2ZfZGlyIGluICRNQU5QQVRIOyBkbworCQl0ZXN0IC16ICIkY2ZfZGlyIiAmJiBjZl9kaXI9L3Vzci9tYW4KKwkJZm9yIGNmX25hbWUgaW4gJGNmX2Rpci9tYW4qLyRjZl9leGFtcGxlLlswMV0qICRjZl9kaXIvY2F0Ki8kY2ZfZXhhbXBsZS5bMDFdKiAkY2ZfZGlyL21hbiovJGNmX2V4YW1wbGUgJGNmX2Rpci9jYXQqLyRjZl9leGFtcGxlCisJCWRvCisJCQljZl90ZXN0PWBlY2hvICRjZl9uYW1lIHwgc2VkIC1lICdzLyovLydgCisJCQlpZiB0ZXN0ICJ4JGNmX3Rlc3QiID0gIngkY2ZfbmFtZSIgOyB0aGVuCisKKwkJCQljYXNlICIkY2ZfbmFtZSIgaW4KKwkJCQkoKi5neikgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBnemlwIjs7CisJCQkJKCouWikgIE1BTlBBR0VfRk9STUFUPSIkTUFOUEFHRV9GT1JNQVQgY29tcHJlc3MiOzsKKwkJCQkoKi4wKSAgTUFOUEFHRV9GT1JNQVQ9IiRNQU5QQUdFX0ZPUk1BVCBCU0RJIjs7CisJCQkJKCopICAgIE1BTlBBR0VfRk9STUFUPSIkTUFOUEFHRV9GT1JNQVQgbm9ybWFsIjs7CisJCQkJZXNhYworCisJCQkJY2FzZSAiJGNmX25hbWUiIGluCisJCQkJKCRjZl9kaXIvbWFuKikKKwkJCQkJY2ZfY2F0b25seT1ubworCQkJCQk7OworCQkJCSgkY2ZfZGlyL2NhdCopCisJCQkJCWNmX3ByZWZvcm09eWVzCisJCQkJCTs7CisJCQkJZXNhYworCQkJCWJyZWFrCisJCQlmaQorCisJCQkjIGlmIHdlIGZvdW5kIGEgbWF0Y2ggaW4gZWl0aGVyIG1hbiogb3IgY2F0Kiwgc3RvcCBsb29raW5nCisJCQlpZiB0ZXN0IC1uICIkTUFOUEFHRV9GT1JNQVQiIDsgdGhlbgorCQkJCWNmX2ZvdW5kPW5vCisJCQkJdGVzdCAiJGNmX3ByZWZvcm0iID0geWVzICYmIE1BTlBBR0VfRk9STUFUPSIkTUFOUEFHRV9GT1JNQVQgZm9ybWF0dGVkIgorCQkJCXRlc3QgIiRjZl9jYXRvbmx5IiA9IHllcyAmJiBNQU5QQUdFX0ZPUk1BVD0iJE1BTlBBR0VfRk9STUFUIGNhdG9ubHkiCisJCQkJY2FzZSAiJGNmX25hbWUiIGluCisJCQkJKCRjZl9kaXIvY2F0KikKKwkJCQkJY2ZfZm91bmQ9eWVzCisJCQkJCTs7CisJCQkJZXNhYworCQkJCXRlc3QgJGNmX2ZvdW5kPXllcyAmJiBicmVhaworCQkJZmkKKwkJZG9uZQorCQkjIG9ubHkgY2hlY2sgdGhlIGZpcnN0IGRpcmVjdG9yeSBpbiAkTUFOUEFUSCB3aGVyZSB3ZSBmaW5kIG1hbnBhZ2VzCisJCWlmIHRlc3QgLW4gIiRNQU5QQUdFX0ZPUk1BVCIgOyB0aGVuCisJCQlicmVhaworCQlmaQorCWRvbmUKKwkjIGlmIHdlIGRpZCBub3QgZmluZCB0aGUgZXhhbXBsZSwganVzdCBhc3N1bWUgaXQgaXMgbm9ybWFsCisJdGVzdCAteiAiJE1BTlBBR0VfRk9STUFUIiAmJiBNQU5QQUdFX0ZPUk1BVD1ub3JtYWwKKwlJRlM9IiRhY19zYXZlX2lmcyIKKwk7OworKCopCisJZm9yIGNmX29wdGlvbiBpbiAkTUFOUEFHRV9GT1JNQVQ7IGRvCisJY2FzZSAkY2Zfb3B0aW9uIGluCisJKGd6aXB8Y29tcHJlc3N8QlNESXxub3JtYWx8Zm9ybWF0dGVkfGNhdG9ubHkpCisJCTs7CisJKCopCisJCWNmX3Vua25vd249IiRjZl91bmtub3duICRjZl9vcHRpb24iCisJCTs7CisJZXNhYworCWRvbmUKKwk7OworZXNhYworCitlY2hvICIkYXNfbWU6MTEwNzE6IHJlc3VsdDogJE1BTlBBR0VfRk9STUFUIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRNQU5QQUdFX0ZPUk1BVCIgPiY2CitpZiB0ZXN0IC1uICIkY2ZfdW5rbm93biIgOyB0aGVuCisJeyBlY2hvICIkYXNfbWU6MTEwNzQ6IFdBUk5JTkc6IFVuZXhwZWN0ZWQgbWFucGFnZS1mb3JtYXQgJGNmX3Vua25vd24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmV4cGVjdGVkIG1hbnBhZ2UtZm9ybWF0ICRjZl91bmtub3duIiA+JjI7fQorZmkKKworZWNobyAiJGFzX21lOjExMDc4OiBjaGVja2luZyBmb3IgbWFucGFnZSByZW5hbWluZyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtYW5wYWdlIHJlbmFtaW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLW1hbnBhZ2UtcmVuYW1lcyBvciAtLXdpdGhvdXQtbWFucGFnZS1yZW5hbWVzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9tYW5wYWdlX3JlbmFtZXMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfbWFucGFnZV9yZW5hbWVzIgorICBNQU5QQUdFX1JFTkFNRVM9JHdpdGh2YWwKK2Vsc2UKKyAgTUFOUEFHRV9SRU5BTUVTPXllcworZmk7CisKK2Nhc2UgIi4kTUFOUEFHRV9SRU5BTUVTIiBpbgorKC5ubykKKwk7OworKC58LnllcykKKwkjIERlYmlhbiAnbWFuJyBwcm9ncmFtPworCWlmIHRlc3QgLWYgL2V0Yy9kZWJpYW5fdmVyc2lvbiA7IHRoZW4KKwkJTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyICYmIHB3ZGAvbWFuL21hbl9kYi5yZW5hbWVzCisJZWxzZQorCQlNQU5QQUdFX1JFTkFNRVM9bm8KKwlmaQorCTs7Citlc2FjCisKK2lmIHRlc3QgIiRNQU5QQUdFX1JFTkFNRVMiICE9IG5vIDsgdGhlbgorCWlmIHRlc3QgLWYgJHNyY2Rpci9tYW4vJE1BTlBBR0VfUkVOQU1FUyA7IHRoZW4KKwkJTUFOUEFHRV9SRU5BTUVTPWBjZCAkc3JjZGlyL21hbiAmJiBwd2RgLyRNQU5QQUdFX1JFTkFNRVMKKwllbGlmIHRlc3QgISAtZiAkTUFOUEFHRV9SRU5BTUVTIDsgdGhlbgorCQl7IHsgZWNobyAiJGFzX21lOjExMTA2OiBlcnJvcjogbm90IGEgZmlsZW5hbWU6ICRNQU5QQUdFX1JFTkFNRVMiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogbm90IGEgZmlsZW5hbWU6ICRNQU5QQUdFX1JFTkFNRVMiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwlmaQorCisJdGVzdCAhIC1kIG1hbiAmJiBta2RpciBtYW4KKworCSMgQ29uc3RydWN0IGEgc2VkLXNjcmlwdCB0byBwZXJmb3JtIHJlbmFtaW5nIHdpdGhpbiBtYW4tcGFnZXMKKwlpZiB0ZXN0IC1uICIkTUFOUEFHRV9SRU5BTUVTIiA7IHRoZW4KKwkJdGVzdCAhIC1kIG1hbiAmJiBta2RpciBtYW4KKwkJJFNIRUxMICRzcmNkaXIvbWFuL21ha2Vfc2VkLnNoICRNQU5QQUdFX1JFTkFNRVMgPi4vZWRpdF9tYW4uc2VkCisJZmkKK2ZpCisKK2VjaG8gIiRhc19tZToxMTEyMDogcmVzdWx0OiAkTUFOUEFHRV9SRU5BTUVTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRNQU5QQUdFX1JFTkFNRVMiID4mNgorCitlY2hvICIkYXNfbWU6MTExMjM6IGNoZWNraW5nIGlmIG1hbnBhZ2UgYWxpYXNlcyB3aWxsIGJlIGluc3RhbGxlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIG1hbnBhZ2UgYWxpYXNlcyB3aWxsIGJlIGluc3RhbGxlZC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1tYW5wYWdlLWFsaWFzZXMgb3IgLS13aXRob3V0LW1hbnBhZ2UtYWxpYXNlcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbWFucGFnZV9hbGlhc2VzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX21hbnBhZ2VfYWxpYXNlcyIKKyAgTUFOUEFHRV9BTElBU0VTPSR3aXRodmFsCitlbHNlCisgIE1BTlBBR0VfQUxJQVNFUz15ZXMKK2ZpOworCitlY2hvICIkYXNfbWU6MTExMzQ6IHJlc3VsdDogJE1BTlBBR0VfQUxJQVNFUyIgPiY1CitlY2hvICIke0VDSE9fVH0kTUFOUEFHRV9BTElBU0VTIiA+JjYKKworY2FzZSAieCRMTl9TIiBpbgorKHhsbiopCisJY2ZfdXNlX3N5bWxpbmtzPXllcworCTs7CisoKikKKwljZl91c2Vfc3ltbGlua3M9bm8KKwk7OworZXNhYworCitNQU5QQUdFX1NZTUxJTktTPW5vCitpZiB0ZXN0ICIkTUFOUEFHRV9BTElBU0VTIiA9IHllcyA7IHRoZW4KK2VjaG8gIiRhc19tZToxMTE0ODogY2hlY2tpbmcgaWYgbWFucGFnZSBzeW1saW5rcyBzaG91bGQgYmUgdXNlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIG1hbnBhZ2Ugc3ltbGlua3Mgc2hvdWxkIGJlIHVzZWQuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbWFucGFnZS1zeW1saW5rcyBvciAtLXdpdGhvdXQtbWFucGFnZS1zeW1saW5rcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbWFucGFnZV9zeW1saW5rcytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9tYW5wYWdlX3N5bWxpbmtzIgorICBNQU5QQUdFX1NZTUxJTktTPSR3aXRodmFsCitlbHNlCisgIE1BTlBBR0VfU1lNTElOS1M9JGNmX3VzZV9zeW1saW5rcworZmk7CisKK2lmIHRlc3QgIiQkY2ZfdXNlX3N5bWxpbmtzIiA9IG5vOyB0aGVuCitpZiB0ZXN0ICIkTUFOUEFHRV9TWU1MSU5LUyIgPSB5ZXMgOyB0aGVuCisJeyBlY2hvICIkYXNfbWU6MTExNjE6IFdBUk5JTkc6IGNhbm5vdCBtYWtlIHN5bWxpbmtzIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogY2Fubm90IG1ha2Ugc3ltbGlua3MiID4mMjt9CisJTUFOUEFHRV9TWU1MSU5LUz1ubworZmkKK2ZpCisKK2VjaG8gIiRhc19tZToxMTE2NzogcmVzdWx0OiAkTUFOUEFHRV9TWU1MSU5LUyIgPiY1CitlY2hvICIke0VDSE9fVH0kTUFOUEFHRV9TWU1MSU5LUyIgPiY2CitmaQorCitlY2hvICIkYXNfbWU6MTExNzE6IGNoZWNraW5nIGZvciBtYW5wYWdlIHRibCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtYW5wYWdlIHRibC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1tYW5wYWdlLXRibCBvciAtLXdpdGhvdXQtbWFucGFnZS10Ymwgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX21hbnBhZ2VfdGJsK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX21hbnBhZ2VfdGJsIgorICBNQU5QQUdFX1RCTD0kd2l0aHZhbAorZWxzZQorICBNQU5QQUdFX1RCTD1ubworZmk7CisKK2VjaG8gIiRhc19tZToxMTE4MjogcmVzdWx0OiAkTUFOUEFHRV9UQkwiID4mNQorZWNobyAiJHtFQ0hPX1R9JE1BTlBBR0VfVEJMIiA+JjYKKworaWYgdGVzdCAiJHByZWZpeCIgPSAiTk9ORSIgOyB0aGVuCisJY2ZfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitlbHNlCisJY2ZfcHJlZml4PSIkcHJlZml4IgorZmkKKworY2FzZSAiJE1BTlBBR0VfRk9STUFUIiBpbgorKCpjYXRvbmx5KikKKwljZl9mb3JtYXQ9eWVzCisJY2ZfaW5ib3RoPW5vCisJOzsKKygqZm9ybWF0dGVkKikKKwljZl9mb3JtYXQ9eWVzCisJY2ZfaW5ib3RoPXllcworCTs7CisoKikKKwljZl9mb3JtYXQ9bm8KKwljZl9pbmJvdGg9bm8KKwk7OworZXNhYworCit0ZXN0ICEgLWQgbWFuICYmIG1rZGlyIG1hbgorCitjZl9zb19zdHJpcD0KK2NmX2NvbXByZXNzPQorY2FzZSAiJE1BTlBBR0VfRk9STUFUIiBpbgorKCpjb21wcmVzcyopCisJY2Zfc29fc3RyaXA9IloiCisJY2ZfY29tcHJlc3M9Y29tcHJlc3MKKwk7OworKCpnemlwKikKKwljZl9zb19zdHJpcD0iZ3oiCisJY2ZfY29tcHJlc3M9Z3ppcAorCTs7Citlc2FjCisKK2NmX2VkaXRfbWFuPS4vZWRpdF9tYW4uc2gKK2NmX21hbl9hbGlhcz1gcHdkYC9tYW5fYWxpYXMuc2VkCisKK2NhdCA+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisjISAkU0hFTEwKKyMgdGhpcyBzY3JpcHQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmUtc2NyaXB0IENGX01BTl9QQUdFUyBtYWNyby4KKworcHJlZml4PSIkY2ZfcHJlZml4IgorZGF0YXJvb3RkaXI9IiRkYXRhcm9vdGRpciIKK2RhdGFkaXI9IiRkYXRhZGlyIgorCitOQ1VSU0VTX01BSk9SPSIkTkNVUlNFU19NQUpPUiIKK05DVVJTRVNfTUlOT1I9IiROQ1VSU0VTX01JTk9SIgorTkNVUlNFU19QQVRDSD0iJE5DVVJTRVNfUEFUQ0giCisKK05DVVJTRVNfT1NQRUVEPSIkTkNVUlNFU19PU1BFRUQiCitURVJNSU5GTz0iJFRFUk1JTkZPIgorCitJTlNUQUxMPSIkSU5TVEFMTCIKK0lOU1RBTExfREFUQT0iJElOU1RBTExfREFUQSIKKwordHJhbnNmb3JtPSIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIKKworVE1QPVwke1RNUERJUjo9L3RtcH0vbWFuXCRcJAordHJhcCAicm0gLWYgXCRUTVAiIDAgMSAyIDUgMTUKKworZm9ybT1cJDEKK3NoaWZ0IHx8IGV4aXQgMQorCit2ZXJiPVwkMQorc2hpZnQgfHwgZXhpdCAxCisKK21hbmRpcj1cJDEKK3NoaWZ0IHx8IGV4aXQgMQorCitzcmNkaXI9XCQxCit0b3Bfc3JjZGlyPVwkc3JjZGlyLy4uCitzaGlmdCB8fCBleGl0IDEKKworaWYgdGVzdCAiXCRmb3JtIiA9IG5vcm1hbCA7IHRoZW4KKwlpZiB0ZXN0ICIkY2ZfZm9ybWF0IiA9IHllcyA7IHRoZW4KKwlpZiB0ZXN0ICIkY2ZfaW5ib3RoIiA9IG5vIDsgdGhlbgorCQkkU0hFTEwgXCQwIGZvcm1hdCBcJHZlcmIgXCRtYW5kaXIgXCRzcmNkaXIgXCQqCisJCWV4aXQgJD8KKwlmaQorCWZpCisJY2Zfc3ViZGlyPVwkbWFuZGlyL21hbgorCWNmX3RhYmxlcz0kTUFOUEFHRV9UQkwKK2Vsc2UKKwljZl9zdWJkaXI9XCRtYW5kaXIvY2F0CisJY2ZfdGFibGVzPXllcworZmkKKworIyBwcm9jZXNzIHRoZSBsaXN0IG9mIHNvdXJjZS1maWxlcworZm9yIGkgaW4gXCQqIDsgZG8KK2Nhc2UgXCRpIGluCisoKi5vcmlnfCoucmVqKSA7OworKCouWzAtOV0qKQorCXNlY3Rpb249XGBleHByICJcJGkiIDogJy4qXFwuXFwoWzAtOV1cXClbeG1dKidcYDsKKwlpZiB0ZXN0IFwkdmVyYiA9IGluc3RhbGxpbmcgOyB0aGVuCisJaWYgdGVzdCAhIC1kIFwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0gOyB0aGVuCisJCW1rZGlyIC1wIFwkY2Zfc3ViZGlyXCRzZWN0aW9uCisJZmkKKwlmaQorCisJIyByZXBsYWNlIHZhcmlhYmxlcyBpbiBtYW4gcGFnZQorCWlmIHRlc3QgISAtZiAkY2ZfbWFuX2FsaWFzIDsgdGhlbgorY2F0ID4+JGNmX21hbl9hbGlhcyA8PC1DRl9FT0YyCisJCXMsQERBVEFESVJALFwkZGF0YWRpcixnCisJCXMsQFRFUk1JTkZPQCxcJHtURVJNSU5GTzo9Im5vIGRlZmF1bHQgdmFsdWUifSxnCisJCXMsQFRFUk1JTkZPX0RJUlNALFwke1RFUk1JTkZPX0RJUlM6PSJubyBkZWZhdWx0IHZhbHVlIn0sZworCQlzLEBOQ1VSU0VTX01BSk9SQCxcJHtOQ1VSU0VTX01BSk9SOj0ibm8gZGVmYXVsdCB2YWx1ZSJ9LGcKKwkJcyxATkNVUlNFU19NSU5PUkAsXCR7TkNVUlNFU19NSU5PUjo9Im5vIGRlZmF1bHQgdmFsdWUifSxnCisJCXMsQE5DVVJTRVNfUEFUQ0hALFwke05DVVJTRVNfUEFUQ0g6PSJubyBkZWZhdWx0IHZhbHVlIn0sZworCQlzLEBOQ1VSU0VTX09TUEVFREAsXCR7TkNVUlNFU19PU1BFRUQ6PSJubyBkZWZhdWx0IHZhbHVlIn0sZworQ0ZfRU9GCisKKwlmb3IgY2ZfbmFtZSBpbiAgY2FwdG9pbmZvIGNsZWFyIGluZm9jbXAgaW5mb3RvY2FwIHRhYnMgdGljIHRvZSB0cHV0IHRzZXQKKwlkbworCQljZl9OQU1FPWBlY2hvICIkY2ZfbmFtZSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisJCWNmX25hbWU9YGVjaG8gJGNmX25hbWV8c2VkICIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSJgCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDwtQ0ZfRU9GCisJCXMsQCRjZl9OQU1FQCwkY2ZfbmFtZSxnCitDRl9FT0YKKwlkb25lCisKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorQ0ZfRU9GMgorCQllY2hvICIuLi5tYWRlICRjZl9tYW5fYWxpYXMiCisJZmkKKworCWFsaWFzZXM9CisJY2Zfc291cmNlPVxgYmFzZW5hbWUgXCRpXGAKKwlpbmFsaWFzPVwkY2Zfc291cmNlCisJdGVzdCAhIC1mIFwkaW5hbGlhcyAmJiBpbmFsaWFzPSJcJHNyY2Rpci9cJGluYWxpYXMiCisJaWYgdGVzdCAhIC1mIFwkaW5hbGlhcyA7IHRoZW4KKwkJZWNobyAuLiBza2lwcGVkIFwkY2Zfc291cmNlCisJCWNvbnRpbnVlCisJZmkKK0NGX0VPRgorCitpZiB0ZXN0ICIkTUFOUEFHRV9BTElBU0VTIiAhPSBubyA7IHRoZW4KK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCW5DdXJzZXM9aWdub3JlLjN4CisJdGVzdCAkd2l0aF9jdXJzZXNfaCA9IHllcyAmJiBuQ3Vyc2VzPW5jdXJzZXMuM3gKKwlhbGlhc2VzPVxgc2VkIC1mIFwkdG9wX3NyY2Rpci9tYW4vbWFubGlua3Muc2VkIFwkaW5hbGlhcyB8c2VkIC1mICRjZl9tYW5fYWxpYXMgfCBzb3J0IC11OyB0ZXN0IFwkaW5hbGlhcyA9IFwkbkN1cnNlcyAmJiBlY2hvIGN1cnNlc1xgCitDRl9FT0YKK2ZpCisKK2lmIHRlc3QgIiRNQU5QQUdFX1JFTkFNRVMiID0gbm8gOyB0aGVuCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwkjIHBlcmZvcm0gcHJvZ3JhbSB0cmFuc2Zvcm1hdGlvbnMgZm9yIHNlY3Rpb24gMSBtYW4gcGFnZXMKKwlpZiB0ZXN0IFwkc2VjdGlvbiA9IDEgOyB0aGVuCisJCWNmX3RhcmdldD1cJGNmX3N1YmRpclwke3NlY3Rpb259L1xgZWNobyBcJGNmX3NvdXJjZXxzZWQgIlwke3RyYW5zZm9ybX0iXGAKKwllbHNlCisJCWNmX3RhcmdldD1cJGNmX3N1YmRpclwke3NlY3Rpb259L1wkY2Zfc291cmNlCisJZmkKK0NGX0VPRgorZWxzZQorY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJY2ZfdGFyZ2V0PVxgZ3JlcCAiXlwkY2Zfc291cmNlIiAkTUFOUEFHRV9SRU5BTUVTIHwgJEFXSyAne3ByaW50IFwkMn0nXGAKKwlpZiB0ZXN0IC16ICJcJGNmX3RhcmdldCIgOyB0aGVuCisJCWVjaG8gJz8gbWlzc2luZyByZW5hbWUgZm9yICdcJGNmX3NvdXJjZQorCQljZl90YXJnZXQ9IlwkY2Zfc291cmNlIgorCWZpCisJY2ZfdGFyZ2V0PSJcJGNmX3N1YmRpclwke3NlY3Rpb259L1wke2NmX3RhcmdldH0iCisKK0NGX0VPRgorZmkKKworY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJc2VkCS1mICRjZl9tYW5fYWxpYXMgXFwKK0NGX0VPRgorCitpZiB0ZXN0IC1mICRNQU5QQUdFX1JFTkFNRVMgOyB0aGVuCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwkJPCBcJGkgfCBzZWQgLWYgYHB3ZGAvZWRpdF9tYW4uc2VkID5cJFRNUAorQ0ZfRU9GCitlbHNlCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwkJPCBcJGkgPlwkVE1QCitDRl9FT0YKK2ZpCisKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgoraWYgdGVzdCBcJGNmX3RhYmxlcyA9IHllcyA7IHRoZW4KKwl0YmwgXCRUTVAgPlwkVE1QLm91dAorCW12IFwkVE1QLm91dCBcJFRNUAorZmkKK0NGX0VPRgorCitpZiB0ZXN0ICR3aXRoX292ZXJ3cml0ZSAhPSB5ZXMgOyB0aGVuCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwlzZWQgLWUgIi9cI1sgICAgXSppbmNsdWRlL3MsPGN1cnNlcy5oLDxuY3Vyc2VzJExJQl9TVUZGSVgvY3Vyc2VzLmgsIiA8IFwkVE1QID5cJFRNUC5vdXQKKwltdiBcJFRNUC5vdXQgXCRUTVAKK0NGX0VPRgorZmkKKworaWYgdGVzdCAkd2l0aF9jdXJzZXNfaCAhPSB5ZXMgOyB0aGVuCitjYXQgPj4kY2ZfZWRpdF9tYW4gPDxDRl9FT0YKKwlzZWQgLWUgIi9cI1sgICAgXSppbmNsdWRlL3MsY3Vyc2VzLmgsbmN1cnNlcy5oLCIgPCBcJFRNUCA+XCRUTVAub3V0CisJbXYgXCRUTVAub3V0IFwkVE1QCitDRl9FT0YKK2ZpCisKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCWlmIHRlc3QgXCRmb3JtID0gZm9ybWF0IDsgdGhlbgorCQlucm9mZiAtbWFuIFwkVE1QID5cJFRNUC5vdXQKKwkJbXYgXCRUTVAub3V0IFwkVE1QCisJZmkKK0NGX0VPRgorCitpZiB0ZXN0IC1uICIkY2ZfY29tcHJlc3MiIDsgdGhlbgorY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJaWYgdGVzdCBcJHZlcmIgPSBpbnN0YWxsaW5nIDsgdGhlbgorCWlmICggJGNmX2NvbXByZXNzIC1mIFwkVE1QICkKKwl0aGVuCisJCW12IFwkVE1QLiRjZl9zb19zdHJpcCBcJFRNUAorCWZpCisJZmkKKwljZl90YXJnZXQ9IlwkY2ZfdGFyZ2V0LiRjZl9zb19zdHJpcCIKK0NGX0VPRgorZmkKKworY2FzZSAiJE1BTlBBR0VfRk9STUFUIiBpbgorKCpCU0RJKikKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCWlmIHRlc3QgXCRmb3JtID0gZm9ybWF0IDsgdGhlbgorCQkjIEJTREkgaW5zdGFsbHMgb25seSAuMCBzdWZmaXhlcyBpbiB0aGUgY2F0IGRpcmVjdG9yaWVzCisJCWNmX3RhcmdldD0iXGBlY2hvIFwkY2ZfdGFyZ2V0fHNlZCAtZSAncy9cLlsxLTldXCtbYS16XSovLjAvJ1xgIgorCWZpCitDRl9FT0YKKyAgOzsKK2VzYWMKKworY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJc3VmZml4PVxgYmFzZW5hbWUgXCRjZl90YXJnZXQgfCBzZWQgLWUgJ3MlXlteLl0qJSUnXGAKKwlpZiB0ZXN0IFwkdmVyYiA9IGluc3RhbGxpbmcgOyB0aGVuCisJCWVjaG8gXCR2ZXJiIFwkY2ZfdGFyZ2V0CisJCVwkSU5TVEFMTF9EQVRBIFwkVE1QIFwkY2ZfdGFyZ2V0CisJCXRlc3QgLWQgXCRjZl9zdWJkaXJcJHtzZWN0aW9ufSAmJgorCQl0ZXN0IC1uICJcJGFsaWFzZXMiICYmICgKKwkJCWNkIFwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0gJiYgKAorCQkJCWNmX3NvdXJjZT1cYGVjaG8gXCRjZl90YXJnZXQgfHNlZCAtZSAncyVeLiovXChbXi9dW14vXSovW14vXVteL10qJFwpJVwxJSdcYAorCQkJCXRlc3QgLW4gIiRjZl9zb19zdHJpcCIgJiYgY2Zfc291cmNlPVxgZWNobyBcJGNmX3NvdXJjZSB8c2VkIC1lICdzJVwuJGNmX3NvX3N0cmlwXCQlJSdcYAorCQkJCWNmX3RhcmdldD1cYGJhc2VuYW1lIFwkY2ZfdGFyZ2V0XGAKKwkJCQlmb3IgY2ZfYWxpYXMgaW4gXCRhbGlhc2VzCisJCQkJZG8KKwkJCQkJaWYgdGVzdCBcJHNlY3Rpb24gPSAxIDsgdGhlbgorCQkJCQkJY2ZfYWxpYXM9XGBlY2hvIFwkY2ZfYWxpYXN8c2VkICJcJHt0cmFuc2Zvcm19IlxgCisJCQkJCWZpCisKKwkJCQkJaWYgdGVzdCAiJE1BTlBBR0VfU1lNTElOS1MiID0geWVzIDsgdGhlbgorCQkJCQkJaWYgdGVzdCAtZiBcJGNmX2FsaWFzXCR7c3VmZml4fSA7IHRoZW4KKwkJCQkJCQlpZiAoIGNtcCAtcyBcJGNmX3RhcmdldCBcJGNmX2FsaWFzXCR7c3VmZml4fSApCisJCQkJCQkJdGhlbgorCQkJCQkJCQljb250aW51ZQorCQkJCQkJCWZpCisJCQkJCQlmaQorCQkJCQkJZWNobyAuLiBcJHZlcmIgYWxpYXMgXCRjZl9hbGlhc1wke3N1ZmZpeH0KK0NGX0VPRgorY2FzZSAieCRMTl9TIiBpbgorKCotZikKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCQkJCQkJJExOX1MgXCRjZl90YXJnZXQgXCRjZl9hbGlhc1wke3N1ZmZpeH0KK0NGX0VPRgorCTs7CisoKikKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCQkJCQkJcm0gLWYgXCRjZl9hbGlhc1wke3N1ZmZpeH0KKwkJCQkJCSRMTl9TIFwkY2ZfdGFyZ2V0IFwkY2ZfYWxpYXNcJHtzdWZmaXh9CitDRl9FT0YKKwk7OworZXNhYworY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJCQkJCWVsaWYgdGVzdCAiXCRjZl90YXJnZXQiICE9ICJcJGNmX2FsaWFzXCR7c3VmZml4fSIgOyB0aGVuCisJCQkJCQllY2hvICIuc28gXCRjZl9zb3VyY2UiID5cJFRNUAorQ0ZfRU9GCitpZiB0ZXN0IC1uICIkY2ZfY29tcHJlc3MiIDsgdGhlbgorY2F0ID4+JGNmX2VkaXRfbWFuIDw8Q0ZfRU9GCisJCQkJCQlpZiB0ZXN0IC1uICIkY2Zfc29fc3RyaXAiIDsgdGhlbgorCQkJCQkJCSRjZl9jb21wcmVzcyAtZiBcJFRNUAorCQkJCQkJCW12IFwkVE1QLiRjZl9zb19zdHJpcCBcJFRNUAorCQkJCQkJZmkKK0NGX0VPRgorZmkKK2NhdCA+PiRjZl9lZGl0X21hbiA8PENGX0VPRgorCQkJCQkJZWNobyAuLiBcJHZlcmIgYWxpYXMgXCRjZl9hbGlhc1wke3N1ZmZpeH0KKwkJCQkJCXJtIC1mIFwkY2ZfYWxpYXNcJHtzdWZmaXh9CisJCQkJCQlcJElOU1RBTExfREFUQSBcJFRNUCBcJGNmX2FsaWFzXCR7c3VmZml4fQorCQkJCQlmaQorCQkJCWRvbmUKKwkJCSkKKwkJKQorCWVsaWYgdGVzdCBcJHZlcmIgPSByZW1vdmluZyA7IHRoZW4KKwkJdGVzdCAtZiBcJGNmX3RhcmdldCAmJiAoCisJCQllY2hvIFwkdmVyYiBcJGNmX3RhcmdldAorCQkJcm0gLWYgXCRjZl90YXJnZXQKKwkJKQorCQl0ZXN0IC1kIFwkY2Zfc3ViZGlyXCR7c2VjdGlvbn0gJiYKKwkJdGVzdCAtbiAiXCRhbGlhc2VzIiAmJiAoCisJCQljZCBcJGNmX3N1YmRpclwke3NlY3Rpb259ICYmICgKKwkJCQlmb3IgY2ZfYWxpYXMgaW4gXCRhbGlhc2VzCisJCQkJZG8KKwkJCQkJaWYgdGVzdCBcJHNlY3Rpb24gPSAxIDsgdGhlbgorCQkJCQkJY2ZfYWxpYXM9XGBlY2hvIFwkY2ZfYWxpYXN8c2VkICJcJHt0cmFuc2Zvcm19IlxgCisJCQkJCWZpCisKKwkJCQkJZWNobyAuLiBcJHZlcmIgYWxpYXMgXCRjZl9hbGlhc1wke3N1ZmZpeH0KKwkJCQkJcm0gLWYgXCRjZl9hbGlhc1wke3N1ZmZpeH0KKwkJCQlkb25lCisJCQkpCisJCSkKKwllbHNlCisjCQllY2hvICIuaHkgMCIKKwkJY2F0IFwkVE1QCisJZmkKKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0ICRjZl9pbmJvdGggPSB5ZXMgOyB0aGVuCitpZiB0ZXN0IFwkZm9ybSAhPSBmb3JtYXQgOyB0aGVuCisJJFNIRUxMIFwkMCBmb3JtYXQgXCR2ZXJiIFwkbWFuZGlyIFwkc3JjZGlyIFwkKgorZmkKK2ZpCisKK2V4aXQgMAorQ0ZfRU9GCitjaG1vZCA3NTUgJGNmX2VkaXRfbWFuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjIE5vdGUgdGhhdCBzb21lIGZ1bmN0aW9ucyAoc3VjaCBhcyBjb25zdCkgYXJlIG5vcm1hbGx5IGRpc2FibGVkIGFueXdheS4KK2VjaG8gIiRhc19tZToxMTUxNTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCBmdW5jdGlvbiBleHRlbnNpb25zIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCBmdW5jdGlvbiBleHRlbnNpb25zLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXh0LWZ1bmNzIG9yIC0tZGlzYWJsZS1leHQtZnVuY3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZXh0X2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9leHRfZnVuY3MiCisgIHdpdGhfZXh0X2Z1bmNzPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9leHRfZnVuY3M9eWVzCitmaTsKK2VjaG8gIiRhc19tZToxMTUyNTogcmVzdWx0OiAkd2l0aF9leHRfZnVuY3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZXh0X2Z1bmNzIiA+JjYKK2lmIHRlc3QgIngkd2l0aF9leHRfZnVuY3MiID0geHllcyA7IHRoZW4KKwlOQ1VSU0VTX0VYVF9GVU5DUz0xCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTIDEKK0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0NVUlNFU19WRVJTSU9OIDEKK0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0hBU19LRVkgMQorRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfUkVTSVpFVEVSTSAxCitFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9SRVNJWkVfVEVSTSAxCitFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9URVJNX0VOVFJZX0ggMQorRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTIDEKK0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1VTRV9TQ1JFRU4gMQorRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVVNFX1dJTkRPVyAxCitFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9XUkVTSVpFIDEKK0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX0VYVF9GVU5DUyAxCitFT0YKKworCUdFTkVSQVRFRF9FWFRfRlVOQ1M9Z2VuZXJhdGVkCitlbHNlCisJTkNVUlNFU19FWFRfRlVOQ1M9MAorCUdFTkVSQVRFRF9FWFRfRlVOQ1M9CitmaQorCitlY2hvICIkYXNfbWU6MTE1ODA6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggU0NSRUVOIGV4dGVuc2lvbnMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIFNDUkVFTiBleHRlbnNpb25zLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3AtZnVuY3Mgb3IgLS1kaXNhYmxlLXNwLWZ1bmNzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3NwX2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9zcF9mdW5jcyIKKyAgd2l0aF9zcF9mdW5jcz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfc3BfZnVuY3M9JGNmX2RmdF9leHRfc3BmdW5jcworZmk7CitlY2hvICIkYXNfbWU6MTE1OTA6IHJlc3VsdDogJHdpdGhfc3BfZnVuY3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfc3BfZnVuY3MiID4mNgoraWYgdGVzdCAieCR3aXRoX3NwX2Z1bmNzIiA9IHh5ZXMgOyB0aGVuCisJTkNVUlNFU19TUF9GVU5DUz0xCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVNfU1BfRlVOQ1MgMQorRU9GCisKKwlHRU5FUkFURURfU1BfRlVOQ1M9Z2VuZXJhdGVkCitlbHNlCisJTkNVUlNFU19TUF9GVU5DUz0wCisJR0VORVJBVEVEX1NQX0ZVTkNTPQorZmkKKworZWNobyAiJGFzX21lOjExNjA1OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHRlcm1pbmFsLWRyaXZlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggdGVybWluYWwtZHJpdmVyLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdGVybS1kcml2ZXIgb3IgLS1kaXNhYmxlLXRlcm0tZHJpdmVyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3Rlcm1fZHJpdmVyK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV90ZXJtX2RyaXZlciIKKyAgd2l0aF90ZXJtX2RyaXZlcj0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfdGVybV9kcml2ZXI9bm8KK2ZpOworZWNobyAiJGFzX21lOjExNjE1OiByZXN1bHQ6ICR3aXRoX3Rlcm1fZHJpdmVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3Rlcm1fZHJpdmVyIiA+JjYKK2lmIHRlc3QgIngkd2l0aF90ZXJtX2RyaXZlciIgPSB4eWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfVEVSTV9EUklWRVIgMQorRU9GCisKKwlpZiB0ZXN0ICJ4JHdpdGhfdGVybWxpYiIgIT0geG5vIDsgdGhlbgorCQl7IHsgZWNobyAiJGFzX21lOjExNjI0OiBlcnJvcjogVGhlIHRlcm0tZHJpdmVyIG9wdGlvbiBjb25mbGljdHMgd2l0aCB0aGUgdGVybWxpYiBvcHRpb24iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogVGhlIHRlcm0tZHJpdmVyIG9wdGlvbiBjb25mbGljdHMgd2l0aCB0aGUgdGVybWxpYiBvcHRpb24iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwlmaQorCWlmIHRlc3QgIngkd2l0aF9zcF9mdW5jcyIgIT0geHllcyA7IHRoZW4KKwkJeyB7IGVjaG8gIiRhc19tZToxMTYyOTogZXJyb3I6IFRoZSB0ZXJtLWRyaXZlciBvcHRpb24gcmVsaWVzIHVwb24gc3AtZnVuY3MiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogVGhlIHRlcm0tZHJpdmVyIG9wdGlvbiByZWxpZXMgdXBvbiBzcC1mdW5jcyIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCitmaQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWNvbnN0IHRvIHR1cm4gb24gdXNlIG9mIGNvbnN0IGJleW9uZCB0aGF0IGluIFhTSS4KK2VjaG8gIiRhc19tZToxMTYzNjogY2hlY2tpbmcgZm9yIGV4dGVuZGVkIHVzZSBvZiBjb25zdCBrZXl3b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGV4dGVuZGVkIHVzZSBvZiBjb25zdCBrZXl3b3JkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtY29uc3Qgb3IgLS1kaXNhYmxlLWNvbnN0IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2NvbnN0K3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9jb25zdCIKKyAgd2l0aF9leHRfY29uc3Q9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX2V4dF9jb25zdD0kY2ZfZGZ0X2V4dF9jb25zdAorZmk7CitlY2hvICIkYXNfbWU6MTE2NDY6IHJlc3VsdDogJHdpdGhfZXh0X2NvbnN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2V4dF9jb25zdCIgPiY2CitOQ1VSU0VTX0NPTlNUPScvKm5vdGhpbmcqLycKK2lmIHRlc3QgIngkd2l0aF9leHRfY29uc3QiID0geHllcyA7IHRoZW4KKwlOQ1VSU0VTX0NPTlNUPWNvbnN0CitmaQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWV4dC1jb2xvcnMgdG8gdHVybiBvbiB1c2Ugb2YgY29sb3JzIGJleW9uZCAxNi4KK2VjaG8gIiRhc19tZToxMTY1NDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIGNvbG9ycyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBleHRlbmRlZCBjb2xvcnMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1leHQtY29sb3JzIG9yIC0tZGlzYWJsZS1leHQtY29sb3JzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4dF9jb2xvcnMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2V4dF9jb2xvcnMiCisgIHdpdGhfZXh0X2NvbG9ycz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfZXh0X2NvbG9ycz0kY2ZfZGZ0X2V4dF9jb2xvcnMKK2ZpOworZWNobyAiJGFzX21lOjExNjY0OiByZXN1bHQ6ICR3aXRoX2V4dF9jb2xvcnMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZXh0X2NvbG9ycyIgPiY2CitOQ1VSU0VTX0VYVF9DT0xPUlM9MAoraWYgdGVzdCAieCR3aXRoX2V4dF9jb2xvcnMiID0geHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JHdpdGhfd2lkZWMiICE9IHh5ZXMgOyB0aGVuCisJCXsgZWNobyAiJGFzX21lOjExNjY5OiBXQVJOSU5HOiBUaGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgdG8gd2lkZS1jaGFyYWN0ZXIgbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5IiA+JjI7fQorCWVsc2UKKwkJIyBjYW5ub3QgYmUgQUJJIDUgc2luY2UgaXQgY2hhbmdlcyBzaXplb2YoY2NoYXJfdCkKKworaWYgdGVzdCAiJHt3aXRoX2FiaV92ZXJzaW9uK3NldH0iICE9IHNldDsgdGhlbgorCWNhc2UgJGNmX2N2X3JlbF92ZXJzaW9uIGluCisJKDUuKikKKwkJY2ZfY3ZfcmVsX3ZlcnNpb249Ni4wCisJCWNmX2N2X2FiaV92ZXJzaW9uPTYKKwkJeyBlY2hvICIkYXNfbWU6MTE2Nzk6IFdBUk5JTkc6IG92ZXJyaWRpbmcgQUJJIHZlcnNpb24gdG8gJGNmX2N2X2FiaV92ZXJzaW9uIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogb3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24iID4mMjt9CisJCTs7CisJZXNhYworZmkKKworCQlOQ1VSU0VTX0VYVF9DT0xPUlM9MQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX0VYVF9DT0xPUlMgMQorRU9GCisKKwlmaQorZmkKKworIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1leHQtbW91c2UgdG8gbW9kaWZ5IGNvZGluZyB0byBzdXBwb3J0IDUtYnV0dG9uIG1pY2UKK2VjaG8gIiRhc19tZToxMTY5NTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIG1vdXNlIGVuY29kaW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGV4dGVuZGVkIG1vdXNlIGVuY29kaW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXh0LW1vdXNlIG9yIC0tZGlzYWJsZS1leHQtbW91c2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZXh0X21vdXNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9leHRfbW91c2UiCisgIHdpdGhfZXh0X21vdXNlPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9leHRfbW91c2U9JGNmX2RmdF9leHRfbW91c2UKK2ZpOworZWNobyAiJGFzX21lOjExNzA1OiByZXN1bHQ6ICR3aXRoX2V4dF9tb3VzZSIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9leHRfbW91c2UiID4mNgorTkNVUlNFU19NT1VTRV9WRVJTSU9OPTEKK2lmIHRlc3QgIngkd2l0aF9leHRfbW91c2UiID0geHllcyA7IHRoZW4KKwlOQ1VSU0VTX01PVVNFX1ZFUlNJT049MgorCitpZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgIT0gc2V0OyB0aGVuCisJY2FzZSAkY2ZfY3ZfcmVsX3ZlcnNpb24gaW4KKwkoNS4qKQorCQljZl9jdl9yZWxfdmVyc2lvbj02LjAKKwkJY2ZfY3ZfYWJpX3ZlcnNpb249NgorCQl7IGVjaG8gIiRhc19tZToxMTcxNjogV0FSTklORzogb3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBvdmVycmlkaW5nIEFCSSB2ZXJzaW9uIHRvICRjZl9jdl9hYmlfdmVyc2lvbiIgPiYyO30KKwkJOzsKKwllc2FjCitmaQorCitmaQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWV4dC1wdXR3aW4gdG8gdHVybiBvbiBleHRlbmRlZCBzY3JlZW5kdW1wcworZWNobyAiJGFzX21lOjExNzI1OiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgZXh0ZW5kZWQgcHV0d2luL3NjcmVlbmR1bXAiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2UgZXh0ZW5kZWQgcHV0d2luL3NjcmVlbmR1bXAuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1leHQtcHV0d2luIG9yIC0tZGlzYWJsZS1leHQtcHV0d2luIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4dF9wdXR3aW4rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2V4dF9wdXR3aW4iCisgIHdpdGhfZXh0X3B1dHdpbj0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfZXh0X3B1dHdpbj0kY2ZfZGZ0X2V4dF9wdXR3aW4KK2ZpOworZWNobyAiJGFzX21lOjExNzM1OiByZXN1bHQ6ICR3aXRoX2V4dF9wdXR3aW4iID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfZXh0X3B1dHdpbiIgPiY2CitpZiB0ZXN0ICJ4JHdpdGhfZXh0X3B1dHdpbiIgPSB4eWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX0VYVF9QVVRXSU4gMQorRU9GCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMTc0NTogY2hlY2tpbmcgaWYgeW91IHdhbnQgXCROQ1VSU0VTX05PX1BBRERJTkcgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IFwkTkNVUlNFU19OT19QQURESU5HIGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uby1wYWRkaW5nIG9yIC0tZGlzYWJsZS1uby1wYWRkaW5nIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX25vX3BhZGRpbmcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX25vX3BhZGRpbmciCisgIHdpdGhfbm9fcGFkZGluZz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfbm9fcGFkZGluZz0kd2l0aF9leHRfZnVuY3MKK2ZpOworZWNobyAiJGFzX21lOjExNzU1OiByZXN1bHQ6ICR3aXRoX25vX3BhZGRpbmciID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfbm9fcGFkZGluZyIgPiY2Cit0ZXN0ICJ4JHdpdGhfbm9fcGFkZGluZyIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX05PX1BBRERJTkcgMQorRU9GCisKK2VjaG8gIiRhc19tZToxMTc2MjogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTc2OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKworX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTc3NjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MTE3ODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTgwNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICBlZ3JlcCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgOgorZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExODIyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgIGVncmVwICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgOgorZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1yZiBjb25mdGVzdCoKKworZmkKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyAvYmluL2NjIGluIElyaXgtNC4wLjUgZ2V0cyBub24tQU5TSSBjdHlwZSBtYWNyb3MgdW5sZXNzIHVzaW5nIC1hbnNpLgorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICA6CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTE4NDMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaWYgKCgnICcgJiAweDBGRikgPT0gMHgwMjApCisjIGRlZmluZSBJU0xPV0VSKGMpICgnYScgPD0gKGMpICYmIChjKSA8PSAneicpCisjIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCisjZWxzZQorIyBkZWZpbmUgSVNMT1dFUihjKSAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAorICAgICAgICAgICAgICAgICAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAorICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlmCisKKyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCitpbnQKK21haW4gKCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCisgICAgICAgIHx8IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQorICAgICAgJGFjX21haW5fcmV0dXJuKDIpOworICAkYWNfbWFpbl9yZXR1cm4gKDApOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExODY5OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTg3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE4NzQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTg3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitmaQorZmkKK2VjaG8gIiRhc19tZToxMTg5MDogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9zdGRjIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFNURENfSEVBREVSUyAxCitFT0YKKworZmkKKworIyBPbiBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KKworZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCisgICAgICAgICAgICAgICAgICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0ZC5oCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTE5MDY6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTE5MTIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKKyNpbmNsdWRlIDwkYWNfaGVhZGVyPgorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTkxODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE5MjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE5MjQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTkyNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfSGVhZGVyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMTkzNzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworZWNobyAiJGFzX21lOjExOTQ3OiBjaGVja2luZyBmb3Igc2lnbmVkIGNoYXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc2lnbmVkIGNoYXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3R5cGVfc2lnbmVkX2NoYXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTk1MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitpZiAoKHNpZ25lZCBjaGFyICopIDApCisgIHJldHVybiAwOworaWYgKHNpemVvZiAoc2lnbmVkIGNoYXIpKQorICByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTE5Njg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExOTcxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjExOTc0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE5Nzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl90eXBlX3NpZ25lZF9jaGFyPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl90eXBlX3NpZ25lZF9jaGFyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjExOTg3OiByZXN1bHQ6ICRhY19jdl90eXBlX3NpZ25lZF9jaGFyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl90eXBlX3NpZ25lZF9jaGFyIiA+JjYKKworZWNobyAiJGFzX21lOjExOTkwOiBjaGVja2luZyBzaXplIG9mIHNpZ25lZCBjaGFyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc2l6ZSBvZiBzaWduZWQgY2hhci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3NpZ25lZF9jaGFyIiA9IHllczsgdGhlbgorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAjIERlcGVuZGluZyB1cG9uIHRoZSBzaXplLCBjb21wdXRlIHRoZSBsbyBhbmQgaGkgYm91bmRzLgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMTk5OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitpbnQgX2FycmF5XyBbMSAtIDIgKiAhKChzaXplb2YgKHNpZ25lZCBjaGFyKSkgPj0gMCldCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMDExOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjAxNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjAxNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyMDIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfbG89MCBhY19taWQ9MAorICB3aGlsZSA6OyBkbworICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIwMjUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworaW50IF9hcnJheV8gWzEgLSAyICogISgoc2l6ZW9mIChzaWduZWQgY2hhcikpIDw9ICRhY19taWQpXQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjAzNzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIwNDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIwNDM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjA0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2hpPSRhY19taWQ7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2xvPWBleHByICRhY19taWQgKyAxYDsgYWNfbWlkPWBleHByIDIgJyonICRhY19taWQgKyAxYAorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBkb25lCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2hpPS0xIGFjX21pZD0tMQorICB3aGlsZSA6OyBkbworICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIwNjIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworaW50IF9hcnJheV8gWzEgLSAyICogISgoc2l6ZW9mIChzaWduZWQgY2hhcikpID49ICRhY19taWQpXQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjA3NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIwNzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIwODA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjA4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2xvPSRhY19taWQ7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2hpPWBleHByICRhY19taWQgLSAxYDsgYWNfbWlkPWBleHByIDIgJyonICRhY19taWRgCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGRvbmUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyMgQmluYXJ5IHNlYXJjaCBiZXR3ZWVuIGxvIGFuZCBoaSBib3VuZHMuCit3aGlsZSB0ZXN0ICJ4JGFjX2xvIiAhPSAieCRhY19oaSI7IGRvCisgIGFjX21pZD1gZXhwciAnKCcgJGFjX2hpIC0gJGFjX2xvICcpJyAvIDIgKyAkYWNfbG9gCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIwOTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworaW50IF9hcnJheV8gWzEgLSAyICogISgoc2l6ZW9mIChzaWduZWQgY2hhcikpIDw9ICRhY19taWQpXQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjExMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIxMTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIxMTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjEyMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2hpPSRhY19taWQKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfbG89YGV4cHIgJGFjX21pZCArIDFgCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCithY19jdl9zaXplb2Zfc2lnbmVkX2NoYXI9JGFjX2xvCitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIHsgeyBlY2hvICIkYXNfbWU6MTIxMzM6IGVycm9yOiBjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmciID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIxMzggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3QudmFsIiwgInciKTsKK2lmICghZikKKyAgJGFjX21haW5fcmV0dXJuICgxKTsKK2ZwcmludGYgKGYsICIlZCIsIChzaXplb2YgKHNpZ25lZCBjaGFyKSkpOworZmNsb3NlIChmKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjE1NDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIxNTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMTU5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIxNjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9zaXplb2Zfc2lnbmVkX2NoYXI9YGNhdCBjb25mdGVzdC52YWxgCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitmaQorcm0gLWYgY29uZnRlc3QudmFsCitlbHNlCisgIGFjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0wCitmaQorZmkKK2VjaG8gIiRhc19tZToxMjE3ODogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9zaXplb2Zfc2lnbmVkX2NoYXIiID4mNgorY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBTSVpFT0ZfU0lHTkVEX0NIQVIgJGFjX2N2X3NpemVvZl9zaWduZWRfY2hhcgorRU9GCisKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2lnbmVkX2NoYXIiID0gMSA7IHRoZW4KKwlOQ1VSU0VTX1NCT09MPSJzaWduZWQgY2hhciIKK2Vsc2UKKwlOQ1VSU0VTX1NCT09MPSJjaGFyIgorZmkKK2VjaG8gIiRhc19tZToxMjE4OTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHNpZ25lZCBCb29sZWFuIGFycmF5IGluIHRlcm0uaCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBzaWduZWQgQm9vbGVhbiBhcnJheSBpbiB0ZXJtLmguLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zaWduZWQtY2hhciBvciAtLWRpc2FibGUtc2lnbmVkLWNoYXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfc2lnbmVkX2NoYXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3NpZ25lZF9jaGFyIgorICB3aXRoX3NpZ25lZF9jaGFyPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9zaWduZWRfY2hhcj1ubworZmk7CitlY2hvICIkYXNfbWU6MTIxOTk6IHJlc3VsdDogJHdpdGhfc2lnbmVkX2NoYXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfc2lnbmVkX2NoYXIiID4mNgordGVzdCAieCR3aXRoX3NpZ25lZF9jaGFyIiAhPSB4eWVzICYmIE5DVVJTRVNfU0JPT0w9ImNoYXIiCisKKyMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtc2lnd2luY2ggdG8gdHVybiBvbiB1c2Ugb2YgU0lHV0lOQ0ggbG9naWMKK2VjaG8gIiRhc19tZToxMjIwNDogY2hlY2tpbmcgaWYgeW91IHdhbnQgU0lHV0lOQ0ggaGFuZGxlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IFNJR1dJTkNIIGhhbmRsZXIuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zaWd3aW5jaCBvciAtLWRpc2FibGUtc2lnd2luY2ggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfc2lnd2luY2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3NpZ3dpbmNoIgorICB3aXRoX3NpZ3dpbmNoPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9zaWd3aW5jaD0kd2l0aF9leHRfZnVuY3MKK2ZpOworZWNobyAiJGFzX21lOjEyMjE0OiByZXN1bHQ6ICR3aXRoX3NpZ3dpbmNoIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3NpZ3dpbmNoIiA+JjYKK3Rlc3QgIngkd2l0aF9zaWd3aW5jaCIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfU0lHV0lOQ0ggMQorRU9GCisKKyMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtdGNhcC1uYW1lcyB0byBhbGxvdyB1c2VyIHRvIGRlZmluZSBuZXcgY2FwYWJpbGl0aWVzCitlY2hvICIkYXNfbWU6MTIyMjI6IGNoZWNraW5nIGlmIHlvdSB3YW50IHVzZXItZGVmaW5hYmxlIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBsaWtlIHRlcm1jYXAiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB1c2VyLWRlZmluYWJsZSB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgbGlrZSB0ZXJtY2FwLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdGNhcC1uYW1lcyBvciAtLWRpc2FibGUtdGNhcC1uYW1lcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV90Y2FwX25hbWVzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV90Y2FwX25hbWVzIgorICB3aXRoX3RjYXBfbmFtZXM9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX3RjYXBfbmFtZXM9JHdpdGhfZXh0X2Z1bmNzCitmaTsKK2VjaG8gIiRhc19tZToxMjIzMjogcmVzdWx0OiAkd2l0aF90Y2FwX25hbWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3RjYXBfbmFtZXMiID4mNgorTkNVUlNFU19YTkFNRVM9MAordGVzdCAieCR3aXRoX3RjYXBfbmFtZXMiID0geHllcyAmJiBOQ1VSU0VTX1hOQU1FUz0xCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRpdmVseSBzYWZlIHRvIGV4cGVyaW1lbnQgd2l0aC4KKworZWNobyAiJGFzX21lOjEyMjQwOiBjaGVja2luZyBpZiB5b3Ugd2FudCBhbGwgZGV2ZWxvcG1lbnQgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IGFsbCBkZXZlbG9wbWVudCBjb2RlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRldmVsb3Agb3IgLS13aXRob3V0LWRldmVsb3Agd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2RldmVsb3Arc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGV2ZWxvcCIKKyAgd2l0aF9kZXZlbG9wPSR3aXRodmFsCitlbHNlCisgIHdpdGhfZGV2ZWxvcD1ubworZmk7CitlY2hvICIkYXNfbWU6MTIyNTA6IHJlc3VsdDogJHdpdGhfZGV2ZWxvcCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9kZXZlbG9wIiA+JjYKKworIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1oYXJkLXRhYnMgdG8gdHVybiBvbiB1c2Ugb2YgaGFyZC10YWJzIG9wdGltaXplCitlY2hvICIkYXNfbWU6MTIyNTQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IGhhcmQtdGFicyBjb2RlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgaGFyZC10YWJzIGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1oYXJkLXRhYnMgb3IgLS1kaXNhYmxlLWhhcmQtdGFicyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9oYXJkX3RhYnMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2hhcmRfdGFicyIKKworZWxzZQorICBlbmFibGVfaGFyZF90YWJzPSR3aXRoX2RldmVsb3AKK2ZpOworZWNobyAiJGFzX21lOjEyMjY0OiByZXN1bHQ6ICRlbmFibGVfaGFyZF90YWJzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRlbmFibGVfaGFyZF90YWJzIiA+JjYKK3Rlc3QgIngkZW5hYmxlX2hhcmRfdGFicyIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfSEFSRF9UQUJTIDEKK0VPRgorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLXhtYy1nbGl0Y2ggdG8gdHVybiBvbiB1c2Ugb2YgbWFnaWMtY29va2llIG9wdGltaXplCitlY2hvICIkYXNfbWU6MTIyNzI6IGNoZWNraW5nIGlmIHlvdSB3YW50IGxpbWl0ZWQgc3VwcG9ydCBmb3IgeG1jIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgbGltaXRlZCBzdXBwb3J0IGZvciB4bWMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS14bWMtZ2xpdGNoIG9yIC0tZGlzYWJsZS14bWMtZ2xpdGNoIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3htY19nbGl0Y2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3htY19nbGl0Y2giCisKK2Vsc2UKKyAgZW5hYmxlX3htY19nbGl0Y2g9JHdpdGhfZGV2ZWxvcAorZmk7CitlY2hvICIkYXNfbWU6MTIyODI6IHJlc3VsdDogJGVuYWJsZV94bWNfZ2xpdGNoIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRlbmFibGVfeG1jX2dsaXRjaCIgPiY2Cit0ZXN0ICJ4JGVuYWJsZV94bWNfZ2xpdGNoIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9YTUNfU1VQUE9SVCAxCitFT0YKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGVzZSBhcmUganVzdCBleHBlcmltZW50YWwsIHByb2JhYmx5IHNob3VsZCBub3QgYmUgaW4gYSBwYWNrYWdlOgorCitlY2hvICIkYXNfbWU6MTIyOTI6IGNoZWNraW5nIGlmIHlvdSBkbyBub3Qgd2FudCB0byBhc3N1bWUgY29sb3JzIGFyZSB3aGl0ZS1vbi1ibGFjayIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSBkbyBub3Qgd2FudCB0byBhc3N1bWUgY29sb3JzIGFyZSB3aGl0ZS1vbi1ibGFjay4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWFzc3VtZWQtY29sb3Igb3IgLS1kaXNhYmxlLWFzc3VtZWQtY29sb3Igd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfYXNzdW1lZF9jb2xvcitzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfYXNzdW1lZF9jb2xvciIKKyAgd2l0aF9hc3N1bWVkX2NvbG9yPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9hc3N1bWVkX2NvbG9yPXllcworZmk7CitlY2hvICIkYXNfbWU6MTIzMDI6IHJlc3VsdDogJHdpdGhfYXNzdW1lZF9jb2xvciIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9hc3N1bWVkX2NvbG9yIiA+JjYKK3Rlc3QgIngkd2l0aF9hc3N1bWVkX2NvbG9yIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9BU1NVTUVEX0NPTE9SIDEKK0VPRgorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWhhc2htYXAgdG8gdHVybiBvbiB1c2Ugb2YgaGFzaG1hcCBzY3JvbGxpbmcgbG9naWMKK2VjaG8gIiRhc19tZToxMjMxMDogY2hlY2tpbmcgaWYgeW91IHdhbnQgaGFzaG1hcCBzY3JvbGxpbmctb3B0aW1pemF0aW9uIGNvZGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBoYXNobWFwIHNjcm9sbGluZy1vcHRpbWl6YXRpb24gY29kZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWhhc2htYXAgb3IgLS1kaXNhYmxlLWhhc2htYXAgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfaGFzaG1hcCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfaGFzaG1hcCIKKyAgd2l0aF9oYXNobWFwPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9oYXNobWFwPXllcworZmk7CitlY2hvICIkYXNfbWU6MTIzMjA6IHJlc3VsdDogJHdpdGhfaGFzaG1hcCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9oYXNobWFwIiA+JjYKK3Rlc3QgIngkd2l0aF9oYXNobWFwIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9IQVNITUFQIDEKK0VPRgorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWNvbG9yZmdiZyB0byB0dXJuIG9uIHVzZSBvZiAkQ09MT1JGR0JHIGVudmlyb25tZW50CitlY2hvICIkYXNfbWU6MTIzMjg6IGNoZWNraW5nIGlmIHlvdSB3YW50IGNvbG9yZmdiZyBjb2RlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgY29sb3JmZ2JnIGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1jb2xvcmZnYmcgb3IgLS1kaXNhYmxlLWNvbG9yZmdiZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9jb2xvcmZnYmcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2NvbG9yZmdiZyIKKyAgd2l0aF9jb2xvcmZnYmc9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX2NvbG9yZmdiZz1ubworZmk7CitlY2hvICIkYXNfbWU6MTIzMzg6IHJlc3VsdDogJHdpdGhfY29sb3JmZ2JnIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2NvbG9yZmdiZyIgPiY2Cit0ZXN0ICJ4JHdpdGhfY29sb3JmZ2JnIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9DT0xPUkZHQkcgMQorRU9GCisKKyMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtaW50ZXJvcCB0byB0dXJuIG9uIHVzZSBvZiBiaW5kaW5ncyB1c2VkIGZvciBpbnRlcm9wCitlY2hvICIkYXNfbWU6MTIzNDY6IGNoZWNraW5nIGlmIHlvdSB3YW50IGludGVyb3AgYmluZGluZ3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBpbnRlcm9wIGJpbmRpbmdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaW50ZXJvcCBvciAtLWRpc2FibGUtaW50ZXJvcCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9pbnRlcm9wK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9pbnRlcm9wIgorICB3aXRoX2V4cF9pbnRlcm9wPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9leHBfaW50ZXJvcD0kY2ZfZGZ0X2ludGVyb3AKK2ZpOworZWNobyAiJGFzX21lOjEyMzU2OiByZXN1bHQ6ICR3aXRoX2V4cF9pbnRlcm9wIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX2V4cF9pbnRlcm9wIiA+JjYKKworTkNVUlNFU19JTlRFUk9QX0ZVTkNTPTAKK3Rlc3QgIngkd2l0aF9leHBfaW50ZXJvcCIgPSB4eWVzICYmIE5DVVJTRVNfSU5URVJPUF9GVU5DUz0xCisKKyMgVGhpcyBpcyBzdGlsbCBleHBlcmltZW50YWwgKDIwMDgwMzI5KSwgYnV0IHNob3VsZCB1bHRpbWF0ZWx5IGJlIG1vdmVkIHRvCisjIHRoZSBzY3JpcHQtYmxvY2sgLS13aXRoLW5vcm1hbCwgZXRjLgorCitlY2hvICIkYXNfbWU6MTIzNjU6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCB0aGUgcHRocmVhZCBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIHRoZSBwdGhyZWFkIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcHRocmVhZCBvciAtLXdpdGhvdXQtcHRocmVhZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcHRocmVhZCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9wdGhyZWFkIgorICB3aXRoX3B0aHJlYWQ9JHdpdGh2YWwKK2Vsc2UKKyAgd2l0aF9wdGhyZWFkPW5vCitmaTsKK2VjaG8gIiRhc19tZToxMjM3NTogcmVzdWx0OiAkd2l0aF9wdGhyZWFkIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3B0aHJlYWQiID4mNgorCitpZiB0ZXN0ICIkd2l0aF9wdGhyZWFkIiAhPSBubyA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTIzNzk6IGNoZWNraW5nIGZvciBwdGhyZWFkLmgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcHRocmVhZC5oLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfcHRocmVhZF9oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIzODUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIzODk6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjEyMzk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGFjX2N2X2hlYWRlcl9wdGhyZWFkX2g9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBhY19jdl9oZWFkZXJfcHRocmVhZF9oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTI0MTQ6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9wdGhyZWFkX2giID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9wdGhyZWFkX2giID4mNgoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1BUSFJFQURTX0ggMQorRU9GCisKKwlmb3IgY2ZfbGliX3B0aHJlYWQgaW4gcHRocmVhZCBjX3IKKwlkbworCSAgICBlY2hvICIkYXNfbWU6MTI0MjQ6IGNoZWNraW5nIGlmIHdlIGNhbiBsaW5rIHdpdGggdGhlICRjZl9saWJfcHRocmVhZCBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgY2FuIGxpbmsgd2l0aCB0aGUgJGNmX2xpYl9wdGhyZWFkIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CisJICAgIGNmX3NhdmVfTElCUz0iJExJQlMiCisKK2NmX2FkZF9saWJzPSItbCRjZl9saWJfcHRocmVhZCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI0NDUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorCitpbnQKK21haW4gKCkKK3sKKworCQlpbnQgcmMgPSBwdGhyZWFkX2NyZWF0ZSgwLDAsMCwwKTsKKwkJaW50IHIyID0gcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgwLCAwKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI0NjI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNDY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI0Njg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjQ3MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIHdpdGhfcHRocmVhZD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQord2l0aF9wdGhyZWFkPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCSAgICBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCSAgICBlY2hvICIkYXNfbWU6MTI0ODE6IHJlc3VsdDogJHdpdGhfcHRocmVhZCIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9wdGhyZWFkIiA+JjYKKwkgICAgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSB5ZXMgJiYgYnJlYWsKKwlkb25lCisKKwlpZiB0ZXN0ICIkd2l0aF9wdGhyZWFkIiA9IHllcyA7IHRoZW4KKworY2ZfYWRkX2xpYnM9Ii1sJGNmX2xpYl9wdGhyZWFkIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTElCUFRIUkVBRFMgMQorRU9GCisKKwllbHNlCisJICAgIHsgeyBlY2hvICIkYXNfbWU6MTI1MDk6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIHB0aHJlYWQgbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIHB0aHJlYWQgbGlicmFyeSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWZpCisKK2ZpCisKK2ZpCisKK2lmIHRlc3QgIngkd2l0aF9wdGhyZWFkIiAhPSB4bm87IHRoZW4KKwllY2hvICIkYXNfbWU6MTI1MTk6IGNoZWNraW5nIGZvciBwdGhyZWFkX2tpbGwiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcHRocmVhZF9raWxsLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX3B0aHJlYWRfa2lsbCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyNTI1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHB0aHJlYWRfa2lsbCAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBwdGhyZWFkX2tpbGwgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX3B0aHJlYWRfa2lsbCkgfHwgZGVmaW5lZCAoX19zdHViX19fcHRocmVhZF9raWxsKQorY2hva2UgbWUKKyNlbHNlCitmID0gcHRocmVhZF9raWxsOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNTU2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjU1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNTYyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI1NjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX3B0aHJlYWRfa2lsbD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19wdGhyZWFkX2tpbGw9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEyNTc1OiByZXN1bHQ6ICRhY19jdl9mdW5jX3B0aHJlYWRfa2lsbCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19wdGhyZWFkX2tpbGwiID4mNgoraWYgdGVzdCAkYWNfY3ZfZnVuY19wdGhyZWFkX2tpbGwgPSB5ZXM7IHRoZW4KKworCQllY2hvICIkYXNfbWU6MTI1Nzk6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGFsbG93IEVJTlRSIGluIHdnZXRjaCB3aXRoIHB0aHJlYWRzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gYWxsb3cgRUlOVFIgaW4gd2dldGNoIHdpdGggcHRocmVhZHMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wdGhyZWFkcy1laW50ciBvciAtLWRpc2FibGUtcHRocmVhZHMtZWludHIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcHRocmVhZHNfZWludHIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3B0aHJlYWRzX2VpbnRyIgorICB1c2VfcHRocmVhZHNfZWludHI9JGVuYWJsZXZhbAorZWxzZQorICB1c2VfcHRocmVhZHNfZWludHI9bm8KK2ZpOworCQllY2hvICIkYXNfbWU6MTI1ODk6IHJlc3VsdDogJHVzZV9wdGhyZWFkc19laW50ciIgPiY1CitlY2hvICIke0VDSE9fVH0kdXNlX3B0aHJlYWRzX2VpbnRyIiA+JjYKKwkJaWYgdGVzdCAieCR1c2VfcHRocmVhZHNfZWludHIiID0geHllcyA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1BUSFJFQURTX0VJTlRSIDEKK0VPRgorCisJCWZpCitmaQorCisJZWNobyAiJGFzX21lOjEyNjAwOiBjaGVja2luZyBpZiB5b3Ugd2FudCB0byB1c2Ugd2Vhay1zeW1ib2xzIGZvciBwdGhyZWFkcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2Vhay1zeW1ib2xzIG9yIC0tZGlzYWJsZS13ZWFrLXN5bWJvbHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfd2Vha19zeW1ib2xzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93ZWFrX3N5bWJvbHMiCisgIHVzZV93ZWFrX3N5bWJvbHM9JGVuYWJsZXZhbAorZWxzZQorICB1c2Vfd2Vha19zeW1ib2xzPW5vCitmaTsKKwllY2hvICIkYXNfbWU6MTI2MTA6IHJlc3VsdDogJHVzZV93ZWFrX3N5bWJvbHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHVzZV93ZWFrX3N5bWJvbHMiID4mNgorCWlmIHRlc3QgIngkdXNlX3dlYWtfc3ltYm9scyIgPSB4eWVzIDsgdGhlbgorCitlY2hvICIkYXNfbWU6MTI2MTQ6IGNoZWNraW5nIGlmICRDQyBzdXBwb3J0cyB3ZWFrIHN5bWJvbHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiAkQ0Mgc3VwcG9ydHMgd2VhayBzeW1ib2xzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl93ZWFrX3N5bWJvbHMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjYyMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorIyAgaWYgZGVmaW5lZCBfX1VTRV9JU09DOTkKKyMgICAgZGVmaW5lIF9jYXRfcHJhZ21hKGV4cCkJX1ByYWdtYSgjZXhwKQorIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkJX2NhdF9wcmFnbWEod2VhayBuYW1lKQorIyAgZWxzZQorIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkKKyMgIGVuZGlmCisjICBkZWZpbmUgX2RlY2xhcmUobmFtZSkJX19leHRlbnNpb25fXyBleHRlcm4gX190eXBlb2ZfXyhuYW1lKSBuYW1lCisjICBkZWZpbmUgd2Vha19zeW1ib2wobmFtZSkJX3dlYWtfcHJhZ21hKG5hbWUpIF9kZWNsYXJlKG5hbWUpIF9fYXR0cmlidXRlX18oKHdlYWspKQorI2VuZGlmCisKK3dlYWtfc3ltYm9sKGZvcGVuKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjY0NzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI2NTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI2NTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjY1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3dlYWtfc3ltYm9scz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MTI2Njc6IHJlc3VsdDogJGNmX2N2X3dlYWtfc3ltYm9scyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3Zfd2Vha19zeW1ib2xzIiA+JjYKKworCWVsc2UKKwkJY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCisJZmkKKworCWlmIHRlc3QgIngkY2ZfY3Zfd2Vha19zeW1ib2xzIiA9IHh5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9XRUFLX1NZTUJPTFMgMQorRU9GCisKKwlmaQorZmkKKworUFRIUkVBRD0KK2lmIHRlc3QgIngkd2l0aF9wdGhyZWFkIiA9ICJ4eWVzIiA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1BUSFJFQURTIDEKK0VPRgorCisJZW5hYmxlX3JlZW50cmFudD15ZXMKKwlpZiB0ZXN0ICJ4JGNmX2N2X3dlYWtfc3ltYm9scyIgPSB4eWVzIDsgdGhlbgorCQlQVEhSRUFEPS1scHRocmVhZAorCWZpCitmaQorCisjIFJlZW50cmFudCBjb2RlIGhhcyB0byBiZSBvcGFxdWU7IHRoZXJlJ3MgbGl0dGxlIGFkdmFudGFnZSB0byBtYWtpbmcgbmN1cnNlcworIyBvcGFxdWUgb3V0c2lkZSBvZiB0aGF0LCBzbyB0aGVyZSBpcyBubyAtLWVuYWJsZS1vcGFxdWUgb3B0aW9uLiAgV2UgY2FuIHVzZQorIyB0aGlzIG9wdGlvbiB3aXRob3V0IC0td2l0aC1wdGhyZWFkcywgYnV0IHRoaXMgd2lsbCBiZSBhbHdheXMgc2V0IGZvcgorIyBwdGhyZWFkcy4KK2VjaG8gIiRhc19tZToxMjcwMDogY2hlY2tpbmcgaWYgeW91IHdhbnQgcmVlbnRyYW50IGNvZGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCByZWVudHJhbnQgY29kZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlZW50cmFudCBvciAtLWRpc2FibGUtcmVlbnRyYW50IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3JlZW50cmFudCtzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfcmVlbnRyYW50IgorICB3aXRoX3JlZW50cmFudD0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfcmVlbnRyYW50PW5vCitmaTsKK2VjaG8gIiRhc19tZToxMjcxMDogcmVzdWx0OiAkd2l0aF9yZWVudHJhbnQiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfcmVlbnRyYW50IiA+JjYKK2lmIHRlc3QgIngkd2l0aF9yZWVudHJhbnQiID0geHllcyA7IHRoZW4KKwljZl9jdl9lbmFibGVfcmVlbnRyYW50PTEKKwljZl9jdl9lbmFibGVfb3BhcXVlPSJOQ1VSU0VTX0lOVEVSTkFMUyIKKwlOQ1VSU0VTX09QQVFVRT0xCisJTkNVUlNFU19TSVpFX1Q9aW50CisJaWYgdGVzdCAieCRjZl9jdl93ZWFrX3N5bWJvbHMiID0geHllcyA7IHRoZW4KKworIyByZW1vdmUgcHRocmVhZCBsaWJyYXJ5IGZyb20gJExJQlMKK0xJQlM9YGVjaG8gIiRMSUJTIiB8IHNlZCAtZSAncy8tbHB0aHJlYWRbIAldLy9nJyAtZSAncy8tbHB0aHJlYWQkLy8nYAorCitjZl9hZGRfbGlicz0iLWxwdGhyZWFkIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRURVNUX0xJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK1RFU1RfTElCUz0iJGNmX2FkZF9saWJzIgorCitjZl9hZGRfbGlicz0iLWxwdGhyZWFkIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRURVNUX0xJQlMyCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitURVNUX0xJQlMyPSIkY2ZfYWRkX2xpYnMiCisKKwllbHNlCisJCSMgd2hlbiBub3QgdXNpbmcgd2VhayBzeW1ib2xzIGJ1dCB3aXRoX3JlZW50cmFudCwKKwkJIyBhZGQgJ3QnIHRvIHRoZSBsaWJyYXJ5IHN1ZmZpeCBvbiBhbGwgcGxhdGZvcm1zCisJCSMgZXhjZXB0IGN5Z3dpbiwgd2hlcmUgd2Ugb25seSBkbyB0aGF0IGlmIEFMU08KKwkJIyBjb21waWxpbmcgd2l0aCBmdWxsIHRocmVhZCBzdXBwb3J0LgorCQljYXNlICIkaG9zdCIgaW4KKwkJKCpjeWd3aW4qIHwgKm1zeXMqKQorCQkJaWYgdGVzdCAiJHdpdGhfcHRocmVhZCIgPSAieWVzIiA7IHRoZW4KKwkJCQlpZiB0ZXN0ICJ4JGRpc2FibGVfbGliX3N1ZmZpeGVzIiA9ICJ4bm8iIDsgdGhlbgorCQkJCQlMSUJfU1VGRklYPSJ0JHtMSUJfU1VGRklYfSIKKwkJCQlmaQorCQkJZmkgOzsKKwkJKCopCisJCQlpZiB0ZXN0ICJ4JGRpc2FibGVfbGliX3N1ZmZpeGVzIiA9ICJ4bm8iIDsgdGhlbgorCQkJCUxJQl9TVUZGSVg9InQke0xJQl9TVUZGSVh9IgorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfUkVFTlRSQU5UIDEKK0VPRgorCitpZiB0ZXN0ICIke3dpdGhfYWJpX3ZlcnNpb24rc2V0fSIgIT0gc2V0OyB0aGVuCisJY2FzZSAkY2ZfY3ZfcmVsX3ZlcnNpb24gaW4KKwkoNS4qKQorCQljZl9jdl9yZWxfdmVyc2lvbj02LjAKKwkJY2ZfY3ZfYWJpX3ZlcnNpb249NgorCQl7IGVjaG8gIiRhc19tZToxMjc4MzogV0FSTklORzogb3ZlcnJpZGluZyBBQkkgdmVyc2lvbiB0byAkY2ZfY3ZfYWJpX3ZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBvdmVycmlkaW5nIEFCSSB2ZXJzaW9uIHRvICRjZl9jdl9hYmlfdmVyc2lvbiIgPiYyO30KKwkJOzsKKwllc2FjCitmaQorCitlbHNlCisJY2ZfY3ZfZW5hYmxlX3JlZW50cmFudD0wCisJY2ZfY3ZfZW5hYmxlX29wYXF1ZT0iTkNVUlNFU19PUEFRVUUiCisJTkNVUlNFU19PUEFRVUU9MAorCU5DVVJTRVNfU0laRV9UPXNob3J0CitmaQorCisjIyMgQWxsb3cgdXNpbmcgYSBkaWZmZXJlbnQgd3JhcC1wcmVmaXgKK2lmIHRlc3QgIiRjZl9jdl9lbmFibGVfcmVlbnRyYW50IiAhPSAwIHx8IHRlc3QgIiRCUk9LRU5fTElOS0VSIiA9IDEgOyB0aGVuCisJZWNobyAiJGFzX21lOjEyNzk4OiBjaGVja2luZyBmb3IgcHJlZml4IHVzZWQgdG8gd3JhcCBwdWJsaWMgdmFyaWFibGVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHByZWZpeCB1c2VkIHRvIHdyYXAgcHVibGljIHZhcmlhYmxlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC13cmFwLXByZWZpeCBvciAtLXdpdGhvdXQtd3JhcC1wcmVmaXggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3dyYXBfcHJlZml4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3dyYXBfcHJlZml4IgorICBOQ1VSU0VTX1dSQVBfUFJFRklYPSR3aXRodmFsCitlbHNlCisgIE5DVVJTRVNfV1JBUF9QUkVGSVg9X25jXworZmk7CisJZWNobyAiJGFzX21lOjEyODA4OiByZXN1bHQ6ICROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjYKK2Vsc2UKKwlOQ1VSU0VTX1dSQVBfUFJFRklYPV9uY18KK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgTkNVUlNFU19XUkFQX1BSRUZJWCAiJE5DVVJTRVNfV1JBUF9QUkVGSVgiCitFT0YKKworZWNobyAiJGFzX21lOjEyODE4OiBjaGVja2luZyBpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgc2FmZS1zcHJpbnRmIGNvZGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgc2FmZS1zcHJpbnRmIGNvZGUuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zYWZlLXNwcmludGYgb3IgLS1kaXNhYmxlLXNhZmUtc3ByaW50ZiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9zYWZlX3NwcmludGYrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX3NhZmVfc3ByaW50ZiIKKyAgd2l0aF9zYWZlX3NwcmludGY9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX3NhZmVfc3ByaW50Zj1ubworZmk7CitlY2hvICIkYXNfbWU6MTI4Mjg6IHJlc3VsdDogJHdpdGhfc2FmZV9zcHJpbnRmIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3NhZmVfc3ByaW50ZiIgPiY2Cit0ZXN0ICJ4JHdpdGhfc2FmZV9zcHJpbnRmIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9TQUZFX1NQUklOVEYgMQorRU9GCisKKyMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXNjcm9sbC1oaW50cyB0byB0dXJuIG9mZiB1c2Ugb2Ygc2Nyb2xsLWhpbnRzIHNjcm9sbGluZyBsb2dpYworIyB3aGVuIGhhc2htYXAgaXMgdXNlZCBzY3JvbGwgaGludHMgYXJlIHVzZWxlc3MKK2lmIHRlc3QgIiR3aXRoX2hhc2htYXAiID0gbm8gOyB0aGVuCitlY2hvICIkYXNfbWU6MTI4Mzg6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGV4cGVyaW1lbnQgd2l0aG91dCBzY3JvbGxpbmctaGludHMgY29kZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGV4cGVyaW1lbnQgd2l0aG91dCBzY3JvbGxpbmctaGludHMgY29kZS4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNjcm9sbC1oaW50cyBvciAtLWRpc2FibGUtc2Nyb2xsLWhpbnRzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3Njcm9sbF9oaW50cytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfc2Nyb2xsX2hpbnRzIgorICB3aXRoX3Njcm9sbF9oaW50cz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfc2Nyb2xsX2hpbnRzPXllcworZmk7CitlY2hvICIkYXNfbWU6MTI4NDg6IHJlc3VsdDogJHdpdGhfc2Nyb2xsX2hpbnRzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX3Njcm9sbF9oaW50cyIgPiY2Cit0ZXN0ICJ4JHdpdGhfc2Nyb2xsX2hpbnRzIiA9IHh5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9TQ1JPTExfSElOVFMgMQorRU9GCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMjg1NzogY2hlY2tpbmcgaWYgeW91IHdhbnQgd2dldGNoLWV2ZW50cyBjb2RlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgd2dldGNoLWV2ZW50cyBjb2RlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2dldGNoLWV2ZW50cyBvciAtLWRpc2FibGUtd2dldGNoLWV2ZW50cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV93Z2V0Y2hfZXZlbnRzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93Z2V0Y2hfZXZlbnRzIgorICB3aXRoX3dnZXRjaF9ldmVudHM9JGVuYWJsZXZhbAorZWxzZQorICB3aXRoX3dnZXRjaF9ldmVudHM9bm8KK2ZpOworZWNobyAiJGFzX21lOjEyODY3OiByZXN1bHQ6ICR3aXRoX3dnZXRjaF9ldmVudHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfd2dldGNoX2V2ZW50cyIgPiY2Cit0ZXN0ICJ4JHdpdGhfd2dldGNoX2V2ZW50cyIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMgMQorRU9GCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWVjaG8gdG8gc3VwcHJlc3MgZnVsbCBkaXNwbGF5IGNvbXBpbGluZyBjb21tYW5kcworCitlY2hvICIkYXNfbWU6MTI4Nzg6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHNlZSBsb25nIGNvbXBpbGluZyBtZXNzYWdlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHNlZSBsb25nIGNvbXBpbGluZyBtZXNzYWdlcy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWVjaG8gb3IgLS1kaXNhYmxlLWVjaG8gd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZWNobytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfZWNobyIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gJiYgZW5hYmxldmFsPXllcworCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICJ5ZXMiIDsgdGhlbgorCisJRUNIT19MVD0nLS1zaWxlbnQnCisJRUNIT19MRD0nQGVjaG8gbGlua2luZyAkQDsnCisJUlVMRV9DQz0nQGVjaG8gY29tcGlsaW5nICQ8JworCVNIT1dfQ0M9J0BlY2hvIGNvbXBpbGluZyAkQCcKKwlFQ0hPX0NDPSdAJworCisJZWxzZQorCisJRUNIT19MVD0nJworCUVDSE9fTEQ9JycKKwlSVUxFX0NDPScnCisJU0hPV19DQz0nJworCUVDSE9fQ0M9JycKKworCWZpCitlbHNlCisgIGVuYWJsZXZhbD15ZXMKKworCUVDSE9fTFQ9JycKKwlFQ0hPX0xEPScnCisJUlVMRV9DQz0nJworCVNIT1dfQ0M9JycKKwlFQ0hPX0NDPScnCisKK2ZpOworZWNobyAiJGFzX21lOjEyOTEyOiByZXN1bHQ6ICRlbmFibGV2YWwiID4mNQorZWNobyAiJHtFQ0hPX1R9JGVuYWJsZXZhbCIgPiY2CisKK2lmIHRlc3QgIngkZW5hYmxlX2VjaG8iID0geHllczsgdGhlbgorCUVDSE9fTElOSz0KK2Vsc2UKKwlFQ0hPX0xJTks9J0AgZWNobyBsaW5raW5nICRAIC4uLiA7JworCXRlc3QgLW4gIiRMSUJUT09MIiAmJiBMSUJUT09MPSIkTElCVE9PTCAtLXNpbGVudCIKKwl0ZXN0IC1uICIkTElCVE9PTF9DWFgiICYmIExJQlRPT0xfQ1hYPSIkTElCVE9PTF9DWFggLS1zaWxlbnQiCitmaQorCisjIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS13YXJuaW5ncyB0byB0dXJuIG9uIGFsbCBnY2Mgd2FybmluZ3MKK2VjaG8gIiRhc19tZToxMjkyNDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGNvbXBpbGVyIHdhcm5pbmdzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGNvbXBpbGVyIHdhcm5pbmdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2FybmluZ3Mgb3IgLS1kaXNhYmxlLXdhcm5pbmdzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3dhcm5pbmdzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93YXJuaW5ncyIKKyAgd2l0aF93YXJuaW5ncz0kZW5hYmxldmFsCitmaTsKK2VjaG8gIiRhc19tZToxMjkzMjogcmVzdWx0OiAkd2l0aF93YXJuaW5ncyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF93YXJuaW5ncyIgPiY2CisKK2lmIHRlc3QgIngkd2l0aF93YXJuaW5ncyIgPSAieHllcyI7IHRoZW4KKworIAlBREFGTEFHUz0iJEFEQUZMQUdTIC1nbmF0ZyIKKworSU5URUxfQ09NUElMRVI9bm8KKworaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJY2FzZSAkaG9zdF9vcyBpbgorCShsaW51eCp8Z251KikKKwkJZWNobyAiJGFzX21lOjEyOTQ0OiBjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBDIGNvbXBpbGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgSW50ZWwgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKKwkJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJCUNGTEFHUz0iJENGTEFHUyAtbm8tZ2NjIgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyOTQ5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5NjY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyOTY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyOTcyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI5NzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBJTlRFTF9DT01QSUxFUj15ZXMKK2NmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLXdlMTQ3IgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisJCWVjaG8gIiRhc19tZToxMjk4NjogcmVzdWx0OiAkSU5URUxfQ09NUElMRVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JElOVEVMX0NPTVBJTEVSIiA+JjYKKwkJOzsKKwllc2FjCitmaQorCitDTEFOR19DT01QSUxFUj1ubworCitpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTI5OTU6IGNoZWNraW5nIGlmIHRoaXMgaXMgcmVhbGx5IENsYW5nIEMgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBDIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgorCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCUNGTEFHUz0iJENGTEFHUyAtUXVudXNlZC1hcmd1bWVudHMiCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzAwMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX19jbGFuZ19fCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMwMTc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMDIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMDIzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMwMjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBDTEFOR19DT01QSUxFUj15ZXMKK2NmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLVF1bnVzZWQtYXJndW1lbnRzIgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwllY2hvICIkYXNfbWU6MTMwMzc6IHJlc3VsdDogJENMQU5HX0NPTVBJTEVSIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDTEFOR19DT01QSUxFUiIgPiY2CitmaQorCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSAxMzA0MiAiJHthc19tZTotY29uZmlndXJlfSIKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsgcmV0dXJuIChhcmd2W2FyZ2MtMV0gPT0gMCkgOyB9CitFT0YKKworaWYgdGVzdCAiJElOVEVMX0NPTVBJTEVSIiA9IHllcwordGhlbgorIyBUaGUgIi13ZFhYWCIgb3B0aW9ucyBzdXBwcmVzcyB3YXJuaW5nczoKKyMgcmVtYXJrICMxNDE5OiBleHRlcm5hbCBkZWNsYXJhdGlvbiBpbiBwcmltYXJ5IHNvdXJjZSBmaWxlCisjIHJlbWFyayAjMTY4MzogZXhwbGljaXQgY29udmVyc2lvbiBvZiBhIDY0LWJpdCBpbnRlZ3JhbCB0eXBlIHRvIGEgc21hbGxlciBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKKyMgcmVtYXJrICMxNjg0OiBjb252ZXJzaW9uIGZyb20gcG9pbnRlciB0byBzYW1lLXNpemVkIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQorIyByZW1hcmsgIzE5MzogemVybyB1c2VkIGZvciB1bmRlZmluZWQgcHJlcHJvY2Vzc2luZyBpZGVudGlmaWVyCisjIHJlbWFyayAjNTkzOiB2YXJpYWJsZSAiY3Vyc19zYl9sZWZ0X2Fycm93IiB3YXMgc2V0IGJ1dCBuZXZlciB1c2VkCisjIHJlbWFyayAjODEwOiBjb252ZXJzaW9uIGZyb20gImludCIgdG8gIkRpbWVuc2lvbj17dW5zaWduZWQgc2hvcnR9IiBtYXkgbG9zZSBzaWduaWZpY2FudCBiaXRzCisjIHJlbWFyayAjODY5OiBwYXJhbWV0ZXIgInR3IiB3YXMgbmV2ZXIgcmVmZXJlbmNlZAorIyByZW1hcmsgIzk4MTogb3BlcmFuZHMgYXJlIGV2YWx1YXRlZCBpbiB1bnNwZWNpZmllZCBvcmRlcgorIyB3YXJuaW5nICMyNzk6IGNvbnRyb2xsaW5nIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKKworCXsgZWNobyAiJGFzX21lOjEzMDU5OiBjaGVja2luZyBmb3IgJENDIHdhcm5pbmcgb3B0aW9ucy4uLiIgPiY1CitlY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjY7fQorCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCUVYVFJBX0NGTEFHUz0iLVdhbGwiCisJZm9yIGNmX29wdCBpbiBcCisJCXdkMTQxOSBcCisJCXdkMTY4MyBcCisJCXdkMTY4NCBcCisJCXdkMTkzIFwKKwkJd2Q1OTMgXAorCQl3ZDI3OSBcCisJCXdkODEwIFwKKwkJd2Q4NjkgXAorCQl3ZDk4MQorCWRvCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMDc1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzA3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiJGFzX21lOjEzMDgwOiByZXN1bHQ6IC4uLiAtJGNmX29wdCIgPiY1CitlY2hvICIke0VDSE9fVH0uLi4gLSRjZl9vcHQiID4mNgorCQkJRVhUUkFfQ0ZMQUdTPSIkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlmaQorCWRvbmUKKwlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKworZWxpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorCXsgZWNobyAiJGFzX21lOjEzMDg5OiBjaGVja2luZyBmb3IgJENDIHdhcm5pbmcgb3B0aW9ucy4uLiIgPiY1CitlY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjY7fQorCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCUVYVFJBX0NGTEFHUz0KKwljZl93YXJuX0NPTlNUPSIiCisJdGVzdCAiJHdpdGhfZXh0X2NvbnN0IiA9IHllcyAmJiBjZl93YXJuX0NPTlNUPSJXd3JpdGUtc3RyaW5ncyIKKwljZl9nY2Nfd2FybmluZ3M9IldpZ25vcmVkLXF1YWxpZmllcnMgV2xvZ2ljYWwtb3AgV3ZhcmFyZ3MiCisJdGVzdCAieCRDTEFOR19DT01QSUxFUiIgPSB4eWVzICYmIGNmX2djY193YXJuaW5ncz0KKwlmb3IgY2Zfb3B0IGluIFcgV2FsbCBcCisJCVdiYWQtZnVuY3Rpb24tY2FzdCBcCisJCVdjYXN0LWFsaWduIFwKKwkJV2Nhc3QtcXVhbCBcCisJCVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgXAorCQlXZXh0cmEgXAorCQlXaW5saW5lIFwKKwkJV21pc3NpbmctZGVjbGFyYXRpb25zIFwKKwkJV21pc3NpbmctcHJvdG90eXBlcyBcCisJCVduZXN0ZWQtZXh0ZXJucyBcCisJCVdwb2ludGVyLWFyaXRoIFwKKwkJV3NoYWRvdyBcCisJCVdzdHJpY3QtcHJvdG90eXBlcyBcCisJCVd1bmRlZiAkY2ZfZ2NjX3dhcm5pbmdzICRjZl93YXJuX0NPTlNUIFduby11bmtub3duLXByYWdtYXMgV3N3aXRjaC1lbnVtCisJZG8KKwkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgJEVYVFJBX0NGTEFHUyAtJGNmX29wdCIKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMxMTM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMTE2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTMxMTg6IHJlc3VsdDogLi4uIC0kY2Zfb3B0IiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiAtJGNmX29wdCIgPiY2CisJCQljYXNlICRjZl9vcHQgaW4KKwkJCShXY2FzdC1xdWFsKQorCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURYVFNUUklOR0RFRklORVMiCisJCQkJOzsKKwkJCShXaW5saW5lKQorCQkJCWNhc2UgJEdDQ19WRVJTSU9OIGluCisJCQkJKFszNF0uKikKKwkJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTMxMjk6IHRlc3RpbmcgZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTiAuLi4iIDE+JjUKKworCQkJCQljb250aW51ZTs7CisJCQkJZXNhYworCQkJCTs7CisJCQkoV3BvaW50ZXItYXJpdGgpCisJCQkJY2FzZSAkR0NDX1ZFUlNJT04gaW4KKwkJCQkoWzEyXS4qKQorCQkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMzEzOTogdGVzdGluZyBmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OIC4uLiIgMT4mNQorCisJCQkJCWNvbnRpbnVlOzsKKwkJCQllc2FjCisJCQkJOzsKKwkJCWVzYWMKKwkJCUVYVFJBX0NGTEFHUz0iJEVYVFJBX0NGTEFHUyAtJGNmX29wdCIKKwkJZmkKKwlkb25lCisJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorCisJaWYgdGVzdCAieCRjZl93aXRoX2N4eCIgPSB4eWVzIDsgdGhlbgorCitJTlRFTF9DUExVU1BMVVM9bm8KKworaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJY2FzZSAkaG9zdF9vcyBpbgorCShsaW51eCp8Z251KikKKwkJZWNobyAiJGFzX21lOjEzMTU5OiBjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBDKysgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBDKysgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CisJCWNmX3NhdmVfQ0ZMQUdTPSIkQ1hYRkxBR1MiCisJCUNYWEZMQUdTPSIkQ1hYRkxBR1MgLW5vLWdjYyIKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzE2NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMTgxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzE4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMzE4NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMTkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgSU5URUxfQ1BMVVNQTFVTPXllcworY2Zfc2F2ZV9DRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtd2UxNDciCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQlDWFhGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCQllY2hvICIkYXNfbWU6MTMyMDE6IHJlc3VsdDogJElOVEVMX0NQTFVTUExVUyIgPiY1CitlY2hvICIke0VDSE9fVH0kSU5URUxfQ1BMVVNQTFVTIiA+JjYKKwkJOzsKKwllc2FjCitmaQorCitDTEFOR19DUExVU1BMVVM9bm8KKworaWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjEzMjEwOiBjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBDKysgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBDKysgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CisJY2Zfc2F2ZV9DRkxBR1M9IiRDWFhGTEFHUyIKKwlDWFhGTEFHUz0iJENYWEZMQUdTIC1RdW51c2VkLWFyZ3VtZW50cyIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzMjE1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyNpZmRlZiBfX2NsYW5nX18KKyNlbHNlCittYWtlIGFuIGVycm9yCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzIzMjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMyMzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyMzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzI0MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIENMQU5HX0NQTFVTUExVUz15ZXMKK2NmX3NhdmVfQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgLVF1bnVzZWQtYXJndW1lbnRzIgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlDWFhGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCWVjaG8gIiRhc19tZToxMzI1MjogcmVzdWx0OiAkQ0xBTkdfQ1BMVVNQTFVTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDTEFOR19DUExVU1BMVVMiID4mNgorZmkKKworYWNfZXh0PWNjCithY19jcHA9JyRDWFhDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENYWCAtYyAkQ1hYRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENYWEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQorYWNfbWFpbl9yZXR1cm49cmV0dXJuCisKK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDEzMjY0ICJjb25maWd1cmUiCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7IHJldHVybiAoYXJndlthcmdjLTFdID09IDApIDsgfQorRU9GCisKK2lmIHRlc3QgIiRJTlRFTF9DUExVU1BMVVMiID0geWVzCit0aGVuCisjIFRoZSAiLXdkWFhYIiBvcHRpb25zIHN1cHByZXNzIHdhcm5pbmdzOgorIyByZW1hcmsgIzE0MTk6IGV4dGVybmFsIGRlY2xhcmF0aW9uIGluIHByaW1hcnkgc291cmNlIGZpbGUKKyMgcmVtYXJrICMxNjgyOiBpbXBsaWNpdCBjb252ZXJzaW9uIG9mIGEgNjQtYml0IGludGVncmFsIHR5cGUgdG8gYSBzbWFsbGVyIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQorIyByZW1hcmsgIzE2ODM6IGV4cGxpY2l0IGNvbnZlcnNpb24gb2YgYSA2NC1iaXQgaW50ZWdyYWwgdHlwZSB0byBhIHNtYWxsZXIgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCisjIHJlbWFyayAjMTY4NDogY29udmVyc2lvbiBmcm9tIHBvaW50ZXIgdG8gc2FtZS1zaXplZCBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKKyMgcmVtYXJrICMxOTM6IHplcm8gdXNlZCBmb3IgdW5kZWZpbmVkIHByZXByb2Nlc3NpbmcgaWRlbnRpZmllcgorIyByZW1hcmsgIzU5MzogdmFyaWFibGUgImN1cnNfc2JfbGVmdF9hcnJvdyIgd2FzIHNldCBidXQgbmV2ZXIgdXNlZAorIyByZW1hcmsgIzgxMDogY29udmVyc2lvbiBmcm9tICJpbnQiIHRvICJEaW1lbnNpb249e3Vuc2lnbmVkIHNob3J0fSIgbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cworIyByZW1hcmsgIzg2OTogcGFyYW1ldGVyICJ0dyIgd2FzIG5ldmVyIHJlZmVyZW5jZWQKKyMgcmVtYXJrICM5ODE6IG9wZXJhbmRzIGFyZSBldmFsdWF0ZWQgaW4gdW5zcGVjaWZpZWQgb3JkZXIKKyMgd2FybmluZyAjMjY5OiBpbnZhbGlkIGZvcm1hdCBzdHJpbmcgY29udmVyc2lvbgorCisJeyBlY2hvICIkYXNfbWU6MTMyODI6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9CisJY2Zfc2F2ZV9DWFhGTEFHUz0iJENYWEZMQUdTIgorCUVYVFJBX0NYWEZMQUdTPSItV2FsbCIKKwlmb3IgY2Zfb3B0IGluIFwKKwkJd2QxNDE5IFwKKwkJd2QxNjgyIFwKKwkJd2QxNjgzIFwKKwkJd2QxNjg0IFwKKwkJd2QxOTMgXAorCQl3ZDI3OSBcCisJCXdkNTkzIFwKKwkJd2Q4MTAgXAorCQl3ZDg2OSBcCisJCXdkOTgxCisJZG8KKwkJQ1hYRkxBR1M9IiRjZl9zYXZlX0NYWEZMQUdTICRFWFRSQV9DWFhGTEFHUyAtJGNmX29wdCIKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyOTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMzAyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTMzMDQ6IHJlc3VsdDogLi4uIC0kY2Zfb3B0IiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiAtJGNmX29wdCIgPiY2CisJCQlFWFRSQV9DWFhGTEFHUz0iJEVYVFJBX0NYWEZMQUdTIC0kY2Zfb3B0IgorCQlmaQorCWRvbmUKKwlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MiCisKK2VsaWYgdGVzdCAiJEdYWCIgPSB5ZXMKK3RoZW4KKwl7IGVjaG8gIiRhc19tZToxMzMxMzogY2hlY2tpbmcgZm9yICRDWFggd2FybmluZyBvcHRpb25zLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDWFggd2FybmluZyBvcHRpb25zLi4uIiA+JjY7fQorCWNmX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKKwlFWFRSQV9DWFhGTEFHUz0iLVcgLVdhbGwiCisJY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzPSIiCisJdGVzdCAiJHdpdGhfZXh0X2NvbnN0IiA9IHllcyAmJiBjZl9neHhfZXh0cmFfd2FybmluZ3M9Ild3cml0ZS1zdHJpbmdzIgorCWNhc2UgIiRHQ0NfVkVSU0lPTiIgaW4KKwkoWzEtMl0uKikKKwkJOzsKKwkoKikKKwkJY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzPSIkY2ZfZ3h4X2V4dHJhX3dhcm5pbmdzIFdlZmZjKysiCisJCTs7CisJZXNhYworCWZvciBjZl9vcHQgaW4gXAorCQlXYWJpIFwKKwkJZmFiaS12ZXJzaW9uPTAgXAorCQlXZXh0cmEgXAorCQlXaWdub3JlZC1xdWFsaWZpZXJzIFwKKwkJV2xvZ2ljYWwtb3AgXAorCQlXb3ZlcmxvYWRlZC12aXJ0dWFsIFwKKwkJV3NpZ24tcHJvbW8gXAorCQlXc3ludGggXAorCQlXb2xkLXN0eWxlLWNhc3QgXAorCQlXY2FzdC1hbGlnbiBcCisJCVdjYXN0LXF1YWwgXAorCQlXcG9pbnRlci1hcml0aCBcCisJCVdzaGFkb3cgXAorCQlXdW5kZWYgJGNmX2d4eF9leHRyYV93YXJuaW5ncyBXbm8tdW51c2VkCisJZG8KKwkJQ1hYRkxBR1M9IiRjZl9zYXZlX0NYWEZMQUdTICRFWFRSQV9DWFhGTEFHUyAtV2Vycm9yIC0kY2Zfb3B0IgorCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzM0MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMzNDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxMzM0ODogcmVzdWx0OiAuLi4gLSRjZl9vcHQiID4mNQorZWNobyAiJHtFQ0hPX1R9Li4uIC0kY2Zfb3B0IiA+JjYKKwkJCUVYVFJBX0NYWEZMQUdTPSIkRVhUUkFfQ1hYRkxBR1MgLSRjZl9vcHQiCisJCWVsc2UKKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTMzNTI6IHJlc3VsdDogLi4uIG5vIC0kY2Zfb3B0IiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiBubyAtJGNmX29wdCIgPiY2CisJCWZpCisJZG9uZQorCUNYWEZMQUdTPSIkY2Zfc2F2ZV9DWFhGTEFHUyIKK2ZpCisKK3JtIC1yZiBjb25mdGVzdCoKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgorCisJZmkKK2ZpCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCitjYXQgPiBjb25mdGVzdC5pIDw8RU9GCisjaWZuZGVmIEdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX05PUkVUVVJOCisjZGVmaW5lIEdDQ19OT1JFVFVSTiAvKiBub3RoaW5nICovCisjZW5kaWYKKyNpZm5kZWYgR0NDX1VOVVNFRAorI2RlZmluZSBHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KKyNlbmRpZgorRU9GCitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorCXsgZWNobyAiJGFzX21lOjEzMzg4OiBjaGVja2luZyBmb3IgJENDIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlcy4uLiIgPiY1CitlY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciAkQ0MgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmVzLi4uIiA+JjY7fQorY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgMTMzOTEgIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlICJjb25mdGVzdC5oIgorI2luY2x1ZGUgImNvbmZ0ZXN0LmkiCisjaWYJR0NDX1BSSU5URgorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSkKKyNlbHNlCisjZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIC8qbm90aGluZyovCisjZW5kaWYKKyNpZglHQ0NfU0NBTkYKKyNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSkKKyNlbHNlCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIC8qbm90aGluZyovCisjZW5kaWYKK2V4dGVybiB2b2lkIHdvdyhjaGFyICosLi4uKSBHQ0NfU0NBTkZMSUtFKDEsMik7CitleHRlcm4gdm9pZCBvb3BzKGNoYXIgKiwuLi4pIEdDQ19QUklOVEZMSUtFKDEsMikgR0NDX05PUkVUVVJOOworZXh0ZXJuIHZvaWQgZm9vKHZvaWQpIEdDQ19OT1JFVFVSTjsKK2ludCBtYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXSBHQ0NfVU5VU0VEKSB7IHJldHVybiAwOyB9CitFT0YKKwljZl9wcmludGZfYXR0cmlidXRlPW5vCisJY2Zfc2NhbmZfYXR0cmlidXRlPW5vCisJZm9yIGNmX2F0dHJpYnV0ZSBpbiBzY2FuZiBwcmludGYgdW51c2VkIG5vcmV0dXJuCisJZG8KKworY2ZfQVRUUklCVVRFPWBlY2hvICIkY2ZfYXR0cmlidXRlIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCQljZl9kaXJlY3RpdmU9Il9fYXR0cmlidXRlX18oKCRjZl9hdHRyaWJ1dGUpKSIKKwkJZWNobyAiY2hlY2tpbmcgZm9yICRDQyAkY2ZfZGlyZWN0aXZlIiAxPiY1CisKKwkJY2FzZSAkY2ZfYXR0cmlidXRlIGluCisJCShwcmludGYpCisJCQljZl9wcmludGZfYXR0cmlidXRlPXllcworCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFIDEKK0VPRgorCQkJOzsKKwkJKHNjYW5mKQorCQkJY2Zfc2NhbmZfYXR0cmlidXRlPXllcworCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFIDEKK0VPRgorCQkJOzsKKwkJKCopCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgJGNmX2RpcmVjdGl2ZQorRU9GCisJCQk7OworCQllc2FjCisKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM0NDA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzNDQzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTM0NDU6IHJlc3VsdDogLi4uICRjZl9hdHRyaWJ1dGUiID4mNQorZWNobyAiJHtFQ0hPX1R9Li4uICRjZl9hdHRyaWJ1dGUiID4mNgorCQkJY2F0IGNvbmZ0ZXN0LmggPj5jb25mZGVmcy5oCisJCQljYXNlICRjZl9hdHRyaWJ1dGUgaW4KKwkJCShub3JldHVybikKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBHQ0NfTk9SRVRVUk4gJGNmX2RpcmVjdGl2ZQorRU9GCisKKwkJCQk7OworCQkJKHByaW50ZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2ZfcHJpbnRmX2F0dHJpYnV0ZSIgIT0gbm8gOyB0aGVuCisJCQkJCWNmX3ZhbHVlPSdfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSknCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEdDQ19QUklOVEYgMQorRU9GCisKKwkJCQlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpICRjZl92YWx1ZQorRU9GCisKKwkJCQk7OworCQkJKHNjYW5mKQorCQkJCWNmX3ZhbHVlPScvKiBub3RoaW5nICovJworCQkJCWlmIHRlc3QgIiRjZl9zY2FuZl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSknCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEdDQ19TQ0FORiAxCitFT0YKKworCQkJCWZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAkY2ZfdmFsdWUKK0VPRgorCisJCQkJOzsKKwkJCSh1bnVzZWQpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgR0NDX1VOVVNFRCAkY2ZfZGlyZWN0aXZlCitFT0YKKworCQkJCTs7CisJCQllc2FjCisJCWZpCisJZG9uZQorZWxzZQorCWZncmVwIGRlZmluZSBjb25mdGVzdC5pID4+Y29uZmRlZnMuaAorZmkKK3JtIC1yZiBjb25mdGVzdCoKK2ZpCisKK2VjaG8gIiRhc19tZToxMzUwNDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gd29yayBhcm91bmQgYm9ndXMgY29tcGlsZXIvbG9hZGVyIHdhcm5pbmdzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gd29yayBhcm91bmQgYm9ndXMgY29tcGlsZXIvbG9hZGVyIHdhcm5pbmdzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3RyaW5nLWhhY2tzIG9yIC0tZGlzYWJsZS1zdHJpbmctaGFja3Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfc3RyaW5nX2hhY2tzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9zdHJpbmdfaGFja3MiCisgIHdpdGhfc3RyaW5nX2hhY2tzPSRlbmFibGV2YWwKK2Vsc2UKKyAgd2l0aF9zdHJpbmdfaGFja3M9bm8KK2ZpOworZWNobyAiJGFzX21lOjEzNTE0OiByZXN1bHQ6ICR3aXRoX3N0cmluZ19oYWNrcyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9zdHJpbmdfaGFja3MiID4mNgorCitpZiB0ZXN0ICJ4JHdpdGhfc3RyaW5nX2hhY2tzIiA9ICJ4eWVzIjsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfU1RSSU5HX0hBQ0tTIDEKK0VPRgorCisJeyBlY2hvICIkYXNfbWU6MTM1MjM6IFdBUk5JTkc6IGVuYWJsaW5nIHN0cmluZy1oYWNrcyB0byB3b3JrIGFyb3VuZCBib2d1cyBjb21waWxlci9sb2FkZXIgd2FybmluZ3MiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBlbmFibGluZyBzdHJpbmctaGFja3MgdG8gd29yayBhcm91bmQgYm9ndXMgY29tcGlsZXIvbG9hZGVyIHdhcm5pbmdzIiA+JjI7fQorCitmb3IgYWNfZnVuYyBpbiBzdHJsY2F0IHN0cmxjcHkgc25wcmludGYKK2RvCithc19hY192YXI9YGVjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjEzNTI5OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2Z1bmMuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX3ZhcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM1MzUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgJGFjX2Z1bmMgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViXyRhY19mdW5jKSB8fCBkZWZpbmVkIChfX3N0dWJfX18kYWNfZnVuYykKK2Nob2tlIG1lCisjZWxzZQorZiA9ICRhY19mdW5jOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNTY2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzU2OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNTcyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM1NzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBldmFsICIkYXNfYWNfdmFyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZXZhbCAiJGFzX2FjX3Zhcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEzNTg1OiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworZmkKKworIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtYXNzZXJ0aW9ucyB0byB0dXJuIG9uIGdlbmVyYXRpb24gb2YgYXNzZXJ0aW9uIGNvZGUKK2VjaG8gIiRhc19tZToxMzU5ODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHJ1bnRpbWUgYXNzZXJ0aW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBydW50aW1lIGFzc2VydGlvbnMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1hc3NlcnRpb25zIG9yIC0tZGlzYWJsZS1hc3NlcnRpb25zIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2Fzc2VydGlvbnMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2Fzc2VydGlvbnMiCisgIHdpdGhfYXNzZXJ0aW9ucz0kZW5hYmxldmFsCitlbHNlCisgIHdpdGhfYXNzZXJ0aW9ucz1ubworZmk7CitlY2hvICIkYXNfbWU6MTM2MDg6IHJlc3VsdDogJHdpdGhfYXNzZXJ0aW9ucyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF9hc3NlcnRpb25zIiA+JjYKK2lmIHRlc3QgLW4gIiRHQ0MiCit0aGVuCisJaWYgdGVzdCAiJHdpdGhfYXNzZXJ0aW9ucyIgPSBubworCXRoZW4KKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRE5ERUJVRyIKKwllbHNlCisKKyAJQURBRkxBR1M9IiRBREFGTEFHUyAtZ25hdGEiCisKKwlmaQorZmkKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLWxlYWtzIHRvIHN1cHByZXNzICJwZXJtYW5lbnQiIGxlYWtzLCBmb3IgdGVzdGluZworCitlY2hvICIkYXNfbWU6MTM2MjQ6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBkbWFsbG9jIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRtYWxsb2MgZm9yIHRlc3RpbmcuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZG1hbGxvYyBvciAtLXdpdGhvdXQtZG1hbGxvYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZG1hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9kbWFsbG9jIgorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFVTRV9ETUFMTE9DIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX2RtYWxsb2M9eWVzCitlbHNlCisgIHdpdGhfZG1hbGxvYz0KK2ZpOworZWNobyAiJGFzX21lOjEzNjQxOiByZXN1bHQ6ICR7d2l0aF9kbWFsbG9jOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RtYWxsb2M6LW5vfSIgPiY2CisKK2Nhc2UgLiR3aXRoX2NmbGFncyBpbgorKC4qLWcqKQorCWNhc2UgLiRDRkxBR1MgaW4KKwkoLiotZyopCisJCTs7CisJKCopCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gLWcKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKKwkJOzsKKwllc2FjCisJOzsKK2VzYWMKKworaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjEzNzM1OiBjaGVja2luZyBmb3IgZG1hbGxvYy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRtYWxsb2MuaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2RtYWxsb2NfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzNzQxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxkbWFsbG9jLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNzQ1OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMzc1MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfZG1hbGxvY19oPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX2RtYWxsb2NfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEzNzcwOiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfZG1hbGxvY19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfZG1hbGxvY19oIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9kbWFsbG9jX2ggPSB5ZXM7IHRoZW4KKworZWNobyAiJGFzX21lOjEzNzc0OiBjaGVja2luZyBmb3IgZG1hbGxvY19kZWJ1ZyBpbiAtbGRtYWxsb2MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZG1hbGxvY19kZWJ1ZyBpbiAtbGRtYWxsb2MuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkbWFsbG9jICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM3ODIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGRtYWxsb2NfZGVidWcgKCk7CitpbnQKK21haW4gKCkKK3sKK2RtYWxsb2NfZGVidWcgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzgwMTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM4MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMzgwNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzODEwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1Zz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1Zz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTM4MjE6IHJlc3VsdDogJGFjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWciID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWciID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1ZyA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEhBVkVfTElCRE1BTExPQyAxCitFT0YKKworICBMSUJTPSItbGRtYWxsb2MgJExJQlMiCisKK2ZpCisKK2ZpCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMzgzNjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRibWFsbG9jIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRibWFsbG9jIGZvciB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRibWFsbG9jIG9yIC0td2l0aG91dC1kYm1hbGxvYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZGJtYWxsb2Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGJtYWxsb2MiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgVVNFX0RCTUFMTE9DIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX2RibWFsbG9jPXllcworZWxzZQorICB3aXRoX2RibWFsbG9jPQorZmk7CitlY2hvICIkYXNfbWU6MTM4NTM6IHJlc3VsdDogJHt3aXRoX2RibWFsbG9jOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RibWFsbG9jOi1ub30iID4mNgorCitjYXNlIC4kd2l0aF9jZmxhZ3MgaW4KKyguKi1nKikKKwljYXNlIC4kQ0ZMQUdTIGluCisJKC4qLWcqKQorCQk7OworCSgqKQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJCTs7CisJZXNhYworCTs7Citlc2FjCisKK2lmIHRlc3QgIiR3aXRoX2RibWFsbG9jIiA9IHllcyA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTM5NDc6IGNoZWNraW5nIGZvciBkYm1hbGxvYy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRibWFsbG9jLmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9kYm1hbGxvY19oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM5NTMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGRibWFsbG9jLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzOTU3OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMzk2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfZGJtYWxsb2NfaD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTM5ODI6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfZGJtYWxsb2NfaCIgPiY2CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfZGJtYWxsb2NfaCA9IHllczsgdGhlbgorCitlY2hvICIkYXNfbWU6MTM5ODY6IGNoZWNraW5nIGZvciBkZWJ1Z19tYWxsb2MgaW4gLWxkYm1hbGxvYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkZWJ1Z19tYWxsb2MgaW4gLWxkYm1hbGxvYy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2RibWFsbG9jX2RlYnVnX21hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGRibWFsbG9jICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM5OTQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGRlYnVnX21hbGxvYyAoKTsKK2ludAorbWFpbiAoKQoreworZGVidWdfbWFsbG9jICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQwMTM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0MDE2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQwMTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDAyMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2M9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2M9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjE0MDMzOiByZXN1bHQ6ICRhY19jdl9saWJfZGJtYWxsb2NfZGVidWdfbWFsbG9jIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZGJtYWxsb2NfZGVidWdfbWFsbG9jIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2MgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBIQVZFX0xJQkRCTUFMTE9DIDEKK0VPRgorCisgIExJQlM9Ii1sZGJtYWxsb2MgJExJQlMiCisKK2ZpCisKK2ZpCisKK2ZpCisKK2VjaG8gIiRhc19tZToxNDA0ODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHZhbGdyaW5kIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHZhbGdyaW5kIGZvciB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXZhbGdyaW5kIG9yIC0td2l0aG91dC12YWxncmluZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdmFsZ3JpbmQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdmFsZ3JpbmQiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgVVNFX1ZBTEdSSU5EIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX3ZhbGdyaW5kPXllcworZWxzZQorICB3aXRoX3ZhbGdyaW5kPQorZmk7CitlY2hvICIkYXNfbWU6MTQwNjU6IHJlc3VsdDogJHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNgorCitjYXNlIC4kd2l0aF9jZmxhZ3MgaW4KKyguKi1nKikKKwljYXNlIC4kQ0ZMQUdTIGluCisJKC4qLWcqKQorCQk7OworCSgqKQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJCTs7CisJZXNhYworCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZToxNDE1ODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGVha3Mgb3IgLS1kaXNhYmxlLWxlYWtzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xlYWtzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9sZWFrcyIKKyAgaWYgdGVzdCAieCRlbmFibGV2YWwiID0geG5vOyB0aGVuIHdpdGhfbm9fbGVha3M9eWVzOyBlbHNlIHdpdGhfbm9fbGVha3M9bm87IGZpCitlbHNlCisgIDogJHt3aXRoX25vX2xlYWtzOj1ub30KK2ZpOworZWNobyAiJGFzX21lOjE0MTY4OiByZXN1bHQ6ICR3aXRoX25vX2xlYWtzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX25vX2xlYWtzIiA+JjYKKworaWYgdGVzdCAiJHdpdGhfbm9fbGVha3MiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOT19MRUFLUyAxCitFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgWVlfTk9fTEVBS1MgMQorRU9GCisKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNfQUxMT0NfSCAxCitFT0YKKworIyMjCXVzZSBvcHRpb24gLS1lbmFibGUtZXhwYW5kZWQgdG8gZ2VuZXJhdGUgY2VydGFpbiBtYWNyb3MgYXMgZnVuY3Rpb25zCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1leHBhbmRlZCBvciAtLWRpc2FibGUtZXhwYW5kZWQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZXhwYW5kZWQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2V4cGFuZGVkIgorICB0ZXN0ICJ4JGVuYWJsZXZhbCIgPSB4eWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTX0VYUEFOREVEIDEKK0VPRgorCitmaTsKKworIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLW1hY3JvcyB0byBzdXBwcmVzcyBtYWNyb3MgaW4gZmF2b3Igb2YgZnVuY3Rpb25zCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWNyb3Mgb3IgLS1kaXNhYmxlLW1hY3JvcyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9tYWNyb3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX21hY3JvcyIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgPSBubyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFU19OT01BQ1JPUyAxCitFT0YKKworZmk7CisKKyMgTm9ybWFsbHkgd2Ugb25seSBhZGQgdHJhY2UoKSB0byB0aGUgZGVidWctbGlicmFyeS4gIEFsbG93IHRoaXMgdG8gYmUKKyMgZXh0ZW5kZWQgdG8gYWxsIG1vZGVscyBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5OgorY2ZfYWxsX3RyYWNlcz1ubworY2FzZSAiJENGTEFHUyAkQ1BQRkxBR1MiIGluCisoKi1EVFJBQ0UqKQorCWNmX2FsbF90cmFjZXM9eWVzCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjE0MjIwOiBjaGVja2luZyB3aGV0aGVyIHRvIGFkZCB0cmFjZSBmZWF0dXJlIHRvIGFsbCBtb2RlbHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRvIGFkZCB0cmFjZSBmZWF0dXJlIHRvIGFsbCBtb2RlbHMuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdHJhY2Ugb3IgLS13aXRob3V0LXRyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF90cmFjZStzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF90cmFjZSIKKyAgY2Zfd2l0aF90cmFjZT0kd2l0aHZhbAorZWxzZQorICBjZl93aXRoX3RyYWNlPSRjZl9hbGxfdHJhY2VzCitmaTsKK2VjaG8gIiRhc19tZToxNDIzMDogcmVzdWx0OiAkY2Zfd2l0aF90cmFjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2Zfd2l0aF90cmFjZSIgPiY2CisKK2lmIHRlc3QgIngkY2Zfd2l0aF90cmFjZSIgPSB4eWVzIDsgdGhlbgorCUxJQl9UUkFDSU5HPWFsbAorCUFEQV9UUkFDRT1UUlVFCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gLURUUkFDRQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZWxzZQorCUxJQl9UUkFDSU5HPURFQlVHCisJQURBX1RSQUNFPUZBTFNFCitmaQorCitlY2hvICIkYXNfbWU6MTQzMjA6IGNoZWNraW5nIGlmIHdlIHdhbnQgdG8gdXNlIEdOQVQgcHJvamVjdHMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSB3YW50IHRvIHVzZSBHTkFUIHByb2plY3RzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ25hdC1wcm9qZWN0cyBvciAtLWRpc2FibGUtZ25hdC1wcm9qZWN0cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9nbmF0X3Byb2plY3RzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9nbmF0X3Byb2plY3RzIgorICB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyAmJiBlbmFibGV2YWw9eWVzCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gInllcyIgOyB0aGVuCisgICAgZW5hYmxlX2duYXRfcHJvamVjdHM9bm8KKwllbHNlCisJCWVuYWJsZV9nbmF0X3Byb2plY3RzPXllcworCWZpCitlbHNlCisgIGVuYWJsZXZhbD15ZXMKKwllbmFibGVfZ25hdF9wcm9qZWN0cz15ZXMKKworZmk7CitlY2hvICIkYXNfbWU6MTQzMzc6IHJlc3VsdDogJGVuYWJsZV9nbmF0X3Byb2plY3RzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRlbmFibGVfZ25hdF9wcm9qZWN0cyIgPiY2CisKKyMjIwlDaGVja3MgZm9yIGxpYnJhcmllcy4KK2Nhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisoKm1pbmd3MzIqfCptaW5ndzY0KikKKwlDUFBGTEFHUz0iJENQUEZMQUdTIC1EV0lOVkVSPTB4MDUwMSIKKwlMSUJTPSIgLWxwc2FwaSAkTElCUyIKKwk7OworKCopCitlY2hvICIkYXNfbWU6MTQzNDc6IGNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2dldHRpbWVvZmRheStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0MzUzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldHRpbWVvZmRheSAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBnZXR0aW1lb2ZkYXkgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX2dldHRpbWVvZmRheSkgfHwgZGVmaW5lZCAoX19zdHViX19fZ2V0dGltZW9mZGF5KQorY2hva2UgbWUKKyNlbHNlCitmID0gZ2V0dGltZW9mZGF5OyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0Mzg0OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDM4NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MzkwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQzOTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2dldHRpbWVvZmRheT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXk9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE0NDAzOiByZXN1bHQ6ICRhY19jdl9mdW5jX2dldHRpbWVvZmRheSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkiID4mNgoraWYgdGVzdCAkYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQorRU9GCisKK2Vsc2UKKworZWNobyAiJGFzX21lOjE0NDEzOiBjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5IGluIC1sYnNkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSBpbiAtbGJzZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxic2QgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDQyMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZ2V0dGltZW9mZGF5ICgpOworaW50CittYWluICgpCit7CitnZXR0aW1lb2ZkYXkgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDQ0MDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ0NDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDQ0NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NDQ5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXk9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZToxNDQ2MDogcmVzdWx0OiAkYWNfY3ZfbGliX2JzZF9nZXR0aW1lb2ZkYXkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5IiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ic2RfZ2V0dGltZW9mZGF5ID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfR0VUVElNRU9GREFZIDEKK0VPRgorCitjZl9hZGRfbGlicz0iLWxic2QiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZmkKKworZmkKKwk7OworZXNhYworCitlY2hvICIkYXNfbWU6MTQ0OTA6IGNoZWNraW5nIGlmIC1sbSBuZWVkZWQgZm9yIG1hdGggZnVuY3Rpb25zIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgLWxtIG5lZWRlZCBmb3IgbWF0aCBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25lZWRfbGlibStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDQ5NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKwkjaW5jbHVkZSA8c3RkaW8uaD4KKwkjaW5jbHVkZSA8bWF0aC5oPgorCitpbnQKK21haW4gKCkKK3sKK2RvdWJsZSB4ID0gcmFuZCgpOyBwcmludGYoInJlc3VsdCA9ICVnXG4iLCBwb3coc2luKHgpLHgpKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ1MTI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NTE1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ1MTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDUyMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25lZWRfbGlibT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9uZWVkX2xpYm09eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxNDUzMTogcmVzdWx0OiAkY2ZfY3ZfbmVlZF9saWJtIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uZWVkX2xpYm0iID4mNgoraWYgdGVzdCAiJGNmX2N2X25lZWRfbGlibSIgPSB5ZXMKK3RoZW4KK01BVEhfTElCPS1sbQorZmkKKworIyMjCUNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgorZWNobyAiJGFzX21lOjE0NTM5OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NTQ1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NTUzOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxNDU1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKworaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFyeSB0byBBTlNJLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NTgxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgIGVncmVwICJtZW1jaHIiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICA6CitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorCitmaQorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ1OTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgZWdyZXAgImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICA6CitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLXJmIGNvbmZ0ZXN0KgorCitmaQorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIDoKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDYyMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpZiAoKCcgJyAmIDB4MEZGKSA9PSAweDAyMCkKKyMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkKKyNlbHNlCisjIGRlZmluZSBJU0xPV0VSKGMpICgoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ2knKSBcCisgICAgICAgICAgICAgICAgICAgICB8fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCisgICAgICAgICAgICAgICAgICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjZW5kaWYKKworI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKK2ludAorbWFpbiAoKQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKKyAgICAgICAgfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCisgICAgICAkYWNfbWFpbl9yZXR1cm4oMik7CisgICRhY19tYWluX3JldHVybiAoMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2NDY6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NjQ5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDY1MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NjU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2ZpCitmaQorZWNobyAiJGFzX21lOjE0NjY3OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3RkYyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNgoraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgU1REQ19IRUFERVJTIDEKK0VPRgorCitmaQorCithY19oZWFkZXJfZGlyZW50PW5vCitmb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KKyAgYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfZGlyZW50XyRhY19oZHIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjE0NjgwOiBjaGVja2luZyBmb3IgJGFjX2hkciB0aGF0IGRlZmluZXMgRElSIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZHIgdGhhdCBkZWZpbmVzIERJUi4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDY4NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8JGFjX2hkcj4KKworaW50CittYWluICgpCit7CitpZiAoKERJUiAqKSAwKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NzAxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDcwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDcwNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NzEwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2V2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE0NzIwOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGRyIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCithY19oZWFkZXJfZGlyZW50PSRhY19oZHI7IGJyZWFrCitmaQorCitkb25lCisjIFR3byB2ZXJzaW9ucyBvZiBvcGVuZGlyIGV0IGFsLiBhcmUgaW4gLWxkaXIgYW5kIC1seCBvbiBTQ08gWGVuaXguCitpZiB0ZXN0ICRhY19oZWFkZXJfZGlyZW50ID0gZGlyZW50Lmg7IHRoZW4KKyAgZWNobyAiJGFzX21lOjE0NzMzOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbGRpciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1sZGlyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZGlyX29wZW5kaXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkaXIgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDc0MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgb3BlbmRpciAoKTsKK2ludAorbWFpbiAoKQoreworb3BlbmRpciAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NzYwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDc2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NzY2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ3Njk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZGlyX29wZW5kaXI9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9kaXJfb3BlbmRpcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTQ3ODA6IHJlc3VsdDogJGFjX2N2X2xpYl9kaXJfb3BlbmRpciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2Rpcl9vcGVuZGlyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9kaXJfb3BlbmRpciA9IHllczsgdGhlbgorICBMSUJTPSIkTElCUyAtbGRpciIKK2ZpCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjE0Nzg3OiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl94X29wZW5kaXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWx4ICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ3OTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIG9wZW5kaXIgKCk7CitpbnQKK21haW4gKCkKK3sKK29wZW5kaXIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDgxNDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ4MTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDgyMDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0ODIzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX3hfb3BlbmRpcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX3hfb3BlbmRpcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTQ4MzQ6IHJlc3VsdDogJGFjX2N2X2xpYl94X29wZW5kaXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl94X29wZW5kaXIiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX3hfb3BlbmRpciA9IHllczsgdGhlbgorICBMSUJTPSIkTElCUyAtbHgiCitmaQorCitmaQorCitlY2hvICIkYXNfbWU6MTQ4NDI6IGNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0aW1lLmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl90aW1lK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ4NDggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCitpbnQKK21haW4gKCkKK3sKK2lmICgoc3RydWN0IHRtICopIDApCityZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4NjQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0ODY3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0ODcwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ4NzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9oZWFkZXJfdGltZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfaGVhZGVyX3RpbWU9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTQ4ODM6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl90aW1lIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfdGltZSIgPiY2CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfdGltZSA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBUSU1FX1dJVEhfU1lTX1RJTUUgMQorRU9GCisKK2ZpCisKK2NmX3JlZ2V4X2Z1bmM9bm8KKworY2ZfcmVnZXhfbGlicz0icmVnZXggcmUiCitjYXNlICRob3N0X29zIGluCisobWluZ3cqKQorCWNmX3JlZ2V4X2xpYnM9ImdudXJ4ICRjZl9yZWdleF9saWJzIgorCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZToxNDkwMjogY2hlY2tpbmcgZm9yIHJlZ2NvbXAiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcmVnY29tcC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19yZWdjb21wK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ5MDggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgcmVnY29tcCAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciByZWdjb21wICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9yZWdjb21wKSB8fCBkZWZpbmVkIChfX3N0dWJfX19yZWdjb21wKQorY2hva2UgbWUKKyNlbHNlCitmID0gcmVnY29tcDsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDkzOTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ5NDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDk0NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0OTQ4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19yZWdjb21wPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX3JlZ2NvbXA9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE0OTU4OiByZXN1bHQ6ICRhY19jdl9mdW5jX3JlZ2NvbXAiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfcmVnY29tcCIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX3JlZ2NvbXAgPSB5ZXM7IHRoZW4KKyAgY2ZfcmVnZXhfZnVuYz1yZWdjb21wCitlbHNlCisKKwlmb3IgY2ZfcmVnZXhfbGliIGluICRjZl9yZWdleF9saWJzCisJZG8KKwkJYXNfYWNfTGliPWBlY2hvICJhY19jdl9saWJfJGNmX3JlZ2V4X2xpYicnX3JlZ2NvbXAiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjE0OTY3OiBjaGVja2luZyBmb3IgcmVnY29tcCBpbiAtbCRjZl9yZWdleF9saWIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcmVnY29tcCBpbiAtbCRjZl9yZWdleF9saWIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0xpYitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sJGNmX3JlZ2V4X2xpYiAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0OTc1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciByZWdjb21wICgpOworaW50CittYWluICgpCit7CityZWdjb21wICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5OTQ6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0OTk3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUwMDA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTAwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY19MaWI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfTGliPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTUwMTQ6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfTGliJ30nYCA9IHllczsgdGhlbgorCitjZl9hZGRfbGlicz0iLWwkY2ZfcmVnZXhfbGliIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwkJCQljZl9yZWdleF9mdW5jPXJlZ2NvbXAKKwkJCQlicmVhaworZmkKKworCWRvbmUKKworZmkKKworaWYgdGVzdCAiJGNmX3JlZ2V4X2Z1bmMiID0gbm8gOyB0aGVuCisJZWNobyAiJGFzX21lOjE1MDQzOiBjaGVja2luZyBmb3IgY29tcGlsZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBjb21waWxlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2NvbXBpbGUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTA0OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjb21waWxlICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGNvbXBpbGUgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX2NvbXBpbGUpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2NvbXBpbGUpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSBjb21waWxlOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MDgwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTA4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MDg2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUwODk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2NvbXBpbGU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfY29tcGlsZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTUwOTk6IHJlc3VsdDogJGFjX2N2X2Z1bmNfY29tcGlsZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19jb21waWxlIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfY29tcGlsZSA9IHllczsgdGhlbgorICBjZl9yZWdleF9mdW5jPWNvbXBpbGUKK2Vsc2UKKworCQllY2hvICIkYXNfbWU6MTUxMDU6IGNoZWNraW5nIGZvciBjb21waWxlIGluIC1sZ2VuIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGNvbXBpbGUgaW4gLWxnZW4uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9nZW5fY29tcGlsZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGdlbiAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MTEzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBjb21waWxlICgpOworaW50CittYWluICgpCit7Citjb21waWxlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUxMzI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MTM1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUxMzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTE0MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9nZW5fY29tcGlsZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2dlbl9jb21waWxlPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZToxNTE1MjogcmVzdWx0OiAkYWNfY3ZfbGliX2dlbl9jb21waWxlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ2VuX2NvbXBpbGUiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2dlbl9jb21waWxlID0geWVzOyB0aGVuCisKK2NmX2FkZF9saWJzPSItbGdlbiIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJCQkJY2ZfcmVnZXhfZnVuYz1jb21waWxlCitmaQorCitmaQorCitmaQorCitpZiB0ZXN0ICIkY2ZfcmVnZXhfZnVuYyIgPSBubyA7IHRoZW4KKwl7IGVjaG8gIiRhc19tZToxNTE4MDogV0FSTklORzogY2Fubm90IGZpbmQgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgZmluZCByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeSIgPiYyO30KK2ZpCisKK2VjaG8gIiRhc19tZToxNTE4NDogY2hlY2tpbmcgZm9yIHJlZ3VsYXItZXhwcmVzc2lvbiBoZWFkZXJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJlZ3VsYXItZXhwcmVzc2lvbiBoZWFkZXJzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9yZWdleF9oZHJzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X3JlZ2V4X2hkcnM9bm8KK2Nhc2UgJGNmX3JlZ2V4X2Z1bmMgaW4KKyhjb21waWxlKQorCWZvciBjZl9yZWdleF9oZHIgaW4gcmVnZXhwLmggcmVnZXhwci5oCisJZG8KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTE5NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGNmX3JlZ2V4X2hkcj4KK2ludAorbWFpbiAoKQoreworCisJCQljaGFyICpwID0gY29tcGlsZSgiIiwgIiIsICIiLCAwKTsKKwkJCWludCB4ID0gc3RlcCgiIiwgIiIpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTIxMTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUyMTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTIxNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MjIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCQkJY2ZfY3ZfcmVnZXhfaGRycz0kY2ZfcmVnZXhfaGRyCisJCQlicmVhaworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJZG9uZQorCTs7CisoKikKKwlmb3IgY2ZfcmVnZXhfaGRyIGluIHJlZ2V4LmgKKwlkbworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MjM3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDwkY2ZfcmVnZXhfaGRyPgoraW50CittYWluICgpCit7CisKKwkJCXJlZ2V4X3QgKnA7CisJCQlpbnQgeCA9IHJlZ2NvbXAocCwgIiIsIDApOworCQkJaW50IHkgPSByZWdleGVjKHAsICIiLCAwLCAwLCAwKTsKKwkJCXJlZ2ZyZWUocCk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MjU1OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTI1ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MjYxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUyNjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCQljZl9jdl9yZWdleF9oZHJzPSRjZl9yZWdleF9oZHIKKwkJCWJyZWFrCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlkb25lCisJOzsKK2VzYWMKKworZmkKK2VjaG8gIiRhc19tZToxNTI4MDogcmVzdWx0OiAkY2ZfY3ZfcmVnZXhfaGRycyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfcmVnZXhfaGRycyIgPiY2CisKK2Nhc2UgJGNmX2N2X3JlZ2V4X2hkcnMgaW4KKwkobm8pCQl7IGVjaG8gIiRhc19tZToxNTI4NDogV0FSTklORzogbm8gcmVndWxhciBleHByZXNzaW9uIGhlYWRlciBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIHJlZ3VsYXIgZXhwcmVzc2lvbiBoZWFkZXIgZm91bmQiID4mMjt9IDs7CisJKHJlZ2V4LmgpCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1JFR0VYX0hfRlVOQ1MgMQorRU9GCisgOzsKKwkocmVnZXhwLmgpCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1JFR0VYUF9IX0ZVTkNTIDEKK0VPRgorIDs7CisJKHJlZ2V4cHIuaCkKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfUkVHRVhQUl9IX0ZVTkNTIDEKK0VPRgorIDs7Citlc2FjCisKK2ZvciBhY19oZWFkZXIgaW4gXAorZmNudGwuaCBcCitnZXRvcHQuaCBcCitsaW1pdHMuaCBcCitsb2NhbGUuaCBcCittYXRoLmggXAorcG9sbC5oIFwKK3N5cy9ic2R0eXBlcy5oIFwKK3N5cy9pb2N0bC5oIFwKK3N5cy9wYXJhbS5oIFwKK3N5cy9wb2xsLmggXAorc3lzL3NlbGVjdC5oIFwKK3N5cy90aW1lLmggXAorc3lzL3RpbWVzLmggXAordHR5ZW50LmggXAordW5pc3RkLmggXAord2N0eXBlLmggXAorCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTUzMjM6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTUzMjkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCRhY19oZWFkZXI+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MzMzOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxNTMzOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTUzNTg6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKK2ZvciBhY19oZWFkZXIgaW4gdW5pc3RkLmggZ2V0b3B0LmgKK2RvCithc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2VjaG8gIiRhc19tZToxNTM3MTogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTM3NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGFjX2hlYWRlcj4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUzODE6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjE1Mzg3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxNTQwNjogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworZWNobyAiJGFzX21lOjE1NDE2OiBjaGVja2luZyBmb3IgaGVhZGVyIGRlY2xhcmluZyBnZXRvcHQgdmFyaWFibGVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGhlYWRlciBkZWNsYXJpbmcgZ2V0b3B0IHZhcmlhYmxlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfZ2V0b3B0X2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjZl9jdl9nZXRvcHRfaGVhZGVyPW5vbmUKK2ZvciBjZl9oZWFkZXIgaW4gc3RkaW8uaCBzdGRsaWIuaCB1bmlzdGQuaCBnZXRvcHQuaAorZG8KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU0MjYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JGNmX2hlYWRlcj4KK2ludAorbWFpbiAoKQoreworaW50IHggPSBvcHRpbmQ7IGNoYXIgKnkgPSBvcHRhcmcKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU0Mzk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NDQyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NDQ1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU0NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9nZXRvcHRfaGVhZGVyPSRjZl9oZWFkZXIKKyBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6MTU0NjA6IHJlc3VsdDogJGNmX2N2X2dldG9wdF9oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2dldG9wdF9oZWFkZXIiID4mNgoraWYgdGVzdCAkY2ZfY3ZfZ2V0b3B0X2hlYWRlciAhPSBub25lIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0dFVE9QVF9IRUFERVIgMQorRU9GCisKK2ZpCitpZiB0ZXN0ICRjZl9jdl9nZXRvcHRfaGVhZGVyID0gZ2V0b3B0LmggOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5FRURfR0VUT1BUX0ggMQorRU9GCisKK2ZpCisKKyMgY2hlY2sgZm9yIElTQyAodGhpcyBtYXkgYWxzbyBkZWZpbmUgX1BPU0lYX1NPVVJDRSkKKyMgTm90ZTogZXZlbiBub24tUG9zaXggSVNDIG5lZWRzIDxzeXMvYnNkdHlwZXMuaD4gdG8gZGVjbGFyZSBmZF9zZXQKK2lmIHRlc3QgIngkSVNDIiA9IHh5ZXMgOyB0aGVuCisKK2VjaG8gIiRhc19tZToxNTQ4MTogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxjcG9zaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFpbiBpbiAtbGNwb3NpeC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2Nwb3NpeF9tYWluK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sY3Bvc2l4ICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU0ODkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKK21haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTUwMTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU1MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTUwNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NTEwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2Nwb3NpeF9tYWluPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfY3Bvc2l4X21haW49bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjE1NTIxOiByZXN1bHQ6ICRhY19jdl9saWJfY3Bvc2l4X21haW4iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9jcG9zaXhfbWFpbiIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfY3Bvc2l4X21haW4gPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBIQVZFX0xJQkNQT1NJWCAxCitFT0YKKworICBMSUJTPSItbGNwb3NpeCAkTElCUyIKKworZmkKKworCWVjaG8gIiRhc19tZToxNTUzMjogY2hlY2tpbmcgZm9yIGJ6ZXJvIGluIC1saW5ldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBiemVybyBpbiAtbGluZXQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9pbmV0X2J6ZXJvK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1saW5ldCAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1NTQwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBiemVybyAoKTsKK2ludAorbWFpbiAoKQoreworYnplcm8gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTU1OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU1NjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTU2NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NTY4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2luZXRfYnplcm89eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9pbmV0X2J6ZXJvPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZToxNTU3OTogcmVzdWx0OiAkYWNfY3ZfbGliX2luZXRfYnplcm8iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9pbmV0X2J6ZXJvIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9pbmV0X2J6ZXJvID0geWVzOyB0aGVuCisKK2NmX2FkZF9saWJzPSItbGluZXQiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZmkKK2ZpCisKK2VjaG8gIiRhc19tZToxNTYwMjogY2hlY2tpbmcgaWYgc3lzL3RpbWUuaCB3b3JrcyB3aXRoIHN5cy9zZWxlY3QuaCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHN5cy90aW1lLmggd29ya3Mgd2l0aCBzeXMvc2VsZWN0LmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3N5c190aW1lX3NlbGVjdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1NjA5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTYyOTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU2MzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU2MzU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTYzODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3N5c190aW1lX3NlbGVjdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCisKK2VjaG8gIiRhc19tZToxNTY1MDogcmVzdWx0OiAkY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9zeXNfdGltZV9zZWxlY3QiID4mNgordGVzdCAiJGNmX2N2X3N5c190aW1lX3NlbGVjdCIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfU1lTX1RJTUVfU0VMRUNUIDEKK0VPRgorCisjIyMJY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgorCitlY2hvICIkYXNfbWU6MTU2NjU6IGNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfY19jb25zdCtzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEyMDYxICJjb25maWd1cmUiCisjbGluZSAxNTY3MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludApAQCAtMTIxMTYsMTYgKzE1NzI2LDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMTE5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NzI5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjEyMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNTczMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMjEyNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU3MzU6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjEyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNTczODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGFjX2N2X2NfY29uc3Q9eWVzCiBlbHNlCkBAIC0xMjEzNSw3ICsxNTc0NSw3IEBACiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQotZWNobyAiJGFzX21lOjEyMTM4OiByZXN1bHQ6ICRhY19jdl9jX2NvbnN0IiA+JjUKK2VjaG8gIiRhc19tZToxNTc0ODogcmVzdWx0OiAkYWNfY3ZfY19jb25zdCIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfY19jb25zdCIgPiY2CiBpZiB0ZXN0ICRhY19jdl9jX2NvbnN0ID0gbm87IHRoZW4KIApAQCAtMTIxNDUsNyArMTU3NTUsNyBAQAogCiBmaQogCi1lY2hvICIkYXNfbWU6MTIxNDg6IGNoZWNraW5nIGZvciBpbmxpbmUiID4mNQorZWNobyAiJGFzX21lOjE1NzU4OiBjaGVja2luZyBmb3IgaW5saW5lIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGlubGluZS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfY19pbmxpbmUrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTEyMTUzLDcgKzE1NzYzLDcgQEAKICAgYWNfY3ZfY19pbmxpbmU9bm8KIGZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsgZG8KICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjE1NiAiY29uZmlndXJlIgorI2xpbmUgMTU3NjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2lmbmRlZiBfX2NwbHVzcGx1cwogc3RhdGljICRhY19rdyBpbnQgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KQEAgLTEyMTYyLDE2ICsxNTc3MiwxNiBAQAogCiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMTY1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1Nzc1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjE2ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNTc3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMjE3MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU3ODE6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjE3NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNTc4NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGFjX2N2X2NfaW5saW5lPSRhY19rdzsgYnJlYWsKIGVsc2UKQEAgLTEyMTgyLDcgKzE1NzkyLDcgQEAKIGRvbmUKIAogZmkKLWVjaG8gIiRhc19tZToxMjE4NTogcmVzdWx0OiAkYWNfY3ZfY19pbmxpbmUiID4mNQorZWNobyAiJGFzX21lOjE1Nzk1OiByZXN1bHQ6ICRhY19jdl9jX2lubGluZSIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfY19pbmxpbmUiID4mNgogY2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KICAgaW5saW5lIHwgeWVzKSA7OwpAQCAtMTIxOTksMjIgKzE1ODA5LDI1IEBACiAKIE5DVVJTRVNfSU5MSU5FPQogaWYgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyA7IHRoZW4KLSAgTkNVUlNFU19JTkxJTkU9aW5saW5lCi0gIGlmIHRlc3QgIiRJTlRFTF9DT01QSUxFUiIgPSB5ZXMKLSAgdGhlbgotICAgIDoKLSAgZWxpZiB0ZXN0ICIkR0NDIiA9IHllcwotICB0aGVuCi0gICAgZWNobyAiJGFzX21lOjEyMjA4OiBjaGVja2luZyBpZiBnY2Mgc3VwcG9ydHMgb3B0aW9ucyB0byB0dW5lIGlubGluaW5nIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZ2NjIHN1cHBvcnRzIG9wdGlvbnMgdG8gdHVuZSBpbmxpbmluZy4uLiAkRUNIT19DIiA+JjYKKwlOQ1VSU0VTX0lOTElORT1pbmxpbmUKKwlpZiB0ZXN0ICIkSU5URUxfQ09NUElMRVIiID0geWVzCisJdGhlbgorCQk6CisJZWxpZiB0ZXN0ICIkQ0xBTkdfQ09NUElMRVIiID0geWVzCisJdGhlbgorCQk6CisJZWxpZiB0ZXN0ICIkR0NDIiA9IHllcworCXRoZW4KKwkJZWNobyAiJGFzX21lOjE1ODIxOiBjaGVja2luZyBpZiAkQ0Mgc3VwcG9ydHMgb3B0aW9ucyB0byB0dW5lIGlubGluaW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJENDIHN1cHBvcnRzIG9wdGlvbnMgdG8gdHVuZSBpbmxpbmluZy4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfZ2NjX2lubGluZStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogCi0gICAgICBjZl9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZT0xMjAwIgotICAgICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjIxNyAiY29uZmlndXJlIgorCQljZl9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisJCUNGTEFHUz0iJENGTEFHUyAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlPTEyMDAiCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU4MzAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogaW5saW5lIGludCBmb28odm9pZCkgeyByZXR1cm4gMTsgfQogaW50CkBAIC0xMjIyNiwxNiArMTU4MzksMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIyMjk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU4NDI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyMjMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE1ODQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMjM1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNTg0ODogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyMjM4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE1ODUxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfZ2NjX2lubGluZT15ZXMKIGVsc2UKQEAgLTEyMjQ0LDEyICsxNTg1NywxMiBAQAogY2ZfY3ZfZ2NjX2lubGluZT1ubwogZmkKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgQ0ZMQUdTPSRjZl9zYXZlX0NGTEFHUworCQlDRkxBR1M9JGNmX3NhdmVfQ0ZMQUdTCiAKIGZpCi1lY2hvICIkYXNfbWU6MTIyNTA6IHJlc3VsdDogJGNmX2N2X2djY19pbmxpbmUiID4mNQorZWNobyAiJGFzX21lOjE1ODYzOiByZXN1bHQ6ICRjZl9jdl9nY2NfaW5saW5lIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9nY2NfaW5saW5lIiA+JjYKLSAgICBpZiB0ZXN0ICIkY2ZfY3ZfZ2NjX2lubGluZSIgPSB5ZXMgOyB0aGVuCisJCWlmIHRlc3QgIiRjZl9jdl9nY2NfaW5saW5lIiA9IHllcyA7IHRoZW4KIAogY2ZfZml4X2NwcGZsYWdzPW5vCiBjZl9uZXdfY2ZsYWdzPQpAQCAtMTIyNTksMTYgKzE1ODcyLDE2IEBACiBmb3IgY2ZfYWRkX2NmbGFncyBpbiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlPTEyMDAKIGRvCiBjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLW5vKQotCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4gIyh2aQotCS11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKSAjKHZpCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKIAkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgotCQktRCopCisJCSgtRCopCiAJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKIAotCQkJdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwogCiAJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCiAJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgpAQCAtMTIyODAsMjYgKzE1ODkzLDM2IEBACiAJCQk7OwogCQllc2FjCiAJCWNhc2UgIiRDUFBGTEFHUyIgaW4KLQkJKiRjZl9hZGRfY2ZsYWdzKSAjKHZpCisJCSgqJGNmX2FkZF9jZmxhZ3MpCiAJCQk7OwotCQkqKSAjKHZpCisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYwogCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgogCQkJOzsKIAkJZXNhYwogCQk7OwotCSopCisJKCopCiAJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgogCQk7OwogCWVzYWMKIAk7OwoteWVzKQorKHllcykKIAljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCiAKIAljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKIAotCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KIAk7OwogZXNhYwogZG9uZQpAQCAtMTIzMTEsNyArMTU5MzQsNyBAQAogCiBpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KIAotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCiBmaQogCiBpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KQEAgLTEyMzE5LDExICsxNTk0MiwxMSBAQAogCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKIGZpCiAKLSAgICBmaQotICBmaQorCQlmaQorCWZpCiBmaQogCi1lY2hvICIkYXNfbWU6MTIzMjY6IGNoZWNraW5nIGZvciBzaWduYWwgZ2xvYmFsIGRhdGF0eXBlIiA+JjUKK2VjaG8gIiRhc19tZToxNTk0OTogY2hlY2tpbmcgZm9yIHNpZ25hbCBnbG9iYWwgZGF0YXR5cGUiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc2lnbmFsIGdsb2JhbCBkYXRhdHlwZS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3Zfc2lnX2F0b21pY190K3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xMjMzNSw3ICsxNTk1OCw3IEBACiAJCSJpbnQiCiAJZG8KIAljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEyMzM4ICJjb25maWd1cmUiCisjbGluZSAxNTk2MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTEyMzU4LDE2ICsxNTk4MSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjM2MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTk4NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTIzNjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTU5ODc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIzNjc6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1OTkwOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTIzNzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTU5OTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9zaWdfYXRvbWljX3Q9JGNmX3R5cGUKIGVsc2UKQEAgLTEyMzgxLDE1ICsxNjAwNCwxNiBAQAogCiBmaQogCi1lY2hvICIkYXNfbWU6MTIzODQ6IHJlc3VsdDogJGNmX2N2X3NpZ19hdG9taWNfdCIgPiY1CitlY2hvICIkYXNfbWU6MTYwMDc6IHJlc3VsdDogJGNmX2N2X3NpZ19hdG9taWNfdCIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3Zfc2lnX2F0b21pY190IiA+JjYKLXRlc3QgIiRjZl9jdl9zaWdfYXRvbWljX3QiICE9IG5vICYmIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKK3Rlc3QgIiRjZl9jdl9zaWdfYXRvbWljX3QiICE9IG5vICYmCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCiAjZGVmaW5lIFNJR19BVE9NSUNfVCAkY2ZfY3Zfc2lnX2F0b21pY190CiBFT0YKIAogaWYgdGVzdCAkTkNVUlNFU19DSFRZUEUgPSBhdXRvIDsgdGhlbgogCi1lY2hvICIkYXNfbWU6MTIzOTI6IGNoZWNraW5nIGZvciB0eXBlIG9mIGNodHlwZSIgPiY1CitlY2hvICIkYXNfbWU6MTYwMTY6IGNoZWNraW5nIGZvciB0eXBlIG9mIGNodHlwZSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIG9mIGNodHlwZS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfdHlwZW9mX2NodHlwZStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTIzOTksNyArMTYwMjMsNyBAQAogICBjZl9jdl90eXBlb2ZfY2h0eXBlPWxvbmcKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjQwMiAiY29uZmlndXJlIgorI2xpbmUgMTYwMjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjZGVmaW5lIFdBTlRfQklUUyAzMQpAQCAtMTI0MzQsMTUgKzE2MDU4LDE1IEBACiAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjQzNzogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjA2MTogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTI0NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTYwNjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNDQyOiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjA2NjogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNDQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MDY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfdHlwZW9mX2NodHlwZT1gY2F0IGNmX3Rlc3Qub3V0YAogZWxzZQpAQCAtMTI0NTcsNyArMTYwODEsNyBAQAogCiBmaQogCi1lY2hvICIkYXNfbWU6MTI0NjA6IHJlc3VsdDogJGNmX2N2X3R5cGVvZl9jaHR5cGUiID4mNQorZWNobyAiJGFzX21lOjE2MDg0OiByZXN1bHQ6ICRjZl9jdl90eXBlb2ZfY2h0eXBlIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl90eXBlb2ZfY2h0eXBlIiA+JjYKIAogY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgpAQCAtMTI0NjksMTQgKzE2MDkzLDE0IEBACiBmaQogdGVzdCAiJGNmX2N2X3R5cGVvZl9jaHR5cGUiID0gdW5zaWduZWQgJiYgY2ZfY3ZfdHlwZW9mX2NodHlwZT0iIgogCi1lY2hvICIkYXNfbWU6MTI0NzI6IGNoZWNraW5nIGlmIHVuc2lnbmVkIGxpdGVyYWxzIGFyZSBsZWdhbCIgPiY1CitlY2hvICIkYXNfbWU6MTYwOTY6IGNoZWNraW5nIGlmIHVuc2lnbmVkIGxpdGVyYWxzIGFyZSBsZWdhbCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHVuc2lnbmVkIGxpdGVyYWxzIGFyZSBsZWdhbC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfdW5zaWduZWRfbGl0ZXJhbHMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKIAogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTI0NzkgImNvbmZpZ3VyZSIKKyNsaW5lIDE2MTAzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50CkBAIC0xMjQ4OCwxNiArMTYxMTIsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI0OTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYxMTU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNDk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MTE4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNDk3OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjEyMTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNTAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MTI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfdW5zaWduZWRfbGl0ZXJhbHM9eWVzCiBlbHNlCkBAIC0xMjUwOSw3ICsxNjEzMyw3IEBACiAKIGZpCiAKLWVjaG8gIiRhc19tZToxMjUxMjogcmVzdWx0OiAkY2ZfY3ZfdW5zaWduZWRfbGl0ZXJhbHMiID4mNQorZWNobyAiJGFzX21lOjE2MTM2OiByZXN1bHQ6ICRjZl9jdl91bnNpZ25lZF9saXRlcmFscyIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdW5zaWduZWRfbGl0ZXJhbHMiID4mNgogCiBjZl9jdl8xVUw9IjEiCkBAIC0xMjUyNSwxNCArMTYxNDksMTQgQEAKIAogIyMjCUNoZWNrcyBmb3IgZXh0ZXJuYWwtZGF0YQogCi1lY2hvICIkYXNfbWU6MTI1Mjg6IGNoZWNraW5nIGlmIGV4dGVybmFsIGVycm5vIGlzIGRlY2xhcmVkIiA+JjUKK2VjaG8gIiRhc19tZToxNjE1MjogY2hlY2tpbmcgaWYgZXh0ZXJuYWwgZXJybm8gaXMgZGVjbGFyZWQiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBleHRlcm5hbCBlcnJubyBpcyBkZWNsYXJlZC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfZGNsX2Vycm5vK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAKLSAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEyNTM1ICJjb25maWd1cmUiCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNjE1OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZmRlZiBIQVZFX1NURExJQl9ICkBAIC0xMjU1MCwxNiArMTYxNzQsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI1NTM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYxNzc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNTU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MTgwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNTU5OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjE4MzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNTYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MTg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfZGNsX2Vycm5vPXllcwogZWxzZQpAQCAtMTI1NzAsMTQgKzE2MTk0LDE0IEBACiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAogZmkKLWVjaG8gIiRhc19tZToxMjU3MzogcmVzdWx0OiAkY2ZfY3ZfZGNsX2Vycm5vIiA+JjUKK2VjaG8gIiRhc19tZToxNjE5NzogcmVzdWx0OiAkY2ZfY3ZfZGNsX2Vycm5vIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9kY2xfZXJybm8iID4mNgogCiBpZiB0ZXN0ICIkY2ZfY3ZfZGNsX2Vycm5vIiA9IG5vIDsgdGhlbgogCiBjZl9yZXN1bHQ9YGVjaG8gImRlY2xfZXJybm8iIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAogCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKICNkZWZpbmUgJGNmX3Jlc3VsdCAxCiBFT0YKIApAQCAtMTI1ODUsMTQgKzE2MjA5LDE0IEBACiAKICMgSXQncyBwb3NzaWJsZSAoZm9yIG5lYXItVU5JWCBjbG9uZXMpIHRoYXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdAogCi1lY2hvICIkYXNfbWU6MTI1ODg6IGNoZWNraW5nIGlmIGV4dGVybmFsIGVycm5vIGV4aXN0cyIgPiY1CitlY2hvICIkYXNfbWU6MTYyMTI6IGNoZWNraW5nIGlmIGV4dGVybmFsIGVycm5vIGV4aXN0cyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIGV4dGVybmFsIGVycm5vIGV4aXN0cy4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfaGF2ZV9lcnJubytzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogCi0gICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjU5NSAiY29uZmlndXJlIgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTYyMTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjdW5kZWYgZXJybm8KQEAgLTEyNjA3LDE2ICsxNjIzMSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI2MTA6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYyMzQ6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNjEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MjM3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI2MTY6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2MjQwOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTI2MTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTYyNDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9oYXZlX2Vycm5vPXllcwogZWxzZQpAQCAtMTI2MjcsMjAgKzE2MjUxLDIwIEBACiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAKIGZpCi1lY2hvICIkYXNfbWU6MTI2MzA6IHJlc3VsdDogJGNmX2N2X2hhdmVfZXJybm8iID4mNQorZWNobyAiJGFzX21lOjE2MjU0OiByZXN1bHQ6ICRjZl9jdl9oYXZlX2Vycm5vIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9oYXZlX2Vycm5vIiA+JjYKIAogaWYgdGVzdCAiJGNmX2N2X2hhdmVfZXJybm8iID0geWVzIDsgdGhlbgogCiBjZl9yZXN1bHQ9YGVjaG8gImhhdmVfZXJybm8iIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAogCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKICNkZWZpbmUgJGNmX3Jlc3VsdCAxCiBFT0YKIAogZmkKIAotZWNobyAiJGFzX21lOjEyNjQzOiBjaGVja2luZyBpZiBkYXRhLW9ubHkgbGlicmFyeSBtb2R1bGUgbGlua3MiID4mNQorZWNobyAiJGFzX21lOjE2MjY3OiBjaGVja2luZyBpZiBkYXRhLW9ubHkgbGlicmFyeSBtb2R1bGUgbGlua3MiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBkYXRhLW9ubHkgbGlicmFyeSBtb2R1bGUgbGlua3MuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X2xpbmtfZGF0YW9ubHkrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTEyNjQ4LDIwICsxNjI3MiwyMCBAQAogCiAJcm0gLWYgY29uZnRlc3QuYQogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTI2NTEgImNvbmZpZ3VyZSIKKyNsaW5lIDE2Mjc1ICJjb25maWd1cmUiCiBpbnQJdGVzdGRhdGFbM10gPSB7IDEyMywgNDU2LCA3ODkgfTsKIEVPRgotCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNjU0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKwlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjI3ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTI2NTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTYyODE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA7IHRoZW4KIAkJbXYgY29uZnRlc3QubyBkYXRhLm8gJiYgXAotCQkoICRBUiAkQVJfT1BUUyBjb25mdGVzdC5hIGRhdGEubyApIDI+JjUgMT4vZGV2L251bGwKKwkJKCAkQVIgJEFSRkxBR1MgY29uZnRlc3QuYSBkYXRhLm8gKSAyPiY1IDE+L2Rldi9udWxsCiAJZmkKIAlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGRhdGEubwogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMTI2NjQgImNvbmZpZ3VyZSIKKyNsaW5lIDE2Mjg4ICJjb25maWd1cmUiCiBpbnQJdGVzdGZ1bmMoKQogewogI2lmIGRlZmluZWQoTmVYVCkKQEAgLTEyNjc0LDEzICsxNjI5OCwxMyBAQAogI2VuZGlmCiB9CiBFT0YKLQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjY3NzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYzMDE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNjgwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MzA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KIAkJbXYgY29uZnRlc3QubyBmdW5jLm8gJiYgXAotCQkoICRBUiAkQVJfT1BUUyBjb25mdGVzdC5hIGZ1bmMubyApIDI+JjUgMT4vZGV2L251bGwKKwkJKCAkQVIgJEFSRkxBR1MgY29uZnRlc3QuYSBmdW5jLm8gKSAyPiY1IDE+L2Rldi9udWxsCiAJZmkKIAlybSAtZiBjb25mdGVzdC4kYWNfZXh0IGZ1bmMubwogCSggZXZhbCAkUkFOTElCIGNvbmZ0ZXN0LmEgKSAyPiY1ID4vZGV2L251bGwKQEAgLTEyNjkwLDcgKzE2MzE0LDcgQEAKICAgY2ZfY3ZfbGlua19kYXRhb25seT11bmtub3duCiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTI2OTMgImNvbmZpZ3VyZSIKKyNsaW5lIDE2MzE3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogCWludCBtYWluKCkKQEAgLTEyNzAxLDE1ICsxNjMyNSwxNSBAQAogCiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI3MDQ6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYzMjg6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyNzA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2MzMxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMjcwOTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYzMzM6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjcxMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNjMzNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2xpbmtfZGF0YW9ubHk9eWVzCiBlbHNlCkBAIC0xMjcyNCwxMSArMTYzNDgsMTIgQEAKIAogZmkKIAotZWNobyAiJGFzX21lOjEyNzI3OiByZXN1bHQ6ICRjZl9jdl9saW5rX2RhdGFvbmx5IiA+JjUKK2VjaG8gIiRhc19tZToxNjM1MTogcmVzdWx0OiAkY2ZfY3ZfbGlua19kYXRhb25seSIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbGlua19kYXRhb25seSIgPiY2CiAKIGlmIHRlc3QgIiRjZl9jdl9saW5rX2RhdGFvbmx5IiA9IG5vIDsgdGhlbgotCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEJST0tFTl9MSU5LRVIgMQogRU9GCiAKQEAgLTEyNzQxLDEzICsxNjM2NiwxNiBAQAogZ2V0Y3dkIFwKIGdldGVnaWQgXAogZ2V0ZXVpZCBcCitnZXRvcHQgXAogZ2V0dHR5bmFtIFwKIGlzc2V0dWdpZCBcCiBwb2xsIFwKK3B1dGVudiBcCiByZW1vdmUgXAogc2VsZWN0IFwKIHNldGJ1ZiBcCiBzZXRidWZmZXIgXAorc2V0ZW52IFwKIHNldHZidWYgXAogc2lnYWN0aW9uIFwKIHNpZ3ZlYyBcCkBAIC0xMjc1OSwxMyArMTYzODcsMTMgQEAKIAogZG8KIGFzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCi1lY2hvICIkYXNfbWU6MTI3NjI6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICIkYXNfbWU6MTYzOTA6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKIGlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjc2OCAiY29uZmlndXJlIgorI2xpbmUgMTYzOTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LiAgKi8KQEAgLTEyNzg4LDcgKzE2NDE2LDcgQEAKICNpZiBkZWZpbmVkIChfX3N0dWJfJGFjX2Z1bmMpIHx8IGRlZmluZWQgKF9fc3R1Yl9fXyRhY19mdW5jKQogY2hva2UgbWUKICNlbHNlCi1mID0gJGFjX2Z1bmM7CitmID0gJGFjX2Z1bmM7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CiAjZW5kaWYKIAogICA7CkBAIC0xMjc5NiwxNiArMTY0MjQsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyNzk5OiBcIiRhY19saW5rXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NDI3OiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMjgwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNjQzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODA1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjQzMzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyODA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NDM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgZXZhbCAiJGFzX2FjX3Zhcj15ZXMiCiBlbHNlCkBAIC0xMjgxNSw3ICsxNjQ0Myw3IEBACiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKLWVjaG8gIiRhc19tZToxMjgxODogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1CitlY2hvICIkYXNfbWU6MTY0NDY6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQogZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgogaWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgogICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCkBAIC0xMjgyNSwxNiArMTY0NTMsMjMgQEAKIGZpCiBkb25lCiAKLWlmIHRlc3QgIiR3aXRoX2dldGNhcCIgPSAieWVzIiA7IHRoZW4KK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRvcHQiID0geG5vICYmCisgICB0ZXN0ICJ4JGNmX3dpdGhfcHJvZ3MkY2Zfd2l0aF90ZXN0cyIgIT0geG5vbm87IHRoZW4KKwl7IHsgZWNobyAiJGFzX21lOjE2NDU4OiBlcnJvcjogZ2V0b3B0IGlzIHJlcXVpcmVkIGZvciBidWlsZGluZyBwcm9ncmFtcyIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBnZXRvcHQgaXMgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIHByb2dyYW1zIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQogCi1lY2hvICIkYXNfbWU6MTI4MzA6IGNoZWNraW5nIGZvciB0ZXJtaW5hbC1jYXBhYmlsaXR5IGRhdGFiYXNlIGZ1bmN0aW9ucyIgPiY1CitpZiB0ZXN0ICJ4JHdpdGhfZ2V0Y2FwIiA9ICJ4eWVzIiA7IHRoZW4KKworZWNobyAiJGFzX21lOjE2NDY1OiBjaGVja2luZyBmb3IgdGVybWluYWwtY2FwYWJpbGl0eSBkYXRhYmFzZSBmdW5jdGlvbnMiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGVybWluYWwtY2FwYWJpbGl0eSBkYXRhYmFzZSBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X2NnZXRlbnQrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKIAogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjgzNyAiY29uZmlndXJlIgorI2xpbmUgMTY0NzIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0xMjg0NSw3ICsxNjQ4MCw3IEBACiAJY2hhciB0ZW1wWzEyOF07CiAJY2hhciAqYnVmID0gdGVtcDsKIAljaGFyICpkYl9hcnJheSA9IHRlbXA7Ci0JY2dldGVudCgmYnVmLCAvKiBpbnQgKiwgKi8gJmRiX2FycmF5LCAidnQxMDAiKTsKKwljZ2V0ZW50KCZidWYsICZkYl9hcnJheSwgInZ0MTAwIik7CiAJY2dldGNhcChidWYsICJ0YyIsICc9Jyk7CiAJY2dldG1hdGNoKGJ1ZiwgInRjIik7CiAKQEAgLTEyODU0LDE2ICsxNjQ4OSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI4NTc6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY0OTI6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyODYwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NDk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI4NjM6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NDk4OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTI4NjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY1MDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9jZ2V0ZW50PXllcwogZWxzZQpAQCAtMTI4NzQsMjMgKzE2NTA5LDg3IEBACiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAKIGZpCi0KLWVjaG8gIiRhc19tZToxMjg3ODogcmVzdWx0OiAkY2ZfY3ZfY2dldGVudCIgPiY1CitlY2hvICIkYXNfbWU6MTY1MTI6IHJlc3VsdDogJGNmX2N2X2NnZXRlbnQiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2NnZXRlbnQiID4mNgotdGVzdCAiJGNmX2N2X2NnZXRlbnQiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisKK2lmIHRlc3QgIiRjZl9jdl9jZ2V0ZW50IiA9IHllcwordGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0JTRF9DR0VURU5UIDEKIEVPRgogCitlY2hvICIkYXNfbWU6MTY1MjI6IGNoZWNraW5nIGlmIGNnZXRlbnQgdXNlcyBjb25zdCBwYXJhbWV0ZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBjZ2V0ZW50IHVzZXMgY29uc3QgcGFyYW1ldGVyLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9jZ2V0ZW50X2NvbnN0K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTY1MjkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CitpbnQKK21haW4gKCkKK3sKKworCWNoYXIgdGVtcFsxMjhdOworCWNoYXIgKmJ1ZiA9IHRlbXA7CisjaWZuZGVmIF9ORVRCU0RfU09VUkNFCQkJLyogZ2l2ZW4sIHNpbmNlIEFwcmlsIDIwMDQgaW4gc3RkbGliLmggKi8KKwljb25zdCBjaGFyICpkYl9hcnJheSA9IHRlbXA7CisJY2dldGVudCgmYnVmLCAmZGJfYXJyYXksICJ2dDEwMCIpOworI2VuZGlmCisJY2dldGNhcChidWYsICJ0YyIsICc9Jyk7CisJY2dldG1hdGNoKGJ1ZiwgInRjIik7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NTUxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjU1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NTU3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY1NjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9jZ2V0ZW50X2NvbnN0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9jZ2V0ZW50X2NvbnN0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZWNobyAiJGFzX21lOjE2NTcxOiByZXN1bHQ6ICRjZl9jdl9jZ2V0ZW50X2NvbnN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9jZ2V0ZW50X2NvbnN0IiA+JjYKKwlpZiB0ZXN0ICIkY2ZfY3ZfY2dldGVudF9jb25zdCIgPSB5ZXMKKwl0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgQ0dFVEVOVF9DT05TVCBjb25zdAorRU9GCisKKwlmaQogZmkKIAotZWNobyAiJGFzX21lOjEyODg2OiBjaGVja2luZyBmb3IgaXNhc2NpaSIgPiY1CitmaQorCitlY2hvICIkYXNfbWU6MTY1ODU6IGNoZWNraW5nIGZvciBpc2FzY2lpIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGlzYXNjaWkuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X2hhdmVfaXNhc2NpaStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogCiAJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjg5MyAiY29uZmlndXJlIgorI2xpbmUgMTY1OTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiBpbnQKQEAgLTEyOTAyLDE2ICsxNjYwMSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5MDU6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY2MDQ6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyOTA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NjA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5MTE6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NjEwOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTI5MTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY2MTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9oYXZlX2lzYXNjaWk9eWVzCiBlbHNlCkBAIC0xMjkyMiwxNyArMTY2MjEsMTggQEAKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAogZmkKLWVjaG8gIiRhc19tZToxMjkyNTogcmVzdWx0OiAkY2ZfY3ZfaGF2ZV9pc2FzY2lpIiA+JjUKK2VjaG8gIiRhc19tZToxNjYyNDogcmVzdWx0OiAkY2ZfY3ZfaGF2ZV9pc2FzY2lpIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9oYXZlX2lzYXNjaWkiID4mNgotdGVzdCAiJGNmX2N2X2hhdmVfaXNhc2NpaSIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKK3Rlc3QgIiRjZl9jdl9oYXZlX2lzYXNjaWkiID0geWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0lTQVNDSUkgMQogRU9GCiAKIGlmIHRlc3QgIiRhY19jdl9mdW5jX3NpZ2FjdGlvbiIgPSB5ZXM7IHRoZW4KLWVjaG8gIiRhc19tZToxMjkzMjogY2hlY2tpbmcgd2hldGhlciBzaWdhY3Rpb24gbmVlZHMgX1BPU0lYX1NPVVJDRSIgPiY1CitlY2hvICIkYXNfbWU6MTY2MzI6IGNoZWNraW5nIHdoZXRoZXIgc2lnYWN0aW9uIG5lZWRzIF9QT1NJWF9TT1VSQ0UiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHNpZ2FjdGlvbiBuZWVkcyBfUE9TSVhfU09VUkNFLi4uICRFQ0hPX0MiID4mNgogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMjkzNSAiY29uZmlndXJlIgorI2xpbmUgMTY2MzUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0xMjk0NiwxNiArMTY2NDYsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5NDk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY2NDk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyOTUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NjUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyOTU1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjY1NTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyOTU4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NjU4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgc2lnYWN0X2JhZD1ubwogZWxzZQpAQCAtMTI5NjMsNyArMTY2NjMsNyBAQAogY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTI5NjYgImNvbmZpZ3VyZSIKKyNsaW5lIDE2NjY2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2RlZmluZSBfUE9TSVhfU09VUkNFCkBAIC0xMjk3OCwyMCArMTY2NzgsMjEgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI5ODE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY2ODE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyOTg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2Njg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyOTg3OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjY4NzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEyOTkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NjkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgc2lnYWN0X2JhZD15ZXMKLQkgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKLSNkZWZpbmUgU1ZSNF9BQ1RJT04gMQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBfUE9TSVhfU09VUkNFIDEKIEVPRgogCiBlbHNlCkBAIC0xMzAwMiwxMSArMTY3MDMsMTEgQEAKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZWNobyAiJGFzX21lOjEzMDA1OiByZXN1bHQ6ICRzaWdhY3RfYmFkIiA+JjUKK2VjaG8gIiRhc19tZToxNjcwNjogcmVzdWx0OiAkc2lnYWN0X2JhZCIgPiY1CiBlY2hvICIke0VDSE9fVH0kc2lnYWN0X2JhZCIgPiY2CiBmaQogCi1lY2hvICIkYXNfbWU6MTMwMDk6IGNoZWNraW5nIGlmIG5hbm9zbGVlcCByZWFsbHkgd29ya3MiID4mNQorZWNobyAiJGFzX21lOjE2NzEwOiBjaGVja2luZyBpZiBuYW5vc2xlZXAgcmVhbGx5IHdvcmtzIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgbmFub3NsZWVwIHJlYWxseSB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfZnVuY19uYW5vc2xlZXArc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTEzMDE2LDcgKzE2NzE3LDcgQEAKICAgY2ZfY3ZfZnVuY19uYW5vc2xlZXA9dW5rbm93bgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzMDE5ICJjb25maWd1cmUiCisjbGluZSAxNjcyMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTMwNDEsMTUgKzE2NzQyLDE1IEBACiAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzA0NDogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjc0NTogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMwNDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY3NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMDQ5OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNjc1MDogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzMDUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE2NzUzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfZnVuY19uYW5vc2xlZXA9eWVzCiBlbHNlCkBAIC0xMzA2MSwxMCArMTY3NjIsMTEgQEAKIHJtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZmkKLWVjaG8gIiRhc19tZToxMzA2NDogcmVzdWx0OiAkY2ZfY3ZfZnVuY19uYW5vc2xlZXAiID4mNQorZWNobyAiJGFzX21lOjE2NzY1OiByZXN1bHQ6ICRjZl9jdl9mdW5jX25hbm9zbGVlcCIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZnVuY19uYW5vc2xlZXAiID4mNgogCi10ZXN0ICIkY2ZfY3ZfZnVuY19uYW5vc2xlZXAiID0gInllcyIgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKK3Rlc3QgIiRjZl9jdl9mdW5jX25hbm9zbGVlcCIgPSAieWVzIiAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9OQU5PU0xFRVAgMQogRU9GCiAKQEAgLTEzMDc1LDIzICsxNjc3NywyMyBAQAogCiBkbwogYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCi1lY2hvICIkYXNfbWU6MTMwNzg6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gIiRhc19tZToxNjc4MDogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKIGlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzA4NCAiY29uZmlndXJlIgorI2xpbmUgMTY3ODYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZWFkZXI+CiBfQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMDg4OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjc5MDogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPwogICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCiAgIHJtIC1mIGNvbmZ0ZXN0LmVyMQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6MTMwOTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY3OTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwpAQCAtMTMxMTAsNyArMTY4MTIsNyBAQAogZmkKIHJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CiBmaQotZWNobyAiJGFzX21lOjEzMTEzOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKK2VjaG8gIiRhc19tZToxNjgxNTogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CiBlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CiBpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCiAgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKQEAgLTEzMTI1LDIzICsxNjgyNywyMyBAQAogZm9yIGFjX2hlYWRlciBpbiBzeXMvdGVybWlvLmgKIGRvCiBhc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKLWVjaG8gIiRhc19tZToxMzEyODogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQorZWNobyAiJGFzX21lOjE2ODMwOiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgogaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzMTM0ICJjb25maWd1cmUiCisjbGluZSAxNjgzNiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hlYWRlcj4KIF9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMxMzg6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2ODQwOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CiAgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICAgcm0gLWYgY29uZnRlc3QuZXIxCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZToxMzE0NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNjg0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCkBAIC0xMzE2MCw3ICsxNjg2Miw3IEBACiBmaQogcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1lY2hvICIkYXNfbWU6MTMxNjM6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJGFzX21lOjE2ODY1OiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKIGVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKIGlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KICAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgpAQCAtMTMxNzMsMTUgKzE2ODc1LDE1IEBACiBmaQogaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl90ZXJtaW9zX2giID0geWVzIDsgdGhlbgogCWNhc2UgIiRDRkxBR1MgJENQUEZMQUdTIiBpbgotCSotRF9QT1NJWF9TT1VSQ0UqKQorCSgqLURfUE9TSVhfU09VUkNFKikKIAkJdGVybWlvc19iYWQ9ZHVubm8gOzsKLQkqKQl0ZXJtaW9zX2JhZD1tYXliZSA7OworCSgqKQl0ZXJtaW9zX2JhZD1tYXliZSA7OwogCWVzYWMKIAlpZiB0ZXN0ICIkdGVybWlvc19iYWQiID0gbWF5YmUgOyB0aGVuCi0JZWNobyAiJGFzX21lOjEzMTgxOiBjaGVja2luZyB3aGV0aGVyIHRlcm1pb3MuaCBuZWVkcyBfUE9TSVhfU09VUkNFIiA+JjUKKwllY2hvICIkYXNfbWU6MTY4ODM6IGNoZWNraW5nIHdoZXRoZXIgdGVybWlvcy5oIG5lZWRzIF9QT1NJWF9TT1VSQ0UiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRlcm1pb3MuaCBuZWVkcyBfUE9TSVhfU09VUkNFLi4uICRFQ0hPX0MiID4mNgogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTMxODQgImNvbmZpZ3VyZSIKKyNsaW5lIDE2ODg2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDx0ZXJtaW9zLmg+CiBpbnQKQEAgLTEzMTkzLDE2ICsxNjg5NSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzE5NjogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjg5ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMxOTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5MDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyMDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2OTA0OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMyMDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5MDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICB0ZXJtaW9zX2JhZD1ubwogZWxzZQpAQCAtMTMyMTAsNyArMTY5MTIsNyBAQAogY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIAkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzIxMyAiY29uZmlndXJlIgorI2xpbmUgMTY5MTUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjZGVmaW5lIF9QT1NJWF9TT1VSQ0UKQEAgLTEzMjI0LDIzICsxNjkyNiwyNCBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzIyNzogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjkyOTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMyMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5MzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyMzM6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2OTM1OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMyMzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5Mzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICB0ZXJtaW9zX2JhZD11bmtub3duCiBlbHNlCiAgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CiBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLXRlcm1pb3NfYmFkPXllcyBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgotI2RlZmluZSBTVlI0X1RFUk1JTyAxCit0ZXJtaW9zX2JhZD15ZXMKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMQogRU9GCiAKIGZpCkBAIC0xMzI0OCwxOSArMTY5NTEsMTkgQEAKIAogZmkKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCWVjaG8gIiRhc19tZToxMzI1MTogcmVzdWx0OiAkdGVybWlvc19iYWQiID4mNQorCWVjaG8gIiRhc19tZToxNjk1NDogcmVzdWx0OiAkdGVybWlvc19iYWQiID4mNQogZWNobyAiJHtFQ0hPX1R9JHRlcm1pb3NfYmFkIiA+JjYKIAlmaQogZmkKIAotZWNobyAiJGFzX21lOjEzMjU2OiBjaGVja2luZyBmb3IgdGNnZXRhdHRyIiA+JjUKK2VjaG8gIiRhc19tZToxNjk1OTogY2hlY2tpbmcgZm9yIHRjZ2V0YXR0ciIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0Y2dldGF0dHIuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X2hhdmVfdGNnZXRhdHRyK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTMyNjMgImNvbmZpZ3VyZSIKKyNsaW5lIDE2OTY2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTMyODgsMTYgKzE2OTkxLDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzI5MTogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjk5NDogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMyOTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTY5OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMzI5NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcwMDA6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzMwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzAwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2hhdmVfdGNnZXRhdHRyPXllcwogZWxzZQpAQCAtMTMzMDcsMjAgKzE3MDEwLDIxIEBACiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKLWVjaG8gIiRhc19tZToxMzMxMDogcmVzdWx0OiAkY2ZfY3ZfaGF2ZV90Y2dldGF0dHIiID4mNQorZWNobyAiJGFzX21lOjE3MDEzOiByZXN1bHQ6ICRjZl9jdl9oYXZlX3RjZ2V0YXR0ciIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfaGF2ZV90Y2dldGF0dHIiID4mNgotdGVzdCAiJGNmX2N2X2hhdmVfdGNnZXRhdHRyIiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgordGVzdCAiJGNmX2N2X2hhdmVfdGNnZXRhdHRyIiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9UQ0dFVEFUVFIgMQogRU9GCiAKLWVjaG8gIiRhc19tZToxMzMxNjogY2hlY2tpbmcgZm9yIHZzc2NhbmYgZnVuY3Rpb24gb3Igd29ya2Fyb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6MTcwMjA6IGNoZWNraW5nIGZvciB2c3NjYW5mIGZ1bmN0aW9uIG9yIHdvcmthcm91bmQiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdnNzY2FuZiBmdW5jdGlvbiBvciB3b3JrYXJvdW5kLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9mdW5jX3Zzc2NhbmYrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKIAogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzMyMyAiY29uZmlndXJlIgorI2xpbmUgMTcwMjcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CkBAIC0xMzMzNiwxNiArMTcwNDAsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMzM5OiBcIiRhY19saW5rXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MDQzOiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzM0MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzA0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMzQ1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzA0OTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzMzQ4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3MDUyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfZnVuY192c3NjYW5mPXZzc2NhbmYKIGVsc2UKQEAgLTEzMzUzLDcgKzE3MDU3LDcgQEAKIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQogCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzMzU2ICJjb25maWd1cmUiCisjbGluZSAxNzA2MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRhcmcuaD4KQEAgLTEzMzYyLDI5ICsxNzA2NiwyOSBAQAogbWFpbiAoKQogewogCi0gICAgRklMRSBzdHJidWY7Ci0gICAgY2hhciAqc3RyID0gImZyb20iOworCUZJTEUgc3RyYnVmOworCWNoYXIgKnN0ciA9ICJmcm9tIjsKIAotICAgIHN0cmJ1Zi5fZmxhZyA9IF9JT1JFQUQ7Ci0gICAgc3RyYnVmLl9wdHIgPSBzdHJidWYuX2Jhc2UgPSAodW5zaWduZWQgY2hhciAqKSBzdHI7Ci0gICAgc3RyYnVmLl9jbnQgPSBzdHJsZW4oc3RyKTsKLSAgICBzdHJidWYuX2ZpbGUgPSBfTkZJTEU7Ci0gICAgcmV0dXJuICh2ZnNjYW5mKCZzdHJidWYsICIlZCIsIGFwKSkKKwlzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOworCXN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOworCXN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7CisJc3RyYnVmLl9maWxlID0gX05GSUxFOworCXJldHVybiAodmZzY2FuZigmc3RyYnVmLCAiJWQiLCBhcCkpCiAgIDsKICAgcmV0dXJuIDA7CiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzM3ODogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzA4MjogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTMzODE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTcwODU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMzM4NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcwODg6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzM4NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzA5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2Z1bmNfdnNzY2FuZj12ZnNjYW5mCiBlbHNlCkBAIC0xMzM5Miw3ICsxNzA5Niw3IEBACiBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKIAogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzM5NSAiY29uZmlndXJlIgorI2xpbmUgMTcwOTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CkBAIC0xMzQwMSwyOSArMTcxMDUsMjkgQEAKIG1haW4gKCkKIHsKIAotICAgIEZJTEUgc3RyYnVmOwotICAgIGNoYXIgKnN0ciA9ICJmcm9tIjsKKwlGSUxFIHN0cmJ1ZjsKKwljaGFyICpzdHIgPSAiZnJvbSI7CiAKLSAgICBzdHJidWYuX2ZsYWcgPSBfSU9SRUFEOwotICAgIHN0cmJ1Zi5fcHRyID0gc3RyYnVmLl9iYXNlID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOwotICAgIHN0cmJ1Zi5fY250ID0gc3RybGVuKHN0cik7Ci0gICAgc3RyYnVmLl9maWxlID0gX05GSUxFOwotICAgIHJldHVybiAoX2Rvc2Nhbigmc3RyYnVmLCAiJWQiLCBhcCkpCisJc3RyYnVmLl9mbGFnID0gX0lPUkVBRDsKKwlzdHJidWYuX3B0ciA9IHN0cmJ1Zi5fYmFzZSA9ICh1bnNpZ25lZCBjaGFyICopIHN0cjsKKwlzdHJidWYuX2NudCA9IHN0cmxlbihzdHIpOworCXN0cmJ1Zi5fZmlsZSA9IF9ORklMRTsKKwlyZXR1cm4gKF9kb3NjYW4oJnN0cmJ1ZiwgIiVkIiwgYXApKQogICA7CiAgIHJldHVybiAwOwogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM0MTc6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcxMjE6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzNDIwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3MTI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM0MjM6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MTI3OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM0MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTcxMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9mdW5jX3Zzc2NhbmY9X2Rvc2NhbgogZWxzZQpAQCAtMTM0MzgsOTQgKzE3MTQyLDM5IEBACiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKLWVjaG8gIiRhc19tZToxMzQ0MTogcmVzdWx0OiAkY2ZfY3ZfZnVuY192c3NjYW5mIiA+JjUKK2VjaG8gIiRhc19tZToxNzE0NTogcmVzdWx0OiAkY2ZfY3ZfZnVuY192c3NjYW5mIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9mdW5jX3Zzc2NhbmYiID4mNgogCi1jYXNlICRjZl9jdl9mdW5jX3Zzc2NhbmYgaW4gIyh2aQotdnNzY2FuZikgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKK2Nhc2UgJGNmX2N2X2Z1bmNfdnNzY2FuZiBpbgorKHZzc2NhbmYpCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1ZTU0NBTkYgMQogRU9GCi07OyAjKHZpCi12ZnNjYW5mKSBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorOzsKKyh2ZnNjYW5mKQorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9WRlNDQU5GIDEKIEVPRgotOzsgIyh2aQotX2Rvc2NhbikgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKzs7CisoX2Rvc2NhbikKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfX0RPU0NBTiAxCiBFT0YKIDs7CiBlc2FjCiAKLWVjaG8gIiRhc19tZToxMzQ1OTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWtzdGVtcCIgPiY1CitlY2hvICIkYXNfbWU6MTcxNjY6IGNoZWNraW5nIGZvciB3b3JraW5nIG1rc3RlbXAiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igd29ya2luZyBta3N0ZW1wLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9mdW5jX21rc3RlbXArc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKIAotcm0gLWYgY29uZnRlc3QqCitybSAtcmYgY29uZnRlc3QqCiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotICBlY2hvICIkYXNfbWU6MTM0Njc6IGNoZWNraW5nIGZvciBta3N0ZW1wIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1rc3RlbXAuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbWtzdGVtcCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorICBjZl9jdl9mdW5jX21rc3RlbXA9bWF5YmUKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzQ3MyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0vKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCi0gICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBta3N0ZW1wICgpOyBiZWxvdy4gICovCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0vKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyIG1rc3RlbXAgKCk7Ci1jaGFyICgqZikgKCk7Ci0KLWludAotbWFpbiAoKQotewotLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwotICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCi0gICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0jaWYgZGVmaW5lZCAoX19zdHViX21rc3RlbXApIHx8IGRlZmluZWQgKF9fc3R1Yl9fX21rc3RlbXApCi1jaG9rZSBtZQotI2Vsc2UKLWYgPSBta3N0ZW1wOwotI2VuZGlmCi0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNTA0OiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzUwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNTEwOiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM1MTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9mdW5jX21rc3RlbXA9eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1jYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLWFjX2N2X2Z1bmNfbWtzdGVtcD1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1lY2hvICIkYXNfbWU6MTM1MjM6IHJlc3VsdDogJGFjX2N2X2Z1bmNfbWtzdGVtcCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19ta3N0ZW1wIiA+JjYKLQotZWxzZQotICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzNTI4ICJjb25maWd1cmUiCisjbGluZSAxNzE3NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTEzNTYzLDE1ICsxNzIxMiwxNSBAQAogCiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM1NjY6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcyMTU6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzNTY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3MjE4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxMzU3MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcyMjA6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzU3NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzIyMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2Z1bmNfbWtzdGVtcD15ZXMKIApAQCAtMTM1ODYsMTAgKzE3MjM1LDcyIEBACiBmaQogCiBmaQotZWNobyAiJGFzX21lOjEzNTg5OiByZXN1bHQ6ICRjZl9jdl9mdW5jX21rc3RlbXAiID4mNQorZWNobyAiJGFzX21lOjE3MjM4OiByZXN1bHQ6ICRjZl9jdl9mdW5jX21rc3RlbXAiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2Z1bmNfbWtzdGVtcCIgPiY2Ci1pZiB0ZXN0ICIkY2ZfY3ZfZnVuY19ta3N0ZW1wIiA9IHllcyA7IHRoZW4KLQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgoraWYgdGVzdCAieCRjZl9jdl9mdW5jX21rc3RlbXAiID0geG1heWJlIDsgdGhlbgorCWVjaG8gIiRhc19tZToxNzI0MTogY2hlY2tpbmcgZm9yIG1rc3RlbXAiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWtzdGVtcC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19ta3N0ZW1wK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTcyNDcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgbWtzdGVtcCAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBta3N0ZW1wICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9ta3N0ZW1wKSB8fCBkZWZpbmVkIChfX3N0dWJfX19ta3N0ZW1wKQorY2hva2UgbWUKKyNlbHNlCitmID0gbWtzdGVtcDsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzI3ODogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTcyODE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzI4NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3Mjg3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19ta3N0ZW1wPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX21rc3RlbXA9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE3Mjk3OiByZXN1bHQ6ICRhY19jdl9mdW5jX21rc3RlbXAiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfbWtzdGVtcCIgPiY2CisKK2ZpCitpZiB0ZXN0ICJ4JGNmX2N2X2Z1bmNfbWtzdGVtcCIgPSB4eWVzIHx8IHRlc3QgIngkYWNfY3ZfZnVuY19ta3N0ZW1wIiA9IHh5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfTUtTVEVNUCAxCiBFT0YKIApAQCAtMTM2MDMsMjIgKzE3MzE0LDIyIEBACiAJSEFWRV9WU1NDQU5GPTAKIGZpCiAKLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgotCXsgZWNobyAiJGFzX21lOjEzNjA3OiBXQVJOSU5HOiBjcm9zcyBjb21waWxpbmc6IGFzc3VtZSBzZXR2YnVmIHBhcmFtcyBub3QgcmV2ZXJzZWQiID4mNQoraWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0geHllcyA7IHRoZW4KKwl7IGVjaG8gIiRhc19tZToxNzMxODogV0FSTklORzogY3Jvc3MgY29tcGlsaW5nOiBhc3N1bWUgc2V0dmJ1ZiBwYXJhbXMgbm90IHJldmVyc2VkIiA+JjUKIGVjaG8gIiRhc19tZTogV0FSTklORzogY3Jvc3MgY29tcGlsaW5nOiBhc3N1bWUgc2V0dmJ1ZiBwYXJhbXMgbm90IHJldmVyc2VkIiA+JjI7fQogZWxzZQotCWVjaG8gIiRhc19tZToxMzYxMDogY2hlY2tpbmcgd2hldGhlciBzZXR2YnVmIGFyZ3VtZW50cyBhcmUgcmV2ZXJzZWQiID4mNQorCWVjaG8gIiRhc19tZToxNzMyMTogY2hlY2tpbmcgd2hldGhlciBzZXR2YnVmIGFyZ3VtZW50cyBhcmUgcmV2ZXJzZWQiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHNldHZidWYgYXJndW1lbnRzIGFyZSByZXZlcnNlZC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gIHsgeyBlY2hvICIkYXNfbWU6MTM2MTY6IGVycm9yOiBjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmciID4mNQorICB7IHsgZWNobyAiJGFzX21lOjE3MzI3OiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZyIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzNjIxICJjb25maWd1cmUiCisjbGluZSAxNzMzMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIC8qIElmIHNldHZidWYgaGFzIHRoZSByZXZlcnNlZCBmb3JtYXQsIGV4aXQgMC4gKi8KQEAgLTEzNjM1LDE1ICsxNzM0NiwxNSBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNjM4OiBcIiRhY19saW5rXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MzQ5OiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxMzY0MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxNzM1MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM2NDM6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MzU0OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM2NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTczNTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBhY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9eWVzCiBlbHNlCkBAIC0xMzY1Niw3ICsxNzM2Nyw3IEBACiBmaQogcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlCiBmaQotZWNobyAiJGFzX21lOjEzNjU5OiByZXN1bHQ6ICRhY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQiID4mNQorZWNobyAiJGFzX21lOjE3MzcwOiByZXN1bHQ6ICRhY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZCIgPiY2CiBpZiB0ZXN0ICRhY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQgPSB5ZXM7IHRoZW4KIApAQCAtMTM2NjcsNjggKzE3Mzc4LDExOCBAQAogZmkKIAogZmkKLWVjaG8gIiRhc19tZToxMzY3MDogY2hlY2tpbmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl90eXBlX3NpZ25hbCtzZXR9IiA9IHNldDsgdGhlbgorZWNobyAiJGFzX21lOjE3MzgxOiBjaGVja2luZyBmb3IgaW50cHRyX3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW50cHRyX3QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3R5cGVfaW50cHRyX3Qrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzY3NiAiY29uZmlndXJlIgorI2xpbmUgMTczODcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2lmZGVmIHNpZ25hbAotIyB1bmRlZiBzaWduYWwKLSNlbmRpZgotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHZvaWQgKCpzaWduYWwgKGludCwgdm9pZCAoKikoaW50KSkpKGludCk7Ci0jZWxzZQotdm9pZCAoKnNpZ25hbCAoKSkgKCk7Ci0jZW5kaWYKLQorJGFjX2luY2x1ZGVzX2RlZmF1bHQKIGludAogbWFpbiAoKQogewotaW50IGk7CitpZiAoKGludHB0cl90ICopIDApCisgIHJldHVybiAwOworaWYgKHNpemVvZiAoaW50cHRyX3QpKQorICByZXR1cm4gMDsKICAgOwogICByZXR1cm4gMDsKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM2OTg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc0MDI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzNzAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NDA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNzA0OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzQwODogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzNzA3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NDExOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfdHlwZV9zaWduYWw9dm9pZAorICBhY19jdl90eXBlX2ludHB0cl90PXllcwogZWxzZQogICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQogY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci1hY19jdl90eXBlX3NpZ25hbD1pbnQKK2FjX2N2X3R5cGVfaW50cHRyX3Q9bm8KIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1lY2hvICIkYXNfbWU6MTM3MTc6IHJlc3VsdDogJGFjX2N2X3R5cGVfc2lnbmFsIiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl90eXBlX3NpZ25hbCIgPiY2CitlY2hvICIkYXNfbWU6MTc0MjE6IHJlc3VsdDogJGFjX2N2X3R5cGVfaW50cHRyX3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3R5cGVfaW50cHRyX3QiID4mNgoraWYgdGVzdCAkYWNfY3ZfdHlwZV9pbnRwdHJfdCA9IHllczsgdGhlbgorICA6CitlbHNlCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKLSNkZWZpbmUgUkVUU0lHVFlQRSAkYWNfY3ZfdHlwZV9zaWduYWwKKyNkZWZpbmUgaW50cHRyX3QgbG9uZwogRU9GCiAKLWVjaG8gIiRhc19tZToxMzcyNDogY2hlY2tpbmcgZm9yIHR5cGUgc2lnYWN0aW9uX3QiID4mNQorZmkKKworZWNobyAiJGFzX21lOjE3NDMzOiBjaGVja2luZyBmb3Igc3NpemVfdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzc2l6ZV90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl90eXBlX3NzaXplX3Qrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNzQzOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitpZiAoKHNzaXplX3QgKikgMCkKKyAgcmV0dXJuIDA7CitpZiAoc2l6ZW9mIChzc2l6ZV90KSkKKyAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3NDU0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNzQ1NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzQ2MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3NDYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfdHlwZV9zc2l6ZV90PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl90eXBlX3NzaXplX3Q9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTc0NzM6IHJlc3VsdDogJGFjX2N2X3R5cGVfc3NpemVfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfdHlwZV9zc2l6ZV90IiA+JjYKK2lmIHRlc3QgJGFjX2N2X3R5cGVfc3NpemVfdCA9IHllczsgdGhlbgorICA6CitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgc3NpemVfdCBpbnQKK0VPRgorCitmaQorCitlY2hvICIkYXNfbWU6MTc0ODU6IGNoZWNraW5nIGZvciB0eXBlIHNpZ2FjdGlvbl90IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgc2lnYWN0aW9uX3QuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X3R5cGVfc2lnYWN0aW9uK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAKIAljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzNzMxICJjb25maWd1cmUiCisjbGluZSAxNzQ5MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTEzNzQxLDE2ICsxNzUwMiwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzc0NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzUwNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM3NDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc1MDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM3NTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3NTExOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM3NTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc1MTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl90eXBlX3NpZ2FjdGlvbj15ZXMKIGVsc2UKQEAgLTEzNzYxLDI4ICsxNzUyMiwyOSBAQAogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogCi1lY2hvICIkYXNfbWU6MTM3NjQ6IHJlc3VsdDogJGNmX2N2X3R5cGVfc2lnYWN0aW9uIiA+JjUKK2VjaG8gIiRhc19tZToxNzUyNTogcmVzdWx0OiAkY2ZfY3ZfdHlwZV9zaWdhY3Rpb24iID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3R5cGVfc2lnYWN0aW9uIiA+JjYKLXRlc3QgIiRjZl9jdl90eXBlX3NpZ2FjdGlvbiIgPSB5ZXMgJiYgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKK3Rlc3QgIiRjZl9jdl90eXBlX3NpZ2FjdGlvbiIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfVFlQRV9TSUdBQ1RJT04gMQogRU9GCiAKLWVjaG8gIiRhc19tZToxMzc3MDogY2hlY2tpbmcgZGVjbGFyYXRpb24gb2Ygc2l6ZS1jaGFuZ2UiID4mNQorZWNobyAiJGFzX21lOjE3NTMyOiBjaGVja2luZyBkZWNsYXJhdGlvbiBvZiBzaXplLWNoYW5nZSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGRlY2xhcmF0aW9uIG9mIHNpemUtY2hhbmdlLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9zaXplY2hhbmdlK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAKLSAgICBjZl9jdl9zaXplY2hhbmdlPXVua25vd24KLSAgICBjZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJY2ZfY3Zfc2l6ZWNoYW5nZT11bmtub3duCisJY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgogCiBmb3IgY2Zfb3B0cyBpbiAiIiAiTkVFRF9QVEVNX0giCiBkbwogCi0gICAgQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgotICAgIHRlc3QgLW4gIiRjZl9vcHRzIiAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1EJGNmX29wdHMiCi0gICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxMzc4NSAiY29uZmlndXJlIgorCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwl0ZXN0IC1uICIkY2Zfb3B0cyIgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRCRjZl9vcHRzIgorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTc1NDcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfVEVSTUlPU19ICkBAIC0xMzgyNiwxNiArMTc1ODgsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM4Mjk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc1OTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzODMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NTk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzODM1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzU5NzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzODM4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NjAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3Zfc2l6ZWNoYW5nZT15ZXMKIGVsc2UKQEAgLTEzODU0LDE1ICsxNzYxNiwxNiBAQAogZG9uZQogCiBmaQotZWNobyAiJGFzX21lOjEzODU3OiByZXN1bHQ6ICRjZl9jdl9zaXplY2hhbmdlIiA+JjUKK2VjaG8gIiRhc19tZToxNzYxOTogcmVzdWx0OiAkY2ZfY3Zfc2l6ZWNoYW5nZSIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3Zfc2l6ZWNoYW5nZSIgPiY2CiBpZiB0ZXN0ICIkY2ZfY3Zfc2l6ZWNoYW5nZSIgIT0gbm8gOyB0aGVuCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9TSVpFQ0hBTkdFIDEKIEVPRgogCi0JY2FzZSAkY2ZfY3Zfc2l6ZWNoYW5nZSBpbiAjKHZpCi0JTkVFRCopCisJY2FzZSAkY2ZfY3Zfc2l6ZWNoYW5nZSBpbgorCShORUVEKikKIAkJY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgogI2RlZmluZSAkY2ZfY3Zfc2l6ZWNoYW5nZSAgMQogRU9GCkBAIC0xMzg3MSwxMyArMTc2MzQsMTMgQEAKIAllc2FjCiBmaQogCi1lY2hvICIkYXNfbWU6MTM4NzQ6IGNoZWNraW5nIGZvciBtZW1tb3ZlIiA+JjUKK2VjaG8gIiRhc19tZToxNzYzNzogY2hlY2tpbmcgZm9yIG1lbW1vdmUiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWVtbW92ZS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tZW1tb3ZlK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTM4ODAgImNvbmZpZ3VyZSIKKyNsaW5lIDE3NjQzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIG1lbW1vdmUgKCk7IGJlbG93LiAgKi8KQEAgLTEzOTAwLDcgKzE3NjYzLDcgQEAKICNpZiBkZWZpbmVkIChfX3N0dWJfbWVtbW92ZSkgfHwgZGVmaW5lZCAoX19zdHViX19fbWVtbW92ZSkKIGNob2tlIG1lCiAjZWxzZQotZiA9IG1lbW1vdmU7CitmID0gbWVtbW92ZTsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKICNlbmRpZgogCiAgIDsKQEAgLTEzOTA4LDE2ICsxNzY3MSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5MTE6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc2NzQ6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzOTE0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3Njc3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5MTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3NjgwOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM5MjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc2ODM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBhY19jdl9mdW5jX21lbW1vdmU9eWVzCiBlbHNlCkBAIC0xMzkyNywxOSArMTc2OTAsMTkgQEAKIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQotZWNobyAiJGFzX21lOjEzOTMwOiByZXN1bHQ6ICRhY19jdl9mdW5jX21lbW1vdmUiID4mNQorZWNobyAiJGFzX21lOjE3NjkzOiByZXN1bHQ6ICRhY19jdl9mdW5jX21lbW1vdmUiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfbWVtbW92ZSIgPiY2CiBpZiB0ZXN0ICRhY19jdl9mdW5jX21lbW1vdmUgPSB5ZXM7IHRoZW4KICAgOgogZWxzZQogCi1lY2hvICIkYXNfbWU6MTM5MzY6IGNoZWNraW5nIGZvciBiY29weSIgPiY1CitlY2hvICIkYXNfbWU6MTc2OTk6IGNoZWNraW5nIGZvciBiY29weSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBiY29weS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfZnVuY19iY29weStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDEzOTQyICJjb25maWd1cmUiCisjbGluZSAxNzcwNSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBiY29weSAoKTsgYmVsb3cuICAqLwpAQCAtMTM5NjIsNyArMTc3MjUsNyBAQAogI2lmIGRlZmluZWQgKF9fc3R1Yl9iY29weSkgfHwgZGVmaW5lZCAoX19zdHViX19fYmNvcHkpCiBjaG9rZSBtZQogI2Vsc2UKLWYgPSBiY29weTsKK2YgPSBiY29weTsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKICNlbmRpZgogCiAgIDsKQEAgLTEzOTcwLDE2ICsxNzczMywxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5NzM6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc3MzY6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjEzOTc2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NzM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5Nzk6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3NzQyOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTM5ODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc3NDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBhY19jdl9mdW5jX2Jjb3B5PXllcwogZWxzZQpAQCAtMTM5ODksMTEgKzE3NzUyLDExIEBACiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKLWVjaG8gIiRhc19tZToxMzk5MjogcmVzdWx0OiAkYWNfY3ZfZnVuY19iY29weSIgPiY1CitlY2hvICIkYXNfbWU6MTc3NTU6IHJlc3VsdDogJGFjX2N2X2Z1bmNfYmNvcHkiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfYmNvcHkiID4mNgogaWYgdGVzdCAkYWNfY3ZfZnVuY19iY29weSA9IHllczsgdGhlbgogCi0JZWNobyAiJGFzX21lOjEzOTk2OiBjaGVja2luZyBpZiBiY29weSBkb2VzIG92ZXJsYXBwaW5nIG1vdmVzIiA+JjUKKwllY2hvICIkYXNfbWU6MTc3NTk6IGNoZWNraW5nIGlmIGJjb3B5IGRvZXMgb3ZlcmxhcHBpbmcgbW92ZXMiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBiY29weSBkb2VzIG92ZXJsYXBwaW5nIG1vdmVzLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9nb29kX2Jjb3B5K3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNDAwMyw3ICsxNzc2Niw3IEBACiAgIGNmX2N2X2dvb2RfYmNvcHk9dW5rbm93bgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0MDA2ICJjb25maWd1cmUiCisjbGluZSAxNzc2OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtMTQwMTcsMTUgKzE3NzgwLDE1IEBACiAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDAyMDogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzc4MzogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQwMjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc3ODY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MDI1OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzc4ODogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0MDI4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3NzkxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfZ29vZF9iY29weT15ZXMKIGVsc2UKQEAgLTE0MDM4LDcgKzE3ODAxLDcgQEAKIGZpCiAKIGZpCi1lY2hvICIkYXNfbWU6MTQwNDE6IHJlc3VsdDogJGNmX2N2X2dvb2RfYmNvcHkiID4mNQorZWNobyAiJGFzX21lOjE3ODA0OiByZXN1bHQ6ICRjZl9jdl9nb29kX2Jjb3B5IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9nb29kX2Jjb3B5IiA+JjYKIAogZWxzZQpAQCAtMTQwNDYsMTIgKzE3ODA5LDE0IEBACiBmaQogCiAJaWYgdGVzdCAiJGNmX2N2X2dvb2RfYmNvcHkiID0geWVzIDsgdGhlbgotCQljYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBVU0VfT0tfQkNPUFkgMQogRU9GCiAKIAllbHNlCi0JCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIFVTRV9NWV9NRU1NT1ZFIDEKIEVPRgogCkBAIC0xNDA1OSw3ICsxNzgyNCw3IEBACiAKIGZpCiAKLWVjaG8gIiRhc19tZToxNDA2MjogY2hlY2tpbmcgaWYgcG9sbCByZWFsbHkgd29ya3MiID4mNQorZWNobyAiJGFzX21lOjE3ODI3OiBjaGVja2luZyBpZiBwb2xsIHJlYWxseSB3b3JrcyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHBvbGwgcmVhbGx5IHdvcmtzLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl93b3JraW5nX3BvbGwrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTE0MDY5LDEwICsxNzgzNCwxMyBAQAogICBjZl9jdl93b3JraW5nX3BvbGw9dW5rbm93bgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0MDcyICJjb25maWd1cmUiCisjbGluZSAxNzgzNyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CiAjaWZkZWYgSEFWRV9QT0xMX0gKICNpbmNsdWRlIDxwb2xsLmg+CiAjZWxzZQpAQCAtMTQwODIsMjMgKzE3ODUwLDQ2IEBACiAJc3RydWN0IHBvbGxmZCBteWZkczsKIAlpbnQgcmV0OwogCi0JbXlmZHMuZmQgPSAwOworCS8qIGNoZWNrIGZvciBEYXJ3aW4gYnVnIHdpdGggcmVzcGVjdCB0byAiZGV2aWNlcyIgKi8KKwlteWZkcy5mZCA9IG9wZW4oIi9kZXYvbnVsbCIsIDEpOwkvKiBPX1dST05MWSAqLworCWlmIChteWZkcy5mZCA8IDApCisJCW15ZmRzLmZkID0gMDsKIAlteWZkcy5ldmVudHMgPSBQT0xMSU47CisJbXlmZHMucmV2ZW50cyA9IDA7CiAKIAlyZXQgPSBwb2xsKCZteWZkcywgMSwgMTAwKTsKLQkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KHJldCAhPSAwKTsKKworCWlmIChyZXQgPCAwIHx8IChteWZkcy5yZXZlbnRzICYgUE9MTE5WQUwpKSB7CisJCXJldCA9IC0xOworCX0gZWxzZSB7CisJCWludCBmZCA9IDA7CisJCWlmICghaXNhdHR5KGZkKSkgeworCQkJZmQgPSBvcGVuKCIvZGV2L3R0eSIsIDIpOwkvKiBPX1JEV1IgKi8KKwkJfQorCisJCWlmIChmZCA+PSAwKSB7CisJCQkvKiBhbHNvIGNoZWNrIHdpdGggc3RhbmRhcmQgaW5wdXQgKi8KKwkJCW15ZmRzLmZkID0gZmQ7CisJCQlteWZkcy5ldmVudHMgPSBQT0xMSU47CisJCQlteWZkcy5yZXZlbnRzID0gMDsKKwkJCXJldCA9IHBvbGwoJm15ZmRzLCAxLCAxMDApOworCQl9IGVsc2UgeworCQkJcmV0ID0gLTE7CisJCX0KKwl9CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShyZXQgPCAwKTsKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDA5MzogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzg4NDogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQwOTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTc4ODc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MDk4OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxNzg4OTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0MTAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE3ODkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3Zfd29ya2luZ19wb2xsPXllcwogZWxzZQpAQCAtMTQxMTAsMTUgKzE3OTAxLDUwOCBAQAogcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBmaQotZWNobyAiJGFzX21lOjE0MTEzOiByZXN1bHQ6ICRjZl9jdl93b3JraW5nX3BvbGwiID4mNQorZWNobyAiJGFzX21lOjE3OTA0OiByZXN1bHQ6ICRjZl9jdl93b3JraW5nX3BvbGwiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3dvcmtpbmdfcG9sbCIgPiY2Ci10ZXN0ICIkY2ZfY3Zfd29ya2luZ19wb2xsIiA9ICJ5ZXMiICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCit0ZXN0ICIkY2ZfY3Zfd29ya2luZ19wb2xsIiA9ICJ5ZXMiICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1dPUktJTkdfUE9MTCAxCiBFT0YKIAorZWNobyAiJGFzX21lOjE3OTExOiBjaGVja2luZyBmb3IgdmFfY29weSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB2YV9jb3B5Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9oYXZlX3ZhX2NvcHkrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNzkxOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworaW50CittYWluICgpCit7CisKKwlzdGF0aWMgdmFfbGlzdCBkc3Q7CisJc3RhdGljIHZhX2xpc3Qgc3JjOworCXZhX2NvcHkoZHN0LCBzcmMpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzkzNTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTc5Mzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzk0MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3OTQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfaGF2ZV92YV9jb3B5PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9oYXZlX3ZhX2NvcHk9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE3OTU0OiByZXN1bHQ6ICRjZl9jdl9oYXZlX3ZhX2NvcHkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2hhdmVfdmFfY29weSIgPiY2CisKK3Rlc3QgIiRjZl9jdl9oYXZlX3ZhX2NvcHkiID0geWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1ZBX0NPUFkgMQorRU9GCisKK2VjaG8gIiRhc19tZToxNzk2MjogY2hlY2tpbmcgZm9yIF9fdmFfY29weSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfX3ZhX2NvcHkuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2hhdmVfX192YV9jb3B5K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTc5NjkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKK2ludAorbWFpbiAoKQoreworCisJc3RhdGljIHZhX2xpc3QgZHN0OworCXN0YXRpYyB2YV9saXN0IHNyYzsKKwlfX3ZhX2NvcHkoZHN0LCBzcmMpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzk4NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTc5ODk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzk5MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3OTk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfaGF2ZV9fX3ZhX2NvcHk9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2hhdmVfX192YV9jb3B5PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxODAwNTogcmVzdWx0OiAkY2ZfY3ZfaGF2ZV9fX3ZhX2NvcHkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2hhdmVfX192YV9jb3B5IiA+JjYKKwordGVzdCAiJGNmX2N2X2hhdmVfX192YV9jb3B5IiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9fX1ZBX0NPUFkgMQorRU9GCisKK2VjaG8gIiRhc19tZToxODAxMzogY2hlY2tpbmcgZm9yIHBpZF90IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHBpZF90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl90eXBlX3BpZF90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTgwMTkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworaWYgKChwaWRfdCAqKSAwKQorICByZXR1cm4gMDsKK2lmIChzaXplb2YgKHBpZF90KSkKKyAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4MDM0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxODAzNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxODA0MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE4MDQzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfdHlwZV9waWRfdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfdHlwZV9waWRfdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxODA1MzogcmVzdWx0OiAkYWNfY3ZfdHlwZV9waWRfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfdHlwZV9waWRfdCIgPiY2CitpZiB0ZXN0ICRhY19jdl90eXBlX3BpZF90ID0geWVzOyB0aGVuCisgIDoKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBwaWRfdCBpbnQKK0VPRgorCitmaQorCitmb3IgYWNfaGVhZGVyIGluIHVuaXN0ZC5oIHZmb3JrLmgKK2RvCithc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2VjaG8gIiRhc19tZToxODA2ODogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxODA3NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JGFjX2hlYWRlcj4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTgwNzg6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjE4MDg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxODEwMzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CitlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CitpZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCisgIGNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitFT0YKKworZmkKK2RvbmUKKworZm9yIGFjX2Z1bmMgaW4gZm9yayB2Zm9yaworZG8KK2FzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTgxMTY6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxODEyMiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYyAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciAkYWNfZnVuYyAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfJGFjX2Z1bmMpIHx8IGRlZmluZWQgKF9fc3R1Yl9fXyRhY19mdW5jKQorY2hva2UgbWUKKyNlbHNlCitmID0gJGFjX2Z1bmM7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTgxNTM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE4MTU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTgxNTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxODE2MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY192YXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfdmFyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTgxNzI6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCithY19jdl9mdW5jX2Zvcmtfd29ya3M9JGFjX2N2X2Z1bmNfZm9yaworaWYgdGVzdCAieCRhY19jdl9mdW5jX2ZvcmsiID0geHllczsgdGhlbgorICBlY2hvICIkYXNfbWU6MTgxODQ6IGNoZWNraW5nIGZvciB3b3JraW5nIGZvcmsiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igd29ya2luZyBmb3JrLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2Zvcmtfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPWNyb3NzCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorLyogQnkgUsO8ZGlnZXIgS3VobG1hbm4uICovCisgICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICAjaWYgSEFWRV9VTklTVERfSAorICAgICAgIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyAgICAgICNlbmRpZgorICAgICAgLyogU29tZSBzeXN0ZW1zIG9ubHkgaGF2ZSBhIGR1bW15IHN0dWIgZm9yIGZvcmsoKSAqLworICAgICAgaW50IG1haW4gKCkKKyAgICAgIHsKKyAgICAgICAgaWYgKGZvcmsoKSA8IDApCisgICAgICAgICAgJGFjX21haW5fcmV0dXJuICgxKTsKKyAgICAgICAgJGFjX21haW5fcmV0dXJuICgwKTsKKyAgICAgIH0KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODIwNzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTgyMTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4MjEyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTgyMTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2ZpCitlY2hvICIkYXNfbWU6MTgyMjc6IHJlc3VsdDogJGFjX2N2X2Z1bmNfZm9ya193b3JrcyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA+JjYKKworZmkKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA9IHhjcm9zczsgdGhlbgorICBjYXNlICRob3N0IGluCisgICAgKi0qLWFtaWdhb3MqIHwgKi0qLW1zZG9zZGpncHAqKQorICAgICAgIyBPdmVycmlkZSwgYXMgdGhlc2Ugc3lzdGVtcyBoYXZlIG9ubHkgYSBkdW1teSBmb3JrKCkgc3R1YgorICAgICAgYWNfY3ZfZnVuY19mb3JrX3dvcmtzPW5vCisgICAgICA7OworICAgICopCisgICAgICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9eWVzCisgICAgICA7OworICBlc2FjCisgIHsgZWNobyAiJGFzX21lOjE4MjQxOiBXQVJOSU5HOiBDUk9TUzogUmVzdWx0ICRhY19jdl9mdW5jX2Zvcmtfd29ya3MgZ3Vlc3NlZCBkdWUgdG8gY3Jvc3MtY29tcGlsaW5nLiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IENST1NTOiBSZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGR1ZSB0byBjcm9zcy1jb21waWxpbmcuIiA+JjI7fQorZmkKK2FjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY192Zm9yayIgPSB4eWVzOyB0aGVuCisgIGVjaG8gIiRhc19tZToxODI0NjogY2hlY2tpbmcgZm9yIHdvcmtpbmcgdmZvcmsiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igd29ya2luZyB2Zm9yay4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY192Zm9ya193b3JrcytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPWNyb3NzCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTgyNTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogVGhhbmtzIHRvIFBhdWwgRWdnZXJ0IGZvciB0aGlzIHRlc3QuICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9WRk9SS19ICisjIGluY2x1ZGUgPHZmb3JrLmg+CisjZW5kaWYKKy8qIE9uIHNvbWUgc3BhcmMgc3lzdGVtcywgY2hhbmdlcyBieSB0aGUgY2hpbGQgdG8gbG9jYWwgYW5kIGluY29taW5nCisgICBhcmd1bWVudCByZWdpc3RlcnMgYXJlIHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgcGFyZW50LiAgVGhlIGNvbXBpbGVyCisgICBpcyB0b2xkIGFib3V0IHRoaXMgd2l0aCAjaW5jbHVkZSA8dmZvcmsuaD4sIGJ1dCBzb21lIGNvbXBpbGVycworICAgKGUuZy4gZ2NjIC1PKSBkb24ndCBncm9rIDx2Zm9yay5oPi4gIFRlc3QgZm9yIHRoaXMgYnkgdXNpbmcgYQorICAgc3RhdGljIHZhcmlhYmxlIHdob3NlIGFkZHJlc3MgaXMgcHV0IGludG8gYSByZWdpc3RlciB0aGF0IGlzCisgICBjbG9iYmVyZWQgYnkgdGhlIHZmb3JrLiAgKi8KK3N0YXRpYworI2lmZGVmIF9fY3BsdXNwbHVzCitzcGFyY19hZGRyZXNzX3Rlc3QgKGludCBhcmcpCisjIGVsc2UKK3NwYXJjX2FkZHJlc3NfdGVzdCAoYXJnKSBpbnQgYXJnOworI2VuZGlmCit7CisgIHN0YXRpYyBwaWRfdCBjaGlsZDsKKyAgaWYgKCFjaGlsZCkgeworICAgIGNoaWxkID0gdmZvcmsgKCk7CisgICAgaWYgKGNoaWxkIDwgMCkgeworICAgICAgcGVycm9yICgidmZvcmsiKTsKKyAgICAgIF9leGl0KDIpOworICAgIH0KKyAgICBpZiAoIWNoaWxkKSB7CisgICAgICBhcmcgPSBnZXRwaWQoKTsKKyAgICAgIHdyaXRlKC0xLCAiIiwgMCk7CisgICAgICBfZXhpdCAoYXJnKTsKKyAgICB9CisgIH0KK30KKworaW50CittYWluICgpCit7CisgIHBpZF90IHBhcmVudCA9IGdldHBpZCAoKTsKKyAgcGlkX3QgY2hpbGQ7CisKKyAgc3BhcmNfYWRkcmVzc190ZXN0ICgpOworCisgIGNoaWxkID0gdmZvcmsgKCk7CisKKyAgaWYgKGNoaWxkID09IDApIHsKKyAgICAvKiBIZXJlIGlzIGFub3RoZXIgdGVzdCBmb3Igc3BhcmMgdmZvcmsgcmVnaXN0ZXIgcHJvYmxlbXMuICBUaGlzCisgICAgICAgdGVzdCB1c2VzIGxvdHMgb2YgbG9jYWwgdmFyaWFibGVzLCBhdCBsZWFzdCBhcyBtYW55IGxvY2FsCisgICAgICAgdmFyaWFibGVzIGFzIG1haW4gaGFzIGFsbG9jYXRlZCBzbyBmYXIgaW5jbHVkaW5nIGNvbXBpbGVyCisgICAgICAgdGVtcG9yYXJpZXMuICA0IGxvY2FscyBhcmUgZW5vdWdoIGZvciBnY2MgMS40MC4zIG9uIGEgU29sYXJpcworICAgICAgIDQuMS4zIHNwYXJjLCBidXQgd2UgdXNlIDggdG8gYmUgc2FmZS4gIEEgYnVnZ3kgY29tcGlsZXIgc2hvdWxkCisgICAgICAgcmV1c2UgdGhlIHJlZ2lzdGVyIG9mIHBhcmVudCBmb3Igb25lIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMsCisgICAgICAgc2luY2UgaXQgd2lsbCB0aGluayB0aGF0IHBhcmVudCBjYW4ndCBwb3NzaWJseSBiZSB1c2VkIGFueSBtb3JlCisgICAgICAgaW4gdGhpcyByb3V0aW5lLiAgQXNzaWduaW5nIHRvIHRoZSBsb2NhbCB2YXJpYWJsZSB3aWxsIHRodXMKKyAgICAgICBtdW5nZSBwYXJlbnQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgKi8KKyAgICBwaWRfdAorICAgICAgcCA9IGdldHBpZCgpLCBwMSA9IGdldHBpZCgpLCBwMiA9IGdldHBpZCgpLCBwMyA9IGdldHBpZCgpLAorICAgICAgcDQgPSBnZXRwaWQoKSwgcDUgPSBnZXRwaWQoKSwgcDYgPSBnZXRwaWQoKSwgcDcgPSBnZXRwaWQoKTsKKyAgICAvKiBDb252aW5jZSB0aGUgY29tcGlsZXIgdGhhdCBwLi5wNyBhcmUgbGl2ZTsgb3RoZXJ3aXNlLCBpdCBtaWdodAorICAgICAgIHVzZSB0aGUgc2FtZSBoYXJkd2FyZSByZWdpc3RlciBmb3IgYWxsIDggbG9jYWwgdmFyaWFibGVzLiAgKi8KKyAgICBpZiAocCAhPSBwMSB8fCBwICE9IHAyIHx8IHAgIT0gcDMgfHwgcCAhPSBwNAorCXx8IHAgIT0gcDUgfHwgcCAhPSBwNiB8fCBwICE9IHA3KQorICAgICAgX2V4aXQoMSk7CisKKyAgICAvKiBPbiBzb21lIHN5c3RlbXMgKGUuZy4gSVJJWCAzLjMpLCB2Zm9yayBkb2Vzbid0IHNlcGFyYXRlIHBhcmVudAorICAgICAgIGZyb20gY2hpbGQgZmlsZSBkZXNjcmlwdG9ycy4gIElmIHRoZSBjaGlsZCBjbG9zZXMgYSBkZXNjcmlwdG9yCisgICAgICAgYmVmb3JlIGl0IGV4ZWNzIG9yIGV4aXRzLCB0aGlzIG11bmdlcyB0aGUgcGFyZW50J3MgZGVzY3JpcHRvcgorICAgICAgIGFzIHdlbGwuICBUZXN0IGZvciB0aGlzIGJ5IGNsb3Npbmcgc3Rkb3V0IGluIHRoZSBjaGlsZC4gICovCisgICAgX2V4aXQoY2xvc2UoZmlsZW5vKHN0ZG91dCkpICE9IDApOworICB9IGVsc2UgeworICAgIGludCBzdGF0dXM7CisgICAgc3RydWN0IHN0YXQgc3Q7CisKKyAgICB3aGlsZSAod2FpdCgmc3RhdHVzKSAhPSBjaGlsZCkKKyAgICAgIDsKKyAgICAkYWNfbWFpbl9yZXR1cm4oCisJIC8qIFdhcyB0aGVyZSBzb21lIHByb2JsZW0gd2l0aCB2Zm9ya2luZz8gICovCisJIGNoaWxkIDwgMAorCisJIC8qIERpZCB0aGUgY2hpbGQgZmFpbD8gIChUaGlzIHNob3VsZG4ndCBoYXBwZW4uKSAgKi8KKwkgfHwgc3RhdHVzCisKKwkgLyogRGlkIHRoZSB2Zm9yay9jb21waWxlciBidWcgb2NjdXI/ICAqLworCSB8fCBwYXJlbnQgIT0gZ2V0cGlkKCkKKworCSAvKiBEaWQgdGhlIGZpbGUgZGVzY3JpcHRvciBidWcgb2NjdXI/ICAqLworCSB8fCBmc3RhdChmaWxlbm8oc3Rkb3V0KSwgJnN0KSAhPSAwCisJICk7CisgIH0KK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODM1MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTgzNTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4MzU3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTgzNjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY192Zm9ya193b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZmkKK2VjaG8gIiRhc19tZToxODM3MjogcmVzdWx0OiAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY2CisKK2ZpOworaWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geGNyb3NzOyB0aGVuCisgIGFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9YWNfY3ZfZnVuY192Zm9yaworICB7IGVjaG8gIiRhc19tZToxODM3ODogV0FSTklORzogQ1JPU1M6IFJlc3VsdCAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyBndWVzc2VkIGR1ZSB0byBjcm9zcy1jb21waWxpbmcuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogQ1JPU1M6IFJlc3VsdCAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyBndWVzc2VkIGR1ZSB0byBjcm9zcy1jb21waWxpbmcuIiA+JjI7fQorZmkKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIiA9IHh5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9XT1JLSU5HX1ZGT1JLIDEKK0VPRgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIHZmb3JrIGZvcmsKK0VPRgorCitmaQoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID0geHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1dPUktJTkdfRk9SSyAxCitFT0YKKworZmkKKwogIyBzcGVjaWFsIGNoZWNrIGZvciB0ZXN0L2RpdHRvLmMKIAotZWNobyAiJGFzX21lOjE0MTIxOiBjaGVja2luZyBmb3Igb3BlbnB0eSBpbiAtbHV0aWwiID4mNQorZWNobyAiJGFzX21lOjE4NDA1OiBjaGVja2luZyBmb3Igb3BlbnB0eSBpbiAtbHV0aWwiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb3BlbnB0eSBpbiAtbHV0aWwuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X2xpYl91dGlsX29wZW5wdHkrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTE0MTI2LDcgKzE4NDEwLDcgQEAKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwogTElCUz0iLWx1dGlsICAkTElCUyIKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTQxMjkgImNvbmZpZ3VyZSIKKyNsaW5lIDE4NDEzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KQEAgLTE0MTQ1LDE2ICsxODQyOSwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQxNDg6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTg0MzI6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0MTUxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE4NDM1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQxNTQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4NDM4OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQxNTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTg0NDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBhY19jdl9saWJfdXRpbF9vcGVucHR5PXllcwogZWxzZQpAQCAtMTQxNjUsNyArMTg0NDksNyBAQAogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwogZmkKLWVjaG8gIiRhc19tZToxNDE2ODogcmVzdWx0OiAkYWNfY3ZfbGliX3V0aWxfb3BlbnB0eSIgPiY1CitlY2hvICIkYXNfbWU6MTg0NTI6IHJlc3VsdDogJGFjX2N2X2xpYl91dGlsX29wZW5wdHkiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl91dGlsX29wZW5wdHkiID4mNgogaWYgdGVzdCAkYWNfY3ZfbGliX3V0aWxfb3BlbnB0eSA9IHllczsgdGhlbgogICBjZl9jdl9saWJfdXRpbD15ZXMKQEAgLTE0MTczLDE4ICsxODQ1NywzNCBAQAogICBjZl9jdl9saWJfdXRpbD1ubwogZmkKIAotZWNobyAiJGFzX21lOjE0MTc2OiBjaGVja2luZyBmb3Igb3BlbnB0eSBoZWFkZXIiID4mNQorZWNobyAiJGFzX21lOjE4NDYwOiBjaGVja2luZyBmb3Igb3BlbnB0eSBoZWFkZXIiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igb3BlbnB0eSBoZWFkZXIuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X2Z1bmNfb3BlbnB0eStzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogCi0gICAgY2Zfc2F2ZV9MSUJTPSIkTElCUyIKLSAgICB0ZXN0ICRjZl9jdl9saWJfdXRpbCA9IHllcyAmJiBMSUJTPSItbHV0aWwgJExJQlMiCi0gICAgZm9yIGNmX2hlYWRlciBpbiBwdHkuaCBsaWJ1dGlsLmggdXRpbC5oCi0gICAgZG8KLSAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0MTg3ICJjb25maWd1cmUiCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwl0ZXN0ICRjZl9jdl9saWJfdXRpbCA9IHllcyAmJgorY2ZfYWRkX2xpYnM9Ii1sdXRpbCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJZm9yIGNmX2hlYWRlciBpbiBwdHkuaCBsaWJ1dGlsLmggdXRpbC5oCisJZG8KKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE4NDg3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPCRjZl9oZWFkZXI+CkBAIC0xNDE5Myw2OCArMTg0OTMsODYgQEAKIG1haW4gKCkKIHsKIAotICAgIGludCB4ID0gb3BlbnB0eSgoaW50ICopMCwgKGludCAqKTAsIChjaGFyICopMCwKLSAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRlcm1pb3MgKikwLCAoc3RydWN0IHdpbnNpemUgKikwKTsKKwlpbnQgeCA9IG9wZW5wdHkoKGludCAqKTAsIChpbnQgKikwLCAoY2hhciAqKTAsCisJCQkJICAgKHN0cnVjdCB0ZXJtaW9zICopMCwgKHN0cnVjdCB3aW5zaXplICopMCk7CiAKICAgOwogICByZXR1cm4gMDsKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MjA0OiBcIiRhY19saW5rXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4NTA0OiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNDIwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxODUwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MjEwOiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxODUxMDogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0MjEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE4NTEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KIAotICAgICAgICBjZl9jdl9mdW5jX29wZW5wdHk9JGNmX2hlYWRlcgotICAgICAgICBicmVhaworCQljZl9jdl9mdW5jX29wZW5wdHk9JGNmX2hlYWRlcgorCQlicmVhawogCiBlbHNlCiAgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CiBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKIAotICAgICAgICBjZl9jdl9mdW5jX29wZW5wdHk9bm8KKwkJY2ZfY3ZfZnVuY19vcGVucHR5PW5vCiAKIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgZG9uZQotICAgIExJQlM9IiRjZl9zYXZlX0xJQlMiCisJZG9uZQorCUxJQlM9IiRjZl9zYXZlX0xJQlMiCiAKIGZpCi1lY2hvICIkYXNfbWU6MTQyMzE6IHJlc3VsdDogJGNmX2N2X2Z1bmNfb3BlbnB0eSIgPiY1CitlY2hvICIkYXNfbWU6MTg1MzE6IHJlc3VsdDogJGNmX2N2X2Z1bmNfb3BlbnB0eSIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZnVuY19vcGVucHR5IiA+JjYKIAogaWYgdGVzdCAiJGNmX2N2X2Z1bmNfb3BlbnB0eSIgIT0gbm8gOyB0aGVuCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCiAjZGVmaW5lIFVTRV9PUEVOUFRZX0hFQURFUiA8JGNmX2N2X2Z1bmNfb3BlbnB0eT4KIEVPRgogCi0gICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIFVTRV9YVEVSTV9QVFkgMQogRU9GCiAKLSAgICBpZiB0ZXN0ICIkY2ZfY3ZfbGliX3V0aWwiID0geWVzIDsgdGhlbgotICAgICAgICBURVNUX0xJQlM9Ii1sdXRpbCAkVEVTVF9MSUJTIgotICAgIGZpCisJaWYgdGVzdCAieCRjZl9jdl9saWJfdXRpbCIgPSB4eWVzIDsgdGhlbgorCitjZl9hZGRfbGlicz0iLWx1dGlsIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRURVNUX0xJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK1RFU1RfTElCUz0iJGNmX2FkZF9saWJzIgorCisJZmkKIGZpCiAKIGlmIHRlc3QgIiR3aXRoX2hhc2hlZF9kYiIgIT0gbm8gOyB0aGVuCi0JY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgVVNFX0hBU0hFRF9EQiAxCiBFT0YKIAotY2FzZSAkd2l0aF9oYXNoZWRfZGIgaW4gIyh2aQoteWVzfCphYmxlKikgIyh2aQotICAgIDs7Ci0qKQotICAgIGlmIHRlc3QgLWQgIiR3aXRoX2hhc2hlZF9kYiIgOyB0aGVuCitjYXNlICR3aXRoX2hhc2hlZF9kYiBpbgorKHllc3wqYWJsZSopCisJOzsKKygqKQorCWlmIHRlc3QgLWQgIiR3aXRoX2hhc2hlZF9kYiIgOyB0aGVuCiAKIGlmIHRlc3QgLW4gIiR3aXRoX2hhc2hlZF9kYi9pbmNsdWRlIiA7IHRoZW4KICAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUKQEAgLTE0Mjc0LDEzICsxODU5MiwxMyBAQAogCQlmaQogCiAJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KLSAgICAgICAgICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgogCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKIAkJCXRoZW4KIAkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKIAkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgogCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0MjgzICJjb25maWd1cmUiCisjbGluZSAxODYwMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIGludApAQCAtMTQyOTIsMTYgKzE4NjEwLDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0Mjk1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4NjEzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNDI5ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxODYxNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNDMwMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTg2MTk6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNDMwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxODYyMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIDoKIGVsc2UKQEAgLTE0MzE4LDY4ICsxODYzNiwyNzQgQEAKIAkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgogCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgogCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06MTQzMjE6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTg2Mzk6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKIAotCQkgIENQUEZMQUdTPSItSSRjZl9hZGRfaW5jZGlyICRDUFBGTEFHUyIKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCiAKLSAgICAgICAgICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAotICAgICAgICAgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKLSAgICAgICAgICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKIAkJZWxzZQogCQkgIGJyZWFrCiAJCWZpCisJICBlbHNlCisJCWJyZWFrCiAJICBmaQogCWRvbmUKICAgZG9uZQogZmkKIAogaWYgdGVzdCAtbiAiJHdpdGhfaGFzaGVkX2RiL2xpYiIgOyB0aGVuCi0gIGZvciBjZl9hZGRfbGliZGlyIGluICR3aXRoX2hhc2hlZF9kYi9saWIKKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkd2l0aF9oYXNoZWRfZGIvbGliCisJZG8KKwkJaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgorCQkJOgorCQllbGlmIHRlc3QgLWQgJGNmX2FkZF9saWJkaXIKKwkJdGhlbgorCQkJY2ZfaGF2ZV9saWJkaXI9bm8KKwkJCWlmIHRlc3QgLW4gIiRMREZMQUdTJExJQlMiIDsgdGhlbgorCQkJCSMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJCQlmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbworCQkJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfbGliZGlyIiA9ICIuLUwkY2ZfYWRkX2xpYmRpciIgOyB0aGVuCisJCQkJCQljZl9oYXZlX2xpYmRpcj15ZXM7IGJyZWFrCisJCQkJCWZpCisJCQkJZG9uZQorCQkJZmkKKwkJCWlmIHRlc3QgIiRjZl9oYXZlX2xpYmRpciIgPSBubyA7IHRoZW4KKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxODY3NTogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoIC4uLiIgMT4mNQorCisJCQkJTERGTEFHUz0iLUwkY2ZfYWRkX2xpYmRpciAkTERGTEFHUyIKKwkJCWZpCisJCWZpCisJZG9uZQorZmkKKworCWVsc2UKKwkJY2FzZSAiJHdpdGhfaGFzaGVkX2RiIiBpbgorCQkoLi8qfC4uLyp8LyopCisJCQl7IGVjaG8gIiRhc19tZToxODY4NjogV0FSTklORzogbm8gc3VjaCBkaXJlY3RvcnkgJHdpdGhfaGFzaGVkX2RiIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogbm8gc3VjaCBkaXJlY3RvcnkgJHdpdGhfaGFzaGVkX2RiIiA+JjI7fQorCQkJOzsKKwkJKCopCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS8kd2l0aF9oYXNoZWRfZGIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS8kd2l0aF9oYXNoZWRfZGIiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS8kd2l0aF9oYXNoZWRfZGIvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4LyR3aXRoX2hhc2hlZF9kYi9pbmNsdWRlLyR3aXRoX2hhc2hlZF9kYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kd2l0aF9oYXNoZWRfZGIvaW5jbHVkZS8kd2l0aF9oYXNoZWRfZGIiCit9CisKK2ZvciBjZl9zdWJkaXJfcHJlZml4IGluIFwKKwkvdXNyIFwKKwkvdXNyL2xvY2FsIFwKKwkvdXNyL3BrZyBcCisJL29wdCBcCisJL29wdC9sb2NhbCBcCisJJEhPTUUKK2RvCisKK3Rlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IiAmJiBcCit0ZXN0IC1kICIkY2Zfc3ViZGlyX3ByZWZpeCIgJiYgXAorKHRlc3QgLXogIiRwcmVmaXgiIHx8IHRlc3QgeCRwcmVmaXggPSB4Tk9ORSB8fCB0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIpICYmIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9zdWJkaXJfcHJlZml4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJHdpdGhfaGFzaGVkX2RiICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlLyR3aXRoX2hhc2hlZF9kYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kd2l0aF9oYXNoZWRfZGIvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kd2l0aF9oYXNoZWRfZGIvaW5jbHVkZS8kd2l0aF9oYXNoZWRfZGIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyR3aXRoX2hhc2hlZF9kYi9pbmNsdWRlLyR3aXRoX2hhc2hlZF9kYiIKK30KKworZG9uZQorCisJZm9yIGNmX2l0ZW0gaW4gJGNmX3NlYXJjaAorCWRvCisJCWNhc2UgJGNmX2l0ZW0gaW4KKwkJKCovJHdpdGhfaGFzaGVkX2RiKQorCitpZiB0ZXN0IC1uICIkY2ZfaXRlbSIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl9pdGVtCiAgIGRvCi0gICAgaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgotICAgICAgOgotICAgIGVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgotICAgIHRoZW4KLSAgICAgIGNmX2hhdmVfbGliZGlyPW5vCi0gICAgICBpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KLSAgICAgICAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycwotICAgICAgICBmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbwotICAgICAgICAgIGlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KLSAgICAgICAgICAgIGNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKLSAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgotICAgICAgICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgiIDE+JjYKKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKIAotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjE0MzU1OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGggLi4uIiAxPiY1CisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTg3NTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODc2NzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTg3NzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTg3NzM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxODc3NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCiAKLSAgICAgICAgTERGTEFHUz0iLUwkY2ZfYWRkX2xpYmRpciAkTERGTEFHUyIKLSAgICAgIGZpCi0gICAgZmkKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjE4NzkzOiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKICAgZG9uZQogZmkKIAotICAgIGZpCisJCQk7OworCQllc2FjCisJZG9uZQorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIiCisJdGVzdCAtZCAkcHJlZml4L2xpYi8kd2l0aF9oYXNoZWRfZGIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyR3aXRoX2hhc2hlZF9kYiIKKwl0ZXN0IC1kICRwcmVmaXgvbGliLyR3aXRoX2hhc2hlZF9kYi9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyR3aXRoX2hhc2hlZF9kYi9saWIiCisJdGVzdCAtZCAkcHJlZml4LyR3aXRoX2hhc2hlZF9kYi9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2xpYi8kd2l0aF9oYXNoZWRfZGIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2xpYi8kd2l0aF9oYXNoZWRfZGIiCit9CisKK2ZvciBjZl9zdWJkaXJfcHJlZml4IGluIFwKKwkvdXNyIFwKKwkvdXNyL2xvY2FsIFwKKwkvdXNyL3BrZyBcCisJL29wdCBcCisJL29wdC9sb2NhbCBcCisJJEhPTUUKK2RvCisKK3Rlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IiAmJiBcCit0ZXN0IC1kICIkY2Zfc3ViZGlyX3ByZWZpeCIgJiYgXAorKHRlc3QgLXogIiRwcmVmaXgiIHx8IHRlc3QgeCRwcmVmaXggPSB4Tk9ORSB8fCB0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIpICYmIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kd2l0aF9oYXNoZWRfZGIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kd2l0aF9oYXNoZWRfZGIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJHdpdGhfaGFzaGVkX2RiL2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliLyR3aXRoX2hhc2hlZF9kYi9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kd2l0aF9oYXNoZWRfZGIvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kd2l0aF9oYXNoZWRfZGIvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJHdpdGhfaGFzaGVkX2RiL2xpYi8kd2l0aF9oYXNoZWRfZGIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyR3aXRoX2hhc2hlZF9kYi9saWIvJHdpdGhfaGFzaGVkX2RiIgorfQorCitkb25lCisKKwlmb3IgY2ZfaXRlbSBpbiAkY2Zfc2VhcmNoCisJZG8KKwkJY2FzZSAkY2ZfaXRlbSBpbgorCQkoKi8kd2l0aF9oYXNoZWRfZGIpCisKK2lmIHRlc3QgLW4gIiRjZl9pdGVtIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfaXRlbQorCWRvCisJCWlmIHRlc3QgJGNmX2FkZF9saWJkaXIgPSAvdXNyL2xpYiA7IHRoZW4KKwkJCToKKwkJZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCisJCXRoZW4KKwkJCWNmX2hhdmVfbGliZGlyPW5vCisJCQlpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KKwkJCQkjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCQkJZm9yIGNmX3Rlc3RfbGliZGlyIGluICRMREZMQUdTICRMSUJTIDsgZG8KKwkJCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgorCQkJCQkJY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWZpCisJCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTg4NzM6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKKwkJCTs7CisJCWVzYWMKKwlkb25lCisKKwkJCTs7CisJCWVzYWMKKwlmaQogZXNhYwogCi1lY2hvICIkYXNfbWU6MTQzNjY6IGNoZWNraW5nIGZvciBkYi5oIiA+JjUKK2VjaG8gIiRhc19tZToxODg5MDogY2hlY2tpbmcgZm9yIGRiLmgiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGIuaC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2RiX2grc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNDM3MiAiY29uZmlndXJlIgorI2xpbmUgMTg4OTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGRiLmg+CiBfQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0Mzc2OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODkwMDogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPwogICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCiAgIHJtIC1mIGNvbmZ0ZXN0LmVyMQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6MTQzODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTg5MDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwpAQCAtMTQzOTgsMTEgKzE4OTIyLDExIEBACiBmaQogcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1lY2hvICIkYXNfbWU6MTQ0MDE6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9kYl9oIiA+JjUKK2VjaG8gIiRhc19tZToxODkyNTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX2RiX2giID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9kYl9oIiA+JjYKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9kYl9oID0geWVzOyB0aGVuCiAKLWVjaG8gIiRhc19tZToxNDQwNTogY2hlY2tpbmcgZm9yIHZlcnNpb24gb2YgZGIiID4mNQorZWNobyAiJGFzX21lOjE4OTI5OiBjaGVja2luZyBmb3IgdmVyc2lvbiBvZiBkYiIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB2ZXJzaW9uIG9mIGRiLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9oYXNoZWRfZGJfdmVyc2lvbitzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTQ0MTAsMTMgKzE4OTM0LDEzIEBACiAKIGNmX2N2X2hhc2hlZF9kYl92ZXJzaW9uPXVua25vd24KIAotZm9yIGNmX2RiX3ZlcnNpb24gaW4gMSAyIDMgNCA1Citmb3IgY2ZfZGJfdmVyc2lvbiBpbiAxIDIgMyA0IDUgNgogZG8KIAotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjE0NDE2OiB0ZXN0aW5nIGNoZWNraW5nIGZvciBkYiB2ZXJzaW9uICRjZl9kYl92ZXJzaW9uIC4uLiIgMT4mNQorZWNobyAiJHthc19tZTotY29uZmlndXJlfToxODk0MDogdGVzdGluZyBjaGVja2luZyBmb3IgZGIgdmVyc2lvbiAkY2ZfZGJfdmVyc2lvbiAuLi4iIDE+JjUKIAogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTQ0MTkgImNvbmZpZ3VyZSIKKyNsaW5lIDE4OTQzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogJGFjX2luY2x1ZGVzX2RlZmF1bHQKQEAgLTE0NDQ2LDE2ICsxODk3MCwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDQ0OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODk3MzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ0NTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTg5NzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ0NTU6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4OTc5OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ0NTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTg5ODI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogCiAJY2ZfY3ZfaGFzaGVkX2RiX3ZlcnNpb249JGNmX2RiX3ZlcnNpb24KQEAgLTE0NDY5LDE2ICsxODk5MywxNiBAQAogZG9uZQogCiBmaQotZWNobyAiJGFzX21lOjE0NDcyOiByZXN1bHQ6ICRjZl9jdl9oYXNoZWRfZGJfdmVyc2lvbiIgPiY1CitlY2hvICIkYXNfbWU6MTg5OTY6IHJlc3VsdDogJGNmX2N2X2hhc2hlZF9kYl92ZXJzaW9uIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9oYXNoZWRfZGJfdmVyc2lvbiIgPiY2CiAKIGlmIHRlc3QgIiRjZl9jdl9oYXNoZWRfZGJfdmVyc2lvbiIgPSB1bmtub3duIDsgdGhlbgotCXsgeyBlY2hvICIkYXNfbWU6MTQ0NzY6IGVycm9yOiBDYW5ub3QgZGV0ZXJtaW5lIHZlcnNpb24gb2YgZGIiID4mNQorCXsgeyBlY2hvICIkYXNfbWU6MTkwMDA6IGVycm9yOiBDYW5ub3QgZGV0ZXJtaW5lIHZlcnNpb24gb2YgZGIiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGRldGVybWluZSB2ZXJzaW9uIG9mIGRiIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBlbHNlCiAKLWVjaG8gIiRhc19tZToxNDQ4MTogY2hlY2tpbmcgZm9yIGRiIGxpYnJhcmllcyIgPiY1CitlY2hvICIkYXNfbWU6MTkwMDU6IGNoZWNraW5nIGZvciBkYiBsaWJyYXJpZXMiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGIgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9oYXNoZWRfZGJfbGlicytzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTQ0ODksMTMgKzE5MDEzLDI5IEBACiBkbwogCWNmX3NhdmVfbGlicz0iJExJQlMiCiAJaWYgdGVzdCAtbiAiJGNmX2RiX2xpYnMiOyB0aGVuCi0JCUxJQlM9Ii1sJGNmX2RiX2xpYnMgJExJQlMiCisKK2NmX2FkZF9saWJzPSItbCRjZl9kYl9saWJzIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKIAlmaQogCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06MTQ0OTU6IHRlc3RpbmcgY2hlY2tpbmcgZm9yIGxpYnJhcnkgIiRjZl9kYl9saWJzIiAuLi4iIDE+JjUKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTkwMzU6IHRlc3RpbmcgY2hlY2tpbmcgZm9yIGxpYnJhcnkgIiRjZl9kYl9saWJzIiAuLi4iIDE+JjUKIAogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTQ0OTggImNvbmZpZ3VyZSIKKyNsaW5lIDE5MDM4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogJGFjX2luY2x1ZGVzX2RlZmF1bHQKQEAgLTE0NTUwLDE2ICsxOTA5MCwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ1NTM6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTkwOTM6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0NTU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5MDk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ1NTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5MDk5OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ1NjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkxMDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogCiAJaWYgdGVzdCAtbiAiJGNmX2RiX2xpYnMiIDsgdGhlbgpAQCAtMTQ1NzksMjEgKzE5MTE5LDM3IEBACiBkb25lCiAKIGZpCi1lY2hvICIkYXNfbWU6MTQ1ODI6IHJlc3VsdDogJGNmX2N2X2hhc2hlZF9kYl9saWJzIiA+JjUKK2VjaG8gIiRhc19tZToxOTEyMjogcmVzdWx0OiAkY2ZfY3ZfaGFzaGVkX2RiX2xpYnMiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2hhc2hlZF9kYl9saWJzIiA+JjYKIAogCWlmIHRlc3QgIiRjZl9jdl9oYXNoZWRfZGJfbGlicyIgPSB1bmtub3duIDsgdGhlbgotCQl7IHsgZWNobyAiJGFzX21lOjE0NTg2OiBlcnJvcjogQ2Fubm90IGRldGVybWluZSBsaWJyYXJ5IGZvciBkYiIgPiY1CisJCXsgeyBlY2hvICIkYXNfbWU6MTkxMjY6IGVycm9yOiBDYW5ub3QgZGV0ZXJtaW5lIGxpYnJhcnkgZm9yIGRiIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IENhbm5vdCBkZXRlcm1pbmUgbGlicmFyeSBmb3IgZGIiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIAllbGlmIHRlc3QgIiRjZl9jdl9oYXNoZWRfZGJfbGlicyIgIT0gZGVmYXVsdCA7IHRoZW4KLQkJTElCUz0iLWwkY2ZfY3ZfaGFzaGVkX2RiX2xpYnMgJExJQlMiCisKK2NmX2FkZF9saWJzPSItbCRjZl9jdl9oYXNoZWRfZGJfbGlicyIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCiAJZmkKIGZpCiAKIGVsc2UKIAotCXsgeyBlY2hvICIkYXNfbWU6MTQ1OTY6IGVycm9yOiBDYW5ub3QgZmluZCBkYi5oIiA+JjUKKwl7IHsgZWNobyAiJGFzX21lOjE5MTUyOiBlcnJvcjogQ2Fubm90IGZpbmQgZGIuaCIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgZmluZCBkYi5oIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAKQEAgLTE0NjA4LDcgKzE5MTY0LDcgQEAKIAogIyBKdXN0IGluIGNhc2UsIGNoZWNrIGlmIHRoZSBDIGNvbXBpbGVyIGhhcyBhIGJvb2wgdHlwZS4KIAotZWNobyAiJGFzX21lOjE0NjExOiBjaGVja2luZyBpZiB3ZSBzaG91bGQgaW5jbHVkZSBzdGRib29sLmgiID4mNQorZWNobyAiJGFzX21lOjE5MTY3OiBjaGVja2luZyBpZiB3ZSBzaG91bGQgaW5jbHVkZSBzdGRib29sLmgiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgaW5jbHVkZSBzdGRib29sLmguLi4gJEVDSE9fQyIgPiY2CiAKIGlmIHRlc3QgIiR7Y2ZfY3ZfaGVhZGVyX3N0ZGJvb2xfaCtzZXR9IiA9IHNldDsgdGhlbgpAQCAtMTQ2MTYsNyArMTkxNzIsNyBAQAogZWxzZQogCiAJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNDYxOSAiY29uZmlndXJlIgorI2xpbmUgMTkxNzUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQKQEAgLTE0NjI4LDIzICsxOTE4NCwyMyBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDYzMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTE4NzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ2MzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkxOTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2Mzc6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5MTkzOiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ2NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkxOTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9oZWFkZXJfc3RkYm9vbF9oPTAKIGVsc2UKICAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNDY0NyAiY29uZmlndXJlIgorI2xpbmUgMTkyMDMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZuZGVmIF9fQkVPU19fCkBAIC0xNDY2MCwxNiArMTkyMTYsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2NjM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTkyMTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0NjY2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5MjIyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NjY5OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxOTIyNTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0NjcyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5MjI4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfaGVhZGVyX3N0ZGJvb2xfaD0xCiBlbHNlCkBAIC0xNDY4MywxMyArMTkyMzksMTMgQEAKIGZpCiAKIGlmIHRlc3QgIiRjZl9jdl9oZWFkZXJfc3RkYm9vbF9oIiA9IDEKLXRoZW4JZWNobyAiJGFzX21lOjE0Njg2OiByZXN1bHQ6IHllcyIgPiY1Cit0aGVuCWVjaG8gIiRhc19tZToxOTI0MjogcmVzdWx0OiB5ZXMiID4mNQogZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKLWVsc2UJZWNobyAiJGFzX21lOjE0Njg4OiByZXN1bHQ6IG5vIiA+JjUKK2Vsc2UJZWNobyAiJGFzX21lOjE5MjQ0OiByZXN1bHQ6IG5vIiA+JjUKIGVjaG8gIiR7RUNIT19UfW5vIiA+JjYKIGZpCiAKLWVjaG8gIiRhc19tZToxNDY5MjogY2hlY2tpbmcgZm9yIGJ1aWx0aW4gYm9vbCB0eXBlIiA+JjUKK2VjaG8gIiRhc19tZToxOTI0ODogY2hlY2tpbmcgZm9yIGJ1aWx0aW4gYm9vbCB0eXBlIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGJ1aWx0aW4gYm9vbCB0eXBlLi4uICRFQ0hPX0MiID4mNgogCiBpZiB0ZXN0ICIke2NmX2N2X2NjX2Jvb2xfdHlwZStzZXR9IiA9IHNldDsgdGhlbgpAQCAtMTQ2OTcsNyArMTkyNTMsNyBAQAogZWxzZQogCiAJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNDcwMCAiY29uZmlndXJlIgorI2xpbmUgMTkyNTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTE0NzEyLDE2ICsxOTI2OCwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDcxNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTI3MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ3MTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkyNzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ3MjE6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5Mjc3OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ3MjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkyODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9jY19ib29sX3R5cGU9MQogZWxzZQpAQCAtMTQ3MzQsOSArMTkyOTAsOSBAQAogZmkKIAogaWYgdGVzdCAiJGNmX2N2X2NjX2Jvb2xfdHlwZSIgPSAxCi10aGVuCWVjaG8gIiRhc19tZToxNDczNzogcmVzdWx0OiB5ZXMiID4mNQordGhlbgllY2hvICIkYXNfbWU6MTkyOTM6IHJlc3VsdDogeWVzIiA+JjUKIGVjaG8gIiR7RUNIT19UfXllcyIgPiY2Ci1lbHNlCWVjaG8gIiRhc19tZToxNDczOTogcmVzdWx0OiBubyIgPiY1CitlbHNlCWVjaG8gIiRhc19tZToxOTI5NTogcmVzdWx0OiBubyIgPiY1CiBlY2hvICIke0VDSE9fVH1ubyIgPiY2CiBmaQogCkBAIC0xNDc1MCwyNCArMTkzMDYsNDAgQEAKIGFjX21haW5fcmV0dXJuPXJldHVybgogCiBpZiB0ZXN0IC1uICIkR1hYIiA7IHRoZW4KLWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluICModmkKLW9zMiopICModmkKK2Nhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisob3MyKikKIAljZl9zdGRjcHBfbGlibmFtZT1zdGRjcHAKIAk7OwotKikKKygqKQogCWNmX3N0ZGNwcF9saWJuYW1lPXN0ZGMrKwogCTs7CiBlc2FjCi1lY2hvICIkYXNfbWU6MTQ3NjE6IGNoZWNraW5nIGZvciBsaWJyYXJ5ICRjZl9zdGRjcHBfbGlibmFtZSIgPiY1CitlY2hvICIkYXNfbWU6MTkzMTc6IGNoZWNraW5nIGZvciBsaWJyYXJ5ICRjZl9zdGRjcHBfbGlibmFtZSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaWJyYXJ5ICRjZl9zdGRjcHBfbGlibmFtZS4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfbGlic3RkY3BwK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAKIAljZl9zYXZlPSIkTElCUyIKLQlMSUJTPSIkTElCUyAtbCRjZl9zdGRjcHBfbGlibmFtZSIKKworY2ZfYWRkX2xpYnM9Ii1sJGNmX3N0ZGNwcF9saWJuYW1lIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTQ3NzAgImNvbmZpZ3VyZSIKKyNsaW5lIDE5MzQyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN0cnN0cmVhbS5oPgpAQCAtMTQ3ODMsMTYgKzE5MzU1LDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDc4NjogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTM1ODogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ3ODk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTkzNjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNDc5MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTkzNjQ6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNDc5NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTM2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2xpYnN0ZGNwcD15ZXMKIGVsc2UKQEAgLTE0ODA0LDEyICsxOTM3NiwyOCBAQAogCUxJQlM9IiRjZl9zYXZlIgogCiBmaQotZWNobyAiJGFzX21lOjE0ODA3OiByZXN1bHQ6ICRjZl9jdl9saWJzdGRjcHAiID4mNQorZWNobyAiJGFzX21lOjE5Mzc5OiByZXN1bHQ6ICRjZl9jdl9saWJzdGRjcHAiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2xpYnN0ZGNwcCIgPiY2Ci10ZXN0ICIkY2ZfY3ZfbGlic3RkY3BwIiA9IHllcyAmJiBDWFhMSUJTPSIkQ1hYTElCUyAtbCRjZl9zdGRjcHBfbGlibmFtZSIKK3Rlc3QgIiRjZl9jdl9saWJzdGRjcHAiID0geWVzICYmCitjZl9hZGRfbGlicz0iLWwkY2Zfc3RkY3BwX2xpYm5hbWUiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJENYWExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0NYWExJQlM9IiRjZl9hZGRfbGlicyIKKwogZmkKIAotCWVjaG8gIiRhc19tZToxNDgxMjogY2hlY2tpbmcgd2hldGhlciAkQ1hYIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlciIgPiY1CisJZWNobyAiJGFzX21lOjE5NDAwOiBjaGVja2luZyB3aGV0aGVyICRDWFggdW5kZXJzdGFuZHMgLWMgYW5kIC1vIHRvZ2V0aGVyIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ1hYIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlci4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfcHJvZ19DWFhfY19vK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNDgyNSw1NCArMTk0MTMsNzAgQEAKICMgV2UgZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBzb21lIGNvbXBpbGVycyByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuCiAjIGV4aXN0aW5nIC5vIGZpbGUgd2l0aCAtbywgdGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUgb25lLgogYWNfdHJ5PSckQ1hYIC1jIGNvbmZ0ZXN0LiRhY19leHQgLW8gY29uZnRlc3QyLiRhY19vYmpleHQgPiY1JwotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4Mjg6IFwiJGFjX3RyeVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTQxNjogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0ODMxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5NDE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgdGVzdCAtZiBjb25mdGVzdDIuJGFjX29iamV4dCAmJiB7IChldmFsIGVjaG8gIiRhc19tZToxNDgzMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgdGVzdCAtZiBjb25mdGVzdDIuJGFjX29iamV4dCAmJiB7IChldmFsIGVjaG8gIiRhc19tZToxOTQyMTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0ODM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5NDI0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07CiB0aGVuCiAgIGV2YWwgY2ZfY3ZfcHJvZ19DWFhfY19vPXllcwogZWxzZQogICBldmFsIGNmX2N2X3Byb2dfQ1hYX2Nfbz1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0Kgorcm0gLXJmIGNvbmZ0ZXN0KgogCiBmaQogaWYgdGVzdCAkY2ZfY3ZfcHJvZ19DWFhfY19vID0geWVzOyB0aGVuCi0gIGVjaG8gIiRhc19tZToxNDg0NzogcmVzdWx0OiB5ZXMiID4mNQorICBlY2hvICIkYXNfbWU6MTk0MzU6IHJlc3VsdDogeWVzIiA+JjUKIGVjaG8gIiR7RUNIT19UfXllcyIgPiY2CiBlbHNlCi0gIGVjaG8gIiRhc19tZToxNDg1MDogcmVzdWx0OiBubyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTQzODogcmVzdWx0OiBubyIgPiY1CiBlY2hvICIke0VDSE9fVH1ubyIgPiY2CiBmaQogCiAJY2FzZSAkR1hYX1ZFUlNJT04gaW4KLQkxKnwyLjAtNiopCisJKDEqfDIuMC02KikKIAkJY2ZfY3h4X2xpYnJhcnk9eWVzCiAJCTs7Ci0JKi0yLjcqfDIuNyopCisJKCotMi43KnwyLjcqKQogCiBjZl9jeHhfbGlicmFyeT11bmtub3duCi1jYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi1vczIqKSAjKHZpCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKG9zMiopCiAJY2ZfZ3BwX2xpYm5hbWU9Z3BwCiAJOzsKLSopCisoKikKIAljZl9ncHBfbGlibmFtZT1nKysKIAk7OwogZXNhYwogaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLQllY2hvICIkYXNfbWU6MTQ4NzA6IGNoZWNraW5nIGZvciBsaWIkY2ZfZ3BwX2xpYm5hbWUiID4mNQorCWVjaG8gIiRhc19tZToxOTQ1ODogY2hlY2tpbmcgZm9yIGxpYiRjZl9ncHBfbGlibmFtZSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaWIkY2ZfZ3BwX2xpYm5hbWUuLi4gJEVDSE9fQyIgPiY2CiAJY2Zfc2F2ZT0iJExJQlMiCi0JTElCUz0iJExJQlMgLWwkY2ZfZ3BwX2xpYm5hbWUiCisKK2NmX2FkZF9saWJzPSItbCRjZl9ncHBfbGlibmFtZSIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCiAJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNDg3NSAiY29uZmlndXJlIgorI2xpbmUgMTk0NzkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8JGNmX2dwcF9saWJuYW1lL2J1aWx0aW4uaD4KQEAgLTE0ODg2LDI2ICsxOTQ5MCw0NCBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4ODk6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTk0OTM6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0ODkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5NDk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4OTU6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NDk5OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTQ4OTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTk1MDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jeHhfbGlicmFyeT15ZXMKLQkgQ1hYTElCUz0iJENYWExJQlMgLWwkY2ZfZ3BwX2xpYm5hbWUiCisKK2NmX2FkZF9saWJzPSItbCRjZl9ncHBfbGlibmFtZSIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkQ1hYTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorQ1hYTElCUz0iJGNmX2FkZF9saWJzIgorCiAJIGlmIHRlc3QgIiRjZl9ncHBfbGlibmFtZSIgPSBjcHAgOyB0aGVuCi0JICAgIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfR1BQX0JVSUxUSU5fSCAxCiBFT0YKIAogCSBlbHNlCi0JICAgIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfR1hYX0JVSUxUSU5fSCAxCiBFT0YKIApAQCAtMTQ5MTQsNyArMTk1MzYsNyBAQAogICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQogY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0OTE3ICJjb25maWd1cmUiCisjbGluZSAxOTUzOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxidWlsdGluLmg+CkBAIC0xNDkyOCwyMCArMTk1NTAsMzYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0OTMxOiBcIiRhY19saW5rXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NTUzOiBcIiRhY19saW5rXCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNDkzNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTU1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0OTM3OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToxOTU1OTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE0OTQwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5NTYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3h4X2xpYnJhcnk9eWVzCi0JIENYWExJQlM9IiRDWFhMSUJTIC1sJGNmX2dwcF9saWJuYW1lIgotCSBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorCitjZl9hZGRfbGlicz0iLWwkY2ZfZ3BwX2xpYm5hbWUiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJENYWExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0NYWExJQlM9IiRjZl9hZGRfbGlicyIKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9CVUlMVElOX0ggMQogRU9GCiAKQEAgLTE0OTU0LDEyICsxOTU5MiwxMiBAQAogZmkKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAlMSUJTPSIkY2Zfc2F2ZSIKLQllY2hvICIkYXNfbWU6MTQ5NTc6IHJlc3VsdDogJGNmX2N4eF9saWJyYXJ5IiA+JjUKKwllY2hvICIkYXNfbWU6MTk1OTU6IHJlc3VsdDogJGNmX2N4eF9saWJyYXJ5IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jeHhfbGlicmFyeSIgPiY2CiBmaQogCiAJCTs7Ci0JKikKKwkoKikKIAkJY2ZfY3h4X2xpYnJhcnk9bm8KIAkJOzsKIAllc2FjCkBAIC0xNDk3MCw3ICsxOTYwOCw3IEBACiBhY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwogYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251CiBhY19tYWluX3JldHVybj1yZXR1cm4KLWVjaG8gIiRhc19tZToxNDk3MzogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQysrIHByZXByb2Nlc3NvciIgPiY1CitlY2hvICIkYXNfbWU6MTk2MTE6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMrKyBwcmVwcm9jZXNzb3IiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDKysgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAteiAiJENYWENQUCI7IHRoZW4KICAgaWYgdGVzdCAiJHthY19jdl9wcm9nX0NYWENQUCtzZXR9IiA9IHNldDsgdGhlbgpAQCAtMTQ5ODcsMTggKzE5NjI1LDE4IEBACiAgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCiAgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE0OTkwICJjb25maWd1cmUiCisjbGluZSAxOTYyOCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAgICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKIF9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5OTU6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NjMzOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CiAgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICAgcm0gLWYgY29uZnRlc3QuZXIxCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZToxNTAwMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTYzOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jeHhfcHJlcHJvY193YXJuX2ZsYWcKQEAgLTE1MDIxLDE3ICsxOTY1OSwxNyBAQAogICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhlYWRlcnMKICAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNTAyNCAiY29uZmlndXJlIgorI2xpbmUgMTk2NjIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CiBfQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MDI4OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTY2NjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPwogICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCiAgIHJtIC1mIGNvbmZ0ZXN0LmVyMQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6MTUwMzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTk2NzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY3h4X3ByZXByb2Nfd2Fybl9mbGFnCkBAIC0xNTA2OCw3ICsxOTcwNiw3IEBACiBlbHNlCiAgIGFjX2N2X3Byb2dfQ1hYQ1BQPSRDWFhDUFAKIGZpCi1lY2hvICIkYXNfbWU6MTUwNzE6IHJlc3VsdDogJENYWENQUCIgPiY1CitlY2hvICIkYXNfbWU6MTk3MDk6IHJlc3VsdDogJENYWENQUCIgPiY1CiBlY2hvICIke0VDSE9fVH0kQ1hYQ1BQIiA+JjYKIGFjX3ByZXByb2Nfb2s9ZmFsc2UKIGZvciBhY19jeHhfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCkBAIC0xNTA3OCwxOCArMTk3MTYsMTggQEAKICAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKICAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTUwODEgImNvbmZpZ3VyZSIKKyNsaW5lIDE5NzE5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KICAgICAgICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgogX0FDRU9GCi1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTA4NjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTk3MjQ6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKICAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KICAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgogICBybSAtZiBjb25mdGVzdC5lcjEKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgZWNobyAiJGFzX21lOjE1MDkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjE5NzMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgogICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgIGFjX2NwcF9lcnI9JGFjX2N4eF9wcmVwcm9jX3dhcm5fZmxhZwpAQCAtMTUxMTIsMTcgKzE5NzUwLDE3IEBACiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1MTE1ICJjb25maWd1cmUiCisjbGluZSAxOTc1MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KIF9BQ0VPRgotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUxMTk6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5NzU3OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CiAgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICAgcm0gLWYgY29uZnRlc3QuZXIxCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZToxNTEyNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTc2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jeHhfcHJlcHJvY193YXJuX2ZsYWcKQEAgLTE1MTUwLDcgKzE5Nzg4LDcgQEAKIGlmICRhY19wcmVwcm9jX29rOyB0aGVuCiAgIDoKIGVsc2UKLSAgeyB7IGVjaG8gIiRhc19tZToxNTE1MzogZXJyb3I6IEMrKyBwcmVwcm9jZXNzb3IgXCIkQ1hYQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjUKKyAgeyB7IGVjaG8gIiRhc19tZToxOTc5MTogZXJyb3I6IEMrKyBwcmVwcm9jZXNzb3IgXCIkQ1hYQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IEMrKyBwcmVwcm9jZXNzb3IgXCIkQ1hYQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQpAQCAtMTUxNjIsMjYgKzE5ODAwLDI2IEBACiBhY19jb21waWxlcl9nbnU9JGFjX2N2X2N4eF9jb21waWxlcl9nbnUKIGFjX21haW5fcmV0dXJuPXJldHVybgogCi1mb3IgYWNfaGVhZGVyIGluIGlvc3RyZWFtIHR5cGVpbmZvCitmb3IgYWNfaGVhZGVyIGluIHR5cGVpbmZvCiBkbwogYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCi1lY2hvICIkYXNfbWU6MTUxNjg6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gIiRhc19tZToxOTgwNjogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKIGlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNTE3NCAiY29uZmlndXJlIgorI2xpbmUgMTk4MTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZWFkZXI+CiBfQUNFT0YKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MTc4OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTgxNjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPwogICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCiAgIHJtIC1mIGNvbmZ0ZXN0LmVyMQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6MTUxODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MTk4MjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY3h4X3ByZXByb2Nfd2Fybl9mbGFnCkBAIC0xNTIwMCw3ICsxOTgzOCw3IEBACiBmaQogcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1lY2hvICIkYXNfbWU6MTUyMDM6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJGFzX21lOjE5ODQxOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKIGVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKIGlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KICAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgpAQCAtMTUyMTAsMTEgKzE5ODQ4LDU5IEBACiBmaQogZG9uZQogCi0gICAgaWYgdGVzdCB4IiRhY19jdl9oZWFkZXJfaW9zdHJlYW0iID0geHllcyA7IHRoZW4KLSAgICAgICAgZWNobyAiJGFzX21lOjE1MjE0OiBjaGVja2luZyBpZiBpb3N0cmVhbSB1c2VzIHN0ZC1uYW1lc3BhY2UiID4mNQorZm9yIGFjX2hlYWRlciBpbiBpb3N0cmVhbQorZG8KK2FzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjE5ODU0OiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE5ODYwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwkYWNfaGVhZGVyPgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxOTg2NDogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MTk4NzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY3h4X3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTk4ODk6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKK2lmIHRlc3QgeCIkYWNfY3ZfaGVhZGVyX2lvc3RyZWFtIiA9IHh5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjE5OTAwOiBjaGVja2luZyBpZiBpb3N0cmVhbSB1c2VzIHN0ZC1uYW1lc3BhY2UiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiBpb3N0cmVhbSB1c2VzIHN0ZC1uYW1lc3BhY2UuLi4gJEVDSE9fQyIgPiY2Ci0gICAgICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTUyMTcgImNvbmZpZ3VyZSIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE5OTAzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgpAQCAtMTUyMzEsMTYgKzE5OTE3LDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MjM0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5OTIwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTIzNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTkyMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNTI0MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTk5MjY6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTI0MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTkyOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2lvc3RyZWFtX25hbWVzcGFjZT15ZXMKIGVsc2UKQEAgLTE1MjQ5LDE3ICsxOTkzNSwxOCBAQAogY2ZfaW9zdHJlYW1fbmFtZXNwYWNlPW5vCiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgICAgIGVjaG8gIiRhc19tZToxNTI1MjogcmVzdWx0OiAkY2ZfaW9zdHJlYW1fbmFtZXNwYWNlIiA+JjUKKwllY2hvICIkYXNfbWU6MTk5Mzg6IHJlc3VsdDogJGNmX2lvc3RyZWFtX25hbWVzcGFjZSIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfaW9zdHJlYW1fbmFtZXNwYWNlIiA+JjYKLSAgICAgICAgaWYgdGVzdCAiJGNmX2lvc3RyZWFtX25hbWVzcGFjZSIgPSB5ZXMgOyB0aGVuCi0gICAgICAgICAgICBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorCWlmIHRlc3QgIiRjZl9pb3N0cmVhbV9uYW1lc3BhY2UiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBJT1NUUkVBTV9OQU1FU1BBQ0UgMQogRU9GCiAKLSAgICAgICAgZmkKLSAgICBmaQorCWZpCitmaQogCi1lY2hvICIkYXNfbWU6MTUyNjI6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBpbmNsdWRlIHN0ZGJvb2wuaCIgPiY1CitlY2hvICIkYXNfbWU6MTk5NDk6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBpbmNsdWRlIHN0ZGJvb2wuaCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBpbmNsdWRlIHN0ZGJvb2wuaC4uLiAkRUNIT19DIiA+JjYKIAogaWYgdGVzdCAiJHtjZl9jdl9oZWFkZXJfc3RkYm9vbF9oK3NldH0iID0gc2V0OyB0aGVuCkBAIC0xNTI2Nyw3ICsxOTk1NCw3IEBACiBlbHNlCiAKIAljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1MjcwICJjb25maWd1cmUiCisjbGluZSAxOTk1NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludApAQCAtMTUyNzksMjMgKzE5OTY2LDIzIEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MjgyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5OTY5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTI4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTk3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNTI4ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTk5NzU6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTI5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToxOTk3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2hlYWRlcl9zdGRib29sX2g9MAogZWxzZQogICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQogY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1Mjk4ICJjb25maWd1cmUiCisjbGluZSAxOTk4NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZm5kZWYgX19CRU9TX18KQEAgLTE1MzExLDE2ICsxOTk5OCwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTMxNDogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMDAwMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTUzMTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAwMDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUzMjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwMDA3OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTUzMjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAwMTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9oZWFkZXJfc3RkYm9vbF9oPTEKIGVsc2UKQEAgLTE1MzM0LDEzICsyMDAyMSwxMyBAQAogZmkKIAogaWYgdGVzdCAiJGNmX2N2X2hlYWRlcl9zdGRib29sX2giID0gMQotdGhlbgllY2hvICIkYXNfbWU6MTUzMzc6IHJlc3VsdDogeWVzIiA+JjUKK3RoZW4JZWNobyAiJGFzX21lOjIwMDI0OiByZXN1bHQ6IHllcyIgPiY1CiBlY2hvICIke0VDSE9fVH15ZXMiID4mNgotZWxzZQllY2hvICIkYXNfbWU6MTUzMzk6IHJlc3VsdDogbm8iID4mNQorZWxzZQllY2hvICIkYXNfbWU6MjAwMjY6IHJlc3VsdDogbm8iID4mNQogZWNobyAiJHtFQ0hPX1R9bm8iID4mNgogZmkKIAotZWNobyAiJGFzX21lOjE1MzQzOiBjaGVja2luZyBmb3IgYnVpbHRpbiBib29sIHR5cGUiID4mNQorZWNobyAiJGFzX21lOjIwMDMwOiBjaGVja2luZyBmb3IgYnVpbHRpbiBib29sIHR5cGUiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYnVpbHRpbiBib29sIHR5cGUuLi4gJEVDSE9fQyIgPiY2CiAKIGlmIHRlc3QgIiR7Y2ZfY3ZfYnVpbHRpbl9ib29sK3NldH0iID0gc2V0OyB0aGVuCkBAIC0xNTM0OCw3ICsyMDAzNSw3IEBACiBlbHNlCiAKIAljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1MzUxICJjb25maWd1cmUiCisjbGluZSAyMDAzOCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTUzNjMsMTYgKzIwMDUwLDE2IEBACiB9CiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MzY2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwMDUzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTM2OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDA1NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNTM3MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjAwNTk6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTM3NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDA2MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X2J1aWx0aW5fYm9vbD0xCiBlbHNlCkBAIC0xNTM4NSwxMyArMjAwNzIsMTMgQEAKIGZpCiAKIGlmIHRlc3QgIiRjZl9jdl9idWlsdGluX2Jvb2wiID0gMQotdGhlbgllY2hvICIkYXNfbWU6MTUzODg6IHJlc3VsdDogeWVzIiA+JjUKK3RoZW4JZWNobyAiJGFzX21lOjIwMDc1OiByZXN1bHQ6IHllcyIgPiY1CiBlY2hvICIke0VDSE9fVH15ZXMiID4mNgotZWxzZQllY2hvICIkYXNfbWU6MTUzOTA6IHJlc3VsdDogbm8iID4mNQorZWxzZQllY2hvICIkYXNfbWU6MjAwNzc6IHJlc3VsdDogbm8iID4mNQogZWNobyAiJHtFQ0hPX1R9bm8iID4mNgogZmkKIAotZWNobyAiJGFzX21lOjE1Mzk0OiBjaGVja2luZyBmb3Igc2l6ZSBvZiBib29sIiA+JjUKK2VjaG8gIiRhc19tZToyMDA4MTogY2hlY2tpbmcgZm9yIHNpemUgb2YgYm9vbCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzaXplIG9mIGJvb2wuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2NmX2N2X3R5cGVfb2ZfYm9vbCtzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTU0MDIsNyArMjAwODksNyBAQAogICBjZl9jdl90eXBlX29mX2Jvb2w9dW5rbm93bgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1NDA1ICJjb25maWd1cmUiCisjbGluZSAyMDA5MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTE1NDI2LDcgKzIwMTEzLDcgQEAKIAogI2VuZGlmCiAKLW1haW4oKQoraW50IG1haW4oKQogewogCUZJTEUgKmZwID0gZm9wZW4oImNmX3Rlc3Qub3V0IiwgInciKTsKIAlpZiAoZnAgIT0gMCkgewpAQCAtMTU0NDQsMTUgKzIwMTMxLDE1IEBACiAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTQ0NzogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMDEzNDogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTU0NTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAxMzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NDUyOiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToyMDEzOTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE1NDU1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwMTQyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfdHlwZV9vZl9ib29sPWBjYXQgY2ZfdGVzdC5vdXRgCiAJCSBpZiB0ZXN0IC16ICIkY2ZfY3ZfdHlwZV9vZl9ib29sIjsgdGhlbgpAQCAtMTU0NzAsMzAgKzIwMTU3LDM2IEBACiBmaQogCiAJcm0gLWYgY2ZfdGVzdC5vdXQKLWVjaG8gIiRhc19tZToxNTQ3MzogcmVzdWx0OiAkY2ZfY3ZfdHlwZV9vZl9ib29sIiA+JjUKK2VjaG8gIiRhc19tZToyMDE2MDogcmVzdWx0OiAkY2ZfY3ZfdHlwZV9vZl9ib29sIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl90eXBlX29mX2Jvb2wiID4mNgogaWYgdGVzdCAiJGNmX2N2X3R5cGVfb2ZfYm9vbCIgPSB1bmtub3duIDsgdGhlbgotCWNhc2UgLiROQ1VSU0VTX0JPT0wgaW4gIyh2aQotCS5hdXRvfC4pIE5DVVJTRVNfQk9PTD11bnNpZ25lZDs7CisJY2FzZSAuJE5DVVJTRVNfQk9PTCBpbgorCSguYXV0b3wuKSBOQ1VSU0VTX0JPT0w9dW5zaWduZWQ7OwogCWVzYWMKLQl7IGVjaG8gIiRhc19tZToxNTQ3OTogV0FSTklORzogQXNzdW1pbmcgJE5DVVJTRVNfQk9PTCBmb3IgdHlwZSBvZiBib29sIiA+JjUKKwl7IGVjaG8gIiRhc19tZToyMDE2NjogV0FSTklORzogQXNzdW1pbmcgJE5DVVJTRVNfQk9PTCBmb3IgdHlwZSBvZiBib29sIiA+JjUKIGVjaG8gIiRhc19tZTogV0FSTklORzogQXNzdW1pbmcgJE5DVVJTRVNfQk9PTCBmb3IgdHlwZSBvZiBib29sIiA+JjI7fQogCWNmX2N2X3R5cGVfb2ZfYm9vbD0kTkNVUlNFU19CT09MCiBmaQogCi1lY2hvICIkYXNfbWU6MTU0ODQ6IGNoZWNraW5nIGZvciBzcGVjaWFsIGRlZmluZXMgbmVlZGVkIGZvciBldGlwLmgiID4mNQorZWNobyAiJGFzX21lOjIwMTcxOiBjaGVja2luZyBmb3Igc3BlY2lhbCBkZWZpbmVzIG5lZWRlZCBmb3IgZXRpcC5oIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgZGVmaW5lcyBuZWVkZWQgZm9yIGV0aXAuaC4uLiAkRUNIT19DIiA+JjYKIGNmX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKIGNmX3Jlc3VsdD0ibm9uZSIKKworIyBldGlwLmggaW5jbHVkZXMgbmN1cnNlcy5oIHdoaWNoIGluY2x1ZGVzIG5jdXJzZXNfZGxsLmgKKyMgQnV0IG5jdXJzZXNfZGxsLmggaXMgZ2VuZXJhdGVkIC0gZml4IGhlcmUuCit0ZXN0IC1kIGluY2x1ZGUgfHwgbWtkaXIgaW5jbHVkZQordGVzdCAtZiBpbmNsdWRlL25jdXJzZXNfZGxsLmggfHwgc2VkIC1lICdzL0BOQ1VSU0VTX1dSQVBfUFJFRklYQC8nJE5DVVJTRVNfV1JBUF9QUkVGSVgnL2cnICR7c3JjZGlyfS9pbmNsdWRlL25jdXJzZXNfZGxsLmguaW4gPmluY2x1ZGUvbmN1cnNlc19kbGwuaAorCiBmb3IgY2ZfbWF0aCBpbiAiIiBNQVRIX0gKIGRvCiBmb3IgY2ZfZXhjcCBpbiAiIiBNQVRIX0VYQ0VQVElPTgogZG8KLQlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgLUkke3NyY2Rpcn0vYysrIC1JJHtzcmNkaXJ9L21lbnUgLUkke3NyY2Rpcn0vaW5jbHVkZSIKKwlDWFhGTEFHUz0iJGNmX3NhdmVfQ1hYRkxBR1MgLUkke3NyY2Rpcn0vYysrIC1JJHtzcmNkaXJ9L21lbnUgLUlpbmNsdWRlIC1JJHtzcmNkaXJ9L2luY2x1ZGUiCiAJdGVzdCAtbiAiJGNmX21hdGgiICYmIENYWEZMQUdTPSIkQ1hYRkxBR1MgLURFVElQX05FRURTXyR7Y2ZfbWF0aH0iCiAJdGVzdCAtbiAiJGNmX2V4Y3AiICYmIENYWEZMQUdTPSIkQ1hYRkxBR1MgLURFVElQX05FRURTXyR7Y2ZfZXhjcH0iCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lIDE1NDk2ICJjb25maWd1cmUiCisjbGluZSAyMDE4OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxldGlwLmguaW4+CkBAIC0xNTUwNywxNiArMjAyMDAsMTYgQEAKIH0KIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU1MTA6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjAyMDM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE1NTEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwMjA2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NTE2OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToyMDIwOTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE1NTE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwMjEyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KIAogCXRlc3QgLW4gIiRjZl9tYXRoIiAmJiBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCkBAIC0xNTUyOCw3ICsyMDIyMSw3IEBACiBFT0YKIAogCWNmX3Jlc3VsdD0iJGNmX21hdGggJGNmX2V4Y3AiCi0JYnJlYWsKKwlicmVhayAyCiAKIGVsc2UKICAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKQEAgLTE1NTM3LDEyICsyMDIzMCwxMiBAQAogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBkb25lCiBkb25lCi1lY2hvICIkYXNfbWU6MTU1NDA6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIkYXNfbWU6MjAyMzM6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKIENYWEZMQUdTPSIkY2Zfc2F2ZV9DWFhGTEFHUyIKIAogaWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KLWVjaG8gIiRhc19tZToxNTU0NTogY2hlY2tpbmcgaWYgJENYWCBhY2NlcHRzIHBhcmFtZXRlciBpbml0aWFsaXphdGlvbiIgPiY1CitlY2hvICIkYXNfbWU6MjAyMzg6IGNoZWNraW5nIGlmICRDWFggYWNjZXB0cyBwYXJhbWV0ZXIgaW5pdGlhbGl6YXRpb24iID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBpZiAkQ1hYIGFjY2VwdHMgcGFyYW1ldGVyIGluaXRpYWxpemF0aW9uLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl9jcHBfcGFyYW1faW5pdCtzZXR9IiA9IHNldDsgdGhlbgogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpAQCAtMTU1NTksNyArMjAyNTIsNyBAQAogICBjZl9jdl9jcHBfcGFyYW1faW5pdD11bmtub3duCiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTU1NjIgImNvbmZpZ3VyZSIKKyNsaW5lIDIwMjU1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogY2xhc3MgVEVTVCB7CkBAIC0xNTU3NCwxOSArMjAyNjcsMTkgQEAKIHsKIAl2YWx1ZSA9IHg7CiB9Ci12b2lkIG1haW4oKSB7IH0KK2ludCBtYWluKCkgeyB9CiAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTU4MTogXCIkYWNfbGlua1wiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMDI3NDogXCIkYWNfbGlua1wiIikgPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTU1ODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAyNzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NTg2OiBcIiRhY190cnlcIiIpID4mNQorICB7IChldmFsIGVjaG8gIiRhc19tZToyMDI3OTogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE1NTg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwMjgyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICAgY2ZfY3ZfY3BwX3BhcmFtX2luaXQ9eWVzCiBlbHNlCkBAIC0xNTYwNSwxNiArMjAyOTgsMTcgQEAKIGFjX21haW5fcmV0dXJuPXJldHVybgogCiBmaQotZWNobyAiJGFzX21lOjE1NjA4OiByZXN1bHQ6ICRjZl9jdl9jcHBfcGFyYW1faW5pdCIgPiY1CitlY2hvICIkYXNfbWU6MjAzMDE6IHJlc3VsdDogJGNmX2N2X2NwcF9wYXJhbV9pbml0IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRjZl9jdl9jcHBfcGFyYW1faW5pdCIgPiY2CiBmaQotdGVzdCAiJGNmX2N2X2NwcF9wYXJhbV9pbml0IiA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgordGVzdCAiJGNmX2N2X2NwcF9wYXJhbV9pbml0IiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgQ1BQX0hBU19QQVJBTV9JTklUIDEKIEVPRgogCiBpZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgogCi1lY2hvICIkYXNfbWU6MTU2MTc6IGNoZWNraW5nIGlmICRDWFggYWNjZXB0cyBzdGF0aWNfY2FzdCIgPiY1CitlY2hvICIkYXNfbWU6MjAzMTE6IGNoZWNraW5nIGlmICRDWFggYWNjZXB0cyBzdGF0aWNfY2FzdCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmICRDWFggYWNjZXB0cyBzdGF0aWNfY2FzdC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR7Y2ZfY3ZfY3BwX3N0YXRpY19jYXN0K3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNTYyOCw3ICsyMDMyMiw3IEBACiBhY19tYWluX3JldHVybj1yZXR1cm4KIAogCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgMTU2MzEgImNvbmZpZ3VyZSIKKyNsaW5lIDIwMzI1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogY2xhc3MgTkN1cnNlc1BhbmVsCkBAIC0xNTY0MCw3ICsyMDMzNCw3IEBACiAJICAgICAgIGludCBiZWdpbl94ID0gMCkKICAgewogICB9Ci0KKyAgTkN1cnNlc1BhbmVsKCk7CiAgIH5OQ3Vyc2VzUGFuZWwoKTsKIH07CiAKQEAgLTE1NjcyLDE2ICsyMDM2NiwxNiBAQAogfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci1pZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTY3NTogXCIkYWNfY29tcGlsZVwiIikgPiY1CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMDM2OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTU2Nzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAzNzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU2ODE6IFwiJGFjX3RyeVwiIikgPiY1CisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjIwMzc1OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6MTU2ODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICBlY2hvICIkYXNfbWU6MjAzNzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBjZl9jdl9jcHBfc3RhdGljX2Nhc3Q9eWVzCiBlbHNlCkBAIC0xNTY5OSwzMSArMjAzOTMsMzIgQEAKIGFjX21haW5fcmV0dXJuPXJldHVybgogCiBmaQotZWNobyAiJGFzX21lOjE1NzAyOiByZXN1bHQ6ICRjZl9jdl9jcHBfc3RhdGljX2Nhc3QiID4mNQorZWNobyAiJGFzX21lOjIwMzk2OiByZXN1bHQ6ICRjZl9jdl9jcHBfc3RhdGljX2Nhc3QiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2NwcF9zdGF0aWNfY2FzdCIgPiY2CiAKIGZpCiAKLXRlc3QgIiRjZl9jdl9jcHBfc3RhdGljX2Nhc3QiID0geWVzICYmIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCit0ZXN0ICIkY2ZfY3ZfY3BwX3N0YXRpY19jYXN0IiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgQ1BQX0hBU19TVEFUSUNfQ0FTVCAxCiBFT0YKIAogCUNYWF9BUj0nJChBUiknCi0JQ1hYX0FSX09QVFM9JyQoQVJfT1BUUyknCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIyh2aQotCWlyaXgqKSAjKHZpCisJQ1hYX0FSRkxBR1M9JyQoQVJGTEFHUyknCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoaXJpeCopCiAJICAgIGlmIHRlc3QgIiRHWFgiICE9IHllcyA7IHRoZW4KIAkJQ1hYX0FSPSckKENYWCknCi0JCUNYWF9BUl9PUFRTPSctYXIgLW8nCisJCUNYWF9BUkZMQUdTPSctYXIgLW8nCiAJICAgIGZpCiAJICAgIDs7Ci0Jc2NvMy4ydjUqKSAjKHZpCisJKHNjbzMuMnY1KikKIAkgICAgQ1hYTERGTEFHUz0iLXUgbWFpbiIKIAkgICAgOzsKLQlzb2xhcmlzMiopCisJKHNvbGFyaXMyKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgIT0geWVzIDsgdGhlbgogCQlDWFhfQVI9JyQoQ1hYKScKLQkJQ1hYX0FSX09QVFM9Jy14YXIgLW8nCisJCUNYWF9BUkZMQUdTPScteGFyIC1vJwogCSAgICBmaQogCSAgICA7OwogCWVzYWMKQEAgLTE1NzQ3LDcgKzIwNDQyLDcgQEAKIAllbHNlCiAJCWlmIHRlc3QgIiRjZl9jdl9oZWFkZXJfc3RkYm9vbF9oIiA9IDEgOyB0aGVuCiAKLWVjaG8gIiRhc19tZToxNTc1MDogY2hlY2tpbmcgZm9yIHNpemUgb2YgYm9vbCIgPiY1CitlY2hvICIkYXNfbWU6MjA0NDU6IGNoZWNraW5nIGZvciBzaXplIG9mIGJvb2wiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc2l6ZSBvZiBib29sLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHtjZl9jdl90eXBlX29mX2Jvb2wrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTE1NzU4LDcgKzIwNDUzLDcgQEAKICAgY2ZfY3ZfdHlwZV9vZl9ib29sPXVua25vd24KIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAxNTc2MSAiY29uZmlndXJlIgorI2xpbmUgMjA0NTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0xNTc4Miw3ICsyMDQ3Nyw3IEBACiAKICNlbmRpZgogCi1tYWluKCkKK2ludCBtYWluKCkKIHsKIAlGSUxFICpmcCA9IGZvcGVuKCJjZl90ZXN0Lm91dCIsICJ3Iik7CiAJaWYgKGZwICE9IDApIHsKQEAgLTE1ODAwLDE1ICsyMDQ5NSwxNSBAQAogCiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU4MDM6IFwiJGFjX2xpbmtcIiIpID4mNQoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA0OTg6IFwiJGFjX2xpbmtcIiIpID4mNQogICAoZXZhbCAkYWNfbGluaykgMj4mNQogICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOjE1ODA2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwNTAxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IChldmFsIGVjaG8gIiRhc19tZToxNTgwODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA1MDM6IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZToxNTgxMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDUwNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgIGNmX2N2X3R5cGVfb2ZfYm9vbD1gY2F0IGNmX3Rlc3Qub3V0YAogCQkgaWYgdGVzdCAteiAiJGNmX2N2X3R5cGVfb2ZfYm9vbCI7IHRoZW4KQEAgLTE1ODI2LDI1ICsyMDUyMSwyNSBAQAogZmkKIAogCXJtIC1mIGNmX3Rlc3Qub3V0Ci1lY2hvICIkYXNfbWU6MTU4Mjk6IHJlc3VsdDogJGNmX2N2X3R5cGVfb2ZfYm9vbCIgPiY1CitlY2hvICIkYXNfbWU6MjA1MjQ6IHJlc3VsdDogJGNmX2N2X3R5cGVfb2ZfYm9vbCIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdHlwZV9vZl9ib29sIiA+JjYKIGlmIHRlc3QgIiRjZl9jdl90eXBlX29mX2Jvb2wiID0gdW5rbm93biA7IHRoZW4KLQljYXNlIC4kTkNVUlNFU19CT09MIGluICModmkKLQkuYXV0b3wuKSBOQ1VSU0VTX0JPT0w9dW5zaWduZWQ7OworCWNhc2UgLiROQ1VSU0VTX0JPT0wgaW4KKwkoLmF1dG98LikgTkNVUlNFU19CT09MPXVuc2lnbmVkOzsKIAllc2FjCi0JeyBlY2hvICIkYXNfbWU6MTU4MzU6IFdBUk5JTkc6IEFzc3VtaW5nICROQ1VSU0VTX0JPT0wgZm9yIHR5cGUgb2YgYm9vbCIgPiY1CisJeyBlY2hvICIkYXNfbWU6MjA1MzA6IFdBUk5JTkc6IEFzc3VtaW5nICROQ1VSU0VTX0JPT0wgZm9yIHR5cGUgb2YgYm9vbCIgPiY1CiBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IEFzc3VtaW5nICROQ1VSU0VTX0JPT0wgZm9yIHR5cGUgb2YgYm9vbCIgPiYyO30KIAljZl9jdl90eXBlX29mX2Jvb2w9JE5DVVJTRVNfQk9PTAogZmkKIAogCQllbHNlCi0JCQllY2hvICIkYXNfbWU6MTU4NDE6IGNoZWNraW5nIGZvciBmYWxsYmFjayB0eXBlIG9mIGJvb2wiID4mNQorCQkJZWNobyAiJGFzX21lOjIwNTM2OiBjaGVja2luZyBmb3IgZmFsbGJhY2sgdHlwZSBvZiBib29sIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGZhbGxiYWNrIHR5cGUgb2YgYm9vbC4uLiAkRUNIT19DIiA+JjYKLQkJCWNhc2UgIiRob3N0X2NwdSIgaW4gIyh2aQotCQkJaT84NikJY2ZfY3ZfdHlwZV9vZl9ib29sPWNoYXIJOzsgIyh2aQotCQkJKikJY2ZfY3ZfdHlwZV9vZl9ib29sPWludAk7OworCQkJY2FzZSAiJGhvc3RfY3B1IiBpbgorCQkJKGk/ODYpCWNmX2N2X3R5cGVfb2ZfYm9vbD1jaGFyCTs7CisJCQkoKikJY2ZfY3ZfdHlwZV9vZl9ib29sPWludAk7OwogCQkJZXNhYwotCQkJZWNobyAiJGFzX21lOjE1ODQ3OiByZXN1bHQ6ICRjZl9jdl90eXBlX29mX2Jvb2wiID4mNQorCQkJZWNobyAiJGFzX21lOjIwNTQyOiByZXN1bHQ6ICRjZl9jdl90eXBlX29mX2Jvb2wiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3R5cGVfb2ZfYm9vbCIgPiY2CiAJCWZpCiAJZmkKQEAgLTE1ODcxLDE5ICsyMDU2NiwyMCBAQAogCiBpZiB0ZXN0IC1mICIke3NyY2Rpcn0vQWRhOTUvTWFrZWZpbGUuaW4iIDsgdGhlbgogCi1pZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCi0gICAgaWYgdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gIm5vIjsgdGhlbgotCXsgZWNobyAiJGFzX21lOjE1ODc2OiBXQVJOSU5HOiBsaWJ0b29sIGRvZXMgbm90IHN1cHBvcnQgQWRhIC0gZGlzYWJsaW5nIGZlYXR1cmUiID4mNQorCWlmIHRlc3QgIiRjZl93aXRoX2FkYSIgIT0gIm5vIiA7IHRoZW4KKwkJaWYgdGVzdCAiJHdpdGhfbGlidG9vbCIgIT0gIm5vIjsgdGhlbgorCQkJeyBlY2hvICIkYXNfbWU6MjA1NzE6IFdBUk5JTkc6IGxpYnRvb2wgZG9lcyBub3Qgc3VwcG9ydCBBZGEgLSBkaXNhYmxpbmcgZmVhdHVyZSIgPiY1CiBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IGxpYnRvb2wgZG9lcyBub3Qgc3VwcG9ydCBBZGEgLSBkaXNhYmxpbmcgZmVhdHVyZSIgPiYyO30KLQljZl93aXRoX2FkYT1ubwotICAgIGZpCi1maQorCQkJY2Zfd2l0aF9hZGE9bm8KKwkJZmkKKwlmaQogCi1pZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCisJaWYgdGVzdCAiJGNmX3dpdGhfYWRhIiAhPSAibm8iIDsgdGhlbgorCiBjZl9hZGFfbWFrZT1nbmF0bWFrZQogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkY2ZfYWRhX21ha2UiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICRjZl9hZGFfbWFrZTsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjE1ODg2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiJGFzX21lOjIwNTgyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfZ25hdF9leGlzdHMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKQEAgLTE1ODk4LDcgKzIwNTk0LDcgQEAKICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKIGFjX2N2X3Byb2dfZ25hdF9leGlzdHM9InllcyIKLWVjaG8gIiRhc19tZToxNTkwMTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CitlY2hvICIkYXNfbWU6MjA1OTc6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQogYnJlYWsKIGRvbmUKIApAQCAtMTU5MDcsNDUgKzIwNjAzLDQwIEBACiBmaQogZ25hdF9leGlzdHM9JGFjX2N2X3Byb2dfZ25hdF9leGlzdHMKIGlmIHRlc3QgLW4gIiRnbmF0X2V4aXN0cyI7IHRoZW4KLSAgZWNobyAiJGFzX21lOjE1OTEwOiByZXN1bHQ6ICRnbmF0X2V4aXN0cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDYwNjogcmVzdWx0OiAkZ25hdF9leGlzdHMiID4mNQogZWNobyAiJHtFQ0hPX1R9JGduYXRfZXhpc3RzIiA+JjYKIGVsc2UKLSAgZWNobyAiJGFzX21lOjE1OTEzOiByZXN1bHQ6IG5vIiA+JjUKKyAgZWNobyAiJGFzX21lOjIwNjA5OiByZXN1bHQ6IG5vIiA+JjUKIGVjaG8gIiR7RUNIT19UfW5vIiA+JjYKIGZpCiAKIGlmIHRlc3QgIiRhY19jdl9wcm9nX2duYXRfZXhpc3RzIiA9IG5vOyB0aGVuCi0gICBjZl9hZGFfbWFrZT0KKwljZl9hZGFfbWFrZT0KKwljZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubwogZWxzZQogCi1lY2hvICIkYXNfbWU6MTU5MjE6IGNoZWNraW5nIGZvciBnbmF0IHZlcnNpb24iID4mNQorZWNobyAiJGFzX21lOjIwNjE4OiBjaGVja2luZyBmb3IgZ25hdCB2ZXJzaW9uIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGduYXQgdmVyc2lvbi4uLiAkRUNIT19DIiA+JjYKLWNmX2duYXRfdmVyc2lvbj1gJHtjZl9hZGFfbWFrZS1nbmF0bWFrZX0gLXYgMj4mMSB8IGdyZXAgJ1swLTldLlswLTldWzAtOV0qJyB8XAotICBzZWQgLWUgJzIsJGQnIC1lICdzL1teMC05IFwuXS8vZycgLWUgJ3MvXlsgXSovLycgLWUgJ3MvIC4qLy8nYAotZWNobyAiJGFzX21lOjE1OTI1OiByZXN1bHQ6ICRjZl9nbmF0X3ZlcnNpb24iID4mNQorY2ZfZ25hdF92ZXJzaW9uPWAke2NmX2FkYV9tYWtlOi1nbmF0bWFrZX0gLXYgMj4mMSB8IFwKKwlncmVwICdbMC05XS5bMC05XVswLTldKicgfFwKKwlzZWQgLWUgJzIsJGQnIC1lICdzL1teMC05IFwuXS8vZycgLWUgJ3MvXlsgXSovLycgLWUgJ3MvIC4qLy8nYAorZWNobyAiJGFzX21lOjIwNjIzOiByZXN1bHQ6ICRjZl9nbmF0X3ZlcnNpb24iID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfdmVyc2lvbiIgPiY2CiAKIGNhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgotICAzLjFbMS05XSp8My5bMi05XSp8WzQtOV0uKikKLSAgICBjZl9jdl9wcm9nX2duYXRfY29ycmVjdD15ZXMKLSAgICA7OwotICAqKSBlY2hvIFVuc3VwcG9ydGVkIEdOQVQgdmVyc2lvbiAkY2ZfZ25hdF92ZXJzaW9uLiBSZXF1aXJlZCBpcyAzLjExIG9yIGJldHRlci4gRGlzYWJsaW5nIEFkYTk1IGJpbmRpbmcuCi0gICAgIGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCi0gICAgIDs7Ci1lc2FjCi1jYXNlICRjZl9nbmF0X3ZlcnNpb24gaW4KLSAgMy5bMS05XSp8WzQtOV0uKikKLSAgICAgIGNmX2NvbXBpbGVfZ2VuZXJpY3M9Z2VuZXJpY3MKLSAgICAgIGNmX2dlbmVyaWNfb2JqZWN0cz0iXCR7R0VOT0JKU30iCi0gICAgICA7OwotICAqKSAgY2ZfY29tcGlsZV9nZW5lcmljcz0KLSAgICAgIGNmX2dlbmVyaWNfb2JqZWN0cz0KLSAgICAgIDs7CisoMy4xWzEtOV0qfDMuWzItOV0qfFs0LTldLip8MjBbMC05XVswLTldKQorCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PXllcworCTs7CisoKikKKwl7IGVjaG8gIiRhc19tZToyMDYzMTogV0FSTklORzogVW5zdXBwb3J0ZWQgR05BVCB2ZXJzaW9uICRjZl9nbmF0X3ZlcnNpb24uIFdlIHJlcXVpcmUgMy4xMSBvciBiZXR0ZXIuIERpc2FibGluZyBBZGE5NSBiaW5kaW5nLiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuc3VwcG9ydGVkIEdOQVQgdmVyc2lvbiAkY2ZfZ25hdF92ZXJzaW9uLiBXZSByZXF1aXJlIDMuMTEgb3IgYmV0dGVyLiBEaXNhYmxpbmcgQWRhOTUgYmluZGluZy4iID4mMjt9CisJY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm8KKwk7OwogZXNhYwogCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm00Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKwkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm00Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBtNDsgYWNfd29yZD0kMgotZWNobyAiJGFzX21lOjE1OTQ4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiJGFzX21lOjIwNjM5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTTRfZXhpc3RzK3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CkBAIC0xNTk2MCw3ICsyMDY1MSw3IEBACiAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCiBhY19jdl9wcm9nX000X2V4aXN0cz0ieWVzIgotZWNobyAiJGFzX21lOjE1OTYzOiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2VjaG8gIiRhc19tZToyMDY1NDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiBicmVhawogZG9uZQogCkBAIC0xNTk2OSwyMiArMjA2NjAsMjIgQEAKIGZpCiBNNF9leGlzdHM9JGFjX2N2X3Byb2dfTTRfZXhpc3RzCiBpZiB0ZXN0IC1uICIkTTRfZXhpc3RzIjsgdGhlbgotICBlY2hvICIkYXNfbWU6MTU5NzI6IHJlc3VsdDogJE00X2V4aXN0cyIgPiY1CisgIGVjaG8gIiRhc19tZToyMDY2MzogcmVzdWx0OiAkTTRfZXhpc3RzIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRNNF9leGlzdHMiID4mNgogZWxzZQotICBlY2hvICIkYXNfbWU6MTU5NzU6IHJlc3VsdDogbm8iID4mNQorICBlY2hvICIkYXNfbWU6MjA2NjY6IHJlc3VsdDogbm8iID4mNQogZWNobyAiJHtFQ0hPX1R9bm8iID4mNgogZmkKIAotICAgaWYgdGVzdCAiJGFjX2N2X3Byb2dfTTRfZXhpc3RzIiA9IG5vOyB0aGVuCi0gICAgICBjZl9jdl9wcm9nX2duYXRfY29ycmVjdD1ubwotICAgICAgZWNobyBBZGE5NSBiaW5kaW5nIHJlcXVpcmVkIHByb2dyYW0gbTQgbm90IGZvdW5kLiBBZGE5NSBiaW5kaW5nIGRpc2FibGVkLgotICAgZmkKLSAgIGlmIHRlc3QgIiRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB5ZXM7IHRoZW4KLSAgICAgIGVjaG8gIiRhc19tZToxNTk4NDogY2hlY2tpbmcgaWYgR05BVCB3b3JrcyIgPiY1CisJaWYgdGVzdCAiJGFjX2N2X3Byb2dfTTRfZXhpc3RzIiA9IG5vOyB0aGVuCisJCWNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCisJCWVjaG8gQWRhOTUgYmluZGluZyByZXF1aXJlZCBwcm9ncmFtIG00IG5vdCBmb3VuZC4gQWRhOTUgYmluZGluZyBkaXNhYmxlZC4KKwlmaQorCWlmIHRlc3QgIiRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB5ZXM7IHRoZW4KKwkJZWNobyAiJGFzX21lOjIwNjc1OiBjaGVja2luZyBpZiBHTkFUIHdvcmtzIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgR05BVCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKIAotcm0gLWYgY29uZnRlc3QqCitybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCiBjYXQgPj5jb25mdGVzdC5hZHMgPDxDRl9FT0YKIHByb2NlZHVyZSBjb25mdGVzdDsKIENGX0VPRgpAQCAtMTYwMDcsNTEgKzIwNjk4LDIyNCBAQAogZWxzZQogICAgY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm8KIGZpCi1ybSAtZiBjb25mdGVzdCoKK3JtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKIAotICAgICAgZWNobyAiJGFzX21lOjE2MDEyOiByZXN1bHQ6ICRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPiY1CisJCWVjaG8gIiRhc19tZToyMDcwMzogcmVzdWx0OiAkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID4mNQogZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA+JjYKLSAgIGZpCisJZmkKIGZpCi1pZiB0ZXN0CSIkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0geWVzOyB0aGVuCi0gICBBREFGTEFHUz0iLU8zIC1nbmF0cG4gJEFEQUZMQUdTIgogCi0gICBlY2hvICIkYXNfbWU6MTYwMTk6IGNoZWNraW5nIGlmIEdOQVQgcHJhZ21hIFVucmVmZXJlbmNlZCB3b3JrcyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgcHJhZ21hIFVucmVmZXJlbmNlZCB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKKwkJaWYgdGVzdAkieCRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB4eWVzOyB0aGVuCiAKLXJtIC1mIGNvbmZ0ZXN0KgorIAlBREFGTEFHUz0iJEFEQUZMQUdTIC1nbmF0cG4iCisKKwllY2hvICIkYXNfbWU6MjA3MTI6IGNoZWNraW5nIG9wdGltaXphdGlvbiBvcHRpb25zIGZvciBBREFGTEFHUyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIG9wdGltaXphdGlvbiBvcHRpb25zIGZvciBBREFGTEFHUy4uLiAkRUNIT19DIiA+JjYKKwljYXNlICIkQ0ZMQUdTIiBpbgorCSgqLWcqKQorCisgCUFEQUZMQUdTPSIkQURBRkxBR1MgLWciCisKKwkJOzsKKwllc2FjCisJY2FzZSAiJENGTEFHUyIgaW4KKwkoKi1PKikKKwkJY2ZfT19mbGFnPWBlY2hvICIkQ0ZMQUdTIiB8c2VkIC1lICdzL14uKi1PLy1PLycgLWUgJ3MvWyAJXS4qLy8nYAorCisgCUFEQUZMQUdTPSIkQURBRkxBR1MgJGNmX09fZmxhZyIKKworCQk7OworCWVzYWMKKwllY2hvICIkYXNfbWU6MjA3Mjk6IHJlc3VsdDogJEFEQUZMQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBREFGTEFHUyIgPiY2CisKK2VjaG8gIiRhc19tZToyMDczMjogY2hlY2tpbmcgaWYgR05BVFBSRVAgc3VwcG9ydHMgLVQgb3B0aW9uIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgR05BVFBSRVAgc3VwcG9ydHMgLVQgb3B0aW9uLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9nbmF0cHJlcF9vcHRfdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjZl9jdl9nbmF0cHJlcF9vcHRfdD1ubworZ25hdHByZXAgLVQgMj4vZGV2L251bGwgPi9kZXYvbnVsbCAmJiBjZl9jdl9nbmF0cHJlcF9vcHRfdD15ZXMKKworZmkKK2VjaG8gIiRhc19tZToyMDc0MjogcmVzdWx0OiAkY2ZfY3ZfZ25hdHByZXBfb3B0X3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2duYXRwcmVwX29wdF90IiA+JjYKK3Rlc3QgIiRjZl9jdl9nbmF0cHJlcF9vcHRfdCIgPSB5ZXMgJiYgR05BVFBSRVBfT1BUUz0iLVQgJEdOQVRQUkVQX09QVFMiCisKK2VjaG8gIiRhc19tZToyMDc0NjogY2hlY2tpbmcgaWYgR05BVCBzdXBwb3J0cyBnZW5lcmljcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgZ2VuZXJpY3MuLi4gJEVDSE9fQyIgPiY2CitjYXNlICRjZl9nbmF0X3ZlcnNpb24gaW4KKygzLlsxLTldKnxbNC05XS4qKQorCWNmX2duYXRfZ2VuZXJpY3M9eWVzCisJOzsKKygqKQorCWNmX2duYXRfZ2VuZXJpY3M9bm8KKwk7OworZXNhYworZWNobyAiJGFzX21lOjIwNzU2OiByZXN1bHQ6ICRjZl9nbmF0X2dlbmVyaWNzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9nbmF0X2dlbmVyaWNzIiA+JjYKKworaWYgdGVzdCAiJGNmX2duYXRfZ2VuZXJpY3MiID0geWVzCit0aGVuCisJY2ZfY29tcGlsZV9nZW5lcmljcz1nZW5lcmljcworCWNmX2dlbmVyaWNfb2JqZWN0cz0iXCR7R0VOT0JKU30iCitlbHNlCisJY2ZfY29tcGlsZV9nZW5lcmljcz0KKwljZl9nZW5lcmljX29iamVjdHM9CitmaQorCitlY2hvICIkYXNfbWU6MjA3Njg6IGNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgU0lHSU5UIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgR05BVCBzdXBwb3J0cyBTSUdJTlQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2duYXRfc2lnaW50K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK3JtIC1yZiBjb25mdGVzdCogKn5jb25mdGVzdCoKIGNhdCA+PmNvbmZ0ZXN0LmFkcyA8PENGX0VPRgotcHJvY2VkdXJlIGNvbmZ0ZXN0Oword2l0aCBBZGEuSW50ZXJydXB0cy5OYW1lczsKKworcGFja2FnZSBDb25mVGVzdCBpcworCisgICBwcmFnbWEgV2FybmluZ3MgKE9mZik7ICAtLSAgdGhlIG5leHQgcHJhZ21hIGV4aXN0cyBzaW5jZSAzLjExcAorICAgcHJhZ21hIFVucmVzZXJ2ZV9BbGxfSW50ZXJydXB0czsKKyAgIHByYWdtYSBXYXJuaW5ncyAoT24pOworCisgICBwcm90ZWN0ZWQgUHJvY2VzcyBpcworICAgICAgcHJvY2VkdXJlIFN0b3A7CisgICAgICBmdW5jdGlvbiBDb250aW51ZSByZXR1cm4gQm9vbGVhbjsKKyAgICAgIHByYWdtYSBBdHRhY2hfSGFuZGxlciAoU3RvcCwgQWRhLkludGVycnVwdHMuTmFtZXMuU0lHSU5UKTsKKyAgIHByaXZhdGUKKyAgICAgIERvbmUgOiBCb29sZWFuIDo9IEZhbHNlOworICAgZW5kIFByb2Nlc3M7CisKK2VuZCBDb25mVGVzdDsKIENGX0VPRgogY2F0ID4+Y29uZnRlc3QuYWRiIDw8Q0ZfRU9GCi13aXRoIFRleHRfSU87Ci13aXRoIEdOQVQuT1NfTGliOwotcHJvY2VkdXJlIGNvbmZ0ZXN0IGlzCi0gICB0ZXN0IDogSW50ZWdlcjsKLSAgIHByYWdtYSBVbnJlZmVyZW5jZWQgKHRlc3QpOwotYmVnaW4KLSAgIHRlc3QgOj0gMTsKLSAgIFRleHRfSU8uUHV0ICgiSGVsbG8gV29ybGQiKTsKLSAgIFRleHRfSU8uTmV3X0xpbmU7Ci0gICBHTkFULk9TX0xpYi5PU19FeGl0ICgwKTsKLWVuZCBjb25mdGVzdDsKK3BhY2thZ2UgYm9keSBDb25mVGVzdCBpcworICAgcHJvdGVjdGVkIGJvZHkgUHJvY2VzcyBpcworICAgICAgcHJvY2VkdXJlIFN0b3AgaXMKKyAgICAgIGJlZ2luCisgICAgICAgICBEb25lIDo9IFRydWU7CisgICAgICBlbmQgU3RvcDsKKyAgICAgIGZ1bmN0aW9uIENvbnRpbnVlIHJldHVybiBCb29sZWFuIGlzCisgICAgICBiZWdpbgorICAgICAgICAgcmV0dXJuIG5vdCBEb25lOworICAgICAgZW5kIENvbnRpbnVlOworICAgZW5kIFByb2Nlc3M7CitlbmQgQ29uZlRlc3Q7CiBDRl9FT0YKIGlmICggJGNmX2FkYV9tYWtlICRBREFGTEFHUyBjb25mdGVzdCAxPiY1IDI+JjEgKSA7IHRoZW4KLSAgICAgIGNmX2N2X3ByYWdtYV91bnJlZmVyZW5jZWQ9eWVzCisgICAgICBjZl9jdl9nbmF0X3NpZ2ludD15ZXMKIGVsc2UKLSAgIGNmX2N2X3ByYWdtYV91bnJlZmVyZW5jZWQ9bm8KKyAgIGNmX2N2X2duYXRfc2lnaW50PW5vCiBmaQotcm0gLWYgY29uZnRlc3QqCitybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCiAKLSAgIGVjaG8gIiRhc19tZToxNjA0NjogcmVzdWx0OiAkY2ZfY3ZfcHJhZ21hX3VucmVmZXJlbmNlZCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kY2ZfY3ZfcHJhZ21hX3VucmVmZXJlbmNlZCIgPiY2CitmaQorZWNobyAiJGFzX21lOjIwODE2OiByZXN1bHQ6ICRjZl9jdl9nbmF0X3NpZ2ludCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ25hdF9zaWdpbnQiID4mNgogCi0gICAjIGlmIHRoZSBwcmFnbWEgaXMgc3VwcG9ydGVkLCB1c2UgaXQgKG5lZWRlZCBpbiB0aGUgVHJhY2UgY29kZSkuCi0gICBpZiB0ZXN0ICRjZl9jdl9wcmFnbWFfdW5yZWZlcmVuY2VkID0geWVzIDsgdGhlbgotICAgICAgUFJBR01BX1VOUkVGPVRSVUUKLSAgIGVsc2UKLSAgICAgIFBSQUdNQV9VTlJFRj1GQUxTRQotICAgZmkKK2lmIHRlc3QgJGNmX2N2X2duYXRfc2lnaW50ID0geWVzIDsgdGhlbgorCVVTRV9HTkFUX1NJR0lOVD0iIgorZWxzZQorCVVTRV9HTkFUX1NJR0lOVD0iIyIKK2ZpCisKK2NmX2duYXRfbGlicmFyaWVzPW5vCitjZl9nbmF0X3Byb2plY3RzPW5vCisKK2lmIHRlc3QgIiRlbmFibGVfZ25hdF9wcm9qZWN0cyIgIT0gbm8gOyB0aGVuCitlY2hvICIkYXNfbWU6MjA4Mjk6IGNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgcHJvamVjdCBmaWxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgcHJvamVjdCBmaWxlcy4uLiAkRUNIT19DIiA+JjYKK2Nhc2UgJGNmX2duYXRfdmVyc2lvbiBpbgorKDMuWzAtOV0qKQorCTs7CisoKikKKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShjeWd3aW4qfG1zeXMqKQorCQk7OworCSgqKQorCQlta2RpciBjb25mdGVzdC5zcmMgY29uZnRlc3QuYmluIGNvbmZ0ZXN0LmxpYgorCQljZCBjb25mdGVzdC5zcmMKKwkJcm0gLXJmIGNvbmZ0ZXN0KiAqfmNvbmZ0ZXN0KgorCQljYXQgPj5saWJyYXJ5LmdwciA8PENGX0VPRgorcHJvamVjdCBMaWJyYXJ5IGlzCisgIEtpbmQgOj0gRXh0ZXJuYWwgKCJMSUJfS0lORCIpOworICBmb3IgTGlicmFyeV9OYW1lIHVzZSAiQ29uZlRlc3QiOworICBmb3IgT2JqZWN0X0RpciB1c2UgIi4iOworICBmb3IgTGlicmFyeV9BTElfRGlyIHVzZSBFeHRlcm5hbCgiTElCUkFSWV9ESVIiKTsKKyAgZm9yIExpYnJhcnlfVmVyc2lvbiB1c2UgRXh0ZXJuYWwgKCJTT05BTUUiKTsKKyAgZm9yIExpYnJhcnlfS2luZCB1c2UgS2luZDsKKyAgZm9yIExpYnJhcnlfRGlyIHVzZSBFeHRlcm5hbCgiQlVJTERfRElSIik7CisgIFNvdXJjZV9EaXIgOj0gRXh0ZXJuYWwgKCJTT1VSQ0VfRElSIik7CisgIGZvciBTb3VyY2VfRGlycyB1c2UgKFNvdXJjZV9EaXIpOworZW5kIExpYnJhcnk7CitDRl9FT0YKKwkJY2F0ID4+Y29uZnBhY2thZ2UuYWRzIDw8Q0ZfRU9GCitwYWNrYWdlIENvbmZQYWNrYWdlIGlzCisgICBwcm9jZWR1cmUgY29uZnRlc3Q7CitlbmQgQ29uZlBhY2thZ2U7CitDRl9FT0YKKwkJY2F0ID4+Y29uZnBhY2thZ2UuYWRiIDw8Q0ZfRU9GCit3aXRoIFRleHRfSU87CitwYWNrYWdlIGJvZHkgQ29uZlBhY2thZ2UgaXMKKyAgIHByb2NlZHVyZSBjb25mdGVzdCBpcworICAgYmVnaW4KKyAgICAgIFRleHRfSU8uUHV0ICgiSGVsbG8gV29ybGQiKTsKKyAgICAgIFRleHRfSU8uTmV3X0xpbmU7CisgICBlbmQgY29uZnRlc3Q7CitlbmQgQ29uZlBhY2thZ2U7CitDRl9FT0YKKwkJaWYgKCAkY2ZfYWRhX21ha2UgJEFEQUZMQUdTIFwKKwkJCQktUGxpYnJhcnkuZ3ByIFwKKwkJCQktWEJVSUxEX0RJUj1gY2QgLi4vY29uZnRlc3QuYmluO3B3ZGAgXAorCQkJCS1YTElCUkFSWV9ESVI9YGNkIC4uL2NvbmZ0ZXN0LmxpYjtwd2RgIFwKKwkJCQktWFNPVVJDRV9ESVI9YHB3ZGAgXAorCQkJCS1YU09OQU1FPWxpYkNvbmZUZXN0LnNvLjEgXAorCQkJCS1YTElCX0tJTkQ9c3RhdGljIDE+JjUgMj4mMSApIDsgdGhlbgorCQkJY2ZfZ25hdF9wcm9qZWN0cz15ZXMKKwkJZmkKKwkJY2QgLi4KKwkJaWYgdGVzdCAtZiBjb25mdGVzdC5saWIvY29uZnBhY2thZ2UuYWxpCisJCXRoZW4KKwkJCWNmX2duYXRfbGlicmFyaWVzPXllcworCQlmaQorCQlybSAtcmYgY29uZnRlc3QqICp+Y29uZnRlc3QqCisJCTs7CisJZXNhYworCTs7Citlc2FjCitlY2hvICIkYXNfbWU6MjA4ODk6IHJlc3VsdDogJGNmX2duYXRfcHJvamVjdHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfcHJvamVjdHMiID4mNgorZmkgIyBlbmFibGVfZ25hdF9wcm9qZWN0cworCitpZiB0ZXN0ICRjZl9nbmF0X3Byb2plY3RzID0geWVzCit0aGVuCisJZWNobyAiJGFzX21lOjIwODk1OiBjaGVja2luZyBpZiBHTkFUIHN1cHBvcnRzIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIEdOQVQgc3VwcG9ydHMgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorCWVjaG8gIiRhc19tZToyMDg5NzogcmVzdWx0OiAkY2ZfZ25hdF9saWJyYXJpZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2duYXRfbGlicmFyaWVzIiA+JjYKK2ZpCisKK2lmIHRlc3QgIiRjZl9nbmF0X3Byb2plY3RzIiA9IHllcwordGhlbgorCVVTRV9PTERfTUFLRVJVTEVTPSIjIgorCVVTRV9HTkFUX1BST0pFQ1RTPSIiCitlbHNlCisJVVNFX09MRF9NQUtFUlVMRVM9IiIKKwlVU0VfR05BVF9QUk9KRUNUUz0iIyIKK2ZpCisKK2lmIHRlc3QgIiRjZl9nbmF0X2xpYnJhcmllcyIgPSB5ZXMKK3RoZW4KKwlVU0VfR05BVF9MSUJSQVJJRVM9IiIKK2Vsc2UKKwlVU0VfR05BVF9MSUJSQVJJRVM9IiMiCitmaQorCitlY2hvICIkYXNfbWU6MjA5MTc6IGNoZWNraW5nIGZvciBhZGEtY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWRhLWNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1jb21waWxlciBvciAtLXdpdGhvdXQtYWRhLWNvbXBpbGVyIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9hZGFfY29tcGlsZXIrc2V0fSIgPSBzZXQ7IHRoZW4KQEAgLTE2MDYxLDk2ICsyMDkyNSwzNzcgQEAKICAgY2ZfYWRhX2NvbXBpbGVyPWduYXRtYWtlCiBmaTsKIAotICAgY2ZfYWRhX3BhY2thZ2U9dGVybWluYWxfaW50ZXJmYWNlCitlY2hvICIkYXNfbWU6MjA5Mjg6IHJlc3VsdDogJGNmX2FkYV9jb21waWxlciIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfYWRhX2NvbXBpbGVyIiA+JjYKKworCQkJY2ZfYWRhX3BhY2thZ2U9dGVybWluYWxfaW50ZXJmYWNlCisKK2VjaG8gIiRhc19tZToyMDkzMzogY2hlY2tpbmcgZm9yIGFkYS1pbmNsdWRlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFkYS1pbmNsdWRlLi4uICRFQ0hPX0MiID4mNgogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1pbmNsdWRlIG9yIC0td2l0aG91dC1hZGEtaW5jbHVkZSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfYWRhX2luY2x1ZGUrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfYWRhX2luY2x1ZGUiCiAKIGVsc2UKLSAgd2l0aHZhbD0iJHtBREFfSU5DTFVERS0kcHJlZml4L2xpYi9hZGEvYWRhaW5jbHVkZX0iCi1maTsgaWYgdGVzdCAtbiAiJHByZWZpeC9saWIvYWRhL2FkYWluY2x1ZGUiIDsgdGhlbgorICB3aXRodmFsPSIke0FEQV9JTkNMVURFOi0kcHJlZml4L3NoYXJlL2FkYS9hZGFpbmNsdWRlfSIKK2ZpOyBpZiB0ZXN0IC1uICIkcHJlZml4L3NoYXJlL2FkYS9hZGFpbmNsdWRlIiA7IHRoZW4KIAogaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCi0gIGNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgogZWxzZQotICBjZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCiBmaQogCi1jYXNlICIuJHdpdGh2YWwiIGluICModmkKLS5cJFwoKlwpKnwuXCcqXCcqKSAjKHZpCi0gIDs7Ci0uLnwuLyp8LlxcKikgIyh2aQotICA7OwotLlthLXpBLVpdOltcXC9dKikgIyh2aSBPUy8yIEVNWAotICA7OwotLlwkeypwcmVmaXh9KikgIyh2aQotICBldmFsIHdpdGh2YWw9IiR3aXRodmFsIgotICBjYXNlICIuJHdpdGh2YWwiIGluICModmkKLSAgLk5PTkUvKikKLSAgICB3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAotICAgIDs7Ci0gIGVzYWMKLSAgOzsgIyh2aQotLm5vfC5OT05FLyopCi0gIHdpdGh2YWw9YGVjaG8gJHdpdGh2YWwgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCi0gIDs7Ci0qKQotICB7IHsgZWNobyAiJGFzX21lOjE2MDk5OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiY1CitjYXNlICIuJHdpdGh2YWwiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGh2YWw9IiR3aXRodmFsIgorCWNhc2UgIi4kd2l0aHZhbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjIwOTY5OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0gIDs7CisJOzsKIGVzYWMKIAogZmkKLUFEQV9JTkNMVURFPSIkd2l0aHZhbCIKK2V2YWwgQURBX0lOQ0xVREU9IiR3aXRodmFsIgorCitlY2hvICIkYXNfbWU6MjA5Nzg6IHJlc3VsdDogJEFEQV9JTkNMVURFIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBREFfSU5DTFVERSIgPiY2CisKK2VjaG8gIiRhc19tZToyMDk4MTogY2hlY2tpbmcgZm9yIGFkYS1vYmplY3RzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFkYS1vYmplY3RzLi4uICRFQ0hPX0MiID4mNgogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1vYmplY3RzIG9yIC0td2l0aG91dC1hZGEtb2JqZWN0cyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfYWRhX29iamVjdHMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfYWRhX29iamVjdHMiCiAKIGVsc2UKLSAgd2l0aHZhbD0iJHtBREFfT0JKRUNUUy0kcHJlZml4L2xpYi9hZGEvYWRhbGlifSIKKyAgd2l0aHZhbD0iJHtBREFfT0JKRUNUUzotJHByZWZpeC9saWIvYWRhL2FkYWxpYn0iCiBmaTsgaWYgdGVzdCAtbiAiJHByZWZpeC9saWIvYWRhL2FkYWxpYiIgOyB0aGVuCiAKIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBjZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKKwljZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKIGVsc2UKLSAgY2ZfcGF0aF9zeW50YXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKwljZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgogZmkKIAotY2FzZSAiLiR3aXRodmFsIiBpbiAjKHZpCi0uXCRcKCpcKSp8LlwnKlwnKikgIyh2aQotICA7OwotLi58Li8qfC5cXCopICModmkKLSAgOzsKLS5bYS16QS1aXTpbXFwvXSopICModmkgT1MvMiBFTVgKLSAgOzsKLS5cJHsqcHJlZml4fSopICModmkKLSAgZXZhbCB3aXRodmFsPSIkd2l0aHZhbCIKLSAgY2FzZSAiLiR3aXRodmFsIiBpbiAjKHZpCi0gIC5OT05FLyopCi0gICAgd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKLSAgICA7OwotICBlc2FjCi0gIDs7ICModmkKLS5ub3wuTk9ORS8qKQotICB3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAotICA7OwotKikKLSAgeyB7IGVjaG8gIiRhc19tZToxNjE0MTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mNQorY2FzZSAiLiR3aXRodmFsIiBpbgorKC5cJFwoKlwpKnwuXCcqXCcqKQorCTs7CisoLi58Li8qfC5cXCopCisJOzsKKyguW2EtekEtWl06W1xcL10qKSAjIE9TLzIgRU1YCisJOzsKKyguXCR7KnByZWZpeH0qfC5cJHsqZGlyfSopCisJZXZhbCB3aXRodmFsPSIkd2l0aHZhbCIKKwljYXNlICIuJHdpdGh2YWwiIGluCisJKC5OT05FLyopCisJCXdpdGh2YWw9YGVjaG8gJHdpdGh2YWwgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJCTs7CisJZXNhYworCTs7CisoLm5vfC5OT05FLyopCisJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJeyB7IGVjaG8gIiRhc19tZToyMTAxNzogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJHdpdGh2YWxcIiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotICA7OworCTs7CiBlc2FjCiAKIGZpCi1BREFfT0JKRUNUUz0iJHdpdGh2YWwiCitldmFsIEFEQV9PQkpFQ1RTPSIkd2l0aHZhbCIKIAotZmkKLWZpCitlY2hvICIkYXNfbWU6MjEwMjY6IHJlc3VsdDogJEFEQV9PQkpFQ1RTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRBREFfT0JKRUNUUyIgPiY2CisKK2VjaG8gIiRhc19tZToyMTAyOTogY2hlY2tpbmcgaWYgYW4gQWRhOTUgc2hhcmVkLWxpYnJhcnkgc2hvdWxkIGJlIGJ1aWx0IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgYW4gQWRhOTUgc2hhcmVkLWxpYnJhcnkgc2hvdWxkIGJlIGJ1aWx0Li4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFkYS1zaGFyZWRsaWIgb3IgLS13aXRob3V0LWFkYS1zaGFyZWRsaWIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2FkYV9zaGFyZWRsaWIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfYWRhX3NoYXJlZGxpYiIKKyAgd2l0aF9hZGFfc2hhcmVkbGliPSR3aXRodmFsCiBlbHNlCi0gICBjZl93aXRoX2FkYT1ubworICB3aXRoX2FkYV9zaGFyZWRsaWI9bm8KK2ZpOworZWNobyAiJGFzX21lOjIxMDM5OiByZXN1bHQ6ICR3aXRoX2FkYV9zaGFyZWRsaWIiID4mNQorZWNobyAiJHtFQ0hPX1R9JHdpdGhfYWRhX3NoYXJlZGxpYiIgPiY2CisKK0FEQV9TSEFSRURMSUI9J2xpYiQoTElCX05BTUUpLnNvLjEnCitNQUtFX0FEQV9TSEFSRURMSUI9IiMiCisKK2lmIHRlc3QgIngkd2l0aF9hZGFfc2hhcmVkbGliIiAhPSB4bm8KK3RoZW4KKwlNQUtFX0FEQV9TSEFSRURMSUI9CisJaWYgdGVzdCAieCR3aXRoX2FkYV9zaGFyZWRsaWIiICE9IHh5ZXMKKwl0aGVuCisJCUFEQV9TSEFSRURMSUI9IiR3aXRoX2FkYV9zaGFyZWRsaWIiCisJZmkKK2ZpCisKKwkJZmkKKwlmaQorZWxzZQorCWNmX3dpdGhfYWRhPW5vCitmaQorCisjIGRvIHRoaXMgImxhdGUiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggaGVhZGVyLWNoZWNrcworaWYgdGVzdCAieCR3aXRoX3dpZGVjIiA9IHh5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjIxMDYyOiBjaGVja2luZyBmb3Igd2NoYXJfdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB3Y2hhcl90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl90eXBlX3djaGFyX3Qrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyMTA2OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitpZiAoKHdjaGFyX3QgKikgMCkKKyAgcmV0dXJuIDA7CitpZiAoc2l6ZW9mICh3Y2hhcl90KSkKKyAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxMDgzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTA4NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyMTA4OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxMDkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfdHlwZV93Y2hhcl90PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl90eXBlX3djaGFyX3Q9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MjExMDI6IHJlc3VsdDogJGFjX2N2X3R5cGVfd2NoYXJfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfdHlwZV93Y2hhcl90IiA+JjYKKworZWNobyAiJGFzX21lOjIxMTA1OiBjaGVja2luZyBzaXplIG9mIHdjaGFyX3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBzaXplIG9mIHdjaGFyX3QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3NpemVvZl93Y2hhcl90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3djaGFyX3QiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICMgRGVwZW5kaW5nIHVwb24gdGhlIHNpemUsIGNvbXB1dGUgdGhlIGxvIGFuZCBoaSBib3VuZHMuCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDIxMTE0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK2ludCBfYXJyYXlfIFsxIC0gMiAqICEoKHNpemVvZiAod2NoYXJfdCkpID49IDApXQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTEyNjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjExMjk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjExMzI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTEzNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2xvPTAgYWNfbWlkPTAKKyAgd2hpbGUgOjsgZG8KKyAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDIxMTQwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKK2ludCBfYXJyYXlfIFsxIC0gMiAqICEoKHNpemVvZiAod2NoYXJfdCkpIDw9ICRhY19taWQpXQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTE1MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjExNTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjExNTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTE2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2hpPSRhY19taWQ7IGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2xvPWBleHByICRhY19taWQgKyAxYDsgYWNfbWlkPWBleHByIDIgJyonICRhY19taWQgKyAxYAorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBkb25lCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2hpPS0xIGFjX21pZD0tMQorICB3aGlsZSA6OyBkbworICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjExNzcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworaW50IF9hcnJheV8gWzEgLSAyICogISgoc2l6ZW9mICh3Y2hhcl90KSkgPj0gJGFjX21pZCldCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxMTg5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTE5MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyMTE5NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxMTk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfbG89JGFjX21pZDsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfaGk9YGV4cHIgJGFjX21pZCAtIDFgOyBhY19taWQ9YGV4cHIgMiAnKicgJGFjX21pZGAKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgZG9uZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBCaW5hcnkgc2VhcmNoIGJldHdlZW4gbG8gYW5kIGhpIGJvdW5kcy4KK3doaWxlIHRlc3QgIngkYWNfbG8iICE9ICJ4JGFjX2hpIjsgZG8KKyAgYWNfbWlkPWBleHByICcoJyAkYWNfaGkgLSAkYWNfbG8gJyknIC8gMiArICRhY19sb2AKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyMTIxNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CittYWluICgpCit7CitpbnQgX2FycmF5XyBbMSAtIDIgKiAhKChzaXplb2YgKHdjaGFyX3QpKSA8PSAkYWNfbWlkKV0KKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjEyMjY6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxMjI5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxMjMyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjEyMzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19oaT0kYWNfbWlkCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2xvPWBleHByICRhY19taWQgKyAxYAorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JGFjX2xvCitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIHsgeyBlY2hvICIkYXNfbWU6MjEyNDg6IGVycm9yOiBjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmciID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjEyNTMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3QudmFsIiwgInciKTsKK2lmICghZikKKyAgJGFjX21haW5fcmV0dXJuICgxKTsKK2ZwcmludGYgKGYsICIlZCIsIChzaXplb2YgKHdjaGFyX3QpKSk7CitmY2xvc2UgKGYpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjIxMjY5OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTI3MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjEyNzQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyMTI3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3NpemVvZl93Y2hhcl90PWBjYXQgY29uZnRlc3QudmFsYAorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZmkKK3JtIC1mIGNvbmZ0ZXN0LnZhbAorZWxzZQorICBhY19jdl9zaXplb2Zfd2NoYXJfdD0wCitmaQorZmkKK2VjaG8gIiRhc19tZToyMTI5MzogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3NpemVvZl93Y2hhcl90IiA+JjYKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgU0laRU9GX1dDSEFSX1QgJGFjX2N2X3NpemVvZl93Y2hhcl90CitFT0YKKwogZmkKIAogIyMjIENvbnN0cnVjdCB0aGUgbmN1cnNlcyBsaWJyYXJ5LXN1YnNldHMsIGlmIGFueSwgZnJvbSB0aGlzIHNldCBvZiBrZXl3b3JkczoKQEAgLTE2MTYzLDExICsyMTMwOCwxMSBAQAogIyMjIGNob29zZXMgdG8gc3BsaXQgbW9kdWxlIGxpc3RzIGludG8gbGlicmFyaWVzLgogIyMjCiAjIyMgKHNlZSBDRl9MSUJfUlVMRVMpLgotZWNobyAiJGFzX21lOjE2MTY2OiBjaGVja2luZyBmb3IgbGlicmFyeSBzdWJzZXRzIiA+JjUKK2VjaG8gIiRhc19tZToyMTMxMTogY2hlY2tpbmcgZm9yIGxpYnJhcnkgc3Vic2V0cyIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBsaWJyYXJ5IHN1YnNldHMuLi4gJEVDSE9fQyIgPiY2CiBMSUJfU1VCU0VUUz0KIAotaWYgdGVzdCAiJGNmX3dpdGhfcHJvZ3MiID0geWVzIHx8IHRlc3QgIiR3aXRoX3RpY2xpYiIgIT0gbm8gfHwgdGVzdCAiJHdpdGhfdGVybWNhcCIgIT0gbm87IHRoZW4KK2lmIHRlc3QgIngkY2Zfd2l0aF9wcm9ncyIgPSB4eWVzIHx8IHRlc3QgIiR3aXRoX3RpY2xpYiIgIT0gbm8gfHwgdGVzdCAiJHdpdGhfdGVybWNhcCIgIT0gbm87IHRoZW4KIAlMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU310aWNsaWIiCiAJaWYgdGVzdCAiJHdpdGhfdGljbGliIiAhPSBubyA7IHRoZW4KIAkJTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9ICIKQEAgLTE2MTc3LDcgKzIxMzIyLDggQEAKIGZpCiAKIExJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfXRlcm1saWIiCi10ZXN0ICIkd2l0aF9leHRfZnVuY3MiID0geWVzICYmIExJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStleHRfdGluZm8iCit0ZXN0ICJ4JHdpdGhfZXh0X2Z1bmNzIiA9IHh5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K2V4dF90aW5mbyIKKwogaWYgdGVzdCAiJHdpdGhfdGVybWxpYiIgIT0gbm8gOyB0aGVuCiAJTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9ICIKIGVsc2UKQEAgLTE2MTg1LDMxICsyMTMzMSw0MCBAQAogZmkKIAogTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9YmFzZSIKLXRlc3QgIiR3aXRoX3dpZGVjIiAgICAgPSB5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K3dpZGVjaGFyIgotdGVzdCAiJHdpdGhfZXh0X2Z1bmNzIiA9IHllcyAmJiBMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30rZXh0X2Z1bmNzIgogCi1lY2hvICIkYXNfbWU6MTYxOTE6IHJlc3VsdDogJExJQl9TVUJTRVRTIiA+JjUKKyMgTW9zdCB0ZXJtLWRyaXZlciBjYWxscyBhcmUgdG8gdGluZm8sIGJ1dCBzb21lIGxpa2UgaW5pdF9wYWlyIGFyZSB0byB0aGUKKyMgYmFzZSBsaWJyYXJ5IChzbyBpdCByZXNpZGVzIGluIGJhc2UpLgoraWYgdGVzdCAiJHdpdGhfdGVybV9kcml2ZXIiICE9IG5vIDsgdGhlbgorCUxJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStwb3J0X2RyaXZlcnMiCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoKm1pbmd3MzIqfCptaW5ndzY0KikKKwkJTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K3BvcnRfdGluZm8rcG9ydF93aW4zMmNvbiIKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRFVTRV9XSU4zMkNPTl9EUklWRVIiCisJCTs7CisJKCopCisJCUxJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStwb3J0X3RpbmZvIgorCQk7OworCWVzYWMKK2ZpCisKK3Rlc3QgIngkd2l0aF93aWRlYyIgICAgID0geHllcyAmJiBMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30rd2lkZWNoYXIiCit0ZXN0ICJ4JHdpdGhfZXh0X2Z1bmNzIiA9IHh5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K2V4dF9mdW5jcyIKKworZWNobyAiJGFzX21lOjIxMzUzOiByZXN1bHQ6ICRMSUJfU1VCU0VUUyIgPiY1CiBlY2hvICIke0VDSE9fVH0kTElCX1NVQlNFVFMiID4mNgogCiAjIyMgQ29uc3RydWN0IHRoZSBsaXN0IG9mIGluY2x1ZGUtZGlyZWN0b3JpZXMgdG8gYmUgZ2VuZXJhdGVkCiAKLUNQUEZMQUdTPSItSS4gLUkuLi9pbmNsdWRlICRDUFBGTEFHUyIKIGlmIHRlc3QgIiRzcmNkaXIiICE9ICIuIjsgdGhlbgogCUNQUEZMQUdTPSItSVwke3NyY2Rpcn0vLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCiBmaQotaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0JQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgotZWxpZiB0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSI7IHRoZW4KLQlpZiB0ZXN0ICIkaW5jbHVkZWRpciIgPSAnJHtwcmVmaXh9L2luY2x1ZGUnIDsgdGhlbgotCQlpZiB0ZXN0ICRwcmVmaXggIT0gL3VzciA7IHRoZW4KLQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKLQkJZmkKLQllbHNlCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKLQlmaQorQ1BQRkxBR1M9Ii1JLi4vaW5jbHVkZSAkQ1BQRkxBR1MiCitpZiB0ZXN0ICIkc3JjZGlyIiAhPSAiLiI7IHRoZW4KKwlDUFBGTEFHUz0iLUlcJHtzcmNkaXJ9ICRDUFBGTEFHUyIKIGZpCitDUFBGTEFHUz0iLUkuICRDUFBGTEFHUyIKIAotQUNQUEZMQUdTPSItSS4gLUkuLi8uLi9pbmNsdWRlICRBQ1BQRkxBR1MiCitBQ1BQRkxBR1M9Ii1JLiAtSS4uL2luY2x1ZGUgLUkuLi8uLi9pbmNsdWRlICRBQ1BQRkxBR1MiCiBpZiB0ZXN0ICIkc3JjZGlyIiAhPSAiLiI7IHRoZW4KIAlBQ1BQRkxBR1M9Ii1JXCR7c3JjZGlyfS8uLi8uLi9pbmNsdWRlICRBQ1BQRkxBR1MiCiBmaQpAQCAtMTYyMTcsNyArMjEzNzIsNyBAQAogCUFDUFBGTEFHUz0iJEFDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgogZWxpZiB0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSI7IHRoZW4KIAlpZiB0ZXN0ICIkaW5jbHVkZWRpciIgPSAnJHtwcmVmaXh9L2luY2x1ZGUnIDsgdGhlbgotCQlpZiB0ZXN0ICRwcmVmaXggIT0gL3VzciA7IHRoZW4KKwkJaWYgdGVzdCB4JHByZWZpeCAhPSB4L3VzciA7IHRoZW4KIAkJCUFDUFBGTEFHUz0iJEFDUFBGTEFHUyAtSVwke2luY2x1ZGVkaXJ9IgogCQlmaQogCWVsc2UKQEAgLTE2MjI2LDE1MyArMjEzODEsMTc2IEBACiBmaQogCiAjIyMgQnVpbGQgdXAgcGllY2VzIGZvciBtYWtlZmlsZSBydWxlcwotZWNobyAiJGFzX21lOjE2MjI5OiBjaGVja2luZyBkZWZhdWx0IGxpYnJhcnkgc3VmZml4IiA+JjUKK2VjaG8gIiRhc19tZToyMTM4NDogY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5IHN1ZmZpeCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGRlZmF1bHQgbGlicmFyeSBzdWZmaXguLi4gJEVDSE9fQyIgPiY2CiAKIAljYXNlICRERlRfTFdSX01PREVMIGluCi0JbGlidG9vbCkgREZUX0FSR19TVUZGSVg9JycgICA7OwotCW5vcm1hbCkgIERGVF9BUkdfU1VGRklYPScnICAgOzsKLQlkZWJ1ZykgICBERlRfQVJHX1NVRkZJWD0nX2cnIDs7Ci0JcHJvZmlsZSkgREZUX0FSR19TVUZGSVg9J19wJyA7OwotCXNoYXJlZCkgIERGVF9BUkdfU1VGRklYPScnICAgOzsKKwkobGlidG9vbCkgREZUX0FSR19TVUZGSVg9JycgICA7OworCShub3JtYWwpICBERlRfQVJHX1NVRkZJWD0nJyAgIDs7CisJKGRlYnVnKSAgIERGVF9BUkdfU1VGRklYPSdfZycgOzsKKwkocHJvZmlsZSkgREZUX0FSR19TVUZGSVg9J19wJyA7OworCShzaGFyZWQpICBERlRfQVJHX1NVRkZJWD0nJyAgIDs7CiAJZXNhYwogCXRlc3QgLW4gIiRMSUJfU1VGRklYIiAmJiBERlRfQVJHX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7REZUX0FSR19TVUZGSVh9IgotZWNobyAiJGFzX21lOjE2MjQwOiByZXN1bHQ6ICRERlRfQVJHX1NVRkZJWCIgPiY1CitlY2hvICIkYXNfbWU6MjEzOTU6IHJlc3VsdDogJERGVF9BUkdfU1VGRklYIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRERlRfQVJHX1NVRkZJWCIgPiY2CiAKLWVjaG8gIiRhc19tZToxNjI0MzogY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4IiA+JjUKK2VjaG8gIiRhc19tZToyMTM5ODogY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZGVmYXVsdCBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4Li4uICRFQ0hPX0MiID4mNgogCi0JY2FzZSAkREZUX0xXUl9NT0RFTCBpbgotCWxpYnRvb2wpCisJY2FzZSBYJERGVF9MV1JfTU9ERUwgaW4KKwkoWGxpYnRvb2wpCiAJCURGVF9MSUJfU1VGRklYPScubGEnCiAJCURGVF9ERVBfU1VGRklYPSRERlRfTElCX1NVRkZJWAogCQk7OwotCW5vcm1hbCkKLQkJREZUX0xJQl9TVUZGSVg9Jy5hJwotCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKLQkJOzsKLQlkZWJ1ZykKKwkoWGRlYnVnKQogCQlERlRfTElCX1NVRkZJWD0nX2cuYScKIAkJREZUX0RFUF9TVUZGSVg9JERGVF9MSUJfU1VGRklYCiAJCTs7Ci0JcHJvZmlsZSkKKwkoWHByb2ZpbGUpCiAJCURGVF9MSUJfU1VGRklYPSdfcC5hJwogCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKIAkJOzsKLQlzaGFyZWQpCisJKFhzaGFyZWQpCiAJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCi0JCWN5Z3dpbiopCisJCShhaXhbNS03XSopCisJCQlERlRfTElCX1NVRkZJWD0nLnNvJworCQkJREZUX0RFUF9TVUZGSVg9JERGVF9MSUJfU1VGRklYCisJCQk7OworCQkoY3lnd2luKnxtc3lzKnxtaW5ndyopCiAJCQlERlRfTElCX1NVRkZJWD0nLmRsbCcKIAkJCURGVF9ERVBfU1VGRklYPScuZGxsLmEnCiAJCQk7OwotCQlkYXJ3aW4qKQorCQkoZGFyd2luKikKIAkJCURGVF9MSUJfU1VGRklYPScuZHlsaWInCiAJCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKIAkJCTs7Ci0JCWhwdXgqKQorCQkoaHB1eCopCiAJCQljYXNlICR0YXJnZXQgaW4KLQkJCWlhNjQqKQorCQkJKGlhNjQqKQogCQkJCURGVF9MSUJfU1VGRklYPScuc28nCiAJCQkJREZUX0RFUF9TVUZGSVg9JERGVF9MSUJfU1VGRklYCiAJCQkJOzsKLQkJCSopCisJCQkoKikKIAkJCQlERlRfTElCX1NVRkZJWD0nLnNsJwogCQkJCURGVF9ERVBfU1VGRklYPSRERlRfTElCX1NVRkZJWAogCQkJCTs7CiAJCQllc2FjCiAJCQk7OwotCQkqKQlERlRfTElCX1NVRkZJWD0nLnNvJworCQkoKikKKwkJCURGVF9MSUJfU1VGRklYPScuc28nCiAJCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKIAkJCTs7CiAJCWVzYWMKKwkJOzsKKwkoKikKKwkJREZUX0xJQl9TVUZGSVg9Jy5hJworCQlERlRfREVQX1NVRkZJWD0kREZUX0xJQl9TVUZGSVgKKwkJOzsKIAllc2FjCi0JdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmIERGVF9MSUJfU1VGRklYPSIke0xJQl9TVUZGSVh9JHtERlRfTElCX1NVRkZJWH0iCi0JdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmIERGVF9ERVBfU1VGRklYPSIke0xJQl9TVUZGSVh9JHtERlRfREVQX1NVRkZJWH0iCi1lY2hvICIkYXNfbWU6MTYyOTI6IHJlc3VsdDogJERGVF9ERVBfU1VGRklYIiA+JjUKKwlpZiB0ZXN0IC1uICIke0xJQl9TVUZGSVh9JHtFWFRSQV9TVUZGSVh9IgorCXRoZW4KKwkJREZUX0xJQl9TVUZGSVg9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0ke0RGVF9MSUJfU1VGRklYfSIKKwkJREZUX0RFUF9TVUZGSVg9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0ke0RGVF9ERVBfU1VGRklYfSIKKwlmaQorZWNobyAiJGFzX21lOjIxNDU2OiByZXN1bHQ6ICRERlRfREVQX1NVRkZJWCIgPiY1CiBlY2hvICIke0VDSE9fVH0kREZUX0RFUF9TVUZGSVgiID4mNgogCi1lY2hvICIkYXNfbWU6MTYyOTU6IGNoZWNraW5nIGRlZmF1bHQgb2JqZWN0IGRpcmVjdG9yeSIgPiY1CitlY2hvICIkYXNfbWU6MjE0NTk6IGNoZWNraW5nIGRlZmF1bHQgb2JqZWN0IGRpcmVjdG9yeSIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGRlZmF1bHQgb2JqZWN0IGRpcmVjdG9yeS4uLiAkRUNIT19DIiA+JjYKIAogCWNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLQlsaWJ0b29sKSBERlRfT0JKX1NVQkRJUj0nb2JqX2xvJyAgOzsKLQlub3JtYWwpICBERlRfT0JKX1NVQkRJUj0nb2JqZWN0cycgOzsKLQlkZWJ1ZykgICBERlRfT0JKX1NVQkRJUj0nb2JqX2cnIDs7Ci0JcHJvZmlsZSkgREZUX09CSl9TVUJESVI9J29ial9wJyA7OwotCXNoYXJlZCkKLQkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIyh2aQotCQljeWd3aW4pICModmkKKwkobGlidG9vbCkgREZUX09CSl9TVUJESVI9J29ial9sbycgIDs7CisJKG5vcm1hbCkgIERGVF9PQkpfU1VCRElSPSdvYmplY3RzJyA7OworCShkZWJ1ZykgICBERlRfT0JKX1NVQkRJUj0nb2JqX2cnIDs7CisJKHByb2ZpbGUpIERGVF9PQkpfU1VCRElSPSdvYmpfcCcgOzsKKwkoc2hhcmVkKQorCQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCQkoY3lnd2lufG1zeXMpCiAJCQlERlRfT0JKX1NVQkRJUj0nb2JqZWN0cycgOzsKLQkJKikKKwkJKCopCiAJCQlERlRfT0JKX1NVQkRJUj0nb2JqX3MnIDs7CiAJCWVzYWMKIAllc2FjCi1lY2hvICIkYXNfbWU6MTYzMTE6IHJlc3VsdDogJERGVF9PQkpfU1VCRElSIiA+JjUKK2VjaG8gIiRhc19tZToyMTQ3NTogcmVzdWx0OiAkREZUX09CSl9TVUJESVIiID4mNQogZWNobyAiJHtFQ0hPX1R9JERGVF9PQkpfU1VCRElSIiA+JjYKIAotIyBsaWJ0b29sIHRoaW5rcyBpdCBjYW4gbWFrZSBjKysgc2hhcmVkIGxpYnJhcmllcyAocGVyaGFwcyBvbmx5IGcrKykKLWlmIHRlc3QgIiRjZl93aXRoX2N4eCIgPSB5ZXMgOyB0aGVuCi1lY2hvICIkYXNfbWU6MTYzMTY6IGNoZWNraW5nIGMrKyBsaWJyYXJ5LWRlcGVuZGVuY3kgc3VmZml4IiA+JjUKK2lmIHRlc3QgIngkY2Zfd2l0aF9jeHgiID0geHllcyA7IHRoZW4KK2VjaG8gIiRhc19tZToyMTQ3OTogY2hlY2tpbmcgYysrIGxpYnJhcnktZGVwZW5kZW5jeSBzdWZmaXgiID4mNQogZWNobyAkRUNIT19OICJjaGVja2luZyBjKysgbGlicmFyeS1kZXBlbmRlbmN5IHN1ZmZpeC4uLiAkRUNIT19DIiA+JjYKIGlmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJubyI7IHRoZW4KKwkjIGxpYnRvb2wgdGhpbmtzIGl0IGNhbiBtYWtlIGMrKyBzaGFyZWQgbGlicmFyaWVzIChwZXJoYXBzIG9ubHkgZysrKQorCUNYWF9MSUJfU1VGRklYPSRERlRfREVQX1NVRkZJWAorZWxpZiB0ZXN0ICIkd2l0aF9zaGFyZWRfY3h4IiAhPSAibm8iOyB0aGVuCisJIyBhbHNvIGZvciBnKysgdXNlcnMuLi4KIAlDWFhfTElCX1NVRkZJWD0kREZUX0RFUF9TVUZGSVgKIGVsc2UKKwkjIHdlIG5vcm1hbGx5IG1ha2UgYSBzdGF0aWMgbGlicmFyeSBiZWNhdXNlIEMvQysrIGxpYnJhcnkgcnVsZXMgZGlmZmVyCiAKLQljYXNlIG5vcm1hbCBpbgotCWxpYnRvb2wpCisJY2FzZSBYbm9ybWFsIGluCisJKFhsaWJ0b29sKQogCQlDWFhfTElCX1NVRkZJWD0nLmxhJwogCQlDWFhfREVQX1NVRkZJWD0kQ1hYX0xJQl9TVUZGSVgKIAkJOzsKLQlub3JtYWwpCi0JCUNYWF9MSUJfU1VGRklYPScuYScKLQkJQ1hYX0RFUF9TVUZGSVg9JENYWF9MSUJfU1VGRklYCi0JCTs7Ci0JZGVidWcpCisJKFhkZWJ1ZykKIAkJQ1hYX0xJQl9TVUZGSVg9J19nLmEnCiAJCUNYWF9ERVBfU1VGRklYPSRDWFhfTElCX1NVRkZJWAogCQk7OwotCXByb2ZpbGUpCisJKFhwcm9maWxlKQogCQlDWFhfTElCX1NVRkZJWD0nX3AuYScKIAkJQ1hYX0RFUF9TVUZGSVg9JENYWF9MSUJfU1VGRklYCiAJCTs7Ci0Jc2hhcmVkKQorCShYc2hhcmVkKQogCQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgotCQljeWd3aW4qKQorCQkoYWl4WzUtN10qKQorCQkJQ1hYX0xJQl9TVUZGSVg9Jy5zbycKKwkJCUNYWF9ERVBfU1VGRklYPSRDWFhfTElCX1NVRkZJWAorCQkJOzsKKwkJKGN5Z3dpbip8bXN5cyp8bWluZ3cqKQogCQkJQ1hYX0xJQl9TVUZGSVg9Jy5kbGwnCiAJCQlDWFhfREVQX1NVRkZJWD0nLmRsbC5hJwogCQkJOzsKLQkJZGFyd2luKikKKwkJKGRhcndpbiopCiAJCQlDWFhfTElCX1NVRkZJWD0nLmR5bGliJwogCQkJQ1hYX0RFUF9TVUZGSVg9JENYWF9MSUJfU1VGRklYCiAJCQk7OwotCQlocHV4KikKKwkJKGhwdXgqKQogCQkJY2FzZSAkdGFyZ2V0IGluCi0JCQlpYTY0KikKKwkJCShpYTY0KikKIAkJCQlDWFhfTElCX1NVRkZJWD0nLnNvJwogCQkJCUNYWF9ERVBfU1VGRklYPSRDWFhfTElCX1NVRkZJWAogCQkJCTs7Ci0JCQkqKQorCQkJKCopCiAJCQkJQ1hYX0xJQl9TVUZGSVg9Jy5zbCcKIAkJCQlDWFhfREVQX1NVRkZJWD0kQ1hYX0xJQl9TVUZGSVgKIAkJCQk7OwogCQkJZXNhYwogCQkJOzsKLQkJKikJQ1hYX0xJQl9TVUZGSVg9Jy5zbycKKwkJKCopCisJCQlDWFhfTElCX1NVRkZJWD0nLnNvJwogCQkJQ1hYX0RFUF9TVUZGSVg9JENYWF9MSUJfU1VGRklYCiAJCQk7OwogCQllc2FjCisJCTs7CisJKCopCisJCUNYWF9MSUJfU1VGRklYPScuYScKKwkJQ1hYX0RFUF9TVUZGSVg9JENYWF9MSUJfU1VGRklYCisJCTs7CiAJZXNhYwotCXRlc3QgLW4gIiRMSUJfU1VGRklYIiAmJiBDWFhfTElCX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7Q1hYX0xJQl9TVUZGSVh9IgotCXRlc3QgLW4gIiRMSUJfU1VGRklYIiAmJiBDWFhfREVQX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7Q1hYX0RFUF9TVUZGSVh9IgorCWlmIHRlc3QgLW4gIiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCisJdGhlbgorCQlDWFhfTElCX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7Q1hYX0xJQl9TVUZGSVh9IgorCQlDWFhfREVQX1NVRkZJWD0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7Q1hYX0RFUF9TVUZGSVh9IgorCWZpCisKIGZpCi1lY2hvICIkYXNfbWU6MTYzNjk6IHJlc3VsdDogJENYWF9MSUJfU1VGRklYIiA+JjUKK2VjaG8gIiRhc19tZToyMTU0NzogcmVzdWx0OiAkQ1hYX0xJQl9TVUZGSVgiID4mNQogZWNobyAiJHtFQ0hPX1R9JENYWF9MSUJfU1VGRklYIiA+JjYKIAogZmkKIAogIyBkbyBub3Qgd2FudCAtbGRsIGluIGJ1aWxkIGV4Y2VwdCBhcyBuZWVkZWQgZm9yIC1sbmN1cnNlcyBkZXBlbmRlbmN5Ci1pZiB0ZXN0ICIkd2l0aF9kbHN5bSIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JHdpdGhfZGxzeW0iID0geHllcyA7IHRoZW4KIGlmIHRlc3QgJERGVF9MV1JfTU9ERUwgPSBzaGFyZWQgfHwgXAogICAgdGVzdCAkREZUX0xXUl9NT0RFTCA9IGxpYnRvb2wgOyB0aGVuCiAKQEAgLTE2Mzg2LDQzICsyMTU2NCw1MyBAQAogIyBUSUNTX0xJU1QgYW5kIFRJTkZPX0xJU1QgYXJlIG5lZWRlZCB0byBidWlsZCBsaWJ0aWMuc28gYW5kIGxpYnRlcm0uc28sIGJ1dAogIyBkbyBub3QgbmVlZCBsaWJkbAogVElDU19MSVNUPQotaWYgdGVzdCAiJHdpdGhfZGxzeW0iID0geWVzIDsgdGhlbgoraWYgdGVzdCAieCR3aXRoX2Rsc3ltIiA9IHh5ZXMgOyB0aGVuCiAKICMgcmVtb3ZlIGRsIGxpYnJhcnkgZnJvbSAkU0hMSUJfTElTVAogVElORk9fTElTVD1gZWNobyAiJFNITElCX0xJU1QiIHwgc2VkIC1lICdzLy1sZGxbIAldLy9nJyAtZSAncy8tbGRsJC8vJ2AKIAogZmkKIAorVVNFX0FSR19TVUZGSVg9IiR7REZUX0FSR19TVUZGSVh9JHtFWFRSQV9TVUZGSVh9IgorVVNFX0xJQl9TVUZGSVg9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCitVU0VfQ0ZHX1NVRkZJWD0ke0RGVF9BUkdfU1VGRklYfSR7Y2ZfY3ZfYWJpX3ZlcnNpb259CitpZiB0ZXN0IC1uICIkRVhUUkFfU1VGRklYIiAmJiB0ZXN0ICJ4JEVYVFJBX1NVRkZJWCIgIT0gIngke2NmX2N2X2FiaV92ZXJzaW9ufSIKK3RoZW4KKwlVU0VfQ0ZHX1NVRkZJWD0iJHtVU0VfQ0ZHX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCitmaQorCiBpZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgogCi0JaWYgdGVzdCAiJHdpdGhfdGljbGliIiAhPSB5ZXMgOyB0aGVuCisJaWYgdGVzdCAieCR3aXRoX3RpY2xpYiIgIT0geHllcyA7IHRoZW4KIAkJVElDU19OQU1FPSR3aXRoX3RpY2xpYgotCQlUSUNTX0FSR19TVUZGSVg9IiR7d2l0aF90aWNsaWJ9YGVjaG8gJHtERlRfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElDU19BUkdfU1VGRklYPSIke3dpdGhfdGljbGlifWBlY2hvICR7VVNFX0FSR19TVUZGSVh9fHNlZCAtZSAicy9eJHtMSUJfU1VGRklYfS8vImAiCiAJCVRJQ1NfREVQX1NVRkZJWD0iJHt3aXRoX3RpY2xpYn1gZWNobyAke0RGVF9ERVBfU1VGRklYfXxzZWQgLWUgInMvXiR7TElCX1NVRkZJWH0vLyJgIgogCQlUSUNTX0xJQl9TVUZGSVg9IiR7d2l0aF90aWNsaWJ9IgogCWVsc2UKLQkJVElDU19BUkdfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0RGVF9BUkdfU1VGRklYfSIKKwkJVElDU19BUkdfU1VGRklYPSIke1RJQ1NfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSIKIAkJVElDU19ERVBfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0RGVF9ERVBfU1VGRklYfSIKLQkJVElDU19MSUJfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0xJQl9TVUZGSVh9IgorCQlUSUNTX0xJQl9TVUZGSVg9IiR7VElDU19OQU1FfSR7VVNFX0xJQl9TVUZGSVh9IgogCWZpCi0JVElDU19BUkdTPSItTCR7TElCX0RJUn0gLWwke1RJQ1NfTElCX1NVRkZJWH0iCisJVElDU19MREZMQUdTPSItTCR7TElCX0RJUn0iCisJVElDU19MSUJTPSItbCR7VElDU19MSUJfU1VGRklYfSIKIGVsc2UKLQlUSUNTX0FSR1M9Ii1MJHtMSUJfRElSfSAtbCR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0iCisJVElDU19MREZMQUdTPSItTCR7TElCX0RJUn0iCisJVElDU19MSUJTPSItbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0iCiBmaQogCiBpZiB0ZXN0ICIkd2l0aF90ZXJtbGliIiAhPSBubyA7IHRoZW4KIAotCWlmIHRlc3QgIiR3aXRoX3Rlcm1saWIiICE9IHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JHdpdGhfdGVybWxpYiIgIT0geHllcyA7IHRoZW4KIAkJVElORk9fTkFNRT0kd2l0aF90ZXJtbGliCi0JCVRJTkZPX1NVRkZJWD0iYGVjaG8gJHtERlRfTElCX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKLQkJVElORk9fQVJHX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtERlRfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElORk9fU1VGRklYPSJgZWNobyAke0RGVF9MSUJfU1VGRklYfXxzZWQgLWUgInMvXiR7VVNFX0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElORk9fQVJHX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtVU0VfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKIAkJVElORk9fREVQX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtERlRfREVQX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKIAkJVElORk9fTElCX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9IgogCWVsc2UKIAkJVElORk9fU1VGRklYPSR7REZUX0xJQl9TVUZGSVh9Ci0JCVRJTkZPX0FSR19TVUZGSVg9IiR7VElORk9fTkFNRX0ke0RGVF9BUkdfU1VGRklYfSIKKwkJVElORk9fQVJHX1NVRkZJWD0iJHtUSU5GT19OQU1FfSR7VVNFX0FSR19TVUZGSVh9IgogCQlUSU5GT19ERVBfU1VGRklYPSIke1RJTkZPX05BTUV9JHtERlRfREVQX1NVRkZJWH0iCi0JCVRJTkZPX0xJQl9TVUZGSVg9IiR7VElORk9fTkFNRX0ke0xJQl9TVUZGSVh9IgorCQlUSU5GT19MSUJfU1VGRklYPSIke1RJTkZPX05BTUV9JHtVU0VfTElCX1NVRkZJWH0iCiAJZmkKIAogCVRFU1RfREVQUz0iJHtMSUJfRElSfS8ke0xJQl9QUkVGSVh9JHtUSU5GT19ERVBfU1VGRklYfSIKQEAgLTE2NDMwLDM4ICsyMTYxOCw0OSBAQAogCWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJsaWJ0b29sIjsgdGhlbgogCQlURVNUX0FSR1M9IiR7VEVTVF9ERVBTfSIKIAkJVEVTVF9BUkcyPSIke1RFU1RfREVQMn0iCi0JCVRJTkZPX0FSR1M9Ii1MJHtMSUJfRElSfSAkVEVTVF9BUkdTIgorCQlUSU5GT19MREZMQUdTPSItTCR7TElCX0RJUn0iCisJCVRJTkZPX0xJQlM9IiRURVNUX0FSR1MiCisJCVRJQ1NfTElTVD0iJFNITElCX0xJU1QgJFRFU1RfQVJHUyIKKwkJU0hMSUJfTElTVD0iJHtTSExJQl9MSVNUfSAkVEVTVF9BUkdTIgogCWVsc2UKIAkJVEVTVF9BUkdTPSItbCR7VElORk9fQVJHX1NVRkZJWH0iCiAJCVRFU1RfQVJHMj0iLWwke1RJTkZPX0FSR19TVUZGSVh9IgotCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUIC1sJHtUSU5GT19MSUJfU1VGRklYfSIKLQkJVElORk9fQVJHUz0iLUwke0xJQl9ESVJ9ICRURVNUX0FSR1MiCisJCWlmIHRlc3QgIngkd2l0aF90ZXJtX2RyaXZlciIgIT0geG5vIDsgdGhlbgorCQkJVElDU19MSVNUPSIkU0hMSUJfTElTVCAtbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0iCisJCQlUSUNTX0xJQlM9IiRUSUNTX0xJQlMgLWwke0xJQl9OQU1FfSR7VVNFX0FSR19TVUZGSVh9IgorCQkJVElORk9fTElCUz0iLWwke0xJQl9OQU1FfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCisJCWVsc2UKKwkJCVRJQ1NfTElTVD0iJFNITElCX0xJU1QgLWwke1RJTkZPX0xJQl9TVUZGSVh9IgorCQkJVElORk9fTElCUz0iJFRFU1RfQVJHUyIKKwkJZmkKKwkJVElORk9fTERGTEFHUz0iLUwke0xJQl9ESVJ9IgogCQlTSExJQl9MSVNUPSIkU0hMSUJfTElTVCAtbCR7VElORk9fTElCX1NVRkZJWH0iCiAJZmkKIGVsc2UKIAkjIHRoZSBuZXh0IGxpbmVzIGFyZSBuZWVkZWQgZm9yIGxpbmtpbmcgbGlidGljIG92ZXIgbGlibmN1cnNlcwogCVRJTkZPX05BTUU9JHtMSUJfTkFNRX0KIAlUSU5GT19TVUZGSVg9JHtERlRfTElCX1NVRkZJWH0KLQlUSU5GT19BUkdfU1VGRklYPSR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0KLQlpZiB0ZXN0ICIkd2l0aF90aWNfZGVwZW5kcyIgPSB5ZXMgOyB0aGVuCi0JCVRJQ1NfTElTVD0iJFNITElCX0xJU1QgLWwke0xJQl9OQU1FfSR7REZUX0FSR19TVUZGSVh9IgorCVRJTkZPX0FSR19TVUZGSVg9JHtMSUJfTkFNRX0ke1VTRV9BUkdfU1VGRklYfQorCWlmIHRlc3QgIngkd2l0aF90aWNfZGVwZW5kcyIgPSB4eWVzIDsgdGhlbgorCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUIC1sJHtMSUJfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSIKIAllbHNlCiAJCVRJQ1NfTElTVD0iJFNITElCX0xJU1QiCiAJZmkKIAotCVRJTkZPX0FSR1M9Ii1MJHtMSUJfRElSfSAtbCR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0iCisJVElORk9fTERGTEFHUz0iLUwke0xJQl9ESVJ9IgorCVRJTkZPX0xJQlM9Ii1sJHtMSUJfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSIKIGZpCiAKIGlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9IHNoYXJlZCA7IHRoZW4KLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi0JY3lnd2luKikKLQkJIyAibGliIiBmaWxlcyBoYXZlICIuZGxsLmEiIHN1ZmZpeCwgImN5ZyIgZmlsZXMgaGF2ZSAiLmRsbCIKKwljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorCShjeWd3aW4qfG1zeXMqKQorCQkjICJsaWIiIGZpbGVzIGhhdmUgIi5kbGwuYSIgc3VmZml4LCAiY3lnIm9yICJtc3lzLSIgZmlsZXMgaGF2ZSAiLmRsbCIKIAkJVElORk9fU1VGRklYPS5kbGwKIAkJOzsKIAllc2FjCiBmaQogCi1pZiB0ZXN0ICIkd2l0aF9kbHN5bSIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JHdpdGhfZGxzeW0iID0geHllcyA7IHRoZW4KIAogIyByZW1vdmUgZGwgbGlicmFyeSBmcm9tICRUSUNTX0xJU1QKIFRJQ1NfTElTVD1gZWNobyAiJFRJQ1NfTElTVCIgfCBzZWQgLWUgJ3MvLWxkbFsgCV0vL2cnIC1lICdzLy1sZGwkLy8nYApAQCAtMTY0NjksNzggKzIxNjY4LDE3MyBAQAogZmkKIAogaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gImxpYnRvb2wiOyB0aGVuCi0gICAgT0JKRVhUPWxvCisJT0JKRVhUPWxvCiBmaQogCiAjIG5lZWRlZCBmb3IgQWRhOTUKLVRJTkZPX0FSR1MyPWBlY2hvICIkVElORk9fQVJHUyIgfCBzZWQgLWUgJ3MsLUxcLlwuLywtTC4uLy4uLywnYAorVElORk9fTERGTEFHUzI9YGVjaG8gIiRUSU5GT19MREZMQUdTIiB8IHNlZCAtZSAncywtTFwuXC4vLC1MLi4vLi4vLCdgCiAKIGNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLW5vcm1hbHxkZWJ1Z3xwcm9maWxlKQorKG5vcm1hbHxkZWJ1Z3xwcm9maWxlKQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKAotCU9TLzIqfG9zMip8YWl4WzQ1XSopIAkjKCB2aQorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKE9TLzIqfG9zMip8YWl4WzRdKnxzb2xhcmlzMi4xWzAtOV18ZGFyd2luKikKIAkJTERGTEFHU19TVEFUSUM9CiAJCUxERkxBR1NfU0hBUkVEPQogCQk7OwotICAgICopIAkjKCBub3JtYWxseSwgZXhjZXB0IHdoZW4gYnJva2VuCi0gICAgICAgIExERkxBR1NfU1RBVElDPS1zdGF0aWMKLSAgICAgICAgTERGTEFHU19TSEFSRUQ9LWR5bmFtaWMKLSAgICAgICAgOzsKLSAgICBlc2FjCisJKCopIAkjIG5vcm1hbGx5LCBleGNlcHQgd2hlbiBicm9rZW4KKwkJTERGTEFHU19TVEFUSUM9LXN0YXRpYworCQlMREZMQUdTX1NIQVJFRD0tZHluYW1pYworCQk7OworCWVzYWMKIGVsc2UKLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKAotCWFpeFs0NV0qKSAJIyggZnJvbSBsZCBtYW5wYWdlCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoYWl4WzQtN10qKSAJIyBmcm9tIGxkIG1hbnBhZ2UKIAkJTERGTEFHU19TVEFUSUM9LWJzdGF0aWMKIAkJTERGTEFHU19TSEFSRUQ9LWJkeW5hbWljCiAJCTs7Ci0JaHB1eCopCQkjKCBmcm9tIGxkIG1hbnBhZ2UgZm9yIGhwdXgxMC4yMCwgaHB1eDExLjExCisJKGhwdXgqKQkJIyBmcm9tIGxkIG1hbnBhZ2UgZm9yIGhwdXgxMC4yMCwgaHB1eDExLjExCiAJCSMgV2UgY291bGQgYWxzbyB1c2UganVzdCAiYXJjaGl2ZSIgYW5kICJzaGFyZWQiLgogCQlMREZMQUdTX1NUQVRJQz0tV2wsLWEsYXJjaGl2ZV9zaGFyZWQKIAkJTERGTEFHU19TSEFSRUQ9LVdsLC1hLHNoYXJlZF9hcmNoaXZlCiAJCTs7Ci0JaXJpeCopCQkjKCBmcm9tIGxkIG1hbnBhZ2UgSVJJWDY0CisJKGlyaXgqKQkJIyBmcm9tIGxkIG1hbnBhZ2UgSVJJWDY0CiAJCUxERkxBR1NfU1RBVElDPS1Cc3RhdGljCiAJCUxERkxBR1NfU0hBUkVEPS1CZHluYW1pYwogCQk7OwotCW9zZls0NV0qKQkjKCBmcm9tIGxkIG1hbnBhZ2Ugb3NmNC4wZCwgb3NmNS4xCisJKG9zZls0NV0qKQkjIGZyb20gbGQgbWFucGFnZSBvc2Y0LjBkLCBvc2Y1LjEKIAkJIyBhbHRlcm5hdGl2ZSAiLW9sZHN0eWxlX2xpYmxvb2t1cCIgKG5vdCBpbiBjYyBtYW5wYWdlKQogCQlMREZMQUdTX1NUQVRJQz0tbm9zbwogCQlMREZMQUdTX1NIQVJFRD0tc29fYXJjaGl2ZQogCQk7OwotCXNvbGFyaXMyKikKKwkoc29sYXJpczIqKQogCQlMREZMQUdTX1NUQVRJQz0tQnN0YXRpYwogCQlMREZMQUdTX1NIQVJFRD0tQmR5bmFtaWMKIAkJOzsKIAllc2FjCiBmaQogCitpZiB0ZXN0IC1uICIkTERGTEFHU19TVEFUSUMiICYmIHRlc3QgLW4gIiRMREZMQUdTX1NIQVJFRCIKK3RoZW4KKwllY2hvICIkYXNfbWU6MjE3MjA6IGNoZWNraW5nIGlmIGxpbmtlciBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBzdGF0aWMvZHluYW1pYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIGxpbmtlciBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBzdGF0aWMvZHluYW1pYy4uLiAkRUNIT19DIiA+JjYKKworCXJtIC1mIGxpYmNvbmZ0ZXN0LmEKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDIxNzI1ICJjb25maWd1cmUiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBjZl9sZGZsYWdzX3N0YXRpYyhGSUxFICpmcCkgeyByZXR1cm4gZmZsdXNoKGZwKTsgfQorRU9GCisJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjE3Mjk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxNzMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gOyB0aGVuCisJCSggJEFSICRBUkZMQUdTIGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyApIDI+JjUgMT4vZGV2L251bGwKKwkJKCBldmFsICRSQU5MSUIgbGliY29uZnRlc3QuYSApIDI+JjUgPi9kZXYvbnVsbAorCWZpCisJcm0gLWYgY29uZnRlc3QuKgorCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworCUxJQlM9IiRMREZMQUdTX1NUQVRJQyAtTGBwd2RgIC1sY29uZnRlc3QgJExERkxBR1NfRFlOQU1JQyAkTElCUyIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDIxNzQzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2xpbmUgMjE3NDYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IGNmX2xkZmxhZ3Nfc3RhdGljKEZJTEUgKmZwKTsKKworaW50CittYWluICgpCit7CisKKwlyZXR1cm4gY2ZfbGRmbGFnc19zdGF0aWMoc3RkaW4pOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTc2MTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjE3NjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyMTc2NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjIxNzcwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCSMgc29tZSBsaW5rZXJzIHNpbXBseSBpZ25vcmUgdGhlIC1keW5hbWljCisJY2FzZSB4YGZpbGUgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsYCBpbgorCSgqc3RhdGljKikKKwkJY2ZfbGRmbGFnc19zdGF0aWM9bm8KKwkJOzsKKwkoKikKKwkJY2ZfbGRmbGFnc19zdGF0aWM9eWVzCisJCTs7CisJZXNhYworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2xkZmxhZ3Nfc3RhdGljPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCisJcm0gLWYgbGliY29uZnRlc3QuKgorCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisKKwllY2hvICIkYXNfbWU6MjE3OTM6IHJlc3VsdDogJGNmX2xkZmxhZ3Nfc3RhdGljIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9sZGZsYWdzX3N0YXRpYyIgPiY2CisKKwlpZiB0ZXN0ICRjZl9sZGZsYWdzX3N0YXRpYyAhPSB5ZXMKKwl0aGVuCisJCUxERkxBR1NfU1RBVElDPQorCQlMREZMQUdTX1NIQVJFRD0KKwlmaQorZWxzZQorCUxERkxBR1NfU1RBVElDPQorCUxERkxBR1NfU0hBUkVEPQorZmkKKwogCTs7CiBlc2FjCiAKLWVjaG8gIiRhc19tZToxNjUyMjogY2hlY2tpbmcgd2hlcmUgd2Ugd2lsbCBpbnN0YWxsIGN1cnNlcy5oIiA+JjUKK2VjaG8gIiRhc19tZToyMTgwOTogY2hlY2tpbmcgd2hlcmUgd2Ugd2lsbCBpbnN0YWxsIGN1cnNlcy5oIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hlcmUgd2Ugd2lsbCBpbnN0YWxsIGN1cnNlcy5oLi4uICRFQ0hPX0MiID4mNgotdGVzdCAiJHdpdGhfb3ZlcndyaXRlIiA9IG5vICYmIFwKLXRlc3QgIngkaW5jbHVkZWRpciIgPSAneCR7cHJlZml4fS9pbmNsdWRlJyAmJiBcCi0JaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUvbmN1cnNlcycke0xJQl9TVUZGSVh9Ci1lY2hvICIkYXNfbWU6MTY1Mjc6IHJlc3VsdDogJGluY2x1ZGVkaXIiID4mNQotZWNobyAiJHtFQ0hPX1R9JGluY2x1ZGVkaXIiID4mNgorCitpbmNsdWRlc3ViZGlyPQoraWYgdGVzdCAiJHdpdGhfb3ZlcndyaXRlIiA9IG5vICYmIFwKKyAoIHRlc3QgIngkaW5jbHVkZWRpciIgPSAneCR7cHJlZml4fS9pbmNsdWRlJyB8fCBcCisgICB0ZXN0ICJ4JGluY2x1ZGVkaXIiID0gIngke3ByZWZpeH0vaW5jbHVkZSIgKQordGhlbgorCWluY2x1ZGVzdWJkaXI9Ii9uY3Vyc2VzJHtVU0VfTElCX1NVRkZJWH0iCitmaQorZWNobyAiJGFzX21lOjIxODE5OiByZXN1bHQ6ICR7aW5jbHVkZWRpcn0ke2luY2x1ZGVzdWJkaXJ9IiA+JjUKK2VjaG8gIiR7RUNIT19UfSR7aW5jbHVkZWRpcn0ke2luY2x1ZGVzdWJkaXJ9IiA+JjYKIAogIyMjIFJlc29sdmUgYSBjb25mbGljdCBiZXR3ZWVuIG5vcm1hbCBhbmQgd2lkZS1jdXJzZXMgYnkgZm9yY2luZyBhcHBsaWNhdGlvbnMKICMjIyB0aGF0IHdpbGwgbmVlZCBsaWJ1dGY4IHRvIGFkZCBpdCB0byB0aGVpciBjb25maWd1cmUgc2NyaXB0LgogaWYgdGVzdCAiJHdpdGhfb3ZlcndyaXRlIiAhPSBubyA7IHRoZW4KIGlmIHRlc3QgIiROQ1VSU0VTX0xJQlVURjgiID0gMSA7IHRoZW4KIAlOQ1VSU0VTX0xJQlVURjg9J2RlZmluZWQoSEFWRV9MSUJVVEY4X0gpJwotCXsgZWNobyAiJGFzX21lOjE2NTM1OiBXQVJOSU5HOiBXaWRlLWNoYXJhY3RlciBhcHBsaWNhdGlvbnMgbXVzdCBkZWZpbmUgSEFWRV9MSUJVVEY4X0ggdG8gaW5jbHVkZSBjdXJzZXMuaCIgPiY1CisJeyBlY2hvICIkYXNfbWU6MjE4Mjc6IFdBUk5JTkc6IFdpZGUtY2hhcmFjdGVyIGFwcGxpY2F0aW9ucyBtdXN0IGRlZmluZSBIQVZFX0xJQlVURjhfSCB0byBpbmNsdWRlIGN1cnNlcy5oIiA+JjUKIGVjaG8gIiRhc19tZTogV0FSTklORzogV2lkZS1jaGFyYWN0ZXIgYXBwbGljYXRpb25zIG11c3QgZGVmaW5lIEhBVkVfTElCVVRGOF9IIHRvIGluY2x1ZGUgY3Vyc2VzLmgiID4mMjt9CiBmaQogZmkKK1dJVEhfT1ZFUldSSVRFPSR3aXRoX292ZXJ3cml0ZQogCiAjIHVzZWQgdG8gc2VwYXJhdGUgdGFjayBvdXQgb2YgdGhlIHRyZWUKIE5DVVJTRVNfVFJFRT0KIAogIyMjIHByZWRlZmluZWQgc3R1ZmYgZm9yIHRoZSB0ZXN0IHByb2dyYW1zCisKIGNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfU0xLX0NPTE9SIDEKIEVPRgpAQCAtMTY1NDgsNyArMjE4NDIsNyBAQAogIyMjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyBmb3Igd2hpY2ggd2UnbGwgY3VzdG9taXplIG1ha2VmaWxlcwogIyMjIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGUtcnVsZXMuCiAKLWVjaG8gIiRhc19tZToxNjU1MTogY2hlY2tpbmcgZm9yIHNyYyBtb2R1bGVzIiA+JjUKK2VjaG8gIiRhc19tZToyMTg0NTogY2hlY2tpbmcgZm9yIHNyYyBtb2R1bGVzIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNyYyBtb2R1bGVzLi4uICRFQ0hPX0MiID4mNgogCiAjIGRlcGVuZGVuY2llcyBhbmQgbGlua2VyLWFyZ3VtZW50cyBmb3IgdGVzdC1wcm9ncmFtcwpAQCAtMTY1NTgsMTAgKzIxODUyLDExIEBACiAJVEVTVF9BUkdTPSIke1RFU1RfREVQU30iCiAJVEVTVF9BUkcyPSIke1RFU1RfREVQMn0iCiBlbHNlCi0JVEVTVF9BUkdTPSItbCR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0gJFRFU1RfQVJHUyIKLQlURVNUX0FSRzI9Ii1sJHtMSUJfTkFNRX0ke0RGVF9BUkdfU1VGRklYfSAkVEVTVF9BUkcyIgorCVRFU1RfQVJHUz0iLWwke0xJQl9OQU1FfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCisJVEVTVF9BUkcyPSItbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0gJFRFU1RfQVJHMiIKIGZpCiAKK1BDX01PRFVMRVNfVE9fTUFLRT0ibmN1cnNlcyR7VVNFX0FSR19TVUZGSVh9IgogY2ZfY3Zfc3JjX21vZHVsZXM9CiBmb3IgY2ZfZGlyIGluICRtb2R1bGVzX3RvX2J1aWxkCiBkbwpAQCAtMTY2MDUsMzEgKzIxOTAwLDQ4IEBACiAJCQkJVEVTVF9BUkdTPSIke1RFU1RfREVQU30iCiAJCQkJVEVTVF9BUkcyPSIke1RFU1RfREVQMn0iCiAJCQllbHNlCi0JCQkJVEVTVF9BUkdTPSItbCR7Y2ZfZGlyfSR7REZUX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCi0JCQkJVEVTVF9BUkcyPSItbCR7Y2ZfZGlyfSR7REZUX0FSR19TVUZGSVh9ICRURVNUX0FSRzIiCisJCQkJVEVTVF9BUkdTPSItbCR7Y2ZfZGlyfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSR1MiCisJCQkJVEVTVF9BUkcyPSItbCR7Y2ZfZGlyfSR7VVNFX0FSR19TVUZGSVh9ICRURVNUX0FSRzIiCiAJCQlmaQorCQkJUENfTU9EVUxFU19UT19NQUtFPSIke1BDX01PRFVMRVNfVE9fTUFLRX0gJHtjZl9kaXJ9JHtVU0VfQVJHX1NVRkZJWH0iCiAJCWZpCiAJZmkKIGRvbmUKLWVjaG8gIiRhc19tZToxNjYxNDogcmVzdWx0OiAkY2ZfY3Zfc3JjX21vZHVsZXMiID4mNQorZWNobyAiJGFzX21lOjIxOTEwOiByZXN1bHQ6ICRjZl9jdl9zcmNfbW9kdWxlcyIgPiY1CiBlY2hvICIke0VDSE9fVH0kY2ZfY3Zfc3JjX21vZHVsZXMiID4mNgogCiBURVNUX0FSR1M9Ii1MJHtMSUJfRElSfSAkVEVTVF9BUkdTIgogVEVTVF9BUkcyPSItTCR7TElCXzJORH0gJFRFU1RfQVJHMiIKIAotU1JDX1NVQkRJUlM9Im1hbiBpbmNsdWRlIgorU1JDX1NVQkRJUlM9CitpZiB0ZXN0ICJ4JGNmX3dpdGhfbWFucGFnZXMiICE9IHhubyA7IHRoZW4KKwlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIG1hbiIKK2ZpCitTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIGluY2x1ZGUiCiBmb3IgY2ZfZGlyIGluICRjZl9jdl9zcmNfbW9kdWxlcwogZG8KIAlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTICRjZl9kaXIiCiBkb25lCi1TUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIHRlc3QiCi10ZXN0IC16ICIkTUFLRV9URVJNSU5GTyIgJiYgU1JDX1NVQkRJUlM9IiRTUkNfU1VCRElSUyBtaXNjIgotdGVzdCAiJGNmX3dpdGhfY3h4X2JpbmRpbmciICE9IG5vICYmIFNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgYysrIgoraWYgdGVzdCAieCRjZl93aXRoX3Rlc3RzIiAhPSAieG5vIiA7IHRoZW4KKwlTUkNfU1VCRElSUz0iJFNSQ19TVUJESVJTIHRlc3QiCitmaQorIyBhbHdheXMgbWFrZSB0aGlzLCB0byBpbnN0YWxsIHRoZSBuY3Vyc2VzLWNvbmZpZyBzY3JpcHQKK1NSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgbWlzYyIKK2lmIHRlc3QgIiRjZl93aXRoX2N4eF9iaW5kaW5nIiAhPSBubzsgdGhlbgorCVBDX01PRFVMRVNfVE9fTUFLRT0iJHtQQ19NT0RVTEVTX1RPX01BS0V9IG5jdXJzZXMrKyR7VVNFX0FSR19TVUZGSVh9IgorCVNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgYysrIgorZmkKKwordGVzdCAieCR3aXRoX3Rlcm1saWIiICE9IHhubyAmJiBQQ19NT0RVTEVTX1RPX01BS0U9IiRQQ19NT0RVTEVTX1RPX01BS0UgJFRJTkZPX0FSR19TVUZGSVgiCit0ZXN0ICJ4JHdpdGhfdGljbGliIiAhPSB4bm8gJiYgUENfTU9EVUxFU19UT19NQUtFPSIkUENfTU9EVUxFU19UT19NQUtFICRUSUNTX0FSR19TVUZGSVgiCiAKIEFEQV9TVUJESVJTPQotaWYgdGVzdCAiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9IHllcyAmJiB0ZXN0IC1mICRzcmNkaXIvQWRhOTUvTWFrZWZpbGUuaW47IHRoZW4KLSAgIFNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgQWRhOTUiCi0gICBBREFfU1VCRElSUz0iZ2VuIHNyYyBzYW1wbGVzIgoraWYgdGVzdCAieCRjZl93aXRoX2FkYSIgPSAieHllcyIgJiYgdGVzdCAieCRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSB4eWVzICYmIHRlc3QgLWYgJHNyY2Rpci9BZGE5NS9NYWtlZmlsZS5pbjsgdGhlbgorCVNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMgQWRhOTUiCisJQURBX1NVQkRJUlM9ImdlbiBzcmMiCisJaWYgdGVzdCAieCRjZl93aXRoX3Rlc3RzIiAhPSAieG5vIiA7IHRoZW4KKwkJQURBX1NVQkRJUlM9IiRBREFfU1VCRElSUyBzYW1wbGVzIgorCWZpCiBmaQogCiBTVUJfTUFLRUZJTEVTPQpAQCAtMTY2MzksMTUgKzIxOTUxLDE2IEBACiBkb25lCiAKIGlmIHRlc3QgLW4gIiRBREFfU1VCRElSUyI7IHRoZW4KLSAgIGZvciBjZl9kaXIgaW4gJEFEQV9TVUJESVJTCi0gICBkbwotICAgICAgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgQWRhOTUvJGNmX2Rpci9NYWtlZmlsZSIKLSAgIGRvbmUKKwlmb3IgY2ZfZGlyIGluICRBREFfU1VCRElSUworCWRvCisJCVNVQl9NQUtFRklMRVM9IiRTVUJfTUFLRUZJTEVTIEFkYTk1LyRjZl9kaXIvTWFrZWZpbGUiCisJZG9uZQogCiBmaQogCi1pZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgJiYgdGVzdCAiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiAhPSAibm8iOyB0aGVuCi0gICBTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBBZGE5NS9nZW4vYWRhY3Vyc2VzLWNvbmZpZyIKK2lmIHRlc3QgIngkY2Zfd2l0aF9hZGEiID0gInh5ZXMiICYmIHRlc3QgIngkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0gInh5ZXMiOyB0aGVuCisgICBTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBBZGE5NS9nZW4vYWRhY3Vyc2VzJHtVU0VfQ0ZHX1NVRkZJWH0tY29uZmlnOkFkYTk1L2dlbi9hZGFjdXJzZXMtY29uZmlnLmluIgorICAgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWFuL2FkYWN1cnNlcyR7VVNFX0NGR19TVUZGSVh9LWNvbmZpZy4xOm1hbi9NS2FkYV9jb25maWcuaW4iCiBmaQogCiBESVJTX1RPX01BS0U9ImxpYiIKQEAgLTE2NjU1LDE1ICsyMTk2OCwxNSBAQAogZG8KIAogCWNhc2UgJGNmX2l0ZW0gaW4KLQlsaWJ0b29sKSBjZl9zdWJkaXI9J29ial9sbycgIDs7Ci0Jbm9ybWFsKSAgY2Zfc3ViZGlyPSdvYmplY3RzJyA7OwotCWRlYnVnKSAgIGNmX3N1YmRpcj0nb2JqX2cnIDs7Ci0JcHJvZmlsZSkgY2Zfc3ViZGlyPSdvYmpfcCcgOzsKLQlzaGFyZWQpCi0JCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluICModmkKLQkJY3lnd2luKSAjKHZpCisJKGxpYnRvb2wpIGNmX3N1YmRpcj0nb2JqX2xvJyAgOzsKKwkobm9ybWFsKSAgY2Zfc3ViZGlyPSdvYmplY3RzJyA7OworCShkZWJ1ZykgICBjZl9zdWJkaXI9J29ial9nJyA7OworCShwcm9maWxlKSBjZl9zdWJkaXI9J29ial9wJyA7OworCShzaGFyZWQpCisJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJCShjeWd3aW58bXN5cykKIAkJCWNmX3N1YmRpcj0nb2JqZWN0cycgOzsKLQkJKikKKwkJKCopCiAJCQljZl9zdWJkaXI9J29ial9zJyA7OwogCQllc2FjCiAJZXNhYwpAQCAtMTY2NzksOCArMjE5OTIsMTMgQEAKIAl0ZXN0ICEgLWQgJGNmX2RpciAmJiBta2RpciAkY2ZfZGlyCiBkb25lCiAKKyMgc3ltYm9scyB0aGF0IGRpZmZlciB3aGVuIGNvbXBpbGluZyBBZGE5NSBieSBpdHNlbGYuCitOQ1VSU0VTX1NITElCMj0kU0hFTEwnICQodG9wX3NyY2RpcikvbWlzYy9zaGxpYicKKworIyB2YWx1ZXMgdG8gdXNlIGFzIHN0cmluZ3MKKwogY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgotI2RlZmluZSBOQ1VSU0VTX1BBVEhTRVAgJyRQQVRIU0VQJworI2RlZmluZSBOQ1VSU0VTX1BBVEhTRVAgJyRQQVRIX1NFUEFSQVRPUicKIEVPRgogCiBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCkBAIC0xNjY5NywxNiArMjIwMTUsMTYgQEAKIGZvciBjZl9hZGRfY2ZsYWdzIGluICRFWFRSQV9DRkxBR1MKIGRvCiBjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLW5vKQotCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4gIyh2aQotCS11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKSAjKHZpCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKIAkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgotCQktRCopCisJCSgtRCopCiAJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKIAotCQkJdGVzdCAiJHtjZl9hZGRfY2ZsYWdzfSIgIT0gIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwogCiAJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCiAJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgpAQCAtMTY3MTgsMjYgKzIyMDM2LDM2IEBACiAJCQk7OwogCQllc2FjCiAJCWNhc2UgIiRDUFBGTEFHUyIgaW4KLQkJKiRjZl9hZGRfY2ZsYWdzKSAjKHZpCisJCSgqJGNmX2FkZF9jZmxhZ3MpCiAJCQk7OwotCQkqKSAjKHZpCisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYwogCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgogCQkJOzsKIAkJZXNhYwogCQk7OwotCSopCisJKCopCiAJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgogCQk7OwogCWVzYWMKIAk7OwoteWVzKQorKHllcykKIAljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCiAKIAljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKIAotCXRlc3QgIiR7Y2ZfYWRkX2NmbGFnc30iICE9ICIke2NmX3RzdF9jZmxhZ3N9IiBcCi0JJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KIAk7OwogZXNhYwogZG9uZQpAQCAtMTY3NDksNyArMjIwNzcsNyBAQAogCiBpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KIAotCUNQUEZMQUdTPSIkY2ZfbmV3X2NwcGZsYWdzICRDUFBGTEFHUyIKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCiBmaQogCiBpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KQEAgLTE2NzU3LDEwMSArMjIwODUsMjIwIEBACiAJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgogZmkKIAotIyMjIElmIHdlJ3JlIGJ1aWxkaW5nIHdpdGggcnBhdGgsIHRyeSB0byBsaW5rIG5vbi1zdGFuZGFyZCBsaWJzIHRoYXQgd2F5IHRvby4KLWlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9ICJzaGFyZWQiOyB0aGVuCi0KLWVjaG8gIiRhc19tZToxNjc2MzogY2hlY2tpbmcgZm9yIHVwZGF0ZWQgTERGTEFHUyIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB1cGRhdGVkIExERkxBR1MuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0IC1uICIkTERGTEFHUyIgOyB0aGVuCi1lY2hvICIkYXNfbWU6MTY3NjY6IHJlc3VsdDogbWF5YmUiID4mNQotZWNobyAiJHtFQ0hPX1R9bWF5YmUiID4mNgotdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2luZyBMREZMQUdTICRMREZMQUdTIiAxPiY2Ci0KLWVjaG8gIiR7YXNfbWUtY29uZmlndXJlfToxNjc3MDogdGVzdGluZyAuLi5jaGVja2luZyBMREZMQUdTICRMREZMQUdTIC4uLiIgMT4mNQotCi10ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmNoZWNraW5nIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjE2Nzc0OiB0ZXN0aW5nIC4uLmNoZWNraW5nIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MgLi4uIiAxPiY1Ci0KLWNhc2UgIiRFWFRSQV9MREZMQUdTIiBpbiAjKHZpCi0tV2wsLXJwYXRoLCopICModmkKLQljZl9ycGF0aF9oYWNrPSItV2wsLXJwYXRoLCIKLQk7OwotLVJcICopCi0JY2ZfcnBhdGhfaGFjaz0iLVIgIgotCTs7Ci0tUiopCi0JY2ZfcnBhdGhfaGFjaz0iLVIiCi0JOzsKLSopCi0JY2ZfcnBhdGhfaGFjaz0KLQk7OwotZXNhYwotaWYgdGVzdCAtbiAiJGNmX3JwYXRoX2hhY2siIDsgdGhlbgotCWNmX3JwYXRoX2RzdD0KLQlmb3IgY2ZfcnBhdGhfc3JjIGluICRMREZMQUdTCi0JZG8KLQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglGaWx0ZXJpbmcgJGNmX3JwYXRoX3NyYyIgMT4mNgotCi1lY2hvICIke2FzX21lLWNvbmZpZ3VyZX06MTY3OTY6IHRlc3RpbmcgRmlsdGVyaW5nICRjZl9ycGF0aF9zcmMgLi4uIiAxPiY1Ci0KLQkJY2FzZSAkY2ZfcnBhdGhfc3JjIGluICModmkKLQkJLUwqKSAjKHZpCi0JCQlpZiB0ZXN0ICIkY2ZfcnBhdGhfaGFjayIgPSAiLVIgIiA7IHRoZW4KLQkJCQljZl9ycGF0aF90bXA9YGVjaG8gIiRjZl9ycGF0aF9zcmMiIHxzZWQgLWUgJ3MlLUwlLVIgJSdgCi0JCQllbHNlCi0JCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lIHMlLUwlJGNmX3JwYXRoX2hhY2slYAotCQkJZmkKLQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uRmlsdGVyICRjZl9ycGF0aF90bXAiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjE2ODA3OiB0ZXN0aW5nIC4uLkZpbHRlciAkY2ZfcnBhdGhfdG1wIC4uLiIgMT4mNQotCi0JCQlFWFRSQV9MREZMQUdTPSIkY2ZfcnBhdGhfdG1wICRFWFRSQV9MREZMQUdTIgotCQkJOzsKLQkJZXNhYwotCQljZl9ycGF0aF9kc3Q9IiRjZl9ycGF0aF9kc3QgJGNmX3JwYXRoX3NyYyIKLQlkb25lCi0JTERGTEFHUz0kY2ZfcnBhdGhfZHN0Ci0JdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2VkIExERkxBR1MgJExERkxBR1MiIDE+JjYKLQotZWNobyAiJHthc19tZS1jb25maWd1cmV9OjE2ODE3OiB0ZXN0aW5nIC4uLmNoZWNrZWQgTERGTEFHUyAkTERGTEFHUyAuLi4iIDE+JjUKLQotCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uY2hlY2tlZCBFWFRSQV9MREZMQUdTICRFWFRSQV9MREZMQUdTIiAxPiY2Ci0KLWVjaG8gIiR7YXNfbWUtY29uZmlndXJlfToxNjgyMTogdGVzdGluZyAuLi5jaGVja2VkIEVYVFJBX0xERkxBR1MgJEVYVFJBX0xERkxBR1MgLi4uIiAxPiY1Ci0KLWZpCi1lbHNlCi1lY2hvICIkYXNfbWU6MTY4MjU6IHJlc3VsdDogbm8iID4mNQotZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotZmkKLQotZmkKLQogIyMjIERlZmluZSBzdWJzdGl0dXRpb25zIGZvciBoZWFkZXIgZmlsZXMgdG8gYXZvaWQgbmFtZS1wb2xsdXRpb24KIAotaWYgdGVzdCAiJGNmX2N2X2hhdmVfdGNnZXRhdHRyIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkY2ZfY3ZfaGF2ZV90Y2dldGF0dHIiID0geHllcyA7IHRoZW4KIAlIQVZFX1RDR0VUQVRUUj0xCiBlbHNlCiAJSEFWRV9UQ0dFVEFUVFI9MAogZmkKIAotaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl90ZXJtaW9faCIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSB4eWVzIDsgdGhlbgorCUhBVkVfU1RESU5UX0g9MQorZWxzZQorCUhBVkVfU1RESU5UX0g9MAorZmkKKworaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdGVybWlvX2giID0geHllcyA7IHRoZW4KIAlIQVZFX1RFUk1JT19IPTEKIGVsc2UKIAlIQVZFX1RFUk1JT19IPTAKIGZpCiAKLWlmIHRlc3QgIiRhY19jdl9oZWFkZXJfdGVybWlvc19oIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3Rlcm1pb3NfaCIgPSB4eWVzIDsgdGhlbgogCUhBVkVfVEVSTUlPU19IPTEKIGVsc2UKIAlIQVZFX1RFUk1JT1NfSD0wCiBmaQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotdGVzdCAiJHVzZV9kYXRhYmFzZSIgPSB5ZXMgJiYgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9ydW5fdGljLnNoOm1pc2MvcnVuX3RpYy5pbiIKK3Rlc3QgIngkdXNlX2RhdGFiYXNlIiA9IHh5ZXMgJiYgXAorU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9ydW5fdGljLnNoOm1pc2MvcnVuX3RpYy5pbiIKKwogU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9uY3Vyc2VzLWNvbmZpZzptaXNjL25jdXJzZXMtY29uZmlnLmluIgotYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGluY2x1ZGUvTUt0ZXJtLmguYXdrIGluY2x1ZGUvY3Vyc2VzLmhlYWQ6aW5jbHVkZS9jdXJzZXMuaC5pbiBpbmNsdWRlL3Rlcm1jYXAuaCBpbmNsdWRlL3VuY3RybC5oICRTVUJfTUFLRUZJTEVTIE1ha2VmaWxlIgorU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWFuL25jdXJzZXMke1VTRV9DRkdfU1VGRklYfS1jb25maWcuMTptYW4vTUtuY3VfY29uZmlnLmluIgorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wY19maWxlcyIgPSB4eWVzIDsgdGhlbiBcCitTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBtaXNjL2dlbi1wa2djb25maWc6bWlzYy9nZW4tcGtnY29uZmlnLmluIgorTUFLRV9QQ19GSUxFUz0KK2Vsc2UKK01BS0VfUENfRklMRVM9IiMiCitmaQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInRpYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgdGljOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjIxMzA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9USUNfUEFUSCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXNlICRUSUNfUEFUSCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9USUNfUEFUSD0iJFRJQ19QQVRIIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIOi91c3IvbG9jYWwvbmN1cnNlcy9iaW4iCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIjsgdGhlbgorICAgYWNfY3ZfcGF0aF9USUNfUEFUSD0iJGFjX2Rpci8kYWNfd29yZCIKKyAgIGVjaG8gIiRhc19tZToyMjE0NzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CisgICBicmVhaworZmkKK2RvbmUKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9USUNfUEFUSCIgJiYgYWNfY3ZfcGF0aF9USUNfUEFUSD0idW5rbm93biIKKyAgOzsKK2VzYWMKK2ZpCitUSUNfUEFUSD0kYWNfY3ZfcGF0aF9USUNfUEFUSAorCitpZiB0ZXN0IC1uICIkVElDX1BBVEgiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyMjE1OTogcmVzdWx0OiAkVElDX1BBVEgiID4mNQorZWNobyAiJHtFQ0hPX1R9JFRJQ19QQVRIIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjIyMTYyOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2lmIHRlc3QgLW4gIiRGQUxMQkFDS19MSVNUIgordGhlbgorCWlmIHRlc3QgIiRUSUNfUEFUSCIgPSB1bmtub3duCisJdGhlbgorCQl7IGVjaG8gIiRhc19tZToyMjE3MDogV0FSTklORzogbm8gdGljIHByb2dyYW0gZm91bmQgZm9yIGZhbGxiYWNrcyIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIHRpYyBwcm9ncmFtIGZvdW5kIGZvciBmYWxsYmFja3MiID4mMjt9CisJZmkKK2ZpCisKK2lmIHRlc3QgIngkY2Zfd2l0aF90ZXN0cyIgIT0geG5vIDsgdGhlbgorCU1BS0VfVEVTVFM9CitlbHNlCisJTUFLRV9URVNUUz0iIyIKK2ZpCisKK0FEQUhUTUxfRElSPS4uLy4uL2RvYy9odG1sL2FkYQorCisjIHRoZXNlIGNvdWxkIGJlIGNvbmZpZ3VyYWJsZSwgYnV0IGFyZSBub3QgY3VycmVudGx5CitQQU5FTF9OQU1FPXBhbmVsCitNRU5VX05BTUU9bWVudQorRk9STV9OQU1FPWZvcm0KK0NYWF9OQU1FPW5jdXJzZXMrKworCisjIHdvcmthcm91bmQgZm9yIGcrKyB2ZXJzdXMgU29sYXJpcyAoMjAxMzExMTYpCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKHNvbGFyaXMyKikKKwljYXNlICJ4JENQUEZMQUdTIiBpbgorCSgqLURfWE9QRU5fU09VUkNFX0VYVEVOREVEKikKKwkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgltb3ZpbmcgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCB0byB3b3JrIGFyb3VuZCBnKysgcHJvYmxlbSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjIyMTk2OiB0ZXN0aW5nIG1vdmluZyBfWE9QRU5fU09VUkNFX0VYVEVOREVEIHRvIHdvcmsgYXJvdW5kIGcrKyBwcm9ibGVtIC4uLiIgMT4mNQorCisJCUNGTEFHUz0iJENGTEFHUyAtRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQiCisJCUNQUEZMQUdTPWBlY2hvICJ4JENQUEZMQUdTIiB8IHNlZCAtZSAgJ3MvXi4vLycgLWUgJ3MvLURfWE9QRU5fU09VUkNFX0VYVEVOREVELy8nYAorCQk7OworCWVzYWMKKwk7OworZXNhYworCisjIEhlbHAgdG8gYXV0b21hdGljYWxseSBlbmFibGUgdGhlIGV4dGVuZGVkIGN1cnNlcyBmZWF0dXJlcyB3aGVuIHVzaW5nIGVpdGhlcgorIyB0aGUgKi1jb25maWcgb3IgdGhlICIucGMiIGZpbGVzIGJ5IGFkZGluZyBkZWZpbmVzLgorZWNobyAiJGFzX21lOjIyMjA3OiBjaGVja2luZyBmb3IgZGVmaW5lcyB0byBhZGQgdG8gbmN1cnNlcyR7VVNFX0NGR19TVUZGSVh9LWNvbmZpZyBzY3JpcHQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGVmaW5lcyB0byBhZGQgdG8gbmN1cnNlcyR7VVNFX0NGR19TVUZGSVh9LWNvbmZpZyBzY3JpcHQuLi4gJEVDSE9fQyIgPiY2CitQS0dfQ0ZMQUdTPQorZm9yIGNmX2xvb3AxIGluICRDUFBGTEFHU19hZnRlcl9YT1BFTgorZG8KKwljZl9mb3VuZD1ubworCWZvciBjZl9sb29wMiBpbiAkQ1BQRkxBR1NfYmVmb3JlX1hPUEVOCisJZG8KKwkJaWYgdGVzdCAieCRjZl9sb29wMSIgPSAieCRjZl9sb29wMiIKKwkJdGhlbgorCQkJY2ZfZm91bmQ9eWVzCisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0ICIkY2ZfZm91bmQiID0gbm8gJiYgUEtHX0NGTEFHUz0iJFBLR19DRkxBR1MgJGNmX2xvb3AxIgorZG9uZQorZWNobyAiJGFzX21lOjIyMjIzOiByZXN1bHQ6ICRQS0dfQ0ZMQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRQS0dfQ0ZMQUdTIiA+JjYKKworIyBBQ19DSEVDS19TSVpFT0YgZGVtYW5kcyBhIGxpdGVyYWwgcGFyYW1ldGVyLCBubyB2YXJpYWJsZXMuICBTbyB3ZSBkbyB0aGlzLgorY2FzZSAieCROQ1VSU0VTX09TUEVFRCIgaW4KKygqc2hvcnQqKQorCWNmX2NvbXBhdGlibGU9MQorCTs7CisoKikKKwljZl9jb21wYXRpYmxlPTAKKwk7OworZXNhYworCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIE5DVVJTRVNfT1NQRUVEX0NPTVBBVCAkY2ZfY29tcGF0aWJsZQorRU9GCisKK2Nhc2UgIngkY2ZfY3ZfdHlwZW9mX2NodHlwZSIgaW4KKyh4c2hvcnR8eGludHx4bG9uZykKKwljZl9jdl90eXBlb2ZfY2h0eXBlPSJ1bnNpZ25lZCAkY2ZfY3ZfdHlwZW9mX2NodHlwZSIKKwk7OworZXNhYworCitjYXNlICJ4JGNmX2N2X3R5cGVvZl9tbWFza190IiBpbgorKHhzaG9ydHx4aW50fHhsb25nKQorCWNmX2N2X3R5cGVvZl9tbWFza190PSJ1bnNpZ25lZCAkY2ZfY3ZfdHlwZW9mX21tYXNrX3QiCisJOzsKK2VzYWMKKworIyBzdWJzdGl0dXRlIGludG8gbWlzYy9NYWtlZmlsZSB0byBzdXBwcmVzcworIyAodW4paW5zdGFsbC5kYXRhIGZyb20gdGhlCisjICh1bilpbnN0YWxsIHJ1bGVzLgoraWYgdGVzdCAieCRjZl93aXRoX2RiX2luc3RhbGwiID0gInhubyI7IHRoZW4KKwlNSVNDX0lOU1RBTExfREFUQT0KKwlNSVNDX1VOSU5TVEFMTF9EQVRBPQorZWxzZQorCU1JU0NfSU5TVEFMTF9EQVRBPWluc3RhbGwuZGF0YQorCU1JU0NfVU5JTlNUQUxMX0RBVEE9dW5pbnN0YWxsLmRhdGEKK2ZpCisKK1NVQl9TQ1JJUFRTPQorCitpZiB0ZXN0IC1uICIkUEFDS0FHRSIKK3RoZW4KKwlQQUNLQUdFPSIke1BBQ0tBR0V9JHtERlRfQVJHX1NVRkZJWH0iCisJZXhwb3J0IFBBQ0tBR0UKKwllY2hvICJwYWNrYWdlOiAkUEFDS0FHRSIKK2ZpCisKK1VOQUxURVJFRF9TWU1TPQorY2ZfZmlsdGVyX3N5bXM9bm8KKworaWYgdGVzdCAtbiAiJFJFU1VMVElOR19TWU1TIgordGhlbgorCWNmX2ZpbHRlcl9zeW1zPSRjZl9kZnRfZmlsdGVyX3N5bXMKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXdpbGwgbWFwIHN5bWJvbHMgdG8gQUJJPSRjZl9jdl9hYmlfdmVyc2lvbiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjIyMjgwOiB0ZXN0aW5nIHdpbGwgbWFwIHN5bWJvbHMgdG8gQUJJPSRjZl9jdl9hYmlfdmVyc2lvbiAuLi4iIDE+JjUKKworZmkKKworaWYgdGVzdCAieCRXSUxEQ0FSRF9TWU1TIiA9IHhubwordGhlbgorCWNmX2ZpbHRlcl9zeW1zPXllcworZmkKKworVU5BTFRFUkVEX1NZTVM9YGVjaG8gIiRSRVNVTFRJTkdfU1lNUyIgfCBzZWQgLWUgJ3MvXFwkL1xcXFwkL2cnYAoraWYgdGVzdCAkY2ZfZmlsdGVyX3N5bXMgPSB5ZXMKK3RoZW4KKwlSRVNVTFRJTkdfU1lNUz1yZXN1bHRpbmcubWFwCitmaQorCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzIDsgdGhlbgorCUFEQUdFTl9MREZMQUdTPSckKENST1NTX0xERkxBR1MpJworZWxzZQorCUFEQUdFTl9MREZMQUdTPSckKE5BVElWRV9MREZMQUdTKScKK2ZpCisKK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBpbmNsdWRlL01LdGVybS5oLmF3ayBpbmNsdWRlL2N1cnNlcy5oZWFkOmluY2x1ZGUvY3Vyc2VzLmguaW4gaW5jbHVkZS9uY3Vyc2VzX2RsbC5oIGluY2x1ZGUvdGVybWNhcC5oIGluY2x1ZGUvdW5jdHJsLmggJFNVQl9TQ1JJUFRTICRTVUJfTUFLRUZJTEVTIE1ha2VmaWxlIgogYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlZmF1bHQiCiBjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKICMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQpAQCAtMTY5MzIsNyArMjIzNzksNyBAQAogOiAke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQogYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKIGFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCi17IGVjaG8gIiRhc19tZToxNjkzNTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQoreyBlY2hvICIkYXNfbWU6MjIzODI6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9CiBjYXQgPiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCiAjISAkU0hFTEwKQEAgLTE3MDU4LDEzICsyMjUwNSwxMyBAQAogQ29uZmlndXJhdGlvbiBjb21tYW5kczoKICRjb25maWdfY29tbWFuZHMKIAotUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1hdXRvY29uZkBnbnUub3JnPi4iCitSZXBvcnQgYnVncyB0byA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Pi4iCiBFT0YKIAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxFT0YKIGFjX2NzX3ZlcnNpb249IlxcCiBjb25maWcuc3RhdHVzCi1jb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTIuMjAwODAzMjUsCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTIuMjAxNDEyMDQsCiAgIHdpdGggb3B0aW9ucyBcXCJgZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9bXFwiIlxgXCRdL1xcXFwmL2cnYFxcIgogCiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQpAQCAtMTcxMDgsNyArMjI1NTUsNyBAQAogICAgIGVjaG8gIiRhY19jc192ZXJzaW9uIjsgZXhpdCAwIDs7CiAgIC0taGUgfCAtLWgpCiAgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKLSAgICB7IHsgZWNobyAiJGFzX21lOjE3MTExOiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKKyAgICB7IHsgZWNobyAiJGFzX21lOjIyNTU4OiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCiBUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KQEAgLTE3MTI3LDcgKzIyNTc0LDcgQEAKICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKIAogICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0gIC0qKSB7IHsgZWNobyAiJGFzX21lOjE3MTMwOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKKyAgLSopIHsgeyBlY2hvICIkYXNfbWU6MjI1Nzc6IGVycm9yOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAkMQogVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjI7fQpAQCAtMTcxNDYsNyArMjI1OTMsNyBAQAogIyMgUnVubmluZyBjb25maWcuc3RhdHVzLiAgIyMKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgJGFzX21lIDIuNTIuMjAwODAzMjUsIGV4ZWN1dGVkIHdpdGgKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgJGFzX21lIDIuNTIuMjAxNDEyMDQsIGV4ZWN1dGVkIHdpdGgKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwogICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKICAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwpAQCAtMTcxNjYsMTQgKzIyNjEzLDE5IEBACiAjIyMgY29uZmlndXJhdGlvbi1ydW4gaW50byBjb25maWcuc3RhdHVzCiAKIEFXSz0iJEFXSyIKK0FMVEVSTkFURV9TWU1TPSIkQUxURVJOQVRFX1NZTVMiCiBERlRfQVJHX1NVRkZJWD0iJERGVF9BUkdfU1VGRklYIgogREZUX0xXUl9NT0RFTD0iJERGVF9MV1JfTU9ERUwiCi1FQ0hPX0xJTks9IiRFQ0hPX0xJTksiCitFQ0hPX0xEPSIkRUNIT19MRCIKK0VYVFJBX1NVRkZJWD0iJEVYVFJBX1NVRkZJWCIKIExEQ09ORklHPSIkTERDT05GSUciCitMSUJUT09MX1ZFUlNJT049IiRMSUJUT09MX1ZFUlNJT04iCiBMSUJfTkFNRT0iJExJQl9OQU1FIgorTElCX1BSRUZJWD0iJExJQl9QUkVGSVgiCiBMSUJfU1VCU0VUUz0iJExJQl9TVUJTRVRTIgogTElCX1NVRkZJWD0iJExJQl9TVUZGSVgiCiBMSUJfVFJBQ0lORz0iJExJQl9UUkFDSU5HIgorTE5fUz0iJExOX1MiCiBNQUtFX1RFUk1JTkZPPSIkTUFLRV9URVJNSU5GTyIKIE5DVVJTRVNfTUFKT1I9IiROQ1VSU0VTX01BSk9SIgogTkNVUlNFU19NSU5PUj0iJE5DVVJTRVNfTUlOT1IiCkBAIC0xNzE4MSwxNSArMjI2MzMsMjIgQEAKIE5DVVJTRVNfUEFUQ0g9IiROQ1VSU0VTX1BBVENIIgogU1JDX1NVQkRJUlM9IiRTUkNfU1VCRElSUyIKIFRFUk1JTkZPPSIkVEVSTUlORk8iCitUSUNTX0FSR19TVUZGSVg9IiRUSUNTX0FSR19TVUZGSVgiCitUSUNTX0xJQl9TVUZGSVg9IiRUSUNTX0xJQl9TVUZGSVgiCitUSUNTX05BTUU9IiRUSUNTX05BTUUiCitUSUNfUEFUSD0iJFRJQ19QQVRIIgogVElORk9fQVJHX1NVRkZJWD0iJFRJTkZPX0FSR19TVUZGSVgiCiBUSU5GT19MSUJfU1VGRklYPSIkVElORk9fTElCX1NVRkZJWCIKIFRJTkZPX05BTUU9IiRUSU5GT19OQU1FIgogVElORk9fU1VGRklYPSIkVElORk9fU1VGRklYIgotVElDU19BUkdfU1VGRklYPSIkVElDU19BUkdfU1VGRklYIgotVElDU19MSUJfU1VGRklYPSIkVElDU19MSUJfU1VGRklYIgotVElDU19OQU1FPSIkVElDU19OQU1FIgorVU5BTFRFUkVEX1NZTVM9IiRVTkFMVEVSRURfU1lNUyIKK1VTRV9BUkdfU1VGRklYPSIkVVNFX0FSR19TVUZGSVgiCitVU0VfQ0ZHX1NVRkZJWD0iJFVTRV9DRkdfU1VGRklYIgorVVNFX0xJQl9TVUZGSVg9IiRVU0VfTElCX1NVRkZJWCIKK1VTRV9PTERfTUFLRVJVTEVTPSIkVVNFX09MRF9NQUtFUlVMRVMiCitXSUxEQ0FSRF9TWU1TPSIkV0lMRENBUkRfU1lNUyIKIFdJVEhfQ1VSU0VTX0g9IiR3aXRoX2N1cnNlc19oIgotV0lUSF9FQ0hPPSIkd2l0aF9lY2hvIgorV0lUSF9FQ0hPPSIke2VuYWJsZV9lY2hvOj15ZXN9IgogV0lUSF9PVkVSV1JJVEU9IiR3aXRoX292ZXJ3cml0ZSIKIGNmX0xJU1RfTU9ERUxTPSIkY2ZfbGlzdF9tb2RlbHMiCiBjZl9jdl9hYmlfdmVyc2lvbj0iJGNmX2N2X2FiaV92ZXJzaW9uIgpAQCAtMTcxOTksMTUgKzIyNjU4LDIyIEBACiBjZl9jdl9lbmFibGVfb3BhcXVlPSIkY2ZfY3ZfZW5hYmxlX29wYXF1ZSIKIGNmX2N2X3Byb2dfQ0NfY19vPSRjZl9jdl9wcm9nX0NDX2NfbwogY2ZfY3ZfcHJvZ19DWFhfY19vPSRjZl9jdl9wcm9nX0NYWF9jX28KK2NmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PSRjZl9jdl9wcm9nX2duYXRfY29ycmVjdAogY2ZfY3ZfcmVsX3ZlcnNpb249IiRjZl9jdl9yZWxfdmVyc2lvbiIKIGNmX2N2X3JtX3NvX2xvY3M9IiRjZl9jdl9ybV9zb19sb2NzIgogY2ZfY3Zfc2hhcmVkX3NvbmFtZT0nJGNmX2N2X3NoYXJlZF9zb25hbWUnCiBjZl9jdl9zaGxpYl92ZXJzaW9uPSIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIKIGNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9IiRjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4IgogY2ZfY3Zfc3lzdGVtX25hbWU9IiRjZl9jdl9zeXN0ZW1fbmFtZSIKK2NmX2N2X3Rlcm1fZHJpdmVyPSIkd2l0aF90ZXJtX2RyaXZlciIKK2NmX3dpdGhfYWRhPSIkY2Zfd2l0aF9hZGEiCiBjZl93aXRoX2N4eF9iaW5kaW5nPSIkY2Zfd2l0aF9jeHhfYmluZGluZyIKK2NmX3dpdGhfZGJfaW5zdGFsbD0iJGNmX3dpdGhfZGJfaW5zdGFsbCIKK2NmX3dpdGhfbWFucGFnZXM9IiRjZl93aXRoX21hbnBhZ2VzIgorY2Zfd2l0aF90ZXN0cz0iJGNmX3dpdGhfdGVzdHMiCiBob3N0PSIkaG9zdCIKIHRhcmdldD0iJHRhcmdldCIKK3dpdGhfc2hhcmVkX2N4eD0iJHdpdGhfc2hhcmVkX2N4eCIKIAogRU9GCiAKQEAgLTE3MjE4LDEzICsyMjY4NCwxNSBAQAogICAjIEhhbmRsaW5nIG9mIGFyZ3VtZW50cy4KICAgImluY2x1ZGUvTUt0ZXJtLmguYXdrIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBpbmNsdWRlL01LdGVybS5oLmF3ayIgOzsKICAgImluY2x1ZGUvY3Vyc2VzLmhlYWQiICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGluY2x1ZGUvY3Vyc2VzLmhlYWQ6aW5jbHVkZS9jdXJzZXMuaC5pbiIgOzsKKyAgImluY2x1ZGUvbmN1cnNlc19kbGwuaCIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaW5jbHVkZS9uY3Vyc2VzX2RsbC5oIiA7OwogICAiaW5jbHVkZS90ZXJtY2FwLmgiICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGluY2x1ZGUvdGVybWNhcC5oIiA7OwogICAiaW5jbHVkZS91bmN0cmwuaCIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaW5jbHVkZS91bmN0cmwuaCIgOzsKKyAgIiRTVUJfU0NSSVBUUyIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgJFNVQl9TQ1JJUFRTIiA7OwogICAiJFNVQl9NQUtFRklMRVMiICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTICRTVUJfTUFLRUZJTEVTIiA7OwogICAiTWFrZWZpbGUiICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7OwogICAiZGVmYXVsdCIgKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVmYXVsdCIgOzsKICAgImluY2x1ZGUvbmN1cnNlc19jZmcuaCIgKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTIGluY2x1ZGUvbmN1cnNlc19jZmcuaDppbmNsdWRlL25jdXJzZXNfY2ZnLmhpbiIgOzsKLSAgKikgeyB7IGVjaG8gIiRhc19tZToxNzIyNzogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjUKKyAgKikgeyB7IGVjaG8gIiRhc19tZToyMjY5NTogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKICAgZXNhYwpAQCAtMTcyODMsNiArMjI3NTEsNyBAQAogcyxAYmluZGlyQCwkYmluZGlyLDt0IHQKIHMsQHNiaW5kaXJALCRzYmluZGlyLDt0IHQKIHMsQGxpYmV4ZWNkaXJALCRsaWJleGVjZGlyLDt0IHQKK3MsQGRhdGFyb290ZGlyQCwkZGF0YXJvb3RkaXIsO3QgdAogcyxAZGF0YWRpckAsJGRhdGFkaXIsO3QgdAogcyxAc3lzY29uZmRpckAsJHN5c2NvbmZkaXIsO3QgdAogcyxAc2hhcmVkc3RhdGVkaXJALCRzaGFyZWRzdGF0ZWRpciw7dCB0CkBAIC0xNzMxNiw2ICsyMjc4NSwxMSBAQAogcyxAY2ZfY3ZfYnVpbHRpbl9ib29sQCwkY2ZfY3ZfYnVpbHRpbl9ib29sLDt0IHQKIHMsQGNmX2N2X2hlYWRlcl9zdGRib29sX2hALCRjZl9jdl9oZWFkZXJfc3RkYm9vbF9oLDt0IHQKIHMsQGNmX2N2X3R5cGVfb2ZfYm9vbEAsJGNmX2N2X3R5cGVfb2ZfYm9vbCw7dCB0CitzLEBWRVJTSU9OQCwkVkVSU0lPTiw7dCB0CitzLEBWRVJTSU9OX01BSk9SQCwkVkVSU0lPTl9NQUpPUiw7dCB0CitzLEBWRVJTSU9OX01JTk9SQCwkVkVSU0lPTl9NSU5PUiw7dCB0CitzLEBWRVJTSU9OX1BBVENIQCwkVkVSU0lPTl9QQVRDSCw7dCB0CitzLEBQQUNLQUdFQCwkUEFDS0FHRSw7dCB0CiBzLEBidWlsZEAsJGJ1aWxkLDt0IHQKIHMsQGJ1aWxkX2NwdUAsJGJ1aWxkX2NwdSw7dCB0CiBzLEBidWlsZF92ZW5kb3JALCRidWlsZF92ZW5kb3IsO3QgdApAQCAtMTczMzUsOSArMjI4MDksOCBAQAogcyxAYWNfY3RfQ0NALCRhY19jdF9DQyw7dCB0CiBzLEBFWEVFWFRALCRFWEVFWFQsO3QgdAogcyxAT0JKRVhUQCwkT0JKRVhULDt0IHQKLXMsQENQUEAsJENQUCw7dCB0CiBzLEBFWFRSQV9DUFBGTEFHU0AsJEVYVFJBX0NQUEZMQUdTLDt0IHQKLXMsQFBST0dfRVhUQCwkUFJPR19FWFQsO3QgdAorcyxAQ1BQQCwkQ1BQLDt0IHQKIHMsQExEQ09ORklHQCwkTERDT05GSUcsO3QgdAogcyxAQ1hYQCwkQ1hYLDt0IHQKIHMsQENYWEZMQUdTQCwkQ1hYRkxBR1MsO3QgdApAQCAtMTczNDksNyArMjI4MjIsMTQgQEAKIHMsQExJTlRALCRMSU5ULDt0IHQKIHMsQExJTlRfT1BUU0AsJExJTlRfT1BUUyw7dCB0CiBzLEBMTl9TQCwkTE5fUyw7dCB0CitzLEBQS0dfQ09ORklHQCwkUEtHX0NPTkZJRyw7dCB0CitzLEBhY19wdF9QS0dfQ09ORklHQCwkYWNfcHRfUEtHX0NPTkZJRyw7dCB0CitzLEBQS0dfQ09ORklHX0xJQkRJUkAsJFBLR19DT05GSUdfTElCRElSLDt0IHQKK3MsQE1BS0VfUENfRklMRVNALCRNQUtFX1BDX0ZJTEVTLDt0IHQKK3MsQFBDX01PRFVMRV9TVUZGSVhALCRQQ19NT0RVTEVfU1VGRklYLDt0IHQKIHMsQFNFVF9NQUtFQCwkU0VUX01BS0UsO3QgdAorcyxAQ1RBR1NALCRDVEFHUyw7dCB0CitzLEBFVEFHU0AsJEVUQUdTLDt0IHQKIHMsQE1BS0VfTE9XRVJfVEFHU0AsJE1BS0VfTE9XRVJfVEFHUyw7dCB0CiBzLEBNQUtFX1VQUEVSX1RBR1NALCRNQUtFX1VQUEVSX1RBR1MsO3QgdAogcyxAY2ZfY3ZfbWFrZWZsYWdzQCwkY2ZfY3ZfbWFrZWZsYWdzLDt0IHQKQEAgLTE3MzU5LDcgKzIyODM5LDkgQEAKIHMsQGFjX2N0X0xEQCwkYWNfY3RfTEQsO3QgdAogcyxAQVJALCRBUiw7dCB0CiBzLEBhY19jdF9BUkAsJGFjX2N0X0FSLDt0IHQKLXMsQEFSX09QVFNALCRBUl9PUFRTLDt0IHQKK3MsQE5NQCwkTk0sO3QgdAorcyxAYWNfY3RfTk1ALCRhY19jdF9OTSw7dCB0CitzLEBBUkZMQUdTQCwkQVJGTEFHUyw7dCB0CiBzLEBERVNURElSQCwkREVTVERJUiw7dCB0CiBzLEBCVUlMRF9DQ0AsJEJVSUxEX0NDLDt0IHQKIHMsQEJVSUxEX0NQUEAsJEJVSUxEX0NQUCw7dCB0CkBAIC0xNzM3MCw3ICsyMjg1MiwxMSBAQAogcyxAQlVJTERfRVhFRVhUQCwkQlVJTERfRVhFRVhULDt0IHQKIHMsQEJVSUxEX09CSkVYVEAsJEJVSUxEX09CSkVYVCw7dCB0CiBzLEBjZl9saXN0X21vZGVsc0AsJGNmX2xpc3RfbW9kZWxzLDt0IHQKK3MsQEFCSV9WRVJTSU9OQCwkQUJJX1ZFUlNJT04sO3QgdAorcyxATElCVE9PTF9WRVJTSU9OQCwkTElCVE9PTF9WRVJTSU9OLDt0IHQKIHMsQExJQlRPT0xALCRMSUJUT09MLDt0IHQKK3MsQGFjX2N0X0xJQlRPT0xALCRhY19jdF9MSUJUT09MLDt0IHQKK3MsQExUX1VOREVGQCwkTFRfVU5ERUYsO3QgdAogcyxATElCVE9PTF9DWFhALCRMSUJUT09MX0NYWCw7dCB0CiBzLEBMSUJUT09MX09QVFNALCRMSUJUT09MX09QVFMsO3QgdAogcyxATElCX0NSRUFURUAsJExJQl9DUkVBVEUsO3QgdApAQCAtMTczOTEsMjQgKzIyODc3LDM3IEBACiBzLEBDQ19HX09QVEAsJENDX0dfT1BULDt0IHQKIHMsQENYWF9HX09QVEAsJENYWF9HX09QVCw7dCB0CiBzLEBMRF9NT0RFTEAsJExEX01PREVMLDt0IHQKK3MsQHNobGliZGlyQCwkc2hsaWJkaXIsO3QgdAorcyxATUFLRV9ETExTQCwkTUFLRV9ETExTLDt0IHQKIHMsQENDX1NIQVJFRF9PUFRTQCwkQ0NfU0hBUkVEX09QVFMsO3QgdAorcyxATERfUlBBVEhfT1BUQCwkTERfUlBBVEhfT1BULDt0IHQKIHMsQExEX1NIQVJFRF9PUFRTQCwkTERfU0hBUkVEX09QVFMsO3QgdAogcyxATUtfU0hBUkVEX0xJQkAsJE1LX1NIQVJFRF9MSUIsO3QgdAorcyxAUk1fU0hBUkVEX09QVFNALCRSTV9TSEFSRURfT1BUUyw7dCB0CiBzLEBMSU5LX1BST0dTQCwkTElOS19QUk9HUyw7dCB0CiBzLEBMSU5LX1RFU1RTQCwkTElOS19URVNUUyw7dCB0CiBzLEBFWFRSQV9MREZMQUdTQCwkRVhUUkFfTERGTEFHUyw7dCB0CiBzLEBMT0NBTF9MREZMQUdTQCwkTE9DQUxfTERGTEFHUyw7dCB0CiBzLEBMT0NBTF9MREZMQUdTMkAsJExPQ0FMX0xERkxBR1MyLDt0IHQKIHMsQElOU1RBTExfTElCQCwkSU5TVEFMTF9MSUIsO3QgdAorcyxAUlBBVEhfTElTVEAsJFJQQVRIX0xJU1QsO3QgdAorcyxARVhQT1JUX1NZTVNALCRFWFBPUlRfU1lNUyw7dCB0CitzLEBSRVNVTFRJTkdfU1lNU0AsJFJFU1VMVElOR19TWU1TLDt0IHQKK3MsQFZFUlNJT05FRF9TWU1TQCwkVkVSU0lPTkVEX1NZTVMsO3QgdAorcyxAV0lMRENBUkRfU1lNU0AsJFdJTERDQVJEX1NZTVMsO3QgdAorcyxAY2ZfbGRkX3Byb2dALCRjZl9sZGRfcHJvZyw7dCB0CitzLEBFWFRSQV9TVUZGSVhALCRFWFRSQV9TVUZGSVgsO3QgdAogcyxAVEVSTUlORk9fU1JDQCwkVEVSTUlORk9fU1JDLDt0IHQKLXMsQFBBVEhTRVBALCRQQVRIU0VQLDt0IHQKK3MsQE5DVVJTRVNfVVNFX0RBVEFCQVNFQCwkTkNVUlNFU19VU0VfREFUQUJBU0UsO3QgdAogcyxARkFMTEJBQ0tfTElTVEAsJEZBTExCQUNLX0xJU1QsO3QgdAogcyxAV0hJQ0hfWFRFUk1ALCRXSElDSF9YVEVSTSw7dCB0CitzLEBYVEVSTV9LQlNALCRYVEVSTV9LQlMsO3QgdAogcyxAVEVSTUlORk9fRElSU0AsJFRFUk1JTkZPX0RJUlMsO3QgdAogcyxAVEVSTUlORk9ALCRURVJNSU5GTyw7dCB0CiBzLEBNQUtFX1RFUk1JTkZPQCwkTUFLRV9URVJNSU5GTyw7dCB0CiBzLEBVU0VfQklHX1NUUklOR1NALCRVU0VfQklHX1NUUklOR1MsO3QgdAogcyxAVEVSTVBBVEhALCRURVJNUEFUSCw7dCB0CitzLEBOQ1VSU0VTX1VTRV9URVJNQ0FQQCwkTkNVUlNFU19VU0VfVEVSTUNBUCw7dCB0CiBzLEBCUk9LRU5fTElOS0VSQCwkQlJPS0VOX0xJTktFUiw7dCB0CiBzLEBOQ1VSU0VTX0NIX1RALCROQ1VSU0VTX0NIX1QsO3QgdAogcyxATkNVUlNFU19MSUJVVEY4QCwkTkNVUlNFU19MSUJVVEY4LDt0IHQKQEAgLTE3NDIzLDE5ICsyMjkyMiwzMiBAQAogcyxATkNVUlNFU19CT09MQCwkTkNVUlNFU19CT09MLDt0IHQKIHMsQFRFUk1JTkZPX0NBUFNALCRURVJNSU5GT19DQVBTLDt0IHQKIHMsQE5DVVJTRVNfT1NQRUVEQCwkTkNVUlNFU19PU1BFRUQsO3QgdAorcyxATkNVUlNFU19DQ0hBUldfTUFYQCwkTkNVUlNFU19DQ0hBUldfTUFYLDt0IHQKK3MsQE5DVVJTRVNfVFBBUk1fQVJHQCwkTkNVUlNFU19UUEFSTV9BUkcsO3QgdAogcyxATUFOUEFHRV9SRU5BTUVTQCwkTUFOUEFHRV9SRU5BTUVTLDt0IHQKIHMsQE5DVVJTRVNfRVhUX0ZVTkNTQCwkTkNVUlNFU19FWFRfRlVOQ1MsO3QgdAorcyxAR0VORVJBVEVEX0VYVF9GVU5DU0AsJEdFTkVSQVRFRF9FWFRfRlVOQ1MsO3QgdAorcyxATkNVUlNFU19TUF9GVU5DU0AsJE5DVVJTRVNfU1BfRlVOQ1MsO3QgdAorcyxAR0VORVJBVEVEX1NQX0ZVTkNTQCwkR0VORVJBVEVEX1NQX0ZVTkNTLDt0IHQKIHMsQE5DVVJTRVNfQ09OU1RALCROQ1VSU0VTX0NPTlNULDt0IHQKIHMsQE5DVVJTRVNfRVhUX0NPTE9SU0AsJE5DVVJTRVNfRVhUX0NPTE9SUyw7dCB0CiBzLEBOQ1VSU0VTX01PVVNFX1ZFUlNJT05ALCROQ1VSU0VTX01PVVNFX1ZFUlNJT04sO3QgdAogcyxATkNVUlNFU19TQk9PTEAsJE5DVVJTRVNfU0JPT0wsO3QgdAogcyxATkNVUlNFU19YTkFNRVNALCROQ1VSU0VTX1hOQU1FUyw7dCB0CitzLEBOQ1VSU0VTX0lOVEVST1BfRlVOQ1NALCROQ1VSU0VTX0lOVEVST1BfRlVOQ1MsO3QgdAogcyxAUFRIUkVBREAsJFBUSFJFQUQsO3QgdAogcyxAY2ZfY3ZfZW5hYmxlX3JlZW50cmFudEAsJGNmX2N2X2VuYWJsZV9yZWVudHJhbnQsO3QgdAogcyxAY2ZfY3ZfZW5hYmxlX29wYXF1ZUAsJGNmX2N2X2VuYWJsZV9vcGFxdWUsO3QgdAogcyxATkNVUlNFU19PUEFRVUVALCROQ1VSU0VTX09QQVFVRSw7dCB0CiBzLEBOQ1VSU0VTX1NJWkVfVEAsJE5DVVJTRVNfU0laRV9ULDt0IHQKK3MsQE5DVVJTRVNfV1JBUF9QUkVGSVhALCROQ1VSU0VTX1dSQVBfUFJFRklYLDt0IHQKK3MsQEVDSE9fTFRALCRFQ0hPX0xULDt0IHQKK3MsQEVDSE9fTERALCRFQ0hPX0xELDt0IHQKK3MsQFJVTEVfQ0NALCRSVUxFX0NDLDt0IHQKK3MsQFNIT1dfQ0NALCRTSE9XX0NDLDt0IHQKK3MsQEVDSE9fQ0NALCRFQ0hPX0NDLDt0IHQKIHMsQEVDSE9fTElOS0AsJEVDSE9fTElOSyw7dCB0CitzLEBBREFGTEFHU0AsJEFEQUZMQUdTLDt0IHQKIHMsQEVYVFJBX0NGTEFHU0AsJEVYVFJBX0NGTEFHUyw7dCB0CiBzLEBFWFRSQV9DWFhGTEFHU0AsJEVYVFJBX0NYWEZMQUdTLDt0IHQKIHMsQEFEQV9UUkFDRUAsJEFEQV9UUkFDRSw7dCB0CkBAIC0xNzQ0NiwzOSArMjI5NTgsNTEgQEAKIHMsQGNmX2N2X3R5cGVvZl9tbWFza190QCwkY2ZfY3ZfdHlwZW9mX21tYXNrX3QsO3QgdAogcyxASEFWRV9WU1NDQU5GQCwkSEFWRV9WU1NDQU5GLDt0IHQKIHMsQFRFU1RfTElCU0AsJFRFU1RfTElCUyw7dCB0CitzLEBURVNUX0xJQlMyQCwkVEVTVF9MSUJTMiw7dCB0CiBzLEBDWFhDUFBALCRDWFhDUFAsO3QgdAogcyxAQ1hYTERGTEFHU0AsJENYWExERkxBR1MsO3QgdAogcyxAQ1hYX0FSQCwkQ1hYX0FSLDt0IHQKLXMsQENYWF9BUl9PUFRTQCwkQ1hYX0FSX09QVFMsO3QgdAorcyxAQ1hYX0FSRkxBR1NALCRDWFhfQVJGTEFHUyw7dCB0CiBzLEBDWFhMSUJTQCwkQ1hYTElCUyw7dCB0CiBzLEBVU0VfQ1hYX0JPT0xALCRVU0VfQ1hYX0JPT0wsO3QgdAogcyxAZ25hdF9leGlzdHNALCRnbmF0X2V4aXN0cyw7dCB0CiBzLEBNNF9leGlzdHNALCRNNF9leGlzdHMsO3QgdAogcyxAY2ZfYWRhX21ha2VALCRjZl9hZGFfbWFrZSw7dCB0Ci1zLEBjZl9hZGFfY29tcGlsZXJALCRjZl9hZGFfY29tcGlsZXIsO3QgdAotcyxAY2ZfYWRhX3BhY2thZ2VALCRjZl9hZGFfcGFja2FnZSw7dCB0Ci1zLEBBREFGTEFHU0AsJEFEQUZMQUdTLDt0IHQKK3MsQEdOQVRQUkVQX09QVFNALCRHTkFUUFJFUF9PUFRTLDt0IHQKIHMsQGNmX2NvbXBpbGVfZ2VuZXJpY3NALCRjZl9jb21waWxlX2dlbmVyaWNzLDt0IHQKIHMsQGNmX2dlbmVyaWNfb2JqZWN0c0AsJGNmX2dlbmVyaWNfb2JqZWN0cyw7dCB0Ci1zLEBQUkFHTUFfVU5SRUZALCRQUkFHTUFfVU5SRUYsO3QgdAorcyxAVVNFX0dOQVRfU0lHSU5UQCwkVVNFX0dOQVRfU0lHSU5ULDt0IHQKK3MsQFVTRV9PTERfTUFLRVJVTEVTQCwkVVNFX09MRF9NQUtFUlVMRVMsO3QgdAorcyxAVVNFX0dOQVRfUFJPSkVDVFNALCRVU0VfR05BVF9QUk9KRUNUUyw7dCB0CitzLEBVU0VfR05BVF9MSUJSQVJJRVNALCRVU0VfR05BVF9MSUJSQVJJRVMsO3QgdAorcyxAY2ZfYWRhX2NvbXBpbGVyQCwkY2ZfYWRhX2NvbXBpbGVyLDt0IHQKK3MsQGNmX2FkYV9wYWNrYWdlQCwkY2ZfYWRhX3BhY2thZ2UsO3QgdAogcyxAQURBX0lOQ0xVREVALCRBREFfSU5DTFVERSw7dCB0CiBzLEBBREFfT0JKRUNUU0AsJEFEQV9PQkpFQ1RTLDt0IHQKK3MsQEFEQV9TSEFSRURMSUJALCRBREFfU0hBUkVETElCLDt0IHQKK3MsQE1BS0VfQURBX1NIQVJFRExJQkAsJE1BS0VfQURBX1NIQVJFRExJQiw7dCB0CiBzLEBBQ1BQRkxBR1NALCRBQ1BQRkxBR1MsO3QgdAogcyxAREZUX0FSR19TVUZGSVhALCRERlRfQVJHX1NVRkZJWCw7dCB0CiBzLEBERlRfREVQX1NVRkZJWEAsJERGVF9ERVBfU1VGRklYLDt0IHQKIHMsQERGVF9PQkpfU1VCRElSQCwkREZUX09CSl9TVUJESVIsO3QgdAogcyxAQ1hYX0xJQl9TVUZGSVhALCRDWFhfTElCX1NVRkZJWCw7dCB0CitzLEBVU0VfQVJHX1NVRkZJWEAsJFVTRV9BUkdfU1VGRklYLDt0IHQKK3MsQFVTRV9DRkdfU1VGRklYQCwkVVNFX0NGR19TVUZGSVgsO3QgdAorcyxAVVNFX0xJQl9TVUZGSVhALCRVU0VfTElCX1NVRkZJWCw7dCB0CiBzLEBUSUNTX0FSR19TVUZGSVhALCRUSUNTX0FSR19TVUZGSVgsO3QgdAogcyxAVElDU19ERVBfU1VGRklYQCwkVElDU19ERVBfU1VGRklYLDt0IHQKIHMsQFRJQ1NfTElCX1NVRkZJWEAsJFRJQ1NfTElCX1NVRkZJWCw7dCB0Ci1zLEBUSUNTX0FSR1NALCRUSUNTX0FSR1MsO3QgdAorcyxAVElDU19MREZMQUdTQCwkVElDU19MREZMQUdTLDt0IHQKK3MsQFRJQ1NfTElCU0AsJFRJQ1NfTElCUyw7dCB0CiBzLEBUSU5GT19BUkdfU1VGRklYQCwkVElORk9fQVJHX1NVRkZJWCw7dCB0CiBzLEBUSU5GT19ERVBfU1VGRklYQCwkVElORk9fREVQX1NVRkZJWCw7dCB0CiBzLEBUSU5GT19MSUJfU1VGRklYQCwkVElORk9fTElCX1NVRkZJWCw7dCB0Ci1zLEBUSU5GT19BUkdTQCwkVElORk9fQVJHUyw7dCB0Ci1zLEBUSU5GT19BUkdTMkAsJFRJTkZPX0FSR1MyLDt0IHQKK3MsQFRJTkZPX0xERkxBR1NALCRUSU5GT19MREZMQUdTLDt0IHQKK3MsQFRJTkZPX0xJQlNALCRUSU5GT19MSUJTLDt0IHQKK3MsQFRJTkZPX0xERkxBR1MyQCwkVElORk9fTERGTEFHUzIsO3QgdAogcyxATERGTEFHU19TVEFUSUNALCRMREZMQUdTX1NUQVRJQyw7dCB0CiBzLEBMREZMQUdTX1NIQVJFREAsJExERkxBR1NfU0hBUkVELDt0IHQKK3MsQGluY2x1ZGVzdWJkaXJALCRpbmNsdWRlc3ViZGlyLDt0IHQKIHMsQFdJVEhfT1ZFUldSSVRFQCwkV0lUSF9PVkVSV1JJVEUsO3QgdAogcyxAVElDU19MSVNUQCwkVElDU19MSVNULDt0IHQKIHMsQFRJTkZPX0xJU1RALCRUSU5GT19MSVNULDt0IHQKQEAgLTE3NDg4LDExICsyMzAxMiwyNyBAQAogcyxAVEVTVF9ERVBTQCwkVEVTVF9ERVBTLDt0IHQKIHMsQFRFU1RfQVJHMkAsJFRFU1RfQVJHMiw7dCB0CiBzLEBURVNUX0RFUDJALCRURVNUX0RFUDIsO3QgdAorcyxAUENfTU9EVUxFU19UT19NQUtFQCwkUENfTU9EVUxFU19UT19NQUtFLDt0IHQKIHMsQEFEQV9TVUJESVJTQCwkQURBX1NVQkRJUlMsO3QgdAogcyxARElSU19UT19NQUtFQCwkRElSU19UT19NQUtFLDt0IHQKK3MsQE5DVVJTRVNfU0hMSUIyQCwkTkNVUlNFU19TSExJQjIsO3QgdAogcyxASEFWRV9UQ0dFVEFUVFJALCRIQVZFX1RDR0VUQVRUUiw7dCB0CitzLEBIQVZFX1NURElOVF9IQCwkSEFWRV9TVERJTlRfSCw7dCB0CiBzLEBIQVZFX1RFUk1JT19IQCwkSEFWRV9URVJNSU9fSCw7dCB0CiBzLEBIQVZFX1RFUk1JT1NfSEAsJEhBVkVfVEVSTUlPU19ILDt0IHQKK3MsQGNyb3NzX2NvbXBpbGluZ0AsJGNyb3NzX2NvbXBpbGluZyw7dCB0CitzLEBUSUNfUEFUSEAsJFRJQ19QQVRILDt0IHQKK3MsQE1BS0VfVEVTVFNALCRNQUtFX1RFU1RTLDt0IHQKK3MsQEFEQUhUTUxfRElSQCwkQURBSFRNTF9ESVIsO3QgdAorcyxAUEFORUxfTkFNRUAsJFBBTkVMX05BTUUsO3QgdAorcyxATUVOVV9OQU1FQCwkTUVOVV9OQU1FLDt0IHQKK3MsQEZPUk1fTkFNRUAsJEZPUk1fTkFNRSw7dCB0CitzLEBDWFhfTkFNRUAsJENYWF9OQU1FLDt0IHQKK3MsQFBLR19DRkxBR1NALCRQS0dfQ0ZMQUdTLDt0IHQKK3MsQE1JU0NfSU5TVEFMTF9EQVRBQCwkTUlTQ19JTlNUQUxMX0RBVEEsO3QgdAorcyxATUlTQ19VTklOU1RBTExfREFUQUAsJE1JU0NfVU5JTlNUQUxMX0RBVEEsO3QgdAorcyxAVU5BTFRFUkVEX1NZTVNALCRVTkFMVEVSRURfU1lNUyw7dCB0CitzLEBBREFHRU5fTERGTEFHU0AsJEFEQUdFTl9MREZMQUdTLDt0IHQKIENFT0YKIAogRU9GCkBAIC0xNzYwNyw3ICsyMzE0Nyw3IEBACiAgIGVzYWMKIAogICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCi0gICAgeyBlY2hvICIkYXNfbWU6MTc2MTA6IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyAgICB7IGVjaG8gIiRhc19tZToyMzE1MDogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQogZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KICAgICBybSAtZiAiJGFjX2ZpbGUiCiAgIGZpCkBAIC0xNzYyNSw3ICsyMzE2NSw3IEBACiAgICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAgIFtcXC8kXSopCiAgICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQotICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6MTc2Mjg6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CisgICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZToyMzE2ODogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAgICAgICBlY2hvICRmOzsKQEAgLTE3NjM4LDEzICsyMzE3OCw0NSBAQAogICAgICAgICAgICBlY2hvICRzcmNkaXIvJGYKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIyAvZGV2L251bGwgdHJlZQotICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOjE3NjQxOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQorICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOjIzMTgxOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KICAgICAgICAgIGZpOzsKICAgICAgIGVzYWMKICAgICBkb25lYCB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KIEVPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgIGFjX3dhcm5fZGF0YXJvb3RkaXI9bm8KKyAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgIGZvciBhY19pdGVtIGluICRhY19maWxlX2lucHV0cworICAgIGRvCisgICAgICBhY19zZWVuPWBncmVwICdAXChkYXRhZGlyXHxtYW5kaXJcfGluZm9kaXJcKUAnICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIGFjX3VzZWQ9YGdyZXAgJ0BkYXRhcm9vdGRpckAnICRhY19pdGVtYAorICAgICAgICBpZiB0ZXN0IC16ICIkYWNfdXNlZCI7IHRoZW4KKyAgICAgICAgICB7IGVjaG8gIiRhc19tZToyMzE5NzogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjI7fQorICAgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgYWNfc2Vlbj1gZ3JlcCAnJHtkYXRhcm9vdGRpcn0nICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIHsgZWNobyAiJGFzX21lOjIzMjA2OiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mMjt9CisgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKworaWYgdGVzdCAieCRhY193YXJuX2RhdGFyb290ZGlyIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZSAncyxAZGF0YXJvb3RkaXJALFwke3ByZWZpeH0vc2hhcmUsZycgLWUgJ3MsXCR7ZGF0YXJvb3RkaXJ9LFwke3ByZWZpeH0vc2hhcmUsZyciCitmaQorCitFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCiAgIHNlZCAiJGFjX3Zwc3ViCiAkZXh0cmFzdWIKQEAgLTE3NjU5LDExICsyMzIzMSwzNSBAQAogIiAkYWNfZmlsZV9pbnB1dHMgfCAoZXZhbCAiJGFjX3NlZF9jbWRzIikgPiR0bXAvb3V0CiAgIHJtIC1mICR0bXAvc3RkaW4KICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgotICAgIG12ICR0bXAvb3V0ICRhY19maWxlCisgICAgY3AgJHRtcC9vdXQgJGFjX2ZpbGUKKworICAgIGZvciBhY19uYW1lIGluIHByZWZpeCBleGVjX3ByZWZpeCBkYXRhcm9vdGRpcgorICAgIGRvCisgICAgICAgIGFjX3NlZW49YGZncmVwIC1uICckeyckYWNfbmFtZSdbOj1dLip9JyAkYWNfZmlsZWAKKyAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgICAgICBhY19pbml0PWBlZ3JlcCAnWyAJXSonJGFjX25hbWUnWyAJXSo9JyAkYWNfZmlsZWAKKyAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhY19pbml0IjsgdGhlbgorICAgICAgICAgICAgICBhY19zZWVuPWBlY2hvICIkYWNfc2VlbiIgfHNlZCAtZSAncyxeLCckYWNfZmlsZSc6LCdgCisgICAgICAgICAgICAgIHsgZWNobyAiJGFzX21lOjIzMjQzOiBXQVJOSU5HOiBWYXJpYWJsZSAkYWNfbmFtZSBpcyB1c2VkIGJ1dCB3YXMgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogVmFyaWFibGUgJGFjX25hbWUgaXMgdXNlZCBidXQgd2FzIG5vdCBzZXQ6CiskYWNfc2VlbiIgPiYyO30KKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgZG9uZQorICAgIGVncmVwIC1uICdAW2Etel9dW2Etel8wLTldK0AnICRhY19maWxlID4kdG1wL291dAorICAgIGVncmVwIC1uICdAW0EtWl9dW0EtWl8wLTldK0AnICRhY19maWxlID4+JHRtcC9vdXQKKyAgICBpZiB0ZXN0IC1zICR0bXAvb3V0OyB0aGVuCisgICAgICBhY19zZWVuPWBzZWQgLWUgJ3MsXiwnJGFjX2ZpbGUnOiwnIDwgJHRtcC9vdXRgCisgICAgICB7IGVjaG8gIiRhc19tZToyMzI1NDogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjI7fQorICAgIGZpCiAgIGVsc2UKICAgICBjYXQgJHRtcC9vdXQKLSAgICBybSAtZiAkdG1wL291dAogICBmaQorICBybSAtZiAkdG1wL291dAogCiBkb25lCiBFT0YKQEAgLTE3NzA0LDcgKzIzMzAwLDcgQEAKICAgKiApICAgYWNfZmlsZV9pbj0kYWNfZmlsZS5pbiA7OwogICBlc2FjCiAKLSAgdGVzdCB4IiRhY19maWxlIiAhPSB4LSAmJiB7IGVjaG8gIiRhc19tZToxNzcwNzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorICB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtICYmIHsgZWNobyAiJGFzX21lOjIzMzAzOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1CiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQogCiAgICMgRmlyc3QgbG9vayBmb3IgdGhlIGlucHV0IGZpbGVzIGluIHRoZSBidWlsZCB0cmVlLCBvdGhlcndpc2UgaW4gdGhlCkBAIC0xNzcxNSw3ICsyMzMxMSw3IEBACiAgICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAgIFtcXC8kXSopCiAgICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQotICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6MTc3MTg6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CisgICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZToyMzMxNDogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAgICAgICBlY2hvICRmOzsKQEAgLTE3NzI4LDcgKzIzMzI0LDcgQEAKICAgICAgICAgICAgZWNobyAkc3JjZGlyLyRmCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICMgL2Rldi9udWxsIHRyZWUKLSAgICAgICAgICAgeyB7IGVjaG8gIiRhc19tZToxNzczMTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKKyAgICAgICAgICAgeyB7IGVjaG8gIiRhc19tZToyMzMyNzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAgICAgICBmaTs7CkBAIC0xNzc4Niw3ICsyMzM4Miw3IEBACiAgIHJtIC1mICR0bXAvaW4KICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgogICAgIGlmIGNtcCAtcyAkYWNfZmlsZSAkdG1wL2NvbmZpZy5oIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgICB7IGVjaG8gIiRhc19tZToxNzc4OTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKKyAgICAgIHsgZWNobyAiJGFzX21lOjIzMzg1OiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNQogZWNobyAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNjt9CiAgICAgZWxzZQogICAgICAgYWNfZGlyPWAkYXNfZXhwciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXApAQCAtMTc4MjgsNyArMjM0MjQsNiBAQAogZG9uZQogRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKLQogIwogIyBDT05GSUdfQ09NTUFORFMgc2VjdGlvbi4KICMKQEAgLTE3ODM4LDI4ICsyMzQzMyw0MyBAQAogCiAgIGNhc2UgJGFjX2Rlc3QgaW4KICAgICBkZWZhdWx0ICkKK2lmIHRlc3QgIngkY2Zfd2l0aF90ZXN0cyIgIT0geG5vIDsgdGhlbgogCiBmb3IgY2ZfZGlyIGluIHRlc3QKIGRvCiAJaWYgdGVzdCAhIC1kICRzcmNkaXIvJGNmX2RpcjsgdGhlbgogCQljb250aW51ZQogCWVsaWYgdGVzdCAtZiAkc3JjZGlyLyRjZl9kaXIvcHJvZ3JhbXM7IHRoZW4KLQkJJEFXSyAtZiAkc3JjZGlyL3Rlc3QvbWstdGVzdC5hd2sgRUNIT19MSU5LPSIkRUNIT19MSU5LIiAkc3JjZGlyLyRjZl9kaXIvcHJvZ3JhbXMgPj4kY2ZfZGlyL01ha2VmaWxlCisJCSRBV0sgLWYgJHNyY2Rpci90ZXN0L21rLXRlc3QuYXdrIElOU1RBTEw9bm8gRUNIT19MSU5LPSIkRUNIT19MRCIgJHNyY2Rpci8kY2ZfZGlyL3Byb2dyYW1zID4+JGNmX2Rpci9NYWtlZmlsZQogCWZpCiBkb25lCiAKLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi0JT1MvMip8b3MyKikgIyh2aQotICAgICAgICBMSUJfUFJFRklYPScnCi0gICAgICAgIDs7Ci0JKikJTElCX1BSRUZJWD0nbGliJwotICAgICAgICA7OwotCWVzYWMKK2ZpCisKIGNmX3ByZWZpeD0kTElCX1BSRUZJWAogCi1pZiB0ZXN0ICRjZl9jdl9zaGxpYl92ZXJzaW9uID0gY3lnZGxsIDsgdGhlbgorY2FzZSAkY2ZfY3Zfc2hsaWJfdmVyc2lvbiBpbgorKGN5Z2RsbHxtc3lzZGxsfG1pbmd3KQogCVRJTkZPX05BTUU9JFRJTkZPX0FSR19TVUZGSVgKIAlUSU5GT19TVUZGSVg9LmRsbAorCTs7Citlc2FjCisKK2lmIHRlc3QgLW4gIiRUSU5GT19TVUZGSVgiIDsgdGhlbgorCWNhc2UgJFRJTkZPX1NVRkZJWCBpbgorCSh0dyopCisJCVRJTkZPX05BTUU9IiR7VElORk9fTkFNRX10dyR7RVhUUkFfU1VGRklYfSIKKwkJVElORk9fU1VGRklYPWBlY2hvICRUSU5GT19TVUZGSVggfCBzZWQgJ3MvXnR3JyRFWFRSQV9TVUZGSVgnLy8nYAorCQk7OworCSh0KikKKwkJVElORk9fTkFNRT0iJHtUSU5GT19OQU1FfXQke0VYVFJBX1NVRkZJWH0iCisJCVRJTkZPX1NVRkZJWD1gZWNobyAkVElORk9fU1VGRklYIHwgc2VkICdzL150JyRFWFRSQV9TVUZGSVgnLy8nYAorCQk7OworCSh3KikKKwkJVElORk9fTkFNRT0iJHtUSU5GT19OQU1FfXcke0VYVFJBX1NVRkZJWH0iCisJCVRJTkZPX1NVRkZJWD1gZWNobyAkVElORk9fU1VGRklYIHwgc2VkICdzL153JyRFWFRSQV9TVUZGSVgnLy8nYAorCQk7OworCWVzYWMKIGZpCiAKIGZvciBjZl9kaXIgaW4gJFNSQ19TVUJESVJTCkBAIC0xNzg2OSwxMzAgKzIzNDc5LDE4NiBAQAogCWVsaWYgdGVzdCAtZiAkc3JjZGlyLyRjZl9kaXIvbW9kdWxlczsgdGhlbgogCiAJCVNIQVJFRF9MSUI9Ci0JCUxJQlNfVE9fTUFLRT0KKwkJTGlic19Ub19NYWtlPQorCisJCWNmX3NlZF9vcHRpb25zPQorCQlpZiB0ZXN0IC1uICIke2NmX2N2X2FiaV92ZXJzaW9ufSIgJiYgdGVzdCAieCR7Y2ZfY3ZfYWJpX3ZlcnNpb259IiAhPSAieDUiCisJCXRoZW4KKwkJCWNmX3NlZF9vcHRpb25zPSIkY2Zfc2VkX29wdGlvbnMgLWUgXCJzL05DVVJTRVNcXChbV1RdXFwrXFwpXD9fL05DVVJTRVNcXDEke2NmX2N2X2FiaV92ZXJzaW9ufV8vZ1wiIgorCQkJY2Zfc2VkX29wdGlvbnM9IiRjZl9zZWRfb3B0aW9ucyAtZSBcIi9kZXByZWNhdGVkIGluIEFCSSR7Y2ZfY3ZfYWJpX3ZlcnNpb259L2RcIiIKKwkJZmkKKworCQlpZiB0ZXN0ICJ4JFdJTERDQVJEX1NZTVMiID0geG5vCisJCXRoZW4KKwkJCWNmX3NlZF9vcHRpb25zPSIkY2Zfc2VkX29wdGlvbnMgLWUgXCJzL19cKjsvL2dcIiIKKwkJZmkKKworCQlpZiB0ZXN0ICJ4JGNmX3NlZF9vcHRpb25zIiAhPSAieCIKKwkJdGhlbgorCQkJY2F0ID4+JGNmX2Rpci9NYWtlZmlsZSA8PENGX0VPRgorCisjIEdlbmVyYXRlZCBieSBDRl9MSUJfUlVMRVMKK3Jlc3VsdGluZy5tYXA6ICRVTkFMVEVSRURfU1lNUworCXNlZCAkY2Zfc2VkX29wdGlvbnMgPCAkVU5BTFRFUkVEX1NZTVMgPlwkQAorCitjbGVhbjo6CisJcm0gLWYgcmVzdWx0aW5nLm1hcAorQ0ZfRU9GCisJCWZpCisKIAkJZm9yIGNmX2l0ZW0gaW4gJGNmX0xJU1RfTU9ERUxTCiAJCWRvCiAKLQljYXNlICRjZl9pdGVtIGluCi0JbGlidG9vbCkKKwljYXNlIFgkY2ZfaXRlbSBpbgorCShYbGlidG9vbCkKIAkJY2Zfc3VmZml4PScubGEnCiAJCWNmX2RlcHN1Zj0kY2Zfc3VmZml4CiAJCTs7Ci0Jbm9ybWFsKQotCQljZl9zdWZmaXg9Jy5hJwotCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAotCQk7OwotCWRlYnVnKQorCShYZGVidWcpCiAJCWNmX3N1ZmZpeD0nX2cuYScKIAkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKIAkJOzsKLQlwcm9maWxlKQorCShYcHJvZmlsZSkKIAkJY2Zfc3VmZml4PSdfcC5hJwogCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAogCQk7OwotCXNoYXJlZCkKKwkoWHNoYXJlZCkKIAkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KLQkJY3lnd2luKikKKwkJKGFpeFs1LTddKikKKwkJCWNmX3N1ZmZpeD0nLnNvJworCQkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKKwkJCTs7CisJCShjeWd3aW4qfG1zeXMqfG1pbmd3KikKIAkJCWNmX3N1ZmZpeD0nLmRsbCcKIAkJCWNmX2RlcHN1Zj0nLmRsbC5hJwogCQkJOzsKLQkJZGFyd2luKikKKwkJKGRhcndpbiopCiAJCQljZl9zdWZmaXg9Jy5keWxpYicKIAkJCWNmX2RlcHN1Zj0kY2Zfc3VmZml4CiAJCQk7OwotCQlocHV4KikKKwkJKGhwdXgqKQogCQkJY2FzZSAkdGFyZ2V0IGluCi0JCQlpYTY0KikKKwkJCShpYTY0KikKIAkJCQljZl9zdWZmaXg9Jy5zbycKIAkJCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAogCQkJCTs7Ci0JCQkqKQorCQkJKCopCiAJCQkJY2Zfc3VmZml4PScuc2wnCiAJCQkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKIAkJCQk7OwogCQkJZXNhYwogCQkJOzsKLQkJKikJY2Zfc3VmZml4PScuc28nCisJCSgqKQorCQkJY2Zfc3VmZml4PScuc28nCiAJCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAogCQkJOzsKIAkJZXNhYworCQk7OworCSgqKQorCQljZl9zdWZmaXg9Jy5hJworCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAorCQk7OwogCWVzYWMKLQl0ZXN0IC1uICIkTElCX1NVRkZJWCIgJiYgY2Zfc3VmZml4PSIke0xJQl9TVUZGSVh9JHtjZl9zdWZmaXh9IgotCXRlc3QgLW4gIiRMSUJfU1VGRklYIiAmJiBjZl9kZXBzdWY9IiR7TElCX1NVRkZJWH0ke2NmX2RlcHN1Zn0iCisJaWYgdGVzdCAtbiAiJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSIKKwl0aGVuCisJCWNmX3N1ZmZpeD0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7Y2Zfc3VmZml4fSIKKwkJY2ZfZGVwc3VmPSIke0xJQl9TVUZGSVh9JHtFWFRSQV9TVUZGSVh9JHtjZl9kZXBzdWZ9IgorCWZpCiAKKwkJCWNmX2xpYm5hbWU9JGNmX2RpcgorCQkJdGVzdCAiJGNmX2RpciIgPSBjKysgJiYgY2ZfbGlibmFtZT1uY3Vyc2VzKysKIAkJCWlmIHRlc3QgJGNmX2l0ZW0gPSBzaGFyZWQgOyB0aGVuCi0JCQlpZiB0ZXN0ICIkY2ZfY3ZfZG9fc3ltbGlua3MiID0geWVzIDsgdGhlbgotCQkJCWNhc2UgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiBpbiAjKHZpCi0JCQkJcmVsKSAjKHZpCi0JCQkJCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4gIyh2aQotCQkJCQlkYXJ3aW4qKQotCQkJCQljYXNlIC4ke0xJQl9TVUZGSVh9IGluCi0JCQkJCS53KikKLQkJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQkJY2Zfc3VmZml4PXcnLiR7UkVMX1ZFUlNJT059JyIkY2Zfc3VmZml4IgorCQkJCWlmIHRlc3QgLW4gIiR7TElCX1NVRkZJWH0iCisJCQkJdGhlbgorCQkJCQljZl9zaGFyZWRfc3VmZml4PWBlY2hvICIkY2Zfc3VmZml4IiB8IHNlZCAncy9eJyIke1VTRV9MSUJfU1VGRklYfSInLy8nYAorCQkJCWVsc2UKKwkJCQkJY2Zfc2hhcmVkX3N1ZmZpeD0iJGNmX3N1ZmZpeCIKKwkJCQlmaQorCQkJCWlmIHRlc3QgIiRjZl9jdl9kb19zeW1saW5rcyIgPSB5ZXMgOyB0aGVuCisJCQkJCWNmX3ZlcnNpb25fbmFtZT0KKworCQkJCQljYXNlICIkY2ZfY3Zfc2hsaWJfdmVyc2lvbiIgaW4KKwkJCQkJKHJlbCkKKwkJCQkJCWNmX3ZlcnNpb25fbmFtZT1SRUxfVkVSU0lPTgogCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJCWNmX3N1ZmZpeD0nLiR7UkVMX1ZFUlNJT059JyIkY2Zfc3VmZml4IgorCQkJCQkoYWJpKQorCQkJCQkJY2ZfdmVyc2lvbl9uYW1lPUFCSV9WRVJTSU9OCiAJCQkJCQk7OwogCQkJCQllc2FjCi0JCQkJCTs7ICModmkKLQkJCQkJKikgY2Zfc3VmZml4PSIkY2Zfc3VmZml4IicuJHtSRUxfVkVSU0lPTn0nIDs7Ci0JCQkJCWVzYWMKKworCQkJCQlpZiB0ZXN0IC1uICIkY2ZfdmVyc2lvbl9uYW1lIgorCQkJCQl0aGVuCisJCQkJCQljYXNlICIkY2ZfY3Zfc3lzdGVtX25hbWUiIGluCisJCQkJCQkoZGFyd2luKikKKwkJCQkJCQkjICJ3IiwgZXRjPworCQkJCQkJCWNmX3N1ZmZpeD0iJHtVU0VfTElCX1NVRkZJWH0iJy4keyckY2ZfdmVyc2lvbl9uYW1lJ30nIiRjZl9zaGFyZWRfc3VmZml4IgorCQkJCQkJCTs7CisJCQkJCQkoKikKKwkJCQkJCQljZl9zdWZmaXg9IiRjZl9zdWZmaXgiJy4keyckY2ZfdmVyc2lvbl9uYW1lJ30nCisJCQkJCQkJOzsKKwkJCQkJCWVzYWMKKwkJCQkJZmkKKwkJCQkJaWYgdGVzdCAtbiAiJHtVU0VfTElCX1NVRkZJWH0iCisJCQkJCXRoZW4KKwkJCQkJCWNmX3NoYXJlZF9zdWZmaXg9YGVjaG8gIiRjZl9zdWZmaXgiIHwgc2VkICdzL14nIiR7VVNFX0xJQl9TVUZGSVh9IicvLydgCisJCQkJCWVsc2UKKwkJCQkJCWNmX3NoYXJlZF9zdWZmaXg9IiRjZl9zdWZmaXgiCisJCQkJCWZpCisJCQkJZmkKKwkJCQkjIGN5Z3dpbiBuZWVkcyBpbXBvcnQgbGlicmFyeSwgYW5kIGhhcyB1bmlxdWUgbmFtaW5nIGNvbnZlbnRpb24KKwkJCQkjIHVzZSBhdXRvZGV0ZWN0ZWQgJHtjZl9wcmVmaXh9IGZvciBpbXBvcnQgbGliIGFuZCBzdGF0aWMgbGliLCBidXQKKwkJCQkjIHVzZSAnY3lnJyBwcmVmaXggZm9yIHNoYXJlZCBsaWIuCisJCQkJY2FzZSAkY2ZfY3Zfc2hsaWJfdmVyc2lvbiBpbgorCQkJCShjeWdkbGwpCisJCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAorCQkJCQljZl9hZGRfbGliPSIuLi9saWIvY3lnJHtjZl9saWJuYW1lfSR7Y2ZfY3lnc3VmfSIKIAkJCQkJOzsKLQkJCQlhYmkpCi0JCQkJCWNhc2UgIiRjZl9jdl9zeXN0ZW1fbmFtZSIgaW4gIyh2aQotCQkJCQlkYXJ3aW4qKQotCQkJCQljYXNlIC4ke0xJQl9TVUZGSVh9IGluCi0JCQkJCS53KikKLQkJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQkJY2Zfc3VmZml4PXcnLiR7QUJJX1ZFUlNJT059JyIkY2Zfc3VmZml4IgotCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJCWNmX3N1ZmZpeD0nLiR7QUJJX1ZFUlNJT059JyIkY2Zfc3VmZml4IgotCQkJCQkJOzsKLQkJCQkJZXNhYwotCQkJCQk7OyAjKHZpCi0JCQkJCSopIGNmX3N1ZmZpeD0iJGNmX3N1ZmZpeCInLiR7QUJJX1ZFUlNJT059JyA7OwotCQkJCQllc2FjCisJCQkJKG1zeXNkbGwpCisJCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAorCQkJCQljZl9hZGRfbGliPSIuLi9saWIvbXN5cy0ke2NmX2xpYm5hbWV9JHtjZl9jeWdzdWZ9IgorCQkJCQk7OworCQkJCShtaW5ndykKKwkJCQkJY2ZfY3lnc3VmPWBlY2hvICIkY2Zfc3VmZml4IiB8IHNlZCAtZSAncy9cLmRsbC9cJHtBQklfVkVSU0lPTn0uZGxsLydgCisJCQkJCWNmX2FkZF9saWI9Ii4uL2xpYi9saWIke2NmX2xpYm5hbWV9JHtjZl9jeWdzdWZ9IgorCQkJCQk7OworCQkJCSgqKQorCQkJCQljZl9hZGRfbGliPQogCQkJCQk7OwogCQkJCWVzYWMKKwkJCQlpZiB0ZXN0IC1uICIkY2ZfYWRkX2xpYiIKKwkJCQl0aGVuCisJCQkJCUxpYnNfVG9fTWFrZT0iJExpYnNfVG9fTWFrZSAkY2ZfYWRkX2xpYiIKKwkJCQkJY29udGludWUKKwkJCQlmaQogCQkJZmkKLQkJCSMgY3lnd2luIG5lZWRzIGltcG9ydCBsaWJyYXJ5LCBhbmQgaGFzIHVuaXF1ZSBuYW1pbmcgY29udmVudGlvbgotCQkJIyB1c2UgYXV0b2RldGVjdGVkICR7Y2ZfcHJlZml4fSBmb3IgaW1wb3J0IGxpYiBhbmQgc3RhdGljIGxpYiwgYnV0Ci0JCQkjIHVzZSAnY3lnJyBwcmVmaXggZm9yIHNoYXJlZCBsaWIuCi0JCQlpZiB0ZXN0ICRjZl9jdl9zaGxpYl92ZXJzaW9uID0gY3lnZGxsIDsgdGhlbgotCQkJCWNmX2N5Z3N1Zj1gZWNobyAiJGNmX3N1ZmZpeCIgfCBzZWQgLWUgJ3MvXC5kbGwvXCR7QUJJX1ZFUlNJT059LmRsbC8nYAotCQkJCUxJQlNfVE9fTUFLRT0iJExJQlNfVE9fTUFLRSAuLi9saWIvY3lnJHtjZl9kaXJ9JHtjZl9jeWdzdWZ9IgotCQkJCWNvbnRpbnVlCi0JCQlmaQotCQkJZmkKLQkJCUxJQlNfVE9fTUFLRT0iJExJQlNfVE9fTUFLRSAuLi9saWIvJHtjZl9wcmVmaXh9JHtjZl9kaXJ9JHtjZl9zdWZmaXh9IgorCQkJY2ZfYWRkX2xpYj0iLi4vbGliLyR7Y2ZfcHJlZml4fSR7Y2ZfbGlibmFtZX0ke2NmX3N1ZmZpeH0iCisJCQlMaWJzX1RvX01ha2U9IiRMaWJzX1RvX01ha2UgJGNmX2FkZF9saWIiCiAJCWRvbmUKIAogCQlpZiB0ZXN0ICRjZl9kaXIgPSBuY3Vyc2VzIDsgdGhlbgogCQkJY2Zfc3Vic2V0cz0iJExJQl9TVUJTRVRTIgogCQkJY2Zfcl9wYXJ0cz0iJGNmX3N1YnNldHMiCi0JCQljZl9saWJsaXN0PSIkTElCU19UT19NQUtFIgorCQkJY2ZfbGlibGlzdD0iJExpYnNfVG9fTWFrZSIKIAogCQkJd2hpbGUgdGVzdCAtbiAiJGNmX3JfcGFydHMiCiAJCQlkbwogCQkJCWNmX2xfcGFydHM9YGVjaG8gIiRjZl9yX3BhcnRzIiB8c2VkIC1lICdzLyAuKiQvLydgCiAJCQkJY2Zfcl9wYXJ0cz1gZWNobyAiJGNmX3JfcGFydHMiIHxzZWQgLWUgJ3MvXlteIF0qIC8vJ2AKIAkJCQlpZiB0ZXN0ICIkY2ZfbF9wYXJ0cyIgIT0gIiRjZl9yX3BhcnRzIiA7IHRoZW4KLQkJCQkJY2ZfaXRlbT0KLQkJCQkJY2FzZSAkY2ZfbF9wYXJ0cyBpbiAjKHZpCi0JCQkJCSp0ZXJtbGliKikgIyh2aQotCQkJCQkJY2ZfaXRlbT1gZWNobyAkY2ZfbGlibGlzdCB8c2VkIC1lIHMlJHtMSUJfTkFNRX0ke0xJQl9TVUZGSVh9JSR7VElORk9fTElCX1NVRkZJWH0lZ2AKKwkJCQkJY2ZfYWRkX2xpYj0KKwkJCQkJY2FzZSAkY2ZfbF9wYXJ0cyBpbgorCQkJCQkoKnRlcm1saWIqKQorCQkJCQkJY2ZfYWRkX2xpYj1gZWNobyAkY2ZfbGlibGlzdCB8c2VkIC1lIHMlJHtMSUJfTkFNRX0ke1VTRV9MSUJfU1VGRklYfSUke1RJTkZPX0xJQl9TVUZGSVh9JWdgCiAJCQkJCQk7OwotCQkJCQkqdGljbGliKikKLQkJCQkJCWNmX2l0ZW09YGVjaG8gJGNmX2xpYmxpc3QgfHNlZCAtZSBzJSR7TElCX05BTUV9JHtMSUJfU1VGRklYfSUke1RJQ1NfTElCX1NVRkZJWH0lZ2AKKwkJCQkJKCp0aWNsaWIqKQorCQkJCQkJY2ZfYWRkX2xpYj1gZWNobyAkY2ZfbGlibGlzdCB8c2VkIC1lIHMlJHtMSUJfTkFNRX0ke1VTRV9MSUJfU1VGRklYfSUke1RJQ1NfTElCX1NVRkZJWH0lZ2AKIAkJCQkJCTs7Ci0JCQkJCSopCisJCQkJCSgqKQogCQkJCQkJYnJlYWsKIAkJCQkJCTs7CiAJCQkJCWVzYWMKLQkJCQkJaWYgdGVzdCAtbiAiJGNmX2l0ZW0iOyB0aGVuCi0JCQkJCQlMSUJTX1RPX01BS0U9IiRjZl9pdGVtICRMSUJTX1RPX01BS0UiCisJCQkJCWlmIHRlc3QgLW4gIiRjZl9hZGRfbGliIjsgdGhlbgorCQkJCQkJTGlic19Ub19NYWtlPSIkY2ZfYWRkX2xpYiAkTGlic19Ub19NYWtlIgogCQkJCQlmaQogCQkJCWVsc2UKIAkJCQkJYnJlYWsKQEAgLTE4MDAyLDEzICsyMzY2OCw0MCBAQAogCQkJY2Zfc3Vic2V0cz1gZWNobyAiJExJQl9TVUJTRVRTIiB8IHNlZCAtZSAncy9edGVybWxpYi4qIC8vJ2AKIAkJZmkKIAotCQlzZWQgLWUgInMlQExJQlNfVE9fTUFLRUAlJExJQlNfVE9fTUFLRSUiIFwKKwkJaWYgdGVzdCAkY2ZfZGlyID0gYysrOyB0aGVuCisJCQlpZiB0ZXN0ICJ4JHdpdGhfc2hhcmVkX2N4eCIgIT0geHllcyAmJiB0ZXN0IC1uICIkY2Zfc2hhcmVkX3N1ZmZpeCI7IHRoZW4KKwkJCQljZl9saXN0PQorCQkJCWZvciBjZl9pdGVtIGluICRMaWJzX1RvX01ha2UKKwkJCQlkbworCQkJCQljYXNlICRjZl9pdGVtIGluCisJCQkJCSgqLmEpCisJCQkJCQk7OworCQkJCQkoKikKKwkJCQkJCWNmX2l0ZW09YGVjaG8gIiRjZl9pdGVtIiB8IHNlZCAtZSAicywiJGNmX3NoYXJlZF9zdWZmaXgiLC5hLCJgCisJCQkJCQk7OworCQkJCQllc2FjCisJCQkJCWZvciBjZl90ZXN0IGluICRjZl9saXN0CisJCQkJCWRvCisJCQkJCQlpZiB0ZXN0ICIkY2ZfdGVzdCIgPSAiJGNmX2l0ZW0iCisJCQkJCQl0aGVuCisJCQkJCQkJY2ZfTElTVF9NT0RFTFM9YGVjaG8gIiRjZl9MSVNUX01PREVMUyIgfCBzZWQgLWUgJ3Mvbm9ybWFsLy8nYAorCQkJCQkJCWNmX2l0ZW09CisJCQkJCQkJYnJlYWsKKwkJCQkJCWZpCisJCQkJCWRvbmUKKwkJCQkJdGVzdCAtbiAiJGNmX2l0ZW0iICYmIGNmX2xpc3Q9IiRjZl9saXN0ICRjZl9pdGVtIgorCQkJCWRvbmUKKwkJCQlMaWJzX1RvX01ha2U9IiRjZl9saXN0IgorCQkJZmkKKwkJZmkKKworCQlzZWQgLWUgInMlQExpYnNfVG9fTWFrZUAlJExpYnNfVG9fTWFrZSUiIFwKIAkJICAgIC1lICJzJUBTSEFSRURfTElCQCUkU0hBUkVEX0xJQiUiIFwKIAkJCSRjZl9kaXIvTWFrZWZpbGUgPiRjZl9kaXIvTWFrZWZpbGUub3V0CiAJCW12ICRjZl9kaXIvTWFrZWZpbGUub3V0ICRjZl9kaXIvTWFrZWZpbGUKIAogCQkkQVdLIC1mICRzcmNkaXIvbWstMHRoLmF3ayBcCi0JCQlsaWJuYW1lPSIke2NmX2Rpcn0ke0xJQl9TVUZGSVh9IiBzdWJzZXRzPSIkTElCX1NVQlNFVFMiIFwKKwkJCWxpYm5hbWU9IiR7Y2ZfZGlyfSR7TElCX1NVRkZJWH0iIHN1YnNldHM9IiRMSUJfU1VCU0VUUyIgdGljbGliPSIkVElDU19MSUJfU1VGRklYIiB0ZXJtbGliPSIkVElORk9fTElCX1NVRkZJWCIgXAogCQkJJHNyY2Rpci8kY2ZfZGlyL21vZHVsZXMgPj4kY2ZfZGlyL01ha2VmaWxlCiAKIAkJZm9yIGNmX3N1YnNldCBpbiAkY2Zfc3Vic2V0cwpAQCAtMTgwMTYsNjcgKzIzNzA5LDkzIEBACiAJCQljZl9zdWJkaXJzPQogCQkJZm9yIGNmX2l0ZW0gaW4gJGNmX0xJU1RfTU9ERUxTCiAJCQlkbworCiAJCQllY2hvICJBcHBlbmRpbmcgcnVsZXMgZm9yICR7Y2ZfaXRlbX0gbW9kZWwgKCR7Y2ZfZGlyfTogJHtjZl9zdWJzZXR9KSIKIAogY2ZfSVRFTT1gZWNobyAiJGNmX2l0ZW0iIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAogCi0JY2FzZSAkY2ZfaXRlbSBpbgotCWxpYnRvb2wpCisJCQlDWFhfTU9ERUw9JGNmX0lURU0KKwkJCWlmIHRlc3QgIiRDWFhfTU9ERUwiID0gU0hBUkVEOyB0aGVuCisJCQkJY2FzZSAkY2ZfY3Zfc2hsaWJfdmVyc2lvbiBpbgorCQkJCShjeWdkbGx8bXN5c2RsbHxtaW5ndykKKwkJCQkJdGVzdCAieCR3aXRoX3NoYXJlZF9jeHgiID0geG5vICYmIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJb3ZlcnJpZGluZyBDWFhfTU9ERUwgdG8gU0hBUkVEIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MjM3MjM6IHRlc3Rpbmcgb3ZlcnJpZGluZyBDWFhfTU9ERUwgdG8gU0hBUkVEIC4uLiIgMT4mNQorCisJCQkJCXdpdGhfc2hhcmVkX2N4eD15ZXMKKwkJCQkJOzsKKwkJCQkoKikKKwkJCQkJdGVzdCAieCR3aXRoX3NoYXJlZF9jeHgiID0geG5vICYmIENYWF9NT0RFTD1OT1JNQUwKKwkJCQkJOzsKKwkJCQllc2FjCisJCQlmaQorCisJY2FzZSBYJGNmX2l0ZW0gaW4KKwkoWGxpYnRvb2wpCiAJCWNmX3N1ZmZpeD0nLmxhJwogCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAogCQk7OwotCW5vcm1hbCkKLQkJY2Zfc3VmZml4PScuYScKLQkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKLQkJOzsKLQlkZWJ1ZykKKwkoWGRlYnVnKQogCQljZl9zdWZmaXg9J19nLmEnCiAJCWNmX2RlcHN1Zj0kY2Zfc3VmZml4CiAJCTs7Ci0JcHJvZmlsZSkKKwkoWHByb2ZpbGUpCiAJCWNmX3N1ZmZpeD0nX3AuYScKIAkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKIAkJOzsKLQlzaGFyZWQpCisJKFhzaGFyZWQpCiAJCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCi0JCWN5Z3dpbiopCisJCShhaXhbNS03XSopCisJCQljZl9zdWZmaXg9Jy5zbycKKwkJCWNmX2RlcHN1Zj0kY2Zfc3VmZml4CisJCQk7OworCQkoY3lnd2luKnxtc3lzKnxtaW5ndyopCiAJCQljZl9zdWZmaXg9Jy5kbGwnCiAJCQljZl9kZXBzdWY9Jy5kbGwuYScKIAkJCTs7Ci0JCWRhcndpbiopCisJCShkYXJ3aW4qKQogCQkJY2Zfc3VmZml4PScuZHlsaWInCiAJCQljZl9kZXBzdWY9JGNmX3N1ZmZpeAogCQkJOzsKLQkJaHB1eCopCisJCShocHV4KikKIAkJCWNhc2UgJHRhcmdldCBpbgotCQkJaWE2NCopCisJCQkoaWE2NCopCiAJCQkJY2Zfc3VmZml4PScuc28nCiAJCQkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKIAkJCQk7OwotCQkJKikKKwkJCSgqKQogCQkJCWNmX3N1ZmZpeD0nLnNsJwogCQkJCWNmX2RlcHN1Zj0kY2Zfc3VmZml4CiAJCQkJOzsKIAkJCWVzYWMKIAkJCTs7Ci0JCSopCWNmX3N1ZmZpeD0nLnNvJworCQkoKikKKwkJCWNmX3N1ZmZpeD0nLnNvJwogCQkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKIAkJCTs7CiAJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2Zfc3VmZml4PScuYScKKwkJY2ZfZGVwc3VmPSRjZl9zdWZmaXgKKwkJOzsKIAllc2FjCi0JdGVzdCAtbiAiJExJQl9TVUZGSVgiICYmIGNmX3N1ZmZpeD0iJHtMSUJfU1VGRklYfSR7Y2Zfc3VmZml4fSIKLQl0ZXN0IC1uICIkTElCX1NVRkZJWCIgJiYgY2ZfZGVwc3VmPSIke0xJQl9TVUZGSVh9JHtjZl9kZXBzdWZ9IgorCWlmIHRlc3QgLW4gIiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCisJdGhlbgorCQljZl9zdWZmaXg9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0ke2NmX3N1ZmZpeH0iCisJCWNmX2RlcHN1Zj0iJHtMSUJfU1VGRklYfSR7RVhUUkFfU1VGRklYfSR7Y2ZfZGVwc3VmfSIKKwlmaQogCiAJY2FzZSAkY2ZfaXRlbSBpbgotCWxpYnRvb2wpIGNmX3N1YmRpcj0nb2JqX2xvJyAgOzsKLQlub3JtYWwpICBjZl9zdWJkaXI9J29iamVjdHMnIDs7Ci0JZGVidWcpICAgY2Zfc3ViZGlyPSdvYmpfZycgOzsKLQlwcm9maWxlKSBjZl9zdWJkaXI9J29ial9wJyA7OwotCXNoYXJlZCkKLQkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIyh2aQotCQljeWd3aW4pICModmkKKwkobGlidG9vbCkgY2Zfc3ViZGlyPSdvYmpfbG8nICA7OworCShub3JtYWwpICBjZl9zdWJkaXI9J29iamVjdHMnIDs7CisJKGRlYnVnKSAgIGNmX3N1YmRpcj0nb2JqX2cnIDs7CisJKHByb2ZpbGUpIGNmX3N1YmRpcj0nb2JqX3AnIDs7CisJKHNoYXJlZCkKKwkJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkJKGN5Z3dpbnxtc3lzKQogCQkJY2Zfc3ViZGlyPSdvYmplY3RzJyA7OwotCQkqKQorCQkoKikKIAkJCWNmX3N1YmRpcj0nb2JqX3MnIDs7CiAJCWVzYWMKIAllc2FjCkBAIC0xODA4NSwyMiArMjM4MDQsMjQgQEAKIAkJCWNmX2xpYm5hbWU9JGNmX2RpcgogCQkJaWYgdGVzdCAkY2ZfZGlyID0gbmN1cnNlcyA7IHRoZW4KIAkJCQljYXNlICRjZl9zdWJzZXQgaW4KLQkJCQkqYmFzZSopCi0JCQkJCWNmX2xpYm5hbWU9JHtjZl9saWJuYW1lfSRMSUJfU1VGRklYCisJCQkJKCpiYXNlKikKKwkJCQkJY2ZfbGlibmFtZT0ke2NmX2xpYm5hbWV9JFVTRV9MSUJfU1VGRklYCiAJCQkJCTs7Ci0JCQkJKnRlcm1saWIqKQorCQkJCSgqdGVybWxpYiopCiAJCQkJCWNmX2xpYm5hbWU9JFRJTkZPX0xJQl9TVUZGSVgKIAkJCQkJOzsKLQkJCQl0aWNsaWIqKQorCQkJCSh0aWNsaWIqKQogCQkJCQljZl9saWJuYW1lPSRUSUNTX0xJQl9TVUZGSVgKIAkJCQkJOzsKIAkJCQllc2FjCisJCQllbGlmIHRlc3QgJGNmX2RpciA9IGMrKyA7IHRoZW4KKwkJCQljZl9saWJuYW1lPW5jdXJzZXMrKyRVU0VfTElCX1NVRkZJWAogCQkJZWxzZQotCQkJCWNmX2xpYm5hbWU9JHtjZl9saWJuYW1lfSRMSUJfU1VGRklYCisJCQkJY2ZfbGlibmFtZT0ke2NmX2xpYm5hbWV9JFVTRV9MSUJfU1VGRklYCiAJCQlmaQotCQkJaWYgdGVzdCAtbiAiJHtERlRfQVJHX1NVRkZJWH0iIDsgdGhlbgotCQkJCSMgdW5kbyAkTElCX1NVRkZJWCBhZGQtb24gaW4gQ0ZfTElCX1NVRkZJWAotCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHxzZWQgLWUgInMlXiR7TElCX1NVRkZJWH0lJSJgCisJCQlpZiB0ZXN0IC1uICIke1VTRV9BUkdfU1VGRklYfSIgOyB0aGVuCisJCQkJIyB1bmRvICRVU0VfTElCX1NVRkZJWCBhZGQtb24gaW4gQ0ZfTElCX1NVRkZJWAorCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHxzZWQgLWUgInMlXiR7VVNFX0xJQl9TVUZGSVh9JSUiYAogCQkJZmkKIAogCQkJIyBUaGVzZSBkZXBlbmRlbmNpZXMgcmVhbGx5IGFyZSBmb3IgZGV2ZWxvcG1lbnQsIG5vdApAQCAtMTgxMjEsMTIgKzIzODQyLDI3IEBACiAgCQkJY2ZfZGlyX3N1ZmZpeD0KICAJCQlvbGRfY2Zfc3VmZml4PSIkY2Zfc3VmZml4IgogIAkJCWlmIHRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uX2luZml4IiA9IHllcyA7IHRoZW4KLQkJCWlmIHRlc3QgLW4gIiRMSUJfU1VGRklYIiA7IHRoZW4KLQkJCQljYXNlICRMSUJfU1VGRklYIGluCi0JCQkJdyopCi0JCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvdyQvLydgCi0JCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153Ly8nYAotCQkJCQljZl9kaXJfc3VmZml4PXcKKwkJCWlmIHRlc3QgLW4gIiRVU0VfTElCX1NVRkZJWCIgOyB0aGVuCisJCQkJY2FzZSAkVVNFX0xJQl9TVUZGSVggaW4KKwkJCQkodHcqKQorCQkJCQljZl9saWJuYW1lPWBlY2hvICRjZl9saWJuYW1lIHwgc2VkICdzL3R3JyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXnR3JyRFWFRSQV9TVUZGSVgnLy8nYAorCQkJCQljZl9kaXJfc3VmZml4PXR3JEVYVFJBX1NVRkZJWAorCQkJCQk7OworCQkJCSh0KikKKwkJCQkJY2ZfbGlibmFtZT1gZWNobyAkY2ZfbGlibmFtZSB8IHNlZCAncy90JyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXnQnJEVYVFJBX1NVRkZJWCcvLydgCisJCQkJCWNmX2Rpcl9zdWZmaXg9dCRFWFRSQV9TVUZGSVgKKwkJCQkJOzsKKwkJCQkodyopCisJCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvdyckRVhUUkFfU1VGRklYJyQvLydgCisJCQkJCWNmX3N1ZmZpeD1gZWNobyAkY2Zfc3VmZml4IHwgc2VkICdzL153JyRFWFRSQV9TVUZGSVgnLy8nYAorCQkJCQljZl9kaXJfc3VmZml4PXckRVhUUkFfU1VGRklYCisJCQkJCTs7CisJCQkJKCopCisJCQkJCWNmX2xpYm5hbWU9YGVjaG8gJGNmX2xpYm5hbWUgfCBzZWQgJ3MvJyRFWFRSQV9TVUZGSVgnJC8vJ2AKKwkJCQkJY2Zfc3VmZml4PWBlY2hvICRjZl9zdWZmaXggfCBzZWQgJ3MvXickRVhUUkFfU1VGRklYJy8vJ2AKKwkJCQkJY2ZfZGlyX3N1ZmZpeD0kRVhUUkFfU1VGRklYCiAJCQkJCTs7CiAJCQkJZXNhYwogCQkJZmkKQEAgLTE4MTM2LDIxICsyMzg3MiwyNSBAQAogCQkJCW5hbWU9JHtjZl9saWJuYW1lfSR7Y2ZfZGlyX3N1ZmZpeH0gXAogCQkJCXRyYWNlcz0kTElCX1RSQUNJTkcgXAogCQkJCU1PREVMPSRjZl9JVEVNIFwKKwkJCQlDWFhfTU9ERUw9JENYWF9NT0RFTCBcCiAJCQkJbW9kZWw9JGNmX3N1YmRpciBcCiAJCQkJcHJlZml4PSRjZl9wcmVmaXggXAogCQkJCXN1ZmZpeD0kY2Zfc3VmZml4IFwKIAkJCQlzdWJzZXQ9JGNmX3N1YnNldCBcCisJCQkJZHJpdmVyPSRjZl9jdl90ZXJtX2RyaXZlciBcCisJCQkJU3ltTGluaz0iJExOX1MiIFwKIAkJCQlUZXJtbGliUm9vdD0kVElORk9fTkFNRSBcCiAJCQkJVGVybWxpYlN1ZmZpeD0kVElORk9fU1VGRklYIFwKIAkJCQlTaGxpYlZlcj0kY2ZfY3Zfc2hsaWJfdmVyc2lvbiBcCiAJCQkJU2hsaWJWZXJJbmZpeD0kY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeCBcCi0JCQkJUmVMaW5rPSR7Y2ZfY3ZfZG9fcmVsaW5rLW5vfSBcCisJCQkJUmVMaW5rPSR7Y2ZfY3ZfZG9fcmVsaW5rOi1ub30gXAogCQkJCURvTGlua3M9JGNmX2N2X2RvX3N5bWxpbmtzIFwKIAkJCQlybVNvTG9jcz0kY2ZfY3Zfcm1fc29fbG9jcyBcCiAJCQkJbGRjb25maWc9IiRMRENPTkZJRyIgXAogCQkJCW92ZXJ3cml0ZT0kV0lUSF9PVkVSV1JJVEUgXAogCQkJCWRlcGVuZD0iJGNmX2RlcGVuZCIgXAogCQkJCWhvc3Q9IiRob3N0IiBcCisJCQkJbGlidG9vbF92ZXJzaW9uPSIkTElCVE9PTF9WRVJTSU9OIiBcCiAJCQkJJHNyY2Rpci8kY2ZfZGlyL21vZHVsZXMgPj4kY2ZfZGlyL01ha2VmaWxlCiAKIAkJCWNmX3N1ZmZpeD0iJG9sZF9jZl9zdWZmaXgiCkBAIC0xODE3Niw3ICsyMzkxNiw3IEBACiAJCWRvbmUKIAlmaQogCi0JZWNobyAnCWNkICckY2ZfZGlyJyAmJiAke01BS0V9ICR7Q0ZfTUZMQUdTfSAkQCcgPj5NYWtlZmlsZQorCWVjaG8gJwljZCAnJGNmX2RpcicgJiYgJHtNQUtFfSAke1RPUF9NRkxBR1N9ICRAJyA+Pk1ha2VmaWxlCiBkb25lCiAKIGZvciBjZl9kaXIgaW4gJFNSQ19TVUJESVJTCkBAIC0xODE4NywxMSArMjM5MjcsMTEgQEAKIAogCWlmIHRlc3QgLWYgJGNmX2Rpci9NYWtlZmlsZSA7IHRoZW4KIAkJY2FzZSAiJGNmX2RpciIgaW4KLQkJQWRhOTUpICModmkKKwkJKEFkYTk1KQogCQkJZWNobyAnbGlicyBcJyA+PiBNYWtlZmlsZQogCQkJZWNobyAnaW5zdGFsbC5saWJzIFwnID4+IE1ha2VmaWxlCiAJCQllY2hvICd1bmluc3RhbGwubGlicyA6OicgPj4gTWFrZWZpbGUKLQkJCWVjaG8gJwljZCAnJGNmX2RpcicgJiYgJHtNQUtFfSAke0NGX01GTEFHU30gJEAnID4+IE1ha2VmaWxlCisJCQllY2hvICcJY2QgJyRjZl9kaXInICYmICR7TUFLRX0gJHtUT1BfTUZMQUdTfSAkQCcgPj4gTWFrZWZpbGUKIAkJCTs7CiAJCWVzYWMKIAlmaQpAQCAtMTgyMTQsNyArMjM5NTQsNyBAQAogdW5pbnN0YWxsLmxpYnMgXFwKIGluc3RhbGwuJGNmX2RpciBcXAogdW5pbnN0YWxsLiRjZl9kaXIgOjoKLQljZCAkY2ZfZGlyICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXCRACisJY2QgJGNmX2RpciAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcJEAKIENGX0VPRgogCWVsaWYgdGVzdCAtZiAkc3JjZGlyLyRjZl9kaXIvaGVhZGVyczsgdGhlbgogY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCkBAIC0xODIyNCw0NCArMjM5NjQsNjMgQEAKIHVuaW5zdGFsbC5saWJzIFxcCiBpbnN0YWxsLmluY2x1ZGVzIFxcCiB1bmluc3RhbGwuaW5jbHVkZXMgOjoKLQljZCAkY2ZfZGlyICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXCRACisJY2QgJGNmX2RpciAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcJEAKIENGX0VPRgogZmkKIGRvbmUKIAoraWYgdGVzdCAieCRjZl93aXRoX2RiX2luc3RhbGwiID0geHllczsgdGhlbgogY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCiAKIGluc3RhbGwubGlicyB1bmluc3RhbGwubGlicyBcXAogaW5zdGFsbC5kYXRhIHVuaW5zdGFsbC5kYXRhIDo6Ci0kTUFLRV9URVJNSU5GTwljZCBtaXNjICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXCRACiskTUFLRV9URVJNSU5GTwljZCBtaXNjICYmIFwke01BS0V9IFwke1RPUF9NRkxBR1N9IFwkQAorQ0ZfRU9GCitlbHNlCitjYXQgPj4gTWFrZWZpbGUgPDxDRl9FT0YKKworaW5zdGFsbC5saWJzIHVuaW5zdGFsbC5saWJzIDo6CisJY2QgbWlzYyAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcJEAKK0NGX0VPRgorZmkKKworaWYgdGVzdCAieCRjZl93aXRoX21hbnBhZ2VzIiA9IHh5ZXM7IHRoZW4KK2NhdCA+PiBNYWtlZmlsZSA8PENGX0VPRgogCiBpbnN0YWxsLm1hbiBcXAogdW5pbnN0YWxsLm1hbiA6OgotCWNkIG1hbiAmJiBcJHtNQUtFfSBcJHtDRl9NRkxBR1N9IFwkQAorCWNkIG1hbiAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcJEAKK0NGX0VPRgorZmkKKworY2F0ID4+IE1ha2VmaWxlIDw8Q0ZfRU9GCiAKIGRpc3RjbGVhbiA6OgogCXJtIC1mIGNvbmZpZy5jYWNoZSBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgTWFrZWZpbGUgaW5jbHVkZS9uY3Vyc2VzX2NmZy5oCiAJcm0gLWYgaGVhZGVycy5zaCBoZWFkZXJzLnNlZCBta19zaGFyZWRfbGliLnNoCisJcm0gLWYgZWRpdF9tYW4uKiBtYW5fYWxpYXMuKgogCXJtIC1yZiBcJHtESVJTX1RPX01BS0V9CiBDRl9FT0YKIAogIyBTcGVjaWFsIGNhc2U6IHRhY2sncyBtYW5wYWdlIGxpdmVzIGluIGl0cyBvd24gZGlyZWN0b3J5LgoraWYgdGVzdCAieCRjZl93aXRoX21hbnBhZ2VzIiA9IHh5ZXM7IHRoZW4KIGlmIHRlc3QgLWQgdGFjayA7IHRoZW4KIGlmIHRlc3QgLWYgJHNyY2Rpci8kdGFjay5oOyB0aGVuCiBjYXQgPj4gTWFrZWZpbGUgPDxDRl9FT0YKIAogaW5zdGFsbC5tYW4gXFwKIHVuaW5zdGFsbC5tYW4gOjoKLQljZCB0YWNrICYmIFwke01BS0V9IFwke0NGX01GTEFHU30gXCRACisJY2QgdGFjayAmJiBcJHtNQUtFfSBcJHtUT1BfTUZMQUdTfSBcJEAKIENGX0VPRgogZmkKIGZpCitmaQogCiBybSAtZiBoZWFkZXJzLnNlZCBoZWFkZXJzLnNoCiAKIGVjaG8gY3JlYXRpbmcgaGVhZGVycy5zaAogY2F0ID5oZWFkZXJzLnNoIDw8Q0ZfRU9GCi0jISAvYmluL3NoCisjISAkU0hFTEwKICMgVGhpcyBzaGVsbCBzY3JpcHQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSAnY29uZmlndXJlJyBzY3JpcHQuICBJdCBpcyBpbnZva2VkIGluIGEKICMgc3ViZGlyZWN0b3J5IG9mIHRoZSBidWlsZCB0cmVlLiAgSXQgZ2VuZXJhdGVzIGEgc2VkLXNjcmlwdCBpbiB0aGUgcGFyZW50CiAjIGRpcmVjdG9yeSB0aGF0IGlzIHVzZWQgdG8gYWRqdXN0IGluY2x1ZGVzIGZvciBoZWFkZXIgZmlsZXMgdGhhdCByZXNpZGUgaW4gYQpAQCAtMTgyNzQsMTUgKzI0MDMzLDE1IEBACiBEU1Q9XCQxCiBSRUY9XCQyCiBTUkM9XCQzCi1UTVBTUkM9XCR7VE1QRElSLS90bXB9L1xgYmFzZW5hbWUgXCRTUkNcYFwkXCQKLVRNUFNFRD1cJHtUTVBESVItL3RtcH0vaGVhZGVycy5zZWRcJFwkCitUTVBTUkM9XCR7VE1QRElSOi0vdG1wfS9cYGJhc2VuYW1lIFwkU1JDXGBcJFwkCitUTVBTRUQ9XCR7VE1QRElSOi0vdG1wfS9oZWFkZXJzLnNlZFwkXCQKIGVjaG8gaW5zdGFsbGluZyBcJFNSQyBpbiBcJERTVAogQ0ZfRU9GCiAKIGlmIHRlc3QgJFdJVEhfQ1VSU0VTX0ggPSB5ZXM7IHRoZW4KIAljYXQgPj5oZWFkZXJzLnNoIDw8Q0ZfRU9GCiBjYXNlIFwkRFNUIGluCi0vKi9pbmNsdWRlLyopCisoLyovaW5jbHVkZS8qKQogCUVORD1cYGJhc2VuYW1lIFwkRFNUXGAKIAlmb3IgaSBpbiBcYGNhdCBcJFJFRi8uLi8qL2hlYWRlcnMgfGZncmVwIC12ICIjIlxgCiAJZG8KQEAgLTE4MjkwLDcgKzI0MDQ5LDcgQEAKIAkJZWNobyAicy88XCROQU1FPi88XCRFTkRcL1wkTkFNRT4vIiA+PiBcJFRNUFNFRAogCWRvbmUKIAk7OwotKikKKygqKQogCWVjaG8gIiIgPj4gXCRUTVBTRUQKIAk7OwogZXNhYwpAQCAtMTgyOTksNyArMjQwNTgsNyBAQAogZWxzZQogCWNhdCA+PmhlYWRlcnMuc2ggPDxDRl9FT0YKIGNhc2UgXCREU1QgaW4KLS8qL2luY2x1ZGUvKikKKygvKi9pbmNsdWRlLyopCiAJRU5EPVxgYmFzZW5hbWUgXCREU1RcYAogCWZvciBpIGluIFxgY2F0IFwkUkVGLy4uLyovaGVhZGVycyB8ZmdyZXAgLXYgIiMiXGAKIAlkbwpAQCAtMTgzMTIsNyArMjQwNzEsNyBAQAogCQllY2hvICJzLzxcJE5BTUU+LzxcJEVORFwvXCROQU1FPi8iID4+IFwkVE1QU0VECiAJZG9uZQogCTs7Ci0qKQorKCopCiAJZWNobyAicy88Y3Vyc2VzLmg+LzxuY3Vyc2VzLmg+LyIgPj4gXCRUTVBTRUQKIAk7OwogZXNhYwpAQCAtMTgzNjMsNiArMjQxMjIsMTEgQEAKIAlmaQogZG9uZQogCitpZiB0ZXN0ICJ4JGNmX3dpdGhfYWRhIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9ICJ4eWVzIjsgdGhlbgoraWYgdGVzdCAteiAiJFVTRV9PTERfTUFLRVJVTEVTIiA7IHRoZW4KKwkkQVdLIC1mICRzcmNkaXIvQWRhOTUvbWstMXN0LmF3ayA8JHNyY2Rpci9BZGE5NS9zcmMvbW9kdWxlcyA+PkFkYTk1L3NyYy9NYWtlZmlsZQorZmkKK2ZpCiAgOzsKICAgZXNhYwogZG9uZQpAQCAtMTgzOTIsNCArMjQxNTYsNCBAQAogICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KICAgJGFjX2NzX3N1Y2Nlc3MgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CiBmaQotJHtNQUtFLW1ha2V9IHByZWluc3RhbGwKKyR7TUFLRTotbWFrZX0gcHJlaW5zdGFsbApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCmluZGV4IDJiNDQyMmEuLmIwOTcwNjQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5pbgorKysgYi9jb25maWd1cmUuaW4KQEAgLTEsNSArMSw1IEBACiBkbmwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLWRubCBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorZG5sIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiBkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIGRubCBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogZG5sIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw0NSArMjgsNTEgQEAKIGRubAogZG5sIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk1LW9uCiBkbmwKLWRubCAkSWQ6IGNvbmZpZ3VyZS5pbix2IDEuNDU0IDIwMDgvMTAvMTggMTQ6NTM6MzIgdG9tIEV4cCAkCitkbmwgJElkOiBjb25maWd1cmUuaW4sdiAxLjYxOSAyMDE1LzA4LzA1IDIzOjMyOjI3IHRvbSBFeHAgJAogZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCiBkbmwKIGRubCBTZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mLyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KIGRubAogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQUNfUFJFUkVRKDIuMTMuMjAwMjAyMTApCi1BQ19SRVZJU0lPTigkUmV2aXNpb246IDEuNDU0ICQpCitBQ19QUkVSRVEoMi41Mi4yMDAzMDIwOCkKK0FDX1JFVklTSU9OKCRSZXZpc2lvbjogMS42MTkgJCkKIEFDX0lOSVQobmN1cnNlcy9iYXNlL2xpYl9pbml0c2NyLmMpCiBBQ19DT05GSUdfSEVBREVSKGluY2x1ZGUvbmN1cnNlc19jZmcuaDppbmNsdWRlL25jdXJzZXNfY2ZnLmhpbikKIAogQ0ZfVE9QX0JVSUxERElSCiBDRl9TVUJTVF9OQ1VSU0VTX1ZFUlNJT04KK0NGX1ZFUlNJT05fSU5GTyhOQ1VSU0VTLG5jdXJzZXMpCiAKIENGX1dJVEhfUkVMX1ZFUlNJT04oTkNVUlNFUykKLUNGX1dJVEhfQUJJX1ZFUlNJT04KK0NGX05DVVJTRVNfV0lUSF9BQklfVkVSU0lPTgogCi1DRl9DSEVDS19DQUNIRShbQUNfQ0FOT05JQ0FMX1NZU1RFTV0pCi1BQ19BUkdfV0lUSChzeXN0ZW0tdHlwZSwKLVsgIC0td2l0aC1zeXN0ZW0tdHlwZT1YWFggIHRlc3Q6IG92ZXJyaWRlIGRlcml2ZWQgaG9zdCBzeXN0ZW0tdHlwZV0sCi1bQUNfTVNHX1dBUk4ob3ZlcnJpZGluZyBzeXN0ZW0gdHlwZSB0byAkd2l0aHZhbCkKLSBjZl9jdl9zeXN0ZW1fbmFtZT0kd2l0aHZhbF0pCitDRl9XSVRIX1NZU1RZUEUKIAogIyMjCVNhdmUgdGhlIGdpdmVuICRDRkxBR1MgdG8gYWxsb3cgdXNlci1vdmVycmlkZS4KIGNmX3VzZXJfQ0ZMQUdTPSIkQ0ZMQUdTIgogCiAjIyMJRGVmYXVsdCBpbnN0YWxsLWxvY2F0aW9uCiBDRl9DRkdfREVGQVVMVFMKKyMjIyBEZWZhdWx0cyBmb3IgbmN1cnNlcyBBQkkKK0NGX0FCSV9ERUZBVUxUUwogCiAjIyMJQ2hlY2tzIGZvciBwcm9ncmFtcy4KLUFDX1BST0dfQ0MKLUNGX0dDQ19WRVJTSU9OCitBQ19BUkdfV0lUSChhZGEsCisJWyAgLS13aXRob3V0LWFkYSAgICAgICAgICAgc3VwcHJlc3MgY2hlY2sgZm9yIEFkYTk1LCBkb24ndCBidWlsZCBkZW1vXSwKKwlbY2Zfd2l0aF9hZGE9JHdpdGh2YWxdLAorCVtjZl93aXRoX2FkYT15ZXNdKQoraWYgdGVzdCAieCRjZl93aXRoX2FkYSIgPSB4eWVzCit0aGVuCisJY2ZfUFJPR19DQz0iZ25hdGdjYyBnY2MgY2MiCitlbHNlCisJY2ZfUFJPR19DQz0iZ2NjIGNjIgorZmkKKworQ0ZfUFJPR19DQygkY2ZfUFJPR19DQykKIAogQUNfUFJPR19DUFAKIEFDX1BST0dfR0NDX1RSQURJVElPTkFMCiBDRl9QUk9HX0NDX0NfTyhDQykKLUFDX0lTQ19QT1NJWAotQ0ZfQU5TSV9DQ19SRVFECi1DRl9QUk9HX0VYVAogQ0ZfUFJPR19MRENPTkZJRwogCiBkbmwgREVGRUNUIGluIGF1dG9jb25mIDIuMTI6CWFuIGF0dGVtcHQgdG8gc2V0IHBvbGljeSwgdGhpcyBicmVha3MgdGhlCkBAIC04OSwxOSArOTUsNTIgQEAKIAkJY2Zfd2l0aF9jeHg9bm87IENYWD0iIjsgR1hYPSIiO10pZG5sCiAJQUNfUFJPR19DWFgKIAlwb3BkZWYoW0FDX01TR19FUlJPUl0pZG5sCi0JIyBhdXRvY29uZiAyLjV4IHJlbW92ZWQgdGhlIGVycm9yIC0gYnkgaGFyZGNvZGluZyBpdCB0byBnKysuCisKKwlBQ19MQU5HX1BVU0goQysrKQorCWlmIHRlc3QgIngkY2Zfd2l0aF9jeHgiICE9IHhubworCXRoZW4KKwkJIyBTZXZlcmFsIG9mIHRoZSBDKysgY29uZmlndXJhdGlvbnMgZG8gbm90IHdvcmssIHBhcnRpY3VsYXJseSB3aGVuCisJCSMgY3Jvc3MtY29tcGlsaW5nICgyMDE0MDkxMyAtVEQpCisJCUFDX01TR19DSEVDS0lORyhpZiAkQ1hYIHdvcmtzKQorCisJCXNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwkJZXZhbCBjZl9pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0KKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSR7Y2ZfaW5jbHVkZWRpcn0iCisJCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorXSwKKwkJWworCQlwcmludGYoIkhlbGxvIHdvcmxkIVxuIikKKwkJXSwKKwkJW2NmX2N4eF93b3Jrcz15ZXNdLAorCQlbY2ZfY3h4X3dvcmtzPW5vXSkKKwkJQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgorCisJCUFDX01TR19SRVNVTFQoJGNmX2N4eF93b3JrcykKKwkJaWYgdGVzdCAieCRjZl9jeHhfd29ya3MiID0geG5vCisJCXRoZW4KKwkJCUFDX01TR19XQVJOKFtJZ25vcmUgJENYWCwgc2luY2UgaXQgY2Fubm90IGNvbXBpbGUgaGVsbG8td29ybGQuXSkKKwkJCWNmX3dpdGhfY3h4PW5vOyBDWFg9IiI7IEdYWD0iIjsKKwkJZmkKKwlmaQorCUFDX0xBTkdfUE9QCisKKwkjIGF1dG9jb25mIDIuNXggcmVtb3ZlZCB0aGUgZXJyb3IgKGhhcmRjb2RpbmcgaXQgdG8gZysrLCBvciBqdXN0IGJsYW5rKQogCWlmIHRlc3QgIiRDWFgiID0gImcrKyIgOyB0aGVuCiAJCUFDX1BBVEhfUFJPRyhDWFgsZysrKQogCWZpCi0JaWYgdGVzdCAiJENYWCIgPSAiZysrIiA7IHRoZW4KLQkJQUNfTVNHX1dBUk4oaWdub3JpbmcgaGFyZGNvZGVkIGcrKykKKwljYXNlICJ4JENYWCIgaW4KKwkoeHx4ZysrKQorCQlBQ19NU0dfV0FSTihbWW91IGRvbid0IGhhdmUgYW55IEMrKyBjb21waWxlciwgdG9vIGJhZF0pCiAJCWNmX3dpdGhfY3h4PW5vOyBDWFg9IiI7IEdYWD0iIjsKLQlmaQorCQk7OworCWVzYWMKIGZpCiAKIENGX0dYWF9WRVJTSU9OCiBjYXNlICRHWFhfVkVSU0lPTiBpbgotMSp8Mi5bWzAtNl1dKikKKygxKnwyLltbMC02XV0qKQogCSMgR1hYPSIiOyBDWFg9IiI7IGFjX2N2X3Byb2dfZ3h4PW5vCiAJIyBjZl9jeHhfbGlicmFyeT1ubwogCUFDX01TR19XQVJOKHRlbXBsYXRlcyBkbyBub3Qgd29yaykKQEAgLTExNiwxOSArMTU1LDM2IEBACiBBQ19NU0dfUkVTVUxUKCRjZl93aXRoX2N4eF9iaW5kaW5nKQogCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCBBZGE5NSkKLUFDX0FSR19XSVRIKGFkYSwKLQlbICAtLXdpdGhvdXQtYWRhICAgICAgICAgICBzdXBwcmVzcyBjaGVjayBmb3IgQWRhOTUsIGRvbid0IGJ1aWxkIGRlbW9dLAotCVtjZl93aXRoX2FkYT0kd2l0aHZhbF0sCi0JW2NmX3dpdGhfYWRhPXllc10pCiBBQ19NU0dfUkVTVUxUKCRjZl93aXRoX2FkYSkKIAorQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGluc3RhbGwgdGVybWluYWwgZGF0YWJhc2UpCitBQ19BUkdfRU5BQkxFKGRiLWluc3RhbGwsCisJWyAgLS1kaXNhYmxlLWRiLWluc3RhbGwgICAgc3VwcHJlc3MgaW5zdGFsbCBvZiB0ZXJtaW5hbCBkYXRhYmFzZV0sCisJW2NmX3dpdGhfZGJfaW5zdGFsbD0kZW5hYmxldmFsXSwKKwlbY2Zfd2l0aF9kYl9pbnN0YWxsPXllc10pCitBQ19NU0dfUkVTVUxUKCRjZl93aXRoX2RiX2luc3RhbGwpCisKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBpbnN0YWxsIG1hbnBhZ2VzKQorQUNfQVJHX1dJVEgobWFucGFnZXMsCisJWyAgLS13aXRob3V0LW1hbnBhZ2VzICAgICAgc3VwcHJlc3MgaW5zdGFsbCBvZiBtYW5wYWdlc10sCisJW2NmX3dpdGhfbWFucGFnZXM9JHdpdGh2YWxdLAorCVtjZl93aXRoX21hbnBhZ2VzPXllc10pCitBQ19NU0dfUkVTVUxUKCRjZl93aXRoX21hbnBhZ2VzKQorCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gYnVpbGQgcHJvZ3JhbXMgc3VjaCBhcyB0aWMpCiBBQ19BUkdfV0lUSChwcm9ncywKLQlbICAtLXdpdGhvdXQtcHJvZ3MgICAgICAgICBzdXBwcmVzcyBidWlsZCB3aXRoIHByb2dyYW1zIChlLmcuLCB0aWMpXSwKKwlbICAtLXdpdGhvdXQtcHJvZ3MgICAgICAgICBzdXBwcmVzcyBidWlsZC9pbnN0YWxsIHdpdGggcHJvZ3JhbXMgKGUuZy4sIHRpYyldLAogCVtjZl93aXRoX3Byb2dzPSR3aXRodmFsXSwKIAlbY2Zfd2l0aF9wcm9ncz15ZXNdKQogQUNfTVNHX1JFU1VMVCgkY2Zfd2l0aF9wcm9ncykKIAorQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRlc3QtcHJvZ3JhbXMpCitBQ19BUkdfV0lUSCh0ZXN0cywKKwlbICAtLXdpdGhvdXQtdGVzdHMgICAgICAgICBzdXBwcmVzcyBidWlsZC9pbnN0YWxsIHdpdGggdGVzdC1wcm9ncmFtc10sCisJW2NmX3dpdGhfdGVzdHM9JHdpdGh2YWxdLAorCVtjZl93aXRoX3Rlc3RzPXllc10pCitBQ19NU0dfUkVTVUxUKCRjZl93aXRoX3Rlc3RzKQorCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdpc2ggdG8gaW5zdGFsbCBjdXJzZXMuaCkKIEFDX0FSR19XSVRIKGN1cnNlcy1oLAogCVsgIC0td2l0aG91dC1jdXJzZXMtaCAgICAgIGluc3RhbGwgY3Vyc2VzLmggYXMgbmN1cnNlcy5oIG9ubHldLApAQCAtMTQ4LDEwICsyMDQsMzIgQEAKIENGX1BST0dfRUdSRVAKIENGX1BST0dfSU5TVEFMTAogQ0ZfUFJPR19MSU5UCi1BQ19QUk9HX0xOX1MKK0NGX1BST0dfTE5fUwogCiBBQ19TWVNfTE9OR19GSUxFX05BTUVTCiAKKyMgaWYgd2UgZmluZCBwa2ctY29uZmlnLCBjaGVjayBpZiB3ZSBzaG91bGQgaW5zdGFsbCB0aGUgIi5wYyIgZmlsZXMuCitDRl9QS0dfQ09ORklHCitDRl9XSVRIX1BLR19DT05GSUdfTElCRElSCitDRl9FTkFCTEVfUENfRklMRVMKK2lmIHRlc3QgLXogIiRNQUtFX1BDX0ZJTEVTIgordGhlbgorCUFDX01TR19DSEVDS0lORyhmb3Igc3VmZml4IHRvIGFkZCB0byBwYy1maWxlcykKK0FDX0FSR19XSVRIKHBjLXN1ZmZpeCwKKwlbICAtLXdpdGgtcGMtc3VmZml4ICAgICAgICBzdWZmaXhlcyBwYy1maWxlc10sCisJW2Nhc2UgIngkd2l0aHZhbCIgaW4KKwkoeHllc3x4bm8pCisJCVBDX01PRFVMRV9TVUZGSVg9CisJCTs7CisJKCopCVBDX01PRFVMRV9TVUZGSVg9IiR3aXRodmFsIgorCQk7OworCWVzYWNdKQorCXRlc3QgLXogIiRQQ19NT0RVTEVfU1VGRklYIiAmJiBQQ19NT0RVTEVfU1VGRklYPW5vbmUKKwlBQ19NU0dfUkVTVUxUKCRQQ19NT0RVTEVfU1VGRklYKQorCXRlc3QgIiRQQ19NT0RVTEVfU1VGRklYIiA9IG5vbmUgJiYgUENfTU9EVUxFX1NVRkZJWD0KKwlBQ19TVUJTVChQQ19NT0RVTEVfU1VGRklYKQorZmkKKwogQUNfTVNHX0NIRUNLSU5HKGlmIHdlIHNob3VsZCBhc3N1bWUgbWl4ZWQtY2FzZSBmaWxlbmFtZXMpCiBBQ19BUkdfRU5BQkxFKG1peGVkLWNhc2UsCiAJWyAgLS1lbmFibGUtbWl4ZWQtY2FzZSAgICAgdGljIHNob3VsZCBhc3N1bWUgbWl4ZWQtY2FzZSBmaWxlbmFtZXNdLApAQCAtMTU5LDEyICsyMzcsMTIgQEAKIAlbZW5hYmxlX21peGVkY2FzZT1hdXRvXSkKIEFDX01TR19SRVNVTFQoJGVuYWJsZV9taXhlZGNhc2UpCiBpZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAiYXV0byIgOyB0aGVuCi0gICAgQ0ZfTUlYRURDQVNFX0ZJTEVOQU1FUworCUNGX01JWEVEQ0FTRV9GSUxFTkFNRVMKIGVsc2UKLSAgICBjZl9jdl9taXhlZGNhc2U9JGVuYWJsZV9taXhlZGNhc2UKLSAgICBpZiB0ZXN0ICIkZW5hYmxlX21peGVkY2FzZSIgPSAieWVzIiA7IHRoZW4KLSAgICAgICAgQUNfREVGSU5FKE1JWEVEQ0FTRV9GSUxFTkFNRVMpCi0gICAgZmkKKwljZl9jdl9taXhlZGNhc2U9JGVuYWJsZV9taXhlZGNhc2UKKwlpZiB0ZXN0ICJ4JGVuYWJsZV9taXhlZGNhc2UiID0gInh5ZXMiIDsgdGhlbgorCQlBQ19ERUZJTkUoTUlYRURDQVNFX0ZJTEVOQU1FUywxLFtEZWZpbmUgdG8gMSBpZiB0aWMgc2hvdWxkIGFzc3VtZSBtaXhlZC1jYXNlIGZpbGVuYW1lc10pCisJZmkKIGZpCiAKICMgZG8gdGhpcyBhZnRlciBtaXhlZC1jYXNlIG9wdGlvbiAodGFncy9UQUdTIGlzIG5vdCBhcyBpbXBvcnRhbnQgYXMgdGljKS4KQEAgLTE3Niw3ICsyNTQsOCBAQAogQUNfQ0hFQ0tfVE9PTChSQU5MSUIsIHJhbmxpYiwgJzonKQogQUNfQ0hFQ0tfVE9PTChMRCwgbGQsIGxkKQogQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGFyKQotQ0ZfU1VCU1QoYXJjaGl2ZXIgb3B0aW9ucyxBUl9PUFRTLHJ2KQorQUNfQ0hFQ0tfVE9PTChOTSwgbm0sIG5tKQorQ0ZfQVJfRkxBR1MKIAogZG5sIFNwZWNpYWwgb3B0aW9uIGZvciB1c2UgYnkgc3lzdGVtLWJ1aWxkZXJzOiB0aGUgaW5zdGFsbC1wcmVmaXggaXMgdXNlZCB0bwogZG5sIGFkanVzdCB0aGUgbG9jYXRpb24gaW50byB3aGljaCB0aGUgYWN0dWFsIGluc3RhbGwgaXMgZG9uZSwgc28gdGhhdCBhbgpAQCAtMTg0LDEwICsyNjMsMTAgQEAKIEFDX01TR19DSEVDS0lORyhpZiB5b3UgaGF2ZSBzcGVjaWZpZWQgYW4gaW5zdGFsbC1wcmVmaXgpCiBBQ19BUkdfV0lUSChpbnN0YWxsLXByZWZpeCwKIAlbICAtLXdpdGgtaW5zdGFsbC1wcmVmaXggICBwcmVmaXhlcyBhY3R1YWwgaW5zdGFsbC1sb2NhdGlvbiAoJERFU1RESVIpXSwKLQlbY2FzZSAiJHdpdGh2YWwiIGluICModmkKLQl5ZXN8bm8pICModmkKKwlbY2FzZSAieCR3aXRodmFsIiBpbgorCSh4eWVzfHhubykKIAkJOzsKLQkqKQlERVNURElSPSIkd2l0aHZhbCIKKwkoKikJREVTVERJUj0iJHdpdGh2YWwiCiAJCTs7CiAJZXNhY10pCiBBQ19NU0dfUkVTVUxUKCRERVNURElSKQpAQCAtMjIyLDcgKzMwMSw3IEBACiAJW3dpdGhfc2hhcmVkPSR3aXRodmFsXSwKIAlbd2l0aF9zaGFyZWQ9bm9dKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9zaGFyZWQpCi10ZXN0ICIkd2l0aF9zaGFyZWQiID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBzaGFyZWQiCit0ZXN0ICJ4JHdpdGhfc2hhcmVkIiA9ICJ4eWVzIiAmJiBjZl9saXN0X21vZGVscz0iJGNmX2xpc3RfbW9kZWxzIHNoYXJlZCIKIAogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMpCiBBQ19BUkdfV0lUSChub3JtYWwsCkBAIC0yMzAsNyArMzA5LDcgQEAKIAlbd2l0aF9ub3JtYWw9JHdpdGh2YWxdLAogCVt3aXRoX25vcm1hbD15ZXNdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9ub3JtYWwpCi10ZXN0ICIkd2l0aF9ub3JtYWwiID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBub3JtYWwiCit0ZXN0ICJ4JHdpdGhfbm9ybWFsIiA9ICJ4eWVzIiAmJiBjZl9saXN0X21vZGVscz0iJGNmX2xpc3RfbW9kZWxzIG5vcm1hbCIKIAogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIGRlYnVnIGxpYnJhcmllcykKIEFDX0FSR19XSVRIKGRlYnVnLApAQCAtMjM4LDcgKzMxNyw3IEBACiAJW3dpdGhfZGVidWc9JHdpdGh2YWxdLAogCVt3aXRoX2RlYnVnPXllc10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2RlYnVnKQotdGVzdCAiJHdpdGhfZGVidWciID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBkZWJ1ZyIKK3Rlc3QgIngkd2l0aF9kZWJ1ZyIgPSAieHllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBkZWJ1ZyIKIAogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIHByb2ZpbGluZyBsaWJyYXJpZXMpCiBBQ19BUkdfV0lUSChwcm9maWxlLApAQCAtMjQ2LDEwICszMjUsMjEgQEAKIAlbd2l0aF9wcm9maWxlPSR3aXRodmFsXSwKIAlbd2l0aF9wcm9maWxlPW5vXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfcHJvZmlsZSkKLXRlc3QgIiR3aXRoX3Byb2ZpbGUiID0gInllcyIgJiYgY2ZfbGlzdF9tb2RlbHM9IiRjZl9saXN0X21vZGVscyBwcm9maWxlIgordGVzdCAieCR3aXRoX3Byb2ZpbGUiID0gInh5ZXMiICYmIGNmX2xpc3RfbW9kZWxzPSIkY2ZfbGlzdF9tb2RlbHMgcHJvZmlsZSIKIAogZmkKIAoraWYgdGVzdCAiWCRjZl93aXRoX2N4eF9iaW5kaW5nIiAhPSBYbm87IHRoZW4KK2lmIHRlc3QgIngkd2l0aF9zaGFyZWQiID0gInh5ZXMiOyB0aGVuCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gYnVpbGQgQysrIHNoYXJlZCBsaWJyYXJpZXMpCitBQ19BUkdfV0lUSChjeHgtc2hhcmVkLAorCVsgIC0td2l0aC1jeHgtc2hhcmVkICAgICAgIGdlbmVyYXRlIEMrKyBzaGFyZWQtbGlicmFyaWVzXSwKKwlbd2l0aF9zaGFyZWRfY3h4PSR3aXRodmFsXSwKKwlbd2l0aF9zaGFyZWRfY3h4PW5vXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfc2hhcmVkX2N4eCkKK2ZpCitmaQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIEFDX01TR19DSEVDS0lORyhmb3Igc3BlY2lmaWVkIG1vZGVscykKQEAgLTI4MiwxMiArMzcyLDExIEBACiBMSUJfRElSPS4uL2xpYgogTElCXzJORD0uLi8uLi9saWIKIAotQ0ZfTElCX1BSRUZJWChjZl9wcmVmaXgpCi1MSUJfUFJFRklYPSRjZl9wcmVmaXgKLUFDX1NVQlNUKExJQl9QUkVGSVgpCitDRl9XSVRIX0xJQl9QUkVGSVgoY2ZfcHJlZml4KQogCiBMSUJfU1VGRklYPQogQUNfU1VCU1QoTElCX1NVRkZJWCkKK0NGX1BBVEhTRVAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC0zMTUsMjAgKzQwNCwyMSBAQAogCQlbd2l0aF9kbHN5bT0kd2l0aHZhbF0sCiAJCVt3aXRoX2Rsc3ltPXllc10pCiAJQUNfTVNHX1JFU1VMVCgkd2l0aF9kbHN5bSkKLQlpZiB0ZXN0ICIkd2l0aF9kbHN5bSIgPSB5ZXMgOyB0aGVuCisJaWYgdGVzdCAieCR3aXRoX2Rsc3ltIiA9IHh5ZXMgOyB0aGVuCiAJCUNGX0ZVTkNfRExTWU0KLQkJaWYgdGVzdCAiJHdpdGhfZ3BtIiAhPSB5ZXMgOyB0aGVuCisJCWlmIHRlc3QgIngkd2l0aF9ncG0iICE9IHh5ZXMgOyB0aGVuCiAJCQlDRl9WRVJCT1NFKGFzc3VtaW5nIHNvbmFtZSBmb3IgZ3BtIGlzICR3aXRoX2dwbSkKIAkJCWNmX2N2X2dwbV9zb25hbWU9IiR3aXRoX2dwbSIKIAkJZWxzZQogCQkJQ0ZfTElCX1NPTkFNRShbI2luY2x1ZGUgPGdwbS5oPl0sW2lmIChHcG1fT3BlbigwLDApKSBHcG1fQ2xvc2UoKTtdLGdwbSkKIAkJZmkKLQkJdGVzdCAiJGNmX2N2X2dwbV9zb25hbWUiICE9ICJ1bmtub3duIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoTElCR1BNX1NPTkFNRSwiJGNmX2N2X2dwbV9zb25hbWUiKQorCQl0ZXN0ICIkY2ZfY3ZfZ3BtX3NvbmFtZSIgIT0gInVua25vd24iICYmIEFDX0RFRklORV9VTlFVT1RFRChMSUJHUE1fU09OQU1FLCIkY2ZfY3ZfZ3BtX3NvbmFtZSIsW0RlZmluZSBhcyBuZWVkZWQgdG8gc2V0IHRoZSBncG0gc2hhcmUgbGlicmFyeSBzb25hbWVdKQogCQlTSExJQl9MSVNUPSItbGRsICRTSExJQl9MSVNUIgogCWVsc2UKIAkJU0hMSUJfTElTVD0iLWxncG0gJFNITElCX0xJU1QiCisJCUNGX0FERF9MSUIoZ3BtLFRFU1RfTElCUykKIAlmaQotCUFDX0RFRklORShIQVZFX0xJQkdQTSkKKwlBQ19ERUZJTkUoSEFWRV9MSUJHUE0sMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSB0aGUgZ3BtIGxpYnJhcnldKQogCUNGX0NIRUNLX0dQTV9XR0VUQ0gKIGZpCiAKQEAgLTMzOCwyOSArNDI4LDI5IEBACiAKIGlmIHRlc3QgWCIkQ0NfR19PUFQiID0gWCIiIDsgdGhlbgogCUNDX0dfT1BUPSctZycKLQl0ZXN0IC1uICIkR0NDIiAmJiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZ30iICE9IHllcyAmJiBDQ19HX09QVD0nJworCXRlc3QgLW4gIiRHQ0MiICYmIHRlc3QgIngke2FjX2N2X3Byb2dfY2NfZ30iICE9IHh5ZXMgJiYgQ0NfR19PUFQ9JycKIGZpCiBBQ19TVUJTVChDQ19HX09QVCkKIAogaWYgdGVzdCBYIiRDWFhfR19PUFQiID0gWCIiIDsgdGhlbgogCUNYWF9HX09QVD0nLWcnCi0JdGVzdCAtbiAiJEdYWCIgJiYgdGVzdCAiJHthY19jdl9wcm9nX2N4eF9nfSIgIT0geWVzICYmIENYWF9HX09QVD0nJworCXRlc3QgLW4gIiRHWFgiICYmIHRlc3QgIngke2FjX2N2X3Byb2dfY3h4X2d9IiAhPSB4eWVzICYmIENYWF9HX09QVD0nJwogZmkKIEFDX1NVQlNUKENYWF9HX09QVCkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciBkZWZhdWx0IGxvYWRlciBmbGFncykKIGNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLWxpYnRvb2wpIExEX01PREVMPScnICAgOzsKLW5vcm1hbCkgIExEX01PREVMPScnICAgOzsKLWRlYnVnKSAgIExEX01PREVMPSRDQ19HX09QVCA7OwotcHJvZmlsZSkgTERfTU9ERUw9Jy1wZyc7Owotc2hhcmVkKSAgTERfTU9ERUw9JycgICA7OworKGxpYnRvb2wpIExEX01PREVMPScnICAgOzsKKyhub3JtYWwpICBMRF9NT0RFTD0nJyAgIDs7CisoZGVidWcpICAgTERfTU9ERUw9JENDX0dfT1BUIDs7CisocHJvZmlsZSkgTERfTU9ERUw9Jy1wZyc7OworKHNoYXJlZCkgIExEX01PREVMPScnICAgOzsKIGVzYWMKIEFDX1NVQlNUKExEX01PREVMKWRubAkJdGhlIHR5cGUgb2YgbGluayAoZS5nLiwgLWcgb3IgLXBnKQogQUNfTVNHX1JFU1VMVCgkTERfTU9ERUwpCiAKIGNhc2UgJERGVF9MV1JfTU9ERUwgaW4KLXNoYXJlZCkKKyhzaGFyZWQpCiBDRl9FTkFCTEVfUlBBVEgKIEFDX01TR19DSEVDS0lORyhpZiBzaGFyZWQgbGlicmFyaWVzIHNob3VsZCBiZSByZWxpbmtlZCBkdXJpbmcgaW5zdGFsbCkKIEFDX0FSR19FTkFCTEUocmVsaW5rLApAQCAtMzcxLDIyICs0NjEsNjQgQEAKIAk7OwogZXNhYwogCisjIHdlIHdpbGwgYnVpbGQgbGlicmFyaWVzIG9uZS1sZXZlbCBkb3duLgorcmVsX2J1aWxkZGlyPS4uCiBDRl9TSEFSRURfT1BUUwotaWYgdGVzdCAiJENDX1NIQVJFRF9PUFRTIiA9ICJ1bmtub3duIjsgdGhlbgotCWZvciBtb2RlbCBpbiAkY2ZfbGlzdF9tb2RlbHM7IGRvCi0JCWlmIHRlc3QgIiRtb2RlbCIgPSAic2hhcmVkIjsgdGhlbgorZm9yIG1vZGVsIGluICRjZl9saXN0X21vZGVsczsgZG8KKwljYXNlICRtb2RlbCBpbgorCShsaWJ0b29sKQorCQlDRl9XSVRIX0xJQlRPT0xfT1BUUworCQlDRl9XSVRIX0VYUE9SVF9TWU1TCisJCTs7CisJKHNoYXJlZCkKKwkJaWYgdGVzdCAiJENDX1NIQVJFRF9PUFRTIiA9ICJ1bmtub3duIjsgdGhlbgogCQkJQUNfRVJST1IoU2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24pCiAJCWZpCi0JZG9uZQorCQlDRl9XSVRIX1ZFUlNJT05FRF9TWU1TCisJCTs7CisJZXNhYworZG9uZQorCisjIHByZXRlbmQgdGhhdCBuY3Vyc2VzPT1uY3Vyc2Vzdz09bmN1cnNlc3QKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGxpYnJhcnkgc3VmZml4ZXMpCitDRl9BUkdfRElTQUJMRShsaWItc3VmZml4ZXMsCisJWyAgLS1kaXNhYmxlLWxpYi1zdWZmaXhlcyAgZGlzYWJsZSBsaWJyYXJ5IHN1ZmZpeGVzXSwKKwlbZGlzYWJsZV9saWJfc3VmZml4ZXM9eWVzXSwKKwlbZGlzYWJsZV9saWJfc3VmZml4ZXM9bm9dLAorCW5vKQorQUNfTVNHX1JFU1VMVCgkZGlzYWJsZV9saWJfc3VmZml4ZXMpCisKKyMjIyBJZiB3ZSdyZSBidWlsZGluZyB3aXRoIHJwYXRoLCB0cnkgdG8gbGluayBub24tc3RhbmRhcmQgbGlicyB0aGF0IHdheSB0b28uCitpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAic2hhcmVkIjsgdGhlbgorCUNGX0RJU0FCTEVfUlBBVEhfSEFDSwogZmkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogQ0ZfSEVMUF9NRVNTQUdFKEZpbmUtVHVuaW5nIFlvdXIgQ29uZmlndXJhdGlvbjopCiAKKyMjIwl1c2Ugb3B0aW9uIC0td2l0aC1leHRyYS1zdWZmaXggdG8gYXBwZW5kIHN1ZmZpeCB0byBoZWFkZXJzIGFuZCBsaWJyYXJpZXMKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2lzaCB0byBhcHBlbmQgZXh0cmEgc3VmZml4IHRvIGhlYWRlci9saWJyYXJ5IHBhdGhzKQorRVhUUkFfU1VGRklYPQorQUNfQVJHX1dJVEgoZXh0cmEtc3VmZml4LAorCVsgIC0td2l0aC1leHRyYS1zdWZmaXg9WCAgIGFwcGVuZCBleHRyYSBzdWZmaXggdG8gaGVhZGVyL2xpYnJhcnkgcGF0aHNdLAorCVtjYXNlIHgkd2l0aHZhbCBpbgorCShubykKKwkJOzsKKwkoeHllc3x4KQorCQlFWFRSQV9TVUZGSVg9JGNmX2N2X2FiaV92ZXJzaW9uCisJCTs7CisJKCopCisJCUVYVFJBX1NVRkZJWD0kd2l0aHZhbAorCQk7OworCWVzYWMKKwldKQorQUNfTVNHX1JFU1VMVCgkRVhUUkFfU1VGRklYKQorQUNfU1VCU1QoRVhUUkFfU1VGRklYKQorCiAjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtb3ZlcndyaXRlIHRvIGxlYXZlIG91dCB0aGUgbGluayB0byAtbGN1cnNlcwogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgbmN1cnNlcyBvdmVyd3JpdGluZyBjdXJzZXMpCiBBQ19BUkdfRU5BQkxFKG92ZXJ3cml0ZSwKLQlbICAtLWRpc2FibGUtb3ZlcndyaXRlICAgICBsZWF2ZSBvdXQgdGhlIGxpbmsgdG8gLWxjdXJzZXNdLAorCVsgIC0tZGlzYWJsZS1vdmVyd3JpdGUgICAgIHB1dCBoZWFkZXJzIGluIHN1YmRpciwgb21pdCBsaW5rIHRvIC1sY3Vyc2VzXSwKIAlbd2l0aF9vdmVyd3JpdGU9JGVuYWJsZXZhbF0sCiAJW2lmIHRlc3QgIiRwcmVmaXgiID0gIi91c3IiIDsgdGhlbiB3aXRoX292ZXJ3cml0ZT15ZXM7IGVsc2Ugd2l0aF9vdmVyd3JpdGU9bm87IGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfb3ZlcndyaXRlKQpAQCAtMzk4LDIyICs1MzAsMjIgQEAKIAlbdXNlX2RhdGFiYXNlPXllc10pCiBBQ19NU0dfUkVTVUxUKCR1c2VfZGF0YWJhc2UpCiAKLWNhc2UgJGhvc3Rfb3MgaW4gIyh2aQotb3MyKikgIyh2aQorY2FzZSAkaG9zdF9vcyBpbgorKG9zMiopCiAJVEVSTUlORk9fU1JDPScke3RvcF9zcmNkaXJ9L21pc2MvZW14LnNyYycKIAk7OwotKikgIyh2aQorKCopCiAJVEVSTUlORk9fU1JDPScke3RvcF9zcmNkaXJ9L21pc2MvdGVybWluZm8uc3JjJwogCTs7CiBlc2FjCiBBQ19TVUJTVChURVJNSU5GT19TUkMpCiAKLUNGX1BBVEhTRVAKK05DVVJTRVNfVVNFX0RBVEFCQVNFPTAKIGlmIHRlc3QgIiR1c2VfZGF0YWJhc2UiICE9IG5vIDsgdGhlbgotCUFDX0RFRklORShVU0VfREFUQUJBU0UpCisJTkNVUlNFU19VU0VfREFUQUJBU0U9MQogCiAJQUNfTVNHX0NIRUNLSU5HKHdoaWNoIHRlcm1pbmZvIHNvdXJjZS1maWxlIHdpbGwgYmUgaW5zdGFsbGVkKQotCUFDX0FSR19FTkFCTEUoZGF0YWJhc2UsCisJQUNfQVJHX1dJVEgoZGF0YWJhc2UsCiAJCVsgIC0td2l0aC1kYXRhYmFzZT1YWFggICAgIHNwZWNpZnkgdGVybWluZm8gc291cmNlIHRvIGluc3RhbGxdLAogCQlbVEVSTUlORk9fU1JDPSR3aXRodmFsXSkKIAlBQ19NU0dfUkVTVUxUKCRURVJNSU5GT19TUkMpCkBAIC00MjYsNiArNTU4LDcgQEAKIGVsc2UKIAl3aXRoX2hhc2hlZF9kYj1ubwogZmkKK0FDX1NVQlNUKE5DVVJTRVNfVVNFX0RBVEFCQVNFKQogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGxpc3Qgb2YgZmFsbGJhY2sgZGVzY3JpcHRpb25zKQogQUNfQVJHX1dJVEgoZmFsbGJhY2tzLApAQCAtNDQyLDEzICs1NzUsMzMgQEAKIAlbd2l0aF94dGVybV9uZXc9JHdpdGh2YWxdLAogCVt3aXRoX3h0ZXJtX25ldz15ZXNdKQogY2FzZSAkd2l0aF94dGVybV9uZXcgaW4KLW5vKQl3aXRoX3h0ZXJtX25ldz14dGVybS1vbGQ7OwotKikJd2l0aF94dGVybV9uZXc9eHRlcm0tbmV3OzsKKyhubykgd2l0aF94dGVybV9uZXc9eHRlcm0tb2xkOzsKKygqKQkgd2l0aF94dGVybV9uZXc9eHRlcm0tbmV3OzsKIGVzYWMKIEFDX01TR19SRVNVTFQoJHdpdGhfeHRlcm1fbmV3KQogV0hJQ0hfWFRFUk09JHdpdGhfeHRlcm1fbmV3CiBBQ19TVUJTVChXSElDSF9YVEVSTSkKIAorQUNfTVNHX0NIRUNLSU5HKGlmIHh0ZXJtIGJhY2tzcGFjZSBzZW5kcyBCUyBvciBERUwpCitBQ19BUkdfV0lUSCh4dGVybS1rYnMsCisJWyAgLS13aXRoLXh0ZXJtLWticz1YWFggICAgc3BlY2lmeSBpZiB4dGVybSBiYWNrc3BhY2Ugc2VuZHMgQlMgb3IgREVMXSwKKwlbd2l0aF94dGVybV9rYnM9JHdpdGh2YWxdLAorCVt3aXRoX3h0ZXJtX2ticz1CU10pCitjYXNlIHgkd2l0aF94dGVybV9rYnMgaW4KKyh4eWVzfHhub3x4QlN8eGJzfHg4KQorCXdpdGhfeHRlcm1fa2JzPUJTCisJOzsKKyh4REVMfHhkZWx8eDEyNykKKwl3aXRoX3h0ZXJtX2ticz1ERUwKKwk7OworKCopCisJd2l0aF94dGVybV9rYnM9JHdpdGh2YWwKKwk7OworZXNhYworQUNfTVNHX1JFU1VMVCgkd2l0aF94dGVybV9rYnMpCitYVEVSTV9LQlM9JHdpdGhfeHRlcm1fa2JzCitBQ19TVUJTVChYVEVSTV9LQlMpCisKIE1BS0VfVEVSTUlORk89CiBpZiB0ZXN0ICIkdXNlX2RhdGFiYXNlIiA9IG5vIDsgdGhlbgogCVRFUk1JTkZPPSIke2RhdGFkaXJ9L3Rlcm1pbmZvIgpAQCAtNDYyLDcgKzYxNSw3IEBACiAJREFUQURJUi90ZXJtaW5mbywKIAkke2RhdGFkaXJ9L3Rlcm1pbmZvKQogQUNfTVNHX1JFU1VMVCgkVEVSTUlORk9fRElSUykKLXRlc3QgLW4gIiRURVJNSU5GT19ESVJTIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoVEVSTUlORk9fRElSUywiJFRFUk1JTkZPX0RJUlMiKQordGVzdCAtbiAiJFRFUk1JTkZPX0RJUlMiICYmIEFDX0RFRklORV9VTlFVT1RFRChURVJNSU5GT19ESVJTLCIkVEVSTUlORk9fRElSUyIsW0RlZmluZSBhcyBuZWVkZWQgdG8gcHJlZGVmaW5lIHRoZSBURVJNSU5GT19ESVIgc2VhcmNobGlzdF0pCiAKIEFDX01TR19DSEVDS0lORyhmb3IgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkpCiBDRl9XSVRIX1BBVEgoZGVmYXVsdC10ZXJtaW5mby1kaXIsCkBAIC00NzEsNyArNjI0LDcgQEAKIAlEQVRBRElSL3Rlcm1pbmZvLAogCSR7ZGF0YWRpcn0vdGVybWluZm8pCiBBQ19NU0dfUkVTVUxUKCRURVJNSU5GTykKLUFDX0RFRklORV9VTlFVT1RFRChURVJNSU5GTywiJFRFUk1JTkZPIikKK0FDX0RFRklORV9VTlFVT1RFRChURVJNSU5GTywiJFRFUk1JTkZPIixbRGVmaW5lIHRvIHNldCB0aGUgZGVmYXVsdCB0ZXJtaW5hbCBkYXRhYmFzZSBwYXRoXSkKIAogZmkKIApAQCAtNDk4LDcgKzY1MSw3IEBACiAJW3dpdGhfYmlnX2NvcmU9bm9dLAogCVt3aXRoX2JpZ19jb3JlPW5vXSldKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9iaWdfY29yZSkKLXRlc3QgIiR3aXRoX2JpZ19jb3JlIiA9ICJ5ZXMiICYmIEFDX0RFRklORShIQVZFX0JJR19DT1JFKQordGVzdCAieCR3aXRoX2JpZ19jb3JlIiA9ICJ4eWVzIiAmJiBBQ19ERUZJTkUoSEFWRV9CSUdfQ09SRSwxLFtEZWZpbmUgdG8gMSBpZiBtYWNoaW5lIGhhcyBhbXBsZSBtZW1vcnkgZm9yIHRpY10pCiAKICMjIyBJU08gQyBvbmx5IGd1YXJhbnRlZXMgNTEyLWNoYXIgc3RyaW5ncywgd2UgaGF2ZSB0YWJsZXMgd2hpY2ggbG9hZCBmYXN0ZXIKICMjIyB3aGVuIGNvbnN0cnVjdGVkIHVzaW5nICJiaWciIHN0cmluZ3MuICBNb3JlIHRoYW4gdGhlIEMgY29tcGlsZXIsIHRoZSBhd2sKQEAgLTUxMSw3ICs2NjQsNyBAQAogQUNfTVNHX1JFU1VMVCgkd2l0aF9iaWdfc3RyaW5ncykKIAogVVNFX0JJR19TVFJJTkdTPTAKLXRlc3QgIiR3aXRoX2JpZ19zdHJpbmdzIiA9ICJ5ZXMiICYmIFVTRV9CSUdfU1RSSU5HUz0xCit0ZXN0ICJ4JHdpdGhfYmlnX3N0cmluZ3MiID0gInh5ZXMiICYmIFVTRV9CSUdfU1RSSU5HUz0xCiBBQ19TVUJTVChVU0VfQklHX1NUUklOR1MpCiAKICMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLXRlcm1jYXAgdG8gY29tcGlsZSBpbiB0aGUgdGVybWNhcCBmYWxsYmFjayBzdXBwb3J0CkBAIC01MjIsNDYgKzY3NSw0OCBAQAogCVt3aXRoX3Rlcm1jYXA9bm9dKQogQUNfTVNHX1JFU1VMVCgkd2l0aF90ZXJtY2FwKQogCi1pZiB0ZXN0ICIkd2l0aF90ZXJtY2FwIiAhPSAieWVzIiA7IHRoZW4KK05DVVJTRVNfVVNFX1RFUk1DQVA9MAoraWYgdGVzdCAieCR3aXRoX3Rlcm1jYXAiICE9ICJ4eWVzIiA7IHRoZW4KIAlpZiB0ZXN0ICIkdXNlX2RhdGFiYXNlIiA9IG5vIDsgdGhlbgogCQlpZiB0ZXN0IC16ICIkd2l0aF9mYWxsYmFjayIgOyB0aGVuCiAJCQlBQ19FUlJPUihZb3UgaGF2ZSBkaXNhYmxlZCB0aGUgZGF0YWJhc2Ugdy9vIHNwZWNpZnlpbmcgZmFsbGJhY2tzKQogCQlmaQogCWZpCi0JQUNfREVGSU5FKFBVUkVfVEVSTUlORk8pCisJQUNfREVGSU5FKFBVUkVfVEVSTUlORk8sMSxbRGVmaW5lIHRvIDEgaWYgd2Ugc2hvdWxkIHN1cHBvcnQgb25seSB0ZXJtaW5mb10pCiBlbHNlCiAKLWlmIHRlc3QgIiR3aXRoX3RpY2xpYiIgIT0gbm8gOyB0aGVuCi0JQUNfRVJST1IoT3B0aW9ucyAtLXdpdGgtdGljbGliIGFuZCAtLWVuYWJsZS10ZXJtY2FwIGNhbm5vdCBiZSBjb21iaW5lZCkKLWZpCisJaWYgdGVzdCAiJHdpdGhfdGljbGliIiAhPSBubyA7IHRoZW4KKwkJQUNfRVJST1IoT3B0aW9ucyAtLXdpdGgtdGljbGliIGFuZCAtLWVuYWJsZS10ZXJtY2FwIGNhbm5vdCBiZSBjb21iaW5lZCkKKwlmaQogCi1BQ19ERUZJTkUoVVNFX1RFUk1DQVApCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIGxpc3Qgb2YgdGVybWNhcCBmaWxlcykKLUNGX1dJVEhfUEFUSExJU1QodGVybXBhdGgsCi0JWyAgLS13aXRoLXRlcm1wYXRoPVhYWCAgICAgc3BlY2lmeSBsaXN0IG9mIHRlcm1jYXAgZmlsZXNdLAotCVRFUk1QQVRILAotCS9ldGMvdGVybWNhcDovdXNyL3NoYXJlL21pc2MvdGVybWNhcCkKLUFDX01TR19SRVNVTFQoJFRFUk1QQVRIKQotdGVzdCAtbiAiJFRFUk1QQVRIIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoVEVSTVBBVEgsIiRURVJNUEFUSCIpCisJTkNVUlNFU19VU0VfVEVSTUNBUD0xCisJQUNfTVNHX0NIRUNLSU5HKGZvciBsaXN0IG9mIHRlcm1jYXAgZmlsZXMpCisJQ0ZfV0lUSF9QQVRITElTVCh0ZXJtcGF0aCwKKwkJWyAgLS13aXRoLXRlcm1wYXRoPVhYWCAgICAgc3BlY2lmeSBsaXN0IG9mIHRlcm1jYXAgZmlsZXNdLAorCQlURVJNUEFUSCwKKwkJL2V0Yy90ZXJtY2FwOi91c3Ivc2hhcmUvbWlzYy90ZXJtY2FwKQorCUFDX01TR19SRVNVTFQoJFRFUk1QQVRIKQorCXRlc3QgLW4gIiRURVJNUEFUSCIgJiYgQUNfREVGSU5FX1VOUVVPVEVEKFRFUk1QQVRILCIkVEVSTVBBVEgiLFtEZWZpbmUgdG8gc2V0IHRoZSB0ZXJtY2FwIHNlYXJjaGxpc3RdKQogCi0jIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS1nZXRjYXAgdG8gdXNlIGEgaGFja2VkIGdldGNhcCBmb3IgcmVhZGluZyB0ZXJtY2FwcwotQUNfTVNHX0NIRUNLSU5HKGlmIGZhc3QgdGVybWNhcC1sb2FkZXIgaXMgbmVlZGVkKQotQUNfQVJHX0VOQUJMRShnZXRjYXAsCi0JWyAgLS1lbmFibGUtZ2V0Y2FwICAgICAgICAgZmFzdCB0ZXJtY2FwIGxvYWQsIG5vIHhyZWZzIHRvIHRlcm1pbmZvXSwKLQlbd2l0aF9nZXRjYXA9JGVuYWJsZXZhbF0sCi0JW3dpdGhfZ2V0Y2FwPW5vXSkKLUFDX01TR19SRVNVTFQoJHdpdGhfZ2V0Y2FwKQotdGVzdCAiJHdpdGhfZ2V0Y2FwIiA9ICJ5ZXMiICYmIEFDX0RFRklORShVU0VfR0VUQ0FQKQorCSMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWdldGNhcCB0byB1c2UgYSBoYWNrZWQgZ2V0Y2FwIGZvciByZWFkaW5nIHRlcm1jYXBzCisJQUNfTVNHX0NIRUNLSU5HKGlmIGZhc3QgdGVybWNhcC1sb2FkZXIgaXMgbmVlZGVkKQorCUFDX0FSR19FTkFCTEUoZ2V0Y2FwLAorCQlbICAtLWVuYWJsZS1nZXRjYXAgICAgICAgICBmYXN0IHRlcm1jYXAgbG9hZCwgbm8geHJlZnMgdG8gdGVybWluZm9dLAorCQlbd2l0aF9nZXRjYXA9JGVuYWJsZXZhbF0sCisJCVt3aXRoX2dldGNhcD1ub10pCisJQUNfTVNHX1JFU1VMVCgkd2l0aF9nZXRjYXApCisJdGVzdCAieCR3aXRoX2dldGNhcCIgPSAieHllcyIgJiYgQUNfREVGSU5FKFVTRV9HRVRDQVAsMSxbRGVmaW5lIHRvIDEgdG8gdXNlIGZhc3QgdGVybWNhcC1sb2FkZXJdKQogCi1BQ19NU0dfQ0hFQ0tJTkcoaWYgdHJhbnNsYXRlZCB0ZXJtY2FwcyB3aWxsIGJlIGNhY2hlZCBpbiB+Ly50ZXJtaW5mbykKLUFDX0FSR19FTkFCTEUoZ2V0Y2FwLWNhY2hlLAotCVsgIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAgIGNhY2hlIHRyYW5zbGF0ZWQgdGVybWNhcHMgaW4gfi8udGVybWluZm9dLAotCVt3aXRoX2dldGNhcF9jYWNoZT0kZW5hYmxldmFsXSwKLQlbd2l0aF9nZXRjYXBfY2FjaGU9bm9dKQotQUNfTVNHX1JFU1VMVCgkd2l0aF9nZXRjYXBfY2FjaGUpCi10ZXN0ICIkd2l0aF9nZXRjYXBfY2FjaGUiID0gInllcyIgJiYgQUNfREVGSU5FKFVTRV9HRVRDQVBfQ0FDSEUpCisJQUNfTVNHX0NIRUNLSU5HKGlmIHRyYW5zbGF0ZWQgdGVybWNhcHMgd2lsbCBiZSBjYWNoZWQgaW4gfi8udGVybWluZm8pCisJQUNfQVJHX0VOQUJMRShnZXRjYXAtY2FjaGUsCisJCVsgIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAgIGNhY2hlIHRyYW5zbGF0ZWQgdGVybWNhcHMgaW4gfi8udGVybWluZm9dLAorCQlbd2l0aF9nZXRjYXBfY2FjaGU9JGVuYWJsZXZhbF0sCisJCVt3aXRoX2dldGNhcF9jYWNoZT1ub10pCisJQUNfTVNHX1JFU1VMVCgkd2l0aF9nZXRjYXBfY2FjaGUpCisJdGVzdCAieCR3aXRoX2dldGNhcF9jYWNoZSIgPSAieHllcyIgJiYgQUNfREVGSU5FKFVTRV9HRVRDQVBfQ0FDSEUsMSxbRGVmaW5lIHRvIDEgaWYgdHJhbnNsYXRlZCB0ZXJtY2FwIHNob3VsZCBiZSBzdG9yZWQgaW4gJEhPTUUvLnRlcm1pbmZvXSkKIAogZmkKK0FDX1NVQlNUKE5DVVJTRVNfVVNFX1RFUk1DQVApCiAKICMjIyAgIFVzZSBvcHRpb24gLS1kaXNhYmxlLWhvbWUtdGVybWluZm8gdG8gY29tcGxldGVseSByZW1vdmUgfi8udGVybWluZm8KIEFDX01TR19DSEVDS0lORyhpZiB+Ly50ZXJtaW5mbyBpcyB3YW50ZWQpCkBAIC01NzAsNyArNzI1LDcgQEAKIAlbd2l0aF9ob21lX3Rlcm1pbmZvPSRlbmFibGV2YWxdLAogCVt3aXRoX2hvbWVfdGVybWluZm89eWVzXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfaG9tZV90ZXJtaW5mbykKLXRlc3QgIiR3aXRoX2hvbWVfdGVybWluZm8iID0gInllcyIgJiYgQUNfREVGSU5FKFVTRV9IT01FX1RFUk1JTkZPKQordGVzdCAieCR3aXRoX2hvbWVfdGVybWluZm8iID0gInh5ZXMiICYmIEFDX0RFRklORShVU0VfSE9NRV9URVJNSU5GTywxLFtEZWZpbmUgdG8gMSBpZiAkSE9NRS8udGVybWluZm8gZmVhdHVyZSBpcyB3YW50ZWRdKQogCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gdXNlIHJlc3RyaWN0ZWQgZW52aXJvbm1lbnQgd2hlbiBydW5uaW5nIGFzIHJvb3QpCiBBQ19BUkdfRU5BQkxFKHJvb3QtZW52aXJvbiwKQEAgLTU3OCw3ICs3MzMsNyBAQAogCVt3aXRoX3Jvb3RfZW52aXJvbj0kZW5hYmxldmFsXSwKIAlbd2l0aF9yb290X2Vudmlyb249eWVzXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfcm9vdF9lbnZpcm9uKQotdGVzdCAiJHdpdGhfcm9vdF9lbnZpcm9uIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX1JPT1RfRU5WSVJPTikKK3Rlc3QgIngkd2l0aF9yb290X2Vudmlyb24iID0geHllcyAmJiBBQ19ERUZJTkUoVVNFX1JPT1RfRU5WSVJPTiwxLFtEZWZpbmUgdG8gMSBpZiBlbnZpcm9ubWVudCBzaG91bGQgYmUgcmVzdHJpY3RlZCBmb3Igcm9vdCB1c2VyXSkKIAogIyMjICAgVXNlIG9wdGlvbiAtLWVuYWJsZS1zeW1saW5rcyB0byBtYWtlIHRpYyB1c2Ugc3ltbGlua3MsIG5vdCBoYXJkIGxpbmtzCiAjIyMgICB0byByZWR1Y2Ugc3RvcmFnZSByZXF1aXJlbWVudHMgZm9yIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4KQEAgLTU4OSw0NiArNzQ0LDQ2IEBACiAKICMgc29mdCBsaW5rcyAoc3ltYm9saWMgbGlua3MpIGFyZSB1c2VmdWwgZm9yIHNvbWUgc3lzdGVtcyB3aGVyZSBoYXJkIGxpbmtzIGRvCiAjIG5vdCB3b3JrLCBvciB0byBtYWtlIGl0IHNpbXBsZXIgdG8gY29weSB0ZXJtaW5mbyB0cmVlcyBhcm91bmQuCi1pZiB0ZXN0ICIkYWNfY3ZfZnVuY19zeW1saW5rIiA9IHllcyA7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgdGljIHNob3VsZCB1c2Ugc3ltYm9saWMgbGlua3MpCi0gICAgQUNfQVJHX0VOQUJMRShzeW1saW5rcywKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19zeW1saW5rIiA9IHh5ZXMgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIHRpYyBzaG91bGQgdXNlIHN5bWJvbGljIGxpbmtzKQorCUFDX0FSR19FTkFCTEUoc3ltbGlua3MsCiAJWyAgLS1lbmFibGUtc3ltbGlua3MgICAgICAgbWFrZSB0aWMgdXNlIHN5bWJvbGljIGxpbmtzIG5vdCBoYXJkIGxpbmtzXSwKIAlbd2l0aF9zeW1saW5rcz0kZW5hYmxldmFsXSwKIAlbd2l0aF9zeW1saW5rcz1ub10pCi0gICAgQUNfTVNHX1JFU1VMVCgkd2l0aF9zeW1saW5rcykKKwlBQ19NU0dfUkVTVUxUKCR3aXRoX3N5bWxpbmtzKQogZmkKIAogIyBJZiB3ZSBoYXZlIGhhcmQgbGlua3MgYW5kIGRpZCBub3QgY2hvb3NlIHRvIHVzZSBzb2Z0IGxpbmtzIGluc3RlYWQsIHRoZXJlIGlzCiAjIG5vIHJlYXNvbiB0byBtYWtlIHRoaXMgY2hvaWNlIG9wdGlvbmFsIC0gdXNlIHRoZSBoYXJkIGxpbmtzLgogaWYgdGVzdCAiJHdpdGhfc3ltbGlua3MiID0gbm8gOyB0aGVuCi0gICAgQUNfTVNHX0NIRUNLSU5HKGlmIHRpYyBzaG91bGQgdXNlIGhhcmQgbGlua3MpCi0gICAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfbGluayIgPSB5ZXMgOyB0aGVuCi0Jd2l0aF9saW5rcz15ZXMKLSAgICBlbHNlCi0Jd2l0aF9saW5rcz1ubwotICAgIGZpCi0gICAgQUNfTVNHX1JFU1VMVCgkd2l0aF9saW5rcykKKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgdGljIHNob3VsZCB1c2UgaGFyZCBsaW5rcykKKwlpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbGluayIgPSB4eWVzIDsgdGhlbgorCQl3aXRoX2xpbmtzPXllcworCWVsc2UKKwkJd2l0aF9saW5rcz1ubworCWZpCisJQUNfTVNHX1JFU1VMVCgkd2l0aF9saW5rcykKIGZpCiAKLXRlc3QgIiR3aXRoX2xpbmtzIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX0xJTktTKQotdGVzdCAiJHdpdGhfc3ltbGlua3MiID0geWVzICYmIEFDX0RFRklORShVU0VfU1lNTElOS1MpCit0ZXN0ICJ4JHdpdGhfbGlua3MiID0geHllcyAmJiBBQ19ERUZJTkUoVVNFX0xJTktTLDEsW0RlZmluZSB0byAxIGlmIGhhcmRsaW5rcyBzaG91bGQgYmUgdXNlZCBpbiB0ZXJtaW5mbyBkYXRhYmFzZV0pCit0ZXN0ICJ4JHdpdGhfc3ltbGlua3MiID0geHllcyAmJiBBQ19ERUZJTkUoVVNFX1NZTUxJTktTLDEsW0RlZmluZSB0byAxIGlmIHN5bWJvbGljIGxpbmtzIHNob3VsZCBiZSB1c2VkIGluIHRlcm1pbmZvIGRhdGFiYXNlXSkKIAogIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1icm9rZW4tbGlua2VyIHRvIGZvcmNlIG9uIHVzZSBvZiBicm9rZW4tbGlua2VyIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBicm9rZW4tbGlua2VyIHN1cHBvcnQgY29kZSkKIEFDX0FSR19FTkFCTEUoYnJva2VuX2xpbmtlciwKIAlbICAtLWVuYWJsZS1icm9rZW5fbGlua2VyICBjb21waWxlIHdpdGggYnJva2VuLWxpbmtlciBzdXBwb3J0IGNvZGVdLAogCVt3aXRoX2Jyb2tlbl9saW5rZXI9JGVuYWJsZXZhbF0sCi0JW3dpdGhfYnJva2VuX2xpbmtlcj0ke0JST0tFTl9MSU5LRVItbm99XSkKKwlbd2l0aF9icm9rZW5fbGlua2VyPSR7QlJPS0VOX0xJTktFUjotbm99XSkKIEFDX01TR19SRVNVTFQoJHdpdGhfYnJva2VuX2xpbmtlcikKIAogQlJPS0VOX0xJTktFUj0wCi1pZiB0ZXN0ICIkd2l0aF9icm9rZW5fbGlua2VyIiA9IHllcyA7IHRoZW4KLQlBQ19ERUZJTkUoQlJPS0VOX0xJTktFUikKK2lmIHRlc3QgIngkd2l0aF9icm9rZW5fbGlua2VyIiA9IHh5ZXMgOyB0aGVuCisJQUNfREVGSU5FKEJST0tFTl9MSU5LRVIsMSxbRGVmaW5lIHRvIDEgdG8gd29yayBhcm91bmQgbGlua2VycyB3aGljaCBjYW5ub3QgbGluayBkYXRhLW9ubHkgbW9kdWxlc10pCiAJQlJPS0VOX0xJTktFUj0xCiBlbGlmIHRlc3QgIiRERlRfTFdSX01PREVMIiA9IHNoYXJlZCA7IHRoZW4KLQljYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbiAjKHZpCi0JY3lnd2luKikKLQkJQUNfREVGSU5FKEJST0tFTl9MSU5LRVIpCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoY3lnd2luKikKKwkJQUNfREVGSU5FKEJST0tFTl9MSU5LRVIsMSxbRGVmaW5lIHRvIDEgdG8gd29yayBhcm91bmQgbGlua2VycyB3aGljaCBjYW5ub3QgbGluayBkYXRhLW9ubHkgbW9kdWxlc10pCiAJCUJST0tFTl9MSU5LRVI9MQogCQlDRl9WRVJCT1NFKGN5Z3dpbiBsaW5rZXIgaXMgYnJva2VuIGFueXdheSkKIAkJOzsKQEAgLTY0Myw3ICs3OTgsNyBAQAogCVt3aXRoX2JzZHBhZD0kZW5hYmxldmFsXSwKIAlbd2l0aF9ic2RwYWQ9bm9dKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9ic2RwYWQpCi10ZXN0ICIkd2l0aF9ic2RwYWQiID0geWVzICYmIEFDX0RFRklORShCU0RfVFBVVFMpCit0ZXN0ICJ4JHdpdGhfYnNkcGFkIiA9IHh5ZXMgJiYgQUNfREVGSU5FKEJTRF9UUFVUUywxLFtEZWZpbmUgdG8gMSB0byByZWNvZ25pemUgQlNELXN0eWxlIHByZWZpeCBwYWRkaW5nXSkKIAogIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS13aWRlYyB0byB0dXJuIG9uIHVzZSBvZiB3aWRlLWNoYXJhY3RlciBzdXBwb3J0CiBOQ1VSU0VTX0NIX1Q9Y2h0eXBlCkBAIC02NTUsNyArODEwLDkgQEAKIE5DVVJTRVNfV0lOVF9UPTAKIAogIyBDaGVjayB0byBkZWZpbmUgX1hPUEVOX1NPVVJDRSAiYXV0b21hdGljYWxseSIKLUNGX1hPUEVOX1NPVVJDRQorQ1BQRkxBR1NfYmVmb3JlX1hPUEVOPSIkQ1BQRkxBR1MiCitDRl9YT1BFTl9TT1VSQ0UoNTAwKQorQ1BQRkxBR1NfYWZ0ZXJfWE9QRU49IiRDUFBGTEFHUyIKIAogIyBXb3JrIGFyb3VuZCBicmVha2FnZSBvbiBPUyBYCiBDRl9TSUdXSU5DSApAQCAtNjczLDE0ICs4MzAsMTkgQEAKIAlbd2l0aF93aWRlYz0kZW5hYmxldmFsXSwKIAlbd2l0aF93aWRlYz1ub10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3dpZGVjKQotaWYgdGVzdCAiJHdpdGhfd2lkZWMiID0geWVzIDsgdGhlbgotCUxJQl9TVUZGSVg9Incke0xJQl9TVUZGSVh9IgotCUFDX0RFRklORShVU0VfV0lERUNfU1VQUE9SVCkKLQlDRl9QUkVERUZJTkUoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCkKK2lmIHRlc3QgIngkd2l0aF93aWRlYyIgPSB4eWVzIDsgdGhlbgorCWlmIHRlc3QgIngkZGlzYWJsZV9saWJfc3VmZml4ZXMiID0geG5vIDsgdGhlbgorCQlMSUJfU1VGRklYPSJ3JHtMSUJfU1VGRklYfSIKKwlmaQorCUFDX0RFRklORShVU0VfV0lERUNfU1VQUE9SVCwxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlIHdpdGggd2lkZS1jaGFyL1VURi04IGNvZGVdKQorCUFDX0RFRklORShOQ1VSU0VTX1dJREVDSEFSLDEsW0RlZmluZSB0byAxIHRvIGNvbXBpbGUgd2l0aCB3aWRlLWNoYXIvVVRGLTggY29kZV0pCisKKwlDRl9DSEVDS19XQ0hBUl9ICisKIAkjIHdpdGhfb3ZlcndyaXRlPW5vCiAJTkNVUlNFU19DSF9UPWNjaGFyX3QKIAlBQ19DSEVDS19GVU5DUyhwdXR3YyBidG93YyB3Y3RvYiBtYnRvd2Mgd2N0b21iIG1ibGVuIG1icmxlbiBtYnJ0b3djIHdjc3J0b21icyBtYnNydG93Y3Mgd2NzdG9tYnMgbWJzdG93Y3MpCi0JaWYgdGVzdCAiJGFjX2N2X2Z1bmNfcHV0d2MiICE9IHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcHV0d2MiICE9IHh5ZXMgOyB0aGVuCiAJCUNGX1VURjhfTElCCiAJCWlmIHRlc3QgIiRjZl9jdl91dGY4X2xpYiIgIT0gbm8gOyB0aGVuCiAJCQlOQ1VSU0VTX0xJQlVURjg9MQpAQCAtNjkxLDcgKzg1Myw3IEBACiAJQ0ZfV0NIQVJfVFlQRSh3aW50X3QsICAgIE5DVVJTRVNfV0lOVF9ULCAgICBOQ1VSU0VTX09LX1dJTlRfVCkKIAogCWlmIHRlc3QgIiROQ1VSU0VTX01CU1RBVEVfVCIgIT0gMDsgdGhlbgotCQlBQ19ERUZJTkUoTkVFRF9NQlNUQVRFX1RfREVGKQorCQlBQ19ERUZJTkUoTkVFRF9NQlNUQVRFX1RfREVGLDEsW0RlZmluZSB0byAxIGlmIHdlIG11c3QgZGVjbGFyZSBtYnN0YXRlX3RdKQogCWZpCiBmaQogQUNfU1VCU1QoTkNVUlNFU19DSF9UKQpAQCAtNzA2LDIzICs4NjgsMTQgQEAKIEFDX1NVQlNUKE5DVVJTRVNfT0tfV0lOVF9UKQogCiAjIyMgICB1c2Ugb3B0aW9uIC0tZGlzYWJsZS1scDY0IHRvIGFsbG93IGxvbmcgY2h0eXBlCi1jYXNlICRjZl9jdl9hYmlfdmVyc2lvbiBpbgotW1szNDVdXSopCi0JZGVmYXVsdF93aXRoX2xwNjQ9bm8KLQk7OwotKikKLQlkZWZhdWx0X3dpdGhfbHA2ND15ZXMKLQk7OwotZXNhYwotCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBlbmFibGUgX0xQNjQgZGVmaW5pdGlvbiBpbiBjdXJzZXMuaCkKIEFDX0FSR19FTkFCTEUobHA2NCwKIAlbICAtLWRpc2FibGUtbHA2NCAgICAgICAgICBhbGxvdyBjaHR5cGUgdG8gYmUgbG9uZyAoaWdub3JlIF9MUDY0KV0sCiAJW3dpdGhfbHA2ND0kZW5hYmxldmFsXSwKLQlbd2l0aF9scDY0PSRkZWZhdWx0X3dpdGhfbHA2NF0pCisJW3dpdGhfbHA2ND0kY2ZfZGZ0X3dpdGhfbHA2NF0pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2xwNjQpCiAKLWlmIHRlc3QgIiR3aXRoX2xwNjQiID0geWVzIDsgdGhlbgoraWYgdGVzdCAieCR3aXRoX2xwNjQiID0geHllcyA7IHRoZW4KIAljZl9jdl9lbmFibGVfbHA2ND0xCiBlbHNlCiAJY2ZfY3ZfZW5hYmxlX2xwNjQ9MApAQCAtNzM5LDcgKzg5Miw3IEBACiAJW3dpdGhfdHBhcm1fdmFyYXJncz15ZXNdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF90cGFybV92YXJhcmdzKQogTkNVUlNFU19UUEFSTV9WQVJBUkdTPTAKLXRlc3QgIiR3aXRoX3RwYXJtX3ZhcmFyZ3MiID0geWVzICYmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUz0xCit0ZXN0ICJ4JHdpdGhfdHBhcm1fdmFyYXJncyIgPSB4eWVzICYmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUz0xCiBBQ19TVUJTVChOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MpCiAKICMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXRpYy1kZXBlbmRzIHRvIG1ha2UgbGlidGljIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiBuY3Vyc2VzL25jdXJzZXN3CkBAIC03NzcsNyArOTMwLDcgQEAKIEFDX0FSR19XSVRIKGNodHlwZSwKIAlbICAtLXdpdGgtY2h0eXBlPVRZUEUgICAgICBvdmVycmlkZSB0eXBlIG9mIGNodHlwZV0sCiAJW05DVVJTRVNfQ0hUWVBFPSIkd2l0aHZhbCJdLAotCVtOQ1VSU0VTX0NIVFlQRT1hdXRvXSkKKwlbTkNVUlNFU19DSFRZUEU9JGNmX2RmdF9jaHR5cGVdKQogQUNfTVNHX1JFU1VMVCgkTkNVUlNFU19DSFRZUEUpCiAKICMjIyAgIHVzZSBvcHRpb24gLS13aXRoLW9zcGVlZCB0byBvdmVycmlkZSBvc3BlZWQncyB0eXBlCkBAIC03OTQsOSArOTQ3LDI3IEBACiBBQ19BUkdfV0lUSChtbWFzay10LAogCVsgIC0td2l0aC1tbWFzay10PVRZUEUgICAgIG92ZXJyaWRlIHR5cGUgb2YgbW1hc2tfdF0sCiAJW05DVVJTRVNfTU1BU0tfVD0iJHdpdGh2YWwiXSwKLQlbTkNVUlNFU19NTUFTS19UPWF1dG9dKQorCVtOQ1VSU0VTX01NQVNLX1Q9JGNmX2RmdF9tbWFza190XSkKIEFDX01TR19SRVNVTFQoJE5DVVJTRVNfTU1BU0tfVCkKIAorIyMjICAgdXNlIG9wdGlvbiAtLXdpdGgtY2NoYXJ3LW1heCB0byBvdmVycmlkZSBDQ0hBUldfTUFYIHNpemUKK0FDX01TR19DSEVDS0lORyhmb3Igc2l6ZSBDQ0hBUldfTUFYKQorQUNfQVJHX1dJVEgoY2NoYXJ3LW1heCwKKwlbICAtLXdpdGgtY2NoYXJ3LW1heD1YWFggICBvdmVycmlkZSBzaXplIENDSEFSV19NQVhdLAorCVtOQ1VSU0VTX0NDSEFSV19NQVg9IiR3aXRodmFsIl0sCisJW05DVVJTRVNfQ0NIQVJXX01BWD01XSkKK0FDX01TR19SRVNVTFQoJE5DVVJTRVNfQ0NIQVJXX01BWCkKK0FDX1NVQlNUKE5DVVJTRVNfQ0NIQVJXX01BWCkKKworIyMjICAgdXNlIG9wdGlvbiAtLXdpdGgtdHBhcm0tYXJnIHRvIG92ZXJyaWRlIHRwYXJtJ3MgYXJndW1lbnQgdHlwZQorQUNfTVNHX0NIRUNLSU5HKGZvciB0eXBlIG9mIHRwYXJtIGFyZ3MpCitBQ19BUkdfV0lUSCh0cGFybS1hcmcsCisJWyAgLS13aXRoLXRwYXJtLWFyZz1UWVBFICAgb3ZlcnJpZGUgcGFyYW1ldGVyIHR5cGUgb2YgdHBhcm1dLAorCVtOQ1VSU0VTX1RQQVJNX0FSRz0iJHdpdGh2YWwiXSwKKwlbTkNVUlNFU19UUEFSTV9BUkc9JGNmX2RmdF90cGFybV9hcmddKQorQUNfTVNHX1JFU1VMVCgkTkNVUlNFU19UUEFSTV9BUkcpCitBQ19TVUJTVChOQ1VSU0VTX1RQQVJNX0FSRykKKwogIyMjIEVuYWJsZSBjb21waWxpbmctaW4gcmNzIGlkJ3MKIEFDX01TR19DSEVDS0lORyhpZiBSQ1MgaWRlbnRpZmllcnMgc2hvdWxkIGJlIGNvbXBpbGVkLWluKQogQUNfQVJHX1dJVEgocmNzLWlkcywKQEAgLTgwNCwxMCArOTc1LDEwIEBACiAJW3dpdGhfcmNzX2lkcz0kd2l0aHZhbF0sCiAJW3dpdGhfcmNzX2lkcz1ub10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3Jjc19pZHMpCi10ZXN0ICIkd2l0aF9yY3NfaWRzIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX1JDU19JRFMpCit0ZXN0ICJ4JHdpdGhfcmNzX2lkcyIgPSB4eWVzICYmIEFDX0RFRklORShVU0VfUkNTX0lEUywxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlLWluIFJDUyBpZGVudGlmaWVyc10pCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUNGX01BTl9QQUdFUyhbIGNhcHRvaW5mbyBjbGVhciBpbmZvY21wIGluZm90b2NhcCB0aWMgdG9lIHRwdXQgXSkKK0NGX01BTl9QQUdFUyhbIGNhcHRvaW5mbyBjbGVhciBpbmZvY21wIGluZm90b2NhcCB0YWJzIHRpYyB0b2UgdHB1dCB0c2V0IF0pCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIENGX0hFTFBfTUVTU0FHRShFeHRlbnNpb25zOikKQEAgLTgxOSwyOSArOTkwLDY5IEBACiAJW3dpdGhfZXh0X2Z1bmNzPSRlbmFibGV2YWxdLAogCVt3aXRoX2V4dF9mdW5jcz15ZXNdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9leHRfZnVuY3MpCi1pZiB0ZXN0ICIkd2l0aF9leHRfZnVuY3MiID0geWVzIDsgdGhlbgoraWYgdGVzdCAieCR3aXRoX2V4dF9mdW5jcyIgPSB4eWVzIDsgdGhlbgogCU5DVVJTRVNfRVhUX0ZVTkNTPTEKLQlBQ19ERUZJTkUoSEFWRV9DVVJTRVNfVkVSU0lPTikKLQlBQ19ERUZJTkUoSEFWRV9IQVNfS0VZKQotCUFDX0RFRklORShIQVZFX1JFU0laRVRFUk0pCi0JQUNfREVGSU5FKEhBVkVfUkVTSVpFX1RFUk0pCi0JQUNfREVGSU5FKEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTKQotCUFDX0RFRklORShIQVZFX1dSRVNJWkUpCi0JQUNfREVGSU5FKE5DVVJTRVNfRVhUX0ZVTkNTKQorCUFDX0RFRklORShIQVZFX0FTU1VNRV9ERUZBVUxUX0NPTE9SUywxLFtEZWZpbmUgdG8gMSB0byBlbmFibGUgYXNzdW1lX2RlZmF1bHRfY29sb3JzKCkgZnVuY3Rpb25dKQorCUFDX0RFRklORShIQVZFX0NVUlNFU19WRVJTSU9OLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSBjdXJzZXNfdmVyc2lvbigpIGZ1bmN0aW9uXSkKKwlBQ19ERUZJTkUoSEFWRV9IQVNfS0VZLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSBoYXNfa2V5KCkgZnVuY3Rpb25dKQorCUFDX0RFRklORShIQVZFX1JFU0laRVRFUk0sMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIHJlc2l6ZXRlcm0oKSBmdW5jdGlvbl0pCisJQUNfREVGSU5FKEhBVkVfUkVTSVpFX1RFUk0sMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIHJlc2l6ZV90ZXJtKCkgZnVuY3Rpb25dKQorCUFDX0RFRklORShIQVZFX1RFUk1fRU5UUllfSCwxLFtEZWZpbmUgdG8gMSB0byBlbmFibGUgdGVybV9lbnRyeSgpIGZ1bmN0aW9uXSkKKwlBQ19ERUZJTkUoSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMsMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIHVzZV9kZWZhdWx0X2NvbG9ycygpIGZ1bmN0aW9uXSkKKwlBQ19ERUZJTkUoSEFWRV9VU0VfU0NSRUVOLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSB1c2Vfc2NyZWVuKCkgZnVuY3Rpb25dKQorCUFDX0RFRklORShIQVZFX1VTRV9XSU5ET1csMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIHVzZV93aW5kb3coKSBmdW5jdGlvbl0pCisJQUNfREVGSU5FKEhBVkVfV1JFU0laRSwxLFtEZWZpbmUgdG8gMSB0byBlbmFibGUgd3Jlc2l6ZSgpIGZ1bmN0aW9uXSkKKwlBQ19ERUZJTkUoTkNVUlNFU19FWFRfRlVOQ1MsMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIG5jdXJzZXMgZXh0ZW5kZWQgZnVuY3Rpb25zXSkKKwlHRU5FUkFURURfRVhUX0ZVTkNTPWdlbmVyYXRlZAogZWxzZQogCU5DVVJTRVNfRVhUX0ZVTkNTPTAKKwlHRU5FUkFURURfRVhUX0ZVTkNTPQogZmkKIEFDX1NVQlNUKE5DVVJTRVNfRVhUX0ZVTkNTKQorQUNfU1VCU1QoR0VORVJBVEVEX0VYVF9GVU5DUykKKworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggU0NSRUVOIGV4dGVuc2lvbnMpCitBQ19BUkdfRU5BQkxFKHNwLWZ1bmNzLAorCVsgIC0tZW5hYmxlLXNwLWZ1bmNzICAgICAgIGVuYWJsZSBTQ1JFRU4tZXh0ZW5zaW9uc10sCisJW3dpdGhfc3BfZnVuY3M9JGVuYWJsZXZhbF0sCisJW3dpdGhfc3BfZnVuY3M9JGNmX2RmdF9leHRfc3BmdW5jc10pCitBQ19NU0dfUkVTVUxUKCR3aXRoX3NwX2Z1bmNzKQoraWYgdGVzdCAieCR3aXRoX3NwX2Z1bmNzIiA9IHh5ZXMgOyB0aGVuCisJTkNVUlNFU19TUF9GVU5DUz0xCisJQUNfREVGSU5FKE5DVVJTRVNfU1BfRlVOQ1MsMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIFNDUkVFTi1leHRlbnNpb25zXSkKKwlHRU5FUkFURURfU1BfRlVOQ1M9Z2VuZXJhdGVkCitlbHNlCisJTkNVUlNFU19TUF9GVU5DUz0wCisJR0VORVJBVEVEX1NQX0ZVTkNTPQorZmkKK0FDX1NVQlNUKE5DVVJTRVNfU1BfRlVOQ1MpCitBQ19TVUJTVChHRU5FUkFURURfU1BfRlVOQ1MpCisKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHRlcm1pbmFsLWRyaXZlcikKK0FDX0FSR19FTkFCTEUodGVybS1kcml2ZXIsCisJWyAgLS1lbmFibGUtdGVybS1kcml2ZXIgICAgZW5hYmxlIHRlcm1pbmFsLWRyaXZlcl0sCisJW3dpdGhfdGVybV9kcml2ZXI9JGVuYWJsZXZhbF0sCisJW3dpdGhfdGVybV9kcml2ZXI9bm9dKQorQUNfTVNHX1JFU1VMVCgkd2l0aF90ZXJtX2RyaXZlcikKK2lmIHRlc3QgIngkd2l0aF90ZXJtX2RyaXZlciIgPSB4eWVzIDsgdGhlbgorCUFDX0RFRklORShVU0VfVEVSTV9EUklWRVIsMSxbRGVmaW5lIHRvIDEgdG8gZW5hYmxlIHRlcm1pbmFsLWRyaXZlcl0pCisJaWYgdGVzdCAieCR3aXRoX3Rlcm1saWIiICE9IHhubyA7IHRoZW4KKwkJQUNfTVNHX0VSUk9SKFRoZSB0ZXJtLWRyaXZlciBvcHRpb24gY29uZmxpY3RzIHdpdGggdGhlIHRlcm1saWIgb3B0aW9uKQorCWZpCisJaWYgdGVzdCAieCR3aXRoX3NwX2Z1bmNzIiAhPSB4eWVzIDsgdGhlbgorCQlBQ19NU0dfRVJST1IoVGhlIHRlcm0tZHJpdmVyIG9wdGlvbiByZWxpZXMgdXBvbiBzcC1mdW5jcykKKwlmaQorZmkKIAogIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1jb25zdCB0byB0dXJuIG9uIHVzZSBvZiBjb25zdCBiZXlvbmQgdGhhdCBpbiBYU0kuCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGV4dGVuZGVkIHVzZSBvZiBjb25zdCBrZXl3b3JkKQogQUNfQVJHX0VOQUJMRShjb25zdCwKIAlbICAtLWVuYWJsZS1jb25zdCAgICAgICAgICBjb21waWxlIHdpdGggZXh0cmEvbm9uLXN0YW5kYXJkIGNvbnN0XSwKIAlbd2l0aF9leHRfY29uc3Q9JGVuYWJsZXZhbF0sCi0JW3dpdGhfZXh0X2NvbnN0PW5vXSkKKwlbd2l0aF9leHRfY29uc3Q9JGNmX2RmdF9leHRfY29uc3RdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9leHRfY29uc3QpCiBOQ1VSU0VTX0NPTlNUPScvKm5vdGhpbmcqLycKLWlmIHRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JHdpdGhfZXh0X2NvbnN0IiA9IHh5ZXMgOyB0aGVuCiAJTkNVUlNFU19DT05TVD1jb25zdAogZmkKIEFDX1NVQlNUKE5DVVJTRVNfQ09OU1QpCkBAIC04NTEsMTggKzEwNjIsMTggQEAKIEFDX0FSR19FTkFCTEUoZXh0LWNvbG9ycywKIAlbICAtLWVuYWJsZS1leHQtY29sb3JzICAgICBjb21waWxlIGZvciAyNTYtY29sb3Igc3VwcG9ydF0sCiAJW3dpdGhfZXh0X2NvbG9ycz0kZW5hYmxldmFsXSwKLQlbd2l0aF9leHRfY29sb3JzPW5vXSkKKwlbd2l0aF9leHRfY29sb3JzPSRjZl9kZnRfZXh0X2NvbG9yc10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2V4dF9jb2xvcnMpCiBOQ1VSU0VTX0VYVF9DT0xPUlM9MAotaWYgdGVzdCAiJHdpdGhfZXh0X2NvbG9ycyIgPSB5ZXMgOyB0aGVuCi0JaWYgdGVzdCAiJHdpdGhfd2lkZWMiICE9IHllcyA7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5KQoraWYgdGVzdCAieCR3aXRoX2V4dF9jb2xvcnMiID0geHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JHdpdGhfd2lkZWMiICE9IHh5ZXMgOyB0aGVuCisJCUFDX01TR19XQVJOKFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5KQogCWVsc2UKIAkJIyBjYW5ub3QgYmUgQUJJIDUgc2luY2UgaXQgY2hhbmdlcyBzaXplb2YoY2NoYXJfdCkKIAkJQ0ZfTkNVUlNFU19BQklfNgorCQlOQ1VSU0VTX0VYVF9DT0xPUlM9MQorCQlBQ19ERUZJTkUoTkNVUlNFU19FWFRfQ09MT1JTLDEsW0RlZmluZSB0byAxIHRvIGNvbXBpbGUgZm9yIDI1Ni1jb2xvciBzdXBwb3J0XSkKIAlmaQotCU5DVVJTRVNfRVhUX0NPTE9SUz0xCi0JQUNfREVGSU5FKE5DVVJTRVNfRVhUX0NPTE9SUykKIGZpCiBBQ19TVUJTVChOQ1VSU0VTX0VYVF9DT0xPUlMpCiAKQEAgLTg3MSwyMiArMTA4MiwzMyBAQAogQUNfQVJHX0VOQUJMRShleHQtbW91c2UsCiAJWyAgLS1lbmFibGUtZXh0LW1vdXNlICAgICAgY29tcGlsZSBmb3IgZXh0ZW5kZWQgbW91c2UtZW5jb2RpbmddLAogCVt3aXRoX2V4dF9tb3VzZT0kZW5hYmxldmFsXSwKLQlbd2l0aF9leHRfbW91c2U9bm9dKQorCVt3aXRoX2V4dF9tb3VzZT0kY2ZfZGZ0X2V4dF9tb3VzZV0pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2V4dF9tb3VzZSkKIE5DVVJTRVNfTU9VU0VfVkVSU0lPTj0xCi1pZiB0ZXN0ICIkd2l0aF9leHRfbW91c2UiID0geWVzIDsgdGhlbgoraWYgdGVzdCAieCR3aXRoX2V4dF9tb3VzZSIgPSB4eWVzIDsgdGhlbgogCU5DVVJTRVNfTU9VU0VfVkVSU0lPTj0yCiAJQ0ZfTkNVUlNFU19BQklfNgogZmkKIEFDX1NVQlNUKE5DVVJTRVNfTU9VU0VfVkVSU0lPTikKIAorIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1leHQtcHV0d2luIHRvIHR1cm4gb24gZXh0ZW5kZWQgc2NyZWVuZHVtcHMKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2UgZXh0ZW5kZWQgcHV0d2luL3NjcmVlbmR1bXApCitBQ19BUkdfRU5BQkxFKGV4dC1wdXR3aW4sCisJWyAgLS1lbmFibGUtZXh0LXB1dHdpbiAgICAgY29tcGlsZSB3aXRoIGV4dGVuZGVkIHB1dHdpbi9zY3JlZW5kdW1wXSwKKwlbd2l0aF9leHRfcHV0d2luPSRlbmFibGV2YWxdLAorCVt3aXRoX2V4dF9wdXR3aW49JGNmX2RmdF9leHRfcHV0d2luXSkKK0FDX01TR19SRVNVTFQoJHdpdGhfZXh0X3B1dHdpbikKK2lmIHRlc3QgIngkd2l0aF9leHRfcHV0d2luIiA9IHh5ZXMgOyB0aGVuCisJQUNfREVGSU5FKE5DVVJTRVNfRVhUX1BVVFdJTiwxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlIHdpdGggZXh0ZW5kZWQgcHV0d2luL3NjcmVlbmR1bXBdKQorZmkKKwogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IFwkTkNVUlNFU19OT19QQURESU5HIGNvZGUpCiBBQ19BUkdfRU5BQkxFKG5vLXBhZGRpbmcsCiAJWyAgLS1lbmFibGUtbm8tcGFkZGluZyAgICAgY29tcGlsZSB3aXRoICROQ1VSU0VTX05PX1BBRERJTkcgY29kZV0sCiAJW3dpdGhfbm9fcGFkZGluZz0kZW5hYmxldmFsXSwKIAlbd2l0aF9ub19wYWRkaW5nPSR3aXRoX2V4dF9mdW5jc10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX25vX3BhZGRpbmcpCi10ZXN0ICIkd2l0aF9ub19wYWRkaW5nIiA9IHllcyAmJiBBQ19ERUZJTkUoTkNVUlNFU19OT19QQURESU5HKQordGVzdCAieCR3aXRoX25vX3BhZGRpbmciID0geHllcyAmJiBBQ19ERUZJTkUoTkNVUlNFU19OT19QQURESU5HLDEsW0RlZmluZSB0byAxIHRvIGNvbXBpbGUgd2l0aCAkTkNVUlNFU19OT19QQURESU5HIGNvZGVdKQogCiBBQ19DSEVDS19TSVpFT0YoW3NpZ25lZCBjaGFyXSwgMCkKIGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2lnbmVkX2NoYXIiID0gMSA7IHRoZW4KQEAgLTkwMCw3ICsxMTIyLDcgQEAKIAlbd2l0aF9zaWduZWRfY2hhcj0kZW5hYmxldmFsXSwKIAlbd2l0aF9zaWduZWRfY2hhcj1ub10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3NpZ25lZF9jaGFyKQotdGVzdCAiJHdpdGhfc2lnbmVkX2NoYXIiICE9IHllcyAmJiBOQ1VSU0VTX1NCT09MPSJjaGFyIgordGVzdCAieCR3aXRoX3NpZ25lZF9jaGFyIiAhPSB4eWVzICYmIE5DVVJTRVNfU0JPT0w9ImNoYXIiCiBBQ19TVUJTVChOQ1VSU0VTX1NCT09MKQogCiAjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLXNpZ3dpbmNoIHRvIHR1cm4gb24gdXNlIG9mIFNJR1dJTkNIIGxvZ2ljCkBAIC05MTAsNyArMTEzMiw3IEBACiAJW3dpdGhfc2lnd2luY2g9JGVuYWJsZXZhbF0sCiAJW3dpdGhfc2lnd2luY2g9JHdpdGhfZXh0X2Z1bmNzXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfc2lnd2luY2gpCi10ZXN0ICIkd2l0aF9zaWd3aW5jaCIgPSB5ZXMgJiYgQUNfREVGSU5FKFVTRV9TSUdXSU5DSCkKK3Rlc3QgIngkd2l0aF9zaWd3aW5jaCIgPSB4eWVzICYmIEFDX0RFRklORShVU0VfU0lHV0lOQ0gsMSxbRGVmaW5lIHRvIDEgdG8gY29tcGlsZSB3aXRoIFNJR1dJTkNIIGhhbmRsZXJdKQogCiAjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLXRjYXAtbmFtZXMgdG8gYWxsb3cgdXNlciB0byBkZWZpbmUgbmV3IGNhcGFiaWxpdGllcwogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHVzZXItZGVmaW5hYmxlIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBsaWtlIHRlcm1jYXApCkBAIC05MjAsNyArMTE0Miw3IEBACiAJW3dpdGhfdGNhcF9uYW1lcz0kd2l0aF9leHRfZnVuY3NdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF90Y2FwX25hbWVzKQogTkNVUlNFU19YTkFNRVM9MAotdGVzdCAiJHdpdGhfdGNhcF9uYW1lcyIgPSB5ZXMgJiYgTkNVUlNFU19YTkFNRVM9MQordGVzdCAieCR3aXRoX3RjYXBfbmFtZXMiID0geHllcyAmJiBOQ1VSU0VTX1hOQU1FUz0xCiBBQ19TVUJTVChOQ1VSU0VTX1hOQU1FUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtOTM5LDcgKzExNjEsNyBAQAogCVsgIC0tZW5hYmxlLWhhcmQtdGFicyAgICAgIGNvbXBpbGUgd2l0aCBoYXJkLXRhYnMgY29kZV0sLAogCVtlbmFibGVfaGFyZF90YWJzPSR3aXRoX2RldmVsb3BdKQogQUNfTVNHX1JFU1VMVCgkZW5hYmxlX2hhcmRfdGFicykKLXRlc3QgIiRlbmFibGVfaGFyZF90YWJzIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX0hBUkRfVEFCUykKK3Rlc3QgIngkZW5hYmxlX2hhcmRfdGFicyIgPSB4eWVzICYmIEFDX0RFRklORShVU0VfSEFSRF9UQUJTLDEsW0RlZmluZSB0byAxIHRvIGNvbXBpbGUgd2l0aCBoYXJkLXRhYnMgY29kZV0pCiAKICMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUteG1jLWdsaXRjaCB0byB0dXJuIG9uIHVzZSBvZiBtYWdpYy1jb29raWUgb3B0aW1pemUKIEFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBsaW1pdGVkIHN1cHBvcnQgZm9yIHhtYykKQEAgLTk0Nyw3ICsxMTY5LDcgQEAKIAlbICAtLWVuYWJsZS14bWMtZ2xpdGNoICAgICBjb21waWxlIHdpdGggc3VwcG9ydCBmb3IgeG1jIChtYWdpYy1jb29raWUpXSwsCiAJW2VuYWJsZV94bWNfZ2xpdGNoPSR3aXRoX2RldmVsb3BdKQogQUNfTVNHX1JFU1VMVCgkZW5hYmxlX3htY19nbGl0Y2gpCi10ZXN0ICIkZW5hYmxlX3htY19nbGl0Y2giID0geWVzICYmIEFDX0RFRklORShVU0VfWE1DX1NVUFBPUlQpCit0ZXN0ICJ4JGVuYWJsZV94bWNfZ2xpdGNoIiA9IHh5ZXMgJiYgQUNfREVGSU5FKFVTRV9YTUNfU1VQUE9SVCwxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlIHdpdGggc3VwcG9ydCBmb3IgeG1jIChtYWdpYy1jb29raWUpXSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUaGVzZSBhcmUganVzdCBleHBlcmltZW50YWwsIHByb2JhYmx5IHNob3VsZCBub3QgYmUgaW4gYSBwYWNrYWdlOgpAQCAtOTU5LDcgKzExODEsNyBAQAogCVt3aXRoX2Fzc3VtZWRfY29sb3I9JGVuYWJsZXZhbF0sCiAJW3dpdGhfYXNzdW1lZF9jb2xvcj15ZXNdKQogQUNfTVNHX1JFU1VMVCgkd2l0aF9hc3N1bWVkX2NvbG9yKQotdGVzdCAiJHdpdGhfYXNzdW1lZF9jb2xvciIgPSB5ZXMgJiYgQUNfREVGSU5FKFVTRV9BU1NVTUVEX0NPTE9SKQordGVzdCAieCR3aXRoX2Fzc3VtZWRfY29sb3IiID0geHllcyAmJiBBQ19ERUZJTkUoVVNFX0FTU1VNRURfQ09MT1IsMSxbRGVmaW5lIHRvIDEgdG8gYXNzdW1lIHRoaW5ncyBhYm91dCBkZWZhdWx0LWNvbG9yc10pCiAKICMjIyAgIHVzZSBvcHRpb24gLS1lbmFibGUtaGFzaG1hcCB0byB0dXJuIG9uIHVzZSBvZiBoYXNobWFwIHNjcm9sbGluZyBsb2dpYwogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IGhhc2htYXAgc2Nyb2xsaW5nLW9wdGltaXphdGlvbiBjb2RlKQpAQCAtOTY4LDQ0ICsxMTkwLDY5IEBACiAJW3dpdGhfaGFzaG1hcD0kZW5hYmxldmFsXSwKIAlbd2l0aF9oYXNobWFwPXllc10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2hhc2htYXApCi10ZXN0ICIkd2l0aF9oYXNobWFwIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX0hBU0hNQVApCit0ZXN0ICJ4JHdpdGhfaGFzaG1hcCIgPSB4eWVzICYmIEFDX0RFRklORShVU0VfSEFTSE1BUCwxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlIHdpdGggaGFzaG1hcCBzY3JvbGxpbmctb3B0aW1pemF0aW9uXSkKIAogIyMjICAgdXNlIG9wdGlvbiAtLWVuYWJsZS1jb2xvcmZnYmcgdG8gdHVybiBvbiB1c2Ugb2YgJENPTE9SRkdCRyBlbnZpcm9ubWVudAogQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IGNvbG9yZmdiZyBjb2RlKQogQUNfQVJHX0VOQUJMRShjb2xvcmZnYmcsCi0JWyAgLS1lbmFibGUtY29sb3JmZ2JnICAgICAgY29tcGlsZSB3aXRoICRDT0xPUkZHQkcgY29kZV0sCisJWyAgLS1lbmFibGUtY29sb3JmZ2JnICAgICAgY29tcGlsZS1pbiBleHBlcmltZW50YWwgJENPTE9SRkdCRyBjb2RlXSwKIAlbd2l0aF9jb2xvcmZnYmc9JGVuYWJsZXZhbF0sCiAJW3dpdGhfY29sb3JmZ2JnPW5vXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfY29sb3JmZ2JnKQotdGVzdCAiJHdpdGhfY29sb3JmZ2JnIiA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX0NPTE9SRkdCRykKK3Rlc3QgIngkd2l0aF9jb2xvcmZnYmciID0geHllcyAmJiBBQ19ERUZJTkUoVVNFX0NPTE9SRkdCRywxLFtEZWZpbmUgdG8gMSB0byBjb21waWxlLWluIGV4cGVyaW1lbnRhbCAkQ09MT1JGR0JHIGNvZGVdKQorCisjIyMgICB1c2Ugb3B0aW9uIC0tZW5hYmxlLWludGVyb3AgdG8gdHVybiBvbiB1c2Ugb2YgYmluZGluZ3MgdXNlZCBmb3IgaW50ZXJvcAorQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IGludGVyb3AgYmluZGluZ3MpCitBQ19BUkdfRU5BQkxFKGludGVyb3AsCisJWyAgLS1lbmFibGUtaW50ZXJvcCAgICAgICAgY29tcGlsZS1pbiBpbnRlcm9wIGJpbmRpbmdzXSwKKwlbd2l0aF9leHBfaW50ZXJvcD0kZW5hYmxldmFsXSwKKwlbd2l0aF9leHBfaW50ZXJvcD0kY2ZfZGZ0X2ludGVyb3BdKQorQUNfTVNHX1JFU1VMVCgkd2l0aF9leHBfaW50ZXJvcCkKKworTkNVUlNFU19JTlRFUk9QX0ZVTkNTPTAKK3Rlc3QgIngkd2l0aF9leHBfaW50ZXJvcCIgPSB4eWVzICYmIE5DVVJTRVNfSU5URVJPUF9GVU5DUz0xCitBQ19TVUJTVChOQ1VSU0VTX0lOVEVST1BfRlVOQ1MpCiAKICMgVGhpcyBpcyBzdGlsbCBleHBlcmltZW50YWwgKDIwMDgwMzI5KSwgYnV0IHNob3VsZCB1bHRpbWF0ZWx5IGJlIG1vdmVkIHRvCiAjIHRoZSBzY3JpcHQtYmxvY2sgLS13aXRoLW5vcm1hbCwgZXRjLgogQ0ZfV0lUSF9QVEhSRUFECiAKLUFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2Ugd2Vhay1zeW1ib2xzIGZvciBwdGhyZWFkcykKLUFDX0FSR19FTkFCTEUod2Vhay1zeW1ib2xzLAotICAgIFsgIC0tZW5hYmxlLXdlYWstc3ltYm9scyAgIGVuYWJsZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzXSwKLSAgICBbdXNlX3dlYWtfc3ltYm9scz0kd2l0aHZhbF0sCi0gICAgW3VzZV93ZWFrX3N5bWJvbHM9bm9dKQotQUNfTVNHX1JFU1VMVCgkdXNlX3dlYWtfc3ltYm9scykKLWlmIHRlc3QgIiR1c2Vfd2Vha19zeW1ib2xzIiA9IHllcyA7IHRoZW4KLSAgICBDRl9XRUFLX1NZTUJPTFMKLWVsc2UKLSAgICBjZl9jdl93ZWFrX3N5bWJvbHM9bm8KLWZpCitpZiB0ZXN0ICJ4JHdpdGhfcHRocmVhZCIgIT0geG5vOyB0aGVuCisJQUNfQ0hFQ0tfRlVOQyhwdGhyZWFkX2tpbGwsWworCQlBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gYWxsb3cgRUlOVFIgaW4gd2dldGNoIHdpdGggcHRocmVhZHMpCisJCUFDX0FSR19FTkFCTEUocHRocmVhZHMtZWludHIsCisJCQlbICAtLWVuYWJsZS1wdGhyZWFkcy1laW50ciBlbmFibGUgRUlOVFIgaW4gd2dldGNoIHdpdGggcHRocmVhZHNdLAorCQkJW3VzZV9wdGhyZWFkc19laW50cj0kZW5hYmxldmFsXSwKKwkJCVt1c2VfcHRocmVhZHNfZWludHI9bm9dKQorCQlBQ19NU0dfUkVTVUxUKCR1c2VfcHRocmVhZHNfZWludHIpCisJCWlmIHRlc3QgIngkdXNlX3B0aHJlYWRzX2VpbnRyIiA9IHh5ZXMgOyB0aGVuCisJCQlBQ19ERUZJTkUoVVNFX1BUSFJFQURTX0VJTlRSLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSBFSU5UUiBpbiB3Z2V0Y2ggd2l0aCBwdGhyZWFkc10pCisJCWZpXSkKIAotaWYgdGVzdCAkY2ZfY3Zfd2Vha19zeW1ib2xzID0geWVzIDsgdGhlbgotICAgIEFDX0RFRklORShVU0VfV0VBS19TWU1CT0xTKQorCUFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2Ugd2Vhay1zeW1ib2xzIGZvciBwdGhyZWFkcykKKwlBQ19BUkdfRU5BQkxFKHdlYWstc3ltYm9scywKKwkJWyAgLS1lbmFibGUtd2Vhay1zeW1ib2xzICAgZW5hYmxlIHdlYWstc3ltYm9scyBmb3IgcHRocmVhZHNdLAorCQlbdXNlX3dlYWtfc3ltYm9scz0kZW5hYmxldmFsXSwKKwkJW3VzZV93ZWFrX3N5bWJvbHM9bm9dKQorCUFDX01TR19SRVNVTFQoJHVzZV93ZWFrX3N5bWJvbHMpCisJaWYgdGVzdCAieCR1c2Vfd2Vha19zeW1ib2xzIiA9IHh5ZXMgOyB0aGVuCisJCUNGX1dFQUtfU1lNQk9MUworCWVsc2UKKwkJY2ZfY3Zfd2Vha19zeW1ib2xzPW5vCisJZmkKKworCWlmIHRlc3QgIngkY2ZfY3Zfd2Vha19zeW1ib2xzIiA9IHh5ZXMgOyB0aGVuCisJCUFDX0RFRklORShVU0VfV0VBS19TWU1CT0xTLDEsW0RlZmluZSB0byAxIHRvIGVuYWJsZSB3ZWFrLXN5bWJvbHMgZm9yIHB0aHJlYWRzXSkKKwlmaQogZmkKIAogUFRIUkVBRD0KLWlmIHRlc3QgIiR3aXRoX3B0aHJlYWQiID0gInllcyIgOyB0aGVuCi0gICAgQUNfREVGSU5FKFVTRV9QVEhSRUFEUykKLSAgICBlbmFibGVfcmVlbnRyYW50PXllcwotICAgIGlmIHRlc3QgJGNmX2N2X3dlYWtfc3ltYm9scyA9IHllcyA7IHRoZW4KLSAgICAgICAgUFRIUkVBRD0tbHB0aHJlYWQKLSAgICBmaQoraWYgdGVzdCAieCR3aXRoX3B0aHJlYWQiID0gInh5ZXMiIDsgdGhlbgorCUFDX0RFRklORShVU0VfUFRIUkVBRFMsMSxbRGVmaW5lIHRvIDEgdG8gdXNlIHB0aHJlYWRzIGZlYXR1cmVdKQorCWVuYWJsZV9yZWVudHJhbnQ9eWVzCisJaWYgdGVzdCAieCRjZl9jdl93ZWFrX3N5bWJvbHMiID0geHllcyA7IHRoZW4KKwkJUFRIUkVBRD0tbHB0aHJlYWQKKwlmaQogZmkKIEFDX1NVQlNUKFBUSFJFQUQpCiAKQEAgLTEwMTMsMjMgKzEyNjAsNDEgQEAKICMgb3BhcXVlIG91dHNpZGUgb2YgdGhhdCwgc28gdGhlcmUgaXMgbm8gLS1lbmFibGUtb3BhcXVlIG9wdGlvbi4gIFdlIGNhbiB1c2UKICMgdGhpcyBvcHRpb24gd2l0aG91dCAtLXdpdGgtcHRocmVhZHMsIGJ1dCB0aGlzIHdpbGwgYmUgYWx3YXlzIHNldCBmb3IKICMgcHRocmVhZHMuCi1BQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgZXhwZXJpbWVudGFsIHJlZW50cmFudCBjb2RlKQorQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHJlZW50cmFudCBjb2RlKQogQUNfQVJHX0VOQUJMRShyZWVudHJhbnQsCi0JWyAgLS1lbmFibGUtcmVlbnRyYW50ICAgICAgY29tcGlsZSB3aXRoIGV4cGVyaW1lbnRhbCByZWVudHJhbnQgY29kZV0sCisJWyAgLS1lbmFibGUtcmVlbnRyYW50ICAgICAgY29tcGlsZSB3aXRoIHJlZW50cmFudCBjb2RlXSwKIAlbd2l0aF9yZWVudHJhbnQ9JGVuYWJsZXZhbF0sCiAJW3dpdGhfcmVlbnRyYW50PW5vXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfcmVlbnRyYW50KQotaWYgdGVzdCAiJHdpdGhfcmVlbnRyYW50IiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkd2l0aF9yZWVudHJhbnQiID0geHllcyA7IHRoZW4KIAljZl9jdl9lbmFibGVfcmVlbnRyYW50PTEKIAljZl9jdl9lbmFibGVfb3BhcXVlPSJOQ1VSU0VTX0lOVEVSTkFMUyIKIAlOQ1VSU0VTX09QQVFVRT0xCiAJTkNVUlNFU19TSVpFX1Q9aW50Ci0gICAgaWYgdGVzdCAkY2ZfY3Zfd2Vha19zeW1ib2xzID0geWVzIDsgdGhlbgotICAgICAgICBDRl9SRU1PVkVfTElCKExJQlMsJExJQlMscHRocmVhZCkKLSAgICBlbHNlCi0gICAgICAgIExJQl9TVUZGSVg9InQke0xJQl9TVUZGSVh9IgotICAgIGZpCi0JQUNfREVGSU5FKFVTRV9SRUVOVFJBTlQpCisJaWYgdGVzdCAieCRjZl9jdl93ZWFrX3N5bWJvbHMiID0geHllcyA7IHRoZW4KKwkJQ0ZfUkVNT1ZFX0xJQihMSUJTLCRMSUJTLHB0aHJlYWQpCisJCUNGX0FERF9MSUIocHRocmVhZCxURVNUX0xJQlMpCisJCUNGX0FERF9MSUIocHRocmVhZCxURVNUX0xJQlMyKQorCWVsc2UKKwkJIyB3aGVuIG5vdCB1c2luZyB3ZWFrIHN5bWJvbHMgYnV0IHdpdGhfcmVlbnRyYW50LAorCQkjIGFkZCAndCcgdG8gdGhlIGxpYnJhcnkgc3VmZml4IG9uIGFsbCBwbGF0Zm9ybXMKKwkJIyBleGNlcHQgY3lnd2luLCB3aGVyZSB3ZSBvbmx5IGRvIHRoYXQgaWYgQUxTTworCQkjIGNvbXBpbGluZyB3aXRoIGZ1bGwgdGhyZWFkIHN1cHBvcnQuCisJCWNhc2UgIiRob3N0IiBpbgorCQkoKmN5Z3dpbiogfCAqbXN5cyopCisJCQlpZiB0ZXN0ICIkd2l0aF9wdGhyZWFkIiA9ICJ5ZXMiIDsgdGhlbgorCQkJCWlmIHRlc3QgIngkZGlzYWJsZV9saWJfc3VmZml4ZXMiID0gInhubyIgOyB0aGVuCisJCQkJCUxJQl9TVUZGSVg9InQke0xJQl9TVUZGSVh9IgorCQkJCWZpCisJCQlmaSA7OworCQkoKikKKwkJCWlmIHRlc3QgIngkZGlzYWJsZV9saWJfc3VmZml4ZXMiID0gInhubyIgOyB0aGVuCisJCQkJTElCX1NVRkZJWD0idCR7TElCX1NVRkZJWH0iCisJCQlmaQorCQkJOzsKKwkJZXNhYworCWZpCisJQUNfREVGSU5FKFVTRV9SRUVOVFJBTlQsMSxbRGVmaW5lIHRvIDEgdG8gdXNlIHJlZW50cmFudCBmZWF0dXJlXSkKIAlDRl9OQ1VSU0VTX0FCSV82CiBlbHNlCiAJY2ZfY3ZfZW5hYmxlX3JlZW50cmFudD0wCkBAIC0xMDQyLDEzICsxMzA3LDI3IEBACiBBQ19TVUJTVChOQ1VSU0VTX09QQVFVRSkKIEFDX1NVQlNUKE5DVVJTRVNfU0laRV9UKQogCisjIyMgQWxsb3cgdXNpbmcgYSBkaWZmZXJlbnQgd3JhcC1wcmVmaXgKK2lmIHRlc3QgIiRjZl9jdl9lbmFibGVfcmVlbnRyYW50IiAhPSAwIHx8IHRlc3QgIiRCUk9LRU5fTElOS0VSIiA9IDEgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGZvciBwcmVmaXggdXNlZCB0byB3cmFwIHB1YmxpYyB2YXJpYWJsZXMpCisJQUNfQVJHX1dJVEgod3JhcC1wcmVmaXgsCisJCVsgIC0td2l0aC13cmFwLXByZWZpeD1YWFggIG92ZXJyaWRlIHByZWZpeCB1c2VkIGZvciBwdWJsaWMgdmFyaWFibGVzXSwKKwkJW05DVVJTRVNfV1JBUF9QUkVGSVg9JHdpdGh2YWxdLAorCQlbTkNVUlNFU19XUkFQX1BSRUZJWD1fbmNfXSkKKwlBQ19NU0dfUkVTVUxUKCROQ1VSU0VTX1dSQVBfUFJFRklYKQorZWxzZQorCU5DVVJTRVNfV1JBUF9QUkVGSVg9X25jXworZmkKK0FDX1NVQlNUKE5DVVJTRVNfV1JBUF9QUkVGSVgpCitBQ19ERUZJTkVfVU5RVU9URUQoTkNVUlNFU19XUkFQX1BSRUZJWCwiJE5DVVJTRVNfV1JBUF9QUkVGSVgiLFtEZWZpbmUgdG8gb3ZlcnJpZGUgX25jXyBwcmVmaXhdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgZXhwZXJpbWVudGFsIHNhZmUtc3ByaW50ZiBjb2RlKQogQUNfQVJHX0VOQUJMRShzYWZlLXNwcmludGYsCiAJWyAgLS1lbmFibGUtc2FmZS1zcHJpbnRmICAgY29tcGlsZSB3aXRoIGV4cGVyaW1lbnRhbCBzYWZlLXNwcmludGYgY29kZV0sCiAJW3dpdGhfc2FmZV9zcHJpbnRmPSRlbmFibGV2YWxdLAogCVt3aXRoX3NhZmVfc3ByaW50Zj1ub10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3NhZmVfc3ByaW50ZikKLXRlc3QgIiR3aXRoX3NhZmVfc3ByaW50ZiIgPSB5ZXMgJiYgQUNfREVGSU5FKFVTRV9TQUZFX1NQUklOVEYpCit0ZXN0ICJ4JHdpdGhfc2FmZV9zcHJpbnRmIiA9IHh5ZXMgJiYgQUNfREVGSU5FKFVTRV9TQUZFX1NQUklOVEYsMSxbRGVmaW5lIHRvIDEgdG8gY29tcGlsZSB3aXRoIGV4cGVyaW1lbnRhbCBzYWZlLXNwcmludGYgY29kZV0pCiAKICMjIyAgIHVzZSBvcHRpb24gLS1kaXNhYmxlLXNjcm9sbC1oaW50cyB0byB0dXJuIG9mZiB1c2Ugb2Ygc2Nyb2xsLWhpbnRzIHNjcm9sbGluZyBsb2dpYwogIyB3aGVuIGhhc2htYXAgaXMgdXNlZCBzY3JvbGwgaGludHMgYXJlIHVzZWxlc3MKQEAgLTEwNTksMzQgKzEzMzgsMjkgQEAKIAlbd2l0aF9zY3JvbGxfaGludHM9JGVuYWJsZXZhbF0sCiAJW3dpdGhfc2Nyb2xsX2hpbnRzPXllc10pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3Njcm9sbF9oaW50cykKLXRlc3QgIiR3aXRoX3Njcm9sbF9oaW50cyIgPSB5ZXMgJiYgQUNfREVGSU5FKFVTRV9TQ1JPTExfSElOVFMpCit0ZXN0ICJ4JHdpdGhfc2Nyb2xsX2hpbnRzIiA9IHh5ZXMgJiYgQUNfREVGSU5FKFVTRV9TQ1JPTExfSElOVFMsMSxbRGVmaW5lIHRvIDEgdG8gY29tcGlsZSB3aXRob3V0IHNjcm9sbC1oaW50cyBjb2RlXSkKIGZpCiAKLUFDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCBleHBlcmltZW50YWwgd2dldGNoLWV2ZW50cyBjb2RlKQorQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHdnZXRjaC1ldmVudHMgY29kZSkKIEFDX0FSR19FTkFCTEUod2dldGNoLWV2ZW50cywKLQlbICAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzICBjb21waWxlIHdpdGggZXhwZXJpbWVudGFsIHdnZXRjaC1ldmVudHMgY29kZV0sCisJWyAgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAgY29tcGlsZSB3aXRoIHdnZXRjaC1ldmVudHMgY29kZV0sCiAJW3dpdGhfd2dldGNoX2V2ZW50cz0kZW5hYmxldmFsXSwKIAlbd2l0aF93Z2V0Y2hfZXZlbnRzPW5vXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfd2dldGNoX2V2ZW50cykKLXRlc3QgIiR3aXRoX3dnZXRjaF9ldmVudHMiID0geWVzICYmIEFDX0RFRklORShOQ1VSU0VTX1dHRVRDSF9FVkVOVFMpCit0ZXN0ICJ4JHdpdGhfd2dldGNoX2V2ZW50cyIgPSB4eWVzICYmIEFDX0RFRklORShOQ1VSU0VTX1dHRVRDSF9FVkVOVFMsMSxbRGVmaW5lIHRvIDEgdG8gY29tcGlsZSB3aXRoIHdnZXRjaC1ldmVudHMgY29kZV0pCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIENGX0hFTFBfTUVTU0FHRShUZXN0aW5nL2RldmVsb3BtZW50IE9wdGlvbnM6KQogCiAjIyMJdXNlIG9wdGlvbiAtLWRpc2FibGUtZWNobyB0byBzdXBwcmVzcyBmdWxsIGRpc3BsYXkgY29tcGlsaW5nIGNvbW1hbmRzCi1BQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gZGlzcGxheSBmdWxsIGNvbW1hbmRzIGR1cmluZyBidWlsZCkKLUFDX0FSR19FTkFCTEUoZWNobywKLQlbICAtLWVuYWJsZS1lY2hvICAgICAgICAgICBidWlsZDogZGlzcGxheSAiY29tcGlsaW5nIiBjb21tYW5kcyAoZGVmYXVsdCldLAotCVt3aXRoX2VjaG89JGVuYWJsZXZhbF0sCi0JW3dpdGhfZWNobz15ZXNdKQotaWYgdGVzdCAiJHdpdGhfZWNobyIgPSB5ZXM7IHRoZW4KK0NGX0RJU0FCTEVfRUNITworaWYgdGVzdCAieCRlbmFibGVfZWNobyIgPSB4eWVzOyB0aGVuCiAJRUNIT19MSU5LPQogZWxzZQogCUVDSE9fTElOSz0nQCBlY2hvIGxpbmtpbmcgJEAgLi4uIDsnCiAJdGVzdCAtbiAiJExJQlRPT0wiICYmIExJQlRPT0w9IiRMSUJUT09MIC0tc2lsZW50IgogCXRlc3QgLW4gIiRMSUJUT09MX0NYWCIgJiYgTElCVE9PTF9DWFg9IiRMSUJUT09MX0NYWCAtLXNpbGVudCIKIGZpCi1BQ19NU0dfUkVTVUxUKCR3aXRoX2VjaG8pCiBBQ19TVUJTVChFQ0hPX0xJTkspCiAKICMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLXdhcm5pbmdzIHRvIHR1cm4gb24gYWxsIGdjYyB3YXJuaW5ncwpAQCAtMTA5NywxMyArMTM3MSwxNCBAQAogQUNfTVNHX1JFU1VMVCgkd2l0aF93YXJuaW5ncykKIAogaWYgdGVzdCAieCR3aXRoX3dhcm5pbmdzIiA9ICJ4eWVzIjsgdGhlbgotIAlBREFGTEFHUz0iJEFEQUZMQUdTIC1nbmF0ZyIKLQlDRl9HQ0NfV0FSTklOR1MoV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBXZXh0cmEgV25vLXVua25vd24tcHJhZ21hcyBXc3dpdGNoLWVudW0pCi0JaWYgdGVzdCAiJGNmX3dpdGhfY3h4IiA9IHllcyA7IHRoZW4KKyAJQ0ZfQUREX0FEQUZMQUdTKC1nbmF0ZykKKwlDRl9HQ0NfV0FSTklOR1MoV25vLXVua25vd24tcHJhZ21hcyBXc3dpdGNoLWVudW0pCisJaWYgdGVzdCAieCRjZl93aXRoX2N4eCIgPSB4eWVzIDsgdGhlbgogCQlDRl9HWFhfV0FSTklOR1MoV25vLXVudXNlZCkKIAlmaQogZmkKIENGX0dDQ19BVFRSSUJVVEVTCitDRl9FTkFCTEVfU1RSSU5HX0hBQ0tTCiAKICMjIwl1c2Ugb3B0aW9uIC0tZW5hYmxlLWFzc2VydGlvbnMgdG8gdHVybiBvbiBnZW5lcmF0aW9uIG9mIGFzc2VydGlvbiBjb2RlCiBBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gZW5hYmxlIHJ1bnRpbWUgYXNzZXJ0aW9ucykKQEAgLTExMTYsMzIgKzEzOTEsMzEgQEAKIHRoZW4KIAlpZiB0ZXN0ICIkd2l0aF9hc3NlcnRpb25zIiA9IG5vCiAJdGhlbgotCQlBQ19ERUZJTkUoTkRFQlVHKQogCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1ETkRFQlVHIgogCWVsc2UKLQkJQURBRkxBR1M9IiRBREFGTEFHUyAtZ25hdGEiCisJCUNGX0FERF9BREFGTEFHUygtZ25hdGEpCiAJZmkKIGZpCiAKICMjIwl1c2Ugb3B0aW9uIC0tZGlzYWJsZS1sZWFrcyB0byBzdXBwcmVzcyAicGVybWFuZW50IiBsZWFrcywgZm9yIHRlc3RpbmcKIENGX0RJU0FCTEVfTEVBS1MKLUFDX0RFRklORShIQVZFX05DX0FMTE9DX0gpCitBQ19ERUZJTkUoSEFWRV9OQ19BTExPQ19ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmNfYWxsb2MuaCBoZWFkZXJdKQogCiAjIyMJdXNlIG9wdGlvbiAtLWVuYWJsZS1leHBhbmRlZCB0byBnZW5lcmF0ZSBjZXJ0YWluIG1hY3JvcyBhcyBmdW5jdGlvbnMKIEFDX0FSR19FTkFCTEUoZXhwYW5kZWQsCiAJWyAgLS1lbmFibGUtZXhwYW5kZWQgICAgICAgdGVzdDogZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciBjZXJ0YWluIG1hY3Jvc10sCi0JW3Rlc3QgIiRlbmFibGV2YWwiID0geWVzICYmIEFDX0RFRklORShOQ1VSU0VTX0VYUEFOREVEKV0pCisJW3Rlc3QgIngkZW5hYmxldmFsIiA9IHh5ZXMgJiYgQUNfREVGSU5FKE5DVVJTRVNfRVhQQU5ERUQsMSxbRGVmaW5lIHRvIDEgdG8gZ2VuZXJhdGUgZnVuY3Rpb25zIGZvciBjZXJ0YWluIG1hY3Jvc10pXSkKIAogIyMjCXVzZSBvcHRpb24gLS1kaXNhYmxlLW1hY3JvcyB0byBzdXBwcmVzcyBtYWNyb3MgaW4gZmF2b3Igb2YgZnVuY3Rpb25zCiBBQ19BUkdfRU5BQkxFKG1hY3JvcywKIAlbICAtLWRpc2FibGUtbWFjcm9zICAgICAgICB0ZXN0OiB1c2UgZnVuY3Rpb25zIHJhdGhlciB0aGFuIG1hY3Jvc10sCi0JW3Rlc3QgIiRlbmFibGV2YWwiID0gbm8gJiYgQUNfREVGSU5FKE5DVVJTRVNfTk9NQUNST1MpXSkKKwlbdGVzdCAiJGVuYWJsZXZhbCIgPSBubyAmJiBBQ19ERUZJTkUoTkNVUlNFU19OT01BQ1JPUywxLFtEZWZpbmUgdG8gMSB0byB1c2UgZnVuY3Rpb25zIHJhdGhlciB0aGFuIG1hY3Jvc10pXSkKIAogIyBOb3JtYWxseSB3ZSBvbmx5IGFkZCB0cmFjZSgpIHRvIHRoZSBkZWJ1Zy1saWJyYXJ5LiAgQWxsb3cgdGhpcyB0byBiZQogIyBleHRlbmRlZCB0byBhbGwgbW9kZWxzIG9mIHRoZSBuY3Vyc2VzIGxpYnJhcnk6CiBjZl9hbGxfdHJhY2VzPW5vCiBjYXNlICIkQ0ZMQUdTICRDUFBGTEFHUyIgaW4KLSotRFRSQUNFKikKKygqLURUUkFDRSopCiAJY2ZfYWxsX3RyYWNlcz15ZXMKIAk7OwogZXNhYwpAQCAtMTE1Myw3ICsxNDI3LDcgQEAKIFtjZl93aXRoX3RyYWNlPSRjZl9hbGxfdHJhY2VzXSkKIEFDX01TR19SRVNVTFQoJGNmX3dpdGhfdHJhY2UpCiAKLWlmIHRlc3QgIiRjZl93aXRoX3RyYWNlIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkY2Zfd2l0aF90cmFjZSIgPSB4eWVzIDsgdGhlbgogCUxJQl9UUkFDSU5HPWFsbAogCUFEQV9UUkFDRT1UUlVFCiAJQ0ZfQUREX0NGTEFHUygtRFRSQUNFKQpAQCAtMTE2NCwxNSArMTQzOCwyNSBAQAogCiBBQ19TVUJTVChBREFfVFJBQ0UpCiAKK0NGX0RJU0FCTEVfR05BVF9QUk9KRUNUUworCiAjIyMJQ2hlY2tzIGZvciBsaWJyYXJpZXMuCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKCptaW5ndzMyKnwqbWluZ3c2NCopCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRFdJTlZFUj0weDA1MDEiCisJTElCUz0iIC1scHNhcGkgJExJQlMiCisJOzsKKygqKQogQUNfQ0hFQ0tfRlVOQyhnZXR0aW1lb2ZkYXksCi0JQUNfREVGSU5FKEhBVkVfR0VUVElNRU9GREFZKSxbCisJQUNfREVGSU5FKEhBVkVfR0VUVElNRU9GREFZLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgZ2V0dGltZW9mZGF5IGZ1bmN0aW9uXSksWwogCiBBQ19DSEVDS19MSUIoYnNkLCBnZXR0aW1lb2ZkYXksCi0JQUNfREVGSU5FKEhBVkVfR0VUVElNRU9GREFZKQotCUxJQlM9IiRMSUJTIC1sYnNkIildKWRubCBDTElYOiBiemVybywgc2VsZWN0LCBnZXR0aW1lb2ZkYXkKKwlBQ19ERUZJTkUoSEFWRV9HRVRUSU1FT0ZEQVksMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBnZXR0aW1lb2ZkYXkgZnVuY3Rpb25dKQorCUNGX0FERF9MSUIoYnNkKSldKWRubCBDTElYOiBiemVybywgc2VsZWN0LCBnZXR0aW1lb2ZkYXkKKwk7OworZXNhYwogCi1DRl9NQVRIX0xJQihNQVRIX0xJQixzaW4oeCkpCitDRl9NQVRIX0xJQihNQVRIX0xJQixwb3coc2luKHgpLHgpKQogQUNfU1VCU1QoTUFUSF9MSUIpCiAKICMjIwlDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KQEAgLTExODcsNiArMTQ3MSw3IEBACiBnZXRvcHQuaCBcCiBsaW1pdHMuaCBcCiBsb2NhbGUuaCBcCittYXRoLmggXAogcG9sbC5oIFwKIHN5cy9ic2R0eXBlcy5oIFwKIHN5cy9pb2N0bC5oIFwKQEAgLTEyMDAsMTEgKzE0ODUsMTMgQEAKIHdjdHlwZS5oIFwKICkKIAorQ0ZfR0VUT1BUX0hFQURFUgorCiAjIGNoZWNrIGZvciBJU0MgKHRoaXMgbWF5IGFsc28gZGVmaW5lIF9QT1NJWF9TT1VSQ0UpCiAjIE5vdGU6IGV2ZW4gbm9uLVBvc2l4IElTQyBuZWVkcyA8c3lzL2JzZHR5cGVzLmg+IHRvIGRlY2xhcmUgZmRfc2V0Ci1pZiB0ZXN0ICIkSVNDIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkSVNDIiA9IHh5ZXMgOyB0aGVuCiAJQUNfQ0hFQ0tfTElCKGNwb3NpeCxtYWluKQotCUFDX0NIRUNLX0xJQihpbmV0LGJ6ZXJvLExJQlM9IiRMSUJTIC1saW5ldCIpZG5sIGFsc28gJ3NlbGVjdCgpJworCUFDX0NIRUNLX0xJQihpbmV0LGJ6ZXJvLENGX0FERF9MSUIoaW5ldCkpZG5sIGFsc28gJ3NlbGVjdCgpJwogZmkKIAogQ0ZfU1lTX1RJTUVfU0VMRUNUCkBAIC0xMjQ2LDEzICsxNTMzLDE2IEBACiBnZXRjd2QgXAogZ2V0ZWdpZCBcCiBnZXRldWlkIFwKK2dldG9wdCBcCiBnZXR0dHluYW0gXAogaXNzZXR1Z2lkIFwKIHBvbGwgXAorcHV0ZW52IFwKIHJlbW92ZSBcCiBzZWxlY3QgXAogc2V0YnVmIFwKIHNldGJ1ZmZlciBcCitzZXRlbnYgXAogc2V0dmJ1ZiBcCiBzaWdhY3Rpb24gXAogc2lndmVjIFwKQEAgLTEyNjIsNyArMTU1MiwxMyBAQAogdGltZXMgXAogdnNucHJpbnRmIFwKICkKLWlmIHRlc3QgIiR3aXRoX2dldGNhcCIgPSAieWVzIiA7IHRoZW4KKworaWYgdGVzdCAieCRhY19jdl9mdW5jX2dldG9wdCIgPSB4bm8gJiYKKyAgIHRlc3QgIngkY2Zfd2l0aF9wcm9ncyRjZl93aXRoX3Rlc3RzIiAhPSB4bm9ubzsgdGhlbgorCUFDX01TR19FUlJPUihnZXRvcHQgaXMgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIHByb2dyYW1zKQorZmkKKworaWYgdGVzdCAieCR3aXRoX2dldGNhcCIgPSAieHllcyIgOyB0aGVuCiAJQ0ZfQ0dFVEVOVAogZmkKIApAQCAtMTI3NywzMCArMTU3MywzNCBAQAogQ0ZfU1VCU1RfSUYoWyIkY2ZfY3ZfZnVuY192c3NjYW5mIiA9IHZzc2NhbmZdLCBIQVZFX1ZTU0NBTkYsIDEsIDApCiAKIGRubCBGSVhNRSAobWF5IG5lZWQgdGhpcykgQUNfU1lTX1JFU1RBUlRBQkxFX1NZU0NBTExTCi1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXMgOyB0aGVuCiAJQUNfTVNHX1dBUk4oY3Jvc3MgY29tcGlsaW5nOiBhc3N1bWUgc2V0dmJ1ZiBwYXJhbXMgbm90IHJldmVyc2VkKQogZWxzZQogCUFDX0ZVTkNfU0VUVkJVRl9SRVZFUlNFRAogZmkKLUFDX1RZUEVfU0lHTkFMCitBQ19DSEVDS19UWVBFKGludHB0cl90LCBsb25nKQorQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LCBpbnQpCiBDRl9UWVBFX1NJR0FDVElPTgogQ0ZfU0laRUNIQU5HRQogQ0ZfRlVOQ19NRU1NT1ZFCiBDRl9GVU5DX1BPTEwKK0NGX1ZBX0NPUFkKK0FDX0ZVTkNfVkZPUksKIAogIyBzcGVjaWFsIGNoZWNrIGZvciB0ZXN0L2RpdHRvLmMKIENGX0ZVTkNfT1BFTlBUWQogaWYgdGVzdCAiJGNmX2N2X2Z1bmNfb3BlbnB0eSIgIT0gbm8gOyB0aGVuCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFVTRV9PUEVOUFRZX0hFQURFUiw8JGNmX2N2X2Z1bmNfb3BlbnB0eT4pCi0gICAgQUNfREVGSU5FKFVTRV9YVEVSTV9QVFkpCi0gICAgaWYgdGVzdCAiJGNmX2N2X2xpYl91dGlsIiA9IHllcyA7IHRoZW4KLSAgICAgICAgVEVTVF9MSUJTPSItbHV0aWwgJFRFU1RfTElCUyIKLSAgICBmaQorCUFDX0RFRklORV9VTlFVT1RFRChVU0VfT1BFTlBUWV9IRUFERVIsPCRjZl9jdl9mdW5jX29wZW5wdHk+LFtEZWZpbmUgdG8gYWN0dWFsIGhlYWRlciBmb3Igb3BlbnB0eSBmdW5jdGlvbl0pCisJQUNfREVGSU5FKFVTRV9YVEVSTV9QVFksMSxbRGVmaW5lIHRvIDEgaWYgd2Ugc2hvdWxkIGFzc3VtZSB4dGVybSBwc2V1ZG90ZXJtaW5hbCBpbnRlcmZhY2VdKQorCWlmIHRlc3QgIngkY2ZfY3ZfbGliX3V0aWwiID0geHllcyA7IHRoZW4KKwkJQ0ZfQUREX0xJQih1dGlsLFRFU1RfTElCUykKKwlmaQogZmkKIEFDX1NVQlNUKFRFU1RfTElCUykKK0FDX1NVQlNUKFRFU1RfTElCUzIpCiAKIGlmIHRlc3QgIiR3aXRoX2hhc2hlZF9kYiIgIT0gbm8gOyB0aGVuCi0JQUNfREVGSU5FKFVTRV9IQVNIRURfREIpCisJQUNfREVGSU5FKFVTRV9IQVNIRURfREIsMSxbRGVmaW5lIHRvIDEgaWYgd2Ugc2hvdWxkIGJ1aWxkIHRlcm1pbmZvIGluIGhhc2hlZCBkYXRhYmFzZV0pCiAJQ0ZfSEFTSEVEX0RCKCR3aXRoX2hhc2hlZF9kYikKIGZpCiAKQEAgLTEzMjAsNjEgKzE2MjAsMjUgQEAKIAlDRl9QUk9HX0NDX0NfTyhDWFgpCiAKIAljYXNlICRHWFhfVkVSU0lPTiBpbgotCTEqfDIuWzAtNl0qKQorCSgxKnwyLlswLTZdKikKIAkJY2ZfY3h4X2xpYnJhcnk9eWVzCiAJCTs7Ci0JKi0yLjcqfDIuNyopCisJKCotMi43KnwyLjcqKQogCQlDRl9HUFBfTElCUkFSWQogCQk7OwotCSopCisJKCopCiAJCWNmX2N4eF9saWJyYXJ5PW5vCiAJCTs7CiAJZXNhYwogCi0JQUNfQ0hFQ0tfSEVBREVSUyhpb3N0cmVhbSB0eXBlaW5mbykKLQotICAgIGlmIHRlc3QgeCIkYWNfY3ZfaGVhZGVyX2lvc3RyZWFtIiA9IHh5ZXMgOyB0aGVuCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhpZiBpb3N0cmVhbSB1c2VzIHN0ZC1uYW1lc3BhY2UpCi0gICAgICAgIEFDX1RSWV9DT01QSUxFKFsKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLXVzaW5nIHN0ZDo6ZW5kbDsKLXVzaW5nIHN0ZDo6Y2VycjtdLFsKLWNlcnIgPDwgInRlc3RpbmciIDw8IGVuZGw7Ci1dLFtjZl9pb3N0cmVhbV9uYW1lc3BhY2U9eWVzXSxbY2ZfaW9zdHJlYW1fbmFtZXNwYWNlPW5vXSkKLSAgICAgICAgQUNfTVNHX1JFU1VMVCgkY2ZfaW9zdHJlYW1fbmFtZXNwYWNlKQotICAgICAgICBpZiB0ZXN0ICIkY2ZfaW9zdHJlYW1fbmFtZXNwYWNlIiA9IHllcyA7IHRoZW4KLSAgICAgICAgICAgIEFDX0RFRklORShJT1NUUkVBTV9OQU1FU1BBQ0UpCi0gICAgICAgIGZpCi0gICAgZmkKLQorCUFDX0NIRUNLX0hFQURFUlModHlwZWluZm8pCisJQ0ZfQ1hYX0lPU1RSRUFNX05BTUVTUEFDRQogCUNGX0JPT0xfREVDTAogCUNGX0JPT0xfU0laRQogCUNGX0VUSVBfREVGSU5FUwogCUNGX0NQUF9QQVJBTV9JTklUCiAJQ0ZfQ1BQX1NUQVRJQ19DQVNUCi0KLQlDWFhfQVI9JyQoQVIpJwotCUNYWF9BUl9PUFRTPSckKEFSX09QVFMpJwotCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluICModmkKLQlpcml4KikgIyh2aQotCSAgICBpZiB0ZXN0ICIkR1hYIiAhPSB5ZXMgOyB0aGVuCi0JCUNYWF9BUj0nJChDWFgpJwotCQlDWFhfQVJfT1BUUz0nLWFyIC1vJwotCSAgICBmaQotCSAgICA7OwotCXNjbzMuMnY1KikgIyh2aQotCSAgICBDWFhMREZMQUdTPSItdSBtYWluIgotCSAgICA7OwotCXNvbGFyaXMyKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgIT0geWVzIDsgdGhlbgotCQlDWFhfQVI9JyQoQ1hYKScKLQkJQ1hYX0FSX09QVFM9Jy14YXIgLW8nCi0JICAgIGZpCi0JICAgIDs7Ci0JZXNhYwotCUFDX1NVQlNUKENYWExERkxBR1MpCi0JQUNfU1VCU1QoQ1hYX0FSKQotCUFDX1NVQlNUKENYWF9BUl9PUFRTKQorCUNGX0NYWF9BUl9GTEFHUwogZWxzZQogCWNmX2N4eF9saWJyYXJ5PW5vCiAJY2ZfY3ZfYnVpbHRpbl9ib29sPTEKQEAgLTEzOTYsOSArMTY2MCw5IEBACiAJCQlDRl9CT09MX1NJWkUKIAkJZWxzZQogCQkJQUNfTVNHX0NIRUNLSU5HKGZvciBmYWxsYmFjayB0eXBlIG9mIGJvb2wpCi0JCQljYXNlICIkaG9zdF9jcHUiIGluICModmkKLQkJCWk/ODYpCWNmX2N2X3R5cGVfb2ZfYm9vbD1jaGFyCTs7ICModmkKLQkJCSopCWNmX2N2X3R5cGVfb2ZfYm9vbD1pbnQJOzsKKwkJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJCShpPzg2KQljZl9jdl90eXBlX29mX2Jvb2w9Y2hhcgk7OworCQkJKCopCWNmX2N2X3R5cGVfb2ZfYm9vbD1pbnQJOzsKIAkJCWVzYWMKIAkJCUFDX01TR19SRVNVTFQoJGNmX2N2X3R5cGVfb2ZfYm9vbCkKIAkJZmkKQEAgLTE0MzUsOTkgKzE2OTksNDQgQEAKIGRubCBsaWJ0b29sIGRvZXMgbm90IGtub3cgYW55dGhpbmcgYWJvdXQgR05BVCwgdGhvdWdoIGEgY2hhbmdlIG1hZGUgaW4gMTk5OAogZG5sIHByb3ZpZGVkIGZvciBpdCAic29tZWRheSIuICBEaXNhYmxlIHRoZSBhZGEgc3VidHJlZSBpZiB3ZSBhcmUgdXNpbmcKIGRubCBsaWJ0b29sIC1URCAyMDA3MDcxNAotaWYgdGVzdCAiJGNmX3dpdGhfYWRhIiAhPSAibm8iIDsgdGhlbgotICAgIGlmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJubyI7IHRoZW4KLQlBQ19NU0dfV0FSTihsaWJ0b29sIGRvZXMgbm90IHN1cHBvcnQgQWRhIC0gZGlzYWJsaW5nIGZlYXR1cmUpCi0JY2Zfd2l0aF9hZGE9bm8KLSAgICBmaQotZmkKKwlpZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCisJCWlmIHRlc3QgIiR3aXRoX2xpYnRvb2wiICE9ICJubyI7IHRoZW4KKwkJCUFDX01TR19XQVJOKGxpYnRvb2wgZG9lcyBub3Qgc3VwcG9ydCBBZGEgLSBkaXNhYmxpbmcgZmVhdHVyZSkKKwkJCWNmX3dpdGhfYWRhPW5vCisJCWZpCisJZmkKIAogZG5sIENoZWNrIGZvciBhdmFpbGFiaWxpdHkgb2YgR05VIEFkYSBUcmFuc2xhdG9yIChHTkFUKS4KIGRubCBBdCB0aGUgbW9tZW50IHdlIHN1cHBvcnQgbm8gb3RoZXIgQWRhOTUgY29tcGlsZXIuCi1pZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgOyB0aGVuCi1jZl9hZGFfbWFrZT1nbmF0bWFrZQotQUNfQ0hFQ0tfUFJPRyhnbmF0X2V4aXN0cywgJGNmX2FkYV9tYWtlLCB5ZXMsIG5vKQotaWYgdGVzdCAiJGFjX2N2X3Byb2dfZ25hdF9leGlzdHMiID0gbm87IHRoZW4KLSAgIGNmX2FkYV9tYWtlPQorCWlmIHRlc3QgIiRjZl93aXRoX2FkYSIgIT0gIm5vIiA7IHRoZW4KKwkJQ0ZfUFJPR19HTkFUCisJCWlmIHRlc3QJIngkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0geHllczsgdGhlbgorCQkJQ0ZfQUREX0FEQUZMQUdTKC1nbmF0cG4pCisJCQlDRl9GSVhVUF9BREFGTEFHUworCisJCQlDRl9HTkFUUFJFUF9PUFRfVAorCisJCQlDRl9HTkFUX0dFTkVSSUNTCisJCQlDRl9HTkFUX1NJR0lOVAorCQkJQ0ZfR05BVF9QUk9KRUNUUworCisJCQlDRl9XSVRIX0FEQV9DT01QSUxFUgorCisJCQljZl9hZGFfcGFja2FnZT10ZXJtaW5hbF9pbnRlcmZhY2UKKwkJCUFDX1NVQlNUKGNmX2FkYV9wYWNrYWdlKQorCisJCQlDRl9XSVRIX0FEQV9JTkNMVURFCisJCQlDRl9XSVRIX0FEQV9PQkpFQ1RTCisJCQlDRl9XSVRIX0FEQV9TSEFSRURMSUIKKwkJZmkKKwlmaQogZWxzZQotICAgQ0ZfR05BVF9WRVJTSU9OCi0gICBBQ19DSEVDS19QUk9HKE00X2V4aXN0cywgbTQsIHllcywgbm8pCi0gICBpZiB0ZXN0ICIkYWNfY3ZfcHJvZ19NNF9leGlzdHMiID0gbm87IHRoZW4KLSAgICAgIGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0PW5vCi0gICAgICBlY2hvIEFkYTk1IGJpbmRpbmcgcmVxdWlyZWQgcHJvZ3JhbSBtNCBub3QgZm91bmQuIEFkYTk1IGJpbmRpbmcgZGlzYWJsZWQuCi0gICBmaQotICAgaWYgdGVzdCAiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9IHllczsgdGhlbgotICAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIEdOQVQgd29ya3MpCi0gICAgICBDRl9HTkFUX1RSWV9SVU4oW3Byb2NlZHVyZSBjb25mdGVzdDtdLAotW3dpdGggVGV4dF9JTzsKLXdpdGggR05BVC5PU19MaWI7Ci1wcm9jZWR1cmUgY29uZnRlc3QgaXMKLWJlZ2luCi0gICBUZXh0X0lPLlB1dCAoIkhlbGxvIFdvcmxkIik7Ci0gICBUZXh0X0lPLk5ld19MaW5lOwotICAgR05BVC5PU19MaWIuT1NfRXhpdCAoMCk7Ci1lbmQgY29uZnRlc3Q7XSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9eWVzXSxbY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9bm9dKQotICAgICAgQUNfTVNHX1JFU1VMVCgkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QpCi0gICBmaQorCWNmX3dpdGhfYWRhPW5vCiBmaQotaWYgdGVzdAkiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiA9IHllczsgdGhlbgotICAgQURBRkxBR1M9Ii1PMyAtZ25hdHBuICRBREFGTEFHUyIKIAotICAgQUNfTVNHX0NIRUNLSU5HKGlmIEdOQVQgcHJhZ21hIFVucmVmZXJlbmNlZCB3b3JrcykKLSAgIENGX0dOQVRfVFJZX0xJTksoW3Byb2NlZHVyZSBjb25mdGVzdDtdLAotW3dpdGggVGV4dF9JTzsKLXdpdGggR05BVC5PU19MaWI7Ci1wcm9jZWR1cmUgY29uZnRlc3QgaXMKLSAgIHRlc3QgOiBJbnRlZ2VyOwotICAgcHJhZ21hIFVucmVmZXJlbmNlZCAodGVzdCk7Ci1iZWdpbgotICAgdGVzdCA6PSAxOwotICAgVGV4dF9JTy5QdXQgKCJIZWxsbyBXb3JsZCIpOwotICAgVGV4dF9JTy5OZXdfTGluZTsKLSAgIEdOQVQuT1NfTGliLk9TX0V4aXQgKDApOwotZW5kIGNvbmZ0ZXN0O10sW2NmX2N2X3ByYWdtYV91bnJlZmVyZW5jZWQ9eWVzXSxbY2ZfY3ZfcHJhZ21hX3VucmVmZXJlbmNlZD1ub10pCi0gICBBQ19NU0dfUkVTVUxUKCRjZl9jdl9wcmFnbWFfdW5yZWZlcmVuY2VkKQotCi0gICAjIGlmIHRoZSBwcmFnbWEgaXMgc3VwcG9ydGVkLCB1c2UgaXQgKG5lZWRlZCBpbiB0aGUgVHJhY2UgY29kZSkuCi0gICBpZiB0ZXN0ICRjZl9jdl9wcmFnbWFfdW5yZWZlcmVuY2VkID0geWVzIDsgdGhlbgotICAgICAgUFJBR01BX1VOUkVGPVRSVUUKLSAgIGVsc2UKLSAgICAgIFBSQUdNQV9VTlJFRj1GQUxTRQotICAgZmkKLQotICAgQUNfQVJHX1dJVEgoYWRhLWNvbXBpbGVyLAotCVsgIC0td2l0aC1hZGEtY29tcGlsZXI9Q01EIHNwZWNpZnkgQWRhOTUgY29tcGlsZXIgY29tbWFuZCAoZGVmYXVsdCBnbmF0bWFrZSldLAotCVtjZl9hZGFfY29tcGlsZXI9JHdpdGh2YWxdLAotCVtjZl9hZGFfY29tcGlsZXI9Z25hdG1ha2VdKQotCi0gICBjZl9hZGFfcGFja2FnZT10ZXJtaW5hbF9pbnRlcmZhY2UKLQotICAgQUNfU1VCU1QoY2ZfYWRhX21ha2UpCi0gICBBQ19TVUJTVChjZl9hZGFfY29tcGlsZXIpCi0gICBBQ19TVUJTVChjZl9hZGFfcGFja2FnZSkKLSAgIEFDX1NVQlNUKEFEQUZMQUdTKQotICAgQUNfU1VCU1QoY2ZfY29tcGlsZV9nZW5lcmljcykKLSAgIEFDX1NVQlNUKGNmX2dlbmVyaWNfb2JqZWN0cykKLSAgIEFDX1NVQlNUKFBSQUdNQV9VTlJFRikKLQotICAgQ0ZfV0lUSF9QQVRIKGFkYS1pbmNsdWRlLAotICAgICAgIFsgIC0td2l0aC1hZGEtaW5jbHVkZT1ESVIgIEFkYSBpbmNsdWRlcyBhcmUgaW4gRElSXSwKLSAgICAgICBBREFfSU5DTFVERSwKLSAgICAgICBQUkVGSVgvbGliL2FkYS9hZGFpbmNsdWRlLAotICAgICAgIFskXXByZWZpeC9saWIvYWRhL2FkYWluY2x1ZGUpCi0gICBBQ19TVUJTVChBREFfSU5DTFVERSkKLQotICAgQ0ZfV0lUSF9QQVRIKGFkYS1vYmplY3RzLAotICAgICAgIFsgIC0td2l0aC1hZGEtb2JqZWN0cz1ESVIgIEFkYSBvYmplY3RzIGFyZSBpbiBESVJdLAotICAgICAgIEFEQV9PQkpFQ1RTLAotICAgICAgIFBSRUZJWC9saWIvYWRhL2FkYWxpYiwKLSAgICAgICBbJF1wcmVmaXgvbGliL2FkYS9hZGFsaWIpCi0gICBBQ19TVUJTVChBREFfT0JKRUNUUykKLQotZmkKLWZpCi1lbHNlCi0gICBjZl93aXRoX2FkYT1ubworIyBkbyB0aGlzICJsYXRlIiB0byBhdm9pZCBjb25mbGljdCB3aXRoIGhlYWRlci1jaGVja3MKK2lmIHRlc3QgIngkd2l0aF93aWRlYyIgPSB4eWVzIDsgdGhlbgorCUFDX0NIRUNLX1NJWkVPRih3Y2hhcl90KQogZmkKIAogIyMjIENvbnN0cnVjdCB0aGUgbmN1cnNlcyBsaWJyYXJ5LXN1YnNldHMsIGlmIGFueSwgZnJvbSB0aGlzIHNldCBvZiBrZXl3b3JkczoKQEAgLTE1NDMsNyArMTc1Miw3IEBACiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGxpYnJhcnkgc3Vic2V0cykKIExJQl9TVUJTRVRTPQogCi1pZiB0ZXN0ICIkY2Zfd2l0aF9wcm9ncyIgPSB5ZXMgfHwgdGVzdCAiJHdpdGhfdGljbGliIiAhPSBubyB8fCB0ZXN0ICIkd2l0aF90ZXJtY2FwIiAhPSBubzsgdGhlbgoraWYgdGVzdCAieCRjZl93aXRoX3Byb2dzIiA9IHh5ZXMgfHwgdGVzdCAiJHdpdGhfdGljbGliIiAhPSBubyB8fCB0ZXN0ICIkd2l0aF90ZXJtY2FwIiAhPSBubzsgdGhlbgogCUxJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfXRpY2xpYiIKIAlpZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgogCQlMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30gIgpAQCAtMTU1Myw3ICsxNzYyLDggQEAKIGZpCiAKIExJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfXRlcm1saWIiCi10ZXN0ICIkd2l0aF9leHRfZnVuY3MiID0geWVzICYmIExJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStleHRfdGluZm8iCit0ZXN0ICJ4JHdpdGhfZXh0X2Z1bmNzIiA9IHh5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K2V4dF90aW5mbyIKKwogaWYgdGVzdCAiJHdpdGhfdGVybWxpYiIgIT0gbm8gOyB0aGVuCiAJTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9ICIKIGVsc2UKQEAgLTE1NjEsOCArMTc3MSwyNCBAQAogZmkKIAogTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9YmFzZSIKLXRlc3QgIiR3aXRoX3dpZGVjIiAgICAgPSB5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K3dpZGVjaGFyIgotdGVzdCAiJHdpdGhfZXh0X2Z1bmNzIiA9IHllcyAmJiBMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30rZXh0X2Z1bmNzIgorCisjIE1vc3QgdGVybS1kcml2ZXIgY2FsbHMgYXJlIHRvIHRpbmZvLCBidXQgc29tZSBsaWtlIGluaXRfcGFpciBhcmUgdG8gdGhlCisjIGJhc2UgbGlicmFyeSAoc28gaXQgcmVzaWRlcyBpbiBiYXNlKS4KK2lmIHRlc3QgIiR3aXRoX3Rlcm1fZHJpdmVyIiAhPSBubyA7IHRoZW4KKwlMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30rcG9ydF9kcml2ZXJzIgorCWNhc2UgJGNmX2N2X3N5c3RlbV9uYW1lIGluCisJKCptaW5ndzMyKnwqbWluZ3c2NCopCisJCUxJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStwb3J0X3RpbmZvK3BvcnRfd2luMzJjb24iCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURVU0VfV0lOMzJDT05fRFJJVkVSIgorCQk7OworCSgqKQorCQlMSUJfU1VCU0VUUz0iJHtMSUJfU1VCU0VUU30rcG9ydF90aW5mbyIKKwkJOzsKKwllc2FjCitmaQorCit0ZXN0ICJ4JHdpdGhfd2lkZWMiICAgICA9IHh5ZXMgJiYgTElCX1NVQlNFVFM9IiR7TElCX1NVQlNFVFN9K3dpZGVjaGFyIgordGVzdCAieCR3aXRoX2V4dF9mdW5jcyIgPSB4eWVzICYmIExJQl9TVUJTRVRTPSIke0xJQl9TVUJTRVRTfStleHRfZnVuY3MiCiAKIEFDX01TR19SRVNVTFQoJExJQl9TVUJTRVRTKQogCkBAIC0xNTg2LDIwICsxODEyLDI0IEBACiBBQ19TVUJTVChERlRfT0JKX1NVQkRJUilkbmwgdGhlIGRlZmF1bHQgb2JqZWN0LWRpcmVjdG9yeSAoIm9iaiIpCiBBQ19NU0dfUkVTVUxUKCRERlRfT0JKX1NVQkRJUikKIAotIyBsaWJ0b29sIHRoaW5rcyBpdCBjYW4gbWFrZSBjKysgc2hhcmVkIGxpYnJhcmllcyAocGVyaGFwcyBvbmx5IGcrKykKLWlmIHRlc3QgIiRjZl93aXRoX2N4eCIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JGNmX3dpdGhfY3h4IiA9IHh5ZXMgOyB0aGVuCiBBQ19NU0dfQ0hFQ0tJTkcoYysrIGxpYnJhcnktZGVwZW5kZW5jeSBzdWZmaXgpCiBpZiB0ZXN0ICIkd2l0aF9saWJ0b29sIiAhPSAibm8iOyB0aGVuCisJIyBsaWJ0b29sIHRoaW5rcyBpdCBjYW4gbWFrZSBjKysgc2hhcmVkIGxpYnJhcmllcyAocGVyaGFwcyBvbmx5IGcrKykKKwlDWFhfTElCX1NVRkZJWD0kREZUX0RFUF9TVUZGSVgKK2VsaWYgdGVzdCAiJHdpdGhfc2hhcmVkX2N4eCIgIT0gIm5vIjsgdGhlbgorCSMgYWxzbyBmb3IgZysrIHVzZXJzLi4uCiAJQ1hYX0xJQl9TVUZGSVg9JERGVF9ERVBfU1VGRklYCiBlbHNlCi0JQ0ZfTElCX1NVRkZJWChub3JtYWwsQ1hYX0xJQl9TVUZGSVgsQ1hYX0RFUF9TVUZGSVgpZG5sIHdlIG5vcm1hbGx5IG1ha2UgYSBzdGF0aWMgbGlicmFyeQorCSMgd2Ugbm9ybWFsbHkgbWFrZSBhIHN0YXRpYyBsaWJyYXJ5IGJlY2F1c2UgQy9DKysgbGlicmFyeSBydWxlcyBkaWZmZXIKKwlDRl9MSUJfU1VGRklYKG5vcm1hbCxDWFhfTElCX1NVRkZJWCxDWFhfREVQX1NVRkZJWCkKIGZpCiBBQ19NU0dfUkVTVUxUKCRDWFhfTElCX1NVRkZJWCkKIEFDX1NVQlNUKENYWF9MSUJfU1VGRklYKQogZmkKIAogIyBkbyBub3Qgd2FudCAtbGRsIGluIGJ1aWxkIGV4Y2VwdCBhcyBuZWVkZWQgZm9yIC1sbmN1cnNlcyBkZXBlbmRlbmN5Ci1pZiB0ZXN0ICIkd2l0aF9kbHN5bSIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JHdpdGhfZGxzeW0iID0geHllcyA7IHRoZW4KIGlmIHRlc3QgJERGVF9MV1JfTU9ERUwgPSBzaGFyZWQgfHwgXAogICAgdGVzdCAkREZUX0xXUl9NT0RFTCA9IGxpYnRvb2wgOyB0aGVuCiAJQ0ZfUkVNT1ZFX0xJQihMSUJTLCRMSUJTLGRsKQpAQCAtMTYxMCw0NCArMTg0MCw1OCBAQAogIyBUSUNTX0xJU1QgYW5kIFRJTkZPX0xJU1QgYXJlIG5lZWRlZCB0byBidWlsZCBsaWJ0aWMuc28gYW5kIGxpYnRlcm0uc28sIGJ1dAogIyBkbyBub3QgbmVlZCBsaWJkbAogVElDU19MSVNUPQotaWYgdGVzdCAiJHdpdGhfZGxzeW0iID0geWVzIDsgdGhlbgoraWYgdGVzdCAieCR3aXRoX2Rsc3ltIiA9IHh5ZXMgOyB0aGVuCiAJQ0ZfUkVNT1ZFX0xJQihUSU5GT19MSVNULCRTSExJQl9MSVNULGRsKQogZmkKIAorVVNFX0FSR19TVUZGSVg9IiR7REZUX0FSR19TVUZGSVh9JHtFWFRSQV9TVUZGSVh9IgorVVNFX0xJQl9TVUZGSVg9IiR7TElCX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCitVU0VfQ0ZHX1NVRkZJWD0ke0RGVF9BUkdfU1VGRklYfSR7Y2ZfY3ZfYWJpX3ZlcnNpb259CitpZiB0ZXN0IC1uICIkRVhUUkFfU1VGRklYIiAmJiB0ZXN0ICJ4JEVYVFJBX1NVRkZJWCIgIT0gIngke2NmX2N2X2FiaV92ZXJzaW9ufSIKK3RoZW4KKwlVU0VfQ0ZHX1NVRkZJWD0iJHtVU0VfQ0ZHX1NVRkZJWH0ke0VYVFJBX1NVRkZJWH0iCitmaQorQUNfU1VCU1QoVVNFX0FSR19TVUZGSVgpCitBQ19TVUJTVChVU0VfQ0ZHX1NVRkZJWCkKK0FDX1NVQlNUKFVTRV9MSUJfU1VGRklYKQorCiBpZiB0ZXN0ICIkd2l0aF90aWNsaWIiICE9IG5vIDsgdGhlbgogCi0JaWYgdGVzdCAiJHdpdGhfdGljbGliIiAhPSB5ZXMgOyB0aGVuCisJaWYgdGVzdCAieCR3aXRoX3RpY2xpYiIgIT0geHllcyA7IHRoZW4KIAkJVElDU19OQU1FPSR3aXRoX3RpY2xpYgotCQlUSUNTX0FSR19TVUZGSVg9IiR7d2l0aF90aWNsaWJ9YGVjaG8gJHtERlRfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElDU19BUkdfU1VGRklYPSIke3dpdGhfdGljbGlifWBlY2hvICR7VVNFX0FSR19TVUZGSVh9fHNlZCAtZSAicy9eJHtMSUJfU1VGRklYfS8vImAiCiAJCVRJQ1NfREVQX1NVRkZJWD0iJHt3aXRoX3RpY2xpYn1gZWNobyAke0RGVF9ERVBfU1VGRklYfXxzZWQgLWUgInMvXiR7TElCX1NVRkZJWH0vLyJgIgogCQlUSUNTX0xJQl9TVUZGSVg9IiR7d2l0aF90aWNsaWJ9IgogCWVsc2UKLQkJVElDU19BUkdfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0RGVF9BUkdfU1VGRklYfSIKKwkJVElDU19BUkdfU1VGRklYPSIke1RJQ1NfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSIKIAkJVElDU19ERVBfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0RGVF9ERVBfU1VGRklYfSIKLQkJVElDU19MSUJfU1VGRklYPSIke1RJQ1NfTkFNRX0ke0xJQl9TVUZGSVh9IgorCQlUSUNTX0xJQl9TVUZGSVg9IiR7VElDU19OQU1FfSR7VVNFX0xJQl9TVUZGSVh9IgogCWZpCi0JVElDU19BUkdTPSItTCR7TElCX0RJUn0gLWwke1RJQ1NfTElCX1NVRkZJWH0iCisJVElDU19MREZMQUdTPSItTCR7TElCX0RJUn0iCisJVElDU19MSUJTPSItbCR7VElDU19MSUJfU1VGRklYfSIKIGVsc2UKLQlUSUNTX0FSR1M9Ii1MJHtMSUJfRElSfSAtbCR7TElCX05BTUV9JHtERlRfQVJHX1NVRkZJWH0iCisJVElDU19MREZMQUdTPSItTCR7TElCX0RJUn0iCisJVElDU19MSUJTPSItbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0iCiBmaQogQUNfU1VCU1QoVElDU19BUkdfU1VGRklYKQogQUNfU1VCU1QoVElDU19ERVBfU1VGRklYKQogQUNfU1VCU1QoVElDU19MSUJfU1VGRklYKQotQUNfU1VCU1QoVElDU19BUkdTKQorQUNfU1VCU1QoVElDU19MREZMQUdTKQorQUNfU1VCU1QoVElDU19MSUJTKQogCiBpZiB0ZXN0ICIkd2l0aF90ZXJtbGliIiAhPSBubyA7IHRoZW4KIAotCWlmIHRlc3QgIiR3aXRoX3Rlcm1saWIiICE9IHllcyA7IHRoZW4KKwlpZiB0ZXN0ICJ4JHdpdGhfdGVybWxpYiIgIT0geHllcyA7IHRoZW4KIAkJVElORk9fTkFNRT0kd2l0aF90ZXJtbGliCi0JCVRJTkZPX1NVRkZJWD0iYGVjaG8gJHtERlRfTElCX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKLQkJVElORk9fQVJHX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtERlRfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElORk9fU1VGRklYPSJgZWNobyAke0RGVF9MSUJfU1VGRklYfXxzZWQgLWUgInMvXiR7VVNFX0xJQl9TVUZGSVh9Ly8iYCIKKwkJVElORk9fQVJHX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtVU0VfQVJHX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKIAkJVElORk9fREVQX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9YGVjaG8gJHtERlRfREVQX1NVRkZJWH18c2VkIC1lICJzL14ke0xJQl9TVUZGSVh9Ly8iYCIKIAkJVElORk9fTElCX1NVRkZJWD0iJHt3aXRoX3Rlcm1saWJ9IgogCWVsc2UKIAkJVElORk9fU1VGRklYPSR7REZUX0xJQl9TVUZGSVh9Ci0JCVRJTkZPX0FSR19TVUZGSVg9IiR7VElORk9fTkFNRX0ke0RGVF9BUkdfU1VGRklYfSIKKwkJVElORk9fQVJHX1NVRkZJWD0iJHtUSU5GT19OQU1FfSR7VVNFX0FSR19TVUZGSVh9IgogCQlUSU5GT19ERVBfU1VGRklYPSIke1RJTkZPX05BTUV9JHtERlRfREVQX1NVRkZJWH0iCi0JCVRJTkZPX0xJQl9TVUZGSVg9IiR7VElORk9fTkFNRX0ke0xJQl9TVUZGSVh9IgorCQlUSU5GT19MSUJfU1VGRklYPSIke1RJTkZPX05BTUV9JHtVU0VfTElCX1NVRkZJWH0iCiAJZmkKIAogCVRFU1RfREVQUz0iJHtMSUJfRElSfS8ke0xJQl9QUkVGSVh9JHtUSU5GT19ERVBfU1VGRklYfSIKQEAgLTE2NTUsMzIgKzE4OTksNDMgQEAKIAlpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSAibGlidG9vbCI7IHRoZW4KIAkJVEVTVF9BUkdTPSIke1RFU1RfREVQU30iCiAJCVRFU1RfQVJHMj0iJHtURVNUX0RFUDJ9IgotCQlUSU5GT19BUkdTPSItTCR7TElCX0RJUn0gJFRFU1RfQVJHUyIKKwkJVElORk9fTERGTEFHUz0iLUwke0xJQl9ESVJ9IgorCQlUSU5GT19MSUJTPSIkVEVTVF9BUkdTIgorCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUICRURVNUX0FSR1MiCisJCVNITElCX0xJU1Q9IiR7U0hMSUJfTElTVH0gJFRFU1RfQVJHUyIKIAllbHNlCiAJCVRFU1RfQVJHUz0iLWwke1RJTkZPX0FSR19TVUZGSVh9IgogCQlURVNUX0FSRzI9Ii1sJHtUSU5GT19BUkdfU1VGRklYfSIKLQkJVElDU19MSVNUPSIkU0hMSUJfTElTVCAtbCR7VElORk9fTElCX1NVRkZJWH0iCi0JCVRJTkZPX0FSR1M9Ii1MJHtMSUJfRElSfSAkVEVTVF9BUkdTIgorCQlpZiB0ZXN0ICJ4JHdpdGhfdGVybV9kcml2ZXIiICE9IHhubyA7IHRoZW4KKwkJCVRJQ1NfTElTVD0iJFNITElCX0xJU1QgLWwke0xJQl9OQU1FfSR7VVNFX0FSR19TVUZGSVh9IgorCQkJVElDU19MSUJTPSIkVElDU19MSUJTIC1sJHtMSUJfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSIKKwkJCVRJTkZPX0xJQlM9Ii1sJHtMSUJfTkFNRX0ke1VTRV9BUkdfU1VGRklYfSAkVEVTVF9BUkdTIgorCQllbHNlCisJCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUIC1sJHtUSU5GT19MSUJfU1VGRklYfSIKKwkJCVRJTkZPX0xJQlM9IiRURVNUX0FSR1MiCisJCWZpCisJCVRJTkZPX0xERkxBR1M9Ii1MJHtMSUJfRElSfSIKIAkJU0hMSUJfTElTVD0iJFNITElCX0xJU1QgLWwke1RJTkZPX0xJQl9TVUZGSVh9IgogCWZpCiBlbHNlCiAJIyB0aGUgbmV4dCBsaW5lcyBhcmUgbmVlZGVkIGZvciBsaW5raW5nIGxpYnRpYyBvdmVyIGxpYm5jdXJzZXMKIAlUSU5GT19OQU1FPSR7TElCX05BTUV9CiAJVElORk9fU1VGRklYPSR7REZUX0xJQl9TVUZGSVh9Ci0JVElORk9fQVJHX1NVRkZJWD0ke0xJQl9OQU1FfSR7REZUX0FSR19TVUZGSVh9Ci0JaWYgdGVzdCAiJHdpdGhfdGljX2RlcGVuZHMiID0geWVzIDsgdGhlbgotCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUIC1sJHtMSUJfTkFNRX0ke0RGVF9BUkdfU1VGRklYfSIKKwlUSU5GT19BUkdfU1VGRklYPSR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0KKwlpZiB0ZXN0ICJ4JHdpdGhfdGljX2RlcGVuZHMiID0geHllcyA7IHRoZW4KKwkJVElDU19MSVNUPSIkU0hMSUJfTElTVCAtbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0iCiAJZWxzZQogCQlUSUNTX0xJU1Q9IiRTSExJQl9MSVNUIgogCWZpCiAKLQlUSU5GT19BUkdTPSItTCR7TElCX0RJUn0gLWwke0xJQl9OQU1FfSR7REZUX0FSR19TVUZGSVh9IgorCVRJTkZPX0xERkxBR1M9Ii1MJHtMSUJfRElSfSIKKwlUSU5GT19MSUJTPSItbCR7TElCX05BTUV9JHtVU0VfQVJHX1NVRkZJWH0iCiBmaQogCiBpZiB0ZXN0ICIkREZUX0xXUl9NT0RFTCIgPSBzaGFyZWQgOyB0aGVuCi0JY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4gIyh2aQotCWN5Z3dpbiopCi0JCSMgImxpYiIgZmlsZXMgaGF2ZSAiLmRsbC5hIiBzdWZmaXgsICJjeWciIGZpbGVzIGhhdmUgIi5kbGwiCisJY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKwkoY3lnd2luKnxtc3lzKikKKwkJIyAibGliIiBmaWxlcyBoYXZlICIuZGxsLmEiIHN1ZmZpeCwgImN5ZyJvciAibXN5cy0iIGZpbGVzIGhhdmUgIi5kbGwiCiAJCVRJTkZPX1NVRkZJWD0uZGxsCiAJCTs7CiAJZXNhYwpAQCAtMTY4OSwzMSArMTk0NCwzNyBAQAogQUNfU1VCU1QoVElORk9fQVJHX1NVRkZJWCkKIEFDX1NVQlNUKFRJTkZPX0RFUF9TVUZGSVgpCiBBQ19TVUJTVChUSU5GT19MSUJfU1VGRklYKQotQUNfU1VCU1QoVElORk9fQVJHUykKK0FDX1NVQlNUKFRJTkZPX0xERkxBR1MpCitBQ19TVUJTVChUSU5GT19MSUJTKQogCi1pZiB0ZXN0ICIkd2l0aF9kbHN5bSIgPSB5ZXMgOyB0aGVuCitpZiB0ZXN0ICJ4JHdpdGhfZGxzeW0iID0geHllcyA7IHRoZW4KIAlDRl9SRU1PVkVfTElCKFRJQ1NfTElTVCwkVElDU19MSVNULGRsKQogZmkKIAogaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gImxpYnRvb2wiOyB0aGVuCi0gICAgT0JKRVhUPWxvCisJT0JKRVhUPWxvCiBmaQogCiAjIG5lZWRlZCBmb3IgQWRhOTUKLVRJTkZPX0FSR1MyPWBlY2hvICIkVElORk9fQVJHUyIgfCBzZWQgLWUgJ3MsLUxcLlwuLywtTC4uLy4uLywnYAotQUNfU1VCU1QoVElORk9fQVJHUzIpCitUSU5GT19MREZMQUdTMj1gZWNobyAiJFRJTkZPX0xERkxBR1MiIHwgc2VkIC1lICdzLC1MXC5cLi8sLUwuLi8uLi8sJ2AKK0FDX1NVQlNUKFRJTkZPX0xERkxBR1MyKQogCiBjYXNlICRERlRfTFdSX01PREVMIGluCi1ub3JtYWx8ZGVidWd8cHJvZmlsZSkKKyhub3JtYWx8ZGVidWd8cHJvZmlsZSkKIAlDRl9MREZMQUdTX1NUQVRJQwogCTs7CiBlc2FjCiAKIEFDX01TR19DSEVDS0lORyh3aGVyZSB3ZSB3aWxsIGluc3RhbGwgY3Vyc2VzLmgpCi10ZXN0ICIkd2l0aF9vdmVyd3JpdGUiID0gbm8gJiYgXAotdGVzdCAieCRpbmNsdWRlZGlyIiA9ICd4JHtwcmVmaXh9L2luY2x1ZGUnICYmIFwKLQlpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZS9uY3Vyc2VzJyR7TElCX1NVRkZJWH0KLUFDX01TR19SRVNVTFQoJGluY2x1ZGVkaXIpCitBQ19TVUJTVChpbmNsdWRlc3ViZGlyKQoraW5jbHVkZXN1YmRpcj0KK2lmIHRlc3QgIiR3aXRoX292ZXJ3cml0ZSIgPSBubyAmJiBcCisgKCB0ZXN0ICJ4JGluY2x1ZGVkaXIiID0gJ3gke3ByZWZpeH0vaW5jbHVkZScgfHwgXAorICAgdGVzdCAieCRpbmNsdWRlZGlyIiA9ICJ4JHtwcmVmaXh9L2luY2x1ZGUiICkKK3RoZW4KKwlpbmNsdWRlc3ViZGlyPSIvbmN1cnNlcyR7VVNFX0xJQl9TVUZGSVh9IgorZmkKK0FDX01TR19SRVNVTFQoJHtpbmNsdWRlZGlyfSR7aW5jbHVkZXN1YmRpcn0pCiAKICMjIyBSZXNvbHZlIGEgY29uZmxpY3QgYmV0d2VlbiBub3JtYWwgYW5kIHdpZGUtY3Vyc2VzIGJ5IGZvcmNpbmcgYXBwbGljYXRpb25zCiAjIyMgdGhhdCB3aWxsIG5lZWQgbGlidXRmOCB0byBhZGQgaXQgdG8gdGhlaXIgY29uZmlndXJlIHNjcmlwdC4KQEAgLTE3MjMsNiArMTk4NCw3IEBACiAJQUNfTVNHX1dBUk4oV2lkZS1jaGFyYWN0ZXIgYXBwbGljYXRpb25zIG11c3QgZGVmaW5lIEhBVkVfTElCVVRGOF9IIHRvIGluY2x1ZGUgY3Vyc2VzLmgpCiBmaQogZmkKK1dJVEhfT1ZFUldSSVRFPSR3aXRoX292ZXJ3cml0ZQogCiBBQ19TVUJTVChXSVRIX09WRVJXUklURSkKIEFDX1NVQlNUKFRJQ1NfTElTVCkKQEAgLTE3MzQsNjEgKzE5OTYsMjI5IEBACiBBQ19TVUJTVChOQ1VSU0VTX1RSRUUpCiAKICMjIyBwcmVkZWZpbmVkIHN0dWZmIGZvciB0aGUgdGVzdCBwcm9ncmFtcwotQUNfREVGSU5FKEhBVkVfU0xLX0NPTE9SKQorQUNfREVGSU5FKEhBVkVfU0xLX0NPTE9SLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgc2xrX2NvbG9yIGZvciB0ZXN0LXByb2dyYW1zXSkKIAogIyMjIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyBmb3Igd2hpY2ggd2UnbGwgY3VzdG9taXplIG1ha2VmaWxlcwogIyMjIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGUtcnVsZXMuCiAKIENGX1NSQ19NT0RVTEVTKCRtb2R1bGVzX3RvX2J1aWxkKQogCi1pZiB0ZXN0ICIkY2Zfd2l0aF9hZGEiICE9ICJubyIgJiYgdGVzdCAiJGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0IiAhPSAibm8iOyB0aGVuCi0gICBTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBBZGE5NS9nZW4vYWRhY3Vyc2VzLWNvbmZpZyIKK2lmIHRlc3QgIngkY2Zfd2l0aF9hZGEiID0gInh5ZXMiICYmIHRlc3QgIngkY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3QiID0gInh5ZXMiOyB0aGVuCisgICBTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBBZGE5NS9nZW4vYWRhY3Vyc2VzJHtVU0VfQ0ZHX1NVRkZJWH0tY29uZmlnOkFkYTk1L2dlbi9hZGFjdXJzZXMtY29uZmlnLmluIgorICAgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWFuL2FkYWN1cnNlcyR7VVNFX0NGR19TVUZGSVh9LWNvbmZpZy4xOm1hbi9NS2FkYV9jb25maWcuaW4iCiBmaQogCiBDRl9ESVJTX1RPX01BS0UKIAotQUNfREVGSU5FX1VOUVVPVEVEKE5DVVJTRVNfUEFUSFNFUCwnJFBBVEhTRVAnKQorIyBzeW1ib2xzIHRoYXQgZGlmZmVyIHdoZW4gY29tcGlsaW5nIEFkYTk1IGJ5IGl0c2VsZi4KK05DVVJTRVNfU0hMSUIyPSRTSEVMTCcgJCh0b3Bfc3JjZGlyKS9taXNjL3NobGliJworQUNfU1VCU1QoTkNVUlNFU19TSExJQjIpCiAKLUFDX0RFRklORV9VTlFVT1RFRChOQ1VSU0VTX1ZFUlNJT05fU1RSSU5HLCAiJHtOQ1VSU0VTX01BSk9SfS4ke05DVVJTRVNfTUlOT1J9LiR7TkNVUlNFU19QQVRDSH0iKQorIyB2YWx1ZXMgdG8gdXNlIGFzIHN0cmluZ3MKK0FDX0RFRklORV9VTlFVT1RFRChOQ1VSU0VTX1BBVEhTRVAsJyRQQVRIX1NFUEFSQVRPUicsW0RlZmluZSB0byBvdmVycmlkZSAnOicgYXMgbGlicmFyeSBwYXRoLXNlcGFyYXRvcl0pCisKK0FDX0RFRklORV9VTlFVT1RFRChOQ1VSU0VTX1ZFUlNJT05fU1RSSU5HLCAiJHtOQ1VSU0VTX01BSk9SfS4ke05DVVJTRVNfTUlOT1J9LiR7TkNVUlNFU19QQVRDSH0iLFtEZWZpbmUgdG8gMSBpZiBtYWNoaW5lIGhhcyBhbXBsZSBtZW1vcnkgZm9yIHRpY10pCiAKICMjIyBOb3cgdGhhdCB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMsIGFkZCB0aGUgY29tcGlsZXItd2FybmluZ3MsIGlmIGFueQogQ0ZfQUREX0NGTEFHUygkRVhUUkFfQ0ZMQUdTKQogCi0jIyMgSWYgd2UncmUgYnVpbGRpbmcgd2l0aCBycGF0aCwgdHJ5IHRvIGxpbmsgbm9uLXN0YW5kYXJkIGxpYnMgdGhhdCB3YXkgdG9vLgotaWYgdGVzdCAiJERGVF9MV1JfTU9ERUwiID0gInNoYXJlZCI7IHRoZW4KLSAgQ0ZfUlBBVEhfSEFDSwotZmkKLQogIyMjIERlZmluZSBzdWJzdGl0dXRpb25zIGZvciBoZWFkZXIgZmlsZXMgdG8gYXZvaWQgbmFtZS1wb2xsdXRpb24KLUNGX1NVQlNUX0lGKFsiJGNmX2N2X2hhdmVfdGNnZXRhdHRyIiA9IHllc10sIEhBVkVfVENHRVRBVFRSLCAxLCAwKQotQ0ZfU1VCU1RfSUYoWyIkYWNfY3ZfaGVhZGVyX3Rlcm1pb19oIiA9IHllc10sIEhBVkVfVEVSTUlPX0gsIDEsIDApCi1DRl9TVUJTVF9JRihbIiRhY19jdl9oZWFkZXJfdGVybWlvc19oIiA9IHllc10sIEhBVkVfVEVSTUlPU19ILCAxLCAwKQorQ0ZfU1VCU1RfSUYoWyJ4JGNmX2N2X2hhdmVfdGNnZXRhdHRyIiA9IHh5ZXNdLCBIQVZFX1RDR0VUQVRUUiwgMSwgMCkKK0NGX1NVQlNUX0lGKFsieCRhY19jdl9oZWFkZXJfc3RkaW50X2giID0geHllc10sIEhBVkVfU1RESU5UX0gsIDEsIDApCitDRl9TVUJTVF9JRihbIngkYWNfY3ZfaGVhZGVyX3Rlcm1pb19oIiA9IHh5ZXNdLCBIQVZFX1RFUk1JT19ILCAxLCAwKQorQ0ZfU1VCU1RfSUYoWyJ4JGFjX2N2X2hlYWRlcl90ZXJtaW9zX2giID0geHllc10sIEhBVkVfVEVSTUlPU19ILCAxLCAwKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotdGVzdCAiJHVzZV9kYXRhYmFzZSIgPSB5ZXMgJiYgU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9ydW5fdGljLnNoOm1pc2MvcnVuX3RpYy5pbiIKK3Rlc3QgIngkdXNlX2RhdGFiYXNlIiA9IHh5ZXMgJiYgXAorU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9ydW5fdGljLnNoOm1pc2MvcnVuX3RpYy5pbiIKKwogU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWlzYy9uY3Vyc2VzLWNvbmZpZzptaXNjL25jdXJzZXMtY29uZmlnLmluIgorU1VCX01BS0VGSUxFUz0iJFNVQl9NQUtFRklMRVMgbWFuL25jdXJzZXMke1VTRV9DRkdfU1VGRklYfS1jb25maWcuMTptYW4vTUtuY3VfY29uZmlnLmluIgorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wY19maWxlcyIgPSB4eWVzIDsgdGhlbiBcCitTVUJfTUFLRUZJTEVTPSIkU1VCX01BS0VGSUxFUyBtaXNjL2dlbi1wa2djb25maWc6bWlzYy9nZW4tcGtnY29uZmlnLmluIgorTUFLRV9QQ19GSUxFUz0KK2Vsc2UKK01BS0VfUENfRklMRVM9IiMiCitmaQorQUNfU1VCU1QoTUFLRV9QQ19GSUxFUykKK0FDX1NVQlNUKGNyb3NzX2NvbXBpbGluZykKKworQUNfUEFUSF9QUk9HKFRJQ19QQVRILHRpYyx1bmtub3duLCRQQVRIOi91c3IvbG9jYWwvbmN1cnNlcy9iaW4pCitpZiB0ZXN0IC1uICIkRkFMTEJBQ0tfTElTVCIKK3RoZW4KKwlpZiB0ZXN0ICIkVElDX1BBVEgiID0gdW5rbm93bgorCXRoZW4KKwkJQUNfTVNHX1dBUk4obm8gdGljIHByb2dyYW0gZm91bmQgZm9yIGZhbGxiYWNrcykKKwlmaQorZmkKK0FDX1NVQlNUKFRJQ19QQVRIKQorCitpZiB0ZXN0ICJ4JGNmX3dpdGhfdGVzdHMiICE9IHhubyA7IHRoZW4KKwlNQUtFX1RFU1RTPQorZWxzZQorCU1BS0VfVEVTVFM9IiMiCitmaQorQUNfU1VCU1QoTUFLRV9URVNUUykKKworQURBSFRNTF9ESVI9Li4vLi4vZG9jL2h0bWwvYWRhCitBQ19TVUJTVChBREFIVE1MX0RJUikKKworIyB0aGVzZSBjb3VsZCBiZSBjb25maWd1cmFibGUsIGJ1dCBhcmUgbm90IGN1cnJlbnRseQorUEFORUxfTkFNRT1wYW5lbAorTUVOVV9OQU1FPW1lbnUKK0ZPUk1fTkFNRT1mb3JtCitDWFhfTkFNRT1uY3Vyc2VzKysKKworQUNfU1VCU1QoUEFORUxfTkFNRSkKK0FDX1NVQlNUKE1FTlVfTkFNRSkKK0FDX1NVQlNUKEZPUk1fTkFNRSkKK0FDX1NVQlNUKENYWF9OQU1FKQorCisjIHdvcmthcm91bmQgZm9yIGcrKyB2ZXJzdXMgU29sYXJpcyAoMjAxMzExMTYpCitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKHNvbGFyaXMyKikKKwljYXNlICJ4JENQUEZMQUdTIiBpbgorCSgqLURfWE9QRU5fU09VUkNFX0VYVEVOREVEKikKKwkJQ0ZfVkVSQk9TRShtb3ZpbmcgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCB0byB3b3JrIGFyb3VuZCBnKysgcHJvYmxlbSkKKwkJQ0ZMQUdTPSIkQ0ZMQUdTIC1EX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCIKKwkJQ1BQRkxBR1M9YGVjaG8gIngkQ1BQRkxBR1MiIHwgc2VkIC1lICAncy9eLi8vJyAtZSAncy8tRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQvLydgCisJCTs7CisJZXNhYworCTs7Citlc2FjCisKKyMgSGVscCB0byBhdXRvbWF0aWNhbGx5IGVuYWJsZSB0aGUgZXh0ZW5kZWQgY3Vyc2VzIGZlYXR1cmVzIHdoZW4gdXNpbmcgZWl0aGVyCisjIHRoZSAqLWNvbmZpZyBvciB0aGUgIi5wYyIgZmlsZXMgYnkgYWRkaW5nIGRlZmluZXMuCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGRlZmluZXMgdG8gYWRkIHRvIG5jdXJzZXMke1VTRV9DRkdfU1VGRklYfS1jb25maWcgc2NyaXB0KQorUEtHX0NGTEFHUz0KK2ZvciBjZl9sb29wMSBpbiAkQ1BQRkxBR1NfYWZ0ZXJfWE9QRU4KK2RvCisJY2ZfZm91bmQ9bm8KKwlmb3IgY2ZfbG9vcDIgaW4gJENQUEZMQUdTX2JlZm9yZV9YT1BFTgorCWRvCisJCWlmIHRlc3QgIngkY2ZfbG9vcDEiID0gIngkY2ZfbG9vcDIiCisJCXRoZW4KKwkJCWNmX2ZvdW5kPXllcworCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAiJGNmX2ZvdW5kIiA9IG5vICYmIFBLR19DRkxBR1M9IiRQS0dfQ0ZMQUdTICRjZl9sb29wMSIKK2RvbmUKK0FDX01TR19SRVNVTFQoJFBLR19DRkxBR1MpCitBQ19TVUJTVChQS0dfQ0ZMQUdTKQorCisjIEFDX0NIRUNLX1NJWkVPRiBkZW1hbmRzIGEgbGl0ZXJhbCBwYXJhbWV0ZXIsIG5vIHZhcmlhYmxlcy4gIFNvIHdlIGRvIHRoaXMuCitjYXNlICJ4JE5DVVJTRVNfT1NQRUVEIiBpbgorKCpzaG9ydCopCisJY2ZfY29tcGF0aWJsZT0xCisJOzsKKygqKQorCWNmX2NvbXBhdGlibGU9MAorCTs7Citlc2FjCitBQ19ERUZJTkVfVU5RVU9URUQoTkNVUlNFU19PU1BFRURfQ09NUEFULCRjZl9jb21wYXRpYmxlLFtEZWZpbmUgdG8gMSBpZiB0ZXJtY2FwIHZhcmlhYmxlIG9zcGVlZCBpcyBzaG9ydF0pCisKK2Nhc2UgIngkY2ZfY3ZfdHlwZW9mX2NodHlwZSIgaW4KKyh4c2hvcnR8eGludHx4bG9uZykKKwljZl9jdl90eXBlb2ZfY2h0eXBlPSJ1bnNpZ25lZCAkY2ZfY3ZfdHlwZW9mX2NodHlwZSIKKwk7OworZXNhYworCitjYXNlICJ4JGNmX2N2X3R5cGVvZl9tbWFza190IiBpbgorKHhzaG9ydHx4aW50fHhsb25nKQorCWNmX2N2X3R5cGVvZl9tbWFza190PSJ1bnNpZ25lZCAkY2ZfY3ZfdHlwZW9mX21tYXNrX3QiCisJOzsKK2VzYWMKKworIyBzdWJzdGl0dXRlIGludG8gbWlzYy9NYWtlZmlsZSB0byBzdXBwcmVzcworIyAodW4paW5zdGFsbC5kYXRhIGZyb20gdGhlCisjICh1bilpbnN0YWxsIHJ1bGVzLgoraWYgdGVzdCAieCRjZl93aXRoX2RiX2luc3RhbGwiID0gInhubyI7IHRoZW4KKwlNSVNDX0lOU1RBTExfREFUQT0KKwlNSVNDX1VOSU5TVEFMTF9EQVRBPQorZWxzZQorCU1JU0NfSU5TVEFMTF9EQVRBPWluc3RhbGwuZGF0YQorCU1JU0NfVU5JTlNUQUxMX0RBVEE9dW5pbnN0YWxsLmRhdGEKK2ZpCitBQ19TVUJTVChNSVNDX0lOU1RBTExfREFUQSkKK0FDX1NVQlNUKE1JU0NfVU5JTlNUQUxMX0RBVEEpCisKK1NVQl9TQ1JJUFRTPQorCitkbmwgT3ZlcnJpZGUgdGhlIHBhY2thZ2UgdXNlZCBmb3IgZXhwb3J0ZWQgc3ltYm9scworaWYgdGVzdCAtbiAiJFBBQ0tBR0UiCit0aGVuCisJUEFDS0FHRT0iJHtQQUNLQUdFfSR7REZUX0FSR19TVUZGSVh9IgorCWV4cG9ydCBQQUNLQUdFCisJZWNobyAicGFja2FnZTogJFBBQ0tBR0UiCitmaQorCitVTkFMVEVSRURfU1lNUz0KK2NmX2ZpbHRlcl9zeW1zPW5vCisKK2lmIHRlc3QgLW4gIiRSRVNVTFRJTkdfU1lNUyIKK3RoZW4KKwljZl9maWx0ZXJfc3ltcz0kY2ZfZGZ0X2ZpbHRlcl9zeW1zCisJQ0ZfVkVSQk9TRSh3aWxsIG1hcCBzeW1ib2xzIHRvIEFCST0kY2ZfY3ZfYWJpX3ZlcnNpb24pCitmaQorCitpZiB0ZXN0ICJ4JFdJTERDQVJEX1NZTVMiID0geG5vCit0aGVuCisJY2ZfZmlsdGVyX3N5bXM9eWVzCitmaQorCitVTkFMVEVSRURfU1lNUz1gZWNobyAiJFJFU1VMVElOR19TWU1TIiB8IHNlZCAtZSAncy9cXCQvXFxcXCQvZydgCitpZiB0ZXN0ICRjZl9maWx0ZXJfc3ltcyA9IHllcwordGhlbgorCVJFU1VMVElOR19TWU1TPXJlc3VsdGluZy5tYXAKK2ZpCitBQ19TVUJTVChVTkFMVEVSRURfU1lNUykKKworaWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0geHllcyA7IHRoZW4KKwlBREFHRU5fTERGTEFHUz0nJChDUk9TU19MREZMQUdTKScKK2Vsc2UKKwlBREFHRU5fTERGTEFHUz0nJChOQVRJVkVfTERGTEFHUyknCitmaQorQUNfU1VCU1QoQURBR0VOX0xERkxBR1MpCisKIEFDX09VVFBVVCggXAogCWluY2x1ZGUvTUt0ZXJtLmguYXdrIFwKIAlpbmNsdWRlL2N1cnNlcy5oZWFkOmluY2x1ZGUvY3Vyc2VzLmguaW4gXAorCWluY2x1ZGUvbmN1cnNlc19kbGwuaCBcCiAJaW5jbHVkZS90ZXJtY2FwLmggXAogCWluY2x1ZGUvdW5jdHJsLmggXAorCSRTVUJfU0NSSVBUUyBcCiAJJFNVQl9NQUtFRklMRVMgXAogCU1ha2VmaWxlLFsKLUNGX1BSR19SVUxFUyhbJHNyY2Rpci90ZXN0L21rLXRlc3QuYXdrIEVDSE9fTElOSz0iJEVDSE9fTElOSyJdLCB0ZXN0KQoraWYgdGVzdCAieCRjZl93aXRoX3Rlc3RzIiAhPSB4bm8gOyB0aGVuCisJQ0ZfUFJHX1JVTEVTKFskc3JjZGlyL3Rlc3QvbWstdGVzdC5hd2sgSU5TVEFMTD1ubyBFQ0hPX0xJTks9IiRFQ0hPX0xEIl0sIHRlc3QpCitmaQogQ0ZfTElCX1JVTEVTKCRTUkNfU1VCRElSUykKKworaWYgdGVzdCAieCRjZl93aXRoX2FkYSIgPSAieHllcyIgJiYgdGVzdCAieCRjZl9jdl9wcm9nX2duYXRfY29ycmVjdCIgPSAieHllcyI7IHRoZW4KK2lmIHRlc3QgLXogIiRVU0VfT0xEX01BS0VSVUxFUyIgOyB0aGVuCisJJEFXSyAtZiAkc3JjZGlyL0FkYTk1L21rLTFzdC5hd2sgPCRzcmNkaXIvQWRhOTUvc3JjL21vZHVsZXMgPj5BZGE5NS9zcmMvTWFrZWZpbGUKK2ZpCitmaQogXSxbCiAjIyMgU3BlY2lhbCBpbml0aWFsaXphdGlvbiBjb21tYW5kcywgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGZyb20gdGhlCiAjIyMgY29uZmlndXJhdGlvbi1ydW4gaW50byBjb25maWcuc3RhdHVzCiAKIEFXSz0iJEFXSyIKK0FMVEVSTkFURV9TWU1TPSIkQUxURVJOQVRFX1NZTVMiCiBERlRfQVJHX1NVRkZJWD0iJERGVF9BUkdfU1VGRklYIgogREZUX0xXUl9NT0RFTD0iJERGVF9MV1JfTU9ERUwiCi1FQ0hPX0xJTks9IiRFQ0hPX0xJTksiCitFQ0hPX0xEPSIkRUNIT19MRCIKK0VYVFJBX1NVRkZJWD0iJEVYVFJBX1NVRkZJWCIKIExEQ09ORklHPSIkTERDT05GSUciCitMSUJUT09MX1ZFUlNJT049IiRMSUJUT09MX1ZFUlNJT04iCiBMSUJfTkFNRT0iJExJQl9OQU1FIgorTElCX1BSRUZJWD0iJExJQl9QUkVGSVgiCiBMSUJfU1VCU0VUUz0iJExJQl9TVUJTRVRTIgogTElCX1NVRkZJWD0iJExJQl9TVUZGSVgiCiBMSUJfVFJBQ0lORz0iJExJQl9UUkFDSU5HIgorTE5fUz0iJExOX1MiCiBNQUtFX1RFUk1JTkZPPSIkTUFLRV9URVJNSU5GTyIKIE5DVVJTRVNfTUFKT1I9IiROQ1VSU0VTX01BSk9SIgogTkNVUlNFU19NSU5PUj0iJE5DVVJTRVNfTUlOT1IiCkBAIC0xNzk2LDE1ICsyMjI2LDIyIEBACiBOQ1VSU0VTX1BBVENIPSIkTkNVUlNFU19QQVRDSCIKIFNSQ19TVUJESVJTPSIkU1JDX1NVQkRJUlMiCiBURVJNSU5GTz0iJFRFUk1JTkZPIgorVElDU19BUkdfU1VGRklYPSIkVElDU19BUkdfU1VGRklYIgorVElDU19MSUJfU1VGRklYPSIkVElDU19MSUJfU1VGRklYIgorVElDU19OQU1FPSIkVElDU19OQU1FIgorVElDX1BBVEg9IiRUSUNfUEFUSCIKIFRJTkZPX0FSR19TVUZGSVg9IiRUSU5GT19BUkdfU1VGRklYIgogVElORk9fTElCX1NVRkZJWD0iJFRJTkZPX0xJQl9TVUZGSVgiCiBUSU5GT19OQU1FPSIkVElORk9fTkFNRSIKIFRJTkZPX1NVRkZJWD0iJFRJTkZPX1NVRkZJWCIKLVRJQ1NfQVJHX1NVRkZJWD0iJFRJQ1NfQVJHX1NVRkZJWCIKLVRJQ1NfTElCX1NVRkZJWD0iJFRJQ1NfTElCX1NVRkZJWCIKLVRJQ1NfTkFNRT0iJFRJQ1NfTkFNRSIKK1VOQUxURVJFRF9TWU1TPSIkVU5BTFRFUkVEX1NZTVMiCitVU0VfQVJHX1NVRkZJWD0iJFVTRV9BUkdfU1VGRklYIgorVVNFX0NGR19TVUZGSVg9IiRVU0VfQ0ZHX1NVRkZJWCIKK1VTRV9MSUJfU1VGRklYPSIkVVNFX0xJQl9TVUZGSVgiCitVU0VfT0xEX01BS0VSVUxFUz0iJFVTRV9PTERfTUFLRVJVTEVTIgorV0lMRENBUkRfU1lNUz0iJFdJTERDQVJEX1NZTVMiCiBXSVRIX0NVUlNFU19IPSIkd2l0aF9jdXJzZXNfaCIKLVdJVEhfRUNITz0iJHdpdGhfZWNobyIKK1dJVEhfRUNITz0iJHtlbmFibGVfZWNobzo9eWVzfSIKIFdJVEhfT1ZFUldSSVRFPSIkd2l0aF9vdmVyd3JpdGUiCiBjZl9MSVNUX01PREVMUz0iJGNmX2xpc3RfbW9kZWxzIgogY2ZfY3ZfYWJpX3ZlcnNpb249IiRjZl9jdl9hYmlfdmVyc2lvbiIKQEAgLTE4MTQsMTUgKzIyNTEsMjIgQEAKIGNmX2N2X2VuYWJsZV9vcGFxdWU9IiRjZl9jdl9lbmFibGVfb3BhcXVlIgogY2ZfY3ZfcHJvZ19DQ19jX289JGNmX2N2X3Byb2dfQ0NfY19vCiBjZl9jdl9wcm9nX0NYWF9jX289JGNmX2N2X3Byb2dfQ1hYX2NfbworY2ZfY3ZfcHJvZ19nbmF0X2NvcnJlY3Q9JGNmX2N2X3Byb2dfZ25hdF9jb3JyZWN0CiBjZl9jdl9yZWxfdmVyc2lvbj0iJGNmX2N2X3JlbF92ZXJzaW9uIgogY2ZfY3Zfcm1fc29fbG9jcz0iJGNmX2N2X3JtX3NvX2xvY3MiCiBjZl9jdl9zaGFyZWRfc29uYW1lPSckY2ZfY3Zfc2hhcmVkX3NvbmFtZScKIGNmX2N2X3NobGliX3ZlcnNpb249IiRjZl9jdl9zaGxpYl92ZXJzaW9uIgogY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD0iJGNmX2N2X3NobGliX3ZlcnNpb25faW5maXgiCiBjZl9jdl9zeXN0ZW1fbmFtZT0iJGNmX2N2X3N5c3RlbV9uYW1lIgorY2ZfY3ZfdGVybV9kcml2ZXI9IiR3aXRoX3Rlcm1fZHJpdmVyIgorY2Zfd2l0aF9hZGE9IiRjZl93aXRoX2FkYSIKIGNmX3dpdGhfY3h4X2JpbmRpbmc9IiRjZl93aXRoX2N4eF9iaW5kaW5nIgorY2Zfd2l0aF9kYl9pbnN0YWxsPSIkY2Zfd2l0aF9kYl9pbnN0YWxsIgorY2Zfd2l0aF9tYW5wYWdlcz0iJGNmX3dpdGhfbWFucGFnZXMiCitjZl93aXRoX3Rlc3RzPSIkY2Zfd2l0aF90ZXN0cyIKIGhvc3Q9IiRob3N0IgogdGFyZ2V0PSIkdGFyZ2V0Igord2l0aF9zaGFyZWRfY3h4PSIkd2l0aF9zaGFyZWRfY3h4IgogCiBdLGNhdClkbmwKLSR7TUFLRS1tYWtlfSBwcmVpbnN0YWxsCiske01BS0U6LW1ha2V9IHByZWluc3RhbGwKZGlmZiAtLWdpdCBhL2Rpc3QubWsgYi9kaXN0Lm1rCmluZGV4IDU1MWQ3NzMuLjNjNjFlMGEgMTAwNjQ0Ci0tLSBhL2Rpc3QubWsKKysrIGIvZGlzdC5tawpAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI1LDcgKzI1LDcgQEAKICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgJElkOiBkaXN0Lm1rLHYgMS42NzEgMjAwOC8xMS8wMiAwMDo1ODozOCB0b20gRXhwICQKKyMgJElkOiBkaXN0Lm1rLHYgMS4xMDY0IDIwMTUvMDgvMDYgMjM6MTM6MzkgdG9tIEV4cCAkCiAjIE1ha2VmaWxlIGZvciBjcmVhdGluZyBuY3Vyc2VzIGRpc3RyaWJ1dGlvbnMuCiAjCiAjIFRoaXMgb25seSBuZWVkcyB0byBiZSB1c2VkIGRpcmVjdGx5IGFzIGEgbWFrZWZpbGUgYnkgZGV2ZWxvcGVycywgYnV0CkBAIC0zNSwzMSArMzUsMzEgQEAKIFNIRUxMID0gL2Jpbi9zaAogCiAjIFRoZXNlIGRlZmluZSB0aGUgbWFqb3IvbWlub3IvcGF0Y2ggdmVyc2lvbnMgb2YgbmN1cnNlcy4KLU5DVVJTRVNfTUFKT1IgPSA1Ci1OQ1VSU0VTX01JTk9SID0gNwotTkNVUlNFU19QQVRDSCA9IDIwMDgxMTAyCitOQ1VSU0VTX01BSk9SID0gNgorTkNVUlNFU19NSU5PUiA9IDAKK05DVVJTRVNfUEFUQ0ggPSAyMDE1MDgwOAogCiAjIFdlIGRvbid0IGFwcGVuZCB0aGUgcGF0Y2ggdG8gdGhlIHZlcnNpb24sIHNpbmNlIHRoaXMgb25seSBhcHBsaWVzIHRvIHJlbGVhc2VzCiBWRVJTSU9OID0gJChOQ1VSU0VTX01BSk9SKS4kKE5DVVJTRVNfTUlOT1IpCiAKLSMgVGhlIG1vc3QgcmVjZW50IGh0bWwgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCBseW54IDIuOC42LCB1c2luZyBuY3Vyc2VzCi0jIGNvbmZpZ3VyZWQgd2l0aAorIyBUaGUgbW9zdCByZWNlbnQgaHRtbCBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoIGx5bnggMi44LjYgKG9yIGxhdGVyKSwgdXNpbmcKKyMgbmN1cnNlcyBjb25maWd1cmVkIHdpdGgKICMJLS13aXRob3V0LW1hbnBhZ2UtcmVuYW1lcwogIyBvbiBEZWJpYW4vdGVzdGluZy4gIFRoZSAtc2Nyb2xsYmFyIGFuZCAtd2lkdGggb3B0aW9ucyBhcmUgdXNlZCB0byBtYWtlIGx5bngKICMgdXNlIDc5IGNvbHVtbnMgYXMgaXQgZGlkIGluIDIuOC41IGFuZCBiZWZvcmUuCiBEVU1QCT0gbHlueCAtZHVtcCAtc2Nyb2xsYmFyPTAgLXdpZHRoPTc5CiBEVU1QMgk9ICQoRFVNUCkgLW5vbGlzdAogCi1HTkFUSFRNTD0gYHR5cGUgLXAgZ25hdGh0bWwgfHwgdHlwZSAtcCBnbmF0aHRtbC5wbGAKKyMgZ2NjJ3MgZmlsZSBpcyAiZ25hdGh0bWwucGwiCitHTkFUSFRNTD0gZ25hdGh0bWwKIAotIyBtYW4yaHRtbCAzLjAuMSBpcyBhIFBlcmwgc2NyaXB0IHdoaWNoIGFzc3VtZXMgdGhhdCBwYWdlcyBhcmUgZml4ZWQgc2l6ZS4KKyMgbWFuMmh0bWwgaXMgYSBQZXJsIHNjcmlwdCB3aGljaCBhc3N1bWVzIHRoYXQgcGFnZXMgYXJlIGZpeGVkIHNpemUuCiAjIE5vdCBhbGwgbWFuIHByb2dyYW1zIGFncmVlIHdpdGggdGhpcyBhc3N1bXB0aW9uOyBzb21lIHVzZSBoYWxmLXNwYWNpbmcsIHdoaWNoCiAjIGhhcyB0aGUgZWZmZWN0IG9mIGxlbmd0aGVuaW5nIHRoZSB0ZXh0IHBvcnRpb24gb2YgdGhlIHBhZ2UgLS0gc28gbWFuMmh0bWwKICMgd291bGQgcmVtb3ZlIHNvbWUgdGV4dC4gIFRoZSBtYW4gcHJvZ3JhbSBvbiBSZWRoYXQgNi4xIGFwcGVhcnMgdG8gd29yayB3aXRoCiAjIG1hbjJodG1sIGlmIHdlIHNldCB0aGUgdG9wL2JvdHRvbSBtYXJnaW5zIHRvIDYgKHRoZSBkZWZhdWx0IGlzIDcpLiAgTmV3ZXIKLSMgdmVyc2lvbnMgb2YgJ21hbicgb24gTGludXggbGVhdmUgbm8gbWFyZ2luIChhbmQgbWFrZSBpdCBoYXJkZXIgdG8gc3luYyB3aXRoCi0jIHBhZ2VzKS4KLU1BTjJIVE1MPSBtYW4yaHRtbCAtYm90bT0wIC10b3BtPTAgLWNnaXVybCAnJCR0aXRsZS4kJHNlY3Rpb24kJHN1YnNlY3Rpb24uaHRtbCcKKyMgdmVyc2lvbnMgb2YgJ21hbicgbGVhdmUgbm8gbWFyZ2luIChhbmQgbWFrZSBpdCBoYXJkZXIgdG8gc3luYyB3aXRoIHBhZ2VzKS4KK01BTjJIVE1MPSBtYW4yaHRtbCAtYm90bT0wIC10b3BtPTAgLWNnaXVybCAnJCR0aXRsZS4kJHNlY3Rpb24kJHN1YnNlY3Rpb24uaHRtbCcgLWluZGV4CiAKIEFMTAk9IEFOTk9VTkNFIGRvYy9odG1sL2Fubm91bmNlLmh0bWwgZG9jL25jdXJzZXMtaW50cm8uZG9jIGRvYy9oYWNrZ3VpZGUuZG9jIG1hbmh0bWwgYWRhaHRtbAogCkBAIC05OSw3ICs5OSwxMyBAQAogTUFOUFJPRwk9IHRibCB8IG5yb2ZmIC1tYW5kb2MgLXJMTD02NW4gLXJMVD03MW4gLVRhc2NpaQogCiBtYW5odG1sOgotCUBybSAtZiBkb2MvaHRtbC9tYW4vKi5odG1sCisJQGZvciBmIGluIGRvYy9odG1sL21hbi8qLmh0bWw7IGRvIFwKKwkgICB0ZXN0IC1mICQkZiB8fCBjb250aW51ZTsgXAorCSAgIGNhc2UgJCRmIGluIFwKKwkgICAqL2luZGV4Lmh0bWwpIDs7IFwKKwkgICAqKSBybSAtZiAkJGYgOzsgXAorCSAgIGVzYWM7IFwKKwlkb25lCiAJQG1rZGlyIC1wIGRvYy9odG1sL21hbgogCUBybSAtZiBzdWJzdC50bXAgOwogCUBmb3IgZiBpbiBtYW4vKi5bMC05XSo7IGRvIFwKQEAgLTEyNyw4ICsxMzMsNyBAQAogCSAgIGc9JCR7bX0uaHRtbCA7XAogCSAgIGlmIFsgLWYgZG9jL2h0bWwvJCRnIF07IHRoZW4gY2htb2QgK3cgZG9jL2h0bWwvJCRnOyBmaTtcCiAJICAgZWNobyAiQ29udmVydGluZyAkJG0gdG8gSFRNTCIgO1wKLQkgICBlY2hvICc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPicgPiBkb2MvaHRtbC9tYW4vJCRnIDtcCi0JICAgZWNobyAnPCEtLSAnID4+IGRvYy9odG1sL21hbi8kJGcgO1wKKwkgICBlY2hvICc8IS0tICcgPiBkb2MvaHRtbC9tYW4vJCRnIDtcCiAJICAgZWdyZXAgJ14uXFwiW14jXScgJCRmIHwgXAogCSAgIAlzZWQJLWUgJ3MvXCQkL0AvZycgXAogCQkJLWUgJ3MvXi4uLi8gICovJyBcCkBAIC0xMzYsOSArMTQxLDE1IEBACiAJCQktZSAncy8+L1wmZ3Q7L2cnIFwKIAkgICA+PiBkb2MvaHRtbC9tYW4vJCRnIDtcCiAJICAgZWNobyAnLS0+JyA+PiBkb2MvaHRtbC9tYW4vJCRnIDtcCi0JICAgLi9lZGl0X21hbi5zaCBub3JtYWwgZWRpdGluZyAvdXNyL21hbiBtYW4gJCRmIHwgJChNQU5QUk9HKSB8IHRyICdcMjU1JyAnLScgfCAkKE1BTjJIVE1MKSAtdGl0bGUgIiQkVCIgfCBcCi0JICAgc2VkIC1mIHN1YnN0LnNlZCB8XAotCSAgIHNlZCAtZSAncy8iY3Vyc2VzLjN4Lmh0bWwiLyJuY3Vyc2VzLjN4Lmh0bWwiL2cnIFwKKwkgICAuL2VkaXRfbWFuLnNoIG5vcm1hbCBlZGl0aW5nIC91c3IvbWFuIG1hbiAkJGYgfCBcCisJCSAgICQoTUFOUFJPRykgfCBcCisJCSAgIHRyICdcMjU1JyAnLScgfCBcCisJCSAgICQoTUFOMkhUTUwpIFwKKwkJICAgCS10aXRsZSAiJCRUIiBcCisJCQktYWxpYXNlcyBtYW4vbWFuaHRtbC5hbGlhc2VzIFwKKwkJCS1leHRlcm5zIG1hbi9tYW5odG1sLmV4dGVybnMgfCBcCisJCSAgIHNlZCAtZiBzdWJzdC5zZWQgfFwKKwkJICAgc2VkIC1lICdzLyJjdXJzZXMuM3guaHRtbCIvIm5jdXJzZXMuM3guaHRtbCIvZycgXAogCSAgID4+IGRvYy9odG1sL21hbi8kJGcgO1wKIAlkb25lCiAJQHJtIC1mIHN1YnN0LnNlZApAQCAtMTUwLDcgKzE2MSw3IEBACiAjIC5hbGkgZmlsZXMgY29udGFpbiBjcm9zcyByZWZlcmVuY2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBnbmF0aHRtbC4KIGFkYWh0bWw6CiAJaWYgWyAhIC16ICIkKEdOQVRIVE1MKSIgXTsgdGhlbiBcCi0JICAoY2QgLi9BZGE5NS9nZW4gOyBtYWtlIGh0bWwpIDtcCisJICAoY2QgLi9BZGE5NS9nZW4gOyBtYWtlIGh0bWwgR05BVEhUTUw9JChHTkFUSFRNTCkgKSA7XAogCWZpCiAKICMgVGhpcyBvbmx5IHdvcmtzIG9uIGEgY2xlYW4gc291cmNlIHRyZWUsIG9mIGNvdXJzZS4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL0FkYTk1Lmh0bWwgYi9kb2MvaHRtbC9BZGE5NS5odG1sCmluZGV4IDA0M2I5ZGUuLjc3NTU3ZTcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL0FkYTk1Lmh0bWwKKysrIGIvZG9jL2h0bWwvQWRhOTUuaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIvL0VOIj4KIDwhLS0KLSAgJElkOiBBZGE5NS5odG1sLHYgMS42IDIwMDQvMDEvMTggMDA6MzI6NDcgdG9tIEV4cCAkCisgICRJZDogQWRhOTUuaHRtbCx2IDEuMTQgMjAxMy8wNS8xOCAyMTozNDozNCB0b20gRXhwICQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDE1NiArMjcsMzE3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjbGVhci4xLHYgMS4zIDIwMDAvMDcvMTUgMjM6NTk6MzUgY2hpbmEgRXhwIEAKIC0tPgotPEhUTUw+Ci08SEVBRD4KLTxUSVRMRT5BZGE5NSBCaW5kaW5nIGZvciBuY3Vyc2VzPC9UaXRsZT4KLTwvSEVBRD4KLTxCT0RZPgotPEgxPkFkYTk1IEJpbmRpbmcgZm9yIG5jdXJzZXM8L0gxPgotYnkgSiZ1dW1sO3JnZW4gUGZlaWZlci4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiAKLTxIUiBTSVpFPTMgTk9TSEFERT4KLTxIMj5HZW5lcmFsIFJlbWFya3M8L0gyPgotPFVMPgotPExJPlRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIFZlcnNpb24gMDEuMDAgb2YgdGhlIGJpbmRpbmcuPC9MST4KLTxMST5UaGUgZnVuY3Rpb25hbGl0eSBpcyBtb2RlbGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbmN1cnNlcwotcGFja2FnZSwgYSBjbG9uZSBvZiB0aGUgU1ZyNCBjdXJzZXMgbW9kZWwuPEJSPgotSSBkaWQgdGhlIGRldmVsb3BtZW50IG9uIGFuIEludGVsIGJveCBydW5uaW5nIHRoZSBsYXRlc3Qgc3RhYmxlIHJlbGVhc2Ugb2YKLTxBIEhSRUY9Imh0dHA6Ly93d3cubGludXgub3JnIj5MaW51eDwvQT4sIG5jdXJzZXMgYW5kIHRoZSBtb3N0IHJlY2VudCByZWxlYXNlZAotPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05VIEFkYSBUcmFuc2xhdG9yPC9BPgotZ25hdCB2ZXJzaW9ucy4gRm9yIGFueSBvbGRlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzIGFuZCBnbmF0Ci1pdCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrLjwvTEk+Ci08TEk+WW91IG11c3QgaGF2ZSB0aGUgbTQgbWFjcm9wcm9jZXNzb3IgdG8gYnVpbGQgdGhpcyBwYWNrYWdlLgotSWYgeW91IGRvbid0IGhhdmUgdGhpcyBwcm9ncmFtLCB5b3UgY2FuIGdldCB0aGUgRlNGIHZlcnNpb24KLTxBIEhSRUY9ImZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvIj5oZXJlPC9BPi48L0xJPgotPExJPkFkYSBwcm9ncmFtcyBhcmUgc3VwcG9zZWQgdG8gYmUgcmVhZGFibGUuIE9uZSBvZiBteQotZmF2b3JpdGUgbWV0aG9kcyB0byBtYWtlIGNvZGUgcmVhZGFibGUgaXMgdG8gdXNlIGV4cHJlc3NpdmUKLW5hbWVzIGZvciB0aGUgaWRlbnRpZmllcnMuIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgYSBtYXBwaW5nCi1vZiB0aGUgY3J5cHRpYyBjdXJzZXMgbmFtZXMgdG8gdGhlIEFkYSBuYW1lcyBpbiB0aGlzIDxBIEhSRUY9ImFkYS90YWJsZS5odG1sIj50YWJsZTwvQT4uPC9MST4KLTxMST5UaGlzIGlzIG5vdCBhIHR5cGljYWwgb25lLXRvLW9uZSBpbnRlcmZhY2UgbWFwcGluZy4gSXQgaXMKLWNsb3NlIHRvIG9uZS10by1vbmUgb24gdGhlIGZ1bmN0aW9uYWwgbGV2ZWwuIEVhY2ggKG4pY3Vyc2VzIGZ1bmN0aW9uCi1oYXMgaXQncyBjb3VudGVycGFydCB3aXRoIGEgbW9yZSBvciBsZXNzIHNpbWlsYXIgZm9ybWFsIHBhcmFtZXRlciBsaXN0Ci1pbiB0aGUgYmluZGluZy4gSXQgaXMgbm90IG9uZS10by1vbmUgd2l0aCByZXNwZWN0IHRvIHRoZSBkYXRhdHlwZXMuCi1JIHRyaWVkIHRvIG1ha2UgcmVjb3JkcyBvdXQgb2YgdGhlIGZsYXQgY2h0eXBlIGFuZCBzaW1pbGFyIHN0cnVjdHVyZXMsCi1zbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBiaXQgb3BlcmF0aW9ucyB0byBtYXJrIGFuIGF0dHJpYnV0ZWQgY2hhcmFjdGVyCi1hcyBib2xkLiBKdXN0IG1ha2UgdGhlIGJvb2xlYW4gbWVtYmVyIDxTVFJPTkc+Ym9sZDwvU1RST05HPiBvZiB0aGUgcmVjb3JkCi10cnVlLiBUaGUgYmluZGluZyBhbHNvIGhpZGVzIHRoZSBzdHJ1Y3R1cmVzIGxpa2UgV0lORE9XLCBQQU5FTCwgTUVOVSwgRk9STQotZXRjLiAhIEl0J3MgYSBwdXJlIGZ1bmN0aW9uYWwgQVBJLjwvTEk+Ci08TEk+SSB0cnkgdG8gZG8gYXMgbXVjaCBlcnJvciBjaGVja2luZyBhcyBwb3NzaWJsZSBhbmQgZmVhc2libGUKLWluIHRoZSBiaW5kaW5nLiBJIHdpbGwgcmFpc2UgYW4gQWRhIGV4Y2VwdGlvbiB3aGVuIHNvbWV0aGluZwotd2VudCB3cm9uZyBpbiB0aGUgbG93LWxldmVsIGN1cnNlcy4gVGhpcyBoYXMgdGhlIGVmZmVjdCB0aGF0IC0gYXQgbGVhc3QKLWZpcnN0IHRpbWUgaW4gbXkgbGlmZSAtIChuKWN1cnNlcyBwcm9ncmFtcyBoYXZlIG5vdyBhIHZlcnkgcmlnaWQgZXJyb3IKLWNoZWNraW5nLCBidXQgLSB0aGFua3MgdG8gQWRhIC0geW91IGRvbid0IGhhdmUgdG8gY29kZSB0aGUgb3JnaWFzdGljCi1lcnJvciBjaGVja2luZyBzdHlsZSBvZiBDLjwvTEk+Ci08TEk+U3VwcG9ydCBmb3Igd2lkZSBjaGFyYWN0ZXJzIGlzIGN1cnJlbnRseSBub3QgaW4gdGhlIGJpbmRpbmcsIGFzIGl0Ci1pcyBub3QgcmVhbGx5IGluIG5jdXJzZXMgYXQgdGhpcyBwb2ludCBpbiB0aW1lLjwvTEk+Ci08L1VMPgorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PQorICAiSFRNTCBUaWR5IGZvciBMaW51eCAodmVycyAyNSBNYXJjaCAyMDA5KSwgc2VlIHd3dy53My5vcmciPgogCi08SDI+TGltaXRhdGlvbnM8L0gyPgotPFVMPgotPExJPkkgcHJvdmlkZSBubyBTQ1JFRU4gZGF0YXR5cGUgYW5kIGZ1bmN0aW9ucyB0byBzZXQgYSBuZXcgc2NyZWVuLgotSWYgeW91IG5lZWQgdGhpcyAobW9zdGx5IGZvciBkZWJ1Z2dpbmcgSSBndWVzcyksIHdyaXRlIGEgc21hbGwKLUMgcm91dGluZSBkb2luZyBhbGwgdGhpcyBhbmQgaW1wb3J0IGl0IGludG8geW91ciBBZGEgcHJvZ3JhbS48L0xJPgotPExJPkkgcHJvdmlkZSBubyBmdW5jdGlvbnMgdG8gc3dpdGNoIG9uL29mZiBjdXJzZXMgdHJhY2luZyBvcHRpb25zLgotU2FtZSBzdWdnZXN0aW9uIGFzIGFib3ZlLjwvTEk+Ci08TEk+QWx0aG91Z2ggQWRhOTUgaXMgYW4gT08gTGFuZ3VhZ2UsIHRoaXMgYmluZGluZyBkb2Vzbid0IHByb3ZpZGUKLWFuIE9PIGFic3RyYWN0aW9uIG9mIHRoZSAobiljdXJzZXMgZnVuY3Rpb25hbGl0eS4gQXMgbWVudGlvbmVkIGFib3ZlCi1pdCdzIGEgdGhpbiBiaW5kaW5nIGZvciB0aGUgKG4pY3Vyc2VzIGZ1bmN0aW9ucy4gQnV0IHdpdGhvdXQgYW55Ci1kb3VidCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJ1aWxkIG9uIHRvcCBvZiB0aGlzIGFuIE9PIGFic3RyYWN0aW9uCi1vZiAobiljdXJzZXMgZnVuY3Rpb25hbGl0eS48QlI+Ci1UaGUgb25seSBleGNlcHRpb24gaXMgdGhlIG1ldGhvZCBob3cgZmllbGR0eXBlcyBhcmUgcmVwcmVzZW50ZWQgaW4KLXRoaXMgQmluZGluZy4gV2UgcHJvdmlkZSBhbiBhYnN0cmFjdCB0YWdnZWQgdHlwZSBGaWVsZF9UeXBlIGZyb20KLXdoaWNoIHRoZSB2YXJpb3VzIGZpZWxkdHlwZXMgYXJlIGRlcml2ZWQuPC9MST4KLTxMST5JIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCB0aGUgbGlua19maWVsZHR5cGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUKLWZvcm1zIHN1YnN5c3RlbS48L0xJPgotPExJPlRoZSAqX0lPIHBhY2thZ2VzIGFyZSBjdXJyZW50bHkgb3V0cHV0IG9ubHkuPC9MST4KLTwvVUw+CisgIDx0aXRsZT5BZGE5NSBCaW5kaW5nIGZvciBuY3Vyc2VzPC90aXRsZT4KKyAgPGxpbmsgcmV2PSJtYWRlIiBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0KKyAgInRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8L2hlYWQ+CiAKLTxIMj5IaWVyYXJjaHkgb2YgcGFja2FnZXM8L0gyPgotPFVMPgotPExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0iPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4KLSAgICA8VUw+PExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtIj5DdXJzZXM8L0E+Ci0JPFVMPjxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSI+TW91c2U8L0E+Ci0gICAgICAgICAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtIj5QYW5lbHM8L0E+Ci0gICAgICAgICAgICA8VUw+PExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0iPlVzZXJfRGF0YTwvQT4KLSAgICAgICAgICAgIDwvVUw+Ci0JICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSI+TWVudXM8L0E+Ci0JICAgICAgICA8VUw+PExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtIj5NZW51X1VzZXJfRGF0YTwvQT4KLQkJICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSI+SXRlbV9Vc2VyX0RhdGE8L0E+Ci0JCTwvVUw+Ci0JICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSI+Rm9ybXM8L0E+Ci0JCTxVTD48TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0iPkZvcm1fVXNlcl9EYXRhPC9BPgotCQkgICAgPExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSI+RmllbGRfVXNlcl9EYXRhPC9BPgotCQkgICAgPExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtIj5GaWVsZF9UeXBlczwvQT4KLQkJICAgIDxVTD48TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0iPkFscGhhPC9BPgotCQkgICAgICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0iPkFscGhhTnVtZXJpYzwvQT4KLQkJICAgICAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0iPkludEZpZWxkPC9BPgotCQkgICAgICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtIj5OdW1lcmljPC9BPgotCQkgICAgICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0iPlJlZ0V4cDwvQT4KLQkJICAgICAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtIj5JUFY0X0FkZHJlc3M8L0E+Ci0JCSAgICAgICAgPExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtIj5FbnVtZXJhdGlvbjwvQT4KLQkJICAgICAgICA8VUw+PExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSI+QWRhPC9BPgotCQkJPC9VTD4KLQkJCTxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtIj5Vc2VyPC9BPgotCQkgICAgICAgIDxVTD48TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0iPkNob2ljZTwvQT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvVUw+Ci0gICAgICAgICAgICAgICAgICAgICA8L1VMPgotCQk8L1VMPgotCSAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSI+VGV4dF9JTzwvQT4KLQkJPFVMPjxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0iPkludGVnZXJfSU88L0E+Ci0JCSAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSI+RmxvYXRfSU88L0E+Ci0JCSAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSI+Rml4ZWRfSU88L0E+Ci0JCSAgICA8TEk+PEEgSFJFRj0iYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtIj5EZWNpbWFsX0lPPC9BPgotCQkgICAgPExJPjxBIEhSRUY9ImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSI+TW9kdWxhcl9JTzwvQT4KLQkJICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtIj5FbnVtZXJhdGlvbl9JTzwvQT4KLQkJICAgIDxMST48QSBIUkVGPSJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0iPkNvbXBsZXhfSU88L0E+Ci0JCTwvVUw+Ci0gICAgICAgICA8L1VMPgotICAgICA8L1VMPgotPC9VTD4KLUlmIHlvdSB3YW50IHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGh0bWwgcGFnZXMgb2YgdGhlIHBhY2thZ2Ugc3BlY3MsIGNsaWNrIDxBIEhSRUY9ImFkYS9pbmRleC5odG0iPmhlcmU8L0E+LgotPEgyPkltcGxlbWVudGF0aW9uIERldGFpbHM8L0gyPgotPEg0PkJlaGluZCB0aGUgYWJzdHJhY3Rpb248L0g0PgotQWxsIHRoZSBuZXcgdHlwZXMgbGlrZSA8U1RST05HPldpbmRvdzwvU1RST05HPiwgPFNUUk9ORz5QYW5lbDwvU1RST05HPiwKLTxTVFJPTkc+TWVudTwvU1RST05HPiwgPFNUUk9ORz5Gb3JtPC9TVFJPTkc+IGV0Yy4gYXJlIGp1c3QKLW9wYXF1ZSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHBvaW50ZXJzIHRvIHRoZSBjb3JyZXNwb25kaW5nCi1sb3cgbGV2ZWwgKG4pY3Vyc2VzIHN0cnVjdHVyZXMgbGlrZQotPFNUUk9ORz5XSU5ET1cgKjwvU1RST05HPiwgPFNUUk9ORz5QQU5FTCAqPC9TVFJPTkc+LAotPFNUUk9ORz5NRU5VICo8L1NUUk9ORz4gb3IgPFNUUk9ORz5GT1JNICo8L1NUUk9ORz4uCi1TbyB5b3UgY2FuIHNhZmVseSBwYXNzIHRoZW0gdG8gQyByb3V0aW5lcyB0aGF0IGV4cGVjdCBhIHBvaW50ZXIKLXRvIG9uZSBvZiB0aG9zZSBzdHJ1Y3R1cmVzLgotPEg0PkV4dGVuZGVkIHJpcG9mZmxpbmUoKSB1c2FnZTwvSDQ+Ci1UaGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBvZiAobiljdXJzZXMgc2F5cywgdGhhdCB0aGUgbGluZSBwYXJhbWV0ZXIKLWRldGVybWluZXMgb25seSB3aGV0aGVyIG9yIG5vdCBleGFjdGx5IDxTVFJPTkc+b25lPC9TVFJPTkc+IGxpbmUgaXMKLXN0b2xlbiBmcm9tIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFNvIGVzc2VudGlhbGx5IG9ubHkgdGhlCi1zaWduIG9mIHRoZSBwYXJhbWV0ZXIgaXMgZXZhbHVhdGVkLiBuY3Vyc2VzIGhhcyBpbnRlcm5hbGx5IGltcGxlbWVudGVkCi1pdCBpbiBhIHdheSwgdGhhdCB1c2VzIHRoZSBsaW5lIHBhcmFtZXRlciBhbHNvIHRvIGNvbnRyb2wgdGhlIGFtb3VudCBvZgotbGluZXMgdG8gc3RlYWwuIFRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgaW4gdGhlIDxTVFJPTkc+UmlwX09mZl9MaW5lczwvU1RST05HPgotcm91dGluZSBvZiB0aGUgYmluZGluZy4KLTxIND48QSBOQU1FPSJ1c2VycG9pbnRlciI+SG93IHVzZXIgZGVmaW5lZCBmaWVsZCB0eXBlcyB3b3JrPC9BPjwvSDQ+Ci1UQkQKLTxIND5FbnVtZXJhdGlvbiBmaWVsZHMgaGFuZGxpbmc8L0g0PgotVGhlIChuKWN1cnNlcyBkb2N1bWVudGF0aW9uIHNheXMsIHRoYXQgdGhlIFN0cmluZyBhcnJheXMgdG8gYmUgcGFzc2VkIHRvCi1hbiBUWVBFX0VOVU0gZmllbGR0eXBlIG11c3Qgbm90IGJlIGF1dG9tYXRpYyB2YXJpYWJsZXMuIFRoaXMgaXMgbm90IHRydWUKLWluIHRoaXMgYmluZGluZywgYmVjYXVzZSBpdCBpcyBpbnRlcm5hbGx5IGFycmFuZ2VkIHRvIHNhZmVseSBjb3B5IHRoZXNlCi12YWx1ZXMuCi08SDQ+PEEgTkFNRT0iY29tcGlsZXIiPlVzaW5nIG90aGVyIEFkYSBjb21waWxlcnM8L0E+PC9IND4KLVRoaXMgc2hvdWxkIGJhc2ljYWxseSBub3QgYmUgYSBwcm9ibGVtLgotPEg0PlBvcnQgdG8gb3RoZXIgY3Vyc2VzIGltcGxlbWVudGF0aW9uczwvSDQ+Ci1CYXNpY2FsbHkgaXQgc2hvdWxkIG5vdCBiZSB0b28gaGFyZCB0byBtYWtlIGFsbCB0aGlzIHJ1biBvbiBhIHJlZ3VsYXIgU1ZyNAotaW1wbGVtZW50YXRpb24gb2YgY3Vyc2VzLiBUaGUgcHJvYmxlbXMgYXJlIHByb2JhYmx5IHRoZXNlOjxCUj4KLTxVTD4KLTxMST5uY3Vyc2VzIGhhcyBzb21lIGFkZGl0aW9uYWwgZmVhdHVyZXMgd2hpY2ggYXJlIHByZXNlbnRlZCBpbiB0aGlzIGJpbmRpbmcuIFlvdQotaGF2ZSB0d28gY2hvaWNlcyB0byBkZWFsIHdpdGggdGhpczoKLTxVTD4KLTxMST5FbXVsYXRlIHRoZSBmZWF0dXJlIGluIHRoaXMgYmluZGluZzwvTEk+Ci08TEk+UmFpc2UgYW4gZXhjZXB0aW9uIGZvciBub24gaW1wbGVtZW50ZWQgZmVhdHVyZXM8L0xJPgotPC9VTD4KLU1vc3QgbGlrZWx5IHlvdSB3aWxsIGZvbGxvdyBhIG1peGVkIGFwcHJvYWNoLiBTb21lIGZlYXR1cmVzIGFyZSBlYXN5IHRvIHNpbXVsYXRlLAotb3RoZXJzIHdpbGwgYmUgaGFyZCBpZiBub3QgaW1wb3NzaWJsZS48L0xJPgotPC9VTD4KLUknbSBxdWl0ZSBzdXJlIEkgZm9yZ290IHNvbWV0aGluZy4KLTwvQk9EWT4KLTwvSFRNTD4KKzxib2R5PgorICA8aDE+QWRhOTUgQmluZGluZyBmb3IgbmN1cnNlczwvaDE+CisKKyAgPHA+YnkgSiZ1dW1sO3JnZW4gUGZlaWZlci48L3A+CisgIDxocj4KKworICA8aDI+R2VuZXJhbCBSZW1hcmtzPC9oMj4KKworICA8dWw+CisgICAgPGxpPlRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIFZlcnNpb24gMDEuMDAgb2YgdGhlIGJpbmRpbmcuPC9saT4KKworICAgIDxsaT5UaGUgZnVuY3Rpb25hbGl0eSBpcyBtb2RlbGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUKKyAgICBuY3Vyc2VzIHBhY2thZ2UsIGEgY2xvbmUgb2YgdGhlIFNWcjQgY3Vyc2VzIG1vZGVsLjxicj4KKyAgICBJIGRpZCB0aGUgZGV2ZWxvcG1lbnQgb24gYW4gSW50ZWwgYm94IHJ1bm5pbmcgdGhlIGxhdGVzdCBzdGFibGUKKyAgICByZWxlYXNlIG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cubGludXgub3JnIj5MaW51eDwvYT4sIG5jdXJzZXMKKyAgICBhbmQgdGhlIG1vc3QgcmVjZW50IHJlbGVhc2VkIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOVQorICAgIEFkYSBUcmFuc2xhdG9yPC9hPiBnbmF0IHZlcnNpb25zLiBGb3IgYW55IG9sZGVyIHZlcnNpb25zIG9mCisgICAgbmN1cnNlcyBhbmQgZ25hdCBpdCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrLjwvbGk+CisKKyAgICA8bGk+WW91IG11c3QgaGF2ZSB0aGUgbTQgbWFjcm9wcm9jZXNzb3IgdG8gYnVpbGQgdGhpcyBwYWNrYWdlLgorICAgIElmIHlvdSBkb24ndCBoYXZlIHRoaXMgcHJvZ3JhbSwgeW91IGNhbiBnZXQgdGhlIEZTRiB2ZXJzaW9uCisgICAgPGEgaHJlZj0iZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS8iPmhlcmU8L2E+LjwvbGk+CisKKyAgICA8bGk+QWRhIHByb2dyYW1zIGFyZSBzdXBwb3NlZCB0byBiZSByZWFkYWJsZS4gT25lIG9mIG15CisgICAgZmF2b3JpdGUgbWV0aG9kcyB0byBtYWtlIGNvZGUgcmVhZGFibGUgaXMgdG8gdXNlIGV4cHJlc3NpdmUKKyAgICBuYW1lcyBmb3IgdGhlIGlkZW50aWZpZXJzLiBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIGEgbWFwcGluZyBvZgorICAgIHRoZSBjcnlwdGljIGN1cnNlcyBuYW1lcyB0byB0aGUgQWRhIG5hbWVzIGluIHRoaXMgPGEgaHJlZj0KKyAgICAiYWRhL3RhYmxlLmh0bWwiPnRhYmxlPC9hPi48L2xpPgorCisgICAgPGxpPlRoaXMgaXMgbm90IGEgdHlwaWNhbCBvbmUtdG8tb25lIGludGVyZmFjZSBtYXBwaW5nLiBJdCBpcworICAgIGNsb3NlIHRvIG9uZS10by1vbmUgb24gdGhlIGZ1bmN0aW9uYWwgbGV2ZWwuIEVhY2ggKG4pY3Vyc2VzCisgICAgZnVuY3Rpb24gaGFzIGl0J3MgY291bnRlcnBhcnQgd2l0aCBhIG1vcmUgb3IgbGVzcyBzaW1pbGFyCisgICAgZm9ybWFsIHBhcmFtZXRlciBsaXN0IGluIHRoZSBiaW5kaW5nLiBJdCBpcyBub3Qgb25lLXRvLW9uZSB3aXRoCisgICAgcmVzcGVjdCB0byB0aGUgZGF0YXR5cGVzLiBJIHRyaWVkIHRvIG1ha2UgcmVjb3JkcyBvdXQgb2YgdGhlCisgICAgZmxhdCBjaHR5cGUgYW5kIHNpbWlsYXIgc3RydWN0dXJlcywgc28geW91IGRvbid0IGhhdmUgdG8gZG8gYml0CisgICAgb3BlcmF0aW9ucyB0byBtYXJrIGFuIGF0dHJpYnV0ZWQgY2hhcmFjdGVyIGFzIGJvbGQuIEp1c3QgbWFrZQorICAgIHRoZSBib29sZWFuIG1lbWJlciA8c3Ryb25nPmJvbGQ8L3N0cm9uZz4gb2YgdGhlIHJlY29yZCB0cnVlLgorICAgIFRoZSBiaW5kaW5nIGFsc28gaGlkZXMgdGhlIHN0cnVjdHVyZXMgbGlrZSBXSU5ET1csIFBBTkVMLCBNRU5VLAorICAgIEZPUk0gZXRjLiAhIEl0J3MgYSBwdXJlIGZ1bmN0aW9uYWwgQVBJLjwvbGk+CisKKyAgICA8bGk+SSB0cnkgdG8gZG8gYXMgbXVjaCBlcnJvciBjaGVja2luZyBhcyBwb3NzaWJsZSBhbmQgZmVhc2libGUKKyAgICBpbiB0aGUgYmluZGluZy4gSSB3aWxsIHJhaXNlIGFuIEFkYSBleGNlcHRpb24gd2hlbiBzb21ldGhpbmcKKyAgICB3ZW50IHdyb25nIGluIHRoZSBsb3ctbGV2ZWwgY3Vyc2VzLiBUaGlzIGhhcyB0aGUgZWZmZWN0IHRoYXQgLQorICAgIGF0IGxlYXN0IGZpcnN0IHRpbWUgaW4gbXkgbGlmZSAtIChuKWN1cnNlcyBwcm9ncmFtcyBoYXZlIG5vdyBhCisgICAgdmVyeSByaWdpZCBlcnJvciBjaGVja2luZywgYnV0IC0gdGhhbmtzIHRvIEFkYSAtIHlvdSBkb24ndCBoYXZlCisgICAgdG8gY29kZSB0aGUgb3JnaWFzdGljIGVycm9yIGNoZWNraW5nIHN0eWxlIG9mIEMuPC9saT4KKworICAgIDxsaT5TdXBwb3J0IGZvciB3aWRlIGNoYXJhY3RlcnMgaXMgY3VycmVudGx5IG5vdCBpbiB0aGUKKyAgICBiaW5kaW5nLCBhcyBpdCBpcyBub3QgcmVhbGx5IGluIG5jdXJzZXMgYXQgdGhpcyBwb2ludCBpbgorICAgIHRpbWUuPC9saT4KKyAgPC91bD4KKworICA8aDI+TGltaXRhdGlvbnM8L2gyPgorCisgIDx1bD4KKyAgICA8bGk+SSBwcm92aWRlIG5vIFNDUkVFTiBkYXRhdHlwZSBhbmQgZnVuY3Rpb25zIHRvIHNldCBhIG5ldworICAgIHNjcmVlbi4gSWYgeW91IG5lZWQgdGhpcyAobW9zdGx5IGZvciBkZWJ1Z2dpbmcgSSBndWVzcyksIHdyaXRlCisgICAgYSBzbWFsbCBDIHJvdXRpbmUgZG9pbmcgYWxsIHRoaXMgYW5kIGltcG9ydCBpdCBpbnRvIHlvdXIgQWRhCisgICAgcHJvZ3JhbS48L2xpPgorCisgICAgPGxpPkkgcHJvdmlkZSBubyBmdW5jdGlvbnMgdG8gc3dpdGNoIG9uL29mZiBjdXJzZXMgdHJhY2luZworICAgIG9wdGlvbnMuIFNhbWUgc3VnZ2VzdGlvbiBhcyBhYm92ZS48L2xpPgorCisgICAgPGxpPkFsdGhvdWdoIEFkYTk1IGlzIGFuIE9PIExhbmd1YWdlLCB0aGlzIGJpbmRpbmcgZG9lc24ndAorICAgIHByb3ZpZGUgYW4gT08gYWJzdHJhY3Rpb24gb2YgdGhlIChuKWN1cnNlcyBmdW5jdGlvbmFsaXR5LiBBcworICAgIG1lbnRpb25lZCBhYm92ZSBpdCdzIGEgdGhpbiBiaW5kaW5nIGZvciB0aGUgKG4pY3Vyc2VzCisgICAgZnVuY3Rpb25zLiBCdXQgd2l0aG91dCBhbnkgZG91YnQgaXQgd291bGQgYmUgbmljZSB0byBidWlsZCBvbgorICAgIHRvcCBvZiB0aGlzIGFuIE9PIGFic3RyYWN0aW9uIG9mIChuKWN1cnNlcyBmdW5jdGlvbmFsaXR5Ljxicj4KKyAgICBUaGUgb25seSBleGNlcHRpb24gaXMgdGhlIG1ldGhvZCBob3cgZmllbGR0eXBlcyBhcmUgcmVwcmVzZW50ZWQKKyAgICBpbiB0aGlzIEJpbmRpbmcuIFdlIHByb3ZpZGUgYW4gYWJzdHJhY3QgdGFnZ2VkIHR5cGUgRmllbGRfVHlwZQorICAgIGZyb20gd2hpY2ggdGhlIHZhcmlvdXMgZmllbGR0eXBlcyBhcmUgZGVyaXZlZC48L2xpPgorCisgICAgPGxpPkkgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IHRoZSBsaW5rX2ZpZWxkdHlwZSBmdW5jdGlvbmFsaXR5CisgICAgb2YgdGhlIGZvcm1zIHN1YnN5c3RlbS48L2xpPgorCisgICAgPGxpPlRoZSAqX0lPIHBhY2thZ2VzIGFyZSBjdXJyZW50bHkgb3V0cHV0IG9ubHkuPC9saT4KKyAgPC91bD4KKworICA8aDI+SGllcmFyY2h5IG9mIHBhY2thZ2VzPC9oMj4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPGEgaHJlZj0KKyAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtIj5UZXJtaW5hbF9JbnRlcmZhY2U8L2E+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxhIGhyZWY9CisgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtIj5DdXJzZXM8L2E+CisKKyAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSI+TW91c2U8L2E+PC9saT4KKworICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICA8YSBocmVmPQorICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtIj5QYW5lbHM8L2E+CisKKyAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPQorICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBVc2VyX0RhdGE8L2E+PC9saT4KKyAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgPGEgaHJlZj0KKyAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtIj5NZW51czwvYT4KKworICAgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBNZW51X1VzZXJfRGF0YTwvYT48L2xpPgorCisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBJdGVtX1VzZXJfRGF0YTwvYT48L2xpPgorICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICA8YSBocmVmPQorICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0iPkZvcm1zPC9hPgorCisgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgIEZvcm1fVXNlcl9EYXRhPC9hPjwvbGk+CisKKyAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBGaWVsZF9Vc2VyX0RhdGE8L2E+PC9saT4KKworICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgICAgRmllbGRfVHlwZXM8L2E+CisKKyAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgICAgIEFscGhhPC9hPjwvbGk+CisKKyAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgICAgICBBbHBoYU51bWVyaWM8L2E+PC9saT4KKworICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICAgICAgSW50RmllbGQ8L2E+PC9saT4KKworICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgICAgICBOdW1lcmljPC9hPjwvbGk+CisKKyAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgICAgICBSZWdFeHA8L2E+PC9saT4KKworICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgICAgIElQVjRfQWRkcmVzczwvYT48L2xpPgorCisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPQorICAgICAgICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgICAgICAgRW51bWVyYXRpb248L2E+CisKKyAgICAgICAgICAgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRhPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgICAgICAgVXNlcjwvYT4KKworICAgICAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPQorICAgICAgICAgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob2ljZTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxhIGhyZWY9CisgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtIj5UZXh0X0lPPC9hPgorCisgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBJbnRlZ2VyX0lPPC9hPjwvbGk+CisKKyAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgRmxvYXRfSU88L2E+PC9saT4KKworICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPQorICAgICAgICAgICAgICAgICJhZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBGaXhlZF9JTzwvYT48L2xpPgorCisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgRGVjaW1hbF9JTzwvYT48L2xpPgorCisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSI+CisgICAgICAgICAgICAgICAgTW9kdWxhcl9JTzwvYT48L2xpPgorCisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgImFkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0iPgorICAgICAgICAgICAgICAgIEVudW1lcmF0aW9uX0lPPC9hPjwvbGk+CisKKyAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtIj4KKyAgICAgICAgICAgICAgICBDb21wbGV4X0lPPC9hPjwvbGk+CisgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICA8L2xpPgorICAgICAgICAgIDwvdWw+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+SWYgeW91IHdhbnQgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgaHRtbCBwYWdlcyBvZiB0aGUgcGFja2FnZQorICBzcGVjcywgY2xpY2sgPGEgaHJlZj0iYWRhL2luZGV4Lmh0bSI+aGVyZTwvYT4uPC9wPgorCisgIDxoMj5JbXBsZW1lbnRhdGlvbiBEZXRhaWxzPC9oMj4KKworICA8aDQ+QmVoaW5kIHRoZSBhYnN0cmFjdGlvbjwvaDQ+CisKKyAgPHA+QWxsIHRoZSBuZXcgdHlwZXMgbGlrZSA8c3Ryb25nPldpbmRvdzwvc3Ryb25nPiwKKyAgPHN0cm9uZz5QYW5lbDwvc3Ryb25nPiwgPHN0cm9uZz5NZW51PC9zdHJvbmc+LAorICA8c3Ryb25nPkZvcm08L3N0cm9uZz4gZXRjLiBhcmUganVzdCBvcGFxdWUgcmVwcmVzZW50YXRpb25zIG9mIHRoZQorICBwb2ludGVycyB0byB0aGUgY29ycmVzcG9uZGluZyBsb3cgbGV2ZWwgKG4pY3Vyc2VzIHN0cnVjdHVyZXMgbGlrZQorICA8c3Ryb25nPldJTkRPVyAqPC9zdHJvbmc+LCA8c3Ryb25nPlBBTkVMICo8L3N0cm9uZz4sIDxzdHJvbmc+TUVOVQorICAqPC9zdHJvbmc+IG9yIDxzdHJvbmc+Rk9STSAqPC9zdHJvbmc+LiBTbyB5b3UgY2FuIHNhZmVseSBwYXNzCisgIHRoZW0gdG8gQyByb3V0aW5lcyB0aGF0IGV4cGVjdCBhIHBvaW50ZXIgdG8gb25lIG9mIHRob3NlCisgIHN0cnVjdHVyZXMuPC9wPgorCisgIDxoND5FeHRlbmRlZCByaXBvZmZsaW5lKCkgdXNhZ2U8L2g0PgorCisgIDxwPlRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9mIChuKWN1cnNlcyBzYXlzLCB0aGF0IHRoZSBsaW5lCisgIHBhcmFtZXRlciBkZXRlcm1pbmVzIG9ubHkgd2hldGhlciBvciBub3QgZXhhY3RseQorICA8c3Ryb25nPm9uZTwvc3Ryb25nPiBsaW5lIGlzIHN0b2xlbiBmcm9tIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZQorICBzY3JlZW4uIFNvIGVzc2VudGlhbGx5IG9ubHkgdGhlIHNpZ24gb2YgdGhlIHBhcmFtZXRlciBpcworICBldmFsdWF0ZWQuIG5jdXJzZXMgaGFzIGludGVybmFsbHkgaW1wbGVtZW50ZWQgaXQgaW4gYSB3YXksIHRoYXQKKyAgdXNlcyB0aGUgbGluZSBwYXJhbWV0ZXIgYWxzbyB0byBjb250cm9sIHRoZSBhbW91bnQgb2YgbGluZXMgdG8KKyAgc3RlYWwuIFRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgaW4gdGhlCisgIDxzdHJvbmc+UmlwX09mZl9MaW5lczwvc3Ryb25nPiByb3V0aW5lIG9mIHRoZSBiaW5kaW5nLjwvcD4KKworICA8aDQ+PGEgbmFtZT0idXNlcnBvaW50ZXIiIGlkPSJ1c2VycG9pbnRlciI+SG93IHVzZXIgZGVmaW5lZCBmaWVsZAorICB0eXBlcyB3b3JrPC9hPjwvaDQ+CisKKyAgPHA+VEJEPC9wPgorCisgIDxoND5FbnVtZXJhdGlvbiBmaWVsZHMgaGFuZGxpbmc8L2g0PgorCisgIDxwPlRoZSAobiljdXJzZXMgZG9jdW1lbnRhdGlvbiBzYXlzLCB0aGF0IHRoZSBTdHJpbmcgYXJyYXlzIHRvIGJlCisgIHBhc3NlZCB0byBhbiBUWVBFX0VOVU0gZmllbGR0eXBlIG11c3Qgbm90IGJlIGF1dG9tYXRpYyB2YXJpYWJsZXMuCisgIFRoaXMgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nLCBiZWNhdXNlIGl0IGlzIGludGVybmFsbHkKKyAgYXJyYW5nZWQgdG8gc2FmZWx5IGNvcHkgdGhlc2UgdmFsdWVzLjwvcD4KKworICA8aDQ+PGEgbmFtZT0iY29tcGlsZXIiIGlkPSJjb21waWxlciI+VXNpbmcgb3RoZXIgQWRhCisgIGNvbXBpbGVyczwvYT48L2g0PgorCisgIDxwPlRoaXMgc2hvdWxkIGJhc2ljYWxseSBub3QgYmUgYSBwcm9ibGVtLjwvcD4KKworICA8aDQ+UG9ydCB0byBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb25zPC9oND4KKworICA8cD5CYXNpY2FsbHkgaXQgc2hvdWxkIG5vdCBiZSB0b28gaGFyZCB0byBtYWtlIGFsbCB0aGlzIHJ1biBvbiBhCisgIHJlZ3VsYXIgU1ZyNCBpbXBsZW1lbnRhdGlvbiBvZiBjdXJzZXMuIFRoZSBwcm9ibGVtcyBhcmUgcHJvYmFibHkKKyAgdGhlc2U6PGJyPjwvcD4KKworICA8dWw+CisgICAgPGxpPm5jdXJzZXMgaGFzIHNvbWUgYWRkaXRpb25hbCBmZWF0dXJlcyB3aGljaCBhcmUgcHJlc2VudGVkIGluCisgICAgdGhpcyBiaW5kaW5nLiBZb3UgaGF2ZSB0d28gY2hvaWNlcyB0byBkZWFsIHdpdGggdGhpczoKKworICAgICAgPHVsPgorICAgICAgICA8bGk+RW11bGF0ZSB0aGUgZmVhdHVyZSBpbiB0aGlzIGJpbmRpbmc8L2xpPgorCisgICAgICAgIDxsaT5SYWlzZSBhbiBleGNlcHRpb24gZm9yIG5vbiBpbXBsZW1lbnRlZCBmZWF0dXJlczwvbGk+CisgICAgICA8L3VsPgorCisgICAgICA8cD5Nb3N0IGxpa2VseSB5b3Ugd2lsbCBmb2xsb3cgYSBtaXhlZCBhcHByb2FjaC4gU29tZQorICAgICAgZmVhdHVyZXMgYXJlIGVhc3kgdG8gc2ltdWxhdGUsIG90aGVycyB3aWxsIGJlIGhhcmQgaWYgbm90CisgICAgICBpbXBvc3NpYmxlLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkknbSBxdWl0ZSBzdXJlIEkgZm9yZ290IHNvbWV0aGluZy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwgYi9kb2MvaHRtbC9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwKaW5kZXggM2ExMDEwNi4uYjFlNDBhMiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5odG1sCisrKyBiL2RvYy9odG1sL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbApAQCAtMSw1MTYgKzEsMTI4MiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PQotIkhUTUwgVGlkeSBmb3IgTGludXgveDg2ICh2ZXJzIDFzdCBEZWNlbWJlciAyMDA0KSwgc2VlIHd3dy53My5vcmciPgotPHRpdGxlPk5DVVJTRVMgUHJvZ3JhbW1pbmcgSE9XVE88L3RpdGxlPgotPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PQotIk1vZHVsYXIgRG9jQm9vayBIVE1MIFN0eWxlc2hlZXQgVmVyc2lvbiAxLjciPgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IkFSVElDTEUiIGJnY29sb3I9IiNGRkZGRkYiIHRleHQ9IiMwMDAwMDAiIGxpbms9Ci0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTxkaXYgY2xhc3M9IkFSVElDTEUiPgotPGRpdiBjbGFzcz0iVElUTEVQQUdFIj4KLTxoMSBjbGFzcz0iVElUTEUiPjxhIG5hbWU9IkFFTjIiIGlkPSJBRU4yIj5OQ1VSU0VTIFByb2dyYW1taW5nCi1IT1dUTzwvYT48L2gxPgotPGgzIGNsYXNzPSJBVVRIT1IiPjxhIG5hbWU9IkFFTjQiIGlkPSJBRU40Ij5QcmFkZWVwIFBhZGFsYTwvYT48L2gzPgotPGRpdiBjbGFzcz0iQUZGSUxJQVRJT04iPgotPGRpdiBjbGFzcz0iQUREUkVTUyI+Ci08cCBjbGFzcz0iQUREUkVTUyI+PGNvZGUgY2xhc3M9IkVNQUlMIj4mbHQ7PGEgaHJlZj0KLSJtYWlsdG86cHBhZGFsYUBnbWFpbC5jb20iPnBwYWRhbGFAZ21haWwuY29tPC9hPiZndDs8L2NvZGU+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxwIGNsYXNzPSJQVUJEQVRFIj52MS45LCAyMDA1LTA2LTIwPGJyPjwvcD4KLTxkaXYgY2xhc3M9IlJFVkhJU1RPUlkiPgotPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPHRyPgotPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY29sc3Bhbj0iMyI+PGI+UmV2aXNpb24KLUhpc3Rvcnk8L2I+PC90aD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzaW9uIDEuOTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDUtMDYtMjA8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPlRoZSBsaWNlbnNlIGhhcyBiZWVuIGNoYW5nZWQgdG8gdGhlCi1NSVQtc3R5bGUgbGljZW5zZSB1c2VkIGJ5IE5DVVJTRVMuIE5vdGUgdGhhdCB0aGUgcHJvZ3JhbXMgYXJlIGFsc28KLXJlLWxpY2Vuc2VkIHVuZGVyIHRoaXMuPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzaW9uIDEuODwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDUtMDYtMTc8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPkxvdHMgb2YgdXBkYXRlcy4gQWRkZWQgcmVmZXJlbmNlcyBhbmQKLXBlcmwgZXhhbXBsZXMuIENoYW5nZXMgdG8gZXhhbXBsZXMuIE1hbnkgZ3JhbW1hdGljYWwgYW5kIHN0eWxpc3RpYwotY2hhbmdlcyB0byB0aGUgY29udGVudC4gQ2hhbmdlcyB0byBOQ1VSU0VTIGhpc3RvcnkuPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzaW9uIDEuNy4xPC90ZD4KLTx0ZCBhbGlnbj0ibGVmdCI+MjAwMi0wNi0yNTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzZWQgYnk6IHBwYWRhbGE8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBhbGlnbj0ibGVmdCIgY29sc3Bhbj0iMyI+QWRkZWQgYSBSRUFETUUgZmlsZSBmb3IgYnVpbGRpbmcgYW5kCi1pbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIGZyb20gc291cmNlLjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2lvbiAxLjc8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij4yMDAyLTA2LTI1PC90ZD4KLTx0ZCBhbGlnbj0ibGVmdCI+UmV2aXNlZCBieTogcHBhZGFsYTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0IiBjb2xzcGFuPSIzIj5BZGRlZCAiT3RoZXIgZm9ybWF0cyIgc2VjdGlvbiBhbmQgbWFkZQotYSBsb3Qgb2YgZmFuY3kgY2hhbmdlcyB0byB0aGUgcHJvZ3JhbXMuIElubGluaW5nIG9mIHByb2dyYW1zIGlzCi1nb25lLjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2lvbiAxLjYuMTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDItMDItMjQ8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPlJlbW92ZWQgdGhlIG9sZCBDaGFuZ2Vsb2cgc2VjdGlvbiwKLWNsZWFuZWQgdGhlIG1ha2VmaWxlczwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2lvbiAxLjY8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij4yMDAyLTAyLTE2PC90ZD4KLTx0ZCBhbGlnbj0ibGVmdCI+UmV2aXNlZCBieTogcHBhZGFsYTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0IiBjb2xzcGFuPSIzIj5Db3JyZWN0ZWQgYSBsb3Qgb2Ygc3BlbGxpbmcgbWlzdGFrZXMsCi1hZGRlZCBBQ1MgdmFyaWFibGVzIHNlY3Rpb248L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBhbGlnbj0ibGVmdCI+UmV2aXNpb24gMS41PC90ZD4KLTx0ZCBhbGlnbj0ibGVmdCI+MjAwMi0wMS0wNTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzZWQgYnk6IHBwYWRhbGE8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBhbGlnbj0ibGVmdCIgY29sc3Bhbj0iMyI+Q2hhbmdlZCBzdHJ1Y3R1cmUgdG8gcHJlc2VudCBwcm9wZXIKLVRPQzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2lvbiAxLjMuMTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDEtMDctMjY8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPkNvcnJlY3RlZCBtYWludGFpbmVycyBwYXJhZ3JhcGgsCi1Db3JyZWN0ZWQgc3RhYmxlIHJlbGVhc2UgbnVtYmVyPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzaW9uIDEuMzwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDEtMDctMjQ8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPkFkZGVkIGNvcHlyaWdodCBub3RpY2VzIHRvIG1haW4KLWRvY3VtZW50IChMRFAgbGljZW5zZSkgYW5kIHByb2dyYW1zIChHUEwpLCBDb3JyZWN0ZWQKLXByaW50d19leGFtcGxlLjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2lvbiAxLjI8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij4yMDAxLTA2LTA1PC90ZD4KLTx0ZCBhbGlnbj0ibGVmdCI+UmV2aXNlZCBieTogcHBhZGFsYTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGFsaWduPSJsZWZ0IiBjb2xzcGFuPSIzIj5JbmNvcnBvcmF0ZWQgcmF2aSdzIGNoYW5nZXMuIE1haW5seSB0bwotaW50cm9kdWN0aW9uLCBtZW51LCBmb3JtLCBqdXN0Zm9yZnVuIHNlY3Rpb25zPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiPlJldmlzaW9uIDEuMTwvdGQ+Ci08dGQgYWxpZ249ImxlZnQiPjIwMDEtMDUtMjI8L3RkPgotPHRkIGFsaWduPSJsZWZ0Ij5SZXZpc2VkIGJ5OiBwcGFkYWxhPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgYWxpZ249ImxlZnQiIGNvbHNwYW49IjMiPkFkZGVkICJhIHdvcmQgYWJvdXQgd2luZG93IiBzZWN0aW9uLAotQWRkZWQgc2NhbndfZXhhbXBsZS48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxkaXY+Ci08ZGl2IGNsYXNzPSJBQlNUUkFDVCI+PGEgbmFtZT0iQUVONjciIGlkPSJBRU42NyI+PC9hPgotPHA+PGVtPlRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gYmUgYW4gIkFsbCBpbiBPbmUiIGd1aWRlIGZvcgotcHJvZ3JhbW1pbmcgd2l0aCBuY3Vyc2VzIGFuZCBpdHMgc2lzdGVyIGxpYnJhcmllcy4gV2UgZ3JhZHVhdGUgZnJvbQotYSBzaW1wbGUgIkhlbGxvIFdvcmxkIiBwcm9ncmFtIHRvIG1vcmUgY29tcGxleCBmb3JtIG1hbmlwdWxhdGlvbi4KLU5vIHByaW9yIGV4cGVyaWVuY2UgaW4gbmN1cnNlcyBpcyBhc3N1bWVkLiBTZW5kIGNvbW1lbnRzIHRvCi08YSBocmVmPSJtYWlsdG86cHBhZGFsYUBnbWFpbC5jb20iIHRhcmdldD0iX3RvcCI+dGhpcwotYWRkcmVzczwvYT48L2VtPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJUT0MiPgotPGRsPgotPGR0PjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvZHQ+Ci08ZHQ+MS4gPGEgaHJlZj0iI0lOVFJPIj5JbnRyb2R1Y3Rpb248L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD4xLjEuIDxhIGhyZWY9IiNXSEFUSVMiPldoYXQgaXMgTkNVUlNFUz88L2E+PC9kdD4KLTxkdD4xLjIuIDxhIGhyZWY9IiNXSEFUQ0FOV0VETyI+V2hhdCB3ZSBjYW4gZG8gd2l0aAotTkNVUlNFUzwvYT48L2R0PgotPGR0PjEuMy4gPGEgaHJlZj0iI1dIRVJFVE9HRVRJVCI+V2hlcmUgdG8gZ2V0IGl0PC9hPjwvZHQ+Ci08ZHQ+MS40LiA8YSBocmVmPSIjUFVSUE9TRSI+UHVycG9zZS9TY29wZSBvZiB0aGUgZG9jdW1lbnQ8L2E+PC9kdD4KLTxkdD4xLjUuIDxhIGhyZWY9IiNBQk9VVFBST0dSQU1TIj5BYm91dCB0aGUgUHJvZ3JhbXM8L2E+PC9kdD4KLTxkdD4xLjYuIDxhIGhyZWY9IiNPVEhFUkZPUk1BVFMiPk90aGVyIEZvcm1hdHMgb2YgdGhlCi1kb2N1bWVudDwvYT48L2R0PgotPGR0PjEuNy4gPGEgaHJlZj0iI0NSRURJVFMiPkNyZWRpdHM8L2E+PC9kdD4KLTxkdD4xLjguIDxhIGhyZWY9IiNXSVNITElTVCI+V2lzaCBMaXN0PC9hPjwvZHQ+Ci08ZHQ+MS45LiA8YSBocmVmPSIjQ09QWVJJR0hUIj5Db3B5cmlnaHQ8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjIuIDxhIGhyZWY9IiNIRUxMT1dPUkxEIj5IZWxsbyBXb3JsZCAhISE8L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD4yLjEuIDxhIGhyZWY9IiNDT01QSUxFQ1VSU0VTIj5Db21waWxpbmcgV2l0aCB0aGUgTkNVUlNFUwotTGlicmFyeTwvYT48L2R0PgotPGR0PjIuMi4gPGEgaHJlZj0iI0RJU1NFQ1RJT04iPkRpc3NlY3Rpb248L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjMuIDxhIGhyZWY9IiNHT1JZIj5UaGUgR29yeSBEZXRhaWxzPC9hPjwvZHQ+Ci08ZHQ+NC4gPGEgaHJlZj0iI0lOSVQiPkluaXRpYWxpemF0aW9uPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+NC4xLiA8YSBocmVmPSIjQUJPVVRJTklUIj5Jbml0aWFsaXphdGlvbiBmdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD40LjIuIDxhIGhyZWY9IiNSQVdDQlJFQUsiPnJhdygpIGFuZCBjYnJlYWsoKTwvYT48L2R0PgotPGR0PjQuMy4gPGEgaHJlZj0iI0VDSE9OT0VDSE8iPmVjaG8oKSBhbmQgbm9lY2hvKCk8L2E+PC9kdD4KLTxkdD40LjQuIDxhIGhyZWY9IiNLRVlQQUQiPmtleXBhZCgpPC9hPjwvZHQ+Ci08ZHQ+NC41LiA8YSBocmVmPSIjSEFMRkRFTEFZIj5oYWxmZGVsYXkoKTwvYT48L2R0PgotPGR0PjQuNi4gPGEgaHJlZj0iI01JU0NJTklUIj5NaXNjZWxsYW5lb3VzIEluaXRpYWxpemF0aW9uCi1mdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD40LjcuIDxhIGhyZWY9IiNJTklURVgiPkFuIEV4YW1wbGU8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjUuIDxhIGhyZWY9IiNBV09SRFdJTkRPV1MiPkEgV29yZCBhYm91dCBXaW5kb3dzPC9hPjwvZHQ+Ci08ZHQ+Ni4gPGEgaHJlZj0iI1BSSU5UVyI+T3V0cHV0IGZ1bmN0aW9uczwvYT48L2R0PgotPGRkPgotPGRsPgotPGR0PjYuMS4gPGEgaHJlZj0iI0FERENIQ0xBU1MiPmFkZGNoKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9hPjwvZHQ+Ci08ZHQ+Ni4yLiA8YSBocmVmPSIjQUVOMjk4Ij5tdmFkZGNoKCksIHdhZGRjaCgpIGFuZAotbXZ3YWRkY2goKTwvYT48L2R0PgotPGR0PjYuMy4gPGEgaHJlZj0iI1BSSU5UV0NMQVNTIj5wcmludHcoKSBjbGFzcyBvZgotZnVuY3Rpb25zPC9hPjwvZHQ+Ci08ZHQ+Ni40LiA8YSBocmVmPSIjQUREU1RSQ0xBU1MiPmFkZHN0cigpIGNsYXNzIG9mCi1mdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD42LjUuIDxhIGhyZWY9IiNBQ0FVVElPTiI+QSB3b3JkIG9mIGNhdXRpb248L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjcuIDxhIGhyZWY9IiNTQ0FOVyI+SW5wdXQgZnVuY3Rpb25zPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+Ny4xLiA8YSBocmVmPSIjR0VUQ0hDTEFTUyI+Z2V0Y2goKSBjbGFzcyBvZiBmdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD43LjIuIDxhIGhyZWY9IiNTQ0FOV0NMQVNTIj5zY2FudygpIGNsYXNzIG9mIGZ1bmN0aW9uczwvYT48L2R0PgotPGR0PjcuMy4gPGEgaHJlZj0iI0dFVFNUUkNMQVNTIj5nZXRzdHIoKSBjbGFzcyBvZgotZnVuY3Rpb25zPC9hPjwvZHQ+Ci08ZHQ+Ny40LiA8YSBocmVmPSIjR0VUU1RSRVgiPlNvbWUgZXhhbXBsZXM8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjguIDxhIGhyZWY9IiNBVFRSSUIiPkF0dHJpYnV0ZXM8L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD44LjEuIDxhIGhyZWY9IiNBVFRSSUJERVRBSUxTIj5UaGUgZGV0YWlsczwvYT48L2R0PgotPGR0PjguMi4gPGEgaHJlZj0iI0FUVFJPTlZTQVRUUlNFVCI+YXR0cm9uKCkgdnMgYXR0cnNldCgpPC9hPjwvZHQ+Ci08ZHQ+OC4zLiA8YSBocmVmPSIjQVRUUl9HRVQiPmF0dHJfZ2V0KCk8L2E+PC9kdD4KLTxkdD44LjQuIDxhIGhyZWY9IiNBVFRSX0ZVTkNTIj5hdHRyXyBmdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD44LjUuIDxhIGhyZWY9IiNXQVRUUkZVTkNTIj53YXR0ciBmdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD44LjYuIDxhIGhyZWY9IiNDSEdBVCI+Y2hnYXQoKSBmdW5jdGlvbnM8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjkuIDxhIGhyZWY9IiNXSU5ET1dTIj5XaW5kb3dzPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+OS4xLiA8YSBocmVmPSIjV0lORE9XQkFTSUNTIj5UaGUgYmFzaWNzPC9hPjwvZHQ+Ci08ZHQ+OS4yLiA8YSBocmVmPSIjTEVUQkVXSU5ET1ciPkxldCB0aGVyZSBiZSBhIFdpbmRvdyAhISE8L2E+PC9kdD4KLTxkdD45LjMuIDxhIGhyZWY9IiNCT1JERVJFWEVYUEwiPkV4cGxhbmF0aW9uPC9hPjwvZHQ+Ci08ZHQ+OS40LiA8YSBocmVmPSIjT1RIRVJTVFVGRiI+VGhlIG90aGVyIHN0dWZmIGluIHRoZQotZXhhbXBsZTwvYT48L2R0PgotPGR0PjkuNS4gPGEgaHJlZj0iI09USEVSQk9SREVSRlVOQ1MiPk90aGVyIEJvcmRlcgotZnVuY3Rpb25zPC9hPjwvZHQ+Ci08L2RsPgotPC9kZD4KLTxkdD4xMC4gPGEgaHJlZj0iI0NPTE9SIj5Db2xvcnM8L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD4xMC4xLiA8YSBocmVmPSIjQ09MT1JCQVNJQ1MiPlRoZSBiYXNpY3M8L2E+PC9kdD4KLTxkdD4xMC4yLiA8YSBocmVmPSIjQ0hBTkdFQ09MT1JERUZTIj5DaGFuZ2luZyBDb2xvcgotRGVmaW5pdGlvbnM8L2E+PC9kdD4KLTxkdD4xMC4zLiA8YSBocmVmPSIjQ09MT1JDT05URU5UIj5Db2xvciBDb250ZW50PC9hPjwvZHQ+Ci08L2RsPgotPC9kZD4KLTxkdD4xMS4gPGEgaHJlZj0iI0tFWVMiPkludGVyZmFjaW5nIHdpdGggdGhlIGtleSBib2FyZDwvYT48L2R0PgotPGRkPgotPGRsPgotPGR0PjExLjEuIDxhIGhyZWY9IiNLRVlTQkFTSUNTIj5UaGUgQmFzaWNzPC9hPjwvZHQ+Ci08ZHQ+MTEuMi4gPGEgaHJlZj0iI1NJTVBMRUtFWUVYIj5BIFNpbXBsZSBLZXkgVXNhZ2UKLWV4YW1wbGU8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjEyLiA8YSBocmVmPSIjTU9VU0UiPkludGVyZmFjaW5nIHdpdGggdGhlIG1vdXNlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+MTIuMS4gPGEgaHJlZj0iI01PVVNFQkFTSUNTIj5UaGUgQmFzaWNzPC9hPjwvZHQ+Ci08ZHQ+MTIuMi4gPGEgaHJlZj0iI0dFVFRJTkdFVkVOVFMiPkdldHRpbmcgdGhlIGV2ZW50czwvYT48L2R0PgotPGR0PjEyLjMuIDxhIGhyZWY9IiNNT1VTRVRPR0VUSEVSIj5QdXR0aW5nIGl0IGFsbCBUb2dldGhlcjwvYT48L2R0PgotPGR0PjEyLjQuIDxhIGhyZWY9IiNNSVNDTU9VU0VGVU5DUyI+TWlzY2VsbGFuZW91cwotRnVuY3Rpb25zPC9hPjwvZHQ+Ci08L2RsPgotPC9kZD4KLTxkdD4xMy4gPGEgaHJlZj0iI1NDUkVFTiI+U2NyZWVuIE1hbmlwdWxhdGlvbjwvYT48L2R0PgotPGRkPgotPGRsPgotPGR0PjEzLjEuIDxhIGhyZWY9IiNHRVRZWCI+Z2V0eXgoKSBmdW5jdGlvbnM8L2E+PC9kdD4KLTxkdD4xMy4yLiA8YSBocmVmPSIjU0NSRUVORFVNUCI+U2NyZWVuIER1bXBpbmc8L2E+PC9kdD4KLTxkdD4xMy4zLiA8YSBocmVmPSIjV0lORE9XRFVNUCI+V2luZG93IER1bXBpbmc8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjE0LiA8YSBocmVmPSIjTUlTQyI+TWlzY2VsbGFuZW91cyBmZWF0dXJlczwvYT48L2R0PgotPGRkPgotPGRsPgotPGR0PjE0LjEuIDxhIGhyZWY9IiNDVVJTU0VUIj5jdXJzX3NldCgpPC9hPjwvZHQ+Ci08ZHQ+MTQuMi4gPGEgaHJlZj0iI1RFTVBMRUFWRSI+VGVtcG9yYXJpbHkgTGVhdmluZyBDdXJzZXMKLW1vZGU8L2E+PC9kdD4KLTxkdD4xNC4zLiA8YSBocmVmPSIjQUNTVkFSUyI+QUNTXyB2YXJpYWJsZXM8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjE1LiA8YSBocmVmPSIjT1RIRVJMSUIiPk90aGVyIGxpYnJhcmllczwvYT48L2R0PgotPGR0PjE2LiA8YSBocmVmPSIjUEFORUxTIj5QYW5lbCBMaWJyYXJ5PC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+MTYuMS4gPGEgaHJlZj0iI1BBTkVMQkFTSUNTIj5UaGUgQmFzaWNzPC9hPjwvZHQ+Ci08ZHQ+MTYuMi4gPGEgaHJlZj0iI0NPTVBJTEVQQU5FTFMiPkNvbXBpbGluZyBXaXRoIHRoZSBQYW5lbHMKLUxpYnJhcnk8L2E+PC9kdD4KLTxkdD4xNi4zLiA8YSBocmVmPSIjUEFORUxCUk9XU0lORyI+UGFuZWwgV2luZG93IEJyb3dzaW5nPC9hPjwvZHQ+Ci08ZHQ+MTYuNC4gPGEgaHJlZj0iI1VTRVJQVFJVU0lORyI+VXNpbmcgVXNlciBQb2ludGVyczwvYT48L2R0PgotPGR0PjE2LjUuIDxhIGhyZWY9IiNQQU5FTE1PVkVSRVNJWkUiPk1vdmluZyBhbmQgUmVzaXppbmcKLVBhbmVsczwvYT48L2R0PgotPGR0PjE2LjYuIDxhIGhyZWY9IiNQQU5FTFNIT1dISURFIj5IaWRpbmcgYW5kIFNob3dpbmcKLVBhbmVsczwvYT48L2R0PgotPGR0PjE2LjcuIDxhIGhyZWY9IiNQQU5FTEFCT1ZFIj5wYW5lbF9hYm92ZSgpIGFuZCBwYW5lbF9iZWxvdygpCi1GdW5jdGlvbnM8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjE3LiA8YSBocmVmPSIjTUVOVVMiPk1lbnVzIExpYnJhcnk8L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD4xNy4xLiA8YSBocmVmPSIjTUVOVUJBU0lDUyI+VGhlIEJhc2ljczwvYT48L2R0PgotPGR0PjE3LjIuIDxhIGhyZWY9IiNDT01QSUxFTUVOVVMiPkNvbXBpbGluZyBXaXRoIHRoZSBNZW51Ci1MaWJyYXJ5PC9hPjwvZHQ+Ci08ZHQ+MTcuMy4gPGEgaHJlZj0iI01FTlVEUklWRVIiPk1lbnUgRHJpdmVyOiBUaGUgd29yayBob3JzZSBvZiB0aGUKLW1lbnUgc3lzdGVtPC9hPjwvZHQ+Ci08ZHQ+MTcuNC4gPGEgaHJlZj0iI01FTlVXSU5ET1dTIj5NZW51IFdpbmRvd3M8L2E+PC9kdD4KLTxkdD4xNy41LiA8YSBocmVmPSIjU0NST0xMTUVOVVMiPlNjcm9sbGluZyBNZW51czwvYT48L2R0PgotPGR0PjE3LjYuIDxhIGhyZWY9IiNNVUxUSUNPTFVNTiI+TXVsdGkgQ29sdW1uYXIgTWVudXM8L2E+PC9kdD4KLTxkdD4xNy43LiA8YSBocmVmPSIjTVVMVElWQUxVRU1FTlVTIj5NdWx0aSBWYWx1ZWQgTWVudXM8L2E+PC9kdD4KLTxkdD4xNy44LiA8YSBocmVmPSIjTUVOVU9QVCI+TWVudSBPcHRpb25zPC9hPjwvZHQ+Ci08ZHQ+MTcuOS4gPGEgaHJlZj0iI01FTlVVU0VSUFRSIj5UaGUgdXNlZnVsIFVzZXIgUG9pbnRlcjwvYT48L2R0PgotPC9kbD4KLTwvZGQ+Ci08ZHQ+MTguIDxhIGhyZWY9IiNGT1JNUyI+Rm9ybXMgTGlicmFyeTwvYT48L2R0PgotPGRkPgotPGRsPgotPGR0PjE4LjEuIDxhIGhyZWY9IiNGT1JNQkFTSUNTIj5UaGUgQmFzaWNzPC9hPjwvZHQ+Ci08ZHQ+MTguMi4gPGEgaHJlZj0iI0NPTVBJTEVGT1JNUyI+Q29tcGlsaW5nIFdpdGggdGhlIEZvcm1zCi1MaWJyYXJ5PC9hPjwvZHQ+Ci08ZHQ+MTguMy4gPGEgaHJlZj0iI1BMQVlGSUVMRFMiPlBsYXlpbmcgd2l0aCBGaWVsZHM8L2E+PC9kdD4KLTxkdD4xOC40LiA8YSBocmVmPSIjRk9STVdJTkRPV1MiPkZvcm0gV2luZG93czwvYT48L2R0PgotPGR0PjE4LjUuIDxhIGhyZWY9IiNGSUxFRFZBTElEQVRFIj5GaWVsZCBWYWxpZGF0aW9uPC9hPjwvZHQ+Ci08ZHQ+MTguNi4gPGEgaHJlZj0iI0ZPUk1EUklWRVIiPkZvcm0gRHJpdmVyOiBUaGUgd29yayBob3JzZSBvZiB0aGUKLWZvcm1zIHN5c3RlbTwvYT48L2R0PgotPC9kbD4KLTwvZGQ+Ci08ZHQ+MTkuIDxhIGhyZWY9IiNUT09MUyI+VG9vbHMgYW5kIFdpZGdldCBMaWJyYXJpZXM8L2E+PC9kdD4KLTxkZD4KLTxkbD4KLTxkdD4xOS4xLiA8YSBocmVmPSIjQ0RLIj5DREsgKEN1cnNlcyBEZXZlbG9wbWVudCBLaXQpPC9hPjwvZHQ+Ci08ZHQ+MTkuMi4gPGEgaHJlZj0iI0RJQUxPRyI+VGhlIGRpYWxvZzwvYT48L2R0PgotPGR0PjE5LjMuIDxhIGhyZWY9IiNQRVJMQ1VSU0VTIj5QZXJsIEN1cnNlcyBNb2R1bGVzIENVUlNFUzo6Rk9STQotYW5kIENVUlNFUzo6V0lER0VUUzwvYT48L2R0PgotPC9kbD4KLTwvZGQ+Ci08ZHQ+MjAuIDxhIGhyZWY9IiNKVVNURk9SRlVOIj5KdXN0IEZvciBGdW4gISEhPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGw+Ci08ZHQ+MjAuMS4gPGEgaHJlZj0iI0dBTUVPRkxJRkUiPlRoZSBHYW1lIG9mIExpZmU8L2E+PC9kdD4KLTxkdD4yMC4yLiA8YSBocmVmPSIjTUFHSUMiPk1hZ2ljIFNxdWFyZTwvYT48L2R0PgotPGR0PjIwLjMuIDxhIGhyZWY9IiNIQU5PSSI+VG93ZXJzIG9mIEhhbm9pPC9hPjwvZHQ+Ci08ZHQ+MjAuNC4gPGEgaHJlZj0iI1FVRUVOUyI+UXVlZW5zIFB1enpsZTwvYT48L2R0PgotPGR0PjIwLjUuIDxhIGhyZWY9IiNTSFVGRkxFIj5TaHVmZmxlPC9hPjwvZHQ+Ci08ZHQ+MjAuNi4gPGEgaHJlZj0iI1RUIj5UeXBpbmcgVHV0b3I8L2E+PC9kdD4KLTwvZGw+Ci08L2RkPgotPGR0PjIxLiA8YSBocmVmPSIjUkVGIj5SZWZlcmVuY2VzPC9hPjwvZHQ+Ci08L2RsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJJTlRSTyIgaWQ9IklOVFJPIj4xLgotSW50cm9kdWN0aW9uPC9hPjwvaDI+Ci08cD5JbiB0aGUgb2xkZW4gZGF5cyBvZiB0ZWxldHlwZSB0ZXJtaW5hbHMsIHRlcm1pbmFscyB3ZXJlIGF3YXkKLWZyb20gY29tcHV0ZXJzIGFuZCB3ZXJlIGNvbm5lY3RlZCB0byB0aGVtIHRocm91Z2ggc2VyaWFsIGNhYmxlcy4KLVRoZSB0ZXJtaW5hbHMgY291bGQgYmUgY29uZmlndXJlZCBieSBzZW5kaW5nIGEgc2VyaWVzIG9mIGJ5dGVzLiBBbGwKLXRoZSBjYXBhYmlsaXRpZXMgKHN1Y2ggYXMgbW92aW5nIHRoZSBjdXJzb3IgdG8gYSBuZXcgbG9jYXRpb24sCi1lcmFzaW5nIHBhcnQgb2YgdGhlIHNjcmVlbiwgc2Nyb2xsaW5nIHRoZSBzY3JlZW4sIGNoYW5naW5nIG1vZGVzCi1ldGMuKSBvZiB0ZXJtaW5hbHMgY291bGQgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGVzZSBzZXJpZXMgb2YgYnl0ZXMuCi1UaGVzZSBjb250cm9sIHNlZXVxbmNlcyBhcmUgdXN1YWxseSBjYWxsZWQgZXNjYXBlIHNlcXVlbmNlcywKLWJlY2F1c2UgdGhleSBzdGFydCB3aXRoIGFuIGVzY2FwZSgweDFCKSBjaGFyYWN0ZXIuIEV2ZW4gdG9kYXksIHdpdGgKLXByb3BlciBlbXVsYXRpb24sIHdlIGNhbiBzZW5kIGVzY2FwZSBzZXF1ZW5jZXMgdG8gdGhlIGVtdWxhdG9yIGFuZAotYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgb24gYSB0ZXJtaW5hbCB3aW5kb3cuPC9wPgotPHA+U3VwcG9zZSB5b3Ugd2FudGVkIHRvIHByaW50IGEgbGluZSBpbiBjb2xvci4gVHJ5IHR5cGluZyB0aGlzIG9uCi15b3VyIGNvbnNvbGUuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPmVjaG8gIl5bWzA7MzE7NDBtSW4gQ29sb3IiPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIGZpcnN0IGNoYXJhY3RlciBpcyBhbiBlc2NhcGUgY2hhcmFjdGVyLCB3aGljaCBsb29rcyBsaWtlIHR3bwotY2hhcmFjdGVycyBeIGFuZCBbLiBUbyBiZSBhYmxlIHRvIHByaW50IGl0LCB5b3UgaGF2ZSB0byBwcmVzcwotQ1RSTCtWIGFuZCB0aGVuIHRoZSBFU0Mga2V5LiBBbGwgdGhlIG90aGVycyBhcmUgbm9ybWFsIHByaW50YWJsZQotY2hhcmFjdGVycy4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgc3RyaW5nICJJbiBDb2xvciIgaW4gcmVkLgotSXQgc3RheXMgdGhhdCB3YXkgYW5kIHRvIHJldmVydCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtb2RlIHR5cGUKLXRoaXMuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPmVjaG8gIl5bWzA7Mzc7NDBtIjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPk5vdywgd2hhdCBkbyB0aGVzZSBtYWdpYyBjaGFyYWN0ZXJzIG1lYW4/IERpZmZpY3VsdCB0bwotY29tcHJlaGVuZD8gVGhleSBtaWdodCBldmVuIGJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHRlcm1pbmFscy4KLVNvIHRoZSBkZXNpZ25lcnMgb2YgVU5JWCBpbnZlbnRlZCBhIG1lY2hhbmlzbSBuYW1lZCA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPnRlcm1jYXA8L3Zhcj4uIEl0IGlzIGEgZmlsZSB0aGF0IGxpc3RzIGFsbCB0aGUKLWNhcGFiaWxpdGllcyBvZiBhIHBhcnRpY3VsYXIgdGVybWluYWwsIGFsb25nIHdpdGggdGhlIGVzY2FwZQotc2VxdWVuY2VzIG5lZWRlZCB0byBhY2hpZXZlIGEgcGFydGljdWxhciBlZmZlY3QuIEluIHRoZSBsYXRlcgoteWVhcnMsIHRoaXMgd2FzIHJlcGxhY2VkIGJ5IDx2YXIgY2xhc3M9IkxJVEVSQUwiPnRlcm1pbmZvPC92YXI+LgotV2l0aG91dCBkZWx2aW5nIHRvbyBtdWNoIGludG8gZGV0YWlscywgdGhpcyBtZWNoYW5pc20gYWxsb3dzCi1hcHBsaWNhdGlvbiBwcm9ncmFtcyB0byBxdWVyeSB0aGUgdGVybWluZm8gZGF0YWJhc2UgYW5kIG9idGFpbiB0aGUKLWNvbnRyb2wgY2hhcmFjdGVycyB0byBiZSBzZW50IHRvIGEgdGVybWluYWwgb3IgdGVybWluYWwKLWVtdWxhdG9yLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IldIQVRJUyIgaWQ9IldIQVRJUyI+MS4xLiBXaGF0IGlzCi1OQ1VSU0VTPzwvYT48L2gzPgotPHA+WW91IG1pZ2h0IGJlIHdvbmRlcmluZywgd2hhdCB0aGUgaW1wb3J0IG9mIGFsbCB0aGlzIHRlY2huaWNhbAotZ2liYmVyaXNoIGlzLiBJbiB0aGUgYWJvdmUgc2NlbmFyaW8sIGV2ZXJ5IGFwcGxpY2F0aW9uIHByb2dyYW0gaXMKLXN1cHBvc2VkIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5mbyBhbmQgcGVyZm9ybSB0aGUgbmVjZXNzYXJ5IHN0dWZmCi0oc2VuZGluZyBjb250cm9sIGNoYXJhY3RlcnMgZXRjLikuIEl0IHNvb24gYmVjYW1lIGRpZmZpY3VsdCB0bwotbWFuYWdlIHRoaXMgY29tcGxleGl0eSBhbmQgdGhpcyBnYXZlIGJpcnRoIHRvICdDVVJTRVMnLiBDdXJzZXMgaXMgYQotcHVuIG9uIHRoZSBuYW1lICJjdXJzb3Igb3B0aW1pemF0aW9uIi4gVGhlIEN1cnNlcyBsaWJyYXJ5IGZvcm1zIGEKLXdyYXBwZXIgb3ZlciB3b3JraW5nIHdpdGggcmF3IHRlcm1pbmFsIGNvZGVzLCBhbmQgcHJvdmlkZXMgaGlnaGx5Ci1mbGV4aWJsZSBhbmQgZWZmaWNpZW50IEFQSSAoQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlKS4gSXQKLXByb3ZpZGVzIGZ1bmN0aW9ucyB0byBtb3ZlIHRoZSBjdXJzb3IsIGNyZWF0ZSB3aW5kb3dzLCBwcm9kdWNlCi1jb2xvcnMsIHBsYXkgd2l0aCBtb3VzZSBldGMuIFRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtcyBuZWVkIG5vdAotd29ycnkgYWJvdXQgdGhlIHVuZGVybHlpbmcgdGVybWluYWwgY2FwYWJpbGl0aWVzLjwvcD4KLTxwPlNvIHdoYXQgaXMgTkNVUlNFUz8gTkNVUlNFUyBpcyBhIGNsb25lIG9mIHRoZSBvcmlnaW5hbCBTeXN0ZW0gVgotUmVsZWFzZSA0LjAgKFNWcjQpIGN1cnNlcy4gSXQgaXMgYSBmcmVlbHkgZGlzdHJpYnV0YWJsZSBsaWJyYXJ5LAotZnVsbHkgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHZlcnNpb24gb2YgY3Vyc2VzLiBJbiBzaG9ydCwgaXQgaXMgYQotbGlicmFyeSBvZiBmdW5jdGlvbnMgdGhhdCBtYW5hZ2VzIGFuIGFwcGxpY2F0aW9uJ3MgZGlzcGxheSBvbgotY2hhcmFjdGVyLWNlbGwgdGVybWluYWxzLiBJbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkb2N1bWVudCwgdGhlCi10ZXJtcyBjdXJzZXMgYW5kIG5jdXJzZXMgYXJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5LjwvcD4KLTxwPkEgZGV0YWlsZWQgaGlzdG9yeSBvZiBOQ1VSU0VTIGNhbiBiZSBmb3VuZCBpbiB0aGUgTkVXUyBmaWxlIGZyb20KLXRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uLiBUaGUgY3VycmVudCBwYWNrYWdlIGlzIG1haW50YWluZWQgYnkKLTxhIGhyZWY9Im1haWx0bzpkaWNrZXlAaGlzLmNvbSIgdGFyZ2V0PSJfdG9wIj5UaG9tYXMgRGlja2V5PC9hPi4KLVlvdSBjYW4gY29udGFjdCB0aGUgbWFpbnRhaW5lcnMgYXQgPGEgaHJlZj0KLSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyIgdGFyZ2V0PQotIl90b3AiPmJ1Zy1uY3Vyc2VzQGdudS5vcmc8L2E+LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iV0hBVENBTldFRE8iIGlkPSJXSEFUQ0FOV0VETyI+MS4yLiBXaGF0Ci13ZSBjYW4gZG8gd2l0aCBOQ1VSU0VTPC9hPjwvaDM+Ci08cD5OQ1VSU0VTIG5vdCBvbmx5IGNyZWF0ZXMgYSB3cmFwcGVyIG92ZXIgdGVybWluYWwgY2FwYWJpbGl0aWVzLAotYnV0IGFsc28gZ2l2ZXMgYSByb2J1c3QgZnJhbWV3b3JrIHRvIGNyZWF0ZSBuaWNlIGxvb2tpbmcgVUkgKFVzZXIKLUludGVyZmFjZSlzIGluIHRleHQgbW9kZS4gSXQgcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGNyZWF0ZSB3aW5kb3dzCi1ldGMuIEl0cyBzaXN0ZXIgbGlicmFyaWVzIHBhbmVsLCBtZW51IGFuZCBmb3JtIHByb3ZpZGUgYW4gZXh0ZW5zaW9uCi10byB0aGUgYmFzaWMgY3Vyc2VzIGxpYnJhcnkuIFRoZXNlIGxpYnJhcmllcyB1c3VhbGx5IGNvbWUgYWxvbmcKLXdpdGggY3Vyc2VzLiBPbmUgY2FuIGNyZWF0ZSBhcHBsaWNhdGlvbnMgdGhhdCBjb250YWluIG11bHRpcGxlCi13aW5kb3dzLCBtZW51cywgcGFuZWxzIGFuZCBmb3Jtcy4gV2luZG93cyBjYW4gYmUgbWFuYWdlZAotaW5kZXBlbmRlbnRseSwgY2FuIHByb3ZpZGUgJ3Njcm9sbGFiaWxpdHknIGFuZCBldmVuIGNhbiBiZQotaGlkZGVuLjwvcD4KLTxwPk1lbnVzIHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBhbiBlYXN5IGNvbW1hbmQgc2VsZWN0aW9uIG9wdGlvbi4KLUZvcm1zIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBlYXN5LXRvLXVzZSBkYXRhIGVudHJ5IGFuZCBkaXNwbGF5Ci13aW5kb3dzLiBQYW5lbHMgZXh0ZW5kIHRoZSBjYXBhYmlsaXRpZXMgb2YgbmN1cnNlcyB0byBkZWFsIHdpdGgKLW92ZXJsYXBwaW5nIGFuZCBzdGFja2VkIHdpbmRvd3MuPC9wPgotPHA+VGhlc2UgYXJlIGp1c3Qgc29tZSBvZiB0aGUgYmFzaWMgdGhpbmdzIHdlIGNhbiBkbyB3aXRoIG5jdXJzZXMuCi1BcyB3ZSBtb3ZlIGFsb25nLCBXZSB3aWxsIHNlZSBhbGwgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGVzZQotbGlicmFyaWVzLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iV0hFUkVUT0dFVElUIiBpZD0iV0hFUkVUT0dFVElUIj4xLjMuCi1XaGVyZSB0byBnZXQgaXQ8L2E+PC9oMz4KLTxwPkFsbCByaWdodCwgbm93IHRoYXQgeW91IGtub3cgd2hhdCB5b3UgY2FuIGRvIHdpdGggbmN1cnNlcywgeW91Ci1tdXN0IGJlIHJlYXJpbmcgdG8gZ2V0IHN0YXJ0ZWQuIE5DVVJTRVMgaXMgdXN1YWxseSBzaGlwcGVkIHdpdGgKLXlvdXIgaW5zdGFsbGF0aW9uLiBJbiBjYXNlIHlvdSBkb24ndCBoYXZlIHRoZSBsaWJyYXJ5IG9yIHdhbnQgdG8KLWNvbXBpbGUgaXQgb24geW91ciBvd24sIHJlYWQgb24uPC9wPgotPHA+PGVtPkNvbXBpbGluZyB0aGUgcGFja2FnZTwvZW0+PC9wPgotPHA+TkNVUlNFUyBjYW4gYmUgb2J0YWluZWQgZnJvbSA8YSBocmVmPQotImZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvbmN1cnNlcy9uY3Vyc2VzLnRhci5neiIgdGFyZ2V0PQotIl90b3AiPmZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvbmN1cnNlcy9uY3Vyc2VzLnRhci5nejwvYT4gb3IgYW55Ci1vZiB0aGUgZnRwIHNpdGVzIG1lbnRpb25lZCBpbiA8YSBocmVmPQotImh0dHA6Ly93d3cuZ251Lm9yZy9vcmRlci9mdHAuaHRtbCIgdGFyZ2V0PQotIl90b3AiPmh0dHA6Ly93d3cuZ251Lm9yZy9vcmRlci9mdHAuaHRtbDwvYT4uPC9wPgotPHA+UmVhZCB0aGUgUkVBRE1FIGFuZCBJTlNUQUxMIGZpbGVzIGZvciBkZXRhaWxzIG9uIHRvIGhvdyB0bwotaW5zdGFsbCBpdC4gSXQgdXN1YWxseSBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+ICAgIHRhciB6eHZmIG5jdXJzZXMmbHQ7dmVyc2lvbiZndDsudGFyLmd6ICAjIHVuemlwIGFuZCB1bnRhciB0aGUgYXJjaGl2ZQorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxIVE1MCis+PEhFQUQKKz48VElUTEUKKz4gTkNVUlNFUyBQcm9ncmFtbWluZyBIT1dUTyA8L1RJVExFCis+PE1FVEEKK05BTUU9IkdFTkVSQVRPUiIKK0NPTlRFTlQ9Ik1vZHVsYXIgRG9jQm9vayBIVE1MIFN0eWxlc2hlZXQgVmVyc2lvbiAxLjc5Ij48L0hFQUQKKz48Qk9EWQorQ0xBU1M9IkFSVElDTEUiCitCR0NPTE9SPSIjRkZGRkZGIgorVEVYVD0iIzAwMDAwMCIKK0xJTks9IiMwMDAwRkYiCitWTElOSz0iIzg0MDA4NCIKK0FMSU5LPSIjMDAwMEZGIgorPjxESVYKK0NMQVNTPSJBUlRJQ0xFIgorPjxESVYKK0NMQVNTPSJUSVRMRVBBR0UiCis+PEgxCitDTEFTUz0iVElUTEUiCis+PEEKK05BTUU9IkFFTjIiCis+TkNVUlNFUyBQcm9ncmFtbWluZyBIT1dUTzwvQQorPjwvSDEKKz48SDMKK0NMQVNTPSJBVVRIT1IiCis+PEEKK05BTUU9IkFFTjQiCis+IFByYWRlZXAgICBQYWRhbGEgPC9BCis+PC9IMworPjxESVYKK0NMQVNTPSJBRkZJTElBVElPTiIKKz48RElWCitDTEFTUz0iQUREUkVTUyIKKz48UAorQ0xBU1M9IkFERFJFU1MiCis+PENPREUKK0NMQVNTPSJFTUFJTCIKKz4mIzYwOzxBCitIUkVGPSJtYWlsdG86cHBhZGFsYUBnbWFpbC5jb20iCis+cHBhZGFsYUBnbWFpbC5jb208L0EKKz4mIzYyOzwvQ09ERQorPjwvUAorPjwvRElWCis+PC9ESVYKKz48UAorQ0xBU1M9IlBVQkRBVEUiCis+djEuOSwgMjAwNS0wNi0yMDxCUj48L1AKKz48RElWCitDTEFTUz0iUkVWSElTVE9SWSIKKz48VEFCTEUKK1dJRFRIPSIxMDAlIgorQk9SREVSPSIwIgorPjxUUgorPjxUSAorQUxJR049IkxFRlQiCitWQUxJR049IlRPUCIKK0NPTFNQQU49IjMiCis+PEIKKz5SZXZpc2lvbiBIaXN0b3J5PC9CCis+PC9USAorPjwvVFIKKz48VFIKKz48VEQKK0FMSUdOPSJMRUZUIgorPlJldmlzaW9uIDEuOTwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPjIwMDUtMDYtMjA8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2VkIGJ5OiBwcGFkYWxhPC9URAorPjwvVFIKKz48VFIKKz48VEQKK0FMSUdOPSJMRUZUIgorQ09MU1BBTj0iMyIKKz5UaGUgbGljZW5zZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHRoZSBNSVQtc3R5bGUgbGljZW5zZSB1c2VkCisgICAgICAgIGJ5IE5DVVJTRVMuIE5vdGUgdGhhdCB0aGUgcHJvZ3JhbXMgYXJlIGFsc28gcmUtbGljZW5zZWQgdW5kZXIgdGhpcy48L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNpb24gMS44PC9URAorPjxURAorQUxJR049IkxFRlQiCis+MjAwNS0wNi0xNzwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPlJldmlzZWQgYnk6IHBwYWRhbGE8L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCitDT0xTUEFOPSIzIgorPkxvdHMgb2YgdXBkYXRlcy4gQWRkZWQgcmVmZXJlbmNlcyBhbmQgcGVybCBleGFtcGxlcy4KKyAgICAgICAgQ2hhbmdlcyB0byBleGFtcGxlcy4gTWFueSBncmFtbWF0aWNhbCBhbmQgc3R5bGlzdGljIGNoYW5nZXMgdG8gdGhlCisgICAgICAgIGNvbnRlbnQuIENoYW5nZXMgdG8gTkNVUlNFUyBoaXN0b3J5LjwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2lvbiAxLjcuMTwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPjIwMDItMDYtMjU8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2VkIGJ5OiBwcGFkYWxhPC9URAorPjwvVFIKKz48VFIKKz48VEQKK0FMSUdOPSJMRUZUIgorQ09MU1BBTj0iMyIKKz5BZGRlZCBhIFJFQURNRSBmaWxlIGZvciBidWlsZGluZyBhbmQgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGZvciBidWlsZGluZyBmcm9tIHNvdXJjZS48L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNpb24gMS43PC9URAorPjxURAorQUxJR049IkxFRlQiCis+MjAwMi0wNi0yNTwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPlJldmlzZWQgYnk6IHBwYWRhbGE8L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCitDT0xTUEFOPSIzIgorPkFkZGVkICJPdGhlciBmb3JtYXRzIiBzZWN0aW9uIGFuZCBtYWRlIGEgbG90IG9mIGZhbmN5IAorICAgICAgICBjaGFuZ2VzIHRvIHRoZSBwcm9ncmFtcy4gSW5saW5pbmcgb2YgcHJvZ3JhbXMgaXMgZ29uZS48L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNpb24gMS42LjE8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz4yMDAyLTAyLTI0PC9URAorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNlZCBieTogcHBhZGFsYTwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKK0NPTFNQQU49IjMiCis+UmVtb3ZlZCB0aGUgb2xkIENoYW5nZWxvZyBzZWN0aW9uLCBjbGVhbmVkIHRoZSBtYWtlZmlsZXM8L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNpb24gMS42PC9URAorPjxURAorQUxJR049IkxFRlQiCis+MjAwMi0wMi0xNjwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPlJldmlzZWQgYnk6IHBwYWRhbGE8L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCitDT0xTUEFOPSIzIgorPkNvcnJlY3RlZCBhIGxvdCBvZiBzcGVsbGluZyBtaXN0YWtlcywgYWRkZWQgQUNTIHZhcmlhYmxlcworICAgICAgICBzZWN0aW9uPC9URAorPjwvVFIKKz48VFIKKz48VEQKK0FMSUdOPSJMRUZUIgorPlJldmlzaW9uIDEuNTwvVEQKKz48VEQKK0FMSUdOPSJMRUZUIgorPjIwMDItMDEtMDU8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2VkIGJ5OiBwcGFkYWxhPC9URAorPjwvVFIKKz48VFIKKz48VEQKK0FMSUdOPSJMRUZUIgorQ09MU1BBTj0iMyIKKz5DaGFuZ2VkIHN0cnVjdHVyZSB0byBwcmVzZW50IHByb3BlciBUT0M8L1RECis+PC9UUgorPjxUUgorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNpb24gMS4zLjE8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz4yMDAxLTA3LTI2PC9URAorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNlZCBieTogcHBhZGFsYTwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKK0NPTFNQQU49IjMiCis+Q29ycmVjdGVkIG1haW50YWluZXJzIHBhcmFncmFwaCwgQ29ycmVjdGVkIHN0YWJsZSByZWxlYXNlIG51bWJlcjwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2lvbiAxLjM8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz4yMDAxLTA3LTI0PC9URAorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNlZCBieTogcHBhZGFsYTwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKK0NPTFNQQU49IjMiCis+QWRkZWQgY29weXJpZ2h0IG5vdGljZXMgdG8gbWFpbiBkb2N1bWVudCAoTERQIGxpY2Vuc2UpCisgICAgICAgIGFuZCBwcm9ncmFtcyAoR1BMKSwgQ29ycmVjdGVkCisgICAgICAgIHByaW50d19leGFtcGxlLjwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2lvbiAxLjI8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz4yMDAxLTA2LTA1PC9URAorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNlZCBieTogcHBhZGFsYTwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKK0NPTFNQQU49IjMiCis+SW5jb3Jwb3JhdGVkIHJhdmkncyBjaGFuZ2VzLiBNYWlubHkgdG8gaW50cm9kdWN0aW9uLCBtZW51LCAKKyAgICAgICAgZm9ybSwganVzdGZvcmZ1biBzZWN0aW9uczwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKKz5SZXZpc2lvbiAxLjE8L1RECis+PFRECitBTElHTj0iTEVGVCIKKz4yMDAxLTA1LTIyPC9URAorPjxURAorQUxJR049IkxFRlQiCis+UmV2aXNlZCBieTogcHBhZGFsYTwvVEQKKz48L1RSCis+PFRSCis+PFRECitBTElHTj0iTEVGVCIKK0NPTFNQQU49IjMiCis+QWRkZWQgImEgd29yZCBhYm91dCB3aW5kb3ciIHNlY3Rpb24sIEFkZGVkIHNjYW53X2V4YW1wbGUuPC9URAorPjwvVFIKKz48L1RBQkxFCis+PC9ESVYKKz48RElWCis+PERJVgorQ0xBU1M9IkFCU1RSQUNUIgorPjxQCis+PC9QCis+PEEKK05BTUU9IkFFTjY3IgorPjwvQQorPjxQCis+ICAgIDxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5UaGlzIGRvY3VtZW50IGlzIGludGVuZGVkIHRvIGJlIGFuICJBbGwgaW4gT25lIiBndWlkZSBmb3IgcHJvZ3JhbW1pbmcgd2l0aCAKK25jdXJzZXMgYW5kIGl0cyBzaXN0ZXIgbGlicmFyaWVzLiBXZSBncmFkdWF0ZSBmcm9tIGEgc2ltcGxlICJIZWxsbyBXb3JsZCIgCitwcm9ncmFtIHRvIG1vcmUgY29tcGxleCBmb3JtIG1hbmlwdWxhdGlvbi4gTm8gcHJpb3IgZXhwZXJpZW5jZSBpbiBuY3Vyc2VzIGlzIAorYXNzdW1lZC4gU2VuZCBjb21tZW50cyB0byA8QQorSFJFRj0ibWFpbHRvOnBwYWRhbGFAZ21haWwuY29tIgorVEFSR0VUPSJfdG9wIgorPnRoaXMgYWRkcmVzczwvQQorPgorICAgIDwvSQorPjwvU1BBTgorPgorICAgIDwvUAorPjxQCis+PC9QCis+PC9ESVYKKz48L0RJVgorPjxIUj48L0RJVgorPjxESVYKK0NMQVNTPSJUT0MiCis+PERMCis+PERUCis+PEIKKz5UYWJsZSBvZiBDb250ZW50czwvQgorPjwvRFQKKz48RFQKKz4xLiA8QQorSFJFRj0iI0lOVFJPIgorPkludHJvZHVjdGlvbjwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xLjEuIDxBCitIUkVGPSIjV0hBVElTIgorPldoYXQgaXMgTkNVUlNFUz88L0EKKz48L0RUCis+PERUCis+MS4yLiA8QQorSFJFRj0iI1dIQVRDQU5XRURPIgorPldoYXQgd2UgY2FuIGRvIHdpdGggTkNVUlNFUzwvQQorPjwvRFQKKz48RFQKKz4xLjMuIDxBCitIUkVGPSIjV0hFUkVUT0dFVElUIgorPldoZXJlIHRvIGdldCBpdDwvQQorPjwvRFQKKz48RFQKKz4xLjQuIDxBCitIUkVGPSIjUFVSUE9TRSIKKz5QdXJwb3NlL1Njb3BlIG9mIHRoZSBkb2N1bWVudDwvQQorPjwvRFQKKz48RFQKKz4xLjUuIDxBCitIUkVGPSIjQUJPVVRQUk9HUkFNUyIKKz5BYm91dCB0aGUgUHJvZ3JhbXM8L0EKKz48L0RUCis+PERUCis+MS42LiA8QQorSFJFRj0iI09USEVSRk9STUFUUyIKKz5PdGhlciBGb3JtYXRzIG9mIHRoZSBkb2N1bWVudDwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xLjYuMS4gPEEKK0hSRUY9IiNMSVNURk9STUFUUyIKKz5SZWFkaWx5IGF2YWlsYWJsZSBmb3JtYXRzIGZyb20gdGxkcC5vcmc8L0EKKz48L0RUCis+PERUCis+MS42LjIuIDxBCitIUkVGPSIjQlVJTERTT1VSQ0UiCis+QnVpbGRpbmcgZnJvbSBzb3VyY2U8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz4xLjcuIDxBCitIUkVGPSIjQ1JFRElUUyIKKz5DcmVkaXRzPC9BCis+PC9EVAorPjxEVAorPjEuOC4gPEEKK0hSRUY9IiNXSVNITElTVCIKKz5XaXNoIExpc3Q8L0EKKz48L0RUCis+PERUCis+MS45LiA8QQorSFJFRj0iI0NPUFlSSUdIVCIKKz5Db3B5cmlnaHQ8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz4yLiA8QQorSFJFRj0iI0hFTExPV09STEQiCis+SGVsbG8gV29ybGQgISEhPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjIuMS4gPEEKK0hSRUY9IiNDT01QSUxFQ1VSU0VTIgorPkNvbXBpbGluZyBXaXRoIHRoZSBOQ1VSU0VTIExpYnJhcnk8L0EKKz48L0RUCis+PERUCis+Mi4yLiA8QQorSFJFRj0iI0RJU1NFQ1RJT04iCis+RGlzc2VjdGlvbjwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4yLjIuMS4gPEEKK0hSRUY9IiNBQk9VVC1JTklUU0NSIgorPkFib3V0IGluaXRzY3IoKTwvQQorPjwvRFQKKz48RFQKKz4yLjIuMi4gPEEKK0hSRUY9IiNNWVNULVJFRlJFU0giCis+VGhlIG15c3RlcmlvdXMgcmVmcmVzaCgpPC9BCis+PC9EVAorPjxEVAorPjIuMi4zLiA8QQorSFJFRj0iI0FCT1VULUVORFdJTiIKKz5BYm91dCBlbmR3aW4oKTwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjwvREwKKz48L0RECis+PERUCis+My4gPEEKK0hSRUY9IiNHT1JZIgorPlRoZSBHb3J5IERldGFpbHM8L0EKKz48L0RUCis+PERUCis+NC4gPEEKK0hSRUY9IiNJTklUIgorPkluaXRpYWxpemF0aW9uPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjQuMS4gPEEKK0hSRUY9IiNBQk9VVElOSVQiCis+SW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zPC9BCis+PC9EVAorPjxEVAorPjQuMi4gPEEKK0hSRUY9IiNSQVdDQlJFQUsiCis+cmF3KCkgYW5kIGNicmVhaygpPC9BCis+PC9EVAorPjxEVAorPjQuMy4gPEEKK0hSRUY9IiNFQ0hPTk9FQ0hPIgorPmVjaG8oKSBhbmQgbm9lY2hvKCk8L0EKKz48L0RUCis+PERUCis+NC40LiA8QQorSFJFRj0iI0tFWVBBRCIKKz5rZXlwYWQoKTwvQQorPjwvRFQKKz48RFQKKz40LjUuIDxBCitIUkVGPSIjSEFMRkRFTEFZIgorPmhhbGZkZWxheSgpPC9BCis+PC9EVAorPjxEVAorPjQuNi4gPEEKK0hSRUY9IiNNSVNDSU5JVCIKKz5NaXNjZWxsYW5lb3VzIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uczwvQQorPjwvRFQKKz48RFQKKz40LjcuIDxBCitIUkVGPSIjSU5JVEVYIgorPkFuIEV4YW1wbGU8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz41LiA8QQorSFJFRj0iI0FXT1JEV0lORE9XUyIKKz5BIFdvcmQgYWJvdXQgV2luZG93czwvQQorPjwvRFQKKz48RFQKKz42LiA8QQorSFJFRj0iI1BSSU5UVyIKKz5PdXRwdXQgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjYuMS4gPEEKK0hSRUY9IiNBRERDSENMQVNTIgorPmFkZGNoKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxEVAorPjYuMi4gPEEKK0hSRUY9IiNBRU4yOTgiCis+bXZhZGRjaCgpLCB3YWRkY2goKSBhbmQgbXZ3YWRkY2goKTwvQQorPjwvRFQKKz48RFQKKz42LjMuIDxBCitIUkVGPSIjUFJJTlRXQ0xBU1MiCis+cHJpbnR3KCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjYuMy4xLiA8QQorSFJFRj0iI1BSSU5UV01WUFJJTlRXIgorPnByaW50dygpIGFuZCBtdnByaW50dzwvQQorPjwvRFQKKz48RFQKKz42LjMuMi4gPEEKK0hSRUY9IiNXUFJJTlRXTVZXUFJJTlRXIgorPndwcmludHcoKSBhbmQgbXZ3cHJpbnR3PC9BCis+PC9EVAorPjxEVAorPjYuMy4zLiA8QQorSFJFRj0iI1ZXUFJJTlRXIgorPnZ3cHJpbnR3KCk8L0EKKz48L0RUCis+PERUCis+Ni4zLjQuIDxBCitIUkVGPSIjU0lNUExFUFJJTlRXRVgiCis+QSBTaW1wbGUgcHJpbnR3IGV4YW1wbGU8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz42LjQuIDxBCitIUkVGPSIjQUREU1RSQ0xBU1MiCis+YWRkc3RyKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxEVAorPjYuNS4gPEEKK0hSRUY9IiNBQ0FVVElPTiIKKz5BIHdvcmQgb2YgY2F1dGlvbjwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjcuIDxBCitIUkVGPSIjU0NBTlciCis+SW5wdXQgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjcuMS4gPEEKK0hSRUY9IiNHRVRDSENMQVNTIgorPmdldGNoKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxEVAorPjcuMi4gPEEKK0hSRUY9IiNTQ0FOV0NMQVNTIgorPnNjYW53KCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjcuMi4xLiA8QQorSFJFRj0iI1NDQU5XTVZTQ0FOVyIKKz5zY2FudygpIGFuZCBtdnNjYW53PC9BCis+PC9EVAorPjxEVAorPjcuMi4yLiA8QQorSFJFRj0iI1dTQ0FOV01WV1NDQU5XIgorPndzY2FudygpIGFuZCBtdndzY2FudygpPC9BCis+PC9EVAorPjxEVAorPjcuMi4zLiA8QQorSFJFRj0iI1ZXU0NBTlciCis+dndzY2FudygpPC9BCis+PC9EVAorPjwvREwKKz48L0RECis+PERUCis+Ny4zLiA8QQorSFJFRj0iI0dFVFNUUkNMQVNTIgorPmdldHN0cigpIGNsYXNzIG9mIGZ1bmN0aW9uczwvQQorPjwvRFQKKz48RFQKKz43LjQuIDxBCitIUkVGPSIjR0VUU1RSRVgiCis+U29tZSBleGFtcGxlczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjguIDxBCitIUkVGPSIjQVRUUklCIgorPkF0dHJpYnV0ZXM8L0EKKz48L0RUCis+PERECis+PERMCis+PERUCis+OC4xLiA8QQorSFJFRj0iI0FUVFJJQkRFVEFJTFMiCis+VGhlIGRldGFpbHM8L0EKKz48L0RUCis+PERUCis+OC4yLiA8QQorSFJFRj0iI0FUVFJPTlZTQVRUUlNFVCIKKz5hdHRyb24oKSB2cyBhdHRyc2V0KCk8L0EKKz48L0RUCis+PERUCis+OC4zLiA8QQorSFJFRj0iI0FUVFJfR0VUIgorPmF0dHJfZ2V0KCk8L0EKKz48L0RUCis+PERUCis+OC40LiA8QQorSFJFRj0iI0FUVFJfRlVOQ1MiCis+YXR0cl8gZnVuY3Rpb25zPC9BCis+PC9EVAorPjxEVAorPjguNS4gPEEKK0hSRUY9IiNXQVRUUkZVTkNTIgorPndhdHRyIGZ1bmN0aW9uczwvQQorPjwvRFQKKz48RFQKKz44LjYuIDxBCitIUkVGPSIjQ0hHQVQiCis+Y2hnYXQoKSBmdW5jdGlvbnM8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz45LiA8QQorSFJFRj0iI1dJTkRPV1MiCis+V2luZG93czwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz45LjEuIDxBCitIUkVGPSIjV0lORE9XQkFTSUNTIgorPlRoZSBiYXNpY3M8L0EKKz48L0RUCis+PERUCis+OS4yLiA8QQorSFJFRj0iI0xFVEJFV0lORE9XIgorPkxldCB0aGVyZSBiZSBhIFdpbmRvdyAhISE8L0EKKz48L0RUCis+PERUCis+OS4zLiA8QQorSFJFRj0iI0JPUkRFUkVYRVhQTCIKKz5FeHBsYW5hdGlvbjwvQQorPjwvRFQKKz48RFQKKz45LjQuIDxBCitIUkVGPSIjT1RIRVJTVFVGRiIKKz5UaGUgb3RoZXIgc3R1ZmYgaW4gdGhlIGV4YW1wbGU8L0EKKz48L0RUCis+PERUCis+OS41LiA8QQorSFJFRj0iI09USEVSQk9SREVSRlVOQ1MiCis+T3RoZXIgQm9yZGVyIGZ1bmN0aW9uczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjEwLiA8QQorSFJFRj0iI0NPTE9SIgorPkNvbG9yczwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xMC4xLiA8QQorSFJFRj0iI0NPTE9SQkFTSUNTIgorPlRoZSBiYXNpY3M8L0EKKz48L0RUCis+PERUCis+MTAuMi4gPEEKK0hSRUY9IiNDSEFOR0VDT0xPUkRFRlMiCis+Q2hhbmdpbmcgQ29sb3IgRGVmaW5pdGlvbnM8L0EKKz48L0RUCis+PERUCis+MTAuMy4gPEEKK0hSRUY9IiNDT0xPUkNPTlRFTlQiCis+Q29sb3IgQ29udGVudDwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjExLiA8QQorSFJFRj0iI0tFWVMiCis+SW50ZXJmYWNpbmcgd2l0aCB0aGUga2V5IGJvYXJkPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjExLjEuIDxBCitIUkVGPSIjS0VZU0JBU0lDUyIKKz5UaGUgQmFzaWNzPC9BCis+PC9EVAorPjxEVAorPjExLjIuIDxBCitIUkVGPSIjU0lNUExFS0VZRVgiCis+QSBTaW1wbGUgS2V5IFVzYWdlIGV4YW1wbGU8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz4xMi4gPEEKK0hSRUY9IiNNT1VTRSIKKz5JbnRlcmZhY2luZyB3aXRoIHRoZSBtb3VzZTwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xMi4xLiA8QQorSFJFRj0iI01PVVNFQkFTSUNTIgorPlRoZSBCYXNpY3M8L0EKKz48L0RUCis+PERUCis+MTIuMi4gPEEKK0hSRUY9IiNHRVRUSU5HRVZFTlRTIgorPkdldHRpbmcgdGhlIGV2ZW50czwvQQorPjwvRFQKKz48RFQKKz4xMi4zLiA8QQorSFJFRj0iI01PVVNFVE9HRVRIRVIiCis+UHV0dGluZyBpdCBhbGwgVG9nZXRoZXI8L0EKKz48L0RUCis+PERUCis+MTIuNC4gPEEKK0hSRUY9IiNNSVNDTU9VU0VGVU5DUyIKKz5NaXNjZWxsYW5lb3VzIEZ1bmN0aW9uczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjEzLiA8QQorSFJFRj0iI1NDUkVFTiIKKz5TY3JlZW4gTWFuaXB1bGF0aW9uPC9BCis+PC9EVAorPjxERAorPjxETAorPjxEVAorPjEzLjEuIDxBCitIUkVGPSIjR0VUWVgiCis+Z2V0eXgoKSBmdW5jdGlvbnM8L0EKKz48L0RUCis+PERUCis+MTMuMi4gPEEKK0hSRUY9IiNTQ1JFRU5EVU1QIgorPlNjcmVlbiBEdW1waW5nPC9BCis+PC9EVAorPjxEVAorPjEzLjMuIDxBCitIUkVGPSIjV0lORE9XRFVNUCIKKz5XaW5kb3cgRHVtcGluZzwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjE0LiA8QQorSFJFRj0iI01JU0MiCis+TWlzY2VsbGFuZW91cyBmZWF0dXJlczwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xNC4xLiA8QQorSFJFRj0iI0NVUlNTRVQiCis+Y3Vyc19zZXQoKTwvQQorPjwvRFQKKz48RFQKKz4xNC4yLiA8QQorSFJFRj0iI1RFTVBMRUFWRSIKKz5UZW1wb3JhcmlseSBMZWF2aW5nIEN1cnNlcyBtb2RlPC9BCis+PC9EVAorPjxEVAorPjE0LjMuIDxBCitIUkVGPSIjQUNTVkFSUyIKKz5BQ1NfIHZhcmlhYmxlczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjE1LiA8QQorSFJFRj0iI09USEVSTElCIgorPk90aGVyIGxpYnJhcmllczwvQQorPjwvRFQKKz48RFQKKz4xNi4gPEEKK0hSRUY9IiNQQU5FTFMiCis+UGFuZWwgTGlicmFyeTwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xNi4xLiA8QQorSFJFRj0iI1BBTkVMQkFTSUNTIgorPlRoZSBCYXNpY3M8L0EKKz48L0RUCis+PERUCis+MTYuMi4gPEEKK0hSRUY9IiNDT01QSUxFUEFORUxTIgorPkNvbXBpbGluZyBXaXRoIHRoZSBQYW5lbHMgTGlicmFyeTwvQQorPjwvRFQKKz48RFQKKz4xNi4zLiA8QQorSFJFRj0iI1BBTkVMQlJPV1NJTkciCis+UGFuZWwgV2luZG93IEJyb3dzaW5nPC9BCis+PC9EVAorPjxEVAorPjE2LjQuIDxBCitIUkVGPSIjVVNFUlBUUlVTSU5HIgorPlVzaW5nIFVzZXIgUG9pbnRlcnM8L0EKKz48L0RUCis+PERUCis+MTYuNS4gPEEKK0hSRUY9IiNQQU5FTE1PVkVSRVNJWkUiCis+TW92aW5nIGFuZCBSZXNpemluZyBQYW5lbHM8L0EKKz48L0RUCis+PERUCis+MTYuNi4gPEEKK0hSRUY9IiNQQU5FTFNIT1dISURFIgorPkhpZGluZyBhbmQgU2hvd2luZyBQYW5lbHM8L0EKKz48L0RUCis+PERUCis+MTYuNy4gPEEKK0hSRUY9IiNQQU5FTEFCT1ZFIgorPnBhbmVsX2Fib3ZlKCkgYW5kIHBhbmVsX2JlbG93KCkgRnVuY3Rpb25zPC9BCis+PC9EVAorPjwvREwKKz48L0RECis+PERUCis+MTcuIDxBCitIUkVGPSIjTUVOVVMiCis+TWVudXMgTGlicmFyeTwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xNy4xLiA8QQorSFJFRj0iI01FTlVCQVNJQ1MiCis+VGhlIEJhc2ljczwvQQorPjwvRFQKKz48RFQKKz4xNy4yLiA8QQorSFJFRj0iI0NPTVBJTEVNRU5VUyIKKz5Db21waWxpbmcgV2l0aCB0aGUgTWVudSBMaWJyYXJ5PC9BCis+PC9EVAorPjxEVAorPjE3LjMuIDxBCitIUkVGPSIjTUVOVURSSVZFUiIKKz5NZW51IERyaXZlcjogVGhlIHdvcmsgaG9yc2Ugb2YgdGhlIG1lbnUgc3lzdGVtPC9BCis+PC9EVAorPjxEVAorPjE3LjQuIDxBCitIUkVGPSIjTUVOVVdJTkRPV1MiCis+TWVudSBXaW5kb3dzPC9BCis+PC9EVAorPjxEVAorPjE3LjUuIDxBCitIUkVGPSIjU0NST0xMTUVOVVMiCis+U2Nyb2xsaW5nIE1lbnVzPC9BCis+PC9EVAorPjxEVAorPjE3LjYuIDxBCitIUkVGPSIjTVVMVElDT0xVTU4iCis+TXVsdGkgQ29sdW1uYXIgTWVudXM8L0EKKz48L0RUCis+PERUCis+MTcuNy4gPEEKK0hSRUY9IiNNVUxUSVZBTFVFTUVOVVMiCis+TXVsdGkgVmFsdWVkIE1lbnVzPC9BCis+PC9EVAorPjxEVAorPjE3LjguIDxBCitIUkVGPSIjTUVOVU9QVCIKKz5NZW51IE9wdGlvbnM8L0EKKz48L0RUCis+PERUCis+MTcuOS4gPEEKK0hSRUY9IiNNRU5VVVNFUlBUUiIKKz5UaGUgdXNlZnVsIFVzZXIgUG9pbnRlcjwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjE4LiA8QQorSFJFRj0iI0ZPUk1TIgorPkZvcm1zIExpYnJhcnk8L0EKKz48L0RUCis+PERECis+PERMCis+PERUCis+MTguMS4gPEEKK0hSRUY9IiNGT1JNQkFTSUNTIgorPlRoZSBCYXNpY3M8L0EKKz48L0RUCis+PERUCis+MTguMi4gPEEKK0hSRUY9IiNDT01QSUxFRk9STVMiCis+Q29tcGlsaW5nIFdpdGggdGhlIEZvcm1zIExpYnJhcnk8L0EKKz48L0RUCis+PERUCis+MTguMy4gPEEKK0hSRUY9IiNQTEFZRklFTERTIgorPlBsYXlpbmcgd2l0aCBGaWVsZHM8L0EKKz48L0RUCis+PERECis+PERMCis+PERUCis+MTguMy4xLiA8QQorSFJFRj0iI0ZFVENISU5GTyIKKz5GZXRjaGluZyBTaXplIGFuZCBMb2NhdGlvbiBvZiBGaWVsZDwvQQorPjwvRFQKKz48RFQKKz4xOC4zLjIuIDxBCitIUkVGPSIjTU9WRUZJRUxEIgorPk1vdmluZyB0aGUgZmllbGQ8L0EKKz48L0RUCis+PERUCis+MTguMy4zLiA8QQorSFJFRj0iI0pVU1RJRllGSUVMRCIKKz5GaWVsZCBKdXN0aWZpY2F0aW9uPC9BCis+PC9EVAorPjxEVAorPjE4LjMuNC4gPEEKK0hSRUY9IiNGSUVMRERJU1BBVFRSSUIiCis+RmllbGQgRGlzcGxheSBBdHRyaWJ1dGVzPC9BCis+PC9EVAorPjxEVAorPjE4LjMuNS4gPEEKK0hSRUY9IiNGSUVMRE9QVElPTkJJVFMiCis+RmllbGQgT3B0aW9uIEJpdHM8L0EKKz48L0RUCis+PERUCis+MTguMy42LiA8QQorSFJFRj0iI0ZJRUxEU1RBVFVTIgorPkZpZWxkIFN0YXR1czwvQQorPjwvRFQKKz48RFQKKz4xOC4zLjcuIDxBCitIUkVGPSIjRklFTERVU0VSUFRSIgorPkZpZWxkIFVzZXIgUG9pbnRlcjwvQQorPjwvRFQKKz48RFQKKz4xOC4zLjguIDxBCitIUkVGPSIjVkFSSUFCTEVTSVpFRklFTERTIgorPlZhcmlhYmxlLVNpemVkIEZpZWxkczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjE4LjQuIDxBCitIUkVGPSIjRk9STVdJTkRPV1MiCis+Rm9ybSBXaW5kb3dzPC9BCis+PC9EVAorPjxEVAorPjE4LjUuIDxBCitIUkVGPSIjRklMRURWQUxJREFURSIKKz5GaWVsZCBWYWxpZGF0aW9uPC9BCis+PC9EVAorPjxEVAorPjE4LjYuIDxBCitIUkVGPSIjRk9STURSSVZFUiIKKz5Gb3JtIERyaXZlcjogVGhlIHdvcmsgaG9yc2Ugb2YgdGhlIGZvcm1zIHN5c3RlbTwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xOC42LjEuIDxBCitIUkVGPSIjUEFHRU5BVlJFUSIKKz5QYWdlIE5hdmlnYXRpb24gUmVxdWVzdHM8L0EKKz48L0RUCis+PERUCis+MTguNi4yLiA8QQorSFJFRj0iI0lOVEVSRklFTEROQVZSRVEiCis+SW50ZXItRmllbGQgTmF2aWdhdGlvbiBSZXF1ZXN0czwvQQorPjwvRFQKKz48RFQKKz4xOC42LjMuIDxBCitIUkVGPSIjSU5UUkFGSUVMRE5BVlJFUSIKKz5JbnRyYS1GaWVsZCBOYXZpZ2F0aW9uIFJlcXVlc3RzPC9BCis+PC9EVAorPjxEVAorPjE4LjYuNC4gPEEKK0hSRUY9IiNTQ1JPTExSRVEiCis+U2Nyb2xsaW5nIFJlcXVlc3RzPC9BCis+PC9EVAorPjxEVAorPjE4LjYuNS4gPEEKK0hSRUY9IiNFRElUUkVRIgorPkVkaXRpbmcgUmVxdWVzdHM8L0EKKz48L0RUCis+PERUCis+MTguNi42LiA8QQorSFJFRj0iI09SREVSUkVRIgorPk9yZGVyIFJlcXVlc3RzPC9BCis+PC9EVAorPjxEVAorPjE4LjYuNy4gPEEKK0hSRUY9IiNBUFBMSUNDT01NQU5EUyIKKz5BcHBsaWNhdGlvbiBDb21tYW5kczwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjwvREwKKz48L0RECis+PERUCis+MTkuIDxBCitIUkVGPSIjVE9PTFMiCis+VG9vbHMgYW5kIFdpZGdldCBMaWJyYXJpZXM8L0EKKz48L0RUCis+PERECis+PERMCis+PERUCis+MTkuMS4gPEEKK0hSRUY9IiNDREsiCis+Q0RLIChDdXJzZXMgRGV2ZWxvcG1lbnQgS2l0KTwvQQorPjwvRFQKKz48REQKKz48REwKKz48RFQKKz4xOS4xLjEuIDxBCitIUkVGPSIjV0lER0VUTElTVCIKKz5XaWRnZXQgTGlzdDwvQQorPjwvRFQKKz48RFQKKz4xOS4xLjIuIDxBCitIUkVGPSIjQ0RLQVRUUkFDVCIKKz5Tb21lIEF0dHJhY3RpdmUgRmVhdHVyZXM8L0EKKz48L0RUCis+PERUCis+MTkuMS4zLiA8QQorSFJFRj0iI0NES0NPTkNMVVNJT04iCis+Q29uY2x1c2lvbjwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjE5LjIuIDxBCitIUkVGPSIjRElBTE9HIgorPlRoZSBkaWFsb2c8L0EKKz48L0RUCis+PERUCis+MTkuMy4gPEEKK0hSRUY9IiNQRVJMQ1VSU0VTIgorPlBlcmwgQ3Vyc2VzIE1vZHVsZXMgQ1VSU0VTOjpGT1JNIGFuZCBDVVJTRVM6OldJREdFVFM8L0EKKz48L0RUCis+PC9ETAorPjwvREQKKz48RFQKKz4yMC4gPEEKK0hSRUY9IiNKVVNURk9SRlVOIgorPkp1c3QgRm9yIEZ1biAhISE8L0EKKz48L0RUCis+PERECis+PERMCis+PERUCis+MjAuMS4gPEEKK0hSRUY9IiNHQU1FT0ZMSUZFIgorPlRoZSBHYW1lIG9mIExpZmU8L0EKKz48L0RUCis+PERUCis+MjAuMi4gPEEKK0hSRUY9IiNNQUdJQyIKKz5NYWdpYyBTcXVhcmU8L0EKKz48L0RUCis+PERUCis+MjAuMy4gPEEKK0hSRUY9IiNIQU5PSSIKKz5Ub3dlcnMgb2YgSGFub2k8L0EKKz48L0RUCis+PERUCis+MjAuNC4gPEEKK0hSRUY9IiNRVUVFTlMiCis+UXVlZW5zIFB1enpsZTwvQQorPjwvRFQKKz48RFQKKz4yMC41LiA8QQorSFJFRj0iI1NIVUZGTEUiCis+U2h1ZmZsZTwvQQorPjwvRFQKKz48RFQKKz4yMC42LiA8QQorSFJFRj0iI1RUIgorPlR5cGluZyBUdXRvcjwvQQorPjwvRFQKKz48L0RMCis+PC9ERAorPjxEVAorPjIxLiA8QQorSFJFRj0iI1JFRiIKKz5SZWZlcmVuY2VzPC9BCis+PC9EVAorPjwvREwKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iSU5UUk8iCis+MS4gSW50cm9kdWN0aW9uPC9BCis+PC9IMgorPjxQCis+SW4gdGhlIG9sZGVuIGRheXMgb2YgdGVsZXR5cGUgdGVybWluYWxzLCB0ZXJtaW5hbHMgd2VyZSBhd2F5IGZyb20gY29tcHV0ZXJzIGFuZAord2VyZSBjb25uZWN0ZWQgdG8gdGhlbSB0aHJvdWdoIHNlcmlhbCBjYWJsZXMuIFRoZSB0ZXJtaW5hbHMgY291bGQgYmUgY29uZmlndXJlZAorYnkgc2VuZGluZyBhIHNlcmllcyBvZiBieXRlcy4gQWxsIHRoZSBjYXBhYmlsaXRpZXMgKHN1Y2ggYXMgCittb3ZpbmcgdGhlIGN1cnNvciB0byBhIG5ldyBsb2NhdGlvbiwgZXJhc2luZyBwYXJ0IG9mIHRoZSBzY3JlZW4sIHNjcm9sbGluZyB0aGUgCitzY3JlZW4sIGNoYW5naW5nIG1vZGVzIGV0Yy4pIG9mIHRlcm1pbmFscyBjb3VsZCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZXNlIAorc2VyaWVzIG9mIGJ5dGVzLiBUaGVzZSBjb250cm9sIHNlZXVxbmNlcyBhcmUgdXN1YWxseSBjYWxsZWQgZXNjYXBlIHNlcXVlbmNlcywgCitiZWNhdXNlIHRoZXkgc3RhcnQgCit3aXRoIGFuIGVzY2FwZSgweDFCKSBjaGFyYWN0ZXIuIEV2ZW4gdG9kYXksIHdpdGggcHJvcGVyIGVtdWxhdGlvbiwgd2UgY2FuIHNlbmQgCitlc2NhcGUgc2VxdWVuY2VzIHRvIHRoZSBlbXVsYXRvciBhbmQgYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgb24gYSB0ZXJtaW5hbCAKK3dpbmRvdy48L1AKKz48UAorPlN1cHBvc2UgeW91IHdhbnRlZCB0byBwcmludCBhIGxpbmUgaW4gY29sb3IuIFRyeSB0eXBpbmcgdGhpcyBvbiB5b3VyIGNvbnNvbGUuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPmVjaG8gIl5bWzA7MzE7NDBtSW4gQ29sb3IiPC9QUkUKKz48UAorPlRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgYW4gZXNjYXBlIGNoYXJhY3Rlciwgd2hpY2ggbG9va3MgbGlrZSB0d28gY2hhcmFjdGVycyBeIAorYW5kIFsuIFRvIGJlIGFibGUgdG8gcHJpbnQgaXQsIHlvdSBoYXZlIHRvIHByZXNzIENUUkwrViBhbmQgdGhlbiB0aGUgRVNDIGtleS4gCitBbGwgdGhlIG90aGVycyBhcmUgbm9ybWFsIHByaW50YWJsZSBjaGFyYWN0ZXJzLiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gc2VlIHRoZSAKK3N0cmluZyAiSW4gQ29sb3IiIGluIHJlZC4gSXQgc3RheXMgdGhhdCB3YXkgYW5kIHRvIHJldmVydCBiYWNrIHRvIHRoZSBvcmlnaW5hbCAKK21vZGUgdHlwZSB0aGlzLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5lY2hvICJeW1swOzM3OzQwbSI8L1BSRQorPjxQCis+Tm93LCB3aGF0IGRvIHRoZXNlIG1hZ2ljIGNoYXJhY3RlcnMgbWVhbj8gRGlmZmljdWx0IHRvIGNvbXByZWhlbmQ/IFRoZXkgbWlnaHQKK2V2ZW4gYmUgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgdGVybWluYWxzLiBTbyB0aGUgZGVzaWduZXJzIG9mIFVOSVggaW52ZW50ZWQgYSAKK21lY2hhbmlzbSBuYW1lZCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnRlcm1jYXA8L1RUCis+LiBJdCBpcyBhIGZpbGUgdGhhdAorbGlzdHMgYWxsIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBwYXJ0aWN1bGFyIHRlcm1pbmFsLCBhbG9uZyB3aXRoIHRoZSBlc2NhcGUKK3NlcXVlbmNlcyBuZWVkZWQgdG8gYWNoaWV2ZSBhIHBhcnRpY3VsYXIgZWZmZWN0LiBJbiB0aGUgbGF0ZXIgeWVhcnMsIHRoaXMgd2FzIAorcmVwbGFjZWQgYnkgPFRUCitDTEFTUz0iTElURVJBTCIKKz50ZXJtaW5mbzwvVFQKKz4uIFdpdGhvdXQgZGVsdmluZyB0b28gCittdWNoIGludG8gZGV0YWlscywgdGhpcyBtZWNoYW5pc20gYWxsb3dzIGFwcGxpY2F0aW9uIAorcHJvZ3JhbXMgdG8gcXVlcnkgdGhlIHRlcm1pbmZvIGRhdGFiYXNlIGFuZCBvYnRhaW4gdGhlIGNvbnRyb2wgY2hhcmFjdGVycyB0byBiZSAKK3NlbnQgdG8gYSB0ZXJtaW5hbCBvciB0ZXJtaW5hbCBlbXVsYXRvci48L1AKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJXSEFUSVMiCis+MS4xLiBXaGF0IGlzIE5DVVJTRVM/PC9BCis+PC9IMworPjxQCis+IAorWW91IG1pZ2h0IGJlIHdvbmRlcmluZywgd2hhdCB0aGUgaW1wb3J0IG9mIGFsbCB0aGlzIHRlY2huaWNhbCBnaWJiZXJpc2ggaXMuICBJbgordGhlIGFib3ZlIHNjZW5hcmlvLCBldmVyeSBhcHBsaWNhdGlvbiBwcm9ncmFtIGlzIHN1cHBvc2VkIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5mbworYW5kIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBzdHVmZiAoc2VuZGluZyBjb250cm9sIGNoYXJhY3RlcnMgZXRjLikuICBJdCBzb29uIGJlY2FtZQorZGlmZmljdWx0IHRvIG1hbmFnZSB0aGlzIGNvbXBsZXhpdHkgYW5kIHRoaXMgZ2F2ZSBiaXJ0aCB0byAnQ1VSU0VTJy4gIEN1cnNlcyBpcworYSBwdW4gb24gdGhlIG5hbWUgImN1cnNvciBvcHRpbWl6YXRpb24iLiBUaGUgQ3Vyc2VzIGxpYnJhcnkgZm9ybXMgYSB3cmFwcGVyCitvdmVyIHdvcmtpbmcgd2l0aCByYXcgdGVybWluYWwgY29kZXMsIGFuZCBwcm92aWRlcyBoaWdobHkgZmxleGlibGUgYW5kCitlZmZpY2llbnQgQVBJIChBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UpLiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgdG8KK21vdmUgdGhlIGN1cnNvciwgY3JlYXRlIHdpbmRvd3MsIHByb2R1Y2UgY29sb3JzLCBwbGF5IHdpdGggbW91c2UgZXRjLiAgVGhlCithcHBsaWNhdGlvbiBwcm9ncmFtcyBuZWVkIG5vdCB3b3JyeSBhYm91dCB0aGUgdW5kZXJseWluZyB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMuPC9QCis+PFAKKz5TbyB3aGF0IGlzIE5DVVJTRVM/IE5DVVJTRVMgaXMgYSBjbG9uZSBvZiB0aGUgb3JpZ2luYWwgU3lzdGVtIFYgUmVsZWFzZSA0LjAKKyhTVnI0KSBjdXJzZXMuIEl0IGlzIGEgZnJlZWx5IGRpc3RyaWJ1dGFibGUgbGlicmFyeSwgZnVsbHkgY29tcGF0aWJsZSB3aXRoCitvbGRlciB2ZXJzaW9uIG9mIGN1cnNlcy4gIEluIHNob3J0LCBpdCBpcyBhIGxpYnJhcnkgb2YgZnVuY3Rpb25zIHRoYXQgbWFuYWdlcworYW4gYXBwbGljYXRpb24ncyBkaXNwbGF5IG9uIGNoYXJhY3Rlci1jZWxsIHRlcm1pbmFscy4gIEluIHRoZSByZW1haW5kZXIgb2YgdGhlCitkb2N1bWVudCwgdGhlIHRlcm1zIGN1cnNlcyBhbmQgbmN1cnNlcyBhcmUgdXNlZCBpbnRlcmNoYW5nZWFibHkuICA8L1AKKz48UAorPkEgZGV0YWlsZWQgaGlzdG9yeSBvZiBOQ1VSU0VTIGNhbiBiZSBmb3VuZCBpbiB0aGUgTkVXUyBmaWxlIGZyb20gdGhlIHNvdXJjZQorZGlzdHJpYnV0aW9uLiBUaGUgY3VycmVudCBwYWNrYWdlIGlzIG1haW50YWluZWQgYnkgCis8QQorSFJFRj0ibWFpbHRvOmRpY2tleUBoaXMuY29tIgorVEFSR0VUPSJfdG9wIgorPlRob21hcyBEaWNrZXk8L0EKKz4uICAKK1lvdSBjYW4gY29udGFjdCB0aGUgbWFpbnRhaW5lcnMgYXQgPEEKK0hSRUY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIgorVEFSR0VUPSJfdG9wIgorPmJ1Zy1uY3Vyc2VzQGdudS5vcmc8L0EKKz4uPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJXSEFUQ0FOV0VETyIKKz4xLjIuIFdoYXQgd2UgY2FuIGRvIHdpdGggTkNVUlNFUzwvQQorPjwvSDMKKz48UAorPk5DVVJTRVMgbm90IG9ubHkgY3JlYXRlcyBhIHdyYXBwZXIgb3ZlciB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMsIGJ1dCBhbHNvIGdpdmVzIGEKK3JvYnVzdCBmcmFtZXdvcmsgdG8gY3JlYXRlIG5pY2UgbG9va2luZyBVSSAoVXNlciBJbnRlcmZhY2UpcyBpbiB0ZXh0IG1vZGUuICBJdAorcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGNyZWF0ZSB3aW5kb3dzIGV0Yy4gIEl0cyBzaXN0ZXIgbGlicmFyaWVzIHBhbmVsLCBtZW51IGFuZAorZm9ybSBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgYmFzaWMgY3Vyc2VzIGxpYnJhcnkuIFRoZXNlIGxpYnJhcmllcyB1c3VhbGx5Citjb21lIGFsb25nIHdpdGggY3Vyc2VzLiBPbmUgY2FuIGNyZWF0ZSBhcHBsaWNhdGlvbnMgdGhhdCBjb250YWluIG11bHRpcGxlCit3aW5kb3dzLCBtZW51cywgcGFuZWxzIGFuZCBmb3Jtcy4gV2luZG93cyBjYW4gYmUgbWFuYWdlZCBpbmRlcGVuZGVudGx5LCBjYW4KK3Byb3ZpZGUgJ3Njcm9sbGFiaWxpdHknIGFuZCBldmVuIGNhbiBiZSBoaWRkZW4uPC9QCis+PFAKKz4gCitNZW51cyBwcm92aWRlIHRoZSB1c2VyIHdpdGggYW4gZWFzeSBjb21tYW5kIHNlbGVjdGlvbiBvcHRpb24uICBGb3JtcyBhbGxvdyB0aGUKK2NyZWF0aW9uIG9mIGVhc3ktdG8tdXNlIGRhdGEgZW50cnkgYW5kIGRpc3BsYXkgd2luZG93cy4gIFBhbmVscyBleHRlbmQgdGhlCitjYXBhYmlsaXRpZXMgb2YgbmN1cnNlcyB0byBkZWFsIHdpdGggb3ZlcmxhcHBpbmcgYW5kIHN0YWNrZWQgd2luZG93cy48L1AKKz48UAorPlRoZXNlIGFyZSBqdXN0IHNvbWUgb2YgdGhlIGJhc2ljIHRoaW5ncyB3ZSBjYW4gZG8gd2l0aCBuY3Vyc2VzLiBBcyB3ZSBtb3ZlCithbG9uZywgV2Ugd2lsbCBzZWUgYWxsIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlc2UgbGlicmFyaWVzLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IldIRVJFVE9HRVRJVCIKKz4xLjMuIFdoZXJlIHRvIGdldCBpdDwvQQorPjwvSDMKKz48UAorPkFsbCByaWdodCwgbm93IHRoYXQgeW91IGtub3cgd2hhdCB5b3UgY2FuIGRvIHdpdGggbmN1cnNlcywgeW91IG11c3QgYmUgcmVhcmluZwordG8gZ2V0IHN0YXJ0ZWQuIE5DVVJTRVMgaXMgdXN1YWxseSBzaGlwcGVkIHdpdGggeW91ciBpbnN0YWxsYXRpb24uIEluIGNhc2UKK3lvdSBkb24ndCBoYXZlIHRoZSBsaWJyYXJ5IG9yIHdhbnQgdG8gY29tcGlsZSBpdCBvbiB5b3VyIG93biwgcmVhZCBvbi48L1AKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5Db21waWxpbmcgdGhlIHBhY2thZ2U8L0kKKz48L1NQQU4KKz4gPC9QCis+PFAKKz5OQ1VSU0VTIGNhbiBiZSBvYnRhaW5lZCBmcm9tIDxBCitIUkVGPSJmdHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L25jdXJzZXMvbmN1cnNlcy50YXIuZ3oiCitUQVJHRVQ9Il90b3AiCis+ZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMudGFyLmd6PC9BCis+IG9yIGFueSBvZiB0aGUgZnRwIAorc2l0ZXMgbWVudGlvbmVkIGluIDxBCitIUkVGPSJodHRwOi8vd3d3LmdudS5vcmcvb3JkZXIvZnRwLmh0bWwiCitUQVJHRVQ9Il90b3AiCis+aHR0cDovL3d3dy5nbnUub3JnL29yZGVyL2Z0cC5odG1sPC9BCis+LiA8L1AKKz48UAorPlJlYWQgdGhlIFJFQURNRSBhbmQgSU5TVEFMTCBmaWxlcyBmb3IgZGV0YWlscyBvbiB0byBob3cgdG8gaW5zdGFsbCBpdC4gSXQgCit1c3VhbGx5IGludm9sdmVzIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIHRhciB6eHZmIG5jdXJzZXMmbHQ7dmVyc2lvbiZndDsudGFyLmd6ICAjIHVuemlwIGFuZCB1bnRhciB0aGUgYXJjaGl2ZQogICAgIGNkIG5jdXJzZXMmbHQ7dmVyc2lvbiZndDsgICAgICAgICAgICAgICAjIGNkIHRvIHRoZSBkaXJlY3RvcnkKICAgICAuL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25maWd1cmUgdGhlIGJ1aWxkIGFjY29yZGluZyB0byB5b3VyIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVudmlyb25tZW50CiAgICAgbWFrZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFrZSBpdAogICAgIHN1IHJvb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY29tZSByb290Ci0gICAgbWFrZSBpbnN0YWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5zdGFsbCBpdDwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPjxlbT5Vc2luZyB0aGUgUlBNPC9lbT48L3A+Ci08cD5OQ1VSU0VTIFJQTSBjYW4gYmUgZm91bmQgYW5kIGRvd25sb2FkZWQgZnJvbSA8YSBocmVmPQotImh0dHA6Ly9ycG1maW5kLm5ldCIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vcnBtZmluZC5uZXQ8L2E+IC4gVGhlIFJQTQotY2FuIGJlIGluc3RhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhZnRlciBiZWNvbWluZwotcm9vdC48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIHJwbSAtaSAmbHQ7ZG93bmxvYWRlZCBycG0mZ3Q7PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJQVVJQT1NFIiBpZD0iUFVSUE9TRSI+MS40LiBQdXJwb3NlL1Njb3BlCi1vZiB0aGUgZG9jdW1lbnQ8L2E+PC9oMz4KLTxwPlRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gYmUgYSAiQWxsIGluIE9uZSIgZ3VpZGUgZm9yCi1wcm9ncmFtbWluZyB3aXRoIG5jdXJzZXMgYW5kIGl0cyBzaXN0ZXIgbGlicmFyaWVzLiBXZSBncmFkdWF0ZSBmcm9tCi1hIHNpbXBsZSAiSGVsbG8gV29ybGQiIHByb2dyYW0gdG8gbW9yZSBjb21wbGV4IGZvcm0gbWFuaXB1bGF0aW9uLgotTm8gcHJpb3IgZXhwZXJpZW5jZSBpbiBuY3Vyc2VzIGlzIGFzc3VtZWQuIFRoZSB3cml0aW5nIGlzIGluZm9ybWFsLAotYnV0IGEgbG90IG9mIGRldGFpbCBpcyBwcm92aWRlZCBmb3IgZWFjaCBvZiB0aGUgZXhhbXBsZXMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJBQk9VVFBST0dSQU1TIiBpZD0iQUJPVVRQUk9HUkFNUyI+MS41LgotQWJvdXQgdGhlIFByb2dyYW1zPC9hPjwvaDM+Ci08cD5BbGwgdGhlIHByb2dyYW1zIGluIHRoZSBkb2N1bWVudCBhcmUgYXZhaWxhYmxlIGluIHppcHBlZCBmb3JtCi08YSBocmVmPQotImh0dHA6Ly93d3cudGxkcC5vcmcvSE9XVE8vTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy9uY3Vyc2VzX3Byb2dyYW1zLnRhci5neiIKLXRhcmdldD0iX3RvcCI+aGVyZTwvYT4uIFVuemlwIGFuZCB1bnRhciBpdC4gVGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKLWxvb2tzIGxpa2UgdGhpcy48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+bmN1cnNlcworICAgIG1ha2UgaW5zdGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbGwgaXQ8L1BSRQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlVzaW5nIHRoZSBSUE0gPC9JCis+PC9TUEFOCis+PC9QCis+PFAKKz5OQ1VSU0VTIFJQTSBjYW4gYmUgZm91bmQgYW5kIGRvd25sb2FkZWQgZnJvbSA8QQorSFJFRj0iaHR0cDovL3JwbWZpbmQubmV0IgorVEFSR0VUPSJfdG9wIgorPmh0dHA6Ly9ycG1maW5kLm5ldCA8L0EKKz4uIFRoZSBSUE0gY2FuIGJlIGluc3RhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgCitjb21tYW5kIGFmdGVyIGJlY29taW5nIHJvb3QuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICBycG0gLWkgJmx0O2Rvd25sb2FkZWQgcnBtJmd0OzwvUFJFCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJQVVJQT1NFIgorPjEuNC4gUHVycG9zZS9TY29wZSBvZiB0aGUgZG9jdW1lbnQ8L0EKKz48L0gzCis+PFAKKz5UaGlzIGRvY3VtZW50IGlzIGludGVuZGVkIHRvIGJlIGEgIkFsbCBpbiBPbmUiIGd1aWRlIGZvciBwcm9ncmFtbWluZyB3aXRoCituY3Vyc2VzIGFuZCBpdHMgc2lzdGVyIGxpYnJhcmllcy4gV2UgZ3JhZHVhdGUgZnJvbSBhIHNpbXBsZSAiSGVsbG8gV29ybGQiCitwcm9ncmFtIHRvIG1vcmUgY29tcGxleCBmb3JtIG1hbmlwdWxhdGlvbi4gTm8gcHJpb3IgZXhwZXJpZW5jZSBpbiBuY3Vyc2VzIGlzCithc3N1bWVkLiBUaGUgd3JpdGluZyBpcyBpbmZvcm1hbCwgYnV0IGEgbG90IG9mIGRldGFpbCBpcyBwcm92aWRlZCBmb3IKK2VhY2ggb2YgdGhlIGV4YW1wbGVzLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQUJPVVRQUk9HUkFNUyIKKz4xLjUuIEFib3V0IHRoZSBQcm9ncmFtczwvQQorPjwvSDMKKz48UAorPkFsbCB0aGUgcHJvZ3JhbXMgaW4gdGhlIGRvY3VtZW50IGFyZSBhdmFpbGFibGUgaW4gemlwcGVkIGZvcm0KKzxBCitIUkVGPSJodHRwOi8vd3d3LnRsZHAub3JnL0hPV1RPL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8vbmN1cnNlc19wcm9ncmFtcy50YXIuZ3oiCitUQVJHRVQ9Il90b3AiCis+aGVyZTwvQQorPi4gVW56aXAgYW5kIHVudGFyIGl0LiBUaGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBsb29rcyBsaWtlIHRoaXMuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPm5jdXJzZXMKICAgIHwKICAgIHwtLS0tJmd0OyBKdXN0Rm9yRnVuICAgICAtLSBqdXN0IGZvciBmdW4gcHJvZ3JhbXMKICAgIHwtLS0tJmd0OyBiYXNpY3MgICAgICAgICAtLSBiYXNpYyBwcm9ncmFtcwpAQCAtNTI0LDE2ICsxMjkwLDEyIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IEFudXJhZGhhIFJhdG5hd2VlcmEpCiAgICB8LS0tLSZndDsgTWFrZWZpbGUgICAgICAgLS0gdGhlIHRvcCBsZXZlbCBNYWtlZmlsZQogICAgfC0tLS0mZ3Q7IFJFQURNRSAgICAgICAgIC0tIHRoZSB0b3AgbGV2ZWwgUkVBRE1FIGZpbGUuIGNvbnRhaW5zIGluc3RydWN0aW9ucwotICAgfC0tLS0mZ3Q7IENPUFlJTkcgICAgICAgIC0tIGNvcHlyaWdodCBub3RpY2U8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGUgaW5kaXZpZHVhbCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBmb2xsb3dpbmcgZmlsZXMuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPkRlc2NyaXB0aW9uIG9mIGZpbGVzIGluIGVhY2ggZGlyZWN0b3J5CisgICB8LS0tLSZndDsgQ09QWUlORyAgICAgICAgLS0gY29weXJpZ2h0IG5vdGljZTwvUFJFCis+PFAKKz5UaGUgaW5kaXZpZHVhbCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBmb2xsb3dpbmcgZmlsZXMuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPkRlc2NyaXB0aW9uIG9mIGZpbGVzIGluIGVhY2ggZGlyZWN0b3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogSnVzdEZvckZ1bgogICAgIHwKQEAgLTU5Miw3MyArMTM1NCw5NiBAQAogICAgIHwtLS0tJmd0OyBwYW5lbF9zaW1wbGUuYyAgICAtLSBBIHNpbXBsZSBwYW5lbCBleGFtcGxlCiAKICAgcGVybAotICAgIHwtLS0tJmd0OyAwMS0xMC5wbCAgICAgICAgICAtLSBQZXJsIGVxdWl2YWxlbnRzIG9mIGZpcnN0IHRlbiBleGFtcGxlIHByb2dyYW1zPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlcmUgaXMgYSB0b3AgbGV2ZWwgTWFrZWZpbGUgaW5jbHVkZWQgaW4gdGhlIG1haW4gZGlyZWN0b3J5LiBJdAotYnVpbGRzIGFsbCB0aGUgZmlsZXMgYW5kIHB1dHMgdGhlIHJlYWR5LXRvLXVzZSBleGVzIGluIGRlbW8vZXhlCi1kaXJlY3RvcnkuIFlvdSBjYW4gYWxzbyBkbyBzZWxlY3RpdmUgbWFrZSBieSBnb2luZyBpbnRvIHRoZQotY29ycmVzcG9uZGluZyBkaXJlY3RvcnkuIEVhY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGEgUkVBRE1FIGZpbGUKLWV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2YgZWFjaCBjIGZpbGUgaW4gdGhlIGRpcmVjdG9yeS48L3A+Ci08cD5Gb3IgZXZlcnkgZXhhbXBsZSwgSSBoYXZlIGluY2x1ZGVkIHBhdGggbmFtZSBmb3IgdGhlIGZpbGUKLXJlbGF0aXZlIHRvIHRoZSBleGFtcGxlcyBkaXJlY3RvcnkuPC9wPgotPHA+SWYgeW91IHByZWZlciBicm93c2luZyBpbmRpdmlkdWFsIHByb2dyYW1zLCBwb2ludCB5b3VyIGJyb3dzZXIKLXRvIDxhIGhyZWY9Ci0iaHR0cDovL3RsZHAub3JnL0hPV1RPL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8vbmN1cnNlc19wcm9ncmFtcy8iCi10YXJnZXQ9Ci0iX3RvcCI+aHR0cDovL3RsZHAub3JnL0hPV1RPL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8vbmN1cnNlc19wcm9ncmFtcy88L2E+PC9wPgotPHA+QWxsIHRoZSBwcm9ncmFtcyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSB0aGF0IGlzCi11c2VkIGJ5IG5jdXJzZXMgKE1JVC1zdHlsZSkuIFRoaXMgZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGRvCi1wcmV0dHkgbXVjaCBhbnl0aGluZyBvdGhlciB0aGFuIGNsYWltaW5nIHRoZW0gYXMgeW91cnMuIEZlZWwgZnJlZQotdG8gdXNlIHRoZW0gaW4geW91ciBwcm9ncmFtcyBhcyBhcHByb3ByaWF0ZS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik9USEVSRk9STUFUUyIgaWQ9Ik9USEVSRk9STUFUUyI+MS42LgotT3RoZXIgRm9ybWF0cyBvZiB0aGUgZG9jdW1lbnQ8L2E+PC9oMz4KLTxwPlRoaXMgaG93dG8gaXMgYWxzbyBhdmFpbGFiZSBpbiB2YXJpb3VzIG90aGVyIGZvcm1hdHMgb24gdGhlCi10bGRwLm9yZyBzaXRlLiBIZXJlIGFyZSB0aGUgbGlua3MgdG8gb3RoZXIgZm9ybWF0cyBvZiB0aGlzCi1kb2N1bWVudC48L3A+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJMSVNURk9STUFUUyIgaWQ9IkxJU1RGT1JNQVRTIj4xLjYuMS4KLVJlYWRpbHkgYXZhaWxhYmxlIGZvcm1hdHMgZnJvbSB0bGRwLm9yZzwvYT48L2g0PgotPHVsPgotPGxpPgotPHA+PGEgaHJlZj0KLSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9kb2NzL0hPV1RPL290aGVyLWZvcm1hdHMvcGRmL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8ucGRmIgotdGFyZ2V0PSJfdG9wIj5BY3JvYmF0IFBERiBGb3JtYXQ8L2E+PC9wPgotPC9saT4KLTxsaT4KLTxwPjxhIGhyZWY9Ci0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvZG9jcy9IT1dUTy9vdGhlci1mb3JtYXRzL3BzL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8ucHMuZ3oiCi10YXJnZXQ9Il90b3AiPlBvc3RTY3JpcHQgRm9ybWF0PC9hPjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48YSBocmVmPQotImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L2RvY3MvSE9XVE8vb3RoZXItZm9ybWF0cy9odG1sL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8taHRtbC50YXIuZ3oiCi10YXJnZXQ9Il90b3AiPkluIE11bHRpcGxlIEhUTUwgcGFnZXM8L2E+PC9wPgotPC9saT4KLTxsaT4KLTxwPjxhIGhyZWY9Ci0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvZG9jcy9IT1dUTy9vdGhlci1mb3JtYXRzL2h0bWxfc2luZ2xlL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbCIKLXRhcmdldD0iX3RvcCI+SW4gT25lIGJpZyBIVE1MIGZvcm1hdDwvYT48L3A+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iQlVJTERTT1VSQ0UiIGlkPSJCVUlMRFNPVVJDRSI+MS42LjIuCi1CdWlsZGluZyBmcm9tIHNvdXJjZTwvYT48L2g0PgotPHA+SWYgYWJvdmUgbGlua3MgYXJlIGJyb2tlbiBvciBpZiB5b3Ugd2FudCB0byBleHBlcmltZW50IHdpdGggc2dtbAotcmVhZCBvbi48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj4mIzEzOyAgICBHZXQgYm90aCB0aGUgc291cmNlIGFuZCB0aGUgdGFyLGd6aXBwZWQgcHJvZ3JhbXMsIGF2YWlsYWJsZSBhdAorICAgIHwtLS0tJmd0OyAwMS0xMC5wbCAgICAgICAgICAtLSBQZXJsIGVxdWl2YWxlbnRzIG9mIGZpcnN0IHRlbiBleGFtcGxlIHByb2dyYW1zPC9QUkUKKz48UAorPlRoZXJlIGlzIGEgdG9wIGxldmVsIE1ha2VmaWxlIGluY2x1ZGVkIGluIHRoZSBtYWluIGRpcmVjdG9yeS4gSXQgYnVpbGRzIGFsbCB0aGUgCitmaWxlcyBhbmQgcHV0cyB0aGUgcmVhZHktdG8tdXNlIGV4ZXMgaW4gZGVtby9leGUgZGlyZWN0b3J5LiBZb3UgY2FuIGFsc28gCitkbyBzZWxlY3RpdmUgbWFrZSBieSBnb2luZyBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yeS4gRWFjaCBkaXJlY3RvcnkgCitjb250YWlucyBhIFJFQURNRSBmaWxlIGV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2YgZWFjaCBjIGZpbGUgaW4gdGhlIGRpcmVjdG9yeS48L1AKKz48UAorPkZvciBldmVyeSBleGFtcGxlLCBJIGhhdmUgaW5jbHVkZWQgcGF0aCBuYW1lIGZvciB0aGUgZmlsZSByZWxhdGl2ZSB0byB0aGUgCitleGFtcGxlcyBkaXJlY3RvcnkuIDwvUAorPjxQCis+IElmIHlvdSBwcmVmZXIgYnJvd3NpbmcgaW5kaXZpZHVhbCBwcm9ncmFtcywgcG9pbnQgeW91ciBicm93c2VyIHRvIAorPEEKK0hSRUY9Imh0dHA6Ly90bGRwLm9yZy9IT1dUTy9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPL25jdXJzZXNfcHJvZ3JhbXMvIgorVEFSR0VUPSJfdG9wIgorPmh0dHA6Ly90bGRwLm9yZy9IT1dUTy9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPL25jdXJzZXNfcHJvZ3JhbXMvPC9BCis+PC9QCis+PFAKKz5BbGwgdGhlIHByb2dyYW1zIGFyZSByZWxlYXNlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIHRoYXQgaXMgdXNlZCBieSBuY3Vyc2VzCisoTUlULXN0eWxlKS4gVGhpcyBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gZG8gcHJldHR5IG11Y2ggYW55dGhpbmcgb3RoZXIgdGhhbgorY2xhaW1pbmcgdGhlbSBhcyB5b3Vycy4gRmVlbCBmcmVlIHRvIHVzZSB0aGVtIGluIHlvdXIgcHJvZ3JhbXMgYXMgYXBwcm9wcmlhdGUuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJPVEhFUkZPUk1BVFMiCis+MS42LiBPdGhlciBGb3JtYXRzIG9mIHRoZSBkb2N1bWVudDwvQQorPjwvSDMKKz48UAorPlRoaXMgaG93dG8gaXMgYWxzbyBhdmFpbGFiZSBpbiB2YXJpb3VzIG90aGVyIGZvcm1hdHMgb24gdGhlIHRsZHAub3JnIHNpdGUuCitIZXJlIGFyZSB0aGUgbGlua3MgdG8gb3RoZXIgZm9ybWF0cyBvZiB0aGlzIGRvY3VtZW50LjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IkxJU1RGT1JNQVRTIgorPjEuNi4xLiBSZWFkaWx5IGF2YWlsYWJsZSBmb3JtYXRzIGZyb20gdGxkcC5vcmc8L0EKKz48L0g0Cis+PFAKKz48L1AKKz48VUwKKz48TEkKKz48UAorPjxBCitIUkVGPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9kb2NzL0hPV1RPL290aGVyLWZvcm1hdHMvcGRmL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8ucGRmIgorVEFSR0VUPSJfdG9wIgorPkFjcm9iYXQgUERGIEZvcm1hdDwvQQorPjwvUAorPjwvTEkKKz48TEkKKz48UAorPjxBCitIUkVGPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9kb2NzL0hPV1RPL290aGVyLWZvcm1hdHMvcHMvTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5wcy5neiIKK1RBUkdFVD0iX3RvcCIKKz5Qb3N0U2NyaXB0IEZvcm1hdDwvQQorPjwvUAorPjwvTEkKKz48TEkKKz48UAorPjxBCitIUkVGPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9kb2NzL0hPV1RPL290aGVyLWZvcm1hdHMvaHRtbC9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLWh0bWwudGFyLmd6IgorVEFSR0VUPSJfdG9wIgorPkluIE11bHRpcGxlIEhUTUwgcGFnZXM8L0EKKz48L1AKKz48L0xJCis+PExJCis+PFAKKz48QQorSFJFRj0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvZG9jcy9IT1dUTy9vdGhlci1mb3JtYXRzL2h0bWxfc2luZ2xlL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbCIKK1RBUkdFVD0iX3RvcCIKKz5JbiBPbmUgYmlnIEhUTUwgZm9ybWF0PC9BCis+PC9QCis+PC9MSQorPjwvVUwKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IkJVSUxEU09VUkNFIgorPjEuNi4yLiBCdWlsZGluZyBmcm9tIHNvdXJjZTwvQQorPjwvSDQKKz48UAorPklmIGFib3ZlIGxpbmtzIGFyZSBicm9rZW4gb3IgaWYgeW91IHdhbnQgdG8gZXhwZXJpbWVudCB3aXRoIHNnbWwgcmVhZCBvbi4KKzxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4mIzEzOyAgICBHZXQgYm90aCB0aGUgc291cmNlIGFuZCB0aGUgdGFyLGd6aXBwZWQgcHJvZ3JhbXMsIGF2YWlsYWJsZSBhdAogICAgICAgICBodHRwOi8vY3Zzdmlldy50bGRwLm9yZy9pbmRleC5jZ2kvTERQL2hvd3RvL2RvY2Jvb2svCiAgICAgICAgIE5DVVJTRVMtSE9XVE8vTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5zZ21sCiAgICAgICAgIGh0dHA6Ly9jdnN2aWV3LnRsZHAub3JnL2luZGV4LmNnaS9MRFAvaG93dG8vZG9jYm9vay8KQEAgLTY3OSw1ODggKzE0NjQsODYyIEBACiAgICAgICAgIE5DVVJTRVMtT05FLUJJRy1GSUxFLmh0bWwKICAgICBmb3IgcHMsIHlvdSB3b3VsZCB1c2UKICAgICAgICAgaHRtbGRvYyAtLXNpemUgdW5pdmVyc2FsIC10IHBzIC0tZmlyc3RwYWdlIHAxIC1mICZsdDtvdXRwdXQgZmlsZSBuYW1lLnBzJmd0OwotICAgICAgICBOQ1VSU0VTLU9ORS1CSUctRklMRS5odG1sPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+U2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cudGxkcC5vcmcvTERQL0xEUC1BdXRob3ItR3VpZGUvIiB0YXJnZXQ9Ci0iX3RvcCI+TERQIEF1dGhvciBndWlkZTwvYT4gZm9yIG1vcmUgZGV0YWlscy4gSWYgYWxsIGVsc2UgZmFpbGVzLAotbWFpbCBtZSBhdCA8YSBocmVmPSJwcGFkYWxhQGdtYWlsLmNvbSIgdGFyZ2V0PQotIl90b3AiPnBwYWRhbGFAZ21haWwuY29tPC9hPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDUkVESVRTIiBpZD0iQ1JFRElUUyI+MS43LgotQ3JlZGl0czwvYT48L2gzPgotPHA+SSB0aGFuayA8YSBocmVmPSJtYWlsdG86c2hhcmF0aF8xQHVzYS5uZXQiIHRhcmdldD0KLSJfdG9wIj5TaGFyYXRoPC9hPiBhbmQgRW1yZSBBa2JhcyBmb3IgaGVscGluZyBtZSB3aXRoIGZldyBzZWN0aW9ucy4KLVRoZSBpbnRyb2R1Y3Rpb24gd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IHNoYXJhdGguIEkgcmV3cm90ZSBpdAotd2l0aCBmZXcgZXhjZXJwdHMgdGFrZW4gZnJvbSBoaXMgaW5pdGlhbCB3b3JrLiBFbXJlIGhlbHBlZCBpbgotd3JpdGluZyBwcmludHcgYW5kIHNjYW53IHNlY3Rpb25zLjwvcD4KLTxwPlBlcmwgZXF1aXZhbGVudHMgb2YgdGhlIGV4YW1wbGUgcHJvZ3JhbXMgYXJlIGNvbnRyaWJ1dGVkIGJ5Ci08YSBocmVmPSJtYWlsdG86QXJhdG5hd2VlcmFAdmlydHVzYS5jb20iIHRhcmdldD0iX3RvcCI+QW51cmFkaGEKLVJhdG5hd2VlcmE8L2E+LjwvcD4KLTxwPlRoZW4gY29tZXMgPGEgaHJlZj0ibWFpbHRvOnBhcmltaUBlY2UuYXJpem9uYS5lZHUiIHRhcmdldD0KLSJfdG9wIj5SYXZpIFBhcmltaTwvYT4sIG15IGRlYXJlc3QgZnJpZW5kLCB3aG8gaGFzIGJlZW4gb24gdGhpcwotcHJvamVjdCBiZWZvcmUgZXZlbiBvbmUgbGluZSB3YXMgd3JpdHRlbi4gSGUgY29uc3RhbnRseSBib21iYXJkZWQKLW1lIHdpdGggc3VnZ2VzdGlvbnMgYW5kIHBhdGllbnRseSByZXZpZXdlZCB0aGUgd2hvbGUgdGV4dC4gSGUgYWxzbwotY2hlY2tlZCBlYWNoIHByb2dyYW0gb24gTGludXggYW5kIFNvbGFyaXMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJXSVNITElTVCIgaWQ9IldJU0hMSVNUIj4xLjguIFdpc2gKLUxpc3Q8L2E+PC9oMz4KLTxwPlRoaXMgaXMgdGhlIHdpc2ggbGlzdCwgaW4gdGhlIG9yZGVyIG9mIHByaW9yaXR5LiBJZiB5b3UgaGF2ZSBhCi13aXNoIG9yIHlvdSB3YW50IHRvIHdvcmsgb24gY29tcGxldGluZyB0aGUgd2lzaCwgbWFpbCA8YSBocmVmPQotIm1haWx0bzpwcGFkYWxhQGdtYWlsLmNvbSIgdGFyZ2V0PSJfdG9wIj5tZTwvYT4uPC9wPgotPHVsPgotPGxpPgotPHA+QWRkIGV4YW1wbGVzIHRvIGxhc3QgcGFydHMgb2YgZm9ybXMgc2VjdGlvbi48L3A+Ci08L2xpPgotPGxpPgotPHA+UHJlcGFyZSBhIERlbW8gc2hvd2luZyBhbGwgdGhlIHByb2dyYW1zIGFuZCBhbGxvdyB0aGUgdXNlciB0bwotYnJvd3NlIHRocm91Z2ggZGVzY3JpcHRpb24gb2YgZWFjaCBwcm9ncmFtLiBMZXQgdGhlIHVzZXIgY29tcGlsZQotYW5kIHNlZSB0aGUgcHJvZ3JhbSBpbiBhY3Rpb24uIEEgZGlhbG9nIGJhc2VkIGludGVyZmFjZSBpcwotcHJlZmVycmVkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5BZGQgZGVidWcgaW5mby4gX3RyYWNlZiwgX3RyYWNlbW91c2Ugc3R1ZmYuPC9wPgotPC9saT4KLTxsaT4KLTxwPkFjY2Vzc2luZyB0ZXJtY2FwLCB0ZXJtaW5mbyB1c2luZyBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgbmN1cnNlcwotcGFja2FnZS48L3A+Ci08L2xpPgotPGxpPgotPHA+V29ya2luZyBvbiB0d28gdGVybWluYWxzIHNpbXVsdGFuZW91c2x5LjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5BZGQgbW9yZSBzdHVmZiB0byBtaXNjZWxsYW5lb3VzIHNlY3Rpb24uPC9wPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkNPUFlSSUdIVCIgaWQ9IkNPUFlSSUdIVCI+MS45LgotQ29weXJpZ2h0PC9hPjwvaDM+Ci08cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDEgYnkgUHJhZGVlcCBQYWRhbGEuPC9wPgotPHA+UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KLW9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCi1maWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0Ci1yZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKLW1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLAotc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAotcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlCi1mb2xsb3dpbmcgY29uZGl0aW9uczo8L3A+Ci08cD5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuPC9wPgotPHA+VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi1FWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLU1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi1OT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRQotTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOCi1BQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgotQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQotU09GVFdBUkUuPC9wPgotPHA+RXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlCi1jb3B5cmlnaHQgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8KLXByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQKLXByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbi48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iSEVMTE9XT1JMRCIgaWQ9IkhFTExPV09STEQiPjIuIEhlbGxvCi1Xb3JsZCAhISE8L2E+PC9oMj4KLTxwPldlbGNvbWUgdG8gdGhlIHdvcmxkIG9mIGN1cnNlcy4gQmVmb3JlIHdlIHBsdW5nZSBpbnRvIHRoZQotbGlicmFyeSBhbmQgbG9vayBpbnRvIGl0cyB2YXJpb3VzIGZlYXR1cmVzLCBsZXQncyB3cml0ZSBhIHNpbXBsZQotcHJvZ3JhbSBhbmQgc2F5IGhlbGxvIHRvIHRoZSB3b3JsZC48L3A+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDT01QSUxFQ1VSU0VTIiBpZD0iQ09NUElMRUNVUlNFUyI+Mi4xLgotQ29tcGlsaW5nIFdpdGggdGhlIE5DVVJTRVMgTGlicmFyeTwvYT48L2gzPgotPHA+VG8gdXNlIG5jdXJzZXMgbGlicmFyeSBmdW5jdGlvbnMsIHlvdSBoYXZlIHRvIGluY2x1ZGUgbmN1cnNlcy5oCi1pbiB5b3VyIHByb2dyYW1zLiBUbyBsaW5rIHRoZSBwcm9ncmFtIHdpdGggbmN1cnNlcyB0aGUgZmxhZwotLWxuY3Vyc2VzIHNob3VsZCBiZSBhZGRlZC48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgICNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7CisgICAgICAgIE5DVVJTRVMtT05FLUJJRy1GSUxFLmh0bWw8L1BSRQorPjwvUAorPjxQCis+U2VlIDxBCitIUkVGPSJodHRwOi8vd3d3LnRsZHAub3JnL0xEUC9MRFAtQXV0aG9yLUd1aWRlLyIKK1RBUkdFVD0iX3RvcCIKKz5MRFAgQXV0aG9yIGd1aWRlPC9BCis+IGZvciBtb3JlIGRldGFpbHMuIElmIGFsbCBlbHNlIGZhaWxlcywgbWFpbCBtZSBhdCAKKzxBCitIUkVGPSJwcGFkYWxhQGdtYWlsLmNvbSIKK1RBUkdFVD0iX3RvcCIKKz5wcGFkYWxhQGdtYWlsLmNvbTwvQQorPjwvUAorPjwvRElWCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJDUkVESVRTIgorPjEuNy4gQ3JlZGl0czwvQQorPjwvSDMKKz48UAorPkkgdGhhbmsgPEEKK0hSRUY9Im1haWx0bzpzaGFyYXRoXzFAdXNhLm5ldCIKK1RBUkdFVD0iX3RvcCIKKz5TaGFyYXRoPC9BCis+IGFuZCBFbXJlIEFrYmFzIGZvcgoraGVscGluZyBtZSB3aXRoIGZldyBzZWN0aW9ucy4gVGhlIGludHJvZHVjdGlvbiB3YXMgaW5pdGlhbGx5IHdyaXR0ZW4gYnkgc2hhcmF0aC4KK0kgcmV3cm90ZSBpdCB3aXRoIGZldyBleGNlcnB0cyB0YWtlbiBmcm9tIGhpcyBpbml0aWFsIHdvcmsuIEVtcmUgaGVscGVkIGluCit3cml0aW5nIHByaW50dyBhbmQgc2Nhbncgc2VjdGlvbnMuPC9QCis+PFAKKz5QZXJsIGVxdWl2YWxlbnRzIG9mIHRoZSBleGFtcGxlIHByb2dyYW1zIGFyZSBjb250cmlidXRlZCBieSA8QQorSFJFRj0ibWFpbHRvOkFyYXRuYXdlZXJhQHZpcnR1c2EuY29tIgorVEFSR0VUPSJfdG9wIgorPkFudXJhZGhhIFJhdG5hd2VlcmE8L0EKKz4uIDwvUAorPjxQCis+VGhlbiBjb21lcyA8QQorSFJFRj0ibWFpbHRvOnBhcmltaUBlY2UuYXJpem9uYS5lZHUiCitUQVJHRVQ9Il90b3AiCis+UmF2aSBQYXJpbWk8L0EKKz4sIG15CitkZWFyZXN0IGZyaWVuZCwgd2hvIGhhcyBiZWVuIG9uIHRoaXMgcHJvamVjdCBiZWZvcmUgZXZlbiBvbmUgbGluZSB3YXMgd3JpdHRlbi4KK0hlIGNvbnN0YW50bHkgYm9tYmFyZGVkIG1lIHdpdGggc3VnZ2VzdGlvbnMgYW5kIHBhdGllbnRseSByZXZpZXdlZCB0aGUgd2hvbGUKK3RleHQuICBIZSBhbHNvIGNoZWNrZWQgZWFjaCBwcm9ncmFtIG9uIExpbnV4IGFuZCBTb2xhcmlzLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IldJU0hMSVNUIgorPjEuOC4gV2lzaCBMaXN0PC9BCis+PC9IMworPjxQCis+VGhpcyBpcyB0aGUgd2lzaCBsaXN0LCBpbiB0aGUgb3JkZXIgb2YgcHJpb3JpdHkuIElmIHlvdSBoYXZlIGEgd2lzaCBvciB5b3Ugd2FudAordG8gd29yayBvbiBjb21wbGV0aW5nIHRoZSB3aXNoLCBtYWlsIDxBCitIUkVGPSJtYWlsdG86cHBhZGFsYUBnbWFpbC5jb20iCitUQVJHRVQ9Il90b3AiCis+bWU8L0EKKz4uIDwvUAorPjxQCis+PC9QCis+PFVMCis+PExJCis+PFAKKz5BZGQgZXhhbXBsZXMgdG8gbGFzdCBwYXJ0cyBvZiBmb3JtcyBzZWN0aW9uLjwvUAorPjwvTEkKKz48TEkKKz48UAorPlByZXBhcmUgYSBEZW1vIHNob3dpbmcgYWxsIHRoZSBwcm9ncmFtcyBhbmQgYWxsb3cgdGhlIHVzZXIgdG8gYnJvd3NlIHRocm91Z2gKK2Rlc2NyaXB0aW9uIG9mIGVhY2ggcHJvZ3JhbS4gTGV0IHRoZSB1c2VyIGNvbXBpbGUgYW5kIHNlZSB0aGUgcHJvZ3JhbSBpbiBhY3Rpb24uCitBIGRpYWxvZyBiYXNlZCBpbnRlcmZhY2UgaXMgcHJlZmVycmVkLjwvUAorPjwvTEkKKz48TEkKKz48UAorPkFkZCBkZWJ1ZyBpbmZvLiBfdHJhY2VmLCBfdHJhY2Vtb3VzZSBzdHVmZi48L1AKKz48L0xJCis+PExJCis+PFAKKz5BY2Nlc3NpbmcgdGVybWNhcCwgdGVybWluZm8gdXNpbmcgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IG5jdXJzZXMKK3BhY2thZ2UuPC9QCis+PC9MSQorPjxMSQorPjxQCis+V29ya2luZyBvbiB0d28gdGVybWluYWxzIHNpbXVsdGFuZW91c2x5LjwvUAorPjwvTEkKKz48TEkKKz48UAorPkFkZCBtb3JlIHN0dWZmIHRvIG1pc2NlbGxhbmVvdXMgc2VjdGlvbi48L1AKKz48L0xJCis+PC9VTAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQ09QWVJJR0hUIgorPjEuOS4gQ29weXJpZ2h0PC9BCis+PC9IMworPjxQCis+Q29weXJpZ2h0ICZjb3B5OyAyMDAxIGJ5IFByYWRlZXAgUGFkYWxhLiA8L1AKKz48UAorPlBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aAorbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZworY29uZGl0aW9uczo8L1AKKz48UAorPlRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAorY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS48L1AKKz48UAorPlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUgorSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS48L1AKKz48UAorPkV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgaG9sZGVycworc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvcgorb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbi4gPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IkhFTExPV09STEQiCis+Mi4gSGVsbG8gV29ybGQgISEhPC9BCis+PC9IMgorPjxQCis+V2VsY29tZSB0byB0aGUgd29ybGQgb2YgY3Vyc2VzLiBCZWZvcmUgd2UgcGx1bmdlIGludG8gdGhlIGxpYnJhcnkgYW5kIGxvb2sgaW50bworaXRzIHZhcmlvdXMgZmVhdHVyZXMsIGxldCdzIHdyaXRlIGEgc2ltcGxlIHByb2dyYW0gYW5kIHNheQoraGVsbG8gdG8gdGhlIHdvcmxkLiA8L1AKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJDT01QSUxFQ1VSU0VTIgorPjIuMS4gQ29tcGlsaW5nIFdpdGggdGhlIE5DVVJTRVMgTGlicmFyeTwvQQorPjwvSDMKKz48UAorPlRvIHVzZSBuY3Vyc2VzIGxpYnJhcnkgZnVuY3Rpb25zLCB5b3UgaGF2ZSB0byBpbmNsdWRlIG5jdXJzZXMuaCBpbiB5b3VyCitwcm9ncmFtcy4gVG8gbGluayB0aGUKK3Byb2dyYW0gd2l0aCBuY3Vyc2VzIHRoZSBmbGFnIC1sbmN1cnNlcyBzaG91bGQgYmUgYWRkZWQuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICAjaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OwogICAgIC4KICAgICAuCiAgICAgLgogCi0gICAgY29tcGlsZSBhbmQgbGluazogZ2NjICZsdDtwcm9ncmFtIGZpbGUmZ3Q7IC1sbmN1cnNlczwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkJIVyIgaWQ9IkJIVyI+PC9hPgotPHA+PGI+RXhhbXBsZSAxLiBUaGUgSGVsbG8gV29ybGQgISEhIFByb2dyYW08L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OworICAgIGNvbXBpbGUgYW5kIGxpbms6IGdjYyAmbHQ7cHJvZ3JhbSBmaWxlJmd0OyAtbG5jdXJzZXM8L1BSRQorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJCSFciCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMS4gIFRoZSBIZWxsbyBXb3JsZCAhISEgUHJvZ3JhbSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO25jdXJzZXMuaCYjNjI7CiAKIGludCBtYWluKCkKLXsgICAgICAgCi0gICAgICAgIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICovCi0gICAgICAgIHByaW50dygiSGVsbG8gV29ybGQgISEhIik7ICAgICAgLyogUHJpbnQgSGVsbG8gV29ybGQgICAgICAgICAgICAgICovCi0gICAgICAgIHJlZnJlc2goKTsgICAgICAgICAgICAgICAgICAgICAgLyogUHJpbnQgaXQgb24gdG8gdGhlIHJlYWwgc2NyZWVuICovCi0gICAgICAgIGdldGNoKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogV2FpdCBmb3IgdXNlciBpbnB1dCAqLwotICAgICAgICBlbmR3aW4oKTsgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZCBjdXJzZXMgbW9kZSAgICAgICAgICAgICAgICAqLworewkKKwlpbml0c2NyKCk7CQkJLyogU3RhcnQgY3Vyc2VzIG1vZGUgCQkgICovCisJcHJpbnR3KCJIZWxsbyBXb3JsZCAhISEiKTsJLyogUHJpbnQgSGVsbG8gV29ybGQJCSAgKi8KKwlyZWZyZXNoKCk7CQkJLyogUHJpbnQgaXQgb24gdG8gdGhlIHJlYWwgc2NyZWVuICovCisJZ2V0Y2goKTsJCQkvKiBXYWl0IGZvciB1c2VyIGlucHV0ICovCisJZW5kd2luKCk7CQkJLyogRW5kIGN1cnNlcyBtb2RlCQkgICovCiAKLSAgICAgICAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJESVNTRUNUSU9OIiBpZD0iRElTU0VDVElPTiI+Mi4yLgotRGlzc2VjdGlvbjwvYT48L2gzPgotPHA+VGhlIGFib3ZlIHByb2dyYW0gcHJpbnRzICJIZWxsbyBXb3JsZCAhISEiIHRvIHRoZSBzY3JlZW4gYW5kCi1leGl0cy4gVGhpcyBwcm9ncmFtIHNob3dzIGhvdyB0byBpbml0aWFsaXplIGN1cnNlcyBhbmQgZG8gc2NyZWVuCi1tYW5pcHVsYXRpb24gYW5kIGVuZCBjdXJzZXMgbW9kZS4gTGV0J3MgZGlzc2VjdCBpdCBsaW5lIGJ5Ci1saW5lLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IkFCT1VULUlOSVRTQ1IiIGlkPSJBQk9VVC1JTklUU0NSIj4yLjIuMS4KLUFib3V0IGluaXRzY3IoKTwvYT48L2g0PgotPHA+VGhlIGZ1bmN0aW9uIGluaXRzY3IoKSBpbml0aWFsaXplcyB0aGUgdGVybWluYWwgaW4gY3Vyc2VzIG1vZGUuCi1JbiBzb21lIGltcGxlbWVudGF0aW9ucywgaXQgY2xlYXJzIHRoZSBzY3JlZW4gYW5kIHByZXNlbnRzIGEgYmxhbmsKLXNjcmVlbi4gVG8gZG8gYW55IHNjcmVlbiBtYW5pcHVsYXRpb24gdXNpbmcgY3Vyc2VzIHBhY2thZ2UgdGhpcyBoYXMKLXRvIGJlIGNhbGxlZCBmaXJzdC4gVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgY3Vyc2VzIHN5c3RlbSBhbmQKLWFsbG9jYXRlcyBtZW1vcnkgZm9yIG91ciBwcmVzZW50IHdpbmRvdyAoY2FsbGVkIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+c3Rkc2NyPC92YXI+KSBhbmQgc29tZSBvdGhlciBkYXRhLXN0cnVjdHVyZXMuIFVuZGVyCi1leHRyZW1lIGNhc2VzIHRoaXMgZnVuY3Rpb24gbWlnaHQgZmFpbCBkdWUgdG8gaW5zdWZmaWNpZW50IG1lbW9yeQotdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBjdXJzZXMgbGlicmFyeSdzIGRhdGEgc3RydWN0dXJlcy48L3A+Ci08cD5BZnRlciB0aGlzIGlzIGRvbmUsIHdlIGNhbiBkbyBhIHZhcmlldHkgb2YgaW5pdGlhbGl6YXRpb25zIHRvCi1jdXN0b21pemUgb3VyIGN1cnNlcyBzZXR0aW5ncy4gVGhlc2UgZGV0YWlscyB3aWxsIGJlIGV4cGxhaW5lZAotPGEgaHJlZj0iI0lOSVQiPmxhdGVyPC9hPiAuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJNWVNULVJFRlJFU0giIGlkPSJNWVNULVJFRlJFU0giPjIuMi4yLgotVGhlIG15c3RlcmlvdXMgcmVmcmVzaCgpPC9hPjwvaDQ+Ci08cD5UaGUgbmV4dCBsaW5lIHByaW50dyBwcmludHMgdGhlIHN0cmluZyAiSGVsbG8gV29ybGQgISEhIiBvbiB0bwotdGhlIHNjcmVlbi4gVGhpcyBmdW5jdGlvbiBpcyBhbmFsb2dvdXMgdG8gbm9ybWFsIHByaW50ZiBpbiBhbGwKLXJlc3BlY3RzIGV4Y2VwdCB0aGF0IGl0IHByaW50cyB0aGUgZGF0YSBvbiBhIHdpbmRvdyBjYWxsZWQgc3Rkc2NyCi1hdCB0aGUgY3VycmVudCAoeSx4KSBjby1vcmRpbmF0ZXMuIFNpbmNlIG91ciBwcmVzZW50IGNvLW9yZGluYXRlcwotYXJlIGF0IDAsMCB0aGUgc3RyaW5nIGlzIHByaW50ZWQgYXQgdGhlIGxlZnQgaGFuZCBjb3JuZXIgb2YgdGhlCi13aW5kb3cuPC9wPgotPHA+VGhpcyBicmluZ3MgdXMgdG8gdGhhdCBteXN0ZXJpb3VzIHJlZnJlc2goKS4gV2VsbCwgd2hlbiB3ZQotY2FsbGVkIHByaW50dyB0aGUgZGF0YSBpcyBhY3R1YWxseSB3cml0dGVuIHRvIGFuIGltYWdpbmFyeSB3aW5kb3csCi13aGljaCBpcyBub3QgdXBkYXRlZCBvbiB0aGUgc2NyZWVuIHlldC4gVGhlIGpvYiBvZiBwcmludHcgaXMgdG8KLXVwZGF0ZSBhIGZldyBmbGFncyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB3cml0ZSB0aGUgZGF0YSB0byBhCi1idWZmZXIgY29ycmVzcG9uZGluZyB0byBzdGRzY3IuIEluIG9yZGVyIHRvIHNob3cgaXQgb24gdGhlIHNjcmVlbiwKLXdlIG5lZWQgdG8gY2FsbCByZWZyZXNoKCkgYW5kIHRlbGwgdGhlIGN1cnNlcyBzeXN0ZW0gdG8gZHVtcCB0aGUKLWNvbnRlbnRzIG9uIHRoZSBzY3JlZW4uPC9wPgotPHA+VGhlIHBoaWxvc29waHkgYmVoaW5kIGFsbCB0aGlzIGlzIHRvIGFsbG93IHRoZSBwcm9ncmFtbWVyIHRvIGRvCi1tdWx0aXBsZSB1cGRhdGVzIG9uIHRoZSBpbWFnaW5hcnkgc2NyZWVuIG9yIHdpbmRvd3MgYW5kIGRvIGEKLXJlZnJlc2ggb25jZSBhbGwgaGlzIHNjcmVlbiB1cGRhdGUgaXMgZG9uZS4gcmVmcmVzaCgpIGNoZWNrcyB0aGUKLXdpbmRvdyBhbmQgdXBkYXRlcyBvbmx5IHRoZSBwb3J0aW9uIHdoaWNoIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMKLWltcHJvdmVzIHBlcmZvcm1hbmNlIGFuZCBvZmZlcnMgZ3JlYXRlciBmbGV4aWJpbGl0eSB0b28uIEJ1dCwgaXQgaXMKLXNvbWV0aW1lcyBmcnVzdHJhdGluZyB0byBiZWdpbm5lcnMuIEEgY29tbW9uIG1pc3Rha2UgY29tbWl0dGVkIGJ5Ci1iZWdpbm5lcnMgaXMgdG8gZm9yZ2V0IHRvIGNhbGwgcmVmcmVzaCgpIGFmdGVyIHRoZXkgZGlkIHNvbWUgdXBkYXRlCi10aHJvdWdoIHByaW50dygpIGNsYXNzIG9mIGZ1bmN0aW9ucy4gSSBzdGlsbCBmb3JnZXQgdG8gYWRkIGl0Ci1zb21ldGltZXMgOi0pPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJBQk9VVC1FTkRXSU4iIGlkPSJBQk9VVC1FTkRXSU4iPjIuMi4zLgotQWJvdXQgZW5kd2luKCk8L2E+PC9oND4KLTxwPkFuZCBmaW5hbGx5IGRvbid0IGZvcmdldCB0byBlbmQgdGhlIGN1cnNlcyBtb2RlLiBPdGhlcndpc2UgeW91cgotdGVybWluYWwgbWlnaHQgYmVoYXZlIHN0cmFuZ2VseSBhZnRlciB0aGUgcHJvZ3JhbSBxdWl0cy4gZW5kd2luKCkKLWZyZWVzIHRoZSBtZW1vcnkgdGFrZW4gYnkgY3Vyc2VzIHN1Yi1zeXN0ZW0gYW5kIGl0cyBkYXRhIHN0cnVjdHVyZXMKLWFuZCBwdXRzIHRoZSB0ZXJtaW5hbCBpbiBub3JtYWwgbW9kZS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZAotYWZ0ZXIgeW91IGFyZSBkb25lIHdpdGggdGhlIGN1cnNlcyBtb2RlLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IkdPUlkiIGlkPSJHT1JZIj4zLiBUaGUgR29yeQotRGV0YWlsczwvYT48L2gyPgotPHA+Tm93IHRoYXQgd2UgaGF2ZSBzZWVuIGhvdyB0byB3cml0ZSBhIHNpbXBsZSBjdXJzZXMgcHJvZ3JhbSBsZXQncwotZ2V0IGludG8gdGhlIGRldGFpbHMuIFRoZXJlIGFyZSBtYW55IGZ1bmN0aW9ucyB0aGF0IGhlbHAgY3VzdG9taXplCi13aGF0IHlvdSBzZWUgb24gc2NyZWVuIGFuZCBtYW55IGZlYXR1cmVzIHdoaWNoIGNhbiBiZSBwdXQgdG8gZnVsbAotdXNlLjwvcD4KLTxwPkhlcmUgd2UgZ28uLi48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IklOSVQiIGlkPSJJTklUIj40LgotSW5pdGlhbGl6YXRpb248L2E+PC9oMj4KLTxwPldlIG5vdyBrbm93IHRoYXQgdG8gaW5pdGlhbGl6ZSBjdXJzZXMgc3lzdGVtIHRoZSBmdW5jdGlvbgotaW5pdHNjcigpIGhhcyB0byBiZSBjYWxsZWQuIFRoZXJlIGFyZSBmdW5jdGlvbnMgd2hpY2ggY2FuIGJlIGNhbGxlZAotYWZ0ZXIgdGhpcyBpbml0aWFsaXphdGlvbiB0byBjdXN0b21pemUgb3VyIGN1cnNlcyBzZXNzaW9uLiBXZSBtYXkKLWFzayB0aGUgY3Vyc2VzIHN5c3RlbSB0byBzZXQgdGhlIHRlcm1pbmFsIGluIHJhdyBtb2RlIG9yIGluaXRpYWxpemUKLWNvbG9yIG9yIGluaXRpYWxpemUgdGhlIG1vdXNlIGV0Yy4uIExldCdzIGRpc2N1c3Mgc29tZSBvZiB0aGUKLWZ1bmN0aW9ucyB0aGF0IGFyZSBub3JtYWxseSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaW5pdHNjcigpOzwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkFCT1VUSU5JVCIgaWQ9IkFCT1VUSU5JVCI+NC4xLgotSW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zPC9hPjwvaDM+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlJBV0NCUkVBSyIgaWQ9IlJBV0NCUkVBSyI+NC4yLiByYXcoKSBhbmQKLWNicmVhaygpPC9hPjwvaDM+Ci08cD5Ob3JtYWxseSB0aGUgdGVybWluYWwgZHJpdmVyIGJ1ZmZlcnMgdGhlIGNoYXJhY3RlcnMgYSB1c2VyIHR5cGVzCi11bnRpbCBhIG5ldyBsaW5lIG9yIGNhcnJpYWdlIHJldHVybiBpcyBlbmNvdW50ZXJlZC4gQnV0IG1vc3QKLXByb2dyYW1zIHJlcXVpcmUgdGhhdCB0aGUgY2hhcmFjdGVycyBiZSBhdmFpbGFibGUgYXMgc29vbiBhcyB0aGUKLXVzZXIgdHlwZXMgdGhlbS4gVGhlIGFib3ZlIHR3byBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gZGlzYWJsZSBsaW5lCi1idWZmZXJpbmcuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyBpbiB0aGUgd2F5Ci1jb250cm9sIGNoYXJhY3RlcnMgbGlrZSBzdXNwZW5kIChDVFJMLVopLCBpbnRlcnJ1cHQgYW5kIHF1aXQKLShDVFJMLUMpIGFyZSBwYXNzZWQgdG8gdGhlIHByb2dyYW0uIEluIHRoZSByYXcoKSBtb2RlIHRoZXNlCi1jaGFyYWN0ZXJzIGFyZSBkaXJlY3RseSBwYXNzZWQgdG8gdGhlIHByb2dyYW0gd2l0aG91dCBnZW5lcmF0aW5nIGEKLXNpZ25hbC4gSW4gdGhlIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmNicmVhaygpPC92YXI+IG1vZGUgdGhlc2UKLWNvbnRyb2wgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW55IG90aGVyIGNoYXJhY3RlciBieSB0aGUKLXRlcm1pbmFsIGRyaXZlci4gSSBwZXJzb25hbGx5IHByZWZlciB0byB1c2UgcmF3KCkgYXMgSSBjYW4gZXhlcmNpc2UKLWdyZWF0ZXIgY29udHJvbCBvdmVyIHdoYXQgdGhlIHVzZXIgZG9lcy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkVDSE9OT0VDSE8iIGlkPSJFQ0hPTk9FQ0hPIj40LjMuIGVjaG8oKQotYW5kIG5vZWNobygpPC9hPjwvaDM+Ci08cD5UaGVzZSBmdW5jdGlvbnMgY29udHJvbCB0aGUgZWNob2luZyBvZiBjaGFyYWN0ZXJzIHR5cGVkIGJ5IHRoZQotdXNlciB0byB0aGUgdGVybWluYWwuIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm5vZWNobygpPC92YXI+IHN3aXRjaGVzCi1vZmYgZWNob2luZy4gVGhlIHJlYXNvbiB5b3UgbWlnaHQgd2FudCB0byBkbyB0aGlzIGlzIHRvIGdhaW4gbW9yZQotY29udHJvbCBvdmVyIGVjaG9pbmcgb3IgdG8gc3VwcHJlc3MgdW5uZWNlc3NhcnkgZWNob2luZyB3aGlsZQotdGFraW5nIGlucHV0IGZyb20gdGhlIHVzZXIgdGhyb3VnaCB0aGUgZ2V0Y2goKSBldGMuIGZ1bmN0aW9ucy4gTW9zdAotb2YgdGhlIGludGVyYWN0aXZlIHByb2dyYW1zIGNhbGwgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5ub2VjaG8oKTwvdmFyPiBhdCBpbml0aWFsaXphdGlvbiBhbmQgZG8gdGhlIGVjaG9pbmcgb2YKLWNoYXJhY3RlcnMgaW4gYSBjb250cm9sbGVkIG1hbm5lci4gSXQgZ2l2ZXMgdGhlIHByb2dyYW1tZXIgdGhlCi1mbGV4aWJpbGl0eSBvZiBlY2hvaW5nIGNoYXJhY3RlcnMgYXQgYW55IHBsYWNlIGluIHRoZSB3aW5kb3cKLXdpdGhvdXQgdXBkYXRpbmcgY3VycmVudCAoeSx4KSBjby1vcmRpbmF0ZXMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJLRVlQQUQiIGlkPSJLRVlQQUQiPjQuNC4KLWtleXBhZCgpPC9hPjwvaDM+Ci08cD5UaGlzIGlzIG15IGZhdm9yaXRlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBJdCBlbmFibGVzIHRoZQotcmVhZGluZyBvZiBmdW5jdGlvbiBrZXlzIGxpa2UgRjEsIEYyLCBhcnJvdyBrZXlzIGV0Yy4gQWxtb3N0IGV2ZXJ5Ci1pbnRlcmFjdGl2ZSBwcm9ncmFtIGVuYWJsZXMgdGhpcywgYXMgYXJyb3cga2V5cyBhcmUgYSBtYWpvciBwYXJ0IG9mCi1hbnkgVXNlciBJbnRlcmZhY2UuIERvIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmtleXBhZChzdGRzY3IsCi1UUlVFKTwvdmFyPiB0byBlbmFibGUgdGhpcyBmZWF0dXJlIGZvciB0aGUgcmVndWxhciBzY3JlZW4gKHN0ZHNjcikuCi1Zb3Ugd2lsbCBsZWFybiBtb3JlIGFib3V0IGtleSBtYW5hZ2VtZW50IGluIGxhdGVyIHNlY3Rpb25zIG9mIHRoaXMKLWRvY3VtZW50LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iSEFMRkRFTEFZIiBpZD0iSEFMRkRFTEFZIj40LjUuCi1oYWxmZGVsYXkoKTwvYT48L2gzPgotPHA+VGhpcyBmdW5jdGlvbiwgdGhvdWdoIG5vdCB1c2VkIHZlcnkgb2Z0ZW4sIGlzIGEgdXNlZnVsIG9uZSBhdAotdGltZXMuIGhhbGZkZWxheSgpaXMgY2FsbGVkIHRvIGVuYWJsZSB0aGUgaGFsZi1kZWxheSBtb2RlLCB3aGljaCBpcwotc2ltaWxhciB0byB0aGUgY2JyZWFrKCkgbW9kZSBpbiB0aGF0IGNoYXJhY3RlcnMgdHlwZWQgYXJlCi1pbW1lZGlhdGVseSBhdmFpbGFibGUgdG8gcHJvZ3JhbS4gSG93ZXZlciwgaXQgd2FpdHMgZm9yICdYJyB0ZW50aHMKLW9mIGEgc2Vjb25kIGZvciBpbnB1dCBhbmQgdGhlbiByZXR1cm5zIEVSUiwgaWYgbm8gaW5wdXQgaXMKLWF2YWlsYWJsZS4gJ1gnIGlzIHRoZSB0aW1lb3V0IHZhbHVlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24KLWhhbGZkZWxheSgpLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGFzayB0aGUgdXNlcgotZm9yIGlucHV0LCBhbmQgaWYgaGUgZG9lc24ndCByZXNwb25kIHdpdGggaW4gY2VydGFpbiB0aW1lLCB3ZSBjYW4KLWRvIHNvbWUgdGhpbmcgZWxzZS4gT25lIHBvc3NpYmxlIGV4YW1wbGUgaXMgYSB0aW1lb3V0IGF0IHRoZQotcGFzc3dvcmQgcHJvbXB0LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iTUlTQ0lOSVQiIGlkPSJNSVNDSU5JVCI+NC42LgotTWlzY2VsbGFuZW91cyBJbml0aWFsaXphdGlvbiBmdW5jdGlvbnM8L2E+PC9oMz4KLTxwPlRoZXJlIGFyZSBmZXcgbW9yZSBmdW5jdGlvbnMgd2hpY2ggYXJlIGNhbGxlZCBhdCBpbml0aWFsaXphdGlvbgotdG8gY3VzdG9taXplIGN1cnNlcyBiZWhhdmlvci4gVGhleSBhcmUgbm90IHVzZWQgYXMgZXh0ZW5zaXZlbHkgYXMKLXRob3NlIG1lbnRpb25lZCBhYm92ZS4gU29tZSBvZiB0aGVtIGFyZSBleHBsYWluZWQgd2hlcmUKLWFwcHJvcHJpYXRlLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iSU5JVEVYIiBpZD0iSU5JVEVYIj40LjcuIEFuCi1FeGFtcGxlPC9hPjwvaDM+Ci08cD5MZXQncyB3cml0ZSBhIHByb2dyYW0gd2hpY2ggd2lsbCBjbGFyaWZ5IHRoZSB1c2FnZSBvZiB0aGVzZQotZnVuY3Rpb25zLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkJJTkZVIiBpZD0iQklORlUiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMi4gSW5pdGlhbGl6YXRpb24gRnVuY3Rpb24gVXNhZ2UgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7CisJcmV0dXJuIDA7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iRElTU0VDVElPTiIKKz4yLjIuIERpc3NlY3Rpb248L0EKKz48L0gzCis+PFAKKz4gCitUaGUgYWJvdmUgcHJvZ3JhbSBwcmludHMgIkhlbGxvIFdvcmxkICEhISIgdG8gdGhlIHNjcmVlbiBhbmQgZXhpdHMuIFRoaXMgCitwcm9ncmFtIHNob3dzIGhvdyB0byBpbml0aWFsaXplIGN1cnNlcyBhbmQgZG8gc2NyZWVuIG1hbmlwdWxhdGlvbiBhbmQgCitlbmQgY3Vyc2VzIG1vZGUuIExldCdzIGRpc3NlY3QgaXQgbGluZSBieSBsaW5lLiA8L1AKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJBQk9VVC1JTklUU0NSIgorPjIuMi4xLiBBYm91dCBpbml0c2NyKCk8L0EKKz48L0g0Cis+PFAKKz5UaGUgZnVuY3Rpb24gaW5pdHNjcigpIGluaXRpYWxpemVzIHRoZSB0ZXJtaW5hbCBpbiBjdXJzZXMgbW9kZS4gIEluIHNvbWUgCitpbXBsZW1lbnRhdGlvbnMsIGl0IGNsZWFycyB0aGUgc2NyZWVuIGFuZCBwcmVzZW50cyBhIGJsYW5rIHNjcmVlbi4gVG8gZG8gYW55IAorc2NyZWVuIG1hbmlwdWxhdGlvbiB1c2luZyBjdXJzZXMgcGFja2FnZSB0aGlzIGhhcyB0byBiZSBjYWxsZWQgZmlyc3QuIFRoaXMKK2Z1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjdXJzZXMgc3lzdGVtIGFuZCBhbGxvY2F0ZXMgbWVtb3J5IGZvciBvdXIgcHJlc2VudAord2luZG93IChjYWxsZWQgPFRUCitDTEFTUz0iTElURVJBTCIKKz5zdGRzY3I8L1RUCis+KSBhbmQgc29tZSBvdGhlciBkYXRhLXN0cnVjdHVyZXMuIFVuZGVyIGV4dHJlbWUKK2Nhc2VzIHRoaXMgZnVuY3Rpb24gbWlnaHQgZmFpbCBkdWUgdG8gaW5zdWZmaWNpZW50IG1lbW9yeSB0byBhbGxvY2F0ZSBtZW1vcnkKK2ZvciBjdXJzZXMgbGlicmFyeSdzIGRhdGEgc3RydWN0dXJlcy4gPC9QCis+PFAKKz4gCitBZnRlciB0aGlzIGlzIGRvbmUsIHdlIGNhbiBkbyBhIHZhcmlldHkgb2YgaW5pdGlhbGl6YXRpb25zIHRvIGN1c3RvbWl6ZQorb3VyIGN1cnNlcyBzZXR0aW5ncy4gVGhlc2UgZGV0YWlscyB3aWxsIGJlIGV4cGxhaW5lZCA8QQorSFJFRj0iI0lOSVQiCis+bGF0ZXIgPC9BCis+LjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QzIgorPjxIUj48SDQKK0NMQVNTPSJTRUNUMyIKKz48QQorTkFNRT0iTVlTVC1SRUZSRVNIIgorPjIuMi4yLiBUaGUgbXlzdGVyaW91cyByZWZyZXNoKCk8L0EKKz48L0g0Cis+PFAKKz5UaGUgbmV4dCBsaW5lIHByaW50dyBwcmludHMgdGhlIHN0cmluZyAiSGVsbG8gV29ybGQgISEhIiBvbiB0byB0aGUgc2NyZWVuLiBUaGlzCitmdW5jdGlvbiBpcyBhbmFsb2dvdXMgdG8gbm9ybWFsIHByaW50ZiBpbiBhbGwgcmVzcGVjdHMgZXhjZXB0IHRoYXQgaXQgcHJpbnRzCit0aGUgZGF0YSBvbiBhIHdpbmRvdyBjYWxsZWQgc3Rkc2NyIGF0IHRoZSBjdXJyZW50ICh5LHgpIGNvLW9yZGluYXRlcy4gU2luY2Ugb3VyCitwcmVzZW50IGNvLW9yZGluYXRlcyBhcmUgYXQgMCwwIHRoZSBzdHJpbmcgaXMgcHJpbnRlZCBhdCB0aGUgbGVmdCBoYW5kIGNvcm5lcgorb2YgdGhlIHdpbmRvdy48L1AKKz48UAorPlRoaXMgYnJpbmdzIHVzIHRvIHRoYXQgbXlzdGVyaW91cyByZWZyZXNoKCkuIFdlbGwsIHdoZW4gd2UgY2FsbGVkIHByaW50dyAKK3RoZSBkYXRhIGlzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gYW4gaW1hZ2luYXJ5IHdpbmRvdywgd2hpY2ggaXMgbm90IHVwZGF0ZWQgCitvbiB0aGUgc2NyZWVuIHlldC4gVGhlIGpvYiBvZiBwcmludHcgaXMgdG8gdXBkYXRlIGEgZmV3IGZsYWdzCithbmQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB3cml0ZSB0aGUgZGF0YSB0byBhIGJ1ZmZlciBjb3JyZXNwb25kaW5nIHRvIHN0ZHNjci4KK0luIG9yZGVyIHRvIHNob3cgaXQgb24gdGhlIHNjcmVlbiwgd2UgbmVlZCB0byBjYWxsIHJlZnJlc2goKSBhbmQgdGVsbCB0aGUKK2N1cnNlcyBzeXN0ZW0gdG8gZHVtcCB0aGUgY29udGVudHMgb24gdGhlIHNjcmVlbi48L1AKKz48UAorPlRoZSBwaGlsb3NvcGh5IGJlaGluZCBhbGwgdGhpcyBpcyB0byBhbGxvdyB0aGUgcHJvZ3JhbW1lciB0byBkbyBtdWx0aXBsZSB1cGRhdGVzCitvbiB0aGUgaW1hZ2luYXJ5IHNjcmVlbiBvciB3aW5kb3dzIGFuZCBkbyBhIHJlZnJlc2ggb25jZSBhbGwgaGlzIHNjcmVlbiB1cGRhdGUKK2lzIGRvbmUuIHJlZnJlc2goKSBjaGVja3MgdGhlIHdpbmRvdyBhbmQgdXBkYXRlcyBvbmx5IHRoZSBwb3J0aW9uIHdoaWNoIGhhcyBiZWVuCitjaGFuZ2VkLiBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIGFuZCBvZmZlcnMgZ3JlYXRlciBmbGV4aWJpbGl0eSB0b28uIEJ1dCwgaXQgaXMKK3NvbWV0aW1lcyBmcnVzdHJhdGluZyB0byBiZWdpbm5lcnMuIEEgY29tbW9uIG1pc3Rha2UgY29tbWl0dGVkIGJ5IGJlZ2lubmVycyBpcwordG8gZm9yZ2V0IHRvIGNhbGwgcmVmcmVzaCgpIGFmdGVyIHRoZXkgZGlkIHNvbWUgdXBkYXRlIHRocm91Z2ggcHJpbnR3KCkgY2xhc3Mgb2YKK2Z1bmN0aW9ucy4gSSBzdGlsbCBmb3JnZXQgdG8gYWRkIGl0IHNvbWV0aW1lcyA6LSkgPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJBQk9VVC1FTkRXSU4iCis+Mi4yLjMuIEFib3V0IGVuZHdpbigpPC9BCis+PC9INAorPjxQCis+QW5kIGZpbmFsbHkgZG9uJ3QgZm9yZ2V0IHRvIGVuZCB0aGUgY3Vyc2VzIG1vZGUuIE90aGVyd2lzZSB5b3VyIHRlcm1pbmFsIG1pZ2h0CitiZWhhdmUgc3RyYW5nZWx5IGFmdGVyIHRoZSBwcm9ncmFtIHF1aXRzLiBlbmR3aW4oKSBmcmVlcyB0aGUgbWVtb3J5IHRha2VuIGJ5IAorY3Vyc2VzIHN1Yi1zeXN0ZW0gYW5kIGl0cyBkYXRhIHN0cnVjdHVyZXMgYW5kIHB1dHMgdGhlIHRlcm1pbmFsIGluIG5vcm1hbCAKK21vZGUuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgeW91IGFyZSBkb25lIHdpdGggdGhlIGN1cnNlcyBtb2RlLiA8L1AKKz48L0RJVgorPjwvRElWCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDEiCis+PEhSPjxIMgorQ0xBU1M9IlNFQ1QxIgorPjxBCitOQU1FPSJHT1JZIgorPjMuIFRoZSBHb3J5IERldGFpbHM8L0EKKz48L0gyCis+PFAKKz5Ob3cgdGhhdCB3ZSBoYXZlIHNlZW4gaG93IHRvIHdyaXRlIGEgc2ltcGxlIGN1cnNlcyBwcm9ncmFtIGxldCdzIGdldCBpbnRvIHRoZQorZGV0YWlscy4gVGhlcmUgYXJlIG1hbnkgZnVuY3Rpb25zIHRoYXQgaGVscCBjdXN0b21pemUgd2hhdCB5b3Ugc2VlIG9uIHNjcmVlbiBhbmQKK21hbnkgZmVhdHVyZXMgd2hpY2ggY2FuIGJlIHB1dCB0byBmdWxsIHVzZS4gPC9QCis+PFAKKz5IZXJlIHdlIGdvLi4uPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDEiCis+PEhSPjxIMgorQ0xBU1M9IlNFQ1QxIgorPjxBCitOQU1FPSJJTklUIgorPjQuIEluaXRpYWxpemF0aW9uPC9BCis+PC9IMgorPjxQCis+V2Ugbm93IGtub3cgdGhhdCB0byBpbml0aWFsaXplIGN1cnNlcyBzeXN0ZW0gdGhlIGZ1bmN0aW9uIGluaXRzY3IoKSBoYXMgdG8gYmUKK2NhbGxlZC4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgd2hpY2ggY2FuIGJlIGNhbGxlZCBhZnRlciB0aGlzIGluaXRpYWxpemF0aW9uIHRvCitjdXN0b21pemUgb3VyIGN1cnNlcyBzZXNzaW9uLiBXZSBtYXkgYXNrIHRoZSBjdXJzZXMgc3lzdGVtIHRvIHNldCB0aGUgdGVybWluYWwKK2luIHJhdyBtb2RlIG9yIGluaXRpYWxpemUgY29sb3Igb3IgaW5pdGlhbGl6ZSB0aGUgbW91c2UgZXRjLi4gTGV0J3MgZGlzY3VzcyBzb21lCitvZiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIG5vcm1hbGx5IGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBpbml0c2NyKCk7PC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQUJPVVRJTklUIgorPjQuMS4gSW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+IDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iUkFXQ0JSRUFLIgorPjQuMi4gcmF3KCkgYW5kIGNicmVhaygpPC9BCis+PC9IMworPjxQCis+Tm9ybWFsbHkgdGhlIHRlcm1pbmFsIGRyaXZlciBidWZmZXJzIHRoZSBjaGFyYWN0ZXJzIGEgdXNlciB0eXBlcyB1bnRpbCBhIG5ldworbGluZSBvciBjYXJyaWFnZSByZXR1cm4gaXMgZW5jb3VudGVyZWQuIEJ1dCBtb3N0IHByb2dyYW1zIHJlcXVpcmUgdGhhdCB0aGUKK2NoYXJhY3RlcnMgYmUgYXZhaWxhYmxlIGFzIHNvb24gYXMgdGhlIHVzZXIgdHlwZXMgdGhlbS4gVGhlIGFib3ZlIHR3byBmdW5jdGlvbnMKK2FyZSB1c2VkIHRvIGRpc2FibGUgbGluZSBidWZmZXJpbmcuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucworaXMgaW4gdGhlIHdheSBjb250cm9sIGNoYXJhY3RlcnMgbGlrZSBzdXNwZW5kIChDVFJMLVopLCBpbnRlcnJ1cHQgYW5kIHF1aXQKKyhDVFJMLUMpIGFyZSBwYXNzZWQgdG8gdGhlIHByb2dyYW0uIEluIHRoZSByYXcoKSBtb2RlIHRoZXNlIGNoYXJhY3RlcnMgYXJlCitkaXJlY3RseSBwYXNzZWQgdG8gdGhlIHByb2dyYW0gd2l0aG91dCBnZW5lcmF0aW5nIGEgc2lnbmFsLiBJbiB0aGUKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y2JyZWFrKCk8L1RUCis+IG1vZGUgdGhlc2UgY29udHJvbCBjaGFyYWN0ZXJzIGFyZQoraW50ZXJwcmV0ZWQgYXMgYW55IG90aGVyIGNoYXJhY3RlciBieSB0aGUgdGVybWluYWwgZHJpdmVyLiBJIHBlcnNvbmFsbHkgcHJlZmVyCit0byB1c2UgcmF3KCkgYXMgSSBjYW4gZXhlcmNpc2UgZ3JlYXRlciBjb250cm9sIG92ZXIgd2hhdCB0aGUgdXNlciBkb2VzLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iRUNIT05PRUNITyIKKz40LjMuIGVjaG8oKSBhbmQgbm9lY2hvKCk8L0EKKz48L0gzCis+PFAKKz4gCitUaGVzZSBmdW5jdGlvbnMgY29udHJvbCB0aGUgZWNob2luZyBvZiBjaGFyYWN0ZXJzIHR5cGVkIGJ5IHRoZSB1c2VyIHRvIHRoZQordGVybWluYWwuIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bm9lY2hvKCk8L1RUCis+IHN3aXRjaGVzIG9mZiBlY2hvaW5nLiBUaGUKK3JlYXNvbiB5b3UgbWlnaHQgd2FudCB0byBkbyB0aGlzIGlzIHRvIGdhaW4gbW9yZSBjb250cm9sIG92ZXIgZWNob2luZyBvciB0bworc3VwcHJlc3MgdW5uZWNlc3NhcnkgZWNob2luZyB3aGlsZSB0YWtpbmcgaW5wdXQgZnJvbSB0aGUgdXNlciB0aHJvdWdoIHRoZQorZ2V0Y2goKSBldGMuIGZ1bmN0aW9ucy4gTW9zdCBvZiB0aGUgaW50ZXJhY3RpdmUgcHJvZ3JhbXMgY2FsbAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5ub2VjaG8oKTwvVFQKKz4gYXQgaW5pdGlhbGl6YXRpb24gYW5kIGRvIHRoZSBlY2hvaW5nCitvZiBjaGFyYWN0ZXJzIGluIGEgY29udHJvbGxlZCBtYW5uZXIuIEl0IGdpdmVzIHRoZSBwcm9ncmFtbWVyIHRoZSBmbGV4aWJpbGl0eQorb2YgZWNob2luZyBjaGFyYWN0ZXJzIGF0IGFueSBwbGFjZSBpbiB0aGUgd2luZG93IHdpdGhvdXQgdXBkYXRpbmcgY3VycmVudCAoeSx4KQorY28tb3JkaW5hdGVzLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IktFWVBBRCIKKz40LjQuIGtleXBhZCgpPC9BCis+PC9IMworPjxQCis+VGhpcyBpcyBteSBmYXZvcml0ZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gSXQgZW5hYmxlcyB0aGUgcmVhZGluZyBvZiBmdW5jdGlvbgora2V5cyBsaWtlIEYxLCBGMiwgYXJyb3cga2V5cyBldGMuIEFsbW9zdCBldmVyeSBpbnRlcmFjdGl2ZSBwcm9ncmFtIGVuYWJsZXMgdGhpcywKK2FzIGFycm93IGtleXMgYXJlIGEgbWFqb3IgcGFydCBvZiBhbnkgVXNlciBJbnRlcmZhY2UuIERvCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmtleXBhZChzdGRzY3IsIFRSVUUpIDwvVFQKKz4gdG8gZW5hYmxlIHRoaXMgZmVhdHVyZQorZm9yIHRoZSByZWd1bGFyIHNjcmVlbiAoc3Rkc2NyKS4gWW91IHdpbGwgbGVhcm4gbW9yZSBhYm91dCBrZXkgbWFuYWdlbWVudCBpbgorbGF0ZXIgc2VjdGlvbnMgb2YgdGhpcyBkb2N1bWVudC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkhBTEZERUxBWSIKKz40LjUuIGhhbGZkZWxheSgpPC9BCis+PC9IMworPjxQCis+VGhpcyBmdW5jdGlvbiwgdGhvdWdoIG5vdCB1c2VkIHZlcnkgb2Z0ZW4sIGlzIGEgdXNlZnVsIG9uZSBhdCB0aW1lcy4KK2hhbGZkZWxheSgpaXMgY2FsbGVkIHRvIGVuYWJsZSB0aGUgaGFsZi1kZWxheSBtb2RlLCB3aGljaCBpcyBzaW1pbGFyIHRvIHRoZQorY2JyZWFrKCkgbW9kZSBpbiB0aGF0IGNoYXJhY3RlcnMgdHlwZWQgYXJlIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSB0byBwcm9ncmFtLgorSG93ZXZlciwgaXQgd2FpdHMgZm9yICdYJyB0ZW50aHMgb2YgYSBzZWNvbmQgZm9yIGlucHV0IGFuZCB0aGVuIHJldHVybnMgRVJSLCBpZgorbm8gaW5wdXQgaXMgYXZhaWxhYmxlLiAnWCcgaXMgdGhlIHRpbWVvdXQgdmFsdWUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbgoraGFsZmRlbGF5KCkuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gYXNrIHRoZSB1c2VyIGZvciBpbnB1dCwKK2FuZCBpZiBoZSBkb2Vzbid0IHJlc3BvbmQgd2l0aCBpbiBjZXJ0YWluIHRpbWUsIHdlIGNhbiBkbyBzb21lIHRoaW5nIGVsc2UuIE9uZQorcG9zc2libGUgZXhhbXBsZSBpcyBhIHRpbWVvdXQgYXQgdGhlIHBhc3N3b3JkIHByb21wdC4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJNSVNDSU5JVCIKKz40LjYuIE1pc2NlbGxhbmVvdXMgSW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+VGhlcmUgYXJlIGZldyBtb3JlIGZ1bmN0aW9ucyB3aGljaCBhcmUgY2FsbGVkIGF0IGluaXRpYWxpemF0aW9uIHRvCitjdXN0b21pemUgY3Vyc2VzIGJlaGF2aW9yLiBUaGV5IGFyZSBub3QgdXNlZCBhcyBleHRlbnNpdmVseSBhcyB0aG9zZSBtZW50aW9uZWQgCithYm92ZS4gU29tZSBvZiB0aGVtIGFyZSBleHBsYWluZWQgd2hlcmUgYXBwcm9wcmlhdGUuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJJTklURVgiCis+NC43LiBBbiBFeGFtcGxlPC9BCis+PC9IMworPjxQCis+TGV0J3Mgd3JpdGUgYSBwcm9ncmFtIHdoaWNoIHdpbGwgY2xhcmlmeSB0aGUgdXNhZ2Ugb2YgdGhlc2UgZnVuY3Rpb25zLjwvUAorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJCSU5GVSIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAyLiAgSW5pdGlhbGl6YXRpb24gRnVuY3Rpb24gVXNhZ2UgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO25jdXJzZXMuaCYjNjI7CiAKIGludCBtYWluKCkKLXsgICAgICAgaW50IGNoOworewlpbnQgY2g7CiAKLSAgICAgICAgaW5pdHNjcigpOyAgICAgICAgICAgICAgICAgICAgICAvKiBTdGFydCBjdXJzZXMgbW9kZSAgICAgICAgICAgICovCi0gICAgICAgIHJhdygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGluZSBidWZmZXJpbmcgZGlzYWJsZWQgICAgICAqLwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsgICAgICAgICAgIC8qIFdlIGdldCBGMSwgRjIgZXRjLi4gICAgICAgICAgKi8KLSAgICAgICAgbm9lY2hvKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBEb24ndCBlY2hvKCkgd2hpbGUgd2UgZG8gZ2V0Y2ggKi8KKwlpbml0c2NyKCk7CQkJLyogU3RhcnQgY3Vyc2VzIG1vZGUgCQkqLworCXJhdygpOwkJCQkvKiBMaW5lIGJ1ZmZlcmluZyBkaXNhYmxlZAkqLworCWtleXBhZChzdGRzY3IsIFRSVUUpOwkJLyogV2UgZ2V0IEYxLCBGMiBldGMuLgkJKi8KKwlub2VjaG8oKTsJCQkvKiBEb24ndCBlY2hvKCkgd2hpbGUgd2UgZG8gZ2V0Y2ggKi8KIAotICAgICAgICBwcmludHcoIlR5cGUgYW55IGNoYXJhY3RlciB0byBzZWUgaXQgaW4gYm9sZFxuIik7Ci0gICAgICAgIGNoID0gZ2V0Y2goKTsgICAgICAgICAgICAgICAgICAgLyogSWYgcmF3KCkgaGFkbid0IGJlZW4gY2FsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd2UgaGF2ZSB0byBwcmVzcyBlbnRlciBiZWZvcmUgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBnZXRzIHRvIHRoZSBwcm9ncmFtICAgICAgICAgICovCi0gICAgICAgIGlmKGNoID09IEtFWV9GKDEpKSAgICAgICAgICAgICAgLyogV2l0aG91dCBrZXlwYWQgZW5hYmxlZCB0aGlzIHdpbGwgKi8KLSAgICAgICAgICAgICAgICBwcmludHcoIkYxIEtleSBwcmVzc2VkIik7LyogIG5vdCBnZXQgdG8gdXMgZWl0aGVyICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2l0aG91dCBub2VjaG8oKSBzb21lIHVnbHkgZXNjYXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogY2hhcmFjaHRlcnMgbWlnaHQgaGF2ZSBiZWVuIHByaW50ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBvbiBzY3JlZW4gICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgeyAgICAgICBwcmludHcoIlRoZSBwcmVzc2VkIGtleSBpcyAiKTsKLSAgICAgICAgICAgICAgICBhdHRyb24oQV9CT0xEKTsKLSAgICAgICAgICAgICAgICBwcmludHcoIiVjIiwgY2gpOwotICAgICAgICAgICAgICAgIGF0dHJvZmYoQV9CT0xEKTsKLSAgICAgICAgfQotICAgICAgICByZWZyZXNoKCk7ICAgICAgICAgICAgICAgICAgICAgIC8qIFByaW50IGl0IG9uIHRvIHRoZSByZWFsIHNjcmVlbiAqLwotICAgICAgICBnZXRjaCgpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgZm9yIHVzZXIgaW5wdXQgKi8KLSAgICAgICAgZW5kd2luKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICAgKi8KKyAgICAJcHJpbnR3KCJUeXBlIGFueSBjaGFyYWN0ZXIgdG8gc2VlIGl0IGluIGJvbGRcbiIpOworCWNoID0gZ2V0Y2goKTsJCQkvKiBJZiByYXcoKSBoYWRuJ3QgYmVlbiBjYWxsZWQKKwkJCQkJICogd2UgaGF2ZSB0byBwcmVzcyBlbnRlciBiZWZvcmUgaXQKKwkJCQkJICogZ2V0cyB0byB0aGUgcHJvZ3JhbSAJCSovCisJaWYoY2ggPT0gS0VZX0YoMSkpCQkvKiBXaXRob3V0IGtleXBhZCBlbmFibGVkIHRoaXMgd2lsbCAqLworCQlwcmludHcoIkYxIEtleSBwcmVzc2VkIik7LyogIG5vdCBnZXQgdG8gdXMgZWl0aGVyCSovCisJCQkJCS8qIFdpdGhvdXQgbm9lY2hvKCkgc29tZSB1Z2x5IGVzY2FwZQorCQkJCQkgKiBjaGFyYWNodGVycyBtaWdodCBoYXZlIGJlZW4gcHJpbnRlZAorCQkJCQkgKiBvbiBzY3JlZW4JCQkqLworCWVsc2UKKwl7CXByaW50dygiVGhlIHByZXNzZWQga2V5IGlzICIpOworCQlhdHRyb24oQV9CT0xEKTsKKwkJcHJpbnR3KCIlYyIsIGNoKTsKKwkJYXR0cm9mZihBX0JPTEQpOworCX0KKwlyZWZyZXNoKCk7CQkJLyogUHJpbnQgaXQgb24gdG8gdGhlIHJlYWwgc2NyZWVuICovCisgICAgCWdldGNoKCk7CQkJLyogV2FpdCBmb3IgdXNlciBpbnB1dCAqLworCWVuZHdpbigpOwkJCS8qIEVuZCBjdXJzZXMgbW9kZQkJICAqLwogCi0gICAgICAgIHJldHVybiAwOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPlRoaXMgcHJvZ3JhbSBpcyBzZWxmLWV4cGxhbmF0b3J5LiBCdXQgSSB1c2VkIGZ1bmN0aW9ucyB3aGljaAotYXJlbid0IGV4cGxhaW5lZCB5ZXQuIFRoZSBmdW5jdGlvbiA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmdldGNoKCk8L3Zhcj4gaXMgdXNlZCB0byBnZXQgYSBjaGFyYWN0ZXIgZnJvbSB1c2VyLiBJdCBpcwotZXF1aXZhbGVudCB0byBub3JtYWwgPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0Y2hhcigpPC92YXI+IGV4Y2VwdAotdGhhdCB3ZSBjYW4gZGlzYWJsZSB0aGUgbGluZSBidWZmZXJpbmcgdG8gYXZvaWQgJmx0O2VudGVyJmd0OyBhZnRlcgotaW5wdXQuIExvb2sgZm9yIG1vcmUgYWJvdXQgPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0Y2goKTwvdmFyPmFuZAotcmVhZGluZyBrZXlzIGluIHRoZSA8YSBocmVmPSIjS0VZUyI+a2V5IG1hbmFnZW1lbnQgc2VjdGlvbjwvYT4gLgotVGhlIGZ1bmN0aW9ucyBhdHRyb24gYW5kIGF0dHJvZmYgYXJlIHVzZWQgdG8gc3dpdGNoIHNvbWUgYXR0cmlidXRlcwotb24gYW5kIG9mZiByZXNwZWN0aXZlbHkuIEluIHRoZSBleGFtcGxlIEkgdXNlZCB0aGVtIHRvIHByaW50IHRoZQotY2hhcmFjdGVyIGluIGJvbGQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwbGFpbmVkIGluIGRldGFpbAotbGF0ZXIuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IkFXT1JEV0lORE9XUyIgaWQ9IkFXT1JEV0lORE9XUyI+NS4gQQotV29yZCBhYm91dCBXaW5kb3dzPC9hPjwvaDI+Ci08cD5CZWZvcmUgd2UgcGx1bmdlIGludG8gdGhlIG15cmlhZCBuY3Vyc2VzIGZ1bmN0aW9ucywgbGV0IG1lIGNsZWFyCi1mZXcgdGhpbmdzIGFib3V0IHdpbmRvd3MuIFdpbmRvd3MgYXJlIGV4cGxhaW5lZCBpbiBkZXRhaWwgaW4KLWZvbGxvd2luZyA8YSBocmVmPSIjV0lORE9XUyI+c2VjdGlvbnM8L2E+PC9wPgotPHA+QSBXaW5kb3cgaXMgYW4gaW1hZ2luYXJ5IHNjcmVlbiBkZWZpbmVkIGJ5IGN1cnNlcyBzeXN0ZW0uIEEKLXdpbmRvdyBkb2VzIG5vdCBtZWFuIGEgYm9yZGVyZWQgd2luZG93IHdoaWNoIHlvdSB1c3VhbGx5IHNlZSBvbgotV2luOVggcGxhdGZvcm1zLiBXaGVuIGN1cnNlcyBpcyBpbml0aWFsaXplZCwgaXQgY3JlYXRlcyBhIGRlZmF1bHQKLXdpbmRvdyBuYW1lZCA8dmFyIGNsYXNzPSJMSVRFUkFMIj5zdGRzY3I8L3Zhcj4gd2hpY2ggcmVwcmVzZW50cwoteW91ciA4MHgyNSAob3IgdGhlIHNpemUgb2Ygd2luZG93IGluIHdoaWNoIHlvdSBhcmUgcnVubmluZykgc2NyZWVuLgotSWYgeW91IGFyZSBkb2luZyBzaW1wbGUgdGFza3MgbGlrZSBwcmludGluZyBmZXcgc3RyaW5ncywgcmVhZGluZwotaW5wdXQgZXRjLiwgeW91IGNhbiBzYWZlbHkgdXNlIHRoaXMgc2luZ2xlIHdpbmRvdyBmb3IgYWxsIG9mIHlvdXIKLXB1cnBvc2VzLiBZb3UgY2FuIGFsc28gY3JlYXRlIHdpbmRvd3MgYW5kIGNhbGwgZnVuY3Rpb25zIHdoaWNoCi1leHBsaWNpdGx5IHdvcmsgb24gdGhlIHNwZWNpZmllZCB3aW5kb3cuPC9wPgotPHA+Rm9yIGV4YW1wbGUsIGlmIHlvdSBjYWxsPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICBwcmludHcoIkhpIFRoZXJlICEhISIpOwotICAgIHJlZnJlc2goKTs8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5JdCBwcmludHMgdGhlIHN0cmluZyBvbiBzdGRzY3IgYXQgdGhlIHByZXNlbnQgY3Vyc29yIHBvc2l0aW9uLgotU2ltaWxhcmx5IHRoZSBjYWxsIHRvIHJlZnJlc2goKSwgd29ya3Mgb24gc3Rkc2NyIG9ubHkuPC9wPgotPHA+U2F5IHlvdSBoYXZlIGNyZWF0ZWQgPGEgaHJlZj0iI1dJTkRPV1MiPndpbmRvd3M8L2E+IHRoZW4geW91Ci1oYXZlIHRvIGNhbGwgYSBmdW5jdGlvbiB3aXRoIGEgJ3cnIGFkZGVkIHRvIHRoZSB1c3VhbCBmdW5jdGlvbi48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIHdwcmludHcod2luLCAiSGkgVGhlcmUgISEhIik7Ci0gICAgd3JlZnJlc2god2luKTs8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5BcyB5b3Ugd2lsbCBzZWUgaW4gdGhlIHJlc3Qgb2YgdGhlIGRvY3VtZW50LCBuYW1pbmcgb2YgZnVuY3Rpb25zCi1mb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbi4gRm9yIGVhY2ggZnVuY3Rpb24gdGhlcmUgdXN1YWxseSBhcmUKLXRocmVlIG1vcmUgZnVuY3Rpb25zLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPiAgICBwcmludHcoc3RyaW5nKTsgICAgICAgIC8qIFByaW50IG9uIHN0ZHNjciBhdCBwcmVzZW50IGN1cnNvciBwb3NpdGlvbiAqLworCXJldHVybiAwOworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPlRoaXMgcHJvZ3JhbSBpcyBzZWxmLWV4cGxhbmF0b3J5LiBCdXQgSSB1c2VkIGZ1bmN0aW9ucyB3aGljaCBhcmVuJ3QgZXhwbGFpbmVkCit5ZXQuIFRoZSBmdW5jdGlvbiA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldGNoKCk8L1RUCis+IGlzIHVzZWQgdG8gZ2V0IGEKK2NoYXJhY3RlciBmcm9tIHVzZXIuIEl0IGlzIGVxdWl2YWxlbnQgdG8gbm9ybWFsCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldGNoYXIoKTwvVFQKKz4gZXhjZXB0IHRoYXQgd2UgY2FuIGRpc2FibGUgdGhlIGxpbmUKK2J1ZmZlcmluZyB0byBhdm9pZCAmbHQ7ZW50ZXImZ3Q7IGFmdGVyIGlucHV0LiBMb29rIGZvciBtb3JlIGFib3V0Cis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldGNoKCk8L1RUCis+YW5kIHJlYWRpbmcga2V5cyBpbiB0aGUgPEEKK0hSRUY9IiNLRVlTIgorPiBrZXkgbWFuYWdlbWVudCBzZWN0aW9uIDwvQQorPi4gVGhlIGZ1bmN0aW9ucyBhdHRyb24gYW5kIGF0dHJvZmYgCithcmUgdXNlZCB0byBzd2l0Y2ggc29tZSBhdHRyaWJ1dGVzIG9uIGFuZCBvZmYgcmVzcGVjdGl2ZWx5LiAgSW4gdGhlIGV4YW1wbGUgSSAKK3VzZWQgdGhlbSB0byBwcmludCB0aGUgY2hhcmFjdGVyIGluIGJvbGQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwbGFpbmVkIGluIGRldGFpbAorbGF0ZXIuPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IkFXT1JEV0lORE9XUyIKKz41LiBBIFdvcmQgYWJvdXQgV2luZG93czwvQQorPjwvSDIKKz48UAorPiAKK0JlZm9yZSB3ZSBwbHVuZ2UgaW50byB0aGUgbXlyaWFkIG5jdXJzZXMgZnVuY3Rpb25zLCBsZXQgbWUgY2xlYXIgZmV3IHRoaW5ncworYWJvdXQgd2luZG93cy4gV2luZG93cyBhcmUgZXhwbGFpbmVkIGluIGRldGFpbCBpbiBmb2xsb3dpbmcgPEEKK0hSRUY9IiNXSU5ET1dTIgorPiBzZWN0aW9ucyA8L0EKKz48L1AKKz48UAorPkEgV2luZG93IGlzIGFuIGltYWdpbmFyeSBzY3JlZW4gZGVmaW5lZCBieSBjdXJzZXMgc3lzdGVtLiBBIHdpbmRvdyBkb2VzIG5vdCBtZWFuCithIGJvcmRlcmVkIHdpbmRvdyB3aGljaCB5b3UgdXN1YWxseSBzZWUgb24gV2luOVggcGxhdGZvcm1zLiBXaGVuIGN1cnNlcyBpcworaW5pdGlhbGl6ZWQsIGl0IGNyZWF0ZXMgYSBkZWZhdWx0IHdpbmRvdyBuYW1lZAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5zdGRzY3I8L1RUCis+IHdoaWNoIHJlcHJlc2VudHMgeW91ciA4MHgyNSAob3IgdGhlIHNpemUKK29mIHdpbmRvdyBpbiB3aGljaCB5b3UgYXJlIHJ1bm5pbmcpIHNjcmVlbi4gIElmIHlvdSBhcmUgZG9pbmcgc2ltcGxlIHRhc2tzIGxpa2UKK3ByaW50aW5nIGZldyBzdHJpbmdzLCByZWFkaW5nIGlucHV0IGV0Yy4sIHlvdSBjYW4gc2FmZWx5IHVzZSB0aGlzIHNpbmdsZSB3aW5kb3cKK2ZvciBhbGwgb2YgeW91ciBwdXJwb3Nlcy4gWW91IGNhbiBhbHNvIGNyZWF0ZSB3aW5kb3dzIGFuZCBjYWxsIGZ1bmN0aW9ucyB3aGljaAorZXhwbGljaXRseSB3b3JrIG9uIHRoZSBzcGVjaWZpZWQgd2luZG93LjwvUAorPjxQCis+Rm9yIGV4YW1wbGUsIGlmIHlvdSBjYWxsPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICBwcmludHcoIkhpIFRoZXJlICEhISIpOworICAgIHJlZnJlc2goKTs8L1BSRQorPjxQCis+SXQgcHJpbnRzIHRoZSBzdHJpbmcgb24gc3Rkc2NyIGF0IHRoZSBwcmVzZW50IGN1cnNvciBwb3NpdGlvbi4gU2ltaWxhcmx5IHRoZSAKK2NhbGwgdG8gcmVmcmVzaCgpLCB3b3JrcyBvbiBzdGRzY3Igb25seS4gPC9QCis+PFAKKz5TYXkgeW91IGhhdmUgY3JlYXRlZCA8QQorSFJFRj0iI1dJTkRPV1MiCis+d2luZG93czwvQQorPiB0aGVuIHlvdSBoYXZlIHRvIAorY2FsbCBhIGZ1bmN0aW9uIHdpdGggYSAndycgYWRkZWQgdG8gdGhlIHVzdWFsIGZ1bmN0aW9uLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgd3ByaW50dyh3aW4sICJIaSBUaGVyZSAhISEiKTsKKyAgICB3cmVmcmVzaCh3aW4pOzwvUFJFCis+PFAKKz5BcyB5b3Ugd2lsbCBzZWUgaW4gdGhlIHJlc3Qgb2YgdGhlIGRvY3VtZW50LCBuYW1pbmcgb2YgZnVuY3Rpb25zIGZvbGxvdyB0aGUKK3NhbWUgY29udmVudGlvbi4gRm9yIGVhY2ggZnVuY3Rpb24gdGhlcmUgdXN1YWxseSBhcmUgdGhyZWUgbW9yZSBmdW5jdGlvbnMuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICBwcmludHcoc3RyaW5nKTsgICAgICAgIC8qIFByaW50IG9uIHN0ZHNjciBhdCBwcmVzZW50IGN1cnNvciBwb3NpdGlvbiAqLwogICAgIG12cHJpbnR3KHksIHgsIHN0cmluZyk7LyogTW92ZSB0byAoeSwgeCkgdGhlbiBwcmludCBzdHJpbmcgICAgICovCiAgICAgd3ByaW50dyh3aW4sIHN0cmluZyk7ICAvKiBQcmludCBvbiB3aW5kb3cgd2luIGF0IHByZXNlbnQgY3Vyc29yIHBvc2l0aW9uICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbiB0aGUgd2luZG93ICovCiAgICAgbXZ3cHJpbnR3KHdpbiwgeSwgeCwgc3RyaW5nKTsgICAvKiBNb3ZlIHRvICh5LCB4KSByZWxhdGl2ZSB0byB3aW5kb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvLW9yZGluYXRlcyBhbmQgdGhlbiBwcmludCAgICAgICAgICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VXN1YWxseSB0aGUgdy1sZXNzIGZ1bmN0aW9ucyBhcmUgbWFjcm9zIHdoaWNoIGV4cGFuZCB0bwotY29ycmVzcG9uZGluZyB3LWZ1bmN0aW9uIHdpdGggc3Rkc2NyIGFzIHRoZSB3aW5kb3cgcGFyYW1ldGVyLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iUFJJTlRXIiBpZD0iUFJJTlRXIj42LiBPdXRwdXQKLWZ1bmN0aW9uczwvYT48L2gyPgotPHA+SSBndWVzcyB5b3UgY2FuJ3Qgd2FpdCBhbnkgbW9yZSB0byBzZWUgc29tZSBhY3Rpb24uIEJhY2sgdG8gb3VyCi1vZHlzc2V5IG9mIGN1cnNlcyBmdW5jdGlvbnMuIE5vdyB0aGF0IGN1cnNlcyBpcyBpbml0aWFsaXplZCwgbGV0J3MKLWludGVyYWN0IHdpdGggd29ybGQuPC9wPgotPHA+VGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZnVuY3Rpb25zIHdoaWNoIHlvdSBjYW4gdXNlIHRvIGRvCi1vdXRwdXQgb24gc2NyZWVuLjwvcD4KLTxvbCB0eXBlPSIxIj4KLTxsaT4KLTxwPmFkZGNoKCkgY2xhc3M6IFByaW50IHNpbmdsZSBjaGFyYWN0ZXIgd2l0aCBhdHRyaWJ1dGVzPC9wPgotPC9saT4KLTxsaT4KLTxwPnByaW50dygpIGNsYXNzOiBQcmludCBmb3JtYXR0ZWQgb3V0cHV0IHNpbWlsYXIgdG8gcHJpbnRmKCk8L3A+Ci08L2xpPgotPGxpPgotPHA+YWRkc3RyKCkgY2xhc3M6IFByaW50IHN0cmluZ3M8L3A+Ci08L2xpPgotPC9vbD4KLTxwPlRoZXNlIGZ1bmN0aW9ucyBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgYW5kIGl0J3MgYSBtYXR0ZXIgb2YKLXN0eWxlIGFzIHRvIHdoaWNoIGNsYXNzIGlzIHVzZWQuIExldCdzIHNlZSBlYWNoIG9uZSBpbiBkZXRhaWwuPC9wPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQUREQ0hDTEFTUyIgaWQ9IkFERENIQ0xBU1MiPjYuMS4gYWRkY2goKQotY2xhc3Mgb2YgZnVuY3Rpb25zPC9hPjwvaDM+Ci08cD5UaGVzZSBmdW5jdGlvbnMgcHV0IGEgc2luZ2xlIGNoYXJhY3RlciBpbnRvIHRoZSBjdXJyZW50IGN1cnNvcgotbG9jYXRpb24gYW5kIGFkdmFuY2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJzb3IuIFlvdSBjYW4gZ2l2ZSB0aGUKLWNoYXJhY3RlciB0byBiZSBwcmludGVkIGJ1dCB0aGV5IHVzdWFsbHkgYXJlIHVzZWQgdG8gcHJpbnQgYQotY2hhcmFjdGVyIHdpdGggc29tZSBhdHRyaWJ1dGVzLiBBdHRyaWJ1dGVzIGFyZSBleHBsYWluZWQgaW4gZGV0YWlsCi1pbiBsYXRlciA8YSBocmVmPSIjQVRUUklCIj5zZWN0aW9uczwvYT4gb2YgdGhlIGRvY3VtZW50LiBJZiBhCi1jaGFyYWN0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGF0dHJpYnV0ZShib2xkLCByZXZlcnNlIHZpZGVvCi1ldGMuKSwgd2hlbiBjdXJzZXMgcHJpbnRzIHRoZSBjaGFyYWN0ZXIsIGl0IGlzIHByaW50ZWQgaW4gdGhhdAotYXR0cmlidXRlLjwvcD4KLTxwPkluIG9yZGVyIHRvIGNvbWJpbmUgYSBjaGFyYWN0ZXIgd2l0aCBzb21lIGF0dHJpYnV0ZXMsIHlvdSBoYXZlCi10d28gb3B0aW9uczo8L3A+Ci08dWw+Ci08bGk+Ci08cD5CeSBPUidpbmcgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGggdGhlIGRlc2lyZWQgYXR0cmlidXRlIG1hY3Jvcy4KLVRoZXNlIGF0dHJpYnV0ZSBtYWNyb3MgY291bGQgYmUgZm91bmQgaW4gdGhlIGhlYWRlciBmaWxlCi08dmFyIGNsYXNzPSJMSVRFUkFMIj5uY3Vyc2VzLmg8L3Zhcj4uIEZvciBleGFtcGxlLCB5b3Ugd2FudCB0bwotcHJpbnQgYSBjaGFyYWN0ZXIgY2gob2YgdHlwZSBjaGFyKSBib2xkIGFuZCB1bmRlcmxpbmVkLCB5b3Ugd291bGQKLWNhbGwgYWRkY2goKSBhcyBiZWxvdy48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iOTAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgYWRkY2goY2ggfCBBX0JPTEQgfCBBX1VOREVSTElORSk7PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTxsaT4KLTxwPkJ5IHVzaW5nIGZ1bmN0aW9ucyBsaWtlIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+YXR0cnNldCgpLGF0dHJvbigpLGF0dHJvZmYoKTwvdmFyPi4gVGhlc2UgZnVuY3Rpb25zIGFyZQotZXhwbGFpbmVkIGluIHRoZSA8YSBocmVmPSIjQVRUUklCIj5BdHRyaWJ1dGVzPC9hPiBzZWN0aW9uLiBCcmllZmx5LAotdGhleSBtYW5pcHVsYXRlIHRoZSBjdXJyZW50IGF0dHJpYnV0ZXMgb2YgdGhlIGdpdmVuIHdpbmRvdy4gT25jZQotc2V0LCB0aGUgY2hhcmFjdGVyIHByaW50ZWQgaW4gdGhlIHdpbmRvdyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZQotYXR0cmlidXRlcyB1bnRpbCBpdCBpcyB0dXJuZWQgb2ZmLjwvcD4KLTwvbGk+Ci08L3VsPgotPHA+QWRkaXRpb25hbGx5LCA8dmFyIGNsYXNzPSJMSVRFUkFMIj5jdXJzZXM8L3Zhcj4gcHJvdmlkZXMgc29tZQotc3BlY2lhbCBjaGFyYWN0ZXJzIGZvciBjaGFyYWN0ZXItYmFzZWQgZ3JhcGhpY3MuIFlvdSBjYW4gZHJhdwotdGFibGVzLCBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxpbmVzLCBldGMuIFlvdSBjYW4gZmluZCBhbGwKLWF2YWxpYWJsZSBjaGFyYWN0ZXJzIGluIHRoZSBoZWFkZXIgZmlsZSA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPm5jdXJzZXMuaDwvdmFyPi4gVHJ5IGxvb2tpbmcgZm9yIG1hY3JvcyBiZWdpbm5pbmcgd2l0aAotPHZhciBjbGFzcz0iTElURVJBTCI+QUNTXzwvdmFyPiBpbiB0aGlzIGZpbGUuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJBRU4yOTgiIGlkPSJBRU4yOTgiPjYuMi4gbXZhZGRjaCgpLAotd2FkZGNoKCkgYW5kIG12d2FkZGNoKCk8L2E+PC9oMz4KLTxwPjx2YXIgY2xhc3M9IkxJVEVSQUwiPm12YWRkY2goKTwvdmFyPiBpcyB1c2VkIHRvIG1vdmUgdGhlIGN1cnNvcgotdG8gYSBnaXZlbiBwb2ludCwgYW5kIHRoZW4gcHJpbnQuIFRodXMsIHRoZSBjYWxsczo8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj4gICAgbW92ZShyb3csY29sKTsgICAgLyogbW92ZXMgdGhlIGN1cnNvciB0byByb3c8ZW0+dGg8L2VtPiByb3cgYW5kIGNvbDxlbT50aDwvZW0+IGNvbHVtbiAqLwotICAgIGFkZGNoKGNoKTs8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjby1vcmRpbmF0ZXMgYW5kIHRoZW4gcHJpbnQgICAgICAgICAqLzwvUFJFCis+PFAKKz5Vc3VhbGx5IHRoZSB3LWxlc3MgZnVuY3Rpb25zIGFyZSBtYWNyb3Mgd2hpY2ggZXhwYW5kIHRvIGNvcnJlc3BvbmRpbmcgdy1mdW5jdGlvbgord2l0aCBzdGRzY3IgYXMgdGhlIHdpbmRvdyBwYXJhbWV0ZXIuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDEiCis+PEhSPjxIMgorQ0xBU1M9IlNFQ1QxIgorPjxBCitOQU1FPSJQUklOVFciCis+Ni4gT3V0cHV0IGZ1bmN0aW9uczwvQQorPjwvSDIKKz48UAorPkkgZ3Vlc3MgeW91IGNhbid0IHdhaXQgYW55IG1vcmUgdG8gc2VlIHNvbWUgYWN0aW9uLiBCYWNrIHRvIG91ciBvZHlzc2V5IG9mCitjdXJzZXMgZnVuY3Rpb25zLiBOb3cgdGhhdCBjdXJzZXMgaXMgaW5pdGlhbGl6ZWQsIGxldCdzIGludGVyYWN0IHdpdGgKK3dvcmxkLjwvUAorPjxQCis+VGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgZnVuY3Rpb25zIHdoaWNoIHlvdSBjYW4gdXNlIHRvIGRvIG91dHB1dCBvbiBzY3JlZW4uCis8UAorPjwvUAorPjxPTAorVFlQRT0iMSIKKz48TEkKKz48UAorPmFkZGNoKCkgY2xhc3M6IFByaW50IHNpbmdsZSBjaGFyYWN0ZXIgd2l0aCBhdHRyaWJ1dGVzIDwvUAorPjwvTEkKKz48TEkKKz48UAorPnByaW50dygpIGNsYXNzOiBQcmludCBmb3JtYXR0ZWQgb3V0cHV0IHNpbWlsYXIgdG8gcHJpbnRmKCk8L1AKKz48L0xJCis+PExJCis+PFAKKz5hZGRzdHIoKSBjbGFzczogUHJpbnQgc3RyaW5nczwvUAorPjwvTEkKKz48L09MCis+PC9QCis+PFAKKz5UaGVzZSBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IGFuZCBpdCdzIGEgbWF0dGVyIG9mIHN0eWxlIGFzIHRvCit3aGljaCBjbGFzcyBpcyB1c2VkLiBMZXQncyBzZWUgZWFjaCBvbmUgaW4gZGV0YWlsLjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkFERENIQ0xBU1MiCis+Ni4xLiBhZGRjaCgpIGNsYXNzIG9mIGZ1bmN0aW9uczwvQQorPjwvSDMKKz48UAorPlRoZXNlIGZ1bmN0aW9ucyBwdXQgYSBzaW5nbGUgY2hhcmFjdGVyIGludG8gdGhlIGN1cnJlbnQgY3Vyc29yIGxvY2F0aW9uIGFuZAorYWR2YW5jZSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvci4gWW91IGNhbiBnaXZlIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcHJpbnRlZCBidXQKK3RoZXkgdXN1YWxseSBhcmUgdXNlZCB0byBwcmludCBhIGNoYXJhY3RlciB3aXRoIHNvbWUgYXR0cmlidXRlcy4gIEF0dHJpYnV0ZXMgYXJlCitleHBsYWluZWQgaW4gZGV0YWlsIGluIGxhdGVyIDxBCitIUkVGPSIjQVRUUklCIgorPiBzZWN0aW9ucyA8L0EKKz4gb2YgdGhlCitkb2N1bWVudC4gSWYgYSBjaGFyYWN0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGF0dHJpYnV0ZShib2xkLCByZXZlcnNlIHZpZGVvCitldGMuKSwgd2hlbiBjdXJzZXMgcHJpbnRzIHRoZSBjaGFyYWN0ZXIsIGl0IGlzIHByaW50ZWQgaW4gdGhhdCBhdHRyaWJ1dGUuPC9QCis+PFAKKz5JbiBvcmRlciB0byBjb21iaW5lIGEgY2hhcmFjdGVyIHdpdGggc29tZSBhdHRyaWJ1dGVzLCB5b3UgaGF2ZSB0d28gb3B0aW9uczo8L1AKKz48UAorPjwvUAorPjxVTAorPjxMSQorPjxQCis+QnkgT1InaW5nIGEgc2luZ2xlIGNoYXJhY3RlciB3aXRoIHRoZSBkZXNpcmVkIGF0dHJpYnV0ZSBtYWNyb3MuIFRoZXNlIGF0dHJpYnV0ZQorbWFjcm9zIGNvdWxkIGJlIGZvdW5kIGluIHRoZSBoZWFkZXIgZmlsZQorPFRUCitDTEFTUz0iTElURVJBTCIKKz5uY3Vyc2VzLmg8L1RUCis+LiBGb3IgZXhhbXBsZSwgeW91IHdhbnQgdG8gcHJpbnQgYQorY2hhcmFjdGVyIGNoKG9mIHR5cGUgY2hhcikgYm9sZCBhbmQgdW5kZXJsaW5lZCwgeW91IHdvdWxkIGNhbGwgYWRkY2goKSBhcyBiZWxvdy4KKzxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgYWRkY2goY2ggfCBBX0JPTEQgfCBBX1VOREVSTElORSk7PC9QUkUKKz48L1AKKz48L0xJCis+PExJCis+PFAKKz5CeSB1c2luZyBmdW5jdGlvbnMgbGlrZSA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmF0dHJzZXQoKSxhdHRyb24oKSxhdHRyb2ZmKCk8L1RUCis+LiBUaGVzZSBmdW5jdGlvbnMgYXJlIGV4cGxhaW5lZCBpbiB0aGUgPEEKK0hSRUY9IiNBVFRSSUIiCis+QXR0cmlidXRlczwvQQorPiBzZWN0aW9uLiBCcmllZmx5LCB0aGV5IG1hbmlwdWxhdGUgdGhlIGN1cnJlbnQgYXR0cmlidXRlcyBvZiAKK3RoZSBnaXZlbiB3aW5kb3cuIE9uY2Ugc2V0LCB0aGUgY2hhcmFjdGVyIHByaW50ZWQgaW4gdGhlIHdpbmRvdyBhcmUgYXNzb2NpYXRlZCAKK3dpdGggdGhlIGF0dHJpYnV0ZXMgdW50aWwgaXQgaXMgdHVybmVkIG9mZi48L1AKKz48L0xJCis+PC9VTAorPjxQCis+QWRkaXRpb25hbGx5LCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmN1cnNlczwvVFQKKz4gcHJvdmlkZXMgc29tZSBzcGVjaWFsCitjaGFyYWN0ZXJzIGZvciBjaGFyYWN0ZXItYmFzZWQgZ3JhcGhpY3MuIFlvdSBjYW4gZHJhdyB0YWJsZXMsIGhvcml6b250YWwgb3IKK3ZlcnRpY2FsIGxpbmVzLCBldGMuIFlvdSBjYW4gZmluZCBhbGwgYXZhbGlhYmxlIGNoYXJhY3RlcnMgaW4gdGhlIGhlYWRlciBmaWxlCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPm5jdXJzZXMuaDwvVFQKKz4uICBUcnkgbG9va2luZyBmb3IgbWFjcm9zIGJlZ2lubmluZword2l0aCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPkFDU188L1RUCis+IGluIHRoaXMgZmlsZS4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJBRU4yOTgiCis+Ni4yLiBtdmFkZGNoKCksIHdhZGRjaCgpIGFuZCBtdndhZGRjaCgpPC9BCis+PC9IMworPjxQCis+PFRUCitDTEFTUz0iTElURVJBTCIKKz5tdmFkZGNoKCk8L1RUCis+IGlzIHVzZWQgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGEgCitnaXZlbiBwb2ludCwgYW5kIHRoZW4gcHJpbnQuIFRodXMsIHRoZSBjYWxsczoKKzxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgbW92ZShyb3csY29sKTsgICAgLyogbW92ZXMgdGhlIGN1cnNvciB0byByb3c8U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+dGg8L0kKKz48L1NQQU4KKz4gcm93IGFuZCBjb2w8U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+dGg8L0kKKz48L1NQQU4KKz4gY29sdW1uICovCisgICAgYWRkY2goY2gpOzwvUFJFCis+CiBjYW4gYmUgcmVwbGFjZWQgYnkKLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgbXZhZGRjaChyb3csY29sLGNoKTs8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD48dmFyIGNsYXNzPSJMSVRFUkFMIj53YWRkY2goKTwvdmFyPiBpcyBzaW1pbGFyIHRvIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+YWRkY2goKTwvdmFyPiwgZXhjZXB0IHRoYXQgaXQgYWRkcyBhIGNoYXJhY3RlciBpbnRvIHRoZQotZ2l2ZW4gd2luZG93LiAoTm90ZSB0aGF0IDx2YXIgY2xhc3M9IkxJVEVSQUwiPmFkZGNoKCk8L3Zhcj4gYWRkcyBhCi1jaGFyYWN0ZXIgaW50byB0aGUgd2luZG93IDx2YXIgY2xhc3M9IkxJVEVSQUwiPnN0ZHNjcjwvdmFyPi4pPC9wPgotPHA+SW4gYSBzaW1pbGFyIGZhc2hpb24gPHZhciBjbGFzcz0iTElURVJBTCI+bXZ3YWRkY2goKTwvdmFyPgotZnVuY3Rpb24gaXMgdXNlZCB0byBhZGQgYSBjaGFyYWN0ZXIgaW50byB0aGUgZ2l2ZW4gd2luZG93IGF0IHRoZQotZ2l2ZW4gY29vcmRpbmF0ZXMuPC9wPgotPHA+Tm93LCB3ZSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgYmFzaWMgb3V0cHV0IGZ1bmN0aW9uIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+YWRkY2goKTwvdmFyPi4gQnV0LCBpZiB3ZSB3YW50IHRvIHByaW50IGEgc3RyaW5nLCBpdAotd291bGQgYmUgdmVyeSBhbm5veWluZyB0byBwcmludCBpdCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLgotRm9ydHVuYXRlbHksIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm5jdXJzZXM8L3Zhcj4gcHJvdmlkZXMKLTx2YXIgY2xhc3M9IkxJVEVSQUwiPnByaW50ZjwvdmFyPjxlbT4tbGlrZTwvZW0+IG9yIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+cHV0czwvdmFyPjxlbT4tbGlrZTwvZW0+IGZ1bmN0aW9ucy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlBSSU5UV0NMQVNTIiBpZD0iUFJJTlRXQ0xBU1MiPjYuMy4KLXByaW50dygpIGNsYXNzIG9mIGZ1bmN0aW9uczwvYT48L2gzPgotPHA+VGhlc2UgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+cHJpbnRmKCk8L3Zhcj4gd2l0aCB0aGUgYWRkZWQgY2FwYWJpbGl0eSBvZiBwcmludGluZyBhdAotYW55IHBvc2l0aW9uIG9uIHRoZSBzY3JlZW4uPC9wPgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iUFJJTlRXTVZQUklOVFciIGlkPQotIlBSSU5UV01WUFJJTlRXIj42LjMuMS4gcHJpbnR3KCkgYW5kIG12cHJpbnR3PC9hPjwvaDQ+Ci08cD5UaGVzZSB0d28gZnVuY3Rpb25zIHdvcmsgbXVjaCBsaWtlIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+cHJpbnRmKCk8L3Zhcj4uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm12cHJpbnR3KCk8L3Zhcj4gY2FuCi1iZSB1c2VkIHRvIG1vdmUgdGhlIGN1cnNvciB0byBhIHBvc2l0aW9uIGFuZCB0aGVuIHByaW50LiBJZiB5b3UKLXdhbnQgdG8gbW92ZSB0aGUgY3Vyc29yIGZpcnN0IGFuZCB0aGVuIHByaW50IHVzaW5nIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+cHJpbnR3KCk8L3Zhcj4gZnVuY3Rpb24sIHVzZSA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPm1vdmUoKTwvdmFyPiBmaXJzdCBhbmQgdGhlbiB1c2UgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5wcmludHcoKTwvdmFyPiB0aG91Z2ggSSBzZWUgbm8gcG9pbnQgd2h5IG9uZSBzaG91bGQgYXZvaWQKLXVzaW5nIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm12cHJpbnR3KCk8L3Zhcj4sIHlvdSBoYXZlIHRoZQotZmxleGliaWxpdHkgdG8gbWFuaXB1bGF0ZS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IldQUklOVFdNVldQUklOVFciIGlkPQotIldQUklOVFdNVldQUklOVFciPjYuMy4yLiB3cHJpbnR3KCkgYW5kIG12d3ByaW50dzwvYT48L2g0PgotPHA+VGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgc2ltaWxhciB0byBhYm92ZSB0d28gZXhjZXB0IHRoYXQgdGhleQotcHJpbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgd2luZG93IGdpdmVuIGFzIGFyZ3VtZW50LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iVldQUklOVFciIGlkPSJWV1BSSU5UVyI+Ni4zLjMuCi12d3ByaW50dygpPC9hPjwvaDQ+Ci08cD5UaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj52cHJpbnRmKCk8L3Zhcj4uIFRoaXMgY2FuIGJlIHVzZWQgd2hlbiB2YXJpYWJsZSBudW1iZXIgb2YKLWFyZ3VtZW50cyBhcmUgdG8gYmUgcHJpbnRlZC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IlNJTVBMRVBSSU5UV0VYIiBpZD0KLSJTSU1QTEVQUklOVFdFWCI+Ni4zLjQuIEEgU2ltcGxlIHByaW50dyBleGFtcGxlPC9hPjwvaDQ+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCUFJFWCIgaWQ9IkJQUkVYIj48L2E+Ci08cD48Yj5FeGFtcGxlIDMuIEEgU2ltcGxlIHByaW50dyBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O25jdXJzZXMuaCZndDsgICAgICAgICAgICAgICAgICAgLyogbmN1cnNlcy5oIGluY2x1ZGVzIHN0ZGlvLmggKi8gIAotI2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OyAKKzxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgbXZhZGRjaChyb3csY29sLGNoKTs8L1BSRQorPjwvUAorPjxQCis+PFRUCitDTEFTUz0iTElURVJBTCIKKz53YWRkY2goKTwvVFQKKz4gaXMgc2ltaWxhciB0bworPFRUCitDTEFTUz0iTElURVJBTCIKKz5hZGRjaCgpPC9UVAorPiwgZXhjZXB0IHRoYXQgaXQgYWRkcyBhIGNoYXJhY3RlciBpbnRvCit0aGUgZ2l2ZW4gd2luZG93LiAoTm90ZSB0aGF0IDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+YWRkY2goKTwvVFQKKz4gYWRkcyBhCitjaGFyYWN0ZXIgaW50byB0aGUgd2luZG93IDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+c3Rkc2NyPC9UVAorPi4pPC9QCis+PFAKKz5JbiBhIHNpbWlsYXIgZmFzaGlvbiA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPm12d2FkZGNoKCk8L1RUCis+IGZ1bmN0aW9uIGlzCit1c2VkIHRvIGFkZCBhIGNoYXJhY3RlciBpbnRvIHRoZSBnaXZlbiB3aW5kb3cgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLjwvUAorPjxQCis+Tm93LCB3ZSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgYmFzaWMgb3V0cHV0IGZ1bmN0aW9uCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmFkZGNoKCk8L1RUCis+LiBCdXQsIGlmIHdlIHdhbnQgdG8gcHJpbnQgYSBzdHJpbmcsIGl0Cit3b3VsZCBiZSB2ZXJ5IGFubm95aW5nIHRvIHByaW50IGl0IGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuIEZvcnR1bmF0ZWx5LAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5uY3Vyc2VzPC9UVAorPiBwcm92aWRlcyA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnByaW50ZjwvVFQKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+LWxpa2U8L0kKKz48L1NQQU4KKz4gb3IKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cHV0czwvVFQKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+LWxpa2U8L0kKKz48L1NQQU4KKz4gZnVuY3Rpb25zLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iUFJJTlRXQ0xBU1MiCis+Ni4zLiBwcmludHcoKSBjbGFzcyBvZiBmdW5jdGlvbnM8L0EKKz48L0gzCis+PFAKKz5UaGVzZSBmdW5jdGlvbnMgYXJlIHNpbWlsYXIgdG8gPFRUCitDTEFTUz0iTElURVJBTCIKKz5wcmludGYoKTwvVFQKKz4gd2l0aAordGhlIGFkZGVkIGNhcGFiaWxpdHkgb2YgcHJpbnRpbmcgYXQgYW55IHBvc2l0aW9uIG9uIHRoZSBzY3JlZW4uIDwvUAorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IlBSSU5UV01WUFJJTlRXIgorPjYuMy4xLiBwcmludHcoKSBhbmQgbXZwcmludHc8L0EKKz48L0g0Cis+PFAKKz5UaGVzZSB0d28gZnVuY3Rpb25zIHdvcmsgbXVjaCBsaWtlIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cHJpbnRmKCk8L1RUCis+LgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5tdnByaW50dygpPC9UVAorPiBjYW4gYmUgdXNlZCB0byBtb3ZlIHRoZSBjdXJzb3IgdG8gYQorcG9zaXRpb24gYW5kIHRoZW4gcHJpbnQuIElmIHlvdSB3YW50IHRvIG1vdmUgdGhlIGN1cnNvciBmaXJzdCBhbmQgdGhlbiBwcmludAordXNpbmcgPFRUCitDTEFTUz0iTElURVJBTCIKKz5wcmludHcoKTwvVFQKKz4gZnVuY3Rpb24sIHVzZQorPFRUCitDTEFTUz0iTElURVJBTCIKKz5tb3ZlKCkgPC9UVAorPiBmaXJzdCBhbmQgdGhlbiB1c2UKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cHJpbnR3KCk8L1RUCis+IHRob3VnaCBJIHNlZSBubyBwb2ludCB3aHkgb25lIHNob3VsZAorYXZvaWQgdXNpbmcgPFRUCitDTEFTUz0iTElURVJBTCIKKz5tdnByaW50dygpPC9UVAorPiwgeW91IGhhdmUgdGhlCitmbGV4aWJpbGl0eSB0byBtYW5pcHVsYXRlLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IldQUklOVFdNVldQUklOVFciCis+Ni4zLjIuIHdwcmludHcoKSBhbmQgbXZ3cHJpbnR3PC9BCis+PC9INAorPjxQCis+VGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgc2ltaWxhciB0byBhYm92ZSB0d28gZXhjZXB0IHRoYXQgdGhleSBwcmludCBpbiB0aGUgCitjb3JyZXNwb25kaW5nIHdpbmRvdyBnaXZlbiBhcyBhcmd1bWVudC4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJWV1BSSU5UVyIKKz42LjMuMy4gdndwcmludHcoKTwvQQorPjwvSDQKKz48UAorPlRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnZwcmludGYoKTwvVFQKKz4uIFRoaXMgY2FuCitiZSB1c2VkIHdoZW4gdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhcmUgdG8gYmUgcHJpbnRlZC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IlNJTVBMRVBSSU5UV0VYIgorPjYuMy40LiBBIFNpbXBsZSBwcmludHcgZXhhbXBsZTwvQQorPjwvSDQKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQlBSRVgiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMy4gIEEgU2ltcGxlIHByaW50dyBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsJCQkvKiBuY3Vyc2VzLmggaW5jbHVkZXMgc3RkaW8uaCAqLyAgCisjaW5jbHVkZSAmIzYwO3N0cmluZy5oJiM2MjsgCiAgCiBpbnQgbWFpbigpCiB7Ci0gY2hhciBtZXNnW109Ikp1c3QgYSBzdHJpbmciOyAgICAgICAgICAgLyogbWVzc2FnZSB0byBiZSBhcHBlYXJlZCBvbiB0aGUgc2NyZWVuICovCi0gaW50IHJvdyxjb2w7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdG8gc3RvcmUgdGhlIG51bWJlciBvZiByb3dzIGFuZCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG51bWJlciBvZiBjb2x1bXMgb2YgdGhlIHNjcmVlbiAqLwotIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHRoZSBjdXJzZXMgbW9kZSAqLwotIGdldG1heHl4KHN0ZHNjcixyb3csY29sKTsgICAgICAgICAgICAgIC8qIGdldCB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgKi8KKyBjaGFyIG1lc2dbXT0iSnVzdCBhIHN0cmluZyI7CQkvKiBtZXNzYWdlIHRvIGJlIGFwcGVhcmVkIG9uIHRoZSBzY3JlZW4gKi8KKyBpbnQgcm93LGNvbDsJCQkJLyogdG8gc3RvcmUgdGhlIG51bWJlciBvZiByb3dzIGFuZCAqCisJCQkJCSAqIHRoZSBudW1iZXIgb2YgY29sdW1zIG9mIHRoZSBzY3JlZW4gKi8KKyBpbml0c2NyKCk7CQkJCS8qIHN0YXJ0IHRoZSBjdXJzZXMgbW9kZSAqLworIGdldG1heHl4KHN0ZHNjcixyb3csY29sKTsJCS8qIGdldCB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgKi8KICBtdnByaW50dyhyb3cvMiwoY29sLXN0cmxlbihtZXNnKSkvMiwiJXMiLG1lc2cpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByaW50IHRoZSBtZXNzYWdlIGF0IHRoZSBjZW50ZXIgb2YgdGhlIHNjcmVlbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJLyogcHJpbnQgdGhlIG1lc3NhZ2UgYXQgdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuICovCiAgbXZwcmludHcocm93LTIsMCwiVGhpcyBzY3JlZW4gaGFzICVkIHJvd3MgYW5kICVkIGNvbHVtbnNcbiIscm93LGNvbCk7CiAgcHJpbnR3KCJUcnkgcmVzaXppbmcgeW91ciB3aW5kb3coaWYgcG9zc2libGUpIGFuZCB0aGVuIHJ1biB0aGlzIHByb2dyYW0gYWdhaW4iKTsKICByZWZyZXNoKCk7CkBAIC0xMjY4LDE5MiArMjMyNywzMDIgQEAKICBlbmR3aW4oKTsKIAogIHJldHVybiAwOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPkFib3ZlIHByb2dyYW0gZGVtb25zdHJhdGVzIGhvdyBlYXN5IGl0IGlzIHRvIHVzZSA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPnByaW50dzwvdmFyPi4gWW91IGp1c3QgZmVlZCB0aGUgY29vcmRpbmF0ZXMgYW5kIHRoZQotbWVzc2FnZSB0byBiZSBhcHBlYXJlZCBvbiB0aGUgc2NyZWVuLCB0aGVuIGl0IGRvZXMgd2hhdCB5b3UKLXdhbnQuPC9wPgotPHA+VGhlIGFib3ZlIHByb2dyYW0gaW50cm9kdWNlcyB1cyB0byBhIG5ldyBmdW5jdGlvbiA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmdldG1heHl4KCk8L3Zhcj4sIGEgbWFjcm8gZGVmaW5lZCBpbiA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPm5jdXJzZXMuaDwvdmFyPi4gSXQgZ2l2ZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCB0aGUKLW51bWJlciBvZiByb3dzIGluIGEgZ2l2ZW4gd2luZG93LiA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmdldG1heHl4KCk8L3Zhcj4gZG9lcyB0aGlzIGJ5IHVwZGF0aW5nIHRoZSB2YXJpYWJsZXMKLWdpdmVuIHRvIGl0LiBTaW5jZSA8dmFyIGNsYXNzPSJMSVRFUkFMIj5nZXRtYXh5eCgpPC92YXI+IGlzIG5vdCBhCi1mdW5jdGlvbiB3ZSBkb24ndCBwYXNzIHBvaW50ZXJzIHRvIGl0LCB3ZSBqdXN0IGdpdmUgdHdvIGludGVnZXIKLXZhcmlhYmxlcy48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQUREU1RSQ0xBU1MiIGlkPSJBRERTVFJDTEFTUyI+Ni40LgotYWRkc3RyKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9hPjwvaDM+Ci08cD48dmFyIGNsYXNzPSJMSVRFUkFMIj5hZGRzdHIoKTwvdmFyPiBpcyB1c2VkIHRvIHB1dCBhIGNoYXJhY3Rlcgotc3RyaW5nIGludG8gYSBnaXZlbiB3aW5kb3cuIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBjYWxsaW5nCi08dmFyIGNsYXNzPSJMSVRFUkFMIj5hZGRjaCgpPC92YXI+IG9uY2UgZm9yIGVhY2ggY2hhcmFjdGVyIGluIGEKLWdpdmVuIHN0cmluZy4gVGhpcyBpcyB0cnVlIGZvciBhbGwgb3V0cHV0IGZ1bmN0aW9ucy4gVGhlcmUgYXJlCi1vdGhlciBmdW5jdGlvbnMgZnJvbSB0aGlzIGZhbWlseSBzdWNoIGFzIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+bXZhZGRzdHIoKSxtdndhZGRzdHIoKTwvdmFyPiBhbmQgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj53YWRkc3RyKCk8L3Zhcj4sIHdoaWNoIG9iZXkgdGhlIG5hbWluZyBjb252ZW50aW9uIG9mCi1jdXJzZXMuKGUuZy4gbXZhZGRzdHIoKSBpcyBzaW1pbGFyIHRvIHRoZSByZXNwZWN0aXZlIGNhbGxzIG1vdmUoKQotYW5kIHRoZW4gYWRkc3RyKCkuKSBBbm90aGVyIGZ1bmN0aW9uIG9mIHRoaXMgZmFtaWx5IGlzIGFkZG5zdHIoKSwKLXdoaWNoIHRha2VzIGFuIGludGVnZXIgcGFyYW1ldGVyKHNheSBuKSBhZGRpdGlvbmFsbHkuIFRoaXMgZnVuY3Rpb24KLXB1dHMgYXQgbW9zdCBuIGNoYXJhY3RlcnMgaW50byB0aGUgc2NyZWVuLiBJZiBuIGlzIG5lZ2F0aXZlLCB0aGVuCi10aGUgZW50aXJlIHN0cmluZyB3aWxsIGJlIGFkZGVkLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQUNBVVRJT04iIGlkPSJBQ0FVVElPTiI+Ni41LiBBIHdvcmQgb2YKLWNhdXRpb248L2E+PC9oMz4KLTxwPkFsbCB0aGVzZSBmdW5jdGlvbnMgdGFrZSB5IGNvLW9yZGluYXRlIGZpcnN0IGFuZCB0aGVuIHggaW4gdGhlaXIKLWFyZ3VtZW50cy4gQSBjb21tb24gbWlzdGFrZSBieSBiZWdpbm5lcnMgaXMgdG8gcGFzcyB4LHkgaW4gdGhhdAotb3JkZXIuIElmIHlvdSBhcmUgZG9pbmcgdG9vIG1hbnkgbWFuaXB1bGF0aW9ucyBvZiAoeSx4KQotY28tb3JkaW5hdGVzLCB0aGluayBvZiBkaXZpZGluZyB0aGUgc2NyZWVuIGludG8gd2luZG93cyBhbmQKLW1hbmlwdWxhdGUgZWFjaCBvbmUgc2VwYXJhdGVseS4gV2luZG93cyBhcmUgZXhwbGFpbmVkIGluIHRoZQotPGEgaHJlZj0iI1dJTkRPV1MiPndpbmRvd3M8L2E+IHNlY3Rpb24uPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IlNDQU5XIiBpZD0iU0NBTlciPjcuIElucHV0Ci1mdW5jdGlvbnM8L2E+PC9oMj4KLTxwPldlbGwsIHByaW50aW5nIHdpdGhvdXQgdGFraW5nIGlucHV0LCBpcyBib3JpbmcuIExldCdzIHNlZQotZnVuY3Rpb25zIHdoaWNoIGFsbG93IHVzIHRvIGdldCBpbnB1dCBmcm9tIHVzZXIuIFRoZXNlIGZ1bmN0aW9ucwotYWxzbyBjYW4gYmUgZGl2aWRlZCBpbnRvIHRocmVlIGNhdGVnb3JpZXMuPC9wPgotPG9sIHR5cGU9IjEiPgotPGxpPgotPHA+Z2V0Y2goKSBjbGFzczogR2V0IGEgY2hhcmFjdGVyPC9wPgotPC9saT4KLTxsaT4KLTxwPnNjYW53KCkgY2xhc3M6IEdldCBmb3JtYXR0ZWQgaW5wdXQ8L3A+Ci08L2xpPgotPGxpPgotPHA+Z2V0c3RyKCkgY2xhc3M6IEdldCBzdHJpbmdzPC9wPgotPC9saT4KLTwvb2w+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJHRVRDSENMQVNTIiBpZD0iR0VUQ0hDTEFTUyI+Ny4xLiBnZXRjaCgpCi1jbGFzcyBvZiBmdW5jdGlvbnM8L2E+PC9oMz4KLTxwPlRoZXNlIGZ1bmN0aW9ucyByZWFkIGEgc2luZ2xlIGNoYXJhY3RlciBmcm9tIHRoZSB0ZXJtaW5hbC4gQnV0Ci10aGVyZSBhcmUgc2V2ZXJhbCBzdWJ0bGUgZmFjdHMgdG8gY29uc2lkZXIuIEZvciBleGFtcGxlIGlmIHlvdQotZG9uJ3QgdXNlIHRoZSBmdW5jdGlvbiBjYnJlYWsoKSwgY3Vyc2VzIHdpbGwgbm90IHJlYWQgeW91ciBpbnB1dAotY2hhcmFjdGVycyBjb250aWd1b3VzbHkgYnV0IHdpbGwgYmVnaW4gcmVhZCB0aGVtIG9ubHkgYWZ0ZXIgYSBuZXcKLWxpbmUgb3IgYW4gRU9GIGlzIGVuY291bnRlcmVkLiBJbiBvcmRlciB0byBhdm9pZCB0aGlzLCB0aGUgY2JyZWFrKCkKLWZ1bmN0aW9uIG11c3QgdXNlZCBzbyB0aGF0IGNoYXJhY3RlcnMgYXJlIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSB0bwoteW91ciBwcm9ncmFtLiBBbm90aGVyIHdpZGVseSB1c2VkIGZ1bmN0aW9uIGlzIG5vZWNobygpLiBBcyB0aGUgbmFtZQotc3VnZ2VzdHMsIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBzZXQgKHVzZWQpLCB0aGUgY2hhcmFjdGVycyB0aGF0IGFyZQota2V5ZWQgaW4gYnkgdGhlIHVzZXIgd2lsbCBub3Qgc2hvdyB1cCBvbiB0aGUgc2NyZWVuLiBUaGUgdHdvCi1mdW5jdGlvbnMgY2JyZWFrKCkgYW5kIG5vZWNobygpIGFyZSB0eXBpY2FsIGV4YW1wbGVzIG9mIGtleQotbWFuYWdlbWVudC4gRnVuY3Rpb25zIG9mIHRoaXMgZ2VucmUgYXJlIGV4cGxhaW5lZCBpbiB0aGUgPGEgaHJlZj0KLSIjS0VZUyI+a2V5IG1hbmFnZW1lbnQgc2VjdGlvbjwvYT4gLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iU0NBTldDTEFTUyIgaWQ9IlNDQU5XQ0xBU1MiPjcuMi4gc2NhbncoKQotY2xhc3Mgb2YgZnVuY3Rpb25zPC9hPjwvaDM+Ci08cD5UaGVzZSBmdW5jdGlvbnMgYXJlIHNpbWlsYXIgdG8gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5zY2FuZigpPC92YXI+IHdpdGggdGhlIGFkZGVkIGNhcGFiaWxpdHkgb2YgZ2V0dGluZyB0aGUKLWlucHV0IGZyb20gYW55IGxvY2F0aW9uIG9uIHRoZSBzY3JlZW4uPC9wPgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iU0NBTldNVlNDQU5XIiBpZD0iU0NBTldNVlNDQU5XIj43LjIuMS4KLXNjYW53KCkgYW5kIG12c2Nhbnc8L2E+PC9oND4KLTxwPlRoZSB1c2FnZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgc2ltaWxhciB0byB0aGF0IG9mIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+c3NjYW5mKCk8L3Zhcj4sIHdoZXJlIHRoZSBsaW5lIHRvIGJlIHNjYW5uZWQgaXMgcHJvdmlkZWQKLWJ5IDx2YXIgY2xhc3M9IkxJVEVSQUwiPndnZXRzdHIoKTwvdmFyPiBmdW5jdGlvbi4gVGhhdCBpcywgdGhlc2UKLWZ1bmN0aW9ucyBjYWxsIHRvIDx2YXIgY2xhc3M9IkxJVEVSQUwiPndnZXRzdHIoKTwvdmFyPgotZnVuY3Rpb24oZXhwbGFpbmVkIGJlbG93KSBhbmQgdXNlcyB0aGUgcmVzdWx0aW5nIGxpbmUgZm9yIGEKLXNjYW4uPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJXU0NBTldNVldTQ0FOVyIgaWQ9Ci0iV1NDQU5XTVZXU0NBTlciPjcuMi4yLiB3c2NhbncoKSBhbmQgbXZ3c2NhbncoKTwvYT48L2g0PgotPHA+VGhlc2UgYXJlIHNpbWlsYXIgdG8gYWJvdmUgdHdvIGZ1bmN0aW9ucyBleGNlcHQgdGhhdCB0aGV5IHJlYWQKLWZyb20gYSB3aW5kb3csIHdoaWNoIGlzIHN1cHBsaWVkIGFzIG9uZSBvZiB0aGUgYXJndW1lbnRzIHRvIHRoZXNlCi1mdW5jdGlvbnMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJWV1NDQU5XIiBpZD0iVldTQ0FOVyI+Ny4yLjMuCi12d3NjYW53KCk8L2E+PC9oND4KLTxwPlRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byA8dmFyIGNsYXNzPSJMSVRFUkFMIj52c2NhbmYoKTwvdmFyPi4KLVRoaXMgY2FuIGJlIHVzZWQgd2hlbiBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgYXJlIHRvIGJlCi1zY2FubmVkLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJHRVRTVFJDTEFTUyIgaWQ9IkdFVFNUUkNMQVNTIj43LjMuCi1nZXRzdHIoKSBjbGFzcyBvZiBmdW5jdGlvbnM8L2E+PC9oMz4KLTxwPlRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBnZXQgc3RyaW5ncyBmcm9tIHRoZSB0ZXJtaW5hbC4gSW4KLWVzc2VuY2UsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIHNhbWUgdGFzayBhcyB3b3VsZCBiZSBhY2hpZXZlZAotYnkgYSBzZXJpZXMgb2YgY2FsbHMgdG8gPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0Y2goKTwvdmFyPiB1bnRpbCBhCi1uZXdsaW5lLCBjYXJyaWFnZSByZXR1cm4sIG9yIGVuZC1vZi1maWxlIGlzIHJlY2VpdmVkLiBUaGUgcmVzdWx0aW5nCi1zdHJpbmcgb2YgY2hhcmFjdGVycyBhcmUgcG9pbnRlZCB0byBieSA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPnN0cjwvdmFyPiwgd2hpY2ggaXMgYSBjaGFyYWN0ZXIgcG9pbnRlciBwcm92aWRlZCBieSB0aGUKLXVzZXIuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJHRVRTVFJFWCIgaWQ9IkdFVFNUUkVYIj43LjQuIFNvbWUKLWV4YW1wbGVzPC9hPjwvaDM+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCU0NFWCIgaWQ9IkJTQ0VYIj48L2E+Ci08cD48Yj5FeGFtcGxlIDQuIEEgU2ltcGxlIHNjYW53IGV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OyAgICAgICAgICAgICAgICAgICAvKiBuY3Vyc2VzLmggaW5jbHVkZXMgc3RkaW8uaCAqLyAgCi0jaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7IAorfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPkFib3ZlIHByb2dyYW0gZGVtb25zdHJhdGVzIGhvdyBlYXN5IGl0IGlzIHRvIHVzZSA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnByaW50dzwvVFQKKz4uIFlvdSBqdXN0IGZlZWQgdGhlIGNvb3JkaW5hdGVzIGFuZCB0aGUgbWVzc2FnZSB0byBiZSBhcHBlYXJlZAorb24gdGhlIHNjcmVlbiwgdGhlbiBpdCBkb2VzIHdoYXQgeW91IHdhbnQuPC9QCis+PFAKKz5UaGUgYWJvdmUgcHJvZ3JhbSBpbnRyb2R1Y2VzIHVzIHRvIGEgbmV3IGZ1bmN0aW9uCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldG1heHl4KCk8L1RUCis+LCBhIG1hY3JvIGRlZmluZWQgaW4KKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bmN1cnNlcy5oPC9UVAorPi4gSXQgZ2l2ZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZAordGhlIG51bWJlciBvZiByb3dzIGluIGEgZ2l2ZW4gd2luZG93LgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5nZXRtYXh5eCgpPC9UVAorPiBkb2VzIHRoaXMgYnkgdXBkYXRpbmcgdGhlIHZhcmlhYmxlcworZ2l2ZW4gdG8gaXQuIFNpbmNlIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Z2V0bWF4eXgoKTwvVFQKKz4gaXMgbm90IGEgZnVuY3Rpb24KK3dlIGRvbid0IHBhc3MgcG9pbnRlcnMgdG8gaXQsIHdlIGp1c3QgZ2l2ZSB0d28gaW50ZWdlciB2YXJpYWJsZXMuIDwvUAorPjwvRElWCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJBRERTVFJDTEFTUyIKKz42LjQuIGFkZHN0cigpIGNsYXNzIG9mIGZ1bmN0aW9uczwvQQorPjwvSDMKKz48UAorPjxUVAorQ0xBU1M9IkxJVEVSQUwiCis+YWRkc3RyKCk8L1RUCis+IGlzIHVzZWQgdG8gcHV0IGEgY2hhcmFjdGVyIHN0cmluZyBpbnRvCithIGdpdmVuIHdpbmRvdy4gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGNhbGxpbmcKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+YWRkY2goKTwvVFQKKz4gb25jZSBmb3IgZWFjaCBjaGFyYWN0ZXIgaW4gYSBnaXZlbgorc3RyaW5nLiBUaGlzIGlzIHRydWUgZm9yIGFsbCBvdXRwdXQgZnVuY3Rpb25zLiBUaGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGZyb20KK3RoaXMgZmFtaWx5IHN1Y2ggYXMgPFRUCitDTEFTUz0iTElURVJBTCIKKz5tdmFkZHN0cigpLG12d2FkZHN0cigpPC9UVAorPiBhbmQKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+d2FkZHN0cigpPC9UVAorPiwgd2hpY2ggb2JleSB0aGUgbmFtaW5nIGNvbnZlbnRpb24gb2YKK2N1cnNlcy4oZS5nLiBtdmFkZHN0cigpIGlzIHNpbWlsYXIgdG8gdGhlIHJlc3BlY3RpdmUgY2FsbHMgbW92ZSgpIGFuZCB0aGVuCithZGRzdHIoKS4pIEFub3RoZXIgZnVuY3Rpb24gb2YgdGhpcyBmYW1pbHkgaXMgYWRkbnN0cigpLCB3aGljaCB0YWtlcyBhbiBpbnRlZ2VyCitwYXJhbWV0ZXIoc2F5IG4pIGFkZGl0aW9uYWxseS4gVGhpcyBmdW5jdGlvbiBwdXRzIGF0IG1vc3QgbiBjaGFyYWN0ZXJzIGludG8gdGhlCitzY3JlZW4uIElmIG4gaXMgbmVnYXRpdmUsIHRoZW4gdGhlIGVudGlyZSBzdHJpbmcgd2lsbCBiZSBhZGRlZC4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJBQ0FVVElPTiIKKz42LjUuIEEgd29yZCBvZiBjYXV0aW9uPC9BCis+PC9IMworPjxQCis+QWxsIHRoZXNlIGZ1bmN0aW9ucyB0YWtlIHkgY28tb3JkaW5hdGUgZmlyc3QgYW5kIHRoZW4geCBpbiB0aGVpciBhcmd1bWVudHMuCitBIGNvbW1vbiBtaXN0YWtlIGJ5IGJlZ2lubmVycyBpcyB0byBwYXNzIHgseSBpbiB0aGF0IG9yZGVyLiBJZiB5b3UgYXJlCitkb2luZyB0b28gbWFueSBtYW5pcHVsYXRpb25zIG9mICh5LHgpIGNvLW9yZGluYXRlcywgdGhpbmsgb2YgZGl2aWRpbmcgdGhlCitzY3JlZW4gaW50byB3aW5kb3dzIGFuZCBtYW5pcHVsYXRlIGVhY2ggb25lIHNlcGFyYXRlbHkuIFdpbmRvd3MgYXJlIGV4cGxhaW5lZAoraW4gdGhlIDxBCitIUkVGPSIjV0lORE9XUyIKKz4gd2luZG93cyA8L0EKKz4gc2VjdGlvbi48L1AKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iU0NBTlciCis+Ny4gSW5wdXQgZnVuY3Rpb25zPC9BCis+PC9IMgorPjxQCis+V2VsbCwgcHJpbnRpbmcgd2l0aG91dCB0YWtpbmcgaW5wdXQsIGlzIGJvcmluZy4gTGV0J3Mgc2VlIGZ1bmN0aW9ucyB3aGljaAorYWxsb3cgdXMgdG8gZ2V0IGlucHV0IGZyb20gdXNlci4gVGhlc2UgZnVuY3Rpb25zIGFsc28gY2FuIGJlIGRpdmlkZWQgaW50bwordGhyZWUgY2F0ZWdvcmllcy48L1AKKz48UAorPjwvUAorPjxPTAorVFlQRT0iMSIKKz48TEkKKz48UAorPmdldGNoKCkgY2xhc3M6IEdldCBhIGNoYXJhY3RlcjwvUAorPjwvTEkKKz48TEkKKz48UAorPnNjYW53KCkgY2xhc3M6IEdldCBmb3JtYXR0ZWQgaW5wdXQ8L1AKKz48L0xJCis+PExJCis+PFAKKz5nZXRzdHIoKSBjbGFzczogR2V0IHN0cmluZ3M8L1AKKz48L0xJCis+PC9PTAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkdFVENIQ0xBU1MiCis+Ny4xLiBnZXRjaCgpIGNsYXNzIG9mIGZ1bmN0aW9uczwvQQorPjwvSDMKKz48UAorPlRoZXNlIGZ1bmN0aW9ucyByZWFkIGEgc2luZ2xlIGNoYXJhY3RlciBmcm9tIHRoZSB0ZXJtaW5hbC4gQnV0IHRoZXJlIGFyZSBzZXZlcmFsCitzdWJ0bGUgZmFjdHMgdG8gY29uc2lkZXIuIEZvciBleGFtcGxlIGlmIHlvdSBkb24ndCB1c2UgdGhlIGZ1bmN0aW9uIGNicmVhaygpLAorY3Vyc2VzIHdpbGwgbm90IHJlYWQgeW91ciBpbnB1dCBjaGFyYWN0ZXJzIGNvbnRpZ3VvdXNseSBidXQgd2lsbCBiZWdpbiByZWFkIHRoZW0KK29ubHkgYWZ0ZXIgYSBuZXcgbGluZSBvciBhbiBFT0YgaXMgZW5jb3VudGVyZWQuIEluIG9yZGVyIHRvIGF2b2lkIHRoaXMsIHRoZQorY2JyZWFrKCkgZnVuY3Rpb24gbXVzdCB1c2VkIHNvIHRoYXQgY2hhcmFjdGVycyBhcmUgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHRvIHlvdXIKK3Byb2dyYW0uIEFub3RoZXIgd2lkZWx5IHVzZWQgZnVuY3Rpb24gaXMgbm9lY2hvKCkuIEFzIHRoZSBuYW1lIHN1Z2dlc3RzLCB3aGVuCit0aGlzIGZ1bmN0aW9uIGlzIHNldCAodXNlZCksIHRoZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGtleWVkIGluIGJ5IHRoZSB1c2VyIHdpbGwKK25vdCBzaG93IHVwIG9uIHRoZSBzY3JlZW4uIFRoZSB0d28gZnVuY3Rpb25zIGNicmVhaygpIGFuZCBub2VjaG8oKSBhcmUgdHlwaWNhbAorZXhhbXBsZXMgb2Yga2V5IG1hbmFnZW1lbnQuICBGdW5jdGlvbnMgb2YgdGhpcyBnZW5yZSBhcmUgZXhwbGFpbmVkIGluIHRoZQorPEEKK0hSRUY9IiNLRVlTIgorPmtleSBtYW5hZ2VtZW50IHNlY3Rpb24gPC9BCis+LjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iU0NBTldDTEFTUyIKKz43LjIuIHNjYW53KCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+VGhlc2UgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+c2NhbmYoKTwvVFQKKz4gd2l0aCB0aGUKK2FkZGVkIGNhcGFiaWxpdHkgb2YgZ2V0dGluZyB0aGUgaW5wdXQgZnJvbSBhbnkgbG9jYXRpb24gb24gdGhlIHNjcmVlbi48L1AKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJTQ0FOV01WU0NBTlciCis+Ny4yLjEuIHNjYW53KCkgYW5kIG12c2Nhbnc8L0EKKz48L0g0Cis+PFAKKz5UaGUgdXNhZ2Ugb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHNpbWlsYXIgdG8gdGhhdCBvZgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5zc2NhbmYoKTwvVFQKKz4sIHdoZXJlIHRoZSBsaW5lIHRvIGJlIHNjYW5uZWQgaXMKK3Byb3ZpZGVkIGJ5IDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+d2dldHN0cigpPC9UVAorPiBmdW5jdGlvbi4gVGhhdCBpcywgdGhlc2UKK2Z1bmN0aW9ucyBjYWxsIHRvIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+d2dldHN0cigpPC9UVAorPiBmdW5jdGlvbihleHBsYWluZWQKK2JlbG93KSBhbmQgdXNlcyB0aGUgcmVzdWx0aW5nIGxpbmUgZm9yIGEgc2Nhbi4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJXU0NBTldNVldTQ0FOVyIKKz43LjIuMi4gd3NjYW53KCkgYW5kIG12d3NjYW53KCk8L0EKKz48L0g0Cis+PFAKKz5UaGVzZSBhcmUgc2ltaWxhciB0byBhYm92ZSB0d28gZnVuY3Rpb25zIGV4Y2VwdCB0aGF0IHRoZXkgcmVhZCBmcm9tIGEgd2luZG93LAord2hpY2ggaXMgc3VwcGxpZWQgYXMgb25lIG9mIHRoZSBhcmd1bWVudHMgdG8gdGhlc2UgZnVuY3Rpb25zLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IlZXU0NBTlciCis+Ny4yLjMuIHZ3c2NhbncoKTwvQQorPjwvSDQKKz48UAorPlRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnZzY2FuZigpPC9UVAorPi4gVGhpcyBjYW4KK2JlIHVzZWQgd2hlbiBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgYXJlIHRvIGJlIHNjYW5uZWQuPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkdFVFNUUkNMQVNTIgorPjcuMy4gZ2V0c3RyKCkgY2xhc3Mgb2YgZnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGdldCBzdHJpbmdzIGZyb20gdGhlIHRlcm1pbmFsLiBJbiBlc3NlbmNlLCB0aGlzCitmdW5jdGlvbiBwZXJmb3JtcyB0aGUgc2FtZSB0YXNrIGFzIHdvdWxkIGJlIGFjaGlldmVkIGJ5IGEgc2VyaWVzIG9mIGNhbGxzIHRvCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldGNoKCk8L1RUCis+IHVudGlsIGEgbmV3bGluZSwgY2FycmlhZ2UgcmV0dXJuLCBvcgorZW5kLW9mLWZpbGUgaXMgcmVjZWl2ZWQuIFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYXJlIHBvaW50ZWQgdG8gYnkKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+c3RyPC9UVAorPiwgd2hpY2ggaXMgYSBjaGFyYWN0ZXIgcG9pbnRlciBwcm92aWRlZCBieQordGhlIHVzZXIuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJHRVRTVFJFWCIKKz43LjQuIFNvbWUgZXhhbXBsZXM8L0EKKz48L0gzCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkJTQ0VYIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDQuICBBIFNpbXBsZSBzY2FudyBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsJCQkvKiBuY3Vyc2VzLmggaW5jbHVkZXMgc3RkaW8uaCAqLyAgCisjaW5jbHVkZSAmIzYwO3N0cmluZy5oJiM2MjsgCiAgCiBpbnQgbWFpbigpCiB7Ci0gY2hhciBtZXNnW109IkVudGVyIGEgc3RyaW5nOiAiOyAgICAgICAgICAgICAgICAvKiBtZXNzYWdlIHRvIGJlIGFwcGVhcmVkIG9uIHRoZSBzY3JlZW4gKi8KKyBjaGFyIG1lc2dbXT0iRW50ZXIgYSBzdHJpbmc6ICI7CQkvKiBtZXNzYWdlIHRvIGJlIGFwcGVhcmVkIG9uIHRoZSBzY3JlZW4gKi8KICBjaGFyIHN0cls4MF07Ci0gaW50IHJvdyxjb2w7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdG8gc3RvcmUgdGhlIG51bWJlciBvZiByb3dzIGFuZCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG51bWJlciBvZiBjb2x1bXMgb2YgdGhlIHNjcmVlbiAqLwotIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHRoZSBjdXJzZXMgbW9kZSAqLwotIGdldG1heHl4KHN0ZHNjcixyb3csY29sKTsgICAgICAgICAgICAgIC8qIGdldCB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgKi8KKyBpbnQgcm93LGNvbDsJCQkJLyogdG8gc3RvcmUgdGhlIG51bWJlciBvZiByb3dzIGFuZCAqCisJCQkJCSAqIHRoZSBudW1iZXIgb2YgY29sdW1zIG9mIHRoZSBzY3JlZW4gKi8KKyBpbml0c2NyKCk7CQkJCS8qIHN0YXJ0IHRoZSBjdXJzZXMgbW9kZSAqLworIGdldG1heHl4KHN0ZHNjcixyb3csY29sKTsJCS8qIGdldCB0aGUgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgKi8KICBtdnByaW50dyhyb3cvMiwoY29sLXN0cmxlbihtZXNnKSkvMiwiJXMiLG1lc2cpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmludCB0aGUgbWVzc2FnZSBhdCB0aGUgY2VudGVyIG9mIHRoZSBzY3JlZW4gKi8KKyAgICAgICAgICAgICAgICAgICAgIAkJLyogcHJpbnQgdGhlIG1lc3NhZ2UgYXQgdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuICovCiAgZ2V0c3RyKHN0cik7CiAgbXZwcmludHcoTElORVMgLSAyLCAwLCAiWW91IEVudGVyZWQ6ICVzIiwgc3RyKTsKICBnZXRjaCgpOwogIGVuZHdpbigpOwogCiAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IkFUVFJJQiIgaWQ9IkFUVFJJQiI+OC4KLUF0dHJpYnV0ZXM8L2E+PC9oMj4KLTxwPldlIGhhdmUgc2VlbiBhbiBleGFtcGxlIG9mIGhvdyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIHRvIHByaW50Ci1jaGFyYWN0ZXJzIHdpdGggc29tZSBzcGVjaWFsIGVmZmVjdHMuIEF0dHJpYnV0ZXMsIHdoZW4gc2V0Ci1wcnVkZW50bHksIGNhbiBwcmVzZW50IGluZm9ybWF0aW9uIGluIGFuIGVhc3ksIHVuZGVyc3RhbmRhYmxlCi1tYW5uZXIuIFRoZSBmb2xsb3dpbmcgcHJvZ3JhbSB0YWtlcyBhIEMgZmlsZSBhcyBpbnB1dCBhbmQgcHJpbnRzCi10aGUgZmlsZSB3aXRoIGNvbW1lbnRzIGluIGJvbGQuIFNjYW4gdGhyb3VnaCB0aGUgY29kZS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCU0lBVCIgaWQ9IkJTSUFUIj48L2E+Ci08cD48Yj5FeGFtcGxlIDUuIEEgU2ltcGxlIEF0dHJpYnV0ZXMgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPi8qIHBhZ2VyIGZ1bmN0aW9uYWxpdHkgYnkgSm9zZXBoIFNwYWluaG91ciIgJmx0O3NwYWluaG91QGJlbGxzb3V0aC5uZXQmZ3Q7ICovCi0jaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OwotI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iQVRUUklCIgorPjguIEF0dHJpYnV0ZXM8L0EKKz48L0gyCis+PFAKKz5XZSBoYXZlIHNlZW4gYW4gZXhhbXBsZSBvZiBob3cgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCB0byBwcmludCBjaGFyYWN0ZXJzIHdpdGgKK3NvbWUgc3BlY2lhbCBlZmZlY3RzLiBBdHRyaWJ1dGVzLCB3aGVuIHNldCBwcnVkZW50bHksIGNhbiBwcmVzZW50IGluZm9ybWF0aW9uIGluCithbiBlYXN5LCB1bmRlcnN0YW5kYWJsZSBtYW5uZXIuIFRoZSBmb2xsb3dpbmcgcHJvZ3JhbSB0YWtlcyBhIEMgZmlsZSBhcyBpbnB1dAorYW5kIHByaW50cyB0aGUgZmlsZSB3aXRoIGNvbW1lbnRzIGluIGJvbGQuIFNjYW4gdGhyb3VnaCB0aGUgY29kZS4gPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkJTSUFUIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDUuICBBIFNpbXBsZSBBdHRyaWJ1dGVzIGV4YW1wbGUgPC9CCis+PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iSU5MSU5FTUVESUFPQkpFQ1QiCis+LyogcGFnZXIgZnVuY3Rpb25hbGl0eSBieSBKb3NlcGggU3BhaW5ob3VyIiAmIzYwO3NwYWluaG91QGJlbGxzb3V0aC5uZXQmIzYyOyAqLworI2luY2x1ZGUgJiM2MDtuY3Vyc2VzLmgmIzYyOworI2luY2x1ZGUgJiM2MDtzdGRsaWIuaCYjNjI7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7IApAQCAtMTQ2NCw3ICsyNjMzLDcgQEAKIAogICBpZihhcmdjICE9IDIpCiAgIHsKLSAgICBwcmludGYoIlVzYWdlOiAlcyAmbHQ7YSBjIGZpbGUgbmFtZSZndDtcbiIsIGFyZ3ZbMF0pOworICAgIHByaW50ZigiVXNhZ2U6ICVzICYjNjA7YSBjIGZpbGUgbmFtZSYjNjI7XG4iLCBhcmd2WzBdKTsKICAgICBleGl0KDEpOwogICB9CiAgIGZwID0gZm9wZW4oYXJndlsxXSwgInIiKTsKQEAgLTE0NzMsNzcgKzI2NDIsMTAxIEBACiAgICAgcGVycm9yKCJDYW5ub3Qgb3BlbiBpbnB1dCBmaWxlIik7CiAgICAgZXhpdCgxKTsKICAgfQotICBpbml0c2NyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0YXJ0IGN1cnNlcyBtb2RlICovCi0gIGdldG1heHl4KHN0ZHNjciwgcm93LCBjb2wpOyAgICAgICAgICAgLyogZmluZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgc2NyZWVlbiAqLwotICB3aGlsZSgoY2ggPSBmZ2V0YyhmcCkpICE9IEVPRikgICAgICAgIC8qIHJlYWQgdGhlIGZpbGUgdGlsbCB3ZSByZWFjaCB0aGUgZW5kICovCisgIGluaXRzY3IoKTsJCQkJLyogU3RhcnQgY3Vyc2VzIG1vZGUgKi8KKyAgZ2V0bWF4eXgoc3Rkc2NyLCByb3csIGNvbCk7CQkvKiBmaW5kIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBzY3JlZWVuICovCisgIHdoaWxlKChjaCA9IGZnZXRjKGZwKSkgIT0gRU9GKQkvKiByZWFkIHRoZSBmaWxlIHRpbGwgd2UgcmVhY2ggdGhlIGVuZCAqLwogICB7Ci0gICAgZ2V0eXgoc3Rkc2NyLCB5LCB4KTsgICAgICAgICAgICAgICAgLyogZ2V0IHRoZSBjdXJyZW50IGN1cnNlciBwb3NpdGlvbiAqLwotICAgIGlmKHkgPT0gKHJvdyAtIDEpKSAgICAgICAgICAgICAgICAgIC8qIGFyZSB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgc2NyZWVuICovCisgICAgZ2V0eXgoc3Rkc2NyLCB5LCB4KTsJCS8qIGdldCB0aGUgY3VycmVudCBjdXJzZXIgcG9zaXRpb24gKi8KKyAgICBpZih5ID09IChyb3cgLSAxKSkJCQkvKiBhcmUgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHNjcmVlbiAqLwogICAgIHsKLSAgICAgIHByaW50dygiJmx0Oy1QcmVzcyBBbnkgS2V5LSZndDsiKTsgICAgICAvKiB0ZWxsIHRoZSB1c2VyIHRvIHByZXNzIGEga2V5ICovCisgICAgICBwcmludHcoIiYjNjA7LVByZXNzIEFueSBLZXktJiM2MjsiKTsJLyogdGVsbCB0aGUgdXNlciB0byBwcmVzcyBhIGtleSAqLwogICAgICAgZ2V0Y2goKTsKLSAgICAgIGNsZWFyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciB0aGUgc2NyZWVuICovCi0gICAgICBtb3ZlKDAsIDApOyAgICAgICAgICAgICAgICAgICAgICAgLyogc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2NyZWVuICovCisgICAgICBjbGVhcigpOwkJCQkvKiBjbGVhciB0aGUgc2NyZWVuICovCisgICAgICBtb3ZlKDAsIDApOwkJCS8qIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNjcmVlbiAqLwogICAgIH0KLSAgICBpZihwcmV2ID09ICcvJyAmYW1wOyZhbXA7IGNoID09ICcqJykgICAgICAgIC8qIElmIGl0IGlzIC8gYW5kICogdGhlbiBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3dpdGNoIGJvbGQgb24gKi8gICAgCisgICAgaWYocHJldiA9PSAnLycgJiMzODsmIzM4OyBjaCA9PSAnKicpICAgIAkvKiBJZiBpdCBpcyAvIGFuZCAqIHRoZW4gb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgKiBzd2l0Y2ggYm9sZCBvbiAqLyAgICAKICAgICB7Ci0gICAgICBhdHRyb24oQV9CT0xEKTsgICAgICAgICAgICAgICAgICAgLyogY3V0IGJvbGQgb24gKi8KLSAgICAgIGdldHl4KHN0ZHNjciwgeSwgeCk7ICAgICAgICAgICAgICAvKiBnZXQgdGhlIGN1cnJlbnQgY3Vyc2VyIHBvc2l0aW9uICovCi0gICAgICBtb3ZlKHksIHggLSAxKTsgICAgICAgICAgICAgICAgICAgLyogYmFjayB1cCBvbmUgc3BhY2UgKi8KLSAgICAgIHByaW50dygiJWMlYyIsICcvJywgY2gpOyAgICAgICAgICAvKiBUaGUgYWN0dWFsIHByaW50aW5nIGlzIGRvbmUgaGVyZSAqLworICAgICAgYXR0cm9uKEFfQk9MRCk7CQkJLyogY3V0IGJvbGQgb24gKi8KKyAgICAgIGdldHl4KHN0ZHNjciwgeSwgeCk7CQkvKiBnZXQgdGhlIGN1cnJlbnQgY3Vyc2VyIHBvc2l0aW9uICovCisgICAgICBtb3ZlKHksIHggLSAxKTsJCQkvKiBiYWNrIHVwIG9uZSBzcGFjZSAqLworICAgICAgcHJpbnR3KCIlYyVjIiwgJy8nLCBjaCk7IAkJLyogVGhlIGFjdHVhbCBwcmludGluZyBpcyBkb25lIGhlcmUgKi8KICAgICB9CiAgICAgZWxzZQogICAgICAgcHJpbnR3KCIlYyIsIGNoKTsKICAgICByZWZyZXNoKCk7Ci0gICAgaWYocHJldiA9PSAnKicgJmFtcDsmYW1wOyBjaCA9PSAnLycpCi0gICAgICBhdHRyb2ZmKEFfQk9MRCk7ICAgICAgICAgICAgICAgICAgLyogU3dpdGNoIGl0IG9mZiBvbmNlIHdlIGdvdCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRoZW4gLyAqLworICAgIGlmKHByZXYgPT0gJyonICYjMzg7JiMzODsgY2ggPT0gJy8nKQorICAgICAgYXR0cm9mZihBX0JPTEQpOyAgICAgICAgCQkvKiBTd2l0Y2ggaXQgb2ZmIG9uY2Ugd2UgZ290ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgKiBhbmQgdGhlbiAvICovCiAgICAgcHJldiA9IGNoOwogICB9Ci0gIGVuZHdpbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kIGN1cnNlcyBtb2RlICovCisgIGVuZHdpbigpOyAgICAgICAgICAgICAgICAgICAgICAgCS8qIEVuZCBjdXJzZXMgbW9kZSAqLwogICBmY2xvc2UoZnApOwogICByZXR1cm4gMDsKLX08L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08cD5Eb24ndCB3b3JyeSBhYm91dCBhbGwgdGhvc2UgaW5pdGlhbGl6YXRpb24gYW5kIG90aGVyIGNyYXAuCi1Db25jZW50cmF0ZSBvbiB0aGUgd2hpbGUgbG9vcC4gSXQgcmVhZHMgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGZpbGUKLWFuZCBzZWFyY2hlcyBmb3IgdGhlIHBhdHRlcm4gLyouIE9uY2UgaXQgc3BvdHMgdGhlIHBhdHRlcm4sIGl0Ci1zd2l0Y2hlcyB0aGUgQk9MRCBhdHRyaWJ1dGUgb24gd2l0aCA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmF0dHJvbigpPC92YXI+IC4gV2hlbiB3ZSBnZXQgdGhlIHBhdHRlcm4gKi8gaXQgaXMKLXN3aXRjaGVkIG9mZiBieSA8dmFyIGNsYXNzPSJMSVRFUkFMIj5hdHRyb2ZmKCk8L3Zhcj4gLjwvcD4KLTxwPlRoZSBhYm92ZSBwcm9ncmFtIGFsc28gaW50cm9kdWNlcyB1cyB0byB0d28gdXNlZnVsIGZ1bmN0aW9ucwotPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0eXgoKTwvdmFyPiBhbmQgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5tb3ZlKCk8L3Zhcj4uIFRoZSBmaXJzdCBmdW5jdGlvbiBnZXRzIHRoZSBjby1vcmRpbmF0ZXMgb2YKLXRoZSBwcmVzZW50IGN1cnNvciBpbnRvIHRoZSB2YXJpYWJsZXMgeSwgeC4gU2luY2UgZ2V0eXgoKSBpcyBhCit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+IAorRG9uJ3Qgd29ycnkgYWJvdXQgYWxsIHRob3NlIGluaXRpYWxpemF0aW9uIGFuZCBvdGhlciBjcmFwLiBDb25jZW50cmF0ZSBvbiAKK3RoZSB3aGlsZSBsb29wLiBJdCByZWFkcyBlYWNoIGNoYXJhY3RlciBpbiB0aGUgZmlsZSBhbmQgc2VhcmNoZXMgZm9yIHRoZSAKK3BhdHRlcm4gLyouIE9uY2UgaXQgc3BvdHMgdGhlIHBhdHRlcm4sIGl0IHN3aXRjaGVzIHRoZSBCT0xEIGF0dHJpYnV0ZSBvbiB3aXRoIAorPFRUCitDTEFTUz0iTElURVJBTCIKKz4gYXR0cm9uKCk8L1RUCis+IC4gV2hlbiB3ZSBnZXQgdGhlIHBhdHRlcm4gKi8gaXQgaXMgCitzd2l0Y2hlZCBvZmYgYnkgPFRUCitDTEFTUz0iTElURVJBTCIKKz4gYXR0cm9mZigpPC9UVAorPiAuPC9QCis+PFAKKz4gCitUaGUgYWJvdmUgcHJvZ3JhbSBhbHNvIGludHJvZHVjZXMgdXMgdG8gdHdvIHVzZWZ1bCBmdW5jdGlvbnMKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Z2V0eXgoKSA8L1RUCis+IGFuZAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5tb3ZlKCk8L1RUCis+LiBUaGUgZmlyc3QgZnVuY3Rpb24gZ2V0cyB0aGUKK2NvLW9yZGluYXRlcyBvZiB0aGUgcHJlc2VudCBjdXJzb3IgaW50byB0aGUgdmFyaWFibGVzIHksIHguIFNpbmNlIGdldHl4KCkgaXMgYQogbWFjcm8gd2UgZG9uJ3QgaGF2ZSB0byBwYXNzIHBvaW50ZXJzIHRvIHZhcmlhYmxlcy4gVGhlIGZ1bmN0aW9uCi08dmFyIGNsYXNzPSJMSVRFUkFMIj5tb3ZlKCk8L3Zhcj4gbW92ZXMgdGhlIGN1cnNvciB0byB0aGUKLWNvLW9yZGluYXRlcyBnaXZlbiB0byBpdC48L3A+Ci08cD5UaGUgYWJvdmUgcHJvZ3JhbSBpcyByZWFsbHkgYSBzaW1wbGUgb25lIHdoaWNoIGRvZXNuJ3QgZG8gbXVjaC4KLU9uIHRoZXNlIGxpbmVzIG9uZSBjb3VsZCB3cml0ZSBhIG1vcmUgdXNlZnVsIHByb2dyYW0gd2hpY2ggcmVhZHMgYQotQyBmaWxlLCBwYXJzZXMgaXQgYW5kIHByaW50cyBpdCBpbiBkaWZmZXJlbnQgY29sb3JzLiBPbmUgY291bGQgZXZlbgotZXh0ZW5kIGl0IHRvIG90aGVyIGxhbmd1YWdlcyBhcyB3ZWxsLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkFUVFJJQkRFVEFJTFMiIGlkPSJBVFRSSUJERVRBSUxTIj44LjEuCi1UaGUgZGV0YWlsczwvYT48L2gzPgotPHA+TGV0J3MgZ2V0IGludG8gbW9yZSBkZXRhaWxzIG9mIGF0dHJpYnV0ZXMuIFRoZSBmdW5jdGlvbnMKLTx2YXIgY2xhc3M9IkxJVEVSQUwiPmF0dHJvbigpLCBhdHRyb2ZmKCksIGF0dHJzZXQoKTwvdmFyPiAsIGFuZAotdGhlaXIgc2lzdGVyIGZ1bmN0aW9ucyA8dmFyIGNsYXNzPSJMSVRFUkFMIj5hdHRyX2dldCgpPC92YXI+IGV0Yy4uCi1jYW4gYmUgdXNlZCB0byBzd2l0Y2ggYXR0cmlidXRlcyBvbi9vZmYgLCBnZXQgYXR0cmlidXRlcyBhbmQKLXByb2R1Y2UgYSBjb2xvcmZ1bCBkaXNwbGF5LjwvcD4KLTxwPlRoZSBmdW5jdGlvbnMgYXR0cm9uIGFuZCBhdHRyb2ZmIHRha2UgYSBiaXQtbWFzayBvZiBhdHRyaWJ1dGVzCi1hbmQgc3dpdGNoIHRoZW0gb24gb3Igb2ZmLCByZXNwZWN0aXZlbHkuIFRoZSBmb2xsb3dpbmcgdmlkZW8KLWF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBkZWZpbmVkIGluICZsdDtjdXJzZXMuaCZndDsgY2FuIGJlIHBhc3NlZCB0bwotdGhlc2UgZnVuY3Rpb25zLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPm1vdmUoKTwvVFQKKz4gbW92ZXMgdGhlIGN1cnNvciB0byB0aGUgY28tb3JkaW5hdGVzCitnaXZlbiB0byBpdC4gPC9QCis+PFAKKz4gCitUaGUgYWJvdmUgcHJvZ3JhbSBpcyByZWFsbHkgYSBzaW1wbGUgb25lIHdoaWNoIGRvZXNuJ3QgZG8gbXVjaC4gT24gdGhlc2UgbGluZXMKK29uZSBjb3VsZCB3cml0ZSBhIG1vcmUgdXNlZnVsIHByb2dyYW0gd2hpY2ggcmVhZHMgYSBDIGZpbGUsIHBhcnNlcyBpdCBhbmQgcHJpbnRzCitpdCBpbiBkaWZmZXJlbnQgY29sb3JzLiBPbmUgY291bGQgZXZlbiBleHRlbmQgaXQgdG8gb3RoZXIgbGFuZ3VhZ2VzIGFzIHdlbGwuPC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQVRUUklCREVUQUlMUyIKKz44LjEuIFRoZSBkZXRhaWxzPC9BCis+PC9IMworPjxQCis+TGV0J3MgZ2V0IGludG8gbW9yZSBkZXRhaWxzIG9mIGF0dHJpYnV0ZXMuIFRoZSBmdW5jdGlvbnMgPFRUCitDTEFTUz0iTElURVJBTCIKKz5hdHRyb24oKSwgYXR0cm9mZigpLCBhdHRyc2V0KCkgPC9UVAorPiwgYW5kIHRoZWlyIHNpc3RlciBmdW5jdGlvbnMKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+IGF0dHJfZ2V0KCk8L1RUCis+IGV0Yy4uICBjYW4gYmUgdXNlZCB0byBzd2l0Y2gKK2F0dHJpYnV0ZXMgb24vb2ZmICwgZ2V0IGF0dHJpYnV0ZXMgYW5kIHByb2R1Y2UgYSBjb2xvcmZ1bCBkaXNwbGF5LjwvUAorPjxQCis+VGhlIGZ1bmN0aW9ucyBhdHRyb24gYW5kIGF0dHJvZmYgdGFrZSBhIGJpdC1tYXNrIG9mIGF0dHJpYnV0ZXMgYW5kIHN3aXRjaCB0aGVtIAorb24gb3Igb2ZmLCByZXNwZWN0aXZlbHkuIFRoZSBmb2xsb3dpbmcgdmlkZW8gYXR0cmlidXRlcywgd2hpY2ggYXJlIGRlZmluZWQgaW4gCismbHQ7Y3Vyc2VzLmgmZ3Q7IGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgZnVuY3Rpb25zLiA8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIAogICAgIEFfTk9STUFMICAgICAgICBOb3JtYWwgZGlzcGxheSAobm8gaGlnaGxpZ2h0KQogICAgIEFfU1RBTkRPVVQgICAgICBCZXN0IGhpZ2hsaWdodGluZyBtb2RlIG9mIHRoZSB0ZXJtaW5hbC4KICAgICBBX1VOREVSTElORSAgICAgVW5kZXJsaW5pbmcKQEAgLTE1NTYsMzY4ICsyNzQ5LDQ0NSBAQAogICAgIEFfQUxUQ0hBUlNFVCAgICBBbHRlcm5hdGUgY2hhcmFjdGVyIHNldAogICAgIEFfQ0hBUlRFWFQgICAgICBCaXQtbWFzayB0byBleHRyYWN0IGEgY2hhcmFjdGVyCiAgICAgQ09MT1JfUEFJUihuKSAgIENvbG9yLXBhaXIgbnVtYmVyIG4gCi0gICAgPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIGxhc3Qgb25lIGlzIHRoZSBtb3N0IGNvbG9yZnVsIG9uZSA6LSkgQ29sb3JzIGFyZSBleHBsYWluZWQKLWluIHRoZSA8YSBocmVmPSIjY29sb3IiIHRhcmdldD0iX3RvcCI+bmV4dCBzZWN0aW9uczwvYT4uPC9wPgotPHA+V2UgY2FuIE9SKHwpIGFueSBudW1iZXIgb2YgYWJvdmUgYXR0cmlidXRlcyB0byBnZXQgYSBjb21iaW5lZAotZWZmZWN0LiBJZiB5b3Ugd2FudGVkIHJldmVyc2UgdmlkZW8gd2l0aCBibGlua2luZyBjaGFyYWN0ZXJzIHlvdQotY2FuIHVzZTwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgYXR0cm9uKEFfUkVWRVJTRSB8IEFfQkxJTkspOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQVRUUk9OVlNBVFRSU0VUIiBpZD0KLSJBVFRST05WU0FUVFJTRVQiPjguMi4gYXR0cm9uKCkgdnMgYXR0cnNldCgpPC9hPjwvaDM+Ci08cD5UaGVuIHdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhdHRyb24oKSBhbmQgYXR0cnNldCgpPwotYXR0cnNldCBzZXRzIHRoZSBhdHRyaWJ1dGVzIG9mIHdpbmRvdyB3aGVyZWFzIGF0dHJvbiBqdXN0IHN3aXRjaGVzCi1vbiB0aGUgYXR0cmlidXRlIGdpdmVuIHRvIGl0LiBTbyBhdHRyc2V0KCkgZnVsbHkgb3ZlcnJpZGVzIHdoYXRldmVyCi1hdHRyaWJ1dGVzIHRoZSB3aW5kb3cgcHJldmlvdXNseSBoYWQgYW5kIHNldHMgaXQgdG8gdGhlIG5ldwotYXR0cmlidXRlKHMpLiBTaW1pbGFybHkgYXR0cm9mZigpIGp1c3Qgc3dpdGNoZXMgb2ZmIHRoZQotYXR0cmlidXRlKHMpIGdpdmVuIHRvIGl0IGFzIGFuIGFyZ3VtZW50LiBUaGlzIGdpdmVzIHVzIHRoZQotZmxleGliaWxpdHkgb2YgbWFuYWdpbmcgYXR0cmlidXRlcyBlYXNpbHkuQnV0IGlmIHlvdSB1c2UgdGhlbQotY2FyZWxlc3NseSB5b3UgbWF5IGxvb3NlIHRyYWNrIG9mIHdoYXQgYXR0cmlidXRlcyB0aGUgd2luZG93IGhhcwotYW5kIGdhcmJsZSB0aGUgZGlzcGxheS4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgd2hpbGUgbWFuYWdpbmcKLW1lbnVzIHdpdGggY29sb3JzIGFuZCBoaWdobGlnaHRpbmcuIFNvIGRlY2lkZSBvbiBhIGNvbnNpc3RlbnQKLXBvbGljeSBhbmQgc3RpY2sgdG8gaXQuIFlvdSBjYW4gYWx3YXlzIHVzZSA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPnN0YW5kZW5kKCk8L3Zhcj4gd2hpY2ggaXMgZXF1aXZhbGVudCB0byA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmF0dHJzZXQoQV9OT1JNQUwpPC92YXI+IHdoaWNoIHR1cm5zIG9mZiBhbGwgYXR0cmlidXRlcwotYW5kIGJyaW5ncyB5b3UgdG8gbm9ybWFsIG1vZGUuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJBVFRSX0dFVCIgaWQ9IkFUVFJfR0VUIj44LjMuCi1hdHRyX2dldCgpPC9hPjwvaDM+Ci08cD5UaGUgZnVuY3Rpb24gYXR0cl9nZXQoKSBnZXRzIHRoZSBjdXJyZW50IGF0dHJpYnV0ZXMgYW5kIGNvbG9yCi1wYWlyIG9mIHRoZSB3aW5kb3cuIFRob3VnaCB3ZSBtaWdodCBub3QgdXNlIHRoaXMgYXMgb2Z0ZW4gYXMgdGhlCi1hYm92ZSBmdW5jdGlvbnMsIHRoaXMgaXMgdXNlZnVsIGluIHNjYW5uaW5nIGFyZWFzIG9mIHNjcmVlbi4gU2F5IHdlCi13YW50ZWQgdG8gZG8gc29tZSBjb21wbGV4IHVwZGF0ZSBvbiBzY3JlZW4gYW5kIHdlIGFyZSBub3Qgc3VyZSB3aGF0Ci1hdHRyaWJ1dGUgZWFjaCBjaGFyYWN0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiBUaGVuIHRoaXMgZnVuY3Rpb24gY2FuCi1iZSB1c2VkIHdpdGggZWl0aGVyIGF0dHJzZXQgb3IgYXR0cm9uIHRvIHByb2R1Y2UgdGhlIGRlc2lyZWQKLWVmZmVjdC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkFUVFJfRlVOQ1MiIGlkPSJBVFRSX0ZVTkNTIj44LjQuIGF0dHJfCi1mdW5jdGlvbnM8L2E+PC9oMz4KLTxwPlRoZXJlIGFyZSBzZXJpZXMgb2YgZnVuY3Rpb25zIGxpa2UgYXR0cl9zZXQoKSwgYXR0cl9vbiBldGMuLgotVGhlc2UgYXJlIHNpbWlsYXIgdG8gYWJvdmUgZnVuY3Rpb25zIGV4Y2VwdCB0aGF0IHRoZXkgdGFrZQotcGFyYW1ldGVycyBvZiB0eXBlIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmF0dHJfdDwvdmFyPi48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IldBVFRSRlVOQ1MiIGlkPSJXQVRUUkZVTkNTIj44LjUuIHdhdHRyCi1mdW5jdGlvbnM8L2E+PC9oMz4KLTxwPkZvciBlYWNoIG9mIHRoZSBhYm92ZSBmdW5jdGlvbnMgd2UgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24KLXdpdGggJ3cnIHdoaWNoIG9wZXJhdGVzIG9uIGEgcGFydGljdWxhciB3aW5kb3cuIFRoZSBhYm92ZSBmdW5jdGlvbnMKLW9wZXJhdGUgb24gc3Rkc2NyLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQ0hHQVQiIGlkPSJDSEdBVCI+OC42LiBjaGdhdCgpCi1mdW5jdGlvbnM8L2E+PC9oMz4KLTxwPlRoZSBmdW5jdGlvbiBjaGdhdCgpIGlzIGxpc3RlZCBpbiB0aGUgZW5kIG9mIHRoZSBtYW4gcGFnZQotY3Vyc19hdHRyLiBJdCBhY3R1YWxseSBpcyBhIHVzZWZ1bCBvbmUuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQKLXRvIHNldCBhdHRyaWJ1dGVzIGZvciBhIGdyb3VwIG9mIGNoYXJhY3RlcnMgd2l0aG91dCBtb3ZpbmcuIEkgbWVhbgotaXQgISEhIHdpdGhvdXQgbW92aW5nIHRoZSBjdXJzb3IgOi0pIEl0IGNoYW5nZXMgdGhlIGF0dHJpYnV0ZXMgb2YgYQotZ2l2ZW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yCi1sb2NhdGlvbi48L3A+Ci08cD5XZSBjYW4gZ2l2ZSAtMSBhcyB0aGUgY2hhcmFjdGVyIGNvdW50IHRvIHVwZGF0ZSB0aWxsIGVuZCBvZgotbGluZS4gSWYgeW91IHdhbnQgdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgY2hhcmFjdGVycyBmcm9tIGN1cnJlbnQKLXBvc2l0aW9uIHRvIGVuZCBvZiBsaW5lLCBqdXN0IHVzZSB0aGlzLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgY2hnYXQoLTEsIEFfUkVWRVJTRSwgMCwgTlVMTCk7PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgd2hlbiBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBjaGFyYWN0ZXJzCi10aGF0IGFyZSBhbHJlYWR5IG9uIHRoZSBzY3JlZW4uIE1vdmUgdG8gdGhlIGNoYXJhY3RlciBmcm9tIHdoaWNoCi15b3Ugd2FudCB0byBjaGFuZ2UgYW5kIGNoYW5nZSB0aGUgYXR0cmlidXRlLjwvcD4KLTxwPk90aGVyIGZ1bmN0aW9ucyB3Y2hnYXQoKSwgbXZjaGdhdCgpLCB3Y2hnYXQoKSBiZWhhdmUgc2ltaWxhcmx5Ci1leGNlcHQgdGhhdCB0aGUgdyBmdW5jdGlvbnMgb3BlcmF0ZSBvbiB0aGUgcGFydGljdWxhciB3aW5kb3cuIFRoZQotbXYgZnVuY3Rpb25zIGZpcnN0IG1vdmUgdGhlIGN1cnNvciB0aGVuIHBlcmZvcm0gdGhlIHdvcmsgZ2l2ZW4gdG8KLXRoZW0uIEFjdHVhbGx5IGNoZ2F0IGlzIGEgbWFjcm8gd2hpY2ggaXMgcmVwbGFjZWQgYnkgYSB3Y2hnYXQoKQotd2l0aCBzdGRzY3IgYXMgdGhlIHdpbmRvdy4gTW9zdCBvZiB0aGUgInctbGVzcyIgZnVuY3Rpb25zIGFyZQotbWFjcm9zLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkJXSUNIIiBpZD0iQldJQ0giPjwvYT4KLTxwPjxiPkV4YW1wbGUgNi4gQ2hnYXQoKSBVc2FnZSBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O25jdXJzZXMuaCZndDsKKyAgICA8L1BSRQorPjxQCis+IAorVGhlIGxhc3Qgb25lIGlzIHRoZSBtb3N0IGNvbG9yZnVsIG9uZSA6LSkgQ29sb3JzIGFyZSBleHBsYWluZWQgaW4gdGhlIAorPEEKK0hSRUY9IiNjb2xvciIKK1RBUkdFVD0iX3RvcCIKKz5uZXh0IHNlY3Rpb25zPC9BCis+LjwvUAorPjxQCis+V2UgY2FuIE9SKHwpIGFueSBudW1iZXIgb2YgYWJvdmUgYXR0cmlidXRlcyB0byBnZXQgYSBjb21iaW5lZCBlZmZlY3QuIElmIHlvdSAKK3dhbnRlZCByZXZlcnNlIHZpZGVvIHdpdGggYmxpbmtpbmcgY2hhcmFjdGVycyB5b3UgY2FuIHVzZTwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgYXR0cm9uKEFfUkVWRVJTRSB8IEFfQkxJTkspOzwvUFJFCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJBVFRST05WU0FUVFJTRVQiCis+OC4yLiBhdHRyb24oKSB2cyBhdHRyc2V0KCk8L0EKKz48L0gzCis+PFAKKz5UaGVuIHdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhdHRyb24oKSBhbmQgYXR0cnNldCgpPyBhdHRyc2V0IHNldHMgdGhlCithdHRyaWJ1dGVzIG9mIHdpbmRvdyB3aGVyZWFzIGF0dHJvbiBqdXN0IHN3aXRjaGVzIG9uIHRoZSBhdHRyaWJ1dGUgZ2l2ZW4gdG8gaXQuCitTbyBhdHRyc2V0KCkgZnVsbHkgb3ZlcnJpZGVzIHdoYXRldmVyIGF0dHJpYnV0ZXMgdGhlIHdpbmRvdyBwcmV2aW91c2x5IGhhZCBhbmQKK3NldHMgaXQgdG8gdGhlIG5ldyBhdHRyaWJ1dGUocykuIFNpbWlsYXJseSBhdHRyb2ZmKCkganVzdCBzd2l0Y2hlcyBvZmYgdGhlCithdHRyaWJ1dGUocykgZ2l2ZW4gdG8gaXQgYXMgYW4gYXJndW1lbnQuIFRoaXMgZ2l2ZXMgdXMgdGhlIGZsZXhpYmlsaXR5IG9mCittYW5hZ2luZyBhdHRyaWJ1dGVzIGVhc2lseS5CdXQgaWYgeW91IHVzZSB0aGVtIGNhcmVsZXNzbHkgeW91IG1heSBsb29zZSB0cmFjayBvZgord2hhdCBhdHRyaWJ1dGVzIHRoZSB3aW5kb3cgaGFzIGFuZCBnYXJibGUgdGhlIGRpc3BsYXkuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlCit3aGlsZSBtYW5hZ2luZyBtZW51cyB3aXRoIGNvbG9ycyBhbmQgaGlnaGxpZ2h0aW5nLiBTbyBkZWNpZGUgb24gYSBjb25zaXN0ZW50Citwb2xpY3kgYW5kIHN0aWNrIHRvIGl0LiBZb3UgY2FuIGFsd2F5cyB1c2UgPFRUCitDTEFTUz0iTElURVJBTCIKKz4gc3RhbmRlbmQoKTwvVFQKKz4gd2hpY2ggaXMgZXF1aXZhbGVudCB0byA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPiBhdHRyc2V0KEFfTk9STUFMKTwvVFQKKz4gd2hpY2ggdHVybnMgb2ZmIGFsbCBhdHRyaWJ1dGVzIGFuZCBicmluZ3MgeW91IHRvIG5vcm1hbCBtb2RlLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQVRUUl9HRVQiCis+OC4zLiBhdHRyX2dldCgpPC9BCis+PC9IMworPjxQCis+JiMxMztUaGUgZnVuY3Rpb24gYXR0cl9nZXQoKSBnZXRzIHRoZSBjdXJyZW50IGF0dHJpYnV0ZXMgYW5kIGNvbG9yIHBhaXIgb2YgdGhlCit3aW5kb3cuIFRob3VnaCB3ZSBtaWdodCBub3QgdXNlIHRoaXMgYXMgb2Z0ZW4gYXMgdGhlIGFib3ZlIGZ1bmN0aW9ucywgdGhpcyBpcwordXNlZnVsIGluIHNjYW5uaW5nIGFyZWFzIG9mIHNjcmVlbi4gU2F5IHdlIHdhbnRlZCB0byBkbyBzb21lIGNvbXBsZXggdXBkYXRlIG9uCitzY3JlZW4gYW5kIHdlIGFyZSBub3Qgc3VyZSB3aGF0IGF0dHJpYnV0ZSBlYWNoIGNoYXJhY3RlciBpcyBhc3NvY2lhdGVkIHdpdGguCitUaGVuIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgd2l0aCBlaXRoZXIgYXR0cnNldCBvciBhdHRyb24gdG8gcHJvZHVjZSB0aGUKK2Rlc2lyZWQgZWZmZWN0LiYjMTM7PC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJBVFRSX0ZVTkNTIgorPjguNC4gYXR0cl8gZnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+VGhlcmUgYXJlIHNlcmllcyBvZiBmdW5jdGlvbnMgbGlrZSBhdHRyX3NldCgpLCBhdHRyX29uIGV0Yy4uIFRoZXNlIGFyZSBzaW1pbGFyCit0byBhYm92ZSBmdW5jdGlvbnMgZXhjZXB0IHRoYXQgdGhleSB0YWtlIHBhcmFtZXRlcnMgb2YgdHlwZQorPFRUCitDTEFTUz0iTElURVJBTCIKKz5hdHRyX3Q8L1RUCis+LjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iV0FUVFJGVU5DUyIKKz44LjUuIHdhdHRyIGZ1bmN0aW9uczwvQQorPjwvSDMKKz48UAorPkZvciBlYWNoIG9mIHRoZSBhYm92ZSBmdW5jdGlvbnMgd2UgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gd2l0aCAndycgd2hpY2gKK29wZXJhdGVzIG9uIGEgcGFydGljdWxhciB3aW5kb3cuIFRoZSBhYm92ZSBmdW5jdGlvbnMgb3BlcmF0ZSBvbiBzdGRzY3IuIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQ0hHQVQiCis+OC42LiBjaGdhdCgpIGZ1bmN0aW9uczwvQQorPjwvSDMKKz48UAorPlRoZSBmdW5jdGlvbiBjaGdhdCgpIGlzIGxpc3RlZCBpbiB0aGUgZW5kIG9mIHRoZSBtYW4gcGFnZSBjdXJzX2F0dHIuIEl0IGFjdHVhbGx5CitpcyBhIHVzZWZ1bCBvbmUuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgZm9yIGEgZ3JvdXAgb2YKK2NoYXJhY3RlcnMgd2l0aG91dCBtb3ZpbmcuIEkgbWVhbiBpdCAhISEgd2l0aG91dCBtb3ZpbmcgdGhlIGN1cnNvciA6LSkgSXQKK2NoYW5nZXMgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycyBzdGFydGluZyBhdCB0aGUgY3VycmVudAorY3Vyc29yIGxvY2F0aW9uLjwvUAorPjxQCis+V2UgY2FuIGdpdmUgLTEgYXMgdGhlIGNoYXJhY3RlciBjb3VudCB0byB1cGRhdGUgdGlsbCBlbmQgb2YgbGluZS4gSWYgeW91IHdhbnQgdG8KK2NoYW5nZSBhdHRyaWJ1dGVzIG9mIGNoYXJhY3RlcnMgZnJvbSBjdXJyZW50IHBvc2l0aW9uIHRvIGVuZCBvZiBsaW5lLCBqdXN0IHVzZQordGhpcy48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGNoZ2F0KC0xLCBBX1JFVkVSU0UsIDAsIE5VTEwpOzwvUFJFCis+PFAKKz4gCitUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIGNoYW5naW5nIGF0dHJpYnV0ZXMgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUKK2FscmVhZHkgb24gdGhlIHNjcmVlbi4gTW92ZSB0byB0aGUgY2hhcmFjdGVyIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gY2hhbmdlIGFuZAorY2hhbmdlIHRoZSBhdHRyaWJ1dGUuIDwvUAorPjxQCis+T3RoZXIgZnVuY3Rpb25zIHdjaGdhdCgpLCBtdmNoZ2F0KCksIHdjaGdhdCgpIGJlaGF2ZSBzaW1pbGFybHkgZXhjZXB0IHRoYXQgdGhlIHcKK2Z1bmN0aW9ucyBvcGVyYXRlIG9uIHRoZSBwYXJ0aWN1bGFyIHdpbmRvdy4gVGhlIG12IGZ1bmN0aW9ucyBmaXJzdCBtb3ZlIHRoZQorY3Vyc29yIHRoZW4gcGVyZm9ybSB0aGUgd29yayBnaXZlbiB0byB0aGVtLiBBY3R1YWxseSBjaGdhdCBpcyBhIG1hY3JvIHdoaWNoIGlzCityZXBsYWNlZCBieSBhIHdjaGdhdCgpIHdpdGggc3Rkc2NyIGFzIHRoZSB3aW5kb3cuIE1vc3Qgb2YgdGhlICJ3LWxlc3MiIGZ1bmN0aW9ucworYXJlIG1hY3Jvcy48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQldJQ0giCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgNi4gIENoZ2F0KCkgVXNhZ2UgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO25jdXJzZXMuaCYjNjI7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi17ICAgICAgIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAqLwotICAgICAgICBzdGFydF9jb2xvcigpOyAgICAgICAgICAgICAgICAgIC8qIFN0YXJ0IGNvbG9yIGZ1bmN0aW9uYWxpdHkgICAgKi8KLSAgICAgICAgCi0gICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9DWUFOLCBDT0xPUl9CTEFDSyk7Ci0gICAgICAgIHByaW50dygiQSBCaWcgc3RyaW5nIHdoaWNoIGkgZGlkbid0IGNhcmUgdG8gdHlwZSBmdWxseSAiKTsKLSAgICAgICAgbXZjaGdhdCgwLCAwLCAtMSwgQV9CTElOSywgMSwgTlVMTCk7ICAgIAotICAgICAgICAvKiAKLSAgICAgICAgICogRmlyc3QgdHdvIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgCi0gICAgICAgICAqIFRoaXJkIHBhcmFtZXRlciBudW1iZXIgb2YgY2hhcmFjdGVycyB0byB1cGRhdGUuIC0xIG1lYW5zIHRpbGwgCi0gICAgICAgICAqIGVuZCBvZiBsaW5lCi0gICAgICAgICAqIEZvcnRoIHBhcmFtZXRlciBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0ZSB5b3Ugd2FudGVkIHRvIGdpdmUgCi0gICAgICAgICAqIHRvIHRoZSBjaGFyY3RlcgotICAgICAgICAgKiBGaWZ0aCBpcyB0aGUgY29sb3IgaW5kZXguIEl0IGlzIHRoZSBpbmRleCBnaXZlbiBkdXJpbmcgaW5pdF9wYWlyKCkKLSAgICAgICAgICogdXNlIDAgaWYgeW91IGRpZG4ndCB3YW50IGNvbG9yCi0gICAgICAgICAqIFNpeHRoIG9uZSBpcyBhbHdheXMgTlVMTCAKLSAgICAgICAgICovCi0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgZ2V0Y2goKTsKLSAgICAgICAgZW5kd2luKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPHA+VGhpcyBleGFtcGxlIGFsc28gaW50cm9kdWNlcyB1cyB0byB0aGUgY29sb3Igd29ybGQgb2YgY3Vyc2VzLgotQ29sb3JzIHdpbGwgYmUgZXhwbGFpbmVkIGluIGRldGFpbCBsYXRlci4gVXNlIDAgZm9yIG5vIGNvbG9yLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJXSU5ET1dTIiBpZD0iV0lORE9XUyI+OS4KLVdpbmRvd3M8L2E+PC9oMj4KLTxwPldpbmRvd3MgZm9ybSB0aGUgbW9zdCBpbXBvcnRhbnQgY29uY2VwdCBpbiBjdXJzZXMuIFlvdSBoYXZlIHNlZW4KLXRoZSBzdGFuZGFyZCB3aW5kb3cgc3Rkc2NyIGFib3ZlIHdoZXJlIGFsbCB0aGUgZnVuY3Rpb25zIGltcGxpY2l0bHkKLW9wZXJhdGVkIG9uIHRoaXMgd2luZG93LiBOb3cgdG8gbWFrZSBkZXNpZ24gZXZlbiBhIHNpbXBsZXN0IEdVSSwKLXlvdSBuZWVkIHRvIHJlc29ydCB0byB3aW5kb3dzLiBUaGUgbWFpbiByZWFzb24geW91IG1heSB3YW50IHRvIHVzZQotd2luZG93cyBpcyB0byBtYW5pcHVsYXRlIHBhcnRzIG9mIHRoZSBzY3JlZW4gc2VwYXJhdGVseSwgZm9yIGJldHRlcgotZWZmaWNpZW5jeSwgYnkgdXBkYXRpbmcgb25seSB0aGUgd2luZG93cyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZAotYW5kIGZvciBhIGJldHRlciBkZXNpZ24uIEkgd291bGQgc2F5IHRoZSBsYXN0IHJlYXNvbiBpcyB0aGUgbW9zdAotaW1wb3J0YW50IGluIGdvaW5nIGZvciB3aW5kb3dzLiBZb3Ugc2hvdWxkIGFsd2F5cyBzdHJpdmUgZm9yIGEKLWJldHRlciBhbmQgZWFzeS10by1tYW5hZ2UgZGVzaWduIGluIHlvdXIgcHJvZ3JhbXMuIElmIHlvdSBhcmUKLXdyaXRpbmcgYmlnLCBjb21wbGV4IEdVSXMgdGhpcyBpcyBvZiBwaXZvdGFsIGltcG9ydGFuY2UgYmVmb3JlIHlvdQotc3RhcnQgZG9pbmcgYW55dGhpbmcuPC9wPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iV0lORE9XQkFTSUNTIiBpZD0iV0lORE9XQkFTSUNTIj45LjEuIFRoZQotYmFzaWNzPC9hPjwvaDM+Ci08cD5BIFdpbmRvdyBjYW4gYmUgY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPm5ld3dpbigpPC92YXI+LiBJdCBkb2Vzbid0IGNyZWF0ZSBhbnkgdGhpbmcgb24gdGhlIHNjcmVlbgotYWN0dWFsbHkuIEl0IGFsbG9jYXRlcyBtZW1vcnkgZm9yIGEgc3RydWN0dXJlIHRvIG1hbmlwdWxhdGUgdGhlCi13aW5kb3cgYW5kIHVwZGF0ZXMgdGhlIHN0cnVjdHVyZSB3aXRoIGRhdGEgcmVnYXJkaW5nIHRoZSB3aW5kb3cKLWxpa2UgaXQncyBzaXplLCBiZWdpbnksIGJlZ2lueCBldGMuLiBIZW5jZSBpbiBjdXJzZXMsIGEgd2luZG93IGlzCi1qdXN0IGFuIGFic3RyYWN0aW9uIG9mIGFuIGltYWdpbmFyeSB3aW5kb3csIHdoaWNoIGNhbiBiZQotbWFuaXB1bGF0ZWQgaW5kZXBlbmRlbnQgb2Ygb3RoZXIgcGFydHMgb2Ygc2NyZWVuLiBUaGUgZnVuY3Rpb24KLW5ld3dpbigpIHJldHVybnMgYSBwb2ludGVyIHRvIHN0cnVjdHVyZSBXSU5ET1csIHdoaWNoIGNhbiBiZSBwYXNzZWQKLXRvIHdpbmRvdyByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHdwcmludHcoKSBldGMuLiBGaW5hbGx5IHRoZSB3aW5kb3cKLWNhbiBiZSBkZXN0cm95ZWQgd2l0aCBkZWx3aW4oKS4gSXQgd2lsbCBkZWFsbG9jYXRlIHRoZSBtZW1vcnkKLWFzc29jaWF0ZWQgd2l0aCB0aGUgd2luZG93IHN0cnVjdHVyZS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkxFVEJFV0lORE9XIiBpZD0iTEVUQkVXSU5ET1ciPjkuMi4gTGV0Ci10aGVyZSBiZSBhIFdpbmRvdyAhISE8L2E+PC9oMz4KLTxwPldoYXQgZnVuIGlzIGl0LCBpZiBhIHdpbmRvdyBpcyBjcmVhdGVkIGFuZCB3ZSBjYW4ndCBzZWUgaXQuIFNvCi10aGUgZnVuIHBhcnQgYmVnaW5zIGJ5IGRpc3BsYXlpbmcgdGhlIHdpbmRvdy4gVGhlIGZ1bmN0aW9uCi08dmFyIGNsYXNzPSJMSVRFUkFMIj5ib3goKTwvdmFyPiBjYW4gYmUgdXNlZCB0byBkcmF3IGEgYm9yZGVyCi1hcm91bmQgdGhlIHdpbmRvdy4gTGV0J3MgZXhwbG9yZSB0aGVzZSBmdW5jdGlvbnMgaW4gbW9yZSBkZXRhaWwgaW4KLXRoaXMgZXhhbXBsZS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCV0lCTyIgaWQ9IkJXSUJPIj48L2E+Ci08cD48Yj5FeGFtcGxlIDcuIFdpbmRvdyBCb3JkZXIgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7Cit7CWluaXRzY3IoKTsJCQkvKiBTdGFydCBjdXJzZXMgbW9kZSAJCSovCisJc3RhcnRfY29sb3IoKTsJCQkvKiBTdGFydCBjb2xvciBmdW5jdGlvbmFsaXR5CSovCisJCisJaW5pdF9wYWlyKDEsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKKwlwcmludHcoIkEgQmlnIHN0cmluZyB3aGljaCBpIGRpZG4ndCBjYXJlIHRvIHR5cGUgZnVsbHkgIik7CisJbXZjaGdhdCgwLCAwLCAtMSwgQV9CTElOSywgMSwgTlVMTCk7CQorCS8qIAorCSAqIEZpcnN0IHR3byBwYXJhbWV0ZXJzIHNwZWNpZnkgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIHN0YXJ0IAorCSAqIFRoaXJkIHBhcmFtZXRlciBudW1iZXIgb2YgY2hhcmFjdGVycyB0byB1cGRhdGUuIC0xIG1lYW5zIHRpbGwgCisJICogZW5kIG9mIGxpbmUKKwkgKiBGb3J0aCBwYXJhbWV0ZXIgaXMgdGhlIG5vcm1hbCBhdHRyaWJ1dGUgeW91IHdhbnRlZCB0byBnaXZlIAorCSAqIHRvIHRoZSBjaGFyY3RlcgorCSAqIEZpZnRoIGlzIHRoZSBjb2xvciBpbmRleC4gSXQgaXMgdGhlIGluZGV4IGdpdmVuIGR1cmluZyBpbml0X3BhaXIoKQorCSAqIHVzZSAwIGlmIHlvdSBkaWRuJ3Qgd2FudCBjb2xvcgorCSAqIFNpeHRoIG9uZSBpcyBhbHdheXMgTlVMTCAKKwkgKi8KKwlyZWZyZXNoKCk7CisgICAgCWdldGNoKCk7CisJZW5kd2luKCk7CQkJLyogRW5kIGN1cnNlcyBtb2RlCQkgICovCisJcmV0dXJuIDA7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+VGhpcyBleGFtcGxlIGFsc28gaW50cm9kdWNlcyB1cyB0byB0aGUgY29sb3Igd29ybGQgb2YgY3Vyc2VzLiBDb2xvcnMgd2lsbCBiZSAKK2V4cGxhaW5lZCBpbiBkZXRhaWwgbGF0ZXIuIFVzZSAwIGZvciBubyBjb2xvci48L1AKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iV0lORE9XUyIKKz45LiBXaW5kb3dzPC9BCis+PC9IMgorPjxQCis+V2luZG93cyBmb3JtIHRoZSBtb3N0IGltcG9ydGFudCBjb25jZXB0IGluIGN1cnNlcy4gWW91IGhhdmUgc2VlbiB0aGUgc3RhbmRhcmQKK3dpbmRvdyBzdGRzY3IgYWJvdmUgd2hlcmUgYWxsIHRoZSBmdW5jdGlvbnMgaW1wbGljaXRseSBvcGVyYXRlZCBvbiB0aGlzIHdpbmRvdy4KK05vdyB0byBtYWtlIGRlc2lnbiBldmVuIGEgc2ltcGxlc3QgR1VJLCB5b3UgbmVlZCB0byByZXNvcnQgdG8gd2luZG93cy4gIFRoZSBtYWluCityZWFzb24geW91IG1heSB3YW50IHRvIHVzZSB3aW5kb3dzIGlzIHRvIG1hbmlwdWxhdGUgcGFydHMgb2YgdGhlIHNjcmVlbgorc2VwYXJhdGVseSwgZm9yIGJldHRlciBlZmZpY2llbmN5LCBieSB1cGRhdGluZyBvbmx5IHRoZSB3aW5kb3dzIHRoYXQgbmVlZCB0byBiZQorY2hhbmdlZCBhbmQgZm9yIGEgYmV0dGVyIGRlc2lnbi4gSSB3b3VsZCBzYXkgdGhlIGxhc3QgcmVhc29uIGlzIHRoZSBtb3N0CitpbXBvcnRhbnQgaW4gZ29pbmcgZm9yIHdpbmRvd3MuIFlvdSBzaG91bGQgYWx3YXlzIHN0cml2ZSBmb3IgYSBiZXR0ZXIgYW5kCitlYXN5LXRvLW1hbmFnZSBkZXNpZ24gaW4geW91ciBwcm9ncmFtcy4gSWYgeW91IGFyZSB3cml0aW5nIGJpZywgY29tcGxleCBHVUlzCit0aGlzIGlzIG9mIHBpdm90YWwgaW1wb3J0YW5jZSBiZWZvcmUgeW91IHN0YXJ0IGRvaW5nIGFueXRoaW5nLjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IldJTkRPV0JBU0lDUyIKKz45LjEuIFRoZSBiYXNpY3M8L0EKKz48L0gzCis+PFAKKz5BIFdpbmRvdyBjYW4gYmUgY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5uZXd3aW4oKTwvVFQKKz4uIEl0IGRvZXNuJ3QgY3JlYXRlIGFueSB0aGluZyBvbiB0aGUKK3NjcmVlbiBhY3R1YWxseS4gSXQgYWxsb2NhdGVzIG1lbW9yeSBmb3IgYSBzdHJ1Y3R1cmUgdG8gbWFuaXB1bGF0ZSB0aGUgd2luZG93CithbmQgdXBkYXRlcyB0aGUgc3RydWN0dXJlIHdpdGggZGF0YSByZWdhcmRpbmcgdGhlIHdpbmRvdyBsaWtlIGl0J3Mgc2l6ZSwgYmVnaW55LAorYmVnaW54IGV0Yy4uIEhlbmNlIGluIGN1cnNlcywgYSB3aW5kb3cgaXMganVzdCBhbiBhYnN0cmFjdGlvbiBvZiBhbiBpbWFnaW5hcnkKK3dpbmRvdywgd2hpY2ggY2FuIGJlIG1hbmlwdWxhdGVkIGluZGVwZW5kZW50IG9mIG90aGVyIHBhcnRzIG9mIHNjcmVlbi4gVGhlCitmdW5jdGlvbiBuZXd3aW4oKSByZXR1cm5zIGEgcG9pbnRlciB0byBzdHJ1Y3R1cmUgV0lORE9XLCB3aGljaCBjYW4gYmUgcGFzc2VkIHRvCit3aW5kb3cgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSB3cHJpbnR3KCkgZXRjLi4gRmluYWxseSB0aGUgd2luZG93IGNhbiBiZQorZGVzdHJveWVkIHdpdGggZGVsd2luKCkuIEl0IHdpbGwgZGVhbGxvY2F0ZSB0aGUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUKK3dpbmRvdyBzdHJ1Y3R1cmUuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJMRVRCRVdJTkRPVyIKKz45LjIuIExldCB0aGVyZSBiZSBhIFdpbmRvdyAhISE8L0EKKz48L0gzCis+PFAKKz5XaGF0IGZ1biBpcyBpdCwgaWYgYSB3aW5kb3cgaXMgY3JlYXRlZCBhbmQgd2UgY2FuJ3Qgc2VlIGl0LiBTbyB0aGUgZnVuIHBhcnQKK2JlZ2lucyBieSBkaXNwbGF5aW5nIHRoZSB3aW5kb3cuIFRoZSBmdW5jdGlvbgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5ib3goKTwvVFQKKz4gY2FuIGJlIHVzZWQgdG8gZHJhdyBhIGJvcmRlciBhcm91bmQgdGhlCit3aW5kb3cuIExldCdzIGV4cGxvcmUgdGhlc2UgZnVuY3Rpb25zIGluIG1vcmUgZGV0YWlsIGluIHRoaXMgZXhhbXBsZS48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQldJQk8iCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgNy4gV2luZG93IEJvcmRlciBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsKIAogCiBXSU5ET1cgKmNyZWF0ZV9uZXd3aW4oaW50IGhlaWdodCwgaW50IHdpZHRoLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4KTsKIHZvaWQgZGVzdHJveV93aW4oV0lORE9XICpsb2NhbF93aW4pOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoteyAgICAgICBXSU5ET1cgKm15X3dpbjsKLSAgICAgICAgaW50IHN0YXJ0eCwgc3RhcnR5LCB3aWR0aCwgaGVpZ2h0OwotICAgICAgICBpbnQgY2g7Cit7CVdJTkRPVyAqbXlfd2luOworCWludCBzdGFydHgsIHN0YXJ0eSwgd2lkdGgsIGhlaWdodDsKKwlpbnQgY2g7CiAKLSAgICAgICAgaW5pdHNjcigpOyAgICAgICAgICAgICAgICAgICAgICAvKiBTdGFydCBjdXJzZXMgbW9kZSAgICAgICAgICAgICovCi0gICAgICAgIGNicmVhaygpOyAgICAgICAgICAgICAgICAgICAgICAgLyogTGluZSBidWZmZXJpbmcgZGlzYWJsZWQsIFBhc3Mgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBldmVydHkgdGhpbmcgdG8gbWUgICAgICAgICAgICovCi0gICAgICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOyAgICAgICAgICAgLyogSSBuZWVkIHRoYXQgbmlmdHkgRjEgICAgICAgICAqLworCWluaXRzY3IoKTsJCQkvKiBTdGFydCBjdXJzZXMgbW9kZSAJCSovCisJY2JyZWFrKCk7CQkJLyogTGluZSBidWZmZXJpbmcgZGlzYWJsZWQsIFBhc3Mgb24KKwkJCQkJICogZXZlcnR5IHRoaW5nIHRvIG1lIAkJKi8KKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsJCS8qIEkgbmVlZCB0aGF0IG5pZnR5IEYxIAkqLwogCi0gICAgICAgIGhlaWdodCA9IDM7Ci0gICAgICAgIHdpZHRoID0gMTA7Ci0gICAgICAgIHN0YXJ0eSA9IChMSU5FUyAtIGhlaWdodCkgLyAyOyAgLyogQ2FsY3VsYXRpbmcgZm9yIGEgY2VudGVyIHBsYWNlbWVudCAqLwotICAgICAgICBzdGFydHggPSAoQ09MUyAtIHdpZHRoKSAvIDI7ICAgIC8qIG9mIHRoZSB3aW5kb3cgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcHJpbnR3KCJQcmVzcyBGMSB0byBleGl0Iik7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgbXlfd2luID0gY3JlYXRlX25ld3dpbihoZWlnaHQsIHdpZHRoLCBzdGFydHksIHN0YXJ0eCk7CisJaGVpZ2h0ID0gMzsKKwl3aWR0aCA9IDEwOworCXN0YXJ0eSA9IChMSU5FUyAtIGhlaWdodCkgLyAyOwkvKiBDYWxjdWxhdGluZyBmb3IgYSBjZW50ZXIgcGxhY2VtZW50ICovCisJc3RhcnR4ID0gKENPTFMgLSB3aWR0aCkgLyAyOwkvKiBvZiB0aGUgd2luZG93CQkqLworCXByaW50dygiUHJlc3MgRjEgdG8gZXhpdCIpOworCXJlZnJlc2goKTsKKwlteV93aW4gPSBjcmVhdGVfbmV3d2luKGhlaWdodCwgd2lkdGgsIHN0YXJ0eSwgc3RhcnR4KTsKIAotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9MRUZUOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95X3dpbihteV93aW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV93aW4gPSBjcmVhdGVfbmV3d2luKGhlaWdodCwgd2lkdGgsIHN0YXJ0eSwtLXN0YXJ0eCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfUklHSFQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfd2luKG15X3dpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X3dpbiA9IGNyZWF0ZV9uZXd3aW4oaGVpZ2h0LCB3aWR0aCwgc3RhcnR5LCsrc3RhcnR4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveV93aW4obXlfd2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlfd2luID0gY3JlYXRlX25ld3dpbihoZWlnaHQsIHdpZHRoLCAtLXN0YXJ0eSxzdGFydHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX0RPV046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfd2luKG15X3dpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X3dpbiA9IGNyZWF0ZV9uZXd3aW4oaGVpZ2h0LCB3aWR0aCwgKytzdGFydHksc3RhcnR4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgZW5kd2luKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIDA7CisJd2hpbGUoKGNoID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCisJewlzd2l0Y2goY2gpCisJCXsJY2FzZSBLRVlfTEVGVDoKKwkJCQlkZXN0cm95X3dpbihteV93aW4pOworCQkJCW15X3dpbiA9IGNyZWF0ZV9uZXd3aW4oaGVpZ2h0LCB3aWR0aCwgc3RhcnR5LC0tc3RhcnR4KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1JJR0hUOgorCQkJCWRlc3Ryb3lfd2luKG15X3dpbik7CisJCQkJbXlfd2luID0gY3JlYXRlX25ld3dpbihoZWlnaHQsIHdpZHRoLCBzdGFydHksKytzdGFydHgpOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJZGVzdHJveV93aW4obXlfd2luKTsKKwkJCQlteV93aW4gPSBjcmVhdGVfbmV3d2luKGhlaWdodCwgd2lkdGgsIC0tc3RhcnR5LHN0YXJ0eCk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9ET1dOOgorCQkJCWRlc3Ryb3lfd2luKG15X3dpbik7CisJCQkJbXlfd2luID0gY3JlYXRlX25ld3dpbihoZWlnaHQsIHdpZHRoLCArK3N0YXJ0eSxzdGFydHgpOworCQkJCWJyZWFrOwkKKwkJfQorCX0KKwkJCisJZW5kd2luKCk7CQkJLyogRW5kIGN1cnNlcyBtb2RlCQkgICovCisJcmV0dXJuIDA7CiB9CiAKIFdJTkRPVyAqY3JlYXRlX25ld3dpbihpbnQgaGVpZ2h0LCBpbnQgd2lkdGgsIGludCBzdGFydHksIGludCBzdGFydHgpCi17ICAgICAgIFdJTkRPVyAqbG9jYWxfd2luOworewlXSU5ET1cgKmxvY2FsX3dpbjsKIAotICAgICAgICBsb2NhbF93aW4gPSBuZXd3aW4oaGVpZ2h0LCB3aWR0aCwgc3RhcnR5LCBzdGFydHgpOwotICAgICAgICBib3gobG9jYWxfd2luLCAwICwgMCk7ICAgICAgICAgIC8qIDAsIDAgZ2l2ZXMgZGVmYXVsdCBjaGFyYWN0ZXJzIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciB0aGUgdmVydGljYWwgYW5kIGhvcml6b250YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsaW5lcyAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIHdyZWZyZXNoKGxvY2FsX3dpbik7ICAgICAgICAgICAgLyogU2hvdyB0aGF0IGJveCAgICAgICAgICAgICAgICAqLworCWxvY2FsX3dpbiA9IG5ld3dpbihoZWlnaHQsIHdpZHRoLCBzdGFydHksIHN0YXJ0eCk7CisJYm94KGxvY2FsX3dpbiwgMCAsIDApOwkJLyogMCwgMCBnaXZlcyBkZWZhdWx0IGNoYXJhY3RlcnMgCisJCQkJCSAqIGZvciB0aGUgdmVydGljYWwgYW5kIGhvcml6b250YWwKKwkJCQkJICogbGluZXMJCQkqLworCXdyZWZyZXNoKGxvY2FsX3dpbik7CQkvKiBTaG93IHRoYXQgYm94IAkJKi8KIAotICAgICAgICByZXR1cm4gbG9jYWxfd2luOworCXJldHVybiBsb2NhbF93aW47CiB9CiAKIHZvaWQgZGVzdHJveV93aW4oV0lORE9XICpsb2NhbF93aW4pCi17ICAgICAgIAotICAgICAgICAvKiBib3gobG9jYWxfd2luLCAnICcsICcgJyk7IDogVGhpcyB3b24ndCBwcm9kdWNlIHRoZSBkZXNpcmVkCi0gICAgICAgICAqIHJlc3VsdCBvZiBlcmFzaW5nIHRoZSB3aW5kb3cuIEl0IHdpbGwgbGVhdmUgaXQncyBmb3VyIGNvcm5lcnMgCi0gICAgICAgICAqIGFuZCBzbyBhbiB1Z2x5IHJlbW5hbnQgb2Ygd2luZG93LiAKLSAgICAgICAgICovCi0gICAgICAgIHdib3JkZXIobG9jYWxfd2luLCAnICcsICcgJywgJyAnLCcgJywnICcsJyAnLCcgJywnICcpOwotICAgICAgICAvKiBUaGUgcGFyYW1ldGVycyB0YWtlbiBhcmUgCi0gICAgICAgICAqIDEuIHdpbjogdGhlIHdpbmRvdyBvbiB3aGljaCB0byBvcGVyYXRlCi0gICAgICAgICAqIDIuIGxzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGxlZnQgc2lkZSBvZiB0aGUgd2luZG93IAotICAgICAgICAgKiAzLiByczogY2hhcmFjdGVyIHRvIGJlIHVzZWQgZm9yIHRoZSByaWdodCBzaWRlIG9mIHRoZSB3aW5kb3cgCi0gICAgICAgICAqIDQuIHRzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIHRvcCBzaWRlIG9mIHRoZSB3aW5kb3cgCi0gICAgICAgICAqIDUuIGJzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGJvdHRvbSBzaWRlIG9mIHRoZSB3aW5kb3cgCi0gICAgICAgICAqIDYuIHRsOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgd2luZG93IAotICAgICAgICAgKiA3LiB0cjogY2hhcmFjdGVyIHRvIGJlIHVzZWQgZm9yIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB3aW5kb3cgCi0gICAgICAgICAqIDguIGJsOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgd2luZG93IAotICAgICAgICAgKiA5LiBicjogY2hhcmFjdGVyIHRvIGJlIHVzZWQgZm9yIHRoZSBib3R0b20gcmlnaHQgY29ybmVyIG9mIHRoZSB3aW5kb3cKLSAgICAgICAgICovCi0gICAgICAgIHdyZWZyZXNoKGxvY2FsX3dpbik7Ci0gICAgICAgIGRlbHdpbihsb2NhbF93aW4pOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQk9SREVSRVhFWFBMIiBpZD0iQk9SREVSRVhFWFBMIj45LjMuCi1FeHBsYW5hdGlvbjwvYT48L2gzPgotPHA+RG9uJ3Qgc2NyZWFtLiBJIGtub3cgaXQncyBhIGJpZyBleGFtcGxlLiBCdXQgSSBoYXZlIHRvIGV4cGxhaW4KLXNvbWUgaW1wb3J0YW50IHRoaW5ncyBoZXJlIDotKS4gVGhpcyBwcm9ncmFtIGNyZWF0ZXMgYSByZWN0YW5ndWxhcgotd2luZG93IHRoYXQgY2FuIGJlIG1vdmVkIHdpdGggbGVmdCwgcmlnaHQsIHVwLCBkb3duIGFycm93IGtleXMuIEl0Ci1yZXBlYXRlZGx5IGNyZWF0ZXMgYW5kIGRlc3Ryb3lzIHdpbmRvd3MgYXMgdXNlciBwcmVzcyBhIGtleS4gRG9uJ3QKLWdvIGJleW9uZCB0aGUgc2NyZWVuIGxpbWl0cy4gQ2hlY2tpbmcgZm9yIHRob3NlIGxpbWl0cyBpcyBsZWZ0IGFzCi1hbiBleGVyY2lzZSBmb3IgdGhlIHJlYWRlci4gTGV0J3MgZGlzc2VjdCBpdCBieSBsaW5lIGJ5IGxpbmUuPC9wPgotPHA+VGhlIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmNyZWF0ZV9uZXd3aW4oKTwvdmFyPiBmdW5jdGlvbiBjcmVhdGVzCi1hIHdpbmRvdyB3aXRoIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm5ld3dpbigpPC92YXI+IGFuZCBkaXNwbGF5cyBhCi1ib3JkZXIgYXJvdW5kIGl0IHdpdGggYm94LiBUaGUgZnVuY3Rpb24gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5kZXN0cm95X3dpbigpPC92YXI+IGZpcnN0IGVyYXNlcyB0aGUgd2luZG93IGZyb20gc2NyZWVuCi1ieSBwYWludGluZyBhIGJvcmRlciB3aXRoICcgJyBjaGFyYWN0ZXIgYW5kIHRoZW4gY2FsbGluZwotPHZhciBjbGFzcz0iTElURVJBTCI+ZGVsd2luKCk8L3Zhcj4gdG8gZGVhbGxvY2F0ZSBtZW1vcnkgcmVsYXRlZCB0bwotaXQuIERlcGVuZGluZyBvbiB0aGUga2V5IHRoZSB1c2VyIHByZXNzZXMsIHN0YXJ0eSBvciBzdGFydHggaXMKLWNoYW5nZWQgYW5kIGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLjwvcD4KLTxwPkluIHRoZSBkZXN0cm95X3dpbiwgYXMgeW91IGNhbiBzZWUsIEkgdXNlZCB3Ym9yZGVyIGluc3RlYWQgb2YKLWJveC4gVGhlIHJlYXNvbiBpcyB3cml0dGVuIGluIHRoZSBjb21tZW50cyAoWW91IG1pc3NlZCBpdC4gSSBrbm93LgotUmVhZCB0aGUgY29kZSA6LSkpLiB3Ym9yZGVyIGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgd2luZG93IHdpdGgKLXRoZSBjaGFyYWN0ZXJzIGdpdmVuIHRvIGl0IGFzIHRoZSA0IGNvcm5lciBwb2ludHMgYW5kIHRoZSA0IGxpbmVzLgotVG8gcHV0IGl0IGNsZWFybHksIGlmIHlvdSBoYXZlIGNhbGxlZCB3Ym9yZGVyIGFzIGJlbG93OjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPiAgICB3Ym9yZGVyKHdpbiwgJ3wnLCAnfCcsICctJywgJy0nLCAnKycsICcrJywgJysnLCAnKycpOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPml0IHByb2R1Y2VzIHNvbWUgdGhpbmcgbGlrZTwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgKy0tLS0tLS0tLS0tLSsKK3sJCisJLyogYm94KGxvY2FsX3dpbiwgJyAnLCAnICcpOyA6IFRoaXMgd29uJ3QgcHJvZHVjZSB0aGUgZGVzaXJlZAorCSAqIHJlc3VsdCBvZiBlcmFzaW5nIHRoZSB3aW5kb3cuIEl0IHdpbGwgbGVhdmUgaXQncyBmb3VyIGNvcm5lcnMgCisJICogYW5kIHNvIGFuIHVnbHkgcmVtbmFudCBvZiB3aW5kb3cuIAorCSAqLworCXdib3JkZXIobG9jYWxfd2luLCAnICcsICcgJywgJyAnLCcgJywnICcsJyAnLCcgJywnICcpOworCS8qIFRoZSBwYXJhbWV0ZXJzIHRha2VuIGFyZSAKKwkgKiAxLiB3aW46IHRoZSB3aW5kb3cgb24gd2hpY2ggdG8gb3BlcmF0ZQorCSAqIDIuIGxzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGxlZnQgc2lkZSBvZiB0aGUgd2luZG93IAorCSAqIDMuIHJzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHdpbmRvdyAKKwkgKiA0LiB0czogY2hhcmFjdGVyIHRvIGJlIHVzZWQgZm9yIHRoZSB0b3Agc2lkZSBvZiB0aGUgd2luZG93IAorCSAqIDUuIGJzOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGJvdHRvbSBzaWRlIG9mIHRoZSB3aW5kb3cgCisJICogNi4gdGw6IGNoYXJhY3RlciB0byBiZSB1c2VkIGZvciB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSB3aW5kb3cgCisJICogNy4gdHI6IGNoYXJhY3RlciB0byBiZSB1c2VkIGZvciB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgd2luZG93IAorCSAqIDguIGJsOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgd2luZG93IAorCSAqIDkuIGJyOiBjaGFyYWN0ZXIgdG8gYmUgdXNlZCBmb3IgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhlIHdpbmRvdworCSAqLworCXdyZWZyZXNoKGxvY2FsX3dpbik7CisJZGVsd2luKGxvY2FsX3dpbik7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQk9SREVSRVhFWFBMIgorPjkuMy4gRXhwbGFuYXRpb248L0EKKz48L0gzCis+PFAKKz5Eb24ndCBzY3JlYW0uIEkga25vdyBpdCdzIGEgYmlnIGV4YW1wbGUuIEJ1dCBJIGhhdmUgdG8gZXhwbGFpbiBzb21lIGltcG9ydGFudAordGhpbmdzIGhlcmUgOi0pLiBUaGlzIHByb2dyYW0gY3JlYXRlcyBhIHJlY3Rhbmd1bGFyIHdpbmRvdyB0aGF0IGNhbiBiZSBtb3ZlZCAKK3dpdGggbGVmdCwgcmlnaHQsIHVwLCBkb3duIGFycm93IGtleXMuIEl0IHJlcGVhdGVkbHkgY3JlYXRlcyBhbmQgZGVzdHJveXMKK3dpbmRvd3MgYXMgdXNlciBwcmVzcyBhIGtleS4gRG9uJ3QgZ28gYmV5b25kIHRoZSBzY3JlZW4gbGltaXRzLiBDaGVja2luZyBmb3IKK3Rob3NlIGxpbWl0cyBpcyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyLiBMZXQncyBkaXNzZWN0IGl0IGJ5IGxpbmUgYnkgbGluZS48L1AKKz48UAorPlRoZSA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmNyZWF0ZV9uZXd3aW4oKTwvVFQKKz4gZnVuY3Rpb24gY3JlYXRlcyBhIHdpbmRvdword2l0aCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPm5ld3dpbigpIDwvVFQKKz4gYW5kIGRpc3BsYXlzIGEgYm9yZGVyIGFyb3VuZCBpdAord2l0aCBib3guIFRoZSBmdW5jdGlvbiA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPiBkZXN0cm95X3dpbigpPC9UVAorPiBmaXJzdAorZXJhc2VzIHRoZSB3aW5kb3cgZnJvbSBzY3JlZW4gYnkgcGFpbnRpbmcgYSBib3JkZXIgd2l0aCAnICcgY2hhcmFjdGVyIGFuZCB0aGVuCitjYWxsaW5nIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+ZGVsd2luKCk8L1RUCis+IHRvIGRlYWxsb2NhdGUgbWVtb3J5IHJlbGF0ZWQKK3RvIGl0LiBEZXBlbmRpbmcgb24gdGhlIGtleSB0aGUgdXNlciBwcmVzc2VzLCBzdGFydHkgb3Igc3RhcnR4IGlzIGNoYW5nZWQgYW5kIGEKK25ldyB3aW5kb3cgaXMgY3JlYXRlZC48L1AKKz48UAorPkluIHRoZSBkZXN0cm95X3dpbiwgYXMgeW91IGNhbiBzZWUsIEkgdXNlZCB3Ym9yZGVyIGluc3RlYWQgb2YgYm94LiBUaGUgcmVhc29uIGlzCit3cml0dGVuIGluIHRoZSBjb21tZW50cyAoWW91IG1pc3NlZCBpdC4gSSBrbm93LiBSZWFkIHRoZSBjb2RlIDotKSkuIHdib3JkZXIgCitkcmF3cyBhIGJvcmRlciBhcm91bmQgdGhlIHdpbmRvdyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGdpdmVuIHRvIGl0IGFzIHRoZSA0IGNvcm5lcgorcG9pbnRzIGFuZCB0aGUgNCBsaW5lcy4gVG8gcHV0IGl0IGNsZWFybHksIGlmIHlvdSBoYXZlIGNhbGxlZCB3Ym9yZGVyIGFzIGJlbG93OgorPFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICB3Ym9yZGVyKHdpbiwgJ3wnLCAnfCcsICctJywgJy0nLCAnKycsICcrJywgJysnLCAnKycpOzwvUFJFCis+PC9QCis+PFAKKz5pdCBwcm9kdWNlcyBzb21lIHRoaW5nIGxpa2UgPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICArLS0tLS0tLS0tLS0tKwogICAgIHwgICAgICAgICAgICB8CiAgICAgfCAgICAgICAgICAgIHwKICAgICB8ICAgICAgICAgICAgfAogICAgIHwgICAgICAgICAgICB8CiAgICAgfCAgICAgICAgICAgIHwKICAgICB8ICAgICAgICAgICAgfAotICAgICstLS0tLS0tLS0tLS0rPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJPVEhFUlNUVUZGIiBpZD0iT1RIRVJTVFVGRiI+OS40LiBUaGUKLW90aGVyIHN0dWZmIGluIHRoZSBleGFtcGxlPC9hPjwvaDM+Ci08cD5Zb3UgY2FuIGFsc28gc2VlIGluIHRoZSBhYm92ZSBleGFtcGxlcywgdGhhdCBJIGhhdmUgdXNlZCB0aGUKLXZhcmlhYmxlcyBDT0xTLCBMSU5FUyB3aGljaCBhcmUgaW5pdGlhbGl6ZWQgdG8gdGhlIHNjcmVlbiBzaXplcwotYWZ0ZXIgaW5pdHNjcigpLiBUaGV5IGNhbiBiZSB1c2VmdWwgaW4gZmluZGluZyBzY3JlZW4gZGltZW5zaW9ucwotYW5kIGZpbmRpbmcgdGhlIGNlbnRlciBjby1vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuIGFzIGFib3ZlLiBUaGUKLWZ1bmN0aW9uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmdldGNoKCk8L3Zhcj4gYXMgdXN1YWwgZ2V0cyB0aGUga2V5Ci1mcm9tIGtleWJvYXJkIGFuZCBhY2NvcmRpbmcgdG8gdGhlIGtleSBpdCBkb2VzIHRoZSBjb3JyZXNwb25kaW5nCi13b3JrLiBUaGlzIHR5cGUgb2Ygc3dpdGNoLSBjYXNlIGlzIHZlcnkgY29tbW9uIGluIGFueSBHVUkgYmFzZWQKLXByb2dyYW1zLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iT1RIRVJCT1JERVJGVU5DUyIgaWQ9Ci0iT1RIRVJCT1JERVJGVU5DUyI+OS41LiBPdGhlciBCb3JkZXIgZnVuY3Rpb25zPC9hPjwvaDM+Ci08cD5BYm92ZSBwcm9ncmFtIGlzIGdyb3NzbHkgaW5lZmZpY2llbnQgaW4gdGhhdCB3aXRoIGVhY2ggcHJlc3Mgb2YKLWEga2V5LCBhIHdpbmRvdyBpcyBkZXN0cm95ZWQgYW5kIGFub3RoZXIgaXMgY3JlYXRlZC4gU28gbGV0J3Mgd3JpdGUKLWEgbW9yZSBlZmZpY2llbnQgcHJvZ3JhbSB3aGljaCB1c2VzIG90aGVyIGJvcmRlciByZWxhdGVkCi1mdW5jdGlvbnMuPC9wPgotPHA+VGhlIGZvbGxvd2luZyBwcm9ncmFtIHVzZXMgPHZhciBjbGFzcz0iTElURVJBTCI+bXZobGluZSgpPC92YXI+Ci1hbmQgPHZhciBjbGFzcz0iTElURVJBTCI+bXZ2bGluZSgpPC92YXI+IHRvIGFjaGlldmUgc2ltaWxhciBlZmZlY3QuCi1UaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBzaW1wbGUuIFRoZXkgY3JlYXRlIGEgaG9yaXpvbnRhbCBvcgotdmVydGljYWwgbGluZSBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aCBhdCB0aGUgc3BlY2lmaWVkCi1wb3NpdGlvbi48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCT1RCTyIgaWQ9IkJPVEJPIj48L2E+Ci08cD48Yj5FeGFtcGxlIDguIE1vcmUgYm9yZGVyIGZ1bmN0aW9uczwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7CisgICAgKy0tLS0tLS0tLS0tLSs8L1BSRQorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iT1RIRVJTVFVGRiIKKz45LjQuIFRoZSBvdGhlciBzdHVmZiBpbiB0aGUgZXhhbXBsZTwvQQorPjwvSDMKKz48UAorPllvdSBjYW4gYWxzbyBzZWUgaW4gdGhlIGFib3ZlIGV4YW1wbGVzLCB0aGF0IEkgaGF2ZSB1c2VkIHRoZSB2YXJpYWJsZXMgQ09MUywKK0xJTkVTIHdoaWNoIGFyZSBpbml0aWFsaXplZCB0byB0aGUgc2NyZWVuIHNpemVzIGFmdGVyIGluaXRzY3IoKS4gVGhleSBjYW4gYmUKK3VzZWZ1bCBpbiBmaW5kaW5nIHNjcmVlbiBkaW1lbnNpb25zIGFuZCBmaW5kaW5nIHRoZSBjZW50ZXIgY28tb3JkaW5hdGUgb2YgdGhlCitzY3JlZW4gYXMgYWJvdmUuIFRoZSBmdW5jdGlvbiA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldGNoKCk8L1RUCis+IGFzIHVzdWFsCitnZXRzIHRoZSBrZXkgZnJvbSBrZXlib2FyZCBhbmQgYWNjb3JkaW5nIHRvIHRoZSBrZXkgaXQgZG9lcyB0aGUgY29ycmVzcG9uZGluZword29yay4gVGhpcyB0eXBlIG9mIHN3aXRjaC0gY2FzZSBpcyB2ZXJ5IGNvbW1vbiBpbiBhbnkgR1VJIGJhc2VkIHByb2dyYW1zLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iT1RIRVJCT1JERVJGVU5DUyIKKz45LjUuIE90aGVyIEJvcmRlciBmdW5jdGlvbnM8L0EKKz48L0gzCis+PFAKKz5BYm92ZSBwcm9ncmFtIGlzIGdyb3NzbHkgaW5lZmZpY2llbnQgaW4gdGhhdCB3aXRoIGVhY2ggcHJlc3Mgb2YgYSBrZXksIGEgd2luZG93CitpcyBkZXN0cm95ZWQgYW5kIGFub3RoZXIgaXMgY3JlYXRlZC4gU28gbGV0J3Mgd3JpdGUgYSBtb3JlIGVmZmljaWVudCBwcm9ncmFtCit3aGljaCB1c2VzIG90aGVyIGJvcmRlciByZWxhdGVkIGZ1bmN0aW9ucy48L1AKKz48UAorPlRoZSBmb2xsb3dpbmcgcHJvZ3JhbSB1c2VzIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bXZobGluZSgpPC9UVAorPiBhbmQKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bXZ2bGluZSgpPC9UVAorPiB0byBhY2hpZXZlIHNpbWlsYXIgZWZmZWN0LiBUaGVzZSB0d28KK2Z1bmN0aW9ucyBhcmUgc2ltcGxlLiBUaGV5IGNyZWF0ZSBhIGhvcml6b250YWwgb3IgdmVydGljYWwgbGluZSBvZiB0aGUgc3BlY2lmaWVkCitsZW5ndGggYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQk9UQk8iCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgOC4gIE1vcmUgYm9yZGVyIGZ1bmN0aW9uczwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsKIAogdHlwZWRlZiBzdHJ1Y3QgX3dpbl9ib3JkZXJfc3RydWN0IHsKLSAgICAgICAgY2h0eXBlICBscywgcnMsIHRzLCBicywgCi0gICAgICAgICAgICAgICAgdGwsIHRyLCBibCwgYnI7CisJY2h0eXBlIAlscywgcnMsIHRzLCBicywgCisJIAl0bCwgdHIsIGJsLCBicjsKIH1XSU5fQk9SREVSOwogCiB0eXBlZGVmIHN0cnVjdCBfV0lOX3N0cnVjdCB7CiAKLSAgICAgICAgaW50IHN0YXJ0eCwgc3RhcnR5OwotICAgICAgICBpbnQgaGVpZ2h0LCB3aWR0aDsKLSAgICAgICAgV0lOX0JPUkRFUiBib3JkZXI7CisJaW50IHN0YXJ0eCwgc3RhcnR5OworCWludCBoZWlnaHQsIHdpZHRoOworCVdJTl9CT1JERVIgYm9yZGVyOwogfVdJTjsKIAogdm9pZCBpbml0X3dpbl9wYXJhbXMoV0lOICpwX3dpbik7CkBAIC0xOTI1LDMxOSArMzE5NSwzODAgQEAKIHZvaWQgY3JlYXRlX2JveChXSU4gKndpbiwgYm9vbCBmbGFnKTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsgICAgICAgV0lOIHdpbjsKLSAgICAgICAgaW50IGNoOworewlXSU4gd2luOworCWludCBjaDsKIAotICAgICAgICBpbml0c2NyKCk7ICAgICAgICAgICAgICAgICAgICAgIC8qIFN0YXJ0IGN1cnNlcyBtb2RlICAgICAgICAgICAgKi8KLSAgICAgICAgc3RhcnRfY29sb3IoKTsgICAgICAgICAgICAgICAgICAvKiBTdGFydCB0aGUgY29sb3IgZnVuY3Rpb25hbGl0eSAqLwotICAgICAgICBjYnJlYWsoKTsgICAgICAgICAgICAgICAgICAgICAgIC8qIExpbmUgYnVmZmVyaW5nIGRpc2FibGVkLCBQYXNzIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZXZlcnR5IHRoaW5nIHRvIG1lICAgICAgICAgICAqLwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsgICAgICAgICAgIC8qIEkgbmVlZCB0aGF0IG5pZnR5IEYxICAgICAgICAgKi8KLSAgICAgICAgbm9lY2hvKCk7Ci0gICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9DWUFOLCBDT0xPUl9CTEFDSyk7CisJaW5pdHNjcigpOwkJCS8qIFN0YXJ0IGN1cnNlcyBtb2RlIAkJKi8KKwlzdGFydF9jb2xvcigpOwkJCS8qIFN0YXJ0IHRoZSBjb2xvciBmdW5jdGlvbmFsaXR5ICovCisJY2JyZWFrKCk7CQkJLyogTGluZSBidWZmZXJpbmcgZGlzYWJsZWQsIFBhc3Mgb24KKwkJCQkJICogZXZlcnR5IHRoaW5nIHRvIG1lIAkJKi8KKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsJCS8qIEkgbmVlZCB0aGF0IG5pZnR5IEYxIAkqLworCW5vZWNobygpOworCWluaXRfcGFpcigxLCBDT0xPUl9DWUFOLCBDT0xPUl9CTEFDSyk7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgd2luZG93IHBhcmFtZXRlcnMgKi8KLSAgICAgICAgaW5pdF93aW5fcGFyYW1zKCZhbXA7d2luKTsKLSAgICAgICAgcHJpbnRfd2luX3BhcmFtcygmYW1wO3dpbik7CisJLyogSW5pdGlhbGl6ZSB0aGUgd2luZG93IHBhcmFtZXRlcnMgKi8KKwlpbml0X3dpbl9wYXJhbXMoJiMzODt3aW4pOworCXByaW50X3dpbl9wYXJhbXMoJiMzODt3aW4pOwogCi0gICAgICAgIGF0dHJvbihDT0xPUl9QQUlSKDEpKTsKLSAgICAgICAgcHJpbnR3KCJQcmVzcyBGMSB0byBleGl0Iik7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgYXR0cm9mZihDT0xPUl9QQUlSKDEpKTsKLSAgICAgICAgCi0gICAgICAgIGNyZWF0ZV9ib3goJmFtcDt3aW4sIFRSVUUpOwotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9MRUZUOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYm94KCZhbXA7d2luLCBGQUxTRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2luLnN0YXJ0eDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2JveCgmYW1wO3dpbiwgVFJVRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfUklHSFQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9ib3goJmFtcDt3aW4sIEZBTFNFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyt3aW4uc3RhcnR4OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYm94KCZhbXA7d2luLCBUUlVFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2JveCgmYW1wO3dpbiwgRkFMU0UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpbi5zdGFydHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9ib3goJmFtcDt3aW4sIFRSVUUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX0RPV046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9ib3goJmFtcDt3aW4sIEZBTFNFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyt3aW4uc3RhcnR5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYm94KCZhbXA7d2luLCBUUlVFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZW5kd2luKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIDA7CisJYXR0cm9uKENPTE9SX1BBSVIoMSkpOworCXByaW50dygiUHJlc3MgRjEgdG8gZXhpdCIpOworCXJlZnJlc2goKTsKKwlhdHRyb2ZmKENPTE9SX1BBSVIoMSkpOworCQorCWNyZWF0ZV9ib3goJiMzODt3aW4sIFRSVUUpOworCXdoaWxlKChjaCA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsJc3dpdGNoKGNoKQorCQl7CWNhc2UgS0VZX0xFRlQ6CisJCQkJY3JlYXRlX2JveCgmIzM4O3dpbiwgRkFMU0UpOworCQkJCS0td2luLnN0YXJ0eDsKKwkJCQljcmVhdGVfYm94KCYjMzg7d2luLCBUUlVFKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1JJR0hUOgorCQkJCWNyZWF0ZV9ib3goJiMzODt3aW4sIEZBTFNFKTsKKwkJCQkrK3dpbi5zdGFydHg7CisJCQkJY3JlYXRlX2JveCgmIzM4O3dpbiwgVFJVRSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9VUDoKKwkJCQljcmVhdGVfYm94KCYjMzg7d2luLCBGQUxTRSk7CisJCQkJLS13aW4uc3RhcnR5OworCQkJCWNyZWF0ZV9ib3goJiMzODt3aW4sIFRSVUUpOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfRE9XTjoKKwkJCQljcmVhdGVfYm94KCYjMzg7d2luLCBGQUxTRSk7CisJCQkJKyt3aW4uc3RhcnR5OworCQkJCWNyZWF0ZV9ib3goJiMzODt3aW4sIFRSVUUpOworCQkJCWJyZWFrOwkKKwkJfQorCX0KKwllbmR3aW4oKTsJCQkvKiBFbmQgY3Vyc2VzIG1vZGUJCSAgKi8KKwlyZXR1cm4gMDsKIH0KIHZvaWQgaW5pdF93aW5fcGFyYW1zKFdJTiAqcF93aW4pCiB7Ci0gICAgICAgIHBfd2luLSZndDtoZWlnaHQgPSAzOwotICAgICAgICBwX3dpbi0mZ3Q7d2lkdGggPSAxMDsKLSAgICAgICAgcF93aW4tJmd0O3N0YXJ0eSA9IChMSU5FUyAtIHBfd2luLSZndDtoZWlnaHQpLzI7ICAgICAgCi0gICAgICAgIHBfd2luLSZndDtzdGFydHggPSAoQ09MUyAtIHBfd2luLSZndDt3aWR0aCkvMjsKKwlwX3dpbi0mIzYyO2hlaWdodCA9IDM7CisJcF93aW4tJiM2Mjt3aWR0aCA9IDEwOworCXBfd2luLSYjNjI7c3RhcnR5ID0gKExJTkVTIC0gcF93aW4tJiM2MjtoZWlnaHQpLzI7CQorCXBfd2luLSYjNjI7c3RhcnR4ID0gKENPTFMgLSBwX3dpbi0mIzYyO3dpZHRoKS8yOwogCi0gICAgICAgIHBfd2luLSZndDtib3JkZXIubHMgPSAnfCc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIucnMgPSAnfCc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIudHMgPSAnLSc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIuYnMgPSAnLSc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIudGwgPSAnKyc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIudHIgPSAnKyc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIuYmwgPSAnKyc7Ci0gICAgICAgIHBfd2luLSZndDtib3JkZXIuYnIgPSAnKyc7CisJcF93aW4tJiM2Mjtib3JkZXIubHMgPSAnfCc7CisJcF93aW4tJiM2Mjtib3JkZXIucnMgPSAnfCc7CisJcF93aW4tJiM2Mjtib3JkZXIudHMgPSAnLSc7CisJcF93aW4tJiM2Mjtib3JkZXIuYnMgPSAnLSc7CisJcF93aW4tJiM2Mjtib3JkZXIudGwgPSAnKyc7CisJcF93aW4tJiM2Mjtib3JkZXIudHIgPSAnKyc7CisJcF93aW4tJiM2Mjtib3JkZXIuYmwgPSAnKyc7CisJcF93aW4tJiM2Mjtib3JkZXIuYnIgPSAnKyc7CiAKIH0KIHZvaWQgcHJpbnRfd2luX3BhcmFtcyhXSU4gKnBfd2luKQogewogI2lmZGVmIF9ERUJVRwotICAgICAgICBtdnByaW50dygyNSwgMCwgIiVkICVkICVkICVkIiwgcF93aW4tJmd0O3N0YXJ0eCwgcF93aW4tJmd0O3N0YXJ0eSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfd2luLSZndDt3aWR0aCwgcF93aW4tJmd0O2hlaWdodCk7Ci0gICAgICAgIHJlZnJlc2goKTsKKwltdnByaW50dygyNSwgMCwgIiVkICVkICVkICVkIiwgcF93aW4tJiM2MjtzdGFydHgsIHBfd2luLSYjNjI7c3RhcnR5LCAKKwkJCQlwX3dpbi0mIzYyO3dpZHRoLCBwX3dpbi0mIzYyO2hlaWdodCk7CisJcmVmcmVzaCgpOwogI2VuZGlmCiB9CiB2b2lkIGNyZWF0ZV9ib3goV0lOICpwX3dpbiwgYm9vbCBmbGFnKQoteyAgICAgICBpbnQgaSwgajsKLSAgICAgICAgaW50IHgsIHksIHcsIGg7Cit7CWludCBpLCBqOworCWludCB4LCB5LCB3LCBoOwogCi0gICAgICAgIHggPSBwX3dpbi0mZ3Q7c3RhcnR4OwotICAgICAgICB5ID0gcF93aW4tJmd0O3N0YXJ0eTsKLSAgICAgICAgdyA9IHBfd2luLSZndDt3aWR0aDsKLSAgICAgICAgaCA9IHBfd2luLSZndDtoZWlnaHQ7CisJeCA9IHBfd2luLSYjNjI7c3RhcnR4OworCXkgPSBwX3dpbi0mIzYyO3N0YXJ0eTsKKwl3ID0gcF93aW4tJiM2Mjt3aWR0aDsKKwloID0gcF93aW4tJiM2MjtoZWlnaHQ7CiAKLSAgICAgICAgaWYoZmxhZyA9PSBUUlVFKQotICAgICAgICB7ICAgICAgIG12YWRkY2goeSwgeCwgcF93aW4tJmd0O2JvcmRlci50bCk7Ci0gICAgICAgICAgICAgICAgbXZhZGRjaCh5LCB4ICsgdywgcF93aW4tJmd0O2JvcmRlci50cik7Ci0gICAgICAgICAgICAgICAgbXZhZGRjaCh5ICsgaCwgeCwgcF93aW4tJmd0O2JvcmRlci5ibCk7Ci0gICAgICAgICAgICAgICAgbXZhZGRjaCh5ICsgaCwgeCArIHcsIHBfd2luLSZndDtib3JkZXIuYnIpOwotICAgICAgICAgICAgICAgIG12aGxpbmUoeSwgeCArIDEsIHBfd2luLSZndDtib3JkZXIudHMsIHcgLSAxKTsKLSAgICAgICAgICAgICAgICBtdmhsaW5lKHkgKyBoLCB4ICsgMSwgcF93aW4tJmd0O2JvcmRlci5icywgdyAtIDEpOwotICAgICAgICAgICAgICAgIG12dmxpbmUoeSArIDEsIHgsIHBfd2luLSZndDtib3JkZXIubHMsIGggLSAxKTsKLSAgICAgICAgICAgICAgICBtdnZsaW5lKHkgKyAxLCB4ICsgdywgcF93aW4tJmd0O2JvcmRlci5ycywgaCAtIDEpOworCWlmKGZsYWcgPT0gVFJVRSkKKwl7CW12YWRkY2goeSwgeCwgcF93aW4tJiM2Mjtib3JkZXIudGwpOworCQltdmFkZGNoKHksIHggKyB3LCBwX3dpbi0mIzYyO2JvcmRlci50cik7CisJCW12YWRkY2goeSArIGgsIHgsIHBfd2luLSYjNjI7Ym9yZGVyLmJsKTsKKwkJbXZhZGRjaCh5ICsgaCwgeCArIHcsIHBfd2luLSYjNjI7Ym9yZGVyLmJyKTsKKwkJbXZobGluZSh5LCB4ICsgMSwgcF93aW4tJiM2Mjtib3JkZXIudHMsIHcgLSAxKTsKKwkJbXZobGluZSh5ICsgaCwgeCArIDEsIHBfd2luLSYjNjI7Ym9yZGVyLmJzLCB3IC0gMSk7CisJCW12dmxpbmUoeSArIDEsIHgsIHBfd2luLSYjNjI7Ym9yZGVyLmxzLCBoIC0gMSk7CisJCW12dmxpbmUoeSArIDEsIHggKyB3LCBwX3dpbi0mIzYyO2JvcmRlci5ycywgaCAtIDEpOwogCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvcihqID0geTsgaiAmbHQ7PSB5ICsgaDsgKytqKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSB4OyBpICZsdDs9IHggKyB3OyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12YWRkY2goaiwgaSwgJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHJlZnJlc2goKTsKKwl9CisJZWxzZQorCQlmb3IoaiA9IHk7IGogJiM2MDs9IHkgKyBoOyArK2opCisJCQlmb3IoaSA9IHg7IGkgJiM2MDs9IHggKyB3OyArK2kpCisJCQkJbXZhZGRjaChqLCBpLCAnICcpOworCQkJCQorCXJlZnJlc2goKTsKIAotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJDT0xPUiIgaWQ9IkNPTE9SIj4xMC4gQ29sb3JzPC9hPjwvaDI+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDT0xPUkJBU0lDUyIgaWQ9IkNPTE9SQkFTSUNTIj4xMC4xLiBUaGUKLWJhc2ljczwvYT48L2gzPgotPHA+TGlmZSBzZWVtcyBkdWxsIHdpdGggbm8gY29sb3JzLiBDdXJzZXMgaGFzIGEgbmljZSBtZWNoYW5pc20gdG8KLWhhbmRsZSBjb2xvcnMuIExldCdzIGdldCBpbnRvIHRoZSB0aGljayBvZiB0aGUgdGhpbmdzIHdpdGggYSBzbWFsbAotcHJvZ3JhbS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCU0lDTyIgaWQ9IkJTSUNPIj48L2E+Ci08cD48Yj5FeGFtcGxlIDkuIEEgU2ltcGxlIENvbG9yIGV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iQ09MT1IiCis+MTAuIENvbG9yczwvQQorPjwvSDIKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkNPTE9SQkFTSUNTIgorPjEwLjEuIFRoZSBiYXNpY3M8L0EKKz48L0gzCis+PFAKKz5MaWZlIHNlZW1zIGR1bGwgd2l0aCBubyBjb2xvcnMuIEN1cnNlcyBoYXMgYSBuaWNlIG1lY2hhbmlzbSB0byBoYW5kbGUgY29sb3JzLgorTGV0J3MgZ2V0IGludG8gdGhlIHRoaWNrIG9mIHRoZSB0aGluZ3Mgd2l0aCBhIHNtYWxsIHByb2dyYW0uPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkJTSUNPIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDkuICBBIFNpbXBsZSBDb2xvciBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsKIAogdm9pZCBwcmludF9pbl9taWRkbGUoV0lORE9XICp3aW4sIGludCBzdGFydHksIGludCBzdGFydHgsIGludCB3aWR0aCwgY2hhciAqc3RyaW5nKTsKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi17ICAgICAgIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAqLwotICAgICAgICBpZihoYXNfY29sb3JzKCkgPT0gRkFMU0UpCi0gICAgICAgIHsgICAgICAgZW5kd2luKCk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJZb3VyIHRlcm1pbmFsIGRvZXMgbm90IHN1cHBvcnQgY29sb3JcbiIpOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhcnRfY29sb3IoKTsgICAgICAgICAgICAgICAgICAvKiBTdGFydCBjb2xvciAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9SRUQsIENPTE9SX0JMQUNLKTsKK3sJaW5pdHNjcigpOwkJCS8qIFN0YXJ0IGN1cnNlcyBtb2RlIAkJKi8KKwlpZihoYXNfY29sb3JzKCkgPT0gRkFMU0UpCisJewllbmR3aW4oKTsKKwkJcHJpbnRmKCJZb3VyIHRlcm1pbmFsIGRvZXMgbm90IHN1cHBvcnQgY29sb3JcbiIpOworCQlleGl0KDEpOworCX0KKwlzdGFydF9jb2xvcigpOwkJCS8qIFN0YXJ0IGNvbG9yIAkJCSovCisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIGF0dHJvbihDT0xPUl9QQUlSKDEpKTsKLSAgICAgICAgcHJpbnRfaW5fbWlkZGxlKHN0ZHNjciwgTElORVMgLyAyLCAwLCAwLCAiVmlvbGEgISEhIEluIGNvbG9yIC4uLiIpOwotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoMSkpOwotICAgICAgICBnZXRjaCgpOwotICAgICAgICBlbmR3aW4oKTsKKwlhdHRyb24oQ09MT1JfUEFJUigxKSk7CisJcHJpbnRfaW5fbWlkZGxlKHN0ZHNjciwgTElORVMgLyAyLCAwLCAwLCAiVmlvbGEgISEhIEluIGNvbG9yIC4uLiIpOworCWF0dHJvZmYoQ09MT1JfUEFJUigxKSk7CisgICAgCWdldGNoKCk7CisJZW5kd2luKCk7CiB9CiB2b2lkIHByaW50X2luX21pZGRsZShXSU5ET1cgKndpbiwgaW50IHN0YXJ0eSwgaW50IHN0YXJ0eCwgaW50IHdpZHRoLCBjaGFyICpzdHJpbmcpCi17ICAgICAgIGludCBsZW5ndGgsIHgsIHk7Ci0gICAgICAgIGZsb2F0IHRlbXA7Cit7CWludCBsZW5ndGgsIHgsIHk7CisJZmxvYXQgdGVtcDsKIAotICAgICAgICBpZih3aW4gPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB3aW4gPSBzdGRzY3I7Ci0gICAgICAgIGdldHl4KHdpbiwgeSwgeCk7Ci0gICAgICAgIGlmKHN0YXJ0eCAhPSAwKQotICAgICAgICAgICAgICAgIHggPSBzdGFydHg7Ci0gICAgICAgIGlmKHN0YXJ0eSAhPSAwKQotICAgICAgICAgICAgICAgIHkgPSBzdGFydHk7Ci0gICAgICAgIGlmKHdpZHRoID09IDApCi0gICAgICAgICAgICAgICAgd2lkdGggPSA4MDsKKwlpZih3aW4gPT0gTlVMTCkKKwkJd2luID0gc3Rkc2NyOworCWdldHl4KHdpbiwgeSwgeCk7CisJaWYoc3RhcnR4ICE9IDApCisJCXggPSBzdGFydHg7CisJaWYoc3RhcnR5ICE9IDApCisJCXkgPSBzdGFydHk7CisJaWYod2lkdGggPT0gMCkKKwkJd2lkdGggPSA4MDsKIAotICAgICAgICBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKLSAgICAgICAgdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7Ci0gICAgICAgIHggPSBzdGFydHggKyAoaW50KXRlbXA7Ci0gICAgICAgIG12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7Ci0gICAgICAgIHJlZnJlc2goKTsKKwlsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKKwl0ZW1wID0gKHdpZHRoIC0gbGVuZ3RoKS8gMjsKKwl4ID0gc3RhcnR4ICsgKGludCl0ZW1wOworCW12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7CisJcmVmcmVzaCgpOwogfQotPC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPHA+QXMgeW91IGNhbiBzZWUsIHRvIHN0YXJ0IHVzaW5nIGNvbG9yLCB5b3Ugc2hvdWxkIGZpcnN0IGNhbGwgdGhlCi1mdW5jdGlvbiA8dmFyIGNsYXNzPSJMSVRFUkFMIj5zdGFydF9jb2xvcigpPC92YXI+LiBBZnRlciB0aGF0LCB5b3UKLWNhbiB1c2UgY29sb3IgY2FwYWJpbGl0aWVzIG9mIHlvdXIgdGVybWluYWxzIHVzaW5nIHZhcmlvdXMKLWZ1bmN0aW9ucy4gVG8gZmluZCBvdXQgd2hldGhlciBhIHRlcm1pbmFsIGhhcyBjb2xvciBjYXBhYmlsaXRpZXMgb3IKLW5vdCwgeW91IGNhbiB1c2UgPHZhciBjbGFzcz0iTElURVJBTCI+aGFzX2NvbG9ycygpPC92YXI+IGZ1bmN0aW9uLAotd2hpY2ggcmV0dXJucyBGQUxTRSBpZiB0aGUgdGVybWluYWwgZG9lcyBub3Qgc3VwcG9ydCBjb2xvci48L3A+Ci08cD5DdXJzZXMgaW5pdGlhbGl6ZXMgYWxsIHRoZSBjb2xvcnMgc3VwcG9ydGVkIGJ5IHRlcm1pbmFsIHdoZW4KLXN0YXJ0X2NvbG9yKCkgaXMgY2FsbGVkLiBUaGVzZSBjYW4gYmUgYWNjZXNzZWQgYnkgdGhlIGRlZmluZQotY29uc3RhbnRzIGxpa2UgPHZhciBjbGFzcz0iTElURVJBTCI+Q09MT1JfQkxBQ0s8L3Zhcj4gZXRjLiBOb3cgdG8KLWFjdHVhbGx5IHN0YXJ0IHVzaW5nIGNvbG9ycywgeW91IGhhdmUgdG8gZGVmaW5lIHBhaXJzLiBDb2xvcnMgYXJlCi1hbHdheXMgdXNlZCBpbiBwYWlycy4gVGhhdCBtZWFucyB5b3UgaGF2ZSB0byB1c2UgdGhlIGZ1bmN0aW9uCi08dmFyIGNsYXNzPSJMSVRFUkFMIj5pbml0X3BhaXIoKTwvdmFyPiB0byBkZWZpbmUgdGhlIGZvcmVncm91bmQgYW5kCi1iYWNrZ3JvdW5kIGZvciB0aGUgcGFpciBudW1iZXIgeW91IGdpdmUuIEFmdGVyIHRoYXQgdGhhdCBwYWlyCi1udW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBub3JtYWwgYXR0cmlidXRlIHdpdGggPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5DT0xPUl9QQUlSKCk8L3Zhcj5mdW5jdGlvbi4gVGhpcyBtYXkgc2VlbSB0byBiZQotY3VtYmVyc29tZSBhdCBmaXJzdC4gQnV0IHRoaXMgZWxlZ2FudCBzb2x1dGlvbiBhbGxvd3MgdXMgdG8gbWFuYWdlCi1jb2xvciBwYWlycyB2ZXJ5IGVhc2lseS4gVG8gYXBwcmVjaWF0ZSBpdCwgeW91IGhhdmUgdG8gbG9vayBpbnRvCi10aGUgdGhlIHNvdXJjZSBjb2RlIG9mICJkaWFsb2ciLCBhIHV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgZGlhbG9nCi1ib3hlcyBmcm9tIHNoZWxsIHNjcmlwdHMuIFRoZSBkZXZlbG9wZXJzIGhhdmUgZGVmaW5lZCBmb3JlZ3JvdW5kCi1hbmQgYmFja2dyb3VuZCBjb21iaW5hdGlvbnMgZm9yIGFsbCB0aGUgY29sb3JzIHRoZXkgbWlnaHQgbmVlZCBhbmQKLWluaXRpYWxpemVkIGF0IHRoZSBiZWdpbm5pbmcuIFRoaXMgbWFrZXMgaXQgdmVyeSBlYXN5IHRvIHNldAotYXR0cmlidXRlcyBqdXN0IGJ5IGFjY2Vzc2luZyBhIHBhaXIgd2hpY2ggd2UgYWxyZWFkeSBoYXZlIGRlZmluZWQKLWFzIGEgY29uc3RhbnQuPC9wPgotPHA+VGhlIGZvbGxvd2luZyBjb2xvcnMgYXJlIGRlZmluZWQgaW4gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5jdXJzZXMuaDwvdmFyPi4gWW91IGNhbiB1c2UgdGhlc2UgYXMgcGFyYW1ldGVycyBmb3IKLXZhcmlvdXMgY29sb3IgZnVuY3Rpb25zLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgICAgIENPTE9SX0JMQUNLICAgMAorPC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+QXMgeW91IGNhbiBzZWUsIHRvIHN0YXJ0IHVzaW5nIGNvbG9yLCB5b3Ugc2hvdWxkIGZpcnN0IGNhbGwgdGhlIGZ1bmN0aW9uCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPiBzdGFydF9jb2xvcigpPC9UVAorPi4gQWZ0ZXIgdGhhdCwgeW91IGNhbiB1c2UgY29sb3IKK2NhcGFiaWxpdGllcyBvZiB5b3VyIHRlcm1pbmFscyB1c2luZyB2YXJpb3VzIGZ1bmN0aW9ucy4gVG8gZmluZCBvdXQgd2hldGhlciBhCit0ZXJtaW5hbCBoYXMgY29sb3IgY2FwYWJpbGl0aWVzIG9yIG5vdCwgeW91IGNhbiB1c2UKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+aGFzX2NvbG9ycygpPC9UVAorPiBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBGQUxTRSBpZgordGhlIHRlcm1pbmFsIGRvZXMgbm90IHN1cHBvcnQgY29sb3IuIDwvUAorPjxQCis+Q3Vyc2VzIGluaXRpYWxpemVzIGFsbCB0aGUgY29sb3JzIHN1cHBvcnRlZCBieSB0ZXJtaW5hbCB3aGVuIHN0YXJ0X2NvbG9yKCkgaXMKK2NhbGxlZC4gVGhlc2UgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBkZWZpbmUgY29uc3RhbnRzIGxpa2UKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Q09MT1JfQkxBQ0sgPC9UVAorPiBldGMuIE5vdyB0byBhY3R1YWxseSBzdGFydCB1c2luZworY29sb3JzLCB5b3UgaGF2ZSB0byBkZWZpbmUgcGFpcnMuIENvbG9ycyBhcmUgYWx3YXlzIHVzZWQgaW4gcGFpcnMuIFRoYXQgbWVhbnMKK3lvdSBoYXZlIHRvIHVzZSB0aGUgZnVuY3Rpb24gPFRUCitDTEFTUz0iTElURVJBTCIKKz5pbml0X3BhaXIoKSA8L1RUCis+IHRvCitkZWZpbmUgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgZm9yIHRoZSBwYWlyIG51bWJlciB5b3UgZ2l2ZS4gIEFmdGVyIHRoYXQKK3RoYXQgcGFpciBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBub3JtYWwgYXR0cmlidXRlIHdpdGggPFRUCitDTEFTUz0iTElURVJBTCIKKz5DT0xPUl9QQUlSKCk8L1RUCis+ZnVuY3Rpb24uIFRoaXMgbWF5IHNlZW0gdG8gYmUgY3VtYmVyc29tZSBhdCBmaXJzdC4KK0J1dCB0aGlzIGVsZWdhbnQgc29sdXRpb24gYWxsb3dzIHVzIHRvIG1hbmFnZSBjb2xvciBwYWlycyB2ZXJ5IGVhc2lseS4gVG8KK2FwcHJlY2lhdGUgaXQsIHlvdSBoYXZlIHRvIGxvb2sgaW50byB0aGUgdGhlIHNvdXJjZSBjb2RlIG9mICJkaWFsb2ciLCBhIHV0aWxpdHkKK2ZvciBkaXNwbGF5aW5nIGRpYWxvZyBib3hlcyBmcm9tIHNoZWxsIHNjcmlwdHMuIFRoZSBkZXZlbG9wZXJzIGhhdmUgZGVmaW5lZAorZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb21iaW5hdGlvbnMgZm9yIGFsbCB0aGUgY29sb3JzIHRoZXkgbWlnaHQgbmVlZCBhbmQKK2luaXRpYWxpemVkIGF0IHRoZSBiZWdpbm5pbmcuIFRoaXMgbWFrZXMgaXQgdmVyeSBlYXN5IHRvIHNldCBhdHRyaWJ1dGVzIGp1c3QgYnkKK2FjY2Vzc2luZyBhIHBhaXIgd2hpY2ggd2UgYWxyZWFkeSBoYXZlIGRlZmluZWQgYXMgYSBjb25zdGFudC48L1AKKz48UAorPlRoZSBmb2xsb3dpbmcgY29sb3JzIGFyZSBkZWZpbmVkIGluIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y3Vyc2VzLmg8L1RUCis+LgorWW91IGNhbiB1c2UgdGhlc2UgYXMgcGFyYW1ldGVycyBmb3IgdmFyaW91cyBjb2xvciBmdW5jdGlvbnMuCis8UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgICAgICBDT0xPUl9CTEFDSyAgIDAKICAgICAgICAgQ09MT1JfUkVEICAgICAxCiAgICAgICAgIENPTE9SX0dSRUVOICAgMgogICAgICAgICBDT0xPUl9ZRUxMT1cgIDMKICAgICAgICAgQ09MT1JfQkxVRSAgICA0CiAgICAgICAgIENPTE9SX01BR0VOVEEgNQogICAgICAgICBDT0xPUl9DWUFOICAgIDYKLSAgICAgICAgQ09MT1JfV0hJVEUgICA3PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDSEFOR0VDT0xPUkRFRlMiIGlkPQotIkNIQU5HRUNPTE9SREVGUyI+MTAuMi4gQ2hhbmdpbmcgQ29sb3IgRGVmaW5pdGlvbnM8L2E+PC9oMz4KLTxwPlRoZSBmdW5jdGlvbiA8dmFyIGNsYXNzPSJMSVRFUkFMIj5pbml0X2NvbG9yKCk8L3Zhcj5jYW4gYmUgdXNlZAotdG8gY2hhbmdlIHRoZSByZ2IgdmFsdWVzIGZvciB0aGUgY29sb3JzIGRlZmluZWQgYnkgY3Vyc2VzCi1pbml0aWFsbHkuIFNheSB5b3Ugd2FudGVkIHRvIGxpZ2h0ZW4gdGhlIGludGVuc2l0eSBvZiByZWQgY29sb3IgYnkKLWEgbWludXNjdWxlLiBUaGVuIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gYXM8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIGluaXRfY29sb3IoQ09MT1JfUkVELCA3MDAsIDAsIDApOworICAgICAgICBDT0xPUl9XSElURSAgIDc8L1BSRQorPjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQ0hBTkdFQ09MT1JERUZTIgorPjEwLjIuIENoYW5naW5nIENvbG9yIERlZmluaXRpb25zPC9BCis+PC9IMworPjxQCis+VGhlIGZ1bmN0aW9uIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+aW5pdF9jb2xvcigpPC9UVAorPmNhbiBiZSB1c2VkIHRvIGNoYW5nZQordGhlIHJnYiB2YWx1ZXMgZm9yIHRoZSBjb2xvcnMgZGVmaW5lZCBieSBjdXJzZXMgaW5pdGlhbGx5LiBTYXkgeW91IHdhbnRlZCB0bworbGlnaHRlbiB0aGUgaW50ZW5zaXR5IG9mIHJlZCBjb2xvciBieSBhIG1pbnVzY3VsZS4gVGhlbiB5b3UgY2FuIHVzZSB0aGlzCitmdW5jdGlvbiBhczwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgaW5pdF9jb2xvcihDT0xPUl9SRUQsIDcwMCwgMCwgMCk7CiAgICAgLyogcGFyYW0gMSAgICAgOiBjb2xvciBuYW1lCi0gICAgICogcGFyYW0gMiwgMywgNCA6IHJnYiBjb250ZW50IG1pbiA9IDAsIG1heCA9IDEwMDAgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5JZiB5b3VyIHRlcm1pbmFsIGNhbm5vdCBjaGFuZ2UgdGhlIGNvbG9yIGRlZmluaXRpb25zLCB0aGUKLWZ1bmN0aW9uIHJldHVybnMgRVJSLiBUaGUgZnVuY3Rpb24gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5jYW5fY2hhbmdlX2NvbG9yKCk8L3Zhcj4gY2FuIGJlIHVzZWQgdG8gZmluZCBvdXQgd2hldGhlcgotdGhlIHRlcm1pbmFsIGhhcyB0aGUgY2FwYWJpbGl0eSBvZiBjaGFuZ2luZyBjb2xvciBjb250ZW50IG9yIG5vdC4KLVRoZSByZ2IgY29udGVudCBpcyBzY2FsZWQgZnJvbSAwIHRvIDEwMDAuIEluaXRpYWxseSBSRUQgY29sb3IgaXMKLWRlZmluZWQgd2l0aCBjb250ZW50IDEwMDAociksIDAoZyksIDAoYikuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDT0xPUkNPTlRFTlQiIGlkPSJDT0xPUkNPTlRFTlQiPjEwLjMuCi1Db2xvciBDb250ZW50PC9hPjwvaDM+Ci08cD5UaGUgZnVuY3Rpb25zIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmNvbG9yX2NvbnRlbnQoKTwvdmFyPiBhbmQKLTx2YXIgY2xhc3M9IkxJVEVSQUwiPnBhaXJfY29udGVudCgpPC92YXI+IGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlCi1jb2xvciBjb250ZW50IGFuZCBmb3JlZ3JvdW5kLCBiYWNrZ3JvdW5kIGNvbWJpbmF0aW9uIGZvciB0aGUKLXBhaXIuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9IktFWVMiIGlkPSJLRVlTIj4xMS4gSW50ZXJmYWNpbmcgd2l0aCB0aGUKLWtleSBib2FyZDwvYT48L2gyPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iS0VZU0JBU0lDUyIgaWQ9IktFWVNCQVNJQ1MiPjExLjEuIFRoZQotQmFzaWNzPC9hPjwvaDM+Ci08cD5ObyBHVUkgaXMgY29tcGxldGUgd2l0aG91dCBhIHN0cm9uZyB1c2VyIGludGVyZmFjZSBhbmQgdG8KLWludGVyYWN0IHdpdGggdGhlIHVzZXIsIGEgY3Vyc2VzIHByb2dyYW0gc2hvdWxkIGJlIHNlbnNpdGl2ZSB0byBrZXkKLXByZXNzZXMgb3IgdGhlIG1vdXNlIGFjdGlvbnMgZG9uZSBieSB0aGUgdXNlci4gTGV0J3MgZGVhbCB3aXRoIHRoZQota2V5cyBmaXJzdC48L3A+Ci08cD5BcyB5b3UgaGF2ZSBzZWVuIGluIGFsbW9zdCBhbGwgb2YgdGhlIGFib3ZlIGV4YW1wbGVzLCBpdCdzIHZlcnkKLWVhc3kgdG8gZ2V0IGtleSBpbnB1dCBmcm9tIHRoZSB1c2VyLiBBIHNpbXBsZSB3YXkgb2YgZ2V0dGluZyBrZXkKLXByZXNzZXMgaXMgdG8gdXNlIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmdldGNoKCk8L3Zhcj4gZnVuY3Rpb24uIFRoZQotY2JyZWFrIG1vZGUgc2hvdWxkIGJlIGVuYWJsZWQgdG8gcmVhZCBrZXlzIHdoZW4geW91IGFyZSBpbnRlcmVzdGVkCi1pbiByZWFkaW5nIGluZGl2aWR1YWwga2V5IGhpdHMgcmF0aGVyIHRoYW4gY29tcGxldGUgbGluZXMgb2YgdGV4dAotKHdoaWNoIHVzdWFsbHkgZW5kIHdpdGggYSBjYXJyaWFnZSByZXR1cm4pLiBrZXlwYWQgc2hvdWxkIGJlCi1lbmFibGVkIHRvIGdldCB0aGUgRnVuY3Rpb25zIGtleXMsIGFycm93IGtleXMgZXRjLiBTZWUgdGhlCi1pbml0aWFsaXphdGlvbiBzZWN0aW9uIGZvciBkZXRhaWxzLjwvcD4KLTxwPjx2YXIgY2xhc3M9IkxJVEVSQUwiPmdldGNoKCk8L3Zhcj4gcmV0dXJucyBhbiBpbnRlZ2VyCi1jb3JyZXNwb25kaW5nIHRvIHRoZSBrZXkgcHJlc3NlZC4gSWYgaXQgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCB0aGUKLWludGVnZXIgdmFsdWUgd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRoZSBjaGFyYWN0ZXIuIE90aGVyd2lzZSBpdAotcmV0dXJucyBhIG51bWJlciB3aGljaCBjYW4gYmUgbWF0Y2hlZCB3aXRoIHRoZSBjb25zdGFudHMgZGVmaW5lZCBpbgotPHZhciBjbGFzcz0iTElURVJBTCI+Y3Vyc2VzLmg8L3Zhcj4uIEZvciBleGFtcGxlIGlmIHRoZSB1c2VyCi1wcmVzc2VzIEYxLCB0aGUgaW50ZWdlciByZXR1cm5lZCBpcyAyNjUuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdXNpbmcKLXRoZSBtYWNybyBLRVlfRigpIGRlZmluZWQgaW4gY3Vyc2VzLmguIFRoaXMgbWFrZXMgcmVhZGluZyBrZXlzCi1wb3J0YWJsZSBhbmQgZWFzeSB0byBtYW5hZ2UuPC9wPgotPHA+Rm9yIGV4YW1wbGUsIGlmIHlvdSBjYWxsIGdldGNoKCkgbGlrZSB0aGlzPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICBpbnQgY2g7CisgICAgICogcGFyYW0gMiwgMywgNCA6IHJnYiBjb250ZW50IG1pbiA9IDAsIG1heCA9IDEwMDAgKi88L1BSRQorPjxQCis+SWYgeW91ciB0ZXJtaW5hbCBjYW5ub3QgY2hhbmdlIHRoZSBjb2xvciBkZWZpbml0aW9ucywgdGhlIGZ1bmN0aW9uIHJldHVybnMgRVJSLgorVGhlIGZ1bmN0aW9uIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y2FuX2NoYW5nZV9jb2xvcigpPC9UVAorPiBjYW4gYmUgdXNlZCB0bworZmluZCBvdXQgd2hldGhlciB0aGUgdGVybWluYWwgaGFzIHRoZSBjYXBhYmlsaXR5IG9mIGNoYW5naW5nIGNvbG9yIGNvbnRlbnQgb3IKK25vdC4gIFRoZSByZ2IgY29udGVudCBpcyBzY2FsZWQgZnJvbSAwIHRvIDEwMDAuIEluaXRpYWxseSBSRUQgY29sb3IgaXMgZGVmaW5lZAord2l0aCBjb250ZW50IDEwMDAociksIDAoZyksIDAoYikuIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQ09MT1JDT05URU5UIgorPjEwLjMuIENvbG9yIENvbnRlbnQ8L0EKKz48L0gzCis+PFAKKz5UaGUgZnVuY3Rpb25zIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y29sb3JfY29udGVudCgpPC9UVAorPiBhbmQKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cGFpcl9jb250ZW50KCk8L1RUCis+IGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIGNvbG9yCitjb250ZW50IGFuZCBmb3JlZ3JvdW5kLCBiYWNrZ3JvdW5kIGNvbWJpbmF0aW9uIGZvciB0aGUgcGFpci4gPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IktFWVMiCis+MTEuIEludGVyZmFjaW5nIHdpdGggdGhlIGtleSBib2FyZDwvQQorPjwvSDIKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IktFWVNCQVNJQ1MiCis+MTEuMS4gVGhlIEJhc2ljczwvQQorPjwvSDMKKz48UAorPk5vIEdVSSBpcyBjb21wbGV0ZSB3aXRob3V0IGEgc3Ryb25nIHVzZXIgaW50ZXJmYWNlIGFuZCB0byBpbnRlcmFjdCB3aXRoIHRoZQordXNlciwgYSBjdXJzZXMgcHJvZ3JhbSBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGtleSBwcmVzc2VzIG9yIHRoZSBtb3VzZSBhY3Rpb25zCitkb25lIGJ5IHRoZSB1c2VyLiBMZXQncyBkZWFsIHdpdGggdGhlIGtleXMgZmlyc3QuPC9QCis+PFAKKz5BcyB5b3UgaGF2ZSBzZWVuIGluIGFsbW9zdCBhbGwgb2YgdGhlIGFib3ZlIGV4YW1wbGVzLCBpdCdzIHZlcnkgZWFzeSB0byBnZXQga2V5CitpbnB1dCBmcm9tIHRoZSB1c2VyLiBBIHNpbXBsZSB3YXkgb2YgZ2V0dGluZyBrZXkgcHJlc3NlcyBpcyB0byB1c2UKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Z2V0Y2goKTwvVFQKKz4gZnVuY3Rpb24uIFRoZSBjYnJlYWsgbW9kZSBzaG91bGQgYmUKK2VuYWJsZWQgdG8gcmVhZCBrZXlzIHdoZW4geW91IGFyZSBpbnRlcmVzdGVkIGluIHJlYWRpbmcgaW5kaXZpZHVhbCBrZXkgaGl0cworcmF0aGVyIHRoYW4gY29tcGxldGUgbGluZXMgb2YgdGV4dCAod2hpY2ggdXN1YWxseSBlbmQgd2l0aCBhIGNhcnJpYWdlIHJldHVybikuCitrZXlwYWQgc2hvdWxkIGJlIGVuYWJsZWQgdG8gZ2V0IHRoZSBGdW5jdGlvbnMga2V5cywgYXJyb3cga2V5cyBldGMuICBTZWUgdGhlCitpbml0aWFsaXphdGlvbiBzZWN0aW9uIGZvciBkZXRhaWxzLjwvUAorPjxQCis+PFRUCitDTEFTUz0iTElURVJBTCIKKz5nZXRjaCgpPC9UVAorPiByZXR1cm5zIGFuIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB0aGUKK2tleSBwcmVzc2VkLiBJZiBpdCBpcyBhIG5vcm1hbCBjaGFyYWN0ZXIsIHRoZSBpbnRlZ2VyIHZhbHVlIHdpbGwgYmUgZXF1aXZhbGVudAordG8gdGhlIGNoYXJhY3Rlci4gT3RoZXJ3aXNlIGl0IHJldHVybnMgYSBudW1iZXIgd2hpY2ggY2FuIGJlIG1hdGNoZWQgd2l0aCB0aGUKK2NvbnN0YW50cyBkZWZpbmVkIGluIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y3Vyc2VzLmg8L1RUCis+LiAgRm9yIGV4YW1wbGUgaWYKK3RoZSB1c2VyIHByZXNzZXMgRjEsIHRoZSBpbnRlZ2VyIHJldHVybmVkIGlzIDI2NS4gVGhpcyBjYW4gYmUgY2hlY2tlZCB1c2luZyB0aGUKK21hY3JvIEtFWV9GKCkgZGVmaW5lZCBpbiBjdXJzZXMuaC4gVGhpcyBtYWtlcyByZWFkaW5nIGtleXMgcG9ydGFibGUgYW5kIGVhc3kgdG8KK21hbmFnZS48L1AKKz48UAorPkZvciBleGFtcGxlLCBpZiB5b3UgY2FsbCBnZXRjaCgpIGxpa2UgdGhpczwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgaW50IGNoOwogCi0gICAgY2ggPSBnZXRjaCgpOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPmdldGNoKCkgd2lsbCB3YWl0IGZvciB0aGUgdXNlciB0byBwcmVzcyBhIGtleSwgKHVubGVzcyB5b3UKLXNwZWNpZmllZCBhIHRpbWVvdXQpIGFuZCB3aGVuIHVzZXIgcHJlc3NlcyBhIGtleSwgdGhlIGNvcnJlc3BvbmRpbmcKLWludGVnZXIgaXMgcmV0dXJuZWQuIFRoZW4geW91IGNhbiBjaGVjayB0aGUgdmFsdWUgcmV0dXJuZWQgd2l0aCB0aGUKLWNvbnN0YW50cyBkZWZpbmVkIGluIGN1cnNlcy5oIHRvIG1hdGNoIGFnYWluc3QgdGhlIGtleXMgeW91Ci13YW50LjwvcD4KLTxwPlRoZSBmb2xsb3dpbmcgY29kZSBwaWVjZSB3aWxsIGRvIHRoYXQgam9iLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgaWYoY2ggPT0gS0VZX0xFRlQpCi0gICAgICAgIHByaW50dygiTGVmdCBhcnJvdyBpcyBwcmVzc2VkXG4iKTs8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5MZXQncyB3cml0ZSBhIHNtYWxsIHByb2dyYW0gd2hpY2ggY3JlYXRlcyBhIG1lbnUgd2hpY2ggY2FuIGJlCi1uYXZpZ2F0ZWQgYnkgdXAgYW5kIGRvd24gYXJyb3dzLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iU0lNUExFS0VZRVgiIGlkPSJTSU1QTEVLRVlFWCI+MTEuMi4gQQotU2ltcGxlIEtleSBVc2FnZSBleGFtcGxlPC9hPjwvaDM+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJCU0lLRSIgaWQ9IkJTSUtFIj48L2E+Ci08cD48Yj5FeGFtcGxlIDEwLiBBIFNpbXBsZSBLZXkgVXNhZ2UgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwotI2luY2x1ZGUgJmx0O25jdXJzZXMuaCZndDsKKyAgICBjaCA9IGdldGNoKCk7PC9QUkUKKz48UAorPmdldGNoKCkgd2lsbCB3YWl0IGZvciB0aGUgdXNlciB0byBwcmVzcyBhIGtleSwgKHVubGVzcyB5b3Ugc3BlY2lmaWVkIGEgdGltZW91dCkKK2FuZCB3aGVuIHVzZXIgcHJlc3NlcyBhIGtleSwgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZWdlciBpcyByZXR1cm5lZC4gVGhlbiB5b3UgY2FuCitjaGVjayB0aGUgdmFsdWUgcmV0dXJuZWQgd2l0aCB0aGUgY29uc3RhbnRzIGRlZmluZWQgaW4gY3Vyc2VzLmggdG8gbWF0Y2ggYWdhaW5zdAordGhlIGtleXMgeW91IHdhbnQuPC9QCis+PFAKKz5UaGUgZm9sbG93aW5nIGNvZGUgcGllY2Ugd2lsbCBkbyB0aGF0IGpvYi48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGlmKGNoID09IEtFWV9MRUZUKQorICAgICAgICBwcmludHcoIkxlZnQgYXJyb3cgaXMgcHJlc3NlZFxuIik7PC9QUkUKKz48UAorPkxldCdzIHdyaXRlIGEgc21hbGwgcHJvZ3JhbSB3aGljaCBjcmVhdGVzIGEgbWVudSB3aGljaCBjYW4gYmUgbmF2aWdhdGVkIGJ5IHVwCithbmQgZG93biBhcnJvd3MuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJTSU1QTEVLRVlFWCIKKz4xMS4yLiBBIFNpbXBsZSBLZXkgVXNhZ2UgZXhhbXBsZTwvQQorPjwvSDMKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQlNJS0UiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMTAuICBBIFNpbXBsZSBLZXkgVXNhZ2UgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO3N0ZGlvLmgmIzYyOworI2luY2x1ZGUgJiM2MDtuY3Vyc2VzLmgmIzYyOwogCiAjZGVmaW5lIFdJRFRIIDMwCiAjZGVmaW5lIEhFSUdIVCAxMCAKQEAgLTIyNDYsMTI3ICszNTc3LDEzMiBAQAogaW50IHN0YXJ0eSA9IDA7CiAKIGNoYXIgKmNob2ljZXNbXSA9IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkV4aXQiLAotICAgICAgICAgICAgICAgICAgfTsKKwkJCSJDaG9pY2UgMSIsCisJCQkiQ2hvaWNlIDIiLAorCQkJIkNob2ljZSAzIiwKKwkJCSJDaG9pY2UgNCIsCisJCQkiRXhpdCIsCisJCSAgfTsKIGludCBuX2Nob2ljZXMgPSBzaXplb2YoY2hvaWNlcykgLyBzaXplb2YoY2hhciAqKTsKIHZvaWQgcHJpbnRfbWVudShXSU5ET1cgKm1lbnVfd2luLCBpbnQgaGlnaGxpZ2h0KTsKIAogaW50IG1haW4oKQoteyAgICAgICBXSU5ET1cgKm1lbnVfd2luOwotICAgICAgICBpbnQgaGlnaGxpZ2h0ID0gMTsKLSAgICAgICAgaW50IGNob2ljZSA9IDA7Ci0gICAgICAgIGludCBjOworewlXSU5ET1cgKm1lbnVfd2luOworCWludCBoaWdobGlnaHQgPSAxOworCWludCBjaG9pY2UgPSAwOworCWludCBjOwogCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgbm9lY2hvKCk7Ci0gICAgICAgIGNicmVhaygpOyAgICAgICAvKiBMaW5lIGJ1ZmZlcmluZyBkaXNhYmxlZC4gcGFzcyBvbiBldmVyeXRoaW5nICovCi0gICAgICAgIHN0YXJ0eCA9ICg4MCAtIFdJRFRIKSAvIDI7Ci0gICAgICAgIHN0YXJ0eSA9ICgyNCAtIEhFSUdIVCkgLyAyOwotICAgICAgICAgICAgICAgIAotICAgICAgICBtZW51X3dpbiA9IG5ld3dpbihIRUlHSFQsIFdJRFRILCBzdGFydHksIHN0YXJ0eCk7Ci0gICAgICAgIGtleXBhZChtZW51X3dpbiwgVFJVRSk7Ci0gICAgICAgIG12cHJpbnR3KDAsIDAsICJVc2UgYXJyb3cga2V5cyB0byBnbyB1cCBhbmQgZG93biwgUHJlc3MgZW50ZXIgdG8gc2VsZWN0IGEgY2hvaWNlIik7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgcHJpbnRfbWVudShtZW51X3dpbiwgaGlnaGxpZ2h0KTsKLSAgICAgICAgd2hpbGUoMSkKLSAgICAgICAgeyAgICAgICBjID0gd2dldGNoKG1lbnVfd2luKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2goYykKLSAgICAgICAgICAgICAgICB7ICAgICAgIGNhc2UgS0VZX1VQOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihoaWdobGlnaHQgPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQgPSBuX2Nob2ljZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWhpZ2hsaWdodDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihoaWdobGlnaHQgPT0gbl9jaG9pY2VzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytoaWdobGlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlID0gaGlnaGxpZ2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12cHJpbnR3KDI0LCAwLCAiQ2hhcmN0ZXIgcHJlc3NlZCBpcyA9ICUzZCBIb3BlZnVsbHkgaXQgY2FuIGJlIHByaW50ZWQgYXMgJyVjJyIsIGMsIGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludF9tZW51KG1lbnVfd2luLCBoaWdobGlnaHQpOwotICAgICAgICAgICAgICAgIGlmKGNob2ljZSAhPSAwKSAvKiBVc2VyIGRpZCBhIGNob2ljZSBjb21lIG91dCBvZiB0aGUgaW5maW5pdGUgbG9vcCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gICAgICAgCi0gICAgICAgIG12cHJpbnR3KDIzLCAwLCAiWW91IGNob3NlIGNob2ljZSAlZCB3aXRoIGNob2ljZSBzdHJpbmcgJXNcbiIsIGNob2ljZSwgY2hvaWNlc1tjaG9pY2UgLSAxXSk7Ci0gICAgICAgIGNscnRvZW9sKCk7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgZW5kd2luKCk7Ci0gICAgICAgIHJldHVybiAwOworCWluaXRzY3IoKTsKKwljbGVhcigpOworCW5vZWNobygpOworCWNicmVhaygpOwkvKiBMaW5lIGJ1ZmZlcmluZyBkaXNhYmxlZC4gcGFzcyBvbiBldmVyeXRoaW5nICovCisJc3RhcnR4ID0gKDgwIC0gV0lEVEgpIC8gMjsKKwlzdGFydHkgPSAoMjQgLSBIRUlHSFQpIC8gMjsKKwkJCisJbWVudV93aW4gPSBuZXd3aW4oSEVJR0hULCBXSURUSCwgc3RhcnR5LCBzdGFydHgpOworCWtleXBhZChtZW51X3dpbiwgVFJVRSk7CisJbXZwcmludHcoMCwgMCwgIlVzZSBhcnJvdyBrZXlzIHRvIGdvIHVwIGFuZCBkb3duLCBQcmVzcyBlbnRlciB0byBzZWxlY3QgYSBjaG9pY2UiKTsKKwlyZWZyZXNoKCk7CisJcHJpbnRfbWVudShtZW51X3dpbiwgaGlnaGxpZ2h0KTsKKwl3aGlsZSgxKQorCXsJYyA9IHdnZXRjaChtZW51X3dpbik7CisJCXN3aXRjaChjKQorCQl7CWNhc2UgS0VZX1VQOgorCQkJCWlmKGhpZ2hsaWdodCA9PSAxKQorCQkJCQloaWdobGlnaHQgPSBuX2Nob2ljZXM7CisJCQkJZWxzZQorCQkJCQktLWhpZ2hsaWdodDsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX0RPV046CisJCQkJaWYoaGlnaGxpZ2h0ID09IG5fY2hvaWNlcykKKwkJCQkJaGlnaGxpZ2h0ID0gMTsKKwkJCQllbHNlIAorCQkJCQkrK2hpZ2hsaWdodDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMTA6CisJCQkJY2hvaWNlID0gaGlnaGxpZ2h0OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltdnByaW50dygyNCwgMCwgIkNoYXJjdGVyIHByZXNzZWQgaXMgPSAlM2QgSG9wZWZ1bGx5IGl0IGNhbiBiZSBwcmludGVkIGFzICclYyciLCBjLCBjKTsKKwkJCQlyZWZyZXNoKCk7CisJCQkJYnJlYWs7CisJCX0KKwkJcHJpbnRfbWVudShtZW51X3dpbiwgaGlnaGxpZ2h0KTsKKwkJaWYoY2hvaWNlICE9IDApCS8qIFVzZXIgZGlkIGEgY2hvaWNlIGNvbWUgb3V0IG9mIHRoZSBpbmZpbml0ZSBsb29wICovCisJCQlicmVhazsKKwl9CQorCW12cHJpbnR3KDIzLCAwLCAiWW91IGNob3NlIGNob2ljZSAlZCB3aXRoIGNob2ljZSBzdHJpbmcgJXNcbiIsIGNob2ljZSwgY2hvaWNlc1tjaG9pY2UgLSAxXSk7CisJY2xydG9lb2woKTsKKwlyZWZyZXNoKCk7CisJZW5kd2luKCk7CisJcmV0dXJuIDA7CiB9CiAKIAogdm9pZCBwcmludF9tZW51KFdJTkRPVyAqbWVudV93aW4sIGludCBoaWdobGlnaHQpCiB7Ci0gICAgICAgIGludCB4LCB5LCBpOyAgICAKKwlpbnQgeCwgeSwgaTsJCiAKLSAgICAgICAgeCA9IDI7Ci0gICAgICAgIHkgPSAyOwotICAgICAgICBib3gobWVudV93aW4sIDAsIDApOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuX2Nob2ljZXM7ICsraSkKLSAgICAgICAgeyAgICAgICBpZihoaWdobGlnaHQgPT0gaSArIDEpIC8qIEhpZ2ggbGlnaHQgdGhlIHByZXNlbnQgY2hvaWNlICovCi0gICAgICAgICAgICAgICAgeyAgICAgICB3YXR0cm9uKG1lbnVfd2luLCBBX1JFVkVSU0UpOyAKLSAgICAgICAgICAgICAgICAgICAgICAgIG12d3ByaW50dyhtZW51X3dpbiwgeSwgeCwgIiVzIiwgY2hvaWNlc1tpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YXR0cm9mZihtZW51X3dpbiwgQV9SRVZFUlNFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbXZ3cHJpbnR3KG1lbnVfd2luLCB5LCB4LCAiJXMiLCBjaG9pY2VzW2ldKTsKLSAgICAgICAgICAgICAgICArK3k7Ci0gICAgICAgIH0KLSAgICAgICAgd3JlZnJlc2gobWVudV93aW4pOworCXggPSAyOworCXkgPSAyOworCWJveChtZW51X3dpbiwgMCwgMCk7CisJZm9yKGkgPSAwOyBpICYjNjA7IG5fY2hvaWNlczsgKytpKQorCXsJaWYoaGlnaGxpZ2h0ID09IGkgKyAxKSAvKiBIaWdoIGxpZ2h0IHRoZSBwcmVzZW50IGNob2ljZSAqLworCQl7CXdhdHRyb24obWVudV93aW4sIEFfUkVWRVJTRSk7IAorCQkJbXZ3cHJpbnR3KG1lbnVfd2luLCB5LCB4LCAiJXMiLCBjaG9pY2VzW2ldKTsKKwkJCXdhdHRyb2ZmKG1lbnVfd2luLCBBX1JFVkVSU0UpOworCQl9CisJCWVsc2UKKwkJCW12d3ByaW50dyhtZW51X3dpbiwgeSwgeCwgIiVzIiwgY2hvaWNlc1tpXSk7CisJCSsreTsKKwl9CisJd3JlZnJlc2gobWVudV93aW4pOwogfQotPC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QxIj4KLTxocj4KLTxoMiBjbGFzcz0iU0VDVDEiPjxhIG5hbWU9Ik1PVVNFIiBpZD0iTU9VU0UiPjEyLiBJbnRlcmZhY2luZyB3aXRoCi10aGUgbW91c2U8L2E+PC9oMj4KLTxwPk5vdyB0aGF0IHlvdSBoYXZlIHNlZW4gaG93IHRvIGdldCBrZXlzLCBsZXRzIGRvIHRoZSBzYW1lIHRoaW5nCi1mcm9tIG1vdXNlLiBVc3VhbGx5IGVhY2ggVUkgYWxsb3dzIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGggYm90aAota2V5Ym9hcmQgYW5kIG1vdXNlLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1PVVNFQkFTSUNTIiBpZD0iTU9VU0VCQVNJQ1MiPjEyLjEuIFRoZQotQmFzaWNzPC9hPjwvaDM+Ci08cD5CZWZvcmUgeW91IGRvIGFueSB0aGluZyBlbHNlLCB0aGUgZXZlbnRzIHlvdSB3YW50IHRvIHJlY2VpdmUKLWhhdmUgdG8gYmUgZW5hYmxlZCB3aXRoIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm1vdXNlbWFzaygpPC92YXI+LjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPiAgICBtb3VzZW1hc2soICBtbWFza190IG5ld21hc2ssICAgIC8qIFRoZSBldmVudHMgeW91IHdhbnQgdG8gbGlzdGVuIHRvICovCi0gICAgICAgICAgICAgICAgbW1hc2tfdCAqb2xkbWFzaykgICAgLyogVGhlIG9sZCBldmVudHMgbWFzayAgICAgICAgICAgICAgICAqLzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPlRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYWJvdmUgZnVuY3Rpb24gaXMgYSBiaXQgbWFzayBvZiBldmVudHMKLXlvdSB3b3VsZCBsaWtlIHRvIGxpc3Rlbi4gQnkgZGVmYXVsdCwgYWxsIHRoZSBldmVudHMgYXJlIHR1cm5lZAotb2ZmLiBUaGUgYml0IG1hc2sgPHZhciBjbGFzcz0iTElURVJBTCI+QUxMX01PVVNFX0VWRU5UUzwvdmFyPiBjYW4KLWJlIHVzZWQgdG8gZ2V0IGFsbCB0aGUgZXZlbnRzLjwvcD4KLTxwPlRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgZXZlbnQgbWFza3M6PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICBOYW1lICAgICAgICAgICAgRGVzY3JpcHRpb24KKzwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iTU9VU0UiCis+MTIuIEludGVyZmFjaW5nIHdpdGggdGhlIG1vdXNlPC9BCis+PC9IMgorPjxQCis+Tm93IHRoYXQgeW91IGhhdmUgc2VlbiBob3cgdG8gZ2V0IGtleXMsIGxldHMgZG8gdGhlIHNhbWUgdGhpbmcgZnJvbSBtb3VzZS4KK1VzdWFsbHkgZWFjaCBVSSBhbGxvd3MgdGhlIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aCBib3RoIGtleWJvYXJkIGFuZCBtb3VzZS4gPC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTU9VU0VCQVNJQ1MiCis+MTIuMS4gVGhlIEJhc2ljczwvQQorPjwvSDMKKz48UAorPkJlZm9yZSB5b3UgZG8gYW55IHRoaW5nIGVsc2UsIHRoZSBldmVudHMgeW91IHdhbnQgdG8gcmVjZWl2ZSBoYXZlIHRvIGJlIGVuYWJsZWQKK3dpdGggPFRUCitDTEFTUz0iTElURVJBTCIKKz5tb3VzZW1hc2soKTwvVFQKKz4uPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICBtb3VzZW1hc2soICBtbWFza190IG5ld21hc2ssICAgIC8qIFRoZSBldmVudHMgeW91IHdhbnQgdG8gbGlzdGVuIHRvICovCisgICAgICAgICAgICAgICAgbW1hc2tfdCAqb2xkbWFzaykgICAgLyogVGhlIG9sZCBldmVudHMgbWFzayAgICAgICAgICAgICAgICAqLzwvUFJFCis+PFAKKz5UaGUgZmlyc3QgcGFyYW1ldGVyIHRvIGFib3ZlIGZ1bmN0aW9uIGlzIGEgYml0IG1hc2sgb2YgZXZlbnRzIHlvdSB3b3VsZCBsaWtlIHRvIAorbGlzdGVuLiBCeSBkZWZhdWx0LCBhbGwgdGhlIGV2ZW50cyBhcmUgdHVybmVkIG9mZi4gVGhlIGJpdCBtYXNrIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+IEFMTF9NT1VTRV9FVkVOVFM8L1RUCis+IGNhbiBiZSB1c2VkIHRvIGdldCBhbGwgdGhlIGV2ZW50cy48L1AKKz48UAorPlRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgZXZlbnQgbWFza3M6PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICBOYW1lICAgICAgICAgICAgRGVzY3JpcHRpb24KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBCVVRUT04xX1BSRVNTRUQgICAgICAgICAgbW91c2UgYnV0dG9uIDEgZG93bgogICAgICAgIEJVVFRPTjFfUkVMRUFTRUQgICAgICAgICBtb3VzZSBidXR0b24gMSB1cApAQCAtMjM5Miw3OSArMzcyOCw4NSBAQAogICAgICAgIEJVVFRPTl9DVFJMICAgICAgICAgICAgICBjb250cm9sIHdhcyBkb3duIGR1cmluZyBidXR0b24gc3RhdGUgY2hhbmdlCiAgICAgICAgQlVUVE9OX0FMVCAgICAgICAgICAgICAgIGFsdCB3YXMgZG93biBkdXJpbmcgYnV0dG9uIHN0YXRlIGNoYW5nZQogICAgICAgIEFMTF9NT1VTRV9FVkVOVFMgICAgICAgICByZXBvcnQgYWxsIGJ1dHRvbiBzdGF0ZSBjaGFuZ2VzCi0gICAgICAgUkVQT1JUX01PVVNFX1BPU0lUSU9OICAgIHJlcG9ydCBtb3VzZSBtb3ZlbWVudDwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iR0VUVElOR0VWRU5UUyIgaWQ9IkdFVFRJTkdFVkVOVFMiPjEyLjIuCi1HZXR0aW5nIHRoZSBldmVudHM8L2E+PC9oMz4KLTxwPk9uY2UgYSBjbGFzcyBvZiBtb3VzZSBldmVudHMgaGF2ZSBiZWVuIGVuYWJsZWQsIGdldGNoKCkgY2xhc3Mgb2YKLWZ1bmN0aW9ucyByZXR1cm4gS0VZX01PVVNFIGV2ZXJ5IHRpbWUgc29tZSBtb3VzZSBldmVudCBoYXBwZW5zLgotVGhlbiB0aGUgbW91c2UgZXZlbnQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+Z2V0bW91c2UoKTwvdmFyPi48L3A+Ci08cD5UaGUgY29kZSBhcHByb3hpbWF0ZWx5IGxvb2tzIGxpa2UgdGhpczo8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIE1FVkVOVCBldmVudDsKKyAgICAgICBSRVBPUlRfTU9VU0VfUE9TSVRJT04gICAgcmVwb3J0IG1vdXNlIG1vdmVtZW50PC9QUkUKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkdFVFRJTkdFVkVOVFMiCis+MTIuMi4gR2V0dGluZyB0aGUgZXZlbnRzPC9BCis+PC9IMworPjxQCis+T25jZSBhIGNsYXNzIG9mIG1vdXNlIGV2ZW50cyBoYXZlIGJlZW4gZW5hYmxlZCwgZ2V0Y2goKSBjbGFzcyBvZiBmdW5jdGlvbnMKK3JldHVybiBLRVlfTU9VU0UgZXZlcnkgdGltZSBzb21lIG1vdXNlIGV2ZW50IGhhcHBlbnMuIFRoZW4gdGhlIG1vdXNlIGV2ZW50IGNhbgorYmUgcmV0cmlldmVkIHdpdGggPFRUCitDTEFTUz0iTElURVJBTCIKKz5nZXRtb3VzZSgpPC9UVAorPi48L1AKKz48UAorPlRoZSBjb2RlIGFwcHJveGltYXRlbHkgbG9va3MgbGlrZSB0aGlzOjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgTUVWRU5UIGV2ZW50OwogCiAgICAgY2ggPSBnZXRjaCgpOwogICAgIGlmKGNoID09IEtFWV9NT1VTRSkKICAgICAgICAgaWYoZ2V0bW91c2UoJmFtcDtldmVudCkgPT0gT0spCiAgICAgICAgICAgICAuICAgIC8qIERvIHNvbWUgdGhpbmcgd2l0aCB0aGUgZXZlbnQgKi8KICAgICAgICAgICAgIC4KLSAgICAgICAgICAgIC48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5nZXRtb3VzZSgpIHJldHVybnMgdGhlIGV2ZW50IGludG8gdGhlIHBvaW50ZXIgZ2l2ZW4gdG8gaXQuIEl0J3MKLWEgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICB0eXBlZGVmIHN0cnVjdAorICAgICAgICAgICAgLjwvUFJFCis+PFAKKz4gCitnZXRtb3VzZSgpIHJldHVybnMgdGhlIGV2ZW50IGludG8gdGhlIHBvaW50ZXIgZ2l2ZW4gdG8gaXQuIEl0J3MgYSBzdHJ1Y3R1cmUKK3doaWNoIGNvbnRhaW5zPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICB0eXBlZGVmIHN0cnVjdAogICAgIHsKICAgICAgICAgc2hvcnQgaWQ7ICAgICAgICAgLyogSUQgdG8gZGlzdGluZ3Vpc2ggbXVsdGlwbGUgZGV2aWNlcyAqLwogICAgICAgICBpbnQgeCwgeSwgejsgICAgICAvKiBldmVudCBjb29yZGluYXRlcyAqLwogICAgICAgICBtbWFza190IGJzdGF0ZTsgICAvKiBidXR0b24gc3RhdGUgYml0cyAqLwotICAgIH0gICAgPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmJzdGF0ZTwvdmFyPiBpcyB0aGUgbWFpbiB2YXJpYWJsZSB3ZQotYXJlIGludGVyZXN0ZWQgaW4uIEl0IHRlbGxzIHRoZSBidXR0b24gc3RhdGUgb2YgdGhlIG1vdXNlLjwvcD4KLTxwPlRoZW4gd2l0aCBhIGNvZGUgc25pcHBldCBsaWtlIHRoZSBmb2xsb3dpbmcsIHdlIGNhbiBmaW5kIG91dAotd2hhdCBoYXBwZW5lZC48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIGlmKGV2ZW50LmJzdGF0ZSAmYW1wOyBCVVRUT04xX1BSRVNTRUQpCi0gICAgICAgIHByaW50dygiTGVmdCBCdXR0b24gUHJlc3NlZCIpOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iTU9VU0VUT0dFVEhFUiIgaWQ9Ik1PVVNFVE9HRVRIRVIiPjEyLjMuCi1QdXR0aW5nIGl0IGFsbCBUb2dldGhlcjwvYT48L2gzPgotPHA+VGhhdCdzIHByZXR0eSBtdWNoIGludGVyZmFjaW5nIHdpdGggbW91c2UuIExldCdzIGNyZWF0ZSB0aGUgc2FtZQotbWVudSBhbmQgZW5hYmxlIG1vdXNlIGludGVyYWN0aW9uLiBUbyBtYWtlIHRoaW5ncyBzaW1wbGVyLCBrZXkKLWhhbmRsaW5nIGlzIHJlbW92ZWQuPC9wPgotPGRpdiBjbGFzcz0iRVhBTVBMRSI+PGEgbmFtZT0iQk1PTUUiIGlkPSJCTU9NRSI+PC9hPgotPHA+PGI+RXhhbXBsZSAxMS4gQWNjZXNzIHRoZSBtZW51IHdpdGggbW91c2UgISEhPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O25jdXJzZXMuaCZndDsKKyAgICB9ICAgIDwvUFJFCis+PFAKKz5UaGUgPFRUCitDTEFTUz0iTElURVJBTCIKKz5ic3RhdGU8L1RUCis+IGlzIHRoZSBtYWluIHZhcmlhYmxlIHdlIGFyZQoraW50ZXJlc3RlZCBpbi4gSXQgdGVsbHMgdGhlIGJ1dHRvbiBzdGF0ZSBvZiB0aGUgbW91c2UuPC9QCis+PFAKKz5UaGVuIHdpdGggYSBjb2RlIHNuaXBwZXQgbGlrZSB0aGUgZm9sbG93aW5nLCB3ZSBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZC48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGlmKGV2ZW50LmJzdGF0ZSAmYW1wOyBCVVRUT04xX1BSRVNTRUQpCisgICAgICAgIHByaW50dygiTGVmdCBCdXR0b24gUHJlc3NlZCIpOzwvUFJFCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJNT1VTRVRPR0VUSEVSIgorPjEyLjMuIFB1dHRpbmcgaXQgYWxsIFRvZ2V0aGVyPC9BCis+PC9IMworPjxQCis+VGhhdCdzIHByZXR0eSBtdWNoIGludGVyZmFjaW5nIHdpdGggbW91c2UuIExldCdzIGNyZWF0ZSB0aGUgc2FtZSBtZW51IGFuZCBlbmFibGUKK21vdXNlIGludGVyYWN0aW9uLiBUbyBtYWtlIHRoaW5ncyBzaW1wbGVyLCBrZXkgaGFuZGxpbmcgaXMgcmVtb3ZlZC48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iQk1PTUUiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMTEuICBBY2Nlc3MgdGhlIG1lbnUgd2l0aCBtb3VzZSAhISEgPC9CCis+PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iSU5MSU5FTUVESUFPQkpFQ1QiCis+I2luY2x1ZGUgJiM2MDtuY3Vyc2VzLmgmIzYyOwogCiAjZGVmaW5lIFdJRFRIIDMwCiAjZGVmaW5lIEhFSUdIVCAxMCAKQEAgLTI0NzIsMTIgKzM4MTQsMTIgQEAKIGludCBzdGFydHggPSAwOwogaW50IHN0YXJ0eSA9IDA7CiAKLWNoYXIgKmNob2ljZXNbXSA9IHsgICAgICJDaG9pY2UgMSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDIiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgNCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRXhpdCIsCi0gICAgICAgICAgICAgICAgICB9OworY2hhciAqY2hvaWNlc1tdID0geyAJIkNob2ljZSAxIiwKKwkJCSJDaG9pY2UgMiIsCisJCQkiQ2hvaWNlIDMiLAorCQkJIkNob2ljZSA0IiwKKwkJCSJFeGl0IiwKKwkJICB9OwogCiBpbnQgbl9jaG9pY2VzID0gc2l6ZW9mKGNob2ljZXMpIC8gc2l6ZW9mKGNoYXIgKik7CiAKQEAgLTI0ODUsMjcwICszODI3LDMzOCBAQAogdm9pZCByZXBvcnRfY2hvaWNlKGludCBtb3VzZV94LCBpbnQgbW91c2VfeSwgaW50ICpwX2Nob2ljZSk7CiAKIGludCBtYWluKCkKLXsgICAgICAgaW50IGMsIGNob2ljZSA9IDA7Ci0gICAgICAgIFdJTkRPVyAqbWVudV93aW47Ci0gICAgICAgIE1FVkVOVCBldmVudDsKK3sJaW50IGMsIGNob2ljZSA9IDA7CisJV0lORE9XICptZW51X3dpbjsKKwlNRVZFTlQgZXZlbnQ7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8KLSAgICAgICAgaW5pdHNjcigpOwotICAgICAgICBjbGVhcigpOwotICAgICAgICBub2VjaG8oKTsKLSAgICAgICAgY2JyZWFrKCk7ICAgICAgIC8vTGluZSBidWZmZXJpbmcgZGlzYWJsZWQuIHBhc3Mgb24gZXZlcnl0aGluZworCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCisJaW5pdHNjcigpOworCWNsZWFyKCk7CisJbm9lY2hvKCk7CisJY2JyZWFrKCk7CS8vTGluZSBidWZmZXJpbmcgZGlzYWJsZWQuIHBhc3Mgb24gZXZlcnl0aGluZwogCi0gICAgICAgIC8qIFRyeSB0byBwdXQgdGhlIHdpbmRvdyBpbiB0aGUgbWlkZGxlIG9mIHNjcmVlbiAqLwotICAgICAgICBzdGFydHggPSAoODAgLSBXSURUSCkgLyAyOwotICAgICAgICBzdGFydHkgPSAoMjQgLSBIRUlHSFQpIC8gMjsKLSAgICAgICAgCi0gICAgICAgIGF0dHJvbihBX1JFVkVSU0UpOwotICAgICAgICBtdnByaW50dygyMywgMSwgIkNsaWNrIG9uIEV4aXQgdG8gcXVpdCAoV29ya3MgYmVzdCBpbiBhIHZpcnR1YWwgY29uc29sZSkiKTsKLSAgICAgICAgcmVmcmVzaCgpOwotICAgICAgICBhdHRyb2ZmKEFfUkVWRVJTRSk7CisJLyogVHJ5IHRvIHB1dCB0aGUgd2luZG93IGluIHRoZSBtaWRkbGUgb2Ygc2NyZWVuICovCisJc3RhcnR4ID0gKDgwIC0gV0lEVEgpIC8gMjsKKwlzdGFydHkgPSAoMjQgLSBIRUlHSFQpIC8gMjsKKwkKKwlhdHRyb24oQV9SRVZFUlNFKTsKKwltdnByaW50dygyMywgMSwgIkNsaWNrIG9uIEV4aXQgdG8gcXVpdCAoV29ya3MgYmVzdCBpbiBhIHZpcnR1YWwgY29uc29sZSkiKTsKKwlyZWZyZXNoKCk7CisJYXR0cm9mZihBX1JFVkVSU0UpOwogCi0gICAgICAgIC8qIFByaW50IHRoZSBtZW51IGZvciB0aGUgZmlyc3QgdGltZSAqLwotICAgICAgICBtZW51X3dpbiA9IG5ld3dpbihIRUlHSFQsIFdJRFRILCBzdGFydHksIHN0YXJ0eCk7Ci0gICAgICAgIHByaW50X21lbnUobWVudV93aW4sIDEpOwotICAgICAgICAvKiBHZXQgYWxsIHRoZSBtb3VzZSBldmVudHMgKi8KLSAgICAgICAgbW91c2VtYXNrKEFMTF9NT1VTRV9FVkVOVFMsIE5VTEwpOwotICAgICAgICAKLSAgICAgICAgd2hpbGUoMSkKLSAgICAgICAgeyAgICAgICBjID0gd2dldGNoKG1lbnVfd2luKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2goYykKLSAgICAgICAgICAgICAgICB7ICAgICAgIGNhc2UgS0VZX01PVVNFOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYoZ2V0bW91c2UoJmFtcDtldmVudCkgPT0gT0spCi0gICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIC8qIFdoZW4gdGhlIHVzZXIgY2xpY2tzIGxlZnQgbW91c2UgYnV0dG9uICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGV2ZW50LmJzdGF0ZSAmYW1wOyBCVVRUT04xX1BSRVNTRUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgcmVwb3J0X2Nob2ljZShldmVudC54ICsgMSwgZXZlbnQueSArIDEsICZhbXA7Y2hvaWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaG9pY2UgPT0gLTEpIC8vRXhpdCBjaG9zZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12cHJpbnR3KDIyLCAxLCAiQ2hvaWNlIG1hZGUgaXMgOiAlZCBTdHJpbmcgQ2hvc2VuIGlzIFwiJTEwc1wiIiwgY2hvaWNlLCBjaG9pY2VzW2Nob2ljZSAtIDFdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoKCk7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludF9tZW51KG1lbnVfd2luLCBjaG9pY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAgICAgICAgCisJLyogUHJpbnQgdGhlIG1lbnUgZm9yIHRoZSBmaXJzdCB0aW1lICovCisJbWVudV93aW4gPSBuZXd3aW4oSEVJR0hULCBXSURUSCwgc3RhcnR5LCBzdGFydHgpOworCXByaW50X21lbnUobWVudV93aW4sIDEpOworCS8qIEdldCBhbGwgdGhlIG1vdXNlIGV2ZW50cyAqLworCW1vdXNlbWFzayhBTExfTU9VU0VfRVZFTlRTLCBOVUxMKTsKKwkKKwl3aGlsZSgxKQorCXsJYyA9IHdnZXRjaChtZW51X3dpbik7CisJCXN3aXRjaChjKQorCQl7CWNhc2UgS0VZX01PVVNFOgorCQkJaWYoZ2V0bW91c2UoJiMzODtldmVudCkgPT0gT0spCisJCQl7CS8qIFdoZW4gdGhlIHVzZXIgY2xpY2tzIGxlZnQgbW91c2UgYnV0dG9uICovCisJCQkJaWYoZXZlbnQuYnN0YXRlICYjMzg7IEJVVFRPTjFfUFJFU1NFRCkKKwkJCQl7CXJlcG9ydF9jaG9pY2UoZXZlbnQueCArIDEsIGV2ZW50LnkgKyAxLCAmIzM4O2Nob2ljZSk7CisJCQkJCWlmKGNob2ljZSA9PSAtMSkgLy9FeGl0IGNob3NlbgorCQkJCQkJZ290byBlbmQ7CisJCQkJCW12cHJpbnR3KDIyLCAxLCAiQ2hvaWNlIG1hZGUgaXMgOiAlZCBTdHJpbmcgQ2hvc2VuIGlzIFwiJTEwc1wiIiwgY2hvaWNlLCBjaG9pY2VzW2Nob2ljZSAtIDFdKTsKKwkJCQkJcmVmcmVzaCgpOyAKKwkJCQl9CisJCQl9CisJCQlwcmludF9tZW51KG1lbnVfd2luLCBjaG9pY2UpOworCQkJYnJlYWs7CisJCX0KKwl9CQkKIGVuZDoKLSAgICAgICAgZW5kd2luKCk7Ci0gICAgICAgIHJldHVybiAwOworCWVuZHdpbigpOworCXJldHVybiAwOwogfQogCiAKIHZvaWQgcHJpbnRfbWVudShXSU5ET1cgKm1lbnVfd2luLCBpbnQgaGlnaGxpZ2h0KQogewotICAgICAgICBpbnQgeCwgeSwgaTsgICAgCisJaW50IHgsIHksIGk7CQogCi0gICAgICAgIHggPSAyOwotICAgICAgICB5ID0gMjsKLSAgICAgICAgYm94KG1lbnVfd2luLCAwLCAwKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgbl9jaG9pY2VzOyArK2kpCi0gICAgICAgIHsgICAgICAgaWYoaGlnaGxpZ2h0ID09IGkgKyAxKQotICAgICAgICAgICAgICAgIHsgICAgICAgd2F0dHJvbihtZW51X3dpbiwgQV9SRVZFUlNFKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICBtdndwcmludHcobWVudV93aW4sIHksIHgsICIlcyIsIGNob2ljZXNbaV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgd2F0dHJvZmYobWVudV93aW4sIEFfUkVWRVJTRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG12d3ByaW50dyhtZW51X3dpbiwgeSwgeCwgIiVzIiwgY2hvaWNlc1tpXSk7Ci0gICAgICAgICAgICAgICAgKyt5OwotICAgICAgICB9Ci0gICAgICAgIHdyZWZyZXNoKG1lbnVfd2luKTsKKwl4ID0gMjsKKwl5ID0gMjsKKwlib3gobWVudV93aW4sIDAsIDApOworCWZvcihpID0gMDsgaSAmIzYwOyBuX2Nob2ljZXM7ICsraSkKKwl7CWlmKGhpZ2hsaWdodCA9PSBpICsgMSkKKwkJewl3YXR0cm9uKG1lbnVfd2luLCBBX1JFVkVSU0UpOyAKKwkJCW12d3ByaW50dyhtZW51X3dpbiwgeSwgeCwgIiVzIiwgY2hvaWNlc1tpXSk7CisJCQl3YXR0cm9mZihtZW51X3dpbiwgQV9SRVZFUlNFKTsKKwkJfQorCQllbHNlCisJCQltdndwcmludHcobWVudV93aW4sIHksIHgsICIlcyIsIGNob2ljZXNbaV0pOworCQkrK3k7CisJfQorCXdyZWZyZXNoKG1lbnVfd2luKTsKIH0KIAogLyogUmVwb3J0IHRoZSBjaG9pY2UgYWNjb3JkaW5nIHRvIG1vdXNlIHBvc2l0aW9uICovCiB2b2lkIHJlcG9ydF9jaG9pY2UoaW50IG1vdXNlX3gsIGludCBtb3VzZV95LCBpbnQgKnBfY2hvaWNlKQoteyAgICAgICBpbnQgaSxqLCBjaG9pY2U7Cit7CWludCBpLGosIGNob2ljZTsKIAotICAgICAgICBpID0gc3RhcnR4ICsgMjsKLSAgICAgICAgaiA9IHN0YXJ0eSArIDM7Ci0gICAgICAgIAotICAgICAgICBmb3IoY2hvaWNlID0gMDsgY2hvaWNlICZsdDsgbl9jaG9pY2VzOyArK2Nob2ljZSkKLSAgICAgICAgICAgICAgICBpZihtb3VzZV95ID09IGogKyBjaG9pY2UgJmFtcDsmYW1wOyBtb3VzZV94ICZndDs9IGkgJmFtcDsmYW1wOyBtb3VzZV94ICZsdDs9IGkgKyBzdHJsZW4oY2hvaWNlc1tjaG9pY2VdKSkKLSAgICAgICAgICAgICAgICB7ICAgICAgIGlmKGNob2ljZSA9PSBuX2Nob2ljZXMgLSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcF9jaG9pY2UgPSAtMTsgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBfY2hvaWNlID0gY2hvaWNlICsgMTsgCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJNSVNDTU9VU0VGVU5DUyIgaWQ9Ci0iTUlTQ01PVVNFRlVOQ1MiPjEyLjQuIE1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zPC9hPjwvaDM+Ci08cD5UaGUgZnVuY3Rpb25zIG1vdXNlX3RyYWZvKCkgYW5kIHdtb3VzZV90cmFmbygpIGNhbiBiZSB1c2VkIHRvCi1jb252ZXJ0IHRvIG1vdXNlIGNvLW9yZGluYXRlcyB0byBzY3JlZW4gcmVsYXRpdmUgY28tb3JkaW5hdGVzLiBTZWUKLWN1cnNfbW91c2UoM1gpIG1hbiBwYWdlIGZvciBkZXRhaWxzLjwvcD4KLTxwPlRoZSBtb3VzZWludGVydmFsIGZ1bmN0aW9uIHNldHMgdGhlIG1heGltdW0gdGltZSAoaW4gdGhvdXNhbmRzCi1vZiBhIHNlY29uZCkgdGhhdCBjYW4gZWxhcHNlIGJldHdlZW4gcHJlc3MgYW5kIHJlbGVhc2UgZXZlbnRzIGluCi1vcmRlciBmb3IgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGEgY2xpY2suIFRoaXMgZnVuY3Rpb24gcmV0dXJucwotdGhlIHByZXZpb3VzIGludGVydmFsIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyBvbmUgZmlmdGggb2YgYQotc2Vjb25kLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJTQ1JFRU4iIGlkPSJTQ1JFRU4iPjEzLiBTY3JlZW4KLU1hbmlwdWxhdGlvbjwvYT48L2gyPgotPHA+SW4gdGhpcyBzZWN0aW9uLCB3ZSB3aWxsIGxvb2sgaW50byBzb21lIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3cKLXVzIHRvIG1hbmFnZSB0aGUgc2NyZWVuIGVmZmljaWVudGx5IGFuZCB0byB3cml0ZSBzb21lIGZhbmN5Ci1wcm9ncmFtcy4gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpbiB3cml0aW5nIGdhbWVzLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkdFVFlYIiBpZD0iR0VUWVgiPjEzLjEuIGdldHl4KCkKLWZ1bmN0aW9uczwvYT48L2gzPgotPHA+VGhlIGZ1bmN0aW9uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmdldHl4KCk8L3Zhcj4gY2FuIGJlIHVzZWQgdG8KLWZpbmQgb3V0IHRoZSBwcmVzZW50IGN1cnNvciBjby1vcmRpbmF0ZXMuIEl0IHdpbGwgZmlsbCB0aGUgdmFsdWVzCi1vZiB4IGFuZCB5IGNvLW9yZGluYXRlcyBpbiB0aGUgYXJndW1lbnRzIGdpdmVuIHRvIGl0LiBTaW5jZSBnZXR5eCgpCi1pcyBhIG1hY3JvIHlvdSBkb24ndCBoYXZlIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlcy4gSXQKLWNhbiBiZSBjYWxsZWQgYXM8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgIGdldHl4KHdpbiwgeSwgeCk7CisJaSA9IHN0YXJ0eCArIDI7CisJaiA9IHN0YXJ0eSArIDM7CisJCisJZm9yKGNob2ljZSA9IDA7IGNob2ljZSAmIzYwOyBuX2Nob2ljZXM7ICsrY2hvaWNlKQorCQlpZihtb3VzZV95ID09IGogKyBjaG9pY2UgJiMzODsmIzM4OyBtb3VzZV94ICYjNjI7PSBpICYjMzg7JiMzODsgbW91c2VfeCAmIzYwOz0gaSArIHN0cmxlbihjaG9pY2VzW2Nob2ljZV0pKQorCQl7CWlmKGNob2ljZSA9PSBuX2Nob2ljZXMgLSAxKQorCQkJCSpwX2Nob2ljZSA9IC0xOwkJCisJCQllbHNlCisJCQkJKnBfY2hvaWNlID0gY2hvaWNlICsgMTsJCisJCQlicmVhazsKKwkJfQorfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9Ik1JU0NNT1VTRUZVTkNTIgorPjEyLjQuIE1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zPC9BCis+PC9IMworPjxQCis+VGhlIGZ1bmN0aW9ucyBtb3VzZV90cmFmbygpIGFuZCB3bW91c2VfdHJhZm8oKSBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IHRvIG1vdXNlCitjby1vcmRpbmF0ZXMgdG8gc2NyZWVuIHJlbGF0aXZlIGNvLW9yZGluYXRlcy4gU2VlIGN1cnNfbW91c2UoM1gpIG1hbiBwYWdlIGZvciBkZXRhaWxzLjwvUAorPjxQCis+VGhlICBtb3VzZWludGVydmFsICBmdW5jdGlvbiBzZXRzIHRoZSBtYXhpbXVtIHRpbWUgKGluIHRob3VzYW5kcyBvZiBhCitzZWNvbmQpIHRoYXQgY2FuIGVsYXBzZSBiZXR3ZWVuIHByZXNzIGFuZCByZWxlYXNlIGV2ZW50cyBpbiBvcmRlciBmb3IKK3RoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBhIGNsaWNrLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBwcmV2aW91cworaW50ZXJ2YWwgdmFsdWUuICBUaGUgZGVmYXVsdCBpcyBvbmUgZmlmdGggb2YgYSBzZWNvbmQuPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IlNDUkVFTiIKKz4xMy4gU2NyZWVuIE1hbmlwdWxhdGlvbjwvQQorPjwvSDIKKz48UAorPkluIHRoaXMgc2VjdGlvbiwgd2Ugd2lsbCBsb29rIGludG8gc29tZSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHVzIHRvIG1hbmFnZSB0aGUKK3NjcmVlbiBlZmZpY2llbnRseSBhbmQgdG8gd3JpdGUgc29tZSBmYW5jeSBwcm9ncmFtcy4gVGhpcyBpcyBlc3BlY2lhbGx5CitpbXBvcnRhbnQgaW4gd3JpdGluZyBnYW1lcy4gPC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iR0VUWVgiCis+MTMuMS4gZ2V0eXgoKSBmdW5jdGlvbnM8L0EKKz48L0gzCis+PFAKKz4mIzEzO1RoZSBmdW5jdGlvbiA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldHl4KCk8L1RUCis+IGNhbiBiZSB1c2VkIHRvIGZpbmQgb3V0Cit0aGUgcHJlc2VudCBjdXJzb3IgY28tb3JkaW5hdGVzLiBJdCB3aWxsIGZpbGwgdGhlIHZhbHVlcyBvZiB4IGFuZCB5IGNvLW9yZGluYXRlcworaW4gdGhlIGFyZ3VtZW50cyBnaXZlbiB0byBpdC4gU2luY2UgZ2V0eXgoKSBpcyBhIG1hY3JvIHlvdSBkb24ndCBoYXZlIHRvIHBhc3MKK3RoZSBhZGRyZXNzIG9mIHRoZSB2YXJpYWJsZXMuIEl0IGNhbiBiZSBjYWxsZWQgYXM8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGdldHl4KHdpbiwgeSwgeCk7CiAgICAgLyogd2luOiB3aW5kb3cgcG9pbnRlcgogICAgICAqICAgeSwgeDogeSwgeCBjby1vcmRpbmF0ZXMgd2lsbCBiZSBwdXQgaW50byB0aGlzIHZhcmlhYmxlcyAKLSAgICAgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGUgZnVuY3Rpb24gZ2V0cGFyeXgoKSBnZXRzIHRoZSBiZWdpbm5pbmcgY28tb3JkaW5hdGVzIG9mIHRoZQotc3ViIHdpbmRvdyByZWxhdGl2ZSB0byB0aGUgbWFpbiB3aW5kb3cuIFRoaXMgaXMgc29tZSB0aW1lcyB1c2VmdWwKLXRvIHVwZGF0ZSBhIHN1YiB3aW5kb3cuIFdoZW4gZGVzaWduaW5nIGZhbmN5IHN0dWZmIGxpa2Ugd3JpdGluZwotbXVsdGlwbGUgbWVudXMsIGl0IGJlY29tZXMgZGlmZmljdWx0IHRvIHN0b3JlIHRoZSBtZW51IHBvc2l0aW9ucywKLXRoZWlyIGZpcnN0IG9wdGlvbiBjby1vcmRpbmF0ZXMgZXRjLiBBIHNpbXBsZSBzb2x1dGlvbiB0byB0aGlzCi1wcm9ibGVtLCBpcyB0byBjcmVhdGUgbWVudXMgaW4gc3ViIHdpbmRvd3MgYW5kIGxhdGVyIGZpbmQgdGhlCi1zdGFydGluZyBjby1vcmRpbmF0ZXMgb2YgdGhlIG1lbnVzIGJ5IHVzaW5nIGdldHBhcnl4KCkuPC9wPgotPHA+VGhlIGZ1bmN0aW9ucyBnZXRiZWd5eCgpIGFuZCBnZXRtYXh5eCgpIHN0b3JlIGN1cnJlbnQgd2luZG93J3MKLWJlZ2lubmluZyBhbmQgbWF4aW11bSBjby1vcmRpbmF0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZnVsIGluCi10aGUgc2FtZSB3YXkgYXMgYWJvdmUgaW4gbWFuYWdpbmcgdGhlIHdpbmRvd3MgYW5kIHN1YiB3aW5kb3dzCi1lZmZlY3RpdmVseS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlNDUkVFTkRVTVAiIGlkPSJTQ1JFRU5EVU1QIj4xMy4yLiBTY3JlZW4KLUR1bXBpbmc8L2E+PC9oMz4KLTxwPldoaWxlIHdyaXRpbmcgZ2FtZXMsIHNvbWUgdGltZXMgaXQgYmVjb21lcyBuZWNlc3NhcnkgdG8gc3RvcmUKLXRoZSBzdGF0ZSBvZiB0aGUgc2NyZWVuIGFuZCByZXN0b3JlIGl0IGJhY2sgdG8gdGhlIHNhbWUgc3RhdGUuIFRoZQotZnVuY3Rpb24gc2NyX2R1bXAoKSBjYW4gYmUgdXNlZCB0byBkdW1wIHRoZSBzY3JlZW4gY29udGVudHMgdG8gYQotZmlsZSBnaXZlbiBhcyBhbiBhcmd1bWVudC4gTGF0ZXIgaXQgY2FuIGJlIHJlc3RvcmVkIGJ5IHNjcl9yZXN0b3JlCi1mdW5jdGlvbi4gVGhlc2UgdHdvIHNpbXBsZSBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgZWZmZWN0aXZlbHkgdG8KLW1haW50YWluIGEgZmFzdCBtb3ZpbmcgZ2FtZSB3aXRoIGNoYW5naW5nIHNjZW5hcmlvcy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IldJTkRPV0RVTVAiIGlkPSJXSU5ET1dEVU1QIj4xMy4zLiBXaW5kb3cKLUR1bXBpbmc8L2E+PC9oMz4KLTxwPlRvIHN0b3JlIGFuZCByZXN0b3JlIHdpbmRvd3MsIHRoZSBmdW5jdGlvbnMgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5wdXR3aW4oKTwvdmFyPiBhbmQgPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0d2luKCk8L3Zhcj4KLWNhbiBiZSB1c2VkLiA8dmFyIGNsYXNzPSJMSVRFUkFMIj5wdXR3aW4oKTwvdmFyPiBwdXRzIHRoZSBwcmVzZW50Ci13aW5kb3cgc3RhdGUgaW50byBhIGZpbGUsIHdoaWNoIGNhbiBiZSBsYXRlciByZXN0b3JlZCBieQotPHZhciBjbGFzcz0iTElURVJBTCI+Z2V0d2luKCk8L3Zhcj4uPC9wPgotPHA+VGhlIGZ1bmN0aW9uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPmNvcHl3aW4oKTwvdmFyPiBjYW4gYmUgdXNlZCB0bwotY29weSBhIHdpbmRvdyBjb21wbGV0ZWx5IG9udG8gYW5vdGhlciB3aW5kb3cuIEl0IHRha2VzIHRoZSBzb3VyY2UKLWFuZCBkZXN0aW5hdGlvbiB3aW5kb3dzIGFzIHBhcmFtZXRlcnMgYW5kIGFjY29yZGluZyB0byB0aGUKLXJlY3RhbmdsZSBzcGVjaWZpZWQsIGl0IGNvcGllcyB0aGUgcmVjdGFuZ3VsYXIgcmVnaW9uIGZyb20gc291cmNlCi10byBkZXN0aW5hdGlvbiB3aW5kb3cuIEl0J3MgbGFzdCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdG8KLW92ZXJ3cml0ZSBvciBqdXN0IG92ZXJsYXkgdGhlIGNvbnRlbnRzIG9uIHRvIHRoZSBkZXN0aW5hdGlvbgotd2luZG93LiBJZiB0aGlzIGFyZ3VtZW50IGlzIHRydWUsIHRoZW4gdGhlIGNvcHlpbmcgaXMKLW5vbi1kZXN0cnVjdGl2ZS48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iTUlTQyIgaWQ9Ik1JU0MiPjE0LiBNaXNjZWxsYW5lb3VzCi1mZWF0dXJlczwvYT48L2gyPgotPHA+Tm93IHlvdSBrbm93IGVub3VnaCBmZWF0dXJlcyB0byB3cml0ZSBhIGdvb2QgY3Vyc2VzIHByb2dyYW0sCi13aXRoIGFsbCBiZWxscyBhbmQgd2hpc3RsZXMuIFRoZXJlIGFyZSBzb21lIG1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zCi13aGljaCBhcmUgdXNlZnVsIGluIHZhcmlvdXMgY2FzZXMuIExldCdzIGdvIGhlYWRsb25nIGludG8gc29tZSBvZgotdGhvc2UuPC9wPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQ1VSU1NFVCIgaWQ9IkNVUlNTRVQiPjE0LjEuCi1jdXJzX3NldCgpPC9hPjwvaDM+Ci08cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGN1cnNvciBpbnZpc2libGUuIFRoZQotcGFyYW1ldGVyIHRvIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICAwIDogaW52aXNpYmxlICAgICAgb3IKKyAgICAgKi88L1BSRQorPjxQCis+VGhlIGZ1bmN0aW9uIGdldHBhcnl4KCkgZ2V0cyB0aGUgYmVnaW5uaW5nIGNvLW9yZGluYXRlcyBvZiB0aGUgc3ViIHdpbmRvdworcmVsYXRpdmUgdG8gdGhlIG1haW4gd2luZG93LiBUaGlzIGlzIHNvbWUgdGltZXMgdXNlZnVsIHRvIHVwZGF0ZSBhIHN1YiB3aW5kb3cuCitXaGVuIGRlc2lnbmluZyBmYW5jeSBzdHVmZiBsaWtlIHdyaXRpbmcgbXVsdGlwbGUgbWVudXMsIGl0IGJlY29tZXMgZGlmZmljdWx0IHRvCitzdG9yZSB0aGUgbWVudSBwb3NpdGlvbnMsIHRoZWlyIGZpcnN0IG9wdGlvbiBjby1vcmRpbmF0ZXMgZXRjLiBBIHNpbXBsZSBzb2x1dGlvbgordG8gdGhpcyBwcm9ibGVtLCBpcyB0byBjcmVhdGUgbWVudXMgaW4gc3ViIHdpbmRvd3MgYW5kIGxhdGVyIGZpbmQgdGhlIHN0YXJ0aW5nCitjby1vcmRpbmF0ZXMgb2YgdGhlIG1lbnVzIGJ5IHVzaW5nIGdldHBhcnl4KCkuPC9QCis+PFAKKz5UaGUgZnVuY3Rpb25zIGdldGJlZ3l4KCkgYW5kIGdldG1heHl4KCkgc3RvcmUgY3VycmVudCB3aW5kb3cncyBiZWdpbm5pbmcgYW5kCittYXhpbXVtIGNvLW9yZGluYXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VmdWwgaW4gdGhlIHNhbWUgd2F5IGFzIGFib3ZlIGluCittYW5hZ2luZyB0aGUgd2luZG93cyBhbmQgc3ViIHdpbmRvd3MgZWZmZWN0aXZlbHkuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJTQ1JFRU5EVU1QIgorPjEzLjIuIFNjcmVlbiBEdW1waW5nPC9BCis+PC9IMworPjxQCis+V2hpbGUgd3JpdGluZyBnYW1lcywgc29tZSB0aW1lcyBpdCBiZWNvbWVzIG5lY2Vzc2FyeSB0byBzdG9yZSB0aGUgc3RhdGUgb2YgdGhlCitzY3JlZW4gYW5kIHJlc3RvcmUgaXQgYmFjayB0byB0aGUgc2FtZSBzdGF0ZS4gVGhlIGZ1bmN0aW9uIHNjcl9kdW1wKCkgY2FuIGJlCit1c2VkIHRvIGR1bXAgdGhlIHNjcmVlbiBjb250ZW50cyB0byBhIGZpbGUgZ2l2ZW4gYXMgYW4gYXJndW1lbnQuIExhdGVyIGl0IGNhbiBiZQorcmVzdG9yZWQgYnkgc2NyX3Jlc3RvcmUgZnVuY3Rpb24uIFRoZXNlIHR3byBzaW1wbGUgZnVuY3Rpb25zIGNhbiBiZSB1c2VkCitlZmZlY3RpdmVseSB0byBtYWludGFpbiBhIGZhc3QgbW92aW5nIGdhbWUgd2l0aCBjaGFuZ2luZyBzY2VuYXJpb3MuIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iV0lORE9XRFVNUCIKKz4xMy4zLiBXaW5kb3cgRHVtcGluZzwvQQorPjwvSDMKKz48UAorPlRvIHN0b3JlIGFuZCByZXN0b3JlIHdpbmRvd3MsIHRoZSBmdW5jdGlvbnMKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cHV0d2luKCk8L1RUCis+IGFuZCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmdldHdpbigpPC9UVAorPiBjYW4gYmUgdXNlZC4gPFRUCitDTEFTUz0iTElURVJBTCIKKz5wdXR3aW4oKTwvVFQKKz4gcHV0cwordGhlIHByZXNlbnQgd2luZG93IHN0YXRlIGludG8gYSBmaWxlLCB3aGljaCBjYW4gYmUgbGF0ZXIgcmVzdG9yZWQgYnkKKzxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Z2V0d2luKCk8L1RUCis+LjwvUAorPjxQCis+IAorVGhlIGZ1bmN0aW9uIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+Y29weXdpbigpPC9UVAorPiBjYW4gYmUgdXNlZCB0byBjb3B5IGEKK3dpbmRvdyBjb21wbGV0ZWx5IG9udG8gYW5vdGhlciB3aW5kb3cuIEl0IHRha2VzIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uCit3aW5kb3dzIGFzIHBhcmFtZXRlcnMgYW5kIGFjY29yZGluZyB0byB0aGUgcmVjdGFuZ2xlIHNwZWNpZmllZCwgaXQgY29waWVzIHRoZQorcmVjdGFuZ3VsYXIgcmVnaW9uIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIHdpbmRvdy4gIEl0J3MgbGFzdCBwYXJhbWV0ZXIKK3NwZWNpZmllcyB3aGV0aGVyIHRvIG92ZXJ3cml0ZSBvciBqdXN0IG92ZXJsYXkgdGhlIGNvbnRlbnRzIG9uIHRvIHRoZQorZGVzdGluYXRpb24gd2luZG93LiBJZiB0aGlzIGFyZ3VtZW50IGlzIHRydWUsIHRoZW4gdGhlIGNvcHlpbmcgaXMKK25vbi1kZXN0cnVjdGl2ZS48L1AKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iTUlTQyIKKz4xNC4gTWlzY2VsbGFuZW91cyBmZWF0dXJlczwvQQorPjwvSDIKKz48UAorPk5vdyB5b3Uga25vdyBlbm91Z2ggZmVhdHVyZXMgdG8gd3JpdGUgYSBnb29kIGN1cnNlcyBwcm9ncmFtLCB3aXRoIGFsbCBiZWxscyBhbmQKK3doaXN0bGVzLiBUaGVyZSBhcmUgc29tZSBtaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucyB3aGljaCBhcmUgdXNlZnVsIGluIHZhcmlvdXMKK2Nhc2VzLiAgTGV0J3MgZ28gaGVhZGxvbmcgaW50byBzb21lIG9mIHRob3NlLjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkNVUlNTRVQiCis+MTQuMS4gY3Vyc19zZXQoKTwvQQorPjwvSDMKKz48UAorPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gbWFrZSB0aGUgY3Vyc29yIGludmlzaWJsZS4gVGhlIHBhcmFtZXRlciB0byB0aGlzCitmdW5jdGlvbiBzaG91bGQgYmUgPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICAwIDogaW52aXNpYmxlICAgICAgb3IKICAgICAxIDogbm9ybWFsICAgIG9yCi0gICAgMiA6IHZlcnkgdmlzaWJsZS48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlRFTVBMRUFWRSIgaWQ9IlRFTVBMRUFWRSI+MTQuMi4KLVRlbXBvcmFyaWx5IExlYXZpbmcgQ3Vyc2VzIG1vZGU8L2E+PC9oMz4KLTxwPlNvbWUgdGltZXMgeW91IG1heSB3YW50IHRvIGdldCBiYWNrIHRvIGNvb2tlZCBtb2RlIChub3JtYWwgbGluZQotYnVmZmVyaW5nIG1vZGUpIHRlbXBvcmFyaWx5LiBJbiBzdWNoIGEgY2FzZSB5b3Ugd2lsbCBmaXJzdCBuZWVkIHRvCi1zYXZlIHRoZSB0dHkgbW9kZXMgd2l0aCBhIGNhbGwgdG8gPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5kZWZfcHJvZ19tb2RlKCk8L3Zhcj4gYW5kIHRoZW4gY2FsbCA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPmVuZHdpbigpPC92YXI+IHRvIGVuZCB0aGUgY3Vyc2VzIG1vZGUuIFRoaXMgd2lsbCBsZWF2ZQoteW91IGluIHRoZSBvcmlnaW5hbCB0dHkgbW9kZS4gVG8gZ2V0IGJhY2sgdG8gY3Vyc2VzIG9uY2UgeW91IGFyZQotZG9uZSwgY2FsbCA8dmFyIGNsYXNzPSJMSVRFUkFMIj5yZXNldF9wcm9nX21vZGUoKTwvdmFyPiAuIFRoaXMKLWZ1bmN0aW9uIHJldHVybnMgdGhlIHR0eSB0byB0aGUgc3RhdGUgc3RvcmVkIGJ5IDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+ZGVmX3Byb2dfbW9kZSgpPC92YXI+LiBUaGVuIGRvIHJlZnJlc2goKSwgYW5kIHlvdSBhcmUKLWJhY2sgdG8gdGhlIGN1cnNlcyBtb2RlLiBIZXJlIGlzIGFuIGV4YW1wbGUgc2hvd2luZyB0aGUgc2VxdWVuY2Ugb2YKLXRoaW5ncyB0byBiZSBkb25lLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkJURUxFIiBpZD0iQlRFTEUiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMTIuIFRlbXBvcmFyaWx5IExlYXZpbmcgQ3Vyc2VzIE1vZGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0OworICAgIDIgOiB2ZXJ5IHZpc2libGUuPC9QUkUKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlRFTVBMRUFWRSIKKz4xNC4yLiBUZW1wb3JhcmlseSBMZWF2aW5nIEN1cnNlcyBtb2RlPC9BCis+PC9IMworPjxQCis+U29tZSB0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZ2V0IGJhY2sgdG8gY29va2VkIG1vZGUgKG5vcm1hbCBsaW5lIGJ1ZmZlcmluZyBtb2RlKQordGVtcG9yYXJpbHkuIEluIHN1Y2ggYSBjYXNlIHlvdSB3aWxsIGZpcnN0IG5lZWQgdG8gc2F2ZSB0aGUgdHR5IG1vZGVzIHdpdGggYQorY2FsbCB0byA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPmRlZl9wcm9nX21vZGUoKTwvVFQKKz4gYW5kIHRoZW4gY2FsbAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5lbmR3aW4oKTwvVFQKKz4gdG8gZW5kIHRoZSBjdXJzZXMgbW9kZS4gVGhpcyB3aWxsCitsZWF2ZSB5b3UgaW4gdGhlIG9yaWdpbmFsIHR0eSBtb2RlLiBUbyBnZXQgYmFjayB0byBjdXJzZXMgb25jZSB5b3UgYXJlIGRvbmUsCitjYWxsIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cmVzZXRfcHJvZ19tb2RlKCkgPC9UVAorPi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zCit0aGUgdHR5IHRvIHRoZSBzdGF0ZSBzdG9yZWQgYnkgPFRUCitDTEFTUz0iTElURVJBTCIKKz5kZWZfcHJvZ19tb2RlKCk8L1RUCis+LiBUaGVuIGRvIHJlZnJlc2goKSwgYW5kIHlvdSBhcmUgYmFjayB0byB0aGUgY3Vyc2VzIG1vZGUuIEhlcmUKK2lzIGFuIGV4YW1wbGUgc2hvd2luZyB0aGUgc2VxdWVuY2Ugb2YgdGhpbmdzIHRvIGJlIGRvbmUuPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkJURUxFIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDEyLiAgVGVtcG9yYXJpbHkgTGVhdmluZyBDdXJzZXMgTW9kZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO25jdXJzZXMuaCYjNjI7CiAKIGludCBtYWluKCkKLXsgICAgICAgCi0gICAgICAgIGluaXRzY3IoKTsgICAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICovCi0gICAgICAgIHByaW50dygiSGVsbG8gV29ybGQgISEhXG4iKTsgICAgLyogUHJpbnQgSGVsbG8gV29ybGQgICAgICAgICAgICAgICovCi0gICAgICAgIHJlZnJlc2goKTsgICAgICAgICAgICAgICAgICAgICAgLyogUHJpbnQgaXQgb24gdG8gdGhlIHJlYWwgc2NyZWVuICovCi0gICAgICAgIGRlZl9wcm9nX21vZGUoKTsgICAgICAgICAgICAgICAgLyogU2F2ZSB0aGUgdHR5IG1vZGVzICAgICAgICAgICAgICovCi0gICAgICAgIGVuZHdpbigpOyAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kIGN1cnNlcyBtb2RlIHRlbXBvcmFyaWx5ICAgICovCi0gICAgICAgIHN5c3RlbSgiL2Jpbi9zaCIpOyAgICAgICAgICAgICAgLyogRG8gd2hhdGV2ZXIgeW91IGxpa2UgaW4gY29va2VkIG1vZGUgKi8KLSAgICAgICAgcmVzZXRfcHJvZ19tb2RlKCk7ICAgICAgICAgICAgICAvKiBSZXR1cm4gdG8gdGhlIHByZXZpb3VzIHR0eSBtb2RlKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYnkgZGVmX3Byb2dfbW9kZSgpICAgICAgKi8KLSAgICAgICAgcmVmcmVzaCgpOyAgICAgICAgICAgICAgICAgICAgICAvKiBEbyByZWZyZXNoKCkgdG8gcmVzdG9yZSB0aGUgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTY3JlZW4gY29udGVudHMgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcHJpbnR3KCJBbm90aGVyIFN0cmluZ1xuIik7ICAgICAvKiBCYWNrIHRvIGN1cnNlcyB1c2UgdGhlIGZ1bGwgICAgKi8KLSAgICAgICAgcmVmcmVzaCgpOyAgICAgICAgICAgICAgICAgICAgICAvKiBjYXBhYmlsaXRpZXMgb2YgY3Vyc2VzICAgICAgICAgKi8KLSAgICAgICAgZW5kd2luKCk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgY3Vyc2VzIG1vZGUgICAgICAgICAgICAgICAgKi8KK3sJCisJaW5pdHNjcigpOwkJCS8qIFN0YXJ0IGN1cnNlcyBtb2RlIAkJICAqLworCXByaW50dygiSGVsbG8gV29ybGQgISEhXG4iKTsJLyogUHJpbnQgSGVsbG8gV29ybGQJCSAgKi8KKwlyZWZyZXNoKCk7CQkJLyogUHJpbnQgaXQgb24gdG8gdGhlIHJlYWwgc2NyZWVuICovCisJZGVmX3Byb2dfbW9kZSgpOwkJLyogU2F2ZSB0aGUgdHR5IG1vZGVzCQkgICovCisJZW5kd2luKCk7CQkJLyogRW5kIGN1cnNlcyBtb2RlIHRlbXBvcmFyaWx5CSAgKi8KKwlzeXN0ZW0oIi9iaW4vc2giKTsJCS8qIERvIHdoYXRldmVyIHlvdSBsaWtlIGluIGNvb2tlZCBtb2RlICovCisJcmVzZXRfcHJvZ19tb2RlKCk7CQkvKiBSZXR1cm4gdG8gdGhlIHByZXZpb3VzIHR0eSBtb2RlKi8KKwkJCQkJLyogc3RvcmVkIGJ5IGRlZl9wcm9nX21vZGUoKSAJICAqLworCXJlZnJlc2goKTsJCQkvKiBEbyByZWZyZXNoKCkgdG8gcmVzdG9yZSB0aGUJICAqLworCQkJCQkvKiBTY3JlZW4gY29udGVudHMJCSAgKi8KKwlwcmludHcoIkFub3RoZXIgU3RyaW5nXG4iKTsJLyogQmFjayB0byBjdXJzZXMgdXNlIHRoZSBmdWxsICAgICovCisJcmVmcmVzaCgpOwkJCS8qIGNhcGFiaWxpdGllcyBvZiBjdXJzZXMJICAqLworCWVuZHdpbigpOwkJCS8qIEVuZCBjdXJzZXMgbW9kZQkJICAqLwogCi0gICAgICAgIHJldHVybiAwOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQUNTVkFSUyIgaWQ9IkFDU1ZBUlMiPjE0LjMuIEFDU18KLXZhcmlhYmxlczwvYT48L2gzPgotPHA+SWYgeW91IGhhdmUgZXZlciBwcm9ncmFtbWVkIGluIERPUywgeW91IGtub3cgYWJvdXQgdGhvc2UgbmlmdHkKLWNoYXJhY3RlcnMgaW4gZXh0ZW5kZWQgY2hhcmFjdGVyIHNldC4gVGhleSBhcmUgcHJpbnRhYmxlIG9ubHkgb24KLXNvbWUgdGVybWluYWxzLiBOQ1VSU0VTIGZ1bmN0aW9ucyBsaWtlIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+Ym94KCk8L3Zhcj4gdXNlIHRoZXNlIGNoYXJhY3RlcnMuIEFsbCB0aGVzZSB2YXJpYWJsZXMKLXN0YXJ0IHdpdGggQUNTIG1lYW5pbmcgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIHNldC4gWW91IG1pZ2h0IGhhdmUKLW5vdGljZWQgbWUgdXNpbmcgdGhlc2UgY2hhcmFjdGVycyBpbiBzb21lIG9mIHRoZSBwcm9ncmFtcyBhYm92ZS4KLUhlcmUncyBhbiBleGFtcGxlIHNob3dpbmcgYWxsIHRoZSBjaGFyYWN0ZXJzLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkJBQ1NWQVJTIiBpZD0iQkFDU1ZBUlMiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMTMuIEFDUyBWYXJpYWJsZXMgRXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7CisJcmV0dXJuIDA7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iQUNTVkFSUyIKKz4xNC4zLiBBQ1NfIHZhcmlhYmxlczwvQQorPjwvSDMKKz48UAorPklmIHlvdSBoYXZlIGV2ZXIgcHJvZ3JhbW1lZCBpbiBET1MsIHlvdSBrbm93IGFib3V0IHRob3NlIG5pZnR5IGNoYXJhY3RlcnMgaW4KK2V4dGVuZGVkIGNoYXJhY3RlciBzZXQuIFRoZXkgYXJlIHByaW50YWJsZSBvbmx5IG9uIHNvbWUgdGVybWluYWxzLiBOQ1VSU0VTIAorZnVuY3Rpb25zIGxpa2UgPFRUCitDTEFTUz0iTElURVJBTCIKKz5ib3goKTwvVFQKKz4gdXNlIHRoZXNlIGNoYXJhY3RlcnMuIEFsbAordGhlc2UgdmFyaWFibGVzIHN0YXJ0IHdpdGggQUNTIG1lYW5pbmcgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIHNldC4gWW91IG1pZ2h0IGhhdmUgCitub3RpY2VkIG1lIHVzaW5nIHRoZXNlIGNoYXJhY3RlcnMgaW4gc29tZSBvZiB0aGUgcHJvZ3JhbXMgYWJvdmUuIEhlcmUncyBhbiBleGFtcGxlIAorc2hvd2luZyBhbGwgdGhlIGNoYXJhY3RlcnMuPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkJBQ1NWQVJTIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDEzLiAgQUNTIFZhcmlhYmxlcyBFeGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bmN1cnNlcy5oJiM2MjsKIAogaW50IG1haW4oKQogewpAQCAtMjc5MCwxODEgKzQyMDAsMjE4IEBACiAgICAgICAgIGdldGNoKCk7CiAgICAgICAgIGVuZHdpbigpOwogCi0gICAgICAgIHJldHVybiAwOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJPVEhFUkxJQiIgaWQ9Ik9USEVSTElCIj4xNS4gT3RoZXIKLWxpYnJhcmllczwvYT48L2gyPgotPHA+QXBhcnQgZnJvbSB0aGUgY3Vyc2VzIGxpYnJhcnksIHRoZXJlIGFyZSBmZXcgdGV4dCBtb2RlCi1saWJyYXJpZXMsIHdoaWNoIHByb3ZpZGUgbW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhIGxvdCBvZiBmZWF0dXJlcy4KLVRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZXhwbGFpbiB0aHJlZSBzdGFuZGFyZCBsaWJyYXJpZXMgd2hpY2ggYXJlCi11c3VhbGx5IGRpc3RyaWJ1dGVkIGFsb25nIHdpdGggY3Vyc2VzLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iUEFORUxTIiBpZD0iUEFORUxTIj4xNi4gUGFuZWwKLUxpYnJhcnk8L2E+PC9oMj4KLTxwPk5vdyB0aGF0IHlvdSBhcmUgcHJvZmljaWVudCBpbiBjdXJzZXMsIHlvdSB3YW50ZWQgdG8gZG8gc29tZQotdGhpbmcgYmlnLiBZb3UgY3JlYXRlZCBhIGxvdCBvZiBvdmVybGFwcGluZyB3aW5kb3dzIHRvIGdpdmUgYQotcHJvZmVzc2lvbmFsIHdpbmRvd3MtdHlwZSBsb29rLiBVbmZvcnR1bmF0ZWx5LCBpdCBzb29uIGJlY29tZXMKLWRpZmZpY3VsdCB0byBtYW5hZ2UgdGhlc2UuIFRoZSBtdWx0aXBsZSByZWZyZXNoZXMsIHVwZGF0ZXMgcGx1bmdlCi15b3UgaW50byBhIG5pZ2h0bWFyZS4gVGhlIG92ZXJsYXBwaW5nIHdpbmRvd3MgY3JlYXRlIGJsb3RjaGVzLAotd2hlbmV2ZXIgeW91IGZvcmdldCB0byByZWZyZXNoIHRoZSB3aW5kb3dzIGluIHRoZSBwcm9wZXIgb3JkZXIuPC9wPgotPHA+RG9uJ3QgZGVzcGFpci4gVGhlcmUncyBhbiBlbGVnYW50IHNvbHV0aW9uIHByb3ZpZGVkIGluIHBhbmVscwotbGlicmFyeS4gSW4gdGhlIHdvcmRzIG9mIGRldmVsb3BlcnMgb2YgbmN1cnNlczwvcD4KLTxwPjxlbT5XaGVuIHlvdXIgaW50ZXJmYWNlIGRlc2lnbiBpcyBzdWNoIHRoYXQgd2luZG93cyBtYXkgZGl2ZQotZGVlcGVyIGludG8gdGhlIHZpc2liaWxpdHkgc3RhY2sgb3IgcG9wIHRvIHRoZSB0b3AgYXQgcnVudGltZSwgdGhlCi1yZXN1bHRpbmcgYm9vay1rZWVwaW5nIGNhbiBiZSB0ZWRpb3VzIGFuZCBkaWZmaWN1bHQgdG8gZ2V0IHJpZ2h0LgotSGVuY2UgdGhlIHBhbmVscyBsaWJyYXJ5LjwvZW0+PC9wPgotPHA+SWYgeW91IGhhdmUgbG90IG9mIG92ZXJsYXBwaW5nIHdpbmRvd3MsIHRoZW4gcGFuZWxzIGxpYnJhcnkgaXMKLXRoZSB3YXkgdG8gZ28uIEl0IG9idmlhdGVzIHRoZSBuZWVkIG9mIGRvaW5nIHNlcmllcyBvZgotd25vdXRyZWZyZXNoKCksIGRvdXBkYXRlKCkgYW5kIHJlbGlldmVzIHRoZSBidXJkZW4gb2YgZG9pbmcgaXQKLWNvcnJlY3RseShib3R0b20gdXApLiBUaGUgbGlicmFyeSBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi1vcmRlciBvZiB3aW5kb3dzLCB0aGVpciBvdmVybGFwcGluZyBhbmQgdXBkYXRlIHRoZSBzY3JlZW4gcHJvcGVybHkuCi1TbyB3aHkgd2FpdD8gTGV0J3MgdGFrZSBhIGNsb3NlIHBlZWsgaW50byBwYW5lbHMuPC9wPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iUEFORUxCQVNJQ1MiIGlkPSJQQU5FTEJBU0lDUyI+MTYuMS4gVGhlCi1CYXNpY3M8L2E+PC9oMz4KLTxwPlBhbmVsIG9iamVjdCBpcyBhIHdpbmRvdyB0aGF0IGlzIGltcGxpY2l0bHkgdHJlYXRlZCBhcyBwYXJ0IG9mIGEKLWRlY2sgaW5jbHVkaW5nIGFsbCBvdGhlciBwYW5lbCBvYmplY3RzLiBUaGUgZGVjayBpcyB0cmVhdGVkIGFzIGEKLXN0YWNrIHdpdGggdGhlIHRvcCBwYW5lbCBiZWluZyBjb21wbGV0ZWx5IHZpc2libGUgYW5kIHRoZSBvdGhlcgotcGFuZWxzIG1heSBvciBtYXkgbm90IGJlIG9ic2N1cmVkIGFjY29yZGluZyB0byB0aGVpciBwb3NpdGlvbnMuIFNvCi10aGUgYmFzaWMgaWRlYSBpcyB0byBjcmVhdGUgYSBzdGFjayBvZiBvdmVybGFwcGluZyBwYW5lbHMgYW5kIHVzZQotcGFuZWxzIGxpYnJhcnkgdG8gZGlzcGxheSB0aGVtIGNvcnJlY3RseS4gVGhlcmUgaXMgYSBmdW5jdGlvbgotc2ltaWxhciB0byByZWZyZXNoKCkgd2hpY2gsIHdoZW4gY2FsbGVkICwgZGlzcGxheXMgcGFuZWxzIGluIHRoZQotY29ycmVjdCBvcmRlci4gRnVuY3Rpb25zIGFyZSBwcm92aWRlZCB0byBoaWRlIG9yIHNob3cgcGFuZWxzLCBtb3ZlCi1wYW5lbHMsIGNoYW5nZSBpdHMgc2l6ZSBldGMuLiBUaGUgb3ZlcmxhcHBpbmcgcHJvYmxlbSBpcyBtYW5hZ2VkIGJ5Ci10aGUgcGFuZWxzIGxpYnJhcnkgZHVyaW5nIGFsbCB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zLjwvcD4KLTxwPlRoZSBnZW5lcmFsIGZsb3cgb2YgYSBwYW5lbCBwcm9ncmFtIGdvZXMgbGlrZSB0aGlzOjwvcD4KLTxvbCB0eXBlPSIxIj4KLTxsaT4KLTxwPkNyZWF0ZSB0aGUgd2luZG93cyAod2l0aCBuZXd3aW4oKSkgdG8gYmUgYXR0YWNoZWQgdG8gdGhlCi1wYW5lbHMuPC9wPgotPC9saT4KLTxsaT4KLTxwPkNyZWF0ZSBwYW5lbHMgd2l0aCB0aGUgY2hvc2VuIHZpc2liaWxpdHkgb3JkZXIuIFN0YWNrIHRoZW0gdXAKLWFjY29yZGluZyB0byB0aGUgZGVzaXJlZCB2aXNpYmlsaXR5LiBUaGUgZnVuY3Rpb24gbmV3X3BhbmVsKCkgaXMKLXVzZWQgdG8gY3JlYXRlZCBwYW5lbHMuPC9wPgotPC9saT4KLTxsaT4KLTxwPkNhbGwgdXBkYXRlX3BhbmVscygpIHRvIHdyaXRlIHRoZSBwYW5lbHMgdG8gdGhlIHZpcnR1YWwgc2NyZWVuCi1pbiBjb3JyZWN0IHZpc2liaWxpdHkgb3JkZXIuIERvIGEgZG91cGRhdGUoKSB0byBzaG93IGl0IG9uIHRoZQotc2NyZWVuLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5NYWlucHVsYXRlIHRoZSBwYW5lbHMgd2l0aCBzaG93X3BhbmVsKCksIGhpZGVfcGFuZWwoKSwKLW1vdmVfcGFuZWwoKSBldGMuIE1ha2UgdXNlIG9mIGhlbHBlciBmdW5jdGlvbnMgbGlrZSBwYW5lbF9oaWRkZW4oKQotYW5kIHBhbmVsX3dpbmRvdygpLiBNYWtlIHVzZSBvZiB1c2VyIHBvaW50ZXIgdG8gc3RvcmUgY3VzdG9tIGRhdGEKLWZvciBhIHBhbmVsLiBVc2UgdGhlIGZ1bmN0aW9ucyBzZXRfcGFuZWxfdXNlcnB0cigpIGFuZAotcGFuZWxfdXNlcnB0cigpIHRvIHNldCBhbmQgZ2V0IHRoZSB1c2VyIHBvaW50ZXIgZm9yIGEgcGFuZWwuPC9wPgotPC9saT4KLTxsaT4KLTxwPldoZW4geW91IGFyZSBkb25lIHdpdGggdGhlIHBhbmVsIHVzZSBkZWxfcGFuZWwoKSB0byBkZWxldGUgdGhlCi1wYW5lbC48L3A+Ci08L2xpPgotPC9vbD4KLTxwPkxldCdzIG1ha2UgdGhlIGNvbmNlcHRzIGNsZWFyLCB3aXRoIHNvbWUgcHJvZ3JhbXMuIFRoZSBmb2xsb3dpbmcKLWlzIGEgc2ltcGxlIHByb2dyYW0gd2hpY2ggY3JlYXRlcyAzIG92ZXJsYXBwaW5nIHBhbmVscyBhbmQgc2hvd3MKLXRoZW0gb24gdGhlIHNjcmVlbi48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkNPTVBJTEVQQU5FTFMiIGlkPSJDT01QSUxFUEFORUxTIj4xNi4yLgotQ29tcGlsaW5nIFdpdGggdGhlIFBhbmVscyBMaWJyYXJ5PC9hPjwvaDM+Ci08cD5UbyB1c2UgcGFuZWxzIGxpYnJhcnkgZnVuY3Rpb25zLCB5b3UgaGF2ZSB0byBpbmNsdWRlIHBhbmVsLmggYW5kCi10byBsaW5rIHRoZSBwcm9ncmFtIHdpdGggcGFuZWxzIGxpYnJhcnkgdGhlIGZsYWcgLWxwYW5lbCBzaG91bGQgYmUKLWFkZGVkIGFsb25nIHdpdGggLWxuY3Vyc2VzIGluIHRoYXQgb3JkZXIuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPiAgICAjaW5jbHVkZSAmbHQ7cGFuZWwuaCZndDsKKwlyZXR1cm4gMDsKK308L1NQQU4KKz48L1BSRQorPjwvRElWCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9Ik9USEVSTElCIgorPjE1LiBPdGhlciBsaWJyYXJpZXM8L0EKKz48L0gyCis+PFAKKz5BcGFydCBmcm9tIHRoZSBjdXJzZXMgbGlicmFyeSwgdGhlcmUgYXJlIGZldyB0ZXh0IG1vZGUgbGlicmFyaWVzLCB3aGljaCBwcm92aWRlCittb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGEgbG90IG9mIGZlYXR1cmVzLiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGV4cGxhaW4gdGhyZWUgCitzdGFuZGFyZCBsaWJyYXJpZXMgd2hpY2ggYXJlIHVzdWFsbHkgZGlzdHJpYnV0ZWQgYWxvbmcgd2l0aCBjdXJzZXMuIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iUEFORUxTIgorPjE2LiBQYW5lbCBMaWJyYXJ5PC9BCis+PC9IMgorPjxQCis+Tm93IHRoYXQgeW91IGFyZSBwcm9maWNpZW50IGluIGN1cnNlcywgeW91IHdhbnRlZCB0byBkbyBzb21lIHRoaW5nIGJpZy4gWW91CitjcmVhdGVkIGEgbG90IG9mIG92ZXJsYXBwaW5nIHdpbmRvd3MgdG8gZ2l2ZSBhIHByb2Zlc3Npb25hbCB3aW5kb3dzLXR5cGUgbG9vay4KK1VuZm9ydHVuYXRlbHksIGl0IHNvb24gYmVjb21lcyBkaWZmaWN1bHQgdG8gbWFuYWdlIHRoZXNlLiBUaGUgbXVsdGlwbGUKK3JlZnJlc2hlcywgdXBkYXRlcyBwbHVuZ2UgeW91IGludG8gYSBuaWdodG1hcmUuIFRoZSBvdmVybGFwcGluZyB3aW5kb3dzIGNyZWF0ZQorYmxvdGNoZXMsIHdoZW5ldmVyIHlvdSBmb3JnZXQgdG8gcmVmcmVzaCB0aGUgd2luZG93cyBpbiB0aGUgcHJvcGVyIG9yZGVyLiA8L1AKKz48UAorPkRvbid0IGRlc3BhaXIuIFRoZXJlJ3MgYW4gZWxlZ2FudCBzb2x1dGlvbiBwcm92aWRlZCBpbiBwYW5lbHMgbGlicmFyeS4gSW4gdGhlCit3b3JkcyBvZiBkZXZlbG9wZXJzIG9mIG5jdXJzZXMgPC9QCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+V2hlbiB5b3VyIGludGVyZmFjZSBkZXNpZ24gaXMgc3VjaCB0aGF0IHdpbmRvd3MgbWF5IGRpdmUgZGVlcGVyIGludG8gdGhlCit2aXNpYmlsaXR5IHN0YWNrIG9yIHBvcCB0byB0aGUgdG9wIGF0IHJ1bnRpbWUsIHRoZSByZXN1bHRpbmcgYm9vay1rZWVwaW5nIGNhbiBiZQordGVkaW91cyBhbmQgZGlmZmljdWx0IHRvIGdldCByaWdodC4gSGVuY2UgdGhlIHBhbmVscyBsaWJyYXJ5LjwvSQorPjwvU1BBTgorPjwvUAorPjxQCis+SWYgeW91IGhhdmUgbG90IG9mIG92ZXJsYXBwaW5nIHdpbmRvd3MsIHRoZW4gcGFuZWxzIGxpYnJhcnkgaXMgdGhlIHdheSB0byBnby4gSXQKK29idmlhdGVzIHRoZSBuZWVkIG9mIGRvaW5nIHNlcmllcyBvZiB3bm91dHJlZnJlc2goKSwgZG91cGRhdGUoKSBhbmQgcmVsaWV2ZXMgdGhlCitidXJkZW4gb2YgZG9pbmcgaXQgY29ycmVjdGx5KGJvdHRvbSB1cCkuIFRoZSBsaWJyYXJ5IG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAordGhlIG9yZGVyIG9mIHdpbmRvd3MsIHRoZWlyIG92ZXJsYXBwaW5nIGFuZCB1cGRhdGUgdGhlIHNjcmVlbiBwcm9wZXJseS4gU28gd2h5Cit3YWl0PyBMZXQncyB0YWtlIGEgY2xvc2UgcGVlayBpbnRvIHBhbmVscy48L1AKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJQQU5FTEJBU0lDUyIKKz4xNi4xLiBUaGUgQmFzaWNzPC9BCis+PC9IMworPjxQCis+UGFuZWwgb2JqZWN0IGlzIGEgd2luZG93IHRoYXQgaXMgaW1wbGljaXRseSB0cmVhdGVkIGFzIHBhcnQgb2YgYSBkZWNrIGluY2x1ZGluZworYWxsIG90aGVyIHBhbmVsIG9iamVjdHMuIFRoZSBkZWNrIGlzIHRyZWF0ZWQgYXMgYSBzdGFjayB3aXRoIHRoZSB0b3AgcGFuZWwgYmVpbmcKK2NvbXBsZXRlbHkgdmlzaWJsZSBhbmQgdGhlIG90aGVyIHBhbmVscyBtYXkgb3IgbWF5IG5vdCBiZSBvYnNjdXJlZCBhY2NvcmRpbmcgdG8KK3RoZWlyIHBvc2l0aW9ucy4gU28gdGhlIGJhc2ljIGlkZWEgaXMgdG8gY3JlYXRlIGEgc3RhY2sgb2Ygb3ZlcmxhcHBpbmcgcGFuZWxzCithbmQgdXNlIHBhbmVscyBsaWJyYXJ5IHRvIGRpc3BsYXkgdGhlbSBjb3JyZWN0bHkuIFRoZXJlIGlzIGEgZnVuY3Rpb24gc2ltaWxhciB0bworcmVmcmVzaCgpIHdoaWNoLCB3aGVuIGNhbGxlZCAsIGRpc3BsYXlzIHBhbmVscyBpbiB0aGUgY29ycmVjdCBvcmRlci4gRnVuY3Rpb25zCithcmUgcHJvdmlkZWQgdG8gaGlkZSBvciBzaG93IHBhbmVscywgbW92ZSBwYW5lbHMsIGNoYW5nZSBpdHMgc2l6ZSBldGMuLiBUaGUKK292ZXJsYXBwaW5nIHByb2JsZW0gaXMgbWFuYWdlZCBieSB0aGUgcGFuZWxzIGxpYnJhcnkgZHVyaW5nIGFsbCB0aGUgY2FsbHMgdG8KK3RoZXNlIGZ1bmN0aW9ucy4gPC9QCis+PFAKKz5UaGUgZ2VuZXJhbCBmbG93IG9mIGEgcGFuZWwgcHJvZ3JhbSBnb2VzIGxpa2UgdGhpczoKKworPFAKKz48L1AKKz48T0wKK1RZUEU9IjEiCis+PExJCis+PFAKKz5DcmVhdGUgdGhlIHdpbmRvd3MgKHdpdGggbmV3d2luKCkpIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBwYW5lbHMuPC9QCis+PC9MSQorPjxMSQorPjxQCis+Q3JlYXRlIHBhbmVscyB3aXRoIHRoZSBjaG9zZW4gdmlzaWJpbGl0eSBvcmRlci4gU3RhY2sgdGhlbSB1cCBhY2NvcmRpbmcgdG8gdGhlIAorZGVzaXJlZCB2aXNpYmlsaXR5LiBUaGUgZnVuY3Rpb24gbmV3X3BhbmVsKCkgaXMgdXNlZCB0byBjcmVhdGVkIHBhbmVscy48L1AKKz48L0xJCis+PExJCis+PFAKKz5DYWxsIHVwZGF0ZV9wYW5lbHMoKSB0byB3cml0ZSB0aGUgcGFuZWxzIHRvIHRoZSB2aXJ0dWFsIHNjcmVlbiBpbiBjb3JyZWN0Cit2aXNpYmlsaXR5IG9yZGVyLiBEbyBhIGRvdXBkYXRlKCkgdG8gc2hvdyBpdCBvbiB0aGUgc2NyZWVuLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz5NYWlucHVsYXRlIHRoZSBwYW5lbHMgd2l0aCBzaG93X3BhbmVsKCksIGhpZGVfcGFuZWwoKSwgbW92ZV9wYW5lbCgpIGV0Yy4gTWFrZQordXNlIG9mIGhlbHBlciBmdW5jdGlvbnMgbGlrZSBwYW5lbF9oaWRkZW4oKSBhbmQgcGFuZWxfd2luZG93KCkuIE1ha2UgdXNlIG9mIHVzZXIKK3BvaW50ZXIgdG8gc3RvcmUgY3VzdG9tIGRhdGEgZm9yIGEgcGFuZWwuIFVzZSB0aGUgZnVuY3Rpb25zIHNldF9wYW5lbF91c2VycHRyKCkKK2FuZCBwYW5lbF91c2VycHRyKCkgdG8gc2V0IGFuZCBnZXQgdGhlIHVzZXIgcG9pbnRlciBmb3IgYSBwYW5lbC48L1AKKz48L0xJCis+PExJCis+PFAKKz5XaGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoZSBwYW5lbCB1c2UgZGVsX3BhbmVsKCkgdG8gZGVsZXRlIHRoZSBwYW5lbC48L1AKKz48L0xJCis+PC9PTAorPjwvUAorPjxQCis+TGV0J3MgbWFrZSB0aGUgY29uY2VwdHMgY2xlYXIsIHdpdGggc29tZSBwcm9ncmFtcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBzaW1wbGUKK3Byb2dyYW0gd2hpY2ggY3JlYXRlcyAzIG92ZXJsYXBwaW5nIHBhbmVscyBhbmQgc2hvd3MgdGhlbSBvbiB0aGUgc2NyZWVuLiA8L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkNPTVBJTEVQQU5FTFMiCis+MTYuMi4gQ29tcGlsaW5nIFdpdGggdGhlIFBhbmVscyBMaWJyYXJ5PC9BCis+PC9IMworPjxQCis+VG8gdXNlIHBhbmVscyBsaWJyYXJ5IGZ1bmN0aW9ucywgeW91IGhhdmUgdG8gaW5jbHVkZSBwYW5lbC5oIGFuZCB0byBsaW5rIHRoZQorcHJvZ3JhbSB3aXRoIHBhbmVscyBsaWJyYXJ5IHRoZSBmbGFnIC1scGFuZWwgc2hvdWxkIGJlIGFkZGVkIGFsb25nIHdpdGgKKy1sbmN1cnNlcyBpbiB0aGF0IG9yZGVyLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgI2luY2x1ZGUgJmx0O3BhbmVsLmgmZ3Q7CiAgICAgLgogICAgIC4KICAgICAuCiAKLSAgICBjb21waWxlIGFuZCBsaW5rOiBnY2MgJmx0O3Byb2dyYW0gZmlsZSZndDsgLWxwYW5lbCAtbG5jdXJzZXM8L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJQUEFTSSIgaWQ9IlBQQVNJIj48L2E+Ci08cD48Yj5FeGFtcGxlIDE0LiBQYW5lbCBiYXNpY3M8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7cGFuZWwuaCZndDsKKyAgICBjb21waWxlIGFuZCBsaW5rOiBnY2MgJmx0O3Byb2dyYW0gZmlsZSZndDsgLWxwYW5lbCAtbG5jdXJzZXM8L1BSRQorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJQUEFTSSIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAxNC4gIFBhbmVsIGJhc2ljczwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7cGFuZWwuaCYjNjI7CiAKIGludCBtYWluKCkKLXsgICAgICAgV0lORE9XICpteV93aW5zWzNdOwotICAgICAgICBQQU5FTCAgKm15X3BhbmVsc1szXTsKLSAgICAgICAgaW50IGxpbmVzID0gMTAsIGNvbHMgPSA0MCwgeSA9IDIsIHggPSA0LCBpOworewlXSU5ET1cgKm15X3dpbnNbM107CisJUEFORUwgICpteV9wYW5lbHNbM107CisJaW50IGxpbmVzID0gMTAsIGNvbHMgPSA0MCwgeSA9IDIsIHggPSA0LCBpOwogCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgY2JyZWFrKCk7Ci0gICAgICAgIG5vZWNobygpOworCWluaXRzY3IoKTsKKwljYnJlYWsoKTsKKwlub2VjaG8oKTsKIAotICAgICAgICAvKiBDcmVhdGUgd2luZG93cyBmb3IgdGhlIHBhbmVscyAqLwotICAgICAgICBteV93aW5zWzBdID0gbmV3d2luKGxpbmVzLCBjb2xzLCB5LCB4KTsKLSAgICAgICAgbXlfd2luc1sxXSA9IG5ld3dpbihsaW5lcywgY29scywgeSArIDEsIHggKyA1KTsKLSAgICAgICAgbXlfd2luc1syXSA9IG5ld3dpbihsaW5lcywgY29scywgeSArIDIsIHggKyAxMCk7CisJLyogQ3JlYXRlIHdpbmRvd3MgZm9yIHRoZSBwYW5lbHMgKi8KKwlteV93aW5zWzBdID0gbmV3d2luKGxpbmVzLCBjb2xzLCB5LCB4KTsKKwlteV93aW5zWzFdID0gbmV3d2luKGxpbmVzLCBjb2xzLCB5ICsgMSwgeCArIDUpOworCW15X3dpbnNbMl0gPSBuZXd3aW4obGluZXMsIGNvbHMsIHkgKyAyLCB4ICsgMTApOwogCi0gICAgICAgIC8qIAotICAgICAgICAgKiBDcmVhdGUgYm9yZGVycyBhcm91bmQgdGhlIHdpbmRvd3Mgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgZWZmZWN0Ci0gICAgICAgICAqIG9mIHBhbmVscwotICAgICAgICAgKi8KLSAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgMzsgKytpKQotICAgICAgICAgICAgICAgIGJveChteV93aW5zW2ldLCAwLCAwKTsKKwkvKiAKKwkgKiBDcmVhdGUgYm9yZGVycyBhcm91bmQgdGhlIHdpbmRvd3Mgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgZWZmZWN0CisJICogb2YgcGFuZWxzCisJICovCisJZm9yKGkgPSAwOyBpICYjNjA7IDM7ICsraSkKKwkJYm94KG15X3dpbnNbaV0sIDAsIDApOwogCi0gICAgICAgIC8qIEF0dGFjaCBhIHBhbmVsIHRvIGVhY2ggd2luZG93ICovICAgICAvKiBPcmRlciBpcyBib3R0b20gdXAgKi8KLSAgICAgICAgbXlfcGFuZWxzWzBdID0gbmV3X3BhbmVsKG15X3dpbnNbMF0pOyAgIC8qIFB1c2ggMCwgb3JkZXI6IHN0ZHNjci0wICovCi0gICAgICAgIG15X3BhbmVsc1sxXSA9IG5ld19wYW5lbChteV93aW5zWzFdKTsgICAvKiBQdXNoIDEsIG9yZGVyOiBzdGRzY3ItMC0xICovCi0gICAgICAgIG15X3BhbmVsc1syXSA9IG5ld19wYW5lbChteV93aW5zWzJdKTsgICAvKiBQdXNoIDIsIG9yZGVyOiBzdGRzY3ItMC0xLTIgKi8KKwkvKiBBdHRhY2ggYSBwYW5lbCB0byBlYWNoIHdpbmRvdyAqLyAJLyogT3JkZXIgaXMgYm90dG9tIHVwICovCisJbXlfcGFuZWxzWzBdID0gbmV3X3BhbmVsKG15X3dpbnNbMF0pOyAJLyogUHVzaCAwLCBvcmRlcjogc3Rkc2NyLTAgKi8KKwlteV9wYW5lbHNbMV0gPSBuZXdfcGFuZWwobXlfd2luc1sxXSk7IAkvKiBQdXNoIDEsIG9yZGVyOiBzdGRzY3ItMC0xICovCisJbXlfcGFuZWxzWzJdID0gbmV3X3BhbmVsKG15X3dpbnNbMl0pOyAJLyogUHVzaCAyLCBvcmRlcjogc3Rkc2NyLTAtMS0yICovCiAKLSAgICAgICAgLyogVXBkYXRlIHRoZSBzdGFja2luZyBvcmRlci4gMm5kIHBhbmVsIHdpbGwgYmUgb24gdG9wICovCi0gICAgICAgIHVwZGF0ZV9wYW5lbHMoKTsKKwkvKiBVcGRhdGUgdGhlIHN0YWNraW5nIG9yZGVyLiAybmQgcGFuZWwgd2lsbCBiZSBvbiB0b3AgKi8KKwl1cGRhdGVfcGFuZWxzKCk7CiAKLSAgICAgICAgLyogU2hvdyBpdCBvbiB0aGUgc2NyZWVuICovCi0gICAgICAgIGRvdXBkYXRlKCk7Ci0gICAgICAgIAotICAgICAgICBnZXRjaCgpOwotICAgICAgICBlbmR3aW4oKTsKKwkvKiBTaG93IGl0IG9uIHRoZSBzY3JlZW4gKi8KKwlkb3VwZGF0ZSgpOworCQorCWdldGNoKCk7CisJZW5kd2luKCk7CiB9Ci08L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08cD5BcyB5b3UgY2FuIHNlZSwgYWJvdmUgcHJvZ3JhbSBmb2xsb3dzIGEgc2ltcGxlIGZsb3cgYXMKLWV4cGxhaW5lZC4gVGhlIHdpbmRvd3MgYXJlIGNyZWF0ZWQgd2l0aCBuZXd3aW4oKSBhbmQgdGhlbiB0aGV5IGFyZQotYXR0YWNoZWQgdG8gcGFuZWxzIHdpdGggbmV3X3BhbmVsKCkuIEFzIHdlIGF0dGFjaCBvbmUgcGFuZWwgYWZ0ZXIKLWFub3RoZXIsIHRoZSBzdGFjayBvZiBwYW5lbHMgZ2V0cyB1cGRhdGVkLiBUbyBwdXQgdGhlbSBvbiBzY3JlZW4KLXVwZGF0ZV9wYW5lbHMoKSBhbmQgZG91cGRhdGUoKSBhcmUgY2FsbGVkLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iUEFORUxCUk9XU0lORyIgaWQ9IlBBTkVMQlJPV1NJTkciPjE2LjMuCi1QYW5lbCBXaW5kb3cgQnJvd3Npbmc8L2E+PC9oMz4KLTxwPkEgc2xpZ2h0bHkgY29tcGxpY2F0ZWQgZXhhbXBsZSBpcyBnaXZlbiBiZWxvdy4gVGhpcyBwcm9ncmFtCi1jcmVhdGVzIDMgd2luZG93cyB3aGljaCBjYW4gYmUgY3ljbGVkIHRocm91Z2ggdXNpbmcgdGFiLiBIYXZlIGEKLWxvb2sgYXQgdGhlIGNvZGUuPC9wPgotPGRpdiBjbGFzcz0iRVhBTVBMRSI+PGEgbmFtZT0iUFBBQlIiIGlkPSJQUEFCUiI+PC9hPgotPHA+PGI+RXhhbXBsZSAxNS4gUGFuZWwgV2luZG93IEJyb3dzaW5nIEV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7cGFuZWwuaCZndDsKKzwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPkFzIHlvdSBjYW4gc2VlLCBhYm92ZSBwcm9ncmFtIGZvbGxvd3MgYSBzaW1wbGUgZmxvdyBhcyBleHBsYWluZWQuIFRoZSB3aW5kb3dzCithcmUgY3JlYXRlZCB3aXRoIG5ld3dpbigpIGFuZCB0aGVuIHRoZXkgYXJlIGF0dGFjaGVkIHRvIHBhbmVscyB3aXRoIG5ld19wYW5lbCgpLgorQXMgd2UgYXR0YWNoIG9uZSBwYW5lbCBhZnRlciBhbm90aGVyLCB0aGUgc3RhY2sgb2YgcGFuZWxzIGdldHMgdXBkYXRlZC4gVG8gcHV0Cit0aGVtIG9uIHNjcmVlbiB1cGRhdGVfcGFuZWxzKCkgYW5kIGRvdXBkYXRlKCkgYXJlIGNhbGxlZC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlBBTkVMQlJPV1NJTkciCis+MTYuMy4gUGFuZWwgV2luZG93IEJyb3dzaW5nPC9BCis+PC9IMworPjxQCis+QSBzbGlnaHRseSBjb21wbGljYXRlZCBleGFtcGxlIGlzIGdpdmVuIGJlbG93LiBUaGlzIHByb2dyYW0gY3JlYXRlcyAzCit3aW5kb3dzIHdoaWNoIGNhbiBiZSBjeWNsZWQgdGhyb3VnaCB1c2luZyB0YWIuIEhhdmUgYSBsb29rIGF0IHRoZSBjb2RlLjwvUAorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJQUEFCUiIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAxNS4gIFBhbmVsIFdpbmRvdyBCcm93c2luZyBFeGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7cGFuZWwuaCYjNjI7CiAKICNkZWZpbmUgTkxJTkVTIDEwCiAjZGVmaW5lIE5DT0xTIDQwCkBAIC0yOTc0LDE3MiArNDQyMSwxOTEgQEAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKTsKIAogaW50IG1haW4oKQoteyAgICAgICBXSU5ET1cgKm15X3dpbnNbM107Ci0gICAgICAgIFBBTkVMICAqbXlfcGFuZWxzWzNdOwotICAgICAgICBQQU5FTCAgKnRvcDsKLSAgICAgICAgaW50IGNoOworewlXSU5ET1cgKm15X3dpbnNbM107CisJUEFORUwgICpteV9wYW5lbHNbM107CisJUEFORUwgICp0b3A7CisJaW50IGNoOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgY3Vyc2VzICovCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgc3RhcnRfY29sb3IoKTsKLSAgICAgICAgY2JyZWFrKCk7Ci0gICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwkvKiBJbml0aWFsaXplIGN1cnNlcyAqLworCWluaXRzY3IoKTsKKwlzdGFydF9jb2xvcigpOworCWNicmVhaygpOworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgYWxsIHRoZSBjb2xvcnMgKi8KLSAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMiwgQ09MT1JfR1JFRU4sIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDMsIENPTE9SX0JMVUUsIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDQsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKKwkvKiBJbml0aWFsaXplIGFsbCB0aGUgY29sb3JzICovCisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigyLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigzLCBDT0xPUl9CTFVFLCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDQsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKIAotICAgICAgICBpbml0X3dpbnMobXlfd2lucywgMyk7Ci0gICAgICAgIAotICAgICAgICAvKiBBdHRhY2ggYSBwYW5lbCB0byBlYWNoIHdpbmRvdyAqLyAgICAgLyogT3JkZXIgaXMgYm90dG9tIHVwICovCi0gICAgICAgIG15X3BhbmVsc1swXSA9IG5ld19wYW5lbChteV93aW5zWzBdKTsgICAvKiBQdXNoIDAsIG9yZGVyOiBzdGRzY3ItMCAqLwotICAgICAgICBteV9wYW5lbHNbMV0gPSBuZXdfcGFuZWwobXlfd2luc1sxXSk7ICAgLyogUHVzaCAxLCBvcmRlcjogc3Rkc2NyLTAtMSAqLwotICAgICAgICBteV9wYW5lbHNbMl0gPSBuZXdfcGFuZWwobXlfd2luc1syXSk7ICAgLyogUHVzaCAyLCBvcmRlcjogc3Rkc2NyLTAtMS0yICovCisJaW5pdF93aW5zKG15X3dpbnMsIDMpOworCQorCS8qIEF0dGFjaCBhIHBhbmVsIHRvIGVhY2ggd2luZG93ICovIAkvKiBPcmRlciBpcyBib3R0b20gdXAgKi8KKwlteV9wYW5lbHNbMF0gPSBuZXdfcGFuZWwobXlfd2luc1swXSk7IAkvKiBQdXNoIDAsIG9yZGVyOiBzdGRzY3ItMCAqLworCW15X3BhbmVsc1sxXSA9IG5ld19wYW5lbChteV93aW5zWzFdKTsgCS8qIFB1c2ggMSwgb3JkZXI6IHN0ZHNjci0wLTEgKi8KKwlteV9wYW5lbHNbMl0gPSBuZXdfcGFuZWwobXlfd2luc1syXSk7IAkvKiBQdXNoIDIsIG9yZGVyOiBzdGRzY3ItMC0xLTIgKi8KIAotICAgICAgICAvKiBTZXQgdXAgdGhlIHVzZXIgcG9pbnRlcnMgdG8gdGhlIG5leHQgcGFuZWwgKi8KLSAgICAgICAgc2V0X3BhbmVsX3VzZXJwdHIobXlfcGFuZWxzWzBdLCBteV9wYW5lbHNbMV0pOwotICAgICAgICBzZXRfcGFuZWxfdXNlcnB0cihteV9wYW5lbHNbMV0sIG15X3BhbmVsc1syXSk7Ci0gICAgICAgIHNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1syXSwgbXlfcGFuZWxzWzBdKTsKKwkvKiBTZXQgdXAgdGhlIHVzZXIgcG9pbnRlcnMgdG8gdGhlIG5leHQgcGFuZWwgKi8KKwlzZXRfcGFuZWxfdXNlcnB0cihteV9wYW5lbHNbMF0sIG15X3BhbmVsc1sxXSk7CisJc2V0X3BhbmVsX3VzZXJwdHIobXlfcGFuZWxzWzFdLCBteV9wYW5lbHNbMl0pOworCXNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1syXSwgbXlfcGFuZWxzWzBdKTsKIAotICAgICAgICAvKiBVcGRhdGUgdGhlIHN0YWNraW5nIG9yZGVyLiAybmQgcGFuZWwgd2lsbCBiZSBvbiB0b3AgKi8KLSAgICAgICAgdXBkYXRlX3BhbmVscygpOworCS8qIFVwZGF0ZSB0aGUgc3RhY2tpbmcgb3JkZXIuIDJuZCBwYW5lbCB3aWxsIGJlIG9uIHRvcCAqLworCXVwZGF0ZV9wYW5lbHMoKTsKIAotICAgICAgICAvKiBTaG93IGl0IG9uIHRoZSBzY3JlZW4gKi8KLSAgICAgICAgYXR0cm9uKENPTE9SX1BBSVIoNCkpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgdGFiIHRvIGJyb3dzZSB0aHJvdWdoIHRoZSB3aW5kb3dzIChGMSB0byBFeGl0KSIpOwotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoNCkpOwotICAgICAgICBkb3VwZGF0ZSgpOworCS8qIFNob3cgaXQgb24gdGhlIHNjcmVlbiAqLworCWF0dHJvbihDT0xPUl9QQUlSKDQpKTsKKwltdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgdGFiIHRvIGJyb3dzZSB0aHJvdWdoIHRoZSB3aW5kb3dzIChGMSB0byBFeGl0KSIpOworCWF0dHJvZmYoQ09MT1JfUEFJUig0KSk7CisJZG91cGRhdGUoKTsKIAotICAgICAgICB0b3AgPSBteV9wYW5lbHNbMl07Ci0gICAgICAgIHdoaWxlKChjaCA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQotICAgICAgICB7ICAgICAgIHN3aXRjaChjaCkKLSAgICAgICAgICAgICAgICB7ICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gKFBBTkVMICopcGFuZWxfdXNlcnB0cih0b3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BfcGFuZWwodG9wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZV9wYW5lbHMoKTsKLSAgICAgICAgICAgICAgICBkb3VwZGF0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVuZHdpbigpOwotICAgICAgICByZXR1cm4gMDsKKwl0b3AgPSBteV9wYW5lbHNbMl07CisJd2hpbGUoKGNoID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCisJewlzd2l0Y2goY2gpCisJCXsJY2FzZSA5OgorCQkJCXRvcCA9IChQQU5FTCAqKXBhbmVsX3VzZXJwdHIodG9wKTsKKwkJCQl0b3BfcGFuZWwodG9wKTsKKwkJCQlicmVhazsKKwkJfQorCQl1cGRhdGVfcGFuZWxzKCk7CisJCWRvdXBkYXRlKCk7CisJfQorCWVuZHdpbigpOworCXJldHVybiAwOwogfQogCiAvKiBQdXQgYWxsIHRoZSB3aW5kb3dzICovCiB2b2lkIGluaXRfd2lucyhXSU5ET1cgKip3aW5zLCBpbnQgbikKLXsgICAgICAgaW50IHgsIHksIGk7Ci0gICAgICAgIGNoYXIgbGFiZWxbODBdOworewlpbnQgeCwgeSwgaTsKKwljaGFyIGxhYmVsWzgwXTsKIAotICAgICAgICB5ID0gMjsKLSAgICAgICAgeCA9IDEwOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuOyArK2kpCi0gICAgICAgIHsgICAgICAgd2luc1tpXSA9IG5ld3dpbihOTElORVMsIE5DT0xTLCB5LCB4KTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKGxhYmVsLCAiV2luZG93IE51bWJlciAlZCIsIGkgKyAxKTsKLSAgICAgICAgICAgICAgICB3aW5fc2hvdyh3aW5zW2ldLCBsYWJlbCwgaSArIDEpOwotICAgICAgICAgICAgICAgIHkgKz0gMzsKLSAgICAgICAgICAgICAgICB4ICs9IDc7Ci0gICAgICAgIH0KKwl5ID0gMjsKKwl4ID0gMTA7CisJZm9yKGkgPSAwOyBpICYjNjA7IG47ICsraSkKKwl7CXdpbnNbaV0gPSBuZXd3aW4oTkxJTkVTLCBOQ09MUywgeSwgeCk7CisJCXNwcmludGYobGFiZWwsICJXaW5kb3cgTnVtYmVyICVkIiwgaSArIDEpOworCQl3aW5fc2hvdyh3aW5zW2ldLCBsYWJlbCwgaSArIDEpOworCQl5ICs9IDM7CisJCXggKz0gNzsKKwl9CiB9CiAKIC8qIFNob3cgdGhlIHdpbmRvdyB3aXRoIGEgYm9yZGVyIGFuZCBhIGxhYmVsICovCiB2b2lkIHdpbl9zaG93KFdJTkRPVyAqd2luLCBjaGFyICpsYWJlbCwgaW50IGxhYmVsX2NvbG9yKQoteyAgICAgICBpbnQgc3RhcnR4LCBzdGFydHksIGhlaWdodCwgd2lkdGg7Cit7CWludCBzdGFydHgsIHN0YXJ0eSwgaGVpZ2h0LCB3aWR0aDsKIAotICAgICAgICBnZXRiZWd5eCh3aW4sIHN0YXJ0eSwgc3RhcnR4KTsKLSAgICAgICAgZ2V0bWF4eXgod2luLCBoZWlnaHQsIHdpZHRoKTsKKwlnZXRiZWd5eCh3aW4sIHN0YXJ0eSwgc3RhcnR4KTsKKwlnZXRtYXh5eCh3aW4sIGhlaWdodCwgd2lkdGgpOwogCi0gICAgICAgIGJveCh3aW4sIDAsIDApOwotICAgICAgICBtdndhZGRjaCh3aW4sIDIsIDAsIEFDU19MVEVFKTsgCi0gICAgICAgIG12d2hsaW5lKHdpbiwgMiwgMSwgQUNTX0hMSU5FLCB3aWR0aCAtIDIpOyAKLSAgICAgICAgbXZ3YWRkY2god2luLCAyLCB3aWR0aCAtIDEsIEFDU19SVEVFKTsgCi0gICAgICAgIAotICAgICAgICBwcmludF9pbl9taWRkbGUod2luLCAxLCAwLCB3aWR0aCwgbGFiZWwsIENPTE9SX1BBSVIobGFiZWxfY29sb3IpKTsKKwlib3god2luLCAwLCAwKTsKKwltdndhZGRjaCh3aW4sIDIsIDAsIEFDU19MVEVFKTsgCisJbXZ3aGxpbmUod2luLCAyLCAxLCBBQ1NfSExJTkUsIHdpZHRoIC0gMik7IAorCW12d2FkZGNoKHdpbiwgMiwgd2lkdGggLSAxLCBBQ1NfUlRFRSk7IAorCQorCXByaW50X2luX21pZGRsZSh3aW4sIDEsIDAsIHdpZHRoLCBsYWJlbCwgQ09MT1JfUEFJUihsYWJlbF9jb2xvcikpOwogfQogCiB2b2lkIHByaW50X2luX21pZGRsZShXSU5ET1cgKndpbiwgaW50IHN0YXJ0eSwgaW50IHN0YXJ0eCwgaW50IHdpZHRoLCBjaGFyICpzdHJpbmcsIGNodHlwZSBjb2xvcikKLXsgICAgICAgaW50IGxlbmd0aCwgeCwgeTsKLSAgICAgICAgZmxvYXQgdGVtcDsKK3sJaW50IGxlbmd0aCwgeCwgeTsKKwlmbG9hdCB0ZW1wOwogCi0gICAgICAgIGlmKHdpbiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHdpbiA9IHN0ZHNjcjsKLSAgICAgICAgZ2V0eXgod2luLCB5LCB4KTsKLSAgICAgICAgaWYoc3RhcnR4ICE9IDApCi0gICAgICAgICAgICAgICAgeCA9IHN0YXJ0eDsKLSAgICAgICAgaWYoc3RhcnR5ICE9IDApCi0gICAgICAgICAgICAgICAgeSA9IHN0YXJ0eTsKLSAgICAgICAgaWYod2lkdGggPT0gMCkKLSAgICAgICAgICAgICAgICB3aWR0aCA9IDgwOworCWlmKHdpbiA9PSBOVUxMKQorCQl3aW4gPSBzdGRzY3I7CisJZ2V0eXgod2luLCB5LCB4KTsKKwlpZihzdGFydHggIT0gMCkKKwkJeCA9IHN0YXJ0eDsKKwlpZihzdGFydHkgIT0gMCkKKwkJeSA9IHN0YXJ0eTsKKwlpZih3aWR0aCA9PSAwKQorCQl3aWR0aCA9IDgwOwogCi0gICAgICAgIGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwotICAgICAgICB0ZW1wID0gKHdpZHRoIC0gbGVuZ3RoKS8gMjsKLSAgICAgICAgeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKLSAgICAgICAgd2F0dHJvbih3aW4sIGNvbG9yKTsKLSAgICAgICAgbXZ3cHJpbnR3KHdpbiwgeSwgeCwgIiVzIiwgc3RyaW5nKTsKLSAgICAgICAgd2F0dHJvZmYod2luLCBjb2xvcik7Ci0gICAgICAgIHJlZnJlc2goKTsKLX08L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlVTRVJQVFJVU0lORyIgaWQ9IlVTRVJQVFJVU0lORyI+MTYuNC4KLVVzaW5nIFVzZXIgUG9pbnRlcnM8L2E+PC9oMz4KLTxwPkluIHRoZSBhYm92ZSBleGFtcGxlIEkgdXNlZCB1c2VyIHBvaW50ZXJzIHRvIGZpbmQgb3V0IHRoZSBuZXh0Ci13aW5kb3cgaW4gdGhlIGN5Y2xlLiBXZSBjYW4gYXR0YWNoIGN1c3RvbSBpbmZvcm1hdGlvbiB0byB0aGUgcGFuZWwKLWJ5IHNwZWNpZnlpbmcgYSB1c2VyIHBvaW50ZXIsIHdoaWNoIGNhbiBwb2ludCB0byBhbnkgaW5mb3JtYXRpb24KLXlvdSB3YW50IHRvIHN0b3JlLiBJbiB0aGlzIGNhc2UgSSBzdG9yZWQgdGhlIHBvaW50ZXIgdG8gdGhlIG5leHQKLXBhbmVsIGluIHRoZSBjeWNsZS4gVXNlciBwb2ludGVyIGZvciBhIHBhbmVsIGNhbiBiZSBzZXQgd2l0aCB0aGUKLWZ1bmN0aW9uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPnNldF9wYW5lbF91c2VycHRyKCk8L3Zhcj4uIEl0IGNhbiBiZQotYWNjZXNzZWQgdXNpbmcgdGhlIGZ1bmN0aW9uIDx2YXIgY2xhc3M9Ci0iTElURVJBTCI+cGFuZWxfdXNlcnB0cigpPC92YXI+IHdoaWNoIHdpbGwgcmV0dXJuIHRoZSB1c2VyIHBvaW50ZXIKLWZvciB0aGUgcGFuZWwgZ2l2ZW4gYXMgYXJndW1lbnQuIEFmdGVyIGZpbmRpbmcgdGhlIG5leHQgcGFuZWwgaW4KLXRoZSBjeWNsZSBJdCdzIGJyb3VnaHQgdG8gdGhlIHRvcCBieSB0aGUgZnVuY3Rpb24gdG9wX3BhbmVsKCkuIFRoaXMKLWZ1bmN0aW9uIGJyaW5ncyB0aGUgcGFuZWwgZ2l2ZW4gYXMgYXJndW1lbnQgdG8gdGhlIHRvcCBvZiB0aGUgcGFuZWwKLXN0YWNrLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iUEFORUxNT1ZFUkVTSVpFIiBpZD0KLSJQQU5FTE1PVkVSRVNJWkUiPjE2LjUuIE1vdmluZyBhbmQgUmVzaXppbmcgUGFuZWxzPC9hPjwvaDM+Ci08cD5UaGUgZnVuY3Rpb24gPHZhciBjbGFzcz0iTElURVJBTCI+bW92ZV9wYW5lbCgpPC92YXI+IGNhbiBiZSB1c2VkCi10byBtb3ZlIGEgcGFuZWwgdG8gdGhlIGRlc2lyZWQgbG9jYXRpb24uIEl0IGRvZXMgbm90IGNoYW5nZSB0aGUKLXBvc2l0aW9uIG9mIHRoZSBwYW5lbCBpbiB0aGUgc3RhY2suIE1ha2Ugc3VyZSB0aGF0IHlvdSB1c2UKLW1vdmVfcGFuZWwoKSBpbnN0ZWFkIG12d2luKCkgb24gdGhlIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlCi1wYW5lbC48L3A+Ci08cD5SZXNpemluZyBhIHBhbmVsIGlzIHNsaWdodGx5IGNvbXBsZXguIFRoZXJlIGlzIG5vIHN0cmFpZ2h0Ci1mb3J3YXJkIGZ1bmN0aW9uIGp1c3QgdG8gcmVzaXplIHRoZSB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIGEgcGFuZWwuCi1BIHNvbHV0aW9uIHRvIHJlc2l6ZSBhIHBhbmVsIGlzIHRvIGNyZWF0ZSBhIG5ldyB3aW5kb3cgd2l0aCB0aGUKLWRlc2lyZWQgc2l6ZXMsIGNoYW5nZSB0aGUgd2luZG93IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFuZWwgdXNpbmcKLXJlcGxhY2VfcGFuZWwoKS4gRG9uJ3QgZm9yZ2V0IHRvIGRlbGV0ZSB0aGUgb2xkIHdpbmRvdy4gVGhlIHdpbmRvdwotYXNzb2NpYXRlZCB3aXRoIGEgcGFuZWwgY2FuIGJlIGZvdW5kIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbgotcGFuZWxfd2luZG93KCkuPC9wPgotPHA+VGhlIGZvbGxvd2luZyBwcm9ncmFtIHNob3dzIHRoZXNlIGNvbmNlcHRzLCBpbiBzdXBwb3NlZGx5IHNpbXBsZQotcHJvZ3JhbS4gWW91IGNhbiBjeWNsZSB0aHJvdWdoIHRoZSB3aW5kb3cgd2l0aCAmbHQ7VEFCJmd0OyBhcwotdXN1YWwuIFRvIHJlc2l6ZSBvciBtb3ZlIHRoZSBhY3RpdmUgcGFuZWwgcHJlc3MgJ3InIGZvciByZXNpemUgJ20nCi1mb3IgbW92aW5nLiBUaGVuIHVzZSBhcnJvdyBrZXlzIHRvIHJlc2l6ZSBvciBtb3ZlIGl0IHRvIHRoZSBkZXNpcmVkCi13YXkgYW5kIHByZXNzIGVudGVyIHRvIGVuZCB5b3VyIHJlc2l6aW5nIG9yIG1vdmluZy4gVGhpcyBleGFtcGxlCi1tYWtlcyB1c2Ugb2YgdXNlciBkYXRhIHRvIGdldCB0aGUgcmVxdWlyZWQgZGF0YSB0byBkbyB0aGUKLW9wZXJhdGlvbnMuPC9wPgotPGRpdiBjbGFzcz0iRVhBTVBMRSI+PGEgbmFtZT0iUFBBUkUiIGlkPSJQUEFSRSI+PC9hPgotPHA+PGI+RXhhbXBsZSAxNi4gUGFuZWwgTW92aW5nIGFuZCBSZXNpemluZyBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O3BhbmVsLmgmZ3Q7CisJbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CisJdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7CisJeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKKwl3YXR0cm9uKHdpbiwgY29sb3IpOworCW12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7CisJd2F0dHJvZmYod2luLCBjb2xvcik7CisJcmVmcmVzaCgpOworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlVTRVJQVFJVU0lORyIKKz4xNi40LiBVc2luZyBVc2VyIFBvaW50ZXJzPC9BCis+PC9IMworPjxQCis+SW4gdGhlIGFib3ZlIGV4YW1wbGUgSSB1c2VkIHVzZXIgcG9pbnRlcnMgdG8gZmluZCBvdXQgdGhlIG5leHQgd2luZG93IGluIHRoZQorY3ljbGUuICBXZSBjYW4gYXR0YWNoIGN1c3RvbSBpbmZvcm1hdGlvbiB0byB0aGUgcGFuZWwgYnkgc3BlY2lmeWluZyBhIHVzZXIKK3BvaW50ZXIsIHdoaWNoIGNhbiBwb2ludCB0byBhbnkgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gc3RvcmUuIEluIHRoaXMgY2FzZSBJCitzdG9yZWQgdGhlIHBvaW50ZXIgdG8gdGhlIG5leHQgcGFuZWwgaW4gdGhlIGN5Y2xlLiBVc2VyIHBvaW50ZXIgZm9yIGEgcGFuZWwgY2FuCitiZSBzZXQgd2l0aCB0aGUgZnVuY3Rpb24gPFRUCitDTEFTUz0iTElURVJBTCIKKz4gc2V0X3BhbmVsX3VzZXJwdHIoKTwvVFQKKz4uCitJdCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIGZ1bmN0aW9uIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cGFuZWxfdXNlcnB0cigpPC9UVAorPiB3aGljaCB3aWxsIHJldHVybiB0aGUgdXNlciBwb2ludGVyIGZvciB0aGUgcGFuZWwgZ2l2ZW4gYXMKK2FyZ3VtZW50LiBBZnRlciBmaW5kaW5nIHRoZSBuZXh0IHBhbmVsIGluIHRoZSBjeWNsZSBJdCdzIGJyb3VnaHQgdG8gdGhlIHRvcCBieQordGhlIGZ1bmN0aW9uIHRvcF9wYW5lbCgpLiAgVGhpcyBmdW5jdGlvbiBicmluZ3MgdGhlIHBhbmVsIGdpdmVuIGFzIGFyZ3VtZW50IHRvCit0aGUgdG9wIG9mIHRoZSBwYW5lbCBzdGFjay4gIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iUEFORUxNT1ZFUkVTSVpFIgorPjE2LjUuIE1vdmluZyBhbmQgUmVzaXppbmcgUGFuZWxzPC9BCis+PC9IMworPjxQCis+VGhlIGZ1bmN0aW9uIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bW92ZV9wYW5lbCgpPC9UVAorPiBjYW4gYmUgdXNlZCB0byBtb3ZlIGEKK3BhbmVsIHRvIHRoZSBkZXNpcmVkIGxvY2F0aW9uLiBJdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwYW5lbCBpbgordGhlIHN0YWNrLiBNYWtlIHN1cmUgdGhhdCB5b3UgdXNlIG1vdmVfcGFuZWwoKSBpbnN0ZWFkIG12d2luKCkgb24gdGhlIHdpbmRvdworYXNzb2NpYXRlZCB3aXRoIHRoZSBwYW5lbC48L1AKKz48UAorPlJlc2l6aW5nIGEgcGFuZWwgaXMgc2xpZ2h0bHkgY29tcGxleC4gIFRoZXJlIGlzIG5vIHN0cmFpZ2h0IGZvcndhcmQgZnVuY3Rpb24KK2p1c3QgdG8gcmVzaXplIHRoZSB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIGEgcGFuZWwuIEEgc29sdXRpb24gdG8gcmVzaXplIGEgcGFuZWwKK2lzIHRvIGNyZWF0ZSBhIG5ldyB3aW5kb3cgd2l0aCB0aGUgZGVzaXJlZCBzaXplcywgY2hhbmdlIHRoZSB3aW5kb3cgYXNzb2NpYXRlZAord2l0aCB0aGUgcGFuZWwgdXNpbmcgcmVwbGFjZV9wYW5lbCgpLiBEb24ndCBmb3JnZXQgdG8gZGVsZXRlIHRoZSBvbGQgd2luZG93LiBUaGUKK3dpbmRvdyBhc3NvY2lhdGVkIHdpdGggYSBwYW5lbCBjYW4gYmUgZm91bmQgYnkgdXNpbmcgdGhlIGZ1bmN0aW9uCitwYW5lbF93aW5kb3coKS48L1AKKz48UAorPlRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBzaG93cyB0aGVzZSBjb25jZXB0cywgaW4gc3VwcG9zZWRseSBzaW1wbGUgcHJvZ3JhbS4gWW91CitjYW4gY3ljbGUgdGhyb3VnaCB0aGUgd2luZG93IHdpdGggJmx0O1RBQiZndDsgYXMgdXN1YWwuIFRvIHJlc2l6ZSBvciBtb3ZlIHRoZQorYWN0aXZlIHBhbmVsIHByZXNzICdyJyBmb3IgcmVzaXplICdtJyBmb3IgbW92aW5nLiBUaGVuIHVzZSBhcnJvdyBrZXlzIHRvIHJlc2l6ZQorb3IgbW92ZSBpdCB0byB0aGUgZGVzaXJlZCB3YXkgYW5kIHByZXNzIGVudGVyIHRvIGVuZCB5b3VyIHJlc2l6aW5nIG9yIG1vdmluZy4KK1RoaXMgZXhhbXBsZSBtYWtlcyB1c2Ugb2YgdXNlciBkYXRhIHRvIGdldCB0aGUgcmVxdWlyZWQgZGF0YSB0byBkbyB0aGUKK29wZXJhdGlvbnMuIDwvUAorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJQUEFSRSIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAxNi4gIFBhbmVsIE1vdmluZyBhbmQgUmVzaXppbmcgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO3BhbmVsLmgmIzYyOwogCiB0eXBlZGVmIHN0cnVjdCBfUEFORUxfREFUQSB7Ci0gICAgICAgIGludCB4LCB5LCB3LCBoOwotICAgICAgICBjaGFyIGxhYmVsWzgwXTsgCi0gICAgICAgIGludCBsYWJlbF9jb2xvcjsKLSAgICAgICAgUEFORUwgKm5leHQ7CisJaW50IHgsIHksIHcsIGg7CisJY2hhciBsYWJlbFs4MF07IAorCWludCBsYWJlbF9jb2xvcjsKKwlQQU5FTCAqbmV4dDsKIH1QQU5FTF9EQVRBOwogCiAjZGVmaW5lIE5MSU5FUyAxMApAQCAtMzE1MSwyNzUgKzQ2MTcsMjg5IEBACiB2b2lkIHNldF91c2VyX3B0cnMoUEFORUwgKipwYW5lbHMsIGludCBuKTsKIAogaW50IG1haW4oKQoteyAgICAgICBXSU5ET1cgKm15X3dpbnNbM107Ci0gICAgICAgIFBBTkVMICAqbXlfcGFuZWxzWzNdOwotICAgICAgICBQQU5FTF9EQVRBICAqdG9wOwotICAgICAgICBQQU5FTCAqc3RhY2tfdG9wOwotICAgICAgICBXSU5ET1cgKnRlbXBfd2luLCAqb2xkX3dpbjsKLSAgICAgICAgaW50IGNoOwotICAgICAgICBpbnQgbmV3eCwgbmV3eSwgbmV3dywgbmV3aDsKLSAgICAgICAgaW50IHNpemUgPSBGQUxTRSwgbW92ZSA9IEZBTFNFOworewlXSU5ET1cgKm15X3dpbnNbM107CisJUEFORUwgICpteV9wYW5lbHNbM107CisJUEFORUxfREFUQSAgKnRvcDsKKwlQQU5FTCAqc3RhY2tfdG9wOworCVdJTkRPVyAqdGVtcF93aW4sICpvbGRfd2luOworCWludCBjaDsKKwlpbnQgbmV3eCwgbmV3eSwgbmV3dywgbmV3aDsKKwlpbnQgc2l6ZSA9IEZBTFNFLCBtb3ZlID0gRkFMU0U7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8KLSAgICAgICAgaW5pdHNjcigpOwotICAgICAgICBzdGFydF9jb2xvcigpOwotICAgICAgICBjYnJlYWsoKTsKLSAgICAgICAgbm9lY2hvKCk7Ci0gICAgICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOworCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCisJaW5pdHNjcigpOworCXN0YXJ0X2NvbG9yKCk7CisJY2JyZWFrKCk7CisJbm9lY2hvKCk7CisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBhbGwgdGhlIGNvbG9ycyAqLwotICAgICAgICBpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7Ci0gICAgICAgIGluaXRfcGFpcigyLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMywgQ09MT1JfQkxVRSwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoNCwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxBQ0spOworCS8qIEluaXRpYWxpemUgYWxsIHRoZSBjb2xvcnMgKi8KKwlpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDIsIENPTE9SX0dSRUVOLCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDMsIENPTE9SX0JMVUUsIENPTE9SX0JMQUNLKTsKKwlpbml0X3BhaXIoNCwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIGluaXRfd2lucyhteV93aW5zLCAzKTsKLSAgICAgICAgCi0gICAgICAgIC8qIEF0dGFjaCBhIHBhbmVsIHRvIGVhY2ggd2luZG93ICovICAgICAvKiBPcmRlciBpcyBib3R0b20gdXAgKi8KLSAgICAgICAgbXlfcGFuZWxzWzBdID0gbmV3X3BhbmVsKG15X3dpbnNbMF0pOyAgIC8qIFB1c2ggMCwgb3JkZXI6IHN0ZHNjci0wICovCi0gICAgICAgIG15X3BhbmVsc1sxXSA9IG5ld19wYW5lbChteV93aW5zWzFdKTsgICAvKiBQdXNoIDEsIG9yZGVyOiBzdGRzY3ItMC0xICovCi0gICAgICAgIG15X3BhbmVsc1syXSA9IG5ld19wYW5lbChteV93aW5zWzJdKTsgICAvKiBQdXNoIDIsIG9yZGVyOiBzdGRzY3ItMC0xLTIgKi8KKwlpbml0X3dpbnMobXlfd2lucywgMyk7CisJCisJLyogQXR0YWNoIGEgcGFuZWwgdG8gZWFjaCB3aW5kb3cgKi8gCS8qIE9yZGVyIGlzIGJvdHRvbSB1cCAqLworCW15X3BhbmVsc1swXSA9IG5ld19wYW5lbChteV93aW5zWzBdKTsgCS8qIFB1c2ggMCwgb3JkZXI6IHN0ZHNjci0wICovCisJbXlfcGFuZWxzWzFdID0gbmV3X3BhbmVsKG15X3dpbnNbMV0pOyAJLyogUHVzaCAxLCBvcmRlcjogc3Rkc2NyLTAtMSAqLworCW15X3BhbmVsc1syXSA9IG5ld19wYW5lbChteV93aW5zWzJdKTsgCS8qIFB1c2ggMiwgb3JkZXI6IHN0ZHNjci0wLTEtMiAqLwogCi0gICAgICAgIHNldF91c2VyX3B0cnMobXlfcGFuZWxzLCAzKTsKLSAgICAgICAgLyogVXBkYXRlIHRoZSBzdGFja2luZyBvcmRlci4gMm5kIHBhbmVsIHdpbGwgYmUgb24gdG9wICovCi0gICAgICAgIHVwZGF0ZV9wYW5lbHMoKTsKKwlzZXRfdXNlcl9wdHJzKG15X3BhbmVscywgMyk7CisJLyogVXBkYXRlIHRoZSBzdGFja2luZyBvcmRlci4gMm5kIHBhbmVsIHdpbGwgYmUgb24gdG9wICovCisJdXBkYXRlX3BhbmVscygpOwogCi0gICAgICAgIC8qIFNob3cgaXQgb24gdGhlIHNjcmVlbiAqLwotICAgICAgICBhdHRyb24oQ09MT1JfUEFJUig0KSk7Ci0gICAgICAgIG12cHJpbnR3KExJTkVTIC0gMywgMCwgIlVzZSAnbScgZm9yIG1vdmluZywgJ3InIGZvciByZXNpemluZyIpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgdGFiIHRvIGJyb3dzZSB0aHJvdWdoIHRoZSB3aW5kb3dzIChGMSB0byBFeGl0KSIpOwotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoNCkpOwotICAgICAgICBkb3VwZGF0ZSgpOworCS8qIFNob3cgaXQgb24gdGhlIHNjcmVlbiAqLworCWF0dHJvbihDT0xPUl9QQUlSKDQpKTsKKwltdnByaW50dyhMSU5FUyAtIDMsIDAsICJVc2UgJ20nIGZvciBtb3ZpbmcsICdyJyBmb3IgcmVzaXppbmciKTsKKwltdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgdGFiIHRvIGJyb3dzZSB0aHJvdWdoIHRoZSB3aW5kb3dzIChGMSB0byBFeGl0KSIpOworCWF0dHJvZmYoQ09MT1JfUEFJUig0KSk7CisJZG91cGRhdGUoKTsKIAotICAgICAgICBzdGFja190b3AgPSBteV9wYW5lbHNbMl07Ci0gICAgICAgIHRvcCA9IChQQU5FTF9EQVRBICopcGFuZWxfdXNlcnB0cihzdGFja190b3ApOwotICAgICAgICBuZXd4ID0gdG9wLSZndDt4OwotICAgICAgICBuZXd5ID0gdG9wLSZndDt5OwotICAgICAgICBuZXd3ID0gdG9wLSZndDt3OwotICAgICAgICBuZXdoID0gdG9wLSZndDtoOwotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIDk6ICAgICAgICAgLyogVGFiICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IChQQU5FTF9EQVRBICopcGFuZWxfdXNlcnB0cihzdGFja190b3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BfcGFuZWwodG9wLSZndDtuZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfdG9wID0gdG9wLSZndDtuZXh0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIoc3RhY2tfdG9wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3eCA9IHRvcC0mZ3Q7eDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3eSA9IHRvcC0mZ3Q7eTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dyA9IHRvcC0mZ3Q7dzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3aCA9IHRvcC0mZ3Q7aDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyJzogICAgICAgLyogUmUtU2l6ZSovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBUUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyb24oQ09MT1JfUEFJUig0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12cHJpbnR3KExJTkVTIC0gNCwgMCwgIkVudGVyZWQgUmVzaXppbmcgOlVzZSBBcnJvdyBLZXlzIHRvIHJlc2l6ZSBhbmQgcHJlc3MgJmx0O0VOVEVSJmd0OyB0byBlbmQgcmVzaXppbmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoNCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ20nOiAgICAgICAvKiBNb3ZlICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJvbihDT0xPUl9QQUlSKDQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXZwcmludHcoTElORVMgLSA0LCAwLCAiRW50ZXJlZCBNb3Zpbmc6IFVzZSBBcnJvdyBLZXlzIHRvIE1vdmUgYW5kIHByZXNzICZsdDtFTlRFUiZndDsgdG8gZW5kIG1vdmluZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJvZmYoQ09MT1JfUEFJUig0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgPSBUUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX0xFRlQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNpemUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAtLW5ld3g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytuZXd3OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vdmUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5ld3g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfUklHSFQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNpemUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICArK25ld3g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uZXd3OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vdmUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK25ld3g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfVVA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNpemUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAtLW5ld3k7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytuZXdoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vdmUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5ld3k7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfRE9XTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2l6ZSA9PSBUUlVFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICsrbmV3eTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5ld2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobW92ZSA9PSBUUlVFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbmV3eTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOiAgICAgICAgLyogRW50ZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShMSU5FUyAtIDQsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJ0b2VvbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNpemUgPT0gVFJVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICBvbGRfd2luID0gcGFuZWxfd2luZG93KHN0YWNrX3RvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF93aW4gPSBuZXd3aW4obmV3aCwgbmV3dywgbmV3eSwgbmV3eCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZV9wYW5lbChzdGFja190b3AsIHRlbXBfd2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5fc2hvdyh0ZW1wX3dpbiwgdG9wLSZndDtsYWJlbCwgdG9wLSZndDtsYWJlbF9jb2xvcik7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHdpbihvbGRfd2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobW92ZSA9PSBUUlVFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIG1vdmVfcGFuZWwoc3RhY2tfdG9wLCBuZXd5LCBuZXd4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXR0cm9uKENPTE9SX1BBSVIoNCkpOwotICAgICAgICAgICAgICAgIG12cHJpbnR3KExJTkVTIC0gMywgMCwgIlVzZSAnbScgZm9yIG1vdmluZywgJ3InIGZvciByZXNpemluZyIpOwotICAgICAgICAgICAgICAgIG12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVzZSB0YWIgdG8gYnJvd3NlIHRocm91Z2ggdGhlIHdpbmRvd3MgKEYxIHRvIEV4aXQpIik7Ci0gICAgICAgICAgICAgICAgYXR0cm9mZihDT0xPUl9QQUlSKDQpKTsKLSAgICAgICAgICAgICAgICByZWZyZXNoKCk7ICAgICAgCi0gICAgICAgICAgICAgICAgdXBkYXRlX3BhbmVscygpOwotICAgICAgICAgICAgICAgIGRvdXBkYXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZW5kd2luKCk7Ci0gICAgICAgIHJldHVybiAwOworCXN0YWNrX3RvcCA9IG15X3BhbmVsc1syXTsKKwl0b3AgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIoc3RhY2tfdG9wKTsKKwluZXd4ID0gdG9wLSYjNjI7eDsKKwluZXd5ID0gdG9wLSYjNjI7eTsKKwluZXd3ID0gdG9wLSYjNjI7dzsKKwluZXdoID0gdG9wLSYjNjI7aDsKKwl3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKKwl7CXN3aXRjaChjaCkKKwkJewljYXNlIDk6CQkvKiBUYWIgKi8KKwkJCQl0b3AgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIoc3RhY2tfdG9wKTsKKwkJCQl0b3BfcGFuZWwodG9wLSYjNjI7bmV4dCk7CisJCQkJc3RhY2tfdG9wID0gdG9wLSYjNjI7bmV4dDsKKwkJCQl0b3AgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIoc3RhY2tfdG9wKTsKKwkJCQluZXd4ID0gdG9wLSYjNjI7eDsKKwkJCQluZXd5ID0gdG9wLSYjNjI7eTsKKwkJCQluZXd3ID0gdG9wLSYjNjI7dzsKKwkJCQluZXdoID0gdG9wLSYjNjI7aDsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3InOgkvKiBSZS1TaXplKi8KKwkJCQlzaXplID0gVFJVRTsKKwkJCQlhdHRyb24oQ09MT1JfUEFJUig0KSk7CisJCQkJbXZwcmludHcoTElORVMgLSA0LCAwLCAiRW50ZXJlZCBSZXNpemluZyA6VXNlIEFycm93IEtleXMgdG8gcmVzaXplIGFuZCBwcmVzcyAmIzYwO0VOVEVSJiM2MjsgdG8gZW5kIHJlc2l6aW5nIik7CisJCQkJcmVmcmVzaCgpOworCQkJCWF0dHJvZmYoQ09MT1JfUEFJUig0KSk7CisJCQkJYnJlYWs7CisJCQljYXNlICdtJzoJLyogTW92ZSAqLworCQkJCWF0dHJvbihDT0xPUl9QQUlSKDQpKTsKKwkJCQltdnByaW50dyhMSU5FUyAtIDQsIDAsICJFbnRlcmVkIE1vdmluZzogVXNlIEFycm93IEtleXMgdG8gTW92ZSBhbmQgcHJlc3MgJiM2MDtFTlRFUiYjNjI7IHRvIGVuZCBtb3ZpbmciKTsKKwkJCQlyZWZyZXNoKCk7CisJCQkJYXR0cm9mZihDT0xPUl9QQUlSKDQpKTsKKwkJCQltb3ZlID0gVFJVRTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX0xFRlQ6CisJCQkJaWYoc2l6ZSA9PSBUUlVFKQorCQkJCXsJLS1uZXd4OworCQkJCQkrK25ld3c7CisJCQkJfQorCQkJCWlmKG1vdmUgPT0gVFJVRSkKKwkJCQkJLS1uZXd4OworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfUklHSFQ6CisJCQkJaWYoc2l6ZSA9PSBUUlVFKQorCQkJCXsJKytuZXd4OworCQkJCQktLW5ld3c7CisJCQkJfQorCQkJCWlmKG1vdmUgPT0gVFJVRSkKKwkJCQkJKytuZXd4OworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJaWYoc2l6ZSA9PSBUUlVFKQorCQkJCXsJLS1uZXd5OworCQkJCQkrK25ld2g7CisJCQkJfQorCQkJCWlmKG1vdmUgPT0gVFJVRSkKKwkJCQkJLS1uZXd5OworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfRE9XTjoKKwkJCQlpZihzaXplID09IFRSVUUpCisJCQkJewkrK25ld3k7CisJCQkJCS0tbmV3aDsKKwkJCQl9CisJCQkJaWYobW92ZSA9PSBUUlVFKQorCQkJCQkrK25ld3k7CisJCQkJYnJlYWs7CisJCQljYXNlIDEwOgkvKiBFbnRlciAqLworCQkJCW1vdmUoTElORVMgLSA0LCAwKTsKKwkJCQljbHJ0b2VvbCgpOworCQkJCXJlZnJlc2goKTsKKwkJCQlpZihzaXplID09IFRSVUUpCisJCQkJewlvbGRfd2luID0gcGFuZWxfd2luZG93KHN0YWNrX3RvcCk7CisJCQkJCXRlbXBfd2luID0gbmV3d2luKG5ld2gsIG5ld3csIG5ld3ksIG5ld3gpOworCQkJCQlyZXBsYWNlX3BhbmVsKHN0YWNrX3RvcCwgdGVtcF93aW4pOworCQkJCQl3aW5fc2hvdyh0ZW1wX3dpbiwgdG9wLSYjNjI7bGFiZWwsIHRvcC0mIzYyO2xhYmVsX2NvbG9yKTsgCisJCQkJCWRlbHdpbihvbGRfd2luKTsKKwkJCQkJc2l6ZSA9IEZBTFNFOworCQkJCX0KKwkJCQlpZihtb3ZlID09IFRSVUUpCisJCQkJewltb3ZlX3BhbmVsKHN0YWNrX3RvcCwgbmV3eSwgbmV3eCk7CisJCQkJCW1vdmUgPSBGQUxTRTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQkKKwkJfQorCQlhdHRyb24oQ09MT1JfUEFJUig0KSk7CisJCW12cHJpbnR3KExJTkVTIC0gMywgMCwgIlVzZSAnbScgZm9yIG1vdmluZywgJ3InIGZvciByZXNpemluZyIpOworCSAgICAJbXZwcmludHcoTElORVMgLSAyLCAwLCAiVXNlIHRhYiB0byBicm93c2UgdGhyb3VnaCB0aGUgd2luZG93cyAoRjEgdG8gRXhpdCkiKTsKKwkgICAgCWF0dHJvZmYoQ09MT1JfUEFJUig0KSk7CisJICAgICAgICByZWZyZXNoKCk7CQorCQl1cGRhdGVfcGFuZWxzKCk7CisJCWRvdXBkYXRlKCk7CisJfQorCWVuZHdpbigpOworCXJldHVybiAwOwogfQogCiAvKiBQdXQgYWxsIHRoZSB3aW5kb3dzICovCiB2b2lkIGluaXRfd2lucyhXSU5ET1cgKip3aW5zLCBpbnQgbikKLXsgICAgICAgaW50IHgsIHksIGk7Ci0gICAgICAgIGNoYXIgbGFiZWxbODBdOworewlpbnQgeCwgeSwgaTsKKwljaGFyIGxhYmVsWzgwXTsKIAotICAgICAgICB5ID0gMjsKLSAgICAgICAgeCA9IDEwOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuOyArK2kpCi0gICAgICAgIHsgICAgICAgd2luc1tpXSA9IG5ld3dpbihOTElORVMsIE5DT0xTLCB5LCB4KTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKGxhYmVsLCAiV2luZG93IE51bWJlciAlZCIsIGkgKyAxKTsKLSAgICAgICAgICAgICAgICB3aW5fc2hvdyh3aW5zW2ldLCBsYWJlbCwgaSArIDEpOwotICAgICAgICAgICAgICAgIHkgKz0gMzsKLSAgICAgICAgICAgICAgICB4ICs9IDc7Ci0gICAgICAgIH0KKwl5ID0gMjsKKwl4ID0gMTA7CisJZm9yKGkgPSAwOyBpICYjNjA7IG47ICsraSkKKwl7CXdpbnNbaV0gPSBuZXd3aW4oTkxJTkVTLCBOQ09MUywgeSwgeCk7CisJCXNwcmludGYobGFiZWwsICJXaW5kb3cgTnVtYmVyICVkIiwgaSArIDEpOworCQl3aW5fc2hvdyh3aW5zW2ldLCBsYWJlbCwgaSArIDEpOworCQl5ICs9IDM7CisJCXggKz0gNzsKKwl9CiB9CiAKIC8qIFNldCB0aGUgUEFORUxfREFUQSBzdHJ1Y3R1cmVzIGZvciBpbmRpdmlkdWFsIHBhbmVscyAqLwogdm9pZCBzZXRfdXNlcl9wdHJzKFBBTkVMICoqcGFuZWxzLCBpbnQgbikKLXsgICAgICAgUEFORUxfREFUQSAqcHRyczsKLSAgICAgICAgV0lORE9XICp3aW47Ci0gICAgICAgIGludCB4LCB5LCB3LCBoLCBpOwotICAgICAgICBjaGFyIHRlbXBbODBdOwotICAgICAgICAKLSAgICAgICAgcHRycyA9IChQQU5FTF9EQVRBICopY2FsbG9jKG4sIHNpemVvZihQQU5FTF9EQVRBKSk7Cit7CVBBTkVMX0RBVEEgKnB0cnM7CisJV0lORE9XICp3aW47CisJaW50IHgsIHksIHcsIGgsIGk7CisJY2hhciB0ZW1wWzgwXTsKKwkKKwlwdHJzID0gKFBBTkVMX0RBVEEgKiljYWxsb2Mobiwgc2l6ZW9mKFBBTkVMX0RBVEEpKTsKIAotICAgICAgICBmb3IoaSA9IDA7aSAmbHQ7IG47ICsraSkKLSAgICAgICAgeyAgICAgICB3aW4gPSBwYW5lbF93aW5kb3cocGFuZWxzW2ldKTsKLSAgICAgICAgICAgICAgICBnZXRiZWd5eCh3aW4sIHksIHgpOwotICAgICAgICAgICAgICAgIGdldG1heHl4KHdpbiwgaCwgdyk7Ci0gICAgICAgICAgICAgICAgcHRyc1tpXS54ID0geDsKLSAgICAgICAgICAgICAgICBwdHJzW2ldLnkgPSB5OwotICAgICAgICAgICAgICAgIHB0cnNbaV0udyA9IHc7Ci0gICAgICAgICAgICAgICAgcHRyc1tpXS5oID0gaDsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHRlbXAsICJXaW5kb3cgTnVtYmVyICVkIiwgaSArIDEpOwotICAgICAgICAgICAgICAgIHN0cmNweShwdHJzW2ldLmxhYmVsLCB0ZW1wKTsKLSAgICAgICAgICAgICAgICBwdHJzW2ldLmxhYmVsX2NvbG9yID0gaSArIDE7Ci0gICAgICAgICAgICAgICAgaWYoaSArIDEgPT0gbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHB0cnNbaV0ubmV4dCA9IHBhbmVsc1swXTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBwdHJzW2ldLm5leHQgPSBwYW5lbHNbaSArIDFdOwotICAgICAgICAgICAgICAgIHNldF9wYW5lbF91c2VycHRyKHBhbmVsc1tpXSwgJmFtcDtwdHJzW2ldKTsKLSAgICAgICAgfQorCWZvcihpID0gMDtpICYjNjA7IG47ICsraSkKKwl7CXdpbiA9IHBhbmVsX3dpbmRvdyhwYW5lbHNbaV0pOworCQlnZXRiZWd5eCh3aW4sIHksIHgpOworCQlnZXRtYXh5eCh3aW4sIGgsIHcpOworCQlwdHJzW2ldLnggPSB4OworCQlwdHJzW2ldLnkgPSB5OworCQlwdHJzW2ldLncgPSB3OworCQlwdHJzW2ldLmggPSBoOworCQlzcHJpbnRmKHRlbXAsICJXaW5kb3cgTnVtYmVyICVkIiwgaSArIDEpOworCQlzdHJjcHkocHRyc1tpXS5sYWJlbCwgdGVtcCk7CisJCXB0cnNbaV0ubGFiZWxfY29sb3IgPSBpICsgMTsKKwkJaWYoaSArIDEgPT0gbikKKwkJCXB0cnNbaV0ubmV4dCA9IHBhbmVsc1swXTsKKwkJZWxzZQorCQkJcHRyc1tpXS5uZXh0ID0gcGFuZWxzW2kgKyAxXTsKKwkJc2V0X3BhbmVsX3VzZXJwdHIocGFuZWxzW2ldLCAmIzM4O3B0cnNbaV0pOworCX0KIH0KIAogLyogU2hvdyB0aGUgd2luZG93IHdpdGggYSBib3JkZXIgYW5kIGEgbGFiZWwgKi8KIHZvaWQgd2luX3Nob3coV0lORE9XICp3aW4sIGNoYXIgKmxhYmVsLCBpbnQgbGFiZWxfY29sb3IpCi17ICAgICAgIGludCBzdGFydHgsIHN0YXJ0eSwgaGVpZ2h0LCB3aWR0aDsKK3sJaW50IHN0YXJ0eCwgc3RhcnR5LCBoZWlnaHQsIHdpZHRoOwogCi0gICAgICAgIGdldGJlZ3l4KHdpbiwgc3RhcnR5LCBzdGFydHgpOwotICAgICAgICBnZXRtYXh5eCh3aW4sIGhlaWdodCwgd2lkdGgpOworCWdldGJlZ3l4KHdpbiwgc3RhcnR5LCBzdGFydHgpOworCWdldG1heHl4KHdpbiwgaGVpZ2h0LCB3aWR0aCk7CiAKLSAgICAgICAgYm94KHdpbiwgMCwgMCk7Ci0gICAgICAgIG12d2FkZGNoKHdpbiwgMiwgMCwgQUNTX0xURUUpOyAKLSAgICAgICAgbXZ3aGxpbmUod2luLCAyLCAxLCBBQ1NfSExJTkUsIHdpZHRoIC0gMik7IAotICAgICAgICBtdndhZGRjaCh3aW4sIDIsIHdpZHRoIC0gMSwgQUNTX1JURUUpOyAKLSAgICAgICAgCi0gICAgICAgIHByaW50X2luX21pZGRsZSh3aW4sIDEsIDAsIHdpZHRoLCBsYWJlbCwgQ09MT1JfUEFJUihsYWJlbF9jb2xvcikpOworCWJveCh3aW4sIDAsIDApOworCW12d2FkZGNoKHdpbiwgMiwgMCwgQUNTX0xURUUpOyAKKwltdndobGluZSh3aW4sIDIsIDEsIEFDU19ITElORSwgd2lkdGggLSAyKTsgCisJbXZ3YWRkY2god2luLCAyLCB3aWR0aCAtIDEsIEFDU19SVEVFKTsgCisJCisJcHJpbnRfaW5fbWlkZGxlKHdpbiwgMSwgMCwgd2lkdGgsIGxhYmVsLCBDT0xPUl9QQUlSKGxhYmVsX2NvbG9yKSk7CiB9CiAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKQoteyAgICAgICBpbnQgbGVuZ3RoLCB4LCB5OwotICAgICAgICBmbG9hdCB0ZW1wOworewlpbnQgbGVuZ3RoLCB4LCB5OworCWZsb2F0IHRlbXA7CiAKLSAgICAgICAgaWYod2luID09IE5VTEwpCi0gICAgICAgICAgICAgICAgd2luID0gc3Rkc2NyOwotICAgICAgICBnZXR5eCh3aW4sIHksIHgpOwotICAgICAgICBpZihzdGFydHggIT0gMCkKLSAgICAgICAgICAgICAgICB4ID0gc3RhcnR4OwotICAgICAgICBpZihzdGFydHkgIT0gMCkKLSAgICAgICAgICAgICAgICB5ID0gc3RhcnR5OwotICAgICAgICBpZih3aWR0aCA9PSAwKQotICAgICAgICAgICAgICAgIHdpZHRoID0gODA7CisJaWYod2luID09IE5VTEwpCisJCXdpbiA9IHN0ZHNjcjsKKwlnZXR5eCh3aW4sIHksIHgpOworCWlmKHN0YXJ0eCAhPSAwKQorCQl4ID0gc3RhcnR4OworCWlmKHN0YXJ0eSAhPSAwKQorCQl5ID0gc3RhcnR5OworCWlmKHdpZHRoID09IDApCisJCXdpZHRoID0gODA7CiAKLSAgICAgICAgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7Ci0gICAgICAgIHRlbXAgPSAod2lkdGggLSBsZW5ndGgpLyAyOwotICAgICAgICB4ID0gc3RhcnR4ICsgKGludCl0ZW1wOwotICAgICAgICB3YXR0cm9uKHdpbiwgY29sb3IpOwotICAgICAgICBtdndwcmludHcod2luLCB5LCB4LCAiJXMiLCBzdHJpbmcpOwotICAgICAgICB3YXR0cm9mZih3aW4sIGNvbG9yKTsKLSAgICAgICAgcmVmcmVzaCgpOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPkNvbmNlbnRyYXRlIG9uIHRoZSBtYWluIHdoaWxlIGxvb3AuIE9uY2UgaXQgZmluZHMgb3V0IHRoZSB0eXBlCi1vZiBrZXkgcHJlc3NlZCwgaXQgdGFrZXMgYXBwcm9wcmlhdGUgYWN0aW9uLiBJZiAncicgaXMgcHJlc3NlZAotcmVzaXppbmcgbW9kZSBpcyBzdGFydGVkLiBBZnRlciB0aGlzIHRoZSBuZXcgc2l6ZXMgYXJlIHVwZGF0ZWQgYXMKLXRoZSB1c2VyIHByZXNzZXMgdGhlIGFycm93IGtleXMuIFdoZW4gdGhlIHVzZXIgcHJlc3NlcwotJmx0O0VOVEVSJmd0OyBwcmVzZW50IHNlbGVjdGlvbiBlbmRzIGFuZCBwYW5lbCBpcyByZXNpemVkIGJ5IHVzaW5nCi10aGUgY29uY2VwdCBleHBsYWluZWQuIFdoaWxlIGluIHJlc2l6aW5nIG1vZGUgdGhlIHByb2dyYW0gZG9lc24ndAotc2hvdyBob3cgdGhlIHdpbmRvdyBpcyBnZXR0aW5nIHJlc2l6ZWQuIEl0J3MgbGVmdCBhcyBhbiBleGVyY2lzZSB0bwotdGhlIHJlYWRlciB0byBwcmludCBhIGRvdHRlZCBib3JkZXIgd2hpbGUgaXQgZ2V0cyByZXNpemVkIHRvIGEgbmV3Ci1wb3NpdGlvbi48L3A+Ci08cD5XaGVuIHRoZSB1c2VyIHByZXNzZXMgJ20nIHRoZSBtb3ZlIG1vZGUgc3RhcnRzLiBUaGlzIGlzIGEgYml0Ci1zaW1wbGVyIHRoYW4gcmVzaXppbmcuIEFzIHRoZSBhcnJvdyBrZXlzIGFyZSBwcmVzc2VkIHRoZSBuZXcKLXBvc2l0aW9uIGlzIHVwZGF0ZWQgYW5kIHByZXNzaW5nIG9mICZsdDtFTlRFUiZndDsgY2F1c2VzIHRoZSBwYW5lbAotdG8gYmUgbW92ZWQgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gbW92ZV9wYW5lbCgpLjwvcD4KLTxwPkluIHRoaXMgcHJvZ3JhbSB0aGUgdXNlciBkYXRhIHdoaWNoIGlzIHJlcHJlc2VudGVkIGFzCi1QQU5FTF9EQVRBLCBwbGF5cyB2ZXJ5IGltcG9ydGFudCByb2xlIGluIGZpbmRpbmcgdGhlIGFzc29jaWF0ZWQKLWluZm9ybWF0aW9uIHdpdGggYSBwYW5lbC4gQXMgd3JpdHRlbiBpbiB0aGUgY29tbWVudHMsIHRoZQotUEFORUxfREFUQSBzdG9yZXMgdGhlIHBhbmVsIHNpemVzLCBsYWJlbCwgbGFiZWwgY29sb3IgYW5kIGEgcG9pbnRlcgotdG8gdGhlIG5leHQgcGFuZWwgaW4gdGhlIGN5Y2xlLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iUEFORUxTSE9XSElERSIgaWQ9IlBBTkVMU0hPV0hJREUiPjE2LjYuCi1IaWRpbmcgYW5kIFNob3dpbmcgUGFuZWxzPC9hPjwvaDM+Ci08cD5BIFBhbmVsIGNhbiBiZSBoaWRkZW4gYnkgdXNpbmcgdGhlIGZ1bmN0aW9uIGhpZGVfcGFuZWwoKS4gVGhpcwotZnVuY3Rpb24gbWVyZWx5IHJlbW92ZXMgaXQgZm9ybSB0aGUgc3RhY2sgb2YgcGFuZWxzLCB0aHVzIGhpZGluZyBpdAotb24gdGhlIHNjcmVlbiBvbmNlIHlvdSBkbyB1cGRhdGVfcGFuZWxzKCkgYW5kIGRvdXBkYXRlKCkuIEl0Ci1kb2Vzbid0IGRlc3Ryb3kgdGhlIFBBTkVMIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGhpZGRlbgotcGFuZWwuIEl0IGNhbiBiZSBzaG93biBhZ2FpbiBieSB1c2luZyB0aGUgc2hvd19wYW5lbCgpCi1mdW5jdGlvbi48L3A+Ci08cD5UaGUgZm9sbG93aW5nIHByb2dyYW0gc2hvd3MgdGhlIGhpZGluZyBvZiBwYW5lbHMuIFByZXNzICdhJyBvcgotJ2InIG9yICdjJyB0byBzaG93IG9yIGhpZGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgd2luZG93cwotcmVzcGVjdGl2ZWx5LiBJdCB1c2VzIGEgdXNlciBkYXRhIHdpdGggYSBzbWFsbCB2YXJpYWJsZSBoaWRlLCB3aGljaAota2VlcHMgdHJhY2sgb2Ygd2hldGhlciB0aGUgd2luZG93IGlzIGhpZGRlbiBvciBub3QuIEZvciBzb21lIHJlYXNvbgotdGhlIGZ1bmN0aW9uIDx2YXIgY2xhc3M9IkxJVEVSQUwiPnBhbmVsX2hpZGRlbigpPC92YXI+IHdoaWNoIHRlbGxzCi13aGV0aGVyIGEgcGFuZWwgaXMgaGlkZGVuIG9yIG5vdCBpcyBub3Qgd29ya2luZy4gQSBidWcgcmVwb3J0IHdhcwotYWxzbyBwcmVzZW50ZWQgYnkgTWljaGFlbCBBbmRyZXMgPGEgaHJlZj0KLSJodHRwOi8vd3d3Lmdlb2NyYXdsZXIuY29tL2FyY2hpdmVzLzMvMzQ0LzE5OTkvOS8wLzI2NDM1NDkvIgotdGFyZ2V0PSJfdG9wIj5oZXJlPC9hPjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IlBQQUhJIiBpZD0iUFBBSEkiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMTcuIFBhbmVsIEhpZGluZyBhbmQgU2hvd2luZyBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O3BhbmVsLmgmZ3Q7CisJbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CisJdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7CisJeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKKwl3YXR0cm9uKHdpbiwgY29sb3IpOworCW12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7CisJd2F0dHJvZmYod2luLCBjb2xvcik7CisJcmVmcmVzaCgpOworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPkNvbmNlbnRyYXRlIG9uIHRoZSBtYWluIHdoaWxlIGxvb3AuIE9uY2UgaXQgZmluZHMgb3V0IHRoZSB0eXBlIG9mIGtleSBwcmVzc2VkLAoraXQgdGFrZXMgYXBwcm9wcmlhdGUgYWN0aW9uLiBJZiAncicgaXMgcHJlc3NlZCByZXNpemluZyBtb2RlIGlzIHN0YXJ0ZWQuIEFmdGVyCit0aGlzIHRoZSBuZXcgc2l6ZXMgYXJlIHVwZGF0ZWQgYXMgdGhlIHVzZXIgcHJlc3NlcyB0aGUgYXJyb3cga2V5cy4gV2hlbiB0aGUgdXNlcgorcHJlc3NlcyAmbHQ7RU5URVImZ3Q7IHByZXNlbnQgc2VsZWN0aW9uIGVuZHMgYW5kIHBhbmVsIGlzIHJlc2l6ZWQgYnkgdXNpbmcgdGhlCitjb25jZXB0IGV4cGxhaW5lZC4gIFdoaWxlIGluIHJlc2l6aW5nIG1vZGUgdGhlIHByb2dyYW0gZG9lc24ndCBzaG93IGhvdyB0aGUKK3dpbmRvdyBpcyBnZXR0aW5nIHJlc2l6ZWQuICBJdCdzIGxlZnQgYXMgYW4gZXhlcmNpc2UgdG8gdGhlIHJlYWRlciB0byBwcmludCBhCitkb3R0ZWQgYm9yZGVyIHdoaWxlIGl0IGdldHMgcmVzaXplZCB0byBhIG5ldyBwb3NpdGlvbi4gPC9QCis+PFAKKz5XaGVuIHRoZSB1c2VyIHByZXNzZXMgJ20nIHRoZSBtb3ZlIG1vZGUgc3RhcnRzLiBUaGlzIGlzIGEgYml0IHNpbXBsZXIgdGhhbgorcmVzaXppbmcuICBBcyB0aGUgYXJyb3cga2V5cyBhcmUgcHJlc3NlZCB0aGUgbmV3IHBvc2l0aW9uIGlzIHVwZGF0ZWQgYW5kCitwcmVzc2luZyBvZiAmbHQ7RU5URVImZ3Q7IGNhdXNlcyB0aGUgcGFuZWwgdG8gYmUgbW92ZWQgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24KK21vdmVfcGFuZWwoKS48L1AKKz48UAorPkluIHRoaXMgcHJvZ3JhbSB0aGUgdXNlciBkYXRhIHdoaWNoIGlzIHJlcHJlc2VudGVkIGFzIFBBTkVMX0RBVEEsIHBsYXlzIHZlcnkKK2ltcG9ydGFudCByb2xlIGluIGZpbmRpbmcgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24gd2l0aCBhIHBhbmVsLiBBcyB3cml0dGVuIGluCit0aGUgY29tbWVudHMsIHRoZSBQQU5FTF9EQVRBIHN0b3JlcyB0aGUgcGFuZWwgc2l6ZXMsIGxhYmVsLCBsYWJlbCBjb2xvciBhbmQgYQorcG9pbnRlciB0byB0aGUgbmV4dCBwYW5lbCBpbiB0aGUgY3ljbGUuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJQQU5FTFNIT1dISURFIgorPjE2LjYuIEhpZGluZyBhbmQgU2hvd2luZyBQYW5lbHM8L0EKKz48L0gzCis+PFAKKz5BIFBhbmVsIGNhbiBiZSBoaWRkZW4gYnkgdXNpbmcgdGhlIGZ1bmN0aW9uIGhpZGVfcGFuZWwoKS4gVGhpcyBmdW5jdGlvbiBtZXJlbHkKK3JlbW92ZXMgaXQgZm9ybSB0aGUgc3RhY2sgb2YgcGFuZWxzLCB0aHVzIGhpZGluZyBpdCBvbiB0aGUgc2NyZWVuIG9uY2UgeW91IGRvCit1cGRhdGVfcGFuZWxzKCkgYW5kIGRvdXBkYXRlKCkuIEl0IGRvZXNuJ3QgZGVzdHJveSB0aGUgUEFORUwgc3RydWN0dXJlCithc3NvY2lhdGVkIHdpdGggdGhlIGhpZGRlbiBwYW5lbC4gIEl0IGNhbiBiZSBzaG93biBhZ2FpbiBieSB1c2luZyB0aGUKK3Nob3dfcGFuZWwoKSBmdW5jdGlvbi48L1AKKz48UAorPlRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBzaG93cyB0aGUgaGlkaW5nIG9mIHBhbmVscy4gUHJlc3MgJ2EnIG9yICdiJyBvciAnYycgdG8KK3Nob3cgb3IgaGlkZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB3aW5kb3dzIHJlc3BlY3RpdmVseS4gSXQgdXNlcyBhIHVzZXIgZGF0YQord2l0aCBhIHNtYWxsIHZhcmlhYmxlIGhpZGUsIHdoaWNoIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIHdpbmRvdyBpcyBoaWRkZW4gb3IKK25vdC4gRm9yIHNvbWUgcmVhc29uIHRoZSBmdW5jdGlvbgorPFRUCitDTEFTUz0iTElURVJBTCIKKz5wYW5lbF9oaWRkZW4oKTwvVFQKKz4gd2hpY2ggdGVsbHMgd2hldGhlciBhIHBhbmVsIGlzCitoaWRkZW4gb3Igbm90IGlzIG5vdCB3b3JraW5nLiAgQSBidWcgcmVwb3J0IHdhcyBhbHNvIHByZXNlbnRlZCBieSBNaWNoYWVsIEFuZHJlcworPEEKK0hSRUY9Imh0dHA6Ly93d3cuZ2VvY3Jhd2xlci5jb20vYXJjaGl2ZXMvMy8zNDQvMTk5OS85LzAvMjY0MzU0OS8iCitUQVJHRVQ9Il90b3AiCis+IGhlcmU8L0EKKz48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iUFBBSEkiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMTcuICBQYW5lbCBIaWRpbmcgYW5kIFNob3dpbmcgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO3BhbmVsLmgmIzYyOwogCiB0eXBlZGVmIHN0cnVjdCBfUEFORUxfREFUQSB7Ci0gICAgICAgIGludCBoaWRlOyAgICAgICAvKiBUUlVFIGlmIHBhbmVsIGlzIGhpZGRlbiAqLworCWludCBoaWRlOwkvKiBUUlVFIGlmIHBhbmVsIGlzIGhpZGRlbiAqLwogfVBBTkVMX0RBVEE7CiAKICNkZWZpbmUgTkxJTkVTIDEwCkBAIC0zNDMwLDI1NyArNDkxMCwyOTIgQEAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKTsKIAogaW50IG1haW4oKQoteyAgICAgICBXSU5ET1cgKm15X3dpbnNbM107Ci0gICAgICAgIFBBTkVMICAqbXlfcGFuZWxzWzNdOwotICAgICAgICBQQU5FTF9EQVRBIHBhbmVsX2RhdGFzWzNdOwotICAgICAgICBQQU5FTF9EQVRBICp0ZW1wOwotICAgICAgICBpbnQgY2g7Cit7CVdJTkRPVyAqbXlfd2luc1szXTsKKwlQQU5FTCAgKm15X3BhbmVsc1szXTsKKwlQQU5FTF9EQVRBIHBhbmVsX2RhdGFzWzNdOworCVBBTkVMX0RBVEEgKnRlbXA7CisJaW50IGNoOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgY3Vyc2VzICovCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgc3RhcnRfY29sb3IoKTsKLSAgICAgICAgY2JyZWFrKCk7Ci0gICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwkvKiBJbml0aWFsaXplIGN1cnNlcyAqLworCWluaXRzY3IoKTsKKwlzdGFydF9jb2xvcigpOworCWNicmVhaygpOworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgYWxsIHRoZSBjb2xvcnMgKi8KLSAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMiwgQ09MT1JfR1JFRU4sIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDMsIENPTE9SX0JMVUUsIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDQsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKKwkvKiBJbml0aWFsaXplIGFsbCB0aGUgY29sb3JzICovCisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigyLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigzLCBDT0xPUl9CTFVFLCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDQsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKIAotICAgICAgICBpbml0X3dpbnMobXlfd2lucywgMyk7Ci0gICAgICAgIAotICAgICAgICAvKiBBdHRhY2ggYSBwYW5lbCB0byBlYWNoIHdpbmRvdyAqLyAgICAgLyogT3JkZXIgaXMgYm90dG9tIHVwICovCi0gICAgICAgIG15X3BhbmVsc1swXSA9IG5ld19wYW5lbChteV93aW5zWzBdKTsgICAvKiBQdXNoIDAsIG9yZGVyOiBzdGRzY3ItMCAqLwotICAgICAgICBteV9wYW5lbHNbMV0gPSBuZXdfcGFuZWwobXlfd2luc1sxXSk7ICAgLyogUHVzaCAxLCBvcmRlcjogc3Rkc2NyLTAtMSAqLwotICAgICAgICBteV9wYW5lbHNbMl0gPSBuZXdfcGFuZWwobXlfd2luc1syXSk7ICAgLyogUHVzaCAyLCBvcmRlcjogc3Rkc2NyLTAtMS0yICovCisJaW5pdF93aW5zKG15X3dpbnMsIDMpOworCQorCS8qIEF0dGFjaCBhIHBhbmVsIHRvIGVhY2ggd2luZG93ICovIAkvKiBPcmRlciBpcyBib3R0b20gdXAgKi8KKwlteV9wYW5lbHNbMF0gPSBuZXdfcGFuZWwobXlfd2luc1swXSk7IAkvKiBQdXNoIDAsIG9yZGVyOiBzdGRzY3ItMCAqLworCW15X3BhbmVsc1sxXSA9IG5ld19wYW5lbChteV93aW5zWzFdKTsgCS8qIFB1c2ggMSwgb3JkZXI6IHN0ZHNjci0wLTEgKi8KKwlteV9wYW5lbHNbMl0gPSBuZXdfcGFuZWwobXlfd2luc1syXSk7IAkvKiBQdXNoIDIsIG9yZGVyOiBzdGRzY3ItMC0xLTIgKi8KIAotICAgICAgICAvKiBJbml0aWFsaXplIHBhbmVsIGRhdGFzIHNheWluZyB0aGF0IG5vdGhpbmcgaXMgaGlkZGVuICovCi0gICAgICAgIHBhbmVsX2RhdGFzWzBdLmhpZGUgPSBGQUxTRTsKLSAgICAgICAgcGFuZWxfZGF0YXNbMV0uaGlkZSA9IEZBTFNFOwotICAgICAgICBwYW5lbF9kYXRhc1syXS5oaWRlID0gRkFMU0U7CisJLyogSW5pdGlhbGl6ZSBwYW5lbCBkYXRhcyBzYXlpbmcgdGhhdCBub3RoaW5nIGlzIGhpZGRlbiAqLworCXBhbmVsX2RhdGFzWzBdLmhpZGUgPSBGQUxTRTsKKwlwYW5lbF9kYXRhc1sxXS5oaWRlID0gRkFMU0U7CisJcGFuZWxfZGF0YXNbMl0uaGlkZSA9IEZBTFNFOwogCi0gICAgICAgIHNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1swXSwgJmFtcDtwYW5lbF9kYXRhc1swXSk7Ci0gICAgICAgIHNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1sxXSwgJmFtcDtwYW5lbF9kYXRhc1sxXSk7Ci0gICAgICAgIHNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1syXSwgJmFtcDtwYW5lbF9kYXRhc1syXSk7CisJc2V0X3BhbmVsX3VzZXJwdHIobXlfcGFuZWxzWzBdLCAmIzM4O3BhbmVsX2RhdGFzWzBdKTsKKwlzZXRfcGFuZWxfdXNlcnB0cihteV9wYW5lbHNbMV0sICYjMzg7cGFuZWxfZGF0YXNbMV0pOworCXNldF9wYW5lbF91c2VycHRyKG15X3BhbmVsc1syXSwgJiMzODtwYW5lbF9kYXRhc1syXSk7CiAKLSAgICAgICAgLyogVXBkYXRlIHRoZSBzdGFja2luZyBvcmRlci4gMm5kIHBhbmVsIHdpbGwgYmUgb24gdG9wICovCi0gICAgICAgIHVwZGF0ZV9wYW5lbHMoKTsKKwkvKiBVcGRhdGUgdGhlIHN0YWNraW5nIG9yZGVyLiAybmQgcGFuZWwgd2lsbCBiZSBvbiB0b3AgKi8KKwl1cGRhdGVfcGFuZWxzKCk7CiAKLSAgICAgICAgLyogU2hvdyBpdCBvbiB0aGUgc2NyZWVuICovCi0gICAgICAgIGF0dHJvbihDT0xPUl9QQUlSKDQpKTsKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAzLCAwLCAiU2hvdyBvciBIaWRlIGEgd2luZG93IHdpdGggJ2EnKGZpcnN0IHdpbmRvdykgICdiJyhTZWNvbmQgV2luZG93KSAgJ2MnKFRoaXJkIFdpbmRvdykiKTsKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAyLCAwLCAiRjEgdG8gRXhpdCIpOworCS8qIFNob3cgaXQgb24gdGhlIHNjcmVlbiAqLworCWF0dHJvbihDT0xPUl9QQUlSKDQpKTsKKwltdnByaW50dyhMSU5FUyAtIDMsIDAsICJTaG93IG9yIEhpZGUgYSB3aW5kb3cgd2l0aCAnYScoZmlyc3Qgd2luZG93KSAgJ2InKFNlY29uZCBXaW5kb3cpICAnYycoVGhpcmQgV2luZG93KSIpOworCW12cHJpbnR3KExJTkVTIC0gMiwgMCwgIkYxIHRvIEV4aXQiKTsKIAotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoNCkpOwotICAgICAgICBkb3VwZGF0ZSgpOwotICAgICAgICAKLSAgICAgICAgd2hpbGUoKGNoID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCi0gICAgICAgIHsgICAgICAgc3dpdGNoKGNoKQotICAgICAgICAgICAgICAgIHsgICAgICAgY2FzZSAnYSc6ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IChQQU5FTF9EQVRBICopcGFuZWxfdXNlcnB0cihteV9wYW5lbHNbMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0ZW1wLSZndDtoaWRlID09IEZBTFNFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIGhpZGVfcGFuZWwobXlfcGFuZWxzWzBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLSZndDtoaWRlID0gVFJVRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgc2hvd19wYW5lbChteV9wYW5lbHNbMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAtJmd0O2hpZGUgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gKFBBTkVMX0RBVEEgKilwYW5lbF91c2VycHRyKG15X3BhbmVsc1sxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRlbXAtJmd0O2hpZGUgPT0gRkFMU0UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgaGlkZV9wYW5lbChteV9wYW5lbHNbMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAtJmd0O2hpZGUgPSBUUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICBzaG93X3BhbmVsKG15X3BhbmVsc1sxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC0mZ3Q7aGlkZSA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIobXlfcGFuZWxzWzJdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGVtcC0mZ3Q7aGlkZSA9PSBGQUxTRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICBoaWRlX3BhbmVsKG15X3BhbmVsc1syXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC0mZ3Q7aGlkZSA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgIHNob3dfcGFuZWwobXlfcGFuZWxzWzJdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLSZndDtoaWRlID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZV9wYW5lbHMoKTsKLSAgICAgICAgICAgICAgICBkb3VwZGF0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVuZHdpbigpOwotICAgICAgICByZXR1cm4gMDsKKwlhdHRyb2ZmKENPTE9SX1BBSVIoNCkpOworCWRvdXBkYXRlKCk7CisJCisJd2hpbGUoKGNoID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCisJewlzd2l0Y2goY2gpCisJCXsJY2FzZSAnYSc6CQkJCisJCQkJdGVtcCA9IChQQU5FTF9EQVRBICopcGFuZWxfdXNlcnB0cihteV9wYW5lbHNbMF0pOworCQkJCWlmKHRlbXAtJiM2MjtoaWRlID09IEZBTFNFKQorCQkJCXsJaGlkZV9wYW5lbChteV9wYW5lbHNbMF0pOworCQkJCQl0ZW1wLSYjNjI7aGlkZSA9IFRSVUU7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CXNob3dfcGFuZWwobXlfcGFuZWxzWzBdKTsKKwkJCQkJdGVtcC0mIzYyO2hpZGUgPSBGQUxTRTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlICdiJzoKKwkJCQl0ZW1wID0gKFBBTkVMX0RBVEEgKilwYW5lbF91c2VycHRyKG15X3BhbmVsc1sxXSk7CisJCQkJaWYodGVtcC0mIzYyO2hpZGUgPT0gRkFMU0UpCisJCQkJewloaWRlX3BhbmVsKG15X3BhbmVsc1sxXSk7CisJCQkJCXRlbXAtJiM2MjtoaWRlID0gVFJVRTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsJc2hvd19wYW5lbChteV9wYW5lbHNbMV0pOworCQkJCQl0ZW1wLSYjNjI7aGlkZSA9IEZBTFNFOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgJ2MnOgorCQkJCXRlbXAgPSAoUEFORUxfREFUQSAqKXBhbmVsX3VzZXJwdHIobXlfcGFuZWxzWzJdKTsKKwkJCQlpZih0ZW1wLSYjNjI7aGlkZSA9PSBGQUxTRSkKKwkJCQl7CWhpZGVfcGFuZWwobXlfcGFuZWxzWzJdKTsKKwkJCQkJdGVtcC0mIzYyO2hpZGUgPSBUUlVFOworCQkJCX0KKwkJCQllbHNlCisJCQkJewlzaG93X3BhbmVsKG15X3BhbmVsc1syXSk7CisJCQkJCXRlbXAtJiM2MjtoaWRlID0gRkFMU0U7CisJCQkJfQorCQkJCWJyZWFrOworCQl9CisJCXVwZGF0ZV9wYW5lbHMoKTsKKwkJZG91cGRhdGUoKTsKKwl9CisJZW5kd2luKCk7CisJcmV0dXJuIDA7CiB9CiAKIC8qIFB1dCBhbGwgdGhlIHdpbmRvd3MgKi8KIHZvaWQgaW5pdF93aW5zKFdJTkRPVyAqKndpbnMsIGludCBuKQoteyAgICAgICBpbnQgeCwgeSwgaTsKLSAgICAgICAgY2hhciBsYWJlbFs4MF07Cit7CWludCB4LCB5LCBpOworCWNoYXIgbGFiZWxbODBdOwogCi0gICAgICAgIHkgPSAyOwotICAgICAgICB4ID0gMTA7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG47ICsraSkKLSAgICAgICAgeyAgICAgICB3aW5zW2ldID0gbmV3d2luKE5MSU5FUywgTkNPTFMsIHksIHgpOwotICAgICAgICAgICAgICAgIHNwcmludGYobGFiZWwsICJXaW5kb3cgTnVtYmVyICVkIiwgaSArIDEpOwotICAgICAgICAgICAgICAgIHdpbl9zaG93KHdpbnNbaV0sIGxhYmVsLCBpICsgMSk7Ci0gICAgICAgICAgICAgICAgeSArPSAzOwotICAgICAgICAgICAgICAgIHggKz0gNzsKLSAgICAgICAgfQorCXkgPSAyOworCXggPSAxMDsKKwlmb3IoaSA9IDA7IGkgJiM2MDsgbjsgKytpKQorCXsJd2luc1tpXSA9IG5ld3dpbihOTElORVMsIE5DT0xTLCB5LCB4KTsKKwkJc3ByaW50ZihsYWJlbCwgIldpbmRvdyBOdW1iZXIgJWQiLCBpICsgMSk7CisJCXdpbl9zaG93KHdpbnNbaV0sIGxhYmVsLCBpICsgMSk7CisJCXkgKz0gMzsKKwkJeCArPSA3OworCX0KIH0KIAogLyogU2hvdyB0aGUgd2luZG93IHdpdGggYSBib3JkZXIgYW5kIGEgbGFiZWwgKi8KIHZvaWQgd2luX3Nob3coV0lORE9XICp3aW4sIGNoYXIgKmxhYmVsLCBpbnQgbGFiZWxfY29sb3IpCi17ICAgICAgIGludCBzdGFydHgsIHN0YXJ0eSwgaGVpZ2h0LCB3aWR0aDsKK3sJaW50IHN0YXJ0eCwgc3RhcnR5LCBoZWlnaHQsIHdpZHRoOwogCi0gICAgICAgIGdldGJlZ3l4KHdpbiwgc3RhcnR5LCBzdGFydHgpOwotICAgICAgICBnZXRtYXh5eCh3aW4sIGhlaWdodCwgd2lkdGgpOworCWdldGJlZ3l4KHdpbiwgc3RhcnR5LCBzdGFydHgpOworCWdldG1heHl4KHdpbiwgaGVpZ2h0LCB3aWR0aCk7CiAKLSAgICAgICAgYm94KHdpbiwgMCwgMCk7Ci0gICAgICAgIG12d2FkZGNoKHdpbiwgMiwgMCwgQUNTX0xURUUpOyAKLSAgICAgICAgbXZ3aGxpbmUod2luLCAyLCAxLCBBQ1NfSExJTkUsIHdpZHRoIC0gMik7IAotICAgICAgICBtdndhZGRjaCh3aW4sIDIsIHdpZHRoIC0gMSwgQUNTX1JURUUpOyAKLSAgICAgICAgCi0gICAgICAgIHByaW50X2luX21pZGRsZSh3aW4sIDEsIDAsIHdpZHRoLCBsYWJlbCwgQ09MT1JfUEFJUihsYWJlbF9jb2xvcikpOworCWJveCh3aW4sIDAsIDApOworCW12d2FkZGNoKHdpbiwgMiwgMCwgQUNTX0xURUUpOyAKKwltdndobGluZSh3aW4sIDIsIDEsIEFDU19ITElORSwgd2lkdGggLSAyKTsgCisJbXZ3YWRkY2god2luLCAyLCB3aWR0aCAtIDEsIEFDU19SVEVFKTsgCisJCisJcHJpbnRfaW5fbWlkZGxlKHdpbiwgMSwgMCwgd2lkdGgsIGxhYmVsLCBDT0xPUl9QQUlSKGxhYmVsX2NvbG9yKSk7CiB9CiAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKQoteyAgICAgICBpbnQgbGVuZ3RoLCB4LCB5OwotICAgICAgICBmbG9hdCB0ZW1wOworewlpbnQgbGVuZ3RoLCB4LCB5OworCWZsb2F0IHRlbXA7CiAKLSAgICAgICAgaWYod2luID09IE5VTEwpCi0gICAgICAgICAgICAgICAgd2luID0gc3Rkc2NyOwotICAgICAgICBnZXR5eCh3aW4sIHksIHgpOwotICAgICAgICBpZihzdGFydHggIT0gMCkKLSAgICAgICAgICAgICAgICB4ID0gc3RhcnR4OwotICAgICAgICBpZihzdGFydHkgIT0gMCkKLSAgICAgICAgICAgICAgICB5ID0gc3RhcnR5OwotICAgICAgICBpZih3aWR0aCA9PSAwKQotICAgICAgICAgICAgICAgIHdpZHRoID0gODA7CisJaWYod2luID09IE5VTEwpCisJCXdpbiA9IHN0ZHNjcjsKKwlnZXR5eCh3aW4sIHksIHgpOworCWlmKHN0YXJ0eCAhPSAwKQorCQl4ID0gc3RhcnR4OworCWlmKHN0YXJ0eSAhPSAwKQorCQl5ID0gc3RhcnR5OworCWlmKHdpZHRoID09IDApCisJCXdpZHRoID0gODA7CiAKLSAgICAgICAgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7Ci0gICAgICAgIHRlbXAgPSAod2lkdGggLSBsZW5ndGgpLyAyOwotICAgICAgICB4ID0gc3RhcnR4ICsgKGludCl0ZW1wOwotICAgICAgICB3YXR0cm9uKHdpbiwgY29sb3IpOwotICAgICAgICBtdndwcmludHcod2luLCB5LCB4LCAiJXMiLCBzdHJpbmcpOwotICAgICAgICB3YXR0cm9mZih3aW4sIGNvbG9yKTsKLSAgICAgICAgcmVmcmVzaCgpOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iUEFORUxBQk9WRSIgaWQ9IlBBTkVMQUJPVkUiPjE2LjcuCi1wYW5lbF9hYm92ZSgpIGFuZCBwYW5lbF9iZWxvdygpIEZ1bmN0aW9uczwvYT48L2gzPgotPHA+VGhlIGZ1bmN0aW9ucyA8dmFyIGNsYXNzPSJMSVRFUkFMIj5wYW5lbF9hYm92ZSgpPC92YXI+IGFuZAotPHZhciBjbGFzcz0iTElURVJBTCI+cGFuZWxfYmVsb3coKTwvdmFyPiBjYW4gYmUgdXNlZCB0byBmaW5kIG91dAotdGhlIHBhbmVsIGFib3ZlIGFuZCBiZWxvdyBhIHBhbmVsLiBJZiB0aGUgYXJndW1lbnQgdG8gdGhlc2UKLWZ1bmN0aW9ucyBpcyBOVUxMLCB0aGVuIHRoZXkgcmV0dXJuIGEgcG9pbnRlciB0byBib3R0b20gcGFuZWwgYW5kCi10b3AgcGFuZWwgcmVzcGVjdGl2ZWx5LjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJNRU5VUyIgaWQ9Ik1FTlVTIj4xNy4gTWVudXMKLUxpYnJhcnk8L2E+PC9oMj4KLTxwPlRoZSBtZW51cyBsaWJyYXJ5IHByb3ZpZGVzIGEgbmljZSBleHRlbnNpb24gdG8gYmFzaWMgY3Vyc2VzLAotdGhyb3VnaCB3aGljaCB5b3UgY2FuIGNyZWF0ZSBtZW51cy4gSXQgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zCi10byBjcmVhdGUgbWVudXMuIEJ1dCB0aGV5IGhhdmUgdG8gYmUgY3VzdG9taXplZCB0byBnaXZlIGEgbmljZXIKLWxvb2ssIHdpdGggY29sb3JzIGV0Yy4gTGV0J3MgZ2V0IGludG8gdGhlIGRldGFpbHMuPC9wPgotPHA+QSBtZW51IGlzIGEgc2NyZWVuIGRpc3BsYXkgdGhhdCBhc3Npc3RzIHRoZSB1c2VyIHRvIGNob29zZSBzb21lCi1zdWJzZXQgb2YgYSBnaXZlbiBzZXQgb2YgaXRlbXMuIFRvIHB1dCBpdCBzaW1wbGUsIGEgbWVudSBpcyBhCi1jb2xsZWN0aW9uIG9mIGl0ZW1zIGZyb20gd2hpY2ggb25lIG9yIG1vcmUgaXRlbXMgY2FuIGJlIGNob3Nlbi4KLVNvbWUgcmVhZGVycyBtaWdodCBub3QgYmUgYXdhcmUgb2YgbXVsdGlwbGUgaXRlbSBzZWxlY3Rpb24KLWNhcGFiaWxpdHkuIE1lbnUgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIHdyaXRlIG1lbnVzIGZyb20KLXdoaWNoIHRoZSB1c2VyIGNhbiBjaG9zZSBtb3JlIHRoYW4gb25lIGl0ZW0gYXMgdGhlIHByZWZlcnJlZAotY2hvaWNlLiBUaGlzIGlzIGRlYWx0IHdpdGggaW4gYSBsYXRlciBzZWN0aW9uLiBOb3cgaXQgaXMgdGltZSBmb3IKLXNvbWUgcnVkaW1lbnRzLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1FTlVCQVNJQ1MiIGlkPSJNRU5VQkFTSUNTIj4xNy4xLiBUaGUKLUJhc2ljczwvYT48L2gzPgotPHA+VG8gY3JlYXRlIG1lbnVzLCB5b3UgZmlyc3QgY3JlYXRlIGl0ZW1zLCBhbmQgdGhlbiBwb3N0IHRoZSBtZW51Ci10byB0aGUgZGlzcGxheS4gQWZ0ZXIgdGhhdCwgYWxsIHRoZSBwcm9jZXNzaW5nIG9mIHVzZXIgcmVzcG9uc2VzIGlzCi1kb25lIGluIGFuIGVsZWdhbnQgZnVuY3Rpb24gbWVudV9kcml2ZXIoKSB3aGljaCBpcyB0aGUgd29yayBob3JzZQotb2YgYW55IG1lbnUgcHJvZ3JhbS48L3A+Ci08cD5UaGUgZ2VuZXJhbCBmbG93IG9mIGNvbnRyb2wgb2YgYSBtZW51IHByb2dyYW0gbG9va3MgbGlrZQotdGhpcy48L3A+Ci08b2wgdHlwZT0iMSI+Ci08bGk+Ci08cD5Jbml0aWFsaXplIGN1cnNlczwvcD4KLTwvbGk+Ci08bGk+Ci08cD5DcmVhdGUgaXRlbXMgdXNpbmcgbmV3X2l0ZW0oKS4gWW91IGNhbiBzcGVjaWZ5IGEgbmFtZSBhbmQKLWRlc2NyaXB0aW9uIGZvciB0aGUgaXRlbXMuPC9wPgotPC9saT4KLTxsaT4KLTxwPkNyZWF0ZSB0aGUgbWVudSB3aXRoIG5ld19tZW51KCkgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgdG8gYmUKLWF0dGFjaGVkIHdpdGguPC9wPgotPC9saT4KLTxsaT4KLTxwPlBvc3QgdGhlIG1lbnUgd2l0aCBtZW51X3Bvc3QoKSBhbmQgcmVmcmVzaCB0aGUgc2NyZWVuLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5Qcm9jZXNzIHRoZSB1c2VyIHJlcXVlc3RzIHdpdGggYSBsb29wIGFuZCBkbyBuZWNlc3NhcnkgdXBkYXRlcwotdG8gbWVudSB3aXRoIG1lbnVfZHJpdmVyLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5VbnBvc3QgdGhlIG1lbnUgd2l0aCBtZW51X3VucG9zdCgpPC9wPgotPC9saT4KLTxsaT4KLTxwPkZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gbWVudSBieSBmcmVlX21lbnUoKTwvcD4KLTwvbGk+Ci08bGk+Ci08cD5GcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBpdGVtcyB3aXRoIGZyZWVfaXRlbSgpPC9wPgotPC9saT4KLTxsaT4KLTxwPkVuZCBjdXJzZXM8L3A+Ci08L2xpPgotPC9vbD4KLTxwPkxldCdzIHNlZSBhIHByb2dyYW0gd2hpY2ggcHJpbnRzIGEgc2ltcGxlIG1lbnUgYW5kIHVwZGF0ZXMgdGhlCi1jdXJyZW50IHNlbGVjdGlvbiB3aXRoIHVwLCBkb3duIGFycm93cy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkNPTVBJTEVNRU5VUyIgaWQ9IkNPTVBJTEVNRU5VUyI+MTcuMi4KLUNvbXBpbGluZyBXaXRoIHRoZSBNZW51IExpYnJhcnk8L2E+PC9oMz4KLTxwPlRvIHVzZSBtZW51IGxpYnJhcnkgZnVuY3Rpb25zLCB5b3UgaGF2ZSB0byBpbmNsdWRlIG1lbnUuaCBhbmQgdG8KLWxpbmsgdGhlIHByb2dyYW0gd2l0aCBtZW51IGxpYnJhcnkgdGhlIGZsYWcgLWxtZW51IHNob3VsZCBiZSBhZGRlZAotYWxvbmcgd2l0aCAtbG5jdXJzZXMgaW4gdGhhdCBvcmRlci48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgICNpbmNsdWRlICZsdDttZW51LmgmZ3Q7CisJbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CisJdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7CisJeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKKwl3YXR0cm9uKHdpbiwgY29sb3IpOworCW12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7CisJd2F0dHJvZmYod2luLCBjb2xvcik7CisJcmVmcmVzaCgpOworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlBBTkVMQUJPVkUiCis+MTYuNy4gcGFuZWxfYWJvdmUoKSBhbmQgcGFuZWxfYmVsb3coKSBGdW5jdGlvbnM8L0EKKz48L0gzCis+PFAKKz5UaGUgZnVuY3Rpb25zIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+cGFuZWxfYWJvdmUoKTwvVFQKKz4gYW5kCis8VFQKK0NMQVNTPSJMSVRFUkFMIgorPnBhbmVsX2JlbG93KCk8L1RUCis+IGNhbiBiZSB1c2VkIHRvIGZpbmQgb3V0IHRoZSBwYW5lbAorYWJvdmUgYW5kIGJlbG93IGEgcGFuZWwuIElmIHRoZSBhcmd1bWVudCB0byB0aGVzZSBmdW5jdGlvbnMgaXMgTlVMTCwgdGhlbiB0aGV5CityZXR1cm4gYSBwb2ludGVyIHRvIGJvdHRvbSBwYW5lbCBhbmQgdG9wIHBhbmVsIHJlc3BlY3RpdmVseS48L1AKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iTUVOVVMiCis+MTcuIE1lbnVzIExpYnJhcnk8L0EKKz48L0gyCis+PFAKKz5UaGUgbWVudXMgbGlicmFyeSBwcm92aWRlcyBhIG5pY2UgZXh0ZW5zaW9uIHRvIGJhc2ljIGN1cnNlcywgdGhyb3VnaCB3aGljaCB5b3UKK2NhbiBjcmVhdGUgbWVudXMuIEl0IHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0byBjcmVhdGUgbWVudXMuIEJ1dCB0aGV5IGhhdmUKK3RvIGJlIGN1c3RvbWl6ZWQgdG8gZ2l2ZSBhIG5pY2VyIGxvb2ssIHdpdGggY29sb3JzIGV0Yy4gTGV0J3MgZ2V0IGludG8gdGhlCitkZXRhaWxzLjwvUAorPjxQCis+QSBtZW51IGlzIGEgc2NyZWVuIGRpc3BsYXkgdGhhdCBhc3Npc3RzIHRoZSB1c2VyIHRvIGNob29zZSBzb21lIHN1YnNldCBvZiBhCitnaXZlbiBzZXQgb2YgaXRlbXMuIFRvIHB1dCBpdCBzaW1wbGUsIGEgbWVudSBpcyBhIGNvbGxlY3Rpb24gb2YgaXRlbXMgZnJvbSB3aGljaAorb25lIG9yIG1vcmUgaXRlbXMgY2FuIGJlIGNob3Nlbi4gU29tZSByZWFkZXJzIG1pZ2h0IG5vdCBiZSBhd2FyZSBvZiBtdWx0aXBsZQoraXRlbSBzZWxlY3Rpb24gY2FwYWJpbGl0eS4gIE1lbnUgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIHdyaXRlIG1lbnVzCitmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBjaG9zZSBtb3JlIHRoYW4gb25lIGl0ZW0gYXMgdGhlIHByZWZlcnJlZCBjaG9pY2UuIFRoaXMKK2lzIGRlYWx0IHdpdGggaW4gYSBsYXRlciBzZWN0aW9uLiBOb3cgaXQgaXMgdGltZSBmb3Igc29tZSBydWRpbWVudHMuPC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTUVOVUJBU0lDUyIKKz4xNy4xLiBUaGUgQmFzaWNzPC9BCis+PC9IMworPjxQCis+VG8gY3JlYXRlIG1lbnVzLCB5b3UgZmlyc3QgY3JlYXRlIGl0ZW1zLCBhbmQgdGhlbiBwb3N0IHRoZSBtZW51IHRvIHRoZSBkaXNwbGF5LgorQWZ0ZXIgdGhhdCwgYWxsIHRoZSBwcm9jZXNzaW5nIG9mIHVzZXIgcmVzcG9uc2VzIGlzIGRvbmUgaW4gYW4gZWxlZ2FudCBmdW5jdGlvbgorbWVudV9kcml2ZXIoKSB3aGljaCBpcyB0aGUgd29yayBob3JzZSBvZiBhbnkgbWVudSBwcm9ncmFtLiA8L1AKKz48UAorPlRoZSBnZW5lcmFsIGZsb3cgb2YgY29udHJvbCBvZiBhIG1lbnUgcHJvZ3JhbSBsb29rcyBsaWtlIHRoaXMuCis8UAorPjwvUAorPjxPTAorVFlQRT0iMSIKKz48TEkKKz48UAorPkluaXRpYWxpemUgY3Vyc2VzPC9QCis+PC9MSQorPjxMSQorPjxQCis+Q3JlYXRlIGl0ZW1zIHVzaW5nIG5ld19pdGVtKCkuIFlvdSBjYW4gc3BlY2lmeSBhIG5hbWUgYW5kIGRlc2NyaXB0aW9uIGZvciB0aGUKK2l0ZW1zLjwvUAorPjwvTEkKKz48TEkKKz48UAorPkNyZWF0ZSB0aGUgbWVudSB3aXRoIG5ld19tZW51KCkgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgdG8gYmUgYXR0YWNoZWQgd2l0aC48L1AKKz48L0xJCis+PExJCis+PFAKKz5Qb3N0IHRoZSBtZW51IHdpdGggbWVudV9wb3N0KCkgYW5kIHJlZnJlc2ggdGhlIHNjcmVlbi48L1AKKz48L0xJCis+PExJCis+PFAKKz5Qcm9jZXNzIHRoZSB1c2VyIHJlcXVlc3RzIHdpdGggYSBsb29wIGFuZCBkbyBuZWNlc3NhcnkgdXBkYXRlcyB0byBtZW51IHdpdGgKK21lbnVfZHJpdmVyLjwvUAorPjwvTEkKKz48TEkKKz48UAorPlVucG9zdCB0aGUgbWVudSB3aXRoIG1lbnVfdW5wb3N0KCk8L1AKKz48L0xJCis+PExJCis+PFAKKz5GcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIG1lbnUgYnkgZnJlZV9tZW51KCk8L1AKKz48L0xJCis+PExJCis+PFAKKz5GcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBpdGVtcyB3aXRoIGZyZWVfaXRlbSgpIDwvUAorPjwvTEkKKz48TEkKKz48UAorPkVuZCBjdXJzZXMgPC9QCis+PC9MSQorPjwvT0wKKz48L1AKKz48UAorPkxldCdzIHNlZSBhIHByb2dyYW0gd2hpY2ggcHJpbnRzIGEgc2ltcGxlIG1lbnUgYW5kIHVwZGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCit3aXRoIHVwLCBkb3duIGFycm93cy4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJDT01QSUxFTUVOVVMiCis+MTcuMi4gQ29tcGlsaW5nIFdpdGggdGhlIE1lbnUgTGlicmFyeTwvQQorPjwvSDMKKz48UAorPlRvIHVzZSBtZW51IGxpYnJhcnkgZnVuY3Rpb25zLCB5b3UgaGF2ZSB0byBpbmNsdWRlIG1lbnUuaCBhbmQgdG8gbGluayB0aGUKK3Byb2dyYW0gd2l0aCBtZW51IGxpYnJhcnkgdGhlIGZsYWcgLWxtZW51IHNob3VsZCBiZSBhZGRlZCBhbG9uZyB3aXRoIC1sbmN1cnNlcworaW4gdGhhdCBvcmRlci48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgICNpbmNsdWRlICZsdDttZW51LmgmZ3Q7CiAgICAgLgogICAgIC4KICAgICAuCiAKLSAgICBjb21waWxlIGFuZCBsaW5rOiBnY2MgJmx0O3Byb2dyYW0gZmlsZSZndDsgLWxtZW51IC1sbmN1cnNlczwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9Ik1NRVNJIiBpZD0iTU1FU0kiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMTguIE1lbnUgQmFzaWNzPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O2N1cnNlcy5oJmd0OwotI2luY2x1ZGUgJmx0O21lbnUuaCZndDsKKyAgICBjb21waWxlIGFuZCBsaW5rOiBnY2MgJmx0O3Byb2dyYW0gZmlsZSZndDsgLWxtZW51IC1sbmN1cnNlczwvUFJFCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9Ik1NRVNJIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDE4LiBNZW51IEJhc2ljcyA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO2N1cnNlcy5oJiM2MjsKKyNpbmNsdWRlICYjNjA7bWVudS5oJiM2MjsKIAogI2RlZmluZSBBUlJBWV9TSVpFKGEpIChzaXplb2YoYSkgLyBzaXplb2YoYVswXSkpCi0jZGVmaW5lIENUUkxEICAgNAorI2RlZmluZSBDVFJMRCAJNAogCiBjaGFyICpjaG9pY2VzW10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLApAQCAtMzY5MSw2OSArNTIwNiw2NCBAQAogICAgICAgICAgICAgICAgICAgfTsKIAogaW50IG1haW4oKQoteyAgICAgICBJVEVNICoqbXlfaXRlbXM7Ci0gICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIE1FTlUgKm15X21lbnU7Ci0gICAgICAgIGludCBuX2Nob2ljZXMsIGk7Ci0gICAgICAgIElURU0gKmN1cl9pdGVtOwotICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgY2JyZWFrKCk7Ci0gICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKLSAgICAgICAgCi0gICAgICAgIG5fY2hvaWNlcyA9IEFSUkFZX1NJWkUoY2hvaWNlcyk7Ci0gICAgICAgIG15X2l0ZW1zID0gKElURU0gKiopY2FsbG9jKG5fY2hvaWNlcyArIDEsIHNpemVvZihJVEVNICopKTsKK3sJSVRFTSAqKm15X2l0ZW1zOworCWludCBjOwkJCQkKKwlNRU5VICpteV9tZW51OworCWludCBuX2Nob2ljZXMsIGk7CisJSVRFTSAqY3VyX2l0ZW07CisJCisJCisJaW5pdHNjcigpOworCWNicmVhaygpOworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCQorCW5fY2hvaWNlcyA9IEFSUkFZX1NJWkUoY2hvaWNlcyk7CisJbXlfaXRlbXMgPSAoSVRFTSAqKiljYWxsb2Mobl9jaG9pY2VzICsgMSwgc2l6ZW9mKElURU0gKikpOwogCi0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQotICAgICAgICAgICAgICAgIG15X2l0ZW1zW2ldID0gbmV3X2l0ZW0oY2hvaWNlc1tpXSwgY2hvaWNlc1tpXSk7Ci0gICAgICAgIG15X2l0ZW1zW25fY2hvaWNlc10gPSAoSVRFTSAqKU5VTEw7CisJZm9yKGkgPSAwOyBpICYjNjA7IG5fY2hvaWNlczsgKytpKQorCSAgICAgICAgbXlfaXRlbXNbaV0gPSBuZXdfaXRlbShjaG9pY2VzW2ldLCBjaG9pY2VzW2ldKTsKKwlteV9pdGVtc1tuX2Nob2ljZXNdID0gKElURU0gKilOVUxMOwogCi0gICAgICAgIG15X21lbnUgPSBuZXdfbWVudSgoSVRFTSAqKilteV9pdGVtcyk7Ci0gICAgICAgIG12cHJpbnR3KExJTkVTIC0gMiwgMCwgIkYxIHRvIEV4aXQiKTsKLSAgICAgICAgcG9zdF9tZW51KG15X21lbnUpOwotICAgICAgICByZWZyZXNoKCk7CisJbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKKwltdnByaW50dyhMSU5FUyAtIDIsIDAsICJGMSB0byBFeGl0Iik7CisJcG9zdF9tZW51KG15X21lbnUpOworCXJlZnJlc2goKTsKIAotICAgICAgICB3aGlsZSgoYyA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQotICAgICAgICB7ICAgc3dpdGNoKGMpCi0gICAgICAgICAgICB7ICAgY2FzZSBLRVlfRE9XTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX1VQOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfVVBfSVRFTSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgICAKKwl3aGlsZSgoYyA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsgICBzd2l0Y2goYykKKwkgICAgewljYXNlIEtFWV9ET1dOOgorCQkgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOworCQkJCWJyZWFrOworCQl9CisJfQkKIAotICAgICAgICBmcmVlX2l0ZW0obXlfaXRlbXNbMF0pOwotICAgICAgICBmcmVlX2l0ZW0obXlfaXRlbXNbMV0pOwotICAgICAgICBmcmVlX21lbnUobXlfbWVudSk7Ci0gICAgICAgIGVuZHdpbigpOworCWZyZWVfaXRlbShteV9pdGVtc1swXSk7CisJZnJlZV9pdGVtKG15X2l0ZW1zWzFdKTsKKwlmcmVlX21lbnUobXlfbWVudSk7CisJZW5kd2luKCk7CiB9Ci0gICAgICAgIDwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPlRoaXMgcHJvZ3JhbSBkZW1vbnN0cmF0ZXMgdGhlIGJhc2ljIGNvbmNlcHRzIGludm9sdmVkIGluCi1jcmVhdGluZyBhIG1lbnUgdXNpbmcgbWVudXMgbGlicmFyeS4gRmlyc3Qgd2UgY3JlYXRlIHRoZSBpdGVtcwotdXNpbmcgbmV3X2l0ZW0oKSBhbmQgdGhlbiBhdHRhY2ggdGhlbSB0byB0aGUgbWVudSB3aXRoIG5ld19tZW51KCkKLWZ1bmN0aW9uLiBBZnRlciBwb3N0aW5nIHRoZSBtZW51IGFuZCByZWZyZXNoaW5nIHRoZSBzY3JlZW4sIHRoZQotbWFpbiBwcm9jZXNzaW5nIGxvb3Agc3RhcnRzLiBJdCByZWFkcyB1c2VyIGlucHV0IGFuZCB0YWtlcwotY29ycmVzcG9uZGluZyBhY3Rpb24uIFRoZSBmdW5jdGlvbiBtZW51X2RyaXZlcigpIGlzIHRoZSBtYWluIHdvcmsKLWhvcnNlIG9mIHRoZSBtZW51IHN5c3RlbS4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdGhpcyBmdW5jdGlvbgotdGVsbHMgd2hhdCdzIHRvIGJlIGRvbmUgd2l0aCB0aGUgbWVudS4gQWNjb3JkaW5nIHRvIHRoZSBwYXJhbWV0ZXIsCi1tZW51X2RyaXZlcigpIGRvZXMgdGhlIGNvcnJlc3BvbmRpbmcgdGFzay4gVGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIKLWEgbWVudSBuYXZpZ2F0aW9uYWwgcmVxdWVzdCwgYW4gYXNjaWkgY2hhcmFjdGVyLCBvciBhIEtFWV9NT1VTRQotc3BlY2lhbCBrZXkgYXNzb2NpYXRlZCB3aXRoIGEgbW91c2UgZXZlbnQuPC9wPgotPHA+VGhlIG1lbnVfZHJpdmVyIGFjY2VwdHMgZm9sbG93aW5nIG5hdmlnYXRpb25hbCByZXF1ZXN0cy48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj4mIzEzOyAgICAgUkVRX0xFRlRfSVRFTSAgICAgICAgIE1vdmUgbGVmdCB0byBhbiBpdGVtLgorCTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPlRoaXMgcHJvZ3JhbSBkZW1vbnN0cmF0ZXMgdGhlIGJhc2ljIGNvbmNlcHRzIGludm9sdmVkIGluIGNyZWF0aW5nIGEgbWVudSB1c2luZworbWVudXMgbGlicmFyeS4gIEZpcnN0IHdlIGNyZWF0ZSB0aGUgaXRlbXMgdXNpbmcgbmV3X2l0ZW0oKSBhbmQgdGhlbiBhdHRhY2ggdGhlbQordG8gdGhlIG1lbnUgd2l0aCBuZXdfbWVudSgpIGZ1bmN0aW9uLiBBZnRlciBwb3N0aW5nIHRoZSBtZW51IGFuZCByZWZyZXNoaW5nIHRoZQorc2NyZWVuLCB0aGUgbWFpbiBwcm9jZXNzaW5nIGxvb3Agc3RhcnRzLiBJdCByZWFkcyB1c2VyIGlucHV0IGFuZCB0YWtlcworY29ycmVzcG9uZGluZyBhY3Rpb24uIFRoZSBmdW5jdGlvbiBtZW51X2RyaXZlcigpIGlzIHRoZSBtYWluIHdvcmsgaG9yc2Ugb2YgdGhlCittZW51IHN5c3RlbS4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdGhpcyBmdW5jdGlvbiB0ZWxscyB3aGF0J3MgdG8gYmUgZG9uZSB3aXRoCit0aGUgbWVudS4gQWNjb3JkaW5nIHRvIHRoZSBwYXJhbWV0ZXIsIG1lbnVfZHJpdmVyKCkgZG9lcyB0aGUgY29ycmVzcG9uZGluZyB0YXNrLgorVGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBtZW51IG5hdmlnYXRpb25hbCByZXF1ZXN0LCBhbiBhc2NpaSBjaGFyYWN0ZXIsIG9yIGEKK0tFWV9NT1VTRSBzcGVjaWFsIGtleSBhc3NvY2lhdGVkIHdpdGggYSBtb3VzZSBldmVudC48L1AKKz48UAorPlRoZSBtZW51X2RyaXZlciBhY2NlcHRzIGZvbGxvd2luZyBuYXZpZ2F0aW9uYWwgcmVxdWVzdHMuIAorPFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiYjMTM7ICAgICBSRVFfTEVGVF9JVEVNICAgICAgICAgTW92ZSBsZWZ0IHRvIGFuIGl0ZW0uCiAgICAgIFJFUV9SSUdIVF9JVEVNICAgICAgTW92ZSByaWdodCB0byBhbiBpdGVtLgogICAgICBSRVFfVVBfSVRFTSAgICAgICAgIE1vdmUgdXAgdG8gYW4gaXRlbS4KICAgICAgUkVRX0RPV05fSVRFTSAgICAgICBNb3ZlIGRvd24gdG8gYW4gaXRlbS4KQEAgLTM3NjksODcgKzUyNzksMTQ0IEBACiAgICAgIFJFUV9DTEVBUl9QQVRURVJOICAgICBDbGVhciB0aGUgbWVudSBwYXR0ZXJuIGJ1ZmZlci4KICAgICAgUkVRX0JBQ0tfUEFUVEVSTiAgICAgIERlbGV0ZSB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGZyb20gdGhlIHBhdHRlcm4gYnVmZmVyLgogICAgICBSRVFfTkVYVF9NQVRDSCAgICAgTW92ZSB0byB0aGUgbmV4dCBpdGVtIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIG1hdGNoLgotICAgICBSRVFfUFJFVl9NQVRDSCAgICAgTW92ZSB0byB0aGUgcHJldmlvdXMgaXRlbSBtYXRjaGluZyB0aGUgcGF0dGVybiBtYXRjaC4mIzEzOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPkRvbid0IGdldCBvdmVyd2hlbG1lZCBieSB0aGUgbnVtYmVyIG9mIG9wdGlvbnMuIFdlIHdpbGwgc2VlIHRoZW0KLXNsb3dseSBvbmUgYWZ0ZXIgYW5vdGhlci4gVGhlIG9wdGlvbnMgb2YgaW50ZXJlc3QgaW4gdGhpcyBleGFtcGxlCi1hcmUgUkVRX1VQX0lURU0gYW5kIFJFUV9ET1dOX0lURU0uIFRoZXNlIHR3byBvcHRpb25zIHdoZW4gcGFzc2VkIHRvCi1tZW51X2RyaXZlciwgbWVudSBkcml2ZXIgdXBkYXRlcyB0aGUgY3VycmVudCBpdGVtIHRvIG9uZSBpdGVtIHVwIG9yCi1kb3duIHJlc3BlY3RpdmVseS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1FTlVEUklWRVIiIGlkPSJNRU5VRFJJVkVSIj4xNy4zLiBNZW51Ci1Ecml2ZXI6IFRoZSB3b3JrIGhvcnNlIG9mIHRoZSBtZW51IHN5c3RlbTwvYT48L2gzPgotPHA+QXMgeW91IGhhdmUgc2VlbiBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgbWVudV9kcml2ZXIgcGxheXMgYW4KLWltcG9ydGFudCByb2xlIGluIHVwZGF0aW5nIHRoZSBtZW51LiBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0bwotdW5kZXJzdGFuZCB2YXJpb3VzIG9wdGlvbnMgaXQgdGFrZXMgYW5kIHdoYXQgdGhleSBkby4gQXMgZXhwbGFpbmVkCi1hYm92ZSwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gbWVudV9kcml2ZXIoKSBjYW4gYmUgZWl0aGVyIGEKLW5hdmlnYXRpb25hbCByZXF1ZXN0LCBhIHByaW50YWJsZSBjaGFyYWN0ZXIgb3IgYSBLRVlfTU9VU0Uga2V5LgotTGV0J3MgZGlzc2VjdCB0aGUgZGlmZmVyZW50IG5hdmlnYXRpb25hbCByZXF1ZXN0cy48L3A+Ci08dWw+Ci08bGk+Ci08cD48ZW0+UkVRX0xFRlRfSVRFTSBhbmQgUkVRX1JJR0hUX0lURU08L2VtPjwvcD4KLTxwPkEgTWVudSBjYW4gYmUgZGlzcGxheWVkIHdpdGggbXVsdGlwbGUgY29sdW1ucyBmb3IgbW9yZSB0aGFuIG9uZQotaXRlbS4gVGhpcyBjYW4gYmUgZG9uZSBieSB1c2luZyB0aGUgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5tZW51X2Zvcm1hdCgpPC92YXI+ZnVuY3Rpb24uIFdoZW4gYSBtdWx0aSBjb2x1bW5hciBtZW51Ci1pcyBkaXNwbGF5ZWQgdGhlc2UgcmVxdWVzdHMgY2F1c2UgdGhlIG1lbnUgZHJpdmVyIHRvIG1vdmUgdGhlCi1jdXJyZW50IHNlbGVjdGlvbiB0byBsZWZ0IG9yIHJpZ2h0LjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1VQX0lURU0gYW5kIFJFUV9ET1dOX0lURU08L2VtPjwvcD4KLTxwPlRoZXNlIHR3byBvcHRpb25zIHlvdSBoYXZlIHNlZW4gaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZXNlCi1vcHRpb25zIHdoZW4gZ2l2ZW4sIG1ha2VzIHRoZSBtZW51X2RyaXZlciB0byBtb3ZlIHRoZSBjdXJyZW50Ci1zZWxlY3Rpb24gdG8gYW4gaXRlbSB1cCBvciBkb3duLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl8qIG9wdGlvbnM8L2VtPjwvcD4KLTxwPlRoZSBmb3VyIG9wdGlvbnMgUkVRX1NDUl9VTElORSwgUkVRX1NDUl9ETElORSwgUkVRX1NDUl9EUEFHRSwKLVJFUV9TQ1JfVVBBR0UgYXJlIHJlbGF0ZWQgdG8gc2Nyb2xsaW5nLiBJZiBhbGwgdGhlIGl0ZW1zIGluIHRoZQotbWVudSBjYW5ub3QgYmUgZGlzcGxheWVkIGluIHRoZSBtZW51IHN1YiB3aW5kb3csIHRoZW4gdGhlIG1lbnUgaXMKLXNjcm9sbGFibGUuIFRoZXNlIHJlcXVlc3RzIGNhbiBiZSBnaXZlbiB0byB0aGUgbWVudV9kcml2ZXIgdG8gZG8KLXRoZSBzY3JvbGxpbmcgZWl0aGVyIG9uZSBsaW5lIHVwLCBkb3duIG9yIG9uZSBwYWdlIGRvd24gb3IgdXAKLXJlc3BlY3RpdmVseS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9GSVJTVF9JVEVNLCBSRVFfTEFTVF9JVEVNLCBSRVFfTkVYVF9JVEVNIGFuZAotUkVRX1BSRVZfSVRFTTwvZW0+PC9wPgotPHA+VGhlc2UgcmVxdWVzdHMgYXJlIHNlbGYgZXhwbGFuYXRvcnkuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfVE9HR0xFX0lURU08L2VtPjwvcD4KLTxwPlRoaXMgcmVxdWVzdCB3aGVuIGdpdmVuLCB0b2dnbGVzIHRoZSBwcmVzZW50IHNlbGVjdGlvbi4gVGhpcwotb3B0aW9uIGlzIHRvIGJlIHVzZWQgb25seSBpbiBhIG11bHRpIHZhbHVlZCBtZW51LiBTbyB0byB1c2UgdGhpcwotcmVxdWVzdCB0aGUgb3B0aW9uIE9fT05FVkFMVUUgbXVzdCBiZSBvZmYuIFRoaXMgb3B0aW9uIGNhbiBiZSBtYWRlCi1vZmYgb3Igb24gd2l0aCBzZXRfbWVudV9vcHRzKCkuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5QYXR0ZXJuIFJlcXVlc3RzPC9lbT48L3A+Ci08cD5FdmVyeSBtZW51IGhhcyBhbiBhc3NvY2lhdGVkIHBhdHRlcm4gYnVmZmVyLCB3aGljaCBpcyB1c2VkIHRvCi1maW5kIHRoZSBuZWFyZXN0IG1hdGNoIHRvIHRoZSBhc2NpaSBjaGFyYWN0ZXJzIGVudGVyZWQgYnkgdGhlIHVzZXIuCi1XaGVuZXZlciBhc2NpaSBjaGFyYWN0ZXJzIGFyZSBnaXZlbiB0byBtZW51X2RyaXZlciwgaXQgcHV0cyBpbiB0bwotdGhlIHBhdHRlcm4gYnVmZmVyLiBJdCBhbHNvIHRyaWVzIHRvIGZpbmQgdGhlIG5lYXJlc3QgbWF0Y2ggdG8gdGhlCi1wYXR0ZXJuIGluIHRoZSBpdGVtcyBsaXN0IGFuZCBtb3ZlcyBjdXJyZW50IHNlbGVjdGlvbiB0byB0aGF0IGl0ZW0uCi1UaGUgcmVxdWVzdCBSRVFfQ0xFQVJfUEFUVEVSTiBjbGVhcnMgdGhlIHBhdHRlcm4gYnVmZmVyLiBUaGUKLXJlcXVlc3QgUkVRX0JBQ0tfUEFUVEVSTiBkZWxldGVzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgaW4gdGhlCi1wYXR0ZXJuIGJ1ZmZlci4gSW4gY2FzZSB0aGUgcGF0dGVybiBtYXRjaGVzIG1vcmUgdGhhbiBvbmUgaXRlbSB0aGVuCi10aGUgbWF0Y2hlZCBpdGVtcyBjYW4gYmUgY3ljbGVkIHRocm91Z2ggUkVRX05FWFRfTUFUQ0ggYW5kCi1SRVFfUFJFVl9NQVRDSCB3aGljaCBtb3ZlIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB0byB0aGUgbmV4dCBhbmQKLXByZXZpb3VzIG1hdGNoZXMgcmVzcGVjdGl2ZWx5LjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+TW91c2UgUmVxdWVzdHM8L2VtPjwvcD4KLTxwPkluIGNhc2Ugb2YgS0VZX01PVVNFIHJlcXVlc3RzLCBhY2NvcmRpbmcgdG8gdGhlIG1vdXNlIHBvc2l0aW9uCi1hbiBhY3Rpb24gaXMgdGFrZW4gYWNjb3JkaW5nbHkuIFRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gaXMgZXhwbGFpbmVkCi1pbiB0aGUgbWFuIHBhZ2UgYXMsPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjkwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj48ZW0+ICAgICAgIElmICB0aGUgIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5LCB0aGUKKyAgICAgUkVRX1BSRVZfTUFUQ0ggICAgIE1vdmUgdG8gdGhlIHByZXZpb3VzIGl0ZW0gbWF0Y2hpbmcgdGhlIHBhdHRlcm4gbWF0Y2guJiMxMzs8L1BSRQorPjwvUAorPjxQCis+RG9uJ3QgZ2V0IG92ZXJ3aGVsbWVkIGJ5IHRoZSBudW1iZXIgb2Ygb3B0aW9ucy4gV2Ugd2lsbCBzZWUgdGhlbSBzbG93bHkgb25lCithZnRlciBhbm90aGVyLiBUaGUgb3B0aW9ucyBvZiBpbnRlcmVzdCBpbiB0aGlzIGV4YW1wbGUgYXJlIFJFUV9VUF9JVEVNIGFuZAorUkVRX0RPV05fSVRFTS4gIFRoZXNlIHR3byBvcHRpb25zIHdoZW4gcGFzc2VkIHRvIG1lbnVfZHJpdmVyLCBtZW51IGRyaXZlcgordXBkYXRlcyB0aGUgY3VycmVudCBpdGVtIHRvIG9uZSBpdGVtIHVwIG9yIGRvd24gcmVzcGVjdGl2ZWx5LjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTUVOVURSSVZFUiIKKz4xNy4zLiBNZW51IERyaXZlcjogVGhlIHdvcmsgaG9yc2Ugb2YgdGhlIG1lbnUgc3lzdGVtPC9BCis+PC9IMworPjxQCis+QXMgeW91IGhhdmUgc2VlbiBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgbWVudV9kcml2ZXIgcGxheXMgYW4gaW1wb3J0YW50IHJvbGUgaW4KK3VwZGF0aW5nIHRoZSBtZW51LiBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHZhcmlvdXMgb3B0aW9ucyBpdCB0YWtlcworYW5kIHdoYXQgdGhleSBkby4gIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gbWVudV9kcml2ZXIoKSBjYW4KK2JlIGVpdGhlciBhIG5hdmlnYXRpb25hbCByZXF1ZXN0LCBhIHByaW50YWJsZSBjaGFyYWN0ZXIgb3IgYSBLRVlfTU9VU0Uga2V5LgorTGV0J3MgZGlzc2VjdCB0aGUgZGlmZmVyZW50IG5hdmlnYXRpb25hbCByZXF1ZXN0cy48L1AKKz48UAorPjwvUAorPjxVTAorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9MRUZUX0lURU0gYW5kIFJFUV9SSUdIVF9JVEVNPC9JCis+PC9TUEFOCis+PC9QCis+PFAKKz5BIE1lbnUgY2FuIGJlIGRpc3BsYXllZCB3aXRoIG11bHRpcGxlIGNvbHVtbnMgZm9yIG1vcmUgdGhhbiBvbmUgaXRlbS4gVGhpcyBjYW4KK2JlIGRvbmUgYnkgdXNpbmcgdGhlIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+bWVudV9mb3JtYXQoKTwvVFQKKz5mdW5jdGlvbi4KK1doZW4gYSBtdWx0aSBjb2x1bW5hciBtZW51IGlzIGRpc3BsYXllZCB0aGVzZSByZXF1ZXN0cyBjYXVzZSB0aGUgbWVudSBkcml2ZXIgdG8KK21vdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIGxlZnQgb3IgcmlnaHQuPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9VUF9JVEVNIGFuZCBSRVFfRE9XTl9JVEVNIDwvSQorPjwvU1BBTgorPiA8L1AKKz48UAorPlRoZXNlIHR3byBvcHRpb25zIHlvdSBoYXZlIHNlZW4gaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZXNlIG9wdGlvbnMgd2hlbiBnaXZlbiwKK21ha2VzIHRoZSBtZW51X2RyaXZlciB0byBtb3ZlIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB0byBhbiBpdGVtIHVwIG9yIGRvd24uPC9QCis+PC9MSQorPjxMSQorPjxQCis+IDxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0NSXyogb3B0aW9uczwvSQorPjwvU1BBTgorPiA8L1AKKz48UAorPlRoZSBmb3VyIG9wdGlvbnMgUkVRX1NDUl9VTElORSwgUkVRX1NDUl9ETElORSwgUkVRX1NDUl9EUEFHRSwgUkVRX1NDUl9VUEFHRSBhcmUKK3JlbGF0ZWQgdG8gc2Nyb2xsaW5nLiBJZiBhbGwgdGhlIGl0ZW1zIGluIHRoZSBtZW51IGNhbm5vdCBiZSBkaXNwbGF5ZWQgaW4gdGhlCittZW51IHN1YiB3aW5kb3csIHRoZW4gdGhlIG1lbnUgaXMgc2Nyb2xsYWJsZS4gVGhlc2UgcmVxdWVzdHMgY2FuIGJlIGdpdmVuIHRvIHRoZQorbWVudV9kcml2ZXIgdG8gZG8gdGhlIHNjcm9sbGluZyBlaXRoZXIgb25lIGxpbmUgdXAsIGRvd24gb3Igb25lIHBhZ2UgZG93biBvciB1cAorcmVzcGVjdGl2ZWx5LiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0ZJUlNUX0lURU0sIFJFUV9MQVNUX0lURU0sIFJFUV9ORVhUX0lURU0gYW5kCitSRVFfUFJFVl9JVEVNIDwvSQorPjwvU1BBTgorPiA8L1AKKz48UAorPlRoZXNlIHJlcXVlc3RzIGFyZSBzZWxmIGV4cGxhbmF0b3J5LjwvUAorPjwvTEkKKz48TEkKKz48UAorPiA8U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1RPR0dMRV9JVEVNPC9JCis+PC9TUEFOCis+IDwvUAorPjxQCis+VGhpcyByZXF1ZXN0IHdoZW4gZ2l2ZW4sIHRvZ2dsZXMgdGhlIHByZXNlbnQgc2VsZWN0aW9uLiBUaGlzIG9wdGlvbiBpcyB0byBiZQordXNlZCBvbmx5IGluIGEgbXVsdGkgdmFsdWVkIG1lbnUuIFNvIHRvIHVzZSB0aGlzIHJlcXVlc3QgdGhlIG9wdGlvbiBPX09ORVZBTFVFCittdXN0IGJlIG9mZi4gVGhpcyBvcHRpb24gY2FuIGJlIG1hZGUgb2ZmIG9yIG9uIHdpdGggc2V0X21lbnVfb3B0cygpLjwvUAorPjwvTEkKKz48TEkKKz48UAorPiA8U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UGF0dGVybiBSZXF1ZXN0cyA8L0kKKz48L1NQQU4KKz48L1AKKz48UAorPkV2ZXJ5IG1lbnUgaGFzIGFuIGFzc29jaWF0ZWQgcGF0dGVybiBidWZmZXIsIHdoaWNoIGlzIHVzZWQgdG8gZmluZCB0aGUgbmVhcmVzdAorbWF0Y2ggdG8gdGhlIGFzY2lpIGNoYXJhY3RlcnMgZW50ZXJlZCBieSB0aGUgdXNlci4gV2hlbmV2ZXIgYXNjaWkgY2hhcmFjdGVycyBhcmUKK2dpdmVuIHRvIG1lbnVfZHJpdmVyLCBpdCBwdXRzIGluIHRvIHRoZSBwYXR0ZXJuIGJ1ZmZlci4gSXQgYWxzbyB0cmllcyB0byBmaW5kCit0aGUgbmVhcmVzdCBtYXRjaCB0byB0aGUgcGF0dGVybiBpbiB0aGUgaXRlbXMgbGlzdCBhbmQgbW92ZXMgY3VycmVudCBzZWxlY3Rpb24KK3RvIHRoYXQgaXRlbS4gVGhlIHJlcXVlc3QgUkVRX0NMRUFSX1BBVFRFUk4gY2xlYXJzIHRoZSBwYXR0ZXJuIGJ1ZmZlci4gVGhlCityZXF1ZXN0IFJFUV9CQUNLX1BBVFRFUk4gZGVsZXRlcyB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGluIHRoZSBwYXR0ZXJuIGJ1ZmZlci4KK0luIGNhc2UgdGhlIHBhdHRlcm4gbWF0Y2hlcyBtb3JlIHRoYW4gb25lIGl0ZW0gdGhlbiB0aGUgbWF0Y2hlZCBpdGVtcyBjYW4gYmUKK2N5Y2xlZCB0aHJvdWdoIFJFUV9ORVhUX01BVENIIGFuZCBSRVFfUFJFVl9NQVRDSCB3aGljaCBtb3ZlIHRoZSBjdXJyZW50CitzZWxlY3Rpb24gdG8gdGhlIG5leHQgYW5kIHByZXZpb3VzIG1hdGNoZXMgcmVzcGVjdGl2ZWx5LjwvUAorPjwvTEkKKz48TEkKKz48UAorPiA8U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+TW91c2UgUmVxdWVzdHM8L0kKKz48L1NQQU4KKz48L1AKKz48UAorPkluIGNhc2Ugb2YgS0VZX01PVVNFIHJlcXVlc3RzLCBhY2NvcmRpbmcgdG8gdGhlIG1vdXNlIHBvc2l0aW9uIGFuIGFjdGlvbiBpcwordGFrZW4gYWNjb3JkaW5nbHkuIFRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gaXMgZXhwbGFpbmVkIGluIHRoZSBtYW4gcGFnZSBhcywgPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz4gICAgICAgSWYgIHRoZSAgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCBrZXksIHRoZQogICAgICAgIGFzc29jaWF0ZWQgbW91c2UgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIG9uZSBvZiB0aGUgYWJvdmUKICAgICAgICBwcmUtZGVmaW5lZCAgcmVxdWVzdHMuICAgQ3VycmVudGx5IG9ubHkgY2xpY2tzIGluIHRoZSB1c2VyCiAgICAgICAgd2luZG93IChlLmcuIGluc2lkZSB0aGUgbWVudSBkaXNwbGF5IGFyZWEgb3IgIHRoZSAgZGVjb3JhJnNoeTsKQEAgLTM4NjEsMzkgKzU0MjgsNDkgQEAKICAgICAgICBnZW5lcmF0ZWQsIGlmIHlvdSBkb3VibGVjbGljayBhIFJFUV9TQ1JfRFBBR0UgaXMgZ2VuZXJhdGVkCiAgICAgICAgYW5kICBpZiAgeW91ICB0cmlwbGVjbGljayBhIFJFUV9MQVNUX0lURU0gaXMgZ2VuZXJhdGVkLiBJZgogICAgICAgIHlvdSBjbGljayBhdCBhbiBpdGVtIGluc2lkZSB0aGUgZGlzcGxheSBhcmVhIG9mIHRoZSAgbWVudSwKLSAgICAgICB0aGUgbWVudSBjdXJzb3IgaXMgcG9zaXRpb25lZCB0byB0aGF0IGl0ZW0uPC9lbT48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2xpPgotPC91bD4KLTxwPkVhY2ggb2YgdGhlIGFib3ZlIHJlcXVlc3RzIHdpbGwgYmUgZXhwbGFpbmVkIGluIHRoZSBmb2xsb3dpbmcKLWxpbmVzIHdpdGggc2V2ZXJhbCBleGFtcGxlcyB3aGVuZXZlciBhcHByb3ByaWF0ZS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1FTlVXSU5ET1dTIiBpZD0iTUVOVVdJTkRPV1MiPjE3LjQuIE1lbnUKLVdpbmRvd3M8L2E+PC9oMz4KLTxwPkV2ZXJ5IG1lbnUgY3JlYXRlZCBpcyBhc3NvY2lhdGVkIHdpdGggYSB3aW5kb3cgYW5kIGEgc3ViIHdpbmRvdy4KLVRoZSBtZW51IHdpbmRvdyBkaXNwbGF5cyBhbnkgdGl0bGUgb3IgYm9yZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUKLW1lbnUuIFRoZSBtZW51IHN1YiB3aW5kb3cgZGlzcGxheXMgdGhlIG1lbnUgaXRlbXMgY3VycmVudGx5Ci1hdmFpbGFibGUgZm9yIHNlbGVjdGlvbi4gQnV0IHdlIGRpZG4ndCBzcGVjaWZ5IGFueSB3aW5kb3cgb3Igc3ViCi13aW5kb3cgaW4gdGhlIHNpbXBsZSBleGFtcGxlLiBXaGVuIGEgd2luZG93IGlzIG5vdCBzcGVjaWZpZWQsCi1zdGRzY3IgaXMgdGFrZW4gYXMgdGhlIG1haW4gd2luZG93LCBhbmQgdGhlbiBtZW51IHN5c3RlbSBjYWxjdWxhdGVzCi10aGUgc3ViIHdpbmRvdyBzaXplIHJlcXVpcmVkIGZvciB0aGUgZGlzcGxheSBvZiBpdGVtcy4gVGhlbiBpdGVtcwotYXJlIGRpc3BsYXllZCBpbiB0aGUgY2FsY3VsYXRlZCBzdWIgd2luZG93LiBTbyBsZXQncyBwbGF5IHdpdGgKLXRoZXNlIHdpbmRvd3MgYW5kIGRpc3BsYXkgYSBtZW51IHdpdGggYSBib3JkZXIgYW5kIGEgdGl0bGUuPC9wPgotPGRpdiBjbGFzcz0iRVhBTVBMRSI+PGEgbmFtZT0iTU1FV0kiIGlkPSJNTUVXSSI+PC9hPgotPHA+PGI+RXhhbXBsZSAxOS4gTWVudSBXaW5kb3dzIFVzYWdlIGV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7bWVudS5oJmd0OworICAgICAgIHRoZSBtZW51IGN1cnNvciBpcyBwb3NpdGlvbmVkIHRvIHRoYXQgaXRlbS48L0kKKz48L1NQQU4KKz48L1BSRQorPjwvTEkKKz48L1VMCis+PFAKKz5FYWNoIG9mIHRoZSBhYm92ZSByZXF1ZXN0cyB3aWxsIGJlIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIGxpbmVzIHdpdGggc2V2ZXJhbAorZXhhbXBsZXMgd2hlbmV2ZXIgYXBwcm9wcmlhdGUuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJNRU5VV0lORE9XUyIKKz4xNy40LiBNZW51IFdpbmRvd3M8L0EKKz48L0gzCis+PFAKKz5FdmVyeSBtZW51IGNyZWF0ZWQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGFuZCBhIHN1YiB3aW5kb3cuIFRoZSBtZW51IHdpbmRvdworZGlzcGxheXMgYW55IHRpdGxlIG9yIGJvcmRlciBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbnUuIFRoZSBtZW51IHN1YiB3aW5kb3cKK2Rpc3BsYXlzIHRoZSBtZW51IGl0ZW1zIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbi4gQnV0IHdlIGRpZG4ndCBzcGVjaWZ5Cithbnkgd2luZG93IG9yIHN1YiB3aW5kb3cgaW4gdGhlIHNpbXBsZSBleGFtcGxlLiBXaGVuIGEgd2luZG93IGlzIG5vdCBzcGVjaWZpZWQsCitzdGRzY3IgaXMgdGFrZW4gYXMgdGhlIG1haW4gd2luZG93LCBhbmQgdGhlbiBtZW51IHN5c3RlbSBjYWxjdWxhdGVzIHRoZSBzdWIKK3dpbmRvdyBzaXplIHJlcXVpcmVkIGZvciB0aGUgZGlzcGxheSBvZiBpdGVtcy4gVGhlbiBpdGVtcyBhcmUgZGlzcGxheWVkIGluIHRoZQorY2FsY3VsYXRlZCBzdWIgd2luZG93LiBTbyBsZXQncyBwbGF5IHdpdGggdGhlc2Ugd2luZG93cyBhbmQgZGlzcGxheSBhIG1lbnUgd2l0aAorYSBib3JkZXIgYW5kIGEgdGl0bGUuPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9Ik1NRVdJIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDE5LiAgTWVudSBXaW5kb3dzIFVzYWdlIGV4YW1wbGUgPC9CCis+PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iSU5MSU5FTUVESUFPQkpFQ1QiCis+I2luY2x1ZGUgJiM2MDttZW51LmgmIzYyOwogCiAjZGVmaW5lIEFSUkFZX1NJWkUoYSkgKHNpemVvZihhKSAvIHNpemVvZihhWzBdKSkKLSNkZWZpbmUgQ1RSTEQgICA0CisjZGVmaW5lIENUUkxEIAk0CiAKIGNoYXIgKmNob2ljZXNbXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMSIsCkBAIC0zOTA2LDM5MiArNTQ4Myw0MDMgQEAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKTsKIAogaW50IG1haW4oKQoteyAgICAgICBJVEVNICoqbXlfaXRlbXM7Ci0gICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIE1FTlUgKm15X21lbnU7Cit7CUlURU0gKipteV9pdGVtczsKKwlpbnQgYzsJCQkJCisJTUVOVSAqbXlfbWVudTsKICAgICAgICAgV0lORE9XICpteV9tZW51X3dpbjsKICAgICAgICAgaW50IG5fY2hvaWNlcywgaTsKLSAgICAgICAgCi0gICAgICAgIC8qIEluaXRpYWxpemUgY3Vyc2VzICovCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgc3RhcnRfY29sb3IoKTsKKwkKKwkvKiBJbml0aWFsaXplIGN1cnNlcyAqLworCWluaXRzY3IoKTsKKwlzdGFydF9jb2xvcigpOwogICAgICAgICBjYnJlYWsoKTsKICAgICAgICAgbm9lY2hvKCk7Ci0gICAgICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOwotICAgICAgICBpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7CisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIC8qIENyZWF0ZSBpdGVtcyAqLworCS8qIENyZWF0ZSBpdGVtcyAqLwogICAgICAgICBuX2Nob2ljZXMgPSBBUlJBWV9TSVpFKGNob2ljZXMpOwogICAgICAgICBteV9pdGVtcyA9IChJVEVNICoqKWNhbGxvYyhuX2Nob2ljZXMsIHNpemVvZihJVEVNICopKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgbl9jaG9pY2VzOyArK2kpCisgICAgICAgIGZvcihpID0gMDsgaSAmIzYwOyBuX2Nob2ljZXM7ICsraSkKICAgICAgICAgICAgICAgICBteV9pdGVtc1tpXSA9IG5ld19pdGVtKGNob2ljZXNbaV0sIGNob2ljZXNbaV0pOwogCi0gICAgICAgIC8qIENyYXRlIG1lbnUgKi8KLSAgICAgICAgbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKKwkvKiBDcmF0ZSBtZW51ICovCisJbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKIAotICAgICAgICAvKiBDcmVhdGUgdGhlIHdpbmRvdyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbnUgKi8KKwkvKiBDcmVhdGUgdGhlIHdpbmRvdyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbnUgKi8KICAgICAgICAgbXlfbWVudV93aW4gPSBuZXd3aW4oMTAsIDQwLCA0LCA0KTsKICAgICAgICAga2V5cGFkKG15X21lbnVfd2luLCBUUlVFKTsKICAgICAgCi0gICAgICAgIC8qIFNldCBtYWluIHdpbmRvdyBhbmQgc3ViIHdpbmRvdyAqLworCS8qIFNldCBtYWluIHdpbmRvdyBhbmQgc3ViIHdpbmRvdyAqLwogICAgICAgICBzZXRfbWVudV93aW4obXlfbWVudSwgbXlfbWVudV93aW4pOwogICAgICAgICBzZXRfbWVudV9zdWIobXlfbWVudSwgZGVyd2luKG15X21lbnVfd2luLCA2LCAzOCwgMywgMSkpOwogCi0gICAgICAgIC8qIFNldCBtZW51IG1hcmsgdG8gdGhlIHN0cmluZyAiICogIiAqLworCS8qIFNldCBtZW51IG1hcmsgdG8gdGhlIHN0cmluZyAiICogIiAqLwogICAgICAgICBzZXRfbWVudV9tYXJrKG15X21lbnUsICIgKiAiKTsKIAotICAgICAgICAvKiBQcmludCBhIGJvcmRlciBhcm91bmQgdGhlIG1haW4gd2luZG93IGFuZCBwcmludCBhIHRpdGxlICovCisJLyogUHJpbnQgYSBib3JkZXIgYXJvdW5kIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpbnQgYSB0aXRsZSAqLwogICAgICAgICBib3gobXlfbWVudV93aW4sIDAsIDApOwotICAgICAgICBwcmludF9pbl9taWRkbGUobXlfbWVudV93aW4sIDEsIDAsIDQwLCAiTXkgTWVudSIsIENPTE9SX1BBSVIoMSkpOwotICAgICAgICBtdndhZGRjaChteV9tZW51X3dpbiwgMiwgMCwgQUNTX0xURUUpOwotICAgICAgICBtdndobGluZShteV9tZW51X3dpbiwgMiwgMSwgQUNTX0hMSU5FLCAzOCk7Ci0gICAgICAgIG12d2FkZGNoKG15X21lbnVfd2luLCAyLCAzOSwgQUNTX1JURUUpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDIsIDAsICJGMSB0byBleGl0Iik7Ci0gICAgICAgIHJlZnJlc2goKTsKKwlwcmludF9pbl9taWRkbGUobXlfbWVudV93aW4sIDEsIDAsIDQwLCAiTXkgTWVudSIsIENPTE9SX1BBSVIoMSkpOworCW12d2FkZGNoKG15X21lbnVfd2luLCAyLCAwLCBBQ1NfTFRFRSk7CisJbXZ3aGxpbmUobXlfbWVudV93aW4sIDIsIDEsIEFDU19ITElORSwgMzgpOworCW12d2FkZGNoKG15X21lbnVfd2luLCAyLCAzOSwgQUNTX1JURUUpOworCW12cHJpbnR3KExJTkVTIC0gMiwgMCwgIkYxIHRvIGV4aXQiKTsKKwlyZWZyZXNoKCk7CiAgICAgICAgIAotICAgICAgICAvKiBQb3N0IHRoZSBtZW51ICovCi0gICAgICAgIHBvc3RfbWVudShteV9tZW51KTsKLSAgICAgICAgd3JlZnJlc2gobXlfbWVudV93aW4pOworCS8qIFBvc3QgdGhlIG1lbnUgKi8KKwlwb3N0X21lbnUobXlfbWVudSk7CisJd3JlZnJlc2gobXlfbWVudV93aW4pOwogCi0gICAgICAgIHdoaWxlKChjID0gd2dldGNoKG15X21lbnVfd2luKSkgIT0gS0VZX0YoMSkpCi0gICAgICAgIHsgICAgICAgc3dpdGNoKGMpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfRE9XTl9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisJd2hpbGUoKGMgPSB3Z2V0Y2gobXlfbWVudV93aW4pKSAhPSBLRVlfRigxKSkKKwl7ICAgICAgIHN3aXRjaChjKQorCSAgICAgICAgewljYXNlIEtFWV9ET1dOOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOworCQkJCWJyZWFrOworCQl9CiAgICAgICAgICAgICAgICAgd3JlZnJlc2gobXlfbWVudV93aW4pOwotICAgICAgICB9ICAgICAgIAorCX0JCiAKLSAgICAgICAgLyogVW5wb3N0IGFuZCBmcmVlIGFsbCB0aGUgbWVtb3J5IHRha2VuIHVwICovCisJLyogVW5wb3N0IGFuZCBmcmVlIGFsbCB0aGUgbWVtb3J5IHRha2VuIHVwICovCiAgICAgICAgIHVucG9zdF9tZW51KG15X21lbnUpOwogICAgICAgICBmcmVlX21lbnUobXlfbWVudSk7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQorICAgICAgICBmb3IoaSA9IDA7IGkgJiM2MDsgbl9jaG9pY2VzOyArK2kpCiAgICAgICAgICAgICAgICAgZnJlZV9pdGVtKG15X2l0ZW1zW2ldKTsKLSAgICAgICAgZW5kd2luKCk7CisJZW5kd2luKCk7CiB9CiAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKQoteyAgICAgICBpbnQgbGVuZ3RoLCB4LCB5OwotICAgICAgICBmbG9hdCB0ZW1wOworewlpbnQgbGVuZ3RoLCB4LCB5OworCWZsb2F0IHRlbXA7CiAKLSAgICAgICAgaWYod2luID09IE5VTEwpCi0gICAgICAgICAgICAgICAgd2luID0gc3Rkc2NyOwotICAgICAgICBnZXR5eCh3aW4sIHksIHgpOwotICAgICAgICBpZihzdGFydHggIT0gMCkKLSAgICAgICAgICAgICAgICB4ID0gc3RhcnR4OwotICAgICAgICBpZihzdGFydHkgIT0gMCkKLSAgICAgICAgICAgICAgICB5ID0gc3RhcnR5OwotICAgICAgICBpZih3aWR0aCA9PSAwKQotICAgICAgICAgICAgICAgIHdpZHRoID0gODA7CisJaWYod2luID09IE5VTEwpCisJCXdpbiA9IHN0ZHNjcjsKKwlnZXR5eCh3aW4sIHksIHgpOworCWlmKHN0YXJ0eCAhPSAwKQorCQl4ID0gc3RhcnR4OworCWlmKHN0YXJ0eSAhPSAwKQorCQl5ID0gc3RhcnR5OworCWlmKHdpZHRoID09IDApCisJCXdpZHRoID0gODA7CiAKLSAgICAgICAgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7Ci0gICAgICAgIHRlbXAgPSAod2lkdGggLSBsZW5ndGgpLyAyOwotICAgICAgICB4ID0gc3RhcnR4ICsgKGludCl0ZW1wOwotICAgICAgICB3YXR0cm9uKHdpbiwgY29sb3IpOwotICAgICAgICBtdndwcmludHcod2luLCB5LCB4LCAiJXMiLCBzdHJpbmcpOwotICAgICAgICB3YXR0cm9mZih3aW4sIGNvbG9yKTsKLSAgICAgICAgcmVmcmVzaCgpOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPlRoaXMgZXhhbXBsZSBjcmVhdGVzIGEgbWVudSB3aXRoIGEgdGl0bGUsIGJvcmRlciwgYSBmYW5jeSBsaW5lCi1zZXBhcmF0aW5nIHRpdGxlIGFuZCB0aGUgaXRlbXMuIEFzIHlvdSBjYW4gc2VlLCBpbiBvcmRlciB0byBhdHRhY2gKLWEgd2luZG93IHRvIGEgbWVudSB0aGUgZnVuY3Rpb24gc2V0X21lbnVfd2luKCkgaGFzIHRvIGJlIHVzZWQuIFRoZW4KLXdlIGF0dGFjaCB0aGUgc3ViIHdpbmRvdyBhbHNvLiBUaGlzIGRpc3BsYXlzIHRoZSBpdGVtcyBpbiB0aGUgc3ViCi13aW5kb3cuIFlvdSBjYW4gYWxzbyBzZXQgdGhlIG1hcmsgc3RyaW5nIHdoaWNoIGdldHMgZGlzcGxheWVkIHRvCi10aGUgbGVmdCBvZiB0aGUgc2VsZWN0ZWQgaXRlbSB3aXRoIHNldF9tZW51X21hcmsoKS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlNDUk9MTE1FTlVTIiBpZD0iU0NST0xMTUVOVVMiPjE3LjUuCi1TY3JvbGxpbmcgTWVudXM8L2E+PC9oMz4KLTxwPklmIHRoZSBzdWIgd2luZG93IGdpdmVuIGZvciBhIHdpbmRvdyBpcyBub3QgYmlnIGVub3VnaCB0byBzaG93Ci1hbGwgdGhlIGl0ZW1zLCB0aGVuIHRoZSBtZW51IHdpbGwgYmUgc2Nyb2xsYWJsZS4gV2hlbiB5b3UgYXJlIG9uCi10aGUgbGFzdCBpdGVtIGluIHRoZSBwcmVzZW50IGxpc3QsIGlmIHlvdSBzZW5kIFJFUV9ET1dOX0lURU0sIGl0Ci1nZXRzIHRyYW5zbGF0ZWQgaW50byBSRVFfU0NSX0RMSU5FIGFuZCB0aGUgbWVudSBzY3JvbGxzIGJ5IG9uZQotaXRlbS4gWW91IGNhbiBtYW51YWxseSBnaXZlIFJFUV9TQ1JfIG9wZXJhdGlvbnMgdG8gZG8gc2Nyb2xsaW5nLgotTGV0J3Mgc2VlIGhvdyBpdCBjYW4gYmUgZG9uZS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJNTUVTQyIgaWQ9Ik1NRVNDIj48L2E+Ci08cD48Yj5FeGFtcGxlIDIwLiBTY3JvbGxpbmcgTWVudXMgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtjdXJzZXMuaCZndDsKLSNpbmNsdWRlICZsdDttZW51LmgmZ3Q7CisJbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7CisJdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7CisJeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKKwl3YXR0cm9uKHdpbiwgY29sb3IpOworCW12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7CisJd2F0dHJvZmYod2luLCBjb2xvcik7CisJcmVmcmVzaCgpOworfTwvU1BBTgorPjwvUFJFCis+PC9ESVYKKz48UAorPlRoaXMgZXhhbXBsZSBjcmVhdGVzIGEgbWVudSB3aXRoIGEgdGl0bGUsIGJvcmRlciwgYSBmYW5jeSBsaW5lIHNlcGFyYXRpbmcgdGl0bGUKK2FuZCB0aGUgaXRlbXMuIEFzIHlvdSBjYW4gc2VlLCBpbiBvcmRlciB0byBhdHRhY2ggYSB3aW5kb3cgdG8gYSBtZW51IHRoZQorZnVuY3Rpb24gc2V0X21lbnVfd2luKCkgaGFzIHRvIGJlIHVzZWQuIFRoZW4gd2UgYXR0YWNoIHRoZSBzdWIgd2luZG93IGFsc28uIFRoaXMKK2Rpc3BsYXlzIHRoZSBpdGVtcyBpbiB0aGUgc3ViIHdpbmRvdy4gIFlvdSBjYW4gYWxzbyBzZXQgdGhlIG1hcmsgc3RyaW5nIHdoaWNoCitnZXRzIGRpc3BsYXllZCB0byB0aGUgbGVmdCBvZiB0aGUgc2VsZWN0ZWQgaXRlbSB3aXRoIHNldF9tZW51X21hcmsoKS48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlNDUk9MTE1FTlVTIgorPjE3LjUuIFNjcm9sbGluZyBNZW51czwvQQorPjwvSDMKKz48UAorPklmIHRoZSBzdWIgd2luZG93IGdpdmVuIGZvciBhIHdpbmRvdyBpcyBub3QgYmlnIGVub3VnaCB0byBzaG93IGFsbCB0aGUgaXRlbXMsCit0aGVuIHRoZSBtZW51IHdpbGwgYmUgc2Nyb2xsYWJsZS4gV2hlbiB5b3UgYXJlIG9uIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIHByZXNlbnQKK2xpc3QsIGlmIHlvdSBzZW5kIFJFUV9ET1dOX0lURU0sIGl0IGdldHMgdHJhbnNsYXRlZCBpbnRvIFJFUV9TQ1JfRExJTkUgYW5kIHRoZQorbWVudSBzY3JvbGxzIGJ5IG9uZSBpdGVtLiAgWW91IGNhbiBtYW51YWxseSBnaXZlIFJFUV9TQ1JfIG9wZXJhdGlvbnMgdG8gZG8KK3Njcm9sbGluZy4gTGV0J3Mgc2VlIGhvdyBpdCBjYW4gYmUgZG9uZS48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iTU1FU0MiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMjAuICBTY3JvbGxpbmcgTWVudXMgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO2N1cnNlcy5oJiM2MjsKKyNpbmNsdWRlICYjNjA7bWVudS5oJiM2MjsKIAogI2RlZmluZSBBUlJBWV9TSVpFKGEpIChzaXplb2YoYSkgLyBzaXplb2YoYVswXSkpCi0jZGVmaW5lIENUUkxEICAgNAorI2RlZmluZSBDVFJMRCAJNAogCiBjaGFyICpjaG9pY2VzW10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDciLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgOSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEwIiwKKwkJCSJDaG9pY2UgNSIsCisJCQkiQ2hvaWNlIDYiLAorCQkJIkNob2ljZSA3IiwKKwkJCSJDaG9pY2UgOCIsCisJCQkiQ2hvaWNlIDkiLAorCQkJIkNob2ljZSAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiRXhpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKU5VTEwsCiAgICAgICAgICAgICAgICAgICB9Owogdm9pZCBwcmludF9pbl9taWRkbGUoV0lORE9XICp3aW4sIGludCBzdGFydHksIGludCBzdGFydHgsIGludCB3aWR0aCwgY2hhciAqc3RyaW5nLCBjaHR5cGUgY29sb3IpOwogCiBpbnQgbWFpbigpCi17ICAgICAgIElURU0gKipteV9pdGVtczsKLSAgICAgICAgaW50IGM7ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgTUVOVSAqbXlfbWVudTsKK3sJSVRFTSAqKm15X2l0ZW1zOworCWludCBjOwkJCQkKKwlNRU5VICpteV9tZW51OwogICAgICAgICBXSU5ET1cgKm15X21lbnVfd2luOwogICAgICAgICBpbnQgbl9jaG9pY2VzLCBpOwotICAgICAgICAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8KLSAgICAgICAgaW5pdHNjcigpOwotICAgICAgICBzdGFydF9jb2xvcigpOworCQorCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCisJaW5pdHNjcigpOworCXN0YXJ0X2NvbG9yKCk7CiAgICAgICAgIGNicmVhaygpOwogICAgICAgICBub2VjaG8oKTsKLSAgICAgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7Ci0gICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9SRUQsIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDIsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDIsIENPTE9SX0NZQU4sIENPTE9SX0JMQUNLKTsKIAotICAgICAgICAvKiBDcmVhdGUgaXRlbXMgKi8KKwkvKiBDcmVhdGUgaXRlbXMgKi8KICAgICAgICAgbl9jaG9pY2VzID0gQVJSQVlfU0laRShjaG9pY2VzKTsKICAgICAgICAgbXlfaXRlbXMgPSAoSVRFTSAqKiljYWxsb2Mobl9jaG9pY2VzLCBzaXplb2YoSVRFTSAqKSk7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQorICAgICAgICBmb3IoaSA9IDA7IGkgJiM2MDsgbl9jaG9pY2VzOyArK2kpCiAgICAgICAgICAgICAgICAgbXlfaXRlbXNbaV0gPSBuZXdfaXRlbShjaG9pY2VzW2ldLCBjaG9pY2VzW2ldKTsKIAotICAgICAgICAvKiBDcmF0ZSBtZW51ICovCi0gICAgICAgIG15X21lbnUgPSBuZXdfbWVudSgoSVRFTSAqKilteV9pdGVtcyk7CisJLyogQ3JhdGUgbWVudSAqLworCW15X21lbnUgPSBuZXdfbWVudSgoSVRFTSAqKilteV9pdGVtcyk7CiAKLSAgICAgICAgLyogQ3JlYXRlIHRoZSB3aW5kb3cgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZW51ICovCisJLyogQ3JlYXRlIHRoZSB3aW5kb3cgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZW51ICovCiAgICAgICAgIG15X21lbnVfd2luID0gbmV3d2luKDEwLCA0MCwgNCwgNCk7CiAgICAgICAgIGtleXBhZChteV9tZW51X3dpbiwgVFJVRSk7CiAgICAgIAotICAgICAgICAvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KKwkvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KICAgICAgICAgc2V0X21lbnVfd2luKG15X21lbnUsIG15X21lbnVfd2luKTsKICAgICAgICAgc2V0X21lbnVfc3ViKG15X21lbnUsIGRlcndpbihteV9tZW51X3dpbiwgNiwgMzgsIDMsIDEpKTsKLSAgICAgICAgc2V0X21lbnVfZm9ybWF0KG15X21lbnUsIDUsIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIC8qIFNldCBtZW51IG1hcmsgdG8gdGhlIHN0cmluZyAiICogIiAqLworCXNldF9tZW51X2Zvcm1hdChteV9tZW51LCA1LCAxKTsKKwkJCQorCS8qIFNldCBtZW51IG1hcmsgdG8gdGhlIHN0cmluZyAiICogIiAqLwogICAgICAgICBzZXRfbWVudV9tYXJrKG15X21lbnUsICIgKiAiKTsKIAotICAgICAgICAvKiBQcmludCBhIGJvcmRlciBhcm91bmQgdGhlIG1haW4gd2luZG93IGFuZCBwcmludCBhIHRpdGxlICovCisJLyogUHJpbnQgYSBib3JkZXIgYXJvdW5kIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpbnQgYSB0aXRsZSAqLwogICAgICAgICBib3gobXlfbWVudV93aW4sIDAsIDApOwotICAgICAgICBwcmludF9pbl9taWRkbGUobXlfbWVudV93aW4sIDEsIDAsIDQwLCAiTXkgTWVudSIsIENPTE9SX1BBSVIoMSkpOwotICAgICAgICBtdndhZGRjaChteV9tZW51X3dpbiwgMiwgMCwgQUNTX0xURUUpOwotICAgICAgICBtdndobGluZShteV9tZW51X3dpbiwgMiwgMSwgQUNTX0hMSU5FLCAzOCk7Ci0gICAgICAgIG12d2FkZGNoKG15X21lbnVfd2luLCAyLCAzOSwgQUNTX1JURUUpOworCXByaW50X2luX21pZGRsZShteV9tZW51X3dpbiwgMSwgMCwgNDAsICJNeSBNZW51IiwgQ09MT1JfUEFJUigxKSk7CisJbXZ3YWRkY2gobXlfbWVudV93aW4sIDIsIDAsIEFDU19MVEVFKTsKKwltdndobGluZShteV9tZW51X3dpbiwgMiwgMSwgQUNTX0hMSU5FLCAzOCk7CisJbXZ3YWRkY2gobXlfbWVudV93aW4sIDIsIDM5LCBBQ1NfUlRFRSk7CiAgICAgICAgIAotICAgICAgICAvKiBQb3N0IHRoZSBtZW51ICovCi0gICAgICAgIHBvc3RfbWVudShteV9tZW51KTsKLSAgICAgICAgd3JlZnJlc2gobXlfbWVudV93aW4pOwotICAgICAgICAKLSAgICAgICAgYXR0cm9uKENPTE9SX1BBSVIoMikpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgUGFnZVVwIGFuZCBQYWdlRG93biB0byBzY29sbCBkb3duIG9yIHVwIGEgcGFnZSBvZiBpdGVtcyIpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDEsIDAsICJBcnJvdyBLZXlzIHRvIG5hdmlnYXRlIChGMSB0byBFeGl0KSIpOwotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoMikpOwotICAgICAgICByZWZyZXNoKCk7CisJLyogUG9zdCB0aGUgbWVudSAqLworCXBvc3RfbWVudShteV9tZW51KTsKKwl3cmVmcmVzaChteV9tZW51X3dpbik7CisJCisJYXR0cm9uKENPTE9SX1BBSVIoMikpOworCW12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVzZSBQYWdlVXAgYW5kIFBhZ2VEb3duIHRvIHNjb2xsIGRvd24gb3IgdXAgYSBwYWdlIG9mIGl0ZW1zIik7CisJbXZwcmludHcoTElORVMgLSAxLCAwLCAiQXJyb3cgS2V5cyB0byBuYXZpZ2F0ZSAoRjEgdG8gRXhpdCkiKTsKKwlhdHRyb2ZmKENPTE9SX1BBSVIoMikpOworCXJlZnJlc2goKTsKIAotICAgICAgICB3aGlsZSgoYyA9IHdnZXRjaChteV9tZW51X3dpbikpICE9IEtFWV9GKDEpKQotICAgICAgICB7ICAgICAgIHN3aXRjaChjKQotICAgICAgICAgICAgICAgIHsgICAgICAgY2FzZSBLRVlfRE9XTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX0RPV05fSVRFTSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfVVA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9VUF9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9OUEFHRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1NDUl9EUEFHRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfUFBBR0U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9TQ1JfVVBBR0UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisJd2hpbGUoKGMgPSB3Z2V0Y2gobXlfbWVudV93aW4pKSAhPSBLRVlfRigxKSkKKwl7ICAgICAgIHN3aXRjaChjKQorCSAgICAgICAgewljYXNlIEtFWV9ET1dOOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfTlBBR0U6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1NDUl9EUEFHRSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9QUEFHRToKKwkJCQltZW51X2RyaXZlcihteV9tZW51LCBSRVFfU0NSX1VQQUdFKTsKKwkJCQlicmVhazsKKwkJfQogICAgICAgICAgICAgICAgIHdyZWZyZXNoKG15X21lbnVfd2luKTsKLSAgICAgICAgfSAgICAgICAKKwl9CQogCi0gICAgICAgIC8qIFVucG9zdCBhbmQgZnJlZSBhbGwgdGhlIG1lbW9yeSB0YWtlbiB1cCAqLworCS8qIFVucG9zdCBhbmQgZnJlZSBhbGwgdGhlIG1lbW9yeSB0YWtlbiB1cCAqLwogICAgICAgICB1bnBvc3RfbWVudShteV9tZW51KTsKICAgICAgICAgZnJlZV9tZW51KG15X21lbnUpOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuX2Nob2ljZXM7ICsraSkKKyAgICAgICAgZm9yKGkgPSAwOyBpICYjNjA7IG5fY2hvaWNlczsgKytpKQogICAgICAgICAgICAgICAgIGZyZWVfaXRlbShteV9pdGVtc1tpXSk7Ci0gICAgICAgIGVuZHdpbigpOworCWVuZHdpbigpOwogfQogCiB2b2lkIHByaW50X2luX21pZGRsZShXSU5ET1cgKndpbiwgaW50IHN0YXJ0eSwgaW50IHN0YXJ0eCwgaW50IHdpZHRoLCBjaGFyICpzdHJpbmcsIGNodHlwZSBjb2xvcikKLXsgICAgICAgaW50IGxlbmd0aCwgeCwgeTsKLSAgICAgICAgZmxvYXQgdGVtcDsKK3sJaW50IGxlbmd0aCwgeCwgeTsKKwlmbG9hdCB0ZW1wOwogCi0gICAgICAgIGlmKHdpbiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHdpbiA9IHN0ZHNjcjsKLSAgICAgICAgZ2V0eXgod2luLCB5LCB4KTsKLSAgICAgICAgaWYoc3RhcnR4ICE9IDApCi0gICAgICAgICAgICAgICAgeCA9IHN0YXJ0eDsKLSAgICAgICAgaWYoc3RhcnR5ICE9IDApCi0gICAgICAgICAgICAgICAgeSA9IHN0YXJ0eTsKLSAgICAgICAgaWYod2lkdGggPT0gMCkKLSAgICAgICAgICAgICAgICB3aWR0aCA9IDgwOworCWlmKHdpbiA9PSBOVUxMKQorCQl3aW4gPSBzdGRzY3I7CisJZ2V0eXgod2luLCB5LCB4KTsKKwlpZihzdGFydHggIT0gMCkKKwkJeCA9IHN0YXJ0eDsKKwlpZihzdGFydHkgIT0gMCkKKwkJeSA9IHN0YXJ0eTsKKwlpZih3aWR0aCA9PSAwKQorCQl3aWR0aCA9IDgwOwogCi0gICAgICAgIGxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOwotICAgICAgICB0ZW1wID0gKHdpZHRoIC0gbGVuZ3RoKS8gMjsKLSAgICAgICAgeCA9IHN0YXJ0eCArIChpbnQpdGVtcDsKLSAgICAgICAgd2F0dHJvbih3aW4sIGNvbG9yKTsKLSAgICAgICAgbXZ3cHJpbnR3KHdpbiwgeSwgeCwgIiVzIiwgc3RyaW5nKTsKLSAgICAgICAgd2F0dHJvZmYod2luLCBjb2xvcik7Ci0gICAgICAgIHJlZnJlc2goKTsKLX08L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08cD5UaGlzIHByb2dyYW0gaXMgc2VsZi1leHBsYW5hdG9yeS4gSW4gdGhpcyBleGFtcGxlIHRoZSBudW1iZXIgb2YKLWNob2ljZXMgaGFzIGJlZW4gaW5jcmVhc2VkIHRvIHRlbiwgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gb3VyIHN1Ygotd2luZG93IHNpemUgd2hpY2ggY2FuIGhvbGQgNiBpdGVtcy4gVGhpcyBtZXNzYWdlIGhhcyB0byBiZQotZXhwbGljaXRseSBjb252ZXllZCB0byB0aGUgbWVudSBzeXN0ZW0gd2l0aCB0aGUgZnVuY3Rpb24KLXNldF9tZW51X2Zvcm1hdCgpLiBJbiBoZXJlIHdlIHNwZWNpZnkgdGhlIG51bWJlciBvZiByb3dzIGFuZAotY29sdW1ucyB3ZSB3YW50IHRvIGJlIGRpc3BsYXllZCBmb3IgYSBzaW5nbGUgcGFnZS4gV2UgY2FuIHNwZWNpZnkKLWFueSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24sIGluIHRoZSByb3dzIHZhcmlhYmxlcywgaWYgaXQgaXMKLWxlc3MgdGhhbiB0aGUgaGVpZ2h0IG9mIHRoZSBzdWIgd2luZG93LiBJZiB0aGUga2V5IHByZXNzZWQgYnkgdGhlCi11c2VyIGlzIGEgUEFHRSBVUCBvciBQQUdFIERPV04sIHRoZSBtZW51IGlzIHNjcm9sbGVkIGEgcGFnZSBkdWUgdG8KLXRoZSByZXF1ZXN0cyAoUkVRX1NDUl9EUEFHRSBhbmQgUkVRX1NDUl9VUEFHRSkgZ2l2ZW4gdG8KLW1lbnVfZHJpdmVyKCkuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJNVUxUSUNPTFVNTiIgaWQ9Ik1VTFRJQ09MVU1OIj4xNy42LgotTXVsdGkgQ29sdW1uYXIgTWVudXM8L2E+PC9oMz4KLTxwPkluIHRoZSBhYm92ZSBleGFtcGxlIHlvdSBoYXZlIHNlZW4gaG93IHRvIHVzZSB0aGUgZnVuY3Rpb24KLXNldF9tZW51X2Zvcm1hdCgpLiBJIGRpZG4ndCBtZW50aW9uIHdoYXQgdGhlIGNvbHMgdmFyaWFibGUgKHRoaXJkCi1wYXJhbWV0ZXIpIGRvZXMuIFdlbGwsIElmIHlvdXIgc3ViIHdpbmRvdyBpcyB3aWRlIGVub3VnaCwgeW91IGNhbgotb3B0IHRvIGRpc3BsYXkgbW9yZSB0aGFuIG9uZSBpdGVtIHBlciByb3cuIFRoaXMgY2FuIGJlIHNwZWNpZmllZCBpbgotdGhlIGNvbHMgdmFyaWFibGUuIFRvIG1ha2UgdGhpbmdzIHNpbXBsZXIsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZQotZG9lc24ndCBzaG93IGRlc2NyaXB0aW9ucyBmb3IgdGhlIGl0ZW1zLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9Ik1NRU1VQ08iIGlkPSJNTUVNVUNPIj48L2E+Ci08cD48Yj5FeGFtcGxlIDIxLiBNaWx0IENvbHVtbmFyIE1lbnVzIEV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7Y3Vyc2VzLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bWVudS5oJmd0OworCWxlbmd0aCA9IHN0cmxlbihzdHJpbmcpOworCXRlbXAgPSAod2lkdGggLSBsZW5ndGgpLyAyOworCXggPSBzdGFydHggKyAoaW50KXRlbXA7CisJd2F0dHJvbih3aW4sIGNvbG9yKTsKKwltdndwcmludHcod2luLCB5LCB4LCAiJXMiLCBzdHJpbmcpOworCXdhdHRyb2ZmKHdpbiwgY29sb3IpOworCXJlZnJlc2goKTsKK308L1NQQU4KKz48L1BSRQorPjwvRElWCis+PFAKKz5UaGlzIHByb2dyYW0gaXMgc2VsZi1leHBsYW5hdG9yeS4gSW4gdGhpcyBleGFtcGxlIHRoZSBudW1iZXIgb2YgY2hvaWNlcyBoYXMgYmVlbgoraW5jcmVhc2VkIHRvIHRlbiwgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gb3VyIHN1YiB3aW5kb3cgc2l6ZSB3aGljaCBjYW4gaG9sZCA2CitpdGVtcy4gIFRoaXMgbWVzc2FnZSBoYXMgdG8gYmUgZXhwbGljaXRseSBjb252ZXllZCB0byB0aGUgbWVudSBzeXN0ZW0gd2l0aCB0aGUKK2Z1bmN0aW9uIHNldF9tZW51X2Zvcm1hdCgpLiBJbiBoZXJlIHdlIHNwZWNpZnkgdGhlIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIHdlCit3YW50IHRvIGJlIGRpc3BsYXllZCBmb3IgYSBzaW5nbGUgcGFnZS4gV2UgY2FuIHNwZWNpZnkgYW55IG51bWJlciBvZiBpdGVtcyB0byBiZQorc2hvd24sIGluIHRoZSByb3dzIHZhcmlhYmxlcywgaWYgaXQgaXMgbGVzcyB0aGFuIHRoZSBoZWlnaHQgb2YgdGhlIHN1YiB3aW5kb3cuCitJZiB0aGUga2V5IHByZXNzZWQgYnkgdGhlIHVzZXIgaXMgYSBQQUdFIFVQIG9yIFBBR0UgRE9XTiwgdGhlIG1lbnUgaXMgc2Nyb2xsZWQgYQorcGFnZSBkdWUgdG8gdGhlIHJlcXVlc3RzIChSRVFfU0NSX0RQQUdFIGFuZCBSRVFfU0NSX1VQQUdFKSBnaXZlbiB0bworbWVudV9kcml2ZXIoKS48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9Ik1VTFRJQ09MVU1OIgorPjE3LjYuIE11bHRpIENvbHVtbmFyIE1lbnVzPC9BCis+PC9IMworPjxQCis+SW4gdGhlIGFib3ZlIGV4YW1wbGUgeW91IGhhdmUgc2VlbiBob3cgdG8gdXNlIHRoZSBmdW5jdGlvbiBzZXRfbWVudV9mb3JtYXQoKS4gSQorZGlkbid0IG1lbnRpb24gd2hhdCB0aGUgY29scyB2YXJpYWJsZSAodGhpcmQgcGFyYW1ldGVyKSBkb2VzLiBXZWxsLCBJZiB5b3VyIHN1Ygord2luZG93IGlzIHdpZGUgZW5vdWdoLCB5b3UgY2FuIG9wdCB0byBkaXNwbGF5IG1vcmUgdGhhbiBvbmUgaXRlbSBwZXIgcm93LiBUaGlzCitjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBjb2xzIHZhcmlhYmxlLiBUbyBtYWtlIHRoaW5ncyBzaW1wbGVyLCB0aGUgZm9sbG93aW5nCitleGFtcGxlIGRvZXNuJ3Qgc2hvdyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBpdGVtcy48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iTU1FTVVDTyIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAyMS4gIE1pbHQgQ29sdW1uYXIgTWVudXMgRXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO2N1cnNlcy5oJiM2MjsKKyNpbmNsdWRlICYjNjA7bWVudS5oJiM2MjsKIAogI2RlZmluZSBBUlJBWV9TSVpFKGEpIChzaXplb2YoYSkgLyBzaXplb2YoYVswXSkpCi0jZGVmaW5lIENUUkxEICAgNAorI2RlZmluZSBDVFJMRCAJNAogCiBjaGFyICpjaG9pY2VzW10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLCAiQ2hvaWNlIDIiLCAiQ2hvaWNlIDMiLCAiQ2hvaWNlIDQiLCAiQ2hvaWNlIDUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA2IiwgIkNob2ljZSA3IiwgIkNob2ljZSA4IiwgIkNob2ljZSA5IiwgIkNob2ljZSAxMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDExIiwgIkNob2ljZSAxMiIsICJDaG9pY2UgMTMiLCAiQ2hvaWNlIDE0IiwgIkNob2ljZSAxNSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDE2IiwgIkNob2ljZSAxNyIsICJDaG9pY2UgMTgiLCAiQ2hvaWNlIDE5IiwgIkNob2ljZSAyMCIsCisJCQkiQ2hvaWNlIDYiLCAiQ2hvaWNlIDciLCAiQ2hvaWNlIDgiLCAiQ2hvaWNlIDkiLCAiQ2hvaWNlIDEwIiwKKwkJCSJDaG9pY2UgMTEiLCAiQ2hvaWNlIDEyIiwgIkNob2ljZSAxMyIsICJDaG9pY2UgMTQiLCAiQ2hvaWNlIDE1IiwKKwkJCSJDaG9pY2UgMTYiLCAiQ2hvaWNlIDE3IiwgIkNob2ljZSAxOCIsICJDaG9pY2UgMTkiLCAiQ2hvaWNlIDIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJFeGl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopTlVMTCwKICAgICAgICAgICAgICAgICAgIH07CiAKIGludCBtYWluKCkKLXsgICAgICAgSVRFTSAqKm15X2l0ZW1zOwotICAgICAgICBpbnQgYzsgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBNRU5VICpteV9tZW51OworewlJVEVNICoqbXlfaXRlbXM7CisJaW50IGM7CQkJCQorCU1FTlUgKm15X21lbnU7CiAgICAgICAgIFdJTkRPVyAqbXlfbWVudV93aW47CiAgICAgICAgIGludCBuX2Nob2ljZXMsIGk7Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLwotICAgICAgICBpbml0c2NyKCk7Ci0gICAgICAgIHN0YXJ0X2NvbG9yKCk7CisJCisJLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8KKwlpbml0c2NyKCk7CisJc3RhcnRfY29sb3IoKTsKICAgICAgICAgY2JyZWFrKCk7CiAgICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKLSAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMiwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxBQ0spOworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCWluaXRfcGFpcigxLCBDT0xPUl9SRUQsIENPTE9SX0JMQUNLKTsKKwlpbml0X3BhaXIoMiwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIC8qIENyZWF0ZSBpdGVtcyAqLworCS8qIENyZWF0ZSBpdGVtcyAqLwogICAgICAgICBuX2Nob2ljZXMgPSBBUlJBWV9TSVpFKGNob2ljZXMpOwogICAgICAgICBteV9pdGVtcyA9IChJVEVNICoqKWNhbGxvYyhuX2Nob2ljZXMsIHNpemVvZihJVEVNICopKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgbl9jaG9pY2VzOyArK2kpCisgICAgICAgIGZvcihpID0gMDsgaSAmIzYwOyBuX2Nob2ljZXM7ICsraSkKICAgICAgICAgICAgICAgICBteV9pdGVtc1tpXSA9IG5ld19pdGVtKGNob2ljZXNbaV0sIGNob2ljZXNbaV0pOwogCi0gICAgICAgIC8qIENyYXRlIG1lbnUgKi8KLSAgICAgICAgbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKKwkvKiBDcmF0ZSBtZW51ICovCisJbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKIAotICAgICAgICAvKiBTZXQgbWVudSBvcHRpb24gbm90IHRvIHNob3cgdGhlIGRlc2NyaXB0aW9uICovCi0gICAgICAgIG1lbnVfb3B0c19vZmYobXlfbWVudSwgT19TSE9XREVTQyk7CisJLyogU2V0IG1lbnUgb3B0aW9uIG5vdCB0byBzaG93IHRoZSBkZXNjcmlwdGlvbiAqLworCW1lbnVfb3B0c19vZmYobXlfbWVudSwgT19TSE9XREVTQyk7CiAKLSAgICAgICAgLyogQ3JlYXRlIHRoZSB3aW5kb3cgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZW51ICovCisJLyogQ3JlYXRlIHRoZSB3aW5kb3cgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZW51ICovCiAgICAgICAgIG15X21lbnVfd2luID0gbmV3d2luKDEwLCA3MCwgNCwgNCk7CiAgICAgICAgIGtleXBhZChteV9tZW51X3dpbiwgVFJVRSk7CiAgICAgIAotICAgICAgICAvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KKwkvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KICAgICAgICAgc2V0X21lbnVfd2luKG15X21lbnUsIG15X21lbnVfd2luKTsKICAgICAgICAgc2V0X21lbnVfc3ViKG15X21lbnUsIGRlcndpbihteV9tZW51X3dpbiwgNiwgNjgsIDMsIDEpKTsKLSAgICAgICAgc2V0X21lbnVfZm9ybWF0KG15X21lbnUsIDUsIDMpOwotICAgICAgICBzZXRfbWVudV9tYXJrKG15X21lbnUsICIgKiAiKTsKKwlzZXRfbWVudV9mb3JtYXQobXlfbWVudSwgNSwgMyk7CisJc2V0X21lbnVfbWFyayhteV9tZW51LCAiICogIik7CiAKLSAgICAgICAgLyogUHJpbnQgYSBib3JkZXIgYXJvdW5kIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpbnQgYSB0aXRsZSAqLworCS8qIFByaW50IGEgYm9yZGVyIGFyb3VuZCB0aGUgbWFpbiB3aW5kb3cgYW5kIHByaW50IGEgdGl0bGUgKi8KICAgICAgICAgYm94KG15X21lbnVfd2luLCAwLCAwKTsKLSAgICAgICAgCi0gICAgICAgIGF0dHJvbihDT0xPUl9QQUlSKDIpKTsKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAzLCAwLCAiVXNlIFBhZ2VVcCBhbmQgUGFnZURvd24gdG8gc2Nyb2xsIik7Ci0gICAgICAgIG12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVzZSBBcnJvdyBLZXlzIHRvIG5hdmlnYXRlIChGMSB0byBFeGl0KSIpOwotICAgICAgICBhdHRyb2ZmKENPTE9SX1BBSVIoMikpOwotICAgICAgICByZWZyZXNoKCk7CisJCisJYXR0cm9uKENPTE9SX1BBSVIoMikpOworCW12cHJpbnR3KExJTkVTIC0gMywgMCwgIlVzZSBQYWdlVXAgYW5kIFBhZ2VEb3duIHRvIHNjcm9sbCIpOworCW12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVzZSBBcnJvdyBLZXlzIHRvIG5hdmlnYXRlIChGMSB0byBFeGl0KSIpOworCWF0dHJvZmYoQ09MT1JfUEFJUigyKSk7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIC8qIFBvc3QgdGhlIG1lbnUgKi8KLSAgICAgICAgcG9zdF9tZW51KG15X21lbnUpOwotICAgICAgICB3cmVmcmVzaChteV9tZW51X3dpbik7Ci0gICAgICAgIAotICAgICAgICB3aGlsZSgoYyA9IHdnZXRjaChteV9tZW51X3dpbikpICE9IEtFWV9GKDEpKQotICAgICAgICB7ICAgICAgIHN3aXRjaChjKQotICAgICAgICAgICAgICAgIHsgICAgICAgY2FzZSBLRVlfRE9XTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX0RPV05fSVRFTSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBLRVlfVVA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9VUF9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9MRUZUOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfTEVGVF9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9SSUdIVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1JJR0hUX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX05QQUdFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfU0NSX0RQQUdFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9QUEFHRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1NDUl9VUEFHRSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKwkvKiBQb3N0IHRoZSBtZW51ICovCisJcG9zdF9tZW51KG15X21lbnUpOworCXdyZWZyZXNoKG15X21lbnVfd2luKTsKKwkKKwl3aGlsZSgoYyA9IHdnZXRjaChteV9tZW51X3dpbikpICE9IEtFWV9GKDEpKQorCXsgICAgICAgc3dpdGNoKGMpCisJICAgICAgICB7CWNhc2UgS0VZX0RPV046CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX0RPV05fSVRFTSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9VUDoKKwkJCQltZW51X2RyaXZlcihteV9tZW51LCBSRVFfVVBfSVRFTSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9MRUZUOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9MRUZUX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfUklHSFQ6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1JJR0hUX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfTlBBR0U6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1NDUl9EUEFHRSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9QUEFHRToKKwkJCQltZW51X2RyaXZlcihteV9tZW51LCBSRVFfU0NSX1VQQUdFKTsKKwkJCQlicmVhazsKKwkJfQogICAgICAgICAgICAgICAgIHdyZWZyZXNoKG15X21lbnVfd2luKTsKLSAgICAgICAgfSAgICAgICAKKwl9CQogCi0gICAgICAgIC8qIFVucG9zdCBhbmQgZnJlZSBhbGwgdGhlIG1lbW9yeSB0YWtlbiB1cCAqLworCS8qIFVucG9zdCBhbmQgZnJlZSBhbGwgdGhlIG1lbW9yeSB0YWtlbiB1cCAqLwogICAgICAgICB1bnBvc3RfbWVudShteV9tZW51KTsKICAgICAgICAgZnJlZV9tZW51KG15X21lbnUpOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuX2Nob2ljZXM7ICsraSkKKyAgICAgICAgZm9yKGkgPSAwOyBpICYjNjA7IG5fY2hvaWNlczsgKytpKQogICAgICAgICAgICAgICAgIGZyZWVfaXRlbShteV9pdGVtc1tpXSk7Ci0gICAgICAgIGVuZHdpbigpOwotfTwvc3Bhbj48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxwPldhdGNoIHRoZSBmdW5jdGlvbiBjYWxsIHRvIHNldF9tZW51X2Zvcm1hdCgpLiBJdCBzcGVjaWZpZXMgdGhlCi1udW1iZXIgb2YgY29sdW1ucyB0byBiZSAzLCB0aHVzIGRpc3BsYXlpbmcgMyBpdGVtcyBwZXIgcm93LiBXZSBoYXZlCi1hbHNvIHN3aXRjaGVkIG9mZiB0aGUgc2hvd2luZyBkZXNjcmlwdGlvbnMgd2l0aCB0aGUgZnVuY3Rpb24KLW1lbnVfb3B0c19vZmYoKS4gVGhlcmUgYXJlIGNvdXBsZSBvZiBmdW5jdGlvbnMgc2V0X21lbnVfb3B0cygpLAotbWVudV9vcHRzX29uKCkgYW5kIG1lbnVfb3B0cygpIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgbWVudQotb3B0aW9ucy4gVGhlIGZvbGxvd2luZyBtZW51IG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZC48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+ICAgICAgIE9fT05FVkFMVUUKKwllbmR3aW4oKTsKK308L1NQQU4KKz48L1BSRQorPjwvRElWCis+PFAKKz5XYXRjaCB0aGUgZnVuY3Rpb24gY2FsbCB0byBzZXRfbWVudV9mb3JtYXQoKS4gSXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucwordG8gYmUgMywgdGh1cyBkaXNwbGF5aW5nIDMgaXRlbXMgcGVyIHJvdy4gV2UgaGF2ZSBhbHNvIHN3aXRjaGVkIG9mZiB0aGUgc2hvd2luZworZGVzY3JpcHRpb25zIHdpdGggdGhlIGZ1bmN0aW9uIG1lbnVfb3B0c19vZmYoKS4gVGhlcmUgYXJlIGNvdXBsZSBvZiBmdW5jdGlvbnMKK3NldF9tZW51X29wdHMoKSwgIG1lbnVfb3B0c19vbigpIGFuZCBtZW51X29wdHMoKSB3aGljaCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlCittZW51IG9wdGlvbnMuIFRoZSBmb2xsb3dpbmcgbWVudSBvcHRpb25zIGNhbiBiZSBzcGVjaWZpZWQuPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiAgICAgICBPX09ORVZBTFVFCiAgICAgICAgICAgICBPbmx5IG9uZSBpdGVtIGNhbiBiZSBzZWxlY3RlZCBmb3IgdGhpcyBtZW51LgogCiAgICAgICAgT19TSE9XREVTQwpAQCAtNDMxMCw2MzMgKzU4OTgsNjg0IEBACiAKICAgICAgICBPX05PTkNZQ0xJQwogICAgICAgICAgICAgRG9uJ3QgICB3cmFwICAgYXJvdW5kICBuZXh0LWl0ZW0gIGFuZCAgcHJldmlvdXMtaXRlbSwKLSAgICAgICAgICAgIHJlcXVlc3RzIHRvIHRoZSBvdGhlciBlbmQgb2YgdGhlIG1lbnUuPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+QWxsIG9wdGlvbnMgYXJlIG9uIGJ5IGRlZmF1bHQuIFlvdSBjYW4gc3dpdGNoIHNwZWNpZmljCi1hdHRyaWJ1dGVzIG9uIG9yIG9mZiB3aXRoIG1lbnVfb3B0c19vbigpIGFuZCBtZW51X29wdHNfb2ZmKCkKLWZ1bmN0aW9ucy4gWW91IGNhbiBhbHNvIHVzZSBzZXRfbWVudV9vcHRzKCkgdG8gZGlyZWN0bHkgc3BlY2lmeSB0aGUKLW9wdGlvbnMuIFRoZSBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBhIE9SIGVkIHZhbHVlIG9mCi1zb21lIG9mIHRob3NlIGFib3ZlIGNvbnN0YW50cy4gVGhlIGZ1bmN0aW9uIG1lbnVfb3B0cygpIGNhbiBiZSB1c2VkCi10byBmaW5kIG91dCBhIG1lbnUncyBwcmVzZW50IG9wdGlvbnMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJNVUxUSVZBTFVFTUVOVVMiIGlkPQotIk1VTFRJVkFMVUVNRU5VUyI+MTcuNy4gTXVsdGkgVmFsdWVkIE1lbnVzPC9hPjwvaDM+Ci08cD5Zb3UgbWlnaHQgYmUgd29uZGVyaW5nIHdoYXQgaWYgeW91IHN3aXRjaCBvZmYgdGhlIG9wdGlvbgotT19PTkVWQUxVRS4gVGhlbiB0aGUgbWVudSBiZWNvbWVzIG11bHRpLXZhbHVlZC4gVGhhdCBtZWFucyB5b3UgY2FuCi1zZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtLiBUaGlzIGJyaW5ncyB1cyB0byB0aGUgcmVxdWVzdAotUkVRX1RPR0dMRV9JVEVNLiBMZXQncyBzZWUgaXQgaW4gYWN0aW9uLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9Ik1NRVRPIiBpZD0iTU1FVE8iPjwvYT4KLTxwPjxiPkV4YW1wbGUgMjIuIE11bHRpIFZhbHVlZCBNZW51cyBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O2N1cnNlcy5oJmd0OwotI2luY2x1ZGUgJmx0O21lbnUuaCZndDsKKyAgICAgICAgICAgIHJlcXVlc3RzIHRvIHRoZSBvdGhlciBlbmQgb2YgdGhlIG1lbnUuPC9QUkUKKz48UAorPkFsbCBvcHRpb25zIGFyZSBvbiBieSBkZWZhdWx0LiBZb3UgY2FuIHN3aXRjaCBzcGVjaWZpYyBhdHRyaWJ1dGVzIG9uIG9yIG9mZiB3aXRoCittZW51X29wdHNfb24oKSBhbmQgbWVudV9vcHRzX29mZigpIGZ1bmN0aW9ucy4gWW91IGNhbiBhbHNvIHVzZSBzZXRfbWVudV9vcHRzKCkKK3RvIGRpcmVjdGx5IHNwZWNpZnkgdGhlIG9wdGlvbnMuIFRoZSBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBhIE9SIGVkCit2YWx1ZSBvZiBzb21lIG9mIHRob3NlIGFib3ZlIGNvbnN0YW50cy4gVGhlIGZ1bmN0aW9uIG1lbnVfb3B0cygpIGNhbiBiZSB1c2VkIHRvCitmaW5kIG91dCBhIG1lbnUncyBwcmVzZW50IG9wdGlvbnMuIDwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTVVMVElWQUxVRU1FTlVTIgorPjE3LjcuIE11bHRpIFZhbHVlZCBNZW51czwvQQorPjwvSDMKKz48UAorPllvdSBtaWdodCBiZSB3b25kZXJpbmcgd2hhdCBpZiB5b3Ugc3dpdGNoIG9mZiB0aGUgb3B0aW9uIE9fT05FVkFMVUUuIFRoZW4gdGhlCittZW51IGJlY29tZXMgbXVsdGktdmFsdWVkLiBUaGF0IG1lYW5zIHlvdSBjYW4gc2VsZWN0IG1vcmUgdGhhbiBvbmUgaXRlbS4gVGhpcworYnJpbmdzIHVzIHRvIHRoZSByZXF1ZXN0IFJFUV9UT0dHTEVfSVRFTS4gTGV0J3Mgc2VlIGl0IGluIGFjdGlvbi48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iTU1FVE8iCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMjIuICBNdWx0aSBWYWx1ZWQgTWVudXMgZXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO2N1cnNlcy5oJiM2MjsKKyNpbmNsdWRlICYjNjA7bWVudS5oJiM2MjsKIAogI2RlZmluZSBBUlJBWV9TSVpFKGEpIChzaXplb2YoYSkgLyBzaXplb2YoYVswXSkpCi0jZGVmaW5lIENUUkxEICAgNAorI2RlZmluZSBDVFJMRCAJNAogCiBjaGFyICpjaG9pY2VzW10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDciLAorCQkJIkNob2ljZSA1IiwKKwkJCSJDaG9pY2UgNiIsCisJCQkiQ2hvaWNlIDciLAogICAgICAgICAgICAgICAgICAgICAgICAgIkV4aXQiLAogICAgICAgICAgICAgICAgICAgfTsKIAogaW50IG1haW4oKQoteyAgICAgICBJVEVNICoqbXlfaXRlbXM7Ci0gICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIE1FTlUgKm15X21lbnU7Cit7CUlURU0gKipteV9pdGVtczsKKwlpbnQgYzsJCQkJCisJTUVOVSAqbXlfbWVudTsKICAgICAgICAgaW50IG5fY2hvaWNlcywgaTsKLSAgICAgICAgSVRFTSAqY3VyX2l0ZW07Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLyAKLSAgICAgICAgaW5pdHNjcigpOworCUlURU0gKmN1cl9pdGVtOworCQorCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCQorCWluaXRzY3IoKTsKICAgICAgICAgY2JyZWFrKCk7CiAgICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKIAotICAgICAgICAvKiBJbml0aWFsaXplIGl0ZW1zICovCisJLyogSW5pdGlhbGl6ZSBpdGVtcyAqLwogICAgICAgICBuX2Nob2ljZXMgPSBBUlJBWV9TSVpFKGNob2ljZXMpOwogICAgICAgICBteV9pdGVtcyA9IChJVEVNICoqKWNhbGxvYyhuX2Nob2ljZXMgKyAxLCBzaXplb2YoSVRFTSAqKSk7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQorICAgICAgICBmb3IoaSA9IDA7IGkgJiM2MDsgbl9jaG9pY2VzOyArK2kpCiAgICAgICAgICAgICAgICAgbXlfaXRlbXNbaV0gPSBuZXdfaXRlbShjaG9pY2VzW2ldLCBjaG9pY2VzW2ldKTsKLSAgICAgICAgbXlfaXRlbXNbbl9jaG9pY2VzXSA9IChJVEVNICopTlVMTDsKKwlteV9pdGVtc1tuX2Nob2ljZXNdID0gKElURU0gKilOVUxMOwogCi0gICAgICAgIG15X21lbnUgPSBuZXdfbWVudSgoSVRFTSAqKilteV9pdGVtcyk7CisJbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKIAotICAgICAgICAvKiBNYWtlIHRoZSBtZW51IG11bHRpIHZhbHVlZCAqLwotICAgICAgICBtZW51X29wdHNfb2ZmKG15X21lbnUsIE9fT05FVkFMVUUpOworCS8qIE1ha2UgdGhlIG1lbnUgbXVsdGkgdmFsdWVkICovCisJbWVudV9vcHRzX29mZihteV9tZW51LCBPX09ORVZBTFVFKTsKIAotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDMsIDAsICJVc2UgJmx0O1NQQUNFJmd0OyB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbS4iKTsKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAyLCAwLCAiJmx0O0VOVEVSJmd0OyB0byBzZWUgcHJlc2VudGx5IHNlbGVjdGVkIGl0ZW1zKEYxIHRvIEV4aXQpIik7Ci0gICAgICAgIHBvc3RfbWVudShteV9tZW51KTsKLSAgICAgICAgcmVmcmVzaCgpOworCW12cHJpbnR3KExJTkVTIC0gMywgMCwgIlVzZSAmIzYwO1NQQUNFJiM2MjsgdG8gc2VsZWN0IG9yIHVuc2VsZWN0IGFuIGl0ZW0uIik7CisJbXZwcmludHcoTElORVMgLSAyLCAwLCAiJiM2MDtFTlRFUiYjNjI7IHRvIHNlZSBwcmVzZW50bHkgc2VsZWN0ZWQgaXRlbXMoRjEgdG8gRXhpdCkiKTsKKwlwb3N0X21lbnUobXlfbWVudSk7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIHdoaWxlKChjID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCi0gICAgICAgIHsgICAgICAgc3dpdGNoKGMpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfRE9XTl9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyAnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfVE9HR0xFX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6ICAgICAgICAvKiBFbnRlciAqLwotICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICBjaGFyIHRlbXBbMjAwXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFTSAqKml0ZW1zOworCXdoaWxlKChjID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCisJeyAgICAgICBzd2l0Y2goYykKKwkgICAgICAgIHsJY2FzZSBLRVlfRE9XTjoKKwkJCQltZW51X2RyaXZlcihteV9tZW51LCBSRVFfRE9XTl9JVEVNKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1VQOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9VUF9JVEVNKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJyAnOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9UT0dHTEVfSVRFTSk7CisJCQkJYnJlYWs7CisJCQljYXNlIDEwOgkvKiBFbnRlciAqLworCQkJewljaGFyIHRlbXBbMjAwXTsKKwkJCQlJVEVNICoqaXRlbXM7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBtZW51X2l0ZW1zKG15X21lbnUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wWzBdID0gJ1wwJzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgaXRlbV9jb3VudChteV9tZW51KTsgKytpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW1fdmFsdWUoaXRlbXNbaV0pID09IFRSVUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICBzdHJjYXQodGVtcCwgaXRlbV9uYW1lKGl0ZW1zW2ldKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXQodGVtcCwgIiAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoMjAsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJ0b2VvbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdnByaW50dygyMCwgMCwgdGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgICAKKwkJCQlpdGVtcyA9IG1lbnVfaXRlbXMobXlfbWVudSk7CisJCQkJdGVtcFswXSA9ICdcMCc7CisJCQkJZm9yKGkgPSAwOyBpICYjNjA7IGl0ZW1fY291bnQobXlfbWVudSk7ICsraSkKKwkJCQkJaWYoaXRlbV92YWx1ZShpdGVtc1tpXSkgPT0gVFJVRSkKKwkJCQkJewlzdHJjYXQodGVtcCwgaXRlbV9uYW1lKGl0ZW1zW2ldKSk7CisJCQkJCQlzdHJjYXQodGVtcCwgIiAiKTsKKwkJCQkJfQorCQkJCW1vdmUoMjAsIDApOworCQkJCWNscnRvZW9sKCk7CisJCQkJbXZwcmludHcoMjAsIDAsIHRlbXApOworCQkJCXJlZnJlc2goKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQkKIAotICAgICAgICBmcmVlX2l0ZW0obXlfaXRlbXNbMF0pOworCWZyZWVfaXRlbShteV9pdGVtc1swXSk7CiAgICAgICAgIGZyZWVfaXRlbShteV9pdGVtc1sxXSk7Ci0gICAgICAgIGZyZWVfbWVudShteV9tZW51KTsKLSAgICAgICAgZW5kd2luKCk7CisJZnJlZV9tZW51KG15X21lbnUpOworCWVuZHdpbigpOwogfQotICAgICAgICA8L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08cD5XaGV3LCBBIGxvdCBvZiBuZXcgZnVuY3Rpb25zLiBMZXQncyB0YWtlIHRoZW0gb25lIGFmdGVyIGFub3RoZXIuCi1GaXJzdGx5LCB0aGUgUkVRX1RPR0dMRV9JVEVNLiBJbiBhIG11bHRpLXZhbHVlZCBtZW51LCB0aGUgdXNlcgotc2hvdWxkIGJlIGFsbG93ZWQgdG8gc2VsZWN0IG9yIHVuIHNlbGVjdCBtb3JlIHRoYW4gb25lIGl0ZW0uIFRoZQotcmVxdWVzdCBSRVFfVE9HR0xFX0lURU0gdG9nZ2xlcyB0aGUgcHJlc2VudCBzZWxlY3Rpb24uIEluIHRoaXMgY2FzZQotd2hlbiBzcGFjZSBpcyBwcmVzc2VkIFJFUV9UT0dHTEVfSVRFTSByZXF1ZXN0IGlzIHNlbnQgdG8KLW1lbnVfZHJpdmVyIHRvIGFjaGlldmUgdGhlIHJlc3VsdC48L3A+Ci08cD5Ob3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzICZsdDtFTlRFUiZndDsgd2Ugc2hvdyB0aGUgaXRlbXMgaGUKLXByZXNlbnRseSBzZWxlY3RlZC4gRmlyc3Qgd2UgZmluZCBvdXQgdGhlIGl0ZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGUKLW1lbnUgdXNpbmcgdGhlIGZ1bmN0aW9uIG1lbnVfaXRlbXMoKS4gVGhlbiB3ZSBsb29wIHRocm91Z2ggdGhlCi1pdGVtcyB0byBmaW5kIG91dCBpZiB0aGUgaXRlbSBpcyBzZWxlY3RlZCBvciBub3QuIFRoZSBmdW5jdGlvbgotaXRlbV92YWx1ZSgpIHJldHVybnMgVFJVRSBpZiBhbiBpdGVtIGlzIHNlbGVjdGVkLiBUaGUgZnVuY3Rpb24KLWl0ZW1fY291bnQoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIG1lbnUuIFRoZSBpdGVtIG5hbWUKLWNhbiBiZSBmb3VuZCB3aXRoIGl0ZW1fbmFtZSgpLiBZb3UgY2FuIGFsc28gZmluZCB0aGUgZGVzY3JpcHRpb24KLWFzc29jaWF0ZWQgd2l0aCBhbiBpdGVtIHVzaW5nIGl0ZW1fZGVzY3JpcHRpb24oKS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1FTlVPUFQiIGlkPSJNRU5VT1BUIj4xNy44LiBNZW51Ci1PcHRpb25zPC9hPjwvaDM+Ci08cD5XZWxsLCBieSB0aGlzIHRpbWUgeW91IG11c3QgYmUgaXRjaGluZyBmb3Igc29tZSBkaWZmZXJlbmNlIGluCi15b3VyIG1lbnUsIHdpdGggbG90cyBvZiBmdW5jdGlvbmFsaXR5LiBJIGtub3cuIFlvdSB3YW50IENvbG9ycyAhISEuCi1Zb3Ugd2FudCB0byBjcmVhdGUgbmljZSBtZW51cyBzaW1pbGFyIHRvIHRob3NlIHRleHQgbW9kZSA8YSBocmVmPQotImh0dHA6Ly93d3cuamVyc2V5Lm5ldC9+ZGViaW5qb2UvZ2FtZXMvIiB0YXJnZXQ9Il90b3AiPmRvcwotZ2FtZXM8L2E+LiBUaGUgZnVuY3Rpb25zIHNldF9tZW51X2ZvcmUoKSBhbmQgc2V0X21lbnVfYmFjaygpIGNhbiBiZQotdXNlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhbmQgdW5zZWxlY3RlZAotaXRlbS4gVGhlIG5hbWVzIGFyZSBtaXNsZWFkaW5nLiBUaGV5IGRvbid0IGNoYW5nZSBtZW51J3MgZm9yZWdyb3VuZAotb3IgYmFja2dyb3VuZCB3aGljaCB3b3VsZCBoYXZlIGJlZW4gdXNlbGVzcy48L3A+Ci08cD5UaGUgZnVuY3Rpb24gc2V0X21lbnVfZ3JleSgpIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGlzcGxheQotYXR0cmlidXRlIGZvciB0aGUgbm9uLXNlbGVjdGFibGUgaXRlbXMgaW4gdGhlIG1lbnUuIFRoaXMgYnJpbmdzIHVzCi10byB0aGUgaW50ZXJlc3Rpbmcgb3B0aW9uIGZvciBhbiBpdGVtIHRoZSBvbmUgYW5kIG9ubHkKLU9fU0VMRUNUQUJMRS4gV2UgY2FuIHR1cm4gaXQgb2ZmIGJ5IHRoZSBmdW5jdGlvbiBpdGVtX29wdHNfb2ZmKCkKLWFuZCBhZnRlciB0aGF0IHRoYXQgaXRlbSBpcyBub3Qgc2VsZWN0YWJsZS4gSXQncyBsaWtlIGEgZ3JheWVkIGl0ZW0KLWluIHRob3NlIGZhbmN5IHdpbmRvd3MgbWVudXMuIExldCdzIHB1dCB0aGVzZSBjb25jZXB0cyBpbiBwcmFjdGljZQotd2l0aCB0aGlzIGV4YW1wbGU8L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJNTUVBVCIgaWQ9Ik1NRUFUIj48L2E+Ci08cD48Yj5FeGFtcGxlIDIzLiBNZW51IE9wdGlvbnMgZXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDttZW51LmgmZ3Q7CisJPC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+V2hldywgQSBsb3Qgb2YgbmV3IGZ1bmN0aW9ucy4gTGV0J3MgdGFrZSB0aGVtIG9uZSBhZnRlciBhbm90aGVyLiBGaXJzdGx5LCB0aGUKK1JFUV9UT0dHTEVfSVRFTS4gIEluIGEgbXVsdGktdmFsdWVkIG1lbnUsIHRoZSB1c2VyIHNob3VsZCBiZSBhbGxvd2VkIHRvIHNlbGVjdAorb3IgdW4gc2VsZWN0IG1vcmUgdGhhbiBvbmUgaXRlbS4gVGhlIHJlcXVlc3QgUkVRX1RPR0dMRV9JVEVNIHRvZ2dsZXMgdGhlIHByZXNlbnQKK3NlbGVjdGlvbi4gSW4gdGhpcyBjYXNlIHdoZW4gc3BhY2UgaXMgcHJlc3NlZCBSRVFfVE9HR0xFX0lURU0gcmVxdWVzdCBpcyBzZW50IHRvCittZW51X2RyaXZlciB0byBhY2hpZXZlIHRoZSByZXN1bHQuPC9QCis+PFAKKz5Ob3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzICZsdDtFTlRFUiZndDsgd2Ugc2hvdyB0aGUgaXRlbXMgaGUgcHJlc2VudGx5IHNlbGVjdGVkLgorRmlyc3Qgd2UgZmluZCBvdXQgdGhlIGl0ZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVudSB1c2luZyB0aGUgZnVuY3Rpb24KK21lbnVfaXRlbXMoKS4gVGhlbiB3ZSBsb29wIHRocm91Z2ggdGhlIGl0ZW1zIHRvIGZpbmQgb3V0IGlmIHRoZSBpdGVtIGlzIHNlbGVjdGVkCitvciBub3QuIFRoZSBmdW5jdGlvbiBpdGVtX3ZhbHVlKCkgcmV0dXJucyBUUlVFIGlmIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuIFRoZQorZnVuY3Rpb24gaXRlbV9jb3VudCgpIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgbWVudS4gVGhlIGl0ZW0gbmFtZSBjYW4KK2JlIGZvdW5kIHdpdGggaXRlbV9uYW1lKCkuIFlvdSBjYW4gYWxzbyBmaW5kIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGggYW4KK2l0ZW0gdXNpbmcgaXRlbV9kZXNjcmlwdGlvbigpLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTUVOVU9QVCIKKz4xNy44LiBNZW51IE9wdGlvbnM8L0EKKz48L0gzCis+PFAKKz5XZWxsLCBieSB0aGlzIHRpbWUgeW91IG11c3QgYmUgaXRjaGluZyBmb3Igc29tZSBkaWZmZXJlbmNlIGluIHlvdXIgbWVudSwgd2l0aAorbG90cyBvZiBmdW5jdGlvbmFsaXR5LiBJIGtub3cuIFlvdSB3YW50IENvbG9ycyAhISEuIFlvdSB3YW50IHRvIGNyZWF0ZSBuaWNlCittZW51cyBzaW1pbGFyIHRvIHRob3NlIHRleHQgbW9kZSA8QQorSFJFRj0iaHR0cDovL3d3dy5qZXJzZXkubmV0L35kZWJpbmpvZS9nYW1lcy8iCitUQVJHRVQ9Il90b3AiCis+ZG9zIGdhbWVzPC9BCis+LiBUaGUgZnVuY3Rpb25zCitzZXRfbWVudV9mb3JlKCkgYW5kIHNldF9tZW51X2JhY2soKSBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUKK3NlbGVjdGVkIGl0ZW0gYW5kIHVuc2VsZWN0ZWQgaXRlbS4gVGhlIG5hbWVzIGFyZSBtaXNsZWFkaW5nLiBUaGV5IGRvbid0IGNoYW5nZQorbWVudSdzIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCB3aGljaCB3b3VsZCBoYXZlIGJlZW4gdXNlbGVzcy4gPC9QCis+PFAKKz5UaGUgZnVuY3Rpb24gc2V0X21lbnVfZ3JleSgpIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGlzcGxheSBhdHRyaWJ1dGUgZm9yIHRoZQorbm9uLXNlbGVjdGFibGUgaXRlbXMgaW4gdGhlIG1lbnUuIFRoaXMgYnJpbmdzIHVzIHRvIHRoZSBpbnRlcmVzdGluZyBvcHRpb24gZm9yCithbiBpdGVtIHRoZSBvbmUgYW5kIG9ubHkgT19TRUxFQ1RBQkxFLiBXZSBjYW4gdHVybiBpdCBvZmYgYnkgdGhlIGZ1bmN0aW9uCitpdGVtX29wdHNfb2ZmKCkgYW5kIGFmdGVyIHRoYXQgdGhhdCBpdGVtIGlzIG5vdCBzZWxlY3RhYmxlLiBJdCdzIGxpa2UgYSBncmF5ZWQKK2l0ZW0gaW4gdGhvc2UgZmFuY3kgd2luZG93cyBtZW51cy4gTGV0J3MgcHV0IHRoZXNlIGNvbmNlcHRzIGluIHByYWN0aWNlIHdpdGgKK3RoaXMgZXhhbXBsZTwvUAorPjxESVYKK0NMQVNTPSJFWEFNUExFIgorPjxBCitOQU1FPSJNTUVBVCIKKz48L0EKKz48UAorPjxCCis+RXhhbXBsZSAyMy4gIE1lbnUgT3B0aW9ucyBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7bWVudS5oJiM2MjsKIAogI2RlZmluZSBBUlJBWV9TSVpFKGEpIChzaXplb2YoYSkgLyBzaXplb2YoYVswXSkpCi0jZGVmaW5lIENUUkxEICAgNAorI2RlZmluZSBDVFJMRCAJNAogCiBjaGFyICpjaG9pY2VzW10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDciLAorCQkJIkNob2ljZSA1IiwKKwkJCSJDaG9pY2UgNiIsCisJCQkiQ2hvaWNlIDciLAogICAgICAgICAgICAgICAgICAgICAgICAgIkV4aXQiLAogICAgICAgICAgICAgICAgICAgfTsKIAogaW50IG1haW4oKQoteyAgICAgICBJVEVNICoqbXlfaXRlbXM7Ci0gICAgICAgIGludCBjOyAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIE1FTlUgKm15X21lbnU7Cit7CUlURU0gKipteV9pdGVtczsKKwlpbnQgYzsJCQkJCisJTUVOVSAqbXlfbWVudTsKICAgICAgICAgaW50IG5fY2hvaWNlcywgaTsKLSAgICAgICAgSVRFTSAqY3VyX2l0ZW07Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLyAKLSAgICAgICAgaW5pdHNjcigpOwotICAgICAgICBzdGFydF9jb2xvcigpOworCUlURU0gKmN1cl9pdGVtOworCQorCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCQorCWluaXRzY3IoKTsKKwlzdGFydF9jb2xvcigpOwogICAgICAgICBjYnJlYWsoKTsKICAgICAgICAgbm9lY2hvKCk7Ci0gICAgICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOwotICAgICAgICBpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7Ci0gICAgICAgIGluaXRfcGFpcigyLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMywgQ09MT1JfTUFHRU5UQSwgQ09MT1JfQkxBQ0spOworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCWluaXRfcGFpcigxLCBDT0xPUl9SRUQsIENPTE9SX0JMQUNLKTsKKwlpbml0X3BhaXIoMiwgQ09MT1JfR1JFRU4sIENPTE9SX0JMQUNLKTsKKwlpbml0X3BhaXIoMywgQ09MT1JfTUFHRU5UQSwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgaXRlbXMgKi8KKwkvKiBJbml0aWFsaXplIGl0ZW1zICovCiAgICAgICAgIG5fY2hvaWNlcyA9IEFSUkFZX1NJWkUoY2hvaWNlcyk7CiAgICAgICAgIG15X2l0ZW1zID0gKElURU0gKiopY2FsbG9jKG5fY2hvaWNlcyArIDEsIHNpemVvZihJVEVNICopKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpICZsdDsgbl9jaG9pY2VzOyArK2kpCisgICAgICAgIGZvcihpID0gMDsgaSAmIzYwOyBuX2Nob2ljZXM7ICsraSkKICAgICAgICAgICAgICAgICBteV9pdGVtc1tpXSA9IG5ld19pdGVtKGNob2ljZXNbaV0sIGNob2ljZXNbaV0pOwotICAgICAgICBteV9pdGVtc1tuX2Nob2ljZXNdID0gKElURU0gKilOVUxMOwotICAgICAgICBpdGVtX29wdHNfb2ZmKG15X2l0ZW1zWzNdLCBPX1NFTEVDVEFCTEUpOwotICAgICAgICBpdGVtX29wdHNfb2ZmKG15X2l0ZW1zWzZdLCBPX1NFTEVDVEFCTEUpOworCW15X2l0ZW1zW25fY2hvaWNlc10gPSAoSVRFTSAqKU5VTEw7CisJaXRlbV9vcHRzX29mZihteV9pdGVtc1szXSwgT19TRUxFQ1RBQkxFKTsKKwlpdGVtX29wdHNfb2ZmKG15X2l0ZW1zWzZdLCBPX1NFTEVDVEFCTEUpOwogCi0gICAgICAgIC8qIENyZWF0ZSBtZW51ICovCi0gICAgICAgIG15X21lbnUgPSBuZXdfbWVudSgoSVRFTSAqKilteV9pdGVtcyk7CisJLyogQ3JlYXRlIG1lbnUgKi8KKwlteV9tZW51ID0gbmV3X21lbnUoKElURU0gKiopbXlfaXRlbXMpOwogCi0gICAgICAgIC8qIFNldCBmb3JlIGdyb3VuZCBhbmQgYmFjayBncm91bmQgb2YgdGhlIG1lbnUgKi8KLSAgICAgICAgc2V0X21lbnVfZm9yZShteV9tZW51LCBDT0xPUl9QQUlSKDEpIHwgQV9SRVZFUlNFKTsKLSAgICAgICAgc2V0X21lbnVfYmFjayhteV9tZW51LCBDT0xPUl9QQUlSKDIpKTsKLSAgICAgICAgc2V0X21lbnVfZ3JleShteV9tZW51LCBDT0xPUl9QQUlSKDMpKTsKKwkvKiBTZXQgZm9yZSBncm91bmQgYW5kIGJhY2sgZ3JvdW5kIG9mIHRoZSBtZW51ICovCisJc2V0X21lbnVfZm9yZShteV9tZW51LCBDT0xPUl9QQUlSKDEpIHwgQV9SRVZFUlNFKTsKKwlzZXRfbWVudV9iYWNrKG15X21lbnUsIENPTE9SX1BBSVIoMikpOworCXNldF9tZW51X2dyZXkobXlfbWVudSwgQ09MT1JfUEFJUigzKSk7CiAKLSAgICAgICAgLyogUG9zdCB0aGUgbWVudSAqLwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDMsIDAsICJQcmVzcyAmbHQ7RU5URVImZ3Q7IHRvIHNlZSB0aGUgb3B0aW9uIHNlbGVjdGVkIik7Ci0gICAgICAgIG12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVwIGFuZCBEb3duIGFycm93IGtleXMgdG8gbmF2aWFnZSAoRjEgdG8gRXhpdCkiKTsKLSAgICAgICAgcG9zdF9tZW51KG15X21lbnUpOwotICAgICAgICByZWZyZXNoKCk7CisJLyogUG9zdCB0aGUgbWVudSAqLworCW12cHJpbnR3KExJTkVTIC0gMywgMCwgIlByZXNzICYjNjA7RU5URVImIzYyOyB0byBzZWUgdGhlIG9wdGlvbiBzZWxlY3RlZCIpOworCW12cHJpbnR3KExJTkVTIC0gMiwgMCwgIlVwIGFuZCBEb3duIGFycm93IGtleXMgdG8gbmF2aWFnZSAoRjEgdG8gRXhpdCkiKTsKKwlwb3N0X21lbnUobXlfbWVudSk7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIHdoaWxlKChjID0gZ2V0Y2goKSkgIT0gS0VZX0YoMSkpCi0gICAgICAgIHsgICAgICAgc3dpdGNoKGMpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfRE9XTl9JVEVNKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6IC8qIEVudGVyICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoMjAsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJ0b2VvbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdnByaW50dygyMCwgMCwgIkl0ZW0gc2VsZWN0ZWQgaXMgOiAlcyIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9uYW1lKGN1cnJlbnRfaXRlbShteV9tZW51KSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NfbWVudV9jdXJzb3IobXlfbWVudSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgICAKLSAgICAgICAgdW5wb3N0X21lbnUobXlfbWVudSk7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQotICAgICAgICAgICAgICAgIGZyZWVfaXRlbShteV9pdGVtc1tpXSk7Ci0gICAgICAgIGZyZWVfbWVudShteV9tZW51KTsKLSAgICAgICAgZW5kd2luKCk7CisJd2hpbGUoKGMgPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKKwl7ICAgICAgIHN3aXRjaChjKQorCSAgICAgICAgewljYXNlIEtFWV9ET1dOOgorCQkJCW1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX1VQX0lURU0pOworCQkJCWJyZWFrOworCQkJY2FzZSAxMDogLyogRW50ZXIgKi8KKwkJCQltb3ZlKDIwLCAwKTsKKwkJCQljbHJ0b2VvbCgpOworCQkJCW12cHJpbnR3KDIwLCAwLCAiSXRlbSBzZWxlY3RlZCBpcyA6ICVzIiwgCisJCQkJCQlpdGVtX25hbWUoY3VycmVudF9pdGVtKG15X21lbnUpKSk7CisJCQkJcG9zX21lbnVfY3Vyc29yKG15X21lbnUpOworCQkJCWJyZWFrOworCQl9CisJfQkKKwl1bnBvc3RfbWVudShteV9tZW51KTsKKwlmb3IoaSA9IDA7IGkgJiM2MDsgbl9jaG9pY2VzOyArK2kpCisJCWZyZWVfaXRlbShteV9pdGVtc1tpXSk7CisJZnJlZV9tZW51KG15X21lbnUpOworCWVuZHdpbigpOwogfQotICAgICAgICA8L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9Ik1FTlVVU0VSUFRSIiBpZD0iTUVOVVVTRVJQVFIiPjE3LjkuIFRoZQotdXNlZnVsIFVzZXIgUG9pbnRlcjwvYT48L2gzPgotPHA+V2UgY2FuIGFzc29jaWF0ZSBhIHVzZXIgcG9pbnRlciB3aXRoIGVhY2ggaXRlbSBpbiB0aGUgbWVudS4gSXQKLXdvcmtzIHRoZSBzYW1lIHdheSBhcyB1c2VyIHBvaW50ZXIgaW4gcGFuZWxzLiBJdCdzIG5vdCB0b3VjaGVkIGJ5Ci1tZW51IHN5c3RlbS4gWW91IGNhbiBzdG9yZSBhbnkgdGhpbmcgeW91IGxpa2UgaW4gdGhhdC4gSSB1c3VhbGx5Ci11c2UgaXQgdG8gc3RvcmUgdGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIG1lbnUgb3B0aW9uIGlzCi1jaG9zZW4gKEl0J3Mgc2VsZWN0ZWQgYW5kIG1heSBiZSB0aGUgdXNlciBwcmVzc2VkCi0mbHQ7RU5URVImZ3Q7KTs8L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJNTUVVUyIgaWQ9Ik1NRVVTIj48L2E+Ci08cD48Yj5FeGFtcGxlIDI0LiBNZW51IFVzZXIgUG9pbnRlciBVc2FnZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtjdXJzZXMuaCZndDsKLSNpbmNsdWRlICZsdDttZW51LmgmZ3Q7CisJPC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTUVOVVVTRVJQVFIiCis+MTcuOS4gVGhlIHVzZWZ1bCBVc2VyIFBvaW50ZXI8L0EKKz48L0gzCis+PFAKKz5XZSBjYW4gYXNzb2NpYXRlIGEgdXNlciBwb2ludGVyIHdpdGggZWFjaCBpdGVtIGluIHRoZSBtZW51LiBJdCB3b3JrcyB0aGUgc2FtZQord2F5IGFzIHVzZXIgcG9pbnRlciBpbiBwYW5lbHMuIEl0J3Mgbm90IHRvdWNoZWQgYnkgbWVudSBzeXN0ZW0uIFlvdSBjYW4gc3RvcmUKK2FueSB0aGluZyB5b3UgbGlrZSBpbiB0aGF0LiBJIHVzdWFsbHkgdXNlIGl0IHRvIHN0b3JlIHRoZSBmdW5jdGlvbiB0byBiZQorZXhlY3V0ZWQgd2hlbiB0aGUgbWVudSBvcHRpb24gaXMgY2hvc2VuIChJdCdzIHNlbGVjdGVkIGFuZCBtYXkgYmUgdGhlIHVzZXIKK3ByZXNzZWQgJmx0O0VOVEVSJmd0Oyk7PC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9Ik1NRVVTIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDI0LiAgTWVudSBVc2VyIFBvaW50ZXIgVXNhZ2UgPC9CCis+PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iSU5MSU5FTUVESUFPQkpFQ1QiCis+I2luY2x1ZGUgJiM2MDtjdXJzZXMuaCYjNjI7CisjaW5jbHVkZSAmIzYwO21lbnUuaCYjNjI7CiAKICNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pKQotI2RlZmluZSBDVFJMRCAgIDQKKyNkZWZpbmUgQ1RSTEQgCTQKIAogY2hhciAqY2hvaWNlc1tdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSAxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaG9pY2UgNSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2hvaWNlIDYiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNob2ljZSA3IiwKKwkJCSJDaG9pY2UgNSIsCisJCQkiQ2hvaWNlIDYiLAorCQkJIkNob2ljZSA3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJFeGl0IiwKICAgICAgICAgICAgICAgICAgIH07CiB2b2lkIGZ1bmMoY2hhciAqbmFtZSk7CiAKIGludCBtYWluKCkKLXsgICAgICAgSVRFTSAqKm15X2l0ZW1zOwotICAgICAgICBpbnQgYzsgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBNRU5VICpteV9tZW51OworewlJVEVNICoqbXlfaXRlbXM7CisJaW50IGM7CQkJCQorCU1FTlUgKm15X21lbnU7CiAgICAgICAgIGludCBuX2Nob2ljZXMsIGk7Ci0gICAgICAgIElURU0gKmN1cl9pdGVtOwotICAgICAgICAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8gCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgc3RhcnRfY29sb3IoKTsKKwlJVEVNICpjdXJfaXRlbTsKKwkKKwkvKiBJbml0aWFsaXplIGN1cnNlcyAqLwkKKwlpbml0c2NyKCk7CisJc3RhcnRfY29sb3IoKTsKICAgICAgICAgY2JyZWFrKCk7CiAgICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKLSAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwotICAgICAgICBpbml0X3BhaXIoMiwgQ09MT1JfR1JFRU4sIENPTE9SX0JMQUNLKTsKLSAgICAgICAgaW5pdF9wYWlyKDMsIENPTE9SX01BR0VOVEEsIENPTE9SX0JMQUNLKTsKKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDIsIENPTE9SX0dSRUVOLCBDT0xPUl9CTEFDSyk7CisJaW5pdF9wYWlyKDMsIENPTE9SX01BR0VOVEEsIENPTE9SX0JMQUNLKTsKIAotICAgICAgICAvKiBJbml0aWFsaXplIGl0ZW1zICovCisJLyogSW5pdGlhbGl6ZSBpdGVtcyAqLwogICAgICAgICBuX2Nob2ljZXMgPSBBUlJBWV9TSVpFKGNob2ljZXMpOwogICAgICAgICBteV9pdGVtcyA9IChJVEVNICoqKWNhbGxvYyhuX2Nob2ljZXMgKyAxLCBzaXplb2YoSVRFTSAqKSk7Ci0gICAgICAgIGZvcihpID0gMDsgaSAmbHQ7IG5fY2hvaWNlczsgKytpKQotICAgICAgICB7ICAgICAgIG15X2l0ZW1zW2ldID0gbmV3X2l0ZW0oY2hvaWNlc1tpXSwgY2hvaWNlc1tpXSk7Ci0gICAgICAgICAgICAgICAgLyogU2V0IHRoZSB1c2VyIHBvaW50ZXIgKi8KLSAgICAgICAgICAgICAgICBzZXRfaXRlbV91c2VycHRyKG15X2l0ZW1zW2ldLCBmdW5jKTsKLSAgICAgICAgfQotICAgICAgICBteV9pdGVtc1tuX2Nob2ljZXNdID0gKElURU0gKilOVUxMOworICAgICAgICBmb3IoaSA9IDA7IGkgJiM2MDsgbl9jaG9pY2VzOyArK2kpCisJeyAgICAgICBteV9pdGVtc1tpXSA9IG5ld19pdGVtKGNob2ljZXNbaV0sIGNob2ljZXNbaV0pOworCQkvKiBTZXQgdGhlIHVzZXIgcG9pbnRlciAqLworCQlzZXRfaXRlbV91c2VycHRyKG15X2l0ZW1zW2ldLCBmdW5jKTsKKwl9CisJbXlfaXRlbXNbbl9jaG9pY2VzXSA9IChJVEVNICopTlVMTDsKIAotICAgICAgICAvKiBDcmVhdGUgbWVudSAqLwotICAgICAgICBteV9tZW51ID0gbmV3X21lbnUoKElURU0gKiopbXlfaXRlbXMpOworCS8qIENyZWF0ZSBtZW51ICovCisJbXlfbWVudSA9IG5ld19tZW51KChJVEVNICoqKW15X2l0ZW1zKTsKIAotICAgICAgICAvKiBQb3N0IHRoZSBtZW51ICovCi0gICAgICAgIG12cHJpbnR3KExJTkVTIC0gMywgMCwgIlByZXNzICZsdDtFTlRFUiZndDsgdG8gc2VlIHRoZSBvcHRpb24gc2VsZWN0ZWQiKTsKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAyLCAwLCAiVXAgYW5kIERvd24gYXJyb3cga2V5cyB0byBuYXZpYWdlIChGMSB0byBFeGl0KSIpOwotICAgICAgICBwb3N0X21lbnUobXlfbWVudSk7Ci0gICAgICAgIHJlZnJlc2goKTsKKwkvKiBQb3N0IHRoZSBtZW51ICovCisJbXZwcmludHcoTElORVMgLSAzLCAwLCAiUHJlc3MgJiM2MDtFTlRFUiYjNjI7IHRvIHNlZSB0aGUgb3B0aW9uIHNlbGVjdGVkIik7CisJbXZwcmludHcoTElORVMgLSAyLCAwLCAiVXAgYW5kIERvd24gYXJyb3cga2V5cyB0byBuYXZpYWdlIChGMSB0byBFeGl0KSIpOworCXBvc3RfbWVudShteV9tZW51KTsKKwlyZWZyZXNoKCk7CiAKLSAgICAgICAgd2hpbGUoKGMgPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goYykKLSAgICAgICAgICAgICAgICB7ICAgICAgIGNhc2UgS0VZX0RPV046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfZHJpdmVyKG15X21lbnUsIFJFUV9ET1dOX0lURU0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX1VQOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2RyaXZlcihteV9tZW51LCBSRVFfVVBfSVRFTSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDogLyogRW50ZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgSVRFTSAqY3VyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcCkoY2hhciAqKTsKKwl3aGlsZSgoYyA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsgICAgICAgc3dpdGNoKGMpCisJICAgICAgICB7CWNhc2UgS0VZX0RPV046CisJCQkJbWVudV9kcml2ZXIobXlfbWVudSwgUkVRX0RPV05fSVRFTSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEtFWV9VUDoKKwkJCQltZW51X2RyaXZlcihteV9tZW51LCBSRVFfVVBfSVRFTSk7CisJCQkJYnJlYWs7CisJCQljYXNlIDEwOiAvKiBFbnRlciAqLworCQkJewlJVEVNICpjdXI7CisJCQkJdm9pZCAoKnApKGNoYXIgKik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VycmVudF9pdGVtKG15X21lbnUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gaXRlbV91c2VycHRyKGN1cik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoKGNoYXIgKilpdGVtX25hbWUoY3VyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc19tZW51X2N1cnNvcihteV9tZW51KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0gICAgICAgCi0gICAgICAgIHVucG9zdF9tZW51KG15X21lbnUpOwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBuX2Nob2ljZXM7ICsraSkKLSAgICAgICAgICAgICAgICBmcmVlX2l0ZW0obXlfaXRlbXNbaV0pOwotICAgICAgICBmcmVlX21lbnUobXlfbWVudSk7Ci0gICAgICAgIGVuZHdpbigpOworCQkJCWN1ciA9IGN1cnJlbnRfaXRlbShteV9tZW51KTsKKwkJCQlwID0gaXRlbV91c2VycHRyKGN1cik7CisJCQkJcCgoY2hhciAqKWl0ZW1fbmFtZShjdXIpKTsKKwkJCQlwb3NfbWVudV9jdXJzb3IobXlfbWVudSk7CisJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJfQorCX0JCisJdW5wb3N0X21lbnUobXlfbWVudSk7CisJZm9yKGkgPSAwOyBpICYjNjA7IG5fY2hvaWNlczsgKytpKQorCQlmcmVlX2l0ZW0obXlfaXRlbXNbaV0pOworCWZyZWVfbWVudShteV9tZW51KTsKKwllbmR3aW4oKTsKIH0KIAogdm9pZCBmdW5jKGNoYXIgKm5hbWUpCi17ICAgICAgIG1vdmUoMjAsIDApOwotICAgICAgICBjbHJ0b2VvbCgpOwotICAgICAgICBtdnByaW50dygyMCwgMCwgIkl0ZW0gc2VsZWN0ZWQgaXMgOiAlcyIsIG5hbWUpOwotfSAgICAgICA8L3NwYW4+PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iRk9STVMiIGlkPSJGT1JNUyI+MTguIEZvcm1zCi1MaWJyYXJ5PC9hPjwvaDI+Ci08cD5XZWxsLiBJZiB5b3UgaGF2ZSBzZWVuIHRob3NlIGZvcm1zIG9uIHdlYiBwYWdlcyB3aGljaCB0YWtlIGlucHV0Ci1mcm9tIHVzZXJzIGFuZCBkbyB2YXJpb3VzIGtpbmRzIG9mIHRoaW5ncywgeW91IG1pZ2h0IGJlIHdvbmRlcmluZwotaG93IHdvdWxkIGFueSBvbmUgY3JlYXRlIHN1Y2ggZm9ybXMgaW4gdGV4dCBtb2RlIGRpc3BsYXkuIEl0J3MKLXF1aXRlIGRpZmZpY3VsdCB0byB3cml0ZSB0aG9zZSBuaWZ0eSBmb3JtcyBpbiBwbGFpbiBuY3Vyc2VzLiBGb3JtcwotbGlicmFyeSB0cmllcyB0byBwcm92aWRlIGEgYmFzaWMgZnJhbWUgd29yayB0byBidWlsZCBhbmQgbWFpbnRhaW4KLWZvcm1zIHdpdGggZWFzZS4gSXQgaGFzIGxvdCBvZiBmZWF0dXJlcyhmdW5jdGlvbnMpIHdoaWNoIG1hbmFnZQotdmFsaWRhdGlvbiwgZHluYW1pYyBleHBhbnNpb24gb2YgZmllbGRzIGV0Yy4uIExldCdzIHNlZSBpdCBpbiBmdWxsCi1mbG93LjwvcD4KLTxwPkEgZm9ybSBpcyBhIGNvbGxlY3Rpb24gb2YgZmllbGRzOyBlYWNoIGZpZWxkIGNhbiBiZSBlaXRoZXIgYQotbGFiZWwoc3RhdGljIHRleHQpIG9yIGEgZGF0YS1lbnRyeSBsb2NhdGlvbi4gVGhlIGZvcm1zIGFsc28gbGlicmFyeQotcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGRpdmlkZSBmb3JtcyBpbnRvIG11bHRpcGxlIHBhZ2VzLjwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkZPUk1CQVNJQ1MiIGlkPSJGT1JNQkFTSUNTIj4xOC4xLiBUaGUKLUJhc2ljczwvYT48L2gzPgotPHA+Rm9ybXMgYXJlIGNyZWF0ZWQgaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgbWVudXMuIEZpcnN0IHRoZQotZmllbGRzIHJlbGF0ZWQgdG8gdGhlIGZvcm0gYXJlIGNyZWF0ZWQgd2l0aCBuZXdfZmllbGQoKS4gWW91IGNhbgotc2V0IG9wdGlvbnMgZm9yIHRoZSBmaWVsZHMsIHNvIHRoYXQgdGhleSBjYW4gYmUgZGlzcGxheWVkIHdpdGggc29tZQotZmFuY3kgYXR0cmlidXRlcywgdmFsaWRhdGVkIGJlZm9yZSB0aGUgZmllbGQgbG9vc2VzIGZvY3VzIGV0Yy4uCi1UaGVuIHRoZSBmaWVsZHMgYXJlIGF0dGFjaGVkIHRvIGZvcm0uIEFmdGVyIHRoaXMsIHRoZSBmb3JtIGNhbiBiZQotcG9zdGVkIHRvIGRpc3BsYXkgYW5kIGlzIHJlYWR5IHRvIHJlY2VpdmUgaW5wdXRzLiBPbiB0aGUgc2ltaWxhcgotbGluZXMgdG8gbWVudV9kcml2ZXIoKSwgdGhlIGZvcm0gaXMgbWFuaXB1bGF0ZWQgd2l0aCBmb3JtX2RyaXZlcigpLgotV2UgY2FuIHNlbmQgcmVxdWVzdHMgdG8gZm9ybV9kcml2ZXIgdG8gbW92ZSBmb2N1cyB0byBhIGNlcnRhaW4KLWZpZWxkLCBtb3ZlIGN1cnNvciB0byBlbmQgb2YgdGhlIGZpZWxkIGV0Yy4uIEFmdGVyIHRoZSB1c2VyIGVudGVycwotdmFsdWVzIGluIHRoZSBmaWVsZHMgYW5kIHZhbGlkYXRpb24gZG9uZSwgZm9ybSBjYW4gYmUgdW5wb3N0ZWQgYW5kCi1tZW1vcnkgYWxsb2NhdGVkIGNhbiBiZSBmcmVlZC48L3A+Ci08cD5UaGUgZ2VuZXJhbCBmbG93IG9mIGNvbnRyb2wgb2YgYSBmb3JtcyBwcm9ncmFtIGxvb2tzIGxpa2UKLXRoaXMuPC9wPgotPG9sIHR5cGU9IjEiPgotPGxpPgotPHA+SW5pdGlhbGl6ZSBjdXJzZXM8L3A+Ci08L2xpPgotPGxpPgotPHA+Q3JlYXRlIGZpZWxkcyB1c2luZyBuZXdfZmllbGQoKS4gWW91IGNhbiBzcGVjaWZ5IHRoZSBoZWlnaHQgYW5kCi13aWR0aCBvZiB0aGUgZmllbGQsIGFuZCBpdHMgcG9zaXRpb24gb24gdGhlIGZvcm0uPC9wPgotPC9saT4KLTxsaT4KLTxwPkNyZWF0ZSB0aGUgZm9ybXMgd2l0aCBuZXdfZm9ybSgpIGJ5IHNwZWNpZnlpbmcgdGhlIGZpZWxkcyB0byBiZQotYXR0YWNoZWQgd2l0aC48L3A+Ci08L2xpPgotPGxpPgotPHA+UG9zdCB0aGUgZm9ybSB3aXRoIGZvcm1fcG9zdCgpIGFuZCByZWZyZXNoIHRoZSBzY3JlZW4uPC9wPgotPC9saT4KLTxsaT4KLTxwPlByb2Nlc3MgdGhlIHVzZXIgcmVxdWVzdHMgd2l0aCBhIGxvb3AgYW5kIGRvIG5lY2Vzc2FyeSB1cGRhdGVzCi10byBmb3JtIHdpdGggZm9ybV9kcml2ZXIuPC9wPgotPC9saT4KLTxsaT4KLTxwPlVucG9zdCB0aGUgbWVudSB3aXRoIGZvcm1fdW5wb3N0KCk8L3A+Ci08L2xpPgotPGxpPgotPHA+RnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCB0byBtZW51IGJ5IGZyZWVfZm9ybSgpPC9wPgotPC9saT4KLTxsaT4KLTxwPkZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhlIGl0ZW1zIHdpdGggZnJlZV9maWVsZCgpPC9wPgotPC9saT4KLTxsaT4KLTxwPkVuZCBjdXJzZXM8L3A+Ci08L2xpPgotPC9vbD4KLTxwPkFzIHlvdSBjYW4gc2VlLCB3b3JraW5nIHdpdGggZm9ybXMgbGlicmFyeSBpcyBtdWNoIHNpbWlsYXIgdG8KLWhhbmRsaW5nIG1lbnUgbGlicmFyeS4gVGhlIGZvbGxvd2luZyBleGFtcGxlcyB3aWxsIGV4cGxvcmUgdmFyaW91cwotYXNwZWN0cyBvZiBmb3JtIHByb2Nlc3NpbmcuIExldCdzIHN0YXJ0IHRoZSBqb3VybmV5IHdpdGggYSBzaW1wbGUKLWV4YW1wbGUuIGZpcnN0LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iQ09NUElMRUZPUk1TIiBpZD0iQ09NUElMRUZPUk1TIj4xOC4yLgotQ29tcGlsaW5nIFdpdGggdGhlIEZvcm1zIExpYnJhcnk8L2E+PC9oMz4KLTxwPlRvIHVzZSBmb3JtcyBsaWJyYXJ5IGZ1bmN0aW9ucywgeW91IGhhdmUgdG8gaW5jbHVkZSBmb3JtLmggYW5kCi10byBsaW5rIHRoZSBwcm9ncmFtIHdpdGggZm9ybXMgbGlicmFyeSB0aGUgZmxhZyAtbGZvcm0gc2hvdWxkIGJlCi1hZGRlZCBhbG9uZyB3aXRoIC1sbmN1cnNlcyBpbiB0aGF0IG9yZGVyLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj4gICAgI2luY2x1ZGUgJmx0O2Zvcm0uaCZndDsKK3sJbW92ZSgyMCwgMCk7CisJY2xydG9lb2woKTsKKwltdnByaW50dygyMCwgMCwgIkl0ZW0gc2VsZWN0ZWQgaXMgOiAlcyIsIG5hbWUpOworfQk8L1NQQU4KKz48L1BSRQorPjwvRElWCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IkZPUk1TIgorPjE4LiBGb3JtcyBMaWJyYXJ5PC9BCis+PC9IMgorPjxQCis+V2VsbC4gSWYgeW91IGhhdmUgc2VlbiB0aG9zZSBmb3JtcyBvbiB3ZWIgcGFnZXMgd2hpY2ggdGFrZSBpbnB1dCBmcm9tIHVzZXJzIGFuZAorZG8gdmFyaW91cyBraW5kcyBvZiB0aGluZ3MsIHlvdSBtaWdodCBiZSB3b25kZXJpbmcgaG93IHdvdWxkIGFueSBvbmUgY3JlYXRlIHN1Y2gKK2Zvcm1zIGluIHRleHQgbW9kZSBkaXNwbGF5LiBJdCdzIHF1aXRlIGRpZmZpY3VsdCB0byB3cml0ZSB0aG9zZSBuaWZ0eSBmb3JtcyBpbgorcGxhaW4gbmN1cnNlcy4gRm9ybXMgbGlicmFyeSB0cmllcyB0byBwcm92aWRlIGEgYmFzaWMgZnJhbWUgd29yayB0byBidWlsZCBhbmQKK21haW50YWluIGZvcm1zIHdpdGggZWFzZS4gSXQgaGFzIGxvdCBvZiBmZWF0dXJlcyhmdW5jdGlvbnMpIHdoaWNoIG1hbmFnZQordmFsaWRhdGlvbiwgZHluYW1pYyBleHBhbnNpb24gb2YgZmllbGRzIGV0Yy4uIExldCdzIHNlZSBpdCBpbiBmdWxsIGZsb3cuPC9QCis+PFAKKz5BIGZvcm0gaXMgYSBjb2xsZWN0aW9uIG9mIGZpZWxkczsgZWFjaCBmaWVsZCBjYW4gYmUgZWl0aGVyIGEgbGFiZWwoc3RhdGljIHRleHQpCitvciBhIGRhdGEtZW50cnkgbG9jYXRpb24uIFRoZSBmb3JtcyBhbHNvIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGRpdmlkZQorZm9ybXMgaW50byBtdWx0aXBsZSBwYWdlcy4gPC9QCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iRk9STUJBU0lDUyIKKz4xOC4xLiBUaGUgQmFzaWNzPC9BCis+PC9IMworPjxQCis+Rm9ybXMgYXJlIGNyZWF0ZWQgaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgbWVudXMuIEZpcnN0IHRoZSBmaWVsZHMgcmVsYXRlZCB0byB0aGUKK2Zvcm0gYXJlIGNyZWF0ZWQgd2l0aCBuZXdfZmllbGQoKS4gWW91IGNhbiBzZXQgb3B0aW9ucyBmb3IgdGhlIGZpZWxkcywgc28gdGhhdAordGhleSBjYW4gYmUgZGlzcGxheWVkIHdpdGggc29tZSBmYW5jeSBhdHRyaWJ1dGVzLCB2YWxpZGF0ZWQgYmVmb3JlIHRoZSBmaWVsZAorbG9vc2VzIGZvY3VzIGV0Yy4uIFRoZW4gdGhlIGZpZWxkcyBhcmUgYXR0YWNoZWQgdG8gZm9ybS4gQWZ0ZXIgdGhpcywgdGhlIGZvcm0KK2NhbiBiZSBwb3N0ZWQgdG8gZGlzcGxheSBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBpbnB1dHMuIE9uIHRoZSBzaW1pbGFyIGxpbmVzIHRvCittZW51X2RyaXZlcigpLCB0aGUgZm9ybSBpcyBtYW5pcHVsYXRlZCB3aXRoIGZvcm1fZHJpdmVyKCkuIFdlIGNhbiBzZW5kIHJlcXVlc3RzCit0byBmb3JtX2RyaXZlciB0byBtb3ZlIGZvY3VzIHRvIGEgY2VydGFpbiBmaWVsZCwgbW92ZSBjdXJzb3IgdG8gZW5kIG9mIHRoZSBmaWVsZAorZXRjLi4gIEFmdGVyIHRoZSB1c2VyIGVudGVycyB2YWx1ZXMgaW4gdGhlIGZpZWxkcyBhbmQgdmFsaWRhdGlvbiBkb25lLCBmb3JtIGNhbgorYmUgdW5wb3N0ZWQgYW5kIG1lbW9yeSBhbGxvY2F0ZWQgY2FuIGJlIGZyZWVkLjwvUAorPjxQCis+VGhlIGdlbmVyYWwgZmxvdyBvZiBjb250cm9sIG9mIGEgZm9ybXMgcHJvZ3JhbSBsb29rcyBsaWtlIHRoaXMuCisKKzxQCis+PC9QCis+PE9MCitUWVBFPSIxIgorPjxMSQorPjxQCis+SW5pdGlhbGl6ZSBjdXJzZXM8L1AKKz48L0xJCis+PExJCis+PFAKKz5DcmVhdGUgZmllbGRzIHVzaW5nIG5ld19maWVsZCgpLiBZb3UgY2FuIHNwZWNpZnkgdGhlIGhlaWdodCBhbmQKK3dpZHRoIG9mIHRoZSBmaWVsZCwgYW5kIGl0cyBwb3NpdGlvbiBvbiB0aGUgZm9ybS48L1AKKz48L0xJCis+PExJCis+PFAKKz5DcmVhdGUgdGhlIGZvcm1zIHdpdGggbmV3X2Zvcm0oKSBieSBzcGVjaWZ5aW5nIHRoZSBmaWVsZHMgdG8gYmUKK2F0dGFjaGVkIHdpdGguPC9QCis+PC9MSQorPjxMSQorPjxQCis+UG9zdCB0aGUgZm9ybSB3aXRoIGZvcm1fcG9zdCgpIGFuZCByZWZyZXNoIHRoZSBzY3JlZW4uPC9QCis+PC9MSQorPjxMSQorPjxQCis+UHJvY2VzcyB0aGUgdXNlciByZXF1ZXN0cyB3aXRoIGEgbG9vcCBhbmQgZG8gbmVjZXNzYXJ5IHVwZGF0ZXMKK3RvIGZvcm0gd2l0aCBmb3JtX2RyaXZlci48L1AKKz48L0xJCis+PExJCis+PFAKKz5VbnBvc3QgdGhlIG1lbnUgd2l0aCBmb3JtX3VucG9zdCgpPC9QCis+PC9MSQorPjxMSQorPjxQCis+RnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCB0byBtZW51IGJ5IGZyZWVfZm9ybSgpPC9QCis+PC9MSQorPjxMSQorPjxQCis+RnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgaXRlbXMgd2l0aCBmcmVlX2ZpZWxkKCk8L1AKKz48L0xJCis+PExJCis+PFAKKz5FbmQgY3Vyc2VzPC9QCis+PC9MSQorPjwvT0wKKz48L1AKKz48UAorPkFzIHlvdSBjYW4gc2VlLCB3b3JraW5nIHdpdGggZm9ybXMgbGlicmFyeSBpcyBtdWNoIHNpbWlsYXIgdG8gaGFuZGxpbmcgbWVudQorbGlicmFyeS4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgd2lsbCBleHBsb3JlIHZhcmlvdXMgYXNwZWN0cyBvZiBmb3JtCitwcm9jZXNzaW5nLiBMZXQncyBzdGFydCB0aGUgam91cm5leSB3aXRoIGEgc2ltcGxlIGV4YW1wbGUuICBmaXJzdC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkNPTVBJTEVGT1JNUyIKKz4xOC4yLiBDb21waWxpbmcgV2l0aCB0aGUgRm9ybXMgTGlicmFyeTwvQQorPjwvSDMKKz48UAorPlRvIHVzZSBmb3JtcyBsaWJyYXJ5IGZ1bmN0aW9ucywgeW91IGhhdmUgdG8gaW5jbHVkZSBmb3JtLmggYW5kIHRvIGxpbmsgdGhlCitwcm9ncmFtIHdpdGggZm9ybXMgbGlicmFyeSB0aGUgZmxhZyAtbGZvcm0gc2hvdWxkIGJlIGFkZGVkIGFsb25nIHdpdGggLWxuY3Vyc2VzCitpbiB0aGF0IG9yZGVyLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4gICAgI2luY2x1ZGUgJmx0O2Zvcm0uaCZndDsKICAgICAuCiAgICAgLgogICAgIC4KIAotICAgIGNvbXBpbGUgYW5kIGxpbms6IGdjYyAmbHQ7cHJvZ3JhbSBmaWxlJmd0OyAtbGZvcm0gLWxuY3Vyc2VzPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPGRpdiBjbGFzcz0iRVhBTVBMRSI+PGEgbmFtZT0iRkZPU0kiIGlkPSJGRk9TSSI+PC9hPgotPHA+PGI+RXhhbXBsZSAyNS4gRm9ybXMgQmFzaWNzPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O2Zvcm0uaCZndDsKKyAgICBjb21waWxlIGFuZCBsaW5rOiBnY2MgJmx0O3Byb2dyYW0gZmlsZSZndDsgLWxmb3JtIC1sbmN1cnNlczwvUFJFCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkZGT1NJIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDI1LiAgRm9ybXMgQmFzaWNzIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7Zm9ybS5oJiM2MjsKIAogaW50IG1haW4oKQoteyAgICAgICBGSUVMRCAqZmllbGRbM107Ci0gICAgICAgIEZPUk0gICpteV9mb3JtOwotICAgICAgICBpbnQgY2g7Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLwotICAgICAgICBpbml0c2NyKCk7Ci0gICAgICAgIGNicmVhaygpOwotICAgICAgICBub2VjaG8oKTsKLSAgICAgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7Cit7CUZJRUxEICpmaWVsZFszXTsKKwlGT1JNICAqbXlfZm9ybTsKKwlpbnQgY2g7CisJCisJLyogSW5pdGlhbGl6ZSBjdXJzZXMgKi8KKwlpbml0c2NyKCk7CisJY2JyZWFrKCk7CisJbm9lY2hvKCk7CisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZmllbGRzICovCi0gICAgICAgIGZpZWxkWzBdID0gbmV3X2ZpZWxkKDEsIDEwLCA0LCAxOCwgMCwgMCk7Ci0gICAgICAgIGZpZWxkWzFdID0gbmV3X2ZpZWxkKDEsIDEwLCA2LCAxOCwgMCwgMCk7Ci0gICAgICAgIGZpZWxkWzJdID0gTlVMTDsKKwkvKiBJbml0aWFsaXplIHRoZSBmaWVsZHMgKi8KKwlmaWVsZFswXSA9IG5ld19maWVsZCgxLCAxMCwgNCwgMTgsIDAsIDApOworCWZpZWxkWzFdID0gbmV3X2ZpZWxkKDEsIDEwLCA2LCAxOCwgMCwgMCk7CisJZmllbGRbMl0gPSBOVUxMOwogCi0gICAgICAgIC8qIFNldCBmaWVsZCBvcHRpb25zICovCi0gICAgICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzBdLCBBX1VOREVSTElORSk7ICAvKiBQcmludCBhIGxpbmUgZm9yIHRoZSBvcHRpb24gICovCi0gICAgICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkWzBdLCBPX0FVVE9TS0lQKTsgICAvKiBEb24ndCBnbyB0byBuZXh0IGZpZWxkIHdoZW4gdGhpcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRmllbGQgaXMgZmlsbGVkIHVwICAgICAgICAgICAqLwotICAgICAgICBzZXRfZmllbGRfYmFjayhmaWVsZFsxXSwgQV9VTkRFUkxJTkUpOyAKLSAgICAgICAgZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fQVVUT1NLSVApOworCS8qIFNldCBmaWVsZCBvcHRpb25zICovCisJc2V0X2ZpZWxkX2JhY2soZmllbGRbMF0sIEFfVU5ERVJMSU5FKTsgCS8qIFByaW50IGEgbGluZSBmb3IgdGhlIG9wdGlvbiAJKi8KKwlmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BVVRPU0tJUCk7ICAJLyogRG9uJ3QgZ28gdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgKi8KKwkJCQkJCS8qIEZpZWxkIGlzIGZpbGxlZCB1cCAJCSovCisJc2V0X2ZpZWxkX2JhY2soZmllbGRbMV0sIEFfVU5ERVJMSU5FKTsgCisJZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fQVVUT1NLSVApOwogCi0gICAgICAgIC8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLwotICAgICAgICBteV9mb3JtID0gbmV3X2Zvcm0oZmllbGQpOwotICAgICAgICBwb3N0X2Zvcm0obXlfZm9ybSk7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgCi0gICAgICAgIG12cHJpbnR3KDQsIDEwLCAiVmFsdWUgMToiKTsKLSAgICAgICAgbXZwcmludHcoNiwgMTAsICJWYWx1ZSAyOiIpOwotICAgICAgICByZWZyZXNoKCk7CisJLyogQ3JlYXRlIHRoZSBmb3JtIGFuZCBwb3N0IGl0ICovCisJbXlfZm9ybSA9IG5ld19mb3JtKGZpZWxkKTsKKwlwb3N0X2Zvcm0obXlfZm9ybSk7CisJcmVmcmVzaCgpOworCQorCW12cHJpbnR3KDQsIDEwLCAiVmFsdWUgMToiKTsKKwltdnByaW50dyg2LCAxMCwgIlZhbHVlIDI6Iik7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIC8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLwotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byBuZXh0IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gdGhlIGVuZCBvZiB0aGUgcHJlc2VudCBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVhdmVzIG5pY2VseSBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gcHJldmlvdXMgZmllbGQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfRU5EX0xJTkUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFByaW50ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBjaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCS8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLworCXdoaWxlKChjaCA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsJc3dpdGNoKGNoKQorCQl7CWNhc2UgS0VZX0RPV046CisJCQkJLyogR28gdG8gbmV4dCBmaWVsZCAqLworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKKwkJCQkvKiBHbyB0byB0aGUgZW5kIG9mIHRoZSBwcmVzZW50IGJ1ZmZlciAqLworCQkJCS8qIExlYXZlcyBuaWNlbHkgYXQgdGhlIGxhc3QgY2hhcmFjdGVyICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1VQOgorCQkJCS8qIEdvIHRvIHByZXZpb3VzIGZpZWxkICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9FTkRfTElORSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCisJCQkJLyogUHJpbnRlZAkJCQkgICovCQorCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIGNoKTsKKwkJCQlicmVhazsKKwkJfQorCX0KIAotICAgICAgICAvKiBVbiBwb3N0IGZvcm0gYW5kIGZyZWUgdGhlIG1lbW9yeSAqLwotICAgICAgICB1bnBvc3RfZm9ybShteV9mb3JtKTsKLSAgICAgICAgZnJlZV9mb3JtKG15X2Zvcm0pOwotICAgICAgICBmcmVlX2ZpZWxkKGZpZWxkWzBdKTsKLSAgICAgICAgZnJlZV9maWVsZChmaWVsZFsxXSk7IAorCS8qIFVuIHBvc3QgZm9ybSBhbmQgZnJlZSB0aGUgbWVtb3J5ICovCisJdW5wb3N0X2Zvcm0obXlfZm9ybSk7CisJZnJlZV9mb3JtKG15X2Zvcm0pOworCWZyZWVfZmllbGQoZmllbGRbMF0pOworCWZyZWVfZmllbGQoZmllbGRbMV0pOyAKIAotICAgICAgICBlbmR3aW4oKTsKLSAgICAgICAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPHA+QWJvdmUgZXhhbXBsZSBpcyBwcmV0dHkgc3RyYWlnaHQgZm9yd2FyZC4gSXQgY3JlYXRlcyB0d28gZmllbGRzCi13aXRoIDx2YXIgY2xhc3M9IkxJVEVSQUwiPm5ld19maWVsZCgpPC92YXI+LiBuZXdfZmllbGQoKSB0YWtlcwotaGVpZ2h0LCB3aWR0aCwgc3RhcnR5LCBzdGFydHgsIG51bWJlciBvZiBvZmZzY3JlZW4gcm93cyBhbmQgbnVtYmVyCi1vZiBhZGRpdGlvbmFsIHdvcmtpbmcgYnVmZmVycy4gVGhlIGZpZnRoIGFyZ3VtZW50IG51bWJlciBvZgotb2Zmc2NyZWVuIHJvd3Mgc3BlY2lmaWVzIGhvdyBtdWNoIG9mIHRoZSBmaWVsZCB0byBiZSBzaG93bi4gSWYgaXQKLWlzIHplcm8sIHRoZSBlbnRpcmUgZmllbGQgaXMgYWx3YXlzIGRpc3BsYXllZCBvdGhlcndpc2UgdGhlIGZvcm0KLXdpbGwgYmUgc2Nyb2xsYWJsZSB3aGVuIHRoZSB1c2VyIGFjY2Vzc2VzIG5vdCBkaXNwbGF5ZWQgcGFydHMgb2YKLXRoZSBmaWVsZC4gVGhlIGZvcm1zIGxpYnJhcnkgYWxsb2NhdGVzIG9uZSBidWZmZXIgcGVyIGZpZWxkIHRvCi1zdG9yZSB0aGUgZGF0YSB1c2VyIGVudGVycy4gVXNpbmcgdGhlIGxhc3QgcGFyYW1ldGVyIHRvIG5ld19maWVsZCgpCi13ZSBjYW4gc3BlY2lmeSBpdCB0byBhbGxvY2F0ZSBzb21lIGFkZGl0aW9uYWwgYnVmZmVycy4gVGhlc2UgY2FuIGJlCi11c2VkIGZvciBhbnkgcHVycG9zZSB5b3UgbGlrZS48L3A+Ci08cD5BZnRlciBjcmVhdGluZyB0aGUgZmllbGRzLCBiYWNrIGdyb3VuZCBhdHRyaWJ1dGUgb2YgYm90aCBvZiB0aGVtCi1pcyBzZXQgdG8gYW4gdW5kZXJzY29yZSB3aXRoIHNldF9maWVsZF9iYWNrKCkuIFRoZSBBVVRPU0tJUCBvcHRpb24KLWlzIHR1cm5lZCBvZmYgdXNpbmcgZmllbGRfb3B0c19vZmYoKS4gSWYgdGhpcyBvcHRpb24gaXMgdHVybmVkIG9uLAotZm9jdXMgd2lsbCBtb3ZlIHRvIHRoZSBuZXh0IGZpZWxkIGluIHRoZSBmb3JtIG9uY2UgdGhlIGFjdGl2ZSBmaWVsZAotaXMgZmlsbGVkIHVwIGNvbXBsZXRlbHkuPC9wPgotPHA+QWZ0ZXIgYXR0YWNoaW5nIHRoZSBmaWVsZHMgdG8gdGhlIGZvcm0sIGl0IGlzIHBvc3RlZC4gSGVyZSBvbiwKLXVzZXIgaW5wdXRzIGFyZSBwcm9jZXNzZWQgaW4gdGhlIHdoaWxlIGxvb3AsIGJ5IG1ha2luZwotY29ycmVzcG9uZGluZyByZXF1ZXN0cyB0byBmb3JtX2RyaXZlci4gVGhlIGRldGFpbHMgb2YgYWxsIHRoZQotcmVxdWVzdHMgdG8gdGhlIGZvcm1fZHJpdmVyKCkgYXJlIGV4cGxhaW5lZCBsYXRlci48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlBMQVlGSUVMRFMiIGlkPSJQTEFZRklFTERTIj4xOC4zLgotUGxheWluZyB3aXRoIEZpZWxkczwvYT48L2gzPgotPHA+RWFjaCBmb3JtIGZpZWxkIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGxvdCBvZiBhdHRyaWJ1dGVzLiBUaGV5IGNhbgotYmUgbWFuaXB1bGF0ZWQgdG8gZ2V0IHRoZSByZXF1aXJlZCBlZmZlY3QgYW5kIHRvIGhhdmUgZnVuICEhIS4gU28KLXdoeSB3YWl0PzwvcD4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IkZFVENISU5GTyIgaWQ9IkZFVENISU5GTyI+MTguMy4xLgotRmV0Y2hpbmcgU2l6ZSBhbmQgTG9jYXRpb24gb2YgRmllbGQ8L2E+PC9oND4KLTxwPlRoZSBwYXJhbWV0ZXJzIHdlIGhhdmUgZ2l2ZW4gYXQgdGhlIHRpbWUgb2YgY3JlYXRpb24gb2YgYSBmaWVsZAotY2FuIGJlIHJldHJpZXZlZCB3aXRoIGZpZWxkX2luZm8oKS4gSXQgcmV0dXJucyBoZWlnaHQsIHdpZHRoLAotc3RhcnR5LCBzdGFydHgsIG51bWJlciBvZiBvZmZzY3JlZW4gcm93cywgYW5kIG51bWJlciBvZiBhZGRpdGlvbmFsCi1idWZmZXJzIGludG8gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gdG8gaXQuIEl0IGlzIGEgc29ydCBvZiBpbnZlcnNlIG9mCi1uZXdfZmllbGQoKS48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj5pbnQgZmllbGRfaW5mbyggICAgIEZJRUxEICpmaWVsZCwgICAgICAgICAgICAgIC8qIGZpZWxkIGZyb20gd2hpY2ggdG8gZmV0Y2ggKi8KKwllbmR3aW4oKTsKKwlyZXR1cm4gMDsKK308L1NQQU4KKz48L1BSRQorPjwvRElWCis+PFAKKz5BYm92ZSBleGFtcGxlIGlzIHByZXR0eSBzdHJhaWdodCBmb3J3YXJkLiBJdCBjcmVhdGVzIHR3byBmaWVsZHMgd2l0aAorPFRUCitDTEFTUz0iTElURVJBTCIKKz5uZXdfZmllbGQoKTwvVFQKKz4uICBuZXdfZmllbGQoKSB0YWtlcyBoZWlnaHQsIHdpZHRoLAorc3RhcnR5LCBzdGFydHgsIG51bWJlciBvZiBvZmZzY3JlZW4gcm93cyBhbmQgbnVtYmVyIG9mIGFkZGl0aW9uYWwgd29ya2luZworYnVmZmVycy4gVGhlIGZpZnRoIGFyZ3VtZW50IG51bWJlciBvZiBvZmZzY3JlZW4gcm93cyBzcGVjaWZpZXMgaG93IG11Y2ggb2YgdGhlCitmaWVsZCB0byBiZSBzaG93bi4gSWYgaXQgaXMgemVybywgdGhlIGVudGlyZSBmaWVsZCBpcyBhbHdheXMgZGlzcGxheWVkIG90aGVyd2lzZQordGhlIGZvcm0gd2lsbCBiZSBzY3JvbGxhYmxlIHdoZW4gdGhlIHVzZXIgYWNjZXNzZXMgbm90IGRpc3BsYXllZCBwYXJ0cyBvZiB0aGUKK2ZpZWxkLiAgVGhlIGZvcm1zIGxpYnJhcnkgYWxsb2NhdGVzIG9uZSBidWZmZXIgcGVyIGZpZWxkIHRvIHN0b3JlIHRoZSBkYXRhIHVzZXIKK2VudGVycy4gVXNpbmcgdGhlIGxhc3QgcGFyYW1ldGVyIHRvIG5ld19maWVsZCgpIHdlIGNhbiBzcGVjaWZ5IGl0IHRvIGFsbG9jYXRlCitzb21lIGFkZGl0aW9uYWwgYnVmZmVycy4gIFRoZXNlIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVycG9zZSB5b3UgbGlrZS48L1AKKz48UAorPkFmdGVyIGNyZWF0aW5nIHRoZSBmaWVsZHMsIGJhY2sgZ3JvdW5kIGF0dHJpYnV0ZSBvZiBib3RoIG9mIHRoZW0gaXMgc2V0IHRvIGFuCit1bmRlcnNjb3JlIHdpdGggc2V0X2ZpZWxkX2JhY2soKS4gVGhlIEFVVE9TS0lQIG9wdGlvbiBpcyB0dXJuZWQgb2ZmIHVzaW5nCitmaWVsZF9vcHRzX29mZigpLiAgSWYgdGhpcyBvcHRpb24gaXMgdHVybmVkIG9uLCBmb2N1cyB3aWxsIG1vdmUgdG8gdGhlIG5leHQKK2ZpZWxkIGluIHRoZSBmb3JtIG9uY2UgdGhlIGFjdGl2ZSBmaWVsZCBpcyBmaWxsZWQgdXAgY29tcGxldGVseS48L1AKKz48UAorPkFmdGVyIGF0dGFjaGluZyB0aGUgZmllbGRzIHRvIHRoZSBmb3JtLCBpdCBpcyBwb3N0ZWQuIEhlcmUgb24sIHVzZXIgaW5wdXRzIGFyZQorcHJvY2Vzc2VkIGluIHRoZSB3aGlsZSBsb29wLCBieSBtYWtpbmcgY29ycmVzcG9uZGluZyByZXF1ZXN0cyB0byBmb3JtX2RyaXZlci4KK1RoZSBkZXRhaWxzIG9mIGFsbCB0aGUgcmVxdWVzdHMgdG8gdGhlIGZvcm1fZHJpdmVyKCkgYXJlIGV4cGxhaW5lZCBsYXRlci48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlBMQVlGSUVMRFMiCis+MTguMy4gUGxheWluZyB3aXRoIEZpZWxkczwvQQorPjwvSDMKKz48UAorPkVhY2ggZm9ybSBmaWVsZCBpcyBhc3NvY2lhdGVkIHdpdGggYSBsb3Qgb2YgYXR0cmlidXRlcy4gVGhleSBjYW4gYmUgbWFuaXB1bGF0ZWQKK3RvIGdldCB0aGUgcmVxdWlyZWQgZWZmZWN0IGFuZCB0byBoYXZlIGZ1biAhISEuIFNvIHdoeSB3YWl0PyA8L1AKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJGRVRDSElORk8iCis+MTguMy4xLiBGZXRjaGluZyBTaXplIGFuZCBMb2NhdGlvbiBvZiBGaWVsZDwvQQorPjwvSDQKKz48UAorPlRoZSBwYXJhbWV0ZXJzIHdlIGhhdmUgZ2l2ZW4gYXQgdGhlIHRpbWUgb2YgY3JlYXRpb24gb2YgYSBmaWVsZCBjYW4gYmUgcmV0cmlldmVkCit3aXRoIGZpZWxkX2luZm8oKS4gSXQgcmV0dXJucyBoZWlnaHQsIHdpZHRoLCBzdGFydHksIHN0YXJ0eCwgbnVtYmVyIG9mIG9mZnNjcmVlbgorcm93cywgYW5kIG51bWJlciBvZiBhZGRpdGlvbmFsIGJ1ZmZlcnMgaW50byB0aGUgcGFyYW1ldGVycyBnaXZlbiB0byBpdC4gSXQgaXMgYQorc29ydCBvZiBpbnZlcnNlIG9mIG5ld19maWVsZCgpLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgZmllbGRfaW5mbyggICAgIEZJRUxEICpmaWVsZCwgICAgICAgICAgICAgIC8qIGZpZWxkIGZyb20gd2hpY2ggdG8gZmV0Y2ggKi8KICAgICAgICAgICAgICAgICAgICAgaW50ICpoZWlnaHQsICppbnQgd2lkdGgsICAgLyogZmllbGQgc2l6ZSAqLyAKICAgICAgICAgICAgICAgICAgICAgaW50ICp0b3AsIGludCAqbGVmdCwgICAgICAgLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KICAgICAgICAgICAgICAgICAgICAgaW50ICpvZmZzY3JlZW4sICAgICAgICAgICAgLyogbnVtYmVyIG9mIG9mZnNjcmVlbiByb3dzICovCi0gICAgICAgICAgICAgICAgICAgIGludCAqbmJ1Zik7ICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiB3b3JraW5nIGJ1ZmZlcnMgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9Ik1PVkVGSUVMRCIgaWQ9Ik1PVkVGSUVMRCI+MTguMy4yLiBNb3ZpbmcKLXRoZSBmaWVsZDwvYT48L2g0PgotPHA+VGhlIGxvY2F0aW9uIG9mIHRoZSBmaWVsZCBjYW4gYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcG9zaXRpb24KLXdpdGggbW92ZV9maWVsZCgpLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBtb3ZlX2ZpZWxkKCAgICBGSUVMRCAqZmllbGQsICAgICAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwotICAgICAgICAgICAgICAgICAgIGludCB0b3AsIGludCBsZWZ0KTsgICAgICAgIC8qIG5ldyB1cHBlci1sZWZ0IGNvcm5lciAqLzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPkFzIHVzdWFsLCB0aGUgY2hhbmdlZCBwb3NpdGlvbiBjYW4gYmUgcXVlcmllZCB3aXRoCi1maWVsZF9pbmZvcigpLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iSlVTVElGWUZJRUxEIiBpZD0iSlVTVElGWUZJRUxEIj4xOC4zLjMuCi1GaWVsZCBKdXN0aWZpY2F0aW9uPC9hPjwvaDQ+Ci08cD5UaGUganVzdGlmaWNhdGlvbiB0byBiZSBkb25lIGZvciB0aGUgZmllbGQgY2FuIGJlIGZpeGVkIHVzaW5nCi10aGUgZnVuY3Rpb24gc2V0X2ZpZWxkX2p1c3QoKS48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj4gICAgaW50IHNldF9maWVsZF9qdXN0KEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgaW50ICpuYnVmKTsgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHdvcmtpbmcgYnVmZmVycyAqLzwvUFJFCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJNT1ZFRklFTEQiCis+MTguMy4yLiBNb3ZpbmcgdGhlIGZpZWxkPC9BCis+PC9INAorPjxQCis+VGhlIGxvY2F0aW9uIG9mIHRoZSBmaWVsZCBjYW4gYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcG9zaXRpb24gd2l0aAorbW92ZV9maWVsZCgpLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgbW92ZV9maWVsZCggICAgRklFTEQgKmZpZWxkLCAgICAgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KKyAgICAgICAgICAgICAgICAgICBpbnQgdG9wLCBpbnQgbGVmdCk7ICAgICAgICAvKiBuZXcgdXBwZXItbGVmdCBjb3JuZXIgKi88L1BSRQorPjxQCis+QXMgdXN1YWwsIHRoZSBjaGFuZ2VkIHBvc2l0aW9uIGNhbiBiZSBxdWVyaWVkIHdpdGggZmllbGRfaW5mb3IoKS48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IkpVU1RJRllGSUVMRCIKKz4xOC4zLjMuIEZpZWxkIEp1c3RpZmljYXRpb248L0EKKz48L0g0Cis+PFAKKz5UaGUganVzdGlmaWNhdGlvbiB0byBiZSBkb25lIGZvciB0aGUgZmllbGQgY2FuIGJlIGZpeGVkIHVzaW5nIHRoZSBmdW5jdGlvbgorc2V0X2ZpZWxkX2p1c3QoKS48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGludCBzZXRfZmllbGRfanVzdChGSUVMRCAqZmllbGQsICAgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCiAgICAgICAgICAgICAgICBpbnQganVzdG1vZGUpOyAgICAgICAgIC8qIG1vZGUgdG8gc2V0ICovCi0gICAgaW50IGZpZWxkX2p1c3QoRklFTEQgKmZpZWxkKTsgICAgICAgICAgLyogZmV0Y2gganVzdGlmeSBtb2RlIG9mIGZpZWxkICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIGp1c3RpZmljYXRpb24gbW9kZSB2YWx1ZWQgYWNjZXB0ZWQgYW5kIHJldHVybmVkIGJ5IHRoZXNlCi1mdW5jdGlvbnMgYXJlIE5PX0pVU1RJRklDQVRJT04sIEpVU1RJRllfUklHSFQsIEpVU1RJRllfTEVGVCwgb3IKLUpVU1RJRllfQ0VOVEVSLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iRklFTERESVNQQVRUUklCIiBpZD0KLSJGSUVMRERJU1BBVFRSSUIiPjE4LjMuNC4gRmllbGQgRGlzcGxheSBBdHRyaWJ1dGVzPC9hPjwvaDQ+Ci08cD5BcyB5b3UgaGF2ZSBzZWVuLCBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgZGlzcGxheSBhdHRyaWJ1dGUgZm9yCi10aGUgZmllbGRzIGNhbiBiZSBzZXQgd2l0aCBzZXRfZmllbGRfZm9yZSgpIGFuZCBzZXRmaWVsZF9iYWNrKCkuCi1UaGVzZSBmdW5jdGlvbnMgc2V0IGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgYXR0cmlidXRlIG9mIHRoZQotZmllbGRzLiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhIHBhZCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCBiZSBmaWxsZWQKLWluIHRoZSB1bmZpbGxlZCBwb3J0aW9uIG9mIHRoZSBmaWVsZC4gVGhlIHBhZCBjaGFyYWN0ZXIgaXMgc2V0IHdpdGgKLWEgY2FsbCB0byBzZXRfZmllbGRfcGFkKCkuIERlZmF1bHQgcGFkIHZhbHVlIGlzIGEgc3BhY2UuIFRoZQotZnVuY3Rpb25zIGZpZWxkX2ZvcmUoKSwgZmllbGRfYmFjaywgZmllbGRfcGFkKCkgY2FuIGJlIHVzZWQgdG8KLXF1ZXJ5IHRoZSBwcmVzZW50IGZvcmVncm91bmQsIGJhY2tncm91bmQgYXR0cmlidXRlcyBhbmQgcGFkCi1jaGFyYWN0ZXIgZm9yIHRoZSBmaWVsZC4gVGhlIGZvbGxvd2luZyBsaXN0IGdpdmVzIHRoZSB1c2FnZSBvZgotZnVuY3Rpb25zLjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPiYjMTM7aW50IHNldF9maWVsZF9mb3JlKEZJRUxEICpmaWVsZCwgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCisgICAgaW50IGZpZWxkX2p1c3QoRklFTEQgKmZpZWxkKTsgICAgICAgICAgLyogZmV0Y2gganVzdGlmeSBtb2RlIG9mIGZpZWxkICovPC9QUkUKKz48UAorPlRoZSBqdXN0aWZpY2F0aW9uIG1vZGUgdmFsdWVkIGFjY2VwdGVkIGFuZCByZXR1cm5lZCBieSB0aGVzZSBmdW5jdGlvbnMgYXJlIAorTk9fSlVTVElGSUNBVElPTiwgSlVTVElGWV9SSUdIVCwgSlVTVElGWV9MRUZULCBvciBKVVNUSUZZX0NFTlRFUi48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IkZJRUxERElTUEFUVFJJQiIKKz4xOC4zLjQuIEZpZWxkIERpc3BsYXkgQXR0cmlidXRlczwvQQorPjwvSDQKKz48UAorPkFzIHlvdSBoYXZlIHNlZW4sIGluIHRoZSBhYm92ZSBleGFtcGxlLCBkaXNwbGF5IGF0dHJpYnV0ZSBmb3IgdGhlIGZpZWxkcyBjYW4gYmUKK3NldCB3aXRoIHNldF9maWVsZF9mb3JlKCkgYW5kIHNldGZpZWxkX2JhY2soKS4gVGhlc2UgZnVuY3Rpb25zIHNldCBmb3JlZ3JvdW5kCithbmQgYmFja2dyb3VuZCBhdHRyaWJ1dGUgb2YgdGhlIGZpZWxkcy4gWW91IGNhbiBhbHNvIHNwZWNpZnkgYSBwYWQgY2hhcmFjdGVyCit3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiB0aGUgdW5maWxsZWQgcG9ydGlvbiBvZiB0aGUgZmllbGQuIFRoZSBwYWQgY2hhcmFjdGVyIGlzCitzZXQgd2l0aCBhIGNhbGwgdG8gc2V0X2ZpZWxkX3BhZCgpLiBEZWZhdWx0IHBhZCB2YWx1ZSBpcyBhIHNwYWNlLiBUaGUgZnVuY3Rpb25zCitmaWVsZF9mb3JlKCksIGZpZWxkX2JhY2ssIGZpZWxkX3BhZCgpIGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBwcmVzZW50Citmb3JlZ3JvdW5kLCBiYWNrZ3JvdW5kIGF0dHJpYnV0ZXMgYW5kIHBhZCBjaGFyYWN0ZXIgZm9yIHRoZSBmaWVsZC4gVGhlIGZvbGxvd2luZworbGlzdCBnaXZlcyB0aGUgdXNhZ2Ugb2YgZnVuY3Rpb25zLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz4mIzEzO2ludCBzZXRfZmllbGRfZm9yZShGSUVMRCAqZmllbGQsICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwogICAgICAgICAgICAgICAgICAgIGNodHlwZSBhdHRyKTsgICAgICAgIC8qIGF0dHJpYnV0ZSB0byBzZXQgKi8gCiAKIGNodHlwZSBmaWVsZF9mb3JlKEZJRUxEICpmaWVsZCk7ICAgICAgICAvKiBmaWVsZCB0byBxdWVyeSAqLwpAQCAtNDk1MiwxMjQgKzY1OTEsMTI3IEBACiAgICAgICAgICAgICAgICAgICBpbnQgcGFkKTsgICAgICAgICAgICAgLyogcGFkIGNoYXJhY3RlciB0byBzZXQgKi8gCiAKIGNodHlwZSBmaWVsZF9wYWQoRklFTEQgKmZpZWxkKTsgICAgICAgICAvKiBmaWVsZCB0byBxdWVyeSAqLyAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJucyBwcmVzZW50IHBhZCBjaGFyYWN0ZXIgKi8mIzEzOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPlRob3VnaCBhYm92ZSBmdW5jdGlvbnMgc2VlbSBxdWl0ZSBzaW1wbGUsIHVzaW5nIGNvbG9ycyB3aXRoCi1zZXRfZmllbGRfZm9yZSgpIG1heSBiZSBmcnVzdHJhdGluZyBpbiB0aGUgYmVnaW5uaW5nLiBMZXQgbWUgZmlyc3QKLWV4cGxhaW4gYWJvdXQgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBhdHRyaWJ1dGVzIG9mIGEgZmllbGQuIFRoZQotZm9yZWdyb3VuZCBhdHRyaWJ1dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGFyYWN0ZXIuIFRoYXQgbWVhbnMgYQotY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyBwcmludGVkIHdpdGggdGhlIGF0dHJpYnV0ZSB5b3UgaGF2ZSBzZXQKLXdpdGggc2V0X2ZpZWxkX2ZvcmUoKS4gQmFja2dyb3VuZCBhdHRyaWJ1dGUgaXMgdGhlIGF0dHJpYnV0ZSB1c2VkCi10byBmaWxsIGJhY2tncm91bmQgb2YgZmllbGQsIHdoZXRoZXIgYW55IGNoYXJhY3RlciBpcyB0aGVyZSBvciBub3QuCi1TbyB3aGF0IGFib3V0IGNvbG9ycz8gU2luY2UgY29sb3JzIGFyZSBhbHdheXMgZGVmaW5lZCBpbiBwYWlycywKLXdoYXQgaXMgdGhlIHJpZ2h0IHdheSB0byBkaXNwbGF5IGNvbG9yZWQgZmllbGRzPyBIZXJlJ3MgYW4gZXhhbXBsZQotY2xhcmlmeWluZyBjb2xvciBhdHRyaWJ1dGVzLjwvcD4KLTxkaXYgY2xhc3M9IkVYQU1QTEUiPjxhIG5hbWU9IkZGT0FUIiBpZD0iRkZPQVQiPjwvYT4KLTxwPjxiPkV4YW1wbGUgMjYuIEZvcm0gQXR0cmlidXRlcyBleGFtcGxlPC9iPjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPSIjMDAwMDAwIj48c3BhbiBjbGFzcz0KLSJJTkxJTkVNRURJQU9CSkVDVCI+I2luY2x1ZGUgJmx0O2Zvcm0uaCZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm5zIHByZXNlbnQgcGFkIGNoYXJhY3RlciAqLyYjMTM7PC9QUkUKKz48UAorPlRob3VnaCBhYm92ZSBmdW5jdGlvbnMgc2VlbSBxdWl0ZSBzaW1wbGUsIHVzaW5nIGNvbG9ycyB3aXRoIHNldF9maWVsZF9mb3JlKCkgbWF5CitiZSBmcnVzdHJhdGluZyBpbiB0aGUgYmVnaW5uaW5nLiBMZXQgbWUgZmlyc3QgZXhwbGFpbiBhYm91dCBmb3JlZ3JvdW5kIGFuZAorYmFja2dyb3VuZCBhdHRyaWJ1dGVzIG9mIGEgZmllbGQuIFRoZSBmb3JlZ3JvdW5kIGF0dHJpYnV0ZSBpcyBhc3NvY2lhdGVkIHdpdGgKK3RoZSBjaGFyYWN0ZXIuIFRoYXQgbWVhbnMgYSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIHByaW50ZWQgd2l0aCB0aGUgYXR0cmlidXRlCit5b3UgaGF2ZSBzZXQgd2l0aCBzZXRfZmllbGRfZm9yZSgpLiBCYWNrZ3JvdW5kIGF0dHJpYnV0ZSBpcyB0aGUgYXR0cmlidXRlIHVzZWQKK3RvIGZpbGwgYmFja2dyb3VuZCBvZiBmaWVsZCwgd2hldGhlciBhbnkgY2hhcmFjdGVyIGlzIHRoZXJlIG9yIG5vdC4gIFNvIHdoYXQKK2Fib3V0IGNvbG9ycz8gU2luY2UgY29sb3JzIGFyZSBhbHdheXMgZGVmaW5lZCBpbiBwYWlycywgd2hhdCBpcyB0aGUgcmlnaHQgd2F5IHRvCitkaXNwbGF5IGNvbG9yZWQgZmllbGRzPyBIZXJlJ3MgYW4gZXhhbXBsZSBjbGFyaWZ5aW5nIGNvbG9yIGF0dHJpYnV0ZXMuPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkZGT0FUIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDI2LiAgRm9ybSBBdHRyaWJ1dGVzIGV4YW1wbGUgPC9CCis+PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iSU5MSU5FTUVESUFPQkpFQ1QiCis+I2luY2x1ZGUgJiM2MDtmb3JtLmgmIzYyOwogCiBpbnQgbWFpbigpCi17ICAgICAgIEZJRUxEICpmaWVsZFszXTsKLSAgICAgICAgRk9STSAgKm15X2Zvcm07Ci0gICAgICAgIGludCBjaDsKLSAgICAgICAgCi0gICAgICAgIC8qIEluaXRpYWxpemUgY3Vyc2VzICovCi0gICAgICAgIGluaXRzY3IoKTsKLSAgICAgICAgc3RhcnRfY29sb3IoKTsKLSAgICAgICAgY2JyZWFrKCk7Ci0gICAgICAgIG5vZWNobygpOwotICAgICAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKK3sJRklFTEQgKmZpZWxkWzNdOworCUZPUk0gICpteV9mb3JtOworCWludCBjaDsKKwkKKwkvKiBJbml0aWFsaXplIGN1cnNlcyAqLworCWluaXRzY3IoKTsKKwlzdGFydF9jb2xvcigpOworCWNicmVhaygpOworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgZmV3IGNvbG9yIHBhaXJzICovCi0gICAgICAgIGluaXRfcGFpcigxLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7Ci0gICAgICAgIGluaXRfcGFpcigyLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJLyogSW5pdGlhbGl6ZSBmZXcgY29sb3IgcGFpcnMgKi8KKwlpbml0X3BhaXIoMSwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworCWluaXRfcGFpcigyLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZmllbGRzICovCi0gICAgICAgIGZpZWxkWzBdID0gbmV3X2ZpZWxkKDEsIDEwLCA0LCAxOCwgMCwgMCk7Ci0gICAgICAgIGZpZWxkWzFdID0gbmV3X2ZpZWxkKDEsIDEwLCA2LCAxOCwgMCwgMCk7Ci0gICAgICAgIGZpZWxkWzJdID0gTlVMTDsKKwkvKiBJbml0aWFsaXplIHRoZSBmaWVsZHMgKi8KKwlmaWVsZFswXSA9IG5ld19maWVsZCgxLCAxMCwgNCwgMTgsIDAsIDApOworCWZpZWxkWzFdID0gbmV3X2ZpZWxkKDEsIDEwLCA2LCAxOCwgMCwgMCk7CisJZmllbGRbMl0gPSBOVUxMOwogCi0gICAgICAgIC8qIFNldCBmaWVsZCBvcHRpb25zICovCi0gICAgICAgIHNldF9maWVsZF9mb3JlKGZpZWxkWzBdLCBDT0xPUl9QQUlSKDEpKTsvKiBQdXQgdGhlIGZpZWxkIHdpdGggYmx1ZSBiYWNrZ3JvdW5kICovCi0gICAgICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzBdLCBDT0xPUl9QQUlSKDIpKTsvKiBhbmQgd2hpdGUgZm9yZWdyb3VuZCAoY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXJlIHByaW50ZWQgaW4gd2hpdGUgICAgICAgICAqLwotICAgICAgICBmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BVVRPU0tJUCk7ICAgLyogRG9uJ3QgZ28gdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZpZWxkIGlzIGZpbGxlZCB1cCAgICAgICAgICAgKi8KLSAgICAgICAgc2V0X2ZpZWxkX2JhY2soZmllbGRbMV0sIEFfVU5ERVJMSU5FKTsgCi0gICAgICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkWzFdLCBPX0FVVE9TS0lQKTsKKwkvKiBTZXQgZmllbGQgb3B0aW9ucyAqLworCXNldF9maWVsZF9mb3JlKGZpZWxkWzBdLCBDT0xPUl9QQUlSKDEpKTsvKiBQdXQgdGhlIGZpZWxkIHdpdGggYmx1ZSBiYWNrZ3JvdW5kICovCisJc2V0X2ZpZWxkX2JhY2soZmllbGRbMF0sIENPTE9SX1BBSVIoMikpOy8qIGFuZCB3aGl0ZSBmb3JlZ3JvdW5kIChjaGFyYWN0ZXJzICovCisJCQkJCQkvKiBhcmUgcHJpbnRlZCBpbiB3aGl0ZSAJKi8KKwlmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BVVRPU0tJUCk7ICAJLyogRG9uJ3QgZ28gdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgKi8KKwkJCQkJCS8qIEZpZWxkIGlzIGZpbGxlZCB1cCAJCSovCisJc2V0X2ZpZWxkX2JhY2soZmllbGRbMV0sIEFfVU5ERVJMSU5FKTsgCisJZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fQVVUT1NLSVApOwogCi0gICAgICAgIC8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLwotICAgICAgICBteV9mb3JtID0gbmV3X2Zvcm0oZmllbGQpOwotICAgICAgICBwb3N0X2Zvcm0obXlfZm9ybSk7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgCi0gICAgICAgIHNldF9jdXJyZW50X2ZpZWxkKG15X2Zvcm0sIGZpZWxkWzBdKTsgLyogU2V0IGZvY3VzIHRvIHRoZSBjb2xvcmVkIGZpZWxkICovCi0gICAgICAgIG12cHJpbnR3KDQsIDEwLCAiVmFsdWUgMToiKTsKLSAgICAgICAgbXZwcmludHcoNiwgMTAsICJWYWx1ZSAyOiIpOwotICAgICAgICBtdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgVVAsIERPV04gYXJyb3cga2V5cyB0byBzd2l0Y2ggYmV0d2VlbiBmaWVsZHMiKTsKLSAgICAgICAgcmVmcmVzaCgpOworCS8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLworCW15X2Zvcm0gPSBuZXdfZm9ybShmaWVsZCk7CisJcG9zdF9mb3JtKG15X2Zvcm0pOworCXJlZnJlc2goKTsKKwkKKwlzZXRfY3VycmVudF9maWVsZChteV9mb3JtLCBmaWVsZFswXSk7IC8qIFNldCBmb2N1cyB0byB0aGUgY29sb3JlZCBmaWVsZCAqLworCW12cHJpbnR3KDQsIDEwLCAiVmFsdWUgMToiKTsKKwltdnByaW50dyg2LCAxMCwgIlZhbHVlIDI6Iik7CisJbXZwcmludHcoTElORVMgLSAyLCAwLCAiVXNlIFVQLCBET1dOIGFycm93IGtleXMgdG8gc3dpdGNoIGJldHdlZW4gZmllbGRzIik7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIC8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLwotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byBuZXh0IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gdGhlIGVuZCBvZiB0aGUgcHJlc2VudCBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVhdmVzIG5pY2VseSBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gcHJldmlvdXMgZmllbGQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfRU5EX0xJTkUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFByaW50ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBjaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCS8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLworCXdoaWxlKChjaCA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsJc3dpdGNoKGNoKQorCQl7CWNhc2UgS0VZX0RPV046CisJCQkJLyogR28gdG8gbmV4dCBmaWVsZCAqLworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKKwkJCQkvKiBHbyB0byB0aGUgZW5kIG9mIHRoZSBwcmVzZW50IGJ1ZmZlciAqLworCQkJCS8qIExlYXZlcyBuaWNlbHkgYXQgdGhlIGxhc3QgY2hhcmFjdGVyICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1VQOgorCQkJCS8qIEdvIHRvIHByZXZpb3VzIGZpZWxkICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9FTkRfTElORSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCisJCQkJLyogUHJpbnRlZAkJCQkgICovCQorCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIGNoKTsKKwkJCQlicmVhazsKKwkJfQorCX0KIAotICAgICAgICAvKiBVbiBwb3N0IGZvcm0gYW5kIGZyZWUgdGhlIG1lbW9yeSAqLwotICAgICAgICB1bnBvc3RfZm9ybShteV9mb3JtKTsKLSAgICAgICAgZnJlZV9mb3JtKG15X2Zvcm0pOwotICAgICAgICBmcmVlX2ZpZWxkKGZpZWxkWzBdKTsKLSAgICAgICAgZnJlZV9maWVsZChmaWVsZFsxXSk7IAorCS8qIFVuIHBvc3QgZm9ybSBhbmQgZnJlZSB0aGUgbWVtb3J5ICovCisJdW5wb3N0X2Zvcm0obXlfZm9ybSk7CisJZnJlZV9mb3JtKG15X2Zvcm0pOworCWZyZWVfZmllbGQoZmllbGRbMF0pOworCWZyZWVfZmllbGQoZmllbGRbMV0pOyAKIAotICAgICAgICBlbmR3aW4oKTsKLSAgICAgICAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPHA+UGxheSB3aXRoIHRoZSBjb2xvciBwYWlycyBhbmQgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIGZvcmVncm91bmQKLWFuZCBiYWNrZ3JvdW5kIGF0dHJpYnV0ZXMuIEluIG15IHByb2dyYW1zIHVzaW5nIGNvbG9yIGF0dHJpYnV0ZXMsIEkKLXVzdWFsbHkgc2V0IG9ubHkgdGhlIGJhY2tncm91bmQgd2l0aCBzZXRfZmllbGRfYmFjaygpLiBDdXJzZXMKLXNpbXBseSBkb2Vzbid0IGFsbG93IGRlZmluaW5nIGluZGl2aWR1YWwgY29sb3IgYXR0cmlidXRlcy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IkZJRUxET1BUSU9OQklUUyIgaWQ9Ci0iRklFTERPUFRJT05CSVRTIj4xOC4zLjUuIEZpZWxkIE9wdGlvbiBCaXRzPC9hPjwvaDQ+Ci08cD5UaGVyZSBpcyBhbHNvIGEgbGFyZ2UgY29sbGVjdGlvbiBvZiBmaWVsZCBvcHRpb24gYml0cyB5b3UgY2FuCi1zZXQgdG8gY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgZm9ybXMgcHJvY2Vzc2luZy4gWW91IGNhbgotbWFuaXB1bGF0ZSB0aGVtIHdpdGggdGhlc2UgZnVuY3Rpb25zOjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBzZXRfZmllbGRfb3B0cyhGSUVMRCAqZmllbGQsICAgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCisJZW5kd2luKCk7CisJcmV0dXJuIDA7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+UGxheSB3aXRoIHRoZSBjb2xvciBwYWlycyBhbmQgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQKK2F0dHJpYnV0ZXMuIEluIG15IHByb2dyYW1zIHVzaW5nIGNvbG9yIGF0dHJpYnV0ZXMsIEkgdXN1YWxseSBzZXQgb25seSB0aGUKK2JhY2tncm91bmQgd2l0aCBzZXRfZmllbGRfYmFjaygpLiBDdXJzZXMgc2ltcGx5IGRvZXNuJ3QgYWxsb3cgZGVmaW5pbmcKK2luZGl2aWR1YWwgY29sb3IgYXR0cmlidXRlcy4gPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJGSUVMRE9QVElPTkJJVFMiCis+MTguMy41LiBGaWVsZCBPcHRpb24gQml0czwvQQorPjwvSDQKKz48UAorPlRoZXJlIGlzIGFsc28gYSBsYXJnZSBjb2xsZWN0aW9uIG9mIGZpZWxkIG9wdGlvbiBiaXRzIHlvdSBjYW4gc2V0IHRvIGNvbnRyb2wKK3ZhcmlvdXMgYXNwZWN0cyBvZiBmb3JtcyBwcm9jZXNzaW5nLiBZb3UgY2FuIG1hbmlwdWxhdGUgdGhlbSB3aXRoIHRoZXNlCitmdW5jdGlvbnM6PC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPmludCBzZXRfZmllbGRfb3B0cyhGSUVMRCAqZmllbGQsICAgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCiAgICAgICAgICAgICAgICAgICAgaW50IGF0dHIpOyAgICAgICAgICAgICAvKiBhdHRyaWJ1dGUgdG8gc2V0ICovIAogCiBpbnQgZmllbGRfb3B0c19vbihGSUVMRCAqZmllbGQsICAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwpAQCAtNTA3OCwxMDggKzY3MjAsMTM0IEBACiBpbnQgZmllbGRfb3B0c19vZmYoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwogICAgICAgICAgICAgICAgICAgaW50IGF0dHIpOyAgICAgICAgICAgICAgLyogYXR0cmlidXRlcyB0byB0dXJuIG9mZiAqLyAKIAotaW50IGZpZWxkX29wdHMoRklFTEQgKmZpZWxkKTsgICAgICAgICAgICAgLyogZmllbGQgdG8gcXVlcnkgKi8gPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIGZ1bmN0aW9uIHNldF9maWVsZF9vcHRzKCkgY2FuIGJlIHVzZWQgdG8gZGlyZWN0bHkgc2V0Ci1hdHRyaWJ1dGVzIG9mIGEgZmllbGQgb3IgeW91IGNhbiBjaG9vc2UgdG8gc3dpdGNoIGEgZmV3IGF0dHJpYnV0ZXMKLW9uIGFuZCBvZmYgd2l0aCBmaWVsZF9vcHRzX29uKCkgYW5kIGZpZWxkX29wdHNfb2ZmKCkgc2VsZWN0aXZlbHkuCi1Bbnl0aW1lIHlvdSBjYW4gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYSBmaWVsZCB3aXRoIGZpZWxkX29wdHMoKS4KLVRoZSBmb2xsb3dpbmcgaXMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuIEJ5IGRlZmF1bHQsIGFsbAotb3B0aW9ucyBhcmUgb24uPC9wPgotPGRpdiBjbGFzcz0iVkFSSUFCTEVMSVNUIj4KLTxkbD4KLTxkdD5PX1ZJU0lCTEU8L2R0PgotPGRkPgotPHA+Q29udHJvbHMgd2hldGhlciB0aGUgZmllbGQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuLiBDYW4gYmUgdXNlZAotZHVyaW5nIGZvcm0gcHJvY2Vzc2luZyB0byBoaWRlIG9yIHBvcCB1cCBmaWVsZHMgZGVwZW5kaW5nIG9uIHRoZQotdmFsdWUgb2YgcGFyZW50IGZpZWxkcy48L3A+Ci08L2RkPgotPGR0Pk9fQUNUSVZFPC9kdD4KLTxkZD4KLTxwPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIGFjdGl2ZSBkdXJpbmcgZm9ybXMgcHJvY2Vzc2luZwotKGkuZS4gdmlzaXRlZCBieSBmb3JtIG5hdmlnYXRpb24ga2V5cykuIENhbiBiZSB1c2VkIHRvIG1ha2UgbGFiZWxzCi1vciBkZXJpdmVkIGZpZWxkcyB3aXRoIGJ1ZmZlciB2YWx1ZXMgYWx0ZXJhYmxlIGJ5IHRoZSBmb3JtcwotYXBwbGljYXRpb24sIG5vdCB0aGUgdXNlci48L3A+Ci08L2RkPgotPGR0Pk9fUFVCTElDPC9kdD4KLTxkZD4KLTxwPkNvbnRyb2xzIHdoZXRoZXIgZGF0YSBpcyBkaXNwbGF5ZWQgZHVyaW5nIGZpZWxkIGVudHJ5LiBJZiB0aGlzCi1vcHRpb24gaXMgdHVybmVkIG9mZiBvbiBhIGZpZWxkLCB0aGUgbGlicmFyeSB3aWxsIGFjY2VwdCBhbmQgZWRpdAotZGF0YSBpbiB0aGF0IGZpZWxkLCBidXQgaXQgd2lsbCBub3QgYmUgZGlzcGxheWVkIGFuZCB0aGUgdmlzaWJsZQotZmllbGQgY3Vyc29yIHdpbGwgbm90IG1vdmUuIFlvdSBjYW4gdHVybiBvZmYgdGhlIE9fUFVCTElDIGJpdCB0bwotZGVmaW5lIHBhc3N3b3JkIGZpZWxkcy48L3A+Ci08L2RkPgotPGR0Pk9fRURJVDwvZHQ+Ci08ZGQ+Ci08cD5Db250cm9scyB3aGV0aGVyIHRoZSBmaWVsZCdzIGRhdGEgY2FuIGJlIG1vZGlmaWVkLiBXaGVuIHRoaXMKLW9wdGlvbiBpcyBvZmYsIGFsbCBlZGl0aW5nIHJlcXVlc3RzIGV4Y2VwdCA8dmFyIGNsYXNzPQotIkxJVEVSQUwiPlJFUV9QUkVWX0NIT0lDRTwvdmFyPiBhbmQgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5SRVFfTkVYVF9DSE9JQ0U8L3Zhcj53aWxsIGZhaWwuIFN1Y2ggcmVhZC1vbmx5IGZpZWxkcyBtYXkKLWJlIHVzZWZ1bCBmb3IgaGVscCBtZXNzYWdlcy48L3A+Ci08L2RkPgotPGR0Pk9fV1JBUDwvZHQ+Ci08ZGQ+Ci08cD5Db250cm9scyB3b3JkLXdyYXBwaW5nIGluIG11bHRpLWxpbmUgZmllbGRzLiBOb3JtYWxseSwgd2hlbiBhbnkKLWNoYXJhY3RlciBvZiBhIChibGFuay1zZXBhcmF0ZWQpIHdvcmQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZQotY3VycmVudCBsaW5lLCB0aGUgZW50aXJlIHdvcmQgaXMgd3JhcHBlZCB0byB0aGUgbmV4dCBsaW5lIChhc3N1bWluZwotdGhlcmUgaXMgb25lKS4gV2hlbiB0aGlzIG9wdGlvbiBpcyBvZmYsIHRoZSB3b3JkIHdpbGwgYmUgc3BsaXQKLWFjcm9zcyB0aGUgbGluZSBicmVhay48L3A+Ci08L2RkPgotPGR0Pk9fQkxBTks8L2R0PgotPGRkPgotPHA+Q29udHJvbHMgZmllbGQgYmxhbmtpbmcuIFdoZW4gdGhpcyBvcHRpb24gaXMgb24sIGVudGVyaW5nIGEKLWNoYXJhY3RlciBhdCB0aGUgZmlyc3QgZmllbGQgcG9zaXRpb24gZXJhc2VzIHRoZSBlbnRpcmUgZmllbGQKLShleGNlcHQgZm9yIHRoZSBqdXN0LWVudGVyZWQgY2hhcmFjdGVyKS48L3A+Ci08L2RkPgotPGR0Pk9fQVVUT1NLSVA8L2R0PgotPGRkPgotPHA+Q29udHJvbHMgYXV0b21hdGljIHNraXAgdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgb25lIGZpbGxzLgotTm9ybWFsbHksIHdoZW4gdGhlIGZvcm1zIHVzZXIgdHJpZXMgdG8gdHlwZSBtb3JlIGRhdGEgaW50byBhIGZpZWxkCi10aGFuIHdpbGwgZml0LCB0aGUgZWRpdGluZyBsb2NhdGlvbiBqdW1wcyB0byBuZXh0IGZpZWxkLiBXaGVuIHRoaXMKLW9wdGlvbiBpcyBvZmYsIHRoZSB1c2VyJ3MgY3Vyc29yIHdpbGwgaGFuZyBhdCB0aGUgZW5kIG9mIHRoZSBmaWVsZC4KLVRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaW4gZHluYW1pYyBmaWVsZHMgdGhhdCBoYXZlIG5vdCByZWFjaGVkCi10aGVpciBzaXplIGxpbWl0LjwvcD4KLTwvZGQ+Ci08ZHQ+T19OVUxMT0s8L2R0PgotPGRkPgotPHA+Q29udHJvbHMgd2hldGhlciB2YWxpZGF0aW9uIGlzIGFwcGxpZWQgdG8gYmxhbmsgZmllbGRzLgotTm9ybWFsbHksIGl0IGlzIG5vdDsgdGhlIHVzZXIgY2FuIGxlYXZlIGEgZmllbGQgYmxhbmsgd2l0aG91dAotaW52b2tpbmcgdGhlIHVzdWFsIHZhbGlkYXRpb24gY2hlY2sgb24gZXhpdC4gSWYgdGhpcyBvcHRpb24gaXMgb2ZmCi1vbiBhIGZpZWxkLCBleGl0IGZyb20gaXQgd2lsbCBpbnZva2UgYSB2YWxpZGF0aW9uIGNoZWNrLjwvcD4KLTwvZGQ+Ci08ZHQ+T19QQVNTT0s8L2R0PgotPGRkPgotPHA+Q29udHJvbHMgd2hldGhlciB2YWxpZGF0aW9uIG9jY3VycyBvbiBldmVyeSBleGl0LCBvciBvbmx5IGFmdGVyCi10aGUgZmllbGQgaXMgbW9kaWZpZWQuIE5vcm1hbGx5IHRoZSBsYXR0ZXIgaXMgdHJ1ZS4gU2V0dGluZwotT19QQVNTT0sgbWF5IGJlIHVzZWZ1bCBpZiB5b3VyIGZpZWxkJ3MgdmFsaWRhdGlvbiBmdW5jdGlvbiBtYXkKLWNoYW5nZSBkdXJpbmcgZm9ybXMgcHJvY2Vzc2luZy48L3A+Ci08L2RkPgotPGR0Pk9fU1RBVElDPC9kdD4KLTxkZD4KLTxwPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIGZpeGVkIHRvIGl0cyBpbml0aWFsIGRpbWVuc2lvbnMuCi1JZiB5b3UgdHVybiB0aGlzIG9mZiwgdGhlIGZpZWxkIGJlY29tZXMgZHluYW1pYyBhbmQgd2lsbCBzdHJldGNoIHRvCi1maXQgZW50ZXJlZCBkYXRhLjwvcD4KLTwvZGQ+Ci08L2RsPgotPC9kaXY+Ci08cD5BIGZpZWxkJ3Mgb3B0aW9ucyBjYW5ub3QgYmUgY2hhbmdlZCB3aGlsZSB0aGUgZmllbGQgaXMgY3VycmVudGx5Ci1zZWxlY3RlZC4gSG93ZXZlciwgb3B0aW9ucyBtYXkgYmUgY2hhbmdlZCBvbiBwb3N0ZWQgZmllbGRzIHRoYXQgYXJlCi1ub3QgY3VycmVudC48L3A+Ci08cD5UaGUgb3B0aW9uIHZhbHVlcyBhcmUgYml0LW1hc2tzIGFuZCBjYW4gYmUgY29tcG9zZWQgd2l0aAotbG9naWNhbC1vciBpbiB0aGUgb2J2aW91cyB3YXkuIFlvdSBoYXZlIHNlZW4gdGhlIHVzYWdlIG9mIHN3aXRjaGluZwotb2ZmIE9fQVVUT1NLSVAgb3B0aW9uLiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY2xhcmlmaWVzIHVzYWdlIG9mCi1zb21lIG1vcmUgb3B0aW9ucy4gT3RoZXIgb3B0aW9ucyBhcmUgZXhwbGFpbmVkIHdoZXJlCi1hcHByb3ByaWF0ZS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJGRk9PUCIgaWQ9IkZGT09QIj48L2E+Ci08cD48Yj5FeGFtcGxlIDI3LiBGaWVsZCBPcHRpb25zIFVzYWdlIGV4YW1wbGU8L2I+PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIGNsYXNzPQotIklOTElORU1FRElBT0JKRUNUIj4jaW5jbHVkZSAmbHQ7Zm9ybS5oJmd0OworaW50IGZpZWxkX29wdHMoRklFTEQgKmZpZWxkKTsgICAgICAgICAgICAgLyogZmllbGQgdG8gcXVlcnkgKi8gPC9QUkUKKz48UAorPlRoZSBmdW5jdGlvbiBzZXRfZmllbGRfb3B0cygpIGNhbiBiZSB1c2VkIHRvIGRpcmVjdGx5IHNldCBhdHRyaWJ1dGVzIG9mIGEgZmllbGQKK29yIHlvdSBjYW4gY2hvb3NlIHRvIHN3aXRjaCBhIGZldyBhdHRyaWJ1dGVzIG9uIGFuZCBvZmYgd2l0aCBmaWVsZF9vcHRzX29uKCkgYW5kCitmaWVsZF9vcHRzX29mZigpIHNlbGVjdGl2ZWx5LiBBbnl0aW1lIHlvdSBjYW4gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYSBmaWVsZAord2l0aCBmaWVsZF9vcHRzKCkuIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuIEJ5IGRlZmF1bHQsCithbGwgb3B0aW9ucyBhcmUgb24uPC9QCis+PFAKKz48L1AKKz48RElWCitDTEFTUz0iVkFSSUFCTEVMSVNUIgorPjxETAorPjxEVAorPk9fVklTSUJMRTwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIHZpc2libGUgb24gdGhlIHNjcmVlbi4gIENhbiBiZSB1c2VkCitkdXJpbmcgZm9ybSBwcm9jZXNzaW5nIHRvIGhpZGUgb3IgcG9wIHVwIGZpZWxkcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlCitvZiBwYXJlbnQgZmllbGRzLjwvUAorPjwvREQKKz48RFQKKz5PX0FDVElWRTwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIGFjdGl2ZSBkdXJpbmcgZm9ybXMgcHJvY2Vzc2luZyAoaS5lLgordmlzaXRlZCBieSBmb3JtIG5hdmlnYXRpb24ga2V5cykuICBDYW4gYmUgdXNlZCB0byBtYWtlIGxhYmVscyBvciBkZXJpdmVkCitmaWVsZHMgd2l0aCBidWZmZXIgdmFsdWVzIGFsdGVyYWJsZSBieSB0aGUgZm9ybXMgYXBwbGljYXRpb24sIG5vdCB0aGUgdXNlci48L1AKKz48L0RECis+PERUCis+T19QVUJMSUM8L0RUCis+PERECis+PFAKKz5Db250cm9scyB3aGV0aGVyIGRhdGEgaXMgZGlzcGxheWVkIGR1cmluZyBmaWVsZCBlbnRyeS4gIElmIHRoaXMgb3B0aW9uIGlzCit0dXJuZWQgb2ZmIG9uIGEgZmllbGQsIHRoZSBsaWJyYXJ5IHdpbGwgYWNjZXB0IGFuZCBlZGl0IGRhdGEgaW4gdGhhdCBmaWVsZCwKK2J1dCBpdCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQgYW5kIHRoZSB2aXNpYmxlIGZpZWxkIGN1cnNvciB3aWxsIG5vdCBtb3ZlLgorWW91IGNhbiB0dXJuIG9mZiB0aGUgT19QVUJMSUMgYml0IHRvIGRlZmluZSBwYXNzd29yZCBmaWVsZHMuPC9QCis+PC9ERAorPjxEVAorPk9fRURJVDwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkJ3MgZGF0YSBjYW4gYmUgbW9kaWZpZWQuICBXaGVuIHRoaXMgb3B0aW9uIGlzCitvZmYsIGFsbCBlZGl0aW5nIHJlcXVlc3RzIGV4Y2VwdCA8VFQKK0NMQVNTPSJMSVRFUkFMIgorPlJFUV9QUkVWX0NIT0lDRTwvVFQKKz4gYW5kIDxUVAorQ0xBU1M9IkxJVEVSQUwiCis+UkVRX05FWFRfQ0hPSUNFPC9UVAorPndpbGwgCitmYWlsLiAgU3VjaCByZWFkLW9ubHkgZmllbGRzIG1heSBiZSB1c2VmdWwgZm9yIGhlbHAgbWVzc2FnZXMuPC9QCis+PC9ERAorPjxEVAorPk9fV1JBUDwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIHdvcmQtd3JhcHBpbmcgaW4gbXVsdGktbGluZSBmaWVsZHMuICBOb3JtYWxseSwgd2hlbiBhbnkKK2NoYXJhY3RlciBvZiBhIChibGFuay1zZXBhcmF0ZWQpIHdvcmQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUsIHRoZQorZW50aXJlIHdvcmQgaXMgd3JhcHBlZCB0byB0aGUgbmV4dCBsaW5lIChhc3N1bWluZyB0aGVyZSBpcyBvbmUpLiAgV2hlbiB0aGlzCitvcHRpb24gaXMgb2ZmLCB0aGUgd29yZCB3aWxsIGJlIHNwbGl0IGFjcm9zcyB0aGUgbGluZSBicmVhay48L1AKKz48L0RECis+PERUCis+T19CTEFOSzwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIGZpZWxkIGJsYW5raW5nLiAgV2hlbiB0aGlzIG9wdGlvbiBpcyBvbiwgZW50ZXJpbmcgYSBjaGFyYWN0ZXIgYXQKK3RoZSBmaXJzdCBmaWVsZCBwb3NpdGlvbiBlcmFzZXMgdGhlIGVudGlyZSBmaWVsZCAoZXhjZXB0IGZvciB0aGUganVzdC1lbnRlcmVkCitjaGFyYWN0ZXIpLjwvUAorPjwvREQKKz48RFQKKz5PX0FVVE9TS0lQPC9EVAorPjxERAorPjxQCis+Q29udHJvbHMgYXV0b21hdGljIHNraXAgdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgb25lIGZpbGxzLiAgTm9ybWFsbHksCit3aGVuIHRoZSBmb3JtcyB1c2VyIHRyaWVzIHRvIHR5cGUgbW9yZSBkYXRhIGludG8gYSBmaWVsZCB0aGFuIHdpbGwgZml0LAordGhlIGVkaXRpbmcgbG9jYXRpb24ganVtcHMgdG8gbmV4dCBmaWVsZC4gIFdoZW4gdGhpcyBvcHRpb24gaXMgb2ZmLCB0aGUKK3VzZXIncyBjdXJzb3Igd2lsbCBoYW5nIGF0IHRoZSBlbmQgb2YgdGhlIGZpZWxkLiAgVGhpcyBvcHRpb24gaXMgaWdub3JlZAoraW4gZHluYW1pYyBmaWVsZHMgdGhhdCBoYXZlIG5vdCByZWFjaGVkIHRoZWlyIHNpemUgbGltaXQuPC9QCis+PC9ERAorPjxEVAorPk9fTlVMTE9LPC9EVAorPjxERAorPjxQCis+Q29udHJvbHMgd2hldGhlciB2YWxpZGF0aW9uIGlzIGFwcGxpZWQgdG8KK2JsYW5rIGZpZWxkcy4gIE5vcm1hbGx5LCBpdCBpcyBub3Q7IHRoZSB1c2VyIGNhbiBsZWF2ZSBhIGZpZWxkIGJsYW5rCit3aXRob3V0IGludm9raW5nIHRoZSB1c3VhbCB2YWxpZGF0aW9uIGNoZWNrIG9uIGV4aXQuICBJZiB0aGlzIG9wdGlvbiBpcworb2ZmIG9uIGEgZmllbGQsIGV4aXQgZnJvbSBpdCB3aWxsIGludm9rZSBhIHZhbGlkYXRpb24gY2hlY2suPC9QCis+PC9ERAorPjxEVAorPk9fUEFTU09LPC9EVAorPjxERAorPjxQCis+Q29udHJvbHMgd2hldGhlciB2YWxpZGF0aW9uIG9jY3VycyBvbiBldmVyeSBleGl0LCBvciBvbmx5IGFmdGVyCit0aGUgZmllbGQgaXMgbW9kaWZpZWQuICBOb3JtYWxseSB0aGUgbGF0dGVyIGlzIHRydWUuICBTZXR0aW5nIE9fUEFTU09LCittYXkgYmUgdXNlZnVsIGlmIHlvdXIgZmllbGQncyB2YWxpZGF0aW9uIGZ1bmN0aW9uIG1heSBjaGFuZ2UgZHVyaW5nCitmb3JtcyBwcm9jZXNzaW5nLjwvUAorPjwvREQKKz48RFQKKz5PX1NUQVRJQzwvRFQKKz48REQKKz48UAorPkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIGZpeGVkIHRvIGl0cyBpbml0aWFsIGRpbWVuc2lvbnMuICBJZiB5b3UKK3R1cm4gdGhpcyBvZmYsIHRoZSBmaWVsZCBiZWNvbWVzIGR5bmFtaWMgYW5kIHdpbGwKK3N0cmV0Y2ggdG8gZml0IGVudGVyZWQgZGF0YS48L1AKKz48L0RECis+PC9ETAorPjwvRElWCis+PFAKKz5BIGZpZWxkJ3Mgb3B0aW9ucyBjYW5ub3QgYmUgY2hhbmdlZCB3aGlsZSB0aGUgZmllbGQgaXMgY3VycmVudGx5IHNlbGVjdGVkLgorSG93ZXZlciwgb3B0aW9ucyBtYXkgYmUgY2hhbmdlZCBvbiBwb3N0ZWQgZmllbGRzIHRoYXQgYXJlIG5vdCBjdXJyZW50LiA8L1AKKz48UAorPlRoZSBvcHRpb24gdmFsdWVzIGFyZSBiaXQtbWFza3MgYW5kIGNhbiBiZSBjb21wb3NlZCB3aXRoIGxvZ2ljYWwtb3IgaW4KK3RoZSBvYnZpb3VzIHdheS4gWW91IGhhdmUgc2VlbiB0aGUgdXNhZ2Ugb2Ygc3dpdGNoaW5nIG9mZiBPX0FVVE9TS0lQIG9wdGlvbi4KK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBjbGFyaWZpZXMgdXNhZ2Ugb2Ygc29tZSBtb3JlIG9wdGlvbnMuIE90aGVyIG9wdGlvbnMKK2FyZSBleHBsYWluZWQgd2hlcmUgYXBwcm9wcmlhdGUuPC9QCis+PERJVgorQ0xBU1M9IkVYQU1QTEUiCis+PEEKK05BTUU9IkZGT09QIgorPjwvQQorPjxQCis+PEIKKz5FeGFtcGxlIDI3LiAgRmllbGQgT3B0aW9ucyBVc2FnZSBleGFtcGxlIDwvQgorPjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz48U1BBTgorQ0xBU1M9IklOTElORU1FRElBT0JKRUNUIgorPiNpbmNsdWRlICYjNjA7Zm9ybS5oJiM2MjsKIAogI2RlZmluZSBTVEFSVFggMTUKICNkZWZpbmUgU1RBUlRZIDQKQEAgLTUxODgsOTc1ICs2ODU2LDE0NzYgQEAKICNkZWZpbmUgTl9GSUVMRFMgMwogCiBpbnQgbWFpbigpCi17ICAgICAgIEZJRUxEICpmaWVsZFtOX0ZJRUxEU107Ci0gICAgICAgIEZPUk0gICpteV9mb3JtOwotICAgICAgICBpbnQgY2gsIGk7Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLwotICAgICAgICBpbml0c2NyKCk7Ci0gICAgICAgIGNicmVhaygpOwotICAgICAgICBub2VjaG8oKTsKLSAgICAgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7Cit7CUZJRUxEICpmaWVsZFtOX0ZJRUxEU107CisJRk9STSAgKm15X2Zvcm07CisJaW50IGNoLCBpOworCQorCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCisJaW5pdHNjcigpOworCWNicmVhaygpOworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyAqLwotICAgICAgICBmb3IoaSA9IDA7IGkgJmx0OyBOX0ZJRUxEUyAtIDE7ICsraSkKLSAgICAgICAgICAgICAgICBmaWVsZFtpXSA9IG5ld19maWVsZCgxLCBXSURUSCwgU1RBUlRZICsgaSAqIDIsIFNUQVJUWCwgMCwgMCk7Ci0gICAgICAgIGZpZWxkW05fRklFTERTIC0gMV0gPSBOVUxMOworCS8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyAqLworCWZvcihpID0gMDsgaSAmIzYwOyBOX0ZJRUxEUyAtIDE7ICsraSkKKwkJZmllbGRbaV0gPSBuZXdfZmllbGQoMSwgV0lEVEgsIFNUQVJUWSArIGkgKiAyLCBTVEFSVFgsIDAsIDApOworCWZpZWxkW05fRklFTERTIC0gMV0gPSBOVUxMOwogCi0gICAgICAgIC8qIFNldCBmaWVsZCBvcHRpb25zICovCi0gICAgICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzFdLCBBX1VOREVSTElORSk7ICAvKiBQcmludCBhIGxpbmUgZm9yIHRoZSBvcHRpb24gICovCi0gICAgICAgIAotICAgICAgICBmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BQ1RJVkUpOyAvKiBUaGlzIGZpZWxkIGlzIGEgc3RhdGljIGxhYmVsICovCi0gICAgICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkWzFdLCBPX1BVQkxJQyk7IC8qIFRoaXMgZmlsZWQgaXMgbGlrZSBhIHBhc3N3b3JkIGZpZWxkKi8KLSAgICAgICAgZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fQVVUT1NLSVApOyAvKiBUbyBhdm9pZCBlbnRlcmluZyB0aGUgc2FtZSBmaWVsZCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFmdGVyIGxhc3QgY2hhcmFjdGVyIGlzIGVudGVyZWQgKi8KLSAgICAgICAgCi0gICAgICAgIC8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLwotICAgICAgICBteV9mb3JtID0gbmV3X2Zvcm0oZmllbGQpOwotICAgICAgICBwb3N0X2Zvcm0obXlfZm9ybSk7Ci0gICAgICAgIHJlZnJlc2goKTsKLSAgICAgICAgCi0gICAgICAgIHNldF9maWVsZF9qdXN0KGZpZWxkWzBdLCBKVVNUSUZZX0NFTlRFUik7IC8qIENlbnRlciBKdXN0aWZpY2F0aW9uICovCi0gICAgICAgIHNldF9maWVsZF9idWZmZXIoZmllbGRbMF0sIDAsICJUaGlzIGlzIGEgc3RhdGljIEZpZWxkIik7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBmaWVsZCAgKi8KLSAgICAgICAgbXZwcmludHcoU1RBUlRZLCBTVEFSVFggLSAxMCwgIkZpZWxkIDE6Iik7Ci0gICAgICAgIG12cHJpbnR3KFNUQVJUWSArIDIsIFNUQVJUWCAtIDEwLCAiRmllbGQgMjoiKTsKLSAgICAgICAgcmVmcmVzaCgpOworCS8qIFNldCBmaWVsZCBvcHRpb25zICovCisJc2V0X2ZpZWxkX2JhY2soZmllbGRbMV0sIEFfVU5ERVJMSU5FKTsgCS8qIFByaW50IGEgbGluZSBmb3IgdGhlIG9wdGlvbiAJKi8KKwkKKwlmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BQ1RJVkUpOyAvKiBUaGlzIGZpZWxkIGlzIGEgc3RhdGljIGxhYmVsICovCisJZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fUFVCTElDKTsgLyogVGhpcyBmaWxlZCBpcyBsaWtlIGEgcGFzc3dvcmQgZmllbGQqLworCWZpZWxkX29wdHNfb2ZmKGZpZWxkWzFdLCBPX0FVVE9TS0lQKTsgLyogVG8gYXZvaWQgZW50ZXJpbmcgdGhlIHNhbWUgZmllbGQgKi8KKwkJCQkJICAgICAgLyogYWZ0ZXIgbGFzdCBjaGFyYWN0ZXIgaXMgZW50ZXJlZCAqLworCQorCS8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLworCW15X2Zvcm0gPSBuZXdfZm9ybShmaWVsZCk7CisJcG9zdF9mb3JtKG15X2Zvcm0pOworCXJlZnJlc2goKTsKKwkKKwlzZXRfZmllbGRfanVzdChmaWVsZFswXSwgSlVTVElGWV9DRU5URVIpOyAvKiBDZW50ZXIgSnVzdGlmaWNhdGlvbiAqLworCXNldF9maWVsZF9idWZmZXIoZmllbGRbMF0sIDAsICJUaGlzIGlzIGEgc3RhdGljIEZpZWxkIik7IAorCQkJCQkJICAvKiBJbml0aWFsaXplIHRoZSBmaWVsZCAgKi8KKwltdnByaW50dyhTVEFSVFksIFNUQVJUWCAtIDEwLCAiRmllbGQgMToiKTsKKwltdnByaW50dyhTVEFSVFkgKyAyLCBTVEFSVFggLSAxMCwgIkZpZWxkIDI6Iik7CisJcmVmcmVzaCgpOwogCi0gICAgICAgIC8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLwotICAgICAgICB3aGlsZSgoY2ggPSBnZXRjaCgpKSAhPSBLRVlfRigxKSkKLSAgICAgICAgeyAgICAgICBzd2l0Y2goY2gpCi0gICAgICAgICAgICAgICAgeyAgICAgICBjYXNlIEtFWV9ET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byBuZXh0IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gdGhlIGVuZCBvZiB0aGUgcHJlc2VudCBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVhdmVzIG5pY2VseSBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEtFWV9VUDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR28gdG8gcHJldmlvdXMgZmllbGQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfRU5EX0xJTkUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFByaW50ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBjaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCS8qIExvb3AgdGhyb3VnaCB0byBnZXQgdXNlciByZXF1ZXN0cyAqLworCXdoaWxlKChjaCA9IGdldGNoKCkpICE9IEtFWV9GKDEpKQorCXsJc3dpdGNoKGNoKQorCQl7CWNhc2UgS0VZX0RPV046CisJCQkJLyogR28gdG8gbmV4dCBmaWVsZCAqLworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9ORVhUX0ZJRUxEKTsKKwkJCQkvKiBHbyB0byB0aGUgZW5kIG9mIHRoZSBwcmVzZW50IGJ1ZmZlciAqLworCQkJCS8qIExlYXZlcyBuaWNlbHkgYXQgdGhlIGxhc3QgY2hhcmFjdGVyICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgS0VZX1VQOgorCQkJCS8qIEdvIHRvIHByZXZpb3VzIGZpZWxkICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX1BSRVZfRklFTEQpOworCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9FTkRfTElORSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIElmIHRoaXMgaXMgYSBub3JtYWwgY2hhcmFjdGVyLCBpdCBnZXRzICovCisJCQkJLyogUHJpbnRlZAkJCQkgICovCQorCQkJCWZvcm1fZHJpdmVyKG15X2Zvcm0sIGNoKTsKKwkJCQlicmVhazsKKwkJfQorCX0KIAotICAgICAgICAvKiBVbiBwb3N0IGZvcm0gYW5kIGZyZWUgdGhlIG1lbW9yeSAqLwotICAgICAgICB1bnBvc3RfZm9ybShteV9mb3JtKTsKLSAgICAgICAgZnJlZV9mb3JtKG15X2Zvcm0pOwotICAgICAgICBmcmVlX2ZpZWxkKGZpZWxkWzBdKTsKLSAgICAgICAgZnJlZV9maWVsZChmaWVsZFsxXSk7IAorCS8qIFVuIHBvc3QgZm9ybSBhbmQgZnJlZSB0aGUgbWVtb3J5ICovCisJdW5wb3N0X2Zvcm0obXlfZm9ybSk7CisJZnJlZV9mb3JtKG15X2Zvcm0pOworCWZyZWVfZmllbGQoZmllbGRbMF0pOworCWZyZWVfZmllbGQoZmllbGRbMV0pOyAKIAotICAgICAgICBlbmR3aW4oKTsKLSAgICAgICAgcmV0dXJuIDA7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPHA+VGhpcyBleGFtcGxlLCB0aG91Z2ggdXNlbGVzcywgc2hvd3MgdGhlIHVzYWdlIG9mIG9wdGlvbnMuIElmCi11c2VkIHByb3Blcmx5LCB0aGV5IGNhbiBwcmVzZW50IGluZm9ybWF0aW9uIHZlcnkgZWZmZWN0aXZlbHkgaW4gYQotZm9ybS4gVGhlIHNlY29uZCBmaWVsZCBiZWluZyBub3QgT19QVUJMSUMsIGRvZXMgbm90IHNob3cgdGhlCi1jaGFyYWN0ZXJzIHlvdSBhcmUgdHlwaW5nLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iRklFTERTVEFUVVMiIGlkPSJGSUVMRFNUQVRVUyI+MTguMy42LgotRmllbGQgU3RhdHVzPC9hPjwvaDQ+Ci08cD5UaGUgZmllbGQgc3RhdHVzIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBmaWVsZCBoYXMgZ290IGVkaXRlZCBvcgotbm90LiBJdCBpcyBpbml0aWFsbHkgc2V0IHRvIEZBTFNFIGFuZCB3aGVuIHVzZXIgZW50ZXJzIHNvbWV0aGluZwotYW5kIHRoZSBkYXRhIGJ1ZmZlciBnZXRzIG1vZGlmaWVkIGl0IGJlY29tZXMgVFJVRS4gU28gYSBmaWVsZCdzCi1zdGF0dXMgY2FuIGJlIHF1ZXJpZWQgdG8gZmluZCBvdXQgd2hldGhlciBpdCBoYXMgYmVlbiBtb2RpZmllZCBvcgotbm90LiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBjYW4gYXNzaXN0IGluIHRob3NlIG9wZXJhdGlvbnMuPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+aW50IHNldF9maWVsZF9zdGF0dXMoRklFTEQgKmZpZWxkLCAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCisJZW5kd2luKCk7CisJcmV0dXJuIDA7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjxQCis+VGhpcyBleGFtcGxlLCB0aG91Z2ggdXNlbGVzcywgc2hvd3MgdGhlIHVzYWdlIG9mIG9wdGlvbnMuIElmIHVzZWQgcHJvcGVybHksIHRoZXkKK2NhbiBwcmVzZW50IGluZm9ybWF0aW9uIHZlcnkgZWZmZWN0aXZlbHkgaW4gYSBmb3JtLiBUaGUgc2Vjb25kIGZpZWxkIGJlaW5nIG5vdAorT19QVUJMSUMsIGRvZXMgbm90IHNob3cgdGhlIGNoYXJhY3RlcnMgeW91IGFyZSB0eXBpbmcuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJGSUVMRFNUQVRVUyIKKz4xOC4zLjYuIEZpZWxkIFN0YXR1czwvQQorPjwvSDQKKz48UAorPlRoZSBmaWVsZCBzdGF0dXMgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZpZWxkIGhhcyBnb3QgZWRpdGVkIG9yIG5vdC4gSXQgaXMKK2luaXRpYWxseSBzZXQgdG8gRkFMU0UgYW5kIHdoZW4gdXNlciBlbnRlcnMgc29tZXRoaW5nIGFuZCB0aGUgZGF0YSBidWZmZXIgZ2V0cworbW9kaWZpZWQgaXQgYmVjb21lcyBUUlVFLiBTbyBhIGZpZWxkJ3Mgc3RhdHVzIGNhbiBiZSBxdWVyaWVkIHRvIGZpbmQgb3V0IHdoZXRoZXIKK2l0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIG5vdC4gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY2FuIGFzc2lzdCBpbiB0aG9zZQorb3BlcmF0aW9ucy48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF9zdGF0dXMoRklFTEQgKmZpZWxkLCAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCiAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cyk7ICAgICAgICAgLyogc3RhdHVzIHRvIHNldCAqLwogCi1pbnQgZmllbGRfc3RhdHVzKEZJRUxEICpmaWVsZCk7ICAgICAgICAgLyogZmV0Y2ggc3RhdHVzIG9mIGZpZWxkICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+SXQncyBiZXR0ZXIgdG8gY2hlY2sgdGhlIGZpZWxkJ3Mgc3RhdHVzIG9ubHkgYWZ0ZXIgYWZ0ZXIgbGVhdmluZwotdGhlIGZpZWxkLCBhcyBkYXRhIGJ1ZmZlciBtaWdodCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQgeWV0IGFzIHRoZQotdmFsaWRhdGlvbiBpcyBzdGlsbCBkdWUuIFRvIGd1YXJhbnRlZSB0aGF0IHJpZ2h0IHN0YXR1cyBpcwotcmV0dXJuZWQsIGNhbGwgZmllbGRfc3RhdHVzKCkgZWl0aGVyICgxKSBpbiB0aGUgZmllbGQncyBleGl0Ci12YWxpZGF0aW9uIGNoZWNrIHJvdXRpbmUsICgyKSBmcm9tIHRoZSBmaWVsZCdzIG9yIGZvcm0ncwotaW5pdGlhbGl6YXRpb24gb3IgdGVybWluYXRpb24gaG9va3MsIG9yICgzKSBqdXN0IGFmdGVyIGEKLVJFUV9WQUxJREFUSU9OIHJlcXVlc3QgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBmb3JtcyBkcml2ZXI8L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IkZJRUxEVVNFUlBUUiIgaWQ9IkZJRUxEVVNFUlBUUiI+MTguMy43LgotRmllbGQgVXNlciBQb2ludGVyPC9hPjwvaDQ+Ci08cD5FdmVyeSBmaWVsZCBzdHJ1Y3R1cmUgY29udGFpbnMgb25lIHBvaW50ZXIgdGhhdCBjYW4gYmUgdXNlZCBieQotdGhlIHVzZXIgZm9yIHZhcmlvdXMgcHVycG9zZXMuIEl0IGlzIG5vdCB0b3VjaGVkIGJ5IGZvcm1zIGxpYnJhcnkKLWFuZCBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UgYnkgdGhlIHVzZXIuIFRoZSBmb2xsb3dpbmcKLWZ1bmN0aW9ucyBzZXQgYW5kIGZldGNoIHVzZXIgcG9pbnRlci48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+aW50IHNldF9maWVsZF91c2VycHRyKEZJRUxEICpmaWVsZCwgICAKK2ludCBmaWVsZF9zdGF0dXMoRklFTEQgKmZpZWxkKTsgICAgICAgICAvKiBmZXRjaCBzdGF0dXMgb2YgZmllbGQgKi88L1BSRQorPjxQCis+SXQncyBiZXR0ZXIgdG8gY2hlY2sgdGhlIGZpZWxkJ3Mgc3RhdHVzIG9ubHkgYWZ0ZXIgYWZ0ZXIgbGVhdmluZyB0aGUgZmllbGQsIGFzCitkYXRhIGJ1ZmZlciBtaWdodCBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQgeWV0IGFzIHRoZSB2YWxpZGF0aW9uIGlzIHN0aWxsIGR1ZS4gVG8KK2d1YXJhbnRlZSB0aGF0IHJpZ2h0IHN0YXR1cyBpcyByZXR1cm5lZCwgY2FsbCBmaWVsZF9zdGF0dXMoKSBlaXRoZXIgKDEpIGluIHRoZQorZmllbGQncyBleGl0IHZhbGlkYXRpb24gY2hlY2sgcm91dGluZSwgKDIpIGZyb20gdGhlIGZpZWxkJ3Mgb3IgZm9ybSdzCitpbml0aWFsaXphdGlvbiBvciB0ZXJtaW5hdGlvbiBob29rcywgb3IgKDMpIGp1c3QgYWZ0ZXIgYSBSRVFfVkFMSURBVElPTiByZXF1ZXN0CitoYXMgYmVlbiBwcm9jZXNzZWQgYnkgdGhlIGZvcm1zIGRyaXZlcjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QzIgorPjxIUj48SDQKK0NMQVNTPSJTRUNUMyIKKz48QQorTkFNRT0iRklFTERVU0VSUFRSIgorPjE4LjMuNy4gRmllbGQgVXNlciBQb2ludGVyPC9BCis+PC9INAorPjxQCis+RXZlcnkgZmllbGQgc3RydWN0dXJlIGNvbnRhaW5zIG9uZSBwb2ludGVyIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIHVzZXIgZm9yCit2YXJpb3VzIHB1cnBvc2VzLiBJdCBpcyBub3QgdG91Y2hlZCBieSBmb3JtcyBsaWJyYXJ5IGFuZCBjYW4gYmUgdXNlZCBmb3IgYW55CitwdXJwb3NlIGJ5IHRoZSB1c2VyLiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZXQgYW5kIGZldGNoIHVzZXIgcG9pbnRlci48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF91c2VycHRyKEZJRUxEICpmaWVsZCwgICAKICAgICAgICAgICAgY2hhciAqdXNlcnB0cik7ICAgICAgLyogdGhlIHVzZXIgcG9pbnRlciB5b3Ugd2lzaCB0byBhc3NvY2lhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2l0aCB0aGUgZmllbGQgICAgKi8KIAotY2hhciAqZmllbGRfdXNlcnB0cihGSUVMRCAqZmllbGQpOyAgICAgIC8qIGZldGNoIHVzZXIgcG9pbnRlciBvZiB0aGUgZmllbGQgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IlZBUklBQkxFU0laRUZJRUxEUyIgaWQ9Ci0iVkFSSUFCTEVTSVpFRklFTERTIj4xOC4zLjguIFZhcmlhYmxlLVNpemVkIEZpZWxkczwvYT48L2g0PgotPHA+SWYgeW91IHdhbnQgYSBkeW5hbWljYWxseSBjaGFuZ2luZyBmaWVsZCB3aXRoIHZhcmlhYmxlIHdpZHRoLAotdGhpcyBpcyB0aGUgZmVhdHVyZSB5b3Ugd2FudCB0byBwdXQgdG8gZnVsbCB1c2UuIFRoaXMgd2lsbCBhbGxvdwotdGhlIHVzZXIgdG8gZW50ZXIgbW9yZSBkYXRhIHRoYW4gdGhlIG9yaWdpbmFsIHNpemUgb2YgdGhlIGZpZWxkIGFuZAotbGV0IHRoZSBmaWVsZCBncm93LiBBY2NvcmRpbmcgdG8gdGhlIGZpZWxkIG9yaWVudGF0aW9uIGl0IHdpbGwKLXNjcm9sbCBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSB0byBpbmNvcnBvcmF0ZSB0aGUgbmV3IGRhdGEuPC9wPgotPHA+VG8gbWFrZSBhIGZpZWxkIGR5bmFtaWNhbGx5IGdyb3dhYmxlLCB0aGUgb3B0aW9uIE9fU1RBVElDIHNob3VsZAotYmUgdHVybmVkIG9mZi4gVGhpcyBjYW4gYmUgZG9uZSB3aXRoIGE8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj4gICAgZmllbGRfb3B0c19vZmYoZmllbGRfcG9pbnRlciwgT19TVEFUSUMpOzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPkJ1dCBpdCdzIHVzdWFsbHkgbm90IGFkdmlzYWJsZSB0byBhbGxvdyBhIGZpZWxkIHRvIGdyb3cKLWluZmluaXRlbHkuIFlvdSBjYW4gc2V0IGEgbWF4aW11bSBsaW1pdCB0byB0aGUgZ3Jvd3RoIG9mIHRoZSBmaWVsZAotd2l0aDwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBzZXRfbWF4X2ZpZWxkKEZJRUxEICpmaWVsZCwgICAgLyogRmllbGQgb24gd2hpY2ggdG8gb3BlcmF0ZSAqLwotICAgICAgICAgICAgICAgICAgaW50IG1heF9ncm93dGgpOyAvKiBtYXhpbXVtIGdyb3d0aCBhbGxvd2VkIGZvciB0aGUgZmllbGQgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGUgZmllbGQgaW5mbyBmb3IgYSBkeW5hbWljYWxseSBncm93YWJsZSBmaWVsZCBjYW4gYmUgcmV0cmlldmVkCi1ieTwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBkeW5hbWljX2ZpZWxkX2luZm8oIEZJRUxEICpmaWVsZCwgICAgIC8qIEZpZWxkIG9uIHdoaWNoIHRvIG9wZXJhdGUgKi8KK2NoYXIgKmZpZWxkX3VzZXJwdHIoRklFTEQgKmZpZWxkKTsgICAgICAvKiBmZXRjaCB1c2VyIHBvaW50ZXIgb2YgdGhlIGZpZWxkICovPC9QUkUKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IlZBUklBQkxFU0laRUZJRUxEUyIKKz4xOC4zLjguIFZhcmlhYmxlLVNpemVkIEZpZWxkczwvQQorPjwvSDQKKz48UAorPklmIHlvdSB3YW50IGEgZHluYW1pY2FsbHkgY2hhbmdpbmcgZmllbGQgd2l0aCB2YXJpYWJsZSB3aWR0aCwgdGhpcyBpcyB0aGUKK2ZlYXR1cmUgeW91IHdhbnQgdG8gcHV0IHRvIGZ1bGwgdXNlLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHVzZXIgdG8gZW50ZXIgbW9yZSBkYXRhCit0aGFuIHRoZSBvcmlnaW5hbCBzaXplIG9mIHRoZSBmaWVsZCBhbmQgbGV0IHRoZSBmaWVsZCBncm93LiBBY2NvcmRpbmcgdG8gdGhlCitmaWVsZCBvcmllbnRhdGlvbiBpdCB3aWxsIHNjcm9sbCBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSB0byBpbmNvcnBvcmF0ZSB0aGUKK25ldyBkYXRhLjwvUAorPjxQCis+VG8gbWFrZSBhIGZpZWxkIGR5bmFtaWNhbGx5IGdyb3dhYmxlLCB0aGUgb3B0aW9uIE9fU1RBVElDIHNob3VsZCBiZSB0dXJuZWQgb2ZmLgorVGhpcyBjYW4gYmUgZG9uZSB3aXRoIGEgCis8UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+ICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkX3BvaW50ZXIsIE9fU1RBVElDKTs8L1BSRQorPjwvUAorPjxQCis+QnV0IGl0J3MgdXN1YWxseSBub3QgYWR2aXNhYmxlIHRvIGFsbG93IGEgZmllbGQgdG8gZ3JvdyBpbmZpbml0ZWx5LiBZb3UgY2FuIHNldAorYSBtYXhpbXVtIGxpbWl0IHRvIHRoZSBncm93dGggb2YgdGhlIGZpZWxkIHdpdGggCis8UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9tYXhfZmllbGQoRklFTEQgKmZpZWxkLCAgICAvKiBGaWVsZCBvbiB3aGljaCB0byBvcGVyYXRlICovCisgICAgICAgICAgICAgICAgICBpbnQgbWF4X2dyb3d0aCk7IC8qIG1heGltdW0gZ3Jvd3RoIGFsbG93ZWQgZm9yIHRoZSBmaWVsZCAqLzwvUFJFCis+PC9QCis+PFAKKz5UaGUgZmllbGQgaW5mbyBmb3IgYSBkeW5hbWljYWxseSBncm93YWJsZSBmaWVsZCBjYW4gYmUgcmV0cmlldmVkIGJ5IAorPFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPmludCBkeW5hbWljX2ZpZWxkX2luZm8oIEZJRUxEICpmaWVsZCwgICAgIC8qIEZpZWxkIG9uIHdoaWNoIHRvIG9wZXJhdGUgKi8KICAgICAgICAgICAgIGludCAgICpwcm93cywgICAgIC8qIG51bWJlciBvZiByb3dzIHdpbGwgYmUgZmlsbGVkIGluIHRoaXMgKi8KICAgICAgICAgICAgIGludCAgICpwY29scywgICAgIC8qIG51bWJlciBvZiBjb2x1bW5zIHdpbGwgYmUgZmlsbGVkIGluIHRoaXMqLwogICAgICAgICAgICAgaW50ICAgKnBtYXgpICAgICAgLyogbWF4aW11bSBhbGxvd2FibGUgZ3Jvd3RoIHdpbGwgYmUgZmlsbGVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbiB0aGlzICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotVGhvdWdoIGZpZWxkX2luZm8gd29yayBhcyB1c3VhbCwgaXQgaXMgYWR2aXNhYmxlIHRvIHVzZSB0aGlzCi1mdW5jdGlvbiB0byBnZXQgdGhlIHByb3BlciBhdHRyaWJ1dGVzIG9mIGEgZHluYW1pY2FsbHkgZ3Jvd2FibGUKLWZpZWxkLgotPHA+UmVjYWxsIHRoZSBsaWJyYXJ5IHJvdXRpbmUgbmV3X2ZpZWxkOyBhIG5ldyBmaWVsZCBjcmVhdGVkIHdpdGgKLWhlaWdodCBzZXQgdG8gb25lIHdpbGwgYmUgZGVmaW5lZCB0byBiZSBhIG9uZSBsaW5lIGZpZWxkLiBBIG5ldwotZmllbGQgY3JlYXRlZCB3aXRoIGhlaWdodCBncmVhdGVyIHRoYW4gb25lIHdpbGwgYmUgZGVmaW5lZCB0byBiZSBhCi1tdWx0aSBsaW5lIGZpZWxkLjwvcD4KLTxwPkEgb25lIGxpbmUgZmllbGQgd2l0aCBPX1NUQVRJQyB0dXJuZWQgb2ZmIChkeW5hbWljYWxseSBncm93YWJsZQotZmllbGQpIHdpbGwgY29udGFpbiBhIHNpbmdsZSBmaXhlZCByb3csIGJ1dCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMKLWNhbiBpbmNyZWFzZSBpZiB0aGUgdXNlciBlbnRlcnMgbW9yZSBkYXRhIHRoYW4gdGhlIGluaXRpYWwgZmllbGQKLXdpbGwgaG9sZC4gVGhlIG51bWJlciBvZiBjb2x1bW5zIGRpc3BsYXllZCB3aWxsIHJlbWFpbiBmaXhlZCBhbmQKLXRoZSBhZGRpdGlvbmFsIGRhdGEgd2lsbCBzY3JvbGwgaG9yaXpvbnRhbGx5LjwvcD4KLTxwPkEgbXVsdGkgbGluZSBmaWVsZCB3aXRoIE9fU1RBVElDIHR1cm5lZCBvZmYgKGR5bmFtaWNhbGx5Ci1ncm93YWJsZSBmaWVsZCkgd2lsbCBjb250YWluIGEgZml4ZWQgbnVtYmVyIG9mIGNvbHVtbnMsIGJ1dCB0aGUKLW51bWJlciBvZiByb3dzIGNhbiBpbmNyZWFzZSBpZiB0aGUgdXNlciBlbnRlcnMgbW9yZSBkYXRhIHRoYW4gdGhlCi1pbml0aWFsIGZpZWxkIHdpbGwgaG9sZC4gVGhlIG51bWJlciBvZiByb3dzIGRpc3BsYXllZCB3aWxsIHJlbWFpbgotZml4ZWQgYW5kIHRoZSBhZGRpdGlvbmFsIGRhdGEgd2lsbCBzY3JvbGwgdmVydGljYWxseS48L3A+Ci08cD5UaGUgYWJvdmUgdHdvIHBhcmFncmFwaHMgcHJldHR5IG11Y2ggZGVzY3JpYmUgYSBkeW5hbWljYWxseQotZ3Jvd2FibGUgZmllbGQncyBiZWhhdmlvci4gVGhlIHdheSBvdGhlciBwYXJ0cyBvZiBmb3JtcyBsaWJyYXJ5Ci1iZWhhdmVzIGlzIGRlc2NyaWJlZCBiZWxvdzo8L3A+Ci08b2wgdHlwZT0iMSI+Ci08bGk+Ci08cD5UaGUgZmllbGQgb3B0aW9uIE9fQVVUT1NLSVAgd2lsbCBiZSBpZ25vcmVkIGlmIHRoZSBvcHRpb24KLU9fU1RBVElDIGlzIG9mZiBhbmQgdGhlcmUgaXMgbm8gbWF4aW11bSBncm93dGggc3BlY2lmaWVkIGZvciB0aGUKLWZpZWxkLiBDdXJyZW50bHksIE9fQVVUT1NLSVAgZ2VuZXJhdGVzIGFuIGF1dG9tYXRpYyBSRVFfTkVYVF9GSUVMRAotZm9ybSBkcml2ZXIgcmVxdWVzdCB3aGVuIHRoZSB1c2VyIHR5cGVzIGluIHRoZSBsYXN0IGNoYXJhY3RlcgotcG9zaXRpb24gb2YgYSBmaWVsZC4gT24gYSBncm93YWJsZSBmaWVsZCB3aXRoIG5vIG1heGltdW0gZ3Jvd3RoCi1zcGVjaWZpZWQsIHRoZXJlIGlzIG5vIGxhc3QgY2hhcmFjdGVyIHBvc2l0aW9uLiBJZiBhIG1heGltdW0gZ3Jvd3RoCi1pcyBzcGVjaWZpZWQsIHRoZSBPX0FVVE9TS0lQIG9wdGlvbiB3aWxsIHdvcmsgYXMgbm9ybWFsIGlmIHRoZQotZmllbGQgaGFzIGdyb3duIHRvIGl0cyBtYXhpbXVtIHNpemUuPC9wPgotPC9saT4KLTxsaT4KLTxwPlRoZSBmaWVsZCBqdXN0aWZpY2F0aW9uIHdpbGwgYmUgaWdub3JlZCBpZiB0aGUgb3B0aW9uIE9fU1RBVElDCi1pcyBvZmYuIEN1cnJlbnRseSwgc2V0X2ZpZWxkX2p1c3QgY2FuIGJlIHVzZWQgdG8gSlVTVElGWV9MRUZULAotSlVTVElGWV9SSUdIVCwgSlVTVElGWV9DRU5URVIgdGhlIGNvbnRlbnRzIG9mIGEgb25lIGxpbmUgZmllbGQuIEEKLWdyb3dhYmxlIG9uZSBsaW5lIGZpZWxkIHdpbGwsIGJ5IGRlZmluaXRpb24sIGdyb3cgYW5kIHNjcm9sbAotaG9yaXpvbnRhbGx5IGFuZCBtYXkgY29udGFpbiBtb3JlIGRhdGEgdGhhbiBjYW4gYmUganVzdGlmaWVkLiBUaGUKLXJldHVybiBmcm9tIGZpZWxkX2p1c3Qgd2lsbCBiZSB1bmNoYW5nZWQuPC9wPgotPC9saT4KLTxsaT4KLTxwPlRoZSBvdmVybG9hZGVkIGZvcm0gZHJpdmVyIHJlcXVlc3QgUkVRX05FV19MSU5FIHdpbGwgb3BlcmF0ZSB0aGUKLXNhbWUgd2F5IHJlZ2FyZGxlc3Mgb2YgdGhlIE9fTkxfT1ZFUkxPQUQgZm9ybSBvcHRpb24gaWYgdGhlIGZpZWxkCi1vcHRpb24gT19TVEFUSUMgaXMgb2ZmIGFuZCB0aGVyZSBpcyBubyBtYXhpbXVtIGdyb3d0aCBzcGVjaWZpZWQgZm9yCi10aGUgZmllbGQuIEN1cnJlbnRseSwgaWYgdGhlIGZvcm0gb3B0aW9uIE9fTkxfT1ZFUkxPQUQgaXMgb24sCi1SRVFfTkVXX0xJTkUgaW1wbGljaXRseSBnZW5lcmF0ZXMgYSBSRVFfTkVYVF9GSUVMRCBpZiBjYWxsZWQgZnJvbQotdGhlIGxhc3QgbGluZSBvZiBhIGZpZWxkLiBJZiBhIGZpZWxkIGNhbiBncm93IHdpdGhvdXQgYm91bmQsIHRoZXJlCi1pcyBubyBsYXN0IGxpbmUsIHNvIFJFUV9ORVdfTElORSB3aWxsIG5ldmVyIGltcGxpY2l0bHkgZ2VuZXJhdGUgYQotUkVRX05FWFRfRklFTEQuIElmIGEgbWF4aW11bSBncm93dGggbGltaXQgaXMgc3BlY2lmaWVkIGFuZCB0aGUKLU9fTkxfT1ZFUkxPQUQgZm9ybSBvcHRpb24gaXMgb24sIFJFUV9ORVdfTElORSB3aWxsIG9ubHkgaW1wbGljaXRseQotZ2VuZXJhdGUgUkVRX05FWFRfRklFTEQgaWYgdGhlIGZpZWxkIGhhcyBncm93biB0byBpdHMgbWF4aW11bSBzaXplCi1hbmQgdGhlIHVzZXIgaXMgb24gdGhlIGxhc3QgbGluZS48L3A+Ci08L2xpPgotPGxpPgotPHA+VGhlIGxpYnJhcnkgY2FsbCBkdXBfZmllbGQgd2lsbCB3b3JrIGFzIHVzdWFsOyBpdCB3aWxsIGR1cGxpY2F0ZQotdGhlIGZpZWxkLCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgYnVmZmVyIHNpemUgYW5kIGNvbnRlbnRzIG9mIHRoZQotZmllbGQgYmVpbmcgZHVwbGljYXRlZC4gQW55IHNwZWNpZmllZCBtYXhpbXVtIGdyb3d0aCB3aWxsIGFsc28gYmUKLWR1cGxpY2F0ZWQuPC9wPgotPC9saT4KLTxsaT4KLTxwPlRoZSBsaWJyYXJ5IGNhbGwgbGlua19maWVsZCB3aWxsIHdvcmsgYXMgdXN1YWw7IGl0IHdpbGwKLWR1cGxpY2F0ZSBhbGwgZmllbGQgYXR0cmlidXRlcyBhbmQgc2hhcmUgYnVmZmVycyB3aXRoIHRoZSBmaWVsZAotYmVpbmcgbGlua2VkLiBJZiB0aGUgT19TVEFUSUMgZmllbGQgb3B0aW9uIGlzIHN1YnNlcXVlbnRseSBjaGFuZ2VkCi1ieSBhIGZpZWxkIHNoYXJpbmcgYnVmZmVycywgaG93IHRoZSBzeXN0ZW0gcmVhY3RzIHRvIGFuIGF0dGVtcHQgdG8KLWVudGVyIG1vcmUgZGF0YSBpbnRvIHRoZSBmaWVsZCB0aGFuIHRoZSBidWZmZXIgd2lsbCBjdXJyZW50bHkgaG9sZAotd2lsbCBkZXBlbmQgb24gdGhlIHNldHRpbmcgb2YgdGhlIG9wdGlvbiBpbiB0aGUgY3VycmVudCBmaWVsZC48L3A+Ci08L2xpPgotPGxpPgotPHA+VGhlIGxpYnJhcnkgY2FsbCBmaWVsZF9pbmZvIHdpbGwgd29yayBhcyB1c3VhbDsgdGhlIHZhcmlhYmxlCi1ucm93IHdpbGwgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbmFsIGNhbGwgdG8gbmV3X2ZpZWxkLiBUaGUKLXVzZXIgc2hvdWxkIHVzZSBkeW5hbWljX2ZpZWxkX2luZm8sIGRlc2NyaWJlZCBhYm92ZSwgdG8gcXVlcnkgdGhlCi1jdXJyZW50IHNpemUgb2YgdGhlIGJ1ZmZlci48L3A+Ci08L2xpPgotPC9vbD4KLTxwPlNvbWUgb2YgdGhlIGFib3ZlIHBvaW50cyBtYWtlIHNlbnNlIG9ubHkgYWZ0ZXIgZXhwbGFpbmluZyBmb3JtCi1kcml2ZXIuIFdlIHdpbGwgYmUgbG9va2luZyBpbnRvIHRoYXQgaW4gbmV4dCBmZXcgc2VjdGlvbnMuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkZPUk1XSU5ET1dTIiBpZD0iRk9STVdJTkRPV1MiPjE4LjQuIEZvcm0KLVdpbmRvd3M8L2E+PC9oMz4KLTxwPlRoZSBmb3JtIHdpbmRvd3MgY29uY2VwdCBpcyBwcmV0dHkgbXVjaCBzaW1pbGFyIHRvIG1lbnUgd2luZG93cy4KLUV2ZXJ5IGZvcm0gaXMgYXNzb2NpYXRlZCB3aXRoIGEgbWFpbiB3aW5kb3cgYW5kIGEgc3ViIHdpbmRvdy4gVGhlCi1mb3JtIG1haW4gd2luZG93IGRpc3BsYXlzIGFueSB0aXRsZSBvciBib3JkZXIgYXNzb2NpYXRlZCBvcgotd2hhdGV2ZXIgdGhlIHVzZXIgd2lzaGVzLiBUaGVuIHRoZSBzdWIgd2luZG93IGNvbnRhaW5zIGFsbCB0aGUKLWZpZWxkcyBhbmQgZGlzcGxheXMgdGhlbSBhY2NvcmRpbmcgdG8gdGhlaXIgcG9zaXRpb24uIFRoaXMgZ2l2ZXMKLXRoZSBmbGV4aWJpbGl0eSBvZiBtYW5pcHVsYXRpbmcgZmFuY3kgZm9ybSBkaXNwbGF5aW5nIHZlcnkKLWVhc2lseS48L3A+Ci08cD5TaW5jZSB0aGlzIGlzIHByZXR0eSBtdWNoIHNpbWlsYXIgdG8gbWVudSB3aW5kb3dzLCBJIGFtCi1wcm92aWRpbmcgYW4gZXhhbXBsZSB3aXRoIG91dCBtdWNoIGV4cGxhbmF0aW9uLiBUaGUgZnVuY3Rpb25zIGFyZQotc2ltaWxhciBhbmQgdGhleSB3b3JrIHRoZSBzYW1lIHdheS48L3A+Ci08ZGl2IGNsYXNzPSJFWEFNUExFIj48YSBuYW1lPSJGRk9XSSIgaWQ9IkZGT1dJIj48L2E+Ci08cD48Yj5FeGFtcGxlIDI4LiBGb3JtIFdpbmRvd3MgRXhhbXBsZTwvYj48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+PHNwYW4gY2xhc3M9Ci0iSU5MSU5FTUVESUFPQkpFQ1QiPiNpbmNsdWRlICZsdDtmb3JtLmgmZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbiB0aGlzICovPC9QUkUKKz4KK1Rob3VnaCBmaWVsZF9pbmZvIHdvcmsgYXMgdXN1YWwsIGl0IGlzIGFkdmlzYWJsZSB0byB1c2UgdGhpcyBmdW5jdGlvbiB0byBnZXQgdGhlCitwcm9wZXIgYXR0cmlidXRlcyBvZiBhIGR5bmFtaWNhbGx5IGdyb3dhYmxlIGZpZWxkLjwvUAorPjxQCis+UmVjYWxsIHRoZSBsaWJyYXJ5IHJvdXRpbmUgbmV3X2ZpZWxkOyBhIG5ldyBmaWVsZCBjcmVhdGVkIHdpdGggaGVpZ2h0IHNldCB0byBvbmUKK3dpbGwgYmUgZGVmaW5lZCB0byBiZSBhIG9uZSBsaW5lIGZpZWxkLiBBIG5ldyBmaWVsZCBjcmVhdGVkIHdpdGggaGVpZ2h0IGdyZWF0ZXIKK3RoYW4gb25lIHdpbGwgYmUgZGVmaW5lZCB0byBiZSBhIG11bHRpIGxpbmUgZmllbGQuIDwvUAorPjxQCis+QSBvbmUgbGluZSBmaWVsZCB3aXRoIE9fU1RBVElDIHR1cm5lZCBvZmYgKGR5bmFtaWNhbGx5IGdyb3dhYmxlIGZpZWxkKSAgd2lsbAorY29udGFpbiBhIHNpbmdsZSBmaXhlZCByb3csIGJ1dCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgY2FuIGluY3JlYXNlIGlmIHRoZSB1c2VyCitlbnRlcnMgbW9yZSBkYXRhIHRoYW4gdGhlIGluaXRpYWwgZmllbGQgd2lsbCBob2xkLiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMKK2Rpc3BsYXllZCB3aWxsIHJlbWFpbiBmaXhlZCBhbmQgdGhlIGFkZGl0aW9uYWwgZGF0YSB3aWxsIHNjcm9sbCBob3Jpem9udGFsbHkuIDwvUAorPjxQCis+QSBtdWx0aSBsaW5lIGZpZWxkIHdpdGggT19TVEFUSUMgdHVybmVkIG9mZiAoZHluYW1pY2FsbHkgZ3Jvd2FibGUgZmllbGQpIHdpbGwKK2NvbnRhaW4gYSBmaXhlZCBudW1iZXIgb2YgY29sdW1ucywgYnV0IHRoZSBudW1iZXIgb2Ygcm93cyBjYW4gaW5jcmVhc2UgaWYgdGhlCit1c2VyIGVudGVycyBtb3JlIGRhdGEgdGhhbiB0aGUgaW5pdGlhbCBmaWVsZCB3aWxsIGhvbGQuIFRoZSBudW1iZXIgb2Ygcm93cworZGlzcGxheWVkIHdpbGwgcmVtYWluIGZpeGVkIGFuZCB0aGUgYWRkaXRpb25hbCBkYXRhIHdpbGwgc2Nyb2xsIHZlcnRpY2FsbHkuPC9QCis+PFAKKz5UaGUgYWJvdmUgdHdvIHBhcmFncmFwaHMgcHJldHR5IG11Y2ggZGVzY3JpYmUgYSBkeW5hbWljYWxseSBncm93YWJsZSBmaWVsZCdzIAorYmVoYXZpb3IuIFRoZSB3YXkgb3RoZXIgcGFydHMgb2YgZm9ybXMgbGlicmFyeSBiZWhhdmVzIGlzIGRlc2NyaWJlZCBiZWxvdzo8L1AKKz48UAorPjwvUAorPjxPTAorVFlQRT0iMSIKKz48TEkKKz48UAorPlRoZSBmaWVsZCBvcHRpb24gT19BVVRPU0tJUCB3aWxsIGJlIGlnbm9yZWQgaWYgdGhlIG9wdGlvbiBPX1NUQVRJQyBpcyBvZmYgYW5kCit0aGVyZSBpcyBubyBtYXhpbXVtIGdyb3d0aCBzcGVjaWZpZWQgZm9yIHRoZSBmaWVsZC4gQ3VycmVudGx5LCBPX0FVVE9TS0lQCitnZW5lcmF0ZXMgYW4gYXV0b21hdGljIFJFUV9ORVhUX0ZJRUxEIGZvcm0gZHJpdmVyIHJlcXVlc3Qgd2hlbiB0aGUgdXNlciB0eXBlcyBpbgordGhlIGxhc3QgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIGEgZmllbGQuIE9uIGEgZ3Jvd2FibGUgZmllbGQgd2l0aCBubyBtYXhpbXVtCitncm93dGggc3BlY2lmaWVkLCB0aGVyZSBpcyBubyBsYXN0IGNoYXJhY3RlciBwb3NpdGlvbi4gSWYgYSBtYXhpbXVtIGdyb3d0aCBpcworc3BlY2lmaWVkLCB0aGUgT19BVVRPU0tJUCBvcHRpb24gd2lsbCB3b3JrIGFzIG5vcm1hbCBpZiB0aGUgZmllbGQgaGFzIGdyb3duIHRvCitpdHMgbWF4aW11bSBzaXplLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz5UaGUgZmllbGQganVzdGlmaWNhdGlvbiB3aWxsIGJlIGlnbm9yZWQgaWYgdGhlIG9wdGlvbiBPX1NUQVRJQyBpcyBvZmYuCitDdXJyZW50bHksIHNldF9maWVsZF9qdXN0IGNhbiBiZSB1c2VkIHRvIEpVU1RJRllfTEVGVCwgSlVTVElGWV9SSUdIVCwKK0pVU1RJRllfQ0VOVEVSIHRoZSBjb250ZW50cyBvZiBhIG9uZSBsaW5lIGZpZWxkLiBBIGdyb3dhYmxlIG9uZSBsaW5lIGZpZWxkIHdpbGwsCitieSBkZWZpbml0aW9uLCBncm93IGFuZCBzY3JvbGwgaG9yaXpvbnRhbGx5IGFuZCBtYXkgY29udGFpbiBtb3JlIGRhdGEgdGhhbiBjYW4KK2JlIGp1c3RpZmllZC4gVGhlIHJldHVybiBmcm9tIGZpZWxkX2p1c3Qgd2lsbCBiZSB1bmNoYW5nZWQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPlRoZSBvdmVybG9hZGVkIGZvcm0gZHJpdmVyIHJlcXVlc3QgUkVRX05FV19MSU5FIHdpbGwgb3BlcmF0ZSB0aGUgc2FtZSB3YXkKK3JlZ2FyZGxlc3Mgb2YgdGhlIE9fTkxfT1ZFUkxPQUQgZm9ybSBvcHRpb24gaWYgdGhlIGZpZWxkIG9wdGlvbiBPX1NUQVRJQyBpcyBvZmYKK2FuZCB0aGVyZSBpcyBubyBtYXhpbXVtIGdyb3d0aCBzcGVjaWZpZWQgZm9yIHRoZSBmaWVsZC4gQ3VycmVudGx5LCBpZiB0aGUgZm9ybQorb3B0aW9uIE9fTkxfT1ZFUkxPQUQgaXMgb24sIFJFUV9ORVdfTElORSBpbXBsaWNpdGx5IGdlbmVyYXRlcyBhIFJFUV9ORVhUX0ZJRUxECitpZiBjYWxsZWQgZnJvbSB0aGUgbGFzdCBsaW5lIG9mIGEgZmllbGQuIElmIGEgZmllbGQgY2FuIGdyb3cgd2l0aG91dCBib3VuZCwKK3RoZXJlIGlzIG5vIGxhc3QgbGluZSwgc28gUkVRX05FV19MSU5FIHdpbGwgbmV2ZXIgaW1wbGljaXRseSBnZW5lcmF0ZSBhCitSRVFfTkVYVF9GSUVMRC4gSWYgYSBtYXhpbXVtIGdyb3d0aCBsaW1pdCBpcyBzcGVjaWZpZWQgYW5kIHRoZSBPX05MX09WRVJMT0FECitmb3JtIG9wdGlvbiBpcyBvbiwgUkVRX05FV19MSU5FIHdpbGwgb25seSBpbXBsaWNpdGx5IGdlbmVyYXRlIFJFUV9ORVhUX0ZJRUxEIGlmCit0aGUgZmllbGQgaGFzIGdyb3duIHRvIGl0cyBtYXhpbXVtIHNpemUgYW5kIHRoZSB1c2VyIGlzIG9uIHRoZSBsYXN0IGxpbmUuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPlRoZSBsaWJyYXJ5IGNhbGwgZHVwX2ZpZWxkIHdpbGwgd29yayBhcyB1c3VhbDsgaXQgd2lsbCBkdXBsaWNhdGUgdGhlIGZpZWxkLAoraW5jbHVkaW5nIHRoZSBjdXJyZW50IGJ1ZmZlciBzaXplIGFuZCBjb250ZW50cyBvZiB0aGUgZmllbGQgYmVpbmcgZHVwbGljYXRlZC4KK0FueSBzcGVjaWZpZWQgbWF4aW11bSBncm93dGggd2lsbCBhbHNvIGJlIGR1cGxpY2F0ZWQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPlRoZSBsaWJyYXJ5IGNhbGwgbGlua19maWVsZCB3aWxsIHdvcmsgYXMgdXN1YWw7IGl0IHdpbGwgZHVwbGljYXRlIGFsbCBmaWVsZAorYXR0cmlidXRlcyBhbmQgc2hhcmUgYnVmZmVycyB3aXRoIHRoZSBmaWVsZCBiZWluZyBsaW5rZWQuIElmIHRoZSBPX1NUQVRJQyBmaWVsZAorb3B0aW9uIGlzIHN1YnNlcXVlbnRseSBjaGFuZ2VkIGJ5IGEgZmllbGQgc2hhcmluZyBidWZmZXJzLCBob3cgdGhlIHN5c3RlbSByZWFjdHMKK3RvIGFuIGF0dGVtcHQgdG8gZW50ZXIgbW9yZSBkYXRhIGludG8gdGhlIGZpZWxkIHRoYW4gdGhlIGJ1ZmZlciB3aWxsIGN1cnJlbnRseQoraG9sZCB3aWxsIGRlcGVuZCBvbiB0aGUgc2V0dGluZyBvZiB0aGUgb3B0aW9uIGluIHRoZSBjdXJyZW50IGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz5UaGUgbGlicmFyeSBjYWxsIGZpZWxkX2luZm8gd2lsbCB3b3JrIGFzIHVzdWFsOyB0aGUgdmFyaWFibGUgbnJvdyB3aWxsIGNvbnRhaW4KK3RoZSB2YWx1ZSBvZiB0aGUgb3JpZ2luYWwgY2FsbCB0byBuZXdfZmllbGQuIFRoZSB1c2VyIHNob3VsZCB1c2UKK2R5bmFtaWNfZmllbGRfaW5mbywgZGVzY3JpYmVkIGFib3ZlLCB0byBxdWVyeSB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBidWZmZXIuPC9QCis+PC9MSQorPjwvT0wKKz48UAorPlNvbWUgb2YgdGhlIGFib3ZlIHBvaW50cyBtYWtlIHNlbnNlIG9ubHkgYWZ0ZXIgZXhwbGFpbmluZyBmb3JtIGRyaXZlci4gV2Ugd2lsbAorYmUgbG9va2luZyBpbnRvIHRoYXQgaW4gbmV4dCBmZXcgc2VjdGlvbnMuPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkZPUk1XSU5ET1dTIgorPjE4LjQuIEZvcm0gV2luZG93czwvQQorPjwvSDMKKz48UAorPlRoZSBmb3JtIHdpbmRvd3MgY29uY2VwdCBpcyBwcmV0dHkgbXVjaCBzaW1pbGFyIHRvIG1lbnUgd2luZG93cy4gRXZlcnkgZm9ybSBpcworYXNzb2NpYXRlZCB3aXRoIGEgbWFpbiB3aW5kb3cgYW5kIGEgc3ViIHdpbmRvdy4gVGhlIGZvcm0gbWFpbiB3aW5kb3cgZGlzcGxheXMKK2FueSB0aXRsZSBvciBib3JkZXIgYXNzb2NpYXRlZCBvciB3aGF0ZXZlciB0aGUgdXNlciB3aXNoZXMuIFRoZW4gdGhlIHN1YiB3aW5kb3cKK2NvbnRhaW5zIGFsbCB0aGUgZmllbGRzIGFuZCBkaXNwbGF5cyB0aGVtIGFjY29yZGluZyB0byB0aGVpciBwb3NpdGlvbi4gVGhpcworZ2l2ZXMgdGhlIGZsZXhpYmlsaXR5IG9mIG1hbmlwdWxhdGluZyBmYW5jeSBmb3JtIGRpc3BsYXlpbmcgdmVyeSBlYXNpbHkuIDwvUAorPjxQCis+U2luY2UgdGhpcyBpcyBwcmV0dHkgbXVjaCBzaW1pbGFyIHRvIG1lbnUgd2luZG93cywgSSBhbSBwcm92aWRpbmcgYW4gZXhhbXBsZQord2l0aCBvdXQgbXVjaCBleHBsYW5hdGlvbi4gVGhlIGZ1bmN0aW9ucyBhcmUgc2ltaWxhciBhbmQgdGhleSB3b3JrIHRoZSBzYW1lIHdheS48L1AKKz48RElWCitDTEFTUz0iRVhBTVBMRSIKKz48QQorTkFNRT0iRkZPV0kiCis+PC9BCis+PFAKKz48QgorPkV4YW1wbGUgMjguICBGb3JtIFdpbmRvd3MgRXhhbXBsZSA8L0IKKz48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+PFNQQU4KK0NMQVNTPSJJTkxJTkVNRURJQU9CSkVDVCIKKz4jaW5jbHVkZSAmIzYwO2Zvcm0uaCYjNjI7CiAKIHZvaWQgcHJpbnRfaW5fbWlkZGxlKFdJTkRPVyAqd2luLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4LCBpbnQgd2lkdGgsIGNoYXIgKnN0cmluZywgY2h0eXBlIGNvbG9yKTsKIAogaW50IG1haW4oKQogewotICAgICAgICBGSUVMRCAqZmllbGRbM107Ci0gICAgICAgIEZPUk0gICpteV9mb3JtOwotICAgICAgICBXSU5ET1cgKm15X2Zvcm1fd2luOwotICAgICAgICBpbnQgY2gsIHJvd3MsIGNvbHM7Ci0gICAgICAgIAotICAgICAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLwotICAgICAgICBpbml0c2NyKCk7Ci0gICAgICAgIHN0YXJ0X2NvbG9yKCk7Ci0gICAgICAgIGNicmVhaygpOwotICAgICAgICBub2VjaG8oKTsKLSAgICAgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisJRklFTEQgKmZpZWxkWzNdOworCUZPUk0gICpteV9mb3JtOworCVdJTkRPVyAqbXlfZm9ybV93aW47CisJaW50IGNoLCByb3dzLCBjb2xzOworCQorCS8qIEluaXRpYWxpemUgY3Vyc2VzICovCisJaW5pdHNjcigpOworCXN0YXJ0X2NvbG9yKCk7CisJY2JyZWFrKCk7CisJbm9lY2hvKCk7CisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CiAKLSAgICAgICAgLyogSW5pdGlhbGl6ZSBmZXcgY29sb3IgcGFpcnMgKi8KLSAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworCS8qIEluaXRpYWxpemUgZmV3IGNvbG9yIHBhaXJzICovCisgICAJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOwogCi0gICAgICAgIC8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyAqLwotICAgICAgICBmaWVsZFswXSA9IG5ld19maWVsZCgxLCAxMCwgNiwgMSwgMCwgMCk7Ci0gICAgICAgIGZpZWxkWzFdID0gbmV3X2ZpZWxkKDEsIDEwLCA4LCAxLCAwLCAwKTsKLSAgICAgICAgZmllbGRbMl0gPSBOVUxMOworCS8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyAqLworCWZpZWxkWzBdID0gbmV3X2ZpZWxkKDEsIDEwLCA2LCAxLCAwLCAwKTsKKwlmaWVsZFsxXSA9IG5ld19maWVsZCgxLCAxMCwgOCwgMSwgMCwgMCk7CisJZmllbGRbMl0gPSBOVUxMOwogCi0gICAgICAgIC8qIFNldCBmaWVsZCBvcHRpb25zICovCi0gICAgICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzBdLCBBX1VOREVSTElORSk7Ci0gICAgICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkWzBdLCBPX0FVVE9TS0lQKTsgLyogRG9uJ3QgZ28gdG8gbmV4dCBmaWVsZCB3aGVuIHRoaXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGaWVsZCBpcyBmaWxsZWQgdXAgICAgICAgICAgICAgKi8KLSAgICAgICAgc2V0X2ZpZWxkX2JhY2soZmllbGRbMV0sIEFfVU5ERVJMSU5FKTsgCi0gICAgICAgIGZpZWxkX29wdHNfb2ZmKGZpZWxkWzFdLCBPX0FVVE9TS0lQKTsKLSAgICAgICAgCi0gICAgICAgIC8qIENyZWF0ZSB0aGUgZm9ybSBhbmQgcG9zdCBpdCAqLwotICAgICAgICBteV9mb3JtID0gbmV3X2Zvcm0oZmllbGQpOwotICAgICAgICAKLSAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBhcmVhIHJlcXVpcmVkIGZvciB0aGUgZm9ybSAqLwotICAgICAgICBzY2FsZV9mb3JtKG15X2Zvcm0sICZhbXA7cm93cywgJmFtcDtjb2xzKTsKKwkvKiBTZXQgZmllbGQgb3B0aW9ucyAqLworCXNldF9maWVsZF9iYWNrKGZpZWxkWzBdLCBBX1VOREVSTElORSk7CisJZmllbGRfb3B0c19vZmYoZmllbGRbMF0sIE9fQVVUT1NLSVApOyAvKiBEb24ndCBnbyB0byBuZXh0IGZpZWxkIHdoZW4gdGhpcyAqLworCQkJCQkgICAgICAvKiBGaWVsZCBpcyBmaWxsZWQgdXAgCQkqLworCXNldF9maWVsZF9iYWNrKGZpZWxkWzFdLCBBX1VOREVSTElORSk7IAorCWZpZWxkX29wdHNfb2ZmKGZpZWxkWzFdLCBPX0FVVE9TS0lQKTsKKwkKKwkvKiBDcmVhdGUgdGhlIGZvcm0gYW5kIHBvc3QgaXQgKi8KKwlteV9mb3JtID0gbmV3X2Zvcm0oZmllbGQpOworCQorCS8qIENhbGN1bGF0ZSB0aGUgYXJlYSByZXF1aXJlZCBmb3IgdGhlIGZvcm0gKi8KKwlzY2FsZV9mb3JtKG15X2Zvcm0sICYjMzg7cm93cywgJiMzODtjb2xzKTsKIAotICAgICAgICAvKiBDcmVhdGUgdGhlIHdpbmRvdyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZvcm0gKi8KKwkvKiBDcmVhdGUgdGhlIHdpbmRvdyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZvcm0gKi8KICAgICAgICAgbXlfZm9ybV93aW4gPSBuZXd3aW4ocm93cyArIDQsIGNvbHMgKyA0LCA0LCA0KTsKICAgICAgICAga2V5cGFkKG15X2Zvcm1fd2luLCBUUlVFKTsKIAotICAgICAgICAvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KKwkvKiBTZXQgbWFpbiB3aW5kb3cgYW5kIHN1YiB3aW5kb3cgKi8KICAgICAgICAgc2V0X2Zvcm1fd2luKG15X2Zvcm0sIG15X2Zvcm1fd2luKTsKICAgICAgICAgc2V0X2Zvcm1fc3ViKG15X2Zvcm0sIGRlcndpbihteV9mb3JtX3dpbiwgcm93cywgY29scywgMiwgMikpOwogCi0gICAgICAgIC8qIFByaW50IGEgYm9yZGVyIGFyb3VuZCB0aGUgbWFpbiB3aW5kb3cgYW5kIHByaW50IGEgdGl0bGUgKi8KKwkvKiBQcmludCBhIGJvcmRlciBhcm91bmQgdGhlIG1haW4gd2luZG93IGFuZCBwcmludCBhIHRpdGxlICovCiAgICAgICAgIGJveChteV9mb3JtX3dpbiwgMCwgMCk7Ci0gICAgICAgIHByaW50X2luX21pZGRsZShteV9mb3JtX3dpbiwgMSwgMCwgY29scyArIDQsICJNeSBGb3JtIiwgQ09MT1JfUEFJUigxKSk7Ci0gICAgICAgIAotICAgICAgICBwb3N0X2Zvcm0obXlfZm9ybSk7Ci0gICAgICAgIHdyZWZyZXNoKG15X2Zvcm1fd2luKTsKKwlwcmludF9pbl9taWRkbGUobXlfZm9ybV93aW4sIDEsIDAsIGNvbHMgKyA0LCAiTXkgRm9ybSIsIENPTE9SX1BBSVIoMSkpOworCQorCXBvc3RfZm9ybShteV9mb3JtKTsKKwl3cmVmcmVzaChteV9mb3JtX3dpbik7CiAKLSAgICAgICAgbXZwcmludHcoTElORVMgLSAyLCAwLCAiVXNlIFVQLCBET1dOIGFycm93IGtleXMgdG8gc3dpdGNoIGJldHdlZW4gZmllbGRzIik7Ci0gICAgICAgIHJlZnJlc2goKTsKKwltdnByaW50dyhMSU5FUyAtIDIsIDAsICJVc2UgVVAsIERPV04gYXJyb3cga2V5cyB0byBzd2l0Y2ggYmV0d2VlbiBmaWVsZHMiKTsKKwlyZWZyZXNoKCk7CiAKLSAgICAgICAgLyogTG9vcCB0aHJvdWdoIHRvIGdldCB1c2VyIHJlcXVlc3RzICovCi0gICAgICAgIHdoaWxlKChjaCA9IHdnZXRjaChteV9mb3JtX3dpbikpICE9IEtFWV9GKDEpKQotICAgICAgICB7ICAgICAgIHN3aXRjaChjaCkKLSAgICAgICAgICAgICAgICB7ICAgICAgIGNhc2UgS0VZX0RPV046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdvIHRvIG5leHQgZmllbGQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX05FWFRfRklFTEQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byB0aGUgZW5kIG9mIHRoZSBwcmVzZW50IGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWF2ZXMgbmljZWx5IGF0IHRoZSBsYXN0IGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfRU5EX0xJTkUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgS0VZX1VQOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byBwcmV2aW91cyBmaWVsZCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfUFJFVl9GSUVMRCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1fZHJpdmVyKG15X2Zvcm0sIFJFUV9FTkRfTElORSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhpcyBpcyBhIG5vcm1hbCBjaGFyYWN0ZXIsIGl0IGdldHMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJpbnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1fZHJpdmVyKG15X2Zvcm0sIGNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9CisJLyogTG9vcCB0aHJvdWdoIHRvIGdldCB1c2VyIHJlcXVlc3RzICovCisJd2hpbGUoKGNoID0gd2dldGNoKG15X2Zvcm1fd2luKSkgIT0gS0VZX0YoMSkpCisJewlzd2l0Y2goY2gpCisJCXsJY2FzZSBLRVlfRE9XTjoKKwkJCQkvKiBHbyB0byBuZXh0IGZpZWxkICovCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX05FWFRfRklFTEQpOworCQkJCS8qIEdvIHRvIHRoZSBlbmQgb2YgdGhlIHByZXNlbnQgYnVmZmVyICovCisJCQkJLyogTGVhdmVzIG5pY2VseSBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgKi8KKwkJCQlmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfRU5EX0xJTkUpOworCQkJCWJyZWFrOworCQkJY2FzZSBLRVlfVVA6CisJCQkJLyogR28gdG8gcHJldmlvdXMgZmllbGQgKi8KKwkJCQlmb3JtX2RyaXZlcihteV9mb3JtLCBSRVFfUFJFVl9GSUVMRCk7CisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgUkVRX0VORF9MSU5FKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyogSWYgdGhpcyBpcyBhIG5vcm1hbCBjaGFyYWN0ZXIsIGl0IGdldHMgKi8KKwkJCQkvKiBQcmludGVkCQkJCSAgKi8JCisJCQkJZm9ybV9kcml2ZXIobXlfZm9ybSwgY2gpOworCQkJCWJyZWFrOworCQl9CisJfQogCi0gICAgICAgIC8qIFVuIHBvc3QgZm9ybSBhbmQgZnJlZSB0aGUgbWVtb3J5ICovCi0gICAgICAgIHVucG9zdF9mb3JtKG15X2Zvcm0pOwotICAgICAgICBmcmVlX2Zvcm0obXlfZm9ybSk7Ci0gICAgICAgIGZyZWVfZmllbGQoZmllbGRbMF0pOwotICAgICAgICBmcmVlX2ZpZWxkKGZpZWxkWzFdKTsgCisJLyogVW4gcG9zdCBmb3JtIGFuZCBmcmVlIHRoZSBtZW1vcnkgKi8KKwl1bnBvc3RfZm9ybShteV9mb3JtKTsKKwlmcmVlX2Zvcm0obXlfZm9ybSk7CisJZnJlZV9maWVsZChmaWVsZFswXSk7CisJZnJlZV9maWVsZChmaWVsZFsxXSk7IAogCi0gICAgICAgIGVuZHdpbigpOwotICAgICAgICByZXR1cm4gMDsKKwllbmR3aW4oKTsKKwlyZXR1cm4gMDsKIH0KIAogdm9pZCBwcmludF9pbl9taWRkbGUoV0lORE9XICp3aW4sIGludCBzdGFydHksIGludCBzdGFydHgsIGludCB3aWR0aCwgY2hhciAqc3RyaW5nLCBjaHR5cGUgY29sb3IpCi17ICAgICAgIGludCBsZW5ndGgsIHgsIHk7Ci0gICAgICAgIGZsb2F0IHRlbXA7Cit7CWludCBsZW5ndGgsIHgsIHk7CisJZmxvYXQgdGVtcDsKIAotICAgICAgICBpZih3aW4gPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB3aW4gPSBzdGRzY3I7Ci0gICAgICAgIGdldHl4KHdpbiwgeSwgeCk7Ci0gICAgICAgIGlmKHN0YXJ0eCAhPSAwKQotICAgICAgICAgICAgICAgIHggPSBzdGFydHg7Ci0gICAgICAgIGlmKHN0YXJ0eSAhPSAwKQotICAgICAgICAgICAgICAgIHkgPSBzdGFydHk7Ci0gICAgICAgIGlmKHdpZHRoID09IDApCi0gICAgICAgICAgICAgICAgd2lkdGggPSA4MDsKKwlpZih3aW4gPT0gTlVMTCkKKwkJd2luID0gc3Rkc2NyOworCWdldHl4KHdpbiwgeSwgeCk7CisJaWYoc3RhcnR4ICE9IDApCisJCXggPSBzdGFydHg7CisJaWYoc3RhcnR5ICE9IDApCisJCXkgPSBzdGFydHk7CisJaWYod2lkdGggPT0gMCkKKwkJd2lkdGggPSA4MDsKIAotICAgICAgICBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKLSAgICAgICAgdGVtcCA9ICh3aWR0aCAtIGxlbmd0aCkvIDI7Ci0gICAgICAgIHggPSBzdGFydHggKyAoaW50KXRlbXA7Ci0gICAgICAgIHdhdHRyb24od2luLCBjb2xvcik7Ci0gICAgICAgIG12d3ByaW50dyh3aW4sIHksIHgsICIlcyIsIHN0cmluZyk7Ci0gICAgICAgIHdhdHRyb2ZmKHdpbiwgY29sb3IpOwotICAgICAgICByZWZyZXNoKCk7Ci19PC9zcGFuPjwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJGSUxFRFZBTElEQVRFIiBpZD0iRklMRURWQUxJREFURSI+MTguNS4KLUZpZWxkIFZhbGlkYXRpb248L2E+PC9oMz4KLTxwPkJ5IGRlZmF1bHQsIGEgZmllbGQgd2lsbCBhY2NlcHQgYW55IGRhdGEgaW5wdXQgYnkgdGhlIHVzZXIuIEl0Ci1pcyBwb3NzaWJsZSB0byBhdHRhY2ggdmFsaWRhdGlvbiB0byB0aGUgZmllbGQuIFRoZW4gYW55IGF0dGVtcHQgYnkKLXRoZSB1c2VyIHRvIGxlYXZlIHRoZSBmaWVsZCwgd2hpbGUgaXQgY29udGFpbnMgZGF0YSB0aGF0IGRvZXNuJ3QKLW1hdGNoIHRoZSB2YWxpZGF0aW9uIHR5cGUgd2lsbCBmYWlsLiBTb21lIHZhbGlkYXRpb24gdHlwZXMgYWxzbwotaGF2ZSBhIGNoYXJhY3Rlci12YWxpZGl0eSBjaGVjayBmb3IgZWFjaCB0aW1lIGEgY2hhcmFjdGVyIGlzCi1lbnRlcmVkIGluIHRoZSBmaWVsZC48L3A+Ci08cD5WYWxpZGF0aW9uIGNhbiBiZSBhdHRhY2hlZCB0byBhIGZpZWxkIHdpdGggdGhlIGZvbGxvd2luZwotZnVuY3Rpb24uPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KKwlsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKKwl0ZW1wID0gKHdpZHRoIC0gbGVuZ3RoKS8gMjsKKwl4ID0gc3RhcnR4ICsgKGludCl0ZW1wOworCXdhdHRyb24od2luLCBjb2xvcik7CisJbXZ3cHJpbnR3KHdpbiwgeSwgeCwgIiVzIiwgc3RyaW5nKTsKKwl3YXR0cm9mZih3aW4sIGNvbG9yKTsKKwlyZWZyZXNoKCk7Cit9PC9TUEFOCis+PC9QUkUKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iRklMRURWQUxJREFURSIKKz4xOC41LiBGaWVsZCBWYWxpZGF0aW9uPC9BCis+PC9IMworPjxQCis+QnkgZGVmYXVsdCwgYSBmaWVsZCB3aWxsIGFjY2VwdCBhbnkgZGF0YSBpbnB1dCBieSB0aGUgdXNlci4gSXQgaXMgcG9zc2libGUgdG8KK2F0dGFjaCB2YWxpZGF0aW9uIHRvIHRoZSBmaWVsZC4gVGhlbiBhbnkgYXR0ZW1wdCBieSB0aGUgdXNlciB0byBsZWF2ZSB0aGUgZmllbGQsCit3aGlsZSBpdCBjb250YWlucyBkYXRhIHRoYXQgZG9lc24ndCBtYXRjaCB0aGUgdmFsaWRhdGlvbiB0eXBlIHdpbGwgZmFpbC4gU29tZQordmFsaWRhdGlvbiB0eXBlcyBhbHNvIGhhdmUgYSBjaGFyYWN0ZXItdmFsaWRpdHkgY2hlY2sgZm9yIGVhY2ggdGltZSBhIGNoYXJhY3RlcgoraXMgZW50ZXJlZCBpbiB0aGUgZmllbGQuPC9QCis+PFAKKz5WYWxpZGF0aW9uIGNhbiBiZSBhdHRhY2hlZCB0byBhIGZpZWxkIHdpdGggdGhlIGZvbGxvd2luZyBmdW5jdGlvbi4KKzxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgc2V0X2ZpZWxkX3R5cGUoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwogICAgICAgICAgICAgICAgICAgIEZJRUxEVFlQRSAqZnR5cGUsICAgICAgLyogdHlwZSB0byBhc3NvY2lhdGUgKi8KLSAgICAgICAgICAgICAgICAgICAuLi4pOyAgICAgICAgICAgICAgICAgIC8qIGFkZGl0aW9uYWwgYXJndW1lbnRzKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgLi4uKTsgICAgICAgICAgICAgICAgICAvKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyovPC9QUkUKKz4KIE9uY2Ugc2V0LCB0aGUgdmFsaWRhdGlvbiB0eXBlIGZvciBhIGZpZWxkIGNhbiBiZSBxdWVyaWVkIHdpdGgKLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPkZJRUxEVFlQRSAqZmllbGRfdHlwZShGSUVMRCAqZmllbGQpOyAgICAgIC8qIGZpZWxkIHRvIHF1ZXJ5ICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIGZvcm0gZHJpdmVyIHZhbGlkYXRlcyB0aGUgZGF0YSBpbiBhIGZpZWxkIG9ubHkgd2hlbiBkYXRhIGlzCi1lbnRlcmVkIGJ5IHRoZSBlbmQtdXNlci4gVmFsaWRhdGlvbiBkb2VzIG5vdCBvY2N1ciB3aGVuPC9wPgotPHVsPgotPGxpPgotPHA+dGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gY2hhbmdlcyB0aGUgZmllbGQgdmFsdWUgYnkgY2FsbGluZwotc2V0X2ZpZWxkX2J1ZmZlci48L3A+Ci08L2xpPgotPGxpPgotPHA+bGlua2VkIGZpZWxkIHZhbHVlcyBhcmUgY2hhbmdlZCBpbmRpcmVjdGx5IC0tIGJ5IGNoYW5naW5nIHRoZQotZmllbGQgdG8gd2hpY2ggdGhleSBhcmUgbGlua2VkPC9wPgotPC9saT4KLTwvdWw+Ci08cD5UaGUgZm9sbG93aW5nIGFyZSB0aGUgcHJlLWRlZmluZWQgdmFsaWRhdGlvbiB0eXBlcy4gWW91IGNhbiBhbHNvCi1zcGVjaWZ5IGN1c3RvbSB2YWxpZGF0aW9uLCB0aG91Z2ggaXQncyBhIGJpdCB0cmlja3kgYW5kCi1jdW1iZXJzb21lLjwvcD4KLTxoMSBjbGFzcz0iQlJJREdFSEVBRCI+PGEgbmFtZT0iQUVOMTA2OSIgaWQ9Ci0iQUVOMTA2OSI+PC9hPlRZUEVfQUxQSEE8L2gxPgotPHA+VGhpcyBmaWVsZCB0eXBlIGFjY2VwdHMgYWxwaGFiZXRpYyBkYXRhOyBubyBibGFua3MsIG5vIGRpZ2l0cywKLW5vIHNwZWNpYWwgY2hhcmFjdGVycyAodGhpcyBpcyBjaGVja2VkIGF0IGNoYXJhY3Rlci1lbnRyeSB0aW1lKS4gSXQKLWlzIHNldCB1cCB3aXRoOjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBzZXRfZmllbGRfdHlwZShGSUVMRCAqZmllbGQsICAgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCis8UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+RklFTERUWVBFICpmaWVsZF90eXBlKEZJRUxEICpmaWVsZCk7ICAgICAgLyogZmllbGQgdG8gcXVlcnkgKi88L1BSRQorPjwvUAorPjxQCis+VGhlIGZvcm0gZHJpdmVyIHZhbGlkYXRlcyB0aGUgZGF0YSBpbiBhIGZpZWxkIG9ubHkgd2hlbiBkYXRhIGlzIGVudGVyZWQgYnkgdGhlCitlbmQtdXNlci4gVmFsaWRhdGlvbiBkb2VzIG5vdCBvY2N1ciB3aGVuIDwvUAorPjxQCis+PC9QCis+PFVMCis+PExJCis+PFAKKz50aGUgYXBwbGljYXRpb24gcHJvZ3JhbSBjaGFuZ2VzIHRoZSBmaWVsZCB2YWx1ZSBieSBjYWxsaW5nIHNldF9maWVsZF9idWZmZXIuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPmxpbmtlZCBmaWVsZCB2YWx1ZXMgYXJlIGNoYW5nZWQgaW5kaXJlY3RseSAtLSBieSBjaGFuZ2luZyB0aGUgZmllbGQgdG8gd2hpY2gKK3RoZXkgYXJlIGxpbmtlZDwvUAorPjwvTEkKKz48L1VMCis+PFAKKz5UaGUgZm9sbG93aW5nIGFyZSB0aGUgcHJlLWRlZmluZWQgdmFsaWRhdGlvbiB0eXBlcy4gWW91IGNhbiBhbHNvIHNwZWNpZnkgY3VzdG9tCit2YWxpZGF0aW9uLCB0aG91Z2ggaXQncyBhIGJpdCB0cmlja3kgYW5kIGN1bWJlcnNvbWUuPC9QCis+PEgxCitDTEFTUz0iQlJJREdFSEVBRCIKKz48QQorTkFNRT0iQUVOMTA2OSIKKz48L0EKKz5UWVBFX0FMUEhBPC9IMQorPjxQCis+VGhpcyBmaWVsZCB0eXBlIGFjY2VwdHMgYWxwaGFiZXRpYyBkYXRhOyBubyBibGFua3MsIG5vIGRpZ2l0cywgbm8gc3BlY2lhbAorY2hhcmFjdGVycyAodGhpcyBpcyBjaGVja2VkIGF0IGNoYXJhY3Rlci1lbnRyeSB0aW1lKS4gIEl0IGlzIHNldCB1cCB3aXRoOiA8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KICAgICAgICAgICAgICAgICAgICBUWVBFX0FMUEhBLCAgICAgICAgICAgIC8qIHR5cGUgdG8gYXNzb2NpYXRlICovCi0gICAgICAgICAgICAgICAgICAgaW50IHdpZHRoKTsgICAgICAgICAgICAvKiBtYXhpbXVtIHdpZHRoIG9mIGZpZWxkICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIHdpZHRoIGFyZ3VtZW50IHNldHMgYSBtaW5pbXVtIHdpZHRoIG9mIGRhdGEuIFRoZSB1c2VyIGhhcyB0bwotZW50ZXIgYXQtbGVhc3Qgd2lkdGggbnVtYmVyIG9mIGNoYXJhY3RlcnMgYmVmb3JlIGhlIGNhbiBsZWF2ZSB0aGUKLWZpZWxkLiBUeXBpY2FsbHkgeW91J2xsIHdhbnQgdG8gc2V0IHRoaXMgdG8gdGhlIGZpZWxkIHdpZHRoOyBpZgotaXQncyBncmVhdGVyIHRoYW4gdGhlIGZpZWxkIHdpZHRoLCB0aGUgdmFsaWRhdGlvbiBjaGVjayB3aWxsIGFsd2F5cwotZmFpbC4gQSBtaW5pbXVtIHdpZHRoIG9mIHplcm8gbWFrZXMgZmllbGQgY29tcGxldGlvbiBvcHRpb25hbC48L3A+Ci08aDEgY2xhc3M9IkJSSURHRUhFQUQiPjxhIG5hbWU9IkFFTjEwNzMiIGlkPQotIkFFTjEwNzMiPjwvYT5UWVBFX0FMTlVNPC9oMT4KLTxwPlRoaXMgZmllbGQgdHlwZSBhY2NlcHRzIGFscGhhYmV0aWMgZGF0YSBhbmQgZGlnaXRzOyBubyBibGFua3MsCi1ubyBzcGVjaWFsIGNoYXJhY3RlcnMgKHRoaXMgaXMgY2hlY2tlZCBhdCBjaGFyYWN0ZXItZW50cnkgdGltZSkuIEl0Ci1pcyBzZXQgdXAgd2l0aDo8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj5pbnQgc2V0X2ZpZWxkX3R5cGUoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLworICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCk7ICAgICAgICAgICAgLyogbWF4aW11bSB3aWR0aCBvZiBmaWVsZCAqLzwvUFJFCis+PFAKKz5UaGUgd2lkdGggYXJndW1lbnQgc2V0cyBhIG1pbmltdW0gd2lkdGggb2YgZGF0YS4gVGhlIHVzZXIgaGFzIHRvIGVudGVyIGF0LWxlYXN0Cit3aWR0aCBudW1iZXIgb2YgY2hhcmFjdGVycyBiZWZvcmUgaGUgY2FuIGxlYXZlIHRoZSBmaWVsZC4gVHlwaWNhbGx5Cit5b3UnbGwgd2FudCB0byBzZXQgdGhpcyB0byB0aGUgZmllbGQgd2lkdGg7IGlmIGl0J3MgZ3JlYXRlciB0aGFuIHRoZQorZmllbGQgd2lkdGgsIHRoZSB2YWxpZGF0aW9uIGNoZWNrIHdpbGwgYWx3YXlzIGZhaWwuICBBIG1pbmltdW0gd2lkdGgKK29mIHplcm8gbWFrZXMgZmllbGQgY29tcGxldGlvbiBvcHRpb25hbC4gPC9QCis+PEgxCitDTEFTUz0iQlJJREdFSEVBRCIKKz48QQorTkFNRT0iQUVOMTA3MyIKKz48L0EKKz5UWVBFX0FMTlVNPC9IMQorPjxQCis+VGhpcyBmaWVsZCB0eXBlIGFjY2VwdHMgYWxwaGFiZXRpYyBkYXRhIGFuZCBkaWdpdHM7IG5vIGJsYW5rcywgbm8gc3BlY2lhbAorY2hhcmFjdGVycyAodGhpcyBpcyBjaGVja2VkIGF0IGNoYXJhY3Rlci1lbnRyeSB0aW1lKS4gIEl0IGlzIHNldCB1cCB3aXRoOiA8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KICAgICAgICAgICAgICAgICAgICBUWVBFX0FMTlVNLCAgICAgICAgICAgIC8qIHR5cGUgdG8gYXNzb2NpYXRlICovCi0gICAgICAgICAgICAgICAgICAgaW50IHdpZHRoKTsgICAgICAgICAgICAvKiBtYXhpbXVtIHdpZHRoIG9mIGZpZWxkICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIHdpZHRoIGFyZ3VtZW50IHNldHMgYSBtaW5pbXVtIHdpZHRoIG9mIGRhdGEuIEFzIHdpdGgKLVRZUEVfQUxQSEEsIHR5cGljYWxseSB5b3UnbGwgd2FudCB0byBzZXQgdGhpcyB0byB0aGUgZmllbGQgd2lkdGg7Ci1pZiBpdCdzIGdyZWF0ZXIgdGhhbiB0aGUgZmllbGQgd2lkdGgsIHRoZSB2YWxpZGF0aW9uIGNoZWNrIHdpbGwKLWFsd2F5cyBmYWlsLiBBIG1pbmltdW0gd2lkdGggb2YgemVybyBtYWtlcyBmaWVsZCBjb21wbGV0aW9uCi1vcHRpb25hbC48L3A+Ci08aDEgY2xhc3M9IkJSSURHRUhFQUQiPjxhIG5hbWU9IkFFTjEwNzciIGlkPQotIkFFTjEwNzciPjwvYT5UWVBFX0VOVU08L2gxPgotPHA+VGhpcyB0eXBlIGFsbG93cyB5b3UgdG8gcmVzdHJpY3QgYSBmaWVsZCdzIHZhbHVlcyB0byBiZSBhbW9uZyBhCi1zcGVjaWZpZWQgc2V0IG9mIHN0cmluZyB2YWx1ZXMgKGZvciBleGFtcGxlLCB0aGUgdHdvLWxldHRlciBwb3N0YWwKLWNvZGVzIGZvciBVLlMuIHN0YXRlcykuIEl0IGlzIHNldCB1cCB3aXRoOjwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPmludCBzZXRfZmllbGRfdHlwZShGSUVMRCAqZmllbGQsICAgICAgICAgIC8qIGZpZWxkIHRvIGFsdGVyICovCisgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoKTsgICAgICAgICAgICAvKiBtYXhpbXVtIHdpZHRoIG9mIGZpZWxkICovPC9QUkUKKz48UAorPlRoZSB3aWR0aCBhcmd1bWVudCBzZXRzIGEgbWluaW11bSB3aWR0aCBvZiBkYXRhLiAgQXMgd2l0aAorVFlQRV9BTFBIQSwgdHlwaWNhbGx5IHlvdSdsbCB3YW50IHRvIHNldCB0aGlzIHRvIHRoZSBmaWVsZCB3aWR0aDsgaWYgaXQncworZ3JlYXRlciB0aGFuIHRoZSBmaWVsZCB3aWR0aCwgdGhlIHZhbGlkYXRpb24gY2hlY2sgd2lsbCBhbHdheXMgZmFpbC4gIEEKK21pbmltdW0gd2lkdGggb2YgemVybyBtYWtlcyBmaWVsZCBjb21wbGV0aW9uIG9wdGlvbmFsLiA8L1AKKz48SDEKK0NMQVNTPSJCUklER0VIRUFEIgorPjxBCitOQU1FPSJBRU4xMDc3IgorPjwvQQorPlRZUEVfRU5VTTwvSDEKKz48UAorPlRoaXMgdHlwZSBhbGxvd3MgeW91IHRvIHJlc3RyaWN0IGEgZmllbGQncyB2YWx1ZXMgdG8gYmUgYW1vbmcgYSBzcGVjaWZpZWQKK3NldCBvZiBzdHJpbmcgdmFsdWVzIChmb3IgZXhhbXBsZSwgdGhlIHR3by1sZXR0ZXIgcG9zdGFsIGNvZGVzIGZvciBVLlMuCitzdGF0ZXMpLiAgSXQgaXMgc2V0IHVwIHdpdGg6IDwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgc2V0X2ZpZWxkX3R5cGUoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwogICAgICAgICAgICAgICAgICAgIFRZUEVfRU5VTSwgICAgICAgICAgICAgLyogdHlwZSB0byBhc3NvY2lhdGUgKi8KICAgICAgICAgICAgICAgICAgICBjaGFyICoqdmFsdWVsaXN0OyAgICAgIC8qIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzICovCiAgICAgICAgICAgICAgICAgICAgaW50IGNoZWNrY2FzZTsgICAgICAgICAvKiBjYXNlLXNlbnNpdGl2ZT8gKi8KLSAgICAgICAgICAgICAgICAgICBpbnQgY2hlY2t1bmlxdWUpOyAgICAgIC8qIG11c3Qgc3BlY2lmeSB1bmlxdWVseT8gKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGUgdmFsdWVsaXN0IHBhcmFtZXRlciBtdXN0IHBvaW50IGF0IGEgTlVMTC10ZXJtaW5hdGVkIGxpc3Qgb2YKLXZhbGlkIHN0cmluZ3MuIFRoZSBjaGVja2Nhc2UgYXJndW1lbnQsIGlmIHRydWUsIG1ha2VzIGNvbXBhcmlzb24KLXdpdGggdGhlIHN0cmluZyBjYXNlLXNlbnNpdGl2ZS48L3A+Ci08cD5XaGVuIHRoZSB1c2VyIGV4aXRzIGEgVFlQRV9FTlVNIGZpZWxkLCB0aGUgdmFsaWRhdGlvbiBwcm9jZWR1cmUKLXRyaWVzIHRvIGNvbXBsZXRlIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgdG8gYSB2YWxpZCBlbnRyeS4gSWYgYQotY29tcGxldGUgY2hvaWNlIHN0cmluZyBoYXMgYmVlbiBlbnRlcmVkLCBpdCBpcyBvZiBjb3Vyc2UgdmFsaWQuIEJ1dAotaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBlbnRlciBhIHByZWZpeCBvZiBhIHZhbGlkIHN0cmluZyBhbmQgaGF2ZSBpdAotY29tcGxldGVkIGZvciB5b3UuPC9wPgotPHA+QnkgZGVmYXVsdCwgaWYgeW91IGVudGVyIHN1Y2ggYSBwcmVmaXggYW5kIGl0IG1hdGNoZXMgbW9yZSB0aGFuCi1vbmUgdmFsdWUgaW4gdGhlIHN0cmluZyBsaXN0LCB0aGUgcHJlZml4IHdpbGwgYmUgY29tcGxldGVkIHRvIHRoZQotZmlyc3QgbWF0Y2hpbmcgdmFsdWUuIEJ1dCB0aGUgY2hlY2t1bmlxdWUgYXJndW1lbnQsIGlmIHRydWUsCi1yZXF1aXJlcyBwcmVmaXggbWF0Y2hlcyB0byBiZSB1bmlxdWUgaW4gb3JkZXIgdG8gYmUgdmFsaWQuPC9wPgotPHA+VGhlIFJFUV9ORVhUX0NIT0lDRSBhbmQgUkVRX1BSRVZfQ0hPSUNFIGlucHV0IHJlcXVlc3RzIGNhbiBiZQotcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIHRoZXNlIGZpZWxkcy48L3A+Ci08aDEgY2xhc3M9IkJSSURHRUhFQUQiPjxhIG5hbWU9IkFFTjEwODQiIGlkPQotIkFFTjEwODQiPjwvYT5UWVBFX0lOVEVHRVI8L2gxPgotPHA+VGhpcyBmaWVsZCB0eXBlIGFjY2VwdHMgYW4gaW50ZWdlci4gSXQgaXMgc2V0IHVwIGFzIGZvbGxvd3M6PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KKyAgICAgICAgICAgICAgICAgICBpbnQgY2hlY2t1bmlxdWUpOyAgICAgIC8qIG11c3Qgc3BlY2lmeSB1bmlxdWVseT8gKi88L1BSRQorPjxQCis+VGhlIHZhbHVlbGlzdCBwYXJhbWV0ZXIgbXVzdCBwb2ludCBhdCBhIE5VTEwtdGVybWluYXRlZCBsaXN0IG9mCit2YWxpZCBzdHJpbmdzLiAgVGhlIGNoZWNrY2FzZSBhcmd1bWVudCwgaWYgdHJ1ZSwgbWFrZXMgY29tcGFyaXNvbgord2l0aCB0aGUgc3RyaW5nIGNhc2Utc2Vuc2l0aXZlLiA8L1AKKz48UAorPldoZW4gdGhlIHVzZXIgZXhpdHMgYSBUWVBFX0VOVU0gZmllbGQsIHRoZSB2YWxpZGF0aW9uIHByb2NlZHVyZSB0cmllcyB0bworY29tcGxldGUgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciB0byBhIHZhbGlkIGVudHJ5LiAgSWYgYSBjb21wbGV0ZSBjaG9pY2Ugc3RyaW5nCitoYXMgYmVlbiBlbnRlcmVkLCBpdCBpcyBvZiBjb3Vyc2UgdmFsaWQuICBCdXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBlbnRlciBhCitwcmVmaXggb2YgYSB2YWxpZCBzdHJpbmcgYW5kIGhhdmUgaXQgY29tcGxldGVkIGZvciB5b3UuIDwvUAorPjxQCis+QnkgZGVmYXVsdCwgaWYgeW91IGVudGVyIHN1Y2ggYSBwcmVmaXggYW5kIGl0IG1hdGNoZXMgbW9yZSB0aGFuIG9uZSB2YWx1ZQoraW4gdGhlIHN0cmluZyBsaXN0LCB0aGUgcHJlZml4IHdpbGwgYmUgY29tcGxldGVkIHRvIHRoZSBmaXJzdCBtYXRjaGluZwordmFsdWUuICBCdXQgdGhlIGNoZWNrdW5pcXVlIGFyZ3VtZW50LCBpZiB0cnVlLCByZXF1aXJlcyBwcmVmaXgKK21hdGNoZXMgdG8gYmUgdW5pcXVlIGluIG9yZGVyIHRvIGJlIHZhbGlkLiA8L1AKKz48UAorPlRoZSBSRVFfTkVYVF9DSE9JQ0UgYW5kIFJFUV9QUkVWX0NIT0lDRSBpbnB1dCByZXF1ZXN0cyBjYW4gYmUgcGFydGljdWxhcmx5Cit1c2VmdWwgd2l0aCB0aGVzZSBmaWVsZHMuIDwvUAorPjxIMQorQ0xBU1M9IkJSSURHRUhFQUQiCis+PEEKK05BTUU9IkFFTjEwODQiCis+PC9BCis+VFlQRV9JTlRFR0VSPC9IMQorPjxQCis+VGhpcyBmaWVsZCB0eXBlIGFjY2VwdHMgYW4gaW50ZWdlci4gIEl0IGlzIHNldCB1cCBhcyBmb2xsb3dzOiA8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KICAgICAgICAgICAgICAgICAgICBUWVBFX0lOVEVHRVIsICAgICAgICAgIC8qIHR5cGUgdG8gYXNzb2NpYXRlICovCiAgICAgICAgICAgICAgICAgICAgaW50IHBhZGRpbmcsICAgICAgICAgICAvKiAjIHBsYWNlcyB0byB6ZXJvLXBhZCB0byAqLwotICAgICAgICAgICAgICAgICAgIGludCB2bWluLCBpbnQgdm1heCk7ICAgLyogdmFsaWQgcmFuZ2UgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5WYWxpZCBjaGFyYWN0ZXJzIGNvbnNpc3Qgb2YgYW4gb3B0aW9uYWwgbGVhZGluZyBtaW51cyBhbmQKLWRpZ2l0cy4gVGhlIHJhbmdlIGNoZWNrIGlzIHBlcmZvcm1lZCBvbiBleGl0LiBJZiB0aGUgcmFuZ2UgbWF4aW11bQotaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtaW5pbXVtLCB0aGUgcmFuZ2UgaXMgaWdub3JlZC48L3A+Ci08cD5JZiB0aGUgdmFsdWUgcGFzc2VzIGl0cyByYW5nZSBjaGVjaywgaXQgaXMgcGFkZGVkIHdpdGggYXMgbWFueQotbGVhZGluZyB6ZXJvIGRpZ2l0cyBhcyBuZWNlc3NhcnkgdG8gbWVldCB0aGUgcGFkZGluZyBhcmd1bWVudC48L3A+Ci08cD5BIFRZUEVfSU5URUdFUiB2YWx1ZSBidWZmZXIgY2FuIGNvbnZlbmllbnRseSBiZSBpbnRlcnByZXRlZCB3aXRoCi10aGUgQyBsaWJyYXJ5IGZ1bmN0aW9uIGF0b2koMykuPC9wPgotPGgxIGNsYXNzPSJCUklER0VIRUFEIj48YSBuYW1lPSJBRU4xMDkwIiBpZD0KLSJBRU4xMDkwIj48L2E+VFlQRV9OVU1FUklDPC9oMT4KLTxwPlRoaXMgZmllbGQgdHlwZSBhY2NlcHRzIGEgZGVjaW1hbCBudW1iZXIuIEl0IGlzIHNldCB1cCBhcwotZm9sbG93czo8L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj5pbnQgc2V0X2ZpZWxkX3R5cGUoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLworICAgICAgICAgICAgICAgICAgIGludCB2bWluLCBpbnQgdm1heCk7ICAgLyogdmFsaWQgcmFuZ2UgKi88L1BSRQorPjxQCis+VmFsaWQgY2hhcmFjdGVycyBjb25zaXN0IG9mIGFuIG9wdGlvbmFsIGxlYWRpbmcgbWludXMgYW5kIGRpZ2l0cy4KK1RoZSByYW5nZSBjaGVjayBpcyBwZXJmb3JtZWQgb24gZXhpdC4gIElmIHRoZSByYW5nZSBtYXhpbXVtIGlzIGxlc3MKK3RoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0sIHRoZSByYW5nZSBpcyBpZ25vcmVkLiA8L1AKKz48UAorPklmIHRoZSB2YWx1ZSBwYXNzZXMgaXRzIHJhbmdlIGNoZWNrLCBpdCBpcyBwYWRkZWQgd2l0aCBhcyBtYW55IGxlYWRpbmcKK3plcm8gZGlnaXRzIGFzIG5lY2Vzc2FyeSB0byBtZWV0IHRoZSBwYWRkaW5nIGFyZ3VtZW50LiA8L1AKKz48UAorPkEgVFlQRV9JTlRFR0VSIHZhbHVlIGJ1ZmZlciBjYW4gY29udmVuaWVudGx5IGJlIGludGVycHJldGVkIHdpdGggdGhlIEMgbGlicmFyeSAKK2Z1bmN0aW9uIGF0b2koMykuPC9QCis+PEgxCitDTEFTUz0iQlJJREdFSEVBRCIKKz48QQorTkFNRT0iQUVOMTA5MCIKKz48L0EKKz5UWVBFX05VTUVSSUM8L0gxCis+PFAKKz5UaGlzIGZpZWxkIHR5cGUgYWNjZXB0cyBhIGRlY2ltYWwgbnVtYmVyLiAgSXQgaXMgc2V0IHVwIGFzIGZvbGxvd3M6IDwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgc2V0X2ZpZWxkX3R5cGUoRklFTEQgKmZpZWxkLCAgICAgICAgICAvKiBmaWVsZCB0byBhbHRlciAqLwogICAgICAgICAgICAgICAgICAgIFRZUEVfTlVNRVJJQywgICAgICAgICAgLyogdHlwZSB0byBhc3NvY2lhdGUgKi8KICAgICAgICAgICAgICAgICAgICBpbnQgcGFkZGluZywgICAgICAgICAgIC8qICMgcGxhY2VzIG9mIHByZWNpc2lvbiAqLwotICAgICAgICAgICAgICAgICAgIGludCB2bWluLCBpbnQgdm1heCk7ICAgLyogdmFsaWQgcmFuZ2UgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5WYWxpZCBjaGFyYWN0ZXJzIGNvbnNpc3Qgb2YgYW4gb3B0aW9uYWwgbGVhZGluZyBtaW51cyBhbmQKLWRpZ2l0cy4gcG9zc2libHkgaW5jbHVkaW5nIGEgZGVjaW1hbCBwb2ludC4gVGhlIHJhbmdlIGNoZWNrIGlzCi1wZXJmb3JtZWQgb24gZXhpdC4gSWYgdGhlIHJhbmdlIG1heGltdW0gaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCi10aGUgbWluaW11bSwgdGhlIHJhbmdlIGlzIGlnbm9yZWQuPC9wPgotPHA+SWYgdGhlIHZhbHVlIHBhc3NlcyBpdHMgcmFuZ2UgY2hlY2ssIGl0IGlzIHBhZGRlZCB3aXRoIGFzIG1hbnkKLXRyYWlsaW5nIHplcm8gZGlnaXRzIGFzIG5lY2Vzc2FyeSB0byBtZWV0IHRoZSBwYWRkaW5nIGFyZ3VtZW50LjwvcD4KLTxwPkEgVFlQRV9OVU1FUklDIHZhbHVlIGJ1ZmZlciBjYW4gY29udmVuaWVudGx5IGJlIGludGVycHJldGVkIHdpdGgKLXRoZSBDIGxpYnJhcnkgZnVuY3Rpb24gYXRvZigzKS48L3A+Ci08aDEgY2xhc3M9IkJSSURHRUhFQUQiPjxhIG5hbWU9IkFFTjEwOTYiIGlkPQotIkFFTjEwOTYiPjwvYT5UWVBFX1JFR0VYUDwvaDE+Ci08cD5UaGlzIGZpZWxkIHR5cGUgYWNjZXB0cyBkYXRhIG1hdGNoaW5nIGEgcmVndWxhciBleHByZXNzaW9uLiBJdAotaXMgc2V0IHVwIGFzIGZvbGxvd3M6PC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KKyAgICAgICAgICAgICAgICAgICBpbnQgdm1pbiwgaW50IHZtYXgpOyAgIC8qIHZhbGlkIHJhbmdlICovPC9QUkUKKz48UAorPlZhbGlkIGNoYXJhY3RlcnMgY29uc2lzdCBvZiBhbiBvcHRpb25hbCBsZWFkaW5nIG1pbnVzIGFuZCBkaWdpdHMuIHBvc3NpYmx5CitpbmNsdWRpbmcgYSBkZWNpbWFsIHBvaW50LiAgVGhlIHJhbmdlIGNoZWNrIGlzIHBlcmZvcm1lZCBvbiBleGl0LiAgSWYgdGhlCityYW5nZSBtYXhpbXVtIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSwgdGhlIHJhbmdlIGlzCitpZ25vcmVkLiA8L1AKKz48UAorPklmIHRoZSB2YWx1ZSBwYXNzZXMgaXRzIHJhbmdlIGNoZWNrLCBpdCBpcyBwYWRkZWQgd2l0aCBhcyBtYW55IHRyYWlsaW5nCit6ZXJvIGRpZ2l0cyBhcyBuZWNlc3NhcnkgdG8gbWVldCB0aGUgcGFkZGluZyBhcmd1bWVudC4gPC9QCis+PFAKKz5BIFRZUEVfTlVNRVJJQyB2YWx1ZSBidWZmZXIgY2FuIGNvbnZlbmllbnRseSBiZSBpbnRlcnByZXRlZCB3aXRoIHRoZSBDIGxpYnJhcnkgCitmdW5jdGlvbiBhdG9mKDMpLjwvUAorPjxIMQorQ0xBU1M9IkJSSURHRUhFQUQiCis+PEEKK05BTUU9IkFFTjEwOTYiCis+PC9BCis+VFlQRV9SRUdFWFA8L0gxCis+PFAKKz5UaGlzIGZpZWxkIHR5cGUgYWNjZXB0cyBkYXRhIG1hdGNoaW5nIGEgcmVndWxhciBleHByZXNzaW9uLiAgSXQgaXMgc2V0IHVwCithcyBmb2xsb3dzOiA8L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgICAgICAgICAgLyogZmllbGQgdG8gYWx0ZXIgKi8KICAgICAgICAgICAgICAgICAgICBUWVBFX1JFR0VYUCwgICAgICAgICAgIC8qIHR5cGUgdG8gYXNzb2NpYXRlICovCi0gICAgICAgICAgICAgICAgICAgY2hhciAqcmVnZXhwKTsgICAgICAgICAvKiBleHByZXNzaW9uIHRvIG1hdGNoICovPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+VGhlIHN5bnRheCBmb3IgcmVndWxhciBleHByZXNzaW9ucyBpcyB0aGF0IG9mIHJlZ2NvbXAoMykuIFRoZQotY2hlY2sgZm9yIHJlZ3VsYXItZXhwcmVzc2lvbiBtYXRjaCBpcyBwZXJmb3JtZWQgb24gZXhpdC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IkZPUk1EUklWRVIiIGlkPSJGT1JNRFJJVkVSIj4xOC42LiBGb3JtCi1Ecml2ZXI6IFRoZSB3b3JrIGhvcnNlIG9mIHRoZSBmb3JtcyBzeXN0ZW08L2E+PC9oMz4KLTxwPkFzIGluIHRoZSBtZW51IHN5c3RlbSwgZm9ybV9kcml2ZXIoKSBwbGF5cyBhIHZlcnkgaW1wb3J0YW50IHJvbGUKLWluIGZvcm1zIHN5c3RlbS4gQWxsIHR5cGVzIG9mIHJlcXVlc3RzIHRvIGZvcm1zIHN5c3RlbSBzaG91bGQgYmUKLWZ1bm5lbGVkIHRocm91Z2ggZm9ybV9kcml2ZXIoKS48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj5pbnQgZm9ybV9kcml2ZXIoRk9STSAqZm9ybSwgICAgIC8qIGZvcm0gb24gd2hpY2ggdG8gb3BlcmF0ZSAgICAgKi8KLSAgICAgICAgICAgICAgICBpbnQgcmVxdWVzdCkgICAgLyogZm9ybSByZXF1ZXN0IGNvZGUgICAgICAgICAqLzwvZm9udD4KLTwvcHJlPjwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxwPkFzIHlvdSBoYXZlIHNlZW4gc29tZSBvZiB0aGUgZXhhbXBsZXMgYWJvdmUsIHlvdSBoYXZlIHRvIGJlIGluIGEKLWxvb3AgbG9va2luZyBmb3IgdXNlciBpbnB1dCBhbmQgdGhlbiBkZWNpZGUgd2hldGhlciBpdCdzIGEgZmllbGQKLWRhdGEgb3IgYSBmb3JtIHJlcXVlc3QuIFRoZSBmb3JtIHJlcXVlc3RzIGFyZSB0aGVuIHBhc3NlZCB0bwotZm9ybV9kcml2ZXIoKSB0byBkbyB0aGUgd29yay48L3A+Ci08cD5UaGUgcmVxdWVzdHMgcm91Z2hseSBjYW4gYmUgZGl2aWRlZCBpbnRvIGZvbGxvd2luZyBjYXRlZ29yaWVzLgotRGlmZmVyZW50IHJlcXVlc3RzIGFuZCB0aGVpciB1c2FnZSBpcyBleHBsYWluZWQgYmVsb3c6PC9wPgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iUEFHRU5BVlJFUSIgaWQ9IlBBR0VOQVZSRVEiPjE4LjYuMS4gUGFnZQotTmF2aWdhdGlvbiBSZXF1ZXN0czwvYT48L2g0PgotPHA+VGhlc2UgcmVxdWVzdHMgY2F1c2UgcGFnZS1sZXZlbCBtb3ZlcyB0aHJvdWdoIHRoZSBmb3JtLAotdHJpZ2dlcmluZyBkaXNwbGF5IG9mIGEgbmV3IGZvcm0gc2NyZWVuLiBBIGZvcm0gY2FuIGJlIG1hZGUgb2YKLW11bHRpcGxlIHBhZ2VzLiBJZiB5b3UgaGF2ZSBhIGJpZyBmb3JtIHdpdGggbG90IG9mIGZpZWxkcyBhbmQKLWxvZ2ljYWwgc2VjdGlvbnMsIHRoZW4geW91IGNhbiBkaXZpZGUgdGhlIGZvcm0gaW50byBwYWdlcy4gVGhlCi1mdW5jdGlvbiBzZXRfbmV3X3BhZ2UoKSB0byBzZXQgYSBuZXcgcGFnZSBhdCB0aGUgZmllbGQKLXNwZWNpZmllZC48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0KLSIjMDAwMDAwIj5pbnQgc2V0X25ld19wYWdlKEZJRUxEICpmaWVsZCwvKiBGaWVsZCBhdCB3aGljaCBwYWdlIGJyZWFrIHRvIGJlIHNldCBvciB1bnNldCAqLwotICAgICAgICAgYm9vbCBuZXdfcGFnZV9mbGFnKTsgLyogc2hvdWxkIGJlIFRSVUUgdG8gcHV0IGEgYnJlYWsgKi88L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGUgZm9sbG93aW5nIHJlcXVlc3RzIGFsbG93IHlvdSB0byBtb3ZlIHRvIGRpZmZlcmVudCBwYWdlczwvcD4KLTx1bD4KLTxsaT4KLTxwPjxlbT5SRVFfTkVYVF9QQUdFPC9lbT4gTW92ZSB0byB0aGUgbmV4dCBmb3JtIHBhZ2UuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfUFJFVl9QQUdFPC9lbT4gTW92ZSB0byB0aGUgcHJldmlvdXMgZm9ybSBwYWdlLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0ZJUlNUX1BBR0U8L2VtPiBNb3ZlIHRvIHRoZSBmaXJzdCBmb3JtIHBhZ2UuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTEFTVF9QQUdFPC9lbT4gTW92ZSB0byB0aGUgbGFzdCBmb3JtIHBhZ2UuPC9wPgotPC9saT4KLTwvdWw+Ci08cD5UaGVzZSByZXF1ZXN0cyB0cmVhdCB0aGUgbGlzdCBhcyBjeWNsaWM7IHRoYXQgaXMsIFJFUV9ORVhUX1BBR0UKLWZyb20gdGhlIGxhc3QgcGFnZSBnb2VzIHRvIHRoZSBmaXJzdCwgYW5kIFJFUV9QUkVWX1BBR0UgZnJvbSB0aGUKLWZpcnN0IHBhZ2UgZ29lcyB0byB0aGUgbGFzdC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IklOVEVSRklFTEROQVZSRVEiIGlkPQotIklOVEVSRklFTEROQVZSRVEiPjE4LjYuMi4gSW50ZXItRmllbGQgTmF2aWdhdGlvbiBSZXF1ZXN0czwvYT48L2g0PgotPHA+VGhlc2UgcmVxdWVzdHMgaGFuZGxlIG5hdmlnYXRpb24gYmV0d2VlbiBmaWVsZHMgb24gdGhlIHNhbWUKLXBhZ2UuPC9wPgotPHVsPgotPGxpPgotPHA+PGVtPlJFUV9ORVhUX0ZJRUxEPC9lbT4gTW92ZSB0byBuZXh0IGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1BSRVZfRklFTEQ8L2VtPiBNb3ZlIHRvIHByZXZpb3VzIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0ZJUlNUX0ZJRUxEPC9lbT4gTW92ZSB0byB0aGUgZmlyc3QgZmllbGQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTEFTVF9GSUVMRDwvZW0+IE1vdmUgdG8gdGhlIGxhc3QgZmllbGQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfU05FWFRfRklFTEQ8L2VtPiBNb3ZlIHRvIHNvcnRlZCBuZXh0IGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NQUkVWX0ZJRUxEPC9lbT4gTW92ZSB0byBzb3J0ZWQgcHJldmlvdXMgZmllbGQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfU0ZJUlNUX0ZJRUxEPC9lbT4gTW92ZSB0byB0aGUgc29ydGVkIGZpcnN0IGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NMQVNUX0ZJRUxEPC9lbT4gTW92ZSB0byB0aGUgc29ydGVkIGxhc3QgZmllbGQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTEVGVF9GSUVMRDwvZW0+IE1vdmUgbGVmdCB0byBmaWVsZC48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9SSUdIVF9GSUVMRDwvZW0+IE1vdmUgcmlnaHQgdG8gZmllbGQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfVVBfRklFTEQ8L2VtPiBNb3ZlIHVwIHRvIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0RPV05fRklFTEQ8L2VtPiBNb3ZlIGRvd24gdG8gZmllbGQuPC9wPgotPC9saT4KLTwvdWw+Ci08cD5UaGVzZSByZXF1ZXN0cyB0cmVhdCB0aGUgbGlzdCBvZiBmaWVsZHMgb24gYSBwYWdlIGFzIGN5Y2xpYzsKLXRoYXQgaXMsIFJFUV9ORVhUX0ZJRUxEIGZyb20gdGhlIGxhc3QgZmllbGQgZ29lcyB0byB0aGUgZmlyc3QsIGFuZAotUkVRX1BSRVZfRklFTEQgZnJvbSB0aGUgZmlyc3QgZmllbGQgZ29lcyB0byB0aGUgbGFzdC4gVGhlIG9yZGVyIG9mCi10aGUgZmllbGRzIGZvciB0aGVzZSAoYW5kIHRoZSBSRVFfRklSU1RfRklFTEQgYW5kIFJFUV9MQVNUX0ZJRUxECi1yZXF1ZXN0cykgaXMgc2ltcGx5IHRoZSBvcmRlciBvZiB0aGUgZmllbGQgcG9pbnRlcnMgaW4gdGhlIGZvcm0KLWFycmF5IChhcyBzZXQgdXAgYnkgbmV3X2Zvcm0oKSBvciBzZXRfZm9ybV9maWVsZHMoKTwvcD4KLTxwPkl0IGlzIGFsc28gcG9zc2libGUgdG8gdHJhdmVyc2UgdGhlIGZpZWxkcyBhcyBpZiB0aGV5IGhhZCBiZWVuCi1zb3J0ZWQgaW4gc2NyZWVuLXBvc2l0aW9uIG9yZGVyLCBzbyB0aGUgc2VxdWVuY2UgZ29lcyBsZWZ0LXRvLXJpZ2h0Ci1hbmQgdG9wLXRvLWJvdHRvbS4gVG8gZG8gdGhpcywgdXNlIHRoZSBzZWNvbmQgZ3JvdXAgb2YgZm91cgotc29ydGVkLW1vdmVtZW50IHJlcXVlc3RzLjwvcD4KLTxwPkZpbmFsbHksIGl0IGlzIHBvc3NpYmxlIHRvIG1vdmUgYmV0d2VlbiBmaWVsZHMgdXNpbmcgdmlzdWFsCi1kaXJlY3Rpb25zIHVwLCBkb3duLCByaWdodCwgYW5kIGxlZnQuIFRvIGFjY29tcGxpc2ggdGhpcywgdXNlIHRoZQotdGhpcmQgZ3JvdXAgb2YgZm91ciByZXF1ZXN0cy4gTm90ZSwgaG93ZXZlciwgdGhhdCB0aGUgcG9zaXRpb24gb2YgYQotZm9ybSBmb3IgcHVycG9zZXMgb2YgdGhlc2UgcmVxdWVzdHMgaXMgaXRzIHVwcGVyLWxlZnQgY29ybmVyLjwvcD4KLTxwPkZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlIGEgbXVsdGktbGluZSBmaWVsZCBCLCBhbmQgdHdvCi1zaW5nbGUtbGluZSBmaWVsZHMgQSBhbmQgQyBvbiB0aGUgc2FtZSBsaW5lIHdpdGggQiwgd2l0aCBBIHRvIHRoZQotbGVmdCBvZiBCIGFuZCBDIHRvIHRoZSByaWdodCBvZiBCLiBBIFJFUV9NT1ZFX1JJR0hUIGZyb20gQSB3aWxsIGdvCi10byBCIG9ubHkgaWYgQSwgQiwgYW5kIEMgYWxsIHNoYXJlIHRoZSBzYW1lIGZpcnN0IGxpbmU7IG90aGVyd2lzZQotaXQgd2lsbCBza2lwIG92ZXIgQiB0byBDLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iSU5UUkFGSUVMRE5BVlJFUSIgaWQ9Ci0iSU5UUkFGSUVMRE5BVlJFUSI+MTguNi4zLiBJbnRyYS1GaWVsZCBOYXZpZ2F0aW9uIFJlcXVlc3RzPC9hPjwvaDQ+Ci08cD5UaGVzZSByZXF1ZXN0cyBkcml2ZSBtb3ZlbWVudCBvZiB0aGUgZWRpdCBjdXJzb3Igd2l0aGluIHRoZQotY3VycmVudGx5IHNlbGVjdGVkIGZpZWxkLjwvcD4KLTx1bD4KLTxsaT4KLTxwPjxlbT5SRVFfTkVYVF9DSEFSPC9lbT4gTW92ZSB0byBuZXh0IGNoYXJhY3Rlci48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9QUkVWX0NIQVI8L2VtPiBNb3ZlIHRvIHByZXZpb3VzIGNoYXJhY3Rlci48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9ORVhUX0xJTkU8L2VtPiBNb3ZlIHRvIG5leHQgbGluZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9QUkVWX0xJTkU8L2VtPiBNb3ZlIHRvIHByZXZpb3VzIGxpbmUuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTkVYVF9XT1JEPC9lbT4gTW92ZSB0byBuZXh0IHdvcmQuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfUFJFVl9XT1JEPC9lbT4gTW92ZSB0byBwcmV2aW91cyB3b3JkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0JFR19GSUVMRDwvZW0+IE1vdmUgdG8gYmVnaW5uaW5nIG9mIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0VORF9GSUVMRDwvZW0+IE1vdmUgdG8gZW5kIG9mIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0JFR19MSU5FPC9lbT4gTW92ZSB0byBiZWdpbm5pbmcgb2YgbGluZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9FTkRfTElORTwvZW0+IE1vdmUgdG8gZW5kIG9mIGxpbmUuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTEVGVF9DSEFSPC9lbT4gTW92ZSBsZWZ0IGluIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1JJR0hUX0NIQVI8L2VtPiBNb3ZlIHJpZ2h0IGluIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1VQX0NIQVI8L2VtPiBNb3ZlIHVwIGluIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0RPV05fQ0hBUjwvZW0+IE1vdmUgZG93biBpbiBmaWVsZC48L3A+Ci08L2xpPgotPC91bD4KLTxwPkVhY2ggd29yZCBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgcHJldmlvdXMgYW5kIG5leHQgY2hhcmFjdGVycyBieQotd2hpdGVzcGFjZS4gVGhlIGNvbW1hbmRzIHRvIG1vdmUgdG8gYmVnaW5uaW5nIGFuZCBlbmQgb2YgbGluZSBvcgotZmllbGQgbG9vayBmb3IgdGhlIGZpcnN0IG9yIGxhc3Qgbm9uLXBhZCBjaGFyYWN0ZXIgaW4gdGhlaXIKLXJhbmdlcy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IlNDUk9MTFJFUSIgaWQ9IlNDUk9MTFJFUSI+MTguNi40LgotU2Nyb2xsaW5nIFJlcXVlc3RzPC9hPjwvaDQ+Ci08cD5GaWVsZHMgdGhhdCBhcmUgZHluYW1pYyBhbmQgaGF2ZSBncm93biBhbmQgZmllbGRzIGV4cGxpY2l0bHkKLWNyZWF0ZWQgd2l0aCBvZmZzY3JlZW4gcm93cyBhcmUgc2Nyb2xsYWJsZS4gT25lLWxpbmUgZmllbGRzIHNjcm9sbAotaG9yaXpvbnRhbGx5OyBtdWx0aS1saW5lIGZpZWxkcyBzY3JvbGwgdmVydGljYWxseS4gTW9zdCBzY3JvbGxpbmcKLWlzIHRyaWdnZXJlZCBieSBlZGl0aW5nIGFuZCBpbnRyYS1maWVsZCBtb3ZlbWVudCAodGhlIGxpYnJhcnkKLXNjcm9sbHMgdGhlIGZpZWxkIHRvIGtlZXAgdGhlIGN1cnNvciB2aXNpYmxlKS4gSXQgaXMgcG9zc2libGUgdG8KLWV4cGxpY2l0bHkgcmVxdWVzdCBzY3JvbGxpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHJlcXVlc3RzOjwvcD4KLTx1bD4KLTxsaT4KLTxwPjxlbT5SRVFfU0NSX0ZMSU5FPC9lbT4gU2Nyb2xsIHZlcnRpY2FsbHkgZm9yd2FyZCBhIGxpbmUuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfU0NSX0JMSU5FPC9lbT4gU2Nyb2xsIHZlcnRpY2FsbHkgYmFja3dhcmQgYSBsaW5lLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9GUEFHRTwvZW0+IFNjcm9sbCB2ZXJ0aWNhbGx5IGZvcndhcmQgYSBwYWdlLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9CUEFHRTwvZW0+IFNjcm9sbCB2ZXJ0aWNhbGx5IGJhY2t3YXJkIGEgcGFnZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9TQ1JfRkhQQUdFPC9lbT4gU2Nyb2xsIHZlcnRpY2FsbHkgZm9yd2FyZCBoYWxmIGEKLXBhZ2UuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfU0NSX0JIUEFHRTwvZW0+IFNjcm9sbCB2ZXJ0aWNhbGx5IGJhY2t3YXJkIGhhbGYgYQotcGFnZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9TQ1JfRkNIQVI8L2VtPiBTY3JvbGwgaG9yaXpvbnRhbGx5IGZvcndhcmQgYQotY2hhcmFjdGVyLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9CQ0hBUjwvZW0+IFNjcm9sbCBob3Jpem9udGFsbHkgYmFja3dhcmQgYQotY2hhcmFjdGVyLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9IRkxJTkU8L2VtPiBTY3JvbGwgaG9yaXpvbnRhbGx5IG9uZSBmaWVsZCB3aWR0aAotZm9yd2FyZC48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9TQ1JfSEJMSU5FPC9lbT4gU2Nyb2xsIGhvcml6b250YWxseSBvbmUgZmllbGQgd2lkdGgKLWJhY2t3YXJkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9IRkhBTEY8L2VtPiBTY3JvbGwgaG9yaXpvbnRhbGx5IG9uZSBoYWxmIGZpZWxkIHdpZHRoCi1mb3J3YXJkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX1NDUl9IQkhBTEY8L2VtPiBTY3JvbGwgaG9yaXpvbnRhbGx5IG9uZSBoYWxmIGZpZWxkIHdpZHRoCi1iYWNrd2FyZC48L3A+Ci08L2xpPgotPC91bD4KLTxwPkZvciBzY3JvbGxpbmcgcHVycG9zZXMsIGEgcGFnZSBvZiBhIGZpZWxkIGlzIHRoZSBoZWlnaHQgb2YgaXRzCi12aXNpYmxlIHBhcnQuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJFRElUUkVRIiBpZD0iRURJVFJFUSI+MTguNi41LiBFZGl0aW5nCi1SZXF1ZXN0czwvYT48L2g0PgotPHA+V2hlbiB5b3UgcGFzcyB0aGUgZm9ybXMgZHJpdmVyIGFuIEFTQ0lJIGNoYXJhY3RlciwgaXQgaXMgdHJlYXRlZAotYXMgYSByZXF1ZXN0IHRvIGFkZCB0aGUgY2hhcmFjdGVyIHRvIHRoZSBmaWVsZCdzIGRhdGEgYnVmZmVyLgotV2hldGhlciB0aGlzIGlzIGFuIGluc2VydGlvbiBvciBhIHJlcGxhY2VtZW50IGRlcGVuZHMgb24gdGhlCi1maWVsZCdzIGVkaXQgbW9kZSAoaW5zZXJ0aW9uIGlzIHRoZSBkZWZhdWx0LjwvcD4KLTxwPlRoZSBmb2xsb3dpbmcgcmVxdWVzdHMgc3VwcG9ydCBlZGl0aW5nIHRoZSBmaWVsZCBhbmQgY2hhbmdpbmcKLXRoZSBlZGl0IG1vZGU6PC9wPgotPHVsPgotPGxpPgotPHA+PGVtPlJFUV9JTlNfTU9ERTwvZW0+IFNldCBpbnNlcnRpb24gbW9kZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9PVkxfTU9ERTwvZW0+IFNldCBvdmVybGF5IG1vZGUuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfTkVXX0xJTkU8L2VtPiBOZXcgbGluZSByZXF1ZXN0IChzZWUgYmVsb3cgZm9yCi1leHBsYW5hdGlvbikuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfSU5TX0NIQVI8L2VtPiBJbnNlcnQgc3BhY2UgYXQgY2hhcmFjdGVyIGxvY2F0aW9uLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0lOU19MSU5FPC9lbT4gSW5zZXJ0IGJsYW5rIGxpbmUgYXQgY2hhcmFjdGVyCi1sb2NhdGlvbi48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9ERUxfQ0hBUjwvZW0+IERlbGV0ZSBjaGFyYWN0ZXIgYXQgY3Vyc29yLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0RFTF9QUkVWPC9lbT4gRGVsZXRlIHByZXZpb3VzIHdvcmQgYXQgY3Vyc29yLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0RFTF9MSU5FPC9lbT4gRGVsZXRlIGxpbmUgYXQgY3Vyc29yLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0RFTF9XT1JEPC9lbT4gRGVsZXRlIHdvcmQgYXQgY3Vyc29yLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0NMUl9FT0w8L2VtPiBDbGVhciB0byBlbmQgb2YgbGluZS48L3A+Ci08L2xpPgotPGxpPgotPHA+PGVtPlJFUV9DTFJfRU9GPC9lbT4gQ2xlYXIgdG8gZW5kIG9mIGZpZWxkLjwvcD4KLTwvbGk+Ci08bGk+Ci08cD48ZW0+UkVRX0NMUl9GSUVMRDwvZW0+IENsZWFyIGVudGlyZSBmaWVsZC48L3A+Ci08L2xpPgotPC91bD4KLTxwPlRoZSBiZWhhdmlvciBvZiB0aGUgUkVRX05FV19MSU5FIGFuZCBSRVFfREVMX1BSRVYgcmVxdWVzdHMgaXMKLWNvbXBsaWNhdGVkIGFuZCBwYXJ0bHkgY29udHJvbGxlZCBieSBhIHBhaXIgb2YgZm9ybXMgb3B0aW9ucy4gVGhlCi1zcGVjaWFsIGNhc2VzIGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YKLWEgZmllbGQsIG9yIG9uIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGZpZWxkLjwvcD4KLTxwPkZpcnN0LCB3ZSBjb25zaWRlciBSRVFfTkVXX0xJTkU6PC9wPgotPHA+VGhlIG5vcm1hbCBiZWhhdmlvciBvZiBSRVFfTkVXX0xJTkUgaW4gaW5zZXJ0IG1vZGUgaXMgdG8gYnJlYWsKLXRoZSBjdXJyZW50IGxpbmUgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBlZGl0IGN1cnNvciwgaW5zZXJ0aW5nIHRoZQotcG9ydGlvbiBvZiB0aGUgY3VycmVudCBsaW5lIGFmdGVyIHRoZSBjdXJzb3IgYXMgYSBuZXcgbGluZQotZm9sbG93aW5nIHRoZSBjdXJyZW50IGFuZCBtb3ZpbmcgdGhlIGN1cnNvciB0byB0aGUgYmVnaW5uaW5nIG9mCi10aGF0IG5ldyBsaW5lICh5b3UgbWF5IHRoaW5rIG9mIHRoaXMgYXMgaW5zZXJ0aW5nIGEgbmV3bGluZSBpbiB0aGUKLWZpZWxkIGJ1ZmZlcikuPC9wPgotPHA+VGhlIG5vcm1hbCBiZWhhdmlvciBvZiBSRVFfTkVXX0xJTkUgaW4gb3ZlcmxheSBtb2RlIGlzIHRvIGNsZWFyCi10aGUgY3VycmVudCBsaW5lIGZyb20gdGhlIHBvc2l0aW9uIG9mIHRoZSBlZGl0IGN1cnNvciB0byBlbmQgb2YKLWxpbmUuIFRoZSBjdXJzb3IgaXMgdGhlbiBtb3ZlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0Ci1saW5lLjwvcD4KLTxwPkhvd2V2ZXIsIFJFUV9ORVdfTElORSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgZmllbGQsIG9yIG9uIHRoZQotbGFzdCBsaW5lIG9mIGEgZmllbGQsIGluc3RlYWQgZG9lcyBhIFJFUV9ORVhUX0ZJRUxELiBPX05MX09WRVJMT0FECi1vcHRpb24gaXMgb2ZmLCB0aGlzIHNwZWNpYWwgYWN0aW9uIGlzIGRpc2FibGVkLjwvcD4KLTxwPk5vdywgbGV0IHVzIGNvbnNpZGVyIFJFUV9ERUxfUFJFVjo8L3A+Ci08cD5UaGUgbm9ybWFsIGJlaGF2aW9yIG9mIFJFUV9ERUxfUFJFViBpcyB0byBkZWxldGUgdGhlIHByZXZpb3VzCi1jaGFyYWN0ZXIuIElmIGluc2VydCBtb2RlIGlzIG9uLCBhbmQgdGhlIGN1cnNvciBpcyBhdCB0aGUgc3RhcnQgb2YKLWEgbGluZSwgYW5kIHRoZSB0ZXh0IG9uIHRoYXQgbGluZSB3aWxsIGZpdCBvbiB0aGUgcHJldmlvdXMgb25lLCBpdAotaW5zdGVhZCBhcHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgY3VycmVudCBsaW5lIHRvIHRoZSBwcmV2aW91cwotb25lIGFuZCBkZWxldGVzIHRoZSBjdXJyZW50IGxpbmUgKHlvdSBtYXkgdGhpbmsgb2YgdGhpcyBhcyBkZWxldGluZwotYSBuZXdsaW5lIGZyb20gdGhlIGZpZWxkIGJ1ZmZlcikuPC9wPgotPHA+SG93ZXZlciwgUkVRX0RFTF9QUkVWIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBmaWVsZCBpcyBpbnN0ZWFkCi10cmVhdGVkIGFzIGEgUkVRX1BSRVZfRklFTEQuPC9wPgotPHA+SWYgdGhlIE9fQlNfT1ZFUkxPQUQgb3B0aW9uIGlzIG9mZiwgdGhpcyBzcGVjaWFsIGFjdGlvbiBpcwotZGlzYWJsZWQgYW5kIHRoZSBmb3JtcyBkcml2ZXIganVzdCByZXR1cm5zIEVfUkVRVUVTVF9ERU5JRUQuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJPUkRFUlJFUSIgaWQ9Ik9SREVSUkVRIj4xOC42LjYuIE9yZGVyCi1SZXF1ZXN0czwvYT48L2g0PgotPHA+SWYgdGhlIHR5cGUgb2YgeW91ciBmaWVsZCBpcyBvcmRlcmVkLCBhbmQgaGFzIGFzc29jaWF0ZWQKLWZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgbmV4dCBhbmQgcHJldmlvdXMgdmFsdWVzIG9mIHRoZSB0eXBlIGZyb20KLWEgZ2l2ZW4gdmFsdWUsIHRoZXJlIGFyZSByZXF1ZXN0cyB0aGF0IGNhbiBmZXRjaCB0aGF0IHZhbHVlIGludG8KLXRoZSBmaWVsZCBidWZmZXI6PC9wPgotPHVsPgotPGxpPgotPHA+PGVtPlJFUV9ORVhUX0NIT0lDRTwvZW0+IFBsYWNlIHRoZSBzdWNjZXNzb3IgdmFsdWUgb2YgdGhlCi1jdXJyZW50IHZhbHVlIGluIHRoZSBidWZmZXIuPC9wPgotPC9saT4KLTxsaT4KLTxwPjxlbT5SRVFfUFJFVl9DSE9JQ0U8L2VtPiBQbGFjZSB0aGUgcHJlZGVjZXNzb3IgdmFsdWUgb2YgdGhlCi1jdXJyZW50IHZhbHVlIGluIHRoZSBidWZmZXIuPC9wPgotPC9saT4KLTwvdWw+Ci08cD5PZiB0aGUgYnVpbHQtaW4gZmllbGQgdHlwZXMsIG9ubHkgVFlQRV9FTlVNIGhhcyBidWlsdC1pbgotc3VjY2Vzc29yIGFuZCBwcmVkZWNlc3NvciBmdW5jdGlvbnMuIFdoZW4geW91IGRlZmluZSBhIGZpZWxkIHR5cGUKLW9mIHlvdXIgb3duIChzZWUgQ3VzdG9tIFZhbGlkYXRpb24gVHlwZXMpLCB5b3UgY2FuIGFzc29jaWF0ZSBvdXIKLW93biBvcmRlcmluZyBmdW5jdGlvbnMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJBUFBMSUNDT01NQU5EUyIgaWQ9Ci0iQVBQTElDQ09NTUFORFMiPjE4LjYuNy4gQXBwbGljYXRpb24gQ29tbWFuZHM8L2E+PC9oND4KLTxwPkZvcm0gcmVxdWVzdHMgYXJlIHJlcHJlc2VudGVkIGFzIGludGVnZXJzIGFib3ZlIHRoZSBjdXJzZXMgdmFsdWUKLWdyZWF0ZXIgdGhhbiBLRVlfTUFYIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGNvbnN0YW50Ci1NQVhfQ09NTUFORC4gQSB2YWx1ZSB3aXRoaW4gdGhpcyByYW5nZSBnZXRzIGlnbm9yZWQgYnkKLWZvcm1fZHJpdmVyKCkuIFNvIHRoaXMgY2FuIGJlIHVzZWQgZm9yIGFueSBwdXJwb3NlIGJ5IHRoZQotYXBwbGljYXRpb24uIEl0IGNhbiBiZSB0cmVhdGVkIGFzIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGFjdGlvbgotYW5kIHRha2UgY29ycmVzcG9uZGluZyBhY3Rpb24uPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDEiPgotPGhyPgotPGgyIGNsYXNzPSJTRUNUMSI+PGEgbmFtZT0iVE9PTFMiIGlkPSJUT09MUyI+MTkuIFRvb2xzIGFuZCBXaWRnZXQKLUxpYnJhcmllczwvYT48L2gyPgotPHA+Tm93IHRoYXQgeW91IGhhdmUgc2VlbiB0aGUgY2FwYWJpbGl0aWVzIG9mIG5jdXJzZXMgYW5kIGl0cwotc2lzdGVyIGxpYnJhcmllcywgeW91IGFyZSByb2xsaW5nIHlvdXIgc2xlZXZlcyB1cCBhbmQgZ2VhcmluZyBmb3IgYQotcHJvamVjdCB0aGF0IGhlYXZpbHkgbWFuaXB1bGF0ZXMgc2NyZWVuLiBCdXQgd2FpdC4uIEl0IGNhbiBiZQotcHJldHR5IGRpZmZpY3VsdCB0byB3cml0ZSBhbmQgbWFpbnRhaW4gY29tcGxleCBHVUkgd2lkZ2V0cyBpbiBwbGFpbgotbmN1cnNlcyBvciBldmVuIHdpdGggdGhlIGFkZGl0aW9uYWwgbGlicmFyaWVzLiBUaGVyZSBhcmUgc29tZQotcmVhZHktdG8tdXNlIHRvb2xzIGFuZCB3aWRnZXQgbGlicmFyaWVzIHRoYXQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZgotd3JpdGluZyB5b3VyIG93biB3aWRnZXRzLiBZb3UgY2FuIHVzZSBzb21lIG9mIHRoZW0sIGdldCBpZGVhcyBmcm9tCi10aGUgY29kZSwgb3IgZXZlbiBleHRlbmQgdGhlbS48L3A+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJDREsiIGlkPSJDREsiPjE5LjEuIENESyAoQ3Vyc2VzCi1EZXZlbG9wbWVudCBLaXQpPC9hPjwvaDM+Ci08cD5JbiB0aGUgYXV0aG9yJ3Mgd29yZHM8L3A+Ci08cD48ZW0+Q0RLIHN0YW5kcyBmb3IgJ0N1cnNlcyBEZXZlbG9wbWVudCBLaXQnIGFuZCBpdCBjdXJyZW50bHkKLWNvbnRhaW5zIDIxIHJlYWR5IHRvIHVzZSB3aWRnZXRzIHdoaWNoIGZhY2lsaXRhdGUgdGhlIHNwZWVkeQotZGV2ZWxvcG1lbnQgb2YgZnVsbCBzY3JlZW4gY3Vyc2VzIHByb2dyYW1zLjwvZW0+PC9wPgotPHA+VGhlIGtpdCBwcm92aWRlcyBzb21lIHVzZWZ1bCB3aWRnZXRzLCB3aGljaCBjYW4gYmUgdXNlZCBpbiB5b3VyCi1wcm9ncmFtcyBkaXJlY3RseS4gSXQncyBwcmV0dHkgd2VsbCB3cml0dGVuIGFuZCB0aGUgZG9jdW1lbnRhdGlvbgotaXMgdmVyeSBnb29kLiBUaGUgZXhhbXBsZXMgaW4gdGhlIGV4YW1wbGVzIGRpcmVjdG9yeSBjYW4gYmUgYSBnb29kCi1wbGFjZSB0byBzdGFydCBmb3IgYmVnaW5uZXJzLiBUaGUgQ0RLIGNhbiBiZSBkb3dubG9hZGVkIGZyb20KLTxhIGhyZWY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvIiB0YXJnZXQ9Ci0iX3RvcCI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay88L2E+IC4gRm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIFJFQURNRSBmaWxlIHRvIGluc3RhbGwgaXQuPC9wPgotPGRpdiBjbGFzcz0iU0VDVDMiPgotPGhyPgotPGg0IGNsYXNzPSJTRUNUMyI+PGEgbmFtZT0iV0lER0VUTElTVCIgaWQ9IldJREdFVExJU1QiPjE5LjEuMS4KLVdpZGdldCBMaXN0PC9hPjwvaDQ+Ci08cD5UaGUgZm9sbG93aW5nIGlzIHRoZSBsaXN0IG9mIHdpZGdldHMgcHJvdmlkZWQgd2l0aCBjZGsgYW5kIHRoZWlyCi1kZXNjcmlwdGlvbi48L3A+Ci08dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRTBFMEUwIiB3aWR0aD0iMTAwJSI+Ci08dHI+Ci08dGQ+Ci08cHJlIGNsYXNzPSJQUk9HUkFNTElTVElORyI+Ci08Zm9udCBjb2xvcj0iIzAwMDAwMCI+V2lkZ2V0IFR5cGUgICAgICAgICAgIFF1aWNrIERlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgY2hhciAqcmVnZXhwKTsgICAgICAgICAvKiBleHByZXNzaW9uIHRvIG1hdGNoICovPC9QUkUKKz48UAorPlRoZSBzeW50YXggZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaXMgdGhhdCBvZiByZWdjb21wKDMpLgorVGhlIGNoZWNrIGZvciByZWd1bGFyLWV4cHJlc3Npb24gbWF0Y2ggaXMgcGVyZm9ybWVkIG9uIGV4aXQuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJGT1JNRFJJVkVSIgorPjE4LjYuIEZvcm0gRHJpdmVyOiBUaGUgd29yayBob3JzZSBvZiB0aGUgZm9ybXMgc3lzdGVtPC9BCis+PC9IMworPjxQCis+QXMgaW4gdGhlIG1lbnUgc3lzdGVtLCBmb3JtX2RyaXZlcigpIHBsYXlzIGEgdmVyeSBpbXBvcnRhbnQgcm9sZSBpbiBmb3Jtcworc3lzdGVtLiAgQWxsIHR5cGVzIG9mIHJlcXVlc3RzIHRvIGZvcm1zIHN5c3RlbSBzaG91bGQgYmUgZnVubmVsZWQgdGhyb3VnaAorZm9ybV9kcml2ZXIoKS48L1AKKz48UFJFCitDTEFTUz0iUFJPR1JBTUxJU1RJTkciCis+aW50IGZvcm1fZHJpdmVyKEZPUk0gKmZvcm0sICAgICAvKiBmb3JtIG9uIHdoaWNoIHRvIG9wZXJhdGUgICAgICovCisgICAgICAgICAgICAgICAgaW50IHJlcXVlc3QpICAgIC8qIGZvcm0gcmVxdWVzdCBjb2RlICAgICAgICAgKi88L1BSRQorPjxQCis+QXMgeW91IGhhdmUgc2VlbiBzb21lIG9mIHRoZSBleGFtcGxlcyBhYm92ZSwgeW91IGhhdmUgdG8gYmUgaW4gYSBsb29wIGxvb2tpbmcKK2ZvciB1c2VyIGlucHV0IGFuZCB0aGVuIGRlY2lkZSB3aGV0aGVyIGl0J3MgYSBmaWVsZCBkYXRhIG9yIGEgZm9ybSByZXF1ZXN0LiBUaGUKK2Zvcm0gcmVxdWVzdHMgYXJlIHRoZW4gcGFzc2VkIHRvIGZvcm1fZHJpdmVyKCkgdG8gZG8gdGhlIHdvcmsuPC9QCis+PFAKKz5UaGUgcmVxdWVzdHMgcm91Z2hseSBjYW4gYmUgZGl2aWRlZCBpbnRvIGZvbGxvd2luZyBjYXRlZ29yaWVzLiBEaWZmZXJlbnQKK3JlcXVlc3RzIGFuZCB0aGVpciB1c2FnZSBpcyBleHBsYWluZWQgYmVsb3c6PC9QCis+PERJVgorQ0xBU1M9IlNFQ1QzIgorPjxIUj48SDQKK0NMQVNTPSJTRUNUMyIKKz48QQorTkFNRT0iUEFHRU5BVlJFUSIKKz4xOC42LjEuIFBhZ2UgTmF2aWdhdGlvbiBSZXF1ZXN0czwvQQorPjwvSDQKKz48UAorPlRoZXNlIHJlcXVlc3RzIGNhdXNlIHBhZ2UtbGV2ZWwgbW92ZXMgdGhyb3VnaCB0aGUgZm9ybSwgdHJpZ2dlcmluZyBkaXNwbGF5IG9mIGEKK25ldyBmb3JtIHNjcmVlbi4gQSBmb3JtIGNhbiBiZSBtYWRlIG9mIG11bHRpcGxlIHBhZ2VzLiBJZiB5b3UgaGF2ZSBhIGJpZyBmb3JtCit3aXRoIGxvdCBvZiBmaWVsZHMgYW5kIGxvZ2ljYWwgc2VjdGlvbnMsIHRoZW4geW91IGNhbiBkaXZpZGUgdGhlIGZvcm0gaW50bworcGFnZXMuIFRoZSBmdW5jdGlvbiBzZXRfbmV3X3BhZ2UoKSB0byBzZXQgYSBuZXcgcGFnZSBhdCB0aGUgZmllbGQgc3BlY2lmaWVkLjwvUAorPjxQUkUKK0NMQVNTPSJQUk9HUkFNTElTVElORyIKKz5pbnQgc2V0X25ld19wYWdlKEZJRUxEICpmaWVsZCwvKiBGaWVsZCBhdCB3aGljaCBwYWdlIGJyZWFrIHRvIGJlIHNldCBvciB1bnNldCAqLworICAgICAgICAgYm9vbCBuZXdfcGFnZV9mbGFnKTsgLyogc2hvdWxkIGJlIFRSVUUgdG8gcHV0IGEgYnJlYWsgKi88L1BSRQorPjxQCis+VGhlIGZvbGxvd2luZyByZXF1ZXN0cyBhbGxvdyB5b3UgdG8gbW92ZSB0byBkaWZmZXJlbnQgcGFnZXM8L1AKKz48UAorPjwvUAorPjxVTAorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9ORVhUX1BBR0U8L0kKKz48L1NQQU4KKz4gTW92ZSB0byB0aGUgbmV4dCBmb3JtIHBhZ2UuPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9QUkVWX1BBR0U8L0kKKz48L1NQQU4KKz4gTW92ZSB0byB0aGUgcHJldmlvdXMKK2Zvcm0gcGFnZS48L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0ZJUlNUX1BBR0U8L0kKKz48L1NQQU4KKz4gTW92ZSB0byB0aGUgZmlyc3QgZm9ybSBwYWdlLjwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfTEFTVF9QQUdFPC9JCis+PC9TUEFOCis+IE1vdmUgdG8gdGhlIGxhc3QgZm9ybSBwYWdlLiA8L1AKKz48L0xJCis+PC9VTAorPjxQCis+VGhlc2UgcmVxdWVzdHMgdHJlYXQgdGhlIGxpc3QgYXMgY3ljbGljOyB0aGF0IGlzLCBSRVFfTkVYVF9QQUdFIGZyb20gdGhlCitsYXN0IHBhZ2UgZ29lcyB0byB0aGUgZmlyc3QsIGFuZCBSRVFfUFJFVl9QQUdFIGZyb20gdGhlIGZpcnN0IHBhZ2UgZ29lcyB0bwordGhlIGxhc3QuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJJTlRFUkZJRUxETkFWUkVRIgorPjE4LjYuMi4gSW50ZXItRmllbGQgTmF2aWdhdGlvbiBSZXF1ZXN0czwvQQorPjwvSDQKKz48UAorPlRoZXNlIHJlcXVlc3RzIGhhbmRsZSBuYXZpZ2F0aW9uIGJldHdlZW4gZmllbGRzIG9uIHRoZSBzYW1lIHBhZ2UuPC9QCis+PFAKKz48L1AKKz48VUwKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfTkVYVF9GSUVMRDwvSQorPjwvU1BBTgorPiAKKyAgICBNb3ZlIHRvIG5leHQgZmllbGQuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1BSRVZfRklFTEQ8L0kKKz48L1NQQU4KKz4KKyAgICBNb3ZlIHRvIHByZXZpb3VzIGZpZWxkLiAgPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9GSVJTVF9GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gdGhlIGZpcnN0IGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0xBU1RfRklFTEQ8L0kKKz48L1NQQU4KKz4gCisgICAgTW92ZSB0byB0aGUgbGFzdCBmaWVsZC4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9TTkVYVF9GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gc29ydGVkIG5leHQgZmllbGQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU1BSRVZfRklFTEQ8L0kKKz48L1NQQU4KKz4gCisgICAgTW92ZSB0byBzb3J0ZWQgcHJldmlvdXMgZmllbGQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0ZJUlNUX0ZJRUxEPC9JCis+PC9TUEFOCis+CisgICAgTW92ZSB0byB0aGUgc29ydGVkIGZpcnN0IGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1NMQVNUX0ZJRUxEPC9JCis+PC9TUEFOCis+CisgICAgTW92ZSB0byB0aGUgc29ydGVkIGxhc3QgZmllbGQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfTEVGVF9GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgbGVmdCB0byBmaWVsZC4gIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfUklHSFRfRklFTEQ8L0kKKz48L1NQQU4KKz4KKyAgICBNb3ZlIHJpZ2h0IHRvIGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1VQX0ZJRUxEPC9JCis+PC9TUEFOCis+CisgICAgTW92ZSB1cCB0byBmaWVsZC4gIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfRE9XTl9GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgZG93biB0byBmaWVsZC4gPC9QCis+PC9MSQorPjwvVUwKKz48UAorPlRoZXNlIHJlcXVlc3RzIHRyZWF0IHRoZSBsaXN0IG9mIGZpZWxkcyBvbiBhIHBhZ2UgYXMgY3ljbGljOyB0aGF0IGlzLAorUkVRX05FWFRfRklFTEQgZnJvbSB0aGUgbGFzdCBmaWVsZCBnb2VzIHRvIHRoZSBmaXJzdCwgYW5kIFJFUV9QUkVWX0ZJRUxECitmcm9tIHRoZSBmaXJzdCBmaWVsZCBnb2VzIHRvIHRoZSBsYXN0LiBUaGUgb3JkZXIgb2YgdGhlIGZpZWxkcyBmb3IgdGhlc2UKKyhhbmQgdGhlIFJFUV9GSVJTVF9GSUVMRCBhbmQgUkVRX0xBU1RfRklFTEQgcmVxdWVzdHMpIGlzIHNpbXBseSB0aGUgb3JkZXIgb2YKK3RoZSBmaWVsZCBwb2ludGVycyBpbiB0aGUgZm9ybSBhcnJheSAoYXMgc2V0IHVwIGJ5IG5ld19mb3JtKCkgb3IKK3NldF9mb3JtX2ZpZWxkcygpPC9QCis+PFAKKz5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHRyYXZlcnNlIHRoZSBmaWVsZHMgYXMgaWYgdGhleSBoYWQgYmVlbiBzb3J0ZWQgaW4KK3NjcmVlbi1wb3NpdGlvbiBvcmRlciwgc28gdGhlIHNlcXVlbmNlIGdvZXMgbGVmdC10by1yaWdodCBhbmQgdG9wLXRvLWJvdHRvbS4KK1RvIGRvIHRoaXMsIHVzZSB0aGUgc2Vjb25kIGdyb3VwIG9mIGZvdXIgc29ydGVkLW1vdmVtZW50IHJlcXVlc3RzLjwvUAorPjxQCis+RmluYWxseSwgaXQgaXMgcG9zc2libGUgdG8gbW92ZSBiZXR3ZWVuIGZpZWxkcyB1c2luZyB2aXN1YWwgZGlyZWN0aW9ucyB1cCwKK2Rvd24sIHJpZ2h0LCBhbmQgbGVmdC4gVG8gYWNjb21wbGlzaCB0aGlzLCB1c2UgdGhlIHRoaXJkIGdyb3VwIG9mIGZvdXIKK3JlcXVlc3RzLiBOb3RlLCBob3dldmVyLCB0aGF0IHRoZSBwb3NpdGlvbiBvZiBhIGZvcm0gZm9yIHB1cnBvc2VzIG9mIHRoZXNlCityZXF1ZXN0cyBpcyBpdHMgdXBwZXItbGVmdCBjb3JuZXIuPC9QCis+PFAKKz5Gb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBhIG11bHRpLWxpbmUgZmllbGQgQiwgYW5kIHR3byBzaW5nbGUtbGluZQorZmllbGRzIEEgYW5kIEMgb24gdGhlIHNhbWUgbGluZSB3aXRoIEIsIHdpdGggQSB0byB0aGUgbGVmdCBvZiBCIGFuZCBDIHRvIHRoZQorcmlnaHQgb2YgQi4gQSBSRVFfTU9WRV9SSUdIVCBmcm9tIEEgd2lsbCBnbyB0byBCIG9ubHkgaWYgQSwgQiwgYW5kIEMgYWxsCitzaGFyZSB0aGUgc2FtZSBmaXJzdCBsaW5lOyBvdGhlcndpc2UgaXQgd2lsbCBza2lwIG92ZXIgQiB0byBDLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QzIgorPjxIUj48SDQKK0NMQVNTPSJTRUNUMyIKKz48QQorTkFNRT0iSU5UUkFGSUVMRE5BVlJFUSIKKz4xOC42LjMuIEludHJhLUZpZWxkIE5hdmlnYXRpb24gUmVxdWVzdHM8L0EKKz48L0g0Cis+PFAKKz5UaGVzZSByZXF1ZXN0cyBkcml2ZSBtb3ZlbWVudCBvZiB0aGUgZWRpdCBjdXJzb3Igd2l0aGluIHRoZSBjdXJyZW50bHkKK3NlbGVjdGVkIGZpZWxkLjwvUAorPjxQCis+PC9QCis+PFVMCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX05FWFRfQ0hBUjwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gbmV4dCBjaGFyYWN0ZXIuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1BSRVZfQ0hBUjwvSQorPjwvU1BBTgorPiAKKyAgICBNb3ZlIHRvIHByZXZpb3VzIGNoYXJhY3Rlci4gIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfTkVYVF9MSU5FPC9JCis+PC9TUEFOCis+IAorICAgIE1vdmUgdG8gbmV4dCBsaW5lLiAgPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9QUkVWX0xJTkU8L0kKKz48L1NQQU4KKz4gCisgICAgTW92ZSB0byBwcmV2aW91cyBsaW5lLiAgPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9ORVhUX1dPUkQ8L0kKKz48L1NQQU4KKz4gCisgICAgTW92ZSB0byBuZXh0IHdvcmQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfUFJFVl9XT1JEPC9JCis+PC9TUEFOCis+CisgICAgTW92ZSB0byBwcmV2aW91cyB3b3JkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0JFR19GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gYmVnaW5uaW5nIG9mIGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0VORF9GSUVMRDwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gZW5kIG9mIGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0JFR19MSU5FPC9JCis+PC9TUEFOCis+CisgICAgTW92ZSB0byBiZWdpbm5pbmcgb2YgbGluZS4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9FTkRfTElORTwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgdG8gZW5kIG9mIGxpbmUuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0xFRlRfQ0hBUjwvSQorPjwvU1BBTgorPiAKKyAgICBNb3ZlIGxlZnQgaW4gZmllbGQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfUklHSFRfQ0hBUjwvSQorPjwvU1BBTgorPgorICAgIE1vdmUgcmlnaHQgaW4gZmllbGQuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1VQX0NIQVI8L0kKKz48L1NQQU4KKz4KKyAgICBNb3ZlIHVwIGluIGZpZWxkLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0RPV05fQ0hBUjwvSQorPjwvU1BBTgorPiAKKyAgICBNb3ZlIGRvd24gaW4gZmllbGQuIDwvUAorPjwvTEkKKz48L1VMCis+PFAKKz5FYWNoIHdvcmQgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHByZXZpb3VzIGFuZCBuZXh0IGNoYXJhY3RlcnMgYnkgd2hpdGVzcGFjZS4KK1RoZSBjb21tYW5kcyB0byBtb3ZlIHRvIGJlZ2lubmluZyBhbmQgZW5kIG9mIGxpbmUgb3IgZmllbGQgbG9vayBmb3IgdGhlCitmaXJzdCBvciBsYXN0IG5vbi1wYWQgY2hhcmFjdGVyIGluIHRoZWlyIHJhbmdlcy48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IlNDUk9MTFJFUSIKKz4xOC42LjQuIFNjcm9sbGluZyBSZXF1ZXN0czwvQQorPjwvSDQKKz48UAorPkZpZWxkcyB0aGF0IGFyZSBkeW5hbWljIGFuZCBoYXZlIGdyb3duIGFuZCBmaWVsZHMgZXhwbGljaXRseSBjcmVhdGVkIHdpdGgKK29mZnNjcmVlbiByb3dzIGFyZSBzY3JvbGxhYmxlLiBPbmUtbGluZSBmaWVsZHMgc2Nyb2xsIGhvcml6b250YWxseTsKK211bHRpLWxpbmUgZmllbGRzIHNjcm9sbCB2ZXJ0aWNhbGx5LiBNb3N0IHNjcm9sbGluZyBpcyB0cmlnZ2VyZWQgYnkgZWRpdGluZworYW5kIGludHJhLWZpZWxkIG1vdmVtZW50ICh0aGUgbGlicmFyeSBzY3JvbGxzIHRoZSBmaWVsZCB0byBrZWVwIHRoZSBjdXJzb3IKK3Zpc2libGUpLiBJdCBpcyBwb3NzaWJsZSB0byBleHBsaWNpdGx5IHJlcXVlc3Qgc2Nyb2xsaW5nIHdpdGggdGhlIGZvbGxvd2luZworcmVxdWVzdHM6PC9QCis+PFAKKz48L1AKKz48VUwKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0NSX0ZMSU5FPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIHZlcnRpY2FsbHkgZm9yd2FyZCBhIGxpbmUuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1NDUl9CTElORTwvSQorPjwvU1BBTgorPiAKKyAgICBTY3JvbGwgdmVydGljYWxseSBiYWNrd2FyZCBhIGxpbmUuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1NDUl9GUEFHRTwvSQorPjwvU1BBTgorPiAKKyAgICBTY3JvbGwgdmVydGljYWxseSBmb3J3YXJkIGEgcGFnZS4gIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0NSX0JQQUdFPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIHZlcnRpY2FsbHkgYmFja3dhcmQgYSBwYWdlLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1NDUl9GSFBBR0U8L0kKKz48L1NQQU4KKz4KKyAgICBTY3JvbGwgdmVydGljYWxseSBmb3J3YXJkIGhhbGYgYSBwYWdlLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX1NDUl9CSFBBR0U8L0kKKz48L1NQQU4KKz4KKyAgICBTY3JvbGwgdmVydGljYWxseSBiYWNrd2FyZCBoYWxmIGEgcGFnZS4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9TQ1JfRkNIQVI8L0kKKz48L1NQQU4KKz4KKyAgICBTY3JvbGwgaG9yaXpvbnRhbGx5IGZvcndhcmQgYSBjaGFyYWN0ZXIuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0NSX0JDSEFSPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIGhvcml6b250YWxseSBiYWNrd2FyZCBhIGNoYXJhY3Rlci4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9TQ1JfSEZMSU5FPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIGhvcml6b250YWxseSBvbmUgZmllbGQgd2lkdGggZm9yd2FyZC4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9TQ1JfSEJMSU5FPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIGhvcml6b250YWxseSBvbmUgZmllbGQgd2lkdGggYmFja3dhcmQuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfU0NSX0hGSEFMRjwvSQorPjwvU1BBTgorPgorICAgIFNjcm9sbCBob3Jpem9udGFsbHkgb25lIGhhbGYgZmllbGQgd2lkdGggZm9yd2FyZC4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9TQ1JfSEJIQUxGPC9JCis+PC9TUEFOCis+CisgICAgU2Nyb2xsIGhvcml6b250YWxseSBvbmUgaGFsZiBmaWVsZCB3aWR0aCBiYWNrd2FyZC4gPC9QCis+PC9MSQorPjwvVUwKKz48UAorPkZvciBzY3JvbGxpbmcgcHVycG9zZXMsIGEgcGFnZSBvZiBhIGZpZWxkIGlzIHRoZSBoZWlnaHQgb2YgaXRzIHZpc2libGUgcGFydC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IkVESVRSRVEiCis+MTguNi41LiBFZGl0aW5nIFJlcXVlc3RzPC9BCis+PC9INAorPjxQCis+V2hlbiB5b3UgcGFzcyB0aGUgZm9ybXMgZHJpdmVyIGFuIEFTQ0lJIGNoYXJhY3RlciwgaXQgaXMgdHJlYXRlZCBhcyBhCityZXF1ZXN0IHRvIGFkZCB0aGUgY2hhcmFjdGVyIHRvIHRoZSBmaWVsZCdzIGRhdGEgYnVmZmVyLiBXaGV0aGVyIHRoaXMgaXMgYW4KK2luc2VydGlvbiBvciBhIHJlcGxhY2VtZW50IGRlcGVuZHMgb24gdGhlIGZpZWxkJ3MgZWRpdCBtb2RlIChpbnNlcnRpb24gaXMKK3RoZSBkZWZhdWx0LjwvUAorPjxQCis+VGhlIGZvbGxvd2luZyByZXF1ZXN0cyBzdXBwb3J0IGVkaXRpbmcgdGhlIGZpZWxkIGFuZCBjaGFuZ2luZyB0aGUgZWRpdCBtb2RlOjwvUAorPjxQCis+PC9QCis+PFVMCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0lOU19NT0RFPC9JCis+PC9TUEFOCis+IAorICAgIFNldCBpbnNlcnRpb24gbW9kZS4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9PVkxfTU9ERTwvSQorPjwvU1BBTgorPiAKKyAgICBTZXQgb3ZlcmxheSBtb2RlLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX05FV19MSU5FPC9JCis+PC9TUEFOCis+IAorICAgIE5ldyBsaW5lIHJlcXVlc3QgKHNlZSBiZWxvdyBmb3IgZXhwbGFuYXRpb24pLiA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0lOU19DSEFSPC9JCis+PC9TUEFOCis+CisgICAgSW5zZXJ0IHNwYWNlIGF0IGNoYXJhY3RlciBsb2NhdGlvbi4gIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfSU5TX0xJTkU8L0kKKz48L1NQQU4KKz4KKyAgICBJbnNlcnQgYmxhbmsgbGluZSBhdCBjaGFyYWN0ZXIgbG9jYXRpb24uICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0RFTF9DSEFSPC9JCis+PC9TUEFOCis+CisgICAgRGVsZXRlIGNoYXJhY3RlciBhdCBjdXJzb3IuICA8L1AKKz48L0xJCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX0RFTF9QUkVWPC9JCis+PC9TUEFOCis+IAorICAgIERlbGV0ZSBwcmV2aW91cyB3b3JkIGF0IGN1cnNvci4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9ERUxfTElORTwvSQorPjwvU1BBTgorPgorICAgIERlbGV0ZSBsaW5lIGF0IGN1cnNvci4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9ERUxfV09SRDwvSQorPjwvU1BBTgorPgorICAgIERlbGV0ZSB3b3JkIGF0IGN1cnNvci4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9DTFJfRU9MPC9JCis+PC9TUEFOCis+CisgICAgQ2xlYXIgdG8gZW5kIG9mIGxpbmUuIDwvUAorPjwvTEkKKz48TEkKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5SRVFfQ0xSX0VPRjwvSQorPjwvU1BBTgorPgorICAgIENsZWFyIHRvIGVuZCBvZiBmaWVsZC4gPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9DTFJfRklFTEQ8L0kKKz48L1NQQU4KKz4KKyAgICBDbGVhciBlbnRpcmUgZmllbGQuIDwvUAorPjwvTEkKKz48L1VMCis+PFAKKz5UaGUgYmVoYXZpb3Igb2YgdGhlIFJFUV9ORVdfTElORSBhbmQgUkVRX0RFTF9QUkVWIHJlcXVlc3RzIGlzIGNvbXBsaWNhdGVkCithbmQgcGFydGx5IGNvbnRyb2xsZWQgYnkgYSBwYWlyIG9mIGZvcm1zIG9wdGlvbnMuIFRoZSBzcGVjaWFsIGNhc2VzIGFyZQordHJpZ2dlcmVkIHdoZW4gdGhlIGN1cnNvciBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgZmllbGQsIG9yIG9uIHRoZSBsYXN0CitsaW5lIG9mIHRoZSBmaWVsZC48L1AKKz48UAorPkZpcnN0LCB3ZSBjb25zaWRlciBSRVFfTkVXX0xJTkU6PC9QCis+PFAKKz5UaGUgbm9ybWFsIGJlaGF2aW9yIG9mIFJFUV9ORVdfTElORSBpbiBpbnNlcnQgbW9kZSBpcyB0byBicmVhayB0aGUgY3VycmVudAorbGluZSBhdCB0aGUgcG9zaXRpb24gb2YgdGhlIGVkaXQgY3Vyc29yLCBpbnNlcnRpbmcgdGhlIHBvcnRpb24gb2YgdGhlCitjdXJyZW50IGxpbmUgYWZ0ZXIgdGhlIGN1cnNvciBhcyBhIG5ldyBsaW5lIGZvbGxvd2luZyB0aGUgY3VycmVudCBhbmQgbW92aW5nCit0aGUgY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhhdCBuZXcgbGluZSAoeW91IG1heSB0aGluayBvZiB0aGlzIGFzCitpbnNlcnRpbmcgYSBuZXdsaW5lIGluIHRoZSBmaWVsZCBidWZmZXIpLjwvUAorPjxQCis+VGhlIG5vcm1hbCBiZWhhdmlvciBvZiBSRVFfTkVXX0xJTkUgaW4gb3ZlcmxheSBtb2RlIGlzIHRvIGNsZWFyIHRoZSBjdXJyZW50CitsaW5lIGZyb20gdGhlIHBvc2l0aW9uIG9mIHRoZSBlZGl0IGN1cnNvciB0byBlbmQgb2YgbGluZS4gVGhlIGN1cnNvciBpcyB0aGVuCittb3ZlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuPC9QCis+PFAKKz5Ib3dldmVyLCBSRVFfTkVXX0xJTkUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGZpZWxkLCBvciBvbiB0aGUgbGFzdCBsaW5lIG9mIGEKK2ZpZWxkLCBpbnN0ZWFkIGRvZXMgYSBSRVFfTkVYVF9GSUVMRC4gT19OTF9PVkVSTE9BRCBvcHRpb24gaXMgb2ZmLCB0aGlzCitzcGVjaWFsIGFjdGlvbiBpcyBkaXNhYmxlZC48L1AKKz48UAorPk5vdywgbGV0IHVzIGNvbnNpZGVyIFJFUV9ERUxfUFJFVjo8L1AKKz48UAorPlRoZSBub3JtYWwgYmVoYXZpb3Igb2YgUkVRX0RFTF9QUkVWIGlzIHRvIGRlbGV0ZSB0aGUgcHJldmlvdXMgY2hhcmFjdGVyLiBJZgoraW5zZXJ0IG1vZGUgaXMgb24sIGFuZCB0aGUgY3Vyc29yIGlzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGFuZCB0aGUgdGV4dCBvbgordGhhdCBsaW5lIHdpbGwgZml0IG9uIHRoZSBwcmV2aW91cyBvbmUsIGl0IGluc3RlYWQgYXBwZW5kcyB0aGUgY29udGVudHMgb2YKK3RoZSBjdXJyZW50IGxpbmUgdG8gdGhlIHByZXZpb3VzIG9uZSBhbmQgZGVsZXRlcyB0aGUgY3VycmVudCBsaW5lICh5b3UgbWF5Cit0aGluayBvZiB0aGlzIGFzIGRlbGV0aW5nIGEgbmV3bGluZSBmcm9tIHRoZSBmaWVsZCBidWZmZXIpLjwvUAorPjxQCis+SG93ZXZlciwgUkVRX0RFTF9QUkVWIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBmaWVsZCBpcyBpbnN0ZWFkIHRyZWF0ZWQgYXMgYQorUkVRX1BSRVZfRklFTEQuPC9QCis+PFAKKz5JZiB0aGUgT19CU19PVkVSTE9BRCBvcHRpb24gaXMgb2ZmLCB0aGlzIHNwZWNpYWwgYWN0aW9uIGlzIGRpc2FibGVkIGFuZCB0aGUKK2Zvcm1zIGRyaXZlciBqdXN0IHJldHVybnMgRV9SRVFVRVNUX0RFTklFRC48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9Ik9SREVSUkVRIgorPjE4LjYuNi4gT3JkZXIgUmVxdWVzdHM8L0EKKz48L0g0Cis+PFAKKz5JZiB0aGUgdHlwZSBvZiB5b3VyIGZpZWxkIGlzIG9yZGVyZWQsIGFuZCBoYXMgYXNzb2NpYXRlZCBmdW5jdGlvbnMgZm9yCitnZXR0aW5nIHRoZSBuZXh0IGFuZCBwcmV2aW91cyB2YWx1ZXMgb2YgdGhlIHR5cGUgZnJvbSBhIGdpdmVuIHZhbHVlLCB0aGVyZQorYXJlIHJlcXVlc3RzIHRoYXQgY2FuIGZldGNoIHRoYXQgdmFsdWUgaW50byB0aGUgZmllbGQgYnVmZmVyOjwvUAorPjxQCis+PC9QCis+PFVMCis+PExJCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+UkVRX05FWFRfQ0hPSUNFPC9JCis+PC9TUEFOCis+IAorICAgIFBsYWNlIHRoZSBzdWNjZXNzb3IgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdmFsdWUgaW4gdGhlIGJ1ZmZlci4gCisgICAgPC9QCis+PC9MSQorPjxMSQorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPlJFUV9QUkVWX0NIT0lDRTwvSQorPjwvU1BBTgorPiAKKyAgICBQbGFjZSB0aGUgcHJlZGVjZXNzb3IgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdmFsdWUgaW4gdGhlIGJ1ZmZlci4KKyAgICA8L1AKKz48L0xJCis+PC9VTAorPjxQCis+T2YgdGhlIGJ1aWx0LWluIGZpZWxkIHR5cGVzLCBvbmx5IFRZUEVfRU5VTSBoYXMgYnVpbHQtaW4gc3VjY2Vzc29yIGFuZAorcHJlZGVjZXNzb3IgZnVuY3Rpb25zLiBXaGVuIHlvdSBkZWZpbmUgYSBmaWVsZCB0eXBlIG9mIHlvdXIgb3duIChzZWUgQ3VzdG9tCitWYWxpZGF0aW9uIFR5cGVzKSwgeW91IGNhbiBhc3NvY2lhdGUgb3VyIG93biBvcmRlcmluZyBmdW5jdGlvbnMuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJBUFBMSUNDT01NQU5EUyIKKz4xOC42LjcuIEFwcGxpY2F0aW9uIENvbW1hbmRzPC9BCis+PC9INAorPjxQCis+Rm9ybSByZXF1ZXN0cyBhcmUgcmVwcmVzZW50ZWQgYXMgaW50ZWdlcnMgYWJvdmUgdGhlIGN1cnNlcyB2YWx1ZSBncmVhdGVyIHRoYW4KK0tFWV9NQVggYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgY29uc3RhbnQgTUFYX0NPTU1BTkQuICBBIHZhbHVlIHdpdGhpbiB0aGlzCityYW5nZSBnZXRzIGlnbm9yZWQgYnkgZm9ybV9kcml2ZXIoKS4gU28gdGhpcyBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UgYnkgdGhlCithcHBsaWNhdGlvbi4gSXQgY2FuIGJlIHRyZWF0ZWQgYXMgYW4gYXBwbGljYXRpb24gc3BlY2lmaWMgYWN0aW9uIGFuZCB0YWtlCitjb3JyZXNwb25kaW5nIGFjdGlvbi48L1AKKz48L0RJVgorPjwvRElWCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDEiCis+PEhSPjxIMgorQ0xBU1M9IlNFQ1QxIgorPjxBCitOQU1FPSJUT09MUyIKKz4xOS4gVG9vbHMgYW5kIFdpZGdldCBMaWJyYXJpZXM8L0EKKz48L0gyCis+PFAKKz4gCitOb3cgdGhhdCB5b3UgaGF2ZSBzZWVuIHRoZSBjYXBhYmlsaXRpZXMgb2YgbmN1cnNlcyBhbmQgaXRzIHNpc3RlciBsaWJyYXJpZXMsIHlvdQorYXJlIHJvbGxpbmcgeW91ciBzbGVldmVzIHVwIGFuZCBnZWFyaW5nIGZvciBhIHByb2plY3QgdGhhdCBoZWF2aWx5IG1hbmlwdWxhdGVzCitzY3JlZW4uIEJ1dCB3YWl0Li4gIEl0IGNhbiBiZSBwcmV0dHkgZGlmZmljdWx0IHRvIHdyaXRlIGFuZCBtYWludGFpbiBjb21wbGV4IEdVSQord2lkZ2V0cyBpbiBwbGFpbiBuY3Vyc2VzIG9yIGV2ZW4gd2l0aCB0aGUgYWRkaXRpb25hbCBsaWJyYXJpZXMuIFRoZXJlIGFyZSBzb21lCityZWFkeS10by11c2UgdG9vbHMgYW5kIHdpZGdldCBsaWJyYXJpZXMgdGhhdCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHdyaXRpbmcgeW91cgorb3duIHdpZGdldHMuIFlvdSBjYW4gdXNlIHNvbWUgb2YgdGhlbSwgZ2V0IGlkZWFzIGZyb20gdGhlIGNvZGUsIG9yIGV2ZW4gZXh0ZW5kCit0aGVtLjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkNESyIKKz4xOS4xLiBDREsgKEN1cnNlcyBEZXZlbG9wbWVudCBLaXQpPC9BCis+PC9IMworPjxQCis+SW4gdGhlIGF1dGhvcidzIHdvcmRzIDwvUAorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPiAKK0NESyBzdGFuZHMgZm9yICdDdXJzZXMgRGV2ZWxvcG1lbnQgS2l0JyBhbmQgaXQgY3VycmVudGx5IGNvbnRhaW5zIDIxIHJlYWR5Cit0byB1c2Ugd2lkZ2V0cyB3aGljaCBmYWNpbGl0YXRlIHRoZSBzcGVlZHkgZGV2ZWxvcG1lbnQgb2YgZnVsbCBzY3JlZW4KK2N1cnNlcyBwcm9ncmFtcy4gPC9JCis+PC9TUEFOCis+PC9QCis+PFAKKz5UaGUga2l0IHByb3ZpZGVzIHNvbWUgdXNlZnVsIHdpZGdldHMsIHdoaWNoIGNhbiBiZSB1c2VkIGluIHlvdXIgcHJvZ3JhbXMKK2RpcmVjdGx5LiBJdCdzIHByZXR0eSB3ZWxsIHdyaXR0ZW4gYW5kIHRoZSBkb2N1bWVudGF0aW9uIGlzIHZlcnkgZ29vZC4gVGhlCitleGFtcGxlcyBpbiB0aGUgZXhhbXBsZXMgZGlyZWN0b3J5IGNhbiBiZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZm9yIGJlZ2lubmVycy4KK1RoZSBDREsgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSA8QQorSFJFRj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay8iCitUQVJHRVQ9Il90b3AiCis+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay88L0EKKz4KKy4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gCitSRUFETUUgZmlsZSB0byBpbnN0YWxsIGl0LjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMyIKKz48SFI+PEg0CitDTEFTUz0iU0VDVDMiCis+PEEKK05BTUU9IldJREdFVExJU1QiCis+MTkuMS4xLiBXaWRnZXQgTGlzdDwvQQorPjwvSDQKKz48UAorPlRoZSBmb2xsb3dpbmcgaXMgdGhlIGxpc3Qgb2Ygd2lkZ2V0cyBwcm92aWRlZCB3aXRoIGNkayBhbmQgdGhlaXIgZGVzY3JpcHRpb24uPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPldpZGdldCBUeXBlICAgICAgICAgICBRdWljayBEZXNjcmlwdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBBbHBoYWxpc3QgICAgICAgICAgICAgQWxsb3dzIGEgdXNlciB0byBzZWxlY3QgZnJvbSBhIGxpc3Qgb2Ygd29yZHMsIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWJpbGl0eSB0byBuYXJyb3cgdGhlIHNlYXJjaCBsaXN0IGJ5IHR5cGluZyBpbiBhCkBAIC02MTk5LDIxNSArODM2OCwzNDYgQEAKICAgICAgICAgICAgICAgICAgICAgICBkYXRlcyBhbmQgcGhvbmUgbnVtYmVycy4KIFZpZXdlciAgICAgICAgICAgICAgICBUaGlzIGlzIGEgZmlsZS9pbmZvcm1hdGlvbiB2aWV3ZXIuIFZlcnkgdXNlZnVsCiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgbmVlZCB0byBkaXNwbGF5IGxvYWRzIG9mIGluZm9ybWF0aW9uLgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+QSBmZXcgb2YgdGhlIHdpZGdldHMgYXJlIG1vZGlmaWVkIGJ5IFRob21hcyBEaWNrZXkgaW4gcmVjZW50Ci12ZXJzaW9ucy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QzIj4KLTxocj4KLTxoNCBjbGFzcz0iU0VDVDMiPjxhIG5hbWU9IkNES0FUVFJBQ1QiIGlkPSJDREtBVFRSQUNUIj4xOS4xLjIuIFNvbWUKLUF0dHJhY3RpdmUgRmVhdHVyZXM8L2E+PC9oND4KLTxwPkFwYXJ0IGZyb20gbWFraW5nIG91ciBsaWZlIGVhc2llciB3aXRoIHJlYWRpbHkgdXNhYmxlIHdpZGdldHMsCi1jZGsgc29sdmVzIG9uZSBmcnVzdHJhdGluZyBwcm9ibGVtIHdpdGggcHJpbnRpbmcgbXVsdGkgY29sb3JlZAotc3RyaW5ncywganVzdGlmaWVkIHN0cmluZ3MgZWxlZ2FudGx5LiBTcGVjaWFsIGZvcm1hdHRpbmcgdGFncyBjYW4KLWJlIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzIHdoaWNoIGFyZSBwYXNzZWQgdG8gQ0RLIGZ1bmN0aW9ucy4gRm9yCi1FeGFtcGxlPC9wPgotPHA+SWYgdGhlIHN0cmluZzwvcD4KLTx0YWJsZSBib3JkZXI9IjAiIGJnY29sb3I9IiNFMEUwRTAiIHdpZHRoPSIxMDAlIj4KLTx0cj4KLTx0ZD4KLTxwcmUgY2xhc3M9IlBST0dSQU1MSVNUSU5HIj4KLTxmb250IGNvbG9yPQotIiMwMDAwMDAiPiImbHQ7L0IvMSZndDtUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSB5ZWxsb3cgZm9yZWdyb3VuZCBhbmQgYSBibHVlCi1iYWNrZ3JvdW5kLiZsdDshMSZndDsiPC9mb250PgotPC9wcmU+PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHA+Z2l2ZW4gYXMgYSBwYXJhbWV0ZXIgdG8gbmV3Q0RLTGFiZWwoKSwgaXQgcHJpbnRzIHRoZSBsaW5lIHdpdGgKLXllbGxvdyBmb3JlZ3JvdW5kIGFuZCBibHVlIGJhY2tncm91bmQuIFRoZXJlIGFyZSBvdGhlciB0YWdzCi1hdmFpbGFibGUgZm9yIGp1c3RpZnlpbmcgc3RyaW5nLCBlbWJlZGRpbmcgc3BlY2lhbCBkcmF3aW5nCi1jaGFyYWN0ZXJzIGV0Yy4uIFBsZWFzZSByZWZlciB0byB0aGUgbWFuIHBhZ2UgY2RrX2Rpc3BsYXkoM1gpIGZvcgotZGV0YWlscy4gVGhlIG1hbiBwYWdlIGV4cGxhaW5zIHRoZSB1c2FnZSB3aXRoIG5pY2UgZXhhbXBsZXMuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMyI+Ci08aHI+Ci08aDQgY2xhc3M9IlNFQ1QzIj48YSBuYW1lPSJDREtDT05DTFVTSU9OIiBpZD0KLSJDREtDT05DTFVTSU9OIj4xOS4xLjMuIENvbmNsdXNpb248L2E+PC9oND4KLTxwPkFsbCBpbiBhbGwsIENESyBpcyBhIHdlbGwtd3JpdHRlbiBwYWNrYWdlIG9mIHdpZGdldHMsIHdoaWNoIGlmCi11c2VkIHByb3Blcmx5IGNhbiBmb3JtIGEgc3Ryb25nIGZyYW1lIHdvcmsgZm9yIGRldmVsb3BpbmcgY29tcGxleAotR1VJLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJESUFMT0ciIGlkPSJESUFMT0ciPjE5LjIuIFRoZQotZGlhbG9nPC9hPjwvaDM+Ci08cD5Mb25nIGxvbmcgYWdvLCBpbiBTZXB0ZW1iZXIgMTk5NCwgd2hlbiBmZXcgcGVvcGxlIGtuZXcgbGludXgsCi1KZWZmIFRyYW50ZXIgd3JvdGUgYW4gPGEgaHJlZj0KLSJodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTUvMjgwNy5odG1sIiB0YXJnZXQ9Ci0iX3RvcCI+YXJ0aWNsZTwvYT4gb24gZGlhbG9nIGluIExpbnV4IEpvdXJuYWwuIEhlIHN0YXJ0cyB0aGUKLWFydGljbGUgd2l0aCB0aGVzZSB3b3Jkcy4uPC9wPgotPHA+PGVtPkxpbnV4IGlzIGJhc2VkIG9uIHRoZSBVbml4IG9wZXJhdGluZyBzeXN0ZW0sIGJ1dCBhbHNvCi1mZWF0dXJlcyBhIG51bWJlciBvZiB1bmlxdWUgYW5kIHVzZWZ1bCBrZXJuZWwgZmVhdHVyZXMgYW5kCi1hcHBsaWNhdGlvbiBwcm9ncmFtcyB0aGF0IG9mdGVuIGdvIGJleW9uZCB3aGF0IGlzIGF2YWlsYWJsZSB1bmRlcgotVW5peC4gT25lIGxpdHRsZS1rbm93biBnZW0gaXMgImRpYWxvZyIsIGEgdXRpbGl0eSBmb3IgY3JlYXRpbmcKLXByb2Zlc3Npb25hbC1sb29raW5nIGRpYWxvZyBib3hlcyBmcm9tIHdpdGhpbiBzaGVsbCBzY3JpcHRzLiBUaGlzCi1hcnRpY2xlIHByZXNlbnRzIGEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIHRoZSBkaWFsb2cgdXRpbGl0eSwgYW5kCi1zaG93cyBleGFtcGxlcyBvZiBob3cgYW5kIHdoZXJlIGl0IGNhbiBiZSB1c2VkPC9lbT48L3A+Ci08cD5BcyBoZSBleHBsYWlucywgZGlhbG9nIGlzIGEgcmVhbCBnZW0gaW4gbWFraW5nCi1wcm9mZXNzaW9uYWwtbG9va2luZyBkaWFsb2cgYm94ZXMgd2l0aCBlYXNlLiBJdCBjcmVhdGVzIGEgdmFyaWV0eQotb2YgZGlhbG9nIGJveGVzLCBtZW51cywgY2hlY2sgbGlzdHMgZXRjLi4gSXQgaXMgdXN1YWxseSBpbnN0YWxsZWQKLWJ5IGRlZmF1bHQuIElmIG5vdCwgeW91IGNhbiBkb3dubG9hZCBpdCBmcm9tIDxhIGhyZWY9Ci0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8iIHRhcmdldD0iX3RvcCI+VGhvbWFzCi1EaWNrZXk8L2E+J3Mgc2l0ZS48L3A+Ci08cD5UaGUgYWJvdmUtbWVudGlvbmVkIGFydGljbGUgZ2l2ZXMgYSB2ZXJ5IGdvb2Qgb3ZlcnZpZXcgb2YgaXRzCi11c2VzIGFuZCBjYXBhYmlsaXRlcy4gVGhlIG1hbiBwYWdlIGhhcyBtb3JlIGRldGFpbHMuIEl0IGNhbiBiZSB1c2VkCi1pbiB2YXJpZXR5IG9mIHNpdHVhdGlvbnMuIE9uZSBnb29kIGV4YW1wbGUgaXMgYnVpbGRpbmcgb2YgbGludXgKLWtlcm5lbCBpbiB0ZXh0IG1vZGUuIExpbnV4IGtlcm5lbCB1c2VzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBkaWFsb2cKLXRhaWxvcmVkIGZvciBpdHMgbmVlZHMuPC9wPgotPHA+ZGlhbG9nIHdhcyBpbml0aWFsbHkgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIHNoZWxsIHNjcmlwdHMuIElmCi15b3Ugd2FudCB0byB1c2UgaXRzIGZ1bmN0aW9uYWxpdHkgaW4gYSBjIHByb2dyYW0sIHRoZW4geW91IGNhbiB1c2UKLWxpYmRpYWxvZy4gVGhlIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoaXMgaXMgc3BhcnNlLiBEZWZpbml0aXZlCi1yZWZlcmVuY2UgaXMgdGhlIGRpYWxvZy5oIGhlYWRlciBmaWxlIHdoaWNoIGNvbWVzIHdpdGggdGhlIGxpYnJhcnkuCi1Zb3UgbWF5IG5lZWQgdG8gaGFjayBoZXJlIGFuZCB0aGVyZSB0byBnZXQgdGhlIHJlcXVpcmVkIG91dHB1dC4gVGhlCi1zb3VyY2UgaXMgZWFzaWx5IGN1c3RvbWl6YWJsZS4gSSBoYXZlIHVzZWQgaXQgb24gYSBudW1iZXIgb2YKLW9jY2FzaW9ucyBieSBtb2RpZnlpbmcgdGhlIGNvZGUuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJQRVJMQ1VSU0VTIiBpZD0iUEVSTENVUlNFUyI+MTkuMy4gUGVybAotQ3Vyc2VzIE1vZHVsZXMgQ1VSU0VTOjpGT1JNIGFuZCBDVVJTRVM6OldJREdFVFM8L2E+PC9oMz4KLTxwPlRoZSBwZXJsIG1vZHVsZSBDdXJzZXMsIEN1cnNlczo6Rm9ybSBhbmQgQ3Vyc2VzOjpXaWRnZXRzIGdpdmUKLWFjY2VzcyB0byBjdXJzZXMgZnJvbSBwZXJsLiBJZiB5b3UgaGF2ZSBjdXJzZXMgYW5kIGJhc2ljIHBlcmwgaXMKLWluc3RhbGxlZCwgeW91IGNhbiBnZXQgdGhlc2UgbW9kdWxlcyBmcm9tIDxhIGhyZWY9Ci0iaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzLzAxbW9kdWxlcy5pbmRleC5odG1sIiB0YXJnZXQ9Ci0iX3RvcCI+Q1BBTiBBbGwgTW9kdWxlcyBwYWdlPC9hPi4gR2V0IHRoZSB0aHJlZSB6aXBwZWQgbW9kdWxlcyBpbgotdGhlIEN1cnNlcyBjYXRlZ29yeS4gT25jZSBpbnN0YWxsZWQgeW91IGNhbiB1c2UgdGhlc2UgbW9kdWxlcyBmcm9tCi1wZXJsIHNjcmlwdHMgbGlrZSBhbnkgb3RoZXIgbW9kdWxlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwZXJsCi1tb2R1bGVzIHNlZSBwZXJsbW9kIG1hbiBwYWdlLiBUaGUgYWJvdmUgbW9kdWxlcyBjb21lIHdpdGggZ29vZAotZG9jdW1lbnRhdGlvbiBhbmQgdGhleSBoYXZlIHNvbWUgZGVtbyBzY3JpcHRzIHRvIHRlc3QgdGhlCi1mdW5jdGlvbmFsaXR5LiBUaG91Z2ggdGhlIHdpZGdldHMgcHJvdmlkZWQgYXJlIHZlcnkgcnVkaW1lbnRhcnksCi10aGVzZSBtb2R1bGVzIHByb3ZpZGUgZ29vZCBhY2Nlc3MgdG8gY3Vyc2VzIGxpYnJhcnkgZnJvbSBwZXJsLjwvcD4KLTxwPlNvbWUgb2YgbXkgY29kZSBleGFtcGxlcyBhcmUgY29udmVydGVkIHRvIHBlcmwgYnkgQW51cmFkaGEKLVJhdG5hd2VlcmEgYW5kIHRoZXkgYXJlIGF2YWlsYWJsZSBpbiB0aGUgPHZhciBjbGFzcz0KLSJMSVRFUkFMIj5wZXJsPC92YXI+IGRpcmVjdG9yeS48L3A+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgbWFuIHBhZ2VzIEN1cnNlcygzKSAsIEN1cnNlczo6Rm9ybSgzKQotYW5kIEN1cnNlczo6V2lkZ2V0cygzKS4gVGhlc2UgcGFnZXMgYXJlIGluc3RhbGxlZCBvbmx5IHdoZW4gdGhlCi1hYm92ZSBtb2R1bGVzIGFyZSBhY3F1aXJlZCBhbmQgaW5zdGFsbGVkLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJKVVNURk9SRlVOIiBpZD0iSlVTVEZPUkZVTiI+MjAuIEp1c3QgRm9yCi1GdW4gISEhPC9hPjwvaDI+Ci08cD5UaGlzIHNlY3Rpb24gY29udGFpbnMgZmV3IHByb2dyYW1zIHdyaXR0ZW4gYnkgbWUganVzdCBmb3IgZnVuLgotVGhleSBkb24ndCBzaWduaWZ5IGEgYmV0dGVyIHByb2dyYW1taW5nIHByYWN0aWNlIG9yIHRoZSBiZXN0IHdheSBvZgotdXNpbmcgbmN1cnNlcy4gVGhleSBhcmUgcHJvdmlkZWQgaGVyZSBzbyBhcyB0byBhbGxvdyBiZWdpbm5lcnMgdG8KLWdldCBpZGVhcyBhbmQgYWRkIG1vcmUgcHJvZ3JhbXMgdG8gdGhpcyBzZWN0aW9uLiBJZiB5b3UgaGF2ZQotd3JpdHRlbiBhIGNvdXBsZSBvZiBuaWNlLCBzaW1wbGUgcHJvZ3JhbXMgaW4gY3Vyc2VzIGFuZCB3YW50IHRoZW0KLXRvIGluY2x1ZGVkIGhlcmUsIGNvbnRhY3QgPGEgaHJlZj0ibWFpbHRvOnBwYWRhbGFAZ21haWwuY29tIgotdGFyZ2V0PSJfdG9wIj5tZTwvYT4uPC9wPgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iR0FNRU9GTElGRSIgaWQ9IkdBTUVPRkxJRkUiPjIwLjEuIFRoZQotR2FtZSBvZiBMaWZlPC9hPjwvaDM+Ci08cD5HYW1lIG9mIGxpZmUgaXMgYSB3b25kZXIgb2YgbWF0aC4gSW4gPGEgaHJlZj0KLSJodHRwOi8vd3d3Lm1hdGguY29tL3N0dWRlbnRzL3dvbmRlcnMvbGlmZS9saWZlLmh0bWwiIHRhcmdldD0KLSJfdG9wIj5QYXVsIENhbGxhaGFuPC9hPidzIHdvcmRzPC9wPgotPHRhYmxlIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0UwRTBFMCIgd2lkdGg9IjEwMCUiPgotPHRyPgotPHRkPgotPHByZSBjbGFzcz0iUFJPR1JBTUxJU1RJTkciPgotPGZvbnQgY29sb3I9Ci0iIzAwMDAwMCI+PGVtPlRoZSBHYW1lIG9mIExpZmUgKG9yIHNpbXBseSBMaWZlKSBpcyBub3QgYSBnYW1lIGluIHRoZSBjb252ZW50aW9uYWwgc2Vuc2UuIFRoZXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L1BSRQorPjxQCis+QSBmZXcgb2YgdGhlIHdpZGdldHMgYXJlIG1vZGlmaWVkIGJ5IFRob21hcyBEaWNrZXkgaW4gcmVjZW50IHZlcnNpb25zLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QzIgorPjxIUj48SDQKK0NMQVNTPSJTRUNUMyIKKz48QQorTkFNRT0iQ0RLQVRUUkFDVCIKKz4xOS4xLjIuIFNvbWUgQXR0cmFjdGl2ZSBGZWF0dXJlczwvQQorPjwvSDQKKz48UAorPkFwYXJ0IGZyb20gbWFraW5nIG91ciBsaWZlIGVhc2llciB3aXRoIHJlYWRpbHkgdXNhYmxlIHdpZGdldHMsIGNkayBzb2x2ZXMgb25lCitmcnVzdHJhdGluZyBwcm9ibGVtIHdpdGggcHJpbnRpbmcgbXVsdGkgY29sb3JlZCBzdHJpbmdzLCBqdXN0aWZpZWQgc3RyaW5ncworZWxlZ2FudGx5LiAgU3BlY2lhbCBmb3JtYXR0aW5nIHRhZ3MgY2FuIGJlIGVtYmVkZGVkIGluIHRoZSBzdHJpbmdzIHdoaWNoIGFyZQorcGFzc2VkIHRvIENESyBmdW5jdGlvbnMuIEZvciBFeGFtcGxlPC9QCis+PFAKKz5JZiB0aGUgc3RyaW5nPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPiImbHQ7L0IvMSZndDtUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSB5ZWxsb3cgZm9yZWdyb3VuZCBhbmQgYSBibHVlCitiYWNrZ3JvdW5kLiZsdDshMSZndDsiPC9QUkUKKz48UAorPmdpdmVuIGFzIGEgcGFyYW1ldGVyIHRvIG5ld0NES0xhYmVsKCksIGl0IHByaW50cyB0aGUgbGluZSB3aXRoIHllbGxvdyBmb3JlZ3JvdW5kCithbmQgYmx1ZSBiYWNrZ3JvdW5kLiBUaGVyZSBhcmUgb3RoZXIgdGFncyBhdmFpbGFibGUgZm9yIGp1c3RpZnlpbmcgc3RyaW5nLAorZW1iZWRkaW5nIHNwZWNpYWwgZHJhd2luZyBjaGFyYWN0ZXJzIGV0Yy4uIFBsZWFzZSByZWZlciB0byB0aGUgbWFuIHBhZ2UKK2Nka19kaXNwbGF5KDNYKSBmb3IgZGV0YWlscy4gVGhlIG1hbiBwYWdlIGV4cGxhaW5zIHRoZSB1c2FnZSB3aXRoIG5pY2UgZXhhbXBsZXMuPC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDMiCis+PEhSPjxINAorQ0xBU1M9IlNFQ1QzIgorPjxBCitOQU1FPSJDREtDT05DTFVTSU9OIgorPjE5LjEuMy4gQ29uY2x1c2lvbjwvQQorPjwvSDQKKz48UAorPkFsbCBpbiBhbGwsIENESyBpcyBhIHdlbGwtd3JpdHRlbiBwYWNrYWdlIG9mIHdpZGdldHMsIHdoaWNoIGlmIHVzZWQgcHJvcGVybHkgY2FuCitmb3JtIGEgc3Ryb25nIGZyYW1lIHdvcmsgZm9yIGRldmVsb3BpbmcgY29tcGxleCBHVUkuPC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkRJQUxPRyIKKz4xOS4yLiBUaGUgZGlhbG9nPC9BCis+PC9IMworPjxQCis+TG9uZyBsb25nIGFnbywgaW4gU2VwdGVtYmVyIDE5OTQsIHdoZW4gZmV3IHBlb3BsZSBrbmV3IGxpbnV4LCBKZWZmIFRyYW50ZXIgd3JvdGUKK2FuIDxBCitIUkVGPSJodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTUvMjgwNy5odG1sIgorVEFSR0VUPSJfdG9wIgorPmFydGljbGU8L0EKKz4gb24gZGlhbG9nIGluIExpbnV4IEpvdXJuYWwuIEhlIHN0YXJ0cyB0aGUgYXJ0aWNsZSB3aXRoIHRoZXNlIHdvcmRzLi48L1AKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5MaW51eCBpcyBiYXNlZCBvbiB0aGUgVW5peCBvcGVyYXRpbmcgc3lzdGVtLCBidXQgYWxzbyBmZWF0dXJlcyBhIG51bWJlciBvZgordW5pcXVlIGFuZCB1c2VmdWwga2VybmVsIGZlYXR1cmVzIGFuZCBhcHBsaWNhdGlvbiBwcm9ncmFtcyB0aGF0IG9mdGVuIGdvIGJleW9uZAord2hhdCBpcyBhdmFpbGFibGUgdW5kZXIgVW5peC4gT25lIGxpdHRsZS1rbm93biBnZW0gaXMgImRpYWxvZyIsIGEgdXRpbGl0eSBmb3IKK2NyZWF0aW5nIHByb2Zlc3Npb25hbC1sb29raW5nIGRpYWxvZyBib3hlcyBmcm9tIHdpdGhpbiBzaGVsbCBzY3JpcHRzLiBUaGlzCithcnRpY2xlIHByZXNlbnRzIGEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIHRoZSBkaWFsb2cgdXRpbGl0eSwgYW5kIHNob3dzCitleGFtcGxlcyBvZiBob3cgYW5kIHdoZXJlIGl0IGNhbiBiZSB1c2VkPC9JCis+PC9TUEFOCis+PC9QCis+PFAKKz4gCitBcyBoZSBleHBsYWlucywgZGlhbG9nIGlzIGEgcmVhbCBnZW0gaW4gbWFraW5nIHByb2Zlc3Npb25hbC1sb29raW5nIGRpYWxvZyBib3hlcword2l0aCBlYXNlLiBJdCBjcmVhdGVzIGEgdmFyaWV0eSBvZiBkaWFsb2cgYm94ZXMsIG1lbnVzLCBjaGVjayBsaXN0cyBldGMuLiBJdCBpcwordXN1YWxseSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4gSWYgbm90LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZyb20gPEEKK0hSRUY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvIgorVEFSR0VUPSJfdG9wIgorPlRob21hcyBEaWNrZXk8L0EKKz4ncyBzaXRlLiA8L1AKKz48UAorPlRoZSBhYm92ZS1tZW50aW9uZWQgYXJ0aWNsZSBnaXZlcyBhIHZlcnkgZ29vZCBvdmVydmlldyBvZiBpdHMgdXNlcyBhbmQKK2NhcGFiaWxpdGVzLiAgVGhlIG1hbiBwYWdlIGhhcyBtb3JlIGRldGFpbHMuIEl0IGNhbiBiZSB1c2VkIGluIHZhcmlldHkgb2YKK3NpdHVhdGlvbnMuIE9uZSBnb29kIGV4YW1wbGUgaXMgYnVpbGRpbmcgb2YgbGludXgga2VybmVsIGluIHRleHQgbW9kZS4gTGludXgKK2tlcm5lbCB1c2VzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBkaWFsb2cgdGFpbG9yZWQgZm9yIGl0cyBuZWVkcy4gPC9QCis+PFAKKz5kaWFsb2cgd2FzIGluaXRpYWxseSBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggc2hlbGwgc2NyaXB0cy4gSWYgeW91IHdhbnQgdG8gdXNlCitpdHMgZnVuY3Rpb25hbGl0eSBpbiBhIGMgcHJvZ3JhbSwgdGhlbiB5b3UgY2FuIHVzZSBsaWJkaWFsb2cuIFRoZSBkb2N1bWVudGF0aW9uCityZWdhcmRpbmcgdGhpcyBpcyBzcGFyc2UuIERlZmluaXRpdmUgcmVmZXJlbmNlIGlzIHRoZSBkaWFsb2cuaCBoZWFkZXIgZmlsZSB3aGljaAorY29tZXMgd2l0aCB0aGUgbGlicmFyeS4gWW91IG1heSBuZWVkIHRvIGhhY2sgaGVyZSBhbmQgdGhlcmUgdG8gZ2V0IHRoZSByZXF1aXJlZAorb3V0cHV0LiBUaGUgc291cmNlIGlzIGVhc2lseSBjdXN0b21pemFibGUuIEkgaGF2ZSB1c2VkIGl0IG9uIGEgbnVtYmVyIG9mCitvY2Nhc2lvbnMgYnkgbW9kaWZ5aW5nIHRoZSBjb2RlLjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iUEVSTENVUlNFUyIKKz4xOS4zLiBQZXJsIEN1cnNlcyBNb2R1bGVzIENVUlNFUzo6Rk9STSBhbmQgQ1VSU0VTOjpXSURHRVRTPC9BCis+PC9IMworPjxQCis+VGhlIHBlcmwgbW9kdWxlIEN1cnNlcywgQ3Vyc2VzOjpGb3JtIGFuZCBDdXJzZXM6OldpZGdldHMgZ2l2ZSBhY2Nlc3MgdG8gY3Vyc2VzCitmcm9tIHBlcmwuICBJZiB5b3UgaGF2ZSBjdXJzZXMgYW5kIGJhc2ljIHBlcmwgaXMgaW5zdGFsbGVkLCB5b3UgY2FuIGdldCB0aGVzZQorbW9kdWxlcyBmcm9tIDxBCitIUkVGPSJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvMDFtb2R1bGVzLmluZGV4Lmh0bWwiCitUQVJHRVQ9Il90b3AiCis+IENQQU4KK0FsbCBNb2R1bGVzIHBhZ2U8L0EKKz4uICBHZXQgdGhlIHRocmVlIHppcHBlZCBtb2R1bGVzIGluIHRoZSBDdXJzZXMgY2F0ZWdvcnkuCitPbmNlIGluc3RhbGxlZCB5b3UgY2FuIHVzZSB0aGVzZSBtb2R1bGVzIGZyb20gcGVybCBzY3JpcHRzIGxpa2UgYW55IG90aGVyCittb2R1bGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHBlcmwgbW9kdWxlcyBzZWUgcGVybG1vZCBtYW4gcGFnZS4gVGhlIGFib3ZlCittb2R1bGVzIGNvbWUgd2l0aCBnb29kIGRvY3VtZW50YXRpb24gYW5kIHRoZXkgaGF2ZSBzb21lIGRlbW8gc2NyaXB0cyB0byB0ZXN0IHRoZQorZnVuY3Rpb25hbGl0eS4gVGhvdWdoIHRoZSB3aWRnZXRzIHByb3ZpZGVkIGFyZSB2ZXJ5IHJ1ZGltZW50YXJ5LCB0aGVzZSBtb2R1bGVzCitwcm92aWRlIGdvb2QgYWNjZXNzIHRvIGN1cnNlcyBsaWJyYXJ5IGZyb20gcGVybC48L1AKKz48UAorPlNvbWUgb2YgbXkgY29kZSBleGFtcGxlcyBhcmUgY29udmVydGVkIHRvIHBlcmwgYnkgQW51cmFkaGEgUmF0bmF3ZWVyYSBhbmQgdGhleQorYXJlIGF2YWlsYWJsZSBpbiB0aGUgPFRUCitDTEFTUz0iTElURVJBTCIKKz5wZXJsPC9UVAorPiBkaXJlY3RvcnkuPC9QCis+PFAKKz4gCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgbWFuIHBhZ2VzIEN1cnNlcygzKSAsIEN1cnNlczo6Rm9ybSgzKSBhbmQKK0N1cnNlczo6V2lkZ2V0cygzKS4gIFRoZXNlIHBhZ2VzIGFyZSBpbnN0YWxsZWQgb25seSB3aGVuIHRoZSBhYm92ZSBtb2R1bGVzIGFyZQorYWNxdWlyZWQgYW5kIGluc3RhbGxlZC48L1AKKz48L0RJVgorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QxIgorPjxIUj48SDIKK0NMQVNTPSJTRUNUMSIKKz48QQorTkFNRT0iSlVTVEZPUkZVTiIKKz4yMC4gSnVzdCBGb3IgRnVuICEhITwvQQorPjwvSDIKKz48UAorPlRoaXMgc2VjdGlvbiBjb250YWlucyBmZXcgcHJvZ3JhbXMgd3JpdHRlbiBieSBtZSBqdXN0IGZvciBmdW4uIFRoZXkgZG9uJ3QKK3NpZ25pZnkgYSBiZXR0ZXIgcHJvZ3JhbW1pbmcgcHJhY3RpY2Ugb3IgdGhlIGJlc3Qgd2F5IG9mIHVzaW5nIG5jdXJzZXMuIFRoZXkgYXJlCitwcm92aWRlZCBoZXJlIHNvIGFzIHRvIGFsbG93IGJlZ2lubmVycyB0byBnZXQgaWRlYXMgYW5kIGFkZCBtb3JlIHByb2dyYW1zIHRvCit0aGlzIHNlY3Rpb24uICBJZiB5b3UgaGF2ZSB3cml0dGVuIGEgY291cGxlIG9mIG5pY2UsIHNpbXBsZSBwcm9ncmFtcyBpbiBjdXJzZXMKK2FuZCB3YW50IHRoZW0gdG8gaW5jbHVkZWQgaGVyZSwgY29udGFjdCA8QQorSFJFRj0ibWFpbHRvOnBwYWRhbGFAZ21haWwuY29tIgorVEFSR0VUPSJfdG9wIgorPm1lPC9BCis+LjwvUAorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IkdBTUVPRkxJRkUiCis+MjAuMS4gVGhlIEdhbWUgb2YgTGlmZTwvQQorPjwvSDMKKz48UAorPkdhbWUgb2YgbGlmZSBpcyBhIHdvbmRlciBvZiBtYXRoLiBJbiAKKzxBCitIUkVGPSJodHRwOi8vd3d3Lm1hdGguY29tL3N0dWRlbnRzL3dvbmRlcnMvbGlmZS9saWZlLmh0bWwiCitUQVJHRVQ9Il90b3AiCis+UGF1bCBDYWxsYWhhbjwvQQorPidzIHdvcmRzPC9QCis+PFBSRQorQ0xBU1M9IlBST0dSQU1MSVNUSU5HIgorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5UaGUgR2FtZSBvZiBMaWZlIChvciBzaW1wbHkgTGlmZSkgaXMgbm90IGEgZ2FtZSBpbiB0aGUgY29udmVudGlvbmFsIHNlbnNlLiBUaGVyZQogYXJlIG5vIHBsYXllcnMsIGFuZCBubyB3aW5uaW5nIG9yIGxvc2luZy4gT25jZSB0aGUgInBpZWNlcyIgYXJlIHBsYWNlZCBpbiB0aGUKIHN0YXJ0aW5nIHBvc2l0aW9uLCB0aGUgcnVsZXMgZGV0ZXJtaW5lIGV2ZXJ5dGhpbmcgdGhhdCBoYXBwZW5zIGxhdGVyLgogTmV2ZXJ0aGVsZXNzLCBMaWZlIGlzIGZ1bGwgb2Ygc3VycHJpc2VzISBJbiBtb3N0IGNhc2VzLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGxvb2sKIGF0IGEgc3RhcnRpbmcgcG9zaXRpb24gKG9yIHBhdHRlcm4pIGFuZCBzZWUgd2hhdCB3aWxsIGhhcHBlbiBpbiB0aGUgZnV0dXJlLiBUaGUKLW9ubHkgd2F5IHRvIGZpbmQgb3V0IGlzIHRvIGZvbGxvdyB0aGUgcnVsZXMgb2YgdGhlIGdhbWUuPC9lbT48L2ZvbnQ+Ci08L3ByZT48L3RkPgotPC90cj4KLTwvdGFibGU+Ci08cD5UaGlzIHByb2dyYW0gc3RhcnRzIHdpdGggYSBzaW1wbGUgaW52ZXJ0ZWQgVSBwYXR0ZXJuIGFuZCBzaG93cwotaG93IHdvbmRlcmZ1bCBsaWZlIHdvcmtzLiBUaGVyZSBpcyBhIGxvdCBvZiByb29tIGZvciBpbXByb3ZlbWVudCBpbgotdGhlIHByb2dyYW0uIFlvdSBjYW4gbGV0IHRoZSB1c2VyIGVudGVyIHBhdHRlcm4gb2YgaGlzIGNob2ljZSBvcgotZXZlbiB0YWtlIGlucHV0IGZyb20gYSBmaWxlLiBZb3UgY2FuIGFsc28gY2hhbmdlIHJ1bGVzIGFuZCBwbGF5Ci13aXRoIGEgbG90IG9mIHZhcmlhdGlvbnMuIFNlYXJjaCBvbiA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20iCi10YXJnZXQ9Il90b3AiPmdvb2dsZTwvYT4gZm9yIGludGVyZXN0aW5nIGluZm9ybWF0aW9uIG9uIGdhbWUgb2YKLWxpZmUuPC9wPgotPHA+PGVtPkZpbGUgUGF0aDogSnVzdEZvckZ1bi9saWZlLmM8L2VtPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iU0VDVDIiPgotPGhyPgotPGgzIGNsYXNzPSJTRUNUMiI+PGEgbmFtZT0iTUFHSUMiIGlkPSJNQUdJQyI+MjAuMi4gTWFnaWMKLVNxdWFyZTwvYT48L2gzPgotPHA+TWFnaWMgU3F1YXJlLCBhbm90aGVyIHdvbmRlciBvZiBtYXRoLCBpcyB2ZXJ5IHNpbXBsZSB0bwotdW5kZXJzdGFuZCBidXQgdmVyeSBkaWZmaWN1bHQgdG8gbWFrZS4gSW4gYSBtYWdpYyBzcXVhcmUgc3VtIG9mIHRoZQotbnVtYmVycyBpbiBlYWNoIHJvdywgZWFjaCBjb2x1bW4gaXMgZXF1YWwuIEV2ZW4gZGlhZ25vbCBzdW0gY2FuIGJlCi1lcXVhbC4gVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyB3aGljaCBoYXZlIHNwZWNpYWwgcHJvcGVydGllcy48L3A+Ci08cD5UaGlzIHByb2dyYW0gY3JlYXRlcyBhIHNpbXBsZSBtYWdpYyBzcXVhcmUgb2Ygb2RkIG9yZGVyLjwvcD4KLTxwPjxlbT5GaWxlIFBhdGg6IEp1c3RGb3JGdW4vbWFnaWMuYzwvZW0+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMiI+Ci08aHI+Ci08aDMgY2xhc3M9IlNFQ1QyIj48YSBuYW1lPSJIQU5PSSIgaWQ9IkhBTk9JIj4yMC4zLiBUb3dlcnMgb2YKLUhhbm9pPC9hPjwvaDM+Ci08cD5UaGUgZmFtb3VzIHRvd2VycyBvZiBoYW5vaSBzb2x2ZXIuIFRoZSBhaW0gb2YgdGhlIGdhbWUgaXMgdG8KLW1vdmUgdGhlIGRpc2tzIG9uIHRoZSBmaXJzdCBwZWcgdG8gbGFzdCBwZWcsIHVzaW5nIG1pZGRsZSBwZWcgYXMgYQotdGVtcG9yYXJ5IHN0YXkuIFRoZSBjYXRjaCBpcyBub3QgdG8gcGxhY2UgYSBsYXJnZXIgZGlzayBvdmVyIGEKLXNtYWxsIGRpc2sgYXQgYW55IHRpbWUuPC9wPgotPHA+PGVtPkZpbGUgUGF0aDogSnVzdEZvckZ1bi9oYW5vaS5jPC9lbT48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlFVRUVOUyIgaWQ9IlFVRUVOUyI+MjAuNC4gUXVlZW5zCi1QdXp6bGU8L2E+PC9oMz4KLTxwPlRoZSBvYmplY3RpdmUgb2YgdGhlIGZhbW91cyBOLVF1ZWVuIHB1enpsZSBpcyB0byBwdXQgTiBxdWVlbnMgb24KLWEgTiBYIE4gY2hlc3MgYm9hcmQgd2l0aG91dCBhdHRhY2tpbmcgZWFjaCBvdGhlci48L3A+Ci08cD5UaGlzIHByb2dyYW0gc29sdmVzIGl0IHdpdGggYSBzaW1wbGUgYmFja3RyYWNraW5nIHRlY2huaXF1ZS48L3A+Ci08cD48ZW0+RmlsZSBQYXRoOiBKdXN0Rm9yRnVuL3F1ZWVucy5jPC9lbT48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlNIVUZGTEUiIGlkPSJTSFVGRkxFIj4yMC41LgotU2h1ZmZsZTwvYT48L2gzPgotPHA+QSBmdW4gZ2FtZSwgaWYgeW91IGhhdmUgdGltZSB0byBraWxsLjwvcD4KLTxwPjxlbT5GaWxlIFBhdGg6IEp1c3RGb3JGdW4vc2h1ZmZsZS5jPC9lbT48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9IlNFQ1QyIj4KLTxocj4KLTxoMyBjbGFzcz0iU0VDVDIiPjxhIG5hbWU9IlRUIiBpZD0iVFQiPjIwLjYuIFR5cGluZyBUdXRvcjwvYT48L2gzPgotPHA+QSBzaW1wbGUgdHlwaW5nIHR1dG9yLCBJIGNyZWF0ZWQgbW9yZSBvdXQgb2YgbmVlZCB0aGFuIGZvciBlYXNlCi1vZiB1c2UuIElmIHlvdSBrbm93IGhvdyB0byBwdXQgeW91ciBmaW5nZXJzIGNvcnJlY3RseSBvbiB0aGUKLWtleWJvYXJkLCBidXQgbGFjayBwcmFjdGljZSwgdGhpcyBjYW4gYmUgaGVscGZ1bC48L3A+Ci08cD48ZW0+RmlsZSBQYXRoOiBKdXN0Rm9yRnVuL3R0LmM8L2VtPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJTRUNUMSI+Ci08aHI+Ci08aDIgY2xhc3M9IlNFQ1QxIj48YSBuYW1lPSJSRUYiIGlkPSJSRUYiPjIxLiBSZWZlcmVuY2VzPC9hPjwvaDI+Ci08dWw+Ci08bGk+Ci08cD5OQ1VSU0VTIG1hbiBwYWdlczwvcD4KLTwvbGk+Ci08bGk+Ci08cD5OQ1VSU0VTIEZBUSBhdCA8YSBocmVmPQotImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuZmFxLmh0bWwiIHRhcmdldD0KLSJfdG9wIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLmZhcS5odG1sPC9hPjwvcD4KLTwvbGk+Ci08bGk+Ci08cD5Xcml0aW5nIHByb2dyYW1zIHdpdGggTkNVUlNFUyBieSBFcmljIFJheW1vbmQgYW5kIFpleWQgTS4KLUJlbi1IYWxpbSBhdCA8YSBocmVmPQotImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtaW50cm8uaHRtbCIgdGFyZ2V0PQotIl90b3AiPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtaW50cm8uaHRtbDwvYT4gLQotc29tZXdoYXQgb2Jzb2xldGUuIEkgd2FzIGluc3BpcmVkIGJ5IHRoaXMgZG9jdW1lbnQgYW5kIHRoZQotc3RydWN0dXJlIG9mIHRoaXMgSE9XVE8gZm9sbG93cyBmcm9tIHRoZSBvcmlnaW5hbCBkb2N1bWVudDwvcD4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KK29ubHkgd2F5IHRvIGZpbmQgb3V0IGlzIHRvIGZvbGxvdyB0aGUgcnVsZXMgb2YgdGhlIGdhbWUuPC9JCis+PC9TUEFOCis+PC9QUkUKKz48UAorPlRoaXMgcHJvZ3JhbSBzdGFydHMgd2l0aCBhIHNpbXBsZSBpbnZlcnRlZCBVIHBhdHRlcm4gYW5kIHNob3dzIGhvdyB3b25kZXJmdWwKK2xpZmUgd29ya3MuIFRoZXJlIGlzIGEgbG90IG9mIHJvb20gZm9yIGltcHJvdmVtZW50IGluIHRoZSBwcm9ncmFtLiBZb3UgY2FuIGxldAordGhlIHVzZXIgZW50ZXIgcGF0dGVybiBvZiBoaXMgY2hvaWNlIG9yIGV2ZW4gdGFrZSBpbnB1dCBmcm9tIGEgZmlsZS4gWW91IGNhbgorYWxzbyBjaGFuZ2UgcnVsZXMgYW5kIHBsYXkgd2l0aCBhIGxvdCBvZiB2YXJpYXRpb25zLiBTZWFyY2ggb24gPEEKK0hSRUY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbSIKK1RBUkdFVD0iX3RvcCIKKz5nb29nbGU8L0EKKz4gZm9yIGludGVyZXN0aW5nIGluZm9ybWF0aW9uIG9uIGdhbWUKK29mIGxpZmUuPC9QCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+RmlsZSBQYXRoOiBKdXN0Rm9yRnVuL2xpZmUuYzwvSQorPjwvU1BBTgorPjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iTUFHSUMiCis+MjAuMi4gTWFnaWMgU3F1YXJlPC9BCis+PC9IMworPjxQCis+TWFnaWMgU3F1YXJlLCBhbm90aGVyIHdvbmRlciBvZiBtYXRoLCBpcyB2ZXJ5IHNpbXBsZSB0byB1bmRlcnN0YW5kIGJ1dCB2ZXJ5CitkaWZmaWN1bHQgdG8gbWFrZS4gSW4gYSBtYWdpYyBzcXVhcmUgc3VtIG9mIHRoZSBudW1iZXJzIGluIGVhY2ggcm93LCBlYWNoIGNvbHVtbgoraXMgZXF1YWwuICBFdmVuIGRpYWdub2wgc3VtIGNhbiBiZSBlcXVhbC4gVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyB3aGljaCBoYXZlCitzcGVjaWFsIHByb3BlcnRpZXMuPC9QCis+PFAKKz5UaGlzIHByb2dyYW0gY3JlYXRlcyBhIHNpbXBsZSBtYWdpYyBzcXVhcmUgb2Ygb2RkIG9yZGVyLjwvUAorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPkZpbGUgUGF0aDogSnVzdEZvckZ1bi9tYWdpYy5jPC9JCis+PC9TUEFOCis+PC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJIQU5PSSIKKz4yMC4zLiBUb3dlcnMgb2YgSGFub2k8L0EKKz48L0gzCis+PFAKKz5UaGUgZmFtb3VzIHRvd2VycyBvZiBoYW5vaSBzb2x2ZXIuIFRoZSBhaW0gb2YgdGhlIGdhbWUgaXMgdG8gbW92ZSB0aGUgZGlza3Mgb24KK3RoZSBmaXJzdCBwZWcgdG8gbGFzdCBwZWcsIHVzaW5nIG1pZGRsZSBwZWcgYXMgYSB0ZW1wb3Jhcnkgc3RheS4gVGhlIGNhdGNoIGlzCitub3QgdG8gcGxhY2UgYSBsYXJnZXIgZGlzayBvdmVyIGEgc21hbGwgZGlzayBhdCBhbnkgdGltZS48L1AKKz48UAorPjxTUEFOCitDTEFTUz0iZW1waGFzaXMiCis+PEkKK0NMQVNTPSJFTVBIQVNJUyIKKz5GaWxlIFBhdGg6IEp1c3RGb3JGdW4vaGFub2kuYzwvSQorPjwvU1BBTgorPjwvUAorPjwvRElWCis+PERJVgorQ0xBU1M9IlNFQ1QyIgorPjxIUj48SDMKK0NMQVNTPSJTRUNUMiIKKz48QQorTkFNRT0iUVVFRU5TIgorPjIwLjQuIFF1ZWVucyBQdXp6bGU8L0EKKz48L0gzCis+PFAKKz5UaGUgb2JqZWN0aXZlIG9mIHRoZSBmYW1vdXMgTi1RdWVlbiBwdXp6bGUgaXMgdG8gcHV0IE4gcXVlZW5zIG9uIGEgTiBYIE4gY2hlc3MKK2JvYXJkIHdpdGhvdXQgYXR0YWNraW5nIGVhY2ggb3RoZXIuIDwvUAorPjxQCis+VGhpcyBwcm9ncmFtIHNvbHZlcyBpdCB3aXRoIGEgc2ltcGxlIGJhY2t0cmFja2luZyB0ZWNobmlxdWUuPC9QCis+PFAKKz48U1BBTgorQ0xBU1M9ImVtcGhhc2lzIgorPjxJCitDTEFTUz0iRU1QSEFTSVMiCis+RmlsZSBQYXRoOiBKdXN0Rm9yRnVuL3F1ZWVucy5jPC9JCis+PC9TUEFOCis+PC9QCis+PC9ESVYKKz48RElWCitDTEFTUz0iU0VDVDIiCis+PEhSPjxIMworQ0xBU1M9IlNFQ1QyIgorPjxBCitOQU1FPSJTSFVGRkxFIgorPjIwLjUuIFNodWZmbGU8L0EKKz48L0gzCis+PFAKKz5BIGZ1biBnYW1lLCBpZiB5b3UgaGF2ZSB0aW1lIHRvIGtpbGwuIDwvUAorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPkZpbGUgUGF0aDogSnVzdEZvckZ1bi9zaHVmZmxlLmM8L0kKKz48L1NQQU4KKz48L1AKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMiIKKz48SFI+PEgzCitDTEFTUz0iU0VDVDIiCis+PEEKK05BTUU9IlRUIgorPjIwLjYuIFR5cGluZyBUdXRvcjwvQQorPjwvSDMKKz48UAorPkEgc2ltcGxlIHR5cGluZyB0dXRvciwgSSBjcmVhdGVkIG1vcmUgb3V0IG9mIG5lZWQgdGhhbiBmb3IgZWFzZSBvZiB1c2UuIElmIHlvdQora25vdyBob3cgdG8gcHV0IHlvdXIgZmluZ2VycyBjb3JyZWN0bHkgb24gdGhlIGtleWJvYXJkLCBidXQgbGFjayBwcmFjdGljZSwgdGhpcworY2FuIGJlIGhlbHBmdWwuIDwvUAorPjxQCis+PFNQQU4KK0NMQVNTPSJlbXBoYXNpcyIKKz48SQorQ0xBU1M9IkVNUEhBU0lTIgorPkZpbGUgUGF0aDogSnVzdEZvckZ1bi90dC5jPC9JCis+PC9TUEFOCis+PC9QCis+PC9ESVYKKz48L0RJVgorPjxESVYKK0NMQVNTPSJTRUNUMSIKKz48SFI+PEgyCitDTEFTUz0iU0VDVDEiCis+PEEKK05BTUU9IlJFRiIKKz4yMS4gUmVmZXJlbmNlczwvQQorPjwvSDIKKz48UAorPjwvUAorPjxVTAorPjxMSQorPjxQCis+TkNVUlNFUyBtYW4gcGFnZXMgPC9QCis+PC9MSQorPjxMSQorPjxQCis+TkNVUlNFUyBGQVEgYXQgPEEKK0hSRUY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuZmFxLmh0bWwiCitUQVJHRVQ9Il90b3AiCis+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5mYXEuaHRtbDwvQQorPgorICAgIDwvUAorPjwvTEkKKz48TEkKKz48UAorPldyaXRpbmcgcHJvZ3JhbXMgd2l0aCBOQ1VSU0VTIGJ5IEVyaWMgUmF5bW9uZCBhbmQgWmV5ZCBNLgorQmVuLUhhbGltIGF0IAorPEEKK0hSRUY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtaW50cm8uaHRtbCIKK1RBUkdFVD0iX3RvcCIKKz5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWludHJvLmh0bWw8L0EKKz4gLSBzb21ld2hhdAorb2Jzb2xldGUuIEkgd2FzIGluc3BpcmVkIGJ5IHRoaXMgZG9jdW1lbnQgYW5kIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBIT1dUTworZm9sbG93cyBmcm9tIHRoZSBvcmlnaW5hbCBkb2N1bWVudDwvUAorPjwvTEkKKz48L1VMCis+PC9ESVYKKz48L0RJVgorPjwvQk9EWQorPjwvSFRNTAorPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9maWxlcy5odG0gYi9kb2MvaHRtbC9hZGEvZmlsZXMuaHRtCmluZGV4IGEzYmFkNjQuLjQ5NDQxYmUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9maWxlcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2ZpbGVzLmh0bQpAQCAtMSw1ICsxLDE3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT48L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgogPEgyIEFMSUdOPUNFTlRFUj5GaWxlczwvSDI+CiA8QSBIUkVGPSJmaWxlcy9ULmh0bSI+W1RdPC9BPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2ZpbGVzL1QuaHRtIGIvZG9jL2h0bWwvYWRhL2ZpbGVzL1QuaHRtCmluZGV4IGQ5ZDY5NTAuLmI1NDAyN2IgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9maWxlcy9ULmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZmlsZXMvVC5odG0KQEAgLTEsNSArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5UPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPlQ8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GaWxlcyAtIFQ8L0gyPgogPEEgSFJFRj0iLi4vZmlsZXMuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgpAQCAtNzQsNSArNzgsNiBAQAogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0iIFRBUkdFVD0ibWFpbiI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZHM8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSIgVEFSR0VUPSJtYWluIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtIiBUQVJHRVQ9Im1haW4iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtIiBUQVJHRVQ9Im1haW4iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzLmFkczwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0iIFRBUkdFVD0ibWFpbiI+dGVybWluYWxfaW50ZXJmYWNlLmFkczwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MuaHRtCmluZGV4IDlhMmRhNjEuLjkwMzUyM2UgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzLmh0bQpAQCAtMSw1ICsxLDE3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT48L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgogPEgyIEFMSUdOPUNFTlRFUj5GdW5jdGlvbnMvUHJvY2VkdXJlczwvSDI+CiA8QSBIUkVGPSJmdW5jcy9BLmh0bSI+W0FdPC9BPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0EuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0EuaHRtCmluZGV4IDljNzA2OWQuLmU3ODRhYmQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9BLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvQS5odG0KQEAgLTEsMjQgKzEsMjkgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkE8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+QTwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEE8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMjlfMTMiIFRBUkdFVD0ibWFpbiI+QWJvdmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIzXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo1MjM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI4XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo1Mjg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTM0XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo1MzQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQyXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo1NDI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2NTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjYyXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2NjI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjc3XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2Nzc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjg2XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2ODY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwN18xNCIgVEFSR0VUPSJtYWluIj5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMzA3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTJfMTQiIFRBUkdFVD0ibWFpbiI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTMxMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTFfMTQiIFRBUkdFVD0ibWFpbiI+QWRkX1dpdGhfSW1tZWRpYXRlX0VjaG8gLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6NTUxPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1N18xNCIgVEFSR0VUPSJtYWluIj5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo1NTc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU5XzE2IiBUQVJHRVQ9Im1haW4iPkFoZWFkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMjhfMTMiIFRBUkdFVD0ibWFpbiI+QWJvdmU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY3XzEzIiBUQVJHRVQ9Im1haW4iPkFDU19NYXA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjkzXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2OTM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk4XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2OTg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA0XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo3MDQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEyXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo3MTI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODIzXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4MjM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODMyXzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4MzI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ3XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4NDc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU2XzE0IiBUQVJHRVQ9Im1haW4iPkFkZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4NTY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3N18xNCIgVEFSR0VUPSJtYWluIj5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNDc3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0ODJfMTQiIFRBUkdFVD0ibWFpbiI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTQ4MjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjFfMTQiIFRBUkdFVD0ibWFpbiI+QWRkX1dpdGhfSW1tZWRpYXRlX0VjaG8gLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6NzIxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyN18xNCIgVEFSR0VUPSJtYWluIj5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo3Mjc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODQxXzE2IiBUQVJHRVQ9Im1haW4iPkFoZWFkPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTBfMTYiIFRBUkdFVD0ibWFpbiI+QWxsb2NhdGVfQXJnPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTZfMTQiIFRBUkdFVD0ibWFpbiI+QWxsb3dfU2Nyb2xsaW5nPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MzZfMTQiIFRBUkdFVD0ibWFpbiI+QXNzdW1lX0RlZmF1bHRfQ29sb3JzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODZfMTQiIFRBUkdFVD0ibWFpbiI+QWxsb3dfU2Nyb2xsaW5nPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMDhfMTQiIFRBUkdFVD0ibWFpbiI+QXNzdW1lX0RlZmF1bHRfQ29sb3JzPC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0IuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0IuaHRtCmluZGV4IDU5YzU4ODYuLmUxNGM4NzYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9CLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvQi5odG0KQEAgLTEsMjEgKzEsMjUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkI8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+QjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEI8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1NF8xNCIgVEFSR0VUPSJtYWluIj5CYWNrZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQ1NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTlfMTQiIFRBUkdFVD0ibWFpbiI+QmFja2dyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo0NTk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDUxXzE0IiBUQVJHRVQ9Im1haW4iPkJhY2tncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDUxPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1Nl8xNCIgVEFSR0VUPSJtYWluIj5CYWNrZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjQ1NjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDUyXzE2IiBUQVJHRVQ9Im1haW4iPkJhdWQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0N18xMyIgVEFSR0VUPSJtYWluIj5CYXVkcmF0ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzBfMTQiIFRBUkdFVD0ibWFpbiI+QmVlcDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NTFfMTYiIFRBUkdFVD0ibWFpbiI+QmVlcGVyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk3NV8xNiIgVEFSR0VUPSJtYWluIj5CZWhpbmQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzNF8xMyIgVEFSR0VUPSJtYWluIj5CZWxvdzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDRfMTQiIFRBUkdFVD0ibWFpbiI+Qm9yZGVyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl83N18xNCIgVEFSR0VUPSJtYWluIj5Cb3R0b208L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDU1XzE0IiBUQVJHRVQ9Im1haW4iPkJhY2tncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDU1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2MF8xNCIgVEFSR0VUPSJtYWluIj5CYWNrZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQ2MDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDlfMTQiIFRBUkdFVD0ibWFpbiI+QmFja2dyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0NDk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU0XzE0IiBUQVJHRVQ9Im1haW4iPkJhY2tncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDU0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNjVfMTYiIFRBUkdFVD0ibWFpbiI+QmF1ZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE3XzEzIiBUQVJHRVQ9Im1haW4iPkJhdWRyYXRlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDBfMTQiIFRBUkdFVD0ibWFpbiI+QmVlcDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NTJfMTYiIFRBUkdFVD0ibWFpbiI+QmVlcGVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg1N18xNiIgVEFSR0VUPSJtYWluIj5CZWhpbmQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzM18xMyIgVEFSR0VUPSJtYWluIj5CZWxvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzRfMTQiIFRBUkdFVD0ibWFpbiI+Qm9yZGVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl83Nl8xNCIgVEFSR0VUPSJtYWluIj5Cb3R0b208L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzY1XzE2IiBUQVJHRVQ9Im1haW4iPkJvdHRvbXBhbmVsPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyMF8xNCIgVEFSR0VUPSJtYWluIj5Cb3g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkwXzE0IiBUQVJHRVQ9Im1haW4iPkJveDwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9DLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9DLmh0bQppbmRleCBlYmEwMjc0Li4zMGMwNzBmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvQy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0MuaHRtCkBAIC0xLDU1ICsxLDYyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5DPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBDPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjEzXzE2IiBUQVJHRVQ9Im1haW4iPkNhbmNoYW5nZWNvbG9yPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzlfMTMiIFRBUkdFVD0ibWFpbiI+Q2FuX0NoYW5nZV9Db2xvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NzFfMTYiIFRBUkdFVD0ibWFpbiI+Q2JyZWFrPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4Ml8xMyIgVEFSR0VUPSJtYWluIj5DaGFuZ2VkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0NV8xNCIgVEFSR0VUPSJtYWluIj5DaGFuZ2VfQXR0cmlidXRlcyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4NDU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU0XzE0IiBUQVJHRVQ9Im1haW4iPkNoYW5nZV9BdHRyaWJ1dGVzIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjg1NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTE2XzE0IiBUQVJHRVQ9Im1haW4iPkNoYW5nZV9CYWNrZ3JvdW5kPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTJfMTQiIFRBUkdFVD0ibWFpbiI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODVfMTMiIFRBUkdFVD0ibWFpbiI+Q2hhcl9DaGVja19Sb3V0ZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MF8xNCIgVEFSR0VUPSJtYWluIj5DbGVhcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NjhfMTYiIFRBUkdFVD0ibWFpbiI+Q2xlYXJfT2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTgxXzE0IiBUQVJHRVQ9Im1haW4iPkNsZWFyX09uX05leHRfVXBkYXRlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MzNfMTQiIFRBUkdFVD0ibWFpbiI+Q2xlYXJfU29mdF9MYWJlbF9LZXlzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOTRfMTQiIFRBUkdFVD0ibWFpbiI+Q2xlYXJfVG9fRW5kX09mX0xpbmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4N18xNCIgVEFSR0VUPSJtYWluIj5DbGVhcl9Ub19FbmRfT2ZfU2NyZWVuPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMjlfMTYiIFRBUkdFVD0ibWFpbiI+Q2FuY2hhbmdlY29sb3I8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwOV8xMyIgVEFSR0VUPSJtYWluIj5DYW5fQ2hhbmdlX0NvbG9yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc3Ml8xNiIgVEFSR0VUPSJtYWluIj5DYnJlYWs8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzgzXzEzIiBUQVJHRVQ9Im1haW4iPkNoYW5nZWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAxNV8xNCIgVEFSR0VUPSJtYWluIj5DaGFuZ2VfQXR0cmlidXRlcyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMDE1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjRfMTQiIFRBUkdFVD0ibWFpbiI+Q2hhbmdlX0F0dHJpYnV0ZXMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTAyNDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjg2XzE0IiBUQVJHRVQ9Im1haW4iPkNoYW5nZV9CYWNrZ3JvdW5kPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjJfMTQiIFRBUkdFVD0ibWFpbiI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODZfMTMiIFRBUkdFVD0ibWFpbiI+Q2hhcl9DaGVja19Sb3V0ZXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1MF8xNCIgVEFSR0VUPSJtYWluIj5DbGVhcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NzBfMTYiIFRBUkdFVD0ibWFpbiI+Q2xlYXJfT2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1MV8xNCIgVEFSR0VUPSJtYWluIj5DbGVhcl9Pbl9OZXh0X1VwZGF0ZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzAzXzE0IiBUQVJHRVQ9Im1haW4iPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY0XzE0IiBUQVJHRVQ9Im1haW4iPkNsZWFyX1RvX0VuZF9PZl9MaW5lPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTdfMTQiIFRBUkdFVD0ibWFpbiI+Q2xlYXJfVG9fRW5kX09mX1NjcmVlbjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk4XzEzIiBUQVJHRVQ9Im1haW4iPkNvbCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjk4PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTlfMTMiIFRBUkdFVD0ibWFpbiI+Q29sIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6OTk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIzMF8xNiIgVEFSR0VUPSJtYWluIj5Db2xvcmNvbnRlbnQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0NF8xNCIgVEFSR0VUPSJtYWluIj5Db2xvcl9Db250ZW50PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxNV8xMyIgVEFSR0VUPSJtYWluIj5Db2x1bW5zPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzRfMTQiIFRBUkdFVD0ibWFpbiI+Q29weTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2IiBUQVJHRVQ9Im1haW4iPkNvcHl3aW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY3XzEzIiBUQVJHRVQ9Im1haW4iPkNvcHlfQXJnPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc3NF8xNiIgVEFSR0VUPSJtYWluIj5Db3VudCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo3NzQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTEyXzE2IiBUQVJHRVQ9Im1haW4iPkNvdW50IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjkxMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjlfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjU2OTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTNfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjI5MzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjNfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjYyMzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjQ2XzE2IiBUQVJHRVQ9Im1haW4iPkNvbG9yY29udGVudDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzgyXzE2IiBUQVJHRVQ9Im1haW4iPkNPTE9SU19Bc19GdW5jdGlvbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTE0XzE0IiBUQVJHRVQ9Im1haW4iPkNvbG9yX0NvbnRlbnQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM5MF8xNiIgVEFSR0VUPSJtYWluIj5DT0xPUl9QQUlSU19Bc19GdW5jdGlvbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzY1XzE2IiBUQVJHRVQ9Im1haW4iPkNPTFNfQXNfRnVuY3Rpb248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUzXzEzIiBUQVJHRVQ9Im1haW4iPkNvbHVtbnM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0NF8xNCIgVEFSR0VUPSJtYWluIj5Db3B5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNzVfMTYiIFRBUkdFVD0ibWFpbiI+Q29weXdpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjhfMTMiIFRBUkdFVD0ibWFpbiI+Q29weV9Bcmc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjgwXzE2IiBUQVJHRVQ9Im1haW4iPkNvdW50IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjY4MDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTdfMTYiIFRBUkdFVD0ibWFpbiI+Q291bnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6Nzk3PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80OF8xMyIgVEFSR0VUPSJtYWluIj5DcmVhdGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRzOjQ4PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkczo2NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xOTFfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjE5MTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzhfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjYzODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNjdfMTMiIFRBUkdFVD0ibWFpbiI+Q3JlYXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczo2NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjlfMTMiIFRBUkdFVD0ibWFpbiI+Q3VycmVudCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo3Mjk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjk0XzEzIiBUQVJHRVQ9Im1haW4iPkN1cnJlbnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6Mjk0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNDBfMTYiIFRBUkdFVD0ibWFpbiI+Q3VycmVudF9GbGQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDgxXzEzIiBUQVJHRVQ9Im1haW4iPkN1cnJlbnRfV2luZG93PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMwMF8xNiIgVEFSR0VUPSJtYWluIj5DdXJyX0l0ZW08L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk0XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczoyOTQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjI0XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo2MjQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTg5XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoxODk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo2MzY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzY2XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZHM6NjY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM5XzEzIiBUQVJHRVQ9Im1haW4iPkNyZWF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo3Mzk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzMwXzEzIiBUQVJHRVQ9Im1haW4iPkN1cnJlbnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NzMwPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5Ml8xMyIgVEFSR0VUPSJtYWluIj5DdXJyZW50IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI5MjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTZfMTYiIFRBUkdFVD0ibWFpbiI+Q3VycmVudF9GbGQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUwXzEzIiBUQVJHRVQ9Im1haW4iPkN1cnJlbnRfV2luZG93PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI2MV8xNiIgVEFSR0VUPSJtYWluIj5DdXJyX0l0ZW08L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ2MF8xNyIgVEFSR0VUPSJtYWluIj5jdXJzZXNfZnJlZWFsbDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODU5XzE0IiBUQVJHRVQ9Im1haW4iPkN1cnNlc19GcmVlX0FsbDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODQ2XzEzIiBUQVJHRVQ9Im1haW4iPkN1cnNlc19WZXJzaW9uPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMzFfMTQiIFRBUkdFVD0ibWFpbiI+Q3Vyc2VzX0ZyZWVfQWxsPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMThfMTMiIFRBUkdFVD0ibWFpbiI+Q3Vyc2VzX1ZlcnNpb248L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ1Ml8xNiIgVEFSR0VUPSJtYWluIj5jdXJzZXNfdmVyc2lvbkM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMxN18xNiIgVEFSR0VUPSJtYWluIj5DdXJzX1NldDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzM0XzE2IiBUQVJHRVQ9Im1haW4iPkN1cnNfU2V0PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MzhfMTYiIFRBUkdFVD0ibWFpbiI+Q19Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ4XzEzIiBUQVJHRVQ9Im1haW4iPkNfQnVpbHRpbl9Sb3V0ZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ5XzEzIiBUQVJHRVQ9Im1haW4iPkNfQ2hvaWNlX1JvdXRlcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDlfMTMiIFRBUkdFVD0ibWFpbiI+Q19CdWlsdGluX1JvdXRlcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTBfMTMiIFRBUkdFVD0ibWFpbiI+Q19DaG9pY2VfUm91dGVyPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzc4XzEzIiBUQVJHRVQ9Im1haW4iPkNfR2VuZXJpY19DaG9pY2U8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83OV8xMyIgVEFSR0VUPSJtYWluIj5DX0dlbmVyaWNfVHlwZTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDI2XzE2IiBUQVJHRVQ9Im1haW4iPkNfVXNlX0RlZmF1bHRfQ29sb3JzPC9BPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0QuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0QuaHRtCmluZGV4IGVhNDI2NDcuLjgxNDkxOWUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9ELmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvRC5odG0KQEAgLTEsNDcgKzEsNTEgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkQ8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+RDwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEQ8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5Ml8xMyIgVEFSR0VUPSJtYWluIj5EYXRhX0FoZWFkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5N18xMyIgVEFSR0VUPSJtYWluIj5EYXRhX0JlaGluZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDJfMTMiIFRBUkdFVD0ibWFpbiI+RGVmYXVsdF9GaWVsZF9PcHRpb25zPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyNV8xMyIgVEFSR0VUPSJtYWluIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNjhfMTMiIFRBUkdFVD0ibWFpbiI+RGVmYXVsdF9JdGVtX09wdGlvbnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTQ2XzEzIiBUQVJHRVQ9Im1haW4iPkRlZmF1bHRfTWVudV9PcHRpb25zPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1OTZfMTQiIFRBUkdFVD0ibWFpbiI+RGVmaW5lX0tleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDAwXzE2IiBUQVJHRVQ9Im1haW4iPkRlZmtleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjQ5XzE2IiBUQVJHRVQ9Im1haW4iPkRlZl9Qcm9nX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI1MV8xNiIgVEFSR0VUPSJtYWluIj5EZWZfU2hlbGxfTW9kZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDMyXzE2IiBUQVJHRVQ9Im1haW4iPkRlbGF5b3V0cHV0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzNfMTQiIFRBUkdFVD0ibWFpbiI+RGVsYXlfT3V0cHV0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4OF8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6NTg4PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMxNV8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6MzE1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYzNF8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NjM0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIwM18xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjAzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0NV8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NjQ1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMzlfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczoxMzk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNF8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGVfQ2hhcmFjdGVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzMzQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzOV8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGVfQ2hhcmFjdGVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzMzk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxMl8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGVfTGluZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTNfMTMiIFRBUkdFVD0ibWFpbiI+RGF0YV9BaGVhZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OThfMTMiIFRBUkdFVD0ibWFpbiI+RGF0YV9CZWhpbmQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA0XzEzIiBUQVJHRVQ9Im1haW4iPkRlZmF1bHRfRmllbGRfT3B0aW9uczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjZfMTMiIFRBUkdFVD0ibWFpbiI+RGVmYXVsdF9Gb3JtX09wdGlvbnM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTY2XzEzIiBUQVJHRVQ9Im1haW4iPkRlZmF1bHRfSXRlbV9PcHRpb25zPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE0NV8xMyIgVEFSR0VUPSJtYWluIj5EZWZhdWx0X01lbnVfT3B0aW9uczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzY2XzE0IiBUQVJHRVQ9Im1haW4iPkRlZmluZV9LZXk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxM18xNiIgVEFSR0VUPSJtYWluIj5EZWZrZXk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI2Nl8xNiIgVEFSR0VUPSJtYWluIj5EZWZfUHJvZ19Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNjhfMTYiIFRBUkdFVD0ibWFpbiI+RGVmX1NoZWxsX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA0NV8xNiIgVEFSR0VUPSJtYWluIj5EZWxheW91dHB1dDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODAzXzE0IiBUQVJHRVQ9Im1haW4iPkRlbGF5X091dHB1dDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTZfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjMxNjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MzVfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjYzNTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDFfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjIwMTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NDNfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjY0MzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTM4XzE0IiBUQVJHRVQ9Im1haW4iPkRlbGV0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZHM6MTM4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8xNCIgVEFSR0VUPSJtYWluIj5EZWxldGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6NzU4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDRfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlX0NoYXJhY3RlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTA0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDlfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlX0NoYXJhY3RlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTA5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODJfMTQiIFRBUkdFVD0ibWFpbiI+RGVsZXRlX0xpbmU8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE1Nl8xNiIgVEFSR0VUPSJtYWluIj5EZWxfUGFuZWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA0XzEzIiBUQVJHRVQ9Im1haW4iPkRlcml2ZWRfV2luZG93PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OF8xNiIgVEFSR0VUPSJtYWluIj5EZXJ3aW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTI2XzE2IiBUQVJHRVQ9Im1haW4iPkRlc2NuYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjEyNjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzBfMTYiIFRBUkdFVD0ibWFpbiI+RGVzY25hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6MjcwPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3OF8xNiIgVEFSR0VUPSJtYWluIj5EZXNjbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjoyNzg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc0XzE0IiBUQVJHRVQ9Im1haW4iPkRlc2NyaXB0aW9uIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI3NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzhfMTQiIFRBUkdFVD0ibWFpbiI+RGVzY3JpcHRpb24gLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6Mjc4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8xMyIgVEFSR0VUPSJtYWluIj5EZXJpdmVkX1dpbmRvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTlfMTYiIFRBUkdFVD0ibWFpbiI+RGVyd2luPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwOF8xNiIgVEFSR0VUPSJtYWluIj5EZXNjbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjoxMDg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjM0XzE2IiBUQVJHRVQ9Im1haW4iPkRlc2NuYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjIzNDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNDJfMTYiIFRBUkdFVD0ibWFpbiI+RGVzY25hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6MjQyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI3Ml8xNCIgVEFSR0VUPSJtYWluIj5EZXNjcmlwdGlvbiAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyNzI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc2XzE0IiBUQVJHRVQ9Im1haW4iPkRlc2NyaXB0aW9uIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI3NjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMTQiIFRBUkdFVD0ibWFpbiI+RGlzcGF0Y2hfRXZlbnQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA1OV8xNiIgVEFSR0VUPSJtYWluIj5Eb19VcGRhdGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzExXzEzIiBUQVJHRVQ9Im1haW4iPkRyaXZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo3MTE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjYwXzEzIiBUQVJHRVQ9Im1haW4iPkRyaXZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo2NjA8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTczXzE2IiBUQVJHRVQ9Im1haW4iPkRyaXZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo5NzM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjE0XzEzIiBUQVJHRVQ9Im1haW4iPkR1cGxpY2F0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo2MTQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIxXzEzIiBUQVJHRVQ9Im1haW4iPkR1cGxpY2F0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczozMjE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzIxXzE2IiBUQVJHRVQ9Im1haW4iPkR1cHdpbjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNTFfMTYiIFRBUkdFVD0ibWFpbiI+RHVwX0ZpZWxkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5M18xNCIgVEFSR0VUPSJtYWluIj5EeW5hbWljX0luZm88L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTU5XzE2IiBUQVJHRVQ9Im1haW4iPkR5bl9JbmZvPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNjJfMTYiIFRBUkdFVD0ibWFpbiI+RG9fVXBkYXRlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8xMyIgVEFSR0VUPSJtYWluIj5Ecml2ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NzEyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1OF8xMyIgVEFSR0VUPSJtYWluIj5Ecml2ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NjU4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1NV8xNiIgVEFSR0VUPSJtYWluIj5Ecml2ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6ODU1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyMl8xMyIgVEFSR0VUPSJtYWluIj5EdXBsaWNhdGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6MzIyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4NF8xMyIgVEFSR0VUPSJtYWluIj5EdXBsaWNhdGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6Nzg0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMyMl8xNiIgVEFSR0VUPSJtYWluIj5EdXB3aW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTMwXzE2IiBUQVJHRVQ9Im1haW4iPkR1cF9GaWVsZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTRfMTQiIFRBUkdFVD0ibWFpbiI+RHluYW1pY19JbmZvPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5NF8xNiIgVEFSR0VUPSJtYWluIj5EeW5fSW5mbzwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9FLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9FLmh0bQppbmRleCBhZDNmMjU2Li40MGNkYzJkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvRS5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0UuaHRtCkBAIC0xLDE4ICsxLDIyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5FPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkU8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBFPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MDlfMTYiIFRBUkdFVD0ibWFpbiI+RWNobzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg2XzE0IiBUQVJHRVQ9Im1haW4iPkVuYWJsZV9LZXk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTU0XzEzIiBUQVJHRVQ9Im1haW4iPkVuY2xvc2VkX0luX1dpbmRvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MTBfMTYiIFRBUkdFVD0ibWFpbiI+RWNobzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzE0IiBUQVJHRVQ9Im1haW4iPkVuYWJsZV9LZXk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzEzIiBUQVJHRVQ9Im1haW4iPkVuY2xvc2VkX0luX1dpbmRvdzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTNfMTYiIFRBUkdFVD0ibWFpbiI+RW5kd2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyOF8xNCIgVEFSR0VUPSJtYWluIj5FbmRfTW91c2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDk3XzE0IiBUQVJHRVQ9Im1haW4iPkVuZF9TY3JlZW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDk1XzE0IiBUQVJHRVQ9Im1haW4iPkVuZF9XaW5kb3dzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNzRfMTQiIFRBUkdFVD0ibWFpbiI+RXJhc2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA2MF8xNiIgVEFSR0VUPSJtYWluIj5FcmFzZWNoYXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY1Ml8xMyIgVEFSR0VUPSJtYWluIj5FcmFzZV9DaGFyYWN0ZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0IiBUQVJHRVQ9Im1haW4iPkV0aV9FeGNlcHRpb248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIwXzE0IiBUQVJHRVQ9Im1haW4iPkVuZF9Nb3VzZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjdfMTQiIFRBUkdFVD0ibWFpbiI+RW5kX1NjcmVlbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjVfMTQiIFRBUkdFVD0ibWFpbiI+RW5kX1dpbmRvd3M8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCIgVEFSR0VUPSJtYWluIj5FcmFzZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDczXzE2IiBUQVJHRVQ9Im1haW4iPkVyYXNlY2hhcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODIyXzEzIiBUQVJHRVQ9Im1haW4iPkVyYXNlX0NoYXJhY3RlcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiIFRBUkdFVD0ibWFpbiI+RXRpX0V4Y2VwdGlvbjwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9GLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9GLmh0bQppbmRleCA5NDAwZDM0Li4yMTgxNDVkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvRi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0YuaHRtCkBAIC0xLDU1ICsxLDU5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5GPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkY8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBGPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDFfMTMiIFRBUkdFVD0ibWFpbiI+RmllbGRzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2OF8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9CYWNrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjQ2ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzhfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfQmFjayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo0Nzg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjU1XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX0J1ZmZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjoyNTU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjY2XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX0J1ZmZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjoyNjY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc3XzEzIiBUQVJHRVQ9Im1haW4iPkZpZWxkX0NoZWNrX1JvdXRlcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDdfMTMiIFRBUkdFVD0ibWFpbiI+RmllbGRfQ291bnQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDI0XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX0ZvcmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6NDI0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQzNF8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9Gb3JlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjQzNDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMTNfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfSnVzdDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNzRfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfT3B0czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTJfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfT3B0c19PZmY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzQ5XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX09wdHNfT248L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTA3XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX1BhZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfU3RhdHVzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83Ml8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9Vc2VycHRyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiIFRBUkdFVD0ibWFpbiI+RmlsbF9TdHJpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRzOjExNjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzEzIiBUQVJHRVQ9Im1haW4iPkZpbGxfU3RyaW5nIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkczoxMjE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzYxXzE2IiBUQVJHRVQ9Im1haW4iPkZsYXNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3NV8xNCIgVEFSR0VUPSJtYWluIj5GbGFzaF9TY3JlZW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTI4XzE2IiBUQVJHRVQ9Im1haW4iPkZsZF9JbmZvPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMl8xMyIgVEFSR0VUPSJtYWluIj5GaWVsZHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDEwXzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX0JhY2sgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6NDEwPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQyMF8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9CYWNrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjQyMDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMjJfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfQnVmZmVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjIyMjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzNfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfQnVmZmVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjIzMzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzhfMTMiIFRBUkdFVD0ibWFpbiI+RmllbGRfQ2hlY2tfUm91dGVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwOF8xMyIgVEFSR0VUPSJtYWluIj5GaWVsZF9Db3VudDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNzFfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfRm9yZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjozNzE8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzgxXzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX0ZvcmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6MzgxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE4OF8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9KdXN0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMyN18xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9PcHRzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMxMF8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9PcHRzX09mZjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMDdfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfT3B0c19PbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NDZfMTYiIFRBUkdFVD0ibWFpbiI+RmllbGRfUGFkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1OV8xNiIgVEFSR0VUPSJtYWluIj5GaWVsZF9TdGF0dXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzY5XzE2IiBUQVJHRVQ9Im1haW4iPkZpZWxkX1VzZXJwdHI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzE0IiBUQVJHRVQ9Im1haW4iPkZpbGxfU3RyaW5nIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkczo5MjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiIFRBUkdFVD0ibWFpbiI+RmlsbF9TdHJpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRzOjk3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc2Ml8xNiIgVEFSR0VUPSJtYWluIj5GbGFzaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQ1XzE0IiBUQVJHRVQ9Im1haW4iPkZsYXNoX1NjcmVlbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjdfMTYiIFRBUkdFVD0ibWFpbiI+RmxkX0luZm88L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82NV8xNCIgVEFSR0VUPSJtYWluIj5GbHVzaCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjY1PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjZfMTQiIFRBUkdFVD0ibWFpbiI+Rmx1c2ggLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo2NjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDQyXzE2IiBUQVJHRVQ9Im1haW4iPkZsdXNoaW5wPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzhfMTQiIFRBUkdFVD0ibWFpbiI+Rmx1c2hfSW5wdXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM0XzE0IiBUQVJHRVQ9Im1haW4iPkZvcmVncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDM0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQzOV8xNCIgVEFSR0VUPSJtYWluIj5Gb3JlZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQzOTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzFfMTQiIFRBUkdFVD0ibWFpbiI+Rm9yZWdyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MzE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM2XzE0IiBUQVJHRVQ9Im1haW4iPkZvcmVncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDM2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1MV8xNCIgVEFSR0VUPSJtYWluIj5Gb3JtYXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODg5XzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fT3B0czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NjdfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9PcHRzX09mZjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NjRfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9PcHRzX09uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg0XzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fUmVxdWVzdF9OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjg0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkyXzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fUmVxdWVzdF9OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjkyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYyOF8xNiIgVEFSR0VUPSJtYWluIj5Gb3JtX1N1YjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83M18xNiIgVEFSR0VUPSJtYWluIj5Gb3JtX1VzZXJwdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjAwXzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fV2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNl8xNCIgVEFSR0VUPSJtYWluIj5GcmVlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjEzNjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xODBfMTQiIFRBUkdFVD0ibWFpbiI+RnJlZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoxODA8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODI1XzE2IiBUQVJHRVQ9Im1haW4iPkZyZWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6ODI1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk1OF8xNiIgVEFSR0VUPSJtYWluIj5GcmVlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjk1ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzFfMTYiIFRBUkdFVD0ibWFpbiI+RnJlZWl0ZW08L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTcyXzE0IiBUQVJHRVQ9Im1haW4iPkZyZWVfQXJnPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEzM18xNiIgVEFSR0VUPSJtYWluIj5GcmVlX0ZpZWxkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5Nl8xNiIgVEFSR0VUPSJtYWluIj5Gcm1fRHJpdmVyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4MV8xMyIgVEFSR0VUPSJtYWluIj5GdW5jdGlvbl9LZXk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg2XzEzIiBUQVJHRVQ9Im1haW4iPkZ1bmN0aW9uX0tleV9Db2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNTVfMTYiIFRBUkdFVD0ibWFpbiI+Rmx1c2hpbnA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwOF8xNCIgVEFSR0VUPSJtYWluIj5GbHVzaF9JbnB1dDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzVfMTQiIFRBUkdFVD0ibWFpbiI+Rm9yZWdyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo0MzU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQwXzE0IiBUQVJHRVQ9Im1haW4iPkZvcmVncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDQwPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyOV8xNCIgVEFSR0VUPSJtYWluIj5Gb3JlZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjQyOTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzRfMTQiIFRBUkdFVD0ibWFpbiI+Rm9yZWdyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MzQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTQ5XzE0IiBUQVJHRVQ9Im1haW4iPkZvcm1hdDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83NzlfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9PcHRzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc2Ml8xNiIgVEFSR0VUPSJtYWluIj5Gb3JtX09wdHNfT2ZmPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc1OV8xNiIgVEFSR0VUPSJtYWluIj5Gb3JtX09wdHNfT248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjdfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6Njc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzVfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6NzU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTUzXzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fU3ViPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcwXzE2IiBUQVJHRVQ9Im1haW4iPkZvcm1fVXNlcnB0cjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjhfMTYiIFRBUkdFVD0ibWFpbiI+Rm9ybV9XaW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM3XzE0IiBUQVJHRVQ9Im1haW4iPkZyZWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6MTM3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF8xNCIgVEFSR0VUPSJtYWluIj5GcmVlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjE3ODwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MjhfMTYiIFRBUkdFVD0ibWFpbiI+RnJlZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo3Mjg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODQzXzE2IiBUQVJHRVQ9Im1haW4iPkZyZWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6ODQzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzExM18xNiIgVEFSR0VUPSJtYWluIj5GcmVlaXRlbTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzNfMTQiIFRBUkdFVD0ibWFpbiI+RnJlZV9Bcmc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE2XzE2IiBUQVJHRVQ9Im1haW4iPkZyZWVfRmllbGQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODc4XzE2IiBUQVJHRVQ9Im1haW4iPkZybV9Ecml2ZXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTUxXzEzIiBUQVJHRVQ9Im1haW4iPkZ1bmN0aW9uX0tleTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTZfMTMiIFRBUkdFVD0ibWFpbiI+RnVuY3Rpb25fS2V5X0NvZGU8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvRy5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvRy5odG0KaW5kZXggNDg2YzNiMC4uZjE2NTU2OSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0cuaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9HLmh0bQpAQCAtMSw1ICsxLDkgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkc8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+RzwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEc8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgpAQCAtOCw3MyArMTIsNzMgQEAKIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzgxXzEzIiBUQVJHRVQ9Im1haW4iPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODBfMTMiIFRBUkdFVD0ibWFpbiI+R2VuZXJpY19OZXh0PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzg3XzEzIiBUQVJHRVQ9Im1haW4iPkdlbmVyaWNfUHJldjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDYzXzE0IiBUQVJHRVQ9Im1haW4iPkdldCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNDYzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzRfMTQiIFRBUkdFVD0ibWFpbiI+R2V0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE0NzQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3MF8xNiIgVEFSR0VUPSJtYWluIj5HZXRCZWdYPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjdfMTYiIFRBUkdFVD0ibWFpbiI+R2V0QmVnWTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzg4XzE2IiBUQVJHRVQ9Im1haW4iPkdldEN1clg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM4NV8xNiIgVEFSR0VUPSJtYWluIj5HZXRDdXJZPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTBfMTYiIFRBUkdFVD0ibWFpbiI+R2V0TWF4WDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzQ3XzE2IiBUQVJHRVQ9Im1haW4iPkdldE1heFk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzM18xNCIgVEFSR0VUPSJtYWluIj5HZXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTYzMzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ0XzE0IiBUQVJHRVQ9Im1haW4iPkdldCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNjQ0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNzdfMTYiIFRBUkdFVD0ibWFpbiI+R2V0QmVnWDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzc0XzE2IiBUQVJHRVQ9Im1haW4iPkdldEJlZ1k8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM5NV8xNiIgVEFSR0VUPSJtYWluIj5HZXRDdXJYPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOTJfMTYiIFRBUkdFVD0ibWFpbiI+R2V0Q3VyWTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzU5XzE2IiBUQVJHRVQ9Im1haW4iPkdldE1heFg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM1Nl8xNiIgVEFSR0VUPSJtYWluIj5HZXRNYXhZPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzY2XzE2IiBUQVJHRVQ9Im1haW4iPkdldG1vdXNlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MDdfMTYiIFRBUkdFVD0ibWFpbiI+R2V0UGFyWDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDA0XzE2IiBUQVJHRVQ9Im1haW4iPkdldFBhclk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQxNF8xNiIgVEFSR0VUPSJtYWluIj5HZXRQYXJYPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MTFfMTYiIFRBUkdFVD0ibWFpbiI+R2V0UGFyWTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNjVfMTYiIFRBUkdFVD0ibWFpbiI+Z2V0d2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzYyXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9Bcmc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyNV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfQmFja2dyb3VuZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjJfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X0J1ZmZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczozNjI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzY4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9CdWZmZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6MzY4PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyNl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczo4MjY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODMyXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjgzMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9DdXJzb3JfUG9zaXRpb248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNjFfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0FyZzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjk1XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9CYWNrZ3JvdW5kPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2M18xNCIgVEFSR0VUPSJtYWluIj5HZXRfQnVmZmVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjM2MzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjlfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0J1ZmZlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczozNjk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTk2XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjk5NjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDAyXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEwMDI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8xNCIgVEFSR0VUPSJtYWluIj5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTlfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0VudHJ5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzN18xNCIgVEFSR0VUPSJtYWluIj5HZXRfRXZlbnQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA4NF8xNiIgVEFSR0VUPSJtYWluIj5HZXRfRmllbGRpbmRleDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl81OV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfRmllbGR0eXBlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2NV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfRmllbGRfSW5pdF9Ib29rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3MF8xMyIgVEFSR0VUPSJtYWluIj5HZXRfRmllbGRfVGVybV9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyOV8xNCIgVEFSR0VUPSJtYWluIj5HZXRfRXZlbnQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU3XzE2IiBUQVJHRVQ9Im1haW4iPkdldF9GaWVsZGluZGV4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzU4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9GaWVsZHR5cGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTY2XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9GaWVsZF9Jbml0X0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTcxXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9GaWVsZF9UZXJtX0hvb2s8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82M18xMyIgVEFSR0VUPSJtYWluIj5HZXRfRmxhZyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzOjYzPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY0XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9GbGFnIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRzOjY0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3NV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfRm9ybV9Jbml0X0hvb2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTgwXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9Gb3JtX1Rlcm1fSG9vazwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDVfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0luZGV4IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjc0NTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMTBfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0luZGV4IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjMxMDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDBfMTYiIFRBUkdFVD0ibWFpbiI+R2V0X0l0ZW1pbmRleDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODlfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0l0ZW1fSW5pdF9Ib29rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5NF8xMyIgVEFSR0VUPSJtYWluIj5HZXRfSXRlbV9UZXJtX0hvb2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQ1XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9KdXN0aWZpY2F0aW9uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxNV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfS2V5UGFkX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzUxXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9LZXlzdHJva2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTk5XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9NZW51X0luaXRfSG9vazwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MzJfMTYiIFRBUkdFVD0ibWFpbiI+R2V0X01lbnVfTWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo1MzI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTQwXzE2IiBUQVJHRVQ9Im1haW4iPkdldF9NZW51X01hcmsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NTQwPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwNF8xMyIgVEFSR0VUPSJtYWluIj5HZXRfTWVudV9UZXJtX0hvb2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTMzXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9Nb3VzZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NzZfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0Zvcm1fSW5pdF9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU4MV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfRm9ybV9UZXJtX0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ2XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9JbmRleCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo3NDY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzA4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9JbmRleCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozMDg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjk4XzE2IiBUQVJHRVQ9Im1haW4iPkdldF9JdGVtaW5kZXg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTg3XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9JdGVtX0luaXRfSG9vazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTJfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0l0ZW1fVGVybV9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0Nl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfSnVzdGlmaWNhdGlvbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDg1XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9LZXlQYWRfTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjFfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X0tleXN0cm9rZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTdfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X01lbnVfSW5pdF9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ1OV8xNiIgVEFSR0VUPSJtYWluIj5HZXRfTWVudV9NYXJrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjQ1OTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NjdfMTYiIFRBUkdFVD0ibWFpbiI+R2V0X01lbnVfTWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo0Njc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjAyXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9NZW51X1Rlcm1fSG9vazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjVfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X01vdXNlPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjdfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X051bWJlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzOjY3PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9OdW1iZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZHM6Njg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDExXzE0IiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQxMTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTZfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDE2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OF8xNCIgVEFSR0VUPSJtYWluIj5HZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo2NTg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjYzXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjY2MzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTFfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjUxPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1Nl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyNTY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ3XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM0NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTJfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MzUyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTJfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA3MF8xNiIgVEFSR0VUPSJtYWluIj5HZXRfUGFnZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NThfMTYiIFRBUkdFVD0ibWFpbiI+R2V0X1BhdHRlcm48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOF8xNCIgVEFSR0VUPSJtYWluIj5HZXRfU2l6ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzE0IiBUQVJHRVQ9Im1haW4iPkdldF9Tb2Z0X0xhYmVsX0tleSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTIyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MjdfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1NvZnRfTGFiZWxfS2V5IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1Mjc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2M18xMyIgVEFSR0VUPSJtYWluIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlcyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTYzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjdfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTU2NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTNfMTYiIFRBUkdFVD0ibWFpbiI+R2V0X1NwYWNpbmc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDEyXzE0IiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQxMjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTdfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDE3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OV8xNCIgVEFSR0VUPSJtYWluIj5HZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo2NTk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjY0XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjY2NDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDlfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjQ5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1NF8xMyIgVEFSR0VUPSJtYWluIj5HZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyNTQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ1XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM0NTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTBfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MzUwPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjJfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTQzXzE2IiBUQVJHRVQ9Im1haW4iPkdldF9QYWdlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY2NV8xNiIgVEFSR0VUPSJtYWluIj5HZXRfUGF0dGVybjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9TaXplPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2OTJfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X1NvZnRfTGFiZWxfS2V5IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE2OTI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5N18xMyIgVEFSR0VUPSJtYWluIj5HZXRfU29mdF9MYWJlbF9LZXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTY5NzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzMzXzEzIiBUQVJHRVQ9Im1haW4iPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE3MzM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczN18xMyIgVEFSR0VUPSJtYWluIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlcyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNzM3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyNF8xNiIgVEFSR0VUPSJtYWluIj5HZXRfU3BhY2luZzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzczXzE0IiBUQVJHRVQ9Im1haW4iPkdldF9TdHJpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkczo3MzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzc2XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9TdHJpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkczo3NjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl81N18xNCIgVEFSR0VUPSJtYWluIj5HZXRfU3RyaW5nIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRzOjU3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyMl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfU3ViX1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1MjI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9TdWJfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM3ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl83OV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfVHlwZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjNfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1N1Yl9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NTIzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3Nl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfU3ViX1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozNzY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfODBfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1R5cGU8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9Vc2VyX0RhdGEgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzOjU5PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyIgVEFSR0VUPSJtYWluIj5HZXRfVXNlcl9EYXRhIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkczo2NDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCIgVEFSR0VUPSJtYWluIj5HZXRfVXNlcl9EYXRhIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRzOjU5PC9BPgpAQCAtODUsMTIgKzg5LDEyIEBACiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1VzZXJfRGF0YSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkczo2NDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0IiBUQVJHRVQ9Im1haW4iPkdldF9Vc2VyX0RhdGEgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhLmFkczo1OTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9Vc2VyX0RhdGEgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhLmFkczo2NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTFfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1MTE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzY3XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MzY3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMDJfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZHM6MTAyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxMl8xMyIgVEFSR0VUPSJtYWluIj5HZXRfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjUxMjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjVfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozNjU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMV8xMyIgVEFSR0VUPSJtYWluIj5HZXRfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczoxMDE8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ4XzEzIiBUQVJHRVQ9Im1haW4iPkdldF9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW4uYWRzOjQ4PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjYyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzZfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvd19Qb3NpdGlvbjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzFfMTQiIFRBUkdFVD0ibWFpbiI+R3JleSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0NzE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc2XzE0IiBUQVJHRVQ9Im1haW4iPkdyZXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDc2PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDZfMTQiIFRBUkdFVD0ibWFpbiI+R2V0X1dpbmRvd19Qb3NpdGlvbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjlfMTQiIFRBUkdFVD0ibWFpbiI+R3JleSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0Njk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc0XzE0IiBUQVJHRVQ9Im1haW4iPkdyZXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDc0PC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0guaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0guaHRtCmluZGV4IGJmMDI1NmUuLmVlN2M2NzAgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9ILmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvSC5odG0KQEAgLTEsMjIgKzEsMjYgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkg8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+SDwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEg8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg1OV8xNiIgVEFSR0VUPSJtYWluIj5IYWxmZGVsYXk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTIzXzE0IiBUQVJHRVQ9Im1haW4iPkhhbGZfRGVsYXk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4NF8xNiIgVEFSR0VUPSJtYWluIj5IYXNjb2xvcnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTQ3XzE2IiBUQVJHRVQ9Im1haW4iPkhhc2tleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzI2XzEzIiBUQVJHRVQ9Im1haW4iPkhhc19Db2xvcnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA3Nl8xNiIgVEFSR0VUPSJtYWluIj5IYXNfSWM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA4OF8xNiIgVEFSR0VUPSJtYWluIj5IYXNfSWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Ml8xMyIgVEFSR0VUPSJtYWluIj5IYXNfSW5zZXJ0X0NoYXJhY3RlcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjY3XzEzIiBUQVJHRVQ9Im1haW4iPkhhc19JbnNlcnRfTGluZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjdfMTMiIFRBUkdFVD0ibWFpbiI+SGFzX0tleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85OF8xMyIgVEFSR0VUPSJtYWluIj5IYXNfTW91c2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODYwXzE2IiBUQVJHRVQ9Im1haW4iPkhhbGZkZWxheTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDkzXzE0IiBUQVJHRVQ9Im1haW4iPkhhbGZfRGVsYXk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE5OV8xNiIgVEFSR0VUPSJtYWluIj5IYXNjb2xvcnM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTUwXzE2IiBUQVJHRVQ9Im1haW4iPkhhc2tleTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODk2XzEzIiBUQVJHRVQ9Im1haW4iPkhhc19Db2xvcnM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA4OV8xNiIgVEFSR0VUPSJtYWluIj5IYXNfSWM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEwMV8xNiIgVEFSR0VUPSJtYWluIj5IYXNfSWw8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMl8xMyIgVEFSR0VUPSJtYWluIj5IYXNfSW5zZXJ0X0NoYXJhY3RlcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODM3XzEzIiBUQVJHRVQ9Im1haW4iPkhhc19JbnNlcnRfTGluZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzdfMTMiIFRBUkdFVD0ibWFpbiI+SGFzX0tleTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85MF8xMyIgVEFSR0VUPSJtYWluIj5IYXNfTW91c2U8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjBfMTMiIFRBUkdFVD0ibWFpbiI+SGFzX1N0cmluZzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTdfMTQiIFRBUkdFVD0ibWFpbiI+SGlkZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTZfMTQiIFRBUkdFVD0ibWFpbiI+SGlkZTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfOTVfMTYiIFRBUkdFVD0ibWFpbiI+SGlkZXBhbmVsPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyOF8xNCIgVEFSR0VUPSJtYWluIj5Ib3Jpem9udGFsX0xpbmU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODk4XzE0IiBUQVJHRVQ9Im1haW4iPkhvcml6b250YWxfTGluZTwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9JLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9JLmh0bQppbmRleCA3ODEzYzc0Li5hZWMwNTk3IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvSS5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0kuaHRtCkBAIC0xLDUxICsxLDU1IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5JPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkk8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBJPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTJfMTciIFRBUkdFVD0ibWFpbiI+SURDX09rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4MF8xNiIgVEFSR0VUPSJtYWluIj5JRExfT2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwOV8xNCIgVEFSR0VUPSJtYWluIj5JbW1lZGlhdGVfVXBkYXRlX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAxNF8xNyIgVEFSR0VUPSJtYWluIj5JbW1lZG9rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4Ml8xNCIgVEFSR0VUPSJtYWluIj5JbmZvPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiIFRBUkdFVD0ibWFpbiI+SW5pdGNvbG9yPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNDRfMTYiIFRBUkdFVD0ibWFpbiI+SW5pdHBhaXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTk0XzE3IiBUQVJHRVQ9Im1haW4iPklEQ19PazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85ODJfMTYiIFRBUkdFVD0ibWFpbiI+SURMX09rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzlfMTQiIFRBUkdFVD0ibWFpbiI+SW1tZWRpYXRlX1VwZGF0ZV9Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTZfMTciIFRBUkdFVD0ibWFpbiI+SW1tZWRvazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODNfMTQiIFRBUkdFVD0ibWFpbiI+SW5mbzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjE0XzE2IiBUQVJHRVQ9Im1haW4iPkluaXRjb2xvcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTU3XzE2IiBUQVJHRVQ9Im1haW4iPkluaXRwYWlyPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMF8xNiIgVEFSR0VUPSJtYWluIj5Jbml0c2NyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzFfMTQiIFRBUkdFVD0ibWFpbiI+SW5pdF9Db2xvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzEyXzE0IiBUQVJHRVQ9Im1haW4iPkluaXRfUGFpcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODZfMTQiIFRBUkdFVD0ibWFpbiI+SW5pdF9TY3JlZW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5OV8xNCIgVEFSR0VUPSJtYWluIj5Jbml0X1NvZnRfTGFiZWxfS2V5czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTQiIFRBUkdFVD0ibWFpbiI+SW5pdF9XaW5kb3dzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzFfMTQiIFRBUkdFVD0ibWFpbiI+SW5zZXJ0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzNzE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM3N18xNCIgVEFSR0VUPSJtYWluIj5JbnNlcnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTM3NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzg5XzE0IiBUQVJHRVQ9Im1haW4iPkluc2VydCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMzg5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMTQiIFRBUkdFVD0ibWFpbiI+SW5zZXJ0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzOTg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIwNF8xNCIgVEFSR0VUPSJtYWluIj5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMThfMTQiIFRBUkdFVD0ibWFpbiI+SW5zZXJ0X0xpbmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODcxXzE2IiBUQVJHRVQ9Im1haW4iPkludHJmbHVzaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTAxXzE0IiBUQVJHRVQ9Im1haW4iPkluaXRfQ29sb3I8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4Ml8xNCIgVEFSR0VUPSJtYWluIj5Jbml0X1BhaXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjU2XzE0IiBUQVJHRVQ9Im1haW4iPkluaXRfU2NyZWVuPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjlfMTQiIFRBUkdFVD0ibWFpbiI+SW5pdF9Tb2Z0X0xhYmVsX0tleXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjU5XzE0IiBUQVJHRVQ9Im1haW4iPkluaXRfV2luZG93czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQxXzE0IiBUQVJHRVQ9Im1haW4iPkluc2VydCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTQxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDdfMTQiIFRBUkdFVD0ibWFpbiI+SW5zZXJ0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1NDc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1OV8xNCIgVEFSR0VUPSJtYWluIj5JbnNlcnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTU1OTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTY4XzE0IiBUQVJHRVQ9Im1haW4iPkluc2VydCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNTY4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzRfMTQiIFRBUkdFVD0ibWFpbiI+SW5zZXJ0X0RlbGV0ZV9MaW5lczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzg4XzE0IiBUQVJHRVQ9Im1haW4iPkluc2VydF9MaW5lPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg3Ml8xNiIgVEFSR0VUPSJtYWluIj5JbnRyZmx1c2g8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzXzE2IiBUQVJHRVQ9Im1haW4iPklzZW5kd2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwMl8xMyIgVEFSR0VUPSJtYWluIj5Jc19FbmRfV2luZG93PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8xMyIgVEFSR0VUPSJtYWluIj5Jc19GdW5jdGlvbl9LZXk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyNF8xMyIgVEFSR0VUPSJtYWluIj5Jc19IaWRkZW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODUxXzE2IiBUQVJHRVQ9Im1haW4iPklzX0tleXBhZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NzJfMTMiIFRBUkdFVD0ibWFpbiI+SXNfRW5kX1dpbmRvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDRfMTMiIFRBUkdFVD0ibWFpbiI+SXNfRnVuY3Rpb25fS2V5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMjNfMTMiIFRBUkdFVD0ibWFpbiI+SXNfSGlkZGVuPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg1Ml8xNiIgVEFSR0VUPSJtYWluIj5Jc19LZXlwYWQ8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNTBfMTMiIFRBUkdFVD0ibWFpbiI+SXNfTWludXNPbmVfUG9pbnRlcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTE5XzE2IiBUQVJHRVQ9Im1haW4iPklzX05ldzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjNfMTMiIFRBUkdFVD0ibWFpbiI+SXNfTmV3X1BhZ2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzNV8xNiIgVEFSR0VUPSJtYWluIj5Jc19TY3JvbGxfT2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2MF8xMyIgVEFSR0VUPSJtYWluIj5Jc19Ub3VjaGVkIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjExNjA8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2NV8xMyIgVEFSR0VUPSJtYWluIj5Jc19Ub3VjaGVkIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjExNjU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTI4XzE2IiBUQVJHRVQ9Im1haW4iPkl0ZW1uYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjEyODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTNfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbW5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6MjUzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI2MV8xNiIgVEFSR0VUPSJtYWluIj5JdGVtbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjoyNjE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzEzIiBUQVJHRVQ9Im1haW4iPkl0ZW1zPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyOV8xMyIgVEFSR0VUPSJtYWluIj5JdGVtX0NvdW50PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg2MF8xNiIgVEFSR0VUPSJtYWluIj5JdGVtX0luaXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjM0XzE2IiBUQVJHRVQ9Im1haW4iPkl0ZW1fT3B0czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTRfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9PcHRzX09mZjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTFfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9PcHRzX09uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg2OF8xNiIgVEFSR0VUPSJtYWluIj5JdGVtX1Rlcm08L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjRfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9Vc2VycHRyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE2OF8xNiIgVEFSR0VUPSJtYWluIj5JdGVtX1ZhbDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODFfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9WaXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTg5XzE2IiBUQVJHRVQ9Im1haW4iPklzX05ldzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjRfMTMiIFRBUkdFVD0ibWFpbiI+SXNfTmV3X1BhZ2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzN18xNiIgVEFSR0VUPSJtYWluIj5Jc19TY3JvbGxfT2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzMF8xMyIgVEFSR0VUPSJtYWluIj5Jc19Ub3VjaGVkIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzMzA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNV8xMyIgVEFSR0VUPSJtYWluIj5Jc19Ub3VjaGVkIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEzMzU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEwXzE2IiBUQVJHRVQ9Im1haW4iPkl0ZW1uYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjExMDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTdfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbW5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6MjE3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIyNV8xNiIgVEFSR0VUPSJtYWluIj5JdGVtbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjoyMjU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIxXzEzIiBUQVJHRVQ9Im1haW4iPkl0ZW1zPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyN18xMyIgVEFSR0VUPSJtYWluIj5JdGVtX0NvdW50PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc0OV8xNiIgVEFSR0VUPSJtYWluIj5JdGVtX0luaXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTk5XzE2IiBUQVJHRVQ9Im1haW4iPkl0ZW1fT3B0czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODRfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9PcHRzX09mZjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODFfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9PcHRzX09uPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc1N18xNiIgVEFSR0VUPSJtYWluIj5JdGVtX1Rlcm08L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjFfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9Vc2VycHRyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE0M18xNiIgVEFSR0VUPSJtYWluIj5JdGVtX1ZhbDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTZfMTYiIFRBUkdFVD0ibWFpbiI+SXRlbV9WaXM8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvSy5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvSy5odG0KaW5kZXggYWVjZTk1MC4uNDVlZTUwOCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0suaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9LLmh0bQpAQCAtMSwxNCArMSwxOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+SzwvVElUTEU+PC9IRUFEPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5LPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEJPRFk+CiA8SDI+RnVuY3Rpb25zIC0gSzwvSDI+CiA8QSBIUkVGPSIuLi9mdW5jcy5odG0iIFRBUkdFVD0iX3NlbGYiPltpbmRleF08L0E+CiA8VUwgQ09NUEFDVCBUWVBFPURJU0M+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjRfMTYiIFRBUkdFVD0ibWFpbiI+S2V5bmFtZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTg3XzE2IiBUQVJHRVQ9Im1haW4iPktleW9rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MF8xNiIgVEFSR0VUPSJtYWluIj5LZXlwYWQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxMF8xNCIgVEFSR0VUPSJtYWluIj5LZXlfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNjEwPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTZfMTMiIFRBUkdFVD0ibWFpbiI+S2V5X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTYxNjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDY4XzE2IiBUQVJHRVQ9Im1haW4iPktpbGxjaGFyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NTdfMTMiIFRBUkdFVD0ibWFpbiI+S2lsbF9DaGFyYWN0ZXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk5OV8xNiIgVEFSR0VUPSJtYWluIj5LZXlvazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NDFfMTYiIFRBUkdFVD0ibWFpbiI+S2V5cGFkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODBfMTQiIFRBUkdFVD0ibWFpbiI+S2V5X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTc4MDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg2XzEzIiBUQVJHRVQ9Im1haW4iPktleV9OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE3ODY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA4MV8xNiIgVEFSR0VUPSJtYWluIj5LaWxsY2hhcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODI3XzEzIiBUQVJHRVQ9Im1haW4iPktpbGxfQ2hhcmFjdGVyPC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL0wuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL0wuaHRtCmluZGV4IGI3ZDYzZGQuLjQwNDdlOGIgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9MLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvTC5odG0KQEAgLTEsMjAgKzEsMjUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPkw8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+TDwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIEw8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDJfMTQiIFRBUkdFVD0ibWFpbiI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDAyXzE2IiBUQVJHRVQ9Im1haW4iPkxlYXZlX09rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzJfMTQiIFRBUkdFVD0ibWFpbiI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDA0XzE2IiBUQVJHRVQ9Im1haW4iPkxlYXZlX09rPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTAxXzEzIiBUQVJHRVQ9Im1haW4iPkxpbmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczoxMDE8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDJfMTMiIFRBUkdFVD0ibWFpbiI+TGluZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjEwMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTJfMTMiIFRBUkdFVD0ibWFpbiI+TGluZXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUwXzEzIiBUQVJHRVQ9Im1haW4iPkxpbmVzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNTdfMTYiIFRBUkdFVD0ibWFpbiI+TElORVNfQXNfRnVuY3Rpb248L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl83N18xMyIgVEFSR0VUPSJtYWluIj5MaW5lX0xlbmd0aCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjc3PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzhfMTMiIFRBUkdFVD0ibWFpbiI+TGluZV9MZW5ndGggLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo3ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjhfMTMiIFRBUkdFVD0ibWFpbiI+TGluazwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNzJfMTYiIFRBUkdFVD0ibWFpbiI+TG5rX0ZpZWxkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMTBfMTYiIFRBUkdFVD0ibWFpbiI+TG9uZ25hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MjExMDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTE4XzE2IiBUQVJHRVQ9Im1haW4iPkxvbmduYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjIxMTg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3N18xNCIgVEFSR0VUPSJtYWluIj5Mb25nX05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTY3NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjgxXzEzIiBUQVJHRVQ9Im1haW4iPkxvbmdfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNjgxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyOV8xMyIgVEFSR0VUPSJtYWluIj5MaW5rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE1MV8xNiIgVEFSR0VUPSJtYWluIj5MbmtfRmllbGQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEyM18xNiIgVEFSR0VUPSJtYWluIj5Mb25nbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoyMTIzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMzFfMTYiIFRBUkdFVD0ibWFpbiI+TG9uZ25hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MjEzMTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODQ3XzE0IiBUQVJHRVQ9Im1haW4iPkxvbmdfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxODQ3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTFfMTMiIFRBUkdFVD0ibWFpbiI+TG9uZ19OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE4NTE8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvTS5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvTS5odG0KaW5kZXggOWQwOTVmMi4uZGFmZmUxZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL00uaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9NLmh0bQpAQCAtMSw1MSArMSw1NSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+TTwvVElUTEU+PC9IRUFEPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5NPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEJPRFk+CiA8SDI+RnVuY3Rpb25zIC0gTTwvSDI+CiA8QSBIUkVGPSIuLi9mdW5jcy5odG0iIFRBUkdFVD0iX3NlbGYiPltpbmRleF08L0E+CiA8VUwgQ09NUEFDVCBUWVBFPURJU0M+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTYyXzEzIiBUQVJHRVQ9Im1haW4iPk1ha2VfQXJnPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwOV8xNCIgVEFSR0VUPSJtYWluIj5NYXJrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjQwOTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MTNfMTQiIFRBUkdFVD0ibWFpbiI+TWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjA4XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfQmFjayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo2MDg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE4XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfQmFjayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo2MTg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzg3XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfRm10PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU2OV8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0ZvcmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NTY5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU3OV8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0ZvcmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NTc5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0N18xNiIgVEFSR0VUPSJtYWluIj5NZW51X0dyZXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NjQ3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY1N18xNiIgVEFSR0VUPSJtYWluIj5NZW51X0dyZXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NjU3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg3Nl8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0luaXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDE0XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfT3B0czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTRfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9PcHRzX09mZjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTFfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9PcHRzX09uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY4Ml8xNiIgVEFSR0VUPSJtYWluIj5NZW51X1BhZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NzBfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9TdWI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODg0XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfVGVybTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82M18xNiIgVEFSR0VUPSJtYWluIj5NZW51X1VzZXJwdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQ2XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfV2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyOV8xNiIgVEFSR0VUPSJtYWluIj5NZXRhPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2M18xMyIgVEFSR0VUPSJtYWluIj5NYWtlX0FyZzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDdfMTQiIFRBUkdFVD0ibWFpbiI+TWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MDc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDExXzE0IiBUQVJHRVQ9Im1haW4iPk1hcmsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDExPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyOV8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0JhY2sgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NTI5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzOV8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0JhY2sgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NTM5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5Ml8xNiIgVEFSR0VUPSJtYWluIj5NZW51X0ZtdDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80OTNfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9Gb3JlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjQ5MzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MDNfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9Gb3JlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjUwMzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjVfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9HcmV5IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjU2NTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzVfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9HcmV5IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjU3NTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NjVfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9Jbml0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1OF8xNiIgVEFSR0VUPSJtYWluIj5NZW51X09wdHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQzXzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfT3B0c19PZmY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQwXzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfT3B0c19PbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OTZfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9QYWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDA3XzE2IiBUQVJHRVQ9Im1haW4iPk1lbnVfU3ViPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3M18xNiIgVEFSR0VUPSJtYWluIj5NZW51X1Rlcm08L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjFfMTYiIFRBUkdFVD0ibWFpbiI+TWVudV9Vc2VycHRyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM4Nl8xNiIgVEFSR0VUPSJtYWluIj5NZW51X1dpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzBfMTYiIFRBUkdFVD0ibWFpbiI+TWV0YTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTBfMTYiIFRBUkdFVD0ibWFpbiI+TU1hc2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMjExXzE2IiBUQVJHRVQ9Im1haW4iPk1vdXNlaW50ZXJ2YWw8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMjEyXzE2IiBUQVJHRVQ9Im1haW4iPk1vdXNlaW50ZXJ2YWw8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNTJfMTYiIFRBUkdFVD0ibWFpbiI+TW91c2VfQXZhaWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTYxXzEzIiBUQVJHRVQ9Im1haW4iPk1vdXNlX0ludGVydmFsPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxMl8xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjYxMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE3XzE0IiBUQVJHRVQ9Im1haW4iPk1vdmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRzOjExNzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83ODZfMTYiIFRBUkdFVD0ibWFpbiI+TW92ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo3ODY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTUzXzEzIiBUQVJHRVQ9Im1haW4iPk1vdXNlX0ludGVydmFsPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxM18xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjYxMzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE2XzE0IiBUQVJHRVQ9Im1haW4iPk1vdmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRzOjExNjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTJfMTYiIFRBUkdFVD0ibWFpbiI+TW92ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo2OTI8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMl8xNiIgVEFSR0VUPSJtYWluIj5Nb3ZlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkYjoxMzI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTExXzE0IiBUQVJHRVQ9Im1haW4iPk1vdmVfQ3Vyc29yPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyNl8xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxOV8xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlX1dpbmRvdzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNTBfMTYiIFRBUkdFVD0ibWFpbiI+TXZkZXJ3aW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjgxXzE0IiBUQVJHRVQ9Im1haW4iPk1vdmVfQ3Vyc29yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5Nl8xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4OV8xNCIgVEFSR0VUPSJtYWluIj5Nb3ZlX1dpbmRvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNTFfMTYiIFRBUkdFVD0ibWFpbiI+TXZkZXJ3aW48L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2IiBUQVJHRVQ9Im1haW4iPm12d2FkZGNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1ODBfMTYiIFRBUkdFVD0ibWFpbiI+TXZ3ZGVsY2g8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzM2XzE2IiBUQVJHRVQ9Im1haW4iPk12d2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MDRfMTYiIFRBUkdFVD0ibWFpbiI+TXZ3aW5jaDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI5XzE2IiBUQVJHRVQ9Im1haW4iPk12d2luc2NoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NjhfMTYiIFRBUkdFVD0ibWFpbiI+TXZ3aW5zbnN0cjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTZfMTYiIFRBUkdFVD0ibWFpbiI+TV9Qb3N0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiOjkxNjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNTRfMTYiIFRBUkdFVD0ibWFpbiI+TV9Qb3N0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjM1NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiIFRBUkdFVD0ibWFpbiI+TV9TY2FsZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo2NDM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDgzXzE2IiBUQVJHRVQ9Im1haW4iPk1fU2NhbGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NDgzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxOF8xNiIgVEFSR0VUPSJtYWluIj5NX1VucG9zdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo5MTg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzU2XzE2IiBUQVJHRVQ9Im1haW4iPk1fVW5wb3N0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjM1NjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTg5XzE2IiBUQVJHRVQ9Im1haW4iPk12d2RlbGNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzN18xNiIgVEFSR0VUPSJtYWluIj5NdndpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjEzXzE2IiBUQVJHRVQ9Im1haW4iPk12d2luY2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYzOF8xNiIgVEFSR0VUPSJtYWluIj5NdndpbnNjaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc4XzE2IiBUQVJHRVQ9Im1haW4iPk12d2luc25zdHI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODA1XzE2IiBUQVJHRVQ9Im1haW4iPk1fUG9zdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjo4MDU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzEyXzE2IiBUQVJHRVQ9Im1haW4iPk1fUG9zdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjozMTI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTY4XzE2IiBUQVJHRVQ9Im1haW4iPk1fU2NhbGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6NTY4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyMF8xNiIgVEFSR0VUPSJtYWluIj5NX1NjYWxlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjQyMDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDdfMTYiIFRBUkdFVD0ibWFpbiI+TV9VbnBvc3QgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6ODA3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMxNF8xNiIgVEFSR0VUPSJtYWluIj5NX1VucG9zdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjozMTQ8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvTi5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvTi5odG0KaW5kZXggZGY4ZGY2Ny4uNGY4YzlkZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL04uaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9OLmh0bQpAQCAtMSwzNSArMSwzOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+TjwvVElUTEU+PC9IRUFEPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5OPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEJPRFk+CiA8SDI+RnVuY3Rpb25zIC0gTjwvSDI+CiA8QSBIUkVGPSIuLi9mdW5jcy5odG0iIFRBUkdFVD0iX3NlbGYiPltpbmRleF08L0E+CiA8VUwgQ09NUEFDVCBUWVBFPURJU0M+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjY1XzE0IiBUQVJHRVQ9Im1haW4iPk5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjY1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2OF8xNCIgVEFSR0VUPSJtYWluIj5OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI2ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzMwXzE2IiBUQVJHRVQ9Im1haW4iPk5hcG1zPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MDZfMTQiIFRBUkdFVD0ibWFpbiI+TmFwX01pbGxpX1NlY29uZHM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE2XzE2IiBUQVJHRVQ9Im1haW4iPk5ld2ZpZWxkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgwNF8xNiIgVEFSR0VUPSJtYWluIj5OZXdGb3JtPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk4XzE2IiBUQVJHRVQ9Im1haW4iPk5ld2l0ZW08L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTM5XzE2IiBUQVJHRVQ9Im1haW4iPk5ld21lbnU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQyN18xNiIgVEFSR0VUPSJtYWluIj5OZXdwYWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjYzXzE0IiBUQVJHRVQ9Im1haW4iPk5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjYzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2Nl8xNCIgVEFSR0VUPSJtYWluIj5OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI2NjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzQ3XzE2IiBUQVJHRVQ9Im1haW4iPk5hcG1zPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzZfMTQiIFRBUkdFVD0ibWFpbiI+TmFwX01pbGxpX1NlY29uZHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTlfMTYiIFRBUkdFVD0ibWFpbiI+TmV3ZmllbGQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzA3XzE2IiBUQVJHRVQ9Im1haW4iPk5ld0Zvcm08L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODBfMTYiIFRBUkdFVD0ibWFpbiI+TmV3aXRlbTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MjRfMTYiIFRBUkdFVD0ibWFpbiI+TmV3bWVudTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDM0XzE2IiBUQVJHRVQ9Im1haW4iPk5ld3BhZDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNTFfMTYiIFRBUkdFVD0ibWFpbiI+TmV3cGFuZWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2IiBUQVJHRVQ9Im1haW4iPk5ld3dpbjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjJfMTMiIFRBUkdFVD0ibWFpbiI+TmV3X0ZpZWxkdHlwZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzVfMTYiIFRBUkdFVD0ibWFpbiI+TmV3d2luPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyM18xMyIgVEFSR0VUPSJtYWluIj5OZXdfRmllbGR0eXBlPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMTQiIFRBUkdFVD0ibWFpbiI+TmV3X0xpbmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo4NjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg3XzE0IiBUQVJHRVQ9Im1haW4iPk5ld19MaW5lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6ODc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI2N18xMyIgVEFSR0VUPSJtYWluIj5OZXdfUGFkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzdfMTMiIFRBUkdFVD0ibWFpbiI+TmV3X1BhZDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg5XzE0IiBUQVJHRVQ9Im1haW4iPk5ld19QYWdlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6ODk8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85MF8xNCIgVEFSR0VUPSJtYWluIj5OZXdfUGFnZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjkwPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE5M18xMyIgVEFSR0VUPSJtYWluIj5OZXh0X1JvdXRlcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NDdfMTYiIFRBUkdFVD0ibWFpbiI+Tkw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzczXzE2IiBUQVJHRVQ9Im1haW4iPk5vQ2JyZWFrPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkwMl8xNiIgVEFSR0VUPSJtYWluIj5Ob2RlbGF5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgxMV8xNiIgVEFSR0VUPSJtYWluIj5Ob0VjaG88L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTQ5XzE2IiBUQVJHRVQ9Im1haW4iPk5vTkw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzkyXzE2IiBUQVJHRVQ9Im1haW4iPk5vUmF3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzNV8xNiIgVEFSR0VUPSJtYWluIj5Ob3RpbWVvdXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODg1XzE3IiBUQVJHRVQ9Im1haW4iPk5vX1FpZmx1c2g8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDIxXzEzIiBUQVJHRVQ9Im1haW4iPk51bWJlcl9PZl9Db2xvcnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI0XzEzIiBUQVJHRVQ9Im1haW4iPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTRfMTMiIFRBUkdFVD0ibWFpbiI+TmV4dF9Sb3V0ZXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTQ5XzE2IiBUQVJHRVQ9Im1haW4iPk5MPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc3NF8xNiIgVEFSR0VUPSJtYWluIj5Ob0NicmVhazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MDNfMTYiIFRBUkdFVD0ibWFpbiI+Tm9kZWxheTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MTJfMTYiIFRBUkdFVD0ibWFpbiI+Tm9FY2hvPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk1MV8xNiIgVEFSR0VUPSJtYWluIj5Ob05MPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5M18xNiIgVEFSR0VUPSJtYWluIj5Ob1JhdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MzZfMTYiIFRBUkdFVD0ibWFpbiI+Tm90aW1lb3V0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4Nl8xNyIgVEFSR0VUPSJtYWluIj5Ob19RaWZsdXNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1OV8xMyIgVEFSR0VUPSJtYWluIj5OdW1iZXJfT2ZfQ29sb3JzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2Ml8xMyIgVEFSR0VUPSJtYWluIj5OdW1iZXJfT2ZfQ29sb3JfUGFpcnM8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvTy5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvTy5odG0KaW5kZXggZTYyNDI0My4uYzg2MDY3NCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL08uaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9PLmh0bQpAQCAtMSwxMiArMSwxNiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+TzwvVElUTEU+PC9IRUFEPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5PPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEJPRFk+CiA8SDI+RnVuY3Rpb25zIC0gTzwvSDI+CiA8QSBIUkVGPSIuLi9mdW5jcy5odG0iIFRBUkdFVD0iX3NlbGYiPltpbmRleF08L0E+CiA8VUwgQ09NUEFDVCBUWVBFPURJU0M+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTlfMTciIFRBUkdFVD0ibWFpbiI+T3V0cHV0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTRfMTQiIFRBUkdFVD0ibWFpbiI+T3ZlcmxheSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMTk0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMDhfMTYiIFRBUkdFVD0ibWFpbiI+T3ZlcmxheSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoxMzA4PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODhfMTQiIFRBUkdFVD0ibWFpbiI+T3ZlcndyaXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjExODg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI5Nl8xNiIgVEFSR0VUPSJtYWluIj5PdmVyd3JpdGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTI5NjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzY0XzE0IiBUQVJHRVQ9Im1haW4iPk92ZXJsYXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTM2NDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzE3XzE2IiBUQVJHRVQ9Im1haW4iPk92ZXJsYXkgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTMxNzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzU4XzE0IiBUQVJHRVQ9Im1haW4iPk92ZXJ3cml0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMzU4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMDVfMTYiIFRBUkdFVD0ibWFpbiI+T3ZlcndyaXRlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjEzMDU8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvUC5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvUC5odG0KaW5kZXggNmYwNTdjMy4uZDNiM2NhMCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL1AuaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9QLmh0bQpAQCAtMSw0MCArMSw0MCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+UDwvVElUTEU+PC9IRUFEPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5QPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEJPRFk+CiA8SDI+RnVuY3Rpb25zIC0gUDwvSDI+CiA8QSBIUkVGPSIuLi9mdW5jcy5odG0iIFRBUkdFVD0iX3NlbGYiPltpbmRleF08L0E+CiA8VUwgQ09NUEFDVCBUWVBFPURJU0M+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDcyXzE0IiBUQVJHRVQ9Im1haW4iPlBhZF9DaGFyYWN0ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDcyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5MF8xNCIgVEFSR0VUPSJtYWluIj5QYWRfQ2hhcmFjdGVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjQ5MDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDBfMTMiIFRBUkdFVD0ibWFpbiI+UGFnZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NzNfMTQiIFRBUkdFVD0ibWFpbiI+UGFkX0NoYXJhY3RlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo0NzM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDg4XzE0IiBUQVJHRVQ9Im1haW4iPlBhZF9DaGFyYWN0ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDg4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc0MV8xMyIgVEFSR0VUPSJtYWluIj5QYWdlPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMTMiIFRBUkdFVD0ibWFpbiI+UGFnZV9MZW5ndGggLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo4MDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgxXzEzIiBUQVJHRVQ9Im1haW4iPlBhZ2VfTGVuZ3RoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6ODE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2N18xNiIgVEFSR0VUPSJtYWluIj5QYWlyY29udGVudDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzE5XzE0IiBUQVJHRVQ9Im1haW4iPlBhaXJfQ29udGVudDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTgyXzE2IiBUQVJHRVQ9Im1haW4iPlBhaXJjb250ZW50PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODlfMTQiIFRBUkdFVD0ibWFpbiI+UGFpcl9Db250ZW50PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xNDRfMTYiIFRBUkdFVD0ibWFpbiI+UGFuZWxfSGlkZGVuPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjVfMTYiIFRBUkdFVD0ibWFpbiI+UGFuZWxfVXNlcnB0cjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTA1XzE2IiBUQVJHRVQ9Im1haW4iPlBhbmVsX1dpbjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjdfMTQiIFRBUkdFVD0ibWFpbiI+UGF0dGVybjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTMxXzE2IiBUQVJHRVQ9Im1haW4iPlBlY2hvY2hhcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzUyXzEzIiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTM1MjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzU4XzEzIiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTM1ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0IiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTQxNDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDIzXzE0IiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTQyMzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDM4XzE0IiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTQzODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ3XzE0IiBUQVJHRVQ9Im1haW4iPlBlZWsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTQ0NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2IiBUQVJHRVQ9Im1haW4iPlBub3V0cmVmcmVzaDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82ODNfMTQiIFRBUkdFVD0ibWFpbiI+UG9zaXRpb25fQ3Vyc29yIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjY4MzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zOTRfMTQiIFRBUkdFVD0ibWFpbiI+UG9zaXRpb25fQ3Vyc29yIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM5NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzJfMTQiIFRBUkdFVD0ibWFpbiI+UG9zdCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo2NzI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIyXzE0IiBUQVJHRVQ9Im1haW4iPlBvc3QgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MzIyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0MV8xNiIgVEFSR0VUPSJtYWluIj5Qb3NfRm9ybV9DdXJzb3I8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDk5XzE2IiBUQVJHRVQ9Im1haW4iPlBvc19NZW51X0N1cnNvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDc2XzE2IiBUQVJHRVQ9Im1haW4iPlByZWZyZXNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwMV8xMyIgVEFSR0VUPSJtYWluIj5QcmV2X1JvdXRlcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczoxMDg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDlfMTQiIFRBUkdFVD0ibWFpbiI+UHV0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6MTA5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjExNTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNl8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczoxMTY8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI1XzE0IiBUQVJHRVQ9Im1haW4iPlBhdHRlcm48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU0MF8xNiIgVEFSR0VUPSJtYWluIj5QZWNob2NoYXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyMl8xMyIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1MjI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyOF8xMyIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1Mjg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4NF8xNCIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1ODQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5M18xNCIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE1OTM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYwOF8xNCIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE2MDg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxN18xNCIgVEFSR0VUPSJtYWluIj5QZWVrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE2MTc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxNF8xNiIgVEFSR0VUPSJtYWluIj5Qbm91dHJlZnJlc2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjg0XzE0IiBUQVJHRVQ9Im1haW4iPlBvc2l0aW9uX0N1cnNvciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo2ODQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzkyXzE0IiBUQVJHRVQ9Im1haW4iPlBvc2l0aW9uX0N1cnNvciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozOTI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjczXzE0IiBUQVJHRVQ9Im1haW4iPlBvc3QgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NjczPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyMF8xNCIgVEFSR0VUPSJtYWluIj5Qb3N0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjMyMDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MjZfMTYiIFRBUkdFVD0ibWFpbiI+UG9zX0Zvcm1fQ3Vyc29yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQzM18xNiIgVEFSR0VUPSJtYWluIj5Qb3NfTWVudV9DdXJzb3I8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4M18xNiIgVEFSR0VUPSJtYWluIj5QcmVmcmVzaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDJfMTMiIFRBUkdFVD0ibWFpbiI+UHJldl9Sb3V0ZXI8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzU0XzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZHM6NTQ8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzYxXzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZHM6NjE8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUwXzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pby5hZHM6NTA8L0E+CkBAIC00OSw2ICs0OSwxMCBAQAogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81NV8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRzOjU1PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80OV8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzOjQ5PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81NV8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzOjU1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjEwODwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOV8xNCIgVEFSR0VUPSJtYWluIj5QdXQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczoxMDk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTQiIFRBUkdFVD0ibWFpbiI+UHV0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6MTE1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE2XzE0IiBUQVJHRVQ9Im1haW4iPlB1dCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjExNjwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDNfMTYiIFRBUkdFVD0ibWFpbiI+cHV0cDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNTNfMTYiIFRBUkdFVD0ibWFpbiI+cHV0d2luPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ4XzE0IiBUQVJHRVQ9Im1haW4iPlB1dF9CdWY8L0E+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvZnVuY3MvUS5odG0gYi9kb2MvaHRtbC9hZGEvZnVuY3MvUS5odG0KaW5kZXggZDQ4NzQ2OC4uNzgxMGI5NSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL2Z1bmNzL1EuaHRtCisrKyBiL2RvYy9odG1sL2FkYS9mdW5jcy9RLmh0bQpAQCAtMSw4ICsxLDEyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5RPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPlE8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBRPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84ODNfMTciIFRBUkdFVD0ibWFpbiI+UWlmbHVzaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84ODRfMTciIFRBUkdFVD0ibWFpbiI+UWlmbHVzaDwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9SLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9SLmh0bQppbmRleCBjZDEwYzZmLi41MWZhNDE5IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvUi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1IuaHRtCkBAIC0xLDM5ICsxLDQzIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5SPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPlI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBSPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83OTBfMTYiIFRBUkdFVD0ibWFpbiI+UmF3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU4OV8xNCIgVEFSR0VUPSJtYWluIj5SZWRlZmluZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1ODk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjEzXzE0IiBUQVJHRVQ9Im1haW4iPlJlZGVmaW5lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjYxMzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDU5XzE0IiBUQVJHRVQ9Im1haW4iPlJlZHJhdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMDU5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjNfMTQiIFRBUkdFVD0ibWFpbiI+UmVkcmF3IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEwNjM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA5MF8xNiIgVEFSR0VUPSJtYWluIj5SZWRyYXd3aW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA0NV8xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEwNDU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4M18xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEyODM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUxMl8xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTE3XzE0IiBUQVJHRVQ9Im1haW4iPlJlZnJlc2hfU29mdF9MYWJlbF9LZXlzX1dpdGhvdXRfVXBkYXRlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNTJfMTQiIFRBUkdFVD0ibWFpbiI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMDUyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTVfMTQiIFRBUkdFVD0ibWFpbiI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMjk1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwMV8xNCIgVEFSR0VUPSJtYWluIj5SZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzExMF8xNCIgVEFSR0VUPSJtYWluIj5SZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83OTFfMTYiIFRBUkdFVD0ibWFpbiI+UmF3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MF8xNCIgVEFSR0VUPSJtYWluIj5SZWRlZmluZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1OTA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjExXzE0IiBUQVJHRVQ9Im1haW4iPlJlZGVmaW5lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjYxMTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI5XzE0IiBUQVJHRVQ9Im1haW4iPlJlZHJhdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMjI5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzNfMTQiIFRBUkdFVD0ibWFpbiI+UmVkcmF3IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEyMzM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA5M18xNiIgVEFSR0VUPSJtYWluIj5SZWRyYXd3aW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxNV8xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjEyMTU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1M18xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE0NTM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY4Ml8xNCIgVEFSR0VUPSJtYWluIj5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjg3XzE0IiBUQVJHRVQ9Im1haW4iPlJlZnJlc2hfU29mdF9MYWJlbF9LZXlzX1dpdGhvdXRfVXBkYXRlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjJfMTQiIFRBUkdFVD0ibWFpbiI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMjIyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjVfMTQiIFRBUkdFVD0ibWFpbiI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxNDY1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzkzXzE0IiBUQVJHRVQ9Im1haW4iPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTAyXzE0IiBUQVJHRVQ9Im1haW4iPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnRzPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzc3XzE0IiBUQVJHRVQ9Im1haW4iPlJlbGVhc2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8xNCIgVEFSR0VUPSJtYWluIj5SZXBsYWNlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTBfMTQiIFRBUkdFVD0ibWFpbiI+UmVwbGFjZTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTE5XzE2IiBUQVJHRVQ9Im1haW4iPlJlcGxhY2VfUGFuPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3Nl8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6Mjc2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3OV8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6Mjc5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNl8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MTA2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwOV8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MTA5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwXzE2IiBUQVJHRVQ9Im1haW4iPlJlcXVlc3RfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo4MDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84OF8xNiIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6ODg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI5NV8xNiIgVEFSR0VUPSJtYWluIj5SZXNldHR5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjVfMTQiIFRBUkdFVD0ibWFpbiI+UmVzZXRfQ3Vyc2VzX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI2N18xNiIgVEFSR0VUPSJtYWluIj5SZXNldF9Qcm9nX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI2OV8xNiIgVEFSR0VUPSJtYWluIj5SZXNldF9TaGVsbF9Nb2RlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NzZfMTQiIFRBUkdFVD0ibWFpbiI+UmVzZXRfVGVybWluYWxfU3RhdGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxMV8xNCIgVEFSR0VUPSJtYWluIj5SZXNpemU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUzOF8xNCIgVEFSR0VUPSJtYWluIj5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzA2XzE2IiBUQVJHRVQ9Im1haW4iPlJpcG9mZmxpbmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4OV8xNCIgVEFSR0VUPSJtYWluIj5SaXBfT2ZmX0xpbmVzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3N18xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6Mjc3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4MF8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6MjgwPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwMV8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MTAxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNF8xNCIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MTA0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyXzE2IiBUQVJHRVQ9Im1haW4iPlJlcXVlc3RfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo2MjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MF8xNiIgVEFSR0VUPSJtYWluIj5SZXF1ZXN0X05hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NzA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMxMl8xNiIgVEFSR0VUPSJtYWluIj5SZXNldHR5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MzVfMTQiIFRBUkdFVD0ibWFpbiI+UmVzZXRfQ3Vyc2VzX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI4NF8xNiIgVEFSR0VUPSJtYWluIj5SZXNldF9Qcm9nX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI4Nl8xNiIgVEFSR0VUPSJtYWluIj5SZXNldF9TaGVsbF9Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NDZfMTQiIFRBUkdFVD0ibWFpbiI+UmVzZXRfVGVybWluYWxfU3RhdGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4M18xNCIgVEFSR0VUPSJtYWluIj5SZXNpemU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcwOF8xNCIgVEFSR0VUPSJtYWluIj5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzIzXzE2IiBUQVJHRVQ9Im1haW4iPlJpcG9mZmxpbmU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk1OV8xNCIgVEFSR0VUPSJtYWluIj5SaXBfT2ZmX0xpbmVzPC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL1MuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1MuaHRtCmluZGV4IDliMDhlNGYuLmQ1ZjU3OWQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9TLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvUy5odG0KQEAgLTEsNTQgKzEsNTggQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPlM8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+UzwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIFM8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyODVfMTYiIFRBUkdFVD0ibWFpbiI+U2F2ZXR0eTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU5XzE0IiBUQVJHRVQ9Im1haW4iPlNhdmVfQ3Vyc2VzX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc3MV8xNCIgVEFSR0VUPSJtYWluIj5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyN18xNCIgVEFSR0VUPSJtYWluIj5TY2FsZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1Mjc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgzXzE0IiBUQVJHRVQ9Im1haW4iPlNjYWxlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM4MzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODY3XzE0IiBUQVJHRVQ9Im1haW4iPlNjcmVlbl9EdW1wX1RvX0ZpbGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3NV8xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fSW5pdF9Gcm9tX0ZpbGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3MV8xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fUmVzdG9yZV9Gcm9tX0ZpbGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3OV8xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fU2V0X0ZpbGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMyMl8xNCIgVEFSR0VUPSJtYWluIj5TY3JvbGw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyMl8xMyIgVEFSR0VUPSJtYWluIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDI0XzE2IiBUQVJHRVQ9Im1haW4iPlNjcm9sbG9rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMDJfMTYiIFRBUkdFVD0ibWFpbiI+U2F2ZXR0eTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI5XzE0IiBUQVJHRVQ9Im1haW4iPlNhdmVfQ3Vyc2VzX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk0MV8xNCIgVEFSR0VUPSJtYWluIj5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyOF8xNCIgVEFSR0VUPSJtYWluIj5TY2FsZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1Mjg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgxXzE0IiBUQVJHRVQ9Im1haW4iPlNjYWxlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM4MTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDM5XzE0IiBUQVJHRVQ9Im1haW4iPlNjcmVlbl9EdW1wX1RvX0ZpbGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0N18xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fSW5pdF9Gcm9tX0ZpbGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0M18xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fUmVzdG9yZV9Gcm9tX0ZpbGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA1MV8xNCIgVEFSR0VUPSJtYWluIj5TY3JlZW5fU2V0X0ZpbGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5Ml8xNCIgVEFSR0VUPSJtYWluIj5TY3JvbGw8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE5Ml8xMyIgVEFSR0VUPSJtYWluIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDI2XzE2IiBUQVJHRVQ9Im1haW4iPlNjcm9sbG9rPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0OTBfMTYiIFRBUkdFVD0ibWFpbiI+c2NyX2R1bXA8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNl8xNiIgVEFSR0VUPSJtYWluIj5zY3JfaW5pdDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTAzXzE2IiBUQVJHRVQ9Im1haW4iPnNjcl9yZXN0b3JlPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MjlfMTYiIFRBUkdFVD0ibWFpbiI+c2NyX3NldDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTA4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9CYWNrZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjExMDg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQ2XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9CYWNrZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQ0NjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0JhY2tncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDQzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1NF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQnVmZmVyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4Nl8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ2JyZWFrX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODE3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9DaGFyYWN0ZXJfQXR0cmlidXRlczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDdfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0JhY2tncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDQ3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ0MV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQmFja2dyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0NDE8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQmFja2dyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMjc4PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1NV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQnVmZmVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNTZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0NicmVha19Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Ml8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ29sIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6OTI8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85M18xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ29sIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM6OTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODM4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Db2xvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0N1cnJlbnQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NzIzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ3VycmVudCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyODg8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTAyNl8xNiIgVEFSR0VUPSJtYWluIj5TZXRfQ3VycmVudF9GbGQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjg3XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9DdXJyX0l0ZW08L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwMV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ3Vyc29yX1Zpc2liaWxpdHk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODk4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9FY2hvX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTY0XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Fc2NhcGVfVGltZXJfTW9kZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OTVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkczwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjdfMTMiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkdHlwZV9Bcmc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM0XzEzIiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZHR5cGVfQ2hvaWNlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0OF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfQmFjazwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDRfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX0ZvcmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjY1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9Jbml0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0MV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfSW5pdF9Ib29rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE5Nl8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfSnVzdDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMTBfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX01heDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMzBfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX09wdHM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDkwXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9QYWQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjgxXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9UZXJtPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVGVybV9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDhfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0NvbG9yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyNF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfQ3VycmVudCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo3MjQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg2XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9DdXJyZW50IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjI4NjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MDVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0N1cnJlbnRfRmxkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI1MV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfQ3Vycl9JdGVtPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzFfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0N1cnNvcl9WaXNpYmlsaXR5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjhfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0VjaG9fTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTM0XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Fc2NhcGVfVGltZXJfTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OTZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjhfMTMiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkdHlwZV9Bcmc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM1XzEzIiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZHR5cGVfQ2hvaWNlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM5NV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfQmFjazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTZfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX0ZvcmU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg3XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9Jbml0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0Ml8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfSW5pdF9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE3NV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfSnVzdDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNzZfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX01heDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX09wdHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDMyXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9QYWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjAwXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9UZXJtPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVGVybV9Ib29rPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ5XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9GaWVsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRzOjQ5PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZHM6NTA8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0ZpZWxkX1R5cGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZHM6ODQ8L0E+CkBAIC01OCwxMzQgKzYyLDEzNCBAQAogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81MV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZHM6NTE8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83MF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzOjcwPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81N18xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmllbGRfVXNlcnB0cjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzFfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9CdWZmZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjc4XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfU3RhdHVzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1MV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmxkX1R5cGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZGI6MTUxPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzUyXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkYjo1MjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNTJfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYjo1MjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85N18xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmxkX1R5cGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGI6OTc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRiOjUyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl81Ml8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmxkX1R5cGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRiOjUyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZGI6NTU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjA1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfQnVmZmVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI0NV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmxkX1N0YXR1czwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80OV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRmxkX1R5cGUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZGI6NDk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzQ5XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZGI6NDk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTRfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRiOjk0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzQ5XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkYjo0OTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNDlfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkYjo0OTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRiOjUyPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZsZF9UeXBlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZGI6NTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTI4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9GbHVzaF9Pbl9JbnRlcnJ1cHRfTW9kZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MjZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0ZvcmVncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDI2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyM18xNCIgVEFSR0VUPSJtYWluIj5TZXRfRm9yZWdyb3VuZCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MjM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtYXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjk3XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX0luaXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTUzXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX0luaXRfSG9vazwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NDVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0Zvcm1fT3B0czwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MTNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0Zvcm1fU3ViPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxM18xNiIgVEFSR0VUPSJtYWluIj5TZXRfRm9ybV9UZXJtPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1OV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTM0XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GbGRfVHlwZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLmFkYjoxMzQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JlZ3JvdW5kIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQyNzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjFfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0ZvcmVncm91bmQgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDIxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUzNV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRm9ybWF0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxM18xNiIgVEFSR0VUPSJtYWluIj5TZXRfRm9ybV9Jbml0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1NF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfRm9ybV9Jbml0X0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzQ1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX09wdHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTQxXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX1N1YjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MjZfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0Zvcm1fVGVybTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NjBfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0Zvcm1fVGVybV9Ib29rPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU4XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX1VzZXJwdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX1dpbjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MzNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZybV9GaWVsZHM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA1Nl8xNiIgVEFSR0VUPSJtYWluIj5TZXRfRnJtX1BhZ2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzU0XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9GdHlwPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2M18xNCIgVEFSR0VUPSJtYWluIj5TZXRfR3JleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MThfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0l0ZW1zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjYxODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84OTNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0l0ZW1zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjg5MzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MDVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0l0ZW1fSW5pdDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0l0ZW1fSW5pdF9Ib29rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5NF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9PcHRzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgxOV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9UZXJtPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3MV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9UZXJtX0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTE2XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gb3JtX1dpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0ZybV9GaWVsZHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTMyXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Gcm1fUGFnZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNDlfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X0Z0eXA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDYxXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9HcmV5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxNl8xNCIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbXMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NjE2PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc4Ml8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbXMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NzgyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcwNl8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9Jbml0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2M18xNCIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9Jbml0X0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTY5XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9JdGVtX09wdHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE3XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9JdGVtX1Rlcm08L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTY5XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9JdGVtX1Rlcm1fSG9vazwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9Vc2VycHRyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE1NV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfSXRlbV9WYWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzM5XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9KdXN0aWZpY2F0aW9uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxMF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfS2V5UGFkX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTMzXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9JdGVtX1ZhbDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDBfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0p1c3RpZmljYXRpb248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfS2V5UGFkX01vZGU8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTGluZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzOjk1PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X0xpbmUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo5NjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X01hcmsgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDAzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUxNF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjo1MTQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzg3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9NYXhpbXVtX1NpemU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTkxXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NZW51X0JhY2s8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzY4XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NZW51X0ZtdDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NTJfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfRm9yZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjlfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfR3JleTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MzNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfSW5pdDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzdfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfSW5pdF9Ib29rPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3NF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9PcHRzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY2N18xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9QYWQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU3XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NZW51X1N1YjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NDdfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfVGVybTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfVGVybV9Ib29rPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwMV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTWFyayAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0MDE8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQ1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NYXJrIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjQ0NTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODhfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X01heGltdW1fU2l6ZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfQmFjazwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NzVfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfRm10PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3OV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9Gb3JlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1MF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9HcmV5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcyOF8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9Jbml0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3NV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9Jbml0X0hvb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzI4XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NZW51X09wdHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTg1XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9NZW51X1BhZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTdfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfU3ViPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzczOV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9UZXJtPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4MV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9UZXJtX0hvb2s8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTBfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfVXNlcnB0cjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X01lbnVfV2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwNF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTWV0YV9Nb2RlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfTmV3X1BhZ2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTc1XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9OTF9Nb2RlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0M18xNCIgVEFSR0VUPSJtYWluIj5TZXRfTm9EZWxheV9Nb2RlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM5N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczozOTc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ0XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjY0NDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMzZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjM2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzM18xNCIgVEFSR0VUPSJtYWluIj5TZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozMzM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDY2XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9QYWRfQ2hhcmFjdGVyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQ2NjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODRfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1BhZF9DaGFyYWN0ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6NDg0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzczNF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfUGFnZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo3MzQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwNV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfUGFnZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjoxMTA1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3Nl8xNiIgVEFSR0VUPSJtYWluIj5TZXRfTWVudV9XaW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA3NF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTWV0YV9Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTmV3X1BhZ2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfTkxfTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTEzXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Ob0RlbGF5X01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzk4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjM5ODwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NDVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NjQ1PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIzNF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyMzQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzMxXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjMzMTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjdfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1BhZF9DaGFyYWN0ZXIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NDY3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4Ml8xNCIgVEFSR0VUPSJtYWluIj5TZXRfUGFkX0NoYXJhY3RlciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo0ODI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzM1XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9QYWdlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjczNTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzhfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X1BhZ2UgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGI6OTc4PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTRfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X1BhbmVsX1VzZXJwdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTIwXzEzIiBUQVJHRVQ9Im1haW4iPlNldF9QYXR0ZXJuIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjUyMDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MzZfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X1BhdHRlcm4gLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NzM2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzNV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfUXVldWVfSW50ZXJydXB0X01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkyXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9SYXdfTW9kZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TY3JvbGxfUmVnaW9uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1NvZnRfTGFiZWxfS2V5PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NTZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3Ml8xNCIgVEFSR0VUPSJtYWluIj5TZXRfU29mdF9MYWJlbF9LZXlfQ29sb3I8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTAwXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TcGFjaW5nIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjUwMDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTNfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X1NwYWNpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NjkzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3Nl8xNCIgVEFSR0VUPSJtYWluIj5TZXRfU3RhdHVzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxNl8xNCIgVEFSR0VUPSJtYWluIj5TZXRfU3ViX1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1MTY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcyXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TdWJfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM3MjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1N5bmNoX01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTUyXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9UaW1lb3V0X01vZGU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzE0XzE2IiBUQVJHRVQ9Im1haW4iPlNldF9Ub3Byb3c8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjk5XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Ub3BfUm93PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxOF8xMyIgVEFSR0VUPSJtYWluIj5TZXRfUGF0dGVybiAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczo1MTg8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjQzXzE2IiBUQVJHRVQ9Im1haW4iPlNldF9QYXR0ZXJuIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiOjY0MzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTA1XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9RdWV1ZV9JbnRlcnJ1cHRfTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDYyXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9SYXdfTW9kZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTk3XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TY3JvbGxfUmVnaW9uPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1NvZnRfTGFiZWxfS2V5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjZfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0Ml8xNCIgVEFSR0VUPSJtYWluIj5TZXRfU29mdF9MYWJlbF9LZXlfQ29sb3I8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDk4XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TcGFjaW5nIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjQ5ODwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDdfMTYiIFRBUkdFVD0ibWFpbiI+U2V0X1NwYWNpbmcgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI6NjA3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfU3RhdHVzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxN18xNCIgVEFSR0VUPSJtYWluIj5TZXRfU3ViX1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1MTc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcwXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9TdWJfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM3MDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1N5bmNoX01vZGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyMl8xNCIgVEFSR0VUPSJtYWluIj5TZXRfVGltZW91dF9Nb2RlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3NV8xNiIgVEFSR0VUPSJtYWluIj5TZXRfVG9wcm93PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5N18xNCIgVEFSR0VUPSJtYWluIj5TZXRfVG9wX1JvdzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1VzZXJfRGF0YSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZHM6NTM8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1VzZXJfRGF0YSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkczo1MzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfVXNlcl9EYXRhIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRzOjU4PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9Vc2VyX0RhdGEgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZHM6NTM8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCIgVEFSR0VUPSJtYWluIj5TZXRfVXNlcl9EYXRhIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHM6NTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEyXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9WYWx1ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDVfMTQiIFRBUkdFVD0ibWFpbiI+U2V0X1dpbmRvdyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo1MDU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzYxXzE0IiBUQVJHRVQ9Im1haW4iPlNldF9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MzYxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxMF8xNCIgVEFSR0VUPSJtYWluIj5TZXRfVmFsdWU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA2XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NTA2PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1OV8xNCIgVEFSR0VUPSJtYWluIj5TZXRfV2luZG93IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjM1OTwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzU5XzE0IiBUQVJHRVQ9Im1haW4iPlNldF9XaW5kb3cgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczo1OTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODdfMTQiIFRBUkdFVD0ibWFpbiI+U2hvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODZfMTQiIFRBUkdFVD0ibWFpbiI+U2hvdzwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfODVfMTYiIFRBUkdFVD0ibWFpbiI+U2hvd3BhbmVsPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NTVfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0F0dHIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTk1NTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTY1XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19BdHRyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjE5NjU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxOV8xNiIgVEFSR0VUPSJtYWluIj5TbGtfQXR0cm9mZjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTE3XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19BdHRyb248L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk0MV8xNiIgVEFSR0VUPSJtYWluIj5TbGtfQXR0cnNldDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODg1XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19DbGVhcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTc1XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19Db2xvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODE5XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19Jbml0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjlfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0xhYmVsIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjE4Njk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg3N18xNiIgVEFSR0VUPSJtYWluIj5TbGtfTGFiZWwgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTg3NzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODU4XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19Ob3V0cmVmcmVzaDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQ4XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19SZWZyZXNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4OTVfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX1Jlc3RvcmU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgzMV8xNiIgVEFSR0VUPSJtYWluIj5TbGtfU2V0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MDVfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX1RvdWNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwOF8xNCIgVEFSR0VUPSJtYWluIj5TcGFjaW5nPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyIgVEFSR0VUPSJtYWluIj5TdGFuZGFyZF9XaW5kb3c8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAwXzE0IiBUQVJHRVQ9Im1haW4iPlN0YW5kb3V0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MDdfMTQiIFRBUkdFVD0ibWFpbiI+U3RhcnRfQ29sb3I8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIzXzEzIiBUQVJHRVQ9Im1haW4iPlN0YXJ0X01vdXNlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTYiIFRBUkdFVD0ibWFpbiI+U3VicGFkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MF8xNiIgVEFSR0VUPSJtYWluIj5TdWJ3aW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3M18xMyIgVEFSR0VUPSJtYWluIj5TdWJfUGFkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5NF8xMyIgVEFSR0VUPSJtYWluIj5TdWJfV2luZG93PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzJfMTMiIFRBUkdFVD0ibWFpbiI+U3VwcG9ydGVkX0F0dHJpYnV0ZXM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA2XzE0IiBUQVJHRVQ9Im1haW4iPlN3aXRjaF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwM18xNCIgVEFSR0VUPSJtYWluIj5Td2l0Y2hfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkczo0MDM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUwXzE0IiBUQVJHRVQ9Im1haW4iPlN3aXRjaF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjY1MDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDJfMTQiIFRBUkdFVD0ibWFpbiI+U3dpdGNoX09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjQyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzOV8xNCIgVEFSR0VUPSJtYWluIj5Td2l0Y2hfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczozMzk8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0OF8xNCIgVEFSR0VUPSJtYWluIj5Td2l0Y2hfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MzhfMTQiIFRBUkdFVD0ibWFpbiI+U3luY2hyb25pemVfRG93bndhcmRzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzM18xNCIgVEFSR0VUPSJtYWluIj5TeW5jaHJvbml6ZV9VcHdhcmRzPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM2M18xNiIgVEFSR0VUPSJtYWluIj5TeW5jb2s8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk2N18xNiIgVEFSR0VUPSJtYWluIj5TbGtfQXR0ciAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoxOTY3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NzdfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0F0dHIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTk3NzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTMxXzE2IiBUQVJHRVQ9Im1haW4iPlNsa19BdHRyb2ZmPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjlfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0F0dHJvbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTUzXzE2IiBUQVJHRVQ9Im1haW4iPlNsa19BdHRyc2V0PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4OTdfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0NsZWFyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODdfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0NvbG9yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MzBfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX0luaXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg4MV8xNiIgVEFSR0VUPSJtYWluIj5TbGtfTGFiZWwgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MTg4MTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODg5XzE2IiBUQVJHRVQ9Im1haW4iPlNsa19MYWJlbCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoxODg5PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NzBfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX05vdXRyZWZyZXNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjBfMTYiIFRBUkdFVD0ibWFpbiI+U2xrX1JlZnJlc2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkwN18xNiIgVEFSR0VUPSJtYWluIj5TbGtfUmVzdG9yZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQyXzE2IiBUQVJHRVQ9Im1haW4iPlNsa19TZXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxN18xNiIgVEFSR0VUPSJtYWluIj5TbGtfVG91Y2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA2XzE0IiBUQVJHRVQ9Im1haW4iPlNwYWNpbmc8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIiBUQVJHRVQ9Im1haW4iPlN0YW5kYXJkX1dpbmRvdzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzBfMTQiIFRBUkdFVD0ibWFpbiI+U3RhbmRvdXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3N18xNCIgVEFSR0VUPSJtYWluIj5TdGFydF9Db2xvcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTVfMTMiIFRBUkdFVD0ibWFpbiI+U3RhcnRfTW91c2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1M18xNiIgVEFSR0VUPSJtYWluIj5TdWJwYWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjcxXzE2IiBUQVJHRVQ9Im1haW4iPlN1YndpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQzXzEzIiBUQVJHRVQ9Im1haW4iPlN1Yl9QYWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY0XzEzIiBUQVJHRVQ9Im1haW4iPlN1Yl9XaW5kb3c8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0Ml8xMyIgVEFSR0VUPSJtYWluIj5TdXBwb3J0ZWRfQXR0cmlidXRlczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzZfMTQiIFRBUkdFVD0ibWFpbiI+U3dpdGNoX0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA0XzE0IiBUQVJHRVQ9Im1haW4iPlN3aXRjaF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzOjQwNDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTFfMTQiIFRBUkdFVD0ibWFpbiI+U3dpdGNoX09wdGlvbnMgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM6NjUxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0MF8xNCIgVEFSR0VUPSJtYWluIj5Td2l0Y2hfT3B0aW9ucyAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkczoyNDA8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM3XzE0IiBUQVJHRVQ9Im1haW4iPlN3aXRjaF9PcHRpb25zIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjMzNzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzE4XzE0IiBUQVJHRVQ9Im1haW4iPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgwOF8xNCIgVEFSR0VUPSJtYWluIj5TeW5jaHJvbml6ZV9Eb3dud2FyZHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAzXzE0IiBUQVJHRVQ9Im1haW4iPlN5bmNocm9uaXplX1Vwd2FyZHM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzY0XzE2IiBUQVJHRVQ9Im1haW4iPlN5bmNvazwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9ULmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9ULmh0bQppbmRleCBiYjhkZWExLi4xMmNmOTljIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvVC5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1QuaHRtCkBAIC0xLDE1ICsxLDIwIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5UPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPlQ8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBUPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MThfMTMiIFRBUkdFVD0ibWFpbiI+VGFiX1NpemU8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEwMF8xNiIgVEFSR0VUPSJtYWluIj5UZXJtYXR0cnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY4N18xNCIgVEFSR0VUPSJtYWluIj5UZXJtaW5hbF9OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE2ODc8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5MV8xMyIgVEFSR0VUPSJtYWluIj5UZXJtaW5hbF9OYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjE2OTE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEyNl8xNiIgVEFSR0VUPSJtYWluIj5UZXJtbmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoyMTI2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMzRfMTYiIFRBUkdFVD0ibWFpbiI+VGVybW5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MjEzNDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzczXzE2IiBUQVJHRVQ9Im1haW4iPlRBQlNJWkVfQXNfRnVuY3Rpb248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU2XzEzIiBUQVJHRVQ9Im1haW4iPlRhYl9TaXplPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMTNfMTYiIFRBUkdFVD0ibWFpbiI+VGVybWF0dHJzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTdfMTQiIFRBUkdFVD0ibWFpbiI+VGVybWluYWxfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxODU3PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NjFfMTMiIFRBUkdFVD0ibWFpbiI+VGVybWluYWxfTmFtZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxODYxPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMzlfMTYiIFRBUkdFVD0ibWFpbiI+VGVybW5hbWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MjEzOTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTQ3XzE2IiBUQVJHRVQ9Im1haW4iPlRlcm1uYW1lIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjIxNDc8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl81MV8xNiIgVEFSR0VUPSJtYWluIj50Z2V0ZW50PC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNzFfMTYiIFRBUkdFVD0ibWFpbiI+dGdldGZsYWc8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl84OV8xNiIgVEFSR0VUPSJtYWluIj50Z2V0bnVtPC9BPgpAQCAtMjEsMTYgKzI2LDE4IEBACiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfODdfMTYiIFRBUkdFVD0ibWFpbiI+dGlnZXRzdHIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZGI6ODc8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTA4XzE2IiBUQVJHRVQ9Im1haW4iPnRpZ2V0c3RyIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRiOjEwODwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjdfMTYiIFRBUkdFVD0ibWFpbiI+dGlnZXRzdHIgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZGI6MTI3PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84Ml8xNCIgVEFSR0VUPSJtYWluIj5Ub3A8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzgxXzE0IiBUQVJHRVQ9Im1haW4iPlRvcDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNzVfMTYiIFRBUkdFVD0ibWFpbiI+VG9wcGFuZWw8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzI3XzE2IiBUQVJHRVQ9Im1haW4iPlRvcHJvdzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDVfMTMiIFRBUkdFVD0ibWFpbiI+VG9wX1JvdzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTQxXzE0IiBUQVJHRVQ9Im1haW4iPlRvdWNoIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzOjExNDE8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCIgVEFSR0VUPSJtYWluIj5Ub3VjaCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMTQ1PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDNfMTQiIFRBUkdFVD0ibWFpbiI+VG91Y2hfU29mdF9MYWJlbF9LZXlzPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI4NV8xNiIgVEFSR0VUPSJtYWluIj5Ub3Byb3c8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzAzXzEzIiBUQVJHRVQ9Im1haW4iPlRvcF9Sb3c8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxMV8xNCIgVEFSR0VUPSJtYWluIj5Ub3VjaCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczoxMzExPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTVfMTQiIFRBUkdFVD0ibWFpbiI+VG91Y2ggLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTMxNTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzEzXzE0IiBUQVJHRVQ9Im1haW4iPlRvdWNoX1NvZnRfTGFiZWxfS2V5czwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDBfMTYiIFRBUkdFVD0ibWFpbiI+dHB1dHM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTAyXzE0IiBUQVJHRVQ9Im1haW4iPlRyYWNlX09uPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzEwNl8xNCIgVEFSR0VUPSJtYWluIj5UcmFjZV9QdXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bSNyZWZfNDZfMTciIFRBUkdFVD0ibWFpbiI+dHJhY2VDPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzUzXzE3IiBUQVJHRVQ9Im1haW4iPnRyYWNlZjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMTRfMTQiIFRBUkdFVD0ibWFpbiI+VHJhY2VfT248L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTE4XzE0IiBUQVJHRVQ9Im1haW4iPlRyYWNlX1B1dDwvQT4KIDxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAzXzE2IiBUQVJHRVQ9Im1haW4iPlRyYW5zZm9ybTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE0XzE0IiBUQVJHRVQ9Im1haW4iPlRyYW5zZm9ybV9Db29yZGluYXRlczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTg0XzE0IiBUQVJHRVQ9Im1haW4iPlRyYW5zZm9ybV9Db29yZGluYXRlczwvQT4KIDwvVUw+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS9mdW5jcy9VLmh0bSBiL2RvYy9odG1sL2FkYS9mdW5jcy9VLmh0bQppbmRleCAxMDBmOTBlLi45ZWRkMmJkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvZnVuY3MvVS5odG0KKysrIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1UuaHRtCkBAIC0xLDIzICsxLDI3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT5VPC9USVRMRT48L0hFQUQ+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPlU8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxIMj5GdW5jdGlvbnMgLSBVPC9IMj4KIDxBIEhSRUY9Ii4uL2Z1bmNzLmh0bSIgVEFSR0VUPSJfc2VsZiI+W2luZGV4XTwvQT4KIDxVTCBDT01QQUNUIFRZUEU9RElTQz4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDE2XzE2IiBUQVJHRVQ9Im1haW4iPlVuY3RybCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjoyMDE2PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMjRfMTYiIFRBUkdFVD0ibWFpbiI+VW5jdHJsIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjIwMjQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzYyXzE0IiBUQVJHRVQ9Im1haW4iPlVuZG9fS2V5c3Ryb2tlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUzN18xNiIgVEFSR0VUPSJtYWluIj5VbmdldGNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMjlfMTYiIFRBUkdFVD0ibWFpbiI+VW5jdHJsIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjIwMjk8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAzN18xNiIgVEFSR0VUPSJtYWluIj5VbmN0cmwgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI6MjAzNzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzJfMTQiIFRBUkdFVD0ibWFpbiI+VW5kb19LZXlzdHJva2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTQwXzE2IiBUQVJHRVQ9Im1haW4iPlVuZ2V0Y2g8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTg2XzE2IiBUQVJHRVQ9Im1haW4iPlVuZ2V0bW91c2U8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ5XzE0IiBUQVJHRVQ9Im1haW4iPlVuZ2V0X01vdXNlPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMzZfMTQiIFRBUkdFVD0ibWFpbiI+VW50b3VjaDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjIyXzE0IiBUQVJHRVQ9Im1haW4iPlVuX0NvbnRyb2wgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTYyMjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjI3XzEzIiBUQVJHRVQ9Im1haW4iPlVuX0NvbnRyb2wgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTYyNzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTJfMTQiIFRBUkdFVD0ibWFpbiI+VXBkYXRlX1BhbmVsczwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQwXzE0IiBUQVJHRVQ9Im1haW4iPlVwZGF0ZV9TY3JlZW48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMV8xNCIgVEFSR0VUPSJtYWluIj5Vc2VfRGVmYXVsdF9Db2xvcnM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg1MV8xMyIgVEFSR0VUPSJtYWluIj5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQxXzE0IiBUQVJHRVQ9Im1haW4iPlVuZ2V0X01vdXNlPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDZfMTQiIFRBUkdFVD0ibWFpbiI+VW50b3VjaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzkyXzE0IiBUQVJHRVQ9Im1haW4iPlVuX0NvbnRyb2wgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTc5MjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk3XzEzIiBUQVJHRVQ9Im1haW4iPlVuX0NvbnRyb2wgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM6MTc5NzwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTFfMTQiIFRBUkdFVD0ibWFpbiI+VXBkYXRlX1BhbmVsczwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjEwXzE0IiBUQVJHRVQ9Im1haW4iPlVwZGF0ZV9TY3JlZW48L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwM18xNCIgVEFSR0VUPSJtYWluIj5Vc2VfRGVmYXVsdF9Db2xvcnM8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAyM18xMyIgVEFSR0VUPSJtYWluIj5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ3NV8xNiIgVEFSR0VUPSJtYWluIj51c2VfZXh0ZW5kZWRfbmFtZXNDPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5NV8xNCIgVEFSR0VUPSJtYWluIj5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTg4XzE0IiBUQVJHRVQ9Im1haW4iPlVzZV9JbnNlcnRfRGVsZXRlX0xpbmU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2NV8xNCIgVEFSR0VUPSJtYWluIj5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1OF8xNCIgVEFSR0VUPSJtYWluIj5Vc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lPC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL1YuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1YuaHRtCmluZGV4IGI5MjZkN2MuLmJkMWNjMzcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9WLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvVi5odG0KQEAgLTEsMTEgKzEsMTUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPlY8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+VjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIFY8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl81M18xMyIgVEFSR0VUPSJtYWluIj5WYWx1ZSAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYS5hZHM6NTM8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjE4XzEzIiBUQVJHRVQ9Im1haW4iPlZhbHVlIC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzOjIxODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MzdfMTQiIFRBUkdFVD0ibWFpbiI+VmVydGljYWxfTGluZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMjdfMTMiIFRBUkdFVD0ibWFpbiI+VmlzaWJsZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTZfMTMiIFRBUkdFVD0ibWFpbiI+VmFsdWUgLSAgdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM6MjE2PC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwN18xNCIgVEFSR0VUPSJtYWluIj5WZXJ0aWNhbF9MaW5lPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIyNV8xMyIgVEFSR0VUPSJtYWluIj5WaXNpYmxlPC9BPgogPC9VTD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL2Z1bmNzL1cuaHRtIGIvZG9jL2h0bWwvYWRhL2Z1bmNzL1cuaHRtCmluZGV4IGQyNzI0MmEuLjkyNmVjMTkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9mdW5jcy9XLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvZnVuY3MvVy5odG0KQEAgLTEsNTMgKzEsNTcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPlc8L1RJVExFPjwvSEVBRD4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+VzwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KIDxCT0RZPgogPEgyPkZ1bmN0aW9ucyAtIFc8L0gyPgogPEEgSFJFRj0iLi4vZnVuY3MuaHRtIiBUQVJHRVQ9Il9zZWxmIj5baW5kZXhdPC9BPgogPFVMIENPTVBBQ1QgVFlQRT1ESVNDPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MV8xNiIgVEFSR0VUPSJtYWluIj5XYWRkY2g8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA3XzE2IiBUQVJHRVQ9Im1haW4iPldhZGRjaG5zdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc2XzE2IiBUQVJHRVQ9Im1haW4iPldhZGRuc3RyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1NV8xNiIgVEFSR0VUPSJtYWluIj5XYXR0cmdldCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjo2NTU8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA4XzE2IiBUQVJHRVQ9Im1haW4iPldhZGRjaG5zdHI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc3XzE2IiBUQVJHRVQ9Im1haW4iPldhZGRuc3RyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1N18xNiIgVEFSR0VUPSJtYWluIj5XYXR0cmdldCAtICB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjo2NTc8L0E+CiA8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2IiBUQVJHRVQ9Im1haW4iPldhdHRyZ2V0IC0gIHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiOjY3ODwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTRfMTYiIFRBUkdFVD0ibWFpbiI+V2F0dHJvZmY8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjExXzE2IiBUQVJHRVQ9Im1haW4iPldhdHRyb248L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM5XzE2IiBUQVJHRVQ9Im1haW4iPldhdHRyc2V0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNTlfMTciIFRBUkdFVD0ibWFpbiI+V0JhY2tncm91bmQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2IiBUQVJHRVQ9Im1haW4iPldib3JkZXI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2OV8xNiIgVEFSR0VUPSJtYWluIj5XQ2hhbmdlQmtnZDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MTlfMTYiIFRBUkdFVD0ibWFpbiI+V2NoZ2F0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMjdfMTYiIFRBUkdFVD0ibWFpbiI+V2NsZWFyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMzdfMTYiIFRBUkdFVD0ibWFpbiI+V2NsZWFyYm90PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNDdfMTYiIFRBUkdFVD0ibWFpbiI+V2NsZWFyZW9sPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjdfMTYiIFRBUkdFVD0ibWFpbiI+V2RlbGNoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NF8xNiIgVEFSR0VUPSJtYWluIj5XZGVsd2luPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwOF8xNiIgVEFSR0VUPSJtYWluIj5XZWNob2NoYXI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE3XzE2IiBUQVJHRVQ9Im1haW4iPldhdHRyb2ZmPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxNF8xNiIgVEFSR0VUPSJtYWluIj5XYXR0cm9uPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY0Ml8xNiIgVEFSR0VUPSJtYWluIj5XYXR0cnNldDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTYzXzE3IiBUQVJHRVQ9Im1haW4iPldCYWNrZ3JvdW5kPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ1MF8xNiIgVEFSR0VUPSJtYWluIj5XYm9yZGVyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNzNfMTYiIFRBUkdFVD0ibWFpbiI+V0NoYW5nZUJrZ2Q8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE4XzE2IiBUQVJHRVQ9Im1haW4iPldjaGdhdDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTMxXzE2IiBUQVJHRVQ9Im1haW4iPldjbGVhcjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTQxXzE2IiBUQVJHRVQ9Im1haW4iPldjbGVhcmJvdDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTUxXzE2IiBUQVJHRVQ9Im1haW4iPldjbGVhcmVvbDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc2XzE2IiBUQVJHRVQ9Im1haW4iPldkZWxjaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTVfMTYiIFRBUkdFVD0ibWFpbiI+V2RlbHdpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDlfMTYiIFRBUkdFVD0ibWFpbiI+V2VjaG9jaGFyPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE5N18xNiIgVEFSR0VUPSJtYWluIj5XZW5jbG9zZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTE3XzE2IiBUQVJHRVQ9Im1haW4iPldlcmFzZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTgwXzE2IiBUQVJHRVQ9Im1haW4iPldnZXRia2dkPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyM18xNiIgVEFSR0VUPSJtYWluIj5XZ2V0Y2g8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc3OV8xNiIgVEFSR0VUPSJtYWluIj5XZ2V0bnN0cjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80OTBfMTYiIFRBUkdFVD0ibWFpbiI+V2hsaW5lPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1OTNfMTYiIFRBUkdFVD0ibWFpbiI+V2luY2g8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczMV8xNiIgVEFSR0VUPSJtYWluIj5XaW5jaG5zdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY4OV8xNiIgVEFSR0VUPSJtYWluIj5XaW5uc3RyPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MTVfMTYiIFRBUkdFVD0ibWFpbiI+V2luc2NoPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMjFfMTYiIFRBUkdFVD0ibWFpbiI+V2luc2RlbGxuPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NDdfMTYiIFRBUkdFVD0ibWFpbiI+V2luc25zdHI8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzM18xNiIgVEFSR0VUPSJtYWluIj5XTGluZVRvdWNoZWQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEyMV8xNiIgVEFSR0VUPSJtYWluIj5XZXJhc2U8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE4NV8xNiIgVEFSR0VUPSJtYWluIj5XZ2V0YmtnZDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MjZfMTYiIFRBUkdFVD0ibWFpbiI+V2dldGNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTBfMTYiIFRBUkdFVD0ibWFpbiI+V2dldG5zdHI8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDkxXzE2IiBUQVJHRVQ9Im1haW4iPldobGluZTwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjAyXzE2IiBUQVJHRVQ9Im1haW4iPldpbmNoPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NDJfMTYiIFRBUkdFVD0ibWFpbiI+V2luY2huc3RyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MDBfMTYiIFRBUkdFVD0ibWFpbiI+V2lubnN0cjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI0XzE2IiBUQVJHRVQ9Im1haW4iPldpbnNjaDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzMwXzE2IiBUQVJHRVQ9Im1haW4iPldpbnNkZWxsbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjU3XzE2IiBUQVJHRVQ9Im1haW4iPldpbnNuc3RyPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNDFfMTYiIFRBUkdFVD0ibWFpbiI+V0xpbmVUb3VjaGVkPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzN18xNiIgVEFSR0VUPSJtYWluIj5XbW92ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDgwXzE2IiBUQVJHRVQ9Im1haW4iPldub3V0cmVmcmVzaDwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTFfMTQiIFRBUkdFVD0ibWFpbiI+V3JhcF9CdWlsdGluPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMDNfMTYiIFRBUkdFVD0ibWFpbiI+V3JlZHJhd2xuPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNjlfMTYiIFRBUkdFVD0ibWFpbiI+V3JlZnJlc2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA4M18xNiIgVEFSR0VUPSJtYWluIj5Xbm91dHJlZnJlc2g8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUyXzE0IiBUQVJHRVQ9Im1haW4iPldyYXBfQnVpbHRpbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTA2XzE2IiBUQVJHRVQ9Im1haW4iPldyZWRyYXdsbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDcyXzE2IiBUQVJHRVQ9Im1haW4iPldyZWZyZXNoPC9BPgogPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDNfMTYiIFRBUkdFVD0ibWFpbiI+d3Jlc2l6ZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTU1XzE2IiBUQVJHRVQ9Im1haW4iPldzY3JsPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNDZfMTYiIFRBUkdFVD0ibWFpbiI+V3NldHNjcnJlZzwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MDFfMTYiIFRBUkdFVD0ibWFpbiI+V3NldF9Db2xvcjwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81OTFfMTYiIFRBUkdFVD0ibWFpbiI+d3N0YW5kZW5kPC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU4OV8xNiIgVEFSR0VUPSJtYWluIj53c3RhbmRvdXQ8L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE0XzE3IiBUQVJHRVQ9Im1haW4iPld0aW1lb3V0PC9BPgotPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTFfMTYiIFRBUkdFVD0ibWFpbiI+V3RvdWNobG48L0E+Ci08TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTA3XzE2IiBUQVJHRVQ9Im1haW4iPld2bGluZTwvQT4KLTxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjQ2XzE2IiBUQVJHRVQ9Im1haW4iPldXaW5Ub3VjaGVkPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjRfMTYiIFRBUkdFVD0ibWFpbiI+V3Njcmw8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0OF8xNiIgVEFSR0VUPSJtYWluIj5Xc2V0c2NycmVnPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY5OV8xNiIgVEFSR0VUPSJtYWluIj5Xc2V0X0NvbG9yPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF8xNiIgVEFSR0VUPSJtYWluIj53c3RhbmRlbmQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTkyXzE2IiBUQVJHRVQ9Im1haW4iPndzdGFuZG91dDwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTVfMTciIFRBUkdFVD0ibWFpbiI+V3RpbWVvdXQ8L0E+Cis8TEk+PEEgSFJFRj0iLi4vdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5Nl8xNiIgVEFSR0VUPSJtYWluIj5XdG91Y2hsbjwvQT4KKzxMST48QSBIUkVGPSIuLi90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDlfMTYiIFRBUkdFVD0ibWFpbiI+V3ZsaW5lPC9BPgorPExJPjxBIEhSRUY9Ii4uL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNTRfMTYiIFRBUkdFVD0ibWFpbiI+V1dpblRvdWNoZWQ8L0E+CiA8L1VMPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvaW5kZXguaHRtIGIvZG9jL2h0bWwvYWRhL2luZGV4Lmh0bQppbmRleCA0YTEzNDg0Li5iMGE2YTg0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvaW5kZXguaHRtCisrKyBiL2RvYy9odG1sL2FkYS9pbmRleC5odG0KQEAgLTEsNiArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vRU4iPgogPEhUTUw+Ci08SEVBRD48VElUTEU+U291cmNlIEJyb3dzZXI8L1RJVExFPjwvSEVBRD4KKzxIRUFEPgorPFRJVExFPlNvdXJjZSBCcm93c2VyPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgogPEZSQU1FU0VUIENPTFM9IjI1MCwqIj4KIDxOT0ZSQU1FUz4KIDxIMiBBTElHTj1DRU5URVI+RmlsZXM8L0gyPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL21haW4uaHRtIGIvZG9jL2h0bWwvYWRhL21haW4uaHRtCmluZGV4IGQ4NTA2MDguLmU0NDc1YTUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS9tYWluLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvbWFpbi5odG0KQEAgLTEsNSArMSwxNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+PC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT48L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KIDxQIEFMSUdOPXJpZ2h0PjxBIEhSRUY9Im1haW4uaHRtIiBUQVJHRVQ9Il90b3AiPltObyBmcmFtZSB2ZXJzaW9uIGlzIGhlcmVdPC9BPjxQPjxIMiBBTElHTj1DRU5URVI+RmlsZXM8L0gyPgogPEEgSFJFRj0iZmlsZXMvVC5odG0iPltUXTwvQT4KQEAgLTI5LDExICs0MSw3IEBACiA8SFI+CiBZb3Ugc2hvdWxkIHN0YXJ0IHlvdXIgYnJvd3Npbmcgd2l0aCBvbmUgb2YgdGhlc2UgZmlsZXM6CiA8VUw+Ci08TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UuYWRzPC9BPgotPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzPC9BPgogPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZHM8L0E+Ci08TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM8L0E+Ci08TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRzPC9BPgpAQCAtNDIsMjAgKzUwLDIxIEBACiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpYy5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkczwvQT4KLTxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZHM8L0E+Cis8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzPC9BPgorPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRzPC9BPgogPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZHM8L0E+Ci08TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM8L0E+Cis8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZHM8L0E+Cis8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZHM8L0E+Ci08TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHM8L0E+Cis8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW4uYWRzPC9BPgogPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkczwvQT4KLTxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRzPC9BPgpAQCAtNjQsNiArNzMsMTAgQEAKIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pby5hZHM8L0E+CiA8TEk+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0iPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzPC9BPgorPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLmFkczwvQT4KIDxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlLmFkczwvQT4KKzxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtIj50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczwvQT4KKzxMST48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHMuYWRzPC9BPgorPExJPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSI+dGVybWluYWxfaW50ZXJmYWNlLmFkczwvQT4KIDwvVUw+CiA8L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3RhYmxlLmh0bWwgYi9kb2MvaHRtbC9hZGEvdGFibGUuaHRtbAppbmRleCBmZjZkMGJkLi5jZThkOTFmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGFibGUuaHRtbAorKysgYi9kb2MvaHRtbC9hZGEvdGFibGUuaHRtbApAQCAtMTAsNiArMTAsOCBAQAogPFRBQkxFIEFMSUdOPUNFTlRFUiBCT1JERVI+CiA8VFIgQUxJR049TEVGVD4KIDxUSD5DIG5hbWU8L1RIPjxUSD5BZGEgbmFtZTwvVEg+PFRIPm1hbiBwYWdlPC9USD48L1RSPgorPFRSPjxURD5fbmNfZnJlZWFsbCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTU5Ij5DdXJzZXNfRnJlZV9BbGw8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZS4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPl90cmFjZWYoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jQUZVXzIiPlRyYWNlX1B1dDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+YXNzdW1lX2RlZmF1bHRfY29sb3JzKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNTYiPkFzc3VtZV9EZWZhdWx0X0NvbG9yczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+ZGVmYXVsdF9jb2xvcnMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5iYXVkcmF0ZSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTMxIj5CYXVkcmF0ZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+Y3Vyc190ZXJtYXR0cnMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5iZWVwKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV80MCI+QmVlcDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19iZWVwLjN4Lmh0bWwiPmN1cnNfYmVlcC4zeDwvQT48L1REPjwvVFI+CkBAIC0yMiwxNSArMjQsMTUgQEAKIDxUUj48VEQ+Y29weXdpbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNzkiPkNvcHk8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfb3ZlcmxheS4zeC5odG1sIj5jdXJzX292ZXJsYXkuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5jdXJyZW50X2ZpZWxkKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV81OCI+Q3VycmVudDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPmZvcm1fcGFnZS4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmN1cnJlbnRfaXRlbSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfMTQiPkN1cnJlbnQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCI+bWl0ZW1fY3VycmVudC4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPmN1cnNfc2V0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNTMiPlNldF9DdXJzb3JfVmlzaWJpbGl0eTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5jdXJzY3I8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8yIj5DdXJyZW50X1dpbmRvdzwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmN1cnNlc192ZXJzaW9uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNTciPkN1cnNlc19WZXJzaW9uPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2V4dGVuZC4zeC5odG1sIj5jdXJzX2V4dGVuZC4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPmN1cnNfc2V0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNTMiPlNldF9DdXJzb3JfVmlzaWJpbGl0eTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5kYXRhX2FoZWFkKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV81NCI+RGF0YV9BaGVhZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwiPmZvcm1fZGF0YS4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmRhdGFfYmVoaW5kKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV81NSI+RGF0YV9CZWhpbmQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1fZGF0YS4zeC5odG1sIj5mb3JtX2RhdGEuM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD5kZWZpbmVfa2V5KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMjQiPkRlZmluZV9LZXk8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2RlZmluZV9rZXkuM3guaHRtbCI+ZGVmaW5lX2tleS4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmRlZl9wcm9nX21vZGUoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE0OCI+U2F2ZV9DdXJzZXNfTW9kZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwuM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD5kZWxheV9vdXRwdXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEyOSI+RGVsYXlfT3V0cHV0PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3V0aWwuM3guaHRtbCI+Y3Vyc191dGlsLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+ZGVmaW5lX2tleSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTI0Ij5EZWZpbmVfS2V5PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9kZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5kZWxfcGFuZWwoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI0FGVV8xNSI+RGVsZXRlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5wYW5lbC4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPmRlbGF5X291dHB1dCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTI5Ij5EZWxheV9PdXRwdXQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5kZWx3aW4oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEyIj5EZWxldGU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPmN1cnNfd2luZG93LjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZGVyd2luKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNCI+RGVyaXZlZF9XaW5kb3c8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPmN1cnNfd2luZG93LjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZG91cGRhdGUoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzYxIj5VcGRhdGVfU2NyZWVuPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoLjN4PC9BPjwvVEQ+PC9UUj4KQEAgLTUwLDkgKzUyLDkgQEAKIDxUUj48VEQ+ZmllbGRfaW5mbygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMjUiPkluZm88L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfaW5mby4zeC5odG1sIj5mb3JtX2ZpZWxkX2luZm8uM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5maWVsZF9pbml0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV8zNiI+R2V0X0ZpZWxkX0luaXRfSG9vazwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faG9vay4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmZpZWxkX2p1c3QoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzciPkdldF9KdXN0aWZpY2F0aW9uPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3guaHRtbCI+Zm9ybV9maWVsZF9qdXN0LjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+ZmllbGRfb3B0c19vbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZmllbGRfb3B0cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMTUiPkdldF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZmllbGRfb3B0cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMTYiPkdldF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+ZmllbGRfb3B0c19vbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZmllbGRfcGFkKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV8yNCI+UGFkX0NoYXJhY3RlcjwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZvcm1fZmllbGRfYXR0cmlidXRlcy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmZpZWxkX3N0YXR1cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMTEiPkNoYW5nZWQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4Lmh0bWwiPmZvcm1fZmllbGRfYnVmZmVyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+ZmllbGRfdGVybSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfMzciPkdldF9GaWVsZF9UZXJtX0hvb2s8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5mb3JtX2hvb2suM3g8L0E+PC9URD48L1RSPgpAQCAtNjQsOSArNjYsOSBAQAogPFRSPjxURD5mb3JtX2RyaXZlcigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfNTYiPkRyaXZlcjwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9kcml2ZXIuM3guaHRtbCI+Zm9ybV9kcml2ZXIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5mb3JtX2ZpZWxkcygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfNDIiPkZpZWxkczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZC4zeC5odG1sIj5mb3JtX2ZpZWxkLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+Zm9ybV9pbml0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV8zOCI+R2V0X0Zvcm1fSW5pdF9Ib29rPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+Zm9ybV9ob29rLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+Zm9ybV9vcHRzX29uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV80OSI+U3dpdGNoX09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5mb3JtX29wdHMoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzUwIj5HZXRfT3B0aW9uczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPmZvcm1fb3B0cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfNTEiPkdldF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX29wdHMuM3guaHRtbCI+Zm9ybV9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+Zm9ybV9vcHRzX29uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI0FGVV80OSI+U3dpdGNoX09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5mb3JtX3BhZ2UoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzYwIj5QYWdlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX3BhZ2UuM3guaHRtbCI+Zm9ybV9wYWdlLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+Zm9ybV9zdWIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzMwIj5HZXRfU3ViX1dpbmRvdzwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV93aW4uM3guaHRtbCI+Zm9ybV93aW4uM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5mb3JtX3Rlcm0oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzM5Ij5HZXRfRm9ybV9UZXJtX0hvb2s8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5mb3JtX2hvb2suM3g8L0E+PC9URD48L1RSPgpAQCAtOTYsMTcgKzk4LDE3IEBACiA8VFI+PFREPmluaXRzY3IoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzMiPkluaXRfU2NyZWVuPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aW5pdHNjcigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNCI+SW5pdF9XaW5kb3dzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aW50cmZsdXNoKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV80OCI+U2V0X0ZsdXNoX09uX0ludGVycnVwdF9Nb2RlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5jdXJzX2lub3B0cy4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPmlzZW5kd2luKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV82Ij5Jc19FbmRfV2luZG93PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXNfbGluZXRvdWNoZWQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzc3Ij5Jc19Ub3VjaGVkPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2guM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5pc193aW50b3VjaGVkKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV83OCI+SXNfVG91Y2hlZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj5jdXJzX3RvdWNoLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+aXNlbmR3aW4oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzYiPklzX0VuZF9XaW5kb3c8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5pdGVtX2NvdW50KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV81OCI+SXRlbV9Db3VudDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXRlbV9kZXNjcmlwdGlvbigpOzwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzEyIj5EZXNjcmlwdGlvbjwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmFtZS4zeC5odG1sIj5taXRlbV9uYW1lLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXRlbV9pbmRleCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfMTciPkdldF9JbmRleDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5taXRlbV9jdXJyZW50LjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXRlbV9pbml0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV81MiI+R2V0X0l0ZW1fSW5pdF9Ib29rPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+bWVudV9ob29rLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXRlbV9uYW1lKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8xMSI+TmFtZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmFtZS4zeC5odG1sIj5taXRlbV9uYW1lLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+aXRlbV9vcHRzX29uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV84Ij5Td2l0Y2hfT3B0aW9uczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIj5taXRlbV9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+aXRlbV9vcHRzKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8xMCI+R2V0X09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPml0ZW1fb3B0cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfOSI+R2V0X09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cy4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPml0ZW1fb3B0c19vbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfOCI+U3dpdGNoX09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPml0ZW1fdGVybSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfNTMiPkdldF9JdGVtX1Rlcm1fSG9vazwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaG9vay4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPml0ZW1fdXNlcnB0cjwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jQUZVXzIiPkdldF9Vc2VyX0RhdGE8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+bWl0ZW1fdXNlcnB0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPml0ZW1fdXNlcnB0cjwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jQUZVXzMiPkdldF9Vc2VyX0RhdGE8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+bWl0ZW1fdXNlcnB0ci4zeDwvQT48L1REPjwvVFI+CkBAIC0xMzIsOSArMTM0LDkgQEAKIDxUUj48VEQ+bWVudV9pbml0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV81NCI+R2V0X01lbnVfSW5pdF9Ib29rPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+bWVudV9ob29rLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bWVudV9pdGVtcygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfNTciPkl0ZW1zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X2l0ZW1zLjN4Lmh0bWwiPm1lbnVfaXRlbXMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tZW51X21hcmsoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzMwIj5NYXJrPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X21hcmsuM3guaHRtbCI+bWVudV9tYXJrLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+bWVudV9vcHRzX29uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8yMCI+U3dpdGNoX09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tZW51X29wdHMoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzIxIj5HZXRfT3B0aW9uczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm1lbnVfb3B0cygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfMjIiPkdldF9PcHRpb25zPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X29wdHMuM3guaHRtbCI+bWVudV9vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+bWVudV9vcHRzX29uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8yMCI+U3dpdGNoX09wdGlvbnM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tZW51X3BhZCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfNDEiPlBhZF9DaGFyYWN0ZXI8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2F0dHJpYnV0ZXMuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tZW51X3BhdHRlcm4oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzQ1Ij5QYXR0ZXJuPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X3BhdHRlcm4uM3guaHRtbCI+bWVudV9wYXR0ZXJuLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bWVudV9yZXF1ZXN0bmFtZS4zeDwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzYyIj48L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21lbnVfZHJpdmVyLjN4Lmh0bWwiPm1lbnVfZHJpdmVyLjN4PC9BPjwvVEQ+PC9UUj4KQEAgLTE1MCwyMCArMTUyLDE5IEBACiA8VFI+PFREPm1vdmVfZmllbGQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzQ0Ij5Nb3ZlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwiPmZvcm1fZmllbGQuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tb3ZlX3BhbmVsKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNBRlVfMTEiPk1vdmU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bXZkZXJ3aW4oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE3Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5jdXJzX3dpbmRvdy4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPm12d2FkZGNobnN0cigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMjQiPkFkZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sIj5jdXJzX2FkZGNoc3RyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bXZ3YWRkY2goKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzkiPkFkZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+bXZ3YWRkY2huc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8yNCI+QWRkPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZGNoc3RyLjN4Lmh0bWwiPmN1cnNfYWRkY2hzdHIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tdndhZGRuc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8yMiI+QWRkPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZHN0ci4zeC5odG1sIj5jdXJzX2FkZHN0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm12d2NoZ2F0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8zOSI+Q2hhbmdlX0F0dHJpYnV0ZXM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tdndkZWxjaCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfOTYiPkRlbGV0ZV9DaGFyYWN0ZXI8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfZGVsY2guM3guaHRtbCI+Y3Vyc19kZWxjaC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm12d2dldG5zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEwOCI+R2V0PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldHN0ci4zeC5odG1sIj5jdXJzX2dldHN0ci4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPm12d2luY2huc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMDYiPlBlZWs8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIuM3g8L0E+PC9URD48L1RSPgorPFRSPjxURD5tdndpbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTYiPk1vdmVfV2luZG93PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5jdXJzX3dpbmRvdy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm12d2luY2goKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzk4Ij5QZWVrPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luY2guM3guaHRtbCI+Y3Vyc19pbmNoLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+bXZ3aW5jaG5zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEwNiI+UGVlazwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoc3RyLjN4Lmh0bWwiPmN1cnNfaW5jaHN0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm12d2lubnN0cigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTA0Ij5QZWVrPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc3RyLjN4Lmh0bWwiPmN1cnNfaW5zdHIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5tdndpbnNjaCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTAwIj5JbnNlcnQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zY2guM3guaHRtbCI+Y3Vyc19pbnNjaC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm12d2luc25zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEwMiI+SW5zZXJ0PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc3N0ci4zeC5odG1sIj5jdXJzX2luc3N0ci4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPm12d2luKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNiI+TW92ZV9XaW5kb3c8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPmN1cnNfd2luZG93LjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bmFwbXMoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE1NCI+TmFwX01pbGxpX1NlY29uZHM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+X25jX2ZyZWVhbGwoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE1OSI+Q3Vyc2VzX0ZyZWVfQWxsPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3RyYWNlLjN4Lmh0bWwiPmN1cnNfdHJhY2UuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5uZXdfZmllbGQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzEiPkNyZWF0ZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+Zm9ybV9maWVsZF9uZXcuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5uZXdfZmllbGQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzIiPk5ld19GaWVsZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+Zm9ybV9maWVsZF9uZXcuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5uZXdfZm9ybSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNBRlVfNDUiPkNyZWF0ZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+Zm9ybV9uZXcuM3g8L0E+PC9URD48L1RSPgpAQCAtMTcxLDEwICsxNzIsMTAgQEAKIDxUUj48VEQ+bmV3X2l0ZW0oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzEiPkNyZWF0ZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmV3LjN4Lmh0bWwiPm1pdGVtX25ldy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm5ld19pdGVtKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8yIj5OZXdfSXRlbTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmV3LjN4Lmh0bWwiPm1pdGVtX25ldy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm5ld19tZW51KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV81OSI+Q3JlYXRlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9tZW51X25ldy4zeC5odG1sIj5tZW51X25ldy4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPm5ld3BhZCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfODkiPk5ld19QYWQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPmN1cnNfcGFkLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bmV3X3BhZ2UoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzYzIj5Jc19OZXdfUGFnZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXdfcGFnZS4zeC5odG1sIj5mb3JtX25ld19wYWdlLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bmV3X3BhbmVsKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNBRlVfMSI+Q3JlYXRlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5wYW5lbC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm5ld19wYW5lbCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jQUZVXzIiPk5ld19QYW5lbDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWwuM3g8L0E+PC9URD48L1RSPgorPFRSPjxURD5uZXdwYWQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzg5Ij5OZXdfUGFkPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3BhZC4zeC5odG1sIj5jdXJzX3BhZC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPm5ld3dpbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTEiPkNyZWF0ZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+Y3Vyc193aW5kb3cuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5ubCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNTMiPlNldF9OTF9Nb2RlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+bm9kZWxheSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNTAiPlNldF9Ob0RlbGF5X01vZGU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPmN1cnNfaW5vcHRzLjN4PC9BPjwvVEQ+PC9UUj4KQEAgLTIwOCw5ICsyMDksOSBAQAogPFRSPjxURD5zY2FsZV9tZW51KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI0FGVV8yNyI+U2NhbGU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21lbnVfd2luLjN4Lmh0bWwiPm1lbnVfd2luLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2NyX2R1bXAoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE2MCI+U2NyZWVuX0R1bXBfVG9fRmlsZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19zY3JfZHVtcC4zeC5odG1sIj5jdXJzX3Njcl9kdW1wLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2NyX2luaXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE2MiI+U2NyZWVuX0luaXRfRnJvbV9GaWxlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPmN1cnNfc2NyX2R1bXAuM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD5zY3JvbGxvaygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNTkiPkFsbG93X1Njcm9sbGluZzwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnNjcl9yZXN0b3JlKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xNjEiPlNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19zY3JfZHVtcC4zeC5odG1sIj5jdXJzX3Njcl9kdW1wLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2NyX3NldCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTYzIj5TY3JlZW5fU2V0X0ZpbGU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbCI+Y3Vyc19zY3JfZHVtcC4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPnNjcm9sbG9rKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV81OSI+QWxsb3dfU2Nyb2xsaW5nPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2V0X2N1cnJlbnRfZmllbGQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzU3Ij5TZXRfQ3VycmVudDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPmZvcm1fcGFnZS4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnNldF9jdXJyZW50X2l0ZW0oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jQUZVXzEzIj5TZXRfQ3VycmVudDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5taXRlbV9jdXJyZW50LjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2V0X2ZpZWxkX2JhY2soKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jQUZVXzIwIj5TZXRfQmFja2dyb3VuZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZvcm1fZmllbGRfYXR0cmlidXRlcy4zeDwvQT48L1REPjwvVFI+CkBAIC0yNTgsMTAgKzI1OSwxMCBAQAogPFRSPjxURD5zZXRfcGFuZWxfdXNlcnB0cjwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNBRlVfMSI+U2V0X1VzZXJfRGF0YTwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5zZXRfdG9wX3JvdygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfMTUiPlNldF9Ub3BfUm93PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwiPm1pdGVtX2N1cnJlbnQuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5zaG93X3BhbmVsKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNBRlVfNSI+U2hvdzwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWwuM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD5zbGtfYXR0cm9uKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMTgiPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+Ci08VFI+PFREPnNsa19hdHRyc2V0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMTkiPlNldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnNsa19hdHRyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMjAiPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnNsa19hdHRyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMjEiPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPnNsa19hdHRyb24oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzExOCI+U3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrLjN4PC9BPjwvVEQ+PC9UUj4KKzxUUj48VEQ+c2xrX2F0dHJzZXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzExOSI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+c2xrX2NsZWFyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMTUiPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+Y3Vyc19zbGsuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD5zbGtfY29sb3IoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEyMiI+U2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnNsa19pbml0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMDkiPkluaXRfU29mdF9MYWJlbF9LZXlzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L1REPjwvVFI+CkBAIC0yODUsNyArMjg2LDYgQEAKIDxUUj48VEQ+dG9wX3JvdygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNBRlVfMTYiPlRvcF9Sb3c8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCI+bWl0ZW1fY3VycmVudC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnRvdWNobGluZSgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNzUiPlRvdWNoPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2guM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD50b3VjaHdpbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNzQiPlRvdWNoPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2guM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD5fdHJhY2VmKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI0FGVV8yIj5UcmFjZV9QdXQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZS4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnRyYWNlKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI0FGVV8xIj5UcmFjZV9vbjwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+dW5jdHJsKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMjciPlVuX0NvbnRyb2w8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD51bmN0cmwoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEyOCI+VW5fQ29udHJvbDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbC4zeDwvQT48L1REPjwvVFI+CkBAIC0yOTUsMTYgKzI5NSwxNiBAQAogPFRSPjxURD51cGRhdGVfcGFuZWxzKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNBRlVfNiI+VXBkYXRlX1BhbmVsczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWwuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD51c2VfZGVmYXVsdF9jb2xvcnMoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzE1NSI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9kZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5kZWZhdWx0X2NvbG9ycy4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPnVzZV9leHRlbmRlZF9uYW1lcygpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMTU4Ij5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwiPmN1cnNfZXh0ZW5kLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+d2FkZGNobnN0cigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMjMiPkFkZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sIj5jdXJzX2FkZGNoc3RyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2FkZGNoKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV84Ij5BZGQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2guM3guaHRtbCI+Y3Vyc19hZGRjaC4zeDwvQT48L1REPjwvVFI+Cis8VFI+PFREPndhZGRjaG5zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzIzIj5BZGQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2hzdHIuM3guaHRtbCI+Y3Vyc19hZGRjaHN0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndhZGRuc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8yMSI+QWRkPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZHN0ci4zeC5odG1sIj5jdXJzX2FkZHN0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndhdHRyX2dldCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMzUiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndhdHRyX2dldCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMzYiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2F0dHJvbigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMzMiPlN3aXRjaF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2F0dHJzZXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzM0Ij5TZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIuM3g8L0E+PC9URD48L1RSPgorPFRSPjxURD53YmtnZCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNzEiPkNoYW5nZV9CYWNrZ3JvdW5kPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2JrZ2QuM3guaHRtbCI+Y3Vyc19ia2dkLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2JrZ2RnZXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzcyIj5HZXRfQmFja2dyb3VuZDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndia2dkc2V0KCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV83MCI+U2V0X0JhY2tncm91bmQ8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYmtnZC4zeC5odG1sIj5jdXJzX2JrZ2QuM3g8L0E+PC9URD48L1RSPgotPFRSPjxURD53YmtnZCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNzEiPkNoYW5nZV9CYWNrZ3JvdW5kPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2JrZ2QuM3guaHRtbCI+Y3Vyc19ia2dkLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2JvcmRlcigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMjUiPkJvcmRlcjwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD53Y2hnYXQoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzM4Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndjbGVhcigpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfNjciPkNsZWFyPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIuM3g8L0E+PC9URD48L1RSPgpAQCAtMzE5LDggKzMxOSw4IEBACiA8VFI+PFREPndnZXRjaCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfMjkiPkdldF9LZXlzdHJva2U8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaC4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndnZXRuc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMDciPkdldDwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD53aGxpbmUoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzI3Ij5Ib3Jpem9udGFsX0xpbmU8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfYm9yZGVyLjN4Lmh0bWwiPmN1cnNfYm9yZGVyLjN4PC9BPjwvVEQ+PC9UUj4KLTxUUj48VEQ+d2luY2huc3RyKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV8xMDUiPlBlZWs8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIuM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD53aW5jaCgpPC9URD48VEQ+PEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNBRlVfOTciPlBlZWs8L0E+PC9URD48VEQ+PEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaC4zeC5odG1sIj5jdXJzX2luY2guM3g8L0E+PC9URD48L1RSPgorPFRSPjxURD53aW5jaG5zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEwNSI+UGVlazwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoc3RyLjN4Lmh0bWwiPmN1cnNfaW5jaHN0ci4zeDwvQT48L1REPjwvVFI+CiA8VFI+PFREPndpbm5zdHIoKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzEwMyI+UGVlazwvQT48L1REPjxURD48QSBIUkVGPSIuLi9tYW4vY3Vyc19pbnN0ci4zeC5odG1sIj5jdXJzX2luc3RyLjN4PC9BPjwvVEQ+PC9UUj4KIDxUUj48VEQ+d2luc2NoKCk8L1REPjxURD48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI0FGVV85OSI+SW5zZXJ0PC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc2NoLjN4Lmh0bWwiPmN1cnNfaW5zY2guM3g8L0E+PC9URD48L1RSPgogPFRSPjxURD53aW5zZGVsbG4oKTwvVEQ+PFREPjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jQUZVXzgyIj5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPjwvVEQ+PFREPjxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPmN1cnNfZGVsZXRlbG4uM3g8L0E+PC9URD48L1RSPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtCmluZGV4IDZiMjJmZjguLmYzNmEzNjMgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0KQEAgLTEsMTIyICsxLDEzNCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXggICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDFfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgU29tZSBoZWxwZXJzPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiPkZpbGxfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMjciPkNwPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICBjaGFyc19wdHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTdfMjciPlN0cjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5BdXggICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU29tZSBoZWxwZXJzPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzE0Ij5GaWxsX1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8yNyI+Q3A8L0E+PC9zcGFuPiAgOiBjaGFyc19wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkzXzI3Ij5TdHI8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEZpbGwgdGhlIHN0cmluZyB3aXRoIHRoZSBjaGFyYWN0ZXJzIHJlZmVyZW5jZWQgYnkgdGhlPC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGNoYXJzX3B0ci48L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF83Ij5MZW48L0E+PC9GT05UPiA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBGaWxsIHRoZSBzdHJpbmcgd2l0aCB0aGUgY2hhcmFjdGVycyByZWZlcmVuY2VkIGJ5IHRoZTwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgY2hhcnNfcHRyLjwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzciPkxlbjwvQT48L3NwYW4+IDogTmF0dXJhbDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMjciPkNwPC9BPiAvPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzUwXzciPkxlbjwvQT4gOj0gTmF0dXJhbCAoU3RybGVuICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE2XzI3Ij5DcDwvQT4pKTsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE3XzI3Ij5TdHI8L0E+J0xlbmd0aCAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl81MF83Ij5MZW48L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzI3Ij5DcDwvQT4gLz0gTnVsbF9QdHIgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl81MF83Ij5MZW48L0E+IDo9IE5hdHVyYWwgKFN0cmxlbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzI3Ij5DcDwvQT4pKTsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfMjciPlN0cjwvQT4nTGVuZ3RoICZsdDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzUwXzciPkxlbjwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgICAgIDxiPnJhaXNlPC9iPiBDb25zdHJhaW50X0Vycm9yOwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICAgICA8Yj5kZWNsYXJlPC9iPgotICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xMyI+UzwvQT48L0ZPTlQ+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl81MF83Ij5MZW48L0E+KTsKKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF8xMyI+UzwvQT48L3NwYW4+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl81MF83Ij5MZW48L0E+KTsKICAgICAgICAgIDxiPmJlZ2luPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzU4XzEzIj5TPC9BPiA6PSBWYWx1ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8yNyI+Q3A8L0E+KTsKLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTdfMjciPlN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTdfMjciPlN0cjwvQT4nRmlyc3QgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTdfMjciPlN0cjwvQT4nRmlyc3QgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNTBfNyI+TGVuPC9BPiAtIDEpKSA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNThfMTMiPlM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNThfMTMiPlM8L0E+JzxiPlJhbmdlPC9iPik7CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNThfMTMiPlM8L0E+IDo9IFZhbHVlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTJfMjciPkNwPC9BPik7CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfMjciPlN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85M18yNyI+U3RyPC9BPidGaXJzdCAuLiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkzXzI3Ij5TdHI8L0E+J0ZpcnN0ICsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzUwXzciPkxlbjwvQT4gLSAxKSkgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzU4XzEzIj5TPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzU4XzEzIj5TPC9BPic8Yj5SYW5nZTwvYj4pOwogICAgICAgICAgPGI+ZW5kPC9iPjsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNTBfNyI+TGVuPC9BPiA6PSAwOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNTBfNyI+TGVuPC9BPiAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTdfMjciPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE3XzI3Ij5TdHI8L0E+ICgoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExN18yNyI+U3RyPC9BPidGaXJzdCArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl81MF83Ij5MZW48L0E+KSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE3XzI3Ij5TdHI8L0E+J0xhc3QpIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzUwXzciPkxlbjwvQT4gJmx0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfMjciPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfMjciPlN0cjwvQT4gKCg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfMjciPlN0cjwvQT4nRmlyc3QgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNTBfNyI+TGVuPC9BPikgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkzXzI3Ij5TdHI8L0E+J0xhc3QpIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKIAotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE2XzE0Ij5GaWxsX1N0cmluZzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8xMyI+RmlsbF9TdHJpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8yNiI+Q3A8L0E+PC9GT05UPiA6IGNoYXJzX3B0cikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18xMyI+RmlsbF9TdHJpbmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMjYiPkNwPC9BPjwvc3Bhbj4gOiBjaGFyc19wdHIpIDxiPnJldHVybjwvYj4gU3RyaW5nCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzVfNyI+TGVuPC9BPjwvRk9OVD4gOiBOYXR1cmFsOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1XzciPkxlbjwvQT48L3NwYW4+IDogTmF0dXJhbDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMjYiPkNwPC9BPiAvPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzc1XzciPkxlbjwvQT4gOj0gTmF0dXJhbCAoU3RybGVuICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzI2Ij5DcDwvQT4pKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMjYiPkNwPC9BPiAvPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzc1XzciPkxlbjwvQT4gOj0gTmF0dXJhbCAoU3RybGVuICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMjYiPkNwPC9BPikpOwogICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl83NV83Ij5MZW48L0E+ID0gMCA8Yj50aGVuPC9iPgogICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiAiIjsKICAgICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICAgICA8Yj5kZWNsYXJlPC9iPgotICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84M18xNiI+UzwvQT48L0ZPTlQ+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl83NV83Ij5MZW48L0E+KTsKKyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84M18xNiI+UzwvQT48L3NwYW4+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl83NV83Ij5MZW48L0E+KTsKICAgICAgICAgICAgIDxiPmJlZ2luPC9iPgotICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzI2Ij5DcDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl84M18xNiI+UzwvQT4pOworICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18yNiI+Q3A8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfODNfMTYiPlM8L0E+KTsKICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzgzXzE2Ij5TPC9BPjsKICAgICAgICAgICAgIDxiPmVuZDwvYj47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+ICIiOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk3XzEzIj5GaWxsX1N0cmluZzwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8yOSI+Q29kZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8yOSI+Q29kZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzI5Ij5Db2RlPC9BPiA8Yj5pczwvYj4KLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiAgICAgICAgICAgICAgPSZndDsgPGI+bnVsbDwvYj47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODFfNCI+RV9TeXN0ZW1fRXJyb3I8L0E+ICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfNCI+RXRpX1N5c3RlbV9FcnJvcjwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODJfNCI+RV9CYWRfQXJndW1lbnQ8L0E+ICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTBfNCI+RXRpX0JhZF9Bcmd1bWVudDwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODNfNCI+RV9Qb3N0ZWQ8L0E+ICAgICAgICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTFfNCI+RXRpX1Bvc3RlZDwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODRfNCI+RV9Db25uZWN0ZWQ8L0E+ICAgICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTJfNCI+RXRpX0Nvbm5lY3RlZDwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODVfNCI+RV9CYWRfU3RhdGU8L0E+ICAgICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTNfNCI+RXRpX0JhZF9TdGF0ZTwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODZfNCI+RV9Ob19Sb29tPC9BPiAgICAgICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTRfNCI+RXRpX05vX1Jvb208L0E+OwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg3XzQiPkVfTm90X1Bvc3RlZDwvQT4gICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzk1XzQiPkV0aV9Ob3RfUG9zdGVkPC9BPjsKLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF80Ij5FX1Vua25vd25fQ29tbWFuZDwvQT4gPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM5Nl80Ij5FdGlfVW5rbm93bl9Db21tYW5kPC9BPjsKLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OV80Ij5FX05vX01hdGNoPC9BPiAgICAgICAgPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM5N180Ij5FdGlfTm9fTWF0Y2g8L0E+OwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkwXzQiPkVfTm90X1NlbGVjdGFibGU8L0E+ICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzk4XzQiPkV0aV9Ob3RfU2VsZWN0YWJsZTwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTFfNCI+RV9Ob3RfQ29ubmVjdGVkPC9BPiAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zOTlfNCI+RXRpX05vdF9Db25uZWN0ZWQ8L0E+OwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzQiPkVfUmVxdWVzdF9EZW5pZWQ8L0E+ICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDAwXzQiPkV0aV9SZXF1ZXN0X0RlbmllZDwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTNfNCI+RV9JbnZhbGlkX0ZpZWxkPC9BPiAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDFfNCI+RXRpX0ludmFsaWRfRmllbGQ8L0E+OwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk0XzQiPkVfQ3VycmVudDwvQT4gICAgICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDAyXzQiPkV0aV9DdXJyZW50PC9BPjsKKyAgICAgIDxiPmNhc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8yOSI+Q29kZTwvQT4gPGI+aXM8L2I+CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODZfNyI+RV9PazwvQT4gICAgICAgICAgICAgID0mZ3Q7IDxiPm51bGw8L2I+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg1XzciPkVfU3lzdGVtX0Vycm9yPC9BPiAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI3XzQiPkV0aV9TeXN0ZW1fRXJyb3I8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg0XzciPkVfQmFkX0FyZ3VtZW50PC9BPiAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI4XzQiPkV0aV9CYWRfQXJndW1lbnQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgzXzciPkVfUG9zdGVkPC9BPiAgICAgICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI5XzQiPkV0aV9Qb3N0ZWQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgyXzciPkVfQ29ubmVjdGVkPC9BPiAgICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTMwXzQiPkV0aV9Db25uZWN0ZWQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgxXzciPkVfQmFkX1N0YXRlPC9BPiAgICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTMxXzQiPkV0aV9CYWRfU3RhdGU8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzciPkVfTm9fUm9vbTwvQT4gICAgICAgICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTMyXzQiPkV0aV9Ob19Sb29tPC9BPjsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OV83Ij5FX05vdF9Qb3N0ZWQ8L0E+ICAgICAgPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzM180Ij5FdGlfTm90X1Bvc3RlZDwvQT47CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfNyI+RV9Vbmtub3duX0NvbW1hbmQ8L0E+ID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzRfNCI+RXRpX1Vua25vd25fQ29tbWFuZDwvQT47CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzdfNyI+RV9Ob19NYXRjaDwvQT4gICAgICAgID0mZ3Q7IDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzVfNCI+RXRpX05vX01hdGNoPC9BPjsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Nl83Ij5FX05vdF9TZWxlY3RhYmxlPC9BPiAgPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzNl80Ij5FdGlfTm90X1NlbGVjdGFibGU8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzciPkVfTm90X0Nvbm5lY3RlZDwvQT4gICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTM3XzQiPkV0aV9Ob3RfQ29ubmVjdGVkPC9BPjsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NF83Ij5FX1JlcXVlc3RfRGVuaWVkPC9BPiAgPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzOF80Ij5FdGlfUmVxdWVzdF9EZW5pZWQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzczXzciPkVfSW52YWxpZF9GaWVsZDwvQT4gICA9Jmd0OyA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTM5XzQiPkV0aV9JbnZhbGlkX0ZpZWxkPC9BPjsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml83Ij5FX0N1cnJlbnQ8L0E+ICAgICAgICAgPSZndDsgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU0MF80Ij5FdGlfQ3VycmVudDwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmNhc2U8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtCmluZGV4IGYyMTYwY2QuLjM5MWFiNzMgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0KQEAgLTEsMTMwICsxLDEzNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eC5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4LmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXguYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4ICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xNiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBjdXJzZXMgYmluZGluZy48L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBtb2R1bGUgaXMgZ2VuZXJhdGVkLiBQbGVhc2UgZG9uJ3QgY2hhbmdlIGl0IG1hbnVhbGx5ITwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSdW4gdGhlIGdlbmVyYXRvciBpbnN0ZWFkLjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuQXV4ICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4yMyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBTeXN0ZW07Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InVuY2hjb252X19hZHMuaHRtI3JlZl8yMF8xMCI+VW5jaGVja2VkX0NvbnZlcnNpb248L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNDFfNDAiPkF1eDwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT4pOworPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzQxXzQwIj5BdXg8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+KTsKIAotICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8xMiI+Q19JbnQ8L0E+PC9GT05UPiAgICAgIDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzEyIj5DX1Nob3J0PC9BPjwvRk9OVD4gICAgPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0OwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N18xMiI+Q19Mb25nX0ludDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5sb25nOwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xMiI+Q19TaXplX1Q8L0E+PC9GT05UPiAgIDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5zaXplX3Q7Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzEyIj5DX1VJbnQ8L0E+PC9GT05UPiAgICAgPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLnVuc2lnbmVkOwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MF8xMiI+Q19VTG9uZzwvQT48L0ZPTlQ+ICAgIDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy51bnNpZ25lZF9sb25nOwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8xMiI+Q19DaGFyX1B0cjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzLmNoYXJzX3B0cjsKLSAgIDxiPnR5cGU8L2I+ICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfMTIiPkNfVm9pZF9QdHI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uQWRkcmVzczsKLSAgIDxiPnR5cGU8L2I+ICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjwvRk9OVD4gICA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjBfMTIiPkNfVUxvbmc8L0E+OwotICAgPGI+dHlwZTwvYj4gICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMiI+Q19BdHRyVHlwZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82MF8xMiI+Q19VTG9uZzwvQT47CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMTIiPkNfSW50PC9BPjwvc3Bhbj4gICAgICA8Yj5pczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzEyIj5DX1Nob3J0PC9BPjwvc3Bhbj4gICAgPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0OworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzEyIj5DX0xvbmdfSW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmxvbmc7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTIiPkNfU2l6ZV9UPC9BPjwvc3Bhbj4gICA8Yj5pczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuc2l6ZV90OworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzEyIj5DX1VJbnQ8L0E+PC9zcGFuPiAgICAgPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLnVuc2lnbmVkOworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzEyIj5DX1VMb25nPC9BPjwvc3Bhbj4gICAgPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLnVuc2lnbmVkX2xvbmc7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfMTIiPkNfQ2hhcl9QdHI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5ncy5jaGFyc19wdHI7CisgICA8Yj50eXBlPC9iPiAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfMTIiPkNfVm9pZF9QdHI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uQWRkcmVzczsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIGhvdyB0aG9zZSBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gbmN1cnNlcy4gSSBzZWUgdGhlbSBhbHNvPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGV4YWN0bHkgbGlrZSB0aGlzIGluIGFsbCBFVEkgaW1wbGVtZW50YXRpb25zIEkgZXZlciB0ZXN0ZWQuIFNvIGl0PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGNvdWxkIGJlIHRoYXQgdGhpcyBpcyBxdWl0ZSBnZW5lcmFsLCBidXQgcGxlYXNlIGNoZWNrIHdpdGggeW91ciBjdXJzZXMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoaXMgaXMgY3JpdGljYWwsIGJlY2F1c2UgY3Vyc2VzIHNvbWV0aW1lIG1peGVzIGJvb2xlYW4gcmV0dXJucyB3aXRoPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHJldHVybmluZyBhbiBlcnJvciBzdGF0dXMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxXzQiPkN1cnNlc19PazwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDA7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+PC9GT05UPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IC0xOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyBob3cgdGhvc2UgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIG5jdXJzZXMuIEkgc2VlIHRoZW0gYWxzbzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgZXhhY3RseSBsaWtlIHRoaXMgaW4gYWxsIEVUSSBpbXBsZW1lbnRhdGlvbnMgSSBldmVyIHRlc3RlZC4gU28gaXQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGNvdWxkIGJlIHRoYXQgdGhpcyBpcyBxdWl0ZSBnZW5lcmFsLCBidXQgcGxlYXNlIGNoZWNrIHdpdGggeW91ciBjdXJzZXMuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIGNyaXRpY2FsLCBiZWNhdXNlIGN1cnNlcyBzb21ldGltZSBtaXhlcyBCb29sZWFuIHJldHVybnMgd2l0aDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgcmV0dXJuaW5nIGFuIGVycm9yIHN0YXR1cy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF80Ij5DdXJzZXNfT2s8L0E+PC9zcGFuPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEyXzQiPk9LPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV80Ij5DdXJzZXNfRXJyPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEzXzQiPkVSUjwvQT47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzRfNCI+Q3Vyc2VzX1RydWU8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gMTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzVfNCI+Q3Vyc2VzX0ZhbHNlPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N180Ij5DdXJzZXNfVHJ1ZTwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE1XzQiPlRSVUU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzQiPkN1cnNlc19GYWxzZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTZfNCI+RkFMU0U8L0E+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV0aV9FcnJvcjogdHlwZSBmb3IgZXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgdGhlIG1lbnUgYW5kIGZvcm0gc3Vic3lzdGVtPC9FTT48L0ZPTlQ+Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gPGI+cmFuZ2U8L2I+IC0xNCAuLiAwOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRXRpX0Vycm9yOiB0eXBlIGZvciBlcnJvciBjb2RlcyByZXR1cm5lZCBieSB0aGUgbWVudSBhbmQgZm9ybSBzdWJzeXN0ZW08L0VNPjwvc3Bhbj4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MV85Ij5FdGlfRXJyb3I8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Ml83Ij5FX0N1cnJlbnQ8L0E+PC9zcGFuPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83M183Ij5FX0ludmFsaWRfRmllbGQ8L0E+PC9zcGFuPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NF83Ij5FX1JlcXVlc3RfRGVuaWVkPC9BPjwvc3Bhbj4sCisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfNyI+RV9Ob3RfQ29ubmVjdGVkPC9BPjwvc3Bhbj4sCisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfNyI+RV9Ob3RfU2VsZWN0YWJsZTwvQT48L3NwYW4+LAorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3XzciPkVfTm9fTWF0Y2g8L0E+PC9zcGFuPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OF83Ij5FX1Vua25vd25fQ29tbWFuZDwvQT48L3NwYW4+LAorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5XzciPkVfTm90X1Bvc3RlZDwvQT48L3NwYW4+LAorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwXzciPkVfTm9fUm9vbTwvQT48L3NwYW4+LAorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxXzciPkVfQmFkX1N0YXRlPC9BPjwvc3Bhbj4sCisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODJfNyI+RV9Db25uZWN0ZWQ8L0E+PC9zcGFuPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84M183Ij5FX1Bvc3RlZDwvQT48L3NwYW4+LAorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzciPkVfQmFkX0FyZ3VtZW50PC9BPjwvc3Bhbj4sCisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODVfNyI+RV9TeXN0ZW1fRXJyb3I8L0E+PC9zcGFuPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Nl83Ij5FX09rPC9BPjwvc3Bhbj4pOwogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwXzQiPkVfT2s8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSAwOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MV80Ij5FX1N5c3RlbV9FcnJvcjwvQT48L0ZPTlQ+ICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzQiPkVfQmFkX0FyZ3VtZW50PC9BPjwvRk9OVD4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSAtMjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODNfNCI+RV9Qb3N0ZWQ8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IC0zOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NF80Ij5FX0Nvbm5lY3RlZDwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1XzQiPkVfQmFkX1N0YXRlPC9BPjwvRk9OVD4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSAtNTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODZfNCI+RV9Ob19Sb29tPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IC02OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84N180Ij5FX05vdF9Qb3N0ZWQ8L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4XzQiPkVfVW5rbm93bl9Db21tYW5kPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSAtODsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODlfNCI+RV9Ob19NYXRjaDwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IC05OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MF80Ij5FX05vdF9TZWxlY3RhYmxlPC9BPjwvRk9OVD4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTEwOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MV80Ij5FX05vdF9Db25uZWN0ZWQ8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTExOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Ml80Ij5FX1JlcXVlc3RfRGVuaWVkPC9BPjwvRk9OVD4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTEyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85M180Ij5FX0ludmFsaWRfRmllbGQ8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTEzOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NF80Ij5FX0N1cnJlbnQ8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gLTE0OworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl85NF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl85NF8yOSI+Q29kZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRG8gbm90aGluZyBpZiBDb2RlID0gRV9Pay48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEVsc2UgZGlzcGF0Y2ggdGhlIGVycm9yIGNvZGUgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24uPC9FTT48L3NwYW4+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzk0XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl85NF8yOSI+Q29kZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgRGlzcGF0Y2ggdGhlIGVycm9yIGNvZGUgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb248L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNvbWUgaGVscGVyczwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IENodHlwZV9Ub19BdHRyQ2hhciA8Yj5pczwvYj4gPGI+bmV3PC9iPgotICAgICA8QSBIUkVGPSJ1bmNoY29udl9fYWRzLmh0bSNyZWZfMjBfMTAiPlVuY2hlY2tlZF9Db252ZXJzaW9uPC9BPiAoPEEgSFJFRj0idW5jaGNvbnZfX2Fkcy5odG0jcmVmXzE3XzkiPlNvdXJjZTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ1bmNoY29udl9fYWRzLmh0bSNyZWZfMThfOSI+VGFyZ2V0PC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxiPmZ1bmN0aW9uPC9iPiBBdHRyQ2hhcl9Ub19DaHR5cGUgPGI+aXM8L2I+IDxiPm5ldzwvYj4KLSAgICAgPEEgSFJFRj0idW5jaGNvbnZfX2Fkcy5odG0jcmVmXzIwXzEwIj5VbmNoZWNrZWRfQ29udmVyc2lvbjwvQT4gKDxBIEhSRUY9InVuY2hjb252X19hZHMuaHRtI3JlZl8xN185Ij5Tb3VyY2U8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ1bmNoY29udl9fYWRzLmh0bSNyZWZfMThfOSI+VGFyZ2V0PC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzQ0XzE0Ij5GaWxsX1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl80NF8yNyI+Q3A8L0E+PC9zcGFuPiAgOiBjaGFyc19wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85M18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzQ1XzI3Ij5TdHI8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEZpbGwgdGhlIFN0ciBwYXJhbWV0ZXIgd2l0aCB0aGUgc3RyaW5nIGRlbm90ZWQgYnkgdGhlIGNoYXJzX3B0cjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQy1TdHlsZSBzdHJpbmcuPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiBBdHRyQ2hhcl9Ub19BdHRyVHlwZSA8Yj5pczwvYj4gPGI+bmV3PC9iPgotICAgICA8QSBIUkVGPSJ1bmNoY29udl9fYWRzLmh0bSNyZWZfMjBfMTAiPlVuY2hlY2tlZF9Db252ZXJzaW9uPC9BPiAoPEEgSFJFRj0idW5jaGNvbnZfX2Fkcy5odG0jcmVmXzE3XzkiPlNvdXJjZTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InVuY2hjb252X19hZHMuaHRtI3JlZl8xOF85Ij5UYXJnZXQ8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NF8xMiI+Q19BdHRyVHlwZTwvQT4pOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2FkYi5odG0jcmVmXzczXzEzIj5GaWxsX1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl83M18yNiI+Q3A8L0E+PC9zcGFuPiA6IGNoYXJzX3B0cikgPGI+cmV0dXJuPC9iPiBTdHJpbmc7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBTYW1lIGJ1dCBhcyBmdW5jdGlvbi48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IEF0dHJUeXBlX1RvX0F0dHJDaGFyIDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIDxBIEhSRUY9InVuY2hjb252X19hZHMuaHRtI3JlZl8yMF8xMCI+VW5jaGVja2VkX0NvbnZlcnNpb248L0E+ICg8QSBIUkVGPSJ1bmNoY29udl9fYWRzLmh0bSNyZWZfMTdfOSI+U291cmNlPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjRfMTIiPkNfQXR0clR5cGU8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idW5jaGNvbnZfX2Fkcy5odG0jcmVmXzE4XzkiPlRhcmdldDwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPik7Ci0KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl80NF8xNCI+RmlsbF9TdHJpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl80NF8yNyI+Q3A8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIGNoYXJzX3B0cjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZGIuaHRtI3JlZl80NV8yNyI+U3RyPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEZpbGwgdGhlIFN0ciBwYXJhbWV0ZXIgd2l0aCB0aGUgc3RyaW5nIGRlbm90ZWQgYnkgdGhlIGNoYXJzX3B0cjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBDLVN0eWxlIHN0cmluZy48L0VNPjwvRk9OVD4KLQotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNzNfMTMiPkZpbGxfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRiLmh0bSNyZWZfNzNfMjYiPkNwPC9BPjwvRk9OVD4gOiBjaGFyc19wdHIpIDxiPnJldHVybjwvYj4gU3RyaW5nOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBTYW1lIGJ1dCBhcyBmdW5jdGlvbi48L0VNPjwvRk9OVD4KLQotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworPGI+cHJpdmF0ZTwvYj4KKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT4nU2l6ZSA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+J1NpemU7CisgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+KTsKKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT4gPGI+dXNlPC9iPgorICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzciPkVfQ3VycmVudDwvQT4gICAgICAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzk0XzQiPkVfQ1VSUkVOVDwvQT4sCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzNfNyI+RV9JbnZhbGlkX0ZpZWxkPC9BPiAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfOTNfNCI+RV9JTlZBTElEX0ZJRUxEPC9BPiwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NF83Ij5FX1JlcXVlc3RfRGVuaWVkPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl85Ml80Ij5FX1JFUVVFU1RfREVOSUVEPC9BPiwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV83Ij5FX05vdF9Db25uZWN0ZWQ8L0E+ICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl85MV80Ij5FX05PVF9DT05ORUNURUQ8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc2XzciPkVfTm90X1NlbGVjdGFibGU8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzkwXzQiPkVfTk9UX1NFTEVDVEFCTEU8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc3XzciPkVfTm9fTWF0Y2g8L0E+ICAgICAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzg5XzQiPkVfTk9fTUFUQ0g8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzciPkVfVW5rbm93bl9Db21tYW5kPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzg4XzQiPkVfVU5LTk9XTl9DT01NQU5EPC9BPiwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OV83Ij5FX05vdF9Qb3N0ZWQ8L0E+ICAgICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl84N180Ij5FX05PVF9QT1NURUQ8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzciPkVfTm9fUm9vbTwvQT4gICAgICAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzg2XzQiPkVfTk9fUk9PTTwvQT4sCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODFfNyI+RV9CYWRfU3RhdGU8L0E+ICAgICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfODVfNCI+RV9CQURfU1RBVEU8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgyXzciPkVfQ29ubmVjdGVkPC9BPiAgICAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzg0XzQiPkVfQ09OTkVDVEVEPC9BPiwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84M183Ij5FX1Bvc3RlZDwvQT4gICAgICAgICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl84M180Ij5FX1BPU1RFRDwvQT4sCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODRfNyI+RV9CYWRfQXJndW1lbnQ8L0E+ICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfODJfNCI+RV9CQURfQVJHVU1FTlQ8L0E+LAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg1XzciPkVfU3lzdGVtX0Vycm9yPC9BPiAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzgxXzQiPkVfU1lTVEVNX0VSUk9SPC9BPiwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84Nl83Ij5FX09rPC9BPiAgICAgICAgICAgICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl84MF80Ij5FX09LPC9BPik7Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bQppbmRleCBkZmI1MGE5Li5lYjk0MDA2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bQpAQCAtMSw3MiArMSw3NiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5BbHBoYSAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjkgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwOC8wNy8yNiAxODo1MDoyNSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTMgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYTwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ5XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80OV8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl81MF8zMCI+VHlwPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDRfOSI+QWxwaGFfRmllbGQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ5XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ5XzMwIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl81MF8zMCI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80NF85Ij5BbHBoYV9GaWVsZDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfNyI+Q19BbHBoYV9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80OV83Ij5DX0FscGhhX0ZpZWxkX1R5cGU8L0E+LCAiVFlQRV9BTFBIQSIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNiI+U2V0X0ZsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDlfMTYiPkY8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80OV8zMCI+RmxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80OV8xNiI+QXJnMTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9hbHBoYSIpOwogCi0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8xNiI+U2V0X0ZsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzUyXzE2Ij5GPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDlfMzAiPkZsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzUyXzE2Ij5DZnQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80OV83Ij5DX0FscGhhX0ZpZWxkX1R5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl81Ml8xNiI+QXJnMTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7Ci0KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzU3XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNTJfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzU0XzMwIj5BcmcxPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl81MF8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80Nl85Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPikpOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzU3XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl81N183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80OV8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNTBfMzAiPlR5cDwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDlfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzUwXzMwIj5BcmcxPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl81MF8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80Nl85Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPikpKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1Ml8xNCI+V3JhcF9CdWlsdGluPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDlfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzUwXzMwIj5UeXA8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDlfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDFfNTMiPkFscGhhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtCmluZGV4IDkxMWEyNGMuLmFiMzQyN2EgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtCkBAIC0xLDU5ICsxLDcxIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYS5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGEuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MV81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDRfNTgiPkFscGhhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80MV81MyI+QWxwaGE8L0E+KTsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5BbHBoYSAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxXzUzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80NF81OCI+QWxwaGE8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYTwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiPkFscGhhX0ZpZWxkPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTJfOSI+RmllbGRfVHlwZTwvQT4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF85Ij5BbHBoYV9GaWVsZDwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+CiAgICAgIDxiPndpdGg8L2I+IDxiPnJlY29yZDwvYj4KLSAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl85Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPjwvRk9OVD4gOiBOYXR1cmFsIDo9IDA7CisgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl85Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDA7CiAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZGIuaHRtI3JlZl80Nl8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDZfMzAiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ0XzkiPkFscGhhX0ZpZWxkPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDZfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRiLmh0bSNyZWZfNDZfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2FkYi5odG0jcmVmXzQ3XzMwIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFfX2Fkcy5odG0jcmVmXzQ0XzkiPkFscGhhX0ZpZWxkPC9BPik7CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoU2V0X0ZpZWxkX1R5cGUpOwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYV9fYWRzLmh0bSNyZWZfNDFfNTMiPkFscGhhPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhX19hZHMuaHRtI3JlZl80MV81MyI+QWxwaGE8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bQppbmRleCA2ZDlmZjBkLi4xNWI0NTUzIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZGIuaHRtCkBAIC0xLDcyICsxLDc2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhTnVtZXJpYyAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjkgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwOC8wNy8yNiAxODo1MDoxNSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuQWxwaGFOdW1lcmljICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTMgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+QWxwaGFOdW1lcmljPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYU51bWVyaWM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTBfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MF8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80NV85Ij5BbHBoYU51bWVyaWNfRmllbGQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MF8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTBfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MV8zMCI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNDVfOSI+QWxwaGFOdW1lcmljX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV83Ij5DX0FscGhhTnVtZXJpY19GaWVsZF9UeXBlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDlfNyI+Q19BbHBoYU51bWVyaWNfRmllbGRfVHlwZTwvQT4sICJUWVBFX0FMTlVNIik7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDlfMTYiPkY8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTBfMzAiPkZsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzQ5XzE2Ij5BcmcxPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlX2FsbnVtIik7CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5GPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzUwXzMwIj5GbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNTJfMTYiPkNmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZGIuaHRtI3JlZl80OV83Ij5DX0FscGhhTnVtZXJpY19GaWVsZF9UeXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKLQotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzU3XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5TZXRfRmxkX1R5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNTRfMzAiPkFyZzE8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MV8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNDdfOSI+TWluaW11bV9GaWVsZF9XaWR0aDwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNTdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZGIuaHRtI3JlZl81N183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTBfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl81MV8zMCI+VHlwPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDlfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZGIuaHRtI3JlZl81MF8zMCI+QXJnMTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzUxXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80N185Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPikpKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1Ml8xNCI+V3JhcF9CdWlsdGluPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzUwXzMwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMzAiPlR5cDwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNTBfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+QWxwaGFOdW1lcmljPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNDFfNTMiPkFscGhhTnVtZXJpYzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtCmluZGV4IDU5NmVlZjIuLmVhMDhjZDIgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0KQEAgLTEsNjAgKzEsNzIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWMuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpYy5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuQWxwaGFOdW1lcmljICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MV81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzQ0XzU4Ij5BbHBoYU51bWVyaWM8L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkFscGhhTnVtZXJpYyAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxXzUzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDRfNTgiPkFscGhhTnVtZXJpYzwvQT48L3NwYW4+IDxiPmlzPC9iPgogICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUKLSAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYU51bWVyaWM8L0E+KTsKKyAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5BbHBoYU51bWVyaWM8L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NV85Ij5BbHBoYU51bWVyaWNfRmllbGQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzkiPkFscGhhTnVtZXJpY19GaWVsZDwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+CiAgICAgIDxiPndpdGg8L2I+IDxiPnJlY29yZDwvYj4KLSAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N185Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPjwvRk9OVD4gOiBOYXR1cmFsIDo9IDA7CisgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N185Ij5NaW5pbXVtX0ZpZWxkX1dpZHRoPC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDA7CiAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDZfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZGIuaHRtI3JlZl80Nl8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80NV85Ij5BbHBoYU51bWVyaWNfRmllbGQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDZfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2FkYi5odG0jcmVmXzQ2XzMwIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1hbHBoYW51bWVyaWNfX2Fkcy5odG0jcmVmXzQ1XzkiPkFscGhhTnVtZXJpY19GaWVsZDwvQT4pOwogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtYWxwaGFudW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+QWxwaGFOdW1lcmljPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWFscGhhbnVtZXJpY19fYWRzLmh0bSNyZWZfNDFfNTMiPkFscGhhTnVtZXJpYzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtCmluZGV4IDU4N2MzOTMuLjM0NmJjNzQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0KQEAgLTEsNzMgKzEsODUgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYS5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5FbnVtZXJhdGlvbi5BZGEgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNC8wOC8yMSAyMTozNzowMCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5FbnVtZXJhdGlvbi5BZGEgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTEvMDMvMjIgMjM6MzY6MjAgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7IDxiPnVzZTwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNDNfNTMiPkVudW1lcmF0aW9uPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzcwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDRfNjUiPkFkYTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF83MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ0XzY1Ij5BZGE8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80OF8xMyI+Q3JlYXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80OF8yMSI+U2V0PC9BPjwvRk9OVD4gICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzUwXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81MF80NiI+TWl4ZWRfQ2FzZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80OV8yMSI+Q2FzZV9TZW5zaXRpdmU8L0E+PC9GT05UPiA6IEJvb2xlYW4gIDo9IEZhbHNlOwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTBfMjEiPk11c3RfQmVfVW5pcXVlPC9BPjwvRk9OVD4gOiBCb29sZWFuICA6PSBGYWxzZSkKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80OF8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ4XzIxIj5TZXQ8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTBfOSI+VHlwZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzUwXzQ2Ij5NaXhlZF9DYXNlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDlfMjEiPkNhc2VfU2Vuc2l0aXZlPC9BPjwvc3Bhbj4gOiBCb29sZWFuICA6PSBGYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTBfMjEiPk11c3RfQmVfVW5pcXVlPC9BPjwvc3Bhbj4gOiBCb29sZWFuICA6PSBGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82Ml85Ij5FbnVtZXJhdGlvbl9GaWVsZDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83Ij5JPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV85Ij5FbnVtZXJhdGlvbl9JbmZvPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQyXzkiPlQ8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQyXzkiPlQ8L0E+J0xhc3QpIC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQyXzkiPlQ8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQyXzkiPlQ8L0E+J0ZpcnN0KSArIDEpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83Ij5KPC9BPjwvRk9OVD4gOiBQb3NpdGl2ZSA6PSAxOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciPkk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU1XzkiPkVudW1lcmF0aW9uX0luZm88L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4nTGFzdCkgLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4nRmlyc3QpICsgMSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyI+SjwvQT48L3NwYW4+IDogUG9zaXRpdmUgOj0gMTsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU4XzEwIj5DYXNlX1NlbnNpdGl2ZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ5XzIxIj5DYXNlX1NlbnNpdGl2ZTwvQT47CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTFfNyI+STwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTlfMTAiPk1hdGNoX011c3RfQmVfVW5pcXVlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTBfMjEiPk11c3RfQmVfVW5pcXVlPC9BPjsKIAotICAgICAgPGI+Zm9yPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzExIj5FPC9BPjwvRk9OVD4gPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80Ml85Ij5UPC9BPic8Yj5SYW5nZTwvYj4gPGI+bG9vcDwvYj4KKyAgICAgIDxiPmZvcjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzExIj5FPC9BPjwvc3Bhbj4gPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80Ml85Ij5UPC9BPic8Yj5SYW5nZTwvYj4gPGI+bG9vcDwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81MV83Ij5JPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81N18xMCI+TmFtZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTJfNyI+SjwvQT4pIDo9IDxiPm5ldzwvYj4gU3RyaW5nJyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4nSW1hZ2UgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81N18xMSI+RTwvQT4pKTsKLSAgICAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIEltYWdlIGF0dHJpYnV0ZSBkZWZhdWx0cyB0byB1cHBlciBjYXNlLCBzbyB3ZSBoYXZlIHRvIGhhbmRsZTwvRU0+PC9GT05UPgotICAgICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBvbmx5IHRoZSBvdGhlciBvbmVzLi4uPC9FTT48L0ZPTlQ+CisgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgSW1hZ2UgYXR0cmlidXRlIGRlZmF1bHRzIHRvIHVwcGVyIGNhc2UsIHNvIHdlIGhhdmUgdG8gaGFuZGxlPC9FTT48L3NwYW4+CisgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBvbmx5IHRoZSBvdGhlciBvbmVzLi4uPC9FTT48L3NwYW4+CiAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ4XzIxIj5TZXQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzUwXzM0Ij5VcHBlcl9DYXNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikuPGI+YWxsPC9iPiA6PSBUb19Mb3dlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikuPGI+YWxsPC9iPik7CiAgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ4XzIxIj5TZXQ8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTBfNDYiPk1peGVkX0Nhc2U8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTFfNyI+STwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTdfMTAiPk5hbWVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUyXzciPko8L0E+KSg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTFfNyI+STwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTdfMTAiPk5hbWVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUyXzciPko8L0E+KS48Yj5hbGw8L2I+J0ZpcnN0KSA6PQotICAgICAgICAgICAgICAgICBUb19VcHBlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikuPGI+YWxsPC9iPidGaXJzdCkpOworICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikuPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81Ml83Ij5KPC9BPikuPGI+YWxsPC9iPidGaXJzdCkgOj0KKyAgICAgICAgICAgICAgICAgVG9fVXBwZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81MV83Ij5JPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81N18xMCI+TmFtZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTJfNyI+SjwvQT4pLjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl81MV83Ij5JPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81N18xMCI+TmFtZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTJfNyI+SjwvQT4pLjxiPmFsbDwvYj4nRmlyc3QpKTsKICAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNTJfNyI+SjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUyXzciPko8L0E+ICsgMTsKQEAgLTc2LDEyICs4OCwxMiBAQAogICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8xMyI+Q3JlYXRlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzUxXzciPkk8L0E+LCBUcnVlKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ4XzEzIj5DcmVhdGU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzUzXzEzIj5WYWx1ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTNfMjAiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzVfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl81NF8yMCI+QnVmPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80Ml85Ij5UPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzUzXzEzIj5WYWx1ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl81M18yMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTRfMjAiPkJ1ZjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80Ml85Ij5UPC9BPidWYWx1ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzY4XzEzIj5HZXRfQnVmZmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzUzXzIwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTRfMjAiPkJ1ZjwvQT4pKTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQyXzkiPlQ8L0E+J1ZhbHVlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjlfMTMiPkdldF9CdWZmZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTNfMjAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl81NF8yMCI+QnVmPC9BPikpOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNTNfMTMiPlZhbHVlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ0XzY1Ij5BZGE8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ0XzY1Ij5BZGE8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bQppbmRleCBjZDJiNGQ2Li5lMTdmYWNhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtCkBAIC0xLDY1ICsxLDc3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYS5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGEuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYS5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuRW51bWVyYXRpb24uQWRhICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEwIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkVudW1lcmF0aW9uLkFkYSAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj5nZW5lcmljPC9iPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Ml85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDRfNjUiPlQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gKCZsdDsmZ3Q7KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Ml85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDRfNjUiPlQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gKCZsdDsmZ3Q7KTsKIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl80NF83MCI+QWRhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzY1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNDRfNzAiPkFkYTwvQT48L3NwYW4+IDxiPmlzPC9iPgogICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUKLSAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNDNfNTMiPkVudW1lcmF0aW9uPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDRfNjUiPkFkYTwvQT4pOworICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80NF82NSI+QWRhPC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNDZfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNDZfMjEiPlNldDwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81MF85Ij5UeXBlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTBfNDYiPk1peGVkX0Nhc2U8L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNDdfMjEiPkNhc2VfU2Vuc2l0aXZlPC9BPjwvRk9OVD4gOiBCb29sZWFuICA6PSBGYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzQ4XzIxIj5NdXN0X0JlX1VuaXF1ZTwvQT48L0ZPTlQ+IDogQm9vbGVhbiAgOj0gRmFsc2UpCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNDZfMTMiPkNyZWF0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl80Nl8yMSI+U2V0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzUwXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81MF80NiI+TWl4ZWRfQ2FzZTwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzQ3XzIxIj5DYXNlX1NlbnNpdGl2ZTwvQT48L3NwYW4+IDogQm9vbGVhbiAgOj0gRmFsc2U7CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzQ4XzIxIj5NdXN0X0JlX1VuaXF1ZTwvQT48L3NwYW4+IDogQm9vbGVhbiAgOj0gRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzc0XzEzIj5WYWx1ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNzRfMjAiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl83NV8yMCI+QnVmPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZHMuaHRtI3JlZl80Ml85Ij5UPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVHJhbnNsYXRlIHRoZSBjb250ZW50IG9mIHRoZSBmaWVsZHMgYnVmZmVyIC0gaW5kaWNhdGVkIGJ5IHRoZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBidWZmZXIgbnVtYmVyIC0gaW50byBhbiBlbnVtZXJhdGlvbiB2YWx1ZS4gSWYgdGhlIGJ1ZmZlciBpcyBlbXB0eTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBvciB0aGUgY29udGVudCBpcyBpbnZhbGlkLCBhIENvbnN0cmFpbnRfRXJyb3IgaXMgcmFpc2VzLjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2FkYi5odG0jcmVmXzc0XzEzIj5WYWx1ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24tYWRhX19hZGIuaHRtI3JlZl83NF8yMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRiLmh0bSNyZWZfNzVfMjAiPkJ1ZjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLWFkYV9fYWRzLmh0bSNyZWZfNDJfOSI+VDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUcmFuc2xhdGUgdGhlIGNvbnRlbnQgb2YgdGhlIGZpZWxkcyBidWZmZXIgLSBpbmRpY2F0ZWQgYnkgdGhlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBidWZmZXIgbnVtYmVyIC0gaW50byBhbiBlbnVtZXJhdGlvbiB2YWx1ZS4gSWYgdGhlIGJ1ZmZlciBpcyBlbXB0eTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgb3IgdGhlIGNvbnRlbnQgaXMgaW52YWxpZCwgYSBDb25zdHJhaW50X0Vycm9yIGlzIHJhaXNlcy48L0VNPjwvc3Bhbj4KIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ0XzY1Ij5BZGE8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi1hZGFfX2Fkcy5odG0jcmVmXzQ0XzY1Ij5BZGE8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0KaW5kZXggOTQ4YWEzYS4uZTRkNzVkZCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0KQEAgLTEsMTI1ICsxLDEzMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkVudW1lcmF0aW9uICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjcgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkVudW1lcmF0aW9uICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzU4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzU4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzEzIj5DcmVhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjRfMjEiPkluZm88L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTVfOSI+RW51bWVyYXRpb25fSW5mbzwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY1XzIxIj5BdXRvX1JlbGVhc2VfTmFtZXM8L0E+PC9GT05UPiA6IEJvb2xlYW4gOj0gRmFsc2UpCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjRfMjEiPkluZm88L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTVfOSI+RW51bWVyYXRpb25fSW5mbzwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjVfMjEiPkF1dG9fUmVsZWFzZV9OYW1lczwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82Ml85Ij5FbnVtZXJhdGlvbl9GaWVsZDwvQT4KICAgIDxiPmlzPC9iPgogICAgICAgPGI+cHJvY2VkdXJlPC9iPiBSZWxlYXNlX1N0cmluZyA8Yj5pczwvYj4KICAgICAgICAgPGI+bmV3PC9iPiBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbiAoU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQ3XzkiPlN0cmluZ19BY2Nlc3M8L0E+KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyI+RTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5MPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gc2l6ZV90IDo9IDEgKyBzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzIxIj5JbmZvPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV8yNyI+QzwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183Ij5TPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80N185Ij5TdHJpbmdfQWNjZXNzPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NV83Ij5FPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82Ml85Ij5FbnVtZXJhdGlvbl9GaWVsZDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyI+TDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IHNpemVfdCA6PSAxICsgc2l6ZV90ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8yMSI+SW5mbzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTVfMjciPkM8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183Ij5TPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80N185Ij5TdHJpbmdfQWNjZXNzPC9BPjsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNTVfNyI+RTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfOTNfMTAiPkNhc2VfU2Vuc2l0aXZlPC9BPiAgICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8yMSI+SW5mbzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNThfMTAiPkNhc2VfU2Vuc2l0aXZlPC9BPjsKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzU1XzciPkU8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzk0XzEwIj5NYXRjaF9NdXN0X0JlX1VuaXF1ZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjRfMjEiPkluZm88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU5XzEwIj5NYXRjaF9NdXN0X0JlX1VuaXF1ZTwvQT47CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81NV83Ij5FPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPiA6PSA8Yj5uZXc8L2I+IGNoYXJzX3B0cl9hcnJheSAoc2l6ZV90ICgxKSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81Nl83Ij5MPC9BPik7Ci0gICAgICA8Yj5mb3I8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfMTEiPkk8L0E+PC9GT05UPiA8Yj5pbjwvYj4gMSAuLiBQb3NpdGl2ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNTZfNyI+TDwvQT4gLSAxKSA8Yj5sb29wPC9iPgorICAgICAgPGI+Zm9yPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfMTEiPkk8L0E+PC9zcGFuPiA8Yj5pbjwvYj4gMSAuLiBQb3NpdGl2ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNTZfNyI+TDwvQT4gLSAxKSA8Yj5sb29wPC9iPgogICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzIxIj5JbmZvPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81N18xMCI+TmFtZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl82Ml8xMSI+STwvQT4pID0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzU1XzciPkU8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzU1XzciPkFycjwvQT4gKHNpemVfdCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNjJfMTEiPkk8L0E+KSkgOj0gTmV3X1N0cmluZyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjRfMjEiPkluZm88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU3XzEwIj5OYW1lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzYyXzExIj5JPC9BPikuPGI+YWxsPC9iPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81NV83Ij5FPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPi48Yj5hbGw8L2I+IChzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzYyXzExIj5JPC9BPikpIDo9IE5ld19TdHJpbmcgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzIxIj5JbmZvPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81N18xMCI+TmFtZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl82Ml8xMSI+STwvQT4pLjxiPmFsbDwvYj4pOwogICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY1XzIxIj5BdXRvX1JlbGVhc2VfTmFtZXM8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81N183Ij5TPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8yMSI+SW5mbzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTdfMTAiPk5hbWVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNjJfMTEiPkk8L0E+KTsKICAgICAgICAgICAgIFJlbGVhc2VfU3RyaW5nICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81N183Ij5TPC9BPik7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+bG9vcDwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81NV83Ij5FPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81NV83Ij5BcnI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81Nl83Ij5MPC9BPikgOj0gTnVsbF9QdHI7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81NV83Ij5FPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl81Nl83Ij5MPC9BPikgOj0gTnVsbF9QdHI7CiAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzU1XzciPkU8L0E+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82NF8xMyI+Q3JlYXRlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl83N18xNCI+UmVsZWFzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl83N18yMyI+RW51bTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzc3XzE0Ij5SZWxlYXNlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNzdfMjMiPkVudW08L0E+PC9zcGFuPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OF83Ij5JPC9BPjwvRk9OVD4gOiBzaXplX3QgOj0gMDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzlfNyI+UDwvQT48L0ZPTlQ+IDogY2hhcnNfcHRyOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzciPkk8L0E+PC9zcGFuPiA6IHNpemVfdCA6PSAwOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5XzciPlA8L0E+PC9zcGFuPiA6IGNoYXJzX3B0cjsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgPGI+bG9vcDwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc5XzciPlA8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzc3XzIzIj5FbnVtPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNzhfNyI+STwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNzlfNyI+UDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNzdfMjMiPkVudW08L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzk1XzEwIj5BcnI8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc4XzciPkk8L0E+KTsKICAgICAgICAgIDxiPmV4aXQ8L2I+IDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc5XzciPlA8L0E+ID0gTnVsbF9QdHI7CiAgICAgICAgICBGcmVlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl83OV83Ij5QPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl83N18yMyI+RW51bTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfOTVfMTAiPkFycjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc4XzciPkk8L0E+KSA6PSBOdWxsX1B0cjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzc3XzIzIj5FbnVtPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl83OF83Ij5JPC9BPikgOj0gTnVsbF9QdHI7CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl83OF83Ij5JPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl83OF83Ij5JPC9BPiArIDE7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNzdfMjMiPkVudW08L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzk1XzEwIj5BcnI8L0E+IDo9IDxiPm51bGw8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl83N18xNCI+UmVsZWFzZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg0XzMwIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg1XzMwIj5UeXA8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82Ml85Ij5FbnVtZXJhdGlvbl9GaWVsZDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg1XzMwIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NF83Ij5DX0VudW1fVHlwZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTRfNyI+Q19FbnVtX1R5cGU8L0E+LCAiVFlQRV9FTlVNIik7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0XzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85NF8xNiI+RjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg0XzMwIj5GbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk0XzE2Ij5BcmcxPC9BPjwvc3Bhbj4gOiBjaGFyc19wdHJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Nl8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTRfMTYiPkFyZzI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ3XzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTRfMTYiPkFyZzM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ3XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CisgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGVfZW51bSIpOwogCi0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85N18xNiI+U2V0X0ZsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk3XzE2Ij5GPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMzAiPkZsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk3XzE2Ij5DZnQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85NF83Ij5DX0VudW1fVHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTlfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk3XzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiBjaGFyc19wdHJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85N18xNiI+QXJnMjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk3XzE2Ij5BcmczPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKLQotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDRfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl84NV8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85NV8xMCI+QXJyPC9BPiA9IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjg2XzQiPkZvcm1fRXhjZXB0aW9uPC9BPjsKKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl8xMDRfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85N18xNiI+U2V0X0ZsZF9UeXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTlfMzAiPkFyZzE8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg1XzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzk1XzEwIj5BcnI8L0E+LjxiPmFsbDwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl8xMDBfMzAiPkFyZzI8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl84NV8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl85M18xMCI+Q2FzZV9TZW5zaXRpdmU8L0E+KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl8xMDFfMzAiPkFyZzM8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODVfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfOTRfMTAiPk1hdGNoX011c3RfQmVfVW5pcXVlPC9BPikpKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl8xMDRfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzEwNF83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl84NF8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODVfMzAiPlR5cDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OV8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+CisgICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85NF8xNiI+U2V0X0ZsZF9UeXBlPC9BPgorICAgICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTVfMzAiPkFyZzE8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg1XzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzk1XzEwIj5BcnI8L0E+LjxiPmFsbDwvYj4sCisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85Nl8zMCI+QXJnMjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg1XzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzkzXzEwIj5DYXNlX1NlbnNpdGl2ZTwvQT4pKSwKKyAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzk3XzMwIj5BcmczPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODVfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfOTRfMTAiPk1hdGNoX011c3RfQmVfVW5pcXVlPC9BPikpKSk7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMTQiPldyYXBfQnVpbHRpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg0XzMwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl84NV8zMCI+VHlwPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUwXzEzIj5DX0Nob2ljZV9Sb3V0ZXI8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfODRfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNDNfNTMiPkVudW1lcmF0aW9uPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtCmluZGV4IDEzMjJiZmUuLmQ3MTgwYjYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtCkBAIC0xLDEwNCArMSwxMTYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbi5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb24uYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuRW51bWVyYXRpb24gICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5FbnVtZXJhdGlvbiAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80M181MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNDZfNTgiPkVudW1lcmF0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80M181MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNDZfNTgiPkVudW1lcmF0aW9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZQotICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl80M181MyI+RW51bWVyYXRpb248L0E+KTsKKyAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNDNfNTMiPkVudW1lcmF0aW9uPC9BPik7CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfOSI+U3RyaW5nX0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IFN0cmluZzsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N185Ij5TdHJpbmdfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gU3RyaW5nOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFR5cGVfU2V0IGlzIHVzZWQgYnkgdGhlIGNoaWxkIHBhY2thZ2UgQWRhPC9FTT48L0ZPTlQ+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzkiPlR5cGVfU2V0PC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzIyIj5Mb3dlcl9DYXNlPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMzQiPlVwcGVyX0Nhc2U8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF80NiI+TWl4ZWRfQ2FzZTwvQT48L0ZPTlQ+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFR5cGVfU2V0IGlzIHVzZWQgYnkgdGhlIGNoaWxkIHBhY2thZ2UgQWRhPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfOSI+VHlwZV9TZXQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8yMiI+TG93ZXJfQ2FzZTwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMzQiPlVwcGVyX0Nhc2U8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzQ2Ij5NaXhlZF9DYXNlPC9BPjwvc3Bhbj4pOwogCiAgICA8Yj50eXBlPC9iPiBFbnVtX0FycmF5IDxiPmlzPC9iPiA8Yj5hcnJheTwvYj4gKFBvc2l0aXZlIDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykKICAgICAgPGI+b2Y8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQ3XzkiPlN0cmluZ19BY2Nlc3M8L0E+OwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzkiPkVudW1lcmF0aW9uX0luZm88L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTVfOSI+QzwvQT48L0ZPTlQ+IDogUG9zaXRpdmUpIDxiPmlzPC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzkiPkVudW1lcmF0aW9uX0luZm88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV85Ij5DPC9BPjwvc3Bhbj4gOiBQb3NpdGl2ZSkgPGI+aXM8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzEwIj5OYW1lczwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogRW51bV9BcnJheSAoMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV8yNyI+QzwvQT4pOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xMCI+Q2FzZV9TZW5zaXRpdmU8L0E+PC9GT05UPiAgICAgICA6IEJvb2xlYW4gOj0gRmFsc2U7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzEwIj5NYXRjaF9NdXN0X0JlX1VuaXF1ZTwvQT48L0ZPTlQ+IDogQm9vbGVhbiA6PSBGYWxzZTsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N18xMCI+TmFtZXM8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IEVudW1fQXJyYXkgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNTVfMjciPkM8L0E+KTsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF8xMCI+Q2FzZV9TZW5zaXRpdmU8L0E+PC9zcGFuPiAgICAgICA6IEJvb2xlYW4gOj0gRmFsc2U7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMTAiPk1hdGNoX011c3RfQmVfVW5pcXVlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTJfOSI+RmllbGRfVHlwZTwvQT4gPGI+d2l0aDwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81M185Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPiA8Yj5wcml2YXRlPC9iPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzQ4XzEzIj5DcmVhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNDhfMjEiPkluZm88L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzU1XzkiPkVudW1lcmF0aW9uX0luZm88L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl80OV8yMSI+QXV0b19SZWxlYXNlX05hbWVzPC9BPjwvRk9OVD4gOiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNDhfMTMiPkNyZWF0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzQ4XzIxIj5JbmZvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV85Ij5FbnVtZXJhdGlvbl9JbmZvPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl80OV8yMSI+QXV0b19SZWxlYXNlX05hbWVzPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKQogICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTWFrZSBhbiBmaWVsZHR5cGUgZnJvbSB0aGUgaW5mby4gRW51bWVyYXRpb25zIGFyZSBzcGVjaWFsLCBiZWNhdXNlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHRoZXkgbm9ybWFsbHkgZG9uJ3QgY29weSB0aGUgZW51bSB2YWx1ZXMgaW50byBhIHByaXZhdGUgc3RvcmUsIHNvPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHdlIGhhdmUgdG8gY2FyZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpbmZvIHdlIHByb3ZpZGUuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZSBBdXRvX1JlbGVhc2VfTmFtZXMgZmxhZyBtYXkgYmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJlbGVhc2VzPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHRoZSBzdHJpbmdzIGluIHRoZSBOYW1lcyBhcnJheSBvZiB0aGUgRW51bWVyYXRpb25fSW5mby48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE1ha2UgYW4gZmllbGR0eXBlIGZyb20gdGhlIGluZm8uIEVudW1lcmF0aW9ucyBhcmUgc3BlY2lhbCwgYmVjYXVzZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhleSBub3JtYWxseSBkb24ndCBjb3B5IHRoZSBlbnVtIHZhbHVlcyBpbnRvIGEgcHJpdmF0ZSBzdG9yZSwgc288L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHdlIGhhdmUgdG8gY2FyZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpbmZvIHdlIHByb3ZpZGUuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgQXV0b19SZWxlYXNlX05hbWVzIGZsYWcgbWF5IGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSByZWxlYXNlczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhlIHN0cmluZ3MgaW4gdGhlIE5hbWVzIGFycmF5IG9mIHRoZSBFbnVtZXJhdGlvbl9JbmZvLjwvRU0+PC9zcGFuPgogCi0gICA8Yj5mdW5jdGlvbjwvYj4gTWFrZV9FbnVtZXJhdGlvbl9UeXBlICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczXzM2Ij5JbmZvPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV85Ij5FbnVtZXJhdGlvbl9JbmZvPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NF8zNiI+QXV0b19SZWxlYXNlX05hbWVzPC9BPjwvRk9OVD4gOiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+ZnVuY3Rpb248L2I+IE1ha2VfRW51bWVyYXRpb25fVHlwZSAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzM2Ij5JbmZvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl81NV85Ij5FbnVtZXJhdGlvbl9JbmZvPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0XzM2Ij5BdXRvX1JlbGVhc2VfTmFtZXM8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzY0XzEzIj5DcmVhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc2XzE0Ij5SZWxlYXNlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc2XzIzIj5FbnVtPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl82Ml85Ij5FbnVtZXJhdGlvbl9GaWVsZDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCdXQgd2UgbWF5IHdhbnQgdG8gcmVsZWFzZSB0aGUgZmllbGQgdG8gcmVsZWFzZSB0aGUgbWVtb3J5IGFsbG9jYXRlZDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBieSBpdCBpbnRlcm5hbGx5LiBBZnRlciB0aGF0IHRoZSBFbnVtZXJhdGlvbiBmaWVsZCBpcyBubyBsb25nZXIgdXNhYmxlLjwvRU0+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzc2XzE0Ij5SZWxlYXNlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83N18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfNzZfMjMiPkVudW08L0E+PC9zcGFuPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCdXQgd2UgbWF5IHdhbnQgdG8gcmVsZWFzZSB0aGUgZmllbGQgdG8gcmVsZWFzZSB0aGUgbWVtb3J5IGFsbG9jYXRlZDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgYnkgaXQgaW50ZXJuYWxseS4gQWZ0ZXIgdGhhdCB0aGUgRW51bWVyYXRpb24gZmllbGQgaXMgbm8gbG9uZ2VyIHVzYWJsZS48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGUgbmV4dCB0eXBlIGRlZmludGlvbnMgYXJlIGFsbCBuY3Vyc2VzIGV4dGVuc2lvbnMuIFRoZXkgYXJlIHR5cGljYWxseTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBub3QgYXZhaWxhYmxlIGluIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgbmV4dCB0eXBlIGRlZmludGlvbnMgYXJlIGFsbCBuY3Vyc2VzIGV4dGVuc2lvbnMuIFRoZXkgYXJlIHR5cGljYWxseTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgbm90IGF2YWlsYWJsZSBpbiBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb25zLjwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2FkYi5odG0jcmVmXzkxXzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85MV8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85Ml8zMCI+VHlwPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85MV8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZGIuaHRtI3JlZl85MV8zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRiLmh0bSNyZWZfOTJfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+KTsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfRmllbGRfVHlwZSk7CiAKIDxiPnByaXZhdGU8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5XzkiPkNQQV9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzLmNoYXJzX3B0cl9hcnJheTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OV85Ij5DUEFfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5ncy5jaGFyc19wdHJfYXJyYXk7CiAKLSAgIDxiPnR5cGU8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzYyXzkiPkVudW1lcmF0aW9uX0ZpZWxkPC9BPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPgorICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNjJfOSI+RW51bWVyYXRpb25fRmllbGQ8L0E+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+IDxiPndpdGg8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzXzEwIj5DYXNlX1NlbnNpdGl2ZTwvQT48L0ZPTlQ+ICAgICAgIDogQm9vbGVhbiA6PSBGYWxzZTsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTRfMTAiPk1hdGNoX011c3RfQmVfVW5pcXVlPC9BPjwvRk9OVD4gOiBCb29sZWFuIDo9IEZhbHNlOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NV8xMCI+QXJyPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzg5XzkiPkNQQV9BY2Nlc3M8L0E+IDo9IDxiPm51bGw8L2I+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzEwIj5DYXNlX1NlbnNpdGl2ZTwvQT48L3NwYW4+ICAgICAgIDogQm9vbGVhbiA6PSBGYWxzZTsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NF8xMCI+TWF0Y2hfTXVzdF9CZV9VbmlxdWU8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gRmFsc2U7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMTAiPkFycjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWVudW1lcmF0aW9uX19hZHMuaHRtI3JlZl84OV85Ij5DUEFfQWNjZXNzPC9BPiA6PSA8Yj5udWxsPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtZW51bWVyYXRpb25fX2Fkcy5odG0jcmVmXzQzXzUzIj5FbnVtZXJhdGlvbjwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1lbnVtZXJhdGlvbl9fYWRzLmh0bSNyZWZfNDNfNTMiPkVudW1lcmF0aW9uPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtCmluZGV4IDZiYWUxNDkuLmU5NjgzYWIgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtCkBAIC0xLDc2ICsxLDgwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5JbnRGaWVsZCAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuOSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA4LzA3LzI2IDE4OjUwOjA2IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkludEZpZWxkICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDFfNTMiPkludEZpZWxkPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDFfNTMiPkludEZpZWxkPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNTFfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzUxXzMwIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80NF85Ij5JbnRlZ2VyX0ZpZWxkPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81MV8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDRfOSI+SW50ZWdlcl9GaWVsZDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfNyI+Q19JbnRlZ2VyX0ZpZWxkX1R5cGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzQ5XzciPkNfSW50ZWdlcl9GaWVsZF9UeXBlPC9BPiwgIlRZUEVfSU5URUdFUiIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNiI+U2V0X0ZsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDlfMTYiPkY8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80OV8xNiI+QXJnMTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80OV8xNiI+QXJnMjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUyXzEyIj5DX0xvbmdfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80OV8xNiI+QXJnMzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUyXzEyIj5DX0xvbmdfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9pbnRlZ2VyIik7CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMTYiPkY8L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMTYiPkNmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzQ5XzciPkNfSW50ZWdlcl9GaWVsZF9UeXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMTYiPkFyZzE8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzUyXzE2Ij5BcmcyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTdfMTIiPkNfTG9uZ19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl81Ml8xNiI+QXJnMzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU3XzEyIj5DX0xvbmdfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7Ci0KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzU5XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzU0XzMwIj5BcmcxPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80Nl8xMCI+UHJlY2lzaW9uPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl81NV8zMCI+QXJnMjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU3XzEyIj5DX0xvbmdfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDdfMTAiPkxvd2VyX0xpbWl0PC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl81Nl8zMCI+QXJnMzwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU3XzEyIj5DX0xvbmdfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDhfMTAiPlVwcGVyX0xpbWl0PC9BPikpOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzU5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl81OV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDlfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzUwXzMwIj5BcmcxPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80Nl8xMCI+UHJlY2lzaW9uPC9BPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzUxXzMwIj5BcmcyPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTJfMTIiPkNfTG9uZ19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80N18xMCI+TG93ZXJfTGltaXQ8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNTJfMzAiPkFyZzM8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Ml8xMiI+Q19Mb25nX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzQ4XzEwIj5VcHBlcl9MaW1pdDwvQT4pKSk7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMTQiPldyYXBfQnVpbHRpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzUxXzMwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzUxXzE0Ij5TZXRfRmllbGRfVHlwZTwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80MV81MyI+SW50RmllbGQ8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzQxXzUzIj5JbnRGaWVsZDwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bQppbmRleCA3ZGI4YTE0Li42YzBkN2E2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bQpAQCAtMSw2MSArMSw3MyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGQuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZC5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuSW50RmllbGQgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDFfNTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2FkYi5odG0jcmVmXzQ0XzU4Ij5JbnRGaWVsZDwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDFfNTMiPkludEZpZWxkPC9BPik7Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLkludEZpZWxkICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MV81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDRfNTgiPkludEZpZWxkPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZHMuaHRtI3JlZl80MV81MyI+SW50RmllbGQ8L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF85Ij5JbnRlZ2VyX0ZpZWxkPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTJfOSI+RmllbGRfVHlwZTwvQT4gPGI+d2l0aDwvYj4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF85Ij5JbnRlZ2VyX0ZpZWxkPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTNfOSI+RmllbGRfVHlwZTwvQT4gPGI+d2l0aDwvYj4KICAgICAgIDxiPnJlY29yZDwvYj4KLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTAiPlByZWNpc2lvbjwvQT48L0ZPTlQ+ICAgOiBOYXR1cmFsOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18xMCI+TG93ZXJfTGltaXQ8L0E+PC9GT05UPiA6IEludGVnZXI7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEwIj5VcHBlcl9MaW1pdDwvQT48L0ZPTlQ+IDogSW50ZWdlcjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xMCI+UHJlY2lzaW9uPC9BPjwvc3Bhbj4gICA6IE5hdHVyYWw7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMTAiPkxvd2VyX0xpbWl0PC9BPjwvc3Bhbj4gOiBJbnRlZ2VyOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzEwIj5VcHBlcl9MaW1pdDwvQT48L3NwYW4+IDogSW50ZWdlcjsKICAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80Nl8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDZfMzAiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzQ0XzkiPkludGVnZXJfRmllbGQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80Nl8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWludGZpZWxkX19hZGIuaHRtI3JlZl80Nl8zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDRfOSI+SW50ZWdlcl9GaWVsZDwvQT4pOwogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFNldF9GaWVsZF9UeXBlKTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaW50ZmllbGRfX2Fkcy5odG0jcmVmXzQxXzUzIj5JbnRGaWVsZDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pbnRmaWVsZF9fYWRzLmh0bSNyZWZfNDFfNTMiPkludEZpZWxkPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0KaW5kZXggZTY4NDY3Ni4uOWY5ZTA5YyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bQpAQCAtMSw3MiArMSw3NiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5JUFY0X0FkZHJlc3MgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS45IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NDk6NDcgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLklQVjRfQWRkcmVzcyAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEzIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjA1IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzU4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDFfNTMiPklQVjRfQWRkcmVzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80MV81MyI+SVBWNF9BZGRyZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ3XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDdfMzAiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ4XzMwIj5UeXA8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDVfOSI+SW50ZXJuZXRfVjRfQWRkcmVzc19GaWVsZDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ3XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80N18zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ4XzMwIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80NV85Ij5JbnRlcm5ldF9WNF9BZGRyZXNzX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV83Ij5DX0lQVjRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0jcmVmXzQ5XzciPkNfSVBWNF9GaWVsZF9UeXBlPC9BPiwgIlRZUEVfSVBWNCIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNiI+U2V0X0ZsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0jcmVmXzQ5XzE2Ij5GPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ3XzMwIj5GbGQ8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlX2lwdjQiKTsKIAotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMTYiPlNldF9GbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNTJfMTYiPkY8L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDdfMzAiPkZsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl81Ml8xNiI+Q2Z0PC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0jcmVmXzQ5XzciPkNfSVBWNF9GaWVsZF9UeXBlPC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7Ci0KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl81N183Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl81Ml8xNiI+U2V0X0ZsZF9UeXBlPC9BPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNTdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl81N183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDdfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80OF8zMCI+VHlwPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNDlfMTYiPlNldF9GbGRfVHlwZTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUyXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDdfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80OF8zMCI+VHlwPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80N18xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQxXzUzIj5JUFY0X0FkZHJlc3M8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtI3JlZl80MV81MyI+SVBWNF9BZGRyZXNzPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0KaW5kZXggNTdiYWUxOC4uNWEwMjBmMSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bQpAQCAtMSw1NyArMSw2OSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzcy5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3MuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5JUFY0X0FkZHJlc3MgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxXzUzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNDRfNTgiPklQVjRfQWRkcmVzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuSVBWNF9BZGRyZXNzICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDFfNTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl80NF81OCI+SVBWNF9BZGRyZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZQotICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDFfNTMiPklQVjRfQWRkcmVzczwvQT4pOworICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDFfNTMiPklQVjRfQWRkcmVzczwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzkiPkludGVybmV0X1Y0X0FkZHJlc3NfRmllbGQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPiA8Yj5udWxsPC9iPiA8Yj5yZWNvcmQ8L2I+OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzkiPkludGVybmV0X1Y0X0FkZHJlc3NfRmllbGQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81M185Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPiA8Yj5udWxsPC9iPiA8Yj5yZWNvcmQ8L2I+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl80Nl8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0jcmVmXzQ2XzMwIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtaXB2NF9hZGRyZXNzX19hZGIuaHRtI3JlZl80N18zMCI+VHlwPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ1XzkiPkludGVybmV0X1Y0X0FkZHJlc3NfRmllbGQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNDZfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2FkYi5odG0jcmVmXzQ2XzMwIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRiLmh0bSNyZWZfNDdfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQ1XzkiPkludGVybmV0X1Y0X0FkZHJlc3NfRmllbGQ8L0E+KTsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfRmllbGRfVHlwZSk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLWlwdjRfYWRkcmVzc19fYWRzLmh0bSNyZWZfNDFfNTMiPklQVjRfQWRkcmVzczwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1pcHY0X2FkZHJlc3NfX2Fkcy5odG0jcmVmXzQxXzUzIj5JUFY0X0FkZHJlc3M8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtCmluZGV4IDExNTYzOGYuLmE5OTYxMDkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bQpAQCAtMSw3OSArMSw4MyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5OdW1lcmljICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwOC8wNy8yNiAxODo0OTo1NyBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLk51bWVyaWMgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzU4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5OdW1lcmljPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+TnVtZXJpYzwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80NF85Ij5OdW1lcmljX0ZpZWxkPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUxXzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80NF85Ij5OdW1lcmljX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8xMiI+RG91YmxlPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuZG91YmxlOworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzEyIj5Eb3VibGU8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5kb3VibGU7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyI+Q19OdW1lcmljX0ZpZWxkX1R5cGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTJfNyI+Q19OdW1lcmljX0ZpZWxkX1R5cGU8L0E+LCAiVFlQRV9OVU1FUklDIik7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5GPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5BcmcxPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTJfMTYiPkFyZzI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTBfMTIiPkRvdWJsZTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl81Ml8xNiI+QXJnMzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl81MF8xMiI+RG91YmxlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV9udW1lcmljIik7CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl81NV8xNiI+RjwvQT48L0ZPTlQ+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTVfMTYiPkNmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTJfNyI+Q19OdW1lcmljX0ZpZWxkX1R5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU1XzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU1XzE2Ij5BcmcyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUwXzEyIj5Eb3VibGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU1XzE2Ij5BcmczPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUwXzEyIj5Eb3VibGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKLQotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Ml83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl82Ml83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTVfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTdfMzAiPkFyZzE8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80Nl8xMCI+UHJlY2lzaW9uPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU4XzMwIj5BcmcyPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUwXzEyIj5Eb3VibGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNDdfMTAiPkxvd2VyX0xpbWl0PC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU5XzMwIj5BcmczPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUwXzEyIj5Eb3VibGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNDhfMTAiPlVwcGVyX0xpbWl0PC9BPikpOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNjJfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNjJfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1MV8xNCI+V3JhcF9CdWlsdGluPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUyXzE2Ij5TZXRfRmxkX1R5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUzXzMwIj5BcmcxPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80N18xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNDZfMTAiPlByZWNpc2lvbjwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzU0XzMwIj5BcmcyPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzUwXzEyIj5Eb3VibGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNDdfMTAiPkxvd2VyX0xpbWl0PC9BPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTVfMzAiPkFyZzM8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNTBfMTIiPkRvdWJsZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80OF8xMCI+VXBwZXJfTGltaXQ8L0E+KSkpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUyXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUxXzMwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl81MV8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+TnVtZXJpYzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+TnVtZXJpYzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0KaW5kZXggZjI2MTA3My4uNjU5ZTY5ZCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtCkBAIC0xLDYxICsxLDczIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWMuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5OdW1lcmljICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxXzUzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzQ1XzU4Ij5OdW1lcmljPC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5OdW1lcmljPC9BPik7Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5OdW1lcmljICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MV81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl80NV81OCI+TnVtZXJpYzwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZHMuaHRtI3JlZl80MV81MyI+TnVtZXJpYzwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiPk51bWVyaWNfRmllbGQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzkiPk51bWVyaWNfRmllbGQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81M185Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl8xMCI+UHJlY2lzaW9uPC9BPjwvRk9OVD4gICA6IE5hdHVyYWw7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzEwIj5Mb3dlcl9MaW1pdDwvQT48L0ZPTlQ+IDogRmxvYXQ7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEwIj5VcHBlcl9MaW1pdDwvQT48L0ZPTlQ+IDogRmxvYXQ7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTAiPlByZWNpc2lvbjwvQT48L3NwYW4+ICAgOiBOYXR1cmFsOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzEwIj5Mb3dlcl9MaW1pdDwvQT48L3NwYW4+IDogRmxvYXQ7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMTAiPlVwcGVyX0xpbWl0PC9BPjwvc3Bhbj4gOiBGbG9hdDsKICAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzQ3XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2FkYi5odG0jcmVmXzQ3XzMwIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNDhfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRzLmh0bSNyZWZfNDRfOSI+TnVtZXJpY19GaWVsZDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtbnVtZXJpY19fYWRiLmh0bSNyZWZfNDdfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl80N18zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1udW1lcmljX19hZGIuaHRtI3JlZl80OF8zMCI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzQ0XzkiPk51bWVyaWNfRmllbGQ8L0E+KTsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfRmllbGRfVHlwZSk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5OdW1lcmljPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLW51bWVyaWNfX2Fkcy5odG0jcmVmXzQxXzUzIj5OdW1lcmljPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0KaW5kZXggOTYyNjlhNy4uZmMzZWMzMyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bQpAQCAtMSw3NyArMSw3NiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHAuYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHAuYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5SZWdFeHAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS44IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlJlZ0V4cCAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80MV81MyI+UmVnRXhwPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzQxXzUzIj5SZWdFeHA8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTFfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80Nl85Ij5SZWd1bGFyX0V4cHJlc3Npb25fRmllbGQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81MV8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDZfOSI+UmVndWxhcl9FeHByZXNzaW9uX0ZpZWxkPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8xMiI+Q2hhcl9QdHI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLmNoYXI7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzE2Ij5TZXRfRnR5cDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl80OV8xNiI+RjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl80OV8xNiI+QXJnMTwvQT48L3NwYW4+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRnR5cCwgInNldF9maWVsZF90eXBlX3JlZ2V4cCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciPkNfUmVnZXhwX0ZpZWxkX1R5cGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl81MV83Ij5DX1JlZ2V4cF9GaWVsZF9UeXBlPC9BPiwgIlRZUEVfUkVHRVhQIik7Ci0KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzE2Ij5TZXRfRnR5cDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNTRfMTYiPkY8L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzU0XzE2Ij5DZnQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNTFfNyI+Q19SZWdleHBfRmllbGRfVHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzU0XzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNDlfMTIiPkNoYXJfUHRyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GdHlwLCAic2V0X2ZpZWxkX3R5cGUiKTsKLQotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV83Ij5UeHQ8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80OF8xMCI+UmVndWxhcl9FeHByZXNzaW9uPC9BPi48Yj5hbGw8L2I+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzciPkxlbjwvQT48L0ZPTlQ+IDogc2l6ZV90OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80OF8xMCI+UmVndWxhcl9FeHByZXNzaW9uPC9BPi48Yj5hbGw8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNTlfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzYwXzciPkxlbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzYxXzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzU0XzE2Ij5TZXRfRnR5cDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl81Nl8yNiI+QXJnMTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzU5XzciPlR4dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl81OV83Ij5UeHQ8L0E+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNjFfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl82MV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzE0Ij5XcmFwX0J1aWx0aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTFfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81Ml8zMCI+VHlwPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNDlfMTYiPlNldF9GdHlwPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzUwXzI2Ij5BcmcxPC9BPiA9Jmd0OyBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNTJfMzAiPlR5cDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzQ4XzEwIj5SZWd1bGFyX0V4cHJlc3Npb248L0E+LjxiPmFsbDwvYj4pKSk7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMTQiPldyYXBfQnVpbHRpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl81MV8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzUyXzMwIj5UeXA8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzUxXzE0Ij5TZXRfRmllbGRfVHlwZTwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDFfNTMiPlJlZ0V4cDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzQxXzUzIj5SZWdFeHA8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bQppbmRleCBlNTRjYjhjLi5iMjUyN2I2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtCkBAIC0xLDYxICsxLDczIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHAuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cC5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5SZWdFeHAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDFfNTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl80NF81OCI+UmVnRXhwPC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDFfNTMiPlJlZ0V4cDwvQT4pOworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlJlZ0V4cCAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDFfNTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl80NF81OCI+UmVnRXhwPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDFfNTMiPlJlZ0V4cDwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiPlN0cmluZ19BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiBTdHJpbmc7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfOSI+U3RyaW5nX0FjY2VzczwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IFN0cmluZzsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl85Ij5SZWd1bGFyX0V4cHJlc3Npb25fRmllbGQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzkiPlJlZ3VsYXJfRXhwcmVzc2lvbl9GaWVsZDwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+IDxiPndpdGg8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEwIj5SZWd1bGFyX0V4cHJlc3Npb248L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80NF85Ij5TdHJpbmdfQWNjZXNzPC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8xMCI+UmVndWxhcl9FeHByZXNzaW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDRfOSI+U3RyaW5nX0FjY2VzczwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzQ2XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRiLmh0bSNyZWZfNDZfMzAiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzQ3XzMwIj5UeXA8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDZfOSI+UmVndWxhcl9FeHByZXNzaW9uX0ZpZWxkPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzQ2XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZGIuaHRtI3JlZl80Nl8zMCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2FkYi5odG0jcmVmXzQ3XzMwIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtcmVnZXhwX19hZHMuaHRtI3JlZl80Nl85Ij5SZWd1bGFyX0V4cHJlc3Npb25fRmllbGQ8L0E+KTsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfRmllbGRfVHlwZSk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXJlZ2V4cF9fYWRzLmh0bSNyZWZfNDFfNTMiPlJlZ0V4cDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy1yZWdleHBfX2Fkcy5odG0jcmVmXzQxXzUzIj5SZWdFeHA8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0KaW5kZXggMTcwZGUzYy4uYzA5YTA4NyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0KQEAgLTEsMTE2ICsxLDEyMiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIuQ2hvaWNlICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE1IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NDg6NTggQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIuQ2hvaWNlICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjIwIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjA1IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IFN5c3RlbS5BZGRyZXNzX1RvX0FjY2Vzc19Db252ZXJzaW9uczsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzYzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl80NF81OCI+Q2hvaWNlPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV82MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNDRfNTgiPkNob2ljZTwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOwotICAgPGI+ZnVuY3Rpb248L2I+IFRvX0FyZ3VtZW50X0FjY2VzcyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24KLSAgICAgKFN5c3RlbS5BZGRyZXNzLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPik7Ci0gICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPbik7CisgICA8Yj5wYWNrYWdlPC9iPiBBcmd1bWVudF9Db252ZXJzaW9ucyA8Yj5pczwvYj4KKyAgICAgIDxiPm5ldzwvYj4gU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfOSI+QXJndW1lbnQ8L0E+KTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgwXzEzIj5HZW5lcmljX05leHQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODBfMjciPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84MV8yNyI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl80OF8xMiI+Q19JbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84MF8xMyI+R2VuZXJpY19OZXh0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODBfMjciPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgxXzI3Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiBCb29sZWFuOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5VZGY8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81N185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZV9BY2Nlc3M8L0E+IDo9CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNyI+UmVzdWx0PC9BPjwvc3Bhbj4gOiBCb29sZWFuOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciPlVkZjwvQT48L3NwYW4+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzU3XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX1dpdGhfQ2hvaWNlX0FjY2VzczwvQT4gOj0KICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNTdfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfV2l0aF9DaG9pY2VfQWNjZXNzPC9BPgotICAgICAgICAoVG9fQXJndW1lbnRfQWNjZXNzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84MV8yNyI+VXNyPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT4pOworICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4gKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgxXzI3Ij5Vc3I8L0E+KSkuPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzU1XzciPlJlc3VsdDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjBfMTMiPk5leHQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84MF8yNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNTZfNyI+VWRmPC9BPi48Yj5hbGw8L2I+KTsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNDhfMTIiPkNfSW50PC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzU1XzciPlJlc3VsdDwvQT4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzUzXzciPlJlc3VsdDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjBfMTMiPk5leHQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84MF8yNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNTRfNyI+VWRmPC9BPi48Yj5hbGw8L2I+KTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl81M183Ij5SZXN1bHQ8L0E+KSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgwXzEzIj5HZW5lcmljX05leHQ8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODdfMTMiPkdlbmVyaWNfUHJldjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84N18yNyI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzg4XzI3Ij5Vc3I8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzQ4XzEyIj5DX0ludDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzg3XzEzIj5HZW5lcmljX1ByZXY8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84N18yNyI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODhfMjciPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82N183Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IEJvb2xlYW47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4XzciPlVkZjwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzU3XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX1dpdGhfQ2hvaWNlX0FjY2VzczwvQT4gOj0KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV83Ij5SZXN1bHQ8L0E+PC9zcGFuPiA6IEJvb2xlYW47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfNyI+VWRmPC9BPjwvc3Bhbj4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNTdfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfV2l0aF9DaG9pY2VfQWNjZXNzPC9BPiA6PQogICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81N185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZV9BY2Nlc3M8L0E+Ci0gICAgICAgIChUb19Bcmd1bWVudF9BY2Nlc3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzg4XzI3Ij5Vc3I8L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfNyI+VHlwPC9BPik7CisgICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiAoQXJndW1lbnRfQ29udmVyc2lvbnMuVG9fUG9pbnRlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODhfMjciPlVzcjwvQT4pKS48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxM183Ij5UeXA8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNjdfNyI+UmVzdWx0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl82N18xMyI+UHJldmlvdXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84N18yNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNjhfNyI+VWRmPC9BPi48Yj5hbGw8L2I+KTsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNDhfMTIiPkNfSW50PC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzY3XzciPlJlc3VsdDwvQT4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzY1XzciPlJlc3VsdDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjdfMTMiPlByZXZpb3VzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODdfMjciPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzY2XzciPlVkZjwvQT4uPGI+YWxsPC9iPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNjVfNyI+UmVzdWx0PC9BPikpOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl84N18xMyI+R2VuZXJpY19QcmV2PC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNzhfMTMiPkNfR2VuZXJpY19DaG9pY2U8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNzhfMTMiPkNfR2VuZXJpY19DaG9pY2U8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODBfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxXzciPlQ8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzhfNyI+UmVzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OV83Ij5UPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQyXzQiPk1fR2VuZXJpY19DaG9pY2U8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM0XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzgxXzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyMl8xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQzXzQiPk1fR2VuZXJpY19DaG9pY2U8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzc5XzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyM18xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+JzxiPkFjY2VzczwvYj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODhfMTMiPkdlbmVyaWNfQ2hhcl9DaGVjazwvQT4nPGI+QWNjZXNzPC9iPik7Ci0gICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfODFfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzlfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfODBfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjdfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfODFfNyI+VDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18xMyI+Q29weV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3Ml8xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pOwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzgwXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl84MF83Ij5SZXM8L0E+KTsKLSAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzhfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjhfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzlfNyI+VDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2M18xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2OF8xMyI+Q29weV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3M18xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pOworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzhfNyI+UmVzPC9BPik7CiAKLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzgwXzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM0XzEzIj5TZXRfRmllbGR0eXBlX0Nob2ljZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzgxXzciPlQ8L0E+LAorICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzhfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMzVfMTMiPlNldF9GaWVsZHR5cGVfQ2hvaWNlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzlfNyI+VDwvQT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgwXzEzIj5HZW5lcmljX05leHQ8L0E+JzxiPkFjY2VzczwvYj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzg3XzEzIj5HZW5lcmljX1ByZXY8L0E+JzxiPkFjY2VzczwvYj4pOwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzgwXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl84MF83Ij5SZXM8L0E+KTsKLSAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNzhfNyI+UmVzPC9BPik7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5NX0dlbmVyaWNfQ2hvaWNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl84MV83Ij5UPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0M180Ij5NX0dlbmVyaWNfQ2hvaWNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl83OV83Ij5UPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5NX0dlbmVyaWNfQ2hvaWNlPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPik7Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5NX0dlbmVyaWNfQ2hvaWNlPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDNfNCI+TV9HZW5lcmljX0Nob2ljZTwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4pOworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDNfNCI+TV9HZW5lcmljX0Nob2ljZTwvQT47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzc4XzEzIj5DX0dlbmVyaWNfQ2hvaWNlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzQ0XzU4Ij5DaG9pY2U8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzQ0XzU4Ij5DaG9pY2U8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0KaW5kZXggN2YzOWFiNC4uNGQ4M2Q0ZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0KQEAgLTEsMTAwICsxLDExMiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2UuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZS5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcy5Vc2VyLkNob2ljZSAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NDk6MjAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIuQ2hvaWNlICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTEvMDMvMTkgMTI6Mjc6NDcgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80NF81MyI+VXNlcjwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF81OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNDVfNjMiPkNob2ljZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzQ1XzYzIj5DaG9pY2U8L0E+PC9zcGFuPiA8Yj5pczwvYj4KICAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlCi0gICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzQ0XzU4Ij5DaG9pY2U8L0E+KTsKKyAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80NF81MyI+VXNlcjwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNDRfNTgiPkNob2ljZTwvQT4pOwogCi0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEyIj5DX0ludDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMTIiPkNfSW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hYnN0cmFjdDwvYj4gPGI+bmV3PC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX1dpdGhfQ2hvaWNlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPiA8Yj5uZXc8L2I+CiAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+IDxiPndpdGg8L2I+IDxiPm51bGw8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoaXMgaXMgdGhlIHJvb3Qgb2YgdGhlIG1lY2hhbmlzbSB3ZSB1c2UgdG8gY3JlYXRlIGZpZWxkIHR5cGVzIGluPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFkYTk1IHRoYXQgYWxsb3cgdGhlIHByZXYvbmV4dCBtZWNoYW5pc20uIFlvdSBzaG91bGQgeW91ciBvd24gdHlwZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBkZXJpdmUgZnJvbSB0aGlzIG9uZSBhbmQgaW1wbGVtZW50IHRoZSBGaWVsZF9DaGVjaywgQ2hhcmFjdGVyX0NoZWNrPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5leHQgYW5kIFByZXZpb3VzIGZ1bmN0aW9ucyBmb3IgeW91ciBvd24gdHlwZS48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgaXMgdGhlIHJvb3Qgb2YgdGhlIG1lY2hhbmlzbSB3ZSB1c2UgdG8gY3JlYXRlIGZpZWxkIHR5cGVzIGluPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBZGE5NSB0aGF0IGFsbG93IHRoZSBwcmV2L25leHQgbWVjaGFuaXNtLiBZb3Ugc2hvdWxkIHlvdXIgb3duIHR5cGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGRlcml2ZSBmcm9tIHRoaXMgb25lIGFuZCBpbXBsZW1lbnQgdGhlIEZpZWxkX0NoZWNrLCBDaGFyYWN0ZXJfQ2hlY2s8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE5leHQgYW5kIFByZXZpb3VzIGZ1bmN0aW9ucyBmb3IgeW91ciBvd24gdHlwZS48L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZV9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfV2l0aF9DaG9pY2VfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPgogICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81MF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZTwvQT4nQ2xhc3M7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzEzIj5OZXh0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjBfMTMiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl82MF8xMyI+VHlwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81MF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MF8xMyI+TmV4dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjBfMTMiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzYwXzEzIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzUwXzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX1dpdGhfQ2hvaWNlPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICAgICA8Yj5pczwvYj4gPGI+YWJzdHJhY3Q8L2I+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJZiBUcnVlIGlzIHJldHVybmVkLCB0aGUgZnVuY3Rpb24gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBhIG5leHQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdmFsdWUgaW50byB0aGUgZmllbGRzIGJ1ZmZlci48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIElmIFRydWUgaXMgcmV0dXJuZWQsIHRoZSBmdW5jdGlvbiBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkIGEgbmV4dDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdmFsdWUgaW50byB0aGUgZmllbGRzIGJ1ZmZlci48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfMTMiPlByZXZpb3VzPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNjdfMTMiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl82N18xMyI+VHlwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81MF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N18xMyI+UHJldmlvdXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzY3XzEzIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl82N18xMyI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl81MF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9XaXRoX0Nob2ljZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgICAgPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSWYgVHJ1ZSBpcyByZXR1cm5lZCwgdGhlIGZ1bmN0aW9uIHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQgYSBwcmV2aW91czwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB2YWx1ZSBpbnRvIHRoZSBmaWVsZHMgYnVmZmVyLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSWYgVHJ1ZSBpcyByZXR1cm5lZCwgdGhlIGZ1bmN0aW9uIHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQgYSBwcmV2aW91czwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdmFsdWUgaW50byB0aGUgZmllbGRzIGJ1ZmZlci48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IFByaXZhdGUgUGFydC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgUHJpdmF0ZSBQYXJ0LjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgogPGI+cHJpdmF0ZTwvYj4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl83OF8xMyI+Q19HZW5lcmljX0Nob2ljZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl83Nl8xMyI+Q19HZW5lcmljX0Nob2ljZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl81Ml8xMyI+R2VuZXJpY19OZXh0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzUyXzI3Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNTNfMjciPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfNDhfMTIiPkNfSW50PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzUwXzEzIj5HZW5lcmljX05leHQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl81MF8yNyI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNTFfMjciPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT47CiAgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2Fkcy5odG0jcmVmXzgwXzEzIj5HZW5lcmljX05leHQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBuZXh0IENob2ljZV9GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcmVwcmVzZW50aW5nIGFsbCB0aGUgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUgZGVyaXZhdGVzLiBJdCByb3V0ZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIGNhbGwgdG8gdGhlIE5leHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBuZXh0IENob2ljZV9GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRpdmVzLiBJdCByb3V0ZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoZSBjYWxsIHRvIHRoZSBOZXh0IGltcGxlbWVudGF0aW9uIGZvciB0aGUgdHlwZS48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzY0XzEzIj5HZW5lcmljX1ByZXY8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84N18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNjRfMjciPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl82NV8yNyI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl80OF8xMiI+Q19JbnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRiLmh0bSNyZWZfNjJfMTMiPkdlbmVyaWNfUHJldjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlci1jaG9pY2VfX2FkYi5odG0jcmVmXzYyXzI3Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZGIuaHRtI3JlZl82M18yNyI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLWNob2ljZV9fYWRzLmh0bSNyZWZfODdfMTMiPkdlbmVyaWNfUHJldjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBnZW5lcmljIHByZXYgQ2hvaWNlX0Z1bmN0aW9uIGZvciB0aGUgbG93LWxldmVsIGZpZWxkdHlwZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0ZXMuIEl0IHJvdXRlczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgY2FsbCB0byB0aGUgUHJldmlvdXMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBwcmV2IENob2ljZV9GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRpdmVzLiBJdCByb3V0ZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoZSBjYWxsIHRvIHRoZSBQcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHR5cGUuPC9FTT48L3NwYW4+CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl80NF81OCI+Q2hvaWNlPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXItY2hvaWNlX19hZHMuaHRtI3JlZl80NF81OCI+Q2hvaWNlPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bQppbmRleCA5OTQzMDdjLi5mNTFhYmRkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0KQEAgLTEsMTM5ICsxLDE0NCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTUgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwOC8wNy8yNiAxODo0OToyOCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMjMgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zOworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDVfNTgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzU4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83MF8xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83MF8zMCI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzcxXzMwIj5UeXA8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ4XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzcwXzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzBfMzAiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzFfMzAiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzE2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzYxXzE2Ij5BbGxvY2F0ZV9Bcmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl82MV8zMCI+VDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT4nQ2xhc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzE2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzU5XzE2Ij5BbGxvY2F0ZV9Bcmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzU5XzMwIj5UPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ4XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlPC9BPidDbGFzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPjsKIAotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMTYiPlNldF9GbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzUzXzE2Ij5GPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83MF8zMCI+RmxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81M18xNiI+Q2Z0PC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83OV8xMyI+Q19HZW5lcmljX1R5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzUzXzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZsZF9UeXBlLCAic2V0X2ZpZWxkX3R5cGUiKTsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTYiPlNldF9GbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTNfMTYiPkY8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzcwXzMwIj5GbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTNfMTYiPkNmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzlfMTMiPkNfR2VuZXJpY19UeXBlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzUzXzE2Ij5BcmcxPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX1R5cGUsICJzZXRfZmllbGRfdHlwZV91c2VyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47Ci0KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxXzE2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzUwXzE2Ij5BbGxvY2F0ZV9Bcmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81MF8zMCI+VDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT4nQ2xhc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4KKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMTYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTBfMTYiPkFsbG9jYXRlX0FyZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTBfMzAiPlQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+J0NsYXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+CiAgICAgICA8Yj5pczwvYj4KLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMTAiPlB0cjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzYzXzkiPkZpZWxkX1R5cGVfQWNjZXNzPC9BPgorICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzEwIj5QdHI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl82NF85Ij5GaWVsZF9UeXBlX0FjY2VzczwvQT4KICAgICAgICAgICAgICA6PSA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+J0NsYXNzJyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzUwXzMwIj5UPC9BPik7CiAgICAgICA8Yj5iZWdpbjwvYj4KLSAgICAgICAgIDxiPnJldHVybjwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTFfOSI+QXJndW1lbnQ8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VXNyPC9BPiA9Jmd0OyBTeXN0ZW0uTnVsbF9BZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl82NF8xMCI+UHRyPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNF80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+KTsKKyAgICAgICAgIDxiPnJldHVybjwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfOSI+QXJndW1lbnQ8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+VXNyPC9BPiA9Jmd0OyBTeXN0ZW0uTnVsbF9BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlR5cDwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl82Ml8xMCI+UHRyPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNV83Ij5DZnQ8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNV80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+KTsKICAgICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81MF8xNiI+QWxsb2NhdGVfQXJnPC9BPjsKIAogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzU5XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81M18xNiI+U2V0X0ZsZF9UeXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81NV8zMCI+QXJnMTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl81MF8xNiI+QWxsb2NhdGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83MV8zMCI+VHlwPC9BPikpOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTNfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTVfMzAiPkFyZzE8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNTBfMTYiPkFsbG9jYXRlX0FyZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzFfMzAiPlR5cDwvQT4pKSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzBfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjsKIAotICAgPGI+cHJhZ21hPC9iPiBXYXJuaW5ncyAoT2ZmKTsKLSAgIDxiPmZ1bmN0aW9uPC9iPiBUb19Bcmd1bWVudF9BY2Nlc3MgPGI+aXM8L2I+IDxiPm5ldzwvYj4gQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uCi0gICAgIChTeXN0ZW0uQWRkcmVzcywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4pOwotICAgPGI+cHJhZ21hPC9iPiBXYXJuaW5ncyAoT24pOworICAgPGI+cGFja2FnZTwvYj4gQXJndW1lbnRfQ29udmVyc2lvbnMgPGI+aXM8L2I+CisgICAgICA8Yj5uZXc8L2I+IFN5c3RlbS5BZGRyZXNzX1RvX0FjY2Vzc19Db252ZXJzaW9ucyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzkiPkFyZ3VtZW50PC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzgxXzEzIj5HZW5lcmljX0ZpZWxkX0NoZWNrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODRfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMzQiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84Ml8zNCI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzgxXzM0Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84Ml8zNCI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg3XzciPlJlc3VsdDwvQT48L0ZPTlQ+IDogQm9vbGVhbjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODhfNyI+VWRmPC9BPjwvRk9OVD4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl81M185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9BY2Nlc3M8L0E+IDo9Ci0gICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNTNfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfQWNjZXNzPC9BPiAoVG9fQXJndW1lbnRfQWNjZXNzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzgyXzM0Ij5Vc3I8L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfNyI+VHlwPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfNyI+UmVzdWx0PC9BPjwvc3Bhbj4gOiBCb29sZWFuOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxXzciPlVkZjwvQT48L3NwYW4+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNTNfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfQWNjZXNzPC9BPiA6PQorICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzUzXzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzczwvQT4KKyAgICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4gKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODJfMzQiPlVzcjwvQT4pKS48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxM183Ij5UeXA8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl84N183Ij5SZXN1bHQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNTZfMTMiPkZpZWxkX0NoZWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84MV8zNCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl84OF83Ij5VZGY8L0E+LjxiPmFsbDwvYj4pOwotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzg3XzciPlJlc3VsdDwvQT4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfODBfNyI+UmVzdWx0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzU2XzEzIj5GaWVsZF9DaGVjazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMzQiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfODFfNyI+VWRmPC9BPi48Yj5hbGw8L2I+KTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzgwXzciPlJlc3VsdDwvQT4pKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84MV8xMyI+R2VuZXJpY19GaWVsZF9DaGVjazwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzg4XzEzIj5HZW5lcmljX0NoYXJfQ2hlY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84OF8zMyI+Q2g8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTZfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODlfMzMiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzg4XzEzIj5HZW5lcmljX0NoYXJfQ2hlY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzg4XzMzIj5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzg5XzMzIj5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiBCb29sZWFuOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OV83Ij5VZGY8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzUzXzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzczwvQT4gOj0KLSAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl81M185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9BY2Nlc3M8L0E+IChUb19Bcmd1bWVudF9BY2Nlc3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODlfMzMiPlVzcjwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxMl83Ij5UeXA8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml83Ij5SZXN1bHQ8L0E+PC9zcGFuPiA6IEJvb2xlYW47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTNfNyI+VWRmPC9BPjwvc3Bhbj4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl81M185Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZV9BY2Nlc3M8L0E+IDo9CisgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNTNfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfQWNjZXNzPC9BPgorICAgICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiAoQXJndW1lbnRfQ29udmVyc2lvbnMuVG9fUG9pbnRlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84OV8zMyI+VXNyPC9BPikpLjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlR5cDwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzk4XzciPlJlc3VsdDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl82M18xMyI+Q2hhcmFjdGVyX0NoZWNrPC9BPiAoQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84OF8zMyI+Q2g8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl85OV83Ij5VZGY8L0E+LjxiPmFsbDwvYj4pOwotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzk4XzciPlJlc3VsdDwvQT4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfOTJfNyI+UmVzdWx0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzYzXzEzIj5DaGFyYWN0ZXJfQ2hlY2s8L0E+IChDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzg4XzMzIj5DaDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzkzXzciPlVkZjwvQT4uPGI+YWxsPC9iPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl85Ml83Ij5SZXN1bHQ8L0E+KSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODhfMTMiPkdlbmVyaWNfQ2hhcl9DaGVjazwvQT47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzc5XzEzIj5DX0dlbmVyaWNfVHlwZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwM18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl83OV8xMyI+Q19HZW5lcmljX1R5cGU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwXzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfNyI+VDwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDVfNyI+UmVzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDZfNyI+VDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0MV80Ij5NX0dlbmVyaWNfVHlwZTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMTFfNyI+VDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjIyXzEzIj5OZXdfRmllbGR0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84MV8xMyI+R2VuZXJpY19GaWVsZF9DaGVjazwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDJfNCI+TV9HZW5lcmljX1R5cGU8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfMTA2XzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyM18xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODFfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+JzxiPkFjY2VzczwvYj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfODhfMTMiPkdlbmVyaWNfQ2hhcl9DaGVjazwvQT4nPGI+QWNjZXNzPC9iPik7Ci0gICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMTFfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMDZfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMTBfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjdfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMTFfNyI+VDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18xMyI+Q29weV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3Ml8xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pOwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfMTEwXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzExMF83Ij5SZXM8L0E+KTsKLSAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMDVfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjhfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMDZfNyI+VDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2M18xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2OF8xMyI+Q29weV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3M18xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pOworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMDVfNyI+UmVzPC9BPik7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0MV80Ij5NX0dlbmVyaWNfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl8xMTFfNyI+VDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDJfNCI+TV9HZW5lcmljX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfMTA2XzciPlQ8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQxXzQiPk1fR2VuZXJpY19UeXBlPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPik7Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0MV80Ij5NX0dlbmVyaWNfVHlwZTwvQT47CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQyXzQiPk1fR2VuZXJpY19UeXBlPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5NX0dlbmVyaWNfVHlwZTwvQT47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNzlfMTMiPkNfR2VuZXJpY19UeXBlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtCmluZGV4IGZhYTJmYzkuLmY4OWUxZjcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bQpAQCAtMSwxMDEgKzEsMTEzIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXIuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZpZWxkX1R5cGVzLlVzZXIgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA4LzA3LzI2IDE4OjQ5OjM4IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMuVXNlciAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE1IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDExLzAzLzE5IDEyOjI3OjIxIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNDVfNTgiPlVzZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+KTsKLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTIiPkNfSW50PC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzUzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzQ1XzU4Ij5Vc2VyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ0XzUzIj5Vc2VyPC9BPik7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTIiPkNfSW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hYnN0cmFjdDwvYj4gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPiA8Yj53aXRoPC9iPiA8Yj5udWxsPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBtZWNoYW5pc20gd2UgdXNlIHRvIGNyZWF0ZSBmaWVsZCB0eXBlcyBpbjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBZGE5NS4gWW91IHNob3VsZCB5b3VyIG93biB0eXBlIGRlcml2ZSBmcm9tIHRoaXMgb25lIGFuZCBpbXBsZW1lbnQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIEZpZWxkX0NoZWNrIGFuZCBDaGFyYWN0ZXJfQ2hlY2sgZnVuY3Rpb25zIGZvciB5b3VyIG93biB0eXBlLjwvRU0+PC9GT05UPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPiA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+IDxiPndpdGg8L2I+IDxiPm51bGw8L2I+IDxiPnJlY29yZDwvYj47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBtZWNoYW5pc20gd2UgdXNlIHRvIGNyZWF0ZSBmaWVsZCB0eXBlcyBpbjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQWRhOTUuIFlvdSBzaG91bGQgeW91ciBvd24gdHlwZSBkZXJpdmUgZnJvbSB0aGlzIG9uZSBhbmQgaW1wbGVtZW50PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGUgRmllbGRfQ2hlY2sgYW5kIENoYXJhY3Rlcl9DaGVjayBmdW5jdGlvbnMgZm9yIHlvdXIgb3duIHR5cGUuPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGVfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlX0FjY2VzczwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4KICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT4nQ2xhc3M7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzEzIj5GaWVsZF9DaGVjazwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNTZfMTMiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzU2XzEzIj5UeXA8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfMTMiPkZpZWxkX0NoZWNrPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzU2XzEzIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzU2XzEzIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgICAgIDxiPmlzPC9iPiA8Yj5hYnN0cmFjdDwvYj47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIElmIFRydWUgaXMgcmV0dXJuZWQsIHRoZSBmaWVsZCBpcyBjb25zaWRlcmVkIHZhbGlkLCBvdGhlcndpc2UgaXQgaXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaW52YWxpZC48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIElmIFRydWUgaXMgcmV0dXJuZWQsIHRoZSBmaWVsZCBpcyBjb25zaWRlcmVkIHZhbGlkLCBvdGhlcndpc2UgaXQgaXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGludmFsaWQuPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzEzIj5DaGFyYWN0ZXJfQ2hlY2s8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzYzXzEzIj5DaDwvQT48L0ZPTlQ+ICA6IENoYXJhY3RlcjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl82M18xMyI+VHlwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ4XzkiPlVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzXzEzIj5DaGFyYWN0ZXJfQ2hlY2s8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNjNfMTMiPkNoPC9BPjwvc3Bhbj4gIDogQ2hhcmFjdGVyOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNjNfMTMiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80OF85Ij5Vc2VyX0RlZmluZWRfRmllbGRfVHlwZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgICAgPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSWYgVHJ1ZSBpcyByZXR1cm5lZCwgdGhlIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGFzIHZhbGlkIGZvciB0aGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgZmllbGQsIG90aGVyd2lzZSBhcyBpbnZhbGlkLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSWYgVHJ1ZSBpcyByZXR1cm5lZCwgdGhlIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGFzIHZhbGlkIGZvciB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGZpZWxkLCBvdGhlcndpc2UgYXMgaW52YWxpZC48L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzQ3XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzQ3XzMwIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNDhfMzAiPlR5cDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIHR5cGVzIGRlcml2ZWQgZnJvbSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZS48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm8gbmVlZCB0byByZWltcGxlbWVudCBpdCBmb3IgeW91ciBkZXJpdmVkIHR5cGUuPC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl80N18xNCI+U2V0X0ZpZWxkX1R5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzQ3XzMwIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzQ4XzMwIj5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDhfOSI+VXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCB0eXBlcyBkZXJpdmVkIGZyb20gVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBObyBuZWVkIHRvIHJlaW1wbGVtZW50IGl0IGZvciB5b3VyIGRlcml2ZWQgdHlwZS48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IFByaXZhdGUgUGFydC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBVc2VkIGJ5IHRoZSBDaG9pY2UgY2hpbGQgcGFja2FnZS48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IFByaXZhdGUgUGFydC48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgVXNlZCBieSB0aGUgQ2hvaWNlIGNoaWxkIHBhY2thZ2UuPC9FTT48L3NwYW4+CiA8Yj5wcml2YXRlPC9iPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfMTA4XzEzIj5DX0dlbmVyaWNfVHlwZTwvQT48L0ZPTlQ+ICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfMTAzXzEzIj5DX0dlbmVyaWNfVHlwZTwvQT48L3NwYW4+ICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfODRfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl84NF8zNCI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzg1XzM0Ij5Vc3I8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfNzdfMTMiPkdlbmVyaWNfRmllbGRfQ2hlY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzc3XzM0Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Ml8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl83OF8zNCI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84MV8xMyI+R2VuZXJpY19GaWVsZF9DaGVjazwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBnZW5lcmljIEZpZWxkX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgbG93LWxldmVsIGZpZWxkdHlwZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0ZXMuIEl0IHJvdXRlczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgY2FsbCB0byB0aGUgRmllbGRfQ2hlY2sgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB0eXBlLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBGaWVsZF9DaGVja19GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlcHJlc2VudGluZyBhbGwgdGhlIFVzZXJfRGVmaW5lZF9GaWVsZF9UeXBlIGRlcml2YXRpdmVzLiBJdCByb3V0ZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoZSBjYWxsIHRvIHRoZSBGaWVsZF9DaGVjayBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHR5cGUuPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2FkYi5odG0jcmVmXzk1XzEzIj5HZW5lcmljX0NoYXJfQ2hlY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl85NV8zMyI+Q2g8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODlfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRiLmh0bSNyZWZfOTZfMzMiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl84OV8xMyI+R2VuZXJpY19DaGFyX0NoZWNrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl84OV8zMyI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLXVzZXJfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZGIuaHRtI3JlZl85MF8zMyI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy11c2VyX19hZHMuaHRtI3JlZl84OF8xMyI+R2VuZXJpY19DaGFyX0NoZWNrPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoaXMgaXMgdGhlIGdlbmVyaWMgQ2hhcl9DaGVja19GdW5jdGlvbiBmb3IgdGhlIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcmVwcmVzZW50aW5nIGFsbCB0aGUgVXNlcl9EZWZpbmVkX0ZpZWxkX1R5cGUgZGVyaXZhdGVzLiBJdCByb3V0ZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIGNhbGwgdG8gdGhlIENoYXJhY3Rlcl9DaGVjayBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHR5cGUuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSBnZW5lcmljIENoYXJfQ2hlY2tfRnVuY3Rpb24gZm9yIHRoZSBsb3ctbGV2ZWwgZmllbGR0eXBlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICByZXByZXNlbnRpbmcgYWxsIHRoZSBVc2VyX0RlZmluZWRfRmllbGRfVHlwZSBkZXJpdmF0aXZlcy4gSXQgcm91dGVzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGUgY2FsbCB0byB0aGUgQ2hhcmFjdGVyX0NoZWNrIGltcGxlbWVudGF0aW9uIGZvciB0aGUgdHlwZS48L0VNPjwvc3Bhbj4KIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80M180MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80NF80MSI+RmllbGRfVHlwZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMtdXNlcl9fYWRzLmh0bSNyZWZfNDRfNTMiPlVzZXI8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0KaW5kZXggNGFmM2NhNC4uM2Q4NzZlMyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0KQEAgLTEsMzAyICsxLDI4NyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcyAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjIwIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NTA6MzMgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9UeXBlcyAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjI4IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE0LzA5LzEzIDE5OjAwOjQ3IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIDxiPndpdGg8L2I+IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uOwotPGI+d2l0aDwvYj4gQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uOwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkdHlwZS4zeDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfNDYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+d2l0aDwvYj4gU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zOworCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGR0eXBlLjN4PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNDYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT48L3NwYW4+IDxiPmlzPC9iPgogCiAgICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IFN5c3RlbS5BZGRyZXNzOwogCi0gICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOwotICAgPGI+ZnVuY3Rpb248L2I+IFRvX0FyZ3VtZW50X0FjY2VzcyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24KLSAgICAgKFN5c3RlbS5BZGRyZXNzLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPik7Ci0gICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPbik7CisgICA8Yj5wYWNrYWdlPC9iPiBBcmd1bWVudF9Db252ZXJzaW9ucyA8Yj5pczwvYj4KKyAgICAgIDxiPm5ldzwvYj4gU3lzdGVtLkFkZHJlc3NfVG9fQWNjZXNzX0NvbnZlcnNpb25zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfOSI+QXJndW1lbnQ8L0E+KTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMTMiPkdldF9GaWVsZHR5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNTlfMTMiPkY8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMTMiPkdldF9GaWVsZHR5cGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl81OF8xMyI+RjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+OwogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEdldF9GaWVsZHR5cGUsICJmaWVsZF90eXBlIik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzEzIj5HZXRfQXJnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzYyXzEzIj5GPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzEzIj5HZXRfQXJnPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNjFfMTMiPkY8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBTeXN0ZW0uQWRkcmVzczsKICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRfQXJnLCAiZmllbGRfYXJnIik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNzlfMTMiPkdldF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzc5XzIzIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNjNfOSI+RmllbGRfVHlwZV9BY2Nlc3M8L0E+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfODBfMTMiPkdldF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfODBfMjMiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzY0XzkiPkZpZWxkX1R5cGVfQWNjZXNzPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczXzciPkxvd19MZXZlbDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzU5XzEzIj5HZXRfRmllbGR0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNzlfMjMiPkZsZDwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NF83Ij5Bcmc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNl85Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyXzciPkxvd19MZXZlbDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzU4XzEzIj5HZXRfRmllbGR0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfODBfMjMiPkZsZDwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzciPkFyZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83M183Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM0XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83Ml83Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gPGI+bnVsbDwvYj47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzczXzciPkxvd19MZXZlbDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDNfNCI+TV9CdWlsdGluX1JvdXRlcjwvQT4gPGI+b3I8L2I+IDxiPmVsc2U8L2I+Ci0gICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzczXzciPkxvd19MZXZlbDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDFfNCI+TV9HZW5lcmljX1R5cGU8L0E+IDxiPm9yPC9iPiA8Yj5lbHNlPC9iPgotICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83M183Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ0XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT4gPGI+b3I8L2I+IDxiPmVsc2U8L2I+Ci0gICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzczXzciPkxvd19MZXZlbDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDJfNCI+TV9HZW5lcmljX0Nob2ljZTwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzc0XzciPkFyZzwvQT4gOj0gVG9fQXJndW1lbnRfQWNjZXNzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl82Ml8xMyI+R2V0X0FyZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzc5XzIzIj5GbGQ8L0E+KSk7Ci0gICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzRfNyI+QXJnPC9BPiA9IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjg2XzQiPkZvcm1fRXhjZXB0aW9uPC9BPjsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83Ml83Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ0XzQiPk1fQnVpbHRpbl9Sb3V0ZXI8L0E+IDxiPm9yPC9iPiA8Yj5lbHNlPC9iPgorICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzJfNyI+TG93X0xldmVsPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5NX0dlbmVyaWNfVHlwZTwvQT4gPGI+b3I8L2I+IDxiPmVsc2U8L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83Ml83Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ1XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT4gPGI+b3I8L2I+IDxiPmVsc2U8L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl83Ml83Ij5Mb3dfTGV2ZWw8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQzXzQiPk1fR2VuZXJpY19DaG9pY2U8L0E+CisgICAgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzNfNyI+QXJnPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPgorICAgICAgICAgKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzYxXzEzIj5HZXRfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfODBfMjMiPkZsZDwvQT4pKSk7CisgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzNfNyI+QXJnPC9BPiA9IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+CisgICAgICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjg3XzQiPkZvcm1fRXhjZXB0aW9uPC9BPjsKICAgICAgICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzc0XzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT47CisgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzczXzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPjsKICAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl83OV8xMyI+R2V0X1R5cGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl84MF8xMyI+R2V0X1R5cGU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTYyXzEzIj5NYWtlX0FyZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjJfMjMiPkFyZ3M8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IFN5c3RlbS5BZGRyZXNzCi0gICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQWN0dWFsbHkgYXJncyBpcyBhIGRvdWJsZSBpbmRpcmVjdGVkIHBvaW50ZXIgdG8gdGhlIGFyZ3VtZW50czwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBvZiBhIEMgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gSW4gdGhlb3J5IGl0IGlzIG5vdyBxdWl0ZTwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBjb21wbGljYXRlZCB0byB3cml0ZSBwb3J0YWJsZSByb3V0aW5lIHRoYXQgcmVhZHMgdGhlIGFyZ3VtZW50cyw8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgYmVjYXVzZSBvbmUgaGFzIHRvIGtub3cgdGhlIGdyb3d0aCBkaXJlY3Rpb24gb2YgdGhlIHN0YWNrIGFuZDwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgc2l6ZXMgb2YgdGhlIGluZGl2aWR1YWwgYXJndW1lbnRzLjwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBGb3J0dW5hdGVseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBmaXJzdCBhcmd1bWVudCAoIzApLDwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB3ZSBrbm93IGl0cyBzaXplIGFuZCBmb3IgdGhlIGZpcnN0IGFyZyB3ZSBkb24ndCBjYXJlIGFib3V0PC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGludG8gd2hpY2ggc3RhY2sgZGlyZWN0aW9uIHdlIGhhdmUgdG8gcHJvY2VlZC4gV2Ugc2ltcGx5PC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHJlc29sdmUgdGhlIGRvdWJsZSBpbmRpcmVjdGlvbiBhbmQgdGhhdHMgaXQuPC9FTT48L0ZPTlQ+Ci0gICAgICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNl8xMiI+VjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gU3lzdGVtLkFkZHJlc3M7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gVG9fQWNjZXNzIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoU3lzdGVtLkFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTA2XzEyIj5WPC9BPik7Ci0gICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gVG9fQWNjZXNzIChUb19BY2Nlc3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8yMyI+QXJnczwvQT4pLjxiPmFsbDwvYj4pLjxiPmFsbDwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8xMyI+TWFrZV9Bcmc8L0E+OwotCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18xMyI+Q29weV9Bcmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18yMyI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiBTeXN0ZW0uQWRkcmVzcworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY4XzEzIj5Db3B5X0FyZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2OF8yMyI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiBTeXN0ZW0uQWRkcmVzcwogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY3XzIzIj5Vc3I8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjdfMTMiPkNvcHlfQXJnPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY4XzIzIj5Vc3I8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjhfMTMiPkNvcHlfQXJnPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTcyXzE0Ij5GcmVlX0FyZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExOV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTcyXzI0Ij5Vc3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTeXN0ZW0uQWRkcmVzcykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTczXzE0Ij5GcmVlX0FyZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzNfMjQiPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpCiAgICA8Yj5pczwvYj4KICAgICAgIDxiPnByb2NlZHVyZTwvYj4gRnJlZV9UeXBlIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uCi0gICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPidDbGFzcywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNjNfOSI+RmllbGRfVHlwZV9BY2Nlc3M8L0E+KTsKKyAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+J0NsYXNzLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl82NF85Ij5GaWVsZF9UeXBlX0FjY2VzczwvQT4pOwogICAgICAgPGI+cHJvY2VkdXJlPC9iPiBGcmVlYXJncyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbgotICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjExXzkiPkFyZ3VtZW50PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4pOworICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzkiPkFyZ3VtZW50PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4pOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNl83Ij5Ub19CZV9GcmVlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3Ml8yNCI+VXNyPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyN183Ij5Mb3dfTGV2ZWw8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4KKyAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+IChBcmd1bWVudF9Db252ZXJzaW9ucy5Ub19Qb2ludGVyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzNfMjQiPlVzcjwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTFfNyI+TG93X0xldmVsPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjZfNyI+VG9fQmVfRnJlZTwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjZfNyI+VG9fQmVfRnJlZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlVzcjwvQT4gLz0gU3lzdGVtLk51bGxfQWRkcmVzcyA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI3XzciPkxvd19MZXZlbDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI2XzciPlRvX0JlX0ZyZWU8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+OwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEyN183Ij5Mb3dfTGV2ZWw8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyNl8xMCI+RnJlZWFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEyN183Ij5Mb3dfTGV2ZWw8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEyN183Ij5GcmVlYXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI2XzciPlRvX0JlX0ZyZWU8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxM183Ij5Vc3I8L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+VXNyPC9BPiAvPSBTeXN0ZW0uTnVsbF9BZGRyZXNzIDxiPnRoZW48L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTFfNyI+TG93X0xldmVsPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTVfNyI+Q2Z0PC9BPjsKKyAgICAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTFfNyI+TG93X0xldmVsPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyN18xMCI+RnJlZWFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KKyAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzExMV83Ij5Mb3dfTGV2ZWw8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI3XzEwIj5GcmVlYXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTA5XzciPlRvX0JlX0ZyZWU8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPlVzcjwvQT4pOwogICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjZfNyI+VG9fQmVfRnJlZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIEZyZWVfVHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI2XzciPlRvX0JlX0ZyZWU8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxMl83Ij5UeXA8L0E+KTsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgRnJlZV9UeXBlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMDlfNyI+VG9fQmVfRnJlZTwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPik7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIEZyZWVhcmdzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjZfNyI+VG9fQmVfRnJlZTwvQT4pOworICAgICAgICAgRnJlZWFyZ3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEwOV83Ij5Ub19CZV9GcmVlPC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTcyXzE0Ij5GcmVlX0FyZzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3M18xNCI+RnJlZV9Bcmc8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTFfMTQiPldyYXBfQnVpbHRpbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0M18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzI4Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMjgiPlR5cDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTJfOSI+RmllbGRfVHlwZTwvQT4nQ2xhc3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUzXzI4Ij5DZnQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OF8xMyI+Q19CdWlsdGluX1JvdXRlcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1Ml8xNCI+V3JhcF9CdWlsdGluPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1Ml8yOCI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTNfMjgiPlR5cDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTNfOSI+RmllbGRfVHlwZTwvQT4nQ2xhc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTRfMjgiPkNmdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ5XzEzIj5DX0J1aWx0aW5fUm91dGVyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDdfNyI+VXNyX0FyZzwvQT48L0ZPTlQ+ICAgOiA8Yj5jb25zdGFudDwvYj4gU3lzdGVtLkFkZHJlc3MgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNjJfMTMiPkdldF9Bcmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTFfMjgiPkZsZDwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDhfNyI+TG93X0xldmVsPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNTlfMTMiPkdldF9GaWVsZHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTFfMjgiPkZsZDwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfNyI+QXJnPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwXzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUxXzE2Ij5TZXRfRmxkX1R5cGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+RjwvQT48L0ZPTlQ+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1MV8yOCI+RmxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+Q2Y8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUzXzI4Ij5DZnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1M18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5BcmcxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlIik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxXzciPlVzcl9Bcmc8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IFN5c3RlbS5BZGRyZXNzIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzYxXzEzIj5HZXRfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUyXzI4Ij5GbGQ8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzJfNyI+TG93X0xldmVsPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNThfMTMiPkdldF9GaWVsZHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMjgiPkZsZDwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzM183Ij5Bcmc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzRfMTYiPlNldF9GbGRfVHlwZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzRfMTYiPkY8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMjgiPkZsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEzNF8xNiI+Q2Y8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTU0XzI4Ij5DZnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzRfMTYiPkFyZzE8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GbGRfVHlwZSwgInNldF9maWVsZF90eXBlX3VzZXIiKTsKIAogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ4XzciPkxvd19MZXZlbDwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM0XzQiPk51bGxfRmllbGRfVHlwZTwvQT4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1M18yOCI+Q2Z0PC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDhfMTMiPkNfQnVpbHRpbl9Sb3V0ZXI8L0E+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUzXzI4Ij5DZnQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OV8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTMyXzciPkxvd19MZXZlbDwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1NF8yOCI+Q2Z0PC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDlfMTMiPkNfQnVpbHRpbl9Sb3V0ZXI8L0E+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTU0XzI4Ij5DZnQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1MF8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ5XzciPkFyZzwvQT4gOj0gPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTFfOSI+QXJndW1lbnQ8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VXNyPC9BPiA9Jmd0OyBTeXN0ZW0uTnVsbF9BZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT4gPSZndDsgPGI+bmV3PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPidDbGFzcycoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUyXzI4Ij5UeXA8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzU5XzEzIj5HZXRfRmllbGR0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTUxXzI4Ij5GbGQ8L0E+KSk7Ci0gICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ3XzciPlVzcl9Bcmc8L0E+IC89IFN5c3RlbS5OdWxsX0FkZHJlc3MgPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDhfNyI+TG93X0xldmVsPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMjVfMTAiPkNvcHlhcmc8L0E+IC89IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDlfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VXNyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDhfNyI+TG93X0xldmVsPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDhfNyI+Q29weWFyZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE0N183Ij5Vc3JfQXJnPC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzNfNyI+QXJnPC9BPiA6PSA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxMl85Ij5Bcmd1bWVudDwvQT4nKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5Vc3I8L0E+ID0mZ3Q7IFN5c3RlbS5OdWxsX0FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPiA9Jmd0OyA8Yj5uZXc8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+J0NsYXNzJyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTNfMjgiPlR5cDwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNThfMTMiPkdldF9GaWVsZHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTJfMjgiPkZsZDwvQT4pKTsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzFfNyI+VXNyX0FyZzwvQT4gLz0gU3lzdGVtLk51bGxfQWRkcmVzcyA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEzMl83Ij5Mb3dfTGV2ZWw8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI2XzEwIj5Db3B5YXJnPC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTMzXzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+VXNyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzJfNyI+TG93X0xldmVsPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyNl8xMCI+Q29weWFyZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEzMV83Ij5Vc3JfQXJnPC9BPik7CiAgICAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ5XzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlVzcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ3XzciPlVzcl9Bcmc8L0E+OworICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTMzXzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+VXNyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzFfNyI+VXNyX0FyZzwvQT47CiAgICAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogCi0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNTBfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNTFfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1M18zMCI+QXJnMTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTQ5XzciPkFyZzwvQT4pOwotICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1MF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTUwXzciPlJlczwvQT4pOwotICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMzRfMTYiPlNldF9GbGRfVHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEzNl8zMCI+QXJnMTwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTMzXzciPkFyZzwvQT4pKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTFfMTQiPldyYXBfQnVpbHRpbjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE1Ml8xNCI+V3JhcF9CdWlsdGluPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzdfMTMiPkZpZWxkX0NoZWNrX1JvdXRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc3XzMzIj5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODBfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3OF8zMyI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc4XzEzIj5GaWVsZF9DaGVja19Sb3V0ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc4XzMzIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc5XzMzIj5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgyXzciPkFyZzwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiA6PSBUb19Bcmd1bWVudF9BY2Nlc3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3OF8zMyI+VXNyPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYyXzciPkFyZzwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPgorICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4gKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3OV8zMyI+VXNyPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTgyXzciPkFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xODJfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+Q2Z0PC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPgotICAgICAgICAgICAgICAgICAgICAgPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xODJfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfNyI+VHlwPC9BPiAvPSA8Yj5udWxsPC9iPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTgyXzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPkNmdDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI3XzEwIj5GY2hlY2s8L0E+IC89IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE4Ml83Ij5Bcmc8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyN18xMCI+RmNoZWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc3XzMzIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xODJfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VXNyPC9BPik7CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTYyXzciPkFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNjJfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNV83Ij5DZnQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNV80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+CisgICAgICAgICAgICAgICAgICAgICA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE2Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlR5cDwvQT4gLz0gPGI+bnVsbDwvYj4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE2Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMjhfMTAiPkZjaGVjazwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTYyXzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTVfNyI+Q2Z0PC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyOF8xMCI+RmNoZWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc4XzMzIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNjJfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5Vc3I8L0E+KTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDE7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc3XzEzIj5GaWVsZF9DaGVja19Sb3V0ZXI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzhfMTMiPkZpZWxkX0NoZWNrX1JvdXRlcjwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg1XzEzIj5DaGFyX0NoZWNrX1JvdXRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5M18zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg1XzMyIj5DaDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE4Nl8zMiI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg2XzEzIj5DaGFyX0NoZWNrX1JvdXRlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODZfMzIiPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODdfMzIiPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTZfNyI+QXJnPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNl85Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+IDo9IFRvX0FyZ3VtZW50X0FjY2VzcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg2XzMyIj5Vc3I8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzdfNyI+QXJnPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+CisgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiAoQXJndW1lbnRfQ29udmVyc2lvbnMuVG9fUG9pbnRlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg3XzMyIj5Vc3I8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTZfNyI+QXJnPC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Nl83Ij5Bcmc8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNF80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+Ci0gICAgICAgICAgICAgICAgICAgICA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Nl83Ij5Bcmc8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxMl83Ij5UeXA8L0E+IC89IDxiPm51bGw8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTZfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+Q2Z0PC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMjhfMTAiPkNjaGVjazwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTk2XzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPkNmdDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI4XzEwIj5DY2hlY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODVfMzIiPkNoPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTk2XzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlVzcjwvQT4pOworICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE3N183Ij5Bcmc8L0E+IC89IDxiPm51bGw8L2I+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTc3XzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTVfNyI+Q2Z0PC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPgorICAgICAgICAgICAgICAgICAgICAgPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNzdfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxM183Ij5UeXA8L0E+IC89IDxiPm51bGw8L2I+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNzdfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNV83Ij5DZnQ8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI5XzEwIj5DY2hlY2s8L0E+IC89IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE3N183Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMjlfMTAiPkNjaGVjazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE4Nl8zMiI+Q2g8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNzdfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5Vc3I8L0E+KTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDE7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg1XzEzIj5DaGFyX0NoZWNrX1JvdXRlcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE4Nl8xMyI+Q2hhcl9DaGVja19Sb3V0ZXI8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE5M18xMyI+TmV4dF9Sb3V0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE5M18yNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE5NF8yNiI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTk0XzEzIj5OZXh0X1JvdXRlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTRfMjYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE5NV8yNiI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMF83Ij5Bcmc8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4gOj0gVG9fQXJndW1lbnRfQWNjZXNzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTRfMjYiPlVzcjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Ml83Ij5Bcmc8L0E+PC9zcGFuPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4KKyAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxN185Ij5Bcmd1bWVudF9BY2Nlc3M8L0E+IChBcmd1bWVudF9Db252ZXJzaW9ucy5Ub19Qb2ludGVyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTVfMjYiPlVzcjwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIxMF83Ij5Bcmc8L0E+IC89IDxiPm51bGw8L2I+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjEwXzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPkNmdDwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM0XzQiPk51bGxfRmllbGRfVHlwZTwvQT4KLSAgICAgICAgICAgICAgICAgICAgIDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjEwXzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEyXzciPlR5cDwvQT4gLz0gPGI+bnVsbDwvYj4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIxMF83Ij5Bcmc8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNF83Ij5DZnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEyOV8xMCI+TmV4dDwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjEwXzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPkNmdDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI5XzEwIj5OZXh0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTkzXzI2Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMTBfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VXNyPC9BPik7CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTkyXzciPkFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTJfNyI+QXJnPC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxNV83Ij5DZnQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNV80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+CisgICAgICAgICAgICAgICAgICAgICA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjEzXzciPlR5cDwvQT4gLz0gPGI+bnVsbDwvYj4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzBfMTAiPk5leHQ8L0E+IC89IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzBfMTAiPk5leHQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTRfMjYiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE5Ml83Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPlVzcjwvQT4pOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gMTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTNfMTMiPk5leHRfUm91dGVyPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTk0XzEzIj5OZXh0X1JvdXRlcjwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAxXzEzIj5QcmV2X1JvdXRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAxXzI2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAyXzI2Ij5Vc3I8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDJfMTMiPlByZXZfUm91dGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwMl8yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAzXzI2Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI0XzciPkFyZzwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTZfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMzVfNDEiPlRvX0FyZ3VtZW50X0FjY2VzczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwMl8yNiI+VXNyPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA3XzciPkFyZzwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPiA6PQorICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE3XzkiPkFyZ3VtZW50X0FjY2VzczwvQT4gKEFyZ3VtZW50X0NvbnZlcnNpb25zLlRvX1BvaW50ZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwM18yNiI+VXNyPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjI0XzciPkFyZzwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjRfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+Q2Z0PC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPgotICAgICAgICAgICAgICAgICAgICAgPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjRfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfNyI+VHlwPC9BPiAvPSA8Yj5udWxsPC9iPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjI0XzciPkFyZzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE0XzciPkNmdDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTI5XzE2Ij5QcmV2PC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjRfNyI+QXJnPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+Q2Z0PC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMjlfMTYiPlByZXY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDFfMjYiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIyNF83Ij5Bcmc8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIxM183Ij5Vc3I8L0E+KTsKKyAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMDdfNyI+QXJnPC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIwN183Ij5Bcmc8L0E+LjxiPmFsbDwvYj4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjE1XzciPkNmdDwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4KKyAgICAgICAgICAgICAgICAgICAgIDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjA3XzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTNfNyI+VHlwPC9BPiAvPSA8Yj5udWxsPC9iPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjA3XzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTVfNyI+Q2Z0PC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMF8xNiI+UHJldjwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjA3XzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTVfNyI+Q2Z0PC9BPi48Yj5hbGw8L2I+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMF8xNiI+UHJldjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwMl8yNiI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjA3XzciPkFyZzwvQT4uPGI+YWxsPC9iPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTRfNyI+VXNyPC9BPik7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiAxOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIwMV8xMyI+UHJldl9Sb3V0ZXI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDJfMTMiPlByZXZfUm91dGVyPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OF8xMyI+Q19CdWlsdGluX1JvdXRlcjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ5XzEzIj5DX0J1aWx0aW5fUm91dGVyPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOV83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQwXzciPlQ8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIzXzciPlQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDNfNCI+TV9CdWlsdGluX1JvdXRlcjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjQwXzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyMl8xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3N18xMyI+RmllbGRfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODVfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDBfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ0XzQiPk1fQnVpbHRpbl9Sb3V0ZXI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIyM183Ij5UPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjNfMTMiPk5ld19GaWVsZHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzhfMTMiPkZpZWxkX0NoZWNrX1JvdXRlcjwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg2XzEzIj5DaGFyX0NoZWNrX1JvdXRlcjwvQT4nPGI+QWNjZXNzPC9iPik7CisgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjIzXzciPlQ8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTM1XzQiPk51bGxfRmllbGRfVHlwZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIzOV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyN18xMyI+U2V0X0ZpZWxkdHlwZV9Bcmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDBfNyI+VDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18xMyI+Q29weV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3Ml8xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pOwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIzOV83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjM5XzciPlJlczwvQT4pOwotICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjhfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjIzXzciPlQ8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2M18xMyI+TWFrZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY4XzEzIj5Db3B5X0FyZzwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzNfMTQiPkZyZWVfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+KSk7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0M180Ij5NX0J1aWx0aW5fUm91dGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDBfNyI+VDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDRfNCI+TV9CdWlsdGluX1JvdXRlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjIzXzciPlQ8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQzXzQiPk1fQnVpbHRpbl9Sb3V0ZXI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNF80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+KTsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQzXzQiPk1fQnVpbHRpbl9Sb3V0ZXI8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDhfMTMiPkNfQnVpbHRpbl9Sb3V0ZXI8L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NF80Ij5NX0J1aWx0aW5fUm91dGVyPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NF80Ij5NX0J1aWx0aW5fUm91dGVyPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ5XzEzIj5DX0J1aWx0aW5fUm91dGVyPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OV8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTBfMTMiPkNfQ2hvaWNlX1JvdXRlcjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjZfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2N183Ij5UPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0Nl83Ij5UPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ0XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjY3XzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyMl8xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3N18xMyI+RmllbGRfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODVfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNjdfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ1XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjQ2XzciPlQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyM18xMyI+TmV3X0ZpZWxkdHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3OF8xMyI+RmllbGRfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODZfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDZfNyI+VDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjY2XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjI3XzEzIj5TZXRfRmllbGR0eXBlX0FyZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI2N183Ij5UPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTYyXzEzIj5NYWtlX0FyZzwvQT4nPGI+QWNjZXNzPC9iPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY3XzEzIj5Db3B5X0FyZzwvQT4nPGI+QWNjZXNzPC9iPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTcyXzE0Ij5GcmVlX0FyZzwvQT4nPGI+QWNjZXNzPC9iPik7Ci0gICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjY2XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNjZfNyI+UmVzPC9BPik7Ci0gICAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKKyAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyOF8xMyI+U2V0X0ZpZWxkdHlwZV9Bcmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDZfNyI+VDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTYzXzEzIj5NYWtlX0FyZzwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjhfMTMiPkNvcHlfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE3M18xNCI+RnJlZV9Bcmc8L0E+JzxiPkFjY2VzczwvYj4pKTsKIAotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjY2XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM0XzEzIj5TZXRfRmllbGR0eXBlX0Nob2ljZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI2N183Ij5UPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTkzXzEzIj5OZXh0X1JvdXRlcjwvQT4nPGI+QWNjZXNzPC9iPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAxXzEzIj5QcmV2X1JvdXRlcjwvQT4nPGI+QWNjZXNzPC9iPik7Ci0gICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjY2XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNjZfNyI+UmVzPC9BPik7Ci0gICAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKKyAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIzNV8xMyI+U2V0X0ZpZWxkdHlwZV9DaG9pY2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yNDZfNyI+VDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTk0XzEzIj5OZXh0X1JvdXRlcjwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDJfMTMiPlByZXZfUm91dGVyPC9BPic8Yj5BY2Nlc3M8L2I+KSk7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NF80Ij5NX0Nob2ljZV9Sb3V0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI2N183Ij5UPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NV80Ij5NX0Nob2ljZV9Sb3V0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI0Nl83Ij5UPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NF80Ij5NX0Nob2ljZV9Sb3V0ZXI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzNF80Ij5OdWxsX0ZpZWxkX1R5cGU8L0E+KTsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ0XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OV8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNDVfNCI+TV9DaG9pY2VfUm91dGVyPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0NV80Ij5NX0Nob2ljZV9Sb3V0ZXI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNTBfMTMiPkNfQ2hvaWNlX1JvdXRlcjwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDNfNDEiPkZpZWxkX1R5cGVzPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDRfNDEiPkZpZWxkX1R5cGVzPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtCmluZGV4IDAzMjIwYzUuLmEyMmI1ZDUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtCkBAIC0xLDI0NSArMSwyNTggQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlcy5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXMuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xNCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVHlwZXMgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xOSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDNfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzUwXzQ2Ij5GaWVsZF9UeXBlczwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT4pOwotICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzEyIj5DX0ludDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzUxXzQ2Ij5GaWVsZF9UeXBlczwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT4pOworICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMTIiPkNfSW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGR0eXBlLjN4Lmh0bWwiPmZvcm1fZmllbGR0eXBlLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkdHlwZS4zeC5odG1sIj5mb3JtX2ZpZWxkdHlwZS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPiA8Yj50YWdnZWQ8L2I+IDxiPm51bGw8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFic3RyYWN0IGJhc2UgdHlwZSBmb3IgYWxsIGZpZWxkIHR5cGVzLiBBIGNvbmNyZXRlIGZpZWxkIHR5cGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaXMgYW4gZXh0ZW5zaW9uIHRoYXQgYWRkcyBzb21lIGRhdGEgZWxlbWVudHMgZGVzY3JpYmluZyBmb3JtYXRzIG9yPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGJvdW5kYXJ5IHZhbHVlcyBmb3IgdGhlIHR5cGUgYW5kIHZhbGlkYXRpb24gcm91dGluZXMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEZvciB0aGUgYnVpbHRpbiBsb3ctbGV2ZWwgZmllbGR0eXBlcywgdGhlIHZhbGlkYXRpb24gcm91dGluZXMgYXJlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGFscmVhZHkgZGVmaW5lZCBieSB0aGUgbG93LWxldmVsIEMgbGlicmFyeS48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIGJ1aWx0aW4gdHlwZXMgbGlrZSBBbHBoYSBvciBBbHBoYU51bWVyaWMgZXRjLiBhcmUgZGVmaW5lZCBpbjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBjaGlsZCBwYWNrYWdlcyBvZiB0aGlzIHBhY2thZ2UuIFlvdSBtYXkgdXNlIG9uZSBvZiB0aGVtIGFzIGV4YW1wbGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaG93IHRvIGNyZWF0ZSB5b3Ugb3duIGNoaWxkIHBhY2thZ2VzIGZvciBsb3ctbGV2ZWwgZmllbGQgdHlwZXMgdGhhdDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB5b3UgbWF5IGhhdmUgYWxyZWFkeSB3cml0dGVuIGluIEMuPC9FTT48L0ZPTlQ+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfOSI+RmllbGRfVHlwZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hYnN0cmFjdDwvYj4gPGI+dGFnZ2VkPC9iPiA8Yj5udWxsPC9iPiA8Yj5yZWNvcmQ8L2I+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQWJzdHJhY3QgYmFzZSB0eXBlIGZvciBhbGwgZmllbGQgdHlwZXMuIEEgY29uY3JldGUgZmllbGQgdHlwZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaXMgYW4gZXh0ZW5zaW9uIHRoYXQgYWRkcyBzb21lIGRhdGEgZWxlbWVudHMgZGVzY3JpYmluZyBmb3JtYXRzIG9yPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBib3VuZGFyeSB2YWx1ZXMgZm9yIHRoZSB0eXBlIGFuZCB2YWxpZGF0aW9uIHJvdXRpbmVzLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRm9yIHRoZSBidWlsdGluIGxvdy1sZXZlbCBmaWVsZHR5cGVzLCB0aGUgdmFsaWRhdGlvbiByb3V0aW5lcyBhcmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGFscmVhZHkgZGVmaW5lZCBieSB0aGUgbG93LWxldmVsIEMgbGlicmFyeS48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoZSBidWlsdGluIHR5cGVzIGxpa2UgQWxwaGEgb3IgQWxwaGFOdW1lcmljIGV0Yy4gYXJlIGRlZmluZWQgaW48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGNoaWxkIHBhY2thZ2VzIG9mIHRoaXMgcGFja2FnZS4gWW91IG1heSB1c2Ugb25lIG9mIHRoZW0gYXMgZXhhbXBsZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaG93IHRvIGNyZWF0ZSB5b3Ugb3duIGNoaWxkIHBhY2thZ2VzIGZvciBsb3ctbGV2ZWwgZmllbGQgdHlwZXMgdGhhdDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgeW91IG1heSBoYXZlIGFscmVhZHkgd3JpdHRlbiBpbiBDLjwvRU0+PC9zcGFuPgogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzkiPkZpZWxkX1R5cGVfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPidDbGFzczsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF85Ij5GaWVsZF9UeXBlX0FjY2VzczwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNTNfOSI+RmllbGRfVHlwZTwvQT4nQ2xhc3M7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2XzE0Ij5TZXRfRmllbGRfVHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl82Nl8xNCI+RmxkPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzY2XzE0Ij5GbGRfVHlwZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZpZWxkX1R5cGU8L0E+KSA8Yj5pczwvYj4gPGI+YWJzdHJhY3Q8L2I+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkdHlwZS4zeC5odG1sIj5zZXRfZmllbGRfdHlwZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCdXQ6IHdlIGhpZGUgdGhlIHZhcmFyZyBtZWNoYW5pc20gb2YgdGhlIEMgaW50ZXJmYWNlLiBZb3UgYWx3YXlzPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgaGF2ZSB0byBwYXNzIGEgc2luZ2xlIEZpZWxkX1R5cGUgcGFyYW1ldGVyLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMTQiPlNldF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNjdfMTQiPkZsZDwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNjdfMTQiPkZsZF9UeXBlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81M185Ij5GaWVsZF9UeXBlPC9BPikgPGI+aXM8L2I+IDxiPmFic3RyYWN0PC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGR0eXBlLjN4Lmh0bWwiPnNldF9maWVsZF90eXBlKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCdXQ6IHdlIGhpZGUgdGhlIHZhcmFyZyBtZWNoYW5pc20gb2YgdGhlIEMgaW50ZXJmYWNlLiBZb3UgYWx3YXlzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgIGhhdmUgdG8gcGFzcyBhIHNpbmdsZSBGaWVsZF9UeXBlIHBhcmFtZXRlci48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4Lmh0bWwiPmZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4Lmh0bWwiPmZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzFfMTMiPkdldF9UeXBlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzlfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzcxXzIzIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNjNfOSI+RmllbGRfVHlwZV9BY2Nlc3M8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX3ZhbGlkYXRpb24uM3guaHRtbCI+ZmllbGRfdHlwZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGZpZWxkX2FyZygpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEluIEFkYTk1IHdlIGNhbiBjb21iaW5lIHRoZXNlLiBJZiB5b3UgdHJ5IHRvIHJldHJpZXZlIHRoZSBmaWVsZCB0eXBlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHRoYXQgaXMgbm90IGRlZmluZWQgYXMgZXh0ZW5zaW9uIG9mIHRoZSBhYnN0cmFjdCB0YWdnZWQgdHlwZSBhYm92ZSw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgeW91IHdpbGwgcmFpc2UgYSBGb3JtX0V4Y2VwdGlvbi48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyBub3QgaW5saW5lZDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzBfMTMiPkdldF9UeXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfNzBfMjMiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzY0XzkiPkZpZWxkX1R5cGVfQWNjZXNzPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfdmFsaWRhdGlvbi4zeC5odG1sIj5maWVsZF90eXBlKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGZpZWxkX2FyZygpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJbiBBZGE5NSB3ZSBjYW4gY29tYmluZSB0aGVzZS4gSWYgeW91IHRyeSB0byByZXRyaWV2ZSB0aGUgZmllbGQgdHlwZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhhdCBpcyBub3QgZGVmaW5lZCBhcyBleHRlbnNpb24gb2YgdGhlIGFic3RyYWN0IHRhZ2dlZCB0eXBlIGFib3ZlLDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgeW91IHdpbGwgcmFpc2UgYSBGb3JtX0V4Y2VwdGlvbi48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgaXMgbm90IGlubGluZWQ8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IFByaXZhdGUgUGFydC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNb3N0IG9mIHRoaXMgaXMgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBjaGlsZCBwYWNrYWdlcy48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgUHJpdmF0ZSBQYXJ0LjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNb3N0IG9mIHRoaXMgaXMgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBjaGlsZCBwYWNrYWdlcy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KIDxiPnByaXZhdGU8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkyXzkiPk1ha2VhcmdfRnVuY3Rpb248L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPgotICAgICA8Yj5mdW5jdGlvbjwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTNfMTYiPkFyZ3M8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IFN5c3RlbS5BZGRyZXNzOwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85Ml85Ij5NYWtlYXJnX0Z1bmN0aW9uPC9BPik7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTNfOSI+TWFrZWFyZ19GdW5jdGlvbjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+CisgICAgIDxiPmZ1bmN0aW9uPC9iPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0XzE2Ij5BcmdzPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiBTeXN0ZW0uQWRkcmVzczsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfOTNfOSI+TWFrZWFyZ19GdW5jdGlvbjwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk2XzkiPkNvcHlhcmdfRnVuY3Rpb248L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPgotICAgICA8Yj5mdW5jdGlvbjwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTdfMTYiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzk2XzkiPkNvcHlhcmdfRnVuY3Rpb248L0E+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85N185Ij5Db3B5YXJnX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4KKyAgICAgPGI+ZnVuY3Rpb248L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOThfMTYiPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7CisgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzk3XzkiPkNvcHlhcmdfRnVuY3Rpb248L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDBfOSI+RnJlZWFyZ19GdW5jdGlvbjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+Ci0gICAgIDxiPnByb2NlZHVyZTwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxXzE3Ij5Vc3I8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKTsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTAwXzkiPkZyZWVhcmdfRnVuY3Rpb248L0E+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDFfOSI+RnJlZWFyZ19GdW5jdGlvbjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+CisgICAgIDxiPnByb2NlZHVyZTwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDJfMTciPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpOworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDFfOSI+RnJlZWFyZ19GdW5jdGlvbjwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNF85Ij5GaWVsZF9DaGVja19GdW5jdGlvbjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+Ci0gICAgIDxiPmZ1bmN0aW9uPC9iPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDVfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNV8yOSI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDRfOSI+RmllbGRfQ2hlY2tfRnVuY3Rpb248L0E+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDVfOSI+RmllbGRfQ2hlY2tfRnVuY3Rpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPgorICAgICA8Yj5mdW5jdGlvbjwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDZfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2XzI5Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDVfOSI+RmllbGRfQ2hlY2tfRnVuY3Rpb248L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDhfOSI+Q2hhcl9DaGVja19GdW5jdGlvbjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+Ci0gICAgIDxiPmZ1bmN0aW9uPC9iPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDlfMTYiPkNoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8yOCI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDhfOSI+Q2hhcl9DaGVja19GdW5jdGlvbjwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOV85Ij5DaGFyX0NoZWNrX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4KKyAgICAgPGI+ZnVuY3Rpb248L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwXzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDdfMTIiPkNfSW50PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMF8yOCI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTA5XzkiPkNoYXJfQ2hlY2tfRnVuY3Rpb248L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTJfOSI+Q2hvaWNlX0Z1bmN0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4KLSAgICAgPGI+ZnVuY3Rpb248L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExM18xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEzXzI5Ij5Vc3I8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzExMl85Ij5DaG9pY2VfRnVuY3Rpb248L0E+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTNfOSI+Q2hvaWNlX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4KKyAgICAgPGI+ZnVuY3Rpb248L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE0XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNF8yOSI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTEzXzkiPkNob2ljZV9GdW5jdGlvbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgVGhpcyBtdXN0IGJlIGluIHN5bmMgd2l0aCB0aGUgRklFTERUWVBFIHN0cnVjdHVyZSBpbiBmb3JtLmg8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTlfOSI+TG93X0xldmVsX0ZpZWxkX1R5cGU8L0E+PC9GT05UPiA8Yj5pczwvYj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IFRoaXMgbXVzdCBiZSBpbiBzeW5jIHdpdGggdGhlIEZJRUxEVFlQRSBzdHJ1Y3R1cmUgaW4gZm9ybS5oPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIwXzkiPkxvd19MZXZlbF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMV8xMCI+U3RhdHVzPC9BPjwvRk9OVD4gOiAgICAgICAgICAgICAgPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuc2hvcnQ7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMl8xMCI+UmVmX0NvdW50PC9BPjwvRk9OVD4gOiAgICAgICAgICAgPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMubG9uZzsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzEwIj5MZWZ0PC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzE2Ij5SaWdodDwvQT48L0ZPTlQ+IDogICAgICAgICBTeXN0ZW0uQWRkcmVzczsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0XzEwIj5NYWtlYXJnPC9BPjwvRk9OVD4gOiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85Ml85Ij5NYWtlYXJnX0Z1bmN0aW9uPC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1XzEwIj5Db3B5YXJnPC9BPjwvRk9OVD4gOiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85Nl85Ij5Db3B5YXJnX0Z1bmN0aW9uPC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2XzEwIj5GcmVlYXJnPC9BPjwvRk9OVD4gOiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDBfOSI+RnJlZWFyZ19GdW5jdGlvbjwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyN18xMCI+RmNoZWNrPC9BPjwvRk9OVD4gOiAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTA0XzkiPkZpZWxkX0NoZWNrX0Z1bmN0aW9uPC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4XzEwIj5DY2hlY2s8L0E+PC9GT05UPiA6ICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDhfOSI+Q2hhcl9DaGVja19GdW5jdGlvbjwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOV8xMCI+TmV4dDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOV8xNiI+UHJldjwvQT48L0ZPTlQ+IDogICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTEyXzkiPkNob2ljZV9GdW5jdGlvbjwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIyXzEwIj5TdGF0dXM8L0E+PC9zcGFuPiA6ICAgICAgICAgICAgICA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy51bnNpZ25lZF9zaG9ydDsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjNfMTAiPlJlZl9Db3VudDwvQT48L3NwYW4+IDogICAgICAgICAgIDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmxvbmc7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI0XzEwIj5MZWZ0PC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjRfMTYiPlJpZ2h0PC9BPjwvc3Bhbj4gOiAgICAgICAgIFN5c3RlbS5BZGRyZXNzOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNV8xMCI+TWFrZWFyZzwvQT48L3NwYW4+IDogICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfOTNfOSI+TWFrZWFyZ19GdW5jdGlvbjwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2XzEwIj5Db3B5YXJnPC9BPjwvc3Bhbj4gOiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85N185Ij5Db3B5YXJnX0Z1bmN0aW9uPC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMTAiPkZyZWVhcmc8L0E+PC9zcGFuPiA6ICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwMV85Ij5GcmVlYXJnX0Z1bmN0aW9uPC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjhfMTAiPkZjaGVjazwvQT48L3NwYW4+IDogICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwNV85Ij5GaWVsZF9DaGVja19GdW5jdGlvbjwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzEwIj5DY2hlY2s8L0E+PC9zcGFuPiA6ICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDlfOSI+Q2hhcl9DaGVja19GdW5jdGlvbjwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMwXzEwIj5OZXh0PC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzBfMTYiPlByZXY8L0E+PC9zcGFuPiA6ICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzExM185Ij5DaG9pY2VfRnVuY3Rpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMTlfOSI+TG93X0xldmVsX0ZpZWxkX1R5cGU8L0E+KTsKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTE5XzkiPkxvd19MZXZlbF9GaWVsZF9UeXBlPC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTIwXzkiPkxvd19MZXZlbF9GaWVsZF9UeXBlPC9BPik7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTIwXzkiPkxvd19MZXZlbF9GaWVsZF9UeXBlPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzRfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPjwvRk9OVD4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8Yj5udWxsPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzVfNCI+TnVsbF9GaWVsZF9UeXBlPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8Yj5udWxsPC9iPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IFRoaXMgZm91ciBsb3ctbGV2ZWwgZmllbGR0eXBlcyBhcmUgdGhlIG9uZXMgYXNzb2NpYXRlZCB3aXRoPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgZmllbGR0eXBlcyBoYW5kbGVkIGJ5IHRoaXMgYmluZGluZy4gQW55IG90aGVyIGxvdy1sZXZlbCBmaWVsZHR5cGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCB3aWxsIHJlc3VsdCBpbiBhIEZvcm1fRXhjZXB0aW9uIGlzIGZ1bmN0aW9uIEdldF9UeXBlLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MV80Ij5NX0dlbmVyaWNfVHlwZTwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8Yj5udWxsPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyXzQiPk1fR2VuZXJpY19DaG9pY2U8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzMl85Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxiPm51bGw8L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDNfNCI+TV9CdWlsdGluX1JvdXRlcjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPGI+bnVsbDwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NF80Ij5NX0Nob2ljZV9Sb3V0ZXI8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8Yj5udWxsPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IFRoaXMgZm91ciBsb3ctbGV2ZWwgZmllbGR0eXBlcyBhcmUgdGhlIG9uZXMgYXNzb2NpYXRlZCB3aXRoPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IGZpZWxkdHlwZXMgaGFuZGxlZCBieSB0aGlzIGJpbmRpbmcuIEFueSBvdGhlciBsb3ctbGV2ZWwgZmllbGR0eXBlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IHdpbGwgcmVzdWx0IGluIGEgRm9ybV9FeGNlcHRpb24gaXMgZnVuY3Rpb24gR2V0X1R5cGUuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQyXzQiPk1fR2VuZXJpY19UeXBlPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxiPm51bGw8L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0M180Ij5NX0dlbmVyaWNfQ2hvaWNlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPiA6PSA8Yj5udWxsPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDRfNCI+TV9CdWlsdGluX1JvdXRlcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPGI+bnVsbDwvYj47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1XzQiPk1fQ2hvaWNlX1JvdXRlcjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxiPm51bGw8L2I+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFR3byB3cmFwcGVyIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhvc2UgbG93LWxldmVsIGZpZWxkdHlwZXMgZGVmaW5lZDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpbiB0aGlzIHBhY2thZ2UuPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIzN18xMyI+Q19CdWlsdGluX1JvdXRlcjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI2NF8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPjwvRk9OVD4gIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUd28gd3JhcHBlciBmdW5jdGlvbnMgdG8gYWNjZXNzIHRob3NlIGxvdy1sZXZlbCBmaWVsZHR5cGVzIGRlZmluZWQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGluIHRoaXMgcGFja2FnZS48L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjFfMTMiPkNfQnVpbHRpbl9Sb3V0ZXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzI0NF8xMyI+Q19DaG9pY2VfUm91dGVyPC9BPjwvc3Bhbj4gIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE0M18xNCI+V3JhcF9CdWlsdGluPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUxXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDNfMjgiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTJfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE0NF8yOCI+VHlwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl81Ml85Ij5GaWVsZF9UeXBlPC9BPidDbGFzczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUzXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNDVfMjgiPkNmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTQ4XzEzIj5DX0J1aWx0aW5fUm91dGVyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoaXMgcHJvY2VkdXJlIGhhcyB0byBiZSBjYWxsZWQgYnkgdGhlIFNldF9GaWVsZF9UeXBlIGltcGxlbWVudGF0aW9uPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGZvciBidWlsdGluIGxvdy1sZXZlbCBmaWVsZHR5cGVzIHRvIHJlcGxhY2UgaXQgYnkgYW4gQWRhOTU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgY29uZm9ybWFudCBGaWVsZF9UeXBlIG9iamVjdC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIHBhcmFtZXRlciBDZnQgbXVzdCBiZSBDX0J1aWx0aW5fUm91dGVyIGZvciByZWd1bGFyIGxvdy1sZXZlbDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBmaWVsZHR5cGVzIChsaWtlIFRZUF9BTFBIQSBvciBUWVBfQUxOVU0pIGFuZCBDX0Nob2ljZV9Sb3V0ZXIgZm9yPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGxvdy1sZXZlbCBmaWVsZHR5cGVzIHdpdGNoIGNob2ljZSBmdW5jdGlvbnMgKGxpa2UgVFlQX0VOVU0pLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBbnkgb3RoZXIgdmFsdWUgd2lsbCByYWlzZSBhIEZvcm1fRXhjZXB0aW9uLjwvRU0+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjdfMTQiPldyYXBfQnVpbHRpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMjdfMjgiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1M18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI4XzI4Ij5UeXA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzUzXzkiPkZpZWxkX1R5cGU8L0E+J0NsYXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTI5XzI4Ij5DZnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE0OV8xMyI+Q19CdWlsdGluX1JvdXRlcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBwcm9jZWR1cmUgaGFzIHRvIGJlIGNhbGxlZCBieSB0aGUgU2V0X0ZpZWxkX1R5cGUgaW1wbGVtZW50YXRpb248L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGZvciBidWlsdGluIGxvdy1sZXZlbCBmaWVsZHR5cGVzIHRvIHJlcGxhY2UgaXQgYnkgYW4gQWRhOTU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGNvbmZvcm1hbnQgRmllbGRfVHlwZSBvYmplY3QuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgcGFyYW1ldGVyIENmdCBtdXN0IGJlIENfQnVpbHRpbl9Sb3V0ZXIgZm9yIHJlZ3VsYXIgbG93LWxldmVsPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmaWVsZHR5cGVzIChsaWtlIFRZUF9BTFBIQSBvciBUWVBfQUxOVU0pIGFuZCBDX0Nob2ljZV9Sb3V0ZXIgZm9yPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBsb3ctbGV2ZWwgZmllbGR0eXBlcyB3aXRjaCBjaG9pY2UgZnVuY3Rpb25zIChsaWtlIFRZUF9FTlVNKS48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFueSBvdGhlciB2YWx1ZSB3aWxsIHJhaXNlIGEgRm9ybV9FeGNlcHRpb24uPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfOTVfMTMiPk1ha2VfQXJnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl85NV8yMyI+QXJnczwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2Ml8xMyI+TWFrZV9Bcmc8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyB0aGUgTWFrZWFyZ19GdW5jdGlvbiBmb3IgdGhlIGludGVybmFsIGxvdy1sZXZlbCB0eXBlczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpbnRyb2R1Y2VkIGJ5IHRoaXMgYmluZGluZy48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYzXzEzIj5NYWtlX0FyZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYzXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjNfMTMiPkFyZ3M8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IFN5c3RlbS5BZGRyZXNzOworICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1ha2VfQXJnLCAidm9pZF9zdGFyX21ha2VfYXJnIik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSBNYWtlYXJnX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpbnRyb2R1Y2VkIGJ5IHRoaXMgYmluZGluZy48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTNfMTMiPkNvcHlfQXJnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTNfMjMiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2N18xMyI+Q29weV9Bcmc8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyB0aGUgQ29weWFyZ19GdW5jdGlvbiBmb3IgdGhlIGludGVybmFsIGxvdy1sZXZlbCB0eXBlczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpbnRyb2R1Y2VkIGJ5IHRoaXMgYmluZGluZy48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl85Nl8xMyI+Q29weV9Bcmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfOTZfMjMiPlVzcjwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gU3lzdGVtLkFkZHJlc3M7CisgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzE2OF8xMyI+Q29weV9Bcmc8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgaXMgdGhlIENvcHlhcmdfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGludHJvZHVjZWQgYnkgdGhpcyBiaW5kaW5nLjwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTlfMTQiPkZyZWVfQXJnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xMTlfMjQiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpOwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzJfMTQiPkZyZWVfQXJnPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoaXMgaXMgdGhlIEZyZWVhcmdfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaW50cm9kdWNlZCBieSB0aGlzIGJpbmRpbmcuPC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzEwMl8xNCI+RnJlZV9Bcmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3M18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTAyXzI0Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKTsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTczXzE0Ij5GcmVlX0FyZzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgRnJlZWFyZ19GdW5jdGlvbiBmb3IgdGhlIGludGVybmFsIGxvdy1sZXZlbCB0eXBlczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaW50cm9kdWNlZCBieSB0aGlzIGJpbmRpbmcuPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTc5XzEzIj5GaWVsZF9DaGVja19Sb3V0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzdfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE3OV8zMyI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc4XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xODBfMzMiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc3XzEzIj5GaWVsZF9DaGVja19Sb3V0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyB0aGUgRmllbGRfQ2hlY2tfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaW50cm9kdWNlZCB0byB3cmFwIHRoZSBsb3ctbGV2ZWwgdHlwZXMgYnkgYSBGaWVsZF9UeXBlIGRlcml2ZWQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdHlwZS4gSXQgcm91dGVzIHRoZSBjYWxsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1sZXZlbCB2YWxpZGF0aW9uPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGZ1bmN0aW9uLjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1OV8xMyI+RmllbGRfQ2hlY2tfUm91dGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzhfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE1OV8zMyI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzlfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE2MF8zMyI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTc4XzEzIj5GaWVsZF9DaGVja19Sb3V0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgaXMgdGhlIEZpZWxkX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpbnRyb2R1Y2VkIHRvIHdyYXAgdGhlIGxvdy1sZXZlbCB0eXBlcyBieSBhIEZpZWxkX1R5cGUgZGVyaXZlZDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdHlwZS4gSXQgcm91dGVzIHRoZSBjYWxsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1sZXZlbCB2YWxpZGF0aW9uPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTNfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTNfMzIiPkNoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg2XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xOTRfMzIiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTg1XzEzIj5DaGFyX0NoZWNrX1JvdXRlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBDaGFyX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGludHJvZHVjZWQgdG8gd3JhcCB0aGUgbG93LWxldmVsIHR5cGVzIGJ5IGEgRmllbGRfVHlwZSBkZXJpdmVkPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHR5cGUuIEl0IHJvdXRlcyB0aGUgY2FsbCB0byB0aGUgY29ycmVzcG9uZGluZyBsb3ctbGV2ZWwgdmFsaWRhdGlvbjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xNzRfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE3NF8zMiI+Q2g8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ3XzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4N18zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTc1XzMyIj5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xODZfMTMiPkNoYXJfQ2hlY2tfUm91dGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSBDaGFyX0NoZWNrX0Z1bmN0aW9uIGZvciB0aGUgaW50ZXJuYWwgbG93LWxldmVsIHR5cGVzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpbnRyb2R1Y2VkIHRvIHdyYXAgdGhlIGxvdy1sZXZlbCB0eXBlcyBieSBhIEZpZWxkX1R5cGUgZGVyaXZlZDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdHlwZS4gSXQgcm91dGVzIHRoZSBjYWxsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1sZXZlbCB2YWxpZGF0aW9uPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMDdfMTMiPk5leHRfUm91dGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMDdfMjYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMDhfMjYiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTkzXzEzIj5OZXh0X1JvdXRlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBDaG9pY2VfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaW50cm9kdWNlZCB0byB3cmFwIHRoZSBsb3ctbGV2ZWwgdHlwZXMgYnkgYSBGaWVsZF9UeXBlIGRlcml2ZWQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdHlwZS4gSXQgcm91dGVzIHRoZSBjYWxsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1sZXZlbCBuZXh0X2Nob2ljZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8xODlfMTMiPk5leHRfUm91dGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzE4OV8yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMTkwXzI2Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xOTRfMTMiPk5leHRfUm91dGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSBDaG9pY2VfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGludHJvZHVjZWQgdG8gd3JhcCB0aGUgbG93LWxldmVsIHR5cGVzIGJ5IGEgRmllbGRfVHlwZSBkZXJpdmVkPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0eXBlLiBJdCByb3V0ZXMgdGhlIGNhbGwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LWxldmVsIG5leHRfY2hvaWNlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjFfMTMiPlByZXZfUm91dGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjFfMjYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMjJfMjYiPlVzcjwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfNDZfMTIiPkNfSW50PC9BPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjAxXzEzIj5QcmV2X1JvdXRlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBDaG9pY2VfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaW50cm9kdWNlZCB0byB3cmFwIHRoZSBsb3ctbGV2ZWwgdHlwZXMgYnkgYSBGaWVsZF9UeXBlIGRlcml2ZWQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdHlwZS4gSXQgcm91dGVzIHRoZSBjYWxsIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1sZXZlbCBwcmV2X2Nob2ljZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZGIuaHRtI3JlZl8yMDRfMTMiPlByZXZfUm91dGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2FkYi5odG0jcmVmXzIwNF8yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwM18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRiLmh0bSNyZWZfMjA1XzI2Ij5Vc3I8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMDJfMTMiPlByZXZfUm91dGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIHRoZSBDaG9pY2VfRnVuY3Rpb24gZm9yIHRoZSBpbnRlcm5hbCBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGludHJvZHVjZWQgdG8gd3JhcCB0aGUgbG93LWxldmVsIHR5cGVzIGJ5IGEgRmllbGRfVHlwZSBkZXJpdmVkPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0eXBlLiBJdCByb3V0ZXMgdGhlIGNhbGwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LWxldmVsIHByZXZfY2hvaWNlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmdW5jdGlvbi48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGlzIHRoZSBBcmd1bWVudCBzdHJ1Y3R1cmUgbWFpbnRhaW5lZCBieSBhbGwgbG93LWxldmVsIGZpZWxkIHR5cGVzPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGludHJvZHVjZWQgYnkgdGhpcyBiaW5kaW5nLjwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTFfOSI+QXJndW1lbnQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cmVjb3JkPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTJfNyI+VHlwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl82M185Ij5GaWVsZF9UeXBlX0FjY2VzczwvQT47ICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgRmllbGRfVHlwZSBjcmVhdGluZyB0aGlzIHJlY29yZDwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTNfNyI+VXNyPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzczsgICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIG9yaWdpbmFsIGFyZyBmb3IgYnVpbHRpbiBsb3ctbGV2ZWwgdHlwZXM8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE0XzciPkNmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47ICAgICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHRoZSBvcmlnaW5hbCBsb3ctbGV2ZWwgdHlwZTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgQXJndW1lbnQgc3RydWN0dXJlIG1haW50YWluZWQgYnkgYWxsIGxvdy1sZXZlbCBmaWVsZCB0eXBlczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaW50cm9kdWNlZCBieSB0aGlzIGJpbmRpbmcuPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEyXzkiPkFyZ3VtZW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPnJlY29yZDwvYj4KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTNfNyI+VHlwPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl82NF85Ij5GaWVsZF9UeXBlX0FjY2VzczwvQT47ICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhlIEZpZWxkX1R5cGUgY3JlYXRpbmcgdGhpcyByZWNvcmQ8L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTRfNyI+VXNyPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzczsgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBvcmlnaW5hbCBhcmcgZm9yIGJ1aWx0aW4gbG93LWxldmVsIHR5cGVzPC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE1XzciPkNmdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMzXzkiPkNfRmllbGRfVHlwZTwvQT47ICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGUgb3JpZ2luYWwgbG93LWxldmVsIHR5cGU8L0VNPjwvc3Bhbj4KICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE2XzkiPkFyZ3VtZW50X0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjExXzkiPkFyZ3VtZW50PC9BPjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTdfOSI+QXJndW1lbnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMTJfOSI+QXJndW1lbnQ8L0E+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBTb21lIEltcG9ydHMgb2YgbGliZm9ybSByb3V0aW5lcyB0byBkZWFsIHdpdGggbG93LWxldmVsIGZpZWxkdHlwZXMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMl8xMyI+TmV3X0ZpZWxkdHlwZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjIyXzEzIj5GY2hlY2s8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwNF85Ij5GaWVsZF9DaGVja19GdW5jdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyM18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjIyXzEzIj5DY2hlY2s8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5DaGFyX0NoZWNrX0Z1bmN0aW9uPC9BPikKLSAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzJfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IFNvbWUgSW1wb3J0cyBvZiBsaWJmb3JtIHJvdXRpbmVzIHRvIGRlYWwgd2l0aCBsb3ctbGV2ZWwgZmllbGR0eXBlcy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIzXzEzIj5OZXdfRmllbGR0eXBlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyM18xMyI+RmNoZWNrPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDVfOSI+RmllbGRfQ2hlY2tfRnVuY3Rpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjIzXzEzIj5DY2hlY2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwOV85Ij5DaGFyX0NoZWNrX0Z1bmN0aW9uPC9BPikKKyAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOZXdfRmllbGR0eXBlLCAibmV3X2ZpZWxkdHlwZSIpOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjdfMTMiPlNldF9GaWVsZHR5cGVfQXJnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI3XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjdfMTMiPkNmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjhfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyN18xMyI+TWFrPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85Ml85Ij5NYWtlYXJnX0Z1bmN0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjJfMTMiPk1ha2VfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI5XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMjdfMTMiPkNvcDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfOTZfOSI+Q29weWFyZ19GdW5jdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTY3XzEzIj5Db3B5X0FyZzwvQT4nPGI+QWNjZXNzPC9iPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjI3XzEzIj5GcmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEwMF85Ij5GcmVlYXJnX0Z1bmN0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNzJfMTQiPkZyZWVfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+KQotICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ2XzEyIj5DX0ludDwvQT47CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyOF8xMyI+U2V0X0ZpZWxkdHlwZV9Bcmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyOF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjI4XzEzIj5DZnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzEzM185Ij5DX0ZpZWxkX1R5cGU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyOF8xMyI+TWFrPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85M185Ij5NYWtlYXJnX0Z1bmN0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjNfMTMiPk1ha2VfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzBfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyOF8xMyI+Q29wPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl85N185Ij5Db3B5YXJnX0Z1bmN0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xNjhfMTMiPkNvcHlfQXJnPC9BPic8Yj5BY2Nlc3M8L2I+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzFfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIyOF8xMyI+RnJlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMDFfOSI+RnJlZWFyZ19GdW5jdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTczXzE0Ij5GcmVlX0FyZzwvQT4nPGI+QWNjZXNzPC9iPikKKyAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZpZWxkdHlwZV9BcmcsICJzZXRfZmllbGR0eXBlX2FyZyIpOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzRfMTMiPlNldF9GaWVsZHR5cGVfQ2hvaWNlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM0XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMzRfMTMiPkNmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMTMyXzkiPkNfRmllbGRfVHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzVfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIzNF8xMyI+TmV4dDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM0XzEzIj5QcmV2PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMTJfOSI+Q2hvaWNlX0Z1bmN0aW9uPC9BPikKLSAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl80Nl8xMiI+Q19JbnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzVfMTMiPlNldF9GaWVsZHR5cGVfQ2hvaWNlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzVfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzIzNV8xMyI+Q2Z0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMzNfOSI+Q19GaWVsZF9UeXBlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM2XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8yMzVfMTMiPk5leHQ8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNl80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF90eXBlc19fYWRzLmh0bSNyZWZfMjM1XzEzIj5QcmV2PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3R5cGVzX19hZHMuaHRtI3JlZl8xMTNfOSI+Q2hvaWNlX0Z1bmN0aW9uPC9BPikKKyAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZpZWxkdHlwZV9DaG9pY2UsICJzZXRfZmllbGR0eXBlX2Nob2ljZSIpOwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQzXzQxIj5GaWVsZF9UeXBlczwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdHlwZXNfX2Fkcy5odG0jcmVmXzQ0XzQxIj5GaWVsZF9UeXBlczwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtCmluZGV4IDZiZjcyZWIuLjc1OTg2ZDYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0KQEAgLTEsOTEgKzEsMTAwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVXNlcl9EYXRhICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9Vc2VyX0RhdGEgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkX3VzZXJwdHIuM3g8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzQ2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZpZWxkX1VzZXJfRGF0YTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRfdXNlcnB0ci4zeDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzQ2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZpZWxkX1VzZXJfRGF0YTwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTRfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N18xNiI+U2V0X0ZpZWxkX1VzZXJwdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU3XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTdfMTYiPlVzcjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfMTYiPlNldF9GaWVsZF9Vc2VycHRyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU3XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81N18xNiI+VXNyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GaWVsZF9Vc2VycHRyLCAic2V0X2ZpZWxkX3VzZXJwdHIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU3XzE2Ij5TZXRfRmllbGRfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjFfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82MV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU3XzE2Ij5TZXRfRmllbGRfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPikpOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMjgiPkZsZDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzJfMTYiPkZpZWxkX1VzZXJwdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83Ml8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcyXzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV8xNiI+RmllbGRfVXNlcnB0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82OV8xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGaWVsZF9Vc2VycHRyLCAiZmllbGRfdXNlcnB0ciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83Ml8xNiI+RmllbGRfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RmxkPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82OV8xNiI+RmllbGRfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RmxkPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzYwXzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzI5Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjBfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjBfMjkiPkRhdGE8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RmxkPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCI+R2V0X1VzZXJfRGF0YTwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5GaWVsZF9Vc2VyX0RhdGE8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZpZWxkX1VzZXJfRGF0YTwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtCmluZGV4IDE2Zjg4NTEuLmI0MzU0MzggMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0KQEAgLTEsNzUgKzEsODcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGEuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YS5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5GaWVsZF9Vc2VyX0RhdGEgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTUgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRmllbGRfVXNlcl9EYXRhICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE2IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAogPGI+Z2VuZXJpYzwvYj4KLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDNfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Vc2VyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmxpbWl0ZWQ8L2I+IDxiPnByaXZhdGU8L2I+OwotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXJfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQzXzkiPlVzZXI8L0E+OwotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ4XzQ2Ij5GaWVsZF9Vc2VyX0RhdGE8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZpZWxkX1VzZXJfRGF0YTwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+VXNlcjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5saW1pdGVkPC9iPiA8Yj5wcml2YXRlPC9iPjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXJfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQzXzkiPlVzZXI8L0E+OworPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDhfNDYiPkZpZWxkX1VzZXJfRGF0YTwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+RmllbGRfVXNlcl9EYXRhPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV9maWVsZF91c2VycHRyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV9maWVsZF91c2VycHRyLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU0XzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NF8yOSI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTVfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwiPnNldF9maWVsZF91c2VycHRyPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NF8xNCI+U2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NF8yOSI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU1XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfdXNlcnB0ci4zeC5odG1sIj5zZXRfZmllbGRfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83OF8xNCI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzhfMjkiPkZsZDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83OV8yOSI+RGF0YTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwiPmZpZWxkX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzc1XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzc1XzI5Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzZfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCI+ZmllbGRfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcwXzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83MF8yOCI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1maWVsZF91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwiPmZpZWxkX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWEgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82N18xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82N18yOCI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCI+ZmllbGRfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWEgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChHZXRfVXNlcl9EYXRhKTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZpZWxkX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZpZWxkX1VzZXJfRGF0YTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZmllbGRfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+RmllbGRfVXNlcl9EYXRhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtCmluZGV4IDUxYjcyODguLmJjM2UwNjUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtCkBAIC0xLDkyICsxLDEwMSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZvcm1fVXNlcl9EYXRhICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fX3VzZXJwdHIuM3g8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3Jtcy5Gb3JtX1VzZXJfRGF0YSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fX3VzZXJwdHIuM3g8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF80NiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZvcm1fVXNlcl9EYXRhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfNDYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Gb3JtX1VzZXJfRGF0YTwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKKyAgIDxiPnVzZTwvYj4gPGI+dHlwZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzI5Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTRfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81NF8yOSI+RGF0YTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xNiI+U2V0X0Zvcm1fVXNlcnB0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81OF8xNiI+RnJtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81OF8xNiI+RGF0YTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KSAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMTYiPlNldF9Gb3JtX1VzZXJwdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81OF8xNiI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU4XzE2Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9Gb3JtX1VzZXJwdHIsICJzZXRfZm9ybV91c2VycHRyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU4XzE2Ij5TZXRfRm9ybV9Vc2VycHRyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMjkiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjJfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzYyXzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81OF8xNiI+U2V0X0Zvcm1fVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzI5Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81NF8yOSI+RGF0YTwvQT4pKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI4Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMTMiPkdldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczXzE2Ij5Gb3JtX1VzZXJwdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83M18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzNfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8xNiI+Rm9ybV9Vc2VycHRyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzBfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZvcm1fVXNlcnB0ciwgImZvcm1fdXNlcnB0ciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzczXzE2Ij5Gb3JtX1VzZXJwdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RnJtPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcwXzE2Ij5Gb3JtX1VzZXJwdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOCI+RnJtPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfVXNlcl9EYXRhPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82MF8yOSI+RGF0YTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTlfMTQiPkdldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82MF8yOSI+RGF0YTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjBfMjkiPkRhdGE8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfVXNlcl9EYXRhPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTlfMjkiPkZybTwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCI+R2V0X1VzZXJfRGF0YTwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZvcm1fVXNlcl9EYXRhPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZvcm1fVXNlcl9EYXRhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtCmluZGV4IDg5YjMyMjAuLmQzM2RhYzUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtCkBAIC0xLDc1ICsxLDg3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YS5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGEuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuRm9ybXMuRm9ybV9Vc2VyX0RhdGEgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm1zLkZvcm1fVXNlcl9EYXRhICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE1IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAogPGI+Z2VuZXJpYzwvYj4KLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDNfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bGltaXRlZDwvYj4gPGI+cHJpdmF0ZTwvYj47Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Vc2VyX0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQzXzkiPlVzZXI8L0E+OwotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDhfNDYiPkZvcm1fVXNlcl9EYXRhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPkZvcm1fVXNlcl9EYXRhPC9BPik7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDNfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bGltaXRlZDwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXJfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDNfOSI+VXNlcjwvQT47Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDVfMzUiPkZvcm1zPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ4XzQ2Ij5Gb3JtX1VzZXJfRGF0YTwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Gb3JtX1VzZXJfRGF0YTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV91c2VycHRyLjN4Lmh0bWwiPmZvcm1fdXNlcnB0ci4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV91c2VycHRyLjN4Lmh0bWwiPmZvcm1fdXNlcnB0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU1XzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU1XzI5Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTZfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbCI+c2V0X2Zvcm1fdXNlcnB0cjwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NV8xNCI+U2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU1XzI5Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU2XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV91c2VycHRyLjN4Lmh0bWwiPnNldF9mb3JtX3VzZXJwdHI8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzc5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzc5XzI5Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzgwXzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fdXNlcnB0ci4zeC5odG1sIj5mb3JtX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzZfMTQiPkdldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83Nl8yOSI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83N18yOSI+RGF0YTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV91c2VycHRyLjN4Lmh0bWwiPmZvcm1fdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzFfMTMiPkdldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzFfMjgiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy1mb3JtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV91c2VycHRyPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBTYW1lIGFzIGZ1bmN0aW9uPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82OF8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzY4XzI4Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLWZvcm1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV91c2VycHRyPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEdldF9Vc2VyX0RhdGEpOwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Gb3JtX1VzZXJfRGF0YTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMtZm9ybV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5Gb3JtX1VzZXJfRGF0YTwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bQppbmRleCAzOWY2NDY3Li45ZDYyZWIyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bQpAQCAtMSwxMTY3ICsxLDEwNDkgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3JtcyAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4yNiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA4LzA3LzI2IDE4OjUwOjQ0IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5Gb3JtcyAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4zMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wNS8yNCAyMTozMTowNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbjsKLTxiPndpdGg8L2I+IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKIAotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5Qb2ludGVyczsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuUG9pbnRlcnM7CiAKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OworICAgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OwogCi0gICA8Yj50eXBlPC9iPiBDX0ZpZWxkX0FycmF5IDxiPmlzPC9iPiA8Yj5hcnJheTwvYj4gKE5hdHVyYWwgPGI+cmFuZ2U8L2I+ICZsdDsmZ3Q7KSA8Yj5vZjwvYj4gPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OworICAgPGI+dHlwZTwvYj4gQ19GaWVsZF9BcnJheSA8Yj5pczwvYj4gPGI+YXJyYXk8L2I+IChOYXR1cmFsIDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykgPGI+b2Y8L2I+IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKICAgIDxiPnBhY2thZ2U8L2I+IEZfQXJyYXkgPGI+aXM8L2I+IDxiPm5ldzwvYj4KLSAgICAgPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuUG9pbnRlcnMgKE5hdHVyYWwsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPiwgQ19GaWVsZF9BcnJheSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4pOworICAgICA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5Qb2ludGVycyAoTmF0dXJhbCwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+LCBDX0ZpZWxkX0FycmF5LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPik7CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgc3VidHlwZSBjaGFyc19wdHIgaXMgSW50ZXJmYWNlcy5DLlN0cmluZ3MuY2hhcnNfcHRyOzwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHN1YnR5cGUgY2hhcnNfcHRyIGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJzX3B0cjs8L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IEZPU18yX0NJbnQgPGI+aXM8L2I+IDxiPm5ldzwvYj4KLSAgICAgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPik7Ci0KLSAgIDxiPmZ1bmN0aW9uPC9iPiBDSW50XzJfRk9TIDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjhfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4pOwotCi0gICA8Yj5mdW5jdGlvbjwvYj4gRnJtT1NfMl9DSW50IDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pOwotCi0gICA8Yj5mdW5jdGlvbjwvYj4gQ0ludF8yX0ZybU9TIDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4pOwotCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3Nl8xNCI+UmVxdWVzdF9OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODFfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3Nl8yOCI+S2V5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzdfMjgiPk5hbWU8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3N18xNCI+UmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjc3XzI4Ij5LZXk8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzhfMjgiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NF8xNiI+Rm9ybV9SZXF1ZXN0X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NF8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODRfMTYiPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N18xNiI+Rm9ybV9SZXF1ZXN0X05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82N18xNiI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRm9ybV9SZXF1ZXN0X05hbWUsICJmb3JtX3JlcXVlc3RfbmFtZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE2XzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg0XzE2Ij5Gb3JtX1JlcXVlc3RfTmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzZfMjgiPktleTwvQT4pKSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjc3XzI4Ij5OYW1lPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3Nl8xNCI+UmVxdWVzdF9OYW1lPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82N18xNiI+Rm9ybV9SZXF1ZXN0X05hbWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjc3XzI4Ij5LZXk8L0E+KSksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3OF8yOCI+TmFtZTwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzdfMTQiPlJlcXVlc3RfTmFtZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzlfMTQiPlJlcXVlc3RfTmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzlfMjgiPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODBfMTQiPlJlcXVlc3RfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4MF8yOCI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTJfMTYiPkZvcm1fUmVxdWVzdF9OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkyXzE2Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfMTYiPkZvcm1fUmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzVfMTYiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZvcm1fUmVxdWVzdF9OYW1lLCAiZm9ybV9yZXF1ZXN0X25hbWUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkyXzE2Ij5Gb3JtX1JlcXVlc3RfTmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yNzlfMjgiPktleTwvQT4pKSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI3OV8xNCI+UmVxdWVzdF9OYW1lPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9uZXcuM3g8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTNfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjkzXzIxIj5IZWlnaHQ8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NF8yMSI+V2lkdGg8L0E+PC9GT05UPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTBfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NV8yMSI+VG9wPC9BPjwvRk9OVD4gICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5Nl8yMSI+TGVmdDwvQT48L0ZPTlQ+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk3XzIxIj5PZmZfU2NyZWVuPC9BPjwvRk9OVD4gICA6IE5hdHVyYWwgOj0gMDsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5OF8yMSI+TW9yZV9CdWZmZXJzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0KQotICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPgorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzVfMTYiPkZvcm1fUmVxdWVzdF9OYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4MF8yOCI+S2V5PC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjgwXzE0Ij5SZXF1ZXN0X05hbWU8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9uZXcuM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NF8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk0XzIxIj5IZWlnaHQ8L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkyXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTVfMjEiPldpZHRoPC9BPjwvc3Bhbj4gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85M18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk2XzIxIj5Ub3A8L0E+PC9zcGFuPiAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5N18yMSI+TGVmdDwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5OF8yMSI+T2ZmX1NjcmVlbjwvQT48L3NwYW4+ICAgOiBOYXR1cmFsIDo9IDA7CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk5XzIxIj5Nb3JlX0J1ZmZlcnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4nRmlyc3QpCisgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl8xNiI+TmV3ZmllbGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExNl8xNiI+SDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE2XzE2Ij5XPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTZfMTYiPlQ8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTZfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExNl8xNiI+TDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl8zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE2XzE2Ij5PPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTZfMTYiPk08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTlfMTYiPk5ld2ZpZWxkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTlfMTYiPkg8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OV8xNiI+VzwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5XzE2Ij5UPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTlfMTYiPkw8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk5XzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OV8xNiI+TzwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTlfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5XzE2Ij5NPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTmV3ZmllbGQsICJuZXdfZmllbGQiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4XzciPkZsZDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTZfMTYiPk5ld2ZpZWxkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5M18yMSI+SGVpZ2h0PC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTRfMjEiPldpZHRoPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NV8yMSI+VG9wPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTZfMjEiPkxlZnQ8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk3XzIxIj5PZmZfU2NyZWVuPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5OF8yMSI+TW9yZV9CdWZmZXJzPC9BPikpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMV83Ij5GbGQ8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTlfMTYiPk5ld2ZpZWxkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NF8yMSI+SGVpZ2h0PC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTVfMjEiPldpZHRoPC9BPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5Nl8yMSI+VG9wPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yOTdfMjEiPkxlZnQ8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk4XzIxIj5PZmZfU2NyZWVuPC9BPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5OV8yMSI+TW9yZV9CdWZmZXJzPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE4XzciPkZsZDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTAxXzciPkZsZDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE4XzciPkZsZDwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5M18xMyI+Q3JlYXRlPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMxNV8xNCI+RGVsZXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTVfMjIiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDFfNyI+RmxkPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjk0XzEzIj5DcmVhdGU8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTZfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTZfMjIiPkZsZDwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzNfMTYiPkZyZWVfRmllbGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEzM18xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNl8xNiI+RnJlZV9GaWVsZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTZfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZyZWVfRmllbGQsICJmcmVlX2ZpZWxkIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2XzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMzZfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMzNfMTYiPkZyZWVfRmllbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTVfMjIiPkZsZDwvQT4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEzNl83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTM2XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTVfMjIiPkZsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMxNV8xNCI+RGVsZXRlPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIxXzEzIj5EdXBsaWNhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyMV8yNCI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIyXzI0Ij5Ub3A8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyM18yNCI+TGVmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4KKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExNl8xNiI+RnJlZV9GaWVsZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMxNl8yMiI+RmxkPC9BPikpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzE2XzIyIj5GbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0XzQiPk51bGxfRmllbGQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTZfMTQiPkRlbGV0ZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIyXzEzIj5EdXBsaWNhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIyXzI0Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyM18yNCI+VG9wPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjhfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyNF8yNCI+TGVmdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUxXzE2Ij5EdXBfRmllbGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5Ub3A8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+TGVmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzBfMTYiPkR1cF9GaWVsZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMzBfMTYiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTMwXzE2Ij5Ub3A8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTMwXzE2Ij5MZWZ0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRHVwX0ZpZWxkLCAiZHVwX2ZpZWxkIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzciPkY8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5EdXBfRmllbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjFfMjQiPkZsZDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIyXzI0Ij5Ub3A8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjNfMjQiPkxlZnQ8L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1XzciPkY8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTMwXzE2Ij5EdXBfRmllbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjJfMjQiPkZsZDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIzXzI0Ij5Ub3A8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjRfMjQiPkxlZnQ8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNTZfNyI+RjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTM1XzciPkY8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE1Nl83Ij5GPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzIxXzEzIj5EdXBsaWNhdGU8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjhfMTMiPkxpbms8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyOF8xOSI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyOV8xOSI+VG9wPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzMwXzE5Ij5MZWZ0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPgorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMzVfNyI+RjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMyMl8xMyI+RHVwbGljYXRlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjlfMTMiPkxpbms8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0N18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzI5XzE5Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMzBfMTkiPlRvcDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzMxXzE5Ij5MZWZ0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzJfMTYiPkxua19GaWVsZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTcyXzE2Ij5GbGQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNzJfMTYiPlRvcDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTcyXzE2Ij5MZWZ0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MV8xNiI+TG5rX0ZpZWxkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNTFfMTYiPlRvcDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNTFfMTYiPkxlZnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBMbmtfRmllbGQsICJsaW5rX2ZpZWxkIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3XzciPkY8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTcyXzE2Ij5MbmtfRmllbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjhfMTkiPkZsZDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzI5XzE5Ij5Ub3A8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMzBfMTkiPkxlZnQ8L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2XzciPkY8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5MbmtfRmllbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjlfMTkiPkZsZDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzMwXzE5Ij5Ub3A8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMzFfMTkiPkxlZnQ8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNzdfNyI+RjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTU2XzciPkY8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE3N183Ij5GPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzI4XzEzIj5MaW5rPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9qdXN0LjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMzOV8xNCI+U2V0X0p1c3RpZmljYXRpb248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTNfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMzOV8zMyI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0MF8zMyI+SnVzdDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzMzIj5Ob25lPC9BPikKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTU2XzciPkY8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMjlfMTMiPkxpbms8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkX2p1c3QuM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQwXzE0Ij5TZXRfSnVzdGlmaWNhdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDBfMzMiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3M18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQxXzMzIj5KdXN0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N18zMyI+Tm9uZTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5Nl8xNiI+U2V0X0ZpZWxkX0p1c3Q8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE5Nl8xNiI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk3XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xOTZfMTYiPkp1c3Q8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzVfMTYiPlNldF9GaWVsZF9KdXN0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzVfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE3NV8xNiI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE3NV8xNiI+SnVzdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZpZWxkX0p1c3QsICJzZXRfZmllbGRfanVzdCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMF83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0KLSAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTk2XzE2Ij5TZXRfRmllbGRfSnVzdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMzOV8zMyI+RmxkPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0MF8zMyI+SnVzdDwvQT4pKSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMDBfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIwMF83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMzlfMTQiPlNldF9KdXN0aWZpY2F0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQ1XzEzIj5HZXRfSnVzdGlmaWNhdGlvbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQ1XzMyIj5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTc1XzE2Ij5TZXRfRmllbGRfSnVzdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0MF8zMyI+RmxkPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+RmllbGRfSnVzdGlmaWNhdGlvbjwvQT4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDFfMzMiPkp1c3Q8L0E+KSkpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQwXzE0Ij5TZXRfSnVzdGlmaWNhdGlvbjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQ2XzEzIj5HZXRfSnVzdGlmaWNhdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg2XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDZfMzIiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxM18xNiI+RmllbGRfSnVzdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxM18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjEzXzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg4XzE2Ij5GaWVsZF9KdXN0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODhfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE4OF8xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRmllbGRfSnVzdCwgImZpZWxkX2p1c3QiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIxM18xNiI+RmllbGRfSnVzdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0NV8zMiI+RmxkPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDVfMTMiPkdldF9KdXN0aWZpY2F0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9idWZmZXIuM3g8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzU0XzE0Ij5TZXRfQnVmZmVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1NV83Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTZfNyI+QnVmZmVyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1N183Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBTdHJpbmcpCisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+J1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTg4XzE2Ij5GaWVsZF9KdXN0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQ2XzMyIj5GbGQ8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM0Nl8xMyI+R2V0X0p1c3RpZmljYXRpb248L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkX2J1ZmZlci4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTVfMTQiPlNldF9CdWZmZXI8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTZfNyI+RmxkPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1N183Ij5CdWZmZXI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4nRmlyc3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1OF83Ij5TdHI8L0E+PC9zcGFuPiAgICA6IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzBfMTIiPkNoYXJfUHRyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5jaGFyOwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMxXzE2Ij5TZXRfRmxkX0J1ZmZlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjMxXzE2Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzFfMTYiPkJ1Zm51bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzM18zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjMxXzE2Ij5TPC9BPjwvRk9OVD4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzMF8xMiI+Q2hhcl9QdHI8L0E+KQotICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDVfMTYiPlNldF9GbGRfQnVmZmVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDVfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIwNV8xNiI+RmxkPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA2XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMDVfMTYiPkJ1Zm51bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA3XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMDVfMTYiPlM8L0E+PC9zcGFuPiAgICAgIDogY2hhcl9hcnJheSkKKyAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX0J1ZmZlciwgInNldF9maWVsZF9idWZmZXIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzdfNyI+VHh0PC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1N183Ij5TdHI8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOF83Ij5MZW48L0E+PC9GT05UPiA6IHNpemVfdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM5XzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTdfNyI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjM3XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzOF83Ij5MZW48L0E+KTsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzOV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzMV8xNiI+U2V0X0ZsZF9CdWZmZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTVfNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1Nl83Ij5CdWZmZXI8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjM3XzciPlR4dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzN183Ij5UeHQ8L0E+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzOV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNTRfMTQiPlNldF9CdWZmZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzYyXzE0Ij5HZXRfQnVmZmVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2M183Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjRfNyI+QnVmZmVyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2NV83Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gU3RyaW5nKQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjA1XzE2Ij5TZXRfRmxkX0J1ZmZlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM1Nl83Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzU3XzciPkJ1ZmZlcjwvQT4pLCBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNThfNyI+U3RyPC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzU1XzE0Ij5TZXRfQnVmZmVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzYzXzE0Ij5HZXRfQnVmZmVyPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzY0XzciPkZsZDwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjVfNyI+QnVmZmVyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjZfNyI+U3RyPC9BPjwvc3Bhbj4gICAgOiA8Yj5vdXQ8L2I+IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU1XzE2Ij5GaWVsZF9CdWZmZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1NV8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNTVfMTYiPkI8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjJfMTYiPkZpZWxkX0J1ZmZlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMjJfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMjJfMTYiPkI8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZpZWxkX0J1ZmZlciwgImZpZWxkX2J1ZmZlciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE2XzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1NV8xNiI+RmllbGRfQnVmZmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzYzXzciPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjRfNyI+QnVmZmVyPC9BPikpLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjVfNyI+U3RyPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2Ml8xNCI+R2V0X0J1ZmZlcjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTJfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjIyXzE2Ij5GaWVsZF9CdWZmZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjRfNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2NV83Ij5CdWZmZXI8L0E+KSksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2Nl83Ij5TdHI8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzYzXzE0Ij5HZXRfQnVmZmVyPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjYyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjhfMTMiPkdldF9CdWZmZXI8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzY5XzciPkZsZDwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3MF83Ij5CdWZmZXI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0KSA8Yj5yZXR1cm48L2I+IFN0cmluZworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2OV8xMyI+R2V0X0J1ZmZlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3MF83Ij5GbGQ8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzcxXzciPkJ1ZmZlcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY2XzE2Ij5GaWVsZF9CdWZmZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI2Nl8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNjZfMTYiPkI8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzNfMTYiPkZpZWxkX0J1ZmZlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzNfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzNfMTYiPkI8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZpZWxkX0J1ZmZlciwgImZpZWxkX2J1ZmZlciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjY2XzE2Ij5GaWVsZF9CdWZmZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjlfNyI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3MF83Ij5CdWZmZXI8L0E+KSkpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNjhfMTMiPkdldF9CdWZmZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzc2XzE0Ij5TZXRfU3RhdHVzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNzZfMjYiPkZsZDwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzc3XzI2Ij5TdGF0dXM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMzNfMTYiPkZpZWxkX0J1ZmZlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3MF83Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzcxXzciPkJ1ZmZlcjwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM2OV8xMyI+R2V0X0J1ZmZlcjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3N18xNCI+U2V0X1N0YXR1czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNzdfMjYiPkZsZDwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3OF8yNiI+U3RhdHVzPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3OF8xNiI+U2V0X0ZsZF9TdGF0dXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzhfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3OF8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3OF8xNiI+U3Q8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1XzE2Ij5TZXRfRmxkX1N0YXR1czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNDVfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI0NV8xNiI+U3Q8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmxkX1N0YXR1cywgInNldF9maWVsZF9zdGF0dXMiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODJfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3OF8xNiI+U2V0X0ZsZF9TdGF0dXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNzZfMjYiPkZsZDwvQT4sIEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNzdfMjYiPlN0YXR1czwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI4Ml83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjQ1XzE2Ij5TZXRfRmxkX1N0YXR1czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3N18yNiI+RmxkPC9BPiwgQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3OF8yNiI+U3RhdHVzPC9BPikpIC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84Nl83Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzc2XzE0Ij5TZXRfU3RhdHVzPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzgyXzEzIj5DaGFuZ2VkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjkxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODJfMjIiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzc3XzE0Ij5TZXRfU3RhdHVzPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODNfMTMiPkNoYW5nZWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1N18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzgzXzIyIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5M18xNiI+RmllbGRfU3RhdHVzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjkzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTlfMTYiPkZpZWxkX1N0YXR1czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNTlfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZpZWxkX1N0YXR1cywgImZpZWxkX3N0YXR1cyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5Nl83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiPkZpZWxkX1N0YXR1czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4Ml8yMiI+RmxkPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjYyXzciPlJlczwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1OV8xNiI+RmllbGRfU3RhdHVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzgzXzIyIj5GbGQ8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI5Nl83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNjJfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82OF80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODJfMTMiPkNoYW5nZWQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzg3XzE0Ij5TZXRfTWF4aW11bV9TaXplPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzA3XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODdfMzIiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwOF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzg4XzMyIj5NYXg8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBOYXR1cmFsIDo9IDApCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4M18xMyI+Q2hhbmdlZDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4OF8xNCI+U2V0X01heGltdW1fU2l6ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjczXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODhfMzIiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4OV8zMiI+TWF4PC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDApCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxMF8xNiI+U2V0X0ZpZWxkX01heDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxMF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzEwXzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzExXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMTBfMTYiPk08L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3Nl8xNiI+U2V0X0ZpZWxkX01heDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc2XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNzZfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3N18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjc2XzE2Ij5NPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GaWVsZF9NYXgsICJzZXRfbWF4X2ZpZWxkIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE0XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMTBfMTYiPlNldF9GaWVsZF9NYXg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODdfMzIiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zODhfMzIiPk1heDwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMxNF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzE0XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4N18xNCI+U2V0X01heGltdW1fU2l6ZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRfb3B0cy4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOTdfMTQiPlNldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOTdfMjciPkZsZDwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOThfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3Nl8xNiI+U2V0X0ZpZWxkX01heDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4OF8zMiI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4OV8zMiI+TWF4PC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzg4XzE0Ij5TZXRfTWF4aW11bV9TaXplPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9vcHRzLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM5OF8xNCI+U2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzk4XzI3Ij5GbGQ8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM5OV8yNyI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzMF8xNiI+U2V0X0ZpZWxkX09wdHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzBfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzMF8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzFfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzMF8xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkzXzE2Ij5TZXRfRmllbGRfT3B0czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkzXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI5M18xNiI+T3B0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmllbGRfT3B0cywgInNldF9maWVsZF9vcHRzIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzM0XzciPk9wdDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IEZPU18yX0NJbnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM5OF8yNyI+T3B0aW9uczwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzVfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzNV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzMF8xNiI+U2V0X0ZpZWxkX09wdHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOTdfMjciPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzNF83Ij5PcHQ8L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMzVfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzNV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOTdfMTQiPlNldF9PcHRpb25zPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwM18xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwM18zMCI+RmxkPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwNF8zMCI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4XzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA1XzMwIj5PbjwvQT48L0ZPTlQ+ICAgICAgOiBCb29sZWFuIDo9IFRydWUpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTNfMTYiPlNldF9GaWVsZF9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzk4XzI3Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zOTlfMjciPk9wdGlvbnM8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM5OF8xNCI+U2V0X09wdGlvbnM8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDRfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwNF8zMCI+RmxkPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDVfMzAiPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDZfMzAiPk9uPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzQ5XzE2Ij5GaWVsZF9PcHRzX09uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzQ5XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNDlfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTBfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM0OV8xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA3XzE2Ij5GaWVsZF9PcHRzX09uPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwN18xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMDdfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRmllbGRfT3B0c19PbiwgImZpZWxkX29wdHNfb24iKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1Ml8xNiI+RmllbGRfT3B0c19PZmY8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTJfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Ml8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTNfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Ml8xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzEwXzE2Ij5GaWVsZF9PcHRzX09mZjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzEwXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMTBfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTFfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMxMF8xNiI+T3B0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGaWVsZF9PcHRzX09mZiwgImZpZWxkX29wdHNfb2ZmIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU2XzciPkVycjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTdfNyI+T3B0PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gRk9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA0XzMwIj5PcHRpb25zPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDVfMzAiPk9uPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzU2XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzQ5XzE2Ij5GaWVsZF9PcHRzX09uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDAzXzMwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTdfNyI+T3B0PC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA2XzMwIj5PbjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwN18xNiI+RmllbGRfT3B0c19PbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwNF8zMCI+RmxkPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA1XzMwIj5PcHRpb25zPC9BPikpOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Nl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Ml8xNiI+RmllbGRfT3B0c19PZmY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDNfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1N183Ij5PcHQ8L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMxMF8xNiI+RmllbGRfT3B0c19PZmY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MDRfMzAiPkZsZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwNV8zMCI+T3B0aW9uczwvQT4pKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Nl83Ij5FcnI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzU2XzciPkVycjwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQwM18xNCI+U3dpdGNoX09wdGlvbnM8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDExXzE0Ij5HZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDExXzI3Ij5GbGQ8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxMl8yNyI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPikKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDA0XzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxMl8xNCI+R2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDEyXzI3Ij5GbGQ8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxM18yNyI+T3B0aW9uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc0XzE2Ij5GaWVsZF9PcHRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNzRfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjdfMTYiPkZpZWxkX09wdHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyN18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzI3XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGaWVsZF9PcHRzLCAiZmllbGRfb3B0cyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3N183Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNzRfMTYiPkZpZWxkX09wdHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTFfMjciPkZsZDwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTJfMjciPk9wdGlvbnM8L0E+IDo9IENJbnRfMl9GT1MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM3N183Ij5SZXM8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDExXzE0Ij5HZXRfT3B0aW9uczwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxNl8xMyI+R2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxNl8yNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDEzXzI3Ij5PcHRpb25zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjdfMTYiPkZpZWxkX09wdHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTJfMjciPkZsZDwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTJfMTQiPkdldF9PcHRpb25zPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTdfMTMiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxN18yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4N183Ij5Gb3M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4XzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzOV83Ij5Gb3M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTFfMTQiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDE2XzI2Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zODdfNyI+Rm9zPC9BPik7Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM4N183Ij5Gb3M8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTZfMTMiPkdldF9PcHRpb25zPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyNl8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI3XzciPkZsZDwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI4XzciPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDAyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyOV83Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTJfMTQiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDE3XzI2Ij5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMzlfNyI+Rm9zPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMzOV83Ij5Gb3M8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTdfMTMiPkdldF9PcHRpb25zPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyN18xNCI+U2V0X0ZvcmVncm91bmQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MjhfNyI+RmxkPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI5XzciPkZvcmU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzBfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwNF8xNiI+U2V0X0ZpZWxkX0ZvcmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQwNF8xNiI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDRfMTYiPkF0dHI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTZfMTYiPlNldF9GaWVsZF9Gb3JlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Nl8xNiI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTdfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1Nl8xNiI+QXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmllbGRfRm9yZSwgInNldF9maWVsZF9mb3JlIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA4XzciPkNoPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI5XzciPkNvbG9yPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyOF83Ij5Gb3JlPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxMV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0KLSAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDA0XzE2Ij5TZXRfRmllbGRfRm9yZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyN183Ij5GbGQ8L0E+LCBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQwOF83Ij5DaDwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MTFfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQxMV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MjZfMTQiPlNldF9Gb3JlZ3JvdW5kPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQzNF8xNCI+Rm9yZWdyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM0XzI2Ij5GbGQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyMl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM1XzI2Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTZfMTYiPlNldF9GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI4XzciPkZsZDwvQT4sICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDMwXzciPkNvbG9yPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MjlfNyI+Rm9yZTwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyN18xNCI+U2V0X0ZvcmVncm91bmQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzVfMTQiPkZvcmVncm91bmQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM1XzI2Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM2XzI2Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyNF8xNiI+RmllbGRfRm9yZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyNF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDI0XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzcxXzE2Ij5GaWVsZF9Gb3JlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzFfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM3MV8xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGaWVsZF9Gb3JlLCAiZmllbGRfZm9yZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzVfMjYiPkZvcmU8L0E+IDo9IENodHlwZV9Ub19BdHRyQ2hhciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDI0XzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM0XzI2Ij5GbGQ8L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM0XzE0Ij5Gb3JlZ3JvdW5kPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQzNl8yNiI+Rm9yZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzcxXzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM1XzI2Ij5GbGQ8L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzVfMTQiPkZvcmVncm91bmQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MzlfMTQiPkZvcmVncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQzOV8yNiI+RmxkPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDBfMjYiPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0MV8yNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDBfMTQiPkZvcmVncm91bmQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQwXzI2Ij5GbGQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0MV8yNiI+Rm9yZTwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDJfMjYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM0XzE2Ij5GaWVsZF9Gb3JlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MzRfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODFfMTYiPkZpZWxkX0ZvcmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzgxXzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZpZWxkX0ZvcmUsICJmaWVsZF9mb3JlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0MF8yNiI+Rm9yZTwvQT4gIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDM0XzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM5XzI2Ij5GbGQ8L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0MV8yNiI+Q29sb3I8L0E+IDo9IENodHlwZV9Ub19BdHRyQ2hhciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDM0XzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDM5XzI2Ij5GbGQ8L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQzOV8xNCI+Rm9yZWdyb3VuZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDZfMTQiPlNldF9CYWNrZ3JvdW5kPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0N183Ij5GbGQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0OF83Ij5CYWNrPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDlfNyI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQxXzI2Ij5Gb3JlPC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzgxXzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQwXzI2Ij5GbGQ8L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQyXzI2Ij5Db2xvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzgxXzE2Ij5GaWVsZF9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQwXzI2Ij5GbGQ8L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQwXzE0Ij5Gb3JlZ3JvdW5kPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQ3XzE0Ij5TZXRfQmFja2dyb3VuZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzkxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0OF83Ij5GbGQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDlfNyI+QmFjazwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg1XzQiPk5vcm1hbF9WaWRlbzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzkzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1MF83Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ4XzE2Ij5TZXRfRmllbGRfQmFjazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0OF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5GbGQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0OF8xNiI+QXR0cjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5NV8xNiI+U2V0X0ZpZWxkX0JhY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5NV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzk1XzE2Ij5GbGQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5Nl8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzk1XzE2Ij5BdHRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GaWVsZF9CYWNrLCAic2V0X2ZpZWxkX2JhY2siKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTJfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDlfNyI+Q29sb3I8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQ4XzciPkJhY2s8L0E+KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU1XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PQotICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NDhfMTYiPlNldF9GaWVsZF9CYWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQ3XzciPkZsZDwvQT4sIEF0dHJDaGFyX1RvX0NodHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDUyXzciPkNoPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ1NV83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDU1XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0Nl8xNCI+U2V0X0JhY2tncm91bmQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDU0XzE0Ij5CYWNrZ3JvdW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTRfMjYiPkZsZDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTVfMjYiPkJhY2s8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM5NV8xNiI+U2V0X0ZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NDhfNyI+RmxkPC9BPiwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MV8xMCI+Q2g8L0E+ICAgID0mZ3Q7IENoYXJhY3RlcidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTBfNyI+Q29sb3I8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ0OV83Ij5CYWNrPC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDQ3XzE0Ij5TZXRfQmFja2dyb3VuZDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1NV8xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTVfMjYiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTZfMjYiPkJhY2s8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY4XzE2Ij5GaWVsZF9CYWNrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjhfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MTBfMTYiPkZpZWxkX0JhY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxMF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDEwXzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZpZWxkX0JhY2ssICJmaWVsZF9iYWNrIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1NV8yNiI+QmFjazwvQT4gOj0gQ2h0eXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjhfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTRfMjYiPkZsZDwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTRfMTQiPkJhY2tncm91bmQ8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDU2XzI2Ij5CYWNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MTBfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTVfMjYiPkZsZDwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1NV8xNCI+QmFja2dyb3VuZDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ1OV8xNCI+QmFja2dyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3NF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDU5XzI2Ij5GbGQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2MF8yNiI+QmFjazwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDYxXzI2Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2MF8xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDE2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjBfMjYiPkZsZDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDYxXzI2Ij5CYWNrPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2Ml8yNiI+Q29sb3I8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzhfMTYiPkZpZWxkX0JhY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzhfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3OF8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyMF8xNiI+RmllbGRfQmFjazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDIwXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MjBfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRmllbGRfQmFjaywgImZpZWxkX2JhY2siKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDYwXzI2Ij5CYWNrPC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5DaHR5cGVfVG9fQXR0ckNoYXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzhfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTlfMjYiPkZsZDwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDYxXzI2Ij5Db2xvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5DaHR5cGVfVG9fQXR0ckNoYXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzhfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NTlfMjYiPkZsZDwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDU5XzE0Ij5CYWNrZ3JvdW5kPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2Nl8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODdfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2Nl8zMyI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4OF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDY3XzMzIj5QYWQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBDaGFyYWN0ZXIgOj0gU3BhY2UpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjFfMjYiPkJhY2s8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MjBfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjBfMjYiPkZsZDwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjJfMjYiPkNvbG9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MjBfMTYiPkZpZWxkX0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjBfMjYiPkZsZDwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjBfMTQiPkJhY2tncm91bmQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjdfMTQiPlNldF9QYWRfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjlfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2N18zMyI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzBfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2OF8zMyI+UGFkPC9BPjwvc3Bhbj4gOiBDaGFyYWN0ZXIgOj0gU3BhY2UpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5MF8xNiI+U2V0X0ZpZWxkX1BhZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5MF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDkwXzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDkxXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTBfMTYiPkNoPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMl8xNiI+U2V0X0ZpZWxkX1BhZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDMyXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MzJfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzM18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDMyXzE2Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GaWVsZF9QYWQsICJzZXRfZmllbGRfcGFkIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDk0XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTBfMTYiPlNldF9GaWVsZF9QYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjZfMzMiPkZsZDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKENoYXJhY3RlcidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2N18zMyI+UGFkPC9BPikpKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5NF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk0XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2Nl8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDcyXzE0Ij5QYWRfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NzJfMjkiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ3M18yOSI+UGFkPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IENoYXJhY3RlcikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQzMl8xNiI+U2V0X0ZpZWxkX1BhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2N18zMyI+RmxkPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IChDaGFyYWN0ZXInUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjhfMzMiPlBhZDwvQT4pKSkpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NjdfMTQiPlNldF9QYWRfQ2hhcmFjdGVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDczXzE0Ij5QYWRfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ3M18yOSI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDc0XzI5Ij5QYWQ8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQ2hhcmFjdGVyKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDdfMTYiPkZpZWxkX1BhZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwN18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTA3XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ2XzE2Ij5GaWVsZF9QYWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDQ2XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGaWVsZF9QYWQsICJmaWVsZF9wYWQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDczXzI5Ij5QYWQ8L0E+IDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUwN18xNiI+RmllbGRfUGFkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDcyXzI5Ij5GbGQ8L0E+KSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ3Ml8xNCI+UGFkX0NoYXJhY3RlcjwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRfaW5mby4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTE5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODJfMTQiPkluZm88L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MTlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4Ml8yMCI+RmxkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDgzXzIwIj5MaW5lczwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTIxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODRfMjAiPkNvbHVtbnM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg1XzIwIj5GaXJzdF9Sb3c8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4Nl8yMCI+Rmlyc3RfQ29sdW1uPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4N18yMCI+T2ZmX1NjcmVlbjwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5vdXQ8L2I+IE5hdHVyYWw7Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjVfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4OF8yMCI+QWRkaXRpb25hbF9CdWZmZXJzPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ3NF8yOSI+UGFkPC9BPiA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NDZfMTYiPkZpZWxkX1BhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ3M18yOSI+RmxkPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NzNfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkX2luZm8uM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDgzXzE0Ij5JbmZvPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NThfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4M18yMCI+RmxkPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg0XzIwIj5MaW5lczwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4NV8yMCI+Q29sdW1uczwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4Nl8yMCI+Rmlyc3RfUm93PC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjJfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4N18yMCI+Rmlyc3RfQ29sdW1uPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg4XzIwIj5PZmZfU2NyZWVuPC9BPjwvc3Bhbj4gICAgICAgICA6IDxiPm91dDwvYj4gTmF0dXJhbDsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODlfMjAiPkFkZGl0aW9uYWxfQnVmZmVyczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTI3XzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTI4XzE2Ij5GbGRfSW5mbzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyOF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTI4XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTI4XzE2Ij5MPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTI5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjhfMTYiPkM8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyOF8xNiI+RnI8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfMzYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyOF8xNiI+RmM8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyOF8xNiI+T3M8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfNDQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyOF8xNiI+QWI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyN18xMiI+Q19JbnRfQWNjZXNzPC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2Nl8xMiI+Q19JbnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY3XzE2Ij5GbGRfSW5mbzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjdfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2N18xNiI+TDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY4XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjdfMTYiPkM8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2OF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDY3XzE2Ij5GcjwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY4XzM2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjdfMTYiPkZjPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjhfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2N18xNiI+T3M8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2OF80NCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDY3XzE2Ij5BYjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDY2XzEyIj5DX0ludF9BY2Nlc3M8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRmxkX0luZm8sICJmaWVsZF9pbmZvIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTMzXzciPkw8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzNfMTAiPkM8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzNfMTMiPkZyPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTMzXzE3Ij5GYzwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzM18yMSI+T3M8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzNfMjUiPkFiPC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM0XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjhfMTYiPkZsZF9JbmZvPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDgyXzIwIj5GbGQ8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfNyI+TDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTMzXzEwIj5DPC9BPic8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfMTMiPkZyPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfMTciPkZjPC9BPic8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfMjEiPk9zPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfMjUiPkFiPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzJfNyI+TDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDcyXzEwIj5DPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzJfMTMiPkZyPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzJfMTciPkZjPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzJfMjEiPk9zPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzJfMjUiPkFiPC9BPjwvc3Bhbj4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzNF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTM0XzciPlJlczwvQT4pOwotICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4M18yMCI+TGluZXM8L0E+ICAgICAgICAgICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzM183Ij5MPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODRfMjAiPkNvbHVtbnM8L0E+ICAgICAgICAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzM18xMCI+QzwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg1XzIwIj5GaXJzdF9Sb3c8L0E+ICAgICAgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzNfMTMiPkZyPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODZfMjAiPkZpcnN0X0NvbHVtbjwvQT4gICAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTMzXzE3Ij5GYzwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg3XzIwIj5PZmZfU2NyZWVuPC9BPiAgICAgICAgIDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzM18yMSI+T3M8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4OF8yMCI+QWRkaXRpb25hbF9CdWZmZXJzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzM18yNSI+QWI8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODJfMTQiPkluZm88L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDkzXzE0Ij5EeW5hbWljX0luZm88L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5M18yOCI+RmxkPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTRfMjgiPkxpbmVzPC9BPjwvRk9OVD4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTVfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5NV8yOCI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU2XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTZfMjgiPk1heDwvQT48L0ZPTlQ+ICAgICA6IDxiPm91dDwvYj4gTmF0dXJhbCkKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2N18xNiI+RmxkX0luZm88L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODNfMjAiPkZsZDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDcyXzciPkw8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8xMCI+QzwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzJfMTMiPkZyPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzJfMTciPkZjPC9BPic8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8yMSI+T3M8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8yNSI+QWI8L0E+JzxiPkFjY2VzczwvYj4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4NF8yMCI+TGluZXM8L0E+ICAgICAgICAgICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml83Ij5MPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODVfMjAiPkNvbHVtbnM8L0E+ICAgICAgICAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8xMCI+QzwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg2XzIwIj5GaXJzdF9Sb3c8L0E+ICAgICAgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzJfMTMiPkZyPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80ODdfMjAiPkZpcnN0X0NvbHVtbjwvQT4gICAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDcyXzE3Ij5GYzwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDg4XzIwIj5PZmZfU2NyZWVuPC9BPiAgICAgICAgIDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8yMSI+T3M8L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4OV8yMCI+QWRkaXRpb25hbF9CdWZmZXJzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Ml8yNSI+QWI8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDgzXzE0Ij5JbmZvPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk0XzE0Ij5EeW5hbWljX0luZm88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4OF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk0XzI4Ij5GbGQ8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg5XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTVfMjgiPkxpbmVzPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5MF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk2XzI4Ij5Db2x1bW5zPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk3XzI4Ij5NYXg8L0E+PC9zcGFuPiAgICAgOiA8Yj5vdXQ8L2I+IE5hdHVyYWwpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU4XzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU5XzE2Ij5EeW5fSW5mbzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTU5XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTlfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU1OV8xNiI+TDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OV80MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTU5XzE2Ij5DPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU5XzQ1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NTlfMTYiPk08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU1OF8xMiI+Q19JbnRfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTNfMTIiPkNfSW50X0FjY2VzczwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5NF8xNiI+RHluX0luZm88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5NF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk0XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5NF8zOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk0XzE2Ij5MPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTRfNDIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5NF8xNiI+QzwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk0XzQ1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTRfMTYiPk08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5M18xMiI+Q19JbnRfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEeW5fSW5mbywgImR5bmFtaWNfZmllbGRfaW5mbyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2Ml83Ij5MPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTYyXzEwIj5DPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTYyXzEzIj5NPC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTYzXzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NTlfMTYiPkR5bl9JbmZvPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDkzXzI4Ij5GbGQ8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjJfNyI+TDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTYyXzEwIj5DPC9BPic8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjJfMTMiPk08L0E+JzxiPkFjY2VzczwvYj4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5N183Ij5MPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTdfMTAiPkM8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5N18xMyI+TTwvQT48L3NwYW4+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjNfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2M183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTRfMjgiPkxpbmVzPC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTYyXzciPkw8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5NV8yOCI+Q29sdW1uczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2Ml8xMCI+QzwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk2XzI4Ij5NYXg8L0E+ICAgICA6PSBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjJfMTMiPk08L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTNfMTQiPkR5bmFtaWNfSW5mbzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fd2luLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUwNV8xNCI+U2V0X1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA1XzI2Ij5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA2XzI2Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk0XzE2Ij5EeW5fSW5mbzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5NF8yOCI+RmxkPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTdfNyI+TDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk3XzEwIj5DPC9BPic8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5N18xMyI+TTwvQT4nPGI+QWNjZXNzPC9iPikpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk1XzI4Ij5MaW5lczwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ5N183Ij5MPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80OTZfMjgiPkNvbHVtbnM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTdfMTAiPkM8L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5N18yOCI+TWF4PC9BPiAgICAgOj0gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDk3XzEzIj5NPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5NF8xNCI+RHluYW1pY19JbmZvPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV93aW4uM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA2XzE0Ij5TZXRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUwNl8yNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDdfMjYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTg1XzE2Ij5TZXRfRm9ybV9XaW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU4NV8xNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU4NV8xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTZfMTYiPlNldF9Gb3JtX1dpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MTZfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUxNl8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9Gb3JtX1dpbiwgInNldF9mb3JtX3dpbiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg1XzE2Ij5TZXRfRm9ybV9XaW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDVfMjYiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUwNl8yNiI+V2luPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81ODlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA1XzE0Ij5TZXRfV2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTExXzEzIj5HZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk4XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTFfMjUiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTE2XzE2Ij5TZXRfRm9ybV9XaW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDZfMjYiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUwN18yNiI+V2luPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDZfMTQiPlNldF9XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxMl8xMyI+R2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI2XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTJfMjUiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDBfMTYiPkZvcm1fV2luPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjAwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MDBfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI4XzE2Ij5Gb3JtX1dpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjhfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGb3JtX1dpbiwgImZvcm1fd2luIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjAzXzciPlc8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYwMF8xNiI+Rm9ybV9XaW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTFfMjUiPkZybTwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzMV83Ij5XPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjhfMTYiPkZvcm1fV2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTEyXzI1Ij5Gcm08L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MDNfNyI+VzwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxMV8xMyI+R2V0X1dpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTZfMTQiPlNldF9TdWJfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjEwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTZfMzAiPkZybTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxMV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTE3XzMwIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzFfNyI+VzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxMl8xMyI+R2V0X1dpbmRvdzwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxN18xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTE3XzMwIj5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MThfMzAiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjEzXzE2Ij5TZXRfRm9ybV9TdWI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxM18xNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxM18xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDFfMTYiPlNldF9Gb3JtX1N1YjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTQxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NDFfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU0MV8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9Gb3JtX1N1YiwgInNldF9mb3JtX3N1YiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxN183Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjEzXzE2Ij5TZXRfRm9ybV9TdWI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTZfMzAiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxN18zMCI+V2luPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjE3XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MTdfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTE2XzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyMl8xMyI+R2V0X1N1Yl9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyMl8yOSI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NDFfMTYiPlNldF9Gb3JtX1N1YjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxN18zMCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTE4XzMwIj5XaW48L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxN18xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyM18xMyI+R2V0X1N1Yl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1MV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTIzXzI5Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI4XzE2Ij5Gb3JtX1N1YjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyOF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjI4XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1M18xNiI+Rm9ybV9TdWI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTUzXzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRm9ybV9TdWIsICJmb3JtX3N1YiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzMV83Ij5XPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MjhfMTYiPkZvcm1fU3ViPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTIyXzI5Ij5Gcm08L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTZfNyI+VzwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTUzXzE2Ij5Gb3JtX1N1YjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyM18yOSI+RnJtPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjMxXzciPlc8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjJfMTMiPkdldF9TdWJfV2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyN18xNCI+U2NhbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzhfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyN18yMSI+RnJtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzOV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI4XzIxIj5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDBfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyOV8yMSI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPikKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTU2XzciPlc8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjNfMTMiPkdldF9TdWJfV2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI4XzE0Ij5TY2FsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTYzXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjhfMjEiPkZybTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY0XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjlfMjEiPkxpbmVzPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY1XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzBfMjEiPkNvbHVtbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQyXzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQzXzE2Ij5NX1NjYWxlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQzXzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPllwPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQzXzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPlhwPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDJfMTIiPkNfSW50X0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY3XzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjhfMTYiPk1fU2NhbGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTY4XzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY4XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjhfMTYiPllwPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjhfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2OF8xNiI+WHA8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2N18xMiI+Q19JbnRfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNX1NjYWxlLCAic2NhbGVfZm9ybSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0Nl83Ij5YPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQ2XzEwIj5ZPC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQ3XzciPlJlczwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjQzXzE2Ij5NX1NjYWxlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI3XzIxIj5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDZfMTAiPlk8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY0Nl83Ij5YPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzFfNyI+WDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcxXzEwIj5ZPC9BPjwvc3Bhbj4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY0N183Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjQ3XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjhfMjEiPkxpbmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY0Nl8xMCI+WTwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI5XzIxIj5Db2x1bW5zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjQ2XzciPlg8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI3XzE0Ij5TY2FsZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIG1lbnVfaG9vay4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDFfMTQiPlNldF9GaWVsZF9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0MV8zNSI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYzXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDJfMzUiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2OF8xNiI+TV9TY2FsZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyOF8yMSI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTcxXzEwIj5ZPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NzFfNyI+WDwvQT4nPGI+QWNjZXNzPC9iPikpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI5XzIxIj5MaW5lczwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU3MV8xMCI+WTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTMwXzIxIj5Db2x1bW5zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTcxXzciPlg8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI4XzE0Ij5TY2FsZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIG1lbnVfaG9vay4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTg0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDJfMTQiPlNldF9GaWVsZF9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4NF8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQyXzM1Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTg1XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDNfMzUiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzOF85Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjVfMTYiPlNldF9GaWVsZF9Jbml0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjVfMTYiPkZybTwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY2XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjVfMTYiPlByb2M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODdfMTYiPlNldF9GaWVsZF9Jbml0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODdfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU4N18xNiI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4OF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg3XzE2Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzhfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRmllbGRfSW5pdCwgInNldF9maWVsZF9pbml0Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY5XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjVfMTYiPlNldF9GaWVsZF9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQxXzM1Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDJfMzUiPlByb2M8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY2OV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDFfMTQiPlNldF9GaWVsZF9Jbml0X0hvb2s8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQ3XzE0Ij5TZXRfRmllbGRfVGVybV9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDdfMzUiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3OV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQ4XzM1Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM3XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81ODdfMTYiPlNldF9GaWVsZF9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQyXzM1Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDNfMzUiPlByb2M8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0Ml8xNCI+U2V0X0ZpZWxkX0luaXRfSG9vazwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0OF8xNCI+U2V0X0ZpZWxkX1Rlcm1fSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTk3XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDhfMzUiPkZybTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OThfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0OV8zNSI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4MV8xNiI+U2V0X0ZpZWxkX1Rlcm08L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODFfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY4MV8xNiI+RnJtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODJfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY4MV8xNiI+UHJvYzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM3XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwMF8xNiI+U2V0X0ZpZWxkX1Rlcm08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwMF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjAwXzE2Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjAxXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MDBfMTYiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzOF85Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9GaWVsZF9UZXJtLCAic2V0X2ZpZWxkX3Rlcm0iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODVfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY4MV8xNiI+U2V0X0ZpZWxkX1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDdfMzUiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0OF8zNSI+UHJvYzwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjg1XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82ODVfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQ3XzE0Ij5TZXRfRmllbGRfVGVybV9Ib29rPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1M18xNCI+U2V0X0Zvcm1fSW5pdF9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk0XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NTNfMzQiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk1XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NTRfMzQiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYwMF8xNiI+U2V0X0ZpZWxkX1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDhfMzUiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0OV8zNSI+UHJvYzwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQ4XzE0Ij5TZXRfRmllbGRfVGVybV9Ib29rPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU0XzE0Ij5TZXRfRm9ybV9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxMF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU0XzM0Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTFfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1NV8zNCI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5N18xNiI+U2V0X0Zvcm1fSW5pdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5N18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjk3XzE2Ij5Gcm08L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTdfMTYiPlByb2M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTNfMTYiPlNldF9Gb3JtX0luaXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxM18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjEzXzE2Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxM18xNiI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0Zvcm1fSW5pdCwgInNldF9mb3JtX2luaXQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDFfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY5N18xNiI+U2V0X0Zvcm1fSW5pdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1M18zNCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU0XzM0Ij5Qcm9jPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzAxXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MDFfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTUzXzE0Ij5TZXRfRm9ybV9Jbml0X0hvb2s8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU5XzE0Ij5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTBfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1OV8zNCI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTFfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2MF8zNCI+UHJvYzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjEzXzE2Ij5TZXRfRm9ybV9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU0XzM0Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NTVfMzQiPlByb2M8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1NF8xNCI+U2V0X0Zvcm1fSW5pdF9Ib29rPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTYwXzE0Ij5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyM18zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTYwXzM0Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjRfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2MV8zNCI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxM18xNiI+U2V0X0Zvcm1fVGVybTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxM18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzEzXzE2Ij5Gcm08L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzE0XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MTNfMTYiPlByb2M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjZfMTYiPlNldF9Gb3JtX1Rlcm08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyNl8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjI2XzE2Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYyNl8xNiI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0Zvcm1fVGVybSwgInNldF9mb3JtX3Rlcm0iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxM18xNiI+U2V0X0Zvcm1fVGVybTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1OV8zNCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTYwXzM0Ij5Qcm9jPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MTdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxN183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NTlfMTQiPlNldF9Gb3JtX1Rlcm1fSG9vazwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZmllbGRzLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU4OV8xNCI+UmVkZWZpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU4OV8yNCI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5GbGRzPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM0XzkiPkZpZWxkX0FycmF5X0FjY2VzczwvQT4pCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MjZfMTYiPlNldF9Gb3JtX1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NjBfMzQiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2MV8zNCI+UHJvYzwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTYwXzE0Ij5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2ZpZWxkcy4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OTBfMTQiPlJlZGVmaW5lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MF8yNCI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MV8yNCI+RmxkczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM1XzkiPkZpZWxkX0FycmF5X0FjY2VzczwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczM18xNiI+U2V0X0ZybV9GaWVsZHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzNfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzczM18xNiI+RnJtPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzM0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MzNfMTYiPkl0ZW1zPC9BPjwvRk9OVD4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzE2Ij5TZXRfRnJtX0ZpZWxkczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPkZybTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQ0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPkl0ZW1zPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfRnJtX0ZpZWxkcywgInNldF9mb3JtX2ZpZWxkcyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczN183Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MF8yNCI+RmxkczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MF8yNCI+RmxkczwvQT4nTGFzdCkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5GbGRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5GbGRzPC9BPidMYXN0KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkxXzI0Ij5GbGRzPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OTFfMjQiPkZsZHM8L0E+J0xhc3QpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MV8yNCI+RmxkczwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkxXzI0Ij5GbGRzPC9BPidMYXN0KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzM3XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzMzXzE2Ij5TZXRfRnJtX0ZpZWxkczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU4OV8yNCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5GbGRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5GbGRzPC9BPidGaXJzdCknQWRkcmVzcyk7Ci0gICAgICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzczN183Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzM3XzciPlJlczwvQT4pOwotICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDNfMTYiPlNldF9Gcm1fRmllbGRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzI0Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OTFfMjQiPkZsZHM8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MV8yNCI+RmxkczwvQT4nRmlyc3QpJ0FkZHJlc3MpKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81ODlfMTQiPlJlZGVmaW5lPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAxXzEzIj5GaWVsZHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NTJfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMV8yMSI+RnJtPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1M18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAyXzIxIj5JbmRleDwvQT48L0ZPTlQ+IDogUG9zaXRpdmUpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5MF8xNCI+UmVkZWZpbmU8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NThfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMl8xMyI+RmllbGRzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NThfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMl8yMSI+RnJtPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjU5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDNfMjEiPkluZGV4PC9BPjwvc3Bhbj4gOiBQb3NpdGl2ZSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4KICAgIDxiPmlzPC9iPgogICAgICAgPGI+dXNlPC9iPiBGX0FycmF5OwogCi0gICAgICA8Yj5mdW5jdGlvbjwvYj4gQ19GaWVsZHMgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzU3XzI2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IFBvaW50ZXI7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gQ19GaWVsZHMgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjNfMjYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gUG9pbnRlcjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDX0ZpZWxkcywgImZvcm1fZmllbGRzIik7CiAKLSAgICAgIFAgOiBQb2ludGVyIDo9IENfRmllbGRzICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDFfMjEiPkZybTwvQT4pOworICAgICAgUCA6IFBvaW50ZXIgOj0gQ19GaWVsZHMgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMl8yMSI+RnJtPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiBQID0gPGI+bnVsbDwvYj4gPGI+b3I8L2I+IDxiPmVsc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMl8yMSI+SW5kZXg8L0E+ICZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjA3XzEzIj5GaWVsZF9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMV8yMSI+RnJtPC9BPikgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IFAgPSA8Yj5udWxsPC9iPiA8Yj5vcjwvYj4gPGI+ZWxzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAzXzIxIj5JbmRleDwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDhfMTMiPkZpZWxkX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAyXzIxIj5Gcm08L0E+KSA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgUCA6PSBQICsgcHRyZGlmZl90ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAyXzIxIj5JbmRleDwvQT4pIC0gMSk7CisgICAgICAgICBQIDo9IFAgKyBwdHJkaWZmX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDNfMjEiPkluZGV4PC9BPikgLSAxKTsKICAgICAgICAgIDxiPnJldHVybjwvYj4gUC48Yj5hbGw8L2I+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwMV8xMyI+RmllbGRzPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjA3XzEzIj5GaWVsZF9Db3VudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjA3XzI2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IE5hdHVyYWwKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAyXzEzIj5GaWVsZHM8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwOF8xMyI+RmllbGRfQ291bnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjA4XzI2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IE5hdHVyYWwKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzc0XzE2Ij5Db3VudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3NF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzc0XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODBfMTYiPkNvdW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODBfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY4MF8xNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDb3VudCwgImZpZWxkX2NvdW50Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzc0XzE2Ij5Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwN18yNiI+RnJtPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDdfMTMiPkZpZWxkX0NvdW50PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxMl8xNCI+TW92ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4Ml8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEyXzIwIj5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxM18yMCI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxNF8yMCI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKKyAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjgwXzE2Ij5Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwOF8yNiI+RnJtPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDhfMTMiPkZpZWxkX0NvdW50PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEzXzE0Ij5Nb3ZlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxM18yMCI+RmxkPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjE0XzIwIj5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxNV8yMCI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMTYiPk1vdmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc4Nl8xNiI+RmxkPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzg2XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83ODZfMTYiPkw8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc4Nl8xNiI+QzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5Ml8xNiI+TW92ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjkyXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTJfMTYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjkyXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTJfMTYiPkw8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5Ml8zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjkyXzE2Ij5DPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNb3ZlLCAibW92ZV9maWVsZCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4OV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzg2XzE2Ij5Nb3ZlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEyXzIwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEzXzIwIj5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MTRfMjAiPkNvbHVtbjwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc4OV83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzg5XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxMl8xNCI+TW92ZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fbmV3LjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjIzXzEzIj5DcmVhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDJfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyM18yMSI+RmllbGRzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzRfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjkyXzE2Ij5Nb3ZlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEzXzIwIj5GbGQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjE0XzIwIj5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MTVfMjAiPkNvbHVtbjwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYxM18xNCI+TW92ZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fbmV3LjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjI0XzEzIj5DcmVhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjI0XzIxIj5GaWVsZHM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwNF8xNiI+TmV3Rm9ybTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwNF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODA0XzE2Ij5GaWVsZHM8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MDdfMTYiPk5ld0Zvcm08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwN18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzA3XzE2Ij5GaWVsZHM8L0E+PC9zcGFuPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE5ld0Zvcm0sICJuZXdfZm9ybSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwN183Ij5NPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxMF83Ij5NPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjIzXzIxIj5GaWVsZHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjNfMjEiPkZpZWxkczwvQT4nTGFzdCkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81OV80Ij5OdWxsX0ZpZWxkPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjIzXzIxIj5GaWVsZHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjNfMjEiPkZpZWxkczwvQT4nTGFzdCkgLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyNF8yMSI+RmllbGRzPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjRfMjEiPkZpZWxkczwvQT4nTGFzdCkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjI0XzIxIj5GaWVsZHM8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyNF8yMSI+RmllbGRzPC9BPidMYXN0KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4N180Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODA3XzciPk08L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgwNF8xNiI+TmV3Rm9ybTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyM18yMSI+RmllbGRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjIzXzIxIj5GaWVsZHM8L0E+J0ZpcnN0KSdBZGRyZXNzKTsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDdfNyI+TTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MF80Ij5OdWxsX0Zvcm08L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjg2XzQiPkZvcm1fRXhjZXB0aW9uPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxMF83Ij5NPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MDdfMTYiPk5ld0Zvcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjRfMjEiPkZpZWxkczwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjI0XzIxIj5GaWVsZHM8L0E+J0ZpcnN0KSdBZGRyZXNzKTsKKyAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MTBfNyI+TTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NV80Ij5OdWxsX0Zvcm08L0E+IDxiPnRoZW48L2I+CisgICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjg3XzQiPkZvcm1fRXhjZXB0aW9uPC9BPjsKICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDdfNyI+TTwvQT47CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxMF83Ij5NPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjNfMTMiPkNyZWF0ZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODIzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MzRfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyM18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjM0XzIyIj5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KQorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjRfMTMiPkNyZWF0ZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYzNV8xNCI+RGVsZXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MjZfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYzNV8yMiI+RnJtPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODI1XzE2Ij5GcmVlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODI1XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MjVfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyOF8xNiI+RnJlZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI4XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MjhfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRnJlZSwgImZyZWVfZm9ybSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyOF83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODI1XzE2Ij5GcmVlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjM0XzIyIj5Gcm08L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgyOF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODI4XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MzRfMjIiPkZybTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjBfNCI+TnVsbF9Gb3JtPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjM0XzE0Ij5EZWxldGU8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX29wdHMuM3g8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ0XzE0Ij5TZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ0XzI3Ij5Gcm08L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NDVfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcyOF8xNiI+RnJlZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYzNV8yMiI+RnJtPC9BPikpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjM1XzIyIj5Gcm08L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1XzQiPk51bGxfRm9ybTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYzNV8xNCI+RGVsZXRlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9vcHRzLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY0NV8xNCI+U2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ1XzI3Ij5Gcm08L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0M18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ2XzI3Ij5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ1XzE2Ij5TZXRfRm9ybV9PcHRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NDVfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0Nl8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODQ1XzE2Ij5PcHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDVfMTYiPlNldF9Gb3JtX09wdHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0NV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzQ1XzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0Nl8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzQ1XzE2Ij5PcHQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9Gb3JtX09wdHMsICJzZXRfZm9ybV9vcHRzIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ5XzciPk9wdDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IEZybU9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ1XzI3Ij5PcHRpb25zPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1MF83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODUwXzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODQ1XzE2Ij5TZXRfRm9ybV9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ0XzI3Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NDlfNyI+T3B0PC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg1MF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODUwXzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY0NF8xNCI+U2V0X09wdGlvbnM8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUwXzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUwXzMwIj5Gcm08L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODYxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTFfMzAiPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1Ml8zMCI+T248L0E+PC9GT05UPiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzQ1XzE2Ij5TZXRfRm9ybV9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjQ1XzI3Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NDZfMjciPk9wdGlvbnM8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY0NV8xNCI+U2V0X09wdGlvbnM8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTFfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1MV8zMCI+RnJtPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1Ml8zMCI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1M18zMCI+T248L0E+PC9zcGFuPiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjRfMTYiPkZvcm1fT3B0c19PbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODY0XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2NV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODY0XzE2Ij5PcHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTlfMTYiPkZvcm1fT3B0c19PbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83NTlfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc1OV8xNiI+T3B0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGb3JtX09wdHNfT24sICJmb3JtX29wdHNfb24iKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2N18xNiI+Rm9ybV9PcHRzX09mZjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2N18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODY3XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjhfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg2N18xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzYyXzE2Ij5Gb3JtX09wdHNfT2ZmPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjJfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc2Ml8xNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjNfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc2Ml8xNiI+T3B0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGb3JtX09wdHNfT2ZmLCAiZm9ybV9vcHRzX29mZiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg3MV83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODcyXzciPk9wdDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IEZybU9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUxXzMwIj5PcHRpb25zPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTJfMzAiPk9uPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODcxXzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODY0XzE2Ij5Gb3JtX09wdHNfT248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTBfMzAiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg3Ml83Ij5PcHQ8L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTNfMzAiPk9uPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzU5XzE2Ij5Gb3JtX09wdHNfT248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTFfMzAiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1Ml8zMCI+T3B0aW9uczwvQT4pKTsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NzFfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NjdfMTYiPkZvcm1fT3B0c19PZmY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTBfMzAiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg3Ml83Ij5PcHQ8L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc2Ml8xNiI+Rm9ybV9PcHRzX09mZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1MV8zMCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUyXzMwIj5PcHRpb25zPC9BPikpOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODcxXzciPkVycjwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NzFfNyI+RXJyPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjUwXzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NThfMTQiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NThfMjciPkZybTwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTlfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1MV8xNCI+U3dpdGNoX09wdGlvbnM8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTlfMTQiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OV8yNyI+RnJtPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY2MF8yNyI+T3B0aW9uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg5XzE2Ij5Gb3JtX09wdHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84ODlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg4OV8xNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc5XzE2Ij5Gb3JtX09wdHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzc5XzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZvcm1fT3B0cywgImZvcm1fb3B0cyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5Ml83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84ODlfMTYiPkZvcm1fT3B0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OF8yNyI+RnJtPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OV8yNyI+T3B0aW9uczwvQT4gOj0gQ0ludF8yX0ZybU9TICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84OTJfNyI+UmVzPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OF8xNCI+R2V0X09wdGlvbnM8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODk5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NjNfMTMiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODk5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NjNfMjYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjBfNCI+TnVsbF9Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjYwXzI3Ij5PcHRpb25zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83NzlfMTYiPkZvcm1fT3B0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OV8yNyI+RnJtPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1OV8xNCI+R2V0X09wdGlvbnM8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83ODhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY2NF8xMyI+R2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjY0XzI2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU1XzQiPk51bGxfRm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MDFfNyI+Rm9zPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OTBfNyI+Rm9zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjU4XzE0Ij5HZXRfT3B0aW9uczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY2M18yNiI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTAxXzciPkZvczwvQT4pOwotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MDFfNyI+Rm9zPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjYzXzEzIj5HZXRfT3B0aW9uczwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fcG9zdC4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTEzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzJfMTQiPlBvc3Q8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3Ml8yMCI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTE0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMjAiPlBvc3Q8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NTlfMTQiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjY0XzI2Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83OTBfNyI+Rm9zPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc5MF83Ij5Gb3M8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NjRfMTMiPkdldF9PcHRpb25zPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9wb3N0LjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3M18xNCI+UG9zdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODAyXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMjAiPkZybTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MDNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3NF8yMCI+UG9zdDwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTZfMTYiPk1fUG9zdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTE2XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MDVfMTYiPk1fUG9zdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODA1XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDVfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTV9Qb3N0LCAicG9zdF9mb3JtIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MThfMTYiPk1fVW5wb3N0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTE4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MThfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwN18xNiI+TV9VbnBvc3Q8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODA3XzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1fVW5wb3N0LCAidW5wb3N0X2Zvcm0iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MjFfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMjAiPlBvc3Q8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MjFfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTZfMTYiPk1fUG9zdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3Ml8yMCI+RnJtPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjc0XzIwIj5Qb3N0PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODA1XzE2Ij5NX1Bvc3Q8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMjAiPkZybTwvQT4pKTsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MjFfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MThfMTYiPk1fVW5wb3N0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjcyXzIwIj5Gcm08L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgwN18xNiI+TV9VbnBvc3Q8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMjAiPkZybTwvQT4pKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkyMV83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTIxXzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3Ml8xNCI+UG9zdDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fY3Vyc29yLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4M18xNCI+UG9zaXRpb25fQ3Vyc29yPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTM5XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82ODNfMzEiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY3M18xNCI+UG9zdDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fY3Vyc29yLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4NF8xNCI+UG9zaXRpb25fQ3Vyc29yPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MjRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4NF8zMSI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTQxXzE2Ij5Qb3NfRm9ybV9DdXJzb3I8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDFfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0MV8xNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODI2XzE2Ij5Qb3NfRm9ybV9DdXJzb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyNl8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODI2XzE2Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFBvc19Gb3JtX0N1cnNvciwgInBvc19mb3JtX2N1cnNvciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk0NF83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTQxXzE2Ij5Qb3NfRm9ybV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82ODNfMzEiPkZybTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0NF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTQ0XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4M18xNCI+UG9zaXRpb25fQ3Vyc29yPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9kYXRhLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjkyXzEzIj5EYXRhX0FoZWFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTU3XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTJfMjUiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODI2XzE2Ij5Qb3NfRm9ybV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82ODRfMzEiPkZybTwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjg0XzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2RhdGEuM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODM5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTNfMTMiPkRhdGFfQWhlYWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzOV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjkzXzI1Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTU5XzE2Ij5BaGVhZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1OV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU5XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDFfMTYiPkFoZWFkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDFfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg0MV8xNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBBaGVhZCwgImRhdGFfYWhlYWQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjJfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU5XzE2Ij5BaGVhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5Ml8yNSI+RnJtPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODQ0XzciPlJlczwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg0MV8xNiI+QWhlYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTNfMjUiPkZybTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTYyXzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+Q3Vyc2VzX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg0NF83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY4XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gRmFsc2U7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5Ml8xMyI+RGF0YV9BaGVhZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5N18xMyI+RGF0YV9CZWhpbmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5N18yNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5M18xMyI+RGF0YV9BaGVhZDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjk4XzEzIj5EYXRhX0JlaGluZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODU1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OThfMjYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzVfMTYiPkJlaGluZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3NV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTc1XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NTdfMTYiPkJlaGluZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODU3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NTdfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQmVoaW5kLCAiZGF0YV9iZWhpbmQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzhfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTc1XzE2Ij5CZWhpbmQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTdfMjYiPkZybTwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg2MF83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NTdfMTYiPkJlaGluZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5OF8yNiI+RnJtPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzhfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODYwXzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjhfNCI+Q3Vyc2VzX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjk3XzEzIj5EYXRhX0JlaGluZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fZHJpdmVyLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzExXzEzIj5Ecml2ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OTNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMV8yMSI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OTRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8yMSI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OF85Ij5LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzA1XzkiPkRyaXZlcl9SZXN1bHQ8L0E+CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY5OF8xMyI+RGF0YV9CZWhpbmQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX2RyaXZlci4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NzVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8xMyI+RHJpdmVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NzVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8yMSI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzEzXzIxIj5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2XzkiPktleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MDZfOSI+RHJpdmVyX1Jlc3VsdDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk2XzE2Ij5Gcm1fRHJpdmVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk2XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OTZfMTYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk2XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OTZfMTYiPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3OF8xNiI+RnJtX0RyaXZlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NzhfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NzhfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg3OF8xNiI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGcm1fRHJpdmVyLCAiZm9ybV9kcml2ZXIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OTlfNyI+UjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OTZfMTYiPkZybV9Ecml2ZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MTFfMjEiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MTJfMjEiPktleTwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84ODFfNyI+UjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg3OF8xNiI+RnJtX0RyaXZlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8yMSI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxM18yMSI+S2V5PC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTk5XzciPlI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5OV83Ij5SPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF80Ij5FX1Vua25vd25fQ29tbWFuZDwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzA3XzI3Ij5Vbmtub3duX1JlcXVlc3Q8L0E+OwotICAgICAgICAgPGI+ZWxzaWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5OV83Ij5SPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85M180Ij5FX0ludmFsaWRfRmllbGQ8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcwOF8yNyI+SW52YWxpZF9GaWVsZDwvQT47Ci0gICAgICAgICA8Yj5lbHNpZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTk5XzciPlI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzQiPkVfUmVxdWVzdF9EZW5pZWQ8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcwNl8yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+OwotICAgICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk5OV83Ij5SPC9BPik7Ci0gICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcwNV8yNyI+Rm9ybV9PazwvQT47Ci0gICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcwNV8yNyI+Rm9ybV9PazwvQT47Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzExXzEzIj5Ecml2ZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX3BhZ2UuM3g8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyM18xNCI+U2V0X0N1cnJlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDIzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjNfMjciPkZybTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMjRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyNF8yNyI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KQorICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODgxXzciPlI8L0E+IDxiPmlzPC9iPgorICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzciPkVfVW5rbm93bl9Db21tYW5kPC9BPiA9Jmd0OworICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MDhfMjciPlVua25vd25fUmVxdWVzdDwvQT47CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzNfNyI+RV9JbnZhbGlkX0ZpZWxkPC9BPiA9Jmd0OworICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MDlfMjciPkludmFsaWRfRmllbGQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc0XzciPkVfUmVxdWVzdF9EZW5pZWQ8L0E+ID0mZ3Q7CisgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcwN18yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPGI+b3RoZXJzPC9iPiA9Jmd0OworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODgxXzciPlI8L0E+KTsKKyAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzA2XzI3Ij5Gb3JtX09rPC9BPjsKKyAgICAgIDxiPmVuZDwvYj4gPGI+Y2FzZTwvYj47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxMl8xMyI+RHJpdmVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgbWFuIHBhZ2UgZm9ybV9wYWdlLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyNF8xNCI+U2V0X0N1cnJlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwMl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI0XzI3Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTAzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjVfMjciPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI2XzE2Ij5TZXRfQ3VycmVudF9GbGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI2XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDI2XzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMjZfNDUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMjZfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MDVfMTYiPlNldF9DdXJyZW50X0ZsZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTA1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MDVfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MDVfNDUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkwNV8xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0N1cnJlbnRfRmxkLCAic2V0X2N1cnJlbnRfZmllbGQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI5XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDI2XzE2Ij5TZXRfQ3VycmVudF9GbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjNfMjciPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyNF8yNyI+RmxkPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDI5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDI5XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyM18xNCI+U2V0X0N1cnJlbnQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAzOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI5XzEzIj5DdXJyZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAzOF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI5XzIyIj5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4KKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkwNV8xNiI+U2V0X0N1cnJlbnRfRmxkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI0XzI3Ij5Gcm08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjVfMjciPkZsZDwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI0XzE0Ij5TZXRfQ3VycmVudDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxNF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzMwXzEzIj5DdXJyZW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MTRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzczMF8yMiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0MF8xNiI+Q3VycmVudF9GbGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDQwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDQwXzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTE2XzE2Ij5DdXJyZW50X0ZsZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTE2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTZfMTYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEN1cnJlbnRfRmxkLCAiY3VycmVudF9maWVsZCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNDNfNyI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNDBfMTYiPkN1cnJlbnRfRmxkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI5XzIyIj5Gcm08L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MTlfNyI+RmxkPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxNl8xNiI+Q3VycmVudF9GbGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzBfMjIiPkZybTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA0M183Ij5GbGQ8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxOV83Ij5GbGQ8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNDNfNyI+RmxkPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI5XzEzIj5DdXJyZW50PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDUzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzRfMTQiPlNldF9QYWdlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1M18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzM0XzI0Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1NF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzM1XzI0Ij5QYWdlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzIwXzkiPlBhZ2VfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjBfOSI+UGFnZV9OdW1iZXI8L0E+J0ZpcnN0KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTlfNyI+RmxkPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzMwXzEzIj5DdXJyZW50PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkyOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzM1XzE0Ij5TZXRfUGFnZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTI5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzVfMjQiPkZybTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTMwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzZfMjQiPlBhZ2U8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyMV85Ij5QYWdlX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzIxXzkiPlBhZ2VfTnVtYmVyPC9BPidGaXJzdCkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1Nl8xNiI+U2V0X0ZybV9QYWdlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1Nl8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA1Nl8xNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDU2XzQyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDU2XzE2Ij5QZzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzMl8xNiI+U2V0X0ZybV9QYWdlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MzJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkzMl8xNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzMl80MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTMyXzE2Ij5QZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0ZybV9QYWdlLCAic2V0X2Zvcm1fcGFnZSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNTlfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNTZfMTYiPlNldF9Gcm1fUGFnZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzczNF8yNCI+RnJtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzczNV8yNCI+UGFnZTwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNTlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNTlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzM0XzE0Ij5TZXRfUGFnZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDBfMTMiPlBhZ2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDY4XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDBfMTkiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzIwXzkiPlBhZ2VfTnVtYmVyPC9BPgorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTMyXzE2Ij5TZXRfRnJtX1BhZ2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzVfMjQiPkZybTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzZfMjQiPlBhZ2U8L0E+KSkpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzVfMTQiPlNldF9QYWdlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTQxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDFfMTMiPlBhZ2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0MV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQxXzE5Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyMV85Ij5QYWdlX051bWJlcjwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA3MF8xNiI+R2V0X1BhZ2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDcwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDcwXzE2Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NDNfMTYiPkdldF9QYWdlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NDNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0M18xNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRfUGFnZSwgImZvcm1fcGFnZSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNzNfNyI+UDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNzBfMTYiPkdldF9QYWdlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQwXzE5Ij5Gcm08L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NDZfNyI+UDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0M18xNiI+R2V0X1BhZ2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDFfMTkiPkZybTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA3M183Ij5QPC9BPiAmbHQ7IDAgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODZfNCI+Rm9ybV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0Nl83Ij5QPC9BPiAmbHQ7IDAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzIwXzkiPlBhZ2VfTnVtYmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA3M183Ij5QPC9BPik7CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyMV85Ij5QYWdlX051bWJlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0Nl83Ij5QPC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQwXzEzIj5QYWdlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQxXzEzIj5QYWdlPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ1XzEzIj5HZXRfSW5kZXg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDgyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDVfMjQiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IFBvc2l0aXZlCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk1NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ2XzEzIj5HZXRfSW5kZXg8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk1NV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ2XzI0Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDg0XzE2Ij5HZXRfRmllbGRpbmRleDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwODRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwODRfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NTdfMTYiPkdldF9GaWVsZGluZGV4PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NTdfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk1N18xNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X0ZpZWxkaW5kZXgsICJmaWVsZF9pbmRleCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwODdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA4NF8xNiI+R2V0X0ZpZWxkaW5kZXg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDVfMjQiPkZsZDwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk2MF83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NTdfMTYiPkdldF9GaWVsZGluZGV4PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ2XzI0Ij5GbGQ8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwODdfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTYwXzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IFBvc2l0aXZlIChOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDg3XzciPlJlczwvQT4pICsgUG9zaXRpdmUnRmlyc3QpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDVfMTMiPkdldF9JbmRleDwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IFBvc2l0aXZlIChOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NjBfNyI+UmVzPC9BPikgKyBQb3NpdGl2ZSdGaXJzdCk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc0Nl8xMyI+R2V0X0luZGV4PC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBtYW4gcGFnZSBmb3JtX25ld19wYWdlLjN4PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTAyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NTdfMTQiPlNldF9OZXdfUGFnZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDJfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1N18yOCI+RmxkPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1OF8yOCI+TmV3X1BhZ2U8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IG1hbiBwYWdlIGZvcm1fbmV3X3BhZ2UuM3g8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzU4XzE0Ij5TZXRfTmV3X1BhZ2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3NV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzU4XzI4Ij5GbGQ8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3Nl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzU5XzI4Ij5OZXdfUGFnZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTA1XzE2Ij5TZXRfUGFnZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMDVfMTYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDVfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMDVfMTYiPkZsZzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3OF8xNiI+U2V0X1BhZ2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTc4XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3OF8zOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTc4XzE2Ij5GbGc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9QYWdlLCAic2V0X25ld19wYWdlIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwOF83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwNV8xNiI+U2V0X1BhZ2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NTdfMjgiPkZsZDwvQT4sIEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NThfMjgiPk5ld19QYWdlPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwOF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwOF83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NTdfMTQiPlNldF9OZXdfUGFnZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjNfMTMiPklzX05ld19QYWdlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTExN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzYzXzI2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzhfMTYiPlNldF9QYWdlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzU4XzI4Ij5GbGQ8L0E+LCBCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzU5XzI4Ij5OZXdfUGFnZTwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1OF8xNCI+U2V0X05ld19QYWdlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTg3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjRfMTMiPklzX05ld19QYWdlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85ODdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc2NF8yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE5XzE2Ij5Jc19OZXc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTE5XzE2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTg5XzE2Ij5Jc19OZXc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4OV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTg5XzE2Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJc19OZXcsICJuZXdfcGFnZSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMjJfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTExOV8xNiI+SXNfTmV3PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzYzXzI2Ij5GbGQ8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTJfNyI+UmVzPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTg5XzE2Ij5Jc19OZXc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjRfMjYiPkZsZDwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEyMl83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OTJfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82OF80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjNfMTMiPklzX05ld19QYWdlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzY0XzEzIj5Jc19OZXdfUGFnZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTMxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzZfMTQiPkZyZWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTMxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzZfMjAiPkZBPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzRfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMzJfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzN18yMCI+RnJlZV9GaWVsZHM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM3XzE0Ij5GcmVlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDAxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzdfMjAiPkZBPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzVfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwMl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM4XzIwIj5GcmVlX0ZpZWxkczwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSkKICAgIDxiPmlzPC9iPgogICAgICAgPGI+cHJvY2VkdXJlPC9iPiBSZWxlYXNlIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uCi0gICAgICAgIChGaWVsZF9BcnJheSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM0XzkiPkZpZWxkX0FycmF5X0FjY2VzczwvQT4pOworICAgICAgICAoRmllbGRfQXJyYXksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNl8yMCI+RkE8L0E+IC89IDxiPm51bGw8L2I+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM3XzIwIj5GcmVlX0ZpZWxkczwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPmZvcjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTM4XzE0Ij5JPC9BPjwvRk9OVD4gPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNl8yMCI+RkE8L0E+J0ZpcnN0IC4uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzZfMjAiPkZBPC9BPidMYXN0IC0gMSkgPGI+bG9vcDwvYj4KLSAgICAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzZfMjAiPkZBPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEzOF8xNCI+STwvQT4pIC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5XzQiPk51bGxfRmllbGQ8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zMTVfMTQiPkRlbGV0ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNl8yMCI+RkE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTM4XzE0Ij5JPC9BPikpOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzN18yMCI+RkE8L0E+IC89IDxiPm51bGw8L2I+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM4XzIwIj5GcmVlX0ZpZWxkczwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPmZvcjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMDhfMTQiPkk8L0E+PC9zcGFuPiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTM3XzIwIj5GQTwvQT4nRmlyc3QgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzN18yMCI+RkE8L0E+J0xhc3QgLSAxKSA8Yj5sb29wPC9iPgorICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzN18yMCI+RkE8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMDhfMTQiPkk8L0E+KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzE2XzE0Ij5EZWxldGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzdfMjAiPkZBPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDA4XzE0Ij5JPC9BPikpOwogICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICBSZWxlYXNlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzZfMjAiPkZBPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNl8xNCI+RnJlZTwvQT47CisgICAgICBSZWxlYXNlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzdfMjAiPkZBPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzN18xNCI+RnJlZTwvQT47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTQ5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDJfMTMiPkRlZmF1bHRfRmllbGRfT3B0aW9uczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjhfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxOV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA0XzEzIj5EZWZhdWx0X0ZpZWxkX09wdGlvbnM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+CiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80MTZfMTMiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDJfMTMiPkRlZmF1bHRfRmllbGRfT3B0aW9uczwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQxN18xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX0ZpZWxkPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwNF8xMyI+RGVmYXVsdF9GaWVsZF9PcHRpb25zPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI1XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI2XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY2M18xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MF80Ij5OdWxsX0Zvcm08L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI1XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY2NF8xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NV80Ij5OdWxsX0Zvcm08L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI2XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0KaW5kZXggMmE5YTViMi4uZGQ0MDIwOSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0KQEAgLTEsNzg2ICsxLDc5OSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXMuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtcy5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm0gICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjI5IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDYvMDYvMjUgMTQ6MzA6MjEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgZm9ybSBiaW5kaW5nLjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQuIFBsZWFzZSBkb24ndCBjaGFuZ2UgaXQgbWFudWFsbHkhPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJ1biB0aGUgZ2VuZXJhdG9yIGluc3RlYWQuPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLkZvcm0gICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjMzIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjU3IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IFN5c3RlbTsKIDxiPndpdGg8L2I+IEFkYS5DaGFyYWN0ZXJzLkxhdGluXzE7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MV80MCI+Rm9ybXM8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDlfMzUiPkZvcm1zPC9BPik7Ci0gICA8Yj5wcmFnbWE8L2I+IExpbmtlcl9PcHRpb25zICgiLWxmb3JtdyIpOwotICAgPGI+cHJhZ21hPC9iPiBMaW5rZXJfT3B0aW9ucyAoIi1sbmN1cnNlc3ciKTsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUwXzQwIj5Gb3JtczwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+KTsKKyAgIDxiPnByYWdtYTwvYj4gTGlua2VyX09wdGlvbnMgKCItbGZvcm0iICZhbXA7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfOV80Ij5ERlRfQVJHX1NVRkZJWDwvQT4pOwogCiAgICBTcGFjZSA6IENoYXJhY3RlciA8Yj5yZW5hbWVzPC9iPiBBZGEuQ2hhcmFjdGVycy5MYXRpbl8xLlNwYWNlOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzkiPkZpZWxkPC9BPjwvRk9OVD4gICAgICAgIDxiPmlzPC9iPiA8Yj5wcml2YXRlPC9iPjsKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfOSI+Rm9ybTwvQT48L0ZPTlQ+ICAgICAgICAgPGI+aXM8L2I+IDxiPnByaXZhdGU8L2I+OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzkiPkZpZWxkPC9BPjwvc3Bhbj4gICAgICAgIDxiPmlzPC9iPiA8Yj5wcml2YXRlPC9iPjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml85Ij5Gb3JtPC9BPjwvc3Bhbj4gICAgICAgICA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzQiPk51bGxfRm9ybTwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfNCI+TnVsbF9GaWVsZDwvQT48L3NwYW4+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNCI+TnVsbF9Gb3JtPC9BPjwvc3Bhbj4gICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Ml85Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzMzIj5Ob25lPC9BPjwvRk9OVD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMzMiPkxlZnQ8L0E+PC9GT05UPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8zMyI+Q2VudGVyPC9BPjwvRk9OVD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMzMiPlJpZ2h0PC9BPjwvRk9OVD4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N18zMyI+Tm9uZTwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMzMiPkxlZnQ8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzMzIj5DZW50ZXI8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwXzMzIj5SaWdodDwvQT48L3NwYW4+KTsKIAorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgICAgIDxiPnJlY29yZDwvYj4KKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8xMCI+VmlzaWJsZTwvQT48L3NwYW4+ICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzEwIj5BY3RpdmU8L0E+PC9zcGFuPiAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMTAiPlB1YmxpYzwvQT48L3NwYW4+ICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N18xMCI+RWRpdDwvQT48L3NwYW4+ICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzEwIj5XcmFwPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfMTAiPkJsYW5rPC9BPjwvc3Bhbj4gICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8xMCI+QXV0b19Ta2lwPC9BPjwvc3Bhbj4gOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzEwIj5OdWxsX09rPC9BPjwvc3Bhbj4gICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzJfMTAiPlBhc3NfT2s8L0E+PC9zcGFuPiAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83M18xMCI+U3RhdGljPC9BPjwvc3Bhbj4gICAgOiBCb29sZWFuOworICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDX1Bhc3NfQnlfQ29weSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4pOworCisgICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+IDxiPnVzZTwvYj4KKyAgICAgIDxiPnJlY29yZDwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY0XzEwIj5WaXNpYmxlPC9BPiAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI3OV80Ij5PX1ZJU0lCTEVfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjgwXzQiPk9fVklTSUJMRV9MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY1XzEwIj5BY3RpdmU8L0E+ICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI4MV80Ij5PX0FDVElWRV9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yODJfNCI+T19BQ1RJVkVfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Nl8xMCI+UHVibGljPC9BPiAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yODNfNCI+T19QVUJMSUNfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjg0XzQiPk9fUFVCTElDX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjdfMTAiPkVkaXQ8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjg1XzQiPk9fRURJVF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yODZfNCI+T19FRElUX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjhfMTAiPldyYXA8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjg3XzQiPk9fV1JBUF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yODhfNCI+T19XUkFQX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjlfMTAiPkJsYW5rPC9BPiAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjg5XzQiPk9fQkxBTktfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjkwXzQiPk9fQkxBTktfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MF8xMCI+QXV0b19Ta2lwPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTFfNCI+T19BVVRPU0tJUF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTJfNCI+T19BVVRPU0tJUF9MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcxXzEwIj5OdWxsX09rPC9BPiAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI5M180Ij5PX05VTExPS19GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTRfNCI+T19OVUxMT0tfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83Ml8xMCI+UGFzc19PazwvQT4gICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTVfNCI+T19QQVNTT0tfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjk2XzQiPk9fUEFTU09LX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzNfMTAiPlN0YXRpYzwvQT4gICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjk3XzQiPk9fU1RBVElDX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI5OF80Ij5PX1NUQVRJQ19MYXN0PC9BPjsKKyAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZik7Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4XzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgICAgIDxiPnJlY29yZDwvYj4KLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzBfMTAiPlZpc2libGU8L0E+PC9GT05UPiAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8xMCI+QWN0aXZlPC9BPjwvRk9OVD4gICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyXzEwIj5QdWJsaWM8L0E+PC9GT05UPiAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfMTAiPkVkaXQ8L0E+PC9GT05UPiAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NF8xMCI+V3JhcDwvQT48L0ZPTlQ+ICAgICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1XzEwIj5CbGFuazwvQT48L0ZPTlQ+ICAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzZfMTAiPkF1dG9fU2tpcDwvQT48L0ZPTlQ+ICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N18xMCI+TnVsbF9PazwvQT48L0ZPTlQ+ICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4XzEwIj5QYXNzX09rPC9BPjwvRk9OVD4gICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzlfMTAiPlN0YXRpYzwvQT48L0ZPTlQ+ICAgICAgOiBCb29sZWFuOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPik7Ci0KLSAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjhfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4gPGI+dXNlPC9iPgotICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzBfMTAiPlZpc2libGU8L0E+ICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDAgLi4gIDA7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MV8xMCI+QWN0aXZlPC9BPiAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMSAuLiAgMTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyXzEwIj5QdWJsaWM8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICAyIC4uICAyOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzNfMTAiPkVkaXQ8L0E+ICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDMgLi4gIDM7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NF8xMCI+V3JhcDwvQT4gICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNCAuLiAgNDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1XzEwIj5CbGFuazwvQT4gICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICA1IC4uICA1OwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzZfMTAiPkF1dG9fU2tpcDwvQT4gICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDYgLi4gIDY7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83N18xMCI+TnVsbF9PazwvQT4gICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNyAuLiAgNzsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc4XzEwIj5QYXNzX09rPC9BPiAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICA4IC4uICA4OwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzlfMTAiPlN0YXRpYzwvQT4gICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDkgLi4gIDk7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4XzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+J1NpemUgPGI+dXNlPC9iPiAzMjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGU6IHRoaXMgcmVwLiBjbGF1c2UgaXMgZ2VuZXJhdGVkIGFuZCBtYXkgYmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS5Ebmw8L0VNPjwvRk9OVD4KLQorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTlfNCI+RmllbGRfT3B0aW9uc19TaXplPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9uKTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTQ5XzEzIj5EZWZhdWx0X0ZpZWxkX09wdGlvbnM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4XzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGUgaW5pdGlhbCBkZWZhdWx0cyBmb3IgdGhlIGZpZWxkIG9wdGlvbnMuPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTAyXzEzIj5EZWZhdWx0X0ZpZWxkX09wdGlvbnM8L0E+KTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDE5XzEzIj5EZWZhdWx0X0ZpZWxkX09wdGlvbnM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlIGluaXRpYWwgZGVmYXVsdHMgZm9yIHRoZSBmaWVsZCBvcHRpb25zLjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwNF8xMyI+RGVmYXVsdF9GaWVsZF9PcHRpb25zPC9BPik7CiAKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICAgICA8Yj5yZWNvcmQ8L2I+CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwXzEwIj5OTF9PdmVybG9hZDwvQT48L3NwYW4+IDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTFfMTAiPkJTX092ZXJsb2FkPC9BPjwvc3Bhbj4gOiBCb29sZWFuOworICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDX1Bhc3NfQnlfQ29weSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4pOworCisgICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+IDxiPnVzZTwvYj4KKyAgICAgIDxiPnJlY29yZDwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzExMF8xMCI+TkxfT3ZlcmxvYWQ8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMwM180Ij5PX05MX09WRVJMT0FEX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMwNF80Ij5PX05MX09WRVJMT0FEX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTExXzEwIj5CU19PdmVybG9hZDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzA1XzQiPk9fQlNfT1ZFUkxPQURfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzA2XzQiPk9fQlNfT1ZFUkxPQURfTGFzdDwvQT47CisgICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47CiAgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOwotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8xMCI+TkxfT3ZlcmxvYWQ8L0E+PC9GT05UPiA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMF8xMCI+QlNfT3ZlcmxvYWQ8L0E+PC9GT05UPiA6IEJvb2xlYW47Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwN185Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+KTsKLQotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPiA8Yj51c2U8L2I+Ci0gICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDlfMTAiPk5MX092ZXJsb2FkPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDAgLi4gIDA7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMTBfMTAiPkJTX092ZXJsb2FkPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDEgLi4gIDE7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwN185Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+J1NpemUgPGI+dXNlPC9iPiAzMjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGU6IHRoaXMgcmVwLiBjbGF1c2UgaXMgZ2VuZXJhdGVkIGFuZCBtYXkgYmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS5Ebmw8L0VNPjwvRk9OVD4KLQorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOTlfNCI+RmllbGRfT3B0aW9uc19TaXplPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9uKTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTU1XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZSBpbml0aWFsIGRlZmF1bHRzIGZvciB0aGUgZm9ybSBvcHRpb25zLjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyNV8xMyI+RGVmYXVsdF9Gb3JtX09wdGlvbnM8L0E+KTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDI1XzEzIj5EZWZhdWx0X0Zvcm1fT3B0aW9uczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgaW5pdGlhbCBkZWZhdWx0cyBmb3IgdGhlIGZvcm0gb3B0aW9ucy48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjZfMTMiPkRlZmF1bHRfRm9ybV9PcHRpb25zPC9BPik7CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBOYXR1cmFsOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gTmF0dXJhbDsKIAotICAgPGI+dHlwZTwvYj4gRmllbGRfQXJyYXkgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoUG9zaXRpdmUgPGI+cmFuZ2U8L2I+ICZsdDsmZ3Q7KSA8Yj5vZjwvYj4gPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OworICAgPGI+dHlwZTwvYj4gRmllbGRfQXJyYXkgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoUG9zaXRpdmUgPGI+cmFuZ2U8L2I+ICZsdDsmZ3Q7KSA8Yj5vZjwvYj4gPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OwogICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCBGaWVsZF9BcnJheSk7CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0XzkiPkZpZWxkX0FycmF5X0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IEZpZWxkX0FycmF5OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiBGaWVsZF9BcnJheTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEzMV8xNCI+RnJlZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEzMV8yMCI+RkE8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNF85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTMyXzIwIj5GcmVlX0ZpZWxkczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gRmFsc2UpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSZWxlYXNlIHRoZSBtZW1vcnkgZm9yIGFuIGFsbG9jYXRlZCBmaWVsZCBhcnJheTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJZiBGcmVlX0ZpZWxkcyBpcyBUcnVlLCBjYWxsIERlbGV0ZSgpIGZvciBhbGwgdGhlIGZpZWxkcyBpbjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgYXJyYXkuPC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMDFfMTQiPkZyZWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzN18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTAwMV8yMCI+RkE8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMDJfMjAiPkZyZWVfRmllbGRzPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJlbGVhc2UgdGhlIG1lbW9yeSBmb3IgYW4gYWxsb2NhdGVkIGZpZWxkIGFycmF5PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJZiBGcmVlX0ZpZWxkcyBpcyBUcnVlLCBjYWxsIERlbGV0ZSgpIGZvciBhbGwgdGhlIGZpZWxkcyBpbjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhlIGFycmF5LjwvRU0+PC9zcGFuPgogCi0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjhfOSI+S2V5X0NvZGU8L0E+IDxiPnJhbmdlPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMSkgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDU3KTsKKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2XzkiPktleV9Db2RlPC9BPiA8Yj5yYW5nZTwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDEpIC4uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA1Nyk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIHByZWZpeCBGXyBzdGFuZHMgZm9yICJGb3JtIFJlcXVlc3QiPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NV80Ij5GX05leHRfUGFnZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0Nl80Ij5GX1ByZXZpb3VzX1BhZ2U8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDI7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0N180Ij5GX0ZpcnN0X1BhZ2U8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OF80Ij5GX0xhc3RfUGFnZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQ7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgcHJlZml4IEZfIHN0YW5kcyBmb3IgIkZvcm0gUmVxdWVzdCI8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDZfNCI+Rl9OZXh0X1BhZ2U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0N180Ij5GX1ByZXZpb3VzX1BhZ2U8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4XzQiPkZfRmlyc3RfUGFnZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDlfNCI+Rl9MYXN0X1BhZ2U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA0OwogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MF80Ij5GX05leHRfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDU7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MV80Ij5GX1ByZXZpb3VzX0ZpZWxkPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDY7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1Ml80Ij5GX0ZpcnN0X0ZpZWxkPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1M180Ij5GX0xhc3RfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDg7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NF80Ij5GX1NvcnRlZF9OZXh0X0ZpZWxkPC9BPjwvRk9OVD4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDk7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NV80Ij5GX1NvcnRlZF9QcmV2aW91c19GaWVsZDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDEwOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTZfNCI+Rl9Tb3J0ZWRfRmlyc3RfRmllbGQ8L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAxMTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU3XzQiPkZfU29ydGVkX0xhc3RfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTI7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1OF80Ij5GX0xlZnRfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDEzOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTlfNCI+Rl9SaWdodF9GaWVsZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAxNDsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwXzQiPkZfVXBfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTU7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MV80Ij5GX0Rvd25fRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MV80Ij5GX05leHRfRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzQiPkZfUHJldmlvdXNfRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTNfNCI+Rl9GaXJzdF9GaWVsZDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA3OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NF80Ij5GX0xhc3RfRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU1XzQiPkZfU29ydGVkX05leHRfRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTZfNCI+Rl9Tb3J0ZWRfUHJldmlvdXNfRmllbGQ8L0E+PC9zcGFuPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTdfNCI+Rl9Tb3J0ZWRfRmlyc3RfRmllbGQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNThfNCI+Rl9Tb3J0ZWRfTGFzdF9GaWVsZDwvQT48L3NwYW4+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTlfNCI+Rl9MZWZ0X0ZpZWxkPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjBfNCI+Rl9SaWdodF9GaWVsZDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjFfNCI+Rl9VcF9GaWVsZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjJfNCI+Rl9Eb3duX0ZpZWxkPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxNjsKIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjNfNCI+Rl9OZXh0X0NoYXI8L0E+PC9GT05UPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAxNzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY0XzQiPkZfUHJldmlvdXNfQ2hhcjwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTg7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NV80Ij5GX05leHRfTGluZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE5OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjZfNCI+Rl9QcmV2aW91c19MaW5lPC9BPjwvRk9OVD4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAyMDsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3XzQiPkZfTmV4dF9Xb3JkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMjE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2OF80Ij5GX1ByZXZpb3VzX1dvcmQ8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDIyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjlfNCI+Rl9CZWdpbl9GaWVsZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAyMzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcwXzQiPkZfRW5kX0ZpZWxkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMjQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MV80Ij5GX0JlZ2luX0xpbmU8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDI1OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzJfNCI+Rl9FbmRfTGluZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAyNjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczXzQiPkZfTGVmdF9DaGFyPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMjc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NF80Ij5GX1JpZ2h0X0NoYXI8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDI4OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzVfNCI+Rl9VcF9DaGFyPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAyOTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2XzQiPkZfRG93bl9DaGFyPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMzA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY0XzQiPkZfTmV4dF9DaGFyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY1XzQiPkZfUHJldmlvdXNfQ2hhcjwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2XzQiPkZfTmV4dF9MaW5lPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3XzQiPkZfUHJldmlvdXNfTGluZTwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY4XzQiPkZfTmV4dF9Xb3JkPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY5XzQiPkZfUHJldmlvdXNfV29yZDwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcwXzQiPkZfQmVnaW5fRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcxXzQiPkZfRW5kX0ZpZWxkPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyXzQiPkZfQmVnaW5fTGluZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTczXzQiPkZfRW5kX0xpbmU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0XzQiPkZfTGVmdF9DaGFyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc1XzQiPkZfUmlnaHRfQ2hhcjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc2XzQiPkZfVXBfQ2hhcjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc3XzQiPkZfRG93bl9DaGFyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMzA7CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc4XzQiPkZfTmV3X0xpbmU8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMzE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OV80Ij5GX0luc2VydF9DaGFyPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDMyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODBfNCI+Rl9JbnNlcnRfTGluZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAzMzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxXzQiPkZfRGVsZXRlX0NoYXI8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMzQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4Ml80Ij5GX0RlbGV0ZV9QcmV2aW91czwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDM1OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODNfNCI+Rl9EZWxldGVfTGluZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAzNjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg0XzQiPkZfRGVsZXRlX1dvcmQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMzc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NV80Ij5GX0NsZWFyX0VPTDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDM4OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODZfNCI+Rl9DbGVhcl9FT0Y8L0E+PC9GT05UPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAzOTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg3XzQiPkZfQ2xlYXJfRmllbGQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNDA7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4OF80Ij5GX092ZXJsYXlfTW9kZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQxOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODlfNCI+Rl9JbnNlcnRfTW9kZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA0MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzlfNCI+Rl9OZXdfTGluZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODBfNCI+Rl9JbnNlcnRfQ2hhcjwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODFfNCI+Rl9JbnNlcnRfTGluZTwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODJfNCI+Rl9EZWxldGVfQ2hhcjwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODNfNCI+Rl9EZWxldGVfUHJldmlvdXM8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODRfNCI+Rl9EZWxldGVfTGluZTwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODVfNCI+Rl9EZWxldGVfV29yZDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODZfNCI+Rl9DbGVhcl9FT0w8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODdfNCI+Rl9DbGVhcl9FT0Y8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAzOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODhfNCI+Rl9DbGVhcl9GaWVsZDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA0MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODlfNCI+Rl9PdmVybGF5X01vZGU8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA0MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTBfNCI+Rl9JbnNlcnRfTW9kZTwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyA0MjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJ0aWNhbCBTY3JvbGxpbmc8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkyXzQiPkZfU2Nyb2xsRm9yd2FyZF9MaW5lPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNDM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5M180Ij5GX1Njcm9sbEJhY2t3YXJkX0xpbmU8L0E+PC9GT05UPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQ0OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfNCI+Rl9TY3JvbGxGb3J3YXJkX1BhZ2U8L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA0NTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1XzQiPkZfU2Nyb2xsQmFja3dhcmRfUGFnZTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNDY7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5Nl80Ij5GX1Njcm9sbEZvcndhcmRfSGFsZlBhZ2U8L0E+PC9GT05UPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQ3OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTdfNCI+Rl9TY3JvbGxCYWNrd2FyZF9IYWxmUGFnZTwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA0ODsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnRpY2FsIFNjcm9sbGluZzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5M180Ij5GX1Njcm9sbEZvcndhcmRfTGluZTwvQT48L3NwYW4+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQzOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NF80Ij5GX1Njcm9sbEJhY2t3YXJkX0xpbmU8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NV80Ij5GX1Njcm9sbEZvcndhcmRfUGFnZTwvQT48L3NwYW4+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Nl80Ij5GX1Njcm9sbEJhY2t3YXJkX1BhZ2U8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5N180Ij5GX1Njcm9sbEZvcndhcmRfSGFsZlBhZ2U8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ3OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5OF80Ij5GX1Njcm9sbEJhY2t3YXJkX0hhbGZQYWdlPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ4OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEhvcml6b250YWwgU2Nyb2xsaW5nPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMF80Ij5GX0hTY3JvbGxGb3J3YXJkX0NoYXI8L0E+PC9GT05UPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQ5OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDFfNCI+Rl9IU2Nyb2xsQmFja3dhcmRfQ2hhcjwvQT48L0ZPTlQ+ICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA1MDsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAyXzQiPkZfSFNjcm9sbEZvcndhcmRfTGluZTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNTE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwM180Ij5GX0hTY3JvbGxCYWNrd2FyZF9MaW5lPC9BPjwvRk9OVD4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDUyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDRfNCI+Rl9IU2Nyb2xsRm9yd2FyZF9IYWxmTGluZTwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA1MzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA1XzQiPkZfSFNjcm9sbEJhY2t3YXJkX0hhbGZMaW5lPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNTQ7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBIb3Jpem9udGFsIFNjcm9sbGluZzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMV80Ij5GX0hTY3JvbGxGb3J3YXJkX0NoYXI8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDQ5OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMl80Ij5GX0hTY3JvbGxCYWNrd2FyZF9DaGFyPC9BPjwvc3Bhbj4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDUwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwM180Ij5GX0hTY3JvbGxGb3J3YXJkX0xpbmU8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDUxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNF80Ij5GX0hTY3JvbGxCYWNrd2FyZF9MaW5lPC9BPjwvc3Bhbj4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDUyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNV80Ij5GX0hTY3JvbGxGb3J3YXJkX0hhbGZMaW5lPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDUzOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNl80Ij5GX0hTY3JvbGxCYWNrd2FyZF9IYWxmTGluZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDU0OwogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwN180Ij5GX1ZhbGlkYXRlX0ZpZWxkPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDU1OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDhfNCI+Rl9OZXh0X0Nob2ljZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA1NjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA5XzQiPkZfUHJldmlvdXNfQ2hvaWNlPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNTc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4XzQiPkZfVmFsaWRhdGVfRmllbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNTU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA5XzQiPkZfTmV4dF9DaG9pY2U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEwXzQiPkZfUHJldmlvdXNfQ2hvaWNlPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNTc7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgRm9yIHRob3NlIHdobyBsaWtlIHRoZSBvbGQgJ0MnIHN0eWxlIHJlcXVlc3QgbmFtZXM8L0VNPjwvRk9OVD4KLSAgIFJFUV9ORVhUX1BBR0UgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDVfNCI+Rl9OZXh0X1BhZ2U8L0E+OwotICAgUkVRX1BSRVZfUEFHRSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Nl80Ij5GX1ByZXZpb3VzX1BhZ2U8L0E+OwotICAgUkVRX0ZJUlNUX1BBR0UgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0N180Ij5GX0ZpcnN0X1BhZ2U8L0E+OwotICAgUkVRX0xBU1RfUEFHRSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0OF80Ij5GX0xhc3RfUGFnZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBGb3IgdGhvc2Ugd2hvIGxpa2UgdGhlIG9sZCAnQycgc3R5bGUgcmVxdWVzdCBuYW1lczwvRU0+PC9zcGFuPgorICAgUkVRX05FWFRfUEFHRSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Nl80Ij5GX05leHRfUGFnZTwvQT47CisgICBSRVFfUFJFVl9QQUdFICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQ3XzQiPkZfUHJldmlvdXNfUGFnZTwvQT47CisgICBSRVFfRklSU1RfUEFHRSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQ4XzQiPkZfRmlyc3RfUGFnZTwvQT47CisgICBSRVFfTEFTVF9QQUdFICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQ5XzQiPkZfTGFzdF9QYWdlPC9BPjsKIAotICAgUkVRX05FWFRfRklFTEQgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1MF80Ij5GX05leHRfRmllbGQ8L0E+OwotICAgUkVRX1BSRVZfRklFTEQgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1MV80Ij5GX1ByZXZpb3VzX0ZpZWxkPC9BPjsKLSAgIFJFUV9GSVJTVF9GSUVMRCAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNTJfNCI+Rl9GaXJzdF9GaWVsZDwvQT47Ci0gICBSRVFfTEFTVF9GSUVMRCAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTUzXzQiPkZfTGFzdF9GaWVsZDwvQT47Ci0gICBSRVFfU05FWFRfRklFTEQgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTU0XzQiPkZfU29ydGVkX05leHRfRmllbGQ8L0E+OwotICAgUkVRX1NQUkVWX0ZJRUxEICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1NV80Ij5GX1NvcnRlZF9QcmV2aW91c19GaWVsZDwvQT47Ci0gICBSRVFfU0ZJUlNUX0ZJRUxEIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTU2XzQiPkZfU29ydGVkX0ZpcnN0X0ZpZWxkPC9BPjsKLSAgIFJFUV9TTEFTVF9GSUVMRCAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNTdfNCI+Rl9Tb3J0ZWRfTGFzdF9GaWVsZDwvQT47Ci0gICBSRVFfTEVGVF9GSUVMRCAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTU4XzQiPkZfTGVmdF9GaWVsZDwvQT47Ci0gICBSRVFfUklHSFRfRklFTEQgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTU5XzQiPkZfUmlnaHRfRmllbGQ8L0E+OwotICAgUkVRX1VQX0ZJRUxEICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2MF80Ij5GX1VwX0ZpZWxkPC9BPjsKLSAgIFJFUV9ET1dOX0ZJRUxEICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjFfNCI+Rl9Eb3duX0ZpZWxkPC9BPjsKKyAgIFJFUV9ORVhUX0ZJRUxEICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNTFfNCI+Rl9OZXh0X0ZpZWxkPC9BPjsKKyAgIFJFUV9QUkVWX0ZJRUxEICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNTJfNCI+Rl9QcmV2aW91c19GaWVsZDwvQT47CisgICBSRVFfRklSU1RfRklFTEQgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTUzXzQiPkZfRmlyc3RfRmllbGQ8L0E+OworICAgUkVRX0xBU1RfRklFTEQgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1NF80Ij5GX0xhc3RfRmllbGQ8L0E+OworICAgUkVRX1NORVhUX0ZJRUxEICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1NV80Ij5GX1NvcnRlZF9OZXh0X0ZpZWxkPC9BPjsKKyAgIFJFUV9TUFJFVl9GSUVMRCAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNTZfNCI+Rl9Tb3J0ZWRfUHJldmlvdXNfRmllbGQ8L0E+OworICAgUkVRX1NGSVJTVF9GSUVMRCA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1N180Ij5GX1NvcnRlZF9GaXJzdF9GaWVsZDwvQT47CisgICBSRVFfU0xBU1RfRklFTEQgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTU4XzQiPkZfU29ydGVkX0xhc3RfRmllbGQ8L0E+OworICAgUkVRX0xFRlRfRklFTEQgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE1OV80Ij5GX0xlZnRfRmllbGQ8L0E+OworICAgUkVRX1JJR0hUX0ZJRUxEICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2MF80Ij5GX1JpZ2h0X0ZpZWxkPC9BPjsKKyAgIFJFUV9VUF9GSUVMRCAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjFfNCI+Rl9VcF9GaWVsZDwvQT47CisgICBSRVFfRE9XTl9GSUVMRCAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTYyXzQiPkZfRG93bl9GaWVsZDwvQT47CiAKLSAgIFJFUV9ORVhUX0NIQVIgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjNfNCI+Rl9OZXh0X0NoYXI8L0E+OwotICAgUkVRX1BSRVZfQ0hBUiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2NF80Ij5GX1ByZXZpb3VzX0NoYXI8L0E+OwotICAgUkVRX05FWFRfTElORSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2NV80Ij5GX05leHRfTGluZTwvQT47Ci0gICBSRVFfUFJFVl9MSU5FICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTY2XzQiPkZfUHJldmlvdXNfTGluZTwvQT47Ci0gICBSRVFfTkVYVF9XT1JEICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTY3XzQiPkZfTmV4dF9Xb3JkPC9BPjsKLSAgIFJFUV9QUkVWX1dPUkQgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjhfNCI+Rl9QcmV2aW91c19Xb3JkPC9BPjsKLSAgIFJFUV9CRUdfRklFTEQgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjlfNCI+Rl9CZWdpbl9GaWVsZDwvQT47Ci0gICBSRVFfRU5EX0ZJRUxEICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTcwXzQiPkZfRW5kX0ZpZWxkPC9BPjsKLSAgIFJFUV9CRUdfTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzFfNCI+Rl9CZWdpbl9MaW5lPC9BPjsKLSAgIFJFUV9FTkRfTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzJfNCI+Rl9FbmRfTGluZTwvQT47Ci0gICBSRVFfTEVGVF9DSEFSICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTczXzQiPkZfTGVmdF9DaGFyPC9BPjsKLSAgIFJFUV9SSUdIVF9DSEFSICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzRfNCI+Rl9SaWdodF9DaGFyPC9BPjsKLSAgIFJFUV9VUF9DSEFSICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzVfNCI+Rl9VcF9DaGFyPC9BPjsKLSAgIFJFUV9ET1dOX0NIQVIgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzZfNCI+Rl9Eb3duX0NoYXI8L0E+OworICAgUkVRX05FWFRfQ0hBUiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2NF80Ij5GX05leHRfQ2hhcjwvQT47CisgICBSRVFfUFJFVl9DSEFSICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTY1XzQiPkZfUHJldmlvdXNfQ2hhcjwvQT47CisgICBSRVFfTkVYVF9MSU5FICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTY2XzQiPkZfTmV4dF9MaW5lPC9BPjsKKyAgIFJFUV9QUkVWX0xJTkUgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjdfNCI+Rl9QcmV2aW91c19MaW5lPC9BPjsKKyAgIFJFUV9ORVhUX1dPUkQgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNjhfNCI+Rl9OZXh0X1dvcmQ8L0E+OworICAgUkVRX1BSRVZfV09SRCAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE2OV80Ij5GX1ByZXZpb3VzX1dvcmQ8L0E+OworICAgUkVRX0JFR19GSUVMRCAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3MF80Ij5GX0JlZ2luX0ZpZWxkPC9BPjsKKyAgIFJFUV9FTkRfRklFTEQgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzFfNCI+Rl9FbmRfRmllbGQ8L0E+OworICAgUkVRX0JFR19MSU5FICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3Ml80Ij5GX0JlZ2luX0xpbmU8L0E+OworICAgUkVRX0VORF9MSU5FICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3M180Ij5GX0VuZF9MaW5lPC9BPjsKKyAgIFJFUV9MRUZUX0NIQVIgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzRfNCI+Rl9MZWZ0X0NoYXI8L0E+OworICAgUkVRX1JJR0hUX0NIQVIgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3NV80Ij5GX1JpZ2h0X0NoYXI8L0E+OworICAgUkVRX1VQX0NIQVIgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3Nl80Ij5GX1VwX0NoYXI8L0E+OworICAgUkVRX0RPV05fQ0hBUiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE3N180Ij5GX0Rvd25fQ2hhcjwvQT47CiAKLSAgIFJFUV9ORVdfTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNzhfNCI+Rl9OZXdfTGluZTwvQT47Ci0gICBSRVFfSU5TX0NIQVIgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTc5XzQiPkZfSW5zZXJ0X0NoYXI8L0E+OwotICAgUkVRX0lOU19MSU5FICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4MF80Ij5GX0luc2VydF9MaW5lPC9BPjsKLSAgIFJFUV9ERUxfQ0hBUiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODFfNCI+Rl9EZWxldGVfQ2hhcjwvQT47Ci0gICBSRVFfREVMX1BSRVYgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTgyXzQiPkZfRGVsZXRlX1ByZXZpb3VzPC9BPjsKLSAgIFJFUV9ERUxfTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODNfNCI+Rl9EZWxldGVfTGluZTwvQT47Ci0gICBSRVFfREVMX1dPUkQgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTg0XzQiPkZfRGVsZXRlX1dvcmQ8L0E+OwotICAgUkVRX0NMUl9FT0wgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4NV80Ij5GX0NsZWFyX0VPTDwvQT47Ci0gICBSRVFfQ0xSX0VPRiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTg2XzQiPkZfQ2xlYXJfRU9GPC9BPjsKLSAgIFJFUV9DTFJfRklFTEQgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODdfNCI+Rl9DbGVhcl9GaWVsZDwvQT47Ci0gICBSRVFfT1ZMX01PREUgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTg4XzQiPkZfT3ZlcmxheV9Nb2RlPC9BPjsKLSAgIFJFUV9JTlNfTU9ERSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODlfNCI+Rl9JbnNlcnRfTW9kZTwvQT47CisgICBSRVFfTkVXX0xJTkUgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTc5XzQiPkZfTmV3X0xpbmU8L0E+OworICAgUkVRX0lOU19DSEFSICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4MF80Ij5GX0luc2VydF9DaGFyPC9BPjsKKyAgIFJFUV9JTlNfTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODFfNCI+Rl9JbnNlcnRfTGluZTwvQT47CisgICBSRVFfREVMX0NIQVIgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTgyXzQiPkZfRGVsZXRlX0NoYXI8L0E+OworICAgUkVRX0RFTF9QUkVWICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4M180Ij5GX0RlbGV0ZV9QcmV2aW91czwvQT47CisgICBSRVFfREVMX0xJTkUgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTg0XzQiPkZfRGVsZXRlX0xpbmU8L0E+OworICAgUkVRX0RFTF9XT1JEICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4NV80Ij5GX0RlbGV0ZV9Xb3JkPC9BPjsKKyAgIFJFUV9DTFJfRU9MICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xODZfNCI+Rl9DbGVhcl9FT0w8L0E+OworICAgUkVRX0NMUl9FT0YgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4N180Ij5GX0NsZWFyX0VPRjwvQT47CisgICBSRVFfQ0xSX0ZJRUxEICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTg4XzQiPkZfQ2xlYXJfRmllbGQ8L0E+OworICAgUkVRX09WTF9NT0RFICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE4OV80Ij5GX092ZXJsYXlfTW9kZTwvQT47CisgICBSRVFfSU5TX01PREUgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTkwXzQiPkZfSW5zZXJ0X01vZGU8L0E+OwogCi0gICBSRVFfU0NSX0ZMSU5FICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTkyXzQiPkZfU2Nyb2xsRm9yd2FyZF9MaW5lPC9BPjsKLSAgIFJFUV9TQ1JfQkxJTkUgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xOTNfNCI+Rl9TY3JvbGxCYWNrd2FyZF9MaW5lPC9BPjsKLSAgIFJFUV9TQ1JfRlBBR0UgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xOTRfNCI+Rl9TY3JvbGxGb3J3YXJkX1BhZ2U8L0E+OwotICAgUkVRX1NDUl9CUEFHRSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE5NV80Ij5GX1Njcm9sbEJhY2t3YXJkX1BhZ2U8L0E+OwotICAgUkVRX1NDUl9GSFBBR0UgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE5Nl80Ij5GX1Njcm9sbEZvcndhcmRfSGFsZlBhZ2U8L0E+OwotICAgUkVRX1NDUl9CSFBBR0UgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE5N180Ij5GX1Njcm9sbEJhY2t3YXJkX0hhbGZQYWdlPC9BPjsKKyAgIFJFUV9TQ1JfRkxJTkUgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xOTNfNCI+Rl9TY3JvbGxGb3J3YXJkX0xpbmU8L0E+OworICAgUkVRX1NDUl9CTElORSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE5NF80Ij5GX1Njcm9sbEJhY2t3YXJkX0xpbmU8L0E+OworICAgUkVRX1NDUl9GUEFHRSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE5NV80Ij5GX1Njcm9sbEZvcndhcmRfUGFnZTwvQT47CisgICBSRVFfU0NSX0JQQUdFICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTk2XzQiPkZfU2Nyb2xsQmFja3dhcmRfUGFnZTwvQT47CisgICBSRVFfU0NSX0ZIUEFHRSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTk3XzQiPkZfU2Nyb2xsRm9yd2FyZF9IYWxmUGFnZTwvQT47CisgICBSRVFfU0NSX0JIUEFHRSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTk4XzQiPkZfU2Nyb2xsQmFja3dhcmRfSGFsZlBhZ2U8L0E+OwogCi0gICBSRVFfU0NSX0ZDSEFSICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjAwXzQiPkZfSFNjcm9sbEZvcndhcmRfQ2hhcjwvQT47Ci0gICBSRVFfU0NSX0JDSEFSICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjAxXzQiPkZfSFNjcm9sbEJhY2t3YXJkX0NoYXI8L0E+OwotICAgUkVRX1NDUl9IRkxJTkUgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzIwMl80Ij5GX0hTY3JvbGxGb3J3YXJkX0xpbmU8L0E+OwotICAgUkVRX1NDUl9IQkxJTkUgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzIwM180Ij5GX0hTY3JvbGxCYWNrd2FyZF9MaW5lPC9BPjsKLSAgIFJFUV9TQ1JfSEZIQUxGICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDRfNCI+Rl9IU2Nyb2xsRm9yd2FyZF9IYWxmTGluZTwvQT47Ci0gICBSRVFfU0NSX0hCSEFMRiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjA1XzQiPkZfSFNjcm9sbEJhY2t3YXJkX0hhbGZMaW5lPC9BPjsKKyAgIFJFUV9TQ1JfRkNIQVIgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDFfNCI+Rl9IU2Nyb2xsRm9yd2FyZF9DaGFyPC9BPjsKKyAgIFJFUV9TQ1JfQkNIQVIgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDJfNCI+Rl9IU2Nyb2xsQmFja3dhcmRfQ2hhcjwvQT47CisgICBSRVFfU0NSX0hGTElORSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjAzXzQiPkZfSFNjcm9sbEZvcndhcmRfTGluZTwvQT47CisgICBSRVFfU0NSX0hCTElORSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjA0XzQiPkZfSFNjcm9sbEJhY2t3YXJkX0xpbmU8L0E+OworICAgUkVRX1NDUl9IRkhBTEYgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzIwNV80Ij5GX0hTY3JvbGxGb3J3YXJkX0hhbGZMaW5lPC9BPjsKKyAgIFJFUV9TQ1JfSEJIQUxGICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDZfNCI+Rl9IU2Nyb2xsQmFja3dhcmRfSGFsZkxpbmU8L0E+OwogCi0gICBSRVFfVkFMSURBVElPTiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQyXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjA3XzQiPkZfVmFsaWRhdGVfRmllbGQ8L0E+OwotICAgUkVRX05FWFRfQ0hPSUNFICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzIwOF80Ij5GX05leHRfQ2hvaWNlPC9BPjsKLSAgIFJFUV9QUkVWX0NIT0lDRSAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDlfNCI+Rl9QcmV2aW91c19DaG9pY2U8L0E+OworICAgUkVRX1ZBTElEQVRJT04gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzIwOF80Ij5GX1ZhbGlkYXRlX0ZpZWxkPC9BPjsKKyAgIFJFUV9ORVhUX0NIT0lDRSAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8yMDlfNCI+Rl9OZXh0X0Nob2ljZTwvQT47CisgICBSRVFfUFJFVl9DSE9JQ0UgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTQzXzEyIj5Gb3JtX1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjEwXzQiPkZfUHJldmlvdXNfQ2hvaWNlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODFfMTQiPlJlcXVlc3RfTmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3Nl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODFfMjgiPktleTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDJfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84Ml8zMyI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NF8xNCI+UmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzdfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY0XzI4Ij5LZXk8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xNDNfMTIiPkZvcm1fUmVxdWVzdF9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzhfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY1XzMzIj5OYW1lPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkwXzEzIj5SZXF1ZXN0X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkwXzI3Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0Ml8xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+ICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjgwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83M18xMyI+UmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODBfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzczXzI3Ij5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzE0M18xMiI+Rm9ybV9SZXF1ZXN0X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChSZXF1ZXN0X05hbWUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV4Y2VwdGlvbnMgIC0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI4Nl80Ij5Gb3JtX0V4Y2VwdGlvbjwvQT48L0ZPTlQ+IDogPGI+ZXhjZXB0aW9uPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBFeGNlcHRpb25zICAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODdfNCI+Rm9ybV9FeGNlcHRpb248L0E+PC9zcGFuPiA6IDxiPmV4Y2VwdGlvbjwvYj47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5mb3JtX2ZpZWxkX25ldy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+Zm9ybV9maWVsZF9uZXcuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjkzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDhfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5M18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA4XzIxIj5IZWlnaHQ8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwOV8yMSI+V2lkdGg8L0E+PC9GT05UPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMF8yMSI+VG9wPC9BPjwvRk9OVD4gICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTZfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMV8yMSI+TGVmdDwvQT48L0ZPTlQ+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5N18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEyXzIxIj5PZmZfU2NyZWVuPC9BPjwvRk9OVD4gICA6IE5hdHVyYWwgOj0gMDsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOThfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExM18yMSI+TW9yZV9CdWZmZXJzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMjlfOSI+QnVmZmVyX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+J0ZpcnN0KQotICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+bmV3X2ZpZWxkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFuIG92ZXJsb2FkZWQgQ3JlYXRlIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZS48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MV8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxXzIxIj5IZWlnaHQ8L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5NV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTJfMjEiPldpZHRoPC9BPjwvc3Bhbj4gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTZfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkzXzIxIj5Ub3A8L0E+PC9zcGFuPiAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk3XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NF8yMSI+TGVmdDwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk4XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NV8yMSI+T2ZmX1NjcmVlbjwvQT48L3NwYW4+ICAgOiBOYXR1cmFsIDo9IDA7CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk2XzIxIj5Nb3JlX0J1ZmZlcnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4nRmlyc3QpCisgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+bmV3X2ZpZWxkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBbiBvdmVybG9hZGVkIENyZWF0ZSBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmUuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IE5ld19GaWVsZCAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDRfMjQiPkhlaWdodDwvQT48L0ZPTlQ+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwNV8yNCI+V2lkdGg8L0E+PC9GT05UPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDZfMjQiPlRvcDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzA3XzI0Ij5MZWZ0PC9BPjwvRk9OVD4gICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzA4XzI0Ij5PZmZfU2NyZWVuPC9BPjwvRk9OVD4gICA6IE5hdHVyYWwgOj0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDlfMjQiPk1vcmVfQnVmZmVyczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMjkzXzEzIj5DcmVhdGU8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5uZXdfZmllbGQoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiBOZXdfRmllbGQgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDVfMjQiPkhlaWdodDwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA2XzI0Ij5XaWR0aDwvQT48L3NwYW4+ICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA3XzI0Ij5Ub3A8L0E+PC9zcGFuPiAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA4XzI0Ij5MZWZ0PC9BPjwvc3Bhbj4gICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDlfMjQiPk9mZl9TY3JlZW48L0E+PC9zcGFuPiAgIDogTmF0dXJhbCA6PSAwOworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzEwXzI0Ij5Nb3JlX0J1ZmZlcnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzBfOSI+QnVmZmVyX051bWJlcjwvQT4nRmlyc3QpCisgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzI5NF8xMyI+Q3JlYXRlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfbmV3LjN4Lmh0bWwiPm5ld19maWVsZCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKE5ld19GaWVsZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTMxXzE0Ij5EZWxldGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEzMV8yMiI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5mcmVlX2ZpZWxkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJlc2V0IEZsZCB0byBOdWxsX0ZpZWxkPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFuIG92ZXJsb2FkZWQgRGVsZXRlIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZS48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE0XzE0Ij5EZWxldGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxNl8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTE0XzIyIj5GbGQ8L0E+PC9zcGFuPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5mcmVlX2ZpZWxkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZXNldCBGbGQgdG8gTnVsbF9GaWVsZDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCBEZWxldGUgaXMgZGVmaW5lZCBsYXRlci4gUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlLjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTQ3XzEzIj5EdXBsaWNhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE0N18yNCI+RmxkPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyMl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTQ4XzI0Ij5Ub3A8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjNfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE0OV8yNCI+TGVmdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfbmV3LjN4Lmh0bWwiPmR1cF9maWVsZCgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEyNl8xMyI+RHVwbGljYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEyNl8yNCI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzIzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMjdfMjQiPlRvcDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzI0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMjhfMjQiPkxlZnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+ZHVwX2ZpZWxkKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoRHVwbGljYXRlKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE2OF8xMyI+TGluazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyOF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTY4XzE5Ij5GbGQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyOV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTY5XzE5Ij5Ub3A8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzMwXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNzBfMTkiPkxlZnQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5saW5rX2ZpZWxkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzI4XzEzIj5MaW5rPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyOV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTQ3XzEzIj5MaW5rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE0N18xOSI+RmxkPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzMF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTQ4XzE5Ij5Ub3A8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzFfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE0OV8xOSI+TGVmdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5saW5rX2ZpZWxkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzI5XzEzIj5MaW5rPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3guaHRtbCI+Zm9ybV9maWVsZF9qdXN0LjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3guaHRtbCI+Zm9ybV9maWVsZF9qdXN0LjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE5M18xNCI+U2V0X0p1c3RpZmljYXRpb248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzlfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE5M18zMyI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDBfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzE5NF8zMyI+SnVzdDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzMzIj5Ob25lPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfanVzdC4zeC5odG1sIj5zZXRfZmllbGRfanVzdCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzMzOV8xNCI+U2V0X0p1c3RpZmljYXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTcyXzE0Ij5TZXRfSnVzdGlmaWNhdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQwXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xNzJfMzMiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0MV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTczXzMzIj5KdXN0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N18zMyI+Tm9uZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwiPnNldF9maWVsZF9qdXN0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzQwXzE0Ij5TZXRfSnVzdGlmaWNhdGlvbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjExXzEzIj5HZXRfSnVzdGlmaWNhdGlvbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0NV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjExXzMyIj5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82Ml85Ij5GaWVsZF9KdXN0aWZpY2F0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwiPmZpZWxkX2p1c3QoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDVfMTMiPkdldF9KdXN0aWZpY2F0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTg2XzEzIj5HZXRfSnVzdGlmaWNhdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ2XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xODZfMzIiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZpZWxkX0p1c3RpZmljYXRpb248L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwiPmZpZWxkX2p1c3QoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8zNDZfMTMiPkdldF9KdXN0aWZpY2F0aW9uPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5mb3JtX2ZpZWxkX2J1ZmZlci4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+Zm9ybV9maWVsZF9idWZmZXIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjI1XzE0Ij5TZXRfQnVmZmVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIyNl83Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yMjdfNyI+QnVmZmVyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIyOF83Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5zZXRfZmllbGRfYnVmZmVyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5vdCBpbmxpbmVkPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIwMF8xNCI+U2V0X0J1ZmZlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIwMV83Ij5GbGQ8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjAyXzciPkJ1ZmZlcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjAzXzciPlN0cjwvQT48L3NwYW4+ICAgIDogU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4Lmh0bWwiPnNldF9maWVsZF9idWZmZXIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE5vdCBpbmxpbmVkPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjUwXzE0Ij5HZXRfQnVmZmVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzYzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1MV83Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNTJfNyI+QnVmZmVyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI1M183Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+ZmllbGRfYnVmZmVyKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIxN18xNCI+R2V0X0J1ZmZlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIxOF83Ij5GbGQ8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjE5XzciPkJ1ZmZlcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjIwXzciPlN0cjwvQT48L3NwYW4+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmcpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+ZmllbGRfYnVmZmVyKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjYyXzEzIj5HZXRfQnVmZmVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzY5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI2M183Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNjRfNyI+QnVmZmVyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTI5XzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkgPGI+cmV0dXJuPC9iPiBTdHJpbmc7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4Lmh0bWwiPmZpZWxkX2J1ZmZlcigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBTYW1lIGJ1dCBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIyOV8xMyI+R2V0X0J1ZmZlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzIzMF83Ij5GbGQ8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjMxXzciPkJ1ZmZlcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTMwXzkiPkJ1ZmZlcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPidGaXJzdCkgPGI+cmV0dXJuPC9iPiBTdHJpbmc7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5maWVsZF9idWZmZXIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYnV0IGFzIGZ1bmN0aW9uPC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoR2V0X0J1ZmZlcik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3NV8xNCI+U2V0X1N0YXR1czwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjc1XzI2Ij5GbGQ8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3Nl8yNiI+U3RhdHVzPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+c2V0X2ZpZWxkX3N0YXR1cygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM3Nl8xNCI+U2V0X1N0YXR1czwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjQyXzE0Ij5TZXRfU3RhdHVzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI0Ml8yNiI+RmxkPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjQzXzI2Ij5TdGF0dXM8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5zZXRfZmllbGRfc3RhdHVzKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzc3XzE0Ij5TZXRfU3RhdHVzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjkxXzEzIj5DaGFuZ2VkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzgyXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTFfMjIiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4Lmh0bWwiPmZpZWxkX3N0YXR1cygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4Ml8xMyI+Q2hhbmdlZDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzgzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yNTdfMTMiPkNoYW5nZWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4M18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjU3XzIyIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+ZmllbGRfc3RhdHVzKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzgzXzEzIj5DaGFuZ2VkPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwN18xNCI+U2V0X01heGltdW1fU2l6ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4N18zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzA3XzMyIj5GbGQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODhfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwOF8zMiI+TWF4PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCA6PSAwKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+c2V0X2ZpZWxkX21heCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzM4N18xNCI+U2V0X01heGltdW1fU2l6ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjczXzE0Ij5TZXRfTWF4aW11bV9TaXplPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODhfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI3M18zMiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4OV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMjc0XzMyIj5NYXg8L0E+PC9zcGFuPiA6IE5hdHVyYWwgOj0gMCk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5zZXRfZmllbGRfbWF4KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMzg4XzE0Ij5TZXRfTWF4aW11bV9TaXplPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjdfMTQiPlNldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjdfMjciPkZsZDwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjhfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5zZXRfZmllbGRfb3B0cygpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBbiBvdmVybG9hZGVkIHZlcnNpb24gaXMgZGVmaW5lZCBsYXRlci4gUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzk4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTBfMTQiPlNldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOThfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzI5MF8yNyI+RmxkPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzk5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8yOTFfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyXzkiPkZpZWxkX09wdGlvbl9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5zZXRfZmllbGRfb3B0cygpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCB2ZXJzaW9uIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNDVfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDAzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNDVfMzAiPkZsZDwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNDZfMzAiPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM0N18zMCI+T248L0E+PC9GT05UPiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9vcHRzLjN4Lmh0bWwiPmZpZWxkX29wdHNfb24oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBmaWVsZF9vcHRzX29mZigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFuIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwM18xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwNF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzAzXzMwIj5GbGQ8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwNF8zMCI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMwNV8zMCI+T248L0E+PC9zcGFuPiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5maWVsZF9vcHRzX29uKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGZpZWxkX29wdHNfb2ZmKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFuIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzcxXzE0Ij5HZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzcxXzI3Ij5GbGQ8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MTJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM3Ml8yNyI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OF85Ij5GaWVsZF9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5maWVsZF9vcHRzKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDEyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjRfMTQiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MTJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzMyNF8yNyI+RmxkPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDEzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMjVfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9vcHRzLjN4Lmh0bWwiPmZpZWxkX29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDE2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zODRfMTMiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDE2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zODRfMjYiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU5XzQiPk51bGxfRmllbGQ8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjhfOSI+RmllbGRfT3B0aW9uX1NldDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5maWVsZF9vcHRzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFuIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzM2XzEzIj5HZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDE3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zMzZfMjYiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0XzQiPk51bGxfRmllbGQ8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjJfOSI+RmllbGRfT3B0aW9uX1NldDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+ZmllbGRfb3B0cygpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCB2ZXJzaW9uIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZvcm1fZmllbGRfYXR0cmlidXRlcy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZvcm1fZmllbGRfYXR0cmlidXRlcy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzk5XzE0Ij5TZXRfRm9yZWdyb3VuZDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDBfNyI+RmxkPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDFfNyI+Rm9yZTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDAyXzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIj5zZXRfZmllbGRfZm9yZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQyNl8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM1MV8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTJfNyI+RmxkPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzUzXzciPkZvcmU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNTRfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPnNldF9maWVsZF9mb3JlKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDI3XzE0Ij5TZXRfRm9yZWdyb3VuZDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MjFfMTQiPkZvcmVncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQyMV8yNiI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQyMl8yNiI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZpZWxkX2ZvcmUoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM2OF8xNCI+Rm9yZWdyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDM1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNjhfMjYiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDM2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNjlfMjYiPkZvcmU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+ZmllbGRfZm9yZSgpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MzBfMTQiPkZvcmVncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQzMF8yNiI+RmxkPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MzFfMjYiPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQzMl8yNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZpZWxkX2ZvcmUoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM3N18xNCI+Rm9yZWdyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zNzdfMjYiPkZsZDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzc4XzI2Ij5Gb3JlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM3OV8yNiI+Q29sb3I8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIj5maWVsZF9mb3JlKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoRm9yZWdyb3VuZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0M18xNCI+U2V0X0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDQ0XzciPkZsZDwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDQ1XzciPkJhY2s8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0Nl83Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X2ZpZWxkX2JhY2soKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzM5MF8xNCI+U2V0X0JhY2tncm91bmQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zOTFfNyI+RmxkPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMzkyXzciPkJhY2s8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8zOTNfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPnNldF9maWVsZF9iYWNrKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoU2V0X0JhY2tncm91bmQpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjVfMTQiPkJhY2tncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2NV8yNiI+RmxkPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2Nl8yNiI+QmFjazwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZpZWxkX2JhY2soKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQwN18xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDdfMjYiPkZsZDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MDhfMjYiPkJhY2s8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+ZmllbGRfYmFjaygpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzRfMTQiPkJhY2tncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3NF8yNiI+RmxkPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDYwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NzVfMjYiPkJhY2s8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ3Nl8yNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZpZWxkX2JhY2soKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQxNl8xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDYwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80MTZfMjYiPkZsZDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDE3XzI2Ij5CYWNrPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQxOF8yNiI+Q29sb3I8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIj5maWVsZF9iYWNrKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoQmFja2dyb3VuZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ4N18xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjZfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ4N18zMyI+RmxkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2N18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDg4XzMzIj5QYWQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBDaGFyYWN0ZXIgOj0gU3BhY2UpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X2ZpZWxkX3BhZCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2Nl8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQyOV8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2N18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDI5XzMzIj5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2OF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDMwXzMzIj5QYWQ8L0E+PC9zcGFuPiA6IENoYXJhY3RlciA6PSBTcGFjZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X2ZpZWxkX3BhZCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ2N18xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTA0XzE0Ij5QYWRfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDcyXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MDRfMjkiPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUwNV8yOSI+UGFkPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IENoYXJhY3Rlcik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIj5maWVsZF9wYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NzJfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0M18xNCI+UGFkX0NoYXJhY3RlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDczXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NDNfMjkiPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ0NF8yOSI+UGFkPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IENoYXJhY3Rlcik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+ZmllbGRfcGFkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDczXzE0Ij5QYWRfQ2hhcmFjdGVyPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2luZm8uM3guaHRtbCI+Zm9ybV9maWVsZF9pbmZvLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2luZm8uM3guaHRtbCI+Zm9ybV9maWVsZF9pbmZvLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDgyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MTlfMTQiPkluZm88L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODJfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUxOV8yMCI+RmxkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTIwXzIwIj5MaW5lczwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDg0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MjFfMjAiPkNvbHVtbnM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTIyXzIwIj5GaXJzdF9Sb3c8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyM18yMCI+Rmlyc3RfQ29sdW1uPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyNF8yMCI+T2ZmX1NjcmVlbjwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5vdXQ8L2I+IE5hdHVyYWw7Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyNV8yMCI+QWRkaXRpb25hbF9CdWZmZXJzPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEyOV85Ij5CdWZmZXJfTnVtYmVyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGRfaW5mby4zeC5odG1sIj5maWVsZF9pbmZvKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDgyXzE0Ij5JbmZvPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDgzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NThfMTQiPkluZm88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDU4XzIwIj5GbGQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NTlfMjAiPkxpbmVzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDYwXzIwIj5Db2x1bW5zPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDYxXzIwIj5GaXJzdF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4N18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNDYyXzIwIj5GaXJzdF9Db2x1bW48L0E+PC9zcGFuPiAgICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg4XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80NjNfMjAiPk9mZl9TY3JlZW48L0E+PC9zcGFuPiAgICAgICAgIDogPGI+b3V0PC9iPiBOYXR1cmFsOworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ2NF8yMCI+QWRkaXRpb25hbF9CdWZmZXJzPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzMF85Ij5CdWZmZXJfTnVtYmVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2luZm8uM3guaHRtbCI+ZmllbGRfaW5mbygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ4M18xNCI+SW5mbzwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NTNfMTQiPkR5bmFtaWNfSW5mbzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5M18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTUzXzI4Ij5GbGQ8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTRfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU1NF8yOCI+TGluZXM8L0E+PC9GT05UPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5NV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTU1XzI4Ij5Db2x1bW5zPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTZfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU1Nl8yOCI+TWF4PC9BPjwvRk9OVD4gICAgIDogPGI+b3V0PC9iPiBOYXR1cmFsKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZF9pbmZvLjN4Lmh0bWwiPmR5bmFtaWNfZmllbGRfaW5mbygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5M18xNCI+RHluYW1pY19JbmZvPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80ODhfMTQiPkR5bmFtaWNfSW5mbzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80ODhfMjgiPkZsZDwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTVfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzQ4OV8yOCI+TGluZXM8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk2XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTBfMjgiPkNvbHVtbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl80OTFfMjgiPk1heDwvQT48L3NwYW4+ICAgICA6IDxiPm91dDwvYj4gTmF0dXJhbCk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkX2luZm8uM3guaHRtbCI+ZHluYW1pY19maWVsZF9pbmZvKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNDk0XzE0Ij5EeW5hbWljX0luZm88L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fd2luLjN4Lmh0bWwiPmZvcm1fd2luLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX3dpbi4zeC5odG1sIj5mb3JtX3dpbi4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTgyXzE0Ij5TZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81ODJfMjYiPkZybTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81ODNfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3dpbi4zeC5odG1sIj5zZXRfZm9ybV93aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MDVfMTQiPlNldF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUxM18xNCI+U2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTA2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MTNfMjYiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTE0XzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV93aW4uM3guaHRtbCI+c2V0X2Zvcm1fd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTA2XzE0Ij5TZXRfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yOCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTk4XzEzIj5HZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTExXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81OThfMjUiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV93aW4uM3guaHRtbCI+Zm9ybV93aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTFfMTMiPkdldF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTI2XzEzIj5HZXRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUyNl8yNSI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV93aW4uM3guaHRtbCI+Zm9ybV93aW4oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTJfMTMiPkdldF9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjEwXzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxNl8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjEwXzMwIj5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxMV8zMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fd2luLjN4Lmh0bWwiPnNldF9mb3JtX3N1YigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxNl8xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzUzOF8xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxN18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTM4XzMwIj5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81MzlfMzAiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3dpbi4zeC5odG1sIj5zZXRfZm9ybV9zdWIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MTdfMTQiPlNldF9TdWJfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjI2XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMl8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjI2XzI5Ij5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fd2luLjN4Lmh0bWwiPmZvcm1fc3ViKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTIyXzEzIj5HZXRfU3ViX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTIzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NTFfMTMiPkdldF9TdWJfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU1MV8yOSI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV93aW4uM3guaHRtbCI+Zm9ybV9zdWIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjNfMTMiPkdldF9TdWJfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYzOF8xNCI+U2NhbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjdfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYzOF8yMSI+RnJtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyOF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjM5XzIxIj5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY0MF8yMSI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fd2luLjN4Lmh0bWwiPnNjYWxlX2Zvcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MjdfMTQiPlNjYWxlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81NjNfMTQiPlNjYWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjhfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2M18yMSI+RnJtPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2NF8yMSI+TGluZXM8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzBfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU2NV8yMSI+Q29sdW1uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3dpbi4zeC5odG1sIj5zY2FsZV9mb3JtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTI4XzE0Ij5TY2FsZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faG9vay4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faG9vay4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+cHJvY2VkdXJlPC9iPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzdfNDkiPkZybTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KTsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM3XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOF85Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5wcm9jZWR1cmU8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM4XzQ5Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KTsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTQxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjJfMTQiPlNldF9GaWVsZF9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDFfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY2Ml8zNSI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTQyXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NjNfMzUiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5zZXRfZmllbGRfaW5pdCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0MV8xNCI+U2V0X0ZpZWxkX0luaXRfSG9vazwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg0XzE0Ij5TZXRfRmllbGRfSW5pdF9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU4NF8zNSI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0M18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNTg1XzM1Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzhfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+c2V0X2ZpZWxkX2luaXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDJfMTQiPlNldF9GaWVsZF9Jbml0X0hvb2s8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjc4XzE0Ij5TZXRfRmllbGRfVGVybV9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTQ3XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NzhfMzUiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0OF8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjc5XzM1Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM3XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+c2V0X2ZpZWxkX3Rlcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NDdfMTQiPlNldF9GaWVsZF9UZXJtX0hvb2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU5N18xNCI+U2V0X0ZpZWxkX1Rlcm1fSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTQ4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl81OTdfMzUiPkZybTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDlfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzU5OF8zNSI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPnNldF9maWVsZF90ZXJtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTQ4XzE0Ij5TZXRfRmllbGRfVGVybV9Ib29rPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY5NF8xNCI+U2V0X0Zvcm1fSW5pdF9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUzXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTRfMzQiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTU0XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82OTVfMzQiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5zZXRfZm9ybV9pbml0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTUzXzE0Ij5TZXRfRm9ybV9Jbml0X0hvb2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxMF8xNCI+U2V0X0Zvcm1fSW5pdF9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTRfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYxMF8zNCI+RnJtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTU1XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82MTFfMzQiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzOF85Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5zZXRfZm9ybV9pbml0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTU0XzE0Ij5TZXRfRm9ybV9Jbml0X0hvb2s8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzEwXzE0Ij5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxMF8zNCI+RnJtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjBfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcxMV8zNCI+UHJvYzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPnNldF9mb3JtX3Rlcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NTlfMTQiPlNldF9Gb3JtX1Rlcm1fSG9vazwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjIzXzE0Ij5TZXRfRm9ybV9UZXJtX0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjIzXzM0Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjFfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzYyNF8zNCI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPnNldF9mb3JtX3Rlcm0oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NjBfMTQiPlNldF9Gb3JtX1Rlcm1fSG9vazwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjVfMTMiPkdldF9GaWVsZF9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjVfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2NV8xMyI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZpZWxkX2luaXQoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2Nl8xMyI+R2V0X0ZpZWxkX0luaXRfSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY2XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NjZfMTMiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+ZmllbGRfaW5pdCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEdldF9GaWVsZF9Jbml0X0hvb2ssICJmaWVsZF9pbml0Iik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3MF8xMyI+R2V0X0ZpZWxkX1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTcwXzEzIj5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+ZmllbGRfdGVybSgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcxXzEzIj5HZXRfRmllbGRfVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzFfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3MV8xMyI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzhfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1faG9vay4zeC5odG1sIj5maWVsZF90ZXJtKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X0ZpZWxkX1Rlcm1fSG9vaywgImZpZWxkX3Rlcm0iKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTc1XzEzIj5HZXRfRm9ybV9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzVfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3NV8xMyI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MzdfOSI+Rm9ybV9Ib29rX0Z1bmN0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faW5pdCgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zOCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTc2XzEzIj5HZXRfRm9ybV9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3Nl8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTc2XzEzIj5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzOF85Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faW5pdCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEdldF9Gb3JtX0luaXRfSG9vaywgImZvcm1faW5pdCIpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODBfMTMiPkdldF9Gb3JtX1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4MF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTgwXzEzIj5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUzN185Ij5Gb3JtX0hvb2tfRnVuY3Rpb248L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+Zm9ybV90ZXJtKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODFfMTMiPkdldF9Gb3JtX1Rlcm1fSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTgxXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81ODFfMTMiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTM4XzkiPkZvcm1fSG9va19GdW5jdGlvbjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2hvb2suM3guaHRtbCI+Zm9ybV90ZXJtKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X0Zvcm1fVGVybV9Ib29rLCAiZm9ybV90ZXJtIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwiPmZvcm1fZmllbGQuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGQuM3guaHRtbCI+Zm9ybV9maWVsZC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzMwXzE0Ij5SZWRlZmluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzMwXzI0Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTkwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83MzFfMjQiPkZsZHM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzRfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGQuM3guaHRtbCI+c2V0X2Zvcm1fZmllbGRzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTg5XzE0Ij5SZWRlZmluZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjQwXzE0Ij5SZWRlZmluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDBfMjQiPkZybTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NDFfMjQiPkZsZHM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGQuM3guaHRtbCI+c2V0X2Zvcm1fZmllbGRzKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzE0Ij5SZWRlZmluZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk1XzE0Ij5TZXRfRmllbGRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk1XzI2Ij5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTZfMjYiPkZsZHM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzRfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPikgPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTg5XzE0Ij5SZWRlZmluZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGQuM3guaHRtbCI+c2V0X2Zvcm1fZmllbGRzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHByYWdtYSBJbmxpbmUgKFNldF9GaWVsZHMpOzwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5Nl8xNCI+U2V0X0ZpZWxkczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTk2XzI2Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTk3XzI2Ij5GbGRzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzVfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPikgPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTkwXzE0Ij5SZWRlZmluZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwiPnNldF9mb3JtX2ZpZWxkcygpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgcHJhZ21hIElubGluZSAoU2V0X0ZpZWxkcyk7PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzUyXzEzIj5GaWVsZHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDFfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc1Ml8yMSI+RnJtPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzUzXzIxIj5JbmRleDwvQT48L0ZPTlQ+IDogUG9zaXRpdmUpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwiPmZvcm1fZmllbGRzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjAxXzEzIj5GaWVsZHM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjU4XzEzIj5GaWVsZHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjU4XzIxIj5Gcm08L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY1OV8yMSI+SW5kZXg8L0E+PC9zcGFuPiA6IFBvc2l0aXZlKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZmllbGQuM3guaHRtbCI+Zm9ybV9maWVsZHMoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MDJfMTMiPkZpZWxkczwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc3Ml8xMyI+RmllbGRfQ291bnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc3Ml8yNiI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiBOYXR1cmFsOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwiPmZpZWxkX2NvdW50KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjA3XzEzIj5GaWVsZF9Db3VudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjA4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82NzhfMTMiPkZpZWxkX0NvdW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzY3OF8yNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiBOYXR1cmFsOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZC4zeC5odG1sIj5maWVsZF9jb3VudCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYwOF8xMyI+RmllbGRfQ291bnQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzgyXzE0Ij5Nb3ZlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjEyXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83ODJfMjAiPkZsZDwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxM18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzgzXzIwIj5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxNF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzg0XzIwIj5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZC4zeC5odG1sIj5tb3ZlX2ZpZWxkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEyXzE0Ij5Nb3ZlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjEzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82ODhfMTQiPk1vdmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxM18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjg4XzIwIj5GbGQ8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl82ODlfMjAiPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxNV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNjkwXzIwIj5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9maWVsZC4zeC5odG1sIj5tb3ZlX2ZpZWxkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjEzXzE0Ij5Nb3ZlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ldy4zeC5odG1sIj5mb3JtX25ldy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+Zm9ybV9uZXcuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyM18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODAyXzEzIj5DcmVhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgwMl8yMSI+RmllbGRzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzRfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+bmV3X2Zvcm0oKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyNF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzA1XzEzIj5DcmVhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyNF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzA1XzIxIj5GaWVsZHM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNV85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+bmV3X2Zvcm0oKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChDcmVhdGUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gTmV3X0Zvcm0gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI4XzIzIj5GaWVsZHM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEzNF85Ij5GaWVsZF9BcnJheV9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+Ci0gICAgIDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzYyM18xMyI+Q3JlYXRlPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+bmV3X2Zvcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJhZ21hIElubGluZSAoTmV3X0Zvcm0pOzwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiBOZXdfRm9ybSAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyOV8yMyI+RmllbGRzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMzVfOSI+RmllbGRfQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPgorICAgICA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MjRfMTMiPkNyZWF0ZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ldy4zeC5odG1sIj5uZXdfZm9ybSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgcHJhZ21hIElubGluZSAoTmV3X0Zvcm0pOzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjM0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MjNfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzNF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODIzXzIyIj5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXcuM3guaHRtbCI+ZnJlZV9mb3JtKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJlc2V0IEZybSB0byBOdWxsX0Zvcm08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcyNl8xNCI+RGVsZXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MzVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzcyNl8yMiI+RnJtPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ldy4zeC5odG1sIj5mcmVlX2Zvcm0oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJlc2V0IEZybSB0byBOdWxsX0Zvcm08L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChEZWxldGUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODQyXzE0Ij5TZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0NF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODQyXzI3Ij5Gcm08L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQ1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NDNfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5zZXRfZm9ybV9vcHRzKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQ1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83NDJfMTQiPlNldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc0Ml8yNyI+RnJtPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc0M18yNyI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA4XzkiPkZvcm1fT3B0aW9uX1NldDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPnNldF9mb3JtX29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfT3B0aW9ucyk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80OSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg2MF8xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg2MF8zMCI+RnJtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODYxXzMwIj5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfMTA3XzkiPkZvcm1fT3B0aW9uX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjUyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NjJfMzAiPk9uPC9BPjwvRk9OVD4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHNfb24oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBmb3JtX29wdHNfb2ZmKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc1NV8xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzU1XzMwIj5Gcm08L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzU2XzMwIj5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDhfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1M18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzU3XzMwIj5PbjwvQT48L3NwYW4+ICAgICAgOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0c19vbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBmb3JtX29wdHNfb2ZmKCk8L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTd2l0Y2hfT3B0aW9ucyk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg4Nl8xNCI+R2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NThfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg4Nl8yNyI+RnJtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg4N18yNyI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHMoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc3Nl8xNCI+R2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzc2XzI3Ij5Gcm08L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY2MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfNzc3XzI3Ij5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84OTlfMTMiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84OTlfMjYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjBfNCI+TnVsbF9Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl8xMDdfOSI+Rm9ybV9PcHRpb25fU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cygpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjY0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl83ODhfMTMiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzc4OF8yNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81NV80Ij5OdWxsX0Zvcm08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzEwOF85Ij5Gb3JtX09wdGlvbl9TZXQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cygpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEdldF9PcHRpb25zKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcG9zdC4zeC5odG1sIj5mb3JtX3Bvc3QuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcG9zdC4zeC5odG1sIj5mb3JtX3Bvc3QuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxM18xNCI+UG9zdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3Ml8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTEzXzIwIj5Gcm08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxNF8yMCI+UG9zdDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcG9zdC4zeC5odG1sIj5wb3N0X2Zvcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB1bnBvc3RfZm9ybSgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjcyXzE0Ij5Qb3N0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjczXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDJfMTQiPlBvc3Q8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODAyXzIwIj5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjc0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MDNfMjAiPlBvc3Q8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3Bvc3QuM3guaHRtbCI+cG9zdF9mb3JtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHVucG9zdF9mb3JtKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82NzNfMTQiPlBvc3Q8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fY3Vyc29yLjN4Lmh0bWwiPmZvcm1fY3Vyc29yLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX2N1cnNvci4zeC5odG1sIj5mb3JtX2N1cnNvci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTM5XzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODNfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkzOV8zMSI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fY3Vyc29yLjN4Lmh0bWwiPnBvc19mb3JtX2N1cnNvcigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzY4M18xNCI+UG9zaXRpb25fQ3Vyc29yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjg0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MjRfMTQiPlBvc2l0aW9uX0N1cnNvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjg0XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84MjRfMzEiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9jdXJzb3IuM3guaHRtbCI+cG9zX2Zvcm1fY3Vyc29yKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjg0XzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZGF0YS4zeC5odG1sIj5mb3JtX2RhdGEuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZGF0YS4zeC5odG1sIj5mb3JtX2RhdGEuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU3XzEzIj5EYXRhX0FoZWFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjkyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NTdfMjUiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwiPmRhdGFfYWhlYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTJfMTMiPkRhdGFfQWhlYWQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfODM5XzEzIj5EYXRhX0FoZWFkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzgzOV8yNSI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwiPmRhdGFfYWhlYWQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82OTNfMTMiPkRhdGFfQWhlYWQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzNfMTMiPkRhdGFfQmVoaW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzNfMjYiPkZybTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTdfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwiPmRhdGFfYmVoaW5kKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjk3XzEzIj5EYXRhX0JlaGluZDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjk4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NTVfMTMiPkRhdGFfQmVoaW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg1NV8yNiI+RnJtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwiPmRhdGFfYmVoaW5kKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNjk4XzEzIj5EYXRhX0JlaGluZDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kcml2ZXIuM3guaHRtbCI+Zm9ybV9kcml2ZXIuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZHJpdmVyLjN4Lmh0bWwiPmZvcm1fZHJpdmVyLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwNV85Ij5Ecml2ZXJfUmVzdWx0PC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwNV8yNyI+Rm9ybV9PazwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwNl8yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+PC9GT05UPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDdfMjciPlVua25vd25fUmVxdWVzdDwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwOF8yNyI+SW52YWxpZF9GaWVsZDwvQT48L0ZPTlQ+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MDZfOSI+RHJpdmVyX1Jlc3VsdDwvQT48L3NwYW4+IDxiPmlzPC9iPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNl8yNyI+Rm9ybV9PazwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzA3XzI3Ij5SZXF1ZXN0X0RlbmllZDwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzA4XzI3Ij5Vbmtub3duX1JlcXVlc3Q8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwOV8yNyI+SW52YWxpZF9GaWVsZDwvQT48L3NwYW4+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzExXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85OTNfMTMiPkRyaXZlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxMV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTkzXzIxIj5Gcm08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTk0XzIxIj5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4XzkiPktleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MDVfOSI+RHJpdmVyX1Jlc3VsdDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fZHJpdmVyLjN4Lmh0bWwiPmZvcm1fZHJpdmVyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIERyaXZlciBub3QgaW5saW5lZDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzEyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NzVfMTMiPkRyaXZlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzEyXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl84NzVfMjEiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzg3Nl8yMSI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82Nl85Ij5LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzA2XzkiPkRyaXZlcl9SZXN1bHQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9kcml2ZXIuM3guaHRtbCI+Zm9ybV9kcml2ZXIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIERyaXZlciBub3QgaW5saW5lZDwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPmZvcm1fcGFnZS4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPmZvcm1fcGFnZS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjBfOSI+UGFnZV9OdW1iZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBOYXR1cmFsOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyMV85Ij5QYWdlX051bWJlcjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IE5hdHVyYWw7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMjNfMTQiPlNldF9DdXJyZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzIzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDIzXzI3Ij5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwMjRfMjciPkZsZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcGFnZS4zeC5odG1sIj5zZXRfY3VycmVudF9maWVsZCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyM18xNCI+U2V0X0N1cnJlbnQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkwMl8xNCI+U2V0X0N1cnJlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTAyXzI3Ij5Gcm08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUyXzkiPkZvcm08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MDNfMjciPkZsZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcGFnZS4zeC5odG1sIj5zZXRfY3VycmVudF9maWVsZCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyNF8xNCI+U2V0X0N1cnJlbnQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzI5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDM4XzEzIj5DdXJyZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzI5XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDM4XzIyIj5Gcm08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcGFnZS4zeC5odG1sIj5jdXJyZW50X2ZpZWxkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzI5XzEzIj5DdXJyZW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MzBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkxNF8xMyI+Q3VycmVudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzMwXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85MTRfMjIiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTFfOSI+RmllbGQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPmN1cnJlbnRfZmllbGQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzBfMTMiPkN1cnJlbnQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA1M18xNCI+U2V0X1BhZ2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzRfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNTNfMjQiPkZybTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzVfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwNTRfMjQiPlBhZ2U8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjBfOSI+UGFnZV9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyMF85Ij5QYWdlX051bWJlcjwvQT4nRmlyc3QpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3BhZ2UuM3guaHRtbCI+c2V0X2Zvcm1fcGFnZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzczNF8xNCI+U2V0X1BhZ2U8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzkyOV8xNCI+U2V0X1BhZ2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczNV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTI5XzI0Ij5Gcm08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Ml85Ij5Gb3JtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTMwXzI0Ij5QYWdlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjFfOSI+UGFnZV9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzcyMV85Ij5QYWdlX051bWJlcjwvQT4nRmlyc3QpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwiPnNldF9mb3JtX3BhZ2UoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MzVfMTQiPlNldF9QYWdlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA2OF8xMyI+UGFnZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0MF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTA2OF8xOSI+RnJtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83MjBfOSI+UGFnZV9OdW1iZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3BhZ2UuM3guaHRtbCI+Zm9ybV9wYWdlKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQwXzEzIj5QYWdlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk0MV8xMyI+UGFnZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzQxXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NDFfMTkiPkZybTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzIxXzkiPlBhZ2VfTnVtYmVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcGFnZS4zeC5odG1sIj5mb3JtX3BhZ2UoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDFfMTMiPlBhZ2U8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzQ1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMDgyXzEzIj5HZXRfSW5kZXg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NDVfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzEwODJfMjQiPkZsZDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+KSA8Yj5yZXR1cm48L2I+IFBvc2l0aXZlOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX3BhZ2UuM3guaHRtbCI+ZmllbGRfaW5kZXgoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGlzIGJpbmRpbmcgd2Ugc3RhcnQgdGhlIG51bWJlcmluZyBvZiBmaWVsZHM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgd2l0aCAxLiBTbyB0aGlzIGlzIG51bWJlciBpcyBvbmUgbW9yZSB0aGFuIHlvdSBnZXQgZnJvbSB0aGUgbG93PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGxldmVsIGNhbGwuPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzQ1XzEzIj5HZXRfSW5kZXg8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU1XzEzIj5HZXRfSW5kZXg8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0Nl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfOTU1XzI0Ij5GbGQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcGFnZS4zeC5odG1sIj5maWVsZF9pbmRleCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGlzIGJpbmRpbmcgd2Ugc3RhcnQgdGhlIG51bWJlcmluZyBvZiBmaWVsZHM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHdpdGggMS4gU28gdGhpcyBpcyBudW1iZXIgaXMgb25lIG1vcmUgdGhhbiB5b3UgZ2V0IGZyb20gdGhlIGxvdzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgbGV2ZWwgY2FsbC48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NDZfMTMiPkdldF9JbmRleDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXdfcGFnZS4zeC5odG1sIj5mb3JtX25ld19wYWdlLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ld19wYWdlLjN4Lmh0bWwiPmZvcm1fbmV3X3BhZ2UuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMDJfMTQiPlNldF9OZXdfUGFnZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1N18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwMl8yOCI+RmxkPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81Nl85Ij5GaWVsZDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1OF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRiLmh0bSNyZWZfMTEwM18yOCI+TmV3X1BhZ2U8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ld19wYWdlLjN4Lmh0bWwiPnNldF9uZXdfcGFnZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzc1N18xNCI+U2V0X05ld19QYWdlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzVfMTQiPlNldF9OZXdfUGFnZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzVfMjgiPkZsZDwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU5XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85NzZfMjgiPk5ld19QYWdlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZm9ybV9uZXdfcGFnZS4zeC5odG1sIj5zZXRfbmV3X3BhZ2UoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NThfMTQiPlNldF9OZXdfUGFnZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzExMTdfMTMiPklzX05ld19QYWdlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzYzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl8xMTE3XzI2Ij5GbGQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU2XzkiPkZpZWxkPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9mb3JtX25ld19wYWdlLjN4Lmh0bWwiPm5ld19wYWdlKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNzYzXzEzIj5Jc19OZXdfUGFnZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzY0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZGIuaHRtI3JlZl85ODdfMTMiPklzX05ld19QYWdlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2FkYi5odG0jcmVmXzk4N18yNiI+RmxkPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2Zvcm1fbmV3X3BhZ2UuM3guaHRtbCI+bmV3X3BhZ2UoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl83NjRfMTMiPklzX05ld19QYWdlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9mb3JtX3JlcXVlc3RuYW1lLjN4Lmh0bWwiPmZvcm1fcmVxdWVzdG5hbWUuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBmb3JtX3JlcXVlc3RfbmFtZSwgZm9ybV9yZXF1ZXN0X2J5X25hbWU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2Zvcm1fcmVxdWVzdG5hbWUuM3guaHRtbCI+Zm9ybV9yZXF1ZXN0bmFtZS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE5vdCBJbXBsZW1lbnRlZDogZm9ybV9yZXF1ZXN0X25hbWUsIGZvcm1fcmVxdWVzdF9ieV9uYW1lPC9FTT48L3NwYW4+CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj5wcml2YXRlPC9iPgotICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKLSAgIDxiPnR5cGU8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU3XzkiPkZvcm08L0E+ICA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy5JbnRlZ2VyX0FkZHJlc3M7CisgICA8Yj50eXBlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81MV85Ij5GaWVsZDwvQT4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gU3lzdGVtLlN0b3JhZ2VfRWxlbWVudHMuSW50ZWdlcl9BZGRyZXNzOworICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4gIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKIAotICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTlfNCI+TnVsbF9GaWVsZDwvQT4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTZfOSI+RmllbGQ8L0E+IDo9IDA7Ci0gICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl82MF80Ij5OdWxsX0Zvcm08L0E+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl81N185Ij5Gb3JtPC9BPiAgOj0gMDsKKyAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzU0XzQiPk51bGxfRmllbGQ8L0E+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzUxXzkiPkZpZWxkPC9BPiA6PSAwOworICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTVfNCI+TnVsbF9Gb3JtPC9BPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1mb3Jtc19fYWRzLmh0bSNyZWZfNTJfOSI+Rm9ybTwvQT4gIDo9IDA7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtZm9ybXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5Gb3JtczwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWZvcm1zX19hZHMuaHRtI3JlZl80NV8zNSI+Rm9ybXM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0KaW5kZXggYjRkM2IwMi4uZjk4MGVhNSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0KQEAgLTEsODMgKzEsOTIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLkl0ZW1fVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLkl0ZW1fVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5NZW51czwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF80NiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDZfNDEiPkl0ZW1fVXNlcl9EYXRhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDVfMzUiPk1lbnVzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNDYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5JdGVtX1VzZXJfRGF0YTwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKKyAgIDxiPnVzZTwvYj4gPGI+dHlwZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU4XzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU4XzI5Ij5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTlfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNThfMTQiPlNldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OF8yOSI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RGF0YTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfOSI+VXNlcl9BY2Nlc3M8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8xNiI+U2V0X0l0ZW1fVXNlcnB0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNiI+SXRtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNiI+QWRkcjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfOSI+VXNlcl9BY2Nlc3M8L0E+KSAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMTYiPlNldF9JdGVtX1VzZXJwdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNiI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzUxXzE2Ij5BZGRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT4pICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9JdGVtX1VzZXJwdHIsICJzZXRfaXRlbV91c2VycHRyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzUxXzE2Ij5TZXRfSXRlbV9Vc2VycHRyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNThfMjkiPkl0bTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzI5Ij5EYXRhPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTVfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU1XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNiI+U2V0X0l0ZW1fVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU4XzI5Ij5JdG08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+RGF0YTwvQT4pKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNThfMTQiPlNldF9Vc2VyX0RhdGE8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjlfMTMiPkdldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Ml8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjlfMjgiPkl0bTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfOSI+VXNlcl9BY2Nlc3M8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82OV8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY5XzI4Ij5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMTYiPkl0ZW1fVXNlcnB0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82NF8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzE2Ij5JdGVtX1VzZXJwdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82MV8xNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXRlbV9Vc2VycHRyLCAiaXRlbV91c2VycHRyIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjRfMTYiPkl0ZW1fVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY5XzI4Ij5JdG08L0E+KTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjFfMTYiPkl0ZW1fVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY5XzI4Ij5JdG08L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjlfMTMiPkdldF9Vc2VyX0RhdGE8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI5Ij5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY1XzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzkiPlVzZXJfQWNjZXNzPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xNCI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI5Ij5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY1XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzkiPlVzZXJfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NV8yOSI+RGF0YTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjlfMTMiPkdldF9Vc2VyX0RhdGE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8yOSI+SXRtPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDlfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80Nl80MSI+SXRlbV9Vc2VyX0RhdGE8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDVfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80Nl80MSI+SXRlbV9Vc2VyX0RhdGE8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0KaW5kZXggZjVhMDY3Zi4uMzFmMTY5NCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0KQEAgLTEsODAgKzEsOTIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YS5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGEuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLkl0ZW1fVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xNiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLkl0ZW1fVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAwOS8xMi8yNiAxNzozMTozNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKIDxiPmdlbmVyaWM8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5Vc2VyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmxpbWl0ZWQ8L2I+IDxiPnByaXZhdGU8L2I+OwotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NV85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80Nl80MSI+VXNlcl9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyPC9BPjsKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OV8zNSI+TWVudXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ0XzQ2Ij5JdGVtX1VzZXJfRGF0YTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OV8zNSI+TWVudXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5JdGVtX1VzZXJfRGF0YTwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5Vc2VyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmxpbWl0ZWQ8L2I+IDxiPnByaXZhdGU8L2I+OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5Vc2VyX0FjY2VzczwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXI8L0E+OworPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5NZW51czwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80NF80NiI+SXRlbV9Vc2VyX0RhdGE8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDVfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80Nl80MSI+SXRlbV9Vc2VyX0RhdGE8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGUgYmluZGluZyB1c2VzIHRoZSBzYW1lIHVzZXIgcG9pbnRlciBmb3IgbWVudSBpdGVtczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBhcyB0aGUgbG93IGxldmVsIEMgaW1wbGVtZW50YXRpb24uIFNvIHlvdSBjYW4gc2FmZWx5PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHJlYWQgb3Igd3JpdGUgdGhlIHVzZXIgcG9pbnRlciBhbHNvIHdpdGggdGhlIEMgcm91dGluZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+bWl0ZW1fdXNlcnB0ci4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlIGJpbmRpbmcgdXNlcyB0aGUgc2FtZSB1c2VyIHBvaW50ZXIgZm9yIG1lbnUgaXRlbXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGFzIHRoZSBsb3cgbGV2ZWwgQyBpbXBsZW1lbnRhdGlvbi4gU28geW91IGNhbiBzYWZlbHk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlYWQgb3Igd3JpdGUgdGhlIHVzZXIgcG9pbnRlciBhbHNvIHdpdGggdGhlIEMgcm91dGluZXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+bWl0ZW1fdXNlcnB0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ4XzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNThfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ4XzI5Ij5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDlfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV91c2VycHRyLjN4Lmh0bWwiPnNldF9pdGVtX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDhfMTQiPlNldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80OF8yOSI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80OV8yOSI+RGF0YTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+c2V0X2l0ZW1fdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OF8xNCI+U2V0X1VzZXJfRGF0YTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzBfMTQiPkdldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzBfMjkiPkl0bTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzFfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdXNlcnB0ci4zeC5odG1sIj5pdGVtX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjdfMTQiPkdldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82N18yOSI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82OF8yOSI+RGF0YTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLWl0ZW1fdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV85Ij5Vc2VyX0FjY2VzczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdXNlcnB0ci4zeC5odG1sIj5pdGVtX3VzZXJwdHI8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzYyXzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzYyXzI4Ij5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzkiPlVzZXJfQWNjZXNzPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdXNlcnB0ci4zeC5odG1sIj5pdGVtX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU5XzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1pdGVtX3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTlfMjgiPkl0bTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzkiPlVzZXJfQWNjZXNzPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbCI+aXRlbV91c2VycHRyPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEdldF9Vc2VyX0RhdGEpOwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OV8zNSI+TWVudXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5JdGVtX1VzZXJfRGF0YTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtaXRlbV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ2XzQxIj5JdGVtX1VzZXJfRGF0YTwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bQppbmRleCA2N2Q2ZTk0Li5lYmI0YTgxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bQpAQCAtMSw4MiArMSw5MiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTWVudXMuTWVudV9Vc2VyX0RhdGEgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLk1lbnVfVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OV8zNSI+TWVudXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDNfNDYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQxIj5NZW51X1VzZXJfRGF0YTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5NZW51czwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzXzQ2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+TWVudV9Vc2VyX0RhdGE8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMjkiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTRfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMTYiPlNldF9NZW51X1VzZXJwdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTBfMTYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTBfMTYiPkRhdGE8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzE2Ij5TZXRfTWVudV9Vc2VycHRyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTBfMTYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MF8xNiI+RGF0YTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KSAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWVudV9Vc2VycHRyLCAic2V0X21lbnVfdXNlcnB0ciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MF8xNiI+U2V0X01lbnVfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzI5Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81NF8yOSI+RGF0YTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU0XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NF83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTBfMTYiPlNldF9NZW51X1VzZXJwdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTRfMjkiPkRhdGE8L0E+KSk7CisKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMTQiPlNldF9Vc2VyX0RhdGE8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMTMiPkdldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMjgiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI4Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMTYiPk1lbnVfVXNlcnB0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82M18xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzE2Ij5NZW51X1VzZXJwdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82MV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9Vc2VycHRyLCAibWVudV91c2VycHRyIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjNfMTYiPk1lbnVfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI4Ij5NZW48L0E+KTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjFfMTYiPk1lbnVfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI4Ij5NZW48L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMTMiPkdldF9Vc2VyX0RhdGE8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzI5Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzYwXzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzI5Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzYwXzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82MF8yOSI+RGF0YTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMTMiPkdldF9Vc2VyX0RhdGE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+TWVuPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDlfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+TWVudV9Vc2VyX0RhdGE8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDVfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+TWVudV9Vc2VyX0RhdGE8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0KaW5kZXggMjExMzM1NS4uN2QwM2FlZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0KQEAgLTEsNzUgKzEsODcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YS5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGEuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnVzLk1lbnVfVXNlcl9EYXRhICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xNCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5NZW51cy5NZW51X1VzZXJfRGF0YSAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCiA8Yj5nZW5lcmljPC9iPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80M185IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+VXNlcjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5saW1pdGVkPC9iPiA8Yj5wcml2YXRlPC9iPjsKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPlVzZXJfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDNfOSI+VXNlcjwvQT47Ci08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDlfMzUiPk1lbnVzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80M180NiI+TWVudV9Vc2VyX0RhdGE8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDlfMzUiPk1lbnVzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+TWVudV9Vc2VyX0RhdGE8L0E+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80M185IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+VXNlcjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5saW1pdGVkPC9iPiA8Yj5wcml2YXRlPC9iPjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MSI+VXNlcl9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80M185Ij5Vc2VyPC9BPjsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDNfNDYiPk1lbnVfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5NZW51czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPk1lbnVfVXNlcl9EYXRhPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X3VzZXJwdHIuM3guaHRtbCI+bWVudV91c2VycHRyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X3VzZXJwdHIuM3guaHRtbCI+bWVudV91c2VycHRyLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDdfMTQiPlNldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDdfMjkiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80OF8yOSI+RGF0YTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfdXNlcnB0ci4zeC5odG1sIj5zZXRfbWVudV91c2VycHRyPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ3XzE0Ij5TZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDdfMjkiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNDhfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3VzZXJwdHIuM3guaHRtbCI+c2V0X21lbnVfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjlfMTQiPkdldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjlfMjkiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzBfMjkiPkRhdGE8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV91c2VycHRyLjN4Lmh0bWwiPm1lbnVfdXNlcnB0cjwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82N18xNCI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzY3XzI5Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzY4XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3VzZXJwdHIuM3guaHRtbCI+bWVudV91c2VycHRyPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82MV8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82MV8yOCI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLW1lbnVfdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfdXNlcnB0ci4zeC5odG1sIj5tZW51X3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU5XzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTlfMjgiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMtbWVudV91c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfdXNlcnB0ci4zeC5odG1sIj5tZW51X3VzZXJwdHI8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBTYW1lIGFzIGZ1bmN0aW9uPC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoR2V0X1VzZXJfRGF0YSk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5NZW51czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPk1lbnVfVXNlcl9EYXRhPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5NZW51czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy1tZW51X3VzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDEiPk1lbnVfVXNlcl9EYXRhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtCmluZGV4IDIxNjIxMGEuLjgyMGJkYjAgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtCkBAIC0xLDEwMjggKzEsOTIyIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTWVudXMgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMjYgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwOC8wNy8yNiAxODo1MDo1OCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTWVudXMgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMzIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb247Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiAKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuUG9pbnRlcnM7Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlBvaW50ZXJzOwogCi08Yj53aXRoPC9iPiBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb247Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5NZW51czwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotCi0gICA8Yj50eXBlPC9iPiBDX0l0ZW1fQXJyYXkgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoTmF0dXJhbCA8Yj5yYW5nZTwvYj4gJmx0OyZndDspIDxiPm9mPC9iPiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKKyAgIDxiPnR5cGU8L2I+IENfSXRlbV9BcnJheSA8Yj5pczwvYj4gPGI+YXJyYXk8L2I+IChOYXR1cmFsIDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykgPGI+b2Y8L2I+IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OwogICAgPGI+cGFja2FnZTwvYj4gSV9BcnJheSA8Yj5pczwvYj4gPGI+bmV3PC9iPgotICAgICA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5Qb2ludGVycyAoTmF0dXJhbCwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4sIENfSXRlbV9BcnJheSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjJfNCI+TnVsbF9JdGVtPC9BPik7CisgICAgIDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlBvaW50ZXJzIChOYXR1cmFsLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPiwgQ19JdGVtX0FycmF5LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+KTsKIAogICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiBTeXN0ZW0uQml0X09yZGVyOwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xMiI+Y2hhcnNfcHRyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3MuY2hhcnNfcHRyOworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2XzEyIj5jaGFyc19wdHI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5ncy5jaGFyc19wdHI7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiBNT1NfMl9DSW50IDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIxXzkiPk1lbnVfT3B0aW9uX1NldDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pOwotCi0gICA8Yj5mdW5jdGlvbjwvYj4gQ0ludF8yX01PUyA8Yj5pczwvYj4gPGI+bmV3PC9iPgotICAgICBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KTsKLQotICAgPGI+ZnVuY3Rpb248L2I+IElPU18yX0NJbnQgPGI+aXM8L2I+IDxiPm5ldzwvYj4KLSAgICAgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTNfOSI+SXRlbV9PcHRpb25fU2V0PC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPik7Ci0KLSAgIDxiPmZ1bmN0aW9uPC9iPiBDSW50XzJfSU9TIDxiPmlzPC9iPiA8Yj5uZXc8L2I+Ci0gICAgIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pOwotCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNl8xNCI+UmVxdWVzdF9OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNl8yOCI+S2V5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDdfMjgiPk5hbWU8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKQorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDFfMTQiPlJlcXVlc3RfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwMV8yOCI+S2V5PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTAyXzI4Ij5OYW1lPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODBfMTYiPlJlcXVlc3RfTmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MF8xNiI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OF8xMiI+Y2hhcnNfcHRyPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfMTYiPlJlcXVlc3RfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyXzE2Ij5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU2XzEyIj5jaGFyc19wdHI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFJlcXVlc3RfTmFtZSwgIm1lbnVfcmVxdWVzdF9uYW1lIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODBfMTYiPlJlcXVlc3RfTmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDZfMjgiPktleTwvQT4pKSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTA3XzI4Ij5OYW1lPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNl8xNCI+UmVxdWVzdF9OYW1lPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82Ml8xNiI+UmVxdWVzdF9OYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwMV8yOCI+S2V5PC9BPikpLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDJfMjgiPk5hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTAxXzE0Ij5SZXF1ZXN0X05hbWU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTA5XzE0Ij5SZXF1ZXN0X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTA5XzI4Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDRfMTQiPlJlcXVlc3RfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNF8yOCI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZwogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OF8xNiI+UmVxdWVzdF9OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODhfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg4XzE2Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4XzEyIj5jaGFyc19wdHI8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8xNiI+UmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzBfMTYiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTZfMTIiPmNoYXJzX3B0cjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUmVxdWVzdF9OYW1lLCAibWVudV9yZXF1ZXN0X25hbWUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg4XzE2Ij5SZXF1ZXN0X05hbWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTA5XzI4Ij5LZXk8L0E+KSkpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMDlfMTQiPlJlcXVlc3RfTmFtZTwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MF8xNiI+UmVxdWVzdF9OYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEwNF8yOCI+S2V5PC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTA0XzE0Ij5SZXF1ZXN0X05hbWU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTkxXzEzIj5DcmVhdGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTkxXzIxIj5OYW1lPC9BPjwvRk9OVD4gICAgICAgIDogU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xOTJfMjEiPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gOiBTdHJpbmcgOj0gIiIpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4OV8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTg5XzIxIj5OYW1lPC9BPjwvc3Bhbj4gICAgICAgIDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MF8yMSI+RGVzY3JpcHRpb248L0E+PC9zcGFuPiA6IFN0cmluZyA6PSAiIikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3XzEyIj5DaGFyX1B0cjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcjsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4XzE2Ij5OZXdpdGVtPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk4XzE2Ij5OYW1lPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk4XzE2Ij5EZXNjPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85N18xMiI+Q2hhcl9QdHI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5XzEyIj5DaGFyX1B0cjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMTYiPk5ld2l0ZW08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MF8xNiI+TmFtZTwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwXzE2Ij5EZXNjPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OV8xMiI+Q2hhcl9QdHI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE5ld2l0ZW0sICJuZXdfaXRlbSIpOwogCi0gICAgICA8Yj50eXBlPC9iPiBOYW1lX1N0cmluZyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MV8yMSI+TmFtZTwvQT4nTGVuZ3RoKTsKLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyXzEyIj5OYW1lX1N0cmluZ19QdHI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiBOYW1lX1N0cmluZzsKLSAgICAgIDxiPnByYWdtYTwvYj4gQ29udHJvbGxlZCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTAyXzEyIj5OYW1lX1N0cmluZ19QdHI8L0E+KTsKKyAgICAgIDxiPnR5cGU8L2I+IE5hbWVfU3RyaW5nIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTg5XzIxIj5OYW1lPC9BPidMZW5ndGgpOworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzEyIj5OYW1lX1N0cmluZ19QdHI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiBOYW1lX1N0cmluZzsKKyAgICAgIDxiPnByYWdtYTwvYj4gQ29udHJvbGxlZCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODRfMTIiPk5hbWVfU3RyaW5nX1B0cjwvQT4pOwogCi0gICAgICA8Yj50eXBlPC9iPiBEZXNjX1N0cmluZyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5Ml8yMSI+RGVzY3JpcHRpb248L0E+J0xlbmd0aCk7Ci0gICAgICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNl8xMiI+RGVzY19TdHJpbmdfUHRyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gRGVzY19TdHJpbmc7Ci0gICAgICA8Yj5wcmFnbWE8L2I+IENvbnRyb2xsZWQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwNl8xMiI+RGVzY19TdHJpbmdfUHRyPC9BPik7CisgICAgICA8Yj50eXBlPC9iPiBEZXNjX1N0cmluZyA8Yj5pczwvYj4gPGI+bmV3PC9iPiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MF8yMSI+RGVzY3JpcHRpb248L0E+J0xlbmd0aCk7CisgICAgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODhfMTIiPkRlc2NfU3RyaW5nX1B0cjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IERlc2NfU3RyaW5nOworICAgICAgPGI+cHJhZ21hPC9iPiBDb250cm9sbGVkICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84OF8xMiI+RGVzY19TdHJpbmdfUHRyPC9BPik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA5XzciPk5hbWVfU3RyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTAyXzEyIj5OYW1lX1N0cmluZ19QdHI8L0E+IDo9IDxiPm5ldzwvYj4gTmFtZV9TdHJpbmc7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMF83Ij5EZXNjX1N0cjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwNl8xMiI+RGVzY19TdHJpbmdfUHRyPC9BPiA6PSA8Yj5uZXc8L2I+IERlc2NfU3RyaW5nOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfNyI+TmFtZV9MZW48L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfMTciPkRlc2NfTGVuPC9BPjwvRk9OVD4gOiBzaXplX3Q7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMl83Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxXzciPk5hbWVfU3RyPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODRfMTIiPk5hbWVfU3RyaW5nX1B0cjwvQT4gOj0gPGI+bmV3PC9iPiBOYW1lX1N0cmluZzsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml83Ij5EZXNjX1N0cjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg4XzEyIj5EZXNjX1N0cmluZ19QdHI8L0E+IDo9IDxiPm5ldzwvYj4gRGVzY19TdHJpbmc7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTNfNyI+TmFtZV9MZW48L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzE3Ij5EZXNjX0xlbjwvQT48L3NwYW4+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0XzciPlJlc3VsdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MV8yMSI+TmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwOV83Ij5OYW1lX1N0cjwvQT4uPGI+YWxsPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTExXzciPk5hbWVfTGVuPC9BPik7Ci0gICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xOTJfMjEiPkRlc2NyaXB0aW9uPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEwXzciPkRlc2NfU3RyPC9BPi48Yj5hbGw8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTFfMTciPkRlc2NfTGVuPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTJfNyI+UmVzdWx0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85OF8xNiI+TmV3aXRlbTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwOV83Ij5OYW1lX1N0cjwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTA5XzciPk5hbWVfU3RyPC9BPi48Yj5hbGw8L2I+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+LAotICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzExMF83Ij5EZXNjX1N0cjwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEwXzciPkRlc2NfU3RyPC9BPi48Yj5hbGw8L2I+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTJfNyI+UmVzdWx0PC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyXzQiPk51bGxfSXRlbTwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfNCI+RXRpX1N5c3RlbV9FcnJvcjwvQT47CisgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xODlfMjEiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85MV83Ij5OYW1lX1N0cjwvQT4uPGI+YWxsPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTNfNyI+TmFtZV9MZW48L0E+KTsKKyAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MF8yMSI+RGVzY3JpcHRpb248L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85Ml83Ij5EZXNjX1N0cjwvQT4uPGI+YWxsPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTNfMTciPkRlc2NfTGVuPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NF83Ij5SZXN1bHQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwXzE2Ij5OZXdpdGVtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTFfNyI+TmFtZV9TdHI8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkxXzciPk5hbWVfU3RyPC9BPi48Yj5hbGw8L2I+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkyXzciPkRlc2NfU3RyPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85Ml83Ij5EZXNjX1N0cjwvQT4uPGI+YWxsPC9iPidGaXJzdCknPGI+QWNjZXNzPC9iPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTRfNyI+UmVzdWx0PC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzQiPk51bGxfSXRlbTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjdfNCI+RXRpX1N5c3RlbV9FcnJvcjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEyXzciPlJlc3VsdDwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE5MV8xMyI+Q3JlYXRlPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTRfNyI+UmVzdWx0PC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTg5XzEzIj5DcmVhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDNfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjAzXzIyIj5JdG08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDFfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDFfMjIiPkl0bTwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNl8xNiI+RGVzY25hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEyNl8xNiI+SXRtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNThfMTIiPmNoYXJzX3B0cjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOF8xNiI+RGVzY25hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTA4XzE2Ij5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEZXNjbmFtZSwgIml0ZW1fZGVzY3JpcHRpb24iKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOF8xNiI+SXRlbW5hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEyOF8xNiI+SXRtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNThfMTIiPmNoYXJzX3B0cjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMF8xNiI+SXRlbW5hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEwXzE2Ij5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJdGVtbmFtZSwgIml0ZW1fbmFtZSIpOwogCi0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzFfMTYiPkZyZWVpdGVtPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzFfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExM18xNiI+RnJlZWl0ZW08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExM18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTEzXzE2Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZyZWVpdGVtLCAiZnJlZV9pdGVtIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0XzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzVfNyI+UHRyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OF8xMiI+Y2hhcnNfcHRyPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTZfNyI+UHRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTM1XzciPlB0cjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTI2XzE2Ij5EZXNjbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIwM18yMiI+SXRtPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTM1XzciPlB0cjwvQT4gLz0gTnVsbF9QdHIgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3MuRnJlZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTM1XzciPlB0cjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTE2XzciPlB0cjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTA4XzE2Ij5EZXNjbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIwMV8yMiI+SXRtPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTE2XzciPlB0cjwvQT4gLz0gTnVsbF9QdHIgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3MuRnJlZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTE2XzciPlB0cjwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzVfNyI+UHRyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMjhfMTYiPkl0ZW1uYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjAzXzIyIj5JdG08L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzVfNyI+UHRyPC9BPiAvPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5ncy5GcmVlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzVfNyI+UHRyPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTZfNyI+UHRyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTBfMTYiPkl0ZW1uYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjAxXzIyIj5JdG08L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTZfNyI+UHRyPC9BPiAvPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5ncy5GcmVlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMTZfNyI+UHRyPC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEzNF83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEzMV8xNiI+RnJlZWl0ZW08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDNfMjIiPkl0bTwvQT4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEzNF83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTM0XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDNfMjIiPkl0bTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjJfNCI+TnVsbF9JdGVtPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjAzXzE0Ij5EZWxldGU8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxMl8xNCI+U2V0X1ZhbHVlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTJfMjUiPkl0bTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1M18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEzXzI1Ij5WYWx1ZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzExM18xNiI+RnJlZWl0ZW08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDFfMjIiPkl0bTwvQT4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIwMV8yMiI+SXRtPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDFfMTQiPkRlbGV0ZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEwXzE0Ij5TZXRfVmFsdWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEwXzI1Ij5JdG08L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTFfMjUiPlZhbHVlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NV8xNiI+U2V0X0l0ZW1fVmFsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTVfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTVfMTYiPlZhbDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzM18xNiI+U2V0X0l0ZW1fVmFsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEzM18xNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTMzXzE2Ij5WYWw8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9JdGVtX1ZhbCwgInNldF9pdGVtX3ZhbHVlIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU5XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTVfMTYiPlNldF9JdGVtX1ZhbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxMl8yNSI+SXRtPC9BPiwgQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxM18yNSI+VmFsdWU8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTU5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEyXzE0Ij5TZXRfVmFsdWU8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTMzXzE2Ij5TZXRfSXRlbV9WYWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTBfMjUiPkl0bTwvQT4sIEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTFfMjUiPlZhbHVlPC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEwXzE0Ij5TZXRfVmFsdWU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxOF8xMyI+VmFsdWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxOF8yMCI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjE2XzEzIj5WYWx1ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTZfMjAiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjhfMTYiPkl0ZW1fVmFsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjhfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0M18xNiI+SXRlbV9WYWw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTQzXzE2Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEl0ZW1fVmFsLCAiaXRlbV92YWx1ZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTY4XzE2Ij5JdGVtX1ZhbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxOF8yMCI+SXRtPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+Q3Vyc2VzX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE0M18xNiI+SXRlbV9WYWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTZfMjAiPkl0bTwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY4XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gRmFsc2U7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIxOF8xMyI+VmFsdWU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTZfMTMiPlZhbHVlPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjI3XzEzIj5WaXNpYmxlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc5XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMjdfMjIiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjI1XzEzIj5WaXNpYmxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIyNV8yMiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MV8xNiI+SXRlbV9WaXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE4MV8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2XzE2Ij5JdGVtX1ZpczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTZfMTYiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXRlbV9WaXMsICJpdGVtX3Zpc2libGUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE4MV8xNiI+SXRlbV9WaXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMjdfMjIiPkl0bTwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTZfMTYiPkl0ZW1fVmlzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjI1XzIyIj5JdG08L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82OF80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMjdfMTMiPlZpc2libGU8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIzNl8xNCI+U2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIzNl8yNyI+SXRtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM3XzI3Ij5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIyNV8xMyI+VmlzaWJsZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM0XzE0Ij5TZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMzRfMjciPkl0bTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMzVfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1MV85Ij5JdGVtX09wdGlvbl9TZXQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfMTYiPlNldF9JdGVtX09wdHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5NF8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xOTRfMTYiPk9wdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OV8xNiI+U2V0X0l0ZW1fT3B0czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY5XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjlfMTYiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcwXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjlfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0l0ZW1fT3B0cywgInNldF9pdGVtX29wdHMiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOThfNyI+T3B0PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gSU9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM3XzI3Ij5PcHRpb25zPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5OV83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTk5XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTk0XzE2Ij5TZXRfSXRlbV9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM2XzI3Ij5JdG08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xOThfNyI+T3B0PC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTk5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xOTlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM2XzE0Ij5TZXRfT3B0aW9uczwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjlfMTYiPlNldF9JdGVtX09wdHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMzRfMjciPkl0bTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIzNV8yNyI+T3B0aW9uczwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjM0XzE0Ij5TZXRfT3B0aW9uczwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0Ml8xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0Ml8zMCI+SXRtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwOF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQzXzMwIj5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDRfMzAiPk9uPC9BPjwvRk9OVD4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQwXzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDBfMzAiPkl0bTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDFfMzAiPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1MV85Ij5JdGVtX09wdGlvbl9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDJfMzAiPk9uPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjExXzE2Ij5JdGVtX09wdHNfT248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxMV8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxMV8xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgxXzE2Ij5JdGVtX09wdHNfT248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTgxXzE2Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODFfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXRlbV9PcHRzX09uLCAiaXRlbV9vcHRzX29uIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTRfMTYiPkl0ZW1fT3B0c19PZmY8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxNF8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTRfMTYiPk9wdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NF8xNiI+SXRlbV9PcHRzX09mZjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg0XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODRfMTYiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODRfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXRlbV9PcHRzX09mZiwgIml0ZW1fb3B0c19vZmYiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMThfNyI+T3B0PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gSU9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQzXzMwIj5PcHRpb25zPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOV83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0NF8zMCI+T248L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTlfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTFfMTYiPkl0ZW1fT3B0c19PbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0Ml8zMCI+SXRtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjE4XzciPk9wdDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0Ml8zMCI+T248L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xODFfMTYiPkl0ZW1fT3B0c19PbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0MF8zMCI+SXRtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQxXzMwIj5PcHRpb25zPC9BPikpOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxOV83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxNF8xNiI+SXRlbV9PcHRzX09mZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI0Ml8zMCI+SXRtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjE4XzciPk9wdDwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTg0XzE2Ij5JdGVtX09wdHNfT2ZmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQwXzMwIj5JdG08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDFfMzAiPk9wdGlvbnM8L0E+KSk7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMTlfNyI+RXJyPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxOV83Ij5FcnI8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDJfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQwXzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1MV8xNCI+R2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1MV8yNyI+SXRtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1Ml8yNyI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTNfOSI+SXRlbV9PcHRpb25fU2V0PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQ5XzE0Ij5HZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDlfMjciPkl0bTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTBfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNF8xNiI+SXRlbV9PcHRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMzRfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5OV8xNiI+SXRlbV9PcHRzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5OV8xNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTFfOSI+SXRlbV9PcHRpb25fU2V0PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJdGVtX09wdHMsICJpdGVtX29wdHMiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5JdGVtX09wdHM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTFfMjciPkl0bTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTJfMjciPk9wdGlvbnM8L0E+IDo9IENJbnRfMl9JT1MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIzN183Ij5SZXM8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjUxXzE0Ij5HZXRfT3B0aW9uczwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTBfMjciPk9wdGlvbnM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5OV8xNiI+SXRlbV9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQ5XzI3Ij5JdG08L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjQ5XzE0Ij5HZXRfT3B0aW9uczwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjU2XzEzIj5HZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjU2XzI2Ij5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyXzQiPk51bGxfSXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTRfMTMiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1NF8yNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1MV85Ij5JdGVtX09wdGlvbl9TZXQ8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ0XzciPklvczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4XzciPklvczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1MV8xNCI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTZfMjYiPkl0bTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI0NF83Ij5Jb3M8L0E+KTsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjQ0XzciPklvczwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1Nl8xMyI+R2V0X09wdGlvbnM8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2NV8xNCI+TmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjY1XzIwIj5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2Nl8yMCI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNDlfMTQiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjU0XzI2Ij5JdG08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMDhfNyI+SW9zPC9BPik7CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIwOF83Ij5Jb3M8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTRfMTMiPkdldF9PcHRpb25zPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjNfMTQiPk5hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjYzXzIwIj5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE1XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjRfMjAiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTNfMTYiPkl0ZW1uYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTNfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNThfMTIiPmNoYXJzX3B0cjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxN18xNiI+SXRlbW5hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjE3XzE2Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU2XzEyIj5jaGFyc19wdHI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEl0ZW1uYW1lLCAiaXRlbV9uYW1lIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjUzXzE2Ij5JdGVtbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2NV8yMCI+SXRtPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2Nl8yMCI+TmFtZTwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjVfMTQiPk5hbWU8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxN18xNiI+SXRlbW5hbWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjNfMjAiPkl0bTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjRfMjAiPk5hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjYzXzE0Ij5OYW1lPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjhfMTQiPk5hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2OF8yMCI+SXRtPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyM18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjY2XzE0Ij5OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2Nl8yMCI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjYxXzE2Ij5JdGVtbmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjYxXzE2Ij5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4XzEyIj5jaGFyc19wdHI8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjVfMTYiPkl0ZW1uYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIyNV8xNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJdGVtbmFtZSwgIml0ZW1fbmFtZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjYxXzE2Ij5JdGVtbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2OF8yMCI+SXRtPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjhfMTQiPk5hbWU8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjI1XzE2Ij5JdGVtbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI2Nl8yMCI+SXRtPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNjZfMTQiPk5hbWU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzRfMTQiPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzRfMjciPkl0bTwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzVfMjciPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjcyXzE0Ij5EZXNjcmlwdGlvbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzJfMjciPkl0bTwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjczXzI3Ij5EZXNjcmlwdGlvbjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiBTdHJpbmcpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3MF8xNiI+RGVzY25hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3MF8xNiI+SXRtPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNThfMTIiPmNoYXJzX3B0cjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNF8xNiI+RGVzY25hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5JdG08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEZXNjbmFtZSwgIml0ZW1fZGVzY3JpcHRpb24iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzBfMTYiPkRlc2NuYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc0XzI3Ij5JdG08L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc1XzI3Ij5EZXNjcmlwdGlvbjwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzRfMTQiPkRlc2NyaXB0aW9uPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMzRfMTYiPkRlc2NuYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjcyXzI3Ij5JdG08L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjczXzI3Ij5EZXNjcmlwdGlvbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzJfMTQiPkRlc2NyaXB0aW9uPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzhfMTQiPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzhfMjciPkl0bTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI3Nl8xNCI+RGVzY3JpcHRpb248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc2XzI3Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZwogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzhfMTYiPkRlc2NuYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzhfMTYiPkl0bTwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4XzEyIj5jaGFyc19wdHI8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDJfMTYiPkRlc2NuYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI0Ml8xNiI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTZfMTIiPmNoYXJzX3B0cjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRGVzY25hbWUsICJpdGVtX2Rlc2NyaXB0aW9uIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzhfMTYiPkRlc2NuYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjc4XzI3Ij5JdG08L0E+KSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI3OF8xNCI+RGVzY3JpcHRpb248L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8xNCI+U2V0X0N1cnJlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8yNyI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yODlfMjciPkl0bTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjQyXzE2Ij5EZXNjbmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI3Nl8yNyI+SXRtPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNzZfMTQiPkRlc2NyaXB0aW9uPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yODZfMTQiPlNldF9DdXJyZW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDhfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4Nl8yNyI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg3XzI3Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODdfMTYiPlNldF9DdXJyX0l0ZW08L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI4N18xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODdfMTYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MV8xNiI+U2V0X0N1cnJfSXRlbTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUxXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTFfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUyXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTFfMTYiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X0N1cnJfSXRlbSwgInNldF9jdXJyZW50X2l0ZW0iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTFfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI4N18xNiI+U2V0X0N1cnJfSXRlbTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8yNyI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg5XzI3Ij5JdG08L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI5MV83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjkxXzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8xNCI+U2V0X0N1cnJlbnQ8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjUxXzE2Ij5TZXRfQ3Vycl9JdGVtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg2XzI3Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yODdfMjciPkl0bTwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg2XzE0Ij5TZXRfQ3VycmVudDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjk0XzEzIj5DdXJyZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk4XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTRfMjIiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTJfMTMiPkN1cnJlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1OV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjkyXzIyIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwMF8xNiI+Q3Vycl9JdGVtPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzAwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMDBfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2MV8xNiI+Q3Vycl9JdGVtPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI2MV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDdXJyX0l0ZW0sICJjdXJyZW50X2l0ZW0iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDNfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzAwXzE2Ij5DdXJyX0l0ZW08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTRfMjIiPk1lbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2NF83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNjFfMTYiPkN1cnJfSXRlbTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5Ml8yMiI+TWVuPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMDNfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyXzQiPk51bGxfSXRlbTwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTZfNCI+TWVudV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI2NF83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfNCI+TnVsbF9JdGVtPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExMV80Ij5NZW51X0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzAzXzciPlJlczwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5NF8xMyI+Q3VycmVudDwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI2NF83Ij5SZXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTJfMTMiPkN1cnJlbnQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzExXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTlfMTQiPlNldF9Ub3BfUm93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzExXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTlfMjciPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwMF8yNyI+TGluZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjcyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTdfMTQiPlNldF9Ub3BfUm93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5N18yNyI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5OF8yNyI+TGluZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxNF8xNiI+U2V0X1RvcHJvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxNF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzE0XzE2Ij5NZW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE1XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMTRfMTYiPkxpbmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzVfMTYiPlNldF9Ub3Byb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3NV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjc1XzE2Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzZfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3NV8xNiI+TGluZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X1RvcHJvdywgInNldF90b3Bfcm93Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE4XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMTRfMTYiPlNldF9Ub3Byb3c8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTlfMjciPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDBfMjciPkxpbmU8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzE4XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMThfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjk5XzE0Ij5TZXRfVG9wX1JvdzwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzVfMTYiPlNldF9Ub3Byb3c8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTdfMjciPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOThfMjciPkxpbmU8L0E+KSkpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTdfMTQiPlNldF9Ub3BfUm93PC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDVfMTMiPlRvcF9Sb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwNV8yMiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwM18xMyI+VG9wX1JvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjgzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDNfMjIiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI3XzE2Ij5Ub3Byb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMyN18xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjg1XzE2Ij5Ub3Byb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4NV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjg1XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFRvcHJvdywgInRvcF9yb3ciKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzBfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzI3XzE2Ij5Ub3Byb3c8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDVfMjIiPk1lbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4OF83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODVfMTYiPlRvcHJvdzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwM18yMiI+TWVuPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMzBfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNl80Ij5NZW51X0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjg4XzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTFfNCI+TWVudV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMzBfNyI+UmVzPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwNV8xMyI+VG9wX1JvdzwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODhfNyI+UmVzPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwM18xMyI+VG9wX1JvdzwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzEwXzEzIj5HZXRfSW5kZXg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzhfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMxMF8yNCI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZQorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwOF8xMyI+R2V0X0luZGV4PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMwOF8yNCI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDBfMTYiPkdldF9JdGVtaW5kZXg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDBfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM0MF8xNiI+SXRtPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk4XzE2Ij5HZXRfSXRlbWluZGV4PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOThfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI5OF8xNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRfSXRlbWluZGV4LCAiaXRlbV9pbmRleCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0M183Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDBfMTYiPkdldF9JdGVtaW5kZXg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMTBfMjQiPkl0bTwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwMV83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yOThfMTYiPkdldF9JdGVtaW5kZXg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDhfMjQiPkl0bTwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQzXzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTZfNCI+TWVudV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMwMV83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTExXzQiPk1lbnVfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZSAoTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQzXzciPlJlczwvQT4pICsgUG9zaXRpdmUnRmlyc3QpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMTBfMTMiPkdldF9JbmRleDwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIyXzE0Ij5Qb3N0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzUxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMjJfMjAiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1Ml8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIzXzIwIj5Qb3N0PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgICAgPGI+cmV0dXJuPC9iPiBQb3NpdGl2ZSAoTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzAxXzciPlJlczwvQT4pICsgUG9zaXRpdmUnRmlyc3QpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDhfMTMiPkdldF9JbmRleDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIwXzE0Ij5Qb3N0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyMF8yMCI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxMF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIxXzIwIj5Qb3N0PC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1NF8xNiI+TV9Qb3N0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNTRfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxMl8xNiI+TV9Qb3N0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMxMl8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNX1Bvc3QsICJwb3N0X21lbnUiKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1Nl8xNiI+TV9VbnBvc3Q8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1Nl8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE0XzE2Ij5NX1VucG9zdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMTRfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTV9VbnBvc3QsICJ1bnBvc3RfbWVudSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1OV83Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyM18yMCI+UG9zdDwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1OV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1NF8xNiI+TV9Qb3N0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIyXzIwIj5NZW48L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMjFfMjAiPlBvc3Q8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMTJfMTYiPk1fUG9zdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyMF8yMCI+TWVuPC9BPikpOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1OV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1Nl8xNiI+TV9VbnBvc3Q8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMjJfMjAiPk1lbjwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzE0XzE2Ij5NX1VucG9zdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyMF8yMCI+TWVuPC9BPikpOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzU5XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNTlfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzIyXzE0Ij5Qb3N0PC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzNfMTQiPlNldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzcxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzNfMjciPk1lbjwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzNF8yNyI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KQorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMjBfMTQiPlBvc3Q8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzMV8xNCI+U2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzMxXzI3Ij5NZW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyNl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzMyXzI3Ij5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc0XzE2Ij5TZXRfTWVudV9PcHRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc0XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzRfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3NV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzc0XzE2Ij5PcHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjhfMTYiPlNldF9NZW51X09wdHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyOF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzI4XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyOV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzI4XzE2Ij5PcHQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9NZW51X09wdHMsICJzZXRfbWVudV9vcHRzIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc4XzciPk9wdDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IE1PU18yX0NJbnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzNF8yNyI+T3B0aW9uczwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzlfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3OV83Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3NF8xNiI+U2V0X01lbnVfT3B0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzM18yNyI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzc4XzciPk9wdDwvQT4pOwotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3OV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzNfMTQiPlNldF9PcHRpb25zPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMyOF8xNiI+U2V0X01lbnVfT3B0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzMV8yNyI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzMyXzI3Ij5PcHRpb25zPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzFfMTQiPlNldF9PcHRpb25zPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM5XzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM5XzMwIj5NZW48L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzg4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNDBfMzAiPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODlfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0MV8zMCI+T248L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM3XzE0Ij5Td2l0Y2hfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzdfMzAiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzhfMzAiPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzlfMzAiPk9uPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzkxXzE2Ij5NZW51X09wdHNfT248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5MV8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5MV8xNiI+T3B0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQwXzE2Ij5NZW51X09wdHNfT248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQwXzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDBfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE1XzkiPk1lbnVfT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9PcHRzX09uLCAibWVudV9vcHRzX29uIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTRfMTYiPk1lbnVfT3B0c19PZmY8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5NF8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTRfMTYiPk9wdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0M18xNiI+TWVudV9PcHRzX09mZjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQzXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDNfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ0XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDNfMTYiPk9wdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE1XzkiPk1lbnVfT3B0aW9uX1NldDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9PcHRzX09mZiwgIm1lbnVfb3B0c19vZmYiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOThfNyI+T3B0PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gTU9TXzJfQ0ludCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQwXzMwIj5PcHRpb25zPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5OV83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0MV8zMCI+T248L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTlfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTFfMTYiPk1lbnVfT3B0c19PbjwvQT4gICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzlfMzAiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5OF83Ij5PcHQ8L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzlfMzAiPk9uPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzQwXzE2Ij5NZW51X09wdHNfT248L0E+ICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM3XzMwIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzhfMzAiPk9wdGlvbnM8L0E+KSk7CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzk5XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzk0XzE2Ij5NZW51X09wdHNfT2ZmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzM5XzMwIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOThfNyI+T3B0PC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNDNfMTYiPk1lbnVfT3B0c19PZmY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzdfMzAiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzOF8zMCI+T3B0aW9uczwvQT4pKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5OV83Ij5FcnI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzk5XzciPkVycjwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMzOV8xNCI+U3dpdGNoX09wdGlvbnM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMzdfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ3XzE0Ij5HZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ3XzI3Ij5NZW48L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDEyXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNDhfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIxXzkiPk1lbnVfT3B0aW9uX1NldDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0NV8xNCI+R2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1NV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ1XzI3Ij5NZW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ2XzI3Ij5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MTRfMTYiPk1lbnVfT3B0czwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDE0XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNThfMTYiPk1lbnVfT3B0czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNThfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE1XzkiPk1lbnVfT3B0aW9uX1NldDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9PcHRzLCAibWVudV9vcHRzIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDE3XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxNF8xNiI+TWVudV9PcHRzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ3XzI3Ij5NZW48L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ4XzI3Ij5PcHRpb25zPC9BPiA6PSBDSW50XzJfTU9TICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MTdfNyI+UmVzPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0N18xNCI+R2V0X09wdGlvbnM8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzQ2XzI3Ij5PcHRpb25zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNThfMTYiPk1lbnVfT3B0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0NV8yNyI+TWVuPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0NV8xNCI+R2V0X09wdGlvbnM8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1Ml8xMyI+R2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1Ml8yNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82M180Ij5OdWxsX01lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzUwXzEzIj5HZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTBfMjYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyNF83Ij5Nb3M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2N183Ij5Nb3M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNDdfMTQiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzUyXzI2Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MjRfNyI+TW9zPC9BPik7Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyNF83Ij5Nb3M8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTJfMTMiPkdldF9PcHRpb25zPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjFfMTQiPlNldF9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM2MV8yNiI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM2Ml8yNiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM0NV8xNCI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTBfMjYiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM2N183Ij5Nb3M8L0E+KTsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzY3XzciPk1vczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1MF8xMyI+R2V0X09wdGlvbnM8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1OV8xNCI+U2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzczXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNTlfMjYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3NF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzYwXzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzM18xNiI+U2V0X01lbnVfV2luPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzNfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzNfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc2XzE2Ij5TZXRfTWVudV9XaW48L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3Nl8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzc2XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzZfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWVudV9XaW4sICJzZXRfbWVudV93aW4iKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQzM18xNiI+U2V0X01lbnVfV2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzYxXzI2Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjJfMjYiPldpbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQzN183Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDM3XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM2MV8xNCI+U2V0X1dpbmRvdzwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzZfMTYiPlNldF9NZW51X1dpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1OV8yNiI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzYwXzI2Ij5XaW48L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1OV8xNCI+U2V0X1dpbmRvdzwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzY3XzEzIj5HZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjdfMjUiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM2NV8xMyI+R2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzg0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjVfMjUiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDZfMTYiPk1lbnVfV2luPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDZfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzg2XzE2Ij5NZW51X1dpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzg2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zODZfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X1dpbiwgIm1lbnVfd2luIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ5XzciPlc8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ0Nl8xNiI+TWVudV9XaW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjdfMjUiPk1lbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4OV83Ij5XPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zODZfMTYiPk1lbnVfV2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzY1XzI1Ij5NZW48L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDlfNyI+VzwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM2N18xMyI+R2V0X1dpbmRvdzwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM4OV83Ij5XPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzY1XzEzIj5HZXRfV2luZG93PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcyXzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcyXzMwIj5NZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3M18zMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcwXzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzk0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzBfMzAiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3MV8zMCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTdfMTYiPlNldF9NZW51X1N1YjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1N18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU3XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1OF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU3XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5N18xNiI+U2V0X01lbnVfU3ViPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5N18xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5OF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzk3XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X01lbnVfU3ViLCAic2V0X21lbnVfc3ViIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDYxXzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NTdfMTYiPlNldF9NZW51X1N1YjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3Ml8zMCI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzczXzMwIj5XaW48L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NjFfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ2MV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzJfMTQiPlNldF9TdWJfV2luZG93PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5N18xNiI+U2V0X01lbnVfU3ViPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcwXzMwIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzFfMzAiPldpbjwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzcwXzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc4XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc4XzI5Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzZfMTMiPkdldF9TdWJfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3Nl8yOSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3MF8xNiI+TWVudV9TdWI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3MF8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDdfMTYiPk1lbnVfU3ViPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQwN18xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1lbnVfU3ViLCAibWVudV9zdWIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzNfNyI+VzwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDcwXzE2Ij5NZW51X1N1YjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3OF8yOSI+TWVuPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDEwXzciPlc8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQwN18xNiI+TWVudV9TdWI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzZfMjkiPk1lbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3M183Ij5XPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc4XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxMF83Ij5XPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc2XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM4M18xNCI+U2NhbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzhfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM4M18yMSI+TWVuPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3OV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzg0XzIxIj5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODBfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM4NV8yMSI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgxXzE0Ij5TY2FsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDE1XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODFfMjEiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDE2XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODJfMjEiPkxpbmVzPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDE3XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODNfMjEiPkNvbHVtbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDgyXzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDgzXzE2Ij5NX1NjYWxlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDgzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80ODNfMTYiPk1lbjwvQT48L0ZPTlQ+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4NF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDgzXzE2Ij5ZcDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDgzXzE2Ij5YcDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDgyXzEyIj5DX0ludF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxOV8xMiI+Q19JbnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDIwXzE2Ij5NX1NjYWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyMF8xNiI+TWVuPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyMF8xNiI+WXA8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyMV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDIwXzE2Ij5YcDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDE5XzEyIj5DX0ludF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1fU2NhbGUsICJzY2FsZV9tZW51Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDg3XzciPlg8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODdfMTAiPlk8L0E+PC9GT05UPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODhfNyI+UmVzPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80ODNfMTYiPk1fU2NhbGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODNfMjEiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ4N18xMCI+WTwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDg3XzciPlg8L0E+JzxiPkFjY2VzczwvYj4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyNF83Ij5YPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjRfMTAiPlk8L0E+PC9zcGFuPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDg4XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80ODhfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM4NF8yMSI+TGluZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDg3XzEwIj5ZPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODVfMjEiPkNvbHVtbnM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80ODdfNyI+WDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODNfMTQiPlNjYWxlPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zOTRfMTQiPlBvc2l0aW9uX0N1cnNvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5N18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzk0XzMxIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KQorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDIwXzE2Ij5NX1NjYWxlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgxXzIxIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MjRfMTAiPlk8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyNF83Ij5YPC9BPic8Yj5BY2Nlc3M8L2I+KSk7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODJfMjEiPkxpbmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQyNF8xMCI+WTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgzXzIxIj5Db2x1bW5zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDI0XzciPlg8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgxXzE0Ij5TY2FsZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzkyXzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzkyXzMxIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTlfMTYiPlBvc19NZW51X0N1cnNvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5OV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDk5XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzNfMTYiPlBvc19NZW51X0N1cnNvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDMzXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzNfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUG9zX01lbnVfQ3Vyc29yLCAicG9zX21lbnVfY3Vyc29yIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTAyXzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80OTlfMTYiPlBvc19NZW51X0N1cnNvcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM5NF8zMSI+TWVuPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTAyXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MDJfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzk0XzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDMzXzE2Ij5Qb3NfTWVudV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zOTJfMzEiPk1lbjwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzkyXzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDAzXzE0Ij5TZXRfTWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxMF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDAzXzI0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTExXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDRfMjQiPk1hcms8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDAxXzE0Ij5TZXRfTWFyazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDFfMjQiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDJfMjQiPk1hcms8L0E+PC9zcGFuPiA6IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MTNfMTIiPkNoYXJfUHRyPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5jaGFyOwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTE0XzE2Ij5TZXRfTWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxNF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE0XzE2Ij5NZW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxNV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE0XzE2Ij5NYXJrPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTNfMTIiPkNoYXJfUHRyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDRfMTIiPkNoYXJfUHRyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5jaGFyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDVfMTYiPlNldF9NYXJrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ0NV8xNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQ1XzE2Ij5NYXJrPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDRfMTIiPkNoYXJfUHRyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWFyaywgInNldF9tZW51X21hcmsiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MThfNyI+VHh0PC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwNF8yNCI+TWFyazwvQT4nTGVuZ3RoKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTE5XzciPkxlbjwvQT48L0ZPTlQ+IDogc2l6ZV90OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjBfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ5XzciPlR4dDwvQT48L3NwYW4+IDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDJfMjQiPk1hcms8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDUwXzciPkxlbjwvQT48L3NwYW4+IDogc2l6ZV90OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDRfMjQiPk1hcms8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MThfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE5XzciPkxlbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTIwXzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE0XzE2Ij5TZXRfTWFyazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwM18yNCI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE4XzciPlR4dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUxOF83Ij5UeHQ8L0E+J0ZpcnN0KSc8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MjBfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyMF83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDNfMTQiPlNldF9NYXJrPC9BPjsKKyAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwMl8yNCI+TWFyazwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ0OV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NTBfNyI+TGVuPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDVfMTYiPlNldF9NYXJrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDAxXzI0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDlfNyI+VHh0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQ5XzciPlR4dDwvQT4nRmlyc3QpJzxiPkFjY2VzczwvYj4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDAxXzE0Ij5TZXRfTWFyazwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwOV8xNCI+TWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyOV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDA5XzIwIj5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTMwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MTBfMjAiPk1hcms8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDdfMTQiPk1hcms8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDA3XzIwIj5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU3XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDhfMjAiPk1hcms8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzJfMTYiPkdldF9NZW51X01hcms8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzJfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzMl8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OF8xMiI+Y2hhcnNfcHRyPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU5XzE2Ij5HZXRfTWVudV9NYXJrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTlfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ1OV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81Nl8xMiI+Y2hhcnNfcHRyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRfTWVudV9NYXJrLCAibWVudV9tYXJrIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTMyXzE2Ij5HZXRfTWVudV9NYXJrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDA5XzIwIj5NZW48L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDEwXzIwIj5NYXJrPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwOV8xNCI+TWFyazwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTJfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU5XzE2Ij5HZXRfTWVudV9NYXJrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDA3XzIwIj5NZW48L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDA4XzIwIj5NYXJrPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwN18xNCI+TWFyazwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDEzXzE0Ij5NYXJrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM4XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MTNfMjAiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDExXzE0Ij5NYXJrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NjVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQxMV8yMCI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTQwXzE2Ij5HZXRfTWVudV9NYXJrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTQwXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NDBfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNThfMTIiPmNoYXJzX3B0cjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2N18xNiI+R2V0X01lbnVfTWFyazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY3XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NjdfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTZfMTIiPmNoYXJzX3B0cjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X01lbnVfTWFyaywgIm1lbnVfbWFyayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTQwXzE2Ij5HZXRfTWVudV9NYXJrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDEzXzIwIj5NZW48L0E+KSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQxM18xNCI+TWFyazwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NjdfMTYiPkdldF9NZW51X01hcms8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MTFfMjAiPk1lbjwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDExXzE0Ij5NYXJrPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyM18xNCI+U2V0X0ZvcmVncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDI0XzciPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjVfNyI+Rm9yZTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDI2XzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDc0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjFfMTQiPlNldF9Gb3JlZ3JvdW5kPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDIyXzciPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDIzXzciPkZvcmU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjRfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1Ml8xNiI+U2V0X01lbnVfRm9yZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1Ml8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTUyXzE2Ij5NZW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUzXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NTJfMTYiPkF0dHI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzlfMTYiPlNldF9NZW51X0ZvcmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3OV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDc5XzE2Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODBfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3OV8xNiI+QXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWVudV9Gb3JlLCAic2V0X21lbnVfZm9yZSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1Nl83Ij5DaDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Nl8xMCI+Q2g8L0E+ICAgID0mZ3Q7IENoYXJhY3RlcidGaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NV8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyNl83Ij5Db2xvcjwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjVfNyI+Rm9yZTwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTlfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1Ml8xNiI+U2V0X01lbnVfRm9yZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyNF83Ij5NZW48L0E+LCBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1Nl83Ij5DaDwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODNfNyI+Q2g8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjRfNyI+Q29sb3I8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDIzXzciPkZvcmU8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NTlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1OV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjNfMTQiPlNldF9Gb3JlZ3JvdW5kPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3OV8xNiI+U2V0X01lbnVfRm9yZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyMl83Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80ODNfNyI+Q2g8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyMV8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzFfMTQiPkZvcmVncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzMV8yNiI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDMyXzI2Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyOV8xNCI+Rm9yZWdyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDkwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjlfMjYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzMF8yNiI+Rm9yZTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjlfMTYiPk1lbnVfRm9yZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTY5XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTNfMTYiPk1lbnVfRm9yZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDkzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80OTNfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X0ZvcmUsICJtZW51X2ZvcmUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDMyXzI2Ij5Gb3JlPC9BPiA6PSBDaHR5cGVfVG9fQXR0ckNoYXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU2OV8xNiI+TWVudV9Gb3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDMxXzI2Ij5NZW48L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDMxXzE0Ij5Gb3JlZ3JvdW5kPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzMF8yNiI+Rm9yZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDkzXzE2Ij5NZW51X0ZvcmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MjlfMjYiPk1lbjwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyOV8xNCI+Rm9yZWdyb3VuZDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNl8xNCI+Rm9yZWdyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM2XzI2Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM3XzI2Ij5Gb3JlPC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTc3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzhfMjYiPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM0XzE0Ij5Gb3JlZ3JvdW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNF8yNiI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNV8yNiI+Rm9yZTwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTAxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzZfMjYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTc5XzE2Ij5NZW51X0ZvcmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU3OV8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTAzXzE2Ij5NZW51X0ZvcmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwM18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTAzXzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9Gb3JlLCAibWVudV9mb3JlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzN18yNiI+Rm9yZTwvQT4gIDo9IENodHlwZV9Ub19BdHRyQ2hhciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTc5XzE2Ij5NZW51X0ZvcmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzZfMjYiPk1lbjwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM4XzI2Ij5Db2xvcjwvQT4gOj0gQ2h0eXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzlfMTYiPk1lbnVfRm9yZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNl8yNiI+TWVuPC9BPikpLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NV8xMCI+Q29sb3I8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzZfMTQiPkZvcmVncm91bmQ8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDM1XzI2Ij5Gb3JlPC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTAzXzE2Ij5NZW51X0ZvcmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzRfMjYiPk1lbjwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MzZfMjYiPkNvbG9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MDNfMTYiPk1lbnVfRm9yZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNF8yNiI+TWVuPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQzNF8xNCI+Rm9yZWdyb3VuZDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ0M18xNCI+U2V0X0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ0XzciPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDVfNyI+QmFjazwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ2XzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQxXzE0Ij5TZXRfQmFja2dyb3VuZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTExXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ0Ml83Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTEyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ0M183Ij5CYWNrPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ0XzciPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTFfMTYiPlNldF9NZW51X0JhY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTFfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU5MV8xNiI+TWVuPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5Ml8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTkxXzE2Ij5BdHRyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE1XzE2Ij5TZXRfTWVudV9CYWNrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTVfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUxNV8xNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE2XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTVfMTYiPkF0dHI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X01lbnVfQmFjaywgInNldF9tZW51X2JhY2siKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTVfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDZfNyI+Q29sb3I8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ1XzciPkJhY2s8L0E+KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk4XzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OTFfMTYiPlNldF9NZW51X0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDRfNyI+TWVuPC9BPiwgQXR0ckNoYXJfVG9fQ2h0eXBlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OTVfNyI+Q2g8L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE5XzciPkNoPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkxXzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ0XzciPkNvbG9yPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ0M183Ij5CYWNrPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTk4XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OThfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQzXzE0Ij5TZXRfQmFja2dyb3VuZDwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTVfMTYiPlNldF9NZW51X0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDJfNyI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTE5XzciPkNoPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDFfMTQiPlNldF9CYWNrZ3JvdW5kPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDUxXzE0Ij5CYWNrZ3JvdW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjA1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTFfMjYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1Ml8yNiI+QmFjazwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDlfMTQiPkJhY2tncm91bmQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyNl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ5XzI2Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTBfMjYiPkJhY2s8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjA4XzE2Ij5NZW51X0JhY2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDhfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwOF8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTI5XzE2Ij5NZW51X0JhY2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyOV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTI5XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWVudV9CYWNrLCAibWVudV9iYWNrIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1Ml8yNiI+QmFjazwvQT4gOj0gQ2h0eXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDhfMTYiPk1lbnVfQmFjazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1MV8yNiI+TWVuPC9BPikpLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1MV8xNCI+QmFja2dyb3VuZDwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTBfMjYiPkJhY2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyOV8xNiI+TWVudV9CYWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDQ5XzI2Ij5NZW48L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NDlfMTQiPkJhY2tncm91bmQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjE0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTZfMTQiPkJhY2tncm91bmQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1Nl8yNiI+TWVuPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1N18yNiI+QmFjazwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxNl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU4XzI2Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1NF8xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTRfMjYiPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTVfMjYiPkJhY2s8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU2XzI2Ij5Db2xvcjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxOF8xNiI+TWVudV9CYWNrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjE4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MThfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOV8xNiI+TWVudV9CYWNrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzOV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1lbnVfQmFjaywgIm1lbnVfYmFjayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTdfMjYiPkJhY2s8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkNodHlwZV9Ub19BdHRyQ2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYxOF8xNiI+TWVudV9CYWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU2XzI2Ij5NZW48L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1OF8yNiI+Q29sb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+Q2h0eXBlX1RvX0F0dHJDaGFyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE4XzE2Ij5NZW51X0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTZfMjYiPk1lbjwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU2XzE0Ij5CYWNrZ3JvdW5kPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ1NV8yNiI+QmFjazwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzOV8xNiI+TWVudV9CYWNrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU0XzI2Ij5NZW48L0E+KS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDU2XzI2Ij5Db2xvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTM5XzE2Ij5NZW51X0JhY2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTRfMjYiPk1lbjwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NTRfMTQiPkJhY2tncm91bmQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjNfMTQiPlNldF9HcmV5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI1XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjRfNyI+TWVuPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2NV83Ij5HcmV5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjZfNyI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjFfMTQiPlNldF9HcmV5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2Ml83Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2M183Ij5HcmV5PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0OF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDY0XzciPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjlfMTYiPlNldF9NZW51X0dyZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjlfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyOV8xNiI+TWVuPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzMF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjI5XzE2Ij5BdHRyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTUwXzE2Ij5TZXRfTWVudV9HcmV5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTBfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1MF8xNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTUxXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NTBfMTYiPkF0dHI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X01lbnVfR3JleSwgInNldF9tZW51X2dyZXkiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzNfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjZfNyI+Q29sb3I8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDY1XzciPkdyZXk8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTRfNyI+Q2g8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjRfNyI+Q29sb3I8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDYzXzciPkdyZXk8L0E+KTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzdfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyOV8xNiI+U2V0X01lbnVfR3JleTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2NF83Ij5NZW48L0E+LCBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYzM183Ij5DaDwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MzdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYzN183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjNfMTQiPlNldF9HcmV5PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1MF8xNiI+U2V0X01lbnVfR3JleTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2Ml83Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NTRfNyI+Q2g8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2MV8xNCI+U2V0X0dyZXk8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzFfMTQiPkdyZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3MV8yMCI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDcyXzIwIj5HcmV5PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2OV8xNCI+R3JleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTYyXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjlfMjAiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3MF8yMCI+R3JleTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDdfMTYiPk1lbnVfR3JleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0N18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjQ3XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjVfMTYiPk1lbnVfR3JleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjVfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X0dyZXksICJtZW51X2dyZXkiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDcyXzIwIj5HcmV5PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkNodHlwZV9Ub19BdHRyQ2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0N18xNiI+TWVudV9HcmV5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDcxXzIwIj5NZW48L0E+KSkuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDcxXzE0Ij5HcmV5PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3MF8yMCI+R3JleTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTY1XzE2Ij5NZW51X0dyZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NjlfMjAiPk1lbjwvQT4pLjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ2OV8xNCI+R3JleTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3Nl8xNCI+R3JleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc3XzciPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3OF83Ij5HcmV5PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTVfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3OV83Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3NF8xNCI+R3JleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcxXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzVfNyI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3Ml8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc2XzciPkdyZXk8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTczXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzdfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTdfMTYiPk1lbnVfR3JleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1N18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjU3XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzVfMTYiPk1lbnVfR3JleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTc1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzVfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X0dyZXksICJtZW51X2dyZXkiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc4XzciPkdyZXk8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkNodHlwZV9Ub19BdHRyQ2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY1N18xNiI+TWVudV9HcmV5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc3XzciPk1lbjwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc5XzciPkNvbG9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkNodHlwZV9Ub19BdHRyQ2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY1N18xNiI+TWVudV9HcmV5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc3XzciPk1lbjwvQT4pKS48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDc2XzE0Ij5HcmV5PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3Nl83Ij5HcmV5PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTc1XzE2Ij5NZW51X0dyZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzVfNyI+TWVuPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3N183Ij5Db2xvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTc1XzE2Ij5NZW51X0dyZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NzVfNyI+TWVuPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ3NF8xNCI+R3JleTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4NF8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjRfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4NF8zMyI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODVfMzMiPlBhZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IENoYXJhY3RlciA6PSBTcGFjZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDgyXzE0Ij5TZXRfUGFkX0NoYXJhY3RlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTgyXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODJfMzMiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODNfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4M18zMyI+UGFkPC9BPjwvc3Bhbj4gOiBDaGFyYWN0ZXIgOj0gU3BhY2UpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2N18xNiI+U2V0X01lbnVfUGFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY3XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NjdfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NjdfMTYiPkNoPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4NV8xNiI+U2V0X01lbnVfUGFkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4NV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4Nl8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTg1XzE2Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9NZW51X1BhZCwgInNldF9tZW51X3BhZCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3MV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjY3XzE2Ij5TZXRfTWVudV9QYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODRfMzMiPk1lbjwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoQ2hhcmFjdGVyJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDg1XzMzIj5QYWQ8L0E+KSkpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjcxXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NzFfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDg0XzE0Ij5TZXRfUGFkX0NoYXJhY3RlcjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81ODVfMTYiPlNldF9NZW51X1BhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4Ml8zMyI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKENoYXJhY3RlcidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4M18zMyI+UGFkPC9BPikpKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4Ml8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OTBfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5MF8yOSI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjgwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OTFfMjkiPlBhZDwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBDaGFyYWN0ZXIpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4OF8xNCI+UGFkX0NoYXJhY3RlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkzXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODhfMjkiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDg5XzI5Ij5QYWQ8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQ2hhcmFjdGVyKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODJfMTYiPk1lbnVfUGFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjgyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82ODJfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5Nl8xNiI+TWVudV9QYWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTk2XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1lbnVfUGFkLCAibWVudV9wYWQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDkxXzI5Ij5QYWQ8L0E+IDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY4Ml8xNiI+TWVudV9QYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OTBfMjkiPk1lbjwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDkwXzE0Ij5QYWRfQ2hhcmFjdGVyPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDBfMTQiPlNldF9TcGFjaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDBfMjciPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDFfMjciPkRlc2NyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiA6PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTAyXzI3Ij5Sb3c8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICAgOj0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwM18yNyI+Q29sPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDo9IDApCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODlfMjkiPlBhZDwvQT4gOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTk2XzE2Ij5NZW51X1BhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4OF8yOSI+TWVuPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODhfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5OF8xNCI+U2V0X1NwYWNpbmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwMl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDk4XzI3Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5OV8yNyI+RGVzY3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gOj0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTAwXzI3Ij5Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gICA6PSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjA1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDFfMjciPkNvbDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDo9IDApCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5M18xNiI+U2V0X1NwYWNpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5M18xNiI+TWVuPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5M18xNiI+RDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5NF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjkzXzE2Ij5SPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk0XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTNfMTYiPkM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDdfMTYiPlNldF9TcGFjaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwN18xNiI+TWVuPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwOF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjA3XzE2Ij5EPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDhfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwN18xNiI+UjwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjA4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDdfMTYiPkM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9TcGFjaW5nLCAic2V0X21lbnVfc3BhY2luZyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5N183Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjkzXzE2Ij5TZXRfU3BhY2luZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwMF8yNyI+TWVuPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwMV8yNyI+RGVzY3I8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwMl8yNyI+Um93PC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDNfMjciPkNvbDwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5N183Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjk3XzciPlJlczwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwMF8xNCI+U2V0X1NwYWNpbmc8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjA3XzE2Ij5TZXRfU3BhY2luZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5OF8yNyI+TWVuPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDk5XzI3Ij5EZXNjcjwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDBfMjciPlJvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDFfMjciPkNvbDwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5OF8xNCI+U2V0X1NwYWNpbmc8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzA3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDhfMTQiPlNwYWNpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwOF8yMyI+TWVuPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwOF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA5XzIzIj5EZXNjcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzA5XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MTBfMjMiPlJvdzwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzEwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MTFfMjMiPkNvbDwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwNl8xNCI+U3BhY2luZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE4XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDZfMjMiPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE5XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDdfMjMiPkRlc2NyPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyMF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA4XzIzIj5Sb3c8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjIxXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDlfMjMiPkNvbDwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzEyXzEyIj5DX0ludF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzEzXzE2Ij5HZXRfU3BhY2luZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxM18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzEzXzE2Ij5NZW48L0E+PC9GT05UPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxNF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzEzXzE2Ij5EPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzE0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTNfMTYiPlI8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxM18xNiI+QzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzEyXzEyIj5DX0ludF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyM18xMiI+Q19JbnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI0XzE2Ij5HZXRfU3BhY2luZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjRfMTYiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyNF8xNiI+RDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI1XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjRfMTYiPlI8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyNV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjI0XzE2Ij5DPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjNfMTIiPkNfSW50X0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X1NwYWNpbmcsICJtZW51X3NwYWNpbmciKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTdfNyI+RDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxN18xMCI+UjwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxN18xMyI+QzwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxOF83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzEzXzE2Ij5HZXRfU3BhY2luZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwOF8yMyI+TWVuPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE3XzciPkQ8L0E+JzxiPkFjY2VzczwvYj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxN18xMCI+UjwvQT4nPGI+QWNjZXNzPC9iPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE3XzEzIj5DPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjhfNyI+RDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI4XzEwIj5SPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjhfMTMiPkM8L0E+PC9zcGFuPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE4XzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MThfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA5XzIzIj5EZXNjcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE3XzciPkQ8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxMF8yMyI+Um93PC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTdfMTAiPlI8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxMV8yMyI+Q29sPC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxN18xMyI+QzwvQT4pOwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwOF8xNCI+U3BhY2luZzwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzMyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjBfMTMiPlNldF9QYXR0ZXJuPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzMyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjBfMjYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzMzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjFfMjYiPlRleHQ8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjRfMTYiPkdldF9TcGFjaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA2XzIzIj5NZW48L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyOF83Ij5EPC9BPic8Yj5BY2Nlc3M8L2I+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyOF8xMCI+UjwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjhfMTMiPkM8L0E+JzxiPkFjY2VzczwvYj4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUwN18yMyI+RGVzY3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyOF83Ij5EPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDhfMjMiPlJvdzwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjI4XzEwIj5SPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDlfMjMiPkNvbDwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjhfMTMiPkM8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA2XzE0Ij5TcGFjaW5nPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MzlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxOF8xMyI+U2V0X1BhdHRlcm48L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTE4XzI2Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MTlfMjYiPlRleHQ8L0E+PC9zcGFuPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzM1XzEyIj5DaGFyX1B0cjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcjsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczNl8xNiI+U2V0X1BhdHRlcm48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzczNl8xNiI+TWVuPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzczNl8xNiI+UGF0dGVybjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzM1XzEyIj5DaGFyX1B0cjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQyXzEyIj5DaGFyX1B0cjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzE2Ij5TZXRfUGF0dGVybjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDNfMTYiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0M18xNiI+UGF0dGVybjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjQyXzEyIj5DaGFyX1B0cjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzkiPkV0aV9FcnJvcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2V0X1BhdHRlcm4sICJzZXRfbWVudV9wYXR0ZXJuIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzQwXzciPlM8L0E+PC9GT05UPiAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjFfMjYiPlRleHQ8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0MV83Ij5MPC9BPjwvRk9OVD4gICA6IHNpemVfdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzQyXzciPlJlczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0N183Ij5TPC9BPjwvc3Bhbj4gICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTE5XzI2Ij5UZXh0PC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0OF83Ij5MPC9BPjwvc3Bhbj4gICA6IHNpemVfdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDlfNyI+UmVzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTIxXzI2Ij5UZXh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzQwXzciPlM8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NDFfNyI+TDwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzQyXzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzM2XzE2Ij5TZXRfUGF0dGVybjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyMF8yNiI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzQwXzciPlM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NDBfNyI+UzwvQT4nRmlyc3QpJzxiPkFjY2VzczwvYj4pOwotICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzQyXzciPlJlczwvQT4gPGI+aXM8L2I+Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODlfNCI+RV9Ob19NYXRjaDwvQT4gPSZndDsgPGI+cmV0dXJuPC9iPiBGYWxzZTsKLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiAgICAgICA9Jmd0OyA8Yj5yZXR1cm48L2I+IFRydWU7Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8Yj5vdGhlcnM8L2I+ID0mZ3Q7Ci0gICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NDJfNyI+UmVzPC9BPik7CisgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MTlfMjYiPlRleHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDdfNyI+UzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0OF83Ij5MPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDlfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDNfMTYiPlNldF9QYXR0ZXJuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTE4XzI2Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDdfNyI+UzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0N183Ij5TPC9BPidGaXJzdCknPGI+QWNjZXNzPC9iPik7CisgICAgICA8Yj5jYXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDlfNyI+UmVzPC9BPiA8Yj5pczwvYj4KKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83N183Ij5FX05vX01hdGNoPC9BPiA9Jmd0OwogICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKKyAgICAgICAgIDxiPndoZW48L2I+IDxiPm90aGVyczwvYj4gPSZndDsKKyAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0OV83Ij5SZXM8L0E+KTsKKyAgICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+Y2FzZTwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyMF8xMyI+U2V0X1BhdHRlcm48L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MThfMTMiPlNldF9QYXR0ZXJuPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI3XzE0Ij5QYXR0ZXJuPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzU1XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjdfMjMiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NTZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyOF8yMyI+VGV4dDwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyNV8xNCI+UGF0dGVybjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjYyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MjVfMjMiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyNl8yMyI+VGV4dDwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiBTdHJpbmcpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1OF8xNiI+R2V0X1BhdHRlcm48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NThfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc1OF8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OF8xMiI+Y2hhcnNfcHRyPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjY1XzE2Ij5HZXRfUGF0dGVybjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjY1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NjVfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTZfMTIiPmNoYXJzX3B0cjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0X1BhdHRlcm4sICJtZW51X3BhdHRlcm4iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NThfMTYiPkdldF9QYXR0ZXJuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI3XzIzIj5NZW48L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI4XzIzIj5UZXh0PC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyN18xNCI+UGF0dGVybjwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzE0Ij5TZXRfRm9ybWF0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzY0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MzdfMjYiPk1lbjwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM4XzI2Ij5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzY2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MzlfMjYiPkNvbHVtbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NjVfMTYiPkdldF9QYXR0ZXJuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI1XzIzIj5NZW48L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI2XzIzIj5UZXh0PC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyNV8xNCI+UGF0dGVybjwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM1XzE0Ij5TZXRfRm9ybWF0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUzNV8yNiI+TWVuPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM2XzI2Ij5MaW5lczwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzI2Ij5Db2x1bW5zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzY4XzE2Ij5TZXRfTWVudV9GbXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjhfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2OF8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjlfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2OF8xNiI+TGluPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NzBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2OF8xNiI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjc1XzE2Ij5TZXRfTWVudV9GbXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3NV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjc1XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjc2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NzVfMTYiPkxpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3NV8xNiI+Q29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWVudV9GbXQsICJzZXRfbWVudV9mb3JtYXQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NzNfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2OF8xNiI+U2V0X01lbnVfRm10PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzI2Ij5NZW48L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUzOF8yNiI+TGluZXM8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MzlfMjYiPkNvbHVtbnM8L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzczXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NzNfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzE0Ij5TZXRfRm9ybWF0PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3NV8xNiI+U2V0X01lbnVfRm10PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM1XzI2Ij5NZW48L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM2XzI2Ij5MaW5lczwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM3XzI2Ij5Db2x1bW5zPC9BPikpKTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUxXzE0Ij5Gb3JtYXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1MV8yMiI+TWVuPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzgzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTJfMjIiPkxpbmVzPC9BPjwvRk9OVD4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1M18yMiI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPikKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTM1XzE0Ij5TZXRfRm9ybWF0PC9BPjsKKworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjg3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NDlfMTQiPkZvcm1hdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjg3XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NDlfMjIiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUwXzIyIj5MaW5lczwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODlfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1MV8yMiI+Q29sdW1uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMTIiPkNfSW50X0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODdfMTYiPk1lbnVfRm10PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzg3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83ODdfMTYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzg4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83ODdfMTYiPlk8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODhfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc4N18xNiI+WDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzg2XzEyIj5DX0ludF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5MV8xMiI+Q19JbnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjkyXzE2Ij5NZW51X0ZtdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjkyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTJfMTYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5Ml8xNiI+WTwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjkzXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTJfMTYiPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5MV8xMiI+Q19JbnRfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X0ZtdCwgIm1lbnVfZm9ybWF0Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzkxXzciPkw8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OTFfMTAiPkM8L0E+PC9GT05UPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OTJfNyI+UmVzPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83ODdfMTYiPk1lbnVfRm10PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUxXzIyIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTFfNyI+TDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzkxXzEwIj5DPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTZfNyI+TDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjk2XzEwIj5DPC9BPjwvc3Bhbj4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc5Ml83Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk2XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzkyXzciPlJlczwvQT4pOwotICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1Ml8yMiI+TGluZXM8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTFfNyI+TDwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUzXzIyIj5Db2x1bW5zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzkxXzEwIj5DPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUxXzE0Ij5Gb3JtYXQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2NV8xNCI+U2V0X0l0ZW1fSW5pdF9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODAyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjVfMzQiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODAzXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjZfMzQiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5Ml8xNiI+TWVudV9GbXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NDlfMjIiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5Nl83Ij5MPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTZfMTAiPkM8L0E+JzxiPkFjY2VzczwvYj4pKTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1MF8yMiI+TGluZXM8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTZfNyI+TDwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTUxXzIyIj5Db2x1bW5zPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjk2XzEwIj5DPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU0OV8xNCI+Rm9ybWF0PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjNfMTQiPlNldF9JdGVtX0luaXRfSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzAzXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjNfMzQiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTY0XzM0Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODA1XzE2Ij5TZXRfSXRlbV9Jbml0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODA1XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MDVfMTYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDZfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwNV8xNiI+UHJvYzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNl8xNiI+U2V0X0l0ZW1fSW5pdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzA2XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDZfMTYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwN18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzA2XzE2Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfSXRlbV9Jbml0LCAic2V0X2l0ZW1faW5pdCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwOV83Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODA1XzE2Ij5TZXRfSXRlbV9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTY1XzM0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjZfMzQiPlByb2M8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MDlfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwOV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjVfMTQiPlNldF9JdGVtX0luaXRfSG9vazwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDZfMTYiPlNldF9JdGVtX0luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjNfMzQiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2NF8zNCI+UHJvYzwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYzXzE0Ij5TZXRfSXRlbV9Jbml0X0hvb2s8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODE2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzFfMTQiPlNldF9JdGVtX1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxNl8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTcxXzM0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxN18zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTcyXzM0Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2OV8xNCI+U2V0X0l0ZW1fVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTRfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2OV8zNCI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE1XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzBfMzQiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MTlfMTYiPlNldF9JdGVtX1Rlcm08L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MTlfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgxOV8xNiI+TWVuPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyMF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODE5XzE2Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE3XzE2Ij5TZXRfSXRlbV9UZXJtPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxN18xNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTdfMTYiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9JdGVtX1Rlcm0sICJzZXRfaXRlbV90ZXJtIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODIzXzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MTlfMTYiPlNldF9JdGVtX1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzFfMzQiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3Ml8zNCI+UHJvYzwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODIzXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MjNfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTcxXzE0Ij5TZXRfSXRlbV9UZXJtX0hvb2s8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzE3XzE2Ij5TZXRfSXRlbV9UZXJtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTY5XzM0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzBfMzQiPlByb2M8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2OV8xNCI+U2V0X0l0ZW1fVGVybV9Ib29rPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTc3XzE0Ij5TZXRfTWVudV9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MzBfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3N18zNCI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MzFfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3OF8zNCI+UHJvYzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzVfMTQiPlNldF9NZW51X0luaXRfSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI1XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzVfMzQiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyNl8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTc2XzM0Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODMzXzE2Ij5TZXRfTWVudV9Jbml0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODMzXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MzNfMTYiPk1lbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MzRfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgzM18xNiI+UHJvYzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyOF8xNiI+U2V0X01lbnVfSW5pdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MjhfMTYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyOV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzI4XzE2Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfTWVudV9Jbml0LCAic2V0X21lbnVfaW5pdCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzN183Ij5SZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzhfMTIiPkV0aV9FcnJvcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODMzXzE2Ij5TZXRfTWVudV9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTc3XzM0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzhfMzQiPlByb2M8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MzdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgzN183Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzdfMTQiPlNldF9NZW51X0luaXRfSG9vazwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODhfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MjhfMTYiPlNldF9NZW51X0luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzVfMzQiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3Nl8zNCI+UHJvYzwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTc1XzE0Ij5TZXRfTWVudV9Jbml0X0hvb2s8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODNfMTQiPlNldF9NZW51X1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0NF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTgzXzM0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0NV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTg0XzM0Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4MV8xNCI+U2V0X01lbnVfVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MzZfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4MV8zNCI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzM3XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODJfMzQiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDdfMTYiPlNldF9NZW51X1Rlcm08L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg0N18xNiI+TWVuPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0OF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODQ3XzE2Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzM5XzE2Ij5TZXRfTWVudV9UZXJtPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MzlfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzczOV8xNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzQwXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MzlfMTYiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNldF9NZW51X1Rlcm0sICJzZXRfbWVudV90ZXJtIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODUxXzciPlJlczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NDdfMTYiPlNldF9NZW51X1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODNfMzQiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4NF8zNCI+UHJvYzwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODUxXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzgwXzQiPkVfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTZfMTQiPkV0aV9FeGNlcHRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NTFfNyI+UmVzPC9BPik7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTgzXzE0Ij5TZXRfTWVudV9UZXJtX0hvb2s8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzM5XzE2Ij5TZXRfTWVudV9UZXJtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTgxXzM0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODJfMzQiPlByb2M8L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4MV8xNCI+U2V0X01lbnVfVGVybV9Ib29rPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODlfMTMiPkdldF9JdGVtX0luaXRfSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1OF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTg5XzMzIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTg3XzEzIj5HZXRfSXRlbV9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0N18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTg3XzMzIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2MF8xNiI+SXRlbV9Jbml0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODYwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NjBfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0OV8xNiI+SXRlbV9Jbml0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc0OV8xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJdGVtX0luaXQsICJpdGVtX2luaXQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NjBfMTYiPkl0ZW1fSW5pdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4OV8zMyI+TWVuPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4OV8xMyI+R2V0X0l0ZW1fSW5pdF9Ib29rPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzQ5XzE2Ij5JdGVtX0luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODdfMzMiPk1lbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODdfMTMiPkdldF9JdGVtX0luaXRfSG9vazwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTk0XzEzIj5HZXRfSXRlbV9UZXJtX0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjZfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5NF8zMyI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5Ml8xMyI+R2V0X0l0ZW1fVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTVfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5Ml8zMyI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjhfMTYiPkl0ZW1fVGVybTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2OF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODY4XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTdfMTYiPkl0ZW1fVGVybTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NTdfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTU5XzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXRlbV9UZXJtLCAiaXRlbV90ZXJtIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODY4XzE2Ij5JdGVtX1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTRfMzMiPk1lbjwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTRfMTMiPkdldF9JdGVtX1Rlcm1fSG9vazwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc1N18xNiI+SXRlbV9UZXJtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTkyXzMzIj5NZW48L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTkyXzEzIj5HZXRfSXRlbV9UZXJtX0hvb2s8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NzRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5OV8xMyI+R2V0X01lbnVfSW5pdF9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODc0XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTlfMzMiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTdfMTMiPkdldF9NZW51X0luaXRfSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzYzXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTdfMzMiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTU5XzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODc2XzE2Ij5NZW51X0luaXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NzZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg3Nl8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzY1XzE2Ij5NZW51X0luaXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2NV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzY1XzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1lbnVfSW5pdCwgIm1lbnVfaW5pdCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg3Nl8xNiI+TWVudV9Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTk5XzMzIj5NZW48L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTk5XzEzIj5HZXRfTWVudV9Jbml0X0hvb2s8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NjVfMTYiPk1lbnVfSW5pdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5N18zMyI+TWVuPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5N18xMyI+R2V0X01lbnVfSW5pdF9Ib29rPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODgyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MDRfMTMiPkdldF9NZW51X1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4Ml8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjA0XzMzIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjAyXzEzIj5HZXRfTWVudV9UZXJtX0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3MV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjAyXzMzIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4NF8xNiI+TWVudV9UZXJtPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84ODRfMTYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3M18xNiI+TWVudV9UZXJtPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3M18xNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNZW51X1Rlcm0sICJtZW51X3Rlcm0iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84ODRfMTYiPk1lbnVfVGVybTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwNF8zMyI+TWVuPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwNF8xMyI+R2V0X01lbnVfVGVybV9Ib29rPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODkwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTNfMTQiPlJlZGVmaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODkwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTNfMjQiPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODkxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTRfMjQiPkl0ZW1zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzczXzE2Ij5NZW51X1Rlcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MDJfMzMiPk1lbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MDJfMTMiPkdldF9NZW51X1Rlcm1fSG9vazwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjExXzE0Ij5SZWRlZmluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTFfMjQiPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4MF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjEyXzI0Ij5JdGVtczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc2XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODkzXzE2Ij5TZXRfSXRlbXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OTNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5M18xNiI+TWVuPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5NF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODkzXzE2Ij5JdGVtczwvQT48L0ZPTlQ+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4Ml8xNiI+U2V0X0l0ZW1zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83ODJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc4Ml8xNiI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzgzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83ODJfMTYiPkl0ZW1zPC9BPjwvc3Bhbj4gOiBTeXN0ZW0uQWRkcmVzcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfSXRlbXMsICJzZXRfbWVudV9pdGVtcyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5N183Ij5SZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF8xMiI+RXRpX0Vycm9yPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxNF8yNCI+SXRlbXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTRfMjQiPkl0ZW1zPC9BPidMYXN0KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyXzQiPk51bGxfSXRlbTwvQT4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxNF8yNCI+SXRlbXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTRfMjQiPkl0ZW1zPC9BPidMYXN0KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82Ml80Ij5OdWxsX0l0ZW08L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE2XzQiPk1lbnVfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTJfMjQiPkl0ZW1zPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTJfMjQiPkl0ZW1zPC9BPidMYXN0KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzQiPk51bGxfSXRlbTwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxMl8yNCI+SXRlbXM8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxMl8yNCI+SXRlbXM8L0E+J0xhc3QpIC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzQiPk51bGxfSXRlbTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTFfNCI+TWVudV9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5N183Ij5SZXM8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5M18xNiI+U2V0X0l0ZW1zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjEzXzI0Ij5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTRfMjQiPkl0ZW1zPC9BPi48Yj5hbGw8L2I+J0FkZHJlc3MpOwotICAgICAgICAgPGI+aWY8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84OTdfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5N183Ij5SZXM8L0E+KTsKLSAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzgyXzE2Ij5TZXRfSXRlbXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTFfMjQiPk1lbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxMl8yNCI+SXRlbXM8L0E+LjxiPmFsbDwvYj4nQWRkcmVzcykpOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxM18xNCI+UmVkZWZpbmU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MTFfMTQiPlJlZGVmaW5lPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTEwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjlfMTMiPkl0ZW1fQ291bnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyOV8yNSI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiBOYXR1cmFsCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjI3XzEzIj5JdGVtX0NvdW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OTVfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyN18yNSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiBOYXR1cmFsCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxMl8xNiI+Q291bnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkxMl8xNiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzk3XzE2Ij5Db3VudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzk3XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTdfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQ291bnQsICJpdGVtX2NvdW50Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTEyXzE2Ij5Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyOV8yNSI+TWVuPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjlfMTMiPkl0ZW1fQ291bnQ8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTdfMTYiPkNvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjI3XzI1Ij5NZW48L0E+KSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyN18xMyI+SXRlbV9Db3VudDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzEzIj5JdGVtczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzIwIj5NZW48L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyNF8yMCI+SW5kZXg8L0E+PC9GT05UPiA6IFBvc2l0aXZlKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwM18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIxXzEzIj5JdGVtczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODAzXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjFfMjAiPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODA0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjJfMjAiPkluZGV4PC9BPjwvc3Bhbj4gOiBQb3NpdGl2ZSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPgogICAgPGI+aXM8L2I+CiAgICAgICA8Yj51c2U8L2I+IElfQXJyYXk7CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiBDX01pdGVtcyAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MjNfMjYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gUG9pbnRlcjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiBDX01pdGVtcyAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwOF8yNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiBQb2ludGVyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIENfTWl0ZW1zLCAibWVudV9pdGVtcyIpOwogCi0gICAgICBQIDogUG9pbnRlciA6PSBDX01pdGVtcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzIwIj5NZW48L0E+KTsKKyAgICAgIFAgOiBQb2ludGVyIDo9IENfTWl0ZW1zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjFfMjAiPk1lbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gUCA9IDxiPm51bGw8L2I+IDxiPm9yPC9iPiA8Yj5lbHNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjRfMjAiPkluZGV4PC9BPiAmZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyOV8xMyI+SXRlbV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyM18yMCI+TWVuPC9BPikgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTZfNCI+TWVudV9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IFAgPSA8Yj5udWxsPC9iPiA8Yj5vcjwvYj4gPGI+ZWxzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIyXzIwIj5JbmRleDwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjdfMTMiPkl0ZW1fQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjFfMjAiPk1lbjwvQT4pIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTExXzQiPk1lbnVfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICBQIDo9IFAgKyBwdHJkaWZmX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjRfMjAiPkluZGV4PC9BPikgLSAxKTsKKyAgICAgICAgIFAgOj0gUCArIHB0cmRpZmZfdCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyMl8yMCI+SW5kZXg8L0E+KSAtIDEpOwogICAgICAgICAgPGI+cmV0dXJuPC9iPiBQLjxiPmFsbDwvYj47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzEzIj5JdGVtczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyMV8xMyI+SXRlbXM8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTM3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzhfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzN18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM4XzIxIj5JdGVtczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzEzIj5DcmVhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzIxIj5JdGVtczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc2XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzlfMTYiPk5ld21lbnU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkzOV8xNiI+SXRlbXM8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MjRfMTYiPk5ld21lbnU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyNF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODI0XzE2Ij5JdGVtczwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTmV3bWVudSwgIm5ld19tZW51Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTQyXzciPk08L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODI3XzciPk08L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzhfMjEiPkl0ZW1zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM4XzIxIj5JdGVtczwvQT4nTGFzdCkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82Ml80Ij5OdWxsX0l0ZW08L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzhfMjEiPkl0ZW1zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM4XzIxIj5JdGVtczwvQT4nTGFzdCkgLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjJfNCI+TnVsbF9JdGVtPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNl80Ij5NZW51X0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzIxIj5JdGVtczwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzIxIj5JdGVtczwvQT4nTGFzdCkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzZfMjEiPkl0ZW1zPC9BPi48Yj5hbGw8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzZfMjEiPkl0ZW1zPC9BPidMYXN0KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTExXzQiPk1lbnVfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NDJfNyI+TTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTM5XzE2Ij5OZXdtZW51PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM4XzIxIj5JdGVtczwvQT4uPGI+YWxsPC9iPidBZGRyZXNzKTsKLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NDJfNyI+TTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82M180Ij5OdWxsX01lbnU8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE2XzQiPk1lbnVfRXhjZXB0aW9uPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgyN183Ij5NPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MjRfMTYiPk5ld21lbnU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzZfMjEiPkl0ZW1zPC9BPi48Yj5hbGw8L2I+J0FkZHJlc3MpOworICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgyN183Ij5NPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4XzQiPk51bGxfTWVudTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTFfNCI+TWVudV9FeGNlcHRpb248L0E+OwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk0Ml83Ij5NPC9BPjsKKyAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODI3XzciPk08L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYzOF8xMyI+Q3JlYXRlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjM2XzEzIj5DcmVhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTU2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NDVfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1Nl8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjQ1XzIyIj5NZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODQxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NDNfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODQxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NDNfMjIiPk1lbjwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1OF8xNiI+RnJlZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTU4XzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDNfMTYiPkZyZWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0M18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODQzXzE2Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV85Ij5FdGlfRXJyb3I8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEZyZWUsICJmcmVlX21lbnUiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjFfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk1OF8xNiI+RnJlZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0NV8yMiI+TWVuPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NjFfNyI+UmVzPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODBfNCI+RV9PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk2MV83Ij5SZXM8L0E+KTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjQ1XzIyIj5NZW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYzXzQiPk51bGxfTWVudTwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0NV8xNCI+RGVsZXRlPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84OF8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg0M18xNiI+RnJlZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0M18yMiI+TWVuPC9BPikpOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjQzXzIyIj5NZW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4XzQiPk51bGxfTWVudTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0M18xNCI+RGVsZXRlPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTcwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NjBfMTMiPkRyaXZlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3MF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjYwXzIxIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3MV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjYxXzIxIj5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4XzkiPktleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NTRfOSI+RHJpdmVyX1Jlc3VsdDwvQT4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjU4XzEzIj5Ecml2ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1Ml8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjU4XzIxIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODUzXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NTlfMjEiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjZfOSI+S2V5X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1Ml85Ij5Ecml2ZXJfUmVzdWx0PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzNfMTYiPkRyaXZlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3M18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTczXzE2Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3NF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTczXzE2Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NTVfMTYiPkRyaXZlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODU1XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NTVfMTYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NTZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1NV8xNiI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEcml2ZXIsICJtZW51X2RyaXZlciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3N183Ij5SPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc4XzEyIj5FdGlfRXJyb3I8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk3M18xNiI+RHJpdmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjYwXzIxIj5NZW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjYxXzIxIj5LZXk8L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODU5XzciPlI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzFfOSI+RXRpX0Vycm9yPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NTVfMTYiPkRyaXZlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1OF8yMSI+TWVuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1OV8yMSI+S2V5PC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTc3XzciPlI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl84MF80Ij5FX09rPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTc3XzciPlI8L0E+IDxiPmlzPC9iPgotICAgICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzQiPkVfVW5rbm93bl9Db21tYW5kPC9BPiAgPSZndDsgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NTZfMjciPlVua25vd25fUmVxdWVzdDwvQT47Ci0gICAgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfODlfNCI+RV9Ob19NYXRjaDwvQT4gICAgICAgICA9Jmd0OyA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1N18yNyI+Tm9fTWF0Y2g8L0E+OwotICAgICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzQiPkVfUmVxdWVzdF9EZW5pZWQ8L0E+IHwKLSAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkwXzQiPkVfTm90X1NlbGVjdGFibGU8L0E+ICAgPSZndDsgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NTVfMjciPlJlcXVlc3RfRGVuaWVkPC9BPjsKLSAgICAgICAgICAgIDxiPndoZW48L2I+IDxiPm90aGVyczwvYj4gPSZndDsKLSAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Nl8xNCI+RXRpX0V4Y2VwdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk3N183Ij5SPC9BPik7Ci0gICAgICAgICA8Yj5lbmQ8L2I+IDxiPmNhc2U8L2I+OwotICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1NF8yNyI+TWVudV9PazwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY2MF8xMyI+RHJpdmVyPC9BPjsKKyAgICAgIDxiPmNhc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1OV83Ij5SPC9BPiA8Yj5pczwvYj4KKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83OF83Ij5FX1Vua25vd25fQ29tbWFuZDwvQT4gPSZndDsKKyAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjU0XzI3Ij5Vbmtub3duX1JlcXVlc3Q8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc3XzciPkVfTm9fTWF0Y2g8L0E+ID0mZ3Q7CisgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1NV8yNyI+Tm9fTWF0Y2g8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc0XzciPkVfUmVxdWVzdF9EZW5pZWQ8L0E+IHwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc2XzciPkVfTm90X1NlbGVjdGFibGU8L0E+ID0mZ3Q7CisgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1M18yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+OworICAgICAgICAgPGI+d2hlbjwvYj4gPGI+b3RoZXJzPC9iPiA9Jmd0OworICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzg4XzE0Ij5FdGlfRXhjZXB0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODU5XzciPlI8L0E+KTsKKyAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjUyXzI3Ij5NZW51X09rPC9BPjsKKyAgICAgIDxiPmVuZDwvYj4gPGI+Y2FzZTwvYj47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1OF8xMyI+RHJpdmVyPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTgwXzE0Ij5GcmVlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTkyXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xODBfMjAiPklBPC9BPjwvRk9OVD4gICAgICAgICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF85Ij5JdGVtX0FycmF5X0FjY2VzczwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MV8yMCI+RnJlZV9JdGVtczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gRmFsc2UpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF8xNCI+RnJlZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzhfMjAiPklBPC9BPjwvc3Bhbj4gICAgICAgICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3Nl85Ij5JdGVtX0FycmF5X0FjY2VzczwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc5XzIwIj5GcmVlX0l0ZW1zPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKQogICAgPGI+aXM8L2I+CiAgICAgICA8Yj5wcm9jZWR1cmU8L2I+IFJlbGVhc2UgPGI+aXM8L2I+IDxiPm5ldzwvYj4gQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb24KLSAgICAgICAgKEl0ZW1fQXJyYXksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF85Ij5JdGVtX0FycmF5X0FjY2VzczwvQT4pOworICAgICAgICAoSXRlbV9BcnJheSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc2XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xODBfMjAiPklBPC9BPiAvPSA8Yj5udWxsPC9iPiA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MV8yMCI+RnJlZV9JdGVtczwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPmZvcjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OTlfMTQiPkk8L0E+PC9GT05UPiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTgwXzIwIj5JQTwvQT4nRmlyc3QgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MF8yMCI+SUE8L0E+J0xhc3QgLSAxKSA8Yj5sb29wPC9iPgotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MF8yMCI+SUE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85OTlfMTQiPkk8L0E+KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82Ml80Ij5OdWxsX0l0ZW08L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMDNfMTQiPkRlbGV0ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MF8yMCI+SUE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85OTlfMTQiPkk8L0E+KSk7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzIwIj5JQTwvQT4gLz0gPGI+bnVsbDwvYj4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzlfMjAiPkZyZWVfSXRlbXM8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5mb3I8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84ODFfMTQiPkk8L0E+PC9zcGFuPiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzIwIj5JQTwvQT4nRmlyc3QgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF8yMCI+SUE8L0E+J0xhc3QgLSAxKSA8Yj5sb29wPC9iPgorICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF8yMCI+SUE8L0E+LjxiPmFsbDwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg4MV8xNCI+STwvQT4pIC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzQiPk51bGxfSXRlbTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzIwMV8xNCI+RGVsZXRlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzIwIj5JQTwvQT4uPGI+YWxsPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODgxXzE0Ij5JPC9BPikpOwogICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICBSZWxlYXNlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xODBfMjAiPklBPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4MF8xNCI+RnJlZTwvQT47CisgICAgICBSZWxlYXNlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzhfMjAiPklBPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3OF8xNCI+RnJlZTwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDA5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNDZfMTMiPkRlZmF1bHRfTWVudV9PcHRpb25zPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTQ1XzEzIj5EZWZhdWx0X01lbnVfT3B0aW9uczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE1XzkiPk1lbnVfT3B0aW9uX1NldDwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1Ml8xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82M180Ij5OdWxsX01lbnU8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTQ2XzEzIj5EZWZhdWx0X01lbnVfT3B0aW9uczwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM1MF8xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX01lbnU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTQ1XzEzIj5EZWZhdWx0X01lbnVfT3B0aW9uczwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMTVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE2OF8xMyI+RGVmYXVsdF9JdGVtX09wdGlvbnM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1M185Ij5JdGVtX09wdGlvbl9TZXQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTY2XzEzIj5EZWZhdWx0X0l0ZW1fT3B0aW9uczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI1Nl8xMyI+R2V0X09wdGlvbnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82Ml80Ij5OdWxsX0l0ZW08L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTY4XzEzIj5EZWZhdWx0X0l0ZW1fT3B0aW9uczwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yNTRfMTMiPkdldF9PcHRpb25zPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfNCI+TnVsbF9JdGVtPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE2Nl8xMyI+RGVmYXVsdF9JdGVtX09wdGlvbnM8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5NZW51czwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0KaW5kZXggNjI3ODBmYi4uMGFkZjExNyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0KQEAgLTEsNjgxICsxLDY5MSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXMuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51cy5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnUgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjI3IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDcvMDUvMDUgMjA6MjA6NTIgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgbWVudSBiaW5kaW5nLjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQuIFBsZWFzZSBkb24ndCBjaGFuZ2UgaXQgbWFudWFsbHkhPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJ1biB0aGUgZ2VuZXJhdG9yIGluc3RlYWQuPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1lbnUgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjMxIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE0LzA1LzI0IDIxOjMxOjU3IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IFN5c3RlbTsKIDxiPndpdGg8L2I+IEFkYS5DaGFyYWN0ZXJzLkxhdGluXzE7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MV80MCI+TWVudXM8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDlfMzUiPk1lbnVzPC9BPik7Ci0gICA8Yj5wcmFnbWE8L2I+IExpbmtlcl9PcHRpb25zICgiLWxtZW51dyIpOwotICAgPGI+cHJhZ21hPC9iPiBMaW5rZXJfT3B0aW9ucyAoIi1sbmN1cnNlc3ciKTsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ5XzQwIj5NZW51czwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+KTsKKyAgIDxiPnByYWdtYTwvYj4gTGlua2VyX09wdGlvbnMgKCItbG1lbnUiICZhbXA7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfOV80Ij5ERlRfQVJHX1NVRkZJWDwvQT4pOwogCiAgICBTcGFjZSA6IENoYXJhY3RlciA8Yj5yZW5hbWVzPC9iPiBBZGEuQ2hhcmFjdGVycy5MYXRpbl8xLlNwYWNlOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzkiPkl0ZW08L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzkiPk1lbnU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfOSI+SXRlbTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5wcml2YXRlPC9iPjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml85Ij5NZW51PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPnByaXZhdGU8L2I+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEludGVyZmFjZSBjb25zdGFudHMgIC0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzQiPk51bGxfSXRlbTwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82M180Ij5OdWxsX01lbnU8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJbnRlcmZhY2UgY29uc3RhbnRzICAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N180Ij5OdWxsX0l0ZW08L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF80Ij5OdWxsX01lbnU8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKIAotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjhfOSI+S2V5X0NvZGU8L0E+Ci0gICAgIDxiPnJhbmdlPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMSkgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE3KTsKKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjZfOSI+S2V5X0NvZGU8L0E+CisgICAgIDxiPnJhbmdlPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMSkgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDE3KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGUgcHJlZml4IE1fIHN0YW5kcyBmb3IgIk1lbnUgUmVxdWVzdCI8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfNCI+TV9MZWZ0X0l0ZW08L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzQiPk1fUmlnaHRfSXRlbTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV80Ij5NX1VwX0l0ZW08L0E+PC9GT05UPiAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzJfNCI+TV9Eb3duX0l0ZW08L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczXzQiPk1fU2Nyb2xsVXBfTGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA1OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NF80Ij5NX1Njcm9sbERvd25fTGluZTwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgNjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzVfNCI+TV9TY3JvbGxEb3duX1BhZ2U8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2XzQiPk1fU2Nyb2xsVXBfUGFnZTwvQT48L0ZPTlQ+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyA4OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N180Ij5NX0ZpcnN0X0l0ZW08L0E+PC9GT05UPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgOTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzhfNCI+TV9MYXN0X0l0ZW08L0E+PC9GT05UPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDEwOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OV80Ij5NX05leHRfSXRlbTwvQT48L0ZPTlQ+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwXzQiPk1fUHJldmlvdXNfSXRlbTwvQT48L0ZPTlQ+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAxMjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODFfNCI+TV9Ub2dnbGVfSXRlbTwvQT48L0ZPTlQ+ICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDEzOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Ml80Ij5NX0NsZWFyX1BhdHRlcm48L0E+PC9GT05UPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzXzQiPk1fQmFja19QYXR0ZXJuPC9BPjwvRk9OVD4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDdfNCI+S2V5X01heDwvQT4gKyAxNTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODRfNCI+TV9OZXh0X01hdGNoPC9BPjwvRk9OVD4gICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwN180Ij5LZXlfTWF4PC9BPiArIDE2OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NV80Ij5NX1ByZXZpb3VzX01hdGNoPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTc7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgcHJlZml4IE1fIHN0YW5kcyBmb3IgIk1lbnUgUmVxdWVzdCI8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF80Ij5NX0xlZnRfSXRlbTwvQT48L3NwYW4+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV80Ij5NX1JpZ2h0X0l0ZW08L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Nl80Ij5NX1VwX0l0ZW08L0E+PC9zcGFuPiAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N180Ij5NX0Rvd25fSXRlbTwvQT48L3NwYW4+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OF80Ij5NX1Njcm9sbFVwX0xpbmU8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV80Ij5NX1Njcm9sbERvd25fTGluZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF80Ij5NX1Njcm9sbERvd25fUGFnZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MV80Ij5NX1Njcm9sbFVwX1BhZ2U8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Ml80Ij5NX0ZpcnN0X0l0ZW08L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83M180Ij5NX0xhc3RfSXRlbTwvQT48L3NwYW4+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzRfNCI+TV9OZXh0X0l0ZW08L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDExOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1XzQiPk1fUHJldmlvdXNfSXRlbTwvQT48L3NwYW4+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl80Ij5NX1RvZ2dsZV9JdGVtPC9BPjwvc3Bhbj4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfNCI+TV9DbGVhcl9QYXR0ZXJuPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDE0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzQiPk1fQmFja19QYXR0ZXJuPC9BPjwvc3Bhbj4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OV80Ij5NX05leHRfTWF0Y2g8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzc5XzQiPktleV9NYXg8L0E+ICsgMTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfNCI+TV9QcmV2aW91c19NYXRjaDwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3OV80Ij5LZXlfTWF4PC9BPiArIDE3OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEZvciB0aG9zZSB3aG8gbGlrZSB0aGUgb2xkICdDJyBuYW1lcyBmb3IgdGhlIHJlcXVlc3QgY29kZXM8L0VNPjwvRk9OVD4KLSAgIFJFUV9MRUZUX0lURU0gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82OV80Ij5NX0xlZnRfSXRlbTwvQT47Ci0gICBSRVFfUklHSFRfSVRFTSAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNzBfNCI+TV9SaWdodF9JdGVtPC9BPjsKLSAgIFJFUV9VUF9JVEVNICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83MV80Ij5NX1VwX0l0ZW08L0E+OwotICAgUkVRX0RPV05fSVRFTSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzcyXzQiPk1fRG93bl9JdGVtPC9BPjsKLSAgIFJFUV9TQ1JfVUxJTkUgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83M180Ij5NX1Njcm9sbFVwX0xpbmU8L0E+OwotICAgUkVRX1NDUl9ETElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc0XzQiPk1fU2Nyb2xsRG93bl9MaW5lPC9BPjsKLSAgIFJFUV9TQ1JfRFBBR0UgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83NV80Ij5NX1Njcm9sbERvd25fUGFnZTwvQT47Ci0gICBSRVFfU0NSX1VQQUdFICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNzZfNCI+TV9TY3JvbGxVcF9QYWdlPC9BPjsKLSAgIFJFUV9GSVJTVF9JVEVNICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83N180Ij5NX0ZpcnN0X0l0ZW08L0E+OwotICAgUkVRX0xBU1RfSVRFTSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc4XzQiPk1fTGFzdF9JdGVtPC9BPjsKLSAgIFJFUV9ORVhUX0lURU0gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83OV80Ij5NX05leHRfSXRlbTwvQT47Ci0gICBSRVFfUFJFVl9JVEVNICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfODBfNCI+TV9QcmV2aW91c19JdGVtPC9BPjsKLSAgIFJFUV9UT0dHTEVfSVRFTSAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl84MV80Ij5NX1RvZ2dsZV9JdGVtPC9BPjsKLSAgIFJFUV9DTEVBUl9QQVRURVJOIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl84Ml80Ij5NX0NsZWFyX1BhdHRlcm48L0E+OwotICAgUkVRX0JBQ0tfUEFUVEVSTiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzgzXzQiPk1fQmFja19QYXR0ZXJuPC9BPjsKLSAgIFJFUV9ORVhUX01BVENIICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl84NF80Ij5NX05leHRfTWF0Y2g8L0E+OwotICAgUkVRX1BSRVZfTUFUQ0ggICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzg1XzQiPk1fUHJldmlvdXNfTWF0Y2g8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRm9yIHRob3NlIHdobyBsaWtlIHRoZSBvbGQgJ0MnIG5hbWVzIGZvciB0aGUgcmVxdWVzdCBjb2RlczwvRU0+PC9zcGFuPgorICAgUkVRX0xFRlRfSVRFTSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY0XzQiPk1fTGVmdF9JdGVtPC9BPjsKKyAgIFJFUV9SSUdIVF9JVEVNICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NV80Ij5NX1JpZ2h0X0l0ZW08L0E+OworICAgUkVRX1VQX0lURU0gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY2XzQiPk1fVXBfSXRlbTwvQT47CisgICBSRVFfRE9XTl9JVEVNICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjdfNCI+TV9Eb3duX0l0ZW08L0E+OworICAgUkVRX1NDUl9VTElORSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY4XzQiPk1fU2Nyb2xsVXBfTGluZTwvQT47CisgICBSRVFfU0NSX0RMSU5FICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjlfNCI+TV9TY3JvbGxEb3duX0xpbmU8L0E+OworICAgUkVRX1NDUl9EUEFHRSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzcwXzQiPk1fU2Nyb2xsRG93bl9QYWdlPC9BPjsKKyAgIFJFUV9TQ1JfVVBBR0UgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83MV80Ij5NX1Njcm9sbFVwX1BhZ2U8L0E+OworICAgUkVRX0ZJUlNUX0lURU0gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzcyXzQiPk1fRmlyc3RfSXRlbTwvQT47CisgICBSRVFfTEFTVF9JVEVNICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNzNfNCI+TV9MYXN0X0l0ZW08L0E+OworICAgUkVRX05FWFRfSVRFTSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc0XzQiPk1fTmV4dF9JdGVtPC9BPjsKKyAgIFJFUV9QUkVWX0lURU0gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjBfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl83NV80Ij5NX1ByZXZpb3VzX0l0ZW08L0E+OworICAgUkVRX1RPR0dMRV9JVEVNICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc2XzQiPk1fVG9nZ2xlX0l0ZW08L0E+OworICAgUkVRX0NMRUFSX1BBVFRFUk4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc3XzQiPk1fQ2xlYXJfUGF0dGVybjwvQT47CisgICBSRVFfQkFDS19QQVRURVJOICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNzhfNCI+TV9CYWNrX1BhdHRlcm48L0E+OworICAgUkVRX05FWFRfTUFUQ0ggICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzc5XzQiPk1fTmV4dF9NYXRjaDwvQT47CisgICBSRVFfUFJFVl9NQVRDSCAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwXzEyIj5NZW51X1JlcXVlc3RfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfODBfNCI+TV9QcmV2aW91c19NYXRjaDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3XzE0Ij5SZXF1ZXN0X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDZfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3XzI4Ij5LZXk8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OF8yOCI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OV8xNCI+UmVxdWVzdF9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDFfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU5XzI4Ij5LZXk8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjBfMjgiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKIAotICAgPGI+ZnVuY3Rpb248L2I+ICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODZfMTMiPlJlcXVlc3RfTmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODZfMjciPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjVfMTIiPk1lbnVfUmVxdWVzdF9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmc7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjhfMTMiPlJlcXVlc3RfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OF8yNyI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MF8xMiI+TWVudV9SZXF1ZXN0X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBFeGNlcHRpb25zICAtLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEV4Y2VwdGlvbnMgIC0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl80Ij5NZW51X0V4Y2VwdGlvbjwvQT48L0ZPTlQ+IDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBNZW51IG9wdGlvbnM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMV80Ij5NZW51X0V4Y2VwdGlvbjwvQT48L3NwYW4+IDogPGI+ZXhjZXB0aW9uPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE1lbnUgb3B0aW9uczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgICAgIDxiPnJlY29yZDwvYj4KKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTdfMTAiPk9uZV9WYWx1ZWQ8L0E+PC9zcGFuPiAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOF8xMCI+U2hvd19EZXNjcmlwdGlvbnM8L0E+PC9zcGFuPiA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5XzEwIj5Sb3dfTWFqb3JfT3JkZXI8L0E+PC9zcGFuPiAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjBfMTAiPklnbm9yZV9DYXNlPC9BPjwvc3Bhbj4gICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMV8xMCI+U2hvd19NYXRjaGVzPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIyXzEwIj5Ob25fQ3ljbGljPC9BPjwvc3Bhbj4gICAgICAgIDogQm9vbGVhbjsKKyAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KTsKKworICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPiA8Yj51c2U8L2I+CisgICAgICA8Yj5yZWNvcmQ8L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTdfMTAiPk9uZV9WYWx1ZWQ8L0E+ICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNTdfNCI+T19PTkVWQUxVRV9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNThfNCI+T19PTkVWQUxVRV9MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExOF8xMCI+U2hvd19EZXNjcmlwdGlvbnM8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI1OV80Ij5PX1NIT1dERVNDX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI2MF80Ij5PX1NIT1dERVNDX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE5XzEwIj5Sb3dfTWFqb3JfT3JkZXI8L0E+ICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjYxXzQiPk9fUk9XTUFKT1JfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjYyXzQiPk9fUk9XTUFKT1JfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjBfMTAiPklnbm9yZV9DYXNlPC9BPiAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNjNfNCI+T19JR05PUkVDQVNFX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI2NF80Ij5PX0lHTk9SRUNBU0VfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfMTAiPlNob3dfTWF0Y2hlczwvQT4gICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNjVfNCI+T19TSE9XTUFUQ0hfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjY2XzQiPk9fU0hPV01BVENIX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIyXzEwIj5Ob25fQ3ljbGljPC9BPiAgICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjY3XzQiPk9fTk9OQ1lDTElDX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI2OF80Ij5PX05PTkNZQ0xJQ19MYXN0PC9BPjsKKyAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZik7Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgICAgIDxiPnJlY29yZDwvYj4KLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzEwIj5PbmVfVmFsdWVkPC9BPjwvRk9OVD4gICAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0XzEwIj5TaG93X0Rlc2NyaXB0aW9uczwvQT48L0ZPTlQ+IDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1XzEwIj5Sb3dfTWFqb3JfT3JkZXI8L0E+PC9GT05UPiAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2XzEwIj5JZ25vcmVfQ2FzZTwvQT48L0ZPTlQ+ICAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI3XzEwIj5TaG93X01hdGNoZXM8L0E+PC9GT05UPiAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4XzEwIj5Ob25fQ3ljbGljPC9BPjwvRk9OVD4gICAgICAgIDogQm9vbGVhbjsKLSAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIxXzkiPk1lbnVfT3B0aW9uX1NldDwvQT4pOwotCi0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyMV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+IDxiPnVzZTwvYj4KLSAgICAgIDxiPnJlY29yZDwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyM18xMCI+T25lX1ZhbHVlZDwvQT4gICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMCAuLiAgMDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyNF8xMCI+U2hvd19EZXNjcmlwdGlvbnM8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMSAuLiAgMTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyNV8xMCI+Um93X01ham9yX09yZGVyPC9BPiAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMiAuLiAgMjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyNl8xMCI+SWdub3JlX0Nhc2U8L0E+ICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMyAuLiAgMzsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyN18xMCI+U2hvd19NYXRjaGVzPC9BPiAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNCAuLiAgNDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzEyOF8xMCI+Tm9uX0N5Y2xpYzwvQT4gICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNSAuLiAgNTsKLSAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKLSAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIxXzkiPk1lbnVfT3B0aW9uX1NldDwvQT4nU2l6ZSA8Yj51c2U8L2I+IDMyOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBQbGVhc2Ugbm90ZTogdGhpcyByZXAuIGNsYXVzZSBpcyBnZW5lcmF0ZWQgYW5kIG1heSBiZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgZGlmZmVyZW50IG9uIHlvdXIgc3lzdGVtLjwvRU0+PC9GT05UPgorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNjlfNCI+TWVudV9PcHRpb25zX1NpemU8L0E+OwogICAgPGI+cHJhZ21hPC9iPiBXYXJuaW5ncyAoT24pOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwMDlfMTMiPkRlZmF1bHRfTWVudV9PcHRpb25zPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSW5pdGlhbCBkZWZhdWx0IG9wdGlvbnMgZm9yIGEgbWVudS48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNDZfMTMiPkRlZmF1bHRfTWVudV9PcHRpb25zPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSXRlbSBvcHRpb25zPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZik7Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1M185Ij5JdGVtX09wdGlvbl9TZXQ8L0E+PC9GT05UPiA8Yj5pczwvYj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84OTFfMTMiPkRlZmF1bHRfTWVudV9PcHRpb25zPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEluaXRpYWwgZGVmYXVsdCBvcHRpb25zIGZvciBhIG1lbnUuPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTQ1XzEzIj5EZWZhdWx0X01lbnVfT3B0aW9uczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSXRlbSBvcHRpb25zPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT48L3NwYW4+IDxiPmlzPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTVfMTAiPlNlbGVjdGFibGU8L0E+PC9GT05UPiAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1M18xMCI+U2VsZWN0YWJsZTwvQT48L3NwYW4+IDogQm9vbGVhbjsKICAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pOworICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDX1Bhc3NfQnlfQ29weSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pOwogCi0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1M185Ij5JdGVtX09wdGlvbl9TZXQ8L0E+IDxiPnVzZTwvYj4KKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4gPGI+dXNlPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTU1XzEwIj5TZWxlY3RhYmxlPC9BPiAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICAwIC4uICAwOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzEwIj5TZWxlY3RhYmxlPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNzNfNCI+T19TRUxFQ1RBQkxFX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNzRfNCI+T19TRUxFQ1RBQkxFX0xhc3Q8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTNfOSI+SXRlbV9PcHRpb25fU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gMzI7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFBsZWFzZSBub3RlOiB0aGlzIHJlcC4gY2xhdXNlIGlzIGdlbmVyYXRlZCBhbmQgbWF5IGJlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBkaWZmZXJlbnQgb24geW91ciBzeXN0ZW0uPC9FTT48L0ZPTlQ+CisgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOworICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTFfOSI+SXRlbV9PcHRpb25fU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNzVfNCI+SXRlbV9PcHRpb25zX1NpemU8L0E+OwogICAgPGI+cHJhZ21hPC9iPiBXYXJuaW5ncyAoT24pOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwMTVfMTMiPkRlZmF1bHRfSXRlbV9PcHRpb25zPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTNfOSI+SXRlbV9PcHRpb25fU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSW5pdGlhbCBkZWZhdWx0IG9wdGlvbnMgZm9yIGFuIGl0ZW0uPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTY4XzEzIj5EZWZhdWx0X0l0ZW1fT3B0aW9uczwvQT4pOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5N18xMyI+RGVmYXVsdF9JdGVtX09wdGlvbnM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1MV85Ij5JdGVtX09wdGlvbl9TZXQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW5pdGlhbCBkZWZhdWx0IG9wdGlvbnMgZm9yIGFuIGl0ZW0uPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTY2XzEzIj5EZWZhdWx0X0l0ZW1fT3B0aW9uczwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSXRlbSBBcnJheTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj50eXBlPC9iPiBJdGVtX0FycmF5IDxiPmlzPC9iPiA8Yj5hcnJheTwvYj4gKFBvc2l0aXZlIDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykgPGI+b2Y8L2I+IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSXRlbSBBcnJheTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPGI+dHlwZTwvYj4gSXRlbV9BcnJheSA8Yj5pczwvYj4gPGI+YXJyYXk8L2I+IChQb3NpdGl2ZSA8Yj5yYW5nZTwvYj4gJmx0OyZndDspIDxiPm9mPC9iPiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgSXRlbV9BcnJheSk7CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gSXRlbV9BcnJheTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzZfOSI+SXRlbV9BcnJheV9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiBJdGVtX0FycmF5OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85OTJfMTQiPkZyZWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk5Ml8yMCI+SUE8L0E+PC9GT05UPiAgICAgICAgIDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTkzXzIwIj5GcmVlX0l0ZW1zPC9BPjwvRk9OVD4gOiBCb29sZWFuIDo9IEZhbHNlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmVsZWFzZSB0aGUgbWVtb3J5IGZvciBhbiBhbGxvY2F0ZWQgaXRlbSBhcnJheTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJZiBGcmVlX0l0ZW1zIGlzIFRydWUsIGNhbGwgRGVsZXRlKCkgZm9yIGFsbCB0aGUgaXRlbXMgaW48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIGFycmF5LjwvRU0+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NzRfMTQiPkZyZWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3OF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODc0XzIwIj5JQTwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzZfOSI+SXRlbV9BcnJheV9BY2Nlc3M8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg3NV8yMCI+RnJlZV9JdGVtczwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZWxlYXNlIHRoZSBtZW1vcnkgZm9yIGFuIGFsbG9jYXRlZCBpdGVtIGFycmF5PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJZiBGcmVlX0l0ZW1zIGlzIFRydWUsIGNhbGwgRGVsZXRlKCkgZm9yIGFsbCB0aGUgaXRlbXMgaW48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoZSBhcnJheS48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX25ldy4zeC5odG1sIj5taXRlbV9uZXcuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX25ldy4zeC5odG1sIj5taXRlbV9uZXcuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NF8xMyI+Q3JlYXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NF8yMSI+TmFtZTwvQT48L0ZPTlQ+ICAgICAgICA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTJfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk1XzIxIj5EZXNjcmlwdGlvbjwvQT48L0ZPTlQ+IDogU3RyaW5nIDo9ICIiKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uZXcuM3guaHRtbCI+bmV3X2l0ZW0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IGlubGluZWQuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzZfMTMiPkNyZWF0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83Nl8yMSI+TmFtZTwvQT48L3NwYW4+ICAgICAgICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzdfMjEiPkRlc2NyaXB0aW9uPC9BPjwvc3Bhbj4gOiBTdHJpbmcgOj0gIiIpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uZXcuM3guaHRtbCI+bmV3X2l0ZW0oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE5vdCBpbmxpbmVkLjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiBOZXdfSXRlbSAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTdfMjMiPk5hbWU8L0E+PC9GT05UPiAgICAgICAgOiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOThfMjMiPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gOiBTdHJpbmcgOj0gIiIpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4KLSAgICAgPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTkxXzEzIj5DcmVhdGU8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uZXcuM3guaHRtbCI+bmV3X2l0ZW0oKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiBOZXdfSXRlbSAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NV8yMyI+TmFtZTwvQT48L3NwYW4+ICAgICAgICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2XzIzIj5EZXNjcmlwdGlvbjwvQT48L3NwYW4+IDogU3RyaW5nIDo9ICIiKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+CisgICAgIDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE4OV8xMyI+Q3JlYXRlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX25ldy4zeC5odG1sIj5uZXdfaXRlbSgpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEyNF8xNCI+RGVsZXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMjRfMjIiPkl0bTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uZXcuM3guaHRtbCI+ZnJlZV9pdGVtKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJlc2V0cyBJdG0gdG8gTnVsbF9JdGVtPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwNl8xNCI+RGVsZXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDFfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzEwNl8yMiI+SXRtPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uZXcuM3guaHRtbCI+ZnJlZV9pdGVtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZXNldHMgSXRtIHRvIE51bGxfSXRlbTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdmFsdWUuM3guaHRtbCI+bWl0ZW1fdmFsdWUuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwiPm1pdGVtX3ZhbHVlLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE1Ml8xNCI+U2V0X1ZhbHVlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjEyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNTJfMjUiPkl0bTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxM18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTUzXzI1Ij5WYWx1ZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwiPnNldF9pdGVtX3ZhbHVlKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjEyXzE0Ij5TZXRfVmFsdWU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTMwXzE0Ij5TZXRfVmFsdWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTMwXzI1Ij5JdG08L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjExXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xMzFfMjUiPlZhbHVlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdmFsdWUuM3guaHRtbCI+c2V0X2l0ZW1fdmFsdWUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTBfMTQiPlNldF9WYWx1ZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTY2XzEzIj5WYWx1ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTY2XzIwIj5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwiPml0ZW1fdmFsdWUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMThfMTMiPlZhbHVlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTQxXzEzIj5WYWx1ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE2XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNDFfMjAiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwiPml0ZW1fdmFsdWUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMTZfMTMiPlZhbHVlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9taXRlbV92aXNpYmxlLjN4Lmh0bWwiPm1pdGVtX3Zpc2libGUuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX3Zpc2libGUuM3guaHRtbCI+bWl0ZW1fdmlzaWJsZS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE3OV8xMyI+VmlzaWJsZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyN18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTc5XzIyIj5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX3Zpc2libGUuM3guaHRtbCI+aXRlbV92aXNpYmxlKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjI3XzEzIj5WaXNpYmxlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTU0XzEzIj5WaXNpYmxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE1NF8yMiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fdmlzaWJsZS4zeC5odG1sIj5pdGVtX3Zpc2libGUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yMjVfMTMiPlZpc2libGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIj5taXRlbV9vcHRzLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5MV8xNCI+U2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE5MV8yNyI+SXRtPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzN18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTkyXzI3Ij5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUzXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9vcHRzLjN4Lmh0bWwiPnNldF9pdGVtX29wdHMoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCBTZXRfT3B0aW9ucyBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTY2XzE0Ij5TZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjZfMjciPkl0bTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNjdfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1MV85Ij5JdGVtX09wdGlvbl9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+c2V0X2l0ZW1fb3B0cygpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCBTZXRfT3B0aW9ucyBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMDdfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMDdfMzAiPkl0bTwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIwOF8zMCI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1M185Ij5JdGVtX09wdGlvbl9TZXQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjA5XzMwIj5PbjwvQT48L0ZPTlQ+ICAgICAgOiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9vcHRzLjN4Lmh0bWwiPml0ZW1fb3B0c19vbigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGl0ZW1fb3B0c19vZmYoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBbiBvdmVybG9hZGVkIFN3aXRjaF9PcHRpb25zIGlzIGRlZmluZWQgbGF0ZXIuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xNzdfMTQiPlN3aXRjaF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE3N18zMCI+SXRtPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDFfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE3OF8zMCI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzE3OV8zMCI+T248L0E+PC9zcGFuPiAgICAgIDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+aXRlbV9vcHRzX29uKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGl0ZW1fb3B0c19vZmYoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCBTd2l0Y2hfT3B0aW9ucyBpcyBkZWZpbmVkIGxhdGVyLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgUHJhZ21hIElubGluZSBhcHBlYXJzIHRoZXJlPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjMxXzE0Ij5HZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjMxXzI3Ij5JdG08L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjMyXzI3Ij5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE1M185Ij5JdGVtX09wdGlvbl9TZXQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIj5pdGVtX29wdHMoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMTk2XzE0Ij5HZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xOTZfMjciPkl0bTwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8xOTdfMjciPk9wdGlvbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTUxXzkiPkl0ZW1fT3B0aW9uX1NldDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIj5pdGVtX29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNDJfMTMiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNDJfMjYiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjJfNCI+TnVsbF9JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTNfOSI+SXRlbV9PcHRpb25fU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIj5pdGVtX29wdHMoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQW4gb3ZlcmxvYWRlZCBHZXRfT3B0aW9ucyBpcyBkZWZpbmVkIGxhdGVyLiBQcmFnbWEgSW5saW5lIGFwcGVhcnMgdGhlcmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjA2XzEzIj5HZXRfT3B0aW9uczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMDZfMjYiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfNCI+TnVsbF9JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNTFfOSI+SXRlbV9PcHRpb25fU2V0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX29wdHMuM3guaHRtbCI+aXRlbV9vcHRzKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBbiBvdmVybG9hZGVkIEdldF9PcHRpb25zIGlzIGRlZmluZWQgbGF0ZXIuIFByYWdtYSBJbmxpbmUgYXBwZWFycyB0aGVyZTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmFtZS4zeC5odG1sIj5taXRlbV9uYW1lLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwiPm1pdGVtX25hbWUuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI1MF8xNCI+TmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjUwXzIwIj5JdG08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI1MV8yMCI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwiPml0ZW1fbmFtZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+ICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjU5XzEzIj5OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY4XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTlfMTkiPkl0bTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwiPml0ZW1fbmFtZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbXBsZW1lbnRlZCBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjE0XzE0Ij5OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIxNF8yMCI+SXRtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2NF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjE1XzIwIj5OYW1lPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwiPml0ZW1fbmFtZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+ICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yMjNfMTMiPk5hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjIzXzE5Ij5JdG08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX25hbWUuM3guaHRtbCI+aXRlbV9uYW1lKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJbXBsZW1lbnRlZCBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKE5hbWUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNjdfMTQiPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNjdfMjciPkl0bTwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTZfOSI+SXRlbTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNjhfMjciPkRlc2NyaXB0aW9uPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX25hbWUuM3guaHRtbCI+aXRlbV9kZXNjcmlwdGlvbigpOzwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIzMV8xNCI+RGVzY3JpcHRpb248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjMxXzI3Ij5JdG08L0E+PC9zcGFuPiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzIzMl8yNyI+RGVzY3JpcHRpb248L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX25hbWUuM3guaHRtbCI+aXRlbV9kZXNjcmlwdGlvbigpOzwvQT48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+ICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjc2XzEzIj5EZXNjcmlwdGlvbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3OF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjc2XzI2Ij5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fbmFtZS4zeC5odG1sIj5pdGVtX2Rlc2NyaXB0aW9uKCk7PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbXBsZW1lbnRlZCBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+ICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNDBfMTMiPkRlc2NyaXB0aW9uPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI0MF8yNiI+SXRtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmc7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwiPml0ZW1fZGVzY3JpcHRpb24oKTs8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJbXBsZW1lbnRlZCBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKERlc2NyaXB0aW9uKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCI+bWl0ZW1fY3VycmVudC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5taXRlbV9jdXJyZW50LjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODRfMTQiPlNldF9DdXJyZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODRfMjciPk1lbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI4OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjg1XzI3Ij5JdG08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCI+c2V0X2N1cnJlbnRfaXRlbSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI4OF8xNCI+U2V0X0N1cnJlbnQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI0OF8xNCI+U2V0X0N1cnJlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjQ4XzI3Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjg3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNDlfMjciPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5zZXRfY3VycmVudF9pdGVtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMjg2XzE0Ij5TZXRfQ3VycmVudDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI5OF8xMyI+Q3VycmVudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5NF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjk4XzIyIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwiPmN1cnJlbnRfaXRlbSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5NF8xMyI+Q3VycmVudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNTlfMTMiPkN1cnJlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5Ml8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMjU5XzIyIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5jdXJyZW50X2l0ZW0oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTJfMTMiPkN1cnJlbnQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzExXzE0Ij5TZXRfVG9wX1JvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzExXzI3Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzAwXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMTJfMjciPkxpbmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCI+c2V0X3RvcF9yb3coKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8yOTlfMTQiPlNldF9Ub3BfUm93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yNzJfMTQiPlNldF9Ub3BfUm93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3Ml8yNyI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOThfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI3M18yNyI+TGluZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj5zZXRfdG9wX3JvdygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzI5N18xNCI+U2V0X1RvcF9Sb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzA1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMjVfMTMiPlRvcF9Sb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMyNV8yMiI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sIj50b3Bfcm93KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzA1XzEzIj5Ub3BfUm93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzI4M18xMyI+VG9wX1JvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yODNfMjIiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwiPnRvcF9yb3coKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDNfMTMiPlRvcF9Sb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzEwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMzhfMTMiPkdldF9JbmRleDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxMF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzM4XzI0Ij5JdG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+KSA8Yj5yZXR1cm48L2I+IFBvc2l0aXZlOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwiPml0ZW1faW5kZXgoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGlzIGJpbmRpbmcgd2Ugc3RhcnQgdGhlIG51bWJlcmluZyBvZiBpdGVtczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB3aXRoIDEuIFNvIHRoaXMgaXMgbnVtYmVyIGlzIG9uZSBtb3JlIHRoYW4geW91IGdldCBmcm9tIHRoZSBsb3c8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgbGV2ZWwgY2FsbC48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMTBfMTMiPkdldF9JbmRleDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yOTZfMTMiPkdldF9JbmRleDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA4XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8yOTZfMjQiPkl0bTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTFfOSI+SXRlbTwvQT4pIDxiPnJldHVybjwvYj4gUG9zaXRpdmU7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwiPml0ZW1faW5kZXgoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFBsZWFzZSBub3RlIHRoYXQgaW4gdGhpcyBiaW5kaW5nIHdlIHN0YXJ0IHRoZSBudW1iZXJpbmcgb2YgaXRlbXM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHdpdGggMS4gU28gdGhpcyBpcyBudW1iZXIgaXMgb25lIG1vcmUgdGhhbiB5b3UgZ2V0IGZyb20gdGhlIGxvdzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgbGV2ZWwgY2FsbC48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMDhfMTMiPkdldF9JbmRleDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9wb3N0LjN4Lmh0bWwiPm1lbnVfcG9zdC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9wb3N0LjN4Lmh0bWwiPm1lbnVfcG9zdC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzUxXzE0Ij5Qb3N0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzIyXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNTFfMjAiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyM18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzUyXzIwIj5Qb3N0PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9wb3N0LjN4Lmh0bWwiPnBvc3RfbWVudSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHVucG9zdF9tZW51KCk8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zMjJfMTQiPlBvc3Q8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMwOV8xNCI+UG9zdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzIwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMDlfMjAiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMxMF8yMCI+UG9zdDwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfcG9zdC4zeC5odG1sIj5wb3N0X21lbnUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogdW5wb3N0X21lbnUoKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzMyMF8xNCI+UG9zdDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzcxXzE0Ij5TZXRfT3B0aW9uczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzM18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzcxXzI3Ij5NZW48L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzM0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzJfMjciPk9wdGlvbnM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5zZXRfbWVudV9vcHRzKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzMxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zMjVfMTQiPlNldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMyNV8yNyI+TWVuPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMyNl8yNyI+T3B0aW9uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTE1XzkiPk1lbnVfT3B0aW9uX1NldDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPnNldF9tZW51X29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfT3B0aW9ucyk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM4N18xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzlfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM4N18zMCI+TWVuPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzg4XzMwIj5PcHRpb25zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTIxXzkiPk1lbnVfT3B0aW9uX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzQxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zODlfMzAiPk9uPC9BPjwvRk9OVD4gICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHNfb24oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtZW51X29wdHNfb2ZmKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzMzNl8xNCI+U3dpdGNoX09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzN18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzM2XzMwIj5NZW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzOF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzM3XzMwIj5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMTVfOSI+TWVudV9PcHRpb25fU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzOV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzM4XzMwIj5PbjwvQT48L3NwYW4+ICAgICAgOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0c19vbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtZW51X29wdHNfb2ZmKCk8L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTd2l0Y2hfT3B0aW9ucyk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxMV8xNCI+R2V0X09wdGlvbnM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxMV8yNyI+TWVuPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDhfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxMl8zMiI+T3B0aW9uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM1NV8xNCI+R2V0X09wdGlvbnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0NV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzU1XzI3Ij5NZW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzU2XzI3Ij5PcHRpb25zPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzUyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MjJfMTMiPkdldF9PcHRpb25zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzUyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MjJfMjYiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjNfNCI+TnVsbF9NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xMjFfOSI+TWVudV9PcHRpb25fU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cygpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzUwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNjVfMTMiPkdldF9PcHRpb25zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM2NV8yNiI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX01lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzExNV85Ij5NZW51X09wdGlvbl9TZXQ8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cygpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEdldF9PcHRpb25zKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfd2luLjN4Lmh0bWwiPm1lbnVfd2luLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X3dpbi4zeC5odG1sIj5tZW51X3dpbi4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDMwXzE0Ij5TZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzYxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzBfMjYiPk1lbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzYyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MzFfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3dpbi4zeC5odG1sIj5zZXRfbWVudV93aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjFfMTQiPlNldF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM3M18xNCI+U2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zNzNfMjYiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzc0XzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV93aW4uM3guaHRtbCI+c2V0X21lbnVfd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzU5XzE0Ij5TZXRfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQ0XzEzIj5HZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzY3XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NDRfMjUiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV93aW4uM3guaHRtbCI+bWVudV93aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjdfMTMiPkdldF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzg0XzEzIj5HZXRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjVfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM4NF8yNSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV93aW4uM3guaHRtbCI+bWVudV93aW4oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNjVfMTMiPkdldF9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU0XzE0Ij5TZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU0XzMwIj5NZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ1NV8zMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfd2luLjN4Lmh0bWwiPnNldF9tZW51X3N1YigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzM3Ml8xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzM5NF8xNCI+U2V0X1N1Yl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfMzk0XzMwIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzcxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl8zOTVfMzAiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3dpbi4zeC5odG1sIj5zZXRfbWVudV9zdWIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzBfMTQiPlNldF9TdWJfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDY4XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDY4XzI5Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfd2luLjN4Lmh0bWwiPm1lbnVfc3ViKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzc4XzEzIj5HZXRfU3ViX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MDVfMTMiPkdldF9TdWJfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQwNV8yOSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV93aW4uM3guaHRtbCI+bWVudV9zdWIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zNzZfMTMiPkdldF9TdWJfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3OF8xNCI+U2NhbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3OF8yMSI+TWVuPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4NF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDc5XzIxIj5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ4MF8yMSI+Q29sdW1uczwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfd2luLjN4Lmh0bWwiPnNjYWxlX21lbnUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zODNfMTQiPlNjYWxlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzgxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80MTVfMTQiPlNjYWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODFfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxNV8yMSI+TWVuPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODJfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxNl8yMSI+TGluZXM8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQxN18yMSI+Q29sdW1uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3dpbi4zeC5odG1sIj5zY2FsZV9tZW51KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzgxXzE0Ij5TY2FsZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9jdXJzb3IuM3guaHRtbCI+bWVudV9jdXJzb3IuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfY3Vyc29yLjN4Lmh0bWwiPm1lbnVfY3Vyc29yLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80OTdfMTQiPlBvc2l0aW9uX0N1cnNvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5NF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDk3XzMxIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9jdXJzb3IuM3guaHRtbCI+cG9zX21lbnVfY3Vyc29yKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMzk0XzE0Ij5Qb3NpdGlvbl9DdXJzb3I8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQzMV8xNCI+UG9zaXRpb25fQ3Vyc29yPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTJfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQzMV8zMSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2N1cnNvci4zeC5odG1sIj5wb3NfbWVudV9jdXJzb3IoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8zOTJfMTQiPlBvc2l0aW9uX0N1cnNvcjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyay4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyay4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTEwXzE0Ij5TZXRfTWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwM18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTEwXzI0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTFfMjQiPk1hcms8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X21hcmsuM3guaHRtbCI+c2V0X21lbnVfbWFyaygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQwM18xNCI+U2V0X01hcms8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ0MV8xNCI+U2V0X01hcms8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQxXzI0Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwMl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDQyXzI0Ij5NYXJrPC9BPjwvc3Bhbj4gOiBTdHJpbmcpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9tYXJrLjN4Lmh0bWwiPnNldF9tZW51X21hcmsoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80MDFfMTQiPlNldF9NYXJrPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyOV8xNCI+TWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwOV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTI5XzIwIj5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDEwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MzBfMjAiPk1hcms8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyaygpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU2XzE0Ij5NYXJrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ1Nl8yMCI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDU3XzIwIj5NYXJrPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X21hcmsuM3guaHRtbCI+bWVudV9tYXJrKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzOF8xMyI+TWFyazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxM18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTM4XzE5Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyaygpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbXBsZW1lbnRlZCBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+ICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDExXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NjVfMTMiPk1hcms8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxMV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDY1XzE5Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfbWFyay4zeC5odG1sIj5tZW51X21hcmsoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEltcGxlbWVudGVkIGFzIGZ1bmN0aW9uPC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoTWFyayk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9hdHRyaWJ1dGVzLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9hdHRyaWJ1dGVzLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDIzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NDdfMTQiPlNldF9Gb3JlZ3JvdW5kPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDI0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU0OF83Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTQ5XzciPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDI2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU1MF83Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X21lbnVfZm9yZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyM18xNCI+U2V0X0ZvcmVncm91bmQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3NF8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NzVfNyI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80NzZfNyI+Rm9yZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg1XzQiPk5vcm1hbF9WaWRlbzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ3N183Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X21lbnVfZm9yZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQyMV8xNCI+U2V0X0ZvcmVncm91bmQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTY2XzE0Ij5Gb3JlZ3JvdW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjZfMjYiPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjdfMjYiPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9mb3JlKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl80OTBfMTQiPkZvcmVncm91bmQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDkwXzI2Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDkxXzI2Ij5Gb3JlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2ZvcmUoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTc1XzE0Ij5Gb3JlZ3JvdW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzVfMjYiPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzZfMjYiPkZvcmU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU3N18yNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9hdHRyaWJ1dGVzLjN4Lmh0bWwiPm1lbnVfZm9yZSgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNDk5XzE0Ij5Gb3JlZ3JvdW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzQ5OV8yNiI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUwMF8yNiI+Rm9yZTwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDM2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MDFfMjYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9mb3JlKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoRm9yZWdyb3VuZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4Nl8xNCI+U2V0X0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTg3XzciPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81ODhfNyI+QmFjazwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTg5XzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5zZXRfbWVudV9iYWNrKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTBfMTQiPlNldF9CYWNrZ3JvdW5kPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTExXzciPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTEyXzciPkJhY2s8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MTNfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9hdHRyaWJ1dGVzLjN4Lmh0bWwiPnNldF9tZW51X2JhY2soKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChTZXRfQmFja2dyb3VuZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwNV8xNCI+QmFja2dyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjA1XzI2Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDUyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDZfMjYiPkJhY2s8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2JhY2soKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNiIjMnw8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyNl8xNCI+QmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MjZfMjYiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUyN18yNiI+QmFjazwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2JhY2soKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzYiIzJ8PC9FTT48L3NwYW4+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYxNF8xNCI+QmFja2dyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE0XzI2Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE1XzI2Ij5CYWNrPC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MTZfMjYiPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2JhY2soKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTM1XzE0Ij5CYWNrZ3JvdW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzNV8yNiI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzUzNl8yNiI+QmFjazwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81MzdfMjYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9iYWNrKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoQmFja2dyb3VuZCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyNV8xNCI+U2V0X0dyZXk8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjI1XzI0Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjI2XzI0Ij5HcmV5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MjdfMjQiPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5zZXRfbWVudV9ncmV5KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDYzXzE0Ij5TZXRfR3JleTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTQ2XzE0Ij5TZXRfR3JleTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDYyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU0Nl8yNCI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NDdfMjQiPkdyZXk8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NDhfMjQiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5zZXRfbWVudV9ncmV5KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDYxXzE0Ij5TZXRfR3JleTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NDRfMTQiPkdyZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY0NF8yMCI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3Ml8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjQ1XzIwIj5HcmV5PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9ncmV5KCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDY5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjJfMTQiPkdyZXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTYyXzIwIj5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDcwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NjNfMjAiPkdyZXk8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9ncmV5KCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zOSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY1M18xNCI+R3JleTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NTNfMjAiPk1lbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjU0XzIwIj5HcmV5PC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjU1XzIwIj5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9ncmV5KCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDc0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzFfMTQiPkdyZXk8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzFfMjAiPk1lbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTcyXzIwIj5HcmV5PC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81NzNfMjAiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9ncmV5KCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoR3JleSk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY2NF8xNCI+U2V0X1BhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODRfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY2NF8zMyI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDg1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NjVfMzMiPlBhZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IENoYXJhY3RlciA6PSBTcGFjZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5zZXRfbWVudV9wYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80ODRfMTQiPlNldF9QYWRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDgyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81ODJfMTQiPlNldF9QYWRfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODJfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU4Ml8zMyI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4M18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTgzXzMzIj5QYWQ8L0E+PC9zcGFuPiA6IENoYXJhY3RlciA6PSBTcGFjZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+c2V0X21lbnVfcGFkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDgyXzE0Ij5TZXRfUGFkX0NoYXJhY3RlcjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDkwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NzlfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3OV8yOSI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDkxXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82ODBfMjkiPlBhZDwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBDaGFyYWN0ZXIpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9wYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80OTBfMTQiPlBhZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzU5M18xNCI+UGFkX0NoYXJhY3RlcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg4XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl81OTNfMjkiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNTk0XzI5Ij5QYWQ8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQ2hhcmFjdGVyKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X3BhZCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ4OF8xNCI+UGFkX0NoYXJhY3RlcjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9zcGFjaW5nLjN4Lmh0bWwiPm1lbnVfc3BhY2luZy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9zcGFjaW5nLjN4Lmh0bWwiPm1lbnVfc3BhY2luZy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjg4XzE0Ij5TZXRfU3BhY2luZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwMF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjg4XzI3Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjg5XzI3Ij5EZXNjcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gOj0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY5MF8yNyI+Um93PC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAgIDo9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTAzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82OTFfMjciPkNvbDwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiA6PSAwKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9zcGFjaW5nLjN4Lmh0bWwiPnNldF9tZW51X3NwYWNpbmcoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDBfMTQiPlNldF9TcGFjaW5nPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDJfMTQiPlNldF9TcGFjaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OThfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwMl8yNyI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDk5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MDNfMjciPkRlc2NyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDo9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYwNF8yNyI+Um93PC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+ICAgOj0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjA1XzI3Ij5Db2w8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiA6PSAwKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfc3BhY2luZy4zeC5odG1sIj5zZXRfbWVudV9zcGFjaW5nKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNDk4XzE0Ij5TZXRfU3BhY2luZzwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDdfMTQiPlNwYWNpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDhfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcwN18yMyI+TWVuPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwOV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzA4XzIzIj5EZXNjcjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTEwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDlfMjMiPlJvdzwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTExXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTBfMjMiPkNvbDwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3NwYWNpbmcuM3guaHRtbCI+bWVudV9zcGFjaW5nKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTA4XzE0Ij5TcGFjaW5nPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTA2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MThfMTQiPlNwYWNpbmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwNl8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE4XzIzIj5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjE5XzIzIj5EZXNjcjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDhfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYyMF8yMyI+Um93PC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwOV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjIxXzIzIj5Db2w8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfc3BhY2luZy4zeC5odG1sIj5tZW51X3NwYWNpbmcoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MDZfMTQiPlNwYWNpbmc8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfcGF0dGVybi4zeC5odG1sIj5tZW51X3BhdHRlcm4uM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfcGF0dGVybi4zeC5odG1sIj5tZW51X3BhdHRlcm4uM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzMyXzEzIj5TZXRfUGF0dGVybjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzMyXzI2Ij5NZW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzMzXzI2Ij5UZXh0PC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9wYXR0ZXJuLjN4Lmh0bWwiPnNldF9tZW51X3BhdHRlcm4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmV0dXJuIFRSVUUgaWYgdGhlIHBhdHRlcm4gbWF0Y2hlcywgRkFMU0Ugb3RoZXJ3aXNlPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTIwXzEzIj5TZXRfUGF0dGVybjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTE4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82MzlfMTMiPlNldF9QYXR0ZXJuPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzYzOV8yNiI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjQwXzI2Ij5UZXh0PC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfcGF0dGVybi4zeC5odG1sIj5zZXRfbWVudV9wYXR0ZXJuKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZXR1cm4gVFJVRSBpZiB0aGUgcGF0dGVybiBtYXRjaGVzLCBGQUxTRSBvdGhlcndpc2U8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MThfMTMiPlNldF9QYXR0ZXJuPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc1NV8xNCI+UGF0dGVybjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzU1XzIzIj5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTI4XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NTZfMjMiPlRleHQ8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9wYXR0ZXJuLjN4Lmh0bWwiPm1lbnVfcGF0dGVybigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyN18xNCI+UGF0dGVybjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjYyXzE0Ij5QYXR0ZXJuPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjVfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY2Ml8yMyI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyNl8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjYzXzIzIj5UZXh0PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X3BhdHRlcm4uM3guaHRtbCI+bWVudV9wYXR0ZXJuKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTI1XzE0Ij5QYXR0ZXJuPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X2Zvcm1hdC4zeC5odG1sIj5tZW51X2Zvcm1hdC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9mb3JtYXQuM3guaHRtbCI+bWVudV9mb3JtYXQuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2NF8xNCI+U2V0X0Zvcm1hdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzY0XzI2Ij5NZW48L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc2NV8yNiI+TGluZXM8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzY2XzI2Ij5Db2x1bW5zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6IDAgYXJndW1lbnQgZm9yIExpbmVzIG9yIENvbHVtbnM7PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGluc3RlYWQgdXNlIEZvcm1hdCB0byBnZXQgdGhlIGN1cnJlbnQgc2l6ZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgIFRoZSAgZGVmYXVsdCAgZm9ybWF0ICBpcyAgMTYgIHJvd3MsICAxICBjb2x1bW4uICAgIENhbGxpbmc8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgIHNldF9tZW51X2Zvcm1hdCAgd2l0aCBhIG51bGwgbWVudSBwb2ludGVyIHdpbGwgY2hhbmdlIHRoaXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgIGRlZmF1bHQuICBBIHplcm8gcm93IG9yIGNvbHVtbiBhcmd1bWVudCB0byBzZXRfbWVudV9mb3JtYXQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgIGlzICBpbnRlcnByZXRlZCAgYXMgIGEgIHJlcXVlc3QgIG5vdCB0byBjaGFuZ2UgdGhlIGN1cnJlbnQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgIHZhbHVlLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2Zvcm1hdC4zeC5odG1sIj5zZXRfbWVudV9mb3JtYXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MzdfMTQiPlNldF9Gb3JtYXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3MV8xNCI+U2V0X0Zvcm1hdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82NzFfMjYiPk1lbjwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3Ml8yNiI+TGluZXM8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY3M18yNiI+Q29sdW1uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IGltcGxlbWVudGVkOiAwIGFyZ3VtZW50IGZvciBMaW5lcyBvciBDb2x1bW5zOzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaW5zdGVhZCB1c2UgRm9ybWF0IHRvIGdldCB0aGUgY3VycmVudCBzaXplczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgIFRoZSAgZGVmYXVsdCAgZm9ybWF0ICBpcyAgMTYgIHJvd3MsICAxICBjb2x1bW4uICAgIENhbGxpbmc8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICBzZXRfbWVudV9mb3JtYXQgIHdpdGggYSBudWxsIG1lbnUgcG9pbnRlciB3aWxsIGNoYW5nZSB0aGlzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgZGVmYXVsdC4gIEEgemVybyByb3cgb3IgY29sdW1uIGFyZ3VtZW50IHRvIHNldF9tZW51X2Zvcm1hdDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgIGlzICBpbnRlcnByZXRlZCAgYXMgIGEgIHJlcXVlc3QgIG5vdCB0byBjaGFuZ2UgdGhlIGN1cnJlbnQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICB2YWx1ZS48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfZm9ybWF0LjN4Lmh0bWwiPnNldF9tZW51X2Zvcm1hdCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUzNV8xNCI+U2V0X0Zvcm1hdDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83ODJfMTQiPkZvcm1hdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzgyXzIyIj5NZW48L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc4M18yMiI+TGluZXM8L0E+PC9GT05UPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1M18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzg0XzIyIj5Db2x1bW5zPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9mb3JtYXQuM3guaHRtbCI+bWVudV9mb3JtYXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTFfMTQiPkZvcm1hdDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjg3XzE0Ij5Gb3JtYXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0OV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNjg3XzIyIj5NZW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzY4OF8yMiI+TGluZXM8L0E+PC9zcGFuPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTUxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl82ODlfMjIiPkNvbHVtbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9mb3JtYXQuM3guaHRtbCI+bWVudV9mb3JtYXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NDlfMTQiPkZvcm1hdDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaG9vay4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaG9vay4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+cHJvY2VkdXJlPC9iPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjFfNDkiPk1lbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KTsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5wcm9jZWR1cmU8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTU5XzQ5Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KTsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTU5XzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTY1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MDJfMTQiPlNldF9JdGVtX0luaXRfSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2NV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODAyXzM0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2Nl8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODAzXzM0Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+c2V0X2l0ZW1faW5pdCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2NV8xNCI+U2V0X0l0ZW1fSW5pdF9Ib29rPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTYzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDNfMTQiPlNldF9JdGVtX0luaXRfSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTYzXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MDNfMzQiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2NF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzA0XzM0Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+c2V0X2l0ZW1faW5pdCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2M18xNCI+U2V0X0l0ZW1fSW5pdF9Ib29rPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80OSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgxNl8xNCI+U2V0X0l0ZW1fVGVybV9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTcxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MTZfMzQiPk1lbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTcyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MTdfMzQiPlByb2M8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaG9vay4zeC5odG1sIj5zZXRfaXRlbV90ZXJtKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTcxXzE0Ij5TZXRfSXRlbV9UZXJtX0hvb2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxNF8xNCI+U2V0X0l0ZW1fVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcxNF8zNCI+TWVuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcwXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MTVfMzQiPlByb2M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaG9vay4zeC5odG1sIj5zZXRfaXRlbV90ZXJtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTY5XzE0Ij5TZXRfSXRlbV9UZXJtX0hvb2s8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODMwXzE0Ij5TZXRfTWVudV9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzdfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgzMF8zNCI+TWVuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NzhfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgzMV8zNCI+UHJvYzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPnNldF9tZW51X2luaXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzdfMTQiPlNldF9NZW51X0luaXRfSG9vazwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzI1XzE0Ij5TZXRfTWVudV9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3NV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzI1XzM0Ij5NZW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzZfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzcyNl8zNCI+UHJvYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTU5XzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPnNldF9tZW51X2luaXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NzVfMTQiPlNldF9NZW51X0luaXRfSG9vazwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTgzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NDRfMTQiPlNldF9NZW51X1Rlcm1fSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4M18zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODQ0XzM0Ij5NZW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4NF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODQ1XzM0Ij5Qcm9jPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+c2V0X21lbnVfdGVybSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4M18xNCI+U2V0X01lbnVfVGVybV9Ib29rPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTgxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MzZfMTQiPlNldF9NZW51X1Rlcm1fSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTgxXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83MzZfMzQiPk1lbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4Ml8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzM3XzM0Ij5Qcm9jPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+c2V0X21lbnVfdGVybSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4MV8xNCI+U2V0X01lbnVfVGVybV9Ib29rPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODU4XzEzIj5HZXRfSXRlbV9Jbml0X0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODlfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1OF8zMyI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPml0ZW1faW5pdCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU4OV8xMyI+R2V0X0l0ZW1fSW5pdF9Ib29rPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc0N18xMyI+R2V0X0l0ZW1fSW5pdF9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODdfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc0N18zMyI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaG9vay4zeC5odG1sIj5pdGVtX2luaXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81ODdfMTMiPkdldF9JdGVtX0luaXRfSG9vazwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg2Nl8xMyI+R2V0X0l0ZW1fVGVybV9Ib29rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk0XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NjZfMzMiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTYxXzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaG9vay4zeC5odG1sIj5pdGVtX3Rlcm0oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OTRfMTMiPkdldF9JdGVtX1Rlcm1fSG9vazwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NTVfMTMiPkdldF9JdGVtX1Rlcm1fSG9vazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkyXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83NTVfMzMiPk1lbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTU5XzkiPk1lbnVfSG9va19GdW5jdGlvbjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+aXRlbV90ZXJtKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTkyXzEzIj5HZXRfSXRlbV9UZXJtX0hvb2s8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NzRfMTMiPkdldF9NZW51X0luaXRfSG9vazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5OV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODc0XzMzIj5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2MV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2hvb2suM3guaHRtbCI+bWVudV9pbml0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTk5XzEzIj5HZXRfTWVudV9Jbml0X0hvb2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzYzXzEzIj5HZXRfTWVudV9Jbml0X0hvb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5N18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzYzXzMzIj5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU1OV85Ij5NZW51X0hvb2tfRnVuY3Rpb248L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaW5pdCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU5N18xMyI+R2V0X01lbnVfSW5pdF9Ib29rPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwNF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODgyXzEzIj5HZXRfTWVudV9UZXJtX0hvb2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDRfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg4Ml8zMyI+TWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NjFfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfdGVybSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYwNF8xMyI+R2V0X01lbnVfVGVybV9Ib29rPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3MV8xMyI+R2V0X01lbnVfVGVybV9Ib29rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDJfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3MV8zMyI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81NTlfOSI+TWVudV9Ib29rX0Z1bmN0aW9uPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaG9vay4zeC5odG1sIj5tZW51X3Rlcm0oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MDJfMTMiPkdldF9NZW51X1Rlcm1fSG9vazwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X2l0ZW1zLjN4Lmh0bWwiPm1lbnVfaXRlbXMuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5MF8xNCI+UmVkZWZpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTNfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5MF8yNCI+TWVuPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTRfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg5MV8yNCI+SXRlbXM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzhfOSI+SXRlbV9BcnJheV9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5zZXRfbWVudV9pdGVtcygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxM18xNCI+UmVkZWZpbmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc3OV8xNCI+UmVkZWZpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzc5XzI0Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzc4MF8yNCI+SXRlbXM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzE3Nl85Ij5JdGVtX0FycmF5X0FjY2VzczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5zZXRfbWVudV9pdGVtcygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYxMV8xNCI+UmVkZWZpbmU8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxOF8xNCI+U2V0X0l0ZW1zPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjE4XzI1Ij5NZW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTlfMjUiPkl0ZW1zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjEzXzE0Ij5SZWRlZmluZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHByYWdtYSBJbmxpbmUgKFNldF9JdGVtcyk7PC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTZfMTQiPlNldF9JdGVtczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE2XzI1Ij5NZW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE3XzI1Ij5JdGVtczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc2XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjExXzE0Ij5SZWRlZmluZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBwcmFnbWEgSW5saW5lIChTZXRfSXRlbXMpOzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkxOF8xMyI+SXRlbXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkxOF8yMCI+TWVuPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85MTlfMjAiPkluZGV4PC9BPjwvRk9OVD4gOiBQb3NpdGl2ZSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Nl85Ij5JdGVtPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIzXzEzIj5JdGVtczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjIxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84MDNfMTMiPkl0ZW1zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwM18yMCI+TWVuPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjJfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzgwNF8yMCI+SW5kZXg8L0E+PC9zcGFuPiA6IFBvc2l0aXZlKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNjIxXzEzIj5JdGVtczwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzkxMF8xMyI+SXRlbV9Db3VudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyOV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTEwXzI1Ij5NZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IE5hdHVyYWw7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfaXRlbXMuM3guaHRtbCI+aXRlbV9jb3VudCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYyOV8xMyI+SXRlbV9Db3VudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81OCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl83OTVfMTMiPkl0ZW1fQ291bnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyN18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfNzk1XzI1Ij5NZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+KSA8Yj5yZXR1cm48L2I+IE5hdHVyYWw7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2l0ZW1zLjN4Lmh0bWwiPml0ZW1fY291bnQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MjdfMTMiPkl0ZW1fQ291bnQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfbmV3LjN4Lmh0bWwiPm1lbnVfbmV3LjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9tZW51X25ldy4zeC5odG1sIj5tZW51X25ldy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjM4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85MzdfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzOF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTM3XzIxIj5JdGVtczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9uZXcuM3guaHRtbCI+bmV3X21lbnUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IGlubGluZWQ8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODIyXzEzIj5DcmVhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzNl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODIyXzIxIj5JdGVtczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc2XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfbmV3LjN4Lmh0bWwiPm5ld19tZW51KCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW5saW5lZDwvRU0+PC9zcGFuPgogCi0gICA8Yj5mdW5jdGlvbjwvYj4gTmV3X01lbnUgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjQyXzIzIj5JdGVtczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfMTc4XzkiPkl0ZW1fQXJyYXlfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82MzhfMTMiPkNyZWF0ZTwvQT47CisgICA8Yj5mdW5jdGlvbjwvYj4gTmV3X01lbnUgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NDBfMjMiPkl0ZW1zPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl8xNzZfOSI+SXRlbV9BcnJheV9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzYzNl8xMyI+Q3JlYXRlPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfOTU2XzE0Ij5EZWxldGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk1Nl8yMiI+TWVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N185Ij5NZW51PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL21lbnVfbmV3LjN4Lmh0bWwiPmZyZWVfbWVudSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSZXNldCBNZW4gdG8gTnVsbF9NZW51PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5vdCBpbmxpbmVkPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NDFfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl84NDFfMjIiPk1lbjwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTJfOSI+TWVudTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9uZXcuM3guaHRtbCI+ZnJlZV9tZW51KCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZXNldCBNZW4gdG8gTnVsbF9NZW51PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW5saW5lZDwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vbWVudV9kcml2ZXIuM3guaHRtbCI+bWVudV9kcml2ZXIuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL21lbnVfZHJpdmVyLjN4Lmh0bWwiPm1lbnVfZHJpdmVyLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1NF85Ij5Ecml2ZXJfUmVzdWx0PC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1NF8yNyI+TWVudV9PazwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1NV8yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+PC9GT05UPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTZfMjciPlVua25vd25fUmVxdWVzdDwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1N18yNyI+Tm9fTWF0Y2g8L0E+PC9GT05UPik7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjUyXzkiPkRyaXZlcl9SZXN1bHQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTJfMjciPk1lbnVfT2s8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1M18yNyI+UmVxdWVzdF9EZW5pZWQ8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1NF8yNyI+VW5rbm93bl9SZXF1ZXN0PC9BPjwvc3Bhbj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTVfMjciPk5vX01hdGNoPC9BPjwvc3Bhbj4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzk3MF8xMyI+RHJpdmVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYwXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NzBfMjEiPk1lbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZGIuaHRtI3JlZl85NzFfMjEiPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjhfOSI+S2V5X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzY1NF85Ij5Ecml2ZXJfUmVzdWx0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vbWVudV9kcml2ZXIuM3guaHRtbCI+bWVudV9kcml2ZXIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgRHJpdmVyIGlzIG5vdCBpbmxpbmVkPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NThfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1Ml8xMyI+RHJpdmVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NThfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2FkYi5odG0jcmVmXzg1Ml8yMSI+TWVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81Ml85Ij5NZW51PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1OV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRiLmh0bSNyZWZfODUzXzIxIj5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2XzkiPktleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82NTJfOSI+RHJpdmVyX1Jlc3VsdDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9tZW51X2RyaXZlci4zeC5odG1sIj5tZW51X2RyaXZlcigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRHJpdmVyIGlzIG5vdCBpbmxpbmVkPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBtZW51X3JlcXVlc3RfbmFtZSwgbWVudV9yZXF1ZXN0X2J5X25hbWU8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYyIiMyfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBtZW51X3JlcXVlc3RfbmFtZSwgbWVudV9yZXF1ZXN0X2J5X25hbWU8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+cHJpdmF0ZTwvYj4KLSAgIDxiPnR5cGU8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+ICAgPGI+aXM8L2I+IDxiPm5ldzwvYj4gU3lzdGVtLlN0b3JhZ2VfRWxlbWVudHMuSW50ZWdlcl9BZGRyZXNzOwotICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tZW51c19fYWRzLmh0bSNyZWZfNTdfOSI+TWVudTwvQT4gICA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy5JbnRlZ2VyX0FkZHJlc3M7CisgICA8Yj50eXBlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81MV85Ij5JdGVtPC9BPiAgIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKKyAgIDxiPnR5cGU8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+ICAgPGI+aXM8L2I+IDxiPm5ldzwvYj4gU3lzdGVtLlN0b3JhZ2VfRWxlbWVudHMuSW50ZWdlcl9BZGRyZXNzOwogCi0gICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82Ml80Ij5OdWxsX0l0ZW08L0E+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU2XzkiPkl0ZW08L0E+IDo9IDA7Ci0gICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl82M180Ij5OdWxsX01lbnU8L0E+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzU3XzkiPk1lbnU8L0E+IDo9IDA7CisgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81N180Ij5OdWxsX0l0ZW08L0E+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUxXzkiPkl0ZW08L0E+IDo9IDA7CisgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX01lbnU8L0E+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzUyXzkiPk1lbnU8L0E+IDo9IDA7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbWVudXNfX2Fkcy5odG0jcmVmXzQ5XzM1Ij5NZW51czwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1lbnVzX19hZHMuaHRtI3JlZl80NV8zNSI+TWVudXM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0KaW5kZXggNGUzYTE3OC4uMTNjZWNiMSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0KQEAgLTEsMTYwICsxLDE3MiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2UuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTW91c2UgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjIyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NTE6MTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOwotPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1vdXNlICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4yNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wOS8xMyAxOToxMDoxOCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNDhfMzUiPk1vdXNlPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl80NF8zNSI+TW91c2U8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAogICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiBTeXN0ZW0uQml0X09yZGVyOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOThfMTMiPkhhc19Nb3VzZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTBfMTMiPkhhc19Nb3VzZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8xNiI+TW91c2VfQXZhaWw8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1vdXNlX0F2YWlsLCAiX25jX2hhc19tb3VzZSIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml8xNiI+TW91c2VfQXZhaWw8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1vdXNlX0F2YWlsLCAiaGFzX21vdXNlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjdfMTMiPkhhc19LZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDRfNCI+S2V5X01vdXNlPC9BPikgPGI+b3I8L2I+IDxiPmVsc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzUyXzE2Ij5Nb3VzZV9BdmFpbDwvQT4gLz0gMCA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN18xMyI+SGFzX0tleTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3NV80Ij5LZXlfTW91c2U8L0E+KSA8Yj5vcjwvYj4gPGI+ZWxzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNTJfMTYiPk1vdXNlX0F2YWlsPC9BPiAvPSAwIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85OF8xMyI+SGFzX01vdXNlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTBfMTMiPkhhc19Nb3VzZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzNfMTMiPkdldF9Nb3VzZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjVfMTMiPkdldF9Nb3VzZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMTIiPkV2ZW50X0FjY2VzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+IDxiPmFsbDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzEyIj5FdmVudF9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzg0XzkiPk1vdXNlX0V2ZW50PC9BPjsKIAotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjZfMTYiPkdldG1vdXNlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzY2XzE2Ij5FdjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNjRfMTIiPkV2ZW50X0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY2XzE2Ij5HZXRtb3VzZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzY2XzE2Ij5FdjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNjRfMTIiPkV2ZW50X0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0bW91c2UsICJnZXRtb3VzZSIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5XzciPkV2ZW50PC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Ml85Ij5Nb3VzZV9FdmVudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfNyI+RXZlbnQ8L0E+PC9zcGFuPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzg0XzkiPk1vdXNlX0V2ZW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzY2XzE2Ij5HZXRtb3VzZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzY5XzciPkV2ZW50PC9BPic8Yj5BY2Nlc3M8L2I+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl82Nl8xNiI+R2V0bW91c2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl82OV83Ij5FdmVudDwvQT4nPGI+QWNjZXNzPC9iPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNjlfNyI+RXZlbnQ8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzNfMTMiPkdldF9Nb3VzZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyNV8xMyI+R2V0X01vdXNlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDFfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N180MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTAyXzciPkJ1dHRvbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OF80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTAzXzciPlN0YXRlPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzc5XzkiPkJ1dHRvbl9TdGF0ZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTA0XzciPk1hc2s8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTNfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85NF83Ij5CdXR0b248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYwXzkiPk1vdXNlX0J1dHRvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85NV83Ij5TdGF0ZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzcxXzkiPkJ1dHRvbl9TdGF0ZTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Nl83Ij5NYXNrPC9BPjwvc3Bhbj4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxXzciPkJ1dHRvbl9OcjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IE5hdHVyYWwgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjhfOSI+TW91c2VfQnV0dG9uPC9BPidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwMl83Ij5CdXR0b248L0E+KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODJfNyI+U3RhdGVfTnI8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gTmF0dXJhbCA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83OV85Ij5CdXR0b25fU3RhdGU8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTAzXzciPlN0YXRlPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODFfNyI+QnV0dG9uX05yPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gTmF0dXJhbCA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF85Ij5Nb3VzZV9CdXR0b248L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTRfNyI+QnV0dG9uPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODJfNyI+U3RhdGVfTnI8L0E+PC9zcGFuPiAgOiA8Yj5jb25zdGFudDwvYj4gTmF0dXJhbCA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV85Ij5CdXR0b25fU3RhdGU8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTVfNyI+U3RhdGU8L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwMl83Ij5CdXR0b248L0E+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83N18xMiI+TW9kaWZpZXJfS2V5czwvQT4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDNfNyI+U3RhdGU8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzgwXzI2Ij5QcmVzc2VkPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85NF83Ij5CdXR0b248L0E+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OV8xMiI+TW9kaWZpZXJfS2V5czwvQT4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85NV83Ij5TdGF0ZTwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzJfMjYiPlByZXNzZWQ8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDJfNyI+QnV0dG9uPC9BPiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzZfMTIiPlJlYWxfQnV0dG9uczwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwNF83Ij5NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDRfNyI+TWFzazwvQT4gPGI+b3I8L2I+ICgoMiAqKiAoNiAqIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzgxXzciPkJ1dHRvbl9OcjwvQT4pKSAqKiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl84Ml83Ij5TdGF0ZV9OcjwvQT4pOworICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzk0XzciPkJ1dHRvbjwvQT4gPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzEyIj5SZWFsX0J1dHRvbnM8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Nl83Ij5NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Nl83Ij5NYXNrPC9BPiA8Yj5vcjwvYj4gKCgyICoqICg2ICogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfODFfNyI+QnV0dG9uX05yPC9BPikpICoqIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzgyXzciPlN0YXRlX05yPC9BPik7CiAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTA0XzciPk1hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwNF83Ij5NYXNrPC9BPiA8Yj5vcjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzIxNl80Ij5CVVRUT05fQ1RSTDwvQT4gKiogKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzgxXzciPkJ1dHRvbl9OcjwvQT4gLSA0KSk7CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Nl83Ij5NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Nl83Ij5NYXNrPC9BPiA8Yj5vcjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE4OV80Ij5CVVRUT05fQ1RSTDwvQT4gKiogKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzgxXzciPkJ1dHRvbl9OcjwvQT4gLSA0KSk7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDFfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85M18xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTEwXzE0Ij5SZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50czwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzQyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTFfNyI+QnV0dG9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjhfOSI+TW91c2VfQnV0dG9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Nl80MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTEyXzciPlN0YXRlPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IEJ1dHRvbl9TdGF0ZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTdfNDIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzExM183Ij5NYXNrPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwMl8xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk1XzQyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDNfNyI+QnV0dG9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF85Ij5Nb3VzZV9CdXR0b248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfNDIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwNF83Ij5TdGF0ZTwvQT48L3NwYW4+ICA6IEJ1dHRvbl9TdGF0ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85N180MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTA1XzciPk1hc2s8L0E+PC9zcGFuPiAgIDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+Zm9yPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMF8xMSI+UzwvQT48L0ZPTlQ+IDxiPmluPC9iPiBCdXR0b25fU3RhdGVzJzxiPlJhbmdlPC9iPiA8Yj5sb29wPC9iPgotICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzExMl83Ij5TdGF0ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEwMF8xMSI+UzwvQT4pIDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDFfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTFfNyI+QnV0dG9uPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTAwXzExIj5TPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTEzXzciPk1hc2s8L0E+KTsKKyAgICAgIDxiPmZvcjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMF8xMSI+UzwvQT48L3NwYW4+IDxiPmluPC9iPiBCdXR0b25fU3RhdGVzJzxiPlJhbmdlPC9iPiA8Yj5sb29wPC9iPgorICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwNF83Ij5TdGF0ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEwMF8xMSI+UzwvQT4pIDxiPnRoZW48L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85M18xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEwM183Ij5CdXR0b248L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMDBfMTEiPlM8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDVfNyI+TWFzazwvQT4pOwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTBfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnRzPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTAyXzE0Ij5SZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50czwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIzXzEzIj5TdGFydF9Nb3VzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIzXzI2Ij5NYXNrPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82Nl80Ij5BbGxfRXZlbnRzPC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTE1XzEzIj5TdGFydF9Nb3VzZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTVfMjYiPk1hc2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU4XzQiPkFsbF9FdmVudHM8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwXzE2Ij5NTWFzazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTEwXzE2Ij5NPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTEwXzE2Ij5PPC9BPjwvRk9OVD4gOiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTBfMTYiPk1NYXNrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTBfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzExMF8xNiI+TTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTEwXzE2Ij5PPC9BPjwvc3Bhbj4gOiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE1NYXNrLCAibW91c2VtYXNrIik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExM183Ij5SPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTRfNyI+T2xkPC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTNfNyI+UjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTRfNyI+T2xkPC9BPjwvc3Bhbj4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTEzXzciPlI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzExMF8xNiI+TU1hc2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjNfMjYiPk1hc2s8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTRfNyI+T2xkPC9BPic8Yj5BY2Nlc3M8L2I+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTNfNyI+UjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NV80Ij5Ob19FdmVudHM8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzBfMTQiPkJlZXA8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTEzXzciPlI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzExMF8xNiI+TU1hc2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMTVfMjYiPk1hc2s8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTRfNyI+T2xkPC9BPic8Yj5BY2Nlc3M8L2I+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTNfNyI+UjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81N180Ij5Ob19FdmVudHM8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQwXzE0Ij5CZWVwPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMTRfNyI+T2xkPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIzXzEzIj5TdGFydF9Nb3VzZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzExNV8xMyI+U3RhcnRfTW91c2U8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjhfMTQiPkVuZF9Nb3VzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyM18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTI4XzI1Ij5NYXNrPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjVfNCI+Tm9fRXZlbnRzPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIwXzE0Ij5FbmRfTW91c2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyM18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIwXzI1Ij5NYXNrPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81N180Ij5Ob19FdmVudHM8L0E+KQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjhfMjUiPk1hc2s8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY1XzQiPk5vX0V2ZW50czwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3MF8xNCI+QmVlcDwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIwXzI1Ij5NYXNrPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81N180Ij5Ob19FdmVudHM8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQwXzE0Ij5CZWVwPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjhfMTQiPkVuZF9Nb3VzZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyMF8xNCI+RW5kX01vdXNlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM1XzE0Ij5EaXNwYXRjaF9FdmVudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM1XzMwIj5NYXNrPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzZfMzAiPkJ1dHRvbjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OF85Ij5Nb3VzZV9CdXR0b248L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM3XzMwIj5TdGF0ZTwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzlfOSI+QnV0dG9uX1N0YXRlPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzNV8xNCI+RGlzcGF0Y2hfRXZlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM1XzMwIj5NYXNrPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzZfMzAiPkJ1dHRvbjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF85Ij5Nb3VzZV9CdXR0b248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzdfMzAiPlN0YXRlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV85Ij5CdXR0b25fU3RhdGU8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzE0Ij5EaXNwYXRjaF9FdmVudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzMwIj5NYXNrPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OF85Ij5Nb3VzZV9CdXR0b248L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzN18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMzXzMwIj5TdGF0ZTwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzlfOSI+QnV0dG9uX1N0YXRlPC9BPikgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOF83Ij5MPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPjsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzE0Ij5EaXNwYXRjaF9FdmVudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYwXzkiPk1vdXNlX0J1dHRvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzM18zMCI+U3RhdGU8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzcxXzkiPkJ1dHRvbl9TdGF0ZTwvQT4pIDxiPmlzPC9iPgorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzOF83Ij5MPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzc0XzI2Ij5BbHQ8L0E+OyAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBwcmVzZXQgdG8gbm9uIHJlYWwgYnV0dG9uOzwvRU0+PC9GT05UPgotICAgICAgPGI+aWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMjIxXzQiPkJVVFRPTjFfRVZFTlRTPC9BPikgLz0gMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzI2Ij5MZWZ0PC9BPjsKLSAgICAgIDxiPmVsc2lmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzMwIj5NYXNrPC9BPiA8Yj5hbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzIyMl80Ij5CVVRUT04yX0VWRU5UUzwvQT4pIC89IDAgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OV8yNiI+TWlkZGxlPC9BPjsKLSAgICAgIDxiPmVsc2lmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzMwIj5NYXNrPC9BPiA8Yj5hbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzIyM180Ij5CVVRUT04zX0VWRU5UUzwvQT4pIC89IDAgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MF8yNiI+UmlnaHQ8L0E+OwotICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMjI0XzQiPkJVVFRPTjRfRVZFTlRTPC9BPikgLz0gMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzcxXzI2Ij5CdXR0b240PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82Nl8yNiI+QWx0PC9BPjsgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByZXNldCB0byBub24gcmVhbCBidXR0b247PC9FTT48L3NwYW4+CisgICAgICA8Yj5pZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMV8zMCI+TWFzazwvQT4gPGI+YW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xOTJfNCI+QlVUVE9OMV9FVkVOVFM8L0E+KSAvPSAwIDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjBfMjYiPkxlZnQ8L0E+OworICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTk0XzQiPkJVVFRPTjJfRVZFTlRTPC9BPikgLz0gMCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYxXzI2Ij5NaWRkbGU8L0E+OworICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTk2XzQiPkJVVFRPTjNfRVZFTlRTPC9BPikgLz0gMCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYyXzI2Ij5SaWdodDwvQT47CisgICAgICA8Yj5lbHNpZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMV8zMCI+TWFzazwvQT4gPGI+YW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xOThfNCI+QlVUVE9ONF9FVkVOVFM8L0E+KSAvPSAwIDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjNfMjYiPkJ1dHRvbjQ8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83Nl8xMiI+UmVhbF9CdXR0b25zPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM4XzciPkw8L0E+IDo9IDIgKiogKDYgKiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OF85Ij5Nb3VzZV9CdXR0b248L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+KSk7Ci0gICAgICAgICA8Yj5mb3I8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUyXzE0Ij5JPC9BPjwvRk9OVD4gPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzc5XzkiPkJ1dHRvbl9TdGF0ZTwvQT4nPGI+UmFuZ2U8L2I+IDxiPmxvb3A8L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82OF8xMiI+UmVhbF9CdXR0b25zPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM4XzciPkw8L0E+IDo9IDIgKiogKDYgKiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF85Ij5Nb3VzZV9CdXR0b248L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMyXzMwIj5CdXR0b248L0E+KSk7CisgICAgICAgICA8Yj5mb3I8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTJfMTQiPkk8L0E+PC9zcGFuPiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzFfOSI+QnV0dG9uX1N0YXRlPC9BPic8Yj5SYW5nZTwvYj4gPGI+bG9vcDwvYj4KICAgICAgICAgICAgIDxiPmlmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzMwIj5NYXNrPC9BPiA8Yj5hbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzOF83Ij5MPC9BPikgLz0gMCA8Yj50aGVuPC9iPgogICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMzXzMwIj5TdGF0ZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTUyXzE0Ij5JPC9BPjsKICAgICAgICAgICAgICAgIDxiPmV4aXQ8L2I+OwpAQCAtMTYyLDYyICsxNzQsNjMgQEAKICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzOF83Ij5MPC9BPiA6PSAyICogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTM4XzciPkw8L0E+OwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5sb29wPC9iPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzNfMzAiPlN0YXRlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl84MF8yNiI+UHJlc3NlZDwvQT47Ci0gICAgICAgICA8Yj5pZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMV8zMCI+TWFzazwvQT4gPGI+YW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8yMTZfNCI+QlVUVE9OX0NUUkw8L0E+KSAvPSAwIDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzJfMjYiPkNvbnRyb2w8L0E+OwotICAgICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMjE3XzQiPkJVVFRPTl9TSElGVDwvQT4pIC89IDAgPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83M18yNiI+U2hpZnQ8L0E+OwotICAgICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMjE4XzQiPkJVVFRPTl9BTFQ8L0E+KSAvPSAwIDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzRfMjYiPkFsdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzNfMzAiPlN0YXRlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83Ml8yNiI+UHJlc3NlZDwvQT47CisgICAgICAgICA8Yj5pZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMV8zMCI+TWFzazwvQT4gPGI+YW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xODlfNCI+QlVUVE9OX0NUUkw8L0E+KSAvPSAwIDxiPnRoZW48L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfMjYiPkNvbnRyb2w8L0E+OworICAgICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTkwXzQiPkJVVFRPTl9TSElGVDwvQT4pIC89IDAgPGI+dGhlbjwvYj4KKyAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEzMl8zMCI+QnV0dG9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NV8yNiI+U2hpZnQ8L0E+OworICAgICAgICAgPGI+ZWxzaWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMzAiPk1hc2s8L0E+IDxiPmFuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTkxXzQiPkJVVFRPTl9BTFQ8L0E+KSAvPSAwIDxiPnRoZW48L2I+CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzJfMzAiPkJ1dHRvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjZfMjYiPkFsdDwvQT47CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMzFfMTQiPkRpc3BhdGNoX0V2ZW50PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTM3XzE0Ij5HZXRfRXZlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzN18yNSI+RXZlbnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzkyXzkiPk1vdXNlX0V2ZW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzhfMjUiPlk8L0E+PC9GT05UPiAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzlfMjUiPlg8L0E+PC9GT05UPiAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE0MF8yNSI+QnV0dG9uPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQxXzI1Ij5TdGF0ZTwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzlfOSI+QnV0dG9uX1N0YXRlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTI5XzE0Ij5HZXRfRXZlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTI5XzI1Ij5FdmVudDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzg0XzkiPk1vdXNlX0V2ZW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzMF8yNSI+WTwvQT48L3NwYW4+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3M18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTMxXzI1Ij5YPC9BPjwvc3Bhbj4gICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzMl8yNSI+QnV0dG9uPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYwXzkiPk1vdXNlX0J1dHRvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzNfMjUiPlN0YXRlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV85Ij5CdXR0b25fU3RhdGU8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3N183Ij5NYXNrPC9BPjwvRk9OVD4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzN18yNSI+RXZlbnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE3NF8xMCI+QnN0YXRlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzdfNyI+TWFzazwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjlfMjUiPkV2ZW50PC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNjlfMTAiPkJzdGF0ZTwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzOV8yNSI+WDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTM3XzI1Ij5FdmVudDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTcyXzEwIj5YPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzhfMjUiPlk8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzN18yNSI+RXZlbnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE3Ml8xMyI+WTwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzE0Ij5EaXNwYXRjaF9FdmVudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE3N183Ij5NYXNrPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQwXzI1Ij5CdXR0b248L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDFfMjUiPlN0YXRlPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzN18xNCI+R2V0X0V2ZW50PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEzMV8yNSI+WDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTI5XzI1Ij5FdmVudDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTY3XzEwIj5YPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzBfMjUiPlk8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+ICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyOV8yNSI+RXZlbnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE2N18xMyI+WTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTMxXzE0Ij5EaXNwYXRjaF9FdmVudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE3N183Ij5NYXNrPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTMyXzI1Ij5CdXR0b248L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzNfMjUiPlN0YXRlPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyOV8xNCI+R2V0X0V2ZW50PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ5XzE0Ij5VbmdldF9Nb3VzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ5XzI3Ij5FdmVudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzkyXzkiPk1vdXNlX0V2ZW50PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQxXzE0Ij5VbmdldF9Nb3VzZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDFfMjciPkV2ZW50PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl84NF85Ij5Nb3VzZV9FdmVudDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4Nl8xNiI+VW5nZXRtb3VzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4Nl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTg2XzE2Ij5FdjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODZfMTYiPlVuZ2V0bW91c2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4Nl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTg2XzE2Ij5FdjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFVuZ2V0bW91c2UsICJ1bmdldG1vdXNlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xODZfMTYiPlVuZ2V0bW91c2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDlfMjciPkV2ZW50PC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTg2XzE2Ij5VbmdldG1vdXNlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQxXzI3Ij5FdmVudDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE0OV8xNCI+VW5nZXRfTW91c2U8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDFfMTQiPlVuZ2V0X01vdXNlPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNTRfMTMiPkVuY2xvc2VkX0luX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTU0XzMzIj5XaW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NV8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTU1XzMzIj5FdmVudDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzkyXzkiPk1vdXNlX0V2ZW50PC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzEzIj5FbmNsb3NlZF9Jbl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NF8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzMzIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDdfMzMiPkV2ZW50PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk3XzE2Ij5XZW5jbG9zZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTk3XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk3XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTdfMTYiPlk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5N181MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTk3XzE2Ij5YPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTdfMTYiPldlbmNsb3NlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE5N18xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTdfMTYiPlk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3XzUxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTdfMTYiPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2VuY2xvc2UsICJ3ZW5jbG9zZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTk3XzE2Ij5XZW5jbG9zZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE1NF8zMyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE1NV8zMyI+RXZlbnQ8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE3Ml8xMyI+WTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTU1XzMzIj5FdmVudDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTcyXzEwIj5YPC9BPikpCi0gICAgICAgID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyN180Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTdfMTYiPldlbmNsb3NlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzMzIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ3XzMzIj5FdmVudDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTY3XzEzIj5ZPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDdfMzMiPkV2ZW50PC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNjdfMTAiPlg8L0E+KSkKKyAgICAgICAgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPgorICAgICAgPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gRmFsc2U7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE1NF8xMyI+RW5jbG9zZWRfSW5fV2luZG93PC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzEzIj5FbmNsb3NlZF9Jbl9XaW5kb3c8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE2MV8xMyI+TW91c2VfSW50ZXJ2YWw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE2MV8yOSI+TXNlYzwvQT48L0ZPTlQ+IDogTmF0dXJhbCA6PSAyMDApIDxiPnJldHVybjwvYj4gTmF0dXJhbAorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE1M18xMyI+TW91c2VfSW50ZXJ2YWw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTUzXzI5Ij5Nc2VjPC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDIwMCkgPGI+cmV0dXJuPC9iPiBOYXR1cmFsCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMV8xNiI+TW91c2VpbnRlcnZhbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMjExXzE2Ij5Nc2VjPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEyXzE2Ij5Nb3VzZWludGVydmFsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTJfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzIxMl8xNiI+TXNlYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTW91c2VpbnRlcnZhbCwgIm1vdXNlaW50ZXJ2YWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8yMTFfMTYiPk1vdXNlaW50ZXJ2YWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTYxXzI5Ij5Nc2VjPC9BPikpKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTYxXzEzIj5Nb3VzZV9JbnRlcnZhbDwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzIxMl8xNiI+TW91c2VpbnRlcnZhbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNTNfMjkiPk1zZWM8L0E+KSkpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNTNfMTMiPk1vdXNlX0ludGVydmFsPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNDhfMzUiPk1vdXNlPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5Nb3VzZTwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bQppbmRleCA2MDhiZDQ2Li4wYzQ1NDVhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bQpAQCAtMSwyMzUgKzEsMjIyIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZS5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2UuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuTW91c2UgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMjcgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBtb3VzZSBiaW5kaW5nLjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQuIFBsZWFzZSBkb24ndCBjaGFuZ2UgaXQgbWFudWFsbHkhPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJ1biB0aGUgZ2VuZXJhdG9yIGluc3RlYWQuPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLk1vdXNlICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjMyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDE1LzA1LzMwIDIzOjE5OjE5IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IFN5c3RlbTsKIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzQ2XzQwIj5Nb3VzZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl80OF8zNSI+TW91c2U8L0E+KTsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzQ2XzQwIj5Nb3VzZTwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl80NF8zNSI+TW91c2U8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+Y3Vyc19tb3VzZS4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBQbGVhc2Ugbm90ZSwgdGhhdCBpbiBuY3Vyc2VzLTEuOS45ZSBkb2N1bWVudGF0aW9uIG1vdXNlIHN1cHBvcnQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaXMgc3RpbGwgbWFya2VkIGFzIGV4cGVyaW1lbnRhbC4gU28gYWxzbyB0aGlzIGJpbmRpbmcgd2lsbCBjaGFuZ2U8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaWYgdGhlIG5jdXJzZXMgbWV0aG9kcyBjaGFuZ2UuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgbW91c2VfdHJhZm8sIHdtb3VzZV90cmFmbyBhcmUgaW1wbGVtZW50ZWQgYXMgVHJhbnNmb3JtX0Nvb3JkaW5hdGVzPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGluIHRoZSBwYXJlbnQgcGFja2FnZS48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJFUE9SVF9NT1VTRV9QT1NJVElPTiAoaS5lLiBhcyBhIHBhcmFtZXRlciB0byBSZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIG9yIFN0YXJ0X01vdXNlKTwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF85Ij5FdmVudF9NYXNrPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPnByaXZhdGU8L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NV80Ij5Ob19FdmVudHM8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2XzQiPkFsbF9FdmVudHM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+Y3Vyc19tb3VzZS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIG1vdXNlX3RyYWZvLCB3bW91c2VfdHJhZm8gYXJlIGltcGxlbWVudGVkIGFzIFRyYW5zZm9ybV9Db29yZGluYXRlczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaW4gdGhlIHBhcmVudCBwYWNrYWdlLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IGltcGxlbWVudGVkOjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgUkVQT1JUX01PVVNFX1BPU0lUSU9OIChpLmUuIGFzIGEgcGFyYW1ldGVyIHRvIFJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIG9yIFN0YXJ0X01vdXNlKTwvRU0+PC9zcGFuPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfNCI+Tm9fRXZlbnRzPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzQiPkFsbF9FdmVudHM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OF85Ij5Nb3VzZV9CdXR0b248L0E+PC9GT05UPiA8Yj5pczwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjhfMjYiPkxlZnQ8L0E+PC9GT05UPiwgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBha2E6IEJ1dHRvbiAxPC9FTT48L0ZPTlQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OV8yNiI+TWlkZGxlPC9BPjwvRk9OVD4sICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGFrYTogQnV0dG9uIDI8L0VNPjwvRk9OVD4KLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzI2Ij5SaWdodDwvQT48L0ZPTlQ+LCAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYWthOiBCdXR0b24gMzwvRU0+PC9GT05UPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMjYiPkJ1dHRvbjQ8L0E+PC9GT05UPiwgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBha2E6IEJ1dHRvbiA0PC9FTT48L0ZPTlQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83Ml8yNiI+Q29udHJvbDwvQT48L0ZPTlQ+LCAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvbnRyb2wgS2V5PC9FTT48L0ZPTlQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83M18yNiI+U2hpZnQ8L0E+PC9GT05UPiwgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFNoaWZ0IEtleTwvRU0+PC9GT05UPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzRfMjYiPkFsdDwvQT48L0ZPTlQ+KTsgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBBTFQgS2V5PC9FTT48L0ZPTlQ+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfOSI+TW91c2VfQnV0dG9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfMjYiPkxlZnQ8L0E+PC9zcGFuPiwgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYWthOiBCdXR0b24gMTwvRU0+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV8yNiI+TWlkZGxlPC9BPjwvc3Bhbj4sICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBha2E6IEJ1dHRvbiAyPC9FTT48L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzI2Ij5SaWdodDwvQT48L3NwYW4+LCAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGFrYTogQnV0dG9uIDM8L0VNPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMjYiPkJ1dHRvbjQ8L0E+PC9zcGFuPiwgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYWthOiBCdXR0b24gNDwvRU0+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8yNiI+Q29udHJvbDwvQT48L3NwYW4+LCAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb250cm9sIEtleTwvRU0+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV8yNiI+U2hpZnQ8L0E+PC9zcGFuPiwgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBTaGlmdCBLZXk8L0VNPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMjYiPkFsdDwvQT48L3NwYW4+KTsgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQUxUIEtleTwvRU0+PC9zcGFuPgogCi0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2XzEyIj5SZWFsX0J1dHRvbnM8L0E+PC9GT05UPiAgPGI+aXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT4gPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzI2Ij5MZWZ0PC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV8yNiI+QnV0dG9uNDwvQT47Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3XzEyIj5Nb2RpZmllcl9LZXlzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT4gPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzcyXzI2Ij5Db250cm9sPC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83NF8yNiI+QWx0PC9BPjsKKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OF8xMiI+UmVhbF9CdXR0b25zPC9BPjwvc3Bhbj4gIDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF85Ij5Nb3VzZV9CdXR0b248L0E+IDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82MF8yNiI+TGVmdDwvQT4gLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjNfMjYiPkJ1dHRvbjQ8L0E+OworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5XzEyIj5Nb2RpZmllcl9LZXlzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYwXzkiPk1vdXNlX0J1dHRvbjwvQT4gPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzI2Ij5Db250cm9sPC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82Nl8yNiI+QWx0PC9BPjsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OV85Ij5CdXR0b25fU3RhdGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzlfMjYiPlJlbGVhc2VkPC9BPjwvRk9OVD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MF8yNiI+UHJlc3NlZDwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODFfMjYiPkNsaWNrZWQ8L0E+PC9GT05UPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzI2Ij5Eb3VibGVfQ2xpY2tlZDwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODNfMjYiPlRyaXBsZV9DbGlja2VkPC9BPjwvRk9OVD4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzkiPkJ1dHRvbl9TdGF0ZTwvQT48L3NwYW4+IDxiPmlzPC9iPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzI2Ij5SZWxlYXNlZDwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Ml8yNiI+UHJlc3NlZDwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83M18yNiI+Q2xpY2tlZDwvQT48L3NwYW4+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NF8yNiI+RG91YmxlX0NsaWNrZWQ8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfMjYiPlRyaXBsZV9DbGlja2VkPC9BPjwvc3Bhbj4pOwogCi0gICA8Yj50eXBlPC9iPiBCdXR0b25fU3RhdGVzIDxiPmlzPC9iPiA8Yj5hcnJheTwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzc5XzkiPkJ1dHRvbl9TdGF0ZTwvQT4pIDxiPm9mPC9iPiBCb29sZWFuOworICAgPGI+dHlwZTwvYj4gQnV0dG9uX1N0YXRlcyA8Yj5pczwvYj4gPGI+YXJyYXk8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV85Ij5CdXR0b25fU3RhdGU8L0E+KSA8Yj5vZjwvYj4gQm9vbGVhbjsKICAgIDxiPnByYWdtYTwvYj4gUGFjayAoQnV0dG9uX1N0YXRlcyk7CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODhfNCI+QWxsX0NsaWNrczwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IEJ1dHRvbl9TdGF0ZXMgOj0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzgxXzI2Ij5DbGlja2VkPC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl84M18yNiI+VHJpcGxlX0NsaWNrZWQ8L0E+ID0mZ3Q7IFRydWUsCisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfNCI+QWxsX0NsaWNrczwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IEJ1dHRvbl9TdGF0ZXMgOj0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzczXzI2Ij5DbGlja2VkPC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83NV8yNiI+VHJpcGxlX0NsaWNrZWQ8L0E+ID0mZ3Q7IFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+b3RoZXJzPC9iPiA9Jmd0OyBGYWxzZSk7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwXzQiPkFsbF9TdGF0ZXM8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiBCdXR0b25fU3RhdGVzIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7IFRydWUpOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyXzQiPkFsbF9TdGF0ZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBCdXR0b25fU3RhdGVzIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7IFRydWUpOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkyXzkiPk1vdXNlX0V2ZW50PC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPnByaXZhdGU8L2I+OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzkiPk1vdXNlX0V2ZW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPnByaXZhdGU8L2I+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19tb3VzZS4zeC5odG1sIj5jdXJzX21vdXNlLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl81MF8xMyI+SGFzX01vdXNlPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSZXR1cm4gdHJ1ZSBpZiBhIG1vdXNlIGRldmljZSBpcyBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS48L0VNPjwvRk9OVD4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzUwXzEzIj5IYXNfTW91c2U8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBSZXR1cm4gdHJ1ZSBpZiBhIG1vdXNlIGRldmljZSBpcyBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS48L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNzdfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNzdfNDEiPkJ1dHRvbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl83OF80MSI+U3RhdGU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNzlfOSI+QnV0dG9uX1N0YXRlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzc5XzQxIj5NYXNrPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgU3RvcmVzIHRoZSBldmVudCBkZXNjcmliZWQgYnkgdGhlIGJ1dHRvbiBhbmQgdGhlIHN0YXRlIGluIHRoZSBtYXNrLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCZWZvcmUgeW91IGNhbGwgdGhpcyB0aGUgZmlyc3QgdGltZSwgeW91IHNob3VsZCBpbml0IHRoZSBtYXNrPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHdpdGggdGhlIEVtcHR5X01hc2sgY29uc3RhbnQ8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMDFfMTQiPlJlZ2lzdGVyX1JlcG9ydGFibGVfRXZlbnQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl83N18xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfNzdfNDEiPkJ1dHRvbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjBfOSI+TW91c2VfQnV0dG9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl83OF80MSI+U3RhdGU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83MV85Ij5CdXR0b25fU3RhdGU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzc5XzQxIj5NYXNrPC9BPjwvc3Bhbj4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFN0b3JlcyB0aGUgZXZlbnQgZGVzY3JpYmVkIGJ5IHRoZSBidXR0b24gYW5kIHRoZSBzdGF0ZSBpbiB0aGUgbWFzay48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJlZm9yZSB5b3UgY2FsbCB0aGlzIHRoZSBmaXJzdCB0aW1lLCB5b3Ugc2hvdWxkIGluaXRpYWxpemUgdGhlIG1hc2s8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHdpdGggdGhlIEVtcHR5X01hc2sgY29uc3RhbnQ8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85M18xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudDwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl85NV8xNCI+UmVnaXN0ZXJfUmVwb3J0YWJsZV9FdmVudHM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfOTVfNDIiPkJ1dHRvbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY4XzkiPk1vdXNlX0J1dHRvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl85Nl80MiI+U3RhdGU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gQnV0dG9uX1N0YXRlczsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzk3XzQyIj5NYXNrPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmVnaXN0ZXIgYWxsIGV2ZW50cyBkZXNjcmliZWQgYnkgdGhlIEJ1dHRvbiBhbmQgdGhlIFN0YXRlIGJpdG1hcC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmVmb3JlIHlvdSBjYWxsIHRoaXMgdGhlIGZpcnN0IHRpbWUsIHlvdSBzaG91bGQgaW5pdCB0aGUgbWFzazwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB3aXRoIHRoZSBFbXB0eV9NYXNrIGNvbnN0YW50PC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzk1XzE0Ij5SZWdpc3Rlcl9SZXBvcnRhYmxlX0V2ZW50czwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzk1XzQyIj5CdXR0b248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzYwXzkiPk1vdXNlX0J1dHRvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzk2XzQyIj5TdGF0ZTwvQT48L3NwYW4+ICA6IEJ1dHRvbl9TdGF0ZXM7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzk3XzQyIj5NYXNrPC9BPjwvc3Bhbj4gICA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJlZ2lzdGVyIGFsbCBldmVudHMgZGVzY3JpYmVkIGJ5IHRoZSBCdXR0b24gYW5kIHRoZSBTdGF0ZSBiaXRtYXAuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCZWZvcmUgeW91IGNhbGwgdGhpcyB0aGUgZmlyc3QgdGltZSwgeW91IHNob3VsZCBpbml0aWFsaXplIHRoZSBtYXNrPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB3aXRoIHRoZSBFbXB0eV9NYXNrIGNvbnN0YW50PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGVyZSBpcyBvbmUgZGlmZmVyZW5jZSB0byBtb3VzbWFzaygpOiB3ZSByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBvbGQgbWFzaywgdGhhdCBtZWFucyB0aGUgZXZlbnQgbWFzayB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IFRoZSBsaWJyYXJ5IHZlcnNpb248L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcmV0dXJucyBhIE1vdXNlX01hc2sgdGhhdCB0ZWxscyB3aGljaCBldmVudHMgYXJlIHJlcG9ydGVkLjwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMDdfMTMiPlN0YXJ0X01vdXNlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMDdfMjYiPk1hc2s8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY2XzQiPkFsbF9FdmVudHM8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+bW91c2VtYXNrKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTIzXzEzIj5TdGFydF9Nb3VzZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xIiMyfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlcmUgaXMgb25lIGRpZmZlcmVuY2UgdG8gbW91c21hc2soKTogd2UgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIG9sZCBtYXNrLCB0aGF0IG1lYW5zIHRoZSBldmVudCBtYXNrIHZhbHVlIGJlZm9yZSB0aGlzIGNhbGwuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IFRoZSBsaWJyYXJ5IHZlcnNpb248L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJldHVybnMgYSBNb3VzZV9NYXNrIHRoYXQgdGVsbHMgd2hpY2ggZXZlbnRzIGFyZSByZXBvcnRlZC48L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMDdfMTMiPlN0YXJ0X01vdXNlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzEwN18yNiI+TWFzazwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNThfNCI+QWxsX0V2ZW50czwvQT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+bW91c2VtYXNrKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTE1XzEzIj5TdGFydF9Nb3VzZTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMjNfMTQiPkVuZF9Nb3VzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTIzXzI1Ij5NYXNrPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjVfNCI+Tm9fRXZlbnRzPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRlcm1pbmF0ZXMgdGhlIG1vdXNlLCByZXN0b3JlcyB0aGUgc3BlY2lmaWVkIGV2ZW50IG1hc2s8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjhfMTQiPkVuZF9Nb3VzZTwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMjNfMTQiPkVuZF9Nb3VzZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIwXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xMjNfMjUiPk1hc2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU3XzQiPk5vX0V2ZW50czwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGVybWluYXRlcyB0aGUgbW91c2UsIHJlc3RvcmVzIHRoZSBzcGVjaWZpZWQgZXZlbnQgbWFzazwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzEyMF8xNCI+RW5kX01vdXNlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl82Ml8xMyI+R2V0X01vdXNlPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Ml85Ij5Nb3VzZV9FdmVudDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+Z2V0bW91c2UoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzNfMTMiPkdldF9Nb3VzZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzYyXzEzIj5HZXRfTW91c2U8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzg0XzkiPk1vdXNlX0V2ZW50PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+Z2V0bW91c2UoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjVfMTMiPkdldF9Nb3VzZTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xNzFfMTQiPkdldF9FdmVudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzN18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTcxXzI1Ij5FdmVudDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzhfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE3Ml8yNSI+WTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE3M18yNSI+WDwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTc0XzI1Ij5CdXR0b248L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjhfOSI+TW91c2VfQnV0dG9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xNzVfMjUiPlN0YXRlPC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl83OV85Ij5CdXR0b25fU3RhdGU8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgISEhIFdhcm5pbmc6IFggYW5kIFkgYXJlIHNjcmVlbiBjb29yZGluYXRlcy4gRHVlIHRvIHJpcHBlZCBvZiBsaW5lcyB0aGV5PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIG1heSBub3QgYmUgaWRlbnRpY2FsIHRvIHdpbmRvdyBjb29yZGluYXRlcy48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBHZXRfRXZlbnQgb25seSByZXBvcnRzIG9uZSBldmVudCwgdGhlIEMgbGlicmFyeTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB2ZXJzaW9uIHN1cHBvcnRzIG11bHRpcGxlIGV2ZW50cywgZS5nLiB7Y2xpY2stMSwgY2xpY2stM308L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMzdfMTQiPkdldF9FdmVudDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xNzFfMTQiPkdldF9FdmVudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xNzFfMjUiPkV2ZW50PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTcyXzI1Ij5ZPC9BPjwvc3Bhbj4gICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xNzNfMjUiPlg8L0E+PC9zcGFuPiAgICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTc0XzI1Ij5CdXR0b248L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjBfOSI+TW91c2VfQnV0dG9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE3NV8yNSI+U3RhdGU8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzcxXzkiPkJ1dHRvbl9TdGF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgISEhIFdhcm5pbmc6IFggYW5kIFkgYXJlIHNjcmVlbiBjb29yZGluYXRlcy4gRHVlIHRvIHJpcHBlZCBvZiBsaW5lcyB0aGV5PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBtYXkgbm90IGJlIGlkZW50aWNhbCB0byB3aW5kb3cgY29vcmRpbmF0ZXMuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IEdldF9FdmVudCBvbmx5IHJlcG9ydHMgb25lIGV2ZW50LCB0aGUgQyBsaWJyYXJ5PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB2ZXJzaW9uIHN1cHBvcnRzIG11bHRpcGxlIGV2ZW50cywgZS5nLiB7Y2xpY2stMSwgY2xpY2stM308L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xMjlfMTQiPkdldF9FdmVudDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE4NF8xNCI+VW5nZXRfTW91c2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE4NF8yNyI+RXZlbnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Ml85Ij5Nb3VzZV9FdmVudDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdXNlLjN4Lmh0bWwiPnVuZ2V0bW91c2UoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNDlfMTQiPlVuZ2V0X01vdXNlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE4NF8xNCI+VW5nZXRfTW91c2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTg0XzI3Ij5FdmVudDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+dW5nZXRtb3VzZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE0MV8xNCI+VW5nZXRfTW91c2U8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzE5NF8xMyI+RW5jbG9zZWRfSW5fV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU0XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTRfMzMiPldpbjwvQT48L0ZPTlQ+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTVfMzMiPkV2ZW50PC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW91c2UuM3guaHRtbCI+d2VuY2xvc2UoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQnV0IDogdXNlIGV2ZW50IGluc3RlYWQgb2Ygc2NyZWVuIGNvb3JkaW5hdGVzLjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE1NF8xMyI+RW5jbG9zZWRfSW5fV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTk0XzEzIj5FbmNsb3NlZF9Jbl9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0Nl8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMTk0XzMzIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZGIuaHRtI3JlZl8xOTVfMzMiPkV2ZW50PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdXNlLjN4Lmh0bWwiPndlbmNsb3NlKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCdXQgOiB1c2UgZXZlbnQgaW5zdGVhZCBvZiBzY3JlZW4gY29vcmRpbmF0ZXMuPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTQ2XzEzIj5FbmNsb3NlZF9Jbl9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzIwOV8xMyI+TW91c2VfSW50ZXJ2YWw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjFfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzIwOV8yOSI+TXNlYzwvQT48L0ZPTlQ+IDogTmF0dXJhbCA6PSAyMDApIDxiPnJldHVybjwvYj4gTmF0dXJhbDsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19tb3VzZS4zeC5odG1sIj5tb3VzZWludGVydmFsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTYxXzEzIj5Nb3VzZV9JbnRlcnZhbDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2FkYi5odG0jcmVmXzIxMF8xMyI+TW91c2VfSW50ZXJ2YWw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRiLmh0bSNyZWZfMjEwXzI5Ij5Nc2VjPC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDIwMCkgPGI+cmV0dXJuPC9iPiBOYXR1cmFsOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19tb3VzZS4zeC5odG1sIj5tb3VzZWludGVydmFsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTUzXzEzIj5Nb3VzZV9JbnRlcnZhbDwvQT4pOwogCiA8Yj5wcml2YXRlPC9iPgotICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMudW5zaWduZWRfbG9uZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgY2FuIGJlIGFzIGxpdHRsZSBhcyAzMiBiaXRzICh1bnNpZ25lZCksIG9yIGFzIGxvbmcgYXMgdGhlIHN5c3RlbSdzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB1bnNpZ25lZCBsb25nLiAgRGVjbGFyZSBpdCBhcyB0aGUgbWluaW11bSBzaXplIHRvIGhhbmRsZSBhbGwgdmFsaWQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHNpemVzLjwvRU0+PC9zcGFuPgorICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4gPGI+aXM8L2I+IDxiPm1vZDwvYj4gNDI5NDk2NzI5NjsKIAotICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+IDxiPmlzPC9iPgorICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+IDxiPmlzPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzBfMTAiPklkPC9BPjwvRk9OVD4gICAgICA6IEludGVnZXIgPGI+cmFuZ2U8L2I+IEludGVnZXIgKDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0J0ZpcnN0KSAuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlciAoPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuc2hvcnQnTGFzdCk7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3Ml8xMCI+WDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3Ml8xMyI+WTwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3Ml8xNiI+WjwvQT48L0ZPTlQ+IDogSW50ZWdlciA8Yj5yYW5nZTwvYj4gSW50ZWdlciAoPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuaW50J0ZpcnN0KSAuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlciAoPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuaW50J0xhc3QpOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzRfMTAiPkJzdGF0ZTwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NV8xMCI+SWQ8L0E+PC9zcGFuPiAgICAgIDogSW50ZWdlciA8Yj5yYW5nZTwvYj4gSW50ZWdlciAoPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuc2hvcnQnRmlyc3QpIC4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5zaG9ydCdMYXN0KTsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjdfMTAiPlg8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2N18xMyI+WTwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3XzE2Ij5aPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDxiPnJhbmdlPC9iPiBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQnRmlyc3QpIC4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQnTGFzdCk7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY5XzEwIj5Cc3RhdGU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+cmVjb3JkPC9iPjsKLSAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfOTJfOSI+TW91c2VfRXZlbnQ8L0E+KTsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfODRfOSI+TW91c2VfRXZlbnQ8L0E+KTsKIAotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl85Ml85Ij5Nb3VzZV9FdmVudDwvQT4gPGI+dXNlPC9iPgorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl84NF85Ij5Nb3VzZV9FdmVudDwvQT4gPGI+dXNlPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTcwXzEwIj5JZDwvQT4gICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gICAwIC4uICAxNTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE3Ml8xMCI+WDwvQT4gICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICAzMiAuLiAgNjM7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNzJfMTMiPlk8L0E+ICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNjQgLi4gIDk1OwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTcyXzE2Ij5aPC9BPiAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDk2IC4uIDEyNzsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE3NF8xMCI+QnN0YXRlPC9BPiAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDEyOCAuLiAxNTk7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNjVfMTAiPklkPC9BPiAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzEwXzQiPk1FVkVOVF9pZF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zMTFfNCI+TUVWRU5UX2lkX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTY3XzEwIj5YPC9BPiAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMxMl80Ij5NRVZFTlRfeF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zMTNfNCI+TUVWRU5UX3hfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl8xNjdfMTMiPlk8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzE0XzQiPk1FVkVOVF95X0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMxNV80Ij5NRVZFTlRfeV9MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzE2N18xNiI+WjwvQT4gICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zMTZfNCI+TUVWRU5UX3pfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzE3XzQiPk1FVkVOVF96X0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMTY5XzEwIj5Cc3RhdGU8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMxOF80Ij5NRVZFTlRfYnN0YXRlX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMxOV80Ij5NRVZFTlRfYnN0YXRlX0xhc3Q8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBQbGVhc2Ugbm90ZTogdGhpcyByZXAuIGNsYXVzZSBpcyBnZW5lcmF0ZWQgYW5kIG1heSBiZTwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgZGlmZmVyZW50IG9uIHlvdXIgc3lzdGVtLjwvRU0+PC9GT05UPgorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl84NF85Ij5Nb3VzZV9FdmVudDwvQT4nU2l6ZSA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzIwXzQiPk1FVkVOVF9TaXplPC9BPjsKKyAgIEdlbmVyYXRpb25fQml0X09yZGVyIDogU3lzdGVtLkJpdF9PcmRlciA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEwXzQiPkJpdF9PcmRlcjwvQT47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg5XzQiPkdlbmVyYXRpb25fQml0X09yZGVyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gU3lzdGVtLkJpdF9PcmRlciA6PSBTeXN0ZW0uTG93X09yZGVyX0ZpcnN0OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGNvbnN0YW50IG1heSBiZSBkaWZmZXJlbnQgb24geW91ciBzeXN0ZW0uPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg5XzQiPkJVVFRPTl9DVFJMPC9BPjwvc3Bhbj4gICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM0OF80Ij5CVVRUT05fQ1RSTDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkwXzQiPkJVVFRPTl9TSElGVDwvQT48L3NwYW4+ICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM0OV80Ij5CVVRUT05fU0hJRlQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MV80Ij5CVVRUT05fQUxUPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNTBfNCI+QlVUVE9OX0FMVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkyXzQiPkJVVFRPTjFfRVZFTlRTPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMyOV80Ij5hbGxfZXZlbnRzX2J1dHRvbl8xPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTRfNCI+QlVUVE9OMl9FVkVOVFM8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzM1XzQiPmFsbF9ldmVudHNfYnV0dG9uXzI8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Nl80Ij5CVVRUT04zX0VWRU5UUzwvQT48L3NwYW4+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNDFfNCI+YWxsX2V2ZW50c19idXR0b25fMzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4XzQiPkJVVFRPTjRfRVZFTlRTPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl81Nl85Ij5FdmVudF9NYXNrPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM0N180Ij5hbGxfZXZlbnRzX2J1dHRvbl80PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDBfNCI+QUxMX01PVVNFX0VWRU5UUzwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzUyXzQiPkFMTF9NT1VTRV9FVkVOVFM8L0E+OworICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTdfNCI+Tm9fRXZlbnRzPC9BPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNTZfOSI+RXZlbnRfTWFzazwvQT4gOj0gMDsKKyAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU4XzQiPkFsbF9FdmVudHM8L0E+ICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzU2XzkiPkV2ZW50X01hc2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzIwMF80Ij5BTExfTU9VU0VfRVZFTlRTPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTJfNCI+QlVUVE9OMV9SRUxFQVNFRDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwMDEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTNfNCI+QlVUVE9OMV9QUkVTU0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwMDIjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfNCI+QlVUVE9OMV9DTElDS0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwMDQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTVfNCI+QlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwMTAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTZfNCI+QlVUVE9OMV9UUklQTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwMjAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTdfNCI+QlVUVE9OMV9SRVNFUlZFRF9FVkVOVDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwNDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOThfNCI+QlVUVE9OMl9SRUxFQVNFRDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAxMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTlfNCI+QlVUVE9OMl9QUkVTU0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAyMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDBfNCI+QlVUVE9OMl9DTElDS0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDA0MDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDFfNCI+QlVUVE9OMl9ET1VCTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDEwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDJfNCI+QlVUVE9OMl9UUklQTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDIwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDNfNCI+QlVUVE9OMl9SRVNFUlZFRF9FVkVOVDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDQwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDRfNCI+QlVUVE9OM19SRUxFQVNFRDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMTAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDVfNCI+QlVUVE9OM19QUkVTU0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMjAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDZfNCI+QlVUVE9OM19DTElDS0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwNDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfNCI+QlVUVE9OM19ET1VCTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAxMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDhfNCI+QlVUVE9OM19UUklQTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAyMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDlfNCI+QlVUVE9OM19SRVNFUlZFRF9FVkVOVDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDA0MDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTBfNCI+QlVUVE9ONF9SRUxFQVNFRDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDEwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTFfNCI+QlVUVE9ONF9QUkVTU0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDIwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTJfNCI+QlVUVE9ONF9DTElDS0VEPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDQwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTNfNCI+QlVUVE9ONF9ET1VCTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMTAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTRfNCI+QlVUVE9ONF9UUklQTEVfQ0xJQ0tFRDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMjAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTVfNCI+QlVUVE9ONF9SRVNFUlZFRF9FVkVOVDwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwNDAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTZfNCI+QlVUVE9OX0NUUkw8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAxMDAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTdfNCI+QlVUVE9OX1NISUZUPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAyMDAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMThfNCI+QlVUVE9OX0FMVDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDA0MDAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTlfNCI+UkVQT1JUX01PVVNFX1BPU0lUSU9OPC9BPjwvRk9OVD4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDEwMDAwMDAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjBfNCI+QUxMX01PVVNFX0VWRU5UUzwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDA3Nzc3Nzc3NzcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjFfNCI+QlVUVE9OMV9FVkVOVFM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDAwNzcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjJfNCI+QlVUVE9OMl9FVkVOVFM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDAwMDc3MDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjNfNCI+QlVUVE9OM19FVkVOVFM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwMDA3NzAwMDAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjRfNCI+QlVUVE9ONF9FVkVOVFM8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtbW91c2VfX2Fkcy5odG0jcmVmXzY0XzkiPkV2ZW50X01hc2s8L0E+IDo9IDgjMDAwNzcwMDAwMDAjOwotCi0gICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NV80Ij5Ob19FdmVudHM8L0E+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl82NF85Ij5FdmVudF9NYXNrPC9BPiA6PSAwOwotICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjZfNCI+QWxsX0V2ZW50czwvQT4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNjRfOSI+RXZlbnRfTWFzazwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfMjIwXzQiPkFMTF9NT1VTRV9FVkVOVFM8L0E+OwotCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLW1vdXNlX19hZHMuaHRtI3JlZl80OF8zNSI+TW91c2U8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1tb3VzZV9fYWRzLmh0bSNyZWZfNDRfMzUiPk1vdXNlPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bQppbmRleCAxMDZhOTI0Li44OTkzNjRmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0KQEAgLTEsODQgKzEsOTYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5QYW5lbHMuVXNlcl9EYXRhICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47Ci08Yj51c2U8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OwotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPjsKLTxiPnVzZTwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzLlVzZXJfRGF0YSAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47Cis8Yj51c2U8L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPjsKKzxiPnVzZTwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N180NyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MiI+VXNlcl9EYXRhPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180NyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MiI+VXNlcl9EYXRhPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnVzZTwvYj4gPGI+dHlwZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OworICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzI5Ij5QYW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMjkiPlBhbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU0XzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfMTYiPlNldF9QYW5lbF9Vc2VycHRyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTRfMTYiPlBhbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81NF8xNiI+QWRkcjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzE2Ij5TZXRfUGFuZWxfVXNlcnB0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTRfMTYiPlBhbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU0XzE2Ij5BZGRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTZXRfUGFuZWxfVXNlcnB0ciwgInNldF9wYW5lbF91c2VycHRyIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzU0XzE2Ij5TZXRfUGFuZWxfVXNlcnB0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTNfMjkiPlBhbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTRfMjkiPkRhdGE8L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTRfMTYiPlNldF9QYW5lbF9Vc2VycHRyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18yOSI+UGFuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81NF8yOSI+RGF0YTwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzU5XzQiPlBhbmVsX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81M18xNCI+U2V0X1VzZXJfRGF0YTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMjgiPlBhbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjRfMjgiPlBhbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMTYiPlBhbmVsX1VzZXJwdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82NV8xNiI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV8xNiI+UGFuZWxfVXNlcnB0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjVfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjVfMTYiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBQYW5lbF9Vc2VycHRyLCAicGFuZWxfdXNlcnB0ciIpOwogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjVfMTYiPlBhbmVsX1VzZXJwdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzY0XzI4Ij5QYW48L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8xNCI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzI5Ij5QYW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83Ml8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82MF8yOSI+RGF0YTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl81OV8yOSI+UGFuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzJfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNjBfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82MF8yOSI+RGF0YTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl82NF8xMyI+R2V0X1VzZXJfRGF0YTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNTlfMjkiPlBhbjwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzU5XzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXJfRGF0YTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MiI+VXNlcl9EYXRhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bQppbmRleCBjNmI4ZmQ0Li5kYWNkMjI4IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0KQEAgLTEsNzUgKzEsODcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YS5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5QYW5lbHMuVXNlcl9EYXRhICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE0IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzLlVzZXJfRGF0YSAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xNSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKIDxiPmdlbmVyaWM8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+bGltaXRlZDwvYj4gPGI+cHJpdmF0ZTwvYj47Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXJfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQzXzkiPlVzZXI8L0E+OwotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzQyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzQ3XzQ3Ij5Vc2VyX0RhdGE8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXJfRGF0YTwvQT4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bGltaXRlZDwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MiI+VXNlcl9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDNfOSI+VXNlcjwvQT47Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV80MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl80N180NyI+VXNlcl9EYXRhPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ1XzQyIj5Vc2VyX0RhdGE8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5wYW5lbC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTFfMTQiPlNldF9Vc2VyX0RhdGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8yOSI+UGFuPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81Ml8yOSI+RGF0YTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+c2V0X3BhbmVsX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl81MV8xNCI+U2V0X1VzZXJfRGF0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNTFfMjkiPlBhbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzUyXzI5Ij5EYXRhPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzQ0XzkiPlVzZXJfQWNjZXNzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5zZXRfcGFuZWxfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2Fkcy5odG0jcmVmXzUzXzE0Ij5TZXRfVXNlcl9EYXRhPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcxXzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzFfMjkiPlBhbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcyXzI5Ij5EYXRhPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfdXNlcnB0cjwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzcxXzE0Ij5HZXRfVXNlcl9EYXRhPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl83MV8yOSI+UGFuPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNzJfMjkiPkRhdGE8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZGIuaHRtI3JlZl82M18xMyI+R2V0X1VzZXJfRGF0YTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzYzXzI4Ij5QYW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NF85Ij5Vc2VyX0FjY2VzczwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsX3VzZXJwdHI8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRiLmh0bSNyZWZfNjNfMTMiPkdldF9Vc2VyX0RhdGE8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy11c2VyX2RhdGFfX2FkYi5odG0jcmVmXzYzXzI4Ij5QYW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDRfOSI+VXNlcl9BY2Nlc3M8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfdXNlcnB0cjwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChHZXRfVXNlcl9EYXRhKTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLXVzZXJfZGF0YV9fYWRzLmh0bSNyZWZfNDVfNDIiPlVzZXJfRGF0YTwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMtdXNlcl9kYXRhX19hZHMuaHRtI3JlZl80NV80MiI+VXNlcl9EYXRhPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0KaW5kZXggZmY1YTFiYi4uMzMyMDQ2MyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bQpAQCAtMSwxNzEgKzEsMTgzIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlBhbmVscyAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEzIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDQvMDgvMjEgMjE6Mzc6MDAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMDkvMTIvMjYgMTc6Mzg6NTggQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDRfMzUiPlBhbmVsczwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82N18xMyI+Q3JlYXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82N18yMSI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82Nl8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzY2XzIxIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8xNiI+TmV3cGFuZWw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzUxXzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMTYiPk5ld3BhbmVsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzUxXzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOZXdwYW5lbCwgIm5ld19wYW5lbCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciPlBhbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NF83Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl81NF83Ij5QYW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl81MV8xNiI+TmV3cGFuZWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNjdfMjEiPldpbjwvQT4pOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl81NF83Ij5QYW48L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzU0XzQiPk51bGxfUGFuZWw8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzYwXzQiPlBhbmVsX0V4Y2VwdGlvbjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNTRfNyI+UGFuPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNTFfMTYiPk5ld3BhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzY2XzIxIj5XaW48L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNTRfNyI+UGFuPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81M180Ij5OdWxsX1BhbmVsPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81OV80Ij5QYW5lbF9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl81NF83Ij5QYW48L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNjdfMTMiPkNyZWF0ZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82Nl8xMyI+Q3JlYXRlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNzdfMTQiPkJvdHRvbTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNzdfMjIiPlBhbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzc2XzE0Ij5Cb3R0b208L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNzZfMjIiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMTYiPkJvdHRvbXBhbmVsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl82NV8xNiI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV8xNiI+Qm90dG9tcGFuZWw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNjVfMTYiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBCb3R0b21wYW5lbCwgImJvdHRvbV9wYW5lbCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzY1XzE2Ij5Cb3R0b21wYW5lbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl83N18yMiI+UGFuPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNjBfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNjVfMTYiPkJvdHRvbXBhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzc2XzIyIj5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81OV80Ij5QYW5lbF9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl83N18xNCI+Qm90dG9tPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzc2XzE0Ij5Cb3R0b208L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84Ml8xNCI+VG9wPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84Ml8xOSI+UGFuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODFfMTQiPlRvcDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84MV8xOSI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NV8xNiI+VG9wcGFuZWw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzc1XzE2Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1XzE2Ij5Ub3BwYW5lbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl83NV8xNiI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFRvcHBhbmVsLCAidG9wX3BhbmVsIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNzVfMTYiPlRvcHBhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzgyXzE5Ij5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl83NV8xNiI+VG9wcGFuZWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODFfMTkiPlBhbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzU5XzQiPlBhbmVsX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzgyXzE0Ij5Ub3A8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODFfMTQiPlRvcDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzg3XzE0Ij5TaG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84N18yMCI+UGFuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODZfMTQiPlNob3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODZfMjAiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODVfMTYiPlNob3dwYW5lbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfODVfMTYiPlBhbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODVfMTYiPlNob3dwYW5lbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl84NV8xNiI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNob3dwYW5lbCwgInNob3dfcGFuZWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl84NV8xNiI+U2hvd3BhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzg3XzIwIj5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl84NV8xNiI+U2hvd3BhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzg2XzIwIj5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81OV80Ij5QYW5lbF9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84N18xNCI+U2hvdzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84Nl8xNCI+U2hvdzwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzk3XzE0Ij5IaWRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl85N18yMCI+UGFuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTZfMTQiPkhpZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTZfMjAiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTVfMTYiPkhpZGVwYW5lbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfOTVfMTYiPlBhbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMTYiPkhpZGVwYW5lbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl85NV8xNiI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEhpZGVwYW5lbCwgImhpZGVfcGFuZWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl85NV8xNiI+SGlkZXBhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzk3XzIwIj5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl85NV8xNiI+SGlkZXBhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzk2XzIwIj5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81OV80Ij5QYW5lbF9FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl85N18xNCI+SGlkZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl85Nl8xNCI+SGlkZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwM18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMl8xMyI+R2V0X1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwM18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMl8yNSI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTAxXzEzIj5HZXRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMDFfMjUiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNV8xNiI+UGFuZWxfV2luPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTA1XzE2Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA1XzE2Ij5QYW5lbF9XaW48L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEwNV8xNiI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUGFuZWxfV2luLCAicGFuZWxfd2luZG93Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4XzciPldpbjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEwNV8xNiI+UGFuZWxfV2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMl8yNSI+UGFuPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzciPldpbjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEwNV8xNiI+UGFuZWxfV2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMV8yNSI+UGFuPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTA4XzciPldpbjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNjBfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTA4XzciPldpbjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNTlfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTA4XzciPldpbjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMDJfMTMiPkdldF9XaW5kb3c8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTAxXzEzIj5HZXRfV2luZG93PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8xNCI+UmVwbGFjZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNl8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8yMyI+UGFuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMl8yMyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMF8xNCI+UmVwbGFjZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTEwXzIzIj5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8yMyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTlfMTYiPlJlcGxhY2VfUGFuPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTE5XzE2Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMTlfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5XzE2Ij5SZXBsYWNlX1BhbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTE5XzE2Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzExOV8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFJlcGxhY2VfUGFuLCAicmVwbGFjZV9wYW5lbCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzExOV8xNiI+UmVwbGFjZV9QYW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTExXzIzIj5QYW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTEyXzIzIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMTlfMTYiPlJlcGxhY2VfUGFuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMF8yMyI+UGFuPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8yMyI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNTlfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTExXzE0Ij5SZXBsYWNlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMF8xNCI+UmVwbGFjZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTdfMTQiPk1vdmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTdfMjAiPlBhbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjlfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMThfMjAiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE5XzIwIj5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE2XzE0Ij5Nb3ZlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTZfMjAiPlBhbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE3XzIwIj5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMThfMjAiPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzE2Ij5Nb3ZlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTMyXzE2Ij5QYW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMl8xNiI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTMyXzE2Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzJfMTYiPk1vdmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMl8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMl8xNiI+UGFuPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzM18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMl8xNiI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMzJfMTYiPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTW92ZSwgIm1vdmVfcGFuZWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMzJfMTYiPk1vdmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE3XzIwIj5QYW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExOF8yMCI+TGluZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExOV8yMCI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzYwXzQiPlBhbmVsX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMl8xNiI+TW92ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTZfMjAiPlBhbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE3XzIwIj5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE4XzIwIj5Db2x1bW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNTlfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE3XzE0Ij5Nb3ZlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExNl8xNCI+TW92ZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyNF8xMyI+SXNfSGlkZGVuPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTI0XzI0Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMjNfMTMiPklzX0hpZGRlbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTIzXzI0Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDRfMTYiPlBhbmVsX0hpZGRlbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE0NF8xNiI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDRfMTYiPlBhbmVsX0hpZGRlbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTQ0XzE2Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUGFuZWxfSGlkZGVuLCAicGFuZWxfaGlkZGVuIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTQ0XzE2Ij5QYW5lbF9IaWRkZW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTI0XzI0Ij5QYW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE0NF8xNiI+UGFuZWxfSGlkZGVuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyM18yNCI+UGFuPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjhfNCI+Q3Vyc2VzX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyNF8xMyI+SXNfSGlkZGVuPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyM18xMyI+SXNfSGlkZGVuPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzOV8xNCI+RGVsZXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTM5XzIyIj5QYW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMzhfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTM4XzIyIj5QYW48L0E+PC9zcGFuPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1Nl8xNiI+RGVsX1BhbmVsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTU2XzE2Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1Nl8xNiI+RGVsX1BhbmVsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTZfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xNTZfMTYiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEZWxfUGFuZWwsICJkZWxfcGFuZWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xNTZfMTYiPkRlbF9QYW5lbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMzlfMjIiPlBhbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzYwXzQiPlBhbmVsX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE1Nl8xNiI+RGVsX1BhbmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzOF8yMiI+UGFuPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNTlfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzOV8yMiI+UGFuPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNTRfNCI+TnVsbF9QYW5lbDwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMzlfMTQiPkRlbGV0ZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTM4XzIyIj5QYW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81M180Ij5OdWxsX1BhbmVsPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzOF8xNCI+RGVsZXRlPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bQppbmRleCA5ZWU5MzcwLi44NDNjM2NlIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtCkBAIC0xLDE1MyArMSwxNjQgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHMuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVscy5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTkgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUGFuZWxzICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMjIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6NTcgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gU3lzdGVtOwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzQ1XzQwIj5QYW5lbHM8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ0XzM1Ij5QYW5lbHM8L0E+KTsKLSAgIDxiPnByYWdtYTwvYj4gTGlua2VyX09wdGlvbnMgKCItbHBhbmVsdyIpOwotICAgPGI+cHJhZ21hPC9iPiBMaW5rZXJfT3B0aW9ucyAoIi1sbmN1cnNlc3ciKTsKKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl80NV80MCI+UGFuZWxzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICA8Yj5wcmFnbWE8L2I+IFByZWVsYWJvcmF0ZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPik7CisgICA8Yj5wcmFnbWE8L2I+IExpbmtlcl9PcHRpb25zICgiLWxwYW5lbCIgJmFtcDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl85XzQiPkRGVF9BUkdfU1VGRklYPC9BPik7CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfOSI+UGFuZWw8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfOSI+UGFuZWw8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSW50ZXJmYWNlIGNvbnN0YW50cyAgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfNCI+TnVsbF9QYW5lbDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW50ZXJmYWNlIGNvbnN0YW50cyAgLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNCI+TnVsbF9QYW5lbDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV4Y2VwdGlvbnMgICAtLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRXhjZXB0aW9ucyAgIC0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MF80Ij5QYW5lbF9FeGNlcHRpb248L0E+PC9GT05UPiA6IDxiPmV4Y2VwdGlvbjwvYj47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfNCI+UGFuZWxfRXhjZXB0aW9uPC9BPjwvc3Bhbj4gOiA8Yj5leGNlcHRpb248L2I+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWwuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNDlfMTMiPkNyZWF0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNDlfMjEiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5uZXdfcGFuZWwoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl80OV8xMyI+Q3JlYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzQ5XzIxIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPm5ld19wYW5lbCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKENyZWF0ZSk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IE5ld19QYW5lbCAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83Ml8yNCI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzY3XzEzIj5DcmVhdGU8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5uZXdfcGFuZWwoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJhZ21hIElubGluZSAoTmV3X1BhbmVsKTs8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiBOZXdfUGFuZWwgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MV8yNCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzY2XzEzIj5DcmVhdGU8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+bmV3X3BhbmVsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBwcmFnbWEgSW5saW5lIChOZXdfUGFuZWwpOzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzYzXzE0Ij5Cb3R0b208L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzYzXzIyIj5QYW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+Ym90dG9tX3BhbmVsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzc3XzE0Ij5Cb3R0b208L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNjNfMTQiPkJvdHRvbTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl82M18yMiI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPmJvdHRvbV9wYW5lbCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl83Nl8xNCI+Qm90dG9tPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNzNfMTQiPlRvcDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfNzNfMTkiPlBhbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj50b3BfcGFuZWwoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfODJfMTQiPlRvcDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl83M18xNCI+VG9wPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzczXzE5Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+dG9wX3BhbmVsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzgxXzE0Ij5Ub3A8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl84M18xNCI+U2hvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg3XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfODNfMjAiPlBhbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5zaG93X3BhbmVsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzg3XzE0Ij5TaG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzgzXzE0Ij5TaG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzgzXzIwIj5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+c2hvd19wYW5lbCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl84Nl8xNCI+U2hvdzwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Ml8xNCI+VXBkYXRlX1BhbmVsczwvQT48L0ZPTlQ+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj51cGRhdGVfcGFuZWxzKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MV8xNCI+VXBkYXRlX1BhbmVsczwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+dXBkYXRlX3BhbmVscygpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFVwZGF0ZV9QYW5lbHMsICJ1cGRhdGVfcGFuZWxzIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfOTNfMTQiPkhpZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85N18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzkzXzIwIj5QYW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+aGlkZV9wYW5lbCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl85N18xNCI+SGlkZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl85M18xNCI+SGlkZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl85M18yMCI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPmhpZGVfcGFuZWwoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfOTZfMTQiPkhpZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMDNfMTMiPkdldF9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMDNfMjUiPlBhbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5wYW5lbF93aW5kb3coKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTAyXzEzIj5HZXRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEwM18xMyI+R2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTAzXzI1Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsX3dpbmRvdygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMDFfMTMiPkdldF9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gUGFuZWxfV2luZG93ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwN18yNyI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEwMl8xMyI+R2V0X1dpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHByYWdtYSBJbmxpbmUgKFBhbmVsX1dpbmRvdyk7PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gUGFuZWxfV2luZG93ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2XzI3Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTAxXzEzIj5HZXRfV2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByYWdtYSBJbmxpbmUgKFBhbmVsX1dpbmRvdyk7PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMTZfMTQiPlJlcGxhY2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMTZfMjMiPlBhbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMTdfMjMiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5yZXBsYWNlX3BhbmVsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzExMV8xNCI+UmVwbGFjZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzExNl8xNCI+UmVwbGFjZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTE2XzIzIj5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzExN18yMyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnJlcGxhY2VfcGFuZWwoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTEwXzE0Ij5SZXBsYWNlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMjhfMTQiPk1vdmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMjhfMjAiPlBhbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMThfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMjlfMjAiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTMwXzIwIj5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+bW92ZV9wYW5lbCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMTdfMTQiPk1vdmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMjhfMTQiPk1vdmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEyOF8yMCI+UGFuPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xMjlfMjAiPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzEzMF8yMCI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPm1vdmVfcGFuZWwoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTE2XzE0Ij5Nb3ZlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE0Ml8xMyI+SXNfSGlkZGVuPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTQyXzI0Ij5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfaGlkZGVuKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyNF8xMyI+SXNfSGlkZGVuPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xNDJfMTMiPklzX0hpZGRlbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTQyXzI0Ij5QYW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsX2hpZGRlbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMjNfMTMiPklzX0hpZGRlbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjlfMTMiPkFib3ZlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfMTI5XzEzIj5QYW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ5XzkiPlBhbmVsPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfYWJvdmUoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOF8xMyI+QWJvdmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEyOF8xMyI+UGFuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OF85Ij5QYW5lbDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9wYW5lbC4zeC5odG1sIj5wYW5lbF9hYm92ZSgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEFib3ZlLCAicGFuZWxfYWJvdmUiKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0XzEzIj5CZWxvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzEzNF8xMyI+UGFuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80OV85Ij5QYW5lbDwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPnBhbmVsX2JlbG93KCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfMTMiPkJlbG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl8xMzNfMTMiPlBhbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2Fkcy5odG0jcmVmXzQ4XzkiPlBhbmVsPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+cGFuZWxfYmVsb3coKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBCZWxvdywgInBhbmVsX2JlbG93Iik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZGIuaHRtI3JlZl8xNTRfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE1NF8yMiI+UGFuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vcGFuZWwuM3guaHRtbCI+ZGVsX3BhbmVsKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRiLmh0bSNyZWZfMTU0XzE0Ij5EZWxldGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzOF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wYW5lbHNfX2FkYi5odG0jcmVmXzE1NF8yMiI+UGFuPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3BhbmVsLjN4Lmh0bWwiPmRlbF9wYW5lbCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKERlbGV0ZSk7CiAKIDxiPnByaXZhdGU8L2I+Ci0gICAgICA8Yj50eXBlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81NF80Ij5OdWxsX1BhbmVsPC9BPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDlfOSI+UGFuZWw8L0E+IDo9IDA7CisgICAgICA8Yj50eXBlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl81M180Ij5OdWxsX1BhbmVsPC9BPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXBhbmVsc19fYWRzLmh0bSNyZWZfNDhfOSI+UGFuZWw8L0E+IDo9IDA7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcGFuZWxzX19hZHMuaHRtI3JlZl80NF8zNSI+UGFuZWxzPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0KaW5kZXggOGYxZjk4Ny4uNTNmNDFmNyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bQpAQCAtMSw4MyArMSw5NSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW4uYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbi5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW4uYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUHV0V2luICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4zIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuUHV0V2luICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4zIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgogCiA8Yj53aXRoPC9iPiBBZGEuU3RyZWFtcy5TdHJlYW1fSU8uQ19TdHJlYW1zOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkNfU3RyZWFtczsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DX1N0cmVhbXM7Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDNfMzUiPlB1dFdpbjwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQzXzM1Ij5QdXRXaW48L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cGFja2FnZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18xMiI+SUNTPC9BPjwvRk9OVD4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkNfU3RyZWFtczsKLSAgIDxiPnBhY2thZ2U8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfMTIiPkFDUzwvQT48L0ZPTlQ+IDxiPnJlbmFtZXM8L2I+IEFkYS5TdHJlYW1zLlN0cmVhbV9JTy5DX1N0cmVhbXM7Ci0gICA8Yj51c2U8L2I+IDxiPnR5cGU8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgPGI+cGFja2FnZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzEyIj5JQ1M8L0E+PC9zcGFuPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQ19TdHJlYW1zOworICAgPGI+cGFja2FnZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzEyIj5BQ1M8L0E+PC9zcGFuPiA8Yj5yZW5hbWVzPC9iPiBBZGEuU3RyZWFtcy5TdHJlYW1fSU8uQ19TdHJlYW1zOworICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDVfMTQiPlB1dF9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ1XzI2Ij5XaW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80Nl8yNiI+RmlsZTwvQT48L0ZPTlQ+IDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSkgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xNiI+cHV0d2luPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81M18xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNTNfMTYiPmY8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl80N18xMiI+SUNTPC9BPi5GSUxFcykgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDVfMTQiPlB1dF9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDVfMjYiPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDZfMjYiPkZpbGU8L0E+PC9zcGFuPiA6IEFkYS5TdHJlYW1zLlN0cmVhbV9JTy5GaWxlX1R5cGUpIDxiPmlzPC9iPgorICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18xNiI+cHV0d2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzUzXzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzUzXzE2Ij5mPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNDdfMTIiPklDUzwvQT4uRklMRXMpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgcHV0d2luLCAicHV0d2luIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTZfNyI+UjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81M18xNiI+cHV0d2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ1XzI2Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNDhfMTIiPkFDUzwvQT4uQ19TdHJlYW0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80Nl8yNiI+RmlsZTwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl83Ij5SPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzUzXzE2Ij5wdXR3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDVfMjYiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl80OF8xMiI+QUNTPC9BPi5DX1N0cmVhbSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ2XzI2Ij5GaWxlPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzU2XzciPlI8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV80Ij5DdXJzZXNfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81Nl83Ij5SPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjRfNCI+Q3Vyc2VzX09rPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDVfMTQiPlB1dF9XaW5kb3c8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ4XzEzIj5HZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80OF8yNSI+RmlsZTwvQT48L0ZPTlQ+IDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1XzE2Ij5nZXR3aW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzY1XzE2Ij5mPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNDdfMTIiPklDUzwvQT4uRklMRXMpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80OF8xMyI+R2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80OF8yNSI+RmlsZTwvQT48L3NwYW4+IDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA8Yj5pczwvYj4KKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjVfMTYiPmdldHdpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjVfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl82NV8xNiI+ZjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzQ3XzEyIj5JQ1M8L0E+LkZJTEVzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgZ2V0d2luLCAiZ2V0d2luIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjhfNyI+VzwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzY1XzE2Ij5nZXR3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNDhfMTIiPkFDUzwvQT4uQ19TdHJlYW0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtI3JlZl80OF8yNSI+RmlsZTwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OF83Ij5XPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNjVfMTYiPmdldHdpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl80OF8xMiI+QUNTPC9BPi5DX1N0cmVhbSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0jcmVmXzQ4XzI1Ij5GaWxlPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzY4XzciPlc8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl82OF83Ij5XPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl82OF83Ij5XPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDhfMTMiPkdldF9XaW5kb3c8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDNfMzUiPlB1dFdpbjwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDNfMzUiPlB1dFdpbjwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZHMuaHRtCmluZGV4IDBiZjYwZTYuLjczNjAzY2EgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2Fkcy5odG0KQEAgLTEsNTYgKzEsNjggQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW4uYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbi5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlB1dFdpbiAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMyBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlB1dFdpbiAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KIAogPGI+d2l0aDwvYj4gQWRhLlN0cmVhbXMuU3RyZWFtX0lPOwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80M18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzQ1XzQwIj5QdXRXaW48L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDNfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl80NV80MCI+UHV0V2luPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzUxXzE0Ij5QdXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81MV8yNiI+V2luPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNTJfMjYiPkZpbGU8L0E+PC9GT05UPiA6IEFkYS5TdHJlYW1zLlN0cmVhbV9JTy5GaWxlX1R5cGUpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81MV8xNCI+UHV0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81MV8yNiI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtcHV0d2luX19hZGIuaHRtI3JlZl81Ml8yNiI+RmlsZTwvQT48L3NwYW4+IDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSk7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRiLmh0bSNyZWZfNjNfMTMiPkdldF9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzYzXzI1Ij5GaWxlPC9BPjwvRk9OVD4gIDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzYzXzEzIj5HZXRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1wdXR3aW5fX2FkYi5odG0jcmVmXzYzXzI1Ij5GaWxlPC9BPjwvc3Bhbj4gIDogQWRhLlN0cmVhbXMuU3RyZWFtX0lPLkZpbGVfVHlwZSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDNfMzUiPlB1dFdpbjwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXB1dHdpbl9fYWRzLmh0bSNyZWZfNDNfMzUiPlB1dFdpbjwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0KaW5kZXggMjdiMjMwMi4uYzhjNzkyYyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtCkBAIC0xLDgyICsxLDk0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGVybWNhcCAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGVybWNhcCAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAwOS8xMi8yNiAxNzozODo1OCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47IDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzQyXzM1Ij5UZXJtY2FwPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzQyXzM1Ij5UZXJtY2FwPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzU5XzEzIj5HZXRfRW50cnk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81OV8yNCI+TmFtZTwvQT48L0ZPTlQ+IDogU3RyaW5nKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTlfMTMiPkdldF9FbnRyeTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTlfMjQiPk5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzE2Ij50Z2V0ZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNTFfMTYiPm5hbWU8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXk7IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfNDQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNTFfMTYiPnZhbDwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzE2Ij50Z2V0ZW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl81MV8xNiI+bmFtZTwvQT48L3NwYW4+IDogY2hhcl9hcnJheTsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzQ0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzUxXzE2Ij52YWw8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXkpCisgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRnZXRlbnQsICJ0Z2V0ZW50Iik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciPk5hbWVUeHQ8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81OV8yNCI+TmFtZTwvQT4nTGVuZ3RoKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gIDogc2l6ZV90OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5pZ25vcmVkPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gY2hhcl9hcnJheSAoMCAuLiAwKSA6PSAoMCA9Jmd0OyBudWwpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183Ij5yZXN1bHQ8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NF83Ij5OYW1lVHh0PC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTlfMjQiPk5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyI+TGVuZ3RoPC9BPjwvc3Bhbj4gIDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2XzciPmlnbm9yZWQ8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBjaGFyX2FycmF5ICgwIC4uIDApIDo9ICgwID0mZ3Q7IG51bCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfNyI+cmVzdWx0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTlfMjQiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzU0XzciPk5hbWVUeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzU1XzciPkxlbmd0aDwvQT4pOwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl81N183Ij5yZXN1bHQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNTFfMTYiPnRnZXRlbnQ8L0E+IChjaGFyX2FycmF5ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzU2XzciPmlnbm9yZWQ8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl81NF83Ij5OYW1lVHh0PC9BPik7CiAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl81N183Ij5yZXN1bHQ8L0E+ID0gLTEgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gQm9vbGVhbidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNTdfNyI+cmVzdWx0PC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81OV8xMyI+R2V0X0VudHJ5PC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjNfMTMiPkdldF9GbGFnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjNfMjMiPk5hbWU8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82M18xMyI+R2V0X0ZsYWc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzYzXzIzIj5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8xNiI+dGdldGZsYWc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl83MV8xNiI+aWQ8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzE2Ij50Z2V0ZmxhZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNzFfMTYiPmlkPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRnZXRmbGFnLCAidGdldGZsYWciKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfNyI+VHh0PC9BPjwvRk9OVD4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjNfMjMiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0XzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzciPlR4dDwvQT48L3NwYW4+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzYzXzIzIj5OYW1lPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0XzciPkxlbmd0aDwvQT48L3NwYW4+IDogc2l6ZV90OwogICAgPGI+YmVnaW48L2I+CiAgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzYzXzIzIj5OYW1lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl83M183Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzc0XzciPkxlbmd0aDwvQT4pOwogICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNzFfMTYiPnRnZXRmbGFnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl83M183Ij5UeHQ8L0E+KSA9IDAgPGI+dGhlbjwvYj4KQEAgLTg2LDE1ICs5OCwxNSBAQAogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjNfMTMiPkdldF9GbGFnPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzY3XzE0Ij5HZXRfTnVtYmVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjdfMjYiPk5hbWU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82OF8yNiI+VmFsdWU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IEludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82OV8yNiI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjdfMTQiPkdldF9OdW1iZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzY3XzI2Ij5OYW1lPC9BPjwvc3Bhbj4gICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjhfMjYiPlZhbHVlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiBJbnRlZ2VyOworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82OV8yNiI+UmVzdWx0PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5XzE2Ij50Z2V0bnVtPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfODlfMTYiPmlkPC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OV8xNiI+dGdldG51bTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfODlfMTYiPmlkPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRnZXRudW0sICJ0Z2V0bnVtIik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxXzciPlR4dDwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzY3XzI2Ij5OYW1lPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Ml83Ij5MZW5ndGg8L0E+PC9GT05UPiA6IHNpemVfdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MV83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82N18yNiI+TmFtZTwvQT4nTGVuZ3RoKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl82N18yNiI+TmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfOTFfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl85Ml83Ij5MZW5ndGg8L0E+KTsKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjhfMjYiPlZhbHVlPC9BPiA6PSBJbnRlZ2VyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzg5XzE2Ij50Z2V0bnVtPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl85MV83Ij5UeHQ8L0E+KSk7CkBAIC0xMDUsNDAgKzExNyw0MCBAQAogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNjdfMTQiPkdldF9OdW1iZXI8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzczXzE0Ij5HZXRfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzczXzI2Ij5OYW1lPC9BPjwvRk9OVD4gICA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83NF8yNiI+VmFsdWU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83NV8yNiI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzczXzE0Ij5HZXRfU3RyaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzNfMjYiPk5hbWU8L0E+PC9zcGFuPiAgIDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzRfMjYiPlZhbHVlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83NV8yNiI+UmVzdWx0PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8xNiI+dGdldHN0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMDhfMTYiPmlkPC9BPjwvRk9OVD4gIDogY2hhcl9hcnJheTsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwOF8xNiI+YnVmPC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzE2Ij50Z2V0c3RyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDhfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTA4XzE2Ij5pZDwvQT48L3NwYW4+ICA6IGNoYXJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwOF8xNiI+YnVmPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCB0Z2V0c3RyLCAidGdldHN0ciIpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfNyI+VHh0PC9BPjwvRk9OVD4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzNfMjYiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMl83Ij5MZW5ndGg8L0E+PC9GT05UPiA6IHNpemVfdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEzXzciPlR4dDI8L0E+PC9GT05UPiAgIDogY2hhcnNfcHRyOwotICAgICAgPGI+dHlwZTwvYj4gdCA8Yj5pczwvYj4gPGI+bmV3PC9iPiBjaGFyX2FycmF5ICgwIC4uIDEwMjQpOyA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGRvZXMgaXQgbmVlZCB0byBiZSAxMDI0PzwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTVfNyI+UmV0dXJuX0J1ZmZlcjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IHQgOj0gKDxiPm90aGVyczwvYj4gPSZndDsgbnVsKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTFfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzNfMjYiPk5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEyXzciPkxlbmd0aDwvQT48L3NwYW4+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExM183Ij5UeHQyPC9BPjwvc3Bhbj4gICA6IGNoYXJzX3B0cjsKKyAgICAgIDxiPnR5cGU8L2I+IHQgPGI+aXM8L2I+IDxiPm5ldzwvYj4gY2hhcl9hcnJheSAoMCAuLiAxMDI0KTsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgZG9lcyBpdCBuZWVkIHRvIGJlIDEwMjQ/PC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE1XzciPlJldHVybl9CdWZmZXI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiB0IDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7IG51bCk7CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzNfMjYiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzExMV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzExMl83Ij5MZW5ndGg8L0E+KTsKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTEzXzciPlR4dDI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTA4XzE2Ij50Z2V0c3RyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMTFfNyI+VHh0PC9BPiwgY2hhcl9hcnJheSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMTVfNyI+UmV0dXJuX0J1ZmZlcjwvQT4pKTsKICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzExM183Ij5UeHQyPC9BPiA9IE51bGxfUHRyIDxiPnRoZW48L2I+CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzc1XzI2Ij5SZXN1bHQ8L0E+IDo9IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzRfMjYiPlZhbHVlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTEzXzciPlR4dDI8L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzRfMjYiPlZhbHVlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMTNfNyI+VHh0MjwvQT4pOwogICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83NV8yNiI+UmVzdWx0PC9BPiA6PSBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzNfMTQiPkdldF9TdHJpbmc8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzZfMTMiPkdldF9TdHJpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzZfMjUiPk5hbWU8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83Nl8xMyI+R2V0X1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI3XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzc2XzI1Ij5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjlfMTYiPnRnZXRzdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTI5XzE2Ij5JZDwvQT48L0ZPTlQ+ICA6IGNoYXJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMjlfMTYiPmJ1ZjwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOV8xNiI+dGdldHN0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEyOV8xNiI+SWQ8L0E+PC9zcGFuPiAgOiBjaGFyX2FycmF5OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMjlfMTYiPmJ1ZjwvQT48L3NwYW4+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgdGdldHN0ciwgInRnZXRzdHIiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzciPlR4dDwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzc2XzI1Ij5OYW1lPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzNfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNF83Ij5UeHQyPC9BPjwvRk9OVD4gICA6IGNoYXJzX3B0cjsKLSAgICAgIDxiPnR5cGU8L2I+IHQgPGI+aXM8L2I+IDxiPm5ldzwvYj4gY2hhcl9hcnJheSAoMCAuLiAxMDI0KTsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBkb2VzIGl0IG5lZWQgdG8gYmUgMTAyND88L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2XzciPlBob255X1R4dDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IHQgOj0gKDxiPm90aGVyczwvYj4gPSZndDsgbnVsKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzJfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzZfMjUiPk5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzXzciPkxlbmd0aDwvQT48L3NwYW4+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNF83Ij5UeHQyPC9BPjwvc3Bhbj4gICA6IGNoYXJzX3B0cjsKKyAgICAgIDxiPnR5cGU8L2I+IHQgPGI+aXM8L2I+IDxiPm5ldzwvYj4gY2hhcl9hcnJheSAoMCAuLiAxMDI0KTsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgZG9lcyBpdCBuZWVkIHRvIGJlIDEwMjQ/PC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM2XzciPlBob255X1R4dDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IHQgOj0gKDxiPm90aGVyczwvYj4gPSZndDsgbnVsKTsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl83Nl8yNSI+TmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTMyXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTMzXzciPkxlbmd0aDwvQT4pOwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMzRfNyI+VHh0MjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMjlfMTYiPnRnZXRzdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEzMl83Ij5UeHQ8L0E+LCBjaGFyX2FycmF5ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEzNl83Ij5QaG9ueV9UeHQ8L0E+KSk7CkBAIC0xNDksMjEgKzE2MSwyMSBAQAogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNzZfMTMiPkdldF9TdHJpbmc8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTNfMTMiPlRHb3RvPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ4XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzUzXzIwIj5DYXA8L0E+PC9GT05UPiA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81NF8yMCI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzU1XzIwIj5Sb3c8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IFRlcm1jYXBfU3RyaW5nIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUxXzE2Ij50Z290bzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNTFfMTYiPmNhcDwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheTsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1Ml8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNTFfMTYiPmNvbDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTUxXzE2Ij5yb3c8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81M18xMyI+VEdvdG88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81M18yMCI+Q2FwPC9BPjwvc3Bhbj4gOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81NF8yMCI+Q29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTVfMjAiPlJvdzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gVGVybWNhcF9TdHJpbmcgPGI+aXM8L2I+CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MV8xNiI+dGdvdG88L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNTFfMTYiPmNhcDwvQT48L3NwYW4+IDogY2hhcl9hcnJheTsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzE1MV8xNiI+Y29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUzXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzE1MV8xNiI+cm93PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgdGdvdG8pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTVfNyI+VHh0PC9BPjwvRk9OVD4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTNfMjAiPkNhcDwvQT4nTGVuZ3RoKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NV83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81M18yMCI+Q2FwPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1Nl83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl81M18yMCI+Q2FwPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNTVfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNTZfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5yZXR1cm48L2I+IFRlcm1jYXBfU3RyaW5nICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTIxXzEzIj5GaWxsX1N0cmluZzwvQT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTUxXzE2Ij50Z290bzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTU1XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzU0XzIwIj5Db2w8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTVfMjAiPlJvdzwvQT4pKSkpOworICAgICAgPGI+cmV0dXJuPC9iPiBUZXJtY2FwX1N0cmluZyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk3XzEzIj5GaWxsX1N0cmluZzwvQT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTUxXzE2Ij50Z290bzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTU1XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzU0XzIwIj5Db2w8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNTVfMjAiPlJvdzwvQT4pKSkpOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzUzXzEzIj5UR290bzwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSNyZWZfNDJfMzUiPlRlcm1jYXA8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl80Ml8zNSI+VGVybWNhcDwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0KaW5kZXggNTE2MjFiNi4uZjhlODY1NSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtCkBAIC0xLDg2ICsxLDk4IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXAuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRlcm1jYXAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4zIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRlcm1jYXAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4zIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNDdfNDAiPlRlcm1jYXA8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl80Ml8zNSI+VGVybWNhcDwvQT4pOworPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Ml8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl80N180MCI+VGVybWNhcDwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzQyXzM1Ij5UZXJtY2FwPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIGN1cnNfdGVybWNhcC4zeDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5vdCBpbXBsZW1lbnRlZDogIHRwdXRzIChzZWUgY3Vyc190ZXJtaW5mbyk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgY3Vyc190ZXJtY2FwLjN4PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6ICB0cHV0cyAoc2VlIGN1cnNfdGVybWluZm8pPC9FTT48L3NwYW4+CiAKICAgIDxiPnR5cGU8L2I+IFRlcm1jYXBfU3RyaW5nIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN0cmluZzsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xNDhfMTMiPlRHb3RvPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTQ4XzIwIj5DYXA8L0E+PC9GT05UPiA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzE0OV8yMCI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTUwXzIwIj5Sb3c8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IFRlcm1jYXBfU3RyaW5nOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHRnb3RvKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTQ4XzEzIj5UR290bzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTQ4XzIwIj5DYXA8L0E+PC9zcGFuPiA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTQ5XzIwIj5Db2w8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzE1MF8yMCI+Um93PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiBUZXJtY2FwX1N0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogdGdvdG8oKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzQ5XzEzIj5HZXRfRW50cnk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl80OV8yNCI+TmFtZTwvQT48L0ZPTlQ+IDogU3RyaW5nKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogdGdldGVudCgpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzQ5XzEzIj5HZXRfRW50cnk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzQ5XzI0Ij5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogdGdldGVudCgpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNjlfMTMiPkdldF9GbGFnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNjlfMjMiPk5hbWU8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHRnZXRmbGFnKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfNjlfMTMiPkdldF9GbGFnPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl82OV8yMyI+TmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHRnZXRmbGFnKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfODVfMTQiPkdldF9OdW1iZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl84NV8yNiI+TmFtZTwvQT48L0ZPTlQ+ICAgOiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl84Nl8yNiI+VmFsdWU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IEludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl84N18yNiI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHRnZXRudW0oKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfODVfMTQiPkdldF9OdW1iZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzg1XzI2Ij5OYW1lPC9BPjwvc3Bhbj4gICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfODZfMjYiPlZhbHVlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiBJbnRlZ2VyOworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl84N18yNiI+UmVzdWx0PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB0Z2V0bnVtKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTA0XzE0Ij5HZXRfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTA0XzI2Ij5OYW1lPC9BPjwvRk9OVD4gICA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwNV8yNiI+VmFsdWU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwNl8yNiI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pOwotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTI3XzEzIj5HZXRfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTI3XzI1Ij5OYW1lPC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgZm91bmQuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogdGdldHN0cigpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZGIuaHRtI3JlZl8xMDRfMTQiPkdldF9TdHJpbmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwNF8yNiI+TmFtZTwvQT48L3NwYW4+ICAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEwNV8yNiI+VmFsdWU8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTA2XzI2Ij5SZXN1bHQ8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQm9vbGVhbik7CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2FkYi5odG0jcmVmXzEyN18xMyI+R2V0X1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWNhcF9fYWRiLmh0bSNyZWZfMTI3XzI1Ij5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGZvdW5kLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB0Z2V0c3RyKCk8L0VNPjwvc3Bhbj4KIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtY2FwX19hZHMuaHRtI3JlZl80Ml8zNSI+VGVybWNhcDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1jYXBfX2Fkcy5odG0jcmVmXzQyXzM1Ij5UZXJtY2FwPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtCmluZGV4IGRmMTY3ODguLjQ5N2M4YzAgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtCkBAIC0xLDYyICsxLDc0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRlcm1pbmZvICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuNSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGVybWluZm8gICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS42IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8zNSI+QXV4PC9BPjsgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzQ1XzM1Ij5BdXg8L0E+OyA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsKKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7IDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKIDxiPndpdGg8L2I+IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDhfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXJtaW5mbzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRlcm1pbmZvPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81Ml8xMyI+SXNfTWludXNPbmVfUG9pbnRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81Ml8zNCI+UDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IGNoYXJzX3B0cikgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNTJfMTMiPklzX01pbnVzT25lX1BvaW50ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81Ml8zNCI+UDwvQT48L3NwYW4+IDogY2hhcnNfcHRyKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81MF8xMyI+SXNfTWludXNPbmVfUG9pbnRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81MF8zNCI+UDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IGNoYXJzX3B0cikgPGI+cmV0dXJuPC9iPiBCb29sZWFuIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M18xMiI+V2VpcmRfQWRkcmVzczwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLkludGVnZXJfQWRkcmVzczsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfNyI+SW52YWxpZF9Qb2ludGVyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNTNfMTIiPldlaXJkX0FkZHJlc3M8L0E+IDo9IC0xOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNTBfMTMiPklzX01pbnVzT25lX1BvaW50ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81MF8zNCI+UDwvQT48L3NwYW4+IDogY2hhcnNfcHRyKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4gPGI+aXM8L2I+CisgICAgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTIiPldlaXJkX0FkZHJlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy5JbnRlZ2VyX0FkZHJlc3M7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfNyI+SW52YWxpZF9Qb2ludGVyPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNTNfMTIiPldlaXJkX0FkZHJlc3M8L0E+IDo9IC0xOwogICAgICAgPGI+ZnVuY3Rpb248L2I+IFRvX1dlaXJkIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbgogICAgICAgICAoU291cmNlID0mZ3Q7IGNoYXJzX3B0ciwgVGFyZ2V0ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzUzXzEyIj5XZWlyZF9BZGRyZXNzPC9BPik7CiAgICA8Yj5iZWdpbjwvYj4KQEAgLTY4LDEwMCArODAsMTAwIEBACiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzUwXzEzIj5Jc19NaW51c09uZV9Qb2ludGVyPC9BPjsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81MF8xMyI+SXNfTWludXNPbmVfUG9pbnRlcjwvQT4pOwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjRfMTMiPkdldF9GbGFnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY0XzIzIj5OYW1lPC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfRmxhZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY0XzIzIj5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OV8xNiI+dGlnZXRmbGFnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzY5XzE2Ij5pZDwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfMTYiPnRpZ2V0ZmxhZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzY5XzE2Ij5pZDwvQT48L3NwYW4+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCB0aWdldGZsYWcpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjRfMjMiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyXzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzciPlR4dDwvQT48L3NwYW4+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl82NF8yMyI+TmFtZTwvQT4nTGVuZ3RoKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Ml83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjRfMjMiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl83MV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl83Ml83Ij5MZW5ndGg8L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl82OV8xNiI+dGlnZXRmbGFnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNzFfNyI+VHh0PC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc0XzQiPkN1cnNlc19UcnVlPC9BPikgPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl82OV8xNiI+dGlnZXRmbGFnPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNzFfNyI+VHh0PC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY3XzQiPkN1cnNlc19UcnVlPC9BPikgPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY0XzEzIj5HZXRfRmxhZzwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNTdfMTQiPkdldF9TdHJpbmc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNTdfMjYiPk5hbWU8L0E+PC9GT05UPiAgIDogU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU4XzI2Ij5WYWx1ZTwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gVGVybWluZm9fU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU5XzI2Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gQm9vbGVhbikKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNTdfMTQiPkdldF9TdHJpbmc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl81N18yNiI+TmFtZTwvQT48L3NwYW4+ICAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl81OF8yNiI+VmFsdWU8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IFRlcm1pbmZvX1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODVfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU5XzI2Ij5SZXN1bHQ8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQm9vbGVhbikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODdfMTYiPnRpZ2V0c3RyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzg3XzE2Ij5pZDwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3XzE2Ij50aWdldHN0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzg3XzE2Ij5pZDwvQT48L3NwYW4+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgdGlnZXRzdHIsICJ0aWdldHN0ciIpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNTdfMjYiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwXzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MV83Ij5UeHQyPC9BPjwvRk9OVD4gOiBjaGFyc19wdHI7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODlfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU3XzI2Ij5OYW1lPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwXzciPkxlbmd0aDwvQT48L3NwYW4+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxXzciPlR4dDI8L0E+PC9zcGFuPiA6IGNoYXJzX3B0cjsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNTdfMjYiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl84OV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl85MF83Ij5MZW5ndGg8L0E+KTsKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzkxXzciPlR4dDI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzg3XzE2Ij50aWdldHN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzg5XzciPlR4dDwvQT4pOwogICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzkxXzciPlR4dDI8L0E+ID0gTnVsbF9QdHIgPGI+dGhlbjwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU5XzI2Ij5SZXN1bHQ8L0E+IDo9IEZhbHNlOwogICAgICAgPGI+ZWxzaWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzUwXzEzIj5Jc19NaW51c09uZV9Qb2ludGVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfOTFfNyI+VHh0MjwvQT4pIDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl81OF8yNiI+VmFsdWU8L0E+ICA6PSBUZXJtaW5mb19TdHJpbmcgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfOTFfNyI+VHh0MjwvQT4pKTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU4XzI2Ij5WYWx1ZTwvQT4gIDo9IFRlcm1pbmZvX1N0cmluZyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk3XzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzkxXzciPlR4dDI8L0E+KSk7CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl81OV8yNiI+UmVzdWx0PC9BPiA6PSBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzU3XzE0Ij5HZXRfU3RyaW5nPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl82MF8xMyI+SGFzX1N0cmluZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjBfMjUiPk5hbWU8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzYwXzEzIj5IYXNfU3RyaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzYwXzI1Ij5OYW1lPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDhfMTYiPnRpZ2V0c3RyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMDhfMTYiPmlkPC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzE2Ij50aWdldHN0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMDhfMTYiPmlkPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCB0aWdldHN0ciwgInRpZ2V0c3RyIik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMF83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjBfMjUiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMV83Ij5MZW5ndGg8L0E+PC9GT05UPiA6IHNpemVfdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEyXzciPlR4dDI8L0E+PC9GT05UPiA6IGNoYXJzX3B0cjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTBfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzYwXzI1Ij5OYW1lPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMV83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTJfNyI+VHh0MjwvQT48L3NwYW4+IDogY2hhcnNfcHRyOwogICAgPGI+YmVnaW48L2I+CiAgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl82MF8yNSI+TmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzExMF83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMTFfNyI+TGVuZ3RoPC9BPik7CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMTJfNyI+VHh0MjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTA4XzE2Ij50aWdldHN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzExMF83Ij5UeHQ8L0E+KTsKICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMTJfNyI+VHh0MjwvQT4gPSBOdWxsX1B0ciA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2lmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl81MF8xMyI+SXNfTWludXNPbmVfUG9pbnRlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzExMl83Ij5UeHQyPC9BPikgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl82MF8xMyI+SGFzX1N0cmluZzwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMTMiPkdldF9OdW1iZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY4XzI1Ij5OYW1lPC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gSW50ZWdlciA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyN18xNiI+dGlnZXRzdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEyN18xNiI+czwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMTMiPkdldF9OdW1iZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMjUiPk5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBJbnRlZ2VyIDxiPmlzPC9iPgorICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMTYiPnRpZ2V0c3RyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEyN18xNiI+czwvQT48L3NwYW4+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCB0aWdldHN0cik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMjUiPk5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMF83Ij5MZW5ndGg8L0E+PC9GT05UPiA6IHNpemVfdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjlfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzY4XzI1Ij5OYW1lPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMjUiPk5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjlfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTMwXzciPkxlbmd0aDwvQT4pOwogICAgICAgPGI+cmV0dXJuPC9iPiBJbnRlZ2VyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjdfMTYiPnRpZ2V0c3RyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTI5XzciPlR4dDwvQT4pKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNjhfMTMiPkdldF9OdW1iZXI8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83Nl8xNCI+UHV0X1N0cmluZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzZfMjYiPlN0cjwvQT48L0ZPTlQ+ICAgIDogVGVybWluZm9fU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83N18yNiI+YWZmY250PC9BPjwvRk9OVD4gOiBOYXR1cmFsIDo9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzc4XzI2Ij5wdXRjPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzcxXzkiPnB1dGN0eXBlPC9BPiA6PSA8Yj5udWxsPC9iPikgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDBfMTYiPnRwdXRzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDBfMTYiPnN0cjwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheTsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQwXzE2Ij5hZmZjbnQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDBfMTYiPnB1dGM8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzFfOSI+cHV0Y3R5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQzXzE2Ij5wdXRwPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDNfMTYiPnN0cjwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSkgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzc2XzE0Ij5QdXRfU3RyaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzc2XzI2Ij5TdHI8L0E+PC9zcGFuPiAgICA6IFRlcm1pbmZvX1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83N18yNiI+YWZmY250PC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzhfMjYiPnB1dGM8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzFfOSI+cHV0Y3R5cGU8L0E+IDo9IDxiPm51bGw8L2I+KSA8Yj5pczwvYj4KKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQwXzE2Ij50cHV0czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDBfMTYiPnN0cjwvQT48L3NwYW4+ICAgIDogY2hhcl9hcnJheTsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQxXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDBfMTYiPmFmZmNudDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0Ml8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQwXzE2Ij5wdXRjPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzcxXzkiPnB1dGN0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzXzE2Ij5wdXRwPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzE0M18xNiI+c3RyPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRwdXRzKTsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBwdXRwKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ2XzciPlR4dDwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83Nl8yNiI+U3RyPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDdfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OF83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0Nl83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzZfMjYiPlN0cjwvQT4nTGVuZ3RoKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDdfNyI+TGVuZ3RoPC9BPjwvc3Bhbj4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4XzciPkVycjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIFRvX0MgKFN0cmluZyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzZfMjYiPlN0cjwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDZfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQ3XzciPkxlbmd0aDwvQT4pOwogICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2Fkcy5odG0jcmVmXzc4XzI2Ij5wdXRjPC9BPiA9IDxiPm51bGw8L2I+IDxiPnRoZW48L2I+CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDhfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDNfMTYiPnB1dHA8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xNDZfNyI+VHh0PC9BPik7CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQ4XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQwXzE2Ij50cHV0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzE0Nl83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzdfMjYiPmFmZmNudDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83OF8yNiI+cHV0YzwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQ4XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQwXzE2Ij50cHV0czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzE0Nl83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzdfMjYiPmFmZmNudDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83OF8yNiI+cHV0YzwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQ4XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTQ4XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzZfMTQiPlB1dF9TdHJpbmc8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl80NF8zNSI+VGVybWluZm88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRlcm1pbmZvPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtCmluZGV4IDcyZWRkYTQuLjIzMGVjN2YgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtCkBAIC0xLDg3ICsxLDk5IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mby5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm8uYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXJtaW5mbyAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMyBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXJtaW5mbyAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkM7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl80OF80MCI+VGVybWluZm88L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRlcm1pbmZvPC9BPik7Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl80OF80MCI+VGVybWluZm88L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRlcm1pbmZvPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIGN1cnNfdGVybWluZm8uM3g8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6ICBzZXR1cHRlcm0sIHNldHRlcm0sIHNldF9jdXJ0ZXJtLCBkZWxfY3VydGVybSw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgcmVzdGFydHRlcm0sIHRwYXJtLCBwdXRwLCB2aWRwdXRzLCAgdmlkYXR0ciw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgbXZjdXI8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgY3Vyc190ZXJtaW5mby4zeDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IGltcGxlbWVudGVkOiAgc2V0dXB0ZXJtLCBzZXR0ZXJtLCBzZXRfY3VydGVybSwgZGVsX2N1cnRlcm0sPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICByZXN0YXJ0dGVybSwgdHBhcm0sIHB1dHAsIHZpZHB1dHMsICB2aWRhdHRyLDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgbXZjdXI8L0VNPjwvc3Bhbj4KIAogICAgPGI+dHlwZTwvYj4gVGVybWluZm9fU3RyaW5nIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFN0cmluZzsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzgzXzE0Ij5HZXRfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzgzXzI2Ij5OYW1lPC9BPjwvRk9OVD4gICA6IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl84NF8yNiI+VmFsdWU8L0E+PC9GT05UPiAgOiA8Yj5vdXQ8L2I+IFRlcm1pbmZvX1N0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl84NV8yNiI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pOwotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEwNl8xMyI+SGFzX1N0cmluZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMDZfMjUiPk5hbWU8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHRpZ2V0c3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl84M18xNCI+R2V0X1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzgzXzI2Ij5OYW1lPC9BPjwvc3Bhbj4gICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzg0XzI2Ij5WYWx1ZTwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gVGVybWluZm9fU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfODVfMjYiPlJlc3VsdDwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiBCb29sZWFuKTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEwNl8xMyI+SGFzX1N0cmluZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEwNl8yNSI+TmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHRpZ2V0c3RyKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNjdfMTMiPkdldF9GbGFnPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzY3XzIzIj5OYW1lPC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB0aWdldGZsYWcoKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNjdfMTMiPkdldF9GbGFnPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfNjdfMjMiPk5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB0aWdldGZsYWcoKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjZfMTMiPkdldF9OdW1iZXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTI2XzI1Ij5OYW1lPC9BPjwvRk9OVD4gOiBTdHJpbmcpIDxiPnJldHVybjwvYj4gSW50ZWdlcjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB0aWdldG51bSgpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjZfMTMiPkdldF9OdW1iZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMjZfMjUiPk5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZykgPGI+cmV0dXJuPC9iPiBJbnRlZ2VyOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB0aWdldG51bSgpPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfOSI+cHV0Y3R5cGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5mdW5jdGlvbjwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzFfMzgiPmM8L0E+PC9GT05UPiA6IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLmludCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzkiPnB1dGN0eXBlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+ZnVuY3Rpb248L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzFfMzgiPmM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuaW50OwogICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl83MV85Ij5wdXRjdHlwZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTM3XzE0Ij5QdXRfU3RyaW5nPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEzN18yNiI+U3RyPC9BPjwvRk9OVD4gICAgOiBUZXJtaW5mb19TdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTM4XzI2Ij5hZmZjbnQ8L0E+PC9GT05UPiA6IE5hdHVyYWwgOj0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMzlfMjYiPnB1dGM8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzFfOSI+cHV0Y3R5cGU8L0E+IDo9IDxiPm51bGw8L2I+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB0cHV0cygpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTM3XzE0Ij5QdXRfU3RyaW5nPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRiLmh0bSNyZWZfMTM3XzI2Ij5TdHI8L0E+PC9zcGFuPiAgICA6IFRlcm1pbmZvX1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGVybWluZm9fX2FkYi5odG0jcmVmXzEzOF8yNiI+YWZmY250PC9BPjwvc3Bhbj4gOiBOYXR1cmFsIDo9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZGIuaHRtI3JlZl8xMzlfMjYiPnB1dGM8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNzFfOSI+cHV0Y3R5cGU8L0E+IDo9IDxiPm51bGw8L2I+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogdHB1dHMoKTwvRU0+PC9zcGFuPgogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRlcm1pbmZvX19hZHMuaHRtI3JlZl80NF8zNSI+VGVybWluZm88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXJtaW5mb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRlcm1pbmZvPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtCmluZGV4IDhjOTFkMWEuLjc5MTU3Y2MgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtCkBAIC0xLDY5ICsxLDgxIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXguYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5BdXggICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTIgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNi8wNi8yNSAxNDoyNDo0MCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDJfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uQXV4ICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEzIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OF8xNCI+UHV0X0J1ZjwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ5XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUwXzciPkJ1ZjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTFfNyI+V2lkdGg8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81Ml83Ij5TaWduYWw8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWU7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUzXzciPkxqdXN0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IEJvb2xlYW4gOj0gRmFsc2UpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDhfMTQiPlB1dF9CdWY8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ5XzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81MF83Ij5CdWY8L0E+PC9zcGFuPiAgICA6IFN0cmluZzsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81MV83Ij5XaWR0aDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81Ml83Ij5TaWduYWw8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81M183Ij5ManVzdDwvQT48L3NwYW4+ICA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfNyI+TDwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzciPkxlbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183Ij5XPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81MV83Ij5XaWR0aDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciPkxDPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV83Ij5DQzwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5ZPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183Ij5YPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyI+TDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyI+TGVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNyI+VzwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTFfNyI+V2lkdGg8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciPkxDPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzciPkNDPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyI+WTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183Ij5YPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CiAKLSAgICAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV8xNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNjFfMTciPk91dHB1dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl82MV8yNSI+RnJvbTwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl82MV8zMSI+VG88L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPik7CisgICAgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8xNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNjFfMTciPk91dHB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzYxXzI1Ij5Gcm9tPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNjFfMzEiPlRvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4pOwogCi0gICAgICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfMTciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU5XzE3Ij5PdXRwdXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTlfMjUiPkZyb208L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTlfMzEiPlRvPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4pCisgICAgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV8xNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTlfMTciPk91dHB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU5XzI1Ij5Gcm9tPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTlfMzEiPlRvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4pCiAgICAgICA8Yj5pczwvYj4KICAgICAgIDxiPmJlZ2luPC9iPgogICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4gJmd0OyAwIDxiPnRoZW48L2I+CkBAIC03MSwxMyArODMsMTMgQEAKICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUzXzciPlc8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT47CiAgICAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Ml83Ij5MZW48L0E+ICZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTNfNyI+VzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgICAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTFJNIEExMC42ICg3KSBzYXlzIHRoaXM8L0VNPjwvRk9OVD4KKyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIExSTSBBMTAuNiAoNykgc2F5cyB0aGlzPC9FTT48L3NwYW4+CiAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81M183Ij5XPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Ml83Ij5MZW48L0E+OwogICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAKICAgICAgICAgICAgIDxiPnByYWdtYTwvYj4gQXNzZXJ0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Ml83Ij5MZW48L0E+ICZsdDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUzXzciPlc8L0E+KTsKLSAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjhfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDlfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTRfNyI+TEM8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81NV83Ij5DQzwvQT4pOwotICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Ml83Ij5MZW48L0E+KSAmZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU1XzciPkNDPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM5OF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81NF83Ij5MQzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU1XzciPkNDPC9BPik7CisgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4pICZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTVfNyI+Q0M8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTJfNyI+U2lnbmFsPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTM0XzQiPkxheW91dF9FcnJvcjwvQT47CiAgICAgICAgICAgICAgICA8Yj5lbHNlPC9iPgpAQCAtODYsMjAgKzk4LDIwIEBACiAgICAgICAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4gJmx0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81M183Ij5XPC9BPiA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+IDxiPm5vdDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTNfNyI+TGp1c3Q8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICAgICAgICAgICA8Yj5kZWNsYXJlPC9iPgotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NF8yMiI+RmlsbGVyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gU3RyaW5nICgxIC4uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81M183Ij5XPC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4pKQorICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzIyIj5GaWxsZXI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBTdHJpbmcgKDEgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUzXzciPlc8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTJfNyI+TGVuPC9BPikpCiAgICAgICAgICAgICAgICAgICAgICAgIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CiAgICAgICAgICAgICAgICAgICA8Yj5iZWdpbjwvYj4KICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl84NF8yMiI+RmlsbGVyPC9BPik7CiAgICAgICAgICAgICAgICAgICA8Yj5lbmQ8L2I+OwogICAgICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDlfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTZfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU3XzciPlg8L0E+KTsKLSAgICAgICAgICAgICAgIDxiPmlmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTdfNyI+WDwvQT4gKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Ml83Ij5MZW48L0E+KSkgJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81NV83Ij5DQzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTRfMTQiPkdldF9DdXJzb3JfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81Nl83Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTdfNyI+WDwvQT4pOworICAgICAgICAgICAgICAgPGI+aWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81N183Ij5YPC9BPiArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4pKSAmZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU1XzciPkNDPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8xNCI+TmV3X0xpbmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OV83Ij5XaW48L0E+KTsKICAgICAgICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTQiPlB1dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ5XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUwXzciPkJ1ZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzU5XzI1Ij5Gcm9tPC9BPiAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81OV8zMSI+VG88L0E+KSk7CiAgICAgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTJfNyI+TGVuPC9BPiAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUzXzciPlc8L0E+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTNfNyI+TGp1c3Q8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICAgICAgICAgICA8Yj5kZWNsYXJlPC9iPgotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85N18yMiI+RmlsbGVyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gU3RyaW5nICgxIC4uICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81M183Ij5XPC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUyXzciPkxlbjwvQT4pKQorICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3XzIyIj5GaWxsZXI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBTdHJpbmcgKDEgLi4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUzXzciPlc8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTJfNyI+TGVuPC9BPikpCiAgICAgICAgICAgICAgICAgICAgICAgIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CiAgICAgICAgICAgICAgICAgICA8Yj5iZWdpbjwvYj4KICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl85N18yMiI+RmlsbGVyPC9BPik7CkBAIC0xMTAsMTggKzEyMiwxOCBAQAogICAgICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81OV8xNyI+T3V0cHV0PC9BPjsKIAogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5wcmFnbWE8L2I+IEFzc2VydCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDlfNyI+V2luPC9BPiAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4pOworICAgICAgPGI+cHJhZ21hPC9iPiBBc3NlcnQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ5XzciPldpbjwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTZfNCI+TnVsbF9XaW5kb3c8L0E+KTsKICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81M183Ij5ManVzdDwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUxXzciPkw8L0E+IDo9IDE7Ci0gICAgICAgICA8Yj5mb3I8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTExXzE0Ij5JPC9BPjwvRk9OVD4gPGI+aW48L2I+IDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTBfNyI+QnVmPC9BPidMZW5ndGggPGI+bG9vcDwvYj4KKyAgICAgICAgIDxiPmZvcjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMV8xNCI+STwvQT48L3NwYW4+IDxiPmluPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUwXzciPkJ1ZjwvQT4nTGVuZ3RoIDxiPmxvb3A8L2I+CiAgICAgICAgICAgICA8Yj5leGl0PC9iPiA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81MF83Ij5CdWY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81MV83Ij5MPC9BPikgPSAnICc7CiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81MV83Ij5MPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81MV83Ij5MPC9BPiArIDE7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwogICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTJfNyI+TGVuPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81MV83Ij5MPC9BPiAtIDE7CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl81OV8xNyI+T3V0cHV0PC9BPiAoMSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTJfNyI+TGVuPC9BPik7Ci0gICAgICA8Yj5lbHNlPC9iPiAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGlucHV0IGJ1ZmZlciBpcyBub3QgbGVmdCBqdXN0aWZpZWQ8L0VNPjwvRk9OVD4KKyAgICAgIDxiPmVsc2U8L2I+ICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGlucHV0IGJ1ZmZlciBpcyBub3QgbGVmdCBqdXN0aWZpZWQ8L0VNPjwvc3Bhbj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzUxXzciPkw8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUwXzciPkJ1ZjwvQT4nTGVuZ3RoOwotICAgICAgICAgPGI+Zm9yPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExOV8xNCI+STwvQT48L0ZPTlQ+IDxiPmluPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzUwXzciPkJ1ZjwvQT4nTGVuZ3RoIDxiPmxvb3A8L2I+CisgICAgICAgICA8Yj5mb3I8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTlfMTQiPkk8L0E+PC9zcGFuPiA8Yj5pbjwvYj4gMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl81MF83Ij5CdWY8L0E+J0xlbmd0aCA8Yj5sb29wPC9iPgogICAgICAgICAgICAgPGI+ZXhpdDwvYj4gPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNTBfNyI+QnVmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTFfNyI+TDwvQT4pID0gJyAnOwogICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTFfNyI+TDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNTFfNyI+TDwvQT4gLSAxOwogICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5sb29wPC9iPjsKQEAgLTEzMCw1ICsxNDIsNSBAQAogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ4XzE0Ij5QdXRfQnVmPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtCmluZGV4IDdjYmU2MzkuLmVmZjcwODEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtCkBAIC0xLDYxICsxLDczIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eC5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXguYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4LmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5BdXggICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTMgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNi8wNi8yNSAxNDoyNDo0MCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+cHJpdmF0ZTwvYj4gPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDJfNTEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzQyXzQ4Ij5BdXg8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJhZ21hIFByZWVsYWJvcmF0ZSAoQXV4KTs8L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uQXV4ICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE0IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBEYXRlOiAyMDA5LzEyLzI2IDE3OjM4OjU4IEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPnByaXZhdGU8L2I+IDxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfNTEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzQyXzQ4Ij5BdXg8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByYWdtYSBQcmVlbGFib3JhdGUgKEF1eCk7PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHRoZSBUZXh0X0lPIG91dHB1dCByb3V0aW5lcyBmb3IgbnVtZXJpYzwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBhbmQgZW51bWVyYXRpb24gdHlwZXMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNDRfMTQiPlB1dF9CdWY8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80NV83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyAgICAgICAgICAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgb3V0cHV0IHdpbmRvdzwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80Nl83Ij5CdWY8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBTdHJpbmc7ICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgdGV4dDwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80N183Ij5XaWR0aDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT47ICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgd2lkdGggb2YgdGhlIG91dHB1dCBmaWVsZDwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80OF83Ij5TaWduYWw8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWU7ICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElmIHRydWUsIHdlIHJhaXNlIExheW91dF9FcnJvcjwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80OV83Ij5ManVzdDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKTsgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBCdWYgaXMgbGVmdCBqdXN0aWZpZWQ8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgZnJvbSB0aGUgVGV4dF9JTyBvdXRwdXQgcm91dGluZXMgZm9yIG51bWVyaWM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGFuZCBlbnVtZXJhdGlvbiB0eXBlcy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80NF8xNCI+UHV0X0J1ZjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNDVfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIG91dHB1dCB3aW5kb3c8L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80Nl83Ij5CdWY8L0E+PC9zcGFuPiAgICA6IFN0cmluZzsgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgdGV4dDwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2FkYi5odG0jcmVmXzQ3XzciPldpZHRoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+OyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IGZpZWxkPC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRiLmh0bSNyZWZfNDhfNyI+U2lnbmFsPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWU7ICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJZiB0cnVlLCB3ZSByYWlzZSBMYXlvdXRfRXJyb3I8L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZGIuaHRtI3JlZl80OV83Ij5ManVzdDwvQT48L3NwYW4+ICA6IEJvb2xlYW4gOj0gRmFsc2UpOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBCdWYgaXMgbGVmdCBqdXN0aWZpZWQ8L0VNPjwvc3Bhbj4KIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0KaW5kZXggYzIyZDNkYS4uYmFmMWM5MyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bQpAQCAtMSw2MSArMSw3MyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRiPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRiIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uQ29tcGxleF9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkZsb2F0X0lPPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5Db21wbGV4X0lPICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5GbG9hdF9JTzwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzXzQ4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNDZfNDMiPkNvbXBsZXhfSU88L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDNfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl80Nl80MyI+Q29tcGxleF9JTzwvQT48L3NwYW4+IDxiPmlzPC9iPgogCiAgICA8Yj5wYWNrYWdlPC9iPiBGSU8gPGI+aXM8L2I+IDxiPm5ldzwvYj4KLSAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkZsb2F0X0lPPC9BPiAoQ29tcGxleF9UeXBlcy5SZWFsJ0Jhc2UpOworICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+RmxvYXRfSU88L0E+IChDb21wbGV4X1R5cGVzLlJlYWwnQmFzZSk7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzU0XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICBJdGVtIDogPGI+aW48L2I+IENvbXBsZXg7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81N183Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MF80Ij5EZWZhdWx0X0ZvcmU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNThfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTFfNCI+RGVmYXVsdF9BZnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTlfNyI+RXhwPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTJfNCI+RGVmYXVsdF9FeHA8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81NF8xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIEl0ZW0gOiBDb21wbGV4OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81N183Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUwXzQiPkRlZmF1bHRfRm9yZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzU4XzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTFfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81OV83Ij5FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUyXzQiPkRlZmF1bHRfRXhwPC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xNCI+UHV0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzU1XzciPldpbjwvQT4sICcoJyk7CkBAIC02NSwxNSArNzcsMTUgQEAKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+V2luPC9BPiwgJyknKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzU0XzE0Ij5QdXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82MV8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKEl0ZW0gOiA8Yj5pbjwvYj4gQ29tcGxleDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzYzXzciPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUwXzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82NF83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MV80Ij5EZWZhdWx0X0FmdDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82NV83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81Ml80Ij5EZWZhdWx0X0V4cDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzYxXzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoSXRlbSA6IENvbXBsZXg7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzYzXzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTBfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNjRfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MV80Ij5EZWZhdWx0X0FmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzY1XzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTJfNCI+RGVmYXVsdF9FeHA8L0E+KQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81NF8xNCI+UHV0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82Ml8xMyI+R2V0X1dpbmRvdzwvQT4sIEl0ZW0sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82M183Ij5Gb3JlPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzY0XzciPkFmdDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82NV83Ij5FeHA8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzYxXzE0Ij5QdXQ8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNDZfNDMiPkNvbXBsZXhfSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzQ2XzQzIj5Db21wbGV4X0lPPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0KaW5kZXggNDYwZjVkMC4uNzhiYjhjNCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bQpAQCAtMSw3NiArMSw4OCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pby5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uQ29tcGxleF9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkNvbXBsZXhfSU8gICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gQWRhLk51bWVyaWNzLkdlbmVyaWNfQ29tcGxleF9UeXBlczsKIAogPGI+Z2VuZXJpYzwvYj4KICAgIDxiPndpdGg8L2I+IDxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl80Nl80MyI+Q29tcGxleF9UeXBlczwvQT4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gQWRhLk51bWVyaWNzLkdlbmVyaWNfQ29tcGxleF9UeXBlcyAoJmx0OyZndDspOwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0jcmVmXzQzXzQ4Ij5Db21wbGV4X0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNDNfNDgiPkNvbXBsZXhfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAogICAgPGI+dXNlPC9iPiBDb21wbGV4X1R5cGVzOwogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzQiPkRlZmF1bHRfRm9yZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDI7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzQiPkRlZmF1bHRfQWZ0PC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IFJlYWwnPGI+RGlnaXRzPC9iPiAtIDE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzQiPkRlZmF1bHRfRXhwPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfNCI+RGVmYXVsdF9Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV80Ij5EZWZhdWx0X0FmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSBSZWFsJzxiPkRpZ2l0czwvYj4gLSAxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzQiPkRlZmF1bHRfRXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDM7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0jcmVmXzQ4XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNDlfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTRfMTQiPkl0ZW08L0E+IDogPGI+aW48L2I+IENvbXBsZXg7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl81MV83Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MF80Ij5EZWZhdWx0X0ZvcmU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNTJfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTFfNCI+RGVmYXVsdF9BZnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNTNfNyI+RXhwPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTJfNCI+RGVmYXVsdF9FeHA8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNDhfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0jcmVmXzQ5XzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTRfMTQiPkl0ZW08L0E+IDogQ29tcGxleDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNTFfNyI+Rm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MF80Ij5EZWZhdWx0X0ZvcmU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl81Ml83Ij5BZnQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUxXzQiPkRlZmF1bHRfQWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRiLmh0bSNyZWZfNTNfNyI+RXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81Ml80Ij5EZWZhdWx0X0V4cDwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82M18xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82MV8xNCI+SXRlbTwvQT4gOiA8Yj5pbjwvYj4gQ29tcGxleDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0jcmVmXzY1XzciPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUwXzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82Nl83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81MV80Ij5EZWZhdWx0X0FmdDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82N183Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl81Ml80Ij5EZWZhdWx0X0V4cDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82M18xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl82MV8xNCI+SXRlbTwvQT4gOiBDb21wbGV4OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82NV83Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUwXzQiPkRlZmF1bHRfRm9yZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2FkYi5odG0jcmVmXzY2XzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tY29tcGxleF9pb19fYWRzLmh0bSNyZWZfNTFfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZGIuaHRtI3JlZl82N183Ij5FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzUyXzQiPkRlZmF1bHRfRXhwPC9BPik7CiAKIDxiPnByaXZhdGU8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoUHV0KTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWNvbXBsZXhfaW9fX2Fkcy5odG0jcmVmXzQ2XzQzIj5Db21wbGV4X0lPPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1jb21wbGV4X2lvX19hZHMuaHRtI3JlZl80Nl80MyI+Q29tcGxleF9JTzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtCmluZGV4IDgyY2RhNTMuLmExYjU1ODEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0KQEAgLTEsNjUgKzEsNzcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pby5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkRlY2ltYWxfSU8gICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5EZWNpbWFsX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IEFkYS5UZXh0X0lPOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF80OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5EZWNpbWFsX0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQ4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkRlY2ltYWxfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cGFja2FnZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl8xMiI+QXV4PC9BPjwvRk9OVD4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OworICAgPGI+cGFja2FnZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzEyIj5BdXg8L0E+PC9zcGFuPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47CiAgICA8Yj5wYWNrYWdlPC9iPiBESU8gPGI+aXM8L2I+IDxiPm5ldzwvYj4gQWRhLlRleHRfSU8uRGVjaW1hbF9JTyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81MF8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTJfNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTNfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU0XzciPkFmdDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUyXzciPkl0ZW08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU0XzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81NV83Ij5FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5CdWY8L0E+PC9GT05UPiA6IFN0cmluZyAoMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4nTGFzdCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzciPkxlbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTRfNyI+QWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl83Ij5CdWY8L0E+PC9zcGFuPiA6IFN0cmluZyAoMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4nTGFzdCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfNyI+TGVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUzXzciPkZvcmU8L0E+ICsgMSArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81NF83Ij5BZnQ8L0E+OwogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT4gJmd0OyAwIDxiPnRoZW48L2I+CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTdfNyI+TGVuPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTdfNyI+TGVuPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+RXhwPC9BPjsKQEAgLTY4LDE0ICs4MCwxNCBAQAogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzQ2XzEyIj5BdXg8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ4XzE0Ij5QdXRfQnVmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl81Nl83Ij5CdWY8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTdfNyI+TGVuPC9BPiwgRmFsc2UpOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU3XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNThfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU5XzciPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl82MF83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl82MV83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pIDxiPmlzPC9iPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81N18xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNThfNyI+SXRlbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU5XzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNjBfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzYxXzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KSA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzUwXzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzU4XzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNTlfNyI+Rm9yZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl82MF83Ij5BZnQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNjFfNyI+RXhwPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl81N18xNCI+UHV0PC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5EZWNpbWFsX0lPPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80NF80MyI+RGVjaW1hbF9JTzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtCmluZGV4IGU0YzFjMjAuLjc1YTE5YTEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0KQEAgLTEsNzIgKzEsODQgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW8uYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pby5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkRlY2ltYWxfSU8gICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5EZWNpbWFsX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPmdlbmVyaWM8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmRlbHRhPC9iPiAmbHQ7Jmd0OyA8Yj5kaWdpdHM8L2I+ICZsdDsmZ3Q7OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmRlbHRhPC9iPiAmbHQ7Jmd0OyA8Yj5kaWdpdHM8L2I+ICZsdDsmZ3Q7OwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF80MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzQ0XzQ4Ij5EZWNpbWFsX0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNDRfNDgiPkRlY2ltYWxfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidGb3JlOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0FmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidBZnQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nRm9yZTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0FmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidBZnQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMDsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzUyXzciPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl81M183Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl81NF83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl80OV8xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTBfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTFfNyI+SXRlbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzUyXzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNTNfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzU0XzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNjZfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl82N183Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzY5XzciPkFmdDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzcwXzciPkV4cDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2FkYi5odG0jcmVmXzY2XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl82N183Ij5JdGVtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZGIuaHRtI3JlZl82OV83Ij5BZnQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWRlY2ltYWxfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRiLmh0bSNyZWZfNzBfNyI+RXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pOwogCiA8Yj5wcml2YXRlPC9iPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFB1dCk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1kZWNpbWFsX2lvX19hZHMuaHRtI3JlZl80NF80MyI+RGVjaW1hbF9JTzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZGVjaW1hbF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkRlY2ltYWxfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtCmluZGV4IGJhN2JkMWUuLjg3MmE3YjEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bQpAQCAtMSw2NSArMSw3NyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5FbnVtZXJhdGlvbl9JTyAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRW51bWVyYXRpb25fSU8gICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IEFkYS5UZXh0X0lPOwogPGI+d2l0aDwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7IDxiPnVzZTwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7Ci08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47CiAKLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1XzQ4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5FbnVtZXJhdGlvbl9JTzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV80OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80NF80MyI+RW51bWVyYXRpb25fSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cGFja2FnZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N18xMiI+QXV4PC9BPjwvRk9OVD4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OworICAgPGI+cGFja2FnZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzEyIj5BdXg8L0E+PC9zcGFuPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47CiAgICA8Yj5wYWNrYWdlPC9iPiBFSU8gPGI+aXM8L2I+IDxiPm5ldzwvYj4gQWRhLlRleHRfSU8uRW51bWVyYXRpb25fSU8gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+RW51bTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTBfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5FbnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81Ml83Ij5XaWR0aDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzUzXzciPlNldDwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81M185Ij5UeXBlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X1NldHRpbmc8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQyXzkiPkVudW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTJfNyI+V2lkdGg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+U2V0PC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTNfOSI+VHlwZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9TZXR0aW5nPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83Ij5CdWY8L0E+PC9GT05UPiAgOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183Ij5Uc2V0PC9BPjwvRk9OVD4gOiBBZGEuVGV4dF9JTy5UeXBlX1NldDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl83Ij5CdWY8L0E+PC9zcGFuPiAgOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzciPlRzZXQ8L0E+PC9zcGFuPiA6IEFkYS5UZXh0X0lPLlR5cGVfU2V0OwogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81M183Ij5TZXQ8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTNfNDYiPk1peGVkX0Nhc2U8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzU3XzciPlRzZXQ8L0E+IDo9IEFkYS5UZXh0X0lPLlR5cGVfU2V0J1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81M185Ij5UeXBlX1NldDwvQT4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzUzXzciPlNldDwvQT4pKTsKQEAgLTczLDE0ICs4NSwxNCBAQAogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl80N18xMiI+QXV4PC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80OF8xNCI+UHV0X0J1ZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTBfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl81Nl83Ij5CdWY8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzUyXzciPldpZHRoPC9BPiwgVHJ1ZSwgVHJ1ZSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81NV8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81Nl83Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+RW51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTdfNyI+V2lkdGg8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81OF83Ij5TZXQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTNfOSI+VHlwZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9TZXR0aW5nPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzU1XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNTZfNyI+SXRlbTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+RW51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81N183Ij5XaWR0aDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81OF83Ij5TZXQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81M185Ij5UeXBlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X1NldHRpbmc8L0E+KQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzU3XzciPldpZHRoPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81OF83Ij5TZXQ8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl81NV8xNCI+UHV0PC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80NF80MyI+RW51bWVyYXRpb25fSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80NF80MyI+RW51bWVyYXRpb25fSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtCmluZGV4IDA3NDU0N2YuLjY4ZmJiNjUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bQpAQCAtMSw2OSArMSw4MSBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5FbnVtZXJhdGlvbl9JTyAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRW51bWVyYXRpb25fSU8gICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPmdlbmVyaWM8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkVudW08L0E+PC9GT05UPiA8Yj5pczwvYj4gKCZsdDsmZ3Q7KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Ml85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5FbnVtPC9BPjwvc3Bhbj4gPGI+aXM8L2I+ICgmbHQ7Jmd0Oyk7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzQ1XzQ4Ij5FbnVtZXJhdGlvbl9JTzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF80MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl80NV80OCI+RW51bWVyYXRpb25fSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMDsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfNCI+RGVmYXVsdF9TZXR0aW5nPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUzXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUzXzQ2Ij5NaXhlZF9DYXNlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X1NldHRpbmc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTNfOSI+VHlwZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTNfNDYiPk1peGVkX0Nhc2U8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNTFfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzUyXzciPkl0ZW08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5FbnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl81M183Ij5XaWR0aDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzU0XzciPlNldDwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81M185Ij5UeXBlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X1NldHRpbmc8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzUwXzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNTFfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl81Ml83Ij5JdGVtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5FbnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzUzXzciPldpZHRoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzU0XzciPlNldDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUzXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfU2V0dGluZzwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNzFfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNzJfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQyXzkiPkVudW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzczXzciPldpZHRoPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNzRfNyI+U2V0PC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUzXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfU2V0dGluZzwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRiLmh0bSNyZWZfNzFfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZGIuaHRtI3JlZl83Ml83Ij5JdGVtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5FbnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzczXzciPldpZHRoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWVudW1lcmF0aW9uX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2FkYi5odG0jcmVmXzc0XzciPlNldDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUzXzkiPlR5cGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZW51bWVyYXRpb25faW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfU2V0dGluZzwvQT4pOwogCiA8Yj5wcml2YXRlPC9iPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFB1dCk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkVudW1lcmF0aW9uX0lPPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1lbnVtZXJhdGlvbl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkVudW1lcmF0aW9uX0lPPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bQppbmRleCAwYjcwYjEzLi5lNmQ5YjM0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0KQEAgLTEsNjUgKzEsNzcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pby5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRml4ZWRfSU8gICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEwIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkZpeGVkX0lPICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBBZGEuVGV4dF9JTzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkZpeGVkX0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQ4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5GaXhlZF9JTzwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Yj5wYWNrYWdlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzEyIj5BdXg8L0E+PC9GT05UPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDJfNTEiPkF1eDwvQT47CisgICA8Yj5wYWNrYWdlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMTIiPkF1eDwvQT48L3NwYW4+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKICAgIDxiPnBhY2thZ2U8L2I+IEZJWElPIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5UZXh0X0lPLkZpeGVkX0lPICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTFfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTJfNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81NF83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81MF8xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81Ml83Ij5JdGVtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTRfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+RXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzciPkJ1ZjwvQT48L0ZPTlQ+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPidMYXN0KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfNyI+TGVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzU0XzciPkFmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyI+QnVmPC9BPjwvc3Bhbj4gOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzciPkxlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTNfNyI+Rm9yZTwvQT4gKyAxICsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81NF83Ij5BZnQ8L0E+OwogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81NV83Ij5FeHA8L0E+ICZndDsgMCA8Yj50aGVuPC9iPgogICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl81N183Ij5MZW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNTdfNyI+TGVuPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT47CkBAIC02OCwxNCArODAsMTQgQEAKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNDZfMTIiPkF1eDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDhfMTQiPlB1dF9CdWY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNTZfNyI+QnVmPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl81N183Ij5MZW48L0E+LCBGYWxzZSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81N18xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81OF83Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81OV83Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl82MF83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzYxXzciPkV4cDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pIDxiPmlzPC9iPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTdfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81OF83Ij5JdGVtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81OV83Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNjBfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNjFfNyI+RXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KSA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81MF8xNCI+UHV0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82Ml8xMyI+R2V0X1dpbmRvdzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNThfNyI+SXRlbTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNTlfNyI+Rm9yZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNjBfNyI+QWZ0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl82MV83Ij5FeHA8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl81N18xNCI+UHV0PC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80NF80MyI+Rml4ZWRfSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80NF80MyI+Rml4ZWRfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtCmluZGV4IGJkNmM5NDYuLmU5OTBhZmUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bQpAQCAtMSw3MiArMSw4NCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5GaXhlZF9JTyAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRml4ZWRfSU8gICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEyIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPmdlbmVyaWM8L2I+Ci0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPk51bTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5kZWx0YTwvYj4gJmx0OyZndDs7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmRlbHRhPC9iPiAmbHQ7Jmd0OzsKIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNDMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNDRfNDgiPkZpeGVkX0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzQ0XzQ4Ij5GaXhlZF9JTzwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidGb3JlOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0FmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nQWZ0OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidGb3JlOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidBZnQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMDsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzUwXzciPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNTJfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNTNfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl81NF83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNTBfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzUyXzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl81M183Ij5BZnQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl81NF83Ij5FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjZfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjdfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjlfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZGIuaHRtI3JlZl83MF83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzY2XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjdfNyI+SXRlbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1maXhlZF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzY5XzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2FkYi5odG0jcmVmXzcwXzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZml4ZWRfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPik7CiAKIDxiPnByaXZhdGU8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoUHV0KTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80NF80MyI+Rml4ZWRfSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZpeGVkX2lvX19hZHMuaHRtI3JlZl80NF80MyI+Rml4ZWRfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtCmluZGV4IDI5YmYzZTguLjJmMTY5MGYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bQpAQCAtMSw2NSArMSw3NyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5GbG9hdF9JTyAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuMTAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uRmxvYXRfSU8gICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIDxiPndpdGg8L2I+IEFkYS5UZXh0X0lPOwotPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OworPGI+d2l0aDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF80OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+RmxvYXRfSU88L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkZsb2F0X0lPPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnBhY2thZ2U8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTIiPkF1eDwvQT48L0ZPTlQ+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKyAgIDxiPnBhY2thZ2U8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xMiI+QXV4PC9BPjwvc3Bhbj4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OwogICAgPGI+cGFja2FnZTwvYj4gRklPIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5UZXh0X0lPLkZsb2F0X0lPICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTFfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTJfNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81NF83Ij5BZnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81MF8xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81Ml83Ij5JdGVtPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTRfNyI+QWZ0PC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9BZnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTVfNyI+RXhwPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzciPkJ1ZjwvQT48L0ZPTlQ+IDogU3RyaW5nICgxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPidMYXN0KTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfNyI+TGVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81M183Ij5Gb3JlPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU0XzciPkFmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyI+QnVmPC9BPjwvc3Bhbj4gOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzciPkxlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTNfNyI+Rm9yZTwvQT4gKyAxICsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81NF83Ij5BZnQ8L0E+OwogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81NV83Ij5FeHA8L0E+ICZndDsgMCA8Yj50aGVuPC9iPgogICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl81N183Ij5MZW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNTdfNyI+TGVuPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU1XzciPkV4cDwvQT47CkBAIC02OCwxNSArODAsMTUgQEAKICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNDZfMTIiPkF1eDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWF1eF9fYWRzLmh0bSNyZWZfNDhfMTQiPlB1dF9CdWY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzUxXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNTZfNyI+QnVmPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl81N183Ij5MZW48L0E+LCBGYWxzZSk7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTBfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81N18xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81OF83Ij5JdGVtPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU5XzciPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzYwXzciPkFmdDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNjFfNyI+RXhwPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU3XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNThfNyI+SXRlbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNTlfNyI+Rm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzYwXzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzYxXzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzUwXzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81OF83Ij5JdGVtPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl81OV83Ij5Gb3JlPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl82MF83Ij5BZnQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzYxXzciPkV4cDwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzU3XzE0Ij5QdXQ8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5GbG9hdF9JTzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5GbG9hdF9JTzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0KaW5kZXggMGY4MjkxYS4uMjNmOTNiMCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtCkBAIC0xLDcyICsxLDg0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPLkZsb2F0X0lPICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5GbG9hdF9JTyAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+Z2VuZXJpYzwvYj4KLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDJfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmRpZ2l0czwvYj4gJmx0OyZndDs7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmRpZ2l0czwvYj4gJmx0OyZndDs7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzQ0XzQ4Ij5GbG9hdF9JTzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF80MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl80NF80OCI+RmxvYXRfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X0ZvcmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSAyOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0FmdDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nPGI+RGlnaXRzPC9iPiAtIDE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0FmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nPGI+RGlnaXRzPC9iPiAtIDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gMzsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzUwXzciPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNTJfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNTNfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl81NF83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNTBfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzUyXzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl81M183Ij5BZnQ8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0FmdDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl81NF83Ij5FeHA8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80OF80Ij5EZWZhdWx0X0V4cDwvQT4pOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjZfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjdfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfRm9yZTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjlfNyI+QWZ0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZGIuaHRtI3JlZl83MF83Ij5FeHA8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDhfNCI+RGVmYXVsdF9FeHA8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzY2XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjdfNyI+SXRlbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRiLmh0bSNyZWZfNjhfNyI+Rm9yZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1mbG9hdF9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9Gb3JlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzY5XzciPkFmdDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQWZ0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2FkYi5odG0jcmVmXzcwXzciPkV4cDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tZmxvYXRfaW9fX2Fkcy5odG0jcmVmXzQ4XzQiPkRlZmF1bHRfRXhwPC9BPik7CiAKIDxiPnByaXZhdGU8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoUHV0KTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+RmxvYXRfSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWZsb2F0X2lvX19hZHMuaHRtI3JlZl80NF80MyI+RmxvYXRfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bQppbmRleCA3YjM1MDIxLi5mNGM5ODRjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtCkBAIC0xLDc2ICsxLDg4IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5JbnRlZ2VyX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEwIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uSW50ZWdlcl9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBBZGEuVGV4dF9JTzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+SW50ZWdlcl9JTzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF80OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5JbnRlZ2VyX0lPPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnBhY2thZ2U8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTIiPkF1eDwvQT48L0ZPTlQ+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKyAgIDxiPnBhY2thZ2U8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xMiI+QXV4PC9BPjwvc3Bhbj4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OwogICAgPGI+cGFja2FnZTwvYj4gSUlPIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5UZXh0X0lPLkludGVnZXJfSU8gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81MV83Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTJfNyI+V2lkdGg8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTFfNyI+SXRlbTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81Ml83Ij5XaWR0aDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV83Ij5CdWY8L0E+PC9GT05UPiA6IFN0cmluZyAoMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4nTGFzdCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyI+QnVmPC9BPjwvc3Bhbj4gOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOwogICAgPGI+YmVnaW48L2I+CiAgICAgICBJSU8uUHV0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNTVfNyI+QnVmPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzUxXzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT4pOwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzQ2XzEyIj5BdXg8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ4XzE0Ij5QdXRfQnVmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzUwXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl81NV83Ij5CdWY8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTJfNyI+V2lkdGg8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81NV8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81N183Ij5XaWR0aDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl81OF83Ij5CYXNlPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTVfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTdfNyI+V2lkdGg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzU4XzciPkJhc2U8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTdfNyI+V2lkdGg8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNThfNyI+QmFzZTwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNTVfMTQiPlB1dDwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+SW50ZWdlcl9JTzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkludGVnZXJfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bQppbmRleCA3ZTlmZjFmLi5lNGIxYzdiIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtCkBAIC0xLDY5ICsxLDgxIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pby5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5JbnRlZ2VyX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uSW50ZWdlcl9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj5nZW5lcmljPC9iPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Ml85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPk51bTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5yYW5nZTwvYj4gJmx0OyZndDs7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5OdW08L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+cmFuZ2U8L2I+ICZsdDsmZ3Q7OwogCi08Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NF80MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzQ0XzQ4Ij5JbnRlZ2VyX0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNDRfNDgiPkludGVnZXJfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nV2lkdGg7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSAxMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT4nV2lkdGg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MV8xMiI+TnVtYmVyX0Jhc2U8L0E+IDo9IDEwOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl80OV8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzUwXzciPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzUxXzciPkl0ZW08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl81Ml83Ij5XaWR0aDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl81M183Ij5CYXNlPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPik7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNTFfNyI+SXRlbTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZGIuaHRtI3JlZl81Ml83Ij5XaWR0aDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPik7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzYxXzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNjJfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzYzXzciPldpZHRoPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzY0XzciPkJhc2U8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MV8xMiI+TnVtYmVyX0Jhc2U8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0Jhc2U8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNjFfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzYyXzciPkl0ZW08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRiLmh0bSNyZWZfNjNfNyI+V2lkdGg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2FkYi5odG0jcmVmXzY0XzciPkJhc2U8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLWludGVnZXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pOwogCiA8Yj5wcml2YXRlPC9iPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFB1dCk7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1pbnRlZ2VyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+SW50ZWdlcl9JTzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8taW50ZWdlcl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPkludGVnZXJfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bQppbmRleCBmMGMxNjEyLi5hZjRiMjIyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtCkBAIC0xLDc2ICsxLDg4IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvLmFkYjwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5Nb2R1bGFyX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEwIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uTW9kdWxhcl9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMSBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBBZGEuVGV4dF9JTzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNDgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TW9kdWxhcl9JTzwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF80OCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5Nb2R1bGFyX0lPPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxiPnBhY2thZ2U8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMTIiPkF1eDwvQT48L0ZPTlQ+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tYXV4X19hZHMuaHRtI3JlZl80Ml81MSI+QXV4PC9BPjsKKyAgIDxiPnBhY2thZ2U8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xMiI+QXV4PC9BPjwvc3Bhbj4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQyXzUxIj5BdXg8L0E+OwogICAgPGI+cGFja2FnZTwvYj4gTUlPIDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEFkYS5UZXh0X0lPLk1vZHVsYXJfSU8gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81MV83Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTJfNyI+V2lkdGg8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81MF83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTFfNyI+SXRlbTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81Ml83Ij5XaWR0aDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV83Ij5CdWY8L0E+PC9GT05UPiA6IFN0cmluZyAoMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4nTGFzdCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfNyI+QnVmPC9BPjwvc3Bhbj4gOiBTdHJpbmcgKDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+J0xhc3QpOwogICAgPGI+YmVnaW48L2I+CiAgICAgICBNSU8uUHV0ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNTVfNyI+QnVmPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzUxXzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTNfNyI+QmFzZTwvQT4pOwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzQ2XzEyIj5BdXg8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1hdXhfX2Fkcy5odG0jcmVmXzQ4XzE0Ij5QdXRfQnVmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzUwXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl81NV83Ij5CdWY8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTJfNyI+V2lkdGg8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81NV8xNCI+UHV0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81N183Ij5XaWR0aDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl81OF83Ij5CYXNlPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTVfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTdfNyI+V2lkdGg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDZfNCI+RGVmYXVsdF9XaWR0aDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzU4XzciPkJhc2U8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzU2XzciPkl0ZW08L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTdfNyI+V2lkdGg8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNThfNyI+QmFzZTwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNTVfMTQiPlB1dDwvQT47CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TW9kdWxhcl9JTzwvQT47Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPk1vZHVsYXJfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bQppbmRleCA4M2U3ZDYxLi4xNTUyYjBjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtCkBAIC0xLDY5ICsxLDgxIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZHM8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pby5hZHMgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTy5Nb2R1bGFyX0lPICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uTW9kdWxhcl9JTyAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4xMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj5nZW5lcmljPC9iPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Ml85IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDRfNDMiPk51bTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5tb2Q8L2I+ICZsdDsmZ3Q7OworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyXzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TnVtPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPm1vZDwvYj4gJmx0OyZndDs7CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzQzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNDRfNDgiPk1vZHVsYXJfSU88L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfNDMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl80NF80OCI+TW9kdWxhcl9JTzwvQT48L3NwYW4+IDxiPmlzPC9iPgogCi0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidXaWR0aDsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MV8xMiI+TnVtYmVyX0Jhc2U8L0E+IDo9IDEwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTBfMTIiPkZpZWxkPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPidXaWR0aDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180Ij5EZWZhdWx0X0Jhc2U8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gMTA7CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzQ5XzE0Ij5QdXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNTBfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNTFfNyI+SXRlbTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDJfOSI+TnVtPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzUyXzciPldpZHRoPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzUzXzciPkJhc2U8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MV8xMiI+TnVtYmVyX0Jhc2U8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0Jhc2U8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNDlfMTQiPlB1dDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzUwXzciPldpbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl81MV83Ij5JdGVtPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQyXzkiPk51bTwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2FkYi5odG0jcmVmXzUyXzciPldpZHRoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl81M183Ij5CYXNlPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MV8xMiI+TnVtYmVyX0Jhc2U8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80N180Ij5EZWZhdWx0X0Jhc2U8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNjFfMTQiPlB1dDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl82Ml83Ij5JdGVtPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNjNfNyI+V2lkdGg8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUwXzEyIj5GaWVsZDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ2XzQiPkRlZmF1bHRfV2lkdGg8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNjRfNyI+QmFzZTwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ3XzQiPkRlZmF1bHRfQmFzZTwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl82MV8xNCI+UHV0PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNjJfNyI+SXRlbTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Ml85Ij5OdW08L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZGIuaHRtI3JlZl82M183Ij5XaWR0aDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81MF8xMiI+RmllbGQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80Nl80Ij5EZWZhdWx0X1dpZHRoPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRiLmh0bSNyZWZfNjRfNyI+QmFzZTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8tbW9kdWxhcl9pb19fYWRzLmh0bSNyZWZfNDdfNCI+RGVmYXVsdF9CYXNlPC9BPik7CiAKIDxiPnByaXZhdGU8L2I+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoUHV0KTsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvLW1vZHVsYXJfaW9fX2Fkcy5odG0jcmVmXzQ0XzQzIj5Nb2R1bGFyX0lPPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby1tb2R1bGFyX2lvX19hZHMuaHRtI3JlZl80NF80MyI+TW9kdWxhcl9JTzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0KaW5kZXggYTdhZTc3MS4uZmI4MThkMCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtCkBAIC0xLDE5MCArMSwyMDIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZGIgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pby5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMuVGV4dF9JTyAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjE4IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDYvMDYvMjUgMTQ6MjQ6NDAgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8gICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS4yMiBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wNS8yNCAyMTozMjoxOCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfNCI+RGVmYXVsdF9XaW5kb3c8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0XzQiPkRlZmF1bHRfV2luZG93PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzU5XzE0Ij5TZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTlfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl81OV8xNCI+U2V0X1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNTlfMjYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzQ0XzQiPkRlZmF1bHRfV2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzU5XzI2Ij5XaW48L0E+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzU5XzE0Ij5TZXRfV2luZG93PC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl80NF80Ij5EZWZhdWx0X1dpbmRvdzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDRfNCI+RGVmYXVsdF9XaW5kb3c8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTZfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDRfNCI+RGVmYXVsdF9XaW5kb3c8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+OwogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzY1XzE0Ij5GbHVzaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzY1XzIxIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjVfMTQiPkZsdXNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82M18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82NV8yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDVfMTQiPlJlZnJlc2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzY1XzIxIj5XaW48L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTVfMTQiPlJlZnJlc2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzY1XzIxIj5XaW48L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82NV8xNCI+Rmx1c2g8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjZfMTQiPkZsdXNoPC9BPjwvRk9OVD4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzY2XzE0Ij5GbHVzaDwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82NV8xNCI+Rmx1c2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjZfMTQiPkZsdXNoPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gU3BlY2lmaWNhdGlvbiBvZiBsaW5lIGFuZCBwYWdlIGxlbmd0aHMgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBTcGVjaWZpY2F0aW9uIG9mIGxpbmUgYW5kIHBhZ2UgbGVuZ3RocyAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZXJlIGFyZSBubyBzZXQgcm91dGluZXMgaW4gdGhpcyBwYWNrYWdlLiBJIGFzc3VtZSwgdGhhdCB5b3UgYWxsb2NhdGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIHdpbmRvdyB3aXRoIGFuIGFwcHJvcHJpYXRlIHNpemUuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEEgc2Nyb2xsLXdpbmRvdyBpcyBpbnRlcnByZXRlZCBhcyBhbiBwYWdlIHdpdGggdW5ib3VuZGVkIHBhZ2UgbGVuZ3RoLDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpLmUuIGl0IHJldHVybnMgdGhlIGNvbnZlbnRpb25hbCAwIGFzIHBhZ2UgbGVuZ3RoLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlcmUgYXJlIG5vIHNldCByb3V0aW5lcyBpbiB0aGlzIHBhY2thZ2UuIEkgYXNzdW1lLCB0aGF0IHlvdSBhbGxvY2F0ZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhlIHdpbmRvdyB3aXRoIGFuIGFwcHJvcHJpYXRlIHNpemUuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBIHNjcm9sbC13aW5kb3cgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gcGFnZSB3aXRoIHVuYm91bmRlZCBwYWdlIGxlbmd0aCw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGkuZS4gaXQgcmV0dXJucyB0aGUgY29udmVudGlvbmFsIDAgYXMgcGFnZSBsZW5ndGguPC9FTT48L3NwYW4+CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzc3XzEzIj5MaW5lX0xlbmd0aDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzc3XzI2Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl83N18xMyI+TGluZV9MZW5ndGg8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzc3XzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODZfNyI+Tl9MaW5lczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84N183Ij5OX0NvbHM8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Nl83Ij5OX0xpbmVzPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODdfNyI+Tl9Db2xzPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjhfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl83N18yNiI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl84Nl83Ij5OX0xpbmVzPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl84N183Ij5OX0NvbHM8L0E+KTsKLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgaWYgTmF0dXJhbCAoTl9Db2xzKSAmZ3Q7IE5hdHVyYWwgKENvdW50J0xhc3QpIHRoZW48L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgcmFpc2UgTGF5b3V0X0Vycm9yOzwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBlbmQgaWY7PC9FTT48L0ZPTlQ+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0Ij5HZXRfU2l6ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzdfMjYiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODZfNyI+Tl9MaW5lczwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODdfNyI+Tl9Db2xzPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpZiBOYXR1cmFsIChOX0NvbHMpICZndDsgTmF0dXJhbCAoQ291bnQnTGFzdCkgdGhlbjwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgcmFpc2UgTGF5b3V0X0Vycm9yOzwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgZW5kIGlmOzwvRU0+PC9zcGFuPgogICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODdfNyI+Tl9Db2xzPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzdfMTMiPkxpbmVfTGVuZ3RoPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzhfMTMiPkxpbmVfTGVuZ3RoPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzhfMTMiPkxpbmVfTGVuZ3RoPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNzdfMTMiPkxpbmVfTGVuZ3RoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82Ml8xMyI+R2V0X1dpbmRvdzwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzc4XzEzIj5MaW5lX0xlbmd0aDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8xMyI+UGFnZV9MZW5ndGg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8xMyI+UGFnZV9MZW5ndGg8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8yNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNF83Ij5OX0xpbmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNV83Ij5OX0NvbHM8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDRfNyI+Tl9MaW5lczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNV83Ij5OX0NvbHM8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjJfMTMiPlNjcm9sbGluZ19BbGxvd2VkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8yNiI+V2luPC9BPikgPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTkyXzEzIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMjYiPldpbjwvQT4pIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDA7CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgwXzI2Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzEwNF83Ij5OX0xpbmVzPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMDVfNyI+Tl9Db2xzPC9BPik7Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGlmIE5hdHVyYWwgKE5fTGluZXMpICZndDsgTmF0dXJhbCAoQ291bnQnTGFzdCkgdGhlbjwvRU0+PC9GT05UPgotICAgICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICByYWlzZSBMYXlvdXRfRXJyb3I7PC9FTT48L0ZPTlQ+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGVuZCBpZjs8L0VNPjwvRk9OVD4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8yNiI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMDRfNyI+Tl9MaW5lczwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTA1XzciPk5fQ29sczwvQT4pOworICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaWYgTmF0dXJhbCAoTl9MaW5lcykgJmd0OyBOYXR1cmFsIChDb3VudCdMYXN0KSB0aGVuPC9FTT48L3NwYW4+CisgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICByYWlzZSBMYXlvdXRfRXJyb3I7PC9FTT48L3NwYW4+CisgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBlbmQgaWY7PC9FTT48L3NwYW4+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMDRfNyI+Tl9MaW5lczwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMTMiPlBhZ2VfTGVuZ3RoPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgxXzEzIj5QYWdlX0xlbmd0aDwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MV8xMyI+UGFnZV9MZW5ndGg8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPgogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8xMyI+UGFnZV9MZW5ndGg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODFfMTMiPlBhZ2VfTGVuZ3RoPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvbHVtbiwgTGluZSwgYW5kIFBhZ2UgQ29udHJvbCAtLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8xNCI+TmV3X0xpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMjQiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI3XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg2XzQxIj5TcGFjaW5nPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+IDo9IDEpCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb2x1bW4sIExpbmUsIGFuZCBQYWdlIENvbnRyb2wgLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMTQiPk5ld19MaW5lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMjQiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyN18zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8zOCI+U3BhY2luZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+IDo9IDEpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5XzciPlBfU2l6ZTwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgwXzEzIj5QYWdlX0xlbmd0aDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMjQiPldpbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOV83Ij5QX1NpemU8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84MF8xMyI+UGFnZV9MZW5ndGg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg2XzI0Ij5XaW48L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxiPm5vdDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl80MSI+U3BhY2luZzwvQT4nVmFsaWQgPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8Yj5ub3Q8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMzgiPlNwYWNpbmc8L0E+J1ZhbGlkIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yYWlzZTwvYj4gQ29uc3RyYWludF9FcnJvcjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogCi0gICAgICA8Yj5mb3I8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM1XzExIj5JPC9BPjwvRk9OVD4gPGI+aW48L2I+IDEgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl80MSI+U3BhY2luZzwvQT4gPGI+bG9vcDwvYj4KKyAgICAgIDxiPmZvcjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNV8xMSI+STwvQT48L3NwYW4+IDxiPmluPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMzgiPlNwYWNpbmc8L0E+IDxiPmxvb3A8L2I+CiAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMjlfNyI+UF9TaXplPC9BPiAmZ3Q7IDAgPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMV8xMyI+TGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMjQiPldpbjwvQT4pICZndDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTI5XzciPlBfU2l6ZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMTQiPk5ld19QYWdlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8yNCI+V2luPC9BPik7CiAgICAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI4XzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg2XzI0Ij5XaW48L0E+LCBBU0NJSS5MRik7CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OThfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMjQiPldpbjwvQT4sIEFTQ0lJLkxGKTsKICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5sb29wPC9iPjsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8xNCI+TmV3X0xpbmU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg3XzE0Ij5OZXdfTGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84N18yNCI+U3BhY2luZzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPiA6PSAxKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg3XzE0Ij5OZXdfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg3XzI0Ij5TcGFjaW5nPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4gOj0gMSkKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg2XzE0Ij5OZXdfTGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg3XzI0Ij5TcGFjaW5nPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODdfMTQiPk5ld19MaW5lPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84OV8xNCI+TmV3X1BhZ2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMjQiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMTQiPk5ld19QYWdlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMjQiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDgwXzE0Ij5DbGVhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMjQiPldpbjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1MF8xNCI+Q2xlYXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg5XzI0Ij5XaW48L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84OV8xNCI+TmV3X1BhZ2U8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkwXzE0Ij5OZXdfUGFnZTwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTBfMTQiPk5ld19QYWdlPC9BPjwvc3Bhbj4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg5XzE0Ij5OZXdfUGFnZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85MF8xNCI+TmV3X1BhZ2U8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzE0Ij5TZXRfQ29sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzIzIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjJfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfNDEiPlRvPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzE0Ij5TZXRfQ29sPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfMjMiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjJfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfMzgiPlRvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY0XzciPlk8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY1XzciPlgxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjZfNyI+WDI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2N183Ij5OPC9BPjwvRk9OVD4gIDogTmF0dXJhbDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjRfNyI+WTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NV83Ij5YMTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjZfNyI+WDI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3XzciPk48L0E+PC9zcGFuPiAgOiBOYXR1cmFsOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPGI+bm90PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzQxIj5UbzwvQT4nVmFsaWQgPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8Yj5ub3Q8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfMzgiPlRvPC9BPidWYWxpZCA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmFpc2U8L2I+IENvbnN0cmFpbnRfRXJyb3I7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKIAotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfMjMiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY0XzciPlk8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2NV83Ij5YMTwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjdfNyI+TjwvQT4gIDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTJfNDEiPlRvPC9BPik7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY3XzciPk48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY3XzciPk48L0E+IC0gMTsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY2XzciPlgyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2N183Ij5OPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Ml8yMyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjRfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY1XzciPlgxPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2N183Ij5OPC9BPiAgOj0gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Ml8zOCI+VG88L0E+KTsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjdfNyI+TjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjdfNyI+TjwvQT4gLSAxOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjZfNyI+WDI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY3XzciPk48L0E+KTsKICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2NV83Ij5YMTwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2Nl83Ij5YMjwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODZfMTQiPk5ld19MaW5lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Ml8yMyI+V2luPC9BPiwgMSk7CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2NV83Ij5YMTwvQT4gOj0gMDsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY1XzciPlgxPC9BPiAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY2XzciPlgyPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+ZGVjbGFyZTwvYj4KLSAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgyXzEzIj5GaWxsZXI8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiBTdHJpbmcgKEludGVnZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY1XzciPlgxPC9BPikgLi4gKEludGVnZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTY2XzciPlgyPC9BPikgLSAxKSkKKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODJfMTMiPkZpbGxlcjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IFN0cmluZyAoSW50ZWdlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjVfNyI+WDE8L0E+KSAuLiAoSW50ZWdlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjZfNyI+WDI8L0E+KSAtIDEpKQogICAgICAgICAgICAgICA6PSAoPGI+b3RoZXJzPC9iPiA9Jmd0OyAnICcpOwogICAgICAgICAgPGI+YmVnaW48L2I+CiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xNCI+UHV0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Ml8yMyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xODJfMTMiPkZpbGxlcjwvQT4pOwpAQCAtMTkyLDI2ICsyMDQsMjcgQEAKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzE0Ij5TZXRfQ29sPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85M18xNCI+U2V0X0NvbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85M18yMyI+VG88L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTNfMTQiPlNldF9Db2w8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85M18yMyI+VG88L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzkyXzE0Ij5TZXRfQ29sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82Ml8xMyI+R2V0X1dpbmRvdzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTNfMjMiPlRvPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTNfMTQiPlNldF9Db2w8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzE0Ij5TZXRfTGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5Nl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8yNCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTZfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTVfNDEiPlRvPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzE0Ij5TZXRfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzI0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTZfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTVfMzgiPlRvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk4XzciPlkxPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk5XzciPlkyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAwXzciPlg8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDFfNyI+TjwvQT48L0ZPTlQ+ICA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4XzciPlkxPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTlfNyI+WTI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMF83Ij5YPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDFfNyI+TjwvQT48L3NwYW4+ICA6IE5hdHVyYWw7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8Yj5ub3Q8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTVfNDEiPlRvPC9BPidWYWxpZCA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxiPm5vdDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8zOCI+VG88L0E+J1ZhbGlkIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yYWlzZTwvYj4gQ29uc3RyYWludF9FcnJvcjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogCi0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8yNCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOThfNyI+WTE8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMF83Ij5YPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMV83Ij5OPC9BPiAgOj0gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV80MSI+VG88L0E+KTsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMDFfNyI+TjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMDFfNyI+TjwvQT4gLSAxOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOTlfNyI+WTI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMV83Ij5OPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8yNCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOThfNyI+WTE8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMF83Ij5YPC9BPik7CisgICAgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjAwXzciPlg8L0E+KTsgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB1bnJlZmVyZW5jZWQ8L0VNPjwvc3Bhbj4KKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjAxXzciPk48L0E+ICA6PSBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzM4Ij5UbzwvQT4pOyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMV83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIwMV83Ij5OPC9BPiAtIDE7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5OV83Ij5ZMjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjAxXzciPk48L0E+KTsKICAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5OV83Ij5ZMjwvQT4gJmx0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5OF83Ij5ZMTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODlfMTQiPk5ld19QYWdlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85NV8yNCI+V2luPC9BPik7CiAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5OF83Ij5ZMTwvQT4gOj0gMDsKQEAgLTIyMSwxMjMgKzIzNCwxMjMgQEAKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzE0Ij5TZXRfTGluZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOTZfMTQiPlNldF9MaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk2XzI0Ij5UbzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Nl8xNCI+U2V0X0xpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85Nl8yNCI+VG88L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk1XzE0Ij5TZXRfTGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk2XzI0Ij5UbzwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk2XzE0Ij5TZXRfTGluZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85OF8xMyI+Q29sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI1XzE4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk4XzE4Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOThfMTMiPkNvbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI2XzE4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk4XzE4Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI3XzciPlk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjhfNyI+WDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI5XzciPk48L0E+PC9GT05UPiA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI4XzciPlk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyOV83Ij5YPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMF83Ij5OPC9BPjwvc3Bhbj4gOiBOYXR1cmFsOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85OF8xOCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMjdfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI4XzciPlg8L0E+KTsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI5XzciPk48L0E+IDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI4XzciPlg8L0E+KTsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMjlfNyI+TjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMjlfNyI+TjwvQT4gKyAxOwotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpZiBOICZndDsgTmF0dXJhbCAoQ291bnQnTGFzdCkgdGhlbjwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICByYWlzZSBMYXlvdXRfRXJyb3I7PC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGVuZCBpZjs8L0VNPjwvRk9OVD4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIyOV83Ij5OPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85OF8xOCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMjhfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI5XzciPlg8L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjMwXzciPk48L0E+IDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI5XzciPlg8L0E+KTsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMzBfNyI+TjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMzBfNyI+TjwvQT4gKyAxOworICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaWYgTiAmZ3Q7IE5hdHVyYWwgKENvdW50J0xhc3QpIHRoZW48L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgIHJhaXNlIExheW91dF9FcnJvcjs8L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGVuZCBpZjs8L0VNPjwvc3Bhbj4KKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIzMF83Ij5OPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfOThfMTMiPkNvbDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85OV8xMyI+Q29sPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk5XzEzIj5Db2w8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPgogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl85OF8xMyI+Q29sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl82Ml8xMyI+R2V0X1dpbmRvdzwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzk5XzEzIj5Db2w8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTAxXzEzIj5MaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMV8xOSI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMV8xMyI+TGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMV8xOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0N183Ij5ZPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ4XzciPlg8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0OV83Ij5OPC9BPjwvRk9OVD4gOiBOYXR1cmFsOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0OF83Ij5ZPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDlfNyI+WDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTBfNyI+TjwvQT48L3NwYW4+IDogTmF0dXJhbDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTAxXzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI0N183Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNDhfNyI+WDwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNDlfNyI+TjwvQT4gOj0gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNDdfNyI+WTwvQT4pOyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI0OV83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI0OV83Ij5OPC9BPiArIDE7Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGlmIE4gJmd0OyBOYXR1cmFsIChDb3VudCdMYXN0KSB0aGVuPC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgIHJhaXNlIExheW91dF9FcnJvcjs8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgZW5kIGlmOzwvRU0+PC9GT05UPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQ5XzciPk48L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTRfMTQiPkdldF9DdXJzb3JfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMV8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNDhfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQ5XzciPlg8L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjUwXzciPk48L0E+IDo9IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQ4XzciPlk8L0E+KTsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNTBfNyI+TjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNTBfNyI+TjwvQT4gKyAxOworICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaWYgTiAmZ3Q7IE5hdHVyYWwgKENvdW50J0xhc3QpIHRoZW48L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgIHJhaXNlIExheW91dF9FcnJvcjs8L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGVuZCBpZjs8L0VNPjwvc3Bhbj4KKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI1MF83Ij5OPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTAxXzEzIj5MaW5lPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwMl8xMyI+TGluZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDJfMTMiPkxpbmU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPgogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDFfMTMiPkxpbmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTAyXzEzIj5MaW5lPC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ2hhcmFjdGVycyBPdXRwdXQgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDaGFyYWN0ZXJzIE91dHB1dCAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xNCI+UHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY5XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xOSI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY5XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8zNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IENoYXJhY3RlcikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMTQiPlB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjcwXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xOSI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMzQiPkl0ZW08L0E+PC9zcGFuPiA6IENoYXJhY3RlcikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzFfNyI+UF9TaXplPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMTMiPlBhZ2VfTGVuZ3RoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMTkiPldpbjwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzJfNyI+WTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3M183Ij5YPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzRfNyI+TDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzVfNyI+QzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjcyXzciPlBfU2l6ZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgwXzEzIj5QYWdlX0xlbmd0aDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE5Ij5XaW48L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzNfNyI+WTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc0XzciPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc1XzciPkw8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzZfNyI+QzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3MV83Ij5QX1NpemU8L0E+ICZndDsgMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3Ml83Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzNfNyI+WDwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzRfNyI+TDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjc1XzciPkM8L0E+KTsKLSAgICAgICAgIDxiPmlmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzJfNyI+WTwvQT4gKyAxKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjc0XzciPkw8L0E+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjczXzciPlg8L0E+ICsgMSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3NV83Ij5DPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjcyXzciPlBfU2l6ZTwvQT4gJmd0OyAwIDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjczXzciPlk8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3NF83Ij5YPC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0Ij5HZXRfU2l6ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3NV83Ij5MPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzZfNyI+QzwvQT4pOworICAgICAgICAgPGI+aWY8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3M183Ij5ZPC9BPiArIDEpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzVfNyI+TDwvQT4gPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNzRfNyI+WDwvQT4gKyAxKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjc2XzciPkM8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzg5XzE0Ij5OZXdfUGFnZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE5Ij5XaW48L0E+KTsKICAgICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjhfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA4XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8zNyI+SXRlbTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk4XzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMzQiPkl0ZW08L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA5XzE0Ij5QdXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODdfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA5XzE5Ij5JdGVtPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQ2hhcmFjdGVyKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjg4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOV8xNCI+UHV0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTA5XzE5Ij5JdGVtPC9BPjwvc3Bhbj4gOiBDaGFyYWN0ZXIpCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMDhfMTQiPlB1dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNjJfMTMiPkdldF9XaW5kb3c8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOV8xOSI+SXRlbTwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEwOV8xNCI+UHV0PC9BPjsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gU3RyaW5ncy1PdXRwdXQgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBTdHJpbmdzLU91dHB1dCAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xNCI+UHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk3XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk3XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8zNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTQiPlB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk4XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5OF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMzQiPkl0ZW08L0E+PC9zcGFuPiA6IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTlfNyI+UF9TaXplPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfODBfMTMiPlBhZ2VfTGVuZ3RoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTkiPldpbjwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDBfNyI+WTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwMV83Ij5YPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDJfNyI+TDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDNfNyI+QzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAwXzciPlBfU2l6ZTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzgwXzEzIj5QYWdlX0xlbmd0aDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE5Ij5XaW48L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDFfNyI+WTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAyXzciPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAzXzciPkw8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDRfNyI+QzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI5OV83Ij5QX1NpemU8L0E+ICZndDsgMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMwMF83Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMDFfNyI+WDwvQT4pOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMDJfNyI+TDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAzXzciPkM8L0E+KTsKLSAgICAgICAgIDxiPmlmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMDBfNyI+WTwvQT4gKyAxKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAyXzciPkw8L0E+IDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAxXzciPlg8L0E+ICsgMSArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzM3Ij5JdGVtPC9BPidMZW5ndGgpICZndDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAzXzciPkM8L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMDBfNyI+UF9TaXplPC9BPiAmZ3Q7IDAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTRfMTQiPkdldF9DdXJzb3JfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMDFfNyI+WTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAyXzciPlg8L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAzXzciPkw8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMwNF83Ij5DPC9BPik7CisgICAgICAgICA8Yj5pZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzAxXzciPlk8L0E+ICsgMSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMwM183Ij5MPC9BPiA8Yj5hbmQ8L2I+IDxiPnRoZW48L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMwMl83Ij5YPC9BPiArIDEgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8zNCI+SXRlbTwvQT4nTGVuZ3RoKSAmZ3Q7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMwNF83Ij5DPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84OV8xNCI+TmV3X1BhZ2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPik7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMzciPkl0ZW08L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyM18xNCI+QWRkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTVfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzM0Ij5JdGVtPC9BPik7CiAgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE0Ij5QdXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNl8xNCI+UHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNl8xOSI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTZfMTQiPlB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNl8xOSI+SXRlbTwvQT48L3NwYW4+IDogU3RyaW5nKQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE1XzE0Ij5QdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTZfMTkiPkl0ZW08L0E+KTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTZfMTQiPlB1dDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE4XzE0Ij5QdXRfTGluZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMyMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExOV83Ij5XaW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTIwXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE4XzE0Ij5QdXRfTGluZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTE5XzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzI0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTIwXzciPkl0ZW08L0E+PC9zcGFuPiA6IFN0cmluZykKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExNV8xNCI+UHV0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMTlfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMjBfNyI+SXRlbTwvQT4pOwogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl84Nl8xNCI+TmV3X0xpbmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExOV83Ij5XaW48L0E+LCAxKTsKICAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMThfMTQiPlB1dF9MaW5lPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMjJfMTQiPlB1dF9MaW5lPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzMxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTIzXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTIyXzE0Ij5QdXRfTGluZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzMyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfMTIzXzciPkl0ZW08L0E+PC9zcGFuPiA6IFN0cmluZykKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+CiAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzExOF8xNCI+UHV0X0xpbmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzYyXzEzIj5HZXRfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl8xMjNfNyI+SXRlbTwvQT4pOwogICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzEyMl8xNCI+UHV0X0xpbmU8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ0XzM1Ij5UZXh0X0lPPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtCmluZGV4IDUwZTkyMjkuLmY5NWUzNTkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bQpAQCAtMSwxNDIgKzEsMTU0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW8uYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8gICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xMyBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lPICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gQWRhLlRleHRfSU87CiA8Yj53aXRoPC9iPiBBZGEuSU9fRXhjZXB0aW9uczsKIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDJfNDAiPlRleHRfSU88L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDJfNDAiPlRleHRfSU88L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAogICAgPGI+dXNlPC9iPiA8Yj50eXBlPC9iPiBBZGEuVGV4dF9JTy5Db3VudDsKLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDdfMTIiPkNvdW50PC9BPjwvRk9OVD4gPGI+aXM8L2I+IEFkYS5UZXh0X0lPLkNvdW50OwotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+IDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPidMYXN0OworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ3XzEyIj5Db3VudDwvQT48L3NwYW4+IDxiPmlzPC9iPiBBZGEuVGV4dF9JTy5Db3VudDsKKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+IDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPidMYXN0OwogCi0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwXzEyIj5GaWVsZDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiBBZGEuVGV4dF9JTy5GaWVsZDsKLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTFfMTIiPk51bWJlcl9CYXNlPC9BPjwvRk9OVD4gPGI+aXM8L2I+IEludGVnZXIgPGI+cmFuZ2U8L2I+IDIgLi4gMTY7CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMTIiPkZpZWxkPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IEFkYS5UZXh0X0lPLkZpZWxkOworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxXzEyIj5OdW1iZXJfQmFzZTwvQT48L3NwYW4+IDxiPmlzPC9iPiBJbnRlZ2VyIDxiPnJhbmdlPC9iPiAyIC4uIDE2OwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzkiPlR5cGVfU2V0PC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUzXzIyIj5Mb3dlcl9DYXNlPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMzQiPlVwcGVyX0Nhc2U8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81M180NiI+TWl4ZWRfQ2FzZTwvQT48L0ZPTlQ+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M185Ij5UeXBlX1NldDwvQT48L3NwYW4+IDxiPmlzPC9iPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzXzIyIj5Mb3dlcl9DYXNlPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M18zNCI+VXBwZXJfQ2FzZTwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfNDYiPk1peGVkX0Nhc2U8L0E+PC9zcGFuPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgRm9yIG1vc3Qgb2YgdGhlIHJvdXRpbmVzIHlvdSB3aWxsIHNlZSBhIHZlcnNpb24gd2l0aG91dCBhIFdpbmRvdzwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0eXBlIHBhcmFtZXRlci4gVGhleSB3aWxsIG9wZXJhdGUgb24gYSBkZWZhdWx0IHdpbmRvdywgd2hpY2ggY2FuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGJlIHNldCBieSB0aGUgdXNlci4gSXQgaXMgaW5pdGlhbGx5IGVxdWFsIHRvIFN0YW5kYXJkX1dpbmRvdy48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEZvciBtb3N0IG9mIHRoZSByb3V0aW5lcyB5b3Ugd2lsbCBzZWUgYSB2ZXJzaW9uIHdpdGhvdXQgYSBXaW5kb3c8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHR5cGUgcGFyYW1ldGVyLiBUaGV5IHdpbGwgb3BlcmF0ZSBvbiBhIGRlZmF1bHQgd2luZG93LCB3aGljaCBjYW48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGJlIHNldCBieSB0aGUgdXNlci4gSXQgaXMgaW5pdGlhbGx5IGVxdWFsIHRvIFN0YW5kYXJkX1dpbmRvdy48L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzQ2XzE0Ij5TZXRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDZfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBTZXQgV2luIGFzIHRoZSBkZWZhdWx0IHdpbmRvdzwvRU0+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNDZfMTQiPlNldF9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzQ2XzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU2V0IFdpbiBhcyB0aGUgZGVmYXVsdCB3aW5kb3c8L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNTJfMTMiPkdldF9XaW5kb3c8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEdldCB0aGUgY3VycmVudCBkZWZhdWx0IHdpbmRvdzwvRU0+PC9GT05UPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl81Ml8xMyI+R2V0X1dpbmRvdzwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEdldCB0aGUgY3VycmVudCBkZWZhdWx0IHdpbmRvdzwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNjNfMTQiPkZsdXNoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNjNfMjEiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzY5XzE0Ij5GbHVzaDwvQT48L0ZPTlQ+OworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfNjNfMTQiPkZsdXNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl82M18yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzY5XzE0Ij5GbHVzaDwvQT48L3NwYW4+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBTcGVjaWZpY2F0aW9uIG9mIGxpbmUgYW5kIHBhZ2UgbGVuZ3RocyAtLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFNwZWNpZmljYXRpb24gb2YgbGluZSBhbmQgcGFnZSBsZW5ndGhzIC0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlcmUgYXJlIG5vIHNldCByb3V0aW5lcyBpbiB0aGlzIHBhY2thZ2UuIEkgYXNzdW1lLCB0aGF0IHlvdSBhbGxvY2F0ZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgd2luZG93IHdpdGggYW4gYXBwcm9wcmlhdGUgc2l6ZS48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQSBzY3JvbGwtd2luZG93IGlzIGludGVycHJldGVkIGFzIGFuIHBhZ2Ugd2l0aCB1bmJvdW5kZWQgcGFnZSBsZW5ndGgsPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGkuZS4gaXQgcmV0dXJucyB0aGUgY29udmVudGlvbmFsIDAgYXMgcGFnZSBsZW5ndGguPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGVyZSBhcmUgbm8gc2V0IHJvdXRpbmVzIGluIHRoaXMgcGFja2FnZS4gSSBhc3N1bWUsIHRoYXQgeW91IGFsbG9jYXRlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGUgd2luZG93IHdpdGggYW4gYXBwcm9wcmlhdGUgc2l6ZS48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEEgc2Nyb2xsLXdpbmRvdyBpcyBpbnRlcnByZXRlZCBhcyBhbiBwYWdlIHdpdGggdW5ib3VuZGVkIHBhZ2UgbGVuZ3RoLDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgaS5lLiBpdCByZXR1cm5zIHRoZSBjb252ZW50aW9uYWwgMCBhcyBwYWdlIGxlbmd0aC48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODRfMTMiPkxpbmVfTGVuZ3RoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODRfMjYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+OwotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfOTZfMTMiPkxpbmVfTGVuZ3RoPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT47CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzg0XzEzIj5MaW5lX0xlbmd0aDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfODRfMjYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT47CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzk2XzEzIj5MaW5lX0xlbmd0aDwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMDJfMTMiPlBhZ2VfTGVuZ3RoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTAyXzI2Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPjsKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzExOF8xMyI+UGFnZV9MZW5ndGg8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDdfMTIiPkNvdW50PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTAyXzEzIj5QYWdlX0xlbmd0aDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTAyXzI2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80N18xMiI+Q291bnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMThfMTMiPlBhZ2VfTGVuZ3RoPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ3XzEyIj5Db3VudDwvQT47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb2x1bW4sIExpbmUsIGFuZCBQYWdlIENvbnRyb2wgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMjdfMTQiPk5ld19MaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTI3XzI0Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzEyN180MSI+U3BhY2luZzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPiA6PSAxKTsKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNDRfMTQiPk5ld19MaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTQ0XzI0Ij5TcGFjaW5nPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+IDo9IDEpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29sdW1uLCBMaW5lLCBhbmQgUGFnZSBDb250cm9sIC0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTI3XzE0Ij5OZXdfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTI3XzI0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Nl8zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xMjdfMzgiPlNwYWNpbmc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPiA6PSAxKTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE0NF8xNCI+TmV3X0xpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE0NF8yNCI+U3BhY2luZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+IDo9IDEpOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTUwXzE0Ij5OZXdfUGFnZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE1MF8yNCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPik7Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTU2XzE0Ij5OZXdfUGFnZTwvQT48L0ZPTlQ+OworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTUwXzE0Ij5OZXdfUGFnZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODlfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTUwXzI0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTU2XzE0Ij5OZXdfUGFnZTwvQT48L3NwYW4+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTYyXzE0Ij5TZXRfQ29sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTYyXzIzIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85Ml80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xNjJfNDEiPlRvPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KTsKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOTBfMTQiPlNldF9Db2w8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85M18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOTBfMjMiPlRvPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE2Ml8xNCI+U2V0X0NvbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTYyXzIzIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47ICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTJfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTYyXzM4Ij5UbzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5MF8xNCI+U2V0X0NvbDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTkwXzIzIj5UbzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzE5Nl8xNCI+U2V0X0xpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOTZfMjQiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTVfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTk2XzQxIj5UbzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPik7Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjE5XzE0Ij5TZXRfTGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk2XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIxOV8yNCI+VG88L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTk2XzE0Ij5TZXRfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTVfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMTk2XzI0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NV8zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8xOTZfMzgiPlRvPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjIwXzE0Ij5TZXRfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjIwXzI0Ij5UbzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+KTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI1XzEzIj5Db2w8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85OF8xOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yMjVfMTgiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+OwotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjM5XzEzIj5Db2w8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOThfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjI2XzEzIj5Db2w8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4XzE4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzIyNl8xOCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPjsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQwXzEzIj5Db2w8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDhfMTIiPlBvc2l0aXZlX0NvdW50PC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI0NV8xMyI+TGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNDVfMTkiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+OwotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI1OV8xMyI+TGluZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQ2XzEzIj5MaW5lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDFfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjQ2XzE5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80OF8xMiI+UG9zaXRpdmVfQ291bnQ8L0E+OworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjYwXzEzIj5MaW5lPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2Fkcy5odG0jcmVmXzQ4XzEyIj5Qb3NpdGl2ZV9Db3VudDwvQT47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENoYXJhY3RlcnMtT3V0cHV0IC0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ2hhcmFjdGVycy1PdXRwdXQgLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNjlfMTQiPlB1dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNjlfMTkiPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOF8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yNjlfMzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiBDaGFyYWN0ZXIpOwotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yODdfMTQiPlB1dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yODdfMTkiPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiBDaGFyYWN0ZXIpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3MF8xNCI+UHV0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjcwXzE5Ij5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI3MF8zNCI+SXRlbTwvQT48L3NwYW4+IDogQ2hhcmFjdGVyKTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yODhfMTQiPlB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA5XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI4OF8xOSI+SXRlbTwvQT48L3NwYW4+IDogQ2hhcmFjdGVyKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gU3RyaW5ncy1PdXRwdXQgLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBTdHJpbmdzLU91dHB1dCAtLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI5N18xNCI+UHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI5N18xOSI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzI5N18zNyI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZyk7Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMxNV8xNCI+UHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMxNV8xOSI+SXRlbTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZyk7CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjk4XzE0Ij5QdXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8yOThfMTkiPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTVfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMjk4XzM0Ij5JdGVtPC9BPjwvc3Bhbj4gOiBTdHJpbmcpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMxNl8xNCI+UHV0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTZfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzE2XzE5Ij5JdGVtPC9BPjwvc3Bhbj4gOiBTdHJpbmcpOwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMyMV8xNCI+UHV0X0xpbmU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMjJfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMyM183Ij5JdGVtPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gU3RyaW5nKTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMjJfMTQiPlB1dF9MaW5lPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMjNfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMjRfNyI+SXRlbTwvQT48L3NwYW4+IDogU3RyaW5nKTsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZGIuaHRtI3JlZl8zMzBfMTQiPlB1dF9MaW5lPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRiLmh0bSNyZWZfMzMxXzciPkl0ZW08L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMzMV8xNCI+UHV0X0xpbmU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRleHRfaW9fX2FkYi5odG0jcmVmXzMzMl83Ij5JdGVtPC9BPjwvc3Bhbj4gOiBTdHJpbmcpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV4Y2VwdGlvbnM8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEV4Y2VwdGlvbnM8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjdfNCI+U3RhdHVzX0Vycm9yPC9BPjwvRk9OVD4gOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLlN0YXR1c19FcnJvcjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4XzQiPk1vZGVfRXJyb3I8L0E+PC9GT05UPiAgIDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5Nb2RlX0Vycm9yOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjlfNCI+TmFtZV9FcnJvcjwvQT48L0ZPTlQ+ICAgOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLk5hbWVfRXJyb3I7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMF80Ij5Vc2VfRXJyb3I8L0E+PC9GT05UPiAgICA6IDxiPmV4Y2VwdGlvbjwvYj4gPGI+cmVuYW1lczwvYj4gQWRhLklPX0V4Y2VwdGlvbnMuVXNlX0Vycm9yOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzFfNCI+RGV2aWNlX0Vycm9yPC9BPjwvRk9OVD4gOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLkRldmljZV9FcnJvcjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzQiPkVuZF9FcnJvcjwvQT48L0ZPTlQ+ICAgIDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5FbmRfRXJyb3I7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM180Ij5EYXRhX0Vycm9yPC9BPjwvRk9OVD4gICA6IDxiPmV4Y2VwdGlvbjwvYj4gPGI+cmVuYW1lczwvYj4gQWRhLklPX0V4Y2VwdGlvbnMuRGF0YV9FcnJvcjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0XzQiPkxheW91dF9FcnJvcjwvQT48L0ZPTlQ+IDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5MYXlvdXRfRXJyb3I7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI3XzQiPlN0YXR1c19FcnJvcjwvQT48L3NwYW4+IDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5TdGF0dXNfRXJyb3I7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4XzQiPk1vZGVfRXJyb3I8L0E+PC9zcGFuPiAgIDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5Nb2RlX0Vycm9yOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOV80Ij5OYW1lX0Vycm9yPC9BPjwvc3Bhbj4gICA6IDxiPmV4Y2VwdGlvbjwvYj4gPGI+cmVuYW1lczwvYj4gQWRhLklPX0V4Y2VwdGlvbnMuTmFtZV9FcnJvcjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzBfNCI+VXNlX0Vycm9yPC9BPjwvc3Bhbj4gICAgOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLlVzZV9FcnJvcjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzFfNCI+RGV2aWNlX0Vycm9yPC9BPjwvc3Bhbj4gOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLkRldmljZV9FcnJvcjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzJfNCI+RW5kX0Vycm9yPC9BPjwvc3Bhbj4gICAgOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLkVuZF9FcnJvcjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfNCI+RGF0YV9FcnJvcjwvQT48L3NwYW4+ICAgOiA8Yj5leGNlcHRpb248L2I+IDxiPnJlbmFtZXM8L2I+IEFkYS5JT19FeGNlcHRpb25zLkRhdGFfRXJyb3I7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM0XzQiPkxheW91dF9FcnJvcjwvQT48L3NwYW4+IDogPGI+ZXhjZXB0aW9uPC9iPiA8Yj5yZW5hbWVzPC9iPiBBZGEuSU9fRXhjZXB0aW9ucy5MYXlvdXRfRXJyb3I7CiAKLTxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdGV4dF9pb19fYWRzLmh0bSNyZWZfNDRfMzUiPlRleHRfSU88L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10ZXh0X2lvX19hZHMuaHRtI3JlZl80NF8zNSI+VGV4dF9JTzwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0gYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bQppbmRleCBhMjA5YjNmLi5mM2IwODM0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bQpAQCAtMSw2MiArMSw3OCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD48SEVBRD48VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZGI8L1RJVExFPjwvSEVBRD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRiPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlLmFkYiA8L0gxPjwvRElWPjxIUj4KKzxIUj48RElWIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZGIgPC9IMT48L0RJVj48SFI+CiA8UFJFPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRyYWNlICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgTyBEIFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDIwMDAsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjUgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRyYWNlICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMjAwMC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQFJldmlzaW9uOiAxLjExIEA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOyA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOwogCi08Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Ml80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDJfMzUiPlRyYWNlPC9BPjwvRk9OVD4gPGI+aXM8L2I+Cis8Yj5wYWNrYWdlPC9iPiA8Yj5ib2R5PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Ml8zNSI+VHJhY2U8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMDJfMTQiPlRyYWNlX09uPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDRfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzEwMl8yNCI+eDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDZfOSI+VHJhY2VfQXR0cmlidXRlX1NldDwvQT4pIDxiPmlzPC9iPgotICAgPGI+cHJhZ21hPC9iPiBVbnJlZmVyZW5jZWQgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzEwMl8yNCI+eDwvQT4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzExNF8xNCI+VHJhY2VfT248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMTRfMjQiPng8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ1XzkiPlRyYWNlX0F0dHJpYnV0ZV9TZXQ8L0E+KSA8Yj5pczwvYj4KKyAgICAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzE3Ij50cmFjZUM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZGIuaHRtI3JlZl80Nl8xNyI+eTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDVfOSI+VHJhY2VfQXR0cmlidXRlX1NldDwvQT4pOworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRyYWNlQywgInRyYWNlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPm51bGw8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMDJfMTQiPlRyYWNlX09uPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzQ2XzE3Ij50cmFjZUM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMTRfMjQiPng8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTE0XzE0Ij5UcmFjZV9PbjwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTA2XzE0Ij5UcmFjZV9QdXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTA2XzI1Ij5zdHI8L0E+PC9GT05UPiA6IFN0cmluZykgPGI+aXM8L2I+Ci0gICA8Yj5wcmFnbWE8L2I+IFVucmVmZXJlbmNlZCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTA2XzI1Ij5zdHI8L0E+KTsKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMThfMTQiPlRyYWNlX1B1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzExOF8yNSI+c3RyPC9BPjwvc3Bhbj4gOiBTdHJpbmcpIDxiPmlzPC9iPgorICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTciPnRyYWNlZjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzUzXzE3Ij5mb3JtYXQ8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXk7IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M180NiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bSNyZWZfNTNfMTciPnM8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXkpOworICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHRyYWNlZiwgIl90cmFjZXMiKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIF90cmFjZXMoKSBpcyBkZWZpbmVkIGluIGNfdmFyYXJnc190b19hZGEuaDwvRU0+PC9zcGFuPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5udWxsPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTA2XzE0Ij5UcmFjZV9QdXQ8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bSNyZWZfNTNfMTciPnRyYWNlZjwvQT4gKFRvX0MgKCIlcyIpLCBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMThfMjUiPnN0cjwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTE4XzE0Ij5UcmFjZV9QdXQ8L0E+OwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Ml8zNSI+VHJhY2U8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDJfMzUiPlRyYWNlPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtCmluZGV4IDhhYjI4ZjAuLjEyOTJhZTggMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtCkBAIC0xLDExOCArMSwxNDIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+PEhFQUQ+PFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KIDxCT0RZPgotPEhSPjxESVYgQUxJR049ImNlbnRlciI+PEgxPiBGaWxlIDogdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZS5hZHMgPC9IMT48L0RJVj48SFI+Cis8SFI+PERJViBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2UuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UcmFjZSAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogRXVnZW5lIFYuIE1lbGFyYWdubyAmbHQ7YWxkb21lbEBpeC5uZXRjb20uY29tJmd0OyAyMDAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQFJldmlzaW9uOiAxLjEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRyYWNlICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMjAwMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogRXVnZW5lIFYuIE1lbGFyYWdubyAmbHQ7YWxkb21lbEBpeC5uZXRjb20uY29tJmd0OyAyMDAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuNCBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLTxiPnBhY2thZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZGIuaHRtI3JlZl80Ml80MCI+VHJhY2U8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDJfMzUiPlRyYWNlPC9BPik7Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZGIuaHRtI3JlZl80M180MCI+VHJhY2U8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDJfMzUiPlRyYWNlPC9BPik7CiAKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICAgICA8Yj5yZWNvcmQ8L2I+CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDdfMTAiPlRpbWVzPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfMTAiPlRwdXRzPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDlfMTAiPlVwZGF0ZTwvQT48L3NwYW4+ICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMTAiPkN1cnNvcl9Nb3ZlPC9BPjwvc3Bhbj4gICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfMTAiPkNoYXJhY3Rlcl9PdXRwdXQ8L0E+PC9zcGFuPiA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTJfMTAiPkNhbGxzPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTNfMTAiPlZpcnR1YWxfUHV0czwvQT48L3NwYW4+ICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfMTAiPklucHV0X0V2ZW50czwvQT48L3NwYW4+ICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfMTAiPlRUWV9TdGF0ZTwvQT48L3NwYW4+ICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTZfMTAiPkludGVybmFsX0NhbGxzPC9BPjwvc3Bhbj4gICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfMTAiPkNoYXJhY3Rlcl9DYWxsczwvQT48L3NwYW4+ICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfMTAiPlRlcm1jYXBfVGVybUluZm88L0E+PC9zcGFuPiA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfMTAiPkF0dHJpYnV0ZV9Db2xvcjwvQT48L3NwYW4+ICA6IEJvb2xlYW47CisgICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47CisgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKENfUGFzc19CeV9Db3B5LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPik7CisKKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDVfOSI+VHJhY2VfQXR0cmlidXRlX1NldDwvQT4gPGI+dXNlPC9iPgorICAgICAgPGI+cmVjb3JkPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDdfMTAiPlRpbWVzPC9BPiAgICAgICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM1Nl80Ij5UUkFDRV9USU1FU19GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNTdfNCI+VFJBQ0VfVElNRVNfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80OF8xMCI+VHB1dHM8L0E+ICAgICAgICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzU4XzQiPlRSQUNFX1RQVVRTX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM1OV80Ij5UUkFDRV9UUFVUU19MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ5XzEwIj5VcGRhdGU8L0E+ICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNjBfNCI+VFJBQ0VfVVBEQVRFX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM2MV80Ij5UUkFDRV9VUERBVEVfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81MF8xMCI+Q3Vyc29yX01vdmU8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzYyXzQiPlRSQUNFX01PVkVfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzYzXzQiPlRSQUNFX01PVkVfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81MV8xMCI+Q2hhcmFjdGVyX091dHB1dDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzY0XzQiPlRSQUNFX0NIQVJQVVRfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzY1XzQiPlRSQUNFX0NIQVJQVVRfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81Ml8xMCI+Q2FsbHM8L0E+ICAgICAgICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzY2XzQiPlRSQUNFX0NBTExTX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM2N180Ij5UUkFDRV9DQUxMU19MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzUzXzEwIj5WaXJ0dWFsX1B1dHM8L0E+ICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNjhfNCI+VFJBQ0VfVklSVFBVVF9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNjlfNCI+VFJBQ0VfVklSVFBVVF9MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzU0XzEwIj5JbnB1dF9FdmVudHM8L0E+ICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNzBfNCI+VFJBQ0VfSUVWRU5UX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM3MV80Ij5UUkFDRV9JRVZFTlRfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81NV8xMCI+VFRZX1N0YXRlPC9BPiAgICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzcyXzQiPlRSQUNFX0JJVFNfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzczXzQiPlRSQUNFX0JJVFNfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81Nl8xMCI+SW50ZXJuYWxfQ2FsbHM8L0E+ICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzc0XzQiPlRSQUNFX0lDQUxMU19GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNzVfNCI+VFJBQ0VfSUNBTExTX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNTdfMTAiPkNoYXJhY3Rlcl9DYWxsczwvQT4gIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM3Nl80Ij5UUkFDRV9DQ0FMTFNfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzc3XzQiPlRSQUNFX0NDQUxMU19MYXN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzU4XzEwIj5UZXJtY2FwX1Rlcm1JbmZvPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNzhfNCI+VFJBQ0VfREFUQUJBU0VfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzc5XzQiPlRSQUNFX0RBVEFCQVNFX0xhc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNTlfMTAiPkF0dHJpYnV0ZV9Db2xvcjwvQT4gIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM4MF80Ij5UUkFDRV9BVFRSU19GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zODFfNCI+VFJBQ0VfQVRUUlNfTGFzdDwvQT47CisgICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47CiAgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOwotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80Nl85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4XzEwIj5UaW1lczwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OV8xMCI+VHB1dHM8L0E+PC9GT05UPiAgICAgICAgICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMTAiPlVwZGF0ZTwvQT48L0ZPTlQ+ICAgICAgICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxXzEwIj5DdXJzb3JfTW92ZTwvQT48L0ZPTlQ+ICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81Ml8xMCI+Q2hhcmFjdGVyX091dHB1dDwvQT48L0ZPTlQ+IDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfMTAiPkNhbGxzPC9BPjwvRk9OVD4gICAgICAgICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0XzEwIj5WaXJ0dWFsX1B1dHM8L0E+PC9GT05UPiAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8xMCI+SW5wdXRfRXZlbnRzPC9BPjwvRk9OVD4gICAgIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTZfMTAiPlRUWV9TdGF0ZTwvQT48L0ZPTlQ+ICAgICAgICA6IEJvb2xlYW47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3XzEwIj5JbnRlcm5hbF9DYWxsczwvQT48L0ZPTlQ+ICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OF8xMCI+Q2hhcmFjdGVyX0NhbGxzPC9BPjwvRk9OVD4gIDogQm9vbGVhbjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTlfMTAiPlRlcm1jYXBfVGVybUluZm88L0E+PC9GT05UPiA6IEJvb2xlYW47Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ2XzkiPlRyYWNlX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKLQotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Nl85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPiA8Yj51c2U8L2I+Ci0gICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80OF8xMCI+VGltZXM8L0E+ICAgICAgICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICAwIC4uICAwOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDlfMTAiPlRwdXRzPC9BPiAgICAgICAgICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgMSAuLiAgMTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzUwXzEwIj5VcGRhdGU8L0E+ICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDIgLi4gIDI7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81MV8xMCI+Q3Vyc29yX01vdmU8L0E+ICAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICAzIC4uICAzOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNTJfMTAiPkNoYXJhY3Rlcl9PdXRwdXQ8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNCAuLiAgNDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzUzXzEwIj5DYWxsczwvQT4gICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDUgLi4gIDU7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81NF8xMCI+VmlydHVhbF9QdXRzPC9BPiAgICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICA2IC4uICA2OwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNTVfMTAiPklucHV0X0V2ZW50czwvQT4gICAgIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAgNyAuLiAgNzsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzU2XzEwIj5UVFlfU3RhdGU8L0E+ICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDggLi4gIDg7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81N18xMCI+SW50ZXJuYWxfQ2FsbHM8L0E+ICAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+ICA5IC4uICA5OwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNThfMTAiPkNoYXJhY3Rlcl9DYWxsczwvQT4gIDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPiAxMCAuLiAxMDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzU5XzEwIj5UZXJtY2FwX1Rlcm1JbmZvPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTEgLi4gMTE7Ci0gICAgICA8Yj5lbmQ8L2I+IDxiPnJlY29yZDwvYj47Ci0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ2XzkiPlRyYWNlX0F0dHJpYnV0ZV9TZXQ8L0E+J1NpemUgPGI+dXNlPC9iPiAzMjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGU6IHRoaXMgcmVwLiBjbGF1c2UgaXMgZ2VuZXJhdGVkIGFuZCBtYXkgYmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS48L0VNPjwvRk9OVD4KLQorICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zODJfNCI+VHJhY2VfU2l6ZTwvQT47CiAgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPbik7CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODRfNCI+VHJhY2VfRGlzYWJsZTwvQT48L0ZPTlQ+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Nl85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPiA6PSAoPGI+b3RoZXJzPC9iPiA9Jmd0OyBGYWxzZSk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTZfNCI+VHJhY2VfRGlzYWJsZTwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPiA6PSAoPGI+b3RoZXJzPC9iPiA9Jmd0OyBGYWxzZSk7CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODZfNCI+VHJhY2VfT3JkaW5hcnk8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Nl85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPiA6PQotICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDhfMTAiPlRpbWVzPC9BPiAgICAgICAgICAgID0mZ3Q7IFRydWUsCi0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80OV8xMCI+VHB1dHM8L0E+ICAgICAgICAgICAgPSZndDsgVHJ1ZSwKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzUwXzEwIj5VcGRhdGU8L0E+ICAgICAgICAgICA9Jmd0OyBUcnVlLAotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNTFfMTAiPkN1cnNvcl9Nb3ZlPC9BPiAgICAgID0mZ3Q7IFRydWUsCi0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81Ml8xMCI+Q2hhcmFjdGVyX091dHB1dDwvQT4gPSZndDsgVHJ1ZSwKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OF80Ij5UcmFjZV9PcmRpbmFyeTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ1XzkiPlRyYWNlX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9CisgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80N18xMCI+VGltZXM8L0E+ICAgICAgICAgICAgPSZndDsgVHJ1ZSwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ4XzEwIj5UcHV0czwvQT4gICAgICAgICAgICA9Jmd0OyBUcnVlLAorICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDlfMTAiPlVwZGF0ZTwvQT4gICAgICAgICAgID0mZ3Q7IFRydWUsCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl81MF8xMCI+Q3Vyc29yX01vdmU8L0E+ICAgICAgPSZndDsgVHJ1ZSwKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzUxXzEwIj5DaGFyYWN0ZXJfT3V0cHV0PC9BPiA9Jmd0OyBUcnVlLAogICAgICAgPGI+b3RoZXJzPC9iPiAgICAgICAgICAgPSZndDsgRmFsc2UpOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85M180Ij5UcmFjZV9NYXhpbXVtPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDZfOSI+VHJhY2VfQXR0cmlidXRlX1NldDwvQT4gOj0gKDxiPm90aGVyczwvYj4gPSZndDsgVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA1XzQiPlRyYWNlX01heGltdW08L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPiA6PSAoPGI+b3RoZXJzPC9iPiA9Jmd0OyBUcnVlKTsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZS4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzQ0XzE0Ij5UcmFjZV9PbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bSNyZWZfNDRfMjQiPng8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2Fkcy5odG0jcmVmXzQ2XzkiPlRyYWNlX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIGRlYnVnZ2luZyBsaWJyYXJ5IGhhcyB0cmFjZS48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRiLmh0bSNyZWZfNDVfMTQiPlRyYWNlX09uPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTRfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzQ1XzI0Ij54PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80NV85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgZGVidWdnaW5nIGxpYnJhcnkgaGFzIHRyYWNlLjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzUwXzE0Ij5UcmFjZV9QdXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzUwXzI1Ij5zdHI8L0E+PC9GT05UPiA6IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdHJhY2UuM3guaHRtbCI+X3RyYWNlZigpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZGIuaHRtI3JlZl81Ml8xNCI+VHJhY2VfUHV0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMThfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtdHJhY2VfX2FkYi5odG0jcmVmXzUyXzI1Ij5zdHI8L0E+PC9zcGFuPiA6IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3RyYWNlLjN4Lmh0bWwiPl90cmFjZWYoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDlfNCI+Q3VycmVudF9UcmFjZV9TZXR0aW5nPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Nl85Ij5UcmFjZV9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl8xMDlfNCI+Q3VycmVudF9UcmFjZV9TZXR0aW5nPC9BPiwgIl9uY190cmFjaW5nIik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxXzQiPkN1cnJlbnRfVHJhY2VfU2V0dGluZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDVfOSI+VHJhY2VfQXR0cmlidXRlX1NldDwvQT47CisgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfMTIxXzQiPkN1cnJlbnRfVHJhY2VfU2V0dGluZzwvQT4sICJfbmNfdHJhY2luZyIpOwogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLXRyYWNlX19hZHMuaHRtI3JlZl80Ml8zNSI+VHJhY2U8L0E+OworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy10cmFjZV9fYWRzLmh0bSNyZWZfNDJfMzUiPlRyYWNlPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtCmluZGV4IDFjMDEzNzUuLjYyNjIyZDEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtCisrKyBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtCkBAIC0xLDg1ICsxLDk3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYjwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZGI8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRiIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkYiA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcyAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6IEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS41IEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQERhdGU6IDIwMDgvMDcvMjYgMTg6NDY6MzIgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiBPIEQgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMTQvMDUvMjQgMjE6MzE6MDUgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogPGI+d2l0aDwvYj4gU3lzdGVtOwogCi08Yj53aXRoPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzM1Ij5BdXg8L0E+OwotPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkM7ICAgICAgICAgICAgICAgICAgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQzsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLlN0cmluZ3M7ICAgICAgICAgIDxiPnVzZTwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNDVfMzUiPkF1eDwvQT47Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgICAgICAgICAgICAgICAgICA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DOworPGI+d2l0aDwvYj4gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuU3RyaW5nczsgICAgICAgICAgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5TdHJpbmdzOwogPGI+d2l0aDwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7ICAgICAgIDxiPnVzZTwvYj4gQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7CiA8Yj53aXRoPC9iPiBBZGEuU3RyaW5ncy5GaXhlZDsKIAotPGI+cGFja2FnZTwvYj4gPGI+Ym9keTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTBfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5XzI4Ij5DdXJzZXM8L0E+PC9GT05UPiA8Yj5pczwvYj4KKzxiPnBhY2thZ2U8L2I+IDxiPmJvZHk8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTBfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KIAotICAgPGI+dXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMzUiPkF1eDwvQT47CisgICA8Yj51c2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl80NV8zNSI+QXV4PC9BPjsKICAgIDxiPnVzZTwvYj4gPGI+dHlwZTwvYj4gU3lzdGVtLkJpdF9PcmRlcjsKIAotICAgPGI+cGFja2FnZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NV8xMiI+QVNGPC9BPjwvRk9OVD4gPGI+cmVuYW1lczwvYj4gQWRhLlN0cmluZ3MuRml4ZWQ7CisgICA8Yj5wYWNrYWdlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTVfMTIiPkFTRjwvQT48L3NwYW4+IDxiPnJlbmFtZXM8L2I+IEFkYS5TdHJpbmdzLkZpeGVkOwogCiAgICA8Yj50eXBlPC9iPiBjaHR5cGVfYXJyYXkgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoc2l6ZV90IDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykKLSAgICAgIDxiPm9mPC9iPiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OworICAgICAgPGI+b2Y8L2I+IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIGNodHlwZV9hcnJheSk7CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE2XzEzIj5LZXlfTmFtZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE2XzIzIj5LZXk8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4Nl8xMyI+S2V5X05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg2XzIzIj5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjRfMTYiPktleW5hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjRfMTYiPks8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjRfMTYiPktleW5hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NF8xNiI+SzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEtleW5hbWUsICJrZXluYW1lIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjdfNyI+Q2g8L0E+PC9GT05UPiA6IENoYXJhY3RlcjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82N183Ij5DaDwvQT48L3NwYW4+IDogQ2hhcmFjdGVyOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxNl8yMyI+S2V5PC9BPiAmbHQ7PSBDaGFyYWN0ZXInUG9zIChDaGFyYWN0ZXInTGFzdCkgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3XzciPkNoPC9BPiA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE2XzIzIj5LZXk8L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg2XzIzIj5LZXk8L0E+ICZsdDs9IENoYXJhY3RlcidQb3MgKENoYXJhY3RlcidMYXN0KSA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjdfNyI+Q2g8L0E+IDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODZfMjMiPktleTwvQT4pOwogICAgICAgICAgPGI+aWY8L2I+IElzX0NvbnRyb2wgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3XzciPkNoPC9BPikgPGI+dGhlbjwvYj4KLSAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyN18xMyI+VW5fQ29udHJvbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4nKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Nl8xMCI+Q2g8L0E+ICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3XzciPkNoPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOworICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk3XzEzIj5Vbl9Db250cm9sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPicoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkxXzEwIj5DaDwvQT4gICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjdfNyI+Q2g8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+KSk7CiAgICAgICAgICA8Yj5lbHNpZjwvYj4gSXNfR3JhcGhpYyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjdfNyI+Q2g8L0E+KSA8Yj50aGVuPC9iPgogICAgICAgICAgICAgPGI+ZGVjbGFyZTwvYj4KLSAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzdfMTYiPlM8L0E+PC9GT05UPiA6IFN0cmluZyAoMSAuLiAxKTsKKyAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83N18xNiI+UzwvQT48L3NwYW4+IDogU3RyaW5nICgxIC4uIDEpOwogICAgICAgICAgICAgPGI+YmVnaW48L2I+CiAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83N18xNiI+UzwvQT4gKDEpIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3XzciPkNoPC9BPjsKICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzdfMTYiPlM8L0E+OwpAQCAtODgsMjQ3NSArMTAwLDI0NzYgQEAKICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gIiI7CiAgICAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjRfMTYiPktleW5hbWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxNl8yMyI+S2V5PC9BPikpKTsKKyAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk3XzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY0XzE2Ij5LZXluYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODZfMjMiPktleTwvQT4pKSk7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxNl8xMyI+S2V5X05hbWU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg2XzEzIj5LZXlfTmFtZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxMF8xNCI+S2V5X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxMF8yNCI+S2V5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTFfMjQiPk5hbWU8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODBfMTQiPktleV9OYW1lPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4MF8yNCI+S2V5PC9BPjwvc3Bhbj4gIDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzgxXzI0Ij5OYW1lPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZykKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NV8xMiI+QVNGPC9BPi5Nb3ZlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE2XzEzIj5LZXlfTmFtZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTBfMjQiPktleTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjExXzI0Ij5OYW1lPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTBfMTQiPktleV9OYW1lPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU1XzEyIj5BU0Y8L0E+Lk1vdmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODZfMTMiPktleV9OYW1lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4MF8yNCI+S2V5PC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODFfMjQiPk5hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4MF8xNCI+S2V5X05hbWU8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4Nl8xNCI+SW5pdF9TY3JlZW48L0E+PC9GT05UPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NTZfMTQiPkluaXRfU2NyZWVuPC9BPjwvc3Bhbj4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAwXzE2Ij5Jbml0c2NyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDBfMTYiPkluaXRzY3I8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSW5pdHNjciwgImluaXRzY3IiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDNfNyI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDNfNyI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKICAgIDxiPmJlZ2luPC9iPgogICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzXzciPlc8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMF8xNiI+SW5pdHNjcjwvQT47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzXzciPlc8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwM183Ij5XPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODZfMTQiPkluaXRfU2NyZWVuPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjU2XzE0Ij5Jbml0X1NjcmVlbjwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5NV8xNCI+RW5kX1dpbmRvd3M8L0E+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTExXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjVfMTQiPkVuZF9XaW5kb3dzPC9BPjwvc3Bhbj4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEzXzE2Ij5FbmR3aW48L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTNfMTYiPkVuZHdpbjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRW5kd2luLCAiZW5kd2luIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTNfMTYiPkVuZHdpbjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEzXzE2Ij5FbmR3aW48L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5NV8xNCI+RW5kX1dpbmRvd3M8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjVfMTQiPkVuZF9XaW5kb3dzPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDJfMTMiPklzX0VuZF9XaW5kb3c8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NzJfMTMiPklzX0VuZF9XaW5kb3c8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzE2Ij5Jc2VuZHdpbjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyM18xNiI+SXNlbmR3aW48L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIElzZW5kd2luLCAiaXNlbmR3aW4iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyM18xNiI+SXNlbmR3aW48L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyN180Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjNfMTYiPklzZW5kd2luPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIxMDBfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDJfMTMiPklzX0VuZF9XaW5kb3c8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTExXzE0Ij5Nb3ZlX0N1cnNvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTExXzI3Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUxMl8yNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTNfMjciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3Ml8xMyI+SXNfRW5kX1dpbmRvdzwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4MV8yNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjgyXzI3Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODNfMjciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3XzE2Ij5XbW92ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3XzE2Ij5XaW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzhfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzN18xNiI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3XzE2Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+Ci0gICAgICAgICAgICAgICAgICAgICApIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzN18xNiI+V21vdmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzN18yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3XzE2Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzOF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3XzE2Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzlfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzN18xNiI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPgorICAgICAgICAgICAgICAgICAgICAgKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdtb3ZlLCAid21vdmUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzN18xNiI+V21vdmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMjciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTJfMjciPkxpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUxM18yNyI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzN18xNiI+V21vdmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMjciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODJfMjciPkxpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4M18yNyI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUxMV8xNCI+TW92ZV9DdXJzb3I8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIzXzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyM18xOSI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI0XzE5Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5M18xNCI+QWRkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5M18xOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5NF8xOSI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTFfMTYiPldhZGRjaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5XPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MV8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTFfMTYiPldhZGRjaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTFfMTYiPlc8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTFfMTYiPkNoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdhZGRjaCwgIndhZGRjaCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxXzE2Ij5XYWRkY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjNfMTkiPldpbjwvQT4sIEF0dHJDaGFyX1RvX0NodHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI0XzE5Ij5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTFfMTYiPldhZGRjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5M18xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk0XzE5Ij5DaDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyM18xNCI+QWRkPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjkzXzE0Ij5BZGQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjhfMTQiPkFkZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI4XzE5Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYxXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjlfMTkiPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IENoYXJhY3RlcikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk4XzE0Ij5BZGQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk4XzE5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk5XzE5Ij5DaDwvQT48L3NwYW4+ICA6IENoYXJhY3RlcikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjNfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyOF8xOSI+V2luPC9BPiwKLSAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPicoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTI5XzE5Ij5DaDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjhfMTQiPkFkZDwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OTNfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5OF8xOSI+V2luPC9BPiwKKyAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPicoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkxXzEwIj5DaDwvQT4gICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjk5XzE5Ij5DaDwvQT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OThfMTQiPkFkZDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzNF8xNCI+QWRkPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzNV83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzNl83Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzN183Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTM4XzciPkNoPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNF8xNCI+QWRkPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA1XzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNl83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDdfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDhfNyI+Q2g8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzZfMTYiPm12d2FkZGNoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzZfMTYiPlc8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzZfMTYiPlk8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2Ij5YPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3Nl8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzZfMTYiPm12d2FkZGNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3Nl8xNiI+VzwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2Ij5ZPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2Ij5YPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBtdndhZGRjaCwgIm12d2FkZGNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzZfMTYiPm12d2FkZGNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTM1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzZfNyI+TGluZTwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzdfNyI+Q29sdW1uPC9BPiksCi0gICAgICAgICAgICAgICAgICAgQXR0ckNoYXJfVG9fQ2h0eXBlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzhfNyI+Q2g8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2XzE2Ij5tdndhZGRjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA2XzciPkxpbmU8L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA3XzciPkNvbHVtbjwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwOF83Ij5DaDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MzRfMTQiPkFkZDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNF8xNCI+QWRkPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQyXzE0Ij5BZGQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQzXzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQ0XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQ1XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NDZfNyI+Q2g8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gQ2hhcmFjdGVyKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MTJfMTQiPkFkZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxM183Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MTRfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzE1XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzE2XzciPkNoPC9BPjwvc3Bhbj4gICAgIDogQ2hhcmFjdGVyKQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUzNF8xNCI+QWRkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQzXzciPldpbjwvQT4sCi0gICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU0NF83Ij5MaW5lPC9BPiwKLSAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTQ1XzciPkNvbHVtbjwvQT4sCi0gICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4nKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Nl8xMCI+Q2g8L0E+ICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU0Nl83Ij5DaDwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NDJfMTQiPkFkZDwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDRfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxM183Ij5XaW48L0E+LAorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MTRfNyI+TGluZTwvQT4sCisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxNV83Ij5Db2x1bW48L0E+LAorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MTZfNyI+Q2g8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg1XzQiPk5vcm1hbF9WaWRlbzwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEyXzE0Ij5BZGQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTFfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1Ml83Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1M183Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjFfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIyXzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyM183Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwOF8xNiI+V2VjaG9jaGFyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA4XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDhfMTYiPlc8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwOV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA4XzE2Ij5DaDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwOV8xNiI+V2VjaG9jaGFyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwOV8xNiI+VzwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwOV8xNiI+Q2g8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2VjaG9jaGFyLCAid2VjaG9jaGFyIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDhfMTYiPldlY2hvY2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1Ml83Ij5XaW48L0E+LCBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1M183Ij5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDlfMTYiPldlY2hvY2hhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyMl83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjNfNyI+Q2g8L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTFfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIxXzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1N18xNCI+QWRkX1dpdGhfSW1tZWRpYXRlX0VjaG88L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU4XzciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU5XzciPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IENoYXJhY3RlcikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzI3XzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyOF83Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjlfNyI+Q2g8L0E+PC9zcGFuPiAgOiBDaGFyYWN0ZXIpCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUxXzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT4KLSAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1OF83Ij5XaW48L0E+LAotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPicoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU5XzciPkNoPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU3XzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2OV8xMyI+Q3JlYXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NzBfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMwXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NzFfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9GT05UPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzFfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3Ml83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTczXzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjFfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPgorICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzI4XzciPldpbjwvQT4sCisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjlfNyI+Q2g8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjdfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM5XzEzIj5DcmVhdGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzQwXzciPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NDFfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzQyXzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzNfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc0M183Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzRfMTYiPk5ld3dpbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L0ZPTlQ+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzN18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNV8xNiI+TmV3d2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzVfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNV8xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM1XzE2Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzVfMTYiPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzhfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNV8xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE5ld3dpbiwgIm5ld3dpbiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MF83Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MV83Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDBfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0XzE2Ij5OZXd3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTcwXzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NzFfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTcyXzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTczXzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDBfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDFfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM1XzE2Ij5OZXd3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzQwXzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NDFfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzQyXzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzQzXzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDFfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQwXzciPlc8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjlfMTMiPkNyZWF0ZTwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MV83Ij5XPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM5XzEzIj5DcmVhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81ODhfMTQiPkRlbGV0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1Ml8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTg4XzIyIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8xNCI+RGVsZXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8yMiI+V2luPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTRfMTYiPldkZWx3aW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NF8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU1XzE2Ij5XZGVsd2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTVfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NV8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXZGVsd2luLCAiZGVsd2luIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTRfMTYiPldkZWx3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81ODhfMjIiPldpbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NV8xNiI+V2RlbHdpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8yMiI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4OF8yMiI+V2luPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4OF8xNCI+RGVsZXRlPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8yMiI+V2luPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8xNCI+RGVsZXRlPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTRfMTMiPlN1Yl9XaW5kb3c8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk1XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTZfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTdfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9GT05UPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5OF83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY0XzEzIj5TdWJfV2luZG93PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY1XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2Nl83Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY3XzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2OF83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjlfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjcwXzE2Ij5TdWJ3aW48L0E+PC9GT05UPgotICAgICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzFfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MF8xNiI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzJfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MF8xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjczXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzBfMTYiPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3NF8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjcwXzE2Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNzVfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MF8xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzFfMTYiPlN1YndpbjwvQT48L3NwYW4+CisgICAgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjcyXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzFfMTYiPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzNfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MV8xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzRfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MV8xNiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzVfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MV8xNiI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzZfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI3MV8xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFN1YndpbiwgInN1YndpbiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI3OF83Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3OV83Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzhfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjcwXzE2Ij5TdWJ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTVfNyI+V2luPC9BPiwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk2XzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTdfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk4XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzhfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzlfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjcxXzE2Ij5TdWJ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjVfNyI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY2XzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjdfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY4XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzlfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjc4XzciPlc8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OTRfMTMiPlN1Yl9XaW5kb3c8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNzlfNyI+VzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2NF8xMyI+U3ViX1dpbmRvdzwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA0XzEzIj5EZXJpdmVkX1dpbmRvdzwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MDVfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjkzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwNl83Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwN183Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L0ZPTlQ+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA4XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MDlfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzRfMTMiPkRlcml2ZWRfV2luZG93PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc1XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3Nl83Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc3XzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3OF83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzlfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk4XzE2Ij5EZXJ3aW48L0E+PC9GT05UPgotICAgICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTlfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OF8xNiI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDBfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OF8xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzAxXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOThfMTYiPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwMl8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjk4XzE2Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDNfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OF8xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTlfMTYiPkRlcndpbjwvQT48L3NwYW4+CisgICAgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAwXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTlfMTYiPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDFfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OV8xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDJfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OV8xNiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDNfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OV8xNiI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDRfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5OV8xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIERlcndpbiwgImRlcndpbiIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwNl83Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwN183Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMDZfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjk4XzE2Ij5EZXJ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MDVfNyI+V2luPC9BPiwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA2XzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MDdfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA4XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjA5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMDZfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMDdfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjk5XzE2Ij5EZXJ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzVfNyI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc2XzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzdfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc4XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMDdfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzA2XzciPlc8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MDRfMTMiPkRlcml2ZWRfV2luZG93PC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzA3XzciPlc8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzRfMTMiPkRlcml2ZWRfV2luZG93PC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzE5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MTRfMTMiPkR1cGxpY2F0ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMxOV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjE0XzI0Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4NF8xMyI+RHVwbGljYXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4NF8yNCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzIxXzE2Ij5EdXB3aW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMyMV8xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyMl8xNiI+RHVwd2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMyMl8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgRHVwd2luLCAiZHVwd2luIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzI0XzciPlc8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMyMV8xNiI+RHVwd2luPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjE0XzI0Ij5XaW48L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjVfNyI+VzwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzIyXzE2Ij5EdXB3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODRfMjQiPldpbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzI0XzciPlc8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMyNV83Ij5XPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMjRfNyI+VzwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxNF8xMyI+RHVwbGljYXRlPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzI1XzciPlc8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODRfMTMiPkR1cGxpY2F0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxOV8xNCI+TW92ZV9XaW5kb3c8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxOV8yNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyMF8yNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzM0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MjFfMjciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4OV8xNCI+TW92ZV9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzM18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg5XzI3Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5MF8yNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzkxXzI3Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMzNl8xNiI+TXZ3aW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzNl8xNiI+V2luPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzM3XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMzZfMTYiPkxpbmU8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMzhfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzNl8xNiI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM3XzE2Ij5NdndpbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM3XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMzdfMTYiPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM4XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMzdfMTYiPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzOV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzM3XzE2Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE12d2luLCAibXZ3aW4iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzNl8xNiI+TXZ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MTlfMjciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MjBfMjciPkxpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyMV8yNyI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzN18xNiI+TXZ3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODlfMjciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OTBfMjciPkxpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5MV8yNyI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxOV8xNCI+TW92ZV9XaW5kb3c8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODlfMTQiPk1vdmVfV2luZG93PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM0Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjI2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzQ2XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MjZfMzUiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDdfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyN18zNSI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNDhfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyOF8zNSI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzk2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNDdfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5Nl8zNSI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNDhfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5N18zNSI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ5XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OThfMzUiPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzUwXzE2Ij5NdmRlcndpbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzUwXzE2Ij5XaW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM1MF8xNiI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM1Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzUwXzE2Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTFfMTYiPk12ZGVyd2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM1MV8xNiI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM1MV8xNiI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzUzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNTFfMTYiPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTXZkZXJ3aW4sICJtdmRlcndpbiIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzUwXzE2Ij5NdmRlcndpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyNl8zNSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYyN18zNSI+TGluZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjI4XzM1Ij5Db2x1bW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzUxXzE2Ij5NdmRlcndpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5Nl8zNSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc5N18zNSI+TGluZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzk4XzM1Ij5Db2x1bW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjI2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzk2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQzXzE0Ij5TZXRfU3luY2hfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2MF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQzXzMwIj5XaW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzMwIj5Nb2RlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODEzXzE0Ij5TZXRfU3luY2hfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzYxXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTNfMzAiPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2Ml8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODE0XzMwIj5Nb2RlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNjNfMTYiPlN5bmNvazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2M18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYzXzE2Ij5XaW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM2NF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYzXzE2Ij5Nb2RlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY0XzE2Ij5TeW5jb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2NF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzY0XzE2Ij5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY1XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNjRfMTYiPk1vZGU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFN5bmNvaywgInN5bmNvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYzXzE2Ij5TeW5jb2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDNfMzAiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzMwIj5Nb2RlPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNjRfMTYiPlN5bmNvazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgxM18zMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTRfMzAiPk1vZGU8L0E+KSkpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0M18xNCI+U2V0X1N5bmNoX01vZGU8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzJfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1M18xOSI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3M18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjU0XzE5Ij5TdHI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjU1XzE5Ij5MZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xKQorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTNfMTQiPlNldF9TeW5jaF9Nb2RlPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyM18xNCI+QWRkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyM18xOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzRfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyNF8xOSI+U3RyPC9BPjwvc3Bhbj4gOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjVfMTkiPkxlbjwvQT48L3NwYW4+IDogSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc2XzE2Ij5XYWRkbnN0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM3Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc2XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNzdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM3Nl8xNiI+U3RyPC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzc4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNzZfMTYiPkxlbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gLTEpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3N18xNiI+V2FkZG5zdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc3XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc3XzE2Ij5TdHI8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc3XzE2Ij5MZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IC0xKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdhZGRuc3RyLCAid2FkZG5zdHIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODFfNyI+VHh0PC9BPjwvRk9OVD4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1NF8xOSI+U3RyPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zODJfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzgyXzciPlR4dDwvQT48L3NwYW4+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjRfMTkiPlN0cjwvQT4nTGVuZ3RoKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODNfNyI+TGVuZ3RoPC9BPjwvc3Bhbj4gOiBzaXplX3Q7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1NF8xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzgxXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM4Ml83Ij5MZW5ndGg8L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNzZfMTYiPldhZGRuc3RyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zODFfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1NV8xOSI+TGVuPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODI0XzE5Ij5TdHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zODJfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzgzXzciPkxlbmd0aDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM3N18xNiI+V2FkZG5zdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjNfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM4Ml83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODI1XzE5Ij5MZW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE0Ij5BZGQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjNfMTQiPkFkZDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2Ml8xNCI+QWRkPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzkxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2Ml8xOSI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjNfMTkiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjY0XzE5Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjY1XzE5Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBTdHJpbmc7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjZfMTkiPkxlbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IEludGVnZXIgOj0gLTEpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzMl8xNCI+QWRkPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODMyXzE5Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzNfMTkiPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzk0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzNF8xOSI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzVfMTkiPlN0cjwvQT48L3NwYW4+ICAgIDogU3RyaW5nOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzZfMTkiPkxlbjwvQT48L3NwYW4+ICAgIDogSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjYyXzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjNfMTkiPkxpbmU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjRfMTkiPkNvbHVtbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjUzXzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NjJfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2NV8xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjY2XzE5Ij5MZW48L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjYyXzE0Ij5BZGQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjc3XzE0Ij5BZGQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjc3XzE5Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3OF8xOSI+U3RyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkF0dHJpYnV0ZWRfU3RyaW5nPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDA1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3OV8xOSI+TGVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMSkKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4MV8xNCI+TW92ZV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzJfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzM18xOSI+TGluZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzNF8xOSI+Q29sdW1uPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjNfMTQiPkFkZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzMl8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODM1XzE5Ij5TdHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzZfMTkiPkxlbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzJfMTQiPkFkZDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDdfMTQiPkFkZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0N18xOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ4XzE5Ij5TdHI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5BdHRyaWJ1dGVkX1N0cmluZzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0OV8xOSI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDdfMTYiPldhZGRjaG5zdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDdfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwN18xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDhfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwN18xNiI+U3RyPC9BPjwvRk9OVD4gOiBjaHR5cGVfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwOV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA3XzE2Ij5MZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IC0xKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDhfMTYiPldhZGRjaG5zdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwOF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA4XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA5XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MDhfMTYiPlN0cjwvQT48L3NwYW4+IDogY2h0eXBlX2FycmF5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxMF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA4XzE2Ij5MZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IC0xKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdhZGRjaG5zdHIsICJ3YWRkY2huc3RyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDEyXzciPlR4dDwvQT48L0ZPTlQ+IDogY2h0eXBlX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3OF8xOSI+U3RyPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxM183Ij5UeHQ8L0E+PC9zcGFuPiA6IGNodHlwZV9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDhfMTkiPlN0cjwvQT4nTGVuZ3RoKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+Zm9yPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxNF8xMSI+TGVuZ3RoPC9BPjwvRk9OVD4gPGI+aW48L2I+IDEgLi4gc2l6ZV90ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NzhfMTkiPlN0cjwvQT4nTGVuZ3RoKSA8Yj5sb29wPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDEyXzciPlR4dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQxNF8xMSI+TGVuZ3RoPC9BPiAtIDEpIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3OF8xOSI+U3RyPC9BPiAoTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDE0XzExIj5MZW5ndGg8L0E+KSk7CisgICAgICA8Yj5mb3I8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MTVfMTEiPkxlbmd0aDwvQT48L3NwYW4+IDxiPmluPC9iPiAxIC4uIHNpemVfdCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ4XzE5Ij5TdHI8L0E+J0xlbmd0aCkgPGI+bG9vcDwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQxM183Ij5UeHQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MTVfMTEiPkxlbmd0aDwvQT4gLSAxKSA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDhfMTkiPlN0cjwvQT4gKE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQxNV8xMSI+TGVuZ3RoPC9BPikpOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5sb29wPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQxMl83Ij5UeHQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NzhfMTkiPlN0cjwvQT4nTGVuZ3RoKSA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwN18xNiI+V2FkZGNobnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3N18xOSI+V2luPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQxMl83Ij5UeHQ8L0E+LAotICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3OV8xOSI+TGVuPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDEzXzciPlR4dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0OF8xOSI+U3RyPC9BPidMZW5ndGgpIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA4XzE2Ij5XYWRkY2huc3RyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ3XzE5Ij5XaW48L0E+LAorICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDEzXzciPlR4dDwvQT4sCisgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ5XzE5Ij5MZW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY3N18xNCI+QWRkPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ3XzE0Ij5BZGQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDI1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODZfMTQiPkFkZDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODZfMTkiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjg3XzE5Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDI4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4OF8xOSI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4OV8xOSI+U3RyPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkF0dHJpYnV0ZWRfU3RyaW5nPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDMwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY5MF8xOSI+TGVuPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU2XzE0Ij5BZGQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NTZfMTkiPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1N18xOSI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU4XzE5Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDMxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1OV8xOSI+U3RyPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDlfNCI+QXR0cmlidXRlZF9TdHJpbmc8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NjBfMTkiPkxlbjwvQT48L3NwYW4+ICAgIDogSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjg2XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODdfMTkiPkxpbmU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODhfMTkiPkNvbHVtbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjc3XzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODZfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4OV8xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjkwXzE5Ij5MZW48L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjg2XzE0Ij5BZGQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA0XzE0Ij5Cb3JkZXI8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA1XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNl83Ij5MZWZ0X1NpZGVfU3ltYm9sPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA3XzciPlJpZ2h0X1NpZGVfU3ltYm9sPC9BPjwvRk9OVD4gICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDhfNyI+VG9wX1NpZGVfU3ltYm9sPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwOV83Ij5Cb3R0b21fU2lkZV9TeW1ib2w8L0E+PC9GT05UPiAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEwXzciPlVwcGVyX0xlZnRfQ29ybmVyX1N5bWJvbDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MTFfNyI+VXBwZXJfUmlnaHRfQ29ybmVyX1N5bWJvbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxMl83Ij5Mb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2w8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEzXzciPkxvd2VyX1JpZ2h0X0Nvcm5lcl9TeW1ib2w8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU2XzE5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NTdfMTkiPkxpbmU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NThfMTkiPkNvbHVtbjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ3XzE0Ij5BZGQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NTZfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1OV8xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODYwXzE5Ij5MZW48L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU2XzE0Ij5BZGQ8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODc0XzE0Ij5Cb3JkZXI8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ0MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzVfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3Nl83Ij5MZWZ0X1NpZGVfU3ltYm9sPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3N183Ij5SaWdodF9TaWRlX1N5bWJvbDwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3OF83Ij5Ub3BfU2lkZV9TeW1ib2w8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3OV83Ij5Cb3R0b21fU2lkZV9TeW1ib2w8L0E+PC9zcGFuPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4MF83Ij5VcHBlcl9MZWZ0X0Nvcm5lcl9TeW1ib2w8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4MV83Ij5VcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4Ml83Ij5Mb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2w8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDQ4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4M183Ij5Mb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0OF8xNiI+V2JvcmRlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5XPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0OV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5MUzwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0OF8xNiI+UlM8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDUxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDhfMTYiPlRTPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1Ml8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5CUzwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0OF8xNiI+VUxDPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDhfMTYiPlVSQzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1NV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5MTEM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0OF8xNiI+TFJDPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDUwXzE2Ij5XYm9yZGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ1MF8xNiI+VzwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1MV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDUwXzE2Ij5MUzwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDUyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NTBfMTYiPlJTPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ1MF8xNiI+VFM8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1NF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDUwXzE2Ij5CUzwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NTBfMTYiPlVMQzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NTZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ1MF8xNiI+VVJDPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ1N18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDUwXzE2Ij5MTEM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDU4XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NTBfMTYiPkxSQzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXYm9yZGVyLCAid2JvcmRlciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ4XzE2Ij5XYm9yZGVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA1XzciPldpbjwvQT4sCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNl83Ij5MZWZ0X1NpZGVfU3ltYm9sPC9BPiksCi0gICAgICAgICAgICAgICAgICBBdHRyQ2hhcl9Ub19DaHR5cGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwN183Ij5SaWdodF9TaWRlX1N5bWJvbDwvQT4pLAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwOF83Ij5Ub3BfU2lkZV9TeW1ib2w8L0E+KSwKLSAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5BdHRyQ2hhcl9Ub19DaHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDlfNyI+Qm90dG9tX1NpZGVfU3ltYm9sPC9BPiksCi0gICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEwXzciPlVwcGVyX0xlZnRfQ29ybmVyX1N5bWJvbDwvQT4pLAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxMV83Ij5VcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPiksCi0gICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzEyXzciPkxvd2VyX0xlZnRfQ29ybmVyX1N5bWJvbDwvQT4pLAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxM183Ij5Mb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPikKLSAgICAgICAgICAgICAgICAgICkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NTBfMTYiPldib3JkZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzVfNyI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3Nl83Ij5MZWZ0X1NpZGVfU3ltYm9sPC9BPiwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3N183Ij5SaWdodF9TaWRlX1N5bWJvbDwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzhfNyI+VG9wX1NpZGVfU3ltYm9sPC9BPiwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3OV83Ij5Cb3R0b21fU2lkZV9TeW1ib2w8L0E+LAorICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODgwXzciPlVwcGVyX0xlZnRfQ29ybmVyX1N5bWJvbDwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84ODFfNyI+VXBwZXJfUmlnaHRfQ29ybmVyX1N5bWJvbDwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84ODJfNyI+TG93ZXJfTGVmdF9Db3JuZXJfU3ltYm9sPC9BPiwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4M183Ij5Mb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KICAgICAgIDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MDRfMTQiPkJvcmRlcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3NF8xNCI+Qm9yZGVyPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIwXzE0Ij5Cb3g8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIxXzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjJfNyI+VmVydGljYWxfU3ltYm9sPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ3N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjNfNyI+SG9yaXpvbnRhbF9TeW1ib2w8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5MF8xNCI+Qm94PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkxXzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkyXzciPlZlcnRpY2FsX1N5bWJvbDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDc4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5M183Ij5Ib3Jpem9udGFsX1N5bWJvbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDlfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+KQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcwNF8xNCI+Qm9yZGVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIxXzciPldpbjwvQT4sCi0gICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyMl83Ij5WZXJ0aWNhbF9TeW1ib2w8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjJfNyI+VmVydGljYWxfU3ltYm9sPC9BPiwKLSAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIzXzciPkhvcml6b250YWxfU3ltYm9sPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzIzXzciPkhvcml6b250YWxfU3ltYm9sPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyMF8xNCI+Qm94PC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3NF8xNCI+Qm9yZGVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkxXzciPldpbjwvQT4sCisgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5Ml83Ij5WZXJ0aWNhbF9TeW1ib2w8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OTJfNyI+VmVydGljYWxfU3ltYm9sPC9BPiwKKyAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkzXzciPkhvcml6b250YWxfU3ltYm9sPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkzXzciPkhvcml6b250YWxfU3ltYm9sPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5MF8xNCI+Qm94PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzI4XzE0Ij5Ib3Jpem9udGFsX0xpbmU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzI5XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ4N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MzBfNyI+TGluZV9TaXplPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiBOYXR1cmFsOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzMxXzciPkxpbmVfU3ltYm9sPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OThfMTQiPkhvcml6b250YWxfTGluZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5OV83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwMF83Ij5MaW5lX1NpemU8L0E+PC9zcGFuPiAgIDogTmF0dXJhbDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTAxXzciPkxpbmVfU3ltYm9sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5MF8xNiI+V2hsaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDkwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80OTBfMTYiPlc8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ5MF8xNiI+Q2g8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ5MF8xNiI+TGVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDkxXzE2Ij5XaGxpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5MV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDkxXzE2Ij5XPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ5MV8xNiI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDkzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80OTFfMTYiPkxlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2hsaW5lLCAid2hsaW5lIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80OTBfMTYiPldobGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyOV83Ij5XaW48L0E+LAotICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzMxXzciPkxpbmVfU3ltYm9sPC9BPiksCi0gICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MzBfNyI+TGluZV9TaXplPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ5MV8xNiI+V2hsaW5lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODk5XzciPldpbjwvQT4sCisgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwMV83Ij5MaW5lX1N5bWJvbDwvQT4sCisgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MDBfNyI+TGluZV9TaXplPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MjhfMTQiPkhvcml6b250YWxfTGluZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5OF8xNCI+SG9yaXpvbnRhbF9MaW5lPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM3XzE0Ij5WZXJ0aWNhbF9MaW5lPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczOF83Ij5XaW48L0E+PC9GT05UPiAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM5XzciPkxpbmVfU2l6ZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gTmF0dXJhbDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc0MF83Ij5MaW5lX1N5bWJvbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTA3XzE0Ij5WZXJ0aWNhbF9MaW5lPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTA4XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTA5XzciPkxpbmVfU2l6ZTwvQT48L3NwYW4+ICAgOiBOYXR1cmFsOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MTBfNyI+TGluZV9TeW1ib2w8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTA3XzE2Ij5XdmxpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MDdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwN18xNiI+VzwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwOF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTA3XzE2Ij5DaDwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwOV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTA3XzE2Ij5MZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MDlfMTYiPld2bGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTA5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDlfMTYiPlc8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUxMF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTA5XzE2Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MTFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwOV8xNiI+TGVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXdmxpbmUsICJ3dmxpbmUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwN18xNiI+V3ZsaW5lPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM4XzciPldpbjwvQT4sCi0gICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5BdHRyQ2hhcl9Ub19DaHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NDBfNyI+TGluZV9TeW1ib2w8L0E+KSwKLSAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczOV83Ij5MaW5lX1NpemU8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTA5XzE2Ij5XdmxpbmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MDhfNyI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTEwXzciPkxpbmVfU3ltYm9sPC9BPiwKKyAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwOV83Ij5MaW5lX1NpemU8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczN18xNCI+VmVydGljYWxfTGluZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwN18xNCI+VmVydGljYWxfTGluZTwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyMF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzUxXzEzIj5HZXRfS2V5c3Ryb2tlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTIwXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NTFfMjgiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCi0gICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyMV8xMyI+R2V0X0tleXN0cm9rZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTIzXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjFfMjgiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyM18xNiI+V2dldGNoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTIzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MjNfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyNl8xNiI+V2dldGNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjZfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyNl8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXZ2V0Y2gsICJ3Z2V0Y2giKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjZfNyI+QzwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyM18xNiI+V2dldGNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzUxXzI4Ij5XaW48L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjlfNyI+QzwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyNl8xNiI+V2dldGNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTIxXzI4Ij5XaW48L0E+KTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyNl83Ij5DPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyOV83Ij5DPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OF80Ij5LZXlfTm9uZTwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyNl83Ij5DPC9BPik7CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTI5XzciPkM8L0E+KTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NTFfMTMiPkdldF9LZXlzdHJva2U8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjFfMTMiPkdldF9LZXlzdHJva2U8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjJfMTQiPlVuZG9fS2V5c3Ryb2tlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjJfMzAiPktleTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczXzEyIj5SZWFsX0tleV9Db2RlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTMyXzE0Ij5VbmRvX0tleXN0cm9rZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTM4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzJfMzAiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzdfMTYiPlVuZ2V0Y2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUzN18xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDBfMTYiPlVuZ2V0Y2g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0MF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTQwXzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgVW5nZXRjaCwgInVuZ2V0Y2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUzN18xNiI+VW5nZXRjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NjJfMzAiPktleTwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NDBfMTYiPlVuZ2V0Y2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTMyXzMwIj5LZXk8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzYyXzE0Ij5VbmRvX0tleXN0cm9rZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzMl8xNCI+VW5kb19LZXlzdHJva2U8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2N18xMyI+SGFzX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0NV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY3XzIyIj5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTM3XzEzIj5IYXNfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NDhfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN18yMiI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDdfMTYiPkhhc2tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0N18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTQ3XzE2Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTBfMTYiPkhhc2tleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTUwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NTBfMTYiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSGFza2V5LCAiaGFzX2tleSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTQ3XzE2Ij5IYXNrZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY3XzIyIj5LZXk8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+Q3Vyc2VzX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU1MF8xNiI+SGFza2V5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN18yMiI+S2V5PC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY4XzQiPkN1cnNlc19GYWxzZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gRmFsc2U7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2N18xMyI+SGFzX0tleTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN18xMyI+SGFzX0tleTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc0XzEzIj5Jc19GdW5jdGlvbl9LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NTdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8zMCI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0NF8xMyI+SXNfRnVuY3Rpb25fS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0NF8zMCI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OV83Ij5MPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gKE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4XzQiPktleV9GMDwvQT4pICsKLSAgICAgICAgTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc4XzEyIj5GdW5jdGlvbl9LZXlfTnVtYmVyPC9BPidMYXN0KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTYyXzciPkw8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiAoTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwXzQiPktleV9GMDwvQT4pICsKKyAgICAgICAgTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ4XzEyIj5GdW5jdGlvbl9LZXlfTnVtYmVyPC9BPidMYXN0KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc0XzMwIj5LZXk8L0E+ICZndDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4XzQiPktleV9GMDwvQT4pIDxiPmFuZDwvYj4gPGI+dGhlbjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8zMCI+S2V5PC9BPiAmbHQ7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NTlfNyI+TDwvQT4pIDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0NF8zMCI+S2V5PC9BPiAmZ3Q7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTBfNCI+S2V5X0YwPC9BPikgPGI+YW5kPC9iPiA8Yj50aGVuPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ0XzMwIj5LZXk8L0E+ICZsdDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU2Ml83Ij5MPC9BPikgPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8xMyI+SXNfRnVuY3Rpb25fS2V5PC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ0XzEzIj5Jc19GdW5jdGlvbl9LZXk8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4MV8xMyI+RnVuY3Rpb25fS2V5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTY5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODFfMjciPktleTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTFfMTMiPkZ1bmN0aW9uX0tleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTcyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTFfMjciPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc0XzEzIj5Jc19GdW5jdGlvbl9LZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODFfMjciPktleTwvQT4pIDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4MV8yNyI+S2V5PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4XzQiPktleV9GMDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0NF8xMyI+SXNfRnVuY3Rpb25fS2V5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTUxXzI3Ij5LZXk8L0E+KSA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDhfMTIiPkZ1bmN0aW9uX0tleV9OdW1iZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTFfMjciPktleTwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTBfNCI+S2V5X0YwPC9BPik7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmFpc2U8L2I+IENvbnN0cmFpbnRfRXJyb3I7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzgxXzEzIj5GdW5jdGlvbl9LZXk8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTFfMTMiPkZ1bmN0aW9uX0tleTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg2XzEzIj5GdW5jdGlvbl9LZXlfQ29kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4MF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg2XzMyIj5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTU2XzEzIj5GdW5jdGlvbl9LZXlfQ29kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTgzXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTZfMzIiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ4XzEyIj5GdW5jdGlvbl9LZXlfTnVtYmVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4KICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczXzEyIj5SZWFsX0tleV9Db2RlPC9BPiAoTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOThfNCI+S2V5X0YwPC9BPikgKyBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODZfMzIiPktleTwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg2XzEzIj5GdW5jdGlvbl9LZXlfQ29kZTwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MDBfMTQiPlN0YW5kb3V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTg2XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MDBfMjQiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4N18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAxXzI0Ij5PbjwvQT48L0ZPTlQ+ICA6IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+IChOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTBfNCI+S2V5X0YwPC9BPikgKyBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTZfMzIiPktleTwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTU2XzEzIj5GdW5jdGlvbl9LZXlfQ29kZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTg5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzBfMTQiPlN0YW5kb3V0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81ODlfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3MF8yNCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3MV8yNCI+T248L0E+PC9zcGFuPiAgOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OV8xNiI+d3N0YW5kb3V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTg5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81ODlfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkyXzE2Ij53c3RhbmRvdXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTkyXzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgd3N0YW5kb3V0LCAid3N0YW5kb3V0Iik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTFfMTYiPndzdGFuZGVuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTkxXzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5NF8xNiI+d3N0YW5kZW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHdzdGFuZGVuZCwgIndzdGFuZGVuZCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5NF83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5N183Ij5FcnI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAxXzI0Ij5PbjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU4OV8xNiI+d3N0YW5kb3V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAwXzI0Ij5XaW48L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzFfMjQiPk9uPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTk3XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTkyXzE2Ij53c3RhbmRvdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzBfMjQiPldpbjwvQT4pOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5MV8xNiI+d3N0YW5kZW5kPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAwXzI0Ij5XaW48L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5N183Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF8xNiI+d3N0YW5kZW5kPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTcwXzI0Ij5XaW48L0E+KTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5NF83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU5N183Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgwMF8xNCI+U3RhbmRvdXQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzBfMTQiPlN0YW5kb3V0PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA2XzE0Ij5Td2l0Y2hfQ2hhcmFjdGVyX0F0dHJpYnV0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MDdfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA4XzciPkF0dHI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA5XzciPk9uPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3Nl8xNCI+U3dpdGNoX0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzdfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjExXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3OF83Ij5BdHRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzlfNyI+T248L0E+PC9zcGFuPiAgIDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTFfMTYiPldhdHRyb248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxMV8xNiI+V2luPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxMV8xNiI+Q19BdHRyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjRfMTIiPkNfQXR0clR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTRfMTYiPldhdHRyb248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxNF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE0XzE2Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTRfMTYiPkNfQXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXYXR0cm9uLCAid2F0dHJfb24iKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxNF8xNiI+V2F0dHJvZmY8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxNF8xNiI+V2luPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjE1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTRfMTYiPkNfQXR0cjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE3XzE2Ij5XYXR0cm9mZjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTdfMTYiPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTdfMTYiPkNfQXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXYXR0cm9mZiwgIndhdHRyX29mZiIpOwotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbiBBZGEgd2UgdXNlIHRoZSBPbiBCb29sZWFuIHRvIGNvbnRyb2wgd2hldGhlciBvciBub3Qgd2Ugd2FudCB0bzwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBzd2l0Y2ggb24gb3Igb2ZmIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBzZXQuPC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxOV83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjBfNyI+QUM8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NV8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MDhfNyI+QXR0cjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW4gQWRhIHdlIHVzZSB0aGUgT24gQm9vbGVhbiB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IHdlIHdhbnQgdG88L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHN3aXRjaCBvbiBvciBvZmYgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIHNldC48L0VNPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjJfNyI+RXJyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjNfNyI+QUM8L0E+PC9zcGFuPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkxXzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzhfNyI+QXR0cjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA5XzciPk9uPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE5XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjExXzE2Ij5XYXR0cm9uPC9BPiAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgwN183Ij5XaW48L0E+LCBBdHRyQ2hhcl9Ub19BdHRyVHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjIwXzciPkFDPC9BPikpOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3OV83Ij5PbjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYyMl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxNF8xNiI+V2F0dHJvbjwvQT4gICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzdfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjIzXzciPkFDPC9BPik7CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE5XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE0XzE2Ij5XYXR0cm9mZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgwN183Ij5XaW48L0E+LCBBdHRyQ2hhcl9Ub19BdHRyVHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjIwXzciPkFDPC9BPikpOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjIyXzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjE3XzE2Ij5XYXR0cm9mZjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3N183Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MjNfNyI+QUM8L0E+KTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYxOV83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYyMl83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgwNl8xNCI+U3dpdGNoX0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzZfMTQiPlN3aXRjaF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODE3XzE0Ij5TZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODE4XzciPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTlfNyI+QXR0cjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODIwXzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTg3XzE0Ij5TZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODhfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODlfNyI+QXR0cjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg1XzQiPk5vcm1hbF9WaWRlbzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5MF83Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjM5XzE2Ij5XYXR0cnNldDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzOV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM5XzE2Ij5XaW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYzOV8xNiI+Q19BdHRyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjRfMTIiPkNfQXR0clR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdhdHRyc2V0LCAid2F0dHJzZXQiKTsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tID8/PyB3YXR0cl9zZXQ8L0VNPjwvRk9OVD4KKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQyXzE2Ij5XYXR0cnNldDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NDJfMTYiPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjQzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NDJfMTYiPkNfQXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXYXR0cnNldCwgIndhdHRyc2V0Iik7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gPz8/IHdhdHRyX3NldDwvRU0+PC9zcGFuPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM5XzE2Ij5XYXR0cnNldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgxOF83Ij5XaW48L0E+LAotICAgICAgICAgICAgICAgICAgIEF0dHJDaGFyX1RvX0F0dHJUeXBlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODIwXzciPkNvbG9yPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgxOV83Ij5BdHRyPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NDJfMTYiPldhdHRyc2V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTg4XzciPldpbjwvQT4sICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTkwXzciPkNvbG9yPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4OV83Ij5BdHRyPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MTdfMTQiPlNldF9DaGFyYWN0ZXJfQXR0cmlidXRlczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4N18xNCI+U2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGVzPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjUyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjZfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjUyXzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MjdfNyI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjU0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTZfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTRfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5N183Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTVfMTYiPldhdHRyZ2V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjU1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NTVfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU1XzE2Ij5BdHI8L0E+PC9GT05UPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU1XzE2Ij5Db2w8L0E+PC9GT05UPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU1XzE2Ij5PcHQ8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTdfMTYiPldhdHRyZ2V0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1N18xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1N18xNiI+QXRyPC9BPjwvc3Bhbj4gOiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY1OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU3XzE2Ij5Db2w8L0E+PC9zcGFuPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjYwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NTdfMTYiPk9wdDwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2F0dHJnZXQsICJ3YXR0cl9nZXQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjFfNyI+QXR0cjwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYyXzciPkNvbDwvQT48L0ZPTlQ+ICA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2M183Ij5SZXM8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU1XzE2Ij5XYXR0cmdldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyN183Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NjFfNyI+QXR0cjwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjYyXzciPkNvbDwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjNfNyI+QXR0cjwvQT48L3NwYW4+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjRfNyI+Q29sPC9BPjwvc3Bhbj4gIDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NjVfNyI+UmVzPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1N18xNiI+V2F0dHJnZXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTdfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjYzXzciPkF0dHI8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2NF83Ij5Db2w8L0E+JzxiPkFjY2VzczwvYj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5OdWxsX0FkZHJlc3MpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjVfNyI+Q2g8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2M183Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcxXzQiPkN1cnNlc19PazwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2NV83Ij5DaDwvQT4gOj0gQXR0clR5cGVfVG9fQXR0ckNoYXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2MV83Ij5BdHRyPC9BPik7Ci0gICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2NV83Ij5DaDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NjVfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NF80Ij5DdXJzZXNfT2s8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY2M183Ij5BdHRyPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgyNl8xMyI+R2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTZfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzJfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc1XzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzNfNyI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDJfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzVfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDNfNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzhfMTYiPldhdHRyZ2V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NzhfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2Ij5BdHI8L0E+PC9GT05UPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2Ij5Db2w8L0E+PC9GT05UPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2Ij5PcHQ8L0E+PC9GT05UPiA6IFN5c3RlbS5BZGRyZXNzKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzhfMTYiPldhdHRyZ2V0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3OF8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NzlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3OF8xNiI+QXRyPC9BPjwvc3Bhbj4gOiA8Yj5hY2Nlc3M8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2Ij5Db2w8L0E+PC9zcGFuPiA6IDxiPmFjY2VzczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjgxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NzhfMTYiPk9wdDwvQT48L3NwYW4+IDogU3lzdGVtLkFkZHJlc3MpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2F0dHJnZXQsICJ3YXR0cl9nZXQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODRfNyI+QXR0cjwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg1XzciPkNvbDwvQT48L0ZPTlQ+ICA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4Nl83Ij5SZXM8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjc4XzE2Ij5XYXR0cmdldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzM183Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODRfNyI+QXR0cjwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjg1XzciPkNvbDwvQT4nPGI+QWNjZXNzPC9iPiwKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODRfNyI+QXR0cjwvQT48L3NwYW4+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODVfNyI+Q29sPC9BPjwvc3Bhbj4gIDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODZfNyI+UmVzPC9BPjwvc3Bhbj4gIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3OF8xNiI+V2F0dHJnZXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDAzXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY4NF83Ij5BdHRyPC9BPic8Yj5BY2Nlc3M8L2I+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODVfNyI+Q29sPC9BPic8Yj5BY2Nlc3M8L2I+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uTnVsbF9BZGRyZXNzKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg4XzciPkNoPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODZfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83MV80Ij5DdXJzZXNfT2s8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODhfNyI+Q2g8L0E+IDo9IEF0dHJUeXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODRfNyI+QXR0cjwvQT4pOwotICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82ODhfNyI+Q2g8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NV8xMCI+Q29sb3I8L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY4Nl83Ij5SZXM8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzQiPkN1cnNlc19PazwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjg0XzciPkF0dHI8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzMl8xMyI+R2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDAyXzEzIj5HZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzOF8xNCI+U2V0X0NvbG9yPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk4XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzhfMjUiPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjk5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84MzlfMjUiPlBhaXI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDhfMTQiPlNldF9Db2xvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjk2XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDA4XzI1Ij5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDlfMjUiPlBhaXI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzAxXzE2Ij5Xc2V0X0NvbG9yPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzAxXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MDFfMTYiPldpbjwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDJfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzcwMV8xNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwM18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzAxXzE2Ij5PcHRzPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYyXzEyIj5DX1ZvaWRfUHRyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjk5XzE2Ij5Xc2V0X0NvbG9yPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY5OV8xNiI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzAwXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82OTlfMTYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwMV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk5XzE2Ij5PcHRzPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU3XzEyIj5DX1ZvaWRfUHRyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXc2V0X0NvbG9yLCAid2NvbG9yX3NldCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzAxXzE2Ij5Xc2V0X0NvbG9yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODM4XzI1Ij5XaW48L0E+LAotICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODM5XzI1Ij5QYWlyPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjJfMTIiPkNfVm9pZF9QdHI8L0E+IChTeXN0ZW0uTnVsbF9BZGRyZXNzKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk5XzE2Ij5Xc2V0X0NvbG9yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwOF8yNSI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDlfMjUiPlBhaXI8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81N18xMiI+Q19Wb2lkX1B0cjwvQT4gKFN5c3RlbS5OdWxsX0FkZHJlc3MpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPgorICAgICAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODM4XzE0Ij5TZXRfQ29sb3I8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDA4XzE0Ij5TZXRfQ29sb3I8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzEzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDVfMTQiPkNoYW5nZV9BdHRyaWJ1dGVzPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzE0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0Nl83Ij5XaW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ3XzciPkNvdW50PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzE2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0OF83Ij5BdHRyPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDlfNyI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzEyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE1XzE0Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzEzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTZfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxNF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE3XzciPkNvdW50PC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE4XzciPkF0dHI8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE5XzciPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTlfMTYiPldjaGdhdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxOV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE5XzE2Ij5XaW48L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzcxOV8xNiI+Q250PC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE5XzE2Ij5BdHRyPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY0XzEyIj5DX0F0dHJUeXBlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzcxOV8xNiI+Q29sb3I8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzIzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MTlfMTYiPk9wdHM8L0E+PC9GT05UPiAgOiBTeXN0ZW0uQWRkcmVzcyA6PSBTeXN0ZW0uTnVsbF9BZGRyZXNzKQotICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MThfMTYiPldjaGdhdDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE4XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MThfMTYiPldpbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MThfMTYiPkNudDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyMF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE4XzE2Ij5BdHRyPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE4XzE2Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyMl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE4XzE2Ij5PcHRzPC9BPjwvc3Bhbj4gIDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRkcmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXY2hnYXQsICJ3Y2hnYXQiKTsKLQotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MjdfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9Ci0gICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NV8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDhfNyI+QXR0cjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE5XzE2Ij5XY2hnYXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NDZfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0N183Ij5Db3VudDwvQT4pLCBBdHRyQ2hhcl9Ub19BdHRyVHlwZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzI3XzciPkNoPC9BPiksCi0gICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0OV83Ij5Db2xvcjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MThfMTYiPldjaGdhdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTZfNyI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTdfNyI+Q291bnQ8L0E+KSwKKyAgICAgICAgICAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MV8xMCI+Q2g8L0E+ID0mZ3Q7IENoYXJhY3RlcidGaXJzdCwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKKyAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAxOF83Ij5BdHRyPC9BPiksCisgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTlfNyI+Q29sb3I8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg0NV8xNCI+Q2hhbmdlX0F0dHJpYnV0ZXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE1XzE0Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1NF8xNCI+Q2hhbmdlX0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU1XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU2XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+J0ZpcnN0OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU3XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1OF83Ij5Db3VudDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NDFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU5XzciPkF0dHI8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NjBfNyI+Q29sb3I8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyNF8xNCI+Q2hhbmdlX0F0dHJpYnV0ZXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzczOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI1XzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzM5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjZfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPidGaXJzdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyN183Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPidGaXJzdDsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyOF83Ij5Db3VudDwvQT48L3NwYW4+ICA6IEludGVnZXIgOj0gLTE7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzQyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjlfNyI+QXR0cjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDMwXzciPkNvbG9yPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCkKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1Nl83Ij5MaW5lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODU3XzciPkNvbHVtbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODQ1XzE0Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg1NV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NThfNyI+Q291bnQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NTlfNyI+QXR0cjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg2MF83Ij5Db2xvcjwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NTRfMTQiPkNoYW5nZV9BdHRyaWJ1dGVzPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NDlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3MF8xNCI+QmVlcDwvQT48L0ZPTlQ+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyNV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI2XzciPkxpbmU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI3XzciPkNvbHVtbjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAxNV8xNCI+Q2hhbmdlX0F0dHJpYnV0ZXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjhfNyI+Q291bnQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI5XzciPkF0dHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDMwXzciPkNvbG9yPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjRfMTQiPkNoYW5nZV9BdHRyaWJ1dGVzPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDBfMTQiPkJlZXA8L0E+PC9zcGFuPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NTFfMTYiPkJlZXBlcjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1Ml8xNiI+QmVlcGVyPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBCZWVwZXIsICJiZWVwIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NTFfMTYiPkJlZXBlcjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzUyXzE2Ij5CZWVwZXI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3MF8xNCI+QmVlcDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDBfMTQiPkJlZXA8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzVfMTQiPkZsYXNoX1NjcmVlbjwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDVfMTQiPkZsYXNoX1NjcmVlbjwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2MV8xNiI+Rmxhc2g8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjJfMTYiPkZsYXNoPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGbGFzaCwgImZsYXNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NjFfMTYiPkZsYXNoPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NjJfMTYiPkZsYXNoPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzVfMTQiPkZsYXNoX1NjcmVlbjwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzY5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84ODZfMTQiPlNldF9DYnJlYWtfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc2OV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODg2XzMxIj5Td2l0Y2hPbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA0NV8xNCI+Rmxhc2hfU2NyZWVuPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNTZfMTQiPlNldF9DYnJlYWtfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzcwXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDU2XzMxIj5Td2l0Y2hPbjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NzFfMTYiPkNicmVhazwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3Ml8xNiI+Q2JyZWFrPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDYnJlYWssICJjYnJlYWsiKTsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3M18xNiI+Tm9DYnJlYWs8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzRfMTYiPk5vQ2JyZWFrPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOb0NicmVhaywgIm5vY2JyZWFrIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzc2XzciPkVycjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc3XzciPkVycjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84ODZfMzEiPlN3aXRjaE9uPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzc2XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzcxXzE2Ij5DYnJlYWs8L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNTZfMzEiPlN3aXRjaE9uPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzc3XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzcyXzE2Ij5DYnJlYWs8L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc3Nl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc3M18xNiI+Tm9DYnJlYWs8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzc3XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzc0XzE2Ij5Ob0NicmVhazwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NzZfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NzdfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84ODZfMTQiPlNldF9DYnJlYWtfTW9kZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNTZfMTQiPlNldF9DYnJlYWtfTW9kZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5Ml8xNCI+U2V0X1Jhd19Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzg4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OTJfMjgiPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzg5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDYyXzE0Ij5TZXRfUmF3X01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2Ml8yOCI+U3dpdGNoT248L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzkwXzE2Ij5SYXc8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OTFfMTYiPlJhdzwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUmF3LCAicmF3Iik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83OTJfMTYiPk5vUmF3PC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzkzXzE2Ij5Ob1JhdzwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTm9SYXcsICJub3JhdyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc5NV83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5Nl83Ij5FcnI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkyXzI4Ij5Td2l0Y2hPbjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5NV83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5MF8xNiI+UmF3PC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDYyXzI4Ij5Td2l0Y2hPbjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5Nl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5MV8xNiI+UmF3PC9BPjsKICAgICAgIDxiPmVsc2U8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83OTVfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83OTJfMTYiPk5vUmF3PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5Nl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc5M18xNiI+Tm9SYXc8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzk1XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzk2XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkyXzE0Ij5TZXRfUmF3X01vZGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDYyXzE0Ij5TZXRfUmF3X01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODA3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OThfMTQiPlNldF9FY2hvX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5OF8yOSI+U3dpdGNoT248L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjhfMTQiPlNldF9FY2hvX01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwOF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2OF8yOSI+U3dpdGNoT248L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODA5XzE2Ij5FY2hvPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODEwXzE2Ij5FY2hvPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBFY2hvLCAiZWNobyIpOwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODExXzE2Ij5Ob0VjaG88L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MTJfMTYiPk5vRWNobzwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTm9FY2hvLCAibm9lY2hvIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODE0XzciPkVycjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODE1XzciPkVycjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OThfMjkiPlN3aXRjaE9uPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODE0XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODA5XzE2Ij5FY2hvPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDY4XzI5Ij5Td2l0Y2hPbjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgxNV83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgxMF8xNiI+RWNobzwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODE0XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODExXzE2Ij5Ob0VjaG88L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODE1XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODEyXzE2Ij5Ob0VjaG88L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODE0XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODE1XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODk4XzE0Ij5TZXRfRWNob19Nb2RlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2OF8xNCI+U2V0X0VjaG9fTW9kZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwNF8xNCI+U2V0X01ldGFfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgyNl8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTA0XzI5Ij5XaW48L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODI3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MDVfMjkiPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODI3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzE0Ij5TZXRfTWV0YV9Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MjdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNzRfMjkiPldpbjwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODI4XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc1XzI5Ij5Td2l0Y2hPbjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjlfMTYiPk1ldGE8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjlfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyOV8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyOV8xNiI+TW9kZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzMF8xNiI+TWV0YTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODMwXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzBfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MzBfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgzMF8xNiI+TW9kZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTWV0YSwgIm1ldGEiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyOV8xNiI+TWV0YTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwNF8yOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MDVfMjkiPlN3aXRjaE9uPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzBfMTYiPk1ldGE8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzI5Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNzVfMjkiPlN3aXRjaE9uPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MDRfMTQiPlNldF9NZXRhX01vZGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzE0Ij5TZXRfTWV0YV9Nb2RlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTEwXzE0Ij5TZXRfS2V5UGFkX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MzdfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxMF8zMSI+V2luPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODM4XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MTFfMzEiPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODM4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDgwXzE0Ij5TZXRfS2V5UGFkX01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzOF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MF8zMSI+V2luPC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzOV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MV8zMSI+U3dpdGNoT248L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQwXzE2Ij5LZXlwYWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MF8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDBfMzYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MF8xNiI+TW9kZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0MV8xNiI+S2V5cGFkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MV8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0MV8zNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODQxXzE2Ij5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBLZXlwYWQsICJrZXlwYWQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MF8xNiI+S2V5cGFkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTEwXzMxIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxMV8zMSI+U3dpdGNoT248L0E+KSkpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0MV8xNiI+S2V5cGFkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MF8zMSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDgxXzMxIj5Td2l0Y2hPbjwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTEwXzE0Ij5TZXRfS2V5UGFkX01vZGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDgwXzE0Ij5TZXRfS2V5UGFkX01vZGU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxNV8xMyI+R2V0X0tleVBhZF9Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ4XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MTVfMzAiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODVfMTMiPkdldF9LZXlQYWRfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODQ5XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDg1XzMwIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODUxXzE2Ij5Jc19LZXlwYWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg1MV8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODUyXzE2Ij5Jc19LZXlwYWQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODUyXzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIElzX0tleXBhZCwgImlzX2tleXBhZCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NTFfMTYiPklzX0tleXBhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkxNV8zMCI+V2luPC9BPikgLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyN180Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MTVfMTMiPkdldF9LZXlQYWRfTW9kZTwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NTJfMTYiPklzX0tleXBhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODVfMzAiPldpbjwvQT4pIC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIxMDBfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4NV8xMyI+R2V0X0tleVBhZF9Nb2RlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTIzXzE0Ij5IYWxmX0RlbGF5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjNfMjYiPkFtb3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyMF85Ij5IYWxmX0RlbGF5X0Ftb3VudDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOTNfMTQiPkhhbGZfRGVsYXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1OF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5M18yNiI+QW1vdW50PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDkwXzkiPkhhbGZfRGVsYXlfQW1vdW50PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU5XzE2Ij5IYWxmZGVsYXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NTlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg1OV8xNiI+QW1vdW50PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODYwXzE2Ij5IYWxmZGVsYXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg2MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODYwXzE2Ij5BbW91bnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEhhbGZkZWxheSwgImhhbGZkZWxheSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODU5XzE2Ij5IYWxmZGVsYXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTIzXzI2Ij5BbW91bnQ8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODYwXzE2Ij5IYWxmZGVsYXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5M18yNiI+QW1vdW50PC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyM18xNCI+SGFsZl9EZWxheTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOTNfMTQiPkhhbGZfRGVsYXk8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODY3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjhfMTQiPlNldF9GbHVzaF9Pbl9JbnRlcnJ1cHRfTW9kZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg2OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjlfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTMwXzciPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NjhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOThfMTQiPlNldF9GbHVzaF9Pbl9JbnRlcnJ1cHRfTW9kZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODY5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOTlfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMDBfNyI+TW9kZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NzFfMTYiPkludHJmbHVzaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg3MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODcxXzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODcxXzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NzFfMTYiPk1vZGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NzJfMTYiPkludHJmbHVzaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODcyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NzJfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3Ml80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODcyXzE2Ij5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJbnRyZmx1c2gsICJpbnRyZmx1c2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg3MV8xNiI+SW50cmZsdXNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTI5XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTMwXzciPk1vZGU8L0E+KSkpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg3Ml8xNiI+SW50cmZsdXNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMDBfNyI+TW9kZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTI4XzE0Ij5TZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDk4XzE0Ij5TZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODc5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzVfMTQiPlNldF9RdWV1ZV9JbnRlcnJ1cHRfTW9kZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzZfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODgxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN183Ij5GbHVzaDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg4MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwNV8xNCI+U2V0X1F1ZXVlX0ludGVycnVwdF9Nb2RlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84ODFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwNl83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODgyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMDdfNyI+Rmx1c2g8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4M18xNyI+UWlmbHVzaDwvQT48L0ZPTlQ+OworICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODg0XzE3Ij5RaWZsdXNoPC9BPjwvc3Bhbj47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUWlmbHVzaCwgInFpZmx1c2giKTsKLSAgICAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84ODVfMTciPk5vX1FpZmx1c2g8L0E+PC9GT05UPjsKKyAgICAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg4Nl8xNyI+Tm9fUWlmbHVzaDwvQT48L3NwYW4+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE5vX1FpZmx1c2gsICJub3FpZmx1c2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzNl83Ij5XaW48L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMDZfNyI+V2luPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzN183Ij5GbHVzaDwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4M18xNyI+UWlmbHVzaDwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwN183Ij5GbHVzaDwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4NF8xNyI+UWlmbHVzaDwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODg1XzE3Ij5Ob19RaWZsdXNoPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4Nl8xNyI+Tm9fUWlmbHVzaDwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTM1XzE0Ij5TZXRfUXVldWVfSW50ZXJydXB0X01vZGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTA1XzE0Ij5TZXRfUXVldWVfSW50ZXJydXB0X01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODk4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDNfMTQiPlNldF9Ob0RlbGF5X01vZGU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ0XzciPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0NV83Ij5Nb2RlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBGYWxzZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExM18xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTRfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTVfNyI+TW9kZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTAyXzE2Ij5Ob2RlbGF5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTAyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MDJfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MDJfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkwMl8xNiI+TW9kZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwM18xNiI+Tm9kZWxheTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTAzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MDNfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwM18zOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTAzXzE2Ij5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOb2RlbGF5LCAibm9kZWxheSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTAyXzE2Ij5Ob2RlbGF5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ0XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ1XzciPk1vZGU8L0E+KSkpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkwM18xNiI+Tm9kZWxheTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTRfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTE1XzciPk1vZGU8L0E+KSkpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0M18xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTNfMTQiPlNldF9Ob0RlbGF5X01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTJfMTQiPlNldF9UaW1lb3V0X01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTBfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1Ml8zMiI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTFfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1M18zMiI+TW9kZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ5XzkiPlRpbWVvdXRfTW9kZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTJfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1NF8zMiI+QW1vdW50PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyMl8xNCI+U2V0X1RpbWVvdXRfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTExXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTIyXzMyIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MTJfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMjNfMzIiPk1vZGU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExOV85Ij5UaW1lb3V0X01vZGU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MTNfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMjRfMzIiPkFtb3VudDwvQT48L3NwYW4+IDogTmF0dXJhbCkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxNF8xNyI+V3RpbWVvdXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxNF8xNyI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxNF80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE0XzE3Ij5BbW91bnQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KTsKKyAgICAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxNV8xNyI+V3RpbWVvdXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkxNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE1XzE3Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MTVfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxNV8xNyI+QW1vdW50PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPik7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV3RpbWVvdXQsICJ3dGltZW91dCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxN183Ij5UaW1lPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MThfNyI+VGltZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmNhc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1M18zMiI+TW9kZTwvQT4gPGI+aXM8L2I+Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDlfMjYiPkJsb2NraW5nPC9BPiAgICAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE3XzciPlRpbWU8L0E+IDo9IC0xOwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ5XzM2Ij5Ob25fQmxvY2tpbmc8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxN183Ij5UaW1lPC9BPiA6PSAwOwotICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ5XzUwIj5EZWxheWVkPC9BPiAgICAgID0mZ3Q7Ci0gICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTU0XzMyIj5BbW91bnQ8L0E+ID0gMCA8Yj50aGVuPC9iPgorICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyM18zMiI+TW9kZTwvQT4gPGI+aXM8L2I+CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTE5XzI2Ij5CbG9ja2luZzwvQT4gICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxOF83Ij5UaW1lPC9BPiA6PSAtMTsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTlfMzYiPk5vbl9CbG9ja2luZzwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE4XzciPlRpbWU8L0E+IDo9IDA7CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTE5XzUwIj5EZWxheWVkPC9BPiAgICAgID0mZ3Q7CisgICAgICAgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyNF8zMiI+QW1vdW50PC9BPiA9IDAgPGI+dGhlbjwvYj4KICAgICAgICAgICAgICAgIDxiPnJhaXNlPC9iPiBDb25zdHJhaW50X0Vycm9yOwogICAgICAgICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTdfNyI+VGltZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1NF8zMiI+QW1vdW50PC9BPik7CisgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MThfNyI+VGltZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMjRfMzIiPkFtb3VudDwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5jYXNlPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxNF8xNyI+V3RpbWVvdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTJfMzIiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxN183Ij5UaW1lPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk1Ml8xNCI+U2V0X1RpbWVvdXRfTW9kZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTVfMTciPld0aW1lb3V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyMl8zMiI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTE4XzciPlRpbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyMl8xNCI+U2V0X1RpbWVvdXRfTW9kZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk2NF8xNCI+U2V0X0VzY2FwZV9UaW1lcl9Nb2RlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTMyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk2NV83Ij5XaW48L0E+PC9GT05UPiAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTMzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk2Nl83Ij5UaW1lcl9PZmY8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTMyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTM0XzE0Ij5TZXRfRXNjYXBlX1RpbWVyX01vZGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTM1XzciPldpbjwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTM0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMzZfNyI+VGltZXJfT2ZmPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzVfMTYiPk5vdGltZW91dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTM1XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTM1XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MzVfMTYiPk1vZGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MzZfMTYiPk5vdGltZW91dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTM2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MzZfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzNl80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTM2XzE2Ij5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOb3RpbWVvdXQsICJub3RpbWVvdXQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzNV8xNiI+Tm90aW1lb3V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTY1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTY2XzciPlRpbWVyX09mZjwvQT4pKSkKLSAgICAgICAgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTM2XzE2Ij5Ob3RpbWVvdXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTM1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNl83Ij5UaW1lcl9PZmY8L0E+KSkpCisgICAgICAgID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NjRfMTQiPlNldF9Fc2NhcGVfVGltZXJfTW9kZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMzRfMTQiPlNldF9Fc2NhcGVfVGltZXJfTW9kZTwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3NV8xNCI+U2V0X05MX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk3NV8yNyI+U3dpdGNoT248L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTQ1XzE0Ij5TZXRfTkxfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTQ3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTQ1XzI3Ij5Td2l0Y2hPbjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDdfMTYiPk5MPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTQ5XzE2Ij5OTDwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTkwsICJubCIpOwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTQ5XzE2Ij5Ob05MPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTUxXzE2Ij5Ob05MPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOb05MLCAibm9ubCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1Ml83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk1NF83Ij5FcnI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTc1XzI3Ij5Td2l0Y2hPbjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk1Ml83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk0N18xNiI+Tkw8L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNDVfMjciPlN3aXRjaE9uPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTU0XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTQ5XzE2Ij5OTDwvQT47CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTUyXzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTQ5XzE2Ij5Ob05MPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk1NF83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk1MV8xNiI+Tm9OTDwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NTJfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NTRfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NzVfMTQiPlNldF9OTF9Nb2RlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCI+U2V0X05MX01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTY0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODFfMTQiPkNsZWFyX09uX05leHRfVXBkYXRlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4Ml83Ij5XaW48L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTgzXzciPkRvX0NsZWFyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUxXzE0Ij5DbGVhcl9Pbl9OZXh0X1VwZGF0ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTJfNyI+V2luPC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk2OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUzXzciPkRvX0NsZWFyPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk2OF8xNiI+Q2xlYXJfT2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjhfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk2OF8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjhfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk2OF8xNiI+RmxhZzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3MF8xNiI+Q2xlYXJfT2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTcwXzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTcwXzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NzBfMTYiPkZsYWc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIENsZWFyX09rLCAiY2xlYXJvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTY4XzE2Ij5DbGVhcl9PazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4Ml83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk4M183Ij5Eb19DbGVhcjwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTcwXzE2Ij5DbGVhcl9PazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTJfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUzXzciPkRvX0NsZWFyPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODFfMTQiPkNsZWFyX09uX05leHRfVXBkYXRlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1MV8xNCI+Q2xlYXJfT25fTmV4dF9VcGRhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODhfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0xpbmU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTg5XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTkwXzciPkRvX0lkbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1OF8xNCI+VXNlX0luc2VydF9EZWxldGVfTGluZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTc5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTlfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85ODBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2MF83Ij5Eb19JZGw8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTgwXzE2Ij5JRExfT2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85ODBfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4MF8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85ODBfMzYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4MF8xNiI+RmxhZzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4Ml8xNiI+SURMX09rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85ODJfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4Ml8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4Ml8zNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTgyXzE2Ij5GbGFnPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJRExfT2ssICJpZGxvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTgwXzE2Ij5JRExfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODlfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTBfNyI+RG9fSWRsPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85ODJfMTYiPklETF9PazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTlfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTYwXzciPkRvX0lkbDwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTg4XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1OF8xNCI+VXNlX0luc2VydF9EZWxldGVfTGluZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85ODhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5NV8xNCI+VXNlX0luc2VydF9EZWxldGVfQ2hhcmFjdGVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTg5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5Nl83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTkwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk5N183Ij5Eb19JZGM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNjVfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0NoYXJhY3RlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTkxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNjZfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2N183Ij5Eb19JZGM8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5Ml8xNyI+SURDX09rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTkyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTJfMTciPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTkyXzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTJfMTciPkZsYWc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KTsKKyAgICAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk5NF8xNyI+SURDX09rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk5NF8xNyI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk5NF8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTk0XzE3Ij5GbGFnPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPik7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSURDX09rLCAiaWRjb2siKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTkyXzE3Ij5JRENfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTZfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85OTdfNyI+RG9fSWRjPC9BPikpKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTk1XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTk0XzE3Ij5JRENfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTY2XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2N183Ij5Eb19JZGM8L0E+KSkpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTY1XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDAyXzE0Ij5MZWF2ZV9DdXJzb3JfQWZ0ZXJfVXBkYXRlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDNfNyI+V2luPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAwMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDA0XzciPkRvX0xlYXZlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3Ml8xNCI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTczXzciPldpbjwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDAyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzRfNyI+RG9fTGVhdmU8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAwMl8xNiI+TGVhdmVfT2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDAyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDAyXzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMDJfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMDJfMTYiPkZsYWc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDA0XzE2Ij5MZWF2ZV9PazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwNF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAwNF8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMDRfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMDRfMTYiPkZsYWc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIExlYXZlX09rLCAibGVhdmVvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAwMl8xNiI+TGVhdmVfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDAzXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwNF83Ij5Eb19MZWF2ZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAwNF8xNiI+TGVhdmVfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTczXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3NF83Ij5Eb19MZWF2ZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwMl8xNCI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzJfMTQiPkxlYXZlX0N1cnNvcl9BZnRlcl9VcGRhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwOV8xNCI+SW1tZWRpYXRlX1VwZGF0ZV9Nb2RlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDEwXzciPldpbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDExXzciPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3OV8xNCI+SW1tZWRpYXRlX1VwZGF0ZV9Nb2RlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDEzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODBfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxNF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTgxXzciPk1vZGU8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gRmFsc2UpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDE0XzE3Ij5JbW1lZG9rPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAxNF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAxNF8xNyI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMTRfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTRfMTciPk1vZGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KTsKKyAgICAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMTZfMTciPkltbWVkb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMTZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTZfMTciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMTZfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTZfMTciPk1vZGU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KTsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBJbW1lZG9rLCAiaW1tZWRvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDE0XzE3Ij5JbW1lZG9rPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAxMF83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTFfNyI+TW9kZTwvQT4pKSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDlfMTQiPkltbWVkaWF0ZV9VcGRhdGVfTW9kZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDE2XzE3Ij5JbW1lZG9rPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4MF83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODFfNyI+TW9kZTwvQT4pKSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzlfMTQiPkltbWVkaWF0ZV9VcGRhdGVfTW9kZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDIwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE2XzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDIxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMTdfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE4XzciPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4Nl8xNCI+QWxsb3dfU2Nyb2xsaW5nPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODdfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4OF83Ij5Nb2RlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI0XzE2Ij5TY3JvbGxvazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMjRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjRfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI0XzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDI0XzE2Ij5Nb2RlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyNl8xNiI+U2Nyb2xsb2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjZfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMjZfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjZfMTYiPk1vZGU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNjcm9sbG9rLCAic2Nyb2xsb2siKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjRfMTYiPlNjcm9sbG9rPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAxN183Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMThfNyI+TW9kZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAyNl8xNiI+U2Nyb2xsb2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTg3XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4OF83Ij5Nb2RlPC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE2XzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTg2XzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDMyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDIyXzEzIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMzJfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjJfMzIiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMzRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTJfMTMiPlNjcm9sbGluZ19BbGxvd2VkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDM0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTkyXzMyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDM1XzE2Ij5Jc19TY3JvbGxfT2s8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDM1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDM1XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDM3XzE2Ij5Jc19TY3JvbGxfT2s8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMzdfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMzdfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSXNfU2Nyb2xsX09rLCAiaXNfc2Nyb2xsb2siKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzNV8xNiI+SXNfU2Nyb2xsX09rPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyMl8zMiI+V2luPC9BPikgLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyN180Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDIyXzEzIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDM3XzE2Ij5Jc19TY3JvbGxfT2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTkyXzMyIj5XaW48L0E+KSAvPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTJfMTMiPlNjcm9sbGluZ19BbGxvd2VkPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjdfMTQiPlNldF9TY3JvbGxfUmVnaW9uPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDI4XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAyOV83Ij5Ub3BfTGluZTwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDQ0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMzBfNyI+Qm90dG9tX0xpbmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTdfMTQiPlNldF9TY3JvbGxfUmVnaW9uPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDQ0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOThfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNDVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE5OV83Ij5Ub3BfTGluZTwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjAwXzciPkJvdHRvbV9MaW5lPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0Nl8xNiI+V3NldHNjcnJlZzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNDZfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNDZfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0N18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0Nl8xNiI+TGluPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0OF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0Nl8xNiI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0OF8xNiI+V3NldHNjcnJlZzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0OF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0OF8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNDlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNDhfMTYiPkxpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA1MF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0OF8xNiI+Q29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXc2V0c2NycmVnLCAid3NldHNjcnJlZyIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0Nl8xNiI+V3NldHNjcnJlZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjhfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjlfNyI+VG9wX0xpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMzBfNyI+Qm90dG9tX0xpbmU8L0E+KSkKLSAgICAgICAgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0OF8xNiI+V3NldHNjcnJlZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOThfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTlfNyI+VG9wX0xpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMDBfNyI+Qm90dG9tX0xpbmU8L0E+KSkKKyAgICAgICAgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjdfMTQiPlNldF9TY3JvbGxfUmVnaW9uPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDU3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQwXzE0Ij5VcGRhdGVfU2NyZWVuPC9BPjwvRk9OVD4KKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE5N18xNCI+U2V0X1Njcm9sbF9SZWdpb248L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNjBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTBfMTQiPlVwZGF0ZV9TY3JlZW48L0E+PC9zcGFuPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDU5XzE2Ij5Eb19VcGRhdGU8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDYyXzE2Ij5Eb19VcGRhdGU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIERvX1VwZGF0ZSwgImRvdXBkYXRlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDU5XzE2Ij5Eb19VcGRhdGU8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNjJfMTYiPkRvX1VwZGF0ZTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA0MF8xNCI+VXBkYXRlX1NjcmVlbjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTBfMTQiPlVwZGF0ZV9TY3JlZW48L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA2N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA0NV8xNCI+UmVmcmVzaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNjdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDVfMjMiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA3MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxNV8xNCI+UmVmcmVzaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA3MF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxNV8yMyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA2OV8xNiI+V3JlZnJlc2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDY5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDY5XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDcyXzE2Ij5XcmVmcmVzaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA3Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA3Ml8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXcmVmcmVzaCwgIndyZWZyZXNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDY5XzE2Ij5XcmVmcmVzaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDVfMjMiPldpbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNzJfMTYiPldyZWZyZXNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxNV8yMyI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA0NV8xNCI+UmVmcmVzaDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTVfMTQiPlJlZnJlc2g8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA1Ml8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA1M183Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwODBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjJfMTQiPlJlZnJlc2hfV2l0aG91dF9VcGRhdGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwODFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyM183Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDgwXzE2Ij5Xbm91dHJlZnJlc2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDgwXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDgwXzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDgzXzE2Ij5Xbm91dHJlZnJlc2g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwODNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwODNfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV25vdXRyZWZyZXNoLCAid25vdXRyZWZyZXNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDgwXzE2Ij5Xbm91dHJlZnJlc2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDUzXzciPldpbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwODNfMTYiPldub3V0cmVmcmVzaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjNfNyI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA1Ml8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjJfMTQiPlJlZnJlc2hfV2l0aG91dF9VcGRhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA1OV8xNCI+UmVkcmF3PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA1OV8yMiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDkxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI5XzE0Ij5SZWRyYXc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOTFfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjlfMjIiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOTBfMTYiPlJlZHJhd3dpbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOTBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwOTBfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA5M18xNiI+UmVkcmF3d2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDkzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDkzXzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUmVkcmF3d2luLCAicmVkcmF3d2luIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDkwXzE2Ij5SZWRyYXd3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDU5XzIyIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDkzXzE2Ij5SZWRyYXd3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI5XzIyIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDU5XzE0Ij5SZWRyYXc8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI5XzE0Ij5SZWRyYXc8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA5OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2M18xNCI+UmVkcmF3PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA5OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDYzXzIyIj5XaW48L0E+PC9GT05UPiAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2NF8yMiI+QmVnaW5fTGluZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjVfMjIiPkxpbmVfQ291bnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBQb3NpdGl2ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzNfMTQiPlJlZHJhdzwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjMzXzIyIj5XaW48L0E+PC9zcGFuPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzRfMjIiPkJlZ2luX0xpbmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzNV8yMiI+TGluZV9Db3VudDwvQT48L3NwYW4+IDogUG9zaXRpdmUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDNfMTYiPldyZWRyYXdsbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMDNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMDNfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTAzXzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTAzXzE2Ij5GaXJzdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwM181NiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEwM18xNiI+Q250PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwNl8xNiI+V3JlZHJhd2xuPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTA2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTA2XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTA2XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTA2XzE2Ij5GaXJzdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTA2XzU2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTA2XzE2Ij5DbnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdyZWRyYXdsbiwgIndyZWRyYXdsbiIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEwM18xNiI+V3JlZHJhd2xuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2M18yMiI+V2luPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjRfMjIiPkJlZ2luX0xpbmU8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjVfMjIiPkxpbmVfQ291bnQ8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEwNl8xNiI+V3JlZHJhd2xuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzM18yMiI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzRfMjIiPkJlZ2luX0xpbmU8L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzVfMjIiPkxpbmVfQ291bnQ8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNjNfMTQiPlJlZHJhdzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzNfMTQiPlJlZHJhdzwvQT47CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzE0Ij5FcmFzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMTVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNzRfMjEiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNDRfMTQiPkVyYXNlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTE5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzIxIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE3XzE2Ij5XZXJhc2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTE3XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTIxXzE2Ij5XZXJhc2U8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMjFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMjFfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2VyYXNlLCAid2VyYXNlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTE3XzE2Ij5XZXJhc2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzIxIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTIxXzE2Ij5XZXJhc2U8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzIxIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDc0XzE0Ij5FcmFzZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNDRfMTQiPkVyYXNlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMjVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODBfMTQiPkNsZWFyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEyNV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MV83Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTBfMTQiPkNsZWFyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTI5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjUxXzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMjdfMTYiPldjbGVhcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMjdfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMzFfMTYiPldjbGVhcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEzMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEzMV8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXY2xlYXIsICJ3Y2xlYXIiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMjdfMTYiPldjbGVhcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODFfNyI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEzMV8xNiI+V2NsZWFyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1MV83Ij5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDgwXzE0Ij5DbGVhcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTBfMTQiPkNsZWFyPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODdfMTQiPkNsZWFyX1RvX0VuZF9PZl9TY3JlZW48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTM1XzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDg4XzciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEzOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1N18xNCI+Q2xlYXJfVG9fRW5kX09mX1NjcmVlbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEzOV8zOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1OF83Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTM3XzE2Ij5XY2xlYXJib3Q8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTM3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTM3XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTQxXzE2Ij5XY2xlYXJib3Q8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNDFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNDFfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2NsZWFyYm90LCAid2NscnRvYm90Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTM3XzE2Ij5XY2xlYXJib3Q8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDg4XzciPldpbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNDFfMTYiPldjbGVhcmJvdDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNThfNyI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4N18xNCI+Q2xlYXJfVG9fRW5kX09mX1NjcmVlbjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTdfMTQiPkNsZWFyX1RvX0VuZF9PZl9TY3JlZW48L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5NF8xNCI+Q2xlYXJfVG9fRW5kX09mX0xpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTQ1XzM2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDk1XzciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE0OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI2NF8xNCI+Q2xlYXJfVG9fRW5kX09mX0xpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNDlfMzYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNjVfNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0N18xNiI+V2NsZWFyZW9sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0N18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE0N18xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE1MV8xNiI+V2NsZWFyZW9sPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTUxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTUxXzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdjbGVhcmVvbCwgIndjbHJ0b2VvbCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE0N18xNiI+V2NsZWFyZW9sPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5NV83Ij5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTUxXzE2Ij5XY2xlYXJlb2w8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY1XzciPldpbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwOTRfMTQiPkNsZWFyX1RvX0VuZF9PZl9MaW5lPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTU1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTA4XzE0Ij5TZXRfQmFja2dyb3VuZDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwOV83Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTEwXzciPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNjRfMTQiPkNsZWFyX1RvX0VuZF9PZl9MaW5lPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc4XzE0Ij5TZXRfQmFja2dyb3VuZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc5XzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjgwXzciPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNTlfMTciPldCYWNrZ3JvdW5kPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1OV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE1OV8xNyI+VzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1OV80NSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE1OV8xNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPik7CisgICAgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTYzXzE3Ij5XQmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2M18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2M18xNyI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNjNfNDIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNjNfMTciPkNoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXQmFja2dyb3VuZCwgIndia2dkc2V0Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNTlfMTciPldCYWNrZ3JvdW5kPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwOV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExMF83Ij5DaDwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwOF8xNCI+U2V0X0JhY2tncm91bmQ8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2M18xNyI+V0JhY2tncm91bmQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc5XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODBfNyI+Q2g8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3OF8xNCI+U2V0X0JhY2tncm91bmQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExNl8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTdfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExOF83Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4Nl8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4N183Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4OF83Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNjlfMTYiPldDaGFuZ2VCa2dkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2OV8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTY5XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTY5XzE2Ij5DaDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzNfMTYiPldDaGFuZ2VCa2dkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTczXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTczXzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE3M180MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE3M18xNiI+Q2g8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCisgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdDaGFuZ2VCa2dkLCAid2JrZ2QiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNjlfMTYiPldDaGFuZ2VCa2dkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExN183Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExOF83Ij5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTczXzE2Ij5XQ2hhbmdlQmtnZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODdfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4OF83Ij5DaDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMTZfMTQiPkNoYW5nZV9CYWNrZ3JvdW5kPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4Nl8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTc3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTI1XzEzIj5HZXRfQmFja2dyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNzdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMjVfMjkiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCi0gICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTgyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjk1XzEzIj5HZXRfQmFja2dyb3VuZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE4Ml8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5NV8yOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKKyAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExODBfMTYiPldnZXRia2dkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE4MF8xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTg1XzE2Ij5XZ2V0YmtnZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE4NV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE4NV8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2dldGJrZ2QsICJnZXRia2dkIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gQ2h0eXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTgwXzE2Ij5XZ2V0YmtnZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMjVfMjkiPldpbjwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyNV8xMyI+R2V0X0JhY2tncm91bmQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTJfMTQiPkNoYW5nZV9MaW5lc19TdGF0dXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTg2XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUyXzM1Ij5XaW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4N18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1M18zNSI+U3RhcnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExODhfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTRfMzUiPkNvdW50PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gUG9zaXRpdmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTg5XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTU1XzM1Ij5TdGF0ZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4pCisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExODVfMTYiPldnZXRia2dkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5NV8yOSI+V2luPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTVfMTMiPkdldF9CYWNrZ3JvdW5kPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTkxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTkxXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzM1Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOTJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjNfMzUiPlN0YXJ0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5M18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMyNF8zNSI+Q291bnQ8L0E+PC9zcGFuPiA6IFBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTk0XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzI1XzM1Ij5TdGF0ZTwvQT48L3NwYW4+IDogQm9vbGVhbikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5MV8xNiI+V3RvdWNobG48L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTkxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTkxXzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTkyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTkxXzE2Ij5TdGE8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5M18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5MV8xNiI+Q250PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExOTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTFfMTYiPkNoZzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOTZfMTYiPld0b3VjaGxuPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTk2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTk2XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTZfMTYiPlN0YTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTZfMTYiPkNudDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTZfMTYiPkNoZzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV3RvdWNobG4sICJ3dG91Y2hsbiIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5MV8xNiI+V3RvdWNobG48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUyXzM1Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1M18zNSI+U3RhcnQ8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTRfMzUiPkNvdW50PC9BPiksCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTU1XzM1Ij5TdGF0ZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5Nl8xNiI+V3RvdWNobG48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzM1Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMyM18zNSI+U3RhcnQ8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjRfMzUiPkNvdW50PC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzI1XzM1Ij5TdGF0ZTwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNTJfMTQiPkNoYW5nZV9MaW5lc19TdGF0dXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNDFfMTQiPlRvdWNoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIwM18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0MV8yMSI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjA5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzExXzE0Ij5Ub3VjaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIwOV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxMV8yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjA1XzciPlk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjA2XzciPlg8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxMV83Ij5ZPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjEyXzciPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjhfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0MV8yMSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIwNV83Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIwNl83Ij5YPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0MV8yMSI+V2luPC9BPiwgMCwgUG9zaXRpdmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMDVfNyI+WTwvQT4pLCBUcnVlKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0MV8xNCI+VG91Y2g8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM5OF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzExXzIxIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjExXzciPlk8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjEyXzciPlg8L0E+KTsKKyAgICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxMl83Ij5YPC9BPik7ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdW5yZWZlcmVuY2VkPC9FTT48L3NwYW4+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxMV8yMSI+V2luPC9BPiwgMCwgUG9zaXRpdmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMTFfNyI+WTwvQT4pLCBUcnVlKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxMV8xNCI+VG91Y2g8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNl8xNCI+VW50b3VjaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMTJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMzZfMjMiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwNl8xNCI+VW50b3VjaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxOV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwNl8yMyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjE0XzciPlk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjE1XzciPlg8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIyMV83Ij5ZPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjIyXzciPlg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjhfMTQiPkdldF9TaXplPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNl8yMyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxNF83Ij5ZPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxNV83Ij5YPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNl8yMyI+V2luPC9BPiwgMCwgUG9zaXRpdmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMTRfNyI+WTwvQT4pLCBGYWxzZSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExMzZfMTQiPlVudG91Y2g8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM5OF8xNCI+R2V0X1NpemU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzA2XzIzIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjIxXzciPlk8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjIyXzciPlg8L0E+KTsKKyAgICAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIyMl83Ij5YPC9BPik7ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdW5yZWZlcmVuY2VkPC9FTT48L3NwYW4+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwNl8yMyI+V2luPC9BPiwgMCwgUG9zaXRpdmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMjFfNyI+WTwvQT4pLCBGYWxzZSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDZfMTQiPlVudG91Y2g8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIyMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCI+VG91Y2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjIxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTQ1XzIxIj5XaW48L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMjJfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNDZfMjEiPlN0YXJ0PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIyM18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0N18yMSI+Q291bnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBQb3NpdGl2ZSkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTVfMTQiPlRvdWNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjI5XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzE1XzIxIj5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjMwXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzE2XzIxIj5TdGFydDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjMxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzE3XzIxIj5Db3VudDwvQT48L3NwYW4+IDogUG9zaXRpdmUpCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1Ml8xNCI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNDVfMjEiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNDZfMjEiPlN0YXJ0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0N18yMSI+Q291bnQ8L0E+LCBUcnVlKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCI+VG91Y2g8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMyMl8xNCI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTVfMjEiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTZfMjEiPlN0YXJ0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxN18yMSI+Q291bnQ8L0E+LCBUcnVlKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxNV8xNCI+VG91Y2g8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjI5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTYwXzEzIj5Jc19Ub3VjaGVkPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTYwXzI1Ij5XaW48L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTYxXzI1Ij5MaW5lPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMzBfMTMiPklzX1RvdWNoZWQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzMF8yNSI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIzOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzMxXzI1Ij5MaW5lPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMzNfMTYiPldMaW5lVG91Y2hlZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMzNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMzNfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzM180MiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzM18xNiI+TDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNDFfMTYiPldMaW5lVG91Y2hlZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI0MV8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI0MV8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNDFfNDIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNDFfMTYiPkw8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdMaW5lVG91Y2hlZCwgImlzX2xpbmV0b3VjaGVkIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjMzXzE2Ij5XTGluZVRvdWNoZWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTYwXzI1Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2MV8yNSI+TGluZTwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjdfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI0MV8xNiI+V0xpbmVUb3VjaGVkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzMF8yNSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMzFfMjUiPkxpbmU8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2MF8xMyI+SXNfVG91Y2hlZDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMzBfMTMiPklzX1RvdWNoZWQ8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjQzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTY1XzEzIj5Jc19Ub3VjaGVkPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTY1XzI1Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI1MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNV8xMyI+SXNfVG91Y2hlZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI1Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzM1XzI1Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0Nl8xNiI+V1dpblRvdWNoZWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjQ2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjQ2XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjU0XzE2Ij5XV2luVG91Y2hlZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI1NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI1NF8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXV2luVG91Y2hlZCwgImlzX3dpbnRvdWNoZWQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNDZfMTYiPldXaW5Ub3VjaGVkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2NV8yNSI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI3XzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNTRfMTYiPldXaW5Ub3VjaGVkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNV8yNSI+V2luPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE2NV8xMyI+SXNfVG91Y2hlZDwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3NF8xNCI+Q29weTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3NV83Ij5Tb3VyY2VfV2luZG93PC9BPjwvRk9OVD4gICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzZfNyI+RGVzdGluYXRpb25fV2luZG93PC9BPjwvRk9OVD4gICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTc3XzciPlNvdXJjZV9Ub3BfUm93PC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjYwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzhfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTc5XzciPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjYyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODBfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTgxXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODJfNyI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTgzXzciPk5vbl9EZXN0cnVjdGl2ZV9Nb2RlPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSkKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNV8xMyI+SXNfVG91Y2hlZDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0NF8xNCI+Q29weTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzQ1XzciPlNvdXJjZV9XaW5kb3c8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDZfNyI+RGVzdGluYXRpb25fV2luZG93PC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0N183Ij5Tb3VyY2VfVG9wX1JvdzwvQT48L3NwYW4+ICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0OF83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzQ5XzciPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI3MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzUwXzciPkRlc3RpbmF0aW9uX0xlZnRfQ29sdW1uPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjcxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTFfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjcyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTJfNyI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNzNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1M183Ij5Ob25fRGVzdHJ1Y3RpdmVfTW9kZTwvQT48L3NwYW4+ICAgICA6IEJvb2xlYW4gOj0gVHJ1ZSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2N18xNiI+Q29weXdpbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNjdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNjdfMTYiPlNyYzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI2N18xNiI+RHN0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjY5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5TdHI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjcwXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5TbGM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjcxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5EdHI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjcyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5EbGM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjczXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5EYnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjc0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5EcmM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjc1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzE2Ij5OZG08L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjc1XzE2Ij5Db3B5d2luPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjc1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjc1XzE2Ij5TcmM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI3Nl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3NV8xNiI+RHN0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNzdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNzVfMTYiPlN0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI3OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3NV8xNiI+U2xjPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjc5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjc1XzE2Ij5EdHI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyODBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNzVfMTYiPkRsYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4MV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3NV8xNiI+RGJyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjgyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjc1XzE2Ij5EcmM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyODNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNzVfMTYiPk5kbTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQ29weXdpbiwgImNvcHl3aW4iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNjdfMTYiPkNvcHl3aW48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTc1XzciPlNvdXJjZV9XaW5kb3c8L0E+LAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3Nl83Ij5EZXN0aW5hdGlvbl9XaW5kb3c8L0E+LAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzdfNyI+U291cmNlX1RvcF9Sb3c8L0E+KSwKLSAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTc4XzciPlNvdXJjZV9MZWZ0X0NvbHVtbjwvQT4pLAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzlfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT4pLAotICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODBfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+KSwKLSAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTgxXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+KSwKLSAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTgyXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT4pLAotICAgICAgICAgICAgICAgICAgQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODNfNyI+Tm9uX0Rlc3RydWN0aXZlX01vZGU8L0E+KQotICAgICAgICAgICAgICAgICkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3NV8xNiI+Q29weXdpbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDVfNyI+U291cmNlX1dpbmRvdzwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzQ2XzciPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0N183Ij5Tb3VyY2VfVG9wX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDhfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPiksCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0OV83Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPiksCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1MF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT4pLAorICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTFfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTJfNyI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPiksCisgICAgICAgICAgICAgICAgICBCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1M183Ij5Ob25fRGVzdHJ1Y3RpdmVfTW9kZTwvQT4pCisgICAgICAgICAgICAgICAgICkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzRfMTQiPkNvcHk8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzQ0XzE0Ij5Db3B5PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODhfMTQiPk92ZXJ3cml0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4OF8yNSI+U291cmNlX1dpbmRvdzwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTg5XzI1Ij5EZXN0aW5hdGlvbl9XaW5kb3c8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMwMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1OF8xNCI+T3ZlcndyaXRlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzAyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNThfMjUiPlNvdXJjZV9XaW5kb3c8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTlfMjUiPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5Nl8xNiI+T3ZlcndyaXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5Nl8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI5Nl8xNiI+U3JjPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOTZfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyOTZfMTYiPkRzdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMwNV8xNiI+T3ZlcndyaXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzA1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzA1XzE2Ij5TcmM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzA1XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzA1XzE2Ij5Ec3Q8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgT3ZlcndyaXRlLCAib3ZlcndyaXRlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjk2XzE2Ij5PdmVyd3JpdGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTg4XzI1Ij5Tb3VyY2VfV2luZG93PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4OV8yNSI+RGVzdGluYXRpb25fV2luZG93PC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMwNV8xNiI+T3ZlcndyaXRlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1OF8yNSI+U291cmNlX1dpbmRvdzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTlfMjUiPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExODhfMTQiPk92ZXJ3cml0ZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNThfMTQiPk92ZXJ3cml0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTk0XzE0Ij5PdmVybGF5PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMwNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTk0XzIzIj5Tb3VyY2VfV2luZG93PC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTVfMjMiPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzEzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzY0XzE0Ij5PdmVybGF5PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzE0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNjRfMjMiPlNvdXJjZV9XaW5kb3c8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzE1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNjVfMjMiPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMwOF8xNiI+T3ZlcmxheTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMDhfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMDhfMTYiPlNyYzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzA4XzM5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzA4XzE2Ij5Ec3Q8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMTdfMTYiPk92ZXJsYXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMTdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMTdfMTYiPlNyYzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMTdfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMTdfMTYiPkRzdDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBPdmVybGF5LCAib3ZlcmxheSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMwOF8xNiI+T3ZlcmxheTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTRfMjMiPlNvdXJjZV9XaW5kb3c8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTk1XzIzIj5EZXN0aW5hdGlvbl9XaW5kb3c8L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzE3XzE2Ij5PdmVybGF5PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM2NF8yMyI+U291cmNlX1dpbmRvdzwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNjVfMjMiPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExOTRfMTQiPk92ZXJsYXk8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzY0XzE0Ij5PdmVybGF5PC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMDRfMTQiPkluc2VydF9EZWxldGVfTGluZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzE4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMDVfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMxOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjA2XzciPkxpbmVzPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gSW50ZWdlciAgICAgICA6PSAxKSA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGVmYXVsdCBpcyB0byBpbnNlcnQgb25lIGxpbmUgYWJvdmU8L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzI2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc0XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzI3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzVfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM3Nl83Ij5MaW5lczwvQT48L3NwYW4+IDogSW50ZWdlciAgICAgICA6PSAxKSA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRlZmF1bHQgaXMgdG8gaW5zZXJ0IG9uZSBsaW5lIGFib3ZlPC9FTT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMjFfMTYiPldpbnNkZWxsbjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMjFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMjFfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyMV8zOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMyMV8xNiI+TjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMzBfMTYiPldpbnNkZWxsbjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzMF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMzMF8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMzBfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMzBfMTYiPk48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdpbnNkZWxsbiwgIndpbnNkZWxsbiIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMyMV8xNiI+V2luc2RlbGxuPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIwNV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIwNl83Ij5MaW5lczwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzMwXzE2Ij5XaW5zZGVsbG48L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc1XzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc2XzciPkxpbmVzPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMDRfMTQiPkluc2VydF9EZWxldGVfTGluZXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc0XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTJfMTQiPkRlbGV0ZV9MaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyOV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxMl8yNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzM4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzgyXzE0Ij5EZWxldGVfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzOF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4Ml8yNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjA0XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxMl8yNyI+V2luPC9BPiwgLTEpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjEyXzE0Ij5EZWxldGVfTGluZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc0XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4Ml8yNyI+V2luPC9BPiwgLTEpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzgyXzE0Ij5EZWxldGVfTGluZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzM1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjE4XzE0Ij5JbnNlcnRfTGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMzVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMThfMjciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM0NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4OF8xNCI+SW5zZXJ0X0xpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNDRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODhfMjciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIwNF8xNCI+SW5zZXJ0X0RlbGV0ZV9MaW5lczwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMThfMjciPldpbjwvQT4sIDEpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjE4XzE0Ij5JbnNlcnRfTGluZTwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc0XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4OF8yNyI+V2luPC9BPiwgMSk7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODhfMTQiPkluc2VydF9MaW5lPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzQyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI4XzE0Ij5HZXRfU2l6ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOV83Ij5XaW48L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzQ0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzBfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzFfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0Ij5HZXRfU2l6ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk5XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDBfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwMV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0N18xNiI+R2V0TWF4WTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNDdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNDdfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTZfMTYiPkdldE1heFk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTZfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTZfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0TWF4WSwgImdldG1heHkiKTsKIAotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM1MF8xNiI+R2V0TWF4WDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNTBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTBfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTlfMTYiPkdldE1heFg8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTlfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0TWF4WCwgImdldG1heHgiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzUzXzciPlk8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzQ3XzE2Ij5HZXRNYXhZPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOV83Ij5XaW48L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI0XzQiPk9mZnNldF9YWTwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzU1XzciPlg8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzUwXzE2Ij5HZXRNYXhYPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIyOV83Ij5XaW48L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI0XzQiPk9mZnNldF9YWTwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNjJfNyI+WTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTZfMTYiPkdldE1heFk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk5XzciPldpbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNjNfNyI+WDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTlfMTYiPkdldE1heFg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk5XzciPldpbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjMwXzciPk51bWJlcl9PZl9MaW5lczwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTNfNyI+WTwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzMV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTVfNyI+WDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjI4XzE0Ij5HZXRfU2l6ZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDAwXzciPk51bWJlcl9PZl9MaW5lczwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjJfNyI+WTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwMV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjNfNyI+WDwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0Ij5HZXRfU2l6ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjM2XzE0Ij5HZXRfV2luZG93X1Bvc2l0aW9uPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjM3XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzhfNyI+VG9wX0xlZnRfTGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzlfNyI+VG9wX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzY5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDA2XzE0Ij5HZXRfV2luZG93X1Bvc2l0aW9uPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDdfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzcxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDhfNyI+VG9wX0xlZnRfTGluZTwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNzJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwOV83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2N18xNiI+R2V0QmVnWTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNjdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjdfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNzRfMTYiPkdldEJlZ1k8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNzRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNzRfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0QmVnWSwgImdldGJlZ3kiKTsKIAotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3MF8xNiI+R2V0QmVnWDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNzBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNzBfMTYiPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNzdfMTYiPkdldEJlZ1g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNzdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNzdfMTYiPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgR2V0QmVnWCwgImdldGJlZ3giKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzczXzciPlk8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjdfMTYiPkdldEJlZ1k8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjM3XzciPldpbjwvQT4pKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3NF83Ij5YPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzcwXzE2Ij5HZXRCZWdYPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzN183Ij5XaW48L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4MF83Ij5ZPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzc0XzE2Ij5HZXRCZWdZPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwN183Ij5XaW48L0E+KSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4MV83Ij5YPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzc3XzE2Ij5HZXRCZWdYPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwN183Ij5XaW48L0E+KSk7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzhfNyI+VG9wX0xlZnRfTGluZTwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3M183Ij5ZPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjM5XzciPlRvcF9MZWZ0X0NvbHVtbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3NF83Ij5YPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMzZfMTQiPkdldF9XaW5kb3dfUG9zaXRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwOF83Ij5Ub3BfTGVmdF9MaW5lPC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgwXzciPlk8L0E+KTsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDlfNyI+VG9wX0xlZnRfQ29sdW1uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgxXzciPlg8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwNl8xNCI+R2V0X1dpbmRvd19Qb3NpdGlvbjwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzgwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ1XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ2XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ3XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzciPldpbjwvQT48L3NwYW4+ICAgIDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzODlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNl83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE3XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzg1XzE2Ij5HZXRDdXJZPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4NV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM4NV8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5Ml8xNiI+R2V0Q3VyWTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5Ml8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM5Ml8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRDdXJZLCAiZ2V0Y3VyeSIpOwogCi0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzg4XzE2Ij5HZXRDdXJYPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM4OF8xNiI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5NV8xNiI+R2V0Q3VyWDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5NV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM5NV8xNiI+VzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBHZXRDdXJYLCAiZ2V0Y3VyeCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOTFfNyI+WTwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM4NV8xNiI+R2V0Q3VyWTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNDVfNyI+V2luPC9BPikpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzkyXzciPlg8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzODhfMTYiPkdldEN1clg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjQ1XzciPldpbjwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzk4XzciPlk8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOTJfMTYiPkdldEN1clk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzciPldpbjwvQT4pKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzk5XzciPlg8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOTVfMTYiPkdldEN1clg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzciPldpbjwvQT4pKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0Nl83Ij5MaW5lPC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzkxXzciPlk8L0E+KTsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNDdfNyI+Q29sdW1uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzkyXzciPlg8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE2XzciPkxpbmU8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOThfNyI+WTwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxN183Ij5Db2x1bW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOTlfNyI+WDwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTJfMTQiPkdldF9PcmlnaW5fUmVsYXRpdmVfVG9fUGFyZW50PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM5OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjUzXzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTRfNyI+VG9wX0xlZnRfTGluZTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTVfNyI+VG9wX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1Nl83Ij5Jc19Ob3RfQV9TdWJ3aW5kb3c8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gQm9vbGVhbikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjJfMTQiPkdldF9PcmlnaW5fUmVsYXRpdmVfVG9fUGFyZW50PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjNfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDA3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjRfNyI+VG9wX0xlZnRfTGluZTwvQT48L3NwYW4+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNV83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDA5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjZfNyI+SXNfTm90X0FfU3Vid2luZG93PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MDRfMTYiPkdldFBhclk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDA0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDA0XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDExXzE2Ij5HZXRQYXJZPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDExXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDExXzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEdldFBhclksICJnZXRwYXJ5Iik7CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MDdfMTYiPkdldFBhclg8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDA3XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDA3XzE2Ij5XPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDE0XzE2Ij5HZXRQYXJYPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDE0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDE0XzE2Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEdldFBhclgsICJnZXRwYXJ4Iik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQxMF83Ij5ZPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQwNF8xNiI+R2V0UGFyWTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTNfNyI+V2luPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MTFfNyI+WDwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MDdfMTYiPkdldFBhclg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjUzXzciPldpbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MTdfNyI+WTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MTFfMTYiPkdldFBhclk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDIzXzciPldpbjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MThfNyI+WDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MTRfMTYiPkdldFBhclg8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDIzXzciPldpbjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQxMF83Ij5ZPC9BPiA9IC0xIDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjU0XzciPlRvcF9MZWZ0X0xpbmU8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT4nTGFzdDsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTVfNyI+VG9wX0xlZnRfQ29sdW1uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+J0xhc3Q7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjU2XzciPklzX05vdF9BX1N1YndpbmRvdzwvQT4gOj0gVHJ1ZTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDE3XzciPlk8L0E+ID0gLTEgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjRfNyI+VG9wX0xlZnRfTGluZTwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPidMYXN0OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNV83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4nTGFzdDsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjZfNyI+SXNfTm90X0FfU3Vid2luZG93PC9BPiA6PSBUcnVlOwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTRfNyI+VG9wX0xlZnRfTGluZTwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQxMF83Ij5ZPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjU1XzciPlRvcF9MZWZ0X0NvbHVtbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQxMV83Ij5YPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjU2XzciPklzX05vdF9BX1N1YndpbmRvdzwvQT4gOj0gRmFsc2U7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDI0XzciPlRvcF9MZWZ0X0xpbmU8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MTdfNyI+WTwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNV83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MThfNyI+WDwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNl83Ij5Jc19Ob3RfQV9TdWJ3aW5kb3c8L0E+IDo9IEZhbHNlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNTJfMTQiPkdldF9PcmlnaW5fUmVsYXRpdmVfVG9fUGFyZW50PC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNjdfMTMiPk5ld19QYWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDI0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY3XzIyIj5MaW5lczwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MjVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNjhfMjIiPkNvbHVtbnM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyMl8xNCI+R2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQ8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzN18xMyI+TmV3X1BhZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzMV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzN18yMiI+TGluZXM8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MzJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzhfMjIiPkNvbHVtbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyN18xNiI+TmV3cGFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyN18yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQyN18xNiI+TGluZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MjdfMzkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MjdfMTYiPkNvbHVtbnM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MzRfMTYiPk5ld3BhZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzNF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzNF8xNiI+TGluZXM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzNF8zOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzNF8xNiI+Q29sdW1uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBOZXdwYWQsICJuZXdwYWQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDMwXzciPlc8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzN183Ij5XPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDMwXzciPlc8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MjdfMTYiPk5ld3BhZDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY3XzIyIj5MaW5lczwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI2OF8yMiI+Q29sdW1uczwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDMwXzciPlc8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzN183Ij5XPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDM0XzE2Ij5OZXdwYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzN18yMiI+TGluZXM8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzhfMjIiPkNvbHVtbnM8L0E+KSk7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzN183Ij5XPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2XzQiPk51bGxfV2luZG93PC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDMwXzciPlc8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY3XzEzIj5OZXdfUGFkPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzN183Ij5XPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzN18xMyI+TmV3X1BhZDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MzlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzNfMTMiPlN1Yl9QYWQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzRfNyI+UGFkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzVfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3Nl83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L0ZPTlQ+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzdfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ0NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc4XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDNfMTMiPlN1Yl9QYWQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0NF83Ij5QYWQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ1XzciPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0Nl83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0N183Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0OF83Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQ2XzE2Ij5TdWJwYWQ8L0E+PC9GT05UPgotICAgICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQ3XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDQ2XzE2Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NDhfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTYiPk51bWJlcl9PZl9MaW5lczwvQT48L0ZPTlQ+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NDlfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTYiPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NTBfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTYiPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NTFfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTYiPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1M18xNiI+U3VicGFkPC9BPjwvc3Bhbj4KKyAgICAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDU0XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDUzXzE2Ij5QYWQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1NV8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1M18xNiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDU2XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDUzXzE2Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NTdfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NTNfMTYiPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1OF8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1M18xNiI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFN1YnBhZCwgInN1YnBhZCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NTRfNyI+VzwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDYxXzciPlc8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NTRfNyI+VzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0Nl8xNiI+U3VicGFkPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3NF83Ij5QYWQ8L0E+LAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc1XzciPk51bWJlcl9PZl9MaW5lczwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc2XzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPiksCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzdfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT4pLAotICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc4XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDU0XzciPlc8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfNCI+TnVsbF9XaW5kb3c8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ2MV83Ij5XPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDUzXzE2Ij5TdWJwYWQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ0XzciPlBhZDwvQT4sCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDVfNyI+TnVtYmVyX09mX0xpbmVzPC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDZfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0N183Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDhfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPikpOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NjFfNyI+VzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1NF83Ij5XPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI3M18xMyI+U3ViX1BhZDwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NjFfNyI+VzwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDNfMTMiPlN1Yl9QYWQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ2N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4M18xNCI+UmVmcmVzaDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4NF83Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDY5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODVfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4Nl83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDcxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODdfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4OF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDczXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODlfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5MF83Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1M18xNCI+UmVmcmVzaDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDU0XzciPlBhZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDc2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTVfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDc3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTZfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1N183Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1OF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDU5XzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDYwXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ3Nl8xNiI+UHJlZnJlc2g8L0E+PC9GT05UPgotICAgICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDc3XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDc2XzE2Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzhfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPlNvdXJjZV9Ub3BfUm93PC9BPjwvRk9OVD4gICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzlfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPlNvdXJjZV9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0ODBfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0ODFfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPkRlc3RpbmF0aW9uX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0ODJfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0ODNfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfMTYiPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0ODNfMTYiPlByZWZyZXNoPC9BPjwvc3Bhbj4KKyAgICAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDg0XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDgzXzE2Ij5QYWQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4NV8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4M18xNiI+U291cmNlX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDg2XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDgzXzE2Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0ODdfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0ODNfMTYiPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4OF8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4M18xNiI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDg5XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDgzXzE2Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OTBfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0ODNfMTYiPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUHJlZnJlc2gsICJwcmVmcmVzaCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ3Nl8xNiI+UHJlZnJlc2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjg0XzciPlBhZDwvQT4sCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODVfNyI+U291cmNlX1RvcF9Sb3c8L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4Nl83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4N183Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPiksCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyODhfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4OV83Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPiksCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTBfNyI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0ODNfMTYiPlByZWZyZXNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1NF83Ij5QYWQ8L0E+LAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDU1XzciPlNvdXJjZV9Ub3BfUm93PC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTZfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTdfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDU4XzciPkRlc3RpbmF0aW9uX0xlZnRfQ29sdW1uPC9BPiksCisgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTlfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDYwXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPgorICAgICAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4M18xNCI+UmVmcmVzaDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NTNfMTQiPlJlZnJlc2g8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5NV8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5Nl83Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDk5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTdfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5OF83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTlfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwMF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDFfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwMl83Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUwNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2NV8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUwNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDY2XzciPlBhZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTA3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjdfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTA4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjhfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2OV83Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3MF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDcxXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDcyXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwNl8xNiI+UG5vdXRyZWZyZXNoPC9BPjwvRk9OVD4KLSAgICAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwN18xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwNl8xNiI+UGFkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTA4XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5Tb3VyY2VfVG9wX1JvdzwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTA5XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTEwXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvRk9OVD4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTExXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTEyXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTEzXzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzE2Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTE0XzE2Ij5Qbm91dHJlZnJlc2g8L0E+PC9zcGFuPgorICAgICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MTVfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MTRfMTYiPlBhZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTE2XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTE0XzE2Ij5Tb3VyY2VfVG9wX1JvdzwvQT48L3NwYW4+ICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MTdfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MTRfMTYiPlNvdXJjZV9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxOF8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxNF8xNiI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTE5XzEwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTE0XzE2Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MjBfMTAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MTRfMTYiPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUyMV8xMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxNF8xNiI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBQbm91dHJlZnJlc2gsICJwbm91dHJlZnJlc2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MDZfMTYiPlBub3V0cmVmcmVzaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTZfNyI+UGFkPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOTdfNyI+U291cmNlX1RvcF9Sb3c8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOThfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPiksCi0gICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjk5XzciPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDBfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDFfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT4pLAotICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwMl83Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxNF8xNiI+UG5vdXRyZWZyZXNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2Nl83Ij5QYWQ8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2N183Ij5Tb3VyY2VfVG9wX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2OF83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjlfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3MF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3MV83Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPiksCisgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDcyXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPgorICAgICAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5NV8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjVfMTQiPlJlZnJlc2hfV2l0aG91dF9VcGRhdGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUyN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwN18xNCI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTI4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMDhfNyI+UGFkPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUyOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzA5XzciPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTM2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDc3XzE0Ij5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUzN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDc4XzciPlBhZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTM4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzlfNyI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTMxXzE2Ij5QZWNob2NoYXI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTMxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTMxXzE2Ij5QYWQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUzMV80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUzMV8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTQwXzE2Ij5QZWNob2NoYXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NDBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NDBfMTYiPlBhZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NDBfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NDBfMTYiPkNoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFBlY2hvY2hhciwgInBlY2hvY2hhciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUzMV8xNiI+UGVjaG9jaGFyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwOF83Ij5QYWQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwOV83Ij5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTQwXzE2Ij5QZWNob2NoYXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDc4XzciPlBhZDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzlfNyI+Q2g8L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzA3XzE0Ij5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzdfMTQiPkFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NDBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMTJfMTQiPkFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU0MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzEzXzciPlBhZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxNF83Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiBDaGFyYWN0ZXIpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTQ5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDgyXzE0Ij5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU1MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDgzXzciPlBhZDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0ODRfNyI+Q2g8L0E+PC9zcGFuPiAgOiBDaGFyYWN0ZXIpCiAgICA8Yj5pczwvYj4KICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwN18xNCI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ8L0E+Ci0gICAgICAgICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzEzXzciPlBhZDwvQT4sCi0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+Jyg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzE0XzciPkNoPC9BPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT4pKTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMxMl8xNCI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjJfMTQiPlNjcm9sbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NTJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjJfMjIiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTUzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIzXzIyIj5BbW91bnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IDEpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDc3XzE0Ij5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDwvQT4KKyAgICAgICAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0ODNfNyI+UGFkPC9BPiwKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4nKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MV8xMCI+Q2g8L0E+ICAgID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0ODRfNyI+Q2g8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDgyXzE0Ij5BZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5Ml8xNCI+U2Nyb2xsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTYxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDkyXzIyIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTNfMjIiPkFtb3VudDwvQT48L3NwYW4+IDogSW50ZWdlciA6PSAxKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTU1XzE2Ij5Xc2NybDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NTVfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NTVfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTU1XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTU1XzE2Ij5OPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2NF8xNiI+V3Njcmw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjRfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjRfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjRfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjRfMTYiPk48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdzY3JsLCAid3NjcmwiKTsKIAogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU1NV8xNiI+V3Njcmw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzIyIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMyM18yMiI+QW1vdW50PC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjRfMTYiPldzY3JsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5Ml8yMiI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTNfMjIiPkFtb3VudDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5TY3JvbGw8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDkyXzE0Ij5TY3JvbGw8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMzNF8xNCI+RGVsZXRlX0NoYXJhY3RlcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NjVfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMzRfMzIiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDRfMTQiPkRlbGV0ZV9DaGFyYWN0ZXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NzRfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDRfMzIiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NjdfMTYiPldkZWxjaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NjdfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjdfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU3Nl8xNiI+V2RlbGNoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTc2XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc2XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2RlbGNoLCAid2RlbGNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTY3XzE2Ij5XZGVsY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzM0XzMyIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc2XzE2Ij5XZGVsY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTA0XzMyIj5XaW48L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzM0XzE0Ij5EZWxldGVfQ2hhcmFjdGVyPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwNF8xNCI+RGVsZXRlX0NoYXJhY3RlcjwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTc1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzM5XzE0Ij5EZWxldGVfQ2hhcmFjdGVyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU3Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzQwXzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTc3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDFfNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0Ml83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwOV8xNCI+RGVsZXRlX0NoYXJhY3RlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTEwXzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTExXzciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTEyXzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU4MF8xNiI+TXZ3ZGVsY2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTgwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTgwXzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTgxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTgwXzE2Ij5MaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU4Ml8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU4MF8xNiI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4OV8xNiI+TXZ3ZGVsY2g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1ODlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1ODlfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU5MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU4OV8xNiI+TGluPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU5MV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU4OV8xNiI+Q29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNdndkZWxjaCwgIm12d2RlbGNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTgwXzE2Ij5NdndkZWxjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDBfNyI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNDFfNyI+TGluZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0Ml83Ij5Db2x1bW48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU4OV8xNiI+TXZ3ZGVsY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTEwXzciPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTExXzciPkxpbmU8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MTJfNyI+Q29sdW1uPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMzlfMTQiPkRlbGV0ZV9DaGFyYWN0ZXI8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU5MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1Ml8xMyI+UGVlazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1OTBfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTJfMTkiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCi0gICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPgorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTA5XzE0Ij5EZWxldGVfQ2hhcmFjdGVyPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OTlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MjJfMTMiPlBlZWs8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OTlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MjJfMTkiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTkzXzE2Ij5XaW5jaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1OTNfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1OTNfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYwMl8xNiI+V2luY2g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MDJfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MDJfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdpbmNoLCAid2luY2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiBDaHR5cGVfVG9fQXR0ckNoYXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1OTNfMTYiPldpbmNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1Ml8xOSI+V2luPC9BPikpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzUyXzEzIj5QZWVrPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwMl8xNiI+V2luY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzE5Ij5XaW48L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyMl8xMyI+UGVlazwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1OTlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNThfMTMiPlBlZWs8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNTlfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzYwXzciPkxpbmU8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM2MV83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjA4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTI4XzEzIj5QZWVrPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjA5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MjlfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjEwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MzBfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjExXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MzFfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwNF8xNiI+TXZ3aW5jaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MDRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MDRfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwNV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwNF8xNiI+TGluPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYwNl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwNF8xNiI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYxM18xNiI+TXZ3aW5jaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYxM18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxM18xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MTRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MTNfMTYiPkxpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYxNV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxM18xNiI+Q29sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE12d2luY2gsICJtdndpbmNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gQ2h0eXBlX1RvX0F0dHJDaGFyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjA0XzE2Ij5NdndpbmNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1OV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM2MF83Ij5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzYxXzciPkNvbHVtbjwvQT4pKSk7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNThfMTMiPlBlZWs8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzFfMTQiPkluc2VydDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MTJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzFfMjIiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjEzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzcyXzIyIj5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjEzXzE2Ij5NdndpbmNoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyOV83Ij5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUzMF83Ij5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTMxXzciPkNvbHVtbjwvQT4pKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyOF8xMyI+UGVlazwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYyMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0MV8xNCI+SW5zZXJ0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjIxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQxXzIyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MjJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDJfMjIiPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYxNV8xNiI+V2luc2NoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYxNV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxNV8xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MTVfMzgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MTVfMTYiPkNoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYyNF8xNiI+V2luc2NoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjI0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI0XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjI0XzM4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI0XzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXaW5zY2gsICJ3aW5zY2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MTVfMTYiPldpbnNjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzFfMjIiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5BdHRyQ2hhcl9Ub19DaHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzcyXzIyIj5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI0XzE2Ij5XaW5zY2g8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQxXzIyIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQyXzIyIj5DaDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzFfMTQiPkluc2VydDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDFfMTQiPkluc2VydDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjIzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc3XzE0Ij5JbnNlcnQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjI0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzdfMjIiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjI1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzhfMjIiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjI2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzlfMjIiPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4MF8yMiI+Q2g8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MzJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDdfMTQiPkluc2VydDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYzM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQ3XzIyIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0OF8yMiI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjM1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDlfMjIiPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjM2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NTBfMjIiPkNoPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyOV8xNiI+TXZ3aW5zY2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjI5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI5XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjMwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI5XzE2Ij5MaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYzMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYyOV8xNiI+Q29sPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MzJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MjlfMTYiPkNoPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MzhfMTYiPk12d2luc2NoPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjM4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjM4XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MzlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzhfMTYiPkxpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NDBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzhfMTYiPkNvbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NDFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzhfMTYiPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBNdndpbnNjaCwgIm12d2luc2NoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI5XzE2Ij5NdndpbnNjaDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzdfMjIiPldpbjwvQT4sCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNzhfMjIiPkxpbmU8L0E+KSwKLSAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM3OV8yMiI+Q29sdW1uPC9BPiksCi0gICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODBfMjIiPkNoPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzhfMTYiPk12d2luc2NoPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0N18yMiI+V2luPC9BPiwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0OF8yMiI+TGluZTwvQT4pLAorICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQ5XzIyIj5Db2x1bW48L0E+KSwKKyAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTUwXzIyIj5DaDwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzc3XzE0Ij5JbnNlcnQ8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODlfMTQiPkluc2VydDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NDNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODlfMjIiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjQ0XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzkwXzIyIj5TdHI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NDVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOTFfMjIiPkxlbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEludGVnZXIgOj0gLTEpCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDdfMTQiPkluc2VydDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1OV8xNCI+SW5zZXJ0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjUzXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTU5XzIyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NTRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjBfMjIiPlN0cjwvQT48L3NwYW4+IDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NTVfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjFfMjIiPkxlbjwvQT48L3NwYW4+IDogSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY0N18xNiI+V2luc25zdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjQ3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjQ3XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjQ4XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjQ3XzE2Ij5TdHI8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjQ5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjQ3XzE2Ij5MZW48L0E+PC9GT05UPiA6IEludGVnZXIgOj0gLTEpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NTdfMTYiPldpbnNuc3RyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjU3XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjU3XzE2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NTdfMTYiPlN0cjwvQT48L3NwYW4+IDogY2hhcl9hcnJheTsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY1OV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY1N18xNiI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdpbnNuc3RyLCAid2luc25zdHIiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjUyXzciPlR4dDwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzkwXzIyIj5TdHI8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NTNfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2Ml83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2MF8yMiI+U3RyPC9BPidMZW5ndGgpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NjNfNyI+TGVuZ3RoPC9BPjwvc3Bhbj4gOiBzaXplX3Q7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOTBfMjIiPlN0cjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NTJfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY1M183Ij5MZW5ndGg8L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjQ3XzE2Ij5XaW5zbnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODlfMjIiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NTJfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM5MV8yMiI+TGVuPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTYwXzIyIj5TdHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjYyXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NjNfNyI+TGVuZ3RoPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY1N18xNiI+V2luc25zdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTU5XzIyIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjYyXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjFfMjIiPkxlbjwvQT4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODlfMTQiPkluc2VydDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NTlfMTQiPkluc2VydDwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjYxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk4XzE0Ij5JbnNlcnQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjYyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMjIiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjYzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOTlfMjIiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjY0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDBfMjIiPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwMV8yMiI+U3RyPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gU3RyaW5nOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MDJfMjIiPkxlbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IEludGVnZXIgOj0gLTEpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTY4XzE0Ij5JbnNlcnQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NzJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2OF8yMiI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjczXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjlfMjIiPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTcwXzIyIj5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTcxXzIyIj5TdHI8L0E+PC9zcGFuPiAgICA6IFN0cmluZzsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjc2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NzJfMjIiPkxlbjwvQT48L3NwYW4+ICAgIDogSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY2OF8xNiI+TXZ3aW5zbnN0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NjhfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NjhfMTYiPldpbjwvQT48L0ZPTlQ+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY2OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2OF8xNiI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3MF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2OF8xNiI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2OF8xNiI+U3RyPC9BPjwvRk9OVD4gICAgOiBjaGFyX2FycmF5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjcyXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjY4XzE2Ij5MZW48L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjc4XzE2Ij5NdndpbnNuc3RyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjc4XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc4XzE2Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY3OF8xNiI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjgwXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc4XzE2Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2ODFfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzhfMTYiPlN0cjwvQT48L3NwYW4+ICAgIDogY2hhcl9hcnJheTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjgyXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc4XzE2Ij5MZW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIE12d2luc25zdHIsICJtdndpbnNuc3RyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3NV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwMV8yMiI+U3RyPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjc2XzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2ODVfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NzFfMjIiPlN0cjwvQT4nTGVuZ3RoKTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjg2XzciPkxlbmd0aDwvQT48L3NwYW4+IDogc2l6ZV90OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDAxXzIyIj5TdHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc1XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzZfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2OF8xNiI+TXZ3aW5zbnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMjIiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzk5XzIyIj5MaW5lPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDAwXzIyIj5Db2x1bW48L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY3NV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQwMl8yMiI+TGVuPC9BPikpCi0gICAgICAgID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3MV8yMiI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY4NV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjg2XzciPkxlbmd0aDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzhfMTYiPk12d2luc25zdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTY4XzIyIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2OV8yMiI+TGluZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3MF8yMiI+Q29sdW1uPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2ODVfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NzJfMjIiPkxlbjwvQT4pKQorICAgICAgICA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPgorICAgICAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM5OF8xNCI+SW5zZXJ0PC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjg1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5QZWVrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8yMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNV8yMCI+U3RyPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2ODdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTZfMjAiPkxlbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICBJbnRlZ2VyIDo9IC0xKQorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTY4XzE0Ij5JbnNlcnQ8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODRfMTQiPlBlZWs8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OTZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODRfMjAiPldpbjwvQT48L3NwYW4+IDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjk3XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nOworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjk4XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg2XzIwIj5MZW48L0E+PC9zcGFuPiA6ICBJbnRlZ2VyIDo9IC0xKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjg5XzE2Ij5XaW5uc3RyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4OV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY4OV8xNiI+V2luPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjkwXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjg5XzE2Ij5TdHI8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2OTFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2ODlfMTYiPkxlbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MDBfMTYiPldpbm5zdHI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MDBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MDBfMTYiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzAxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzAwXzE2Ij5TdHI8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcwMl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcwMF8xNiI+TGVuPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBXaW5uc3RyLCAid2lubnN0ciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2OTRfNyI+TjwvQT48L0ZPTlQ+ICAgOiBJbnRlZ2VyIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTZfMjAiPkxlbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2OTVfNyI+VHh0PC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTVfMjAiPlN0cjwvQT4nTGVuZ3RoKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY5Nl83Ij5DbnQ8L0E+PC9GT05UPiA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcwNV83Ij5OPC9BPjwvc3Bhbj4gICA6IEludGVnZXIgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4Nl8yMCI+TGVuPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzA2XzciPlR4dDwvQT48L3NwYW4+IDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcwN183Ij5DbnQ8L0E+PC9zcGFuPiA6IE5hdHVyYWw7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjk0XzciPk48L0E+ICZsdDsgMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5NF83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzIwIj5TdHI8L0E+J0xlbmd0aDsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzA1XzciPk48L0E+ICZsdDsgMCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcwNV83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+J0xlbmd0aDsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2OTRfNyI+TjwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzIwIj5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MDVfNyI+TjwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmFpc2U8L2I+IENvbnN0cmFpbnRfRXJyb3I7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2OTVfNyI+VHh0PC9BPiAoMCkgOj0gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcidGaXJzdDsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjg5XzE2Ij5XaW5uc3RyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8yMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5NV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5NF83Ij5OPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcwNl83Ij5UeHQ8L0E+ICgwKSA6PSA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5jaGFyJ0ZpcnN0OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MDBfMTYiPldpbm5zdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg0XzIwIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzA2XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzA1XzciPk48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIFRvX0FkYSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5NV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzIwIj5TdHI8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjk2XzciPkNudDwvQT4sIFRydWUpOwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2OTZfNyI+Q250PC9BPiAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MTVfMjAiPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE1XzIwIj5TdHI8L0E+ICgoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNV8yMCI+U3RyPC9BPidGaXJzdCArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2OTZfNyI+Q250PC9BPikgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNV8yMCI+U3RyPC9BPidMYXN0KSA6PSAoPGI+b3RoZXJzPC9iPiA9Jmd0OyAnICcpOworICAgICAgVG9fQWRhICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzA2XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODVfMjAiPlN0cjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MDdfNyI+Q250PC9BPiwgVHJ1ZSk7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcwN183Ij5DbnQ8L0E+ICZsdDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4NV8yMCI+U3RyPC9BPidMZW5ndGggPGI+dGhlbjwvYj4KKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODVfMjAiPlN0cjwvQT4gKCg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+J0ZpcnN0ICsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcwN183Ij5DbnQ8L0E+KSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg1XzIwIj5TdHI8L0E+J0xhc3QpIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8xNCI+UGVlazwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODRfMTQiPlBlZWs8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyM18xNCI+UGVlazwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyM18yMCI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzE2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjRfMjAiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDI1XzIwIj5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDI2XzIwIj5TdHI8L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gU3RyaW5nOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzE5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjdfMjAiPkxlbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+ICBJbnRlZ2VyIDo9IC0xKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5M18xNCI+UGVlazwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTkzXzIwIj5XaW48L0E+PC9zcGFuPiAgICA6ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzI3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1OTRfMjAiPkxpbmU8L0E+PC9zcGFuPiAgIDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5NV8yMCI+Q29sdW1uPC9BPjwvc3Bhbj4gOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1OTZfMjAiPlN0cjwvQT48L3NwYW4+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmc7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTczMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk3XzIwIj5MZW48L0E+PC9zcGFuPiAgICA6ICBJbnRlZ2VyIDo9IC0xKQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUxMV8xNCI+TW92ZV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDIzXzIwIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDI0XzIwIj5MaW5lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNV8yMCI+Q29sdW1uPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDE0XzE0Ij5QZWVrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyM18yMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyNl8yMCI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQyN18yMCI+TGVuPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MjNfMTQiPlBlZWs8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzhfMTQiPlBlZWs8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzI3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzhfMjAiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDM5XzIwIj5TdHI8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkF0dHJpYnV0ZWRfU3RyaW5nPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQwXzIwIj5MZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgSW50ZWdlciA6PSAtMSkKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY4MV8xNCI+TW92ZV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTkzXzIwIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk0XzIwIj5MaW5lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5NV8yMCI+Q29sdW1uPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg0XzE0Ij5QZWVrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5M18yMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5Nl8yMCI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5N18yMCI+TGVuPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1OTNfMTQiPlBlZWs8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDhfMTQiPlBlZWs8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYwOF8yMCI+V2luPC9BPjwvc3Bhbj4gOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTczOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjA5XzIwIj5TdHI8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkF0dHJpYnV0ZWRfU3RyaW5nPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTBfMjAiPkxlbjwvQT48L3NwYW4+IDogIEludGVnZXIgOj0gLTEpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzFfMTYiPldpbmNobnN0cjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzFfMTYiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzMyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzMxXzE2Ij5TdHI8L0E+PC9GT05UPiA6IGNodHlwZV9hcnJheTsgICAgICAgICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIG91dDwvRU0+PC9GT05UPgotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzFfMTYiPkxlbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NDJfMTYiPldpbmNobnN0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0Ml8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0Ml8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0M18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0Ml8xNiI+U3RyPC9BPjwvc3Bhbj4gOiBjaHR5cGVfYXJyYXk7ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gb3V0PC9FTT48L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzQ0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzQyXzE2Ij5MZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFdpbmNobnN0ciwgIndpbmNobnN0ciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzZfNyI+TjwvQT48L0ZPTlQ+ICAgOiBJbnRlZ2VyIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDBfMjAiPkxlbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzdfNyI+VHh0PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gY2h0eXBlX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzlfMjAiPlN0cjwvQT4nTGVuZ3RoKQotICAgICAgICAgIDo9ICgwID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzM5XzciPkNudDwvQT48L0ZPTlQ+IDogTmF0dXJhbCA6PSAwOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NDdfNyI+TjwvQT48L3NwYW4+ICAgOiBJbnRlZ2VyIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTBfMjAiPkxlbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0OF83Ij5UeHQ8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBjaHR5cGVfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYwOV8yMCI+U3RyPC9BPidMZW5ndGgpCisgICAgICAgICAgOj0gKDAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc1MF83Ij5DbnQ8L0E+PC9zcGFuPiA6IE5hdHVyYWwgOj0gMDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzZfNyI+TjwvQT4gJmx0OyAwIDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzM2XzciPk48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzlfMjAiPlN0cjwvQT4nTGVuZ3RoOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NDdfNyI+TjwvQT4gJmx0OyAwIDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzQ3XzciPk48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDlfMjAiPlN0cjwvQT4nTGVuZ3RoOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczNl83Ij5OPC9BPiAmZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzlfMjAiPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0N183Ij5OPC9BPiAmZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDlfMjAiPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yYWlzZTwvYj4gQ29uc3RyYWludF9FcnJvcjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzFfMTYiPldpbmNobnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzhfMjAiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzdfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzZfNyI+TjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzQyXzE2Ij5XaW5jaG5zdHI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjA4XzIwIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzQ4XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzQ3XzciPk48L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmZvcjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzUwXzExIj5UbzwvQT48L0ZPTlQ+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDM5XzIwIj5TdHI8L0E+JzxiPlJhbmdlPC9iPiA8Yj5sb29wPC9iPgotICAgICAgICAgPGI+ZXhpdDwvYj4gPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczN183Ij5UeHQ8L0E+IChzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzlfNyI+Q250PC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzlfMjAiPlN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NTBfMTEiPlRvPC9BPikgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczN183Ij5UeHQ8L0E+IChzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzlfNyI+Q250PC9BPikpOwotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczOV83Ij5DbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzlfNyI+Q250PC9BPiArIDE7CisgICAgICA8Yj5mb3I8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzYxXzExIj5UbzwvQT48L3NwYW4+IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjA5XzIwIj5TdHI8L0E+JzxiPlJhbmdlPC9iPiA8Yj5sb29wPC9iPgorICAgICAgICAgPGI+ZXhpdDwvYj4gPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0OF83Ij5UeHQ8L0E+IChzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NTBfNyI+Q250PC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDlfMjAiPlN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NjFfMTEiPlRvPC9BPikgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0OF83Ij5UeHQ8L0E+IChzaXplX3QgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NTBfNyI+Q250PC9BPikpOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc1MF83Ij5DbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NTBfNyI+Q250PC9BPiArIDE7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmxvb3A8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzlfNyI+Q250PC9BPiAmbHQ7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzlfMjAiPlN0cjwvQT4nTGVuZ3RoIDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDM5XzIwIj5TdHI8L0E+ICgoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzOV8yMCI+U3RyPC9BPidGaXJzdCArIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzlfNyI+Q250PC9BPikgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzOV8yMCI+U3RyPC9BPidMYXN0KSA6PQotICAgICAgICAgICAoPGI+b3RoZXJzPC9iPiA9Jmd0OyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gPSZndDsgJyAnLAotICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT4pKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzUwXzciPkNudDwvQT4gJmx0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjA5XzIwIj5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYwOV8yMCI+U3RyPC9BPiAoKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDlfMjAiPlN0cjwvQT4nRmlyc3QgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzUwXzciPkNudDwvQT4pIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDlfMjAiPlN0cjwvQT4nTGFzdCkgOj0KKyAgICAgICAgICAgKDxiPm90aGVyczwvYj4gPSZndDsgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MV8xMCI+Q2g8L0E+ID0mZ3Q7ICcgJywKKyAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+KSk7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzOF8xNCI+UGVlazwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MDhfMTQiPlBlZWs8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0N18xNCI+UGVlazwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NjRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0N18yMCI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDhfMjAiPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ5XzIwIj5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDUwXzIwIj5TdHI8L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkF0dHJpYnV0ZWRfU3RyaW5nPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc2OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDUxXzIwIj5MZW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc3NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxN18xNCI+UGVlazwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc3NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE3XzIwIj5XaW48L0E+PC9zcGFuPiAgICA6ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzc2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MThfMjAiPkxpbmU8L0E+PC9zcGFuPiAgIDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxOV8yMCI+Q29sdW1uPC9BPjwvc3Bhbj4gOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzc4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MjBfMjAiPlN0cjwvQT48L3NwYW4+ICAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDlfNCI+QXR0cmlidXRlZF9TdHJpbmc8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyMV8yMCI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKQogICAgPGI+aXM8L2I+CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUxMV8xNCI+TW92ZV9DdXJzb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ3XzIwIj5XaW48L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDQ4XzIwIj5MaW5lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0OV8yMCI+Q29sdW1uPC9BPik7Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDM4XzE0Ij5QZWVrPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ0N18yMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1MF8yMCI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1MV8yMCI+TGVuPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDdfMTQiPlBlZWs8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjNfMTQiPkdldDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NzVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjNfMTkiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3Nl8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2NF8xOSI+U3RyPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3N18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2NV8xOSI+TGVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIEludGVnZXIgOj0gLTEpCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxN18yMCI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYxOF8yMCI+TGluZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTlfMjAiPkNvbHVtbjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYwOF8xNCI+UGVlazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MTdfMjAiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MjBfMjAiPlN0cjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MjFfMjAiPkxlbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjE3XzE0Ij5QZWVrPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjMzXzE0Ij5HZXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3ODZfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzNfMTkiPldpbjwvQT48L3NwYW4+IDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3ODdfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzRfMTkiPlN0cjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc4OF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzNV8xOSI+TGVuPC9BPjwvc3Bhbj4gOiAgSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3OV8xNiI+V2dldG5zdHI8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzc5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc5XzE2Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzgwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc5XzE2Ij5TdHI8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzgxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc5XzE2Ij5MZW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzkwXzE2Ij5XZ2V0bnN0cjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc5MF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc5MF8xNiI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzkxXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzkwXzE2Ij5TdHI8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3OTJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTBfMTYiPkxlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgV2dldG5zdHIsICJ3Z2V0bnN0ciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3ODRfNyI+TjwvQT48L0ZPTlQ+ICAgOiBJbnRlZ2VyIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjVfMTkiPkxlbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3ODVfNyI+VHh0PC9BPjwvRk9OVD4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjRfMTkiPlN0cjwvQT4nTGVuZ3RoKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc4Nl83Ij5DbnQ8L0E+PC9GT05UPiA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc5NV83Ij5OPC9BPjwvc3Bhbj4gICA6IEludGVnZXIgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzNV8xOSI+TGVuPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzk2XzciPlR4dDwvQT48L3NwYW4+IDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjM0XzE5Ij5TdHI8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc5N183Ij5DbnQ8L0E+PC9zcGFuPiA6IE5hdHVyYWw7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzg0XzciPk48L0E+ICZsdDsgMCA8Yj50aGVuPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc4NF83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDY0XzE5Ij5TdHI8L0E+J0xlbmd0aDsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzk1XzciPk48L0E+ICZsdDsgMCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc5NV83Ij5OPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjM0XzE5Ij5TdHI8L0E+J0xlbmd0aDsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODRfNyI+TjwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDY0XzE5Ij5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTVfNyI+TjwvQT4gJmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjM0XzE5Ij5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmFpc2U8L2I+IENvbnN0cmFpbnRfRXJyb3I7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODVfNyI+VHh0PC9BPiAoMCkgOj0gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcidGaXJzdDsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc5XzE2Ij5XZ2V0bnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjNfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODVfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODRfNyI+TjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTZfNyI+VHh0PC9BPiAoMCkgOj0gPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM2XzkiPkludGVyZmFjZXM8L0E+LkMuY2hhcidGaXJzdDsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzkwXzE2Ij5XZ2V0bnN0cjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzNfMTkiPldpbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTZfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTVfNyI+TjwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgVG9fQWRhICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzg1XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjRfMTkiPlN0cjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODZfNyI+Q250PC9BPiwgVHJ1ZSk7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc4Nl83Ij5DbnQ8L0E+ICZsdDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2NF8xOSI+U3RyPC9BPidMZW5ndGggPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NjRfMTkiPlN0cjwvQT4gKCg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDY0XzE5Ij5TdHI8L0E+J0ZpcnN0ICsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc4Nl83Ij5DbnQ8L0E+KSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDY0XzE5Ij5TdHI8L0E+J0xhc3QpIDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7ICcgJyk7CisgICAgICBUb19BZGEgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3OTZfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzNF8xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc5N183Ij5DbnQ8L0E+LCBUcnVlKTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzk3XzciPkNudDwvQT4gJmx0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjM0XzE5Ij5TdHI8L0E+J0xlbmd0aCA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzNF8xOSI+U3RyPC9BPiAoKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzRfMTkiPlN0cjwvQT4nRmlyc3QgKyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzk3XzciPkNudDwvQT4pIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzRfMTkiPlN0cjwvQT4nTGFzdCkgOj0gKDxiPm90aGVyczwvYj4gPSZndDsgJyAnKTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDYzXzE0Ij5HZXQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjMzXzE0Ij5HZXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgwNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3NF8xNCI+R2V0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgwNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDc0XzE5Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3NV8xOSI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODA3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzZfMTkiPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODA4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzdfMTkiPlN0cjwvQT48L0ZPTlQ+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmc7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3OF8xOSI+TGVuPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gIEludGVnZXIgOj0gLTEpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODE1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ0XzE0Ij5HZXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0NF8xOSI+V2luPC9BPjwvc3Bhbj4gICAgOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgxN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ1XzE5Ij5MaW5lPC9BPjwvc3Bhbj4gICA6ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODE4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NDZfMTkiPkNvbHVtbjwvQT48L3NwYW4+IDogIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgxOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ3XzE5Ij5TdHI8L0E+PC9zcGFuPiAgICA6IDxiPm91dDwvYj4gU3RyaW5nOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MjBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0OF8xOSI+TGVuPC9BPjwvc3Bhbj4gICAgOiAgSW50ZWdlciA6PSAtMSkKICAgIDxiPmlzPC9iPgogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3NF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3NV8xOSI+TGluZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzZfMTkiPkNvbHVtbjwvQT4pOwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2M18xNCI+R2V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3NF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3N18xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ3OF8xOSI+TGVuPC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NzRfMTQiPkdldDwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5OV8xNCI+SW5pdF9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODE3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDBfNyI+Rm9ybWF0PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5MV85Ij5Tb2Z0X0xhYmVsX0tleV9Gb3JtYXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTFfMzUiPlRocmVlX1R3b19UaHJlZTwvQT4pCisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0NF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0NV8xOSI+TGluZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NDZfMTkiPkNvbHVtbjwvQT4pOworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzM18xNCI+R2V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0NF8xOSI+V2luPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0N18xOSI+U3RyPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY0OF8xOSI+TGVuPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NDRfMTQiPkdldDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgyN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2OV8xNCI+SW5pdF9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3MF83Ij5Gb3JtYXQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjFfOSI+U29mdF9MYWJlbF9LZXlfRm9ybWF0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjYxXzM1Ij5UaHJlZV9Ud29fVGhyZWU8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODE5XzE2Ij5TbGtfSW5pdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MTlfMTYiPkZtdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MzBfMTYiPlNsa19Jbml0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODMwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODMwXzE2Ij5GbXQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19Jbml0LCAic2xrX2luaXQiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MTlfMTYiPlNsa19Jbml0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5MV85Ij5Tb2Z0X0xhYmVsX0tleV9Gb3JtYXQ8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwMF83Ij5Gb3JtYXQ8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgzMF8xNiI+U2xrX0luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjYxXzkiPlNvZnRfTGFiZWxfS2V5X0Zvcm1hdDwvQT4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjcwXzciPkZvcm1hdDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDk5XzE0Ij5Jbml0X1NvZnRfTGFiZWxfS2V5czwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjlfMTQiPkluaXRfU29mdF9MYWJlbF9LZXlzPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDVfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MjdfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDVfMzQiPkxhYmVsPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5NV85Ij5MYWJlbF9OdW1iZXI8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODI4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTA2XzM0Ij5UZXh0PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgyOV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwN18zNCI+Rm10PC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDk2XzkiPkxhYmVsX0p1c3RpZmljYXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTZfMzMiPkxlZnQ8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgzOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3NV8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODM4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjc1XzM0Ij5MYWJlbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2NV85Ij5MYWJlbF9OdW1iZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MzlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzZfMzQiPlRleHQ8L0E+PC9zcGFuPiAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg0MF8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3N18zNCI+Rm10PC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjZfOSI+TGFiZWxfSnVzdGlmaWNhdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Nl8zMyI+TGVmdDwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MzFfMTYiPlNsa19TZXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODMxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODMxXzE2Ij5MYWJlbDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MzJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MzFfMTYiPlR4dDwvQT48L0ZPTlQ+ICAgOiBjaGFyX2FycmF5OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODMzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODMxXzE2Ij5GbXQ8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NDJfMTYiPlNsa19TZXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NDJfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NDJfMTYiPkxhYmVsPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODQzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQyXzE2Ij5UeHQ8L0E+PC9zcGFuPiAgIDogY2hhcl9hcnJheTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODQ0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQyXzE2Ij5GbXQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX1NldCwgInNsa19zZXQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODM2XzciPlR4dDwvQT48L0ZPTlQ+IDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTA2XzM0Ij5UZXh0PC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODM3XzciPkxlbjwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NDdfNyI+VHh0PC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzZfMzQiPlRleHQ8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg0OF83Ij5MZW48L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwNl8zNCI+VGV4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MzZfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgzN183Ij5MZW48L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODMxXzE2Ij5TbGtfU2V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDVfMzQiPkxhYmVsPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MzZfNyI+VHh0PC9BPiwKLSAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDk2XzkiPkxhYmVsX0p1c3RpZmljYXRpb248L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUwN18zNCI+Rm10PC9BPikpKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzZfMzQiPlRleHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQ3XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NDhfNyI+TGVuPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg0Ml8xNiI+U2xrX1NldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjc1XzM0Ij5MYWJlbDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQ3XzciPlR4dDwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Nl85Ij5MYWJlbF9KdXN0aWZpY2F0aW9uPC9BPidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzdfMzQiPkZtdDwvQT4pKSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MDVfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzVfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTEyXzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODU4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjgyXzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NDhfMTYiPlNsa19SZWZyZXNoPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg2MF8xNiI+U2xrX1JlZnJlc2g8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19SZWZyZXNoLCAic2xrX3JlZnJlc2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NDhfMTYiPlNsa19SZWZyZXNoPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODYwXzE2Ij5TbGtfUmVmcmVzaDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUxMl8xNCI+UmVmcmVzaF9Tb2Z0X0xhYmVsX0tleXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjgyXzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODU2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTE3XzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZTwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODY4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjg3XzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZTwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NThfMTYiPlNsa19Ob3V0cmVmcmVzaDwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NzBfMTYiPlNsa19Ob3V0cmVmcmVzaDwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX05vdXRyZWZyZXNoLCAic2xrX25vdXRyZWZyZXNoIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODU4XzE2Ij5TbGtfTm91dHJlZnJlc2g8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NzBfMTYiPlNsa19Ob3V0cmVmcmVzaDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUxN18xNCI+UmVmcmVzaF9Tb2Z0X0xhYmVsX0tleXNfV2l0aG91dF9VcGRhdGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjg3XzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODY2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzE0Ij5HZXRfU29mdF9MYWJlbF9LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODY2XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzM0Ij5MYWJlbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTVfOSI+TGFiZWxfTnVtYmVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg2N18zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyM18zNCI+VGV4dDwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg3OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5Ml8xNCI+R2V0X1NvZnRfTGFiZWxfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODc4XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjkyXzM0Ij5MYWJlbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2NV85Ij5MYWJlbF9OdW1iZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NzlfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2OTNfMzQiPlRleHQ8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg2OV8xNiI+U2xrX0xhYmVsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg2OV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg2OV8xNiI+TGFiZWw8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg4MV8xNiI+U2xrX0xhYmVsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODgxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODgxXzE2Ij5MYWJlbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19MYWJlbCwgInNsa19sYWJlbCIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfMTE2XzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjlfMTYiPlNsa19MYWJlbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzM0Ij5MYWJlbDwvQT4pKSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyM18zNCI+VGV4dDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTIyXzE0Ij5HZXRfU29mdF9MYWJlbF9LZXk8L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzkyXzE0Ij5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4ODFfMTYiPlNsa19MYWJlbDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjkyXzM0Ij5MYWJlbDwvQT4pKSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5M18zNCI+VGV4dDwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjkyXzE0Ij5HZXRfU29mdF9MYWJlbF9LZXk8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODc1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTI3XzEzIj5HZXRfU29mdF9MYWJlbF9LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODc1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTI3XzMzIj5MYWJlbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTVfOSI+TGFiZWxfTnVtYmVyPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg4N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5N18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODg3XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjk3XzMzIj5MYWJlbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2NV85Ij5MYWJlbF9OdW1iZXI8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZwogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODc3XzE2Ij5TbGtfTGFiZWw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODc3XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODc3XzE2Ij5MYWJlbDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODg5XzE2Ij5TbGtfTGFiZWw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4ODlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4ODlfMTYiPkxhYmVsPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX0xhYmVsLCAic2xrX2xhYmVsIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODc3XzE2Ij5TbGtfTGFiZWw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUyN18zMyI+TGFiZWw8L0E+KSkpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTI3XzEzIj5HZXRfU29mdF9MYWJlbF9LZXk8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg4OV8xNiI+U2xrX0xhYmVsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2OTdfMzMiPkxhYmVsPC9BPikpKTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5N18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5PC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4ODNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MzNfMTQiPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODk1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzAzXzE0Ij5DbGVhcl9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9zcGFuPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODg1XzE2Ij5TbGtfQ2xlYXI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODk3XzE2Ij5TbGtfQ2xlYXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19DbGVhciwgInNsa19jbGVhciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg4NV8xNiI+U2xrX0NsZWFyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODk3XzE2Ij5TbGtfQ2xlYXI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MzNfMTQiPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MDNfMTQiPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTM4XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTA1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzA4XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4OTVfMTYiPlNsa19SZXN0b3JlPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkwN18xNiI+U2xrX1Jlc3RvcmU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19SZXN0b3JlLCAic2xrX3Jlc3RvcmUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4OTVfMTYiPlNsa19SZXN0b3JlPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTA3XzE2Ij5TbGtfUmVzdG9yZTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUzOF8xNCI+UmVzdG9yZV9Tb2Z0X0xhYmVsX0tleXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzA4XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQzXzE0Ij5Ub3VjaF9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxM18xNCI+VG91Y2hfU29mdF9MYWJlbF9LZXlzPC9BPjwvc3Bhbj4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkwNV8xNiI+U2xrX1RvdWNoPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkxN18xNiI+U2xrX1RvdWNoPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTbGtfVG91Y2gsICJzbGtfdG91Y2giKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MDVfMTYiPlNsa19Ub3VjaDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxN18xNiI+U2xrX1RvdWNoPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQzXzE0Ij5Ub3VjaF9Tb2Z0X0xhYmVsX0tleXM8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzEzXzE0Ij5Ub3VjaF9Tb2Z0X0xhYmVsX0tleXM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkxM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU0OF8xNCI+U3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTE0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDlfNyI+QXR0cjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1MF83Ij5PbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOF8xNCI+U3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOV83Ij5BdHRyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyMF83Ij5PbjwvQT48L3NwYW4+ICAgOiBCb29sZWFuIDo9IFRydWUpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MTdfMTYiPlNsa19BdHRyb248L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTE3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTE3XzE2Ij5DaDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjlfMTYiPlNsa19BdHRyb248L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjlfMTYiPkNoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19BdHRyb24sICJzbGtfYXR0cm9uIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTE5XzE2Ij5TbGtfQXR0cm9mZjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MTlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MTlfMTYiPkNoPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkzMV8xNiI+U2xrX0F0dHJvZmY8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MzFfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MzFfMTYiPkNoPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNsa19BdHRyb2ZmLCAic2xrX2F0dHJvZmYiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTIyXzciPkVycjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MjNfNyI+Q2g8L0E+PC9GT05UPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDlfNyI+QXR0cjwvQT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTM0XzciPkVycjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkzNV83Ij5DaDwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOV83Ij5BdHRyPC9BPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1MF83Ij5PbjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjJfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTE3XzE2Ij5TbGtfQXR0cm9uPC9BPiAgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5BdHRyQ2hhcl9Ub19DaHR5cGU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTIzXzciPkNoPC9BPikpOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjBfNyI+T248L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTM0XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkyOV8xNiI+U2xrX0F0dHJvbjwvQT4gICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTM1XzciPkNoPC9BPik7CiAgICAgICA8Yj5lbHNlPC9iPgotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkyMl83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MTlfMTYiPlNsa19BdHRyb2ZmPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjNfNyI+Q2g8L0E+KSk7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTM0XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkzMV8xNiI+U2xrX0F0dHJvZmY8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTM1XzciPkNoPC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTIyXzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkzNF83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDhfMTQiPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOF8xNCI+U3dpdGNoX1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkzN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1Nl8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTM4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NTdfNyI+QXR0cjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTM5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NThfNyI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk0OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyNl8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyN183Ij5BdHRyPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTUxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjhfNyI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NDFfMTYiPlNsa19BdHRyc2V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk0MV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk0MV8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTUzXzE2Ij5TbGtfQXR0cnNldDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk1M18xNiI+Q2g8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX0F0dHJzZXQsICJzbGtfYXR0cnNldCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NDRfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTU3XzciPkF0dHI8L0E+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU1OF83Ij5Db2xvcjwvQT4pOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NTZfNyI+Q2g8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA9Jmd0OyBDaGFyYWN0ZXInRmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODlfMTAiPkF0dHI8L0E+ICA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzI3XzciPkF0dHI8L0E+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDkwXzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyOF83Ij5Db2xvcjwvQT4pOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk0MV8xNiI+U2xrX0F0dHJzZXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk0NF83Ij5DaDwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTUzXzE2Ij5TbGtfQXR0cnNldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NTZfNyI+Q2g8L0E+KSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTU2XzE0Ij5TZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjZfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2M18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczM18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1NV8xNiI+U2xrX0F0dHI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTY3XzE2Ij5TbGtfQXR0cjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTbGtfQXR0ciwgInNsa19hdHRyIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1OF83Ij5BdHRyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzYzXzEyIj5DX0NodHlwZTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk1NV8xNiI+U2xrX0F0dHI8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NzBfNyI+QXR0cjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk2N18xNiI+U2xrX0F0dHI8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IENodHlwZV9Ub19BdHRyQ2hhciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk1OF83Ij5BdHRyPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2M18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTcwXzciPkF0dHI8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzNfMTMiPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk2M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU2N18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTc1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzM3XzEzIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NjVfMTYiPlNsa19BdHRyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3N18xNiI+U2xrX0F0dHI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX0F0dHIsICJzbGtfYXR0ciIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5NjhfNyI+QXR0cjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NjVfMTYiPlNsa19BdHRyPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTgwXzciPkF0dHI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NzdfMTYiPlNsa19BdHRyPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+Q2h0eXBlX1RvX0F0dHJDaGFyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk2OF83Ij5BdHRyPC9BPikuPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NjdfMTMiPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4MF83Ij5BdHRyPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczN18xMyI+R2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk3M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3Ml8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk3M180MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3Ml80MCI+UGFpcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5ODVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDJfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleV9Db2xvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4NV80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0Ml80MCI+UGFpcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTc1XzE2Ij5TbGtfQ29sb3I8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTc1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTc1XzE2Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5ODdfMTYiPlNsa19Db2xvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4N18yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4N18xNiI+Q29sb3I8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU2xrX0NvbG9yLCAic2xrX2NvbG9yIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTc1XzE2Ij5TbGtfQ29sb3I8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTcyXzQwIj5QYWlyPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODdfMTYiPlNsa19Db2xvcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDJfNDAiPlBhaXI8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3Ml8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0Ml8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yPC9BPjsKIAotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5ODRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1ODZfMTQiPkVuYWJsZV9LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTg0XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg2XzI2Ij5LZXk8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTg1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg3XzI2Ij5FbmFibGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpCis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk5Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1Nl8xNCI+RW5hYmxlX0tleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk5Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1Nl8yNiI+S2V5PC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5OTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTdfMjYiPkVuYWJsZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTg3XzE2Ij5LZXlvazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5ODdfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODdfMTYiPktleWNvZGU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk4OF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4N18xNiI+T25fT2ZmPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5OTlfMTYiPktleW9rPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTk5XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTk5XzE2Ij5LZXljb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAwMF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk5OV8xNiI+T25fT2ZmPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgS2V5b2ssICJrZXlvayIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4N18xNiI+S2V5b2s8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4Nl8yNiI+S2V5PC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4N18yNiI+RW5hYmxlPC9BPikpKQotICAgICAgICA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTk5XzE2Ij5LZXlvazwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzI2Ij5LZXk8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gKEJvb2xlYW4nUG9zICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU3XzI2Ij5FbmFibGU8L0E+KSkpCisgICAgICAgID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTg2XzE0Ij5FbmFibGVfS2V5PC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTk3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk2XzE0Ij5EZWZpbmVfS2V5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk5N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5Nl8yNiI+RGVmaW5pdGlvbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5OThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1OTdfMjYiPktleTwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTZfMTQiPkVuYWJsZV9LZXk8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMTBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjZfMTQiPkRlZmluZV9LZXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjZfMjYiPkRlZmluaXRpb248L0E+PC9zcGFuPiA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAxMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc2N18yNiI+S2V5PC9BPjwvc3Bhbj4gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDAwXzE2Ij5EZWZrZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDAwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDAwXzE2Ij5EZWY8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXk7Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAwMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAwMF8xNiI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAxM18xNiI+RGVma2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDEzXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDEzXzE2Ij5EZWY8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXk7CisgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDE0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDEzXzE2Ij5LZXk8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIERlZmtleSwgImRlZmluZV9rZXkiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDA0XzciPlR4dDwvQT48L0ZPTlQ+ICAgIDogY2hhcl9hcnJheSAoMCAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk2XzI2Ij5EZWZpbml0aW9uPC9BPidMZW5ndGgpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDA1XzciPkxlbmd0aDwvQT48L0ZPTlQ+IDogc2l6ZV90OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMTdfNyI+VHh0PC9BPjwvc3Bhbj4gICAgOiBjaGFyX2FycmF5ICgwIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjZfMjYiPkRlZmluaXRpb248L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAxOF83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU5Nl8yNiI+RGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMDRfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAwNV83Ij5MZW5ndGg8L0E+KTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDAwXzE2Ij5EZWZrZXk8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDA0XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk3XzI2Ij5LZXk8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzY2XzI2Ij5EZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxN183Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDE4XzciPkxlbmd0aDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMTNfMTYiPkRlZmtleTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMTdfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjdfMjYiPktleTwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk2XzE0Ij5EZWZpbmVfS2V5PC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDEzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjIyXzE0Ij5Vbl9Db250cm9sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxM18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyMl8yNiI+Q2g8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MjNfMjYiPlN0cjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjZfMTQiPkRlZmluZV9LZXk8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3OTJfMTQiPlVuX0NvbnRyb2w8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3OTJfMjYiPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAyN18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5M18yNiI+U3RyPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxNl8xNiI+VW5jdHJsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxNl8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxNl8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAyOV8xNiI+VW5jdHJsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDI5XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDI5XzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgVW5jdHJsLCAidW5jdHJsIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMTZfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxNl8xNiI+VW5jdHJsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzc1XzQiPkF0dHJDaGFyX1RvX0NodHlwZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MjJfMjYiPkNoPC9BPikpLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjIzXzI2Ij5TdHI8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyMl8xNCI+VW5fQ29udHJvbDwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTJfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAyOV8xNiI+VW5jdHJsPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5Ml8yNiI+Q2g8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5M18yNiI+U3RyPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3OTJfMTQiPlVuX0NvbnRyb2w8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDIyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjI3XzEzIj5Vbl9Db250cm9sPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAyMl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyN18yNSI+Q2g8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDM1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk3XzEzIj5Vbl9Db250cm9sPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDM1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk3XzI1Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAyNF8xNiI+VW5jdHJsPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAyNF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAyNF8xNiI+Q2g8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82M18xMiI+Q19DaHR5cGU8L0E+KSA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAzN18xNiI+VW5jdHJsPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDM3XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDM3XzE2Ij5DaDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPikgPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgVW5jdHJsLCAidW5jdHJsIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDI0XzE2Ij5VbmN0cmw8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzVfNCI+QXR0ckNoYXJfVG9fQ2h0eXBlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYyN18yNSI+Q2g8L0E+KSkpOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjI3XzEzIj5Vbl9Db250cm9sPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzk3XzEzIj5GaWxsX1N0cmluZzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMzdfMTYiPlVuY3RybDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3OTdfMjUiPkNoPC9BPikpOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk3XzEzIj5Vbl9Db250cm9sPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzNfMTQiPkRlbGF5X091dHB1dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMzBfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2MzNfMjgiPk1zZWNzPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MDNfMTQiPkRlbGF5X091dHB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA0M18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwM18yOCI+TXNlY3M8L0E+PC9zcGFuPiA6IE5hdHVyYWwpCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMzJfMTYiPkRlbGF5b3V0cHV0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAzMl8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAzMl8xNiI+TXNlY3M8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDQ1XzE2Ij5EZWxheW91dHB1dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA0NV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA0NV8xNiI+TXNlY3M8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIERlbGF5b3V0cHV0LCAiZGVsYXlfb3V0cHV0Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDMyXzE2Ij5EZWxheW91dHB1dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjMzXzI4Ij5Nc2VjczwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDQ1XzE2Ij5EZWxheW91dHB1dDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODAzXzI4Ij5Nc2VjczwvQT4pKSA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjMzXzE0Ij5EZWxheV9PdXRwdXQ8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODAzXzE0Ij5EZWxheV9PdXRwdXQ8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA0MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzOF8xNCI+Rmx1c2hfSW5wdXQ8L0E+PC9GT05UPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwOF8xNCI+Rmx1c2hfSW5wdXQ8L0E+PC9zcGFuPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDQyXzE2Ij5GbHVzaGlucDwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNTVfMTYiPkZsdXNoaW5wPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBGbHVzaGlucCwgImZsdXNoaW5wIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDQyXzE2Ij5GbHVzaGlucDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4gIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSBkb2N1IHNheXMgdGhhdCBuZXZlciBoYXBwZW5zLCBidXQuLi48L0VNPjwvRk9OVD4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA1NV8xNiI+Rmx1c2hpbnA8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+ICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGRvY3Ugc2F5cyB0aGF0IG5ldmVyIGhhcHBlbnMsIGJ1dC4uLjwvRU0+PC9zcGFuPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjM4XzE0Ij5GbHVzaF9JbnB1dDwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDUwXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ3XzEzIj5CYXVkcmF0ZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbAorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODA4XzE0Ij5GbHVzaF9JbnB1dDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE3XzEzIj5CYXVkcmF0ZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gTmF0dXJhbAogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDUyXzE2Ij5CYXVkPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA2NV8xNiI+QmF1ZDwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQmF1ZCwgImJhdWRyYXRlIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA1Ml8xNiI+QmF1ZDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ3XzEzIj5CYXVkcmF0ZTwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNjVfMTYiPkJhdWQ8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxN18xMyI+QmF1ZHJhdGU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDU4XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjUyXzEzIj5FcmFzZV9DaGFyYWN0ZXI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDcxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODIyXzEzIj5FcmFzZV9DaGFyYWN0ZXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDYwXzE2Ij5FcmFzZWNoYXI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDczXzE2Ij5FcmFzZWNoYXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEVyYXNlY2hhciwgImVyYXNlY2hhciIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNjBfMTYiPkVyYXNlY2hhcjwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjUyXzEzIj5FcmFzZV9DaGFyYWN0ZXI8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDczXzE2Ij5FcmFzZWNoYXI8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgyMl8xMyI+RXJhc2VfQ2hhcmFjdGVyPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA2Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY1N18xMyI+S2lsbF9DaGFyYWN0ZXI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDc5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODI3XzEzIj5LaWxsX0NoYXJhY3RlcjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQ2hhcmFjdGVyCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwNjhfMTYiPktpbGxjaGFyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4MV8xNiI+S2lsbGNoYXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEtpbGxjaGFyLCAia2lsbGNoYXIiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDY4XzE2Ij5LaWxsY2hhcjwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjU3XzEzIj5LaWxsX0NoYXJhY3RlcjwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwODFfMTYiPktpbGxjaGFyPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MjdfMTMiPktpbGxfQ2hhcmFjdGVyPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA3NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Ml8xMyI+SGFzX0luc2VydF9DaGFyYWN0ZXI8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMl8xMyI+SGFzX0luc2VydF9DaGFyYWN0ZXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA3Nl8xNiI+SGFzX0ljPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4OV8xNiI+SGFzX0ljPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBIYXNfSWMsICJoYXNfaWMiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNzZfMTYiPkhhc19JYzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI3XzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwODlfMTYiPkhhc19JYzwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Ml8xMyI+SGFzX0luc2VydF9DaGFyYWN0ZXI8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODMyXzEzIj5IYXNfSW5zZXJ0X0NoYXJhY3RlcjwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwODZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjdfMTMiPkhhc19JbnNlcnRfTGluZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gQm9vbGVhbgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDk5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODM3XzEzIj5IYXNfSW5zZXJ0X0xpbmU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA4OF8xNiI+SGFzX0lsPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEwMV8xNiI+SGFzX0lsPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBIYXNfSWwsICJoYXNfaWwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwODhfMTYiPkhhc19JbDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI3XzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMDFfMTYiPkhhc19JbDwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2N18xMyI+SGFzX0luc2VydF9MaW5lPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzN18xMyI+SGFzX0luc2VydF9MaW5lPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA5OF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3Ml8xMyI+U3VwcG9ydGVkX0F0dHJpYnV0ZXM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjExMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0Ml8xMyI+U3VwcG9ydGVkX0F0dHJpYnV0ZXM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjEwMF8xNiI+VGVybWF0dHJzPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjNfMTIiPkNfQ2h0eXBlPC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjExM18xNiI+VGVybWF0dHJzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFRlcm1hdHRycywgInRlcm1hdHRycyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMDNfNyI+Q2g8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5DaHR5cGVfVG9fQXR0ckNoYXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTAwXzE2Ij5UZXJtYXR0cnM8L0E+KTsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTE2XzciPkNoPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTEzXzE2Ij5UZXJtYXR0cnM8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMDNfNyI+Q2g8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1NF8xMCI+QXR0cjwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzJfMTMiPlN1cHBvcnRlZF9BdHRyaWJ1dGVzPC9BPjsKKyAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjExNl83Ij5DaDwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0Ml8xMyI+U3VwcG9ydGVkX0F0dHJpYnV0ZXM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjEwOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3N18xNCI+TG9uZ19OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjEwOF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3N18yNSI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTIxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODQ3XzE0Ij5Mb25nX05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMjFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NDdfMjUiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTEwXzE2Ij5Mb25nbmFtZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTIzXzE2Ij5Mb25nbmFtZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIExvbmduYW1lLCAibG9uZ25hbWUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTEwXzE2Ij5Mb25nbmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NzdfMjUiPk5hbWU8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3N18xNCI+TG9uZ19OYW1lPC9BPjsKKyAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85Ml8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTIzXzE2Ij5Mb25nbmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NDdfMjUiPk5hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0N18xNCI+TG9uZ19OYW1lPC9BPjsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjExNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY4MV8xMyI+TG9uZ19OYW1lPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBTdHJpbmcKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEyOV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg1MV8xMyI+TG9uZ19OYW1lPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBTdHJpbmcKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjExOF8xNiI+TG9uZ25hbWU8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjEzMV8xNiI+TG9uZ25hbWU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBMb25nbmFtZSwgImxvbmduYW1lIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzEyMV8xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTE4XzE2Ij5Mb25nbmFtZTwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjgxXzEzIj5Mb25nX05hbWU8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEzMV8xNiI+TG9uZ25hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg1MV8xMyI+TG9uZ19OYW1lPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2ODdfMTQiPlRlcm1pbmFsX05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTI0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjg3XzI5Ij5OYW1lPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTdfMTQiPlRlcm1pbmFsX05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMzdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTdfMjkiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTI2XzE2Ij5UZXJtbmFtZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTM5XzE2Ij5UZXJtbmFtZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gY2hhcnNfcHRyOwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFRlcm1uYW1lLCAidGVybW5hbWUiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzExNl8xNCI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTI2XzE2Ij5UZXJtbmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2ODdfMjkiPk5hbWU8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY4N18xNCI+VGVybWluYWxfTmFtZTwvQT47CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTJfMTQiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEzOV8xNiI+VGVybW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODU3XzI5Ij5OYW1lPC9BPik7CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTdfMTQiPlRlcm1pbmFsX05hbWU8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTMyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjkxXzEzIj5UZXJtaW5hbF9OYW1lPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBTdHJpbmcKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE0NV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg2MV8xMyI+VGVybWluYWxfTmFtZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gU3RyaW5nCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxMzRfMTYiPlRlcm1uYW1lPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNDdfMTYiPlRlcm1uYW1lPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgVGVybW5hbWUsICJ0ZXJtbmFtZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEzNF8xNiI+VGVybW5hbWU8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY5MV8xMyI+VGVybWluYWxfTmFtZTwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE0MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxMl8xNCI+SW5pdF9QYWlyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE0MF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxMl8yNSI+UGFpcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwMV8xMiI+UmVkZWZpbmFibGVfQ29sb3JfUGFpcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxNDFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTNfMjUiPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE0Ml8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxNF8yNSI+QmFjazwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+KQorICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfOTdfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE0N18xNiI+VGVybW5hbWU8L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg2MV8xMyI+VGVybWluYWxfTmFtZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4Ml8xNCI+SW5pdF9QYWlyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTUzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODgyXzI1Ij5QYWlyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTFfMTIiPlJlZGVmaW5hYmxlX0NvbG9yX1BhaXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNTRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODNfMjUiPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNTVfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODRfMjUiPkJhY2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTQ0XzE2Ij5Jbml0cGFpcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxNDRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNDRfMTYiPlBhaXI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTQ1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTQ0XzE2Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE0Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE0NF8xNiI+QmFjazwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE1N18xNiI+SW5pdHBhaXI8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTdfMTYiPlBhaXI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNThfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTdfMTYiPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxNTlfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTdfMTYiPkJhY2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgSW5pdHBhaXIsICJpbml0X3BhaXIiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IEludGVnZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTJfMjUiPlBhaXI8L0E+KSAmZ3Q7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjRfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiBJbnRlZ2VyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODgyXzI1Ij5QYWlyPC9BPikgJmd0Oz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTYyXzEzIj5OdW1iZXJfT2ZfQ29sb3JfUGFpcnM8L0E+IDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yYWlzZTwvYj4gQ29uc3RyYWludF9FcnJvcjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPGI+aWY8L2I+IEludGVnZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTNfMjUiPkZvcmU8L0E+KSAmZ3Q7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjFfMTMiPk51bWJlcl9PZl9Db2xvcnM8L0E+IDxiPm9yPC9iPiA8Yj5lbHNlPC9iPgotICAgICAgICAgSW50ZWdlciAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxNF8yNSI+QmFjazwvQT4pICZndDs9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQyMV8xMyI+TnVtYmVyX09mX0NvbG9yczwvQT4gPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiBJbnRlZ2VyICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODgzXzI1Ij5Gb3JlPC9BPikgJmd0Oz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU5XzEzIj5OdW1iZXJfT2ZfQ29sb3JzPC9BPiA8Yj5vcjwvYj4gPGI+ZWxzZTwvYj4KKyAgICAgICAgIEludGVnZXIgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODRfMjUiPkJhY2s8L0E+KSAmZ3Q7PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTlfMTMiPk51bWJlcl9PZl9Db2xvcnM8L0E+CisgICAgICA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmFpc2U8L2I+IENvbnN0cmFpbnRfRXJyb3I7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTQ0XzE2Ij5Jbml0cGFpcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTJfMjUiPlBhaXI8L0E+KSwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxM18yNSI+Rm9yZTwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzE0XzI1Ij5CYWNrPC9BPikpCi0gICAgICAgID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTdfMTYiPkluaXRwYWlyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4Ml8yNSI+UGFpcjwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODgzXzI1Ij5Gb3JlPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODRfMjUiPkJhY2s8L0E+KSkKKyAgICAgICAgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTJfMTQiPkluaXRfUGFpcjwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODJfMTQiPkluaXRfUGFpcjwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzE5XzE0Ij5QYWlyX0NvbnRlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTYyXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzE5XzI4Ij5QYWlyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTYzXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzIwXzI4Ij5Gb3JlPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTY0XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzIxXzI4Ij5CYWNrPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4OV8xNCI+UGFpcl9Db250ZW50PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTc3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODg5XzI4Ij5QYWlyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE3OF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg5MF8yOCI+Rm9yZTwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTc5XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODkxXzI4Ij5CYWNrPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxNjZfMTIiPkNfU2hvcnRfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE2N18xNiI+UGFpcmNvbnRlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTY3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTY3XzE2Ij5QYWlyPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE2OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2N18xNiI+RnA8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2Nl8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE2OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2N18xNiI+QnA8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2Nl8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxODFfMTIiPkNfU2hvcnRfQWNjZXNzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTgyXzE2Ij5QYWlyY29udGVudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE4Ml8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4Ml8xNiI+UGFpcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE4M18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4Ml8xNiI+RnA8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4MV8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTg0XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTgyXzE2Ij5CcDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTgxXzEyIj5DX1Nob3J0X0FjY2VzczwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUGFpcmNvbnRlbnQsICJwYWlyX2NvbnRlbnQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTcyXzciPkY8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTcyXzEwIj5CPC9BPjwvRk9OVD4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxODdfNyI+RjwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE4N18xMCI+QjwvQT48L3NwYW4+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNjdfMTYiPlBhaXJjb250ZW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOV8yOCI+UGFpcjwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTcyXzciPkY8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNzJfMTAiPkI8L0E+JzxiPkFjY2VzczwvYj4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxODJfMTYiPlBhaXJjb250ZW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4OV8yOCI+UGFpcjwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTg3XzciPkY8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxODdfMTAiPkI8L0E+JzxiPkFjY2VzczwvYj4pID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjBfMjgiPkZvcmU8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTcyXzciPkY8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjFfMjgiPkJhY2s8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTcyXzEwIj5CPC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODkwXzI4Ij5Gb3JlPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4N183Ij5GPC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODkxXzI4Ij5CYWNrPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4N18xMCI+QjwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MTlfMTQiPlBhaXJfQ29udGVudDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODlfMTQiPlBhaXJfQ29udGVudDwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxODJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjZfMTMiPkhhc19Db2xvcnM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE5N18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg5Nl8xMyI+SGFzX0NvbG9yczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTg0XzE2Ij5IYXNjb2xvcnM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTk5XzE2Ij5IYXNjb2xvcnM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEhhc2NvbG9ycywgImhhc19jb2xvcnMiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxODRfMTYiPkhhc2NvbG9yczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI3XzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPkhhc2NvbG9yczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPiA8Yj50aGVuPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBGYWxzZTsKICAgICAgIDxiPmVsc2U8L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IFRydWU7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyNl8xMyI+SGFzX0NvbG9yczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4OTZfMTMiPkhhc19Db2xvcnM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE5NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczMV8xNCI+SW5pdF9Db2xvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOTRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzFfMjYiPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTk1XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzMyXzI2Ij5SZWQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5NV85Ij5SR0JfVmFsdWU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjE5Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczM18yNiI+R3JlZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzRfMjYiPkJsdWU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjA5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTAxXzE0Ij5Jbml0X0NvbG9yPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjA5XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTAxXzI2Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MDJfMjYiPlJlZDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDVfOSI+UkdCX1ZhbHVlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIxMV8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwM18yNiI+R3JlZW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjEyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTA0XzI2Ij5CbHVlPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOTlfMTYiPkluaXRjb2xvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIxOTlfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPkNvbDwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMDBfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPlJlZDwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMDFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPkdyZWVuPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMDJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPkJsdWU8L0E+PC9GT05UPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjE0XzE2Ij5Jbml0Y29sb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMTRfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMTRfMTYiPkNvbDwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIxNV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIxNF8xNiI+UmVkPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjE2XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjE0XzE2Ij5HcmVlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUxXzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMTdfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMTRfMTYiPkJsdWU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEluaXRjb2xvciwgImluaXRfY29sb3IiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTlfMTYiPkluaXRjb2xvcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzFfMjYiPkNvbG9yPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzJfMjYiPlJlZDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzMzXzI2Ij5HcmVlbjwvQT4pLAotICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzM0XzI2Ij5CbHVlPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMTRfMTYiPkluaXRjb2xvcjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MDFfMjYiPkNvbG9yPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MDJfMjYiPlJlZDwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTAzXzI2Ij5HcmVlbjwvQT4pLAorICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTA0XzI2Ij5CbHVlPC9BPikpID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+CisgICAgICA8Yj50aGVuPC9iPgorICAgICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzMxXzE0Ij5Jbml0X0NvbG9yPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwMV8xNCI+SW5pdF9Db2xvcjwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzlfMTMiPkNhbl9DaGFuZ2VfQ29sb3I8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIyN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwOV8xMyI+Q2FuX0NoYW5nZV9Db2xvcjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQm9vbGVhbgogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjEzXzE2Ij5DYW5jaGFuZ2Vjb2xvcjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfQm9vbDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMjlfMTYiPkNhbmNoYW5nZWNvbG9yPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDYW5jaGFuZ2Vjb2xvciwgImNhbl9jaGFuZ2VfY29sb3IiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMTNfMTYiPkNhbmNoYW5nZWNvbG9yPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjdfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+IDxiPnRoZW48L2I+CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIyOV8xNiI+Q2FuY2hhbmdlY29sb3I8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjEwMF80Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gRmFsc2U7CiAgICAgICA8Yj5lbHNlPC9iPgogICAgICAgICAgPGI+cmV0dXJuPC9iPiBUcnVlOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MzlfMTMiPkNhbl9DaGFuZ2VfQ29sb3I8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTA5XzEzIj5DYW5fQ2hhbmdlX0NvbG9yPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMjNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDRfMTQiPkNvbG9yX0NvbnRlbnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjIzXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzQ0XzI5Ij5Db2xvcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMjRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDVfMjkiPlJlZDwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5NV85Ij5SR0JfVmFsdWU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjIyNV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0Nl8yOSI+R3JlZW48L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjI2XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzQ3XzI5Ij5CbHVlPC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPikKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTRfMTQiPkNvbG9yX0NvbnRlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyMzlfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTRfMjkiPkNvbG9yPC9BPjwvc3Bhbj4gOiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNDBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTVfMjkiPlJlZDwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjQxXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTE2XzI5Ij5HcmVlbjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDVfOSI+UkdCX1ZhbHVlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0Ml8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxN18yOSI+Qmx1ZTwvQT48L3NwYW4+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjIyOF8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81Nl8xMiI+Q19TaG9ydDwvQT47CisgICAgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0NF8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT47CiAKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMzBfMTYiPkNvbG9yY29udGVudDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMzBfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzBfMTYiPkNvbG9yPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+OyA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyMzBfNDciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzBfMTYiPlI8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjMwXzUwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjMwXzE2Ij5HPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjIzMF81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIzMF8xNiI+QjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIyOF8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjQ2XzE2Ij5Db2xvcmNvbnRlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNDZfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNDZfMTYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTFfMTIiPkNfU2hvcnQ8L0E+OyA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0Nl80NyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0Nl8xNiI+UjwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0Nl81MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0Nl8xNiI+RzwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0Nl81MyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0Nl8xNiI+QjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0NF8xMiI+Q19TaG9ydF9BY2Nlc3M8L0E+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIENvbG9yY29udGVudCwgImNvbG9yX2NvbnRlbnQiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjM0XzciPlI8L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjM0XzEwIj5HPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjIzNF8xMyI+QjwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU2XzEyIj5DX1Nob3J0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjUwXzciPlI8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNTBfMTAiPkc8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNTBfMTMiPkI8L0E+PC9zcGFuPiA6IDxiPmFsaWFzZWQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjMwXzE2Ij5Db2xvcmNvbnRlbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTZfMTIiPkNfU2hvcnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzQ0XzI5Ij5Db2xvcjwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjM0XzciPlI8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzRfMTAiPkc8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzRfMTMiPkI8L0E+JzxiPkFjY2VzczwvYj4pID0KLSAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNDZfMTYiPkNvbG9yY29udGVudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MV8xMiI+Q19TaG9ydDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTRfMjkiPkNvbG9yPC9BPiksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNTBfNyI+UjwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI1MF8xMCI+RzwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI1MF8xMyI+QjwvQT4nPGI+QWNjZXNzPC9iPikgPQorICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDVfMjkiPlJlZDwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIzNF83Ij5SPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzQ2XzI5Ij5HcmVlbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzRfMTAiPkc8L0E+KTsKLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDdfMjkiPkJsdWU8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIzNF8xMyI+QjwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxNV8yOSI+UmVkPC9BPiAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjUwXzciPlI8L0E+KTsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTZfMjkiPkdyZWVuPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDVfOSI+UkdCX1ZhbHVlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI1MF8xMCI+RzwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxN18yOSI+Qmx1ZTwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjUwXzEzIj5CPC9BPik7CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc0NF8xNCI+Q29sb3JfQ29udGVudDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTRfMTQiPkNvbG9yX0NvbnRlbnQ8L0E+OwogCi08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI0N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1OV8xNCI+U2F2ZV9DdXJzZXNfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyNDdfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTlfMzIiPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzkiPkN1cnNlc19Nb2RlPC9BPikKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjY0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI5XzE0Ij5TYXZlX0N1cnNlc19Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjY0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI5XzMyIj5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Nb2RlPC9BPikKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI0OV8xNiI+RGVmX1Byb2dfTW9kZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNjZfMTYiPkRlZl9Qcm9nX01vZGU8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIERlZl9Qcm9nX01vZGUsICJkZWZfcHJvZ19tb2RlIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjUxXzE2Ij5EZWZfU2hlbGxfTW9kZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNjhfMTYiPkRlZl9TaGVsbF9Nb2RlPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBEZWZfU2hlbGxfTW9kZSwgImRlZl9zaGVsbF9tb2RlIik7CiAKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI1NF83Ij5FcnI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyNzFfNyI+RXJyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+Y2FzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1OV8zMiI+TW9kZTwvQT4gPGI+aXM8L2I+Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzI1Ij5DdXJzZXM8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNTRfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjQ5XzE2Ij5EZWZfUHJvZ19Nb2RlPC9BPjsKLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTZfMzMiPlNoZWxsPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI1NF83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNTFfMTYiPkRlZl9TaGVsbF9Nb2RlPC9BPjsKKyAgICAgIDxiPmNhc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjlfMzIiPk1vZGU8L0E+IDxiPmlzPC9iPgorICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl8yNSI+Q3Vyc2VzPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjcxXzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI2Nl8xNiI+RGVmX1Byb2dfTW9kZTwvQT47CisgICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzMzIj5TaGVsbDwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNzFfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjY4XzE2Ij5EZWZfU2hlbGxfTW9kZTwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmNhc2U8L2I+OwotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNTRfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjcxXzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1OV8xNCI+U2F2ZV9DdXJzZXNfTW9kZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjlfMTQiPlNhdmVfQ3Vyc2VzX01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc2NV8xNCI+UmVzZXRfQ3Vyc2VzX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjY1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzY1XzMzIj5Nb2RlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1Nl85Ij5DdXJzZXNfTW9kZTwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjgyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTM1XzE0Ij5SZXNldF9DdXJzZXNfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI4Ml8zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkzNV8zMyI+TW9kZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl85Ij5DdXJzZXNfTW9kZTwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyNjdfMTYiPlJlc2V0X1Byb2dfTW9kZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyODRfMTYiPlJlc2V0X1Byb2dfTW9kZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUmVzZXRfUHJvZ19Nb2RlLCAicmVzZXRfcHJvZ19tb2RlIik7Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjY5XzE2Ij5SZXNldF9TaGVsbF9Nb2RlPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI4Nl8xNiI+UmVzZXRfU2hlbGxfTW9kZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgUmVzZXRfU2hlbGxfTW9kZSwgInJlc2V0X3NoZWxsX21vZGUiKTsKIAotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjcyXzciPkVycjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI4OV83Ij5FcnI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5jYXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzY1XzMzIj5Nb2RlPC9BPiA8Yj5pczwvYj4KLSAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTZfMjUiPkN1cnNlczwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI3Ml83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNjdfMTYiPlJlc2V0X1Byb2dfTW9kZTwvQT47Ci0gICAgICAgICA8Yj53aGVuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzMzIj5TaGVsbDwvQT4gID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNzJfNyI+RXJyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjY5XzE2Ij5SZXNldF9TaGVsbF9Nb2RlPC9BPjsKKyAgICAgIDxiPmNhc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MzVfMzMiPk1vZGU8L0E+IDxiPmlzPC9iPgorICAgICAgICAgPGI+d2hlbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkyNl8yNSI+Q3Vyc2VzPC9BPiA9Jmd0OyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjg5XzciPkVycjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI4NF8xNiI+UmVzZXRfUHJvZ19Nb2RlPC9BPjsKKyAgICAgICAgIDxiPndoZW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfMzMiPlNoZWxsPC9BPiAgPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI4OV83Ij5FcnI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyODZfMTYiPlJlc2V0X1NoZWxsX01vZGU8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5jYXNlPC9iPjsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjcyXzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI4OV83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjVfMTQiPlJlc2V0X0N1cnNlc19Nb2RlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkzNV8xNCI+UmVzZXRfQ3Vyc2VzX01vZGU8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI4M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc3MV8xNCI+U2F2ZV9UZXJtaW5hbF9TdGF0ZTwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzAwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTQxXzE0Ij5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPjwvc3Bhbj4KICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjI4NV8xNiI+U2F2ZXR0eTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMDJfMTYiPlNhdmV0dHk8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFNhdmV0dHksICJzYXZldHR5Iik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjg1XzE2Ij5TYXZldHR5PC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzAyXzE2Ij5TYXZldHR5PC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzcxXzE0Ij5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk0MV8xNCI+U2F2ZV9UZXJtaW5hbF9TdGF0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMjkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzc2XzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTQ2XzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT48L3NwYW4+CiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIyOTVfMTYiPlJlc2V0dHk8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzEyXzE2Ij5SZXNldHR5PC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBSZXNldHR5LCAicmVzZXR0eSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI5NV8xNiI+UmVzZXR0eTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMxMl8xNiI+UmVzZXR0eTwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc3Nl8xNCI+UmVzZXRfVGVybWluYWxfU3RhdGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTQ2XzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzAzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg5XzE0Ij5SaXBfT2ZmX0xpbmVzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMwM18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4OV8yOSI+TGluZXM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMwNF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5MF8yOSI+UHJvYzwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzgwXzkiPlN0ZHNjcl9Jbml0X1Byb2M8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMyMF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk1OV8xNCI+UmlwX09mZl9MaW5lczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMyMF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk1OV8yOSI+TGluZXM8L0E+PC9zcGFuPiA6IEludGVnZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMjFfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NjBfMjkiPlByb2M8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTUwXzkiPlN0ZHNjcl9Jbml0X1Byb2M8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzA2XzE2Ij5SaXBvZmZsaW5lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMwNl8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMwNl8xNiI+TGluZXM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzA3XzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzA2XzE2Ij5Qcm9jPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4MF85Ij5TdGRzY3JfSW5pdF9Qcm9jPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMyM18xNiI+Umlwb2ZmbGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMyM18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMyM18xNiI+TGluZXM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMjRfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMjNfMTYiPlByb2M8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTUwXzkiPlN0ZHNjcl9Jbml0X1Byb2M8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFJpcG9mZmxpbmUsICJfbmNfcmlwb2ZmbGluZSIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMwNl8xNiI+Umlwb2ZmbGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzg5XzI5Ij5MaW5lczwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzkwXzI5Ij5Qcm9jPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMyM18xNiI+Umlwb2ZmbGluZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTU5XzI5Ij5MaW5lczwvQT4pLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTYwXzI5Ij5Qcm9jPC9BPikgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc4OV8xNCI+UmlwX09mZl9MaW5lczwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NTlfMTQiPlJpcF9PZmZfTGluZXM8L0E+OwogCi0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwMV8xNCI+U2V0X0N1cnNvcl9WaXNpYmlsaXR5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMxNV8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwMV8zNyI+VmlzaWJpbGl0eTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5OF85Ij5DdXJzb3JfVmlzaWJpbGl0eTwvQT4pCisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzMyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTcxXzE0Ij5TZXRfQ3Vyc29yX1Zpc2liaWxpdHk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzMzJfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzFfMzciPlZpc2liaWxpdHk8L0E+PC9zcGFuPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NjhfOSI+Q3Vyc29yX1Zpc2liaWxpdHk8L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzE3XzE2Ij5DdXJzX1NldDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMTdfMTYiPkN1cnM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzM0XzE2Ij5DdXJzX1NldDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMzNF8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMzNF8xNiI+Q3VyczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQ3Vyc19TZXQsICJjdXJzX3NldCIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMjBfNyI+UmVzPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzM3XzciPlJlczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMjBfNyI+UmVzPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzE3XzE2Ij5DdXJzX1NldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3OThfOSI+Q3Vyc29yX1Zpc2liaWxpdHk8L0E+J1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwMV8zNyI+VmlzaWJpbGl0eTwvQT4pKTsKLSAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzIwXzciPlJlczwvQT4gLz0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODAxXzM3Ij5WaXNpYmlsaXR5PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk4XzkiPkN1cnNvcl9WaXNpYmlsaXR5PC9BPidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMjBfNyI+UmVzPC9BPik7CisgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzM3XzciPlJlczwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMzNF8xNiI+Q3Vyc19TZXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTY4XzkiPkN1cnNvcl9WaXNpYmlsaXR5PC9BPidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzFfMzciPlZpc2liaWxpdHk8L0E+KSk7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMzN183Ij5SZXM8L0E+IC89IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk3MV8zNyI+VmlzaWJpbGl0eTwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk2OF85Ij5DdXJzb3JfVmlzaWJpbGl0eTwvQT4nVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzM3XzciPlJlczwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MDFfMTQiPlNldF9DdXJzb3JfVmlzaWJpbGl0eTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzFfMTQiPlNldF9DdXJzb3JfVmlzaWJpbGl0eTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzI4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODA2XzE0Ij5OYXBfTWlsbGlfU2Vjb25kczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzMjhfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MDZfMzMiPk1zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCkKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NzZfMTQiPk5hcF9NaWxsaV9TZWNvbmRzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzQ1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTc2XzMzIj5NczwvQT48L3NwYW4+IDogTmF0dXJhbCkKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjMzMF8xNiI+TmFwbXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzMwXzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzMwXzE2Ij5NczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzNDdfMTYiPk5hcG1zPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzQ3XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzQ3XzE2Ij5NczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgTmFwbXMsICJuYXBtcyIpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMzMF8xNiI+TmFwbXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwNl8zMyI+TXM8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0N18xNiI+TmFwbXM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk3Nl8zMyI+TXM8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwNl8xNCI+TmFwX01pbGxpX1NlY29uZHM8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzM5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPgorICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTc2XzE0Ij5OYXBfTWlsbGlfU2Vjb25kczwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzU1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTBfMTMiPkxpbmVzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT4KICAgIDxiPmlzPC9iPgotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzQxXzciPlJlc3VsdDwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzQxXzciPlJlc3VsdDwvQT4sICJzdGRzY3IiKTsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM1N18xNiI+TElORVNfQXNfRnVuY3Rpb248L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBMSU5FU19Bc19GdW5jdGlvbiwgIkxJTkVTX2FzX2Z1bmN0aW9uIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0MV83Ij5SZXN1bHQ8L0E+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM1N18xNiI+TElORVNfQXNfRnVuY3Rpb248L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUwXzEzIj5MaW5lczwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNDdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4MV8xMyI+Q3VycmVudF9XaW5kb3c8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM2M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUzXzEzIj5Db2x1bW5zPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPgogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNDlfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNDlfNyI+UmVzdWx0PC9BPiwgImN1cnNjciIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzY1XzE2Ij5DT0xTX0FzX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQ09MU19Bc19GdW5jdGlvbiwgIkNPTFNfYXNfZnVuY3Rpb24iKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzQ5XzciPlJlc3VsdDwvQT47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4MV8xMyI+Q3VycmVudF9XaW5kb3c8L0E+OworICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM2NV8xNiI+Q09MU19Bc19GdW5jdGlvbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTNfMTMiPkNvbHVtbnM8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzU1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTJfMTMiPkxpbmVzPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM3MV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU2XzEzIj5UYWJfU2l6ZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gTmF0dXJhbAogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNTdfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzU3XzciPlJlc3VsdDwvQT4sICJMSU5FUyIpOworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzczXzE2Ij5UQUJTSVpFX0FzX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgVEFCU0laRV9Bc19GdW5jdGlvbiwgIlRBQlNJWkVfYXNfZnVuY3Rpb24iKTsKKwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM1N183Ij5SZXN1bHQ8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDEyXzEzIj5MaW5lczwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNzNfMTYiPlRBQlNJWkVfQXNfRnVuY3Rpb248L0E+KTsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU2XzEzIj5UYWJfU2l6ZTwvQT47CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxNV8xMyI+Q29sdW1uczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM4MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTU5XzEzIj5OdW1iZXJfT2ZfQ29sb3JzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBOYXR1cmFsCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM2NV83Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNjVfNyI+UmVzdWx0PC9BPiwgIkNPTFMiKTsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM4Ml8xNiI+Q09MT1JTX0FzX0Z1bmN0aW9uPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5pbnQ7CisgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgQ09MT1JTX0FzX0Z1bmN0aW9uLCAiQ09MT1JTX2FzX2Z1bmN0aW9uIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNjVfNyI+UmVzdWx0PC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxNV8xMyI+Q29sdW1uczwvQT47CisgICAgICA8Yj5yZXR1cm48L2I+IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzODJfMTYiPkNPTE9SU19Bc19GdW5jdGlvbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTlfMTMiPk51bWJlcl9PZl9Db2xvcnM8L0E+OwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzcxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MThfMTMiPlRhYl9TaXplPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBOYXR1cmFsCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzODhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2Ml8xMyI+TnVtYmVyX09mX0NvbG9yX1BhaXJzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBOYXR1cmFsCiAgICA8Yj5pczwvYj4KLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM3M183Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OwotICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNzNfNyI+UmVzdWx0PC9BPiwgIlRBQlNJWkUiKTsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM5MF8xNiI+Q09MT1JfUEFJUlNfQXNfRnVuY3Rpb248L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLmludDsKKyAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDT0xPUl9QQUlSU19Bc19GdW5jdGlvbiwgIkNPTE9SX1BBSVJTX2FzX2Z1bmN0aW9uIik7CiAgICA8Yj5iZWdpbjwvYj4KLSAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM3M183Ij5SZXN1bHQ8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE4XzEzIj5UYWJfU2l6ZTwvQT47Ci0KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzNzlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQyMV8xMyI+TnVtYmVyX09mX0NvbG9yczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbAorICAgICAgPGI+cmV0dXJuPC9iPiBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzkwXzE2Ij5DT0xPUl9QQUlSU19Bc19GdW5jdGlvbjwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjJfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM5Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4NF8xNCI+VHJhbnNmb3JtX0Nvb3JkaW5hdGVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzk3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODVfNyI+VzwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzk4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODZfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzk5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODdfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4OF83Ij5EaXI8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODNfOSI+VHJhbnNmb3JtX0RpcmVjdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4M18zMyI+RnJvbV9TY3JlZW48L0E+KQogICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzODFfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzgxXzciPlJlc3VsdDwvQT4sICJDT0xPUlMiKTsKLSAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+cmV0dXJuPC9iPiBOYXR1cmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzgxXzciPlJlc3VsdDwvQT4pOwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjFfMTMiPk51bWJlcl9PZl9Db2xvcnM8L0E+OwotCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMzg3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjRfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbAotICAgPGI+aXM8L2I+Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzODlfNyI+UmVzdWx0PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzg5XzciPlJlc3VsdDwvQT4sICJDT0xPUl9QQUlSUyIpOwotICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IE5hdHVyYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzODlfNyI+UmVzdWx0PC9BPik7Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQyNF8xMyI+TnVtYmVyX09mX0NvbG9yX1BhaXJzPC9BPjsKLQotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTRfMTQiPlRyYW5zZm9ybV9Db29yZGluYXRlczwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxNV83Ij5XPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjM5OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE2XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIzOTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxN183Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxOF83Ij5EaXI8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODEzXzkiPlRyYW5zZm9ybV9EaXJlY3Rpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTNfMzMiPkZyb21fU2NyZWVuPC9BPikKLSAgIDxiPmlzPC9iPgotICAgICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDAyXzEyIj5JbnRfQWNjZXNzPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPmFjY2VzczwvYj4gPGI+YWxsPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDNfMTYiPlRyYW5zZm9ybTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDNfMTYiPlc8L0E+PC9GT05UPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQwNF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQwM18xNiI+WTwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDNfMTYiPlg8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDJfMTIiPkludF9BY2Nlc3M8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDNfMTYiPkRpcjwvQT48L0ZPTlQ+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MDJfMTIiPkludF9BY2Nlc3M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPiA8Yj5hbGw8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDAzXzE2Ij5UcmFuc2Zvcm08L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MDNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDNfMTYiPlc8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDA0XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAzXzE2Ij5ZPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDA0XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAzXzE2Ij5YPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAyXzEyIj5JbnRfQWNjZXNzPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDNfMTYiPkRpcjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFRyYW5zZm9ybSwgIndtb3VzZV90cmFmbyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDhfNyI+WDwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTdfNyI+Q29sdW1uPC9BPik7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MDlfNyI+WTwvQT48L0ZPTlQ+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTZfNyI+TGluZTwvQT4pOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDEwXzciPkQ8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX0Jvb2w8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjdfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDExXzciPlI8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MDhfNyI+WDwvQT48L3NwYW4+IDogPGI+YWxpYXNlZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODdfNyI+Q29sdW1uPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQwOV83Ij5ZPC9BPjwvc3Bhbj4gOiA8Yj5hbGlhc2VkPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4Nl83Ij5MaW5lPC9BPik7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQxMF83Ij5EPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDk4XzkiPkN1cnNlc19Cb29sPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDExXzciPlI8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxOF83Ij5EaXI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxM180NiI+VG9fU2NyZWVuPC9BPiA8Yj50aGVuPC9iPgorICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODhfNyI+RGlyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODNfNDYiPlRvX1NjcmVlbjwvQT4gPGI+dGhlbjwvYj4KICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MTBfNyI+RDwvQT4gOj0gMTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMV83Ij5SPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAzXzE2Ij5UcmFuc2Zvcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE1XzciPlc8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDA5XzciPlk8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDhfNyI+WDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMF83Ij5EPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMV83Ij5SPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83NV80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMV83Ij5SPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAzXzE2Ij5UcmFuc2Zvcm08L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTg1XzciPlc8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDA5XzciPlk8L0E+JzxiPkFjY2VzczwvYj4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDhfNyI+WDwvQT4nPGI+QWNjZXNzPC9iPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMF83Ij5EPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQxMV83Ij5SPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82OF80Ij5DdXJzZXNfRmFsc2U8L0E+IDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZWxzZTwvYj4KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTZfNyI+TGluZTwvQT4gICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQwOV83Ij5ZPC9BPik7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE3XzciPkNvbHVtbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQwOF83Ij5YPC9BPik7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTg2XzciPkxpbmU8L0E+ICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDlfNyI+WTwvQT4pOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4N183Ij5Db2x1bW48L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MDhfNyI+WDwvQT4pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTRfMTQiPlRyYW5zZm9ybV9Db29yZGluYXRlczwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMV8xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjwvRk9OVD4gPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDI2XzE2Ij5DX1VzZV9EZWZhdWx0X0NvbG9yczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODRfMTQiPlRyYW5zZm9ybV9Db29yZGluYXRlczwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQyNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwM18xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MjZfMTYiPkNfVXNlX0RlZmF1bHRfQ29sb3JzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDX1VzZV9EZWZhdWx0X0NvbG9ycywgInVzZV9kZWZhdWx0X2NvbG9ycyIpOwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDI4XzciPkVycjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MjZfMTYiPkNfVXNlX0RlZmF1bHRfQ29sb3JzPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDI4XzciPkVycjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MjZfMTYiPkNfVXNlX0RlZmF1bHRfQ29sb3JzPC9BPjsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MjhfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl83Ml80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDI4XzciPkVycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMV8xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwM18xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MzZfMTQiPkFzc3VtZV9EZWZhdWx0X0NvbG9yczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MzVfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MzZfMzciPkZvcmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI4NV80Ij5EZWZhdWx0X0NvbG9yPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQzNl8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzN18zNyI+QmFjazwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjg1XzQiPkRlZmF1bHRfQ29sb3I8L0E+KQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQzNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwOF8xNCI+QXNzdW1lX0RlZmF1bHRfQ29sb3JzPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDM1XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDA4XzM3Ij5Gb3JlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDAwXzQiPkRlZmF1bHRfQ29sb3I8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MzZfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMDlfMzciPkJhY2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMDBfNCI+RGVmYXVsdF9Db2xvcjwvQT4pCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0MzhfMTYiPkNfQXNzdW1lX0RlZmF1bHRfQ29sb3JzPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQzOF80MSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQzOF8xNiI+Rm9yZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDM5XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDM4XzE2Ij5CYWNrPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQzOF8xNiI+Q19Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MzhfNDEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MzhfMTYiPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDM5XzQxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDM4XzE2Ij5CYWNrPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPjsKICAgICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDX0Fzc3VtZV9EZWZhdWx0X0NvbG9ycywgImFzc3VtZV9kZWZhdWx0X2NvbG9ycyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NDJfNyI+RXJyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQzOF8xNiI+Q19Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzNl8zNyI+Rm9yZTwvQT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODM3XzM3Ij5CYWNrPC9BPikpOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0NDJfNyI+RXJyPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQzOF8xNiI+Q19Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwOF8zNyI+Rm9yZTwvQT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDA5XzM3Ij5CYWNrPC9BPikpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ0Ml83Ij5FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+IDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NDJfNyI+RXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODM2XzE0Ij5Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ1MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0Nl8xMyI+Q3Vyc2VzX1ZlcnNpb248L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IFN0cmluZworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDA4XzE0Ij5Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+OworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAxOF8xMyI+Q3Vyc2VzX1ZlcnNpb248L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IFN0cmluZwogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDUyXzE2Ij5jdXJzZXNfdmVyc2lvbkM8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IGNoYXJzX3B0cjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1Ml8xNiI+Y3Vyc2VzX3ZlcnNpb25DPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBjaGFyc19wdHI7CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgY3Vyc2VzX3ZlcnNpb25DLCAiY3Vyc2VzX3ZlcnNpb24iKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ1NF83Ij5SZXN1bHQ8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiBjaGFyc19wdHIgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ1Ml8xNiI+Y3Vyc2VzX3ZlcnNpb25DPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDU0XzciPlJlc3VsdDwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IGNoYXJzX3B0ciA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDUyXzE2Ij5jdXJzZXNfdmVyc2lvbkM8L0E+OwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl8xMjFfMTMiPkZpbGxfU3RyaW5nPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ1NF83Ij5SZXN1bHQ8L0E+KTsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg0Nl8xMyI+Q3Vyc2VzX1ZlcnNpb248L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NTlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTlfMTQiPkN1cnNlc19GcmVlX0FsbDwvQT48L0ZPTlQ+IDxiPmlzPC9iPgotICAgICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NjBfMTciPmN1cnNlc19mcmVlYWxsPC9BPjwvRk9OVD47CisgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl85N18xMyI+RmlsbF9TdHJpbmc8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDU0XzciPlJlc3VsdDwvQT4pOworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDE4XzEzIj5DdXJzZXNfVmVyc2lvbjwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAzMV8xNCI+Q3Vyc2VzX0ZyZWVfQWxsPC9BPjwvc3Bhbj4gPGI+aXM8L2I+CisgICAgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDYwXzE3Ij5jdXJzZXNfZnJlZWFsbDwvQT48L3NwYW4+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIGN1cnNlc19mcmVlYWxsLCAiX25jX2ZyZWVhbGwiKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBVc2UgdGhpcyBvbmx5IGZvciB0ZXN0aW5nOiB5b3UgY2Fubm90IHVzZSBjdXJzZXMgYWZ0ZXIgY2FsbGluZyBpdCw8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgc28gaXQgaGFzIHRvIGJlIHRoZSAibGFzdCIgdGhpbmcgZG9uZSBiZWZvcmUgZXhpdGluZyB0aGUgcHJvZ3JhbS48L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyB3aWxsIG5vdCByZWFsbHkgZnJlZSBBTEwgb2YgbWVtb3J5IHVzZWQgYnkgY3Vyc2VzLiAgVGhhdCBpczwvRU0+PC9GT05UPgotICAgICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBiZWNhdXNlIGl0IGNhbm5vdCBmcmVlIHRoZSBtZW1vcnkgdXNlZCBmb3Igc3Rkb3V0J3Mgc2V0YnVmLiAgVGhlPC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIF9uY19mcmVlX2FuZF9leGl0KCkgcHJvY2VkdXJlIGNhbiBkbyB0aGF0LCBidXQgaXQgY2FuIGJlIGludm9rZWQ8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgc2FmZWx5IG9ubHkgZnJvbSBDIC0gYW5kIGFnYWluLCB0aGF0IG9ubHkgYXMgdGhlICJsYXN0IiB0aGluZyBkb25lPC9FTT48L0ZPTlQ+Ci0gICAgICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGJlZm9yZSBleGl0aW5nIHRoZSBwcm9ncmFtLjwvRU0+PC9GT05UPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVXNlIHRoaXMgb25seSBmb3IgdGVzdGluZzogeW91IGNhbm5vdCB1c2UgY3Vyc2VzIGFmdGVyIGNhbGxpbmcgaXQsPC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBzbyBpdCBoYXMgdG8gYmUgdGhlICJsYXN0IiB0aGluZyBkb25lIGJlZm9yZSBleGl0aW5nIHRoZSBwcm9ncmFtLjwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyB3aWxsIG5vdCByZWFsbHkgZnJlZSBBTEwgb2YgbWVtb3J5IHVzZWQgYnkgY3Vyc2VzLiAgVGhhdCBpczwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgYmVjYXVzZSBpdCBjYW5ub3QgZnJlZSB0aGUgbWVtb3J5IHVzZWQgZm9yIHN0ZG91dCdzIHNldGJ1Zi4gIFRoZTwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgX25jX2ZyZWVfYW5kX2V4aXQoKSBwcm9jZWR1cmUgY2FuIGRvIHRoYXQsIGJ1dCBpdCBjYW4gYmUgaW52b2tlZDwvRU0+PC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgc2FmZWx5IG9ubHkgZnJvbSBDIC0gYW5kIGFnYWluLCB0aGF0IG9ubHkgYXMgdGhlICJsYXN0IiB0aGluZyBkb25lPC9FTT48L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBiZWZvcmUgZXhpdGluZyB0aGUgcHJvZ3JhbS48L0VNPjwvc3Bhbj4KICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NjBfMTciPmN1cnNlc19mcmVlYWxsPC9BPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg1OV8xNCI+Q3Vyc2VzX0ZyZWVfQWxsPC9BPjsKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NzNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTFfMTMiPlVzZV9FeHRlbmRlZF9OYW1lczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NzNfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTFfMzMiPkVuYWJsZTwvQT48L0ZPTlQ+IDogQm9vbGVhbikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMzFfMTQiPkN1cnNlc19GcmVlX0FsbDwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDczXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDIzXzEzIj5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0NzNfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMjNfMzMiPkVuYWJsZTwvQT48L3NwYW4+IDogQm9vbGVhbikgPGI+cmV0dXJuPC9iPiBCb29sZWFuCiAgICA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NzVfMTYiPnVzZV9leHRlbmRlZF9uYW1lc0M8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDc1XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDc1XzE2Ij5lPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKKyAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ3NV8xNiI+dXNlX2V4dGVuZGVkX25hbWVzQzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ3NV8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ3NV8xNiI+ZTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgdXNlX2V4dGVuZGVkX25hbWVzQywgInVzZV9leHRlbmRlZF9uYW1lcyIpOwogCi0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0NzhfNyI+UmVzPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4gOj0KLSAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NzVfMTYiPnVzZV9leHRlbmRlZF9uYW1lc0M8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiAoQm9vbGVhbidQb3MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NTFfMzMiPkVuYWJsZTwvQT4pKSk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ3OF83Ij5SZXM8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiA6PQorICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ3NV8xNiI+dXNlX2V4dGVuZGVkX25hbWVzQzwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwOThfOSI+Q3Vyc2VzX0Jvb2w8L0E+IChCb29sZWFuJ1BvcyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAyM18zMyI+RW5hYmxlPC9BPikpKTsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NzhfNyI+UmVzPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81NV8xMiI+Q19JbnQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI3XzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPikgPGI+dGhlbjwvYj4KKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDc4XzciPlJlczwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjEwMF80Ij5DdXJzZXNfQm9vbF9GYWxzZTwvQT4pIDxiPnRoZW48L2I+CiAgICAgICAgICA8Yj5yZXR1cm48L2I+IEZhbHNlOwogICAgICAgPGI+ZWxzZTwvYj4KICAgICAgICAgIDxiPnJldHVybjwvYj4gVHJ1ZTsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODUxXzEzIj5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0ODhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NjdfMTQiPlNjcmVlbl9EdW1wX1RvX0ZpbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDg4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODY3XzM1Ij5GaWxlbmFtZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZykKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAyM18xMyI+VXNlX0V4dGVuZGVkX05hbWVzPC9BPjsKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDg4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDM5XzE0Ij5TY3JlZW5fRHVtcF9Ub19GaWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDg4XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDM5XzM1Ij5GaWxlbmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNDkwXzE2Ij5zY3JfZHVtcDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0OTBfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0OTBfMTYiPmY8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0OTBfMTYiPnNjcl9kdW1wPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDkwXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDkwXzE2Ij5mPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHNjcl9kdW1wLCAic2NyX2R1bXAiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjQ5Ml83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg2N18zNSI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI0OTNfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ5Ml83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAzOV8zNSI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ5M183Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg2N18zNSI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDkyXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0OTNfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ5MF8xNiI+c2NyX2R1bXA8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDkyXzciPlR4dDwvQT4pIDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAzOV8zNSI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDkyXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0OTNfNyI+TGVuZ3RoPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ5MF8xNiI+c2NyX2R1bXA8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDkyXzciPlR4dDwvQT4pIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NjdfMTQiPlNjcmVlbl9EdW1wX1RvX0ZpbGU8L0E+OworICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDM5XzE0Ij5TY3JlZW5fRHVtcF9Ub19GaWxlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NzFfMTQiPlNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MDFfNDAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NzFfNDAiPkZpbGVuYW1lPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUwMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0M18xNCI+U2NyZWVuX1Jlc3RvcmVfRnJvbV9GaWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTAxXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDQzXzQwIj5GaWxlbmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTAzXzE2Ij5zY3JfcmVzdG9yZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MDNfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MDNfMTYiPmY8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MDNfMTYiPnNjcl9yZXN0b3JlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTAzXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTAzXzE2Ij5mPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHNjcl9yZXN0b3JlLCAic2NyX3Jlc3RvcmUiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUwNV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3MV80MCI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MDZfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUwNV83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0M180MCI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUwNl83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3MV80MCI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTA1XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MDZfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUwM18xNiI+c2NyX3Jlc3RvcmU8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTA1XzciPlR4dDwvQT4pICA8Yj50aGVuPC9iPgotICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKKyAgICAgIFRvX0MgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwNDNfNDAiPkZpbGVuYW1lPC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUwNV83Ij5UeHQ8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTA2XzciPkxlbmd0aDwvQT4pOworICAgICAgPGI+aWY8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl82NV80Ij5DdXJzZXNfRXJyPC9BPiA9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MDNfMTYiPnNjcl9yZXN0b3JlPC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUwNV83Ij5UeHQ8L0E+KSAgPGI+dGhlbjwvYj4KKyAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MjFfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CiAgICAgICA8Yj5lbmQ8L2I+IDxiPmlmPC9iPjsKLSAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3MV8xNCI+U2NyZWVuX1Jlc3RvcmVfRnJvbV9GaWxlPC9BPjsKKyAgIDxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0M18xNCI+U2NyZWVuX1Jlc3RvcmVfRnJvbV9GaWxlPC9BPjsKIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NzVfMTQiPlNjcmVlbl9Jbml0X0Zyb21fRmlsZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MTRfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NzVfMzciPkZpbGVuYW1lPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gU3RyaW5nKQorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUxNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0N18xNCI+U2NyZWVuX0luaXRfRnJvbV9GaWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTE0XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDQ3XzM3Ij5GaWxlbmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKQogICAgPGI+aXM8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTE2XzE2Ij5zY3JfaW5pdDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MTZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MTZfMTYiPmY8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MTZfMTYiPnNjcl9pbml0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTE2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE2XzE2Ij5mPC9BPjwvc3Bhbj4gOiBjaGFyX2FycmF5KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHNjcl9pbml0LCAic2NyX2luaXQiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUxOF83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3NV8zNyI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MTlfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUxOF83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0N18zNyI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUxOV83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3NV8zNyI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE4XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MTlfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNl8xNiI+c2NyX2luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE4XzciPlR4dDwvQT4pIDxiPnRoZW48L2I+Ci0gICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzgzXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OworICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA0N18zNyI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE4XzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MTlfNyI+TGVuZ3RoPC9BPik7CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzY1XzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNl8xNiI+c2NyX2luaXQ8L0E+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE4XzciPlR4dDwvQT4pIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NzVfMTQiPlNjcmVlbl9Jbml0X0Zyb21fRmlsZTwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwNDdfMTQiPlNjcmVlbl9Jbml0X0Zyb21fRmlsZTwvQT47CiAKLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTI3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODc5XzE0Ij5TY3JlZW5fU2V0X0ZpbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTI3XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODc5XzMxIj5GaWxlbmFtZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZykKKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwNTFfMTQiPlNjcmVlbl9TZXRfRmlsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUyN18zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA1MV8zMSI+RmlsZW5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZykKICAgIDxiPmlzPC9iPgotICAgICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUyOV8xNiI+c2NyX3NldDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MjlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MjlfMTYiPmY8L0E+PC9GT05UPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICAgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MjlfMTYiPnNjcl9zZXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1MjlfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MjlfMTYiPmY8L0E+PC9zcGFuPiA6IGNoYXJfYXJyYXkpIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzUwXzEyIj5DX0ludDwvQT47CiAgICAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgc2NyX3NldCwgInNjcl9zZXQiKTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjUzMV83Ij5UeHQ8L0E+PC9GT05UPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3OV8zMSI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1MzJfNyI+TGVuZ3RoPC9BPjwvRk9OVD4gOiBzaXplX3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUzMV83Ij5UeHQ8L0E+PC9zcGFuPiAgICA6IGNoYXJfYXJyYXkgKDAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA1MV8zMSI+RmlsZW5hbWU8L0E+J0xlbmd0aCk7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUzMl83Ij5MZW5ndGg8L0E+PC9zcGFuPiA6IHNpemVfdDsKICAgIDxiPmJlZ2luPC9iPgotICAgICAgVG9fQyAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg3OV8zMSI+RmlsZW5hbWU8L0E+LCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTMxXzciPlR4dDwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MzJfNyI+TGVuZ3RoPC9BPik7Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzcyXzQiPkN1cnNlc19FcnI8L0E+ID0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUyOV8xNiI+c2NyX3NldDwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MzFfNyI+VHh0PC9BPikgPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICBUb19DICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDUxXzMxIj5GaWxlbmFtZTwvQT4sIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MzFfNyI+VHh0PC9BPiwgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUzMl83Ij5MZW5ndGg8L0E+KTsKKyAgICAgIDxiPmlmPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4gPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTI5XzE2Ij5zY3Jfc2V0PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUzMV83Ij5UeHQ8L0E+KSA8Yj50aGVuPC9iPgorICAgICAgICAgPGI+cmFpc2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjsKICAgICAgIDxiPmVuZDwvYj4gPGI+aWY8L2I+OwotICAgPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODc5XzE0Ij5TY3JlZW5fU2V0X0ZpbGU8L0E+OwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1NDBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTFfMTQiPlJlc2l6ZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1NDBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTFfMjIiPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU0MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxMl8yMiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU0Ml8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxM18yMiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+KSA8Yj5pczwvYj4KLSAgICAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI1NDNfMTYiPndyZXNpemU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTQzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTQzXzE2Ij53aW48L0E+PC9GT05UPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yNTQ0XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTQzXzE2Ij5saW5lczwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjU0NV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjU0M18xNiI+Y29sdW1uczwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy1hdXhfX2Fkcy5odG0jcmVmXzU1XzEyIj5DX0ludDwvQT47CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwNTFfMTQiPlNjcmVlbl9TZXRfRmlsZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU0MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4M18xNCI+UmVzaXplPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTQwXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDgzXzIyIj5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU0MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4NF8yMiI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTQyXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDg1XzIyIj5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pIDxiPmlzPC9iPgorICAgICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTQzXzE2Ij53cmVzaXplPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTQzXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTQzXzE2Ij53aW48L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1NDRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDNfMTYiPmxpbmVzPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1NDVfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDNfMTYiPmNvbHVtbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMtYXV4X19hZHMuaHRtI3JlZl81MF8xMiI+Q19JbnQ8L0E+OwogICAgICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIHdyZXNpemUpOwogICAgPGI+YmVnaW48L2I+Ci0gICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjU0M18xNiI+d3Jlc2l6ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTFfMjIiPldpbjwvQT4sCi0gICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxMl8yMiI+TnVtYmVyX09mX0xpbmVzPC9BPiksCi0gICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTVfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxM18yMiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNzJfNCI+Q3Vyc2VzX0VycjwvQT4gPGI+dGhlbjwvYj4KLSAgICAgICAgIDxiPnJhaXNlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODNfNCI+Q3Vyc2VzX0V4Y2VwdGlvbjwvQT47CisgICAgICA8Yj5pZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjU0M18xNiI+d3Jlc2l6ZTwvQT4gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwODNfMjIiPldpbjwvQT4sCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4NF8yMiI+TnVtYmVyX09mX0xpbmVzPC9BPiksCisgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNTBfMTIiPkNfSW50PC9BPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4NV8yMiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+KSkgPSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLWF1eF9fYWRzLmh0bSNyZWZfNjVfNCI+Q3Vyc2VzX0VycjwvQT4KKyAgICAgIDxiPnRoZW48L2I+CisgICAgICAgICA8Yj5yYWlzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTIxXzQiPkN1cnNlc19FeGNlcHRpb248L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5pZjwvYj47Ci0gICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MTFfMTQiPlJlc2l6ZTwvQT47Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+CisgICA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwODNfMTQiPlJlc2l6ZTwvQT47Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgogCi08Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OV8yOCI+Q3Vyc2VzPC9BPjsKKzxiPmVuZDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3XzI4Ij5DdXJzZXM8L0E+OwogPC9QUkU+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0KaW5kZXggNGNjMTE5NC4uNzI3Y2M4MyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0KKysrIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0KQEAgLTEsMTkzNSArMSwyMTIwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkczwvVElUTEU+PC9IRUFEPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+dGVybWluYWxfaW50ZXJmYWNlLWN1cnNlcy5hZHM8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorKi5jb21tZW50IHsKKwljb2xvcjogZ3JlZW47Cit9CisqLnN5bWJvbCB7CisJY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L0hFQUQ+CiA8Qk9EWT4KLTxIUj48RElWIEFMSUdOPSJjZW50ZXIiPjxIMT4gRmlsZSA6IHRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXMuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzLmFkcyA8L0gxPjwvRElWPjxIUj4KIDxQUkU+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXMgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyBQIEUgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVmVyc2lvbiBDb250cm9sOjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBAUmV2aXNpb246IDEuNDEgQDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBARGF0ZTogMjAwNy8wNS8wNSAyMDozMzo1MiBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEJpbmRpbmcgVmVyc2lvbiAwMS4wMDwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBjdXJzZXMgYmluZGluZy48L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBtb2R1bGUgaXMgZ2VuZXJhdGVkLiBQbGVhc2UgZG9uJ3QgY2hhbmdlIGl0IG1hbnVhbGx5ITwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSdW4gdGhlIGdlbmVyYXRvciBpbnN0ZWFkLjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSJodHRwOi8vd3d3LmduYXQuY29tIj5HTkFUPC9BPiBuY3Vyc2VzIEJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcyAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgUCBFIEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTY8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gQ29udHJvbDo8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEBSZXZpc2lvbjogMS40NyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBARGF0ZTogMjAxNC8wNS8yNCAyMTozMTo1NyBAPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBCaW5kaW5nIFZlcnNpb24gMDEuMDA8L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiA8Yj53aXRoPC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50czsKLTxiPndpdGg8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DOyAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgV2UgbmVlZCB0aGlzIGZvciBzb21lIGFzc2VydGlvbnMuPC9FTT48L0ZPTlQ+Cis8Yj53aXRoPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQzsgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBXZSBuZWVkIHRoaXMgZm9yIHNvbWUgYXNzZXJ0aW9ucy48L0VNPjwvc3Bhbj4KIAotPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDlfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwXzMzIj5DdXJzZXM8L0E+PC9GT05UPiA8Yj5pczwvYj4KLSAgIDxiPnByYWdtYTwvYj4gUHJlZWxhYm9yYXRlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT4pOwotICAgPGI+cHJhZ21hPC9iPiBMaW5rZXJfT3B0aW9ucyAoIi1sbmN1cnNlc3ciKTsKKzxiPndpdGg8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTNfNCI+TkNfTWFqb3JfVmVyc2lvbjwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDo9IDU7IDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTWFqb3IgdmVyc2lvbiBvZiB0aGUgbGlicmFyeTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NF80Ij5OQ19NaW5vcl9WZXJzaW9uPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gOj0gNjsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBNaW5vciB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1XzQiPk5DX1ZlcnNpb248L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiBTdHJpbmcgOj0gIjUuNiI7ICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFZlcnNpb24gb2YgbGlicmFyeTwvRU0+PC9GT05UPgorPGI+cGFja2FnZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtI3JlZl80Ml85Ij5UZXJtaW5hbF9JbnRlcmZhY2U8L0E+LjxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N18yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTBfMzMiPkN1cnNlczwvQT48L3NwYW4+IDxiPmlzPC9iPgorICAgPGI+cHJhZ21hPC9iPiBQcmVlbGFib3JhdGUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80N18yOCI+Q3Vyc2VzPC9BPik7CisgICA8Yj5wcmFnbWE8L2I+IExpbmtlcl9PcHRpb25zICgiLWxuY3Vyc2VzIiAmYW1wOyA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzlfNCI+REZUX0FSR19TVUZGSVg8L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81N185Ij5XaW5kb3c8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cHJpdmF0ZTwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4XzQiPk51bGxfV2luZG93PC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MV80Ij5NYWpvcl9WZXJzaW9uPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMV80Ij5OQ1VSU0VTX1ZFUlNJT05fTUFKT1I8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzQiPk1pbm9yX1ZlcnNpb248L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyXzQiPk5DVVJTRVNfVkVSU0lPTl9NSU5PUjwvQT47CisgICBOQ19WZXJzaW9uIDogU3RyaW5nIDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjNfNCI+VmVyc2lvbjwvQT47CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT48L0ZPTlQ+ICAgPGI+aXM8L2I+IDxiPm5ldzwvYj4gTmF0dXJhbDsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBsaW5lIGNvb3JkaW5hdGU8L0VNPjwvRk9OVD4KLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gTmF0dXJhbDsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBjb2x1bW4gY29vcmRpbmF0ZTwvRU0+PC9GT05UPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzkiPldpbmRvdzwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5wcml2YXRlPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CiAKLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+PC9GT05UPiAgIDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAgIDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+J0xhc3Q7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFR5cGUgdG8gY291bnQgbGluZXMuIFdlIGRvIG5vdCBhbGxvdyBudWxsIHdpbmRvd3MsIHNvIG11c3QgYmUgcG9zaXRpdmU8L0VNPjwvRk9OVD4KLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4nTGFzdDsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVHlwZSB0byBjb3VudCBjb2x1bW5zLiBXZSBkbyBub3QgYWxsb3cgbnVsbCB3aW5kb3dzLCBzbyBtdXN0IGJlIHBvc2l0aXZlPC9FTT48L0ZPTlQ+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT48L3NwYW4+ICAgPGI+aXM8L2I+IDxiPm5ldzwvYj4gSW50ZWdlcjsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgbGluZSBjb29yZGluYXRlPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPm5ldzwvYj4gSW50ZWdlcjsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgY29sdW1uIGNvb3JkaW5hdGU8L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82OF85Ij5LZXlfQ29kZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IEludGVnZXI7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoYXQgaXMgYW55dGhpbmcgaW5jbHVkaW5nIHJlYWwgY2hhcmFjdGVycywgc3BlY2lhbCBrZXlzIGFuZCBsb2dpY2FsPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHJlcXVlc3QgY29kZXMuPC9FTT48L0ZPTlQ+CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+PC9zcGFuPiAgIDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiAgIDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+J0xhc3Q7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUeXBlIHRvIGNvdW50IGxpbmVzLiBXZSBkbyBub3QgYWxsb3cgbnVsbCB3aW5kb3dzLCBzbyBtdXN0IGJlIHBvc2l0aXZlPC9FTT48L3NwYW4+CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT48L3NwYW4+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDxiPnJhbmdlPC9iPiAxIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4nTGFzdDsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFR5cGUgdG8gY291bnQgY29sdW1ucy4gV2UgZG8gbm90IGFsbG93IG51bGwgd2luZG93cywgc28gbXVzdCBiZSBwb3NpdGl2ZTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEZJWE1FOiBUaGUgIi0xIiBzaG91bGQgYmUgQ3Vyc2VzX0VycjwvRU0+PC9GT05UPgotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OF85Ij5LZXlfQ29kZTwvQT4gPGI+cmFuZ2U8L2I+IC0xIC4uIDgjNzc3IzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBhcmUgdGhlIGNvZGVzIHRoYXQgcG90ZW50aWFsbHkgcmVwcmVzZW50IGEgcmVhbCBrZXlzdHJva2UuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5vdCBhbGwgY29kZXMgbWF5IGJlIHBvc3NpYmxlIG9uIGEgc3BlY2lmaWMgdGVybWluYWwuIFRvIGNoZWNrIHRoZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBhdmFpbGFiaWxpdHkgb2YgYSBzcGVjaWFsIGtleSwgdGhlIEhhc19LZXkgZnVuY3Rpb24gaXMgcHJvdmlkZWQuPC9FTT48L0ZPTlQ+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjZfOSI+S2V5X0NvZGU8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBJbnRlZ2VyOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhhdCBpcyBhbnl0aGluZyBpbmNsdWRpbmcgcmVhbCBjaGFyYWN0ZXJzLCBzcGVjaWFsIGtleXMgYW5kIGxvZ2ljYWw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlcXVlc3QgY29kZXMuPC9FTT48L3NwYW4+CiAKLSAgIDxiPnN1YnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+Ci0gICAgIDxiPnJhbmdlPC9iPiA4IzQwMCMgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+J0xhc3Q7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFR5cGUgZm9yIGEgZnVuY3Rpb24tIG9yIHNwZWNpYWwga2V5IG51bWJlcjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRklYTUU6IFRoZSAiLTEiIHNob3VsZCBiZSBDdXJzZXNfRXJyPC9FTT48L3NwYW4+CisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjZfOSI+S2V5X0NvZGU8L0E+IDxiPnJhbmdlPC9iPiAtMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzk5XzQiPktFWV9NQVg8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBhcmUgdGhlIGNvZGVzIHRoYXQgcG90ZW50aWFsbHkgcmVwcmVzZW50IGEgcmVhbCBrZXlzdHJva2UuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgYWxsIGNvZGVzIG1heSBiZSBwb3NzaWJsZSBvbiBhIHNwZWNpZmljIHRlcm1pbmFsLiBUbyBjaGVjayB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGF2YWlsYWJpbGl0eSBvZiBhIHNwZWNpYWwga2V5LCB0aGUgSGFzX0tleSBmdW5jdGlvbiBpcyBwcm92aWRlZC48L0VNPjwvc3Bhbj4KIAotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84Ml8xMiI+Tm9ybWFsX0tleV9Db2RlPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczXzEyIj5SZWFsX0tleV9Db2RlPC9BPiA8Yj5yYW5nZTwvYj4KKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4KKyAgICAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzk4XzQiPktFWV9NSU48L0E+IC0gMSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4nTGFzdDsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFR5cGUgZm9yIGEgZnVuY3Rpb24tIG9yIHNwZWNpYWwga2V5IG51bWJlcjwvRU0+PC9zcGFuPgorCisgICA8Yj5zdWJ0eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODBfMTIiPk5vcm1hbF9LZXlfQ29kZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4gPGI+cmFuZ2U8L2I+CiAgICAgIENoYXJhY3RlcidQb3MgKENoYXJhY3RlcidGaXJzdCkgLi4gQ2hhcmFjdGVyJ1BvcyAoQ2hhcmFjdGVyJ0xhc3QpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGlzIGFyZSB0aGUgY29kZXMgZm9yIHJlZ3VsYXIgKGluY2wuIG5vbi1ncmFwaGljYWwpIGNoYXJhY3RlcnMuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGFyZSB0aGUgY29kZXMgZm9yIHJlZ3VsYXIgKGluY2wuIG5vbi1ncmFwaGljYWwpIGNoYXJhY3RlcnMuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQ29uc3RhbnRzIGZvciBmdW5jdGlvbi0gYW5kIHNwZWNpYWwga2V5czwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg4XzQiPktleV9Ob25lPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5XzQiPktleV9Db2RlX1llczwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwXzQiPktleV9NaW48L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxXzQiPktleV9CcmVhazwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkyXzQiPktleV9DdXJzb3JfRG93bjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzXzQiPktleV9DdXJzb3JfVXA8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwMyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk0XzQiPktleV9DdXJzb3JfTGVmdDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwNCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1XzQiPktleV9DdXJzb3JfUmlnaHQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwNSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk2XzQiPktleV9Ib21lPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwNiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk3XzQiPktleV9CYWNrc3BhY2U8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQwNyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4XzQiPktleV9GMDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQxMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5XzQiPktleV9GMTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQxMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMF80Ij5LZXlfRjI8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MTIjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDFfNCI+S2V5X0YzPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDEzIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyXzQiPktleV9GNDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQxNCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwM180Ij5LZXlfRjU8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MTUjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDRfNCI+S2V5X0Y2PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDE2IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1XzQiPktleV9GNzwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQxNyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNl80Ij5LZXlfRjg8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MjAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDdfNCI+S2V5X0Y5PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDIxIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4XzQiPktleV9GMTA8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQyMiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwOV80Ij5LZXlfRjExPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MjMjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTBfNCI+S2V5X0YxMjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDI0IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTExXzQiPktleV9GMTM8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQyNSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMl80Ij5LZXlfRjE0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MjYjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTNfNCI+S2V5X0YxNTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDI3IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0XzQiPktleV9GMTY8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQzMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNV80Ij5LZXlfRjE3PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MzEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTZfNCI+S2V5X0YxODwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDMyIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE3XzQiPktleV9GMTk8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQzMyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExOF80Ij5LZXlfRjIwPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MzQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTlfNCI+S2V5X0YyMTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDM1IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIwXzQiPktleV9GMjI8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzQzNiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMV80Ij5LZXlfRjIzPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM0MzcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjJfNCI+S2V5X0YyNDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNDQwIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzXzQiPktleV9EZWxldGVfTGluZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUxMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNF80Ij5LZXlfSW5zZXJ0X0xpbmU8L0E+PC9GT05UPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MTEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjVfNCI+S2V5X0RlbGV0ZV9DaGFyPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTEyIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2XzQiPktleV9JbnNlcnRfQ2hhcjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUxMyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyN180Ij5LZXlfRXhpdF9JbnNlcnRfTW9kZTwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MTQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjhfNCI+S2V5X0NsZWFyX1NjcmVlbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTE1IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5XzQiPktleV9DbGVhcl9FbmRfT2ZfU2NyZWVuPC9BPjwvRk9OVD4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUxNiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMF80Ij5LZXlfQ2xlYXJfRW5kX09mX0xpbmU8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MTcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzFfNCI+S2V5X1Njcm9sbF8xX0ZvcndhcmQ8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTIwIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMyXzQiPktleV9TY3JvbGxfMV9CYWNrd2FyZDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUyMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzM180Ij5LZXlfTmV4dF9QYWdlPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MjIjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzRfNCI+S2V5X1ByZXZpb3VzX1BhZ2U8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTIzIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM1XzQiPktleV9TZXRfVGFiPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUyNCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNl80Ij5LZXlfQ2xlYXJfVGFiPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MjUjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzdfNCI+S2V5X0NsZWFyX0FsbF9UYWJzPC9BPjwvRk9OVD4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTI2IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4XzQiPktleV9FbnRlcl9Pcl9TZW5kPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUyNyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOV80Ij5LZXlfU29mdF9SZXNldDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MzAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDBfNCI+S2V5X1Jlc2V0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTMxIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQxXzQiPktleV9QcmludDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUzMiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0Ml80Ij5LZXlfQm90dG9tPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MzMjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDNfNCI+S2V5X1VwcGVyX0xlZnRfT2ZfS2V5cGFkPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTM0IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ0XzQiPktleV9VcHBlcl9SaWdodF9PZl9LZXlwYWQ8L0E+PC9GT05UPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzUzNSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NV80Ij5LZXlfQ2VudGVyX09mX0tleXBhZDwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1MzYjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDZfNCI+S2V5X0xvd2VyX0xlZnRfT2ZfS2V5cGFkPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTM3IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ3XzQiPktleV9Mb3dlcl9SaWdodF9PZl9LZXlwYWQ8L0E+PC9GT05UPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU0MCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OF80Ij5LZXlfQmFja19UYWI8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NDEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDlfNCI+S2V5X0JlZ2lubmluZzwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTQyIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwXzQiPktleV9DYW5jZWw8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU0MyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MV80Ij5LZXlfQ2xvc2U8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NDQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTJfNCI+S2V5X0NvbW1hbmQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTQ1IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUzXzQiPktleV9Db3B5PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU0NiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NF80Ij5LZXlfQ3JlYXRlPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NDcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTVfNCI+S2V5X0VuZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTUwIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU2XzQiPktleV9FeGl0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU1MSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1N180Ij5LZXlfRmluZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NTIjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNThfNCI+S2V5X0hlbHA8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTUzIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU5XzQiPktleV9NYXJrPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU1NCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MF80Ij5LZXlfTWVzc2FnZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NTUjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjFfNCI+S2V5X01vdmU8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTU2IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyXzQiPktleV9OZXh0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU1NyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2M180Ij5LZXlfT3BlbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NjAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjRfNCI+S2V5X09wdGlvbnM8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTYxIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY1XzQiPktleV9QcmV2aW91czwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU2MiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2Nl80Ij5LZXlfUmVkbzwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NjMjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjdfNCI+S2V5X1JlZmVyZW5jZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTY0IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY4XzQiPktleV9SZWZyZXNoPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU2NSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2OV80Ij5LZXlfUmVwbGFjZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NjYjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzBfNCI+S2V5X1Jlc3RhcnQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTY3IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxXzQiPktleV9SZXN1bWU8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU3MCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3Ml80Ij5LZXlfU2F2ZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NzEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzNfNCI+S2V5X1NoaWZ0X0JlZ2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTcyIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc0XzQiPktleV9TaGlmdF9DYW5jZWw8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU3MyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NV80Ij5LZXlfU2hpZnRfQ29tbWFuZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NzQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzZfNCI+S2V5X1NoaWZ0X0NvcHk8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNTc1IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3XzQiPktleV9TaGlmdF9DcmVhdGU8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzU3NiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OF80Ij5LZXlfU2hpZnRfRGVsZXRlX0NoYXI8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM1NzcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzlfNCI+S2V5X1NoaWZ0X0RlbGV0ZV9MaW5lPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjAwIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgwXzQiPktleV9TZWxlY3Q8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYwMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MV80Ij5LZXlfU2hpZnRfRW5kPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MDIjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODJfNCI+S2V5X1NoaWZ0X0NsZWFyX0VuZF9PZl9MaW5lPC9BPjwvRk9OVD4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjAzIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgzXzQiPktleV9TaGlmdF9FeGl0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYwNCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NF80Ij5LZXlfU2hpZnRfRmluZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MDUjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODVfNCI+S2V5X1NoaWZ0X0hlbHA8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjA2IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg2XzQiPktleV9TaGlmdF9Ib21lPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYwNyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4N180Ij5LZXlfU2hpZnRfSW5zZXJ0X0NoYXI8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MTAjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODhfNCI+S2V5X1NoaWZ0X0N1cnNvcl9MZWZ0PC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjExIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg5XzQiPktleV9TaGlmdF9NZXNzYWdlPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYxMiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MF80Ij5LZXlfU2hpZnRfTW92ZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MTMjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTFfNCI+S2V5X1NoaWZ0X05leHRfUGFnZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjE0IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTkyXzQiPktleV9TaGlmdF9PcHRpb25zPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYxNSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5M180Ij5LZXlfU2hpZnRfUHJldmlvdXNfUGFnZTwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MTYjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTRfNCI+S2V5X1NoaWZ0X1ByaW50PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjE3IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk1XzQiPktleV9TaGlmdF9SZWRvPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYyMCM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5Nl80Ij5LZXlfU2hpZnRfUmVwbGFjZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MjEjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTdfNCI+S2V5X1NoaWZ0X0N1cnNvcl9SaWdodDwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjIyIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTk4XzQiPktleV9TaGlmdF9SZXN1bWU8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYyMyM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5OV80Ij5LZXlfU2hpZnRfU2F2ZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MjQjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDBfNCI+S2V5X1NoaWZ0X1N1c3BlbmQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjI1IzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjAxXzQiPktleV9TaGlmdF9VbmRvPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYyNiM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwMl80Ij5LZXlfU3VzcGVuZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MjcjOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDNfNCI+S2V5X1VuZG88L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDo9IDgjNjMwIzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjA0XzQiPktleV9Nb3VzZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA6PSA4IzYzMSM7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzIwNV80Ij5LZXlfUmVzaXplPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gOj0gOCM2MzIjOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRm9yIHRob3NlIHdobyBsaWtlIHRvIHVzZSB0aGUgb3JpZ2luYWwga2V5IG5hbWVzIHdlIHByb2R1Y2UgdGhlbSB3ZXJlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGV5IGRpZmZlciBmcm9tIHRoZSBvcmlnaW5hbC48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMDdfNCI+S2V5X01heDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+Ci0gICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPidMYXN0OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQ29uc3RhbnRzIGZvciBmdW5jdGlvbi0gYW5kIHNwZWNpYWwga2V5czwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg4XzQiPktleV9Ob25lPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzk4XzQiPktFWV9NSU48L0E+IC0gMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MF80Ij5LZXlfTWluPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl85OF80Ij5LRVlfTUlOPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml80Ij5LZXlfQnJlYWs8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMDRfNCI+S0VZX0JSRUFLPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NF80Ij5LRVlfRE9XTjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMDVfNCI+S0VZX0RPV048L0E+OworICAgS2V5X0N1cnNvcl9Eb3duICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0XzQiPktFWV9ET1dOPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85N180Ij5LRVlfVVA8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMDZfNCI+S0VZX1VQPC9BPjsKKyAgIEtleV9DdXJzb3JfVXAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85N180Ij5LRVlfVVA8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMF80Ij5LRVlfTEVGVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMDdfNCI+S0VZX0xFRlQ8L0E+OworICAgS2V5X0N1cnNvcl9MZWZ0ICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMF80Ij5LRVlfTEVGVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAzXzQiPktFWV9SSUdIVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEwOF80Ij5LRVlfUklHSFQ8L0E+OworICAgS2V5X0N1cnNvcl9SaWdodCAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwM180Ij5LRVlfUklHSFQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNl80Ij5LZXlfSG9tZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMDlfNCI+S0VZX0hPTUU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOF80Ij5LZXlfQmFja3NwYWNlPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMTBfNCI+S0VZX0JBQ0tTUEFDRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwXzQiPktleV9GMDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzExMV80Ij5LRVlfRjA8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMl80Ij5LZXlfRjE8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMTJfNCI+S0VZX0YxPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTRfNCI+S2V5X0YyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTEzXzQiPktFWV9GMjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2XzQiPktleV9GMzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzExNF80Ij5LRVlfRjM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOF80Ij5LZXlfRjQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMTVfNCI+S0VZX0Y0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjBfNCI+S2V5X0Y1PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTE2XzQiPktFWV9GNTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIyXzQiPktleV9GNjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzExN180Ij5LRVlfRjY8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNF80Ij5LZXlfRjc8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMThfNCI+S0VZX0Y3PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjZfNCI+S2V5X0Y4PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTE5XzQiPktFWV9GODwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4XzQiPktleV9GOTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEyMF80Ij5LRVlfRjk8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMF80Ij5LZXlfRjEwPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMjFfNCI+S0VZX0YxMDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMyXzQiPktleV9GMTE8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEyMl80Ij5LRVlfRjExPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzRfNCI+S2V5X0YxMjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTIzXzQiPktFWV9GMTI8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNl80Ij5LZXlfRjEzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMjRfNCI+S0VZX0YxMzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4XzQiPktleV9GMTQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEyNV80Ij5LRVlfRjE0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDBfNCI+S2V5X0YxNTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTI2XzQiPktFWV9GMTU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0Ml80Ij5LZXlfRjE2PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMjdfNCI+S0VZX0YxNjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0XzQiPktleV9GMTc8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEyOF80Ij5LRVlfRjE3PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDZfNCI+S2V5X0YxODwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTI5XzQiPktFWV9GMTg8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OF80Ij5LZXlfRjE5PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMzBfNCI+S0VZX0YxOTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUwXzQiPktleV9GMjA8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEzMV80Ij5LRVlfRjIwPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTJfNCI+S2V5X0YyMTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTMyXzQiPktFWV9GMjE8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NF80Ij5LZXlfRjIyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMzNfNCI+S0VZX0YyMjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2XzQiPktleV9GMjM8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEzNF80Ij5LRVlfRjIzPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNThfNCI+S2V5X0YyNDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTM1XzQiPktFWV9GMjQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MF80Ij5LRVlfREw8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMzZfNCI+S0VZX0RMPC9BPjsKKyAgIEtleV9EZWxldGVfTGluZSAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjBfNCI+S0VZX0RMPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjNfNCI+S0VZX0lMPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTM3XzQiPktFWV9JTDwvQT47CisgICBLZXlfSW5zZXJ0X0xpbmUgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzXzQiPktFWV9JTDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2XzQiPktFWV9EQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzEzOF80Ij5LRVlfREM8L0E+OworICAgS2V5X0RlbGV0ZV9DaGFyICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2Nl80Ij5LRVlfREM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OV80Ij5LRVlfSUM8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xMzlfNCI+S0VZX0lDPC9BPjsKKyAgIEtleV9JbnNlcnRfQ2hhciAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjlfNCI+S0VZX0lDPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzJfNCI+S0VZX0VJQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTQwXzQiPktFWV9FSUM8L0E+OworICAgS2V5X0V4aXRfSW5zZXJ0X01vZGUgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3Ml80Ij5LRVlfRUlDPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzVfNCI+S0VZX0NMRUFSPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTQxXzQiPktFWV9DTEVBUjwvQT47CisgICBLZXlfQ2xlYXJfU2NyZWVuICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1XzQiPktFWV9DTEVBUjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc4XzQiPktFWV9FT1M8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5LRVlfRU9TPC9BPjsKKyAgIEtleV9DbGVhcl9FbmRfT2ZfU2NyZWVuICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzhfNCI+S0VZX0VPUzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgxXzQiPktFWV9FT0w8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE0M180Ij5LRVlfRU9MPC9BPjsKKyAgIEtleV9DbGVhcl9FbmRfT2ZfTGluZSAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODFfNCI+S0VZX0VPTDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg0XzQiPktFWV9TRjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE0NF80Ij5LRVlfU0Y8L0E+OworICAgS2V5X1Njcm9sbF8xX0ZvcndhcmQgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NF80Ij5LRVlfU0Y8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4N180Ij5LRVlfU1I8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNDVfNCI+S0VZX1NSPC9BPjsKKyAgIEtleV9TY3JvbGxfMV9CYWNrd2FyZCAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODdfNCI+S0VZX1NSPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTBfNCI+S0VZX05QQUdFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTQ2XzQiPktFWV9OUEFHRTwvQT47CisgICBLZXlfTmV4dF9QYWdlICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwXzQiPktFWV9OUEFHRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkzXzQiPktFWV9QUEFHRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE0N180Ij5LRVlfUFBBR0U8L0E+OworICAgS2V5X1ByZXZpb3VzX1BhZ2UgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5M180Ij5LRVlfUFBBR0U8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5Nl80Ij5LRVlfU1RBQjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNDhfNCI+S0VZX1NUQUI8L0E+OworICAgS2V5X1NldF9UYWIgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5Nl80Ij5LRVlfU1RBQjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk5XzQiPktFWV9DVEFCPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE0OV80Ij5LRVlfQ1RBQjwvQT47CisgICBLZXlfQ2xlYXJfVGFiICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk5XzQiPktFWV9DVEFCPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDJfNCI+S0VZX0NBVEFCPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTUwXzQiPktFWV9DQVRBQjwvQT47CisgICBLZXlfQ2xlYXJfQWxsX1RhYnMgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAyXzQiPktFWV9DQVRBQjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA1XzQiPktFWV9FTlRFUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE1MV80Ij5LRVlfRU5URVI8L0E+OworICAgS2V5X0VudGVyX09yX1NlbmQgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwNV80Ij5LRVlfRU5URVI8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwOF80Ij5LRVlfU1JFU0VUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNTJfNCI+S0VZX1NSRVNFVDwvQT47CisgICBLZXlfU29mdF9SZXNldCAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA4XzQiPktFWV9TUkVTRVQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxMV80Ij5LZXlfUmVzZXQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNTNfNCI+S0VZX1JFU0VUPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTNfNCI+S2V5X1ByaW50PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTU0XzQiPktFWV9QUklOVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjE1XzQiPktFWV9MTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE1NV80Ij5LRVlfTEw8L0E+OworICAgS2V5X0JvdHRvbSAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIxNV80Ij5LRVlfTEw8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIxOF80Ij5LRVlfQTE8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNTZfNCI+S0VZX0ExPC9BPjsKKyAgIEtleV9VcHBlcl9MZWZ0X09mX0tleXBhZCAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMThfNCI+S0VZX0ExPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMjFfNCI+S0VZX0EzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTU3XzQiPktFWV9BMzwvQT47CisgICBLZXlfVXBwZXJfUmlnaHRfT2ZfS2V5cGFkICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjIxXzQiPktFWV9BMzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0XzQiPktFWV9CMjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE1OF80Ij5LRVlfQjI8L0E+OworICAgS2V5X0NlbnRlcl9PZl9LZXlwYWQgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIyNF80Ij5LRVlfQjI8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIyN180Ij5LRVlfQzE8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNTlfNCI+S0VZX0MxPC9BPjsKKyAgIEtleV9Mb3dlcl9MZWZ0X09mX0tleXBhZCAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMjdfNCI+S0VZX0MxPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzBfNCI+S0VZX0MzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTYwXzQiPktFWV9DMzwvQT47CisgICBLZXlfTG93ZXJfUmlnaHRfT2ZfS2V5cGFkICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjMwXzQiPktFWV9DMzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMzXzQiPktFWV9CVEFCPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE2MV80Ij5LRVlfQlRBQjwvQT47CisgICBLZXlfQmFja19UYWIgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjMzXzQiPktFWV9CVEFCPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzZfNCI+S0VZX0JFRzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTYyXzQiPktFWV9CRUc8L0E+OworICAgS2V5X0JlZ2lubmluZyAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIzNl80Ij5LRVlfQkVHPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzlfNCI+S2V5X0NhbmNlbDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTYzXzQiPktFWV9DQU5DRUw8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MV80Ij5LZXlfQ2xvc2U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNjRfNCI+S0VZX0NMT1NFPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDNfNCI+S2V5X0NvbW1hbmQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTY1XzQiPktFWV9DT01NQU5EPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDVfNCI+S2V5X0NvcHk8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTY2XzQiPktFWV9DT1BZPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDdfNCI+S2V5X0NyZWF0ZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTY3XzQiPktFWV9DUkVBVEU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0OV80Ij5LZXlfRW5kPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNjhfNCI+S0VZX0VORDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUxXzQiPktleV9FeGl0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE2OV80Ij5LRVlfRVhJVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjUzXzQiPktleV9GaW5kPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3MF80Ij5LRVlfRklORDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU1XzQiPktleV9IZWxwPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3MV80Ij5LRVlfSEVMUDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU3XzQiPktleV9NYXJrPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3Ml80Ij5LRVlfTUFSSzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU5XzQiPktleV9NZXNzYWdlPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3M180Ij5LRVlfTUVTU0FHRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjYxXzQiPktleV9Nb3ZlPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3NF80Ij5LRVlfTU9WRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjYzXzQiPktleV9OZXh0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3NV80Ij5LRVlfTkVYVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY1XzQiPktleV9PcGVuPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3Nl80Ij5LRVlfT1BFTjwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY3XzQiPktleV9PcHRpb25zPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3N180Ij5LRVlfT1BUSU9OUzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY5XzQiPktleV9QcmV2aW91czwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE3OF80Ij5LRVlfUFJFVklPVVM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3MV80Ij5LZXlfUmVkbzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xNzlfNCI+S0VZX1JFRE88L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3M180Ij5LZXlfUmVmZXJlbmNlPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xODBfNCI+S0VZX1JFRkVSRU5DRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc1XzQiPktleV9SZWZyZXNoPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE4MV80Ij5LRVlfUkVGUkVTSDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc3XzQiPktleV9SZXBsYWNlPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE4Ml80Ij5LRVlfUkVQTEFDRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc5XzQiPktleV9SZXN0YXJ0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE4M180Ij5LRVlfUkVTVEFSVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjgxXzQiPktleV9SZXN1bWU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE4NF80Ij5LRVlfUkVTVU1FPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODNfNCI+S2V5X1NhdmU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTg1XzQiPktFWV9TQVZFPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODVfNCI+S0VZX1NCRUc8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTg2XzQiPktFWV9TQkVHPC9BPjsKKyAgIEtleV9TaGlmdF9CZWdpbiAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yODVfNCI+S0VZX1NCRUc8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4OF80Ij5LRVlfU0NBTkNFTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xODdfNCI+S0VZX1NDQU5DRUw8L0E+OworICAgS2V5X1NoaWZ0X0NhbmNlbCAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI4OF80Ij5LRVlfU0NBTkNFTDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkxXzQiPktFWV9TQ09NTUFORDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE4OF80Ij5LRVlfU0NPTU1BTkQ8L0E+OworICAgS2V5X1NoaWZ0X0NvbW1hbmQgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5MV80Ij5LRVlfU0NPTU1BTkQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5NF80Ij5LRVlfU0NPUFk8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xODlfNCI+S0VZX1NDT1BZPC9BPjsKKyAgIEtleV9TaGlmdF9Db3B5ICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTRfNCI+S0VZX1NDT1BZPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTdfNCI+S0VZX1NDUkVBVEU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTkwXzQiPktFWV9TQ1JFQVRFPC9BPjsKKyAgIEtleV9TaGlmdF9DcmVhdGUgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTdfNCI+S0VZX1NDUkVBVEU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwMF80Ij5LRVlfU0RDPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xOTFfNCI+S0VZX1NEQzwvQT47CisgICBLZXlfU2hpZnRfRGVsZXRlX0NoYXIgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzAwXzQiPktFWV9TREM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwM180Ij5LRVlfU0RMPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xOTJfNCI+S0VZX1NETDwvQT47CisgICBLZXlfU2hpZnRfRGVsZXRlX0xpbmUgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzAzXzQiPktFWV9TREw8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwNl80Ij5LZXlfU2VsZWN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xOTNfNCI+S0VZX1NFTEVDVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA4XzQiPktFWV9TRU5EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE5NF80Ij5LRVlfU0VORDwvQT47CisgICBLZXlfU2hpZnRfRW5kICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA4XzQiPktFWV9TRU5EPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTFfNCI+S0VZX1NFT0w8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTk1XzQiPktFWV9TRU9MPC9BPjsKKyAgIEtleV9TaGlmdF9DbGVhcl9FbmRfT2ZfTGluZSA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTFfNCI+S0VZX1NFT0w8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxNF80Ij5LRVlfU0VYSVQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xOTZfNCI+S0VZX1NFWElUPC9BPjsKKyAgIEtleV9TaGlmdF9FeGl0ICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTRfNCI+S0VZX1NFWElUPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTdfNCI+S0VZX1NGSU5EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMTk3XzQiPktFWV9TRklORDwvQT47CisgICBLZXlfU2hpZnRfRmluZCAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzE3XzQiPktFWV9TRklORDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzIwXzQiPktFWV9TSEVMUDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzE5OF80Ij5LRVlfU0hFTFA8L0E+OworICAgS2V5X1NoaWZ0X0hlbHAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMyMF80Ij5LRVlfU0hFTFA8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyM180Ij5LRVlfU0hPTUU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8xOTlfNCI+S0VZX1NIT01FPC9BPjsKKyAgIEtleV9TaGlmdF9Ib21lICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMjNfNCI+S0VZX1NIT01FPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjZfNCI+S0VZX1NJQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjAwXzQiPktFWV9TSUM8L0E+OworICAgS2V5X1NoaWZ0X0luc2VydF9DaGFyICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMyNl80Ij5LRVlfU0lDPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjlfNCI+S0VZX1NMRUZUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjAxXzQiPktFWV9TTEVGVDwvQT47CisgICBLZXlfU2hpZnRfQ3Vyc29yX0xlZnQgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzI5XzQiPktFWV9TTEVGVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzMyXzQiPktFWV9TTUVTU0FHRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIwMl80Ij5LRVlfU01FU1NBR0U8L0E+OworICAgS2V5X1NoaWZ0X01lc3NhZ2UgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMzMl80Ij5LRVlfU01FU1NBR0U8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzNV80Ij5LRVlfU01PVkU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMDNfNCI+S0VZX1NNT1ZFPC9BPjsKKyAgIEtleV9TaGlmdF9Nb3ZlICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMzVfNCI+S0VZX1NNT1ZFPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzhfNCI+S0VZX1NORVhUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjA0XzQiPktFWV9TTkVYVDwvQT47CisgICBLZXlfU2hpZnRfTmV4dF9QYWdlICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzM4XzQiPktFWV9TTkVYVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQxXzQiPktFWV9TT1BUSU9OUzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIwNV80Ij5LRVlfU09QVElPTlM8L0E+OworICAgS2V5X1NoaWZ0X09wdGlvbnMgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM0MV80Ij5LRVlfU09QVElPTlM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0NF80Ij5LRVlfU1BSRVZJT1VTPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMDZfNCI+S0VZX1NQUkVWSU9VUzwvQT47CisgICBLZXlfU2hpZnRfUHJldmlvdXNfUGFnZSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzQ0XzQiPktFWV9TUFJFVklPVVM8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0N180Ij5LRVlfU1BSSU5UPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMDdfNCI+S0VZX1NQUklOVDwvQT47CisgICBLZXlfU2hpZnRfUHJpbnQgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzQ3XzQiPktFWV9TUFJJTlQ8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1MF80Ij5LRVlfU1JFRE88L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMDhfNCI+S0VZX1NSRURPPC9BPjsKKyAgIEtleV9TaGlmdF9SZWRvICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTBfNCI+S0VZX1NSRURPPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTNfNCI+S0VZX1NSRVBMQUNFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjA5XzQiPktFWV9TUkVQTEFDRTwvQT47CisgICBLZXlfU2hpZnRfUmVwbGFjZSAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUzXzQiPktFWV9TUkVQTEFDRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU2XzQiPktFWV9TUklHSFQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxMF80Ij5LRVlfU1JJR0hUPC9BPjsKKyAgIEtleV9TaGlmdF9DdXJzb3JfUmlnaHQgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfNCI+S0VZX1NSSUdIVDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU5XzQiPktFWV9TUlNVTUU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxMV80Ij5LRVlfU1JTVU1FPC9BPjsKKyAgIEtleV9TaGlmdF9SZXN1bWUgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTlfNCI+S0VZX1NSU1VNRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzYyXzQiPktFWV9TU0FWRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxMl80Ij5LRVlfU1NBVkU8L0E+OworICAgS2V5X1NoaWZ0X1NhdmUgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM2Ml80Ij5LRVlfU1NBVkU8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2NV80Ij5LRVlfU1NVU1BFTkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMTNfNCI+S0VZX1NTVVNQRU5EPC9BPjsKKyAgIEtleV9TaGlmdF9TdXNwZW5kICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNjVfNCI+S0VZX1NTVVNQRU5EPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjhfNCI+S0VZX1NVTkRPPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+CisgICAgIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjE0XzQiPktFWV9TVU5ETzwvQT47CisgICBLZXlfU2hpZnRfVW5kbyAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzY4XzQiPktFWV9TVU5ETzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzcxXzQiPktleV9TdXNwZW5kPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxNV80Ij5LRVlfU1VTUEVORDwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzczXzQiPktleV9VbmRvPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxNl80Ij5LRVlfVU5ETzwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc1XzQiPktleV9Nb3VzZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIxN180Ij5LRVlfTU9VU0U8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3N180Ij5LZXlfUmVzaXplPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4KKyAgICAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMThfNCI+S0VZX1JFU0laRTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc5XzQiPktleV9NYXg8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPgorICAgICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4nTGFzdDsKIAotICAgPGI+c3VidHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yMTBfMTIiPlVzZXJfS2V5X0NvZGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjhfOSI+S2V5X0NvZGU8L0E+Ci0gICAgIDxiPnJhbmdlPC9iPiAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA3XzQiPktleV9NYXg8L0E+ICsgMTI5KSAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82OF85Ij5LZXlfQ29kZTwvQT4nTGFzdDsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyByZXNlcnZlZCBmb3IgdXNlciBkZWZpbmVkIGtleSBjb2Rlcy4gVGhlIHJhbmdlIGJldHdlZW4gS2V5X01heDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBhbmQgdGhlIGZpcnN0IHVzZXIgY29kZSBpcyByZXNlcnZlZCBmb3Igc3Vic3lzdGVtcyBsaWtlIG1lbnUgYW5kIGZvcm1zLjwvRU0+PC9GT05UPgorICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4Ml8xMiI+VXNlcl9LZXlfQ29kZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82Nl85Ij5LZXlfQ29kZTwvQT4KKyAgICAgPGI+cmFuZ2U8L2I+ICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzlfNCI+S2V5X01heDwvQT4gKyAxMjkpIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY2XzkiPktleV9Db2RlPC9BPidMYXN0OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyByZXNlcnZlZCBmb3IgdXNlciBkZWZpbmVkIGtleSBjb2Rlcy4gVGhlIHJhbmdlIGJldHdlZW4gS2V5X01heDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgYW5kIHRoZSBmaXJzdCB1c2VyIGNvZGUgaXMgcmVzZXJ2ZWQgZm9yIHN1YnN5c3RlbXMgbGlrZSBtZW51IGFuZCBmb3Jtcy48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBGb3IgdGhvc2Ugd2hvIGxpa2UgdG8gdXNlIHRoZSBvcmlnaW5hbCBrZXkgbmFtZXMgd2UgcHJvZHVjZSB0aGVtIHdlcmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhleSBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwuIFBsZWFzZSBub3RlIHRoYXQgdGhleSBtYXkgZGlmZmVyIGluPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGxvd2VyL3VwcGVyIGNhc2UuPC9FTT48L0ZPTlQ+Ci0gICBLRVlfRE9XTiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyXzQiPktleV9DdXJzb3JfRG93bjwvQT47Ci0gICBLRVlfVVAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzXzQiPktleV9DdXJzb3JfVXA8L0E+OwotICAgS0VZX0xFRlQgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NF80Ij5LZXlfQ3Vyc29yX0xlZnQ8L0E+OwotICAgS0VZX1JJR0hUICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NV80Ij5LZXlfQ3Vyc29yX1JpZ2h0PC9BPjsKLSAgIEtFWV9ETCAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzXzQiPktleV9EZWxldGVfTGluZTwvQT47Ci0gICBLRVlfSUwgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNF80Ij5LZXlfSW5zZXJ0X0xpbmU8L0E+OwotICAgS0VZX0RDICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjVfNCI+S2V5X0RlbGV0ZV9DaGFyPC9BPjsKLSAgIEtFWV9JQyAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI2XzQiPktleV9JbnNlcnRfQ2hhcjwvQT47Ci0gICBLRVlfRUlDICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyN180Ij5LZXlfRXhpdF9JbnNlcnRfTW9kZTwvQT47Ci0gICBLRVlfQ0xFQVIgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyOF80Ij5LZXlfQ2xlYXJfU2NyZWVuPC9BPjsKLSAgIEtFWV9FT1MgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5XzQiPktleV9DbGVhcl9FbmRfT2ZfU2NyZWVuPC9BPjsKLSAgIEtFWV9FT0wgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwXzQiPktleV9DbGVhcl9FbmRfT2ZfTGluZTwvQT47Ci0gICBLRVlfU0YgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMV80Ij5LZXlfU2Nyb2xsXzFfRm9yd2FyZDwvQT47Ci0gICBLRVlfU1IgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMl80Ij5LZXlfU2Nyb2xsXzFfQmFja3dhcmQ8L0E+OwotICAgS0VZX05QQUdFICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzNfNCI+S2V5X05leHRfUGFnZTwvQT47Ci0gICBLRVlfUFBBR0UgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNF80Ij5LZXlfUHJldmlvdXNfUGFnZTwvQT47Ci0gICBLRVlfU1RBQiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNV80Ij5LZXlfU2V0X1RhYjwvQT47Ci0gICBLRVlfQ1RBQiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzNl80Ij5LZXlfQ2xlYXJfVGFiPC9BPjsKLSAgIEtFWV9DQVRBQiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM3XzQiPktleV9DbGVhcl9BbGxfVGFiczwvQT47Ci0gICBLRVlfRU5URVIgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOF80Ij5LZXlfRW50ZXJfT3JfU2VuZDwvQT47Ci0gICBLRVlfU1JFU0VUICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOV80Ij5LZXlfU29mdF9SZXNldDwvQT47Ci0gICBLRVlfTEwgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0Ml80Ij5LZXlfQm90dG9tPC9BPjsKLSAgIEtFWV9BMSAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQzXzQiPktleV9VcHBlcl9MZWZ0X09mX0tleXBhZDwvQT47Ci0gICBLRVlfQTMgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NF80Ij5LZXlfVXBwZXJfUmlnaHRfT2ZfS2V5cGFkPC9BPjsKLSAgIEtFWV9CMiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ1XzQiPktleV9DZW50ZXJfT2ZfS2V5cGFkPC9BPjsKLSAgIEtFWV9DMSAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ2XzQiPktleV9Mb3dlcl9MZWZ0X09mX0tleXBhZDwvQT47Ci0gICBLRVlfQzMgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0N180Ij5LZXlfTG93ZXJfUmlnaHRfT2ZfS2V5cGFkPC9BPjsKLSAgIEtFWV9CVEFCICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ4XzQiPktleV9CYWNrX1RhYjwvQT47Ci0gICBLRVlfQkVHICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OV80Ij5LZXlfQmVnaW5uaW5nPC9BPjsKLSAgIEtFWV9TQkVHICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTczXzQiPktleV9TaGlmdF9CZWdpbjwvQT47Ci0gICBLRVlfU0NBTkNFTCAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NF80Ij5LZXlfU2hpZnRfQ2FuY2VsPC9BPjsKLSAgIEtFWV9TQ09NTUFORCAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc1XzQiPktleV9TaGlmdF9Db21tYW5kPC9BPjsKLSAgIEtFWV9TQ09QWSAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc2XzQiPktleV9TaGlmdF9Db3B5PC9BPjsKLSAgIEtFWV9TQ1JFQVRFICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc3XzQiPktleV9TaGlmdF9DcmVhdGU8L0E+OwotICAgS0VZX1NEQyAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzhfNCI+S2V5X1NoaWZ0X0RlbGV0ZV9DaGFyPC9BPjsKLSAgIEtFWV9TREwgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTc5XzQiPktleV9TaGlmdF9EZWxldGVfTGluZTwvQT47Ci0gICBLRVlfU0VORCAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MV80Ij5LZXlfU2hpZnRfRW5kPC9BPjsKLSAgIEtFWV9TRU9MICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgyXzQiPktleV9TaGlmdF9DbGVhcl9FbmRfT2ZfTGluZTwvQT47Ci0gICBLRVlfU0VYSVQgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4M180Ij5LZXlfU2hpZnRfRXhpdDwvQT47Ci0gICBLRVlfU0ZJTkQgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NF80Ij5LZXlfU2hpZnRfRmluZDwvQT47Ci0gICBLRVlfU0hFTFAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NV80Ij5LZXlfU2hpZnRfSGVscDwvQT47Ci0gICBLRVlfU0hPTUUgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4Nl80Ij5LZXlfU2hpZnRfSG9tZTwvQT47Ci0gICBLRVlfU0lDICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4N180Ij5LZXlfU2hpZnRfSW5zZXJ0X0NoYXI8L0E+OwotICAgS0VZX1NMRUZUICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODhfNCI+S2V5X1NoaWZ0X0N1cnNvcl9MZWZ0PC9BPjsKLSAgIEtFWV9TTUVTU0FHRSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg5XzQiPktleV9TaGlmdF9NZXNzYWdlPC9BPjsKLSAgIEtFWV9TTU9WRSAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkwXzQiPktleV9TaGlmdF9Nb3ZlPC9BPjsKLSAgIEtFWV9TTkVYVCAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkxXzQiPktleV9TaGlmdF9OZXh0X1BhZ2U8L0E+OwotICAgS0VZX1NPUFRJT05TICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTJfNCI+S2V5X1NoaWZ0X09wdGlvbnM8L0E+OwotICAgS0VZX1NQUkVWSU9VUyAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTNfNCI+S2V5X1NoaWZ0X1ByZXZpb3VzX1BhZ2U8L0E+OwotICAgS0VZX1NQUklOVCAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTRfNCI+S2V5X1NoaWZ0X1ByaW50PC9BPjsKLSAgIEtFWV9TUkVETyAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk1XzQiPktleV9TaGlmdF9SZWRvPC9BPjsKLSAgIEtFWV9TUkVQTEFDRSAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk2XzQiPktleV9TaGlmdF9SZXBsYWNlPC9BPjsKLSAgIEtFWV9TUklHSFQgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk3XzQiPktleV9TaGlmdF9DdXJzb3JfUmlnaHQ8L0E+OwotICAgS0VZX1NSU1VNRSAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOThfNCI+S2V5X1NoaWZ0X1Jlc3VtZTwvQT47Ci0gICBLRVlfU1NBVkUgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5OV80Ij5LZXlfU2hpZnRfU2F2ZTwvQT47Ci0gICBLRVlfU1NVU1BFTkQgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMF80Ij5LZXlfU2hpZnRfU3VzcGVuZDwvQT47Ci0gICBLRVlfU1VORE8gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzhfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMV80Ij5LZXlfU2hpZnRfVW5kbzwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L3NwYW4+CiAKLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPnJhbmdlPC9iPiAtMSAuLiBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5zaG9ydCdMYXN0KTsKKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT4nU2l6ZSA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0J1NpemU7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAobiljdXJzZXMgdXNlcyBhIHNob3J0IGZvciB0aGUgY29sb3IgaW5kZXg8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoZSBtb2RlbCBpcywgdGhhdCBhIENvbG9yX051bWJlciBpcyBhbiBpbmRleCBpbnRvIGFuIGFycmF5IG9mPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAocG90ZW50aWFsbHkpIGRlZmluYWJsZSBjb2xvcnMuIFNvbWUgb2YgdGhvc2UgaW5kaWNlcyBhcmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByZWRlZmluZWQgKHNlZSBiZWxvdyksIGFsdGhvdWdoIHRoZXkgbWF5IG5vdCByZWFsbHkgZXhpc3QuPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5yYW5nZTwvYj4gLTEgLi4gSW50ZWdlciAoPEEgSFJFRj0iaW50ZXJmYWNfX2Fkcy5odG0jcmVmXzM4XzkiPkludGVyZmFjZXM8L0E+LkMuc2hvcnQnTGFzdCk7Ci0gICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+J1NpemUgPGI+dXNlPC9iPiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5zaG9ydCdTaXplOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAobiljdXJzZXMgdXNlcyBhIHNob3J0IGZvciB0aGUgY29sb3IgaW5kZXg8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIG1vZGVsIGlzLCB0aGF0IGEgQ29sb3JfTnVtYmVyIGlzIGFuIGluZGV4IGludG8gYW4gYXJyYXkgb2Y8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgKHBvdGVudGlhbGx5KSBkZWZpbmFibGUgY29sb3JzLiBTb21lIG9mIHRob3NlIGluZGljZXMgYXJlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHByZWRlZmluZWQgKHNlZSBiZWxvdyksIGFsdGhvdWdoIHRoZXkgbWF5IG5vdCByZWFsbHkgZXhpc3QuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzk2XzQiPkJsYWNrPC9BPjwvc3Bhbj4gICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzY5XzQiPkNPTE9SX0JMQUNLPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOTdfNCI+UmVkPC9BPjwvc3Bhbj4gICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNzBfNCI+Q09MT1JfUkVEPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOThfNCI+R3JlZW48L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNzFfNCI+Q09MT1JfR1JFRU48L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM5OV80Ij5ZZWxsb3c8L0E+PC9zcGFuPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl83Ml80Ij5DT0xPUl9ZRUxMT1c8L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwMF80Ij5CbHVlPC9BPjwvc3Bhbj4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl83M180Ij5DT0xPUl9CTFVFPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDFfNCI+TWFnZW50YTwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNzRfNCI+Q09MT1JfTUFHRU5UQTwvQT47CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDAyXzQiPkN5YW48L0E+PC9zcGFuPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzc1XzQiPkNPTE9SX0NZQU48L0E+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwM180Ij5XaGl0ZTwvQT48L3NwYW4+ICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl83Nl80Ij5DT0xPUl9XSElURTwvQT47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg1XzQiPkRlZmF1bHRfQ29sb3I8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSAtMTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg2XzQiPkJsYWNrPC9BPjwvRk9OVD4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSAwOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yODdfNCI+UmVkPC9BPjwvRk9OVD4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDE7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI4OF80Ij5HcmVlbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gMjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjg5XzQiPlllbGxvdzwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSAzOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTBfNCI+Qmx1ZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDQ7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzI5MV80Ij5NYWdlbnRhPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gNTsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjkyXzQiPkN5YW48L0E+PC9GT05UPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPiA6PSA2OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8yOTNfNCI+V2hpdGU8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDc7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5yYW5nZTwvYj4gMCAuLiBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzZfOSI+SW50ZXJmYWNlczwvQT4uQy5zaG9ydCdMYXN0KTsKKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT4nU2l6ZSA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zNl85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0J1NpemU7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBTb21lIHN5c3RlbSBtYXkgYWxsb3cgdG8gcmVkZWZpbmUgYSBjb2xvciBieSBzZXR0aW5nIFJHQiB2YWx1ZXMuPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5yYW5nZTwvYj4gMCAuLiBJbnRlZ2VyICg8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5zaG9ydCdMYXN0KTsKLSAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT4nU2l6ZSA8Yj51c2U8L2I+IDxBIEhSRUY9ImludGVyZmFjX19hZHMuaHRtI3JlZl8zOF85Ij5JbnRlcmZhY2VzPC9BPi5DLnNob3J0J1NpemU7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNvbWUgc3lzdGVtIG1heSBhbGxvdyB0byByZWRlZmluZSBhIGNvbG9yIGJ5IHNldHRpbmcgUkdCIHZhbHVlcy48L0VNPjwvRk9OVD4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5yYW5nZTwvYj4gMCAuLiAyNTU7CisgICA8Yj5mb3I8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidTaXplIDxiPnVzZTwvYj4gODsKKyAgIDxiPnN1YnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MTFfMTIiPlJlZGVmaW5hYmxlX0NvbG9yX1BhaXI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDxiPnJhbmdlPC9iPiAxIC4uIDI1NTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIChuKWN1cnNlcyByZXNlcnZlcyAxIEJ5dGUgZm9yIHRoZSBjb2xvci1wYWlyIG51bWJlci4gQ29sb3IgUGFpciAwPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpcyBmaXhlZCAoQmxhY2sgJmFtcDsgV2hpdGUpLiBBIGNvbG9yIHBhaXIgaXMgc2ltcGx5IGEgY29tYmluYXRpb24gb2Y8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHR3byBjb2xvcnMgZGVzY3JpYmVkIGJ5IENvbG9yX051bWJlcnMsIG9uZSBmb3IgdGhlIGZvcmVncm91bmQgYW5kPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB0aGUgb3RoZXIgZm9yIHRoZSBiYWNrZ3JvdW5kPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+PC9GT05UPiA8Yj5pczwvYj4gPGI+cmFuZ2U8L2I+IDAgLi4gMjU1OwotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nU2l6ZSA8Yj51c2U8L2I+IDg7Ci0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwMV8xMiI+UmVkZWZpbmFibGVfQ29sb3JfUGFpcjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gPGI+cmFuZ2U8L2I+IDEgLi4gMjU1OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAobiljdXJzZXMgcmVzZXJ2ZXMgMSBCeXRlIGZvciB0aGUgY29sb3ItcGFpciBudW1iZXIuIENvbG9yIFBhaXIgMDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpcyBmaXhlZCAoQmxhY2sgJmFtcDsgV2hpdGUpLiBBIGNvbG9yIHBhaXIgaXMgc2ltcGx5IGEgY29tYmluYXRpb24gb2Y8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdHdvIGNvbG9ycyBkZXNjcmliZWQgYnkgQ29sb3JfTnVtYmVycywgb25lIGZvciB0aGUgZm9yZWdyb3VuZCBhbmQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIG90aGVyIGZvciB0aGUgYmFja2dyb3VuZDwvRU0+PC9GT05UPgotCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT48L3NwYW4+IDxiPmlzPC9iPgogICAgICAgPGI+cmVjb3JkPC9iPgotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMDlfMTAiPlN0YW5kX091dDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTBfMTAiPlVuZGVyX0xpbmU8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTFfMTAiPlJldmVyc2VfVmlkZW88L0E+PC9GT05UPiAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTJfMTAiPkJsaW5rPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTNfMTAiPkRpbV9DaGFyYWN0ZXI8L0E+PC9GT05UPiAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTRfMTAiPkJvbGRfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTVfMTAiPkFsdGVybmF0ZV9DaGFyYWN0ZXJfU2V0PC9BPjwvRk9OVD4gOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTZfMTAiPkludmlzaWJsZV9DaGFyYWN0ZXI8L0E+PC9GT05UPiAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTdfMTAiPlByb3RlY3RlZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMThfMTAiPkhvcml6b250YWw8L0E+PC9GT05UPiAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMTlfMTAiPkxlZnQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjBfMTAiPkxvdzwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjFfMTAiPlJpZ2h0PC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjJfMTAiPlRvcDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zMjNfMTAiPlZlcnRpY2FsPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQxOV8xMCI+U3RhbmRfT3V0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDIwXzEwIj5VbmRlcl9MaW5lPC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjFfMTAiPlJldmVyc2VfVmlkZW88L0E+PC9zcGFuPiAgICAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyMl8xMCI+Qmxpbms8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDIzXzEwIj5EaW1fQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjRfMTAiPkJvbGRfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gICAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyNV8xMCI+UHJvdGVjdGVkX0NoYXJhY3RlcjwvQT48L3NwYW4+ICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI2XzEwIj5JbnZpc2libGVfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MjdfMTAiPkFsdGVybmF0ZV9DaGFyYWN0ZXJfU2V0PC9BPjwvc3Bhbj4gOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyOF8xMCI+SG9yaXpvbnRhbDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDI5XzEwIj5MZWZ0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzBfMTAiPkxvdzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgOiBCb29sZWFuOworICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzMV8xMCI+UmlnaHQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IEJvb2xlYW47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDMyXzEwIj5Ub3A8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogQm9vbGVhbjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MzNfMTAiPlZlcnRpY2FsPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiBCb29sZWFuOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+KTsKIAotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDxiPnVzZTwvYj4KKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA8Yj51c2U8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDlfMTAiPlN0YW5kX091dDwvQT4gICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDAgLi4gIDA7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTBfMTAiPlVuZGVyX0xpbmU8L0E+ICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDEgLi4gIDE7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTFfMTAiPlJldmVyc2VfVmlkZW88L0E+ICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDIgLi4gIDI7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTJfMTAiPkJsaW5rPC9BPiAgICAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDMgLi4gIDM7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTNfMTAiPkRpbV9DaGFyYWN0ZXI8L0E+ICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDQgLi4gIDQ7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTRfMTAiPkJvbGRfQ2hhcmFjdGVyPC9BPiAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDUgLi4gIDU7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTVfMTAiPkFsdGVybmF0ZV9DaGFyYWN0ZXJfU2V0PC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDYgLi4gIDY7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTZfMTAiPkludmlzaWJsZV9DaGFyYWN0ZXI8L0E+ICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDcgLi4gIDc7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTdfMTAiPlByb3RlY3RlZF9DaGFyYWN0ZXI8L0E+ICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDggLi4gIDg7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMThfMTAiPkhvcml6b250YWw8L0E+ICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDkgLi4gIDk7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMTlfMTAiPkxlZnQ8L0E+ICAgICAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTAgLi4gMTA7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMjBfMTAiPkxvdzwvQT4gICAgICAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTEgLi4gMTE7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMjFfMTAiPlJpZ2h0PC9BPiAgICAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTIgLi4gMTI7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMjJfMTAiPlRvcDwvQT4gICAgICAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTMgLi4gMTM7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMjNfMTAiPlZlcnRpY2FsPC9BPiAgICAgICAgICAgICAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTQgLi4gMTQ7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTlfMTAiPlN0YW5kX091dDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+CisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzVfNCI+QV9TVEFORE9VVF9GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzZfNCI+QV9TVEFORE9VVF9MYXN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjBfMTAiPlVuZGVyX0xpbmU8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM3XzQiPkFfVU5ERVJMSU5FX0ZpcnN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zOF80Ij5BX1VOREVSTElORV9MYXN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjFfMTAiPlJldmVyc2VfVmlkZW88L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzM5XzQiPkFfUkVWRVJTRV9GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNDBfNCI+QV9SRVZFUlNFX0xhc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQyMl8xMCI+Qmxpbms8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzQxXzQiPkFfQkxJTktfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzQyXzQiPkFfQkxJTktfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDIzXzEwIj5EaW1fQ2hhcmFjdGVyPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4KKyAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl80M180Ij5BX0RJTV9GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNDRfNCI+QV9ESU1fTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI0XzEwIj5Cb2xkX0NoYXJhY3RlcjwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+CisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNDVfNCI+QV9CT0xEX0ZpcnN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl80Nl80Ij5BX0JPTERfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI1XzEwIj5Qcm90ZWN0ZWRfQ2hhcmFjdGVyPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4KKyAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl80N180Ij5BX1BST1RFQ1RfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzQ4XzQiPkFfUFJPVEVDVF9MYXN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjZfMTAiPkludmlzaWJsZV9DaGFyYWN0ZXI8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzQ5XzQiPkFfSU5WSVNfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzUwXzQiPkFfSU5WSVNfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI3XzEwIj5BbHRlcm5hdGVfQ2hhcmFjdGVyX1NldDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+CisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNTFfNCI+QV9BTFRDSEFSU0VUX0ZpcnN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl81Ml80Ij5BX0FMVENIQVJTRVRfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI4XzEwIj5Ib3Jpem9udGFsPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4KKyAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl81M180Ij5BX0hPUklaT05UQUxfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzU0XzQiPkFfSE9SSVpPTlRBTF9MYXN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjlfMTAiPkxlZnQ8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzU1XzQiPkFfTEVGVF9GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNTZfNCI+QV9MRUZUX0xhc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQzMF8xMCI+TG93PC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4KKyAgICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl81N180Ij5BX0xPV19GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNThfNCI+QV9MT1dfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDMxXzEwIj5SaWdodDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+CisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNTlfNCI+QV9SSUdIVF9GaXJzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+CisgICAgICAgICAgIC4uIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNjBfNCI+QV9SSUdIVF9MYXN0PC9BPiAtIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MzJfMTAiPlRvcDwvQT4gPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+CisgICAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNjFfNCI+QV9UT1BfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzYyXzQiPkFfVE9QX0xhc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPjsKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQzM18xMCI+VmVydGljYWw8L0E+IDxiPmF0PC9iPiAwIDxiPnJhbmdlPC9iPgorICAgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzYzXzQiPkFfVkVSVElDQUxfRmlyc3Q8L0E+IC0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zM180Ij5BdHRyX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzY0XzQiPkFfVkVSVElDQUxfTGFzdDwvQT4gLSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMzXzQiPkF0dHJfRmlyc3Q8L0E+OwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+J1NpemUgPGI+dXNlPC9iPiAxNjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGU6IHRoaXMgcmVwLiBjbGF1c2UgaXMgZ2VuZXJhdGVkIGFuZCBtYXkgYmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgKG4pY3Vyc2VzIHVzZXMgYWxsIGJ1dCB0aGUgbG93ZXN0IDE2IEJpdHMgZm9yIEF0dHJpYnV0ZXMuPC9FTT48L0ZPTlQ+CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzUwXzQiPk5vcm1hbF9WaWRlbzwvQT48L0ZPTlQ+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT4gOj0gKDxiPm90aGVyczwvYj4gPSZndDsgRmFsc2UpOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7IEZhbHNlKTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+PC9GT05UPiA8Yj5pczwvYj4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+PC9zcGFuPiA8Yj5pczwvYj4KICAgICAgIDxiPnJlY29yZDwvYj4KLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU0XzEwIj5BdHRyPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzU1XzEwIj5Db2xvcjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+OwotICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zNTZfMTAiPkNoPC9BPjwvRk9OVD4gICAgOiBDaGFyYWN0ZXI7CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDg5XzEwIj5BdHRyPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80OTBfMTAiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT47CisgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDkxXzEwIj5DaDwvQT48L3NwYW4+ICAgIDogQ2hhcmFjdGVyOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+cHJhZ21hPC9iPiBDb252ZW50aW9uIChDLCA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgZm9yIHRoZSBjaHR5cGUgaW4gQy48L0VNPjwvRk9OVD4KKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQ19QYXNzX0J5X0NvcHksIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgZm9yIHRoZSBjaHR5cGUgaW4gQy48L0VNPjwvc3Bhbj4KIAotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDxiPnVzZTwvYj4KKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA8Yj51c2U8L2I+CiAgICAgICA8Yj5yZWNvcmQ8L2I+Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTZfMTAiPkNoPC9BPiAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDAgLi4gIDc7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTVfMTAiPkNvbG9yPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gIDggLi4gMTU7Ci0gICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTRfMTAiPkF0dHI8L0E+ICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gMTYgLi4gMzE7CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTFfMTAiPkNoPC9BPiAgICA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yOV80Ij5BX0NIQVJURVhUX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMwXzQiPkFfQ0hBUlRFWFRfTGFzdDwvQT47CisgICAgICAgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80OTBfMTAiPkNvbG9yPC9BPiA8Yj5hdDwvYj4gMCA8Yj5yYW5nZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zMV80Ij5BX0NPTE9SX0ZpcnN0PC9BPgorICAgICAgICAgICAuLiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzMyXzQiPkFfQ09MT1JfTGFzdDwvQT47CisgICAgICAgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPZmYpOworICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg5XzEwIj5BdHRyPC9BPiAgPGI+YXQ8L2I+IDAgPGI+cmFuZ2U8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT4KKyAgICAgICAgICAgLi4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8zNF80Ij5BdHRyX0xhc3Q8L0E+OworICAgICAgICAgPGI+cHJhZ21hPC9iPiBXYXJuaW5ncyAoT24pOwogICAgICAgPGI+ZW5kPC9iPiA8Yj5yZWNvcmQ8L2I+OwotICAgPGI+Zm9yPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+J1NpemUgPGI+dXNlPC9iPiAzMjsKLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUGxlYXNlIG5vdGU6IHRoaXMgcmVwLiBjbGF1c2UgaXMgZ2VuZXJhdGVkIGFuZCBtYXkgYmU8L0VNPjwvRk9OVD4KLSAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgIGRpZmZlcmVudCBvbiB5b3VyIHN5c3RlbS48L0VNPjwvRk9OVD4KKyAgIDxiPmZvcjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPidTaXplIDxiPnVzZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82NV80Ij5jaHR5cGVfU2l6ZTwvQT47CiAKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPgotICAgICA6PSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU2XzEwIj5DaDwvQT4gICAgPSZndDsgQ2hhcmFjdGVyJ0ZpcnN0LAotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU1XzEwIj5Db2xvcjwvQT4gPSZndDsgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0LAotICAgICAgICAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzU0XzEwIj5BdHRyPC9BPiAgPSZndDsgKDxiPm90aGVyczwvYj4gPSZndDsgRmFsc2UpKTsgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJlZWxhYm9yYXRhYmxlIE5vcm1hbF9WaWRlbzwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4KKyAgICAgOj0gKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MV8xMCI+Q2g8L0E+ICAgID0mZ3Q7IENoYXJhY3RlcidGaXJzdCwKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5MF8xMCI+Q29sb3I8L0E+ID0mZ3Q7IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCwKKyAgICAgICAgIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4OV8xMCI+QXR0cjwvQT4gID0mZ3Q7ICg8Yj5vdGhlcnM8L2I+ID0mZ3Q7IEZhbHNlKSk7ICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBwcmVlbGFib3JhdGFibGUgTm9ybWFsX1ZpZGVvPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IEF0dHJpYnV0ZWRfU3RyaW5nIDxiPmlzPC9iPiA8Yj5hcnJheTwvYj4gKFBvc2l0aXZlIDxiPnJhbmdlPC9iPiAmbHQ7Jmd0OykgPGI+b2Y8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47Ci0gICA8Yj5wcmFnbWE8L2I+IFBhY2sgKEF0dHJpYnV0ZWRfU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSW4gdGhpcyBiaW5kaW5nIHdlIGFsbG93IHN0cmluZ3Mgb2YgYXR0cmlidXRlZCBjaGFyYWN0ZXJzLjwvRU0+PC9GT05UPgorICAgPGI+dHlwZTwvYj4gQXR0cmlidXRlZF9TdHJpbmcgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoUG9zaXRpdmUgPGI+cmFuZ2U8L2I+ICZsdDsmZ3Q7KSA8Yj5vZjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgQXR0cmlidXRlZF9TdHJpbmcpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW4gdGhpcyBiaW5kaW5nIHdlIGFsbG93IHN0cmluZ3Mgb2YgYXR0cmlidXRlZCBjaGFyYWN0ZXJzLjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV4Y2VwdGlvbnMgIC0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM4M180Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjwvRk9OVD4gICAgIDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzg0XzQiPldyb25nX0N1cnNlc19WZXJzaW9uPC9BPjwvRk9OVD4gOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEV4Y2VwdGlvbnMgIC0tPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyMV80Ij5DdXJzZXNfRXhjZXB0aW9uPC9BPjwvc3Bhbj4gICAgIDogPGI+ZXhjZXB0aW9uPC9iPjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MjJfNCI+V3JvbmdfQ3Vyc2VzX1ZlcnNpb248L0E+PC9zcGFuPiA6IDxiPmV4Y2VwdGlvbjwvYj47CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhvc2UgZXhjZXB0aW9ucyBhcmUgcmFpc2VkIGJ5IHRoZSBFVEkgKEV4dGVuZGVkIFRlcm1pbmFsIEludGVyZmFjZSk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgc3VicGFja2V0cyBmb3IgTWVudSBhbmQgRm9ybXMgaGFuZGxpbmcuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzg5XzQiPkV0aV9TeXN0ZW1fRXJyb3I8L0E+PC9GT05UPiAgICA6IDxiPmV4Y2VwdGlvbjwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5MF80Ij5FdGlfQmFkX0FyZ3VtZW50PC9BPjwvRk9OVD4gICAgOiA8Yj5leGNlcHRpb248L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTFfNCI+RXRpX1Bvc3RlZDwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzkyXzQiPkV0aV9Db25uZWN0ZWQ8L0E+PC9GT05UPiAgICAgICA6IDxiPmV4Y2VwdGlvbjwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5M180Ij5FdGlfQmFkX1N0YXRlPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5leGNlcHRpb248L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTRfNCI+RXRpX05vX1Jvb208L0E+PC9GT05UPiAgICAgICAgIDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk1XzQiPkV0aV9Ob3RfUG9zdGVkPC9BPjwvRk9OVD4gICAgICA6IDxiPmV4Y2VwdGlvbjwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5Nl80Ij5FdGlfVW5rbm93bl9Db21tYW5kPC9BPjwvRk9OVD4gOiA8Yj5leGNlcHRpb248L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8zOTdfNCI+RXRpX05vX01hdGNoPC9BPjwvRk9OVD4gICAgICAgIDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMzk4XzQiPkV0aV9Ob3RfU2VsZWN0YWJsZTwvQT48L0ZPTlQ+ICA6IDxiPmV4Y2VwdGlvbjwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzM5OV80Ij5FdGlfTm90X0Nvbm5lY3RlZDwvQT48L0ZPTlQ+ICAgOiA8Yj5leGNlcHRpb248L2I+OwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MDBfNCI+RXRpX1JlcXVlc3RfRGVuaWVkPC9BPjwvRk9OVD4gIDogPGI+ZXhjZXB0aW9uPC9iPjsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDAxXzQiPkV0aV9JbnZhbGlkX0ZpZWxkPC9BPjwvRk9OVD4gICA6IDxiPmV4Y2VwdGlvbjwvYj47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQwMl80Ij5FdGlfQ3VycmVudDwvQT48L0ZPTlQ+ICAgICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhvc2UgZXhjZXB0aW9ucyBhcmUgcmFpc2VkIGJ5IHRoZSBFVEkgKEV4dGVuZGVkIFRlcm1pbmFsIEludGVyZmFjZSk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHN1YnBhY2tldHMgZm9yIE1lbnUgYW5kIEZvcm1zIGhhbmRsaW5nLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyN180Ij5FdGlfU3lzdGVtX0Vycm9yPC9BPjwvc3Bhbj4gICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyOF80Ij5FdGlfQmFkX0FyZ3VtZW50PC9BPjwvc3Bhbj4gICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyOV80Ij5FdGlfUG9zdGVkPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzMF80Ij5FdGlfQ29ubmVjdGVkPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzMV80Ij5FdGlfQmFkX1N0YXRlPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzMl80Ij5FdGlfTm9fUm9vbTwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzM180Ij5FdGlfTm90X1Bvc3RlZDwvQT48L3NwYW4+ICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzNF80Ij5FdGlfVW5rbm93bl9Db21tYW5kPC9BPjwvc3Bhbj4gOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzNV80Ij5FdGlfTm9fTWF0Y2g8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzNl80Ij5FdGlfTm90X1NlbGVjdGFibGU8L0E+PC9zcGFuPiAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzN180Ij5FdGlfTm90X0Nvbm5lY3RlZDwvQT48L3NwYW4+ICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOF80Ij5FdGlfUmVxdWVzdF9EZW5pZWQ8L0E+PC9zcGFuPiAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUzOV80Ij5FdGlfSW52YWxpZF9GaWVsZDwvQT48L3NwYW4+ICAgOiA8Yj5leGNlcHRpb248L2I+OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU0MF80Ij5FdGlfQ3VycmVudDwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5leGNlcHRpb248L2I+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgRXh0ZXJuYWwgQyB2YXJpYWJsZXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQ29uY2VwdHVhbGx5IGV2ZW4gaW4gQyB0aGlzIGFyZSBraW5kIG9mIGNvbnN0YW50cywgYnV0IHRoZXkgYXJlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGluaXRpYWxpemVkIGFuZCBzb21ldGltZXMgY2hhbmdlZCBieSB0aGUgbGlicmFyeSByb3V0aW5lcyBhdCBydW50aW1lPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0ZXJtaW5hbC4gSSBiZWxpZXZlIHRoZSBiZXN0IHdheSB0byBtb2RlbDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGlzIGlzIHRvIHVzZSBmdW5jdGlvbnMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEV4dGVybmFsIEMgdmFyaWFibGVzPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBDb25jZXB0dWFsbHkgZXZlbiBpbiBDIHRoaXMgYXJlIGtpbmQgb2YgY29uc3RhbnRzLCBidXQgdGhleSBhcmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGluaXRpYWxpemVkIGFuZCBzb21ldGltZXMgY2hhbmdlZCBieSB0aGUgbGlicmFyeSByb3V0aW5lcyBhdCBydW50aW1lPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGVybWluYWwuIEkgYmVsaWV2ZSB0aGUgYmVzdCB3YXkgdG8gbW9kZWw8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoaXMgaXMgdG8gdXNlIGZ1bmN0aW9ucy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDEyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzU1XzEzIj5MaW5lczwvQT48L0ZPTlQ+ICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDEyXzEzIj5MaW5lczwvQT4pOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NTBfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNTVfMTMiPkxpbmVzPC9BPjwvc3Bhbj4gICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTBfMTMiPkxpbmVzPC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM2M18xMyI+Q29sdW1uczwvQT48L0ZPTlQ+ICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE1XzEzIj5Db2x1bW5zPC9BPik7CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM2M18xMyI+Q29sdW1uczwvQT48L3NwYW4+ICAgICAgICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT47CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTUzXzEzIj5Db2x1bW5zPC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQxOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM3MV8xMyI+VGFiX1NpemU8L0E+PC9GT05UPiAgICAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbDsKLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MThfMTMiPlRhYl9TaXplPC9BPik7CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1Nl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM3MV8xMyI+VGFiX1NpemU8L0E+PC9zcGFuPiAgICAgICAgIDxiPnJldHVybjwvYj4gTmF0dXJhbDsKKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NTZfMTMiPlRhYl9TaXplPC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyMV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM3OV8xMyI+TnVtYmVyX09mX0NvbG9yczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbDsKLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjFfMTMiPk51bWJlcl9PZl9Db2xvcnM8L0E+KTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTU5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzgwXzEzIj5OdW1iZXJfT2ZfQ29sb3JzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBOYXR1cmFsOworICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1OV8xMyI+TnVtYmVyX09mX0NvbG9yczwvQT4pOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzODdfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbDsKLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MjRfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT4pOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzODhfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gTmF0dXJhbDsKKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjJfMTMiPk51bWJlcl9PZl9Db2xvcl9QYWlyczwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiBDX0FDU19NYXAgPGI+aXM8L2I+IDxiPmFycmF5PC9iPiAoQ2hhcmFjdGVyJ1ZhbCAoMCkgLi4gQ2hhcmFjdGVyJ1ZhbCAoMTI3KSkKLSAgICAgICAgPGI+b2Y8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyOV80Ij5BQ1NfTWFwPC9BPjwvRk9OVD4gOiBDX0FDU19NYXA7Ci0gICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDI5XzQiPkFDU19NYXA8L0E+LCAiYWNzX21hcCIpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQ29uc3RhbnRzIGZvciBzZXZlcmFsIGNoYXJhY3RlcnMgZnJvbSB0aGUgQWx0ZXJuYXRlIENoYXJhY3RlciBTZXQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgWW91IG11c3QgdXNlIHRoZXNlIGNvbnN0YW50cyBhcyBpbmRpY2VzIGludG8gdGhlIEFDU19NYXAgYXJyYXk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdG8gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZWQgY2hhcmFjdGVyIGF0IHJ1bnRpbWUuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDM3XzQiPkFDU19VcHBlcl9MZWZ0X0Nvcm5lcjwvQT48L0ZPTlQ+ICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnbCc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQzOF80Ij5BQ1NfTG93ZXJfTGVmdF9Db3JuZXI8L0E+PC9GT05UPiAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ20nOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80MzlfNCI+QUNTX1VwcGVyX1JpZ2h0X0Nvcm5lcjwvQT48L0ZPTlQ+ICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdrJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQwXzQiPkFDU19Mb3dlcl9SaWdodF9Db3JuZXI8L0E+PC9GT05UPiAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnaic7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0MV80Ij5BQ1NfTGVmdF9UZWU8L0E+PC9GT05UPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ3QnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDJfNCI+QUNTX1JpZ2h0X1RlZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICd1JzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQzXzQiPkFDU19Cb3R0b21fVGVlPC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAndic7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0NF80Ij5BQ1NfVG9wX1RlZTwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ3cnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDVfNCI+QUNTX0hvcml6b250YWxfTGluZTwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdxJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ2XzQiPkFDU19WZXJ0aWNhbF9MaW5lPC9BPjwvRk9OVD4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAneCc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ0N180Ij5BQ1NfUGx1c19TeW1ib2w8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ24nOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NDhfNCI+QUNTX1NjYW5fTGluZV8xPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdvJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDQ5XzQiPkFDU19TY2FuX0xpbmVfOTwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAncyc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1MF80Ij5BQ1NfRGlhbW9uZDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gQ2hhcmFjdGVyJ1ZhbCAoOTYpOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTFfNCI+QUNTX0NoZWNrZXJfQm9hcmQ8L0E+PC9GT05UPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdhJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDUyXzQiPkFDU19EZWdyZWU8L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnZic7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1M180Ij5BQ1NfUGx1c19NaW51czwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ2cnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTRfNCI+QUNTX0J1bGxldDwvQT48L0ZPTlQ+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICd+JzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU1XzQiPkFDU19MZWZ0X0Fycm93PC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnLCc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1Nl80Ij5BQ1NfUmlnaHRfQXJyb3c8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJysnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NTdfNCI+QUNTX0Rvd25fQXJyb3c8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICcuJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDU4XzQiPkFDU19VcF9BcnJvdzwvQT48L0ZPTlQ+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnLSc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ1OV80Ij5BQ1NfQm9hcmRfT2ZfU3F1YXJlczwvQT48L0ZPTlQ+ICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ2gnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjBfNCI+QUNTX0xhbnRlcm48L0E+PC9GT05UPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdpJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDYxXzQiPkFDU19Tb2xpZF9CbG9jazwvQT48L0ZPTlQ+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnMCc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2Ml80Ij5BQ1NfU2Nhbl9MaW5lXzM8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ3AnOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjNfNCI+QUNTX1NjYW5fTGluZV83PC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICdyJzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY0XzQiPkFDU19MZXNzX09yX0VxdWFsPC9BPjwvRk9OVD4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAneSc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2NV80Ij5BQ1NfR3JlYXRlcl9Pcl9FcXVhbDwvQT48L0ZPTlQ+ICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ3onOwotICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NjZfNCI+QUNTX1BJPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gQ2hhcmFjdGVyIDo9ICd7JzsKLSAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDY3XzQiPkFDU19Ob3RfRXF1YWw8L0E+PC9GT05UPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IENoYXJhY3RlciA6PSAnfCc7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ2OF80Ij5BQ1NfU3Rlcmxpbmc8L0E+PC9GT05UPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiBDaGFyYWN0ZXIgOj0gJ30nOworICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IENoYXJhY3RlciA8Yj5yYW5nZTwvYj4KKyAgICAgQ2hhcmFjdGVyJ1ZhbCAoMCkgLi4gQ2hhcmFjdGVyJ1ZhbCAoMTI3KTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTY3XzEzIj5BQ1NfTWFwPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NjdfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2N18xMyI+SW5kZXg8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+OworICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIEFDU19NYXAsICJhY3NfbWFwX2FzX2Z1bmN0aW9uIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkOiBuZXd0ZXJtLCBzZXRfdGVybSwgZGVsc2NyZWVuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBDb25zdGFudHMgZm9yIHNldmVyYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBBbHRlcm5hdGUgQ2hhcmFjdGVyIFNldDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgWW91IG11c3QgdXNlIHRoZXNlIGNvbnN0YW50cyBhcyBpbmRpY2VzIGludG8gdGhlIEFDU19NYXAgZnVuY3Rpb248L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRvIGdldCB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGVkIGNoYXJhY3RlciBhdCBydW50aW1lPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTczXzQiPkFDU19VcHBlcl9MZWZ0X0Nvcm5lcjwvQT48L3NwYW4+ICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjIyXzQiPkFDU19VTENPUk5FUjwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU3NV80Ij5BQ1NfTG93ZXJfTGVmdF9Db3JuZXI8L0E+PC9zcGFuPiAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyM180Ij5BQ1NfTExDT1JORVI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81NzdfNCI+QUNTX1VwcGVyX1JpZ2h0X0Nvcm5lcjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMjRfNCI+QUNTX1VSQ09STkVSPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTc5XzQiPkFDU19Mb3dlcl9SaWdodF9Db3JuZXI8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjI1XzQiPkFDU19MUkNPUk5FUjwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4MV80Ij5BQ1NfTGVmdF9UZWU8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyNl80Ij5BQ1NfTFRFRTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4M180Ij5BQ1NfUmlnaHRfVGVlPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyN180Ij5BQ1NfUlRFRTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4NV80Ij5BQ1NfQm90dG9tX1RlZTwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyOF80Ij5BQ1NfQlRFRTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4N180Ij5BQ1NfVG9wX1RlZTwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIyOV80Ij5BQ1NfVFRFRTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4OV80Ij5BQ1NfSG9yaXpvbnRhbF9MaW5lPC9BPjwvc3Bhbj4gICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIzMF80Ij5BQ1NfSExJTkU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTFfNCI+QUNTX1ZlcnRpY2FsX0xpbmU8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMzFfNCI+QUNTX1ZMSU5FPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTkzXzQiPkFDU19QbHVzX1N5bWJvbDwvQT48L3NwYW4+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjMyXzQiPkFDU19QTFVTPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTk1XzQiPkFDU19TY2FuX0xpbmVfMTwvQT48L3NwYW4+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjMzXzQiPkFDU19TMTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU5N180Ij5BQ1NfU2Nhbl9MaW5lXzk8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIzNF80Ij5BQ1NfUzk8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OTlfNCI+QUNTX0RpYW1vbmQ8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMzVfNCI+QUNTX0RJQU1PTkQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDFfNCI+QUNTX0NoZWNrZXJfQm9hcmQ8L0E+PC9zcGFuPiAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMzZfNCI+QUNTX0NLQk9BUkQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MDNfNCI+QUNTX0RlZ3JlZTwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yMzdfNCI+QUNTX0RFR1JFRTwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwNV80Ij5BQ1NfUGx1c19NaW51czwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIzOF80Ij5BQ1NfUExNSU5VUzwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYwN180Ij5BQ1NfQnVsbGV0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzIzOV80Ij5BQ1NfQlVMTEVUPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjA5XzQiPkFDU19MZWZ0X0Fycm93PC9BPjwvc3Bhbj4gICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjQwXzQiPkFDU19MQVJST1c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTFfNCI+QUNTX1JpZ2h0X0Fycm93PC9BPjwvc3Bhbj4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNDFfNCI+QUNTX1JBUlJPVzwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxM180Ij5BQ1NfRG93bl9BcnJvdzwvQT48L3NwYW4+ICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI0Ml80Ij5BQ1NfREFSUk9XPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE1XzQiPkFDU19VcF9BcnJvdzwvQT48L3NwYW4+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjQzXzQiPkFDU19VQVJST1c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MTdfNCI+QUNTX0JvYXJkX09mX1NxdWFyZXM8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNDRfNCI+QUNTX0JPQVJEPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjE5XzQiPkFDU19MYW50ZXJuPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjQ1XzQiPkFDU19MQU5URVJOPC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjIxXzQiPkFDU19Tb2xpZF9CbG9jazwvQT48L3NwYW4+ICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjQ2XzQiPkFDU19CTE9DSzwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYyM180Ij5BQ1NfU2Nhbl9MaW5lXzM8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI0N180Ij5BQ1NfUzM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjVfNCI+QUNTX1NjYW5fTGluZV83PC9BPjwvc3Bhbj4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNDhfNCI+QUNTX1M3PC9BPik7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjI3XzQiPkFDU19MZXNzX09yX0VxdWFsPC9BPjwvc3Bhbj4gICAgICA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjVfMTIiPkFDU19JbmRleDwvQT4KKyAgICAgIDo9IENoYXJhY3RlcidWYWwgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl82XzI4Ij5DdXJzZXNfQ29uc3RhbnRzPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfMjQ5XzQiPkFDU19MRVFVQUw8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MjlfNCI+QUNTX0dyZWF0ZXJfT3JfRXF1YWw8L0E+PC9zcGFuPiAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNTBfNCI+QUNTX0dFUVVBTDwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzMV80Ij5BQ1NfUEk8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI1MV80Ij5BQ1NfUEk8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82MzNfNCI+QUNTX05vdF9FcXVhbDwvQT48L3NwYW4+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2NV8xMiI+QUNTX0luZGV4PC9BPgorICAgICAgOj0gQ2hhcmFjdGVyJ1ZhbCAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+LjxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtI3JlZl8yNTJfNCI+QUNTX05FUVVBTDwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYzNV80Ij5BQ1NfU3Rlcmxpbmc8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTY1XzEyIj5BQ1NfSW5kZXg8L0E+CisgICAgICA6PSBDaGFyYWN0ZXInVmFsICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzI1M180Ij5BQ1NfU1RFUkxJTkc8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80NzZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMzlfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPnN0ZHNjcjwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkOiBuZXd0ZXJtLCBzZXRfdGVybSwgZGVsc2NyZWVuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDgxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzQ3XzEzIj5DdXJyZW50X1dpbmRvdzwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNjcjwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODFfMTMiPkN1cnJlbnRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPnN0ZHNjcjwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTdGFuZGFyZF9XaW5kb3csICJzdGRzY3JfYXNfZnVuY3Rpb24iKTsKKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80ODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4XzE0Ij5Jbml0X1NjcmVlbjwvQT48L0ZPTlQ+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTBfMTMiPkN1cnJlbnRfV2luZG93PC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNjcjwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBDdXJyZW50X1dpbmRvdywgImN1cnNjcl9hc19mdW5jdGlvbiIpOworICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1MF8xMyI+Q3VycmVudF9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNDg5XzE0Ij5Jbml0X1dpbmRvd3M8L0E+PC9GT05UPiA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODZfMTQiPkluaXRfU2NyZWVuPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmluaXRzY3IoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODZfMTQiPkluaXRfU2NyZWVuPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHByYWdtYSBJbmxpbmUgKEluaXRfV2luZG93cyk7PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk4XzE0Ij5Jbml0X1NjcmVlbjwvQT48L3NwYW4+OwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl80OTVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMV8xNCI+RW5kX1dpbmRvd3M8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmVuZHdpbigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQ5N18xNCI+RW5kX1NjcmVlbjwvQT48L0ZPTlQ+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5NV8xNCI+RW5kX1dpbmRvd3M8L0E+OwotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ5NV8xNCI+RW5kX1dpbmRvd3M8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJhZ21hIElubGluZSAoRW5kX1NjcmVlbik7PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NTlfMTQiPkluaXRfV2luZG93czwvQT48L3NwYW4+IDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1Nl8xNCI+SW5pdF9TY3JlZW48L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmluaXRzY3IoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NTZfMTQiPkluaXRfU2NyZWVuPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBwcmFnbWEgSW5saW5lIChJbml0X1dpbmRvd3MpOzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUwMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxXzEzIj5Jc19FbmRfV2luZG93PC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCI+aXNlbmR3aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDJfMTMiPklzX0VuZF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTExXzE0Ij5FbmRfV2luZG93czwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmVuZHdpbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjY3XzE0Ij5FbmRfU2NyZWVuPC9BPjwvc3Bhbj4gPGI+cmVuYW1lczwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjY1XzE0Ij5FbmRfV2luZG93czwvQT47CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjY1XzE0Ij5FbmRfV2luZG93czwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgcHJhZ21hIElubGluZSAoRW5kX1NjcmVlbik7PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdmUuM3guaHRtbCI+Y3Vyc19tb3ZlLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY3Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxXzEzIj5Jc19FbmRfV2luZG93PC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmlzZW5kd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjcyXzEzIj5Jc19FbmRfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMzXzE0Ij5Nb3ZlX0N1cnNvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUxMV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMzXzI3Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MTJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNF8yNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTEzXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzVfMjciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdmUuM3guaHRtbCI+d21vdmUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtb3ZlKCk8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MTFfMTQiPk1vdmVfQ3Vyc29yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX21vdmUuM3guaHRtbCI+Y3Vyc19tb3ZlLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzM18xNCI+TW92ZV9DdXJzb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY4MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMzXzI3Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjgyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzRfMjciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82ODNfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNV8yNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfbW92ZS4zeC5odG1sIj53bW92ZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtb3ZlKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82ODFfMTQiPk1vdmVfQ3Vyc29yPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4XzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0OF8xOSI+V2luPC9BPjwvRk9OVD4gOiAgPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjRfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0OV8xOSI+Q2g8L0E+PC9GT05UPiAgOiAgPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZGNoLjN4Lmh0bWwiPndhZGRjaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGFkZGNoKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2guM3guaHRtbCI+Y3Vyc19hZGRjaC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzUyOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwXzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MF8xOSI+V2luPC9BPjwvRk9OVD4gOiAgPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MjlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MV8xOSI+Q2g8L0E+PC9GT05UPiAgOiAgPGI+aW48L2I+IENoYXJhY3Rlcik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFkZCBhIHNpbmdsZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgbG9naWNhbCBjdXJzb3IgcG9zaXRpb24gdG88L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgdGhlIHdpbmRvdy4gVXNlIHRoZSBjdXJyZW50IHdpbmRvd3MgYXR0cmlidXRlcy48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4XzE0Ij5BZGQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5M18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ4XzE5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY5NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ5XzE5Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaC4zeC5odG1sIj53YWRkY2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogYWRkY2goKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfOSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MF8xNCI+QWRkPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MV83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3Ml83Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTM3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3M183Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81MzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0XzciPkNoPC9BPjwvRk9OVD4gICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZGNoLjN4Lmh0bWwiPm12d2FkZGNoKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZhZGRjaCgpPC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MF8xNCI+QWRkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OThfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MF8xOSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82OTlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MV8xOSI+Q2g8L0E+PC9zcGFuPiAgOiBDaGFyYWN0ZXIpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQWRkIGEgc2luZ2xlIGNoYXJhY3RlciBhdCB0aGUgY3VycmVudCBsb2dpY2FsIGN1cnNvciBwb3NpdGlvbiB0bzwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdGhlIHdpbmRvdy4gVXNlIHRoZSBjdXJyZW50IHdpbmRvd3MgYXR0cmlidXRlcy48L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg5XzE0Ij5BZGQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkwXzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxXzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NDVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkyXzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU0Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTNfNyI+Q2g8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gQ2hhcmFjdGVyKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTW92ZSB0byB0aGUgcG9zaXRpb24gYW5kIGFkZCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW50byB0aGUgd2luZG93PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZXJlIGFyZSBtb3JlIEFkZCByb3V0aW5lcywgc28gdGhlIElubGluZSBwcmFnbWEgZm9sbG93cyBsYXRlcjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzBfMTQiPkFkZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzA1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MV83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcwNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzJfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczXzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc0XzciPkNoPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZGNoLjN4Lmh0bWwiPm12d2FkZGNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12YWRkY2goKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDRfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNV83Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNl83Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaC4zeC5odG1sIj53ZWNob2NoYXIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBlY2hvY2hhcigpPC9FTT48L0ZPTlQ+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MF8xNCI+QWRkPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MTNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxXzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzE0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5Ml83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTNfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcxNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTRfNyI+Q2g8L0E+PC9zcGFuPiAgICAgOiBDaGFyYWN0ZXIpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTW92ZSB0byB0aGUgcG9zaXRpb24gYW5kIGFkZCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW50byB0aGUgd2luZG93PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGVyZSBhcmUgbW9yZSBBZGQgcm91dGluZXMsIHNvIHRoZSBJbmxpbmUgcHJhZ21hIGZvbGxvd3MgbGF0ZXI8L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE3XzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMThfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU1OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTlfNyI+Q2g8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gQ2hhcmFjdGVyKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQWRkIGEgY2hhcmFjdGVyIGFuZCBkbyBhbiBpbW1lZGlhdGUgcmVmcmVzaCBvZiB0aGUgc2NyZWVuLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA1XzE0Ij5BZGRfV2l0aF9JbW1lZGlhdGVfRWNobzwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzIyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNl83Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzcyM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDdfNyI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2guM3guaHRtbCI+d2VjaG9jaGFyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGVjaG9jaGFyKCk8L0VNPjwvc3Bhbj4KKworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMThfMTQiPkFkZF9XaXRoX0ltbWVkaWF0ZV9FY2hvPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83MjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE5XzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMF83Ij5DaDwvQT48L3NwYW4+ICA6IENoYXJhY3Rlcik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBZGQgYSBjaGFyYWN0ZXIgYW5kIGRvIGFuIGltbWVkaWF0ZSByZWZyZXNoIG9mIHRoZSBzY3JlZW4uPC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoQWRkX1dpdGhfSW1tZWRpYXRlX0VjaG8pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+Y3Vyc193aW5kb3cuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiB3Y3Vyc3luY3VwPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5jdXJzX3dpbmRvdy4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE5vdCBJbXBsZW1lbnRlZDogd2N1cnN5bmN1cDwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81NjlfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyOV8xMyI+Q3JlYXRlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyOV8yMSI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzBfMjEiPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzFfMjEiPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU3M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzJfMjEiPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IERlZmF1bHQgTnVtYmVyX09mX0xpbmVzLCBOdW1iZXJfT2ZfQ29sdW1uczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0aGUgQyB2ZXJzaW9uIGxldHMgdGhlbSBiZSAwLCBzZWUgdGhlIG1hbiBwYWdlLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5uZXd3aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NjlfMTMiPkNyZWF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzM5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzBfMTMiPkNyZWF0ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMF8yMSI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzQxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMV8yMSI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+Q29sdW1uX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMyXzIxIj5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc0M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzNfMjEiPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBEZWZhdWx0IE51bWJlcl9PZl9MaW5lcywgTnVtYmVyX09mX0NvbHVtbnM8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRoZSBDIHZlcnNpb24gbGV0cyB0aGVtIGJlIDAsIHNlZSB0aGUgbWFuIHBhZ2UuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5uZXd3aW4oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MzlfMTMiPkNyZWF0ZTwvQT4pOwogCiAgICA8Yj5mdW5jdGlvbjwvYj4gTmV3X1dpbmRvdwotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODBfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvRk9OVD4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4MV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L0ZPTlQ+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODJfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTgzXzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+Ci0gICAgIDxiPnJlbmFtZXM8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU2OV8xMyI+Q3JlYXRlPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJhZ21hIElubGluZSAoTmV3X1dpbmRvdyk7PC9FTT48L0ZPTlQ+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzUwXzciPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1MV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1Ml83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc1M183Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPgorICAgICA8Yj5yZW5hbWVzPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MzlfMTMiPkNyZWF0ZTwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBwcmFnbWEgSW5saW5lIChOZXdfV2luZG93KTs8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUyXzE0Ij5EZWxldGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81ODhfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1Ml8yMiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+ZGVsd2luKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFJlc2V0IFdpbiB0byBOdWxsX1dpbmRvdzwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4OF8xNCI+RGVsZXRlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTNfMTQiPkRlbGV0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzU4XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTNfMjIiPldpbjwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5kZWx3aW4oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJlc2V0IFdpbiB0byBOdWxsX1dpbmRvdzwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc1OF8xNCI+RGVsZXRlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjYzXzEzIj5TdWJfV2luZG93PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI2NF83Ij5XaW48L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjY1XzciPk51bWJlcl9PZl9MaW5lczwvQT48L0ZPTlQ+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl81OTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjY2XzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzU5OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNjdfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNTk5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI2OF83Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+c3Vid2luKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTk0XzEzIj5TdWJfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI2NF8xMyI+U3ViX1dpbmRvdzwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI2NV83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNjZfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI2N183Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc2OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNjhfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjY5XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+c3Vid2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY0XzEzIj5TdWJfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwNF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjkxXzEzIj5EZXJpdmVkX1dpbmRvdzwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTJfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5M183Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjA3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5NF83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L0ZPTlQ+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjk1XzciPkZpcnN0X0xpbmVfUG9zaXRpb248L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYwOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTZfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPmRlcndpbigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwNF8xMyI+RGVyaXZlZF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjkyXzEzIj5EZXJpdmVkX1dpbmRvdzwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5M183Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTRfNyI+TnVtYmVyX09mX0xpbmVzPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzc3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI5NV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc3OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yOTZfNyI+Rmlyc3RfTGluZV9Qb3NpdGlvbjwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83NzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjk3XzciPkZpcnN0X0NvbHVtbl9Qb3NpdGlvbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+ZGVyd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzc0XzEzIj5EZXJpdmVkX1dpbmRvdzwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MTRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMxOV8xMyI+RHVwbGljYXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjE0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMTlfMjQiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5kdXB3aW4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MTRfMTMiPkR1cGxpY2F0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzg0XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMjBfMTMiPkR1cGxpY2F0ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzg0XzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMjBfMjQiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+ZHVwd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzg0XzEzIj5EdXBsaWNhdGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzMyXzE0Ij5Nb3ZlX1dpbmRvdzwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYxOV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzMyXzI3Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyMF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzMzXzI3Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzMzNF8yNyI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPm12d2luKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjE5XzE0Ij5Nb3ZlX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc4OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzMzXzE0Ij5Nb3ZlX1dpbmRvdzwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzg5XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMzNfMjciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5MF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzM0XzI3Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzkxXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zMzVfMjciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3dpbmRvdy4zeC5odG1sIj5tdndpbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4OV8xNCI+TW92ZV9XaW5kb3c8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYyNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzQ2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjI2XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNDZfMzUiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjdfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM0N18zNSI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MjhfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM0OF8zNSI+Q29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPm12ZGVyd2luKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjI2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzk2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zNDdfMTQiPk1vdmVfRGVyaXZlZF9XaW5kb3c8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5Nl8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzQ3XzM1Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzc5N18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzQ4XzM1Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl83OThfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM0OV8zNSI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPm12ZGVyd2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzk2XzE0Ij5Nb3ZlX0Rlcml2ZWRfV2luZG93PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xOCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzNfMTQiPlN5bmNocm9uaXplX1Vwd2FyZHM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzNfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzM18xNCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPndzeW5jdXAoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MDNfMTQiPlN5bmNocm9uaXplX1Vwd2FyZHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwM18zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODAzXzE0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+d3N5bmN1cCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbXBvcnQgKEMsIFN5bmNocm9uaXplX1Vwd2FyZHMsICJ3c3luY3VwIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xOSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82MzhfMTQiPlN5bmNocm9uaXplX0Rvd253YXJkczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzYzOF8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjM4XzE0Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+d3N5bmNkb3duKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODA4XzE0Ij5TeW5jaHJvbml6ZV9Eb3dud2FyZHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwOF8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODA4XzE0Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCI+d3N5bmNkb3duKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IEltcG9ydCAoQywgU3luY2hyb25pemVfRG93bndhcmRzLCAid3N5bmNkb3duIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM2MF8xNCI+U2V0X1N5bmNoX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NDNfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM2MF8zMCI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY0NF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYxXzMwIj5Nb2RlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBGYWxzZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPnN5bmNvaygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0M18xNCI+U2V0X1N5bmNoX01vZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM2MV8xNCI+U2V0X1N5bmNoX01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxM18zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYxXzMwIj5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxNF8zMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzYyXzMwIj5Nb2RlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwiPnN5bmNvaygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgxM18xNCI+U2V0X1N5bmNoX01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwiPmN1cnNfYWRkc3RyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZHN0ci4zeC5odG1sIj5jdXJzX2FkZHN0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzcyXzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NTNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM3Ml8xOSI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzczXzE5Ij5TdHI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY1NV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc0XzE5Ij5MZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRzdHIuM3guaHRtbCI+d2FkZG5zdHIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB3YWRkc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBhZGRuc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBhZGRzdHIoKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzczXzE0Ij5BZGQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyM18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzczXzE5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgyNF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzc0XzE5Ij5TdHI8L0E+PC9zcGFuPiA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MjVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM3NV8xOSI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwiPndhZGRuc3RyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHdhZGRzdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhZGRuc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogYWRkc3RyKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzIyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzkwXzE0Ij5BZGQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NjJfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM5MV83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjYzXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zOTJfNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzkzXzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY2NV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzk0XzciPlN0cjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjY2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zOTVfNyI+TGVuPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwiPm12d2FkZG5zdHIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdndhZGRzdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12YWRkbnN0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZhZGRzdHIoKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzkxXzE0Ij5BZGQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgzMl8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMzkyXzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODMzXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zOTNfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84MzRfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzM5NF83Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODM1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zOTVfNyI+U3RyPC9BPjwvc3Bhbj4gICAgOiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODM2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8zOTZfNyI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwiPm12d2FkZG5zdHIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZ3YWRkc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZhZGRuc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZhZGRzdHIoKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sIj5jdXJzX2FkZGNoc3RyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2FkZGNoc3RyLjN4Lmh0bWwiPmN1cnNfYWRkY2hzdHIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwMl8xNCI+QWRkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjc3XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MDNfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY3OF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA0XzciPlN0cjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEF0dHJpYnV0ZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82NzlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwNV83Ij5MZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sIj53YWRkY2huc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogd2FkZGNoc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBhZGRjaG5zdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGFkZGNoc3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwM18xNCI+QWRkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NDdfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQwNF83Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0OF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDA1XzciPlN0cjwvQT48L3NwYW4+IDogQXR0cmlidXRlZF9TdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODQ5XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MDZfNyI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2hzdHIuM3guaHRtbCI+d2FkZGNobnN0cigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB3YWRkY2hzdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhZGRjaG5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhZGRjaHN0cigpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQyNV8xNCI+QWRkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjg2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MjZfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzY4N18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDI3XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQyOF83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl82ODlfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQyOV83Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBBdHRyaWJ1dGVkX1N0cmluZzsKLSAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNjkwXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MzBfNyI+TGVuPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2hzdHIuM3guaHRtbCI+bXZ3YWRkY2huc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZ3YWRkY2hzdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12YWRkY2huc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmFkZGNoc3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQyN18xNCI+QWRkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NTZfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQyOF83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1N18xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDI5XzciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODU4XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MzBfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg1OV8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDMxXzciPlN0cjwvQT48L3NwYW4+ICAgIDogQXR0cmlidXRlZF9TdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODYwXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MzJfNyI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYWRkY2hzdHIuM3guaHRtbCI+bXZ3YWRkY2huc3RyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12d2FkZGNoc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZhZGRjaG5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdmFkZGNoc3RyKCk8L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChBZGQpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBOb3QgaW1wbGVtZW50ZWQ6IG12aGxpbmUsICBtdndobGluZSwgbXZ2bGluZSwgbXZ3dmxpbmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCB1c2UgTW92ZV9DdXJzb3IgdGhlbiBIb3Jpem9udGFsX0xpbmUgb3IgVmVydGljYWxfTGluZTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE5vdCBpbXBsZW1lbnRlZDogbXZobGluZSwgIG12d2hsaW5lLCBtdnZsaW5lLCBtdnd2bGluZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCB1c2UgTW92ZV9DdXJzb3IgdGhlbiBIb3Jpem9udGFsX0xpbmUgb3IgVmVydGljYWxfTGluZTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MzdfMTQiPkJvcmRlcjwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80MzhfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDM5XzciPkxlZnRfU2lkZV9TeW1ib2w8L0E+PC9GT05UPiAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcwN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDBfNyI+UmlnaHRfU2lkZV9TeW1ib2w8L0E+PC9GT05UPiAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzA4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0MV83Ij5Ub3BfU2lkZV9TeW1ib2w8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQyXzciPkJvdHRvbV9TaWRlX1N5bWJvbDwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDNfNyI+VXBwZXJfTGVmdF9Db3JuZXJfU3ltYm9sPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzExXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0NF83Ij5VcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNzFfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDQ1XzciPkxvd2VyX0xlZnRfQ29ybmVyX1N5bWJvbDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcxM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDZfNyI+TG93ZXJfUmlnaHRfQ29ybmVyX1N5bWJvbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDM5XzE0Ij5Cb3JkZXI8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NDBfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0MV83Ij5MZWZ0X1NpZGVfU3ltYm9sPC9BPjwvc3Bhbj4gICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0Ml83Ij5SaWdodF9TaWRlX1N5bWJvbDwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0M183Ij5Ub3BfU2lkZV9TeW1ib2w8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODc5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0NF83Ij5Cb3R0b21fU2lkZV9TeW1ib2w8L0E+PC9zcGFuPiAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODgwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0NV83Ij5VcHBlcl9MZWZ0X0Nvcm5lcl9TeW1ib2w8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODgxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0Nl83Ij5VcHBlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODgyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0N183Ij5Mb3dlcl9MZWZ0X0Nvcm5lcl9TeW1ib2w8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODgzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ0OF83Ij5Mb3dlcl9SaWdodF9Db3JuZXJfU3ltYm9sPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzUwOV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4KICAgICAgKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbCI+d2JvcmRlcigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGJvcmRlcigpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzA0XzE0Ij5Cb3JkZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYm9yZGVyLjN4Lmh0bWwiPndib3JkZXIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogYm9yZGVyKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84NzRfMTQiPkJvcmRlcjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzIwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NzRfMTQiPkJveDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NzVfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzIyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ3Nl83Ij5WZXJ0aWNhbF9TeW1ib2w8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ3N183Ij5Ib3Jpem9udGFsX1N5bWJvbDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzcxXzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYm9yZGVyLjN4Lmh0bWwiPmJveCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcyMF8xNCI+Qm94PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODkwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NzVfMTQiPkJveDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODkxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ3Nl83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODkyXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ3N183Ij5WZXJ0aWNhbF9TeW1ib2w8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDlfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg5M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80NzhfNyI+SG9yaXpvbnRhbF9TeW1ib2w8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JvcmRlci4zeC5odG1sIj5ib3goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl84OTBfMTQiPkJveDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzI4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80ODVfMTQiPkhvcml6b250YWxfTGluZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzcyOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80ODZfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzMwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ4N183Ij5MaW5lX1NpemU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IE5hdHVyYWw7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80ODhfNyI+TGluZV9TeW1ib2w8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JvcmRlci4zeC5odG1sIj53aGxpbmUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBobGluZSgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzI4XzE0Ij5Ib3Jpem9udGFsX0xpbmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzQ4Nl8xNCI+SG9yaXpvbnRhbF9MaW5lPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDg3XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNDg4XzciPkxpbmVfU2l6ZTwvQT48L3NwYW4+ICAgOiBOYXR1cmFsOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl80ODlfNyI+TGluZV9TeW1ib2w8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTA5XzQiPkRlZmF1bHRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JvcmRlci4zeC5odG1sIj53aGxpbmUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogaGxpbmUoKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5OF8xNCI+SG9yaXpvbnRhbF9MaW5lPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8yOCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83MzdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwMl8xNCI+VmVydGljYWxfTGluZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzczOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDNfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzM5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwNF83Ij5MaW5lX1NpemU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IE5hdHVyYWw7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc0MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDVfNyI+TGluZV9TeW1ib2w8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM3MV80Ij5EZWZhdWx0X0NoYXJhY3RlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JvcmRlci4zeC5odG1sIj53dmxpbmUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB2bGluZSgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzM3XzE0Ij5WZXJ0aWNhbF9MaW5lPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTA3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDRfMTQiPlZlcnRpY2FsX0xpbmU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDVfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MDZfNyI+TGluZV9TaXplPC9BPjwvc3Bhbj4gICA6IE5hdHVyYWw7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTEwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUwN183Ij5MaW5lX1N5bWJvbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81MDlfNCI+RGVmYXVsdF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYm9yZGVyLjN4Lmh0bWwiPnd2bGluZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB2bGluZSgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTA3XzE0Ij5WZXJ0aWNhbF9MaW5lPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2guM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IGltcGxlbWVudGVkOiBtdmdldGNoLCBtdndnZXRjaDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRjaC4zeC5odG1sIj5jdXJzX2dldGNoLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IGltcGxlbWVudGVkOiBtdmdldGNoLCBtdndnZXRjaDwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMjkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyMF8xMyI+R2V0X0tleXN0cm9rZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc1MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTIwXzI4Ij5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0Y2guM3guaHRtbCI+d2dldGNoKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogZ2V0Y2goKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBHZXQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUga2V5Ym9hcmQgYW5kIGVjaG8gaXQgLSBpZiBlbmFibGVkIC0gdG8gdGhlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHdpbmRvdy48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSWYgZm9yIGFueSByZWFzb24gKGkuZS4gYSB0aW1lb3V0KSB3ZSBjb3VsZG4ndCBnZXQgYSBjaGFyYWN0ZXIgdGhlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHJldHVybmVkIGtleWNvZGUgaXMgS2V5X05vbmUuPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzUxXzEzIj5HZXRfS2V5c3Ryb2tlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzI5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MjFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUyM18xMyI+R2V0X0tleXN0cm9rZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTIxXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MjNfMjgiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0Y2guM3guaHRtbCI+d2dldGNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGdldGNoKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEdldCBhIGNoYXJhY3RlciBmcm9tIHRoZSBrZXlib2FyZCBhbmQgZWNobyBpdCAtIGlmIGVuYWJsZWQgLSB0byB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHdpbmRvdy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIElmIGZvciBhbnkgcmVhc29uIChpLmUuIGEgdGltZW91dCkgd2UgY291bGQgbm90IGdldCBhIGNoYXJhY3RlciB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJldHVybmVkIGtleWNvZGUgaXMgS2V5X05vbmUuPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTIxXzEzIj5HZXRfS2V5c3Ryb2tlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUzNV8xNCI+VW5kb19LZXlzdHJva2U8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjJfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzUzNV8zMCI+S2V5PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzNfMTIiPlJlYWxfS2V5X0NvZGU8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRjaC4zeC5odG1sIj51bmdldGNoKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzYyXzE0Ij5VbmRvX0tleXN0cm9rZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTM4XzE0Ij5VbmRvX0tleXN0cm9rZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTMyXzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81MzhfMzAiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzFfMTIiPlJlYWxfS2V5X0NvZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0Y2guM3guaHRtbCI+dW5nZXRjaCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkzMl8xNCI+VW5kb19LZXlzdHJva2U8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzY3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NDVfMTMiPkhhc19LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NjdfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU0NV8yMiI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRjaC4zeC5odG1sIj5oYXNfa2V5KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzY3XzEzIj5IYXNfS2V5PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85MzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU0OF8xMyI+SGFzX0tleTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTM3XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NDhfMjIiPktleTwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldGNoLjN4Lmh0bWwiPmhhc19rZXkoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzdfMTMiPkhhc19LZXk8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgU29tZSBoZWxwZXIgZnVuY3Rpb25zPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3NF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTU3XzEzIj5Jc19GdW5jdGlvbl9LZXk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83NzRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU1N18zMCI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmV0dXJuIFRydWUgaWYgdGhlIEtleSBpcyBhIGZ1bmN0aW9uIGtleSAoaS5lLiBvbmUgb2YgRjAgLi4gRjYzKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc3NF8xMyI+SXNfRnVuY3Rpb25fS2V5PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IFNvbWUgaGVscGVyIGZ1bmN0aW9uczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NDRfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU2MF8xMyI+SXNfRnVuY3Rpb25fS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NDRfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU2MF8zMCI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83Nl8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJldHVybiBUcnVlIGlmIHRoZSBLZXkgaXMgYSBmdW5jdGlvbiBrZXkgKGkuZS4gb25lIG9mIEYwIC4uIEY2Myk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDRfMTMiPklzX0Z1bmN0aW9uX0tleTwvQT4pOwogCi0gICA8Yj5zdWJ0eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc3OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiBJbnRlZ2VyIDxiPnJhbmdlPC9iPiAwIC4uIDYzOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAobiljdXJzZXMgYWxsb3dzIGZvciA2NCBmdW5jdGlvbiBrZXlzLjwvRU0+PC9GT05UPgorICAgPGI+c3VidHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk0OF8xMiI+RnVuY3Rpb25fS2V5X051bWJlcjwvQT48L3NwYW4+IDxiPmlzPC9iPiBJbnRlZ2VyIDxiPnJhbmdlPC9iPiAwIC4uIDYzOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgKG4pY3Vyc2VzIGFsbG93cyBmb3IgNjQgZnVuY3Rpb24ga2V5cy48L0VNPjwvc3Bhbj4KIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfNzgxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81NjlfMTMiPkZ1bmN0aW9uX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzc4MV8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTY5XzI3Ij5LZXk8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczXzEyIj5SZWFsX0tleV9Db2RlPC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzhfMTIiPkZ1bmN0aW9uX0tleV9OdW1iZXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBSZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgZnVuY3Rpb24ga2V5LiBJZiB0aGUgY29kZSBpcyBub3QgYTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBmdW5jdGlvbiBrZXksIGEgQ09OU1RSQUlOVF9FUlJPUiB3aWxsIGJlIHJhaXNlZC48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83ODFfMTMiPkZ1bmN0aW9uX0tleTwvQT4pOworICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU3Ml8xMyI+RnVuY3Rpb25fS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NTFfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU3Ml8yNyI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTQ4XzEyIj5GdW5jdGlvbl9LZXlfTnVtYmVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbiBrZXkuIElmIHRoZSBjb2RlIGlzIG5vdCBhPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBmdW5jdGlvbiBrZXksIGEgQ09OU1RSQUlOVF9FUlJPUiB3aWxsIGJlIHJhaXNlZC48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTFfMTMiPkZ1bmN0aW9uX0tleTwvQT4pOwogCi0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU4MF8xMyI+RnVuY3Rpb25fS2V5X0NvZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl83ODZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU4MF8zMiI+S2V5PC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83NzhfMTIiPkZ1bmN0aW9uX0tleV9OdW1iZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzczXzEyIj5SZWFsX0tleV9Db2RlPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgUmV0dXJuIHRoZSBrZXkgY29kZSBmb3IgYSBnaXZlbiBmdW5jdGlvbi1rZXkgbnVtYmVyLjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4Nl8xMyI+RnVuY3Rpb25fS2V5X0NvZGU8L0E+KTsKKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTU2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81ODNfMTMiPkZ1bmN0aW9uX0tleV9Db2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NTZfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzU4M18zMiI+S2V5PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NDhfMTIiPkZ1bmN0aW9uX0tleV9OdW1iZXI8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFJldHVybiB0aGUga2V5IGNvZGUgZm9yIGEgZ2l2ZW4gZnVuY3Rpb24ta2V5IG51bWJlci48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85NTZfMTMiPkZ1bmN0aW9uX0tleV9Db2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkIGF0dHJfb2ZmLCAgd2F0dHJfb2ZmLDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8ICBhdHRyX29uLCB3YXR0cl9vbiwgYXR0cl9zZXQsIHdhdHRyX3NldDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkIGF0dHJfb2ZmLCAgd2F0dHJfb2ZmLDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCAgYXR0cl9vbiwgd2F0dHJfb24sIGF0dHJfc2V0LCB3YXR0cl9zZXQ8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBQQUlSX05VTUJFUjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBQQUlSX05VTUJFUihjKSBpcyB0aGUgc2FtZSBhcyBjLkNvbG9yPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBQQUlSX05VTUJFUjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgUEFJUl9OVU1CRVIoYykgaXMgdGhlIHNhbWUgYXMgYy5Db2xvcjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODAwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81ODZfMTQiPlN0YW5kb3V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODAwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81ODZfMjQiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTg3XzI0Ij5PbjwvQT48L0ZPTlQ+ICA6IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogd3N0YW5kb3V0KCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB3c3RhbmRlbmQoKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNTg5XzE0Ij5TdGFuZG91dDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTcwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81ODlfMjQiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTcxXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl81OTBfMjQiPk9uPC9BPjwvc3Bhbj4gIDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogd3N0YW5kb3V0KCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogd3N0YW5kZW5kKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjA2XzE0Ij5Td2l0Y2hfQ2hhcmFjdGVyX0F0dHJpYnV0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgwN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MDdfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjA4XzciPkF0dHI8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjA5XzciPk9uPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOyA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGlmIEZhbHNlIHdlIHN3aXRjaCBPZmYuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFN3aXRjaGVzIHRob3NlIEF0dHJpYnV0ZXMgc2V0IHRvIHRydWUgaW4gdGhlIGxpc3QuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj53YXR0cm9uKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogd2F0dHJvZmYoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGF0dHJvbigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogYXR0cm9mZigpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzMzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTc2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MDlfMTQiPlN3aXRjaF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjEwXzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk3OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MTFfNyI+QXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85NzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjEyXzciPk9uPC9BPjwvc3Bhbj4gICA6IEJvb2xlYW4gOj0gVHJ1ZSk7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGlmIEZhbHNlIHdlIHN3aXRjaCBPZmYuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBTd2l0Y2hlcyB0aG9zZSBBdHRyaWJ1dGVzIHNldCB0byB0cnVlIGluIHRoZSBsaXN0LjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPndhdHRyb24oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogd2F0dHJvZmYoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhdHRyb24oKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhdHRyb2ZmKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM0XzE0Ij5TZXRfQ2hhcmFjdGVyX0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM1XzciPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgxOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MzZfNyI+QXR0cjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjM3XzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj53YXR0cnNldCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGF0dHJzZXQoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgxN18xNCI+U2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGVzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTg3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82MzdfMTQiPlNldF9DaGFyYWN0ZXJfQXR0cmlidXRlczwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTg4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYzOF83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTg5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYzOV83Ij5BdHRyPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjQwXzciPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj53YXR0cnNldCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBhdHRyc2V0KCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODdfMTQiPlNldF9DaGFyYWN0ZXJfQXR0cmlidXRlczwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY1Ml8xMyI+R2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84MjdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjUyXzM4Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+d2F0dHJfZ2V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogYXR0cl9nZXQoKTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8zNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTk2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NTRfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85OTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjU0XzM4Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQxN185Ij5DaGFyYWN0ZXJfQXR0cmlidXRlX1NldDwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+d2F0dHJfZ2V0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGF0dHJfZ2V0KCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODMyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NzVfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODMzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3NV8zOCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+d2F0dHJfZ2V0KCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDAyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82NzVfMTMiPkdldF9DaGFyYWN0ZXJfQXR0cmlidXRlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDAzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY3NV8zOCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+d2F0dHJfZ2V0KCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoR2V0X0NoYXJhY3Rlcl9BdHRyaWJ1dGUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODM4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82OThfMTQiPlNldF9Db2xvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzOF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk4XzI1Ij5XaW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzgzOV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk5XzI1Ij5QYWlyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPndjb2xvcl9zZXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBjb2xvcl9zZXQoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzgzOF8xNCI+U2V0X0NvbG9yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk2XzE0Ij5TZXRfQ29sb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMDhfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzY5Nl8yNSI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAwOV8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNjk3XzI1Ij5QYWlyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPndjb2xvcl9zZXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogY29sb3Jfc2V0KCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDA4XzE0Ij5TZXRfQ29sb3I8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzEzXzE0Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MTRfNyI+V2luPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODQ3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzcxNV83Ij5Db3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEludGVnZXIgOj0gLTE7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg0OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MTZfNyI+QXR0cjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE3XzciPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj53Y2hnYXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBjaGdhdCgpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzM4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzEyXzE0Ij5DaGFuZ2VfQXR0cmlidXRlczwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAxNl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MTNfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE0XzciPkNvdW50PC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE1XzciPkF0dHI8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzE2XzciPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYXR0ci4zeC5odG1sIj53Y2hnYXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogY2hnYXQoKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MzZfMTQiPkNoYW5nZV9BdHRyaWJ1dGVzPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzczN183Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzczOF83Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPidGaXJzdDsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzczOV83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4nRmlyc3Q7Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg1OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NDBfNyI+Q291bnQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMTsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc0MV83Ij5BdHRyPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NjBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzQyXzciPkNvbG9yPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2F0dHIuM3guaHRtbCI+bXZ3Y2hnYXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmNoZ2F0KCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMzkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDI0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83MzdfMTQiPkNoYW5nZV9BdHRyaWJ1dGVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDI1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzczOF83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMjZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzM5XzciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT4nRmlyc3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NDBfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4nRmlyc3Q7CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTAyOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NDFfNyI+Q291bnQ8L0E+PC9zcGFuPiAgOiBJbnRlZ2VyIDo9IC0xOworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwMjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzQyXzciPkF0dHI8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODVfNCI+Tm9ybWFsX1ZpZGVvPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDMwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc0M183Ij5Db2xvcjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT4nRmlyc3QpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwiPm12d2NoZ2F0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12Y2hnYXQoKTwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKENoYW5nZV9BdHRyaWJ1dGVzKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5jdXJzX2JlZXAuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5jdXJzX2JlZXAuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NzBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc0OV8xNCI+QmVlcDwvQT48L0ZPTlQ+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JlZXAuM3guaHRtbCI+YmVlcCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3MF8xNCI+QmVlcDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNDBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc1MF8xNCI+QmVlcDwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19iZWVwLjN4Lmh0bWwiPmJlZXAoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDQwXzE0Ij5CZWVwPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84NzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc1OV8xNCI+Rmxhc2hfU2NyZWVuPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5mbGFzaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg3NV8xNCI+Rmxhc2hfU2NyZWVuPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA0NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzYwXzE0Ij5GbGFzaF9TY3JlZW48L0E+PC9zcGFuPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYmVlcC4zeC5odG1sIj5mbGFzaCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDVfMTQiPkZsYXNoX1NjcmVlbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPmN1cnNfaW5vcHRzLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkIDogdHlwZWFoZWFkPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84ODZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc2OV8xNCI+U2V0X0NicmVha19Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfODg2XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NjlfMzEiPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+Y2JyZWFrKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbm9jYnJlYWsoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg4Nl8xNCI+U2V0X0NicmVha19Nb2RlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE5vdCBpbXBsZW1lbnRlZCA6IHR5cGVhaGVhZDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80MiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNTZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc3MF8xNCI+U2V0X0NicmVha19Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDU2XzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83NzBfMzEiPlN3aXRjaE9uPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+Y2JyZWFrKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG5vY2JyZWFrKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDU2XzE0Ij5TZXRfQ2JyZWFrX01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzg4XzE0Ij5TZXRfUmF3X01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OTJfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzc4OF8yOCI+U3dpdGNoT248L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5yYXcoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBub3JhdygpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfODkyXzE0Ij5TZXRfUmF3X01vZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDYyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl83ODlfMTQiPlNldF9SYXdfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2Ml8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfNzg5XzI4Ij5Td2l0Y2hPbjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPnJhdygpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBub3JhdygpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA2Ml8xNCI+U2V0X1Jhd19Nb2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl84OThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgwN18xNCI+U2V0X0VjaG9fTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzg5OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODA3XzI5Ij5Td2l0Y2hPbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPmVjaG8oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBub2VjaG8oKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzg5OF8xNCI+U2V0X0VjaG9fTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNjhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgwOF8xNCI+U2V0X0VjaG9fTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA2OF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODA4XzI5Ij5Td2l0Y2hPbjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPmVjaG8oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbm9lY2hvKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDY4XzE0Ij5TZXRfRWNob19Nb2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MDRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyNl8xNCI+U2V0X01ldGFfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkwNF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODI2XzI5Ij5XaW48L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTA1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MjdfMjkiPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+bWV0YSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkwNF8xNCI+U2V0X01ldGFfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyN18xNCI+U2V0X01ldGFfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA3NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODI3XzI5Ij5XaW48L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwNzVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgyOF8yOSI+U3dpdGNoT248L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5tZXRhKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA3NF8xNCI+U2V0X01ldGFfTW9kZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzdfMTQiPlNldF9LZXlQYWRfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxMF8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODM3XzMxIj5XaW48L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTFfMzEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgzOF8zMSI+U3dpdGNoT248L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5rZXlwYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MTBfMTQiPlNldF9LZXlQYWRfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80NiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwODBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzgzOF8xNCI+U2V0X0tleVBhZF9Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDgwXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzhfMzEiPldpbjwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDgxXzMxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84MzlfMzEiPlN3aXRjaE9uPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+a2V5cGFkKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4MF8xNCI+U2V0X0tleVBhZF9Nb2RlPC9BPik7CiAKLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkxNV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODQ4XzEzIj5HZXRfS2V5UGFkX01vZGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MTVfMzAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0OF8zMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwODVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg0OV8xMyI+R2V0X0tleVBhZF9Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDg1XzMwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NDlfMzAiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBoYXMgbm8gcGVuZGFudCBpbiBDLiBUaGVyZSB5b3UndmUgdG8gbG9vayBpbnRvIHRoZSBXSU5ET1dTPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZhbHVlLiBCYWQgcHJhY3RpY2UsIG5vdCByZXBlYXRlZCBpbiBBZGEuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGhhcyBubyBwZW5kYW50IGluIEMuIFRoZXJlIHlvdSd2ZSB0byBsb29rIGludG8gdGhlIFdJTkRPV1M8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZhbHVlLiBCYWQgcHJhY3RpY2UsIG5vdCByZXBlYXRlZCBpbiBBZGEuPC9FTT48L3NwYW4+CiAKLSAgIDxiPnR5cGU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTIwXzkiPkhhbGZfRGVsYXlfQW1vdW50PC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPnJhbmdlPC9iPiAxIC4uIDI1NTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDkwXzkiPkhhbGZfRGVsYXlfQW1vdW50PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPnJhbmdlPC9iPiAxIC4uIDI1NTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODU3XzE0Ij5IYWxmX0RlbGF5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTIzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NTdfMjYiPkFtb3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyMF85Ij5IYWxmX0RlbGF5X0Ftb3VudDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5oYWxmZGVsYXkoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MjNfMTQiPkhhbGZfRGVsYXk8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNDciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDkzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NThfMTQiPkhhbGZfRGVsYXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOTNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg1OF8yNiI+QW1vdW50PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDkwXzkiPkhhbGZfRGVsYXlfQW1vdW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5oYWxmZGVsYXkoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDkzXzE0Ij5IYWxmX0RlbGF5PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MjhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg2N18xNCI+U2V0X0ZsdXNoX09uX0ludGVycnVwdF9Nb2RlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg2OF83Ij5XaW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84NjlfNyI+TW9kZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwiPmludHJmbHVzaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzkyOF8xNCI+U2V0X0ZsdXNoX09uX0ludGVycnVwdF9Nb2RlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTA5OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODY4XzE0Ij5TZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEwOTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODY5XzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODcwXzciPk1vZGU8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5pbnRyZmx1c2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDk4XzE0Ij5TZXRfRmx1c2hfT25fSW50ZXJydXB0X01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzQ5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODc5XzE0Ij5TZXRfUXVldWVfSW50ZXJydXB0X01vZGU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85MzZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfODgwXzciPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzkzN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84ODFfNyI+Rmx1c2g8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5xaWZsdXNoKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbm9xaWZsdXNoKCk8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85MzVfMTQiPlNldF9RdWV1ZV9JbnRlcnJ1cHRfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV80OSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4MF8xNCI+U2V0X1F1ZXVlX0ludGVycnVwdF9Nb2RlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg4MV83Ij5XaW48L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEwN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84ODJfNyI+Rmx1c2g8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5xaWZsdXNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG5vcWlmbHVzaCgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwNV8xNCI+U2V0X1F1ZXVlX0ludGVycnVwdF9Nb2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg5OF8xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk0NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl84OTlfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NDVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTAwXzciPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+bm9kZWxheSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0M18xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMTNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzg5OV8xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTExNF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MDBfNyI+V2luPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTExNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MDFfNyI+TW9kZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj5ub2RlbGF5KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExM18xNCI+U2V0X05vRGVsYXlfTW9kZTwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk0OV85Ij5UaW1lb3V0X01vZGU8L0E+PC9GT05UPiA8Yj5pczwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTQ5XzI2Ij5CbG9ja2luZzwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk0OV8zNiI+Tm9uX0Jsb2NraW5nPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTQ5XzUwIj5EZWxheWVkPC9BPjwvRk9OVD4pOworICAgPGI+dHlwZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMTlfOSI+VGltZW91dF9Nb2RlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTExOV8yNiI+QmxvY2tpbmc8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMTlfMzYiPk5vbl9CbG9ja2luZzwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTExOV81MCI+RGVsYXllZDwvQT48L3NwYW4+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzUxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk1Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTEwXzE0Ij5TZXRfVGltZW91dF9Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTUyXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTBfMzIiPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTUzXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTFfMzIiPk1vZGU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzk0OV85Ij5UaW1lb3V0X01vZGU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTU0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTJfMzIiPkFtb3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IE5hdHVyYWwpOyA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGluIE1pbGxpc2Vjb25kczwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2lub3B0cy4zeC5odG1sIj53dGltZW91dCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHRpbWVvdXQoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbnN0ZWFkIG9mIG92ZXJsb2FkaW5nIHRoZSBzZW1hbnRpYyBvZiB0aGUgc2lnbiBvZiBhbW91bnQsIHdlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGludHJvZHVjZSB0aGUgVGltZW91dF9Nb2RlIHBhcmFtZXRlci4gVGhpcyBzaG91bGQgaW1wcm92ZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICByZWFkYWJpbGl0eS4gRm9yIEJsb2NraW5nIGFuZCBOb25fQmxvY2tpbmcsIHRoZSBBbW91bnQgaXMgbm90PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGV2YWx1YXRlZC48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgV2UgZG9uJ3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExMjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxMV8xNCI+U2V0X1RpbWVvdXRfTW9kZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEyMl8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTExXzMyIj5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTIzXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTJfMzIiPk1vZGU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExOV85Ij5UaW1lb3V0X01vZGU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTI0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MTNfMzIiPkFtb3VudDwvQT48L3NwYW4+IDogTmF0dXJhbCk7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGluIE1pbGxpc2Vjb25kczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+d3RpbWVvdXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogdGltZW91dCgpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBJbnN0ZWFkIG9mIG92ZXJsb2FkaW5nIHRoZSBzZW1hbnRpYyBvZiB0aGUgc2lnbiBvZiBhbW91bnQsIHdlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBpbnRyb2R1Y2UgdGhlIFRpbWVvdXRfTW9kZSBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkIGltcHJvdmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHJlYWRhYmlsaXR5LiBGb3IgQmxvY2tpbmcgYW5kIE5vbl9CbG9ja2luZywgdGhlIEFtb3VudCBpcyBub3Q8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGV2YWx1YXRlZC48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFdlIGRvIG5vdCBpbmxpbmUgdGhpcyBwcm9jZWR1cmUuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl85NjRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzMV8xNCI+U2V0X0VzY2FwZV9UaW1lcl9Nb2RlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTY1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzMl83Ij5XaW48L0E+PC9GT05UPiAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTY2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzM183Ij5UaW1lcl9PZmY8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IEZhbHNlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+bm90aW1lb3V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTY0XzE0Ij5TZXRfRXNjYXBlX1RpbWVyX01vZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTM0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MzJfMTQiPlNldF9Fc2NhcGVfVGltZXJfTW9kZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTEzNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MzNfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTM2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkzNF83Ij5UaW1lcl9PZmY8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gRmFsc2UpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbCI+bm90aW1lb3V0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNF8xNCI+U2V0X0VzY2FwZV9UaW1lcl9Nb2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTc1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NDVfMTQiPlNldF9OTF9Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTc1XzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NDVfMjciPlN3aXRjaE9uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPm5sKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbm9ubCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTc1XzE0Ij5TZXRfTkxfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNDVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk0N18xNCI+U2V0X05MX01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNDVfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk0N18yNyI+U3dpdGNoT248L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+bmwoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbm9ubCgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE0NV8xNCI+U2V0X05MX01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTY0XzE0Ij5DbGVhcl9Pbl9OZXh0X1VwZGF0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NjVfNyI+V2luPC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTgzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk2Nl83Ij5Eb19DbGVhcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sIj5jbGVhcm9rKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTgxXzE0Ij5DbGVhcl9Pbl9OZXh0X1VwZGF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk2Nl8xNCI+Q2xlYXJfT25fTmV4dF9VcGRhdGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTY3XzciPldpbjwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk2OF83Ij5Eb19DbGVhcjwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sIj5jbGVhcm9rKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1MV8xNCI+Q2xlYXJfT25fTmV4dF9VcGRhdGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU1IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTc2XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9MaW5lPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTg5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk3N183Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTkwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk3OF83Ij5Eb19JZGw8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+aWRsb2soKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl85ODhfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0xpbmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTU4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85NzhfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0xpbmU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTc5XzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85ODBfNyI+RG9fSWRsPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmlkbG9rKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE1OF8xNCI+VXNlX0luc2VydF9EZWxldGVfTGluZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfOTk1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85ODhfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0NoYXJhY3RlcjwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85ODlfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzk5N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTBfNyI+RG9fSWRjPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbiA6PSBUcnVlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmlkY29rKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfOTk1XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTY1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTBfMTQiPlVzZV9JbnNlcnRfRGVsZXRlX0NoYXJhY3RlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85OTFfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk5Ml83Ij5Eb19JZGM8L0E+PC9zcGFuPiA6IEJvb2xlYW4gOj0gVHJ1ZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+aWRjb2soKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTY1XzE0Ij5Vc2VfSW5zZXJ0X0RlbGV0ZV9DaGFyYWN0ZXI8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzU3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzk5OF8xNCI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMDNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTk5XzciPldpbjwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAwMF83Ij5Eb19MZWF2ZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sIj5sZWF2ZW9rKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTAwMl8xNCI+TGVhdmVfQ3Vyc29yX0FmdGVyX1VwZGF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMDBfMTQiPkxlYXZlX0N1cnNvcl9BZnRlcl9VcGRhdGU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAwMV83Ij5XaW48L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE3NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDAyXzciPkRvX0xlYXZlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmxlYXZlb2soKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTcyXzE0Ij5MZWF2ZV9DdXJzb3JfQWZ0ZXJfVXBkYXRlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDA5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDEwXzE0Ij5JbW1lZGlhdGVfVXBkYXRlX01vZGU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDEwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTFfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDExXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTJfNyI+TW9kZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gRmFsc2UpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+aW1tZWRvaygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMDlfMTQiPkltbWVkaWF0ZV9VcGRhdGVfTW9kZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81OCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExNzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMTJfMTQiPkltbWVkaWF0ZV9VcGRhdGVfTW9kZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE4MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDEzXzciPldpbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExODFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAxNF83Ij5Nb2RlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IEZhbHNlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sIj5pbW1lZG9rKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE3OV8xNCI+SW1tZWRpYXRlX1VwZGF0ZV9Nb2RlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV81OSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDE2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDIwXzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDE3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjFfNyI+V2luPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDE4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjJfNyI+TW9kZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gRmFsc2UpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+c2Nyb2xsb2soKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMDE2XzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDIyXzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExODdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAyM183Ij5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTg4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMjRfNyI+TW9kZTwvQT48L3NwYW4+IDogQm9vbGVhbiA6PSBGYWxzZSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCI+c2Nyb2xsb2soKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTg2XzE0Ij5BbGxvd19TY3JvbGxpbmc8L0E+KTsKIAotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyMl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTAzMl8xMyI+U2Nyb2xsaW5nX0FsbG93ZWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDIyXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDMyXzMyIj5XaW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZXJlIGlzIG5vIHN1Y2ggZnVuY3Rpb24gaW4gdGhlIEMgaW50ZXJmYWNlLjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjJfMTMiPlNjcm9sbGluZ19BbGxvd2VkPC9BPik7CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOTJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwMzRfMTMiPlNjcm9sbGluZ19BbGxvd2VkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTkyXzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDM0XzMyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGVyZSBpcyBubyBzdWNoIGZ1bmN0aW9uIGluIHRoZSBDIGludGVyZmFjZS48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTkyXzEzIj5TY3JvbGxpbmdfQWxsb3dlZDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyN18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0MV8xNCI+U2V0X1Njcm9sbF9SZWdpb248L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDI4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNDJfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTAyOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDQzXzciPlRvcF9MaW5lPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwMzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0NF83Ij5Cb3R0b21fTGluZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPndzZXRzY3JyZWcoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBzZXRzY3JyZWcoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwMjdfMTQiPlNldF9TY3JvbGxfUmVnaW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0M18xNCI+U2V0X1Njcm9sbF9SZWdpb248L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExOThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA0NF83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTE5OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDQ1XzciPlRvcF9MaW5lPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwNDZfNyI+Qm90dG9tX0xpbmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sIj53c2V0c2NycmVnKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHNldHNjcnJlZygpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE5N18xNCI+U2V0X1Njcm9sbF9SZWdpb248L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2guM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2guM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDQwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDU3XzE0Ij5VcGRhdGVfU2NyZWVuPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj5kb3VwZGF0ZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwNDBfMTQiPlVwZGF0ZV9TY3JlZW48L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDYwXzE0Ij5VcGRhdGVfU2NyZWVuPC9BPjwvc3Bhbj47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbCI+ZG91cGRhdGUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjEwXzE0Ij5VcGRhdGVfU2NyZWVuPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDQ1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDY3XzE0Ij5SZWZyZXNoPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA0NV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA2N18yMyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbCI+d3JlZnJlc2goKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlcmUgaXMgYW4gb3ZlcmxvYWRlZCBSZWZyZXNoIGZvciBQYWRzLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGUgSW5saW5lIHByYWdtYSBhcHBlYXJzIHRoZXJlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogcmVmcmVzaCgpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzYyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA3MF8xNCI+UmVmcmVzaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIxNV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA3MF8yMyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbCI+d3JlZnJlc2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoZXJlIGlzIGFuIG92ZXJsb2FkZWQgUmVmcmVzaCBmb3IgUGFkcy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoZSBJbmxpbmUgcHJhZ21hIGFwcGVhcnMgdGhlcmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogcmVmcmVzaCgpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82MyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDUyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDc3XzE0Ij5SZWZyZXNoX1dpdGhvdXRfVXBkYXRlPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA1M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDc4XzciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPndub3V0cmVmcmVzaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUaGVyZSBpcyBhbiBvdmVybG9hZGVkIFJlZnJlc2hfV2l0aG91dF9VcGRhdGUgZm9yIFBhZHMuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZSBJbmxpbmUgcHJhZ21hIGFwcGVhcnMgdGhlcmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjIyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDgwXzE0Ij5SZWZyZXNoX1dpdGhvdXRfVXBkYXRlPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjIzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwODFfNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbCI+d25vdXRyZWZyZXNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGVyZSBpcyBhbiBvdmVybG9hZGVkIFJlZnJlc2hfV2l0aG91dF9VcGRhdGUgZm9yIFBhZHMuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGUgSW5saW5lIHByYWdtYSBhcHBlYXJzIHRoZXJlPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDg4XzE0Ij5SZWRyYXc8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDU5XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDg4XzIyIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj5yZWRyYXd3aW4oKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjI5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMDkxXzE0Ij5SZWRyYXc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMjlfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEwOTFfMjIiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPnJlZHJhd3dpbigpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA2M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA5OF8xNCI+UmVkcmF3PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA2M18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTA5OV83Ij5XaW48L0E+PC9GT05UPiAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNjRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMDBfNyI+QmVnaW5fTGluZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDY1XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTAxXzciPkxpbmVfQ291bnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBQb3NpdGl2ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj53cmVkcmF3bG4oKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjMzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTAxXzE0Ij5SZWRyYXc8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyMzNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMDJfNyI+V2luPC9BPjwvc3Bhbj4gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTIzNF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEwM183Ij5CZWdpbl9MaW5lPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjM1XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTA0XzciPkxpbmVfQ291bnQ8L0E+PC9zcGFuPiA6IFBvc2l0aXZlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIj53cmVkcmF3bG4oKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChSZWRyYXcpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jbGVhci4zeC5odG1sIj5jdXJzX2NsZWFyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82NiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDc0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTE1XzE0Ij5FcmFzZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwNzRfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMTVfMjEiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jbGVhci4zeC5odG1sIj53ZXJhc2UoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBlcmFzZSgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA3NF8xNCI+RXJhc2U8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTE5XzE0Ij5FcmFzZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI0NF8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTExOV8yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwiPndlcmFzZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBlcmFzZSgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI0NF8xNCI+RXJhc2U8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzY3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwODBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMjVfMTQiPkNsZWFyPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA4MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTI1XzIxIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY2xlYXIuM3guaHRtbCI+d2NsZWFyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogY2xlYXIoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEwODBfMTQiPkNsZWFyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzY3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI1MF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEyOV8xNCI+Q2xlYXI8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEyOV8yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwiPndjbGVhcigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBjbGVhcigpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1MF8xNCI+Q2xlYXI8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzY4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEwODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMzVfMTQiPkNsZWFyX1RvX0VuZF9PZl9TY3JlZW48L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDg4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMzVfMzgiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jbGVhci4zeC5odG1sIj53Y2xydG9ib3QoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBjbHJ0b2JvdCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA4N18xNCI+Q2xlYXJfVG9fRW5kX09mX1NjcmVlbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV82OCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExMzlfMTQiPkNsZWFyX1RvX0VuZF9PZl9TY3JlZW48L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTEzOV8zOCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwiPndjbHJ0b2JvdCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBjbHJ0b2JvdCgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1N18xNCI+Q2xlYXJfVG9fRW5kX09mX1NjcmVlbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTA5NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE0NV8xNCI+Q2xlYXJfVG9fRW5kX09mX0xpbmU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMDk1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNDVfMzYiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jbGVhci4zeC5odG1sIj53Y2xydG9lb2woKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBjbHJ0b2VvbCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTA5NF8xNCI+Q2xlYXJfVG9fRW5kX09mX0xpbmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNjkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjY0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTQ5XzE0Ij5DbGVhcl9Ub19FbmRfT2ZfTGluZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI2NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTQ5XzM2Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY2xlYXIuM3guaHRtbCI+d2NscnRvZW9sKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGNscnRvZW9sKCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY0XzE0Ij5DbGVhcl9Ub19FbmRfT2ZfTGluZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzcwIiMyfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBUT0RPOiB3ZSBjb3VsZCBoYXZlIFNldF9CYWNrZ3JvdW5kKFdpbmRvdzsgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGJlY2F1c2UgaW4gQyBpdCBpcyBjb21tb24gdG8gc2VlIGJrZ2RzZXQoQV9CT0xEKSBvcjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBia2dkc2V0KENPTE9SX1BBSVIobikpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEwOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE1NV8xNCI+U2V0X0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTA5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNTZfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMTBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE1N183Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPndia2dkc2V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogYmtnZHNldCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEwOF8xNCI+U2V0X0JhY2tncm91bmQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzAiIzJ8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUT0RPOiB3ZSBjb3VsZCBoYXZlIFNldF9CYWNrZ3JvdW5kKFdpbmRvdzsgQ2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBiZWNhdXNlIGluIEMgaXQgaXMgY29tbW9uIHRvIHNlZSBia2dkc2V0KEFfQk9MRCkgb3I8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGJrZ2RzZXQoQ09MT1JfUEFJUihuKSk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyNzhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNTlfMTQiPlNldF9CYWNrZ3JvdW5kPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjc5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNjBfNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjgwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNjFfNyI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfYmtnZC4zeC5odG1sIj53YmtnZHNldCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBia2dkc2V0KCk8L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjc4XzE0Ij5TZXRfQmFja2dyb3VuZDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTExNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2NV8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTE3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNjZfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE2N183Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPndia2dkKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogYmtnZCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTExNl8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjg2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTY5XzE0Ij5DaGFuZ2VfQmFja2dyb3VuZDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTcwXzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTI4OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTcxXzciPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JrZ2QuM3guaHRtbCI+d2JrZ2QoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogYmtnZCgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI4Nl8xNCI+Q2hhbmdlX0JhY2tncm91bmQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzcyIiMyfDwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICA/IHdia2dkZ2V0IGlzIG5vdCBsaXN0ZWQgaW4gY3Vyc19ia2dkLCBnZXRia2dkIGlzIHRocG91Z2guPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTI1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTc3XzEzIj5HZXRfQmFja2dyb3VuZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMjVfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExNzdfMjkiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCi0gICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwiPndia2dkZ2V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogYmtnZGdldCgpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEyNV8xMyI+R2V0X0JhY2tncm91bmQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzIiIzJ8PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICA/IHdia2dkZ2V0IGlzIG5vdCBsaXN0ZWQgaW4gY3Vyc19ia2dkLCBnZXRia2dkIGlzIHRocG91Z2guPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyOTVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExODJfMTMiPkdldF9CYWNrZ3JvdW5kPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjk1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTgyXzI5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2JrZ2QuM3guaHRtbCI+d2JrZ2RnZXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogYmtnZGdldCgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI5NV8xMyI+R2V0X0JhY2tncm91bmQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfdG91Y2guM3guaHRtbCI+Y3Vyc190b3VjaC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj5jdXJzX3RvdWNoLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTEzNl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIxMl8xNCI+VW50b3VjaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExMzZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMTJfMjMiPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj51bnRvdWNod2luKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTEzNl8xNCI+VW50b3VjaDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMTlfMTQiPlVudG91Y2g8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMDZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMTlfMjMiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj51bnRvdWNod2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTMwNl8xNCI+VW50b3VjaDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIwM18xNCI+VG91Y2g8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTQxXzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjAzXzIxIj5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdG91Y2guM3guaHRtbCI+dG91Y2h3aW4oKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzExXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjA5XzE0Ij5Ub3VjaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxMV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIwOV8yMSI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwiPnRvdWNod2luKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTQ1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjIxXzE0Ij5Ub3VjaDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNDVfMjEiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMjFfMjEiPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE0Nl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIyMl8yMSI+U3RhcnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTQ3XzIxIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjIzXzIxIj5Db3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFBvc2l0aXZlKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj50b3VjaGxpbmUoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzE1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjI5XzE0Ij5Ub3VjaDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxNV8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIyOV8yMSI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxNl8yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzMF8yMSI+U3RhcnQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMxN18yMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzMV8yMSI+Q291bnQ8L0E+PC9zcGFuPiA6IFBvc2l0aXZlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdG91Y2guM3guaHRtbCI+dG91Y2hsaW5lKCk8L0E+PC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoVG91Y2gpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE4Nl8xNCI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNTJfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExODZfMzUiPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTUzXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTg3XzM1Ij5TdGFydDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE1NF8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE4OF8zNSI+Q291bnQ8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBQb3NpdGl2ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNTVfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExODlfMzUiPlN0YXRlPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gQm9vbGVhbik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdG91Y2guM3guaHRtbCI+d3RvdWNobG4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTUyXzE0Ij5DaGFuZ2VfTGluZXNfU3RhdHVzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzc2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMyMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5MV8xNCI+Q2hhbmdlX0xpbmVzX1N0YXR1czwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMyMl8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5MV8zNSI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzIzXzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMTkyXzM1Ij5TdGFydDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzMjRfMzUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzExOTNfMzUiPkNvdW50PC9BPjwvc3Bhbj4gOiBQb3NpdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMyNV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTE5NF8zNSI+U3RhdGU8L0E+PC9zcGFuPiA6IEJvb2xlYW4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj53dG91Y2hsbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzMjJfMTQiPkNoYW5nZV9MaW5lc19TdGF0dXM8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzc3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE2MF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIyOV8xMyI+SXNfVG91Y2hlZDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNjBfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMzBfNyI+V2luPC9BPjwvRk9OVD4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNjFfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyMzFfNyI+TGluZTwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj5pc19saW5ldG91Y2hlZCgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzMF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzN18xMyI+SXNfVG91Y2hlZDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTMzMF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTIzOF83Ij5XaW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzMxXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjM5XzciPkxpbmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwiPmlzX2xpbmV0b3VjaGVkKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV83OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNjVfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNDNfMTMiPklzX1RvdWNoZWQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTY1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjQ0XzciPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190b3VjaC4zeC5odG1sIj5pc193aW50b3VjaGVkKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzc4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzM1XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjUxXzEzIj5Jc19Ub3VjaGVkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzM1XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjUyXzciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdG91Y2guM3guaHRtbCI+aXNfd2ludG91Y2hlZCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKElzX1RvdWNoZWQpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdmVybGF5LjN4Lmh0bWwiPmN1cnNfb3ZlcmxheS4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdmVybGF5LjN4Lmh0bWwiPmN1cnNfb3ZlcmxheS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzc5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNzRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNTZfMTQiPkNvcHk8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTc1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNTdfNyI+U291cmNlX1dpbmRvdzwvQT48L0ZPTlQ+ICAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE3Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjU4XzciPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L0ZPTlQ+ICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI1OV83Ij5Tb3VyY2VfVG9wX1JvdzwvQT48L0ZPTlQ+ICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE3OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjYwXzciPlNvdXJjZV9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExNzlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI2MV83Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjYyXzciPkRlc3RpbmF0aW9uX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExODFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI2M183Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY0XzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzExODNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI2NV83Ij5Ob25fRGVzdHJ1Y3RpdmVfTW9kZTwvQT48L0ZPTlQ+ICAgICA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX292ZXJsYXkuM3guaHRtbCI+Y29weXdpbigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzExNzRfMTQiPkNvcHk8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfNzkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY0XzE0Ij5Db3B5PC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzQ1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNjVfNyI+U291cmNlX1dpbmRvdzwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI2Nl83Ij5EZXN0aW5hdGlvbl9XaW5kb3c8L0E+PC9zcGFuPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM0N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY3XzciPlNvdXJjZV9Ub3BfUm93PC9BPjwvc3Bhbj4gICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM0OF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjY4XzciPlNvdXJjZV9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzQ5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNjlfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzUwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEyNzBfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3MV83Ij5EZXN0aW5hdGlvbl9Cb3R0b21fUm93PC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNTJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI3Ml83Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1M183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjczXzciPk5vbl9EZXN0cnVjdGl2ZV9Nb2RlPC9BPjwvc3Bhbj4gICAgIDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3ZlcmxheS4zeC5odG1sIj5jb3B5d2luKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM0NF8xNCI+Q29weTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfODAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI5Ml8xNCI+T3ZlcndyaXRlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE4OF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTI5M183Ij5Tb3VyY2VfV2luZG93PC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTg5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMjk0XzciPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX292ZXJsYXkuM3guaHRtbCI+b3ZlcndyaXRlKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTE4OF8xNCI+T3ZlcndyaXRlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM1OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMwMV8xNCI+T3ZlcndyaXRlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzU4XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzAyXzciPlNvdXJjZV9XaW5kb3c8L0E+PC9zcGFuPiAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzU5XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzAzXzciPkRlc3RpbmF0aW9uX1dpbmRvdzwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX292ZXJsYXkuM3guaHRtbCI+b3ZlcndyaXRlKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM1OF8xNCI+T3ZlcndyaXRlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84MSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMTk0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzA0XzE0Ij5PdmVybGF5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5NF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMwNV83Ij5Tb3VyY2VfV2luZG93PC9BPjwvRk9OVD4gICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTE5NV8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMwNl83Ij5EZXN0aW5hdGlvbl9XaW5kb3c8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19vdmVybGF5LjN4Lmh0bWwiPm92ZXJsYXkoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMTk0XzE0Ij5PdmVybGF5PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM2NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMxM18xNCI+T3ZlcmxheTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM2NF8yMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMxNF83Ij5Tb3VyY2VfV2luZG93PC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzNjVfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMTVfNyI+RGVzdGluYXRpb25fV2luZG93PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfb3ZlcmxheS4zeC5odG1sIj5vdmVybGF5KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM2NF8xNCI+T3ZlcmxheTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19kZWxldGVsbi4zeC5odG1sIj5jdXJzX2RlbGV0ZWxuLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPmN1cnNfZGVsZXRlbG4uM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84MiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzE3XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIwNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzE4XzciPldpbjwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjA2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMTlfNyI+TGluZXM8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IDEpOyA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIGRlZmF1bHQgaXMgdG8gaW5zZXJ0IG9uZSBsaW5lIGFib3ZlPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZGVsZXRlbG4uM3guaHRtbCI+d2luc2RlbGxuKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogaW5zZGVsbG4oKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMDRfMTQiPkluc2VydF9EZWxldGVfTGluZXM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfODIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzc0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzI2XzE0Ij5JbnNlcnRfRGVsZXRlX0xpbmVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzc1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMjdfNyI+V2luPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gIDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzc2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMjhfNyI+TGluZXM8L0E+PC9zcGFuPiA6IEludGVnZXIgOj0gMSk7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGRlZmF1bHQgaXMgdG8gaW5zZXJ0IG9uZSBsaW5lIGFib3ZlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPndpbnNkZWxsbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBpbnNkZWxsbigpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM3NF8xNCI+SW5zZXJ0X0RlbGV0ZV9MaW5lczwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfODMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMyOV8xNCI+RGVsZXRlX0xpbmU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjEyXzI3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzI5XzI3Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZGVsZXRlbG4uM3guaHRtbCI+d2RlbGV0ZWxuKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogZGVsZXRlbG4oKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMTJfMTQiPkRlbGV0ZV9MaW5lPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzgzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTMzOF8xNCI+RGVsZXRlX0xpbmU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzODJfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMzhfMjciPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19kZWxldGVsbi4zeC5odG1sIj53ZGVsZXRlbG4oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogZGVsZXRlbG4oKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzODJfMTQiPkRlbGV0ZV9MaW5lPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjE4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzM1XzE0Ij5JbnNlcnRfTGluZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyMThfMjciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzMzVfMjciPldpbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19kZWxldGVsbi4zeC5odG1sIj53aW5zZXJ0bG4oKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBpbnNlcnRsbigpPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIxOF8xNCI+SW5zZXJ0X0xpbmU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfODQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzg4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzQ0XzE0Ij5JbnNlcnRfTGluZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM4OF8yNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM0NF8yNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPndpbnNlcnRsbigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBpbnNlcnRsbigpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTM4OF8xNCI+SW5zZXJ0X0xpbmU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0eXguM3guaHRtbCI+Y3Vyc19nZXR5eC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5jdXJzX2dldHl4LjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfODUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIyOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM0Ml8xNCI+R2V0X1NpemU8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjI5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNDNfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzQ0XzciPk51bWJlcl9PZl9MaW5lczwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzQ1XzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5nZXRtYXh5eCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyMjhfMTQiPkdldF9TaXplPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzg1IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTM5OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM1MV8xNCI+R2V0X1NpemU8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzOTlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM1Ml83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQwMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzUzXzciPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzEyIj5MaW5lX0NvdW50PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNTRfNyI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5nZXRtYXh5eCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEzOThfMTQiPkdldF9TaXplPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84NiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjM2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzYyXzE0Ij5HZXRfV2luZG93X1Bvc2l0aW9uPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTIzN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzYzXzciPldpbjwvQT48L0ZPTlQ+ICAgICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjM4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjRfNyI+VG9wX0xlZnRfTGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjM5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjVfNyI+VG9wX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldHl4LjN4Lmh0bWwiPmdldGJlZ3l4KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTIzNl8xNCI+R2V0X1dpbmRvd19Qb3NpdGlvbjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84NiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MDZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzNjlfMTQiPkdldF9XaW5kb3dfUG9zaXRpb248L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3MF83Ij5XaW48L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM3MV83Ij5Ub3BfTGVmdF9MaW5lPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQwOV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzcyXzciPlRvcF9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0eXguM3guaHRtbCI+Z2V0YmVneXgoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDA2XzE0Ij5HZXRfV2luZG93X1Bvc2l0aW9uPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV84NyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgwXzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgxXzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgyXzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI0N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzgzXzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5nZXR5eCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNDRfMTQiPkdldF9DdXJzb3JfUG9zaXRpb248L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfODciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDE0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xMzg3XzE0Ij5HZXRfQ3Vyc29yX1Bvc2l0aW9uPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDE1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzODhfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDE2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzODlfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM5MF83Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldHl4LjN4Lmh0bWwiPmdldHl4KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQxNF8xNCI+R2V0X0N1cnNvcl9Qb3NpdGlvbjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfODgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTM5OF8xNCI+R2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQ8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjUzXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzEzOTlfNyI+V2luPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQwMF83Ij5Ub3BfTGVmdF9MaW5lPC9BPjwvRk9OVD4gICAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNTVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQwMV83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI1Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDAyXzciPklzX05vdF9BX1N1YndpbmRvdzwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBCb29sZWFuKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5nZXRwYXJ5eCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBJbnN0ZWFkIG9mIHBsYWNpbmcgLTEgaW4gdGhlIGNvb3JkaW5hdGVzIGFzIHJldHVybiwgd2UgdXNlIGEgYm9vbGVhbjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0byByZXR1cm4gdGhlIGluZm8gdGhhdCB0aGUgd2luZG93IGhhcyBubyBwYXJlbnQuPC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTI1Ml8xNCI+R2V0X09yaWdpbl9SZWxhdGl2ZV9Ub19QYXJlbnQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfODgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDIyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDA1XzE0Ij5HZXRfT3JpZ2luX1JlbGF0aXZlX1RvX1BhcmVudDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQyM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDA2XzciPldpbjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDI0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MDdfNyI+VG9wX0xlZnRfTGluZTwvQT48L3NwYW4+ICAgICAgOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0MjVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQwOF83Ij5Ub3BfTGVmdF9Db2x1bW48L0E+PC9zcGFuPiAgICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDI2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0MDlfNyI+SXNfTm90X0FfU3Vid2luZG93PC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IEJvb2xlYW4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIj5nZXRwYXJ5eCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW5zdGVhZCBvZiBwbGFjaW5nIC0xIGluIHRoZSBjb29yZGluYXRlcyBhcyByZXR1cm4sIHdlIHVzZSBhIEJvb2xlYW48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRvIHJldHVybiB0aGUgaW5mbyB0aGF0IHRoZSB3aW5kb3cgaGFzIG5vIHBhcmVudC48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDIyXzE0Ij5HZXRfT3JpZ2luX1JlbGF0aXZlX1RvX1BhcmVudDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19wYWQuM3guaHRtbCI+Y3Vyc19wYWQuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPmN1cnNfcGFkLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfODkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjY3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDI0XzEzIj5OZXdfUGFkPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI2N18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQyNF8yMiI+TGluZXM8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkxpbmVfQ291bnQ8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjY4XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDI1XzIyIj5Db2x1bW5zPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPikgPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3BhZC4zeC5odG1sIj5uZXdwYWQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMjY3XzEzIj5OZXdfUGFkPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzg5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDM3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDMxXzEzIj5OZXdfUGFkPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDM3XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDMxXzIyIj5MaW5lczwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQzOF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzMl8yMiI+Q29sdW1uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPm5ld3BhZCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0MzdfMTMiPk5ld19QYWQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI3M18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQzOV8xMyI+U3ViX1BhZDwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNzRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0MF83Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNzVfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0MV83Ij5OdW1iZXJfT2ZfTGluZXM8L0E+PC9GT05UPiAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5MaW5lX0NvdW50PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI3Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDQyXzciPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjVfMTIiPkNvbHVtbl9Db3VudDwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyNzdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0M183Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvRk9OVD4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjc4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDRfNyI+Rmlyc3RfQ29sdW1uX1Bvc2l0aW9uPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KSA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPnN1YnBhZCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzEyNzNfMTMiPlN1Yl9QYWQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NDZfMTMiPlN1Yl9QYWQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0N183Ij5QYWQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ0NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDQ4XzciPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfMTIiPkxpbmVfQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ0OV83Ij5OdW1iZXJfT2ZfQ29sdW1uczwvQT48L3NwYW4+ICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1MF83Ij5GaXJzdF9MaW5lX1Bvc2l0aW9uPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NDhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ1MV83Ij5GaXJzdF9Db2x1bW5fUG9zaXRpb248L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPnN1YnBhZCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0NDNfMTMiPlN1Yl9QYWQ8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyODNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NjdfMTQiPlJlZnJlc2g8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjg0XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NjhfNyI+UGFkPC9BPjwvRk9OVD4gICAgICAgICAgICAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4NV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDY5XzciPlNvdXJjZV9Ub3BfUm93PC9BPjwvRk9OVD4gICAgICAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjg2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzBfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvRk9OVD4gICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4N183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDcxXzciPkRlc3RpbmF0aW9uX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjg4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzJfNyI+RGVzdGluYXRpb25fTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI4OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDczXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjkwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzRfNyI+RGVzdGluYXRpb25fUmlnaHRfQ29sdW1uPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfcGFkLjN4Lmh0bWwiPnByZWZyZXNoKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ3NF8xNCI+UmVmcmVzaDwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDc1XzciPlBhZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDU1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzZfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDU2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0NzdfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NTdfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ3OF83Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ3OV83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ1OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDgwXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ2MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNDgxXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3BhZC4zeC5odG1sIj5wcmVmcmVzaCgpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFJlZnJlc2gpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTI5NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ5N18xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOTZfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTQ5OF83Ij5QYWQ8L0E+PC9GT05UPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjk3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE0OTlfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9GT05UPiAgICAgICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEyOThfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwMF83Ij5Tb3VyY2VfTGVmdF9Db2x1bW48L0E+PC9GT05UPiAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMjk5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MDFfNyI+RGVzdGluYXRpb25fVG9wX1JvdzwvQT48L0ZPTlQ+ICAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMDBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwMl83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzAxXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MDNfNyI+RGVzdGluYXRpb25fQm90dG9tX1JvdzwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMDJfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwNF83Ij5EZXN0aW5hdGlvbl9SaWdodF9Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19wYWQuM3guaHRtbCI+cG5vdXRyZWZyZXNoKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ2NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwNV8xNCI+UmVmcmVzaF9XaXRob3V0X1VwZGF0ZTwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ2Nl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTA2XzciPlBhZDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDY3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MDdfNyI+U291cmNlX1RvcF9Sb3c8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDY4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MDhfNyI+U291cmNlX0xlZnRfQ29sdW1uPC9BPjwvc3Bhbj4gICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUwOV83Ij5EZXN0aW5hdGlvbl9Ub3BfUm93PC9BPjwvc3Bhbj4gICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUxMF83Ij5EZXN0aW5hdGlvbl9MZWZ0X0NvbHVtbjwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3MV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTExXzciPkRlc3RpbmF0aW9uX0JvdHRvbV9Sb3c8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTEyXzciPkRlc3RpbmF0aW9uX1JpZ2h0X0NvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3BhZC4zeC5odG1sIj5wbm91dHJlZnJlc2goKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChSZWZyZXNoX1dpdGhvdXRfVXBkYXRlKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1MjdfMTQiPkFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMwOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTI4XzciPlBhZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUyOV83Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zNTJfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19wYWQuM3guaHRtbCI+cGVjaG9jaGFyKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzkzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUzNl8xNCI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0NzhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTUzN183Ij5QYWQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ3OV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTM4XzciPkNoPC9BPjwvc3Bhbj4gIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3BhZC4zeC5odG1sIj5wZWNob2NoYXIoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMTJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NDBfMTQiPkFkZF9DaGFyYWN0ZXJfVG9fUGFkX0FuZF9FY2hvX0l0PC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMxM183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTQxXzciPlBhZDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMTRfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU0Ml83Ij5DaDwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiBDaGFyYWN0ZXIpOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU0OV8xNCI+QWRkX0NoYXJhY3Rlcl9Ub19QYWRfQW5kX0VjaG9fSXQ8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0ODNfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU1MF83Ij5QYWQ8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTQ4NF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTUxXzciPkNoPC9BPjwvc3Bhbj4gIDogQ2hhcmFjdGVyKTsKICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChBZGRfQ2hhcmFjdGVyX1RvX1BhZF9BbmRfRWNob19JdCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcm9sbC4zeC5odG1sIj5jdXJzX3Njcm9sbC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zY3JvbGwuM3guaHRtbCI+Y3Vyc19zY3JvbGwuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzIyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTUyXzE0Ij5TY3JvbGw8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzIyXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTUyXzIyIj5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+ICA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMjNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NTNfMjIiPkFtb3VudDwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEludGVnZXIgOj0gMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2Nyb2xsLjN4Lmh0bWwiPndzY3JsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogc2Nyb2xsKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBzY3JsKCk8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xMzIyXzE0Ij5TY3JvbGw8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDkyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTYxXzE0Ij5TY3JvbGw8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OTJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjFfMjIiPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiAgOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE0OTNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NjJfMjIiPkFtb3VudDwvQT48L3NwYW4+IDogSW50ZWdlciA6PSAxKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2Nyb2xsLjN4Lmh0bWwiPndzY3JsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHNjcm9sbCgpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IHNjcmwoKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTJfMTQiPlNjcm9sbDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19kZWxjaC4zeC5odG1sIj5jdXJzX2RlbGNoLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGNoLjN4Lmh0bWwiPmN1cnNfZGVsY2guM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85NSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzM0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTY1XzE0Ij5EZWxldGVfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTMzNF8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU2NV8zMiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGNoLjN4Lmh0bWwiPndkZWxjaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGRlbGNoKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTUiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTA0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc0XzE0Ij5EZWxldGVfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTA0XzMyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc0XzMyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZGVsY2guM3guaHRtbCI+d2RlbGNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGRlbGNoKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzk2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzMzlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NzVfMTQiPkRlbGV0ZV9DaGFyYWN0ZXI8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzQwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1NzZfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNDFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU3N183Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM0Ml83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTc4XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGNoLjN4Lmh0bWwiPm12d2RlbGNoKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZkZWxjaCgpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzk2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUwOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU4NF8xNCI+RGVsZXRlX0NoYXJhY3RlcjwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxMF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTg1XzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxMV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTg2XzciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTUxMl83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTg3XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2RlbGNoLjN4Lmh0bWwiPm12d2RlbGNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12ZGVsY2goKTwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKERlbGV0ZV9DaGFyYWN0ZXIpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzk3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM1Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTU5MF8xMyI+UGVlazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNTJfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1OTBfMTkiPldpbjwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT4pCi0gICAgIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBpbmNoKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwiPndpbmNoKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzk3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTIyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTk5XzEzIj5QZWVrPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTIyXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNTk5XzE5Ij5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+KQorICAgICA8Yj5yZXR1cm48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGluY2goKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwiPndpbmNoKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV85OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNThfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE1OTlfMTMiPlBlZWs8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzU5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MDBfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM2MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjAxXzciPkxpbmU8L0E+PC9GT05UPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNjFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwMl83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwiPm12d2luY2goKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmluY2goKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBNb3JlIFBlZWsncyBmb2xsb3csIHByYWdtYSBJbmxpbmUgYXBwZWFycyBsYXRlci48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MjhfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MDhfMTMiPlBlZWs8L0E+PC9zcGFuPgorICAgICAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MjlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYwOV83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MzBfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxMF83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1MzFfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxMV83Ij5Db2x1bW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU5XzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT4pIDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDg3XzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaC4zeC5odG1sIj5tdndpbmNoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12aW5jaCgpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBNb3JlIFBlZWsncyBmb2xsb3csIHByYWdtYSBJbmxpbmUgYXBwZWFycyBsYXRlci48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zY2guM3guaHRtbCI+Y3Vyc19pbnNjaC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbnNjaC4zeC5odG1sIj5jdXJzX2luc2NoLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3MV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxMl8xNCI+SW5zZXJ0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM3MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYxMl8yMiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzNzJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MTNfMjIiPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc2NoLjN4Lmh0bWwiPndpbnNjaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGluc2NoKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfOTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTQxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjIxXzE0Ij5JbnNlcnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NDFfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MjFfMjIiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU0Ml8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYyMl8yMiI+Q2g8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zY2guM3guaHRtbCI+d2luc2NoKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGluc2NoKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwMCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzc3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjIzXzE0Ij5JbnNlcnQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzc3XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI0XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzc4XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI1XzciPkxpbmU8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xMzc5XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjI2XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYxXzkiPkNvbHVtbl9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzODBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MjdfNyI+Q2g8L0E+PC9GT05UPiAgICAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzUyXzkiPkF0dHJpYnV0ZWRfQ2hhcmFjdGVyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zY2guM3guaHRtbCI+bXZ3aW5zY2goKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmluc2NoKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTAwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU0N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYzMl8xNCI+SW5zZXJ0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTQ3XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjMzXzciPldpbjwvQT48L3NwYW4+ICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU0OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTYzNF83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NDlfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzVfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NTBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2MzZfNyI+Q2g8L0E+PC9zcGFuPiAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80ODdfOSI+QXR0cmlidXRlZF9DaGFyYWN0ZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zY2guM3guaHRtbCI+bXZ3aW5zY2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZpbnNjaCgpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc3N0ci4zeC5odG1sIj5jdXJzX2luc3N0ci4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbnNzdHIuM3guaHRtbCI+Y3Vyc19pbnNzdHIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY0M18xNCI+SW5zZXJ0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM4OV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY0M18yMiI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzEzOTBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NDRfMjIiPlN0cjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM5MV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY0NV8yMiI+TGVuPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gSW50ZWdlciA6PSAtMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zc3RyLjN4Lmh0bWwiPndpbnNuc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogd2luc3N0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogaW5zbnN0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogaW5zc3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTAxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU1OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY1M18xNCI+SW5zZXJ0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTU5XzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjUzXzIyIj5XaW48L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjBfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NTRfMjIiPlN0cjwvQT48L3NwYW4+IDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjFfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NTVfMjIiPkxlbjwvQT48L3NwYW4+IDogSW50ZWdlciA6PSAtMSk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc3N0ci4zeC5odG1sIj53aW5zbnN0cigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB3aW5zc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogaW5zbnN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGluc3N0cigpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM5OF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2MV8xNCI+SW5zZXJ0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM5OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2Ml83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTM5OV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2M183Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQwMF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2NF83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDAxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjY1XzciPlN0cjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQwMl8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY2Nl83Ij5MZW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbnNzdHIuM3guaHRtbCI+bXZ3aW5zbnN0cigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12d2luc3N0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZpbnNuc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmluc3N0cigpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzFfMTQiPkluc2VydDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU2OF8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY3Ml83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NjlfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzNfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTcwXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc0XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTcxXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjc1XzciPlN0cjwvQT48L3NwYW4+ICAgIDogU3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1NzJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2NzZfNyI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zc3RyLjN4Lmh0bWwiPm12d2luc25zdHIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZ3aW5zc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZpbnNuc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZpbnNzdHIoKTwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEluc2VydCk7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2luc3RyLjN4Lmh0bWwiPmN1cnNfaW5zdHIuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zdHIuM3guaHRtbCI+Y3Vyc19pbnN0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwMyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDE0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNjg1XzE0Ij5QZWVrPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQxNF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY4NV8yMCI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQxNV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY4Nl8yMCI+U3RyPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MTZfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE2ODdfMjAiPkxlbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbnN0ci4zeC5odG1sIj53aW5uc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogd2luc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBpbm5zdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGluc3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTAzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5Nl8xNCI+UGVlazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4NF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5Nl8yMCI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4NV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5N18yMCI+U3RyPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU4Nl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTY5OF8yMCI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zdHIuM3guaHRtbCI+d2lubnN0cigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiB3aW5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBpbm5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBpbnN0cigpPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDQiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcxNF8xNCI+UGVlazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MjNfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MTVfNyI+V2luPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyNF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcxNl83Ij5MaW5lPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjBfOSI+TGluZV9Qb3NpdGlvbjwvQT47Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDI1XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzE3XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyNl8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcxOF83Ij5TdHI8L0E+PC9GT05UPiAgICA6IDxiPm91dDwvYj4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQyN18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcxOV83Ij5MZW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiAgSW50ZWdlciA6PSAtMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zdHIuM3guaHRtbCI+bXZ3aW5uc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZ3aW5zdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12aW5uc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmluc3RyKCk8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTA0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU5M18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcyNV8xNCI+UGVlazwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTU5M18yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcyNl83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTk0XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzI3XzciPkxpbmU8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNThfOSI+TGluZV9Qb3NpdGlvbjwvQT47CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OTVfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MjhfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTk2XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzI5XzciPlN0cjwvQT48L3NwYW4+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE1OTdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzBfNyI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5zdHIuM3guaHRtbCI+bXZ3aW5uc3RyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12d2luc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZpbm5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdmluc3RyKCk8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQzOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcyNl8xNCI+UGVlazwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0MzhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MjdfNyI+V2luPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQzOV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTcyOF83Ij5TdHI8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gQXR0cmlidXRlZF9TdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQwXzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzI5XzciPkxlbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19pbmNoc3RyLjN4Lmh0bWwiPndpbmNobnN0cigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHdpbmNoc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBpbmNobnN0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogaW5jaHN0cigpPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MDhfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzdfMTQiPlBlZWs8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MDhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3MzhfNyI+V2luPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYwOV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTczOV83Ij5TdHI8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gQXR0cmlidXRlZF9TdHJpbmc7CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MTBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NDBfNyI+TGVuPC9BPjwvc3Bhbj4gOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj53aW5jaG5zdHIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogd2luY2hzdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBpbmNobnN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGluY2hzdHIoKTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTA2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NDdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NjNfMTQiPlBlZWs8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDQ3XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzY0XzciPldpbjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81N185Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ3Nl8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NDhfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NjVfNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ0OV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2Nl83Ij5Db2x1bW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NTBfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NjdfNyI+U3RyPC9BPjwvRk9OVD4gICAgOiA8Yj5vdXQ8L2I+IEF0dHJpYnV0ZWRfU3RyaW5nOwotICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ1MV8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc2OF83Ij5MZW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiAgSW50ZWdlciA6PSAtMSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5tdndpbmNobnN0cigpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12d2luY2hzdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12aW5jaG5zdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12aW5jaHN0cigpPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFdlIGRvbid0IGlubGluZSB0aGUgUGVlayBwcm9jZWR1cmVzPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwNiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NzRfMTQiPlBlZWs8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MTdfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NzVfNyI+V2luPC9BPjwvc3Bhbj4gICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYxOF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc3Nl83Ij5MaW5lPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU4XzkiPkxpbmVfUG9zaXRpb248L0E+OworICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjE5XzIwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc3XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYyMF8yMCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc3OF83Ij5TdHI8L0E+PC9zcGFuPiAgICA6IDxiPm91dDwvYj4gQXR0cmlidXRlZF9TdHJpbmc7CisgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MjFfMjAiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NzlfNyI+TGVuPC9BPjwvc3Bhbj4gICAgOiBJbnRlZ2VyIDo9IC0xKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sIj5tdndpbmNobnN0cigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdndpbmNoc3RyKCk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogbXZpbmNobnN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IG12aW5jaHN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBXZSBkbyBub3QgaW5saW5lIHRoZSBQZWVrIHByb2NlZHVyZXM8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfZ2V0c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0c3RyLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldHN0ci4zeC5odG1sIj5jdXJzX2dldHN0ci4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwNyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDYzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc1XzE0Ij5HZXQ8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDYzXzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzc1XzE5Ij5XaW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NjRfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NzZfMTkiPlN0cjwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NjVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3NzdfMTkiPkxlbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICBJbnRlZ2VyIDo9IC0xKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRzdHIuM3guaHRtbCI+d2dldG5zdHIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiB3Z2V0c3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBnZXRuc3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBnZXRzdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBhY3R1YWxseSBnZXRzdHIgaXMgbm90IHN1cHBvcnRlZCBiZWNhdXNlIHRoYXQgcmVzdWx0cyBpbiBidWZmZXI8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgb3ZlcmZsb3dzLjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjMzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzg2XzE0Ij5HZXQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2MzNfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE3ODZfMTkiPldpbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NDRfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTYzNF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTc4N18xOSI+U3RyPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjM1XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xNzg4XzE5Ij5MZW48L0E+PC9zcGFuPiA6IEludGVnZXIgOj0gLTEpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRzdHIuM3guaHRtbCI+d2dldG5zdHIoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogd2dldHN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IGdldG5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBnZXRzdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgYWN0dWFsbHkgZ2V0c3RyIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGF0IHJlc3VsdHMgaW4gYnVmZmVyPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBvdmVyZmxvd3MuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ3NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgwNF8xNCI+R2V0PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ3NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgwNV83Ij5XaW48L0E+PC9GT05UPiAgICA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MDZfNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYwXzkiPkxpbmVfUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDc2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODA3XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OwotICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDc3XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODA4XzciPlN0cjwvQT48L0ZPTlQ+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmc7Ci0gICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0NzhfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MDlfNyI+TGVuPC9BPjwvRk9OVD4gICAgOiA8Yj5pbjwvYj4gIEludGVnZXIgOj0gLTEpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2dldHN0ci4zeC5odG1sIj5tdndnZXRuc3RyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogbXZ3Z2V0c3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiBtdmdldG5zdHIoKTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IG12Z2V0c3RyKCk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgR2V0IGlzIG5vdCBpbmxpbmVkPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwOCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NDRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MTVfMTQiPkdldDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY0NF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgxNl83Ij5XaW48L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NDVfMTkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MTdfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjQ2XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODE4XzciPkNvbHVtbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTlfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKKyAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjQ3XzE5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODE5XzciPlN0cjwvQT48L3NwYW4+ICAgIDogPGI+b3V0PC9iPiBTdHJpbmc7CisgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY0OF8xOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgyMF83Ij5MZW48L0E+PC9zcGFuPiAgICA6IEludGVnZXIgOj0gLTEpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19nZXRzdHIuM3guaHRtbCI+bXZ3Z2V0bnN0cigpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdndnZXRzdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdmdldG5zdHIoKTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiBtdmdldHN0cigpPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBHZXQgaXMgbm90IGlubGluZWQ8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5jdXJzX3Nsay4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IHNsa19hdHRyX29uLCBzbGtfYXR0cl9vZmYsIHNsa19hdHRyX3NldDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBzbGtfYXR0cl9vbiwgc2xrX2F0dHJfb2ZmLCBzbGtfYXR0cl9zZXQ8L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDkxXzkiPlNvZnRfTGFiZWxfS2V5X0Zvcm1hdDwvQT48L0ZPTlQ+IDxiPmlzPC9iPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDkxXzM1Ij5UaHJlZV9Ud29fVGhyZWU8L0E+PC9GT05UPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OTJfMzUiPkZvdXJfRm91cjwvQT48L0ZPTlQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5M18zNSI+UENfU3R5bGU8L0E+PC9GT05UPiwgICAgICAgICAgICAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgbmN1cnNlcyBzcGVjaWZpYzwvRU0+PC9GT05UPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5NF8zNSI+UENfU3R5bGVfV2l0aF9JbmRleDwvQT48L0ZPTlQ+KTsgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIjwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDk1XzkiPkxhYmVsX051bWJlcjwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5uZXc8L2I+IFBvc2l0aXZlIDxiPnJhbmdlPC9iPiAxIC4uIDEyOwotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNDk2XzkiPkxhYmVsX0p1c3RpZmljYXRpb248L0E+PC9GT05UPiA8Yj5pczwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5Nl8zMyI+TGVmdDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE0OTZfMzkiPkNlbnRlcmVkPC9BPjwvRk9OVD4sIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5Nl80OSI+UmlnaHQ8L0E+PC9GT05UPik7CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2MV85Ij5Tb2Z0X0xhYmVsX0tleV9Gb3JtYXQ8L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjYxXzM1Ij5UaHJlZV9Ud29fVGhyZWU8L0E+PC9zcGFuPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2Ml8zNSI+Rm91cl9Gb3VyPC9BPjwvc3Bhbj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NjNfMzUiPlBDX1N0eWxlPC9BPjwvc3Bhbj4sICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBuY3Vyc2VzIHNwZWNpZmljPC9FTT48L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NjRfMzUiPlBDX1N0eWxlX1dpdGhfSW5kZXg8L0E+PC9zcGFuPik7ICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAiPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2NV85Ij5MYWJlbF9OdW1iZXI8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBQb3NpdGl2ZSA8Yj5yYW5nZTwvYj4gMSAuLiAxMjsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjY2XzkiPkxhYmVsX0p1c3RpZmljYXRpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjY2XzMzIj5MZWZ0PC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjY2XzM5Ij5DZW50ZXJlZDwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY2Nl80OSI+UmlnaHQ8L0E+PC9zcGFuPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMDkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTQ5OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgxNl8xNCI+SW5pdF9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTAwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MTdfNyI+Rm9ybWF0PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5MV85Ij5Tb2Z0X0xhYmVsX0tleV9Gb3JtYXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTFfMzUiPlRocmVlX1R3b19UaHJlZTwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfaW5pdCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTlfMTQiPkluaXRfU29mdF9MYWJlbF9LZXlzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEwOSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MjdfMTQiPkluaXRfU29mdF9MYWJlbF9LZXlzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjcwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MjhfNyI+Rm9ybWF0PC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjYxXzkiPlNvZnRfTGFiZWxfS2V5X0Zvcm1hdDwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2MV8zNSI+VGhyZWVfVHdvX1RocmVlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfaW5pdCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NjlfMTQiPkluaXRfU29mdF9MYWJlbF9LZXlzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwNV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgyN18xNCI+U2V0X1NvZnRfTGFiZWxfS2V5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUwNV8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgyN18zNCI+TGFiZWw8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNDk1XzkiPkxhYmVsX051bWJlcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MDZfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MjhfMzQiPlRleHQ8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTA3XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODI5XzM0Ij5GbXQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE0OTZfOSI+TGFiZWxfSnVzdGlmaWNhdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5Nl8zMyI+TGVmdDwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfc2V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFdlIGRvbid0IGlubGluZSB0aGlzIHByb2NlZHVyZTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTAiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjc1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODM4XzE0Ij5TZXRfU29mdF9MYWJlbF9LZXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2NzVfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4MzhfMzQiPkxhYmVsPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjY1XzkiPkxhYmVsX051bWJlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY3Nl8zNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTgzOV8zNCI+VGV4dDwvQT48L3NwYW4+ICA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjc3XzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODQwXzM0Ij5GbXQ8L0E+PC9zcGFuPiAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2Nl85Ij5MYWJlbF9KdXN0aWZpY2F0aW9uPC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjY2XzMzIj5MZWZ0PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfc2V0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBXZSBkbyBub3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg0Nl8xNCI+UmVmcmVzaF9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX3JlZnJlc2goKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTEyXzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjgyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODU4XzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX3JlZnJlc2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjgyXzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5czwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTEyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NTZfMTQiPlJlZnJlc2hfU29mdF9MYWJlbF9LZXlzX1dpdGhvdXRfVXBkYXRlPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPnNsa19ub3V0cmVmcmVzaCgpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1MTdfMTQiPlJlZnJlc2hfU29mdF9MYWJlbF9LZXlzX1dpdGhvdXRfVXBkYXRlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2ODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjhfMTQiPlJlZnJlc2hfU29mdF9MYWJlbF9LZXlzX1dpdGhvdXRfVXBkYXRlPC9BPjwvc3Bhbj47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfbm91dHJlZnJlc2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjg3XzE0Ij5SZWZyZXNoX1NvZnRfTGFiZWxfS2V5c19XaXRob3V0X1VwZGF0ZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTEzIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MjJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjZfMTQiPkdldF9Tb2Z0X0xhYmVsX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MjJfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NjZfMzQiPkxhYmVsPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5NV85Ij5MYWJlbF9OdW1iZXI8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTIzXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODY3XzM0Ij5UZXh0PC9BPjwvRk9OVD4gIDogPGI+b3V0PC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfbGFiZWwoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTEzIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTY5Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg3OF8xNCI+R2V0X1NvZnRfTGFiZWxfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjkyXzM0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODc4XzM0Ij5MYWJlbDwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2NV85Ij5MYWJlbF9OdW1iZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OTNfMzQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NzlfMzQiPlRleHQ8L0E+PC9zcGFuPiAgOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfbGFiZWwoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NzVfMTMiPkdldF9Tb2Z0X0xhYmVsX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1MjdfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4NzVfMzMiPkxhYmVsPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTQ5NV85Ij5MYWJlbF9OdW1iZXI8L0E+KSA8Yj5yZXR1cm48L2I+IFN0cmluZzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2xhYmVsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTE0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjk3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODg3XzEzIj5HZXRfU29mdF9MYWJlbF9LZXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE2OTdfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4ODdfMzMiPkxhYmVsPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjY1XzkiPkxhYmVsX051bWJlcjwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2xhYmVsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBTYW1lIGFzIGZ1bmN0aW9uPC9FTT48L3NwYW4+CiAgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoR2V0X1NvZnRfTGFiZWxfS2V5KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTMzXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xODgzXzE0Ij5DbGVhcl9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2NsZWFyKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTUzM18xNCI+Q2xlYXJfU29mdF9MYWJlbF9LZXlzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE4OTVfMTQiPkNsZWFyX1NvZnRfTGFiZWxfS2V5czwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2NsZWFyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcwM18xNCI+Q2xlYXJfU29mdF9MYWJlbF9LZXlzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTUzOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTg5M18xNCI+UmVzdG9yZV9Tb2Z0X0xhYmVsX0tleXM8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX3Jlc3RvcmUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTM4XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzA4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTA1XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX3Jlc3RvcmUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzA4XzE0Ij5SZXN0b3JlX1NvZnRfTGFiZWxfS2V5czwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTE3IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MDNfMTQiPlRvdWNoX1NvZnRfTGFiZWxfS2V5czwvQT48L0ZPTlQ+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfdG91Y2goKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTQzXzE0Ij5Ub3VjaF9Tb2Z0X0xhYmVsX0tleXM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTE3IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcxM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxNV8xNCI+VG91Y2hfU29mdF9MYWJlbF9LZXlzPC9BPjwvc3Bhbj47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfdG91Y2goKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzEzXzE0Ij5Ub3VjaF9Tb2Z0X0xhYmVsX0tleXM8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExOCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTQ4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTEzXzE0Ij5Td2l0Y2hfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L0ZPTlQ+Ci0gICAgICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1NDlfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkxNF83Ij5BdHRyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU1MF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTE1XzciPk9uPC9BPjwvRk9OVD4gICA6IDxiPmluPC9iPiBCb29sZWFuIDo9IFRydWUpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfYXR0cm9uKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogc2xrX2F0dHJvZmYoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE1NDhfMTQiPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzExOCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MThfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjVfMTQiPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzE5XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjZfNyI+QXR0cjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzIwXzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MjdfNyI+T248L0E+PC9zcGFuPiAgIDogQm9vbGVhbiA6PSBUcnVlKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPnNsa19hdHRyb24oKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogc2xrX2F0dHJvZmYoKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MThfMTQiPlN3aXRjaF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTkiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU1Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTkzN18xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0F0dHJpYnV0ZXM8L0E+PC9GT05UPgotICAgICAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTU3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MzhfNyI+QXR0cjwvQT48L0ZPTlQ+ICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zMDdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1MF80Ij5Ob3JtYWxfVmlkZW88L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTU4XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5MzlfNyI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTlfOSI+Q29sb3JfUGFpcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+J0ZpcnN0KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2F0dHJzZXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTU2XzE0Ij5TZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMTkiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzI2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTQ5XzE0Ij5TZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L3NwYW4+CisgICAgICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTcyN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTUwXzciPkF0dHI8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTdfOSI+Q2hhcmFjdGVyX0F0dHJpYnV0ZV9TZXQ8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4NV80Ij5Ob3JtYWxfVmlkZW88L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MjhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk1MV83Ij5Db2xvcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwOV85Ij5Db2xvcl9QYWlyPC9BPidGaXJzdCk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfYXR0cnNldCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3MjZfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTYzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTUzXzEzIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2F0dHIoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTIwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzMzXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTY1XzEzIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPnNsa19hdHRyKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTY3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTYzXzEzIj5HZXRfU29mdF9MYWJlbF9LZXlfQXR0cmlidXRlczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+OwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfYXR0cigpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3MzdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5NzVfMTMiPkdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDlfOSI+Q29sb3JfUGFpcjwvQT47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Nsay4zeC5odG1sIj5zbGtfYXR0cigpPC9BPjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKEdldF9Tb2Z0X0xhYmVsX0tleV9BdHRyaWJ1dGVzKTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyMiIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTcyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTczXzE0Ij5TZXRfU29mdF9MYWJlbF9LZXlfQ29sb3I8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTcyXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTczXzQwIj5QYWlyPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk5XzkiPkNvbG9yX1BhaXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zbGsuM3guaHRtbCI+c2xrX2NvbG9yKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU3Ml8xNCI+U2V0X1NvZnRfTGFiZWxfS2V5X0NvbG9yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyMiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NDJfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODVfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleV9Db2xvcjwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc0Ml80MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4NV80MCI+UGFpcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2xrLjN4Lmh0bWwiPnNsa19jb2xvcigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NDJfMTQiPlNldF9Tb2Z0X0xhYmVsX0tleV9Db2xvcjwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4va2V5Ym91bmQuM3guaHRtbCI+a2V5Ym91bmQuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiBrZXlib3VuZDwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4va2V5Ym91bmQuM3guaHRtbCI+a2V5Ym91bmQuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IGtleWJvdW5kPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9rZXlvay4zeC5odG1sIj5rZXlvay4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4va2V5b2suM3guaHRtbCI+a2V5b2suM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU4Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk4NF8xNCI+RW5hYmxlX0tleTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1ODZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODRfMjYiPktleTwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc4XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1ODdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5ODVfMjYiPkVuYWJsZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEJvb2xlYW4gOj0gVHJ1ZSk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2tleW9rLjN4Lmh0bWwiPmtleW9rKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTU4Nl8xNCI+RW5hYmxlX0tleTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjMiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzU2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTk2XzE0Ij5FbmFibGVfS2V5PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzU2XzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTk2XzI2Ij5LZXk8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzc2XzEyIj5TcGVjaWFsX0tleV9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc1N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk5N18yNiI+RW5hYmxlPC9BPjwvc3Bhbj4gOiBCb29sZWFuIDo9IFRydWUpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4va2V5b2suM3guaHRtbCI+a2V5b2soKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzE0Ij5FbmFibGVfS2V5PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9kZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2RlZmluZV9rZXkuM3guaHRtbCI+ZGVmaW5lX2tleS4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNTk2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8xOTk3XzE0Ij5EZWZpbmVfS2V5PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTU5Nl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMTk5N18yNiI+RGVmaW5pdGlvbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE1OTdfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzE5OThfMjYiPktleTwvQT48L0ZPTlQ+ICAgICAgICA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83OF8xMiI+U3BlY2lhbF9LZXlfQ29kZTwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9kZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNTk2XzE0Ij5EZWZpbmVfS2V5PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyNCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NjZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMTBfMTQiPkRlZmluZV9LZXk8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3NjZfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMTBfMjYiPkRlZmluaXRpb248L0E+PC9zcGFuPiA6IFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc2N18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxMV8yNiI+S2V5PC9BPjwvc3Bhbj4gICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNzZfMTIiPlNwZWNpYWxfS2V5X0NvZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2RlZmluZV9rZXkuM3guaHRtbCI+ZGVmaW5lX2tleSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjZfMTQiPkRlZmluZV9LZXk8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBOb3QgaW1wbGVtZW50ZWQgOiBmaWx0ZXIsIHVzZV9lbnY8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBwdXR3aW4sIGdldHdpbiBhcmUgaW4gdGhlIGNoaWxkIHBhY2thZ2UgUHV0V2luPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTm90IGltcGxlbWVudGVkIDogZmlsdGVyLCB1c2VfZW52PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IHB1dHdpbiwgZ2V0d2luIGFyZSBpbiB0aGUgY2hpbGQgcGFja2FnZSBQdXRXaW48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjEwXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MF8xNCI+S2V5X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjEwXzI0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl85MF8yNCI+S2V5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYxMV8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTFfMjQiPk5hbWU8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPmtleW5hbWUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIGV4dGVybmFsIG5hbWUgZm9yIGEgcmVhbCBrZXlzdHJva2UuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEyNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3ODBfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkwXzE0Ij5LZXlfTmFtZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTc4MF8yNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfOTBfMjQiPktleTwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzcxXzEyIj5SZWFsX0tleV9Db2RlPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3ODFfMjQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzkxXzI0Ij5OYW1lPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3V0aWwuM3guaHRtbCI+a2V5bmFtZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlIGV4dGVybmFsIG5hbWUgZm9yIGEgcmVhbCBrZXlzdHJva2UuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjE2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82Ml8xMyI+S2V5X05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjE2XzIzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82Ml8yMyI+S2V5PC9BPjwvRk9OVD4gIDogPGI+aW48L2I+ICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83M18xMiI+UmVhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3V0aWwuM3guaHRtbCI+a2V5bmFtZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBTYW1lIGFzIGZ1bmN0aW9uPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFdlIGRvbid0IGlubGluZSB0aGlzIHJvdXRpbmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTI2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzg2XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl82Ml8xMyI+S2V5X05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3ODZfMjMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzYyXzIzIj5LZXk8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl83MV8xMiI+UmVhbF9LZXlfQ29kZTwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPmtleW5hbWUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFdlIGRvIG5vdCBpbmxpbmUgdGhpcyByb3V0aW5lPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAxM18xNCI+VW5fQ29udHJvbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MjJfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMTNfMjYiPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjIzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDE0XzI2Ij5TdHI8L0E+PC9GT05UPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPnVuY3RybCgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMjciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzkyXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDI2XzE0Ij5Vbl9Db250cm9sPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzkyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDI2XzI2Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE3OTNfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMjdfMjYiPlN0cjwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiBTdHJpbmcpOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPnVuY3RybCgpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTI4IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYyN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjAyMl8xMyI+VW5fQ29udHJvbDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MjdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMjJfMjUiPkNoPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM1Ml85Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3V0aWwuM3guaHRtbCI+dW5jdHJsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTI4IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzk3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDM1XzEzIj5Vbl9Db250cm9sPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzk3XzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDM1XzI1Ij5DaDwvQT48L3NwYW4+ICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQ4N185Ij5BdHRyaWJ1dGVkX0NoYXJhY3RlcjwvQT4pIDxiPnJldHVybjwvYj4gU3RyaW5nOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPnVuY3RybCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFVuX0NvbnRyb2wpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTI5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MzNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMzBfMTQiPkRlbGF5X091dHB1dDwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2MzNfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwMzBfMjgiPk1zZWNzPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5kZWxheV9vdXRwdXQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjMzXzE0Ij5EZWxheV9PdXRwdXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTI5IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgwM18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA0M18xNCI+RGVsYXlfT3V0cHV0PC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODAzXzI4IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDQzXzI4Ij5Nc2VjczwvQT48L3NwYW4+IDogTmF0dXJhbCk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3V0aWwuM3guaHRtbCI+ZGVsYXlfb3V0cHV0KCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwM18xNCI+RGVsYXlfT3V0cHV0PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTYzOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA0MF8xNCI+Rmx1c2hfSW5wdXQ8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc191dGlsLjN4Lmh0bWwiPmZsdXNoaW5wKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTYzOF8xNCI+Rmx1c2hfSW5wdXQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgwOF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA1M18xNCI+Rmx1c2hfSW5wdXQ8L0E+PC9zcGFuPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdXRpbC4zeC5odG1sIj5mbHVzaGlucCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MDhfMTQiPkZsdXNoX0lucHV0PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5jdXJzX3Rlcm1hdHRycy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+Y3Vyc190ZXJtYXR0cnMuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjQ3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDUwXzEzIj5CYXVkcmF0ZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gTmF0dXJhbDsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+YmF1ZHJhdGUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjQ3XzEzIj5CYXVkcmF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MTdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNjNfMTMiPkJhdWRyYXRlPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBOYXR1cmFsOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+YmF1ZHJhdGUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODE3XzEzIj5CYXVkcmF0ZTwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTMyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY1Ml8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA1OF8xMyI+RXJhc2VfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBDaGFyYWN0ZXI7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPmVyYXNlY2hhcigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NTJfMTMiPkVyYXNlX0NoYXJhY3RlcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzIiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNzFfMTMiPkVyYXNlX0NoYXJhY3RlcjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQ2hhcmFjdGVyOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+ZXJhc2VjaGFyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgyMl8xMyI+RXJhc2VfQ2hhcmFjdGVyPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjU3XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDY2XzEzIj5LaWxsX0NoYXJhY3RlcjwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gQ2hhcmFjdGVyOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5raWxsY2hhcigpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE2NTdfMTMiPktpbGxfQ2hhcmFjdGVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzMyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgyN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA3OV8xMyI+S2lsbF9DaGFyYWN0ZXI8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IENoYXJhY3RlcjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPmtpbGxjaGFyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgyN18xMyI+S2lsbF9DaGFyYWN0ZXI8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzNCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NjJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwNzRfMTMiPkhhc19JbnNlcnRfQ2hhcmFjdGVyPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5oYXNfaWMoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNjYyXzEzIj5IYXNfSW5zZXJ0X0NoYXJhY3RlcjwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4MzJfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwODdfMTMiPkhhc19JbnNlcnRfQ2hhcmFjdGVyPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+aGFzX2ljKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzMl8xMyI+SGFzX0luc2VydF9DaGFyYWN0ZXI8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzNSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2NjdfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIwODZfMTMiPkhhc19JbnNlcnRfTGluZTwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+aGFzX2lsKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY2N18xMyI+SGFzX0luc2VydF9MaW5lPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzNSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTgzN18xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjA5OV8xMyI+SGFzX0luc2VydF9MaW5lPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+aGFzX2lsKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzN18xMyI+SGFzX0luc2VydF9MaW5lPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjcyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMDk4XzEzIj5TdXBwb3J0ZWRfQXR0cmlidXRlczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzA3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+dGVybWF0dHJzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTY3Ml8xMyI+U3VwcG9ydGVkX0F0dHJpYnV0ZXM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTM2IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODQyXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTExXzEzIj5TdXBwb3J0ZWRfQXR0cmlidXRlczwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDE3XzkiPkNoYXJhY3Rlcl9BdHRyaWJ1dGVfU2V0PC9BPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPnRlcm1hdHRycygpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4NDJfMTMiPlN1cHBvcnRlZF9BdHRyaWJ1dGVzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzciIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEwOF8xNCI+TG9uZ19OYW1lPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTY3N18yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjEwOF8yNSI+TmFtZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5sb25nbmFtZSgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzciIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODQ3XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTIxXzE0Ij5Mb25nX05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NDdfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMjFfMjUiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPmxvbmduYW1lKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzgiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjgxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTE2XzEzIj5Mb25nX05hbWU8L0E+PC9GT05UPiA8Yj5yZXR1cm48L2I+IFN0cmluZzsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+bG9uZ25hbWUoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xMzgiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NTFfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMjlfMTMiPkxvbmdfTmFtZTwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gU3RyaW5nOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+bG9uZ25hbWUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW5saW5lIChMb25nX05hbWUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTM5IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE2ODdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMjRfMTQiPlRlcm1pbmFsX05hbWU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjg3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTI0XzI5Ij5OYW1lPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPnRlcm1uYW1lKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzEzOSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NTdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMzdfMTQiPlRlcm1pbmFsX05hbWU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4NTdfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxMzdfMjkiPk5hbWU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPnRlcm1uYW1lKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDAiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNjkxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTMyXzEzIj5UZXJtaW5hbF9OYW1lPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBTdHJpbmc7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPnRlcm1uYW1lKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNhbWUgYXMgZnVuY3Rpb248L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+ZnVuY3Rpb248L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODYxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTQ1XzEzIj5UZXJtaW5hbF9OYW1lPC9BPjwvc3Bhbj4gPGI+cmV0dXJuPC9iPiBTdHJpbmc7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Rlcm1hdHRycy4zeC5odG1sIj50ZXJtbmFtZSgpPC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgU2FtZSBhcyBmdW5jdGlvbjwvRU0+PC9zcGFuPgogICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKFRlcm1pbmFsX05hbWUpOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jb2xvci4zeC5odG1sIj5jdXJzX2NvbG9yLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmN1cnNfY29sb3IuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQ09MT1JfUEFJUjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBDT0xPUl9QQUlSKG4pIGluIEMgaXMgdGhlIHNhbWUgYXM8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQXR0cmlidXRlZF9DaGFyYWN0ZXIoQ2ggPSZndDsgTnVsLCBDb2xvciA9Jmd0OyBuLCBBdHRyID0mZ3Q7IE5vcm1hbF9WaWRlbyk8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgSW4gQyB5b3Ugb2Z0ZW4gc2VlIHNvbWV0aGluZyBsaWtlIGMgPSBjIHwgQ09MT1JfUEFJUihuKTs8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGMuQ29sb3IgOj0gbjs8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIENPTE9SX1BBSVI8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIENPTE9SX1BBSVIobikgaW4gQyBpcyB0aGUgc2FtZSBhczwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXR0cmlidXRlZF9DaGFyYWN0ZXIoQ2ggPSZndDsgTnVsLCBDb2xvciA9Jmd0OyBuLCBBdHRyID0mZ3Q7IE5vcm1hbF9WaWRlbyk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEluIEMgeW91IG9mdGVuIHNlZSBzb21ldGhpbmcgbGlrZSBjID0gYyB8IENPTE9SX1BBSVIobik7PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYy5Db2xvciA6PSBuOzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQxIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MDdfMTQiPlN0YXJ0X0NvbG9yPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY29sb3IuM3guaHRtbCI+c3RhcnRfY29sb3IoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQxIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg3N18xNCI+U3RhcnRfQ29sb3I8L0E+PC9zcGFuPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY29sb3IuM3guaHRtbCI+c3RhcnRfY29sb3IoKTwvQT48L0VNPjwvc3Bhbj4KICAgIDxiPnByYWdtYTwvYj4gSW1wb3J0IChDLCBTdGFydF9Db2xvciwgInN0YXJ0X2NvbG9yIik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxMl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE0MF8xNCI+SW5pdF9QYWlyPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxMl8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE0MF8yNSI+UGFpcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzMwMV8xMiI+UmVkZWZpbmFibGVfQ29sb3JfUGFpcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MTNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNDFfMjUiPkZvcmU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxNF8yNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE0Ml8yNSI+QmFjazwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jb2xvci4zeC5odG1sIj5pbml0X3BhaXIoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzEyXzE0Ij5Jbml0X1BhaXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg4Ml8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE1M18xNCI+SW5pdF9QYWlyPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODgyXzI1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTUzXzI1Ij5QYWlyPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MTFfMTIiPlJlZGVmaW5hYmxlX0NvbG9yX1BhaXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4ODNfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTRfMjUiPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4ODRfMjUiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNTVfMjUiPkJhY2s8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY29sb3IuM3guaHRtbCI+aW5pdF9wYWlyKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTg4Ml8xNCI+SW5pdF9QYWlyPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2Ml8xNCI+UGFpcl9Db250ZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcxOV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2Ml8yOCI+UGFpcjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5OV85Ij5Db2xvcl9QYWlyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyMF8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2M18yOCI+Rm9yZTwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyMV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE2NF8yOCI+QmFjazwvQT48L0ZPTlQ+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yNzhfOSI+Q29sb3JfTnVtYmVyPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY29sb3IuM3guaHRtbCI+cGFpcl9jb250ZW50KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcxOV8xNCI+UGFpcl9Db250ZW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4ODlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNzdfMTQiPlBhaXJfQ29udGVudDwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg4OV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE3N18yOCI+UGFpcjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA5XzkiPkNvbG9yX1BhaXI8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4OTBfMjgiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxNzhfMjgiPkZvcmU8L0E+PC9zcGFuPiA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTg5MV8yOCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE3OV8yOCI+QmFjazwvQT48L3NwYW4+IDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPnBhaXJfY29udGVudCgpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4ODlfMTQiPlBhaXJfQ29udGVudDwvQT4pOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTQ0IiMyfDwvRU0+PC9GT05UPgotICAgPGI+ZnVuY3Rpb248L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTcyNl8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE4Ml8xMyI+SGFzX0NvbG9yczwvQT48L0ZPTlQ+IDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19jb2xvci4zeC5odG1sIj5oYXNfY29sb3JzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTcyNl8xMyI+SGFzX0NvbG9yczwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDQiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE4OTZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTdfMTMiPkhhc19Db2xvcnM8L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmhhc19jb2xvcnMoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xODk2XzEzIj5IYXNfQ29sb3JzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE5NF8xNCI+SW5pdF9Db2xvcjwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTRfMjYiPkNvbG9yPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzMyXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMTk1XzI2Ij5SZWQ8L0E+PC9GT05UPiAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5NV85Ij5SR0JfVmFsdWU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTczM18yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjE5Nl8yNiI+R3JlZW48L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3MzRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIxOTdfMjYiPkJsdWU8L0E+PC9GT05UPiAgOiA8Yj5pbjwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmluaXRfY29sb3IoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzMxXzE0Ij5Jbml0X0NvbG9yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0NSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMDlfMTQiPkluaXRfQ29sb3I8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MDFfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMDlfMjYiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkwMl8yNiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIxMF8yNiI+UmVkPC9BPjwvc3Bhbj4gICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTAzXzI2IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjExXzI2Ij5HcmVlbjwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MDRfMjYiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMTJfMjYiPkJsdWU8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDVfOSI+UkdCX1ZhbHVlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmluaXRfY29sb3IoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTAxXzE0Ij5Jbml0X0NvbG9yPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNDYiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzM5XzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjExXzEzIj5DYW5fQ2hhbmdlX0NvbG9yPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBCb29sZWFuOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmNhbl9jaGFuZ2VfY29sb3IoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzM5XzEzIj5DYW5fQ2hhbmdlX0NvbG9yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0NiIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkwOV8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIyN18xMyI+Q2FuX0NoYW5nZV9Db2xvcjwvQT48L3NwYW4+IDxiPnJldHVybjwvYj4gQm9vbGVhbjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfY29sb3IuM3guaHRtbCI+Y2FuX2NoYW5nZV9jb2xvcigpPC9BPjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MDlfMTMiPkNhbl9DaGFuZ2VfQ29sb3I8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0NyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzQ0XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjIzXzE0Ij5Db2xvcl9Db250ZW50PC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc0NF8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIyM18yOSI+Q29sb3I8L0E+PC9GT05UPiA6IDxiPmluPC9iPiAgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzQ1XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjI0XzI5Ij5SZWQ8L0E+PC9GT05UPiAgIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yOTVfOSI+UkdCX1ZhbHVlPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NDZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMjVfMjkiPkdyZWVuPC9BPjwvRk9OVD4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI5NV85Ij5SR0JfVmFsdWU8L0E+OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc0N18yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjIyNl8yOSI+Qmx1ZTwvQT48L0ZPTlQ+ICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjk1XzkiPlJHQl9WYWx1ZTwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmNvbG9yX2NvbnRlbnQoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzQ0XzE0Ij5Db2xvcl9Db250ZW50PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MTRfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzlfMTQiPkNvbG9yX0NvbnRlbnQ8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MTRfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyMzlfMjkiPkNvbG9yPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8zODlfOSI+Q29sb3JfTnVtYmVyPC9BPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkxNV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0MF8yOSI+UmVkPC9BPjwvc3Bhbj4gICA6IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDA1XzkiPlJHQl9WYWx1ZTwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MTZfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNDFfMjkiPkdyZWVuPC9BPjwvc3Bhbj4gOiA8Yj5vdXQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzQwNV85Ij5SR0JfVmFsdWU8L0E+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTE3XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjQyXzI5Ij5CbHVlPC9BPjwvc3Bhbj4gIDogPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80MDVfOSI+UkdCX1ZhbHVlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwiPmNvbG9yX2NvbnRlbnQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTE0XzE0Ij5Db2xvcl9Db250ZW50PC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE5vdCBpbXBsZW1lbnRlZDogZ2V0c3l4LCBzZXRzeXg8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLTwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzU2XzkiPkN1cnNlc19Nb2RlPC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NTZfMjUiPkN1cnNlczwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NTZfMzMiPlNoZWxsPC9BPjwvRk9OVD4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE5vdCBpbXBsZW1lbnRlZDogZ2V0c3l4LCBzZXRzeXg8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTI2XzkiPkN1cnNlc19Nb2RlPC9BPjwvc3Bhbj4gPGI+aXM8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTkyNl8yNSI+Q3Vyc2VzPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTI2XzMzIj5TaGVsbDwvQT48L3NwYW4+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjQ3XzE0Ij5TYXZlX0N1cnNlc19Nb2RlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc1OV8zMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI0N18zMiI+TW9kZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NTZfOSI+Q3Vyc2VzX01vZGU8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+ZGVmX3Byb2dfbW9kZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IGRlZl9zaGVsbF9tb2RlKCk8L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU5XzE0Ij5TYXZlX0N1cnNlc19Nb2RlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0OCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNjRfMTQiPlNhdmVfQ3Vyc2VzX01vZGU8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MjlfMzIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNjRfMzIiPk1vZGU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjZfOSI+Q3Vyc2VzX01vZGU8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPmRlZl9wcm9nX21vZGUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogZGVmX3NoZWxsX21vZGUoKTwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5MjlfMTQiPlNhdmVfQ3Vyc2VzX01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0OSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzY1XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjY1XzE0Ij5SZXNldF9DdXJzZXNfTW9kZTwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3NjVfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyNjVfMzMiPk1vZGU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzU2XzkiPkN1cnNlc19Nb2RlPC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPnJlc2V0X3Byb2dfbW9kZSgpPC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IHJlc2V0X3NoZWxsX21vZGUoKTwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3NjVfMTQiPlJlc2V0X0N1cnNlc19Nb2RlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE0OSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5MzVfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIyODJfMTQiPlJlc2V0X0N1cnNlc19Nb2RlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTM1XzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjgyXzMzIj5Nb2RlPC9BPjwvc3Bhbj4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Nb2RlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sIj5yZXNldF9wcm9nX21vZGUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogcmVzZXRfc2hlbGxfbW9kZSgpPC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTkzNV8xNCI+UmVzZXRfQ3Vyc2VzX01vZGU8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1MCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMjgzXzE0Ij5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPnNhdmV0dHkoKTwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzcxXzE0Ij5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1MCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NDFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMDBfMTQiPlNhdmVfVGVybWluYWxfU3RhdGU8L0E+PC9zcGFuPjsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPnNhdmV0dHkoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTQxXzE0Ij5TYXZlX1Rlcm1pbmFsX1N0YXRlPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNTEiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc3Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjI5M18xNCI+UmVzZXRfVGVybWluYWxfU3RhdGU8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+cmVzZXR0eSgpOzwvQT48L0VNPjwvRk9OVD4KLSAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzc2XzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNTEiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTQ2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzEwXzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+cmVzZXR0eSgpOzwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTQ2XzE0Ij5SZXNldF9UZXJtaW5hbF9TdGF0ZTwvQT4pOwogCi0gICA8Yj50eXBlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3ODBfOSI+U3Rkc2NyX0luaXRfUHJvYzwvQT48L0ZPTlQ+IDxiPmlzPC9iPiA8Yj5hY2Nlc3M8L2I+Ci0gICAgICA8Yj5mdW5jdGlvbjwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTc4MV8xNyI+V2luPC9BPjwvRk9OVD4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPjsKLSAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3ODJfMTciPkNvbHVtbnM8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY1XzEyIj5Db2x1bW5fQ291bnQ8L0E+KSA8Yj5yZXR1cm48L2I+IEludGVnZXI7Ci0gICA8Yj5wcmFnbWE8L2I+IENvbnZlbnRpb24gKEMsIDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODBfOSI+U3Rkc2NyX0luaXRfUHJvYzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOLkIuOiB0aGUgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGlnbm9yZWQsIGJ1dCBpdCBzZWVtcyB0byBiZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICBhIGdvb2QgcHJhY3RpY2UgdG8gcmV0dXJuIDAgaWYgeW91IHRoaW5rIGFsbCB3ZW50IGZpbmU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgYW5kIC0xIG90aGVyd2lzZS48L0VNPjwvRk9OVD4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTUwXzkiPlN0ZHNjcl9Jbml0X1Byb2M8L0E+PC9zcGFuPiA8Yj5pczwvYj4gPGI+YWNjZXNzPC9iPgorICAgICAgPGI+ZnVuY3Rpb248L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1MV8xNyI+V2luPC9BPjwvc3Bhbj4gICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPjsKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1Ml8xNyI+Q29sdW1uczwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjNfMTIiPkNvbHVtbl9Db3VudDwvQT4pIDxiPnJldHVybjwvYj4gSW50ZWdlcjsKKyAgIDxiPnByYWdtYTwvYj4gQ29udmVudGlvbiAoQywgPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk1MF85Ij5TdGRzY3JfSW5pdF9Qcm9jPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOLkIuOiB0aGUgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGlnbm9yZWQsIGJ1dCBpdCBzZWVtcyB0byBiZTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgYSBnb29kIHByYWN0aWNlIHRvIHJldHVybiAwIGlmIHlvdSB0aGluayBhbGwgd2VudCBmaW5lPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICBhbmQgLTEgb3RoZXJ3aXNlLjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTUyIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3ODlfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMDNfMTQiPlJpcF9PZmZfTGluZXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzg5XzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzAzXzI5Ij5MaW5lczwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IEludGVnZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzkwXzI5IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzA0XzI5Ij5Qcm9jPC9BPjwvRk9OVD4gIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODBfOSI+U3Rkc2NyX0luaXRfUHJvYzwvQT4pOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sIj5yaXBvZmZsaW5lKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE4uQi46IHRvIGJlIG1vcmUgcHJlY2lzZSwgdGhpcyB1c2VzIGEgbmN1cnNlcyBzcGVjaWZpYyBlbmhhbmNlbWVudCBvZjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAgICAgICByaXBvZmZsaW5lKCksIGluIHdoaWNoIHRoZSBMaW5lcyBhcmd1bWVudCBhYnNvbHV0ZSB2YWx1ZSBpcyB0aGU8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgbnVtYmVyIG9mIGxpbmVzIHRvIGJlIHJpcHBlZCBvZi4gVGhlIG9mZmljaWFsIHJpcG9mZmxpbmUoKSBvbmx5PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgIHVzZXMgdGhlIHNpZ24gb2YgTGluZXMgdG8gcmlwIG9mIGEgc2luZ2xlIGxpbmUgZnJvbSBib3R0b20gb3IgdG9wLjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE3ODlfMTQiPlJpcF9PZmZfTGluZXM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTUyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMyMF8xNCI+UmlwX09mZl9MaW5lczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk1OV8yOSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMyMF8yOSI+TGluZXM8L0E+PC9zcGFuPiA6IEludGVnZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NjBfMjkiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMjFfMjkiPlByb2M8L0E+PC9zcGFuPiAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTUwXzkiPlN0ZHNjcl9Jbml0X1Byb2M8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPnJpcG9mZmxpbmUoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIE4uQi46IHRvIGJlIG1vcmUgcHJlY2lzZSwgdGhpcyB1c2VzIGEgbmN1cnNlcyBzcGVjaWZpYyBlbmhhbmNlbWVudCBvZjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgcmlwb2ZmbGluZSgpLCBpbiB3aGljaCB0aGUgTGluZXMgYXJndW1lbnQgYWJzb2x1dGUgdmFsdWUgaXMgdGhlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICBudW1iZXIgb2YgbGluZXMgdG8gYmUgcmlwcGVkIG9mLiBUaGUgb2ZmaWNpYWwgcmlwb2ZmbGluZSgpIG9ubHk8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgIHVzZXMgdGhlIHNpZ24gb2YgTGluZXMgdG8gcmVtb3ZlIGEgc2luZ2xlIGxpbmUgZnJvbSBib3R0b20gb3IgdG9wLjwvRU0+PC9zcGFuPgorICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5NTlfMTQiPlJpcF9PZmZfTGluZXM8L0E+KTsKIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xNzk4XzkiPkN1cnNvcl9WaXNpYmlsaXR5PC9BPjwvRk9OVD4gPGI+aXM8L2I+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OThfMzEiPkludmlzaWJsZTwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OThfNDIiPk5vcm1hbDwvQT48L0ZPTlQ+LCA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE3OThfNTAiPlZlcnlfVmlzaWJsZTwvQT48L0ZPTlQ+KTsKKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTY4XzkiPkN1cnNvcl9WaXNpYmlsaXR5PC9BPjwvc3Bhbj4gPGI+aXM8L2I+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk2OF8zMSI+SW52aXNpYmxlPC9BPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTY4XzQyIj5Ob3JtYWw8L0E+PC9zcGFuPiwgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NjhfNTAiPlZlcnlfVmlzaWJsZTwvQT48L3NwYW4+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1MyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODAxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzE1XzE0Ij5TZXRfQ3Vyc29yX1Zpc2liaWxpdHk8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODAxXzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzE1XzM3Ij5WaXNpYmlsaXR5PC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xNzk4XzkiPkN1cnNvcl9WaXNpYmlsaXR5PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfc2V0KCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwMV8xNCI+U2V0X0N1cnNvcl9WaXNpYmlsaXR5PC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMzJfMTQiPlNldF9DdXJzb3JfVmlzaWJpbGl0eTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3MV8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjMzMl8zNyI+VmlzaWJpbGl0eTwvQT48L3NwYW4+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk2OF85Ij5DdXJzb3JfVmlzaWJpbGl0eTwvQT4pOworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19zZXQoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTcxXzE0Ij5TZXRfQ3Vyc29yX1Zpc2liaWxpdHk8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODA2XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzI4XzE0Ij5OYXBfTWlsbGlfU2Vjb25kczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MDZfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzMjhfMzMiPk1zPC9BPjwvRk9OVD4gOiA8Yj5pbjwvYj4gTmF0dXJhbCk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPm5hcG1zKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgwNl8xNCI+TmFwX01pbGxpX1NlY29uZHM8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTU0IiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk3Nl8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM0NV8xNCI+TmFwX01pbGxpX1NlY29uZHM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5NzZfMzMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzNDVfMzMiPk1zPC9BPjwvc3Bhbj4gOiBOYXR1cmFsKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwiPm5hcG1zKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk3Nl8xNCI+TmFwX01pbGxpX1NlY29uZHM8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgU29tZSB1c2VmdWwgaGVscGVycy48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODEzXzkiPlRyYW5zZm9ybV9EaXJlY3Rpb248L0E+PC9GT05UPiA8Yj5pczwvYj4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxM18zMyI+RnJvbV9TY3JlZW48L0E+PC9GT05UPiwgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODEzXzQ2Ij5Ub19TY3JlZW48L0E+PC9GT05UPik7Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxNF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM5Nl8xNCI+VHJhbnNmb3JtX0Nvb3JkaW5hdGVzPC9BPjwvRk9OVD4KLSAgICAgKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxNV83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzk3XzciPlc8L0E+PC9GT05UPiAgICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU3XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDc2XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OwotICAgICAgPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODE2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzOThfNyI+TGluZTwvQT48L0ZPTlQ+ICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxN183IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yMzk5XzciPkNvbHVtbjwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IDxiPm91dDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjFfOSI+Q29sdW1uX1Bvc2l0aW9uPC9BPjsKLSAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgxOF83IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDAwXzciPkRpcjwvQT48L0ZPTlQ+ICAgIDogPGI+aW48L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MTNfOSI+VHJhbnNmb3JtX0RpcmVjdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgxM18zMyI+RnJvbV9TY3JlZW48L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhpcyBwcm9jZWR1cmUgdHJhbnNmb3JtcyBzY3JlZW4gY29vcmRpbmF0ZXMgaW50byBjb29yZGluYXRlcyByZWxhdGl2ZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB0byB0aGUgd2luZG93IGFuZCB2aWNlIHZlcnNhLCBkZXBlbmRpbmcgb24gdGhlIERpciBwYXJhbWV0ZXIuPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFNjcmVlbiBjb29yZGluYXRlcyBhcmUgdGhlIHBvc2l0aW9uIGluZm9ybWF0aW9ucyBvbiB0aGUgcGh5c2ljYWwgZGV2aWNlLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBbiBDdXJzZXNfRXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIExpbmUgYW5kIENvbHVtbiBhcmUgbm90IGluIHRoZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBXaW5kb3cgb3IgaWYgeW91IHBhc3MgdGhlIE51bGxfV2luZG93IGFzIGFyZ3VtZW50LjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBXZSBkb24ndCBpbmxpbmUgdGhpcyBwcm9jZWR1cmU8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgU29tZSB1c2VmdWwgaGVscGVycy48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxiPnR5cGU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTgzXzkiPlRyYW5zZm9ybV9EaXJlY3Rpb248L0E+PC9zcGFuPiA8Yj5pczwvYj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTgzXzMzIj5Gcm9tX1NjcmVlbjwvQT48L3NwYW4+LCA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4M180NiI+VG9fU2NyZWVuPC9BPjwvc3Bhbj4pOworICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTk4NF8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjM5Nl8xNCI+VHJhbnNmb3JtX0Nvb3JkaW5hdGVzPC9BPjwvc3Bhbj4KKyAgICAgKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTg1XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzOTdfNyI+VzwvQT48L3NwYW4+ICAgICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81NV85Ij5XaW5kb3c8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzY0NF8xMyI+U3RhbmRhcmRfV2luZG93PC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTg2XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzOThfNyI+TGluZTwvQT48L3NwYW4+ICAgOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF85Ij5MaW5lX1Bvc2l0aW9uPC9BPjsKKyAgICAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTg3XzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzIzOTlfNyI+Q29sdW1uPC9BPjwvc3Bhbj4gOiA8Yj5pbjwvYj4gPGI+b3V0PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OV85Ij5Db2x1bW5fUG9zaXRpb248L0E+OworICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzE5ODhfNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQwMF83Ij5EaXI8L0E+PC9zcGFuPiAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE5ODNfOSI+VHJhbnNmb3JtX0RpcmVjdGlvbjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTk4M18zMyI+RnJvbV9TY3JlZW48L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoaXMgcHJvY2VkdXJlIHRyYW5zZm9ybXMgc2NyZWVuIGNvb3JkaW5hdGVzIGludG8gY29vcmRpbmF0ZXMgcmVsYXRpdmU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHRvIHRoZSB3aW5kb3cgYW5kIHZpY2UgdmVyc2EsIGRlcGVuZGluZyBvbiB0aGUgRGlyIHBhcmFtZXRlci48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFNjcmVlbiBjb29yZGluYXRlcyBhcmUgdGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgcGh5c2ljYWwgZGV2aWNlLjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQW4gQ3Vyc2VzX0V4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiBMaW5lIGFuZCBDb2x1bW4gYXJlIG5vdCBpbiB0aGU8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFdpbmRvdyBvciBpZiB5b3UgcGFzcyB0aGUgTnVsbF9XaW5kb3cgYXMgYXJndW1lbnQuPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBXZSBkbyBub3QgaW5saW5lIHRoaXMgcHJvY2VkdXJlPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9kZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5kZWZhdWx0X2NvbG9ycy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+ZGVmYXVsdF9jb2xvcnMuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNTUiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgzMV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQyNV8xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPjwvRk9OVD47Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2RlZmF1bHRfY29sb3JzLjN4Lmh0bWwiPnVzZV9kZWZhdWx0X2NvbG9ycygpPC9BPjwvRU0+PC9GT05UPgotICAgPGI+cHJhZ21hPC9iPiBJbmxpbmUgKDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzE4MzFfMTQiPlVzZV9EZWZhdWx0X0NvbG9yczwvQT4pOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMDBfNCI+RGVmYXVsdF9Db2xvcjwvQT48L3NwYW4+IDogPGI+Y29uc3RhbnQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IC0xOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTU2IiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MzZfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MzVfMTQiPkFzc3VtZV9EZWZhdWx0X0NvbG9yczwvQT48L0ZPTlQ+ICg8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4MzZfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MzVfMzciPkZvcmU8L0E+PC9GT05UPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI3OF85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzI4NV80Ij5EZWZhdWx0X0NvbG9yPC9BPjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTgzN18zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQzNl8zNyI+QmFjazwvQT48L0ZPTlQ+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjc4XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjg1XzQiPkRlZmF1bHRfQ29sb3I8L0E+KTsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+YXNzdW1lX2RlZmF1bHRfY29sb3JzKCk8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMTgzNl8xNCI+QXNzdW1lX0RlZmF1bHRfQ29sb3JzPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1NSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MjVfMTQiPlVzZV9EZWZhdWx0X0NvbG9yczwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+dXNlX2RlZmF1bHRfY29sb3JzKCk8L0E+PC9FTT48L3NwYW4+CisgICA8Yj5wcmFnbWE8L2I+IElubGluZSAoPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwM18xNCI+VXNlX0RlZmF1bHRfQ29sb3JzPC9BPik7CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2V4dGVuZC4zeC5odG1sIj5jdXJzX2V4dGVuZC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNTYiIzJ8PC9FTT48L3NwYW4+CisgICA8Yj5wcm9jZWR1cmU8L2I+IDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDA4XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDM1XzE0Ij5Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+PC9zcGFuPiAoPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMDhfMzciIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0MzVfMzciPkZvcmU8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzM4OV85Ij5Db2xvcl9OdW1iZXI8L0E+IDo9IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzIwMDBfNCI+RGVmYXVsdF9Db2xvcjwvQT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAwOV8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQzNl8zNyI+QmFjazwvQT48L3NwYW4+IDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMzg5XzkiPkNvbG9yX051bWJlcjwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjAwMF80Ij5EZWZhdWx0X0NvbG9yPC9BPik7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9kZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5hc3N1bWVfZGVmYXVsdF9jb2xvcnMoKTwvQT48L0VNPjwvc3Bhbj4KKyAgIDxiPnByYWdtYTwvYj4gSW5saW5lICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8yMDA4XzE0Ij5Bc3N1bWVfRGVmYXVsdF9Db2xvcnM8L0E+KTsKIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1NyIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPmZ1bmN0aW9uPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NDZfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NTBfMTMiPkN1cnNlc19WZXJzaW9uPC9BPjwvRk9OVD4gPGI+cmV0dXJuPC9iPiBTdHJpbmc7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwiPmN1cnNlc192ZXJzaW9uKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX2V4dGVuZC4zeC5odG1sIj5jdXJzX2V4dGVuZC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1OCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgVGhlIHJldHVybnZhbHVlIGlzIHRoZSBwcmV2aW91cyBzZXR0aW5nIG9mIHRoZSBmbGFnPC9FTT48L0ZPTlQ+Ci0gICA8Yj5mdW5jdGlvbjwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODUxXzEzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDczXzEzIj5Vc2VfRXh0ZW5kZWRfTmFtZXM8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODUxXzMzIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDczXzMzIj5FbmFibGU8L0E+PC9GT05UPiA6IEJvb2xlYW4pIDxiPnJldHVybjwvYj4gQm9vbGVhbjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc19leHRlbmQuM3guaHRtbCI+dXNlX2V4dGVuZGVkX25hbWVzKCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1NyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPmZ1bmN0aW9uPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAxOF8xMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ1MF8xMyI+Q3Vyc2VzX1ZlcnNpb248L0E+PC9zcGFuPiA8Yj5yZXR1cm48L2I+IFN0cmluZzsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwiPmN1cnNlc192ZXJzaW9uKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3RyYWNlLjN4Lmh0bWwiPmN1cnNfdHJhY2UuM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTU4IiMyfDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlIHJldHVybnZhbHVlIGlzIHRoZSBwcmV2aW91cyBzZXR0aW5nIG9mIHRoZSBmbGFnPC9FTT48L3NwYW4+CisgICA8Yj5mdW5jdGlvbjwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMjNfMTMiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NzNfMTMiPlVzZV9FeHRlbmRlZF9OYW1lczwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAyM18zMyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ3M18zMyI+RW5hYmxlPC9BPjwvc3Bhbj4gOiBCb29sZWFuKSA8Yj5yZXR1cm48L2I+IEJvb2xlYW47CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX2V4dGVuZC4zeC5odG1sIj51c2VfZXh0ZW5kZWRfbmFtZXMoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1OSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODU5XzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDU5XzE0Ij5DdXJzZXNfRnJlZV9BbGw8L0E+PC9GT05UPjsKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5fbmNfZnJlZWFsbCgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19zY3JfZHVtcC4zeC5odG1sIj5jdXJzX3Njcl9kdW1wLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE1OSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwMzFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0NTlfMTQiPkN1cnNlc19GcmVlX0FsbDwvQT48L3NwYW4+OworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQUtBOiA8QSBIUkVGPSIuLi9tYW4vY3Vyc190cmFjZS4zeC5odG1sIj5fbmNfZnJlZWFsbCgpPC9BPjwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTYwIiMyfDwvRU0+PC9GT05UPgotICAgPGI+cHJvY2VkdXJlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE4NjdfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI0ODhfMTQiPlNjcmVlbl9EdW1wX1RvX0ZpbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODY3XzM1IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNDg4XzM1Ij5GaWxlbmFtZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbCI+c2NyX2R1bXAoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbCI+Y3Vyc19zY3JfZHVtcC4zeDwvQT48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2MSIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODcxXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTAxXzE0Ij5TY3JlZW5fUmVzdG9yZV9Gcm9tX0ZpbGU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xODcxXzQwIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTAxXzQwIj5GaWxlbmFtZTwvQT48L0ZPTlQ+IDogPGI+aW48L2I+IFN0cmluZyk7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbCI+c2NyX3Jlc3RvcmUoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTYwIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAzOV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ4OF8xNCI+U2NyZWVuX0R1bXBfVG9fRmlsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjAzOV8zNSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjQ4OF8zNSI+RmlsZW5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPnNjcl9kdW1wKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNjIiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg3NV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNF8xNCI+U2NyZWVuX0luaXRfRnJvbV9GaWxlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg3NV8zNyIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNF8zNyI+RmlsZW5hbWU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPnNjcl9pbml0KCk8L0E+PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2MSIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNDNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MDFfMTQiPlNjcmVlbl9SZXN0b3JlX0Zyb21fRmlsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA0M180MCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUwMV80MCI+RmlsZW5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPnNjcl9yZXN0b3JlKCk8L0E+PC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgIzFBIE5BTUU9IkFGVV8xNjMiIzJ8PC9FTT48L0ZPTlQ+Ci0gICA8Yj5wcm9jZWR1cmU8L2I+IDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg3OV8xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUyN18xNCI+U2NyZWVuX1NldF9GaWxlPC9BPjwvRk9OVD4gKDxGT05UIENPTE9SPXJlZD48QSBOQU1FPSJyZWZfMTg3OV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUyN18zMSI+RmlsZW5hbWU8L0E+PC9GT05UPiA6IDxiPmluPC9iPiBTdHJpbmcpOwotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPnNjcl9zZXQoKTwvQT48L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICMxQSBOQU1FPSJBRlVfMTYyIiMyfDwvRU0+PC9zcGFuPgorICAgPGI+cHJvY2VkdXJlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA0N18xNCIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUxNF8xNCI+U2NyZWVuX0luaXRfRnJvbV9GaWxlPC9BPjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDQ3XzM3IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTE0XzM3Ij5GaWxlbmFtZTwvQT48L3NwYW4+IDogU3RyaW5nKTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbCI+c2NyX2luaXQoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfcHJpbnQuM3guaHRtbCI+Y3Vyc19wcmludC4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6ICBtY3ByaW50PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2MyIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwNTFfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1MjdfMTQiPlNjcmVlbl9TZXRfRmlsZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA1MV8zMSIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjUyN18zMSI+RmlsZW5hbWU8L0E+PC9zcGFuPiA6IFN0cmluZyk7CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBBS0E6IDxBIEhSRUY9Ii4uL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPnNjcl9zZXQoKTwvQT48L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfcHJpbnR3LjN4Lmh0bWwiPmN1cnNfcHJpbnR3LjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIE5vdCBpbXBsZW1lbnRlZDogcHJpbnR3LCAgd3ByaW50dywgbXZwcmludHcsIG12d3ByaW50dywgdndwcmludHcsPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgdndfcHJpbnR3PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFBsZWFzZSB1c2UgdGhlIEFkYSBzdHlsZSBUZXh0X0lPIGNoaWxkIHBhY2thZ2VzIGZvciBmb3JtYXR0ZWQ8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgcHJpbnRpbmcuIEl0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBzZW5zZSB0byBtYXAgdGhlIHByaW50ZiBzdHlsZTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBDIGZ1bmN0aW9ucyB0byBBZGEuPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3ByaW50LjN4Lmh0bWwiPmN1cnNfcHJpbnQuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6IG1jcHJpbnQ8L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHwgTWFuIHBhZ2UgPEEgSFJFRj0iLi4vbWFuL2N1cnNfc2NhbncuM3guaHRtbCI+Y3Vyc19zY2Fudy4zeDwvQT48L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6IHNjYW53LCB3c2NhbncsIG12c2NhbncsIG12d3NjYW53LCB2d3NjYW53LCB2d19zY2FudzwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vY3Vyc19wcmludHcuM3guaHRtbCI+Y3Vyc19wcmludHcuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6IHByaW50dywgIHdwcmludHcsIG12cHJpbnR3LCBtdndwcmludHcsIHZ3cHJpbnR3LDwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICB2d19wcmludHc8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFBsZWFzZSB1c2UgdGhlIEFkYSBzdHlsZSBUZXh0X0lPIGNoaWxkIHBhY2thZ2VzIGZvciBmb3JtYXR0ZWQ8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByaW50aW5nLiBJdCBkb2VzIG5vdCBtYWtlIGEgbG90IG9mIHNlbnNlIHRvIG1hcCB0aGUgcHJpbnRmIHN0eWxlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBDIGZ1bmN0aW9ucyB0byBBZGEuPC9FTT48L3NwYW4+CiAKLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9yZXNpemV0ZXJtLjN4Lmh0bWwiPnJlc2l6ZXRlcm0uM3g8L0E+PC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgTm90IEltcGxlbWVudGVkOiByZXNpemV0ZXJtPC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9jdXJzX3NjYW53LjN4Lmh0bWwiPmN1cnNfc2NhbncuM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgaW1wbGVtZW50ZWQ6IHNjYW53LCB3c2NhbncsIG12c2NhbncsIG12d3NjYW53LCB2d3NjYW53LCB2d19zY2FudzwvRU0+PC9zcGFuPgogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vd3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplLjN4PC9BPjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L0ZPTlQ+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8IE1hbiBwYWdlIDxBIEhSRUY9Ii4uL21hbi9yZXNpemV0ZXJtLjN4Lmh0bWwiPnJlc2l6ZXRlcm0uM3g8L0E+PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBOb3QgSW1wbGVtZW50ZWQ6IHJlc2l6ZXRlcm08L0VNPjwvc3Bhbj4KIAotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2NCIjMnw8L0VNPjwvRk9OVD4KLSAgIDxiPnByb2NlZHVyZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTExXzE0IiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTQwXzE0Ij5SZXNpemU8L0E+PC9GT05UPiAoPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTExXzIyIiBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZGIuaHRtI3JlZl8yNTQwXzIyIj5XaW48L0E+PC9GT05UPiAgICAgICAgICAgICAgIDogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl80NzZfMTMiPlN0YW5kYXJkX1dpbmRvdzwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MTJfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDFfMjIiPk51bWJlcl9PZl9MaW5lczwvQT48L0ZPTlQ+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82M18xMiI+TGluZV9Db3VudDwvQT47Ci0gICAgICAgICAgICAgICAgICAgICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MTNfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDJfMjIiPk51bWJlcl9PZl9Db2x1bW5zPC9BPjwvRk9OVD4gOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82NV8xMiI+Q29sdW1uX0NvdW50PC9BPik7Ci0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3dyZXNpemUuM3guaHRtbCI+d3Jlc2l6ZSgpPC9BPjwvRU0+PC9GT05UPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfCBNYW4gcGFnZSA8QSBIUkVGPSIuLi9tYW4vd3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplLjN4PC9BPjwvRU0+PC9zcGFuPgorICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAjMUEgTkFNRT0iQUZVXzE2NCIjMnw8L0VNPjwvc3Bhbj4KKyAgIDxiPnByb2NlZHVyZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwODNfMTQiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDBfMTQiPlJlc2l6ZTwvQT48L3NwYW4+ICg8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4M18yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjU0MF8yMiI+V2luPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzU1XzkiPldpbmRvdzwvQT4gOj0gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNjQ0XzEzIj5TdGFuZGFyZF9XaW5kb3c8L0E+OworICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwODRfMjIiIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2FkYi5odG0jcmVmXzI1NDFfMjIiPk51bWJlcl9PZl9MaW5lczwvQT48L3NwYW4+ICAgOiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl82MV8xMiI+TGluZV9Db3VudDwvQT47CisgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA4NV8yMiIgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRiLmh0bSNyZWZfMjU0Ml8yMiI+TnVtYmVyX09mX0NvbHVtbnM8L0E+PC9zcGFuPiA6IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfX2Fkcy5odG0jcmVmXzYzXzEyIj5Db2x1bW5fQ291bnQ8L0E+KTsKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEFLQTogPEEgSFJFRj0iLi4vbWFuL3dyZXNpemUuM3guaHRtbCI+d3Jlc2l6ZSgpPC9BPjwvRU0+PC9zcGFuPgogCiA8Yj5wcml2YXRlPC9iPgotICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy5JbnRlZ2VyX0FkZHJlc3M7Ci0gICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81OF80Ij5OdWxsX1dpbmRvdzwvQT4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTdfOSI+V2luZG93PC9BPiA6PSAwOworICAgPGI+dHlwZTwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA8Yj5pczwvYj4gPGI+bmV3PC9iPiBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy5JbnRlZ2VyX0FkZHJlc3M7CisgICA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl81Nl80Ij5OdWxsX1dpbmRvdzwvQT4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNTVfOSI+V2luZG93PC9BPiA6PSAwOwogCi0gICA8Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIFRoZSBuZXh0IGNvbnN0YW50cyBhcmUgZ2VuZXJhdGVkIGFuZCBtYXkgYmUgZGlmZmVyZW50IG9uIHlvdXI8L0VNPjwvRk9OVD4KLSAgIDxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgYXJjaGl0ZWN0dXJlLjwvRU0+PC9GT05UPgotICAgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MjNfNCI+U2l6ZW9mX2Jvb2w8L0E+PC9GT05UPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gTmF0dXJhbCA6PSAgMTsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBib29sPC9FTT48L0ZPTlQ+Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MjRfNCI+T2Zmc2V0X1hZPC9BPjwvRk9OVD4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gTmF0dXJhbCA6PSAgMTsgPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBpbnQ8L0VNPjwvRk9OVD4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFRoZSBuZXh0IGNvbnN0YW50cyBhcmUgZ2VuZXJhdGVkIGFuZCBtYXkgYmUgZGlmZmVyZW50IG9uIHlvdXI8L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIGFyY2hpdGVjdHVyZS48L0VNPjwvc3Bhbj4KKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KIAotICAgPGI+dHlwZTwvYj4gPEZPTlQgQ09MT1I9cmVkPjxBIE5BTUU9InJlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPjwvRk9OVD4gPGI+aXM8L2I+IDxiPm1vZDwvYj4gMiAqKiA8QSBIUkVGPSJpbnRlcmZhY19fYWRzLmh0bSNyZWZfMzhfOSI+SW50ZXJmYWNlczwvQT4uQy5jaGFyJ1NpemU7Ci0gICA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzE5MjdfNCI+Q3Vyc2VzX0Jvb2xfRmFsc2U8L0E+PC9GT05UPiA6IDxiPmNvbnN0YW50PC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX19hZHMuaHRtI3JlZl8xOTI2XzkiPkN1cnNlc19Cb29sPC9BPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIwOTZfNCI+U2l6ZW9mX0Jvb2w8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiA6PSA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0jcmVmXzExXzQiPlNpemVvZl9Cb29sPC9BPjsKIAotPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDlfMjgiPkN1cnNlczwvQT47CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT48L3NwYW4+IDxiPmlzPC9iPiA8Yj5tb2Q8L2I+IDIgKiogPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5Nl80Ij5TaXplb2ZfQm9vbDwvQT47CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTAwXzQiPkN1cnNlc19Cb29sX0ZhbHNlPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfMjA5OF85Ij5DdXJzZXNfQm9vbDwvQT4gOj0gMDsKKworPGI+ZW5kPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPEEgSFJFRj0idGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19fYWRzLmh0bSNyZWZfNDdfMjgiPkN1cnNlczwvQT47CiA8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtIGIvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzX19hZHMuaHRtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NDFjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlLWN1cnNlc19jb25zdGFudHNfX2Fkcy5odG0KQEAgLTAsMCArMSw0MDEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPnRlcm1pbmFsX2ludGVyZmFjZS1jdXJzZXNfY29uc3RhbnRzLmFkczwvVElUTEU+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisqLmNvbW1lbnQgeworCWNvbG9yOiBncmVlbjsKK30KKyouc3ltYm9sIHsKKwljb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvSEVBRD4KKzxCT0RZPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50cy5hZHMgPC9IMT48L0RJVj48SFI+Cis8UFJFPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgR2VuZXJhdGVkIGJ5IHRoZSBDIHByb2dyYW0gLi9nZW5lcmF0ZSAoc291cmNlIC4vZ2VuLmMpLjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRG8gbm90IGVkaXQgdGhpcyBmaWxlIGRpcmVjdGx5LjwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgVGhlIHZhbHVlcyBwcm92aWRlZCBoZXJlIG1heSB2YXJ5IG9uIHlvdXIgc3lzdGVtLjwvRU0+PC9zcGFuPgorCis8Yj53aXRoPC9iPiBTeXN0ZW07Cis8Yj5wYWNrYWdlPC9iPiA8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4uPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzZfMjgiPkN1cnNlc19Db25zdGFudHM8L0E+PC9zcGFuPiA8Yj5pczwvYj4KKyAgIDxiPnByYWdtYTwvYj4gUHVyZTsKKworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzlfNCI+REZUX0FSR19TVUZGSVg8L0E+PC9zcGFuPiA6IDxiPmNvbnN0YW50PC9iPiBTdHJpbmcgOj0gIiI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTBfNCI+Qml0X09yZGVyPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gU3lzdGVtLkJpdF9PcmRlciA6PSBTeXN0ZW0uTG93X09yZGVyX0ZpcnN0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzExXzQiPlNpemVvZl9Cb29sPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEyXzQiPk9LPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzEzXzQiPkVSUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtMTsKKyAgIDxiPnByYWdtYTwvYj4gV2FybmluZ3MgKE9mZik7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gcmVkZWZpbml0aW9uIG9mIFN0YW5kYXJkLlRydWUgYW5kIEZhbHNlPC9FTT48L3NwYW4+CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTVfNCI+VFJVRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMTZfNCI+RkFMU0U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8Yj5wcmFnbWE8L2I+IFdhcm5pbmdzIChPbik7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIFZlcnNpb24gb2YgdGhlIG5jdXJzZXMgbGlicmFyeSBmcm9tIGV4dGVuc2lvbnMoM05DVVJTRVMpPC9FTT48L3NwYW4+CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMV80Ij5OQ1VSU0VTX1ZFUlNJT05fTUFKT1I8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMl80Ij5OQ1VSU0VTX1ZFUlNJT05fTUlOT1I8L0E+PC9zcGFuPiAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yM180Ij5WZXJzaW9uPC9BPjwvc3Bhbj4gOiA8Yj5jb25zdGFudDwvYj4gU3RyaW5nIDo9ICI2LjAiOworCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBDaGFyYWN0ZXIgbm9uLWNvbG9yIGF0dHJpYnV0ZXMgZnJvbSBhdHRyKDNOQ1VSU0VTKTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBhdHRyX3QgYW5kIGNodHlwZSBtYXkgYmUgc2lnbmVkIGluIEMuPC9FTT48L3NwYW4+CisgICA8Yj50eXBlPC9iPiA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjhfOSI+YXR0cl90PC9BPjwvc3Bhbj4gPGI+aXM8L2I+IDxiPm1vZDwvYj4gMiAqKiAzMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOV80Ij5BX0NIQVJURVhUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMF80Ij5BX0NIQVJURVhUX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMV80Ij5BX0NPTE9SX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMl80Ij5BX0NPTE9SX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzNfNCI+QXR0cl9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0XzQiPkF0dHJfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNV80Ij5BX1NUQU5ET1VUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzZfNCI+QV9TVEFORE9VVF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3XzQiPkFfVU5ERVJMSU5FX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zOF80Ij5BX1VOREVSTElORV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzlfNCI+QV9SRVZFUlNFX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQwXzQiPkFfUkVWRVJTRV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80MV80Ij5BX0JMSU5LX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDJfNCI+QV9CTElOS19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE5OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQzXzQiPkFfRElNX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80NF80Ij5BX0RJTV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDVfNCI+QV9CT0xEX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDIxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ2XzQiPkFfQk9MRF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl80N180Ij5BX1BST1RFQ1RfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNDhfNCI+QV9QUk9URUNUX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQ5XzQiPkFfSU5WSVNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81MF80Ij5BX0lOVklTX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTFfNCI+QV9BTFRDSEFSU0VUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDIyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzUyXzQiPkFfQUxUQ0hBUlNFVF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81M180Ij5BX0hPUklaT05UQUxfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTRfNCI+QV9IT1JJWk9OVEFMX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU1XzQiPkFfTEVGVF9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81Nl80Ij5BX0xFRlRfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNTdfNCI+QV9MT1dfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzU4XzQiPkFfTE9XX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl81OV80Ij5BX1JJR0hUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjBfNCI+QV9SSUdIVF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzYxXzQiPkFfVE9QX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82Ml80Ij5BX1RPUF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjNfNCI+QV9WRVJUSUNBTF9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzY0XzQiPkFfVkVSVElDQUxfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl82NV80Ij5jaHR5cGVfU2l6ZTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzI7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIHByZWRlZmluZWQgY29sb3IgbnVtYmVycyBmcm9tIGNvbG9yKDNOQ1VSU0VTKTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNjlfNCI+Q09MT1JfQkxBQ0s8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzBfNCI+Q09MT1JfUkVEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzFfNCI+Q09MT1JfR1JFRU48L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzJfNCI+Q09MT1JfWUVMTE9XPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzNfNCI+Q09MT1JfQkxVRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzRfNCI+Q09MT1JfTUFHRU5UQTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzVfNCI+Q09MT1JfQ1lBTjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfNzZfNCI+Q09MT1JfV0hJVEU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDc7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEVUSSByZXR1cm4gY29kZXMgZnJvbSBuY3Vyc2VzLmg8L0VNPjwvc3Bhbj4KKworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgwXzQiPkVfT0s8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzgxXzQiPkVfU1lTVEVNX0VSUk9SPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84Ml80Ij5FX0JBRF9BUkdVTUVOVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gLTI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODNfNCI+RV9QT1NURUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IC0zOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg0XzQiPkVfQ09OTkVDVEVEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84NV80Ij5FX0JBRF9TVEFURTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gLTU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODZfNCI+RV9OT19ST09NPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IC02OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzg3XzQiPkVfTk9UX1BPU1RFRDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl84OF80Ij5FX1VOS05PV05fQ09NTUFORDwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gLTg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfODlfNCI+RV9OT19NQVRDSDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IC05OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkwXzQiPkVfTk9UX1NFTEVDVEFCTEU8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtMTA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTFfNCI+RV9OT1RfQ09OTkVDVEVEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IC0xMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl85Ml80Ij5FX1JFUVVFU1RfREVOSUVEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gLTEyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzkzXzQiPkVfSU5WQUxJRF9GSUVMRDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAtMTM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTRfNCI+RV9DVVJSRU5UPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IC0xNDsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW5wdXQga2V5IGNvZGVzIG5vdCBkZWZpbmVkIGluIGFueSBuY3Vyc2VzIG1hbnBhZ2U8L0VNPjwvc3Bhbj4KKworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzk4XzQiPktFWV9NSU48L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyNTc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfOTlfNCI+S0VZX01BWDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDUxMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDBfNCI+S0VZX0NPREVfWUVTPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI1NjsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgSW5wdXQga2V5IGNvZGVzIGZyb20gZ2V0Y2goM05DVVJTRVMpPC9FTT48L3NwYW4+CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDRfNCI+S0VZX0JSRUFLPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI1NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDVfNCI+S0VZX0RPV048L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI1ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDZfNCI+S0VZX1VQPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI1OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDdfNCI+S0VZX0xFRlQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDhfNCI+S0VZX1JJR0hUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMDlfNCI+S0VZX0hPTUU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTBfNCI+S0VZX0JBQ0tTUEFDRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTFfNCI+S0VZX0YwPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTJfNCI+S0VZX0YxPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTNfNCI+S0VZX0YyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTRfNCI+S0VZX0YzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTVfNCI+S0VZX0Y0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTZfNCI+S0VZX0Y1PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTdfNCI+S0VZX0Y2PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMThfNCI+S0VZX0Y3PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMTlfNCI+S0VZX0Y4PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjBfNCI+S0VZX0Y5PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjFfNCI+S0VZX0YxMDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjJfNCI+S0VZX0YxMTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjNfNCI+S0VZX0YxMjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjRfNCI+S0VZX0YxMzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjVfNCI+S0VZX0YxNDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjZfNCI+S0VZX0YxNTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI3OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjdfNCI+S0VZX0YxNjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjhfNCI+S0VZX0YxNzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMjlfNCI+S0VZX0YxODwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzBfNCI+S0VZX0YxOTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzFfNCI+S0VZX0YyMDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzJfNCI+S0VZX0YyMTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzNfNCI+S0VZX0YyMjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzRfNCI+S0VZX0YyMzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzVfNCI+S0VZX0YyNDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI4ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzZfNCI+S0VZX0RMPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMyODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzdfNCI+S0VZX0lMPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMyOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzhfNCI+S0VZX0RDPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xMzlfNCI+S0VZX0lDPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDBfNCI+S0VZX0VJQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDFfNCI+S0VZX0NMRUFSPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDJfNCI+S0VZX0VPUzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDNfNCI+S0VZX0VPTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDRfNCI+S0VZX1NGPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDVfNCI+S0VZX1NSPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDZfNCI+S0VZX05QQUdFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDdfNCI+S0VZX1BQQUdFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMzOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDhfNCI+S0VZX1NUQUI8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNDlfNCI+S0VZX0NUQUI8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTBfNCI+S0VZX0NBVEFCPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTFfNCI+S0VZX0VOVEVSPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTJfNCI+S0VZX1NSRVNFVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTNfNCI+S0VZX1JFU0VUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTRfNCI+S0VZX1BSSU5UPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTVfNCI+S0VZX0xMPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTZfNCI+S0VZX0ExPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTdfNCI+S0VZX0EzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM0OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNThfNCI+S0VZX0IyPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNTlfNCI+S0VZX0MxPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjBfNCI+S0VZX0MzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjFfNCI+S0VZX0JUQUI8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjJfNCI+S0VZX0JFRzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjNfNCI+S0VZX0NBTkNFTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjRfNCI+S0VZX0NMT1NFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjVfNCI+S0VZX0NPTU1BTkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjZfNCI+S0VZX0NPUFk8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjdfNCI+S0VZX0NSRUFURTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM1OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjhfNCI+S0VZX0VORDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNjlfNCI+S0VZX0VYSVQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzBfNCI+S0VZX0ZJTkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzFfNCI+S0VZX0hFTFA8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzJfNCI+S0VZX01BUks8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzNfNCI+S0VZX01FU1NBR0U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzRfNCI+S0VZX01PVkU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzVfNCI+S0VZX05FWFQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzZfNCI+S0VZX09QRU48L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzdfNCI+S0VZX09QVElPTlM8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM2OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzhfNCI+S0VZX1BSRVZJT1VTPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xNzlfNCI+S0VZX1JFRE88L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODBfNCI+S0VZX1JFRkVSRU5DRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODFfNCI+S0VZX1JFRlJFU0g8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODJfNCI+S0VZX1JFUExBQ0U8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODNfNCI+S0VZX1JFU1RBUlQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODRfNCI+S0VZX1JFU1VNRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODVfNCI+S0VZX1NBVkU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODZfNCI+S0VZX1NCRUc8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODdfNCI+S0VZX1NDQU5DRUw8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM3OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODhfNCI+S0VZX1NDT01NQU5EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xODlfNCI+S0VZX1NDT1BZPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTBfNCI+S0VZX1NDUkVBVEU8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTFfNCI+S0VZX1NEQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTJfNCI+S0VZX1NETDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTNfNCI+S0VZX1NFTEVDVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTRfNCI+S0VZX1NFTkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTVfNCI+S0VZX1NFT0w8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTZfNCI+S0VZX1NFWElUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTdfNCI+S0VZX1NGSU5EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM4OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOThfNCI+S0VZX1NIRUxQPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5MDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8xOTlfNCI+S0VZX1NIT01FPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5MTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDBfNCI+S0VZX1NJQzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5MjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDFfNCI+S0VZX1NMRUZUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDJfNCI+S0VZX1NNRVNTQUdFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDNfNCI+S0VZX1NNT1ZFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5NTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDRfNCI+S0VZX1NORVhUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDVfNCI+S0VZX1NPUFRJT05TPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5NzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDZfNCI+S0VZX1NQUkVWSU9VUzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDdfNCI+S0VZX1NQUklOVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM5OTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDhfNCI+S0VZX1NSRURPPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMDlfNCI+S0VZX1NSRVBMQUNFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTBfNCI+S0VZX1NSSUdIVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTFfNCI+S0VZX1NSU1VNRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTJfNCI+S0VZX1NTQVZFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTNfNCI+S0VZX1NTVVNQRU5EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTRfNCI+S0VZX1NVTkRPPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwNjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTVfNCI+S0VZX1NVU1BFTkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTZfNCI+S0VZX1VORE88L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMTdfNCI+S0VZX01PVVNFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwOTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMThfNCI+S0VZX1JFU0laRTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQxMDsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgYWx0ZXJuYXRlIGNoYXJhY3RlciBjb2RlcyAoQUNTKSBmcm9tIGFkZGNoKDNOQ1VSU0VTKTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIyXzQiPkFDU19VTENPUk5FUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjIzXzQiPkFDU19MTENPUk5FUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI0XzQiPkFDU19VUkNPUk5FUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI1XzQiPkFDU19MUkNPUk5FUjwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI2XzQiPkFDU19MVEVFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI3XzQiPkFDU19SVEVFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI4XzQiPkFDU19CVEVFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjI5XzQiPkFDU19UVEVFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMwXzQiPkFDU19ITElORTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMxXzQiPkFDU19WTElORTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMjA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMyXzQiPkFDU19QTFVTPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjMzXzQiPkFDU19TMTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM0XzQiPkFDU19TOTwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMTU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjM1XzQiPkFDU19ESUFNT05EPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA5NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yMzZfNCI+QUNTX0NLQk9BUkQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDk3OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzN180Ij5BQ1NfREVHUkVFPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTAyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzOF80Ij5BQ1NfUExNSU5VUzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTAzOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzIzOV80Ij5BQ1NfQlVMTEVUPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTI2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0MF80Ij5BQ1NfTEFSUk9XPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQxXzQiPkFDU19SQVJST1c8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA0MzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDJfNCI+QUNTX0RBUlJPVzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQ2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI0M180Ij5BQ1NfVUFSUk9XPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNDU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ0XzQiPkFDU19CT0FSRDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ1XzQiPkFDU19MQU5URVJOPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjQ2XzQiPkFDU19CTE9DSzwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA0ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDdfNCI+QUNTX1MzPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDExMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDhfNCI+QUNTX1M3PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDExNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNDlfNCI+QUNTX0xFUVVBTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTBfNCI+QUNTX0dFUVVBTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTFfNCI+QUNTX1BJPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTJfNCI+QUNTX05FUVVBTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNTNfNCI+QUNTX1NURVJMSU5HPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyNTsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgTWVudV9PcHRpb25zIGZyb20gb3B0cygzTUVOVSk8L0VNPjwvc3Bhbj4KKworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI1N180Ij5PX09ORVZBTFVFX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNThfNCI+T19PTkVWQUxVRV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjU5XzQiPk9fU0hPV0RFU0NfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2MF80Ij5PX1NIT1dERVNDX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjFfNCI+T19ST1dNQUpPUl9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjYyXzQiPk9fUk9XTUFKT1JfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2M180Ij5PX0lHTk9SRUNBU0VfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjRfNCI+T19JR05PUkVDQVNFX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY1XzQiPk9fU0hPV01BVENIX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2Nl80Ij5PX1NIT1dNQVRDSF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNjdfNCI+T19OT05DWUNMSUNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDU7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjY4XzQiPk9fTk9OQ1lDTElDX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI2OV80Ij5NZW51X09wdGlvbnNfU2l6ZTwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzI7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEl0ZW1fT3B0aW9ucyBmcm9tIG1lbnVfb3B0cygzTUVOVSk8L0VNPjwvc3Bhbj4KKworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI3M180Ij5PX1NFTEVDVEFCTEVfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzRfNCI+T19TRUxFQ1RBQkxFX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjc1XzQiPkl0ZW1fT3B0aW9uc19TaXplPC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzMjsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgRmllbGRfT3B0aW9ucyBmcm9tIGZpZWxkX29wdHMoM0ZPUk0pPC9FTT48L3NwYW4+CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yNzlfNCI+T19WSVNJQkxFX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjgwXzQiPk9fVklTSUJMRV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4MV80Ij5PX0FDVElWRV9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODJfNCI+T19BQ1RJVkVfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjgzXzQiPk9fUFVCTElDX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4NF80Ij5PX1BVQkxJQ19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODVfNCI+T19FRElUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjg2XzQiPk9fRURJVF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI4N180Ij5PX1dSQVBfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yODhfNCI+T19XUkFQX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjg5XzQiPk9fQkxBTktfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5MF80Ij5PX0JMQU5LX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTFfNCI+T19BVVRPU0tJUF9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjkyXzQiPk9fQVVUT1NLSVBfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5M180Ij5PX05VTExPS19GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTRfNCI+T19OVUxMT0tfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk1XzQiPk9fUEFTU09LX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5Nl80Ij5PX1BBU1NPS19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8yOTdfNCI+T19TVEFUSUNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMjk4XzQiPk9fU1RBVElDX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA5OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzI5OV80Ij5GaWVsZF9PcHRpb25zX1NpemU8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzI7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEZpZWxkX09wdGlvbnMgZnJvbSBvcHRzKDNGT1JNKTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzAzXzQiPk9fTkxfT1ZFUkxPQURfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMwNF80Ij5PX05MX09WRVJMT0FEX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMDVfNCI+T19CU19PVkVSTE9BRF9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzA2XzQiPk9fQlNfT1ZFUkxPQURfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxOworCisgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBNRVZFTlQgc3RydWN0dXJlIGZyb20gbW91c2UoM05DVVJTRVMpPC9FTT48L3NwYW4+CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTBfNCI+TUVWRU5UX2lkX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzExXzQiPk1FVkVOVF9pZF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTJfNCI+TUVWRU5UX3hfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxM180Ij5NRVZFTlRfeF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNjM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE0XzQiPk1FVkVOVF95X0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA2NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMTVfNCI+TUVWRU5UX3lfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDk1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMxNl80Ij5NRVZFTlRfel9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gOTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE3XzQiPk1FVkVOVF96X0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMjc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE4XzQiPk1FVkVOVF9ic3RhdGVfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMjg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzE5XzQiPk1FVkVOVF9ic3RhdGVfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxNTk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzIwXzQiPk1FVkVOVF9TaXplPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxNjA7CisKKyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIG1vdXNlIGV2ZW50cyBmcm9tIG1vdXNlKDNOQ1VSU0VTKTwvRU0+PC9zcGFuPgorCisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzI0XzQiPkJVVFRPTjFfUkVMRUFTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyNV80Ij5CVVRUT04xX1BSRVNTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMjZfNCI+QlVUVE9OMV9DTElDS0VEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzI3XzQiPkJVVFRPTjFfRE9VQkxFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMyOF80Ij5CVVRUT04xX1RSSVBMRV9DTElDS0VEPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzI5XzQiPmFsbF9ldmVudHNfYnV0dG9uXzE8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzBfNCI+QlVUVE9OMl9SRUxFQVNFRDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzMV80Ij5CVVRUT04yX1BSRVNTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNjQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzMyXzQiPkJVVFRPTjJfQ0xJQ0tFRDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMjg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzMzXzQiPkJVVFRPTjJfRE9VQkxFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyNTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM0XzQiPkJVVFRPTjJfVFJJUExFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA1MTI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM1XzQiPmFsbF9ldmVudHNfYnV0dG9uXzI8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA5OTI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM2XzQiPkJVVFRPTjNfUkVMRUFTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDI0OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzMzN180Ij5CVVRUT04zX1BSRVNTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjA0ODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zMzhfNCI+QlVUVE9OM19DTElDS0VEPC9BPjwvc3Bhbj4gICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQwOTY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzM5XzQiPkJVVFRPTjNfRE9VQkxFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA4MTkyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0MF80Ij5CVVRUT04zX1RSSVBMRV9DTElDS0VEPC9BPjwvc3Bhbj4gICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTYzODQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQxXzQiPmFsbF9ldmVudHNfYnV0dG9uXzM8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzMTc0NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNDJfNCI+QlVUVE9ONF9SRUxFQVNFRDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDMyNzY4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0M180Ij5CVVRUT040X1BSRVNTRUQ8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNjU1MzY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ0XzQiPkJVVFRPTjRfQ0xJQ0tFRDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMzEwNzI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ1XzQiPkJVVFRPTjRfRE9VQkxFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyNjIxNDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ2XzQiPkJVVFRPTjRfVFJJUExFX0NMSUNLRUQ8L0E+PC9zcGFuPiAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA1MjQyODg7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ3XzQiPmFsbF9ldmVudHNfYnV0dG9uXzQ8L0E+PC9zcGFuPiAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDE1ODA4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM0OF80Ij5CVVRUT05fQ1RSTDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzM1NTQ0MzI7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzQ5XzQiPkJVVFRPTl9TSElGVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA2NzEwODg2NDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTBfNCI+QlVUVE9OX0FMVDwvQT48L3NwYW4+ICAgICAgICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEzNDIxNzcyODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTFfNCI+UkVQT1JUX01PVVNFX1BPU0lUSU9OPC9BPjwvc3Bhbj4gICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2ODQzNTQ1NjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTJfNCI+QUxMX01PVVNFX0VWRU5UUzwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDI2ODQzNTQ1NTsKKworICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgdHJhY2Ugc2VsZWN0aW9uIGZyb20gdHJhY2UoM05DVVJTRVMpPC9FTT48L3NwYW4+CisKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTZfNCI+VFJBQ0VfVElNRVNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzU3XzQiPlRSQUNFX1RJTUVTX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAwOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM1OF80Ij5UUkFDRV9UUFVUU19GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNTlfNCI+VFJBQ0VfVFBVVFNfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzYwXzQiPlRSQUNFX1VQREFURV9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2MV80Ij5UUkFDRV9VUERBVEVfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjJfNCI+VFJBQ0VfTU9WRV9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDM7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzYzXzQiPlRSQUNFX01PVkVfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAzOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2NF80Ij5UUkFDRV9DSEFSUFVUX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjVfNCI+VFJBQ0VfQ0hBUlBVVF9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDQ7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY2XzQiPlRSQUNFX0NBTExTX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA1OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM2N180Ij5UUkFDRV9DQUxMU19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNTsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNjhfNCI+VFJBQ0VfVklSVFBVVF9GaXJzdDwvQT48L3NwYW4+ICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDY7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzY5XzQiPlRSQUNFX1ZJUlRQVVRfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA2OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3MF80Ij5UUkFDRV9JRVZFTlRfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gNzsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzFfNCI+VFJBQ0VfSUVWRU5UX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDc7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzcyXzQiPlRSQUNFX0JJVFNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA4OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3M180Ij5UUkFDRV9CSVRTX0xhc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gODsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzRfNCI+VFJBQ0VfSUNBTExTX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDk7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc1XzQiPlRSQUNFX0lDQUxMU19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSA5OworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3Nl80Ij5UUkFDRV9DQ0FMTFNfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTA7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzc3XzQiPlRSQUNFX0NDQUxMU19MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMDsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zNzhfNCI+VFJBQ0VfREFUQUJBU0VfRmlyc3Q8L0E+PC9zcGFuPiAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDExOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM3OV80Ij5UUkFDRV9EQVRBQkFTRV9MYXN0PC9BPjwvc3Bhbj4gICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMTE7CisgICA8c3BhbiBjbGFzcz0ic3ltYm9sIj48QSBOQU1FPSJyZWZfMzgwXzQiPlRSQUNFX0FUVFJTX0ZpcnN0PC9BPjwvc3Bhbj4gICAgICAgICAgICA6IDxiPmNvbnN0YW50PC9iPiA6PSAxMjsKKyAgIDxzcGFuIGNsYXNzPSJzeW1ib2wiPjxBIE5BTUU9InJlZl8zODFfNCI+VFJBQ0VfQVRUUlNfTGFzdDwvQT48L3NwYW4+ICAgICAgICAgICAgIDogPGI+Y29uc3RhbnQ8L2I+IDo9IDEyOworICAgPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzM4Ml80Ij5UcmFjZV9TaXplPC9BPjwvc3Bhbj4gICAgICAgICAgICAgICAgICAgOiA8Yj5jb25zdGFudDwvYj4gOj0gMzI7Cis8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPi48QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2UtY3Vyc2VzX2NvbnN0YW50c19fYWRzLmh0bSNyZWZfNl8yOCI+Q3Vyc2VzX0NvbnN0YW50czwvQT47Cis8L1BSRT48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSBiL2RvYy9odG1sL2FkYS90ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0KaW5kZXggNmQ3Y2RmMS4uYjZmNmQ5ZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvYWRhL3Rlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bQorKysgYi9kb2MvaHRtbC9hZGEvdGVybWluYWxfaW50ZXJmYWNlX19hZHMuaHRtCkBAIC0xLDUzICsxLDY1IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPjxIRUFEPjxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UuYWRzPC9USVRMRT48L0hFQUQ+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT50ZXJtaW5hbF9pbnRlcmZhY2UuYWRzPC9USVRMRT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyouY29tbWVudCB7CisJY29sb3I6IGdyZWVuOworfQorKi5zeW1ib2wgeworCWNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9IRUFEPgogPEJPRFk+Ci08SFI+PERJViBBTElHTj0iY2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UuYWRzIDwvSDE+PC9ESVY+PEhSPgorPEhSPjxESVYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48SDE+IEZpbGUgOiB0ZXJtaW5hbF9pbnRlcmZhY2UuYWRzIDwvSDE+PC9ESVY+PEhSPgogPFBSRT4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Imh0dHA6Ly93d3cuZ25hdC5jb20iPkdOQVQ8L0E+IG5jdXJzZXMgQmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVybWluYWxfSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NjwvRU0+PC9GT05UPgotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBSZXZpc2lvbjogMS4xNCBAPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEBEYXRlOiAyMDA2LzA2LzI1IDE0OjMwOjIyIEA8L0VNPjwvRk9OVD4KLTxGT05UIENPTE9SPWdyZWVuPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9FTT48L0ZPTlQ+Ci08Yj5wYWNrYWdlPC9iPiA8Rk9OVCBDT0xPUj1yZWQ+PEEgTkFNRT0icmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT48L0ZPTlQ+IDxiPmlzPC9iPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iaHR0cDovL3d3dy5nbmF0LmNvbSI+R05BVDwvQT4gbmN1cnNlcyBCaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsX0ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIFAgRSBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAtLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgLS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBWZXJzaW9uIENvbnRyb2w6PC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tICBAUmV2aXNpb246IDEuMTQgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQERhdGU6IDIwMDYvMDYvMjUgMTQ6MzA6MjIgQDwvRU0+PC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjxFTT4tLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvRU0+PC9zcGFuPgorPGI+cGFja2FnZTwvYj4gPHNwYW4gY2xhc3M9InN5bWJvbCI+PEEgTkFNRT0icmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT48L3NwYW4+IDxiPmlzPC9iPgogICAgPGI+cHJhZ21hPC9iPiBQdXJlICg8QSBIUkVGPSJ0ZXJtaW5hbF9pbnRlcmZhY2VfX2Fkcy5odG0jcmVmXzQyXzkiPlRlcm1pbmFsX0ludGVyZmFjZTwvQT4pOwotPEZPTlQgQ09MT1I9Z3JlZW4+PEVNPi0tPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS0gIEV2ZXJ5dGhpbmcgaXMgaW4gdGhlIGNoaWxkIHVuaXRzPC9FTT48L0ZPTlQ+Ci08Rk9OVCBDT0xPUj1ncmVlbj48RU0+LS08L0VNPjwvRk9OVD4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS08L0VNPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjb21tZW50Ij48RU0+LS0gIEV2ZXJ5dGhpbmcgaXMgaW4gdGhlIGNoaWxkIHVuaXRzPC9FTT48L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+PEVNPi0tPC9FTT48L3NwYW4+CiA8Yj5lbmQ8L2I+IDxBIEhSRUY9InRlcm1pbmFsX2ludGVyZmFjZV9fYWRzLmh0bSNyZWZfNDJfOSI+VGVybWluYWxfSW50ZXJmYWNlPC9BPjsKIDwvUFJFPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hbm5vdW5jZS5odG1sIGIvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbAppbmRleCAyMzRjNzAzLi42OTQ4NDhhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9hbm5vdW5jZS5odG1sCisrKyBiL2RvYy9odG1sL2Fubm91bmNlLmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDMuMC8vRU4iPgogPCEtLQotICAkSWQ6IGFubm91bmNlLmh0bWwsdiAxLjUyIDIwMDgvMTEvMDIgMDE6MDU6MDggdG9tIEV4cCAkCisgIEBJZDogYW5ub3VuY2UuaHRtbC5pbix2IDEuOTAgMjAxNS8wOC8wOCAxODozOTo1OCB0b20gRXhwIEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI5LDU2MCArMjgsMjM5NCBAQAogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC0tPgotPEhUTUw+Ci08SEVBRD4KLTxUSVRMRT5Bbm5vdW5jaW5nIG5jdXJzZXMgNS43PC9USVRMRT4KLTxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPC9IRUFEPgotPEJPRFk+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKworPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PQorICAiSFRNTCBUaWR5IGZvciBMaW51eCAodmVycyAyNSBNYXJjaCAyMDA5KSwgc2VlIHd3dy53My5vcmciPgorCisgIDx0aXRsZT5Bbm5vdW5jaW5nIG5jdXJzZXMgNi4wPC90aXRsZT4KKyAgPGxpbmsgcmV2PSJtYWRlIiBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0KKyAgInRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwLGxpIHsgbWF4LXdpZHRoOjcwMHB4OyB9CisgIGRkIHsgbWF4LXdpZHRoOjYzMHB4OyB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8aDEgY2xhc3M9Im5vLWhlYWRlciI+QW5ub3VuY2luZyBuY3Vyc2VzIDYuMDwvaDE+CisKKyAgPGgyPjxhIG5hbWU9ImgyLW92ZXJ2aWV3IiBpZD0iaDItb3ZlcnZpZXciPk92ZXJ2aWV3PC9hPjwvaDI+CisKKyAgPHA+VGhlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IChuZXcgY3Vyc2VzKSBsaWJyYXJ5CisgIGlzIGEgZnJlZSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgY3Vyc2VzIGluIFN5c3RlbSBWIFJlbGVhc2UgNC4wCisgIChTVnI0KSwgYW5kIG1vcmUuIEl0IHVzZXMgdGVybWluZm8gZm9ybWF0LCBzdXBwb3J0cyBwYWRzIGFuZAorICBjb2xvciBhbmQgbXVsdGlwbGUgaGlnaGxpZ2h0cyBhbmQgZm9ybXMgY2hhcmFjdGVycyBhbmQKKyAgZnVuY3Rpb24ta2V5IG1hcHBpbmcsIGFuZCBoYXMgYWxsIHRoZSBvdGhlciBTVnI0LWN1cnNlcworICBlbmhhbmNlbWVudHMgb3ZlciBCU0QgY3Vyc2VzLiBTVnI0IGN1cnNlcyBpcyBiZXR0ZXIga25vd24gdG9kYXkKKyAgYXMgWC9PcGVuIEN1cnNlcy48L3A+CisKKyAgPHA+SW4gbWlkLUp1bmUgMTk5NSwgdGhlIG1haW50YWluZXIgb2YgNC40QlNEIGN1cnNlcyBkZWNsYXJlZAorICB0aGF0IGhlIGNvbnNpZGVyZWQgNC40QlNEIGN1cnNlcyBvYnNvbGV0ZSwgYW5kIGVuY291cmFnZWQgdGhlCisgIGtlZXBlcnMgb2YgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj51bml4PC9lbT4gcmVsZWFzZXMgc3VjaCBhcworICBCU0QvT1MsIEZyZWVCU0QgYW5kIE5ldEJTRCB0byBzd2l0Y2ggb3ZlciB0byA8ZW0gY2xhc3M9CisgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4uPC9wPgorCisgIDxwPlNpbmNlIDE5OTUsIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGhhcyBiZWVuCisgIHBvcnRlZCB0byBtYW55IHN5c3RlbXM6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+SXQgaXMgdXNlZCBpbiBhbG1vc3QgZXZlcnkgc3lzdGVtIGJhc2VkIG9uIHRoZSBMaW51eCBrZXJuZWwKKyAgICAoYXNpZGUgZnJvbSBzb21lIGVtYmVkZGVkIGFwcGxpY2F0aW9ucykuPC9saT4KKworICAgIDxsaT5JdCBpcyB1c2VkIGFzIHRoZSBzeXN0ZW0gY3Vyc2VzIGxpYnJhcnkgb24gT3BlbkJTRCwgRnJlZUJTRAorICAgIGFuZCBPU1guPC9saT4KKworICAgIDxsaT5JdCBpcyB1c2VkIGluIGVudmlyb25tZW50cyBzdWNoIGFzIEN5Z3dpbiBhbmQgTWluR1cuIFRoZQorICAgIGZpcnN0IG9mIHRoZXNlIHdhcyBFTVggb24gT1MvMiBXYXJwLjwvbGk+CisKKyAgICA8bGk+SXQgaXMgdXNlZCAodGhvdWdoIHVzdWFsbHkgbm90IGFzIHRoZSA8ZW0+c3lzdGVtPC9lbT4KKyAgICBjdXJzZXMpIG9uIGFsbCBvZiB0aGUgdmVuZG9yIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+dW5peDwvZW0+CisgICAgc3lzdGVtcywgZS5nLiwgQUlYLCBIUC1VWCwgSVJJWDY0LCBTQ08sIFNvbGFyaXMsIFRydTY0LjwvbGk+CisKKyAgICA8bGk+SXQgc2hvdWxkIHdvcmsgcmVhZGlseSBvbiBhbnkgQU5TSS9QT1NJWC1jb25mb3JtaW5nCisgICAgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj51bml4PC9lbT4uPC9saT4KKyAgPC91bD4KKworICA8cD5UaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIHRoZSBsaWJyYXJ5IGFuZCBzdXBwb3J0IHV0aWxpdGllcywKKyAgaW5jbHVkaW5nPC9wPgorCisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sIj5jYXB0b2luZm88L2E+LAorICAgIGEgdGVybWNhcCBjb252ZXJzaW9uIHRvb2w8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jbGVhci4xLmh0bWwiPmNsZWFyPC9hPiwKKyAgICB1dGlsaXR5IGZvciBjbGVhcmluZyB0aGUgc2NyZWVuPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wPC9hPiwKKyAgICB0aGUgdGVybWluZm8gZGVjb21waWxlcjwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RhYnMuMS5odG1sIj50YWJzPC9hPiwKKyAgICBzZXQgdGFicyBvbiBhIHRlcm1pbmFsPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdGljLjFtLmh0bWwiPnRpYzwvYT4sCisgICAgdGhlIHRlcm1pbmZvIGNvbXBpbGVyPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdG9lLjFtLmh0bWwiPnRvZTwvYT4sCisgICAgbGlzdCAodGFibGUgb2YpIHRlcm1pbmZvIGVudHJpZXM8L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90cHV0LjEuaHRtbCI+dHB1dDwvYT4sCisgICAgdXRpbGl0eSBmb3IgcmV0cmlldmluZyB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgaW4gc2hlbGwKKyAgICBzY3JpcHRzPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdHNldC4xLmh0bWwiPnRzZXQ8L2E+LAorICAgIHRvIGluaXRpYWxpemUgdGhlIHRlcm1pbmFsPC9saT4KKyAgPC91bD4KKworICA8cD5GdWxsIG1hbnVhbCBwYWdlcyBhcmUgcHJvdmlkZWQgZm9yIHRoZSBsaWJyYXJ5IGFuZCB0b29scy48L3A+CisKKyAgPHA+VGhlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGRpc3RyaWJ1dGlvbiBpcworICBhdmFpbGFibGUgdmlhIGFub255bW91cyBGVFAgYXQgdGhlIEdOVSBkaXN0cmlidXRpb24gc2l0ZTwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8cD48YSBocmVmPQorICAgICJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvbmN1cnNlcy8iPmZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLzwvYT4mbmJzcDsuPC9wPgorICA8L2Jsb2NrcXVvdGU+SXQgaXMgYWxzbyBhdmFpbGFibGUgYXQKKworICA8YmxvY2txdW90ZT4KKyAgICA8cD48YSBocmVmPQorICAgICJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLyI+ZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy88L2E+Jm5ic3A7LjwvcD4KKyAgPC9ibG9ja3F1b3RlPgorCisgIDxoMj48YSBuYW1lPSJoMi1yZWxlYXNlLW5vdGVzIiBpZD0iaDItcmVsZWFzZS1ub3RlcyI+UmVsZWFzZQorICBOb3RlczwvYT48L2gyPgorCisgIDxwPlRoZXNlIG5vdGVzIGFyZSBmb3IgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4KKyAgNi4wLCByZWxlYXNlZCA8c3Ryb25nPkF1Z3VzdCA4LCAyMDE1PC9zdHJvbmc+LjwvcD4KKworICA8cD5UaGlzIHJlbGVhc2UgaXMgZGVzaWduZWQgdG8gYmUgc291cmNlLWNvbXBhdGlibGUgd2l0aAorICA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiA1LjAgdGhyb3VnaCA1Ljk7IHByb3ZpZGluZyBhCisgIG5ldyBhcHBsaWNhdGlvbiBiaW5hcnkgaW50ZXJmYWNlIChBQkkpLiBBbHRob3VnaCB0aGUgc291cmNlIGNhbgorICBzdGlsbCBiZSBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhlIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiA1IEFCSSwgdGhlIGludGVudCBvZiB0aGUgcmVsZWFzZSBpcyB0bworICBwcm92aWRlIGV4dGVuc2lvbnMgd2hpY2ggYXJlIGdlbmVyYWxseSB1c2VmdWwsIGJ1dAorICBiaW5hcnktaW5jb21wYXRpYmxlIHdpdGggPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4KKyAgNTo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPkV4dGVuZCB0aGUgPGNvZGU+Y2NoYXJfdDwvY29kZT4gc3RydWN0dXJlIHRvIGFsbG93IG1vcmUKKyAgICAgIHRoYW4gMTYgY29sb3JzIHRvIGJlIGVuY29kZWQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5Nb2RpZnkgdGhlIGVuY29kaW5nIG9mIG1vdXNlIHN0YXRlIHRvIG1ha2Ugcm9vbSBmb3IgYSA1dGgKKyAgICAgIG1vdXNlIGJ1dHRvbi4gVGhhdCBhbGxvd3Mgb25lIHRvIHVzZSA8ZW0gY2xhc3M9CisgICAgICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IHdpdGggYSB3aGVlbCBtb3VzZSB3aXRoIHh0ZXJtIG9yCisgICAgICBzaW1pbGFyIFggdGVybWluYWwgZW11bGF0b3JzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXJlIGFyZSwgb2YgY291cnNlLCBudW1lcm91cyBvdGhlciBpbXByb3ZlbWVudHMsCisgIGluY2x1ZGluZzwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+Zml4ZXMgbWFkZSBiYXNlZCBvbiB0aGUgQ2xhbmcgYW5kIENvdmVyaXR5IHN0YXRpYworICAgICAgYW5hbHl6ZXJzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bWVtb3J5IGxlYWsgZml4ZXMgdXNpbmcgVmFsZ3JpbmQ8L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGUgcmVsZWFzZSBub3RlcyBtZW50aW9uIHNvbWUgYnVnLWZpeGVzLCBidXQgYXJlIGZvY3VzZWQgb24KKyAgbmV3IGZlYXR1cmVzIGFuZCBpbXByb3ZlbWVudHMgdG8gZXhpc3RpbmcgZmVhdHVyZXMgbG9nIHNpbmNlCisgIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IDUuOSByZWxlYXNlLjwvcD4KKworICA8cD5XaGlsZSB0aGUgaW50ZW50IG9mIHRoZSByZWxlYXNlIGlzIHRvIHByb3ZpZGUgYSBuZXcgc3RhYmxlCisgIEFCSSwgdGhlcmUgYXJlIG90aGVyIGRldmVsb3BtZW50IGFjdGl2aXRpZXMgd2hpY2ggYXJlIHN1bW1hcml6ZWQKKyAgYmVsb3cuPC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5UaGUgb3JpZ2luYWwgcmVsZWFzZSBwbGFuLCBlLmcuLCBmb3IgIjUuMTAiIHdhcyB0byBpbXByb3ZlCisgICAgICB0aGUgTWluR1cgcG9ydC4gVWx0aW1hdGVseSB0aGF0IHdhcyBjb21wbGV0ZWQgKHdpZGUtY2hhcmFjdGVyCisgICAgICBzdXBwb3J0LCBtb3VzZSwgZXRjKSwgYnV0IHdhcyBkZWZlcnJlZCB0byBmb2N1cyBvbiB0ZXJtY2FwCisgICAgICBzdXBwb3J0IGFuZCBwZXJmb3JtYW5jZSBpc3N1ZXMuIEFsc28sIHBpbnBvaW50aW5nIHRoZQorICAgICAgcHJvYmxlbXMgd2l0aCA8Y29kZT5Db25zb2xlMjwvY29kZT4gdG9vayBhIHdoaWxlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+QSByZXZpZXcgb2YgdGVybWNhcCBjb21wYXRpYmlsaXR5IGluIDIwMTEgbGVkIHRvIHNldmVyYWwKKyAgICAgIG1pbm9yIGZpeGVzIGluIHRoZSBsaWJyYXJ5IGFuZCBpbXByb3ZlbWVudHMgdG8gdXRpbGl0aWVzLiBUbworICAgICAgZG8gdGhpcyBwcm9wZXJseSwgYSByZXZpZXcgb2YgdGhlIHZhcmlvdXMgZXh0ZW50IHRlcm1jYXAKKyAgICAgIGltcGxlbWVudGF0aW9ucyB3YXMgbmVlZGVkLjwvcD4KKworICAgICAgPHA+VGhlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwiPnRlcm1jYXAKKyAgICAgIGxpYnJhcnkgY2hlY2tlciAodGN0ZXN0KTwvYT4gKG5vdCBwYXJ0IG9mIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4pIHdhcyBvbmUgcmVzdWx0LiBBIGZvbGxvd3VwIHJldmlldworICAgICAgb2YgcGVyZm9ybWFuY2UgdXNpbmcgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWV4YW1wbGVzLmh0bWwiPm5jdXJzZXMtZXhhbXBsZXM8L2E+CisgICAgICBpbiAyMDE0IGxlZCB0byBhZGRpdGlvbmFsIGltcHJvdmVtZW50cy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPk91dHB1dCBidWZmZXJpbmcgcHJvdmlkZWQgYSBmdXJ0aGVyLCBidXQgd29ydGh3aGlsZQorICAgICAgZGlzdHJhY3Rpb24uIEEgYnVnIHJlcG9ydCBpbiAyMDEyIHJlZ2FyZGluZyB0aGUgdXNlIG9mIHNpZ25hbAorICAgICAgaGFuZGxlcnMgaW4gPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4pIHBvaW50ZWQgb3V0CisgICAgICA8YSBocmVmPQorICAgICAgImh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctbmN1cnNlcy8yMDEyLTA3L21zZzAwMDI5Lmh0bWwiPgorICAgICAgYSBwcm9ibGVtPC9hPiB3aXRoIHRoZSB1c2Ugb2YgdW5zYWZlIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcKKyAgICAgIDxjb2RlPlNJR1RTVFA8L2NvZGU+LiBPdGhlciBzaWduYWxzIGNvdWxkIGJlIGFkZHJlc3NlZCB3aXRoCisgICAgICB3b3JrYXJvdW5kczsgcmVwYWlyaW5nIDxjb2RlPlNJR1RTVFA8L2NvZGU+IHJlcXVpcmVkIGEKKyAgICAgIGRpZmZlcmVudCBhcHByb2FjaC4gVGhlIHNvbHV0aW9uIHJlcXVpcmVkIGNoYW5naW5nIGludGVybmFsCisgICAgICBiZWhhdmlvciBvZiB0aGUgbGlicmFyeTogaG93IGl0IGhhbmRsZXMgb3V0cHV0IGJ1ZmZlcmluZy48L3A+CisKKyAgICAgIDxwPk5vdyA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBidWZmZXJzIGl0cyBvd24KKyAgICAgIG91dHB1dCwgaW5kZXBlbmRlbnRseSBvZiB0aGUgc3RhbmRhcmQgb3V0cHV0LiBBIGZldworICAgICAgYXBwbGljYXRpb25zIHJlbGllZCB1cG9uIHRoZSBsaWJyYXJ5J3MgZGlyZWN0IHJldXNlIG9mIHRoZQorICAgICAgc3RhbmRhcmQgb3V0cHV0IGJ1ZmZlcmluZzsgaG93ZXZlciB0aGF0IGlzCisgICAgICA8ZW0+dW5zcGVjaWZpZWQ8L2VtPiBiZWhhdmlvciBhbmQgaGFzIG5ldmVyIGJlZW4gYQorICAgICAgcmVjb21tZW5kZWQgcHJhY3RpY2UuIElkZW50aWZ5aW5nIHRoZXNlIGFwcGxpY2F0aW9ucyBhcyB3ZWxsCisgICAgICBhcyByZWZpbmluZyB0aGUgY2hhbmdlIHRvIHBlcm1pdCBsb3ctbGV2ZWwgYXBwbGljYXRpb25zIHRvCisgICAgICB3b3JrIGNvbnNpc3RlbnRseSB0b29rIHRpbWUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5TaW5jZSB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgMjU2CisgICAgICBjb2xvcnMgZWFybHkgaW4gPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDIwMDUwMTAxIj4yMDA1PC9hPgorICAgICAgKHJlbGVhc2VkIGluIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS41Lmh0bWwiPm5jdXJzZXMKKyAgICAgIDUuNTwvYT4pLCB0aGVyZSBoYXMgYmVlbiBpbmNyZWFzZWQgdXNlciBpbnRlcmVzdC4gQWxtb3N0IGFsbAorICAgICAgcGFja2FnZXJzIGNvbnRpbnVlIHByb3ZpZGluZyB0aGUgbmN1cnNlcyBBQkkgNSB3aGljaCBjYW5ub3QKKyAgICAgIHN1cHBvcnQgMjU2IGNvbG9ycy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlN5bWJvbCB2ZXJzaW9uaW5nLCBvciB0aGUgbGFjayBvZiBpdCBpbiBuY3Vyc2VzLCBpcyB0aGUKKyAgICAgIG1haW4gcmVhc29uIHdoeSBwYWNrYWdlcnMgd291bGQgYmUgcmVsdWN0YW50IHRvIGFkZCBhIG5ldworICAgICAgbmN1cnNlcyBBQkkuPC9wPgorCisgICAgICA8cD5UaGlzIHJlbGVhc2UgcHJvdmlkZXMgdGhlIG5ldyBBQkkgYWxvbmcgd2l0aAorICAgICAgc2NyaXB0LWdlbmVyYXRlZCBsaXN0cyBvZiB2ZXJzaW9uZWQgc3ltYm9scyB3aGljaCBjYW4gYmUgdXNlZAorICAgICAgZm9yIGJvdGggQUJJIDUgYW5kIDYgKHdpdGggZGlzdGluY3QgbmFtZXMgdG8ga2VlcCB0aGUgdHdvCisgICAgICBzZXBhcmF0ZSkuIFRoaXMgdG9vayB0aW1lIHRvIGRldmVsb3BtZW50LCBhcyByZXBvcnRlZCBpbgorICAgICAgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLW1hcHN5bXMuaHRtbCI+U3ltYm9sCisgICAgICB2ZXJzaW9uaW5nIGluIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPi48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDM+PGEgbmFtZT0iaDMtbGlicmFyeSIgaWQ9ImgzLWxpYnJhcnkiPkxpYnJhcnkKKyAgaW1wcm92ZW1lbnRzPC9hPjwvaDM+CisKKyAgPGgzPjxhIG5hbWU9ImgzLWxpYi1zZXRidWYiIGlkPSJoMy1saWItc2V0YnVmIj5PdXRwdXQKKyAgYnVmZmVyaW5nPC9hPjwvaDM+CisKKyAgPHA+WC9PcGVuIGN1cnNlcyBwcm92aWRlcyBtb3JlIHRoYW4gb25lIGluaXRpYWxpemF0aW9uCisgIGZ1bmN0aW9uOjwvcD4KKworICA8dWw+CisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCNoMy1pbml0c2NyIj4KKyAgICBpbml0c2NyPC9hPiAodGhlIHNpbXBsZXN0KSBhY2NlcHRzIG5vIHBhcmFtZXRlcnMuPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtbmV3dGVybSI+CisgICAgbmV3dGVybTwvYT4gYWNjZXB0cyBwYXJhbWV0ZXJzIGZvciB0aGUgc3RyZWFtIGlucHV0IGFuZAorICAgIG91dHB1dDwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdGVybWluZm8uM3guaHRtbCNoMy1Jbml0aWFsaXphdGlvbiI+CisgICAgc2V0dXB0ZXJtPC9hPiAodGhlIGxvdy1sZXZlbCBmdW5jdGlvbikgYWNjZXB0cyBhIHBhcmFtZXRlciBmb3IKKyAgICB0aGUgPGVtPmZpbGUgZGVzY3JpcHRvcjwvZW0+IG9mIHRoZSBvdXRwdXQuPC9saT4KKyAgPC91bD4KKworICA8cD5UaGV5IGFyZSBkb2N1bWVudGVkIGluIFgvT3BlbiA8ZW0+YXMgaWY8L2VtPgorICA8Y29kZT5pbml0c2NyPC9jb2RlPiBjYWxscyA8Y29kZT5uZXd0ZXJtPC9jb2RlPiB1c2luZworICA8Y29kZT5zdGRvdXQ8L2NvZGU+IGZvciBvdXRwdXQgc3RyZWFtLCBhbmQgaW4gdHVybgorICA8Y29kZT5uZXd0ZXJtPC9jb2RlPiBjYWxscyA8Y29kZT5zZXR1cHRlcm08L2NvZGU+IHVzaW5nCisgIDxjb2RlPmZpbGVubyhzdGRvdXQpPC9jb2RlPiBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvci4gQXMgbG9uZyBhcworICBhbiBpbXBsZW1lbnRhdGlvbiBhY3RzIDxlbT5hcyBpZjwvZW0+IGl0IGRvZXMgdGhpcywgaXQgY29uZm9ybXMuCisgIEluIHByYWN0aWNlLCBpbXBsZW1lbnRhdGlvbnMgZG8gd2hhdCBpcyBpbXBsaWVkLiBUaGlzIGNyZWF0ZXMgYQorICBwcm9ibGVtOiB0aGUgbG93LWxldmVsIDxjb2RlPnNldHVwdGVybTwvY29kZT4gZnVuY3Rpb24ncyBmaWxlCisgIGRlc2NyaXB0b3IgaXMgdW5idWZmZXJlZCwgd2hpbGUgPGNvZGU+bmV3dGVybTwvY29kZT4gaW1wbGllcworICBidWZmZXJlZCBvdXRwdXQuIFgvT3BlbiBDdXJzZXMgc2F5cyB0aGF0IGFsbCBvdXRwdXQgaXMgZG9uZQorICB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGFuZCBkb2VzIG5vdCBzYXkgaG93IHRoZSBvdXRwdXQKKyAgc3RyZWFtIGlzIGFjdHVhbGx5IHVzZWQuPC9wPgorCisgIDxwPkluaXRpYWxseSwgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gdXNlZCB0aGUgZmlsZQorICBkZXNjcmlwdG9yIChvYnRhaW5lZCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtIHBhc3NlZCB0bworICA8Y29kZT5uZXd0ZXJtPC9jb2RlPikgZm9yIGNoYW5naW5nIHRoZSB0ZXJtaW5hbCBtb2RlcywgYW5kIHJlbGllZAorICB1cG9uIHRoZSBvdXRwdXQgcGFyYW1ldGVyIG9mIDxjb2RlPm5ld3Rlcm08L2NvZGU+IGZvciBidWZmZXJlZAorICBvdXRwdXQuIExhdGVyICh0byBhdm9pZCB1c2luZyB1bnNhZmUgYnVmZmVyZWQgSS9PIGluIHNpZ25hbAorICBoYW5kbGVycyksIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IHdhcyBtb2RpZmllZCB0bworICB1c2UgdGhlIGZpbGUgZGVzY3JpcHRvciAodW5idWZmZXJlZCBvdXRwdXQpIHdoZW4gY2xlYW5pbmcgdXAgb24KKyAgcmVjZWlwdCBvZiBhIHNpZ25hbC4gT3RoZXJ3aXNlICh3aGVuIG5vdCBoYW5kbGluZyBhIHNpZ25hbCksIGl0CisgIGNvbnRpbnVlZCB0byB1c2UgdGhlIGJ1ZmZlcmVkIG91dHB1dC48L3A+CisKKyAgPHA+VGhhdCBhcHByb2FjaCB3b3JrZWQgcmVhc29uYWJseSB3ZWxsIGFuZCBhcyBhIHNpZGUgZWZmZWN0LAorICB1c2luZyB0aGUgc2FtZSBidWZmZXJlZCBvdXRwdXQgYXMgYW4gYXBwbGljYXRpb24gbWlnaHQgdXNlIGZvcgorICA8Y29kZT5wcmludGY8L2NvZGU+IG1lYW50IHRoYXQgbm8gZmx1c2hpbmcgd2FzIG5lZWRlZCB3aGVuCisgIHN3aXRjaGluZyBiZXR3ZWVuIG5vcm1hbC0gYW5kIHNjcmVlbi1tb2Rlcy48L3A+CisKKyAgPHA+VGhlcmUgd2VyZSBhIGNvdXBsZSBvZiBwcm9ibGVtczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPnRvIGdldCBnb29kIHBlcmZvcm1hbmNlLCBjdXJzZXMgKG5vdCBvbmx5IDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4sIGJ1dCBTVnI0IGN1cnNlcyBpbiBnZW5lcmFsKSBzZXQgYW4KKyAgICAgIG91dHB1dCBidWZmZXIgdXNpbmcgPGNvZGU+c2V0YnVmPC9jb2RlPiBvciBzaW1pbGFyIGZ1bmN0aW9uLgorICAgICAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgKG9yIHBvcnRhYmxlKSB3YXkgdG8gdHVybiB0aGF0IG91dHB1dAorICAgICAgYnVmZmVyIG9mZiwgYW5kIHJldmVydCB0byBsaW5lLWJ1ZmZlcmluZy4gVGhlIDxjb2RlPjxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL25jdXJzZXMuM3guaHRtbCNoMy1OQ1VSU0VTX05PX1NFVEJVRiI+CisgICAgICBOQ1VSU0VTX05PX1NFVEJVRjwvYT48L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlIGRpZCBtYWtlIGl0CisgICAgICBvcHRpb25hbC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRvIGhhbmRsZSA8Y29kZT5TSUdUU1RQPC9jb2RlPiAodGhlICZsZHF1bztzdG9wJnJkcXVvOworICAgICAgc2lnbmFsKSwgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gcmVsaWVkIHVwb24KKyAgICAgIHVuc2FmZSBmdW5jdGlvbnMuIFRoYXQgaXMsIGR1ZSB0byB0aGUgY29tcGxleGl0eSBvZiB0aGUKKyAgICAgIGZlYXR1cmUsIGl0IHJlbGllZCB1cG9uIHJldXNpbmcgZXhpc3RpbmcgZnVuY3Rpb25zIHdoaWNoCisgICAgICBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgdmlhIHRoZSBzaWduYWwgaGFuZGxlci48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5Db252ZW5pZW50bHksIHNvbHZpbmcgdGhlIHNlY29uZCBwcm9ibGVtIChieSBtYWtpbmcgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGRvIGl0cyA8ZW0+b3duPC9lbT4gb3V0cHV0IGJ1ZmZlcmluZykKKyAgYWxzbyBmaXhlZCB0aGUgZmlyc3Qgb25lLiBCdXQgdGhlcmUgd2VyZSBzcGVjaWFsIGNhc2VzIHRvCisgIHJlc29sdmU6IDxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sIj48ZW0+CisgIGxvdy1sZXZlbDwvZW0+PC9hPiBmdW5jdGlvbnMgc3VjaCBhcyBtdmN1ciwgcHV0cCwgdmlkYXR0cgorICBleHBsaWNpdGx5IHVzZSB0aGUgc3RhbmRhcmQgb3V0cHV0LiBUaG9zZSBmdW5jdGlvbnMgd2VyZSByZXVzZWQKKyAgaW50ZXJuYWxseSwgYW5kIHJlcXVpcmVkIG1vZGlmaWNhdGlvbiB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHRoZXkKKyAgd2VyZSB1c2VkIGJ5IHRoZSBoaWdoLWxldmVsIG9yIGxvdy1sZXZlbCBpbnRlcmZhY2VzLjwvcD4KKworICA8cD5GaW5hbGx5LCB0aGVyZSBtYXkgc3RpbGwgYmUgYSBmZXcgcHJvZ3JhbXMgd2hpY2ggc2hvdWxkIGJlCisgIG1vZGlmaWVkIHRvIGltcHJvdmUgdGhlaXIgcG9ydGFiaWxpdHksIGUuZy4sIGFkZGluZyBhbjwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8cHJlIGNsYXNzPSJjb2RlLWJsb2NrIj4KK2ZmbHVzaChzdGRvdXQpOworPC9wcmU+CisgIDwvYmxvY2txdW90ZT4KKworICA8cD53aGVuIHN3aXRjaGluZyBmcm9tICZsZHF1bzs8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwjaDMtcmVzZXRfcHJvZ19tb2RlXy1yZXNldF9zaGVsbF9tb2RlIj5zaGVsbDwvYT4mcmRxdW87CisgIG1vZGUgdG8gJmxkcXVvOzxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCNoMy1yZXNldF9wcm9nX21vZGVfLXJlc2V0X3NoZWxsX21vZGUiPnByb2dyYW08L2E+JnJkcXVvOworICAoY3Vyc2VzKSBtb2RlLiBUaG9zZSBhcmUgZmFpcmx5IHJhcmUgYmVjYXVzZSBtb3N0IHByb2dyYW1tZXJzCisgIGhhdmUgbGVhcm5lZCBub3QgdG8gbWl4IDxjb2RlPnByaW50ZjwvY29kZT4gYW5kIDxjb2RlPjxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19wcmludHcuM3guaHRtbCI+cHJpbnR3PC9hPjwvY29kZT4uPC9wPgorCisgIDxoMz48YSBuYW1lPSJoMy1saWItdmVyc2lvbmluZyIgaWQ9ImgzLWxpYi12ZXJzaW9uaW5nIj5TeW1ib2wKKyAgdmVyc2lvbmluZzwvYT48L2gzPgorCisgIDxwPlRoaXMgcmVsZWFzZSBpbnRyb2R1Y2VzIHN5bWJvbC12ZXJzaW9uaW5nIHRvIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBiZWNhdXNlIHdpdGhvdXQgaXQsIHRoZSBjaGFuZ2Ugb2YgQUJJCisgIHdvdWxkIGJlIGxlc3Mgc3VjY2Vzc2Z1bC4gQSBsZW5ndGh5IGRpc2N1c3Npb24gd2lsbCBiZSBwcmVzZW50ZWQKKyAgaW4gPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWFwc3ltcy5odG1sIj5TeW1ib2wKKyAgdmVyc2lvbmluZyBpbiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPjwvYT4uIFRoZXNlCisgIG5vdGVzIHN1bW1hcml6ZSB3aGF0IGhhcyBjaGFuZ2VkLCBhbmQgd2hhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZQorICBuZXcgcmVsZWFzZS48L3A+CisKKyAgPHA+U3ltYm9sLXZlcnNpb25pbmcgYWxsb3dzIHRoZSBkZXZlbG9wZXJzIG9mIGEgbGlicmFyeSB0byBtYXJrCisgIGVhY2ggcHVibGljIHN5bWJvbCAoYm90aCBkYXRhIGFuZCBmdW5jdGlvbnMpIHdpdGggYW4gaWRlbnRpZmllcgorICBkZW5vdGluZyB0aGUgbGlicmFyeSBuYW1lIGFuZCB0aGUgdmVyc2lvbiBmb3Igd2hpY2ggaXQgd2FzIGJ1aWx0LgorICBCeSBkb2luZyB0aGlzLCB1c2VycyBvZiB0aGUgbGlicmFyeSBoYXZlIGEgd2F5IHRvIGhlbHAgZW5zdXJlCisgIHRoYXQgYXBwbGljYXRpb25zIGRvIG5vdCBhY2NpZGVudGFsbHkgbG9hZCBhbiBpbmNvbXBhdGlibGUKKyAgbGlicmFyeS4gSW4gYWRkaXRpb24sIHByaXZhdGUgc3ltYm9scyBjYW4gYmUgaGlkZGVuIGVudGlyZWx5LjwvcD4KKworICA8cD5UaGlzIHJlbGVhc2UgcHJvdmlkZXMgc2FtcGxlIGZpbGVzIGZvciB0aGUgZm91ciBwcmluY2lwYWwKKyAgY29uZmlndXJhdGlvbnMgb2YgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gbGlicmFyaWVzOgorICA8Y29kZT5uY3Vyc2VzPC9jb2RlPiwgPGNvZGU+bmN1cnNlc3c8L2NvZGU+LAorICA8Y29kZT5uY3Vyc2VzdDwvY29kZT4gYW5kIDxjb2RlPm5jdXJzZXN0dzwvY29kZT4uIEVhY2ggc2FtcGxlIGlzCisgIGdpdmVuIGluIHR3byBmb3Jtczo8L3A+CisKKyAgPGJsb2NrcXVvdGU+CisgICAgPGRsPgorICAgICAgPGR0PiZsZHF1bzs8Y29kZT4ubWFwPC9jb2RlPiZyZHF1bzs8L2R0PgorCisgICAgICA8ZGQ+VGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHRvZ2V0aGVyIHdpdGggdmVyc2lvbgorICAgICAgbmFtZXMuPC9kZD4KKworICAgICAgPGR0PiZsZHF1bzs8Y29kZT4uc3ltPC9jb2RlPiZyZHF1bzs8L2R0PgorCisgICAgICA8ZGQ+VGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHdpdGhvdXQgdmVyc2lvbgorICAgICAgbmFtZXMuPC9kZD4KKyAgICA8L2RsPgorICA8L2Jsb2NrcXVvdGU+CisKKyAgPHA+VGhlIHNhbXBsZSBmaWxlcyBhcmUgPGVtPmdlbmVyYXRlZDwvZW0+IGJ5IHNjcmlwdHMgd2hpY2ggdGFrZQorICBpbnRvIGFjY291bnQgYSBmZXcgc3BlY2lhbCBjYXNlcyBzdWNoIGFzIDxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWwiPnRhY2s8L2E+IHRvIG9taXQKKyAgbWFueSBvZiB0aGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gcHJpdmF0ZSBzeW1ib2xzCisgIChiZWdpbm5pbmcgd2l0aCAmbGRxdW87PGNvZGU+X25jXzwvY29kZT4mcmRxdW87KS4gSGVyZSBhcmUKKyAgY291bnRzIG9mIGdsb2JhbHMgdmVyc3VzIGxvY2Fsczo8L3A+CisKKyAgPGJsb2NrcXVvdGU+CisgICAgPHRhYmxlIGJvcmRlcj0iMSIgc3VtbWFyeT0iVG90YWwgZ2xvYmFsIGFuZCBsb2NhbCBzeW1ib2xzIj4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRoPkNvbmZpZzwvdGg+CisKKyAgICAgICAgPHRoPlN5bWJvbHM8L3RoPgorCisgICAgICAgIDx0aD5HbG9iYWxzPC90aD4KKworICAgICAgICA8dGg+TG9jYWxzPC90aD4KKworICAgICAgICA8dGg+Il9uY18iPC90aD4KKyAgICAgIDwvdHI+CisKKyAgICAgIDx0cj4KKyAgICAgICAgPHRkPm5jdXJzZXM8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjk3NjwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Nzk2PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4xODA8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjMzMjwvdGQ+CisgICAgICA8L3RyPgorCisgICAgICA8dHI+CisgICAgICAgIDx0ZD5uY3Vyc2VzdzwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MTA4OTwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+OTA1PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4xODQ8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjM0MzwvdGQ+CisgICAgICA8L3RyPgorCisgICAgICA8dHI+CisgICAgICAgIDx0ZD5uY3Vyc2VzdDwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+OTc5PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij44MDQ8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjE3NTwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MzU4PC90ZD4KKyAgICAgIDwvdHI+CisKKyAgICAgIDx0cj4KKyAgICAgICAgPHRkPm5jdXJzZXN0dzwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+MTA5ODwvdGQ+CisKKyAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+OTE0PC90ZD4KKworICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4xODQ8L3RkPgorCisgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPjM3MjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGFibGU+CisgIDwvYmxvY2txdW90ZT4KKworICA8cD5BbHRob3VnaCBvbmx5IGZvdXIgc2FtcGxlIGNvbmZpZ3VyYXRpb25zIGFyZSBwcmVzZW50ZWQsIGVhY2gKKyAgaXMgZm9ybWVkIGJ5IG1lcmdpbmcgc3ltYm9scyBmcm9tIHNldmVyYWwgY29tYmluYXRpb25zIG9mCisgIGNvbmZpZ3VyZS1zY3JpcHQgb3B0aW9ucywgdGFraW5nIGludG8gYWNjb3VudCBhZHZpY2UgZnJvbQorICBkb3duc3RyZWFtIHBhY2thZ2Vycy4gQmVjYXVzZSB0aGV5IGFyZSBmb3JtZWQgYnkgbWVyZ2luZywgdGhlCisgIHNhbXBsZSBmaWxlcyBtYXkgbGlzdCBhIHN5bWJvbCB3aGljaCBpcyBub3QgaW4gYSBnaXZlbiBwYWNrYWdlLgorICBUaGF0IGlzIGV4cGVjdGVkLiBUaGUgc2FtcGxlcyBoYXZlIGJlZW4gdGVzdGVkIGFuZCBhcmUgd29ya2luZworICB3aXRoIHN5c3RlbXMgKHN1Y2ggYXMgRmVkb3JhLCBGcmVlQlNEIGFuZCBEZWJpYW4pIHdoaWNoIGZ1bGx5CisgIHN1cHBvcnQgdGhpcyBmZWF0dXJlLiBUaGVyZSBhcmUgb3RoZXIgc3lzdGVtcyB3aGljaCBkbworICA8ZW0+bm90PC9lbT4gc3VwcG9ydCB0aGUgZmVhdHVyZSwgYW5kIGEgZmV3IChzdWNoIGFzIFNvbGFyaXMpCisgIHdoaWNoIHByb3ZpZGUgaW5jb21wbGV0ZSBzdXBwb3J0LjwvcD4KKworICA8cD5UaGUgdmVyc2lvbi1uYW1pbmcgY29udmVudGlvbiB1c2VkIGFsbG93cyB0aGVzZSBzYW1wbGUgZmlsZXMKKyAgdG8gYnVpbGQgZGlzdGluY3QgbGlicmFyaWVzIGZvciBBQkkgNSBhbmQgNi4gVmVyc2lvbiBuYW1lcworICBjb25zaXN0IG9mPC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5jb25maWd1cmF0aW9uIG5hbWUsIGUuZy4sCisgICAgICAmbGRxdW87PGNvZGU+TkNVUlNFU1c8L2NvZGU+JnJkcXVvOyBmb3IgdGhlIHdpZGUtY2hhcmFjdGVyCisgICAgICBsaWJyYXJpZXM8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkFCSSB2ZXJzaW9uIChpZiBub3QgNSk8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmxpYnJhcnkgbmFtZSBmb3IgdHdvIHNwZWNpYWwgY2FzZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZQorICAgICAgaW50ZXJmYWNlIGFjcm9zcyBjb25maWd1cmF0aW9uczoKKyAgICAgICZsZHF1bzs8Y29kZT5USU5GTzwvY29kZT4mcmRxdW87IGFuZAorICAgICAgJmxkcXVvOzxjb2RlPlRJQzwvY29kZT4mcmRxdW87PC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5yZWxlYXNlIHZlcnNpb248L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnBhdGNoIGRhdGUgKGZvciB0aGUgcmVsZWFzZSB2ZXJzaW9uKTwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkZvciBleGFtcGxlLCBydW5uaW5nIDxjb2RlPm5tIC1EPC9jb2RlPiBvbiB0aGUgbGlicmFyaWVzIGluCisgIHRoZSBuY3Vyc2VzNiB0ZXN0IHBhY2thZ2Ugc2hvd3MgdGhlc2Ugc3ltYm9sLXZlcnNpb25zOjwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8cHJlIGNsYXNzPSJjb2RlLWJsb2NrIj4KKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS4wLjE5OTkxMDIzCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuMS4yMDAwMDcwOAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjUuMjAwNTEwMTAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS43LjIwMDgxMTAyCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuOS4yMDE1MDUzMAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuMC4xOTk5MTAyMworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuMS4yMDAwMDcwOAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuMi4yMDAwMTAyMQorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuMy4yMDAyMTAxOQorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuNC4yMDA0MDIwOAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuNS4yMDA1MTAxMAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuNi4yMDA2MTIxNworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuNy4yMDA4MTEwMgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuOC4yMDExMDIyNgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJTkZPXzUuOS4yMDE1MDUzMAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjEuMjAwMDA3MDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS4zLjIwMDIxMDE5CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuNC4yMDA0MDIwOAorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjUuMjAwNTEwMTAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS42LjIwMDYxMjE3CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuNy4yMDA4MTEwMgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjguMjAxMTAyMjYKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS45LjIwMTUwNTMwCis8L3ByZT4KKyAgPC9ibG9ja3F1b3RlPgorCisgIDxwPkFzIGEgc3BlY2lhbCBjYXNlLCB0aGlzIHJlbGVhc2UgKHdoaWNoIG1ha2VzIHRoZSBmaW5hbCBjaGFuZ2UKKyAgZm9yIEFCSSA1KSBpcyBtYXJrZWQgd2l0aCByZWxlYXNlIHZlcnNpb24gNS45IGFuZCBwYXRjaCBkYXRlCisgIDIwMTUwNTMwLjwvcD4KKworICA8aDM+PGEgbmFtZT0iaDMtbGliLW90aGVyIiBpZD0KKyAgImgzLWxpYi1vdGhlciI+TWlzY2VsbGFuZW91czwvYT48L2gzPgorCisgIDxwPlRoZSBuZXcgcmVsZWFzZSBoYXMgc2V2ZXJhbCBpbXByb3ZlbWVudHMgZm9yIHBlcmZvcm1hbmNlIGFuZAorICBidWlsZGluZy4gRm9yIGluc3RhbmNlOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+c2V2ZXJhbCBmaWxlcyBpbiBuY3Vyc2VzLSBhbmQgcHJvZ3MtZGlyZWN0b3JpZXMgd2VyZQorICAgICAgbW9kaWZpZWQgdG8gYWxsb3cgPGNvZGU+Y29uc3Q8L2NvZGU+IGRhdGEgdXNlZCBpbiBpbnRlcm5hbAorICAgICAgdGFibGVzIHRvIGJlIHB1dCBieSB0aGUgbGlua2VyIGludG8gdGhlIHJlYWRvbmx5IHRleHQKKyAgICAgIHNlZ21lbnQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD52YXJpb3VzIGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8gYnVpbGRpbmcgdGhlIEFkYTk1CisgICAgICBiaW5kaW5nLCBib3RoIGluIHNpbXBsaWZ5aW5nIHRoZSBnZW5lcmF0ZWQgZmlsZXMgYXMgd2VsbCBhcworICAgICAgaW1wcm92aW5nIHRoZSB3YXkgaXQgdXNlcyA8Y29kZT5nbmF0bWFrZTwvY29kZT48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGVyZSBhcmUgYWxzbyBuZXcgZmVhdHVyZXMgaW4gdGhlIGxpYnJhcmllczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT5hZGRlZCA8YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc191dGlsLjN4Lmh0bWwjaDMtdXNlX3Rpb2N0bCI+CisgICAgdXNlX3Rpb2N0bDwvYT4gZnVuY3Rpb248L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19vcGFxdWUuM3guaHRtbCI+CisgICAgICB3Z2V0ZGVsYXk8L2E+IHRvIHJldHJpZXZlIF9kZWxheSBtZW1iZXIgb2YgV0lORE9XIGlmIGl0CisgICAgICBoYXBwZW5zIHRvIGJlIG9wYXF1ZSwgZS5nLiwgaW4gdGhlIHB0aHJlYWQgY29uZmlndXJhdGlvbi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfYXR0ci4zeC5odG1sI2gyLVBPUlRBQklMSVRZIj4KKyAgICAgIEFfSVRBTElDPC9hPiBleHRlbnNpb24uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCBmb3JtIGxpYnJhcnkgZXh0ZW5zaW9uIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sIj4KKyAgICAgIE9fRFlOQU1JQ19KVVNUSUZZPC9hPiBvcHRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUKKyAgICAgIHRoZSBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIGp1c3RpZmljYXRpb24gZm9yIHN0YXRpYyB2ZXJzdXMKKyAgICAgIGR5bmFtaWMgZmllbGRzIC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnJld3JvdGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc191dGlsLjN4Lmh0bWwjaDMtcHV0d2luX2dldHdpbiI+CisgICAgICBwdXR3aW48L2E+IGFuZCA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy1wdXR3aW5fZ2V0d2luIj4KKyAgICAgIGdldHdpbjwvYT4sIG1ha2luZyBhbiBleHRlbmRlZCB2ZXJzaW9uIHdoaWNoIGlzIGNhcGFibGUgb2YKKyAgICAgIHJlYWRpbmcgc2NyZWVuLWR1bXBzIGJldHdlZW4gdGhlIHdpZGUvbm9ybWFsIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gY29uZmlndXJhdGlvbnMuIFRoZXNlIGFyZSB0ZXh0CisgICAgICBmaWxlcywgZXhjZXB0IGZvciBhIDxlbT5tYWdpYzwvZW0+IGNvZGUgYXQgdGhlIGJlZ2lubmluZzo8L3A+CisKKyAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICA8cHJlIGNsYXNzPSJjb2RlLWJsb2NrIj4KKzAgICAgICAgc3RyaW5nICAgICAgICAgIFwyMTBcMjEwICAgICAgICBTY3JlZW4tZHVtcCAobmN1cnNlcykKKzwvcHJlPgorICAgICAgPC9ibG9ja3F1b3RlPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5zZXZlcmFsIGNoYW5nZXMgdG8gbW91c2Ugc3VwcG9ydCBpbmNsdWRlOjwvcD4KKworICAgICAgPHVsPgorICAgICAgICA8bGk+YWRkZWQgZGVjb2RlciBmb3IgeHRlcm0gU0dSIDEwMDYgbW91c2UgbW9kZS48L2xpPgorCisgICAgICAgIDxsaT5hZGRlZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IKKyAgICAgICAgJmxkcXVvOzxjb2RlPiV1PC9jb2RlPiZyZHF1bzsgZm9ybWF0IHRvIHRlcm1pbmZvLjwvbGk+CisKKyAgICAgICAgPGxpPmltcHJvdmVkIGJlaGF2aW9yIG9mIHdoZWVsLW1pY2UgZm9yIHh0ZXJtIHByb3RvY29sOgorICAgICAgICBub3RpbmcgdGhhdCB0aGVyZSBhcmUgb25seSBidXR0b24tcHJlc3NlcyBmb3IgYnV0dG9ucworICAgICAgICAmbGRxdW87NCZyZHF1bzsgYW5kICZsZHF1bzs1JnJkcXVvOywgc28gdGhlcmUgaXMgbm8gbmVlZCB0bworICAgICAgICB3YWl0IHRvIGNvbWJpbmUgZXZlbnRzIGludG8gZG91YmxlLWNsaWNrcyAuPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGVyZSBhcmUgYSBmZXcgbmV3IGNvbmZpZ3VyZSBvcHRpb25zIGRlYWxpbmcgd2l0aCBsaWJyYXJ5CisgIGN1c3RvbWl6YXRpb246PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5hZGQgJmxkcXVvOzxjb2RlPi0tZW5hYmxlLWV4dC1wdXR3aW48L2NvZGU+JnJkcXVvOworICAgICAgY29uZmlndXJlIG9wdGlvbiB0byB0dXJuIG9uIHRoZSBleHRlbmRlZCBwdXR3aW4vZ2V0d2luLiBCeQorICAgICAgZGVmYXVsdCwgdGhpcyBpcyBlbmFibGVkIGZvciBBQkkgNiBhbmQgZGlzYWJsZWQgd2l0aCBBQkkKKyAgICAgIDUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGQgJmxkcXVvOzxjb2RlPi0tZW5hYmxlLXN0cmluZy1oYWNrczwvY29kZT4mcmRxdW87CisgICAgICBvcHRpb24gdG8gY29udHJvbCB3aGV0aGVyIHN0cmxjYXQgYW5kIHN0cmxjcHkgbWF5IGJlIHVzZWQuCisgICAgICBCZWNhdXNlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGFscmVhZHkgZG9lcyB0aGUKKyAgICAgIHJlcXVpc2l0ZSBidWZmZXItbGltaXQgY2hlY2tzLCB0aGlzIGZlYXR1cmUgaXMgbWFpbmx5IG9mCisgICAgICBpbnRlcmVzdCB0byBxdWlldCBjb21waWxlci13YXJuaW5ncyBvbiBhIGZldyBzeXN0ZW1zLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkIGNvbmZpZ3VyZSBvcHRpb24KKyAgICAgICZsZHF1bzs8Y29kZT4tLXdpdGgtdHBhcm0tYXJnPC9jb2RlPiZyZHF1bzsgdG8gYWxsb3cgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sI2gzLUZvcm1hdHRpbmctT3V0cHV0Ij4KKyAgICAgIHRwYXJtPC9hPidzIHBhcmFtZXRlcnMgdG8gYmUgc29tZXRoaW5nIG1vcmUgbGlrZWx5IHRvIGJlIHRoZQorICAgICAgc2FtZSBzaXplIGFzIGEgcG9pbnRlciwgZS5nLiwgPGNvZGU+aW50cHRyX3Q8L2NvZGU+IChhZ2FpbiwKKyAgICAgIHRoZSBkZWZhdWx0IGlzIHNldCBmb3IgQUJJIDYpLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoMz48YSBuYW1lPSJoMy1wcm9ncmFtcyIgaWQ9ImgzLXByb2dyYW1zIj5Qcm9ncmFtCisgIGltcHJvdmVtZW50czwvYT48L2gzPgorCisgIDxoND48YSBuYW1lPSJoNC11dGlsaXRpZXMiIGlkPSJoNC11dGlsaXRpZXMiPlV0aWxpdGllczwvYT48L2g0PgorCisgIDxwPk1vc3Qgb2YgdGhlIHRlcm1jYXAtcmVsYXRlZCBjaGFuZ2VzIGJhc2VkIG9uIGRldmVsb3BtZW50IG9mCisgIDxhIGhyZWY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RjdGVzdC5odG1sIj50Y3Rlc3QKKyAgKHRlcm1jYXAgbGlicmFyeSBjaGVja2VyKTwvYT4gYXJlIGltcGxlbWVudGVkIGluIHRoZSB0aWMgYW5kCisgIGluZm9jbXAgcHJvZ3JhbXMgcmF0aGVyIHRoYW4gYWZmZWN0aW5nIHRoZSBsaWJyYXJ5LiBBcyBub3RlZCBpbgorICB0aGUgPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RjdGVzdC5odG1sI215LWJldHRlci10cmFuc2xhdGlvbiI+CisgIGRpc2N1c3Npb248L2E+IG9mIDxjb2RlPnRjdGVzdDwvY29kZT4sIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPidzIGFiaWxpdHkgdG8gdHJhbnNsYXRlIGJldHdlZW4gdGVybWluZm8KKyAgYW5kIHRlcm1jYXAgZm9ybWF0cyBoYXMgYmVlbiBpbXByb3ZlZCBhdCBkaWZmZXJlbnQgdGltZXMsIGJ1dAorICBzdWJqZWN0IHRvIGZlZWRiYWNrIGZyb20gInJlYWwiIHRlcm1jYXAgdXNlcnMuIFRoZXJlIGFyZSB2ZXJ5IGZldworICBvZiB0aG9zZS4gTm93YWRheXMsIHZpcnR1YWxseSBhbGwgPGVtPnRlcm1jYXA8L2VtPiB1c2VycyBhcmUKKyAgdXNpbmcgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gKG9yIE5ldEJTRCwgd2l0aCBpdHMKKyAgb3duIHRlcm1pbmZvIGxpYnJhcnkpIGFuZCB0aGVpciBwcm9ncmFtcyBhcmUgYWN0dWFsbHkgdXNpbmcKKyAgdGVybWluZm8gcmF0aGVyIHRoYW4gdGVybWNhcCBkYXRhLjwvcD4KKworICA8cD5TdGlsbCwgdGhlcmUgYXJlIGEgZmV3LiBBIGNvbW1lbnQgYWJvdXQgdGhlIHRyYW5zbGF0aW9uIG9mIHRoZQorICBBU0NJSSA8Y29kZT5OVUw8L2NvZGU+IGNoYXJhY3RlciBwcm9tcHRlZCBhIHJldmlldzo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPkJvdGggdGVybWluZm8gYW5kIHRlcm1jYXAgc3RvcmUgc3RyaW5nIGNhcGFiaWxpdGllcyBhcworICAgICAgPGNvZGU+TlVMPC9jb2RlPi10ZXJtaW5hdGVkIHN0cmluZ3MuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5JbiB0ZXJtaW5mbywgYSA8Y29kZT5cMDwvY29kZT4gaW4gYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbgorICAgICAgaXMgc3RvcmVkIGFzIDxjb2RlPlwyMDA8L2NvZGU+LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+VGhlcmUgYXJlIG5vIChrbm93bikgdGVybWluYWxzIHdoaWNoIHdvdWxkIGJlaGF2ZQorICAgICAgZGlmZmVyZW50bHkgd2hlbiBzZW50IDxjb2RlPlwwPC9jb2RlPiBvcgorICAgICAgPGNvZGU+XDIwMDwvY29kZT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5XaGVuIHRyYW5zbGF0aW5nIHRvIHRlcm1pbmZvIGZvcm1hdCAob3IgZGlzcGxheWluZyBhCisgICAgICBwcmludGFibGUgdmVyc2lvbiBvZiBhbiBlbnRyeSB1c2luZyBpbmZvY21wKSwgPGVtIGNsYXNzPQorICAgICAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBzaG93cyA8Y29kZT5cMjAwPC9jb2RlPiBhcworICAgICAgPGNvZGU+XDA8L2NvZGU+LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+SXQgaGFzIGRvbmUgdGhpcyBzaW5jZSAxOTk4IChxdW90aW5nIGZyb20gdGhlIE5FV1MKKyAgICAgIGZpbGUpOjwvcD4KKworICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgIDxwcmUgY2xhc3M9ImNvZGUtYmxvY2siPgorPGEgaHJlZj0KKyJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDEwMyI+OTgwMTAzPC9hPgorLi4uCisgICAgICAgICsgbW9kaWZ5IF9uY190aWNfZXhwYW5kKCkgdG8gZ2VuZXJhdGUgXDAgcmF0aGVyIHRoYW4gXDIwMC4KKy4uLgorICAgICAgICArIGNvcnJlY3QgdHJhbnNsYXRpb24gb2YgdGVybWluZm8gIl5AIiwgdG8gXDIwMCwgbGlrZSBcMC4KKzwvcHJlPgorICAgICAgPC9ibG9ja3F1b3RlPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5Ib3dldmVyLCB0aGUgPGNvZGU+X25jX3RpY19leHBhbmQ8L2NvZGU+IGZ1bmN0aW9uICh3aGljaAorICAgICAgb3B0aW9uYWxseSBwcm9kdWNlcyB0ZXJtaW5mbyBvciB0ZXJtY2FwIGZvcm1hdCkgZGlkIG5vdAorICAgICAgYWRkcmVzcyB0aGlzIHNwZWNpYWwgY2FzZSBmb3IgdGVybWNhcC4gRXZlbiB0aGUgbGF0ZXIgNC40QlNECisgICAgICA8YSBocmVmPQorICAgICAgImh0dHBzOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2UvaGVhZC9saWIvbGliYy9nZW4vZ2V0Y2FwLmM/cmV2aXNpb249MjQ0MDkyJmFtcDt2aWV3PW1hcmt1cCNsNzg0Ij4KKyAgICAgIGNnZXRzdHI8L2E+IGludGVycHJldHMgYSA8Y29kZT5cMDwvY29kZT4gbGl0ZXJhbGx5LCBlbmRpbmcKKyAgICAgIDxlbT50aGF0PC9lbT4gc3RyaW5nIChyYXRoZXIgdGhhbiB1c2luZyB0aGUgdGVybWluZm8KKyAgICAgIGltcHJvdmVtZW50KS48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5BcyBhIHJlc3VsdCBvZiB0aGUgcmV2aWV3LCBzZXZlcmFsIGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8KKyAgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gdHJhbnNsYXRpb24gdG8vZnJvbSB0ZXJtY2FwCisgIGZvcm1hdCAmbWRhc2g7IGFuZCBpbXByb3ZpbmcgdGhlIGNoZWNrcyBtYWRlIGluIHRpYyBmb3IKKyAgY29uc2lzdGVuY3kgb2YgZW50cmllcy4gTW9zdCBvZiB0aGVzZSBhcmUgbm90IG9mIGdlbmVyYWwKKyAgaW50ZXJlc3QsIGV4Y2VwdCBmb3IgdHdvIG5ldyBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGljIGFuZAorICBpbmZvY21wOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+dGhlICZsZHF1bzs8Y29kZT4tMDwvY29kZT4mcmRxdW87IG9wdGlvbiBnZW5lcmF0ZXMKKyAgICAgIHRlcm1jYXAvdGVybWluZm8gc291cmNlIG9uIGEgc2luZ2xlIGxpbmUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgJmxkcXVvOzxjb2RlPi1LPC9jb2RlPiZyZHF1bzsgb3B0aW9uIHByb3ZpZGVzIHN0cmljdGVyCisgICAgICBCU0QtY29tcGF0aWJpbGl0eSBmb3IgdGVybWNhcCBvdXRwdXQuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+T3RoZXIgdXNlci12aXNpYmxlIGltcHJvdmVtZW50cyBhbmQgbmV3IGZlYXR1cmVzIGluY2x1ZGU6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCAmbGRxdW87PGNvZGU+LUQ8L2NvZGU+JnJkcXVvOyBvcHRpb24gdG8gdGljIGFuZAorICAgICAgaW5mb2NtcCwgdG8gc2hvdyB0aGUgZGF0YWJhc2UgbG9jYXRpb25zIHRoYXQgaXQgY291bGQKKyAgICAgIHVzZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkICZsZHF1bzs8Y29kZT4tczwvY29kZT4mcmRxdW87IG9wdGlvbiB0byB0b2UsIHRvIHNvcnQKKyAgICAgIGl0cyBvdXRwdXQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5leHRlbmRlZCAmbGRxdW87PGNvZGU+LWM8L2NvZGU+JnJkcXVvOyBhbmQKKyAgICAgICZsZHF1bzs8Y29kZT4tbjwvY29kZT4mcmRxdW87IG9wdGlvbnMgb2YgaW5mb2NtcCB0byBhbGxvdworICAgICAgY29tcGFyaW5nIG1vcmUgdGhhbiB0d28gZW50cmllcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRvZSdzIHJlcG9ydCB3aGVuICZsZHF1bzs8Y29kZT4tYTwvY29kZT4mcmRxdW87CisgICAgICBhbmQgJmxkcXVvOzxjb2RlPi1zPC9jb2RlPiZyZHF1bzsgb3B0aW9ucyBhcmUgY29tYmluZWQsIHRvCisgICAgICBhZGQgYSBjb2x1bW4gc2hvd2luZyB3aGljaCBlbnRyaWVzIGJlbG9uZyB0byBhIGdpdmVuCisgICAgICBkYXRhYmFzZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRoZSBjbGVhciBwcm9ncmFtIHRvIHRha2UgaW50byBhY2NvdW50IHRoZQorICAgICAgJmxkcXVvOzxjb2RlPkUzPC9jb2RlPiZyZHF1bzsgZXh0ZW5kZWQgY2FwYWJpbGl0eSB0byBjbGVhcgorICAgICAgdGhlIHRlcm1pbmFsJ3Mgc2Nyb2xsYmFjayBidWZmZXIuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPGg0PjxhIG5hbWU9Img0LWV4YW1wbGVzIiBpZD0iaDQtZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvaDQ+CisKKyAgPHA+QWxvbmcgd2l0aCB0aGUgbGlicmFyeSBhbmQgdXRpbGl0aWVzLCBtYW55IGltcHJvdmVtZW50cyB3ZXJlCisgIG1hZGUgdG8gdGhlIDxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWV4YW1wbGVzLmh0bWwiPm5jdXJzZXMtZXhhbXBsZXM8L2E+LgorICBTb21lIHdlcmUgbWFkZSB0byBhbGxvdyBidWlsZGluZyAoYW5kIGNvbXBhcmlzb24tdGVzdGluZykgYWdhaW5zdAorICBOZXRCU0QgY3Vyc2VzIGFuZCBQREN1cnNlcy4gQm90aCBsYWNrIHNvbWUgb2YgdGhlIFgvT3BlbiBDdXJzZXMKKyAgZmVhdHVyZXMsIG5lY2Vzc2l0YXRpbmcgY3VzdG9taXphdGlvbi4gQnV0IHRoaXMgYWN0aXZpdHkgd2FzCisgIHVzZWZ1bCBiZWNhdXNlIGl0IHNob3dlZCBzb21lIHJlbWFpbmluZyBwZXJmb3JtYW5jZSBpc3N1ZXMgKHdoaWNoCisgIGhhdmUgYmVlbiByZXNvbHZlZCBpbiB0aGlzIHJlbGVhc2UpLjwvcD4KKworICA8cD5UaGVzZSBjaGFuZ2VzIHdlcmUgbWFkZSB0byB2ZXJpZnkgY29tcGF0aWJpbGl0eSBvciBjb21wYXJlCisgIHBlcmZvcm1hbmNlIG9mIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+OjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+bWFkZSB3b3JrYXJvdW5kcyBmb3IgY29tcGlsaW5nIHRlc3QtcHJvZ3JhbXMgd2l0aCBOZXRCU0QKKyAgICAgIGN1cnNlcywgdGhvdWdoIGl0IGxhY2tzIHNvbWUgY29tbW9uIGZ1bmN0aW9ucyBzdWNoIGFzCisgICAgICA8YSBocmVmPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc191dGlsLjN4Lmh0bWwjaDMtdXNlX2VudiI+CisgICAgICB1c2VfZW52PC9hPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIGRvdHNfdGVybWNhcCB0ZXN0LXByb2dyYW08L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIGRvdHNfY3Vyc2VzIHRlc3QtcHJvZ3JhbSwgZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUKKyAgICAgIGxvdy1sZXZlbCBleGFtcGxlcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHRlc3Rfc2V0dXB0ZXJtIHRlc3QtcHJvcmFtIHRvIGRlbW9uc3RyYXRlCisgICAgICBub3JtYWwvZXJyb3IgcmV0dXJucyBmcm9tIHRoZSBzZXR1cHRlcm0gYW5kIHJlc3RhcnR0ZXJtCisgICAgICBmdW5jdGlvbnMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCAmbGRxdW87PGNvZGU+LWQ8L2NvZGU+JnJkcXVvOywKKyAgICAgICZsZHF1bzs8Y29kZT4tZTwvY29kZT4mcmRxdW87IGFuZAorICAgICAgJmxkcXVvOzxjb2RlPi1xPC9jb2RlPiZyZHF1bzsgb3B0aW9ucyB0byB0aGUgZGVtb190ZXJtaW5mbworICAgICAgYW5kIGRlbW9fdGVybWNhcCB0ZXN0LXByb2dyYW1zLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgJmxkcXVvOzxjb2RlPi15PC9jb2RlPiZyZHF1bzsgb3B0aW9uIHRvIGRlbW9fdGVybWNhcAorICAgICAgYW5kIHRlc3QvZGVtb190ZXJtaW5mbyB0ZXN0LXByb2dyYW1zIHRvIGRlbW9uc3RyYXRlIGJlaGF2aW9yCisgICAgICB3aXRoL3dpdGhvdXQgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgZGVtb190ZXJtY2FwIGFuZCBkZW1vX3Rlcm1pbmZvIHRlc3QtcHJvZ3JhbXMgdG8KKyAgICAgIG1ha2UgdGhlaXIgb3B0aW9ucyBtb3JlIGRpcmVjdGx5IGNvbXBhcmFibGUsIGFuZCBhZGQKKyAgICAgICZsZHF1bzs8Y29kZT4taTwvY29kZT4mcmRxdW87IG9wdGlvbiB0byBzcGVjaWZ5IGEgdGVybWluYWwKKyAgICAgIGRlc2NyaXB0aW9uIGZpbGVuYW1lIHRvIHBhcnNlIGZvciBuYW1lcyB0byBsb29rdXAuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5yZXdyb3RlIHRoZSB0ZXN0cyBmb3IgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCNoMy1kZXJ3aW4iPgorICAgICAgbXZkZXJ3aW48L2E+IGFuZCB0ZXN0IGZvciByZWN1cnNpdmUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCNoMy1tdndpbiI+CisgICAgICBtdndpbjwvYT4gaW4gdGhlIG1vdmV3aW5kb3cgdGVzdC1wcm9ncmFtLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXNlIGNoYW5nZXMgd2VyZSBtYWRlIHRvIGhlbHAgd2l0aCB0aGUgTWluR1cgcG9ydDo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHRlc3Qtc2NyZWVucyB0byB0aGUgbmN1cnNlcyB0ZXN0LXByb2dyYW0gdG8gc2hvdworICAgICAgMjU2LWNoYXJhY3RlcnMgYXQgYSB0aW1lLCB0byBoZWxwIHdpdGggTWluR1cgcG9ydC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRoZSB2aWV3IHRlc3QtcHJvZ3JhbSB0byBsb2FkIFVURi04IHdoZW4gYnVpbHQKKyAgICAgIHdpdGggTWluR1cgYnkgdXNpbmcgcmVndWxhciB3aW4zMiBBUEkgYmVjYXVzZSB0aGUgTWluR1cKKyAgICAgIGZ1bmN0aW9ucyBtYmxlbiBhbmQgbWJ0b3djIGRvIG5vdCB3b3JrLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgJmxkcXVvOzxjb2RlPi1zPC9jb2RlPiZyZHF1bzsgb3B0aW9uIHRvIHRoZSB2aWV3CisgICAgICB0ZXN0LXByb2dyYW0gdG8gYWxsb3cgaXQgdG8gc3RhcnQgaW4gc2luZ2xlLXN0ZXAgbW9kZSwKKyAgICAgIHJlZHVjaW5nIHNpemUgb2YgdHJhY2UgZmlsZXMgd2hlbiBpdCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcKKyAgICAgIE1pbkdXIGNoYW5nZXMuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdmVyaWZ5IG5ldyBleHRlbnNpb25zIGluIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPjo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2Zvcm1fZHJpdmVyLjN4Lmh0bWwjaDMtZm9ybV9kcml2ZXJfdyI+CisgICAgICBmb3JtX2RyaXZlcl93PC9hPiBlbnRyeXBvaW50IHRvIHdpZGUtY2hhcmFjdGVyIGZvcm1zIGxpYnJhcnksCisgICAgICBhcyB3ZWxsIGFzIGZvcm1fZHJpdmVyX3cgdGVzdC1wcm9ncmFtLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgbmN1cnNlcyB0ZXN0LXByb2dyYW0ncyBiL0IgdGVzdHMgdG8gZGlzcGxheSBsaW5lcworICAgICAgb25seSBmb3IgdGhlIGF0dHJpYnV0ZXMgd2hpY2ggYSBnaXZlbiB0ZXJtaW5hbCBzdXBwb3J0cywgdG8KKyAgICAgIG1ha2Ugcm9vbSBmb3IgYW4gaXRhbGljcyB0ZXN0LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgbmN1cnNlcyB0ZXN0LXByb2dyYW0sIGFkZGluZworICAgICAgJmxkcXVvOzxjb2RlPi1FPC9jb2RlPiZyZHF1bzsgYW5kCisgICAgICAmbGRxdW87PGNvZGU+LVQ8L2NvZGU+JnJkcXVvOyBvcHRpb25zIHRvIGRlbW9uc3RyYXRlIHVzZV9lbnYKKyAgICAgIHZlcnN1cyB1c2VfdGlvY3RsLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgbmN1cnNlcyB0ZXN0LXByb2dyYW0ncyBjL0MgdGVzdHMgdG8gY3ljbGUgdGhyb3VnaAorICAgICAgc3Vic2V0cyBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbG9ycywgdG8gYmV0dGVyIGlsbHVzdHJhdGUKKyAgICAgIDgvMTYvODgvMjU2LWNvbG9ycyBieSBwcm92aWRpbmcgZGlyZWN0bHkgY29tcGFyYWJsZQorICAgICAgc2NyZWVucy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPm1vZGlmaWVkIHRoZSBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSB0byBhbHNvIHNob3cgcG9zaXRpb24KKyAgICAgIHJlcG9ydHMgaW4gJ2EnIHRlc3QuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gbWFrZSB0aGUgZXhhbXBsZXMgbW9yZSB1c2VmdWw6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCBzY3JpcHRzIGZvciBidWlsZGluZyBkcGtnIGFuZCBycG0gdGVzdC1wYWNrYWdlczwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+bW9kaWZpZWQgdGhlIGhhbm9pIHRlc3QtcHJvZ3JhbSB0byBzaG93IHRoZSBtaW5pbXVtIG51bWJlcgorICAgICAgb2YgbW92ZXMgcG9zc2libGUgZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgdGlsZXMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCB0aGUga25pZ2h0IHRlc3QtcHJvZ3JhbSB0byBzaG93IHRoZSBudW1iZXIgb2YKKyAgICAgIGNob2ljZXMgcG9zc2libGUgZm9yIGVhY2ggcG9zaXRpb24gaW4gYXV0b21vdmUgb3B0aW9uLCBlLmcuLAorICAgICAgdG8gYWxsb3cgdXNlciB0byBmb2xsb3cgV2FybnNkb3JmZidzIHJ1bGUgdG8gc29sdmUgdGhlCisgICAgICBwdXp6bGUuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPGgzPjxhIG5hbWU9ImgzLWRhdGFiYXNlIiBpZD0iaDMtZGF0YWJhc2UiPlRlcm1pbmFsCisgIGRhdGFiYXNlPC9hPjwvaDM+CisKKyAgPHA+VGhpcyByZWxlYXNlIHByb3ZpZGVzIGltcHJvdmVtZW50cyB0byB0aWMncworICAmbGRxdW87PGNvZGU+LWM8L2NvZGU+JnJkcXVvOyBjaGVja2luZyBvcHRpb24sIHdoaWNoIHdhcyB1c2VkIGZvcgorICBleGFtcGxlIHRvPC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5tYWtlIDxjb2RlPnNncjwvY29kZT4gaW4gc2V2ZXJhbCBlbnRyaWVzIGFncmVlIHdpdGggb3RoZXIKKyAgICAgIGNhcHMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5jb3JyZWN0IHBhZGRpbmcgaW4gc29tZSBlbnRyaWVzIHdoZXJlIGVhcmxpZXIgdmVyc2lvbnMgaGFkCisgICAgICBtaXNjb3VudGVkIHRoZSBudW1iZXIgb2Ygb2N0YWwgZGlnaXRzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPlRoZXJlIGFyZSBzZXZlcmFsIG5ldyB0ZXJtaW5hbCBkZXNjcmlwdGlvbnM6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9NX0xfVF9FX1JfTSI+CisgICAgbWx0ZXJtPC9hPiBpcyBub3cgYWxpYXNlZCB0byBtbHRlcm0zPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtbnN0ZXJtIj4KKyAgICBuc3Rlcm08L2E+IGlzIG5vdyBkZXJpdmVkIGZyb20gbnN0ZXJtLTI1NmNvbG9yPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtcHV0dHktc2NvIj4KKyAgICBwdXR0eS1zY288L2E+PC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdGVrZW4iPgorICAgIHRla2VuPC9hPiBpcyBGcmVlQlNEJ3MgInh0ZXJtIiBjb25zb2xlLjwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9UX0VfUl9NX0lfTl9BX1RfT19SIj4KKyAgICB0ZXJtaW5hdG9yPC9hPjwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9UX0VfUl9NX0lfTl9PX0xfT19HX1kiPgorICAgIHRlcm1pbm9sb2d5PC9hPjwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXRtdXgiPgorICAgIHRtdXg8L2E+IGlzIGRlcml2ZWQgZnJvbSBzY3JlZW4uPC9saT4KKworICAgIDxsaT5zZXZlcmFsIHNjcmVlbi5YWFggZW50cmllcyBzdXBwb3J0IHRoZSByZXNwZWN0aXZlCisgICAgdmFyaWF0aW9ucyBmb3IgMjU2IGNvbG9ycy48L2xpPgorCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RvYy1fU19JX01fUF9MX0VfVF9FX1JfTSI+CisgICAgc2ltcGxldGVybTwvYT4gaXMgbm93IDAuNTwvbGk+CisKKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXZ0ZSI+CisgICAgdnRlPC9hPiBpcyBhbGlhc2VkIHRvIHZ0ZS0yMDEyPC9saT4KKworICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnQ1MjBhbnNpIj4KKyAgICB2dDUyMGFuc2k8L2E+PC9saT4KKyAgPC91bD4KKworICA8cD5BIGZldyBlbnRyaWVzIHVzZSBleHRlbnNpb25zICh1c2VyLWRlZmluZWQgdGVybWluYWwKKyAgY2FwYWJpbGl0aWVzKTo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPjxjb2RlPkUzPC9jb2RlPiwgdXNlZCBpbiBsaW51eCwgcHV0dHkgYW5kIHh0ZXJtLWJhc2ljIGlzCisgICAgICB0ZXN0ZWQgaW4gdGhlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2FlcmllLmpleGl1bS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NsZWFyLjEuaHRtbCI+Y2xlYXI8L2E+CisgICAgICBwcm9ncmFtIHRvIGVyYXNlIGEgdGVybWluYWwncyBzY3JvbGxiYWNrLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGNvZGU+VFM8L2NvZGU+IGlzIHVzZWQgaW4gdGhlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXh0ZXJtX3NsIj4KKyAgICAgIHh0ZXJtK3NsPC9hPiBidWlsZGluZyBibG9jayB0byBoZWxwIGRlcHJlY2F0ZSB0aGUgbWlzdXNlIG9mCisgICAgICA8Y29kZT50c2w8L2NvZGU+IGZvciB4dGVybSdzIHRpdGxlLXN0cmluZy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPjxjb2RlPlhUPC9jb2RlPiBpcyB1c2VkIGluIHNvbWUgdGVybWluZm8gZW50cmllcyB0bworICAgICAgaW1wcm92ZSB1c2VmdWxuZXNzIGZvciBvdGhlciBhcHBsaWNhdGlvbnMgdGhhbiBzY3JlZW4sIHdoaWNoCisgICAgICB3b3VsZCBsaWtlIHRvIHByZXRlbmQgdGhhdCB4dGVybSdzIHRpdGxlIGlzIGEKKyAgICAgIHN0YXR1cy1saW5lLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGNvZGU+eG08L2NvZGU+IGlzIHVzZWQgaW4gZXhhbXBsZXMgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm0tMTAwNSI+CisgICAgICB4dGVybS0xMDA1PC9hPiBhbmQgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm0tMTAwNiI+CisgICAgICB4dGVybS0xMDA2PC9hPiB0byBpbGx1c3RyYXRlIGEgd2F5IHRvIG1ha2UgbW91c2UgaGFuZGxpbmcKKyAgICAgIG1vcmUgZ2VuZXJhbDwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxwPkEgZmV3IHRlcm1pbmFscyBzdXBwb3J0IGl0YWxpY3MgYW5kL29yIGRpbSBjYXBhYmlsaXRpZXMuIEluCisgIHBhcnRpY3VsYXIsIHNjcmVlbiBkb2VzIG5vdC4gRG9jdW1lbnRlZCB0aGF0LCBhbmQgYWNjb21tb2RhdGVkCisgIHRoZSB0ZXJtaW5hbHMgd2hlcmUgdGhpcyBmZWF0dXJlIHdvcmtzIHdpdGggdGhlCisgIDxjb2RlPkFfSVRBTElDPC9jb2RlPiBleHRlbnNpb24uPC9wPgorCisgIDx1bD4KKyAgICA8bGk+a29uc29sZSwgbWx0ZXJtMyAoaXRhbGljcyk8L2xpPgorCisgICAgPGxpPm5zdGVybSAoZGltKTwvbGk+CisKKyAgICA8bGk+c2NyZWVuIChkaW0pPC9saT4KKworICAgIDxsaT52dGUgKGRpbSwgaXRhbGljcyk8L2xpPgorCisgICAgPGxpPnh0ZXJtIChkaW0sIGl0YWxpY3MpPC9saT4KKyAgPC91bD4KKworICA8aDM+PGEgbmFtZT0iaDMtZG9jdW1lbnRhdGlvbiIgaWQ9CisgICJoMy1kb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvaDM+CisKKyAgPHA+QXMgdXN1YWwsIHRoaXMgcmVsZWFzZTwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+aW1wcm92ZXMgZG9jdW1lbnRhdGlvbiBieSBkZXNjcmliaW5nIG5ldyBmZWF0dXJlcyw8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmF0dGVtcHRzIHRvIGltcHJvdmUgdGhlIGRlc2NyaXB0aW9uIG9mIGZlYXR1cmVzIHdoaWNoCisgICAgICB1c2VycyBoYXZlIGZvdW5kIGNvbmZ1c2luZzwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+ZmlsbHMgaW4gb3Zlcmxvb2tlZCBkZXNjcmlwdGlvbnMgb2YgZmVhdHVyZXMgd2hpY2ggd2VyZQorICAgICAgZGVzY3JpYmVkIGluIHRoZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCI+TkVXUzwvYT4gZmlsZQorICAgICAgYnV0IHRyZWF0ZWQgc2tldGNoaWx5IGluIG1hbnVhbCBwYWdlcy48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5JbiBhZGRpdGlvbiwgdGhlIG1lY2hhbmlzbSBmb3IgcHJvZHVjaW5nIEhUTUwgdmVyc2lvbnMgb2YgdGhlCisgIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gaW1wcm92ZWQ6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD51c2UgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgorICAgICAgdG8gZ2VuZXJhdGUgaHRtbCBtYW5wYWdlcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnJlZ2VuZXJhdGVkIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5odG1sIj4KKyAgICAgIE5DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbDwvYT4gdG8gZml4IHNvbWUgb2YgdGhlIGJyb2tlbgorICAgICAgaHRtbCBlbWl0dGVkIGJ5IGRvY2Jvb2suPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPGgzPjxhIG5hbWU9ImgzLWJ1Zy1maXhlcyIgaWQ9ImgzLWJ1Zy1maXhlcyI+SW50ZXJlc3RpbmcKKyAgYnVnLWZpeGVzPC9hPjwvaDM+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPkFkYTk1IGJpbmRpbmc6PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgbWFrZWZpbGUgcnVsZXMgdG8gZW5zdXJlIHRoYXQgdGhlIFBJQyBvcHRpb24gaXMKKyAgICAgICAgICBub3QgdXNlZCB3aGVuIGJ1aWxkaW5nIGEgc3RhdGljIGxpYnJhcnk8L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPm1ha2UgQWRhOTUgYnVpbGQtZml4IGZvciBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgc3VjaAorICAgICAgICAgIGFzIHNwYXJjLiBUaGlzIHVuZG9lcyBvbmUgb2YgdGhlIGZpeGVzIGZyb20gPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDExMDMxOSI+CisgICAgICAgICAgMjAxMTAzMTk8L2E+LCB3aGljaCBhZGRlZCBhbgorICAgICAgICAgICZsZHF1bzs8Y29kZT5VbnVzZWQ8L2NvZGU+JnJkcXVvOyBtZW1iZXIgdG8KKyAgICAgICAgICByZXByZXNlbnRhdGlvbiBjbGF1c2VzLCByZXBsYWNpbmcgdGhhdCB3aXRoIHByYWdtYXMgdG8KKyAgICAgICAgICBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCB1bnVzZWQgYml0cy48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5Db2xvciBhbmQgYXR0cmlidXRlczo8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnBhcmVudGhlc2l6ZSBwYXJhbWV0ZXIgb2YgPGNvZGU+Q09MT1JfUEFJUjwvY29kZT4gYW5kCisgICAgICAgICAgPGNvZGU+UEFJUl9OVU1CRVI8L2NvZGU+IGluIGN1cnNlcy5oIGluIGNhc2UgaXQgaGFwcGVucworICAgICAgICAgIHRvIGJlIGEgY29tbWEtZXhwcmVzc2lvbi48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPmltcHJvdmUgPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDAyMTIyMSI+CisgICAgICAgICAgMjAwMjEyMjE8L2E+IHdvcmthcm91bmQgZm9yIGJyb2tlbiBhY3MsIGhhbmRsaW5nIGEgY2FzZQorICAgICAgICAgIHdoZXJlIHRoYXQgQUNTXzxlbT54eHg8L2VtPiBjaGFyYWN0ZXIgaXMgbm90IGluIHRoZQorICAgICAgICAgIDxjb2RlPmFjc2M8L2NvZGU+IHN0cmluZyBidXQgdGhlcmUgaXMgYSBrbm93bgorICAgICAgICAgIHdpZGUtY2hhcmFjdGVyIHdoaWNoIGNhbiBiZSB1c2VkLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+bW9kaWZ5IDxhIGhyZWY9CisgICAgICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwjaDMtUm91dGluZS1EZXNjcmlwdGlvbnMiPgorICAgICAgICAgIGluaXRfcGFpcjwvYT4gdG8gYWNjZXB0IC0xJ3MgZm9yIGNvbG9yIHZhbHVlIGFmdGVyCisgICAgICAgICAgPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2RlZmF1bHRfY29sb3JzLjN4Lmh0bWwiPgorICAgICAgICAgIGFzc3VtZV9kZWZhdWx0X2NvbG9yczwvYT4gaGFzIGJlZW4gY2FsbGVkLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+YWRkIGEgY2hlY2sgaW4gPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfY29sb3IuM3guaHRtbCNoMy1Sb3V0aW5lLURlc2NyaXB0aW9ucyI+CisgICAgICAgICAgc3RhcnRfY29sb3I8L2E+IHRvIGxpbWl0IGNvbG9yLXBhaXJzIHRvIDI1NiB3aGVuIGV4dGVuZGVkCisgICAgICAgICAgY29sb3JzIGFyZSBub3Qgc3VwcG9ydGVkLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPlJlc2l6aW5nIHRoZSBzY3JlZW46PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5wcm9wYWdhdGUgZXJyb3ItcmV0dXJucyBmcm9tIHdyZXNpemUsIGkuZS4sIHRoZQorICAgICAgICAgIGludGVybmFsIGluY3JlYXNlX3NpemUgYW5kIGRlY3JlYXNlX3NpemUgZnVuY3Rpb25zCisgICAgICAgICAgdGhyb3VnaCA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vcmVzaXpldGVybS4zeC5odG1sIj4KKyAgICAgICAgICByZXNpemVfdGVybTwvYT4uPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5hZGQgY2hlY2sgZm9yIHplcm8vbmVnYXRpdmUgZGltZW5zaW9ucyBmb3IKKyAgICAgICAgICA8Y29kZT5yZXNpemV0ZXJtPC9jb2RlPiBhbmQgPGNvZGU+cmVzaXplX3Rlcm08L2NvZGU+LjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+bW9kaWZ5IDxjb2RlPnJlc2l6ZXRlcm08L2NvZGU+IHRvIGFsd2F5cyBwdXNoIGEKKyAgICAgICAgICA8Y29kZT5LRVlfUkVTSVpFPC9jb2RlPiBvbnRvIHRoZSBmaWZvLCBldmVuIGlmIHNjcmVlbnNpemUKKyAgICAgICAgICBpcyB1bmNoYW5nZWQuIE1vZGlmeSBsaWJyYXJ5IHRvIHB1c2ggYQorICAgICAgICAgIDxjb2RlPktFWV9SRVNJWkU8L2NvZGU+IGlmIHRoZXJlIHdhcyBhIFNJR1dJTkNILCBldmVuIGlmCisgICAgICAgICAgaXQgZG9lcyBub3QgY2FsbCA8Y29kZT5yZXNpemV0ZXJtPC9jb2RlPikuIFRoZXNlIGNoYW5nZXMKKyAgICAgICAgICBlbGltaW5hdGUgdGhlIGNhc2Ugd2hlcmUgYSBTSUdXSU5DSCBpcyByZWNlaXZlZCwgYnV0IEVSUgorICAgICAgICAgIGlzIHJldHVybmVkIGZyb20gPGNvZGU+d2dldGNoPC9jb2RlPiBvcgorICAgICAgICAgIDxjb2RlPndnZXRuc3RyPC9jb2RlPiBiZWNhdXNlIHRoZSBzY3JlZW4gZGltZW5zaW9ucyBkaWQKKyAgICAgICAgICBub3QgY2hhbmdlLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkxvdy1sZXZlbCBpbnRlcmZhY2VzPC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5maXggYW4gb2xkIGJ1ZyBpbiB0aGUgdGVybWNhcCBlbXVsYXRpb247CisgICAgICAgICAgJmxkcXVvOzxjb2RlPiVpPC9jb2RlPiZyZHF1bzsgd2FzIGlnbm9yZWQgaW4KKyAgICAgICAgICA8Y29kZT50cGFybTwvY29kZT4gYmVjYXVzZSB0aGUgcGFyYW1ldGVycyB0byBiZQorICAgICAgICAgIGluY3JlbWVudGVkIHdlcmUgYWxyZWFkeSBvbiB0aGUgaW50ZXJuYWwgc3RhY2suPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5jaGFuZ2UgJmxkcXVvOzxjb2RlPiVsPC9jb2RlPiZyZHF1bzsgYmVoYXZpb3IgaW4gdHBhcm0KKyAgICAgICAgICB0byBwdXNoIHRoZSBzdHJpbmcgbGVuZ3RoIG9udG8gdGhlIHN0YWNrIHJhdGhlciB0aGFuCisgICAgICAgICAgc2F2aW5nIHRoZSBmb3JtYXR0ZWQgbGVuZ3RoIGludG8gdGhlIG91dHB1dCBidWZmZXIuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5tb2RpZnkgbmFtZS1jb21wYXJpc29uIGZvciB0Z2V0c3RyLCBldGMuLCB0bworICAgICAgICAgIGFjY29tbW9kYXRlIGxlZ2FjeSBhcHBsaWNhdGlvbnMgYXMgd2VsbCBhcyB0byBpbXByb3ZlCisgICAgICAgICAgY29tcGF0YmlsaXR5IHdpdGggQlNEIDQuMiB0ZXJtY2FwIGltcGxlbWVudGF0aW9ucyAoc2VlCisgICAgICAgICAgbm90ZSBmb3IgPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3Q5ODA3MjUiPjk4MDcyNTwvYT4pLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKworICAgIDxsaT5IaWdoLWxldmVsIGludGVyZmFjZXMKKworICAgICAgPHVsPgorICAgICAgICA8bGk+CisgICAgICAgICAgPHA+bW9kaWZ5IGludGVybmFsIHJlY3Vyc2lvbiBpbiA8Y29kZT53Z2V0Y2g8L2NvZGU+IHdoaWNoCisgICAgICAgICAgaGFuZGxlcyBjb29rZWQgbW9kZSB0byBjaGVjayBpZiB0aGUgY2FsbCB0bworICAgICAgICAgIDxjb2RlPndnZXRuc3RyPC9jb2RlPiByZXR1cm5lZCBhbiBlcnJvci4gVGhpcyBjYW4gaGFwcGVuCisgICAgICAgICAgd2hlbiBib3RoIDxjb2RlPm5vY2JyZWFrPC9jb2RlPiBhbmQgPGNvZGU+bm9kZWxheTwvY29kZT4KKyAgICAgICAgICBhcmUgc2V0LCBmb3IgaW5zdGFuY2UgKHNlZSBub3RlIGZvciA8YSBocmVmPQorICAgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk2MDQxOCI+OTYwNDE4PC9hPikuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5hZGQgYSBjaGVjayBpbiBpbnRlcm5hbCBmdW5jdGlvbgorICAgICAgICAgIDxjb2RlPndhZGRjaF9ub3N5bmM8L2NvZGU+IHRvIGVuc3VyZSB0aGF0IHRhYiBjaGFyYWN0ZXJzCisgICAgICAgICAgYXJlIHRyZWF0ZWQgYXMgY29udHJvbCBjaGFyYWN0ZXJzOyBzb21lIGJyb2tlbiBsb2NhbGVzCisgICAgICAgICAgY2xhaW0gdGhleSBhcmUgcHJpbnRhYmxlLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+bW9kaWZ5IG1lbnUgbGlicmFyeSB0byBlbnN1cmUgdGhhdCBhIG1lbnUncyB0b3Atcm93IGlzCisgICAgICAgICAgYWRqdXN0ZWQgYXMgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGl0ZW0gaXMgb24KKyAgICAgICAgICB0aGUgc2NyZWVuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD5maXggc3BlY2lhbCBjYXNlIHdoZXJlIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXIKKyAgICAgICAgICBvdmVyd3JpdGVzIGEgc2luZ2xlLSB3aWR0aCBjaGFyYWN0ZXIgaW4gdGhlIGZpcnN0CisgICAgICAgICAgY29sdW1uLjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDM+PGEgbmFtZT0iaDMtY29uZmlnLWNvbmZpZyIgaWQ9CisgICJoMy1jb25maWctY29uZmlnIj5Db25maWd1cmF0aW9uIGNoYW5nZXM8L2E+PC9oMz4KKworICA8aDQ+PGEgbmFtZT0iaDQtY29uZmlnLW1ham9yIiBpZD0iaDQtY29uZmlnLW1ham9yIj5NYWpvcgorICBjaGFuZ2VzPC9hPjwvaDQ+CisKKyAgPHA+VGhlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IDYuMCBjb25maWd1cmUgc2NyaXB0CisgIG1ha2VzIGNoYW5nZXMgdG8gdGhlIDxlbT5kZWZhdWx0PC9lbT4gdmFsdWUgb2Ygc2V2ZXJhbCBjb25maWd1cmUKKyAgb3B0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSA8Y29kZT4tLXdpdGgtYWJpLXZlcnNpb248L2NvZGU+IG9wdGlvbgorICAoaS5lLiwgd2hldGhlciBpdHMgdmFsdWUgaXMgJmxkcXVvOzUmcmRxdW87IG9yCisgICZsZHF1bzs2JnJkcXVvOyk6PC9wPgorCisgIDxkbD4KKyAgICA8ZHQ+PGNvZGU+LS1lbmFibGUtY29uc3Q8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPkZlYXR1cmUgaW50cm9kdWNlZCBpbiA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0OTcwNDA1Ij45NzA0MDU8L2E+CisgICAgICBzdXBwb3J0cyB0aGUgdXNlIG9mIDxjb2RlPmNvbnN0PC9jb2RlPiB3aGVyZSBYL09wZW4gQ3Vyc2VzCisgICAgICBzaG91bGQgaGF2ZSwgYnV0IGRpZCBub3QuIE5ldEJTRCBjdXJzZXMgZG9lcyBzb21ldGhpbmcKKyAgICAgIHNpbWlsYXIgd2l0aCA8Y29kZT5jb25zdDwvY29kZT4uPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1lbmFibGUtZXh0LWNvbG9yczwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+RXh0ZW5kcyB0aGUgPGNvZGU+Y2NoYXJfdDwvY29kZT4gc3RydWN0dXJlIHRvIGFsbG93IG1vcmUKKyAgICAgIHRoYW4gMTYgY29sb3JzIHRvIGJlIGVuY29kZWQuIFRoaXMgYXBwbGllcyBvbmx5IHRvIHRoZQorICAgICAgd2lkZS1jaGFyYWN0ZXIgKDxjb2RlPi0tZW5hYmxlLXdpZGVjPC9jb2RlPikKKyAgICAgIGNvbmZpZ3VyYXRpb24uPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1lbmFibGUtZXh0LW1vdXNlPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5Nb2RpZmllcyB0aGUgZW5jb2Rpbmcgb2YgbW91c2Ugc3RhdGUgdG8gbWFrZSByb29tIGZvciBhCisgICAgICA1dGggbW91c2UgYnV0dG9uLiBUaGF0IGFsbG93cyBvbmUgdG8gdXNlIG5jdXJzZXMgd2l0aCBhIHdoZWVsCisgICAgICBtb3VzZSB3aXRoIHh0ZXJtIG9yIHNpbWlsYXIgWCB0ZXJtaW5hbCBlbXVsYXRvcnMuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1lbmFibGUtZXh0LXB1dHdpbjwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+TW9kaWZpZXMgdGhlIGZpbGUtZm9ybWF0IHdyaXR0ZW4gYnkgPGNvZGU+cHV0d2luPC9jb2RlPiB0bworICAgICAgdXNlIHByaW50YWJsZSB0ZXh0IHJhdGhlciB0aGFuIGJpbmFyeSBmaWxlcywgYWxsb3dpbmcKKyAgICAgIDxjb2RlPmdldHdpbjwvY29kZT4gdG8gcmVhZCBzY3JlZW4gZHVtcHMgd3JpdHRlbiBieQorICAgICAgZGlmZmVyZW50bHktY29uZmlndXJlZCBuY3Vyc2VzIGxpYnJhcmllcy4gVGhlIGV4dGVuZGVkCisgICAgICA8Y29kZT5nZXR3aW48L2NvZGU+IGNhbiBzdGlsbCByZWFkIGJpbmFyeSBzY3JlZW4gZHVtcHMgZnJvbQorICAgICAgdGhlIDxlbT5zYW1lPC9lbT4gY29uZmlndXJhdGlvbiBvZiBuY3Vyc2VzLiBUaGlzIGRvZXMgbm90CisgICAgICBjaGFuZ2UgdGhlIEFCSSAodGhlIGJpbmFyeSBpbnRlcmZhY2Ugc2VlbiBieSBjYWxsaW5nCisgICAgICBhcHBsaWNhdGlvbnMpLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0tZW5hYmxlLWludGVyb3A8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPk1vZGlmaWVzIHRoZSA8Y29kZT5GSUVMRFRZUEU8L2NvZGU+IHN0cnVjdHVyZSB1c2VkIGZvciB0aGUKKyAgICAgIGZvcm0gbGlicmFyeSB0byBtYWtlIGl0IG1vcmUgZ2VuZXJpYy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWVuYWJsZS1scDY0PC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5BbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gZGVmaW5lIDxjb2RlPl9MUDY0PC9jb2RlPiB0bworICAgICAgZGVjbGFyZSA8Y29kZT5jaHR5cGU8L2NvZGU+IGFuZCA8Y29kZT5tbWFza190PC9jb2RlPiBhcworICAgICAgc2ltcGx5ICZsZHF1bzs8Y29kZT51bnNpZ25lZDwvY29kZT4mcmRxdW87IHJhdGhlciB0aGFuIHRoZQorICAgICAgY29uZmlndXJlZCB0eXBlcyB1c2luZyB0aGUgPGNvZGU+LS13aXRoLWNodHlwZTwvY29kZT4gYW5kCisgICAgICA8Y29kZT4tLXdpdGgtbW1hc2tfdDwvY29kZT4gb3B0aW9ucy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLWVuYWJsZS1zcC1mdW5jczwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+Q29tcGlsZS1pbiBzdXBwb3J0IGZvciBleHRlbmRlZCBmdW5jdGlvbnMgd2hpY2ggYWNjZXB0IGEKKyAgICAgIFNDUkVFTiBwb2ludGVyLCByZWR1Y2luZyB0aGUgbmVlZCBmb3IganVnZ2xpbmcgdGhlIGdsb2JhbCBTUAorICAgICAgdmFsdWUgd2l0aCA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCNoMy1zZXRfdGVybSI+CisgICAgICBzZXRfdGVybTwvYT4gYW5kIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sI2gzLWRlbHNjcmVlbiI+CisgICAgICBkZWxzY3JlZW48L2E+LjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC1jaHR5cGU9dWludDMyX3Q8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPk1ha2VzIDxjb2RlPmNodHlwZTwvY29kZT4gZXhwbGljaXRseSBhIDMyLWJpdCB1bnNpZ25lZAorICAgICAgdmFsdWUuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS13aXRoLW1tYXNrX3Q9dWludDMyX3Q8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPk1ha2VzIDxjb2RlPm1tYXNrX3Q8L2NvZGU+IGV4cGxpY2l0bHkgYSAzMi1iaXQgdW5zaWduZWQKKyAgICAgIHZhbHVlLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC10cGFybS1hcmc9aW50cHRyX3Q8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPlgvT3BlbiBDdXJzZXMgZGVjbGFyZXMgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sI2gzLUZvcm1hdHRpbmctT3V0cHV0Ij4KKyAgICAgIHRwYXJtPC9hPiB1c2luZyA8Y29kZT5sb25nPC9jb2RlPiBmb3IgZWFjaCBvZiB0aGUgcGFyYW1ldGVycworICAgICAgYXNpZGUgZnJvbSB0aGUgZm9ybWF0dGluZyBzdHJpbmcsIHByZXN1bWluZyB0aGF0CisgICAgICA8Y29kZT5sb25nPC9jb2RlPiBhbmQgPGNvZGU+Y2hhcio8L2NvZGU+IGFyZSB0aGUgc2FtZSBzaXplLgorICAgICAgVGhpcyBjb25maWd1cmUgb3B0aW9uIHVzZXMgPGNvZGU+aW50cHRyX3Q8L2NvZGU+IHdoaWNoCisgICAgICBwcm92aWRlcyBhIGJldHRlciBndWFyYW50ZWUgb2YgdGhlIHNpemVzLjwvcD4KKyAgICA8L2RkPgorICA8L2RsPgorCisgIDxwPlRoZSBjb25maWd1cmUgc2NyaXB0IG5vIGxvbmdlciBjaGVja3MgZm9yIGFudGlxdWUgY29tcGlsZXJzOworICA8Y29kZT5jODk8L2NvZGU+IGlzIGFzc3VtZWQgYXMgYSBtaW5pbXVtLiBUaGVyZSBhcmUgYSBmZXcKKyAgZmVhdHVyZXMgZnJvbSBsYXRlciByZXZpc2lvbnMgd2hpY2ggYXJlIHVzZWQgd2hlbiBhdmFpbGFibGUuIFRoZQorICBjb25maWd1cmUgc2NyaXB0IG1ha2VzIGNoZWNrcyB0byB0dXJuIG9uIHVzZWZ1bCB3YXJuaW5ncyBmcm9tCisgIGNsYW5nLCBnY2MgYW5kIGljYy4gWW91IHNob3VsZCBiZSBhYmxlIHRvIGJ1aWxkIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiA2LjAgd2l0aCBhbnkgb2YgdGhlIGN1cnJlbnQgKG9yIG5vdCBzbworICBjdXJyZW50KSBDIGNvbXBpbGVycyBhdmFpbGFibGUgaW4gMjAxNS48L3A+CisKKyAgPHA+VGhlIGNvbmZpZ3VyZSBzY3JpcHQsIGJ5IHRoZSB3YXksIG1ha2VzIGNoYW5nZXMgd2hpY2ggZG8gbm90CisgIHdvcmsgd2l0aCBzeXN0ZW1zIHdob3NlIDxjb2RlPi9iaW4vc2g8L2NvZGU+IGlzIG5vbi1QT1NJWC4gVGhpcworICBtYWlubHkgYWZmZWN0cyBTb2xhcmlzICh0aGUgb3RoZXIgdmVuZG9yIDxlbSBjbGFzcz0KKyAgInNtYWxsLWNhcHMiPnVuaXg8L2VtPiBzeXN0ZW1zIGhhdmUgZm9sbG93ZWQgdGhlIFBPU0lYIGd1aWRlbGluZXMKKyAgZm9yIHRoZSBwYXN0IHR3ZW50eSB5ZWFycykuIElmIHlvdSBtdXN0IGJ1aWxkIG9uIFNvbGFyaXMsIGl0cworICA8YSBocmVmPQorICAiaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9jZC9FMTkyNTMtMDEvaHRtbC84MTctMDU1Mi9maGtweS5odG1sIj54cGc0PC9hPgorICBiaW5hcmllcyBzdWZmaWNlLCBlLmcuLDwvcD4KKworICA8YmxvY2txdW90ZSBjbGFzcz0iY29kZS1ibG9jayI+CisgICAgPCEtLXt7YXRyMmh0bWwtLT4KKworICAgIDxwIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IDEwcHQ7Ij4KKyAgICA8Zm9udCBjb2xvcj0iIzgwMDAwMCI+IyEvYmluL3NoPC9mb250Pjxicj4KKyAgICA8Zm9udCBjb2xvcj0iIzAwODA4MCI+V0hBVDwvZm9udD49PHN0cm9uZz48ZW0+PGZvbnQgY29sb3I9CisgICAgIiM4MDAwMDAiPmA8L2ZvbnQ+PC9lbT48L3N0cm9uZz5ob3N0bmFtZXxzZWQmbmJzcDstZSZuYnNwOzxmb250IGNvbG9yPSIjODAwMDgwIj4ncy9cLi4qLy8nPC9mb250PjxzdHJvbmc+PGVtPjxmb250IGNvbG9yPSIjODAwMDAwIj5gPC9mb250PjwvZW0+PC9zdHJvbmc+PGJyPgorCisgICAgPGZvbnQgY29sb3I9IiMwMDgwODAiPk9VVDwvZm9udD49Y29uZmlndXJlLm91dDxicj4KKyAgICA8c3Ryb25nPjxmb250IGNvbG9yPQorICAgICIjMDAwMDgwIj5jYXQ8L2ZvbnQ+PC9zdHJvbmc+Jm5ic3A7Jmd0OyZndDs8Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+JE9VVDwvZm9udD4mbmJzcDs8Zm9udCBjb2xvcj0KKyAgICAiIzgwMDA4MCI+Jmx0OyZsdDtFT0YvPC9mb250Pjxmb250IGNvbG9yPSIjODAwMDgwIj48YnI+CisgICAgKiombmJzcDs8L2ZvbnQ+PHN0cm9uZz48ZW0+PGZvbnQgY29sb3I9CisgICAgIiM4MDAwMDAiPmA8L2ZvbnQ+PC9lbT48L3N0cm9uZz5kYXRlPHN0cm9uZz48ZW0+PGZvbnQgY29sb3I9CisgICAgIiM4MDAwMDAiPmA8L2ZvbnQ+PC9lbT48L3N0cm9uZz48Zm9udCBjb2xvcj0iIzgwMDA4MCI+PGJyPgorICAgICoqJm5ic3A7bm9kZTombmJzcDs8L2ZvbnQ+PGZvbnQgY29sb3I9CisgICAgIiMwMDgwODAiPiRXSEFUPC9mb250Pjxmb250IGNvbG9yPSIjODAwMDgwIj48YnI+CisgICAgKiombmJzcDt1c2VyOiZuYnNwOzwvZm9udD48c3Ryb25nPjxlbT48Zm9udCBjb2xvcj0KKyAgICAiIzgwMDAwMCI+YDwvZm9udD48L2VtPjwvc3Ryb25nPmlkPHN0cm9uZz48ZW0+PGZvbnQgY29sb3I9CisgICAgIiM4MDAwMDAiPmA8L2ZvbnQ+PC9lbT48L3N0cm9uZz48Zm9udCBjb2xvcj0iIzgwMDA4MCI+PGJyPgorICAgICoqJm5ic3A7Y29uZjombmJzcDskKjxicj4KKyAgICBFT0YvPC9mb250Pjxicj4KKyAgICAmbmJzcDs8YnI+CisgICAgPGZvbnQgY29sb3I9IiMwMDgwODAiPlNIRUxMPC9mb250Pj0vYmluL3NoPGJyPgorICAgIDxzdHJvbmc+PGZvbnQgY29sb3I9CisgICAgIiMwMDAwODAiPmlmPC9mb250Pjwvc3Ryb25nPiZuYnNwOzxzdHJvbmc+PGZvbnQgY29sb3I9CisgICAgIiMwMDAwODAiPnRlc3Q8L2ZvbnQ+PC9zdHJvbmc+Jm5ic3A7LWYmbmJzcDsvdXNyL3hwZzQvYmluL3NoPGJyPgorCisgICAgPHN0cm9uZz48Zm9udCBjb2xvcj0iIzAwMDA4MCI+dGhlbjwvZm9udD48L3N0cm9uZz48YnI+CisgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGZvbnQgY29sb3I9CisgICAgIiMwMDgwODAiPkNPTkZJR19TSEVMTDwvZm9udD49L3Vzci94cGc0L2Jpbi9zaDxicj4KKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8c3Ryb25nPjxmb250IGNvbG9yPSIjMDAwMDgwIj5leHBvcnQ8L2ZvbnQ+PC9zdHJvbmc+Jm5ic3A7Q09ORklHX1NIRUxMPGJyPgorCisgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGZvbnQgY29sb3I9CisgICAgIiMwMDgwODAiPlNIRUxMPC9mb250Pj08Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+JENPTkZJR19TSEVMTDwvZm9udD48YnI+CisgICAgPHN0cm9uZz48Zm9udCBjb2xvcj0iIzAwMDA4MCI+Zmk8L2ZvbnQ+PC9zdHJvbmc+PGJyPgorICAgICZuYnNwOzxicj4KKyAgICBybSZuYnNwOy1mJm5ic3A7Y29uZmlnLnN0YXR1cyZuYnNwO2NvbmZpZy5jYWNoZTxicj4KKyAgICA8Zm9udCBjb2xvcj0iIzAwODA4MCI+VE9QPC9mb250Pj08Zm9udCBjb2xvcj0KKyAgICAiIzAwODA4MCI+JEhPTUU8L2ZvbnQ+Lzxmb250IGNvbG9yPSIjMDA4MDgwIj4kV0hBVDwvZm9udD48YnI+CisgICAgPGZvbnQgY29sb3I9CisgICAgIiMwMDgwODAiPiRTSEVMTDwvZm9udD4mbmJzcDsuL2NvbmZpZ3VyZSZuYnNwOy0tdmVyYm9zZSZuYnNwO1w8YnI+CisKKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDstLWRpc2FibGUtZWNobyZuYnNwO1w8YnI+CisKKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDstLWRpc2FibGUtb3ZlcndyaXRlJm5ic3A7XDxicj4KKworICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0tZW5hYmxlLXdhcm5pbmdzJm5ic3A7XDxicj4KKworICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy0td2l0aC13YXJuaW5ncyZuYnNwO1w8YnI+CisKKyAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDstLXByZWZpeD08Zm9udCBjb2xvcj0iIzAwODA4MCI+JFRPUDwvZm9udD4mbmJzcDs8Zm9udCBjb2xvcj0iIzAwODA4MCI+JCo8L2ZvbnQ+Jm5ic3A7PHN0cm9uZz48Zm9udCBjb2xvcj0iIzAwODA4MCI+MjwvZm9udD48L3N0cm9uZz4mZ3Q7JmFtcDs8c3Ryb25nPjxmb250IGNvbG9yPSIjMDA4MDgwIj4xPC9mb250Pjwvc3Ryb25nPiZuYnNwO3wmbmJzcDt0ZWUmbmJzcDstYSZuYnNwOzxmb250IGNvbG9yPSIjMDA4MDgwIj4kT1VUPC9mb250Pjxicj4KKworICAgIDwhLS1hdHIyaHRtbH19LS0+PC9wPgorICA8L2Jsb2NrcXVvdGU+CisKKyAgPHA+T3RoZXIgbWFqb3IgY2hhbmdlcyB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBpbmNsdWRlOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+QUJJIDYgaXMgbm93IHRoZSBkZWZhdWx0LCBpbnRlbmRpbmcgdGhhdCB0aGUgZXhpc3RpbmcgQUJJCisgICAgICA1IHNob3VsZCBidWlsZCBhcyBiZWZvcmUgdXNpbmcgdGhlCisgICAgICAmbGRxdW87PGNvZGU+LS13aXRoLWFiaS12ZXJzaW9uPTU8L2NvZGU+JnJkcXVvOyBvcHRpb24uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCA8Y29kZT4tLXdpdGgtZXh0cmEtc3VmZml4PC9jb2RlPiBvcHRpb24gdG8gaGVscCB3aXRoCisgICAgICBpbnN0YWxsaW5nIG5vbmNvbmZsaWN0aW5nIG5jdXJzZXM2IHBhY2thZ2VzLCBlLmcuLCBhdm9pZGluZworICAgICAgaGVhZGVyLSBhbmQgbGlicmFyeS1jb25mbGljdHMuPC9wPgorCisgICAgICA8cD48c3Ryb25nPk5PVEU6PC9zdHJvbmc+IGFzIGEgc2lkZS1lZmZlY3QsIHRoaXMgcmVuYW1lczwvcD4KKworICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgIDxwPjxjb2RlPmFkYWN1cnNlcy1jb25maWc8L2NvZGU+IHRvCisgICAgICAgIDxjb2RlPmFkYWN1cnNlczUtY29uZmlnPC9jb2RlPiBhbmQ8YnI+CisgICAgICAgIDxjb2RlPmFkYWN1cnNlc3ctY29uZmlnPC9jb2RlPiB0bworICAgICAgICA8Y29kZT5hZGFjdXJzZXN3NS1jb25maWc8L2NvZGU+PC9wPgorICAgICAgPC9ibG9ja3F1b3RlPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY29uZmlndXJlIHNjcmlwdCBsb29rcyBmb3IgZ25hdGdjYyBpZiB0aGUgQWRhOTUKKyAgICAgIGJpbmRpbmcgaXMgYnVpbHQsIGluIHByZWZlcmVuY2UgdG8gdGhlIGRlZmF1bHQgZ2NjL2NjLiBUaGUKKyAgICAgIHNjcmlwdCBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgQWRhOTUgYmluZGluZyBpcyBidWlsdCB3aXRoIHRoZQorICAgICAgbGV2ZWwgb2Ygb3B0aW1pemF0aW9uIGFzIHRoZSBDIGxpYnJhcmllcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgc2NyaXB0IGNhcHR1cmVzIGRlZmluZSdzIHJlbGF0ZWQgdG8KKyAgICAgIC1EX1hPUEVOX1NPVVJDRSBmcm9tIHRoZSBjb25maWd1cmUgY2hlY2sgYW5kIGFkZHMgdGhvc2UgdG8KKyAgICAgIHRoZSAqLWNvbmZpZyBhbmQgKi5wYyBmaWxlcywgdG8gc2ltcGxpZnkgdXNlIGZvciB0aGUKKyAgICAgIHdpZGUtY2hhcmFjdGVyIGxpYnJhcmllcy48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDQ+PGEgbmFtZT0iaDQtY29uZmlnLW9wdGlvbnMiIGlkPQorICAiaDQtY29uZmlnLW9wdGlvbnMiPkNvbmZpZ3VyYXRpb24gb3B0aW9uczwvYT48L2g0PgorCisgIDxwPlRoZXJlIGFyZSBzZXZlcmFsIG5ldyAob3IgZXh0ZW5kZWQpIGNvbmZpZ3VyZSBvcHRpb25zOjwvcD4KKworICA8ZGw+CisgICAgPGR0Pjxjb2RlPi0tZGlzYWJsZS1kYi1pbnN0YWxsPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5EbyBub3QgaW5zdGFsbCB0aGUgdGVybWluYWwgZGF0YWJhc2UuIFRoaXMgaXMgdXNlZCB0byBvbWl0CisgICAgICBmZWF0dXJlcyBmb3IgcGFja2FnZXMsIGFzIGRvbmUgd2l0aAorICAgICAgPGNvZGU+LS13aXRob3V0LXByb2dzPC9jb2RlPi4gVGhlIG9wdGlvbiBzaW1wbGlmaWVzIGJ1aWxkaW5nCisgICAgICBjcm9zcy1jb21waWxlIHN1cHBvcnQgcGFja2FnZXMuPC9wPgorICAgIDwvZGQ+CisKKyAgICA8ZHQ+PGNvZGU+LS1kaXNhYmxlLWduYXQtcHJvamVjdHM8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPlRoaXMgb3B0aW9uIGlzIHVzZWQgZm9yIHJlZ3Jlc3Npb24gdGVzdGluZzwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0tZGlzYWJsZS1saWItc3VmZml4ZXM8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPlN1cHByZXNzIHRoZSAmbGRxdW87dyZyZHF1bzssICZsZHF1bzt0JnJkcXVvOyBvcgorICAgICAgJmxkcXVvO3R3JnJkcXVvOyBzdWZmaXhlcyB3aGljaCBub3JtYWxseSB3b3VsZCBiZSBhZGRlZCB0bworICAgICAgdGhlIGxpYnJhcnkgbmFtZXMgZm9yIHRoZSA8Y29kZT4tLWVuYWJsZS13aWRlYzwvY29kZT4gYW5kCisgICAgICA8Y29kZT4tLXdpdGgtcHRocmVhZDwvY29kZT4gb3B0aW9ucy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLXdpdGgtY3h4LXNoYXJlZDwvY29kZT48L2R0PgorCisgICAgPGRkPgorICAgICAgPHA+V2hlbiA8Y29kZT4tLXdpdGgtc2hhcmVkPC9jb2RlPiBpcyBzZXQsIGJ1aWxkIGxpYm5jdXJzZXMrKworICAgICAgYXMgYSBzaGFyZWQgbGlicmFyeS4gVGhpcyBpbXBsaWNpdGx5IHJlbGllcyB1cG9uIGJ1aWxkaW5nCisgICAgICB3aXRoIGdjYy9nKyssIHNpbmNlIG90aGVyIGNvbXBpbGVyIHN1aXRlcyBtYXkgaGF2ZQorICAgICAgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSBzaGFyZWQgbGlicmFyaWVzIGFyZSBidWlsdC4gbGlidG9vbCBieQorICAgICAgdGhlIHdheSBoYXMgc2ltaWxhciBsaW1pdGF0aW9ucy48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLXdpdGgtaGFzaGVkLWRiPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5FeHRlbmRlZCB0aGlzIGNvbmZpZ3VyZSBvcHRpb24gdG8gc2ltcGxpZnkgYnVpbGRpbmcgd2l0aAorICAgICAgZGlmZmVyZW50IHZlcnNpb25zIG9mIEJlcmtlbGV5IGRhdGFiYXNlIHVzaW5nIEZyZWVCU0QKKyAgICAgIHBvcnRzLjwvcD4KKyAgICA8L2RkPgorCisgICAgPGR0Pjxjb2RlPi0td2l0aC1wYy1zdWZmaXg8L2NvZGU+PC9kdD4KKworICAgIDxkZD4KKyAgICAgIDxwPklmICIucGMiIGZpbGVzIGFyZSBpbnN0YWxsZWQsIG9wdGlvbmFsbHkgYWRkIGEgc3VmZml4IHRvCisgICAgICB0aGUgZmlsZXMgYW5kIGNvcnJlc3BvbmRpbmcgcGFja2FnZSBuYW1lcyB0byBzZXBhcmF0ZSB1bnVzdWFsCisgICAgICBjb25maWd1cmF0aW9ucy4gSWYgbm8gb3B0aW9uIHZhbHVlIGlzIGdpdmVuIChvciBpZiBpdCBpcworICAgICAgIm5vbmUiKSwgbm8gc3VmZml4IGlzIGFkZGVkLiBUaGlzIG9wdGlvbiBpcyB1c2VkIGluIHRoZSB0ZXN0CisgICAgICBwYWNrYWdlIGZvciBuY3Vyc2VzNi48L3A+CisgICAgPC9kZD4KKworICAgIDxkdD48Y29kZT4tLXdpdGgteHRlcm0ta2JzPC9jb2RlPjwvZHQ+CisKKyAgICA8ZGQ+CisgICAgICA8cD5Db25maWd1cmUgeHRlcm0ncyB0ZXJtaW5mbyBlbnRyaWVzIHRvIHVzZSBlaXRoZXIgQlMKKyAgICAgICg8Y29kZT5eSDwvY29kZT4sIGkuZS4sIEFTQ0lJIGJhY2tzcGFjZSkgb3IgREVMCisgICAgICAoPGNvZGU+Xj88L2NvZGU+LCBvciAxMjcpLjwvcD4KKyAgICA8L2RkPgorICA8L2RsPgorCisgIDxoMz48YSBuYW1lPSJoMy1wb3J0YWJpbGl0eSIgaWQ9CisgICJoMy1wb3J0YWJpbGl0eSI+UG9ydGFiaWxpdHk8L2E+PC9oMz4KKworICA8aDQ+PGEgbmFtZT0iaDQtcG9ydC1taW5ndyIgaWQ9Img0LXBvcnQtbWluZ3ciPk1pbkdXPC9hPjwvaDQ+CisKKyAgPHA+TW9zdCBvZiB0aGUgcG9ydGFiaWxpdHktcmVsYXRlZCB3b3JrIHNpbmNlIDxhIGhyZWY9CisgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9hbm5vdW5jZS01LjkuaHRtbCI+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj4KKyAgbmN1cnNlczwvZW0+IDUuOTwvYT4gZXh0ZW5kZWQgYW5kIGltcHJvdmVkIHRoZSBNaW5HVyBwb3J0CisgIGludHJvZHVjZWQgaW4gPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL2Fubm91bmNlLTUuOC5odG1sIj48ZW0gY2xhc3M9InNtYWxsLWNhcHMiPgorICBuY3Vyc2VzPC9lbT4gNS44PC9hPi48L3A+CisKKyAgPHA+VGhlIE1pbkdXIHBvcnQgY2FuIGJlIHJlYWRpbHkgY3Jvc3MtY29tcGlsZWQ6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCBjb25maWd1cmUgc2NyaXB0IHRvIGFsbG93IGNyZWF0aW5nIGRsbCdzIGZvcgorICAgICAgTWluR1cgd2hlbiBjcm9zcy1jb21waWxpbmcuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5lbmZvcmNlZCBXaW5kb3dzLXN0eWxlIHBhdGgtc2VwYXJhdG9yIGlmCisgICAgICBjcm9zcy1jb21waWxpbmcsPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCBzY3JpcHRzIGZvciB0ZXN0LWJ1aWxkcyBvZiBjcm9zcy1jb21waWxlZCBwYWNrYWdlcworICAgICAgZm9yIG5jdXJzZXM2IHRvIE1pbkdXLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+YWRkZWQgcGMtZmlsZXMgdG8gdGhlIE1pbkdXIGNyb3NzLWNvbXBpbGluZworICAgICAgdGVzdC1wYWNrYWdlcy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIHNjcmlwdCBmb3IgYnVpbGRpbmcgdGVzdC1wYWNrYWdlcyBvZiBiaW5hcmllcworICAgICAgY3Jvc3MtY29tcGlsZWQgdG8gTWluR1cgdXNpbmcgTlNJUy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZGVkIDxjb2RlPm5jX21pbmd3Lmg8L2NvZGU+IHRvIGluc3RhbGxlZCBoZWFkZXJzIGZvcgorICAgICAgTWluR1cgcG9ydDsgdGhpcyBpcyBuZWVkZWQgZm9yIGNyb3NzLWNvbXBpbGluZyA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbCI+bmN1cnNlcy1leGFtcGxlczwvYT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5hZGRlZCB0ZXN0LXBhY2thZ2VzIGZvciBjcm9zcy1jb21waWxpbmcgbmN1cnNlcy1leGFtcGxlcworICAgICAgdXNpbmcgdGhlIE1pbkdXIHRlc3QtcGFja2FnZXMuPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+VGhlIE1pbkdXLXNwZWNpZmljIFdpbmRvd3MgZHJpdmVyIGFjY291bnRzIGZvciBzZXZlcmFsCisgIGNoYW5nZXM6PC9wPgorCisgIDx1bD4KKyAgICA8bGk+CisgICAgICA8cD53aWRlLWNoYXJhY3RlciBkaXNwbGF5IGlzIG1hZGUgdXNhYmxlIGJ5IHJlcGxhY2luZyBNaW5HVydzCisgICAgICBub24td29ya2luZyA8Y29kZT53Y3J0b21iPC9jb2RlPiBhbmQgPGNvZGU+d2N0b21iPC9jb2RlPgorICAgICAgZnVuY3Rpb25zLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+aW1wbGVtZW50ZWQgc29tZSBkaXNwbGF5IGZlYXR1cmVzOiA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2JlZXAuM3guaHRtbCI+YmVlcDwvYT4sCisgICAgICA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2JlZXAuM3guaHRtbCI+Zmxhc2g8L2E+LAorICAgICAgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCNoMy1jdXJzX3NldCI+CisgICAgICBjdXJzX3NldDwvYT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgZHJpdmVyIGhhbmRsZXMgcmVwYWludGluZyBvbiBlbmR3aW4vcmVmcmVzaAorICAgICAgY29tYmluYXRpb24uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5tb2RpZmllZCB0cmVhdG1lbnQgb2YgPGNvZGU+VEVSTTwvY29kZT4gdmFyaWFibGUgZm9yIE1pbkdXCisgICAgICBwb3J0IHRvIGFsbG93IGV4cGxpY2l0IHVzZSBvZiB0aGUgV2luZG93cyBjb25zb2xlIGRyaXZlciBieQorICAgICAgY2hlY2tpbmcgaWYgPGNvZGU+JFRFUk08L2NvZGU+IGlzIHNldCB0bworICAgICAgJmxkcXVvOzxjb2RlPiN3aW4zMmNvbnNvbGU8L2NvZGU+JnJkcXVvOyBvciBhbiBhYmJyZXZpYXRpb24KKyAgICAgIG9mIHRoYXQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgV2luZG93cyBkcml2ZXIgYWxzbyBtYXRjaGVzIHRoZSBzcGVjaWFsCisgICAgICA8Y29kZT5URVJNPC9jb2RlPiB2YWx1ZSAmbGRxdW87dW5rbm93biZyZHF1bzs8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBkcml2ZXIgbm93IHJldHVybnMgY2hhcmFjdGVycyBmb3Igc3BlY2lhbCBrZXlzLCAobGlrZQorICAgICAgPGNvZGU+YW5zaS5zeXM8L2NvZGU+IGRvZXMpLCB3aGVuIGtleXBhZCBtb2RlIGlzIG9mZiwgcmF0aGVyCisgICAgICB0aGFuIHJldHVybmluZyBub3RoaW5nIGF0IGFsbC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBkcml2ZXIgY2hlY2tzIGEgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL25jdXJzZXMuM3guaHRtbCNoMy1OQ1VSU0VTX0NPTlNPTEUyIj4KKyAgICAgIE5DVVJTRVNfQ09OU09MRTI8L2E+IHRvIG9wdGlvbmFsbHkgd29yayBhcm91bmQgYSBkZWZpY2llbmN5CisgICAgICBpbiA8Y29kZT5Db25zb2xlMjwvY29kZT4gKGFuZCBpdHMgZGVzY2VuZGVudAorICAgICAgPGNvZGU+Q29uc29sZVo8L2NvZGU+KSB3aGljaCBoYW5nIHdoZW4gYW4gYXBwbGljYXRpb24gY3JlYXRlcworICAgICAgYSBjb25zb2xlIGJ1ZmZlci48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5GaW5hbGx5LCB0aGVyZSBhcmUgb3RoZXIgaW1wcm92ZW1lbnRzOjwvcD4KKworICA8dWw+CisgICAgPGxpPgorICAgICAgPHA+TWluR1cgaXMgb25lIG9mIHRoZSBjb25maWd1cmF0aW9ucyB3aGVyZSA8ZW0gY2xhc3M9CisgICAgICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGluc3RhbGxzIGJ5IGRlZmF1bHQgaW50byAvdXNyPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+Y29uZmlndXJhdGlvbiBmb3IgY3Jvc3MtY29tcGlsaW5nIHVzZXMgQUNfQ0hFQ0tfVE9PTFMgaW4KKyAgICBwcmVmZXJlbmNlIHRvIEFDX1BBVEhfUFJPR1Mgd2hlbiBzZWFyY2hpbmcgZm9yIG5jdXJzZXMqLWNvbmZpZywKKyAgICBlLmcuLCBpbiBBZGE5NS9jb25maWd1cmUgYW5kIHRlc3QvY29uZmlndXJlLjwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5leHRlbmQgV2luZG93cyBzdXBwb3J0IHRvIHdvcmsgd2l0aCBNU1lTMjs8L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnRoaXMgd29ya3Mgd2l0aCBhIHNjZW5hcmlvIHdoZXJlIHRoZXJlIGlzIGFuCisgICAgICAgICAgQU5TSS1lc2NhcGUgaGFuZGxlciBzdWNoIGFzIDxjb2RlPmFuc2ljb248L2NvZGU+IHJ1bm5pbmcKKyAgICAgICAgICBpbiB0aGUgY29uc29sZSB3aW5kb3cuPC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT53cmFwIDxjb2RlPmlzYXR0eTwvY29kZT4gY2FsbHMgd2l0aCBhIG1hY3JvLCBwcm92aWRlIGEKKyAgICAgICAgY29ycmVzcG9uZGluZyBzZXQgb2Ygc3VwcG9ydCByb3V0aW5lcyB0byBhZGRyZXNzCisgICAgICAgIGRpZmZlcmVuY2VzIGJldHdlZW4gTWluR1cgYW5kIE1TWVMyLjwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5lbnN1cmUgPGNvZGU+V0lOVkVSPC9jb2RlPiBpcyBkZWZpbmVkIGluIG1ha2VmaWxlcyByYXRoZXIKKyAgICAgIHRoYW4gdXNpbmcgaGVhZGVycy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZCBjaGVjayBmb3IgdGhlIDxjb2RlPmduYXRwcmVwPC9jb2RlPgorICAgICAgJmxkcXVvOzxjb2RlPi1UPC9jb2RlPiZyZHF1bzsgb3B0aW9uLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+d29yayBhcm91bmQgYSBidWcgaW50cm9kdWNlZCBieSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjA4Nzc2ODkvZ2NjLTQtOC0xLW1pbmdndy1kLW9wdGlvbi1kb2VzLW5vdC13b3JrLWFzLXVzdWFsIj4KKyAgICAgIGdjYyA0LjguMTwvYT4gaW4gTWluR1cgd2hpY2ggYnJlYWtzICJ0cmFjZSIgZmVhdHVyZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPmFkZCBhIGRyaXZlci1uYW1lIG1ldGhvZCB0byBlYWNoIG9mIHRoZSBkcml2ZXJzLjwvcD4KKyAgICA8L2xpPgorICA8L3VsPgorCisgIDxoND48YSBuYW1lPSJoNC1wb3J0LXN5c3RlbXMiIGlkPSJoNC1wb3J0LXN5c3RlbXMiPk90aGVyCisgIHBvcnRzPC9hPjwvaDQ+CisKKyAgPHA+VGhlc2UgY2hhbmdlcyBhZmZlY3QgY2VydGFpbiBwbGF0Zm9ybXMgKHBvcnRzKTo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgc2NyaXB0IGtub3dzIGhvdyB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzCisgICAgICB3aXRoIERyYWdvbkZseUJTRCBhbmQgSW50ZXJpeC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnN1cHBvcnQgZm9yIEFJWCBzaGFyZWQgbGlicmFyaWVzIGlzIGltcHJvdmVkLCB0ZXN0ZWQgd2l0aAorICAgICAgQUlYIDUuMywgNi4xIGFuZCA3LjEgd2l0aCBib3RoIGdjYyA0LjIuNCBhbmQgY2M6PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgc2hhcmVkLWxpYnJhcnkgc3VmZml4IGZvciBBSVggNSBhbmQgNiBpcyBub3cKKyAgICAgICAgICAiLnNvIjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIDxjb2RlPi1icnRsPC9jb2RlPiBvcHRpb24gaXMgdXNlZCB3aXRoIEFJWCA1LTc7IGl0CisgICAgICAgICAgaXMgbmVlZGVkIHRvIGxpbmsgd2l0aCB0aGUgc2hhcmVkIGxpYnJhcmllcy48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY29uZmlndXJlIDxjb2RlPi0tZW5hYmxlLXBjLWZpbGVzPC9jb2RlPiBvcHRpb24gdGFrZXMKKyAgICAgIGludG8gYWNjb3VudCB0aGUgPGEgaHJlZj0KKyAgICAgICJodHRwOi8vbGludXguZGllLm5ldC9tYW4vMS9wa2ctY29uZmlnIj48Y29kZT5QS0dfQ09ORklHX1BBVEg8L2NvZGU+PC9hPgorICAgICAgdmFyaWFibGUuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY29uZmlndXJlIG9wdGlvbiA8Y29kZT4tLXdpdGgtcGtnLWNvbmZpZy1saWJkaXI8L2NvZGU+CisgICAgICBwcm92aWRlcyBjb250cm9sIG92ZXIgdGhlIGFjdHVhbCBkaXJlY3RvcnkgaW50byB3aGljaAorICAgICAgcGMtZmlsZXMgYXJlIGluc3RhbGxlZC48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBidWlsZCBzY3JpcHRzIGFkZCBleHBsaWNpdCAtbHRpbmZvLCBldGMuLCB0byB0aGUKKyAgICAgIGdlbmVyYXRlZCAiLnBjIiBmaWxlIHdoZW4gPGNvZGU+bGQ8L2NvZGU+IG9wdGlvbgorICAgICAgJmxkcXVvOzxjb2RlPi0tYXMtbmVlZGVkPC9jb2RlPiZyZHF1bzsgaXMgdXNlZCwgb3Igd2hlbgorICAgICAgbmN1cnNlcyBhbmQgdGluZm8gYXJlIGluc3RhbGxlZCB3aXRob3V0IHVzaW5nIHJwYXRoLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+dGhlIGNvbmZpZ3VyZSBzY3JpcHQgZGlzYWxsb3dzIGNvbmZsaWN0aW5nIG9wdGlvbnMKKyAgICAgICZsZHF1bzs8Y29kZT4tLXdpdGgtdGVybWxpYjwvY29kZT4mcmRxdW87IGFuZAorICAgICAgJmxkcXVvOzxjb2RlPi0tZW5hYmxlLXRlcm0tZHJpdmVyPC9jb2RlPiZyZHF1bzsuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY2hlY2sgZm9yIG1pc3NpbmcgYysrIGNvbXBpbGVyIHRvIHdvcmsgd2hlbiBubyBlcnJvcgorICAgICAgaXMgcmVwb3J0ZWQsIGFuZCBubyB2YXJpYWJsZXMgc2V0IGlzIGltcHJvdmVkIChzZWUgbm90ZSBmb3IKKyAgICAgIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDAyMTIwNiI+MjAwMjEyMDY8L2E+KS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBtaXNjL2dlbl9lZGl0LnNoIHNjcmlwdCBzZWxlY3RzIGEgImxpbnV4IiBlbnRyeSB3aGljaAorICAgICAgd29ya3Mgd2l0aCB0aGUgY3VycmVudCBrZXJuZWwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgaXQgaXMKKyAgICAgIGFsd2F5cyAibGludXgzLjAiPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgdGVzdC9jb25maWd1cmUgc2NyaXB0IG1ha2VzIGl0IHNpbXBsZXIgdG8gb3ZlcnJpZGUKKyAgICAgIG5hbWVzIG9mIGN1cnNlcy1yZWxhdGVkIGxpYnJhcmllcywgdG8gaGVscCB3aXRoIGxpbmtpbmcgd2l0aAorICAgICAgcGRjdXJzZXMgaW4gTWluR1cgZW52aXJvbm1lbnQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD50aGUgY29uZmlndXJlLXNjcmlwdC9pZmRlZidzIGFsbG93IHRoZSBCU0QgT0xEX1RUWSBmZWF0dXJlCisgICAgICB0byBiZSBzdXBwcmVzc2VkIGlmIHRoZSB0eXBlIG9mIDxjb2RlPm9zcGVlZDwvY29kZT4gaXMKKyAgICAgIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIG9wdGlvbiA8Y29kZT4tLXdpdGgtb3NwZWVkPC9jb2RlPiB0byBub3QKKyAgICAgIGJlIGEgPGNvZGU+c2hvcnQ8L2NvZGU+LiBCeSBkZWZhdWx0LCBpdCBpcyBhCisgICAgICA8Y29kZT5zaG9ydDwvY29kZT4gZm9yIHRlcm1jYXAtY29tcGF0aWJpbGl0eS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBNS2xpYl9nZW4uc2ggc2NyaXB0IHdvcmtzIGFyb3VuZCBhIHJlY2VudCBjaGFuZ2UgaW4KKyAgICAgIGdjYyA1IChyZWxlYXNlZCA8YSBocmVmPQorICAgICAgImh0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTUvIj5taWQtMjAxNTwvYT4pIHdoaWNoIGVzc2VudGlhbGx5CisgICAgICBlbWl0cyBtdWx0aXBsZSA8Y29kZT4jbGluZTwvY29kZT4gc3RhdGVtZW50cyBmb3IgdGhlIHNhbWUKKyAgICAgIHBvc2l0aW9uIGluIGEgZmlsZS48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPnRoZSBjb25maWd1cmUgc2NyaXB0IHdvcmtzIHdpdGggTWluaXgzLjIgKHNlZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi9wb3J0YWJpbGl0eS10ZXN0Lmh0bWwiPm5vdGU8L2E+CisgICAgICBvbiBwb3J0YWJpbGl0eSk8L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPk9TLzIgcmVkdXg6PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgY29uZmlndXJlIHNjcmlwdCBzdXBwb3J0cyBPUy8yIGtMSUJDLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIDxjb2RlPi0td2l0aC1saWItcHJlZml4PC9jb2RlPiBvcHRpb24gYWxsb3dzCisgICAgICAgICAgY29uZmlndXJpbmcgZm9yIG9sZC9uZXcgZmxhdm9ycyBvZiBPUy8yIEVNWC48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5pbXByb3ZlZCBjb25maWd1cmUtc2NyaXB0IGNoZWNrcyBmb3IKKyAgICAgIDxjb2RlPl9YT1BFTl9TT1VSQ0U8L2NvZGU+OjwvcD4KKworICAgICAgPHVsPgorICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIGRlZmluaXRpb24gd29ya3Mgc3RhcnRpbmcgd2l0aCBTb2xhcmlzIDEwLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIGRlZmluaXRpb24gaXMgc3VwcHJlc3NlZCBmb3IgSVJJWDY0LCBzaW5jZSBpdHMKKyAgICAgICAgICBoZWFkZXIgZmlsZXMgaGF2ZSBhIGNvbmZsaWN0IHZlcnN1cworICAgICAgICAgIDxjb2RlPl9TR0lfU09VUkNFPC9jb2RlPi48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisgIDwvdWw+CisgIDxocj4KKworICA8aDI+PGEgbmFtZT0iaDItZmVhdHVyZXMiIGlkPSJoMi1mZWF0dXJlcyI+RmVhdHVyZXMgb2YgPGVtIGNsYXNzPQorICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPjwvaDI+CisKKyAgPHA+VGhlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IHBhY2thZ2UgaXMgZnVsbHkKKyAgdXB3YXJkLWNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gViBSZWxlYXNlIDQpIGN1cnNlczo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPkFsbCBvZiB0aGUgU1ZyNCBjYWxscyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgKGFuZCBhcmUKKyAgICAgIGRvY3VtZW50ZWQpLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gc3VwcG9ydHMgYWxsIG9mIHRoZQorICAgICAgZm9yIFNWcjQgY3Vyc2VzIGZlYXR1cmVzIGluY2x1ZGluZyBrZXlib2FyZCBtYXBwaW5nLCBjb2xvciwKKyAgICAgIGZvcm1zLWRyYXdpbmcgd2l0aCBBQ1MgY2hhcmFjdGVycywgYW5kIGF1dG9tYXRpYyByZWNvZ25pdGlvbgorICAgICAgb2Yga2V5cGFkIGFuZCBmdW5jdGlvbiBrZXlzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gcHJvdmlkZXMgdGhlc2UgU1ZyNAorICAgICAgYWRkLW9uIGxpYnJhcmllcyAobm90IHBhcnQgb2YgWC9PcGVuIEN1cnNlcyk6PC9wPgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKyAgICAgICAgICA8cD50aGUgcGFuZWxzIGxpYnJhcnksIHN1cHBvcnRpbmcgYSBzdGFjayBvZiB3aW5kb3dzIHdpdGgKKyAgICAgICAgICBiYWNraW5nIHN0b3JlLjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+dGhlIG1lbnVzIGxpYnJhcnksIHN1cHBvcnRpbmcgYSB1bmlmb3JtIGJ1dCBmbGV4aWJsZQorICAgICAgICAgIGludGVyZmFjZSBmb3IgbWVudSBwcm9ncmFtbWluZy48L3A+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpPgorICAgICAgICAgIDxwPnRoZSBmb3JtIGxpYnJhcnksIHN1cHBvcnRpbmcgZGF0YSBjb2xsZWN0aW9uIHRocm91Z2gKKyAgICAgICAgICBvbi1zY3JlZW4gZm9ybXMuPC9wPgorICAgICAgICA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4ncyB0ZXJtaW5hbCBkYXRhYmFzZSBpcworICAgICAgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHRoYXQgdXNlZCBieSBTVnI0IGN1cnNlcy48L3A+CisKKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPjxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IHN1cHBvcnRzCisgICAgICAgIHVzZXItZGVmaW5lZCBjYXBhYmlsaXRpZXMgd2hpY2ggaXQgY2FuIHNlZSwgYnV0IHdoaWNoIGFyZQorICAgICAgICBoaWRkZW4gZnJvbSBTVnI0IGN1cnNlcyBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlCisgICAgICAgIDxlbT5zYW1lPC9lbT4gdGVybWluYWwgZGF0YWJhc2UuPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+SXQgY2FuIGJlIG9wdGlvbmFsbHkgY29uZmlndXJlZCB0byBtYXRjaCB0aGUgZm9ybWF0CisgICAgICAgICAgdXNlZCBpbiByZWxhdGVkIHN5c3RlbXMgc3VjaCBhcyBBSVggYW5kIFRydTY0LjwvcD4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGk+CisgICAgICAgICAgPHA+QWx0ZXJuYXRpdmVseSwgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gY2FuCisgICAgICAgICAgYmUgY29uZmlndXJlZCB0byB1c2UgaGFzaGVkIGRhdGFiYXNlcyByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgICBkaXJlY3Rvcnkgb2YgZmlsZXMgdXNlZCBieSBTVnI0IGN1cnNlcy48L3A+CisgICAgICAgIDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gdXRpbGl0aWVzIGhhdmUKKyAgICAgIG9wdGlvbnMgdG8gYWxsb3cgeW91IHRvIGZpbHRlciB0ZXJtaW5mbyBlbnRyaWVzIGZvciB1c2Ugd2l0aAorICAgICAgbGVzcyBjYXBhYmxlIDxlbT5jdXJzZXM8L2VtPi88ZW0+dGVybWluZm88L2VtPiB2ZXJzaW9ucyBzdWNoCisgICAgICBhcyB0aGUgSFAvVVggYW5kIEFJWCBwb3J0cy48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gcGFja2FnZSBhbHNvIGhhcyBtYW55CisgIHVzZWZ1bCBleHRlbnNpb25zIG92ZXIgU1ZyNDo8L3A+CisKKyAgPHVsPgorICAgIDxsaT4KKyAgICAgIDxwPlRoZSBBUEkgaXMgOC1iaXQgY2xlYW4gYW5kIGJhc2UtbGV2ZWwgY29uZm9ybWFudCB3aXRoIHRoZQorICAgICAgWC9PUEVOIGN1cnNlcyBzcGVjaWZpY2F0aW9uLCBYU0kgY3Vyc2VzICh0aGF0IGlzLCBpdAorICAgICAgaW1wbGVtZW50cyBhbGwgQkFTRSBsZXZlbCBmZWF0dXJlcywgYW5kIG1vc3QgRVhURU5ERUQKKyAgICAgIGZlYXR1cmVzKS4gSXQgaW5jbHVkZXMgbWFueSBmdW5jdGlvbiBjYWxscyBub3Qgc3VwcG9ydGVkCisgICAgICB1bmRlciBTVnI0IGN1cnNlcyAoYnV0IHBvcnRhYmlsaXR5IG9mIGFsbCBjYWxscyBpcyBkb2N1bWVudGVkCisgICAgICBzbyB5b3UgY2FuIHVzZSB0aGUgU1ZyNCBzdWJzZXQgb25seSkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5Vbmxpa2UgU1ZyMyBjdXJzZXMsIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+CisgICAgICBjYW4gd3JpdGUgdG8gdGhlIHJpZ2h0bW9zdC1ib3R0b21tb3N0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGlmCisgICAgICB5b3VyIHRlcm1pbmFsIGhhcyBhbiBpbnNlcnQtY2hhcmFjdGVyIGNhcGFiaWxpdHkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5BZGE5NSBhbmQgQysrIGJpbmRpbmdzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+U3VwcG9ydCBmb3IgbW91c2UgZXZlbnQgcmVwb3J0aW5nIHdpdGggWCBXaW5kb3cgeHRlcm0gYW5kCisgICAgICBGcmVlQlNEIGFuZCBPUy8yIGNvbnNvbGUgd2luZG93cy48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkV4dGVuZGVkIG1vdXNlIHN1cHBvcnQgdmlhIEFsZXNzYW5kcm8gUnViaW5pJ3MgZ3BtCisgICAgICBwYWNrYWdlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+VGhlIGZ1bmN0aW9uIDxjb2RlPndyZXNpemU8L2NvZGU+IGFsbG93cyB5b3UgdG8gcmVzaXplCisgICAgICB3aW5kb3dzLCBwcmVzZXJ2aW5nIHRoZWlyIGRhdGEuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgZnVuY3Rpb24gPGNvZGU+dXNlX2RlZmF1bHRfY29sb3JzPC9jb2RlPiBhbGxvd3MgeW91IHRvCisgICAgICB1c2UgdGhlIHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xvcnMgZm9yIHRoZSBkZWZhdWx0IGNvbG9yIHBhaXIsCisgICAgICBhY2hpZXZpbmcgdGhlIGVmZmVjdCBvZiB0cmFuc3BhcmVudCBjb2xvcnMuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgZnVuY3Rpb25zIDxjb2RlPmtleW9rPC9jb2RlPiBhbmQKKyAgICAgIDxjb2RlPmRlZmluZV9rZXk8L2NvZGU+IGFsbG93IHlvdSB0byBiZXR0ZXIgY29udHJvbCB0aGUgdXNlCisgICAgICBvZiBmdW5jdGlvbiBrZXlzLCBlLmcuLCBkaXNhYmxpbmcgdGhlIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gS0VZX01PVVNFLCBvciBieSBkZWZpbmluZyBtb3JlIHRoYW4KKyAgICAgIG9uZSBjb250cm9sIHNlcXVlbmNlIHRvIG1hcCB0byBhIGdpdmVuIGtleSBjb2RlLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+U3VwcG9ydCBmb3IgMjU2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyBtb2Rlcm4geHRlcm0uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5TdXBwb3J0IGZvciAxNi1jb2xvciB0ZXJtaW5hbHMsIHN1Y2ggYXMgPGVtPmFpeHRlcm08L2VtPgorICAgICAgYW5kIDxlbT5tb2Rlcm4geHRlcm08L2VtPi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkJldHRlciBjdXJzb3ItbW92ZW1lbnQgb3B0aW1pemF0aW9uLiBUaGUgcGFja2FnZSBub3cKKyAgICAgIGZlYXR1cmVzIGEgY3Vyc29yLWxvY2FsLW1vdmVtZW50IGNvbXB1dGF0aW9uIG1vcmUgZWZmaWNpZW50CisgICAgICB0aGFuIGVpdGhlciBCU0QncyBvciBTeXN0ZW0gVidzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+U3VwZXIgaGFyZHdhcmUgc2Nyb2xsaW5nIHN1cHBvcnQuIFRoZSBzY3JlZW4tdXBkYXRlIGNvZGUKKyAgICAgIGluY29ycG9yYXRlcyBhIG5vdmVsLCBzaW1wbGUsIGFuZCBjaGVhcCBhbGdvcml0aG0gdGhhdAorICAgICAgZW5hYmxlcyBpdCB0byBtYWtlIG9wdGltYWwgdXNlIG9mIGhhcmR3YXJlIHNjcm9sbGluZywKKyAgICAgIGxpbmUtaW5zZXJ0aW9uLCBhbmQgbGluZS1kZWxldGlvbiBmb3Igc2NyZWVuLWxpbmUgbW92ZW1lbnRzLgorICAgICAgVGhpcyBhbGdvcml0aG0gaXMgbW9yZSBwb3dlcmZ1bCB0aGFuIHRoZSA0LjRCU0QgY3Vyc2VzCisgICAgICA8Y29kZT5xdWlja2NoPC9jb2RlPiByb3V0aW5lLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+UmVhbCBzdXBwb3J0IGZvciB0ZXJtaW5hbHMgd2l0aCB0aGUgbWFnaWMtY29va2llIGdsaXRjaC4KKyAgICAgIFRoZSBzY3JlZW4tdXBkYXRlIGNvZGUgd2lsbCByZWZyYWluIGZyb20gZHJhd2luZyBhIGhpZ2hsaWdodAorICAgICAgaWYgdGhlIG1hZ2ljLSBjb29raWUgdW5hdHRyaWJ1dGVkIHNwYWNlcyByZXF1aXJlZCBqdXN0IGJlZm9yZQorICAgICAgdGhlIGJlZ2lubmluZyBhbmQgYWZ0ZXIgdGhlIGVuZCB3b3VsZCBzdGVwIG9uIGEgbm9uLXNwYWNlCisgICAgICBjaGFyYWN0ZXIuIEl0IHdpbGwgYXV0b21hdGljYWxseSBzaGlmdCBoaWdobGlnaHQgYm91bmRhcmllcworICAgICAgd2hlbiBkb2luZyBzbyB3b3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGRyYXcgdGhlIGhpZ2hsaWdodAorICAgICAgd2l0aG91dCBjaGFuZ2luZyB0aGUgdmlzdWFsIGFwcGVhcmFuY2Ugb2YgdGhlIHNjcmVlbi48L3A+CisgICAgPC9saT4KKworICAgIDxsaT4KKyAgICAgIDxwPkl0IGlzIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRoZSBsaWJyYXJ5IHdpdGggYSBsaXN0IG9mCisgICAgICBwcmUtbG9hZGVkIGZhbGxiYWNrIGVudHJpZXMgbGlua2VkIHRvIGl0IHNvIHRoYXQgaXQgY2FuIHNlcnZlCisgICAgICB0aG9zZSB0ZXJtaW5hbCB0eXBlcyBldmVuIHdoZW4gbm8gdGVybWluZm8gdHJlZSBvciB0ZXJtY2FwCisgICAgICBmaWxlIGlzIGFjY2Vzc2libGUgKHRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc3VwcG9ydCBvZgorICAgICAgc2NyZWVuLW9yaWVudGVkIHByb2dyYW1zIHRoYXQgbXVzdCBydW4gaW4gc2luZ2xlLXVzZXIKKyAgICAgIG1vZGUpLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+VGhlIDxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RpYy4xbS5odG1sIj50aWM8L2E+LzxhIGhyZWY9Imh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvPC9hPgorICAgICAgdXRpbGl0eSBwcm92aWRlZCB3aXRoIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGhhcworICAgICAgdGhlIGFiaWxpdHkgdG8gdHJhbnNsYXRlIG1hbnkgdGVybWNhcHMgZnJvbSB0aGUgWEVOSVgsIElCTQorICAgICAgYW5kIEFUJmFtcDtUIGV4dGVuc2lvbiBzZXRzLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+QSBCU0QtbGlrZSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90c2V0LjEuaHRtbCI+dHNldDwvYT4KKyAgICAgIHV0aWxpdHkgaXMgcHJvdmlkZWQuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5UaGUgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gbGlicmFyeSBhbmQKKyAgICAgIHV0aWxpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVhZCB0ZXJtaW5mbyBlbnRyaWVzIGZyb20KKyAgICAgICRIT01FLy50ZXJtaW5mbyBpZiBpdCBleGlzdHMsIGFuZCBjb21waWxlIHRvIHRoYXQgZGlyZWN0b3J5CisgICAgICBpZiBpdCBleGlzdHMgYW5kIHRoZSB1c2VyIGhhcyBubyB3cml0ZSBhY2Nlc3MgdG8gdGhlIHN5c3RlbQorICAgICAgZGlyZWN0b3J5LiBUaGlzIGZlYXR1cmUgbWFrZXMgaXQgZWFzaWVyIGZvciB1c2VycyB0byBoYXZlCisgICAgICBwZXJzb25hbCB0ZXJtaW5mbyBlbnRyaWVzIHdpdGhvdXQgZ2l2aW5nIHVwIGFjY2VzcyB0byB0aGUKKyAgICAgIHN5c3RlbSB0ZXJtaW5mbyBkaXJlY3RvcnkuPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5Zb3UgbWF5IHNwZWNpZnkgYSBwYXRoIG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IKKyAgICAgIGNvbXBpbGVkIGRlc2NyaXB0aW9ucyB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgVEVSTUlORk9fRElSUyAodGhpcyBnZW5lcmFsaXplcyB0aGUgZmVhdHVyZSBwcm92aWRlZCBieQorICAgICAgVEVSTUlORk8gdW5kZXIgc3RvY2sgU3lzdGVtIFYuKTwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+SW4gdGVybWluZm8gc291cmNlIGZpbGVzLCB1c2UgY2FwYWJpbGl0aWVzIG1heSByZWZlciBub3QKKyAgICAgIGp1c3QgdG8gb3RoZXIgZW50cmllcyBpbiB0aGUgc2FtZSBzb3VyY2UgZmlsZSAoYXMgaW4gU3lzdGVtCisgICAgICBWKSBidXQgYWxzbyB0byBjb21waWxlZCBlbnRyaWVzIGluIGVpdGhlciB0aGUgc3lzdGVtIHRlcm1pbmZvCisgICAgICBkaXJlY3Rvcnkgb3IgdGhlIHVzZXIncyAkSE9NRS8udGVybWluZm8gZGlyZWN0b3J5LjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+VGhlIHRhYmxlLW9mLWVudHJpZXMgdXRpbGl0eSA8YSBocmVmPQorICAgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90b2UuMW0uaHRtbCI+dG9lPC9hPgorICAgICAgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8gc2VlIGV4YWN0bHkgd2hhdCB0ZXJtaW5hbCB0eXBlcworICAgICAgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLjwvcD4KKyAgICA8L2xpPgorCisgICAgPGxpPgorICAgICAgPHA+VGhlIGxpYnJhcnkgbWVldHMgdGhlIFhTSSByZXF1aXJlbWVudCB0aGF0IGV2ZXJ5IG1hY3JvCisgICAgICBlbnRyeSBwb2ludCBoYXZlIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiB3aGljaCBtYXkgYmUgbGlua2VkCisgICAgICAoYW5kIHdpbGwgYmUgcHJvdG90eXBlLWNoZWNrZWQpIGlmIHRoZSBtYWNybyBkZWZpbml0aW9uIGlzCisgICAgICBkaXNhYmxlZCB3aXRoIDxjb2RlPiN1bmRlZjwvY29kZT4uPC9wPgorICAgIDwvbGk+CisKKyAgICA8bGk+CisgICAgICA8cD5FeHRlbnNpdmUgZG9jdW1lbnRhdGlvbiBpcyBwcm92aWRlZCAoc2VlIHRoZSA8ZW0+PGEgaHJlZj0KKyAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLmZhcS5odG1sI2FkZGl0aW9uYWxfcmVhZGluZyI+CisgICAgICBBZGRpdGlvbmFsIFJlYWRpbmc8L2E+PC9lbT4gc2VjdGlvbiBvZiB0aGUgPGVtPjxhIGhyZWY9CisgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5mYXEuaHRtbCI+PGVtIGNsYXNzPSJzbWFsbC1jYXBzIj4KKyAgICAgIG5jdXJzZXM8L2VtPiBGQVE8L2E+PC9lbT4gZm9yIG9ubGluZSBkb2N1bWVudGF0aW9uKS48L3A+CisgICAgPC9saT4KKyAgPC91bD4KKworICA8aDI+PGEgbmFtZT0iaDItd2hvLXVzZXMiIGlkPSJoMi13aG8tdXNlcyI+QXBwbGljYXRpb25zIHVzaW5nCisgIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPjwvaDI+CisKKyAgPHA+VGhlIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+IGRpc3RyaWJ1dGlvbiBpbmNsdWRlcworICBhIHNlbGVjdGlvbiBvZiB0ZXN0IHByb2dyYW1zIChpbmNsdWRpbmcgYSBmZXcgZ2FtZXMpLiBUaGVzZSBhcmUKKyAgYXZhaWxhYmxlIHNlcGFyYXRlbHkgYXMgPGEgaHJlZj0KKyAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbCI+bmN1cnNlcy1leGFtcGxlczwvYT48L3A+CisKKyAgPHA+VGhlIG5jdXJzZXMgbGlicmFyeSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBhIHdpZGUgdmFyaWV0eSBvZgorICBhcHBsaWNhdGlvbnMgaW5jbHVkaW5nOjwvcD4KKworICA8YmxvY2txdW90ZT4KKyAgICA8ZGw+CisgICAgICA8ZHQ+Y2RrPC9kdD4KKworICAgICAgPGRkPgorICAgICAgICA8cD5DdXJzZXMgRGV2ZWxvcG1lbnQgS2l0PC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvY2RrLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay88L2E+PGJyPgorICAgICAgICA8L3A+CisgICAgICA8L2RkPgorCisgICAgICA8ZHQ+ZGVkPC9kdD4KKworICAgICAgPGRkPgorICAgICAgICA8cD5kaXJlY3RvcnktZWRpdG9yPC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RlZC88L2E+PC9wPgorICAgICAgPC9kZD4KKworICAgICAgPGR0PmRpYWxvZzwvZHQ+CisKKyAgICAgIDxkZD4KKyAgICAgICAgPHA+dGhlIHVuZGVybHlpbmcgYXBwbGljYXRpb24gdXNlZCBpbiBTbGFja3dhcmUncyBzZXR1cCwKKyAgICAgICAgYW5kIHRoZSBiYXNpcyBmb3Igc2ltaWxhciBpbnN0YWxsL2NvbmZpZ3VyZSBhcHBsaWNhdGlvbnMgb24KKyAgICAgICAgbWFueSBzeXN0ZW1zLjwvcD4KKworICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8iPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvPC9hPjwvcD4KKyAgICAgIDwvZGQ+CisKKyAgICAgIDxkdD5seW54PC9kdD4KKworICAgICAgPGRkPgorICAgICAgICA8cD50aGUgdGV4dCBXV1cgYnJvd3NlcjwvcD4KKworICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL2x5bnguaXNjLm9yZy8iPmh0dHA6Ly9seW54LmlzYy5vcmcvPC9hPjwvcD4KKyAgICAgIDwvZGQ+CisKKyAgICAgIDxkdD5NaWRuaWdodCBDb21tYW5kZXI8L2R0PgorCisgICAgICA8ZGQ+CisgICAgICAgIDxwPmZpbGUgbWFuYWdlcjwvcD4KKworICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLyI+aHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLzwvYT48L3A+CisgICAgICA8L2RkPgorCisgICAgICA8ZHQ+bXV0dDwvZHQ+CisKKyAgICAgIDxkZD4KKyAgICAgICAgPHA+bWFpbCB1dGlsaXR5PC9wPgorCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3Lm11dHQub3JnLyI+aHR0cDovL3d3dy5tdXR0Lm9yZy88L2E+PC9wPgorICAgICAgPC9kZD4KIAotPEgxPkFubm91bmNpbmcgbmN1cnNlcyA1Ljc8L0gxPgorICAgICAgPGR0Pm5jZnRwPC9kdD4KIAotVGhlIG5jdXJzZXMgKG5ldyBjdXJzZXMpIGxpYnJhcnkgaXMgYSBmcmVlIHNvZnR3YXJlIGVtdWxhdGlvbiBvZgotY3Vyc2VzIGluIFN5c3RlbSBWIFJlbGVhc2UgNC4wLCBhbmQgbW9yZS4gIEl0IHVzZXMgdGVybWluZm8gZm9ybWF0LAotc3VwcG9ydHMgcGFkcyBhbmQgY29sb3IKLWFuZCBtdWx0aXBsZSBoaWdobGlnaHRzIGFuZCBmb3JtcyBjaGFyYWN0ZXJzIGFuZCBmdW5jdGlvbi1rZXkgbWFwcGluZywKLWFuZCBoYXMgYWxsIHRoZSBvdGhlciBTWVNWLWN1cnNlcyBlbmhhbmNlbWVudHMgb3ZlciBCU0QgY3Vyc2VzLjxQPgorICAgICAgPGRkPgorICAgICAgICA8cD5maWxlLXRyYW5zZmVyIHV0aWxpdHk8L3A+CiAKLUluIG1pZC1KdW5lIDE5OTUsIHRoZSBtYWludGFpbmVyIG9mIDQuNEJTRCBjdXJzZXMgZGVjbGFyZWQgdGhhdCBoZQotY29uc2lkZXJlZCA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUga2VlcGVycyBvZgotVW5peCByZWxlYXNlcyBzdWNoIGFzIEJTRC9PUywgRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHN3aXRjaCBvdmVyIHRvCi1uY3Vyc2VzLjxQPgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy5uY2Z0cC5jb20vIj5odHRwOi8vd3d3Lm5jZnRwLmNvbS88L2E+PC9wPgorICAgICAgPC9kZD4KIAotVGhlIG5jdXJzZXMgY29kZSB3YXMgZGV2ZWxvcGVkIHVuZGVyIEdOVS9MaW51eC4KLUl0IGhhcyBiZWVuIGluIHVzZSBmb3Igc29tZSB0aW1lIHdpdGggT3BlbkJTRCBhcyB0aGUgc3lzdGVtIGN1cnNlcyBsaWJyYXJ5LAotYW5kIG9uIEZyZWVCU0QgYW5kIE5ldEJTRCBhcyBhbiBleHRlcm5hbCBwYWNrYWdlLgotSXQgc2hvdWxkIHBvcnQgZWFzaWx5IHRvIGFueSBBTlNJL1BPU0lYLWNvbmZvcm1pbmcgVU5JWC4KLUl0IGhhcyBldmVuIGJlZW4gcG9ydGVkIHRvIE9TLzIgV2FycCE8UD4KKyAgICAgIDxkdD5udmk8L2R0PgogCi1UaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIHRoZSBsaWJyYXJ5IGFuZCBzdXBwb3J0IHV0aWxpdGllcywgaW5jbHVkaW5nIGEKLXRlcm1pbmZvIGNvbXBpbGVyIHRpYygxKSwgYSBkZWNvbXBpbGVyIGluZm9jbXAoMSksIGNsZWFyKDEpLCB0cHV0KDEpLCB0c2V0KDEpLAotYW5kIGEgdGVybWNhcCBjb252ZXJzaW9uIHRvb2wgY2FwdG9pbmZvKDEpLiAgRnVsbCBtYW51YWwgcGFnZXMgYXJlIHByb3ZpZGVkIGZvcgotdGhlIGxpYnJhcnkgYW5kIHRvb2xzLjxQPgorICAgICAgPGRkPgorICAgICAgICA8cD5OZXcgdmkgdXNlcyBuY3Vyc2VzLjwvcD4KIAotVGhlIG5jdXJzZXMgZGlzdHJpYnV0aW9uIGlzIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIEZUUCBhdAotdGhlIEdOVSBkaXN0cmlidXRpb24gc2l0ZQotPEEgSFJFRj0iZnRwOi8vZnRwLmdudS5vcmcvZ251L25jdXJzZXMvIj5mdHA6Ly9mdHAuZ251Lm9yZy9nbnUvbmN1cnNlcy88L0E+Jm5ic3A7LgotPGJyPkl0IGlzIGFsc28gYXZhaWxhYmxlIGF0Ci08QSBIUkVGPSJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLyI+ZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy88L0E+Jm5ic3A7LgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL2EvYm9zdGljLmNvbS9rZWl0aGJvc3RpYy9udmkiPmh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMvbnZpPC9hPjxicj4KKyAgICAgICAgPC9wPgorICAgICAgPC9kZD4KIAotPEgxPlJlbGVhc2UgTm90ZXM8L0gxPgorICAgICAgPGR0PnRpbjwvZHQ+CiAKLVRoaXMgcmVsZWFzZSBpcyBkZXNpZ25lZCB0byBiZSB1cHdhcmQgY29tcGF0aWJsZSBmcm9tIG5jdXJzZXMgNS4wIHRocm91Z2ggNS42OwotdmVyeSBmZXcgYXBwbGljYXRpb25zIHdpbGwgcmVxdWlyZSByZWNvbXBpbGF0aW9uLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgotVGhlc2UgYXJlIHRoZSBoaWdobGlnaHRzIGZyb20gdGhlIGNoYW5nZS1sb2cgc2luY2UgbmN1cnNlcyA1LjYgcmVsZWFzZS4KLTxwPgotSW50ZXJmYWNlIGNoYW5nZXM6Ci08dWw+Ci0JPGxpPmdlbmVyYXRlIGxpbmthYmxlIHN0dWJzIGZvciBzb21lIG1hY3JvczoKLQk8YnI+Ci0JICBnZXRhdHRycworICAgICAgPGRkPgorICAgICAgICA8cD5uZXdzcmVhZGVyLCBzdXBwb3J0aW5nIGNvbG9yLCBNSU1FPC9wPgogCi08L3VsPgotTmV3IGZlYXR1cmVzIGFuZCBpbXByb3ZlbWVudHM6Ci08dWw+Ci0gICAgICAgIDxsaT5saWJyYXJ5Ci0JPHVsPgotCQk8bGk+bmV3IGZsYXZvciBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5IHByb3ZpZGVzIHJ1ZGltZW50YXJ5Ci0JCSAgICBzdXBwb3J0IGZvciBQT1NJWCB0aHJlYWRzLiAgU2V2ZXJhbCBmdW5jdGlvbnMgYXJlCi0JCSAgICByZWVudHJhbnQsIGJ1dCBtb3N0IHJlcXVpcmUgZWl0aGVyIGEgd2luZG93LWxldmVsIG9yCi0JCSAgICBzY3JlZW4tbGV2ZWwgbXV0ZXguPGJyPgotCQkgICAgKFRoaXMgaXMgPGVtPkFQSTwvZW0+LWNvbXBhdGlibGUsCi0JCSAgICAgYnV0IG5vdCA8ZW0+QUJJPC9lbT4tY29tcGF0aWJsZSB3aXRoIHRoZSBub3JtYWwgbGlicmFyeSkuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnRpbi5vcmcvIj5odHRwOi8vd3d3LnRpbi5vcmcvPC9hPjwvcD4KKyAgICAgIDwvZGQ+CisgICAgPC9kbD4KKyAgPC9ibG9ja3F1b3RlPgogCi0JCTxsaT5hZGQgPGNvZGU+TkNVUlNFU19PUEFRVUU8L2NvZGU+IHN5bWJvbCB0byBjdXJzZXMuaCwgd2lsbAotCQkgICAgdXNlIHRvIG1ha2Ugc3RydWN0cyBvcGFxdWUgaW4gc2VsZWN0ZWQgY29uZmlndXJhdGlvbnMuCisgIDxwPmFzIHdlbGwgYXMgc29tZSB0aGF0IHVzZSA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPgorICBmb3IgdGhlIHRlcm1pbmZvIHN1cHBvcnQgYWxvbmU6PC9wPgogCi0JCTxsaT5hZGQgPGNvZGU+TkNVUlNFU19FWFRfRlVOQ1M8L2NvZGU+IGFuZAotCQkgICAgPGNvZGU+TkNVUlNFU19FWFRfQ09MT1JTPC9jb2RlPiBzeW1ib2xzIHRvIGN1cnNlcy5oIHRvIG1ha2UKLQkJICAgIGl0IHNpbXBsZXIgdG8gdGVsbCBpZiB0aGUgZXh0ZW5kZWQgZnVuY3Rpb25zIGFuZC9vciBjb2xvcnMKLQkJICAgIGFyZSBkZWNsYXJlZC4KKyAgPGJsb2NrcXVvdGU+CisgICAgPGRsPgorICAgICAgPGR0Pm1pbmljb208L2R0PgogCi0JCTxsaT5hZGQgd3Jlc2l6ZSgpIHRvIEMrKyBiaW5kaW5nIAorICAgICAgPGRkPgorICAgICAgICA8cD50ZXJtaW5hbCBlbXVsYXRvciBmb3Igc2VyaWFsIG1vZGVtIGNvbm5lY3Rpb25zPC9wPgogCi0JCTxsaT5lbGltaW5hdGUgZml4ZWQtYnVmZmVyIHZzcHJpbnRmKCkgY2FsbHMgaW4gQysrIGJpbmRpbmcuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8iPmh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLzwvYT48L3A+CisgICAgICA8L2RkPgogCi0JCTxsaT5hZGQgc2V2ZXJhbCBmdW5jdGlvbnMgdG8gQysrIGJpbmRpbmcgd2hpY2ggd3JhcCBDIGZ1bmN0aW9ucwotCQkgICAgdGhhdCBwYXNzIGEgV0lORE9XKiBwYXJhbWV0ZXIuCisgICAgICA8ZHQ+bW9zaDwvZHQ+CiAKLQkJPGxpPmFkYXB0IG1vdXNlLWhhbmRsaW5nIGNvZGUgZnJvbSBtZW51IGxpYnJhcnkgaW4gZm9ybS1saWJyYXJ5CisgICAgICA8ZGQ+CisgICAgICAgIDxwPmEgcmVwbGFjZW1lbnQgZm9yIDxjb2RlPnNzaDwvY29kZT4uPC9wPgogCi0JCTxsaT5pbXByb3ZlIHRyYWNpbmcgZm9yIGZvcm0gbGlicmFyeSwgc2hvd2luZyBjcmVhdGVkIGZvcm1zLAotCQkgICAgZmllbGRzLCBldGMuCisgICAgICAgIDxwPjxhIGhyZWY9CisgICAgICAgICJodHRwczovL21vc2gubWl0LmVkdS8iPmh0dHBzOi8vbW9zaC5taXQuZWR1LzwvYT48L3A+CisgICAgICA8L2RkPgogCi0JCTxsaT5tYWtlICROQ1VSU0VTX05PX1BBRERJTkcgZmVhdHVyZSB3b3JrIGZvciB0ZXJtY2FwIGludGVyZmFjZSAuCisgICAgICA8ZHQ+dGFjazwvZHQ+CiAKLQkJPGxpPmFkZCBjaGVjayB0byB0cmFjZS1maWxlIG9wZW4sIGlmIHRoZSBnaXZlbiBuYW1lIGlzIGEKLQkJICAgIGRpcmVjdG9yeSwgYWRkICIubG9nIiB0byB0aGUgbmFtZSBhbmQgdHJ5IGFnYWluLgorICAgICAgPGRkPgorICAgICAgICA8cD50ZXJtaW5mbyBhY3Rpb24gY2hlY2tlcjwvcD4KIAotCQk8bGk+c2V2ZXJhbCBuZXcgbWFucGFnZXM6ICBjdXJzX2xlZ2FjeS4zeCwgY3Vyc19tZW1sZWFrcy4zeCwKLQkJICAgIGN1cnNfb3BhcXVlLjN4IGFuZCBjdXJzX3RocmVhZHMuM3gKLQk8L3VsPgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWw8L2E+PC9wPgorICAgICAgPC9kZD4KIAotICAgICAgICA8bGk+cHJvZ3JhbXM6Ci0JPHVsPgotCQk8bGk+bW9kaWZpZWQgdGhyZWUgdGVzdC1wcm9ncmFtcyB0byBkZW1vbnN0cmF0ZSB0aGUgdGhyZWFkaW5nCi0JCSAgICBzdXBwb3J0IGluIHRoaXMgdmVyc2lvbjogZGl0dG8sIHJhaW4sIHdvcm0uCisgICAgICA8ZHQ+dG11eDwvZHQ+CiAKLQkJPGxpPnNldmVyYWwgbmV3IHRlc3QtcHJvZ3JhbXM6IGRlbW9fcGFuZWxzLCBkb3RzX212Y3VyLAotCQkgICAgaW5jaF93aWRlLCBpbmNocywga2V5X25hbWUsIGtleV9uYW1lcywgc2F2ZXNjcmVlbiwKLQkJICAgIHNhdmVzY3JlZW4uc2ggdGVzdF9hcnJheXMsIHRlc3RfZ2V0X3dzdHIsIHRlc3RfZ2V0c3RyLAotCQkgICAgdGVzdF9pbnN0ciwgdGVzdF9pbndzdHIgYW5kIHRlc3Rfb3BhcXVlLgorICAgICAgPGRkPgorICAgICAgICA8cD50ZXJtaW5hbCBtdWx0aXBsZXhvcjwvcD4KIAotCQk8bGk+YWRkIDxjb2RlPmFkYWN1cnNlcy1jb25maWc8L2NvZGU+IHRvIHRoZSBBZGE5NSBpbnN0YWxsLgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3RtdXguZ2l0aHViLmlvLyI+aHR0cDovL3RtdXguZ2l0aHViLmlvLzwvYT48L3A+CisgICAgICA8L2RkPgogCi0JCTxsaT5tb2RpZnkgdGljIDxjb2RlPi1mPC9jb2RlPiBvcHRpb24gdG8gZm9ybWF0IHNwYWNlcyBhcwotCQkgICAgPGNvZGU+XHM8L2NvZGU+IHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGxvc3Qgd2hlbiB0aGF0Ci0JCSAgICBpcyByZWFkIGJhY2sgaW4gdW5mb3JtYXR0ZWQgc3RyaW5ncy4KKyAgICAgIDxkdD52aWxlPC9kdD4KIAotCQk8bGk+VGhlIDxjb2RlPnRhY2s8L2NvZGU+IHByb2dyYW0gaXMgbm93IGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHkKLQkJICAgIGZyb20gbmN1cnNlcy4KLQk8L3VsPgorICAgICAgPGRkPgorICAgICAgICA8cD52aS1saWtlLWVtYWNzIG1heSBiZSBidWlsdCB0byB1c2UgdGhlIHRlcm1pbmZvLCB0ZXJtY2FwCisgICAgICAgIG9yIGN1cnNlcyBpbnRlcmZhY2VzLjwvcD4KIAotCTxsaT50ZXJtaW5hbCBkYXRhYmFzZQotCTx1bD4KLQkgICAgPGxpPmFkZGVkIGVudHJpZXM6Ci0JCTx1bD4KLQkJPGxpPjxjb2RlPkV0ZXJtLTI1NmNvbG9yPC9jb2RlPiwKLQkJICAgIDxjb2RlPkV0ZXJtLTg4Y29sb3I8L2NvZGU+IGFuZAotCQkgICAgPGNvZGU+cnh2dC04OGNvbG9yPC9jb2RlPgotCQk8bGk+PGNvZGU+YXRlcm08L2NvZGU+Ci0JCTxsaT48Y29kZT5rb25zb2xlLTI1NmNvbG9yPC9jb2RlPgotCQk8bGk+PGNvZGU+bXJ4dnQ8L2NvZGU+Ci0JCTxsaT48Y29kZT5zY3JlZW4ubWx0ZXJtPC9jb2RlPgotCQk8bGk+PGNvZGU+c2NyZWVuLnJ4dnQ8L2NvZGU+Ci0JCTxsaT48Y29kZT50ZXJhdGVybTQuNTk8L2NvZGU+IGlzIG5vdyB0aGUgcHJpbWFyeSBwcmltYXJ5Ci0JCSAgICB0ZXJhdGVybSBlbnRyeSwgcmVuYW1lZCBvcmlnaW5hbCB0bwotCQkgICAgPGNvZGU+dGVyYXRlcm0yLjM8L2NvZGU+Ci0JCTxsaT48Y29kZT45dGVybTwvY29kZT4gdGVybWluYWwKLQkJPGxpPk5ld2J1cnkgRGF0YSBlbnRyaWVzCi0JCTwvdWw+Ci0JICAgIDxsaT51cGRhdGVkL2ltcHJvdmVkIGVudHJpZXM6Ci0JCTx1bD4KLQkgICAgICAgIDxsaT48Y29kZT5nbm9tZTwvY29kZT4gdG8gdmVyc2lvbiAyLjIyLjMKLQkJPGxpPjxjb2RlPmgxOTwvY29kZT4sIDxjb2RlPnoxMDA8L2NvZGU+Ci0JCTxsaT48Y29kZT5rb25zb2xlPC9jb2RlPiB0byB2ZXJzaW9uIDEuNi42Ci0JCTxsaT48Y29kZT5tbHRlcm08L2NvZGU+LCA8Y29kZT5tbHRlcm0rcGNma2V5czwvY29kZT4KLQkJPGxpPjxjb2RlPnh0ZXJtPC9jb2RlPiwgYW5kIGJ1aWxkaW5nLWJsb2NrcyBmb3IgZnVuY3Rpb24ta2V5cwotCQkgICAgdG8gPGEgaHJlZj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3h0ZXJtL3h0ZXJtLmxvZy5odG1sI3h0ZXJtXzIzMCI+eHRlcm0gcGF0Y2ggIzIzMDwvYT4uCi0JCTwvdWw+Ci0JPC91bD4KLTwvdWw+Ci1NYWpvciBidWcgZml4ZXM6Ci08dWw+Ci0JPGxpPmFkZCBsb2dpYyB0byB0aWMgZm9yIGNhbmNlbGxpbmcgc3RyaW5ncyBpbiB1c2VyLWRlZmluZWQKLQkgICAgY2FwYWJpbGl0aWVzCi0JICAgICh0aGlzIGlzIDxlbT5uZWVkZWQ8L2VtPiBmb3IKLQkgICAgIGN1cnJlbnQgPGNvZGU+a29uc29sZTwvY29kZT4gdGVybWluZm8gZW50cnkpLgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3ZpbGUvIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS88L2E+PC9wPgorICAgICAgPC9kZD4KKyAgICA8L2RsPgorICA8L2Jsb2NrcXVvdGU+CiAKLQk8bGk+bW9kaWZ5IDxjb2RlPm1rLTFzdC5hd2s8L2NvZGU+IHNvIHRoZSBnZW5lcmF0ZWQgbWFrZWZpbGUgcnVsZXMgZm9yCi0JICAgIGxpbmtpbmcgb3IgaW5zdGFsbGluZyBzaGFyZWQgbGlicmFyaWVzIGRvIG5vdCBmaXJzdCByZW1vdmUgdGhlCi0JICAgIGxpYnJhcnksIGluIGNhc2UgaXQgaXMgaW4gdXNlLCBlLmcuLCA8Y29kZT5saWJuY3Vyc2VzLnNvPC9jb2RlPiBieQotCSAgICA8Y29kZT4vYmluL3NoPC9jb2RlPi4KKyAgPHA+YW5kIGZpbmFsbHksIHRob3NlIHdoaWNoIHVzZSBvbmx5IHRoZSB0ZXJtY2FwIGludGVyZmFjZTo8L3A+CiAKLQk8bGk+Y29ycmVjdCBjaGVjayBmb3Igbm90aW1lb3V0KCkgaW4gd2dldGNoKCkuCisgIDxibG9ja3F1b3RlPgorICAgIDxkbD4KKyAgICAgIDxkdD5lbWFjczwvZHQ+CiAKLQk8bGk+Zml4IGEgc2lnbi1leHRlbnNpb24gYnVnIGluIGluZm9jbXAncyByZXBhaXJfYWNzYygpIGZ1bmN0aW9uLgorICAgICAgPGRkPgorICAgICAgICA8cD50ZXh0IGVkaXRvcjwvcD4KIAotCTxsaT5jaGFuZ2Ugd2lubnN0cigpIHRvIHN0b3AgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8iPmh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy88L2E+PC9wPgorICAgICAgPC9kZD4KIAotCTxsaT5tYWtlIEFkYTk1IGRlbW9fcGFuZWxzKCkgZXhhbXBsZSB3b3JrLgorICAgICAgPGR0PnNjcmVlbjwvZHQ+CiAKLQk8bGk+Zml4IGZvciBhZGRpbmcgYSBub24tc3BhY2luZyBjaGFyYWN0ZXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCisgICAgICA8ZGQ+CisgICAgICAgIDxwPnRlcm1pbmFsIG11bHRpcGxleG9yPC9wPgogCi0JPGxpPmZpbGwgaW4gZXh0ZW5kZWQtY29sb3IgcGFpciB0byBtYWtlIGNvbG9ycyB3b3JrCi0JICAgIGZvciB3aWRlLWNoYXJhY3RlcnMgdXNpbmcgZXh0ZW5kZWQtY29sb3JzLgorICAgICAgICA8cD48YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iPmh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vPC9hPjwvcD4KKyAgICAgIDwvZGQ+CiAKLQk8bGk+aW1wcm92ZSByZWZyZXNoIG9mIHdpbmRvdyBvbiB0b3Agb2YgbXVsdGktY29sdW1uIGNoYXJhY3RlcnMsCi0JICAgIHRha2luZyBpbnRvIGFjY291bnQgc3BsaXQgY2hhcmFjdGVycyBvbiBsZWZ0L3JpZ2h0IHdpbmRvdwotCSAgICBib3VuZGFyaWVzLgorICAgICAgPGR0PnZpbTwvZHQ+CiAKLQk8bGk+bW9kaWZ5IDxjb2RlPndpbl93Y2huc3RyKCk8L2NvZGU+IHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBiYXNlIGNlbGwKLQkgICAgaXMgcmV0dXJuZWQgZm9yIGVhY2ggbXVsdGktY29sdW1uIGNoYXJhY3Rlci4KKyAgICAgIDxkZD4KKyAgICAgICAgPHA+dGV4dCBlZGl0b3I8L3A+CiAKLQk8bGk+aW1wcm92ZSA8Y29kZT53YWRkY2goKTwvY29kZT4gYW5kIDxjb2RlPndpbnNjaCgpPC9jb2RlPiBoYW5kbGluZyBvZgotCSAgICBFSUxTRVEgZnJvbSA8Y29kZT5tYnJ0b3djKCk8L2NvZGU+IGJ5IHVzaW5nIDxjb2RlPnVuY3RybCgpPC9jb2RlPgotCSAgICB0byBkaXNwbGF5IGlsbGVnYWwgYnl0ZXMgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGFwcGVuZCBmdXJ0aGVyIGJ5dGVzCi0JICAgIHRvIG1ha2UgdXAgYSB2YWxpZCBzZXF1ZW5jZS4KKyAgICAgICAgPHA+PGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cudmltLm9yZy8iPmh0dHA6Ly93d3cudmltLm9yZy88L2E+PC9wPgorICAgICAgPC9kZD4KKyAgICA8L2RsPgorICA8L2Jsb2NrcXVvdGU+CiAKLQk8bGk+cmVzdG9yZSA8Y29kZT5jdXJzX3NldCgpPC9jb2RlPiBzdGF0ZSBhZnRlcgotCSAgICA8Y29kZT5lbmR3aW4oKTwvY29kZT4vPGNvZGU+cmVmcmVzaCgpPC9jb2RlPgorICA8aDI+PGEgbmFtZT0iaDItZGV2ZWxvcG1lbnQiIGlkPSJoMi1kZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQKKyAgYWN0aXZpdGllczwvYT48L2gyPgogCi0JPGxpPm1vZGlmeSA8Y29kZT5rZXluYW1lKCk8L2NvZGU+IHRvIHVzZSAiXlgiIGZvcm0gb25seSBpZgotCSAgICA8Y29kZT5tZXRhKCk8L2NvZGU+IGhhcyBiZWVuIGNhbGxlZCwgb3IgaWYgPGNvZGU+a2V5bmFtZSgpPC9jb2RlPgotCSAgICBpcyBjYWxsZWQgd2l0aG91dCBpbml0aWFsaXppbmcgY3Vyc2VzLCBlLmcuLCB2aWEKLQkgICAgPGNvZGU+aW5pdHNjcigpPC9jb2RlPiBvciA8Y29kZT5uZXd0ZXJtKCk8L2NvZGU+LgorICA8cD5aZXlkIEJlbi1IYWxpbSBzdGFydGVkIDxlbSBjbGFzcz0ic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+CisgIGZyb20gYSBwcmV2aW91cyBwYWNrYWdlIHBjdXJzZXMsIHdyaXR0ZW4gYnkgUGF2ZWwgQ3VydGlzLiBFcmljIFMuCisgIFJheW1vbmQgY29udGludWVkIGRldmVsb3BtZW50LiBKJnV1bWw7cmdlbiBQZmVpZmVyIHdyb3RlIG1vc3Qgb2YKKyAgdGhlIGZvcm0gYW5kIG1lbnUgbGlicmFyaWVzLiBPbmdvaW5nIGRldmVsb3BtZW50IHdvcmsgaXMgZG9uZSBieQorICA8YSBocmVmPSJtYWlsdG86ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Ij5UaG9tYXMgRGlja2V5PC9hPi4KKyAgVGhvbWFzIERpY2tleSBhbHNvIGFjdHMgYXMgdGhlIG1haW50YWluZXIgZm9yIHRoZSBGcmVlIFNvZnR3YXJlCisgIEZvdW5kYXRpb24sIHdoaWNoIGhvbGRzIHRoZSA8YSBocmVmPQorICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1saWNlbnNlLmh0bWwiPmNvcHlyaWdodAorICBvbiBuY3Vyc2VzPC9hPi48L3A+CiAKLQk8bGk+bW9kaWZ5IDxjb2RlPnVuY3RybCgpPC9jb2RlPiB0byBjaGVjayBjb2RlcyBpbiAxMjgtMjU1IHJhbmdlIHZlcnN1cwotCSAgICA8Y29kZT5pc3ByaW50KCk8L2NvZGU+LgotCSAgICBJZiB0aGV5IGFyZSBub3QgcHJpbnRhYmxlLCBhbmQgbG9jYWxlIHdhcyBzZXQsIHVzZSBhICJNLSIgb3IgIn4iCi0JICAgIHNlcXVlbmNlLgorICA8cD5Db250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0PC9wPgogCi0JPGxpPmltcHJvdmUgPGNvZGU+cmVzaXpldGVybSgpPC9jb2RlPiBieSBtb3ZpbmcgcmlwcGVkLW9mZiBsaW5lcywgYW5kCi0JICAgIHJlcGFpbnRpbmcgdGhlIHNvZnQta2V5cy4KKyAgPGJsb2NrcXVvdGU+CisgICAgPGEgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPmJ1Zy1uY3Vyc2VzQGdudS5vcmc8L2E+CisgIDwvYmxvY2txdW90ZT4KIAotCTxsaT5tb2RpZnkgZm9ybSBsaWJyYXJ5IHRvIGFjY2VwdCBjb250cm9sIGNoYXJhY3RlcnMgc3VjaCBhcyBuZXdsaW5lCi0JICAgIGluIHNldF9maWVsZF9idWZmZXIoKSwgd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMuCisgIDxwPlRvIGpvaW4gdGhlIG5jdXJzZXMgbWFpbGluZyBsaXN0LCBwbGVhc2Ugd3JpdGUgZW1haWwgdG88L3A+CiAKLQk8bGk+dXNlIDxjb2RlPk5DVVJTRVNfTU9VU0VfTUFTSygpPC9jb2RlPiBpbiBkZWZpbml0aW9uIG9mCi0JICAgIDxjb2RlPkJVVFRPTl9SRUxFQVNFKCk8L2NvZGU+LCBldGMuLCB0byBtYWtlIHRob3NlIHdvcmsgcHJvcGVybHkKLQkgICAgd2l0aCB0aGUgPGNvZGU+LS1lbmFibGUtZXh0LW1vdXNlPC9jb2RlPiBjb25maWd1cmF0aW9uCisgIDxibG9ja3F1b3RlPgorICAgIDxhIGhyZWY9CisgICAgIm1haWx0bzpidWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmciPmJ1Zy1uY3Vyc2VzLXJlcXVlc3RAZ251Lm9yZzwvYT4KKyAgPC9ibG9ja3F1b3RlPmNvbnRhaW5pbmcgdGhlIGxpbmU6CiAKLQk8bGk+Y29ycmVjdCBzb21lIGZ1bmN0aW9ucyBpbiBBZGE5NSBiaW5kaW5nIHdoaWNoIHdlcmUgdXNpbmcgcmV0dXJuCi0JICAgIHZhbHVlIGZyb20gQyB3aGVyZSBub25lIHdhcyByZXR1cm5lZC4KKyAgPGJsb2NrcXVvdGU+CisgICAgPHA+PGNvZGU+c3Vic2NyaWJlPC9jb2RlPgorICAgIDxlbT4mbHQ7bmFtZSZndDtAJmx0O2hvc3QuZG9tYWluJmd0OzwvZW0+PC9wPgorICA8L2Jsb2NrcXVvdGU+CiAKLQk8bGk+cmV2aWV3ZWQvZml4ZWQgaXNzdWVzIHJlcG9ydGVkIGJ5IENvdmVyaXR5IGFuZCBLbG9jd29yayB0b29scy4KLTwvdWw+CisgIDxwPlRoaXMgbGlzdCBpcyBvcGVuIHRvIGFueW9uZSBpbnRlcmVzdGVkIGluIGhlbHBpbmcgd2l0aCB0aGUKKyAgZGV2ZWxvcG1lbnQgYW5kIHRlc3Rpbmcgb2YgdGhpcyBwYWNrYWdlLjwvcD4KIAotUG9ydGFiaWxpdHk6Ci08dWw+Ci0gICAgICAgIDxsaT5jb25maWd1cmUgc2NyaXB0OgotICAgICAgICAgIDx1bD4KLSAgICAgICAgICA8bGk+bmV3IG9wdGlvbnM6Ci0gICAgICAgICAgICA8ZGw+CisgIDxwPkJldGEgdmVyc2lvbnMgb2YgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT4gYW5kCisgIHBhdGNoZXMgdG8gdGhlIGN1cnJlbnQgcmVsZWFzZSBhcmUgbWFkZSBhdmFpbGFibGUgYXQ8L3A+CiAKLQkgICAgPGR0Pi0tZGlzYWJsZS1iaWctc3RyaW5ncwotCSAgICA8ZGQ+Y29udHJvbCB3aGV0aGVyIHN0YXRpYyBzdHJpbmcgdGFibGVzIGFyZSBnZW5lcmF0ZWQgYXMgc2luZ2xlCi0JICAgICAgICBsYXJnZSBzdHJpbmdzICh0byBpbXByb3ZlIHN0YXJ0dXAgcGVyZm9ybWFuY2UpLCBvciBhcyBhcnJheQotCQlvZiBpbmRpdmlkdWFsIHN0cmluZ3MuCisgIDxibG9ja3F1b3RlPgorICAgIDxwPjxhIGhyZWY9CisgICAgImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvIj5mdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLzwvYT4mbmJzcDsuPC9wPgorICA8L2Jsb2NrcXVvdGU+CiAKLQkgICAgPGR0Pi0tZGlzYWJsZS1yZWxpbmsKLQkgICAgPGRkPmNvbnRyb2wgd2hldGhlciBzaGFyZWQgbGlicmFyaWVzIGFyZSByZWxpbmtlZCAoZHVyaW5nIGluc3RhbGwpCi0JCXdoZW4gcnBhdGggaXMgZW5hYmxlZC4KKyAgPHA+VGhlcmUgaXMgYW4gYXJjaGl2ZSBvZiB0aGUgbWFpbGluZyBsaXN0IGhlcmU6PC9wPgogCi0JICAgIDxkdD4tLWRpc2FibGUtdGljLWRlcGVuZHMKLQkgICAgPGRkPm1ha2UgZXhwbGljaXQgd2hldGhlciB0aWMgbGlicmFyeSBkZXBlbmRzIG9uIG5jdXJzZXMvbmN1cnNlc3cKLQkgICAgICAgIGxpYnJhcnkuCisgIDxibG9ja3F1b3RlPgorICAgIDxwPjxhIGhyZWY9CisgICAgImh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctbmN1cnNlcyI+aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1uY3Vyc2VzPC9hPgorICAgIChhbHNvIDxhIGhyZWY9CisgICAgImh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMiPmh0dHBzPC9hPik8L3A+CisgIDwvYmxvY2txdW90ZT4KIAotCSAgICA8ZHQ+LS1lbmFibGUtbWl4ZWQtY2FzZQotCSAgICA8ZGQ+b3ZlcnJpZGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQncyBjaGVjayBpZiB0aGUgZmlsZXN5c3RlbQotCQlzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcy4KLQkgICAgICAgIFRoaXMgYWxsb3dzIG9uZSB0byBjb250cm9sIGhvdyB0aGUgdGVybWluYWwgZGF0YWJhc2UKLQkJbWFwcyB0byB0aGUgZmlsZXN5c3RlbS4KLQkJRm9yIGZpbGVzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgbWl4ZWQtY2FzZSwgdGhlIGxpYnJhcnkKLQkJdXNlcyBnZW5lcmF0ZSAyLWNoYXJhY3RlciAoaGV4YWRlY2ltYWwpIGNvZGVzIGZvciB0aGUKLQkJbG93ZXItbGV2ZWwgb2YgdGhlIGZpbGVzeXN0ZW0gdGVybWluZm8gZGF0YWJhc2UKKyAgPGgyPjxhIG5hbWU9ImgyLXRoaXMtc3R1ZmYiIGlkPSJoMi10aGlzLXN0dWZmIj5SZWxhdGVkCisgIHJlc291cmNlczwvYT48L2gyPgogCi0JICAgIDxkdD4tLWVuYWJsZS1yZWVudHJhbnQKLQkgICAgPGRkPmJ1aWxkcyBhIGRpZmZlcmVudCBmbGF2b3Igb2YgdGhlIG5jdXJzZXMgbGlicmFyeSAobmN1cnNlc3QpCi0JICAgICAgICB3aGljaCBpbXByb3ZlcyByZWVudHJhbnQgdXNlIG9mIHRoZQotCQlsaWJyYXJ5IGJ5IHJlZHVjaW5nIGdsb2JhbCBhbmQgc3RhdGljIHZhcmlhYmxlcwotCSAgICAgICAgKHNlZSB0aGUgIi0td2l0aC1wdGhyZWFkIiBvcHRpb24gZm9yIHRoZSB0aHJlYWRlZCBzdXBwb3J0KS4KKyAgPHA+VGhlIHJlbGVhc2Ugbm90ZXMgbWFrZSBzY2F0dGVyZWQgcmVmZXJlbmNlcyB0byB0aGVzZSBwYWdlcywKKyAgd2hpY2ggbWF5IGJlIGludGVyZXN0aW5nIGJ5IHRoZW1zZWx2ZXM6PC9wPgogCi0JICAgIDxkdD4tLWVuYWJsZS13ZWFrLXN5bWJvbHMKLQkgICAgPGRkPnVzZSB3ZWFrLXN5bWJvbHMgZm9yIGxpbmtpbmcgdG8gdGhlIFBPU0lYIHRocmVhZCBsaWJyYXJ5LAotCSAgICAgICAgYW5kIHVzZSB0aGUgc2FtZSBzb25hbWUgZm9yIHRoZSBuY3Vyc2VzIHNoYXJlZCBsaWJyYXJ5Ci0JCWFzIHRoZSBub3JtYWwgbGlicmFyeSAoY2F2ZWF0OiB0aGUgQUJJIGlzIGZvciB0aGUgdGhyZWFkZWQKLQkJbGlicmFyeSwgd2hpY2ggbWFrZXMgZ2xvYmFsIGRhdGEgYWNjZXNzZWQgdmlhIGZ1bmN0aW9ucykuCisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+PC9saT4KIAotCSAgICA8ZHQ+LS13aXRoLXB0aHJlYWQKLQkgICAgPGRkPmJ1aWxkIHdpdGggdGhlIFBPU0lYIHRocmVhZCBsaWJyYXJ5ICh0ZXN0ZWQgd2l0aCBBSVgsCi0JICAgICAgICBMaW51eCwgRnJlZUJTRCwgT3BlbkJTRCwgSFBVWCwgSVJJWDY0LCBTb2xhcmlzLCBUcnU2NCkuCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbGljZW5zZS5odG1sIj4KKyAgICA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPiBsaWNlbnNpbmc8L2E+PC9saT4KIAotCSAgICA8ZHQ+LS13aXRoLXRpY2xpYgotCSAgICA8ZGQ+YnVpbGQvaW5zdGFsbCB0aGUgdGljLXN1cHBvcnQgZnVuY3Rpb25zIGluIGEgc2VwYXJhdGUgbGlicmFyeQorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLW1hcHN5bXMuaHRtbCI+U3ltYm9sCisgICAgdmVyc2lvbmluZyBpbiA8ZW0gY2xhc3M9InNtYWxsLWNhcHMiPm5jdXJzZXM8L2VtPjwvYT48L2xpPgogCi0gICAgICAgICAgICA8L2RsPgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLW1pbmd3Lmh0bWwiPlRoZQorICAgIE1pbkdXIHBvcnQgb2YgPGVtIGNsYXNzPSJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+PC9saT4KIAotCSAgPGxpPmltcHJvdmVkIG9wdGlvbnM6Ci0JICAgIDxkbD4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sIj50YWNrICZuZGFzaDsKKyAgICB0ZXJtaW5mbyBhY3Rpb24gY2hlY2tlcjwvYT48L2xpPgogCi0JICAgIDxkdD4tLWVuYWJsZS1leHQtY29sb3JzCi0JICAgIDxkZD5yZXF1aXJlcyB0aGUgd2lkZS1jaGFyYWN0ZXIgY29uZmlndXJhdGlvbi4KKyAgICA8bGk+PGEgaHJlZj0KKyAgICAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mL3BvcnRhYmlsaXR5LXRhci5odG1sIj50YXIKKyAgICB2ZXJzdXMgcG9ydGFiaWxpdHk8L2E+PC9saT4KIAotCSAgICA8ZHQ+LS13aXRoLWNodHlwZQotCSAgICA8ZGQ+aWdub3JlIG9wdGlvbiB2YWx1ZSAidW5zaWduZWQiIGlzIGFsd2F5cyBhZGRlZCB0bwotCQl0aGUgdHlwZSBpbiBjdXJzZXMuaDsgZG8gdGhlIHNhbWUgZm9yIC0td2l0aC1tbWFzay10LgorICAgIDxsaT48YSBocmVmPQorICAgICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90Y3Rlc3QuaHRtbCI+dGN0ZXN0CisgICAgJm5kYXNoOyB0ZXJtY2FwIGxpYnJhcnkgY2hlY2tlcjwvYT48L2xpPgogCi0JICAgIDxkdD4tLXdpdGgtZG1hbGxvYwotCSAgICA8ZGQ+YnVpbGQtZml4IGZvciByZWRlZmluaXRpb24gb2YgPGNvZGU+c3RybmR1cDwvY29kZT4uCisgICAgPGxpPjxhIGhyZWY9CisgICAgImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuaHRtbCNkb3dubG9hZF9kYXRhYmFzZSI+CisgICAgVGVybWluYWwgRGF0YWJhc2U8L2E+PC9saT4KKyAgPC91bD4KIAotCSAgICA8ZHQ+LS13aXRoLWhhc2hlZC1kYgotCSAgICA8ZGQ+YWNjZXB0cyBhIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgaW5zdGFsbC1wcmVmaXggb2YgYSBnaXZlbgotCSAgICAgICAgQmVya2VsZXkgRGF0YWJhc2UuCisgIDxoMj48YSBuYW1lPSJoMi1vdGhlci1zdHVmZiIgaWQ9ImgyLW90aGVyLXN0dWZmIj5PdGhlcgorICByZXNvdXJjZXM8L2E+PC9oMj4KIAotCSAgICA8ZHQ+LS13aXRoLWhhc2hlZC1kYgotCSAgICA8ZGQ+dGhlICRMSUJTIGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJyaWRlcyB0aGUgc2VhcmNoIGZvciB0aGUgZGIKLQkJbGlicmFyeS4KKyAgPHA+VGhlIGRpc3RyaWJ1dGlvbiBwcm92aWRlcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlCisgIHRlcm1pbmZvLWZvcm1hdCB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBmaWxlIG9uY2UgbWFpbnRhaW5lZCBieQorICA8YSBocmVmPSJodHRwOi8vd3d3LmNhdGIub3JnL35lc3IvdGVybWluZm8vIj5FcmljCisgIFJheW1vbmQ8L2E+Jm5ic3A7LiBVbmxpa2UgdGhlIG9sZGVyIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZAorICB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZCBpbiB0aGUgc2FtZSBmaWxlLCBhbmQgcHJvdmlkZXMgc2V2ZXJhbAorICB1c2VyLWRlZmluYWJsZSBleHRlbnNpb25zIGJleW9uZCB0aGUgWC9PcGVuIHNwZWNpZmljYXRpb24uPC9wPgogCi0JICAgIDxkdD4tLXdpdGhvdXQtaGFzaGVkLWRiCi0JICAgIDxkZD5hc3N1bWVkIHdoZW4gIi0tZGlzYWJsZS1kYXRhYmFzZSIgaXMgdXNlZC4KKyAgPHA+WW91IGNhbiBmaW5kIGxvdHMgb2YgaW5mb3JtYXRpb24gb24gdGVybWluYWwtcmVsYXRlZCB0b3BpY3MKKyAgbm90IGNvdmVyZWQgaW4gdGhlIHRlcm1pbmZvIGZpbGUgYXQgPGEgaHJlZj0KKyAgImh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL3d3dy5jcy51dGsuZWR1L35zaHVmb3JkL3Rlcm1pbmFsIj4KKyAgUmljaGFyZCBTaHVmb3JkJ3MgYXJjaGl2ZTwvYT4mbmJzcDsuPC9wPgogCi0JICAgIDwvZGw+CisgIDxkaXYgY2xhc3M9Im5hdiI+CisgICAgPHVsPgorICAgICAgPGxpPjxhIGhyZWY9IiNoMi1vdmVydmlldyI+T3ZlcnZpZXc8L2E+PC9saT4KIAotCTwvdWw+CisgICAgICA8bGk+CisgICAgICAgIDxhIGhyZWY9IiNoMi1yZWxlYXNlLW5vdGVzIj5SZWxlYXNlIE5vdGVzPC9hPgogCi0JPGxpPm90aGVyIGNvbmZpZ3VyZS9idWlsZCBpc3N1ZXM6Ci0JICA8dWw+Ci0JICA8bGk+YnVpbGQtZml4ZXMgZm9yIEx5bnhPUwotCSAgPGxpPm1vZGlmeSBzaGFyZWQtbGlicmFyeSBydWxlcyB0byBhbGxvdyBGcmVlQlNEIDMueCB0byB1c2UgcnBhdGguCi0JICA8bGk+YnVpbGQtZml4IGZvciBGcmVlQlNEICJjb250ZW1wb3JhcnkiIFRUWSBpbnRlcmZhY2UuCi0JICA8bGk+YnVpbGQtZml4ZXMgZm9yIEFJWCB3aXRoIGxpYnRvb2wuCi0JICA8bGk+YnVpbGQtZml4ZXMgZm9yIERhcndpbiBhbmQgbGlidG9vbC4KLQkgIDxsaT5tb2RpZnkgQmVPUy1zcGVjaWZpYyBpZmRlZidzIHRvIGJ1aWxkIG9uIEhhaWt1LgotCSAgPGxpPmNvcnJlY3RlZCBnY2Mgb3B0aW9ucyBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzCi0JICAgICAgYW5kIElSSVg2NC4KLQkgIDxsaT5jaGFuZ2Ugc2hhcmVkLWxpYnJhcnkgY29uZmlndXJhdGlvbiBmb3IgT3BlbkJTRCwgbWFrZSBycGF0aCB3b3JrLgotCSAgPGxpPmJ1aWxkLWZpeGVzIGZvciB1c2luZyBsaWJ1dGY4LCBlLmcuLCBvbiBPcGVuQlNEIDMuNwotCSAgPGxpPmFkZCAiLWUiIG9wdGlvbiBpbiBuY3Vyc2VzL01ha2VmaWxlLmluIHdoZW4gZ2VuZXJhdGluZyBzb3VyY2UtZmlsZXMKLQkgICAgICB0byBmb3JjZSBlYXJsaWVyIGV4aXQgaWYgdGhlIGJ1aWxkIGVudmlyb25tZW50IGZhaWxzIHVuZXhwZWN0ZWRseS4KLQkgIDxsaT5hZGQgc3VwcG9ydCBmb3Igc2hhcmVkIGxpYnJhcmllcyBmb3IgUU5YLgotCSAgPGxpPmNoYW5nZSBkZWxpbWl0ZXIgaW4gPGNvZGU+TUtsaWJfZ2VuLnNoPC9jb2RlPiBmcm9tICclJyB0byAnQCcsIHRvCi0JICAgICAgYXZvaWQgc3Vic3RpdHV0aW9uIGJ5IElCTSB4bGMgdG8gJyMnIGFzIHBhcnQgb2YgaXRzIGV4dGVuc2lvbnMgdG8KLQkgICAgICBkaWdyYXBocy4KLQk8L3VsPgorICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPGEgaHJlZj0iI2gzLWxpYnJhcnkiPkxpYnJhcnkgaW1wcm92ZW1lbnRzPC9hPgogCi0JPGxpPmxpYnJhcnk6Ci0JPHVsPgotCTxsaT5yZXdyaXRlIHdyYXBwZXIgZm9yIDxjb2RlPndjcnRvbWIoKTwvY29kZT4sIG1ha2luZyBpdCB3b3JrIG9uCi0JICAgIFNvbGFyaXMuICBUaGlzIGlzIHVzZWQgaW4gdGhlIGZvcm0gbGlicmFyeSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aAotCSAgICBvZiB0aGUgYnVmZmVyIG5lZWRlZCBieSA8Y29kZT5maWVsZF9idWZmZXI8L2NvZGU+LgotCTxsaT5hZGQvdXNlIGNvbmZpZ3VyZSBzY3JpcHQgbWFjcm8gQ0ZfU0lHX0FUT01JQ19ULCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcKLQkgICAgdHlwZSBmb3IgZGF0YSBtYW5pcHVsYXRlZCBieSBzaWduYWwgaGFuZGxlcnMuCi0JPGxpPnNldCBsb2NhbGUgaW4gbWlzYy9uY3Vyc2VzLWNvbmZpZy5pbiBzaW5jZSBpdCB1c2VzIGEgcmFuZ2UKLQk8bGk+ZGlzYWJsZSBHUE0gbW91c2Ugc3VwcG9ydCB3aGVuICRURVJNIGRvZXMgbm90IGhhcHBlbiB0byBjb250YWluCi0JICAgICJsaW51eCIsIHNpbmNlIEdwbV9PcGVuKCkgbm8gbG9uZ2VyIGxpbWl0cyBpdHMgYXNzZXJ0aW9uIHRvIHRlcm1pbmFscwotCSAgICB0aGF0IGl0IG1pZ2h0IGhhbmRsZSwgZS5nLiwgd2l0aGluICJzY3JlZW4iIGluIHh0ZXJtLgotCTxsaT5yZXNldCBtb3VzZSBmaWxlLWRlc2NyaXB0b3Igd2hlbiB1bmxvYWRpbmcgR1BNIGxpYnJhcnkuCi0JPC91bD4KKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoMy1saWItc2V0YnVmIj5PdXRwdXQKKyAgICAgICAgICAgICAgYnVmZmVyaW5nPC9hPjwvbGk+CiAKLQk8bGk+dGVzdCBwcm9ncmFtczoKLQk8dWw+Ci0JPGxpPnVwZGF0ZSB0ZXN0IHByb2dyYW1zIHRvIGJ1aWxkL3dvcmsgd2l0aCB2YXJpb3VzIFVOSVggY3Vyc2VzIGZvcgotCSAgICBjb21wYXJpc29ucy4KLQk8L3VsPgotPC91bD4KKyAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoMy1saWItdmVyc2lvbmluZyI+U3ltYm9sCisgICAgICAgICAgICAgIHZlcnNpb25pbmc8L2E+PC9saT4KIAotPEgxPkZlYXR1cmVzIG9mIE5jdXJzZXM8L0gxPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2gzLWxpYi1vdGhlciI+TWlzY2VsbGFuZW91czwvYT48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICA8L2xpPgogCi1UaGUgbmN1cnNlcyBwYWNrYWdlIGlzIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gViBSZWxlYXNlIDQpIGN1cnNlczoKKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIjaDMtcHJvZ3JhbXMiPlByb2dyYW0gaW1wcm92ZW1lbnRzPC9hPgogCi08VUw+Ci08TEk+QWxsIDI1NyBvZiB0aGUgU1ZyNCBjYWxscyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgKGFuZCBhcmUgZG9jdW1lbnRlZCkuCi08TEk+RnVsbCBzdXBwb3J0IGZvciBTVnI0IGN1cnNlcyBmZWF0dXJlcyBpbmNsdWRpbmcga2V5Ym9hcmQgbWFwcGluZywgY29sb3IsCi1mb3Jtcy1kcmF3aW5nIHdpdGggQUNTIGNoYXJhY3RlcnMsIGFuZCBhdXRvbWF0aWMgcmVjb2duaXRpb24gb2Yga2V5cGFkCi1hbmQgZnVuY3Rpb24ga2V5cy4KLTxMST5BbiBlbXVsYXRpb24gb2YgdGhlIFNWcjQgcGFuZWxzIGxpYnJhcnksIHN1cHBvcnRpbmcKLWEgc3RhY2sgb2Ygd2luZG93cyB3aXRoIGJhY2tpbmcgc3RvcmUsIGlzIGluY2x1ZGVkLgotPExJPkFuIGVtdWxhdGlvbiBvZiB0aGUgU1ZyNCBtZW51cyBsaWJyYXJ5LCBzdXBwb3J0aW5nCi1hIHVuaWZvcm0gYnV0IGZsZXhpYmxlIGludGVyZmFjZSBmb3IgbWVudSBwcm9ncmFtbWluZywgaXMgaW5jbHVkZWQuCi08TEk+QW4gZW11bGF0aW9uIG9mIHRoZSBTVnI0IGZvcm0gbGlicmFyeSwgc3VwcG9ydGluZwotZGF0YSBjb2xsZWN0aW9uIHRocm91Z2ggb24tc2NyZWVuIGZvcm1zLCBpcyBpbmNsdWRlZC4KLTxMST5CaW5hcnkgdGVybWluZm8gZW50cmllcyBnZW5lcmF0ZWQgYnkgdGhlIG5jdXJzZXMgdGljKDEpIGltcGxlbWVudGF0aW9uCi1hcmUgYml0LWZvci1iaXQtY29tcGF0aWJsZSB3aXRoIHRoZSBlbnRyeSBmb3JtYXQgU1ZyNCBjdXJzZXMgdXNlcy4KLTxMST5UaGUgdXRpbGl0aWVzIGhhdmUgb3B0aW9ucyB0byBhbGxvdyB5b3UgdG8gZmlsdGVyIHRlcm1pbmZvCi1lbnRyaWVzIGZvciB1c2Ugd2l0aCBsZXNzIGNhcGFibGUgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4vPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPgotdmVyc2lvbnMgc3VjaCBhcyB0aGUgSFAvVVggYW5kIEFJWCBwb3J0cy48L1VMPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2g0LXV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPjwvbGk+CiAKLVRoZSBuY3Vyc2VzIHBhY2thZ2UgYWxzbyBoYXMgbWFueSB1c2VmdWwgZXh0ZW5zaW9ucyBvdmVyIFNWcjQ6CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAgIDwvbGk+CiAKLTxVTD4KLTxMST5UaGUgQVBJIGlzIDgtYml0IGNsZWFuIGFuZCBiYXNlLWxldmVsIGNvbmZvcm1hbnQgd2l0aCB0aGUgWC9PUEVOIGN1cnNlcwotc3BlY2lmaWNhdGlvbiwgWFNJIGN1cnNlcyAodGhhdCBpcywgaXQgaW1wbGVtZW50cyBhbGwgQkFTRSBsZXZlbCBmZWF0dXJlcywKLWFuZCBtb3N0IEVYVEVOREVEIGZlYXR1cmVzKS4KLUl0IGluY2x1ZGVzIG1hbnkgZnVuY3Rpb24gY2FsbHMgbm90IHN1cHBvcnRlZCB1bmRlciBTVnI0IGN1cnNlcwotKGJ1dCBwb3J0YWJpbGl0eSBvZiBhbGwKLWNhbGxzIGlzIGRvY3VtZW50ZWQgc28geW91IGNhbiB1c2UgdGhlIFNWcjQgc3Vic2V0IG9ubHkpLgotPExJPlVubGlrZSBTVnIzIGN1cnNlcywgbmN1cnNlcyBjYW4gd3JpdGUgdG8gdGhlIHJpZ2h0bW9zdC1ib3R0b21tb3N0IGNvcm5lcgotb2YgdGhlIHNjcmVlbiBpZiB5b3VyIHRlcm1pbmFsIGhhcyBhbiBpbnNlcnQtY2hhcmFjdGVyIGNhcGFiaWxpdHkuCi08TEk+QWRhOTUgYW5kIEMrKyBiaW5kaW5ncy4KLTxMST5TdXBwb3J0IGZvciBtb3VzZSBldmVudCByZXBvcnRpbmcgd2l0aCBYIFdpbmRvdyB4dGVybQotYW5kIEZyZWVCU0QgYW5kIE9TLzIgY29uc29sZSB3aW5kb3dzLgotPExJPkV4dGVuZGVkIG1vdXNlIHN1cHBvcnQgdmlhIEFsZXNzYW5kcm8gUnViaW5pJ3MgZ3BtIHBhY2thZ2UuCi08TEk+VGhlIGZ1bmN0aW9uIDxDT0RFPndyZXNpemUoKTwvQ09ERT4gYWxsb3dzIHlvdSB0byByZXNpemUgd2luZG93cywgcHJlc2VydmluZwotdGhlaXIgZGF0YS4KLTxMST5UaGUgZnVuY3Rpb24gPENPREU+dXNlX2RlZmF1bHRfY29sb3JzKCk8L0NPREU+IGFsbG93cyB5b3UgdG8KLXVzZSB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9ycyBmb3IgdGhlIGRlZmF1bHQgY29sb3IgcGFpciwKLWFjaGlldmluZyB0aGUgZWZmZWN0IG9mIHRyYW5zcGFyZW50IGNvbG9ycy4KLTxMST5UaGUgZnVuY3Rpb25zIDxDT0RFPmtleW9rKCk8L0NPREU+Ci1hbmQgPENPREU+ZGVmaW5lX2tleSgpPC9DT0RFPiBhbGxvdwoteW91IHRvIGJldHRlciBjb250cm9sIHRoZSB1c2Ugb2YgZnVuY3Rpb24ga2V5cywKLWUuZy4sIGRpc2FibGluZyB0aGUgbmN1cnNlcyBLRVlfTU9VU0UsCi1vciBieSBkZWZpbmluZyBtb3JlIHRoYW4gb25lIGNvbnRyb2wgc2VxdWVuY2UgdG8gbWFwIHRvIGEgZ2l2ZW4ga2V5IGNvZGUuCi08TEk+U3VwcG9ydCBmb3IgMjU2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyBtb2Rlcm4geHRlcm0sIHdoZW4gY29uZmlndXJlZAotdXNpbmcgdGhlIDxjb2RlPi0tZW5hYmxlLWV4dC1jb2xvcnM8L2NvZGU+IG9wdGlvbi4KLTxMST5TdXBwb3J0IGZvciAxNi1jb2xvciB0ZXJtaW5hbHMsIHN1Y2ggYXMgYWl4dGVybSBhbmQgbW9kZXJuIHh0ZXJtLgotPExJPkJldHRlciBjdXJzb3ItbW92ZW1lbnQgb3B0aW1pemF0aW9uLiAgVGhlIHBhY2thZ2Ugbm93IGZlYXR1cmVzIGEKLWN1cnNvci1sb2NhbC1tb3ZlbWVudCBjb21wdXRhdGlvbiBtb3JlIGVmZmljaWVudCB0aGFuIGVpdGhlciBCU0Qncwotb3IgU3lzdGVtIFYncy4KLTxMST5TdXBlciBoYXJkd2FyZSBzY3JvbGxpbmcgc3VwcG9ydC4gIFRoZSBzY3JlZW4tdXBkYXRlIGNvZGUgaW5jb3Jwb3JhdGVzCi1hIG5vdmVsLCBzaW1wbGUsIGFuZCBjaGVhcCBhbGdvcml0aG0gdGhhdCBlbmFibGVzIGl0IHRvIG1ha2Ugb3B0aW1hbAotdXNlIG9mIGhhcmR3YXJlIHNjcm9sbGluZywgbGluZS1pbnNlcnRpb24sIGFuZCBsaW5lLWRlbGV0aW9uCi1mb3Igc2NyZWVuLWxpbmUgbW92ZW1lbnRzLiAgVGhpcyBhbGdvcml0aG0gaXMgbW9yZSBwb3dlcmZ1bCB0aGFuCi10aGUgNC40QlNEIGN1cnNlcyBxdWlja2NoKCkgcm91dGluZS4KLTxMST5SZWFsIHN1cHBvcnQgZm9yIHRlcm1pbmFscyB3aXRoIHRoZSBtYWdpYy1jb29raWUgZ2xpdGNoLiAgVGhlCi1zY3JlZW4tdXBkYXRlIGNvZGUgd2lsbCByZWZyYWluIGZyb20gZHJhd2luZyBhIGhpZ2hsaWdodCBpZiB0aGUgbWFnaWMtCi1jb29raWUgdW5hdHRyaWJ1dGVkIHNwYWNlcyByZXF1aXJlZCBqdXN0IGJlZm9yZSB0aGUgYmVnaW5uaW5nIGFuZAotYWZ0ZXIgdGhlIGVuZCB3b3VsZCBzdGVwIG9uIGEgbm9uLXNwYWNlIGNoYXJhY3Rlci4gIEl0IHdpbGwKLWF1dG9tYXRpY2FsbHkgc2hpZnQgaGlnaGxpZ2h0IGJvdW5kYXJpZXMgd2hlbiBkb2luZyBzbyB3b3VsZCBtYWtlIGl0Ci1wb3NzaWJsZSB0byBkcmF3IHRoZSBoaWdobGlnaHQgd2l0aG91dCBjaGFuZ2luZyB0aGUgdmlzdWFsIGFwcGVhcmFuY2UKLW9mIHRoZSBzY3JlZW4uCi08TEk+SXQgaXMgcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhlIGxpYnJhcnkgd2l0aCBhIGxpc3Qgb2YgcHJlLWxvYWRlZAotZmFsbGJhY2sgZW50cmllcyBsaW5rZWQgdG8gaXQgc28gdGhhdCBpdCBjYW4gc2VydmUgdGhvc2UgdGVybWluYWwgdHlwZXMgZXZlbgotd2hlbiBubyB0ZXJtaW5mbyB0cmVlIG9yIHRlcm1jYXAgZmlsZSBpcyBhY2Nlc3NpYmxlICh0aGlzIG1heSBiZSB1c2VmdWwKLWZvciBzdXBwb3J0IG9mIHNjcmVlbi1vcmllbnRlZCBwcm9ncmFtcyB0aGF0IG11c3QgcnVuIGluIHNpbmdsZS11c2VyIG1vZGUpLgotPExJPlRoZSB0aWMoMSkvY2FwdG9pbmZvIHV0aWxpdHkgcHJvdmlkZWQgd2l0aCBuY3Vyc2VzIGhhcyB0aGUKLWFiaWxpdHkgdG8gdHJhbnNsYXRlIG1hbnkgdGVybWNhcHMgZnJvbSB0aGUgWEVOSVgsIElCTSBhbmQKLUFUJmFtcDtUIGV4dGVuc2lvbiBzZXRzLgotPExJPkEgQlNELWxpa2UgdHNldCgxKSB1dGlsaXR5IGlzIHByb3ZpZGVkLgotPExJPlRoZSBuY3Vyc2VzIGxpYnJhcnkgYW5kIHV0aWxpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVhZCB0ZXJtaW5mbwotZW50cmllcyBmcm9tICRIT01FLy50ZXJtaW5mbyBpZiBpdCBleGlzdHMsIGFuZCBjb21waWxlIHRvIHRoYXQgZGlyZWN0b3J5Ci1pZiBpdCBleGlzdHMgYW5kIHRoZSB1c2VyIGhhcyBubyB3cml0ZSBhY2Nlc3MgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcnkuCi1UaGlzIGZlYXR1cmUgbWFrZXMgaXQgZWFzaWVyIGZvciB1c2VycyB0byBoYXZlIHBlcnNvbmFsIHRlcm1pbmZvIGVudHJpZXMKLXdpdGhvdXQgZ2l2aW5nIHVwIGFjY2VzcyB0byB0aGUgc3lzdGVtIHRlcm1pbmZvIGRpcmVjdG9yeS4KLTxMST5Zb3UgbWF5IHNwZWNpZnkgYSBwYXRoIG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgY29tcGlsZWQKLWRlc2NyaXB0aW9ucyB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBURVJNSU5GT19ESVJTICh0aGlzCi1nZW5lcmFsaXplcyB0aGUgZmVhdHVyZSBwcm92aWRlZCBieSBURVJNSU5GTyB1bmRlciBzdG9jayBTeXN0ZW0gVi4pCi08TEk+SW4gdGVybWluZm8gc291cmNlIGZpbGVzLCB1c2UgY2FwYWJpbGl0aWVzIG1heSByZWZlciBub3QganVzdCB0bwotb3RoZXIgZW50cmllcyBpbiB0aGUgc2FtZSBzb3VyY2UgZmlsZSAoYXMgaW4gU3lzdGVtIFYpIGJ1dCBhbHNvIHRvCi1jb21waWxlZCBlbnRyaWVzIGluIGVpdGhlciB0aGUgc3lzdGVtIHRlcm1pbmZvIGRpcmVjdG9yeSBvciB0aGUgdXNlcidzCi0kSE9NRS8udGVybWluZm8gZGlyZWN0b3J5LgotPExJPkEgc2NyaXB0ICg8U1RST05HPmNhcGNvbnZlcnQ8L1NUUk9ORz4pIGlzIHByb3ZpZGVkIHRvIGhlbHAgQlNEIHVzZXJzCi10cmFuc2l0aW9uIGZyb20gdGVybWNhcCB0byB0ZXJtaW5mby4gIEl0IGdhdGhlcnMgdGhlIGluZm9ybWF0aW9uIGluIGEKLVRFUk1DQVAgZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kL29yIGEgfi8udGVybWNhcCBsb2NhbCBlbnRyaWVzIGZpbGUKLWFuZCBjb252ZXJ0cyBpdCB0byBhbiBlcXVpdmFsZW50IGxvY2FsIHRlcm1pbmZvIHRyZWUgdW5kZXIgJEhPTUUvLnRlcm1pbmZvLgotPExJPkF1dG9tYXRpYyBmYWxsYmFjayB0byB0aGUgL2V0Yy90ZXJtY2FwIGZpbGUgY2FuIGJlIGNvbXBpbGVkIGluCi13aGVuIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBidWlsZCBhIHRlcm1pbmZvIHRyZWUuICBUaGlzIGZlYXR1cmUgaXMgbmVpdGhlcgotZmFzdCBub3IgY2hlYXAsIHlvdSBkb24ndCB3YW50IHRvIHVzZSBpdCB1bmxlc3MgeW91IGhhdmUgdG8sCi1idXQgaXQncyB0aGVyZS4KLTxMST5UaGUgdGFibGUtb2YtZW50cmllcyB1dGlsaXR5IDxTVFJPTkc+dG9lPC9TVFJPTkc+IG1ha2VzIGl0IGVhc3kgZm9yIHVzZXJzIHRvCi1zZWUgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KLTxMST5UaGUgbGlicmFyeSBtZWV0cyB0aGUgWFNJIHJlcXVpcmVtZW50IHRoYXQgZXZlcnkgbWFjcm8gZW50cnkKLXBvaW50IGhhdmUgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHdoaWNoIG1heSBiZSBsaW5rZWQgKGFuZCB3aWxsIGJlCi1wcm90b3R5cGUtY2hlY2tlZCkgaWYgdGhlIG1hY3JvIGRlZmluaXRpb24gaXMgZGlzYWJsZWQgd2l0aAotPENPREU+I3VuZGVmPC9DT0RFPi4KLTxMST5BbiBIVE1MICJJbnRyb2R1Y3Rpb24gdG8gUHJvZ3JhbW1pbmcgd2l0aCBOQ1VSU0VTIiBkb2N1bWVudCBwcm92aWRlcwotYSBuYXJyYXRpdmUgaW50cm9kdWN0aW9uIHRvIHRoZSBjdXJzZXMgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLgotPC9VTD4KKyAgICAgICAgICA8bGk+PGEgaHJlZj0iI2gzLWRhdGFiYXNlIj5UZXJtaW5hbCBkYXRhYmFzZTwvYT48L2xpPgogCi08SDE+U3RhdGUgb2YgdGhlIFBhY2thZ2U8L0gxPgorICAgICAgICAgIDxsaT48YSBocmVmPSIjaDMtZG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogCi1OdW1lcm91cyBidWdzIHByZXNlbnQgaW4gZWFybGllciB2ZXJzaW9ucyBoYXZlIGJlZW4gZml4ZWQ7IHRoZQotbGlicmFyeSBpcyBmYXIgbW9yZSByZWxpYWJsZSB0aGFuIGl0IHVzZWQgdG8gYmUuICBCb3VuZHMgY2hlY2tpbmcgaW4gbWFueQotYGRhbmdlcm91cycgZW50cnkgcG9pbnRzIGhhcyBiZWVuIGltcHJvdmVkLiAgVGhlIGNvZGUgaXMgbm93IHR5cGUtc2FmZQotYWNjb3JkaW5nIHRvIGdjYyAtV2FsbC4gIFRoZSBsaWJyYXJ5IGhhcyBiZWVuIGNoZWNrZWQgZm9yIG1hbGxvYyBsZWFrcyBhbmQKLWFyZW5hIGNvcnJ1cHRpb24gYnkgdGhlIFB1cmlmeSBtZW1vcnktYWxsb2NhdGlvbiB0ZXN0ZXIuPFA+CisgICAgICAgICAgPGxpPjxhIGhyZWY9IiNoMy1idWctZml4ZXMiPkludGVyZXN0aW5nCisgICAgICAgICAgYnVnLWZpeGVzPC9hPjwvbGk+CiAKLVRoZSBuY3Vyc2VzIGNvZGUgaGFzIGJlZW4gdGVzdGVkIHdpdGggYSB3aWRlIHZhcmlldHkgb2YgYXBwbGljYXRpb25zCi1pbmNsdWRpbmcgKHZlcnNpb25zIHN0YXJ0aW5nIHdpdGggdGhvc2Ugbm90ZWQpOgotPERMPgotPERUPiBjZGsKLTxERD4gQ3Vyc2VzIERldmVsb3BtZW50IEtpdAotPGJyPgotPEEgSFJFRj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay8iPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvPC9BPgotPGJyPgotPEEgSFJFRj0iaHR0cDovL3d3dy52ZXh1cy5jYS9wcm9kdWN0cy9DREsvIj5odHRwOi8vd3d3LnZleHVzLmNhL3Byb2R1Y3RzL0NESy88L2E+Ci08RFQ+IGRlZAotPEREPiBkaXJlY3RvcnktZWRpdG9yCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLyI+aHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RlZC88L0E+Ci08RFQ+IGRpYWxvZwotPEREPiB0aGUgdW5kZXJseWluZyBhcHBsaWNhdGlvbiB1c2VkIGluIFNsYWNrd2FyZSdzIHNldHVwLCBhbmQgdGhlIGJhc2lzCi1mb3Igc2ltaWxhciBhcHBsaWNhdGlvbnMgb24gR05VL0xpbnV4LgotPGJyPgotPEEgSFJFRj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8iPmh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvPC9BPgotPERUPiBseW54Ci08REQ+IHRoZSBjaGFyYWN0ZXItc2NyZWVuIFdXVyBicm93c2VyCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vbHlueC5pc2Mub3JnL3JlbGVhc2UvIj5odHRwOi8vbHlueC5pc2Mub3JnL3JlbGVhc2UvPC9BPgotPERUPiBNaWRuaWdodCBDb21tYW5kZXIKLTxERD4gZmlsZSBtYW5hZ2VyCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL21jLyI+aHR0cDovL3d3dy5pYmlibGlvLm9yZy9tYy88L0E+Ci08RFQ+IG11dHQKLTxERD4gbWFpbCB1dGlsaXR5Ci08YnI+Ci08QSBIUkVGPSJodHRwOi8vd3d3Lm11dHQub3JnLyI+aHR0cDovL3d3dy5tdXR0Lm9yZy88L0E+Ci08RFQ+IG5jZnRwCi08REQ+IGZpbGUtdHJhbnNmZXIgdXRpbGl0eQotPGJyPgotPEEgSFJFRj0iaHR0cDovL3d3dy5uY2Z0cC5jb20vIj5odHRwOi8vd3d3Lm5jZnRwLmNvbS88L0E+Ci08RFQ+IG52aQotPEREPiBOZXcgdmkgdmVyc2lvbnMgMS41MCBhcmUgYWJsZSB0byB1c2UgbmN1cnNlcyB2ZXJzaW9ucyAxLjkuNyBhbmQgbGF0ZXIuCi08YnI+Ci08QSBIUkVGPSJodHRwOi8vd3d3LmJvc3RpYy5jb20vdmkvIj5odHRwOi8vd3d3LmJvc3RpYy5jb20vdmkvPC9BPgotPGJyPgotPERUPiBwaW5mbwotPEREPiBMeW54LWxpa2UgaW5mbyBicm93c2VyLgotPEEgSFJFRj0iaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9waW5mby8iPmh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvcGluZm8vPC9BPgotPERUPiB0aW4KLTxERD4gbmV3c3JlYWRlciwgc3VwcG9ydGluZyBjb2xvciwgTUlNRQotPEEgSFJFRj0iaHR0cDovL3d3dy50aW4ub3JnLyI+aHR0cDovL3d3dy50aW4ub3JnLzwvQT4KLTwvREw+Ci1hcyB3ZWxsIGFzIHNvbWUgdGhhdCB1c2UgbmN1cnNlcyBmb3IgdGhlIHRlcm1pbmZvIHN1cHBvcnQgYWxvbmU6Ci08REw+Ci08RFQ+IG1pbmljb20KLTxERD4gdGVybWluYWwgZW11bGF0b3IKLTxicj4KLTxBIEhSRUY9Imh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLyI+Ci1odHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS88L0E+Ci08RFQ+IHZpbGUKLTxERD4gdmktbGlrZS1lbWFjcwotPGJyPgotPEEgSFJFRj0iaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3ZpbGUvIj5odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS88L0E+Ci08L0RMPgotPFA+CisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPGEgaHJlZj0iI2gzLWNvbmZpZy1jb25maWciPkNvbmZpZ3VyYXRpb24gY2hhbmdlczwvYT4KIAotVGhlIG5jdXJzZXMgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgc2VsZWN0aW9uIG9mIHRlc3QgcHJvZ3JhbXMgKGluY2x1ZGluZwotYSBmZXcgZ2FtZXMpLgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2g0LWNvbmZpZy1tYWpvciI+TWFqb3IgY2hhbmdlczwvYT48L2xpPgogCi08SDI+V2hvJ3MgV2hvIGFuZCBXaGF0J3MgV2hhdDwvSDI+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtY29uZmlnLW9wdGlvbnMiPkNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgb3B0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICA8L2xpPgogCi1aZXlkIEJlbi1IYWxpbQotc3RhcnRlZCBpdCBmcm9tIGEgcHJldmlvdXMgcGFja2FnZSBwY3Vyc2VzLCB3cml0dGVuIGJ5IFBhdmVsIEN1cnRpcy4KLUVyaWMgUy4gUmF5bW9uZAotY29udGludWVkIGRldmVsb3BtZW50LgotSiZ1dW1sO3JnZW4gUGZlaWZlciB3cm90ZSBtb3N0IG9mIHRoZSBmb3JtIGFuZCBtZW51IGxpYnJhcmllcy4KLU9uZ29pbmcgd29yayBpcyBiZWluZyBkb25lIGJ5Ci08QSBIUkVGPSJtYWlsdG86ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Ij5UaG9tYXMgRGlja2V5PC9BPi4KLVRob21hcyBEaWNrZXkKLWFjdHMgYXMgdGhlIG1haW50YWluZXIgZm9yIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi13aGljaCBob2xkcyB0aGUgY29weXJpZ2h0IG9uIG5jdXJzZXMuCi1Db250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0Ci08QSBIUkVGPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+YnVnLW5jdXJzZXNAZ251Lm9yZzwvQT4uCi08UD4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8YSBocmVmPSIjaDMtcG9ydGFiaWxpdHkiPlBvcnRhYmlsaXR5PC9hPgogCi1UbyBqb2luIHRoZSBuY3Vyc2VzIG1haWxpbmcgbGlzdCwgcGxlYXNlIHdyaXRlIGVtYWlsIHRvCi08Q09ERT5idWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmc8L0NPREU+IGNvbnRhaW5pbmcgdGhlIGxpbmU6Ci08UFJFPgotICAgICAgICAgICAgIHN1YnNjcmliZSAmbHQ7bmFtZSZndDtAJmx0O2hvc3QuZG9tYWluJmd0OwotPC9QUkU+CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjaDQtcG9ydC1taW5ndyI+TWluR1c8L2E+PC9saT4KIAotVGhpcyBsaXN0IGlzIG9wZW4gdG8gYW55b25lIGludGVyZXN0ZWQgaW4gaGVscGluZyB3aXRoIHRoZSBkZXZlbG9wbWVudCBhbmQKLXRlc3Rpbmcgb2YgdGhpcyBwYWNrYWdlLjxQPgorICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2g0LXBvcnQtc3lzdGVtcyI+T3RoZXIgcG9ydHM8L2E+PC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgIDwvbGk+CiAKLUJldGEgdmVyc2lvbnMgb2YgbmN1cnNlcyBhbmQgcGF0Y2hlcyB0byB0aGUgY3VycmVudCByZWxlYXNlIGFyZSBtYWRlIGF2YWlsYWJsZSBhdAotPEEgSFJFRj0iZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8iPmZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvPC9BPiZuYnNwOy4KKyAgICAgIDxsaT48YSBocmVmPSIjaDItZmVhdHVyZXMiPkZlYXR1cmVzIG9mIDxlbSBjbGFzcz0KKyAgICAgICJzbWFsbC1jYXBzIj5uY3Vyc2VzPC9lbT48L2E+PC9saT4KIAotPEgyPkZ1dHVyZSBQbGFuczwvSDI+Ci08VUw+Ci08TEk+RXh0ZW5kZWQtbGV2ZWwgWFBHNCBjb25mb3JtYW5jZSwgd2l0aCBpbnRlcm5hdGlvbmFsaXphdGlvbiBzdXBwb3J0LgotPExJPlBvcnRzIHRvIG1vcmUgc3lzdGVtcywgaW5jbHVkaW5nIERPUyBhbmQgV2luZG93cy4KLTwvVUw+Ci1XZSBuZWVkIHBlb3BsZSB0byBoZWxwIHdpdGggdGhlc2UgcHJvamVjdHMuICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gd29ya2luZwotb24gdGhlbSwgcGxlYXNlIGpvaW4gdGhlIG5jdXJzZXMgbGlzdC4KKyAgICAgIDxsaT48YSBocmVmPSIjaDItd2hvLXVzZXMiPkFwcGxpY2F0aW9ucyB1c2luZyA8ZW0gY2xhc3M9CisgICAgICAic21hbGwtY2FwcyI+bmN1cnNlczwvZW0+PC9hPjwvbGk+CiAKLTxIMj5PdGhlciBSZWxhdGVkIFJlc291cmNlczwvSDI+CisgICAgICA8bGk+PGEgaHJlZj0iI2gyLWRldmVsb3BtZW50Ij5EZXZlbG9wbWVudCBhY3Rpdml0aWVzPC9hPjwvbGk+CiAKLVRoZSBkaXN0cmlidXRpb24gcHJvdmlkZXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSB0ZXJtaW5mby1mb3JtYXQKLXRlcm1pbmFsIGRlc2NyaXB0aW9uIGZpbGUgb25jZSBtYWludGFpbmVkIGJ5Ci08QSBIUkVGPSJodHRwOi8vd3d3LmNhdGIub3JnL35lc3IvdGVybWluZm8vIj5FcmljIFJheW1vbmQ8L0E+Jm5ic3A7LgotVW5saWtlIHRoZSBvbGRlciB2ZXJzaW9uLCB0aGUgdGVybWNhcCBhbmQgdGVybWluZm8gZGF0YSBhcmUgcHJvdmlkZWQKLWluIHRoZSBzYW1lIGZpbGUsIGFuZCBwcm92aWRlcyBzZXZlcmFsIHVzZXItZGVmaW5hYmxlIGV4dGVuc2lvbnMKLWJleW9uZCB0aGUgWC9PcGVuIHNwZWNpZmljYXRpb24uPFA+CisgICAgICA8bGk+PGEgaHJlZj0iI2gyLXRoaXMtc3R1ZmYiPlJlbGF0ZWQgcmVzb3VyY2VzPC9hPjwvbGk+CiAKLVlvdSBjYW4gZmluZCBsb3RzIG9mIGluZm9ybWF0aW9uIG9uIHRlcm1pbmFsLXJlbGF0ZWQgdG9waWNzCi1ub3QgY292ZXJlZCBpbiB0aGUgdGVybWluZm8gZmlsZSBhdAotPEEgSFJFRj0iaHR0cDovL3d3dy5jcy51dGsuZWR1L35zaHVmb3JkL3Rlcm1pbmFsX2luZGV4Lmh0bWwiPlJpY2hhcmQgU2h1Zm9yZCdzCi1hcmNoaXZlPC9BPiZuYnNwOy4KLTwvQk9EWT4KLTwvSFRNTD4KLTwhLS0KLSMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotIyBMb2NhbCBWYXJpYWJsZXM6Ci0jIG1vZGU6aHRtbAotIyBjYXNlLWZvbGQtc2VhcmNoOm5pbAotIyBmaWxsLWNvbHVtbjo3MAotIyBFbmQ6Ci0tLT4KKyAgICAgIDxsaT48YSBocmVmPSIjaDItb3RoZXItc3R1ZmYiPk90aGVyIHJlc291cmNlczwvYT48L2xpPgorICAgIDwvdWw+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvaGFja2d1aWRlLmh0bWwgYi9kb2MvaHRtbC9oYWNrZ3VpZGUuaHRtbAppbmRleCA5N2QxMzY5Li44NDM3MDgwIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9oYWNrZ3VpZGUuaHRtbAorKysgYi9kb2MvaHRtbC9oYWNrZ3VpZGUuaHRtbApAQCAtMSw4ICsxLDggQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMy4wLy9FTiI+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPCEtLQotICAkSWQ6IGhhY2tndWlkZS5odG1sLHYgMS4yNyAyMDA1LzEyLzI0IDE1OjM3OjEzIHRvbSBFeHAgJAorICAkSWQ6IGhhY2tndWlkZS5odG1sLHYgMS4yOSAyMDEzLzA1LzE3IDIzOjI5OjE4IHRvbSBFeHAgJAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvaW5kZXguaHRtbCBiL2RvYy9odG1sL2luZGV4Lmh0bWwKaW5kZXggY2IyYTkwZC4uZmI2YTA3MSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvaW5kZXguaHRtbAorKysgYi9kb2MvaHRtbC9pbmRleC5odG1sCkBAIC0xLDggKzEsOCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAzLjAvL0VOIj4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8IS0tCi0gICRJZDogaW5kZXguaHRtbCx2IDEuMiAyMDA2LzA0LzIyIDIyOjI5OjEyIHRvbSBFeHAgJAorICAkSWQ6IGluZGV4Lmh0bWwsdiAxLjYgMjAxMy8wNS8xNyAyMzozMDoyOSB0b20gRXhwICQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMzLDI1ICszMywxOSBAQAogPEhFQUQ+CiA8VElUTEU+V2VsY29tZSB0byBuY3Vyc2VzPC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+CiAKIDxIMT5XZWxjb21lIHRvIG5jdXJzZXM8L0gxPgogRnJvbSB0aGlzIGluZGV4IHBhZ2UgeW91IGhhdmUgYWNjZXNzIHRvIHRoZXNlIGZ1cnRoZXIgZG9jdW1lbnRzCiA8VUw+Ci08TEk+VGhlIDxhIGhyZWY9ImFubm91bmNlLmh0bWwiPkFubm91bmNlbWVudDwvYT4gb2YgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBuY3Vyc2VzLjwvTEk+Ci08TEk+QW4gPGEgaHJlZj0ibmN1cnNlcy1pbnRyby5odG1sIj5JbnRyb2R1Y3Rpb248L2E+IGludG8gKG4pY3Vyc2VzIHByb2dyYW1taW5nLjwvTEk+Ci08TEk+QSA8YSBocmVmPSJoYWNrZ3VpZGUuaHRtbCI+aGFja2VycyBndWlkZTwvYT4gdG8gbmN1cnNlcy48L0xJPgotPExJPkEgZGVzY3JpcHRpb24gb2YgdGhlIDxhIGhyZWY9IkFkYTk1Lmh0bWwiPkFkYTk1IGJpbmRpbmc8L2E+IHRvIG5jdXJzZXMuPC9MST4KKzxMST5UaGUgPGEgaHJlZj0iYW5ub3VuY2UuaHRtbCI+QW5ub3VuY2VtZW50PC9hPiBvZiB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIG5jdXJzZXMuCis8TEk+QW4gPGEgaHJlZj0ibmN1cnNlcy1pbnRyby5odG1sIj5JbnRyb2R1Y3Rpb248L2E+IGludG8gKG4pY3Vyc2VzIHByb2dyYW1taW5nLgorPExJPkEgPGEgaHJlZj0iaGFja2d1aWRlLmh0bWwiPmhhY2tlcnMgZ3VpZGU8L2E+IHRvIG5jdXJzZXMuCis8TEk+QSBkZXNjcmlwdGlvbiBvZiB0aGUgPGEgaHJlZj0iQWRhOTUuaHRtbCI+QWRhOTUgYmluZGluZzwvYT4sIGJ5IEomdXVtbDtyZ2VuIFBmZWlmZXIuCis8bGk+QSA8YSBocmVmPSJOQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwiPkEgc2hvcnQgdHV0b3JpYWw8L2E+LCBieSBQcmFkZWVwIFBhZGFsYS4KIDwvVUw+PFA+CiBXZSBhbHNvIGhhdmUgSFRNTCB2ZXJzaW9ucyBvZiBhbGwgdGhlIG5jdXJzZXMgPGEgaHJlZj0ibWFuIj5tYW5wYWdlczwvYT4uCiA8L0JPRFk+CiA8L0hUTUw+Ci08IS0tCi0jIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLSMgTG9jYWwgVmFyaWFibGVzOgotIyBtb2RlOmh0bWwKLSMgY2FzZS1mb2xkLXNlYXJjaDpuaWwKLSMgZmlsbC1jb2x1bW46NzAKLSMgRW5kOgotLS0+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vYWRhY3Vyc2VzLWNvbmZpZy4xLmh0bWwgYi9kb2MvaHRtbC9tYW4vYWRhY3Vyc2VzLWNvbmZpZy4xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzNzcxYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9odG1sL21hbi9hZGFjdXJzZXMtY29uZmlnLjEuaHRtbApAQCAtMCwwICsxLDE1OCBAQAorPCEtLSAKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIENvcHlyaWdodCAoYykgMjAxMC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBASWQ6IE1LYWRhX2NvbmZpZy5pbix2IDEuOCAyMDE0LzA2LzA3IDE5OjMyOjUyIHRvbSBFeHAgQAorLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgorPFRJVExFPkFEQUNVUlNFUyAxICAgVXNlciBDb21tYW5kczwvVElUTEU+Cis8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KKzxCT0RZPgorPEgxPkFEQUNVUlNFUyAxICAgVXNlciBDb21tYW5kczwvSDE+Cis8SFI+Cis8UFJFPgorPFNUUk9ORz48QSBIUkVGPSJBREFDVVJTRVMuMS5odG1sIj5BREFDVVJTRVMoMSk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICBVc2VyIENvbW1hbmRzICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9IkFEQUNVUlNFUy4xLmh0bWwiPkFEQUNVUlNFUygxKTwvQT48L1NUUk9ORz4KKworCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CisgICAgICAgYWRhY3Vyc2VzLWNvbmZpZyAtIGhlbHBlciBzY3JpcHQgZm9yIEFkYUN1cnNlcyBsaWJyYXJpZXMKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+YWRhY3Vyc2VzLWNvbmZpZzwvU1RST05HPiBbPEVNPm9wdGlvbnM8L0VNPl0KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIFRoaXMgIGlzICBhICBzaGVsbCAgc2NyaXB0IHdoaWNoIHNpbXBsaWZpZXMgY29uZmlndXJpbmcgYW4KKyAgICAgICBhcHBsaWNhdGlvbiAgdG8gIHVzZSAgdGhlICBBZGFDdXJzZXMgIGxpYnJhcnkgIGJpbmRpbmcgIHRvCisgICAgICAgbmN1cnNlcy4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1PUFRJT05TIj5PUFRJT05TPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPi0tY2ZsYWdzPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zICB0aGUgZ25hdCAoQWRhIGNvbXBpbGVyKSBmbGFncyBuZWVkZWQgdG8gY29tLQorICAgICAgICAgICAgICBwaWxlIHdpdGggQWRhQ3Vyc2VzLgorCisgICAgICAgPFNUUk9ORz4tLWxpYnM8L1NUUk9ORz4gZWNob3MgIHRoZSAgZ25hdCAgbGlicmFyaWVzICBuZWVkZWQgIHRvICBsaW5rICB3aXRoCisgICAgICAgICAgICAgIEFkYUN1cnNlcy4KKworICAgICAgIDxTVFJPTkc+LS12ZXJzaW9uPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zICB0aGUgcmVsZWFzZStwYXRjaGRhdGUgdmVyc2lvbiBvZiB0aGUgbmN1cnNlcworICAgICAgICAgICAgICBsaWJyYXJpZXMgdXNlZCB0byBjb25maWd1cmUgYW5kIGJ1aWxkIEFkYUN1cnNlcy4KKworICAgICAgIDxTVFJPTkc+LS1oZWxwPC9TVFJPTkc+IHByaW50cyBhICBsaXN0ICBvZiAgdGhlICA8U1RST05HPmFkYWN1cnNlcy1jb25maWc8L1NUUk9ORz4gIHNjcmlwdCdzCisgICAgICAgICAgICAgIG9wdGlvbnMuCisKKyAgICAgICBJZiAgbm8gb3B0aW9ucyBhcmUgZ2l2ZW4sIDxTVFJPTkc+YWRhY3Vyc2VzLWNvbmZpZzwvU1RST05HPiBwcmludHMgdGhlIGNvbS0KKyAgICAgICBiaW5hdGlvbiBvZiA8U1RST05HPi0tY2ZsYWdzPC9TVFJPTkc+IGFuZCA8U1RST05HPi0tbGliczwvU1RST05HPiB0aGF0IDxTVFJPTkc+Z25hdG1ha2U8L1NUUk9ORz4gZXhwZWN0cyAoc2VlCisgICAgICAgZXhhbXBsZSkuCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItRVhBTVBMRSI+RVhBTVBMRTwvYT48L0gyPjxQUkU+CisgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2luZyB0aGF0IHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlICJIZWxsbworICAgICAgIFdvcmxkISIgICBwcm9ncmFtICBmb3IgIEFkYUN1cnNlcy4gICBNYWtlICBhICBmaWxlICAgbmFtZWQKKyAgICAgICAiaGVsbG8uYWRiIjoKKyAgICAgICAgICAgICAgd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOyB1c2UgVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlczsKKworICAgICAgICAgICAgICBwcm9jZWR1cmUgSGVsbG8gaXMKKworICAgICAgICAgICAgICAgICBWaXNpYmlsaXR5IDogQ3Vyc29yX1Zpc2liaWxpdHkgOj0gSW52aXNpYmxlOworICAgICAgICAgICAgICAgICBkb25lIDogQm9vbGVhbiA6PSBGYWxzZTsKKyAgICAgICAgICAgICAgICAgYyA6IEtleV9Db2RlOworCisgICAgICAgICAgICAgIGJlZ2luCisKKyAgICAgICAgICAgICAgICAgSW5pdF9TY3JlZW47CisgICAgICAgICAgICAgICAgIFNldF9FY2hvX01vZGUgKEZhbHNlKTsKKworICAgICAgICAgICAgICAgICBTZXRfQ3Vyc29yX1Zpc2liaWxpdHkgKFZpc2liaWxpdHkpOworICAgICAgICAgICAgICAgICBTZXRfVGltZW91dF9Nb2RlIChTdGFuZGFyZF9XaW5kb3csIE5vbl9CbG9ja2luZywgMCk7CisKKyAgICAgICAgICAgICAgICAgTW92ZV9DdXJzb3IgKExpbmUgPSZndDsgTGluZXMgLyAyLCBDb2x1bW4gPSZndDsgKENvbHVtbnMgLSAxMikgLyAyKTsKKyAgICAgICAgICAgICAgICAgQWRkIChTdHIgPSZndDsgIkhlbGxvIFdvcmxkISIpOworCisgICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBkb25lIGxvb3AKKworICAgICAgICAgICAgICAgICAgICBjIDo9IEdldF9LZXlzdHJva2UgKFN0YW5kYXJkX1dpbmRvdyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgYyBpcworICAgICAgICAgICAgICAgICAgICB3aGVuIENoYXJhY3RlcidQb3MgKCdxJykgPSZndDsgZG9uZSA6PSBUcnVlOworICAgICAgICAgICAgICAgICAgICB3aGVuIG90aGVycyA9Jmd0OyBudWxsOworICAgICAgICAgICAgICAgICAgICBlbmQgY2FzZTsKKworICAgICAgICAgICAgICAgICAgICBOYXBfTWlsbGlfU2Vjb25kcyAoNTApOworCisgICAgICAgICAgICAgICAgIGVuZCBsb29wOworCisgICAgICAgICAgICAgICAgIEVuZF9XaW5kb3dzOworCisgICAgICAgICAgICAgIGVuZCBIZWxsbzsKKworICAgICAgIFRoZW4sIHVzaW5nCisgICAgICAgICAgICAgIGduYXRtYWtlICBgYWRhY3Vyc2VzLWNvbmZpZyAgLS1jZmxhZ3NgIGhlbGxvIC1sYXJncworICAgICAgICAgICAgICBgYWRhY3Vyc2VzLWNvbmZpZyAtLWxpYnNgCisKKyAgICAgICBvciAoc2ltcGxlcik6CisgICAgICAgICAgICAgIGduYXRtYWtlIGhlbGxvIGBhZGFjdXJzZXMtY29uZmlnYAorCisgICAgICAgeW91IHdpbGwgY29tcGlsZSBhbmQgbGluayB0aGUgcHJvZ3JhbS4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgorCisgICAgICAgVGhpcyBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNS45IChwYXRjaCAyMDE1MDIxNSkuCisKKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iQURBQ1VSU0VTLjEuaHRtbCI+QURBQ1VSU0VTKDEpPC9BPjwvU1RST05HPgorPC9QUkU+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItT1BUSU9OUyI+T1BUSU9OUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FWEFNUExFIj5FWEFNUExFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2NhcHRvaW5mby4xbS5odG1sIGIvZG9jL2h0bWwvbWFuL2NhcHRvaW5mby4xbS5odG1sCmluZGV4IDkxYjMxNTAuLmMwY2RiZjkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jYXB0b2luZm8uMW0uaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY2FwdG9pbmZvLjFtLmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw1NiArMjcsNTggQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGNhcHRvaW5mby4xbSx2IDEuMjIgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwIEAKKyAgKiBASWQ6IGNhcHRvaW5mby4xbSx2IDEuMjUgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jYXB0b2luZm8gMW08L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jYXB0b2luZm8gMW08L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmNhcHRvaW5mbyAxbTwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY2FwdG9pbmZvLjFtLmh0bWwiPmNhcHRvaW5mbygxbSk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvKDFtKTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmNhcHRvaW5mbzwvU1RST05HPiAgLSBjb252ZXJ0IGEgPEVNPnRlcm1jYXA8L0VNPiBkZXNjcmlwdGlvbiBpbnRvIGEgPEVNPnRlcm1pbmZvPC9FTT4KICAgICAgICBkZXNjcmlwdGlvbgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5jYXB0b2luZm88L1NUUk9ORz4gWzxTVFJPTkc+LXY8L1NUUk9ORz48RU0+bjwvRU0+IDxFTT53aWR0aDwvRU0+XSAgWzxTVFJPTkc+LVY8L1NUUk9ORz5dIFs8U1RST05HPi0xPC9TVFJPTkc+XSBbPFNUUk9ORz4tdzwvU1RST05HPiA8RU0+d2lkdGg8L0VNPl0gPEVNPmZpbGU8L0VNPiAuIC4gLgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+Y2FwdG9pbmZvPC9TVFJPTkc+IGxvb2tzIGluIDxFTT5maWxlPC9FTT4gIGZvciAgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+ICBkZXNjcmlwdGlvbnMuICAgRm9yCi0gICAgICAgZWFjaCAgb25lICBmb3VuZCwgIGFuICBlcXVpdmFsZW50ICA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRlc2NyaXB0aW9uIGlzCi0gICAgICAgd3JpdHRlbiB0byBzdGFuZGFyZCBvdXRwdXQuICBUZXJtY2FwIDxTVFJPTkc+dGM8L1NUUk9ORz4gIGNhcGFiaWxpdGllcyAgYXJlCi0gICAgICAgdHJhbnNsYXRlZCBkaXJlY3RseSB0byB0ZXJtaW5mbyA8U1RST05HPnVzZTwvU1RST05HPiBjYXBhYmlsaXRpZXMuCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPmNhcHRvaW5mbzwvU1RST05HPiBsb29rcyAgaW4gIGVhY2ggIGdpdmVuICB0ZXh0ICA8RU0+ZmlsZTwvRU0+ICBmb3IgIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPgorICAgICAgIGRlc2NyaXB0aW9ucy4gICBGb3IgZWFjaCBvbmUgZm91bmQsIGFuIGVxdWl2YWxlbnQgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPgorICAgICAgIGRlc2NyaXB0aW9uIGlzIHdyaXR0ZW4gdG8gIHN0YW5kYXJkICBvdXRwdXQuICAgVGVybWNhcCAgPFNUUk9ORz50YzwvU1RST05HPgorICAgICAgIGNhcGFiaWxpdGllcyBhcmUgdHJhbnNsYXRlZCBkaXJlY3RseSB0byB0ZXJtaW5mbyA8U1RST05HPnVzZTwvU1RST05HPiBjYXBhLQorICAgICAgIGJpbGl0aWVzLgogCiAgICAgICAgSWYgbm8gPEVNPmZpbGU8L0VNPiBpcyBnaXZlbiwgdGhlbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPFNUUk9ORz5URVJNQ0FQPC9TVFJPTkc+Ci0gICAgICAgaXMgdXNlZCBmb3IgdGhlIGZpbGVuYW1lIG9yIGVudHJ5LiAgSWYgPFNUUk9ORz5URVJNQ0FQPC9TVFJPTkc+IGlzICBhICBmdWxsCisgICAgICAgaXMgIHVzZWQgIGZvciB0aGUgZmlsZW5hbWUgb3IgZW50cnkuICBJZiA8U1RST05HPlRFUk1DQVA8L1NUUk9ORz4gaXMgYSBmdWxsCiAgICAgICAgcGF0aG5hbWUgdG8gYSBmaWxlLCBvbmx5IHRoZSB0ZXJtaW5hbCB3aG9zZSBuYW1lIGlzIHNwZWNpLQotICAgICAgIGZpZWQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxTVFJPTkc+VEVSTTwvU1RST05HPiAgaXMgIGV4dHJhY3RlZCAgZnJvbQotICAgICAgIHRoYXQgIGZpbGUuICAgSWYgIHRoZSAgZW52aXJvbm1lbnQgdmFyaWFibGUgPFNUUk9ORz5URVJNQ0FQPC9TVFJPTkc+IGlzIG5vdAorICAgICAgIGZpZWQgIGluICB0aGUgIGVudmlyb25tZW50IHZhcmlhYmxlIDxTVFJPTkc+VEVSTTwvU1RST05HPiBpcyBleHRyYWN0ZWQgZnJvbQorICAgICAgIHRoYXQgZmlsZS4gIElmIHRoZSBlbnZpcm9ubWVudCAgdmFyaWFibGUgIDxTVFJPTkc+VEVSTUNBUDwvU1RST05HPiAgaXMgIG5vdAogICAgICAgIHNldCwgdGhlbiB0aGUgZmlsZSA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm88L1NUUk9ORz4gaXMgcmVhZC4KIAotICAgICAgIDxTVFJPTkc+LXY8L1NUUk9ORz4gICBwcmludCBvdXQgdHJhY2luZyBpbmZvcm1hdGlvbiBvbiAgc3RhbmRhcmQgIGVycm9yICBhcworICAgICAgIDxTVFJPTkc+LXY8L1NUUk9ORz4gICBwcmludCAgb3V0ICB0cmFjaW5nICBpbmZvcm1hdGlvbiBvbiBzdGFuZGFyZCBlcnJvciBhcwogICAgICAgICAgICAgdGhlIHByb2dyYW0gcnVucy4KIAotICAgICAgIDxTVFJPTkc+LVY8L1NUUk9ORz4gICBwcmludCAgb3V0IHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9ncmFtIGluIHVzZSBvbiBzdGFuLQorICAgICAgIDxTVFJPTkc+LVY8L1NUUk9ORz4gICBwcmludCBvdXQgdGhlIHZlcnNpb24gb2YgdGhlIHByb2dyYW0gaW4gdXNlIG9uICBzdGFuLQogICAgICAgICAgICAgZGFyZCBlcnJvciBhbmQgZXhpdC4KIAotICAgICAgIDxTVFJPTkc+LTE8L1NUUk9ORz4gICBjYXVzZSB0aGUgZmllbGRzIHRvIHByaW50IG91dCBvbmUgdG8gYSBsaW5lLiAgIE90aGVyLQorICAgICAgIDxTVFJPTkc+LTE8L1NUUk9ORz4gICBjYXVzZSAgdGhlIGZpZWxkcyB0byBwcmludCBvdXQgb25lIHRvIGEgbGluZS4gIE90aGVyLQogICAgICAgICAgICAgd2lzZSwgdGhlIGZpZWxkcyB3aWxsIGJlIHByaW50ZWQgc2V2ZXJhbCB0byBhIGxpbmUgdG8KICAgICAgICAgICAgIGEgbWF4aW11bSB3aWR0aCBvZiA2MCBjaGFyYWN0ZXJzLgogCkBAIC04NSwyMiArODYsMjEgQEAKIAogCiA8L1BSRT4KLTxIMj5GSUxFUzwvSDI+PFBSRT4KLSAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvIENvbXBpbGVkICAgICB0ZXJtaW5hbCAgICAgIGRlc2NyaXB0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZS4KKzxIMj48YSBuYW1lPSJoMi1GSUxFUyI+RklMRVM8L2E+PC9IMj48UFJFPgorICAgICAgIC91c3Ivc2hhcmUvdGVybWluZm8gQ29tcGlsZWQgIHRlcm1pbmFsICBkZXNjcmlwdGlvbiAgZGF0YS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuCiAKIAogPC9QUkU+Ci08SDI+VFJBTlNMQVRJT05TIEZST00gTk9OU1RBTkRBUkQgQ0FQQUJJTElUSUVTPC9IMj48UFJFPgotICAgICAgIFNvbWUgIG9ic29sZXRlIG5vbnN0YW5kYXJkIGNhcGFiaWxpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgICBiZSB0cmFuc2xhdGVkIGludG8gIHN0YW5kYXJkICAoU1ZyNC9YU0kgIEN1cnNlcykgIHRlcm1pbmZvCi0gICAgICAgY2FwYWJpbGl0aWVzICBieSAgPFNUUk9ORz5jYXB0b2luZm88L1NUUk9ORz4uICAgV2hlbmV2ZXIgb25lIG9mIHRoZXNlIGF1dG8tCi0gICAgICAgbWF0aWMgdHJhbnNsYXRpb25zIGlzIGRvbmUsICB0aGUgIHByb2dyYW0gIHdpbGwgIGlzc3VlICBhbgorPEgyPjxhIG5hbWU9ImgyLVRSQU5TTEFUSU9OUy1GUk9NLU5PTlNUQU5EQVJELUNBUEFCSUxJVElFUyI+VFJBTlNMQVRJT05TIEZST00gTk9OU1RBTkRBUkQgQ0FQQUJJTElUSUVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBTb21lIG9ic29sZXRlIG5vbnN0YW5kYXJkIGNhcGFiaWxpdGllcyB3aWxsICBhdXRvbWF0aWNhbGx5CisgICAgICAgYmUgIHRyYW5zbGF0ZWQgIGludG8gIHN0YW5kYXJkICAoU1ZyNC9YU0kgQ3Vyc2VzKSB0ZXJtaW5mbworICAgICAgIGNhcGFiaWxpdGllcyBieSA8U1RST05HPmNhcHRvaW5mbzwvU1RST05HPi4gIFdoZW5ldmVyIG9uZSAgb2YgIHRoZXNlICBhdXRvLQorICAgICAgIG1hdGljICB0cmFuc2xhdGlvbnMgIGlzICBkb25lLCAgdGhlICBwcm9ncmFtIHdpbGwgaXNzdWUgYW4KICAgICAgICBub3RpZmljYXRpb24gdG8gc3RkZXJyLCBpbnZpdGluZyB0aGUgdXNlciB0byBjaGVjayB0aGF0IGl0Ci0gICAgICAgaGFzIG5vdCBtaXN0YWtlbmx5IHRyYW5zbGF0ZWQgIGEgIGNvbXBsZXRlbHkgIHVua25vd24gIGFuZAorICAgICAgIGhhcyAgbm90ICBtaXN0YWtlbmx5ICB0cmFuc2xhdGVkICBhIGNvbXBsZXRlbHkgdW5rbm93biBhbmQKICAgICAgICByYW5kb20gY2FwYWJpbGl0eSBhbmQvb3Igc3ludGF4IGVycm9yLgogCi0KICAgICAgICBOb25zdGQgICBTdGQgICAgRnJvbSAgICAgICAgICAgVGVybWluZm8KICAgICAgICAgbmFtZSAgICBuYW1lICAgICAgICAgICAgICAgICBjYXBhYmlsaXR5CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzNCwxMSArMTM0LDEwIEBACiAgICAgICAgRkMgICAgICAgU2YgICAgIFRlayAgICAgc2V0X2ZvcmVncm91bmQKICAgICAgICBIUyAgICAgICBtaCAgICAgSXJpcyAgICBlbnRlcl9kaW1fbW9kZQogCi0gICAgICAgWEVOSVggIHRlcm1jYXAgIGFsc28gdXNlZCB0byBoYXZlIGEgc2V0IG9mIGV4dGVuc2lvbiBjYXBhLQotICAgICAgIGJpbGl0aWVzIGZvciBmb3JtcyBkcmF3aW5nLCBkZXNpZ25lZCB0byB0YWtlIGFkdmFudGFnZSAgb2YKKyAgICAgICBYRU5JWCB0ZXJtY2FwIGFsc28gdXNlZCB0byBoYXZlIGEgc2V0IG9mICBleHRlbnNpb24gIGNhcGEtCisgICAgICAgYmlsaXRpZXMgIGZvciBmb3JtcyBkcmF3aW5nLCBkZXNpZ25lZCB0byB0YWtlIGFkdmFudGFnZSBvZgogICAgICAgIHRoZSBJQk0gUEMgaGlnaC1oYWxmIGdyYXBoaWNzLiAgVGhleSB3ZXJlIGFzIGZvbGxvd3M6CiAKLQogICAgICAgIENhcCAgICAgICAgICBHcmFwaGljCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBHMiAgICB1cHBlciBsZWZ0CkBAIC0xNjUsMTQgKzE2NCwxNCBAQAogICAgICAgIEdjICAgIGludGVyc2VjdGlvbgogICAgICAgIEdHICAgIGFjcyBtYWdpYyBjb29raWUgY291bnQKIAotICAgICAgIElmICB0aGUgIHNpbmdsZS1saW5lICBjYXBhYmlsaXRpZXMgb2NjdXIgaW4gYW4gZW50cnksIHRoZXkKLSAgICAgICB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY29tcG9zZWQgaW50byBhbiA8RU0+YWNzYzwvRU0+ICBzdHJpbmcuICAgVGhlCisgICAgICAgSWYgdGhlIHNpbmdsZS1saW5lIGNhcGFiaWxpdGllcyBvY2N1ciBpbiAgYW4gIGVudHJ5LCAgdGhleQorICAgICAgIHdpbGwgIGF1dG9tYXRpY2FsbHkgIGJlIGNvbXBvc2VkIGludG8gYW4gPEVNPmFjc2M8L0VNPiBzdHJpbmcuICBUaGUKICAgICAgICBkb3VibGUtbGluZSBjYXBhYmlsaXRpZXMgYW5kIDxTVFJPTkc+R0c8L1NUUk9ORz4gYXJlIGRpc2NhcmRlZCB3aXRoIGEgd2Fybi0KICAgICAgICBpbmcgbWVzc2FnZS4KIAogICAgICAgIElCTSdzIEFJWCBoYXMgYSB0ZXJtaW5mbyBmYWNpbGl0eSBkZXNjZW5kZWQgZnJvbSBTVnIxIHRlci0KLSAgICAgICBtaW5mbyBidXQgaW5jb21wYXRpYmxlIHdpdGggdGhlIFNWcjQgZm9ybWF0LiBUaGUgZm9sbG93aW5nCi0gICAgICAgQUlYIGV4dGVuc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkgdHJhbnNsYXRlZDoKKyAgICAgICBtaW5mbyBidXQgaW5jb21wYXRpYmxlIHdpdGggdGhlIFNWcjQgZm9ybWF0LiAgVGhlICBmb2xsb3ctCisgICAgICAgaW5nIEFJWCBleHRlbnNpb25zIGFyZSBhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZWQ6CiAKICAgICAgICAgSUJNICAgIFhTSQogICAgICAgIC0tLS0tLS0tLS0tLS0KQEAgLTE4Myw0NCArMTgyLDUyIEBACiAgICAgICAgZm9udDIgICBzMmRzCiAgICAgICAgZm9udDMgICBzM2RzCiAKLSAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBBSVggPEVNPmJveDE8L0VNPiBjYXBhYmlsaXR5ICB3aWxsICBiZSAgYXV0b21hdGktCisgICAgICAgQWRkaXRpb25hbGx5LCAgdGhlICBBSVggIDxFTT5ib3gxPC9FTT4gY2FwYWJpbGl0eSB3aWxsIGJlIGF1dG9tYXRpLQogICAgICAgIGNhbGx5IHRyYW5zbGF0ZWQgdG8gYW4gPEVNPmFjc2M8L0VNPiBzdHJpbmcuCiAKLSAgICAgICBIZXdsZXR0LVBhY2thcmQncyAgdGVybWluZm8gIGxpYnJhcnkgc3VwcG9ydHMgdHdvIG5vbnN0YW4tCi0gICAgICAgZGFyZCB0ZXJtaW5mbyBjYXBhYmlsaXRpZXMgPEVNPm1lbWw8L0VNPiAgKG1lbW9yeSAgbG9jaykgIGFuZCAgPEVNPm1lbXU8L0VNPgotICAgICAgIChtZW1vcnkgIHVubG9jaykuICAgVGhlc2Ugd2lsbCBiZSBkaXNjYXJkZWQgd2l0aCBhIHdhcm5pbmcKKyAgICAgICBIZXdsZXR0LVBhY2thcmQncyB0ZXJtaW5mbyBsaWJyYXJ5IHN1cHBvcnRzICB0d28gIG5vbnN0YW4tCisgICAgICAgZGFyZCAgdGVybWluZm8gIGNhcGFiaWxpdGllcyAgPEVNPm1lbWw8L0VNPiAgKG1lbW9yeSBsb2NrKSBhbmQgPEVNPm1lbXU8L0VNPgorICAgICAgIChtZW1vcnkgdW5sb2NrKS4gIFRoZXNlIHdpbGwgYmUgZGlzY2FyZGVkIHdpdGggIGEgIHdhcm5pbmcKICAgICAgICBtZXNzYWdlLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgotICAgICAgIFRoaXMgdXRpbGl0eSBpcyBhY3R1YWxseSBhIGxpbmsgdG8gPFNUUk9ORz48QSBIUkVGPSJ0aWMuMW0uaHRtbCI+dGljKDFtKTwvQT48L1NUUk9ORz4sIHJ1bm5pbmcgaW4gIDxFTT4tSTwvRU0+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGlzICB1dGlsaXR5IGlzIGFjdHVhbGx5IGEgbGluayB0byA8U1RST05HPjxBIEhSRUY9InRpYy4xbS5odG1sIj50aWMoMW0pPC9BPjwvU1RST05HPiwgcnVubmluZyBpbiA8RU0+LUk8L0VNPgogICAgICAgIG1vZGUuICBZb3UgY2FuIHVzZSBvdGhlciA8U1RST05HPnRpYzwvU1RST05HPiBvcHRpb25zIHN1Y2ggYXMgPFNUUk9ORz4tZjwvU1RST05HPiBhbmQgIDxTVFJPTkc+LXg8L1NUUk9ORz4uCiAKLSAgICAgICBUaGUgIHRyYWNlIG9wdGlvbiBpcyBub3QgaWRlbnRpY2FsIHRvIFNWcjQncy4gIFVuZGVyIFNWcjQsCi0gICAgICAgaW5zdGVhZCBvZiBmb2xsb3dpbmcgdGhlIDxTVFJPTkc+LXY8L1NUUk9ORz4gd2l0aCAgYSAgdHJhY2UgIGxldmVsICBuLCAgeW91CisgICAgICAgVGhlIHRyYWNlIG9wdGlvbiBpcyBub3QgaWRlbnRpY2FsIHRvIFNWcjQncy4gIFVuZGVyICBTVnI0LAorICAgICAgIGluc3RlYWQgIG9mICBmb2xsb3dpbmcgIHRoZSAgPFNUUk9ORz4tdjwvU1RST05HPiAgd2l0aCBhIHRyYWNlIGxldmVsIG4sIHlvdQogICAgICAgIHJlcGVhdCBpdCBuIHRpbWVzLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJpbmZvY21wLjFtLmh0bWwiPmluZm9jbXAoMW0pPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+CiAKLSAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA1LjYgKHBhdGNoIDIwMDgxMDExKS4KKyAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA2LjAgKHBhdGNoIDIwMTUwODA4KS4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Ci0gICAgICAgRXJpYyBTLiBSYXltb25kICZsdDtlc3JAc25hcmsudGh5cnN1cy5jb20mZ3Q7Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgorICAgICAgIEVyaWMgUy4gUmF5bW9uZCAmbHQ7ZXNyQHNuYXJrLnRoeXJzdXMuY29tJmd0OyBhbmQKKyAgICAgICBUaG9tYXMgRS4gRGlja2V5ICZsdDtkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQmZ3Q7CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvKDFtKTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUZJTEVTIj5GSUxFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1UUkFOU0xBVElPTlMtRlJPTS1OT05TVEFOREFSRC1DQVBBQklMSVRJRVMiPlRSQU5TTEFUSU9OUyBGUk9NIE5PTlNUQU5EQVJEIENBUEFCSUxJVElFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUiI+QVVUSE9SPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY2xlYXIuMS5odG1sIGIvZG9jL2h0bWwvbWFuL2NsZWFyLjEuaHRtbAppbmRleCAyMjY2MWI1Li42MjE1MzMxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY2xlYXIuMS5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jbGVhci4xLmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDU4ICsyNiw2NCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY2xlYXIuMSx2IDEuNiAyMDA2LzEyLzI0IDE4OjA3OjUzIHRvbSBFeHAgQAorICAqIEBJZDogY2xlYXIuMSx2IDEuMTAgMjAxMy8wNi8yMiAyMjoyMjoxMSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jbGVhciAxPC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y2xlYXIgMTwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y2xlYXIgMTwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY2xlYXIuMS5odG1sIj5jbGVhcigxKTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjbGVhci4xLmh0bWwiPmNsZWFyKDEpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Y2xlYXI8L1NUUk9ORz4gLSBjbGVhciB0aGUgdGVybWluYWwgc2NyZWVuCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmNsZWFyPC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz5jbGVhcjwvU1RST05HPiBjbGVhcnMgeW91ciBzY3JlZW4gaWYgdGhpcyBpcyBwb3NzaWJsZS4gIEl0IGxvb2tzIGluCi0gICAgICAgdGhlIGVudmlyb25tZW50IGZvciB0aGUgdGVybWluYWwgdHlwZSBhbmQgdGhlbiBpbiB0aGUgPFNUUk9ORz50ZXItPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5taW5mbzwvU1RST05HPiBkYXRhYmFzZSB0byBmaWd1cmUgb3V0IGhvdyB0byBjbGVhciB0aGUgc2NyZWVuLgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5jbGVhcjwvU1RST05HPiAgY2xlYXJzICB5b3VyICBzY3JlZW4gaWYgdGhpcyBpcyBwb3NzaWJsZSwgaW5jbHVkaW5nCisgICAgICAgaXRzIHNjcm9sbGJhY2sgYnVmZmVyIChpZiB0aGUgZXh0ZW5kZWQgIkUzIiBjYXBhYmlsaXR5ICBpcworICAgICAgIGRlZmluZWQpLiAgPFNUUk9ORz5jbGVhcjwvU1RST05HPiBsb29rcyBpbiB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSB0ZXJtaW5hbAorICAgICAgIHR5cGUgYW5kIHRoZW4gaW4gdGhlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gZGF0YWJhc2UgdG8gZGV0ZXJtaW5lIGhvdyB0bworICAgICAgIGNsZWFyIHRoZSBzY3JlZW4uCiAKICAgICAgICA8U1RST05HPmNsZWFyPC9TVFJPTkc+ICBpZ25vcmVzICBhbnkgIGNvbW1hbmQtbGluZSAgcGFyYW1ldGVycyAgdGhhdCBtYXkgYmUKICAgICAgICBwcmVzZW50LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0cHV0LjEuaHRtbCI+dHB1dCgxKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4KIAotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjbGVhci4xLmh0bWwiPmNsZWFyKDEpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGRfd2NoLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19hZGRfd2NoLjN4Lmh0bWwKaW5kZXggYWY3Yzg5NS4uZjIyN2ZkMyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfYWRkX3djaC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2FkZF93Y2guM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2FkZF93Y2guM3gsdiAxLjYgMjAwNi8xMi8yNCAxNToyMjoyMiB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfYWRkX3djaC4zeCx2IDEuMTYgMjAxNS8wNy8yMCAyMzo0NDo1NiB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2FkZF93Y2ggM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2FkZF93Y2ggM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfYWRkX3djaCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2NoLjN4Lmh0bWwiPmN1cnNfYWRkX3djaCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZF93Y2guM3guaHRtbCI+Y3Vyc19hZGRfd2NoKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmFkZF93Y2g8L1NUUk9ORz4sICAgPFNUUk9ORz53YWRkX3djaDwvU1RST05HPiwgIDxTVFJPTkc+bXZhZGRfd2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdndhZGRfd2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5lY2hvX3djaGFyPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+d2VjaG9fd2NoYXI8L1NUUk9ORz4gLSBhZGQgYSBjb21wbGV4IGNoYXJhY3RlciBhbmQgcmVuZGl0aW9uICB0byAgYQogICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdywgdGhlbiBhZHZhbmNlIHRoZSBjdXJzb3IKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmFkZF93Y2goPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53Y2g8L0VNPiA8U1RST05HPik7PC9TVFJPTkc+CkBAIC02NiwyOSArNjYsMzUgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1hZGRfd2NoIj5hZGRfd2NoPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5hZGRfd2NoPC9TVFJPTkc+LCA8U1RST05HPndhZGRfd2NoPC9TVFJPTkc+LCA8U1RST05HPm12YWRkX3djaDwvU1RST05HPiwgYW5kIDxTVFJPTkc+bXZ3YWRkX3djaDwvU1RST05HPiBmdW5jdGlvbnMKICAgICAgICBwdXQgdGhlIGNvbXBsZXggY2hhcmFjdGVyIDxFTT53Y2g8L0VNPiBpbnRvIHRoZSBnaXZlbiB3aW5kb3cgYXQgaXRzCiAgICAgICAgY3VycmVudCBwb3NpdGlvbiwgd2hpY2ggaXMgdGhlbiBhZHZhbmNlZC4gIFRoZXNlIGZ1bmN0aW9ucwogICAgICAgIHBlcmZvcm0gIHdyYXBwaW5nIGFuZCBzcGVjaWFsLWNoYXJhY3RlciBwcm9jZXNzaW5nIGFzIGZvbC0KICAgICAgICBsb3dzOgogCi0gICAgICAgLSAgICBJZiA8RU0+d2NoPC9FTT4gcmVmZXJzIHRvIGEgc3BhY2luZyBjaGFyYWN0ZXIsIHRoZW4gYW55IHByZXZpLQotICAgICAgICAgICAgb3VzICBjaGFyYWN0ZXIgIGF0ICB0aGF0ICBsb2NhdGlvbiBpcyByZW1vdmVkLiAgQSBuZXcKLSAgICAgICAgICAgIGNoYXJhY3RlciBzcGVjaWZpZWQgYnkgPEVNPndjaDwvRU0+IGlzIHBsYWNlZCBhdCB0aGF0IGxvY2F0aW9uCi0gICAgICAgICAgICB3aXRoICByZW5kaXRpb24gIHNwZWNpZmllZCAgYnkgIDxFTT53Y2g8L0VNPi4gIFRoZSBjdXJzb3IgdGhlbgotICAgICAgICAgICAgYWR2YW5jZXMgdG8gdGhlIG5leHQgc3BhY2luZyBjaGFyYWN0ZXIgb24gdGhlIHNjcmVlbi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiA8RU0+d2NoPC9FTT4gcmVmZXJzIHRvIGEgc3BhY2luZyBjaGFyYWN0ZXIsIHRoZW4gYW55ICBwcmV2aS0KKyAgICAgICAgICAgb3VzICBjaGFyYWN0ZXIgIGF0ICB0aGF0ICBsb2NhdGlvbiAgaXMgcmVtb3ZlZC4gIEEgbmV3CisgICAgICAgICAgIGNoYXJhY3RlciBzcGVjaWZpZWQgYnkgPEVNPndjaDwvRU0+IGlzIHBsYWNlZCBhdCB0aGF0ICBsb2NhdGlvbgorICAgICAgICAgICB3aXRoICByZW5kaXRpb24gIHNwZWNpZmllZCAgYnkgIDxFTT53Y2g8L0VNPi4gICBUaGUgY3Vyc29yIHRoZW4KKyAgICAgICAgICAgYWR2YW5jZXMgdG8gdGhlIG5leHQgc3BhY2luZyBjaGFyYWN0ZXIgb24gdGhlIHNjcmVlbi4KIAotICAgICAgIC0gICAgSWYgIDxFTT53Y2g8L0VNPiByZWZlcnMgdG8gYSBub24tc3BhY2luZyBjaGFyYWN0ZXIsIGFsbCBwcmV2aS0KLSAgICAgICAgICAgIG91cyBjaGFyYWN0ZXJzIGF0IHRoYXQgbG9jYXRpb24gYXJlICBwcmVzZXJ2ZWQuICAgVGhlCi0gICAgICAgICAgICBub24tc3BhY2luZyAgY2hhcmFjdGVycyBvZiA8RU0+d2NoPC9FTT4gYXJlIGFkZGVkIHRvIHRoZSBzcGFjLQotICAgICAgICAgICAgaW5nIGNvbXBsZXggY2hhcmFjdGVyLCBhbmQgdGhlIHJlbmRpdGlvbiBzcGVjaWZpZWQgYnkKLSAgICAgICAgICAgIDxFTT53Y2g8L0VNPiBpcyBpZ25vcmVkLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIDxFTT53Y2g8L0VNPiByZWZlcnMgdG8gYSBub24tc3BhY2luZyBjaGFyYWN0ZXIsIGFsbCBwcmV2aW91cworICAgICAgICAgICBjaGFyYWN0ZXJzICBhdCAgdGhhdCBsb2NhdGlvbiBhcmUgcHJlc2VydmVkLiAgVGhlIG5vbi0KKyAgICAgICAgICAgc3BhY2luZyBjaGFyYWN0ZXJzIG9mIDxFTT53Y2g8L0VNPiBhcmUgIGFkZGVkICB0byAgdGhlICBzcGFjaW5nCisgICAgICAgICAgIGNvbXBsZXggIGNoYXJhY3RlciwgYW5kIHRoZSByZW5kaXRpb24gc3BlY2lmaWVkIGJ5IDxFTT53Y2g8L0VNPgorICAgICAgICAgICBpcyBpZ25vcmVkLgogCi0gICAgICAgLSAgICBJZiAgdGhlICBjaGFyYWN0ZXIgIHBhcnQgIG9mICA8RU0+d2NoPC9FTT4gIGlzIGEgdGFiLCBuZXdsaW5lLAotICAgICAgICAgICAgYmFja3NwYWNlIG9yIG90aGVyIGNvbnRyb2wgY2hhcmFjdGVyLCB0aGUgIHdpbmRvdyAgaXMKLSAgICAgICAgICAgIHVwZGF0ZWQgYW5kIHRoZSBjdXJzb3IgbW92ZXMgYXMgaWYgPFNUUk9ORz5hZGRjaDwvU1RST05HPiB3ZXJlIGNhbGxlZC4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiB0aGUgY2hhcmFjdGVyICBwYXJ0ICBvZiAgPEVNPndjaDwvRU0+ICBpcyAgYSAgdGFiLCAgbmV3bGluZSwKKyAgICAgICAgICAgYmFja3NwYWNlICBvciAgb3RoZXIgIGNvbnRyb2wgY2hhcmFjdGVyLCB0aGUgd2luZG93IGlzCisgICAgICAgICAgIHVwZGF0ZWQgYW5kIHRoZSBjdXJzb3IgbW92ZXMgYXMgaWYgPFNUUk9ORz5hZGRjaDwvU1RST05HPiB3ZXJlIGNhbGxlZC4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1lY2hvX3djaGFyIj5lY2hvX3djaGFyPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5lY2hvX3djaGFyPC9TVFJPTkc+IGZ1bmN0aW9uIGlzIGZ1bmN0aW9uYWxseSAgZXF1aXZhbGVudCAgdG8gIGEKICAgICAgICBjYWxsIHRvIDxTVFJPTkc+YWRkX3djaDwvU1RST05HPiBmb2xsb3dlZCBieSBhIGNhbGwgdG8gPFNUUk9ORz5yZWZyZXNoPC9TVFJPTkc+LiAgU2ltaWxhcmx5LAogICAgICAgIHRoZSA8U1RST05HPndlY2hvX3djaGFyPC9TVFJPTkc+IGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvICBhICBjYWxsICB0bwpAQCAtMTAwLDQxICsxMDYsMTQ1IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFUzwvSDI+PFBSRT4KLSAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiBvbgotICAgICAgIHN1Y2Nlc3MuCis8SDM+PGEgbmFtZT0iaDMtTGluZS1HcmFwaGljcyI+TGluZSBHcmFwaGljczwvYT48L0gzPjxQUkU+CisgICAgICAgTGlrZSAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+YWRkY2hfd2NoPC9TVFJPTkc+ICBhY2NlcHRzIHN5bWJvbHMgd2hpY2ggbWFrZSBpdAorICAgICAgIHNpbXBsZSB0byBkcmF3IGxpbmVzIGFuZCAgb3RoZXIgIGZyZXF1ZW50bHkgIHVzZWQgIHNwZWNpYWwKKyAgICAgICBjaGFyYWN0ZXJzLiAgIFRoZXNlICBzeW1ib2xzICBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIFZUMTAwCisgICAgICAgbGluZS1kcmF3aW5nIHNldCBhcyA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2guM3guaHRtbCI+Y3Vyc19hZGRjaCgzeCk8L0E+PC9TVFJPTkc+LgorCisgICAgICAgPEVNPk5hbWU8L0VNPiAgICAgICAgICAgICAgPEVNPlVuaWNvZGU8L0VNPiAgICA8RU0+RGVmYXVsdDwvRU0+ICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgV0FDU19CTE9DSyAgICAgICAgMHgyNWFlICAgICAjICAgICAgICAgc29saWQgc3F1YXJlIGJsb2NrCisgICAgICAgV0FDU19CT0FSRCAgICAgICAgMHgyNTkyICAgICAjICAgICAgICAgYm9hcmQgb2Ygc3F1YXJlcworICAgICAgIFdBQ1NfQlRFRSAgICAgICAgIDB4MjUzNCAgICAgKyAgICAgICAgIGJvdHRvbSB0ZWUKKworICAgICAgIFdBQ1NfQlVMTEVUICAgICAgIDB4MDBiNyAgICAgbyAgICAgICAgIGJ1bGxldAorICAgICAgIFdBQ1NfQ0tCT0FSRCAgICAgIDB4MjU5MiAgICAgOiAgICAgICAgIGNoZWNrZXIgYm9hcmQgKHN0aXBwbGUpCisgICAgICAgV0FDU19EQVJST1cgICAgICAgMHgyMTkzICAgICB2ICAgICAgICAgYXJyb3cgcG9pbnRpbmcgZG93bgorICAgICAgIFdBQ1NfREVHUkVFICAgICAgIDB4MDBiMCAgICAgJyAgICAgICAgIGRlZ3JlZSBzeW1ib2wKKyAgICAgICBXQUNTX0RJQU1PTkQgICAgICAweDI1YzYgICAgICsgICAgICAgICBkaWFtb25kCisgICAgICAgV0FDU19HRVFVQUwgICAgICAgMHgyMjY1ICAgICAmZ3Q7ICAgICAgICAgZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvCisgICAgICAgV0FDU19ITElORSAgICAgICAgMHgyNTAwICAgICAtICAgICAgICAgaG9yaXpvbnRhbCBsaW5lCisgICAgICAgV0FDU19MQU5URVJOICAgICAgMHgyNjAzICAgICAjICAgICAgICAgbGFudGVybiBzeW1ib2wKKyAgICAgICBXQUNTX0xBUlJPVyAgICAgICAweDIxOTAgICAgICZsdDsgICAgICAgICBhcnJvdyBwb2ludGluZyBsZWZ0CisgICAgICAgV0FDU19MRVFVQUwgICAgICAgMHgyMjY0ICAgICAmbHQ7ICAgICAgICAgbGVzcy10aGFuLW9yLWVxdWFsLXRvCisgICAgICAgV0FDU19MTENPUk5FUiAgICAgMHgyNTE0ICAgICArICAgICAgICAgbG93ZXIgbGVmdC1oYW5kIGNvcm5lcgorICAgICAgIFdBQ1NfTFJDT1JORVIgICAgIDB4MjUxOCAgICAgKyAgICAgICAgIGxvd2VyIHJpZ2h0LWhhbmQgY29ybmVyCisgICAgICAgV0FDU19MVEVFICAgICAgICAgMHgyNTI0ICAgICArICAgICAgICAgbGVmdCB0ZWUKKyAgICAgICBXQUNTX05FUVVBTCAgICAgICAweDIyNjAgICAgICEgICAgICAgICBub3QtZXF1YWwKKyAgICAgICBXQUNTX1BJICAgICAgICAgICAweDAzYzAgICAgICogICAgICAgICBncmVlayBwaQorICAgICAgIFdBQ1NfUExNSU5VUyAgICAgIDB4MDBiMSAgICAgIyAgICAgICAgIHBsdXMvbWludXMKKyAgICAgICBXQUNTX1BMVVMgICAgICAgICAweDI1M2MgICAgICsgICAgICAgICBwbHVzCisgICAgICAgV0FDU19SQVJST1cgICAgICAgMHgyMTkyICAgICAmZ3Q7ICAgICAgICAgYXJyb3cgcG9pbnRpbmcgcmlnaHQKKyAgICAgICBXQUNTX1JURUUgICAgICAgICAweDI1MWMgICAgICsgICAgICAgICByaWdodCB0ZWUKKyAgICAgICBXQUNTX1MxICAgICAgICAgICAweDIzYmEgICAgIC0gICAgICAgICBzY2FuIGxpbmUgMQorICAgICAgIFdBQ1NfUzMgICAgICAgICAgIDB4MjNiYiAgICAgLSAgICAgICAgIHNjYW4gbGluZSAzCisgICAgICAgV0FDU19TNyAgICAgICAgICAgMHgyM2JjICAgICAtICAgICAgICAgc2NhbiBsaW5lIDcKKyAgICAgICBXQUNTX1M5ICAgICAgICAgICAweDIzYmQgICAgIF8gICAgICAgICBzY2FuIGxpbmUgOQorICAgICAgIFdBQ1NfU1RFUkxJTkcgICAgIDB4MDBhMyAgICAgZiAgICAgICAgIHBvdW5kLXN0ZXJsaW5nIHN5bWJvbAorICAgICAgIFdBQ1NfVFRFRSAgICAgICAgIDB4MjUyYyAgICAgKyAgICAgICAgIHRvcCB0ZWUKKyAgICAgICBXQUNTX1VBUlJPVyAgICAgICAweDIxOTEgICAgIF4gICAgICAgICBhcnJvdyBwb2ludGluZyB1cAorICAgICAgIFdBQ1NfVUxDT1JORVIgICAgIDB4MjUwYyAgICAgKyAgICAgICAgIHVwcGVyIGxlZnQtaGFuZCBjb3JuZXIKKyAgICAgICBXQUNTX1VSQ09STkVSICAgICAweDI1MTAgICAgICsgICAgICAgICB1cHBlciByaWdodC1oYW5kIGNvcm5lcgorICAgICAgIFdBQ1NfVkxJTkUgICAgICAgIDB4MjUwMiAgICAgfCAgICAgICAgIHZlcnRpY2FsIGxpbmUKKworICAgICAgIFRoZSB3aWRlLWNoYXJhY3RlciBjb25maWd1cmF0aW9uIG9mIG5jdXJzZXMgIGFsc28gIGRlZmluZXMKKyAgICAgICBzeW1ib2xzIGZvciB0aGljay0gYW5kIGRvdWJsZS1saW5lczoKKworICAgICAgIDxFTT5OYW1lPC9FTT4gICAgICAgICAgICAgIDxFTT5Vbmljb2RlPC9FTT4gICA8RU0+RGVmYXVsdDwvRU0+ICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICBXQUNTX1RfVUxDT1JORVIgICAweDI1MGYgICAgKyAgICAgICAgIHRoaWNrIHVwcGVyIGxlZnQgY29ybmVyCisgICAgICAgV0FDU19UX0xMQ09STkVSICAgMHgyNTE3ICAgICsgICAgICAgICB0aGljayBsb3dlciBsZWZ0IGNvcm5lcgorICAgICAgIFdBQ1NfVF9VUkNPUk5FUiAgIDB4MjUxMyAgICArICAgICAgICAgdGhpY2sgdXBwZXIgcmlnaHQgY29ybmVyCisgICAgICAgV0FDU19UX0xSQ09STkVSICAgMHgyNTFiICAgICsgICAgICAgICB0aGljayBsb3dlciByaWdodCBjb3JuZXIKKyAgICAgICBXQUNTX1RfTFRFRSAgICAgICAweDI1MmIgICAgKyAgICAgICAgIHRoaWNrIHRlZSBwb2ludGluZyByaWdodAorICAgICAgIFdBQ1NfVF9SVEVFICAgICAgIDB4MjUyMyAgICArICAgICAgICAgdGhpY2sgdGVlIHBvaW50aW5nIGxlZnQKKyAgICAgICBXQUNTX1RfQlRFRSAgICAgICAweDI1M2IgICAgKyAgICAgICAgIHRoaWNrIHRlZSBwb2ludGluZyB1cAorICAgICAgIFdBQ1NfVF9UVEVFICAgICAgIDB4MjUzMyAgICArICAgICAgICAgdGhpY2sgdGVlIHBvaW50aW5nIGRvd24KKyAgICAgICBXQUNTX1RfSExJTkUgICAgICAweDI1MDEgICAgLSAgICAgICAgIHRoaWNrIGhvcml6b250YWwgbGluZQorICAgICAgIFdBQ1NfVF9WTElORSAgICAgIDB4MjUwMyAgICB8ICAgICAgICAgdGhpY2sgdmVydGljYWwgbGluZQorICAgICAgIFdBQ1NfVF9QTFVTICAgICAgIDB4MjU0YiAgICArICAgICAgICAgdGhpY2sgbGFyZ2UgcGx1cyBvciBjcm9zc292ZXIKKyAgICAgICBXQUNTX0RfVUxDT1JORVIgICAweDI1NTQgICAgKyAgICAgICAgIGRvdWJsZSB1cHBlciBsZWZ0IGNvcm5lcgorICAgICAgIFdBQ1NfRF9MTENPUk5FUiAgIDB4MjU1YSAgICArICAgICAgICAgZG91YmxlIGxvd2VyIGxlZnQgY29ybmVyCisgICAgICAgV0FDU19EX1VSQ09STkVSICAgMHgyNTU3ICAgICsgICAgICAgICBkb3VibGUgdXBwZXIgcmlnaHQgY29ybmVyCisgICAgICAgV0FDU19EX0xSQ09STkVSICAgMHgyNTVkICAgICsgICAgICAgICBkb3VibGUgbG93ZXIgcmlnaHQgY29ybmVyCisgICAgICAgV0FDU19EX1JURUUgICAgICAgMHgyNTYzICAgICsgICAgICAgICBkb3VibGUgdGVlIHBvaW50aW5nIGxlZnQKKyAgICAgICBXQUNTX0RfTFRFRSAgICAgICAweDI1NjAgICAgKyAgICAgICAgIGRvdWJsZSB0ZWUgcG9pbnRpbmcgcmlnaHQKKyAgICAgICBXQUNTX0RfQlRFRSAgICAgICAweDI1NjkgICAgKyAgICAgICAgIGRvdWJsZSB0ZWUgcG9pbnRpbmcgdXAKKyAgICAgICBXQUNTX0RfVFRFRSAgICAgICAweDI1NjYgICAgKyAgICAgICAgIGRvdWJsZSB0ZWUgcG9pbnRpbmcgZG93bgorICAgICAgIFdBQ1NfRF9ITElORSAgICAgIDB4MjU1MCAgICAtICAgICAgICAgZG91YmxlIGhvcml6b250YWwgbGluZQorICAgICAgIFdBQ1NfRF9WTElORSAgICAgIDB4MjU1MSAgICB8ICAgICAgICAgZG91YmxlIHZlcnRpY2FsIGxpbmUKKyAgICAgICBXQUNTX0RfUExVUyAgICAgICAweDI1NmMgICAgKyAgICAgICAgIGRvdWJsZSBsYXJnZSBwbHVzIG9yIGNyb3Nzb3ZlcgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiBvbgorICAgICAgIHN1Y2Nlc3MuCisKKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmFkZF93Y2g8L1NUUk9ORz4sIDxTVFJPTkc+bXZhZGRfd2NoPC9TVFJPTkc+LCA8U1RST05HPm12d2FkZF93Y2g8L1NUUk9ORz4sICBhbmQgIDxTVFJPTkc+ZWNob193Y2hhcjwvU1RST05HPgogICAgICAgIG1heSBiZSBtYWNyb3MuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgQWxsICB0aGVzZSBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuLQotICAgICAgIGRhcmQsIElzc3VlIDQuICBUaGUgZGVmYXVsdHMgc3BlY2lmaWVkICBmb3IgIGZvcm1zLWRyYXdpbmcKLSAgICAgICBjaGFyYWN0ZXJzIGFwcGx5IGluIHRoZSBQT1NJWCBsb2NhbGUuCis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBBbGwgIG9mICB0aGVzZSAgZnVuY3Rpb25zICBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzCisgICAgICAgc3RhbmRhcmQsIElzc3VlIDQuICBUaGUgZGVmYXVsdHMgc3BlY2lmaWVkIGZvciAgbGluZS1kcmF3LQorICAgICAgIGluZyBjaGFyYWN0ZXJzIGFwcGx5IGluIHRoZSBQT1NJWCBsb2NhbGUuCiAKLSAgICAgICBYU0kgIGRvY3VtZW50cyAgY29uc3RhbnRzICBiZWdpbm5pbmcgIHdpdGggPFNUUk9ORz5XQUNTXzwvU1RST05HPiB3aGljaCBhcmUKLSAgICAgICB1c2VkIGZvciBsaW5lLWRyYXdpbmcuICBUaG9zZSAgYXJlICBub3QgIGN1cnJlbnRseSAgaW1wbGUtCi0gICAgICAgbWVudGVkIGluIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPi4KKyAgICAgICBYL09wZW4gQ3Vyc2VzIG1ha2VzIGl0IGNsZWFyIHRoYXQgdGhlIFdBQ1NfIHN5bWJvbHMgc2hvdWxkCisgICAgICAgYmUgZGVmaW5lZCBhcyBhIHBvaW50ZXIgdG8gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IGRhdGEsIGUuZy4sIGluIHRoZSBkaXMtCisgICAgICAgY3Vzc2lvbiBvZiA8U1RST05HPmJvcmRlcl9zZXQ8L1NUUk9ORz4uICBBIGZldyBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb2JsZW0tCisgICAgICAgYXRpYzoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIE5ldEJTRCBjdXJzZXMgZGVmaW5lcyB0aGUgc3ltYm9scyBhcyBhIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPiAgd2l0aGluCisgICAgICAgICAgIGEgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+LgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgSFBVWCAgY3Vyc2VzICBlcXVhdGVzICBzb21lIG9mIHRoZSA8RU0+QUNTPC9FTT48U1RST05HPl88L1NUUk9ORz4gc3ltYm9scyB0byB0aGUKKyAgICAgICAgICAgYW5hbG9nb3VzIDxFTT5XQUNTPC9FTT48U1RST05HPl88L1NUUk9ORz4gc3ltYm9scyBhcyBpZiB0aGUgIDxFTT5BQ1M8L0VNPjxTVFJPTkc+XzwvU1RST05HPiAgc3ltYm9scyAgd2VyZQorICAgICAgICAgICB3aWRlICBjaGFyYWN0ZXJzLiAgIFRoZSAgbWlzZGVmaW5lZCAgc3ltYm9scyAgYXJlICB0aGUKKyAgICAgICAgICAgYXJyb3dzIGFuZCBvdGhlciBzeW1ib2xzIHdoaWNoIGFyZSBub3QgdXNlZCBmb3IgIGxpbmUtCisgICAgICAgICAgIGRyYXdpbmcuCisKKyAgICAgICBYL09wZW4gIEN1cnNlcyAgZG9lcyBub3QgZGVmaW5lIHN5bWJvbHMgZm9yIHRoaWNrLSBvciBkb3UtCisgICAgICAgYmxlLWxpbmVzLiAgIFNWcjQgIGN1cnNlcyAgaW1wbGVtZW50YXRpb25zICBkZWZpbmVkICB0aGVpcgorICAgICAgIGxpbmUtZHJhd2luZyAgc3ltYm9scyAgaW4gIHRlcm1zICBvZiBpbnRlcm1lZGlhdGUgc3ltYm9scy4KKyAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGV4dGVuZHMgdGhvc2Ugc3ltYm9scywgIHByb3ZpZGluZyAgbmV3CisgICAgICAgZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgU1ZyNCBpbXBsZW1lbnRhdGlvbnMuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0cigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfY2xlYXIuM3guaHRtbCI+Y3Vyc19jbGVhcigzeCk8L0E+PC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJwdXR3Yy4zLmh0bWwiPnB1dHdjKDMpPC9BPjwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz5wdXR3YygzKTwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2NoLjN4Lmh0bWwiPmN1cnNfYWRkX3djaCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtYWRkX3djaCI+YWRkX3djaDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1lY2hvX3djaGFyIj5lY2hvX3djaGFyPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUxpbmUtR3JhcGhpY3MiPkxpbmUgR3JhcGhpY3M8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfYWRkX3djaHN0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkX3djaHN0ci4zeC5odG1sCmluZGV4IDExZDkzYjEuLjdlZTBjZjEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2FkZF93Y2hzdHIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19hZGRfd2Noc3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM0ICsyNiwzNSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19hZGRfd2Noc3RyLjN4LHYgMS42IDIwMDUvMDEvMDIgMDE6Mjg6NDkgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2FkZF93Y2hzdHIuM3gsdiAxLjEwIDIwMTIvMTEvMDMgMjI6NTQ6NDMgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19hZGRfd2Noc3RyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19hZGRfd2Noc3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2FkZF93Y2hzdHIgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkX3djaHN0ci4zeC5odG1sIj5jdXJzX2FkZF93Y2hzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2Noc3RyLjN4Lmh0bWwiPmN1cnNfYWRkX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz5hZGRfd2Noc3RyPC9TVFJPTkc+LCAgICA8U1RST05HPmFkZF93Y2huc3RyPC9TVFJPTkc+LCAgIDxTVFJPTkc+d2FkZF93Y2hzdHI8L1NUUk9ORz4sICAgPFNUUk9ORz53YWRkX3djaG5zdHI8L1NUUk9ORz4sCis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5hZGRfd2Noc3RyPC9TVFJPTkc+LCA8U1RST05HPmFkZF93Y2huc3RyPC9TVFJPTkc+LCA8U1RST05HPndhZGRfd2Noc3RyPC9TVFJPTkc+LCA8U1RST05HPndhZGRfd2NobnN0cjwvU1RST05HPiwKICAgICAgICA8U1RST05HPm12YWRkX3djaHN0cjwvU1RST05HPiwgPFNUUk9ORz5tdmFkZF93Y2huc3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2FkZF93Y2hzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3YWRkX3djaG5zdHI8L1NUUk9ORz4KICAgICAgICAtIGFkZCBhbiBhcnJheSBvZiBjb21wbGV4IGNoYXJhY3RlcnMgKGFuZCBhdHRyaWJ1dGVzKSB0byBhCiAgICAgICAgY3Vyc2VzIHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YWRkX3djaHN0cihjb25zdDwvU1RST05HPiA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndjaHN0cjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgpAQCAtNjgsNjAgKzY4LDgxIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgY29weSB0aGUgYXJyYXkgb2YgY29tcGxleCBjaGFyYWN0ZXJzIDxFTT53Y2hzdHI8L0VNPgotICAgICAgIGludG8gIHRoZSAgd2luZG93IGltYWdlIHN0cnVjdHVyZSBhdCBhbmQgYWZ0ZXIgdGhlIGN1cnJlbnQKLSAgICAgICBjdXJzb3IgcG9zaXRpb24uICBUaGUgZm91ciByb3V0aW5lcyB3aXRoICA8RU0+bjwvRU0+ICBhcyAgdGhlICBsYXN0Ci0gICAgICAgYXJndW1lbnQgIGNvcHkgIGF0ICBtb3N0IDxFTT5uPC9FTT4gZWxlbWVudHMsIGJ1dCBubyBtb3JlIHRoYW4gd2lsbAotICAgICAgIGZpdCBvbiB0aGUgbGluZS4gIElmIDxTVFJPTkc+bjwvU1RST05HPj08U1RST05HPi0xPC9TVFJPTkc+IHRoZW4gdGhlIHdob2xlIGFycmF5IGlzICBjb3BpZWQsCi0gICAgICAgdG8gIHRoZSAgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdpbGwgZml0IG9uIHRoZQotICAgICAgIGxpbmUuCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgY29weSB0aGUgKG51bGwtdGVybWluYXRlZCkgYXJyYXkgIG9mICBjb20tCisgICAgICAgcGxleCAgY2hhcmFjdGVycyAgPEVNPndjaHN0cjwvRU0+ICBpbnRvICB0aGUgd2luZG93IGltYWdlIHN0cnVjdHVyZQorICAgICAgIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gIFRoZSAgZm91ciAgZnVuYy0KKyAgICAgICB0aW9ucyB3aXRoIDxFTT5uPC9FTT4gYXMgdGhlIGxhc3QgYXJndW1lbnQgY29weSBhdCBtb3N0IDxFTT5uPC9FTT4gZWxlbWVudHMsCisgICAgICAgYnV0IG5vIG1vcmUgdGhhbiB3aWxsIGZpdCBvbiB0aGUgbGluZS4gIElmIDxTVFJPTkc+bjwvU1RST05HPj08U1RST05HPi0xPC9TVFJPTkc+ICB0aGVuICB0aGUKKyAgICAgICB3aG9sZSBhcnJheSBpcyBjb3BpZWQsIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzCisgICAgICAgdGhhdCB3aWxsIGZpdCBvbiB0aGUgbGluZS4KIAotICAgICAgIFRoZSB3aW5kb3cgY3Vyc29yIGlzIDxFTT5ub3Q8L0VNPiBhZHZhbmNlZC4gICBUaGVzZSAgcm91dGluZXMgIHdvcmsKLSAgICAgICBmYXN0ZXIgdGhhbiA8U1RST05HPndhZGRuc3RyPC9TVFJPTkc+LiAgT24gdGhlIG90aGVyIGhhbmQsIHRoZXkgZG8gbm90IHBlci0KLSAgICAgICBmb3JtIGNoZWNraW5nIChzdWNoIGFzIGZvciB0aGUgbmV3bGluZSwgYmFja3NwYWNlLCBvciBjYXItCi0gICAgICAgcmlhZ2UgIHJldHVybiBjaGFyYWN0ZXJzKSwgdGhleSBkbyBub3QgYWR2YW5jZSB0aGUgY3VycmVudAotICAgICAgIGN1cnNvciBwb3NpdGlvbiwgdGhleSBkbyBub3QgZXhwYW5kIG90aGVyIGNvbnRyb2wgIGNoYXJhYy0KLSAgICAgICB0ZXJzICB0byAgXi1lc2NhcGVzLCAgYW5kICB0aGV5ICB0cnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0Ci0gICAgICAgY3Jvc3NlcyB0aGUgcmlnaHQgbWFyZ2luLCByYXRoZXIgdGhhbiB3cmFwcGluZyAgaXQgIGFyb3VuZAotICAgICAgIHRvIHRoZSBuZXcgbGluZS4KKyAgICAgICBUaGUgd2luZG93IGN1cnNvciBpcyA8RU0+bm90PC9FTT4gYWR2YW5jZWQuICBUaGVzZSAgZnVuY3Rpb25zICB3b3JrCisgICAgICAgZmFzdGVyIHRoYW4gPFNUUk9ORz53YWRkbnN0cjwvU1RST05HPi4gIE9uIHRoZSBvdGhlciBoYW5kOgogCi0gICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbmQgIHN1Y2Nlc3NmdWxseSAgb24gZW5jb3VudGVyaW5nIGEgbnVsbAotICAgICAgIDxFTT5jY2hhcjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnQ8L0VNPiwgb3Igd2hlbiB0aGV5IGhhdmUgZmlsbGVkIHRoZSBjdXJyZW50IGxpbmUuICBJZiAgYQotICAgICAgIGNvbXBsZXggIGNoYXJhY3RlciBjYW5ub3QgY29tcGxldGVseSBmaXQgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICBjdXJyZW50IGxpbmUsIHRoZSByZW1haW5pbmcgY29sdW1ucyBhcmUgIGZpbGxlZCAgd2l0aCAgdGhlCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhleSBkbyBub3QgcGVyZm9ybSBjaGVja2luZyAoc3VjaCBhcyBmb3IgdGhlIG5ld2xpbmUsCisgICAgICAgICAgIGJhY2tzcGFjZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMpLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhleSBkbyBub3QgYWR2YW5jZSB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24sCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGV5IGRvIG5vdCBleHBhbmQgb3RoZXIgY29udHJvbCBjaGFyYWN0ZXJzICB0byAgXi1lcy0KKyAgICAgICAgICAgY2FwZXMsIGFuZAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhleSAgdHJ1bmNhdGUgdGhlIHN0cmluZyBpZiBpdCBjcm9zc2VzIHRoZSByaWdodCBtYXItCisgICAgICAgICAgIGdpbiwgcmF0aGVyIHRoYW4gd3JhcHBpbmcgaXQgYXJvdW5kIHRvIHRoZSBuZXcgbGluZS4KKworICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBlbmQgc3VjY2Vzc2Z1bGx5IG9uICBlbmNvdW50ZXJpbmcgIGEgIG51bGwKKyAgICAgICA8RU0+Y2NoYXI8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT50PC9FTT4sICBvciB3aGVuIHRoZXkgaGF2ZSBmaWxsZWQgdGhlIGN1cnJlbnQgbGluZS4gIElmIGEKKyAgICAgICBjb21wbGV4IGNoYXJhY3RlciBjYW5ub3QgY29tcGxldGVseSBmaXQgYXQgdGhlIGVuZCBvZiAgdGhlCisgICAgICAgY3VycmVudCAgbGluZSwgIHRoZSAgcmVtYWluaW5nIGNvbHVtbnMgYXJlIGZpbGxlZCB3aXRoIHRoZQogICAgICAgIGJhY2tncm91bmQgY2hhcmFjdGVyIGFuZCByZW5kaXRpb24uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIEFsbCBmdW5jdGlvbnMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSAgYW5kICA8U1RST05HPk9LPC9TVFJPTkc+CisgICAgICAgb24gc3VjY2Vzcy4KKworICAgICAgIFgvT3BlbiAgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZS0KKyAgICAgICBtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKworICAgICAgIEZ1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciAgbW92ZS0KKyAgICAgICBtZW50ICB1c2luZyAgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgQWxsIGZ1bmN0aW9ucyBleGNlcHQgPFNUUk9ORz53YWRkX3djaG5zdHI8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUVTPC9IMj48UFJFPgotICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IG9uCi0gICAgICAgc3VjY2Vzcy4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIGVudHJ5IHBvaW50cyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgIEN1cnNlcyAgc3Rhbi0KKyAgICAgICBkYXJkLCBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIEFsbCB0aGVzZSBlbnRyeSBwb2ludHMgYXJlIGRlc2NyaWJlZCAgaW4gIHRoZSAgWFNJICBDdXJzZXMKLSAgICAgICBzdGFuZGFyZCwgSXNzdWUgNC4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGR3c3RyLjN4Lmh0bWwiPmN1cnNfYWRkd3N0cigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4uCiAKLQotPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2hzdHIuM3guaHRtbCI+Y3Vyc19hZGRjaHN0cigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkd3N0ci4zeC5odG1sIj5jdXJzX2FkZHdzdHIoM3gpPC9BPjwvU1RST05HPgorICAgICAgIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSBuYXJyb3ctY2hhcmFjdGVyIChuY3Vyc2VzKSBsaS0KKyAgICAgICBicmFyeSBhcmUgZGVzY3JpYmVkIGluIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaHN0ci4zeC5odG1sIj5jdXJzX2FkZGNoc3RyKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZF93Y2hzdHIuM3guaHRtbCI+Y3Vyc19hZGRfd2Noc3RyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGRjaC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkY2guM3guaHRtbAppbmRleCAxNjI1MzJjLi4wNGIxNWFmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGRjaC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2FkZGNoLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMyArMjcsMzQgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfYWRkY2guM3gsdiAxLjI3IDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2FkZGNoLjN4LHYgMS4zNiAyMDE1LzA3LzE2IDA5OjE0OjQ0IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfYWRkY2ggM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2FkZGNoIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2FkZGNoIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2guM3guaHRtbCI+Y3Vyc19hZGRjaCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiwgIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdmFkZGNoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdndhZGRjaDwvU1RST05HPiwgPFNUUk9ORz5lY2hvY2hhcjwvU1RST05HPiwgPFNUUk9ORz53ZWNob2NoYXI8L1NUUk9ORz4gLQogICAgICAgIGFkZCBhIGNoYXJhY3RlciAod2l0aCBhdHRyaWJ1dGVzKSB0byBhIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdywgdGhlbgogICAgICAgIGFkdmFuY2UgdGhlIGN1cnNvcgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YWRkY2goY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5jaCk7PC9TVFJPTkc+CkBAIC02NiwzMCArNjYsNDkgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1BZGRpbmctY2hhcmFjdGVycyI+QWRkaW5nIGNoYXJhY3RlcnM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiwgIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+LCA8U1RST05HPm12YWRkY2g8L1NUUk9ORz4gYW5kIDxTVFJPTkc+bXZ3YWRkY2g8L1NUUk9ORz4gcm91dGluZXMgcHV0IHRoZQogICAgICAgIGNoYXJhY3RlciA8RU0+Y2g8L0VNPiBpbnRvIHRoZSBnaXZlbiB3aW5kb3cgYXQgaXRzICBjdXJyZW50ICB3aW5kb3cKICAgICAgICBwb3NpdGlvbiwgIHdoaWNoICBpcyB0aGVuIGFkdmFuY2VkLiAgVGhleSBhcmUgYW5hbG9nb3VzIHRvCi0gICAgICAgPFNUUk9ORz5wdXRjaGFyPC9TVFJPTkc+IGluIDxTVFJPTkc+PEEgSFJFRj0ic3RkaW8uMy5odG1sIj5zdGRpbygzKTwvQT48L1NUUk9ORz4uICBJZiB0aGUgYWR2YW5jZSBpcyBhdCB0aGUgcmlnaHQgIG1hci0KLSAgICAgICBnaW4sICB0aGUgIGN1cnNvciAgYXV0b21hdGljYWxseSB3cmFwcyB0byB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgdGhlIG5leHQgbGluZS4gIEF0IHRoZSBib3R0b20gIG9mICB0aGUgIGN1cnJlbnQgIHNjcm9sbGluZwotICAgICAgIHJlZ2lvbiwgIGlmICA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+ICBpcyBlbmFibGVkLCB0aGUgc2Nyb2xsaW5nIHJlZ2lvbiBpcwotICAgICAgIHNjcm9sbGVkIHVwIG9uZSBsaW5lLgorICAgICAgIDxTVFJPTkc+cHV0Y2hhcjwvU1RST05HPiBpbiA8U1RST05HPnN0ZGlvKDMpPC9TVFJPTkc+LiAgSWYgdGhlIGFkdmFuY2UgaXMgYXQgdGhlIHJpZ2h0ICBtYXItCisgICAgICAgZ2luOgogCi0gICAgICAgSWYgPEVNPmNoPC9FTT4gaXMgYSB0YWIsIG5ld2xpbmUsIG9yIGJhY2tzcGFjZSwgdGhlIGN1cnNvciBpcyBtb3ZlZAotICAgICAgIGFwcHJvcHJpYXRlbHkgd2l0aGluIHRoZSB3aW5kb3cuICBCYWNrc3BhY2UgbW92ZXMgdGhlIGN1ci0KLSAgICAgICBzb3Igb25lIGNoYXJhY3RlciBsZWZ0OyBhdCB0aGUgbGVmdCBlZGdlIG9mICBhICB3aW5kb3cgIGl0Ci0gICAgICAgZG9lcyAgbm90aGluZy4gICBOZXdsaW5lICBkb2VzICBhIDxTVFJPTkc+Y2xydG9lb2w8L1NUUk9ORz4sIHRoZW4gbW92ZXMgdGhlCi0gICAgICAgY3Vyc29yIHRvICB0aGUgIHdpbmRvdyAgbGVmdCAgbWFyZ2luICBvbiAgdGhlICBuZXh0ICBsaW5lLAotICAgICAgIHNjcm9sbGluZyAgdGhlICB3aW5kb3cgaWYgb24gdGhlIGxhc3QgbGluZS4gIFRhYnMgYXJlIGNvbi0KLSAgICAgICBzaWRlcmVkIHRvIGJlIGF0IGV2ZXJ5IGVpZ2h0aCBjb2x1bW4uICAgVGhlICB0YWIgIGludGVydmFsCi0gICAgICAgbWF5IGJlIGFsdGVyZWQgYnkgc2V0dGluZyB0aGUgPFNUUk9ORz5UQUJTSVpFPC9TVFJPTkc+IHZhcmlhYmxlLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSBjdXJzb3IgYXV0b21hdGljYWxseSB3cmFwcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAgICBuZXh0IGxpbmUuCiAKLSAgICAgICBJZiA8RU0+Y2g8L0VNPiBpcyBhbnkgY29udHJvbCBjaGFyYWN0ZXIgb3RoZXIgdGhhbiB0YWIsIG5ld2xpbmUsIG9yCi0gICAgICAgYmFja3NwYWNlLCBpdCBpcyBkcmF3biAgaW4gIDxTVFJPTkc+XjwvU1RST05HPjxFTT5YPC9FTT4gIG5vdGF0aW9uLiAgIENhbGxpbmcgIDxTVFJPTkc+d2luY2g8L1NUUk9ORz4KLSAgICAgICBhZnRlciBhZGRpbmcgYSBjb250cm9sIGNoYXJhY3RlciBkb2VzIG5vdCByZXR1cm4gdGhlIGNoYXItCi0gICAgICAgYWN0ZXIgaXRzZWxmLCBidXQgaW5zdGVhZCByZXR1cm5zIHRoZSBeLXJlcHJlc2VudGF0aW9uICBvZgotICAgICAgIHRoZSBjb250cm9sIGNoYXJhY3Rlci4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBBdCB0aGUgYm90dG9tIG9mIHRoZSBjdXJyZW50IHNjcm9sbGluZyByZWdpb24sIGFuZCAgaWYKKyAgICAgICAgICAgPFNUUk9ORz5zY3JvbGxvazwvU1RST05HPiAgaXMgZW5hYmxlZCwgdGhlIHNjcm9sbGluZyByZWdpb24gaXMgc2Nyb2xsZWQKKyAgICAgICAgICAgdXAgb25lIGxpbmUuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+IGlzIG5vdCBlbmFibGVkLCB3cml0aW5nIGEgY2hhcmFjdGVyIGF0IHRoZQorICAgICAgICAgICBsb3dlciAgcmlnaHQgIG1hcmdpbiAgc3VjY2VlZHMuICAgSG93ZXZlciwgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgcmV0dXJuZWQgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gd3JhcCB0byAgYSAgbmV3CisgICAgICAgICAgIGxpbmUKKworICAgICAgIElmIDxFTT5jaDwvRU0+IGlzIGEgdGFiLCBuZXdsaW5lLCBjYXJyaWFnZSByZXR1cm4gb3IgYmFja3NwYWNlLCB0aGUKKyAgICAgICBjdXJzb3IgaXMgbW92ZWQgYXBwcm9wcmlhdGVseSB3aXRoaW4gdGhlIHdpbmRvdzoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEJhY2tzcGFjZSBtb3ZlcyB0aGUgY3Vyc29yIG9uZSBjaGFyYWN0ZXIgbGVmdDsgYXQgIHRoZQorICAgICAgICAgICBsZWZ0IGVkZ2Ugb2YgYSB3aW5kb3cgaXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgQ2FycmlhZ2UgIHJldHVybiAgbW92ZXMgIHRoZSBjdXJzb3IgdG8gdGhlIHdpbmRvdyBsZWZ0CisgICAgICAgICAgIG1hcmdpbiBvbiB0aGUgY3VycmVudCBsaW5lLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgTmV3bGluZSBkb2VzIGEgPFNUUk9ORz5jbHJ0b2VvbDwvU1RST05HPiwgdGhlbiBtb3ZlcyB0aGUgY3Vyc29yIHRvICB0aGUKKyAgICAgICAgICAgd2luZG93ICBsZWZ0ICBtYXJnaW4gIG9uICB0aGUgbmV4dCBsaW5lLCBzY3JvbGxpbmcgdGhlCisgICAgICAgICAgIHdpbmRvdyBpZiBvbiB0aGUgbGFzdCBsaW5lLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGFicyBhcmUgY29uc2lkZXJlZCB0byBiZSBhdCBldmVyeSBlaWdodGggY29sdW1uLiAgVGhlCisgICAgICAgICAgIHRhYiAgaW50ZXJ2YWwgIG1heSAgYmUgIGFsdGVyZWQgYnkgc2V0dGluZyB0aGUgPFNUUk9ORz5UQUJTSVpFPC9TVFJPTkc+CisgICAgICAgICAgIHZhcmlhYmxlLgorCisgICAgICAgSWYgPEVNPmNoPC9FTT4gaXMgYW55IG90aGVyIGNvbnRyb2wgY2hhcmFjdGVyLCBpdCBpcyAgZHJhd24gIGluICA8U1RST05HPl48L1NUUk9ORz48RU0+WDwvRU0+CisgICAgICAgbm90YXRpb24uICAgQ2FsbGluZyA8U1RST05HPndpbmNoPC9TVFJPTkc+IGFmdGVyIGFkZGluZyBhIGNvbnRyb2wgY2hhcmFjdGVyCisgICAgICAgZG9lcyBub3QgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgaXRzZWxmLCBidXQgaW5zdGVhZCAgcmV0dXJucworICAgICAgIHRoZSBeLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250cm9sIGNoYXJhY3Rlci4KIAogICAgICAgIFZpZGVvIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBjaGFyYWN0ZXIgYXJndW1lbnQKICAgICAgICBwYXNzZWQgdG8gPFNUUk9ORz5hZGRjaDwvU1RST05HPiBvciByZWxhdGVkIGZ1bmN0aW9ucyBieSBsb2dpY2FsLU9SaW5nIHRoZW0KQEAgLTk5LDYgKzExOCw5IEBACiAgICAgICAgZmluZWQgdmlkZW8gYXR0cmlidXRlIGNvbnN0YW50cyB0aGF0IGNhbiBiZSB1c2VmdWxseSBPUidlZAogICAgICAgIGludG8gY2hhcmFjdGVycy4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1FY2hvaW5nLWNoYXJhY3RlcnMiPkVjaG9pbmcgY2hhcmFjdGVyczwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPmVjaG9jaGFyPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+d2VjaG9jaGFyPC9TVFJPTkc+IHJvdXRpbmVzIGFyZSBlcXVpdmFsZW50IHRvIGEKICAgICAgICBjYWxsIHRvIDxTVFJPTkc+YWRkY2g8L1NUUk9ORz4gZm9sbG93ZWQgYnkgYSBjYWxsIHRvIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiwgb3IgYSBjYWxsICB0bwogICAgICAgIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+IGZvbGxvd2VkIGJ5IGEgY2FsbCB0byA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+LiAgVGhlIGtub3dsZWRnZSB0aGF0CkBAIC0xMDcsMTQgKzEyOSwxNSBAQAogICAgICAgIG1heSBiZSBzZWVuIGJ5ICB1c2luZyAgdGhlc2UgIHJvdXRpbmVzICBpbnN0ZWFkICBvZiAgdGhlaXIKICAgICAgICBlcXVpdmFsZW50cy4KIAotICAgPFNUUk9ORz5MaW5lPC9TVFJPTkc+IDxTVFJPTkc+R3JhcGhpY3M8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtTGluZS1HcmFwaGljcyI+TGluZSBHcmFwaGljczwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICBmb2xsb3dpbmcgIHZhcmlhYmxlcyAgbWF5IGJlIHVzZWQgdG8gYWRkIGxpbmUgZHJhd2luZwogICAgICAgIGNoYXJhY3RlcnMgdG8gdGhlIHNjcmVlbiB3aXRoIHJvdXRpbmVzIG9mIHRoZSAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiAgZmFtLQogICAgICAgIGlseS4gICBUaGUgIGRlZmF1bHQgIGNoYXJhY3RlciBsaXN0ZWQgYmVsb3cgaXMgdXNlZCBpZiB0aGUKICAgICAgICA8U1RST05HPmFjc2M8L1NUUk9ORz4gIGNhcGFiaWxpdHkgIGRvZXMgIG5vdCAgZGVmaW5lICBhICAgdGVybWluYWwtc3BlY2lmaWMKLSAgICAgICByZXBsYWNlbWVudCAgZm9yICBpdC4gICBUaGUgIG5hbWVzICBhcmUgIHRha2VuICBmcm9tIFZUMTAwCi0gICAgICAgbm9tZW5jbGF0dXJlLgotCisgICAgICAgcmVwbGFjZW1lbnQgZm9yIGl0LiAgVGhlIG5hbWVzIGFyZSB0YWtlbiBmcm9tIFZUMTAwIG5vbWVuLQorICAgICAgIGNsYXR1cmUuCiAKICAgICAgICA8RU0+TmFtZTwvRU0+ICAgICAgICAgICA8RU0+RGVmYXVsdDwvRU0+ICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzLDQ2ICsxNzYsNTYgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IG9uCiAgICAgICAgc3VjY2VzcyAgKHRoZSAgU1ZyNCBtYW51YWxzIHNwZWNpZnkgb25seSAiYW4gaW50ZWdlciB2YWx1ZQogICAgICAgIG90aGVyIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgdW5sZXNzIG90aGVyLQogICAgICAgIHdpc2Ugbm90ZWQgaW4gdGhlIHByZWNlZGluZyByb3V0aW5lIGRlc2NyaXB0aW9ucy4KIAorICAgICAgIEZ1bmN0aW9ucyAgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZS0KKyAgICAgICBtZW50IHVzaW5nIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlICBwb3NpdGlvbiAgaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSAgdGhhdCAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiwgIDxTVFJPTkc+bXZhZGRjaDwvU1RST05HPiwgPFNUUk9ORz5tdndhZGRjaDwvU1RST05HPiwgYW5kIDxTVFJPTkc+ZWNob2NoYXI8L1NUUk9ORz4gbWF5IGJlCiAgICAgICAgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgQWxsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuLQogICAgICAgIGRhcmQsICBJc3N1ZSAgNC4gIFRoZSBkZWZhdWx0cyBzcGVjaWZpZWQgZm9yIGZvcm1zLWRyYXdpbmcKICAgICAgICBjaGFyYWN0ZXJzIGFwcGx5IGluIHRoZSBQT1NJWCBsb2NhbGUuCiAKLSAgICAgICBTb21lIEFDUyBzeW1ib2xzIChBQ1NfUzMsIEFDU19TNywgQUNTX0xFUVVBTCwgIEFDU19HRVFVQUwsCi0gICAgICAgQUNTX1BJLCAgQUNTX05FUVVBTCwgIEFDU19TVEVSTElORykgd2VyZSBub3QgZG9jdW1lbnRlZCBpbgotICAgICAgIGFueSBwdWJsaWNseSByZWxlYXNlZCBTeXN0ZW0gVi4gICBIb3dldmVyLCAgbWFueSAgcHVibGljbHkKLSAgICAgICBhdmFpbGFibGUgIHRlcm1pbmZvcyAgaW5jbHVkZSAgPFNUUk9ORz5hY3NjPC9TVFJPTkc+IHN0cmluZ3MgaW4gd2hpY2ggdGhlaXIKLSAgICAgICBrZXkgY2hhcmFjdGVycyAocHJ5ent8fSkgYXJlIGVtYmVkZGVkLCBhbmQgIGEgIHNlY29uZC1oYW5kCi0gICAgICAgbGlzdCAgb2YgIHRoZWlyICBjaGFyYWN0ZXIgZGVzY3JpcHRpb25zIGhhcyBjb21lIHRvIGxpZ2h0LgotICAgICAgIFRoZSAgQUNTLXByZWZpeGVkICBuYW1lcyAgZm9yICB0aGVtICB3ZXJlICAgaW52ZW50ZWQgICBmb3IKKyAgICAgICBYL09wZW4gQ3Vyc2VzIHN0YXRlcyB0aGF0IHRoZSA8RU0+QUNTPC9FTT48U1RST05HPl88L1NUUk9ORz4gIGRlZmluaXRpb25zICBhcmUgIDxTVFJPTkc+Y2hhcjwvU1RST05HPgorICAgICAgIGNvbnN0YW50cy4gICBGb3IgIHRoZSAgd2lkZS1jaGFyYWN0ZXIgIGltcGxlbWVudGF0aW9uIChzZWUKKyAgICAgICA8U1RST05HPmN1cnNfYWRkX3djaDwvU1RST05HPiksIHRoZXJlIGFyZSBhbmFsb2dvdXMgPEVNPldBQ1M8L0VNPjxTVFJPTkc+XzwvU1RST05HPiBkZWZpbml0aW9ucyB3aGljaAorICAgICAgIGFyZSA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4gY29uc3RhbnRzLgorCisgICAgICAgU29tZSAgQUNTIHN5bWJvbHMgKEFDU19TMywgQUNTX1M3LCBBQ1NfTEVRVUFMLCBBQ1NfR0VRVUFMLAorICAgICAgIEFDU19QSSwgQUNTX05FUVVBTCwgQUNTX1NURVJMSU5HKSB3ZXJlIG5vdCAgZG9jdW1lbnRlZCAgaW4KKyAgICAgICBhbnkgIHB1YmxpY2x5ICByZWxlYXNlZCAgU3lzdGVtIFYuICBIb3dldmVyLCBtYW55IHB1YmxpY2x5CisgICAgICAgYXZhaWxhYmxlIHRlcm1pbmZvcyBpbmNsdWRlIDxTVFJPTkc+YWNzYzwvU1RST05HPiBzdHJpbmdzICBpbiAgd2hpY2ggIHRoZWlyCisgICAgICAga2V5ICBjaGFyYWN0ZXJzICAocHJ5ent8fSkgYXJlIGVtYmVkZGVkLCBhbmQgYSBzZWNvbmQtaGFuZAorICAgICAgIGxpc3Qgb2YgdGhlaXIgY2hhcmFjdGVyIGRlc2NyaXB0aW9ucyBoYXMgIGNvbWUgIHRvICBsaWdodC4KKyAgICAgICBUaGUgICBBQ1MtcHJlZml4ZWQgICBuYW1lcyAgZm9yICB0aGVtICB3ZXJlICBpbnZlbnRlZCAgZm9yCiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMoM3gpPC9BPjwvU1RST05HPi4KIAotICAgICAgIFRoZSAgPFNUUk9ORz5UQUJTSVpFPC9TVFJPTkc+ICB2YXJpYWJsZSAgaXMgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZgorICAgICAgIFRoZSA8U1RST05HPlRBQlNJWkU8L1NUUk9ORz4gdmFyaWFibGUgaXMgaW1wbGVtZW50ZWQgaW4gIHNvbWUgIHZlcnNpb25zICBvZgogICAgICAgIGN1cnNlcywgYnV0IGlzIG5vdCBwYXJ0IG9mIFgvT3BlbiBjdXJzZXMuCiAKLSAgICAgICBJZiA8RU0+Y2g8L0VNPiBpcyBhIGNhcnJpYWdlIHJldHVybiwgdGhlIGN1cnNvciAgaXMgIG1vdmVkICB0byAgdGhlCi0gICAgICAgYmVnaW5uaW5nICBvZiB0aGUgY3VycmVudCByb3cgb2YgdGhlIHdpbmRvdy4gIFRoaXMgaXMgdHJ1ZQorICAgICAgIElmICA8RU0+Y2g8L0VNPiAgaXMgIGEgIGNhcnJpYWdlIHJldHVybiwgdGhlIGN1cnNvciBpcyBtb3ZlZCB0byB0aGUKKyAgICAgICBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgcm93IG9mIHRoZSB3aW5kb3cuICBUaGlzIGlzICB0cnVlCiAgICAgICAgb2Ygb3RoZXIgaW1wbGVtZW50YXRpb25zLCBidXQgaXMgbm90IGRvY3VtZW50ZWQuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaCgzeCk8L0E+PC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJwdXRjLjMuaHRtbCI+cHV0YygzKTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luY2guM3guaHRtbCI+Y3Vyc19pbmNoKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz5wdXRjKDMpPC9TVFJPTkc+LgogCiAgICAgICAgQ29tcGFyYWJsZSAgZnVuY3Rpb25zICBpbiAgdGhlICB3aWRlLWNoYXJhY3RlciAgKG5jdXJzZXN3KQogICAgICAgIGxpYnJhcnkgYXJlIGRlc2NyaWJlZCBpbiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkX3djaC4zeC5odG1sIj5jdXJzX2FkZF93Y2goM3gpPC9BPjwvU1RST05HPi4KQEAgLTIwMSwxMCArMjM0LDIyIEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1BZGRpbmctY2hhcmFjdGVycyI+QWRkaW5nIGNoYXJhY3RlcnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtRWNob2luZy1jaGFyYWN0ZXJzIj5FY2hvaW5nIGNoYXJhY3RlcnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTGluZS1HcmFwaGljcyI+TGluZSBHcmFwaGljczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkY2hzdHIuM3guaHRtbAppbmRleCAyZDM0MmY1Li5jZTNjZDAyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGRjaHN0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2FkZGNoc3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19hZGRjaHN0ci4zeCx2IDEuMTIgMjAwNi8xMi8wMiAxNzowMjo0NSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfYWRkY2hzdHIuM3gsdiAxLjE2IDIwMTIvMTEvMDMgMjI6NTQ6NDMgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19hZGRjaHN0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfYWRkY2hzdHIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfYWRkY2hzdHIgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2hzdHIuM3guaHRtbCI+Y3Vyc19hZGRjaHN0cigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaHN0ci4zeC5odG1sIj5jdXJzX2FkZGNoc3RyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmFkZGNoc3RyPC9TVFJPTkc+LCA8U1RST05HPmFkZGNobnN0cjwvU1RST05HPiwgPFNUUk9ORz53YWRkY2hzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2FkZGNobnN0cjwvU1RST05HPiwgPFNUUk9ORz5tdmFkZGNoc3RyPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZhZGRjaG5zdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3YWRkY2hzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3YWRkY2huc3RyPC9TVFJPTkc+IC0gYWRkIGEgc3RyaW5nIG9mCiAgICAgICAgY2hhcmFjdGVycyAoYW5kIGF0dHJpYnV0ZXMpIHRvIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5hZGRjaHN0cihjb25zdDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPipjaHN0cik7PC9TVFJPTkc+CkBAIC02Miw2OCArNjIsNzkgQEAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhZGRjaG5zdHIoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPipjaHN0ciw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12YWRkY2hzdHIoaW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54LDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+KmNoc3RyKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12YWRkY2huc3RyKGludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPipjaHN0ciw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12d2FkZGNoc3RyKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gIDxTVFJPTkc+eCw8L1NUUk9ORz4gIDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz4qY2hzdHIpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+ICA8U1RST05HPm12d2FkZGNobnN0cihXSU5ET1c8L1NUUk9ORz4gIDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz55LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPngsPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPipjaHN0ciw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12d2FkZGNoc3RyKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54LDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+KmNoc3RyKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12d2FkZGNobnN0cihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPipjaHN0ciw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uKTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSByb3V0aW5lcyBjb3B5IDxFTT5jaHN0cjwvRU0+IGludG8gdGhlIHdpbmRvdyBpbWFnZSAgc3RydWN0dXJlCi0gICAgICAgYXQgIGFuZCAgYWZ0ZXIgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLiAgVGhlIGZvdXIgcm91LQotICAgICAgIHRpbmVzIHdpdGggPEVNPm48L0VNPiBhcyB0aGUgbGFzdCBhcmd1bWVudCBjb3B5IGF0IG1vc3QgPEVNPm48L0VNPiBlbGVtZW50cywKLSAgICAgICBidXQgIG5vICBtb3JlIHRoYW4gd2lsbCBmaXQgb24gdGhlIGxpbmUuICBJZiA8U1RST05HPm48L1NUUk9ORz49PFNUUk9ORz4tMTwvU1RST05HPiB0aGVuIHRoZQotICAgICAgIHdob2xlIHN0cmluZyBpcyBjb3BpZWQsIHRvIHRoZSBtYXhpbXVtIG51bWJlciAgb2YgIGNoYXJhYy0KLSAgICAgICB0ZXJzIHRoYXQgd2lsbCBmaXQgb24gdGhlIGxpbmUuCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgY29weSB0aGUgKG51bGwtdGVybWluYXRlZCkgPEVNPmNoc3RyPC9FTT4gYXJyYXkgaW4tCisgICAgICAgdG8gdGhlIHdpbmRvdyBpbWFnZSBzdHJ1Y3R1cmUgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3VyLQorICAgICAgIHNvciBwb3NpdGlvbi4gIFRoZSBmb3VyIGZ1bmN0aW9ucyB3aXRoIDxFTT5uPC9FTT4gYXMgdGhlIGxhc3QgYXJndS0KKyAgICAgICBtZW50IGNvcHkgYXQgbW9zdCA8RU0+bjwvRU0+IGVsZW1lbnRzLCBidXQgbm8gbW9yZSB0aGFuIHdpbGwgZml0IG9uCisgICAgICAgdGhlICBsaW5lLiAgSWYgPFNUUk9ORz5uPC9TVFJPTkc+PTxTVFJPTkc+LTE8L1NUUk9ORz4gdGhlbiB0aGUgd2hvbGUgYXJyYXkgaXMgY29waWVkLCB0byB0aGUKKyAgICAgICBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBmaXQgb24gdGhlIGxpbmUuCiAKLSAgICAgICBUaGUgd2luZG93IGN1cnNvciBpcyA8RU0+bm90PC9FTT4gYWR2YW5jZWQsIGFuZCB0aGVzZSByb3V0aW5lcyB3b3JrCi0gICAgICAgZmFzdGVyIHRoYW4gPFNUUk9ORz53YWRkbnN0cjwvU1RST05HPi4gIE9uIHRoZSBvdGhlciBoYW5kLCB0aGV5IGRvIG5vdCBwZXItCi0gICAgICAgZm9ybSAgYW55ICBraW5kICBvZiAgY2hlY2tpbmcgIChzdWNoICBhcyAgZm9yIHRoZSBuZXdsaW5lLAotICAgICAgIGJhY2tzcGFjZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMpLCB0aGV5IGRvIG5vdCBhZC0KLSAgICAgICB2YW5jZSB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24sIHRoZXkgZG8gbm90IGV4cGFuZCBvdGgtCi0gICAgICAgZXIgY29udHJvbCBjaGFyYWN0ZXJzIHRvIF4tZXNjYXBlcywgYW5kIHRoZXkgdHJ1bmNhdGUgIHRoZQotICAgICAgIHN0cmluZyAgaWYgIGl0IGNyb3NzZXMgdGhlIHJpZ2h0IG1hcmdpbiwgcmF0aGVyIHRoYW4gd3JhcC0KLSAgICAgICBwaW5nIGl0IGFyb3VuZCB0byB0aGUgbmV3IGxpbmUuCisgICAgICAgVGhlIHdpbmRvdyBjdXJzb3IgaXMgPEVNPm5vdDwvRU0+IGFkdmFuY2VkLiAgVGhlc2UgIGZ1bmN0aW9ucyAgd29yaworICAgICAgIGZhc3RlciB0aGFuIDxTVFJPTkc+d2FkZG5zdHI8L1NUUk9ORz4uICBPbiB0aGUgb3RoZXIgaGFuZDoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZXkgZG8gbm90IHBlcmZvcm0gY2hlY2tpbmcgKHN1Y2ggYXMgZm9yIHRoZSBuZXdsaW5lLAorICAgICAgICAgICBiYWNrc3BhY2UsIG9yIGNhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXJzKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZXkgZG8gbm90IGFkdmFuY2UgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhleSBkbyBub3QgZXhwYW5kIG90aGVyIGNvbnRyb2wgY2hhcmFjdGVycyAgdG8gIF4tZXMtCisgICAgICAgICAgIGNhcGVzLCBhbmQKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZXkgIHRydW5jYXRlIHRoZSBzdHJpbmcgaWYgaXQgY3Jvc3NlcyB0aGUgcmlnaHQgbWFyLQorICAgICAgICAgICBnaW4sIHJhdGhlciB0aGFuIHdyYXBwaW5nIGl0IGFyb3VuZCB0byB0aGUgbmV3IGxpbmUuCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFUzwvSDI+PFBSRT4KLSAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiBvbgotICAgICAgIHN1Y2Nlc3MgICh0aGUgIFNWcjQgbWFudWFscyBzcGVjaWZ5IG9ubHkgImFuIGludGVnZXIgdmFsdWUKLSAgICAgICBvdGhlciB0aGFuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIHVubGVzcyBvdGhlci0KLSAgICAgICB3aXNlIG5vdGVkIGluIHRoZSBwcmVjZWRpbmcgcm91dGluZSBkZXNjcmlwdGlvbnMuCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIEFsbCBmdW5jdGlvbnMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSAgYW5kICA8U1RST05HPk9LPC9TVFJPTkc+CisgICAgICAgb24gc3VjY2Vzcy4KIAogICAgICAgIFgvT3BlbiAgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZS0KLSAgICAgICBtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgIG51bGwuCisgICAgICAgbWVudGF0aW9uIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KLSAgICAgICBOb3RlIHRoYXQgYWxsIHJvdXRpbmVzIGV4Y2VwdCA8U1RST05HPndhZGRjaG5zdHI8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgorICAgICAgIEFsbCBmdW5jdGlvbnMgZXhjZXB0IDxTVFJPTkc+d2FkZGNobnN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlICBlbnRyeSAgcG9pbnRzIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3Rhbi0KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIGVudHJ5IHBvaW50cyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgIEN1cnNlcyAgc3Rhbi0KICAgICAgICBkYXJkLCBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRzdHIuM3guaHRtbCI+Y3Vyc19hZGRzdHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LgogCi0gICAgICAgQ29tcGFyYWJsZSBmdW5jdGlvbnMgaW4gdGhlIHdpZGUtY2hhcmFjdGVyIChuY3Vyc2VzdykgIGxpLQorICAgICAgIENvbXBhcmFibGUgIGZ1bmN0aW9ucyBpbiB0aGUgd2lkZS1jaGFyYWN0ZXIgKG5jdXJzZXN3KSBsaS0KICAgICAgICBicmFyeSBhcmUgZGVzY3JpYmVkIGluIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2Noc3RyLjN4Lmh0bWwiPmN1cnNfYWRkX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoc3RyLjN4Lmh0bWwiPmN1cnNfYWRkY2hzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2FkZHN0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwKaW5kZXggY2NjOTNhMy4uMzRiNzE1MCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkc3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19hZGRzdHIuM3gsdiAxLjEzIDIwMDUvMDUvMTUgMTY6MTc6MTQgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2FkZHN0ci4zeCx2IDEuMTcgMjAxMi8xMS8wMyAyMjo1NzozMSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2FkZHN0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfYWRkc3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2FkZHN0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRzdHIuM3guaHRtbCI+Y3Vyc19hZGRzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZHN0ci4zeC5odG1sIj5jdXJzX2FkZHN0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5hZGRzdHI8L1NUUk9ORz4sIDxTVFJPTkc+YWRkbnN0cjwvU1RST05HPiwgPFNUUk9ORz53YWRkc3RyPC9TVFJPTkc+LCA8U1RST05HPndhZGRuc3RyPC9TVFJPTkc+LCA8U1RST05HPm12YWRkc3RyPC9TVFJPTkc+LCA8U1RST05HPm12YWRkbnN0cjwvU1RST05HPiwKICAgICAgICA8U1RST05HPm12d2FkZHN0cjwvU1RST05HPiwgPFNUUk9ORz5tdndhZGRuc3RyPC9TVFJPTkc+IC0gYWRkIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdG8gYQogICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdyBhbmQgYWR2YW5jZSBjdXJzb3IKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmFkZHN0cihjb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnN0cjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgpAQCAtNjcsNTUgKzY3LDY4IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgd3JpdGUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIChudWxsLXRlcm1pbmF0LQotICAgICAgIGVkKSBjaGFyYWN0ZXIgc3RyaW5nIDxFTT5zdHI8L0VNPiBvbiB0aGUgZ2l2ZW4gd2luZG93LiAgSXQgaXMgc2ltaS0KLSAgICAgICBsYXIgIHRvICBjYWxsaW5nICA8U1RST05HPndhZGRjaDwvU1RST05HPiAgb25jZSAgZm9yICBlYWNoIGNoYXJhY3RlciBpbiB0aGUKLSAgICAgICBzdHJpbmcuICBUaGUgZm91ciByb3V0aW5lcyB3aXRoIDxFTT5uPC9FTT4gIGFzICB0aGUgIGxhc3QgIGFyZ3VtZW50Ci0gICAgICAgd3JpdGUgIGF0ICBtb3N0IDxFTT5uPC9FTT4gY2hhcmFjdGVycy4gIElmIDxFTT5uPC9FTT4gaXMgLTEsIHRoZW4gdGhlIGVudGlyZQotICAgICAgIHN0cmluZyB3aWxsIGJlIGFkZGVkLCB1cCB0byB0aGUgbWF4aW11bSBudW1iZXIgb2YgIGNoYXJhYy0KLSAgICAgICB0ZXJzICB0aGF0ICB3aWxsICBmaXQgIG9uIHRoZSBsaW5lLCBvciB1bnRpbCBhIHRlcm1pbmF0aW5nCi0gICAgICAgbnVsbCBpcyByZWFjaGVkLgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyAgd3JpdGUgIHRoZSAgKG51bGwtdGVybWluYXRlZCkgIGNoYXJhY3RlcgorICAgICAgIHN0cmluZyA8RU0+c3RyPC9FTT4gb24gdGhlIGdpdmVuIHdpbmRvdy4gIEl0IGlzIHNpbWlsYXIgdG8gIGNhbGxpbmcKKyAgICAgICA8U1RST05HPndhZGRjaDwvU1RST05HPiBvbmNlIGZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgorCisgICAgICAgVGhlICA8RU0+bXY8L0VNPiAgZnVuY3Rpb25zICBwZXJmb3JtICBjdXJzb3IgIG1vdmVtZW50IG9uY2UsIGJlZm9yZQorICAgICAgIHdyaXRpbmcgYW55IGNoYXJhY3RlcnMuICBUaGVyZWFmdGVyLCAgdGhlICBjdXJzb3IgIGlzICBhZC0KKyAgICAgICB2YW5jZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB3cml0aW5nIHRvIHRoZSB3aW5kb3cuCisKKyAgICAgICBUaGUgIGZvdXIgIGZ1bmN0aW9ucyAgd2l0aCA8RU0+bjwvRU0+IGFzIHRoZSBsYXN0IGFyZ3VtZW50IHdyaXRlIGF0CisgICAgICAgbW9zdCA8RU0+bjwvRU0+IGNoYXJhY3RlcnMsIG9yIHVudGlsIGEgdGVybWluYXRpbmcgbnVsbCBpcyByZWFjaGVkLgorICAgICAgIElmIDxFTT5uPC9FTT4gaXMgLTEsIHRoZW4gdGhlIGVudGlyZSBzdHJpbmcgd2lsbCBiZSBhZGRlZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4gb24KLSAgICAgICBzdWNjZXNzICAodGhlICBTVnI0IG1hbnVhbHMgc3BlY2lmeSBvbmx5ICJhbiBpbnRlZ2VyIHZhbHVlCi0gICAgICAgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBBbGwgIGZ1bmN0aW9ucyAgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPgorICAgICAgIG9uIHN1Y2Nlc3MuCiAKICAgICAgICBYL09wZW4gZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyAgaW1wbGUtCi0gICAgICAgbWVudGF0aW9uICByZXR1cm5zICBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbAotICAgICAgIG9yIGlmIHRoZSBzdHJpbmcgcG9pbnRlciBpcyBudWxsIG9yIGlmICB0aGUgIGNvcnJlc3BvbmRpbmcKLSAgICAgICBjYWxscyB0byA8U1RST05HPndhZGRjaDwvU1RST05HPiByZXR1cm4gYW4gZXJyb3IuCisgICAgICAgbWVudGF0aW9uIHJldHVybnMgYW4gZXJyb3IKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsIG9yCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBpZiB0aGUgc3RyaW5nIHBvaW50ZXIgaXMgbnVsbCBvcgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbHMgdG8gPFNUUk9ORz53YWRkY2g8L1NUUk9ORz4gcmV0dXJuIGFuIGVycm9yLgorCisgICAgICAgRnVuY3Rpb25zICB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlLQorICAgICAgIG1lbnQgdXNpbmcgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgIHBvc2l0aW9uICBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Ci0gICAgICAgTm90ZSAgdGhhdCAgYWxsICBvZiAgdGhlc2UgIHJvdXRpbmVzICBleGNlcHQgIDxTVFJPTkc+d2FkZHN0cjwvU1RST05HPiAgYW5kCi0gICAgICAgPFNUUk9ORz53YWRkbnN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBleGNlcHQgPFNUUk9ORz53YWRkbnN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIEFsbCB0aGVzZSBlbnRyeSBwb2ludHMgYXJlIGRlc2NyaWJlZCAgaW4gIHRoZSAgWFNJICBDdXJzZXMKLSAgICAgICBzdGFuZGFyZCwgIElzc3VlICA0LiAgVGhlIFhTSSBlcnJvcnMgRUlMU0VRIGFuZCBFT1ZFUkZMT1csCi0gICAgICAgYXNzb2NpYXRlZCB3aXRoIGV4dGVuZGVkLWxldmVsIGNvbmZvcm1hbmNlLCAgYXJlICBub3QgIHlldAotICAgICAgIGRldGVjdGVkLgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAorICAgICAgIElzc3VlIDQuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRzdHIuM3guaHRtbCI+Y3Vyc19hZGRzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2FkZHdzdHIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2FkZHdzdHIuM3guaHRtbAppbmRleCBlMGJkNzI0Li5jMjRjZmEyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19hZGR3c3RyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfYWRkd3N0ci4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMyArMjYsMzQgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfYWRkd3N0ci4zeCx2IDEuNyAyMDA2LzAyLzI1IDIwOjU5OjA4IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19hZGR3c3RyLjN4LHYgMS4xMSAyMDEyLzExLzAzIDIyOjU3OjMxIHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfYWRkd3N0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfYWRkd3N0ciAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19hZGR3c3RyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZHdzdHIuM3guaHRtbCI+Y3Vyc19hZGR3c3RyKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkd3N0ci4zeC5odG1sIj5jdXJzX2FkZHdzdHIoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+YWRkd3N0cjwvU1RST05HPiwgPFNUUk9ORz5hZGRud3N0cjwvU1RST05HPiwgPFNUUk9ORz53YWRkd3N0cjwvU1RST05HPiwgPFNUUk9ORz53YWRkbndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZhZGR3c3RyPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZhZGRud3N0cjwvU1RST05HPiwgPFNUUk9ORz5tdndhZGR3c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2FkZG53c3RyPC9TVFJPTkc+IC0gYWRkIGEgc3RyaW5nIG9mIHdpZGUKICAgICAgICBjaGFyYWN0ZXJzIHRvIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93IGFuZCBhZHZhbmNlIGN1cnNvcgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YWRkd3N0cihjb25zdDwvU1RST05HPiA8U1RST05HPndjaGFyX3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndzdHI8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KQEAgLTY3LDU0ICs2Nyw3MiBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIHdyaXRlIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZSAobnVsbC10ZXJtaW5hdC0KLSAgICAgICBlZCkgPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IGNoYXJhY3RlciBzdHJpbmcgPEVNPndzdHI8L0VNPiBvbiB0aGUgZ2l2ZW4gd2luZG93LiAgSXQKLSAgICAgICBpcyAgc2ltaWxhciAgdG8gY29uc3RydWN0aW5nIGEgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IGZvciBlYWNoIHdjaGFyX3QgaW4KLSAgICAgICB0aGUgIHN0cmluZywgIHRoZW4gIGNhbGxpbmcgIDxTVFJPTkc+d2FkZF93Y2g8L1NUUk9ORz4gIGZvciAgdGhlICByZXN1bHRpbmcKKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICBmdW5jdGlvbnMgIHdyaXRlIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZSAobnVsbC10ZXJtaS0KKyAgICAgICBuYXRlZCkgPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IGNoYXJhY3RlciBzdHJpbmcgPEVNPndzdHI8L0VNPiBvbiB0aGUgZ2l2ZW4gIHdpbmRvdy4KKyAgICAgICBJdCAgaXMgIHNpbWlsYXIgdG8gY29uc3RydWN0aW5nIGEgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IGZvciBlYWNoIHdjaGFyX3QKKyAgICAgICBpbiB0aGUgc3RyaW5nLCB0aGVuIGNhbGxpbmcgIDxTVFJPTkc+d2FkZF93Y2g8L1NUUk9ORz4gIGZvciAgdGhlICByZXN1bHRpbmcKICAgICAgICA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4uCiAKLSAgICAgICBUaGUgPEVNPm12PC9FTT4gcm91dGluZXMgcGVyZm9ybSBjdXJzb3IgbW92ZW1lbnQgb25jZSwgYmVmb3JlIHdyaXQtCi0gICAgICAgaW5nIGFueSBjaGFyYWN0ZXJzLiAgVGhlcmVhZnRlciwgdGhlIGN1cnNvciBpcyBhZHZhbmNlZCBhcwotICAgICAgIGEgc2lkZS1lZmZlY3Qgb2Ygd3JpdGluZyB0byB0aGUgd2luZG93LgorICAgICAgIFRoZSAgPEVNPm12PC9FTT4gIGZ1bmN0aW9ucyAgcGVyZm9ybSAgY3Vyc29yICBtb3ZlbWVudCBvbmNlLCBiZWZvcmUKKyAgICAgICB3cml0aW5nIGFueSBjaGFyYWN0ZXJzLiAgVGhlcmVhZnRlciwgIHRoZSAgY3Vyc29yICBpcyAgYWQtCisgICAgICAgdmFuY2VkIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygd3JpdGluZyB0byB0aGUgd2luZG93LgogCi0gICAgICAgVGhlICBmb3VyICByb3V0aW5lcyAgd2l0aCAgPEVNPm48L0VNPiBhcyB0aGUgbGFzdCBhcmd1bWVudCB3cml0ZSBhdAotICAgICAgIG1vc3QgPEVNPm48L0VNPiA8U1RST05HPndjaGFyX3Q8L1NUUk9ORz4gY2hhcmFjdGVycy4gIElmIDxFTT5uPC9FTT4gaXMgLTEsICB0aGVuICB0aGUgIGVudGlyZQotICAgICAgIHN0cmluZyAgd2lsbCBiZSBhZGRlZCwgdXAgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhYy0KLSAgICAgICB0ZXJzIHRoYXQgd2lsbCBmaXQgb24gdGhlIGxpbmUsICBvciAgdW50aWwgIGEgIHRlcm1pbmF0aW5nCi0gICAgICAgbnVsbCBpcyByZWFjaGVkLgorICAgICAgIFRoZSAgZm91ciAgZnVuY3Rpb25zICB3aXRoIDxFTT5uPC9FTT4gYXMgdGhlIGxhc3QgYXJndW1lbnQgd3JpdGUgYXQKKyAgICAgICBtb3N0IDxFTT5uPC9FTT4gPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IGNoYXJhY3RlcnMsIG9yIHVudGlsIGEgdGVybWluYXRpbmcgbnVsbCAgaXMKKyAgICAgICByZWFjaGVkLiAgIElmICA8RU0+bjwvRU0+ICBpcyAgLTEsICB0aGVuICB0aGUgZW50aXJlIHN0cmluZyB3aWxsIGJlCisgICAgICAgYWRkZWQuCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFUzwvSDI+PFBSRT4KLSAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiBvbgotICAgICAgIHN1Y2Nlc3MuCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIEFsbCBmdW5jdGlvbnMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSAgYW5kICA8U1RST05HPk9LPC9TVFJPTkc+CisgICAgICAgb24gc3VjY2Vzcy4KKworICAgICAgIFgvT3BlbiAgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZS0KKyAgICAgICBtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvcgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwgb3IKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGlmIHRoZSBzdHJpbmcgcG9pbnRlciBpcyBudWxsIG9yCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBpZiB0aGUgY29ycmVzcG9uZGluZyBjYWxscyB0byA8U1RST05HPndhZGRfd2NoPC9TVFJPTkc+IHJldHVybiAgYW4gIGVyLQorICAgICAgICAgICByb3IuCisKKyAgICAgICBGdW5jdGlvbnMgIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmUtCisgICAgICAgbWVudCB1c2luZyA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSAgcG9zaXRpb24gIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KLSAgICAgICBOb3RlIHRoYXQgYWxsIG9mIHRoZXNlIHJvdXRpbmVzIGV4Y2VwdCAgPFNUUk9ORz53YWRkbndzdHI8L1NUUk9ORz4gIG1heSAgYmUKLSAgICAgICBtYWNyb3MuCis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGV4Y2VwdCA8U1RST05HPndhZGRud3N0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIEFsbCAgdGhlc2UgIGVudHJ5ICBwb2ludHMgIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMKLSAgICAgICBzdGFuZGFyZCwgSXNzdWUgNC4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwKKyAgICAgICBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkX3djaC4zeC5odG1sIj5jdXJzX2FkZF93Y2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGR3c3RyLjN4Lmh0bWwiPmN1cnNfYWRkd3N0cigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfYXR0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYXR0ci4zeC5odG1sCmluZGV4IDlhN2IyYTQuLjZlYTc4ZjkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2F0dHIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwyNiArMjcsMjcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfYXR0ci4zeCx2IDEuMzEgMjAwNy8wMy8xNyAyMDozMDozMyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfYXR0ci4zeCx2IDEuNDAgMjAxNS8wNy8yMCAyMzozNTozOCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2F0dHIgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2F0dHIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfYXR0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0cigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmF0dHJvZmY8L1NUUk9ORz4sIDxTVFJPTkc+d2F0dHJvZmY8L1NUUk9ORz4sIDxTVFJPTkc+YXR0cm9uPC9TVFJPTkc+LCA8U1RST05HPndhdHRyb248L1NUUk9ORz4sIDxTVFJPTkc+YXR0cnNldDwvU1RST05HPiwgPFNUUk9ORz53YXR0cnNldDwvU1RST05HPiwKICAgICAgICA8U1RST05HPmNvbG9yX3NldDwvU1RST05HPiwgPFNUUk9ORz53Y29sb3Jfc2V0PC9TVFJPTkc+LCA8U1RST05HPnN0YW5kZW5kPC9TVFJPTkc+LCA8U1RST05HPndzdGFuZGVuZDwvU1RST05HPiwgPFNUUk9ORz5zdGFuZG91dDwvU1RST05HPiwKICAgICAgICA8U1RST05HPndzdGFuZG91dDwvU1RST05HPiwgPFNUUk9ORz5hdHRyX2dldDwvU1RST05HPiwgPFNUUk9ORz53YXR0cl9nZXQ8L1NUUk9ORz4sIDxTVFJPTkc+YXR0cl9vZmY8L1NUUk9ORz4sIDxTVFJPTkc+d2F0dHJfb2ZmPC9TVFJPTkc+LApAQCAtNTcsNDMgKzU3LDQzIEBACiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cm9mZihpbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRycyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cm9mZihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJzKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJvbihpbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRycyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cm9uKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cnMpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cnNldChpbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRycyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cnNldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJzKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNvbG9yX3NldChzaG9ydDwvU1RST05HPiA8U1RST05HPmNvbG9yX3BhaXJfbnVtYmVyLDwvU1RST05HPiA8U1RST05HPnZvaWQqPC9TVFJPTkc+IDxTVFJPTkc+b3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53Y29sb3Jfc2V0KFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz5jb2xvcl9wYWlyX251bWJlciw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPnZvaWQqPC9TVFJPTkc+IDxTVFJPTkc+b3B0cyk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRyb2ZmKGludDwvU1RST05HPiA8RU0+YXR0cnMpOzwvRU0+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cm9mZihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cm9uKGludDwvU1RST05HPiA8RU0+YXR0cnM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyb24oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YXR0cnM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJzZXQoaW50PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+d2F0dHJzZXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YXR0cnM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNvbG9yX3NldChzaG9ydDwvU1RST05HPiA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+bnVtYmVyPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz52b2lkKjwvU1RST05HPiA8RU0+b3B0czwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+d2NvbG9yX3NldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPmNvbG9yPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+cGFpcjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPm51bWJlcjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+CisgICAgICAgICAgICAgPFNUUk9ORz52b2lkKjwvU1RST05HPiA8RU0+b3B0cyk7PC9FTT4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnN0YW5kZW5kKHZvaWQpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+d3N0YW5kZW5kKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+d3N0YW5kZW5kKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zdGFuZG91dCh2b2lkKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndzdGFuZG91dChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJfZ2V0KGF0dHJfdDwvU1RST05HPiA8U1RST05HPiphdHRycyw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPipwYWlyLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cl9nZXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gPFNUUk9ORz4qYXR0cnMsPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz4qcGFpciw8L1NUUk9ORz4KLSAgICAgICAgICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+Km9wdHMpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cl9vZmYoYXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+YXR0cnMsPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPipvcHRzKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyX29mZihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHJzLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRyX29uKGF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHJzLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cl9vbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHJzLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5hdHRyX3NldChhdHRyX3Q8L1NUUk9ORz4gPFNUUk9ORz5hdHRycyw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPnBhaXIsPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPipvcHRzKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyX3NldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHJzLDwvU1RST05HPiA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+cGFpciw8L1NUUk9ORz4gIDxTVFJPTkc+dm9pZDwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Km9wdHMpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Y2hnYXQoaW50PC9TVFJPTkc+IDxTVFJPTkc+biw8L1NUUk9ORz4gPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gPFNUUk9ORz5hdHRyLDwvU1RST05HPiA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+Y29sb3IsPC9TVFJPTkc+Ci0gICAgICAgICAgICAgPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndjaGdhdChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+YXR0ciw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+Y29sb3IsPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+Km9wdHMpPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdmNoZ2F0KGludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uLDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHIsPC9TVFJPTkc+Ci0gICAgICAgICAgICAgPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPmNvbG9yLDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPipvcHRzKTwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bXZ3Y2hnYXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz55LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPngsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+biw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHIsPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz5jb2xvciw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qb3B0cyk8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndzdGFuZG91dChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cl9nZXQoYXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyX2dldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmF0dHJfb2ZmKGF0dHJfdDwvU1RST05HPiA8RU0+YXR0cnM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyX29mZihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3B0czwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cl9vbihhdHRyX3Q8L1NUUk9ORz4gPEVNPmF0dHJzPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5vcHRzPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53YXR0cl9vbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3B0czwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YXR0cl9zZXQoYXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndhdHRyX3NldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiAgPFNUUk9ORz52b2lkPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNoZ2F0KGludDwvU1RST05HPiA8RU0+bjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5vcHRzPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53Y2hnYXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+bjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyPC9FTT48U1RST05HPiw8L1NUUk9ORz4KKyAgICAgICAgICAgICA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxFTT5jb2xvcjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5vcHRzPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdmNoZ2F0KGludDwvU1RST05HPiA8RU0+eTwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT54PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPm48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8RU0+YXR0cjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+CisgICAgICAgICAgICAgPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3B0czwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bXZ3Y2hnYXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW4sPC9FTT4gPEVNPmludDwvRU0+IDxFTT55LDwvRU0+IDxFTT5pbnQ8L0VNPiA8RU0+eCw8L0VNPiA8RU0+aW50PC9FTT4gPEVNPm4sPC9FTT4KKyAgICAgICAgICAgICA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8RU0+YXR0cjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPmNvbG9yPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgbWFuaXB1bGF0ZSAgdGhlIGN1cnJlbnQgYXR0cmlidXRlcyBvZiB0aGUKICAgICAgICBuYW1lZCB3aW5kb3cuICBUaGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIGEgd2luZG93IGFwcGx5IHRvCiAgICAgICAgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgd3JpdHRlbiBpbnRvIHRoZSB3aW5kb3cgd2l0aCA8U1RST05HPndhZGQtPC9TVFJPTkc+CkBAIC0xMDQsNiArMTA0LDkgQEAKICAgICAgICBtb2RpZmljYXRpb25zIHRvIHRoZSBncmFwaGljIHJlbmRpdGlvbiBvZiAgY2hhcmFjdGVycyAgcHV0CiAgICAgICAgb24gdGhlIHNjcmVlbi4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1hdHRyc2V0Ij5hdHRyc2V0PC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIHJvdXRpbmUgIDxTVFJPTkc+YXR0cnNldDwvU1RST05HPiAgc2V0cyAgdGhlIGN1cnJlbnQgYXR0cmlidXRlcyBvZiB0aGUKICAgICAgICBnaXZlbiB3aW5kb3cgdG8gPEVNPmF0dHJzPC9FTT4uICBUaGUgcm91dGluZSA8U1RST05HPmF0dHJvZmY8L1NUUk9ORz4gdHVybnMgb2ZmICB0aGUKICAgICAgICBuYW1lZCAgYXR0cmlidXRlcyAgd2l0aG91dCB0dXJuaW5nIGFueSBvdGhlciBhdHRyaWJ1dGVzIG9uCkBAIC0xMTgsMTggKzEyMSw0MCBAQAogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZCgzeCk8L0E+PC9TVFJPTkc+IGZvciBmdW5jdGlvbnMgd2hpY2ggIG1vZGlmeSAgdGhlICBhdHRyaWJ1dGVzCiAgICAgICAgdXNlZCBmb3IgZXJhc2luZyBhbmQgY2xlYXJpbmcuCiAKLSAgICAgICBUaGUgIHJvdXRpbmUgPFNUUk9ORz5jb2xvcl9zZXQ8L1NUUk9ORz4gc2V0cyB0aGUgY3VycmVudCBjb2xvciBvZiB0aGUgZ2l2ZW4KLSAgICAgICB3aW5kb3cgdG8gdGhlIGZvcmVncm91bmQvYmFja2dyb3VuZCBjb21iaW5hdGlvbiAgZGVzY3JpYmVkCi0gICAgICAgYnkgIHRoZSAgY29sb3JfcGFpcl9udW1iZXIuIFRoZSBwYXJhbWV0ZXIgb3B0cyBpcyByZXNlcnZlZAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1hdHRyX3NldCI+YXR0cl9zZXQ8L2E+PC9IMz48UFJFPgorICAgICAgIFRoZSA8U1RST05HPmF0dHJzZXQ8L1NUUk9ORz4gcm91dGluZSBpcyBhY3R1YWxseSBhIGxlZ2FjeSBmZWF0dXJlIHByZWRhdGluZworICAgICAgIFNWcjQgY3Vyc2VzIGJ1dCBrZXB0IGluIFgvT3BlbiBDdXJzZXMgZm9yIHRoZSBzYW1lICByZWFzb24KKyAgICAgICB0aGF0ICBTVnI0ICBjdXJzZXMga2VwdCBpdDogY29tcGF0YmlsaXR5LiAgVGhlIHJvdXRpbmUgPFNUUk9ORz5hdC08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnRyX3NldDwvU1RST05HPiBwcm92aWRlcyBmb3IgcGFzc2luZyBhIGNvbG9yLXBhaXIgcGFyYW1ldGVyLgorCisgICAgICAgVGhlIHJlbWFpbmluZyA8U1RST05HPmF0dHJfPC9TVFJPTkc+KiBmdW5jdGlvbnMgb3BlcmF0ZSAgZXhhY3RseSAgbGlrZSAgdGhlCisgICAgICAgY29ycmVzcG9uZGluZyA8U1RST05HPmF0dHI8L1NUUk9ORz4qIGZ1bmN0aW9ucywgZXhjZXB0IHRoYXQgdGhleSB0YWtlIGFyZ3UtCisgICAgICAgbWVudHMgb2YgdHlwZSA8U1RST05HPmF0dHJfdDwvU1RST05HPiByYXRoZXIgdGhhbiA8U1RST05HPmludDwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1jb2xvcl9zZXQiPmNvbG9yX3NldDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIHJvdXRpbmUgPFNUUk9ORz5jb2xvcl9zZXQ8L1NUUk9ORz4gc2V0cyB0aGUgY3VycmVudCBjb2xvciBvZiB0aGUgIGdpdmVuCisgICAgICAgd2luZG93ICB0byB0aGUgZm9yZWdyb3VuZC9iYWNrZ3JvdW5kIGNvbWJpbmF0aW9uIGRlc2NyaWJlZAorICAgICAgIGJ5IHRoZSBjb2xvcl9wYWlyX251bWJlci4gIFRoZSBwYXJhbWV0ZXIgb3B0cyBpcyAgcmVzZXJ2ZWQKICAgICAgICBmb3IgZnV0dXJlIHVzZSwgYXBwbGljYXRpb25zIG11c3Qgc3VwcGx5IGEgbnVsbCBwb2ludGVyLgogCi0gICAgICAgVGhlIHJvdXRpbmUgPFNUUk9ORz53YXR0cl9nZXQ8L1NUUk9ORz4gcmV0dXJucyB0aGUgIGN1cnJlbnQgIGF0dHJpYnV0ZSAgYW5kCi0gICAgICAgY29sb3IgcGFpciBmb3IgdGhlIGdpdmVuIHdpbmRvdzsgPFNUUk9ORz5hdHRyX2dldDwvU1RST05HPiByZXR1cm5zIHRoZSBjdXItCi0gICAgICAgcmVudCBhdHRyaWJ1dGUgYW5kIGNvbG9yIHBhaXIgZm9yIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+LiAgIFRoZSAgcmVtYWluaW5nCi0gICAgICAgPFNUUk9ORz5hdHRyXzwvU1RST05HPiogIGZ1bmN0aW9ucyAgb3BlcmF0ZSAgZXhhY3RseSBsaWtlIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgPFNUUk9ORz5hdHRyPC9TVFJPTkc+KiBmdW5jdGlvbnMsIGV4Y2VwdCB0aGF0IHRoZXkgdGFrZSBhcmd1bWVudHMgIG9mICB0eXBlCi0gICAgICAgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gcmF0aGVyIHRoYW4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4uCiAKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWF0dHJfZ2V0Ij5hdHRyX2dldDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICByb3V0aW5lICA8U1RST05HPndhdHRyX2dldDwvU1RST05HPiAgcmV0dXJucyB0aGUgY3VycmVudCBhdHRyaWJ1dGUgYW5kCisgICAgICAgY29sb3IgcGFpciBmb3IgdGhlIGdpdmVuIHdpbmRvdzsgPFNUUk9ORz5hdHRyX2dldDwvU1RST05HPiByZXR1cm5zIHRoZSBjdXItCisgICAgICAgcmVudCBhdHRyaWJ1dGUgYW5kIGNvbG9yIHBhaXIgZm9yIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+LgorCisgICAgICAgVGhlcmUgIGlzICBubyAgY29ycmVzcG9uZGluZyAgPFNUUk9ORz5hdHRyZ2V0PC9TVFJPTkc+ICBmdW5jdGlvbiBhcyBzdWNoIGluCisgICAgICAgWC9PcGVuIEN1cnNlcywgYWx0aG91Z2ggIG5jdXJzZXMgIHByb3ZpZGVzICA8U1RST05HPmdldGF0dHJzPC9TVFJPTkc+ICAoc2VlCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2xlZ2FjeS4zeC5odG1sIj5jdXJzX2xlZ2FjeSgzeCk8L0E+PC9TVFJPTkc+KS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1jaGdhdCI+Y2hnYXQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSByb3V0aW5lIDxTVFJPTkc+Y2hnYXQ8L1NUUk9ORz4gY2hhbmdlcyB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIG51bWJlcgogICAgICAgIG9mIGNoYXJhY3RlcnMgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yICBsb2NhdGlvbiAgb2YKICAgICAgICA8U1RST05HPnN0ZHNjcjwvU1RST05HPi4gICBJdCAgZG9lcyBub3QgdXBkYXRlIHRoZSBjdXJzb3IgYW5kIGRvZXMgbm90IHBlci0KQEAgLTE0Myw4MyArMTY4LDExNCBAQAogICAgICAgIG1lbnQgaXMgbm90IHByZXNlbnRseSB1c2VkLCBidXQgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBmdXR1cmUKICAgICAgICAobGVhdmUgaXQgPFNUUk9ORz5OVUxMPC9TVFJPTkc+KS4KIAotICAgPFNUUk9ORz5BdHRyaWJ1dGVzPC9TVFJPTkc+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSBmb2xsb3dpbmcgdmlkZW8gYXR0cmlidXRlcywgZGVmaW5lZCBpbiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4sIGNhbgogICAgICAgIGJlIHBhc3NlZCB0byB0aGUgcm91dGluZXMgPFNUUk9ORz5hdHRyb248L1NUUk9ORz4sIDxTVFJPTkc+YXR0cm9mZjwvU1RST05HPiwgYW5kIDxTVFJPTkc+YXR0cnNldDwvU1RST05HPiwgb3IKLSAgICAgICBPUidkIHdpdGggdGhlIGNoYXJhY3RlcnMgcGFzc2VkIHRvIDxTVFJPTkc+YWRkY2g8L1NUUk9ORz4uCisgICAgICAgT1InZCB3aXRoIHRoZSBjaGFyYWN0ZXJzIHBhc3NlZCB0byAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiAgKHNlZSAgY3Vyc19hZGQtCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjaC4zeC5odG1sIj5jaCgzeCk8L0E+PC9TVFJPTkc+KS4KIAorICAgICAgICAgICAgICA8RU0+TmFtZTwvRU0+ICAgICAgICAgICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KKyAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9OT1JNQUw8L1NUUk9ORz4gICAgICAgIE5vcm1hbCBkaXNwbGF5IChubyBoaWdobGlnaHQpCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9TVEFORE9VVDwvU1RST05HPiAgICAgIEJlc3QgaGlnaGxpZ2h0aW5nIG1vZGUgb2YgdGhlIHRlcm1pbmFsLgorICAgICAgICAgICAgICA8U1RST05HPkFfVU5ERVJMSU5FPC9TVFJPTkc+ICAgICBVbmRlcmxpbmluZworICAgICAgICAgICAgICA8U1RST05HPkFfUkVWRVJTRTwvU1RST05HPiAgICAgICBSZXZlcnNlIHZpZGVvCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9CTElOSzwvU1RST05HPiAgICAgICAgIEJsaW5raW5nCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9ESU08L1NUUk9ORz4gICAgICAgICAgIEhhbGYgYnJpZ2h0CisgICAgICAgICAgICAgIDxTVFJPTkc+QV9CT0xEPC9TVFJPTkc+ICAgICAgICAgIEV4dHJhIGJyaWdodCBvciBib2xkCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9QUk9URUNUPC9TVFJPTkc+ICAgICAgIFByb3RlY3RlZCBtb2RlCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9JTlZJUzwvU1RST05HPiAgICAgICAgIEludmlzaWJsZSBvciBibGFuayBtb2RlCisgICAgICAgICAgICAgIDxTVFJPTkc+QV9BTFRDSEFSU0VUPC9TVFJPTkc+ICAgIEFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0CisgICAgICAgICAgICAgIDxTVFJPTkc+QV9JVEFMSUM8L1NUUk9ORz4gICAgICAgIEl0YWxpY3MgKG5vbi1YL09wZW4gZXh0ZW5zaW9uKQorICAgICAgICAgICAgICA8U1RST05HPkFfQ0hBUlRFWFQ8L1NUUk9ORz4gICAgICBCaXQtbWFzayB0byBleHRyYWN0IGEgY2hhcmFjdGVyCiAKLSAgICAgICAgPFNUUk9ORz5BX05PUk1BTDwvU1RST05HPiAgICAgICAgTm9ybWFsIGRpc3BsYXkgKG5vIGhpZ2hsaWdodCkKLSAgICAgICAgPFNUUk9ORz5BX1NUQU5ET1VUPC9TVFJPTkc+ICAgICAgQmVzdCBoaWdobGlnaHRpbmcgbW9kZSBvZiB0aGUgdGVybWluYWwuCi0gICAgICAgIDxTVFJPTkc+QV9VTkRFUkxJTkU8L1NUUk9ORz4gICAgIFVuZGVybGluaW5nCi0gICAgICAgIDxTVFJPTkc+QV9SRVZFUlNFPC9TVFJPTkc+ICAgICAgIFJldmVyc2UgdmlkZW8KLSAgICAgICAgPFNUUk9ORz5BX0JMSU5LPC9TVFJPTkc+ICAgICAgICAgQmxpbmtpbmcKLSAgICAgICAgPFNUUk9ORz5BX0RJTTwvU1RST05HPiAgICAgICAgICAgSGFsZiBicmlnaHQKLSAgICAgICAgPFNUUk9ORz5BX0JPTEQ8L1NUUk9ORz4gICAgICAgICAgRXh0cmEgYnJpZ2h0IG9yIGJvbGQKLSAgICAgICAgPFNUUk9ORz5BX1BST1RFQ1Q8L1NUUk9ORz4gICAgICAgUHJvdGVjdGVkIG1vZGUKLSAgICAgICAgPFNUUk9ORz5BX0lOVklTPC9TVFJPTkc+ICAgICAgICAgSW52aXNpYmxlIG9yIGJsYW5rIG1vZGUKLSAgICAgICAgPFNUUk9ORz5BX0FMVENIQVJTRVQ8L1NUUk9ORz4gICAgQWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKLSAgICAgICAgPFNUUk9ORz5BX0NIQVJURVhUPC9TVFJPTkc+ICAgICAgQml0LW1hc2sgdG8gZXh0cmFjdCBhIGNoYXJhY3RlcgotICAgICAgICA8U1RST05HPkNPTE9SX1BBSVIoPC9TVFJPTkc+PEVNPm48L0VNPjxTVFJPTkc+KTwvU1RST05HPiAgIENvbG9yLXBhaXIgbnVtYmVyIDxFTT5uPC9FTT4KKyAgICAgICAgICAgICAgPFNUUk9ORz5DT0xPUl9QQUlSKDwvU1RST05HPjxFTT5uPC9FTT48U1RST05HPik8L1NUUk9ORz4gICBDb2xvci1wYWlyIG51bWJlciA8RU0+bjwvRU0+CisKKyAgICAgICBUaGVzZSB2aWRlbyBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQgYnkgPFNUUk9ORz5hdHRyX29uPC9TVFJPTkc+IGFuZCByZWxhdC0KKyAgICAgICBlZCBmdW5jdGlvbnMgKHdoaWNoIGFsc28gc3VwcG9ydCB0aGUgYXR0cmlidXRlcyByZWNvZ25pemVkCisgICAgICAgYnkgPFNUUk9ORz5hdHRyb248L1NUUk9ORz4sIGV0Yy4pOgorCisgICAgICAgICAgICAgIDxFTT5OYW1lPC9FTT4gICAgICAgICAgICA8RU0+RGVzY3JpcHRpb248L0VNPgorICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA8U1RST05HPldBX0hPUklaT05UQUw8L1NUUk9ORz4gICBIb3Jpem9udGFsIGhpZ2hsaWdodAorICAgICAgICAgICAgICA8U1RST05HPldBX0xFRlQ8L1NUUk9ORz4gICAgICAgICBMZWZ0IGhpZ2hsaWdodAorICAgICAgICAgICAgICA8U1RST05HPldBX0xPVzwvU1RST05HPiAgICAgICAgICBMb3cgaGlnaGxpZ2h0CisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfUklHSFQ8L1NUUk9ORz4gICAgICAgIFJpZ2h0IGhpZ2hsaWdodAorICAgICAgICAgICAgICA8U1RST05HPldBX1RPUDwvU1RST05HPiAgICAgICAgICBUb3AgaGlnaGxpZ2h0CisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfVkVSVElDQUw8L1NUUk9ORz4gICAgIFZlcnRpY2FsIGhpZ2hsaWdodAorCisgICAgICAgRm9yIGNvbnNpc3RlbmN5CiAKICAgICAgICBUaGUgZm9sbG93aW5nIG1hY3JvIGlzIHRoZSByZXZlcnNlIG9mIDxTVFJPTkc+Q09MT1JfUEFJUig8L1NUUk9ORz48RU0+bjwvRU0+PFNUUk9ORz4pPC9TVFJPTkc+OgogCiAgICAgICAgPFNUUk9ORz5QQUlSX05VTUJFUig8L1NUUk9ORz48RU0+YXR0cnM8L0VNPikgUmV0dXJucyB0aGUgcGFpciBudW1iZXIgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8U1RST05HPkNPTE9SX1BBSVIoPC9TVFJPTkc+PEVNPm48L0VNPjxTVFJPTkc+KTwvU1RST05HPiBhdHRyaWJ1dGUuCiAKLSAgICAgICBUaGUgcmV0dXJuIHZhbHVlcyBvZiBtYW55IG9mIHRoZXNlIHJvdXRpbmVzIGFyZSBub3QgIG1lYW4tCisgICAgICAgVGhlICByZXR1cm4gdmFsdWVzIG9mIG1hbnkgb2YgdGhlc2Ugcm91dGluZXMgYXJlIG5vdCBtZWFuLQogICAgICAgIGluZ2Z1bCAodGhleSBhcmUgaW1wbGVtZW50ZWQgYXMgbWFjcm8tZXhwYW5kZWQgYXNzaWdubWVudHMKLSAgICAgICBhbmQgc2ltcGx5IHJldHVybiB0aGVpciBhcmd1bWVudCkuICBUaGUgU1ZyNCAgbWFudWFsICBwYWdlCisgICAgICAgYW5kICBzaW1wbHkgIHJldHVybiB0aGVpciBhcmd1bWVudCkuICBUaGUgU1ZyNCBtYW51YWwgcGFnZQogICAgICAgIGNsYWltcyAoZmFsc2VseSkgdGhhdCB0aGVzZSByb3V0aW5lcyBhbHdheXMgcmV0dXJuIDxTVFJPTkc+MTwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KLSAgICAgICBOb3RlICB0aGF0ICA8U1RST05HPmF0dHJvZmY8L1NUUk9ORz4sICA8U1RST05HPndhdHRyb2ZmPC9TVFJPTkc+LCAgPFNUUk9ORz5hdHRyb248L1NUUk9ORz4sIDxTVFJPTkc+d2F0dHJvbjwvU1RST05HPiwgPFNUUk9ORz5hdHRyc2V0PC9TVFJPTkc+LAorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+YXR0cm9mZjwvU1RST05HPiwgIDxTVFJPTkc+d2F0dHJvZmY8L1NUUk9ORz4sICA8U1RST05HPmF0dHJvbjwvU1RST05HPiwgIDxTVFJPTkc+d2F0dHJvbjwvU1RST05HPiwgIDxTVFJPTkc+YXR0cnNldDwvU1RST05HPiwKICAgICAgICA8U1RST05HPndhdHRyc2V0PC9TVFJPTkc+LCA8U1RST05HPnN0YW5kZW5kPC9TVFJPTkc+IGFuZCA8U1RST05HPnN0YW5kb3V0PC9TVFJPTkc+IG1heSBiZSBtYWNyb3MuCiAKLSAgICAgICA8U1RST05HPkNPTE9SX1BBSVI8L1NUUk9ORz4gdmFsdWVzIGNhbiBvbmx5IGJlIE9SJ2Qgd2l0aCBhdHRyaWJ1dGVzIGlmICB0aGUKLSAgICAgICBwYWlyICBudW1iZXIgIGlzICBsZXNzICB0aGFuIDI1Ni4gIFRoZSBhbHRlcm5hdGUgZnVuY3Rpb25zCi0gICAgICAgc3VjaCBhcyA8U1RST05HPmNvbG9yX3NldDwvU1RST05HPiBjYW4gcGFzcyBhIGNvbG9yICBwYWlyICB2YWx1ZSAgZGlyZWN0bHkuCi0gICAgICAgSG93ZXZlciwgIG5jdXJzZXMgIEFCSSA0IGFuZCA1IHNpbXBseSBPUiB0aGlzIHZhbHVlIHdpdGhpbgotICAgICAgIHRoZSBhbHRlcm5hdGUgZnVuY3Rpb25zLiAgWW91IG11c3QgdXNlIG5jdXJzZXMgIEFCSSAgNiAgdG8KKyAgICAgICA8U1RST05HPkNPTE9SX1BBSVI8L1NUUk9ORz4gIHZhbHVlcyBjYW4gb25seSBiZSBPUidkIHdpdGggYXR0cmlidXRlcyBpZiB0aGUKKyAgICAgICBwYWlyIG51bWJlciBpcyBsZXNzIHRoYW4gIDI1Ni4gICBUaGUgIGFsdGVybmF0ZSAgZnVuY3Rpb25zCisgICAgICAgc3VjaCAgYXMgIDxTVFJPTkc+Y29sb3Jfc2V0PC9TVFJPTkc+ICBjYW4gcGFzcyBhIGNvbG9yIHBhaXIgdmFsdWUgZGlyZWN0bHkuCisgICAgICAgSG93ZXZlciwgbmN1cnNlcyBBQkkgNCBhbmQgNSBzaW1wbHkgT1IgdGhpcyAgdmFsdWUgIHdpdGhpbgorICAgICAgIHRoZSAgYWx0ZXJuYXRlICBmdW5jdGlvbnMuICAgWW91IG11c3QgdXNlIG5jdXJzZXMgQUJJIDYgdG8KICAgICAgICBzdXBwb3J0IG1vcmUgdGhhbiAyNTYgY29sb3IgcGFpcnMuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgc3VwcG9ydGVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAotICAgICAgIElzc3VlIDQuICBUaGUgc3RhbmRhcmQgIGRlZmluZWQgIHRoZSAgZGVkaWNhdGVkICB0eXBlICBmb3IKLSAgICAgICBoaWdobGlnaHRzLCAgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4sICB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiBTVnI0IGN1cnNlcy4KLSAgICAgICBUaGUgZnVuY3Rpb25zIHRha2luZyA8U1RST05HPmF0dHJfdDwvU1RST05HPiBhcmd1bWVudHMgIGFyZSAgbm90ICBzdXBwb3J0ZWQKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgc3VwcG9ydGVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKKyAgICAgICBJc3N1ZSAgNC4gICBUaGUgIHN0YW5kYXJkICBkZWZpbmVkICB0aGUgZGVkaWNhdGVkIHR5cGUgZm9yCisgICAgICAgaGlnaGxpZ2h0cywgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4sIHdoaWNoIGlzIG5vdCBkZWZpbmVkIGluICBTVnI0ICBjdXJzZXMuCisgICAgICAgVGhlICBmdW5jdGlvbnMgIHRha2luZyAgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkCiAgICAgICAgdW5kZXIgU1ZyNC4KIAogICAgICAgIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkIHN0YXRlcyB0aGF0IHdoZXRoZXIgdGhlIHRyYWRpdGlvbi0KLSAgICAgICBhbCBmdW5jdGlvbnMgIDxTVFJPTkc+YXR0cm9uPC9TVFJPTkc+LzxTVFJPTkc+YXR0cm9mZjwvU1RST05HPi88U1RST05HPmF0dHJzZXQ8L1NUUk9ORz4gIGNhbiAgbWFuaXB1bGF0ZSAgYXQtCi0gICAgICAgdHJpYnV0ZXMgIG90aGVyICB0aGFuICA8U1RST05HPkFfQkxJTks8L1NUUk9ORz4sICA8U1RST05HPkFfQk9MRDwvU1RST05HPiwgPFNUUk9ORz5BX0RJTTwvU1RST05HPiwgPFNUUk9ORz5BX1JFVkVSU0U8L1NUUk9ORz4sCi0gICAgICAgPFNUUk9ORz5BX1NUQU5ET1VUPC9TVFJPTkc+LCBvciA8U1RST05HPkFfVU5ERVJMSU5FPC9TVFJPTkc+IGlzICJ1bnNwZWNpZmllZCIuICAgVW5kZXIgIHRoaXMKLSAgICAgICBpbXBsZW1lbnRhdGlvbiAgYXMgIHdlbGwgIGFzICBTVnI0IGN1cnNlcywgdGhlc2UgZnVuY3Rpb25zCi0gICAgICAgY29ycmVjdGx5IG1hbmlwdWxhdGUgYWxsIG90aGVyICBoaWdobGlnaHRzICAoc3BlY2lmaWNhbGx5LAorICAgICAgIGFsICBmdW5jdGlvbnMgIDxTVFJPTkc+YXR0cm9uPC9TVFJPTkc+LzxTVFJPTkc+YXR0cm9mZjwvU1RST05HPi88U1RST05HPmF0dHJzZXQ8L1NUUk9ORz4gIGNhbiAgbWFuaXB1bGF0ZSBhdC0KKyAgICAgICB0cmlidXRlcyBvdGhlciB0aGFuICA8U1RST05HPkFfQkxJTks8L1NUUk9ORz4sICA8U1RST05HPkFfQk9MRDwvU1RST05HPiwgIDxTVFJPTkc+QV9ESU08L1NUUk9ORz4sICA8U1RST05HPkFfUkVWRVJTRTwvU1RST05HPiwKKyAgICAgICA8U1RST05HPkFfU1RBTkRPVVQ8L1NUUk9ORz4sICBvciAgPFNUUk9ORz5BX1VOREVSTElORTwvU1RST05HPiBpcyAidW5zcGVjaWZpZWQiLiAgVW5kZXIgdGhpcworICAgICAgIGltcGxlbWVudGF0aW9uIGFzIHdlbGwgYXMgIFNWcjQgIGN1cnNlcywgIHRoZXNlICBmdW5jdGlvbnMKKyAgICAgICBjb3JyZWN0bHkgIG1hbmlwdWxhdGUgIGFsbCBvdGhlciBoaWdobGlnaHRzIChzcGVjaWZpY2FsbHksCiAgICAgICAgPFNUUk9ORz5BX0FMVENIQVJTRVQ8L1NUUk9ORz4sIDxTVFJPTkc+QV9QUk9URUNUPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5BX0lOVklTPC9TVFJPTkc+KS4KIAotICAgICAgIFhTSSAgQ3Vyc2VzIGFkZGVkIHRoZSBuZXcgZW50cnkgcG9pbnRzLCA8U1RST05HPmF0dHJfZ2V0PC9TVFJPTkc+LCA8U1RST05HPmF0dHJfb248L1NUUk9ORz4sCi0gICAgICAgPFNUUk9ORz5hdHRyX29mZjwvU1RST05HPiwgPFNUUk9ORz5hdHRyX3NldDwvU1RST05HPiwgPFNUUk9ORz53YXR0cl9vbjwvU1RST05HPiwgPFNUUk9ORz53YXR0cl9vZmY8L1NUUk9ORz4sICA8U1RST05HPndhdHRyX2dldDwvU1RST05HPiwgIDxTVFJPTkc+d2F0LTwvU1RST05HPgotICAgICAgIDxTVFJPTkc+dHJfc2V0PC9TVFJPTkc+LiAgIFRoZXNlICBhcmUgaW50ZW5kZWQgdG8gd29yayB3aXRoIGEgbmV3IHNlcmllcyBvZgotICAgICAgIGhpZ2hsaWdodCBtYWNyb3MgcHJlZml4ZWQgd2l0aCA8U1RST05HPldBXzwvU1RST05HPi4KKyAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIHRoZSAgPFNUUk9ORz5BX0lUQUxJQzwvU1RST05HPiAgYXR0cmlidXRlICBmb3IKKyAgICAgICB0ZXJtaW5hbHMgd2hpY2ggaGF2ZSB0aGUgPEVNPmVudGVyPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+aXRhbGljczwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPm1vZGU8L0VNPiAoc2l0bSkgYW5kIDxFTT5leC08L0VNPgorICAgICAgIDxFTT5pdDwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPml0YWxpY3M8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5tb2RlPC9FTT4gKHJpdG0pIGNhcGFiaWxpdGllcy4gIEl0YWxpY3MgYXJlIG5vdCBtZW4tCisgICAgICAgdGlvbmVkICBpbiAgWC9PcGVuICBDdXJzZXMuICAgVW5saWtlICB0aGUgIG90aGVyIHZpZGVvIGF0LQorICAgICAgIHRyaWJ1dGVzLCA8U1RST05HPklfSVRBTElDPC9TVFJPTkc+IGlzIHVucmVsYXRlZCB0byB0aGUgPEVNPnNldDwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmF0dHJpYnV0ZXM8L0VNPiAgY2EtCisgICAgICAgcGFiaWxpdGllcy4gIFRoaXMgaW1wbGVtZW50YXRpb24gbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdAorICAgICAgIDxFTT5leGl0PC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+YXR0cmlidXRlPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+bW9kZTwvRU0+IG1heSBhbHNvIHJlc2V0IGl0YWxpY3MuCiAKLSAgICAgICBPbGRlciB2ZXJzaW9ucyBvZiB0aGlzIGxpYnJhcnkgZGlkIG5vdCBmb3JjZSBhbiB1cGRhdGUgIG9mCi0gICAgICAgdGhlICBzY3JlZW4gd2hlbiBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcy4gIFVzZSA8U1RST05HPnRvdWNod2luPC9TVFJPTkc+IHRvCi0gICAgICAgZm9yY2UgdGhlIHNjcmVlbiB0byBtYXRjaCB0aGUgdXBkYXRlZCBhdHRyaWJ1dGVzLgorICAgICAgIFhTSSBDdXJzZXMgYWRkZWQgdGhlIG5ldyBlbnRyeSBwb2ludHMsIDxTVFJPTkc+YXR0cl9nZXQ8L1NUUk9ORz4sICA8U1RST05HPmF0dHJfb248L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz5hdHRyX29mZjwvU1RST05HPiwgIDxTVFJPTkc+YXR0cl9zZXQ8L1NUUk9ORz4sICA8U1RST05HPndhdHRyX29uPC9TVFJPTkc+LCA8U1RST05HPndhdHRyX29mZjwvU1RST05HPiwgPFNUUk9ORz53YXR0cl9nZXQ8L1NUUk9ORz4sIDxTVFJPTkc+d2F0LTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dHJfc2V0PC9TVFJPTkc+LiAgVGhlc2UgYXJlIGludGVuZGVkIHRvIHdvcmsgd2l0aCBhIG5ldyAgc2VyaWVzICBvZgorICAgICAgIGhpZ2hsaWdodCBtYWNyb3MgcHJlZml4ZWQgd2l0aCA8U1RST05HPldBXzwvU1RST05HPi4gIFRoZSBvbGRlciBtYWNyb3MgaGF2ZQorICAgICAgIGRpcmVjdCBjb3VudGVycGFydHMgaW4gdGhlIG5ld2VyIHNldCBvZiBuYW1lczoKIAorICAgICAgICAgICAgICA8RU0+TmFtZTwvRU0+ICAgICAgICAgICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KKyAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfTk9STUFMPC9TVFJPTkc+ICAgICAgIE5vcm1hbCBkaXNwbGF5IChubyBoaWdobGlnaHQpCisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfU1RBTkRPVVQ8L1NUUk9ORz4gICAgIEJlc3QgaGlnaGxpZ2h0aW5nIG1vZGUgb2YgdGhlIHRlcm1pbmFsLgorICAgICAgICAgICAgICA8U1RST05HPldBX1VOREVSTElORTwvU1RST05HPiAgICBVbmRlcmxpbmluZworICAgICAgICAgICAgICA8U1RST05HPldBX1JFVkVSU0U8L1NUUk9ORz4gICAgICBSZXZlcnNlIHZpZGVvCisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfQkxJTks8L1NUUk9ORz4gICAgICAgIEJsaW5raW5nCisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfRElNPC9TVFJPTkc+ICAgICAgICAgIEhhbGYgYnJpZ2h0CisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfQk9MRDwvU1RST05HPiAgICAgICAgIEV4dHJhIGJyaWdodCBvciBib2xkCisgICAgICAgICAgICAgIDxTVFJPTkc+V0FfQUxUQ0hBUlNFVDwvU1RST05HPiAgIEFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0CiAKLSAgICAgICAgPFNUUk9ORz5XQV9OT1JNQUw8L1NUUk9ORz4gICAgICAgTm9ybWFsIGRpc3BsYXkgKG5vIGhpZ2hsaWdodCkKLSAgICAgICAgPFNUUk9ORz5XQV9TVEFORE9VVDwvU1RST05HPiAgICAgQmVzdCBoaWdobGlnaHRpbmcgbW9kZSBvZiB0aGUgdGVybWluYWwuCi0gICAgICAgIDxTVFJPTkc+V0FfVU5ERVJMSU5FPC9TVFJPTkc+ICAgIFVuZGVybGluaW5nCi0gICAgICAgIDxTVFJPTkc+V0FfUkVWRVJTRTwvU1RST05HPiAgICAgIFJldmVyc2UgdmlkZW8KLSAgICAgICAgPFNUUk9ORz5XQV9CTElOSzwvU1RST05HPiAgICAgICAgQmxpbmtpbmcKLSAgICAgICAgPFNUUk9ORz5XQV9ESU08L1NUUk9ORz4gICAgICAgICAgSGFsZiBicmlnaHQKLSAgICAgICAgPFNUUk9ORz5XQV9CT0xEPC9TVFJPTkc+ICAgICAgICAgRXh0cmEgYnJpZ2h0IG9yIGJvbGQKLSAgICAgICAgPFNUUk9ORz5XQV9BTFRDSEFSU0VUPC9TVFJPTkc+ICAgQWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKKyAgICAgICBWZXJ5IG9sZCB2ZXJzaW9ucyBvZiB0aGlzIGxpYnJhcnkgZGlkIG5vdCBmb3JjZSBhbiAgdXBkYXRlCisgICAgICAgb2YgIHRoZSBzY3JlZW4gd2hlbiBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcy4gIFVzZSA8U1RST05HPnRvdWNod2luPC9TVFJPTkc+CisgICAgICAgdG8gZm9yY2UgdGhlIHNjcmVlbiB0byBtYXRjaCB0aGUgdXBkYXRlZCBhdHRyaWJ1dGVzLgogCiAgICAgICAgVGhlIFhTSSBjdXJzZXMgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgZWFjaCBwYWlyIG9mIGNvcnJlLQogICAgICAgIHNwb25kaW5nICA8U1RST05HPkFfPC9TVFJPTkc+ICBhbmQgPFNUUk9ORz5XQV88L1NUUk9ORz4tdXNpbmcgZnVuY3Rpb25zIG9wZXJhdGVzIG9uIHRoZSBzYW1lCkBAIC0yMjcsMzcgKzI4Myw1NyBAQAogCiAgICAgICAgVGhlIFhTSSBzdGFuZGFyZCBleHRlbmRlZCBjb25mb3JtYW5jZSBsZXZlbCBhZGRzIG5ldyBoaWdoLQogICAgICAgIGxpZ2h0cyA8U1RST05HPkFfSE9SSVpPTlRBTDwvU1RST05HPiwgPFNUUk9ORz5BX0xFRlQ8L1NUUk9ORz4sIDxTVFJPTkc+QV9MT1c8L1NUUk9ORz4sIDxTVFJPTkc+QV9SSUdIVDwvU1RST05HPiwgPFNUUk9ORz5BX1RPUDwvU1RST05HPiwgPFNUUk9ORz5BX1ZFUi08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPlRJQ0FMPC9TVFJPTkc+IChhbmQgY29ycmVzcG9uZGluZyA8U1RST05HPldBXzwvU1RST05HPiBtYWNyb3MgZm9yIGVhY2gpICB3aGljaCAgdGhpcwotICAgICAgIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHlldCBzdXBwb3J0LgorICAgICAgIDxTVFJPTkc+VElDQUw8L1NUUk9ORz4gKGFuZCBjb3JyZXNwb25kaW5nIDxTVFJPTkc+V0FfPC9TVFJPTkc+IG1hY3JvcyBmb3IgZWFjaCkuICBBcyBvZiAgQXUtCisgICAgICAgZ3VzdCAgMjAxMywgIG5vICBrbm93biAgdGVybWluYWwgcHJvdmlkZXMgdGhlc2UgaGlnaGxpZ2h0cworICAgICAgIChpLmUuLCB2aWEgdGhlIDxTVFJPTkc+c2dyMTwvU1RST05HPiBjYXBhYmlsaXR5KS4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgQWxsICByb3V0aW5lcyAgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+T0s8L1NUUk9ORz4gb24gc3VjY2Vzcywgb3IgPFNUUk9ORz5FUlI8L1NUUk9ORz4gb24KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPk9LPC9TVFJPTkc+IG9uIHN1Y2Nlc3MsIG9yICA8U1RST05HPkVSUjwvU1RST05HPiAgb24KICAgICAgICBmYWlsdXJlLgogCiAgICAgICAgWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIAogICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIKLSAgICAgICBpcyAgbnVsbC4gIFRoZSA8U1RST05HPndjb2xvcl9zZXQ8L1NUUk9ORz4gZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUKLSAgICAgICBjb2xvciAgcGFpciAgcGFyYW1ldGVyICBpcyAgb3V0c2lkZSAgdGhlICAgcmFuZ2UgICAwLi5DT0wtCi0gICAgICAgT1JfUEFJUlMtMS4gICBUaGlzICBpbXBsZW1lbnRhdGlvbiAgYWxzbyBwcm92aWRlcyA8U1RST05HPmdldGF0dHJzPC9TVFJPTkc+CisgICAgICAgaXMgbnVsbC4gIFRoZSA8U1RST05HPndjb2xvcl9zZXQ8L1NUUk9ORz4gZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiAgdGhlCisgICAgICAgY29sb3IgICBwYWlyICAgcGFyYW1ldGVyICBpcyAgb3V0c2lkZSAgdGhlICByYW5nZSAgMC4uQ09MLQorICAgICAgIE9SX1BBSVJTLTEuICBUaGlzIGltcGxlbWVudGF0aW9uICBhbHNvICBwcm92aWRlcyAgPFNUUk9ORz5nZXRhdHRyczwvU1RST05HPgogICAgICAgIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgY3Vyc2VzLgogCisgICAgICAgRnVuY3Rpb25zICB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlLQorICAgICAgIG1lbnQgdXNpbmcgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgIHBvc2l0aW9uICBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPiwgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRzdHIuM3guaHRtbCI+Y3Vyc19hZGRzdHIoM3gpPC9BPjwvU1RST05HPiwKLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmtnZC4zeC5odG1sIj5jdXJzX2JrZ2QoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50dy4zeC5odG1sIj5jdXJzX3ByaW50dygzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRzdHIuM3guaHRtbCI+Y3Vyc19hZGRzdHIoM3gpPC9BPjwvU1RST05HPiwKKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmtnZC4zeC5odG1sIj5jdXJzX2JrZ2QoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50dy4zeC5odG1sIj5jdXJzX3ByaW50dygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLWF0dHJzZXQiPmF0dHJzZXQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtYXR0cl9zZXQiPmF0dHJfc2V0PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWNvbG9yX3NldCI+Y29sb3Jfc2V0PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWF0dHJfZ2V0Ij5hdHRyX2dldDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1jaGdhdCI+Y2hnYXQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQXR0cmlidXRlcyI+QXR0cmlidXRlczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19iZWVwLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19iZWVwLjN4Lmh0bWwKaW5kZXggMjcxYWNjMS4uYjJjZTdkMiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfYmVlcC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2JlZXAuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzEgKzI2LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2JlZXAuM3gsdiAxLjEwIDIwMDUvMDEvMDggMTc6NTU6NTEgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2JlZXAuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19iZWVwIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19iZWVwIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2JlZXAgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmVlcC4zeC5odG1sIj5jdXJzX2JlZXAoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19iZWVwLjN4Lmh0bWwiPmN1cnNfYmVlcCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5iZWVwPC9TVFJPTkc+LCA8U1RST05HPmZsYXNoPC9TVFJPTkc+IC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gYmVsbCBhbmQgc2NyZWVuIGZsYXNoIHJvdXRpbmVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5iZWVwKHZvaWQpOzwvU1RST05HPgpAQCAtNTksNyArNTksNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+YmVlcDwvU1RST05HPiBhbmQgPFNUUk9ORz5mbGFzaDwvU1RST05HPiByb3V0aW5lcyBhcmUgdXNlZCB0byBhbGVydCB0aGUgdGVybWluYWwKICAgICAgICB1c2VyLiAgVGhlIHJvdXRpbmUgPFNUUk9ORz5iZWVwPC9TVFJPTkc+IHNvdW5kcyBhbiAgYXVkaWJsZSAgYWxhcm0gIG9uICB0aGUKICAgICAgICB0ZXJtaW5hbCwgIGlmICBwb3NzaWJsZTsgIG90aGVyd2lzZSAgaXQgZmxhc2hlcyB0aGUgc2NyZWVuCkBAIC03MSwzNiArNzEsNDIgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+IGlmIHRoZXkgIHN1Y2NlZWQgIGluICBiZWVwaW5nICBvcgogICAgICAgIGZsYXNoaW5nLCA8U1RST05HPkVSUjwvU1RST05HPiBvdGhlcndpc2UuCiAKIAogPC9QUkU+Ci08SDI+RVhURU5TSU9OUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1FWFRFTlNJT05TIj5FWFRFTlNJT05TPC9hPjwvSDI+PFBSRT4KICAgICAgICBTVnI0J3MgIGJlZXAgIGFuZCBmbGFzaCByb3V0aW5lcyBhbHdheXMgcmV0dXJuZWQgPFNUUk9ORz5PSzwvU1RST05HPiwgc28gaXQKICAgICAgICB3YXMgbm90IHBvc3NpYmxlIHRvIHRlbGwgd2hlbiB0aGUgYmVlcCBvciBmbGFzaCBmYWlsZWQuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyAgc3RhbmRhcmQsCiAgICAgICAgSXNzdWUgIDQuICBMaWtlIFNWcjQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZXkgYWx3YXlzIHJldHVybgogICAgICAgIDxTVFJPTkc+T0s8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmVlcC4zeC5odG1sIj5jdXJzX2JlZXAoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRVhURU5TSU9OUyI+RVhURU5TSU9OUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19ia2dkLjN4Lmh0bWwKaW5kZXggZTczZjkwZi4uNTlkYjgzZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfYmtnZC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2JrZ2QuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNDMgKzI2LDQ3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2JrZ2QuM3gsdiAxLjE5IDIwMDMvMTIvMjcgMTg6NTA6NDAgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2JrZ2QuM3gsdiAxLjIzIDIwMTUvMDcvMjEgMDA6MTE6MDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19ia2dkIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19ia2dkIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2JrZ2QgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmtnZC4zeC5odG1sIj5jdXJzX2JrZ2QoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5ia2dkc2V0PC9TVFJPTkc+LCAgPFNUUk9ORz53YmtnZHNldDwvU1RST05HPiwgIDxTVFJPTkc+YmtnZDwvU1RST05HPiwgIDxTVFJPTkc+d2JrZ2Q8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0YmtnZDwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdwogICAgICAgIGJhY2tncm91bmQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCi0gICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+YmtnZHNldChjaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5jaCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+d2JrZ2RzZXQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5jaCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ia2dkKGNodHlwZTwvU1RST05HPiA8U1RST05HPmNoKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndia2dkKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+Y2gpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+Z2V0YmtnZChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5ia2dkc2V0KGNodHlwZTwvU1RST05HPiA8RU0+Y2g8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz53YmtnZHNldChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbiw8L0VNPiA8RU0+Y2h0eXBlPC9FTT4gPEVNPmNoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ia2dkKGNodHlwZTwvU1RST05HPiA8RU0+Y2g8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndia2dkKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPEVNPmNoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5nZXRia2dkKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtYmtnZHNldCI+YmtnZHNldDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+YmtnZHNldDwvU1RST05HPiBhbmQgPFNUUk9ORz53YmtnZHNldDwvU1RST05HPiAgcm91dGluZXMgIG1hbmlwdWxhdGUgIHRoZSAgYmFjay0KICAgICAgICBncm91bmQgIG9mICB0aGUgIG5hbWVkIHdpbmRvdy4gIFRoZSB3aW5kb3cgYmFja2dyb3VuZCBpcyBhCiAgICAgICAgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gY29uc2lzdGluZyBvZiBhbnkgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyAgKGkuZS4sCkBAIC04MCw1MiArODMsNzAgQEAKICAgICAgICBhdHRyaWJ1dGUgIHBhcnQgIG9mICB0aGUgIGJhY2tncm91bmQgIGlzICBkaXNwbGF5ZWQgYXMgdGhlCiAgICAgICAgZ3JhcGhpYyByZW5kaXRpb24gb2YgdGhlIGNoYXJhY3RlciBwdXQgb24gdGhlIHNjcmVlbi4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1ia2dkIj5ia2dkPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5ia2dkPC9TVFJPTkc+IGFuZCA8U1RST05HPndia2dkPC9TVFJPTkc+IGZ1bmN0aW9ucyBzZXQgdGhlICBiYWNrZ3JvdW5kICBwcm9wZXJ0eQogICAgICAgIG9mICB0aGUgIGN1cnJlbnQgIG9yICBzcGVjaWZpZWQgd2luZG93IGFuZCB0aGVuIGFwcGx5IHRoaXMKICAgICAgICBzZXR0aW5nIHRvIGV2ZXJ5IGNoYXJhY3RlciBwb3NpdGlvbiBpbiB0aGF0IHdpbmRvdzoKIAotICAgICAgICAgICAgICBUaGUgcmVuZGl0aW9uIG9mIGV2ZXJ5IGNoYXJhY3RlciBvbiB0aGUgIHNjcmVlbiAgaXMKLSAgICAgICAgICAgICAgY2hhbmdlZCB0byB0aGUgbmV3IGJhY2tncm91bmQgcmVuZGl0aW9uLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSByZW5kaXRpb24gb2YgZXZlcnkgIGNoYXJhY3RlciAgb24gIHRoZSAgc2NyZWVuICBpcworICAgICAgICAgICBjaGFuZ2VkIHRvIHRoZSBuZXcgYmFja2dyb3VuZCByZW5kaXRpb24uCiAKLSAgICAgICAgICAgICAgV2hlcmV2ZXIgIHRoZSAgZm9ybWVyIGJhY2tncm91bmQgY2hhcmFjdGVyIGFwcGVhcnMsCi0gICAgICAgICAgICAgIGl0IGlzIGNoYW5nZWQgdG8gdGhlIG5ldyBiYWNrZ3JvdW5kIGNoYXJhY3Rlci4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBXaGVyZXZlciAgdGhlICBmb3JtZXIgYmFja2dyb3VuZCBjaGFyYWN0ZXIgYXBwZWFycywgaXQKKyAgICAgICAgICAgaXMgY2hhbmdlZCB0byB0aGUgbmV3IGJhY2tncm91bmQgY2hhcmFjdGVyLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWdldGJrZ2QiPmdldGJrZ2Q8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmdldGJrZ2Q8L1NUUk9ORz4gZnVuY3Rpb24gcmV0dXJucyB0aGUgIGdpdmVuICB3aW5kb3cncyAgY3VycmVudAogICAgICAgIGJhY2tncm91bmQgY2hhcmFjdGVyL2F0dHJpYnV0ZSBwYWlyLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICByb3V0aW5lcyAgPFNUUk9ORz5ia2dkPC9TVFJPTkc+ICBhbmQgPFNUUk9ORz53YmtnZDwvU1RST05HPiByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5PSzwvU1RST05HPi4gIFRoZQogICAgICAgIFNWcjQuMCBtYW51YWwgc2F5cyAib3IgYSBub24tbmVnYXRpdmUgaW50ZWdlciAgaWYgIDxTVFJPTkc+aW1tZWRvazwvU1RST05HPgogICAgICAgIGlzIHNldCIsIGJ1dCB0aGlzIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5ia2dkc2V0PC9TVFJPTkc+IGFuZCA8U1RST05HPmJrZ2Q8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LiAgSXQgc3BlY2lmaWVzIHRoYXQgPFNUUk9ORz5ia2dkPC9TVFJPTkc+IGFuZCA8U1RST05HPndia2dkPC9TVFJPTkc+IHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gIG9uCi0gICAgICAgZmFpbHVyZS4gIGJ1dCBnaXZlcyBubyBmYWlsdXJlIGNvbmRpdGlvbnMuCisgICAgICAgZmFpbHVyZSwgYnV0IGdpdmVzIG5vIGZhaWx1cmUgY29uZGl0aW9ucy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPmN1cnNfb3V0LTwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2guM3guaHRtbCI+Y3Vyc19hZGRjaCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz5jdXJzX291dC08L1NUUk9ORz4KICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3V0b3B0cy4zeC5odG1sIj5vcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmtnZC4zeC5odG1sIj5jdXJzX2JrZ2QoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLWJrZ2RzZXQiPmJrZ2RzZXQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtYmtnZCI+YmtnZDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1nZXRia2dkIj5nZXRia2dkPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2JrZ3JuZC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfYmtncm5kLjN4Lmh0bWwKaW5kZXggZGQ3NjFiNy4uYzJiMTA2MyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfYmtncm5kLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfYmtncm5kLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19ia2dybmQuM3gsdiAxLjMgMjAwNi8wMi8yNSAyMTo0OToxOSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfYmtncm5kLjN4LHYgMS42IDIwMTUvMDcvMjEgMDA6MTg6NDIgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19ia2dybmQgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2JrZ3JuZCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19ia2dybmQgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmtncm5kLjN4Lmh0bWwiPmN1cnNfYmtncm5kKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dybmQuM3guaHRtbCI+Y3Vyc19ia2dybmQoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Ymtncm5kPC9TVFJPTkc+LCAgPFNUUk9ORz53Ymtncm5kPC9TVFJPTkc+LCAgPFNUUk9ORz5ia2dybmRzZXQ8L1NUUk9ORz4sIDxTVFJPTkc+d2JrZ3JuZHNldDwvU1RST05HPiwgPFNUUk9ORz5nZXRia2dybmQ8L1NUUk9ORz4sIDxTVFJPTkc+d2dldC08L1NUUk9ORz4KICAgICAgICA8U1RST05HPmJrZ3JuZDwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+ICB3aW5kb3cgIGNvbXBsZXggIGJhY2tncm91bmQgIG1hbmlwdWxhdGlvbgogICAgICAgIHJvdXRpbmVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ia2dybmQoPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53Y2g8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KQEAgLTY1LDcgKzY1LDEwIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtYmtncm5kc2V0Ij5ia2dybmRzZXQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmJrZ3JuZHNldDwvU1RST05HPiBhbmQgPFNUUk9ORz53Ymtncm5kc2V0PC9TVFJPTkc+IHJvdXRpbmVzIG1hbmlwdWxhdGUgdGhlIGJhY2stCiAgICAgICAgZ3JvdW5kIG9mIHRoZSBuYW1lZCB3aW5kb3cuICBUaGUgd2luZG93ICBiYWNrZ3JvdW5kICBpcyAgYQogICAgICAgIDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPiBjb25zaXN0aW5nIG9mIGFueSBjb21iaW5hdGlvbiBvZiBhdHRyaWJ1dGVzIChpLmUuLApAQCAtODIsNDcgKzg1LDY0IEBACiAgICAgICAgYXR0cmlidXRlIHBhcnQgb2YgIHRoZSAgYmFja2dyb3VuZCAgaXMgIGRpc3BsYXllZCAgYXMgIHRoZQogICAgICAgIGdyYXBoaWMgcmVuZGl0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgcHV0IG9uIHRoZSBzY3JlZW4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtYmtncm5kIj5ia2dybmQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5ia2dybmQ8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d2JrZ3JuZDwvU1RST05HPiBmdW5jdGlvbnMgc2V0IHRoZSBiYWNrZ3JvdW5kIHByb3AtCiAgICAgICAgZXJ0eSBvZiB0aGUgY3VycmVudCBvciBzcGVjaWZpZWQgIHdpbmRvdyAgYW5kICB0aGVuICBhcHBseQogICAgICAgIHRoaXMgc2V0dGluZyB0byBldmVyeSBjaGFyYWN0ZXIgcG9zaXRpb24gaW4gdGhhdCB3aW5kb3c6CiAKLSAgICAgICAgICAgICAgVGhlICByZW5kaXRpb24gIG9mIGV2ZXJ5IGNoYXJhY3RlciBvbiB0aGUgc2NyZWVuIGlzCi0gICAgICAgICAgICAgIGNoYW5nZWQgdG8gdGhlIG5ldyBiYWNrZ3JvdW5kIHJlbmRpdGlvbi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgIHJlbmRpdGlvbiAgb2YgIGV2ZXJ5ICBjaGFyYWN0ZXIgIG9uIHRoZSBzY3JlZW4gaXMKKyAgICAgICAgICAgY2hhbmdlZCB0byB0aGUgbmV3IGJhY2tncm91bmQgcmVuZGl0aW9uLgogCi0gICAgICAgICAgICAgIFdoZXJldmVyIHRoZSBmb3JtZXIgYmFja2dyb3VuZCAgY2hhcmFjdGVyICBhcHBlYXJzLAotICAgICAgICAgICAgICBpdCBpcyBjaGFuZ2VkIHRvIHRoZSBuZXcgYmFja2dyb3VuZCBjaGFyYWN0ZXIuCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgV2hlcmV2ZXIgdGhlIGZvcm1lciBiYWNrZ3JvdW5kIGNoYXJhY3RlciAgYXBwZWFycywgIGl0CisgICAgICAgICAgIGlzIGNoYW5nZWQgdG8gdGhlIG5ldyBiYWNrZ3JvdW5kIGNoYXJhY3Rlci4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1nZXRia2dybmQiPmdldGJrZ3JuZDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPmdldGJrZ3JuZDwvU1RST05HPiBmdW5jdGlvbiByZXR1cm5zIHRoZSBnaXZlbiB3aW5kb3cncyBjdXJyZW50CiAgICAgICAgYmFja2dyb3VuZCBjaGFyYWN0ZXIvYXR0cmlidXRlIHBhaXIgdmlhIHRoZSA8U1RST05HPndjaDwvU1RST05HPiBwb2ludGVyLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgotICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmJrZ3JuZDwvU1RST05HPiwgPFNUUk9ORz5ia2dybmRzZXQ8L1NUUk9ORz4sIGFuZCA8U1RST05HPmdldGJrZ3JuZDwvU1RST05HPiBtYXkgYmUgIG1hY3Jvcy4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgorICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmJrZ3JuZDwvU1RST05HPiwgPFNUUk9ORz5ia2dybmRzZXQ8L1NUUk9ORz4sIGFuZCA8U1RST05HPmdldGJrZ3JuZDwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRVM8L0gyPjxQUkU+Ci0gICAgICAgVGhlICA8U1RST05HPmJrZ3JuZHNldDwvU1RST05HPiAgYW5kICA8U1RST05HPndia2dybmRzZXQ8L1NUUk9ORz4gIHJvdXRpbmVzICBkbyBub3QgcmV0dXJuIGEKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+Ymtncm5kc2V0PC9TVFJPTkc+IGFuZCA8U1RST05HPndia2dybmRzZXQ8L1NUUk9ORz4gIHJvdXRpbmVzICBkbyAgbm90ICByZXR1cm4gIGEKICAgICAgICB2YWx1ZS4KIAogICAgICAgIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB0aGUgb3RoZXIgZnVuY3Rpb25zIHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+LgotICAgICAgIE90aGVyd2lzZSwgIHRoZXkgIHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4uICAgQSAgbnVsbCB3aW5kb3cgcG9pbnRlciBpcworICAgICAgIE90aGVyd2lzZSwgdGhleSByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4uICAgQSAgbnVsbCAgd2luZG93ICBwb2ludGVyICBpcwogICAgICAgIHRyZWF0ZWQgYXMgYW4gZXJyb3IuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dkLjN4Lmh0bWwiPmN1cnNfYmtnZCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dybmQuM3guaHRtbCI+Y3Vyc19ia2dybmQoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLWJrZ3JuZHNldCI+Ymtncm5kc2V0PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWJrZ3JuZCI+Ymtncm5kPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWdldGJrZ3JuZCI+Z2V0Ymtncm5kPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfYm9yZGVyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbAppbmRleCBlMDg0ODI3Li5mMjFiZTM2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19ib3JkZXIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2JvcmRlci4zeCx2IDEuMTkgMjAwNy8wMi8yNCAxNjoxNTozOCB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfYm9yZGVyLjN4LHYgMS4yMiAyMDEwLzEyLzA0IDE4OjM2OjQ0IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfYm9yZGVyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19ib3JkZXIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfYm9yZGVyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2JvcmRlci4zeC5odG1sIj5jdXJzX2JvcmRlcigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYm9yZGVyLjN4Lmh0bWwiPmN1cnNfYm9yZGVyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmJvcmRlcjwvU1RST05HPiwgPFNUUk9ORz53Ym9yZGVyPC9TVFJPTkc+LCA8U1RST05HPmJveDwvU1RST05HPiwgPFNUUk9ORz5obGluZTwvU1RST05HPiwgPFNUUk9ORz53aGxpbmU8L1NUUk9ORz4sIDxTVFJPTkc+dmxpbmU8L1NUUk9ORz4sIDxTVFJPTkc+d3ZsaW5lPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZobGluZTwvU1RST05HPiwgPFNUUk9ORz5tdndobGluZTwvU1RST05HPiwgPFNUUk9ORz5tdnZsaW5lPC9TVFJPTkc+LCA8U1RST05HPm12d3ZsaW5lPC9TVFJPTkc+IC0gY3JlYXRlIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+CiAgICAgICAgYm9yZGVycywgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgbGluZXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ib3JkZXIoY2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+bHMsPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+cnMsPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+dHMsPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+YnMsPC9TVFJPTkc+CiAgICAgICAgICAgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz50bCw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz50ciw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5ibCw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5icik7PC9TVFJPTkc+CkBAIC03Miw3ICs3Miw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5ib3JkZXI8L1NUUk9ORz4sIDxTVFJPTkc+d2JvcmRlcjwvU1RST05HPiBhbmQgPFNUUk9ORz5ib3g8L1NUUk9ORz4gcm91dGluZXMgZHJhdyBhIGJveCBhcm91bmQgdGhlCiAgICAgICAgZWRnZXMgb2YgYSB3aW5kb3cuICBPdGhlciB0aGFuIHRoZSB3aW5kb3csICBlYWNoICBhcmd1bWVudAogICAgICAgIGlzIGEgY2hhcmFjdGVyIHdpdGggYXR0cmlidXRlczoKQEAgLTExNiwxOCArMTE2LDIyIEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyICA8U1RST05HPk9LPC9TVFJPTkc+LiAgIFRoZSAgU1ZyNC4wICBtYW51YWwKICAgICAgICBzYXlzICAib3IgIGEgIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIGlmIDxTVFJPTkc+aW1tZWRvazwvU1RST05HPiBpcyBzZXQiLCBidXQKICAgICAgICB0aGlzIGFwcGVhcnMgdG8gYmUgYW4gZXJyb3IuCiAKICAgICAgICBYL09wZW4gZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyAgaW1wbGUtCi0gICAgICAgbWVudGF0aW9uICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorICAgICAgIG1lbnRhdGlvbiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCisgICAgICAgRnVuY3Rpb25zICB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlLQorICAgICAgIG1lbnQgdXNpbmcgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgIHBvc2l0aW9uICBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Ci0gICAgICAgVGhlIGJvcmRlcnMgZ2VuZXJhdGVkIGJ5IHRoZXNlIGZ1bmN0aW9ucyBhcmUgIDxFTT5pbnNpZGU8L0VNPiAgYm9yLQorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlICBib3JkZXJzICBnZW5lcmF0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGFyZSA8RU0+aW5zaWRlPC9FTT4gYm9yLQogICAgICAgIGRlcnMgKHRoaXMgaXMgYWxzbyB0cnVlIG9mIFNWcjQgY3Vyc2VzLCB0aG91Z2ggdGhlIGZhY3QgaXMKICAgICAgICBub3QgZG9jdW1lbnRlZCkuCiAKQEAgLTEzNSwyNCArMTM5LDMwIEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgIHN0YW5kYXJkLAotICAgICAgIElzc3VlICA0LiAgIFRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGV5IHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiBvbgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAorICAgICAgIElzc3VlIDQuICBUaGUgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgdGhleSByZXR1cm4gIDxTVFJPTkc+RVJSPC9TVFJPTkc+ICBvbgogICAgICAgIGZhaWx1cmUsIGJ1dCBzcGVjaWZpZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2JvcmRlcl9zZXQuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2JvcmRlcl9zZXQuM3guaHRtbAppbmRleCA0MTVlODEwLi5iN2RmYmM2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19ib3JkZXJfc2V0LjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfYm9yZGVyX3NldC4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywyNiArMjYsMjcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfYm9yZGVyX3NldC4zeCx2IDEuNiAyMDA1LzA1LzE1IDE2OjE3OjM3IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19ib3JkZXJfc2V0LjN4LHYgMS4xMSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfYm9yZGVyX3NldCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfYm9yZGVyX3NldCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19ib3JkZXJfc2V0IDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2JvcmRlcl9zZXQuM3guaHRtbCI+Y3Vyc19ib3JkZXJfc2V0KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYm9yZGVyX3NldC4zeC5odG1sIj5jdXJzX2JvcmRlcl9zZXQoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Ym9yZGVyX3NldDwvU1RST05HPiwgPFNUUk9ORz53Ym9yZGVyX3NldDwvU1RST05HPiwgPFNUUk9ORz5ib3hfc2V0PC9TVFJPTkc+LCA8U1RST05HPmhsaW5lX3NldDwvU1RST05HPiwgPFNUUk9ORz53aGxpbmVfc2V0PC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZobGluZV9zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3aGxpbmVfc2V0PC9TVFJPTkc+LCA8U1RST05HPnZsaW5lX3NldDwvU1RST05HPiwgPFNUUk9ORz53dmxpbmVfc2V0PC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZ2bGluZV9zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3dmxpbmVfc2V0PC9TVFJPTkc+IC0gY3JlYXRlIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGJvcmRlcnMgb3IgbGluZXMKQEAgLTU0LDcgKzU0LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmJvcmRlcl9zZXQoPC9TVFJPTkc+CkBAIC05OSw3ICs5OSw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5ib3JkZXJfc2V0PC9TVFJPTkc+IGFuZCA8U1RST05HPndib3JkZXJfc2V0PC9TVFJPTkc+ICBmdW5jdGlvbnMgIGRyYXcgIGEgIGJvcmRlcgogICAgICAgIGFyb3VuZCAgdGhlICBlZGdlcyAgb2YgIHRoZSAgY3VycmVudCAgb3Igc3BlY2lmaWVkIHdpbmRvdy4KICAgICAgICBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IGNoYW5nZSB0aGUgY3Vyc29yIHBvc2l0aW9uLCBhbmQgIGRvCkBAIC0xNDgsMzIgKzE0OCw0MiBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+Ym9yZGVyX3NldDwvU1RST05HPiwgPFNUUk9ORz5obGluZV9zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bXZobGluZV9zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bXZ2bGluZV9zZXQ8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5tdndobGluZV9zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3dmxpbmVfc2V0PC9TVFJPTkc+LCBhbmQgPFNUUk9ORz52bGluZV9zZXQ8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgIHRoZXNlICBmdW5jdGlvbnMgIHJldHVybiAgPFNUUk9ORz5PSzwvU1RST05HPi4KICAgICAgICBPdGhlcndpc2UsIHRoZXkgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+LgogCiAgICAgICAgRnVuY3Rpb25zICB1c2luZyAgYSB3aW5kb3cgcGFyYW1ldGVyIHJldHVybiBhbiBlcnJvciBpZiBpdAogICAgICAgIGlzIG51bGwuCiAKKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKwogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYm9yZGVyLjN4Lmh0bWwiPmN1cnNfYm9yZGVyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkX3djaC4zeC5odG1sIj5jdXJzX2FkZF93Y2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2JvcmRlci4zeC5odG1sIj5jdXJzX2JvcmRlcigzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz5jdXJzX291dC08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3V0b3B0cy4zeC5odG1sIj5vcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYm9yZGVyX3NldC4zeC5odG1sIj5jdXJzX2JvcmRlcl9zZXQoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfY2xlYXIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2NsZWFyLjN4Lmh0bWwKaW5kZXggODZiYjQ4Ni4uYTgwNWNmYiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfY2xlYXIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19jbGVhci4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMiArMjYsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfY2xlYXIuM3gsdiAxLjExIDIwMDcvMTIvMjkgMTU6NTg6MzggdG9tIEV4cCBACisgICogQElkOiBjdXJzX2NsZWFyLjN4LHYgMS4xNCAyMDEwLzEyLzA0IDE4OjM2OjQ0IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfY2xlYXIgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2NsZWFyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2NsZWFyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY2xlYXIuM3guaHRtbCI+Y3Vyc19jbGVhcigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5lcmFzZTwvU1RST05HPiwgPFNUUk9ORz53ZXJhc2U8L1NUUk9ORz4sIDxTVFJPTkc+Y2xlYXI8L1NUUk9ORz4sIDxTVFJPTkc+d2NsZWFyPC9TVFJPTkc+LCA8U1RST05HPmNscnRvYm90PC9TVFJPTkc+LCA8U1RST05HPndjbHJ0b2JvdDwvU1RST05HPiwKICAgICAgICA8U1RST05HPmNscnRvZW9sPC9TVFJPTkc+LCA8U1RST05HPndjbHJ0b2VvbDwvU1RST05HPiAtIGNsZWFyIGFsbCBvciBwYXJ0IG9mIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiM8L1NUUk9ORz4gPFNUUk9ORz5pbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5lcmFzZSh2b2lkKTs8L1NUUk9ORz4KQEAgLTY2LDIyICs2NiwyMiBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIFRoZSAgPFNUUk9ORz5lcmFzZTwvU1RST05HPiAgYW5kIDxTVFJPTkc+d2VyYXNlPC9TVFJPTkc+IHJvdXRpbmVzIGNvcHkgYmxhbmtzIHRvIGV2ZXJ5IHBvc2ktCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz5lcmFzZTwvU1RST05HPiBhbmQgPFNUUk9ORz53ZXJhc2U8L1NUUk9ORz4gcm91dGluZXMgY29weSBibGFua3MgdG8gIGV2ZXJ5ICBwb3NpLQogICAgICAgIHRpb24gaW4gdGhlIHdpbmRvdywgY2xlYXJpbmcgdGhlIHNjcmVlbi4KIAotICAgICAgIFRoZSA8U1RST05HPmNsZWFyPC9TVFJPTkc+IGFuZCA8U1RST05HPndjbGVhcjwvU1RST05HPiByb3V0aW5lcyBhcmUgbGlrZSA8U1RST05HPmVyYXNlPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+d2VyYXNlPC9TVFJPTkc+LAotICAgICAgIGJ1dCAgdGhleSBhbHNvIGNhbGwgPFNUUk9ORz5jbGVhcm9rPC9TVFJPTkc+LCBzbyB0aGF0IHRoZSBzY3JlZW4gaXMgY2xlYXJlZAotICAgICAgIGNvbXBsZXRlbHkgb24gdGhlIG5leHQgY2FsbCB0byA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+ICBmb3IgIHRoYXQgIHdpbmRvdworICAgICAgIFRoZSAgPFNUUk9ORz5jbGVhcjwvU1RST05HPiAgYW5kIDxTVFJPTkc+d2NsZWFyPC9TVFJPTkc+IHJvdXRpbmVzIGFyZSBsaWtlIDxTVFJPTkc+ZXJhc2U8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d2VyYXNlPC9TVFJPTkc+LAorICAgICAgIGJ1dCB0aGV5IGFsc28gY2FsbCA8U1RST05HPmNsZWFyb2s8L1NUUk9ORz4sIHNvIHRoYXQgdGhlIHNjcmVlbiBpcyAgY2xlYXJlZAorICAgICAgIGNvbXBsZXRlbHkgIG9uICB0aGUgIG5leHQgY2FsbCB0byA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+IGZvciB0aGF0IHdpbmRvdwogICAgICAgIGFuZCByZXBhaW50ZWQgZnJvbSBzY3JhdGNoLgogCi0gICAgICAgVGhlICA8U1RST05HPmNscnRvYm90PC9TVFJPTkc+IGFuZCA8U1RST05HPndjbHJ0b2JvdDwvU1RST05HPiByb3V0aW5lcyBlcmFzZSBmcm9tIHRoZSBjdXJzb3IKKyAgICAgICBUaGUgPFNUUk9ORz5jbHJ0b2JvdDwvU1RST05HPiBhbmQgPFNUUk9ORz53Y2xydG9ib3Q8L1NUUk9ORz4gcm91dGluZXMgZXJhc2UgZnJvbSB0aGUgIGN1cnNvcgogICAgICAgIHRvIHRoZSBlbmQgb2Ygc2NyZWVuLiAgVGhhdCBpcywgdGhleSBlcmFzZSBhbGwgbGluZXMgYmVsb3cKLSAgICAgICB0aGUgIGN1cnNvciAgaW4gdGhlIHdpbmRvdy4gIEFsc28sIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlCisgICAgICAgdGhlIGN1cnNvciBpbiB0aGUgd2luZG93LiAgQWxzbywgdGhlIGN1cnJlbnQgbGluZSAgdG8gIHRoZQogICAgICAgIHJpZ2h0IG9mIHRoZSBjdXJzb3IsIGluY2x1c2l2ZSwgaXMgZXJhc2VkLgogCiAgICAgICAgVGhlIDxTVFJPTkc+Y2xydG9lb2w8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d2NscnRvZW9sPC9TVFJPTkc+IHJvdXRpbmVzIGVyYXNlIHRoZSBjdXJyZW50IGxpbmUKLSAgICAgICB0byAgdGhlICByaWdodCBvZiB0aGUgY3Vyc29yLCBpbmNsdXNpdmUsIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgICAgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjdXJzb3IsIGluY2x1c2l2ZSwgdG8gdGhlIGVuZCAgb2YgIHRoZQogICAgICAgIGN1cnJlbnQgbGluZS4KIAogICAgICAgIEJsYW5rcyBjcmVhdGVkIGJ5IGVyYXN1cmUgaGF2ZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHJlbi0KQEAgLTg5LDU3ICs4OSw2NCBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBBbGwgIHJvdXRpbmVzICByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5PSzwvU1RST05HPiBvbiBzdWNjZXNzIGFuZCA8U1RST05HPkVSUjwvU1RST05HPiBvbgotICAgICAgIGZhaWx1cmUuICBUaGUgU1ZyNC4wIG1hbnVhbCBzYXlzICJvciBhIG5vbi1uZWdhdGl2ZSAgaW50ZS0KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPk9LPC9TVFJPTkc+IG9uIHN1Y2Nlc3MgYW5kICA8U1RST05HPkVSUjwvU1RST05HPiAgb24KKyAgICAgICBmYWlsdXJlLiAgIFRoZSBTVnI0LjAgbWFudWFsIHNheXMgIm9yIGEgbm9uLW5lZ2F0aXZlIGludGUtCiAgICAgICAgZ2VyIGlmIDxTVFJPTkc+aW1tZWRvazwvU1RST05HPiBpcyBzZXQiLCBidXQgdGhpcyBhcHBlYXJzIHRvIGJlIGFuIGVycm9yLgogCi0gICAgICAgWC9PcGVuICBkZWZpbmVzICBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gdGhpcyBpbXBsZW1lbnRhLQorICAgICAgIFgvT3BlbiBkZWZpbmVzIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiAgdGhpcyAgaW1wbGVtZW50YS0KICAgICAgICB0aW9uLCBmdW5jdGlvbnMgdXNpbmcgYSB3aW5kb3cgcG9pbnRlciBwYXJhbWV0ZXIgcmV0dXJuIGFuCiAgICAgICAgZXJyb3IgaWYgaXQgaXMgbnVsbC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmVyYXNlPC9TVFJPTkc+LCA8U1RST05HPndlcmFzZTwvU1RST05HPiwgPFNUUk9ORz5jbGVhcjwvU1RST05HPiwgPFNUUk9ORz53Y2xlYXI8L1NUUk9ORz4sIDxTVFJPTkc+Y2xydG9ib3Q8L1NUUk9ORz4sIGFuZCA8U1RST05HPmNsci08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnRvZW9sPC9TVFJPTkc+IG1heSBiZSBtYWNyb3MuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgIHN0YW5kYXJkLAotICAgICAgIElzc3VlICA0LiAgIFRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGV5IHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiBvbgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAorICAgICAgIElzc3VlIDQuICBUaGUgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgdGhleSByZXR1cm4gIDxTVFJPTkc+RVJSPC9TVFJPTkc+ICBvbgogICAgICAgIGZhaWx1cmUsIGJ1dCBzcGVjaWZpZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIAotICAgICAgIFNvbWUgaGlzdG9yaWMgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyBoYWQsICBhcyAgYW4gIHVuZG9jdS0KLSAgICAgICBtZW50ZWQgIGZlYXR1cmUsICB0aGUgIGFiaWxpdHkgIHRvICBkbyAgdGhlICBlcXVpdmFsZW50IG9mCi0gICAgICAgPFNUUk9ORz5jbGVhcm9rKC4uLiw8L1NUUk9ORz4gPFNUUk9ORz4xKTwvU1RST05HPiBieSBzYXlpbmcgPFNUUk9ORz50b3VjaHdpbihzdGRzY3IpPC9TVFJPTkc+ICBvciAgPFNUUk9ORz5jbGVhcihzdGQtPC9TVFJPTkc+CisgICAgICAgU29tZSAgaGlzdG9yaWMgIGN1cnNlcyAgaW1wbGVtZW50YXRpb25zIGhhZCwgYXMgYW4gdW5kb2N1LQorICAgICAgIG1lbnRlZCBmZWF0dXJlLCAgdGhlICBhYmlsaXR5ICB0byAgZG8gIHRoZSAgZXF1aXZhbGVudCAgb2YKKyAgICAgICA8U1RST05HPmNsZWFyb2soLi4uLDwvU1RST05HPiAgPFNUUk9ORz4xKTwvU1RST05HPiAgYnkgc2F5aW5nIDxTVFJPTkc+dG91Y2h3aW4oc3Rkc2NyKTwvU1RST05HPiBvciA8U1RST05HPmNsZWFyKHN0ZC08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnNjcik8L1NUUk9ORz4uICBUaGlzIHdpbGwgbm90IHdvcmsgdW5kZXIgbmN1cnNlcy4KIAotICAgICAgIFRoaXMgIGltcGxlbWVudGF0aW9uLCBhbmQgb3RoZXJzIHN1Y2ggYXMgU29sYXJpcywgc2V0cyB0aGUKLSAgICAgICBjdXJyZW50IHBvc2l0aW9uIHRvIDAsMCBhZnRlciAgZXJhc2luZyAgdmlhICA8U1RST05HPndlcmFzZSgpPC9TVFJPTkc+ICBhbmQKLSAgICAgICA8U1RST05HPndjbGVhcigpPC9TVFJPTkc+LiAgIFRoYXQgZmFjdCBpcyBub3QgZG9jdW1lbnRlZCBpbiBvdGhlciBpbXBsZW1lbi0KKyAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uLCBhbmQgb3RoZXJzIHN1Y2ggYXMgU29sYXJpcywgc2V0cyAgdGhlCisgICAgICAgY3VycmVudCAgcG9zaXRpb24gIHRvICAwLDAgIGFmdGVyIGVyYXNpbmcgdmlhIDxTVFJPTkc+d2VyYXNlKCk8L1NUUk9ORz4gYW5kCisgICAgICAgPFNUUk9ORz53Y2xlYXIoKTwvU1RST05HPi4gIFRoYXQgZmFjdCBpcyBub3QgZG9jdW1lbnRlZCBpbiBvdGhlciAgaW1wbGVtZW4tCiAgICAgICAgdGF0aW9ucywgYW5kIG1heSBub3QgYmUgdHJ1ZSBvZiBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggd2VyZQogICAgICAgIG5vdCBkZXJpdmVkIGZyb20gU1ZyNCBzb3VyY2UuCiAKLSAgICAgICBOb3QgIG9idmlvdXMgIGZyb20gIHRoZSAgZGVzY3JpcHRpb24sIG1vc3QgaW1wbGVtZW50YXRpb25zCi0gICAgICAgY2xlYXIgdGhlIHNjcmVlbiBhZnRlciA8U1RST05HPndjbGVhcjwvU1RST05HPiBldmVuIGZvciBhIHN1YndpbmRvdyBvciAgZGUtCisgICAgICAgTm90IG9idmlvdXMgZnJvbSAgdGhlICBkZXNjcmlwdGlvbiwgIG1vc3QgIGltcGxlbWVudGF0aW9ucworICAgICAgIGNsZWFyICB0aGUgc2NyZWVuIGFmdGVyIDxTVFJPTkc+d2NsZWFyPC9TVFJPTkc+IGV2ZW4gZm9yIGEgc3Vid2luZG93IG9yIGRlLQogICAgICAgIHJpdmVkIHdpbmRvdy4gIElmIHlvdSBkbyBub3Qgd2FudCB0byBjbGVhciB0aGUgc2NyZWVuIGR1ci0KICAgICAgICBpbmcgdGhlIG5leHQgPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiwgdXNlIDxTVFJPTkc+d2VyYXNlPC9TVFJPTkc+IGluc3RlYWQuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3V0b3B0cy4zeC5odG1sIj5jdXJzX291dG9wdHMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPmN1cnNfdmFyaS08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmFibGVzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19jbGVhci4zeC5odG1sIj5jdXJzX2NsZWFyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19jb2xvci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfY29sb3IuM3guaHRtbAppbmRleCA2ODQ2MDVmLi44ZDBmMDBjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19jb2xvci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM0ICsyNiwzNiBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19jb2xvci4zeCx2IDEuMjggMjAwNS8xMi8xOCAwMDowMDozNyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfY29sb3IuM3gsdiAxLjM5IDIwMTUvMDYvMDYgMjM6Mjk6MDIgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19jb2xvciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfY29sb3IgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfY29sb3IgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19jb2xvci4zeC5odG1sIj5jdXJzX2NvbG9yKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPnN0YXJ0X2NvbG9yPC9TVFJPTkc+LCA8U1RST05HPmluaXRfcGFpcjwvU1RST05HPiwgPFNUUk9ORz5pbml0X2NvbG9yPC9TVFJPTkc+LCA8U1RST05HPmhhc19jb2xvcnM8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5jYW5fY2hhbmdlX2NvbG9yPC9TVFJPTkc+LCA8U1RST05HPmNvbG9yX2NvbnRlbnQ8L1NUUk9ORz4sIDxTVFJPTkc+cGFpcl9jb250ZW50PC9TVFJPTkc+LCA8U1RST05HPkNPTE9SX1BBSVI8L1NUUk9ORz4KICAgICAgICAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGNvbG9yIG1hbmlwdWxhdGlvbiByb3V0aW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jPC9TVFJPTkc+IDxTVFJPTkc+aW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KKwogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c3RhcnRfY29sb3Iodm9pZCk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pbml0X3BhaXIoc2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz5wYWlyLDwvU1RST05HPiA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+Ziw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPmIpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5pdF9jb2xvcihzaG9ydDwvU1RST05HPiA8U1RST05HPmNvbG9yLDwvU1RST05HPiA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+ciw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPmcsPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz5iKTs8L1NUUk9ORz4KQEAgLTY2LDEwICs2NywxMiBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgPFNUUk9ORz5PdmVydmlldzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHN1cHBvcnQgY29sb3IgYXR0cmlidXRlcyBvbiB0ZXJtaW5hbHMgd2l0aCB0aGF0IGNhLQotICAgICAgIHBhYmlsaXR5LiAgIFRvICB1c2UgIHRoZXNlICByb3V0aW5lcyAgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPiAgbXVzdCBiZQorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU92ZXJ2aWV3Ij5PdmVydmlldzwvYT48L0gzPjxQUkU+CisgICAgICAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gc3VwcG9ydHMgY29sb3IgYXR0cmlidXRlcyBvbiAgdGVybWluYWxzICB3aXRoICB0aGF0CisgICAgICAgY2FwYWJpbGl0eS4gICBUbyAgdXNlICB0aGVzZSAgcm91dGluZXMgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPiBtdXN0IGJlCiAgICAgICAgY2FsbGVkLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPi4gICBDb2xvcnMgIGFyZSAgYWx3YXlzCiAgICAgICAgdXNlZCAgaW4gcGFpcnMgKHJlZmVycmVkIHRvIGFzIGNvbG9yLXBhaXJzKS4gIEEgY29sb3ItcGFpcgogICAgICAgIGNvbnNpc3RzIG9mIGEgZm9yZWdyb3VuZCAgY29sb3IgIChmb3IgIGNoYXJhY3RlcnMpICBhbmQgIGEKQEAgLTkwLDUxICs5MywxNTIgQEAKICAgICAgICBUaGUgIHJvdXRpbmUgIDxTVFJPTkc+cGFpcl9jb250ZW50PC9TVFJPTkc+IGFsbG93cyBhIHByb2dyYW1tZXIgdG8gZmluZCBvdXQKICAgICAgICBob3cgYSBnaXZlbiBjb2xvci1wYWlyIGlzIGN1cnJlbnRseSBkZWZpbmVkLgogCi0gICA8U1RST05HPlJvdXRpbmU8L1NUUk9ORz4gPFNUUk9ORz5EZXNjcmlwdGlvbnM8L1NUUk9ORz4KLSAgICAgICBUaGUgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPiByb3V0aW5lIHJlcXVpcmVzIG5vIGFyZ3VtZW50cy4gIEl0IG11c3QgYmUKLSAgICAgICBjYWxsZWQgIGlmICB0aGUgcHJvZ3JhbW1lciB3YW50cyB0byB1c2UgY29sb3JzLCBhbmQgYmVmb3JlCi0gICAgICAgYW55IG90aGVyIGNvbG9yIG1hbmlwdWxhdGlvbiByb3V0aW5lICBpcyAgY2FsbGVkLiAgIEl0ICBpcwotICAgICAgIGdvb2QgIHByYWN0aWNlICB0byAgY2FsbCB0aGlzIHJvdXRpbmUgcmlnaHQgYWZ0ZXIgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+LgotICAgICAgIDxTVFJPTkc+c3RhcnRfY29sb3I8L1NUUk9ORz4gaW5pdGlhbGl6ZXMgZWlnaHQgYmFzaWMgIGNvbG9ycyAgKGJsYWNrLCAgcmVkLAotICAgICAgIGdyZWVuLCAgeWVsbG93LCAgYmx1ZSwgIG1hZ2VudGEsIGN5YW4sIGFuZCB3aGl0ZSksIGFuZCB0d28KLSAgICAgICBnbG9iYWwgdmFyaWFibGVzLCAgPFNUUk9ORz5DT0xPUlM8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5DT0xPUl9QQUlSUzwvU1RST05HPiAgKHJlc3BlY3RpdmVseQotICAgICAgIGRlZmluaW5nICB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sb3JzIGFuZCBjb2xvci1wYWlycyB0aGUKLSAgICAgICB0ZXJtaW5hbCBjYW4gc3VwcG9ydCkuICBJdCBhbHNvIHJlc3RvcmVzIHRoZSBjb2xvcnMgb24gdGhlCi0gICAgICAgdGVybWluYWwgdG8gdGhlIHZhbHVlcyB0aGV5IGhhZCB3aGVuIHRoZSB0ZXJtaW5hbCB3YXMganVzdAotICAgICAgIHR1cm5lZCBvbi4KIAotICAgICAgIFRoZSA8U1RST05HPmluaXRfcGFpcjwvU1RST05HPiByb3V0aW5lIGNoYW5nZXMgdGhlIGRlZmluaXRpb24gb2YgIGEgIGNvbG9yLQotICAgICAgIHBhaXIuICAgSXQgdGFrZXMgdGhyZWUgYXJndW1lbnRzOiB0aGUgbnVtYmVyIG9mIHRoZSBjb2xvci0KLSAgICAgICBwYWlyIHRvIGJlIGNoYW5nZWQsIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIG51bWJlciwgIGFuZCAgdGhlCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Db2xvci1SZW5kZXJpbmciPkNvbG9yIFJlbmRlcmluZzwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgY29tYmluZXMgdGhlc2UgaW5wdXRzICB0byAgcHJvZHVjZSAgdGhlCisgICAgICAgYWN0dWFsICBmb3JlZ3JvdW5kICBhbmQgIGJhY2tncm91bmQgIGNvbG9ycyAgc2hvd24gIG9uIHRoZQorICAgICAgIHNjcmVlbjoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHBlci1jaGFyYWN0ZXIgdmlkZW8gYXR0cmlidXRlcyAoZS5nLiwgdmlhIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+KSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSB3aW5kb3cgYXR0cmlidXRlIChlLmcuLCBieSA8U1RST05HPndhdHRyc2V0PC9TVFJPTkc+KSwgYW5kCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgYmFja2dyb3VuZCBjaGFyYWN0ZXIgKGUuZy4sIDxTVFJPTkc+d2JrZ2RzZXQ8L1NUUk9ORz4pLgorCisgICAgICAgUGVyLWNoYXJhY3RlciBhbmQgd2luZG93IGF0dHJpYnV0ZXMgYXJlIHVzdWFsbHkgc2V0ICBieSAgYQorICAgICAgIHBhcmFtZXRlciAgY29udGFpbmluZyAgdmlkZW8gIGF0dHJpYnV0ZXMgIGluY2x1ZGluZyBhIDxTVFJPTkc+Q09MLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+T1JfUEFJUjwvU1RST05HPiB2YWx1ZS4gIFNvbWUgZnVuY3Rpb25zIHN1Y2ggIGFzICA8U1RST05HPndhdHRyX3NldDwvU1RST05HPiAgdXNlICBhCisgICAgICAgc2VwYXJhdGUgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjb2xvciBwYWlyIG51bWJlci4KKworICAgICAgIFRoZSAgYmFja2dyb3VuZCBjaGFyYWN0ZXIgaXMgYSBzcGVjaWFsIGNhc2U6IGl0IGluY2x1ZGVzIGEKKyAgICAgICBjaGFyYWN0ZXIgdmFsdWUsIGp1c3QgYXMgaWYgaXQgd2VyZSBwYXNzZWQgdG8gPFNUUk9ORz53YWRkY2g8L1NUUk9ORz4uCisKKyAgICAgICBUaGUgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBkb2VzIHRoZSBhY3R1YWwgd29yayBvZiBjb21iaW5pbmcgdGhlc2UKKyAgICAgICBjb2xvciBwYWlycyBpbiBhbiBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsZWQgZnJvbSA8U1RST05HPndhZGRjaDwvU1RST05HPjoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIHRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+IGlzIDxFTT5ibGFuazwvRU0+LCBhbmQgaXQgdXMtCisgICAgICAgICAgIGVzIHRoZSBzcGVjaWFsIGNvbG9yIHBhaXIgMCwKKworICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmN1cnNlczwvU1RST05HPiBuZXh0IGNoZWNrcyB0aGUgd2luZG93IGF0dHJpYnV0ZS4KKworICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiB0aGUgd2luZG93IGF0dHJpYnV0ZSBkb2VzIG5vdCB1c2UgY29sb3IgcGFpciAwLAorICAgICAgICAgICAgICAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gIHVzZXMgIHRoZSAgY29sb3IgIHBhaXIgZnJvbSB0aGUgd2luZG93IGF0LQorICAgICAgICAgICAgICAgdHJpYnV0ZS4KKworICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBPdGhlcndpc2UsIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHVzZXMgdGhlIGJhY2tncm91bmQgY2hhcmFjdGVyLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgSWYgdGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gPFNUUk9ORz53YWRkY2g8L1NUUk9ORz4gaXMgPEVNPm5vdDwvRU0+IDxFTT5ibGFuazwvRU0+LCBvciAgaXQKKyAgICAgICAgICAgZG9lcyAgbm90IHVzZSB0aGUgc3BlY2lhbCBjb2xvciBwYWlyIDAsIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHByZWZlcnMKKyAgICAgICAgICAgdGhlIGNvbG9yIHBhaXIgZnJvbSB0aGUgcGFyYW1ldGVyLCBpZiBpdCAgaXMgIG5vbnplcm8uCisgICAgICAgICAgIE90aGVyd2lzZSwgaXQgdHJpZXMgdGhlIHdpbmRvdyBhdHRyaWJ1dGUgbmV4dCwgYW5kIGZpLQorICAgICAgICAgICBuYWxseSB0aGUgYmFja2dyb3VuZCBjaGFyYWN0ZXIuCisKKyAgICAgICBTb21lIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGZ1bmN0aW9ucyBzdWNoIGFzIDxTVFJPTkc+d3ByaW50dzwvU1RST05HPiBjYWxsIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+LiAgIFRob3NlCisgICAgICAgZG8gIG5vdCAgY29tYmluZSAgaXRzIHBhcmFtZXRlciB3aXRoIGEgY29sb3IgcGFpci4gIENvbnNlLQorICAgICAgIHF1ZW50bHkgdGhvc2UgY2FsbHMgdXNlIG9ubHkgdGhlIHdpbmRvdyBhdHRyaWJ1dGUgIG9yICB0aGUKKyAgICAgICBiYWNrZ3JvdW5kIGNoYXJhY3Rlci4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Sb3V0aW5lLURlc2NyaXB0aW9ucyI+Um91dGluZSBEZXNjcmlwdGlvbnM8L2E+PC9IMz48UFJFPgorICAgICAgIFRoZSA8U1RST05HPnN0YXJ0X2NvbG9yPC9TVFJPTkc+IHJvdXRpbmUgcmVxdWlyZXMgbm8gYXJndW1lbnRzLiAgSXQgbXVzdCBiZQorICAgICAgIGNhbGxlZCBpZiB0aGUgcHJvZ3JhbW1lciB3YW50cyB0byB1c2UgY29sb3JzLCAgYW5kICBiZWZvcmUKKyAgICAgICBhbnkgIG90aGVyICBjb2xvciAgbWFuaXB1bGF0aW9uICByb3V0aW5lIGlzIGNhbGxlZC4gIEl0IGlzCisgICAgICAgZ29vZCBwcmFjdGljZSB0byBjYWxsIHRoaXMgcm91dGluZSAgcmlnaHQgIGFmdGVyICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4uCisgICAgICAgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPiBkb2VzIHRoaXM6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJdCAgaW5pdGlhbGl6ZXMgIHR3byBnbG9iYWwgdmFyaWFibGVzLCA8U1RST05HPkNPTE9SUzwvU1RST05HPiBhbmQgPFNUUk9ORz5DT0wtPC9TVFJPTkc+CisgICAgICAgICAgIDxTVFJPTkc+T1JfUEFJUlM8L1NUUk9ORz4gKHJlc3BlY3RpdmVseSBkZWZpbmluZyB0aGUgbWF4aW11bSBudW1iZXIgIG9mCisgICAgICAgICAgIGNvbG9ycyBhbmQgY29sb3ItcGFpcnMgdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0KS4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEl0IGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIGNvbG9yIHBhaXIgPFNUUk9ORz4wPC9TVFJPTkc+IHRvIHRoZSBkZWZhdWx0CisgICAgICAgICAgIGZvcmVncm91bmQgYW5kICBiYWNrZ3JvdW5kICBjb2xvcnMuICAgTm8gIG90aGVyICBjb2xvcgorICAgICAgICAgICBwYWlycyBhcmUgaW5pdGlhbGl6ZWQuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJdCAgcmVzdG9yZXMgIHRoZSBjb2xvcnMgb24gdGhlIHRlcm1pbmFsIHRvIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgdGhleSBoYWQgd2hlbiB0aGUgdGVybWluYWwgd2FzIGp1c3QgdHVybmVkIG9uLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgSWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIHRoZSA8U1RST05HPmluaXRjPC9TVFJPTkc+ICAoPFNUUk9ORz5pbml0aWFsaXplX2NvbG9yPC9TVFJPTkc+KQorICAgICAgICAgICBjYXBhYmlsaXR5LCA8U1RST05HPnN0YXJ0X2NvbG9yPC9TVFJPTkc+IGluaXRpYWxpemVzIGl0cyBpbnRlcm5hbCB0YWJsZQorICAgICAgICAgICByZXByZXNlbnRpbmcgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cyBvZiB0aGUKKyAgICAgICAgICAgY29sb3IgcGFsZXR0ZS4KKworICAgICAgICAgICBUaGUgY29tcG9uZW50cyBkZXBlbmQgb24gd2hldGhlciB0aGUgdGVybWluYWwgdXNlcyBDR0EKKyAgICAgICAgICAgKGFrYSAiQU5TSSIpIG9yIEhMUyAoaS5lLiwgdGhlIDxTVFJPTkc+aGxzPC9TVFJPTkc+ICg8U1RST05HPmh1ZV9saWdodG5lc3Nfc2F0LTwvU1RST05HPgorICAgICAgICAgICA8U1RST05HPnVyYXRpb248L1NUUk9ORz4pIGNhcGFiaWxpdHkgaXMgc2V0KS4gIFRoZSB0YWJsZSBpcyBpbml0aWFsaXplZAorICAgICAgICAgICBmaXJzdCBmb3IgZWlnaHQgYmFzaWMgY29sb3JzIChibGFjaywgcmVkLCBncmVlbiwgIHllbC0KKyAgICAgICAgICAgbG93LCAgYmx1ZSwgIG1hZ2VudGEsIGN5YW4sIGFuZCB3aGl0ZSksIGFuZCBhZnRlciB0aGF0CisgICAgICAgICAgIChpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgbW9yZSB0aGFuIGVpZ2h0IGNvbG9ycykgIHRoZQorICAgICAgICAgICBjb21wb25lbnRzIGFyZSBpbml0aWFsaXplZCB0byA8U1RST05HPjEwMDA8L1NUUk9ORz4uCisKKyAgICAgICAgICAgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPiAgZG9lcyAgbm90ICBhdHRlbXB0ICB0byBzZXQgdGhlIHRlcm1pbmFsJ3MKKyAgICAgICAgICAgY29sb3IgcGFsZXR0ZSB0byBtYXRjaCBpdHMgYnVpbHQtaW4gdGFibGUuICBBbiAgYXBwbGktCisgICAgICAgICAgIGNhdGlvbiAgbWF5IHVzZSA8U1RST05HPmluaXRfY29sb3I8L1NUUk9ORz4gdG8gYWx0ZXIgdGhlIGludGVybmFsIHRhYmxlCisgICAgICAgICAgIGFsb25nIHdpdGggdGhlIHRlcm1pbmFsJ3MgY29sb3IuCisKKyAgICAgICBUaGVzZSBsaW1pdHMgYXBwbHkgdG8gY29sb3IgdmFsdWVzIGFuZCBjb2xvciBwYWlycy4gICBWYWwtCisgICAgICAgdWVzICBvdXRzaWRlIHRoZXNlIGxpbWl0cyBhcmUgbm90IGxlZ2FsLCBhbmQgbWF5IHJlc3VsdCBpbgorICAgICAgIGEgcnVudGltZSBlcnJvcjoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+Q09MT1JTPC9TVFJPTkc+IGNvcnJlc3BvbmRzIHRvIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZSdzIDxTVFJPTkc+bWF4X2NvbC08L1NUUk9ORz4KKyAgICAgICAgICAgPFNUUk9ORz5vcnM8L1NUUk9ORz4gY2FwYWJpbGl0eSwgd2hpY2ggaXMgdHlwaWNhbGx5IGEgc2lnbmVkIDE2LWJpdCBpbi0KKyAgICAgICAgICAgdGVnZXIgKHNlZSA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+KS4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGNvbG9yIHZhbHVlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgaW4gdGhlIHJhbmdlIDxTVFJPTkc+MDwvU1RST05HPiB0byA8U1RST05HPkNPTC08L1NUUk9ORz4KKyAgICAgICAgICAgPFNUUk9ORz5PUlMtMTwvU1RST05HPiwgaW5jbHVzaXZlIChpbmNsdWRpbmcgPFNUUk9ORz4wPC9TVFJPTkc+IGFuZCA8U1RST05HPkNPTE9SUy0xPC9TVFJPTkc+KS4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGEgIHNwZWNpYWwgIGNvbG9yIHZhbHVlIDxTVFJPTkc+LTE8L1NUUk9ORz4gaXMgdXNlZCBpbiBjZXJ0YWluIGV4dGVuZGVkCisgICAgICAgICAgIGZ1bmN0aW9ucyB0byBkZW5vdGUgdGhlICA8RU0+ZGVmYXVsdDwvRU0+ICA8RU0+Y29sb3I8L0VNPiAgKHNlZSAgPFNUUk9ORz51c2VfZGUtPC9TVFJPTkc+CisgICAgICAgICAgIDxTVFJPTkc+ZmF1bHRfY29sb3JzPC9TVFJPTkc+KS4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+Q09MT1JfUEFJUlM8L1NUUk9ORz4gIGNvcnJlc3BvbmRzICB0byAgdGhlICB0ZXJtaW5hbCBkYXRhYmFzZSdzCisgICAgICAgICAgIDxTVFJPTkc+bWF4X3BhaXJzPC9TVFJPTkc+IGNhcGFiaWxpdHksICB3aGljaCAgaXMgIHR5cGljYWxseSAgYSAgc2lnbmVkCisgICAgICAgICAgIDE2LWJpdCBpbnRlZ2VyIChzZWUgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPikuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBsZWdhbCAgY29sb3IgIHBhaXIgIHZhbHVlcyAgYXJlIGluIHRoZSByYW5nZSA8U1RST05HPjE8L1NUUk9ORz4gdG8gPFNUUk9ORz5DT0wtPC9TVFJPTkc+CisgICAgICAgICAgIDxTVFJPTkc+T1JfUEFJUlMtMTwvU1RST05HPiwgaW5jbHVzaXZlLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgY29sb3IgcGFpciA8U1RST05HPjA8L1NUUk9ORz4gaXMgc3BlY2lhbDsgaXQgZGVub3RlcyAibm8gY29sb3IiLgorCisgICAgICAgICAgIENvbG9yIHBhaXIgPFNUUk9ORz4wPC9TVFJPTkc+IGlzIGFzc3VtZWQgdG8gYmUgd2hpdGUgb24gYmxhY2ssICBidXQgIGlzCisgICAgICAgICAgIGFjdHVhbGx5IHdoYXRldmVyIHRoZSB0ZXJtaW5hbCBpbXBsZW1lbnRzIGJlZm9yZSBjb2xvcgorICAgICAgICAgICBpcyBpbml0aWFsaXplZC4gIEl0IGNhbm5vdCBiZSBtb2RpZmllZCBieSB0aGUgYXBwbGljYS0KKyAgICAgICAgICAgdGlvbi4KKworICAgICAgIFRoZSAgPFNUUk9ORz5pbml0X3BhaXI8L1NUUk9ORz4gIHJvdXRpbmUgY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLQorICAgICAgIHBhaXIuICBJdCB0YWtlcyB0aHJlZSBhcmd1bWVudHM6IHRoZSBudW1iZXIgb2YgdGhlICBjb2xvci0KKyAgICAgICBwYWlyICB0byAgYmUgY2hhbmdlZCwgdGhlIGZvcmVncm91bmQgY29sb3IgbnVtYmVyLCBhbmQgdGhlCiAgICAgICAgYmFja2dyb3VuZCBjb2xvciBudW1iZXIuICBGb3IgcG9ydGFibGUgYXBwbGljYXRpb25zOgogCi0gICAgICAgLSAgICBUaGUgdmFsdWUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiA8U1RST05HPjE8L1NUUk9ORz4gYW5kCi0gICAgICAgICAgICA8U1RST05HPkNPTE9SX1BBSVJTLTE8L1NUUk9ORz4uCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBsZWdhbCBjb2xvciAgcGFpciAgdmFsdWUuCisgICAgICAgICAgIElmICBkZWZhdWx0ICBjb2xvcnMgIGFyZSB1c2VkIChzZWUgPFNUUk9ORz51c2VfZGVmYXVsdF9jb2xvcnM8L1NUUk9ORz4pCisgICAgICAgICAgIHRoZSB1cHBlciBsaW1pdCBpcyBhZGp1c3RlZCB0byBhbGxvdyBmb3IgIGV4dHJhICBwYWlycworICAgICAgICAgICB3aGljaCAgdXNlICBhIGRlZmF1bHQgY29sb3IgaW4gZm9yZWdyb3VuZCBhbmQvb3IgYmFjay0KKyAgICAgICAgICAgZ3JvdW5kLgogCi0gICAgICAgLSAgICBUaGUgdmFsdWUgb2YgdGhlIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzICBtdXN0ICBiZQotICAgICAgICAgICAgYmV0d2VlbiAgMCBhbmQgPFNUUk9ORz5DT0xPUlM8L1NUUk9ORz4uICBDb2xvciBwYWlyIDAgaXMgYXNzdW1lZCB0byBiZQotICAgICAgICAgICAgd2hpdGUgb24gYmxhY2ssIGJ1dCBpcyBhY3R1YWxseSB3aGF0ZXZlciB0aGUgdGVybWluYWwKLSAgICAgICAgICAgIGltcGxlbWVudHMgYmVmb3JlIGNvbG9yIGlzIGluaXRpYWxpemVkLiAgSXQgY2Fubm90IGJlCi0gICAgICAgICAgICBtb2RpZmllZCBieSB0aGUgYXBwbGljYXRpb24uCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzICBtdXN0ICBiZSAgbGVnYWwgIGNvbG9yCisgICAgICAgICAgIHZhbHVlcy4KIAotICAgICAgIElmIHRoZSBjb2xvci1wYWlyIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkLCAgdGhlICBzY3JlZW4KLSAgICAgICBpcyAgcmVmcmVzaGVkICBhbmQgIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGF0IGNvbG9yLXBhaXIgYXJlCisgICAgICAgSWYgIHRoZSAgY29sb3ItcGFpciB3YXMgcHJldmlvdXNseSBpbml0aWFsaXplZCwgdGhlIHNjcmVlbgorICAgICAgIGlzIHJlZnJlc2hlZCBhbmQgYWxsIG9jY3VycmVuY2VzIG9mICB0aGF0ICBjb2xvci1wYWlyICBhcmUKICAgICAgICBjaGFuZ2VkIHRvIHRoZSBuZXcgZGVmaW5pdGlvbi4KIAotICAgICAgIEFzIGFuIGV4dGVuc2lvbiwgbmN1cnNlcyBhbGxvd3MgeW91IHRvIHNldCAgY29sb3IgIHBhaXIgIDAKLSAgICAgICB2aWEgIHRoZSAgPFNUUk9ORz5hc3N1bWVfZGVmYXVsdF9jb2xvcnM8L1NUUk9ORz4gcm91dGluZSwgb3IgdG8gc3BlY2lmeSB0aGUKLSAgICAgICB1c2Ugb2YgZGVmYXVsdCBjb2xvcnMgKGNvbG9yIG51bWJlciA8U1RST05HPi0xPC9TVFJPTkc+KSBpZiB5b3UgIGZpcnN0ICBpbi0KKyAgICAgICBBcyAgYW4gIGV4dGVuc2lvbiwgIG5jdXJzZXMgYWxsb3dzIHlvdSB0byBzZXQgY29sb3IgcGFpciA8U1RST05HPjA8L1NUUk9ORz4KKyAgICAgICB2aWEgdGhlIDxTVFJPTkc+YXNzdW1lX2RlZmF1bHRfY29sb3JzPC9TVFJPTkc+IHJvdXRpbmUsIG9yIHRvICBzcGVjaWZ5ICB0aGUKKyAgICAgICB1c2UgIG9mICBkZWZhdWx0IGNvbG9ycyAoY29sb3IgbnVtYmVyIDxTVFJPTkc+LTE8L1NUUk9ORz4pIGlmIHlvdSBmaXJzdCBpbi0KICAgICAgICB2b2tlIHRoZSA8U1RST05HPnVzZV9kZWZhdWx0X2NvbG9yczwvU1RST05HPiByb3V0aW5lLgogCi0gICAgICAgVGhlICA8U1RST05HPmluaXRfY29sb3I8L1NUUk9ORz4gcm91dGluZSBjaGFuZ2VzIHRoZSBkZWZpbml0aW9uIG9mIGEgY29sb3IuCi0gICAgICAgSXQgdGFrZXMgZm91ciBhcmd1bWVudHM6IHRoZSBudW1iZXIgb2YgIHRoZSAgY29sb3IgIHRvICBiZQotICAgICAgIGNoYW5nZWQgIGZvbGxvd2VkICBieSB0aHJlZSBSR0IgdmFsdWVzIChmb3IgdGhlIGFtb3VudHMgb2YKLSAgICAgICByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzKS4gIFRoZSB2YWx1ZSBvZiB0aGUgIGZpcnN0Ci0gICAgICAgYXJndW1lbnQgIG11c3QgIGJlIGJldHdlZW4gPFNUUk9ORz4wPC9TVFJPTkc+IGFuZCA8U1RST05HPkNPTE9SUzwvU1RST05HPi4gIChTZWUgdGhlIHNlY3Rpb24KLSAgICAgICA8U1RST05HPkNvbG9yczwvU1RST05HPiBmb3IgdGhlIGRlZmF1bHQgY29sb3IgaW5kZXguKSAgIEVhY2ggIG9mICB0aGUgIGxhc3QKLSAgICAgICB0aHJlZSAgYXJndW1lbnRzIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMDAuICBXaGVuCi0gICAgICAgPFNUUk9ORz5pbml0X2NvbG9yPC9TVFJPTkc+IGlzIHVzZWQsIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGF0IGNvbG9yICBvbiAgdGhlCi0gICAgICAgc2NyZWVuIGltbWVkaWF0ZWx5IGNoYW5nZSB0byB0aGUgbmV3IGRlZmluaXRpb24uCisgICAgICAgVGhlIDxTVFJPTkc+aW5pdF9jb2xvcjwvU1RST05HPiByb3V0aW5lIGNoYW5nZXMgdGhlIGRlZmluaXRpb24gb2YgYSAgY29sb3IuCisgICAgICAgSXQgIHRha2VzICBmb3VyICBhcmd1bWVudHM6ICB0aGUgbnVtYmVyIG9mIHRoZSBjb2xvciB0byBiZQorICAgICAgIGNoYW5nZWQgZm9sbG93ZWQgYnkgdGhyZWUgUkdCIHZhbHVlcyAoZm9yIHRoZSAgYW1vdW50cyAgb2YKKyAgICAgICByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzKS4gIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0CisgICAgICAgYmUgYSBsZWdhbCBjb2xvciB2YWx1ZTsgZGVmYXVsdCAgY29sb3JzICBhcmUgIG5vdCAgYWxsb3dlZAorICAgICAgIGhlcmUuICAgKFNlZSAgdGhlIHNlY3Rpb24gPFNUUk9ORz5Db2xvcnM8L1NUUk9ORz4gZm9yIHRoZSBkZWZhdWx0IGNvbG9yIGluLQorICAgICAgIGRleC4pICBFYWNoIG9mIHRoZSBsYXN0IHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGEgdmFsdWUgaW4KKyAgICAgICB0aGUgIHJhbmdlICA8U1RST05HPjA8L1NUUk9ORz4gIHRocm91Z2ggPFNUUk9ORz4xMDAwPC9TVFJPTkc+LiAgV2hlbiA8U1RST05HPmluaXRfY29sb3I8L1NUUk9ORz4gaXMgdXNlZCwgYWxsCisgICAgICAgb2NjdXJyZW5jZXMgb2YgdGhhdCBjb2xvciBvbiB0aGUgc2NyZWVuIGltbWVkaWF0ZWx5IGNoYW5nZQorICAgICAgIHRvIHRoZSBuZXcgZGVmaW5pdGlvbi4KIAogICAgICAgIFRoZSAgPFNUUk9ORz5oYXNfY29sb3JzPC9TVFJPTkc+IHJvdXRpbmUgcmVxdWlyZXMgbm8gYXJndW1lbnRzLiAgSXQgcmV0dXJucwogICAgICAgIDxTVFJPTkc+VFJVRTwvU1RST05HPiBpZiB0aGUgdGVybWluYWwgY2FuIG1hbmlwdWxhdGUgY29sb3JzOyBvdGhlcndpc2UsICBpdApAQCAtMTQ4LDMwICsyNTIsMzQgQEAKICAgICAgICBjaGFuZ2UgdGhlaXIgZGVmaW5pdGlvbnM7IG90aGVyLCBpdCByZXR1cm5zICA8U1RST05HPkZBTFNFPC9TVFJPTkc+LiAgIFRoaXMKICAgICAgICByb3V0aW5lIGZhY2lsaXRhdGVzIHdyaXRpbmcgdGVybWluYWwtaW5kZXBlbmRlbnQgcHJvZ3JhbXMuCiAKLSAgICAgICBUaGUgPFNUUk9ORz5jb2xvcl9jb250ZW50PC9TVFJPTkc+IHJvdXRpbmUgZ2l2ZXMgcHJvZ3JhbW1lcnMgYSB3YXkgdG8gIGZpbmQKKyAgICAgICBUaGUgIDxTVFJPTkc+Y29sb3JfY29udGVudDwvU1RST05HPiByb3V0aW5lIGdpdmVzIHByb2dyYW1tZXJzIGEgd2F5IHRvIGZpbmQKICAgICAgICB0aGUgaW50ZW5zaXR5IG9mIHRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSAoUkdCKSBjb21wb25lbnRzCiAgICAgICAgaW4gYSBjb2xvci4gIEl0IHJlcXVpcmVzIGZvdXIgYXJndW1lbnRzOiB0aGUgY29sb3IgbnVtYmVyLAotICAgICAgIGFuZCAgdGhyZWUgYWRkcmVzc2VzIG9mIDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz5zIGZvciBzdG9yaW5nIHRoZSBpbmZvcm1hdGlvbgotICAgICAgIGFib3V0IHRoZSBhbW91bnRzIG9mIHJlZCwgZ3JlZW4sIGFuZCAgYmx1ZSAgY29tcG9uZW50cyAgaW4KLSAgICAgICB0aGUgIGdpdmVuIGNvbG9yLiAgVGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlCi0gICAgICAgYmV0d2VlbiAwIGFuZCA8U1RST05HPkNPTE9SUzwvU1RST05HPi4gIFRoZSB2YWx1ZXMgdGhhdCBhcmUgc3RvcmVkICBhdCAgdGhlCi0gICAgICAgYWRkcmVzc2VzICBwb2ludGVkICB0byBieSB0aGUgbGFzdCB0aHJlZSBhcmd1bWVudHMgYXJlIGJlLQotICAgICAgIHR3ZWVuIDAgKG5vIGNvbXBvbmVudCkgYW5kIDEwMDAgKG1heGltdW0gYW1vdW50IG9mICBjb21wby0KLSAgICAgICBuZW50KS4KKyAgICAgICBhbmQgdGhyZWUgYWRkcmVzc2VzIG9mIDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz5zIGZvciBzdG9yaW5nIHRoZSAgaW5mb3JtYXRpb24KKyAgICAgICBhYm91dCAgdGhlICBhbW91bnRzICBvZiByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluCisgICAgICAgdGhlIGdpdmVuIGNvbG9yLiAgVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBsZWdhbCBjb2xvcgorICAgICAgIHZhbHVlLCAgaS5lLiwgIDxTVFJPTkc+MDwvU1RST05HPiAgdGhyb3VnaCA8U1RST05HPkNPTE9SUy0xPC9TVFJPTkc+LCBpbmNsdXNpdmUuICBUaGUgdmFsdWVzCisgICAgICAgdGhhdCBhcmUgc3RvcmVkIGF0IHRoZSBhZGRyZXNzZXMgcG9pbnRlZCB0byAgYnkgIHRoZSAgbGFzdAorICAgICAgIHRocmVlICBhcmd1bWVudHMgYXJlIGluIHRoZSByYW5nZSA8U1RST05HPjA8L1NUUk9ORz4gKG5vIGNvbXBvbmVudCkgdGhyb3VnaAorICAgICAgIDxTVFJPTkc+MTAwMDwvU1RST05HPiAobWF4aW11bSBhbW91bnQgb2YgY29tcG9uZW50KSwgaW5jbHVzaXZlLgogCi0gICAgICAgVGhlICA8U1RST05HPnBhaXJfY29udGVudDwvU1RST05HPiAgcm91dGluZSAgYWxsb3dzIHByb2dyYW1tZXJzIHRvIGZpbmQgb3V0Ci0gICAgICAgd2hhdCBjb2xvcnMgYSBnaXZlbiBjb2xvci1wYWlyIGNvbnNpc3RzIG9mLiAgIEl0ICByZXF1aXJlcwotICAgICAgIHRocmVlICBhcmd1bWVudHM6IHRoZSBjb2xvci1wYWlyIG51bWJlciwgYW5kIHR3byBhZGRyZXNzZXMKLSAgICAgICBvZiA8U1RST05HPnNob3J0PC9TVFJPTkc+cyBmb3Igc3RvcmluZyB0aGUgZm9yZWdyb3VuZCAgYW5kICB0aGUgIGJhY2tncm91bmQKLSAgICAgICBjb2xvciAgbnVtYmVycy4gICBUaGUgIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlCi0gICAgICAgYmV0d2VlbiAxIGFuZCA8U1RST05HPkNPTE9SX1BBSVJTLTE8L1NUUk9ORz4uICBUaGUgdmFsdWVzIHRoYXQgIGFyZSAgc3RvcmVkCi0gICAgICAgYXQgIHRoZSBhZGRyZXNzZXMgcG9pbnRlZCB0byBieSB0aGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1LQotICAgICAgIG1lbnRzIGFyZSBiZXR3ZWVuIDAgYW5kIDxTVFJPTkc+Q09MT1JTPC9TVFJPTkc+LgorICAgICAgIFRoZSA8U1RST05HPnBhaXJfY29udGVudDwvU1RST05HPiByb3V0aW5lIGFsbG93cyBwcm9ncmFtbWVycyAgdG8gIGZpbmQgIG91dAorICAgICAgIHdoYXQgIGNvbG9ycyAgYSBnaXZlbiBjb2xvci1wYWlyIGNvbnNpc3RzIG9mLiAgSXQgcmVxdWlyZXMKKyAgICAgICB0aHJlZSBhcmd1bWVudHM6IHRoZSBjb2xvci1wYWlyIG51bWJlciwgYW5kIHR3byAgYWRkcmVzc2VzCisgICAgICAgb2YgIDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz5zICBmb3IgIHN0b3JpbmcgdGhlIGZvcmVncm91bmQgYW5kIHRoZSBiYWNrZ3JvdW5kCisgICAgICAgY29sb3IgbnVtYmVycy4gIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgIGxlZ2FsICBjb2xvcgorICAgICAgIHZhbHVlLCAgaS5lLiwgaW4gdGhlIHJhbmdlIDxTVFJPTkc+MTwvU1RST05HPiB0aHJvdWdoIDxTVFJPTkc+Q09MT1JfUEFJUlMtMTwvU1RST05HPiwgaW5jbHUtCisgICAgICAgc2l2ZS4gIFRoZSB2YWx1ZXMgdGhhdCBhcmUgc3RvcmVkIGF0IHRoZSBhZGRyZXNzZXMgcG9pbnRlZAorICAgICAgIHRvICBieSAgdGhlICBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50cyBhcmUgaW4gdGhlIHJhbmdlIDxTVFJPTkc+MDwvU1RST05HPgorICAgICAgIHRocm91Z2ggPFNUUk9ORz5DT0xPUlM8L1NUUk9ORz4sIGluY2x1c2l2ZS4KIAotICAgPFNUUk9ORz5Db2xvcnM8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQ29sb3JzIj5Db2xvcnM8L2E+PC9IMz48UFJFPgogICAgICAgIEluIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPiB0aGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZGVmaW5lZC4gIFRoZXNlIGFyZQotICAgICAgIHRoZSAgZGVmYXVsdCBjb2xvcnMuICA8U1RST05HPmN1cnNlczwvU1RST05HPiBhbHNvIGFzc3VtZXMgdGhhdCA8U1RST05HPkNPTE9SX0JMQUNLPC9TVFJPTkc+Ci0gICAgICAgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYWxsIHRlcm1pbmFscy4KKyAgICAgICB0aGUgIHN0YW5kYXJkIGNvbG9ycyAoSVNPLTY0MjkpLiAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gYWxzbyBhc3N1bWVzIHRoYXQKKyAgICAgICA8U1RST05HPkNPTE9SX0JMQUNLPC9TVFJPTkc+IGlzIHRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGFsbCB0ZXJtaS0KKyAgICAgICBuYWxzLgogCiAgICAgICAgICAgICAgPFNUUk9ORz5DT0xPUl9CTEFDSzwvU1RST05HPgogICAgICAgICAgICAgIDxTVFJPTkc+Q09MT1JfUkVEPC9TVFJPTkc+CkBAIC0xODQsMzcgKzI5MiwzNiBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGUgcm91dGluZXMgPFNUUk9ORz5jYW5fY2hhbmdlX2NvbG9yKCk8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5oYXNfY29sb3JzKCk8L1NUUk9ORz4gIHJldHVybgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgIHJvdXRpbmVzICA8U1RST05HPmNhbl9jaGFuZ2VfY29sb3IoKTwvU1RST05HPiAgYW5kIDxTVFJPTkc+aGFzX2NvbG9ycygpPC9TVFJPTkc+IHJldHVybgogICAgICAgIDxTVFJPTkc+VFJVRTwvU1RST05HPiBvciA8U1RST05HPkZBTFNFPC9TVFJPTkc+LgogCiAgICAgICAgQWxsIG90aGVyIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgYW5kCi0gICAgICAgYW4gPFNUUk9ORz5PSzwvU1RST05HPiAoU1ZyNCBzcGVjaWZpZXMgb25seSAiYW4gaW50ZWdlciAgdmFsdWUgIG90aGVyICB0aGFuCisgICAgICAgYW4gIDxTVFJPTkc+T0s8L1NUUk9ORz4gIChTVnI0ICBzcGVjaWZpZXMgb25seSAiYW4gaW50ZWdlciB2YWx1ZSBvdGhlciB0aGFuCiAgICAgICAgPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4KIAotICAgICAgIFgvT3BlbiAgZGVmaW5lcyAgbm8gZXJyb3IgY29uZGl0aW9ucy4gIFRoaXMgaW1wbGVtZW50YXRpb24KLSAgICAgICB3aWxsIHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiBvbiBhdHRlbXB0cyB0byB1c2UgIGNvbG9yICB2YWx1ZXMgIG91dHNpZGUKLSAgICAgICB0aGUgcmFuZ2UgMCB0byBDT0xPUlMtMSAoZXhjZXB0IGZvciB0aGUgZGVmYXVsdCBjb2xvcnMgZXgtCi0gICAgICAgdGVuc2lvbiksIG9yIHVzZSBjb2xvciBwYWlycyBvdXRzaWRlIHRoZSByYW5nZSAwICB0byAgQ09MLQotICAgICAgIE9SX1BBSVItMS4gIENvbG9yIHZhbHVlcyB1c2VkIGluIDxTVFJPTkc+aW5pdF9jb2xvcjwvU1RST05HPiBtdXN0IGJlIGluIHRoZQotICAgICAgIHJhbmdlIDAgdG8gMTAwMC4gIEFuIGVycm9yIGlzIHJldHVybmVkIGZyb20gYWxsICBmdW5jdGlvbnMKLSAgICAgICBpZiB0aGUgdGVybWluYWwgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiAgQW4gZXJyb3IgaXMgcmUtCi0gICAgICAgdHVybmVkIGZyb20gIHNlY29uZGFyeSAgZnVuY3Rpb25zICBzdWNoICBhcyAgPFNUUk9ORz5pbml0X3BhaXI8L1NUUk9ORz4gIGlmCisgICAgICAgWC9PcGVuIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4gICBUaGlzICBpbXBsZW1lbnRhdGlvbgorICAgICAgIHdpbGwgIHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gIG9uIGF0dGVtcHRzIHRvIHVzZSBjb2xvciB2YWx1ZXMgb3V0c2lkZQorICAgICAgIHRoZSByYW5nZSA8U1RST05HPjA8L1NUUk9ORz4gdG8gQ09MT1JTLTEgKGV4Y2VwdCBmb3IgdGhlIGRlZmF1bHQgY29sb3JzIGV4LQorICAgICAgIHRlbnNpb24pLCAgb3IgIHVzZSBjb2xvciBwYWlycyBvdXRzaWRlIHRoZSByYW5nZSA8U1RST05HPjA8L1NUUk9ORz4gdG8gPFNUUk9ORz5DT0wtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5PUl9QQUlSUy0xPC9TVFJPTkc+LiAgQ29sb3IgdmFsdWVzIHVzZWQgaW4gPFNUUk9ORz5pbml0X2NvbG9yPC9TVFJPTkc+ICBtdXN0ICBiZSAgaW4KKyAgICAgICB0aGUgIHJhbmdlIDxTVFJPTkc+MDwvU1RST05HPiB0byA8U1RST05HPjEwMDA8L1NUUk9ORz4uICBBbiBlcnJvciBpcyByZXR1cm5lZCBmcm9tIGFsbCBmdW5jLQorICAgICAgIHRpb25zIGlmIHRoZSB0ZXJtaW5hbCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuICBBbiAgZXJyb3IKKyAgICAgICBpcyAgcmV0dXJuZWQgZnJvbSBzZWNvbmRhcnkgZnVuY3Rpb25zIHN1Y2ggYXMgPFNUUk9ORz5pbml0X3BhaXI8L1NUUk9ORz4gaWYKICAgICAgICA8U1RST05HPnN0YXJ0X2NvbG9yPC9TVFJPTkc+IHdhcyBub3QgY2FsbGVkLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+aW5pdF9jb2xvcjwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIGRvZXMgbm90IHN1cC0KLSAgICAgICAgICAgICAgICAgICBwb3J0ICB0aGlzICBmZWF0dXJlLCAgZS5nLiwgIGlmICB0aGUgIDxFTT5pbml0aWFsLTwvRU0+Ci0gICAgICAgICAgICAgICAgICAgPEVNPml6ZTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmNvbG9yPC9FTT4gY2FwYWJpbGl0eSBpcyBhYnNlbnQgZnJvbSB0aGUgdGVybWktCi0gICAgICAgICAgICAgICAgICAgbmFsIGRlc2NyaXB0aW9uLgorICAgICAgICAgIDxTVFJPTkc+aW5pdF9jb2xvcjwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgZG9lcyBub3QgIHN1cHBvcnQKKyAgICAgICAgICAgICAgIHRoaXMgIGZlYXR1cmUsIGUuZy4sIGlmIHRoZSA8RU0+aW5pdGlhbGl6ZTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmNvbG9yPC9FTT4gY2FwYS0KKyAgICAgICAgICAgICAgIGJpbGl0eSBpcyBhYnNlbnQgZnJvbSB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgSWYgdGhlIGNvbG9yIHRhYmxlIGNhbm5vdCAgYmUKLSAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWQuCisgICAgICAgICAgPFNUUk9ORz5zdGFydF9jb2xvcjwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgY29sb3IgdGFibGUgY2Fubm90IGJlICBhbC0KKyAgICAgICAgICAgICAgIGxvY2F0ZWQuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBJbiAgdGhlICA8RU0+bmN1cnNlczwvRU0+IGltcGxlbWVudGF0aW9uLCB0aGVyZSBpcyBhIHNlcGFyYXRlIGNvbG9yCiAgICAgICAgYWN0aXZhdGlvbiBmbGFnLCBjb2xvciBwYWxldHRlLCBjb2xvciBwYWlycyB0YWJsZSwgYW5kIGFzLQogICAgICAgIHNvY2lhdGVkICBDT0xPUlMgIGFuZCAgQ09MT1JfUEFJUlMgY291bnRzIGZvciBlYWNoIHNjcmVlbjsKQEAgLTIzMiwyMSArMzM5LDIxIEBACiAgICAgICAgU2V2ZXJhbCAgY2F2ZWF0cyAgYXBwbHkgIG9uIDM4NiBhbmQgNDg2IG1hY2hpbmVzIHdpdGggVkdBLQogICAgICAgIGNvbXBhdGlibGUgZ3JhcGhpY3M6CiAKLSAgICAgICAtICAgIENPTE9SX1lFTExPVyBpcyBhY3R1YWxseSBicm93bi4gIFRvIGdldCAgeWVsbG93LCAgdXNlCi0gICAgICAgICAgICBDT0xPUl9ZRUxMT1cgY29tYmluZWQgd2l0aCB0aGUgPFNUUk9ORz5BX0JPTEQ8L1NUUk9ORz4gYXR0cmlidXRlLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIENPTE9SX1lFTExPVyBpcyBhY3R1YWxseSBicm93bi4gIFRvICBnZXQgIHllbGxvdywgIHVzZQorICAgICAgICAgICBDT0xPUl9ZRUxMT1cgY29tYmluZWQgd2l0aCB0aGUgPFNUUk9ORz5BX0JPTEQ8L1NUUk9ORz4gYXR0cmlidXRlLgogCi0gICAgICAgLSAgICBUaGUgIEFfQkxJTksgIGF0dHJpYnV0ZSAgc2hvdWxkICBpbiAgdGhlb3J5IGNhdXNlIHRoZQotICAgICAgICAgICAgYmFja2dyb3VuZCB0byBnbyBicmlnaHQuICBUaGlzIG9mdGVuIGZhaWxzICB0byAgd29yaywKLSAgICAgICAgICAgIGFuZCAgZXZlbiAgc29tZSBjYXJkcyBmb3Igd2hpY2ggaXQgbW9zdGx5IHdvcmtzIChzdWNoCi0gICAgICAgICAgICBhcyB0aGUgUGFyYWRpc2UgYW5kIGNvbXBhdGlibGVzKSBkbyB0aGUgIHdyb25nICB0aGluZwotICAgICAgICAgICAgd2hlbiB5b3UgdHJ5IHRvIHNldCBhIGJyaWdodCAieWVsbG93IiBiYWNrZ3JvdW5kICh5b3UKLSAgICAgICAgICAgIGdldCBhIGJsaW5raW5nIHllbGxvdyBmb3JlZ3JvdW5kIGluc3RlYWQpLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSBBX0JMSU5LIGF0dHJpYnV0ZSBzaG91bGQgaW4gdGhlb3J5IGNhdXNlIHRoZSBiYWNrLQorICAgICAgICAgICBncm91bmQgdG8gZ28gYnJpZ2h0LiAgVGhpcyBvZnRlbiBmYWlscyAgdG8gIHdvcmssICBhbmQKKyAgICAgICAgICAgZXZlbiBzb21lIGNhcmRzIGZvciB3aGljaCBpdCBtb3N0bHkgd29ya3MgKHN1Y2ggYXMgdGhlCisgICAgICAgICAgIFBhcmFkaXNlIGFuZCBjb21wYXRpYmxlcykgZG8gdGhlIHdyb25nIHRoaW5nIHdoZW4gIHlvdQorICAgICAgICAgICB0cnkgIHRvICBzZXQgIGEgIGJyaWdodCAieWVsbG93IiBiYWNrZ3JvdW5kICh5b3UgZ2V0IGEKKyAgICAgICAgICAgYmxpbmtpbmcgeWVsbG93IGZvcmVncm91bmQgaW5zdGVhZCkuCiAKLSAgICAgICAtICAgIENvbG9yIFJHQiB2YWx1ZXMgYXJlIG5vdCBzZXR0YWJsZS4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBDb2xvciBSR0IgdmFsdWVzIGFyZSBub3Qgc2V0dGFibGUuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIHNhdGlzZmllcyBYU0kgQ3Vyc2VzJ3MgIG1pbmltdW0gIG1heGktCiAgICAgICAgbXVtcyBmb3IgPFNUUk9ORz5DT0xPUlM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Q09MT1JfUEFJUlM8L1NUUk9ORz4uCiAKQEAgLTI2NSwxOCArMzcyLDMxIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPmRlZmF1bHRfY29sLTwvU1RST05HPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+b3JzKDN4KTwvQT48L1NUUk9ORz4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2F0dHIuM3guaHRtbCI+Y3Vyc19hdHRyKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPmN1cnNfdmFyaS08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmFibGVzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+ZGVmYXVsdF9jb2xvcnMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2NvbG9yLjN4Lmh0bWwiPmN1cnNfY29sb3IoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLU92ZXJ2aWV3Ij5PdmVydmlldzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Db2xvci1SZW5kZXJpbmciPkNvbG9yIFJlbmRlcmluZzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Sb3V0aW5lLURlc2NyaXB0aW9ucyI+Um91dGluZSBEZXNjcmlwdGlvbnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQ29sb3JzIj5Db2xvcnM8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfZGVsY2guM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2RlbGNoLjN4Lmh0bWwKaW5kZXggM2I2NTYyYS4uYjBlYjBiOCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfZGVsY2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19kZWxjaC4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMiArMjYsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfZGVsY2guM3gsdiAxLjggMjAwNi8wMi8yNSAyMTo0Mjo1NyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfZGVsY2guM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19kZWxjaCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfZGVsY2ggM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfZGVsY2ggM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfZGVsY2guM3guaHRtbCI+Y3Vyc19kZWxjaCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19kZWxjaC4zeC5odG1sIj5jdXJzX2RlbGNoKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmRlbGNoPC9TVFJPTkc+LCAgPFNUUk9ORz53ZGVsY2g8L1NUUk9ORz4sIDxTVFJPTkc+bXZkZWxjaDwvU1RST05HPiwgPFNUUk9ORz5tdndkZWxjaDwvU1RST05HPiAtIGRlbGV0ZSBjaGFyYWN0ZXIgdW5kZXIKICAgICAgICB0aGUgY3Vyc29yIGluIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWxjaCh2b2lkKTs8L1NUUk9ORz4KQEAgLTYyLDcgKzYyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3I7ICBhbGwKICAgICAgICBjaGFyYWN0ZXJzIHRvIHRoZSByaWdodCBvZiB0aGUgY3Vyc29yIG9uIHRoZSBzYW1lIGxpbmUgYXJlCiAgICAgICAgbW92ZWQgdG8gdGhlIGxlZnQgb25lIHBvc2l0aW9uIGFuZCB0aGUgbGFzdCAgY2hhcmFjdGVyICBvbgpAQCAtNzMsMzYgKzczLDQ2IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgYW4gPFNUUk9ORz5PSzwvU1RST05HPgogICAgICAgIChTVnI0ICBzcGVjaWZpZXMgIG9ubHkgICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4iKQogICAgICAgIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgogCisgICAgICAgRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yICBtb3ZlLQorICAgICAgIG1lbnQgIHVzaW5nICA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5kZWxjaDwvU1RST05HPiwgPFNUUk9ORz5tdmRlbGNoPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5tdndkZWxjaDwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgIHN0YW5kYXJkLAogICAgICAgIElzc3VlICA0LiAgIFRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGV5IHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiBvbgogICAgICAgIGZhaWx1cmUsIGJ1dCBzcGVjaWZpZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2RlbGNoLjN4Lmh0bWwiPmN1cnNfZGVsY2goM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19kZWxldGVsbi4zeC5odG1sCmluZGV4IDhlNzNjZTUuLjU2N2RmYWQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2RlbGV0ZWxuLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfZGVsZXRlbG4uM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2RlbGV0ZWxuLjN4LHYgMS4xMSAyMDA3LzA2LzAyIDIwOjQwOjA3IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19kZWxldGVsbi4zeCx2IDEuMTMgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2RlbGV0ZWxuIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19kZWxldGVsbiAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19kZWxldGVsbiAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19kZWxldGVsbi4zeC5odG1sIj5jdXJzX2RlbGV0ZWxuKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPmN1cnNfZGVsZXRlbG4oM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZGVsZXRlbG48L1NUUk9ORz4sICA8U1RST05HPndkZWxldGVsbjwvU1RST05HPiwgIDxTVFJPTkc+aW5zZGVsbG48L1NUUk9ORz4sIDxTVFJPTkc+d2luc2RlbGxuPC9TVFJPTkc+LCA8U1RST05HPmluc2VydGxuPC9TVFJPTkc+LCA8U1RST05HPndpbi08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnNlcnRsbjwvU1RST05HPiAtIGRlbGV0ZSBhbmQgaW5zZXJ0IGxpbmVzIGluIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWxldGVsbih2b2lkKTs8L1NUUk9ORz4KQEAgLTY0LDcgKzY0LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmRlbGV0ZWxuPC9TVFJPTkc+IGFuZCA8U1RST05HPndkZWxldGVsbjwvU1RST05HPiByb3V0aW5lcyBkZWxldGUgdGhlIGxpbmUgIHVuZGVyCiAgICAgICAgdGhlIGN1cnNvciBpbiB0aGUgd2luZG93OyBhbGwgbGluZXMgYmVsb3cgdGhlIGN1cnJlbnQgbGluZQogICAgICAgIGFyZSBtb3ZlZCB1cCBvbmUgbGluZS4gIFRoZSBib3R0b20gbGluZSBvZiB0aGUgIHdpbmRvdyAgaXMKQEAgLTgyLDcgKzgyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCBhbiA8U1RST05HPk9LPC9TVFJPTkc+CiAgICAgICAgKFNWcjQgc3BlY2lmaWVzIG9ubHkgImFuIGludGVnZXIgdmFsdWUgIG90aGVyICB0aGFuICA8U1RST05HPkVSUjwvU1RST05HPiIpCiAgICAgICAgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCkBAIC05MywxNCArOTMsMTQgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LiAgVGhlIHN0YW5kYXJkIHNwZWNpZmllcyB0aGF0IHRoZXkgcmV0dXJuICA8U1RST05HPkVSUjwvU1RST05HPiAgb24KICAgICAgICBmYWlsdXJlLCBidXQgc3BlY2lmaWVzIG5vIGVycm9yIGNvbmRpdGlvbnMuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBOb3RlIHRoYXQgYWxsIGJ1dCA8U1RST05HPndpbnNkZWxsbjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAgICAgICAgVGhlc2UgIHJvdXRpbmVzICBkbyAgbm90IHJlcXVpcmUgYSBoYXJkd2FyZSBsaW5lIGRlbGV0ZSBvcgpAQCAtMTEwLDE3ICsxMTAsMjMgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2RlbGV0ZWxuLjN4Lmh0bWwiPmN1cnNfZGVsZXRlbG4oM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2V4dGVuZC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwKaW5kZXggNDgzMDAzYy4uMjZhMDg5NyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfZXh0ZW5kLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDMyICsyNywzMyBAQAogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5OS1vbgotICAqIEBJZDogY3Vyc19leHRlbmQuM3gsdiAxLjE3IDIwMDYvMTIvMjQgMTg6MDE6NDggdG9tIEV4cCBACisgICogQElkOiBjdXJzX2V4dGVuZC4zeCx2IDEuMTkgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2V4dGVuZCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfZXh0ZW5kIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2V4dGVuZCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19leHRlbmQuM3guaHRtbCI+Y3Vyc19leHRlbmQoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2V4dGVuZC4zeC5odG1sIj5jdXJzX2V4dGVuZCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5jdXJzZXNfdmVyc2lvbjwvU1RST05HPiwgIDxTVFJPTkc+dXNlX2V4dGVuZGVkX25hbWVzPC9TVFJPTkc+IC0gbWlzY2VsbGFuZW91cyBjdXJzZXMKICAgICAgICBleHRlbnNpb25zCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y3Vyc2VzX3ZlcnNpb24odm9pZCk7PC9TVFJPTkc+CkBAIC02MSw3ICs2MSw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIGN1cnNlcyBsaWJyYXJ5IHdoaWNoCiAgICAgICAgZG8gbm90IGZpdCBlYXNpbHkgaW50byBvdGhlciBjYXRlZ29yaWVzLgogCkBAIC04MCw3ICs4MCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gIG5jdXJzZXMuICAgVGhleSAgd2VyZSAgbm90CiAgICAgICAgc3VwcG9ydGVkICBvbiAgVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtIFYgaW1wbGVtZW50YXRpb25zLgogICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIHRoZW0gYmUgIGNvbi0KQEAgLTg4LDI0ICs4OCwyOSBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPiwgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UoM3gpPC9BPjwvU1RST05HPiwgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcHJpbnQuM3guaHRtbCI+Y3Vyc19wcmludCgzeCk8L0E+PC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJkZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5kZWZhdWx0X2NvbG9ycygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJkZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+a2V5LTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5Ym91bmQuM3guaHRtbCI+Ym91bmQoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJrZXlvay4zeC5odG1sIj5rZXlvaygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InJlc2l6ZXRlcm0uM3guaHRtbCI+cmVzaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9IndyZXNpemUuM3guaHRtbCI+d3Jlc2l6ZSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1IiPkFVVEhPUjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhvbWFzIERpY2tleS4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2V4dGVuZC4zeC5odG1sIj5jdXJzX2V4dGVuZCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUiI+QVVUSE9SPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19nZXRfd2NoLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19nZXRfd2NoLjN4Lmh0bWwKaW5kZXggNDBhNzdjNy4uNTAzMzJjMSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0X3djaC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2dldF93Y2guM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2dldF93Y2guM3gsdiAxLjYgMjAwNi8wMi8yNSAyMTo0NzowNiB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfZ2V0X3djaC4zeCx2IDEuOCAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfZ2V0X3djaCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfZ2V0X3djaCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19nZXRfd2NoIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93Y2guM3guaHRtbCI+Y3Vyc19nZXRfd2NoKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0X3djaC4zeC5odG1sIj5jdXJzX2dldF93Y2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Z2V0X3djaDwvU1RST05HPiwgIDxTVFJPTkc+d2dldF93Y2g8L1NUUk9ORz4sIDxTVFJPTkc+bXZnZXRfd2NoPC9TVFJPTkc+LCA8U1RST05HPm12d2dldF93Y2g8L1NUUk9ORz4sIDxTVFJPTkc+dW5nZXRfd2NoPC9TVFJPTkc+IC0gZ2V0CiAgICAgICAgKG9yIHB1c2ggYmFjaykgYSB3aWRlIGNoYXJhY3RlciBmcm9tIGN1cnNlcyB0ZXJtaW5hbCAga2V5LQogICAgICAgIGJvYXJkCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRfd2NoKHdpbnRfdDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2NoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CkBAIC02NCw3ICs2NCw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5nZXRfd2NoPC9TVFJPTkc+LCA8U1RST05HPndnZXRfd2NoPC9TVFJPTkc+LCA8U1RST05HPm12Z2V0X3djaDwvU1RST05HPiwgYW5kIDxTVFJPTkc+bXZ3Z2V0X3djaDwvU1RST05HPiBmdW5jdGlvbnMKICAgICAgICByZWFkIGEgY2hhcmFjdGVyIGZyb20gdGhlICB0ZXJtaW5hbCAgYXNzb2NpYXRlZCAgd2l0aCAgdGhlCiAgICAgICAgY3VycmVudCAgb3IgIHNwZWNpZmllZCAgd2luZG93LiAgIEluICBuby1kZWxheSBtb2RlLCBpZiBubwpAQCAtMTA1LDcgKzEwNSw3IEBACiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGhlYWRlciAgZmlsZSAgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+ICBhdXRvbWF0aWNhbGx5ICBpbmNsdWRlcyB0aGUKICAgICAgICBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtzdGRpby5oJmd0OzwvU1RST05HPi4KIApAQCAtMTIyLDMwICsxMjIsMzkgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUVTPC9IMj48UFJFPgotICAgICAgIFdoZW4gPFNUUk9ORz5nZXRfd2NoPC9TVFJPTkc+LCA8U1RST05HPndnZXRfd2NoPC9TVFJPTkc+LCA8U1RST05HPm12Z2V0X3djaDwvU1RST05HPiwgIGFuZCAgPFNUUk9ORz5tdndnZXRfd2NoPC9TVFJPTkc+ICBmdW5jLQotICAgICAgIHRpb25zICBzdWNjZXNzZnVsbHkgcmVwb3J0IHRoZSBwcmVzc2luZyBvZiBhIGZ1bmN0aW9uIGtleSwKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgV2hlbiAgPFNUUk9ORz5nZXRfd2NoPC9TVFJPTkc+LCAgPFNUUk9ORz53Z2V0X3djaDwvU1RST05HPiwgIDxTVFJPTkc+bXZnZXRfd2NoPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5tdndnZXRfd2NoPC9TVFJPTkc+IGZ1bmMtCisgICAgICAgdGlvbnMgc3VjY2Vzc2Z1bGx5IHJlcG9ydCB0aGUgcHJlc3Npbmcgb2YgYSBmdW5jdGlvbiAga2V5LAogICAgICAgIHRoZXkgcmV0dXJuIDxTVFJPTkc+S0VZX0NPREVfWUVTPC9TVFJPTkc+LiAgV2hlbiB0aGV5IHN1Y2Nlc3NmdWxseSByZXBvcnQgYQotICAgICAgIHdpZGUgIGNoYXJhY3RlciwgIHRoZXkgIHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+LiAgT3RoZXJ3aXNlLCB0aGV5IHJldHVybgorICAgICAgIHdpZGUgY2hhcmFjdGVyLCB0aGV5IHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+LiAgIE90aGVyd2lzZSwgIHRoZXkgIHJldHVybgogICAgICAgIDxTVFJPTkc+RVJSPC9TVFJPTkc+LgogCi0gICAgICAgVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIDxTVFJPTkc+dW5nZXRfd2NoPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5PSzwvU1RST05HPi4gICBPdGhlci0KKyAgICAgICBVcG9uICBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIDxTVFJPTkc+dW5nZXRfd2NoPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5PSzwvU1RST05HPi4gIE90aGVyLQogICAgICAgIHdpc2UsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDxTVFJPTkc+RVJSPC9TVFJPTkc+LgogCisgICAgICAgRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yICBtb3ZlLQorICAgICAgIG1lbnQgIHVzaW5nICA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPiwgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc193Y2guM3guaHRtbCI+Y3Vyc19pbnNfd2NoKDN4KTwvQT48L1NUUk9ORz4sCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRjaC4zeC5odG1sIj5jdXJzX2dldGNoKDN4KTwvQT48L1NUUk9ORz4sICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zX3djaC4zeC5odG1sIj5jdXJzX2luc193Y2goM3gpPC9BPjwvU1RST05HPiwKICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5vcHRzLjN4Lmh0bWwiPmN1cnNfaW5vcHRzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tb3ZlLjN4Lmh0bWwiPmN1cnNfbW92ZSgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRfd2NoLjN4Lmh0bWwiPmN1cnNfZ2V0X3djaCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19nZXRfd3N0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0X3dzdHIuM3guaHRtbAppbmRleCAxNTljZWJlLi40ZDYyOGE4IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19nZXRfd3N0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2dldF93c3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19nZXRfd3N0ci4zeCx2IDEuNiAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19nZXRfd3N0ci4zeCx2IDEuOSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfZ2V0X3dzdHIgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2dldF93c3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2dldF93c3RyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0X3dzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0X3dzdHIuM3guaHRtbCI+Y3Vyc19nZXRfd3N0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5nZXRfd3N0cjwvU1RST05HPiwgPFNUUk9ORz5nZXRuX3dzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2dldF93c3RyPC9TVFJPTkc+LCA8U1RST05HPndnZXRuX3dzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZnZXRfd3N0cjwvU1RST05HPiwKICAgICAgICA8U1RST05HPm12Z2V0bl93c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2dldF93c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2dldG5fd3N0cjwvU1RST05HPiAtIGdldCBhbiBhcnJheSBvZgogICAgICAgIHdpZGUgY2hhcmFjdGVycyBmcm9tIGEgY3Vyc2VzIHRlcm1pbmFsIGtleWJvYXJkCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRfd3N0cih3aW50X3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndzdHI8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KQEAgLTY3LDcgKzY3LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZWZmZWN0ICBvZiA8U1RST05HPmdldF93c3RyPC9TVFJPTkc+IGlzIGFzIHRob3VnaCBhIHNlcmllcyBvZiBjYWxscyB0bwogICAgICAgIDxTVFJPTkc+Z2V0X3djaDwvU1RST05HPiB3ZXJlIG1hZGUsIHVudGlsIGEgbmV3bGluZSwgb3RoZXIgZW5kLW9mLWxpbmUsICBvcgogICAgICAgIGVuZC1vZi1maWxlIGNvbmRpdGlvbiBpcyBwcm9jZXNzZWQuICBBbiBlbmQtb2YtZmlsZSBjb25kaS0KQEAgLTEwMyw3ICsxMDMsNyBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVXNpbmcgPFNUUk9ORz5nZXRfd3N0cjwvU1RST05HPiwgPFNUUk9ORz5tdmdldF93c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2dldF93c3RyPC9TVFJPTkc+LCBvciAgPFNUUk9ORz53Z2V0X3dzdHI8L1NUUk9ORz4gIHRvCiAgICAgICAgcmVhZCAgYSAgbGluZSAgdGhhdCBvdmVyZmxvd3MgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgPFNUUk9ORz53c3RyPC9TVFJPTkc+CiAgICAgICAgY2F1c2VzICB1bmRlZmluZWQgIHJlc3VsdHMuICAgIFRoZSAgIHVzZSAgIG9mICAgPFNUUk9ORz5nZXRuX3dzdHI8L1NUUk9ORz4sCkBAIC0xMTgsNyArMTE4LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+IHVwb24gIHN1Y2Nlc3NmdWwgIGNvbXBsZS0KICAgICAgICB0aW9uLiAgT3RoZXJ3aXNlLCB0aGV5IHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPi4KIApAQCAtMTI5LDkgKzEyOSwxMyBAQAogICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgIHRoZSAgYXNzb2NpYXRlZCAgY2FsbCAgdG8KICAgICAgICAgICAgICAgICAgICA8U1RST05HPndnZXRfd2NoPC9TVFJPTkc+IGZhaWxlZC4KIAorICAgICAgIEZ1bmN0aW9ucyAgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZS0KKyAgICAgICBtZW50IHVzaW5nIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlICBwb3NpdGlvbiAgaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIFRoZSBTaW5nbGUgVW5peCBTcGVjaWZpLQogICAgICAgIGNhdGlvbiwgVmVyc2lvbiAyLiAgTm8gZXJyb3IgY29uZGl0aW9ucyBhcmUgZGVmaW5lZC4gIFRoaXMKICAgICAgICBpbXBsZW1lbnRhdGlvbiAgcmV0dXJucyBFUlIgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwsCkBAIC0xNDYsMTcgKzE1MCwyMyBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIEZ1bmN0aW9uczogIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93Y2guM3guaHRtbCI+Y3Vyc19nZXRfd2NoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIoM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIEZ1bmN0aW9uczogPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0X3djaC4zeC5odG1sIj5jdXJzX2dldF93Y2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldHN0ci4zeC5odG1sIj5jdXJzX2dldHN0cigzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0X3dzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2dldGNjaGFyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19nZXRjY2hhci4zeC5odG1sCmluZGV4IGI1NWNlMWQuLjk2N2MzNDcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2dldGNjaGFyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0Y2NoYXIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2dldGNjaGFyLjN4LHYgMS4xMSAyMDA4LzA1LzE3IDE5OjM3OjA1IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19nZXRjY2hhci4zeCx2IDEuMTcgMjAxNS8wNy8yMSAwOTozMDozOCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2dldGNjaGFyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19nZXRjY2hhciAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19nZXRjY2hhciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRjY2hhci4zeC5odG1sIj5jdXJzX2dldGNjaGFyKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNjaGFyLjN4Lmh0bWwiPmN1cnNfZ2V0Y2NoYXIoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Z2V0Y2NoYXI8L1NUUk9ORz4sICA8U1RST05HPnNldGNjaGFyPC9TVFJPTkc+IC0gR2V0IGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIGFuZCByZW4tCiAgICAgICAgZGl0aW9uIGZyb20gYSA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4gb3Igc2V0IGEgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IGZyb20gYSB3aWRlLWNoYXJhYy0KICAgICAgICB0ZXIgc3RyaW5nCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRjY2hhcig8L1NUUk9ORz4KQEAgLTcyLDUyICs3Miw1OCBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWdldGNjaGFyIj5nZXRjY2hhcjwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPmdldGNjaGFyPC9TVFJPTkc+ICBmdW5jdGlvbiAgZ2V0cyAgYSB3aWRlLWNoYXJhY3RlciBzdHJpbmcgYW5kCiAgICAgICAgcmVuZGl0aW9uIGZyb20gYSA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4gYXJndW1lbnQuICBXaGVuIDxFTT53Y2g8L0VNPiBpcyBub3QgYSBudWxsCiAgICAgICAgcG9pbnRlciwgdGhlIDxTVFJPTkc+Z2V0Y2NoYXI8L1NUUk9ORz4gZnVuY3Rpb24gZG9lcyB0aGUgZm9sbG93aW5nOgogCi0gICAgICAgLSAgICBFeHRyYWN0cyBpbmZvcm1hdGlvbiBmcm9tIGEgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IHZhbHVlIDxFTT53Y3ZhbDwvRU0+CisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgRXh0cmFjdHMgaW5mb3JtYXRpb24gZnJvbSBhIDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPiB2YWx1ZSA8RU0+d2N2YWw8L0VNPgogCi0gICAgICAgLSAgICBTdG9yZXMgIHRoZSAgY2hhcmFjdGVyICBhdHRyaWJ1dGVzICBpbiAgdGhlICBsb2NhdGlvbgotICAgICAgICAgICAgcG9pbnRlZCB0byBieSA8RU0+YXR0cnM8L0VNPgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFN0b3JlcyAgIHRoZSAgY2hhcmFjdGVyICBhdHRyaWJ1dGVzICBpbiAgdGhlICBsb2NhdGlvbgorICAgICAgICAgICBwb2ludGVkIHRvIGJ5IDxFTT5hdHRyczwvRU0+CiAKLSAgICAgICAtICAgIFN0b3JlcyB0aGUgY29sb3ItcGFpciBpbiB0aGUgbG9jYXRpb24gcG9pbnRlZCAgdG8gIGJ5Ci0gICAgICAgICAgICA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBTdG9yZXMgdGhlIGNvbG9yLXBhaXIgaW4gdGhlIGxvY2F0aW9uICBwb2ludGVkICB0byAgYnkKKyAgICAgICAgICAgPEVNPmNvbG9yPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+cGFpcjwvRU0+CiAKLSAgICAgICAtICAgIFN0b3JlcyAgdGhlICB3aWRlLWNoYXJhY3RlciBzdHJpbmcsIGNoYXJhY3RlcnMgcmVmZXItCi0gICAgICAgICAgICBlbmNlZCBieSA8RU0+d2N2YWw8L0VNPiwgaW50byB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSA8RU0+d2NoPC9FTT4uCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgU3RvcmVzICB0aGUgIHdpZGUtY2hhcmFjdGVyICBzdHJpbmcsIGNoYXJhY3RlcnMgcmVmZXItCisgICAgICAgICAgIGVuY2VkIGJ5IDxFTT53Y3ZhbDwvRU0+LCBpbnRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IDxFTT53Y2g8L0VNPi4KIAogICAgICAgIFdoZW4gPEVNPndjaDwvRU0+IGlzIGEgbnVsbCBwb2ludGVyLCB0aGUgPFNUUk9ORz5nZXRjY2hhcjwvU1RST05HPiBmdW5jdGlvbiBkb2VzIHRoZQogICAgICAgIGZvbGxvd2luZzoKIAotICAgICAgIC0gICAgT2J0YWlucyAgdGhlICBudW1iZXIgb2Ygd2lkZSBjaGFyYWN0ZXJzIHBvaW50ZWQgdG8gYnkKLSAgICAgICAgICAgIDxFTT53Y3ZhbDwvRU0+CisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgT2J0YWlucyAgdGhlICBudW1iZXIgIG9mIHdpZGUgY2hhcmFjdGVycyBwb2ludGVkIHRvIGJ5CisgICAgICAgICAgIDxFTT53Y3ZhbDwvRU0+CiAKLSAgICAgICAtICAgIERvZXMgbm90IGNoYW5nZSAgdGhlICBkYXRhICByZWZlcmVuY2VkICBieSAgPEVNPmF0dHJzPC9FTT4gIG9yCi0gICAgICAgICAgICA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4KLQotICAgICAgIFRoZSAgPFNUUk9ORz5zZXRjY2hhcjwvU1RST05HPiBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgbG9jYXRpb24gcG9pbnRlZCB0bwotICAgICAgIGJ5IDxFTT53Y3ZhbDwvRU0+IGJ5IHVzaW5nOgotCi0gICAgICAgLSAgICBUaGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgaW4gPEVNPmF0dHJzPC9FTT4KLQotICAgICAgIC0gICAgVGhlIGNvbG9yIHBhaXIgaW4gPEVNPmNvbG9yPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+cGFpcjwvRU0+Ci0KLSAgICAgICAtICAgIFRoZSB3aWRlLWNoYXJhY3RlciBzdHJpbmcgcG9pbnRlZCAgdG8gIGJ5ICA8RU0+d2NoPC9FTT4uICAgVGhlCi0gICAgICAgICAgICBzdHJpbmcgIG11c3QgYmUgTCdcMCcgdGVybWluYXRlZCwgY29udGFpbiBhdCBtb3N0IG9uZQotICAgICAgICAgICAgc3BhY2luZyBjaGFyYWN0ZXIsIHdoaWNoIG11c3QgYmUgdGhlIGZpcnN0LgotCi0gICAgICAgICAgICBVcCB0byA8U1RST05HPkNDSEFSV19NQVg8L1NUUk9ORz4tMSBub25zcGFjaW5nIGNoYXJhY3RlcnMgbWF5ICBmb2xsb3cuCi0gICAgICAgICAgICBBZGRpdGlvbmFsIG5vbnNwYWNpbmcgY2hhcmFjdGVycyBhcmUgaWdub3JlZC4KLQotICAgICAgICAgICAgVGhlICBzdHJpbmcgIG1heSAgY29udGFpbiAgYSBzaW5nbGUgY29udHJvbCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIGluc3RlYWQuICBJbiB0aGF0IGNhc2UsIG5vIG5vbnNwYWNpbmcgY2hhcmFjdGVycyAgYXJlCi0gICAgICAgICAgICBhbGxvd2VkLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIERvZXMgbm90ICBjaGFuZ2UgIHRoZSAgZGF0YSAgcmVmZXJlbmNlZCAgYnkgIDxFTT5hdHRyczwvRU0+ICBvcgorICAgICAgICAgICA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMz48YSBuYW1lPSJoMy1zZXRjY2hhciI+c2V0Y2NoYXI8L2E+PC9IMz48UFJFPgorICAgICAgIFRoZSAgPFNUUk9ORz5zZXRjY2hhcjwvU1RST05HPiBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgbG9jYXRpb24gcG9pbnRlZCB0bworICAgICAgIGJ5IDxFTT53Y3ZhbDwvRU0+IGJ5IHVzaW5nOgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVzIGluIDxFTT5hdHRyczwvRU0+CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgY29sb3IgcGFpciBpbiA8RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSB3aWRlLWNoYXJhY3RlciBzdHJpbmcgIHBvaW50ZWQgIHRvICBieSAgPEVNPndjaDwvRU0+LiAgIFRoZQorICAgICAgICAgICBzdHJpbmcgIG11c3QgIGJlIEwnXDAnIHRlcm1pbmF0ZWQsIGNvbnRhaW4gYXQgbW9zdCBvbmUKKyAgICAgICAgICAgc3BhY2luZyBjaGFyYWN0ZXIsIHdoaWNoIG11c3QgYmUgdGhlIGZpcnN0LgorCisgICAgICAgICAgIFVwIHRvIDxTVFJPTkc+Q0NIQVJXX01BWDwvU1RST05HPi0xIG5vbnNwYWNpbmcgY2hhcmFjdGVycyAgbWF5ICBmb2xsb3cuCisgICAgICAgICAgIEFkZGl0aW9uYWwgbm9uc3BhY2luZyBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkLgorCisgICAgICAgICAgIFRoZSAgc3RyaW5nICBtYXkgIGNvbnRhaW4gIGEgIHNpbmdsZSBjb250cm9sIGNoYXJhY3RlcgorICAgICAgICAgICBpbnN0ZWFkLiAgSW4gdGhhdCBjYXNlLCBubyBub25zcGFjaW5nICBjaGFyYWN0ZXJzICBhcmUKKyAgICAgICAgICAgYWxsb3dlZC4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPEVNPm9wdHM8L0VNPiBhcmd1bWVudCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gIEN1cnJlbnRseSwKICAgICAgICBhbiBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYSBudWxsIHBvaW50ZXIgYXMgPEVNPm9wdHM8L0VNPi4KIApAQCAtMTI4LDMwICsxMzQsNDEgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBXaGVuIDxFTT53Y2g8L0VNPiBpcyBhIG51bGwgcG9pbnRlciwgPFNUUk9ORz5nZXRjY2hhcjwvU1RST05HPiByZXR1cm5zIHRoZSBudW1iZXIgb2YKLSAgICAgICB3aWRlIGNoYXJhY3RlcnMgcmVmZXJlbmNlZCBieSA8RU0+d2N2YWw8L0VNPi4KKyAgICAgICB3aWRlIGNoYXJhY3RlcnMgcmVmZXJlbmNlZCBieSA8RU0+d2N2YWw8L0VNPiwgaW5jbHVkaW5nIG9uZSAgZm9yICBhCisgICAgICAgdHJhaWxpbmcgbnVsbC4KIAotICAgICAgIFdoZW4gPEVNPndjaDwvRU0+IGlzIG5vdCBhIG51bGwgcG9pbnRlciwgPFNUUk9ORz5nZXRjY2hhcjwvU1RST05HPiByZXR1cm5zICA8U1RST05HPk9LPC9TVFJPTkc+ICB1cG9uCisgICAgICAgV2hlbiAgPEVNPndjaDwvRU0+ICBpcyBub3QgYSBudWxsIHBvaW50ZXIsIDxTVFJPTkc+Z2V0Y2NoYXI8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPk9LPC9TVFJPTkc+IHVwb24KICAgICAgICBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIGFuZCA8U1RST05HPkVSUjwvU1RST05HPiBvdGhlcndpc2UuCiAKLSAgICAgICBVcG9uICBzdWNjZXNzZnVsICBjb21wbGV0aW9uLCA8U1RST05HPnNldGNjaGFyPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5PSzwvU1RST05HPi4gIE90aGVyLQorICAgICAgIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCA8U1RST05HPnNldGNjaGFyPC9TVFJPTkc+IHJldHVybnMgIDxTVFJPTkc+T0s8L1NUUk9ORz4uICAgT3RoZXItCiAgICAgICAgd2lzZSwgaXQgcmV0dXJucyA8U1RST05HPkVSUjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICBGdW5jdGlvbnM6ICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwKLSAgICAgICA8U1RST05HPjxBIEhSRUY9Indjd2lkdGguMy5odG1sIj53Y3dpZHRoKDMpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIEZ1bmN0aW9uczogICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+d2N3aWR0aCgzKTwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRjY2hhci4zeC5odG1sIj5jdXJzX2dldGNjaGFyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1nZXRjY2hhciI+Z2V0Y2NoYXI8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtc2V0Y2NoYXIiPnNldGNjaGFyPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0Y2guM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2dldGNoLjN4Lmh0bWwKaW5kZXggZTdkZjY2My4uOWIzYmRjNCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0Y2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19nZXRjaC4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNDQgKzI3LDQ4IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2dldGNoLjN4LHYgMS4zMCAyMDA2LzEyLzAyIDE3OjAyOjUzIHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19nZXRjaC4zeCx2IDEuNDIgMjAxNS8wNy8yMSAwODo0NDowNCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2dldGNoIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19nZXRjaCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19nZXRjaCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRjaC4zeC5odG1sIj5jdXJzX2dldGNoKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4sIDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+LCA8U1RST05HPm12Z2V0Y2g8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3Z2V0Y2g8L1NUUk9ORz4sIDxTVFJPTkc+dW5nZXRjaDwvU1RST05HPiwgPFNUUk9ORz5oYXNfa2V5PC9TVFJPTkc+IC0gZ2V0CiAgICAgICAgKG9yIHB1c2ggYmFjaykgY2hhcmFjdGVycyBmcm9tIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHRlcm1pbmFsIGtleWJvYXJkCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRjaCh2b2lkKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndnZXRjaChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12Z2V0Y2goaW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12d2dldGNoKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVuZ2V0Y2goaW50PC9TVFJPTkc+IDxTVFJPTkc+Y2gpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aGFzX2tleShpbnQ8L1NUUk9ORz4gPFNUUk9ORz5jaCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz53Z2V0Y2goV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW4pOzwvRU0+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdmdldGNoKGludDwvU1RST05HPiA8RU0+eTwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT54PC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdndnZXRjaChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT55PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPng8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVuZ2V0Y2goaW50PC9TVFJPTkc+IDxFTT5jaDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aGFzX2tleShpbnQ8L1NUUk9ORz4gPEVNPmNoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUmVhZGluZy1jaGFyYWN0ZXJzIj5SZWFkaW5nIGNoYXJhY3RlcnM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmdldGNoPC9TVFJPTkc+LCA8U1RST05HPndnZXRjaDwvU1RST05HPiwgPFNUUk9ORz5tdmdldGNoPC9TVFJPTkc+IGFuZCA8U1RST05HPm12d2dldGNoPC9TVFJPTkc+LCByb3V0aW5lcyAgcmVhZCAgYQogICAgICAgIGNoYXJhY3RlciAgZnJvbSB0aGUgd2luZG93LiAgSW4gbm8tZGVsYXkgbW9kZSwgaWYgbm8gaW5wdXQKICAgICAgICBpcyB3YWl0aW5nLCB0aGUgdmFsdWUgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaXMgcmV0dXJuZWQuICBJbiBkZWxheSBtb2RlLCB0aGUKQEAgLTc2LDI0ICs3OSwzNyBAQAogICAgICAgIHdhaXRzICB1bnRpbCBhIGNoYXJhY3RlciBpcyB0eXBlZCBvciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQKICAgICAgICBoYXMgYmVlbiByZWFjaGVkLgogCi0gICAgICAgVW5sZXNzIDxTVFJPTkc+bm9lY2hvPC9TVFJPTkc+IGhhcyBiZWVuIHNldCwgdGhlbiB0aGUgY2hhcmFjdGVyICB3aWxsICBhbHNvCi0gICAgICAgYmUgZWNob2VkIGludG8gdGhlIGRlc2lnbmF0ZWQgd2luZG93IGFjY29yZGluZyB0byB0aGUgZm9sLQotICAgICAgIGxvd2luZyBydWxlczogSWYgdGhlIGNoYXJhY3RlciBpcyB0aGUgY3VycmVudCBlcmFzZSAgY2hhci0KLSAgICAgICBhY3RlciwgIGxlZnQgIGFycm93LCBvciBiYWNrc3BhY2UsIHRoZSBjdXJzb3IgaXMgbW92ZWQgb25lCi0gICAgICAgc3BhY2UgdG8gdGhlIGxlZnQgYW5kIHRoYXQgc2NyZWVuIHBvc2l0aW9uIGlzIGVyYXNlZCBhcyBpZgotICAgICAgIDxTVFJPTkc+ZGVsY2g8L1NUUk9ORz4gaGFkIGJlZW4gY2FsbGVkLiAgSWYgdGhlIGNoYXJhY3RlciB2YWx1ZSBpcyBhbnkgb3RoLQotICAgICAgIGVyIDxTVFJPTkc+S0VZXzwvU1RST05HPiBkZWZpbmUsIHRoZSB1c2VyIGlzICBhbGVydGVkICB3aXRoICBhICA8U1RST05HPmJlZXA8L1NUUk9ORz4gIGNhbGwuCi0gICAgICAgT3RoZXJ3aXNlIHRoZSBjaGFyYWN0ZXIgaXMgc2ltcGx5IG91dHB1dCB0byB0aGUgc2NyZWVuLgorICAgICAgIElmIDxTVFJPTkc+ZWNobzwvU1RST05HPiBpcyBlbmFibGVkLCBhbmQgdGhlIHdpbmRvdyBpcyBub3QgYSBwYWQsIHRoZW4gIHRoZQorICAgICAgIGNoYXJhY3RlciAgd2lsbCAgYWxzbyBiZSBlY2hvZWQgaW50byB0aGUgZGVzaWduYXRlZCB3aW5kb3cKKyAgICAgICBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlczoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIHRoZSBjaGFyYWN0ZXIgaXMgdGhlIGN1cnJlbnQgZXJhc2UgY2hhcmFjdGVyLCAgbGVmdAorICAgICAgICAgICBhcnJvdywgIG9yIGJhY2tzcGFjZSwgdGhlIGN1cnNvciBpcyBtb3ZlZCBvbmUgc3BhY2UgdG8KKyAgICAgICAgICAgdGhlIGxlZnQgYW5kIHRoYXQgc2NyZWVuICBwb3NpdGlvbiAgaXMgIGVyYXNlZCAgYXMgIGlmCisgICAgICAgICAgIDxTVFJPTkc+ZGVsY2g8L1NUUk9ORz4gaGFkIGJlZW4gY2FsbGVkLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgSWYgIHRoZSAgY2hhcmFjdGVyIHZhbHVlIGlzIGFueSBvdGhlciA8U1RST05HPktFWV88L1NUUk9ORz4gZGVmaW5lLCB0aGUKKyAgICAgICAgICAgdXNlciBpcyBhbGVydGVkIHdpdGggYSA8U1RST05HPmJlZXA8L1NUUk9ORz4gY2FsbC4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBjYXJyaWFnZS1yZXR1cm4sIGFuZCAgaWYgIDxTVFJPTkc+bmw8L1NUUk9ORz4gIGlzCisgICAgICAgICAgIGVuYWJsZWQsICBpdCAgaXMgdHJhbnNsYXRlZCB0byBhIGxpbmUtZmVlZCBhZnRlciBlY2hvLQorICAgICAgICAgICBpbmcuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBPdGhlcndpc2UgIHRoZSAgY2hhcmFjdGVyICBpcyAgc2ltcGx5ICBvdXRwdXQgIHRvICB0aGUKKyAgICAgICAgICAgc2NyZWVuLgogCiAgICAgICAgSWYgdGhlIHdpbmRvdyBpcyBub3QgYSBwYWQsIGFuZCBpdCBoYXMgYmVlbiBtb3ZlZCBvciBtb2RpLQogICAgICAgIGZpZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0byAgPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiwgIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4gIHdpbGwgIGJlCiAgICAgICAgY2FsbGVkIGJlZm9yZSBhbm90aGVyIGNoYXJhY3RlciBpcyByZWFkLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUtleXBhZC1tb2RlIj5LZXlwYWQgbW9kZTwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgIDxTVFJPTkc+a2V5cGFkPC9TVFJPTkc+IGlzIDxTVFJPTkc+VFJVRTwvU1RST05HPiwgYW5kIGEgZnVuY3Rpb24ga2V5IGlzIHByZXNzZWQsIHRoZSB0by0KICAgICAgICBrZW4gZm9yIHRoYXQgZnVuY3Rpb24ga2V5IGlzIHJldHVybmVkIGluc3RlYWQgb2YgIHRoZSAgcmF3CiAgICAgICAgY2hhcmFjdGVycy4gICBQb3NzaWJsZSBmdW5jdGlvbiBrZXlzIGFyZSBkZWZpbmVkIGluIDxTVFJPTkc+Jmx0O2N1cnMtPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5lcy5oJmd0OzwvU1RST05HPiBhcyBtYWNyb3Mgd2l0aCB2YWx1ZXMgb3V0c2lkZSAgdGhlICByYW5nZSAgb2YgIDgtYml0Ci0gICAgICAgY2hhcmFjdGVycyAgd2hvc2UgIG5hbWVzIGJlZ2luIHdpdGggPFNUUk9ORz5LRVlfPC9TVFJPTkc+LiBUaHVzLCBhIHZhcmlhYmxlCisgICAgICAgY2hhcmFjdGVycyAgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCA8U1RST05HPktFWV88L1NUUk9ORz4uICBUaHVzLCBhIHZhcmlhYmxlCiAgICAgICAgaW50ZW5kZWQgdG8gaG9sZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gIGtleSAgbXVzdAogICAgICAgIGJlIG9mIHNob3J0IHNpemUgb3IgbGFyZ2VyLgogCkBAIC0xMDYsMTkgKzEyMiwyMyBAQAogICAgICAgIGV4cGVyaWVuY2UgYSBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIGEgdXNlciBwcmVzc2VzIHRoZSBlcy0KICAgICAgICBjYXBlIGtleSBhbmQgdGhlIGVzY2FwZSBpcyByZXR1cm5lZCB0byB0aGUgcHJvZ3JhbS4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1VbmdldHRpbmctY2hhcmFjdGVycyI+VW5nZXR0aW5nIGNoYXJhY3RlcnM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnVuZ2V0Y2g8L1NUUk9ORz4gcm91dGluZSBwbGFjZXMgPEVNPmNoPC9FTT4gYmFjayBvbnRvIHRoZSBpbnB1dCBxdWV1ZSB0bwogICAgICAgIGJlIHJldHVybmVkIGJ5IHRoZSBuZXh0IGNhbGwgdG8gPFNUUk9ORz53Z2V0Y2g8L1NUUk9ORz4uICBUaGVyZSBpcyBqdXN0IG9uZQogICAgICAgIGlucHV0IHF1ZXVlIGZvciBhbGwgd2luZG93cy4KIAogCi0gICA8U1RST05HPkZ1bmN0aW9uPC9TVFJPTkc+IDxTVFJPTkc+S2V5czwvU1RST05HPgotICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24ga2V5cywgZGVmaW5lZCBpbiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4sICBtaWdodAotICAgICAgIGJlICByZXR1cm5lZCAgYnkgIDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4gIGlmIDxTVFJPTkc+a2V5cGFkPC9TVFJPTkc+IGhhcyBiZWVuIGVuYWJsZWQuICBOb3RlCi0gICAgICAgdGhhdCBub3QgYWxsIG9mIHRoZXNlIGFyZSAgbmVjZXNzYXJpbHkgIHN1cHBvcnRlZCAgb24gIGFueQotICAgICAgIHBhcnRpY3VsYXIgdGVybWluYWwuCi0KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVByZWRlZmluZWQta2V5LWNvZGVzIj5QcmVkZWZpbmVkIGtleS1jb2RlczwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIGZvbGxvd2luZyBzcGVjaWFsIGtleXMsIGRlZmluZWQgaW4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LCBtYXkgIGJlCisgICAgICAgcmV0dXJuZWQgIGJ5IDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4gaWYgPFNUUk9ORz5rZXlwYWQ8L1NUUk9ORz4gaGFzIGJlZW4gZW5hYmxlZC4gIE5vdCBhbGwgb2YKKyAgICAgICB0aGVzZSBhcmUgbmVjZXNzYXJpbHkgc3VwcG9ydGVkIG9uIGFueSAgcGFydGljdWxhciAgdGVybWktCisgICAgICAgbmFsLgogCiAgICAgICAgICAgICA8RU0+TmFtZTwvRU0+ICAgICAgICAgICAgPEVNPktleTwvRU0+IDxFTT5uYW1lPC9FTT4KKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIEtFWV9CUkVBSyAgICAgICBCcmVhayBrZXkKICAgICAgICAgICAgIEtFWV9ET1dOICAgICAgICBUaGUgZm91ciBhcnJvdyBrZXlzIC4uLgogICAgICAgICAgICAgS0VZX1VQCkBAIC0xNjYsNiArMTg2LDcgQEAKICAgICAgICAgICAgIEtFWV9GSU5EICAgICAgICBGaW5kIGtleQogICAgICAgICAgICAgS0VZX0hFTFAgICAgICAgIEhlbHAga2V5CiAgICAgICAgICAgICBLRVlfTUFSSyAgICAgICAgTWFyayBrZXkKKwogICAgICAgICAgICAgS0VZX01FU1NBR0UgICAgIE1lc3NhZ2Uga2V5CiAgICAgICAgICAgICBLRVlfTU9VU0UgICAgICAgTW91c2UgZXZlbnQgcmVhZAogICAgICAgICAgICAgS0VZX01PVkUgICAgICAgIE1vdmUga2V5CkBAIC0xODAsNyArMjAxLDYgQEAKICAgICAgICAgICAgIEtFWV9SRVNJWkUgICAgICBTY3JlZW4gcmVzaXplZAogICAgICAgICAgICAgS0VZX1JFU1RBUlQgICAgIFJlc3RhcnQga2V5CiAgICAgICAgICAgICBLRVlfUkVTVU1FICAgICAgUmVzdW1lIGtleQotCiAgICAgICAgICAgICBLRVlfU0FWRSAgICAgICAgU2F2ZSBrZXkKICAgICAgICAgICAgIEtFWV9TQkVHICAgICAgICBTaGlmdGVkIGJlZ2lubmluZyBrZXkKICAgICAgICAgICAgIEtFWV9TQ0FOQ0VMICAgICBTaGlmdGVkIGNhbmNlbCBrZXkKQEAgLTIxNiw3ICsyMzYsNiBAQAogCiAgICAgICAgS2V5cGFkIGlzIGFycmFuZ2VkIGxpa2UgdGhpczoKIAotCiAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKy0tLS0tLSstLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgIHwgPFNUUk9ORz5BMTwvU1RST05HPiAgfCAgPFNUUk9ORz51cDwvU1RST05HPiAgfCAgPFNUUk9ORz5BMzwvU1RST05HPiAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0rLS0tLS0tKy0tLS0tLS0rCkBAIC0yMjQsMTAzICsyNDMsMTM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKy0tLS0tLSstLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgIHwgPFNUUk9ORz5DMTwvU1RST05HPiAgfCA8U1RST05HPmRvd248L1NUUk9ORz4gfCAgPFNUUk9ORz5DMzwvU1RST05HPiAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0rLS0tLS0tKy0tLS0tLS0rCi0gICAgICAgVGhlIDxTVFJPTkc+aGFzX2tleTwvU1RST05HPiByb3V0aW5lIHRha2VzIGEga2V5IHZhbHVlIGZyb20gdGhlIGFib3ZlIGxpc3QsCi0gICAgICAgYW5kIHJldHVybnMgVFJVRSBvciBGQUxTRSBhY2NvcmRpbmcgdG8gd2hldGhlciB0aGUgY3VycmVudAotICAgICAgIHRlcm1pbmFsIHR5cGUgcmVjb2duaXplcyBhIGtleSB3aXRoIHRoYXQgdmFsdWUuICBOb3RlIHRoYXQKLSAgICAgICBhICBmZXcgIHZhbHVlcyAgZG8gIG5vdCAgY29ycmVzcG9uZCAgdG8gIGEgcmVhbCBrZXksIGUuZy4sCi0gICAgICAgPFNUUk9ORz5LRVlfUkVTSVpFPC9TVFJPTkc+IGFuZCA8U1RST05HPktFWV9NT1VTRTwvU1RST05HPi4gIFNlZSA8U1RST05HPjxBIEhSRUY9InJlc2l6ZXRlcm0uM3guaHRtbCI+cmVzaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+IGZvciBtb3JlIGRlLQotICAgICAgIHRhaWxzICBhYm91dCAgPFNUUk9ORz5LRVlfUkVTSVpFPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UoM3gpPC9BPjwvU1RST05HPiBmb3IgYSBkaXNjdXMtCi0gICAgICAgc2lvbiBvZiA8U1RST05HPktFWV9NT1VTRTwvU1RST05HPi4KKyAgICAgICBBIGZldyBvZiB0aGVzZSBwcmVkZWZpbmVkIHZhbHVlcyBkbyA8RU0+bm90PC9FTT4gIGNvcnJlc3BvbmQgIHRvICBhCisgICAgICAgcmVhbCBrZXk6CiAKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPktFWV9SRVNJWkU8L1NUUk9ORz4gIGlzICByZXR1cm5lZCAgd2hlbiB0aGUgPFNUUk9ORz5TSUdXSU5DSDwvU1RST05HPiBzaWduYWwgaGFzCisgICAgICAgICAgIGJlZW4gZGV0ZWN0ZWQgKHNlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPiBhbmQgPFNUUk9ORz48QSBIUkVGPSJyZXNpemV0ZXJtLjN4Lmh0bWwiPnJlc2l6ZXRlcm0oM3gpPC9BPjwvU1RST05HPikuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPktFWV9NT1VTRTwvU1RST05HPiAgIGlzICAgcmV0dXJuZWQgICBmb3IgICBtb3VzZS1ldmVudHMgICAgKHNlZQorICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfbW91c2UuM3guaHRtbCI+Y3Vyc19tb3VzZSgzeCk8L0E+PC9TVFJPTkc+KS4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uICBmYWlsdXJlICBhbmQgIGFuCis8SDM+PGEgbmFtZT0iaDMtVGVzdGluZy1rZXktY29kZXMiPlRlc3Rpbmcga2V5LWNvZGVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+aGFzX2tleTwvU1RST05HPiByb3V0aW5lIHRha2VzIGEga2V5LWNvZGUgdmFsdWUgZnJvbSB0aGUgYWJvdmUKKyAgICAgICBsaXN0LCBhbmQgcmV0dXJucyA8U1RST05HPlRSVUU8L1NUUk9ORz4gb3IgPFNUUk9ORz5GQUxTRTwvU1RST05HPiBhY2NvcmRpbmcgdG8gIHdoZXRoZXIgIHRoZQorICAgICAgIGN1cnJlbnQgdGVybWluYWwgdHlwZSByZWNvZ25pemVzIGEga2V5IHdpdGggdGhhdCB2YWx1ZS4KKworICAgICAgIFRoZSBsaWJyYXJ5IGFsc28gc3VwcG9ydHMgdGhlc2UgZXh0ZW5zaW9uczoKKworICAgICAgICAgIDxTVFJPTkc+ZGVmaW5lX2tleTwvU1RST05HPgorICAgICAgICAgICAgICAgZGVmaW5lcyAgYSAga2V5LWNvZGUgIGZvciAgYSBnaXZlbiBzdHJpbmcgKHNlZSA8U1RST05HPmRlLTwvU1RST05HPgorICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZpbmVfa2V5LjN4Lmh0bWwiPmZpbmVfa2V5KDN4KTwvQT48L1NUUk9ORz4pLgorCisgICAgICAgICAgPFNUUk9ORz5rZXlfZGVmaW5lZDwvU1RST05HPgorICAgICAgICAgICAgICAgY2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5LWNvZGUgZGVmaW5lZCBmb3IgYSAgZ2l2ZW4KKyAgICAgICAgICAgICAgIHN0cmluZyAoc2VlIDxTVFJPTkc+PEEgSFJFRj0ia2V5X2RlZmluZWQuM3guaHRtbCI+a2V5X2RlZmluZWQoM3gpPC9BPjwvU1RST05HPikuCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIEFsbCAgcm91dGluZXMgIHJldHVybiAgdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCBhbgogICAgICAgIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiAoPFNUUk9ORz5PSzwvU1RST05HPiBpbiB0aGUgY2FzZSBvZiB1bmdldGNoKCkpCiAgICAgICAgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz51bmdldGNoPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGVyZSBpcyBubyBtb3JlICByb29tICBpbgotICAgICAgICAgICAgICAgICAgIHRoZSBGSUZPLgorICAgICAgICAgIDxTVFJPTkc+dW5nZXRjaDwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJucyBFUlIgaWYgdGhlcmUgaXMgbm8gbW9yZSByb29tIGluIHRoZSBGSUZPLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gIGVycm9yICBpZiAgdGhlICB3aW5kb3cgcG9pbnRlciBpcwotICAgICAgICAgICAgICAgICAgIG51bGwsIG9yIGlmIGl0cyB0aW1lb3V0IGV4cGlyZXMgd2l0aG91dCBoYXZpbmcKLSAgICAgICAgICAgICAgICAgICBhbnkgZGF0YS4KKyAgICAgICAgICA8U1RST05HPndnZXRjaDwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJucyAgRVJSICBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbCwgb3IgaWYKKyAgICAgICAgICAgICAgIGl0cyB0aW1lb3V0IGV4cGlyZXMgd2l0aG91dCBoYXZpbmcgYW55IGRhdGEuCisKKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFVzZSBvZiB0aGUgZXNjYXBlIGtleSBieSBhIHByb2dyYW1tZXIgZm9yIGEgc2luZ2xlIGNoYXJhYy0KLSAgICAgICB0ZXIgZnVuY3Rpb24gaXMgZGlzY291cmFnZWQsIGFzIGl0IHdpbGwgY2F1c2UgYSAgZGVsYXkgIG9mCisgICAgICAgdGVyICBmdW5jdGlvbiAgaXMgZGlzY291cmFnZWQsIGFzIGl0IHdpbGwgY2F1c2UgYSBkZWxheSBvZgogICAgICAgIHVwIHRvIG9uZSBzZWNvbmQgd2hpbGUgdGhlIGtleXBhZCBjb2RlIGxvb2tzIGZvciBhIGZvbGxvdy0KICAgICAgICBpbmcgZnVuY3Rpb24ta2V5IHNlcXVlbmNlLgogCi0gICAgICAgTm90ZSB0aGF0IHNvbWUga2V5cyBtYXkgYmUgdGhlIHNhbWUgYXMgY29tbW9ubHkgdXNlZCAgY29uLQotICAgICAgIHRyb2wga2V5cywgZS5nLiwgPFNUUk9ORz5LRVlfRU5URVI8L1NUUk9ORz4gdmVyc3VzIGNvbnRyb2wvTSwgPFNUUk9ORz5LRVlfQkFDS1NQQUNFPC9TVFJPTkc+Ci0gICAgICAgdmVyc3VzIGNvbnRyb2wvSC4gIFNvbWUgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyBtYXkgIGRpZmZlcgotICAgICAgIGFjY29yZGluZyAgdG8gIHdoZXRoZXIgIHRoZXkgdHJlYXQgdGhlc2UgY29udHJvbCBrZXlzIHNwZS0KLSAgICAgICBjaWFsbHkgKGFuZCBpZ25vcmUgdGhlIHRlcm1pbmZvKSwgb3IgdXNlIHRoZSB0ZXJtaW5mbyBkZWYtCi0gICAgICAgaW5pdGlvbnMuICAgPFNUUk9ORz5OY3Vyc2VzPC9TVFJPTkc+ICB1c2VzICB0aGUgdGVybWluZm8gZGVmaW5pdGlvbi4gIElmIGl0Ci0gICAgICAgc2F5cyAgdGhhdCAgPFNUUk9ORz5LRVlfRU5URVI8L1NUUk9ORz4gIGlzICBjb250cm9sL00sICA8U1RST05HPmdldGNoPC9TVFJPTkc+ICB3aWxsICByZXR1cm4KLSAgICAgICA8U1RST05HPktFWV9FTlRFUjwvU1RST05HPiB3aGVuIHlvdSBwcmVzcyBjb250cm9sL00uCisgICAgICAgU29tZSAga2V5cyAgbWF5IGJlIHRoZSBzYW1lIGFzIGNvbW1vbmx5IHVzZWQgY29udHJvbCBrZXlzLAorICAgICAgIGUuZy4sIDxTVFJPTkc+S0VZX0VOVEVSPC9TVFJPTkc+ICB2ZXJzdXMgIGNvbnRyb2wvTSwgIDxTVFJPTkc+S0VZX0JBQ0tTUEFDRTwvU1RST05HPiAgdmVyc3VzCisgICAgICAgY29udHJvbC9ILiAgU29tZSBjdXJzZXMgaW1wbGVtZW50YXRpb25zIG1heSBkaWZmZXIgYWNjb3JkLQorICAgICAgIGluZyB0byB3aGV0aGVyIHRoZXkgdHJlYXQgIHRoZXNlICBjb250cm9sICBrZXlzICBzcGVjaWFsbHkKKyAgICAgICAoYW5kICBpZ25vcmUgIHRoZSAgdGVybWluZm8pLCAgb3IgdXNlIHRoZSB0ZXJtaW5mbyBkZWZpbmktCisgICAgICAgdGlvbnMuICA8U1RST05HPk5jdXJzZXM8L1NUUk9ORz4gdXNlcyB0aGUgdGVybWluZm8gZGVmaW5pdGlvbi4gIElmIGl0ICBzYXlzCisgICAgICAgdGhhdCAgPFNUUk9ORz5LRVlfRU5URVI8L1NUUk9ORz4gIGlzIGNvbnRyb2wvTSwgPFNUUk9ORz5nZXRjaDwvU1RST05HPiB3aWxsIHJldHVybiA8U1RST05HPktFWV9FTlRFUjwvU1RST05HPgorICAgICAgIHdoZW4geW91IHByZXNzIGNvbnRyb2wvTS4KIAotICAgICAgIFdoZW4gIHVzaW5nICA8U1RST05HPmdldGNoPC9TVFJPTkc+LCA8U1RST05HPndnZXRjaDwvU1RST05HPiwgPFNUUk9ORz5tdmdldGNoPC9TVFJPTkc+LCBvciA8U1RST05HPm12d2dldGNoPC9TVFJPTkc+LCBub2NicmVhaworICAgICAgIEdlbmVyYWxseSwgPFNUUk9ORz5LRVlfRU5URVI8L1NUUk9ORz4gZGVub3RlcyB0aGUgY2hhcmFjdGVyKHMpIHNlbnQgYnkgIHRoZQorICAgICAgIDxFTT5FbnRlcjwvRU0+IGtleSBvbiB0aGUgbnVtZXJpYyBrZXlwYWQ6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24gbGlzdHMgdGhlIG1vc3QgdXNlZnVsIGtleXMsCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgIDxFTT5FbnRlcjwvRU0+IGtleSBvbiB0aGUgcmVndWxhciBrZXlib2FyZCBpcyBhbHJlYWR5IGhhbi0KKyAgICAgICAgICAgZGxlZCBieSB0aGUgc3RhbmRhcmQgQVNDSUkgY2hhcmFjdGVycyBmb3IgY2FycmlhZ2UtcmUtCisgICAgICAgICAgIHR1cm4gYW5kIGxpbmUtZmVlZCwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGRlcGVuZGluZyAgb24gIHdoZXRoZXIgPFNUUk9ORz5ubDwvU1RST05HPiBvciA8U1RST05HPm5vbmw8L1NUUk9ORz4gd2FzIGNhbGxlZCwgcHJlc3NpbmcKKyAgICAgICAgICAgIkVudGVyIiBvbiB0aGUgcmVndWxhciBrZXlib2FyZCBtYXkgIHJldHVybiAgZWl0aGVyICBhCisgICAgICAgICAgIGNhcnJpYWdlLXJldHVybiBvciBsaW5lLWZlZWQsIGFuZCBmaW5hbGx5CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICAiRW50ZXIgIG9yICBzZW5kIiBpcyB0aGUgc3RhbmRhcmQgZGVzY3JpcHRpb24gZm9yIHRoaXMKKyAgICAgICAgICAga2V5LgorCisgICAgICAgV2hlbiB1c2luZyA8U1RST05HPmdldGNoPC9TVFJPTkc+LCA8U1RST05HPndnZXRjaDwvU1RST05HPiwgPFNUUk9ORz5tdmdldGNoPC9TVFJPTkc+LCBvciAgPFNUUk9ORz5tdndnZXRjaDwvU1RST05HPiwgIG5vY2JyZWFrCiAgICAgICAgbW9kZSAoPFNUUk9ORz5ub2NicmVhazwvU1RST05HPikgYW5kIGVjaG8gbW9kZSAoPFNUUk9ORz5lY2hvPC9TVFJPTkc+KSBzaG91bGQgbm90IGJlIHVzZWQgYXQKLSAgICAgICB0aGUgIHNhbWUgIHRpbWUuICBEZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSB0dHkgZHJpdmVyCi0gICAgICAgd2hlbiBlYWNoIGNoYXJhY3RlciBpcyB0eXBlZCwgdGhlIHByb2dyYW0gbWF5IHByb2R1Y2UgIHVuLQorICAgICAgIHRoZSBzYW1lIHRpbWUuICBEZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSAgdHR5ICBkcml2ZXIKKyAgICAgICB3aGVuICBlYWNoIGNoYXJhY3RlciBpcyB0eXBlZCwgdGhlIHByb2dyYW0gbWF5IHByb2R1Y2UgdW4tCiAgICAgICAgZGVzaXJhYmxlIHJlc3VsdHMuCiAKICAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5nZXRjaDwvU1RST05HPiwgPFNUUk9ORz5tdmdldGNoPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5tdndnZXRjaDwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAgICAgICAgSGlzdG9yaWNhbGx5LCB0aGUgc2V0IG9mIGtleXBhZCBtYWNyb3Mgd2FzIGxhcmdlbHkgZGVmaW5lZAotICAgICAgIGJ5IHRoZSBleHRyZW1lbHkgZnVuY3Rpb24ta2V5LXJpY2gga2V5Ym9hcmQgIG9mICB0aGUgIEFUJmFtcDtUCi0gICAgICAgNzMwMCwgIGFrYSAgM0IxLCAgYWthIFNhZmFyaSA0LiAgTW9kZXJuIHBlcnNvbmFsIGNvbXB1dGVycwotICAgICAgIHVzdWFsbHkgaGF2ZSBvbmx5IGEgc21hbGwgc3Vic2V0IG9mIHRoZXNlLiAgIElCTSAgUEMtc3R5bGUKLSAgICAgICBjb25zb2xlcyAgIHR5cGljYWxseSAgc3VwcG9ydCAgbGl0dGxlICBtb3JlICB0aGFuICA8U1RST05HPktFWV9VUDwvU1RST05HPiwKLSAgICAgICA8U1RST05HPktFWV9ET1dOPC9TVFJPTkc+LCAgIDxTVFJPTkc+S0VZX0xFRlQ8L1NUUk9ORz4sICAgPFNUUk9ORz5LRVlfUklHSFQ8L1NUUk9ORz4sICAgPFNUUk9ORz5LRVlfSE9NRTwvU1RST05HPiwgICAgPFNUUk9ORz5LRVlfRU5EPC9TVFJPTkc+LAorICAgICAgIGJ5ICB0aGUgIGV4dHJlbWVseSAgZnVuY3Rpb24ta2V5LXJpY2gga2V5Ym9hcmQgb2YgdGhlIEFUJmFtcDtUCisgICAgICAgNzMwMCwgYWthIDNCMSwgYWthIFNhZmFyaSA0LiAgIE1vZGVybiAgcGVyc29uYWwgIGNvbXB1dGVycworICAgICAgIHVzdWFsbHkgIGhhdmUgIG9ubHkgYSBzbWFsbCBzdWJzZXQgb2YgdGhlc2UuICBJQk0gUEMtc3R5bGUKKyAgICAgICBjb25zb2xlcyAgdHlwaWNhbGx5ICBzdXBwb3J0ICBsaXR0bGUgIG1vcmUgIHRoYW4gICA8U1RST05HPktFWV9VUDwvU1RST05HPiwKKyAgICAgICA8U1RST05HPktFWV9ET1dOPC9TVFJPTkc+LCAgICA8U1RST05HPktFWV9MRUZUPC9TVFJPTkc+LCAgIDxTVFJPTkc+S0VZX1JJR0hUPC9TVFJPTkc+LCAgIDxTVFJPTkc+S0VZX0hPTUU8L1NUUk9ORz4sICAgPFNUUk9ORz5LRVlfRU5EPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+S0VZX05QQUdFPC9TVFJPTkc+LCA8U1RST05HPktFWV9QUEFHRTwvU1RST05HPiwgYW5kIGZ1bmN0aW9uIGtleXMgMSB0aHJvdWdoIDEyLiAgVGhlCiAgICAgICAgSW5zIGtleSBpcyB1c3VhbGx5IG1hcHBlZCB0byA8U1RST05HPktFWV9JQzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGUgKmdldCogZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgIHN0YW4tCi0gICAgICAgZGFyZCwgIElzc3VlICA0LiAgIFRoZXkgIHJlYWQgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycyBvbmx5LgotICAgICAgIFRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGV5IHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gIG9uICBmYWlsdXJlLAorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlICAqZ2V0KiBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuLQorICAgICAgIGRhcmQsIElzc3VlIDQuICBUaGV5ICByZWFkICBzaW5nbGUtYnl0ZSAgY2hhcmFjdGVycyAgb25seS4KKyAgICAgICBUaGUgIHN0YW5kYXJkICBzcGVjaWZpZXMgIHRoYXQgdGhleSByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gb24gZmFpbHVyZSwKICAgICAgICBidXQgc3BlY2lmaWVzIG5vIGVycm9yIGNvbmRpdGlvbnMuCiAKLSAgICAgICBUaGUgIGVjaG8gIGJlaGF2aW9yIG9mIHRoZXNlIGZ1bmN0aW9ucyBvbiBpbnB1dCBvZiA8U1RST05HPktFWV88L1NUUk9ORz4gb3IKLSAgICAgICBiYWNrc3BhY2UgY2hhcmFjdGVycyB3YXMgbm90IHNwZWNpZmllZCBpbiB0aGUgIFNWcjQgIGRvY3UtCisgICAgICAgVGhlIGVjaG8gYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zIG9uIGlucHV0IG9mICA8U1RST05HPktFWV88L1NUUk9ORz4gIG9yCisgICAgICAgYmFja3NwYWNlICBjaGFyYWN0ZXJzICB3YXMgbm90IHNwZWNpZmllZCBpbiB0aGUgU1ZyNCBkb2N1LQogICAgICAgIG1lbnRhdGlvbi4gIFRoaXMgZGVzY3JpcHRpb24gaXMgYWRvcHRlZCBmcm9tIHRoZSBYU0kgQ3Vycy0KICAgICAgICBlcyBzdGFuZGFyZC4KIAotICAgICAgIFRoZSBiZWhhdmlvciBvZiA8U1RST05HPmdldGNoPC9TVFJPTkc+IGFuZCBmcmllbmRzIGluIHRoZSBwcmVzZW5jZSBvZiAgaGFuLQotICAgICAgIGRsZWQgIHNpZ25hbHMgIGlzICB1bnNwZWNpZmllZCAgaW4gdGhlIFNWcjQgYW5kIFhTSSBDdXJzZXMKLSAgICAgICBkb2N1bWVudGF0aW9uLiAgVW5kZXIgaGlzdG9yaWNhbCAgY3Vyc2VzICBpbXBsZW1lbnRhdGlvbnMsCi0gICAgICAgaXQgIHZhcmllZCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGltLQotICAgICAgIHBsZW1lbnRhdGlvbiAgb2YgIGhhbmRsZWQgIHNpZ25hbCAgcmVjZWlwdCAgaW50ZXJydXB0cyAgIGEKLSAgICAgICA8U1RST05HPjxBIEhSRUY9InJlYWQuMi5odG1sIj5yZWFkKDIpPC9BPjwvU1RST05HPiAgY2FsbCBpbiBwcm9ncmVzcyBvciBub3QsIGFuZCBhbHNvIChpbiBzb21lIGltcGxlLQotICAgICAgIG1lbnRhdGlvbnMpIGRlcGVuZGluZyBvbiB3aGV0aGVyIGFuIGlucHV0IHRpbWVvdXQgb3IgIG5vbi0KKyAgICAgICBUaGUgIGJlaGF2aW9yIG9mIDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4gYW5kIGZyaWVuZHMgaW4gdGhlIHByZXNlbmNlIG9mIGhhbi0KKyAgICAgICBkbGVkIHNpZ25hbHMgaXMgdW5zcGVjaWZpZWQgaW4gdGhlICBTVnI0ICBhbmQgIFhTSSAgQ3Vyc2VzCisgICAgICAgZG9jdW1lbnRhdGlvbi4gICBVbmRlciAgaGlzdG9yaWNhbCBjdXJzZXMgaW1wbGVtZW50YXRpb25zLAorICAgICAgIGl0IHZhcmllZCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzICBpbS0KKyAgICAgICBwbGVtZW50YXRpb24gICBvZiAgaGFuZGxlZCAgc2lnbmFsICByZWNlaXB0ICBpbnRlcnJ1cHRzICBhCisgICAgICAgPFNUUk9ORz5yZWFkKDIpPC9TVFJPTkc+IGNhbGwgaW4gcHJvZ3Jlc3Mgb3Igbm90LCBhbmQgYWxzbyAoaW4gc29tZSAgaW1wbGUtCisgICAgICAgbWVudGF0aW9ucykgIGRlcGVuZGluZyBvbiB3aGV0aGVyIGFuIGlucHV0IHRpbWVvdXQgb3Igbm9uLQogICAgICAgIGJsb2NraW5nIG1vZGUgaGFzIGJlZW4gc2V0LgogCiAgICAgICAgUHJvZ3JhbW1lcnMgY29uY2VybmVkIGFib3V0IHBvcnRhYmlsaXR5IHNob3VsZCBiZSBwcmVwYXJlZAotICAgICAgIGZvciBlaXRoZXIgb2YgdHdvIGNhc2VzOiAoYSkgc2lnbmFsIHJlY2VpcHQgZG9lcyAgbm90ICBpbi0KLSAgICAgICB0ZXJydXB0ICA8U1RST05HPmdldGNoPC9TVFJPTkc+OyAgKGIpICBzaWduYWwgIHJlY2VpcHQgaW50ZXJydXB0cyA8U1RST05HPmdldGNoPC9TVFJPTkc+IGFuZAotICAgICAgIGNhdXNlcyBpdCB0byByZXR1cm4gRVJSIHdpdGggPFNUUk9ORz5lcnJubzwvU1RST05HPiBzZXQgIHRvICA8U1RST05HPkVJTlRSPC9TVFJPTkc+LiAgIFVuZGVyCi0gICAgICAgdGhlICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gIGltcGxlbWVudGF0aW9uLCBoYW5kbGVkIHNpZ25hbHMgbmV2ZXIgaW50ZXItCisgICAgICAgZm9yICBlaXRoZXIgIG9mIHR3byBjYXNlczogKGEpIHNpZ25hbCByZWNlaXB0IGRvZXMgbm90IGluLQorICAgICAgIHRlcnJ1cHQgPFNUUk9ORz5nZXRjaDwvU1RST05HPjsgKGIpIHNpZ25hbCAgcmVjZWlwdCAgaW50ZXJydXB0cyAgPFNUUk9ORz5nZXRjaDwvU1RST05HPiAgYW5kCisgICAgICAgY2F1c2VzICBpdCAgdG8gIHJldHVybiBFUlIgd2l0aCA8U1RST05HPmVycm5vPC9TVFJPTkc+IHNldCB0byA8U1RST05HPkVJTlRSPC9TVFJPTkc+LiAgVW5kZXIKKyAgICAgICB0aGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGltcGxlbWVudGF0aW9uLCBoYW5kbGVkIHNpZ25hbHMgIG5ldmVyICBpbnRlci0KICAgICAgICBydXB0IDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4uCiAKLSAgICAgICBUaGUgPFNUUk9ORz5oYXNfa2V5PC9TVFJPTkc+IGZ1bmN0aW9uIGlzIHVuaXF1ZSB0byA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4uICAgV2UgIHJlY29tbWVuZAotICAgICAgIHRoYXQgIGFueSAgY29kZSAgdXNpbmcgaXQgYmUgY29uZGl0aW9uYWxpemVkIG9uIHRoZSA8U1RST05HPk5DVVJTLTwvU1RST05HPgorICAgICAgIFRoZSAgPFNUUk9ORz5oYXNfa2V5PC9TVFJPTkc+ICBmdW5jdGlvbiBpcyB1bmlxdWUgdG8gPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+LiAgV2UgcmVjb21tZW5kCisgICAgICAgdGhhdCBhbnkgY29kZSB1c2luZyBpdCBiZSBjb25kaXRpb25hbGl6ZWQgIG9uICB0aGUgIDxTVFJPTkc+TkNVUlMtPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5FU19WRVJTSU9OPC9TVFJPTkc+IGZlYXR1cmUgbWFjcm8uCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lub3B0cy4zeC5odG1sIj5jdXJzX2lub3B0cygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UoM3gpPC9BPjwvU1RST05HPiwKLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfbW92ZS4zeC5odG1sIj5jdXJzX21vdmUoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0icmVzaXpldGVybS4zeC5odG1sIj5yZXNpemV0ZXJtKDN4KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMoM3gpPC9BPjwvU1RST05HPiwgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfbW92ZS4zeC5odG1sIj5jdXJzX21vdmUoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPnJlLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0icmVzaXpldGVybS4zeC5odG1sIj5zaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAgICAgICAgQ29tcGFyYWJsZSAgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGxpLQogICAgICAgIGJyYXJ5IGFyZSBkZXNjcmliZWQgaW4gPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93Y2guM3guaHRtbCI+Y3Vyc19nZXRfd2NoKDN4KTwvQT48L1NUUk9ORz4uCkBAIC0zMjksMTAgKzM4NCwyNCBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtUmVhZGluZy1jaGFyYWN0ZXJzIj5SZWFkaW5nIGNoYXJhY3RlcnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtS2V5cGFkLW1vZGUiPktleXBhZCBtb2RlPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVVuZ2V0dGluZy1jaGFyYWN0ZXJzIj5VbmdldHRpbmcgY2hhcmFjdGVyczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1QcmVkZWZpbmVkLWtleS1jb2RlcyI+UHJlZGVmaW5lZCBrZXktY29kZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVGVzdGluZy1rZXktY29kZXMiPlRlc3Rpbmcga2V5LWNvZGVzPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2dldHN0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0c3RyLjN4Lmh0bWwKaW5kZXggZjVmOWQwNy4uMjA2YjY0ZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0c3RyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0c3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19nZXRzdHIuM3gsdiAxLjE1IDIwMDYvMDEvMTIgMDA6MzA6NTggdG9tIEV4cCBACisgICogQElkOiBjdXJzX2dldHN0ci4zeCx2IDEuMTkgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2dldHN0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfZ2V0c3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2dldHN0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldHN0ci4zeC5odG1sIj5jdXJzX2dldHN0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5nZXRzdHI8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0bnN0cjwvU1RST05HPiwgPFNUUk9ORz53Z2V0c3RyPC9TVFJPTkc+LCA8U1RST05HPndnZXRuc3RyPC9TVFJPTkc+LCA8U1RST05HPm12Z2V0c3RyPC9TVFJPTkc+LCA8U1RST05HPm12Z2V0bnN0cjwvU1RST05HPiwKICAgICAgICA8U1RST05HPm12d2dldHN0cjwvU1RST05HPiwgPFNUUk9ORz5tdndnZXRuc3RyPC9TVFJPTkc+IC0gYWNjZXB0IGNoYXJhY3RlciBzdHJpbmdzIGZyb20KICAgICAgICA8U1RST05HPmN1cnNlczwvU1RST05HPiB0ZXJtaW5hbCBrZXlib2FyZAogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Z2V0c3RyKGNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qc3RyKTs8L1NUUk9ORz4KQEAgLTY3LDcgKzY3LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gPFNUUk9ORz5nZXRzdHI8L1NUUk9ORz4gaXMgZXF1aXZhbGVudCB0byBhIHNlcmllcyBvZiBjYWxscyB0bwogICAgICAgIDxTVFJPTkc+Z2V0Y2g8L1NUUk9ORz4sIHVudGlsIGEgbmV3bGluZSBvciBjYXJyaWFnZSByZXR1cm4gaXMgcmVjZWl2ZWQgKHRoZQogICAgICAgIHRlcm1pbmF0aW5nICBjaGFyYWN0ZXIgIGlzICBub3QgIGluY2x1ZGVkICBpbiB0aGUgcmV0dXJuZWQKQEAgLTkyLDcgKzkyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCBhbiA8U1RST05HPk9LPC9TVFJPTkc+CiAgICAgICAgKFNWcjQgc3BlY2lmaWVzIG9ubHkgImFuIGludGVnZXIgdmFsdWUgIG90aGVyICB0aGFuICA8U1RST05HPkVSUjwvU1RST05HPiIpCiAgICAgICAgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCkBAIC0xMDcsMTQgKzEwNywxOCBAQAogICAgICAgIFNJR1dJTkNIIGludGVycnVwdHMgdGhlIGZ1bmN0aW9uLCBpdCB3aWxsICByZXR1cm4gIDxTVFJPTkc+S0VZX1JFLTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+U0laRTwvU1RST05HPiByYXRoZXIgdGhhbiA8U1RST05HPk9LPC9TVFJPTkc+IG9yIDxTVFJPTkc+RVJSPC9TVFJPTkc+LgogCisgICAgICAgRnVuY3Rpb25zICB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlLQorICAgICAgIG1lbnQgdXNpbmcgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgIHBvc2l0aW9uICBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5nZXRzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZnZXRzdHI8L1NUUk9ORz4sIGFuZCA8U1RST05HPm12d2dldHN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAogICAgICAgIElzc3VlIDQuICBUaGV5ICByZWFkICBzaW5nbGUtYnl0ZSAgY2hhcmFjdGVycyAgb25seS4gICBUaGUKICAgICAgICBzdGFuZGFyZCAgZG9lcyAgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4gIFRoaXMgaW0tCkBAIC0xMzUsMTcgKzEzOSwyMyBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5jdXJzX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0c3RyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19nZXR5eC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfZ2V0eXguM3guaHRtbAppbmRleCAyMmIzYWVjLi4wM2Q4OGEwIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19nZXR5eC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2dldHl4LjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMyICsyNiwzMyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19nZXR5eC4zeCx2IDEuMTYgMjAwNy8wNS8xMiAxNjozNDo0OSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfZ2V0eXguM3gsdiAxLjE4IDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19nZXR5eCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfZ2V0eXggM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfZ2V0eXggM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0eXguM3guaHRtbCI+Y3Vyc19nZXR5eCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXR5eC4zeC5odG1sIj5jdXJzX2dldHl4KDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmdldHl4PC9TVFJPTkc+LCAgPFNUUk9ORz5nZXRwYXJ5eDwvU1RST05HPiwgIDxTVFJPTkc+Z2V0YmVneXg8L1NUUk9ORz4sICA8U1RST05HPmdldG1heHl4PC9TVFJPTkc+IC0gZ2V0IDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGN1cnNvcgogICAgICAgIGFuZCB3aW5kb3cgY29vcmRpbmF0ZXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5nZXR5eChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCk7PC9TVFJPTkc+CkBAIC02Miw3ICs2Miw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5nZXR5eDwvU1RST05HPiBtYWNybyBwbGFjZXMgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIG9mICB0aGUKICAgICAgICBnaXZlbiB3aW5kb3cgaW4gdGhlIHR3byBpbnRlZ2VyIHZhcmlhYmxlcyA8RU0+eTwvRU0+IGFuZCA8RU0+eDwvRU0+LgogCkBAIC03NywyMCArNzcsMjAgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZXNlICBtYWNyb3MgIGFyZSAgdW5kZWZpbmVkICAoaS5lLiwKICAgICAgICB0aGV5ICBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhc3NpZ24tCiAgICAgICAgbWVudCBzdGF0ZW1lbnRzKS4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCBvZiB0aGVzZSBpbnRlcmZhY2VzIGFyZSBtYWNyb3MuICBBICI8U1RST05HPiZhbXA7PC9TVFJPTkc+IiBpcyAgbm90ICBuZWNlcy0KICAgICAgICBzYXJ5IGJlZm9yZSB0aGUgdmFyaWFibGVzIDxFTT55PC9FTT4gYW5kIDxFTT54PC9FTT4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+Z2V0eXg8L1NUUk9ORz4sICA8U1RST05HPmdldHBhcnl4PC9TVFJPTkc+LCAgPFNUUk9ORz5nZXRiZWd5eDwvU1RST05HPiAgYW5kICA8U1RST05HPmdldG1heHl4PC9TVFJPTkc+IG1hY3JvcyBhcmUKICAgICAgICBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCiAKQEAgLTExNSwxNyArMTE1LDIzIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19sZWdhY3kuM3guaHRtbCI+Y3Vyc19sZWdhY3koM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0eXguM3guaHRtbCI+Y3Vyc19nZXR5eCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5fd2NoLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbl93Y2guM3guaHRtbAppbmRleCBhYjQwODNiLi45NjI5NzM0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19pbl93Y2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbl93Y2guM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2luX3djaC4zeCx2IDEuMiAyMDA2LzAyLzI1IDIxOjQyOjIyIHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19pbl93Y2guM3gsdiAxLjUgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2luX3djaCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfaW5fd2NoIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2luX3djaCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbl93Y2guM3guaHRtbCI+Y3Vyc19pbl93Y2goM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luX3djaC4zeC5odG1sIj5jdXJzX2luX3djaCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbl93Y2g8L1NUUk9ORz4sICA8U1RST05HPm12aW5fd2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdndpbl93Y2g8L1NUUk9ORz4sIDxTVFJPTkc+d2luX3djaDwvU1RST05HPiAtIGV4dHJhY3QgYSBjb21wbGV4CiAgICAgICAgY2hhcmFjdGVyIGFuZCByZW5kaXRpb24gZnJvbSBhIHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5fd2NoKGNjaGFyX3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndjdmFsPC9FTT48U1RST05HPik7PC9TVFJPTkc+CkBAIC02Miw0NCArNjIsNTQgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBleHRyYWN0IHRoZSBjb21wbGV4IGNoYXJhY3RlciAgYW5kICByZW5kaS0KICAgICAgICB0aW9uICBmcm9tICB0aGUgIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIG5hbWVkIHdpbmRvdyBpbnRvCiAgICAgICAgdGhlIDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPiBvYmplY3QgcmVmZXJlbmNlZCBieSB3Y3ZhbC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIE5vIGVycm9ycyBhcmUgZGVmaW5lZCBpbiB0aGUgWFNJICBDdXJzZXMgIHN0YW5kYXJkLiAgIFRoaXMKICAgICAgICBpbXBsZW1lbnRhdGlvbiAgY2hlY2tzICBmb3IgIG51bGwgcG9pbnRlcnMsIHJldHVybnMgRVJSIGluCiAgICAgICAgdGhhdCBjYXNlLiAgQWxzbywgdGhlIDxFTT5tdjwvRU0+IHJvdXRpbmVzIGNoZWNrIGZvciAgZXJyb3IgIG1vdmluZwogICAgICAgIHRoZSAgY3Vyc29yLCAgcmV0dXJuaW5nICBFUlIgaW4gdGhhdCBjYXNlLiAgT3RoZXJ3aXNlIHRoZXkKICAgICAgICByZXR1cm4gT0sKIAorICAgICAgIEZ1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciAgbW92ZS0KKyAgICAgICBtZW50ICB1c2luZyAgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IGFsbCBvZiB0aGVzZSByb3V0aW5lcyBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgIHN0YW5kYXJkLAogICAgICAgIElzc3VlIDQuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaCgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5fd2NoLjN4Lmh0bWwiPmN1cnNfaW5fd2NoKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19pbl93Y2hzdHIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2luX3djaHN0ci4zeC5odG1sCmluZGV4IGY1NzYyODYuLmNmYjdlZjYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2luX3djaHN0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2luX3djaHN0ci4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywyNiArMjYsMjcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfaW5fd2Noc3RyLjN4LHYgMS42IDIwMDYvMTIvMDIgMTc6MDM6MDcgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2luX3djaHN0ci4zeCx2IDEuOSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfaW5fd2Noc3RyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19pbl93Y2hzdHIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfaW5fd2Noc3RyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luX3djaHN0ci4zeC5odG1sIj5jdXJzX2luX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5fd2Noc3RyLjN4Lmh0bWwiPmN1cnNfaW5fd2Noc3RyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmluX3djaHN0cjwvU1RST05HPiwgPFNUUk9ORz5pbl93Y2huc3RyPC9TVFJPTkc+LCA8U1RST05HPndpbl93Y2hzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2luX3djaG5zdHI8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5tdmluX3djaHN0cjwvU1RST05HPiwgPFNUUk9ORz5tdmluX3djaG5zdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3aW5fd2Noc3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luX3djaG5zdHI8L1NUUk9ORz4gLQogICAgICAgIGdldCBhbiBhcnJheSBvZiBjb21wbGV4IGNoYXJhY3RlcnMgYW5kIHJlbmRpdGlvbnMgZnJvbSBhCkBAIC01NCw3ICs1NCw3IEBACiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pbl93Y2hzdHIoY2NoYXJfdDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2Noc3RyPC9FTT48U1RST05HPik7PC9TVFJPTkc+CkBAIC02OCw3ICs2OCw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGFuIGFycmF5IG9mIGNvbXBsZXggIGNoYXJhY3RlcnMgIGluCiAgICAgICAgPEVNPndjaHN0cjwvRU0+LCAgc3RhcnRpbmcgIGF0ICB0aGUgIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGluIHRoZQogICAgICAgIG5hbWVkIHdpbmRvdy4gIEF0dHJpYnV0ZXMgKHJlbmRpdGlvbikgYXJlIHN0b3JlZCB3aXRoICB0aGUKQEAgLTc5LDcgKzc5LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IDxTVFJPTkc+d2luX3djaG5zdHI8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogICAgICAgIFJlYWRpbmcgYSBsaW5lIHRoYXQgb3ZlcmZsb3dzIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IDxFTT53Y2gtPC9FTT4KQEAgLTkwLDIwICs5MCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCAgdGhlc2UgIGZ1bmN0aW9ucyAgcmV0dXJuICA8U1RST05HPk9LPC9TVFJPTkc+LgogICAgICAgIE90aGVyd2lzZSwgdGhleSByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4uCiAKKyAgICAgICBGdW5jdGlvbnMgIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmUtCisgICAgICAgbWVudCB1c2luZyA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSAgcG9zaXRpb24gIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKwogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgWFNJICBDdXJzZXMgZGVmaW5lcyBubyBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZS0KICAgICAgICBtZW50YXRpb24gY2hlY2tzIGZvciBudWxsIHBvaW50ZXJzLCByZXR1cm5pbmcgRVJSIGluICB0aGF0CiAgICAgICAgY2FzZS4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIEZ1bmN0aW9uczogIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbl93Y2guM3guaHRtbCI+Y3Vyc19pbl93Y2goM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnN0ci4zeC5odG1sIj5jdXJzX2luc3RyKDN4KTwvQT48L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lud3N0ci4zeC5odG1sIj5jdXJzX2lud3N0cigzeCk8L0E+PC9TVFJPTkc+IDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoc3RyLjN4Lmh0bWwiPmN1cnNfaW5jaHN0cigzeCk8L0E+PC9TVFJPTkc+CiAKQEAgLTExMSwxMCArMTE1LDE2IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luX3djaHN0ci4zeC5odG1sIj5jdXJzX2luX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5jaC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5jaC4zeC5odG1sCmluZGV4IGQ2MDE4MDQuLmVjMWUyYzcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2luY2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbmNoLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMiArMjcsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfaW5jaC4zeCx2IDEuMTMgMjAwNi8xMi8wMiAxNjo1ODo1NSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfaW5jaC4zeCx2IDEuMTcgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2luY2ggM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2luY2ggM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfaW5jaCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luY2guM3guaHRtbCI+Y3Vyc19pbmNoKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmluY2g8L1NUUk9ORz4sICA8U1RST05HPndpbmNoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdmluY2g8L1NUUk9ORz4sICA8U1RST05HPm12d2luY2g8L1NUUk9ORz4gIC0gIGdldCAgYSAgY2hhcmFjdGVyICBhbmQKICAgICAgICBhdHRyaWJ1dGVzIGZyb20gYSA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aW5kb3cKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPmluY2godm9pZCk7PC9TVFJPTkc+CkBAIC02Myw3ICs2Myw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gdGhlIGNoYXJhY3Rlciwgb2YgIHR5cGUgIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+LCAgYXQKICAgICAgICB0aGUgICBjdXJyZW50ICBwb3NpdGlvbiAgaW4gIHRoZSAgbmFtZWQgIHdpbmRvdy4gICBJZiAgYW55CiAgICAgICAgYXR0cmlidXRlcyBhcmUgc2V0IGZvciB0aGF0ICBwb3NpdGlvbiwgIHRoZWlyICB2YWx1ZXMgIGFyZQpAQCAtNzEsNyArNzEsOSBAQAogICAgICAgIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPiBjYW4gYmUgdXNlZCB3aXRoIHRoZSA8U1RST05HPiZhbXA7PC9TVFJPTkc+IChsb2dpY2FsICBBTkQpICBvcGVyYXRvcgogICAgICAgIHRvIGV4dHJhY3QgdGhlIGNoYXJhY3RlciBvciBhdHRyaWJ1dGVzIGFsb25lLgogCi0gICA8U1RST05HPkF0dHJpYnV0ZXM8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQXR0cmlidXRlcyI+QXR0cmlidXRlczwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICBmb2xsb3dpbmcgIGJpdC1tYXNrcyAgbWF5ICBiZSAgQU5ELWVkIHdpdGggY2hhcmFjdGVycwogICAgICAgIHJldHVybmVkIGJ5IDxTVFJPTkc+d2luY2g8L1NUUk9ORz4uCiAKQEAgLTgxLDE4ICs4MywyNSBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBhbGwgb2YgdGhlc2Ugcm91dGluZXMgbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAgICAgICAgQ29tcGFyYWJsZSAgZnVuY3Rpb25zICBpbiAgdGhlICB3aWRlLWNoYXJhY3RlciAgKG5jdXJzZXN3KQpAQCAtMTAyLDEwICsxMTEsMjAgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtQXR0cmlidXRlcyI+QXR0cmlidXRlczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19pbmNoc3RyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbmNoc3RyLjN4Lmh0bWwKaW5kZXggMWI3M2NjMy4uYjIzMTU5NSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5jaHN0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2luY2hzdHIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2luY2hzdHIuM3gsdiAxLjEyIDIwMDYvMTIvMDIgMTc6MDA6NTggdG9tIEV4cCBACisgICogQElkOiBjdXJzX2luY2hzdHIuM3gsdiAxLjE1IDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19pbmNoc3RyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19pbmNoc3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2luY2hzdHIgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoc3RyLjN4Lmh0bWwiPmN1cnNfaW5jaHN0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbmNoc3RyPC9TVFJPTkc+LCA8U1RST05HPmluY2huc3RyPC9TVFJPTkc+LCA8U1RST05HPndpbmNoc3RyPC9TVFJPTkc+LCA8U1RST05HPndpbmNobnN0cjwvU1RST05HPiwgPFNUUk9ORz5tdmluY2hzdHI8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5tdmluY2huc3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luY2hzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3aW5jaG5zdHI8L1NUUk9ORz4gLSBnZXQgYSBzdHJpbmcgb2YKICAgICAgICBjaGFyYWN0ZXJzIChhbmQgYXR0cmlidXRlcykgZnJvbSBhIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5jaHN0cihjaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz4qY2hzdHIpOzwvU1RST05HPgpAQCAtNjgsNyArNjgsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgcmV0dXJuIGEgTlVMTC10ZXJtaW5hdGVkICBhcnJheSAgb2YgIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+CiAgICAgICAgcXVhbnRpdGllcywgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGluIHRoZQogICAgICAgIG5hbWVkIHdpbmRvdyBhbmQgZW5kaW5nIGF0IHRoZSByaWdodCBtYXJnaW4gb2YgdGhlIHdpbmRvdy4KQEAgLTgxLDcgKzgxLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiAgZmFpbHVyZSAgYW5kICBhbgogICAgICAgIGludGVnZXIgIHZhbHVlICBvdGhlciAgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbgogICAgICAgICh0aGUgbnVtYmVyIG9mICBjaGFyYWN0ZXJzICByZXRyaWV2ZWQsICBleGNsdXNpdmUgIG9mICB0aGUKQEAgLTkxLDE4ICs5MSwyMiBAQAogICAgICAgIGlzIG51bGwsIG5vIGRhdGEgaXMgcmV0dXJuZWQsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzICB6ZS0KICAgICAgICByby4KIAorICAgICAgIEZ1bmN0aW9ucyAgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZS0KKyAgICAgICBtZW50IHVzaW5nIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlICBwb3NpdGlvbiAgaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSAgdGhhdCAgYWxsICByb3V0aW5lcyAgZXhjZXB0IDxTVFJPTkc+d2luY2huc3RyPC9TVFJPTkc+IG1heSBiZSBtYWNyb3MuCi0gICAgICAgU1ZyNCBkb2VzIG5vdCBkb2N1bWVudCB3aGV0aGVyIHRoZSByZXN1bHQgc3RyaW5nIGlzIDAtdGVyLQotICAgICAgIG1pbmF0ZWQ7IGl0IGRvZXMgbm90IGRvY3VtZW50IHdoZXRoZXIgYSBsZW5ndGggbGltaXQgYXJndS0KLSAgICAgICBtZW50IGluY2x1ZGVzIGFueSB0cmFpbGluZyAwOyBhbmQgaXQgZG9lcyBub3QgZG9jdW1lbnQgdGhlCi0gICAgICAgbWVhbmluZyBvZiB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAgIFNWcjQgZG9lcyBub3QgZG9jdW1lbnQgd2hldGhlciB0aGUgcmVzdWx0IHN0cmluZyBpcyAgemVyby0KKyAgICAgICB0ZXJtaW5hdGVkOyAgaXQgIGRvZXMgIG5vdCBkb2N1bWVudCB3aGV0aGVyIGEgbGVuZ3RoIGxpbWl0CisgICAgICAgYXJndW1lbnQgaW5jbHVkZXMgYW55IHRyYWlsaW5nIDA7IGFuZCBpdCBkb2VzIG5vdCBkb2N1bWVudAorICAgICAgIHRoZSBtZWFuaW5nIG9mIHRoZSByZXR1cm4gdmFsdWUuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSAgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsCiAgICAgICAgSXNzdWUgNC4gIEl0IGlzIG5vIG1vcmUgc3BlY2lmaWMgdGhhbiB0aGUgU1ZyNCAgZG9jdW1lbnRhLQogICAgICAgIHRpb24gb24gdGhlIHRyYWlsaW5nIDAuICBJdCBkb2VzIHNwZWNpZnkgdGhhdCB0aGUgc3VjY2Vzcy0KQEAgLTExMCw3ICsxMTQsNyBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5jaC4zeC5odG1sIj5jdXJzX2luY2goM3gpPC9BPjwvU1RST05HPi4KIAogICAgICAgIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpICBsaS0KQEAgLTEyMCwxMCArMTI0LDE2IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5jaHN0ci4zeC5odG1sIj5jdXJzX2luY2hzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbAppbmRleCBmNWZkNTQ0Li4zYzQ3YWM2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw0NCArMjYsNDggQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfaW5pdHNjci4zeCx2IDEuMTQgMjAwNS8wNS8xNSAxNjoxODowMSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfaW5pdHNjci4zeCx2IDEuMjQgMjAxNS8wNy8yMSAyMzowMTozOCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2luaXRzY3IgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2luaXRzY3IgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfaW5pdHNjciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4sIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiwgPFNUUk9ORz5lbmR3aW48L1NUUk9ORz4sIDxTVFJPTkc+aXNlbmR3aW48L1NUUk9ORz4sIDxTVFJPTkc+c2V0X3Rlcm08L1NUUk9ORz4sIDxTVFJPTkc+ZGVsc2NyZWVuPC9TVFJPTkc+IC0KICAgICAgICA8U1RST05HPmN1cnNlczwvU1RST05HPiBzY3JlZW4gaW5pdGlhbGl6YXRpb24gYW5kIG1hbmlwdWxhdGlvbiByb3V0aW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KmluaXRzY3Iodm9pZCk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5lbmR3aW4odm9pZCk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aXNlbmR3aW4odm9pZCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5TQ1JFRU48L1NUUk9ORz4gPFNUUk9ORz4qbmV3dGVybShjaGFyPC9TVFJPTkc+IDxTVFJPTkc+KnR5cGUsPC9TVFJPTkc+IDxTVFJPTkc+RklMRTwvU1RST05HPiA8U1RST05HPipvdXRmZCw8L1NUUk9ORz4gPFNUUk9ORz5GSUxFPC9TVFJPTkc+IDxTVFJPTkc+KmluZmQpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+U0NSRUVOPC9TVFJPTkc+IDxTVFJPTkc+KnNldF90ZXJtKFNDUkVFTjwvU1RST05HPiA8U1RST05HPipuZXcpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPmRlbHNjcmVlbihTQ1JFRU4qPC9TVFJPTkc+IDxTVFJPTkc+c3ApOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+U0NSRUVOPC9TVFJPTkc+IDxTVFJPTkc+Km5ld3Rlcm0oY2hhcjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+dHlwZTwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+RklMRTwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3V0ZmQ8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPkZJTEU8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPmluZmQ8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPlNDUkVFTjwvU1RST05HPiA8U1RST05HPipzZXRfdGVybShTQ1JFRU48L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm5ldzwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPmRlbHNjcmVlbihTQ1JFRU4qPC9TVFJPTkc+IDxFTT5zcDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWluaXRzY3IiPmluaXRzY3I8L2E+PC9IMz48UFJFPgogICAgICAgIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiBpcyBub3JtYWxseSB0aGUgZmlyc3QgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcm91dGluZSB0byBjYWxsICB3aGVuCiAgICAgICAgaW5pdGlhbGl6aW5nICBhIHByb2dyYW0uICBBIGZldyBzcGVjaWFsIHJvdXRpbmVzIHNvbWV0aW1lcwogICAgICAgIG5lZWQgdG8gYmUgY2FsbGVkIGJlZm9yZSBpdDsgdGhlc2UgYXJlICA8U1RST05HPnNsa19pbml0PC9TVFJPTkc+LCAgPFNUUk9ORz5maWx0ZXI8L1NUUk9ORz4sCkBAIC03OCw2ICs4MSw5IEBACiAgICAgICAgZGFyZCBlcnJvciBhbmQgZXhpdHM7IG90aGVyd2lzZSwgYSBwb2ludGVyIGlzIHJldHVybmVkICB0bwogICAgICAgIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLW5ld3Rlcm0iPm5ld3Rlcm08L2E+PC9IMz48UFJFPgogICAgICAgIEEgIHByb2dyYW0gIHRoYXQgIG91dHB1dHMgdG8gbW9yZSB0aGFuIG9uZSB0ZXJtaW5hbCBzaG91bGQKICAgICAgICB1c2UgdGhlIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiAgcm91dGluZSAgZm9yICBlYWNoICB0ZXJtaW5hbCAgaW5zdGVhZCAgb2YKICAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4uICBBIHByb2dyYW0gdGhhdCBuZWVkcyB0byBpbnNwZWN0IGNhcGFiaWxpdGllcywgc28KQEAgLTg2LDI3ICs5Miw0OCBAQAogICAgICAgIHVzZSA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4uICBUaGUgcm91dGluZSA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4gc2hvdWxkICBiZSAgY2FsbGVkICBvbmNlCiAgICAgICAgZm9yIGVhY2ggdGVybWluYWwuICBJdCByZXR1cm5zIGEgdmFyaWFibGUgb2YgdHlwZSA8U1RST05HPlNDUkVFTjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4KICAgICAgICB3aGljaCBzaG91bGQgYmUgc2F2ZWQgYXMgYSAgcmVmZXJlbmNlICB0byAgdGhhdCAgdGVybWluYWwuCi0gICAgICAgVGhlICBhcmd1bWVudHMgIGFyZSB0aGUgPEVNPnR5cGU8L0VNPiBvZiB0aGUgdGVybWluYWwgdG8gYmUgdXNlZCBpbgotICAgICAgIHBsYWNlIG9mIDxTVFJPTkc+JFRFUk08L1NUUk9ORz4sIGEgZmlsZSBwb2ludGVyIGZvciBvdXRwdXQgdG8gdGhlIHRlcm1pbmFsLAotICAgICAgIGFuZCAgYW5vdGhlciAgZmlsZSBwb2ludGVyIGZvciBpbnB1dCBmcm9tIHRoZSB0ZXJtaW5hbCAoaWYKLSAgICAgICA8RU0+dHlwZTwvRU0+IGlzIDxTVFJPTkc+TlVMTDwvU1RST05HPiwgPFNUUk9ORz4kVEVSTTwvU1RST05HPiB3aWxsIGJlIHVzZWQpLiAgVGhlIHByb2dyYW0gbXVzdCAgYWxzbwotICAgICAgIGNhbGwgIDxTVFJPTkc+ZW5kd2luPC9TVFJPTkc+ICBmb3IgIGVhY2ggdGVybWluYWwgYmVpbmcgdXNlZCBiZWZvcmUgZXhpdGluZwotICAgICAgIGZyb20gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4uICBJZiA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4gaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGZvciAgdGhlCi0gICAgICAgc2FtZSAgdGVybWluYWwsIHRoZSBmaXJzdCB0ZXJtaW5hbCByZWZlcnJlZCB0byBtdXN0IGJlIHRoZQotICAgICAgIGxhc3Qgb25lIGZvciB3aGljaCA8U1RST05HPmVuZHdpbjwvU1RST05HPiBpcyBjYWxsZWQuCisgICAgICAgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+J3MgYXJndW1lbnRzIGFyZQogCi0gICAgICAgQSBwcm9ncmFtIHNob3VsZCBhbHdheXMgY2FsbCA8U1RST05HPmVuZHdpbjwvU1RST05HPiBiZWZvcmUgZXhpdGluZyBvciAgZXMtCi0gICAgICAgY2FwaW5nICBmcm9tICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgbW9kZSAgdGVtcG9yYXJpbHkuICBUaGlzIHJvdXRpbmUgcmUtCi0gICAgICAgc3RvcmVzIHR0eSBtb2RlcywgbW92ZXMgdGhlIGN1cnNvciB0byB0aGUgbG93ZXIgIGxlZnQtaGFuZAotICAgICAgIGNvcm5lciAgb2YgIHRoZSAgc2NyZWVuICBhbmQgIHJlc2V0cyB0aGUgdGVybWluYWwgaW50byB0aGUKLSAgICAgICBwcm9wZXIgbm9uLXZpc3VhbCBtb2RlLiAgQ2FsbGluZyA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gb3IgPFNUUk9ORz5kb3VwZGF0ZTwvU1RST05HPiBhZnRlcgotICAgICAgIGEgIHRlbXBvcmFyeSAgZXNjYXBlICBjYXVzZXMgIHRoZSBwcm9ncmFtIHRvIHJlc3VtZSB2aXN1YWwKLSAgICAgICBtb2RlLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSA8RU0+dHlwZTwvRU0+IG9mIHRoZSB0ZXJtaW5hbCB0byBiZSB1c2VkIGluIHBsYWNlIG9mIDxTVFJPTkc+JFRFUk08L1NUUk9ORz4sCiAKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIGZpbGUgcG9pbnRlciBmb3Igb3V0cHV0IHRvIHRoZSB0ZXJtaW5hbCwgYW5kCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhbm90aGVyIGZpbGUgcG9pbnRlciBmb3IgaW5wdXQgZnJvbSB0aGUgdGVybWluYWwKKworICAgICAgIElmIHRoZSA8RU0+dHlwZTwvRU0+IHBhcmFtZXRlciBpcyA8U1RST05HPk5VTEw8L1NUUk9ORz4sIDxTVFJPTkc+JFRFUk08L1NUUk9ORz4gd2lsbCBiZSB1c2VkLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWVuZHdpbiI+ZW5kd2luPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIHByb2dyYW0gbXVzdCBhbHNvIGNhbGwgPFNUUk9ORz5lbmR3aW48L1NUUk9ORz4gZm9yIGVhY2ggdGVybWluYWwgYmVpbmcKKyAgICAgICB1c2VkIGJlZm9yZSBleGl0aW5nIGZyb20gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4uICAgSWYgIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiAgaXMgIGNhbGxlZAorICAgICAgIG1vcmUgIHRoYW4gIG9uY2UgZm9yIHRoZSBzYW1lIHRlcm1pbmFsLCB0aGUgZmlyc3QgdGVybWluYWwKKyAgICAgICByZWZlcnJlZCB0byBtdXN0IGJlIHRoZSAgbGFzdCAgb25lICBmb3IgIHdoaWNoICA8U1RST05HPmVuZHdpbjwvU1RST05HPiAgaXMKKyAgICAgICBjYWxsZWQuCisKKyAgICAgICBBICBwcm9ncmFtIHNob3VsZCBhbHdheXMgY2FsbCA8U1RST05HPmVuZHdpbjwvU1RST05HPiBiZWZvcmUgZXhpdGluZyBvciBlcy0KKyAgICAgICBjYXBpbmcgZnJvbSA8U1RST05HPmN1cnNlczwvU1RST05HPiBtb2RlIHRlbXBvcmFyaWx5LiAgVGhpcyByb3V0aW5lCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICByZXN0b3JlcyB0dHkgbW9kZXMsCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBtb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSBsb3dlciBsZWZ0LWhhbmQgY29ybmVyIG9mICB0aGUKKyAgICAgICAgICAgc2NyZWVuIGFuZAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgcmVzZXRzIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcm9wZXIgbm9uLXZpc3VhbCBtb2RlLgorCisgICAgICAgQ2FsbGluZyA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gb3IgPFNUUk9ORz5kb3VwZGF0ZTwvU1RST05HPiBhZnRlciBhIHRlbXBvcmFyeSBlc2NhcGUgY2F1cy0KKyAgICAgICBlcyB0aGUgcHJvZ3JhbSB0byByZXN1bWUgdmlzdWFsIG1vZGUuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtaXNlbmR3aW4iPmlzZW5kd2luPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5pc2VuZHdpbjwvU1RST05HPiByb3V0aW5lICByZXR1cm5zICA8U1RST05HPlRSVUU8L1NUUk9ORz4gIGlmICA8U1RST05HPmVuZHdpbjwvU1RST05HPiAgaGFzICBiZWVuCiAgICAgICAgY2FsbGVkIHdpdGhvdXQgYW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiwgYW5kIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4KICAgICAgICBvdGhlcndpc2UuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtc2V0X3Rlcm0iPnNldF90ZXJtPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5zZXRfdGVybTwvU1RST05HPiByb3V0aW5lIGlzIHVzZWQgdG8gc3dpdGNoICBiZXR3ZWVuICBkaWZmZXJlbnQKICAgICAgICB0ZXJtaW5hbHMuICAgVGhlIHNjcmVlbiByZWZlcmVuY2UgPFNUUk9ORz5uZXc8L1NUUk9ORz4gYmVjb21lcyB0aGUgbmV3IGN1ci0KICAgICAgICByZW50IHRlcm1pbmFsLiAgVGhlIHByZXZpb3VzIHRlcm1pbmFsIGlzIHJldHVybmVkICBieSAgdGhlCkBAIC0xMTQsNiArMTQxLDkgQEAKICAgICAgICA8U1RST05HPlNDUkVFTjwvU1RST05HPiBwb2ludGVyczsgYWxsIG90aGVyIHJvdXRpbmVzIGFmZmVjdCBvbmx5ICB0aGUgIGN1ci0KICAgICAgICByZW50IHRlcm1pbmFsLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWRlbHNjcmVlbiI+ZGVsc2NyZWVuPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+ZGVsc2NyZWVuPC9TVFJPTkc+ICByb3V0aW5lICBmcmVlcyBzdG9yYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUKICAgICAgICA8U1RST05HPlNDUkVFTjwvU1RST05HPiBkYXRhIHN0cnVjdHVyZS4gIFRoZSA8U1RST05HPmVuZHdpbjwvU1RST05HPiAgcm91dGluZSAgZG9lcyAgbm90ICBkbwogICAgICAgIHRoaXMsIHNvIDxTVFJPTkc+ZGVsc2NyZWVuPC9TVFJPTkc+IHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgPFNUUk9ORz5lbmR3aW48L1NUUk9ORz4gaWYgYSBwYXItCkBAIC0xMjEsNDcgKzE1MSwxNjQgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZW5kd2luPC9TVFJPTkc+IHJldHVybnMgdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlICBhbmQgIDxTVFJPTkc+T0s8L1NUUk9ORz4gIHVwb24KICAgICAgICBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCiAKICAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBwb2ludGVycyBhbHdheXMgcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPiBvbiBlcnJvci4KIAotICAgICAgIFgvT3BlbiBkZWZpbmVzIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiAgdGhpcyAgaW1wbGVtZW50YS0KLSAgICAgICB0aW9uICA8U1RST05HPmVuZHdpbjwvU1RST05HPiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCB3YXMgbm90IGluaS0KLSAgICAgICB0aWFsaXplZC4KKyAgICAgICBYL09wZW4gIGRlZmluZXMgIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiB0aGlzIGltcGxlbWVudGEtCisgICAgICAgdGlvbgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5lbmR3aW48L1NUUk9ORz4gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgd2FzICBub3QgIGluaS0KKyAgICAgICAgICAgdGlhbGl6ZWQuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4gcmV0dXJucyBhbiBlcnJvciBpZiBpdCBjYW5ub3QgYWxsb2NhdGUgdGhlIGRhLQorICAgICAgICAgICB0YSBzdHJ1Y3R1cmVzIGZvciB0aGUgc2NyZWVuLCAgb3IgIGZvciAgdGhlICB0b3AtbGV2ZWwKKyAgICAgICAgICAgd2luZG93cyAgd2l0aGluICB0aGUgIHNjcmVlbiwgaS5lLiwgPFNUUk9ORz5jdXJzY3I8L1NUUk9ORz4sIDxTVFJPTkc+bmV3c2NyPC9TVFJPTkc+LCBvcgorICAgICAgICAgICA8U1RST05HPnN0ZHNjcjwvU1RST05HPi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+c2V0X3Rlcm08L1NUUk9ORz4gcmV0dXJucyBubyBlcnJvci4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gYW5kIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKLSAgICAgICBJc3N1ZSA0LiAgSXQgc3BlY2lmaWVzIHRoYXQgcG9ydGFibGUgYXBwbGljYXRpb25zIG11c3Qgbm90Ci0gICAgICAgY2FsbCA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gbW9yZSB0aGFuIG9uY2UuCis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgd2VyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsCisgICAgICAgSXNzdWUgNC4gIEFzIG9mIDIwMTUsIHRoZSBjdXJyZW50IGRvY3VtZW50IGlzIFgvT3BlbiBDdXJzLQorICAgICAgIGVzLCBJc3N1ZSA3LgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLURpZmZlcmVuY2VzIj5EaWZmZXJlbmNlczwvYT48L0gzPjxQUkU+CisgICAgICAgWC9PcGVuIHNwZWNpZmllcyB0aGF0IHBvcnRhYmxlIGFwcGxpY2F0aW9ucyBtdXN0IG5vdCAgY2FsbAorICAgICAgIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiBtb3JlIHRoYW4gb25jZToKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSAgcG9ydGFibGUgIHdheSAgdG8gdXNlIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiBpcyBvbmNlIG9ubHksIHVzaW5nCisgICAgICAgICAgIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiAoc2VlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+KSB0byByZXN0b3JlICB0aGUgIHNjcmVlbgorICAgICAgICAgICBhZnRlciA8U1RST05HPmVuZHdpbjwvU1RST05HPi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoaXMgaW1wbGVtZW50YXRpb24gYWxsb3dzIHVzaW5nIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiBhZnRlciA8U1RST05HPmVuZHdpbjwvU1RST05HPi4KIAogICAgICAgIE9sZCB2ZXJzaW9ucyBvZiBjdXJzZXMsIGUuZy4sIEJTRCA0LjQsIG1heSBoYXZlIHJldHVybmVkIGEKLSAgICAgICBudWxsICBwb2ludGVyICBmcm9tICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gIHdoZW4gIGFuICBlcnJvciBpcyBkZXRlY3RlZCwKLSAgICAgICByYXRoZXIgdGhhbiBleGl0aW5nLiAgSXQgaXMgc2FmZSBidXQgIHJlZHVuZGFudCAgdG8gIGNoZWNrCisgICAgICAgbnVsbCBwb2ludGVyIGZyb20gIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiAgd2hlbiAgYW4gIGVycm9yICBpcyAgZGV0ZWN0ZWQsCisgICAgICAgcmF0aGVyICB0aGFuICBleGl0aW5nLiAgIEl0IGlzIHNhZmUgYnV0IHJlZHVuZGFudCB0byBjaGVjawogICAgICAgIHRoZSByZXR1cm4gdmFsdWUgb2YgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IGluIFhTSSBDdXJzZXMuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDM+PGEgbmFtZT0iaDMtVW5zZXQtVEVSTS1WYXJpYWJsZSI+VW5zZXQgVEVSTSBWYXJpYWJsZTwvYT48L0gzPjxQUkU+CisgICAgICAgSWYgdGhlIFRFUk0gdmFyaWFibGUgaXMgbWlzc2luZyBvciBlbXB0eSwgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IHVzZXMgdGhlCisgICAgICAgdmFsdWUgICJ1bmtub3duIiwgd2hpY2ggbm9ybWFsbHkgY29ycmVzcG9uZHMgdG8gYSB0ZXJtaW5hbAorICAgICAgIGVudHJ5IHdpdGggdGhlIDxFTT5nZW5lcmljPC9FTT4gKDxFTT5nbjwvRU0+KSBjYXBhYmlsaXR5LiAgIEdlbmVyaWMgIGVudHJpZXMKKyAgICAgICBhcmUgZGV0ZWN0ZWQgYnkgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gKHNlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+KSBhbmQgY2FuLQorICAgICAgIG5vdCBiZSB1c2VkIGZvciBmdWxsLXNjcmVlbiBvcGVyYXRpb24uICBPdGhlciAgaW1wbGVtZW50YS0KKyAgICAgICB0aW9ucyAgbWF5IGhhbmRsZSBhIG1pc3NpbmcvZW1wdHkgVEVSTSB2YXJpYWJsZSBkaWZmZXJlbnQtCisgICAgICAgbHkuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtU2lnbmFsLUhhbmRsZXJzIj5TaWduYWwgSGFuZGxlcnM8L2E+PC9IMz48UFJFPgorICAgICAgIFF1b3RpbmcgZnJvbSBYL09wZW4gQ3Vyc2VzLCBzZWN0aW9uIDMuMS4xOgorCisgICAgICAgICAgICA8RU0+Q3Vyc2VzPC9FTT4gPEVNPmltcGxlbWVudGF0aW9uczwvRU0+IDxFTT5tYXk8L0VNPiA8RU0+cHJvdmlkZTwvRU0+IDxFTT5mb3I8L0VNPiAgPEVNPnNwZWNpYWw8L0VNPiAgPEVNPmhhbi08L0VNPgorICAgICAgICAgICAgPEVNPmRsaW5nPC9FTT4gIDxFTT5vZjwvRU0+ICA8RU0+dGhlPC9FTT4gPEVNPlNJR0lOVCw8L0VNPiA8RU0+U0lHUVVJVDwvRU0+IDxFTT5hbmQ8L0VNPiA8RU0+U0lHVFNUUDwvRU0+IDxFTT5zaWduYWxzPC9FTT4gPEVNPmlmPC9FTT4KKyAgICAgICAgICAgIDxFTT50aGVpcjwvRU0+IDxFTT5kaXNwb3NpdGlvbjwvRU0+IDxFTT5pczwvRU0+IDxFTT5TSUc8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5ERkw8L0VNPiA8RU0+YXQ8L0VNPiA8RU0+dGhlPC9FTT4gPEVNPnRpbWU8L0VNPiA8U1RST05HPmluaXRzY3IoKTwvU1RST05HPiA8RU0+aXM8L0VNPgorICAgICAgICAgICAgPEVNPmNhbGxlZDwvRU0+IDxTVFJPTkc+Li4uPC9TVFJPTkc+CisKKyAgICAgICAgICAgIDxFTT5Bbnk8L0VNPiAgPEVNPnNwZWNpYWw8L0VNPiA8RU0+aGFuZGxpbmc8L0VNPiA8RU0+Zm9yPC9FTT4gPEVNPnRoZXNlPC9FTT4gPEVNPnNpZ25hbHM8L0VNPiA8RU0+bWF5PC9FTT4gPEVNPnJlbWFpbjwvRU0+IDxFTT5pbjwvRU0+CisgICAgICAgICAgICA8RU0+ZWZmZWN0PC9FTT4gPEVNPmZvcjwvRU0+IDxFTT50aGU8L0VNPiA8RU0+bGlmZTwvRU0+ICA8RU0+b2Y8L0VNPiAgPEVNPnRoZTwvRU0+ICA8RU0+cHJvY2VzczwvRU0+ICA8RU0+b3I8L0VNPiAgPEVNPnVudGlsPC9FTT4gIDxFTT50aGU8L0VNPgorICAgICAgICAgICAgPEVNPnByb2Nlc3M8L0VNPiA8RU0+Y2hhbmdlczwvRU0+IDxFTT50aGU8L0VNPiA8RU0+ZGlzcG9zaXRpb248L0VNPiA8RU0+b2Y8L0VNPiA8RU0+dGhlPC9FTT4gPEVNPnNpZ25hbC48L0VNPgorCisgICAgICAgICAgICA8RU0+Tm9uZTwvRU0+ICA8RU0+b2Y8L0VNPiA8RU0+dGhlPC9FTT4gPEVNPkN1cnNlczwvRU0+IDxFTT5mdW5jdGlvbnM8L0VNPiA8RU0+YXJlPC9FTT4gPEVNPnJlcXVpcmVkPC9FTT4gPEVNPnRvPC9FTT4gPEVNPmJlPC9FTT4gPEVNPnNhZmU8L0VNPgorICAgICAgICAgICAgPEVNPndpdGg8L0VNPiA8RU0+cmVzcGVjdDwvRU0+IDxFTT50bzwvRU0+IDxFTT5zaWduYWxzPC9FTT4gLi4uCisKKyAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uICBlc3RhYmxpc2hlcyAgc2lnbmFsICBoYW5kbGVycyAgZHVyaW5nCisgICAgICAgaW5pdGlhbGl6YXRpb24sICBlLmcuLCAgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+ICBvciA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4uICBBcHBsaWNhdGlvbnMKKyAgICAgICB3aGljaCBtdXN0IGhhbmRsZSB0aGVzZSBzaWduYWxzIHNob3VsZCBzZXQgdXAgIHRoZSAgY29ycmUtCisgICAgICAgc3BvbmRpbmcgaGFuZGxlcnMgPEVNPmFmdGVyPC9FTT4gaW5pdGlhbGl6aW5nIHRoZSBsaWJyYXJ5OgorCisgICAgICAgPFNUUk9ORz5TSUdJTlQ8L1NUUk9ORz4KKyAgICAgICAgICAgIFRoZSAgaGFuZGxlciAgPEVNPmF0dGVtcHRzPC9FTT4gdG8gY2xlYW51cCB0aGUgc2NyZWVuIG9uIGV4aXQuCisgICAgICAgICAgICBBbHRob3VnaCBpdCA8RU0+dXN1YWxseTwvRU0+IHdvcmtzIGFzIGV4cGVjdGVkLCB0aGVyZSBhcmUgbGltLQorICAgICAgICAgICAgaXRhdGlvbnM6CisKKyAgICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFdhbGtpbmcgdGhlIDxTVFJPTkc+U0NSRUVOPC9TVFJPTkc+IGxpc3QgaXMgdW5zYWZlLCBzaW5jZSBhbGwgbGlzdAorICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgaXMgZG9uZSB3aXRob3V0IGFueSBzaWduYWwgYmxvY2tpbmcuCisKKyAgICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIE9uICBzeXN0ZW1zICB3aGljaCAgaGF2ZSAgPFNUUk9ORz5SRUVOVFJBTlQ8L1NUUk9ORz4gIHR1cm5lZCAgIG9uLAorICAgICAgICAgICAgICAgIDxTVFJPTkc+c2V0X3Rlcm08L1NUUk9ORz4gIHVzZXMgIGZ1bmN0aW9ucyB3aGljaCBjb3VsZCBkZWFkbG9jayBvcgorICAgICAgICAgICAgICAgIG1pc2JlaGF2ZSBpbiBvdGhlciB3YXlzLgorCisgICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmVuZHdpbjwvU1RST05HPiBjYWxscyBvdGhlciBmdW5jdGlvbnMsIG1hbnkgb2YgIHdoaWNoICB1c2UKKyAgICAgICAgICAgICAgICBzdGRpbyBvciBvdGhlciBsaWJyYXJ5IGZ1bmN0aW9ucyB3aGljaCBhcmUgY2xlYXItCisgICAgICAgICAgICAgICAgbHkgdW5zYWZlLgorCisgICAgICAgPFNUUk9ORz5TSUdURVJNPC9TVFJPTkc+CisgICAgICAgICAgICBUaGlzIHVzZXMgdGhlIHNhbWUgaGFuZGxlciBhcyA8U1RST05HPlNJR0lOVDwvU1RST05HPiwgd2l0aCAgdGhlICBzYW1lCisgICAgICAgICAgICBsaW1pdGF0aW9ucy4gICBJdCAgaXMgbm90IG1lbnRpb25lZCBpbiBYL09wZW4gQ3Vyc2VzLAorICAgICAgICAgICAgYnV0IGlzIG1vcmUgc3VpdGFibGUgZm9yIHRoaXMgIHB1cnBvc2UgIHRoYW4gIDxTVFJPTkc+U0lHUVVJVDwvU1RST05HPgorICAgICAgICAgICAgKHdoaWNoIGlzIHVzZWQgaW4gZGVidWdnaW5nKS4KKworICAgICAgIDxTVFJPTkc+U0lHVFNUUDwvU1RST05HPgorICAgICAgICAgICAgVGhpcyAgaGFuZGxlcyAgdGhlICA8RU0+c3RvcDwvRU0+IHNpZ25hbCwgdXNlZCBpbiBqb2IgY29udHJvbC4KKyAgICAgICAgICAgIFdoZW4gcmVzdW1pbmcgdGhlIHByb2Nlc3MsIHRoaXMgIGltcGxlbWVudGF0aW9uICBkaXMtCisgICAgICAgICAgICBjYXJkcyAgICBwZW5kaW5nICAgIGlucHV0ICAgIHdpdGggICA8U1RST05HPmZsdXNoaW5wdXQ8L1NUUk9ORz4gICAoc2VlCisgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPiksIGFuZCByZXBhaW50cyB0aGUgc2NyZWVuIGFzc3VtaW5nIHRoYXQKKyAgICAgICAgICAgIGl0ICBoYXMgYmVlbiBjb21wbGV0ZWx5IGFsdGVyZWQuICBJdCBhbHNvIHVwZGF0ZXMgdGhlCisgICAgICAgICAgICBzYXZlZCAgdGVybWluYWwgIG1vZGVzICAgd2l0aCAgIDxTVFJPTkc+ZGVmX3NoZWxsX21vZGU8L1NUUk9ORz4gICAoc2VlCisgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsKDN4KTwvQT48L1NUUk9ORz4pLgorCisgICAgICAgPFNUUk9ORz5TSUdXSU5DSDwvU1RST05HPgorICAgICAgICAgICAgVGhpcyAgaGFuZGxlcyB0aGUgd2luZG93LXNpemUgY2hhbmdlcyB3aGljaCB3ZXJlIGluaS0KKyAgICAgICAgICAgIHRpYWxseSBpZ25vcmVkIGluIHRoZSBzdGFuZGFyZGl6YXRpb24gIGVmZm9ydHMuICAgVGhlCisgICAgICAgICAgICBoYW5kbGVyICBzZXRzIGEgKHNpZ25hbC1zYWZlKSB2YXJpYWJsZSB3aGljaCBpcyBsYXRlcgorICAgICAgICAgICAgdGVzdGVkIGluIDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+IChzZWUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPikuICBJZiA8U1RST05HPmtleXBhZDwvU1RST05HPiBoYXMKKyAgICAgICAgICAgIGJlZW4gZW5hYmxlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgd2luZG93LCA8U1RST05HPndnZXRjaDwvU1RST05HPiByZS0KKyAgICAgICAgICAgIHR1cm5zIHRoZSBrZXkgc3ltYm9sIDxTVFJPTkc+S0VZX1JFU0laRTwvU1RST05HPi4gIEF0IHRoZSAgc2FtZSAgdGltZSwKKyAgICAgICAgICAgIDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+IGNhbGxzIDxTVFJPTkc+cmVzaXpldGVybTwvU1RST05HPiB0byBhZGp1c3QgdGhlIHN0YW5kYXJkIHNjcmVlbgorICAgICAgICAgICAgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4sIGFuZCB1cGRhdGUgb3RoZXIgZGF0YSBzdWNoIGFzIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Q09MUzwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+LCAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwKLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz5jdXJzX3ZhcmktPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5hYmxlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtaW5pdHNjciI+aW5pdHNjcjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1uZXd0ZXJtIj5uZXd0ZXJtPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWVuZHdpbiI+ZW5kd2luPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWlzZW5kd2luIj5pc2VuZHdpbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1zZXRfdGVybSI+c2V0X3Rlcm08L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZGVsc2NyZWVuIj5kZWxzY3JlZW48L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1EaWZmZXJlbmNlcyI+RGlmZmVyZW5jZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVW5zZXQtVEVSTS1WYXJpYWJsZSI+VW5zZXQgVEVSTSBWYXJpYWJsZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1TaWduYWwtSGFuZGxlcnMiPlNpZ25hbCBIYW5kbGVyczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5vcHRzLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbAppbmRleCA3ZWVjM2VkLi5iOGQ5NGRkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbm9wdHMuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMjYgKzI2LDI3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2lub3B0cy4zeCx2IDEuMTMgMjAwNS8wNS8xNSAxNjoxODowNyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfaW5vcHRzLjN4LHYgMS4xOSAyMDE1LzA0LzExIDEwOjIxOjM4IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfaW5vcHRzIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19pbm9wdHMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfaW5vcHRzIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lub3B0cy4zeC5odG1sIj5jdXJzX2lub3B0cygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5vcHRzLjN4Lmh0bWwiPmN1cnNfaW5vcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmNicmVhazwvU1RST05HPiwgPFNUUk9ORz5ub2NicmVhazwvU1RST05HPiwgPFNUUk9ORz5lY2hvPC9TVFJPTkc+LCA8U1RST05HPm5vZWNobzwvU1RST05HPiwgPFNUUk9ORz5oYWxmZGVsYXk8L1NUUk9ORz4sIDxTVFJPTkc+aW50cmZsdXNoPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+a2V5cGFkPC9TVFJPTkc+LCA8U1RST05HPm1ldGE8L1NUUk9ORz4sIDxTVFJPTkc+bm9kZWxheTwvU1RST05HPiwgPFNUUk9ORz5ub3RpbWVvdXQ8L1NUUk9ORz4sIDxTVFJPTkc+cmF3PC9TVFJPTkc+LCA8U1RST05HPm5vcmF3PC9TVFJPTkc+LCA8U1RST05HPm5vcWlmbHVzaDwvU1RST05HPiwKICAgICAgICA8U1RST05HPnFpZmx1c2g8L1NUUk9ORz4sIDxTVFJPTkc+dGltZW91dDwvU1RST05HPiwgPFNUUk9ORz53dGltZW91dDwvU1RST05HPiwgPFNUUk9ORz50eXBlYWhlYWQ8L1NUUk9ORz4gLSA8U1RST05HPmN1cnNlczwvU1RST05HPiBpbnB1dApAQCAtNTQsNyArNTQsNyBAQAogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Y2JyZWFrKHZvaWQpOzwvU1RST05HPgpAQCAtNzcsNyArNzcsMTggQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBwcm92aWRlcyBzZXZlcmFsIGZ1bmN0aW9ucyAgd2hpY2ggIGxldAorICAgICAgIGFuICBhcHBsaWNhdGlvbiBjaGFuZ2Ugd2F5IGlucHV0IGZyb20gdGhlIHRlcm1pbmFsIGlzIGhhbi0KKyAgICAgICBkbGVkLiAgU29tZSBhcmUgZ2xvYmFsLCBhcHBseWluZyB0byBhbGwgIHdpbmRvd3MuICAgT3RoZXJzCisgICAgICAgYXBwbHkgb25seSB0byBhIHNwZWNpZmljIHdpbmRvdy4gIFdpbmRvdy1zcGVjaWZpYyBzZXR0aW5ncworICAgICAgIGFyZSBub3QgYXV0b21hdGljYWxseSBhcHBsaWVkIHRvIG5ldyBvciAgZGVyaXZlZCAgd2luZG93cy4KKyAgICAgICBBbiAgYXBwbGljYXRpb24gIG11c3QgIGFwcGx5ICB0aGVzZSB0byBlYWNoIHdpbmRvdywgaWYgdGhlCisgICAgICAgc2FtZSBiZWhhdmlvciBpcyBuZWVkZWQuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtY2JyZWFrIj5jYnJlYWs8L2E+PC9IMz48UFJFPgogICAgICAgIE5vcm1hbGx5LCB0aGUgdHR5IGRyaXZlciBidWZmZXJzIHR5cGVkIGNoYXJhY3RlcnMgdW50aWwgIGEKICAgICAgICBuZXdsaW5lICBvciAgY2FycmlhZ2UgcmV0dXJuIGlzIHR5cGVkLiAgVGhlIDxTVFJPTkc+Y2JyZWFrPC9TVFJPTkc+IHJvdXRpbmUKICAgICAgICBkaXNhYmxlcyBsaW5lIGJ1ZmZlcmluZyBhbmQgZXJhc2Uva2lsbCAgY2hhcmFjdGVyLXByb2Nlc3MtCkBAIC05Myw2ICsxMDQsOSBAQAogICAgICAgIHJpZGVzIDxTVFJPTkc+cmF3PC9TVFJPTkc+LiAgW1NlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+IGZvciBhICBkaXNjdXNzaW9uICBvZiAgaG93CiAgICAgICAgdGhlc2Ugcm91dGluZXMgaW50ZXJhY3Qgd2l0aCA8U1RST05HPmVjaG88L1NUUk9ORz4gYW5kIDxTVFJPTkc+bm9lY2hvPC9TVFJPTkc+Ll0KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1lY2hvX25vZWNobyI+ZWNoby9ub2VjaG88L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5lY2hvPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+bm9lY2hvPC9TVFJPTkc+IHJvdXRpbmVzIGNvbnRyb2wgd2hldGhlciBjaGFyYWN0ZXJzCiAgICAgICAgdHlwZWQgYnkgdGhlIHVzZXIgYXJlIGVjaG9lZCBieSA8U1RST05HPmdldGNoPC9TVFJPTkc+IGFzIHRoZXkgIGFyZSAgdHlwZWQuCiAgICAgICAgRWNob2luZyBieSB0aGUgdHR5IGRyaXZlciBpcyBhbHdheXMgZGlzYWJsZWQsIGJ1dCBpbml0aWFsLQpAQCAtMTAzLDYgKzExNyw5IEBACiAgICAgICAgW1NlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+IGZvciBhIGRpc2N1c3Npb24gb2YgaG93IHRoZXNlIHJvdXRpbmVzCiAgICAgICAgaW50ZXJhY3Qgd2l0aCA8U1RST05HPmNicmVhazwvU1RST05HPiBhbmQgPFNUUk9ORz5ub2NicmVhazwvU1RST05HPi5dCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtaGFsZmRlbGF5Ij5oYWxmZGVsYXk8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5oYWxmZGVsYXk8L1NUUk9ORz4gIHJvdXRpbmUgaXMgdXNlZCBmb3IgaGFsZi1kZWxheSBtb2RlLCB3aGljaAogICAgICAgIGlzIHNpbWlsYXIgdG8gPFNUUk9ORz5jYnJlYWs8L1NUUk9ORz4gbW9kZSBpbiB0aGF0IGNoYXJhY3RlcnMgdHlwZWQgYnkgIHRoZQogICAgICAgIHVzZXIgIGFyZSAgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAgSG93ZXZlciwKQEAgLTExMSw2ICsxMjgsOSBAQAogICAgICAgIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAyNTUuICBVc2UgPFNUUk9ORz5ub2NicmVhazwvU1RST05HPiB0byBsZWF2ZQogICAgICAgIGhhbGYtZGVsYXkgbW9kZS4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1pbnRyZmx1c2giPmludHJmbHVzaDwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgIHRoZSA8U1RST05HPmludHJmbHVzaDwvU1RST05HPiBvcHRpb24gaXMgZW5hYmxlZCwgKDxFTT5iZjwvRU0+IGlzIDxTVFJPTkc+VFJVRTwvU1RST05HPiksIHdoZW4gYW4KICAgICAgICBpbnRlcnJ1cHQga2V5ICBpcyAgcHJlc3NlZCAgb24gIHRoZSAga2V5Ym9hcmQgIChpbnRlcnJ1cHQsCiAgICAgICAgYnJlYWssICBxdWl0KSAgYWxsICBvdXRwdXQgaW4gdGhlIHR0eSBkcml2ZXIgcXVldWUgd2lsbCBiZQpAQCAtMTIxLDYgKzE0MSw5IEBACiAgICAgICAgaXRlZCBmcm9tIHRoZSB0dHkgZHJpdmVyIHNldHRpbmdzLiAgVGhlIHdpbmRvdyBhcmd1bWVudCBpcwogICAgICAgIGlnbm9yZWQuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMta2V5cGFkIj5rZXlwYWQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5rZXlwYWQ8L1NUUk9ORz4gb3B0aW9uIGVuYWJsZXMgdGhlIGtleXBhZCBvZiB0aGUgdXNlcidzIHRlcm1pLQogICAgICAgIG5hbC4gIElmIGVuYWJsZWQgKDxFTT5iZjwvRU0+IGlzIDxTVFJPTkc+VFJVRTwvU1RST05HPiksIHRoZSB1c2VyIGNhbiBwcmVzcyBhICBmdW5jLQogICAgICAgIHRpb24gIGtleSAoc3VjaCBhcyBhbiBhcnJvdyBrZXkpIGFuZCA8U1RST05HPndnZXRjaDwvU1RST05HPiByZXR1cm5zIGEgc2luLQpAQCAtMTMxLDExICsxNTQsMTQgQEAKICAgICAgICB0dXJuZWQgb24gKG1hZGUgdG8gdHJhbnNtaXQpIGFuZCBvZmYgKG1hZGUgdG8gd29yayAgbG9jYWwtCiAgICAgICAgbHkpLCAgdHVybmluZyBvbiB0aGlzIG9wdGlvbiBjYXVzZXMgdGhlIHRlcm1pbmFsIGtleXBhZCB0bwogICAgICAgIGJlIHR1cm5lZCBvbiB3aGVuIDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+IGlzIGNhbGxlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvcgotICAgICAgIGtleXBhZCBpcyBmYWxzZS4KKyAgICAgICBrZXlwYWQgaXMgPFNUUk9ORz5GQUxTRTwvU1RST05HPi4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1tZXRhIj5tZXRhPC9hPjwvSDM+PFBSRT4KICAgICAgICBJbml0aWFsbHksIHdoZXRoZXIgdGhlIHRlcm1pbmFsIHJldHVybnMgNyBvciA4IHNpZ25pZmljYW50CiAgICAgICAgYml0cyBvbiBpbnB1dCBkZXBlbmRzIG9uIHRoZSBjb250cm9sIG1vZGUgb2YgdGhlIHR0eSBkcml2LQotICAgICAgIGVyICBbc2VlICA8U1RST05HPjxBIEhSRUY9InRlcm1pby43Lmh0bWwiPnRlcm1pbyg3KTwvQT48L1NUUk9ORz5dLiAgVG8gZm9yY2UgOCBiaXRzIHRvIGJlIHJldHVybmVkLCBpbi0KKyAgICAgICBlciAgW3NlZSAgPFNUUk9ORz50ZXJtaW8oNyk8L1NUUk9ORz5dLiAgVG8gZm9yY2UgOCBiaXRzIHRvIGJlIHJldHVybmVkLCBpbi0KICAgICAgICB2b2tlIDxTVFJPTkc+bWV0YTwvU1RST05HPig8RU0+d2luPC9FTT4sIDxTVFJPTkc+VFJVRTwvU1RST05HPik7IHRoaXMgaXMgZXF1aXZhbGVudCwgdW5kZXIgUE9TSVgsICB0bwogICAgICAgIHNldHRpbmcgIHRoZSBDUzggZmxhZyBvbiB0aGUgdGVybWluYWwuICBUbyBmb3JjZSA3IGJpdHMgdG8KICAgICAgICBiZSByZXR1cm5lZCwgaW52b2tlIDxTVFJPTkc+bWV0YTwvU1RST05HPig8RU0+d2luPC9FTT4sIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4pOyB0aGlzIGlzICBlcXVpdmFsZW50LApAQCAtMTQ2LDYgKzE3Miw5IEBACiAgICAgICAgPFNUUk9ORz5tZXRhPC9TVFJPTkc+KDxFTT53aW48L0VNPiwgIDxTVFJPTkc+VFJVRTwvU1RST05HPikgIGlzIGNhbGxlZCBhbmQgPFNUUk9ORz5ybW08L1NUUk9ORz4gaXMgc2VudCB3aGVuIDxTVFJPTkc+bWV0YTwvU1RST05HPig8RU0+d2luPC9FTT4sCiAgICAgICAgPFNUUk9ORz5GQUxTRTwvU1RST05HPikgaXMgY2FsbGVkLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLW5vZGVsYXkiPm5vZGVsYXk8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPm5vZGVsYXk8L1NUUk9ORz4gb3B0aW9uIGNhdXNlcyA8U1RST05HPmdldGNoPC9TVFJPTkc+IHRvIGJlIGEgbm9uLWJsb2NraW5nIGNhbGwuCiAgICAgICAgSWYgIG5vIGlucHV0IGlzIHJlYWR5LCA8U1RST05HPmdldGNoPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4uICBJZiBkaXNhYmxlZCAoPEVNPmJmPC9FTT4KICAgICAgICBpcyA8U1RST05HPkZBTFNFPC9TVFJPTkc+KSwgPFNUUk9ORz5nZXRjaDwvU1RST05HPiB3YWl0cyB1bnRpbCBhIGtleSBpcyBwcmVzc2VkLgpAQCAtMTU3LDYgKzE4Niw5IEBACiAgICAgICAgdHdlZW4gc2VxdWVuY2VzIHJlY2VpdmVkIGZyb20gYSAgZnVuY3Rpb24gIGtleSAgYW5kICB0aG9zZQogICAgICAgIHR5cGVkIGJ5IGEgdXNlci4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1yYXdfbm9yYXciPnJhdy9ub3JhdzwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPnJhdzwvU1RST05HPiBhbmQgPFNUUk9ORz5ub3JhdzwvU1RST05HPiByb3V0aW5lcyBwbGFjZSB0aGUgdGVybWluYWwgaW50byBvciBvdXQKICAgICAgICBvZiByYXcgbW9kZS4gIFJhdyBtb2RlIGlzIHNpbWlsYXIgdG8gPFNUUk9ORz5jYnJlYWs8L1NUUk9ORz4gbW9kZSwgaW4gIHRoYXQKICAgICAgICBjaGFyYWN0ZXJzIHR5cGVkIGFyZSBpbW1lZGlhdGVseSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdXMtCkBAIC0xNjYsMTQgKzE5OCwyMCBAQAogICAgICAgIHNpZ25hbC4gICBUaGUgIGJlaGF2aW9yICBvZiB0aGUgQlJFQUsga2V5IGRlcGVuZHMgb24gb3RoZXIKICAgICAgICBiaXRzIGluIHRoZSB0dHkgZHJpdmVyIHRoYXQgYXJlIG5vdCBzZXQgYnkgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbm9xaWZsdXNoIj5ub3FpZmx1c2g8L2E+PC9IMz48UFJFPgogICAgICAgIFdoZW4gdGhlIDxTVFJPTkc+bm9xaWZsdXNoPC9TVFJPTkc+IHJvdXRpbmUgaXMgdXNlZCwgbm9ybWFsIGZsdXNoIG9mICBpbnB1dAogICAgICAgIGFuZCAgb3V0cHV0IHF1ZXVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIDxTVFJPTkc+SU5UUjwvU1RST05HPiwgPFNUUk9ORz5RVUlUPC9TVFJPTkc+IGFuZCA8U1RST05HPlNVU1A8L1NUUk9ORz4KLSAgICAgICBjaGFyYWN0ZXJzIHdpbGwgbm90IGJlIGRvbmUgW3NlZSA8U1RST05HPjxBIEhSRUY9InRlcm1pby43Lmh0bWwiPnRlcm1pbyg3KTwvQT48L1NUUk9ORz5dLiAgV2hlbiA8U1RST05HPnFpZmx1c2g8L1NUUk9ORz4KKyAgICAgICBjaGFyYWN0ZXJzIHdpbGwgbm90IGJlIGRvbmUgW3NlZSA8U1RST05HPnRlcm1pbyg3KTwvU1RST05HPl0uICBXaGVuIDxTVFJPTkc+cWlmbHVzaDwvU1RST05HPgogICAgICAgIGlzICBjYWxsZWQsICB0aGUgcXVldWVzIHdpbGwgYmUgZmx1c2hlZCB3aGVuIHRoZXNlIGNvbnRyb2wKICAgICAgICBjaGFyYWN0ZXJzIGFyZSByZWFkLiAgWW91IG1heSB3YW50IHRvIGNhbGwgPFNUUk9ORz5ub3FpZmx1c2goKTwvU1RST05HPiAgaW4KICAgICAgICBhICBzaWduYWwgaGFuZGxlciBpZiB5b3Ugd2FudCBvdXRwdXQgdG8gY29udGludWUgYXMgdGhvdWdoCiAgICAgICAgdGhlIGludGVycnVwdCBoYWQgbm90IG9jY3VycmVkLCBhZnRlciB0aGUgaGFuZGxlciBleGl0cy4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy10aW1lb3V0X3d0aW1lb3V0Ij50aW1lb3V0L3d0aW1lb3V0PC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz50aW1lb3V0PC9TVFJPTkc+IGFuZCA8U1RST05HPnd0aW1lb3V0PC9TVFJPTkc+IHJvdXRpbmVzICBzZXQgIGJsb2NraW5nICBvciAgbm9uLQogICAgICAgIGJsb2NraW5nICByZWFkICBmb3IgYSBnaXZlbiB3aW5kb3cuICBJZiA8RU0+ZGVsYXk8L0VNPiBpcyBuZWdhdGl2ZSwKICAgICAgICBibG9ja2luZyByZWFkIGlzIHVzZWQgKGkuZS4sIHdhaXRzICBpbmRlZmluaXRlbHkgIGZvciAgaW4tCkBAIC0xODUsNyArMjIzLDEwIEBACiAgICAgICAgYWRkaXRpb25hbCBjYXBhYmlsaXR5IG9mIGJlaW5nIGFibGUgdG8gYmxvY2sgZm9yIG9ubHkgIDxFTT5kZS08L0VNPgogICAgICAgIDxFTT5sYXk8L0VNPiBtaWxsaXNlY29uZHMgKHdoZXJlIDxFTT5kZWxheTwvRU0+IGlzIHBvc2l0aXZlKS4KIAotICAgICAgIFRoZSAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBkb2VzIGBgbGluZS1icmVha291dCBvcHRpbWl6YXRpb24nJyBieQorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy10eXBlYWhlYWQiPnR5cGVhaGVhZDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgbGlicmFyeSAgZG9lcyAibGluZS1icmVha291dCBvcHRpbWl6YXRpb24iIGJ5CiAgICAgICAgbG9va2luZyBmb3IgIHR5cGVhaGVhZCAgcGVyaW9kaWNhbGx5ICB3aGlsZSAgdXBkYXRpbmcgIHRoZQogICAgICAgIHNjcmVlbi4gICBJZiAgaW5wdXQgaXMgZm91bmQsIGFuZCBpdCBpcyBjb21pbmcgZnJvbSBhIHR0eSwKICAgICAgICB0aGUgY3VycmVudCB1cGRhdGUgaXMgcG9zdHBvbmVkIHVudGlsIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiBvciAgPFNUUk9ORz5kb3VwZGF0ZTwvU1RST05HPgpAQCAtMTk5LDcgKzI0MCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBbGwgIHJvdXRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbC0KICAgICAgICB1cmUgYW5kIE9LIChTVnI0IHNwZWNpZmllcyBvbmx5ICJhbiAgaW50ZWdlciAgdmFsdWUgIG90aGVyCiAgICAgICAgdGhhbiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSAgdXBvbiAgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB1bmxlc3Mgb3RoZXJ3aXNlCkBAIC0yMTYsNyArMjU3LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LgogCkBAIC0yMjksMzMgKzI3MCw4NyBAQAogICAgICAgIHR5LCAgc2V0ICBlY2hvIG9yIG5vZWNobyBleHBsaWNpdGx5IGp1c3QgYWZ0ZXIgaW5pdGlhbGl6YS0KICAgICAgICB0aW9uLCBldmVuIGlmIHlvdXIgcHJvZ3JhbSByZW1haW5zIGluIGNvb2tlZCBtb2RlLgogCisgICAgICAgV2hlbiA8U1RST05HPmtleXBhZDwvU1RST05HPiBpcyBmaXJzdCBlbmFibGVkLCBuY3Vyc2VzIGxvYWRzIHRoZSAga2V5LWRlZmktCisgICAgICAgbml0aW9ucyBmb3IgdGhlIGN1cnJlbnQgdGVybWluYWwgZGVzY3JpcHRpb24uICBJZiB0aGUgdGVyLQorICAgICAgIG1pbmFsIGRlc2NyaXB0aW9uIGluY2x1ZGVzIGV4dGVuZGVkICBzdHJpbmcgIGNhcGFiaWxpdGllcywKKyAgICAgICBlLmcuLCAgZnJvbSAgdXNpbmcgdGhlIDxTVFJPTkc+LXg8L1NUUk9ORz4gb3B0aW9uIG9mIHRpYywgdGhlbiBuY3Vyc2VzIGFsc28KKyAgICAgICBkZWZpbmVzIGtleXMgZm9yIHRoZSBjYXBhYmlsaXRpZXMgd2hvc2UgbmFtZXMgIGJlZ2luICB3aXRoCisgICAgICAgImsiLiAgIFRoZSAgY29ycmVzcG9uZGluZyAga2V5Y29kZXMgYXJlIGdlbmVyYXRlZCBhbmQgKGRlLQorICAgICAgIHBlbmRpbmcgb24gcHJldmlvdXMgbG9hZHMgb2YgIHRlcm1pbmFsICBkZXNjcmlwdGlvbnMpICBtYXkKKyAgICAgICBkaWZmZXIgIGZyb20gIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIHRvIHRoZSBuZXh0LiAgVGhlCisgICAgICAgZ2VuZXJhdGVkIGtleWNvZGVzIGFyZSByZWNvZ25pemVkIGJ5IHRoZSA8U1RST05HPmtleW5hbWU8L1NUUk9ORz4gIGZ1bmN0aW9uCisgICAgICAgKHdoaWNoIHdpbGwgdGhlbiByZXR1cm4gYSBuYW1lIGJlZ2lubmluZyB3aXRoICJrIiBkZW5vdGluZworICAgICAgIHRoZSB0ZXJtaW5mbyBjYXBhYmlsaXR5IG5hbWUgcmF0aGVyICB0aGFuICAiSyIsICB1c2VkICBmb3IKKyAgICAgICBjdXJzZXMgIGtleS1uYW1lcykuICBPbiB0aGUgb3RoZXIgaGFuZCwgYW4gYXBwbGljYXRpb24gY2FuCisgICAgICAgdXNlIDxTVFJPTkc+ZGVmaW5lX2tleTwvU1RST05HPiB0byBlc3RhYmxpc2ggYSBzcGVjaWZpYyBrZXljb2RlIGZvciBhIGdpdmVuCisgICAgICAgc3RyaW5nLiAgIFRoaXMgIG1ha2VzICBpdCAgcG9zc2libGUgIGZvciBhbiBhcHBsaWNhdGlvbiB0bworICAgICAgIGNoZWNrIGZvciBhbiBleHRlbmRlZCBjYXBhYmlsaXR5J3MgcHJlc2VuY2Ugd2l0aCA8RU0+dGlnZXRzdHI8L0VNPiwKKyAgICAgICBhbmQgcmVhc3NpZ24gdGhlIGtleWNvZGUgdG8gbWF0Y2ggaXRzIG93biBuZWVkcy4KKworICAgICAgIExvdy1sZXZlbCBhcHBsaWNhdGlvbnMgY2FuIHVzZSA8U1RST05HPnRpZ2V0c3RyPC9TVFJPTkc+IHRvIG9idGFpbiB0aGUgZGVmLQorICAgICAgIGluaXRpb24gb2YgYW55IHBhcnRpY3VsYXIgc3RyaW5nIGNhcGFiaWxpdHkuICBIaWdoZXItbGV2ZWwKKyAgICAgICBhcHBsaWNhdGlvbnMgd2hpY2ggdXNlIHRoZSBjdXJzZXMgPFNUUk9ORz53Z2V0Y2g8L1NUUk9ORz4gYW5kIHNpbWlsYXIgZnVuYy0KKyAgICAgICB0aW9ucyB0byByZXR1cm4ga2V5Y29kZXMgcmVseSB1cG9uIHRoZSBvcmRlciBpbiB3aGljaCAgdGhlCisgICAgICAgc3RyaW5ncyAgYXJlICBsb2FkZWQuICBJZiBtb3JlIHRoYW4gb25lIGtleSBkZWZpbml0aW9uIGhhcworICAgICAgIHRoZSBzYW1lIHN0cmluZyB2YWx1ZSwgdGhlbiA8U1RST05HPndnZXRjaDwvU1RST05HPiAgY2FuICByZXR1cm4gIG9ubHkgIG9uZQorICAgICAgIGtleWNvZGUuICAgTW9zdCBjdXJzZXMgaW1wbGVtZW50YXRpb25zIChpbmNsdWRpbmcgbmN1cnNlcykKKyAgICAgICBsb2FkIGtleSBkZWZpbml0aW9ucyBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGUgYXJyYXkgIG9mCisgICAgICAgc3RyaW5nIGNhcGFiaWxpdHkgbmFtZXMuICBUaGUgbGFzdCBrZXkgdG8gYmUgbG9hZGVkIGRldGVyLQorICAgICAgIG1pbmVzIHRoZSBrZXljb2RlIHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQuICBJbiBuY3Vyc2VzLCB5b3UKKyAgICAgICBtYXkgIGFsc28gIGhhdmUgIGV4dGVuZGVkICBjYXBhYmlsaXRpZXMgaW50ZXJwcmV0ZWQgYXMga2V5CisgICAgICAgZGVmaW5pdGlvbnMuICBUaGVzZSBhcmUgbG9hZGVkIGFmdGVyIHRoZSBwcmVkZWZpbmVkICBrZXlzLAorICAgICAgIGFuZCAgaWYgIGEgY2FwYWJpbGl0eSdzIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGEgcHJldmlvdXNseS0KKyAgICAgICBsb2FkZWQga2V5IGRlZmluaXRpb24sIHRoZSBsYXRlciAgZGVmaW5pdGlvbiAgaXMgIHRoZSAgb25lCisgICAgICAgdXNlZC4KKwogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KLSAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5lY2hvPC9TVFJPTkc+LCA8U1RST05HPm5vZWNobzwvU1RST05HPiwgPFNUUk9ORz5oYWxmZGVsYXk8L1NUUk9ORz4sIDxTVFJPTkc+aW50cmZsdXNoPC9TVFJPTkc+LCA8U1RST05HPm1ldGE8L1NUUk9ORz4sICA8U1RST05HPm5vZGUtPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5sYXk8L1NUUk9ORz4sICA8U1RST05HPm5vdGltZW91dDwvU1RST05HPiwgPFNUUk9ORz5ub3FpZmx1c2g8L1NUUk9ORz4sIDxTVFJPTkc+cWlmbHVzaDwvU1RST05HPiwgPFNUUk9ORz50aW1lb3V0PC9TVFJPTkc+LCBhbmQgPFNUUk9ORz53dGltZW91dDwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgTm90ZSAgdGhhdCA8U1RST05HPmVjaG88L1NUUk9ORz4sIDxTVFJPTkc+bm9lY2hvPC9TVFJPTkc+LCA8U1RST05HPmhhbGZkZWxheTwvU1RST05HPiwgPFNUUk9ORz5pbnRyZmx1c2g8L1NUUk9ORz4sIDxTVFJPTkc+bWV0YTwvU1RST05HPiwgPFNUUk9ORz5ub2RlLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+bGF5PC9TVFJPTkc+LCA8U1RST05HPm5vdGltZW91dDwvU1RST05HPiwgPFNUUk9ORz5ub3FpZmx1c2g8L1NUUk9ORz4sIDxTVFJPTkc+cWlmbHVzaDwvU1RST05HPiwgPFNUUk9ORz50aW1lb3V0PC9TVFJPTkc+LCBhbmQgIDxTVFJPTkc+d3RpbWVvdXQ8L1NUUk9ORz4KICAgICAgICBtYXkgYmUgbWFjcm9zLgogCiAgICAgICAgVGhlIDxTVFJPTkc+bm9yYXc8L1NUUk9ORz4gYW5kIDxTVFJPTkc+bm9jYnJlYWs8L1NUUk9ORz4gY2FsbHMgZm9sbG93IGhpc3RvcmljYWwgcHJhY3RpY2UgaW4KLSAgICAgICB0aGF0ICB0aGV5ICBhdHRlbXB0ICB0byAgcmVzdG9yZSB0byBub3JtYWwgKGBjb29rZWQnKSBtb2RlCi0gICAgICAgZnJvbSByYXcgYW5kIGNicmVhayBtb2RlcyByZXNwZWN0aXZlbHkuICBNaXhpbmcgIHJhdy9ub3JhdwotICAgICAgIGFuZCAgY2JyZWFrL25vY2JyZWFrICBjYWxscyAgbGVhZHMgIHRvICB0dHkgZHJpdmVyIGNvbnRyb2wKLSAgICAgICBzdGF0ZXMgdGhhdCBhcmUgaGFyZCB0byBwcmVkaWN0IG9yIHVuZGVyc3RhbmQ7IGl0ICBpcyAgbm90CisgICAgICAgdGhhdCB0aGV5IGF0dGVtcHQgdG8gcmVzdG9yZSAgdG8gIG5vcm1hbCAgKGBjb29rZWQnKSAgbW9kZQorICAgICAgIGZyb20gIHJhdyBhbmQgY2JyZWFrIG1vZGVzIHJlc3BlY3RpdmVseS4gIE1peGluZyByYXcvbm9yYXcKKyAgICAgICBhbmQgY2JyZWFrL25vY2JyZWFrIGNhbGxzICBsZWFkcyAgdG8gIHR0eSAgZHJpdmVyICBjb250cm9sCisgICAgICAgc3RhdGVzICB0aGF0ICBhcmUgaGFyZCB0byBwcmVkaWN0IG9yIHVuZGVyc3RhbmQ7IGl0IGlzIG5vdAogICAgICAgIHJlY29tbWVuZGVkLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWlvLjcuaHRtbCI+dGVybWlvKDcpPC9BPjwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3V0aWwuM3guaHRtbCI+Y3Vyc191dGlsKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZGVmaW5lX2tleS4zeC5odG1sIj5kZWZpbmVfa2V5KDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+dGVybWlvKDcpPC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLWNicmVhayI+Y2JyZWFrPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWVjaG9fbm9lY2hvIj5lY2hvL25vZWNobzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1oYWxmZGVsYXkiPmhhbGZkZWxheTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1pbnRyZmx1c2giPmludHJmbHVzaDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1rZXlwYWQiPmtleXBhZDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1tZXRhIj5tZXRhPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLW5vZGVsYXkiPm5vZGVsYXk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtcmF3X25vcmF3Ij5yYXcvbm9yYXc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtbm9xaWZsdXNoIj5ub3FpZmx1c2g8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtdGltZW91dF93dGltZW91dCI+dGltZW91dC93dGltZW91dDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy10eXBlYWhlYWQiPnR5cGVhaGVhZDwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19pbnNfd2NoLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbnNfd2NoLjN4Lmh0bWwKaW5kZXggNmU2OWQ4Zi4uMjdmODdjYSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5zX3djaC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2luc193Y2guM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2luc193Y2guM3gsdiAxLjMgMjAwNi8wMi8yNSAyMTo0MjoyMiB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfaW5zX3djaC4zeCx2IDEuNSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfaW5zX3djaCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfaW5zX3djaCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19pbnNfd2NoIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc193Y2guM3guaHRtbCI+Y3Vyc19pbnNfd2NoKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zX3djaC4zeC5odG1sIj5jdXJzX2luc193Y2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+aW5zX3djaDwvU1RST05HPiwgIDxTVFJPTkc+bXZpbnNfd2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdndpbnNfd2NoPC9TVFJPTkc+LCA8U1RST05HPndpbnNfd2NoPC9TVFJPTkc+IC0gaW5zZXJ0IGEgY29tLQogICAgICAgIHBsZXggY2hhcmFjdGVyIGFuZCByZW5kaXRpb24gaW50byBhIHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgI2luY2x1ZGUgJmx0O2N1cnNlcy5oJmd0OwogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pbnNfd2NoKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2NoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CkBAIC02Myw3ICs2Myw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcywgaW5zZXJ0IHRoZSBjb21wbGV4IGNoYXJhY3RlciA8RU0+d2NoPC9FTT4gd2l0aCByZW4tCiAgICAgICAgZGl0aW9uIGJlZm9yZSB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IuICBBbGwgY2hhcmFjLQogICAgICAgIHRlcnMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjdXJzb3IgYXJlIG1vdmVkIG9uZSBzcGFjZSB0byB0aGUKQEAgLTczLDI4ICs3MywzNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgSWYgc3VjY2Vzc2Z1bCwgdGhlc2UgZnVuY3Rpb25zIHJldHVybiBPSy4gICBJZiAgbm90LCAgdGhleQogICAgICAgIHJldHVybiBFUlIuCiAKKyAgICAgICBGdW5jdGlvbnMgIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmUtCisgICAgICAgbWVudCB1c2luZyA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSAgcG9zaXRpb24gIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKwogCiA8L1BSRT4KLTxIMj5FUlJPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRVJST1JTIj5FUlJPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vIGVycm9ycyBhcmUgZGVmaW5lZC4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc2NoLjN4Lmh0bWwiPmN1cnNfaW5zY2goM3gpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zX3djaC4zeC5odG1sIj5jdXJzX2luc193Y2goM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRVJST1JTIj5FUlJPUlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19pbnNfd3N0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5zX3dzdHIuM3guaHRtbAppbmRleCAzZDgxODcwLi4yODlkZjUxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19pbnNfd3N0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2luc193c3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMjAwMiwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19pbnNfd3N0ci4zeCx2IDEuNCAyMDA1LzA1LzE1IDE3OjAyOjU0IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19pbnNfd3N0ci4zeCx2IDEuNyAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfaW5zX3dzdHIgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2luc193c3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2luc193c3RyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc193c3RyLjN4Lmh0bWwiPmN1cnNfaW5zX3dzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zX3dzdHIuM3guaHRtbCI+Y3Vyc19pbnNfd3N0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbnNfd3N0cjwvU1RST05HPiwgPFNUUk9ORz5pbnNfbndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2luc193c3RyPC9TVFJPTkc+LCA8U1RST05HPndpbnNfbndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZpbnNfd3N0cjwvU1RST05HPiwKICAgICAgICA8U1RST05HPm12aW5zX253c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luc193c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luc19ud3N0cjwvU1RST05HPiAtIGluc2VydCBhIHdpZGUtCiAgICAgICAgY2hhcmFjdGVyIHN0cmluZyBpbnRvIGEgY3Vyc2VzIHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5zX3dzdHIoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53c3RyKTs8L0VNPgpAQCAtNjcsNyArNjcsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIHJvdXRpbmVzIGluc2VydCBhIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPiBjaGFyYWN0ZXIgc3RyaW5nIChhcyBtYW55CiAgICAgICAgY2hhcmFjdGVycyBhcyB3aWxsIGZpdCBvbiB0aGUgbGluZSkgYmVmb3JlICB0aGUgIGNoYXJhY3RlcgogICAgICAgIHVuZGVyIHRoZSBjdXJzb3IuICBBbGwgY2hhcmFjdGVycyB0byB0aGUgcmlnaHQgb2YgdGhlIGN1ci0KQEAgLTkyLDcgKzkyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBhbGwgYnV0IHdpbnNfbndzdHIgbWF5IGJlIG1hY3Jvcy4KIAogICAgICAgIElmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpcyBhIG5vbnNwYWNpbmcgY2hhci0KQEAgLTEwMiwxMyArMTAyLDE3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sICB0aGVzZSAgZnVuY3Rpb25zICByZXR1cm4gIE9LLgogICAgICAgIE90aGVyd2lzZSwgdGhleSByZXR1cm4gRVJSLgogCisgICAgICAgRnVuY3Rpb25zICB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlLQorICAgICAgIG1lbnQgdXNpbmcgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgIHBvc2l0aW9uICBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zc3RyLjN4Lmh0bWwiPmN1cnNfaW5zc3RyKDN4KTwvQT48L1NUUk9ORz4sICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbl93Y2guM3guaHRtbCI+Y3Vyc19pbl93Y2goM3gpPC9BPjwvU1RST05HPiwKICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zX3djaC4zeC5odG1sIj5jdXJzX2luc193Y2goM3gpPC9BPjwvU1RST05HPi4KIApAQCAtMTE2LDEwICsxMjAsMTUgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc193c3RyLjN4Lmh0bWwiPmN1cnNfaW5zX3dzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5zY2guM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2luc2NoLjN4Lmh0bWwKaW5kZXggMWZmZTBhYy4uZTMzNzM5MiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5zY2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbnNjaC4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMiArMjYsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfaW5zY2guM3gsdiAxLjEwIDIwMDYvMTIvMDIgMTc6MDE6NTAgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2luc2NoLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfaW5zY2ggM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX2luc2NoIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2luc2NoIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc2NoLjN4Lmh0bWwiPmN1cnNfaW5zY2goM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zY2guM3guaHRtbCI+Y3Vyc19pbnNjaCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbnNjaDwvU1RST05HPiwgIDxTVFJPTkc+d2luc2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdmluc2NoPC9TVFJPTkc+LCAgPFNUUk9ORz5tdndpbnNjaDwvU1RST05HPiAgLSAgaW5zZXJ0IGEgY2hhcmFjdGVyCiAgICAgICAgYmVmb3JlIGN1cnNvciBpbiBhIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5zY2goY2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+Y2gpOzwvU1RST05HPgpAQCAtNjIsNyArNjIsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgaW5zZXJ0IHRoZSBjaGFyYWN0ZXIgPEVNPmNoPC9FTT4gYmVmb3JlIHRoZSAgY2hhcmFjLQogICAgICAgIHRlciAgdW5kZXIgdGhlIGN1cnNvci4gIEFsbCBjaGFyYWN0ZXJzIHRvIHRoZSByaWdodCBvZiB0aGUKICAgICAgICBjdXJzb3IgYXJlIG1vdmVkIG9uZSBzcGFjZSB0byB0aGUgcmlnaHQsIHdpdGggIHRoZSAgcG9zc2ktCkBAIC03MiwxNSArNzIsMTkgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCAgcm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsLQogICAgICAgIHVyZSBhbmQgT0sgKFNWcjQgc3BlY2lmaWVzIG9ubHkgImFuICBpbnRlZ2VyICB2YWx1ZSAgb3RoZXIKICAgICAgICB0aGFuICA8U1RST05HPkVSUjwvU1RST05HPiIpICB1cG9uICBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIHVubGVzcyBvdGhlcndpc2UKICAgICAgICBub3RlZCBpbiB0aGUgcHJlY2VkaW5nIHJvdXRpbmUgZGVzY3JpcHRpb25zLgogCisgICAgICAgRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yICBtb3ZlLQorICAgICAgIG1lbnQgIHVzaW5nICA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBkbyBub3QgbmVjZXNzYXJpbHkgaW1wbHkgdXNlIG9mIGEgIGhhcmR3YXJlCiAgICAgICAgaW5zZXJ0IGNoYXJhY3RlciBmZWF0dXJlLgogCkBAIC04OCwxMyArOTIsMTMgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAgICAgICAgQ29tcGFyYWJsZSAgZnVuY3Rpb25zICBpbiAgdGhlICB3aWRlLWNoYXJhY3RlciAgKG5jdXJzZXN3KQpAQCAtMTA0LDEwICsxMDgsMTYgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc2NoLjN4Lmh0bWwiPmN1cnNfaW5zY2goM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2luc3N0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5zc3RyLjN4Lmh0bWwKaW5kZXggNGE0Mzk1MS4uZmMyNDI4ZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfaW5zc3RyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5zc3RyLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNiwzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19pbnNzdHIuM3gsdiAxLjE4IDIwMDYvMTIvMjQgMTQ6NTk6MzAgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2luc3N0ci4zeCx2IDEuMjEgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2luc3N0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfaW5zc3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2luc3N0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnNzdHIuM3guaHRtbCI+Y3Vyc19pbnNzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc3N0ci4zeC5odG1sIj5jdXJzX2luc3N0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbnNzdHI8L1NUUk9ORz4sICA8U1RST05HPmluc25zdHI8L1NUUk9ORz4sICA8U1RST05HPndpbnNzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2luc25zdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZpbnNzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZpbnNuc3RyPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZ3aW5zc3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luc25zdHI8L1NUUk9ORz4gLSBpbnNlcnQgc3RyaW5nIGJlZm9yZSBjdXJzb3IgIGluICBhCiAgICAgICAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5zc3RyKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipzdHIpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW5zbnN0cihjb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qc3RyLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm4pOzwvU1RST05HPgpAQCAtNjcsNjEgKzY3LDcxIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgIHJvdXRpbmVzIGluc2VydCBhIGNoYXJhY3RlciBzdHJpbmcgKGFzIG1hbnkgY2hhcmFjLQotICAgICAgIHRlcnMgYXMgd2lsbCBmaXQgb24gdGhlIGxpbmUpIGJlZm9yZSB0aGUgIGNoYXJhY3RlciAgdW5kZXIKKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIHJvdXRpbmVzIGluc2VydCBhIGNoYXJhY3RlciBzdHJpbmcgKGFzIG1hbnkgIGNoYXJhYy0KKyAgICAgICB0ZXJzICBhcyAgd2lsbCBmaXQgb24gdGhlIGxpbmUpIGJlZm9yZSB0aGUgY2hhcmFjdGVyIHVuZGVyCiAgICAgICAgdGhlIGN1cnNvci4gIEFsbCBjaGFyYWN0ZXJzIHRvIHRoZSByaWdodCBvZiB0aGUgY3Vyc29yIGFyZQotICAgICAgIHNoaWZ0ZWQgcmlnaHQgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgdGhlIHJpZ2h0bW9zdCAgY2hhci0KLSAgICAgICBhY3RlcnMgIG9uICB0aGUgbGluZSBiZWluZyBsb3N0LiAgVGhlIGN1cnNvciBwb3NpdGlvbiBkb2VzCi0gICAgICAgbm90IGNoYW5nZSAoYWZ0ZXIgbW92aW5nIHRvICA8RU0+eTwvRU0+LCAgPEVNPng8L0VNPiwgIGlmICBzcGVjaWZpZWQpLiAgIFRoZQotICAgICAgIGZ1bmN0aW9ucyAgd2l0aCAgPEVNPm48L0VNPiAgYXMgIHRoZSBsYXN0IGFyZ3VtZW50IGluc2VydCBhIGxlYWRpbmcKLSAgICAgICBzdWJzdHJpbmcgb2YgYXQgbW9zdCA8RU0+bjwvRU0+ICBjaGFyYWN0ZXJzLiAgIElmICA8RU0+bjwvRU0+Jmx0Oz0wLCAgdGhlbiAgdGhlCisgICAgICAgc2hpZnRlZCAgcmlnaHQgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgdGhlIHJpZ2h0bW9zdCBjaGFyLQorICAgICAgIGFjdGVycyBvbiB0aGUgbGluZSBiZWluZyBsb3N0LiAgVGhlIGN1cnNvciAgcG9zaXRpb24gIGRvZXMKKyAgICAgICBub3QgIGNoYW5nZSAgKGFmdGVyICBtb3ZpbmcgIHRvICA8RU0+eTwvRU0+LCA8RU0+eDwvRU0+LCBpZiBzcGVjaWZpZWQpLiAgVGhlCisgICAgICAgZnVuY3Rpb25zIHdpdGggPEVNPm48L0VNPiBhcyB0aGUgbGFzdCAgYXJndW1lbnQgIGluc2VydCAgYSAgbGVhZGluZworICAgICAgIHN1YnN0cmluZyAgb2YgIGF0ICBtb3N0ICA8RU0+bjwvRU0+ICBjaGFyYWN0ZXJzLiAgSWYgPEVNPm48L0VNPiZsdDs9MCwgdGhlbiB0aGUKICAgICAgICBlbnRpcmUgc3RyaW5nIGlzIGluc2VydGVkLgogCiAgICAgICAgU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBoYW5kbGVkIGFzIGluIDxTVFJPTkc+YWRkY2g8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgotICAgICAgIEFsbCAgcm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsLQotICAgICAgIHVyZSBhbmQgT0sgKFNWcjQgc3BlY2lmaWVzIG9ubHkgImFuICBpbnRlZ2VyICB2YWx1ZSAgb3RoZXIKLSAgICAgICB0aGFuICA8U1RST05HPkVSUjwvU1RST05HPiIpICB1cG9uICBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIHVubGVzcyBvdGhlcndpc2UKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgQWxsIHJvdXRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gIGZhaWwtCisgICAgICAgdXJlICBhbmQgIE9LICAoU1ZyNCBzcGVjaWZpZXMgb25seSAiYW4gaW50ZWdlciB2YWx1ZSBvdGhlcgorICAgICAgIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSB1cG9uIHN1Y2Nlc3NmdWwgIGNvbXBsZXRpb24sICB1bmxlc3MgIG90aGVyd2lzZQogICAgICAgIG5vdGVkIGluIHRoZSBwcmVjZWRpbmcgcm91dGluZSBkZXNjcmlwdGlvbnMuCiAKLSAgICAgICBYL09wZW4gZGVmaW5lcyBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gIHRoaXMgIGltcGxlbWVudGEtCisgICAgICAgWC9PcGVuICBkZWZpbmVzICBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gdGhpcyBpbXBsZW1lbnRhLQogICAgICAgIHRpb24sIGlmIHRoZSB3aW5kb3cgcGFyYW1ldGVyIGlzIG51bGwgb3IgdGhlIHN0ciBwYXJhbWV0ZXIKICAgICAgICBpcyBudWxsLCBhbiBlcnJvciBpcyByZXR1cm5lZC4KIAorICAgICAgIEZ1bmN0aW9ucyAgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZS0KKyAgICAgICBtZW50IHVzaW5nIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlICBwb3NpdGlvbiAgaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IGFsbCBidXQgPFNUUk9ORz53aW5zbnN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LCB3aGljaCBhZGRzIGNvbnN0IHF1YWxpZmllcnMgdG8gdGhlIGFyZ3VtZW50cy4KIAotICAgICAgIFRoZSAgU2luZ2xlICBVbml4ICBTcGVjaWZpY2F0aW9uLCAgVmVyc2lvbiAgMiAgc3RhdGVzIHRoYXQKLSAgICAgICA8U1RST05HPmluc25zdHI8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d2luc25zdHI8L1NUUk9ORz4gcGVyZm9ybSB3cmFwcGluZy4gIFRoaXMgIGlzICBwcm9iYWJseQorICAgICAgIFRoZSBTaW5nbGUgIFVuaXggIFNwZWNpZmljYXRpb24sICBWZXJzaW9uICAyICBzdGF0ZXMgIHRoYXQKKyAgICAgICA8U1RST05HPmluc25zdHI8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz53aW5zbnN0cjwvU1RST05HPiBwZXJmb3JtIHdyYXBwaW5nLiAgVGhpcyBpcyBwcm9iYWJseQogICAgICAgIGFuIGVycm9yLCBzaW5jZSBpdCBtYWtlcyB0aGlzIGdyb3VwIG9mIGZ1bmN0aW9ucyBpbmNvbnNpcy0KLSAgICAgICB0ZW50LiAgQWxzbywgbm8gaW1wbGVtZW50YXRpb24gb2YgIGN1cnNlcyAgZG9jdW1lbnRzICB0aGlzCisgICAgICAgdGVudC4gICBBbHNvLCAgbm8gIGltcGxlbWVudGF0aW9uIG9mIGN1cnNlcyBkb2N1bWVudHMgdGhpcwogICAgICAgIGluY29uc2lzdGVuY3kuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3V0aWwuM3guaHRtbCI+Y3Vyc191dGlsKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19jbGVhci4zeC5odG1sIj5jdXJzX2NsZWFyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbmNoLjN4Lmh0bWwiPmN1cnNfaW5jaCgzeCk8L0E+PC9TVFJPTkc+LgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2NsZWFyLjN4Lmh0bWwiPmN1cnNfY2xlYXIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luY2guM3guaHRtbCI+Y3Vyc19pbmNoKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnNzdHIuM3guaHRtbCI+Y3Vyc19pbnNzdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2luc3RyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbnN0ci4zeC5odG1sCmluZGV4IDk4YWUzOWUuLjE2YzQwZGUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2luc3RyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfaW5zdHIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2luc3RyLjN4LHYgMS4xMyAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19pbnN0ci4zeCx2IDEuMTYgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2luc3RyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19pbnN0ciAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19pbnN0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnN0ci4zeC5odG1sIj5jdXJzX2luc3RyKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luc3RyLjN4Lmh0bWwiPmN1cnNfaW5zdHIoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+aW5zdHI8L1NUUk9ORz4sICA8U1RST05HPmlubnN0cjwvU1RST05HPiwgPFNUUk9ORz53aW5zdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2lubnN0cjwvU1RST05HPiwgPFNUUk9ORz5tdmluc3RyPC9TVFJPTkc+LCA8U1RST05HPm12aW5uc3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2luLTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2lubnN0cjwvU1RST05HPiAtIGdldCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGZyb20gYSAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4KICAgICAgICB3aW5kb3cKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmluc3RyKGNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qc3RyKTs8L1NUUk9ORz4KQEAgLTY4LDcgKzY4LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIHJldHVybiAgYSAgc3RyaW5nICBvZiAgY2hhcmFjdGVycyAgaW4gIDxFTT5zdHI8L0VNPiwKICAgICAgICBleHRyYWN0ZWQgIHN0YXJ0aW5nICBhdCB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24gaW4gdGhlCiAgICAgICAgbmFtZWQgd2luZG93LiAgQXR0cmlidXRlcyBhcmUgc3RyaXBwZWQgIGZyb20gIHRoZSAgY2hhcmFjLQpAQCAtNzgsNyArNzgsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgQWxsICBvZiB0aGUgZnVuY3Rpb25zIHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUsIG9yIHRoZSBudW0tCiAgICAgICAgYmVyIG9mIGNoYXJhY3RlcnMgYWN0dWFsbHkgcmVhZCBpbnRvIHRoZSBzdHJpbmcuCiAKQEAgLTg2LDE0ICs4NiwxOCBAQAogICAgICAgIHRpb24sIGlmIHRoZSB3aW5kb3cgcGFyYW1ldGVyIGlzIG51bGwgb3IgdGhlIHN0ciBwYXJhbWV0ZXIKICAgICAgICBpcyBudWxsLCBhIHplcm8gaXMgcmV0dXJuZWQuCiAKKyAgICAgICBGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgIG1vdmUtCisgICAgICAgbWVudCAgdXNpbmcgIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4sIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKwogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IDxTVFJPTkc+d2lubnN0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgU1ZyNCBkb2VzIG5vdCBkb2N1bWVudCB3aGV0aGVyIGEgbGVuZ3RoIGxpbWl0IGluY2x1ZGVzICBvcgogICAgICAgIGV4Y2x1ZGVzIHRoZSB0cmFpbGluZyBOVUwuCiAKQEAgLTEwMywxNyArMTA3LDIzIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zdHIuM3guaHRtbCI+Y3Vyc19pbnN0cigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfaW53c3RyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbndzdHIuM3guaHRtbAppbmRleCAxN2UxM2IwLi44ZjVjM2NhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19pbndzdHIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19pbndzdHIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2lud3N0ci4zeCx2IDEuNSAyMDA2LzAyLzI1IDIxOjIwOjIwIHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19pbndzdHIuM3gsdiAxLjggMjAxMi8xMS8wMyAyMzowMzo1OSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX2lud3N0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfaW53c3RyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX2lud3N0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbndzdHIuM3guaHRtbCI+Y3Vyc19pbndzdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lud3N0ci4zeC5odG1sIj5jdXJzX2lud3N0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbndzdHI8L1NUUk9ORz4sICA8U1RST05HPmlubndzdHI8L1NUUk9ORz4sICA8U1RST05HPndpbndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+d2lubndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZpbndzdHI8L1NUUk9ORz4sIDxTVFJPTkc+bXZpbm53c3RyPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+bXZ3aW53c3RyPC9TVFJPTkc+LCA8U1RST05HPm12d2lubndzdHI8L1NUUk9ORz4gLSBnZXQgYSBzdHJpbmcgb2YgPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IGNoYXJhY3RlcnMKICAgICAgICBmcm9tIGEgY3Vyc2VzIHdpbmRvdwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aW53c3RyKHdjaGFyX3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnN0cjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgpAQCAtNjcsNyArNjcsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIHJvdXRpbmVzICByZXR1cm4gIGEgc3RyaW5nIG9mIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPiBjaGFyYWN0ZXJzIGluCiAgICAgICAgPEVNPndzdHI8L0VNPiwgZXh0cmFjdGVkIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiBpbgogICAgICAgIHRoZSAgbmFtZWQgd2luZG93LiAgQXR0cmlidXRlcyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUgY2hhci0KQEAgLTgyLDMwICs4MiwzOSBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IGFsbCByb3V0aW5lcyBleGNlcHQgPFNUUk9ORz53aW5ud3N0cjwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCByb3V0aW5lcyByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlLiBVcG9uIHN1Y2Nlc3NmdWwgY29tLQogICAgICAgIHBsZXRpb24sIHRoZSAqPFNUUk9ORz5pbndzdHI8L1NUUk9ORz4gcm91dGluZXMgcmV0dXJuIDxTVFJPTkc+T0s8L1NUUk9ORz4sIGFuZCB0aGUgICo8U1RST05HPmlubndzdHI8L1NUUk9ORz4KICAgICAgICByb3V0aW5lcyAgcmV0dXJuICB0aGUgIG51bWJlciAgb2YgY2hhcmFjdGVycyByZWFkIGludG8gdGhlCiAgICAgICAgc3RyaW5nLgogCisgICAgICAgRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yICBtb3ZlLQorICAgICAgIG1lbnQgIHVzaW5nICA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcworICAgICAgIG91dHNpZGUgdGhlIHdpbmRvdywgb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnN0ci4zeC5odG1sIj5jdXJzX2luc3RyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbl93Y2hzdHIuM3guaHRtbCI+Y3Vyc19pbl93Y2hzdHIoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW53c3RyLjN4Lmh0bWwiPmN1cnNfaW53c3RyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwKaW5kZXggMTFmNDFkMy4uNTdlNjQwOCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX2tlcm5lbC4zeCx2IDEuMTUgMjAwNS8wNS8xNSAxNjoxODoxMyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfa2VybmVsLjN4LHYgMS4yMCAyMDE1LzA3LzIxIDAxOjEwOjExIHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfa2VybmVsIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19rZXJuZWwgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfa2VybmVsIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmRlZl9wcm9nX21vZGU8L1NUUk9ORz4sIDxTVFJPTkc+ZGVmX3NoZWxsX21vZGU8L1NUUk9ORz4sIDxTVFJPTkc+cmVzZXRfcHJvZ19tb2RlPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+cmVzZXRfc2hlbGxfbW9kZTwvU1RST05HPiwgPFNUUk9ORz5yZXNldHR5PC9TVFJPTkc+LCA8U1RST05HPnNhdmV0dHk8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0c3l4PC9TVFJPTkc+LCA8U1RST05HPnNldHN5eDwvU1RST05HPiwKICAgICAgICA8U1RST05HPnJpcG9mZmxpbmU8L1NUUk9ORz4sIDxTVFJPTkc+Y3Vyc19zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+bmFwbXM8L1NUUk9ORz4gLSBsb3ctbGV2ZWwgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcm91dGluZXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRlZl9wcm9nX21vZGUodm9pZCk7PC9TVFJPTkc+CkBAIC02MiwxOSArNjIsMjIgQEAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnJlc2V0X3NoZWxsX21vZGUodm9pZCk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5yZXNldHR5KHZvaWQpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2F2ZXR0eSh2b2lkKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRzeXgoaW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5zZXRzeXgoaW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnJpcG9mZmxpbmUoaW50PC9TVFJPTkc+IDxTVFJPTkc+bGluZSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz4oKmluaXQpKFdJTkRPVzwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+aW50KSk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5jdXJzX3NldChpbnQ8L1NUUk9ORz4gPFNUUk9ORz52aXNpYmlsaXR5KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5hcG1zKGludDwvU1RST05HPiA8U1RST05HPm1zKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRzeXgoaW50PC9TVFJPTkc+IDxFTT55PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPng8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5zZXRzeXgoaW50PC9TVFJPTkc+IDxFTT55PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPng8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnJpcG9mZmxpbmUoaW50PC9TVFJPTkc+IDxFTT5saW5lPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz4oKjwvU1RST05HPjxFTT5pbml0PC9FTT48U1RST05HPikoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmN1cnNfc2V0KGludDwvU1RST05HPiA8RU0+dmlzaWJpbGl0eTwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bmFwbXMoaW50PC9TVFJPTkc+IDxFTT5tczwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmb2xsb3dpbmcgIHJvdXRpbmVzICBnaXZlIGxvdy1sZXZlbCBhY2Nlc3MgdG8gdmFyaW91cwotICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGNhcGFiaWxpdGllcy4gIFRoZXNlcyByb3V0aW5lcyB0eXBpY2FsbHkgIGFyZSAgdXNlZAorICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGNhcGFiaWxpdGllcy4gIFRoZXNlIHJvdXRpbmVzICB0eXBpY2FsbHkgIGFyZSAgdXNlZAogICAgICAgIGluc2lkZSBsaWJyYXJ5IHJvdXRpbmVzLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWRlZl9wcm9nX21vZGVfLWRlZl9zaGVsbF9tb2RlIj5kZWZfcHJvZ19tb2RlLCBkZWZfc2hlbGxfbW9kZTwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPmRlZl9wcm9nX21vZGU8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5kZWZfc2hlbGxfbW9kZTwvU1RST05HPiAgcm91dGluZXMgc2F2ZSB0aGUKICAgICAgICBjdXJyZW50IHRlcm1pbmFsIG1vZGVzIGFzIHRoZSAgInByb2dyYW0iICAoaW4gIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+KSAgb3IKICAgICAgICAic2hlbGwiICAgKG5vdCAgaW4gIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+KSAgc3RhdGUgIGZvciAgdXNlICBieSAgdGhlICA8U1RST05HPnJlLTwvU1RST05HPgpAQCAtODIsMTcgKzg1LDI2IEBACiAgICAgICAgYXV0b21hdGljYWxseSBieSA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4uICBUaGVyZSBpcyBvbmUgc3VjaCBzYXZlIGFyZWEgZm9yCiAgICAgICAgZWFjaCBzY3JlZW4gY29udGV4dCBhbGxvY2F0ZWQgYnkgPFNUUk9ORz5uZXd0ZXJtKCk8L1NUUk9ORz4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtcmVzZXRfcHJvZ19tb2RlXy1yZXNldF9zaGVsbF9tb2RlIj5yZXNldF9wcm9nX21vZGUsIHJlc2V0X3NoZWxsX21vZGU8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnJlc2V0X3Byb2dfbW9kZTwvU1RST05HPiBhbmQgPFNUUk9ORz5yZXNldF9zaGVsbF9tb2RlPC9TVFJPTkc+IHJvdXRpbmVzICByZXN0b3JlCiAgICAgICAgdGhlICB0ZXJtaW5hbCAgdG8gInByb2dyYW0iIChpbiA8U1RST05HPmN1cnNlczwvU1RST05HPikgb3IgInNoZWxsIiAob3V0IG9mCiAgICAgICAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4pIHN0YXRlLiAgVGhlc2UgYXJlICBkb25lICBhdXRvbWF0aWNhbGx5ICBieSAgPFNUUk9ORz5lbmR3aW48L1NUUk9ORz4KICAgICAgICBhbmQsICBhZnRlciAgYW4gIDxTVFJPTkc+ZW5kd2luPC9TVFJPTkc+LCBieSA8U1RST05HPmRvdXBkYXRlPC9TVFJPTkc+LCBzbyB0aGV5IG5vcm1hbGx5IGFyZQogICAgICAgIG5vdCBjYWxsZWQuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtcmVzZXR0eV8tc2F2ZXR0eSI+cmVzZXR0eSwgc2F2ZXR0eTwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+cmVzZXR0eTwvU1RST05HPiBhbmQgPFNUUk9ORz5zYXZldHR5PC9TVFJPTkc+ICByb3V0aW5lcyAgc2F2ZSAgYW5kICByZXN0b3JlICB0aGUKICAgICAgICBzdGF0ZSAgb2YgIHRoZSAgdGVybWluYWwgbW9kZXMuICA8U1RST05HPnNhdmV0dHk8L1NUUk9ORz4gc2F2ZXMgdGhlIGN1cnJlbnQKICAgICAgICBzdGF0ZSBpbiBhIGJ1ZmZlciBhbmQgPFNUUk9ORz5yZXNldHR5PC9TVFJPTkc+IHJlc3RvcmVzIHRoZSBzdGF0ZSAgdG8gIHdoYXQKICAgICAgICBpdCB3YXMgYXQgdGhlIGxhc3QgY2FsbCB0byA8U1RST05HPnNhdmV0dHk8L1NUUk9ORz4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtZ2V0c3l4Ij5nZXRzeXg8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5nZXRzeXg8L1NUUk9ORz4gcm91dGluZSByZXR1cm5zIHRoZSBjdXJyZW50IGNvb3JkaW5hdGVzIG9mIHRoZQogICAgICAgIHZpcnR1YWwgc2NyZWVuIGN1cnNvciBpbiA8RU0+eTwvRU0+IGFuZCA8RU0+eDwvRU0+LiAgSWYgPFNUUk9ORz5sZWF2ZW9rPC9TVFJPTkc+IGlzIGN1cnJlbnRseQogICAgICAgIDxTVFJPTkc+VFJVRTwvU1RST05HPiwgIHRoZW4gPFNUUk9ORz4tMTwvU1RST05HPiw8U1RST05HPi0xPC9TVFJPTkc+IGlzIHJldHVybmVkLiAgSWYgbGluZXMgaGF2ZSBiZWVuIHJlbW92ZWQKQEAgLTEwMCw2ICsxMTIsOSBAQAogICAgICAgIGNsdWRlICB0aGVzZSBsaW5lczsgdGhlcmVmb3JlLCA8RU0+eTwvRU0+IGFuZCA8RU0+eDwvRU0+IHNob3VsZCBiZSB1c2VkIG9ubHkKICAgICAgICBhcyBhcmd1bWVudHMgZm9yIDxTVFJPTkc+c2V0c3l4PC9TVFJPTkc+LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXNldHN5eCI+c2V0c3l4PC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5zZXRzeXg8L1NUUk9ORz4gcm91dGluZSBzZXRzIHRoZSB2aXJ0dWFsIHNjcmVlbiBjdXJzb3IgdG8gPEVNPnk8L0VNPiwgPEVNPng8L0VNPi4KICAgICAgICBJZiA8RU0+eTwvRU0+IGFuZCA8RU0+eDwvRU0+IGFyZSBib3RoIDxTVFJPTkc+LTE8L1NUUk9ORz4sIHRoZW4gPFNUUk9ORz5sZWF2ZW9rPC9TVFJPTkc+IGlzIHNldC4gIFRoZSB0d28gcm91LQogICAgICAgIHRpbmVzIDxTVFJPTkc+Z2V0c3l4PC9TVFJPTkc+IGFuZCA8U1RST05HPnNldHN5eDwvU1RST05HPiBhcmUgZGVzaWduZWQgdG8gYmUgdXNlZCBieSAgYSAgbGktCkBAIC0xMTAsMzUgKzEyNSw1NiBAQAogICAgICAgIDxTVFJPTkc+d25vdXRyZWZyZXNoPC9TVFJPTkc+ICBvbiAgaXRzICB3aW5kb3dzLCBjYWxsIDxTVFJPTkc+c2V0c3l4PC9TVFJPTkc+LCBhbmQgdGhlbiBjYWxsCiAgICAgICAgPFNUUk9ORz5kb3VwZGF0ZTwvU1RST05HPi4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1yaXBvZmZsaW5lIj5yaXBvZmZsaW5lPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5yaXBvZmZsaW5lPC9TVFJPTkc+IHJvdXRpbmUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBzYW1lIGZhY2lsaS0KICAgICAgICB0eSAgdGhhdCAgPFNUUk9ORz5zbGtfaW5pdDwvU1RST05HPiAgW3NlZSAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+XSB1c2VzIHRvIHJlZHVjZSB0aGUKICAgICAgICBzaXplIG9mIHRoZSBzY3JlZW4uICAgPFNUUk9ORz5yaXBvZmZsaW5lPC9TVFJPTkc+ICBtdXN0ICBiZSAgY2FsbGVkICBiZWZvcmUKLSAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gb3IgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+IGlzIGNhbGxlZC4gIElmIDxFTT5saW5lPC9FTT4gaXMgcG9zaXRpdmUsIGEgbGluZQotICAgICAgIGlzIHJlbW92ZWQgZnJvbSB0aGUgdG9wIG9mIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+OyBpZiA8RU0+bGluZTwvRU0+IGlzIG5lZ2F0aXZlLCAgYQotICAgICAgIGxpbmUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBib3R0b20uICBXaGVuIHRoaXMgaXMgZG9uZSBpbnNpZGUKLSAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4sIHRoZSByb3V0aW5lIDxTVFJPTkc+aW5pdDwvU1RST05HPiAoc3VwcGxpZWQgYnkgdGhlIHVzZXIpIGlzIGNhbGxlZAotICAgICAgIHdpdGggIHR3byBhcmd1bWVudHM6IGEgd2luZG93IHBvaW50ZXIgdG8gdGhlIG9uZS1saW5lIHdpbi0KLSAgICAgICBkb3cgdGhhdCBoYXMgYmVlbiBhbGxvY2F0ZWQgYW5kIGFuIGludGVnZXIgd2l0aCB0aGUgbnVtYmVyCi0gICAgICAgb2YgY29sdW1ucyBpbiB0aGUgd2luZG93LiAgSW5zaWRlIHRoaXMgaW5pdGlhbGl6YXRpb24gcm91LQotICAgICAgIHRpbmUsIHRoZSBpbnRlZ2VyIHZhcmlhYmxlcyA8U1RST05HPkxJTkVTPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+Q09MUzwvU1RST05HPiAgKGRlZmluZWQgIGluCi0gICAgICAgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+KSBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgYWNjdXJhdGUgYW5kIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4KLSAgICAgICBvciA8U1RST05HPmRvdXBkYXRlPC9TVFJPTkc+IG11c3Qgbm90IGJlIGNhbGxlZC4gIEl0IGlzIGFsbG93YWJsZSAgdG8gIGNhbGwKLSAgICAgICA8U1RST05HPndub3V0cmVmcmVzaDwvU1RST05HPiBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuCisgICAgICAgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IG9yIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBpcyBjYWxsZWQsIHRvIHByZXBhcmUgdGhlc2UgaW5pdGlhbCBhYy0KKyAgICAgICB0aW9uczoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIDxFTT5saW5lPC9FTT4gaXMgcG9zaXRpdmUsIGEgbGluZSBpcyByZW1vdmVkIGZyb20gdGhlIHRvcCBvZgorICAgICAgICAgICA8U1RST05HPnN0ZHNjcjwvU1RST05HPi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGlmICA8RU0+bGluZTwvRU0+ICBpcyBuZWdhdGl2ZSwgYSBsaW5lIGlzIHJlbW92ZWQgZnJvbSB0aGUgYm90LQorICAgICAgICAgICB0b20uCisKKyAgICAgICBXaGVuIHRoZSByZXN1bHRpbmcgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbnNpZGUgIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiwKKyAgICAgICB0aGUgcm91dGluZSA8U1RST05HPmluaXQ8L1NUUk9ORz4gKHN1cHBsaWVkIGJ5IHRoZSB1c2VyKSBpcyBjYWxsZWQgd2l0aCB0d28KKyAgICAgICBhcmd1bWVudHM6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIHdpbmRvdyBwb2ludGVyIHRvIHRoZSBvbmUtbGluZSB3aW5kb3cgdGhhdCBoYXMgIGJlZW4KKyAgICAgICAgICAgYWxsb2NhdGVkIGFuZAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYW4gaW50ZWdlciB3aXRoIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgd2luZG93LgorCisgICAgICAgSW5zaWRlICB0aGlzIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIHRoZSBpbnRlZ2VyIHZhcmlhYmxlcworICAgICAgIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Q09MUzwvU1RST05HPiAoZGVmaW5lZCBpbiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4pIGFyZSBub3QgIGd1YXJhbnRlZWQKKyAgICAgICB0byAgYmUgIGFjY3VyYXRlICBhbmQgIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4gIG9yICA8U1RST05HPmRvdXBkYXRlPC9TVFJPTkc+ICBtdXN0IG5vdCBiZQorICAgICAgIGNhbGxlZC4gIEl0IGlzIGFsbG93YWJsZSB0byBjYWxsIDxTVFJPTkc+d25vdXRyZWZyZXNoPC9TVFJPTkc+ICBkdXJpbmcgIHRoZQorICAgICAgIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuCiAKICAgICAgICA8U1RST05HPnJpcG9mZmxpbmU8L1NUUk9ORz4gIGNhbiAgYmUgY2FsbGVkIHVwIHRvIGZpdmUgdGltZXMgYmVmb3JlIGNhbGxpbmcKICAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gb3IgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+LgogCi0gICAgICAgVGhlIDxTVFJPTkc+Y3Vyc19zZXQ8L1NUUk9ORz4gcm91dGluZSBzZXRzIHRoZSBjdXJzb3Igc3RhdGUgaXMgc2V0ICB0byAgaW4tCi0gICAgICAgdmlzaWJsZSwgIG5vcm1hbCwgIG9yIHZlcnkgdmlzaWJsZSBmb3IgPFNUUk9ORz52aXNpYmlsaXR5PC9TVFJPTkc+IGVxdWFsIHRvCi0gICAgICAgPFNUUk9ORz4wPC9TVFJPTkc+LCA8U1RST05HPjE8L1NUUk9ORz4sIG9yIDxTVFJPTkc+MjwvU1RST05HPiByZXNwZWN0aXZlbHkuICBJZiAgdGhlICB0ZXJtaW5hbCAgc3VwcG9ydHMgIHRoZQotICAgICAgIDxFTT52aXNpYmlsaXR5PC9FTT4gIHJlcXVlc3RlZCwgIHRoZSAgcHJldmlvdXMgIDxFTT5jdXJzb3I8L0VNPiBzdGF0ZSBpcyByZS0KLSAgICAgICB0dXJuZWQ7IG90aGVyd2lzZSwgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaXMgcmV0dXJuZWQuCiAKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWN1cnNfc2V0Ij5jdXJzX3NldDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+Y3Vyc19zZXQ8L1NUUk9ORz4gcm91dGluZSBzZXRzIHRoZSBjdXJzb3Igc3RhdGUgIHRvICBpbnZpc2libGUsCisgICAgICAgbm9ybWFsLCBvciB2ZXJ5IHZpc2libGUgZm9yIDxTVFJPTkc+dmlzaWJpbGl0eTwvU1RST05HPiBlcXVhbCB0byA8U1RST05HPjA8L1NUUk9ORz4sIDxTVFJPTkc+MTwvU1RST05HPiwgb3IgPFNUUk9ORz4yPC9TVFJPTkc+CisgICAgICAgcmVzcGVjdGl2ZWx5LiAgSWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIHRoZSA8RU0+dmlzaWJpbGl0eTwvRU0+IHJlLQorICAgICAgIHF1ZXN0ZWQsIHRoZSBwcmV2aW91cyA8RU0+Y3Vyc29yPC9FTT4gc3RhdGUgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwKKyAgICAgICA8U1RST05HPkVSUjwvU1RST05HPiBpcyByZXR1cm5lZC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1uYXBtcyI+bmFwbXM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPm5hcG1zPC9TVFJPTkc+IHJvdXRpbmUgaXMgdXNlZCB0byBzbGVlcCBmb3IgPEVNPm1zPC9FTT4gbWlsbGlzZWNvbmRzLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgRXhjZXB0IGZvciA8U1RST05HPmN1cnNfc2V0PC9TVFJPTkc+LCB0aGVzZSByb3V0aW5lcyBhbHdheXMgcmV0dXJuIDxTVFJPTkc+T0s8L1NUUk9ORz4uCiAKICAgICAgICA8U1RST05HPmN1cnNfc2V0PC9TVFJPTkc+IHJldHVybnMgdGhlIHByZXZpb3VzIGN1cnNvciBzdGF0ZSwgb3IgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaWYgIHRoZQpAQCAtMTQ3LDIwICsxODMsMTkgQEAKICAgICAgICBYL09wZW4gIGRlZmluZXMgIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiB0aGlzIGltcGxlbWVudGEtCiAgICAgICAgdGlvbgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+ZGVmX3Byb2dfbW9kZTwvU1RST05HPiwgPFNUUk9ORz5kZWZfc2hlbGxfbW9kZTwvU1RST05HPiwgPFNUUk9ORz5yZXNldF9wcm9nX21vZGU8L1NUUk9ORz4sIDxTVFJPTkc+cmUtPC9TVFJPTkc+Ci0gICAgICAgICAgICAgIDxTVFJPTkc+c2V0X3NoZWxsX21vZGU8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIHdhcyAgbm90ICBpbmktCi0gICAgICAgICAgICAgICAgICAgdGlhbGl6ZWQsICBvciAgaWYgIHRoZSAgSS9PIGNhbGwgdG8gb2J0YWluIHRoZQotICAgICAgICAgICAgICAgICAgIHRlcm1pbmFsIHNldHRpbmdzIGZhaWxzLgorICAgICAgIDxTVFJPTkc+ZGVmX3Byb2dfbW9kZTwvU1RST05HPiwgPFNUUk9ORz5kZWZfc2hlbGxfbW9kZTwvU1RST05HPiwgPFNUUk9ORz5yZXNldF9wcm9nX21vZGU8L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz5yZXNldF9zaGVsbF9tb2RlPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm4gIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCB3YXMgbm90IGluaXRpYWxpemVkLAorICAgICAgICAgICAgb3IgaWYgdGhlIEkvTyBjYWxsIHRvIG9idGFpbiAgdGhlICB0ZXJtaW5hbCAgc2V0dGluZ3MKKyAgICAgICAgICAgIGZhaWxzLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+cmlwb2ZmbGluZTwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgIGlmICB0aGUgIG1heGltdW0gIG51bWJlciAgb2YKLSAgICAgICAgICAgICAgICAgICByaXBwZWQtb2ZmICBsaW5lcyBleGNlZWRzIHRoZSBtYXhpbXVtIChOUklQUyA9Ci0gICAgICAgICAgICAgICAgICAgNSkuCisgICAgICAgPFNUUk9ORz5yaXBvZmZsaW5lPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm5zICBhbiBlcnJvciBpZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmlwcGVkLW9mZgorICAgICAgICAgICAgbGluZXMgZXhjZWVkcyB0aGUgbWF4aW11bSAoTlJJUFMgPSA1KS4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPmdldHN5eDwvU1RST05HPiBpcyBhIG1hY3JvLCBzbyA8U1RST05HPiZhbXA7PC9TVFJPTkc+IGlzIG5vdCBuZWNlc3NhcnkgIGJlZm9yZQogICAgICAgIHRoZSB2YXJpYWJsZXMgPEVNPnk8L0VNPiBhbmQgPEVNPng8L0VNPi4KIApAQCAtMTc3LDI5ICsyMTIsNDcgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbnMgPFNUUk9ORz5zZXRzeXg8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Z2V0c3l4PC9TVFJPTkc+IGFyZSBub3QgZGVzY3JpYmVkICBpbiAgdGhlCiAgICAgICAgWFNJICBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuICBBbGwgb3RoZXIgZnVuY3Rpb25zIGFyZSBhcwogICAgICAgIGRlc2NyaWJlZCBpbiBYU0kgQ3Vyc2VzLgogCiAgICAgICAgVGhlIFNWcjQgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgPFNUUk9ORz5zZXRzeXg8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Z2V0c3l4PC9TVFJPTkc+IGFzIGhhdi0KICAgICAgICBpbmcgIHJldHVybiAgdHlwZSAgaW50LiAgVGhpcyAgaXMgIG1pc2xlYWRpbmcsIGFzIHRoZXkgYXJlCi0gICAgICAgbWFjcm9zIHdpdGggbm8gZG9jdW1lbnRlZCBzZW1hbnRpY3MgZm9yIHRoZSByZXR1cm4gIHZhbHVlLgorICAgICAgIG1hY3JvcyB3aXRoIG5vIGRvY3VtZW50ZWQgc2VtYW50aWNzIGZvciB0aGUgcmV0dXJuIHZhbHVlLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+Y3Vyc19yZS08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5mcmVzaCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2NyX2R1bXAuM3guaHRtbCI+Y3Vyc19zY3JfZHVtcCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrKDN4KTwvQT48L1NUUk9ORz4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3V0b3B0cy4zeC5odG1sIj5jdXJzX291dG9wdHMoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+Y3Vyc19yZS08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5mcmVzaCgzeCk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY3JfZHVtcC4zeC5odG1sIj5jdXJzX3Njcl9kdW1wKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPmN1cnNfdmFyaS08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmFibGVzKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLWRlZl9wcm9nX21vZGVfLWRlZl9zaGVsbF9tb2RlIj5kZWZfcHJvZ19tb2RlLCBkZWZfc2hlbGxfbW9kZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1yZXNldF9wcm9nX21vZGVfLXJlc2V0X3NoZWxsX21vZGUiPnJlc2V0X3Byb2dfbW9kZSwgcmVzZXRfc2hlbGxfbW9kZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1yZXNldHR5Xy1zYXZldHR5Ij5yZXNldHR5LCBzYXZldHR5PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWdldHN5eCI+Z2V0c3l4PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXNldHN5eCI+c2V0c3l4PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXJpcG9mZmxpbmUiPnJpcG9mZmxpbmU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtY3Vyc19zZXQiPmN1cnNfc2V0PC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLW5hcG1zIj5uYXBtczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19sZWdhY3kuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX2xlZ2FjeS4zeC5odG1sCmluZGV4IGQxZGU1OTAuLjM2ZGI0YmYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX2xlZ2FjeS4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX2xlZ2FjeS4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzNCArMjYsMzYgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfbGVnYWN5LjN4LHYgMS4xIDIwMDcvMDQvMDcgMjM6NTQ6MjkgdG9tIEV4cCBACisgICogQElkOiBjdXJzX2xlZ2FjeS4zeCx2IDEuNSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfbGVnYWN5IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19sZWdhY3kgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfbGVnYWN5IDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX2xlZ2FjeS4zeC5odG1sIj5jdXJzX2xlZ2FjeSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfbGVnYWN5LjN4Lmh0bWwiPmN1cnNfbGVnYWN5KDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPmdldGJlZ3g8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0YmVneTwvU1RST05HPiwgPFNUUk9ORz5nZXRjdXJ4PC9TVFJPTkc+LCA8U1RST05HPmdldGN1cnk8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0bWF4eDwvU1RST05HPiwgPFNUUk9ORz5nZXRtYXh5PC9TVFJPTkc+LCA8U1RST05HPmdldC08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnBhcng8L1NUUk9ORz4sIDxTVFJPTkc+Z2V0cGFyeTwvU1RST05HPiAtIGdldCA8U1RST05HPmN1cnNlczwvU1RST05HPiBjdXJzb3IgYW5kIHdpbmRvdyBjb29yZGluYXRlcworPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgorICAgICAgIGdldGF0dHJzICAtICBnZXQgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+ICBjdXJzb3IgIGFuZCAgd2luZG93IGNvb3JkaW5hdGVzLAorICAgICAgIGF0dHJpYnV0ZXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmdldGF0dHJzKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Z2V0YmVneChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmdldGJlZ3koV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5nZXRjdXJ4KFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgpAQCAtNjYsNyArNjcsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+Z2V0YmVneTwvU1RST05HPiBhbmQgPFNUUk9ORz5nZXRiZWd4PC9TVFJPTkc+IGZ1bmN0aW9ucyByZXR1cm4gdGhlIHNhbWUgZGF0YSAgYXMKICAgICAgICA8U1RST05HPmdldGJlZ3l4PC9TVFJPTkc+LgogCkBAIC04MSwxMyArODIsMTMgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gYW4gaW50ZWdlciwgb3IgRVJSICBpZiAgdGhlICB3aW5kb3cKICAgICAgICBwYXJhbWV0ZXIgaXMgbnVsbC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIEFsbCAgb2YgIHRoZXNlIGludGVyZmFjZXMgYXJlIHByb3ZpZGVkIGFzIG1hY3JvcyBhbmQgZnVuYy0KICAgICAgICB0aW9ucy4gIFRoZSBtYWNyb3MgYXJlIHN1cHByZXNzZWQgKGFuZCBvbmx5IHRoZSAgZnVuY3Rpb25zCiAgICAgICAgcHJvdmlkZWQpICB3aGVuICA8U1RST05HPk5DVVJTRVNfT1BBUVVFPC9TVFJPTkc+ICBpcyBkZWZpbmVkLiAgVGhlIHN0YW5kYXJkCkBAIC05OCwyMyArOTksMjkgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0KICAgICAgICBWIGltcGxlbWVudGF0aW9ucy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldHl4LjN4Lmh0bWwiPmN1cnNfZ2V0eXgoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19sZWdhY3kuM3guaHRtbCI+Y3Vyc19sZWdhY3koM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX21lbWxlYWtzLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19tZW1sZWFrcy4zeC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNjQ0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19tZW1sZWFrcy4zeC5odG1sCkBAIC0wLDAgKzEsMTE2IEBACis8IS0tIAorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQ29weXJpZ2h0IChjKSAyMDA4LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBJZDogY3Vyc19tZW1sZWFrcy4zeCx2IDEuMyAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAorLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgorPFRJVExFPmN1cnNfbWVtbGVha3MgM3g8L1RJVExFPgorPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+Cis8Qk9EWT4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX21lbWxlYWtzIDN4PC9IMT4KKzxQUkU+Cis8U1RST05HPjxBIEhSRUY9ImN1cnNfbWVtbGVha3MuM3guaHRtbCI+Y3Vyc19tZW1sZWFrcygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tZW1sZWFrcy4zeC5odG1sIj5jdXJzX21lbWxlYWtzKDN4KTwvQT48L1NUUk9ORz4KKworCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5fbmNfZnJlZWFsbDwvU1RST05HPiA8U1RST05HPl9uY19mcmVlX2FuZF9leGl0PC9TVFJPTkc+IC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gbWVtb3J5LWxlYWsKKyAgICAgICBjaGVja2luZworCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KKworICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPl9uY19mcmVlYWxsKHZvaWQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPl9uY19mcmVlX2FuZF9leGl0KGludCk7PC9TVFJPTkc+CisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc2ltcGxpZnkgIGFuYWx5c2lzICBvZiAgbWVtb3J5CisgICAgICAgbGVha3MgIGluICB0aGUgIG5jdXJzZXMgIGxpYnJhcnkuICAgVGhleSAgYXJlIG5vcm1hbGx5IG5vdAorICAgICAgIGF2YWlsYWJsZTsgdGhleSBtdXN0IGJlIGNvbmZpZ3VyZWQgIGludG8gIHRoZSAgbGlicmFyeSAgYXQKKyAgICAgICBidWlsZCAgdGltZSAgdXNpbmcgIHRoZSA8U1RST05HPi0tZGlzYWJsZS1sZWFrczwvU1RST05HPiBvcHRpb24uICBUaGF0IGNvbS0KKyAgICAgICBwaWxlcy1pbiBjb2RlIHRoYXQgZnJlZXMgbWVtb3J5IHRoYXQgbm9ybWFsbHkgd291bGQgbm90IGJlCisgICAgICAgZnJlZWQuCisKKyAgICAgICBBbnkgIGltcGxlbWVudGF0aW9uIG9mIGN1cnNlcyBtdXN0IG5vdCBmcmVlIHRoZSBtZW1vcnkgYXMtCisgICAgICAgc29jaWF0ZWQgd2l0aCBhIHNjcmVlbiwgc2luY2UgKGV2ZW4gYWZ0ZXIgY2FsbGluZyA8U1RST05HPmVuZHdpbjwvU1RST05HPiksCisgICAgICAgaXQgIG11c3QgYmUgYXZhaWxhYmxlIGZvciB1c2UgaW4gdGhlIG5leHQgY2FsbCB0byA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4uCisgICAgICAgVGhlcmUgYXJlIGFsc28gY2h1bmtzIG9mIG1lbW9yeSBoZWxkIGZvciBwZXJmb3JtYW5jZSAgcmVhLQorICAgICAgIHNvbnMuICAgVGhhdCAgbWFrZXMgaXQgaGFyZCB0byBhbmFseXplIGN1cnNlcyBhcHBsaWNhdGlvbnMKKyAgICAgICBmb3IgbWVtb3J5IGxlYWtzLiAgVG8gd29yayBhcm91bmQgdGhpcywgb25lICBjYW4gIGJ1aWxkICBhCisgICAgICAgZGVidWdnaW5nIHZlcnNpb24gb2YgdGhlIG5jdXJzZXMgbGlicmFyeSB3aGljaCBmcmVlcyB0aG9zZQorICAgICAgIGNodW5rcyB3aGljaCBpdCBjYW4sIGFuZCBwcm92aWRlcyB0aGVzZSBmdW5jdGlvbnMgdG8gIGZyZWUKKyAgICAgICBhbGwgb2YgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIG5jdXJzZXMgbGlicmFyeS4KKworICAgICAgIFRoZSAgX25jX2ZyZWVfYW5kX2V4aXQgZnVuY3Rpb24gaXMgdGhlIHByZWZlcnJlZCBvbmUgc2luY2UKKyAgICAgICBzb21lIG9mIHRoZSBtZW1vcnkgd2hpY2ggaXMgZnJlZWQgbWF5IGJlIHJlcXVpcmVkIGZvciAgdGhlCisgICAgICAgYXBwbGljYXRpb24gIHRvICBjb250aW51ZSAgcnVubmluZy4gICBJdHMgcGFyYW1ldGVyIGlzIHRoZQorICAgICAgIGNvZGUgdG8gcGFzcyB0byB0aGUgZXhpdCByb3V0aW5lLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IHJldHVybiBhIHZhbHVlLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydCBvZiB0aGUgWFNJIGludGVyZmFjZS4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPi4KKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tZW1sZWFrcy4zeC5odG1sIj5jdXJzX21lbWxlYWtzKDN4KTwvQT48L1NUUk9ORz4KKzwvUFJFPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KKzwvQk9EWT4KKzwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX21vdXNlLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19tb3VzZS4zeC5odG1sCmluZGV4IDIzMDk0ODIuLmY0OTUxYzEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX21vdXNlLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfbW91c2UuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDYwICsyNyw2NCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19tb3VzZS4zeCx2IDEuMzAgMjAwNi8xMi8zMCAyMzo0MzozNCB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfbW91c2UuM3gsdiAxLjQyIDIwMTUvMDcvMjEgMDk6Mjc6MzkgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19tb3VzZSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfbW91c2UgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfbW91c2UgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfbW91c2UuM3guaHRtbCI+Y3Vyc19tb3VzZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tb3VzZS4zeC5odG1sIj5jdXJzX21vdXNlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPmdldG1vdXNlPC9TVFJPTkc+LCA8U1RST05HPnVuZ2V0bW91c2U8L1NUUk9ORz4sIDxTVFJPTkc+bW91c2VtYXNrPC9TVFJPTkc+LCA8U1RST05HPndlbmNsb3NlPC9TVFJPTkc+LCA8U1RST05HPm1vdXNlX3RyYWZvPC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+d21vdXNlX3RyYWZvPC9TVFJPTkc+LCA8U1RST05HPm1vdXNlaW50ZXJ2YWw8L1NUUk9ORz4gLSBtb3VzZSBpbnRlcmZhY2UgdGhyb3VnaAotICAgICAgIGN1cnNlcworPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+aGFzX21vdXNlPC9TVFJPTkc+LCA8U1RST05HPmdldG1vdXNlPC9TVFJPTkc+LCA8U1RST05HPnVuZ2V0bW91c2U8L1NUUk9ORz4sIDxTVFJPTkc+bW91c2VtYXNrPC9TVFJPTkc+LCA8U1RST05HPndlbmNsb3NlPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+bW91c2VfdHJhZm88L1NUUk9ORz4sIDxTVFJPTkc+d21vdXNlX3RyYWZvPC9TVFJPTkc+LCA8U1RST05HPm1vdXNlaW50ZXJ2YWw8L1NUUk9ORz4gLSBtb3VzZSBpbnRlcmZhY2UKKyAgICAgICB0aHJvdWdoIGN1cnNlcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+dHlwZWRlZjwvU1RST05HPiA8U1RST05HPnVuc2lnbmVkPC9TVFJPTkc+IDxTVFJPTkc+bG9uZzwvU1RST05HPiA8U1RST05HPm1tYXNrX3Q7PC9TVFJPTkc+CiAKLSAgICAgICB0eXBlZGVmIHN0cnVjdAotICAgICAgIHsKLSAgICAgICAgICAgc2hvcnQgaWQ7ICAgICAgICAgPEVNPi8qPC9FTT4gPEVNPklEPC9FTT4gPEVNPnRvPC9FTT4gPEVNPmRpc3Rpbmd1aXNoPC9FTT4gPEVNPm11bHRpcGxlPC9FTT4gPEVNPmRldmljZXM8L0VNPiA8RU0+Ki88L0VNPgorICAgICAgIDxTVFJPTkc+dHlwZWRlZjwvU1RST05HPiA8U1RST05HPnN0cnVjdDwvU1RST05HPiA8U1RST05HPns8L1NUUk9ORz4KKyAgICAgICAgICAgPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8U1RST05HPmlkOzwvU1RST05HPiAgICAgICAgIDxFTT4vKjwvRU0+IDxFTT5JRDwvRU0+IDxFTT50bzwvRU0+IDxFTT5kaXN0aW5ndWlzaDwvRU0+IDxFTT5tdWx0aXBsZTwvRU0+IDxFTT5kZXZpY2VzPC9FTT4gPEVNPiovPC9FTT4KICAgICAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54LDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+ejs8L1NUUk9ORz4gICAgICA8RU0+Lyo8L0VNPiA8RU0+ZXZlbnQ8L0VNPiA8RU0+Y29vcmRpbmF0ZXM8L0VNPiA8RU0+Ki88L0VNPgogICAgICAgICAgICA8U1RST05HPm1tYXNrX3Q8L1NUUk9ORz4gPFNUUk9ORz5ic3RhdGU7PC9TVFJPTkc+ICAgPEVNPi8qPC9FTT4gPEVNPmJ1dHRvbjwvRU0+IDxFTT5zdGF0ZTwvRU0+IDxFTT5iaXRzPC9FTT4gPEVNPiovPC9FTT4KLSAgICAgICA8U1RST05HPn08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPk1FVkVOVDs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmdldG1vdXNlKE1FVkVOVDwvU1RST05HPiA8U1RST05HPipldmVudCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz51bmdldG1vdXNlKE1FVkVOVDwvU1RST05HPiA8U1RST05HPipldmVudCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5tbWFza190PC9TVFJPTkc+IDxTVFJPTkc+bW91c2VtYXNrKG1tYXNrX3Q8L1NUUk9ORz4gPFNUUk9ORz5uZXdtYXNrLDwvU1RST05HPiA8U1RST05HPm1tYXNrX3Q8L1NUUk9ORz4gPFNUUk9ORz4qb2xkbWFzayk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+d2VuY2xvc2UoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+bW91c2VfdHJhZm8oaW50KjwvU1RST05HPiA8U1RST05HPnBZLDwvU1RST05HPiA8U1RST05HPmludCo8L1NUUk9ORz4gPFNUUk9ORz5wWCw8L1NUUk9ORz4gPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+dG9fc2NyZWVuKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz53bW91c2VfdHJhZm8oY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1cqPC9TVFJPTkc+IDxTVFJPTkc+d2luLDwvU1RST05HPiA8U1RST05HPmludCo8L1NUUk9ORz4gPFNUUk9ORz5wWSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQqPC9TVFJPTkc+IDxTVFJPTkc+cFgsPC9TVFJPTkc+Ci0gICAgICAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz50b19zY3JlZW4pOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bW91c2VpbnRlcnZhbChpbnQ8L1NUUk9ORz4gPFNUUk9ORz5lcnZhbCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz59PC9TVFJPTkc+IDxTVFJPTkc+TUVWRU5UOzwvU1RST05HPgorCisgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aGFzX21vdXNlKHZvaWQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Z2V0bW91c2UoTUVWRU5UPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5ldmVudDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dW5nZXRtb3VzZShNRVZFTlQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPmV2ZW50PC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5tbWFza190PC9TVFJPTkc+IDxTVFJPTkc+bW91c2VtYXNrKG1tYXNrX3Q8L1NUUk9ORz4gPEVNPm5ld21hc2s8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPm1tYXNrX3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9sZG1hc2s8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz53ZW5jbG9zZShjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+eDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPm1vdXNlX3RyYWZvKGludCo8L1NUUk9ORz4gPEVNPnBZPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQqPC9TVFJPTkc+IDxFTT5wWDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8RU0+dG88L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5zY3JlZW48L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz53bW91c2VfdHJhZm8oY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1cqPC9TVFJPTkc+IDxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludCo8L1NUUk9ORz4gPEVNPnBZPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQqPC9TVFJPTkc+IDxFTT5wWDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+CisgICAgICAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPEVNPnRvPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+c2NyZWVuPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tb3VzZWludGVydmFsKGludDwvU1RST05HPiA8RU0+ZXJ2YWw8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICBmdW5jdGlvbnMgcHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gbW91c2UgZXZlbnRzIGZyb20KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LiAgTW91c2UgZXZlbnRzIGFyZSAgcmVwcmVzZW50ZWQgIGJ5ICA8U1RST05HPktFWV9NT1VTRTwvU1RST05HPgogICAgICAgIHBzZXVkby1rZXkgdmFsdWVzIGluIHRoZSA8U1RST05HPndnZXRjaDwvU1RST05HPiBpbnB1dCBzdHJlYW0uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbW91c2VtYXNrIj5tb3VzZW1hc2s8L2E+PC9IMz48UFJFPgogICAgICAgIFRvICBtYWtlIG1vdXNlIGV2ZW50cyB2aXNpYmxlLCB1c2UgdGhlIDxTVFJPTkc+bW91c2VtYXNrPC9TVFJPTkc+IGZ1bmN0aW9uLgogICAgICAgIFRoaXMgd2lsbCBzZXQgdGhlIG1vdXNlIGV2ZW50cyB0byAgYmUgIHJlcG9ydGVkLiAgIEJ5ICBkZS0KICAgICAgICBmYXVsdCwgIG5vICBtb3VzZSAgZXZlbnRzIGFyZSByZXBvcnRlZC4gIFRoZSBmdW5jdGlvbiB3aWxsCkBAIC05NSw4ICs5OCwxMCBAQAogICAgICAgIHRoZSAgbW91c2UgcG9pbnRlcjsgc2V0dGluZyBhIG5vbnplcm8gbWFzayBtYXkgdHVybiBpdCBvbi4KICAgICAgICBXaGV0aGVyIHRoaXMgaGFwcGVucyBpcyBkZXZpY2UtZGVwZW5kZW50LgogCi0gICAgICAgSGVyZSBhcmUgdGhlIG1vdXNlIGV2ZW50IHR5cGUgbWFza3Mgd2hpY2ggbWF5IGJlIGRlZmluZWQ6CiAKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU1vdXNlLWV2ZW50cyI+TW91c2UgZXZlbnRzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBIZXJlIGFyZSB0aGUgbW91c2UgZXZlbnQgdHlwZSBtYXNrcyB3aGljaCBtYXkgYmUgZGVmaW5lZDoKIAogICAgICAgIDxFTT5OYW1lPC9FTT4gICAgICAgICAgICAgICAgICAgICA8RU0+RGVzY3JpcHRpb248L0VNPgogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTEwLDkgKzExNSwxMCBAQAogICAgICAgIEJVVFRPTjJfUkVMRUFTRUQgICAgICAgICBtb3VzZSBidXR0b24gMiB1cAogICAgICAgIEJVVFRPTjJfQ0xJQ0tFRCAgICAgICAgICBtb3VzZSBidXR0b24gMiBjbGlja2VkCiAgICAgICAgQlVUVE9OMl9ET1VCTEVfQ0xJQ0tFRCAgIG1vdXNlIGJ1dHRvbiAyIGRvdWJsZSBjbGlja2VkCisKKwogICAgICAgIEJVVFRPTjJfVFJJUExFX0NMSUNLRUQgICBtb3VzZSBidXR0b24gMiB0cmlwbGUgY2xpY2tlZAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiAgICAgICAgQlVUVE9OM19QUkVTU0VEICAgICAgICAgIG1vdXNlIGJ1dHRvbiAzIGRvd24KICAgICAgICBCVVRUT04zX1JFTEVBU0VEICAgICAgICAgbW91c2UgYnV0dG9uIDMgdXAKICAgICAgICBCVVRUT04zX0NMSUNLRUQgICAgICAgICAgbW91c2UgYnV0dG9uIDMgY2xpY2tlZApAQCAtMTM4LDcgKzE0NCwxMCBAQAogICAgICAgIFJFUE9SVF9NT1VTRV9QT1NJVElPTiAgICByZXBvcnQgbW91c2UgbW92ZW1lbnQKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgIE9uY2UgYSBjbGFzcyBvZiBtb3VzZSBldmVudHMgaGF2ZSBiZWVuIG1hZGUgdmlzaWJsZSAgaW4gIGEKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtZ2V0bW91c2UiPmdldG1vdXNlPC9hPjwvSDM+PFBSRT4KKyAgICAgICBPbmNlIGEgY2xhc3Mgb2YgbW91c2UgZXZlbnRzIGhhcyBiZWVuIG1hZGUgIHZpc2libGUgIGluICBhCiAgICAgICAgd2luZG93LCBjYWxsaW5nIHRoZSA8U1RST05HPndnZXRjaDwvU1RST05HPiBmdW5jdGlvbiBvbiB0aGF0IHdpbmRvdyBtYXkgcmUtCiAgICAgICAgdHVybiA8U1RST05HPktFWV9NT1VTRTwvU1RST05HPiBhcyBhbiBpbmRpY2F0b3IgdGhhdCBhIG1vdXNlIGV2ZW50IGhhcyBiZWVuCiAgICAgICAgcXVldWVkLiAgIFRvIHJlYWQgdGhlIGV2ZW50IGRhdGEgYW5kIHBvcCB0aGUgZXZlbnQgb2ZmIHRoZQpAQCAtMTQ4LDQ1ICsxNTcsNjggQEAKICAgICAgICBhcyAgeSAgYW5kICB4ICBpbiAgdGhlIGV2ZW50IHN0cnVjdHVyZSBjb29yZGluYXRlcyB3aWxsIGJlCiAgICAgICAgc2NyZWVuLXJlbGF0aXZlIGNoYXJhY3Rlci1jZWxsIGNvb3JkaW5hdGVzLiAgVGhlICByZXR1cm5lZAogICAgICAgIHN0YXRlICBtYXNrICB3aWxsIGhhdmUgZXhhY3RseSBvbmUgYml0IHNldCB0byBpbmRpY2F0ZSB0aGUKLSAgICAgICBldmVudCB0eXBlLgorICAgICAgIGV2ZW50IHR5cGUuICBUaGUgY29ycmVzcG9uZGluZyBkYXRhIGluIHRoZSBxdWV1ZSBpcyBtYXJrZWQKKyAgICAgICBpbnZhbGlkLiAgIEEgc3Vic2VxdWVudCBjYWxsIHRvIDxTVFJPTkc+Z2V0bW91c2U8L1NUUk9ORz4gd2lsbCByZXRyaWV2ZSB0aGUKKyAgICAgICBuZXh0IG9sZGVyIGl0ZW0gZnJvbSB0aGUgcXVldWUuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtdW5nZXRtb3VzZSI+dW5nZXRtb3VzZTwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+dW5nZXRtb3VzZTwvU1RST05HPiBmdW5jdGlvbiBiZWhhdmVzICBhbmFsb2dvdXNseSAgdG8gIDxTVFJPTkc+dW5nZXRjaDwvU1RST05HPi4KICAgICAgICBJdCAgcHVzaGVzIGEgPFNUUk9ORz5LRVlfTU9VU0U8L1NUUk9ORz4gZXZlbnQgb250byB0aGUgaW5wdXQgcXVldWUsIGFuZCBhcy0KICAgICAgICBzb2NpYXRlcyB3aXRoIHRoYXQgZXZlbnQgdGhlIGdpdmVuIHN0YXRlIGRhdGEgYW5kICBzY3JlZW4tCiAgICAgICAgcmVsYXRpdmUgY2hhcmFjdGVyLWNlbGwgY29vcmRpbmF0ZXMuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtd2VuY2xvc2UiPndlbmNsb3NlPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+d2VuY2xvc2U8L1NUUk9ORz4gIGZ1bmN0aW9uICB0ZXN0cyAgd2hldGhlciAgYSAgZ2l2ZW4gIHBhaXIgb2YKICAgICAgICBzY3JlZW4tcmVsYXRpdmUgY2hhcmFjdGVyLWNlbGwgY29vcmRpbmF0ZXMgaXMgZW5jbG9zZWQgIGJ5Ci0gICAgICAgYSAgZ2l2ZW4gIHdpbmRvdywgcmV0dXJuaW5nIFRSVUUgaWYgaXQgaXMgYW5kIEZBTFNFIG90aGVyLQorICAgICAgIGEgIGdpdmVuICB3aW5kb3csIHJldHVybmluZyA8U1RST05HPlRSVUU8L1NUUk9ORz4gaWYgaXQgaXMgYW5kIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gb3RoZXItCiAgICAgICAgd2lzZS4gIEl0IGlzIHVzZWZ1bCBmb3IgZGV0ZXJtaW5pbmcgIHdoYXQgIHN1YnNldCAgb2YgIHRoZQogICAgICAgIHNjcmVlbiB3aW5kb3dzIGVuY2xvc2UgdGhlIGxvY2F0aW9uIG9mIGEgbW91c2UgZXZlbnQuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtd21vdXNlX3RyYWZvIj53bW91c2VfdHJhZm88L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPndtb3VzZV90cmFmbzwvU1RST05HPiBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgZ2l2ZW4gcGFpciBvZiBjb29yLQogICAgICAgIGRpbmF0ZXMgZnJvbSBzdGRzY3ItcmVsYXRpdmUgIGNvb3JkaW5hdGVzICB0byAgY29vcmRpbmF0ZXMKLSAgICAgICByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gd2luZG93IG9yIHZpY2UgdmVyc2EuICBQbGVhc2UgcmVtZW0tCi0gICAgICAgYmVyLCB0aGF0IHN0ZHNjci1yZWxhdGl2ZSBjb29yZGluYXRlcyBhcmUgbm90IGFsd2F5cyBpZGVuLQotICAgICAgIHRpY2FsICB0byB3aW5kb3ctcmVsYXRpdmUgY29vcmRpbmF0ZXMgZHVlIHRvIHRoZSBtZWNoYW5pc20KLSAgICAgICB0byByZXNlcnZlIGxpbmVzIG9uIHRvcCBvciBib3R0b20gb2YgdGhlIHNjcmVlbiBmb3IgIG90aGVyCi0gICAgICAgcHVycG9zZXMgKHNlZSB0aGUgPFNUUk9ORz5yaXBvZmZsaW5lKCk8L1NUUk9ORz4gYW5kIDxTVFJPTkc+c2xrX2luaXQ8L1NUUk9ORz4gY2FsbHMsIGZvciBleC0KLSAgICAgICBhbXBsZSkuICBJZiB0aGUgcGFyYW1ldGVyIDxTVFJPTkc+dG9fc2NyZWVuPC9TVFJPTkc+IGlzIDxTVFJPTkc+VFJVRTwvU1RST05HPiwgdGhlICBwb2ludGVycwotICAgICAgIDxTVFJPTkc+cFksPC9TVFJPTkc+IDxTVFJPTkc+cFg8L1NUUk9ORz4gbXVzdCByZWZlcmVuY2UgdGhlIGNvb3JkaW5hdGVzIG9mIGEgbG9jYXRpb24gaW5zaWRlCi0gICAgICAgdGhlIHdpbmRvdyA8U1RST05HPndpbjwvU1RST05HPi4gIFRoZXkgYXJlIGNvbnZlcnRlZCB0byB3aW5kb3ctcmVsYXRpdmUgY28tCi0gICAgICAgb3JkaW5hdGVzICBhbmQgcmV0dXJuZWQgdGhyb3VnaCB0aGUgcG9pbnRlcnMuICBJZiB0aGUgY29uLQotICAgICAgIHZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDxTVFJPTkc+VFJVRTwvU1RST05HPi4gIElmIG9uZQotICAgICAgIG9mICB0aGUgIHBhcmFtZXRlcnMgd2FzIE5VTEwgb3IgdGhlIGxvY2F0aW9uIGlzIG5vdCBpbnNpZGUKLSAgICAgICB0aGUgd2luZG93LCA8U1RST05HPkZBTFNFPC9TVFJPTkc+IGlzIHJldHVybmVkLiAgSWYgPFNUUk9ORz50b19zY3JlZW48L1NUUk9ORz4gaXMgPFNUUk9ORz5GQUxTRTwvU1RST05HPiwgdGhlCi0gICAgICAgcG9pbnRlcnMgIDxTVFJPTkc+cFksPC9TVFJPTkc+ICA8U1RST05HPnBYPC9TVFJPTkc+ICBtdXN0ICByZWZlcmVuY2Ugd2luZG93LXJlbGF0aXZlIGNvb3JkaS0KLSAgICAgICBuYXRlcy4gIFRoZXkgYXJlIGNvbnZlcnRlZCB0byBzdGRzY3ItcmVsYXRpdmUgIGNvb3JkaW5hdGVzCi0gICAgICAgaWYgIHRoZSAgd2luZG93IDxTVFJPTkc+d2luPC9TVFJPTkc+IGVuY2xvc2VzIHRoaXMgcG9pbnQuICBJbiB0aGlzIGNhc2UgdGhlCi0gICAgICAgZnVuY3Rpb24gcmV0dXJucyA8U1RST05HPlRSVUU8L1NUUk9ORz4uICBJZiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgIGlzICBOVUxMCi0gICAgICAgb3IgIHRoZSBwb2ludCBpcyBub3QgaW5zaWRlIHRoZSB3aW5kb3csIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gaXMgcmV0dXJuZWQuCi0gICAgICAgUGxlYXNlIG5vdGljZSwgdGhhdCB0aGUgcmVmZXJlbmNlZCAgY29vcmRpbmF0ZXMgIGFyZSAgb25seQotICAgICAgIHJlcGxhY2VkICBieSAgdGhlIGNvbnZlcnRlZCBjb29yZGluYXRlcyBpZiB0aGUgdHJhbnNmb3JtYS0KLSAgICAgICB0aW9uIHdhcyBzdWNjZXNzZnVsLgorICAgICAgIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiB3aW5kb3cgb3IgdmljZSB2ZXJzYS4gIFRoZSByZXN1bHRpbmcKKyAgICAgICBzdGRzY3ItcmVsYXRpdmUgY29vcmRpbmF0ZXMgYXJlIG5vdCAgYWx3YXlzICBpZGVudGljYWwgIHRvCisgICAgICAgd2luZG93LXJlbGF0aXZlICBjb29yZGluYXRlcyAgZHVlICB0byB0aGUgbWVjaGFuaXNtIHRvIHJlLQorICAgICAgIHNlcnZlIGxpbmVzIG9uIHRvcCBvciBib3R0b20gb2YgdGhlIHNjcmVlbiBmb3Igb3RoZXIgIHB1ci0KKyAgICAgICBwb3NlcyAgKHNlZSAgdGhlICA8U1RST05HPnJpcG9mZmxpbmU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+c2xrX2luaXQ8L1NUUk9ORz4gY2FsbHMsIGZvciBleGFtLQorICAgICAgIHBsZSkuCiAKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiB0aGUgcGFyYW1ldGVyIDxTVFJPTkc+dG9fc2NyZWVuPC9TVFJPTkc+IGlzIDxTVFJPTkc+VFJVRTwvU1RST05HPiwgdGhlICBwb2ludGVycyAgPFNUUk9ORz5wWSw8L1NUUk9ORz4KKyAgICAgICAgICAgPFNUUk9ORz5wWDwvU1RST05HPiBtdXN0IHJlZmVyZW5jZSB0aGUgY29vcmRpbmF0ZXMgb2YgYSBsb2NhdGlvbiBpbnNpZGUKKyAgICAgICAgICAgdGhlIHdpbmRvdyA8U1RST05HPndpbjwvU1RST05HPi4gIFRoZXkgYXJlIGNvbnZlcnRlZCB0byB3aW5kb3ctcmVsYXRpdmUKKyAgICAgICAgICAgY29vcmRpbmF0ZXMgYW5kIHJldHVybmVkIHRocm91Z2ggdGhlIHBvaW50ZXJzLiAgSWYgdGhlCisgICAgICAgICAgIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDxTVFJPTkc+VFJVRTwvU1RST05HPi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIG9uZSBvZiB0aGUgcGFyYW1ldGVycyB3YXMgTlVMTCBvciB0aGUgIGxvY2F0aW9uICBpcworICAgICAgICAgICBub3QgaW5zaWRlIHRoZSB3aW5kb3csIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gaXMgcmV0dXJuZWQuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiA8U1RST05HPnRvX3NjcmVlbjwvU1RST05HPiBpcyA8U1RST05HPkZBTFNFPC9TVFJPTkc+LCB0aGUgcG9pbnRlcnMgPFNUUk9ORz5wWSw8L1NUUk9ORz4gPFNUUk9ORz5wWDwvU1RST05HPiBtdXN0IHJlZmVyLQorICAgICAgICAgICBlbmNlIHdpbmRvdy1yZWxhdGl2ZSBjb29yZGluYXRlcy4gIFRoZXkgYXJlICBjb252ZXJ0ZWQKKyAgICAgICAgICAgdG8gIHN0ZHNjci1yZWxhdGl2ZSAgY29vcmRpbmF0ZXMgaWYgdGhlIHdpbmRvdyA8U1RST05HPndpbjwvU1RST05HPiBlbi0KKyAgICAgICAgICAgY2xvc2VzIHRoaXMgcG9pbnQuICBJbiB0aGlzIGNhc2UgdGhlIGZ1bmN0aW9uICByZXR1cm5zCisgICAgICAgICAgIDxTVFJPTkc+VFJVRTwvU1RST05HPi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmICBvbmUgIG9mIHRoZSBwYXJhbWV0ZXJzIGlzIE5VTEwgb3IgdGhlIHBvaW50IGlzIG5vdAorICAgICAgICAgICBpbnNpZGUgdGhlIHdpbmRvdywgPFNUUk9ORz5GQUxTRTwvU1RST05HPiBpcyByZXR1cm5lZC4gIFRoZSAgcmVmZXJlbmNlZAorICAgICAgICAgICBjb29yZGluYXRlcyBhcmUgb25seSByZXBsYWNlZCBieSB0aGUgY29udmVydGVkIGNvb3JkaS0KKyAgICAgICAgICAgbmF0ZXMgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIHdhcyBzdWNjZXNzZnVsLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLW1vdXNlX3RyYWZvIj5tb3VzZV90cmFmbzwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+bW91c2VfdHJhZm88L1NUUk9ORz4gZnVuY3Rpb24gcGVyZm9ybXMgdGhlIHNhbWUgdHJhbnNsYXRpb24gIGFzCiAgICAgICAgPFNUUk9ORz53bW91c2VfdHJhZm88L1NUUk9ORz4sIHVzaW5nIHN0ZHNjciBmb3IgPFNUUk9ORz53aW48L1NUUk9ORz4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbW91c2VpbnRlcnZhbCI+bW91c2VpbnRlcnZhbDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+bW91c2VpbnRlcnZhbDwvU1RST05HPiBmdW5jdGlvbiBzZXRzIHRoZSBtYXhpbXVtIHRpbWUgKGluIHRob3UtCiAgICAgICAgc2FuZHMgb2YgYSBzZWNvbmQpIHRoYXQgY2FuIGVsYXBzZSBiZXR3ZWVuIHByZXNzICBhbmQgIHJlLQogICAgICAgIGxlYXNlICBldmVudHMgIGZvciAgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGEgY2xpY2suICBVc2UKQEAgLTE5NSwyMyArMjI3LDM0IEBACiAgICAgICAgPFNUUk9ORz52YWwoLTEpPC9TVFJPTkc+IHRvIG9idGFpbiB0aGUgaW50ZXJ2YWwgd2l0aG91dCBhbHRlcmluZyAgaXQuICAgVGhlCiAgICAgICAgZGVmYXVsdCBpcyBvbmUgc2l4dGggb2YgYSBzZWNvbmQuCiAKLSAgICAgICBOb3RlICB0aGF0ICBtb3VzZSAgZXZlbnRzIHdpbGwgYmUgaWdub3JlZCB3aGVuIGlucHV0IGlzIGluCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWhhc19tb3VzZSI+aGFzX21vdXNlPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+aGFzX21vdXNlPC9TVFJPTkc+ICBmdW5jdGlvbiAgcmV0dXJucyA8U1RST05HPlRSVUU8L1NUUk9ORz4gaWYgdGhlIG1vdXNlIGRyaXZlcgorICAgICAgIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KKworICAgICAgIE5vdGUgdGhhdCBtb3VzZSBldmVudHMgd2lsbCBiZSBpZ25vcmVkIHdoZW4gIGlucHV0ICBpcyAgaW4KICAgICAgICBjb29rZWQgbW9kZSwgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgYmVlcCB3aGVuIGNvb2tlZCBtb2RlCi0gICAgICAgaXMgIGJlaW5nIHNpbXVsYXRlZCBpbiBhIHdpbmRvdyBieSBhIGZ1bmN0aW9uIHN1Y2ggYXMgPFNUUk9ORz5nZXQtPC9TVFJPTkc+CisgICAgICAgaXMgYmVpbmcgc2ltdWxhdGVkIGluIGEgd2luZG93IGJ5IGEgZnVuY3Rpb24gc3VjaCBhcyAgPFNUUk9ORz5nZXQtPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5zdHI8L1NUUk9ORz4gdGhhdCBleHBlY3RzIGEgbGluZWZlZWQgZm9yIGlucHV0LWxvb3AgdGVybWluYXRpb24uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+Z2V0bW91c2U8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dW5nZXRtb3VzZTwvU1RST05HPiByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiAgZmFpbC0KLSAgICAgICB1cmUgb3IgPFNUUk9ORz5PSzwvU1RST05HPiB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5nZXRtb3VzZTwvU1RST05HPiAgYW5kIDxTVFJPTkc+dW5nZXRtb3VzZTwvU1RST05HPiByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsLQorICAgICAgIHVyZSBvciA8U1RST05HPk9LPC9TVFJPTkc+IHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uOgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+Z2V0bW91c2U8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yLiAgSWYgbm8gbW91c2UgZHJpdmVyIHdhcyBpbmktCi0gICAgICAgICAgICAgICAgICAgdGlhbGl6ZWQsIG9yIGlmIHRoZSBtYXNrIHBhcmFtZXRlciBpcyB6ZXJvLAorICAgICAgICAgIDxTVFJPTkc+Z2V0bW91c2U8L1NUUk9ORz4KKyAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IuCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz51bmdldG1vdXNlPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgRklGTyBpcyBmdWxsLgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIG5vIG1vdXNlIGRyaXZlciB3YXMgaW5pdGlhbGl6ZWQsIG9yIGlmIHRoZSAgbWFzaworICAgICAgICAgICAgICBwYXJhbWV0ZXIgaXMgemVybywKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEl0ICBhbHNvICByZXR1cm5zIGFuIGVycm9yIGlmIG5vIG1vcmUgZXZlbnRzIHJlbWFpbgorICAgICAgICAgICAgICBpbiB0aGUgcXVldWUuCisKKyAgICAgICAgICA8U1RST05HPnVuZ2V0bW91c2U8L1NUUk9ORz4KKyAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIEZJRk8gaXMgZnVsbC4KIAogICAgICAgIDxTVFJPTkc+bW91c2VtYXNrPC9TVFJPTkc+IHJldHVybnMgdGhlIG1hc2sgb2YgcmVwb3J0YWJsZSBldmVudHMuCiAKQEAgLTIyNCw3ICsyNjcsNyBAQAogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIGNhbGxzICB3ZXJlICBkZXNpZ25lZCAgZm9yIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5uY3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIGFuZCBhcmUgbm90CiAgICAgICAgZm91bmQgaW4gU1ZyNCBjdXJzZXMsIDQuNEJTRCBjdXJzZXMsIG9yIGFueSBvdGhlciBwcmV2aW91cwogICAgICAgIHZlcnNpb24gb2YgY3Vyc2VzLgpAQCAtMjM2LDczICsyNzksMTAzIEBACiAgICAgICAgZm9yICA8U1RST05HPk5DVVJTRVNfTU9VU0VfVkVSU0lPTjwvU1RST05HPiBtYXkgYmUgc3BlY2lmaWVkIHdoZW4gY29uZmlndXItCiAgICAgICAgaW5nIG5jdXJzZXM6CiAKLSAgICAgICAgICAgICAgMSAgaGFzIGRlZmluaXRpb25zIGZvciByZXNlcnZlZCBldmVudHMuICAgVGhlICBtYXNrCi0gICAgICAgICAgICAgICAgIHVzZXMgMjggYml0cy4KKyAgICAgICAgICAxICBoYXMgZGVmaW5pdGlvbnMgZm9yIHJlc2VydmVkIGV2ZW50cy4gIFRoZSBtYXNrICB1c2VzCisgICAgICAgICAgICAgMjggYml0cy4KIAotICAgICAgICAgICAgICAyICBhZGRzIGRlZmluaXRpb25zIGZvciBidXR0b24gNSwgcmVtb3ZlcyB0aGUgZGVmaS0KLSAgICAgICAgICAgICAgICAgbml0aW9ucyBmb3IgcmVzZXJ2ZWQgZXZlbnRzLiAgVGhlIG1hc2sgIHVzZXMgIDI5Ci0gICAgICAgICAgICAgICAgIGJpdHMuCisgICAgICAgICAgMiAgYWRkcyAgZGVmaW5pdGlvbnMgIGZvciBidXR0b24gNSwgcmVtb3ZlcyB0aGUgZGVmaW5pLQorICAgICAgICAgICAgIHRpb25zIGZvciByZXNlcnZlZCBldmVudHMuICBUaGUgbWFzayB1c2VzIDI5IGJpdHMuCiAKLSAgICAgICBUaGUgIG9yZGVyICBvZiB0aGUgPFNUUk9ORz5NRVZFTlQ8L1NUUk9ORz4gc3RydWN0dXJlIG1lbWJlcnMgaXMgbm90IGd1YXJhbi0KLSAgICAgICB0ZWVkLiAgQWRkaXRpb25hbCBmaWVsZHMgbWF5IGJlIGFkZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgIGluCisgICAgICAgVGhlIG9yZGVyIG9mIHRoZSA8U1RST05HPk1FVkVOVDwvU1RST05HPiBzdHJ1Y3R1cmUgbWVtYmVycyBpcyAgbm90ICBndWFyYW4tCisgICAgICAgdGVlZC4gICBBZGRpdGlvbmFsIGZpZWxkcyBtYXkgYmUgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZSBpbgogICAgICAgIHRoZSBmdXR1cmUuCiAKLSAgICAgICBVbmRlciAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgIHRoZXNlIGNhbGxzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBlaS0KLSAgICAgICB0aGVyIHh0ZXJtJ3MgYnVpbHQtaW4gbW91c2UtdHJhY2tpbmcgQVBJIG9yICBwbGF0Zm9ybS1zcGUtCisgICAgICAgVW5kZXIgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgdGhlc2UgY2FsbHMgYXJlIGltcGxlbWVudGVkICB1c2luZyAgZWktCisgICAgICAgdGhlciAgeHRlcm0ncyBidWlsdC1pbiBtb3VzZS10cmFja2luZyBBUEkgb3IgcGxhdGZvcm0tc3BlLQogICAgICAgIGNpZmljIGRyaXZlcnMgaW5jbHVkaW5nCi0gICAgICAgICAgICAgIEFsZXNzYW5kcm8gUnViaW5pJ3MgZ3BtIHNlcnZlci4KLSAgICAgICAgICAgICAgRnJlZUJTRCBzeXNtb3VzZQotICAgICAgICAgICAgICBPUy8yIEVNWAotICAgICAgIElmICB5b3UgIGFyZSAgdXNpbmcgIGFuICB1bnN1cHBvcnRlZCAgY29uZmlndXJhdGlvbiwgbW91c2UKLSAgICAgICBldmVudHMgd2lsbCBub3QgYmUgdmlzaWJsZSB0byA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IChhbmQgdGhlICA8U1RST05HPm1vdXNlLTwvU1RST05HPgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgQWxlc3NhbmRybyBSdWJpbmkncyBncG0gc2VydmVyCisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBGcmVlQlNEIHN5c21vdXNlCisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBPUy8yIEVNWAorCisgICAgICAgSWYgeW91ICBhcmUgIHVzaW5nICBhbiAgdW5zdXBwb3J0ZWQgIGNvbmZpZ3VyYXRpb24sICBtb3VzZQorICAgICAgIGV2ZW50cyAgd2lsbCBub3QgYmUgdmlzaWJsZSB0byA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IChhbmQgdGhlIDxTVFJPTkc+bW91c2UtPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5tYXNrPC9TVFJPTkc+IGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiA8U1RST05HPjA8L1NUUk9ORz4pLgogCi0gICAgICAgSWYgIHRoZSAgdGVybWluZm8gZW50cnkgY29udGFpbnMgYSA8U1RST05HPlhNPC9TVFJPTkc+IHN0cmluZywgdGhpcyBpcyB1c2VkCi0gICAgICAgaW4gdGhlIHh0ZXJtIG1vdXNlIGRyaXZlciB0byBjb250cm9sIHRoZSB3YXkgdGhlICB0ZXJtaW5hbAorICAgICAgIElmIHRoZSB0ZXJtaW5mbyBlbnRyeSBjb250YWlucyBhIDxTVFJPTkc+WE08L1NUUk9ORz4gc3RyaW5nLCB0aGlzICBpcyAgdXNlZAorICAgICAgIGluICB0aGUgeHRlcm0gbW91c2UgZHJpdmVyIHRvIGNvbnRyb2wgdGhlIHdheSB0aGUgdGVybWluYWwKICAgICAgICBpcyBpbml0aWFsaXplZCBmb3IgbW91c2Ugb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQsIGlmIDxTVFJPTkc+WE08L1NUUk9ORz4gaXMKICAgICAgICBub3QgZm91bmQsIGNvcnJlc3BvbmRzIHRvIHByaXZhdGUgbW9kZSAxMDAwIG9mIHh0ZXJtOgotICAgICAgICAgICAgICBcRVs/MTAwMCU/JXAxJXsxfSU9JXRoJWVsJTsKLSAgICAgICBUaGUgeiBtZW1iZXIgaW4gdGhlIGV2ZW50IHN0cnVjdHVyZSBpcyBub3QgcHJlc2VudGx5IHVzZWQuCi0gICAgICAgSXQgIGlzICBpbnRlbmRlZCAgZm9yIHVzZSB3aXRoIHRvdWNoIHNjcmVlbnMgKHdoaWNoIG1heSBiZQorCisgICAgICAgICAgXEVbPzEwMDAlPyVwMSV7MX0lPSV0aCVlbCU7CisKKyAgICAgICBUaGUgPEVNPno8L0VNPiBtZW1iZXIgaW4gdGhlIGV2ZW50IHN0cnVjdHVyZSBpcyBub3QgcHJlc2VudGx5IHVzZWQuCisgICAgICAgSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIHRvdWNoIHNjcmVlbnMgICh3aGljaCAgbWF5ICBiZQogICAgICAgIHByZXNzdXJlLXNlbnNpdGl2ZSkgICBvciAgIHdpdGggICAzRC1taWNlL3RyYWNrYmFsbHMvcG93ZXIKICAgICAgICBnbG92ZXMuCiAKKyAgICAgICBUaGUgIDxTVFJPTkc+QUxMX01PVVNFX0VWRU5UUzwvU1RST05HPiAgIGNsYXNzICAgZG9lcyAgIG5vdCAgIGluY2x1ZGUgICA8U1RST05HPlJFLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+UE9SVF9NT1VTRV9QT1NJVElPTjwvU1RST05HPi4gICBUaGV5IGFyZSBkaXN0aW5jdC4gIEZvciBleGFtcGxlLCBpbgorICAgICAgIHh0ZXJtLCB3aGVlbC9zY3JvbGxpbmcgbWljZSBzZW5kIHBvc2l0aW9uIHJlcG9ydHMgYXMgYSBzZS0KKyAgICAgICBxdWVuY2UgIG9mIHByZXNzZXMgb2YgYnV0dG9ucyA0IG9yIDUgd2l0aG91dCBtYXRjaGluZyBidXQtCisgICAgICAgdG9uLXJlbGVhc2VzLgorCiAKIDwvUFJFPgotPEgyPkJVR1M8L0gyPjxQUkU+Ci0gICAgICAgTW91c2UgIGV2ZW50cyB1bmRlciB4dGVybSB3aWxsIG5vdCBpbiBmYWN0IGJlIGlnbm9yZWQgZHVyLQotICAgICAgIGluZyBjb29rZWQgbW9kZSwgaWYgdGhleSBoYXZlIGJlZW4gZW5hYmxlZCAgYnkgIDxTVFJPTkc+bW91c2VtYXNrPC9TVFJPTkc+LgotICAgICAgIEluc3RlYWQsICB0aGUgIHh0ZXJtICBtb3VzZSByZXBvcnQgc2VxdWVuY2Ugd2lsbCBhcHBlYXIgaW4KKzxIMj48YSBuYW1lPSJoMi1CVUdTIj5CVUdTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBNb3VzZSBldmVudHMgdW5kZXIgeHRlcm0gd2lsbCBub3QgaW4gZmFjdCBiZSBpZ25vcmVkICBkdXItCisgICAgICAgaW5nICBjb29rZWQgIG1vZGUsIGlmIHRoZXkgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgPFNUUk9ORz5tb3VzZW1hc2s8L1NUUk9ORz4uCisgICAgICAgSW5zdGVhZCwgdGhlIHh0ZXJtIG1vdXNlIHJlcG9ydCBzZXF1ZW5jZSAgd2lsbCAgYXBwZWFyICBpbgogICAgICAgIHRoZSBzdHJpbmcgcmVhZC4KIAogICAgICAgIE1vdXNlIGV2ZW50cyB1bmRlciB4dGVybSB3aWxsIG5vdCBiZSBkZXRlY3RlZCBjb3JyZWN0bHkgaW4KLSAgICAgICBhICB3aW5kb3cgIHdpdGggIGl0cyBrZXlwYWQgYml0IG9mZiwgc2luY2UgdGhleSBhcmUgaW50ZXItCi0gICAgICAgcHJldGVkIGFzIGEgdmFyaWV0eSBvZiBmdW5jdGlvbiBrZXkuICAgWW91ciAgdGVybWluZm8gIGRlLQotICAgICAgIHNjcmlwdGlvbiAgc2hvdWxkICBoYXZlIDxTVFJPTkc+a21vdXM8L1NUUk9ORz4gc2V0IHRvICJcRVtNIiAodGhlIGJlZ2lubmluZwotICAgICAgIG9mIHRoZSByZXNwb25zZSBmcm9tIHh0ZXJtIGZvciBtb3VzZSBjbGlja3MpLiAgT3RoZXIgIHZhbC0KLSAgICAgICB1ZXMgIGZvciAgPFNUUk9ORz5rbW91czwvU1RST05HPiAgYXJlIHBlcm1pdHRlZCwgYnV0IHVuZGVyIHRoZSBzYW1lIGFzc3VtcC0KKyAgICAgICBhIHdpbmRvdyB3aXRoIGl0cyBrZXlwYWQgYml0IG9mZiwgc2luY2UgIHRoZXkgIGFyZSAgaW50ZXItCisgICAgICAgcHJldGVkICBhcyAgYSAgdmFyaWV0eSBvZiBmdW5jdGlvbiBrZXkuICBZb3VyIHRlcm1pbmZvIGRlLQorICAgICAgIHNjcmlwdGlvbiBzaG91bGQgaGF2ZSA8U1RST05HPmttb3VzPC9TVFJPTkc+IHNldCB0byAiXEVbTSIgICh0aGUgIGJlZ2lubmluZworICAgICAgIG9mICB0aGUgcmVzcG9uc2UgZnJvbSB4dGVybSBmb3IgbW91c2UgY2xpY2tzKS4gIE90aGVyIHZhbC0KKyAgICAgICB1ZXMgZm9yIDxTVFJPTkc+a21vdXM8L1NUUk9ORz4gYXJlIHBlcm1pdHRlZCwgYnV0IHVuZGVyICB0aGUgIHNhbWUgIGFzc3VtcC0KICAgICAgICB0aW9uLCBpLmUuLCBpdCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSByZXNwb25zZS4KIAotICAgICAgIEJlY2F1c2UgdGhlcmUgYXJlICBubyAgc3RhbmRhcmQgIHRlcm1pbmFsICByZXNwb25zZXMgIHRoYXQKLSAgICAgICB3b3VsZCAgc2VydmUgdG8gaWRlbnRpZnkgdGVybWluYWxzIHdoaWNoIHN1cHBvcnQgdGhlIHh0ZXJtCi0gICAgICAgbW91c2UgcHJvdG9jb2wsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBhc3N1bWVzIHRoYXQgaWYgeW91ciAgJFRFUk0gIGVudmktCi0gICAgICAgcm9ubWVudCAgdmFyaWFibGUgY29udGFpbnMgInh0ZXJtIiwgb3IgPFNUUk9ORz5rbW91czwvU1RST05HPiBpcyBkZWZpbmVkIGluCisgICAgICAgQmVjYXVzZSAgdGhlcmUgIGFyZSAgbm8gIHN0YW5kYXJkICB0ZXJtaW5hbCByZXNwb25zZXMgdGhhdAorICAgICAgIHdvdWxkIHNlcnZlIHRvIGlkZW50aWZ5IHRlcm1pbmFscyB3aGljaCBzdXBwb3J0IHRoZSAgeHRlcm0KKyAgICAgICBtb3VzZSAgcHJvdG9jb2wsICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gYXNzdW1lcyB0aGF0IGlmIHlvdXIgJFRFUk0gZW52aS0KKyAgICAgICByb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zICJ4dGVybSIsIG9yIDxTVFJPTkc+a21vdXM8L1NUUk9ORz4gaXMgZGVmaW5lZCAgaW4KICAgICAgICB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24sIHRoZW4gdGhlIHRlcm1pbmFsIG1heSBzZW5kIG1vdXNlCiAgICAgICAgZXZlbnRzLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2xrLjN4Lmh0bWwiPmN1cnNfc2xrKDN4KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsKDN4KTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+Y3Vyc192YXJpLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+YWJsZXMoM3gpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tb3VzZS4zeC5odG1sIj5jdXJzX21vdXNlKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1tb3VzZW1hc2siPm1vdXNlbWFzazwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Nb3VzZS1ldmVudHMiPk1vdXNlIGV2ZW50czwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1nZXRtb3VzZSI+Z2V0bW91c2U8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtdW5nZXRtb3VzZSI+dW5nZXRtb3VzZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy13ZW5jbG9zZSI+d2VuY2xvc2U8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtd21vdXNlX3RyYWZvIj53bW91c2VfdHJhZm88L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtbW91c2VfdHJhZm8iPm1vdXNlX3RyYWZvPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLW1vdXNlaW50ZXJ2YWwiPm1vdXNlaW50ZXJ2YWw8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtaGFzX21vdXNlIj5oYXNfbW91c2U8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQlVHUyI+QlVHUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX21vdmUuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX21vdmUuM3guaHRtbAppbmRleCAyNWM1MmI0Li4zYTQ5NDI2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19tb3ZlLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfbW92ZS4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMSArMjYsMzIgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfbW92ZS4zeCx2IDEuMTIgMjAwNi8wMi8yNSAyMTo0OToxOSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfbW92ZS4zeCx2IDEuMTQgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX21vdmUgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX21vdmUgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfbW92ZSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tb3ZlLjN4Lmh0bWwiPmN1cnNfbW92ZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdmUuM3guaHRtbCI+Y3Vyc19tb3ZlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1vdmU8L1NUUk9ORz4sIDxTVFJPTkc+d21vdmU8L1NUUk9ORz4gLSBtb3ZlIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdyBjdXJzb3IKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm1vdmUoaW50PC9TVFJPTkc+IDxTVFJPTkc+eSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz54KTs8L1NUUk9ORz4KQEAgLTU5LDcgKzU5LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyBtb3ZlIHRoZSBjdXJzb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aW5kb3cKICAgICAgICB0byBsaW5lIDxFTT55PC9FTT4gYW5kIGNvbHVtbiA8RU0+eDwvRU0+LiAgVGhpcyByb3V0aW5lIGRvZXMgIG5vdCAgbW92ZSAgdGhlCiAgICAgICAgcGh5c2ljYWwgIGN1cnNvciAgb2YgdGhlIHRlcm1pbmFsIHVudGlsIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiBpcyBjYWxsZWQuCkBAIC02OCw3ICs2OCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCBPSyAoU1ZyNCBzcGVjaS0KICAgICAgICBmaWVzIG9ubHkgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzcy0KICAgICAgICBmdWwgY29tcGxldGlvbi4KQEAgLTc4LDI4ICs3OCwzNCBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+bW92ZTwvU1RST05HPiBtYXkgYmUgYSBtYWNyby4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCwKICAgICAgICBJc3N1ZSA0LgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tb3ZlLjN4Lmh0bWwiPmN1cnNfbW92ZSgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfb3BhcXVlLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19vcGFxdWUuM3guaHRtbAppbmRleCAzZTBmMWFlLi45Y2FlYzZjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19vcGFxdWUuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19vcGFxdWUuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX29wYXF1ZS4zeCx2IDEuNiAyMDA3LzA5LzA4IDE4OjQ5OjEzIHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19vcGFxdWUuM3gsdiAxLjEyIDIwMTUvMDQvMTEgMTA6MjM6NDkgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19vcGFxdWUgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX29wYXF1ZSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19vcGFxdWUgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+aXNfY2xlYXJlZDwvU1RST05HPiwgPFNUUk9ORz5pc19pZGxvazwvU1RST05HPiwgPFNUUk9ORz5pc19pZGNvazwvU1RST05HPiwgPFNUUk9ORz5pc19pbW1lZG9rPC9TVFJPTkc+LCA8U1RST05HPmlzX2tleXBhZDwvU1RST05HPiwKLSAgICAgICA8U1RST05HPmlzX2xlYXZlb2s8L1NUUk9ORz4sIDxTVFJPTkc+aXNfbm9kZWxheTwvU1RST05HPiwgPFNUUk9ORz5pc190aW1lb3V0PC9TVFJPTkc+LCA8U1RST05HPmlzX3Njcm9sbG9rPC9TVFJPTkc+LCA8U1RST05HPmlzX3N5bmNvazwvU1RST05HPgotICAgICAgIC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93IHByb3BlcnRpZXMKKyAgICAgICA8U1RST05HPmlzX2xlYXZlb2s8L1NUUk9ORz4sIDxTVFJPTkc+aXNfbm9kZWxheTwvU1RST05HPiwgPFNUUk9ORz5pc19ub3RpbWVvdXQ8L1NUUk9ORz4sIDxTVFJPTkc+aXNfcGFkPC9TVFJPTkc+LCA8U1RST05HPmlzX3Njcm9sbG9rPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+aXNfc3Vid2luPC9TVFJPTkc+LCA8U1RST05HPmlzX3N5bmNvazwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvdyBwcm9wZXJ0aWVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aXNfY2xlYXJlZChjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgpAQCAtNjQsMTcgKzY0LDIwIEBACiAgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aXNfbGVhdmVvayhjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmlzX25vZGVsYXkoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5pc19ub3RpbWVvdXQoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5pc19wYWQoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5pc19zY3JvbGxvayhjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmlzX3N1Yndpbihjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmlzX3N5bmNvayhjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPndnZXRwYXJlbnQoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndnZXRkZWxheShjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+d2dldHNjcnJlZyhjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+KnRvcCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz4qYm90dG9tKTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoaXMgIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyB3aGljaCByZXR1cm4gcHJvcC0KICAgICAgICBlcnRpZXMgc2V0IGluIHRoZSBXSU5ET1cgIHN0cnVjdHVyZSwgIGFsbG93aW5nICBpdCAgdG8gIGJlCi0gICAgICAgYGBvcGFxdWUnJyBpZiB0aGUgc3ltYm9sIDxTVFJPTkc+TkNVUlNFU19PUEFRVUU8L1NUUk9ORz4gaXMgZGVmaW5lZDoKKyAgICAgICAib3BhcXVlIiBpZiB0aGUgc3ltYm9sIDxTVFJPTkc+TkNVUlNFU19PUEFRVUU8L1NUUk9ORz4gaXMgZGVmaW5lZDoKIAogICAgICAgIDxTVFJPTkc+aXNfY2xlYXJlZDwvU1RST05HPgogICAgICAgICAgICAgcmV0dXJucyB0aGUgdmFsdWUgc2V0IGluIDxTVFJPTkc+Y2xlYXJvazwvU1RST05HPgpAQCAtMTAwLDEyICsxMDMsMjMgQEAKICAgICAgICA8U1RST05HPmlzX25vdGltZW91dDwvU1RST05HPgogICAgICAgICAgICAgcmV0dXJucyB0aGUgdmFsdWUgc2V0IGluIDxTVFJPTkc+bm90aW1lb3V0PC9TVFJPTkc+CiAKKyAgICAgICA8U1RST05HPmlzX3BhZDwvU1RST05HPgorICAgICAgICAgICAgcmV0dXJucyAgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IGlmIHRoZSB3aW5kb3cgaXMgYSBwYWQgaS5lLiwgY3JlYXRlZCBieQorICAgICAgICAgICAgPFNUUk9ORz5uZXdwYWQ8L1NUUk9ORz4KKwogICAgICAgIDxTVFJPTkc+aXNfc2Nyb2xsb2s8L1NUUk9ORz4KICAgICAgICAgICAgIHJldHVybnMgdGhlIHZhbHVlIHNldCBpbiA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+CiAKKyAgICAgICA8U1RST05HPmlzX3N1YndpbjwvU1RST05HPgorICAgICAgICAgICAgcmV0dXJucyA8U1RST05HPlRSVUU8L1NUUk9ORz4gaWYgdGhlIHdpbmRvdyBpcyBhIHN1YndpbmRvdywgaS5lLiwgY3JlLQorICAgICAgICAgICAgYXRlZCBieSA8U1RST05HPnN1YndpbjwvU1RST05HPiBvciA8U1RST05HPmRlcndpbjwvU1RST05HPgorCiAgICAgICAgPFNUUk9ORz5pc19zeW5jb2s8L1NUUk9ORz4KICAgICAgICAgICAgIHJldHVybnMgdGhlIHZhbHVlIHNldCBpbiA8U1RST05HPnN5bmNvazwvU1RST05HPgogCisgICAgICAgPFNUUk9ORz53Z2V0ZGVsYXk8L1NUUk9ORz4KKyAgICAgICAgICAgIHJldHVybnMgdGhlIGRlbGF5IHRpbWVvdXQgYXMgc2V0IGluIDxTVFJPTkc+d3RpbWVvdXQ8L1NUUk9ORz4uCisKICAgICAgICA8U1RST05HPndnZXRwYXJlbnQ8L1NUUk9ORz4KICAgICAgICAgICAgIHJldHVybnMgIHRoZSBwYXJlbnQgV0lORE9XIHBvaW50ZXIgZm9yIHN1YndpbmRvd3MsIG9yCiAgICAgICAgICAgICBOVUxMIGZvciB3aW5kb3dzIGhhdmluZyBubyBwYXJlbnQuCkBAIC0xMTYsMzYgKzEzMCw0MiBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSBmdW5jdGlvbnMgYWxsIHJldHVybiBUUlVFIG9yIEZBTFNFLCBleGNlcHQgYXMgbm90ZWQuCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIDxTVFJPTkc+VFJVRTwvU1RST05HPiBvciA8U1RST05HPkZBTFNFPC9TVFJPTkc+LCBleGNlcHQgYXMgbm90ZWQuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBCb3RoIGEgbWFjcm8gYW5kIGEgZnVuY3Rpb24gYXJlIHByb3ZpZGVkIGZvciBlYWNoIG5hbWUuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgYXJlIHNwZWNpZmljIHRvICBuY3Vyc2VzLiAgIFRoZXkgIHdlcmUgIG5vdAotICAgICAgIHN1cHBvcnRlZCAgb24gIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSBWIGltcGxlbWVudGF0aW9ucy4KLSAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiAgbmN1cnNlcyAgZXgtCis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSAgcm91dGluZXMgIGFyZSAgc3BlY2lmaWMgIHRvIG5jdXJzZXMuICBUaGV5IHdlcmUgbm90CisgICAgICAgc3VwcG9ydGVkIG9uIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSAgViAgaW1wbGVtZW50YXRpb25zLgorICAgICAgIEl0ICBpcyAgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gbmN1cnNlcyBleC0KICAgICAgICB0ZW5zaW9ucyBiZSBjb25kaXRpb25lZCB1c2luZyBOQ1VSU0VTX1ZFUlNJT04uCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lub3B0cy4zeC5odG1sIj5jdXJzX2lub3B0cygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+Y3Vyc193aW4tPC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz5jdXJzX3dpbi08L1NUUk9ORz4KICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfd2luZG93LjN4Lmh0bWwiPmRvdygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX291dG9wdHMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX291dG9wdHMuM3guaHRtbAppbmRleCBjOGQ0YTA2Li5kNmY2YjdkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19vdXRvcHRzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfb3V0b3B0cy4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw1MyArMjYsNTcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfb3V0b3B0cy4zeCx2IDEuMjEgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfb3V0b3B0cy4zeCx2IDEuMjYgMjAxNS8wNy8yMSAwMDoyMzo0MyB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX291dG9wdHMgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX291dG9wdHMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfb3V0b3B0cyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX291dG9wdHMuM3guaHRtbCI+Y3Vyc19vdXRvcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmNsZWFyb2s8L1NUUk9ORz4sIDxTVFJPTkc+aWRsb2s8L1NUUk9ORz4sIDxTVFJPTkc+aWRjb2s8L1NUUk9ORz4sIDxTVFJPTkc+aW1tZWRvazwvU1RST05HPiwgPFNUUk9ORz5sZWF2ZW9rPC9TVFJPTkc+LCA8U1RST05HPnNldHNjcnJlZzwvU1RST05HPiwKICAgICAgICA8U1RST05HPndzZXRzY3JyZWc8L1NUUk9ORz4sIDxTVFJPTkc+c2Nyb2xsb2s8L1NUUk9ORz4sIDxTVFJPTkc+bmw8L1NUUk9ORz4sIDxTVFJPTkc+bm9ubDwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IG91dHB1dCBvcHRpb25zCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCi0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5jbGVhcm9rKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmJmKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmlkbG9rKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmJmKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5pZGNvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5iZik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+aW1tZWRvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5iZik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5sZWF2ZW9rKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmJmKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNldHNjcnJlZyhpbnQ8L1NUUk9ORz4gPFNUUk9ORz50b3AsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Ym90KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndzZXRzY3JyZWcoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50b3AsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Ym90KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNjcm9sbG9rKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmJmKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNsZWFyb2soV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPEVNPmJmPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pZGxvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8RU0+YmY8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5pZGNvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8RU0+YmY8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5pbW1lZG9rKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxFTT5iZjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bGVhdmVvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8RU0+YmY8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNldHNjcnJlZyhpbnQ8L1NUUk9ORz4gPEVNPnRvcDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5ib3Q8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndzZXRzY3JyZWcoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+dG9wPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPmJvdDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2Nyb2xsb2soV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPEVNPmJmPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ubCh2b2lkKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5vbmwodm9pZCk7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBzZXQgb3B0aW9ucyB0aGF0IGNoYW5nZSB0aGUgc3R5bGUgb2Ygb3V0cHV0CiAgICAgICAgd2l0aGluICA8U1RST05HPmN1cnNlczwvU1RST05HPi4gICBBbGwgIG9wdGlvbnMgYXJlIGluaXRpYWxseSA8U1RST05HPkZBTFNFPC9TVFJPTkc+LCB1bmxlc3MKICAgICAgICBvdGhlcndpc2Ugc3RhdGVkLiAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byB0dXJuICB0aGVzZSAgb3AtCiAgICAgICAgdGlvbnMgb2ZmIGJlZm9yZSBjYWxsaW5nIDxTVFJPTkc+ZW5kd2luPC9TVFJPTkc+LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWNsZWFyb2siPmNsZWFyb2s8L2E+PC9IMz48UFJFPgogICAgICAgIElmICA8U1RST05HPmNsZWFyb2s8L1NUUk9ORz4gaXMgY2FsbGVkIHdpdGggPFNUUk9ORz5UUlVFPC9TVFJPTkc+IGFzIGFyZ3VtZW50LCB0aGUgbmV4dCBjYWxsCiAgICAgICAgdG8gPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiB3aXRoIHRoaXMgd2luZG93IHdpbGwgY2xlYXIgIHRoZSAgc2NyZWVuICBjb20tCiAgICAgICAgcGxldGVseSAgYW5kICByZWRyYXcgdGhlIGVudGlyZSBzY3JlZW4gZnJvbSBzY3JhdGNoLiAgVGhpcwpAQCAtODMsNiArODYsOSBAQAogICAgICAgIHRoZSAgbmV4dCAgY2FsbCAgdG8gIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4gIHdpdGggIGFueSB3aW5kb3cgY2F1c2VzIHRoZQogICAgICAgIHNjcmVlbiB0byBiZSBjbGVhcmVkIGFuZCByZXBhaW50ZWQgZnJvbSBzY3JhdGNoLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWlkbG9rIj5pZGxvazwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgPFNUUk9ORz5pZGxvazwvU1RST05HPiBpcyBjYWxsZWQgd2l0aCA8U1RST05HPlRSVUU8L1NUUk9ORz4gYXMgIHNlY29uZCAgYXJndW1lbnQsICA8U1RST05HPmN1cnNlczwvU1RST05HPgogICAgICAgIGNvbnNpZGVycyB1c2luZyB0aGUgaGFyZHdhcmUgaW5zZXJ0L2RlbGV0ZSBsaW5lIGZlYXR1cmUgb2YKICAgICAgICB0ZXJtaW5hbHMgc28gZXF1aXBwZWQuICBDYWxsaW5nIDxTVFJPTkc+aWRsb2s8L1NUUk9ORz4gd2l0aCA8U1RST05HPkZBTFNFPC9TVFJPTkc+IGFzIHNlY29uZApAQCAtOTUsNiArMTAxLDkgQEAKICAgICAgICBub3QgIGJlICB1c2VkLCAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcmVkcmF3cyB0aGUgY2hhbmdlZCBwb3J0aW9ucyBvZiBhbGwKICAgICAgICBsaW5lcy4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1pZGNvayI+aWRjb2s8L2E+PC9IMz48UFJFPgogICAgICAgIElmIDxTVFJPTkc+aWRjb2s8L1NUUk9ORz4gaXMgY2FsbGVkIHdpdGggPFNUUk9ORz5GQUxTRTwvU1RST05HPiBhcyBzZWNvbmQgIGFyZ3VtZW50LCAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4KICAgICAgICBubyBsb25nZXIgY29uc2lkZXJzIHVzaW5nIHRoZSBoYXJkd2FyZSBpbnNlcnQvZGVsZXRlIGNoYXItCiAgICAgICAgYWN0ZXIgZmVhdHVyZSBvZiB0ZXJtaW5hbHMgc28gZXF1aXBwZWQuICBVc2Ugb2YgIGNoYXJhY3RlcgpAQCAtMTAyLDYgKzExMSw5IEBACiAgICAgICAgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IGFzIHNlY29uZCBhcmd1bWVudCByZS1lbmFibGVzIHVzZSBvZiBjaGFyYWN0ZXIgaW5zZXItCiAgICAgICAgdGlvbiBhbmQgZGVsZXRpb24uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtaW1tZWRvayI+aW1tZWRvazwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgIDxTVFJPTkc+aW1tZWRvazwvU1RST05HPiBpcyBjYWxsZWQgd2l0aCA8U1RST05HPlRSVUU8L1NUUk9ORz4gPFNUUk9ORz5hczwvU1RST05HPiA8U1RST05HPmFyZ3VtZW50PC9TVFJPTkc+LCBhbnkgY2hhbmdlIGluCiAgICAgICAgdGhlIHdpbmRvdyBpbWFnZSwgc3VjaCBhcyB0aGUgb25lcyBjYXVzZWQgYnkgPFNUUk9ORz53YWRkY2gsPC9TVFJPTkc+IDxTVFJPTkc+d2Nsci08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnRvYm90LDwvU1RST05HPiAgPFNUUk9ORz53c2NybDwvU1RST05HPiwgIGV0Yy4sICBhdXRvbWF0aWNhbGx5ICBjYXVzZSBhIGNhbGwgdG8gPFNUUk9ORz53cmUtPC9TVFJPTkc+CkBAIC0xMDksNzUgKzEyMSw4NyBAQAogICAgICAgIGR1ZSAgdG8gcmVwZWF0ZWQgY2FsbHMgdG8gPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPi4gIEl0IGlzIGRpc2FibGVkIGJ5IGRlLQogICAgICAgIGZhdWx0LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWxlYXZlb2siPmxlYXZlb2s8L2E+PC9IMz48UFJFPgogICAgICAgIE5vcm1hbGx5LCB0aGUgaGFyZHdhcmUgY3Vyc29yIGlzIGxlZnQgYXQgdGhlICBsb2NhdGlvbiAgb2YKICAgICAgICB0aGUgd2luZG93IGN1cnNvciBiZWluZyByZWZyZXNoZWQuICBUaGUgPFNUUk9ORz5sZWF2ZW9rPC9TVFJPTkc+IG9wdGlvbiBhbC0KICAgICAgICBsb3dzIHRoZSBjdXJzb3IgdG8gYmUgbGVmdCB3aGVyZXZlciB0aGUgdXBkYXRlIGhhcHBlbnMgIHRvCiAgICAgICAgbGVhdmUgIGl0LiAgSXQgaXMgdXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgd2hlcmUgdGhlIGN1cnNvcgogICAgICAgIGlzIG5vdCB1c2VkLCBzaW5jZSBpdCByZWR1Y2VzIHRoZSBuZWVkIGZvciBjdXJzb3IgbW90aW9ucy4KIAotICAgICAgIFRoZSAgPFNUUk9ORz5zZXRzY3JyZWc8L1NUUk9ORz4gIGFuZCA8U1RST05HPndzZXRzY3JyZWc8L1NUUk9ORz4gcm91dGluZXMgYWxsb3cgdGhlIGFwcGxpY2EtCi0gICAgICAgdGlvbiBwcm9ncmFtbWVyIHRvIHNldCBhIHNvZnR3YXJlIHNjcm9sbGluZyAgcmVnaW9uICBpbiAgYQotICAgICAgIHdpbmRvdy4gICA8RU0+dG9wPC9FTT4gIGFuZCA8RU0+Ym90PC9FTT4gYXJlIHRoZSBsaW5lIG51bWJlcnMgb2YgdGhlIHRvcCBhbmQKLSAgICAgICBib3R0b20gbWFyZ2luIG9mIHRoZSBzY3JvbGxpbmcgcmVnaW9uLiAgKExpbmUgMCBpcyB0aGUgdG9wCi0gICAgICAgbGluZSAgb2YgdGhlIHdpbmRvdy4pICBJZiB0aGlzIG9wdGlvbiBhbmQgPFNUUk9ORz5zY3JvbGxvazwvU1RST05HPiBhcmUgZW4tCi0gICAgICAgYWJsZWQsIGFuIGF0dGVtcHQgdG8gbW92ZSBvZmYgdGhlIGJvdHRvbSBtYXJnaW4gbGluZSBjYXVzLQotICAgICAgIGVzIGFsbCBsaW5lcyBpbiB0aGUgc2Nyb2xsaW5nIHJlZ2lvbiB0byBzY3JvbGwgb25lIGxpbmUgaW4KLSAgICAgICB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmaXJzdCBsaW5lLiAgT25seSAgdGhlICB0ZXh0ICBvZiAgdGhlCi0gICAgICAgd2luZG93ICBpcyAgc2Nyb2xsZWQuICAgKE5vdGUgIHRoYXQgdGhpcyBoYXMgbm90aGluZyB0byBkbwotICAgICAgIHdpdGggdGhlIHVzZSBvZiBhIHBoeXNpY2FsIHNjcm9sbGluZyByZWdpb24gY2FwYWJpbGl0eSAgaW4KLSAgICAgICB0aGUgdGVybWluYWwsIGxpa2UgdGhhdCBpbiB0aGUgVlQxMDAuICBJZiA8U1RST05HPmlkbG9rPC9TVFJPTkc+IGlzIGVuYWJsZWQKLSAgICAgICBhbmQgdGhlIHRlcm1pbmFsIGhhcyBlaXRoZXIgIGEgIHNjcm9sbGluZyAgcmVnaW9uICBvciAgaW4tCi0gICAgICAgc2VydC9kZWxldGUgbGluZSBjYXBhYmlsaXR5LCB0aGV5IHdpbGwgcHJvYmFibHkgYmUgdXNlZCBieQotICAgICAgIHRoZSBvdXRwdXQgcm91dGluZXMuKQogCi0gICAgICAgVGhlIDxTVFJPTkc+c2Nyb2xsb2s8L1NUUk9ORz4gb3B0aW9uIGNvbnRyb2xzIHdoYXQgaGFwcGVucyB3aGVuIHRoZSAgY3Vyc29yCi0gICAgICAgb2YgIGEgIHdpbmRvdyAgaXMgIG1vdmVkICBvZmYgIHRoZSAgZWRnZSAgb2YgdGhlIHdpbmRvdyBvcgotICAgICAgIHNjcm9sbGluZyByZWdpb24sIGVpdGhlciBhcyBhIHJlc3VsdCBvZiBhICBuZXdsaW5lICBhY3Rpb24KLSAgICAgICBvbiAgdGhlICBib3R0b20gIGxpbmUsIG9yIHR5cGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1zZXRzY3JyZWciPnNldHNjcnJlZzwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+c2V0c2NycmVnPC9TVFJPTkc+IGFuZCA8U1RST05HPndzZXRzY3JyZWc8L1NUUk9ORz4gcm91dGluZXMgYWxsb3cgIHRoZSAgYXBwbGljYS0KKyAgICAgICB0aW9uICBwcm9ncmFtbWVyICB0byAgc2V0IGEgc29mdHdhcmUgc2Nyb2xsaW5nIHJlZ2lvbiBpbiBhCisgICAgICAgd2luZG93LiAgVGhlIDxFTT50b3A8L0VNPiBhbmQgPEVNPmJvdDwvRU0+IHBhcmFtZXRlcnMgYXJlIHRoZSAgbGluZSAgbnVtYmVycworICAgICAgIG9mICB0aGUgIHRvcCAgYW5kICBib3R0b20gIG1hcmdpbiBvZiB0aGUgc2Nyb2xsaW5nIHJlZ2lvbi4KKyAgICAgICAoTGluZSAwIGlzIHRoZSB0b3AgbGluZSBvZiB0aGUgd2luZG93LikgICBJZiAgdGhpcyAgb3B0aW9uCisgICAgICAgYW5kICA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+IGFyZSBlbmFibGVkLCBhbiBhdHRlbXB0IHRvIG1vdmUgb2ZmIHRoZSBib3QtCisgICAgICAgdG9tIG1hcmdpbiBsaW5lIGNhdXNlcyBhbGwgbGluZXMgaW4gdGhlICBzY3JvbGxpbmcgIHJlZ2lvbgorICAgICAgIHRvICBzY3JvbGwgIG9uZSAgbGluZSAgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmlyc3QgbGluZS4KKyAgICAgICBPbmx5IHRoZSB0ZXh0IG9mIHRoZSB3aW5kb3cgaXMgc2Nyb2xsZWQuICAoTm90ZSB0aGF0ICB0aGlzCisgICAgICAgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgdXNlIG9mIGEgcGh5c2ljYWwgc2Nyb2xsaW5nIHJlLQorICAgICAgIGdpb24gY2FwYWJpbGl0eSBpbiB0aGUgdGVybWluYWwsIGxpa2UgdGhhdCBpbiAgdGhlICBWVDEwMC4KKyAgICAgICBJZiAgPFNUUk9ORz5pZGxvazwvU1RST05HPiAgaXMgIGVuYWJsZWQgIGFuZCAgdGhlICB0ZXJtaW5hbCAgaGFzICBlaXRoZXIgIGEKKyAgICAgICBzY3JvbGxpbmcgcmVnaW9uIG9yIGluc2VydC9kZWxldGUgIGxpbmUgIGNhcGFiaWxpdHksICB0aGV5CisgICAgICAgd2lsbCBwcm9iYWJseSBiZSB1c2VkIGJ5IHRoZSBvdXRwdXQgcm91dGluZXMuKQorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXNjcm9sbG9rIj5zY3JvbGxvazwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+IG9wdGlvbiBjb250cm9scyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgY3Vyc29yCisgICAgICAgb2YgYSB3aW5kb3cgaXMgIG1vdmVkICBvZmYgIHRoZSAgZWRnZSAgb2YgIHRoZSAgd2luZG93ICBvcgorICAgICAgIHNjcm9sbGluZyAgcmVnaW9uLCAgZWl0aGVyIGFzIGEgcmVzdWx0IG9mIGEgbmV3bGluZSBhY3Rpb24KKyAgICAgICBvbiB0aGUgYm90dG9tIGxpbmUsIG9yIHR5cGluZyB0aGUgbGFzdCAgY2hhcmFjdGVyICBvZiAgdGhlCiAgICAgICAgbGFzdCBsaW5lLiAgSWYgZGlzYWJsZWQsICg8RU0+YmY8L0VNPiBpcyA8U1RST05HPkZBTFNFPC9TVFJPTkc+KSwgdGhlIGN1cnNvciBpcyBsZWZ0Ci0gICAgICAgb24gIHRoZSBib3R0b20gbGluZS4gIElmIGVuYWJsZWQsICg8RU0+YmY8L0VNPiBpcyA8U1RST05HPlRSVUU8L1NUUk9ORz4pLCB0aGUgd2luZG93Ci0gICAgICAgaXMgc2Nyb2xsZWQgdXAgb25lIGxpbmUgKE5vdGUgdGhhdCAgdG8gIGdldCAgdGhlICBwaHlzaWNhbAotICAgICAgIHNjcm9sbGluZyAgZWZmZWN0IG9uIHRoZSB0ZXJtaW5hbCwgaXQgaXMgYWxzbyBuZWNlc3NhcnkgdG8KKyAgICAgICBvbiB0aGUgYm90dG9tIGxpbmUuICBJZiBlbmFibGVkLCAoPEVNPmJmPC9FTT4gaXMgPFNUUk9ORz5UUlVFPC9TVFJPTkc+KSwgdGhlICB3aW5kb3cKKyAgICAgICBpcyAgc2Nyb2xsZWQgIHVwICBvbmUgIGxpbmUgKE5vdGUgdGhhdCB0byBnZXQgdGhlIHBoeXNpY2FsCisgICAgICAgc2Nyb2xsaW5nIGVmZmVjdCBvbiB0aGUgdGVybWluYWwsIGl0IGlzIGFsc28gbmVjZXNzYXJ5ICB0bwogICAgICAgIGNhbGwgPFNUUk9ORz5pZGxvazwvU1RST05HPikuCiAKLSAgICAgICBUaGUgPFNUUk9ORz5ubDwvU1RST05HPiBhbmQgPFNUUk9ORz5ub25sPC9TVFJPTkc+IHJvdXRpbmVzIGNvbnRyb2wgIHdoZXRoZXIgIHRoZSAgdW5kZXJseWluZwotICAgICAgIGRpc3BsYXkgIGRldmljZSAgdHJhbnNsYXRlcyB0aGUgcmV0dXJuIGtleSBpbnRvIG5ld2xpbmUgb24KLSAgICAgICBpbnB1dCwgYW5kIHdoZXRoZXIgaXQgdHJhbnNsYXRlcyBuZXdsaW5lIGludG8gIHJldHVybiAgYW5kCi0gICAgICAgbGluZS1mZWVkICBvbiBvdXRwdXQgKGluIGVpdGhlciBjYXNlLCB0aGUgY2FsbCA8U1RST05HPmFkZGNoKCdcbicpPC9TVFJPTkc+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLW5sXy1ub25sIj5ubCwgbm9ubDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPm5sPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+bm9ubDwvU1RST05HPiByb3V0aW5lcyBjb250cm9sIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcKKyAgICAgICBkaXNwbGF5IGRldmljZSB0cmFuc2xhdGVzIHRoZSByZXR1cm4ga2V5IGludG8gIG5ld2xpbmUgIG9uCisgICAgICAgaW5wdXQsICBhbmQgIHdoZXRoZXIgaXQgdHJhbnNsYXRlcyBuZXdsaW5lIGludG8gcmV0dXJuIGFuZAorICAgICAgIGxpbmUtZmVlZCBvbiBvdXRwdXQgKGluIGVpdGhlciBjYXNlLCB0aGUgY2FsbCAgPFNUUk9ORz5hZGRjaCgnXG4nKTwvU1RST05HPgogICAgICAgIGRvZXMgdGhlIGVxdWl2YWxlbnQgb2YgcmV0dXJuIGFuZCBsaW5lIGZlZWQgb24gdGhlIHZpcnR1YWwKLSAgICAgICBzY3JlZW4pLiAgIEluaXRpYWxseSwgdGhlc2UgdHJhbnNsYXRpb25zIGRvIG9jY3VyLiAgSWYgeW91Ci0gICAgICAgZGlzYWJsZSB0aGVtIHVzaW5nIDxTVFJPTkc+bm9ubDwvU1RST05HPiwgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2lsbCBiZSBhYmxlIHRvIG1ha2UgIGJldC0KLSAgICAgICB0ZXIgIHVzZSAgb2YgdGhlIGxpbmUtZmVlZCBjYXBhYmlsaXR5LCByZXN1bHRpbmcgaW4gZmFzdGVyCi0gICAgICAgY3Vyc29yIG1vdGlvbi4gIEFsc28sIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbGwgdGhlbiBiZSBhYmxlICB0byAgZGV0ZWN0CisgICAgICAgc2NyZWVuKS4gIEluaXRpYWxseSwgdGhlc2UgdHJhbnNsYXRpb25zIGRvIG9jY3VyLiAgSWYgIHlvdQorICAgICAgIGRpc2FibGUgIHRoZW0gdXNpbmcgPFNUUk9ORz5ub25sPC9TVFJPTkc+LCA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aWxsIGJlIGFibGUgdG8gbWFrZSBiZXQtCisgICAgICAgdGVyIHVzZSBvZiB0aGUgbGluZS1mZWVkIGNhcGFiaWxpdHksIHJlc3VsdGluZyAgaW4gIGZhc3RlcgorICAgICAgIGN1cnNvciAgbW90aW9uLiAgIEFsc28sIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbGwgdGhlbiBiZSBhYmxlIHRvIGRldGVjdAogICAgICAgIHRoZSByZXR1cm4ga2V5LgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGZ1bmN0aW9ucyA8U1RST05HPnNldHNjcnJlZzwvU1RST05HPiBhbmQgPFNUUk9ORz53c2V0c2NycmVnPC9TVFJPTkc+IHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+IHVwb24gc3VjLQogICAgICAgIGNlc3MgYW5kIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZS4gIEFsbCBvdGhlciByb3V0aW5lcyB0aGF0IHJldHVybgogICAgICAgIGFuIGludGVnZXIgYWx3YXlzIHJldHVybiA8U1RST05HPk9LPC9TVFJPTkc+LgogCi0gICAgICAgWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KKyAgICAgICBYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIAogICAgICAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHRob3NlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSB3aW5kb3cKLSAgICAgICBwb2ludGVyIHdpbGwgcmV0dXJuIGFuIGVycm9yICBpZiAgdGhlICB3aW5kb3cgIHBvaW50ZXIgIGlzCisgICAgICAgcG9pbnRlciAgd2lsbCAgcmV0dXJuICBhbiAgZXJyb3IgIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcwogICAgICAgIG51bGwuCiAKICAgICAgICAgICAgICAgPFNUUk9ORz53Y2xydG9lb2w8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiAgZXJyb3IgIGlmICB0aGUgY3Vyc29yIHBvc2l0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiAgdGhlICBjdXJzb3IgIHBvc2l0aW9uICBpcwogICAgICAgICAgICAgICAgICAgIGFib3V0IHRvIHdyYXAuCiAKICAgICAgICAgICAgICAgPFNUUk9ORz53c2V0c2NycmVnPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgc2Nyb2xsaW5nIHJlZ2lvbiAgbGltLQorICAgICAgICAgICAgICAgICAgIHJldHVybnMgIGFuIGVycm9yIGlmIHRoZSBzY3JvbGxpbmcgcmVnaW9uIGxpbS0KICAgICAgICAgICAgICAgICAgICBpdHMgZXh0ZW5kIG91dHNpZGUgdGhlIHdpbmRvdy4KIAotICAgICAgIFgvT3BlbiAgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZS0KLSAgICAgICBtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgIG51bGwuCisgICAgICAgWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4gIFRoaXMgIGltcGxlLQorICAgICAgIG1lbnRhdGlvbiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLAogICAgICAgIElzc3VlIDQuCiAKQEAgLTIwNyw3ICsyMzEsNyBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+Y2xlYXJvazwvU1RST05HPiwgPFNUUk9ORz5sZWF2ZW9rPC9TVFJPTkc+LCA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+LCA8U1RST05HPmlkY29rPC9TVFJPTkc+LCA8U1RST05HPm5sPC9TVFJPTkc+LCA8U1RST05HPm5vbmw8L1NUUk9ORz4gIGFuZAogICAgICAgIDxTVFJPTkc+c2V0c2NycmVnPC9TVFJPTkc+IG1heSBiZSBtYWNyb3MuCiAKQEAgLTIxNiwxOCArMjQwLDM2IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPiwgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY2xlYXIuM3guaHRtbCI+Y3Vyc19jbGVhcigzeCk8L0E+PC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2Nyb2xsLjN4Lmh0bWwiPmN1cnNfc2Nyb2xsKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRjaC4zeC5odG1sIj5jdXJzX2FkZGNoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19jbGVhci4zeC5odG1sIj5jdXJzX2NsZWFyKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY3JvbGwuM3guaHRtbCI+Y3Vyc19zY3JvbGwoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5jdXJzX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtY2xlYXJvayI+Y2xlYXJvazwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1pZGxvayI+aWRsb2s8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtaWRjb2siPmlkY29rPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWltbWVkb2siPmltbWVkb2s8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtbGVhdmVvayI+bGVhdmVvazwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1zZXRzY3JyZWciPnNldHNjcnJlZzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1zY3JvbGxvayI+c2Nyb2xsb2s8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtbmxfLW5vbmwiPm5sLCBub25sPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX292ZXJsYXkuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX292ZXJsYXkuM3guaHRtbAppbmRleCA5NjcxODZjLi5jMTBkYTFhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19vdmVybGF5LjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfb3ZlcmxheS4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw3OCArMjYsODUgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfb3ZlcmxheS4zeCx2IDEuMTQgMjAwNi8wMi8yNSAyMTo0OToxOSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfb3ZlcmxheS4zeCx2IDEuMTggMjAxNS8wNy8yMSAwMDo1MTozMSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX292ZXJsYXkgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX292ZXJsYXkgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfb3ZlcmxheSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdmVybGF5LjN4Lmh0bWwiPmN1cnNfb3ZlcmxheSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX292ZXJsYXkuM3guaHRtbCI+Y3Vyc19vdmVybGF5KDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm92ZXJsYXk8L1NUUk9ORz4sIDxTVFJPTkc+b3ZlcndyaXRlPC9TVFJPTkc+LCA8U1RST05HPmNvcHl3aW48L1NUUk9ORz4gLSBvdmVybGF5IGFuZCBtYW5pcHVsYXRlCiAgICAgICAgb3ZlcmxhcHBlZCA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aW5kb3dzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCi0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5vdmVybGF5KGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KnNyY3dpbiw8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qZHN0d2luKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm92ZXJ3cml0ZShjb25zdDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPipzcmN3aW4sPC9TVFJPTkc+IDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KmRzdHdpbik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5jb3B5d2luKGNvbnN0PC9TVFJPTkc+ICA8U1RST05HPldJTkRPVzwvU1RST05HPiAgPFNUUk9ORz4qc3Jjd2luLDwvU1RST05HPiAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gIDxTVFJPTkc+KmRzdHdpbiw8L1NUUk9ORz4gIDxTVFJPTkc+aW50PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5zbWlucm93LDwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c21pbmNvbCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kbWlucm93LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRtaW5jb2wsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZG1heHJvdyw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRtYXhjb2wsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+b3ZlcmxheSk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5vdmVybGF5KGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5zcmN3aW48L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+ZHN0d2luPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5vdmVyd3JpdGUoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnNyY3dpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5kc3R3aW48L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNvcHl3aW4oY29uc3Q8L1NUUk9ORz4gIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+ICA8U1RST05HPio8L1NUUk9ORz48RU0+c3Jjd2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+ICA8U1RST05HPio8L1NUUk9ORz48RU0+ZHN0d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gIDxTVFJPTkc+aW50PC9TVFJPTkc+CisgICAgICAgPEVNPnNtaW5yb3c8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5zbWluY29sPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPmRtaW5yb3c8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+ZG1pbmNvbDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5kbWF4cm93PC9FTT48U1RST05HPiw8L1NUUk9ORz4KKyAgICAgICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8RU0+ZG1heGNvbDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5vdmVybGF5PC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtb3ZlcmxheV8tb3ZlcndyaXRlIj5vdmVybGF5LCBvdmVyd3JpdGU8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5vdmVybGF5PC9TVFJPTkc+ICBhbmQgPFNUUk9ORz5vdmVyd3JpdGU8L1NUUk9ORz4gcm91dGluZXMgb3ZlcmxheSA8RU0+c3Jjd2luPC9FTT4gb24gdG9wCiAgICAgICAgb2YgPEVNPmRzdHdpbjwvRU0+LiAgPEVNPnNjcndpbjwvRU0+IGFuZCA8RU0+ZHN0d2luPC9FTT4gYXJlIG5vdCByZXF1aXJlZCB0byAgYmUgIHRoZQogICAgICAgIHNhbWUgIHNpemU7ICBvbmx5ICB0ZXh0ICB3aGVyZSAgdGhlIHR3byB3aW5kb3dzIG92ZXJsYXAgaXMKICAgICAgICBjb3BpZWQuICBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IDxTVFJPTkc+b3ZlcmxheTwvU1RST05HPiBpcyBub24tZGVzdHJ1Y3RpdmUKLSAgICAgICAoYmxhbmtzICBhcmUgbm90IGNvcGllZCkgd2hlcmVhcyA8U1RST05HPm92ZXJ3cml0ZTwvU1RST05HPiBpcyBkZXN0cnVjdGl2ZS4KKyAgICAgICAoYmxhbmtzIGFyZSBub3QgY29waWVkKSB3aGVyZWFzIDxTVFJPTkc+b3ZlcndyaXRlPC9TVFJPTkc+IGlzIGRlc3RydWN0aXZlLgogCi0gICAgICAgVGhlIDxTVFJPTkc+Y29weXdpbjwvU1RST05HPiByb3V0aW5lIHByb3ZpZGVzIGEgZmluZXIgZ3JhbnVsYXJpdHkgIG9mICBjb24tCi0gICAgICAgdHJvbCBvdmVyIHRoZSA8U1RST05HPm92ZXJsYXk8L1NUUk9ORz4gYW5kIDxTVFJPTkc+b3ZlcndyaXRlPC9TVFJPTkc+IHJvdXRpbmVzLiAgTGlrZSBpbiB0aGUKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtY29weXdpbiI+Y29weXdpbjwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPmNvcHl3aW48L1NUUk9ORz4gIHJvdXRpbmUgcHJvdmlkZXMgYSBmaW5lciBncmFudWxhcml0eSBvZiBjb24tCisgICAgICAgdHJvbCBvdmVyIHRoZSA8U1RST05HPm92ZXJsYXk8L1NUUk9ORz4gYW5kIDxTVFJPTkc+b3ZlcndyaXRlPC9TVFJPTkc+IHJvdXRpbmVzLiAgQXMgIGluICB0aGUKICAgICAgICA8U1RST05HPnByZWZyZXNoPC9TVFJPTkc+IHJvdXRpbmUsIGEgcmVjdGFuZ2xlIGlzIHNwZWNpZmllZCBpbiB0aGUgZGVzdGluYS0KLSAgICAgICB0aW9uICB3aW5kb3csICAoPEVNPmRtaW5yb3c8L0VNPiwgIDxFTT5kbWluY29sPC9FTT4pIGFuZCAoPEVNPmRtYXhyb3c8L0VNPiwgPEVNPmRtYXhjb2w8L0VNPiksCi0gICAgICAgYW5kIHRoZSB1cHBlci1sZWZ0LWNvcm5lciBjb29yZGluYXRlcyBvZiB0aGUgIHNvdXJjZSAgd2luLQorICAgICAgIHRpb24gd2luZG93LCAoPEVNPmRtaW5yb3c8L0VNPiwgPEVNPmRtaW5jb2w8L0VNPikgIGFuZCAgKDxFTT5kbWF4cm93PC9FTT4sICA8RU0+ZG1heGNvbDwvRU0+KSwKKyAgICAgICBhbmQgIHRoZSAgdXBwZXItbGVmdC1jb3JuZXIgY29vcmRpbmF0ZXMgb2YgdGhlIHNvdXJjZSB3aW4tCiAgICAgICAgZG93LCAoPEVNPnNtaW5yb3c8L0VNPiwgPEVNPnNtaW5jb2w8L0VNPikuICBJZiB0aGUgYXJndW1lbnQgPEVNPm92ZXJsYXk8L0VNPiBpcyA8U1RST05HPnRydWU8L1NUUk9ORz4sCiAgICAgICAgdGhlbiBjb3B5aW5nIGlzIG5vbi1kZXN0cnVjdGl2ZSwgYXMgaW4gPFNUUk9ORz5vdmVybGF5PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBhbiBpbnRlZ2VyIHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiAgdXBvbiAgZmFpbHVyZSwKLSAgICAgICBhbmQgIDxTVFJPTkc+T0s8L1NUUk9ORz4gIChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgUm91dGluZXMgIHRoYXQgIHJldHVybiBhbiBpbnRlZ2VyIHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUsCisgICAgICAgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4gKFNWcjQgb25seSBzcGVjaWZpZXMgImFuIGludGVnZXIgdmFsdWUgIG90aGVyICB0aGFuCiAgICAgICAgPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4KIAotICAgICAgIFgvT3BlbiBkZWZpbmVzIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiAgdGhpcyAgaW1wbGVtZW50YS0KLSAgICAgICB0aW9uLCAgPFNUUk9ORz5jb3B5d2luPC9TVFJPTkc+LCAgPFNUUk9ORz5vdmVybGF5PC9TVFJPTkc+ICBhbmQgPFNUUk9ORz5vdmVyd3JpdGU8L1NUUk9ORz4gcmV0dXJuIGFuIGVycm9yIGlmCisgICAgICAgWC9PcGVuICBkZWZpbmVzICBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gdGhpcyBpbXBsZW1lbnRhLQorICAgICAgIHRpb24sIDxTVFJPTkc+Y29weXdpbjwvU1RST05HPiwgPFNUUk9ORz5vdmVybGF5PC9TVFJPTkc+IGFuZCA8U1RST05HPm92ZXJ3cml0ZTwvU1RST05HPiByZXR1cm4gIGFuICBlcnJvciAgaWYKICAgICAgICBlaXRoZXIgb2YgdGhlIHdpbmRvdyBwb2ludGVycyBhcmUgbnVsbCwgb3IgaWYgc29tZSBwYXJ0IG9mCiAgICAgICAgdGhlIHdpbmRvdyB3b3VsZCBiZSBwbGFjZWQgb2ZmLXNjcmVlbi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPm92ZXJsYXk8L1NUUk9ORz4gYW5kIDxTVFJPTkc+b3ZlcndyaXRlPC9TVFJPTkc+IG1heSBiZSBtYWNyb3MuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuY3Rpb25zCiAgICAgICAgKGFkZGluZyB0aGUgY29uc3QgcXVhbGlmaWVycykuICBJdCBmdXJ0aGVyIHNwZWNpZmllcyB0aGVpcgogICAgICAgIGJlaGF2aW9yIGluIHRoZSBwcmVzZW5jZSBvZiBjaGFyYWN0ZXJzIHdpdGggbXVsdGlieXRlIHJlbi0KQEAgLTEwNiwxNyArMTEyLDI4IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wYWQuM3guaHRtbCI+Y3Vyc19wYWQoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3ZlcmxheS4zeC5odG1sIj5jdXJzX292ZXJsYXkoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLW92ZXJsYXlfLW92ZXJ3cml0ZSI+b3ZlcmxheSwgb3ZlcndyaXRlPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWNvcHl3aW4iPmNvcHl3aW48L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfcGFkLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19wYWQuM3guaHRtbAppbmRleCBlNDk3MTgxLi5iNWFlZTg3IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19wYWQuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19wYWQuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNDcgKzI2LDUxIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3BhZC4zeCx2IDEuMTQgMjAwNS8wNS8xNSAxNjoxODo0MyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfcGFkLjN4LHYgMS4xOCAyMDE1LzA3LzIxIDA4OjU4OjQ0IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfcGFkIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19wYWQgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfcGFkIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3BhZC4zeC5odG1sIj5jdXJzX3BhZCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcGFkLjN4Lmh0bWwiPmN1cnNfcGFkKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm5ld3BhZDwvU1RST05HPiwgPFNUUk9ORz5zdWJwYWQ8L1NUUk9ORz4sIDxTVFJPTkc+cHJlZnJlc2g8L1NUUk9ORz4sIDxTVFJPTkc+cG5vdXRyZWZyZXNoPC9TVFJPTkc+LCA8U1RST05HPnBlY2hvY2hhcjwvU1RST05HPiwKICAgICAgICA8U1RST05HPnBlY2hvX3djaGFyPC9TVFJPTkc+IC0gY3JlYXRlIGFuZCBkaXNwbGF5IDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHBhZHMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKLSAgICAgICA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPipuZXdwYWQoaW50PC9TVFJPTkc+IDxTVFJPTkc+bmxpbmVzLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5jb2xzKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPipzdWJwYWQoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Km9yaWcsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bmxpbmVzLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5jb2xzLDwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmVnaW5feSw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5iZWdpbl94KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnByZWZyZXNoKFdJTkRPVzwvU1RST05HPiA8U1RST05HPipwYWQsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cG1pbnJvdyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wbWluY29sLDwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c21pbnJvdyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbWluY29sLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNtYXhyb3csPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c21heGNvbCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wbm91dHJlZnJlc2goV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KnBhZCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wbWlucm93LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnBtaW5jb2wsPC9TVFJPTkc+Ci0gICAgICAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbWlucm93LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNtaW5jb2wsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c21heHJvdyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbWF4Y29sKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnBlY2hvY2hhcihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qcGFkLDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPmNoKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnBlY2hvX3djaGFyKFdJTkRPVzwvU1RST05HPiA8U1RST05HPipwYWQsPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KndjaCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qbmV3cGFkKGludDwvU1RST05HPiA8RU0+bmxpbmVzPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPm5jb2xzPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qc3VicGFkKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3JpZzwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5ubGluZXM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+bmNvbHM8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YmVnaW48L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT54PC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wcmVmcmVzaChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnBhZDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5wbWlucm93PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnBtaW5jb2w8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5zbWlucm93PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnNtaW5jb2w8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+c21heHJvdzwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5zbWF4Y29sPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wbm91dHJlZnJlc2goV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5wYWQ8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+cG1pbnJvdzwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5wbWluY29sPC9FTT48U1RST05HPiw8L1NUUk9ORz4KKyAgICAgICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8RU0+c21pbnJvdzwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5zbWluY29sPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnNtYXhyb3c8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+c21heGNvbDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cGVjaG9jaGFyKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+cGFkPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPEVNPmNoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wZWNob193Y2hhcihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPnBhZDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53Y2g8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1uZXdwYWQiPm5ld3BhZDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+bmV3cGFkPC9TVFJPTkc+IHJvdXRpbmUgY3JlYXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSAgbmV3CiAgICAgICAgcGFkIGRhdGEgc3RydWN0dXJlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBsaW5lcywgPEVNPm5saW5lczwvRU0+LAogICAgICAgIGFuZCBjb2x1bW5zLCA8RU0+bmNvbHM8L0VNPi4gIEEgcGFkIGlzIGxpa2UgYSB3aW5kb3csICBleGNlcHQgIHRoYXQKQEAgLTgzLDYgKzg2LDkgQEAKICAgICAgICBvZiB0aGUgcGFkIHRvIGJlIGRpc3BsYXllZCBhbmQgdGhlIGxvY2F0aW9uIG9uIHRoZSAgc2NyZWVuCiAgICAgICAgdG8gYmUgdXNlZCBmb3IgdGhlIGRpc3BsYXkuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtc3VicGFkIj5zdWJwYWQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnN1YnBhZDwvU1RST05HPiByb3V0aW5lIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgc3ViLQogICAgICAgIHdpbmRvdyB3aXRoaW4gYSAgcGFkICB3aXRoICB0aGUgIGdpdmVuICBudW1iZXIgIG9mICBsaW5lcywKICAgICAgICA8RU0+bmxpbmVzPC9FTT4sICBhbmQgIGNvbHVtbnMsICA8RU0+bmNvbHM8L0VNPi4gICBVbmxpa2UgPFNUUk9ORz5zdWJ3aW48L1NUUk9ORz4sIHdoaWNoIHVzZXMKQEAgLTkzLDIxICs5OSwyNyBAQAogICAgICAgIHRlbiBiZSBuZWNlc3NhcnkgdG8gY2FsbCA8U1RST05HPnRvdWNod2luPC9TVFJPTkc+IG9yIDxTVFJPTkc+dG91Y2hsaW5lPC9TVFJPTkc+IG9uIDxFTT5vcmlnPC9FTT4gYmUtCiAgICAgICAgZm9yZSBjYWxsaW5nIDxTVFJPTkc+cHJlZnJlc2g8L1NUUk9ORz4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtcHJlZnJlc2hfLXBub3V0cmVmcmVzaCI+cHJlZnJlc2gsIHBub3V0cmVmcmVzaDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPnByZWZyZXNoPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+cG5vdXRyZWZyZXNoPC9TVFJPTkc+IHJvdXRpbmVzIGFyZSBhbmFsb2dvdXMgdG8KICAgICAgICA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+IGFuZCA8U1RST05HPndub3V0cmVmcmVzaDwvU1RST05HPiBleGNlcHQgdGhhdCB0aGV5IHJlbGF0ZSB0byAgcGFkcwogICAgICAgIGluc3RlYWQgIG9mIHdpbmRvd3MuICBUaGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZSBuZWVkZWQKICAgICAgICB0byBpbmRpY2F0ZSB3aGF0IHBhcnQgb2YgdGhlIHBhZCBhbmQgc2NyZWVuIGFyZSAgaW52b2x2ZWQuCi0gICAgICAgPEVNPnBtaW5yb3c8L0VNPiAgYW5kIDxFTT5wbWluY29sPC9FTT4gc3BlY2lmeSB0aGUgdXBwZXIgbGVmdC1oYW5kIGNvcm5lciBvZgotICAgICAgIHRoZSByZWN0YW5nbGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwYWQuICA8RU0+c21pbnJvdzwvRU0+LCAgPEVNPnNtaW4tPC9FTT4KLSAgICAgICA8RU0+Y29sPC9FTT4sIDxFTT5zbWF4cm93PC9FTT4sIGFuZCA8RU0+c21heGNvbDwvRU0+IHNwZWNpZnkgdGhlIGVkZ2VzIG9mIHRoZSByZWN0YW4tCi0gICAgICAgZ2xlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLiAgVGhlICBsb3dlciAgcmlnaHQtaGFuZAotICAgICAgIGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcGFkIGlzIGNhbC0KLSAgICAgICBjdWxhdGVkIGZyb20gdGhlIHNjcmVlbiBjb29yZGluYXRlcywgc2luY2UgdGhlICByZWN0YW5nbGVzCi0gICAgICAgbXVzdCAgYmUgIHRoZSBzYW1lIHNpemUuICBCb3RoIHJlY3RhbmdsZXMgbXVzdCBiZSBlbnRpcmVseQotICAgICAgIGNvbnRhaW5lZCB3aXRoaW4gdGhlaXIgIHJlc3BlY3RpdmUgIHN0cnVjdHVyZXMuICAgTmVnYXRpdmUKLSAgICAgICB2YWx1ZXMgb2YgPEVNPnBtaW5yb3c8L0VNPiwgPEVNPnBtaW5jb2w8L0VNPiwgPEVNPnNtaW5yb3c8L0VNPiwgb3IgPEVNPnNtaW5jb2w8L0VNPiBhcmUgdHJlYXQtCi0gICAgICAgZWQgYXMgaWYgdGhleSB3ZXJlIHplcm8uCisgICAgICAgVGhlIDxFTT5wbWlucm93PC9FTT4gYW5kIDxFTT5wbWluY29sPC9FTT4gcGFyYW1ldGVycyBzcGVjaWZ5IHRoZSB1cHBlciBsZWZ0LQorICAgICAgIGhhbmQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUgdG8gYmUgZGlzcGxheWVkIGluICB0aGUgIHBhZC4KKyAgICAgICBUaGUgIDxFTT5zbWlucm93PC9FTT4sICA8RU0+c21pbmNvbDwvRU0+LCAgPEVNPnNtYXhyb3c8L0VNPiwgIGFuZCAgPEVNPnNtYXhjb2w8L0VNPiBwYXJhbWV0ZXJzCisgICAgICAgc3BlY2lmeSB0aGUgZWRnZXMgb2YgdGhlIHJlY3RhbmdsZSB0byBiZSBkaXNwbGF5ZWQgb24gIHRoZQorICAgICAgIHNjcmVlbi4gICBUaGUgIGxvd2VyIHJpZ2h0LWhhbmQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUgdG8KKyAgICAgICBiZSBkaXNwbGF5ZWQgaW4gdGhlIHBhZCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHNjcmVlbiAgY28tCisgICAgICAgb3JkaW5hdGVzLCAgc2luY2UgIHRoZSAgcmVjdGFuZ2xlcyAgbXVzdCBiZSB0aGUgc2FtZSBzaXplLgorICAgICAgIEJvdGggcmVjdGFuZ2xlcyBtdXN0IGJlIGVudGlyZWx5ICBjb250YWluZWQgIHdpdGhpbiAgdGhlaXIKKyAgICAgICByZXNwZWN0aXZlICBzdHJ1Y3R1cmVzLiAgTmVnYXRpdmUgdmFsdWVzIG9mIDxFTT5wbWlucm93PC9FTT4sIDxFTT5wbWluLTwvRU0+CisgICAgICAgPEVNPmNvbDwvRU0+LCA8RU0+c21pbnJvdzwvRU0+LCBvciA8RU0+c21pbmNvbDwvRU0+IGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSB6ZXJvLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXBlY2hvY2hhciI+cGVjaG9jaGFyPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5wZWNob2NoYXI8L1NUUk9ORz4gcm91dGluZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhIGNhbGwKICAgICAgICB0byAgPFNUUk9ORz5hZGRjaDwvU1RST05HPiAgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiwgYSBjYWxsIHRvIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+CiAgICAgICAgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4sIG9yIGEgY2FsbCB0byAgPFNUUk9ORz53YWRkY2g8L1NUUk9ORz4gIGZvbC0KQEAgLTExOSw2ICsxMzEsOSBAQAogICAgICAgIGxhc3QgbG9jYXRpb24gb2YgdGhlIHBhZCBvbiB0aGUgc2NyZWVuIGlzIHJldXNlZCAgZm9yICB0aGUKICAgICAgICBhcmd1bWVudHMgdG8gPFNUUk9ORz5wcmVmcmVzaDwvU1RST05HPi4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1wZWNob193Y2hhciI+cGVjaG9fd2NoYXI8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5wZWNob193Y2hhcjwvU1RST05HPiAgZnVuY3Rpb24gaXMgdGhlIGFuYWxvZ291cyB3aWRlLWNoYXJhY3RlcgogICAgICAgIGZvcm0gb2YgPFNUUk9ORz5wZWNob2NoYXI8L1NUUk9ORz4uICBJdCBvdXRwdXRzIG9uZSBjaGFyYWN0ZXIgdG8gYSBwYWQgIGFuZAogICAgICAgIGltbWVkaWF0ZWx5ICByZWZyZXNoZXMgdGhlIHBhZC4gIEl0IGRvZXMgdGhpcyBieSBhIGNhbGwgdG8KQEAgLTEyNiw3ICsxNDEsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgUm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gIDxTVFJPTkc+RVJSPC9TVFJPTkc+ICB1cG9uICBmYWlsdXJlCiAgICAgICAgYW5kICA8U1RST05HPk9LPC9TVFJPTkc+ICAoU1ZyNCBvbmx5IHNwZWNpZmllcyAiYW4gaW50ZWdlciB2YWx1ZSBvdGhlciB0aGFuCiAgICAgICAgPFNUUk9ORz5FUlI8L1NUUk9ORz4iKSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4KQEAgLTEzNywzNyArMTUyLDM2IEBACiAgICAgICAgWC9PcGVuICBkb2VzIG5vdCBkZWZpbmUgYW55IGVycm9yIGNvbmRpdGlvbnMuICBJbiB0aGlzIGltLQogICAgICAgIHBsZW1lbnRhdGlvbgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+cHJlZnJlc2g8L1NUUk9ORz4gYW5kIDxTVFJPTkc+cG5vdXRyZWZyZXNoPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLAotICAgICAgICAgICAgICAgICAgIG9yIGlmIHRoZSB3aW5kb3cgaXMgbm90IHJlYWxseSBhIHBhZCBvciBpZiB0aGUKLSAgICAgICAgICAgICAgICAgICBhcmVhIHRvIHJlZnJlc2ggZXh0ZW5kcyBvZmYtc2NyZWVuIG9yICBpZiAgdGhlCi0gICAgICAgICAgICAgICAgICAgbWluaW11bSBjb29yZGluYXRlcyBhcmUgZ3JlYXRlciB0aGFuIHRoZSBtYXhpLQotICAgICAgICAgICAgICAgICAgIG11bS4KKyAgICAgICAgICA8U1RST05HPnByZWZyZXNoPC9TVFJPTkc+IGFuZCA8U1RST05HPnBub3V0cmVmcmVzaDwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCAgb3IKKyAgICAgICAgICAgICAgIGlmICB0aGUgIHdpbmRvdyBpcyBub3QgcmVhbGx5IGEgcGFkIG9yIGlmIHRoZSBhcmVhCisgICAgICAgICAgICAgICB0byByZWZyZXNoIGV4dGVuZHMgb2ZmLXNjcmVlbiBvciAgaWYgIHRoZSAgbWluaW11bQorICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMgYXJlIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bS4KIAotICAgICAgICAgICAgICA8U1RST05HPnBlY2hvY2hhcjwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHdpbmRvdyBpcyBub3QgcmVhbGx5IGEKLSAgICAgICAgICAgICAgICAgICBwYWQsICBhbmQgdGhlIGFzc29jaWF0ZWQgY2FsbCB0byA8U1RST05HPndlY2hvY2hhcjwvU1RST05HPiByZS0KLSAgICAgICAgICAgICAgICAgICB0dXJucyBhbiBlcnJvci4KKyAgICAgICAgICA8U1RST05HPnBlY2hvY2hhcjwvU1RST05HPgorICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gIGVycm9yICBpZiAgdGhlIHdpbmRvdyBpcyBub3QgcmVhbGx5IGEKKyAgICAgICAgICAgICAgIHBhZCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNhbGwgdG8gPFNUUk9ORz53ZWNob2NoYXI8L1NUUk9ORz4gIHJldHVybnMKKyAgICAgICAgICAgICAgIGFuIGVycm9yLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+cGVjaG9fd2NoYXI8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgaXMgbm90IHJlYWxseSBhCi0gICAgICAgICAgICAgICAgICAgcGFkLCAgYW5kICB0aGUgIGFzc29jaWF0ZWQgY2FsbCB0byA8U1RST05HPndlY2hvX3djaGFyPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvci4KKyAgICAgICAgICA8U1RST05HPnBlY2hvX3djaGFyPC9TVFJPTkc+CisgICAgICAgICAgICAgICByZXR1cm5zICBhbiAgZXJyb3IgIGlmICB0aGUgd2luZG93IGlzIG5vdCByZWFsbHkgYQorICAgICAgICAgICAgICAgcGFkLCBhbmQgdGhlIGFzc29jaWF0ZWQgY2FsbCAgdG8gIDxTVFJPTkc+d2VjaG9fd2NoYXI8L1NUUk9ORz4gIHJlLQorICAgICAgICAgICAgICAgdHVybnMgYW4gZXJyb3IuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBOb3RlIHRoYXQgPFNUUk9ORz5wZWNob2NoYXI8L1NUUk9ORz4gbWF5IGJlIGEgbWFjcm8uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlICA0ICBkZXNjcmliZXMgIHRoZXNlICBmdW5jLQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlICBYU0kgIEN1cnNlcyAgc3RhbmRhcmQsICBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jLQogICAgICAgIHRpb25zLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdG91Y2guM3guaHRtbCI+Y3Vyc190b3VjaCgzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz5jdXJzX2FkZC08L1NUUk9ORz4KICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYWRkY2guM3guaHRtbCI+Y2goM3gpPC9BPjwvU1RST05HPi4KIApAQCAtMTc1LDEwICsxODksMjQgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcGFkLjN4Lmh0bWwiPmN1cnNfcGFkKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1uZXdwYWQiPm5ld3BhZDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1zdWJwYWQiPnN1YnBhZDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1wcmVmcmVzaF8tcG5vdXRyZWZyZXNoIj5wcmVmcmVzaCwgcG5vdXRyZWZyZXNoPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXBlY2hvY2hhciI+cGVjaG9jaGFyPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXBlY2hvX3djaGFyIj5wZWNob193Y2hhcjwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19wcmludC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfcHJpbnQuM3guaHRtbAppbmRleCAxNWY3NmY5Li41MDhmOTY0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19wcmludC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3ByaW50LjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM4ICsyNiwzOSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19wcmludC4zeCx2IDEuOCAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19wcmludC4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3ByaW50IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19wcmludCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19wcmludCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wcmludC4zeC5odG1sIj5jdXJzX3ByaW50KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50LjN4Lmh0bWwiPmN1cnNfcHJpbnQoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWNwcmludDwvU1RST05HPiAtIHNoaXAgYmluYXJ5IGRhdGEgdG8gcHJpbnRlcgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bWNwcmludChjaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmRhdGEsPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bGVuKTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoaXMgIGZ1bmN0aW9uICB1c2VzIHRoZSA8U1RST05HPm1jNXA8L1NUUk9ORz4gb3IgPFNUUk9ORz5tYzQ8L1NUUk9ORz4gYW5kIDxTVFJPTkc+bWM1PC9TVFJPTkc+IGNhcGFiaWxpdGllcywKICAgICAgICBpZiB0aGV5IGFyZSBwcmVzZW50LCB0byAgc2hpcCAgZ2l2ZW4gIGRhdGEgIHRvICBhICBwcmludGVyCiAgICAgICAgYXR0YWNoZWQgdG8gdGhlIHRlcm1pbmFsLgpAQCAtNzAsMjEgKzcwLDIxIEBACiAgICAgICAgKHR5cGljYWxseSAgYWJvdXQgIGhhbGYgIG9mIGl0cyBub21pbmFsIGNwcyByYXRpbmcpLiAgRG90LQogICAgICAgIG1hdHJpeCBwcmludGVycyBhbmQgNi1wYWdlLXBlci1taW51dGUgbGFzZXJzIGNhbiB0eXBpY2FsbHkKICAgICAgICBoYW5kbGUgIDgwY3BzLCAgc28gYSBnb29kIGNvbnNlcnZhdGl2ZSBydWxlIG9mIHRodW1iIGlzIHRvCi0gICAgICAgc2xlZXAgZm9yIGEgc2Vjb25kIGFmdGVyIHNoaXBwaW5nIGVhY2ggODAtY2hhcmFjdGVyICBsaW5lLgorICAgICAgIHNsZWVwIGZvciBhIHNlY29uZCBhZnRlciBzaGlwcGluZyBlYWNoIDgwLWNoYXJhY3RlciBsaW5lLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGUgIDxTVFJPTkc+bWNwcmludDwvU1RST05HPiAgZnVuY3Rpb24gIHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaWYgdGhlIHdyaXRlIG9wZXJhdGlvbgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz5tY3ByaW50PC9TVFJPTkc+IGZ1bmN0aW9uIHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaWYgIHRoZSAgd3JpdGUgIG9wZXJhdGlvbgogICAgICAgIGFib3J0ZWQgZm9yIHNvbWUgcmVhc29uLiAgSW4gdGhpcyBjYXNlLCBlcnJubyB3aWxsIGNvbnRhaW4KLSAgICAgICBlaXRoZXIgIGFuICBlcnJvciAgYXNzb2NpYXRlZCAgd2l0aCA8U1RST05HPndyaXRlKDIpPC9TVFJPTkc+IG9yIG9uZSBvZiB0aGUKKyAgICAgICBlaXRoZXIgYW4gZXJyb3IgYXNzb2NpYXRlZCB3aXRoIDxTVFJPTkc+d3JpdGUoMik8L1NUUk9ORz4gIG9yICBvbmUgIG9mICB0aGUKICAgICAgICBmb2xsb3dpbmc6CiAKICAgICAgICBFTk9ERVYKICAgICAgICAgICAgIENhcGFiaWxpdGllcyBmb3IgcHJpbnRlciByZWRpcmVjdGlvbiBkbyBub3QgZXhpc3QuCiAKICAgICAgICBFTk9NRU0KLSAgICAgICAgICAgIENvdWxkbid0IGFsbG9jYXRlIHN1ZmZpY2llbnQgIG1lbW9yeSAgdG8gIGJ1ZmZlciAgdGhlCisgICAgICAgICAgICBDb3VsZG4ndCAgYWxsb2NhdGUgIHN1ZmZpY2llbnQgIG1lbW9yeSAgdG8gYnVmZmVyIHRoZQogICAgICAgICAgICAgcHJpbnRlciB3cml0ZS4KIAogICAgICAgIFdoZW4gPFNUUk9ORz5tY3ByaW50PC9TVFJPTkc+IHN1Y2NlZWRzLCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycwpAQCAtOTIsMzAgKzkyLDM2IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlIDxTVFJPTkc+bWNwcmludDwvU1RST05HPiBjYWxsIHdhcyBkZXNpZ25lZCBmb3IgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgYW5kIGlzICBub3QKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSAgPFNUUk9ORz5tY3ByaW50PC9TVFJPTkc+IGNhbGwgd2FzIGRlc2lnbmVkIGZvciA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCBhbmQgaXMgbm90CiAgICAgICAgZm91bmQgaW4gU1ZyNCBjdXJzZXMsIDQuNEJTRCBjdXJzZXMsIG9yIGFueSBvdGhlciBwcmV2aW91cwogICAgICAgIHZlcnNpb24gb2YgY3Vyc2VzLgogCiAKIDwvUFJFPgotPEgyPkJVR1M8L0gyPjxQUkU+Ci0gICAgICAgUGFkZGluZyBpbiB0aGUgPFNUUk9ORz5tYzVwPC9TVFJPTkc+LCA8U1RST05HPm1jNDwvU1RST05HPiBhbmQgPFNUUk9ORz5tYzU8L1NUUk9ORz4gY2FwYWJpbGl0aWVzIHdpbGwgbm90ICBiZQorPEgyPjxhIG5hbWU9ImgyLUJVR1MiPkJVR1M8L2E+PC9IMj48UFJFPgorICAgICAgIFBhZGRpbmcgIGluIHRoZSA8U1RST05HPm1jNXA8L1NUUk9ORz4sIDxTVFJPTkc+bWM0PC9TVFJPTkc+IGFuZCA8U1RST05HPm1jNTwvU1RST05HPiBjYXBhYmlsaXRpZXMgd2lsbCBub3QgYmUKICAgICAgICBpbnRlcnByZXRlZC4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50LjN4Lmh0bWwiPmN1cnNfcHJpbnQoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUJVR1MiPkJVR1M8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19wcmludHcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX3ByaW50dy4zeC5odG1sCmluZGV4IDVlODhkNjAuLmFlOWFlYWQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3ByaW50dy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3ByaW50dy4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMiArMjYsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfcHJpbnR3LjN4LHYgMS4xNyAyMDA2LzEyLzI0IDE2OjA1OjE3IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19wcmludHcuM3gsdiAxLjIwIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19wcmludHcgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX3ByaW50dyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19wcmludHcgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfcHJpbnR3LjN4Lmh0bWwiPmN1cnNfcHJpbnR3KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wcmludHcuM3guaHRtbCI+Y3Vyc19wcmludHcoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+cHJpbnR3PC9TVFJPTkc+LCA8U1RST05HPndwcmludHc8L1NUUk9ORz4sIDxTVFJPTkc+bXZwcmludHc8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3cHJpbnR3PC9TVFJPTkc+LCA8U1RST05HPnZ3cHJpbnR3PC9TVFJPTkc+LCA8U1RST05HPnZ3X3ByaW50dzwvU1RST05HPgogICAgICAgIC0gcHJpbnQgZm9ybWF0dGVkIG91dHB1dCBpbiA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aW5kb3dzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wcmludHcoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmZtdCw8L1NUUk9ORz4gPFNUUk9ORz4uLi4pOzwvU1RST05HPgpAQCAtNjcsMjEgKzY3LDIxIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+cHJpbnR3PC9TVFJPTkc+LCAgPFNUUk9ORz53cHJpbnR3PC9TVFJPTkc+LCA8U1RST05HPm12cHJpbnR3PC9TVFJPTkc+IGFuZCA8U1RST05HPm12d3ByaW50dzwvU1RST05HPiByb3V0aW5lcyBhcmUKLSAgICAgICBhbmFsb2dvdXMgdG8gIDxTVFJPTkc+cHJpbnRmPC9TVFJPTkc+ICBbc2VlICA8U1RST05HPjxBIEhSRUY9InByaW50Zi4zLmh0bWwiPnByaW50ZigzKTwvQT48L1NUUk9ORz5dLiAgIEluICBlZmZlY3QsICB0aGUKKyAgICAgICBhbmFsb2dvdXMgdG8gIDxTVFJPTkc+cHJpbnRmPC9TVFJPTkc+ICBbc2VlICA8U1RST05HPnByaW50ZigzKTwvU1RST05HPl0uICAgSW4gIGVmZmVjdCwgIHRoZQogICAgICAgIHN0cmluZyB0aGF0IHdvdWxkIGJlIG91dHB1dCBieSA8U1RST05HPnByaW50ZjwvU1RST05HPiBpcyBvdXRwdXQgaW5zdGVhZCBhcwogICAgICAgIHRob3VnaCA8U1RST05HPndhZGRzdHI8L1NUUk9ORz4gd2VyZSB1c2VkIG9uIHRoZSBnaXZlbiB3aW5kb3cuCiAKICAgICAgICBUaGUgPFNUUk9ORz52d3ByaW50dzwvU1RST05HPiAgYW5kICA8U1RST05HPnd2X3ByaW50dzwvU1RST05HPiAgcm91dGluZXMgIGFyZSAgYW5hbG9nb3VzICB0bwotICAgICAgIDxTVFJPTkc+dnByaW50ZjwvU1RST05HPiAgW3NlZSAgPFNUUk9ORz48QSBIUkVGPSJwcmludGYuMy5odG1sIj5wcmludGYoMyk8L0E+PC9TVFJPTkc+XSAgYW5kICBwZXJmb3JtICBhIDxTVFJPTkc+d3ByaW50dzwvU1RST05HPiB1c2luZyBhCisgICAgICAgPFNUUk9ORz52cHJpbnRmPC9TVFJPTkc+ICBbc2VlICA8U1RST05HPnByaW50ZigzKTwvU1RST05HPl0gIGFuZCAgcGVyZm9ybSAgYSA8U1RST05HPndwcmludHc8L1NUUk9ORz4gdXNpbmcgYQogICAgICAgIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QuICBUaGUgdGhpcmQgYXJndW1lbnQgaXMgYSAgPFNUUk9ORz52YV9saXN0PC9TVFJPTkc+LAogICAgICAgIGEgICBwb2ludGVyICAgdG8gIGEgIGxpc3QgIG9mICBhcmd1bWVudHMsICBhcyAgZGVmaW5lZCAgaW4KICAgICAgICA8U1RST05HPiZsdDtzdGRhcmcuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBhbiBpbnRlZ2VyIHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gIHVwb24gIGZhaWx1cmUKICAgICAgICBhbmQgIDxTVFJPTkc+T0s8L1NUUk9ORz4gIChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4KICAgICAgICA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgpAQCAtOTEsOSArOTEsMTMgQEAKICAgICAgICBlbm91Z2ggbWVtb3J5IGZvciB0aGUgYnVmZmVyIHVzZWQgdG8gZm9ybWF0ICB0aGUgIHJlc3VsdHMuCiAgICAgICAgSXQgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAKKyAgICAgICBGdW5jdGlvbnMgIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmUtCisgICAgICAgbWVudCB1c2luZyA8U1RST05HPndtb3ZlPC9TVFJPTkc+LCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSAgcG9zaXRpb24gIGlzCisgICAgICAgb3V0c2lkZSB0aGUgd2luZG93LCBvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKwogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgWFNJICBDdXJzZXMgIHN0YW5kYXJkLCAgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuYy0KICAgICAgICB0aW9ucy4gIFRoZSBmdW5jdGlvbiA8U1RST05HPnZ3cHJpbnR3PC9TVFJPTkc+IGlzIG1hcmtlZCBUTyAgQkUgIFdJVEhEUkFXTiwKICAgICAgICBhbmQgIGlzICB0byAgYmUgcmVwbGFjZWQgYnkgYSBmdW5jdGlvbiA8U1RST05HPnZ3X3ByaW50dzwvU1RST05HPiB1c2luZyB0aGUKQEAgLTEwNiwxNyArMTEwLDIyIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InByaW50Zi4zLmh0bWwiPnByaW50ZigzKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+dnByaW50ZigzKTwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPnByaW50ZigzKTwvU1RST05HPiwgPFNUUk9ORz52cHJpbnRmKDMpPC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wcmludHcuM3guaHRtbCI+Y3Vyc19wcmludHcoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfcmVmcmVzaC4zeC5odG1sCmluZGV4IGUxNjlkOTUuLmI3MzllMDcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3JlZnJlc2guM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc19yZWZyZXNoLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMyICsyNiwzMyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19yZWZyZXNoLjN4LHYgMS4xMiAyMDA1LzA1LzE1IDE2OjE4OjQ5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19yZWZyZXNoLjN4LHYgMS4xNSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfcmVmcmVzaCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfcmVmcmVzaCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19yZWZyZXNoIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+Y3Vyc19yZWZyZXNoKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZG91cGRhdGU8L1NUUk9ORz4sIDxTVFJPTkc+cmVkcmF3d2luPC9TVFJPTkc+LCA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4sIDxTVFJPTkc+d25vdXRyZWZyZXNoPC9TVFJPTkc+LCA8U1RST05HPndyZWRyYXdsbjwvU1RST05HPiwKICAgICAgICA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+IC0gcmVmcmVzaCA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aW5kb3dzIGFuZCBsaW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmVmcmVzaCh2b2lkKTs8L1NUUk9ORz4KQEAgLTY0LDcgKzY0LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4gIHJvdXRpbmVzICAob3IgIDxTVFJPTkc+d25vdXRyZWZyZXNoPC9TVFJPTkc+ICBhbmQKICAgICAgICA8U1RST05HPmRvdXBkYXRlPC9TVFJPTkc+KSAgbXVzdCBiZSBjYWxsZWQgdG8gZ2V0IGFjdHVhbCBvdXRwdXQgdG8gdGhlIHRlci0KICAgICAgICBtaW5hbCwgYXMgb3RoZXIgcm91dGluZXMgIG1lcmVseSAgbWFuaXB1bGF0ZSAgZGF0YSAgc3RydWMtCkBAIC0xMTYsNyArMTE2LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFJvdXRpbmVzICB0aGF0ICByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlLAogICAgICAgIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlICBvdGhlciAgdGhhbgogICAgICAgIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCkBAIC0xMzQsMTIgKzEzNCwxMiBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiBhbmQgPFNUUk9ORz5yZWRyYXd3aW48L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSAgNCAgZGVzY3JpYmVzICB0aGVzZSAgZnVuYy0KICAgICAgICB0aW9ucy4KIApAQCAtMTU0LDE3ICsxNTQsMjMgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+IDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3NjYW53LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc19zY2Fudy4zeC5odG1sCmluZGV4IDU2NjE4ZmYuLmNhOGZlNjMgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3NjYW53LjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfc2NhbncuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3NjYW53LjN4LHYgMS4xNCAyMDA2LzEyLzI0IDE2OjA1OjQ5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19zY2Fudy4zeCx2IDEuMTcgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3NjYW53IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc19zY2FudyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19zY2FudyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY2Fudy4zeC5odG1sIj5jdXJzX3NjYW53KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3NjYW53LjN4Lmh0bWwiPmN1cnNfc2NhbncoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+c2Nhbnc8L1NUUk9ORz4sIDxTVFJPTkc+d3NjYW53PC9TVFJPTkc+LCA8U1RST05HPm12c2Nhbnc8L1NUUk9ORz4sIDxTVFJPTkc+bXZ3c2Nhbnc8L1NUUk9ORz4sIDxTVFJPTkc+dndzY2FudzwvU1RST05HPiwgPFNUUk9ORz52d19zY2FudzwvU1RST05HPiAtIGNvbi0KICAgICAgICB2ZXJ0IGZvcm1hdHRlZCBpbnB1dCBmcm9tIGEgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93CiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zY2FudyhjaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmZtdCw8L1NUUk9ORz4gPFNUUk9ORz4uLi4pOzwvU1RST05HPgpAQCAtNjQsMTEgKzY0LDExIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5zY2FudzwvU1RST05HPiwgPFNUUk9ORz53c2Nhbnc8L1NUUk9ORz4gYW5kIDxTVFJPTkc+bXZzY2FudzwvU1RST05HPiByb3V0aW5lcyAgYXJlICBhbmFsb2dvdXMgIHRvCi0gICAgICAgPFNUUk9ORz5zY2FuZjwvU1RST05HPiAgW3NlZSA8U1RST05HPjxBIEhSRUY9InNjYW5mLjMuaHRtbCI+c2NhbmYoMyk8L0E+PC9TVFJPTkc+XS4gIFRoZSBlZmZlY3Qgb2YgdGhlc2Ugcm91dGluZXMgaXMgYXMKKyAgICAgICA8U1RST05HPnNjYW5mPC9TVFJPTkc+ICBbc2VlIDxTVFJPTkc+c2NhbmYoMyk8L1NUUk9ORz5dLiAgVGhlIGVmZmVjdCBvZiB0aGVzZSByb3V0aW5lcyBpcyBhcwogICAgICAgIHRob3VnaCA8U1RST05HPndnZXRzdHI8L1NUUk9ORz4gd2VyZSBjYWxsZWQgb24gdGhlIHdpbmRvdywgYW5kIHRoZSAgcmVzdWx0LQotICAgICAgIGluZyBsaW5lIHVzZWQgYXMgaW5wdXQgZm9yIDxTVFJPTkc+PEEgSFJFRj0ic3NjYW5mLjMuaHRtbCI+c3NjYW5mKDMpPC9BPjwvU1RST05HPi4gIEZpZWxkcyB3aGljaCBkbyBub3QKKyAgICAgICBpbmcgbGluZSB1c2VkIGFzIGlucHV0IGZvciA8U1RST05HPnNzY2FuZigzKTwvU1RST05HPi4gIEZpZWxkcyB3aGljaCBkbyBub3QKICAgICAgICBtYXAgdG8gYSB2YXJpYWJsZSBpbiB0aGUgPEVNPmZtdDwvRU0+IGZpZWxkIGFyZSBsb3N0LgogCiAgICAgICAgVGhlIDxTVFJPTkc+dndzY2FudzwvU1RST05HPiBhbmQgPFNUUk9ORz52d19zY2FudzwvU1RST05HPiByb3V0aW5lcyBhcmUgYW5hbG9nb3VzIHRvIDxTVFJPTkc+dnNjYW5mPC9TVFJPTkc+LgpAQCAtNzgsNyArNzgsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz52d3NjYW53PC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4gb24gZmFpbHVyZSBhbmQgYW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAgICAgICBudW1iZXIgb2YgZmllbGRzIHNjYW5uZWQgb24gc3VjY2Vzcy4KIApAQCAtODYsOSArODYsMTMgQEAKICAgICAgICA8U1RST05HPndzY2FudzwvU1RST05HPiwgIDxTVFJPTkc+bXZzY2FudzwvU1RST05HPiAgYW5kICA8U1RST05HPm12d3NjYW53PC9TVFJPTkc+ICByb3V0aW5lcyB0byBkZXRlcm1pbmUgdGhlCiAgICAgICAgbnVtYmVyIG9mIGZpZWxkcyB3aGljaCB3ZXJlIG1hcHBlZCBpbiB0aGUgY2FsbC4KIAorICAgICAgIEZ1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciAgbW92ZS0KKyAgICAgICBtZW50ICB1c2luZyAgPFNUUk9ORz53bW92ZTwvU1RST05HPiwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMKKyAgICAgICBvdXRzaWRlIHRoZSB3aW5kb3csIG9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgorCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlICA0ICBkZXNjcmliZXMgIHRoZXNlICBmdW5jLQogICAgICAgIHRpb25zLiAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+dndzY2FudzwvU1RST05HPiBpcyBtYXJrZWQgVE8gQkUgV0lUSERSQVdOLAogICAgICAgIGFuZCBpcyB0byBiZSByZXBsYWNlZCBieSBhICBmdW5jdGlvbiAgPFNUUk9ORz52d19zY2FudzwvU1RST05HPiAgdXNpbmcgIHRoZQpAQCAtMTEzLDE3ICsxMTcsMjIgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50dy4zeC5odG1sIj5jdXJzX3ByaW50dygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InNjYW5mLjMuaHRtbCI+c2NhbmYoMyk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ByaW50dy4zeC5odG1sIj5jdXJzX3ByaW50dygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPnNjYW5mKDMpPC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2NhbncuM3guaHRtbCI+Y3Vyc19zY2FudygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19zY3JfZHVtcC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfc2NyX2R1bXAuM3guaHRtbAppbmRleCA4ZGQ2MzIxLi43OTljYmE5IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc19zY3JfZHVtcC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3Njcl9kdW1wLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMyICsyNiwzMyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19zY3JfZHVtcC4zeCx2IDEuNyAyMDA2LzEyLzI0IDE2OjA1OjQ5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19zY3JfZHVtcC4zeCx2IDEuOSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfc2NyX2R1bXAgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX3Njcl9kdW1wIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX3Njcl9kdW1wIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPmN1cnNfc2NyX2R1bXAoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2NyX2R1bXAuM3guaHRtbCI+Y3Vyc19zY3JfZHVtcCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5zY3JfZHVtcDwvU1RST05HPiwgPFNUUk9ORz5zY3JfcmVzdG9yZTwvU1RST05HPiwgPFNUUk9ORz5zY3JfaW5pdDwvU1RST05HPiwgPFNUUk9ORz5zY3Jfc2V0PC9TVFJPTkc+IC0gcmVhZCAod3JpdGUpIGEKICAgICAgICA8U1RST05HPmN1cnNlczwvU1RST05HPiBzY3JlZW4gZnJvbSAodG8pIGEgZmlsZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2NyX2R1bXAoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmZpbGVuYW1lKTs8L1NUUk9ORz4KQEAgLTYyLDcgKzYyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnNjcl9kdW1wPC9TVFJPTkc+IHJvdXRpbmUgZHVtcHMgdGhlICBjdXJyZW50ICBjb250ZW50cyAgb2YgIHRoZQogICAgICAgIHZpcnR1YWwgc2NyZWVuIHRvIHRoZSBmaWxlIDxFTT5maWxlbmFtZTwvRU0+LgogCkBAIC05NCw3ICs5NCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBbGwgIHJvdXRpbmVzICByZXR1cm4gIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPgogICAgICAgIHVwb24gc3VjY2Vzcy4KIApAQCAtMTA0LDEzICsxMDQsMTMgQEAKIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgIHRoYXQgIDxTVFJPTkc+c2NyX2luaXQ8L1NUUk9ORz4sICA8U1RST05HPnNjcl9zZXQ8L1NUUk9ORz4sICBhbmQgIDxTVFJPTkc+c2NyX3Jlc3RvcmU8L1NUUk9ORz4gIG1heSAgYmUKICAgICAgICBtYWNyb3MuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIFhTSSAgQ3Vyc2VzICBzdGFuZGFyZCwgSXNzdWUgNCwgZGVzY3JpYmVzIHRoZXNlIGZ1bmMtCiAgICAgICAgdGlvbnMgKGFkZGluZyB0aGUgY29uc3QgcXVhbGlmaWVycykuCiAKQEAgLTEyMCwxOCArMTIwLDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InN5c3RlbS4zLmh0bWwiPnN5c3RlbSgzKTwvQT48L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz5zeXN0ZW0oMyk8L1NUUk9ORz4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY3JfZHVtcC4zeC5odG1sIj5jdXJzX3Njcl9kdW1wKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc19zY3JvbGwuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX3Njcm9sbC4zeC5odG1sCmluZGV4IDdmNDE1NzIuLmJlZjYyMTIgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3Njcm9sbC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3Njcm9sbC4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMSArMjYsMzIgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfc2Nyb2xsLjN4LHYgMS4xMyAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc19zY3JvbGwuM3gsdiAxLjE1IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc19zY3JvbGwgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5jdXJzX3Njcm9sbCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc19zY3JvbGwgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2Nyb2xsLjN4Lmh0bWwiPmN1cnNfc2Nyb2xsKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY3JvbGwuM3guaHRtbCI+Y3Vyc19zY3JvbGwoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+c2Nyb2xsPC9TVFJPTkc+LCA8U1RST05HPnNjcmw8L1NUUk9ORz4sIDxTVFJPTkc+d3Njcmw8L1NUUk9ORz4gLSBzY3JvbGwgYSA8U1RST05HPmN1cnNlczwvU1RST05HPiB3aW5kb3cKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNjcm9sbChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KQEAgLTYwLDcgKzYwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5zY3JvbGw8L1NUUk9ORz4gIHJvdXRpbmUgc2Nyb2xscyB0aGUgd2luZG93IHVwIG9uZSBsaW5lLiAgVGhpcwogICAgICAgIGludm9sdmVzIG1vdmluZyB0aGUgbGluZXMgaW4gdGhlICB3aW5kb3cgIGRhdGEgIHN0cnVjdHVyZS4KICAgICAgICBBcyAgYW4gb3B0aW1pemF0aW9uLCBpZiB0aGUgc2Nyb2xsaW5nIHJlZ2lvbiBvZiB0aGUgd2luZG93CkBAIC03OCw3ICs3OCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlLCBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiAoU1ZyNCAgb25seQogICAgICAgIHNwZWNpZmllcyAiYW4gaW50ZWdlciB2YWx1ZSBvdGhlciB0aGFuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgdXBvbiBzdWNjZXNzLQogICAgICAgIGZ1bCBjb21wbGV0aW9uLgpAQCAtOTEsNyArOTEsNyBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgTm90ZSB0aGF0IDxTVFJPTkc+c2NybDwvU1RST05HPiBhbmQgPFNUUk9ORz5zY3JvbGw8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogICAgICAgIFRoZSBTVnI0IGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IHRoZSBvcHRpbWl6YXRpb24gb2YgcGh5cy0KQEAgLTEwOSwyMyArMTA5LDI5IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIFhTSSAgQ3Vyc2VzICBzdGFuZGFyZCwgIElzc3VlIDQgZGVzY3JpYmVzIHRoZXNlIGZ1bmMtCiAgICAgICAgdGlvbnMuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vdXRvcHRzLjN4Lmh0bWwiPmN1cnNfb3V0b3B0cygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zY3JvbGwuM3guaHRtbCI+Y3Vyc19zY3JvbGwoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3Nsay4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfc2xrLjN4Lmh0bWwKaW5kZXggZTc2ZGNjNy4uY2I3N2Y0MyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfc2xrLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfc2xrLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDI3ICsyNiwyOCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc19zbGsuM3gsdiAxLjE2IDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCBACisgICogQElkOiBjdXJzX3Nsay4zeCx2IDEuMjIgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3NsayAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfc2xrIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX3NsayAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zbGsuM3guaHRtbCI+Y3Vyc19zbGsoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz5zbGtfaW5pdDwvU1RST05HPiwgPFNUUk9ORz5zbGtfc2V0PC9TVFJPTkc+LCA8U1RST05HPnNsa19yZWZyZXNoPC9TVFJPTkc+LCA8U1RST05HPnNsa19ub3V0cmVmcmVzaDwvU1RST05HPiwKKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPnNsa19pbml0PC9TVFJPTkc+LCA8U1RST05HPnNsa19zZXQ8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX3dzZXQ8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX3JlZnJlc2g8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX25vdXRyZWZyZXNoPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+c2xrX2xhYmVsPC9TVFJPTkc+LCA8U1RST05HPnNsa19jbGVhcjwvU1RST05HPiwgPFNUUk9ORz5zbGtfcmVzdG9yZTwvU1RST05HPiwgPFNUUk9ORz5zbGtfdG91Y2g8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX2F0dHJvbjwvU1RST05HPiwKICAgICAgICA8U1RST05HPnNsa19hdHRyc2V0PC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyb2ZmPC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyX29uPC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyX3NldDwvU1RST05HPiwKICAgICAgICA8U1RST05HPnNsa19hdHRyX29mZjwvU1RST05HPiwgPFNUUk9ORz5zbGtfYXR0cjwvU1RST05HPiwgPFNUUk9ORz5zbGtfY29sb3I8L1NUUk9ORz4gLSA8U1RST05HPmN1cnNlczwvU1RST05HPiBzb2Z0IGxhYmVsCkBAIC01NSw3ICs1NSw3IEBACiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfaW5pdChpbnQ8L1NUUk9ORz4gPFNUUk9ORz5mbXQpOzwvU1RST05HPgpAQCAtNzEsMTQ5ICs3MSwxNzEgQEAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19hdHRyc2V0KGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+YXR0cnMpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX2F0dHJfb24oYXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+YXR0cnMsPC9TVFJPTkc+IDxTVFJPTkc+dm9pZCo8L1NUUk9ORz4gPFNUUk9ORz5vcHRzKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19hdHRyX29mZihjb25zdDwvU1RST05HPiA8U1RST05HPmF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHJzLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+b3B0cyk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfYXR0cl9zZXQoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gPFNUUk9ORz5hdHRycyw8L1NUUk9ORz4KLSAgICAgICAgICAgIDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPFNUUk9ORz5jb2xvcl9wYWlyX251bWJlciw8L1NUUk9ORz4gPFNUUk9ORz52b2lkKjwvU1RST05HPiA8U1RST05HPm9wdHMpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+ICA8U1RST05HPnNsa19hdHRyX3NldChjb25zdDwvU1RST05HPiAgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gIDxTVFJPTkc+YXR0cnMsPC9TVFJPTkc+ICA8U1RST05HPnNob3J0PC9TVFJPTkc+IDxTVFJPTkc+Y29sb3JfcGFpciw8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQqPC9TVFJPTkc+IDxTVFJPTkc+b3B0cyk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4gPFNUUk9ORz5zbGtfYXR0cih2b2lkKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19jb2xvcihzaG9ydDwvU1RST05HPiA8U1RST05HPmNvbG9yX3BhaXJfbnVtYmVyKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19jb2xvcihzaG9ydDwvU1RST05HPiA8U1RST05HPmNvbG9yX3BhaXIpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX3dzZXQoaW50PC9TVFJPTkc+IDxTVFJPTkc+bGFibnVtLDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPiA8U1RST05HPipsYWJlbCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5mbXQpOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIHNsayogZnVuY3Rpb25zIG1hbmlwdWxhdGUgdGhlIHNldCBvZiBzb2Z0IGZ1bmN0aW9uLWtleQotICAgICAgIGxhYmVscyB0aGF0IGV4aXN0IG9uIG1hbnkgdGVybWluYWxzLiAgRm9yIHRob3NlICB0ZXJtaW5hbHMKKyAgICAgICBsYWJlbHMgIHRoYXQgZXhpc3Qgb24gbWFueSB0ZXJtaW5hbHMuICBGb3IgdGhvc2UgdGVybWluYWxzCiAgICAgICAgdGhhdCBkbyBub3QgaGF2ZSBzb2Z0IGxhYmVscywgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gdGFrZXMgb3ZlciB0aGUgYm90dG9tCi0gICAgICAgbGluZSBvZiA8U1RST05HPnN0ZHNjcjwvU1RST05HPiwgcmVkdWNpbmcgdGhlIHNpemUgb2YgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4gYW5kIHRoZSAgdmFyaS0KLSAgICAgICBhYmxlICA8U1RST05HPkxJTkVTPC9TVFJPTkc+LiAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gc3RhbmRhcmRpemVzIG9uIGVpZ2h0IGxhYmVscyBvZiB1cCB0bwotICAgICAgIGVpZ2h0IGNoYXJhY3RlcnMgZWFjaC4gSW4gYWRkaXRpb24gdG8gIHRoaXMsICB0aGUgIG5jdXJzZXMKLSAgICAgICBpbXBsZW1lbnRhdGlvbiAgc3VwcG9ydHMgIGEgbW9kZSB3aGVyZSBpdCBzaW11bGF0ZXMgMTIgbGEtCi0gICAgICAgYmVscyBvZiB1cCB0byBmaXZlIGNoYXJhY3RlcnMgZWFjaC4gVGhpcyAgaXMgIG1vc3QgIGNvbW1vbgotICAgICAgIGZvciAgdG9kYXlzICBQQyAgbGlrZSAgZW5kdXNlciAgZGV2aWNlcy4gIFBsZWFzZSBub3RlIHRoYXQKLSAgICAgICBuY3Vyc2VzIHNpbXVsYXRlcyB0aGlzIG1vZGUgYnkgdGFraW5nIG92ZXIgdXAgdG8gdHdvIGxpbmVzCi0gICAgICAgYXQgIHRoZSAgYm90dG9tICBvZiB0aGUgc2NyZWVuLCBpdCBkb2VzIG5vdCB0cnkgdG8gdXNlIGFueQotICAgICAgIGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMgbW9kZS4KKyAgICAgICBsaW5lICBvZiA8U1RST05HPnN0ZHNjcjwvU1RST05HPiwgcmVkdWNpbmcgdGhlIHNpemUgb2YgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4gYW5kIHRoZSB2YXJpLQorICAgICAgIGFibGUgPFNUUk9ORz5MSU5FUzwvU1RST05HPi4gIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHN0YW5kYXJkaXplcyBvbiBlaWdodCBsYWJlbHMgb2YgdXAgIHRvCisgICAgICAgZWlnaHQgIGNoYXJhY3RlcnMgIGVhY2guICBJbiBhZGRpdGlvbiB0byB0aGlzLCB0aGUgbmN1cnNlcworICAgICAgIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGEgbW9kZSB3aGVyZSBpdCBzaW11bGF0ZXMgIDEyICBsYS0KKyAgICAgICBiZWxzICBvZiAgdXAgIHRvIGZpdmUgY2hhcmFjdGVycyBlYWNoLiAgVGhpcyBpcyB1c2VmdWwgZm9yCisgICAgICAgdG9kYXkncyBQQy1saWtlIGVuZHVzZXIgZGV2aWNlcy4gIG5jdXJzZXMgIHNpbXVsYXRlcyAgdGhpcworICAgICAgIG1vZGUgIGJ5ICB0YWtpbmcgb3ZlciB1cCB0byB0d28gbGluZXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUKKyAgICAgICBzY3JlZW47IGl0IGRvZXMgbm90IHRyeSB0byB1c2UgYW55ICBoYXJkd2FyZSAgc3VwcG9ydCAgZm9yCisgICAgICAgdGhpcyBtb2RlLgogCi0gICAgICAgVGhlIDxTVFJPTkc+c2xrX2luaXQ8L1NUUk9ORz4gcm91dGluZSBtdXN0ICBiZSAgY2FsbGVkICBiZWZvcmUgIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiAgb3IKKyAgICAgICBUaGUgIDxTVFJPTkc+c2xrX2luaXQ8L1NUUk9ORz4gIHJvdXRpbmUgIG11c3QgIGJlICBjYWxsZWQgYmVmb3JlIDxTVFJPTkc+aW5pdHNjcjwvU1RST05HPiBvcgogICAgICAgIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBpcyBjYWxsZWQuICBJZiA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gZXZlbnR1YWxseSB1c2VzIGEgbGluZSBmcm9tCiAgICAgICAgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4gdG8gZW11bGF0ZSB0aGUgc29mdCBsYWJlbHMsIHRoZW4gPEVNPmZtdDwvRU0+IGRldGVybWluZXMgaG93Ci0gICAgICAgdGhlICBsYWJlbHMgIGFyZSBhcnJhbmdlZCBvbiB0aGUgc2NyZWVuLiAgU2V0dGluZyA8RU0+Zm10PC9FTT4gdG8gPFNUUk9ORz4wPC9TVFJPTkc+Ci0gICAgICAgaW5kaWNhdGVzIGEgMy0yLTMgYXJyYW5nZW1lbnQgb2YgdGhlIGxhYmVscywgPFNUUk9ORz4xPC9TVFJPTkc+IGluZGljYXRlcyBhCi0gICAgICAgNC00IGFycmFuZ2VtZW50IGFuZCA8U1RST05HPjI8L1NUUk9ORz4gaW5kaWNhdGVzIHRoZSBQQyBsaWtlIDQtNC00IG1vZGUuIElmCi0gICAgICAgPFNUUk9ORz5mbXQ8L1NUUk9ORz4gaXMgc2V0IHRvIDxTVFJPTkc+MzwvU1RST05HPiwgaXQgaXMgYWdhaW4gdGhlIFBDIGxpa2UgNC00LTQgIG1vZGUsICBidXQKLSAgICAgICBpbiAgYWRkaXRpb24gIGFuIGluZGV4IGxpbmUgaXMgZ2VuZXJhdGVkLCBoZWxwaW5nIHRoZSB1c2VyCi0gICAgICAgdG8gaWRlbnRpZnkgdGhlIGtleSBudW1iZXJzIGVhc2lseS4KKyAgICAgICB0aGUgbGFiZWxzIGFyZSBhcnJhbmdlZCBvbiB0aGUgc2NyZWVuOgogCi0gICAgICAgVGhlIDxTVFJPTkc+c2xrX3NldDwvU1RST05HPiByb3V0aW5lIHJlcXVpcmVzIDxFTT5sYWJudW08L0VNPiB0byBiZSBhIGxhYmVsICBudW1iZXIsCi0gICAgICAgZnJvbSA8U1RST05HPjE8L1NUUk9ORz4gdG8gPFNUUk9ORz44PC9TVFJPTkc+IChyZXNwLiA8U1RST05HPjEyPC9TVFJPTkc+KTsgPEVNPmxhYmVsPC9FTT4gbXVzdCBiZSB0aGUgc3RyaW5nIHRvIGJlIHB1dAotICAgICAgIG9uIHRoZSBsYWJlbCwgdXAgIHRvICBlaWdodCAgKHJlc3AuICBmaXZlKSAgY2hhcmFjdGVycyAgaW4KLSAgICAgICBsZW5ndGguICAgQSAgbnVsbCBzdHJpbmcgb3IgYSBudWxsIHBvaW50ZXIgc2V0cyB1cCBhIGJsYW5rCi0gICAgICAgbGFiZWwuIDxFTT5mbXQ8L0VNPiBpcyBlaXRoZXIgPFNUUk9ORz4wPC9TVFJPTkc+LCA8U1RST05HPjE8L1NUUk9ORz4sIG9yIDxTVFJPTkc+MjwvU1RST05HPiwgIGluZGljYXRpbmcgIHdoZXRoZXIgIHRoZQotICAgICAgIGxhYmVsICBpcyAgdG8gYmUgbGVmdC1qdXN0aWZpZWQsIGNlbnRlcmVkLCBvciByaWdodC1qdXN0aS0KLSAgICAgICBmaWVkLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgbGFiZWwuCisgICAgICAgICAgICAgIDxTVFJPTkc+MDwvU1RST05HPiAgaW5kaWNhdGVzIGEgMy0yLTMgYXJyYW5nZW1lbnQgb2YgdGhlIGxhYmVscy4KKworICAgICAgICAgICAgICA8U1RST05HPjE8L1NUUk9ORz4gIGluZGljYXRlcyBhIDQtNCBhcnJhbmdlbWVudAorCisgICAgICAgICAgICAgIDxTVFJPTkc+MjwvU1RST05HPiAgaW5kaWNhdGVzIHRoZSBQQy1saWtlIDQtNC00IG1vZGUuCisKKyAgICAgICAgICAgICAgPFNUUk9ORz4zPC9TVFJPTkc+ICBpcyBhZ2FpbiB0aGUgUEMtbGlrZSA0LTQtNCBtb2RlLCBidXQgaW4gYWRkaXRpb24KKyAgICAgICAgICAgICAgICAgYW4gIGluZGV4IGxpbmUgaXMgZ2VuZXJhdGVkLCBoZWxwaW5nIHRoZSB1c2VyIHRvCisgICAgICAgICAgICAgICAgIGlkZW50aWZ5IHRoZSBrZXkgbnVtYmVycyBlYXNpbHkuCisKKyAgICAgICBUaGUgPFNUUk9ORz5zbGtfc2V0PC9TVFJPTkc+IHJvdXRpbmUgKGFuZCAgdGhlICA8U1RST05HPnNsa193c2V0PC9TVFJPTkc+ICByb3V0aW5lICBmb3IgIHRoZQorICAgICAgIHdpZGUtY2hhcmFjdGVyIGxpYnJhcnkpIGhhcyB0aHJlZSBwYXJhbWV0ZXJzOgorCisgICAgICAgICAgICAgIDxFTT5sYWJudW08L0VNPgorICAgICAgICAgICAgICAgICAgIGlzICB0aGUgIGxhYmVsIG51bWJlciwgZnJvbSA8U1RST05HPjE8L1NUUk9ORz4gdG8gPFNUUk9ORz44PC9TVFJPTkc+ICgxMiBmb3IgPEVNPmZtdDwvRU0+CisgICAgICAgICAgICAgICAgICAgaW4gPFNUUk9ORz5zbGtfaW5pdDwvU1RST05HPiBpcyA8U1RST05HPjI8L1NUUk9ORz4gb3IgPFNUUk9ORz4zPC9TVFJPTkc+KTsKKworICAgICAgICAgICAgICA8RU0+bGFiZWw8L0VNPgorICAgICAgICAgICAgICAgICAgIGlzIGJlIHRoZSBzdHJpbmcgdG8gcHV0IG9uIHRoZSAgbGFiZWwsICB1cCAgdG8KKyAgICAgICAgICAgICAgICAgICBlaWdodCAgKGZpdmUgIGZvciAgPEVNPmZtdDwvRU0+ICBpbiA8U1RST05HPnNsa19pbml0PC9TVFJPTkc+IGlzIDxTVFJPTkc+MjwvU1RST05HPiBvciA8U1RST05HPjM8L1NUUk9ORz4pCisgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBpbiBsZW5ndGguICBBIG51bGwgc3RyaW5nIG9yIGEgbnVsbAorICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgc2V0cyB1cCBhIGJsYW5rIGxhYmVsLgorCisgICAgICAgICAgICAgIDxFTT5mbXQ8L0VNPiAgaXMgIGVpdGhlciAgPFNUUk9ORz4wPC9TVFJPTkc+LCA8U1RST05HPjE8L1NUUk9ORz4sIG9yIDxTVFJPTkc+MjwvU1RST05HPiwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZQorICAgICAgICAgICAgICAgICAgIGxhYmVsIGlzIHRvIGJlICBsZWZ0LWp1c3RpZmllZCwgIGNlbnRlcmVkLCAgb3IKKyAgICAgICAgICAgICAgICAgICByaWdodC1qdXN0aWZpZWQsICByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUgbGEtCisgICAgICAgICAgICAgICAgICAgYmVsLgogCiAgICAgICAgVGhlIDxTVFJPTkc+c2xrX3JlZnJlc2g8L1NUUk9ORz4gYW5kIDxTVFJPTkc+c2xrX25vdXRyZWZyZXNoPC9TVFJPTkc+IHJvdXRpbmVzIGNvcnJlc3BvbmQgdG8KICAgICAgICB0aGUgPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiBhbmQgPFNUUk9ORz53bm91dHJlZnJlc2g8L1NUUk9ORz4gcm91dGluZXMuCiAKICAgICAgICBUaGUgIDxTVFJPTkc+c2xrX2xhYmVsPC9TVFJPTkc+IHJvdXRpbmUgcmV0dXJucyB0aGUgY3VycmVudCBsYWJlbCBmb3IgbGFiZWwKLSAgICAgICBudW1iZXIgPEVNPmxhYm51bTwvRU0+LCB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rcyAgc3RyaXBwZWQuCisgICAgICAgbnVtYmVyIDxFTT5sYWJudW08L0VNPiwgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFua3Mgc3RyaXBwZWQuCiAKLSAgICAgICBUaGUgIDxTVFJPTkc+c2xrX2NsZWFyPC9TVFJPTkc+ICByb3V0aW5lICBjbGVhcnMgIHRoZSAgc29mdCBsYWJlbHMgZnJvbSB0aGUKKyAgICAgICBUaGUgPFNUUk9ORz5zbGtfY2xlYXI8L1NUUk9ORz4gcm91dGluZSBjbGVhcnMgIHRoZSAgc29mdCAgbGFiZWxzICBmcm9tICB0aGUKICAgICAgICBzY3JlZW4uCiAKLSAgICAgICBUaGUgPFNUUk9ORz5zbGtfcmVzdG9yZTwvU1RST05HPiByb3V0aW5lIHJlc3RvcmVzIHRoZSBzb2Z0ICBsYWJlbHMgIHRvICB0aGUKKyAgICAgICBUaGUgIDxTVFJPTkc+c2xrX3Jlc3RvcmU8L1NUUk9ORz4gIHJvdXRpbmUgIHJlc3RvcmVzIHRoZSBzb2Z0IGxhYmVscyB0byB0aGUKICAgICAgICBzY3JlZW4gYWZ0ZXIgYSA8U1RST05HPnNsa19jbGVhcjwvU1RST05HPiBoYXMgYmVlbiBwZXJmb3JtZWQuCiAKLSAgICAgICBUaGUgIDxTVFJPTkc+c2xrX3RvdWNoPC9TVFJPTkc+ICByb3V0aW5lICBmb3JjZXMgIGFsbCB0aGUgc29mdCBsYWJlbHMgdG8gYmUKKyAgICAgICBUaGUgPFNUUk9ORz5zbGtfdG91Y2g8L1NUUk9ORz4gcm91dGluZSBmb3JjZXMgYWxsIHRoZSAgc29mdCAgbGFiZWxzICB0byAgYmUKICAgICAgICBvdXRwdXQgdGhlIG5leHQgdGltZSBhIDxTVFJPTkc+c2xrX25vdXRyZWZyZXNoPC9TVFJPTkc+IGlzIHBlcmZvcm1lZC4KIAogICAgICAgIFRoZSA8U1RST05HPnNsa19hdHRyb248L1NUUk9ORz4sIDxTVFJPTkc+c2xrX2F0dHJzZXQ8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX2F0dHJvZmY8L1NUUk9ORz4gYW5kIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4gcm91LQogICAgICAgIHRpbmVzIGNvcnJlc3BvbmQgdG8gPFNUUk9ORz5hdHRyb248L1NUUk9ORz4sIDxTVFJPTkc+YXR0cnNldDwvU1RST05HPiwgPFNUUk9ORz5hdHRyb2ZmPC9TVFJPTkc+IGFuZCA8U1RST05HPmF0dHJfZ2V0PC9TVFJPTkc+LgotICAgICAgIFRoZXkgaGF2ZSBhbiBlZmZlY3Qgb25seSBpZiBzb2Z0IGxhYmVscyBhcmUgIHNpbXVsYXRlZCAgb24KLSAgICAgICB0aGUgIGJvdHRvbSBsaW5lIG9mIHRoZSBzY3JlZW4uICBUaGUgZGVmYXVsdCBoaWdobGlnaHQgZm9yCisgICAgICAgVGhleSAgaGF2ZSAgYW4gZWZmZWN0IG9ubHkgaWYgc29mdCBsYWJlbHMgYXJlIHNpbXVsYXRlZCBvbgorICAgICAgIHRoZSBib3R0b20gbGluZSBvZiB0aGUgc2NyZWVuLiAgVGhlIGRlZmF1bHQgaGlnaGxpZ2h0ICBmb3IKICAgICAgICBzb2Z0IGtleXMgaXMgQV9TVEFORE9VVCAoYXMgaW4gU3lzdGVtIFYgY3Vyc2VzLCB3aGljaCBkb2VzCiAgICAgICAgbm90IGRvY3VtZW50IHRoaXMgZmFjdCkuCiAKLSAgICAgICBUaGUgIDxTVFJPTkc+c2xrX2NvbG9yPC9TVFJPTkc+IHJvdXRpbmUgY29ycmVzcG9uZHMgdG8gPFNUUk9ORz5jb2xvcl9zZXQ8L1NUUk9ORz4uIEl0IGhhcyBhbgotICAgICAgIGVmZmVjdCBvbmx5IGlmIHNvZnQgbGFiZWxzIGFyZSAgc2ltdWxhdGVkICBvbiAgdGhlICBib3R0b20KKyAgICAgICBUaGUgPFNUUk9ORz5zbGtfY29sb3I8L1NUUk9ORz4gcm91dGluZSBjb3JyZXNwb25kcyB0byA8U1RST05HPmNvbG9yX3NldDwvU1RST05HPi4gIEl0IGhhcyBhbgorICAgICAgIGVmZmVjdCAgb25seSAgaWYgIHNvZnQgIGxhYmVscyBhcmUgc2ltdWxhdGVkIG9uIHRoZSBib3R0b20KICAgICAgICBsaW5lIG9mIHRoZSBzY3JlZW4uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCBPSyAoU1ZyNCBzcGVjaS0KICAgICAgICBmaWVzIG9ubHkgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzcy0KICAgICAgICBmdWwgY29tcGxldGlvbi4KIAotICAgICAgIFgvT3BlbiAgZGVmaW5lcyAgbm8gZXJyb3IgY29uZGl0aW9ucy4gIEluIHRoaXMgaW1wbGVtZW50YS0KKyAgICAgICBYL09wZW4gZGVmaW5lcyBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gIHRoaXMgIGltcGxlbWVudGEtCiAgICAgICAgdGlvbgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIHRoZSBhdHRyaWJ1dGUgdXNlZCBmb3IgdGhlIHNvZnQgIGtleXMuCisgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0aGUgYXR0cmlidXRlIHVzZWQgZm9yIHRoZSBzb2Z0IGtleXMuCiAKICAgICAgICAgICAgICAgPFNUUk9ORz5zbGtfYXR0cm9mZjwvU1RST05HPiwgPFNUUk9ORz5zbGtfYXR0cm9uPC9TVFJPTkc+LCA8U1RST05HPnNsa19jbGVhcjwvU1RST05HPiwKICAgICAgICAgICAgICAgPFNUUk9ORz5zbGtfbm91dHJlZnJlc2g8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX3JlZnJlc2g8L1NUUk9ORz4sIDxTVFJPTkc+c2xrX3RvdWNoPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJuICBhbiAgZXJyb3IgaWYgdGhlIHRlcm1pbmFsIG9yIHRoZSBzb2Z0LQorICAgICAgICAgICAgICAgICAgIHJldHVybiBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgb3IgIHRoZSAgc29mdC0KICAgICAgICAgICAgICAgICAgICBrZXlzIHdlcmUgbm90IGluaXRpYWxpemVkLgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+c2xrX2F0dHJzZXQ8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCBvciB0aGUgIHNvZnQtCisgICAgICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIG9yIHRoZSBzb2Z0LQogICAgICAgICAgICAgICAgICAgIGtleXMgd2VyZSBub3QgaW5pdGlhbGl6ZWQuCiAKICAgICAgICAgICAgICAgPFNUUk9ORz5zbGtfYXR0cl9zZXQ8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgb3IgdGhlIHNvZnQtCi0gICAgICAgICAgICAgICAgICAga2V5cyB3ZXJlIG5vdCBpbml0aWFsaXplZCwgb3IgdGhlICBjb2xvciAgcGFpcgorICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIG9yIHRoZSAgc29mdC0KKyAgICAgICAgICAgICAgICAgICBrZXlzICB3ZXJlICBub3QgaW5pdGlhbGl6ZWQsIG9yIHRoZSBjb2xvciBwYWlyCiAgICAgICAgICAgICAgICAgICAgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgMC4uQ09MT1JfUEFJUlMtMSwgb3Igb3B0cwogICAgICAgICAgICAgICAgICAgIGlzIG5vdCBudWxsLgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+c2xrX2NvbG9yPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgb3IgdGhlICBzb2Z0LQotICAgICAgICAgICAgICAgICAgIGtleXMgIHdlcmUgIG5vdCBpbml0aWFsaXplZCwgb3IgdGhlIGNvbG9yIHBhaXIKKyAgICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgb3IgdGhlIHNvZnQtCisgICAgICAgICAgICAgICAgICAga2V5cyB3ZXJlIG5vdCBpbml0aWFsaXplZCwgb3IgdGhlICBjb2xvciAgcGFpcgogICAgICAgICAgICAgICAgICAgIGlzIG91dHNpZGUgdGhlIHJhbmdlIDAuLkNPTE9SX1BBSVJTLTEuCiAKICAgICAgICAgICAgICAgPFNUUk9ORz5zbGtfaW5pdDwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlICBmb3JtYXQgIHBhcmFtZXRlciAgaXMKKyAgICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiAgZXJyb3IgIGlmIHRoZSBmb3JtYXQgcGFyYW1ldGVyIGlzCiAgICAgICAgICAgICAgICAgICAgb3V0c2lkZSB0aGUgcmFuZ2UgMC4uMy4KIAogICAgICAgICAgICAgICA8U1RST05HPnNsa19sYWJlbDwvU1RST05HPgogICAgICAgICAgICAgICAgICAgIHJldHVybnMgPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+c2xrX3NldDwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCBvciB0aGUgc29mdC0KLSAgICAgICAgICAgICAgICAgICBrZXlzIHdlcmUgbm90IGluaXRpYWxpemVkLCBvciB0aGUgIDxFTT5sYWJudW08L0VNPiAgcGEtCi0gICAgICAgICAgICAgICAgICAgcmFtZXRlciAgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgbGFiZWwgY291bnRzLAotICAgICAgICAgICAgICAgICAgIG9yIGlmIHRoZSAgZm9ybWF0ICBwYXJhbWV0ZXIgIGlzICBvdXRzaWRlICB0aGUKKyAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCBvciB0aGUgIHNvZnQtCisgICAgICAgICAgICAgICAgICAga2V5cyAgd2VyZSAgbm90IGluaXRpYWxpemVkLCBvciB0aGUgPEVNPmxhYm51bTwvRU0+IHBhLQorICAgICAgICAgICAgICAgICAgIHJhbWV0ZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgbGFiZWwgIGNvdW50cywKKyAgICAgICAgICAgICAgICAgICBvciAgaWYgIHRoZSAgZm9ybWF0ICBwYXJhbWV0ZXIgIGlzIG91dHNpZGUgdGhlCiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgMC4uMiwgb3IgaWYgbWVtb3J5IGZvciB0aGUgbGFiZWxzIGNhbm5vdAogICAgICAgICAgICAgICAgICAgIGJlIGFsbG9jYXRlZC4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE1vc3QgYXBwbGljYXRpb25zIHdvdWxkIHVzZSA8U1RST05HPnNsa19ub3V0cmVmcmVzaDwvU1RST05HPiBiZWNhdXNlIGEgPFNUUk9ORz53cmUtPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5mcmVzaDwvU1RST05HPiBpcyBsaWtlbHkgdG8gZm9sbG93IHNvb24uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlICBYU0kgIEN1cnNlcyAgc3RhbmRhcmQsIElzc3VlIDQsIGRlc2NyaWJlcyB0aGVzZSBmdW5jLQotICAgICAgIHRpb25zLiAgSXQgY2hhbmdlcyB0aGUgYXJndW1lbnQgdHlwZSBvZiB0aGUgIGF0dHJpYnV0ZS1tYS0KLSAgICAgICBuaXB1bGF0aW9uICBmdW5jdGlvbnMgPFNUUk9ORz5zbGtfYXR0cm9uPC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyb2ZmPC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyc2V0PC9TVFJPTkc+Ci0gICAgICAgdG8gYmUgPFNUUk9ORz5hdHRyX3Q8L1NUUk9ORz4sIGFuZCBhZGRzIDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gcXVhbGlmaWVycy4gVGhlIGZvcm1hdCAgY29kZXMKLSAgICAgICA8U1RST05HPjI8L1NUUk9ORz4gIGFuZCA8U1RST05HPjM8L1NUUk9ORz4gZm9yIDxTVFJPTkc+c2xrX2luaXQoKTwvU1RST05HPiBhbmQgdGhlIGZ1bmN0aW9uIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4gYXJlIHNwZS0KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LCAgZGVzY3JpYmVzICB0aGVzZSAgZnVuYy0KKyAgICAgICB0aW9ucy4gICBJdCBjaGFuZ2VzIHRoZSBhcmd1bWVudCB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUtbWEtCisgICAgICAgbmlwdWxhdGlvbiBmdW5jdGlvbnMgPFNUUk9ORz5zbGtfYXR0cm9uPC9TVFJPTkc+LCA8U1RST05HPnNsa19hdHRyb2ZmPC9TVFJPTkc+LCAgPFNUUk9ORz5zbGtfYXR0cnNldDwvU1RST05HPgorICAgICAgIHRvIGJlIDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+LCBhbmQgYWRkcyA8U1RST05HPmNvbnN0PC9TVFJPTkc+IHF1YWxpZmllcnMuICBUaGUgZm9ybWF0IGNvZGVzCisgICAgICAgPFNUUk9ORz4yPC9TVFJPTkc+IGFuZCA8U1RST05HPjM8L1NUUk9ORz4gZm9yIDxTVFJPTkc+c2xrX2luaXQoKTwvU1RST05HPiBhbmQgdGhlIGZ1bmN0aW9uIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4gYXJlICBzcGUtCiAgICAgICAgY2lmaWMgdG8gbmN1cnNlcy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYXR0ci4zeC5odG1sIj5jdXJzX2F0dHIoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPmN1cnNfcmUtPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3JlZnJlc2guM3guaHRtbCI+ZnJlc2goM3gpPC9BPjwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0cigzeCk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz5jdXJzX3JlLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmZyZXNoKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfc3BfZnVuY3MuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX3NwX2Z1bmNzLjN4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjMzI0MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3NwX2Z1bmNzLjN4Lmh0bWwKQEAgLTAsMCArMSwyOTcgQEAKKzwhLS0gCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQElkOiBjdXJzX3NwX2Z1bmNzLjN4LHYgMS42IDIwMTMvMDYvMjIgMTc6NTM6NTkgdG9tIEV4cCBACisgICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+Cis8VElUTEU+Y3Vyc19zcF9mdW5jcyAzeDwvVElUTEU+Cis8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KKzxCT0RZPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfc3BfZnVuY3MgM3g8L0gxPgorPFBSRT4KKzxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zcF9mdW5jcy4zeC5odG1sIj5jdXJzX3NwX2Z1bmNzKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3NwX2Z1bmNzLjN4Lmh0bWwiPmN1cnNfc3BfZnVuY3MoM3gpPC9BPjwvU1RST05HPgorCisKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KKyAgICAgICBuZXdfcHJlc2NyIC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gc2NyZWVuLXBvaW50ZXIgZXh0ZW5zaW9uCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgorCisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5hc3N1bWVfZGVmYXVsdF9jb2xvcnNfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQsPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmJhdWRyYXRlX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmVlcF9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5jYW5fY2hhbmdlX2NvbG9yX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Y2JyZWFrX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Y29sb3JfY29udGVudF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPnNob3J0LDwvU1RST05HPiA8U1RST05HPnNob3J0Kiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCosPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQqKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmN1cnNfc2V0X3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRlZmluZV9rZXlfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qLDwvU1RST05HPiA8U1RST05HPmludCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWZfcHJvZ19tb2RlX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZGVmX3NoZWxsX21vZGVfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWxheV9vdXRwdXRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZG91cGRhdGVfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5lY2hvX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZW5kd2luX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZXJhc2VjaGFyX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZmlsdGVyX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Zmxhc2hfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5mbHVzaGlucF9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmdldF9lc2NkZWxheV9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmdldG1vdXNlX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+TUVWRU5UKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1cqPC9TVFJPTkc+IDxTVFJPTkc+Z2V0d2luX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+RklMRSopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+aGFsZmRlbGF5X3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmhhc19jb2xvcnNfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aGFzX2ljX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmhhc19pbF9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmhhc19rZXlfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmhhc19tb3VzZV9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmluaXRfY29sb3Jfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pbml0X3BhaXJfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5pbnRyZmx1c2hfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1cqLDwvU1RST05HPiA8U1RST05HPmJvb2wpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmlzZW5kd2luX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8U1RST05HPmlzX3Rlcm1fcmVzaXplZF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Y2hhcio8L1NUUk9ORz4gPFNUUk9ORz5rZXlib3VuZF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+a2V5X2RlZmluZWRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmtleW5hbWVfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+a2V5b2tfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQsPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+a2lsbGNoYXJfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tY3ByaW50X3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm1vdXNlaW50ZXJ2YWxfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+bW1hc2tfdDwvU1RST05HPiA8U1RST05HPm1vdXNlbWFza19zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPm1tYXNrX3QsPC9TVFJPTkc+IDxTVFJPTkc+bW1hc2tfdDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bXZjdXJfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQsPC9TVFJPTkc+IDxTVFJPTkc+aW50LDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bmFwbXNfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+V0lORE9XKjwvU1RST05HPiA8U1RST05HPm5ld3BhZF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+U0NSRUVOKjwvU1RST05HPiA8U1RST05HPm5ld19wcmVzY3Iodm9pZCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5TQ1JFRU4qPC9TVFJPTkc+IDxTVFJPTkc+bmV3dGVybV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kiw8L1NUUk9ORz4gPFNUUk9ORz5GSUxFPC9TVFJPTkc+IDxTVFJPTkc+Kiw8L1NUUk9ORz4gPFNUUk9ORz5GSUxFPC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1cqPC9TVFJPTkc+IDxTVFJPTkc+bmV3d2luX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+aW50LDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQsPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5sX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bm9jYnJlYWtfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ub2VjaG9fc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5ub2ZpbHRlcl9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5vbmxfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+bm9xaWZsdXNoX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bm9yYXdfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wYWlyX2NvbnRlbnRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCosPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQqKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz5xaWZsdXNoX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmF3X3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmVzZXRfcHJvZ19tb2RlX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmVzZXRfc2hlbGxfbW9kZV9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnJlc2V0dHlfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5yZXNpemVfdGVybV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmVzaXpldGVybV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmVzdGFydHRlcm1fc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5OQ1VSU0VTX0NPTlNUPC9TVFJPTkc+IDxTVFJPTkc+Y2hhciosPC9TVFJPTkc+IDxTVFJPTkc+aW50LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cmlwb2ZmbGluZV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz4oKikoV0lORE9XKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNhdmV0dHlfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zY3JfaW5pdF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2NyX3Jlc3RvcmVfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNjcl9zZXRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPlRFUk1JTkFMKjwvU1RST05HPiA8U1RST05HPnNldF9jdXJ0ZXJtX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+VEVSTUlOQUwqKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNldF9lc2NkZWxheV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zZXRfdGFic2l6ZV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfYXR0cm9mZl9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19hdHRyb25fc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNodHlwZSk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfYXR0cl9zZXRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmF0dHJfdCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz52b2lkKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfYXR0cnNldF9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19hdHRyX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX2NsZWFyX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX2NvbG9yX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX2luaXRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX2xhYmVsX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19ub3V0cmVmcmVzaF9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa19yZWZyZXNoX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2xrX3Jlc3RvcmVfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zbGtfc2V0X3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+aW50LDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+aW50KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnNsa190b3VjaF9zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnN0YXJ0X2NvbG9yX3NwKFNDUkVFTiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IDxTVFJPTkc+dGVybV9hdHRyc19zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPnRlcm1hdHRyc19zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNoYXIqPC9TVFJPTkc+IDxTVFJPTkc+dGVybW5hbWVfc3AoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50eXBlYWhlYWRfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXIqPC9TVFJPTkc+IDxTVFJPTkc+dW5jdHJsX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVuZ2V0Y2hfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dW5nZXRtb3VzZV9zcChTQ1JFRU4qLE1FVkVOVDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dW5nZXRfd2NoX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz53Y2hhcl90KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVzZV9kZWZhdWx0X2NvbG9yc19zcChTQ1JFRU4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz51c2VfZW52X3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz51c2VfbGVnYWN5X2NvZGluZ19zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmludCk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz52aWRfYXR0cl9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPmF0dHJfdCw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydCw8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz52aWRhdHRyX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnZpZF9wdXRzX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+YXR0cl90LDwvU1RST05HPiA8U1RST05HPnNob3J0LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qLDwvU1RST05HPiA8U1RST05HPk5DVVJTRVNfU1BfT1VUQyk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz52aWRwdXRzX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlLDwvU1RST05HPiA8U1RST05HPk5DVVJTRVNfU1BfT1VUQyk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz53Y2hhcl90KjwvU1RST05HPiA8U1RST05HPnd1bmN0cmxfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KKworICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+bmV3X2Zvcm1fc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5GSUVMRDwvU1RST05HPiA8U1RST05HPioqKTs8L1NUUk9ORz4KKworICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgorCisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uZXdfbWVudV9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPklURU08L1NUUk9ORz4gPFNUUk9ORz4qKik7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O3BhbmVsLmgmZ3Q7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNlaWxpbmdfcGFuZWwoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5QQU5FTCo8L1NUUk9ORz4gPFNUUk9ORz5ncm91bmRfcGFuZWwoU0NSRUVOKik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz51cGRhdGVfcGFuZWxzX3NwKFNDUkVFTiopOzwvU1RST05HPgorCisgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRlbF9jdXJ0ZXJtX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+VEVSTUlOQUw8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnB1dHBfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnRnZXRmbGFnX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50Z2V0ZW50X3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50Z2V0bnVtX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNoYXIqPC9TVFJPTkc+IDxTVFJPTkc+dGdldHN0cl9zcChTQ1JFRU4qLDwvU1RST05HPiA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kiw8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dGlnZXRmbGFnX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnRpZ2V0bnVtX3NwKFNDUkVFTiosPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNoYXIqPC9TVFJPTkc+IDxTVFJPTkc+dGlnZXRzdHJfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5OQ1VSU0VTX0NPTlNUPC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dHB1dHNfc3AoU0NSRUVOKiw8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qLDwvU1RST05HPiA8U1RST05HPmludCw8L1NUUk9ORz4gPFNUUk9ORz5OQ1VSU0VTX1NQX09VVEMpOzwvU1RST05HPgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgVGhpcyAgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSBhIHNldCBvZgorICAgICAgIGZ1bmN0aW9ucyB3aGljaCBpbXByb3ZlIHRoZSAgYWJpbGl0eSAgdG8gIG1hbmFnZSAgbXVsdGlwbGUKKyAgICAgICBzY3JlZW5zLiAgVGhpcyBmZWF0dXJlIGNhbiBiZSBhZGRlZCB0byBhbnkgb2YgdGhlIGNvbmZpZ3UtCisgICAgICAgcmF0aW9ucyBzdXBwb3J0ZWQgYnkgIG5jdXJzZXM7ICBpdCAgYWRkcyAgbmV3ICBlbnRyeXBvaW50cworICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG1lYW5pbmcgb2YgYW55IG9mIHRoZSBleGlzdGluZyBvbmVzLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUlNUFJPVkVELUZVTkNUSU9OUyI+SU1QUk9WRUQgRlVOQ1RJT05TPC9hPjwvSDM+PFBSRT4KKyAgICAgICBNb3N0ICBvZiAgdGhlIGZ1bmN0aW9ucyBhcmUgbmV3IHZlcnNpb25zIG9mIGV4aXN0aW5nIGZ1bmMtCisgICAgICAgdGlvbnMuICBBIHBhcmFtZXRlciBpcyBhZGRlZCBhdCB0aGUgZnJvbnQgb2YgdGhlIHBhcmFtZXRlcgorICAgICAgIGxpc3QuICBJdCBpcyBhIFNDUkVFTiBwb2ludGVyLgorCisgICAgICAgVGhlICBleGlzdGluZyAgZnVuY3Rpb25zIGFsbCB1c2UgdGhlIGN1cnJlbnQgc2NyZWVuLCB3aGljaAorICAgICAgIGlzIGEgc3RhdGljIHZhcmlhYmxlLiAgIFRoZSAgZXh0ZW5kZWQgIGZ1bmN0aW9ucyAgdXNlICB0aGUKKyAgICAgICBzcGVjaWZpZWQgc2NyZWVuLCB0aGVyZWJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgdmFyaWFibGVzCisgICAgICAgd2hpY2ggbXVzdCBiZSBtb2RpZmllZCB0byB1cGRhdGUgbXVsdGlwbGUgc2NyZWVucy4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1ORVctRlVOQ1RJT05TIj5ORVcgRlVOQ1RJT05TPC9hPjwvSDM+PFBSRT4KKyAgICAgICBIZXJlIGFyZSB0aGUgbmV3IGZ1bmN0aW9uczoKKworICAgICAgIGNlaWxpbmdfcGFuZWwKKyAgICAgICAgICAgIHRoaXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHRvcG1vc3QgIHBhbmVsICBpbiAgdGhlCisgICAgICAgICAgICBnaXZlbiBzY3JlZW4uCisKKyAgICAgICBncm91bmRfcGFuZWwKKyAgICAgICAgICAgIHRoaXMgIHJldHVybnMgIGEgIHBvaW50ZXIgIHRvIHRoZSBsb3dlc3QgcGFuZWwgaW4gdGhlCisgICAgICAgICAgICBnaXZlbiBzY3JlZW4uCisKKyAgICAgICBuZXdfcHJlc2NyCisgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIGEgbmV3IHNjcmVlbiwgdGhlIGxpYnJhcnkgIHVzZXMgIHN0YXRpYworICAgICAgICAgICAgdmFyaWFibGVzICAgd2hpY2ggICBoYXZlICAgYmVlbiAgIHByZXNldCwgICBlLmcuLCAgYnkKKyAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPiwgZXRjLiAgV2l0aCB0aGUgc2NyZWVuLXBvaW50LQorICAgICAgICAgICAgZXIgZXh0ZW5zaW9uLCB0aGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVyZSBpdCBtdXN0IGNyZS0KKyAgICAgICAgICAgIGF0ZSBhIGN1cnJlbnQgc2NyZWVuIGJlZm9yZSAgdGhlICB1bmV4dGVuZGVkICBsaWJyYXJ5CisgICAgICAgICAgICBkb2VzLiAgIFRoZSA8U1RST05HPm5ld19wcmVzY3I8L1NUUk9ORz4gZnVuY3Rpb24gaXMgdXNlZCBpbnRlcm5hbGx5IHRvCisgICAgICAgICAgICBoYW5kbGUgdGhlc2UgY2FzZXMuICBJdCBpcyBhbHNvIHByb3ZpZGVkIGFzIGFuIGVudHJ5LQorICAgICAgICAgICAgcG9pbnQgIHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBjdXN0b21pemUgdGhlIGxpYnJhcnkKKyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgVGhpcyBleHRlbnNpb24gaW50cm9kdWNlcyBzb21lIG5ldyBuYW1lczoKKworICAgICAgIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICAgICAgICAgIFRoaXMgaXMgc2V0IHRvIHRoZSBsaWJyYXJ5ICBwYXRjaC1sZXZlbCAgbnVtYmVyLiAgIEluCisgICAgICAgICAgICB0aGUgIHVuZXh0ZW5kZWQgbGlicmFyeSwgdGhpcyBpcyB6ZXJvICgwKSwgdG8gbWFrZSBpdAorICAgICAgICAgICAgdXNlZnVsIGZvciBjaGVja2luZyBpZiB0aGUgZXh0ZW5zaW9uIGlzIHByb3ZpZGVkLgorCisgICAgICAgTkNVUlNFU19TUF9OQU1FCisgICAgICAgICAgICBUaGUgbmV3IGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgIHRoZSAgbWFjcm8gIDxFTT5OQ1VSUy08L0VNPgorICAgICAgICAgICAgPEVNPkVTPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+U1A8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5OQU1FPC9FTT4sICB3aGljaCAgaGlkZXMgIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uCisgICAgICAgICAgICBDdXJyZW50bHkgdGhpcyBhZGRzIGEgIl9zcCIgc3VmZml4IHRvIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgdW5leHRlbmRlZCAgZnVuY3Rpb24uICAgVGhpcyAgbWFudWFsIHBhZ2UgaW5kZXhlcyB0aGUKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgc2hvd2luZyB0aGUgZnVsbCBuYW1lLiAgSG93ZXZlciB0aGUgcHJvcGVyCisgICAgICAgICAgICB1c2FnZSAgb2YgIHRoZXNlIGZ1bmN0aW9ucyB1c2VzIHRoZSBtYWNybywgdG8gcHJvdmlkZQorICAgICAgICAgICAgZm9yIHRoZSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24KKyAgICAgICAgICAgIGZvciBzcGVjaWZpYyBsaWJyYXJ5IGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgTkNVUlNFU19TUF9PVVRDCisgICAgICAgICAgICBUaGlzICBpcyAgYSAgbmV3ICBmdW5jdGlvbi1wb2ludGVyIHR5cGUgdG8gdXNlIGluIHRoZQorICAgICAgICAgICAgc2NyZWVuLXBvaW50ZXIgZnVuY3Rpb25zICB3aGVyZSAgYW4gIDxFTT5OQ1VSU0VTPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+T1VUQzwvRU0+ICBpcworICAgICAgICAgICAgdXNlZCBpbiB0aGUgdW5leHRlbmRlZCBsaWJyYXJ5LgorCisgICAgICAgTkNVUlNFU19PVVRDCisgICAgICAgICAgICBUaGlzICBpcyAgYSAgZnVuY3Rpb24tcG9pbnRlciB0eXBlIHVzZWQgZm9yIHRoZSBjYXNlcworICAgICAgICAgICAgd2hlcmUgYSBmdW5jdGlvbiAgcGFzc2VzICBjaGFyYWN0ZXJzICB0byAgdGhlICBvdXRwdXQKKyAgICAgICAgICAgIHN0cmVhbSwgZS5nLiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgYXJlICBzcGVjaWZpYyAgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3QKKyAgICAgICBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtICBWICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgSXQgIGlzICByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiBuY3Vyc2VzIGV4LQorICAgICAgIHRlbnNpb25zIGJlIGNvbmRpdGlvbmVkIHVzaW5nIDxFTT5OQ1VSU0VTPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+U1A8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5GVU5DUzwvRU0+LgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190aHJlYWRzLjN4Lmh0bWwiPmN1cnNfdGhyZWFkcygzeCk8L0E+PC9TVFJPTkc+LgorCisKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3NwX2Z1bmNzLjN4Lmh0bWwiPmN1cnNfc3BfZnVuY3MoM3gpPC9BPjwvU1RST05HPgorPC9QUkU+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLUlNUFJPVkVELUZVTkNUSU9OUyI+SU1QUk9WRUQgRlVOQ1RJT05TPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLU5FVy1GVU5DVElPTlMiPk5FVyBGVU5DVElPTlM8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfdGVybWF0dHJzLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbAppbmRleCBkYWYzYTc2Li4zN2QyYzk4IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtYXR0cnMuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3Rlcm1hdHRycy4zeCx2IDEuMTAgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfdGVybWF0dHJzLjN4LHYgMS4xMyAyMDE1LzA3LzIxIDAwOjAzOjM0IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfdGVybWF0dHJzIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc190ZXJtYXR0cnMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfdGVybWF0dHJzIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5jdXJzX3Rlcm1hdHRycygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPmN1cnNfdGVybWF0dHJzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmJhdWRyYXRlPC9TVFJPTkc+LCA8U1RST05HPmVyYXNlY2hhcjwvU1RST05HPiwgPFNUUk9ORz5lcmFzZXdjaGFyPC9TVFJPTkc+LCA8U1RST05HPmhhc19pYzwvU1RST05HPiwgPFNUUk9ORz5oYXNfaWw8L1NUUk9ORz4sIDxTVFJPTkc+a2lsbGNoYXI8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5raWxsd2NoYXI8L1NUUk9ORz4sIDxTVFJPTkc+bG9uZ25hbWU8L1NUUk9ORz4sICA8U1RST05HPnRlcm1fYXR0cnM8L1NUUk9ORz4sICA8U1RST05HPnRlcm1hdHRyczwvU1RST05HPiwgIDxTVFJPTkc+dGVybW5hbWU8L1NUUk9ORz4gIC0KICAgICAgICA8U1RST05HPmN1cnNlczwvU1RST05HPiBlbnZpcm9ubWVudCBxdWVyeSByb3V0aW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmF1ZHJhdGUodm9pZCk7PC9TVFJPTkc+CkBAIC03MCwxMSArNzAsMTcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1iYXVkcmF0ZSI+YmF1ZHJhdGU8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5iYXVkcmF0ZTwvU1RST05HPiByb3V0aW5lIHJldHVybnMgdGhlIG91dHB1dCBzcGVlZCBvZiB0aGUgdGVyLQogICAgICAgIG1pbmFsLiAgVGhlIG51bWJlciByZXR1cm5lZCBpcyBpbiAgYml0cyAgcGVyICBzZWNvbmQsICBmb3IKICAgICAgICBleGFtcGxlIDxTVFJPTkc+OTYwMDwvU1RST05HPiwgYW5kIGlzIGFuIGludGVnZXIuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtZXJhc2VjaGFyXy1lcmFzZXdjaGFyIj5lcmFzZWNoYXIsIGVyYXNld2NoYXI8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5lcmFzZWNoYXI8L1NUUk9ORz4gIHJvdXRpbmUgIHJldHVybnMgIHRoZSB1c2VyJ3MgY3VycmVudCBlcmFzZQogICAgICAgIGNoYXJhY3Rlci4KIApAQCAtODMsNiArODksOSBAQAogICAgICAgIGhhcyBiZWVuIGRlZmluZWQsIHRoZSByb3V0aW5lIGZhaWxzIGFuZCB0aGUgbG9jYXRpb24gIHJlZi0KICAgICAgICBlcmVuY2VkIGJ5IDxFTT5jaDwvRU0+IGlzIG5vdCBjaGFuZ2VkLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWhhc19pc18taGFzX2lsIj5oYXNfaXMsIGhhc19pbDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+aGFzX2ljPC9TVFJPTkc+IHJvdXRpbmUgaXMgdHJ1ZSBpZiB0aGUgdGVybWluYWwgaGFzIGluc2VydC0gYW5kCiAgICAgICAgZGVsZXRlLSBjaGFyYWN0ZXIgY2FwYWJpbGl0aWVzLgogCkBAIC05Miw2ICsxMDEsOSBAQAogICAgICAgIHdvdWxkICBiZSAgYXBwcm9wcmlhdGUgdG8gdHVybiBvbiBwaHlzaWNhbCBzY3JvbGxpbmcgdXNpbmcKICAgICAgICA8U1RST05HPnNjcm9sbG9rPC9TVFJPTkc+LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWtpbGxjaGFyXy1raWxsd2NoYXIiPmtpbGxjaGFyLCBraWxsd2NoYXI8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmtpbGxjaGFyPC9TVFJPTkc+IHJvdXRpbmUgcmV0dXJucyB0aGUgdXNlcidzIGN1cnJlbnQgbGluZSAga2lsbAogICAgICAgIGNoYXJhY3Rlci4KIApAQCAtMTAwLDYgKzExMiw5IEBACiAgICAgICAgY2hhcmFjdGVyICBoYXMgIGJlZW4gIGRlZmluZWQsICB0aGUgIHJvdXRpbmUgZmFpbHMgYW5kIHRoZQogICAgICAgIGxvY2F0aW9uIHJlZmVyZW5jZWQgYnkgPEVNPmNoPC9FTT4gaXMgbm90IGNoYW5nZWQuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbG9uZ25hbWUiPmxvbmduYW1lPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5sb25nbmFtZTwvU1RST05HPiByb3V0aW5lIHJldHVybnMgYSBwb2ludGVyIHRvICBhICBzdGF0aWMgIGFyZWEKICAgICAgICBjb250YWluaW5nICBhIHZlcmJvc2UgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnQgdGVybWluYWwuCiAgICAgICAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgdmVyYm9zZSBkZXNjcmlwdGlvbiBpcyAxMjggY2hhcmFjLQpAQCAtMTA5LDIxICsxMjQsMjcgQEAKICAgICAgICBzYXZlZCBiZXR3ZWVuIGNhbGxzIHRvIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBpZiA8U1RST05HPmxvbmduYW1lPC9TVFJPTkc+IGlzIGdvaW5nIHRvICBiZQogICAgICAgIHVzZWQgd2l0aCBtdWx0aXBsZSB0ZXJtaW5hbHMuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtdGVybWF0dHJzXy10ZXJtX2F0dHJzIj50ZXJtYXR0cnMsIHRlcm1fYXR0cnM8L2E+PC9IMz48UFJFPgogICAgICAgIElmICBhICBnaXZlbiAgdGVybWluYWwgIGRvZXMgbm90IHN1cHBvcnQgYSB2aWRlbyBhdHRyaWJ1dGUKICAgICAgICB0aGF0IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gaXMgdHJ5aW5nIHRvIHVzZSwgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+ICBtYXkKLSAgICAgICBzdWJzdGl0dXRlICBhICBkaWZmZXJlbnQgIHZpZGVvICBhdHRyaWJ1dGUgIGZvciAgaXQuICAgVGhlCi0gICAgICAgPFNUUk9ORz50ZXJtYXR0cnM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dGVybV9hdHRyczwvU1RST05HPiBmdW5jdGlvbnMgcmV0dXJuIGEgbG9naWNhbCA8U1RST05HPk9SPC9TVFJPTkc+ICBvZgotICAgICAgIGFsbCAgdmlkZW8gIGF0dHJpYnV0ZXMgIHN1cHBvcnRlZCBieSB0aGUgdGVybWluYWwgdXNpbmcgPEVNPkE8L0VNPjxTVFJPTkc+XzwvU1RST05HPgotICAgICAgIGFuZCA8RU0+V0E8L0VNPjxTVFJPTkc+XzwvU1RST05HPiBjb25zdGFudHMgcmVzcGVjdGl2ZWx5LiAgVGhpcyBpbmZvcm1hdGlvbiBpcyAgdXNlLQotICAgICAgIGZ1bCAgd2hlbiBhIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHByb2dyYW0gbmVlZHMgY29tcGxldGUgY29udHJvbCBvdmVyIHRoZQorICAgICAgIHN1YnN0aXR1dGUgIGEgIGRpZmZlcmVudCB2aWRlbyBhdHRyaWJ1dGUgZm9yIGl0LiAgVGhlIDxTVFJPTkc+dGVyLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+bWF0dHJzPC9TVFJPTkc+IGFuZCA8U1RST05HPnRlcm1fYXR0cnM8L1NUUk9ORz4gZnVuY3Rpb25zIHJldHVybiBhIGxvZ2ljYWwgPFNUUk9ORz5PUjwvU1RST05HPiBvZiBhbGwKKyAgICAgICB2aWRlbyAgYXR0cmlidXRlcyAgc3VwcG9ydGVkICBieSB0aGUgdGVybWluYWwgdXNpbmcgPEVNPkE8L0VNPjxTVFJPTkc+XzwvU1RST05HPiBhbmQKKyAgICAgICA8RU0+V0E8L0VNPjxTVFJPTkc+XzwvU1RST05HPiBjb25zdGFudHMgcmVzcGVjdGl2ZWx5LiAgVGhpcyAgaW5mb3JtYXRpb24gIGlzICB1c2VmdWwKKyAgICAgICB3aGVuICBhICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgcHJvZ3JhbSAgbmVlZHMgIGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB0aGUKICAgICAgICBhcHBlYXJhbmNlIG9mIHRoZSBzY3JlZW4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtdGVybW5hbWUiPnRlcm1uYW1lPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz50ZXJtbmFtZTwvU1RST05HPiByb3V0aW5lIHJldHVybnMgdGhlICB0ZXJtaW5hbCAgbmFtZSAgdXNlZCAgYnkKICAgICAgICA8U1RST05HPnNldHVwdGVybTwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bG9uZ25hbWU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dGVybW5hbWU8L1NUUk9ORz4gcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPiBvbiBlcnJvci4KIAogICAgICAgIFJvdXRpbmVzICB0aGF0ICByZXR1cm4gIGFuIGludGVnZXIgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZQpAQCAtMTMyLDEyICsxNTMsMTIgQEAKIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCA8U1RST05HPnRlcm1hdHRyczwvU1RST05HPiBtYXkgYmUgYSBtYWNyby4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgWFNJICBDdXJzZXMgIHN0YW5kYXJkLCAgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuYy0KICAgICAgICB0aW9ucy4gIEl0IGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIDxTVFJPTkc+dGVybWF0dHJzPC9TVFJPTkc+IHRvIHRoZSBuZXcKICAgICAgICB0eXBlICA8U1RST05HPmF0dHJfdDwvU1RST05HPi4gIE1vc3QgdmVyc2lvbnMgb2YgY3Vyc2VzIHRydW5jYXRlIHRoZSByZXN1bHQKQEAgLTE0NSwxNyArMTY2LDMzIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3V0b3B0cy4zeC5odG1sIj5jdXJzX291dG9wdHMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWF0dHJzLjN4Lmh0bWwiPmN1cnNfdGVybWF0dHJzKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1iYXVkcmF0ZSI+YmF1ZHJhdGU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZXJhc2VjaGFyXy1lcmFzZXdjaGFyIj5lcmFzZWNoYXIsIGVyYXNld2NoYXI8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtaGFzX2lzXy1oYXNfaWwiPmhhc19pcywgaGFzX2lsPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWtpbGxjaGFyXy1raWxsd2NoYXIiPmtpbGxjaGFyLCBraWxsd2NoYXI8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtbG9uZ25hbWUiPmxvbmduYW1lPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXRlcm1hdHRyc18tdGVybV9hdHRycyI+dGVybWF0dHJzLCB0ZXJtX2F0dHJzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXRlcm1uYW1lIj50ZXJtbmFtZTwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtY2FwLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtY2FwLjN4Lmh0bWwKaW5kZXggYTI0NTc3OC4uMzZjNGU3YSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfdGVybWNhcC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3Rlcm1jYXAuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDM0IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3Rlcm1jYXAuM3gsdiAxLjIyIDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCBACisgICogQElkOiBjdXJzX3Rlcm1jYXAuM3gsdiAxLjMxIDIwMTUvMDQvMjYgMDA6NDk6MTAgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc190ZXJtY2FwIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc190ZXJtY2FwIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX3Rlcm1jYXAgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jdXJzX3Rlcm1jYXAoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtY2FwLjN4Lmh0bWwiPmN1cnNfdGVybWNhcCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz50Z2V0ZW50PC9TVFJPTkc+LCA8U1RST05HPnRnZXRmbGFnPC9TVFJPTkc+LCA8U1RST05HPnRnZXRudW08L1NUUk9ORz4sIDxTVFJPTkc+dGdldHN0cjwvU1RST05HPiwgPFNUUk9ORz50Z290bzwvU1RST05HPiwgPFNUUk9ORz50cHV0czwvU1RST05HPiAtIGRpcmVjdAotICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGludGVyZmFjZSB0byB0aGUgdGVybWluZm8gY2FwYWJpbGl0eSBkYXRhYmFzZQorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+UEM8L1NUUk9ORz4sIDxTVFJPTkc+VVA8L1NUUk9ORz4sIDxTVFJPTkc+QkM8L1NUUk9ORz4sIDxTVFJPTkc+b3NwZWVkPC9TVFJPTkc+LCA8U1RST05HPnRnZXRlbnQ8L1NUUk9ORz4sIDxTVFJPTkc+dGdldGZsYWc8L1NUUk9ORz4sIDxTVFJPTkc+dGdldG51bTwvU1RST05HPiwgPFNUUk9ORz50Z2V0c3RyPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+dGdvdG88L1NUUk9ORz4sIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4gLSBkaXJlY3QgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gaW50ZXJmYWNlIHRvIHRoZSB0ZXJtaW5mbworICAgICAgIGNhcGFiaWxpdHkgZGF0YWJhc2UKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+CiAKQEAgLTcwLDM0ICs3MSw3NiBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGFyZSBpbmNsdWRlZCBhcyBhIGNvbnZlcnNpb24gYWlkICBmb3IgIHByby0KLSAgICAgICBncmFtcyAgdGhhdCB1c2UgdGhlIDxFTT50ZXJtY2FwPC9FTT4gbGlicmFyeS4gIFRoZWlyIHBhcmFtZXRlcnMgYXJlCi0gICAgICAgdGhlIHNhbWUgYW5kIHRoZSByb3V0aW5lcyBhcmUgZW11bGF0ZWQgdXNpbmcgdGhlICA8RU0+dGVybWluZm88L0VNPgotICAgICAgIGRhdGFiYXNlLiAgIFRodXMsIHRoZXkgY2FuIG9ubHkgYmUgdXNlZCB0byBxdWVyeSB0aGUgY2FwYS0KLSAgICAgICBiaWxpdGllcyBvZiBlbnRyaWVzIGZvciB3aGljaCBhIHRlcm1pbmZvICBlbnRyeSAgaGFzICBiZWVuCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSAgcm91dGluZXMgIGFyZSBpbmNsdWRlZCBhcyBhIGNvbnZlcnNpb24gYWlkIGZvciBwcm8tCisgICAgICAgZ3JhbXMgdGhhdCB1c2UgdGhlIDxFTT50ZXJtY2FwPC9FTT4gbGlicmFyeS4gIFRoZWlyIHBhcmFtZXRlcnMgIGFyZQorICAgICAgIHRoZSAgc2FtZSBhbmQgdGhlIHJvdXRpbmVzIGFyZSBlbXVsYXRlZCB1c2luZyB0aGUgPEVNPnRlcm1pbmZvPC9FTT4KKyAgICAgICBkYXRhYmFzZS4gIFRodXMsIHRoZXkgY2FuIG9ubHkgYmUgdXNlZCB0byBxdWVyeSB0aGUgIGNhcGEtCisgICAgICAgYmlsaXRpZXMgIG9mICBlbnRyaWVzICBmb3Igd2hpY2ggYSB0ZXJtaW5mbyBlbnRyeSBoYXMgYmVlbgogICAgICAgIGNvbXBpbGVkLgogCi0gICAgICAgVGhlICA8U1RST05HPnRnZXRlbnQ8L1NUUk9ORz4gcm91dGluZSBsb2FkcyB0aGUgZW50cnkgZm9yIDxFTT5uYW1lPC9FTT4uICBJdCByZXR1cm5zCi0gICAgICAgMSBvbiBzdWNjZXNzLCAwIGlmIHRoZXJlIGlzIG5vIHN1Y2ggZW50cnksIGFuZCAtMSAgaWYgIHRoZQotICAgICAgIHRlcm1pbmZvICBkYXRhYmFzZSAgY291bGQgIG5vdCAgYmUgIGZvdW5kLiAgIFRoZSBlbXVsYXRpb24KLSAgICAgICBpZ25vcmVzIHRoZSBidWZmZXIgcG9pbnRlciA8RU0+YnA8L0VNPi4KIAotICAgICAgIFRoZSA8U1RST05HPnRnZXRmbGFnPC9TVFJPTkc+IHJvdXRpbmUgZ2V0cyB0aGUgYm9vbGVhbiAgZW50cnkgIGZvciAgPEVNPmlkPC9FTT4sICBvcgotICAgICAgIHplcm8gaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUlOSVRJQUxJWkFUSU9OIj5JTklUSUFMSVpBVElPTjwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+dGdldGVudDwvU1RST05HPiByb3V0aW5lIGxvYWRzIHRoZSBlbnRyeSBmb3IgPEVNPm5hbWU8L0VNPi4gIEl0IHJldHVybnM6CisKKyAgICAgICAgICAxICBvbiBzdWNjZXNzLAorCisgICAgICAgICAgMCAgaWYgdGhlcmUgaXMgbm8gc3VjaCBlbnRyeSAob3IgdGhhdCBpdCBpcyAgYSAgZ2VuZXJpYworICAgICAgICAgICAgIHR5cGUsICBoYXZpbmcgIHRvbyBsaXR0bGUgaW5mb3JtYXRpb24gZm9yIGN1cnNlcyBhcC0KKyAgICAgICAgICAgICBwbGljYXRpb25zIHRvIHJ1biksIGFuZAorCisgICAgICAgICAgLTEgaWYgdGhlIHRlcm1pbmZvIGRhdGFiYXNlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKworICAgICAgIFRoaXMgZGlmZmVycyBmcm9tIHRoZSA8RU0+dGVybWNhcDwvRU0+IGxpYnJhcnkgaW4gdHdvIHdheXM6CisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgZW11bGF0aW9uIGlnbm9yZXMgdGhlIGJ1ZmZlciBwb2ludGVyICA8RU0+YnA8L0VNPi4gICBUaGUKKyAgICAgICAgICAgICAgPEVNPnRlcm1jYXA8L0VNPiAgbGlicmFyeSB3b3VsZCBzdG9yZSBhIGNvcHkgb2YgdGhlIHRlcm1pbmFsCisgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGluIHRoZSBhcmVhIHJlZmVyZW5jZWQgYnkgdGhpcyBwb2ludGVyLgorICAgICAgICAgICAgICBIb3dldmVyLCAgbmN1cnNlcyAgc3RvcmVzIGl0cyB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMKKyAgICAgICAgICAgICAgaW4gY29tcGlsZWQgYmluYXJ5IGZvcm0sICB3aGljaCAgaXMgIG5vdCAgdGhlICBzYW1lCisgICAgICAgICAgICAgIHRoaW5nLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIHJldHVybiBjb2Rlcy4gIFRoZSA8RU0+dGVybWNhcDwvRU0+CisgICAgICAgICAgICAgIGxpYnJhcnkgZG9lcyBub3QgY2hlY2sgaWYgdGhlIHRlcm1pbmFsICBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICBpcyAgbWFya2VkICB3aXRoICB0aGUgPEVNPmdlbmVyaWM8L0VNPiBjYXBhYmlsaXR5LCBvciBpZiB0aGUKKyAgICAgICAgICAgICAgdGVybWluYWwgZGVzY3JpcHRpb24gaGFzIGN1cnNvci1hZGRyZXNzaW5nLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUNBUEFCSUxJVFktVkFMVUVTIj5DQVBBQklMSVRZIFZBTFVFUzwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+dGdldGZsYWc8L1NUUk9ORz4gcm91dGluZSBnZXRzIHRoZSBib29sZWFuIGVudHJ5IGZvciA8RU0+aWQ8L0VNPiwgb3IgemUtCisgICAgICAgcm8gaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KIAogICAgICAgIFRoZSAgPFNUUk9ORz50Z2V0bnVtPC9TVFJPTkc+ICByb3V0aW5lIGdldHMgdGhlIG51bWVyaWMgZW50cnkgZm9yIDxFTT5pZDwvRU0+LCBvciAtMQogICAgICAgIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCiAKICAgICAgICBUaGUgPFNUUk9ORz50Z2V0c3RyPC9TVFJPTkc+IHJvdXRpbmUgcmV0dXJucyB0aGUgc3RyaW5nIGVudHJ5ICBmb3IgIDxFTT5pZDwvRU0+LCAgb3IKLSAgICAgICB6ZXJvICBpZiAgaXQgIGlzICBub3QgIGF2YWlsYWJsZS4gIFVzZSA8U1RST05HPnRwdXRzPC9TVFJPTkc+IHRvIG91dHB1dCB0aGUKLSAgICAgICByZXR1cm5lZCBzdHJpbmcuICBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYWxzbyBiZSBjb3BpZWQgIHRvCi0gICAgICAgdGhlICBidWZmZXIgcG9pbnRlZCB0byBieSA8RU0+YXJlYTwvRU0+LCBhbmQgdGhlIDxFTT5hcmVhPC9FTT4gdmFsdWUgd2lsbCBiZQotICAgICAgIHVwZGF0ZWQgdG8gcG9pbnQgcGFzdCB0aGUgbnVsbCBlbmRpbmcgdGhpcyB2YWx1ZS4KKyAgICAgICB6ZXJvICBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLiAgVXNlIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4gdG8gb3V0cHV0IHRoZSByZS0KKyAgICAgICB0dXJuZWQgc3RyaW5nLiAgVGhlIDxFTT5hcmVhPC9FTT4gcGFyYW1ldGVyIGlzIHVzZWQgYXMgZm9sbG93czoKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEl0IGlzIGFzc3VtZWQgdG8gYmUgdGhlIGFkZHJlc3Mgb2YgYSBwb2ludGVyICB0byAgYQorICAgICAgICAgICAgICBidWZmZXIgbWFuYWdlZCBieSB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4KKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEhvd2V2ZXIsICBuY3Vyc2VzIGNoZWNrcyB0byBlbnN1cmUgdGhhdCA8U1RST05HPmFyZWE8L1NUUk9ORz4gaXMgbm90CisgICAgICAgICAgICAgIE5VTEwsIGFuZCBhbHNvIHRoYXQgdGhlIHJlc3VsdGluZyBidWZmZXIgcG9pbnRlciBpcworICAgICAgICAgICAgICBub3QgIE5VTEwuICBJZiBlaXRoZXIgY2hlY2sgZmFpbHMsIHRoZSA8RU0+YXJlYTwvRU0+IHBhcmFtZS0KKyAgICAgICAgICAgICAgdGVyIGlzIGlnbm9yZWQuCisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiB0aGUgY2hlY2tzIHN1Y2NlZWQsIG5jdXJzZXMgYWxzbyBjb3BpZXMgdGhlICByZS0KKyAgICAgICAgICAgICAgdHVybiAgdmFsdWUgIHRvICB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgPEVNPmFyZWE8L0VNPiwgYW5kCisgICAgICAgICAgICAgIHRoZSA8RU0+YXJlYTwvRU0+IHZhbHVlIHdpbGwgYmUgdXBkYXRlZCB0byAgcG9pbnQgIHBhc3QgIHRoZQorICAgICAgICAgICAgICBudWxsIGVuZGluZyB0aGlzIHZhbHVlLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIHJldHVybiB2YWx1ZSBpdHNlbGYgaXMgYW4gYWRkcmVzcyBpbiB0aGUgdGVybWktCisgICAgICAgICAgICAgIG5hbCBkZXNjcmlwdGlvbiB3aGljaCBpcyBsb2FkZWQgaW50byBtZW1vcnkuCiAKICAgICAgICBPbmx5IHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgPFNUUk9ORz5pZDwvU1RST05HPiBwYXJhbWV0ZXIgb2YgPFNUUk9ORz50Z2V0LTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+ZmxhZzwvU1RST05HPiwgPFNUUk9ORz50Z2V0bnVtPC9TVFJPTkc+IGFuZCA8U1RST05HPnRnZXRzdHI8L1NUUk9ORz4gYXJlIGNvbXBhcmVkIGluIGxvb2t1cHMuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRk9STUFUVElORy1DQVBBQklMSVRJRVMiPkZPUk1BVFRJTkcgQ0FQQUJJTElUSUVTPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+dGdvdG88L1NUUk9ORz4gIHJvdXRpbmUgIGluc3RhbnRpYXRlcyAgdGhlIHBhcmFtZXRlcnMgaW50byB0aGUKICAgICAgICBnaXZlbiBjYXBhYmlsaXR5LiAgVGhlIG91dHB1dCBmcm9tIHRoaXMgcm91dGluZSBpcyAgdG8gIGJlCiAgICAgICAgcGFzc2VkIHRvIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4uCkBAIC0xMDYsMzEgKzE0OSwzNCBAQAogICAgICAgIG1hbnVhbCBwYWdlLiAgSXQgY2FuIHJldHJpZXZlIGNhcGFiaWxpdGllcyBieSBlaXRoZXIgdGVybS0KICAgICAgICBjYXAgb3IgdGVybWluZm8gbmFtZS4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1HTE9CQUwtVkFSSUFCTEVTIj5HTE9CQUwgVkFSSUFCTEVTPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgdmFyaWFibGVzIDxTVFJPTkc+UEM8L1NUUk9ORz4sIDxTVFJPTkc+VVA8L1NUUk9ORz4gYW5kIDxTVFJPTkc+QkM8L1NUUk9ORz4gYXJlIHNldCBieSA8U1RST05HPnRnZXRlbnQ8L1NUUk9ORz4gdG8gdGhlIHRlci0KICAgICAgICBtaW5mbyAgIGVudHJ5J3MgICBkYXRhICAgZm9yICAgPFNUUk9ORz5wYWRfY2hhcjwvU1RST05HPiwgICA8U1RST05HPmN1cnNvcl91cDwvU1RST05HPiAgIGFuZAogICAgICAgIDxTVFJPTkc+YmFja3NwYWNlX2lmX25vdF9iczwvU1RST05HPiwgIHJlc3BlY3RpdmVseS4gICA8U1RST05HPlVQPC9TVFJPTkc+ICBpcyAgbm90ICB1c2VkIGJ5CiAgICAgICAgbmN1cnNlcy4gIDxTVFJPTkc+UEM8L1NUUk9ORz4gaXMgdXNlZCBpbiB0aGUgPFNUUk9ORz50ZGVsYXlfb3V0cHV0PC9TVFJPTkc+IGZ1bmN0aW9uLiAgPFNUUk9ORz5CQzwvU1RST05HPiBpcwogICAgICAgIHVzZWQgIGluICB0aGUgPFNUUk9ORz50Z290bzwvU1RST05HPiBlbXVsYXRpb24uICBUaGUgdmFyaWFibGUgPFNUUk9ORz5vc3BlZWQ8L1NUUk9ORz4gaXMgc2V0Ci0gICAgICAgYnkgbmN1cnNlcyBpbiBhICBzeXN0ZW0tc3BlY2lmaWMgIGNvZGluZyAgdG8gIHJlZmxlY3QgIHRoZQotICAgICAgIHRlcm1pbmFsIHNwZWVkLgorICAgICAgIGJ5IG5jdXJzZXMgaW4gYSBzeXN0ZW0tc3BlY2lmaWMgY29kaW5nIHRvIHJlZmxlY3QgdGhlIHRlci0KKyAgICAgICBtaW5hbCBzcGVlZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgRXhjZXB0ICB3aGVyZSAgZXhwbGljaXRseSAgbm90ZWQsICByb3V0aW5lcyB0aGF0IHJldHVybiBhbgotICAgICAgIGludGVnZXIgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiAoU1ZyNCAgb25seSAgc3BlY2ktCi0gICAgICAgZmllcyAgImFuICBpbnRlZ2VyICB2YWx1ZSBvdGhlciB0aGFuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgdXBvbiBzdWNjZXNzZnVsCi0gICAgICAgY29tcGxldGlvbi4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgRXhjZXB0IHdoZXJlIGV4cGxpY2l0bHkgbm90ZWQsIHJvdXRpbmVzIHRoYXQgcmV0dXJuIGFuIGluLQorICAgICAgIHRlZ2VyIHJldHVybiA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4gKFNWcjQgb25seSAgc3BlY2lmaWVzCisgICAgICAgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGUtCisgICAgICAgdGlvbi4KIAogICAgICAgIFJvdXRpbmVzIHRoYXQgcmV0dXJuIHBvaW50ZXJzIHJldHVybiA8U1RST05HPk5VTEw8L1NUUk9ORz4gb24gZXJyb3IuCiAKIAogPC9QUkU+Ci08SDI+QlVHUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1CVUdTIj5CVUdTPC9hPjwvSDI+PFBSRT4KICAgICAgICBJZiB5b3UgY2FsbCA8U1RST05HPnRnZXRzdHI8L1NUUk9ORz4gdG8gZmV0Y2ggPFNUUk9ORz5jYTwvU1RST05HPiBvciBhbnkgb3RoZXIgcGFyYW1ldGVyaXplZAotICAgICAgIHN0cmluZywgIGJlICBhd2FyZSAgdGhhdCAgaXQgIHdpbGwgYmUgcmV0dXJuZWQgaW4gdGVybWluZm8KLSAgICAgICBub3RhdGlvbiwgbm90IHRoZSBvbGRlciBhbmQgIG5vdC1xdWl0ZS1jb21wYXRpYmxlICB0ZXJtY2FwCi0gICAgICAgbm90YXRpb24uICBUaGlzIHdpbGwgbm90IGNhdXNlIHByb2JsZW1zIGlmIGFsbCB5b3UgZG8gd2l0aAorICAgICAgIHN0cmluZywgIGJlIGF3YXJlIHRoYXQgaXQgd2lsbCBiZSByZXR1cm5lZCBpbiB0ZXJtaW5mbyBuby0KKyAgICAgICB0YXRpb24sIG5vdCB0aGUgb2xkZXIgYW5kIG5vdC1xdWl0ZS1jb21wYXRpYmxlIHRlcm1jYXAgbm8tCisgICAgICAgdGF0aW9uLiAgIFRoaXMgIHdpbGwgbm90IGNhdXNlIHByb2JsZW1zIGlmIGFsbCB5b3UgZG8gd2l0aAogICAgICAgIGl0IGlzIGNhbGwgPFNUUk9ORz50Z290bzwvU1RST05HPiBvciA8U1RST05HPnRwYXJtPC9TVFJPTkc+LCAgd2hpY2ggIGJvdGggIGV4cGFuZCAgdGVybWluZm8tCiAgICAgICAgc3R5bGUgIHN0cmluZ3MgIGFzIHRlcm1pbmZvLiAgKFRoZSA8U1RST05HPnRnb3RvPC9TVFJPTkc+IGZ1bmN0aW9uLCBpZiBjb24tCiAgICAgICAgZmlndXJlZCB0byBzdXBwb3J0IHRlcm1jYXAsIHdpbGwgY2hlY2sgaWYgIHRoZSAgc3RyaW5nICBpcwpAQCAtMTUyLDcgKzE5OCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIFhTSSAgQ3Vyc2VzICBzdGFuZGFyZCwgIElzc3VlIDQgZGVzY3JpYmVzIHRoZXNlIGZ1bmMtCiAgICAgICAgdGlvbnMuICBIb3dldmVyLCB0aGV5IGFyZSBtYXJrZWQgVE8gQkUgV0lUSERSQVdOICBhbmQgIG1heQogICAgICAgIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgpAQCAtMTcyLDE5ICsyMTgsNTQgQEAKICAgICAgICBndWlzaGluZyAgYmV0d2VlbiAgaW5wdXQgIGFuZCBvdXRwdXQuICBJbiBwYXJ0aWN1bGFyLCBzb21lCiAgICAgICAgYXBwbGljYXRpb25zIGFyZSByZXBvcnRlZCB0byBkZWNsYXJlIGFuZC9vciBtb2RpZnkgPFNUUk9ORz5vc3BlZWQ8L1NUUk9ORz4uCiAKKyAgICAgICBUaGUgY29tbWVudCB0aGF0IG9ubHkgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mICB0aGUgIDxTVFJPTkc+aWQ8L1NUUk9ORz4KKyAgICAgICBwYXJhbWV0ZXIgIGFyZSAgdXNlZCAgZXNjYXBlcyBtYW55IGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuCisgICAgICAgVGhlIG9yaWdpbmFsICBCU0QgIDQuMiAgdGVybWNhcCAgbGlicmFyeSAgKGFuZCAgaGlzdG9yaWNhbAorICAgICAgIHJlbGljcyB0aGVyZW9mKSBkaWQgbm90IHJlcXVpcmUgYSB0cmFpbGluZyBudWxsIE5VTCBvbiB0aGUKKyAgICAgICBwYXJhbWV0ZXIgbmFtZSBwYXNzZWQgdG8gPFNUUk9ORz50Z2V0c3RyPC9TVFJPTkc+LCAgPFNUUk9ORz50Z2V0bnVtPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+dGdldGZsYWc8L1NUUk9ORz4uCisgICAgICAgU29tZSAgYXBwbGljYXRpb25zICBhc3N1bWUgdGhhdCB0aGUgdGVybWNhcCBpbnRlcmZhY2UgZG9lcworICAgICAgIG5vdCByZXF1aXJlIHRoZSB0cmFpbGluZyBOVUwgZm9yIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIFRhay0KKyAgICAgICBpbmcgaW50byBhY2NvdW50IHRoZXNlIGlzc3VlczoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEFzICBhIHNwZWNpYWwgY2FzZSwgPFNUUk9ORz50Z2V0ZmxhZzwvU1RST05HPiBtYXRjaGVkIGFnYWluc3QgYSBzaW5nbGUtCisgICAgICAgICAgIGNoYXJhY3RlciBpZGVudGlmaWVyIHByb3ZpZGVkIHRoYXQgd2FzIGF0IHRoZSAgZW5kICBvZgorICAgICAgICAgICB0aGUgIHRlcm1pbmFsICBkZXNjcmlwdGlvbi4gICBZb3Ugc2hvdWxkIG5vdCByZWx5IHVwb24KKyAgICAgICAgICAgdGhpcyBiZWhhdmlvciBpbiBwb3J0YWJsZSBwcm9ncmFtcy4gIFRoaXMgIGltcGxlbWVudGEtCisgICAgICAgICAgIHRpb24gIGRpc2FsbG93cyBtYXRjaGVzIGFnYWluc3Qgc2luZ2xlLWNoYXJhY3RlciBjYXBhLQorICAgICAgICAgICBiaWxpdHkgbmFtZXMuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGlzIGltcGxlbWVudGF0aW9uIGRpc2FsbG93cyBtYXRjaGVzIGJ5ICB0aGUgIHRlcm1jYXAKKyAgICAgICAgICAgaW50ZXJmYWNlICBhZ2FpbnN0IGV4dGVuZGVkIGNhcGFiaWxpdHkgbmFtZXMgd2hpY2ggYXJlCisgICAgICAgICAgIGxvbmdlciB0aGFuIHR3byBjaGFyYWN0ZXJzLgorCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJwdXRjLjMuaHRtbCI+cHV0YygzKTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybV92YXJpYWJsZXMuM3guaHRtbCI+dGVybV92YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz5wdXRjKDMpPC9TVFJPTkc+LgorCisgICAgICAgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jdXJzX3Rlcm1jYXAoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLUlOSVRJQUxJWkFUSU9OIj5JTklUSUFMSVpBVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1DQVBBQklMSVRZLVZBTFVFUyI+Q0FQQUJJTElUWSBWQUxVRVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtRk9STUFUVElORy1DQVBBQklMSVRJRVMiPkZPUk1BVFRJTkcgQ0FQQUJJTElUSUVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUdMT0JBTC1WQVJJQUJMRVMiPkdMT0JBTCBWQVJJQUJMRVM8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1CVUdTIj5CVUdTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sCmluZGV4IDY4Nzc0OTYuLjc4NGI1OWQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfdGVybWluZm8uM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMSwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzQgKzI2LDQwIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3Rlcm1pbmZvLjN4LHYgMS4zMCAyMDA4LzA4LzE2IDIwOjUzOjI3IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc190ZXJtaW5mby4zeCx2IDEuNDMgMjAxMy8wNy8yMCAxOToyOTo1OSB0b20gRXhwIEAKKyAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3Rlcm1pbmZvIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc190ZXJtaW5mbyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc190ZXJtaW5mbyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZGVsX2N1cnRlcm08L1NUUk9ORz4sIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4sIDxTVFJPTkc+cHV0cDwvU1RST05HPiwgPFNUUk9ORz5yZXN0YXJ0dGVybTwvU1RST05HPiwgPFNUUk9ORz5zZXRfY3VydGVybTwvU1RST05HPiwKLSAgICAgICA8U1RST05HPnNldHRlcm08L1NUUk9ORz4sIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+LCA8U1RST05HPnRpZ2V0ZmxhZzwvU1RST05HPiwgPFNUUk9ORz50aWdldG51bTwvU1RST05HPiwgPFNUUk9ORz50aWdldHN0cjwvU1RST05HPiwgPFNUUk9ORz50cGFybTwvU1RST05HPiwKLSAgICAgICA8U1RST05HPnRwdXRzPC9TVFJPTkc+LCA8U1RST05HPnZpZF9hdHRyPC9TVFJPTkc+LCA8U1RST05HPnZpZF9wdXRzPC9TVFJPTkc+LCA8U1RST05HPnZpZGF0dHI8L1NUUk9ORz4sIDxTVFJPTkc+dmlkcHV0czwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+Ci0gICAgICAgaW50ZXJmYWNlcyB0byB0ZXJtaW5mbyBkYXRhYmFzZQorICAgICAgIDxTVFJPTkc+c2V0dGVybTwvU1RST05HPiwgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4sIDxTVFJPTkc+dGlnZXRmbGFnPC9TVFJPTkc+LCA8U1RST05HPnRpZ2V0bnVtPC9TVFJPTkc+LCA8U1RST05HPnRpZ2V0c3RyPC9TVFJPTkc+LCA8U1RST05HPnRpcGFybTwvU1RST05HPiwKKyAgICAgICA8U1RST05HPnRwYXJtPC9TVFJPTkc+LCA8U1RST05HPnRwdXRzPC9TVFJPTkc+LCA8U1RST05HPnZpZF9hdHRyPC9TVFJPTkc+LCA8U1RST05HPnZpZF9wdXRzPC9TVFJPTkc+LCA8U1RST05HPnZpZGF0dHI8L1NUUk9ORz4sIDxTVFJPTkc+dmlkcHV0czwvU1RST05HPiAtCisgICAgICAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gaW50ZXJmYWNlcyB0byB0ZXJtaW5mbyBkYXRhYmFzZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O3Rlcm0uaCZndDs8L1NUUk9ORz4KIApAQCAtNjgsNTQgKzczLDcwIEBACiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wdXRwKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+c3RyPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz52aWRwdXRzKGNodHlwZTwvU1RST05HPiA8RU0+YXR0cnM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPigqPC9TVFJPTkc+PEVNPnB1dGM8L0VNPjxTVFJPTkc+KShpbnQpKTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnZpZGF0dHIoY2h0eXBlPC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dmlkX3B1dHMoYXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPigqPC9TVFJPTkc+PEVNPnB1dGM8L0VNPjxTVFJPTkc+KShjaGFyKSk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz52aWRfcHV0cyhhdHRyX3Q8L1NUUk9ORz4gPEVNPmF0dHJzPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5zaG9ydDwvU1RST05HPiA8RU0+cGFpcjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3B0czwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+KCo8L1NUUk9ORz48RU0+cHV0YzwvRU0+PFNUUk9ORz4pKGludCkpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dmlkX2F0dHIoYXR0cl90PC9TVFJPTkc+IDxFTT5hdHRyczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+c2hvcnQ8L1NUUk9ORz4gPEVNPnBhaXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9wdHM8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12Y3VyKGludDwvU1RST05HPiA8RU0+b2xkcm93PC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPm9sZGNvbDwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5uZXdyb3c8L0VNPiwgaW50IDxFTT5uZXdjb2w8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnRpZ2V0ZmxhZyhjaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5jYXBuYW1lPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50aWdldG51bShjaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5jYXBuYW1lPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KnRpZ2V0c3RyKGNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPmNhcG5hbWU8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qdGlwYXJtKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+c3RyPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz4uLi4pOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgbG93LWxldmVsIHJvdXRpbmVzIG11c3QgYmUgY2FsbGVkIGJ5ICBwcm9ncmFtcyAgdGhhdAogICAgICAgIGhhdmUgdG8gZGVhbCBkaXJlY3RseSB3aXRoIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRhdGFiYXNlIHRvIGhhbmRsZQogICAgICAgIGNlcnRhaW4gdGVybWluYWwgY2FwYWJpbGl0aWVzLCBzdWNoIGFzICBwcm9ncmFtbWluZyAgZnVuYy0KICAgICAgICB0aW9uICBrZXlzLiAgIEZvciBhbGwgb3RoZXIgZnVuY3Rpb25hbGl0eSwgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcm91dGluZXMKICAgICAgICBhcmUgbW9yZSBzdWl0YWJsZSBhbmQgdGhlaXIgdXNlIGlzIHJlY29tbWVuZGVkLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUluaXRpYWxpemF0aW9uIj5Jbml0aWFsaXphdGlvbjwvYT48L0gzPjxQUkU+CiAgICAgICAgSW5pdGlhbGx5LCA8U1RST05HPnNldHVwdGVybTwvU1RST05HPiBzaG91bGQgIGJlICBjYWxsZWQuICAgTm90ZSAgdGhhdCAgPFNUUk9ORz5zZS08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnR1cHRlcm08L1NUUk9ORz4gIGlzICBhdXRvbWF0aWNhbGx5ICBjYWxsZWQgYnkgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IGFuZCA8U1RST05HPm5ld3Rlcm08L1NUUk9ORz4uCiAgICAgICAgVGhpcyAgZGVmaW5lcyAgdGhlICBzZXQgIG9mICB0ZXJtaW5hbC1kZXBlbmRlbnQgIHZhcmlhYmxlcwotICAgICAgIFtsaXN0ZWQgaW4gPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPl0uICBUaGUgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiB2YXJpYWJsZXMgPFNUUk9ORz5saW5lczwvU1RST05HPiBhbmQKLSAgICAgICA8U1RST05HPmNvbHVtbnM8L1NUUk9ORz4gYXJlIGluaXRpYWxpemVkIGJ5IDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGFzIGZvbGxvd3M6CisgICAgICAgW2xpc3RlZCBpbiA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+XS4KIAotICAgICAgICAgICAgICBJZiA8U1RST05HPnVzZV9lbnYoRkFMU0UpPC9TVFJPTkc+IGhhcyBiZWVuIGNhbGxlZCwgdmFsdWVzIGZvciA8U1RST05HPmxpbmVzPC9TVFJPTkc+Ci0gICAgICAgICAgICAgIGFuZCA8U1RST05HPmNvbHVtbnM8L1NUUk9ORz4gc3BlY2lmaWVkIGluIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gYXJlIHVzZWQuCisgICAgICAgRWFjaCBpbml0aWFsaXphdGlvbiByb3V0aW5lIHByb3ZpZGVzIGFwcGxpY2F0aW9ucyB3aXRoIHRoZQorICAgICAgIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBlaXRoZXIgZGlyZWN0bHkgKHZpYSBoZWFkZXIgIGRlZmluaS0KKyAgICAgICB0aW9ucyksICBvciAgYnkgc3BlY2lhbCBmdW5jdGlvbnMuICBUaGUgaGVhZGVyIGZpbGVzIDxTVFJPTkc+Y3Vycy08L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmVzLmg8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dGVybS5oPC9TVFJPTkc+IHNob3VsZCBiZSBpbmNsdWRlZCAoaW4gdGhpcyBvcmRlcikgdG8gIGdldAorICAgICAgIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlc2Ugc3RyaW5ncywgbnVtYmVycywgYW5kIGZsYWdzLgogCi0gICAgICAgICAgICAgIE90aGVyd2lzZSwgIGlmICB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gYW5kCi0gICAgICAgICAgICAgIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiBleGlzdCwgdGhlaXIgdmFsdWVzIGFyZSB1c2VkLiAgSWYgdGhlc2UgZW4tCi0gICAgICAgICAgICAgIHZpcm9ubWVudCB2YXJpYWJsZXMgZG8gbm90IGV4aXN0IGFuZCB0aGUgcHJvZ3JhbSBpcwotICAgICAgICAgICAgICBydW5uaW5nIGluIGEgd2luZG93LCB0aGUgIGN1cnJlbnQgIHdpbmRvdyAgc2l6ZSAgaXMKLSAgICAgICAgICAgICAgdXNlZC4gICBPdGhlcndpc2UsICBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRvCi0gICAgICAgICAgICAgIG5vdCBleGlzdCwgdGhlIHZhbHVlcyBmb3IgPFNUUk9ORz5saW5lczwvU1RST05HPiBhbmQgPFNUUk9ORz5jb2x1bW5zPC9TVFJPTkc+ICBzcGVjaS0KLSAgICAgICAgICAgICAgZmllZCBpbiB0aGUgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiBkYXRhYmFzZSBhcmUgdXNlZC4KKyAgICAgICBUaGUgIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gIHZhcmlhYmxlcyA8U1RST05HPmxpbmVzPC9TVFJPTkc+IGFuZCA8U1RST05HPmNvbHVtbnM8L1NUUk9ORz4gYXJlIGluaXRpYWxpemVkCisgICAgICAgYnkgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gYXMgZm9sbG93czoKIAotICAgICAgIFRoZSAgaGVhZGVyICBmaWxlcyAgPFNUUk9ORz5jdXJzZXMuaDwvU1RST05HPiBhbmQgPFNUUk9ORz50ZXJtLmg8L1NUUk9ORz4gc2hvdWxkIGJlIGluY2x1ZGVkCi0gICAgICAgKGluIHRoaXMgb3JkZXIpIHRvIGdldCB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZXNlICBzdHJpbmdzLAotICAgICAgIG51bWJlcnMsICBhbmQgIGZsYWdzLiAgIFBhcmFtZXRlcml6ZWQgIHN0cmluZ3MgIHNob3VsZCAgYmUKLSAgICAgICBwYXNzZWQgdGhyb3VnaCA8U1RST05HPnRwYXJtPC9TVFJPTkc+IHRvIGluc3RhbnRpYXRlICB0aGVtLiAgIEFsbCAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPgotICAgICAgIHN0cmluZ3MgIFtpbmNsdWRpbmcgdGhlIG91dHB1dCBvZiA8U1RST05HPnRwYXJtPC9TVFJPTkc+XSBzaG91bGQgYmUgcHJpbnRlZAotICAgICAgIHdpdGggPFNUUk9ORz50cHV0czwvU1RST05HPiBvciA8U1RST05HPnB1dHA8L1NUUk9ORz4uICBDYWxsIHRoZSA8U1RST05HPnJlc2V0X3NoZWxsX21vZGU8L1NUUk9ORz4gdG8gIHJlc3RvcmUKLSAgICAgICB0aGUgIHR0eSBtb2RlcyBiZWZvcmUgZXhpdGluZyBbc2VlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwoM3gpPC9BPjwvU1RST05HPl0uICBQcm8tCi0gICAgICAgZ3JhbXMgIHdoaWNoICB1c2UgIGN1cnNvciAgYWRkcmVzc2luZyAgc2hvdWxkICBvdXRwdXQgIDxTVFJPTkc+ZW4tPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz50ZXJfY2FfbW9kZTwvU1RST05HPiAgdXBvbiAgc3RhcnR1cCAgYW5kIHNob3VsZCBvdXRwdXQgPFNUUk9ORz5leGl0X2NhX21vZGU8L1NUUk9ORz4KLSAgICAgICBiZWZvcmUgZXhpdGluZy4gIFByb2dyYW1zIGRlc2lyaW5nICBzaGVsbCAgZXNjYXBlcyAgc2hvdWxkCi0gICAgICAgY2FsbAorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIDxTVFJPTkc+dXNlX2VudihGQUxTRSk8L1NUUk9ORz4gaGFzIGJlZW4gY2FsbGVkLCAgdmFsdWVzICBmb3IgIDxTVFJPTkc+bGluZXM8L1NUUk9ORz4KKyAgICAgICAgICAgYW5kIDxTVFJPTkc+Y29sdW1uczwvU1RST05HPiBzcGVjaWZpZWQgaW4gPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiBhcmUgdXNlZC4KIAotICAgICAgIDxTVFJPTkc+cmVzZXRfc2hlbGxfbW9kZTwvU1RST05HPiAgYW5kIG91dHB1dCA8U1RST05HPmV4aXRfY2FfbW9kZTwvU1RST05HPiBiZWZvcmUgdGhlIHNoZWxsCi0gICAgICAgaXMgY2FsbGVkIGFuZCBzaG91bGQgb3V0cHV0ICA8U1RST05HPmVudGVyX2NhX21vZGU8L1NUUk9ORz4gIGFuZCAgY2FsbCAgPFNUUk9ORz5yZS08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnNldF9wcm9nX21vZGU8L1NUUk9ORz4gYWZ0ZXIgcmV0dXJuaW5nIGZyb20gdGhlIHNoZWxsLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIE90aGVyd2lzZSwgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyA8U1RST05HPkxJTkVTPC9TVFJPTkc+IGFuZCA8U1RST05HPkNPTC08L1NUUk9ORz4KKyAgICAgICAgICAgPFNUUk9ORz5VTU5TPC9TVFJPTkc+IGV4aXN0LCB0aGVpciB2YWx1ZXMgYXJlIHVzZWQuICBJZiB0aGVzZSAgZW52aXJvbi0KKyAgICAgICAgICAgbWVudCB2YXJpYWJsZXMgZG8gbm90IGV4aXN0IGFuZCB0aGUgcHJvZ3JhbSBpcyBydW5uaW5nCisgICAgICAgICAgIGluIGEgd2luZG93LCB0aGUgY3VycmVudCB3aW5kb3cgc2l6ZSBpcyB1c2VkLiAgIE90aGVyLQorICAgICAgICAgICB3aXNlLCAgaWYgIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZG8gbm90IGV4aXN0LCB0aGUKKyAgICAgICAgICAgdmFsdWVzIGZvciA8U1RST05HPmxpbmVzPC9TVFJPTkc+IGFuZCA8U1RST05HPmNvbHVtbnM8L1NUUk9ORz4gc3BlY2lmaWVkIGluIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+CisgICAgICAgICAgIGRhdGFiYXNlIGFyZSB1c2VkLgorCisgICAgICAgUGFyYW1ldGVyaXplZCAgc3RyaW5ncyAgc2hvdWxkICBiZSBwYXNzZWQgdGhyb3VnaCA8U1RST05HPnRwYXJtPC9TVFJPTkc+IHRvCisgICAgICAgaW5zdGFudGlhdGUgdGhlbS4gIEFsbCAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgc3RyaW5ncyAgW2luY2x1ZGluZyAgdGhlCisgICAgICAgb3V0cHV0ICBvZiAgPFNUUk9ORz50cGFybTwvU1RST05HPl0gIHNob3VsZCAgYmUgcHJpbnRlZCB3aXRoIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4gb3IgPFNUUk9ORz5wdXRwPC9TVFJPTkc+LgorICAgICAgIENhbGwgPFNUUk9ORz5yZXNldF9zaGVsbF9tb2RlPC9TVFJPTkc+IHRvIHJlc3RvcmUgdGhlIHR0eSBtb2RlcyBiZWZvcmUgIGV4LQorICAgICAgIGl0aW5nIFtzZWUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+XS4KKworICAgICAgIFByb2dyYW1zIHdoaWNoIHVzZSBjdXJzb3IgYWRkcmVzc2luZyBzaG91bGQKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIG91dHB1dCA8U1RST05HPmVudGVyX2NhX21vZGU8L1NUUk9ORz4gdXBvbiBzdGFydHVwIGFuZAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgb3V0cHV0IDxTVFJPTkc+ZXhpdF9jYV9tb2RlPC9TVFJPTkc+IGJlZm9yZSBleGl0aW5nLgorCisgICAgICAgUHJvZ3JhbXMgd2hpY2ggZXhlY3V0ZSBzaGVsbCBzdWJwcm9jZXNzZXMgc2hvdWxkCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBjYWxsICA8U1RST05HPnJlc2V0X3NoZWxsX21vZGU8L1NUUk9ORz4gIGFuZCBvdXRwdXQgPFNUUk9ORz5leGl0X2NhX21vZGU8L1NUUk9ORz4gYmVmb3JlCisgICAgICAgICAgIHRoZSBzaGVsbCBpcyBjYWxsZWQgYW5kCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBvdXRwdXQgPFNUUk9ORz5lbnRlcl9jYV9tb2RlPC9TVFJPTkc+IGFuZCAgY2FsbCAgPFNUUk9ORz5yZXNldF9wcm9nX21vZGU8L1NUUk9ORz4gIGFmdGVyCisgICAgICAgICAgIHJldHVybmluZyBmcm9tIHRoZSBzaGVsbC4KIAogICAgICAgIFRoZSA8U1RST05HPnNldHVwdGVybTwvU1RST05HPiByb3V0aW5lIHJlYWRzIGluIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRhdGFiYXNlLCBpbmktCiAgICAgICAgdGlhbGl6aW5nIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IHN0cnVjdHVyZXMsIGJ1dCBkb2VzIG5vdCBzZXQgdXAgdGhlCkBAIC0xMjgsNTggKzE0OSw4OSBAQAogICAgICAgIDxFTT5ycmV0PC9FTT4uICAgQSAgcmV0dXJuIHZhbHVlIG9mIDxTVFJPTkc+T0s8L1NUUk9ORz4gY29tYmluZWQgd2l0aCBzdGF0dXMgb2YgPFNUUk9ORz4xPC9TVFJPTkc+IGluCiAgICAgICAgPEVNPmVycnJldDwvRU0+IGlzIG5vcm1hbC4gIElmIDxTVFJPTkc+RVJSPC9TVFJPTkc+IGlzIHJldHVybmVkLCBleGFtaW5lIDxFTT5lcnJyZXQ8L0VNPjoKIAotICAgICAgICAgICAgICA8U1RST05HPjE8L1NUUk9ORz4gICAgbWVhbnMgdGhhdCB0aGUgdGVybWluYWwgaXMgaGFyZGNvcHksIGNhbm5vdCBiZQotICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGN1cnNlcyBhcHBsaWNhdGlvbnMuCisgICAgICAgPFNUUk9ORz4xPC9TVFJPTkc+ICAgIG1lYW5zIHRoYXQgdGhlIHRlcm1pbmFsIGlzIGhhcmRjb3B5LCBjYW5ub3QgIGJlICB1c2VkCisgICAgICAgICAgICBmb3IgY3Vyc2VzIGFwcGxpY2F0aW9ucy4KIAotICAgICAgICAgICAgICA8U1RST05HPjA8L1NUUk9ORz4gICAgbWVhbnMgdGhhdCB0aGUgdGVybWluYWwgY291bGQgbm90IGJlIGZvdW5kLCBvcgotICAgICAgICAgICAgICAgICAgIHRoYXQgaXQgaXMgYSBnZW5lcmljIHR5cGUsIGhhdmluZyAgdG9vICBsaXR0bGUKLSAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgY3Vyc2VzIGFwcGxpY2F0aW9ucyB0byBydW4uCisgICAgICAgICAgICA8U1RST05HPnNldHVwdGVybTwvU1RST05HPiAgZGV0ZXJtaW5lcyBpZiB0aGUgZW50cnkgaXMgYSBoYXJkY29weSB0eXBlCisgICAgICAgICAgICBieSBjaGVja2luZyB0aGUgPEVNPmhjPC9FTT4gKDxFTT5oYXJkY29weTwvRU0+KSBjYXBhYmlsaXR5LgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+LTE8L1NUUk9ORz4gICBtZWFucyAgdGhhdCB0aGUgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiBkYXRhYmFzZSBjb3VsZCBub3QgYmUKLSAgICAgICAgICAgICAgICAgICBmb3VuZC4KKyAgICAgICA8U1RST05HPjA8L1NUUk9ORz4gICAgbWVhbnMgdGhhdCB0aGUgdGVybWluYWwgY291bGQgbm90IGJlIGZvdW5kLCAgb3IgIHRoYXQKKyAgICAgICAgICAgIGl0ICBpcyAgYSBnZW5lcmljIHR5cGUsIGhhdmluZyB0b28gbGl0dGxlIGluZm9ybWF0aW9uCisgICAgICAgICAgICBmb3IgY3Vyc2VzIGFwcGxpY2F0aW9ucyB0byBydW4uCiAKLSAgICAgICBJZiA8RU0+ZXJycmV0PC9FTT4gaXMgbnVsbCwgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgIHVwb24KKyAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGRldGVybWluZXMgaWYgdGhlIGVudHJ5IGlzIGEgIGdlbmVyaWMgIHR5cGUKKyAgICAgICAgICAgIGJ5IGNoZWNraW5nIHRoZSA8RU0+Z248L0VNPiAoPEVNPmdlbmVyaWM8L0VNPikgY2FwYWJpbGl0eS4KKworICAgICAgIDxTVFJPTkc+LTE8L1NUUk9ORz4gICBtZWFucyB0aGF0IHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRhdGFiYXNlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKworICAgICAgIElmICA8RU0+ZXJycmV0PC9FTT4gaXMgbnVsbCwgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgdXBvbgogICAgICAgIGZpbmRpbmcgYW4gZXJyb3IgYW5kIGV4aXRzLiAgVGh1cywgdGhlIHNpbXBsZXN0IGNhbGwgaXM6CiAKICAgICAgICAgICAgICA8U1RST05HPnNldHVwdGVybSgoY2hhcjwvU1RST05HPiA8U1RST05HPiopMCw8L1NUUk9ORz4gPFNUUk9ORz4xLDwvU1RST05HPiA8U1RST05HPihpbnQ8L1NUUk9ORz4gPFNUUk9ORz4qKTApOzwvU1RST05HPiwKIAotICAgICAgIHdoaWNoICB1c2VzICBhbGwgdGhlIGRlZmF1bHRzIGFuZCBzZW5kcyB0aGUgb3V0cHV0IHRvIDxTVFJPTkc+c3RkLTwvU1RST05HPgorICAgICAgIHdoaWNoIHVzZXMgYWxsIHRoZSBkZWZhdWx0cyBhbmQgc2VuZHMgdGhlIG91dHB1dCAgdG8gIDxTVFJPTkc+c3RkLTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+b3V0PC9TVFJPTkc+LgogCi0gICAgICAgVGhlIDxTVFJPTkc+c2V0dGVybTwvU1RST05HPiByb3V0aW5lIGlzIGJlaW5nIHJlcGxhY2VkIGJ5ICA8U1RST05HPnNldHVwdGVybTwvU1RST05HPi4gICBUaGUKLSAgICAgICBjYWxsOgorICAgICAgIFRoZSA8U1RST05HPnNldHRlcm08L1NUUk9ORz4gcm91dGluZSB3YXMgcmVwbGFjZWQgYnkgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4uICBUaGUgY2FsbDoKIAogICAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtKDwvU1RST05HPjxFTT50ZXJtPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz4xLDwvU1RST05HPiA8U1RST05HPihpbnQ8L1NUUk9ORz4gPFNUUk9ORz4qKTApPC9TVFJPTkc+CiAKICAgICAgICBwcm92aWRlcyAgdGhlICBzYW1lICBmdW5jdGlvbmFsaXR5ICBhcyA8U1RST05HPnNldHRlcm0oPC9TVFJPTkc+PEVNPnRlcm08L0VNPjxTVFJPTkc+KTwvU1RST05HPi4gIFRoZQotICAgICAgIDxTVFJPTkc+c2V0dGVybTwvU1RST05HPiByb3V0aW5lIGlzIGluY2x1ZGVkIGhlcmUgIGZvciAgQlNEICBjb21wYXRpYmlsaXR5LAotICAgICAgIGFuZCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG5ldyBwcm9ncmFtcy4KKyAgICAgICA8U1RST05HPnNldHRlcm08L1NUUk9ORz4gcm91dGluZSBpcyBwcm92aWRlZCBmb3IgQlNEIGNvbXBhdGliaWxpdHksIGFuZCAgaXMKKyAgICAgICBub3QgcmVjb21tZW5kZWQgZm9yIG5ldyBwcm9ncmFtcy4KIAotICAgICAgIFRoZSAgPFNUUk9ORz5zZXRfY3VydGVybTwvU1RST05HPiAgcm91dGluZSAgc2V0cyAgdGhlICB2YXJpYWJsZSA8U1RST05HPmN1cl90ZXJtPC9TVFJPTkc+IHRvCi0gICAgICAgPEVNPm50ZXJtPC9FTT4sIGFuZCBtYWtlcyBhbGwgb2YgdGhlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gYm9vbGVhbiwgbnVtZXJpYywgYW5kCi0gICAgICAgc3RyaW5nICB2YXJpYWJsZXMgIHVzZSAgdGhlIHZhbHVlcyBmcm9tIDxFTT5udGVybTwvRU0+LiAgSXQgcmV0dXJucwotICAgICAgIHRoZSBvbGQgdmFsdWUgb2YgPFNUUk9ORz5jdXJfdGVybTwvU1RST05HPi4KIAotICAgICAgIFRoZSA8U1RST05HPmRlbF9jdXJ0ZXJtPC9TVFJPTkc+IHJvdXRpbmUgZnJlZXMgIHRoZSAgc3BhY2UgIHBvaW50ZWQgIHRvICBieQorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVGhlLVRlcm1pbmFsLVN0YXRlIj5UaGUgVGVybWluYWwgU3RhdGU8L2E+PC9IMz48UFJFPgorICAgICAgIFRoZSAgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gIHJvdXRpbmUgIHN0b3JlcyAgaXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgIHRlcm1pbmFsIGluIGEgPFNUUk9ORz5URVJNSU5BTDwvU1RST05HPiBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSB0aGUgIGdsb2JhbAorICAgICAgIHZhcmlhYmxlICA8U1RST05HPmN1cl90ZXJtPC9TVFJPTkc+LiAgIElmICBpdCAgZGV0ZWN0cyBhbiBlcnJvciwgb3IgZGVjaWRlcworICAgICAgIHRoYXQgdGhlIHRlcm1pbmFsIGlzIHVuc3VpdGFibGUgKGhhcmRjb3B5IG9yIGdlbmVyaWMpLCAgaXQKKyAgICAgICBkaXNjYXJkcyAgdGhpcyBpbmZvcm1hdGlvbiwgbWFraW5nIGl0IG5vdCBhdmFpbGFibGUgdG8gYXAtCisgICAgICAgcGxpY2F0aW9ucy4KKworICAgICAgIElmIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGlzIGNhbGxlZCByZXBlYXRlZGx5IGZvciAgdGhlICBzYW1lICB0ZXJtaW5hbAorICAgICAgIHR5cGUsICBpdCAgd2lsbCAgcmV1c2UgdGhlIGluZm9ybWF0aW9uLiAgSXQgbWFpbnRhaW5zIG9ubHkKKyAgICAgICBvbmUgY29weSBvZiBhIGdpdmVuIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzIGluIG1lbW9yeS4gIElmCisgICAgICAgaXQgaXMgY2FsbGVkIGZvciBkaWZmZXJlbnQgdGVybWluYWwgdHlwZXMsIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGFsbG8tCisgICAgICAgY2F0ZXMgbmV3IHN0b3JhZ2UgZm9yIGVhY2ggc2V0IG9mIHRlcm1pbmFsIGNhcGFiaWxpdGllcy4KKworICAgICAgIFRoZSA8U1RST05HPnNldF9jdXJ0ZXJtPC9TVFJPTkc+IHJvdXRpbmUgc2V0cyA8U1RST05HPmN1cl90ZXJtPC9TVFJPTkc+IHRvIDxFTT5udGVybTwvRU0+LCBhbmQgIG1ha2VzCisgICAgICAgYWxsIG9mIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGJvb2xlYW4sIG51bWVyaWMsIGFuZCBzdHJpbmcgdmFyaWFibGVzCisgICAgICAgdXNlIHRoZSB2YWx1ZXMgZnJvbSA8RU0+bnRlcm08L0VNPi4gIEl0IHJldHVybnMgdGhlICBvbGQgIHZhbHVlICBvZgorICAgICAgIDxTVFJPTkc+Y3VyX3Rlcm08L1NUUk9ORz4uCisKKyAgICAgICBUaGUgIDxTVFJPTkc+ZGVsX2N1cnRlcm08L1NUUk9ORz4gIHJvdXRpbmUgIGZyZWVzICB0aGUgIHNwYWNlIHBvaW50ZWQgdG8gYnkKICAgICAgICA8RU0+b3Rlcm08L0VNPiBhbmQgbWFrZXMgaXQgYXZhaWxhYmxlIGZvciBmdXJ0aGVyIHVzZS4gIElmIDxFTT5vdGVybTwvRU0+IGlzCi0gICAgICAgdGhlIHNhbWUgYXMgPFNUUk9ORz5jdXJfdGVybTwvU1RST05HPiwgcmVmZXJlbmNlcyB0byBhbnkgIG9mICB0aGUgIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4KLSAgICAgICBib29sZWFuLCAgbnVtZXJpYywgYW5kIHN0cmluZyB2YXJpYWJsZXMgdGhlcmVhZnRlciBtYXkgcmUtCi0gICAgICAgZmVyIHRvIGludmFsaWQgbWVtb3J5IGxvY2F0aW9ucyAgdW50aWwgIGFub3RoZXIgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+CisgICAgICAgdGhlICBzYW1lICBhcyAgPFNUUk9ORz5jdXJfdGVybTwvU1RST05HPiwgcmVmZXJlbmNlcyB0byBhbnkgb2YgdGhlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4KKyAgICAgICBib29sZWFuLCBudW1lcmljLCBhbmQgc3RyaW5nIHZhcmlhYmxlcyB0aGVyZWFmdGVyIG1heSAgcmUtCisgICAgICAgZmVyICB0byAgaW52YWxpZCAgbWVtb3J5IGxvY2F0aW9ucyB1bnRpbCBhbm90aGVyIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+CiAgICAgICAgaGFzIGJlZW4gY2FsbGVkLgogCiAgICAgICAgVGhlICA8U1RST05HPnJlc3RhcnR0ZXJtPC9TVFJPTkc+ICByb3V0aW5lICBpcyAgc2ltaWxhciAgdG8gIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+ICBhbmQKLSAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4sIGV4Y2VwdCB0aGF0IGl0IGlzIGNhbGxlZCBhZnRlciAgcmVzdG9yaW5nICBtZW1vcnkKLSAgICAgICB0byAgYSAgcHJldmlvdXMgIHN0YXRlIChmb3IgZXhhbXBsZSwgd2hlbiByZWxvYWRpbmcgYSBnYW1lCi0gICAgICAgc2F2ZWQgYXMgYSBjb3JlIGltYWdlIGR1bXApLiAgSXQgYXNzdW1lcyB0aGF0IHRoZSAgd2luZG93cwotICAgICAgIGFuZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBvcHRpb25zIGFyZSB0aGUgc2FtZSBhcyB3aGVuIG1lbS0KLSAgICAgICBvcnkgd2FzIHNhdmVkLCBidXQgdGhlIHRlcm1pbmFsIHR5cGUgYW5kIGJhdWQgcmF0ZSBtYXkgIGJlCi0gICAgICAgZGlmZmVyZW50LiAgIEFjY29yZGluZ2x5LCBpdCBzYXZlcyB2YXJpb3VzIHR0eSBzdGF0ZSBiaXRzLAotICAgICAgIGNhbGxzIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+LCBhbmQgdGhlbiByZXN0b3JlcyB0aGUgYml0cy4KKyAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4sICBleGNlcHQgIHRoYXQgaXQgaXMgY2FsbGVkIGFmdGVyIHJlc3RvcmluZyBtZW1vcnkKKyAgICAgICB0byBhIHByZXZpb3VzIHN0YXRlIChmb3IgZXhhbXBsZSwgd2hlbiAgcmVsb2FkaW5nICBhICBnYW1lCisgICAgICAgc2F2ZWQgYXMgYSBjb3JlIGltYWdlIGR1bXApLiAgPFNUUk9ORz5yZXN0YXJ0dGVybTwvU1RST05HPiBhc3N1bWVzIHRoYXQgdGhlCisgICAgICAgd2luZG93cyBhbmQgdGhlIGlucHV0IGFuZCBvdXRwdXQgb3B0aW9ucyBhcmUgdGhlICBzYW1lICBhcworICAgICAgIHdoZW4gbWVtb3J5IHdhcyBzYXZlZCwgYnV0IHRoZSB0ZXJtaW5hbCB0eXBlIGFuZCBiYXVkIHJhdGUKKyAgICAgICBtYXkgYmUgZGlmZmVyZW50LiAgQWNjb3JkaW5nbHksIDxTVFJPTkc+cmVzdGFydHRlcm08L1NUUk9ORz4gc2F2ZXMgIHZhcmlvdXMKKyAgICAgICB0dHkgIHN0YXRlICBiaXRzLCAgY2FsbHMgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+LCBhbmQgdGhlbiByZXN0b3JlcyB0aGUKKyAgICAgICBiaXRzLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUZvcm1hdHRpbmctT3V0cHV0Ij5Gb3JtYXR0aW5nIE91dHB1dDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+dHBhcm08L1NUUk9ORz4gcm91dGluZSBpbnN0YW50aWF0ZXMgdGhlIHN0cmluZyA8RU0+c3RyPC9FTT4gd2l0aCBwYXJhbWUtCiAgICAgICAgdGVycyAgPEVNPnBpPC9FTT4uICBBIHBvaW50ZXIgaXMgcmV0dXJuZWQgdG8gdGhlIHJlc3VsdCBvZiA8RU0+c3RyPC9FTT4gd2l0aAogICAgICAgIHRoZSBwYXJhbWV0ZXJzIGFwcGxpZWQuCiAKKyAgICAgICA8U1RST05HPnRpcGFybTwvU1RST05HPiBpcyBhIG5ld2VyIGZvcm0gIG9mICA8U1RST05HPnRwYXJtPC9TVFJPTkc+ICB3aGljaCAgdXNlcyAgPEVNPiZsdDtzdGRhcmcuaCZndDs8L0VNPgorICAgICAgIHJhdGhlciAgdGhhbiAgYSBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4gIEl0cyBudW1lcmljIHBhcmFtZS0KKyAgICAgICB0ZXJzIGFyZSBpbnRlZ2VycyAoaW50KSByYXRoZXIgdGhhbiBsb25ncy4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1PdXRwdXQtRnVuY3Rpb25zIj5PdXRwdXQgRnVuY3Rpb25zPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz50cHV0czwvU1RST05HPiAgcm91dGluZSAgYXBwbGllcyAgcGFkZGluZyAgaW5mb3JtYXRpb24gIHRvICB0aGUKICAgICAgICBzdHJpbmcgIDxFTT5zdHI8L0VNPiAgYW5kICBvdXRwdXRzICBpdC4gIFRoZSA8RU0+c3RyPC9FTT4gbXVzdCBiZSBhIHRlcm1pbmZvCiAgICAgICAgc3RyaW5nIHZhcmlhYmxlIG9yIHRoZSByZXR1cm4gdmFsdWUgZnJvbSAgPFNUUk9ORz50cGFybTwvU1RST05HPiwgIDxTVFJPTkc+dGdldHN0cjwvU1RST05HPiwKQEAgLTIxMywzOSArMjY1LDU1IEBACiAgICAgICAgdGFrZXMgZWZmZWN0IGltbWVkaWF0ZWx5IChyYXRoZXIgIHRoYW4gIGF0ICB0aGUgIG5leHQgIHJlLQogICAgICAgIGZyZXNoKS4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UZXJtaW5hbC1DYXBhYmlsaXR5LUZ1bmN0aW9ucyI+VGVybWluYWwgQ2FwYWJpbGl0eSBGdW5jdGlvbnM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz50aWdldGZsYWc8L1NUUk9ORz4sICA8U1RST05HPnRpZ2V0bnVtPC9TVFJPTkc+IGFuZCA8U1RST05HPnRpZ2V0c3RyPC9TVFJPTkc+IHJvdXRpbmVzIHJldHVybiB0aGUKICAgICAgICB2YWx1ZSBvZiB0aGUgY2FwYWJpbGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IDxFTT5jYXAtPC9FTT4KLSAgICAgICA8RU0+bmFtZTwvRU0+IHBhc3NlZCB0byB0aGVtLCBzdWNoIGFzIDxTVFJPTkc+eGVubDwvU1RST05HPi4KKyAgICAgICA8RU0+bmFtZTwvRU0+ICBwYXNzZWQgIHRvIHRoZW0sIHN1Y2ggYXMgPFNUUk9ORz54ZW5sPC9TVFJPTkc+LiAgVGhlIDxFTT5jYXBuYW1lPC9FTT4gZm9yIGVhY2gKKyAgICAgICBjYXBhYmlsaXR5IGlzIGdpdmVuIGluIHRoZSB0YWJsZSBjb2x1bW4gIGVudGl0bGVkICA8RU0+Y2FwbmFtZTwvRU0+CisgICAgICAgY29kZSBpbiB0aGUgY2FwYWJpbGl0aWVzIHNlY3Rpb24gb2YgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPi4KIAotICAgICAgIFRoZSAgPFNUUk9ORz50aWdldGZsYWc8L1NUUk9ORz4gIHJvdXRpbmUgcmV0dXJucyB0aGUgdmFsdWUgPFNUUk9ORz4tMTwvU1RST05HPiBpZiA8RU0+Y2FwbmFtZTwvRU0+IGlzCi0gICAgICAgbm90IGEgYm9vbGVhbiBjYXBhYmlsaXR5LCBvciA8U1RST05HPjA8L1NUUk9ORz4gaWYgaXQgaXMgY2FuY2VsZWQgb3IgYWJzZW50Ci0gICAgICAgZnJvbSB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCisgICAgICAgVGhlc2Ugcm91dGluZXMgcmV0dXJuIHNwZWNpYWwgdmFsdWVzIHRvIGRlbm90ZSBlcnJvcnMuCiAKLSAgICAgICBUaGUgIDxTVFJPTkc+dGlnZXRudW08L1NUUk9ORz4gIHJvdXRpbmUgIHJldHVybnMgdGhlIHZhbHVlIDxTVFJPTkc+LTI8L1NUUk9ORz4gaWYgPEVNPmNhcG5hbWU8L0VNPiBpcwotICAgICAgIG5vdCBhIG51bWVyaWMgY2FwYWJpbGl0eSwgb3IgPFNUUk9ORz4tMTwvU1RST05HPiBpZiBpdCBpcyBjYW5jZWxlZCAgb3IgIGFiLQotICAgICAgIHNlbnQgZnJvbSB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCisgICAgICAgVGhlIDxTVFJPTkc+dGlnZXRmbGFnPC9TVFJPTkc+IHJvdXRpbmUgcmV0dXJucwogCi0gICAgICAgVGhlICA8U1RST05HPnRpZ2V0c3RyPC9TVFJPTkc+IHJvdXRpbmUgcmV0dXJucyB0aGUgdmFsdWUgPFNUUk9ORz4oY2hhcjwvU1RST05HPiA8U1RST05HPiopLTE8L1NUUk9ORz4gaWYgPEVNPmNhcC08L0VNPgotICAgICAgIDxFTT5uYW1lPC9FTT4gaXMgbm90IGEgc3RyaW5nIGNhcGFiaWxpdHksIG9yIDxTVFJPTkc+MDwvU1RST05HPiBpZiBpdCBpcyBjYW5jZWxlZCBvcgotICAgICAgIGFic2VudCBmcm9tIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4KKyAgICAgICA8U1RST05HPi0xPC9TVFJPTkc+ICAgICBpZiA8RU0+Y2FwbmFtZTwvRU0+IGlzIG5vdCBhIGJvb2xlYW4gY2FwYWJpbGl0eSwgb3IKIAotICAgICAgIFRoZSA8RU0+Y2FwbmFtZTwvRU0+IGZvciBlYWNoIGNhcGFiaWxpdHkgaXMgZ2l2ZW4gaW4gdGhlIHRhYmxlIGNvbC0KLSAgICAgICB1bW4gZW50aXRsZWQgPEVNPmNhcG5hbWU8L0VNPiBjb2RlIGluIHRoZSBjYXBhYmlsaXRpZXMgIHNlY3Rpb24gIG9mCi0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPi4KKyAgICAgICA8U1RST05HPjA8L1NUUk9ORz4gICAgICBpZiAgaXQgIGlzIGNhbmNlbGVkIG9yIGFic2VudCBmcm9tIHRoZSB0ZXJtaW5hbCBkZS0KKyAgICAgICAgICAgICAgc2NyaXB0aW9uLgogCisgICAgICAgVGhlIDxTVFJPTkc+dGlnZXRudW08L1NUUk9ORz4gcm91dGluZSByZXR1cm5zCisKKyAgICAgICA8U1RST05HPi0yPC9TVFJPTkc+ICAgICBpZiA8RU0+Y2FwbmFtZTwvRU0+IGlzIG5vdCBhIG51bWVyaWMgY2FwYWJpbGl0eSwgb3IKKworICAgICAgIDxTVFJPTkc+LTE8L1NUUk9ORz4gICAgIGlmIGl0IGlzIGNhbmNlbGVkIG9yIGFic2VudCBmcm9tIHRoZSAgdGVybWluYWwgIGRlLQorICAgICAgICAgICAgICBzY3JpcHRpb24uCisKKyAgICAgICBUaGUgPFNUUk9ORz50aWdldHN0cjwvU1RST05HPiByb3V0aW5lIHJldHVybnMKKworICAgICAgIDxTVFJPTkc+KGNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKS0xPC9TVFJPTkc+CisgICAgICAgICAgICAgIGlmIDxFTT5jYXBuYW1lPC9FTT4gaXMgbm90IGEgc3RyaW5nIGNhcGFiaWxpdHksIG9yCisKKyAgICAgICA8U1RST05HPjA8L1NUUk9ORz4gICAgICBpZiAgaXQgIGlzIGNhbmNlbGVkIG9yIGFic2VudCBmcm9tIHRoZSB0ZXJtaW5hbCBkZS0KKyAgICAgICAgICAgICAgc2NyaXB0aW9uLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVRlcm1pbmFsLUNhcGFiaWxpdHktTmFtZXMiPlRlcm1pbmFsIENhcGFiaWxpdHkgTmFtZXM8L2E+PC9IMz48UFJFPgorICAgICAgIFRoZXNlIG51bGwtdGVybWluYXRlZCBhcnJheXMgY29udGFpbiAgdGhlICBzaG9ydCAgdGVybWluZm8KKyAgICAgICBuYW1lcyAgKCJjb2RlcyIpLCB0aGUgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IG5hbWVzLCBhbmQgdGhlIGxvbmcgdGVybWluZm8KKyAgICAgICBuYW1lcyAoImZuYW1lcyIpIGZvciBlYWNoIG9mIHRoZSBwcmVkZWZpbmVkIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gdmFyaS0KKyAgICAgICBhYmxlczoKICAgICAgICAgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmJvb2xuYW1lc1tdPC9TVFJPTkc+LCA8U1RST05HPipib29sY29kZXNbXTwvU1RST05HPiwgPFNUUk9ORz4qYm9vbGZuYW1lc1tdPC9TVFJPTkc+CiAKICAgICAgICAgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Km51bW5hbWVzW108L1NUUk9ORz4sIDxTVFJPTkc+Km51bWNvZGVzW108L1NUUk9ORz4sIDxTVFJPTkc+Km51bWZuYW1lc1tdPC9TVFJPTkc+CiAKICAgICAgICAgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KnN0cm5hbWVzW108L1NUUk9ORz4sIDxTVFJPTkc+KnN0cmNvZGVzW108L1NUUk9ORz4sIDxTVFJPTkc+KnN0cmZuYW1lc1tdPC9TVFJPTkc+CiAKLSAgICAgICBUaGVzZSAgbnVsbC10ZXJtaW5hdGVkICBhcnJheXMgIGNvbnRhaW4gIHRoZSA8RU0+Y2FwbmFtZXM8L0VNPiwgdGhlCi0gICAgICAgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IGNvZGVzLCBhbmQgdGhlIGZ1bGwgQyBuYW1lcywgZm9yIGVhY2ggb2YgdGhlICA8U1RST05HPnRlci08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPm1pbmZvPC9TVFJPTkc+IHZhcmlhYmxlcy4KLQogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFJvdXRpbmVzICB0aGF0ICByZXR1cm4gIGFuIGludGVnZXIgcmV0dXJuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZQogICAgICAgIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlICBvdGhlciAgdGhhbgogICAgICAgIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgIHVwb24gIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgdW5sZXNzIG90aGVyd2lzZSBub3RlZApAQCAtMjUzLDQ0ICszMjEsMzYgQEAKIAogICAgICAgIFJvdXRpbmVzIHRoYXQgcmV0dXJuIHBvaW50ZXJzIGFsd2F5cyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLgogCi0gICAgICAgWC9PcGVuICBkZWZpbmVzICBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gdGhpcyBpbXBsZW1lbnRhLQorICAgICAgIFgvT3BlbiBkZWZpbmVzIG5vIGVycm9yIGNvbmRpdGlvbnMuICBJbiAgdGhpcyAgaW1wbGVtZW50YS0KICAgICAgICB0aW9uCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz5kZWxfY3VydGVybTwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgaXRzIHRlcm1pbmFsIHBhcmFtZXRlciAgaXMKLSAgICAgICAgICAgICAgICAgICBudWxsLgorICAgICAgICAgICAgPFNUUk9ORz5kZWxfY3VydGVybTwvU1RST05HPgorICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiAgZXJyb3IgIGlmIGl0cyB0ZXJtaW5hbCBwYXJhbWV0ZXIgaXMKKyAgICAgICAgICAgICAgICAgbnVsbC4KIAotICAgICAgICAgICAgICA8U1RST05HPnB1dHA8L1NUUk9ORz4gY2FsbHMgPFNUUk9ORz50cHV0czwvU1RST05HPiwgcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLWNvZGVzLgorICAgICAgICAgICAgPFNUUk9ORz5wdXRwPC9TVFJPTkc+IGNhbGxzIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4sIHJldHVybmluZyB0aGUgc2FtZSBlcnJvci1jb2Rlcy4KIAotICAgICAgICAgICAgICA8U1RST05HPnJlc3RhcnR0ZXJtPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgYXNzb2NpYXRlZCBjYWxsIHRvIDxTVFJPTkc+c2UtPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgPFNUUk9ORz50dXB0ZXJtPC9TVFJPTkc+IHJldHVybnMgYW4gZXJyb3IuCisgICAgICAgICAgICA8U1RST05HPnJlc3RhcnR0ZXJtPC9TVFJPTkc+CisgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIGFzc29jaWF0ZWQgY2FsbCAgdG8gIDxTVFJPTkc+c2UtPC9TVFJPTkc+CisgICAgICAgICAgICAgICAgIDxTVFJPTkc+dHVwdGVybTwvU1RST05HPiByZXR1cm5zIGFuIGVycm9yLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiBpdCBjYW5ub3QgYWxsb2NhdGUgIGVub3VnaAotICAgICAgICAgICAgICAgICAgIG1lbW9yeSwgb3IgY3JlYXRlIHRoZSBpbml0aWFsIHdpbmRvd3MgKHN0ZHNjciwKLSAgICAgICAgICAgICAgICAgICBjdXJzY3IsIG5ld3NjcikuICBPdGhlciBlcnJvciAgY29uZGl0aW9ucyAgYXJlCi0gICAgICAgICAgICAgICAgICAgZG9jdW1lbnRlZCBhYm92ZS4KKyAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+CisgICAgICAgICAgICAgICAgIHJldHVybnMgIGFuICBlcnJvciAgaWYgaXQgY2Fubm90IGFsbG9jYXRlIGVub3VnaAorICAgICAgICAgICAgICAgICBtZW1vcnksIG9yIGNyZWF0ZSB0aGUgaW5pdGlhbCAgd2luZG93cyAgKHN0ZHNjciwKKyAgICAgICAgICAgICAgICAgY3Vyc2NyLCAgbmV3c2NyKS4gICBPdGhlciAgZXJyb3IgIGNvbmRpdGlvbnMgYXJlCisgICAgICAgICAgICAgICAgIGRvY3VtZW50ZWQgYWJvdmUuCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz50cHV0czwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIHJldHVybnMgIGFuICBlcnJvciAgaWYgdGhlIHN0cmluZyBwYXJhbWV0ZXIgaXMKLSAgICAgICAgICAgICAgICAgICBudWxsLiAgSXQgZG9lcyBub3QgZGV0ZWN0IEkvTyAgZXJyb3JzOiAgWC9PcGVuCi0gICAgICAgICAgICAgICAgICAgc3RhdGVzICB0aGF0IDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4gaWdub3JlcyB0aGUgcmV0dXJuIHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBmdW5jdGlvbiA8RU0+cHV0YzwvRU0+LgorICAgICAgICAgICAgPFNUUk9ORz50cHV0czwvU1RST05HPgorICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yICBpZiAgdGhlICBzdHJpbmcgIHBhcmFtZXRlciAgaXMKKyAgICAgICAgICAgICAgICAgbnVsbC4gICBJdCAgZG9lcyAgbm90ICBkZXRlY3QgSS9PIGVycm9yczogWC9PcGVuCisgICAgICAgICAgICAgICAgIHN0YXRlcyB0aGF0IDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4gaWdub3JlcyB0aGUgIHJldHVybiAgdmFsdWUgIG9mCisgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgZnVuY3Rpb24gPEVNPnB1dGM8L0VNPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KLSAgICAgICBUaGUgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gcm91dGluZSBzaG91bGQgYmUgdXNlZCBpbiBwbGFjZSBvZiAgPFNUUk9ORz5zZXR0ZXJtPC9TVFJPTkc+LgotICAgICAgIEl0ICBtYXkgYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gdGVzdCBmb3IgdGVybWluYWwgY2FwYS0KLSAgICAgICBiaWxpdGllcyB3aXRob3V0IGNvbW1pdHRpbmcgdG8gdGhlIGFsbG9jYXRpb24gIG9mICBzdG9yYWdlCi0gICAgICAgaW52b2x2ZWQgaW4gPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+LgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgWC9PcGVuIG5vdGVzIHRoYXQgPFNUUk9ORz52aWRhdHRyPC9TVFJPTkc+IGFuZCA8U1RST05HPnZpZHB1dHM8L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAotICAgICAgIE5vdGUgdGhhdCA8U1RST05HPnZpZGF0dHI8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dmlkcHV0czwvU1RST05HPiBtYXkgYmUgbWFjcm9zLgotCi0KLTwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+c2V0dGVybTwvU1RST05HPiBpcyBub3QgZGVzY3JpYmVkIGJ5IFgvT3BlbiBhbmQgbXVzdAogICAgICAgIGJlIGNvbnNpZGVyZWQgbm9uLXBvcnRhYmxlLiAgQWxsIG90aGVyICBmdW5jdGlvbnMgIGFyZSAgYXMKICAgICAgICBkZXNjcmliZWQgYnkgWC9PcGVuLgpAQCAtMjk5LDU1ICszNTksMTAwIEBACiAgICAgICAgVGhpcyBpcyBub3QgcGFydCBvZiBYL09wZW4gQ3Vyc2VzLCBidXQgaXMgYXNzdW1lZCBieSAgc29tZQogICAgICAgIGFwcGxpY2F0aW9ucy4KIAotICAgICAgIEluICBTeXN0ZW0gViBSZWxlYXNlIDQsIDxTVFJPTkc+c2V0X2N1cnRlcm08L1NUUk9ORz4gaGFzIGFuIDxTVFJPTkc+aW50PC9TVFJPTkc+IHJldHVybiB0eXBlCi0gICAgICAgYW5kIHJldHVybnMgPFNUUk9ORz5PSzwvU1RST05HPiBvciA8U1RST05HPkVSUjwvU1RST05HPi4gIFdlIGhhdmUgY2hvc2VuICB0byAgaW1wbGVtZW50ICB0aGUKKyAgICAgICBJZiAgY29uZmlndXJlZCAgdG8gIHVzZSB0aGUgdGVybWluYWwtZHJpdmVyLCBlLmcuLCBmb3IgdGhlCisgICAgICAgTWluR1cgcG9ydCwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGludGVycHJldHMgYSBtaXNzaW5nL2VtcHR5IFRFUk0gdmFyaWFibGUgIGFzCisgICAgICAgICAgIHRoZSBzcGVjaWFsIHZhbHVlICJ1bmtub3duIi4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+ICBhbGxvd3MgZXhwbGljaXQgdXNlIG9mIHRoZSB0aGUgd2luZG93cyBjb24tCisgICAgICAgICAgIHNvbGUgZHJpdmVyIGJ5IGNoZWNraW5nIGlmICRURVJNIGlzIHNldCB0byAiI3dpbjMyY29uIgorICAgICAgICAgICBvciBhbiBhYmJyZXZpYXRpb24gb2YgdGhhdCBzdHJpbmcuCisKKyAgICAgICBPbGRlciB2ZXJzaW9ucyBvZiA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gYXNzdW1lZCB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICBwYXNzZWQgdG8gPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gZnJvbSA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gb3IgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+IHVzZXMgIGJ1ZmZlcmVkCisgICAgICAgSS9PLCAgYW5kIHdvdWxkIHdyaXRlIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbS4gIEluIGFkLQorICAgICAgIGRpdGlvbiB0byB0aGUgbGltaXRhdGlvbiB0aGF0IHRoZSAgdGVybWluYWwgIHdhcyAgbGVmdCAgaW4KKyAgICAgICBibG9jay1idWZmZXJlZCAgbW9kZSBvbiBleGl0IChsaWtlIFN5c3RlbVYgY3Vyc2VzKSwgaXQgd2FzCisgICAgICAgcHJvYmxlbWF0aWMgYmVjYXVzZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gZGlkIG5vdCBhbGxvdyBhICByZWxpYWJsZSAgd2F5CisgICAgICAgdG8gY2xlYW51cCBvbiByZWNlaXZpbmcgU0lHVFNUUC4gIFRoZSBjdXJyZW50IHZlcnNpb24gdXNlcworICAgICAgIG91dHB1dCBidWZmZXJzIG1hbmFnZWQgZGlyZWN0bHkgYnkgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+LiAgU29tZSAgb2YgIHRoZQorICAgICAgIGxvdy1sZXZlbCBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoaXMgbWFudWFsIHBhZ2Ugd3JpdGUgdG8KKyAgICAgICB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgVGhleSBhcmUgbm90IHNpZ25hbC1zYWZlLiAgVGhlIGhpZ2gtCisgICAgICAgbGV2ZWwgZnVuY3Rpb25zIGluIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB1c2UgYWx0ZXJuYXRlIHZlcnNpb25zIG9mIHRoZXNlCisgICAgICAgZnVuY3Rpb25zIHVzaW5nIHRoZSBtb3JlIHJlbGlhYmxlIGJ1ZmZlcmluZyBzY2hlbWUuCisKKyAgICAgICBJbiBTeXN0ZW0gViBSZWxlYXNlIDQsIDxTVFJPTkc+c2V0X2N1cnRlcm08L1NUUk9ORz4gaGFzIGFuIDxTVFJPTkc+aW50PC9TVFJPTkc+IHJldHVybiAgdHlwZQorICAgICAgIGFuZCAgcmV0dXJucyAgPFNUUk9ORz5PSzwvU1RST05HPiAgb3IgPFNUUk9ORz5FUlI8L1NUUk9ORz4uICBXZSBoYXZlIGNob3NlbiB0byBpbXBsZW1lbnQgdGhlCiAgICAgICAgWC9PcGVuIEN1cnNlcyBzZW1hbnRpY3MuCiAKICAgICAgICBJbiBTeXN0ZW0gViBSZWxlYXNlIDQsIHRoZSB0aGlyZCBhcmd1bWVudCBvZiA8U1RST05HPnRwdXRzPC9TVFJPTkc+IGhhcyB0aGUKICAgICAgICB0eXBlIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+KCpwdXRjKShjaGFyKTwvU1RST05HPi4KIAogICAgICAgIEF0IGxlYXN0IG9uZSBpbXBsZW1lbnRhdGlvbiBvZiBYL09wZW4gQ3Vyc2VzIChTb2xhcmlzKSByZS0KLSAgICAgICB0dXJucyAgYSB2YWx1ZSBvdGhlciB0aGFuIE9LL0VSUiBmcm9tIDxTVFJPTkc+dHB1dHM8L1NUUk9ORz4uICBUaGF0IHJldHVybnMKKyAgICAgICB0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gT0svRVJSIGZyb20gPFNUUk9ORz50cHV0czwvU1RST05HPi4gIFRoYXQgIHJldHVybnMKICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIGFuZCBkb2VzIG5vIGVycm9yLWNoZWNraW5nLgogCi0gICAgICAgWC9PcGVuIEN1cnNlcyBwcm90b3R5cGVzIDxTVFJPTkc+dHBhcm08L1NUUk9ORz4gd2l0aCBhIGZpeGVkIG51bWJlciBvZiAgcGEtCi0gICAgICAgcmFtZXRlcnMsICByYXRoZXIgdGhhbiBhIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QuICBUaGlzIGltLQotICAgICAgIHBsZW1lbnRhdGlvbiB1c2VzIGEgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gIFBvcnRhYmxlICBhcC0KKyAgICAgICBYL09wZW4gIEN1cnNlcyBwcm90b3R5cGVzIDxTVFJPTkc+dHBhcm08L1NUUk9ORz4gd2l0aCBhIGZpeGVkIG51bWJlciBvZiBwYS0KKyAgICAgICByYW1ldGVycywgcmF0aGVyIHRoYW4gYSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LiAgVGhpcyAgaW0tCisgICAgICAgcGxlbWVudGF0aW9uICB1c2VzICBhICB2YXJpYWJsZSAgYXJndW1lbnQgbGlzdCwgYnV0IGNhbiBiZQorICAgICAgIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4gIFBvcnRhYmxlICBhcC0KICAgICAgICBwbGljYXRpb25zICBzaG91bGQgIHByb3ZpZGUgOSBwYXJhbWV0ZXJzIGFmdGVyIHRoZSBmb3JtYXQ7CiAgICAgICAgemVyb2VzIGFyZSBmaW5lIGZvciB0aGlzIHB1cnBvc2UuCiAKLSAgICAgICBYL09wZW4gbm90ZXMgdGhhdCBhZnRlciBjYWxsaW5nIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4sICB0aGUgIGN1cnNlcyAgc3RhdGUKLSAgICAgICBtYXkgIG5vdCAgbWF0Y2ggdGhlIGFjdHVhbCB0ZXJtaW5hbCBzdGF0ZSwgYW5kIHRoYXQgYW4gYXAtCi0gICAgICAgcGxpY2F0aW9uIHNob3VsZCB0b3VjaCBhbmQgcmVmcmVzaCB0aGUgd2luZG93ICBiZWZvcmUgIHJlLQotICAgICAgIHN1bWluZyBub3JtYWwgY3Vyc2VzIGNhbGxzLiAgQm90aCBuY3Vyc2VzIGFuZCBTeXN0ZW0gViBSZS0KKyAgICAgICBJbiByZXNwb25zZSB0byBjb21tZW50cyBieSBUaG9tYXMgRS4gRGlja2V5LCBYL09wZW4gQ3Vyc2VzCisgICAgICAgSXNzdWUgNyBwcm9wb3NlZCB0aGUgPFNUUk9ORz50aXBhcm08L1NUUk9ORz4gZnVuY3Rpb24gaW4gbWlkLTIwMDkuCisKKyAgICAgICBYL09wZW4gIG5vdGVzICB0aGF0ICBhZnRlciBjYWxsaW5nIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4sIHRoZSBjdXJzZXMgc3RhdGUKKyAgICAgICBtYXkgbm90IG1hdGNoIHRoZSBhY3R1YWwgdGVybWluYWwgc3RhdGUsIGFuZCB0aGF0ICBhbiAgYXAtCisgICAgICAgcGxpY2F0aW9uICBzaG91bGQgIHRvdWNoIGFuZCByZWZyZXNoIHRoZSB3aW5kb3cgYmVmb3JlIHJlLQorICAgICAgIHN1bWluZyBub3JtYWwgY3Vyc2VzIGNhbGxzLiAgQm90aCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gYW5kIFN5c3RlbSBWIFJlLQogICAgICAgIGxlYXNlIDQgY3Vyc2VzIGltcGxlbWVudCA8U1RST05HPm12Y3VyPC9TVFJPTkc+IHVzaW5nIHRoZSBTQ1JFRU4gZGF0YSBhbGxvLQogICAgICAgIGNhdGVkIGluIGVpdGhlciA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gb3IgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+LiAgU28gdGhvdWdoIGl0IGlzIGRvY3UtCi0gICAgICAgbWVudGVkIGFzIGEgdGVybWluZm8gZnVuY3Rpb24sIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4gaXMgIHJlYWxseSAgYSAgY3Vyc2VzCisgICAgICAgbWVudGVkICBhcyAgYSAgdGVybWluZm8gZnVuY3Rpb24sIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4gaXMgcmVhbGx5IGEgY3Vyc2VzCiAgICAgICAgZnVuY3Rpb24gd2hpY2ggaXMgbm90IHdlbGwgc3BlY2lmaWVkLgogCi0gICAgICAgWC9PcGVuICBzdGF0ZXMgIHRoYXQgIHRoZSAgb2xkICBsb2NhdGlvbiBtdXN0IGJlIGdpdmVuIGZvcgotICAgICAgIDxTVFJPTkc+bXZjdXI8L1NUUk9ORz4uICBUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyB0aGUgY2FsbGVyIHRvIHVzZSAgLTEncwotICAgICAgIGZvciAgdGhlIG9sZCBvcmRpbmF0ZXMuICBJbiB0aGF0IGNhc2UsIHRoZSBvbGQgbG9jYXRpb24gaXMKKyAgICAgICBYL09wZW4gc3RhdGVzIHRoYXQgdGhlIG9sZCAgbG9jYXRpb24gIG11c3QgIGJlICBnaXZlbiAgZm9yCisgICAgICAgPFNUUk9ORz5tdmN1cjwvU1RST05HPi4gICBUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyB0aGUgY2FsbGVyIHRvIHVzZSAtMSdzCisgICAgICAgZm9yIHRoZSBvbGQgb3JkaW5hdGVzLiAgSW4gdGhhdCBjYXNlLCB0aGUgb2xkIGxvY2F0aW9uICBpcwogICAgICAgIHVua25vd24uCiAKLSAgICAgICBFeHRlbmRlZCB0ZXJtaW5hbCBjYXBhYmlsaXR5IG5hbWVzLCBlLmcuLCAgYXMgIGRlZmluZWQgIGJ5Ci0gICAgICAgPFNUUk9ORz50aWM8L1NUUk9ORz4gPFNUUk9ORz4teDwvU1RST05HPiwgIGFyZSAgbm90ICBzdG9yZWQgIGluIHRoZSBhcnJheXMgZGVzY3JpYmVkIGluIHRoaXMKLSAgICAgICBzZWN0aW9uLgorICAgICAgIE90aGVyICBpbXBsZW1lbnRpb25zICBtYXkgIG5vdCBkZWNsYXJlIHRoZSBjYXBhYmlsaXR5IG5hbWUKKyAgICAgICBhcnJheXMuICBTb21lIHByb3ZpZGUgdGhlbSB3aXRob3V0IGRlY2xhcmluZyB0aGVtLiAgWC9PcGVuCisgICAgICAgZG9lcyBub3Qgc3BlY2lmeSB0aGVtLgorCisgICAgICAgRXh0ZW5kZWQgIHRlcm1pbmFsICBjYXBhYmlsaXR5ICBuYW1lcywgZS5nLiwgYXMgZGVmaW5lZCBieQorICAgICAgIDxTVFJPTkc+dGljPC9TVFJPTkc+IDxTVFJPTkc+LXg8L1NUUk9ORz4sIGFyZSBub3Qgc3RvcmVkIGluIHRoZSBhcnJheXMgZGVzY3JpYmVkIGhlcmUuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbml0c2NyLjN4Lmh0bWwiPmN1cnNfaW5pdHNjcigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPmN1cnNfdGVybS08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jYXAoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJwdXRjLjMuaHRtbCI+cHV0YygzKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jYXAoM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtX3ZhcmlhYmxlcy4zeC5odG1sIj50ZXJtX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPnB1dGMoMyk8L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLUluaXRpYWxpemF0aW9uIj5Jbml0aWFsaXphdGlvbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UaGUtVGVybWluYWwtU3RhdGUiPlRoZSBUZXJtaW5hbCBTdGF0ZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Gb3JtYXR0aW5nLU91dHB1dCI+Rm9ybWF0dGluZyBPdXRwdXQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtT3V0cHV0LUZ1bmN0aW9ucyI+T3V0cHV0IEZ1bmN0aW9uczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UZXJtaW5hbC1DYXBhYmlsaXR5LUZ1bmN0aW9ucyI+VGVybWluYWwgQ2FwYWJpbGl0eSBGdW5jdGlvbnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVGVybWluYWwtQ2FwYWJpbGl0eS1OYW1lcyI+VGVybWluYWwgQ2FwYWJpbGl0eSBOYW1lczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3RocmVhZHMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9jdXJzX3RocmVhZHMuM3guaHRtbAppbmRleCAyYTJmMGZkLi5lMzdkYTMyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc190aHJlYWRzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfdGhyZWFkcy4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwOC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMDkgKzI2LDExNSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc190aHJlYWRzLjN4LHYgMS4xMiAyMDA4LzA0LzEyIDE4OjIyOjUxIHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc190aHJlYWRzLjN4LHYgMS4yMSAyMDE1LzA0LzExIDEwOjIzOjQ5IHRvbSBFeHAgQAogICAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfdGhyZWFkcyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfdGhyZWFkcyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc190aHJlYWRzIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RocmVhZHMuM3guaHRtbCI+Y3Vyc190aHJlYWRzKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGhyZWFkcy4zeC5odG1sIj5jdXJzX3RocmVhZHMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+dXNlX3NjcmVlbjwvU1RST05HPiwgPFNUUk9ORz51c2Vfd2luZG93PC9TVFJPTkc+IC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gdGhyZWFkIHN1cHBvcnQKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKLSAgICAgICA8U1RST05HPnR5cGVkZWY8L1NUUk9ORz4gIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+KCpOQ1VSU0VTX1dJTkRPV19DQikoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kiw8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+Kik7PC9TVFJPTkc+IDxTVFJPTkc+dHlwZS08L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmRlZjwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPigqTkNVUlNFU19TQ1JFRU5fQ0IpKFNDUkVFTjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dHlwZWRlZjwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPigqTkNVUlNFU19XSU5ET1dfQ0IpKFdJTkRPVzwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dHlwZWRlZjwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPigqTkNVUlNFU19TQ1JFRU5fQ0IpKFNDUkVFTjwvU1RST05HPiA8U1RST05HPiosPC9TVFJPTkc+IDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPiopOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Z2V0X2VzY2RlbGF5KHZvaWQpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2V0X2VzY2RlbGF5KGludDwvU1RST05HPiA8U1RST05HPnNpemUpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+c2V0X3RhYnNpemUoaW50PC9TVFJPTkc+IDxTVFJPTkc+c2l6ZSk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz51c2Vfc2NyZWVuKFNDUkVFTjwvU1RST05HPiA8U1RST05HPipzY3IsPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19XSU5ET1dfQ0I8L1NUUk9ORz4gIDxTVFJPTkc+ZnVuYyw8L1NUUk9ORz4gIDxTVFJPTkc+dm9pZDwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+ICA8U1RST05HPnVzZV9zY3JlZW4oU0NSRUVOPC9TVFJPTkc+ICA8U1RST05HPipzY3IsPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19TQ1JFRU5fQ0I8L1NUUk9ORz4gPFNUUk9ORz5mdW5jLDwvU1RST05HPiA8U1RST05HPnZvaWQ8L1NUUk9ORz4KICAgICAgICA8U1RST05HPipkYXRhKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiAgPFNUUk9ORz51c2Vfd2luZG93KFdJTkRPVzwvU1RST05HPiAgPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPk5DVVJTRVNfU0NSRUVOX0NCPC9TVFJPTkc+IDxTVFJPTkc+ZnVuYyw8L1NUUk9ORz4gPFNUUk9ORz52b2lkPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz51c2Vfd2luZG93KFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+TkNVUlNFU19XSU5ET1dfQ0I8L1NUUk9ORz4gIDxTVFJPTkc+ZnVuYyw8L1NUUk9ORz4gIDxTVFJPTkc+dm9pZDwvU1RST05HPgogICAgICAgIDxTVFJPTkc+KmRhdGEpOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSAgcnVkaW1lbi0KLSAgICAgICB0YXJ5ICBzdXBwb3J0IGZvciBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMuICBUaGlzIG1ha2VzCi0gICAgICAgYSBkaWZmZXJlbnQgc2V0IG9mIGxpYnJhcmllcywgZS5nLiwgPEVNPmxpYm5jdXJzZXN0PC9FTT4gc2luY2UgIHRoZQorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgVGhpcyAgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSBydWRpbWVuLQorICAgICAgIHRhcnkgc3VwcG9ydCBmb3IgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLiAgVGhpcyAgbWFrZXMKKyAgICAgICBhICBkaWZmZXJlbnQgc2V0IG9mIGxpYnJhcmllcywgZS5nLiwgPEVNPmxpYm5jdXJzZXN0PC9FTT4gc2luY2UgdGhlCiAgICAgICAgYmluYXJ5IGludGVyZmFjZXMgYXJlIGRpZmZlcmVudC4KIAotICAgICAgIFJhdGhlciAgdGhhbiBtb2RpZnkgdGhlIGludGVyZmFjZXMgdG8gcGFzcyBhIHRocmVhZCBzcGVjaS0KLSAgICAgICBmaWVyIHRvIGVhY2ggZnVuY3Rpb24sIGl0IGFkZHMgYSBmZXcgZnVuY3Rpb25zICB3aGljaCAgY2FuCisgICAgICAgUmF0aGVyIHRoYW4gbW9kaWZ5IHRoZSBpbnRlcmZhY2VzIHRvIHBhc3MgYSB0aHJlYWQgIHNwZWNpLQorICAgICAgIGZpZXIgIHRvICBlYWNoIGZ1bmN0aW9uLCBpdCBhZGRzIGEgZmV3IGZ1bmN0aW9ucyB3aGljaCBjYW4KICAgICAgICBiZSB1c2VkIGluIGFueSBjb25maWd1cmF0aW9uIHdoaWNoIGhpZGUgdGhlIG11dGV4J3MgbmVlZGVkCi0gICAgICAgdG8gcHJldmVudCBjb25jdXJyZW50IHVzZSBvZiAgdGhlICBnbG9iYWwgIHZhcmlhYmxlcyAgd2hlbgorICAgICAgIHRvICBwcmV2ZW50ICBjb25jdXJyZW50ICB1c2UgIG9mIHRoZSBnbG9iYWwgdmFyaWFibGVzIHdoZW4KICAgICAgICBjb25maWd1cmVkIGZvciB0aHJlYWRpbmcuCiAKLSAgICAgICBJbiAgYWRkaXRpb24gIHRvICBmb3JjaW5nICBhY2Nlc3MgdG8gbWVtYmVycyBvZiB0aGUgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4KLSAgICAgICBzdHJ1Y3R1cmUgdG8gYmUgdmlhIGZ1bmN0aW9ucyAgKHNlZSAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KSwgIGl0CisgICAgICAgSW4gYWRkaXRpb24gdG8gZm9yY2luZyBhY2Nlc3MgdG8gIG1lbWJlcnMgIG9mICB0aGUgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+CisgICAgICAgc3RydWN0dXJlICB0byAgYmUgIHZpYSBmdW5jdGlvbnMgKHNlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4pLCBpdAogICAgICAgIG1ha2VzIGZ1bmN0aW9ucyBvZiB0aGUgY29tbW9uIGdsb2JhbCB2YXJpYWJsZXMsIGUuZy4sIENPTC0KLSAgICAgICBPUlMsIENPTE9SX1BBSVJTLCBDT0xTLCBFU0NERUxBWSwgTElORVMsICBUQUJTSVpFICBjdXJzY3IsCi0gICAgICAgbmV3c2NyICBhbmQgIHR0eXR5cGUuICAgVGhvc2UgIHZhcmlhYmxlcyBhcmUgbWFpbnRhaW5lZCBhcworICAgICAgIE9SUywgIENPTE9SX1BBSVJTLCAgQ09MUywgRVNDREVMQVksIExJTkVTLCBUQUJTSVpFIGN1cnNjciwKKyAgICAgICBuZXdzY3IgYW5kIHR0eXR5cGUuICBUaG9zZSAgdmFyaWFibGVzICBhcmUgIG1haW50YWluZWQgIGFzCiAgICAgICAgcmVhZC1vbmx5IHZhbHVlcywgc3RvcmVkIGluIHRoZSA8U1RST05HPlNDUkVFTjwvU1RST05HPiBzdHJ1Y3R1cmUuCiAKLSAgICAgICBFdmVuIHRoaXMgaXMgbm90IGVub3VnaCB0byBtYWtlIGEgdGhyZWFkLXNhZmUgIGFwcGxpY2F0aW9uCi0gICAgICAgdXNpbmcgIGN1cnNlcy4gICBBIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9uIHdvdWxkIGJlIGV4LQotICAgICAgIHBlY3RlZCB0byBoYXZlIHRocmVhZHMgdXBkYXRpbmcgc2VwYXJhdGUgIHdpbmRvd3MgICh3aXRoaW4KKyAgICAgICBFdmVuICB0aGlzIGlzIG5vdCBlbm91Z2ggdG8gbWFrZSBhIHRocmVhZC1zYWZlIGFwcGxpY2F0aW9uCisgICAgICAgdXNpbmcgY3Vyc2VzLiAgQSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbiB3b3VsZCAgYmUgIGV4LQorICAgICAgIHBlY3RlZCAgdG8gIGhhdmUgdGhyZWFkcyB1cGRhdGluZyBzZXBhcmF0ZSB3aW5kb3dzICh3aXRoaW4KICAgICAgICB0aGUgc2FtZSBkZXZpY2UpLCBvciB1cGRhdGluZyBvbiBzZXBhcmF0ZSBzY3JlZW5zIChvbiBkaWYtCi0gICAgICAgZmVyZW50IGRldmljZXMpLiAgQWxzbywgYSBmZXcgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZXMgIGFyZQotICAgICAgIGNvbnNpZGVyZWQgIHdyaXRhYmxlICBieSBzb21lIGFwcGxpY2F0aW9ucy4gIFRoZSBmdW5jdGlvbnMKKyAgICAgICBmZXJlbnQgIGRldmljZXMpLiAgQWxzbywgYSBmZXcgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZXMgYXJlCisgICAgICAgY29uc2lkZXJlZCB3cml0YWJsZSBieSBzb21lIGFwcGxpY2F0aW9ucy4gICBUaGUgIGZ1bmN0aW9ucwogICAgICAgIGRlc2NyaWJlZCBoZXJlIGFkZHJlc3MgdGhlc2Ugc3BlY2lhbCBzaXR1YXRpb25zLgogCi0gICAgICAgVGhlIEVTQ0RFTEFZIGFuZCBUQUJTSVpFIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG1vZGlmaWVkICBieQotICAgICAgIHNvbWUgIGFwcGxpY2F0aW9ucy4gICBUbyBtb2RpZnkgdGhlbSBpbiBhbnkgY29uZmlndXJhdGlvbiwKLSAgICAgICB1c2UgdGhlICA8U1RST05HPnNldF9lc2NkZWxheTwvU1RST05HPiAgb3IgIDxTVFJPTkc+c2V0X3RhYnNpemU8L1NUUk9ORz4gIGZ1bmN0aW9ucy4gICBPdGhlcgorICAgICAgIFRoZSAgRVNDREVMQVkgYW5kIFRBQlNJWkUgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbW9kaWZpZWQgYnkKKyAgICAgICBzb21lIGFwcGxpY2F0aW9ucy4gIFRvIG1vZGlmeSB0aGVtIGluICBhbnkgIGNvbmZpZ3VyYXRpb24sCisgICAgICAgdXNlICB0aGUgIDxTVFJPTkc+c2V0X2VzY2RlbGF5PC9TVFJPTkc+ICBvciAgPFNUUk9ORz5zZXRfdGFic2l6ZTwvU1RST05HPiAgZnVuY3Rpb25zLiAgT3RoZXIKICAgICAgICBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3QgbW9kaWZpYWJsZS4KIAotICAgICAgIFRoZSAgPFNUUk9ORz51c2Vfd2luZG93PC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+dXNlX3NjcmVlbjwvU1RST05HPiAgZnVuY3Rpb25zIHByb3ZpZGUgY29hcnNlCisgICAgICAgVGhlIDxTVFJPTkc+Z2V0X2VzY2RlbGF5PC9TVFJPTkc+IGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIGZvciBFU0NERUxBWS4KKworICAgICAgIFRoZSA8U1RST05HPnVzZV93aW5kb3c8L1NUUk9ORz4gYW5kICA8U1RST05HPnVzZV9zY3JlZW48L1NUUk9ORz4gIGZ1bmN0aW9ucyAgcHJvdmlkZSAgY29hcnNlCiAgICAgICAgZ3JhbnVsYXJpdHkgbXV0ZXhlcyBmb3IgdGhlaXIgcmVzcGVjdGl2ZSA8U1RST05HPldJTkRPVzwvU1RST05HPiBhbmQgPFNUUk9ORz5TQ1JFRU48L1NUUk9ORz4KLSAgICAgICBwYXJhbWV0ZXJzLCAgYW5kIGNhbGwgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uLCBwYXNzaW5nIGl0Ci0gICAgICAgYSA8RU0+ZGF0YTwvRU0+IHBhcmFtZXRlciwgYW5kIHJldHVybmluZyB0aGUgdmFsdWUgZnJvbSAgdGhlICB1c2VyLQorICAgICAgIHBhcmFtZXRlcnMsIGFuZCBjYWxsIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiwgcGFzc2luZyAgaXQKKyAgICAgICBhICA8RU0+ZGF0YTwvRU0+ICBwYXJhbWV0ZXIsIGFuZCByZXR1cm5pbmcgdGhlIHZhbHVlIGZyb20gdGhlIHVzZXItCiAgICAgICAgc3VwcGxpZWQgZnVuY3Rpb24gdG8gdGhlIGFwcGxpY2F0aW9uLgogCi0gICA8U1RST05HPlVTQUdFPC9TVFJPTkc+Ci0gICAgICAgQWxsICBvZiAgdGhlIG5jdXJzZXMgbGlicmFyeSBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGxvLQotICAgICAgIGNhbGUgaXMgbm90IGFsdGVyZWQgZHVyaW5nIG9wZXJhdGlvbi4gIEluICBhZGRpdGlvbiwgIHRoZXkKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVVNBR0UiPlVTQUdFPC9hPjwvSDM+PFBSRT4KKyAgICAgICBBbGwgb2YgdGhlIG5jdXJzZXMgbGlicmFyeSBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgIHRoZSAgbG8tCisgICAgICAgY2FsZSAgaXMgIG5vdCBhbHRlcmVkIGR1cmluZyBvcGVyYXRpb24uICBJbiBhZGRpdGlvbiwgdGhleQogICAgICAgIHVzZSBkYXRhIHdoaWNoIGlzIG1haW50YWluZWQgd2l0aGluIGEgaGllcmFyY2h5IG9mIHNjb3Blcy4KIAotICAgICAgICAgICAgICAtICBnbG9iYWwgZGF0YSwgZS5nLiwgdXNlZCBpbiB0aGUgbG93LWxldmVsIHRlcm1pbi0KLSAgICAgICAgICAgICAgICAgZm8gb3IgdGVybWNhcCBpbnRlcmZhY2VzLgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGdsb2JhbCBkYXRhLCBlLmcuLCB1c2VkIGluIHRoZSAgbG93LWxldmVsICB0ZXJtaW5mbworICAgICAgICAgICAgICBvciB0ZXJtY2FwIGludGVyZmFjZXMuCiAKLSAgICAgICAgICAgICAgLSAgdGVybWluYWwgIGRhdGEsICBlLmcuLCBhc3NvY2lhdGVkIHdpdGggYSBjYWxsIHRvCi0gICAgICAgICAgICAgICAgIDxFTT5zZXQ8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5jdXJ0ZXJtPC9FTT4uICBUaGUgdGVybWluYWwgZGF0YSBhcmUgIGluaXRpYWxpemVkCi0gICAgICAgICAgICAgICAgIHdoZW4gc2NyZWVucyBhcmUgY3JlYXRlZC4KKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0ZXJtaW5hbCAgZGF0YSwgIGUuZy4sICBhc3NvY2lhdGVkICB3aXRoICBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgPEVNPnNldDwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmN1cnRlcm08L0VNPi4gIFRoZSAgdGVybWluYWwgIGRhdGEgIGFyZSAgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgICAgd2hlbiBzY3JlZW5zIGFyZSBjcmVhdGVkLgogCi0gICAgICAgICAgICAgIC0gIHNjcmVlbiAgZGF0YSwgIGUuZy4sICBhc3NvY2lhdGVkICB3aXRoIGEgY2FsbCB0bwotICAgICAgICAgICAgICAgICA8RU0+bmV3dGVybTwvRU0+IG9yIDxFTT5pbml0c2NyPC9FTT4uCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgc2NyZWVuICBkYXRhLCAgZS5nLiwgIGFzc29jaWF0ZWQgIHdpdGggIGEgIGNhbGwgIHRvCisgICAgICAgICAgICAgIDxFTT5uZXd0ZXJtPC9FTT4gb3IgPEVNPmluaXRzY3I8L0VNPi4KIAotICAgICAgICAgICAgICAtICB3aW5kb3cgZGF0YSwgZS5nLiwgYXNzb2NpYXRlZCAgd2l0aCAgYSAgY2FsbCAgdG8KLSAgICAgICAgICAgICAgICAgPEVNPm5ld3dpbjwvRU0+ICBvciAgPEVNPnN1YndpbjwvRU0+LiAgV2luZG93cyBhcmUgYXNzb2NpYXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgIHNjcmVlbnMuICBQYWRzIGFyZSAgbm90ICBuZWNlc3NhcmlseSAgYXNzb2NpYXRlZAotICAgICAgICAgICAgICAgICB3aXRoIGEgcGFydGljdWxhciBzY3JlZW4uCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgd2luZG93IGRhdGEsIGUuZy4sIGFzc29jaWF0ZWQgd2l0aCBhIGNhbGwgdG8gPEVNPm5ld3dpbjwvRU0+CisgICAgICAgICAgICAgIG9yICA8RU0+c3Vid2luPC9FTT4uICAgV2luZG93cyAgYXJlIGFzc29jaWF0ZWQgd2l0aCBzY3JlZW5zLgorICAgICAgICAgICAgICBQYWRzIGFyZSBub3QgbmVjZXNzYXJpbHkgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdS0KKyAgICAgICAgICAgICAgbGFyIHNjcmVlbi4KIAotICAgICAgICAgICAgICAgICBNb3N0ICBjdXJzZXMgYXBwbGljYXRpb25zIG9wZXJhdGUgb24gb25lIG9yIG1vcmUKLSAgICAgICAgICAgICAgICAgd2luZG93cyB3aXRoaW4gYSBzaW5nbGUgc2NyZWVuLgorICAgICAgICAgICAgICBNb3N0ICBjdXJzZXMgIGFwcGxpY2F0aW9ucyAgb3BlcmF0ZSAgb24gb25lIG9yIG1vcmUKKyAgICAgICAgICAgICAgd2luZG93cyB3aXRoaW4gYSBzaW5nbGUgc2NyZWVuLgogCi0gICAgICAgICAgICAgIC0gIHJlZW50cmFudCwgaS5lLiwgaXQgdXNlcyBvbmx5IHRoZSBkYXRhIHBhc3NlZCBhcwotICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHJlZW50cmFudCwgaS5lLiwgaXQgdXNlcyBvbmx5IHRoZSAgZGF0YSAgcGFzc2VkICBhcworICAgICAgICAgICAgICBwYXJhbWV0ZXJzLgogCiAgICAgICAgVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2NvcGUgb2YgZGF0YSB1c2VkIGZvciBlYWNoIHN5bWJvbCBpbgogICAgICAgIHRoZSBuY3Vyc2VzIGxpYnJhcnkgIHdoZW4gIGl0ICBpcyAgY29uZmlndXJlZCAgdG8gIHN1cHBvcnQKQEAgLTE3OCwxMCArMTgzLDEwIEBACiAgICAgICBib29sZm5hbWVzICAgICAgICAgICAgICBnbG9iYWwgKHJlYWRvbmx5KQogICAgICAgYm9vbG5hbWVzICAgICAgICAgICAgICAgZ2xvYmFsIChyZWFkb25seSkKICAgICAgIGJvcmRlciAgICAgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQorCiAgICAgICBib3JkZXJfc2V0ICAgICAgICAgICAgICB3aW5kb3cgKHN0ZHNjcikKICAgICAgIGJveCAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQogICAgICAgYm94X3NldCAgICAgICAgICAgICAgICAgd2luZG93IChzdGRzY3IpCi0KICAgICAgIGNhbl9jaGFuZ2VfY29sb3IgICAgICAgIHRlcm1pbmFsCiAgICAgICBjYnJlYWsgICAgICAgICAgICAgICAgICBzY3JlZW4KICAgICAgIGNoZ2F0ICAgICAgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQpAQCAtMjQ1LDEwICsyNTAsMTAgQEAKICAgICAgIGhhc19rZXkgICAgICAgICAgICAgICAgIHNjcmVlbgogICAgICAgaGxpbmUgICAgICAgICAgICAgICAgICAgd2luZG93IChzdGRzY3IpCiAgICAgICBobGluZV9zZXQgICAgICAgICAgICAgICB3aW5kb3cgKHN0ZHNjcikKKwogICAgICAgaWRjb2sgICAgICAgICAgICAgICAgICAgd2luZG93CiAgICAgICBpZGxvayAgICAgICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIGltbWVkb2sgICAgICAgICAgICAgICAgIHdpbmRvdwotCiAgICAgICBpbl93Y2ggICAgICAgICAgICAgICAgICB3aW5kb3cgKHN0ZHNjcikKICAgICAgIGluX3djaG5zdHIgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQogICAgICAgaW5fd2Noc3RyICAgICAgICAgICAgICAgd2luZG93IChzdGRzY3IpCkBAIC0zMTIsMTAgKzMxNywxMCBAQAogICAgICAgbXZhZGRzdHIgICAgICAgICAgICAgICAgd2luZG93IChzdGRzY3IpCiAgICAgICBtdmFkZHdzdHIgICAgICAgICAgICAgICB3aW5kb3cgKHN0ZHNjcikKICAgICAgIG12Y2hnYXQgICAgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQorCiAgICAgICBtdmN1ciAgICAgICAgICAgICAgICAgICBzY3JlZW4KICAgICAgIG12ZGVsY2ggICAgICAgICAgICAgICAgIHdpbmRvdyAoc3Rkc2NyKQogICAgICAgbXZkZXJ3aW4gICAgICAgICAgICAgICAgd2luZG93IChzdGRzY3IpCi0KICAgICAgIG12Z2V0X3djaCAgICAgICAgICAgICAgIHNjcmVlbiAoaW5wdXQtb3BlcmF0aW9uKQogICAgICAgbXZnZXRfd3N0ciAgICAgICAgICAgICAgc2NyZWVuIChpbnB1dC1vcGVyYXRpb24pCiAgICAgICBtdmdldGNoICAgICAgICAgICAgICAgICBzY3JlZW4gKGlucHV0LW9wZXJhdGlvbikKQEAgLTM3OSwxMCArMzg0LDEwIEBACiAgICAgICBtdndpbnNjaCAgICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIG12d2luc25zdHIgICAgICAgICAgICAgIHdpbmRvdwogICAgICAgbXZ3aW5zc3RyICAgICAgICAgICAgICAgd2luZG93CisKICAgICAgIG12d2luc3RyICAgICAgICAgICAgICAgIHdpbmRvdwogICAgICAgbXZ3aW53c3RyICAgICAgICAgICAgICAgd2luZG93CiAgICAgICBtdndwcmludHcgICAgICAgICAgICAgICB3aW5kb3cKLQogICAgICAgbXZ3c2NhbncgICAgICAgICAgICAgICAgc2NyZWVuCiAgICAgICBtdnd2bGluZSAgICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIG12d3ZsaW5lX3NldCAgICAgICAgICAgIHdpbmRvdwpAQCAtNDQ2LDEwICs0NTEsMTAgQEAKICAgICAgIHNsa19hdHRyX29uICAgICAgICAgICAgIHNjcmVlbgogICAgICAgc2xrX2F0dHJfc2V0ICAgICAgICAgICAgc2NyZWVuCiAgICAgICBzbGtfYXR0cm9mZiAgICAgICAgICAgICBzY3JlZW4KKwogICAgICAgc2xrX2F0dHJvbiAgICAgICAgICAgICAgc2NyZWVuCiAgICAgICBzbGtfYXR0cnNldCAgICAgICAgICAgICBzY3JlZW4KICAgICAgIHNsa19jbGVhciAgICAgICAgICAgICAgIHNjcmVlbgotCiAgICAgICBzbGtfY29sb3IgICAgICAgICAgICAgICBzY3JlZW4KICAgICAgIHNsa19pbml0ICAgICAgICAgICAgICAgIHNjcmVlbgogICAgICAgc2xrX2xhYmVsICAgICAgICAgICAgICAgc2NyZWVuCkBAIC01MTMsMTAgKzUxOCwxMCBAQAogICAgICAgd2FkZF93Y2huc3RyICAgICAgICAgICAgd2luZG93CiAgICAgICB3YWRkX3djaHN0ciAgICAgICAgICAgICB3aW5kb3cKICAgICAgIHdhZGRjaCAgICAgICAgICAgICAgICAgIHdpbmRvdworCiAgICAgICB3YWRkY2huc3RyICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIHdhZGRjaHN0ciAgICAgICAgICAgICAgIHdpbmRvdwogICAgICAgd2FkZG5zdHIgICAgICAgICAgICAgICAgd2luZG93Ci0KICAgICAgIHdhZGRud3N0ciAgICAgICAgICAgICAgIHdpbmRvdwogICAgICAgd2FkZHN0ciAgICAgICAgICAgICAgICAgd2luZG93CiAgICAgICB3YWRkd3N0ciAgICAgICAgICAgICAgICB3aW5kb3cKQEAgLTU0OSw2ICs1NTQsNyBAQAogICAgICAgd2dldF93c3RyICAgICAgICAgICAgICAgc2NyZWVuIChpbnB1dC1vcGVyYXRpb24pCiAgICAgICB3Z2V0Ymtncm5kICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIHdnZXRjaCAgICAgICAgICAgICAgICAgIHNjcmVlbiAoaW5wdXQtb3BlcmF0aW9uKQorICAgICAgd2dldGRlbGF5ICAgICAgICAgICAgICAgd2luZG93CiAgICAgICB3Z2V0bl93c3RyICAgICAgICAgICAgICBzY3JlZW4gKGlucHV0LW9wZXJhdGlvbikKICAgICAgIHdnZXRuc3RyICAgICAgICAgICAgICAgIHNjcmVlbiAoaW5wdXQtb3BlcmF0aW9uKQogICAgICAgd2dldHBhcmVudCAgICAgICAgICAgICAgd2luZG93CkBAIC01NzksMTEgKzU4NSwxMSBAQAogICAgICAgd25vdXRyZWZyZXNoICAgICAgICAgICAgc2NyZWVuCiAgICAgICB3cHJpbnR3ICAgICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIHdyZWRyYXdsbiAgICAgICAgICAgICAgIHdpbmRvdworCiAgICAgICB3cmVmcmVzaCAgICAgICAgICAgICAgICBzY3JlZW4KICAgICAgIHdyZXNpemUgICAgICAgICAgICAgICAgIHdpbmRvdyBsb2Nrcyh3aW5kb3dsaXN0KQogICAgICAgd3NjYW53ICAgICAgICAgICAgICAgICAgc2NyZWVuCiAgICAgICB3c2NybCAgICAgICAgICAgICAgICAgICB3aW5kb3cKLQogICAgICAgd3NldHNjcnJlZyAgICAgICAgICAgICAgd2luZG93CiAgICAgICB3c3RhbmRlbmQgICAgICAgICAgICAgICB3aW5kb3cKICAgICAgIHdzdGFuZG91dCAgICAgICAgICAgICAgIHdpbmRvdwpAQCAtNTk3LDM1ICs2MDMsNDUgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgZnVuY3Rpb25zIGFsbCByZXR1cm4gVFJVRSBvciBGQUxTRSwgZXhjZXB0IGFzIG5vdGVkLgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSBmdW5jdGlvbnMgYWxsIHJldHVybiA8U1RST05HPlRSVUU8L1NUUk9ORz4gb3IgPFNUUk9ORz5GQUxTRTwvU1RST05HPiwgZXhjZXB0IGFzIG5vdGVkLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgQm90aCBhIG1hY3JvIGFuZCBhIGZ1bmN0aW9uIGFyZSBwcm92aWRlZCBmb3IgZWFjaCBuYW1lLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGFyZSBzcGVjaWZpYyB0byAgbmN1cnNlcy4gICBUaGV5ICB3ZXJlICBub3QKLSAgICAgICBzdXBwb3J0ZWQgIG9uICBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCi0gICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gIG5jdXJzZXMgIGV4LQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIHJvdXRpbmVzICBhcmUgIHNwZWNpZmljICB0byBuY3Vyc2VzLiAgVGhleSB3ZXJlIG5vdAorICAgICAgIHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gIFYgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICBJdCAgaXMgIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIG5jdXJzZXMgZXgtCiAgICAgICAgdGVuc2lvbnMgYmUgY29uZGl0aW9uZWQgdXNpbmcgTkNVUlNFU19WRVJTSU9OLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5jdXJzX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190aHJlYWRzLjN4Lmh0bWwiPmN1cnNfdGhyZWFkcygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtVVNBR0UiPlVTQUdFPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc190b3VjaC4zeC5odG1sCmluZGV4IDQyYzBmZTIuLjBiNDY0MmEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3RvdWNoLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfdG91Y2guM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAyMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzIgKzI2LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBjdXJzX3RvdWNoLjN4LHYgMS4xMSAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc190b3VjaC4zeCx2IDEuMTUgMjAxNS8wNC8xMSAxMDoyMzo0OSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3RvdWNoIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Y3Vyc190b3VjaCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc190b3VjaCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190b3VjaC4zeC5odG1sIj5jdXJzX3RvdWNoKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2goM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+dG91Y2h3aW48L1NUUk9ORz4sIDxTVFJPTkc+dG91Y2hsaW5lPC9TVFJPTkc+LCA8U1RST05HPnVudG91Y2h3aW48L1NUUk9ORz4sIDxTVFJPTkc+d3RvdWNobG48L1NUUk9ORz4sIDxTVFJPTkc+aXNfbGluZXRvdWNoZWQ8L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz5pc193aW50b3VjaGVkPC9TVFJPTkc+IC0gPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcmVmcmVzaCBjb250cm9sIHJvdXRpbmVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+dG91Y2h3aW4oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbik7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz50b3VjaGxpbmUoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5zdGFydCw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5jb3VudCk7PC9TVFJPTkc+CkBAIC02Myw3ICs2Myw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz50b3VjaHdpbjwvU1RST05HPiBhbmQgPFNUUk9ORz50b3VjaGxpbmU8L1NUUk9ORz4gcm91dGluZXMgdGhyb3cgYXdheSAgYWxsICBvcHRpLQogICAgICAgIG1pemF0aW9uICBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBwYXJ0cyBvZiB0aGUgd2luZG93IGhhdmUKICAgICAgICBiZWVuIHRvdWNoZWQsIGJ5IHByZXRlbmRpbmcgdGhhdCAgdGhlICBlbnRpcmUgIHdpbmRvdyAgaGFzCkBAIC03OSw2NiArNzksNzIgQEAKIAogICAgICAgIFRoZSA8U1RST05HPnd0b3VjaGxuPC9TVFJPTkc+IHJvdXRpbmUgbWFrZXMgPEVNPm48L0VNPiBsaW5lcyBpbiB0aGUgd2luZG93LCBzdGFydGluZwogICAgICAgIGF0IGxpbmUgPEVNPnk8L0VNPiwgbG9vayBhcyBpZiB0aGV5IGhhdmUgKDxFTT5jaGFuZ2VkPC9FTT48U1RST05HPj0xPC9TVFJPTkc+KSAgb3IgIGhhdmUgIG5vdAotICAgICAgICg8RU0+Y2hhbmdlZDwvRU0+PFNUUk9ORz49MDwvU1RST05HPikgIGJlZW4gY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4uCisgICAgICAgKDxFTT5jaGFuZ2VkPC9FTT48U1RST05HPj0wPC9TVFJPTkc+KSBiZWVuIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0byA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+LgogCi0gICAgICAgVGhlIDxTVFJPTkc+aXNfbGluZXRvdWNoZWQ8L1NUUk9ORz4gYW5kIDxTVFJPTkc+aXNfd2ludG91Y2hlZDwvU1RST05HPiByb3V0aW5lcyByZXR1cm4gIDxTVFJPTkc+VFJVRTwvU1RST05HPgotICAgICAgIGlmICB0aGUgIHNwZWNpZmllZCBsaW5lL3dpbmRvdyB3YXMgbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QKLSAgICAgICBjYWxsIHRvIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz47IG90aGVyd2lzZSB0aGV5IHJldHVybiA8U1RST05HPkZBTFNFPC9TVFJPTkc+LiAgIEluICBhZGRpLQotICAgICAgIHRpb24sICA8U1RST05HPmlzX2xpbmV0b3VjaGVkPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaWYgPEVNPmxpbmU8L0VNPiBpcyBub3QgdmFsaWQgZm9yCisgICAgICAgVGhlICA8U1RST05HPmlzX2xpbmV0b3VjaGVkPC9TVFJPTkc+IGFuZCA8U1RST05HPmlzX3dpbnRvdWNoZWQ8L1NUUk9ORz4gcm91dGluZXMgcmV0dXJuIDxTVFJPTkc+VFJVRTwvU1RST05HPgorICAgICAgIGlmIHRoZSBzcGVjaWZpZWQgbGluZS93aW5kb3cgd2FzIG1vZGlmaWVkIHNpbmNlICB0aGUgIGxhc3QKKyAgICAgICBjYWxsICB0byAgPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPjsgb3RoZXJ3aXNlIHRoZXkgcmV0dXJuIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4uICBJbiBhZGRpLQorICAgICAgIHRpb24sIDxTVFJPTkc+aXNfbGluZXRvdWNoZWQ8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPkVSUjwvU1RST05HPiBpZiA8RU0+bGluZTwvRU0+IGlzIG5vdCB2YWxpZCAgZm9yCiAgICAgICAgdGhlIGdpdmVuIHdpbmRvdy4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uICBmYWlsdXJlICBhbmQgIGFuCi0gICAgICAgaW50ZWdlciAgdmFsdWUgIG90aGVyIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sCi0gICAgICAgdW5sZXNzIG90aGVyd2lzZSBub3RlZCBpbiB0aGUgcHJlY2VkaW5nICByb3V0aW5lICBkZXNjcmlwLQorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBBbGwgIHJvdXRpbmVzICByZXR1cm4gIHRoZSBpbnRlZ2VyIDxTVFJPTkc+RVJSPC9TVFJPTkc+IHVwb24gZmFpbHVyZSBhbmQgYW4KKyAgICAgICBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiAgc3VjY2Vzc2Z1bCAgY29tcGxldGlvbiwKKyAgICAgICB1bmxlc3MgIG90aGVyd2lzZSAgbm90ZWQgaW4gdGhlIHByZWNlZGluZyByb3V0aW5lIGRlc2NyaXAtCiAgICAgICAgdGlvbnMuCiAKLSAgICAgICBYL09wZW4gIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4gIEluIHRoaXMgaW0tCisgICAgICAgWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4gIEluIHRoaXMgIGltLQogICAgICAgIHBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+aXNfbGluZXRvdWNoZWQ8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yICBpZiAgdGhlICB3aW5kb3cgIHBvaW50ZXIgIGlzCi0gICAgICAgICAgICAgICAgICAgbnVsbCwgIG9yICBpZiAgdGhlICBsaW5lIG51bWJlciBpcyBvdXRzaWRlIHRoZQotICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gIE5vdGUgdGhhdCBFUlIgaXMgZGlzdGluY3QgIGZyb20gIFRSVUUKLSAgICAgICAgICAgICAgICAgICBhbmQgIEZBTFNFLCB3aGljaCBhcmUgdGhlIG5vcm1hbCByZXR1cm4gdmFsdWVzCisgICAgICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gIGVycm9yICBpZiAgdGhlICB3aW5kb3cgcG9pbnRlciBpcworICAgICAgICAgICAgICAgICAgIG51bGwsIG9yIGlmIHRoZSBsaW5lICBudW1iZXIgIGlzICBvdXRzaWRlICB0aGUKKyAgICAgICAgICAgICAgICAgICB3aW5kb3cuICAgTm90ZSAgdGhhdCBFUlIgaXMgZGlzdGluY3QgZnJvbSA8U1RST05HPlRSVUU8L1NUUk9ORz4KKyAgICAgICAgICAgICAgICAgICBhbmQgPFNUUk9ORz5GQUxTRTwvU1RST05HPiwgd2hpY2ggYXJlIHRoZSBub3JtYWwgcmV0dXJuICB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICBvZiB0aGlzIGZ1bmN0aW9uLgogCiAgICAgICAgICAgICAgIDxTVFJPTkc+d3RvdWNobG48L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yICBpZiAgdGhlICB3aW5kb3cgIHBvaW50ZXIgIGlzCi0gICAgICAgICAgICAgICAgICAgbnVsbCwgIG9yICBpZiAgdGhlICBsaW5lIG51bWJlciBpcyBvdXRzaWRlIHRoZQorICAgICAgICAgICAgICAgICAgIHJldHVybnMgIGFuICBlcnJvciAgaWYgIHRoZSAgd2luZG93IHBvaW50ZXIgaXMKKyAgICAgICAgICAgICAgICAgICBudWxsLCBvciBpZiB0aGUgbGluZSAgbnVtYmVyICBpcyAgb3V0c2lkZSAgdGhlCiAgICAgICAgICAgICAgICAgICAgd2luZG93LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSAgNCAgZGVzY3JpYmVzICB0aGVzZSAgZnVuYy0KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSAgWFNJICBDdXJzZXMgIHN0YW5kYXJkLCAgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuYy0KICAgICAgICB0aW9ucy4KIAotICAgICAgIFNvbWUgIGhpc3RvcmljICBjdXJzZXMgIGltcGxlbWVudGF0aW9ucyBoYWQsIGFzIGFuIHVuZG9jdS0KLSAgICAgICBtZW50ZWQgZmVhdHVyZSwgIHRoZSAgYWJpbGl0eSAgdG8gIGRvICB0aGUgIGVxdWl2YWxlbnQgIG9mCi0gICAgICAgPFNUUk9ORz5jbGVhcm9rKC4uLiw8L1NUUk9ORz4gIDxTVFJPTkc+MSk8L1NUUk9ORz4gIGJ5IHNheWluZyA8U1RST05HPnRvdWNod2luKHN0ZHNjcik8L1NUUk9ORz4gb3IgPFNUUk9ORz5jbGVhcihzdGQtPC9TVFJPTkc+CisgICAgICAgU29tZSBoaXN0b3JpYyBjdXJzZXMgaW1wbGVtZW50YXRpb25zIGhhZCwgIGFzICBhbiAgdW5kb2N1LQorICAgICAgIG1lbnRlZCAgZmVhdHVyZSwgIHRoZSAgYWJpbGl0eSAgdG8gIGRvICB0aGUgIGVxdWl2YWxlbnQgb2YKKyAgICAgICA8U1RST05HPmNsZWFyb2soLi4uLDwvU1RST05HPiA8U1RST05HPjEpPC9TVFJPTkc+IGJ5IHNheWluZyA8U1RST05HPnRvdWNod2luKHN0ZHNjcik8L1NUUk9ORz4gIG9yICA8U1RST05HPmNsZWFyKHN0ZC08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnNjcik8L1NUUk9ORz4uICBUaGlzIHdpbGwgbm90IHdvcmsgdW5kZXIgbmN1cnNlcy4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IDxTVFJPTkc+d3RvdWNobG48L1NUUk9ORz4gbWF5IGJlIG1hY3Jvcy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+LgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5jdXJzX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2goM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3RyYWNlLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc190cmFjZS4zeC5odG1sCmluZGV4IGYyNGE4YzguLmU0ZDExMjkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9jdXJzX3RyYWNlLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2N1cnNfdHJhY2UuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDUsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTQ5ICsyNiwxNzkgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGN1cnNfdHJhY2UuM3gsdiAxLjggMjAwNy8wMi8yNCAxNzozMzo0OSB0b20gRXhwIEAKKyAgKiBASWQ6IGN1cnNfdHJhY2UuM3gsdiAxLjEzIDIwMTUvMDcvMjAgMjI6NTQ6NDQgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Y3Vyc190cmFjZSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfdHJhY2UgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfdHJhY2UgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImN1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPl90cmFjZWY8L1NUUk9ORz4sIDxTVFJPTkc+X3RyYWNlZHVtcDwvU1RST05HPiwgPFNUUk9ORz5fdHJhY2VhdHRyPC9TVFJPTkc+LCA8U1RST05HPl90cmFjZWF0dHIyPC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+X25jX3RyYWNlYml0czwvU1RST05HPiwgPFNUUk9ORz5fdHJhY2VjaGFyPC9TVFJPTkc+LCA8U1RST05HPl90cmFjZWNodHlwZTwvU1RST05HPiwgPFNUUk9ORz5fdHJhY2VjaHR5cGUyPC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+X3RyYWNlbW91c2U8L1NUUk9ORz4sIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gLSA8U1RST05HPmN1cnNlczwvU1RST05HPiBkZWJ1Z2dpbmcgcm91dGluZXMKKyAgICAgICA8U1RST05HPl9uY190cmFjZWJpdHM8L1NUUk9ORz4sIDxTVFJPTkc+X3RyYWNlY2NoYXJfdDwvU1RST05HPiwgPFNUUk9ORz5fdHJhY2VjY2hhcl90MjwvU1RST05HPiwgPFNUUk9ORz5fdHJhY2VjaGFyPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+X3RyYWNlY2h0eXBlPC9TVFJPTkc+LCA8U1RST05HPl90cmFjZWNodHlwZTI8L1NUUk9ORz4sIDxTVFJPTkc+X3RyYWNlbW91c2U8L1NUUk9ORz4sIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gLSA8U1RST05HPmN1cnNlczwvU1RST05HPgorICAgICAgIGRlYnVnZ2luZyByb3V0aW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAotICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPl90cmFjZWYoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmZvcm1hdCw8L1NUUk9ORz4gPFNUUk9ORz4uLi4pOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPl90cmFjZWR1bXAoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmxhYmVsLDwvU1RST05HPiA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4pOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VhdHRyKGF0dHJfdDwvU1RST05HPiA8U1RST05HPmF0dHIpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VhdHRyMihpbnQ8L1NUUk9ORz4gPFNUUk9ORz5idWZmZXIsPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+Y2gpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPl90cmFjZWYoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5mb3JtYXQ8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPi4uLik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+X3RyYWNlZHVtcChjb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPmxhYmVsPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VhdHRyKGF0dHJfdDwvU1RST05HPiA8RU0+YXR0cjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VhdHRyMihpbnQ8L1NUUk9ORz4gPEVNPmJ1ZmZlcjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+IDxFTT5jaDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfbmNfdHJhY2ViaXRzKHZvaWQpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VjaGFyKGludCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kl90cmFjZWNodHlwZShjaHR5cGU8L1NUUk9ORz4gPFNUUk9ORz5jaCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kl90cmFjZWNodHlwZTIoaW50PC9TVFJPTkc+IDxTVFJPTkc+YnVmZmVyLDwvU1RST05HPiA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPmNoKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qX3RyYWNlbW91c2UoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5NRVZFTlQ8L1NUUk9ORz4gPFNUUk9ORz4qZXZlbnQpOzwvU1RST05HPgotICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPnRyYWNlKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+dW5zaWduZWQ8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5wYXJhbSk7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPl90cmFjZWNjaGFyX3QoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5zdHJpbmc8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+X3RyYWNlY2NoYXJfdDIoaW50PC9TVFJPTkc+IDxFTT5idWZmZXI8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+c3RyaW5nPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kl90cmFjZWNoYXIoaW50PC9TVFJPTkc+IDxFTT5jaDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VjaHR5cGUoY2h0eXBlPC9TVFJPTkc+IDxFTT5jaDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPipfdHJhY2VjaHR5cGUyKGludDwvU1RST05HPiA8RU0+YnVmZmVyPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gPEVNPmNoPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+Kl90cmFjZW1vdXNlKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+TUVWRU5UPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5ldmVudDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPnRyYWNlKGNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+dW5zaWduZWQ8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnBhcmFtPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgVGhlICA8U1RST05HPnRyYWNlPC9TVFJPTkc+IHJvdXRpbmVzIGFyZSB1c2VkIGZvciBkZWJ1Z2dpbmcgdGhlIG5jdXJzZXMgbGktCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz50cmFjZTwvU1RST05HPiByb3V0aW5lcyBhcmUgdXNlZCBmb3IgZGVidWdnaW5nIHRoZSBuY3Vyc2VzICBsaS0KICAgICAgICBicmFyaWVzLCBhcyB3ZWxsIGFzIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgdGhlIG5jdXJzZXMgbGktCiAgICAgICAgYnJhcmllcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm9ybWFsbHkgYXZhaWxhYmxlIG9ubHkgd2l0aAotICAgICAgIHRoZSBkZWJ1Z2dpbmcgbGlicmFyeSA8RU0+bGlibmN1cnNlczwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmcuYTwvRU0+LCBidXQgbWF5IGJlICBjb21waWxlZAotICAgICAgIGludG8gIGFueSAgbW9kZWwgKHNoYXJlZCwgc3RhdGljLCBwcm9maWxlKSBieSBkZWZpbmluZyB0aGUKLSAgICAgICBzeW1ib2wgPFNUUk9ORz5UUkFDRTwvU1RST05HPi4KKyAgICAgICB0aGUgIGRlYnVnZ2luZyAgbGlicmFyeSAgZS5nLiwgIDxFTT5saWJuY3Vyc2VzPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+Zy5hPC9FTT4sIGJ1dCBtYXkgYmUKKyAgICAgICBjb21waWxlZCBpbnRvICBhbnkgIG1vZGVsICAoc2hhcmVkLCAgc3RhdGljLCAgcHJvZmlsZSkgIGJ5CisgICAgICAgZGVmaW5pbmcgIHRoZSAgc3ltYm9sIDxTVFJPTkc+VFJBQ0U8L1NUUk9ORz4uICBBZGRpdGlvbmFsbHksIHNvbWUgZnVuY3Rpb25zCisgICAgICAgYXJlIG9ubHkgYXZhaWxhYmxlIHdpdGggdGhlICB3aWRlLWNoYXJhY3RlciAgY29uZmlndXJhdGlvbgorICAgICAgIG9mIHRoZSBsaWJyYXJpZXMuCiAKLSAgICAgICBUaGUgcHJpbmNpcGFsIHBhcnRzIG9mIHRoaXMgaW50ZXJmYWNlIGFyZSB0aGUgIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gIHJvdS0KLSAgICAgICB0aW5lIHdoaWNoIHNlbGVjdGl2ZWx5IGVuYWJsZXMgZGlmZmVyZW50IHRyYWNpbmcgZmVhdHVyZXMsCi0gICAgICAgYW5kIHRoZSA8U1RST05HPl90cmFjZWY8L1NUUk9ORz4gcm91dGluZSB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGRhdGEgdG8gdGhlCi0gICAgICAgPEVNPnRyYWNlPC9FTT4gZmlsZS4KKyAgICAgICBUaGUgcHJpbmNpcGFsIHBhcnRzIG9mIHRoaXMgaW50ZXJmYWNlIGFyZQorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz50cmFjZTwvU1RST05HPiwgIHdoaWNoICBzZWxlY3RpdmVseSAgZW5hYmxlcyAgZGlmZmVyZW50IHRyYWNpbmcKKyAgICAgICAgICAgZmVhdHVyZXMsIGFuZAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5fdHJhY2VmPC9TVFJPTkc+LCB3aGljaCB3cml0ZXMgIGZvcm1hdHRlZCAgZGF0YSAgdG8gIHRoZSAgPEVNPnRyYWNlPC9FTT4KKyAgICAgICAgICAgZmlsZS4KIAogICAgICAgIENhbGxpbmcgIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gIHdpdGggIGEgIG5vbnplcm8gIHBhcmFtZXRlciBvcGVucyB0aGUgZmlsZQogICAgICAgIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZvciBvdXRwdXQuICBUaGUgIHBhcmFtZXRlcgogICAgICAgIGlzIGZvcm1lZCBieSBPUidpbmcgdmFsdWVzIGZyb20gdGhlIGxpc3Qgb2YgPFNUUk9ORz5UUkFDRV88L1NUUk9ORz48RU0+eHh4PC9FTT4gZGVmLQogICAgICAgIGluaXRpb25zIGluIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4gIFRoZXNlIGluY2x1ZGU6CiAKLSAgICAgICBUUkFDRV9ESVNBQkxFCisgICAgICAgPFNUUk9ORz5UUkFDRV9ESVNBQkxFPC9TVFJPTkc+CiAgICAgICAgICAgICB0dXJuIG9mZiB0cmFjaW5nLgogCi0gICAgICAgVFJBQ0VfVElNRVMKKyAgICAgICA8U1RST05HPlRSQUNFX1RJTUVTPC9TVFJPTkc+CiAgICAgICAgICAgICB0cmFjZSB1c2VyIGFuZCBzeXN0ZW0gdGltZXMgb2YgdXBkYXRlcy4KIAotICAgICAgIFRSQUNFX1RQVVRTCisgICAgICAgPFNUUk9ORz5UUkFDRV9UUFVUUzwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgdHB1dHMgY2FsbHMuCiAKLSAgICAgICBUUkFDRV9VUERBVEUKKyAgICAgICA8U1RST05HPlRSQUNFX1VQREFURTwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgdXBkYXRlIGFjdGlvbnMsIG9sZCAmYW1wOyBuZXcgc2NyZWVucy4KIAotICAgICAgIFRSQUNFX01PVkUKKyAgICAgICA8U1RST05HPlRSQUNFX01PVkU8L1NUUk9ORz4KICAgICAgICAgICAgIHRyYWNlIGN1cnNvciBtb3ZlbWVudCBhbmQgc2Nyb2xsaW5nLgogCi0gICAgICAgVFJBQ0VfQ0hBUlBVVAorICAgICAgIDxTVFJPTkc+VFJBQ0VfQ0hBUlBVVDwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgYWxsIGNoYXJhY3RlciBvdXRwdXRzLgogCi0gICAgICAgVFJBQ0VfT1JESU5BUlkKKyAgICAgICA8U1RST05HPlRSQUNFX09SRElOQVJZPC9TVFJPTkc+CiAgICAgICAgICAgICB0cmFjZSBhbGwgdXBkYXRlIGFjdGlvbnMuICBUaGUgIG9sZCAgYW5kICBuZXcgIHNjcmVlbgogICAgICAgICAgICAgY29udGVudHMgIGFyZSAgd3JpdHRlbiB0byB0aGUgdHJhY2UgZmlsZSBmb3IgZWFjaCByZS0KICAgICAgICAgICAgIGZyZXNoLgogCi0gICAgICAgVFJBQ0VfQ0FMTFMKKyAgICAgICA8U1RST05HPlRSQUNFX0NBTExTPC9TVFJPTkc+CiAgICAgICAgICAgICB0cmFjZSBhbGwgY3Vyc2VzIGNhbGxzLiAgVGhlIHBhcmFtZXRlcnMgZm9yIGVhY2ggY2FsbAogICAgICAgICAgICAgYXJlIHRyYWNlZCwgYXMgd2VsbCBhcyByZXR1cm4gdmFsdWVzLgogCi0gICAgICAgVFJBQ0VfVklSVFBVVAorICAgICAgIDxTVFJPTkc+VFJBQ0VfVklSVFBVVDwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgdmlydHVhbCBjaGFyYWN0ZXIgcHV0cywgaS5lLiwgY2FsbHMgdG8gPFNUUk9ORz5hZGRjaDwvU1RST05HPi4KIAotICAgICAgIFRSQUNFX0lFVkVOVAorICAgICAgIDxTVFJPTkc+VFJBQ0VfSUVWRU5UPC9TVFJPTkc+CiAgICAgICAgICAgICB0cmFjZSBsb3ctbGV2ZWwgaW5wdXQgcHJvY2Vzc2luZywgaW5jbHVkaW5nIHRpbWVvdXRzLgogCi0gICAgICAgVFJBQ0VfQklUUworICAgICAgIDxTVFJPTkc+VFJBQ0VfQklUUzwvU1RST05HPgogICAgICAgICAgICAgdHJhY2Ugc3RhdGUgb2YgVFRZIGNvbnRyb2wgYml0cy4KIAotICAgICAgIFRSQUNFX0lDQUxMUworICAgICAgIDxTVFJPTkc+VFJBQ0VfSUNBTExTPC9TVFJPTkc+CiAgICAgICAgICAgICB0cmFjZSBpbnRlcm5hbC9uZXN0ZWQgY2FsbHMuCiAKLSAgICAgICBUUkFDRV9DQ0FMTFMKKyAgICAgICA8U1RST05HPlRSQUNFX0NDQUxMUzwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgcGVyLWNoYXJhY3RlciBjYWxscy4KIAotICAgICAgIFRSQUNFX0RBVEFCQVNFCisgICAgICAgPFNUUk9ORz5UUkFDRV9EQVRBQkFTRTwvU1RST05HPgogICAgICAgICAgICAgdHJhY2UgcmVhZC93cml0ZSBvZiB0ZXJtaW5mby90ZXJtY2FwIGRhdGEuCiAKLSAgICAgICBUUkFDRV9BVFRSUworICAgICAgIDxTVFJPTkc+VFJBQ0VfQVRUUlM8L1NUUk9ORz4KICAgICAgICAgICAgIHRyYWNlIGNoYW5nZXMgdG8gdmlkZW8gYXR0cmlidXRlcyBhbmQgY29sb3JzLgogCi0gICAgICAgVFJBQ0VfTUFYSU1VTQotICAgICAgICAgICAgbWF4aW11bSB0cmFjZSBsZXZlbCwgIGVuYWJsZXMgIGFsbCAgb2YgIHRoZSAgc2VwYXJhdGUKKyAgICAgICA8U1RST05HPlRSQUNFX01BWElNVU08L1NUUk9ORz4KKyAgICAgICAgICAgIG1heGltdW0gIHRyYWNlICBsZXZlbCwgIGVuYWJsZXMgIGFsbCAgb2YgdGhlIHNlcGFyYXRlCiAgICAgICAgICAgICB0cmFjZSBmZWF0dXJlcy4KIAotICAgICAgIFNvbWUgIHRyYWNpbmcgIGZlYXR1cmVzIGFyZSBlbmFibGVkIHdoZW5ldmVyIHRoZSA8U1RST05HPnRyYWNlPC9TVFJPTkc+IHBhLQotICAgICAgIHJhbWV0ZXIgaXMgbm9uemVyby4gIFNvbWUgZmVhdHVyZXMgb3ZlcmxhcC4gIFRoZSAgc3BlY2lmaWMKKyAgICAgICBTb21lIHRyYWNpbmcgZmVhdHVyZXMgYXJlIGVuYWJsZWQgd2hlbmV2ZXIgdGhlICA8U1RST05HPnRyYWNlPC9TVFJPTkc+ICBwYS0KKyAgICAgICByYW1ldGVyICBpcyBub256ZXJvLiAgU29tZSBmZWF0dXJlcyBvdmVybGFwLiAgVGhlIHNwZWNpZmljCiAgICAgICAgbmFtZXMgYXJlIHVzZWQgYXMgYSBndWlkZWxpbmUuCiAKKyAgICAgICBUaGUgb3RoZXIgZnVuY3Rpb25zIGVpdGhlciByZXR1cm4gYSBwb2ludGVyIHRvICBhICBzdHJpbmctCisgICAgICAgYXJlYSAgKGFsbG9jYXRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiksIG9yIHJldHVybgorICAgICAgIG5vIHZhbHVlIChzdWNoIGFzIDxTVFJPTkc+X3RyYWNlZHVtcDwvU1RST05HPiwgd2hpY2ggaW1wbGVtZW50cyB0aGUgIHNjcmVlbgorICAgICAgIGR1bXAgIGZvciA8U1RST05HPlRSQUNFX1VQREFURTwvU1RST05HPikuICBUaGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSB0aGVzZQorICAgICAgIHN0cmluZ3MsIHNpbmNlIHRoZSAgYWxsb2NhdGlvbiAgaXMgIHJldXNlZCAgb24gIHN1Y2Nlc3NpdmUKKyAgICAgICBjYWxscy4gIFRvIHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtIG9mIGEgc2luZ2xlIHN0cmluZy1hcmVhCisgICAgICAgcGVyIGZ1bmN0aW9uLCBzb21lIHVzZSBhIGJ1ZmZlci1udW1iZXIgcGFyYW1ldGVyLCAgdGVsbGluZworICAgICAgIHRoZSBsaWJyYXJ5IHRvIGFsbG9jYXRlIGFkZGl0aW9uYWwgc3RyaW5nLWFyZWFzLgorCisgICAgICAgVGhlc2UgIGZ1bmN0aW9ucyBjaGVjayB0aGUgPFNUUk9ORz5OQ1VSU0VTX1RSQUNFPC9TVFJPTkc+IGVudmlyb25tZW50IHZhcmktCisgICAgICAgYWJsZSwgdG8gc2V0IHRoZSB0cmFjaW5nIGZlYXR1cmUgYXMgaWYgPFNUUk9ORz50cmFjZTwvU1RST05HPiB3YXMgY2FsbGVkOgorCisgICAgICAgICAgICAgIGZpbHRlciwgaW5pdHNjciwgbmV3X3ByZXNjciwgbmV3dGVybSwgbm9maWx0ZXIsCisgICAgICAgICAgICAgIHJlc3RhcnR0ZXJtLCByaXBvZmZsaW5lLCBzZXR1cHRlcm0sIHNsa19pbml0LCB0Z2UtCisgICAgICAgICAgICAgIHRlbnQsIHVzZV9lbnYsIHVzZV9leHRlbmRlZF9uYW1lcywgdXNlX3Rpb2N0bAorCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBSb3V0aW5lcyAgd2hpY2ggIHJldHVybiBhIHZhbHVlIGFyZSBkZXNpZ25lZCB0byBiZSB1c2VkIGFzCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFJvdXRpbmVzIHdoaWNoIHJldHVybiBhIHZhbHVlIGFyZSBkZXNpZ25lZCB0byBiZSAgdXNlZCAgYXMKICAgICAgICBwYXJhbWV0ZXJzIHRvIHRoZSA8U1RST05HPl90cmFjZWY8L1NUUk9ORz4gcm91dGluZS4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBYU0kgIGludGVyZmFjZS4gICBTb21lCi0gICAgICAgb3RoZXIgIGN1cnNlcyAgaW1wbGVtZW50YXRpb25zICBhcmUga25vd24gdG8gaGF2ZSBzaW1pbGFyLAotICAgICAgIHVuZG9jdW1lbnRlZCBmZWF0dXJlcywgYnV0IHRoZXkgYXJlICBub3QgIGNvbXBhdGlibGUgIHdpdGgKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICBmdW5jdGlvbnMgIGFyZSBub3QgcGFydCBvZiB0aGUgWFNJIGludGVyZmFjZS4gIFNvbWUKKyAgICAgICBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb25zIGFyZSBrbm93biAgdG8gIGhhdmUgIHNpbWlsYXIsCisgICAgICAgdW5kb2N1bWVudGVkICBmZWF0dXJlcywgIGJ1dCAgdGhleSBhcmUgbm90IGNvbXBhdGlibGUgd2l0aAogICAgICAgIG5jdXJzZXMuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZSgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vY3Vyc191dGlsLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc191dGlsLjN4Lmh0bWwKaW5kZXggOTgxYTM3Mi4uMDBiMTNjMiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2N1cnNfdXRpbC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3V0aWwuM3guaHRtbApAQCAtMSw3ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAorICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMzICsyNywzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc191dGlsLjN4LHYgMS4yNiAyMDA4LzEwLzExIDIwOjMyOjU2IHRvbSBFeHAgQAorICAqIEBJZDogY3Vyc191dGlsLjN4LHYgMS40MyAyMDE1LzA2LzA2IDIzOjM2OjI3IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmN1cnNfdXRpbCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfdXRpbCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Y3Vyc191dGlsIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJjdXJzX3V0aWwuM3guaHRtbCI+Y3Vyc191dGlsKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZGVsYXlfb3V0cHV0PC9TVFJPTkc+LCA8U1RST05HPmZpbHRlcjwvU1RST05HPiwgPFNUUk9ORz5mbHVzaGlucDwvU1RST05HPiwgPFNUUk9ORz5nZXR3aW48L1NUUk9ORz4sIDxTVFJPTkc+a2V5X25hbWU8L1NUUk9ORz4sIDxTVFJPTkc+a2V5bmFtZTwvU1RST05HPiwKLSAgICAgICA8U1RST05HPm5vZmlsdGVyPC9TVFJPTkc+LCA8U1RST05HPnB1dHdpbjwvU1RST05HPiwgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4sIDxTVFJPTkc+dXNlX2VudjwvU1RST05HPiwgPFNUUk9ORz53dW5jdHJsPC9TVFJPTkc+IC0gbWlzY2VsbGFuZW91cwotICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHV0aWxpdHkgcm91dGluZXMKKyAgICAgICA8U1RST05HPm5vZmlsdGVyPC9TVFJPTkc+LCA8U1RST05HPnB1dHdpbjwvU1RST05HPiwgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4sIDxTVFJPTkc+dXNlX2VudjwvU1RST05HPiwgPFNUUk9ORz51c2VfdGlvY3RsPC9TVFJPTkc+LCA8U1RST05HPnd1bmN0cmw8L1NUUk9ORz4gLQorICAgICAgIG1pc2NlbGxhbmVvdXMgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gdXRpbGl0eSByb3V0aW5lcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPip1bmN0cmwoY2h0eXBlPC9TVFJPTkc+IDxTVFJPTkc+Yyk7PC9TVFJPTkc+CkBAIC02Myw2ICs2NCw3IEBACiAgICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+ZmlsdGVyKHZvaWQpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPm5vZmlsdGVyKHZvaWQpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPnVzZV9lbnYoYm9vbDwvU1RST05HPiA8U1RST05HPmYpOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPnVzZV90aW9jdGwoYm9vbDwvU1RST05HPiA8U1RST05HPmYpOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+cHV0d2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPip3aW4sPC9TVFJPTkc+IDxTVFJPTkc+RklMRTwvU1RST05HPiA8U1RST05HPipmaWxlcCk7PC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qZ2V0d2luKEZJTEU8L1NUUk9ORz4gPFNUUk9ORz4qZmlsZXApOzwvU1RST05HPgogICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+ZGVsYXlfb3V0cHV0KGludDwvU1RST05HPiA8U1RST05HPm1zKTs8L1NUUk9ORz4KQEAgLTcwLDE2MSArNzIsMjE2IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtdW5jdHJsIj51bmN0cmw8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4gIHJvdXRpbmUgcmV0dXJucyBhIGNoYXJhY3RlciBzdHJpbmcgd2hpY2ggaXMgYQogICAgICAgIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIDxFTT5jPC9FTT4sIGlnbm9yaW5nICBhdC0KICAgICAgICB0cmlidXRlcy4gICBDb250cm9sIGNoYXJhY3RlcnMgYXJlIGRpc3BsYXllZCBpbiB0aGUgPFNUUk9ORz5ePC9TVFJPTkc+PEVNPlg8L0VNPiBuby0KICAgICAgICB0YXRpb24uICBQcmludGluZyBjaGFyYWN0ZXJzIGFyZSAgZGlzcGxheWVkICBhcyAgaXMuICAgVGhlCiAgICAgICAgY29ycmVzcG9uZGluZyAgPFNUUk9ORz53dW5jdHJsPC9TVFJPTkc+ICByZXR1cm5zIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uCi0gICAgICAgb2YgYSB3aWRlLWNoYXJhY3Rlci4KKyAgICAgICBvZiBhIHdpZGUgY2hhcmFjdGVyLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWtleW5hbWVfa2V5X25hbWUiPmtleW5hbWUva2V5X25hbWU8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPmtleW5hbWU8L1NUUk9ORz4gcm91dGluZSByZXR1cm5zIGEgY2hhcmFjdGVyIHN0cmluZyBjb3JyZXNwb25kLQogICAgICAgIGluZyB0byB0aGUga2V5IDxFTT5jPC9FTT46CiAKLSAgICAgICAgICAtICBQcmludGFibGUgIGNoYXJhY3RlcnMgIGFyZSAgZGlzcGxheWVkIGFzIHRoZW1zZWx2ZXMsCi0gICAgICAgICAgICAgZS5nLiwgYSBvbmUtY2hhcmFjdGVyIHN0cmluZyBjb250YWluaW5nIHRoZSBrZXkuCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgUHJpbnRhYmxlICBjaGFyYWN0ZXJzICBhcmUgIGRpc3BsYXllZCAgYXMgIHRoZW1zZWx2ZXMsCisgICAgICAgICAgIGUuZy4sIGEgb25lLWNoYXJhY3RlciBzdHJpbmcgY29udGFpbmluZyB0aGUga2V5LgogCi0gICAgICAgICAgLSAgQ29udHJvbCBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIDxTVFJPTkc+XjwvU1RST05HPjxFTT5YPC9FTT4gbm90YXRpb24uCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgQ29udHJvbCBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIDxTVFJPTkc+XjwvU1RST05HPjxFTT5YPC9FTT4gbm90YXRpb24uCiAKLSAgICAgICAgICAtICBERUwgKGNoYXJhY3RlciAxMjcpIGlzIGRpc3BsYXllZCBhcyA8U1RST05HPl4/PC9TVFJPTkc+LgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIERFTCAoY2hhcmFjdGVyIDEyNykgaXMgZGlzcGxheWVkIGFzIDxTVFJPTkc+Xj88L1NUUk9ORz4uCiAKLSAgICAgICAgICAtICBWYWx1ZXMgIGFib3ZlIDEyOCBhcmUgZWl0aGVyIG1ldGEgY2hhcmFjdGVycyAoaWYgdGhlCi0gICAgICAgICAgICAgc2NyZWVuIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCwgb3IgaWYgPFNUUk9ORz5tZXRhPC9TVFJPTkc+IGhhcyBiZWVuCi0gICAgICAgICAgICAgY2FsbGVkICB3aXRoIGEgVFJVRSBwYXJhbWV0ZXIpLCBzaG93biBpbiB0aGUgPFNUUk9ORz5NLTwvU1RST05HPjxFTT5YPC9FTT4gbm8tCi0gICAgICAgICAgICAgdGF0aW9uLCBvciBhcmUgZGlzcGxheWVkIGFzIHRoZW1zZWx2ZXMuICBJbiB0aGUgbGF0LQotICAgICAgICAgICAgIHRlciBjYXNlLCB0aGUgdmFsdWVzIG1heSBub3QgYmUgcHJpbnRhYmxlOyB0aGlzIGZvbC0KLSAgICAgICAgICAgICBsb3dzIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBWYWx1ZXMgYWJvdmUgMTI4IGFyZSBlaXRoZXIgbWV0YSAgY2hhcmFjdGVycyAgKGlmICB0aGUKKyAgICAgICAgICAgc2NyZWVuICBoYXMgIG5vdCBiZWVuIGluaXRpYWxpemVkLCBvciBpZiA8U1RST05HPm1ldGE8L1NUUk9ORz4gaGFzIGJlZW4KKyAgICAgICAgICAgY2FsbGVkIHdpdGggYSA8U1RST05HPlRSVUU8L1NUUk9ORz4gcGFyYW1ldGVyKSwgc2hvd24gaW4gdGhlIDxTVFJPTkc+TS08L1NUUk9ORz48RU0+WDwvRU0+ICBub3RhLQorICAgICAgICAgICB0aW9uLCAgb3IgIGFyZSBkaXNwbGF5ZWQgYXMgdGhlbXNlbHZlcy4gIEluIHRoZSBsYXR0ZXIKKyAgICAgICAgICAgY2FzZSwgdGhlIHZhbHVlcyBtYXkgbm90IGJlICBwcmludGFibGU7ICB0aGlzICBmb2xsb3dzCisgICAgICAgICAgIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi4KIAotICAgICAgICAgIC0gIFZhbHVlcyBhYm92ZSAyNTYgbWF5IGJlIHRoZSBuYW1lcyBvZiAgdGhlICBuYW1lcyAgb2YKLSAgICAgICAgICAgICBmdW5jdGlvbiBrZXlzLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFZhbHVlcyAgYWJvdmUgIDI1NiAgbWF5ICBiZSAgdGhlIG5hbWVzIG9mIHRoZSBuYW1lcyBvZgorICAgICAgICAgICBmdW5jdGlvbiBrZXlzLgogCi0gICAgICAgICAgLSAgT3RoZXJ3aXNlICAoaWYgIHRoZXJlICBpcyBubyBjb3JyZXNwb25kaW5nIG5hbWUpIHRoZQotICAgICAgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgbnVsbCwgdG8gZGVub3RlIGFuICBlcnJvci4gICBYL09wZW4KLSAgICAgICAgICAgICBhbHNvIGxpc3RzIGFuICJVTktOT1dOIEtFWSIgcmV0dXJuIHZhbHVlLCB3aGljaCBzb21lCi0gICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIHJldHVybiByYXRoZXIgdGhhbiBudWxsLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIE90aGVyd2lzZSAoaWYgdGhlcmUgIGlzICBubyAgY29ycmVzcG9uZGluZyAgbmFtZSkgIHRoZQorICAgICAgICAgICBmdW5jdGlvbiByZXR1cm5zIG51bGwsIHRvIGRlbm90ZSBhbiBlcnJvci4gIFgvT3BlbiBhbC0KKyAgICAgICAgICAgc28gbGlzdHMgYW4gIlVOS05PV04gS0VZIiByZXR1cm4gdmFsdWUsIHdoaWNoIHNvbWUgaW0tCisgICAgICAgICAgIHBsZW1lbnRhdGlvbnMgcmV0dXJuIHJhdGhlciB0aGFuIG51bGwuCiAKICAgICAgICBUaGUgY29ycmVzcG9uZGluZyA8U1RST05HPmtleV9uYW1lPC9TVFJPTkc+IHJldHVybnMgYSBjaGFyYWN0ZXIgc3RyaW5nIGNvci0KLSAgICAgICByZXNwb25kaW5nICB0byAgdGhlIHdpZGUtY2hhcmFjdGVyIHZhbHVlIDxFTT53PC9FTT4uICBUaGUgdHdvIGZ1bmMtCi0gICAgICAgdGlvbnMgZG8gbm90IHJldHVybiB0aGUgc2FtZSBzZXQgb2YgIHN0cmluZ3M7ICB0aGUgIGxhdHRlcgorICAgICAgIHJlc3BvbmRpbmcgdG8gdGhlIHdpZGUtY2hhcmFjdGVyIHZhbHVlIDxFTT53PC9FTT4uICBUaGUgIHR3byAgZnVuYy0KKyAgICAgICB0aW9ucyAgZG8gIG5vdCAgcmV0dXJuIHRoZSBzYW1lIHNldCBvZiBzdHJpbmdzOyB0aGUgbGF0dGVyCiAgICAgICAgcmV0dXJucyBudWxsIHdoZXJlIHRoZSBmb3JtZXIgd291bGQgZGlzcGxheSBhIG1ldGEgY2hhcmFjLQogICAgICAgIHRlci4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1maWx0ZXJfbm9maWx0ZXIiPmZpbHRlci9ub2ZpbHRlcjwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+ZmlsdGVyPC9TVFJPTkc+IHJvdXRpbmUsIGlmIHVzZWQsIG11c3QgYmUgY2FsbGVkIGJlZm9yZSA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4KLSAgICAgICBvciAgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+ICBhcmUgY2FsbGVkLiAgVGhlIGVmZmVjdCBpcyB0aGF0LCBkdXJpbmcgdGhvc2UKLSAgICAgICBjYWxscywgPFNUUk9ORz5MSU5FUzwvU1RST05HPiBpcyBzZXQgdG8gMTsgIHRoZSAgY2FwYWJpbGl0aWVzICA8U1RST05HPmNsZWFyPC9TVFJPTkc+LCAgPFNUUk9ORz5jdXA8L1NUUk9ORz4sCi0gICAgICAgPFNUUk9ORz5jdWQ8L1NUUk9ORz4sICA8U1RST05HPmN1ZDE8L1NUUk9ORz4sICA8U1RST05HPmN1dTE8L1NUUk9ORz4sICA8U1RST05HPmN1dTwvU1RST05HPiwgIDxTVFJPTkc+dnBhPC9TVFJPTkc+ICBhcmUgIGRpc2FibGVkOyBhbmQgdGhlIDxTVFJPTkc+aG9tZTwvU1RST05HPgorICAgICAgIG9yIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBhcmUgY2FsbGVkLiAgVGhlIGVmZmVjdCBpcyB0aGF0LCAgZHVyaW5nICB0aG9zZQorICAgICAgIGNhbGxzLCAgPFNUUk9ORz5MSU5FUzwvU1RST05HPiAgaXMgIHNldCAgdG8gMTsgdGhlIGNhcGFiaWxpdGllcyA8U1RST05HPmNsZWFyPC9TVFJPTkc+LCA8U1RST05HPmN1cDwvU1RST05HPiwKKyAgICAgICA8U1RST05HPmN1ZDwvU1RST05HPiwgPFNUUk9ORz5jdWQxPC9TVFJPTkc+LCA8U1RST05HPmN1dTE8L1NUUk9ORz4sIDxTVFJPTkc+Y3V1PC9TVFJPTkc+LCAgPFNUUk9ORz52cGE8L1NUUk9ORz4gIGFyZSAgZGlzYWJsZWQ7ICBhbmQgIHRoZSAgPFNUUk9ORz5ob21lPC9TVFJPTkc+CiAgICAgICAgc3RyaW5nIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgPFNUUk9ORz5jcjwvU1RST05HPi4KIAotICAgICAgIFRoZSA8U1RST05HPm5vZmlsdGVyPC9TVFJPTkc+IHJvdXRpbmUgY2FuY2VscyB0aGUgIGVmZmVjdCAgb2YgIGEgIHByZWNlZGluZwotICAgICAgIDxTVFJPTkc+ZmlsdGVyPC9TVFJPTkc+ICBjYWxsLiAgIFRoYXQgIGFsbG93cyAgdGhlICBjYWxsZXIgIHRvIGluaXRpYWxpemUgYQotICAgICAgIHNjcmVlbiBvbiBhIGRpZmZlcmVudCBkZXZpY2UsIHVzaW5nIGEgZGlmZmVyZW50ICB2YWx1ZSAgb2YKLSAgICAgICA8U1RST05HPiRURVJNPC9TVFJPTkc+LiAgIFRoZSAgbGltaXRhdGlvbiBhcmlzZXMgYmVjYXVzZSB0aGUgPFNUUk9ORz5maWx0ZXI8L1NUUk9ORz4gcm91dGluZQorICAgICAgIFRoZSAgPFNUUk9ORz5ub2ZpbHRlcjwvU1RST05HPiAgcm91dGluZSAgY2FuY2VscyAgdGhlIGVmZmVjdCBvZiBhIHByZWNlZGluZworICAgICAgIDxTVFJPTkc+ZmlsdGVyPC9TVFJPTkc+IGNhbGwuICBUaGF0ICBhbGxvd3MgIHRoZSAgY2FsbGVyICB0byAgaW5pdGlhbGl6ZSAgYQorICAgICAgIHNjcmVlbiAgb24gIGEgZGlmZmVyZW50IGRldmljZSwgdXNpbmcgYSBkaWZmZXJlbnQgdmFsdWUgb2YKKyAgICAgICA8U1RST05HPiRURVJNPC9TVFJPTkc+LiAgVGhlIGxpbWl0YXRpb24gYXJpc2VzIGJlY2F1c2UgdGhlICA8U1RST05HPmZpbHRlcjwvU1RST05HPiAgcm91dGluZQogICAgICAgIG1vZGlmaWVzIHRoZSBpbi1tZW1vcnkgY29weSBvZiB0aGUgdGVybWluYWwgaW5mb3JtYXRpb24uCiAKLSAgICAgICBUaGUgPFNUUk9ORz51c2VfZW52PC9TVFJPTkc+IHJvdXRpbmUsIGlmIHVzZWQsIGlzIGNhbGxlZCBiZWZvcmUgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+ICBvcgotICAgICAgIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiAgYXJlICBjYWxsZWQuICAgV2hlbiBjYWxsZWQgd2l0aCA8U1RST05HPkZBTFNFPC9TVFJPTkc+IGFzIGFuIGFyZ3UtCi0gICAgICAgbWVudCwgdGhlIHZhbHVlcyBvZiA8U1RST05HPmxpbmVzPC9TVFJPTkc+IGFuZCAgPFNUUk9ORz5jb2x1bW5zPC9TVFJPTkc+ICBzcGVjaWZpZWQgIGluICB0aGUKLSAgICAgICA8RU0+dGVybWluZm88L0VNPiAgZGF0YWJhc2Ugd2lsbCBiZSB1c2VkLCBldmVuIGlmIGVudmlyb25tZW50IHZhcmktCi0gICAgICAgYWJsZXMgPFNUUk9ORz5MSU5FUzwvU1RST05HPiBhbmQgPFNUUk9ORz5DT0xVTU5TPC9TVFJPTkc+ICh1c2VkIGJ5IGRlZmF1bHQpIGFyZSBzZXQsICBvciAgaWYKLSAgICAgICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgaXMgIHJ1bm5pbmcgaW4gYSB3aW5kb3cgKGluIHdoaWNoIGNhc2UgZGVmYXVsdCBiZS0KLSAgICAgICBoYXZpb3Igd291bGQgYmUgdG8gIHVzZSAgdGhlICB3aW5kb3cgIHNpemUgIGlmICA8U1RST05HPkxJTkVTPC9TVFJPTkc+ICBhbmQKLSAgICAgICA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4gIGFyZSBub3Qgc2V0KS4gIE5vdGUgdGhhdCBzZXR0aW5nIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gb3IgPFNUUk9ORz5DT0xVTU5TPC9TVFJPTkc+Ci0gICAgICAgb3ZlcnJpZGVzIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgIHdoaWNoICBtYXkgIGJlICBvYnRhaW5lZAotICAgICAgIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiAKLSAgICAgICBUaGUgIDxTVFJPTkc+cHV0d2luPC9TVFJPTkc+IHJvdXRpbmUgd3JpdGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB3aW5kb3cKLSAgICAgICA8RU0+d2luPC9FTT4gaW50byB0aGUgZmlsZSB0byB3aGljaCA8RU0+ZmlsZXA8L0VNPiBwb2ludHMuICBUaGlzIGluZm9ybWF0aW9uCi0gICAgICAgY2FuIGJlIGxhdGVyIHJldHJpZXZlZCB1c2luZyB0aGUgPFNUUk9ORz5nZXR3aW48L1NUUk9ORz4gZnVuY3Rpb24uCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy11c2VfZW52Ij51c2VfZW52PC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+dXNlX2VudjwvU1RST05HPiAgcm91dGluZSwgIGlmICB1c2VkLCAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUKKyAgICAgICA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gb3IgPFNUUk9ORz5uZXd0ZXJtPC9TVFJPTkc+IGFyZSBjYWxsZWQgKGJlY2F1c2UgdGhvc2UgIGNvbXB1dGUgIHRoZQorICAgICAgIHNjcmVlbiBzaXplKS4gIEl0IG1vZGlmaWVzIHRoZSB3YXkgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHRyZWF0cyBlbnZpcm9uLQorICAgICAgIG1lbnQgdmFyaWFibGVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjcmVlbiBzaXplLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgTm9ybWFsbHkgbmN1cnNlcyBsb29rcyBmaXJzdCBhdCB0aGUgdGVybWluYWwgIGRhdGFiYXNlCisgICAgICAgICAgIGZvciB0aGUgc2NyZWVuIHNpemUuCisKKyAgICAgICAgICAgSWYgIDxTVFJPTkc+dXNlX2VudjwvU1RST05HPiAgd2FzICBjYWxsZWQgIHdpdGggPFNUUk9ORz5GQUxTRTwvU1RST05HPiBmb3IgcGFyYW1ldGVyLCBpdAorICAgICAgICAgICBzdG9wcyBoZXJlIHVubGVzcyBJZiA8U1RST05HPnVzZV90aW9jdGw8L1NUUk9ORz4gd2FzIGFsc28gIGNhbGxlZCAgd2l0aAorICAgICAgICAgICA8U1RST05HPlRSVUU8L1NUUk9ORz4gZm9yIHBhcmFtZXRlci4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZW4gIGl0IGFza3MgZm9yIHRoZSBzY3JlZW4gc2l6ZSB2aWEgb3BlcmF0aW5nIHN5c3RlbQorICAgICAgICAgICBjYWxscy4gIElmIHN1Y2Nlc3NmdWwsIGl0IG92ZXJyaWRlcyAgdGhlICB2YWx1ZXMgIGZyb20KKyAgICAgICAgICAgdGhlIHRlcm1pbmFsIGRhdGFiYXNlLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgRmluYWxseSAgKHVubGVzcyA8U1RST05HPnVzZV9lbnY8L1NUUk9ORz4gd2FzIGNhbGxlZCB3aXRoIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gcGFyYW1lLQorICAgICAgICAgICB0ZXIpLCBuY3Vyc2VzIGV4YW1pbmVzIHRoZSA8U1RST05HPkxJTkVTPC9TVFJPTkc+IG9yICA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4gIGVudmlyb24tCisgICAgICAgICAgIG1lbnQgdmFyaWFibGVzLCB1c2luZyBhIHZhbHVlIGluIHRob3NlIHRvIG92ZXJyaWRlIHRoZQorICAgICAgICAgICByZXN1bHRzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gIG9yICB0ZXJtaW5hbCAgZGF0YS0KKyAgICAgICAgICAgYmFzZS4KKworICAgICAgICAgICBOY3Vyc2VzICBhbHNvICB1cGRhdGVzICB0aGUgc2NyZWVuIHNpemUgaW4gcmVzcG9uc2UgdG8KKyAgICAgICAgICAgU0lHV0lOQ0gsIHVubGVzcyBvdmVycmlkZGVuIGJ5IHRoZSAgPFNUUk9ORz5MSU5FUzwvU1RST05HPiAgb3IgIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPgorICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtdXNlX3Rpb2N0bCI+dXNlX3Rpb2N0bDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPnVzZV90aW9jdGw8L1NUUk9ORz4gIHJvdXRpbmUsIGlmIHVzZWQsIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCisgICAgICAgPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IG9yIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBhcmUgY2FsbGVkIChiZWNhdXNlIHRob3NlICBjb21wdXRlICB0aGUKKyAgICAgICBzY3JlZW4gIHNpemUpLiAgQWZ0ZXIgPFNUUk9ORz51c2VfdGlvY3RsPC9TVFJPTkc+IGlzIGNhbGxlZCB3aXRoIDxTVFJPTkc+VFJVRTwvU1RST05HPiBhcyBhbgorICAgICAgIGFyZ3VtZW50LCBuY3Vyc2VzIG1vZGlmaWVzIHRoZSBsYXN0IHN0ZXAgaW4gIGl0cyAgY29tcHV0YS0KKyAgICAgICB0aW9uIG9mIHNjcmVlbiBzaXplIGFzIGZvbGxvd3M6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBjaGVja3MgIGlmIHRoZSA8U1RST05HPkxJTkVTPC9TVFJPTkc+IGFuZCA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4gZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgICAgICAgIGFyZSBzZXQgdG8gYSBudW1iZXIgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBmb3IgZWFjaCwgbmN1cnNlcyB1cGRhdGVzIHRoZSAgY29ycmVzcG9uZGluZyAgZW52aXJvbi0KKyAgICAgICAgICAgbWVudCAgdmFyaWFibGUgd2l0aCB0aGUgdmFsdWUgdGhhdCBpdCBoYXMgb2J0YWluZWQgdmlhCisgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gY2FsbCBvciBmcm9tIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZS4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIG5jdXJzZXMgcmUtZmV0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50ICB2YXJpLQorICAgICAgICAgICBhYmxlcyAgc28gIHRoYXQgIGl0IGlzIHN0aWxsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgICAgICAgd2hpY2ggc2V0IHRoZSBzY3JlZW4gc2l6ZS4KKworICAgICAgIFRoZSA8U1RST05HPnVzZV9lbnY8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dXNlX3Rpb2N0bDwvU1RST05HPiByb3V0aW5lcyBjb21iaW5lIGFzICBzdW1tYXJpemVkCisgICAgICAgaGVyZToKKworICAgICA8RU0+dXNlPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+ZW52PC9FTT4gICA8RU0+dXNlPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+dGlvY3RsPC9FTT4gICA8RU0+U3VtbWFyeTwvRU0+CisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisKKyAgICAgVFJVRSAgICAgIEZBTFNFICAgICAgICBUaGlzICBpcyAgdGhlIGRlZmF1bHQgYmVoYXZpb3IuICBuY3Vyc2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzIHVubGVzcyBvdmVyLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZGRlbiBieSAkTElORVMgb3IgJENPTFVNTlMgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgIFRSVUUgICAgICBUUlVFICAgICAgICAgbmN1cnNlcyAgdXBkYXRlcyAgJExJTkVTICBhbmQgICAkQ09MVU1OUworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMuCisgICAgIEZBTFNFICAgICBUUlVFICAgICAgICAgbmN1cnNlcyBpZ25vcmVzICRMSU5FUyBhbmQgJENPTFVNTlMsIHVzLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzICBvcGVyYXRpbmcgIHN5c3RlbSAgY2FsbHMgIHRvICBvYnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLgorICAgICBGQUxTRSAgICAgRkFMU0UgICAgICAgIG5jdXJzZXMgIHJlbGllcyBvbiB0aGUgdGVybWluYWwgZGF0YWJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBkZXRlcm1pbmUgc2l6ZS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1wdXR3aW5fZ2V0d2luIj5wdXR3aW4vZ2V0d2luPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz5wdXR3aW48L1NUUk9ORz4gcm91dGluZSB3cml0ZXMgYWxsIGRhdGEgYXNzb2NpYXRlZCB3aXRoICB3aW5kb3cKKyAgICAgICAob3IgIHBhZCkgIDxFTT53aW48L0VNPiAgaW50byB0aGUgZmlsZSB0byB3aGljaCA8RU0+ZmlsZXA8L0VNPiBwb2ludHMuICBUaGlzCisgICAgICAgaW5mb3JtYXRpb24gY2FuIGJlIGxhdGVyIHJldHJpZXZlZCB1c2luZyB0aGUgPFNUUk9ORz5nZXR3aW48L1NUUk9ORz4gIGZ1bmMtCisgICAgICAgdGlvbi4KIAogICAgICAgIFRoZSA8U1RST05HPmdldHdpbjwvU1RST05HPiByb3V0aW5lIHJlYWRzIHdpbmRvdyByZWxhdGVkIGRhdGEgc3RvcmVkIGluIHRoZQogICAgICAgIGZpbGUgYnkgPFNUUk9ORz5wdXR3aW48L1NUUk9ORz4uICBUaGUgcm91dGluZSB0aGVuIGNyZWF0ZXMgYW5kICBpbml0aWFsaXplcwogICAgICAgIGEgbmV3IHdpbmRvdyB1c2luZyB0aGF0IGRhdGEuICBJdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUKLSAgICAgICBuZXcgd2luZG93LgorICAgICAgIG5ldyB3aW5kb3cuICBUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0czoKIAotICAgICAgIFRoZSA8U1RST05HPmRlbGF5X291dHB1dDwvU1RST05HPiByb3V0aW5lIGluc2VydHMgYW4gPEVNPm1zPC9FTT4gIG1pbGxpc2Vjb25kICBwYXVzZQotICAgICAgIGluICBvdXRwdXQuICAgVGhpcyAgcm91dGluZSBzaG91bGQgbm90IGJlIHVzZWQgZXh0ZW5zaXZlbHkKLSAgICAgICBiZWNhdXNlIHBhZGRpbmcgY2hhcmFjdGVycyBhcmUgIHVzZWQgIHJhdGhlciAgdGhhbiAgYSAgQ1BVCi0gICAgICAgcGF1c2UuICAgSWYgIG5vICBwYWRkaW5nIGNoYXJhY3RlciBpcyBzcGVjaWZpZWQsIHRoaXMgdXNlcworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSBkYXRhIHdyaXR0ZW4gaXMgYSBjb3B5IG9mICB0aGUgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+ICBzdHJ1Y3R1cmUsCisgICAgICAgICAgIGFuZCAgaXRzICBhc3NvY2lhdGVkIGNoYXJhY3RlciBjZWxscy4gIFRoZSBmb3JtYXQgZGlmLQorICAgICAgICAgICBmZXJzIGJldHdlZW4gdGhlIHdpZGUtY2hhcmFjdGVyICAobmN1cnNlc3cpICBhbmQgIG5vbi0KKyAgICAgICAgICAgd2lkZSAgKG5jdXJzZXMpICBsaWJyYXJpZXMuICBZb3UgY2FuIHRyYW5zZmVyIGRhdGEgYmUtCisgICAgICAgICAgIHR3ZWVuIHRoZSB0d28sIGhvd2V2ZXIuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgcmV0cmlldmVkIHdpbmRvdyBpcyBhbHdheXMgY3JlYXRlZCBhcyBhICB0b3AtbGV2ZWwKKyAgICAgICAgICAgd2luZG93IChvciBwYWQpLCByYXRoZXIgdGhhbiBhIHN1YndpbmRvdy4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSAgd2luZG93J3MgIGNoYXJhY3RlciAgY2VsbHMgY29udGFpbiB0aGUgY29sb3IgcGFpcgorICAgICAgICAgICA8RU0+dmFsdWU8L0VNPiwgYnV0IG5vdCB0aGUgYWN0dWFsIGNvbG9yIDxFTT5udW1iZXJzPC9FTT4uICBJZiBjZWxscyAgaW4KKyAgICAgICAgICAgdGhlICByZXRyaWV2ZWQgIHdpbmRvdyAgdXNlIGNvbG9yIHBhaXJzIHdoaWNoIGhhdmUgbm90CisgICAgICAgICAgIGJlZW4gY3JlYXRlZCBpbiB0aGUgYXBwbGljYXRpb24gdXNpbmcgPFNUUk9ORz5pbml0X3BhaXI8L1NUUk9ORz4sICB0aGV5CisgICAgICAgICAgIHdpbGwgbm90IGJlIGNvbG9yZWQgd2hlbiB0aGUgd2luZG93IGlzIHJlZnJlc2hlZC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1kZWxheV9vdXRwdXQiPmRlbGF5X291dHB1dDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPmRlbGF5X291dHB1dDwvU1RST05HPiAgcm91dGluZSBpbnNlcnRzIGFuIDxFTT5tczwvRU0+IG1pbGxpc2Vjb25kIHBhdXNlCisgICAgICAgaW4gb3V0cHV0LiAgVGhpcyByb3V0aW5lIHNob3VsZCBub3QgIGJlICB1c2VkICBleHRlbnNpdmVseQorICAgICAgIGJlY2F1c2UgIHBhZGRpbmcgIGNoYXJhY3RlcnMgIGFyZSAgdXNlZCAgcmF0aGVyIHRoYW4gYSBDUFUKKyAgICAgICBwYXVzZS4gIElmIG5vIHBhZGRpbmcgY2hhcmFjdGVyIGlzICBzcGVjaWZpZWQsICB0aGlzICB1c2VzCiAgICAgICAgPFNUUk9ORz5uYXBtczwvU1RST05HPiB0byBwZXJmb3JtIHRoZSBkZWxheS4KIAotICAgICAgIFRoZSA8U1RST05HPmZsdXNoaW5wPC9TVFJPTkc+IHJvdXRpbmUgdGhyb3dzIGF3YXkgYW55ICB0eXBlYWhlYWQgIHRoYXQgIGhhcwotICAgICAgIGJlZW4gIHR5cGVkICBieSAgdGhlIHVzZXIgYW5kIGhhcyBub3QgeWV0IGJlZW4gcmVhZCBieSB0aGUKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtZmx1c2hpbnAiPmZsdXNoaW5wPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+Zmx1c2hpbnA8L1NUUk9ORz4gIHJvdXRpbmUgIHRocm93cyBhd2F5IGFueSB0eXBlYWhlYWQgdGhhdCBoYXMKKyAgICAgICBiZWVuIHR5cGVkIGJ5IHRoZSB1c2VyIGFuZCBoYXMgbm90IHlldCBiZWVuICByZWFkICBieSAgdGhlCiAgICAgICAgcHJvZ3JhbS4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgRXhjZXB0IGZvciA8U1RST05HPmZsdXNoaW5wPC9TVFJPTkc+LCByb3V0aW5lcyB0aGF0IHJldHVybiBhbiAgaW50ZWdlciAgcmUtCi0gICAgICAgdHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBmYWlsdXJlIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IChTVnI0IHNwZWNpZmllcyBvbmx5ICJhbiBpbi0KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgRXhjZXB0ICBmb3IgIDxTVFJPTkc+Zmx1c2hpbnA8L1NUUk9ORz4sIHJvdXRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmUtCisgICAgICAgdHVybiA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4gKFNWcjQgc3BlY2lmaWVzIG9ubHkgImFuICBpbi0KICAgICAgICB0ZWdlciB2YWx1ZSBvdGhlciB0aGFuIDxTVFJPTkc+RVJSPC9TVFJPTkc+IikgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCiAKICAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBwb2ludGVycyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLgogCi0gICAgICAgWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4gIEluIHRoaXMgIGltLQorICAgICAgIFgvT3BlbiAgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLiAgSW4gdGhpcyBpbS0KICAgICAgICBwbGVtZW50YXRpb24KIAotICAgICAgICAgICAgICA8U1RST05HPmZsdXNoaW5wPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIHdhcyBub3QgaW5pLQotICAgICAgICAgICAgICAgICAgIHRpYWxpemVkLgorICAgICAgICAgIDxTVFJPTkc+Zmx1c2hpbnA8L1NUUk9ORz4KKyAgICAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHRlcm1pbmFsIHdhcyBub3QgIGluaXRpYWwtCisgICAgICAgICAgICAgICBpemVkLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+cHV0d2luPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiAgZXJyb3IgIGlmICB0aGUgIGFzc29jaWF0ZWQgIDxTVFJPTkc+ZndyaXRlPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgY2FsbHMgcmV0dXJuIGFuIGVycm9yLgorICAgICAgICAgIDxTVFJPTkc+bWV0YTwvU1RST05HPiByZXR1cm5zICBhbiBlcnJvciBpZiB0aGUgdGVybWluYWwgd2FzIG5vdCBpbml0aWFsLQorICAgICAgICAgICAgICAgaXplZC4KKworICAgICAgICAgIDxTVFJPTkc+cHV0d2luPC9TVFJPTkc+CisgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSAgYXNzb2NpYXRlZCAgPFNUUk9ORz5md3JpdGU8L1NUUk9ORz4gIGNhbGxzCisgICAgICAgICAgICAgICByZXR1cm4gYW4gZXJyb3IuCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlICBYU0kgIEN1cnNlcyAgc3RhbmRhcmQsICBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jLQotICAgICAgIHRpb25zLiAgSXQgc3RhdGVzIHRoYXQgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d3VuY3RybDwvU1RST05HPiAgd2lsbCAgcmV0dXJuICBhCi0gICAgICAgbnVsbCAgcG9pbnRlciBpZiB1bnN1Y2Nlc3NmdWwsIGJ1dCBkb2VzIG5vdCBkZWZpbmUgYW55IGVyLQotICAgICAgIHJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZm9yIHRocmVlIGNhcy0KLSAgICAgICBlczoKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogCi0gICAgICAgICAgICAgIC0gICAgdGhlICBwYXJhbWV0ZXIgaXMgYSA3LWJpdCBVUy1BU0NJSSBjb2RlLiAgVGhpcwotICAgICAgICAgICAgICAgICAgIGlzIHRoZSBjYXNlIHRoYXQgWC9PcGVuIEN1cnNlcyBkb2N1bWVudGVkLgotCi0gICAgICAgICAgICAgIC0gICAgdGhlIHBhcmFtZXRlciBpcyBpbiB0aGUgcmFuZ2UgMTI4LTE1OSwgaS5lLiwgYQotICAgICAgICAgICAgICAgICAgIEMxICBjb250cm9sICBjb2RlLiAgIElmICA8U1RST05HPnVzZV9sZWdhY3lfY29kaW5nPC9TVFJPTkc+IGhhcwotICAgICAgICAgICAgICAgICAgIGJlZW4gY2FsbGVkIHdpdGggYSA8U1RST05HPjI8L1NUUk9ORz4gcGFyYW1ldGVyLCA8U1RST05HPnVuY3RybDwvU1RST05HPiByZXR1cm5zCi0gICAgICAgICAgICAgICAgICAgdGhlICBwYXJhbWV0ZXIsICBpLmUuLCAgYSBvbmUtY2hhcmFjdGVyIHN0cmluZwotICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHBhcmFtZXRlciAgYXMgIHRoZSAgZmlyc3QgIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsICBpdCAgcmV0dXJucyAgYGB+QCcnLCBgYH5BJycsIGV0Yy4sCi0gICAgICAgICAgICAgICAgICAgYW5hbG9nb3VzIHRvIGBgXkAnJywgYGBeQScnLCBDMCBjb250cm9scy4KLQotICAgICAgICAgICAgICAgICAgIFgvT3BlbiBDdXJzZXMgZG9lcyBub3QgZG9jdW1lbnQgd2hldGhlciA8U1RST05HPnVuY3RybDwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIGNhbiAgYmUgIGNhbGxlZCAgYmVmb3JlICBpbml0aWFsaXppbmcgIGN1cnNlcy4KLSAgICAgICAgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIHBlcm1pdHMgdGhhdCwgYW5kICByZXR1cm5zCi0gICAgICAgICAgICAgICAgICAgdGhlIGBgfkAnJywgZXRjLiwgdmFsdWVzIGluIHRoYXQgY2FzZS4KLQotICAgICAgICAgICAgICAtICAgIHBhcmFtZXRlciAgdmFsdWVzICBvdXRzaWRlIHRoZSAwIHRvIDI1NSByYW5nZS4KLSAgICAgICAgICAgICAgICAgICA8U1RST05HPnVuY3RybDwvU1RST05HPiByZXR1cm5zIGEgbnVsbCBwb2ludGVyLgotCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1maWx0ZXIiPmZpbHRlcjwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIFNWcjQgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgdGhlIGFjdGlvbiBvZiA8U1RST05HPmZpbHRlcjwvU1RST05HPiBvbmx5Ci0gICAgICAgaW4gIHRoZSAgdmFndWVzdCAgdGVybXMuICAgVGhlIGRlc2NyaXB0aW9uIGhlcmUgaXMgYWRhcHRlZAotICAgICAgIGZyb20gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgKHdoaWNoIGVycm9uZW91c2x5ICBmYWlscyAgdG8KKyAgICAgICBpbiB0aGUgdmFndWVzdCB0ZXJtcy4gIFRoZSAgZGVzY3JpcHRpb24gIGhlcmUgIGlzICBhZGFwdGVkCisgICAgICAgZnJvbSAgdGhlICBYU0kgQ3Vyc2VzIHN0YW5kYXJkICh3aGljaCBlcnJvbmVvdXNseSBmYWlscyB0bwogICAgICAgIGRlc2NyaWJlIHRoZSBkaXNhYmxpbmcgb2YgPFNUUk9ORz5jdXU8L1NUUk9ORz4pLgogCi0gICAgICAgVGhlICBzdHJpbmdzIHJldHVybmVkIGJ5IDxTVFJPTkc+dW5jdHJsPC9TVFJPTkc+IGluIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlCi0gICAgICAgZGV0ZXJtaW5lZCBhdCBjb21waWxlIHRpbWUsIHNob3dpbmcgQzEgY29udHJvbHMgIGZyb20gIHRoZQotICAgICAgIHVwcGVyLTEyOCAgY29kZXMgd2l0aCBhIGB+JyBwcmVmaXggcmF0aGVyIHRoYW4gYF4nLiAgT3RoZXIKLSAgICAgICBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgY29udmVudGlvbnMuICBGb3IgIGV4YW1wbGUsCi0gICAgICAgdGhleSAgbWF5ICBzaG93ICBib3RoIHNldHMgb2YgY29udHJvbCBjaGFyYWN0ZXJzIHdpdGggYF4nLAotICAgICAgIGFuZCBzdHJpcCB0aGUgcGFyYW1ldGVyIHRvIDcgYml0cy4gIE9yIHRoZXkgbWF5IGlnbm9yZSAgQzEKLSAgICAgICBjb250cm9scyAgYW5kICB0cmVhdCAgYWxsIG9mIHRoZSB1cHBlci0xMjggY29kZXMgYXMgcHJpbnQtCi0gICAgICAgYWJsZS4gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyA4IGJpdHMgYnV0IGRvZXMgbm90IG1vZGlmeQotICAgICAgIHRoZSBzdHJpbmcgdG8gcmVmbGVjdCBsb2NhbGUuICBUaGUgPFNUUk9ORz51c2VfbGVnYWN5X2NvZGluZzwvU1RST05HPiBmdW5jLQotICAgICAgIHRpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gY2hhbmdlIHRoZSBvdXRwdXQgb2YgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4uCiAKLSAgICAgICBMaWtld2lzZSwgdGhlIDxTVFJPTkc+bWV0YTwvU1RST05HPiBmdW5jdGlvbiBhbGxvd3MgdGhlICBjYWxsZXIgIHRvICBjaGFuZ2UKLSAgICAgICB0aGUgIG91dHB1dCBvZiA8U1RST05HPmtleW5hbWU8L1NUUk9ORz4sIGkuZS4sIGl0IGRldGVybWluZXMgd2hldGhlciB0byB1c2UKLSAgICAgICB0aGUgYE0tJyBwcmVmaXggZm9yIGBgbWV0YScnIGtleXMgKGNvZGVzIGluIHRoZSByYW5nZSAgMTI4Ci0gICAgICAgdG8gMjU1KS4gIEJvdGggPFNUUk9ORz51c2VfbGVnYWN5X2NvZGluZzwvU1RST05HPiBhbmQgPFNUUk9ORz5tZXRhPC9TVFJPTkc+IHN1Y2NlZWQgb25seSBhZi0KLSAgICAgICB0ZXIgY3Vyc2VzIGlzIGluaXRpYWxpemVkLiAgWC9PcGVuIEN1cnNlcyBkb2VzICBub3QgIGRvY3UtCi0gICAgICAgbWVudCAgdGhlICB0cmVhdG1lbnQgIG9mICBjb2RlcyAxMjggdG8gMTU5LiAgV2hlbiB0cmVhdGluZwotICAgICAgIHRoZW0gYXMgYGBtZXRhJycga2V5cyAob3IgaWYgPFNUUk9ORz5rZXluYW1lPC9TVFJPTkc+IGlzIGNhbGxlZCBiZWZvcmUgaW5pLQotICAgICAgIHRpYWxpemluZyAgY3Vyc2VzKSwgIHRoaXMgIGltcGxlbWVudGF0aW9uICByZXR1cm5zIHN0cmluZ3MKLSAgICAgICBgYE0tXkAnJywgYGBNLV5BJycsIGV0Yy4KLQorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMta2V5bmFtZSI+a2V5bmFtZTwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+a2V5bmFtZTwvU1RST05HPiBmdW5jdGlvbiBtYXkgcmV0dXJuIHRoZSBuYW1lcyBvZiAgdXNlci1kZWZpbmVkCiAgICAgICAgc3RyaW5nICBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIHRlcm1pbmZvIGVuLQogICAgICAgIHRyeSB2aWEgdGhlIDxTVFJPTkc+LXg8L1NUUk9ORz4gb3B0aW9uIG9mIDxTVFJPTkc+dGljPC9TVFJPTkc+LiAgVGhpcyAgaW1wbGVtZW50YXRpb24gIGF1dG8tCkBAIC0yMzcsMjUgKzI5NCwxMzcgQEAKICAgICAgICBsb2FkZWQgIHdoZW4gIHRoZSAgdGVybWluYWwgZGVzY3JpcHRpb24gaXMgcmVhZCBieSB0aGUgbGktCiAgICAgICAgYnJhcnkuCiAKLSAgICAgICBUaGUgPFNUUk9ORz5ub2ZpbHRlcjwvU1RST05HPiByb3V0aW5lIGlzIHNwZWNpZmljIHRvIG5jdXJzZXMuICBJdCAgd2FzICBub3QKLSAgICAgICBzdXBwb3J0ZWQgIG9uICBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCi0gICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gIG5jdXJzZXMgIGV4LQotICAgICAgIHRlbnNpb25zIGJlIGNvbmRpdGlvbmVkIHVzaW5nIE5DVVJTRVNfVkVSU0lPTi4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbm9maWx0ZXJfdXNlX3Rpb2N0bCI+bm9maWx0ZXIvdXNlX3Rpb2N0bDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+bm9maWx0ZXI8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz51c2VfdGlvY3RsPC9TVFJPTkc+ICByb3V0aW5lcyAgYXJlICBzcGVjaWZpYyAgdG8KKyAgICAgICBuY3Vyc2VzLiAgIFRoZXkgIHdlcmUgIG5vdCAgc3VwcG9ydGVkIG9uIFZlcnNpb24gNywgQlNEIG9yCisgICAgICAgU3lzdGVtIFYgaW1wbGVtZW50YXRpb25zLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZQorICAgICAgIGRlcGVuZGluZyAgb24gIG5jdXJzZXMgIGV4dGVuc2lvbnMgIGJlICBjb25kaXRpb25lZCAgdXNpbmcKKyAgICAgICBOQ1VSU0VTX1ZFUlNJT04uCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDM+PGEgbmFtZT0iaDMtcHV0d2luX2dldHdpbiI+cHV0d2luL2dldHdpbjwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIDxTVFJPTkc+cHV0d2luPC9TVFJPTkc+IGFuZCA8U1RST05HPmdldHdpbjwvU1RST05HPiBmdW5jdGlvbnMgaGF2ZSBzZXZlcmFsICBpc3N1ZXMgIHdpdGgKKyAgICAgICBwb3J0YWJpbGl0eToKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSAgZmlsZXMgIHdyaXR0ZW4gYW5kIHJlYWQgYnkgdGhlc2UgZnVuY3Rpb25zIHVzZSBhbgorICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBmb3JtYXQuICBBbHRob3VnaCAgdGhlICBmb3JtYXQKKyAgICAgICAgICAgaXMgIGFuIG9idmlvdXMgdGFyZ2V0IGZvciBzdGFuZGFyZGl6YXRpb24sIGl0IGhhcyBiZWVuCisgICAgICAgICAgIG92ZXJsb29rZWQuCisKKyAgICAgICAgICAgSW50ZXJlc3RpbmdseSBlbm91Z2gsIGFjY29yZGluZyB0byB0aGUgY29weXJpZ2h0IGRhdGVzCisgICAgICAgICAgIGluIFNvbGFyaXMgc291cmNlLCB0aGUgZnVuY3Rpb25zIChhbG9uZyB3aXRoIDxTVFJPTkc+c2NyX2luaXQ8L1NUUk9ORz4sCisgICAgICAgICAgIGV0Yy4pIG9yaWdpbmF0ZWQgd2l0aCB0aGUgIFVuaXZlcnNpdHkgIG9mICBDYWxpZm9ybmlhLAorICAgICAgICAgICBCZXJrZWxleSAgKGluICAxOTgyKSBhbmQgd2VyZSBsYXRlciAoaW4gMTk4OCkgaW5jb3Jwby0KKyAgICAgICAgICAgcmF0ZWQgaW50byBTVnI0LiAgT2RkbHksIHRoZXJlIGFyZSBubyAgc3VjaCAgZnVuY3Rpb25zCisgICAgICAgICAgIGluIHRoZSA0LjNCU0QgY3Vyc2VzIHNvdXJjZXMuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBNb3N0ICBpbXBsZW1lbnRhdGlvbnMgIHNpbXBseSAgZHVtcCAgdGhlIGJpbmFyeSA8U1RST05HPldJTkRPVzwvU1RST05HPgorICAgICAgICAgICBzdHJ1Y3R1cmUgdG8gdGhlIGZpbGUuICAgVGhlc2UgIGluY2x1ZGUgIFNWcjQgIGN1cnNlcywKKyAgICAgICAgICAgTmV0QlNEICBhbmQgIFBEQ3Vyc2VzLCAgYXMgIHdlbGwgYXMgb2xkZXIgbmN1cnNlcyB2ZXItCisgICAgICAgICAgIHNpb25zLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiAoYXMgIHdlbGwgIGFzICB0aGUgIFgvT3BlbgorICAgICAgICAgICB2YXJpYW50ICBvZiAgU29sYXJpcyAgY3Vyc2VzLCBkYXRlZCAxOTk1KSB1c2VzIHRleHR1YWwKKyAgICAgICAgICAgZHVtcHMuCisKKyAgICAgICAgICAgVGhlIGltcGxlbWVudGF0aW9ucyB3aGljaCB1c2UgYmluYXJ5IGR1bXBzIHVzZSAgYmxvY2stCisgICAgICAgICAgIEkvTyAgKHRoZSA8U1RST05HPmZ3cml0ZTwvU1RST05HPiBhbmQgPFNUUk9ORz5mcmVhZDwvU1RST05HPiBmdW5jdGlvbnMpLiAgVGhvc2UgdGhhdCB1c2UKKyAgICAgICAgICAgdGV4dHVhbCBkdW1wcyB1c2UgYnVmZmVyZWQtSS9PLiAgIEEgIGZldyAgYXBwbGljYXRpb25zCisgICAgICAgICAgIG1heSBoYXBwZW4gdG8gd3JpdGUgZXh0cmEgZGF0YSBpbiB0aGUgZmlsZSB1c2luZyB0aGVzZQorICAgICAgICAgICBmdW5jdGlvbnMuICBEb2luZyB0aGF0IGNhbiBydW4gIGludG8gIHByb2JsZW1zICBtaXhpbmcKKyAgICAgICAgICAgYmxvY2stICBhbmQgYnVmZmVyZWQtSS9PLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiByZWR1Y2VzCisgICAgICAgICAgIHRoZSBwcm9ibGVtIG9uIHdyaXRlcyBieSBmbHVzaGluZyB0aGUgb3V0cHV0LiAgIEhvd2V2LQorICAgICAgICAgICBlciwgIHJlYWRpbmcgIGZyb20gIGEgZmlsZSB3cml0dGVuIHVzaW5nIG1peGVkIHNjaGVtZXMKKyAgICAgICAgICAgbWF5IG5vdCBiZSBzdWNjZXNzZnVsLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXVuY3RybF93dW5jdHJsIj51bmN0cmwvd3VuY3RybDwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlICA0ICBkZXNjcmliZXMgIHRoZXNlICBmdW5jLQorICAgICAgIHRpb25zLiAgIEl0ICBzdGF0ZXMgIHRoYXQgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4gYW5kIDxTVFJPTkc+d3VuY3RybDwvU1RST05HPiB3aWxsIHJldHVybiBhCisgICAgICAgbnVsbCBwb2ludGVyIGlmIHVuc3VjY2Vzc2Z1bCwgYnV0IGRvZXMgbm90IGRlZmluZSBhbnkgIGVyLQorICAgICAgIHJvciBjb25kaXRpb25zLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZm9yIHRocmVlIGNhcy0KKyAgICAgICBlczoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSBwYXJhbWV0ZXIgaXMgYSA3LWJpdCBVUy1BU0NJSSBjb2RlLiAgVGhpcyAgaXMgIHRoZQorICAgICAgICAgICBjYXNlIHRoYXQgWC9PcGVuIEN1cnNlcyBkb2N1bWVudGVkLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhlIHBhcmFtZXRlciBpcyBpbiB0aGUgcmFuZ2UgMTI4LTE1OSwgaS5lLiwgYSBDMSBjb24tCisgICAgICAgICAgIHRyb2wgY29kZS4gIElmIDxTVFJPTkc+dXNlX2xlZ2FjeV9jb2Rpbmc8L1NUUk9ORz4gaGFzIGJlZW4gY2FsbGVkICB3aXRoCisgICAgICAgICAgIGEgIDxTVFJPTkc+MjwvU1RST05HPiAgcGFyYW1ldGVyLCA8U1RST05HPnVuY3RybDwvU1RST05HPiByZXR1cm5zIHRoZSBwYXJhbWV0ZXIsIGkuZS4sIGEKKyAgICAgICAgICAgb25lLWNoYXJhY3RlciBzdHJpbmcgd2l0aCB0aGUgcGFyYW1ldGVyIGFzICB0aGUgIGZpcnN0CisgICAgICAgICAgIGNoYXJhY3Rlci4gICBPdGhlcndpc2UsICBpdCAgcmV0dXJucyAifkAiLCAifkEiLCBldGMuLAorICAgICAgICAgICBhbmFsb2dvdXMgdG8gIl5AIiwgIl5BIiwgQzAgY29udHJvbHMuCisKKyAgICAgICAgICAgWC9PcGVuIEN1cnNlcyBkb2VzIG5vdCBkb2N1bWVudCB3aGV0aGVyIDxTVFJPTkc+dW5jdHJsPC9TVFJPTkc+IGNhbiAgYmUKKyAgICAgICAgICAgY2FsbGVkICBiZWZvcmUgIGluaXRpYWxpemluZyBjdXJzZXMuICBUaGlzIGltcGxlbWVudGEtCisgICAgICAgICAgIHRpb24gcGVybWl0cyB0aGF0LCBhbmQgcmV0dXJucyB0aGUgIn5AIiwgZXRjLiwgIHZhbHVlcworICAgICAgICAgICBpbiB0aGF0IGNhc2UuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBwYXJhbWV0ZXIgIHZhbHVlcyAgb3V0c2lkZSB0aGUgMCB0byAyNTUgcmFuZ2UuICA8U1RST05HPnVuY3RybDwvU1RST05HPgorICAgICAgICAgICByZXR1cm5zIGEgbnVsbCBwb2ludGVyLgorCisgICAgICAgVGhlIHN0cmluZ3MgcmV0dXJuZWQgYnkgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4gaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiAgYXJlCisgICAgICAgZGV0ZXJtaW5lZCAgYXQgIGNvbXBpbGUgdGltZSwgc2hvd2luZyBDMSBjb250cm9scyBmcm9tIHRoZQorICAgICAgIHVwcGVyLTEyOCBjb2RlcyB3aXRoIGEgYH4nIHByZWZpeCByYXRoZXIgdGhhbiBgXicuICAgT3RoZXIKKyAgICAgICBpbXBsZW1lbnRhdGlvbnMgIGhhdmUgZGlmZmVyZW50IGNvbnZlbnRpb25zLiAgRm9yIGV4YW1wbGUsCisgICAgICAgdGhleSBtYXkgc2hvdyBib3RoIHNldHMgb2YgY29udHJvbCAgY2hhcmFjdGVycyAgd2l0aCAgYF4nLAorICAgICAgIGFuZCAgc3RyaXAgdGhlIHBhcmFtZXRlciB0byA3IGJpdHMuICBPciB0aGV5IG1heSBpZ25vcmUgQzEKKyAgICAgICBjb250cm9scyBhbmQgdHJlYXQgYWxsIG9mIHRoZSB1cHBlci0xMjggIGNvZGVzICBhcyAgcHJpbnQtCisgICAgICAgYWJsZS4gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyA4IGJpdHMgYnV0IGRvZXMgbm90IG1vZGlmeQorICAgICAgIHRoZSBzdHJpbmcgdG8gcmVmbGVjdCBsb2NhbGUuICBUaGUgPFNUUk9ORz51c2VfbGVnYWN5X2NvZGluZzwvU1RST05HPiBmdW5jLQorICAgICAgIHRpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gY2hhbmdlIHRoZSBvdXRwdXQgb2YgPFNUUk9ORz51bmN0cmw8L1NUUk9ORz4uCisKKyAgICAgICBMaWtld2lzZSwgIHRoZSAgPFNUUk9ORz5tZXRhPC9TVFJPTkc+ICBmdW5jdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byBjaGFuZ2UKKyAgICAgICB0aGUgb3V0cHV0IG9mIDxTVFJPTkc+a2V5bmFtZTwvU1RST05HPiwgaS5lLiwgaXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvICB1c2UKKyAgICAgICB0aGUgYE0tJyBwcmVmaXggZm9yICJtZXRhIiBrZXlzIChjb2RlcyBpbiB0aGUgcmFuZ2UgMTI4IHRvCisgICAgICAgMjU1KS4gIEJvdGggPFNUUk9ORz51c2VfbGVnYWN5X2NvZGluZzwvU1RST05HPiBhbmQgPFNUUk9ORz5tZXRhPC9TVFJPTkc+IHN1Y2NlZWQgb25seSAgYWZ0ZXIKKyAgICAgICBjdXJzZXMgIGlzICBpbml0aWFsaXplZC4gICBYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IGRvY3VtZW50CisgICAgICAgdGhlIHRyZWF0bWVudCBvZiBjb2RlcyAxMjggdG8gMTU5LiAgV2hlbiB0cmVhdGluZyB0aGVtICBhcworICAgICAgICJtZXRhIiAga2V5cyAgKG9yIGlmIDxTVFJPTkc+a2V5bmFtZTwvU1RST05HPiBpcyBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemluZworICAgICAgIGN1cnNlcyksICB0aGlzICBpbXBsZW1lbnRhdGlvbiAgcmV0dXJucyAgc3RyaW5ncyAgICJNLV5AIiwKKyAgICAgICAiTS1eQSIsIGV0Yy4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibGVnYWN5X2NvZGluZy4zeC5odG1sIj5sZWdhY3lfY29kaW5nKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+Y3Vyc19rZXItPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5uZWwoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPmN1cnNfc2NyX2R1bXAoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJsZWdhY3lfY29kaW5nLjN4Lmh0bWwiPmxlZ2FjeV9jb2RpbmcoM3gpPC9BPjwvU1RST05HPi4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPm5lbCgzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Njcl9kdW1wLjN4Lmh0bWwiPmN1cnNfc2NyX2R1bXAoM3gpPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz5sZWdhLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibGVnYWN5X2NvZGluZy4zeC5odG1sIj5jeV9jb2RpbmcoM3gpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLXVuY3RybCI+dW5jdHJsPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWtleW5hbWVfa2V5X25hbWUiPmtleW5hbWUva2V5X25hbWU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZmlsdGVyX25vZmlsdGVyIj5maWx0ZXIvbm9maWx0ZXI8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtdXNlX2VudiI+dXNlX2VudjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy11c2VfdGlvY3RsIj51c2VfdGlvY3RsPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLXB1dHdpbl9nZXR3aW4iPnB1dHdpbi9nZXR3aW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZGVsYXlfb3V0cHV0Ij5kZWxheV9vdXRwdXQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZmx1c2hpbnAiPmZsdXNoaW5wPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1maWx0ZXIiPmZpbHRlcjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1rZXluYW1lIj5rZXluYW1lPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLW5vZmlsdGVyX3VzZV90aW9jdGwiPm5vZmlsdGVyL3VzZV90aW9jdGw8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtcHV0d2luX2dldHdpbiI+cHV0d2luL2dldHdpbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy11bmN0cmxfd3VuY3RybCI+dW5jdHJsL3d1bmN0cmw8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9jdXJzX3ZhcmlhYmxlcy4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2N1cnNfdmFyaWFibGVzLjN4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE5YzNlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9odG1sL21hbi9jdXJzX3ZhcmlhYmxlcy4zeC5odG1sCkBAIC0wLDAgKzEsMTk5IEBACis8IS0tIAorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQ29weXJpZ2h0IChjKSAyMDEwLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBJZDogY3Vyc192YXJpYWJsZXMuM3gsdiAxLjYgMjAxMy8xMi8yMSAxODo0MTozMiB0b20gRXhwIEAKKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KKzxUSVRMRT5jdXJzX3ZhcmlhYmxlcyAzeDwvVElUTEU+Cis8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KKzxCT0RZPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmN1cnNfdmFyaWFibGVzIDN4PC9IMT4KKzxQUkU+Cis8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPgorCisKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPkNPTE9SUzwvU1RST05HPiwgPFNUUk9ORz5DT0xPUl9QQUlSUzwvU1RST05HPiwgPFNUUk9ORz5DT0xTPC9TVFJPTkc+LCA8U1RST05HPkVTQ0RFTEFZPC9TVFJPTkc+LCA8U1RST05HPkxJTkVTPC9TVFJPTkc+LCA8U1RST05HPlRBQlNJWkU8L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz5jdXJzY3I8L1NUUk9ORz4sIDxTVFJPTkc+bmV3c2NyPC9TVFJPTkc+LCA8U1RST05HPnN0ZHNjcjwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGdsb2JhbCB2YXJpYWJsZXMKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPkNPTE9SX1BBSVJTOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Q09MT1JTOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Q09MUzs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPkVTQ0RFTEFZOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+TElORVM7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5UQUJTSVpFOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmN1cnNjcjs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5uZXdzY3I7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+c3Rkc2NyOzwvU1RST05HPgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgVGhpcyBwYWdlIHN1bW1hcml6ZXMgdmFyaWFibGVzIHByb3ZpZGVkIGJ5IHRoZSA8U1RST05HPmN1cnNlczwvU1RST05HPiAgbGktCisgICAgICAgYnJhcnkuICAgQSBtb3JlIGNvbXBsZXRlIGRlc2NyaXB0aW9uIGlzIGdpdmVuIGluIHRoZSA8U1RST05HPmN1cnMtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmVzKDN4KTwvQT48L1NUUk9ORz4gbWFudWFsIHBhZ2UuCisKKyAgICAgICBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24sIHRoZXNlIG1heSBiZSBhY3R1YWwgIHZhcmktCisgICAgICAgYWJsZXMsICAgICBvciAgICBtYWNyb3MgICAgKHNlZSAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGhyZWFkcy4zeC5odG1sIj5jdXJzX3RocmVhZHMoM3gpPC9BPjwvU1RST05HPiAgICBhbmQKKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4pIHdoaWNoIHByb3ZpZGUgcmVhZC1vbmx5IGFjY2VzcyAgdG8gIDxFTT5jdXJzLTwvRU0+CisgICAgICAgPEVNPmVzPC9FTT4ncyAgc3RhdGUuICAgSW4gIGVpdGhlciAgY2FzZSwgYXBwbGljYXRpb25zIHNob3VsZCB0cmVhdAorICAgICAgIHRoZW0gYXMgcmVhZC1vbmx5IHRvIGF2b2lkIGNvbmZ1c2luZyB0aGUgbGlicmFyeS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DT0xPUl9QQUlSUyI+Q09MT1JfUEFJUlM8L2E+PC9IMz48UFJFPgorICAgICAgIEFmdGVyIGluaXRpYWxpemluZyBjdXJzZXMsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgdGhlIG51bS0KKyAgICAgICBiZXIgb2YgY29sb3IgcGFpcnMgd2hpY2ggdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0LiAgVXN1YWwtCisgICAgICAgbHkgdGhlIG51bWJlciBvZiBjb2xvciBwYWlycyAgd2lsbCAgYmUgIHRoZSAgcHJvZHVjdCAgPFNUUk9ORz5DT0wtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5PUlM8L1NUUk9ORz4qPFNUUk9ORz5DT0xPUlM8L1NUUk9ORz4sIGhvd2V2ZXIgdGhpcyBpcyBub3QgYWx3YXlzIHRydWU6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhICBmZXcgIHRlcm1pbmFscyAgdXNlIEhMUyBjb2xvcnMsIHdoaWNoIGRvIG5vdCBmb2xsb3cKKyAgICAgICAgICAgdGhpcyBydWxlCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0ZXJtaW5hbHMgc3VwcG9ydGluZyBhIGxhcmdlIG51bWJlciBvZiBjb2xvcnMgYXJlIGxpbS0KKyAgICAgICAgICAgaXRlZCAgYnkgIHRoZSBudW1iZXIgb2YgY29sb3IgcGFpcnMgdGhhdCBjYW4gYmUgcmVwcmUtCisgICAgICAgICAgIHNlbnRlZCBpbiBhIDxFTT5zaWduZWQ8L0VNPiA8RU0+c2hvcnQ8L0VNPiB2YWx1ZS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DT0xPUlMiPkNPTE9SUzwvYT48L0gzPjxQUkU+CisgICAgICAgQWZ0ZXIgaW5pdGlhbGl6aW5nIGN1cnNlcywgdGhpcyB2YXJpYWJsZSBjb250YWlucyB0aGUgbnVtLQorICAgICAgIGJlciBvZiBjb2xvcnMgd2hpY2ggdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0LgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUNPTFMiPkNPTFM8L2E+PC9IMz48UFJFPgorICAgICAgIEFmdGVyICBpbml0aWFsaXppbmcgIGN1cnNlcywgIHRoaXMgIHZhcmlhYmxlICBjb250YWlucyB0aGUKKyAgICAgICB3aWR0aCBvZiB0aGUgc2NyZWVuLCBpLmUuLCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRVNDREVMQVkiPkVTQ0RFTEFZPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYWYtCisgICAgICAgdGVyIHJlYWRpbmcgYW4gZXNjYXBlIGNoYXJhY3RlciwgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbgorICAgICAgIGluZGl2aWR1YWwgZXNjYXBlIGNoYXJhY3RlciBlbnRlcmVkIG9uIHRoZSAga2V5Ym9hcmQgIGZyb20KKyAgICAgICBlc2NhcGUgIHNlcXVlbmNlcyAgc2VudCAgYnkgY3Vyc29yLSBhbmQgZnVuY3Rpb24ta2V5cyAoc2VlCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUxJTkVTIj5MSU5FUzwvYT48L0gzPjxQUkU+CisgICAgICAgQWZ0ZXIgaW5pdGlhbGl6aW5nICBjdXJzZXMsICB0aGlzICB2YXJpYWJsZSAgY29udGFpbnMgIHRoZQorICAgICAgIGhlaWdodCBvZiB0aGUgc2NyZWVuLCBpLmUuLCB0aGUgbnVtYmVyIG9mIGxpbmVzLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVRBQlNJWkUiPlRBQlNJWkU8L2E+PC9IMz48UFJFPgorICAgICAgIFRoaXMgIHZhcmlhYmxlICBob2xkcyAgdGhlICBudW1iZXIgIG9mIGNvbHVtbnMgdXNlZCBieSB0aGUKKyAgICAgICA8RU0+Y3Vyc2VzPC9FTT4gbGlicmFyeSB3aGVuIGNvbnZlcnRpbmcgYSB0YWIgY2hhcmFjdGVyICB0byAgc3BhY2VzCisgICAgICAgYXMgaXQgYWRkcyB0aGUgdGFiIHRvIGEgd2luZG93IChzZWUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UaGUtQ3VycmVudC1TY3JlZW4iPlRoZSBDdXJyZW50IFNjcmVlbjwvYT48L0gzPjxQUkU+CisgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBjdXJzZXMgdXNlcyBhIHNwZWNpYWwgd2luZG93IDxTVFJPTkc+Y3Vyc2NyPC9TVFJPTkc+CisgICAgICAgdG8gcmVjb3JkIGl0cyB1cGRhdGVzIHRvIHRoZSB0ZXJtaW5hbCBzY3JlZW4uCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVGhlLU5ldy1TY3JlZW4iPlRoZSBOZXcgU2NyZWVuPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGN1cnNlcyB1c2VzIGEgc3BlY2lhbCB3aW5kb3cgPFNUUk9ORz5uZXdzY3I8L1NUUk9ORz4KKyAgICAgICB0byAgaG9sZCAgdXBkYXRlcyAgdG8gIHRoZSB0ZXJtaW5hbCBzY3JlZW4gYmVmb3JlIGFwcGx5aW5nCisgICAgICAgdGhlbSB0byA8U1RST05HPmN1cnNjcjwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UaGUtU3RhbmRhcmQtU2NyZWVuIj5UaGUgU3RhbmRhcmQgU2NyZWVuPC9hPjwvSDM+PFBSRT4KKyAgICAgICBVcG9uIGluaXRpYWxpemluZyBjdXJzZXMsIGEgZGVmYXVsdCB3aW5kb3cgY2FsbGVkICA8U1RST05HPnN0ZHNjcjwvU1RST05HPiwKKyAgICAgICB3aGljaCAgaXMgIHRoZSAgc2l6ZSAgb2YgIHRoZSB0ZXJtaW5hbCBzY3JlZW4sIGlzIGNyZWF0ZWQuCisgICAgICAgTWFueSBjdXJzZXMgZnVuY3Rpb25zIHVzZSB0aGlzIHdpbmRvdy4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSAgIGN1cnNlcyAgIGxpYnJhcnkgICBpcyAgIGluaXRpYWxpemVkICAgdXNpbmcgICBlaXRoZXIKKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPiwgb3IgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2luaXRzY3IuM3guaHRtbCI+Y3Vyc19pbml0c2NyKDN4KTwvQT48L1NUUk9ORz4uCisKKyAgICAgICBJZiAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gIGlzICBjb25maWd1cmVkIHRvIHVzZSBzZXBhcmF0ZSBjdXJzZXMvdGVybWluZm8KKyAgICAgICBsaWJyYXJpZXMsIG1vc3Qgb2YgdGhlc2UgdmFyaWFibGVzIHJlc2lkZSAgaW4gIHRoZSAgY3Vyc2VzCisgICAgICAgbGlicmFyeS4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIEVTQ0RFTEFZICBhbmQgVEFCU0laRSBhcmUgZXh0ZW5zaW9ucywgbm90IHByb3ZpZGVkIGluIG1vc3QKKyAgICAgICBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgY3Vyc2VzLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPiwgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPiwKKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGhyZWFkcy4zeC5odG1sIj5jdXJzX3RocmVhZHMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtX3ZhcmlhYmxlcy4zeC5odG1sIj50ZXJtX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LgorCisKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4KKzwvUFJFPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1DT0xPUl9QQUlSUyI+Q09MT1JfUEFJUlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQ09MT1JTIj5DT0xPUlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQ09MUyI+Q09MUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1FU0NERUxBWSI+RVNDREVMQVk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTElORVMiPkxJTkVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVRBQlNJWkUiPlRBQlNJWkU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVGhlLUN1cnJlbnQtU2NyZWVuIj5UaGUgQ3VycmVudCBTY3JlZW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVGhlLU5ldy1TY3JlZW4iPlRoZSBOZXcgU2NyZWVuPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVRoZS1TdGFuZGFyZC1TY3JlZW4iPlRoZSBTdGFuZGFyZCBTY3JlZW48L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vY3Vyc193aW5kb3cuM3guaHRtbAppbmRleCBkYTYyMTlkLi5jNDc0ZjFjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vY3Vyc193aW5kb3cuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vY3Vyc193aW5kb3cuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsODIgKzI2LDEwNSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogY3Vyc193aW5kb3cuM3gsdiAxLjE0IDIwMDYvMDIvMjUgMjE6NDk6MTkgdG9tIEV4cCBACisgICogQElkOiBjdXJzX3dpbmRvdy4zeCx2IDEuMTkgMjAxNS8wNy8yMSAwODoyNToyMyB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5jdXJzX3dpbmRvdyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmN1cnNfd2luZG93IDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5jdXJzX3dpbmRvdyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc193aW5kb3cuM3guaHRtbCI+Y3Vyc193aW5kb3coM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3dpbmRvdy4zeC5odG1sIj5jdXJzX3dpbmRvdygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5uZXd3aW48L1NUUk9ORz4sIDxTVFJPTkc+ZGVsd2luPC9TVFJPTkc+LCA8U1RST05HPm12d2luPC9TVFJPTkc+LCA8U1RST05HPnN1YndpbjwvU1RST05HPiwgPFNUUk9ORz5kZXJ3aW48L1NUUk9ORz4sIDxTVFJPTkc+bXZkZXJ3aW48L1NUUk9ORz4sIDxTVFJPTkc+ZHVwd2luPC9TVFJPTkc+LAogICAgICAgIDxTVFJPTkc+d3N5bmN1cDwvU1RST05HPiwgPFNUUk9ORz5zeW5jb2s8L1NUUk9ORz4sIDxTVFJPTkc+d2N1cnN5bmN1cDwvU1RST05HPiwgPFNUUk9ORz53c3luY2Rvd248L1NUUk9ORz4gLSBjcmVhdGUgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4KICAgICAgICB3aW5kb3dzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCi0gICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qbmV3d2luKGludDwvU1RST05HPiA8U1RST05HPm5saW5lcyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uY29scyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5iZWdpbl95LDwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmVnaW5feCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWx3aW4oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdndpbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+eCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qc3Vid2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPipvcmlnLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5saW5lcyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uY29scyw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmJlZ2luX3ksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmVnaW5feCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qZGVyd2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPipvcmlnLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm5saW5lcyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5uY29scyw8L1NUUk9ORz4KLSAgICAgICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmJlZ2luX3ksPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+YmVnaW5feCk7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5tdmRlcndpbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnBhcl95LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnBhcl94KTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPldJTkRPVzwvU1RST05HPiA8U1RST05HPipkdXB3aW4oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+d3N5bmN1cChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnN5bmNvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luLDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5iZik7PC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+d2N1cnN5bmN1cChXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qd2luKTs8L1NUUk9ORz4KLSAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz53c3luY2Rvd24oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qbmV3d2luKDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5ubGluZXM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+bmNvbHM8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YmVnaW48L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT54PC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5kZWx3aW4oV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12d2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+eDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KnN1YndpbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPm9yaWc8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5ubGluZXM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+bmNvbHM8L0VNPjxTVFJPTkc+LDwvU1RST05HPgorICAgICAgICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YmVnaW48L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT54PC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qZGVyd2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+b3JpZzwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+CisgICAgICAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPm5saW5lczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5uY29sczwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+CisgICAgICAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPmJlZ2luPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+eTwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPng8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPm12ZGVyd2luKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPnBhcjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnk8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+cGFyPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+eDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KmR1cHdpbihXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+dm9pZDwvU1RST05HPiA8U1RST05HPndzeW5jdXAoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT53aW48L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnN5bmNvayhXSU5ET1c8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPndpbjwvRU0+PFNUUk9ORz4sPC9TVFJPTkc+IDxTVFJPTkc+Ym9vbDwvU1RST05HPiA8RU0+YmY8L0VNPjxTVFJPTkc+KTs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPnZvaWQ8L1NUUk9ORz4gPFNUUk9ORz53Y3Vyc3luY3VwKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPik7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz52b2lkPC9TVFJPTkc+IDxTVFJPTkc+d3N5bmNkb3duKFdJTkRPVzwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz48RU0+d2luPC9FTT48U1RST05HPik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbmV3d2luIj5uZXd3aW48L2E+PC9IMz48UFJFPgogICAgICAgIENhbGxpbmcgPFNUUk9ORz5uZXd3aW48L1NUUk9ORz4gY3JlYXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBuZXcgd2luLQogICAgICAgIGRvdyB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgbGluZXMgYW5kIGNvbHVtbnMuICBUaGUgdXBwZXIKLSAgICAgICBsZWZ0LWhhbmQgIGNvcm5lciBvZiB0aGUgd2luZG93IGlzIGF0IGxpbmUgPEVNPmJlZ2luPC9FTT5fPEVNPnk8L0VNPiwgY29sdW1uCi0gICAgICAgPEVNPmJlZ2luPC9FTT5fPEVNPng8L0VNPi4gIElmIGVpdGhlciA8RU0+bmxpbmVzPC9FTT4gb3IgPEVNPm5jb2xzPC9FTT4gaXMgemVybywgdGhleSAgZGVmYXVsdAotICAgICAgIHRvICA8U1RST05HPkxJTkVTPC9TVFJPTkc+IDxTVFJPTkc+LTwvU1RST05HPiA8RU0+YmVnaW48L0VNPl88RU0+eTwvRU0+IGFuZCA8U1RST05HPkNPTFM8L1NUUk9ORz4gPFNUUk9ORz4tPC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+XzxFTT54PC9FTT4uICBBIG5ldyBmdWxsLXNjcmVlbgotICAgICAgIHdpbmRvdyBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgPFNUUk9ORz5uZXd3aW4oMCwwLDAsMCk8L1NUUk9ORz4uCisgICAgICAgbGVmdC1oYW5kIGNvcm5lciBvZiB0aGUgd2luZG93IGlzIGF0CisgICAgICAgICAgICAgIGxpbmUgPEVNPmJlZ2luPC9FTT5fPEVNPnk8L0VNPiwKKyAgICAgICAgICAgICAgY29sdW1uIDxFTT5iZWdpbjwvRU0+XzxFTT54PC9FTT4KIAorICAgICAgIElmIGVpdGhlciA8RU0+bmxpbmVzPC9FTT4gb3IgPEVNPm5jb2xzPC9FTT4gaXMgemVybywgdGhleSBkZWZhdWx0IHRvCisgICAgICAgICAgICAgIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gPFNUUk9ORz4tPC9TVFJPTkc+IDxFTT5iZWdpbjwvRU0+XzxFTT55PC9FTT4gYW5kCisgICAgICAgICAgICAgIDxTVFJPTkc+Q09MUzwvU1RST05HPiA8U1RST05HPi08L1NUUk9ORz4gPEVNPmJlZ2luPC9FTT5fPEVNPng8L0VNPi4KKworICAgICAgIEEgICBuZXcgICBmdWxsLXNjcmVlbiAgIHdpbmRvdyAgIGlzICAgY3JlYXRlZCAgYnkgIGNhbGxpbmcKKyAgICAgICA8U1RST05HPm5ld3dpbigwLDAsMCwwKTwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1kZWx3aW4iPmRlbHdpbjwvYT48L0gzPjxQUkU+CiAgICAgICAgQ2FsbGluZyA8U1RST05HPmRlbHdpbjwvU1RST05HPiBkZWxldGVzIHRoZSBuYW1lZCB3aW5kb3csIGZyZWVpbmcgYWxsIG1lbW8tCiAgICAgICAgcnkgYXNzb2NpYXRlZCB3aXRoIGl0IChpdCBkb2VzIG5vdCBhY3R1YWxseSBlcmFzZSB0aGUgd2luLQogICAgICAgIGRvdydzIHNjcmVlbiBpbWFnZSkuICBTdWJ3aW5kb3dzIG11c3QgIGJlICBkZWxldGVkICBiZWZvcmUKICAgICAgICB0aGUgbWFpbiB3aW5kb3cgY2FuIGJlIGRlbGV0ZWQuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtbXZ3aW4iPm12d2luPC9hPjwvSDM+PFBSRT4KICAgICAgICBDYWxsaW5nIDxTVFJPTkc+bXZ3aW48L1NUUk9ORz4gbW92ZXMgdGhlIHdpbmRvdyBzbyB0aGF0IHRoZSB1cHBlciBsZWZ0LWhhbmQKICAgICAgICBjb3JuZXIgaXMgYXQgcG9zaXRpb24gKDxFTT54PC9FTT4sIDxFTT55PC9FTT4pLiAgSWYgdGhlIG1vdmUgd291bGQgY2F1c2UgdGhlCiAgICAgICAgd2luZG93IHRvIGJlIG9mZiB0aGUgc2NyZWVuLCBpdCBpcyBhbiBlcnJvciBhbmQgdGhlIHdpbmRvdwogICAgICAgIGlzIG5vdCBtb3ZlZC4gIE1vdmluZyBzdWJ3aW5kb3dzIGlzIGFsbG93ZWQsIGJ1dCBzaG91bGQgYmUKICAgICAgICBhdm9pZGVkLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXN1YndpbiI+c3Vid2luPC9hPjwvSDM+PFBSRT4KICAgICAgICBDYWxsaW5nIDxTVFJPTkc+c3Vid2luPC9TVFJPTkc+IGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgbmV3IHdpbi0KICAgICAgICBkb3cgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGxpbmVzLCA8RU0+bmxpbmVzPC9FTT4sICBhbmQgIGNvbHVtbnMsCiAgICAgICAgPEVNPm5jb2xzPC9FTT4uICAgVGhlICB3aW5kb3cgIGlzIGF0IHBvc2l0aW9uICg8RU0+YmVnaW48L0VNPl88RU0+eTwvRU0+LCA8RU0+YmVnaW48L0VNPl88RU0+eDwvRU0+KSBvbgotICAgICAgIHRoZSBzY3JlZW4uICAoVGhpcyBwb3NpdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgc2NyZWVuLCBhbmQKLSAgICAgICBub3QgdG8gdGhlIHdpbmRvdyA8RU0+b3JpZzwvRU0+LikgIFRoZSB3aW5kb3cgaXMgbWFkZSBpbiB0aGUgbWlkZGxlCi0gICAgICAgb2YgdGhlIHdpbmRvdyA8RU0+b3JpZzwvRU0+LCBzbyB0aGF0IGNoYW5nZXMgIG1hZGUgIHRvICBvbmUgIHdpbmRvdwotICAgICAgIHdpbGwgIGFmZmVjdCAgYm90aCAgd2luZG93cy4gICBUaGUgc3Vid2luZG93IHNoYXJlcyBtZW1vcnkKLSAgICAgICB3aXRoIHRoZSB3aW5kb3cgPEVNPm9yaWc8L0VNPi4gIFdoZW4gdXNpbmcgdGhpcyByb3V0aW5lLCBpdCBpcyBuZWMtCi0gICAgICAgZXNzYXJ5ICB0byBjYWxsIDxTVFJPTkc+dG91Y2h3aW48L1NUUk9ORz4gb3IgPFNUUk9ORz50b3VjaGxpbmU8L1NUUk9ORz4gb24gPEVNPm9yaWc8L0VNPiBiZWZvcmUgY2FsbC0KLSAgICAgICBpbmcgPFNUUk9ORz53cmVmcmVzaDwvU1RST05HPiBvbiB0aGUgc3Vid2luZG93LgorICAgICAgIHRoZSBzY3JlZW4uICBUaGUgc3Vid2luZG93IHNoYXJlcyBtZW1vcnkgd2l0aCAgdGhlICB3aW5kb3cKKyAgICAgICA8RU0+b3JpZzwvRU0+LCAgc28gdGhhdCBjaGFuZ2VzIG1hZGUgdG8gb25lIHdpbmRvdyB3aWxsIGFmZmVjdCBib3RoCisgICAgICAgd2luZG93cy4gIFdoZW4gdXNpbmcgdGhpcyByb3V0aW5lLCBpdCBpcyBuZWNlc3NhcnkgdG8gY2FsbAorICAgICAgIDxTVFJPTkc+dG91Y2h3aW48L1NUUk9ORz4gIG9yICA8U1RST05HPnRvdWNobGluZTwvU1RST05HPiBvbiA8RU0+b3JpZzwvRU0+IGJlZm9yZSBjYWxsaW5nIDxTVFJPTkc+d3JlZnJlc2g8L1NUUk9ORz4gb24KKyAgICAgICB0aGUgc3Vid2luZG93LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWRlcndpbiI+ZGVyd2luPC9hPjwvSDM+PFBSRT4KICAgICAgICBDYWxsaW5nIDxTVFJPTkc+ZGVyd2luPC9TVFJPTkc+IGlzIHRoZSBzYW1lIGFzIGNhbGxpbmcgPFNUUk9ORz5zdWJ3aW4sPC9TVFJPTkc+IGV4Y2VwdCAgdGhhdAogICAgICAgIDxFTT5iZWdpbjwvRU0+XzxFTT55PC9FTT4gYW5kIDxFTT5iZWdpbjwvRU0+XzxFTT54PC9FTT4gYXJlIHJlbGF0aXZlIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHdpbi0KICAgICAgICBkb3cgPEVNPm9yaWc8L0VNPiByYXRoZXIgdGhhbiB0aGUgc2NyZWVuLiAgVGhlcmUgaXMgIG5vICBkaWZmZXJlbmNlCkBAIC0xMTQsMjYgKzEzNiwzOCBAQAogICAgICAgIHBsYXkgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSAgcGFyZW50ICB3aW5kb3cgIGF0ICB0aGUgIHNhbWUKICAgICAgICBwaHlzaWNhbCBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWR1cHdpbiI+ZHVwd2luPC9hPjwvSDM+PFBSRT4KICAgICAgICBDYWxsaW5nICA8U1RST05HPmR1cHdpbjwvU1RST05HPiAgY3JlYXRlcyAgYW4gZXhhY3QgZHVwbGljYXRlIG9mIHRoZSB3aW5kb3cKICAgICAgICA8RU0+d2luPC9FTT4uCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtd3N5bmN1cCI+d3N5bmN1cDwvYT48L0gzPjxQUkU+CiAgICAgICAgQ2FsbGluZyA8U1RST05HPndzeW5jdXA8L1NUUk9ORz4gdG91Y2hlcyBhbGwgbG9jYXRpb25zIGluIGFuY2VzdG9ycyBvZiAgPEVNPndpbjwvRU0+CiAgICAgICAgdGhhdCAgYXJlIGNoYW5nZWQgaW4gPEVNPndpbjwvRU0+LiAgSWYgPFNUUk9ORz5zeW5jb2s8L1NUUk9ORz4gaXMgY2FsbGVkIHdpdGggc2Vjb25kCiAgICAgICAgYXJndW1lbnQgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IHRoZW4gPFNUUk9ORz53c3luY3VwPC9TVFJPTkc+IGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW5ldi0KICAgICAgICBlciB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgd2luZG93LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXdzeW5jZG93biI+d3N5bmNkb3duPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+d3N5bmNkb3duPC9TVFJPTkc+ICByb3V0aW5lICB0b3VjaGVzIGVhY2ggbG9jYXRpb24gaW4gPEVNPndpbjwvRU0+IHRoYXQKICAgICAgICBoYXMgYmVlbiB0b3VjaGVkIGluIGFueSBvZiAgaXRzICBhbmNlc3RvciAgd2luZG93cy4gICBUaGlzCiAgICAgICAgcm91dGluZSAgaXMgIGNhbGxlZCBieSA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+LCBzbyBpdCBzaG91bGQgYWxtb3N0IG5ldmVyCiAgICAgICAgYmUgbmVjZXNzYXJ5IHRvIGNhbGwgaXQgbWFudWFsbHkuCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtd2N1cnN5bmN1cCI+d2N1cnN5bmN1cDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIHJvdXRpbmUgPFNUUk9ORz53Y3Vyc3luY3VwPC9TVFJPTkc+IHVwZGF0ZXMgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uCiAgICAgICAgb2YgIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSB3aW5kb3cgdG8gcmVmbGVjdCB0aGUgY3VycmVudAogICAgICAgIGN1cnNvciBwb3NpdGlvbiBvZiB0aGUgd2luZG93LgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgUm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXAtCiAgICAgICAgb24gIGZhaWx1cmUgIGFuZCA8U1RST05HPk9LPC9TVFJPTkc+IChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlCiAgICAgICAgb3RoZXIgdGhhbiA8U1RST05HPkVSUjwvU1RST05HPiIpIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgpAQCAtMTQzLDM0ICsxNzcsNTQgQEAKICAgICAgICBYL09wZW4gZGVmaW5lcyBubyBlcnJvciBjb25kaXRpb25zLiAgSW4gIHRoaXMgIGltcGxlbWVudGEtCiAgICAgICAgdGlvbgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+ZGVsd2luPC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJucyAgYW4gIGVycm9yICBpZiAgdGhlICB3aW5kb3cgcG9pbnRlciBpcwotICAgICAgICAgICAgICAgICAgIG51bGwsIG9yIGlmIHRoZSB3aW5kb3cgaXMgdGhlIHBhcmVudCBvZiBhbm90aC0KLSAgICAgICAgICAgICAgICAgICBlciB3aW5kb3cuCisgICAgICAgPFNUUk9ORz5kZWx3aW48L1NUUk9ORz4KKyAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwsIG9yIGlmCisgICAgICAgICAgICB0aGUgd2luZG93IGlzIHRoZSBwYXJlbnQgb2YgYW5vdGhlciB3aW5kb3cuCiAKLSAgICAgICAgICAgICAgICAgICBUaGlzICBpbXBsZW1lbnRhdGlvbiAgYWxzbyBtYWludGFpbnMgYSBsaXN0IG9mCi0gICAgICAgICAgICAgICAgICAgd2luZG93cywgYW5kIGNoZWNrcyB0aGF0IHRoZSBwb2ludGVyIHBhc3NlZCB0bwotICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+ZGVsd2luPC9TVFJPTkc+ICBpcyAgb25lICB0aGF0IGl0IGNyZWF0ZWQsIHJldHVybmluZyBhbgotICAgICAgICAgICAgICAgICAgIGVycm9yIGlmIGl0IHdhcyBub3QuLgorICAgICAgIDxTVFJPTkc+ZGVyd2luPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmICB0aGUgIHBhcmVudCAgd2luZG93ICBwb2ludGVyICBpcworICAgICAgICAgICAgbnVsbCwgIG9yICBpZiAgYW55ICBvZiBpdHMgb3JkaW5hdGVzIG9yIGRpbWVuc2lvbnMgaXMKKyAgICAgICAgICAgIG5lZ2F0aXZlLCBvciBpZiB0aGUgcmVzdWx0aW5nIHdpbmRvdyBkb2VzIG5vdCBmaXQgaW4tCisgICAgICAgICAgICBzaWRlIHRoZSBwYXJlbnQgd2luZG93LgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+bXZkZXJ3aW48L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yICBpZiAgdGhlICB3aW5kb3cgIHBvaW50ZXIgIGlzCi0gICAgICAgICAgICAgICAgICAgbnVsbCwgIG9yICBpZiBzb21lIHBhcnQgb2YgdGhlIHdpbmRvdyB3b3VsZCBiZQotICAgICAgICAgICAgICAgICAgIHBsYWNlZCBvZmYtc2NyZWVuLgorICAgICAgIDxTVFJPTkc+ZHVwd2luPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogCi0gICAgICAgICAgICAgIDxTVFJPTkc+bXZ3aW48L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yICBpZiAgdGhlICB3aW5kb3cgIHBvaW50ZXIgIGlzCi0gICAgICAgICAgICAgICAgICAgbnVsbCwgIG9yIGlmIHRoZSB3aW5kb3cgaXMgcmVhbGx5IGEgcGFkLCBvciBpZgotICAgICAgICAgICAgICAgICAgIHNvbWUgcGFydCBvZiB0aGUgd2luZG93IHdvdWxkIGJlICBwbGFjZWQgIG9mZi0KLSAgICAgICAgICAgICAgICAgICBzY3JlZW4uCisgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGFsc28gbWFpbnRhaW5zIGEgbGlzdCBvZiB3aW5kb3dzLAorICAgICAgICAgICAgYW5kIGNoZWNrcyB0aGF0IHRoZSBwb2ludGVyIHBhc3NlZCB0byA8U1RST05HPmRlbHdpbjwvU1RST05HPiAgaXMgIG9uZQorICAgICAgICAgICAgdGhhdCBpdCBjcmVhdGVkLCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgaXQgd2FzIG5vdC4uCiAKLSAgICAgICAgICAgICAgPFNUUk9ORz5zeW5jb2s8L1NUUk9ORz4KLSAgICAgICAgICAgICAgICAgICByZXR1cm5zICBhbiAgZXJyb3IgIGlmICB0aGUgIHdpbmRvdyBwb2ludGVyIGlzCi0gICAgICAgICAgICAgICAgICAgbnVsbC4KKyAgICAgICA8U1RST05HPm12ZGVyd2luPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCBvciBpZgorICAgICAgICAgICAgc29tZSBwYXJ0IG9mIHRoZSB3aW5kb3cgd291bGQgYmUgcGxhY2VkIG9mZi1zY3JlZW4uCisKKyAgICAgICA8U1RST05HPm12d2luPC9TVFJPTkc+CisgICAgICAgICAgICByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCBvciBpZgorICAgICAgICAgICAgdGhlICB3aW5kb3cgIGlzICByZWFsbHkgYSBwYWQsIG9yIGlmIHNvbWUgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIHdpbmRvdyB3b3VsZCBiZSBwbGFjZWQgb2ZmLXNjcmVlbi4KKworICAgICAgIDxTVFJPTkc+bmV3d2luPC9TVFJPTkc+CisgICAgICAgICAgICB3aWxsIGZhaWwgaWYgZWl0aGVyIG9mICBpdHMgIGJlZ2lubmluZyAgb3JkaW5hdGVzICBpcworICAgICAgICAgICAgbmVnYXRpdmUsIG9yIGlmIGVpdGhlciB0aGUgbnVtYmVyIG9mIGxpbmVzIG9yIGNvbHVtbnMKKyAgICAgICAgICAgIGlzIG5lZ2F0aXZlLgorCisgICAgICAgPFNUUk9ORz5zeW5jb2s8L1NUUk9ORz4KKyAgICAgICAgICAgIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisKKyAgICAgICA8U1RST05HPnN1YndpbjwvU1RST05HPgorICAgICAgICAgICAgcmV0dXJucyBhbiBlcnJvciBpZiAgdGhlICBwYXJlbnQgIHdpbmRvdyAgcG9pbnRlciAgaXMKKyAgICAgICAgICAgIG51bGwsICBvciAgaWYgIGFueSAgb2YgaXRzIG9yZGluYXRlcyBvciBkaW1lbnNpb25zIGlzCisgICAgICAgICAgICBuZWdhdGl2ZSwgb3IgaWYgdGhlIHJlc3VsdGluZyB3aW5kb3cgZG9lcyBub3QgZml0IGluLQorICAgICAgICAgICAgc2lkZSB0aGUgcGFyZW50IHdpbmRvdy4KKworICAgICAgIFRoZSAgZnVuY3Rpb25zIHdoaWNoIHJldHVybiBhIHdpbmRvdyBwb2ludGVyIG1heSBhbHNvIGZhaWwKKyAgICAgICBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbWVtb3J5IGZvciBpdHMgIGRhdGEgIHN0cnVjdHVyZXMuCisgICAgICAgQW55ICBvZiAgdGhlc2UgIGZ1bmN0aW9ucyAgd2lsbCBmYWlsIGlmIHRoZSBzY3JlZW4gaGFzIG5vdAorICAgICAgIGJlZW4gaW5pdGlhbGl6ZWQsIGkuZS4sIHdpdGggPFNUUk9ORz5pbml0c2NyPC9TVFJPTkc+IG9yIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIElmIG1hbnkgc21hbGwgY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgd2luZG93LCB0aGUgIDxTVFJPTkc+d3N5bmN1cDwvU1RST05HPgogICAgICAgIG9wdGlvbiBjb3VsZCBkZWdyYWRlIHBlcmZvcm1hbmNlLgogCkBAIC0xNzgsNyArMjMyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5CVUdTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUJVR1MiPkJVR1M8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgc3Vid2luZG93ICBmdW5jdGlvbnMgKDxFTT5zdWJ3aW48L0VNPiwgPEVNPmRlcndpbjwvRU0+LCA8RU0+bXZkZXJ3aW48L0VNPiwgPFNUUk9ORz53c3luLTwvU1RST05HPgogICAgICAgIDxTVFJPTkc+Y3VwPC9TVFJPTkc+LCA8U1RST05HPndzeW5jZG93bjwvU1RST05HPiwgPFNUUk9ORz53Y3Vyc3luY3VwPC9TVFJPTkc+LCA8U1RST05HPnN5bmNvazwvU1RST05HPikgYXJlIGZsYWt5LCBpbmNvbXBsZXRlLQogICAgICAgIGx5IGltcGxlbWVudGVkLCBhbmQgbm90IHdlbGwgdGVzdGVkLgpAQCAtMTkzLDIzICsyNDcsNDMgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgWFNJICBDdXJzZXMgIHN0YW5kYXJkLCAgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuYy0KICAgICAgICB0aW9ucy4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdG91Y2guM3guaHRtbCI+Y3Vyc190b3VjaCgzeCk8L0E+PC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2goM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+Y3Vyc192YXJpLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+YWJsZXMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfd2luZG93LjN4Lmh0bWwiPmN1cnNfd2luZG93KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1uZXd3aW4iPm5ld3dpbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1kZWx3aW4iPmRlbHdpbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1tdndpbiI+bXZ3aW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtc3Vid2luIj5zdWJ3aW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZGVyd2luIj5kZXJ3aW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtZHVwd2luIj5kdXB3aW48L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtd3N5bmN1cCI+d3N5bmN1cDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy13c3luY2Rvd24iPndzeW5jZG93bjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy13Y3Vyc3luY3VwIj53Y3Vyc3luY3VwPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUJVR1MiPkJVR1M8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2RlZmF1bHRfY29sb3JzLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbAppbmRleCA0YzllODAxLi40NmUxZmRmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZGVmYXVsdF9jb2xvcnMuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzIgKzI3LDMzIEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk3LDE5OTksMjAwMCwyMDA1Ci0gICogQElkOiBkZWZhdWx0X2NvbG9ycy4zeCx2IDEuMjAgMjAwNi8xMi8yNCAxNTowMjo1MyB0b20gRXhwIEAKKyAgKiBASWQ6IGRlZmF1bHRfY29sb3JzLjN4LHYgMS4yMyAyMDExLzAxLzAzIDIxOjUyOjI3IFRpbS52YW4uZGVyLk1vbGVuIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+ZGVmYXVsdF9jb2xvcnMgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5kZWZhdWx0X2NvbG9ycyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+ZGVmYXVsdF9jb2xvcnMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImRlZmF1bHRfY29sb3JzLjN4Lmh0bWwiPmRlZmF1bHRfY29sb3JzKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+ZGVmYXVsdF9jb2xvcnMoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+dXNlX2RlZmF1bHRfY29sb3JzPC9TVFJPTkc+LCA8U1RST05HPmFzc3VtZV9kZWZhdWx0X2NvbG9yczwvU1RST05HPiAtIHVzZSB0ZXJtaW5hbCdzCiAgICAgICAgZGVmYXVsdCBjb2xvcnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVzZV9kZWZhdWx0X2NvbG9ycyh2b2lkKTs8L1NUUk9ORz4KQEAgLTYxLDcgKzYxLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8RU0+dXNlPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+ZGVmYXVsdDwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmNvbG9ycygpPC9FTT4gYW5kIDxFTT5hc3N1bWU8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5kZWZhdWx0PC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+Y29sb3JzKCk8L0VNPiBmdW5jLQogICAgICAgIHRpb25zIGFyZSBleHRlbnNpb25zIHRvIHRoZSBjdXJzZXMgbGlicmFyeS4gIFRoZXkgYXJlIHVzZWQKICAgICAgICB3aXRoIHRlcm1pbmFscyB0aGF0IHN1cHBvcnQgSVNPIDY0MjkgY29sb3IsIG9yIGVxdWl2YWxlbnQuCkBAIC0xMTEsMTYgKzExMSwxNiBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4KICAgICAgICBvbiBzdWNjZXNzLiAgVGhleSB3aWxsIGZhaWwgaWYgZWl0aGVyICB0aGUgIHRlcm1pbmFsICBkb2VzCiAgICAgICAgbm90ICBzdXBwb3J0ICB0aGUgPEVNPm9yaWc8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4gb3IgPEVNPm9yaWc8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5jb2xvcnM8L0VNPiBjYXBhYmlsaXR5LiAgSWYKLSAgICAgICB0aGUgPEVNPmluaXRpYWxpemU8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT5wYWlyPC9FTT4gY2FwYWJpbGl0eSBpcyBmb3VuZCwgIHRoaXMgIGNhdXNlcyAgYW4KLSAgICAgICBlcnJvciBhcyB3ZWxsLgorICAgICAgIHRoZSA8RU0+aW5pdGlhbGl6ZTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnBhaXI8L0VNPiBjYXBhYmlsaXR5IGlzIG5vdCBmb3VuZCwgIHRoaXMgIGNhdXNlcworICAgICAgIGFuIGVycm9yIGFzIHdlbGwuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBBc3NvY2lhdGVkICB3aXRoICB0aGlzICBleHRlbnNpb24sICB0aGUgPFNUUk9ORz5pbml0X3BhaXI8L1NUUk9ORz4gZnVuY3Rpb24KICAgICAgICBhY2NlcHRzIG5lZ2F0aXZlIGFyZ3VtZW50cyB0byBzcGVjaWZ5ICBkZWZhdWx0ICBmb3JlZ3JvdW5kCiAgICAgICAgb3IgYmFja2dyb3VuZCBjb2xvcnMuCkBAIC0xNTAsNyArMTUwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGFyZSBzcGVjaWZpYyB0byAgbmN1cnNlcy4gICBUaGV5ICB3ZXJlICBub3QKICAgICAgICBzdXBwb3J0ZWQgIG9uICBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gdGhlbSBiZSAgY29uLQpAQCAtMTU4LDEyICsxNTgsMTIgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImRlZC4xLmh0bWwiPmRlZCgxKTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPmRlZCgxKTwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgogICAgICAgIFRob21hcyAgRGlja2V5ICAoZnJvbSAgYW4gYW5hbHlzaXMgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IKICAgICAgICBjb2xvciB4dGVybSBmb3IgWEZyZWU4NiAzLjEuMkMsIEZlYnJ1YXJ5IDE5OTYpLgogCkBAIC0xNzEsMTAgKzE3MSwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZGVmYXVsdF9jb2xvcnMuM3guaHRtbCI+ZGVmYXVsdF9jb2xvcnMoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9kZWZpbmVfa2V5LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZGVmaW5lX2tleS4zeC5odG1sCmluZGV4IDBhNmI1NGIuLmUxMmQ5ODkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9kZWZpbmVfa2V5LjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2RlZmluZV9rZXkuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzggKzI3LDM5IEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk3Ci0gICogQElkOiBkZWZpbmVfa2V5LjN4LHYgMS4xMiAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgQAorICAqIEBJZDogZGVmaW5lX2tleS4zeCx2IDEuMTQgMjAxMC8xMi8wNCAxODo0OToyMCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5kZWZpbmVfa2V5IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+ZGVmaW5lX2tleSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+ZGVmaW5lX2tleSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZGVmaW5lX2tleS4zeC5odG1sIj5kZWZpbmVfa2V5KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+ZGVmaW5lX2tleTwvU1RST05HPiAtIGRlZmluZSBhIGtleWNvZGUKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmRlZmluZV9rZXkoY29uc3Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KmRlZmluaXRpb24sPC9TVFJPTkc+IDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+a2V5Y29kZSk7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuICBJdCBwZXJtaXRzIGFuCiAgICAgICAgYXBwbGljYXRpb24gdG8gZGVmaW5lIGtleWNvZGVzICB3aXRoICB0aGVpciAgY29ycmVzcG9uZGluZwogICAgICAgIGNvbnRyb2wgIHN0cmluZ3MsICBzbyB0aGF0IHRoZSBuY3Vyc2VzIGxpYnJhcnkgd2lsbCBpbnRlci0KQEAgLTczLDM2ICs3Myw0NSBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGUga2V5Y29kZSAgbXVzdCAgYmUgIGdyZWF0ZXIgIHRoYW4gIHplcm8sICBlbHNlICBFUlIgIGlzCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSBrZXljb2RlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8sIGFuZCB0aGUgc3RyaW5nIG5vbi0KKyAgICAgICBudWxsLCBvdGhlcndpc2UgRVJSIGlzIHJldHVybmVkLiAgRVJSIG1heSBhbHNvIGJlIHJldHVybmVkCisgICAgICAgaWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBhbGxvY2F0ZSAgdGhlICBkYXRhICB0bworICAgICAgIHN0b3JlICB0aGUgIGRlZmluaXRpb24uICAgSWYgIG5vICBlcnJvciBpcyBkZXRlY3RlZCwgT0sgaXMKICAgICAgICByZXR1cm5lZC4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSAgcm91dGluZXMgIGFyZSAgc3BlY2lmaWMgIHRvIG5jdXJzZXMuICBUaGV5IHdlcmUgbm90Ci0gICAgICAgc3VwcG9ydGVkIG9uIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSAgViAgaW1wbGVtZW50YXRpb25zLgotICAgICAgIEl0ICBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiB0aGVtIGJlIGNvbi0KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIHJvdXRpbmVzIGFyZSBzcGVjaWZpYyB0byAgbmN1cnNlcy4gICBUaGV5ICB3ZXJlICBub3QKKyAgICAgICBzdXBwb3J0ZWQgIG9uICBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gdGhlbSBiZSAgY29uLQogICAgICAgIGRpdGlvbmVkIHVzaW5nIE5DVVJTRVNfVkVSU0lPTi4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5b2suM3guaHRtbCI+a2V5b2soM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJrZXlfZGVmaW5lZC4zeC5odG1sIj5rZXlfZGVmaW5lZCgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1IiPkFVVEhPUjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhvbWFzIERpY2tleS4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZGVmaW5lX2tleS4zeC5odG1sIj5kZWZpbmVfa2V5KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZm9ybS4zeC5odG1sCmluZGV4IGEyMTM1ZjMuLjgyN2Q5N2EgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm0uM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDM2ICsyNywzNyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybS4zeCx2IDEuMjIgMjAwOC8xMC8xMSAyMDo0ODoxMSB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm0uM3gsdiAxLjI2IDIwMTUvMDgvMDIgMTg6MTQ6NTAgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm0gM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm0gM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm08L1NUUk9ORz4gLSBjdXJzZXMgZXh0ZW5zaW9uIGZvciBwcm9ncmFtbWluZyBmb3JtcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIDxTVFJPTkc+Zm9ybTwvU1RST05HPiBsaWJyYXJ5IHByb3ZpZGVzIHRlcm1pbmFsLWluZGVwZW5kZW50IGZhY2lsaXRpZXMKICAgICAgICBmb3IgY29tcG9zaW5nIGZvcm0gc2NyZWVucyAgb24gIGNoYXJhY3Rlci1jZWxsICB0ZXJtaW5hbHMuCiAgICAgICAgVGhlICBsaWJyYXJ5ICBpbmNsdWRlczogIGZpZWxkICByb3V0aW5lcywgd2hpY2ggY3JlYXRlIGFuZApAQCAtNzcsNyArNzcsOSBAQAogICAgICAgIEEgIGN1cnNlcyAgaW5pdGlhbGl6YXRpb24gIHJvdXRpbmUgc3VjaCBhcyA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gbXVzdCBiZQogICAgICAgIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucy4KIAotICAgPFNUUk9ORz5DdXJyZW50PC9TVFJPTkc+IDxTVFJPTkc+RGVmYXVsdDwvU1RST05HPiA8U1RST05HPlZhbHVlczwvU1RST05HPiA8U1RST05HPmZvcjwvU1RST05HPiA8U1RST05HPkZpZWxkPC9TVFJPTkc+IDxTVFJPTkc+QXR0cmlidXRlczwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DdXJyZW50LURlZmF1bHQtVmFsdWVzLWZvci1GaWVsZC1BdHRyaWJ1dGVzIj5DdXJyZW50IERlZmF1bHQgVmFsdWVzIGZvciBGaWVsZCBBdHRyaWJ1dGVzPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz5mb3JtPC9TVFJPTkc+IGxpYnJhcnkgIG1haW50YWlucyAgYSAgZGVmYXVsdCAgdmFsdWUgIGZvciAgZmllbGQKICAgICAgICBhdHRyaWJ1dGVzLiAgIFlvdSAgY2FuICBnZXQgb3Igc2V0IHRoaXMgZGVmYXVsdCBieSBjYWxsaW5nCiAgICAgICAgdGhlIGFwcHJvcHJpYXRlIDxTVFJPTkc+c2V0XzwvU1RST05HPiBvciAgcmV0cmlldmFsICByb3V0aW5lICB3aXRoICBhICA8U1RST05HPk5VTEw8L1NUUk9ORz4KQEAgLTg1LDcgKzg3LDkgQEAKICAgICAgICBhZmZlY3RzIGZ1dHVyZSBmaWVsZCBjcmVhdGlvbnMsIGJ1dCBkb2VzICBub3QgIGNoYW5nZSAgdGhlCiAgICAgICAgcmVuZGVyaW5nIG9mIGZpZWxkcyBhbHJlYWR5IGNyZWF0ZWQuCiAKLSAgIDxTVFJPTkc+Um91dGluZTwvU1RST05HPiA8U1RST05HPk5hbWU8L1NUUk9ORz4gPFNUUk9ORz5JbmRleDwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Sb3V0aW5lLU5hbWUtSW5kZXgiPlJvdXRpbmUgTmFtZSBJbmRleDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICBmb2xsb3dpbmcgIHRhYmxlIGxpc3RzIGVhY2ggPFNUUk9ORz5mb3JtPC9TVFJPTkc+IHJvdXRpbmUgYW5kIHRoZSBuYW1lCiAgICAgICAgb2YgdGhlIG1hbnVhbCBwYWdlIG9uIHdoaWNoIGl0IGlzIGRlc2NyaWJlZC4KIApAQCAtMTE1LDYgKzExOSw3IEBACiAKICAgICAgICBmaWVsZF91c2VycHRyICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwiPmZvcm1fZmllbGRfdXNlcnB0cigzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgZm9ybV9kcml2ZXIgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZHJpdmVyLjN4Lmh0bWwiPmZvcm1fZHJpdmVyKDN4KTwvQT48L1NUUk9ORz4KKyAgICAgICBmb3JtX2RyaXZlcl93ICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9kcml2ZXIuM3guaHRtbCI+Zm9ybV9kcml2ZXIoM3gpPC9BPjwvU1RST05HPioKICAgICAgICBmb3JtX2ZpZWxkcyAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZC4zeC5odG1sIj5mb3JtX2ZpZWxkKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICBmb3JtX2luaXQgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faG9vaygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgZm9ybV9vcHRzICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fb3B0cy4zeC5odG1sIj5mb3JtX29wdHMoM3gpPC9BPjwvU1RST05HPgpAQCAtMTY4LDcgKzE3Myw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBwb2ludGVycyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+ICBvbiAgZXJyb3IsICBhbmQKICAgICAgICBzZXQgIGVycm5vICB0byAgdGhlICBjb3JyZXNwb25kaW5nICBlcnJvci1jb2RlIHJldHVybmVkIGJ5CiAgICAgICAgZnVuY3Rpb25zIHJldHVybmluZyBhbiBpbnRlZ2VyLiAgUm91dGluZXMgdGhhdCAgcmV0dXJuICBhbgpAQCAtMjEzLDQ2ICsyMTgsNTUgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4gYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gImZvcm1fIiBmb3IKLSAgICAgICBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIGVudHJ5IHBvaW50cy4KLQotCi08L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGVzIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPiBhbmQgPFNUUk9ORz4mbHQ7ZXRpLmgmZ3Q7PC9TVFJPTkc+LgogCi0gICAgICAgSW4gIHlvdXIgIGxpYnJhcnkgIGxpc3QsICBsaWJmb3JtLmEgc2hvdWxkIGJlIGJlZm9yZSBsaWJuLQorICAgICAgIEluIHlvdXIgbGlicmFyeSBsaXN0LCBsaWJmb3JtLmEgIHNob3VsZCAgYmUgIGJlZm9yZSAgbGlibi0KICAgICAgICBjdXJzZXMuYTsgdGhhdCBpcywgeW91IHdhbnQgdG8gc2F5IGAtbGZvcm0gLWxuY3Vyc2VzJywgbm90Ci0gICAgICAgdGhlICBvdGhlciAgd2F5ICBhcm91bmQgKHdoaWNoIHdvdWxkIGdpdmUgeW91IGEgbGluayBlcnJvcgorICAgICAgIHRoZSBvdGhlciB3YXkgYXJvdW5kICh3aGljaCB3b3VsZCBnaXZlIHlvdSAgYSAgbGluayAgZXJyb3IKICAgICAgICB1c2luZyBtb3N0IGxpbmtlcnMpLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5jdXJzZXMKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yICBuY3Vyc2VzCiAgICAgICAgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IGFuZCByZWxhdGVkIHBhZ2VzIHdob3NlIG5hbWVzIGJlZ2luICJmb3JtXyIgZm9yCisgICAgICAgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCisKKyAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA2LjAgKHBhdGNoIDIwMTUwODA4KS4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1DdXJyZW50LURlZmF1bHQtVmFsdWVzLWZvci1GaWVsZC1BdHRyaWJ1dGVzIj5DdXJyZW50IERlZmF1bHQgVmFsdWVzIGZvciBGaWVsZCBBdHRyaWJ1dGVzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVJvdXRpbmUtTmFtZS1JbmRleCI+Um91dGluZSBOYW1lIEluZGV4PC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fY3Vyc29yLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZm9ybV9jdXJzb3IuM3guaHRtbAppbmRleCBhZjM0NzAxLi5jMzc3ZmMwIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9jdXJzb3IuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9jdXJzb3IuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDM3ICsyNywzOCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9jdXJzb3IuM3gsdiAxLjYgMjAwNi8xMS8wNCAxODo1MDoyNCB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fY3Vyc29yLjN4LHYgMS44IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9jdXJzb3IgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2N1cnNvciAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Zm9ybV9jdXJzb3IgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fY3Vyc29yLjN4Lmh0bWwiPmZvcm1fY3Vyc29yKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9jdXJzb3IuM3guaHRtbCI+Zm9ybV9jdXJzb3IoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Zm9ybV9jdXJzb3I8L1NUUk9ORz4gLSBwb3NpdGlvbiBhIGZvcm0gd2luZG93IGN1cnNvcgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHBvc19mb3JtX2N1cnNvcihGT1JNICpmb3JtKTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+cG9zX2Zvcm1fY3Vyc29yPC9TVFJPTkc+ICByZXN0b3JlcyB0aGUgY3Vyc29yIHRvIHRoZQogICAgICAgIHBvc2l0aW9uIHJlcXVpcmVkIGZvciB0aGUgZm9ybXMgZHJpdmVyICB0byAgY29udGludWUgIHByby0KICAgICAgICBjZXNzaW5nICByZXF1ZXN0cy4gICBUaGlzICBpcyB1c2VmdWwgYWZ0ZXIgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcm91dGluZXMKQEAgLTY3LDcgKzY3LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoaXMgcm91dGluZSByZXR1cm5zIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KQEAgLTg0LDI0ICs4NCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zIGxpYnJhcnkuICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTA5LDEwICsxMDksMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fY3Vyc29yLjN4Lmh0bWwiPmZvcm1fY3Vyc29yKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX2RhdGEuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2RhdGEuM3guaHRtbAppbmRleCAwMjMyOTk2Li43NjkxYTI5IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9kYXRhLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZGF0YS4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzggKzI3LDM5IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX2RhdGEuM3gsdiAxLjggMjAwNi8wMi8yNSAyMTozODoyNiB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fZGF0YS4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2RhdGEgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2RhdGEgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fZGF0YSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9kYXRhLjN4Lmh0bWwiPmZvcm1fZGF0YSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2RhdGEuM3guaHRtbCI+Zm9ybV9kYXRhKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fZGF0YTwvU1RST05HPiAtIHRlc3QgZm9yIG9mZi1zY3JlZW4gZGF0YSBpbiBnaXZlbiBmb3JtcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgYm9vbCBkYXRhX2FoZWFkKGNvbnN0IEZPUk0gKmZvcm0pOwogICAgICAgIGJvb2wgZGF0YV9iZWhpbmQoY29uc3QgRk9STSAqZm9ybSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uIDxTVFJPTkc+ZGF0YV9haGVhZDwvU1RST05HPiB0ZXN0cyB3aGV0aGVyIHRoZXJlIGlzIG9mZi1zY3JlZW4KICAgICAgICBkYXRhIGFoZWFkIGluIHRoZSBnaXZlbiBmb3JtLiAgIEl0ICByZXR1cm5zICBUUlVFICAoMSkgIG9yCiAgICAgICAgRkFMU0UgKDApLgpAQCAtNzAsMjQgKzcwLDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC05NSwxMCArOTUsMTYgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9kYXRhLjN4Lmh0bWwiPmZvcm1fZGF0YSgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9kcml2ZXIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2RyaXZlci4zeC5odG1sCmluZGV4IDY2ZWI3ZTYuLjcyYjJkOTQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2RyaXZlci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX2RyaXZlci4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywyOTggKzI2LDIwNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9kcml2ZXIuM3gsdiAxLjE2IDIwMDgvMDYvMjEgMjE6NTU6MzkgdG9tIEV4cCBACisgICogQElkOiBmb3JtX2RyaXZlci4zeCx2IDEuMjQgMjAxNS8wOC8wMiAxODoyMToxMSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2RyaXZlciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fZHJpdmVyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2RyaXZlciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9kcml2ZXIuM3guaHRtbCI+Zm9ybV9kcml2ZXIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2RyaXZlci4zeC5odG1sIj5mb3JtX2RyaXZlcigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2RyaXZlcjwvU1RST05HPiAtIGNvbW1hbmQtcHJvY2Vzc2luZyBsb29wIG9mIHRoZSBmb3JtIHN5c3RlbQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+Ci0gICAgICAgaW50IGZvcm1fZHJpdmVyKEZPUk0gKmZvcm0sIGludCBjKTsKKyAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmZvcm1fZHJpdmVyKEZPUk08L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+PEVNPmZvcm08L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8RU0+YzwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+aW50PC9TVFJPTkc+IDxTVFJPTkc+Zm9ybV9kcml2ZXJfdyhGT1JNPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPjxFTT5mb3JtPC9FTT48U1RST05HPiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPEVNPmM8L0VNPjxTVFJPTkc+LDwvU1RST05HPiA8U1RST05HPndjaGFyX3Q8L1NUUk9ORz4gPEVNPndjaDwvRU0+PFNUUk9ORz4pOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLWZvcm1fZHJpdmVyIj5mb3JtX2RyaXZlcjwvYT48L0gzPjxQUkU+CiAgICAgICAgT25jZSBhIGZvcm0gaGFzIGJlZW4gcG9zdGVkIChkaXNwbGF5ZWQpLCB5b3Ugc2hvdWxkIGZ1bm5lbAogICAgICAgIGlucHV0IGV2ZW50cyB0byBpdCB0aHJvdWdoIDxTVFJPTkc+Zm9ybV9kcml2ZXI8L1NUUk9ORz4uICBUaGlzIHJvdXRpbmUgIGhhcwogICAgICAgIHRocmVlIG1ham9yIGlucHV0IGNhc2VzOgogCi0gICAgICAgLSAgVGhlICBpbnB1dCAgaXMgIGEgIGZvcm0gbmF2aWdhdGlvbiByZXF1ZXN0LiAgTmF2aWdhdGlvbgotICAgICAgICAgIHJlcXVlc3QgY29kZXMgYXJlIGNvbnN0YW50cyBkZWZpbmVkIGluIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4sICB3aGljaAotICAgICAgICAgIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBrZXktIGFuZCBjaGFyYWN0ZXIgY29kZXMgcmV0dXJuZWQKLSAgICAgICAgICBieSA8U1RST05HPndnZXRjaDwvU1RST05HPi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgIGlucHV0ICBpcyAgYSBmb3JtIG5hdmlnYXRpb24gcmVxdWVzdC4gIE5hdmlnYXRpb24KKyAgICAgICAgICAgcmVxdWVzdCBjb2RlcyBhcmUgY29uc3RhbnRzIGRlZmluZWQgaW4gPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiwgd2hpY2gKKyAgICAgICAgICAgYXJlICAgZGlzdGluY3QgIGZyb20gIHRoZSAga2V5LSAgYW5kICBjaGFyYWN0ZXIgIGNvZGVzCisgICAgICAgICAgIHJldHVybmVkIGJ5IDxTVFJPTkc+PEEgSFJFRj0id2dldGNoLjN4Lmh0bWwiPndnZXRjaCgzeCk8L0E+PC9TVFJPTkc+LgogCi0gICAgICAgLSAgVGhlIGlucHV0IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4gIFByaW50YWJsZSAgY2hhcmFjLQotICAgICAgICAgIHRlcnMgICh3aGljaCAgbXVzdCAgYmUgIHBvc2l0aXZlLCAgbGVzcyAgdGhhbiAgMjU2KSBhcmUKLSAgICAgICAgICBjaGVja2VkIGFjY29yZGluZyB0byB0aGUgcHJvZ3JhbSdzIGxvY2FsZSBzZXR0aW5ncy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgaW5wdXQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyLiAgUHJpbnRhYmxlIGNoYXJhYy0KKyAgICAgICAgICAgdGVycyAgKHdoaWNoICBtdXN0ICBiZSAgcG9zaXRpdmUsICBsZXNzICB0aGFuIDI1NikgYXJlCisgICAgICAgICAgIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9ncmFtJ3MgbG9jYWxlIHNldHRpbmdzLgogCi0gICAgICAgLSAgVGhlIGlucHV0IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCBrZXkgYXNzb2NpYXRlZCAgd2l0aAotICAgICAgICAgIGFuIG1vdXNlIGV2ZW50LgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSBpbnB1dCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5IGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAgICBhbiBtb3VzZSBldmVudC4KIAorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1mb3JtX2RyaXZlcl93Ij5mb3JtX2RyaXZlcl93PC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzICBleHRlbnNpb24gIHNpbXBsaWZpZXMgIHRoZSAgdXNlIG9mIHRoZSBmb3JtcyBsaWJyYXJ5CisgICAgICAgdXNpbmcgd2lkZSBjaGFyYWN0ZXJzLiAgVGhlIGlucHV0IGlzIGVpdGhlciBhIGtleSBjb2RlICAoYQorICAgICAgIHJlcXVlc3QpIG9yIGEgd2lkZSBjaGFyYWN0ZXIgcmV0dXJuZWQgYnkgPFNUUk9ORz48QSBIUkVGPSJnZXRfd2NoLjN4Lmh0bWwiPmdldF93Y2goM3gpPC9BPjwvU1RST05HPi4gIFRoZQorICAgICAgIHR5cGUgbXVzdCBiZSBwYXNzZWQgYXMgd2VsbCwgIHRvICBlbmFibGUgIHRoZSAgbGlicmFyeSAgdG8KKyAgICAgICBkZXRlcm1pbmUgIHdoZXRoZXIgIHRoZSBwYXJhbWV0ZXIgaXMgYSB3aWRlIGNoYXJhY3RlciBvciBhCisgICAgICAgcmVxdWVzdC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Gb3JtLWRyaXZlci1yZXF1ZXN0cyI+Rm9ybS1kcml2ZXIgcmVxdWVzdHM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSBmb3JtIGRyaXZlciByZXF1ZXN0cyBhcmUgYXMgZm9sbG93czoKIAotICAgICAgIFJFUV9ORVhUX1BBR0UKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIG5leHQgcGFnZS4KKyAgICAgICA8RU0+TmFtZTwvRU0+ICAgICAgICAgICAgICAgPEVNPkRlc2NyaXB0aW9uPC9FTT4KKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgUkVRX0JFR19GSUVMRCAgICAgIE1vdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmllbGQuCisgICAgICAgUkVRX0JFR19MSU5FICAgICAgIE1vdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4KKyAgICAgICBSRVFfQ0xSX0VPRiAgICAgICAgQ2xlYXIgdG8gZW5kIG9mIGZpZWxkIGZyb20gY3Vyc29yLgorICAgICAgIFJFUV9DTFJfRU9MICAgICAgICBDbGVhciB0byBlbmQgb2YgbGluZSBmcm9tIGN1cnNvci4KKyAgICAgICBSRVFfQ0xSX0ZJRUxEICAgICAgQ2xlYXIgdGhlIGVudGlyZSBmaWVsZC4KKyAgICAgICBSRVFfREVMX0NIQVIgICAgICAgRGVsZXRlIGNoYXJhY3RlciBhdCB0aGUgY3Vyc29yLgorICAgICAgIFJFUV9ERUxfTElORSAgICAgICBEZWxldGUgbGluZSBhdCB0aGUgY3Vyc29yLgorICAgICAgIFJFUV9ERUxfUFJFViAgICAgICBEZWxldGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY3Vyc29yLgorICAgICAgIFJFUV9ERUxfV09SRCAgICAgICBEZWxldGUgYmxhbmstZGVsaW1pdGVkIHdvcmQgYXQgdGhlIGN1cnNvci4KKyAgICAgICBSRVFfRE9XTl9DSEFSICAgICAgTW92ZSBkb3duIGluIHRoZSBmaWVsZC4KKyAgICAgICBSRVFfRE9XTl9GSUVMRCAgICAgTW92ZSBkb3duIHRvIGEgZmllbGQuCisgICAgICAgUkVRX0VORF9GSUVMRCAgICAgIE1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQuCisgICAgICAgUkVRX0VORF9MSU5FICAgICAgIE1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICAgICBSRVFfRklSU1RfRklFTEQgICAgTW92ZSB0byB0aGUgZmlyc3QgZmllbGQuCisgICAgICAgUkVRX0ZJUlNUX1BBR0UgICAgIE1vdmUgdG8gdGhlIGZpcnN0IHBhZ2UuCisgICAgICAgUkVRX0lOU19DSEFSICAgICAgIEluc2VydCBhIGJsYW5rIGF0IHRoZSBjdXJzb3IuCisgICAgICAgUkVRX0lOU19MSU5FICAgICAgIEluc2VydCBhIGJsYW5rIGxpbmUgYXQgdGhlIGN1cnNvci4KKyAgICAgICBSRVFfSU5TX01PREUgICAgICAgRW50ZXIgaW5zZXJ0IG1vZGUuCisgICAgICAgUkVRX0xBU1RfRklFTEQgICAgIE1vdmUgdG8gdGhlIGxhc3QgZmllbGQuCisgICAgICAgUkVRX0xBU1RfUEFHRSAgICAgIE1vdmUgdG8gdGhlIGxhc3QgZmllbGQuCisgICAgICAgUkVRX0xFRlRfQ0hBUiAgICAgIE1vdmUgbGVmdCBpbiB0aGUgZmllbGQuCisgICAgICAgUkVRX0xFRlRfRklFTEQgICAgIE1vdmUgbGVmdCB0byBhIGZpZWxkLgogCi0gICAgICAgUkVRX1BSRVZfUEFHRQotICAgICAgICAgICAgTW92ZSB0byB0aGUgcHJldmlvdXMgcGFnZS4KKyAgICAgICBSRVFfTkVXX0xJTkUgICAgICAgSW5zZXJ0IG9yIG92ZXJsYXkgYSBuZXcgbGluZS4KKyAgICAgICBSRVFfTkVYVF9DSEFSICAgICAgTW92ZSB0byB0aGUgbmV4dCBjaGFyLgorICAgICAgIFJFUV9ORVhUX0NIT0lDRSAgICBEaXNwbGF5IG5leHQgZmllbGQgY2hvaWNlLgorICAgICAgIFJFUV9ORVhUX0ZJRUxEICAgICBNb3ZlIHRvIHRoZSBuZXh0IGZpZWxkLgorICAgICAgIFJFUV9ORVhUX0xJTkUgICAgICBNb3ZlIHRvIHRoZSBuZXh0IGxpbmUuCisgICAgICAgUkVRX05FWFRfUEFHRSAgICAgIE1vdmUgdG8gdGhlIG5leHQgcGFnZS4KKyAgICAgICBSRVFfTkVYVF9QQUdFICAgICAgTW92ZSB0byB0aGUgbmV4dCBwYWdlLgorICAgICAgIFJFUV9ORVhUX1dPUkQgICAgICBNb3ZlIHRvIHRoZSBuZXh0IHdvcmQuCisgICAgICAgUkVRX09WTF9NT0RFICAgICAgIEVudGVyIG92ZXJsYXkgbW9kZS4KKyAgICAgICBSRVFfUFJFVl9DSEFSICAgICAgTW92ZSB0byB0aGUgcHJldmlvdXMgY2hhci4KKyAgICAgICBSRVFfUFJFVl9DSE9JQ0UgICAgRGlzcGxheSBwcmV2aW91cyBmaWVsZCBjaG9pY2UuCisgICAgICAgUkVRX1BSRVZfRklFTEQgICAgIE1vdmUgdG8gdGhlIHByZXZpb3VzIGZpZWxkLgorICAgICAgIFJFUV9QUkVWX0xJTkUgICAgICBNb3ZlIHRvIHRoZSBwcmV2aW91cyBsaW5lLgorICAgICAgIFJFUV9QUkVWX1BBR0UgICAgICBNb3ZlIHRvIHRoZSBwcmV2aW91cyBwYWdlLgorICAgICAgIFJFUV9QUkVWX1dPUkQgICAgICBNb3ZlIHRvIHRoZSBwcmV2aW91cyB3b3JkLgorICAgICAgIFJFUV9SSUdIVF9DSEFSICAgICBNb3ZlIHJpZ2h0IGluIHRoZSBmaWVsZC4KKyAgICAgICBSRVFfUklHSFRfRklFTEQgICAgTW92ZSByaWdodCB0byBhIGZpZWxkLgorICAgICAgIFJFUV9TQ1JfQkNIQVIgICAgICBTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgY2hhcmFjdGVyLgorICAgICAgIFJFUV9TQ1JfQkhQQUdFICAgICBTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGhhbGYgYSBwYWdlLgorICAgICAgIFJFUV9TQ1JfQkxJTkUgICAgICBTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgbGluZS4KKyAgICAgICBSRVFfU0NSX0JQQUdFICAgICAgU2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBhIHBhZ2UuCisgICAgICAgUkVRX1NDUl9GQ0hBUiAgICAgIFNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBhIGNoYXJhY3Rlci4KKyAgICAgICBSRVFfU0NSX0ZIUEFHRSAgICAgU2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBwYWdlLgorICAgICAgIFJFUV9TQ1JfRkxJTkUgICAgICBTY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBsaW5lLgorICAgICAgIFJFUV9TQ1JfRlBBR0UgICAgICBTY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBwYWdlLgorICAgICAgIFJFUV9TQ1JfSEJIQUxGICAgICBIb3Jpem9udGFsIHNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgaGFsZiBhIGxpbmUuCisgICAgICAgUkVRX1NDUl9IQkxJTkUgICAgIEhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBhIGxpbmUuCisgICAgICAgUkVRX1NDUl9IRkhBTEYgICAgIEhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBsaW5lLgorICAgICAgIFJFUV9TQ1JfSEZMSU5FICAgICBIb3Jpem9udGFsIHNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBhIGxpbmUuCisgICAgICAgUkVRX1NGSVJTVF9GSUVMRCAgIE1vdmUgdG8gdGhlIHNvcnRlZCBmaXJzdCBmaWVsZC4KKyAgICAgICBSRVFfU0xBU1RfRklFTEQgICAgTW92ZSB0byB0aGUgc29ydGVkIGxhc3QgZmllbGQuCisgICAgICAgUkVRX1NORVhUX0ZJRUxEICAgIE1vdmUgdG8gdGhlIHNvcnRlZCBuZXh0IGZpZWxkLgorICAgICAgIFJFUV9TUFJFVl9GSUVMRCAgICBNb3ZlIHRvIHRoZSBzb3J0ZWQgcHJldmlvdXMgZmllbGQuCisgICAgICAgUkVRX1VQX0NIQVIgICAgICAgIE1vdmUgdXAgaW4gdGhlIGZpZWxkLgorICAgICAgIFJFUV9VUF9GSUVMRCAgICAgICBNb3ZlIHVwIHRvIGEgZmllbGQuCisgICAgICAgUkVRX1ZBTElEQVRJT04gICAgIFZhbGlkYXRlIGZpZWxkLgogCi0gICAgICAgUkVRX0ZJUlNUX1BBR0UKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIGZpcnN0IHBhZ2UuCi0KLSAgICAgICBSRVFfTEFTVF9QQUdFCi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBsYXN0IGZpZWxkLgotCi0KLSAgICAgICBSRVFfTkVYVF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgbmV4dCBmaWVsZC4KLQotICAgICAgIFJFUV9QUkVWX0ZJRUxECi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBwcmV2aW91cyBmaWVsZC4KLQotICAgICAgIFJFUV9GSVJTVF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgZmlyc3QgZmllbGQuCi0KLSAgICAgICBSRVFfTEFTVF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgbGFzdCBmaWVsZC4KLQotICAgICAgIFJFUV9TTkVYVF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgc29ydGVkIG5leHQgZmllbGQuCi0KLSAgICAgICBSRVFfU1BSRVZfRklFTEQKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIHNvcnRlZCBwcmV2aW91cyBmaWVsZC4KLQotICAgICAgIFJFUV9TRklSU1RfRklFTEQKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIHNvcnRlZCBmaXJzdCBmaWVsZC4KLQotICAgICAgIFJFUV9TTEFTVF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgc29ydGVkIGxhc3QgZmllbGQuCi0KLSAgICAgICBSRVFfTEVGVF9GSUVMRAotICAgICAgICAgICAgTW92ZSBsZWZ0IHRvIGEgZmllbGQuCi0KLSAgICAgICBSRVFfUklHSFRfRklFTEQKLSAgICAgICAgICAgIE1vdmUgcmlnaHQgdG8gYSBmaWVsZC4KLQotICAgICAgIFJFUV9VUF9GSUVMRAotICAgICAgICAgICAgTW92ZSB1cCB0byBhIGZpZWxkLgotCi0gICAgICAgUkVRX0RPV05fRklFTEQKLSAgICAgICAgICAgIE1vdmUgZG93biB0byBhIGZpZWxkLgotCi0KLSAgICAgICBSRVFfTkVYVF9DSEFSCi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBuZXh0IGNoYXIuCi0KLSAgICAgICBSRVFfUFJFVl9DSEFSCi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBwcmV2aW91cyBjaGFyLgotCi0gICAgICAgUkVRX05FWFRfTElORQotICAgICAgICAgICAgTW92ZSB0byB0aGUgbmV4dCBsaW5lLgotCi0gICAgICAgUkVRX1BSRVZfTElORQotICAgICAgICAgICAgTW92ZSB0byB0aGUgcHJldmlvdXMgbGluZS4KLQotICAgICAgIFJFUV9ORVhUX1dPUkQKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIG5leHQgd29yZC4KLQotICAgICAgIFJFUV9QUkVWX1dPUkQKLSAgICAgICAgICAgIE1vdmUgdG8gdGhlIHByZXZpb3VzIHdvcmQuCi0KLSAgICAgICBSRVFfQkVHX0ZJRUxECi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpZWxkLgotCi0gICAgICAgUkVRX0VORF9GSUVMRAotICAgICAgICAgICAgTW92ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZC4KLQotICAgICAgIFJFUV9CRUdfTElORQotICAgICAgICAgICAgTW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLgotCi0gICAgICAgUkVRX0VORF9MSU5FCi0gICAgICAgICAgICBNb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0KLSAgICAgICBSRVFfTEVGVF9DSEFSCi0gICAgICAgICAgICBNb3ZlIGxlZnQgaW4gdGhlIGZpZWxkLgotCi0gICAgICAgUkVRX1JJR0hUX0NIQVIKLSAgICAgICAgICAgIE1vdmUgcmlnaHQgaW4gdGhlIGZpZWxkLgotCi0gICAgICAgUkVRX1VQX0NIQVIKLSAgICAgICAgICAgIE1vdmUgdXAgaW4gdGhlIGZpZWxkLgotCi0gICAgICAgUkVRX0RPV05fQ0hBUgotICAgICAgICAgICAgTW92ZSBkb3duIGluIHRoZSBmaWVsZC4KLQotCi0gICAgICAgUkVRX05FV19MSU5FCi0gICAgICAgICAgICBJbnNlcnQgb3Igb3ZlcmxheSBhIG5ldyBsaW5lLgotCi0gICAgICAgUkVRX0lOU19DSEFSCi0gICAgICAgICAgICBJbnNlcnQgYSBibGFuayBhdCB0aGUgY3Vyc29yLgotCi0gICAgICAgUkVRX0lOU19MSU5FCi0gICAgICAgICAgICBJbnNlcnQgYSBibGFuayBsaW5lIGF0IHRoZSBjdXJzb3IuCi0KLSAgICAgICBSRVFfREVMX0NIQVIKLSAgICAgICAgICAgIERlbGV0ZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnNvci4KLQotICAgICAgIFJFUV9ERUxfUFJFVgotICAgICAgICAgICAgRGVsZXRlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGN1cnNvci4KLQotICAgICAgIFJFUV9ERUxfTElORQotICAgICAgICAgICAgRGVsZXRlIGxpbmUgYXQgdGhlIGN1cnNvci4KLQotICAgICAgIFJFUV9ERUxfV09SRAotICAgICAgICAgICAgRGVsZXRlIGJsYW5rLWRlbGltaXRlZCB3b3JkIGF0IHRoZSBjdXJzb3IuCi0KLSAgICAgICBSRVFfQ0xSX0VPTAotICAgICAgICAgICAgQ2xlYXIgdG8gZW5kIG9mIGxpbmUgZnJvbSBjdXJzb3IuCi0KLSAgICAgICBSRVFfQ0xSX0VPRgotICAgICAgICAgICAgQ2xlYXIgdG8gZW5kIG9mIGZpZWxkIGZyb20gY3Vyc29yLgotCi0gICAgICAgUkVRX0NMUl9GSUVMRAotICAgICAgICAgICAgQ2xlYXIgdGhlIGVudGlyZSBmaWVsZC4KLQotICAgICAgIFJFUV9PVkxfTU9ERQotICAgICAgICAgICAgRW50ZXIgb3ZlcmxheSBtb2RlLgotCi0gICAgICAgUkVRX0lOU19NT0RFCi0gICAgICAgICAgICBFbnRlciBpbnNlcnQgbW9kZS4KLQotCi0gICAgICAgUkVRX1NDUl9GTElORQotICAgICAgICAgICAgU2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGEgbGluZS4KLQotICAgICAgIFJFUV9TQ1JfQkxJTkUKLSAgICAgICAgICAgIFNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgYSBsaW5lLgotCi0gICAgICAgUkVRX1NDUl9GUEFHRQotICAgICAgICAgICAgU2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGEgcGFnZS4KLQotICAgICAgIFJFUV9TQ1JfQlBBR0UKLSAgICAgICAgICAgIFNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgYSBwYWdlLgotCi0gICAgICAgUkVRX1NDUl9GSFBBR0UKLSAgICAgICAgICAgIFNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBoYWxmIGEgcGFnZS4KLQotICAgICAgIFJFUV9TQ1JfQkhQQUdFCi0gICAgICAgICAgICBTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGhhbGYgYSBwYWdlLgotCi0KLSAgICAgICBSRVFfU0NSX0ZDSEFSCi0gICAgICAgICAgICBTY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBjaGFyYWN0ZXIuCi0KLSAgICAgICBSRVFfU0NSX0JDSEFSCi0gICAgICAgICAgICBTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgY2hhcmFjdGVyLgotCi0gICAgICAgUkVRX1NDUl9IRkxJTkUKLSAgICAgICAgICAgIEhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGEgbGluZS4KLQotICAgICAgIFJFUV9TQ1JfSEJMSU5FCi0gICAgICAgICAgICBIb3Jpem9udGFsIHNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgYSBsaW5lLgotCi0gICAgICAgUkVRX1NDUl9IRkhBTEYKLSAgICAgICAgICAgIEhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBsaW5lLgotCi0gICAgICAgUkVRX1NDUl9IQkhBTEYKLSAgICAgICAgICAgIEhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBoYWxmIGEgbGluZS4KLQotCi0gICAgICAgUkVRX1ZBTElEQVRJT04KLSAgICAgICAgICAgIFZhbGlkYXRlIGZpZWxkLgotCi0gICAgICAgUkVRX05FWFRfQ0hPSUNFCi0gICAgICAgICAgICBEaXNwbGF5IG5leHQgZmllbGQgY2hvaWNlLgotCi0gICAgICAgUkVRX1BSRVZfQ0hPSUNFCi0gICAgICAgICAgICBEaXNwbGF5IHByZXZpb3VzIGZpZWxkIGNob2ljZS4KLQotICAgICAgIElmICB0aGUgIHNlY29uZCAgYXJndW1lbnQgIGlzICBhICBwcmludGFibGUgY2hhcmFjdGVyLCB0aGUKLSAgICAgICBkcml2ZXIgcGxhY2VzIGl0IGluIHRoZSBjdXJyZW50IHBvc2l0aW9uICBpbiAgdGhlICBjdXJyZW50Ci0gICAgICAgZmllbGQuICAgSWYgIGl0IGlzIG9uZSBvZiB0aGUgZm9ybXMgcmVxdWVzdHMgbGlzdGVkIGFib3ZlLAorICAgICAgIElmIHRoZSBzZWNvbmQgIGFyZ3VtZW50ICBpcyAgYSAgcHJpbnRhYmxlICBjaGFyYWN0ZXIsICB0aGUKKyAgICAgICBkcml2ZXIgIHBsYWNlcyAgaXQgIGluIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBjdXJyZW50CisgICAgICAgZmllbGQuICBJZiBpdCBpcyBvbmUgb2YgdGhlIGZvcm1zIHJlcXVlc3RzICBsaXN0ZWQgIGFib3ZlLAogICAgICAgIHRoYXQgcmVxdWVzdCBpcyBleGVjdXRlZC4KIAotICAgPFNUUk9ORz5NT1VTRTwvU1RST05HPiA8U1RST05HPkhBTkRMSU5HPC9TVFJPTkc+Ci0gICAgICAgSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwgIGtleSwgIHRoZQorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Nb3VzZS1oYW5kbGluZyI+TW91c2UgaGFuZGxpbmc8L2E+PC9IMz48UFJFPgorICAgICAgIElmICB0aGUgIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5LCB0aGUKICAgICAgICBhc3NvY2lhdGVkIG1vdXNlIGV2ZW50IGlzIHRyYW5zbGF0ZWQgaW50byBvbmUgb2YgdGhlIGFib3ZlCi0gICAgICAgcHJlLWRlZmluZWQgcmVxdWVzdHMuICBDdXJyZW50bHkgb25seSBjbGlja3MgaW4gIHRoZSAgdXNlcgotICAgICAgIHdpbmRvdyAgKGUuZy4gIGluc2lkZSB0aGUgZm9ybSBkaXNwbGF5IGFyZWEgb3IgdGhlIGRlY29yYS0KKyAgICAgICBwcmUtZGVmaW5lZCAgcmVxdWVzdHMuICAgQ3VycmVudGx5IG9ubHkgY2xpY2tzIGluIHRoZSB1c2VyCisgICAgICAgd2luZG93IChlLmcuLCBpbnNpZGUgdGhlIGZvcm0gZGlzcGxheSBhcmVhIG9yIHRoZSAgZGVjb3JhLQogICAgICAgIHRpb24gd2luZG93KSBhcmUgaGFuZGxlZC4KIAogICAgICAgIElmIHlvdSBjbGljayBhYm92ZSB0aGUgZGlzcGxheSByZWdpb24gb2YgdGhlIGZvcm06CiAKLSAgICAgICAgICAgICAgYSBSRVFfUFJFVl9GSUVMRCBpcyBnZW5lcmF0ZWQgZm9yIGEgc2luZ2xlIGNsaWNrLAorICAgICAgICAgIGEgUkVRX1BSRVZfRklFTEQgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKIAotICAgICAgICAgICAgICBhIFJFUV9QUkVWX1BBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKKyAgICAgICAgICBhIFJFUV9QUkVWX1BBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKIAotICAgICAgICAgICAgICBhIFJFUV9GSVJTVF9GSUVMRCBpcyBnZW5lcmF0ZWQgZm9yIGEgIHRyaXBsZS1jbGljay4KKyAgICAgICAgICBhIFJFUV9GSVJTVF9GSUVMRCBpcyBnZW5lcmF0ZWQgZm9yIGEgdHJpcGxlLWNsaWNrLgogCiAgICAgICAgSWYgeW91IGNsaWNrIGJlbG93IHRoZSBkaXNwbGF5IHJlZ2lvbiBvZiB0aGUgZm9ybToKIAotICAgICAgICAgICAgICBhIFJFUV9ORVhUX0ZJRUxEIGlzIGdlbmVyYXRlZCBmb3IgYSBzaW5nbGUgY2xpY2ssCisgICAgICAgICAgYSBSRVFfTkVYVF9GSUVMRCBpcyBnZW5lcmF0ZWQgZm9yIGEgc2luZ2xlIGNsaWNrLAogCi0gICAgICAgICAgICAgIGEgUkVRX05FWFRfUEFHRSBpcyBnZW5lcmF0ZWQgZm9yIGEgZG91YmxlLWNsaWNrIGFuZAorICAgICAgICAgIGEgUkVRX05FWFRfUEFHRSBpcyBnZW5lcmF0ZWQgZm9yIGEgZG91YmxlLWNsaWNrIGFuZAogCi0gICAgICAgICAgICAgIGEgUkVRX0xBU1RfRklFTEQgaXMgZ2VuZXJhdGVkIGZvciBhIHRyaXBsZS1jbGljay4KKyAgICAgICAgICBhIFJFUV9MQVNUX0ZJRUxEIGlzIGdlbmVyYXRlZCBmb3IgYSB0cmlwbGUtY2xpY2suCiAKLSAgICAgICBJZiB5b3UgY2xpY2sgYXQgYW4gZmllbGQgaW5zaWRlIHRoZSBkaXNwbGF5ICBhcmVhICBvZiAgdGhlCisgICAgICAgSWYgIHlvdSAgY2xpY2sgIGF0IGFuIGZpZWxkIGluc2lkZSB0aGUgZGlzcGxheSBhcmVhIG9mIHRoZQogICAgICAgIGZvcm06CiAKLSAgICAgICAgICAgICAgLSAgdGhlIGZvcm0gY3Vyc29yIGlzIHBvc2l0aW9uZWQgdG8gdGhhdCBmaWVsZC4KKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgZm9ybSBjdXJzb3IgaXMgcG9zaXRpb25lZCB0byB0aGF0IGZpZWxkLgogCi0gICAgICAgICAgICAgIC0gIElmICB5b3UgZG91YmxlLWNsaWNrIGEgZmllbGQsIHRoZSBmb3JtIGN1cnNvciBpcwotICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkIHRvIHRoYXQgZmllbGQgIGFuZCAgPFNUUk9ORz5FX1VOS05PV05fQ09NTUFORDwvU1RST05HPgotICAgICAgICAgICAgICAgICBpcyAgcmV0dXJuZWQuICAgVGhpcyAgcmV0dXJuICB2YWx1ZSBtYWtlcyBzZW5zZSwKLSAgICAgICAgICAgICAgICAgYmVjYXVzZSBhIGRvdWJsZSBjbGljayAgdXN1YWxseSAgbWVhbnMgIHRoYXQgIGFuCi0gICAgICAgICAgICAgICAgIGZpZWxkLXNwZWNpZmljIGFjdGlvbiBzaG91bGQgYmUgcmV0dXJuZWQuICBJdCBpcwotICAgICAgICAgICAgICAgICBleGFjdGx5IHRoZSBwdXJwb3NlIG9mIHRoaXMgcmV0dXJuIHZhbHVlIHRvIHNpZy0KLSAgICAgICAgICAgICAgICAgbmFsICB0aGF0IGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGNvbW1hbmQgc2hvdWxkCi0gICAgICAgICAgICAgICAgIGJlIGV4ZWN1dGVkLgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIHlvdSBkb3VibGUtY2xpY2sgYSBmaWVsZCwgIHRoZSAgZm9ybSAgY3Vyc29yICBpcworICAgICAgICAgICAgICBwb3NpdGlvbmVkICB0byAgdGhhdCBmaWVsZCBhbmQgPFNUUk9ORz5FX1VOS05PV05fQ09NTUFORDwvU1RST05HPiBpcworICAgICAgICAgICAgICByZXR1cm5lZC4gIFRoaXMgcmV0dXJuIHZhbHVlIG1ha2VzIHNlbnNlLCBiZWNhdXNlIGEKKyAgICAgICAgICAgICAgZG91YmxlICBjbGljayAgdXN1YWxseSBtZWFucyB0aGF0IGFuIGZpZWxkLXNwZWNpZmljCisgICAgICAgICAgICAgIGFjdGlvbiBzaG91bGQgYmUgcmV0dXJuZWQuICBJdCBpcyBleGFjdGx5IHRoZSAgcHVyLQorICAgICAgICAgICAgICBwb3NlICBvZiB0aGlzIHJldHVybiB2YWx1ZSB0byBzaWduYWwgdGhhdCBhbiBhcHBsaS0KKyAgICAgICAgICAgICAgY2F0aW9uIHNwZWNpZmljIGNvbW1hbmQgc2hvdWxkIGJlIGV4ZWN1dGVkLgogCi0gICAgICAgICAgICAgIC0gIElmICBhICB0cmFuc2xhdGlvbiAgaW50byAgYSAgcmVxdWVzdCAgd2FzICBkb25lLAotICAgICAgICAgICAgICAgICA8U1RST05HPmZvcm1fZHJpdmVyPC9TVFJPTkc+ICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhpcyByZXF1ZXN0LgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmICBhICB0cmFuc2xhdGlvbiAgaW50byAgYSAgIHJlcXVlc3QgICB3YXMgICBkb25lLAorICAgICAgICAgICAgICA8U1RST05HPmZvcm1fZHJpdmVyPC9TVFJPTkc+IHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuCiAKLSAgICAgICBJZiB5b3UgY2xpY2tlZCBvdXRzaWRlIHRoZSB1c2VyIHdpbmRvdyBvciB0aGUgbW91c2UgIGV2ZW50Ci0gICAgICAgY291bGQgICBub3QgICBiZSAgIHRyYW5zbGF0ZWQgICBpbnRvICBhICBmb3JtICByZXF1ZXN0ICBhbgorICAgICAgIElmICB5b3UgY2xpY2tlZCBvdXRzaWRlIHRoZSB1c2VyIHdpbmRvdyBvciB0aGUgbW91c2UgZXZlbnQKKyAgICAgICBjb3VsZCAgbm90ICBiZSAgdHJhbnNsYXRlZCAgaW50byAgIGEgICBmb3JtICAgcmVxdWVzdCAgIGFuCiAgICAgICAgPFNUUk9ORz5FX1JFUVVFU1RfREVOSUVEPC9TVFJPTkc+IGlzIHJldHVybmVkLgogCi0gICA8U1RST05HPkFQUExJQ0FUSU9OLURFRklORUQ8L1NUUk9ORz4gPFNUUk9ORz5DT01NQU5EUzwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1BcHBsaWNhdGlvbi1kZWZpbmVkLWNvbW1hbmRzIj5BcHBsaWNhdGlvbi1kZWZpbmVkIGNvbW1hbmRzPC9hPjwvSDM+PFBSRT4KICAgICAgICBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5laXRoZXIgcHJpbnRhYmxlIG5vciBvbmUgb2YgdGhlCi0gICAgICAgYWJvdmUgIHByZS1kZWZpbmVkIGZvcm0gcmVxdWVzdHMsIHRoZSBkcml2ZXIgYXNzdW1lcyBpdCBpcworICAgICAgIGFib3ZlIHByZS1kZWZpbmVkIGZvcm0gcmVxdWVzdHMsIHRoZSBkcml2ZXIgYXNzdW1lcyBpdCAgaXMKICAgICAgICBhbiBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjb21tYW5kIGFuZCByZXR1cm5zIDxTVFJPTkc+RV9VTktOT1dOX0NPTS08L1NUUk9ORz4KICAgICAgICA8U1RST05HPk1BTkQ8L1NUUk9ORz4uICBBcHBsaWNhdGlvbi1kZWZpbmVkIGNvbW1hbmRzIHNob3VsZCBiZSBkZWZpbmVkIHJlbC0KLSAgICAgICBhdGl2ZSB0byA8U1RST05HPk1BWF9DT01NQU5EPC9TVFJPTkc+LCB0aGUgIG1heGltdW0gIHZhbHVlICBvZiAgdGhlc2UgIHByZS0KKyAgICAgICBhdGl2ZSAgdG8gIDxTVFJPTkc+TUFYX0NPTU1BTkQ8L1NUUk9ORz4sICB0aGUgIG1heGltdW0gIHZhbHVlIG9mIHRoZXNlIHByZS0KICAgICAgICBkZWZpbmVkIHJlcXVlc3RzLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2RyaXZlcjwvU1RST05HPiByZXR1cm5zIG9uZSBvZiB0aGUgZm9sbG93aW5nIGVycm9yIGNvZGVzOgogCiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgIGRldGVjdGVkICBhbiBpbmNvcnJlY3Qgb3Igb3V0LW9mLXJhbmdlIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lIGRldGVjdGVkIGFuIGluY29ycmVjdCBvciAgb3V0LW9mLXJhbmdlICBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfU1RBVEU8L1NUUk9ORz4KQEAgLTM0MiwzNSArMjQ3LDUwIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9IndnZXRjaC4zeC5odG1sIj53Z2V0Y2goM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtX3ZhcmlhYmxlcy4zeC5odG1sIj5mb3JtX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZXMgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2RyaXZlci4zeC5odG1sIj5mb3JtX2RyaXZlcigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtZm9ybV9kcml2ZXIiPmZvcm1fZHJpdmVyPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLWZvcm1fZHJpdmVyX3ciPmZvcm1fZHJpdmVyX3c8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtRm9ybS1kcml2ZXItcmVxdWVzdHMiPkZvcm0tZHJpdmVyIHJlcXVlc3RzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLU1vdXNlLWhhbmRsaW5nIj5Nb3VzZSBoYW5kbGluZzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1BcHBsaWNhdGlvbi1kZWZpbmVkLWNvbW1hbmRzIj5BcHBsaWNhdGlvbi1kZWZpbmVkIGNvbW1hbmRzPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGQuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkLjN4Lmh0bWwKaW5kZXggZDc0MzM5MC4uZjQwY2Y3NCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGQuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZC4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzIgKzI3LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX2ZpZWxkLjN4LHYgMS44IDIwMDYvMTEvMDQgMTg6MDE6MzggdG9tIEV4cCBACisgICogQElkOiBmb3JtX2ZpZWxkLjN4LHYgMS4xMSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmZvcm1fZmllbGQgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2ZpZWxkIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2ZpZWxkIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkLjN4Lmh0bWwiPmZvcm1fZmllbGQoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGQuM3guaHRtbCI+Zm9ybV9maWVsZCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2ZpZWxkPC9TVFJPTkc+IC0gbWFrZSBhbmQgYnJlYWsgY29ubmVjdGlvbnMgYmV0d2VlbiBmaWVsZHMgYW5kCiAgICAgICAgZm9ybXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfZm9ybV9maWVsZHMoRk9STSAqZm9ybSwgRklFTEQgKipmaWVsZHMpOwogICAgICAgIEZJRUxEICoqZm9ybV9maWVsZHMoY29uc3QgRk9STSAqZm9ybSk7CkBAIC02Miw3ICs2Miw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfZm9ybV9maWVsZHM8L1NUUk9ORz4gIGNoYW5nZXMgIHRoZSAgZmllbGQgIHBvaW50ZXIKICAgICAgICBhcnJheSAgb2YgdGhlIGdpdmVuIDxFTT5mb3JtPC9FTT4uICBUaGUgYXJyYXkgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5CiAgICAgICAgYSA8U1RST05HPk5VTEw8L1NUUk9ORz4uCkBAIC03OCw3ICs3OCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5mb3JtX2ZpZWxkczwvU1RST05HPiByZXR1cm5zIGEgcG9pbnRlciAod2hpY2ggbWF5IGJlCiAgICAgICAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+KS4gIEl0IGRvZXMgbm90IHNldCBlcnJuby4KIApAQCAtMTA1LDE4ICsxMDUsMTggQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCkBAIC0xMjUsMTggKzEyNSwyNSBAQAogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Ci0gICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldworPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgorICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkLjN4Lmh0bWwiPmZvcm1fZmllbGQoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sCmluZGV4IDU0ZDc3ZDkuLmQ3Nzg5ZjcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMiArMjcsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1fZmllbGRfYXR0cmlidXRlcy4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxODo1MToyNiB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fZmllbGRfYXR0cmlidXRlcy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fZmllbGRfYXR0cmlidXRlcyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4Lmh0bWwiPmZvcm1fZmllbGRfYXR0cmlidXRlcygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3guaHRtbCI+Zm9ybV9maWVsZF9hdHRyaWJ1dGVzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fZmllbGRfYXR0cmlidXRlczwvU1RST05HPiAgLSAgY29sb3IgIGFuZCBhdHRyaWJ1dGUgY29udHJvbCBmb3IKICAgICAgICBmb3JtIGZpZWxkcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9maWVsZF9mb3JlKEZJRUxEICpmaWVsZCwgY2h0eXBlIGF0dHIpOwogICAgICAgIGNodHlwZSBmaWVsZF9mb3JlKGNvbnN0IEZJRUxEICpmaWVsZCk7CkBAIC02NCw3ICs2NCw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfZmllbGRfZm9yZTwvU1RST05HPiBzZXRzIHRoZSBmb3JlZ3JvdW5kICBhdHRyaWJ1dGUKICAgICAgICBvZiAgPEVNPmZpZWxkPC9FTT4uIFRoaXMgaXMgdGhlIGhpZ2hsaWdodCB1c2VkIHRvIGRpc3BsYXkgdGhlIGZpZWxkCiAgICAgICAgY29udGVudHMuICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5maWVsZF9mb3JlPC9TVFJPTkc+IHJldHVybnMgdGhlICBmb3JlZ3JvdW5kCkBAIC04MSw3ICs4MSw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKICAgICAgICA8U1RST05HPkVfT0s8L1NUUk9ORz4gVGhlIHJvdXRpbmUgc3VjY2VlZGVkLgpAQCAtOTUsMjUgKzk1LDI1IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4gYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gImZvcm1fIiBmb3IKICAgICAgICBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIGVudHJ5IHBvaW50cy4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5LiAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEyMSwxMCArMTIxLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfYXR0cmlidXRlcy4zeC5odG1sIj5mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbAppbmRleCA4ZTk5ODA2Li5jNThmZDIxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDMyICsyNywzNCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9maWVsZF9idWZmZXIuM3gsdiAxLjE0IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCBACisgICogQElkOiBmb3JtX2ZpZWxkX2J1ZmZlci4zeCx2IDEuMTkgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2ZpZWxkX2J1ZmZlciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fZmllbGRfYnVmZmVyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2ZpZWxkX2J1ZmZlciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+Zm9ybV9maWVsZF9idWZmZXIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX2J1ZmZlci4zeC5odG1sIj5mb3JtX2ZpZWxkX2J1ZmZlcigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2ZpZWxkX2J1ZmZlcjwvU1RST05HPiAtIGZpZWxkIGJ1ZmZlciBjb250cm9sCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KKwogICAgICAgIGludCAgc2V0X2ZpZWxkX2J1ZmZlcihGSUVMRCAgKmZpZWxkLCAgaW50ICBidWYsIGNvbnN0IGNoYXIKICAgICAgICAqdmFsdWUpOwogICAgICAgIGNoYXIgKmZpZWxkX2J1ZmZlcihjb25zdCBGSUVMRCAqZmllbGQsIGludCBidWZmZXIpOwpAQCAtNjMsMjMgKzY0LDQzIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfZmllbGRfYnVmZmVyPC9TVFJPTkc+IHNldHMgdGhlIG51bWJlcmVkIGJ1ZmZlciAgb2YKLSAgICAgICB0aGUgIGdpdmVuICBmaWVsZCAgdG8gY29udGFpbiBhIGdpdmVuIHN0cmluZy4gIEJ1ZmZlciAwIGlzCi0gICAgICAgdGhlIGRpc3BsYXllZCB2YWx1ZSBvZiB0aGUgZmllbGQ7IG90aGVyICBudW1iZXJlZCAgYnVmZmVycwotICAgICAgIG1heSBiZSBhbGxvY2F0ZWQgYnkgYXBwbGljYXRpb25zIHRocm91Z2ggdGhlIDxTVFJPTkc+bmJ1ZjwvU1RST05HPiBhcmd1bWVudAotICAgICAgIG9mIChzZWUgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5mb3JtX2ZpZWxkX25ldygzeCk8L0E+PC9TVFJPTkc+KSBidXQgYXJlIG5vdCBtYW5pcHVsYXRlZCBieSB0aGUKLSAgICAgICBmb3JtcyAgbGlicmFyeS4gICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPmZpZWxkX2J1ZmZlcjwvU1RST05HPiAgcmV0dXJucyB0aGUKLSAgICAgICBhZGRyZXNzIG9mIHRoZSBidWZmZXIuICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgIGJ1ZmZlciAgaGFzCi0gICAgICAgYWx3YXlzICB0aGUgIGxlbmd0aCAgb2YgdGhlIGJ1ZmZlciwgdGhhdCBtZWFucyB0aGF0IGl0IG1heQotICAgICAgIHR5cGljYWxseSBjb250YWluIHRyYWlsaW5nIHNwYWNlcy4gSWYgeW91IGVudGVyZWQgIGxlYWRpbmcKLSAgICAgICBzcGFjZXMgIHRoZSAgYnVmZmVyIG1heSBhbHNvIGNvbnRhaW4gdGhlbS4gSWYgeW91IHdhbnQgdGhlCi0gICAgICAgcmF3IGRhdGEsIHlvdSBtdXN0IHdyaXRlIHlvdXIgb3duIHJvdXRpbmUgdGhhdCBjb3BpZXMgIHRoZQotICAgICAgIHZhbHVlIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZW1vdmVzIHRoZSBsZWFkaW5nIGFuZCB0cmFpbC0KLSAgICAgICBpbmcgc3BhY2VzLiBQbGVhc2Ugbm90ZSBhbHNvLCB0aGF0ICBzdWJzZXF1ZW50ICBvcGVyYXRpb25zCi0gICAgICAgb24gIHRoZSAgZm9ybSAgd2lsbCAgcHJvYmFibHkgIGNoYW5nZSAgdGhlICBjb250ZW50IG9mIHRoZQotICAgICAgIGJ1ZmZlci4gU28gZG8gbm90IHVzZSBpdCBmb3IgIGxvbmcgIHRlcm0gIHN0b3JhZ2UgIG9mICB0aGUKLSAgICAgICBlbnRlcmVkIGZvcm0gZGF0YS4KKyAgICAgICB0aGUgZ2l2ZW4gZmllbGQgdG8gY29udGFpbiBhIGdpdmVuIHN0cmluZzoKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEJ1ZmZlciAwIGlzIHRoZSBkaXNwbGF5ZWQgdmFsdWUgb2YgdGhlIGZpZWxkLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgT3RoZXIgbnVtYmVyZWQgYnVmZmVycyBtYXkgYmUgYWxsb2NhdGVkIGJ5IGFwcGxpY2EtCisgICAgICAgICAgICAgIHRpb25zICAgdGhyb3VnaCAgIHRoZSAgIDxTVFJPTkc+bmJ1ZjwvU1RST05HPiAgIGFyZ3VtZW50ICAgb2YgICAoc2VlCisgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9uZXcuM3guaHRtbCI+Zm9ybV9maWVsZF9uZXcoM3gpPC9BPjwvU1RST05HPikgIGJ1dCBhcmUgbm90IG1hbmlwdWxhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICBmb3JtcyBsaWJyYXJ5LgorCisgICAgICAgVGhlIGZ1bmN0aW9uIDxTVFJPTkc+ZmllbGRfYnVmZmVyPC9TVFJPTkc+IHJldHVybnMgYSBwb2ludGVyICB0byAgdGhlICBjb24tCisgICAgICAgdGVudHMgb2YgdGhlIGdpdmVuIG51bWJlcmVkIGJ1ZmZlcjoKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSAgYnVmZmVyICBjb250ZW50cyAgYWx3YXlzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLAorICAgICAgICAgICAgICBhbmQgYXJlIHBhZGRlZCB3aXRoIHRyYWlsaW5nIHNwYWNlcyAgYXMgIG5lZWRlZCAgdG8KKyAgICAgICAgICAgICAgZW5zdXJlIHRoaXMgbGVuZ3RoIGlzIHRoZSBzYW1lLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIGJ1ZmZlciBtYXkgY29udGFpbiBsZWFkaW5nIHNwYWNlcywgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgIGhvdyBpdCB3YXMgc2V0LgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlIGJ1ZmZlciBjb250ZW50cyBhcmUgc2V0IHdpdGggIDxTVFJPTkc+c2V0X2ZpZWxkX2J1ZmZlcjwvU1RST05HPiwKKyAgICAgICAgICAgICAgb3IgIGFzICBhICBzaWRlIGVmZmVjdCBvZiBhbnkgZWRpdGluZyBvcGVyYXRpb25zIG9uCisgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgRWRpdGluZyBvcGVyYXRpb25zIGFyZSBiYXNlZCBvbiAgdGhlICA8RU0+d2luZG93PC9FTT4gIHdoaWNoCisgICAgICAgICAgICAgIGRpc3BsYXlzIHRoZSBmaWVsZCwgcmF0aGVyIHRoYW4gYSA8RU0+c3RyaW5nPC9FTT4uICBUaGUgd2luLQorICAgICAgICAgICAgICBkb3cgY29udGFpbnMgIG9ubHkgIHByaW50YWJsZSAgY2hhcmFjdGVycywgIGFuZCAgaXMKKyAgICAgICAgICAgICAgZmlsbGVkICB3aXRoIGJsYW5rcy4gIElmIHlvdSB3YW50IHRoZSByYXcgZGF0YSwgeW91CisgICAgICAgICAgICAgIG11c3Qgd3JpdGUgeW91ciBvd24gcm91dGluZSB0aGF0IGNvcGllcyAgdGhlICB2YWx1ZQorICAgICAgICAgICAgICBvdXQgIG9mICB0aGUgIGJ1ZmZlciAgYW5kICByZW1vdmVzICB0aGUgbGVhZGluZyBhbmQKKyAgICAgICAgICAgICAgdHJhaWxpbmcgc3BhY2VzLgorCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgQmVjYXVzZSBlZGl0aW5nIG9wZXJhdGlvbnMgY2hhbmdlICB0aGUgIGNvbnRlbnQgIG9mCisgICAgICAgICAgICAgIHRoZSAgYnVmZmVyIHRvIGNvcnJlc3BvbmQgdG8gdGhlIHdpbmRvdywgeW91IHNob3VsZAorICAgICAgICAgICAgICBub3QgcmVseSBvbiB1c2luZyBidWZmZXJzIGZvciBsb25nLXRlcm0gc3RvcmFnZSAgb2YKKyAgICAgICAgICAgICAgZm9ybSBkYXRhLgogCiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5zZXRfZmllbGRfc3RhdHVzPC9TVFJPTkc+IHNldHMgdGhlIGFzc29jaWF0ZWQgc3RhdHVzCiAgICAgICAgZmxhZyBvZiA8RU0+ZmllbGQ8L0VNPjsgPFNUUk9ORz5maWVsZF9zdGF0dXM8L1NUUk9ORz4gZ2V0cyB0aGUgY3VycmVudCAgdmFsdWUuICAgVGhlCkBAIC05Miw3ICsxMTMsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+ZmllbGRfYnVmZmVyPC9TVFJPTkc+IGZ1bmN0aW9uIHJldHVybnMgTlVMTCBvbiBlcnJvci4gIEl0ICBzZXRzCiAgICAgICAgZXJybm8gYWNjb3JkaW5nIHRvIHRoZWlyIHN1Y2Nlc3M6CiAKQEAgLTExNywzMSArMTM4LDMxIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4gYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gImZvcm1fIiBmb3IKICAgICAgICBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIGVudHJ5IHBvaW50cy4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUKIAotICAgICAgIFdoZW4gIGNvbmZpZ3VyZWQgZm9yIHdpZGUtY2hhcmFjdGVycywgPFNUUk9ORz5maWVsZF9idWZmZXI8L1NUUk9ORz4gcmV0dXJucworICAgICAgIFdoZW4gIGNvbmZpZ3VyZWQgZm9yIHdpZGUgY2hhcmFjdGVycywgPFNUUk9ORz5maWVsZF9idWZmZXI8L1NUUk9ORz4gcmV0dXJucwogICAgICAgIGEgcG9pbnRlciB0byB0ZW1wb3Jhcnkgc3RvcmFnZSAoYWxsb2NhdGVkIGFuZCBmcmVlZCBieSB0aGUKICAgICAgICBsaWJyYXJ5KS4gICBUaGUgIGFwcGxpY2F0aW9uICBzaG91bGQgbm90IGF0dGVtcHQgdG8gbW9kaWZ5Ci0gICAgICAgdGhlICBkYXRhLiAgIEl0ICB3aWxsICBiZSAgZnJlZWQgIG9uICB0aGUgIG5leHQgIGNhbGwgICB0bwotICAgICAgIDxTVFJPTkc+ZmllbGRfYnVmZmVyPC9TVFJPTkc+IHRvIHJldHVybiB0aGUgc2FtZSBidWZmZXIuICA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCisgICAgICAgdGhlIGRhdGEuICBJdCB3aWxsIGJlIGZyZWVkIG9uIHRoZSBuZXh0IGNhbGwgdG8gPFNUUk9ORz5maWVsZF9idWYtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5mZXI8L1NUUk9ORz4gdG8gcmV0dXJuIHRoZSBzYW1lIGJ1ZmZlci4gIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xNDksMTAgKzE3MCwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9idWZmZXIuM3guaHRtbCI+Zm9ybV9maWVsZF9idWZmZXIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfaW5mby4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfaW5mby4zeC5odG1sCmluZGV4IDQ5OGZjMjkuLmIyMThlNTQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX2luZm8uM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9pbmZvLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw1NSArMjcsNTYgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1fZmllbGRfaW5mby4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxNzoxNDozMSB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fZmllbGRfaW5mby4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2ZpZWxkX2luZm8gM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2ZpZWxkX2luZm8gM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fZmllbGRfaW5mbyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9pbmZvLjN4Lmh0bWwiPmZvcm1fZmllbGRfaW5mbygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX2luZm8uM3guaHRtbCI+Zm9ybV9maWVsZF9pbmZvKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fZmllbGRfaW5mbzwvU1RST05HPiAtIHJldHJpZXZlIGZpZWxkIGNoYXJhY3RlcmlzdGljcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IGZpZWxkX2luZm8oY29uc3QgRklFTEQgKmZpZWxkLCBpbnQgKnJvd3MsIGludCAqY29scywKICAgICAgICAgICAgICAgICAgICAgIGludCAqZnJvdywgaW50ICpmY29sLCBpbnQgKm5yb3csIGludCAqbmJ1Zik7Ci0gICAgICAgaW50IGR5bmFtaWNfZmllbGRfaW5mbyhjb25zdCBGSUVMRCAqZmllbGQsIGludCAqcm93cywgIGludAorICAgICAgIGludCAgZHluYW1pY19maWVsZF9pbmZvKGNvbnN0IEZJRUxEICpmaWVsZCwgaW50ICpyb3dzLCBpbnQKICAgICAgICAqY29scywgaW50ICptYXgpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5maWVsZF9pbmZvPC9TVFJPTkc+ICByZXR1cm5zICB0aGUgIHNpemVzICBhbmQgIG90aGVyCi0gICAgICAgYXR0cmlidXRlcyBwYXNzZWQgaW4gdG8gdGhlIGZpZWxkIGF0ICBpdHMgIGNyZWF0aW9uICB0aW1lLgotICAgICAgIFRoZSAgYXR0cmlidXRlcyBhcmU6IGhlaWdodCwgd2lkdGgsIHJvdyBvZiB1cHBlci1sZWZ0IGNvci0KLSAgICAgICBuZXIsIGNvbHVtbiBvZiB1cHBlci1sZWZ0IGNvcm5lciwgbnVtYmVyIG9mZi1zY3JlZW4gIHJvd3MsCisgICAgICAgYXR0cmlidXRlcyAgcGFzc2VkICBpbiAgdG8gdGhlIGZpZWxkIGF0IGl0cyBjcmVhdGlvbiB0aW1lLgorICAgICAgIFRoZSBhdHRyaWJ1dGVzIGFyZTogaGVpZ2h0LCB3aWR0aCwgcm93IG9mIHVwcGVyLWxlZnQgIGNvci0KKyAgICAgICBuZXIsICBjb2x1bW4gb2YgdXBwZXItbGVmdCBjb3JuZXIsIG51bWJlciBvZmYtc2NyZWVuIHJvd3MsCiAgICAgICAgYW5kIG51bWJlciBvZiB3b3JraW5nIGJ1ZmZlcnMuCiAKICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5keW5hbWljX2ZpZWxkX2luZm88L1NUUk9ORz4gcmV0dXJucyB0aGUgYWN0dWFsIHNpemUgb2YKLSAgICAgICB0aGUgZmllbGQsIGFuZCBpdHMgbWF4aW11bSBwb3NzaWJsZSBzaXplLiAgIElmICB0aGUgIGZpZWxkCi0gICAgICAgaGFzICBubyAgc2l6ZSAgbGltaXQsICB0aGUgbG9jYXRpb24gYWRkcmVzc2VkIGJ5IHRoZSB0aGlyZAorICAgICAgIHRoZSAgZmllbGQsICBhbmQgIGl0cyBtYXhpbXVtIHBvc3NpYmxlIHNpemUuICBJZiB0aGUgZmllbGQKKyAgICAgICBoYXMgbm8gc2l6ZSBsaW1pdCwgdGhlIGxvY2F0aW9uICBhZGRyZXNzZWQgIGJ5ICB0aGUgIHRoaXJkCiAgICAgICAgYXJndW1lbnQgd2lsbCBiZSBzZXQgdG8gMC4gIEEgZmllbGQgY2FuIGJlIG1hZGUgZHluYW1pYyBieQogICAgICAgIHR1cm5pbmcgb2ZmIHRoZSA8U1RST05HPk9fU1RBVElDPC9TVFJPTkc+IG9wdGlvbiB3aXRoIDxTVFJPTkc+ZmllbGRfb3B0c19vZmY8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKICAgICAgICA8U1RST05HPkVfT0s8L1NUUk9ORz4gVGhlIHJvdXRpbmUgc3VjY2VlZGVkLgpAQCAtODUsNDUgKzg1LDUyIEBACiAgICAgICAgICAgICBTeXN0ZW0gZXJyb3Igb2NjdXJyZWQgKHNlZSA8U1RST05HPmVycm5vPC9TVFJPTkc+KS4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgIGRldGVjdGVkICBhbiBpbmNvcnJlY3Qgb3Igb3V0LW9mLXJhbmdlIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lIGRldGVjdGVkIGFuIGluY29ycmVjdCBvciAgb3V0LW9mLXJhbmdlICBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiBhbmQgcmVsYXRlZCBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbiAiZm9ybV8iIGZvcgogICAgICAgIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBvZiB0aGUgZW50cnkgcG9pbnRzLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5LiAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCi0gICAgICAgQSAgbnVsbCAgKHplcm8gIHBvaW50ZXIpIGlzIGFjY2VwdGVkIGZvciBhbnkgb2YgdGhlIHJldHVybgotICAgICAgIHZhbHVlcywgdG8gaWdub3JlIHRoYXQgIHZhbHVlLiAgIE5vdCAgYWxsICBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICBBIG51bGwgKHplcm8gcG9pbnRlcikgaXMgYWNjZXB0ZWQgZm9yIGFueSAgb2YgIHRoZSAgcmV0dXJuCisgICAgICAgdmFsdWVzLCAgdG8gIGlnbm9yZSAgdGhhdCAgdmFsdWUuICBOb3QgYWxsIGltcGxlbWVudGF0aW9ucwogICAgICAgIGFsbG93IHRoaXMsIGUuZy4sIFNvbGFyaXMgMi43IGRvZXMgbm90LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Ci0gICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldworPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgorICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9pbmZvLjN4Lmh0bWwiPmZvcm1fZmllbGRfaW5mbygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwKaW5kZXggNTA3MDIwZi4uMzRhM2JlYSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfanVzdC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDQ3ICsyNyw0OCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9maWVsZF9qdXN0LjN4LHYgMS45IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCBACisgICogQElkOiBmb3JtX2ZpZWxkX2p1c3QuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9maWVsZF9qdXN0IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9maWVsZF9qdXN0IDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2ZpZWxkX2p1c3QgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfanVzdC4zeC5odG1sIj5mb3JtX2ZpZWxkX2p1c3QoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwiPmZvcm1fZmllbGRfanVzdCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2ZpZWxkX2p1c3Q8L1NUUk9ORz4gLSByZXRyaWV2ZSBmaWVsZCBjaGFyYWN0ZXJpc3RpY3MKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfZmllbGRfanVzdChGSUVMRCAqZmllbGQsIGludCBqdXN0aWZpY2F0aW9uKTsKICAgICAgICBpbnQgZmllbGRfanVzdChjb25zdCBGSUVMRCAqZmllbGQpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICAgZnVuY3Rpb24gICA8U1RST05HPnNldF9maWVsZF9qdXN0PC9TVFJPTkc+ICAgc2V0cyAgdGhlICBqdXN0aWZpY2F0aW9uCiAgICAgICAgYXR0cmlidXRlIG9mIGEgZmllbGQ7IDxTVFJPTkc+ZmllbGRfanVzdDwvU1RST05HPiByZXR1cm5zIGEgZmllbGQncyAganVzdGktCiAgICAgICAgZmljYXRpb24gYXR0cmlidXRlLiAgVGhlIGF0dHJpYnV0ZSBtYXkgYmUgb25lIG9mIE5PX0pVU1RJLQotICAgICAgIEZJQ0FUSU9OLCBKVVNUSUZZX1JJR0hULCBKVVNUSUZZX0xFRlQsIG9yICBKVVNUSUZZX0NFTlRFUi4KKyAgICAgICBGSUNBVElPTiwgSlVTVElGWV9SSUdIVCwgSlVTVElGWV9MRUZULCBvciBKVVNUSUZZX0NFTlRFUi4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgVGhlICBmdW5jdGlvbiA8U1RST05HPmZpZWxkX2p1c3Q8L1NUUk9ORz4gcmV0dXJucyBvbmUgb2Y6IE5PX0pVU1RJRklDQVRJT04sCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPmZpZWxkX2p1c3Q8L1NUUk9ORz4gcmV0dXJucyBvbmUgb2Y6ICBOT19KVVNUSUZJQ0FUSU9OLAogICAgICAgIEpVU1RJRllfUklHSFQsIEpVU1RJRllfTEVGVCwgb3IgSlVTVElGWV9DRU5URVIuCiAKICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfZmllbGRfanVzdDwvU1RST05HPiByZXR1cm5zIG9uZSBvZiB0aGUgZm9sbG93aW5nOgpAQCAtNzksNDEgKzc5LDQ4IEBACiAgICAgICAgICAgICBTeXN0ZW0gZXJyb3Igb2NjdXJyZWQgKHNlZSA8U1RST05HPmVycm5vPC9TVFJPTkc+KS4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgZGV0ZWN0ZWQgYW4gaW5jb3JyZWN0IG9yICBvdXQtb2YtcmFuZ2UgIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lICBkZXRlY3RlZCAgYW4gaW5jb3JyZWN0IG9yIG91dC1vZi1yYW5nZSBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiBhbmQgcmVsYXRlZCBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbiAiZm9ybV8iIGZvcgogICAgICAgIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBvZiB0aGUgZW50cnkgcG9pbnRzLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5LiAgVGhleQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Ci0gICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldworPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgorICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9qdXN0LjN4Lmh0bWwiPmZvcm1fZmllbGRfanVzdCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9uZXcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sCmluZGV4IDFhMDI2OWEuLjg4YTVjNzQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX25ldy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX2ZpZWxkX25ldy4zeCx2IDEuMTYgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fZmllbGRfbmV3LjN4LHYgMS4xOCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmZvcm1fZmllbGRfbmV3IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9maWVsZF9uZXcgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fZmllbGRfbmV3IDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX25ldy4zeC5odG1sIj5mb3JtX2ZpZWxkX25ldygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfbmV3LjN4Lmh0bWwiPmZvcm1fZmllbGRfbmV3KDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fZmllbGRfbmV3PC9TVFJPTkc+IC0gY3JlYXRlIGFuZCBkZXN0cm95IGZvcm0gZmllbGRzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBGSUVMRCAqbmV3X2ZpZWxkKGludCBoZWlnaHQsIGludCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3Byb3csIGludCBsZWZ0Y29sLApAQCAtNjMsMzYgKzYzLDM2IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uIDxTVFJPTkc+bmV3X2ZpZWxkPC9TVFJPTkc+IGFsbG9jYXRlcyBhIG5ldyBmaWVsZCBhbmQgaW5pdGlhbC0KICAgICAgICBpemVzIGl0IGZyb20gdGhlIHBhcmFtZXRlcnMgZ2l2ZW46IGhlaWdodCwgd2lkdGgsICByb3cgIG9mCiAgICAgICAgdXBwZXItbGVmdCAgY29ybmVyLCAgY29sdW1uICBvZiAgdXBwZXItbGVmdCBjb3JuZXIsIG51bWJlcgogICAgICAgIG9mZi1zY3JlZW4gcm93cywgYW5kIG51bWJlciBvZiBhZGRpdGlvbmFsIHdvcmtpbmcgYnVmZmVycy4KIAotICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+ZHVwX2ZpZWxkPC9TVFJPTkc+IGR1cGxpY2F0ZXMgYSBmaWVsZCBhdCBhIG5ldyBsb2NhLQotICAgICAgIHRpb24uICBNb3N0IGF0dHJpYnV0ZXMgKGluY2x1ZGluZyBjdXJyZW50IGNvbnRlbnRzLCAgc2l6ZSwKLSAgICAgICB2YWxpZGF0aW9uICB0eXBlLCBidWZmZXIgY291bnQsIGdyb3d0aCB0aHJlc2hvbGQsIGp1c3RpZmktCi0gICAgICAgY2F0aW9uLCBmb3JlZ3JvdW5kLCBiYWNrZ3JvdW5kLCAgcGFkICBjaGFyYWN0ZXIsICBvcHRpb25zLAotICAgICAgIGFuZCAgdXNlciBwb2ludGVyKSBhcmUgY29waWVkLiAgRmllbGQgc3RhdHVzIGFuZCB0aGUgZmllbGQKKyAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5kdXBfZmllbGQ8L1NUUk9ORz4gZHVwbGljYXRlcyBhIGZpZWxkIGF0IGEgIG5ldyAgbG9jYS0KKyAgICAgICB0aW9uLiAgIE1vc3QgYXR0cmlidXRlcyAoaW5jbHVkaW5nIGN1cnJlbnQgY29udGVudHMsIHNpemUsCisgICAgICAgdmFsaWRhdGlvbiB0eXBlLCBidWZmZXIgY291bnQsIGdyb3d0aCB0aHJlc2hvbGQsICBqdXN0aWZpLQorICAgICAgIGNhdGlvbiwgIGZvcmVncm91bmQsICBiYWNrZ3JvdW5kLCAgcGFkIGNoYXJhY3Rlciwgb3B0aW9ucywKKyAgICAgICBhbmQgdXNlciBwb2ludGVyKSBhcmUgY29waWVkLiAgRmllbGQgc3RhdHVzIGFuZCB0aGUgIGZpZWxkCiAgICAgICAgcGFnZSBiaXQgYXJlIG5vdCBjb3BpZWQuCiAKLSAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5saW5rX2ZpZWxkPC9TVFJPTkc+IGFjdHMgbGlrZSA8U1RST05HPmR1cF9maWVsZDwvU1RST05HPiwgYnV0ICB0aGUgIG5ldwotICAgICAgIGZpZWxkICBzaGFyZXMgIGJ1ZmZlcnMgd2l0aCBpdHMgcGFyZW50LiAgQXR0cmlidXRlIGRhdGEgaXMKKyAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPmxpbmtfZmllbGQ8L1NUUk9ORz4gYWN0cyBsaWtlIDxTVFJPTkc+ZHVwX2ZpZWxkPC9TVFJPTkc+LCBidXQgdGhlIG5ldworICAgICAgIGZpZWxkIHNoYXJlcyBidWZmZXJzIHdpdGggaXRzIHBhcmVudC4gIEF0dHJpYnV0ZSAgZGF0YSAgaXMKICAgICAgICBzZXBhcmF0ZS4KIAotICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPmZyZWVfZmllbGQ8L1NUUk9ORz4gIGRlLWFsbG9jYXRlcyAgc3RvcmFnZSAgYXNzb2NpYXRlZAorICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+ZnJlZV9maWVsZDwvU1RST05HPiAgZGUtYWxsb2NhdGVzIHN0b3JhZ2UgYXNzb2NpYXRlZAogICAgICAgIHdpdGggYSBmaWVsZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiwgPFNUUk9ORz5uZXdfZmllbGQ8L1NUUk9ORz4sIDxTVFJPTkc+ZHVwX2ZpZWxkPC9TVFJPTkc+LCA8U1RST05HPmxpbmtfZmllbGQ8L1NUUk9ORz4gcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPgogICAgICAgIG9uIGVycm9yLiAgVGhleSBzZXQgZXJybm8gYWNjb3JkaW5nIHRvIHRoZWlyIHN1Y2Nlc3M6CiAKICAgICAgICA8U1RST05HPkVfT0s8L1NUUk9ORz4gVGhlIHJvdXRpbmUgc3VjY2VlZGVkLgogCiAgICAgICAgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPgotICAgICAgICAgICAgUm91dGluZSBkZXRlY3RlZCBhbiBpbmNvcnJlY3Qgb3IgIG91dC1vZi1yYW5nZSAgYXJndS0KKyAgICAgICAgICAgIFJvdXRpbmUgIGRldGVjdGVkICBhbiBpbmNvcnJlY3Qgb3Igb3V0LW9mLXJhbmdlIGFyZ3UtCiAgICAgICAgICAgICBtZW50LgogCiAgICAgICAgPFNUUk9ORz5FX1NZU1RFTV9FUlJPUjwvU1RST05HPgpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgIGRldGVjdGVkICBhbiBpbmNvcnJlY3Qgb3Igb3V0LW9mLXJhbmdlIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lIGRldGVjdGVkIGFuIGluY29ycmVjdCBvciAgb3V0LW9mLXJhbmdlICBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogICAgICAgIDxTVFJPTkc+RV9DT05ORUNURUQ8L1NUUk9ORz4KQEAgLTExMSw0MCArMTExLDQ3IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zIGxpYnJhcnkuICBUaGV5Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKLSAgICAgICBJdCBtYXkgYmUgdW53aXNlIHRvIGNvdW50IG9uIHRoZSBzZXQgb2YgYXR0cmlidXRlcyAgY29waWVkCi0gICAgICAgYnkgIDxTVFJPTkc+ZHVwX2ZpZWxkPC9TVFJPTkc+ICBiZWluZyAgcG9ydGFibGU7IHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5CisgICAgICAgSXQgIG1heSBiZSB1bndpc2UgdG8gY291bnQgb24gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGNvcGllZAorICAgICAgIGJ5IDxTVFJPTkc+ZHVwX2ZpZWxkPC9TVFJPTkc+IGJlaW5nIHBvcnRhYmxlOyB0aGUgU3lzdGVtICBWICBmb3JtcyAgbGlicmFyeQogICAgICAgIGRvY3VtZW50cyBhcmUgbm90IHZlcnkgZXhwbGljaXQgYWJvdXQgd2hhdCBnZXRzIGNvcGllZCBhbmQKICAgICAgICB3aGF0IGRvZXMgbm90LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Ci0gICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldworPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgorICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfbmV3LjN4Lmh0bWwiPmZvcm1fZmllbGRfbmV3KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbAppbmRleCBmOWExMzIxLi45M2I2MmExIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF9vcHRzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfb3B0cy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX2ZpZWxkX29wdHMuM3gsdiAxLjEzIDIwMDcvMDIvMjQgMTc6MzQ6MjcgdG9tIEV4cCBACisgICogQElkOiBmb3JtX2ZpZWxkX29wdHMuM3gsdiAxLjE3IDIwMTQvMDcvMjYgMjE6MjE6NTcgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9maWVsZF9vcHRzIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9maWVsZF9vcHRzIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2ZpZWxkX29wdHMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfb3B0cy4zeC5odG1sIj5mb3JtX2ZpZWxkX29wdHMoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF9vcHRzLjN4Lmh0bWwiPmZvcm1fZmllbGRfb3B0cygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2ZpZWxkX29wdHM8L1NUUk9ORz4gLSBzZXQgYW5kIGdldCBmaWVsZCBvcHRpb25zCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2ZpZWxkX29wdHMoRklFTEQgKmZpZWxkLCBGaWVsZF9PcHRpb25zIG9wdHMpOwogICAgICAgIGludCBmaWVsZF9vcHRzX29uKEZJRUxEICpmaWVsZCwgRmllbGRfT3B0aW9ucyBvcHRzKTsKQEAgLTYxLDcgKzYxLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+c2V0X2ZpZWxkX29wdHM8L1NUUk9ORz4gIHNldHMgIGFsbCB0aGUgZ2l2ZW4gZmllbGQncwogICAgICAgIG9wdGlvbiBiaXRzIChmaWVsZCAgb3B0aW9uICBiaXRzICBtYXkgIGJlICBsb2dpY2FsbHktT1InZWQKICAgICAgICB0b2dldGhlcikuCkBAIC03NSw1NSArNzUsNjMgQEAKICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5maWVsZF9vcHRzPC9TVFJPTkc+IHJldHVybnMgdGhlIGZpZWxkJ3MgY3VycmVudCBvcHRpb24KICAgICAgICBiaXRzLgogCi0gICAgICAgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBkZWZpbmVkIChhbGwgYXJlIG9uIGJ5IGRlZmF1bHQpOgotCi0gICAgICAgT19WSVNJQkxFCi0gICAgICAgICAgICBUaGUgIGZpZWxkIGlzIGRpc3BsYXllZC4gIElmIHRoaXMgb3B0aW9uIGlzIG9mZiwgZGlzLQotICAgICAgICAgICAgcGxheSBvZiB0aGUgZmllbGQgaXMgc3VwcHJlc3NlZC4KKyAgICAgICBUaGUgZm9sbG93aW5nIHN0YW5kYXJkIG9wdGlvbnMgYXJlIGRlZmluZWQgKGFsbCBhcmUgb24gIGJ5CisgICAgICAgZGVmYXVsdCk6CiAKICAgICAgICBPX0FDVElWRQotICAgICAgICAgICAgVGhlIGZpZWxkIGlzICB2aXNpdGVkICBkdXJpbmcgIHByb2Nlc3NpbmcuICAgSWYgIHRoaXMKLSAgICAgICAgICAgIG9wdGlvbiAgaXMgIG9mZiwgIHRoZSAgZmllbGQgd2lsbCBub3QgYmUgcmVhY2hhYmxlIGJ5Ci0gICAgICAgICAgICBuYXZpZ2F0aW9uIGtleXMuICBQbGVhc2UgIG5vdGljZSAgdGhhdCAgYW4gIGludmlzaWJsZQorICAgICAgICAgICAgVGhlICBmaWVsZCAgaXMgIHZpc2l0ZWQgIGR1cmluZyAgcHJvY2Vzc2luZy4gIElmIHRoaXMKKyAgICAgICAgICAgIG9wdGlvbiBpcyBvZmYsIHRoZSBmaWVsZCB3aWxsICBub3QgIGJlICByZWFjaGFibGUgIGJ5CisgICAgICAgICAgICBuYXZpZ2F0aW9uICBrZXlzLiAgUGxlYXNlICBub3RpY2UgIHRoYXQgIGFuIGludmlzaWJsZQogICAgICAgICAgICAgZmllbGQgYXBwZWFycyB0byBiZSBpbmFjdGl2ZSBhbHNvLgogCi0gICAgICAgT19QVUJMSUMKLSAgICAgICAgICAgIFRoZSAgZmllbGQgY29udGVudHMgYXJlIGRpc3BsYXllZCBhcyBkYXRhIGlzIGVudGVyZWQuCi0KLSAgICAgICBPX0VESVQKLSAgICAgICAgICAgIFRoZSBmaWVsZCBjYW4gYmUgZWRpdGVkLgotCi0gICAgICAgT19XUkFQCi0gICAgICAgICAgICBXb3JkcyB0aGF0IGRvIG5vdCBmaXQgb24gYSBsaW5lIGFyZSAgd3JhcHBlZCAgdG8gIHRoZQotICAgICAgICAgICAgbmV4dCBsaW5lLiAgV29yZHMgYXJlIGJsYW5rLXNlcGFyYXRlZC4KLQotICAgICAgIE9fQkxBTksKLSAgICAgICAgICAgIFRoZSAgZmllbGQgaXMgY2xlYXJlZCB3aGVuZXZlciBhIGNoYXJhY3RlciBpcyBlbnRlcmVkCi0gICAgICAgICAgICBhdCB0aGUgZmlyc3QgcG9zaXRpb24uCi0KICAgICAgICBPX0FVVE9TS0lQCiAgICAgICAgICAgICBTa2lwIHRvIHRoZSBuZXh0IGZpZWxkIHdoZW4gdGhpcyBvbmUgZmlsbHMuCiAKKyAgICAgICBPX0JMQU5LCisgICAgICAgICAgICBUaGUgZmllbGQgaXMgY2xlYXJlZCB3aGVuZXZlciBhIGNoYXJhY3RlciBpcyAgZW50ZXJlZAorICAgICAgICAgICAgYXQgdGhlIGZpcnN0IHBvc2l0aW9uLgorCisgICAgICAgT19FRElUCisgICAgICAgICAgICBUaGUgZmllbGQgY2FuIGJlIGVkaXRlZC4KKwogICAgICAgIE9fTlVMTE9LCiAgICAgICAgICAgICBBbGxvdyBhIGJsYW5rIGZpZWxkLgogCi0gICAgICAgT19TVEFUSUMKLSAgICAgICAgICAgIEZpZWxkIGJ1ZmZlcnMgYXJlIGZpeGVkICB0byAgZmllbGQncyAgb3JpZ2luYWwgIHNpemUuCi0gICAgICAgICAgICBUdXJuIHRoaXMgb3B0aW9uIG9mZiB0byBjcmVhdGUgYSBkeW5hbWljIGZpZWxkLgotCiAgICAgICAgT19QQVNTT0sKICAgICAgICAgICAgIFZhbGlkYXRlIGZpZWxkIG9ubHkgaWYgbW9kaWZpZWQgYnkgdXNlci4KIAorICAgICAgIE9fUFVCTElDCisgICAgICAgICAgICBUaGUgZmllbGQgY29udGVudHMgYXJlIGRpc3BsYXllZCBhcyBkYXRhIGlzIGVudGVyZWQuCisKKyAgICAgICBPX1NUQVRJQworICAgICAgICAgICAgRmllbGQgIGJ1ZmZlcnMgIGFyZSAgZml4ZWQgIHRvIGZpZWxkJ3Mgb3JpZ2luYWwgc2l6ZS4KKyAgICAgICAgICAgIFR1cm4gdGhpcyBvcHRpb24gb2ZmIHRvIGNyZWF0ZSBhIGR5bmFtaWMgZmllbGQuCisKKyAgICAgICBPX1ZJU0lCTEUKKyAgICAgICAgICAgIFRoZSBmaWVsZCBpcyBkaXNwbGF5ZWQuICBJZiB0aGlzIG9wdGlvbiBpcyBvZmYsICBkaXMtCisgICAgICAgICAgICBwbGF5IG9mIHRoZSBmaWVsZCBpcyBzdXBwcmVzc2VkLgorCisgICAgICAgT19XUkFQCisgICAgICAgICAgICBXb3JkcyAgdGhhdCAgZG8gIG5vdCBmaXQgb24gYSBsaW5lIGFyZSB3cmFwcGVkIHRvIHRoZQorICAgICAgICAgICAgbmV4dCBsaW5lLiAgV29yZHMgYXJlIGJsYW5rLXNlcGFyYXRlZC4KKworICAgICAgIE9uZSBleHRlbnNpb24gb3B0aW9uIGlzIGRlZmluZWQgIChleHRlbnNpb25zICBhcmUgIG9mZiAgYnkKKyAgICAgICBkZWZhdWx0KToKKworICAgICAgIE9fRFlOQU1JQ19KVVNUSUZZCisgICAgICAgICAgICBQZXJtaXQgIGR5bmFtaWMgIGZpZWxkcyAgdG8gYmUganVzdGlmaWVkLCBsaWtlIHN0YXRpYworICAgICAgICAgICAgZmllbGRzLgorCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBFeGNlcHQgIGZvciAgPFNUUk9ORz5maWVsZF9vcHRzPC9TVFJPTkc+LCAgZWFjaCAgcm91dGluZSByZXR1cm5zIG9uZSBvZiB0aGUKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgRXhjZXB0IGZvciA8U1RST05HPmZpZWxkX29wdHM8L1NUUk9ORz4sIGVhY2ggcm91dGluZSAgcmV0dXJucyAgb25lICBvZiAgdGhlCiAgICAgICAgZm9sbG93aW5nOgogCiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgZGV0ZWN0ZWQgYW4gaW5jb3JyZWN0IG9yICBvdXQtb2YtcmFuZ2UgIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lICBkZXRlY3RlZCAgYW4gaW5jb3JyZWN0IG9yIG91dC1vZi1yYW5nZSBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogICAgICAgIDxTVFJPTkc+RV9DVVJSRU5UPC9TVFJPTkc+CkBAIC0xMzQsMzMgKzE0Miw0MiBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPi4KLQotCi0gICAgICAgPFNUUk9ORz5OT1RFUzwvU1RST05HPiAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUKLSAgICAgICAgICAgICAgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LiAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX2p1c3QuM3guaHRtbCI+Zm9ybV9maWVsZF9qdXN0KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCisgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zIGxpYnJhcnkuICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KLSAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CisgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX29wdHMuM3guaHRtbCI+Zm9ybV9maWVsZF9vcHRzKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbAppbmRleCBjN2E2YWQ0Li5iY2U0ZTExIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfdXNlcnB0ci4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNDYgKzI3LDQ3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX2ZpZWxkX3VzZXJwdHIuM3gsdiAxLjggMjAwNi8xMS8wNCAxODowNDozNyB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fZmllbGRfdXNlcnB0ci4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2ZpZWxkX3VzZXJwdHIgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX2ZpZWxkX3VzZXJwdHIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fZmllbGRfdXNlcnB0ciAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZF91c2VycHRyLjN4Lmh0bWwiPmZvcm1fZmllbGRfdXNlcnB0cigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV9maWVsZF91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fZmllbGRfdXNlcnB0cjwvU1RST05HPiAgLSAgYXNzb2NpYXRlICBhcHBsaWNhdGlvbiAgZGF0YSB3aXRoIGEKICAgICAgICBmb3JtIGZpZWxkCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2ZpZWxkX3VzZXJwdHIoRklFTEQgKmZpZWxkLCB2b2lkKnVzZXJwdHIpOwogICAgICAgIHZvaWQgKmZpZWxkX3VzZXJwdHIoY29uc3QgRklFTEQgKmZpZWxkKTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIEV2ZXJ5IGZvcm0gZmllbGQgaGFzIGEgZmllbGQgdGhhdCAgY2FuICBiZSAgdXNlZCAgdG8gIGhvbGQKICAgICAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYyAgZGF0YSAgKHRoYXQgaXMsIHRoZSBmb3JtLWRyaXZlciBjb2RlCiAgICAgICAgbGVhdmVzIGl0IGFsb25lKS4gIFRoZXNlIGZ1bmN0aW9ucyBnZXQgYW5kIHNldCB0aGF0IGZpZWxkLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGZ1bmN0aW9uIDxTVFJPTkc+ZmllbGRfdXNlcnB0cjwvU1RST05HPiByZXR1cm5zIGEgcG9pbnRlciAod2hpY2ggbWF5IGJlCiAgICAgICAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+KS4gIEl0IGRvZXMgbm90IHNldCBlcnJuby4KIApAQCAtNzUsMTkgKzc1LDE5IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zIGxpYnJhcnkuICBUaGV5Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKICAgICAgICBUaGUgdXNlciBwb2ludGVyIGlzIGEgdm9pZCBwb2ludGVyLiAgV2UgY2hvc2Ugbm90IHRvIGxlYXZlCkBAIC05NSwxOCArOTUsMjUgQEAKIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfdXNlcnB0ci4zeC5odG1sIj5mb3JtX2ZpZWxkX3VzZXJwdHIoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfdmFsaWRhdGlvbi4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGRfdmFsaWRhdGlvbi4zeC5odG1sCmluZGV4IDkzMjgwMzEuLjY3Nzc5MGUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2ZpZWxkX3ZhbGlkYXRpb24uM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMxICsyNiwzMiBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4LHYgMS4xNiAyMDA2LzEyLzI0IDE2OjA4OjA4IHRvbSBFeHAgQAorICAqIEBJZDogZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4LHYgMS4yMCAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmZvcm1fZmllbGRfdmFsaWRhdGlvbiAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fZmllbGRfdmFsaWRhdGlvbiAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Zm9ybV9maWVsZF92YWxpZGF0aW9uIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkX3ZhbGlkYXRpb24uM3guaHRtbCI+Zm9ybV9maWVsZF92YWxpZGF0aW9uKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeC5odG1sIj5mb3JtX2ZpZWxkX3ZhbGlkYXRpb24oM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Zm9ybV9maWVsZF92YWxpZGF0aW9uPC9TVFJPTkc+IC0gZGF0YSB0eXBlIHZhbGlkYXRpb24gZm9yIGZpZWxkcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9maWVsZF90eXBlKEZJRUxEICpmaWVsZCwgRklFTERUWVBFICp0eXBlLCAuLi4pOwogICAgICAgIEZJRUxEVFlQRSAqZmllbGRfdHlwZShjb25zdCBGSUVMRCAqZmllbGQpOwpAQCAtNjcsNyArNjcsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5zZXRfZmllbGRfdHlwZTwvU1RST05HPiAgZGVjbGFyZXMgIGEgZGF0YSB0eXBlIGZvciBhCiAgICAgICAgZ2l2ZW4gZm9ybSBmaWVsZC4gIFRoaXMgaXMgdGhlIHR5cGUgY2hlY2tlZCBieSAgdmFsaWRhdGlvbgogICAgICAgIGZ1bmN0aW9ucy4gIFRoZSBwcmVkZWZpbmVkIHR5cGVzIGFyZSBhcyBmb2xsb3dzOgpAQCAtODgsNzAgKzg4LDY5IEBACiAgICAgICAgICAgICBwYXJ0aWFsICBtYXRjaCAgbXVzdCBiZSBhIHVuaXF1ZSBvbmUgKGlmIHRoaXMgZmxhZyBpcwogICAgICAgICAgICAgb2ZmLCBhIHByZWZpeCBtYXRjaGVzIHRoZSBmaXJzdCBvZiBhbnkgIHNldCAgb2YgIG1vcmUKICAgICAgICAgICAgIHRoYW4gIG9uZSAgbGlzdCAgZWxlbWVudHMgIHdpdGggIHRoYXQgcHJlZml4KS4gUGxlYXNlCi0gICAgICAgICAgICBub3RpY2UgdGhhdCB0aGUgc3RyaW5nIGxpc3QgaXMgIG5vdCAgY29waWVkLCAgb25seSAgYQotICAgICAgICAgICAgcmVmZXJlbmNlIHRvIGl0IGlzIHN0b3JlZCBpbiB0aGUgZmllbGQuIFNvIHlvdSBzaG91bGQKLSAgICAgICAgICAgIGF2b2lkIHVzaW5nIGEgbGlzdCB0aGF0IGxpdmVzIGluIGF1dG9tYXRpYyAgdmFyaWFibGVzCi0gICAgICAgICAgICBvbiB0aGUgc3RhY2suCisgICAgICAgICAgICBub3RpY2UgdGhhdCB0aGUgc3RyaW5nIGxpc3QgaXMgY29waWVkLiBTbyB5b3UgbWF5IHVzZQorICAgICAgICAgICAgYSAgbGlzdCAgdGhhdCAgbGl2ZXMgIGluICBhdXRvbWF0aWMgIHZhcmlhYmxlcyBvbiB0aGUKKyAgICAgICAgICAgIHN0YWNrLgogCiAgICAgICAgVFlQRV9JTlRFR0VSCi0gICAgICAgICAgICBJbnRlZ2VyICBkYXRhLCAgcGFyc2FibGUgIHRvICBhbiAgaW50ZWdlciBieSA8U1RST05HPmF0b2koMyk8L1NUUk9ORz4uCi0gICAgICAgICAgICBSZXF1aXJlcyBhIHRoaXJkIDxTVFJPTkc+aW50PC9TVFJPTkc+IGFyZ3VtZW50IGNvbnRyb2xsaW5nIHRoZSAgcHJlY2ktCi0gICAgICAgICAgICBzaW9uLCAgYSAgZm91cnRoICA8U1RST05HPmxvbmc8L1NUUk9ORz4gIGFyZ3VtZW50IGNvbnN0cmFpbmluZyBtaW5pbXVtCi0gICAgICAgICAgICB2YWx1ZSwgYW5kIGEgZmlmdGggPFNUUk9ORz5sb25nPC9TVFJPTkc+IGNvbnN0cmFpbmluZyAgbWF4aW11bSAgdmFsdWUuCi0gICAgICAgICAgICBJZiAgdGhlICBtYXhpbXVtICB2YWx1ZSAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQorICAgICAgICAgICAgSW50ZWdlciBkYXRhLCBwYXJzYWJsZSAgdG8gIGFuICBpbnRlZ2VyICBieSAgPFNUUk9ORz5hdG9pKDMpPC9TVFJPTkc+LgorICAgICAgICAgICAgUmVxdWlyZXMgIGEgdGhpcmQgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gYXJndW1lbnQgY29udHJvbGxpbmcgdGhlIHByZWNpLQorICAgICAgICAgICAgc2lvbiwgYSBmb3VydGggIDxTVFJPTkc+bG9uZzwvU1RST05HPiAgYXJndW1lbnQgIGNvbnN0cmFpbmluZyAgbWluaW11bQorICAgICAgICAgICAgdmFsdWUsICBhbmQgIGEgZmlmdGggPFNUUk9ORz5sb25nPC9TVFJPTkc+IGNvbnN0cmFpbmluZyBtYXhpbXVtIHZhbHVlLgorICAgICAgICAgICAgSWYgdGhlIG1heGltdW0gdmFsdWUgaXMgbGVzcyB0aGFuICBvciAgZXF1YWwgIHRvICB0aGUKICAgICAgICAgICAgIG1pbmltdW0gdmFsdWUsIHRoZSByYW5nZSBpcyBzaW1wbHkgaWdub3JlZC4gT24gcmV0dXJuCiAgICAgICAgICAgICB0aGUgZmllbGQgYnVmZmVyIGlzIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIDxTVFJPTkc+cHJpbnRmPC9TVFJPTkc+Ci0gICAgICAgICAgICBmb3JtYXQgIHNwZWNpZmljYXRpb24gICIuKmxkIiwgIHdoZXJlICB0aGUgICAnKicgICBpcwotICAgICAgICAgICAgcmVwbGFjZWQgIGJ5ICB0aGUgcHJlY2lzaW9uIGFyZ3VtZW50LiAgRm9yIGRldGFpbHMgb2YKKyAgICAgICAgICAgIGZvcm1hdCAgIHNwZWNpZmljYXRpb24gICAiLipsZCIsICB3aGVyZSAgdGhlICAnKicgIGlzCisgICAgICAgICAgICByZXBsYWNlZCBieSB0aGUgcHJlY2lzaW9uIGFyZ3VtZW50LiAgRm9yICBkZXRhaWxzICBvZgogICAgICAgICAgICAgdGhlIHByZWNpc2lvbiBoYW5kbGluZyBzZWUgPFNUUk9ORz5wcmludGYnczwvU1RST05HPiBtYW4tcGFnZS4KIAogICAgICAgIFRZUEVfTlVNRVJJQwotICAgICAgICAgICAgTnVtZXJpYyAgZGF0YSAgKG1heSAgaGF2ZSAgYSAgIGRlY2ltYWwtcG9pbnQgICBwYXJ0KS4KLSAgICAgICAgICAgIFJlcXVpcmVzICBhIHRoaXJkIDxTVFJPTkc+aW50PC9TVFJPTkc+IGFyZ3VtZW50IGNvbnRyb2xsaW5nIHRoZSBwcmVjaS0KLSAgICAgICAgICAgIHNpb24sIGEgZm91cnRoIDxTVFJPTkc+ZG91YmxlPC9TVFJPTkc+IGFyZ3VtZW50ICBjb25zdHJhaW5pbmcgIG1pbmltdW0KKyAgICAgICAgICAgIE51bWVyaWMgICBkYXRhICAgKG1heSAgaGF2ZSAgYSAgZGVjaW1hbC1wb2ludCAgcGFydCkuCisgICAgICAgICAgICBSZXF1aXJlcyBhIHRoaXJkIDxTVFJPTkc+aW50PC9TVFJPTkc+IGFyZ3VtZW50IGNvbnRyb2xsaW5nIHRoZSAgcHJlY2ktCisgICAgICAgICAgICBzaW9uLCAgYSAgZm91cnRoIDxTVFJPTkc+ZG91YmxlPC9TVFJPTkc+IGFyZ3VtZW50IGNvbnN0cmFpbmluZyBtaW5pbXVtCiAgICAgICAgICAgICB2YWx1ZSwgYW5kIGEgZmlmdGggPFNUUk9ORz5kb3VibGU8L1NUUk9ORz4gY29uc3RyYWluaW5nIG1heGltdW0gdmFsdWUuCi0gICAgICAgICAgICBJZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBsb2NhbGVzLCAgdGhlICBkZWNpbWFsICBwb2ludAotICAgICAgICAgICAgY2hhcmFjdGVyICB0byAgYmUgIHVzZWQgIG11c3QgYmUgdGhlIG9uZSBzcGVjaWZpZWQgYnkKLSAgICAgICAgICAgIHlvdXIgbG9jYWxlLiAgSWYgdGhlIG1heGltdW0gdmFsdWUgaXMgIGxlc3MgIHRoYW4gIG9yCi0gICAgICAgICAgICBlcXVhbCAgdG8gIHRoZSAgbWluaW11bSAgdmFsdWUsICB0aGUgIHJhbmdlIGlzIHNpbXBseQotICAgICAgICAgICAgaWdub3JlZC4gT24gcmV0dXJuICB0aGUgIGZpZWxkICBidWZmZXIgIGlzICBmb3JtYXR0ZWQKLSAgICAgICAgICAgIGFjY29yZGluZyAgdG8gIHRoZSA8U1RST05HPnByaW50ZjwvU1RST05HPiBmb3JtYXQgc3BlY2lmaWNhdGlvbiAiLipmIiwKLSAgICAgICAgICAgIHdoZXJlIHRoZSAnKicgaXMgcmVwbGFjZWQgYnkgdGhlIHByZWNpc2lvbiAgYXJndW1lbnQuCi0gICAgICAgICAgICBGb3IgIGRldGFpbHMgIG9mICB0aGUgcHJlY2lzaW9uIGhhbmRsaW5nIHNlZSA8U1RST05HPnByaW50ZidzPC9TVFJPTkc+CisgICAgICAgICAgICBJZiAgeW91ciAgc3lzdGVtICBzdXBwb3J0cyBsb2NhbGVzLCB0aGUgZGVjaW1hbCBwb2ludAorICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGJlIHVzZWQgbXVzdCBiZSAgdGhlICBvbmUgIHNwZWNpZmllZCAgYnkKKyAgICAgICAgICAgIHlvdXIgIGxvY2FsZS4gICBJZiAgdGhlIG1heGltdW0gdmFsdWUgaXMgbGVzcyB0aGFuIG9yCisgICAgICAgICAgICBlcXVhbCB0byB0aGUgIG1pbmltdW0gIHZhbHVlLCAgdGhlICByYW5nZSAgaXMgIHNpbXBseQorICAgICAgICAgICAgaWdub3JlZC4gIE9uICByZXR1cm4gIHRoZSAgZmllbGQgIGJ1ZmZlciBpcyBmb3JtYXR0ZWQKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgPFNUUk9ORz5wcmludGY8L1NUUk9ORz4gZm9ybWF0ICBzcGVjaWZpY2F0aW9uICAiLipmIiwKKyAgICAgICAgICAgIHdoZXJlICB0aGUgJyonIGlzIHJlcGxhY2VkIGJ5IHRoZSBwcmVjaXNpb24gYXJndW1lbnQuCisgICAgICAgICAgICBGb3IgZGV0YWlscyBvZiB0aGUgcHJlY2lzaW9uICBoYW5kbGluZyAgc2VlICA8U1RST05HPnByaW50ZidzPC9TVFJPTkc+CiAgICAgICAgICAgICBtYW4tcGFnZS4KIAogICAgICAgIFRZUEVfUkVHRVhQCi0gICAgICAgICAgICBSZWd1bGFyIGV4cHJlc3Npb24gZGF0YS4gIFJlcXVpcmVzIGEgcmVndWxhciAgZXhwcmVzLQotICAgICAgICAgICAgc2lvbiAgPFNUUk9ORz4oY2hhcjwvU1RST05HPiAgPFNUUk9ORz4qKTwvU1RST05HPiAgdGhpcmQgYXJndW1lbnQ7IHRoZSBkYXRhIGlzIHZhbGlkIGlmCi0gICAgICAgICAgICB0aGUgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMgaXQuICAgUmVndWxhciAgZXhwcmVzLQotICAgICAgICAgICAgc2lvbnMgIGFyZSAgaW4gIHRoZSAgZm9ybWF0ICBvZiAgPFNUUk9ORz5yZWdjb21wPC9TVFJPTkc+IGFuZCA8U1RST05HPnJlZ2V4ZWM8L1NUUk9ORz4uCi0gICAgICAgICAgICBQbGVhc2Ugbm90aWNlIHRoYXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtdXN0ICBtYXRjaAotICAgICAgICAgICAgdGhlICB3aG9sZSAgZmllbGQuICBJZiAgeW91IGhhdmUgZm9yIGV4YW1wbGUgYW4gZWlnaHQKKyAgICAgICAgICAgIFJlZ3VsYXIgIGV4cHJlc3Npb24gZGF0YS4gIFJlcXVpcmVzIGEgcmVndWxhciBleHByZXMtCisgICAgICAgICAgICBzaW9uIDxTVFJPTkc+KGNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qKTwvU1RST05HPiB0aGlyZCBhcmd1bWVudDsgdGhlIGRhdGEgIGlzICB2YWxpZCAgaWYKKyAgICAgICAgICAgIHRoZSAgcmVndWxhciAgZXhwcmVzc2lvbiBtYXRjaGVzIGl0LiAgUmVndWxhciBleHByZXMtCisgICAgICAgICAgICBzaW9ucyBhcmUgaW4gIHRoZSAgZm9ybWF0ICBvZiAgPFNUUk9ORz5yZWdjb21wPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+cmVnZXhlYzwvU1RST05HPi4KKyAgICAgICAgICAgIFBsZWFzZSAgbm90aWNlIHRoYXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtdXN0IG1hdGNoCisgICAgICAgICAgICB0aGUgd2hvbGUgZmllbGQuIElmIHlvdSBoYXZlICBmb3IgIGV4YW1wbGUgIGFuICBlaWdodAogICAgICAgICAgICAgY2hhcmFjdGVyIHdpZGUgZmllbGQsIGEgcmVndWxhciBleHByZXNzaW9uICJeWzAtOV0qJCIKLSAgICAgICAgICAgIGFsd2F5cyAgbWVhbnMgIHRoYXQgIHlvdSBoYXZlIHRvIGZpbGwgYWxsIGVpZ2h0IHBvc2ktCisgICAgICAgICAgICBhbHdheXMgbWVhbnMgdGhhdCB5b3UgaGF2ZSB0byBmaWxsICBhbGwgIGVpZ2h0ICBwb3NpLQogICAgICAgICAgICAgdGlvbnMgd2l0aCBkaWdpdHMuIElmIHlvdSB3YW50IHRvIGFsbG93IGZld2VyIGRpZ2l0cywKLSAgICAgICAgICAgIHlvdSAgbWF5ICB1c2UgIGZvciBleGFtcGxlICJeWzAtOV0qICokIiB3aGljaCBpcyBnb29kCi0gICAgICAgICAgICBmb3IgdHJhaWxpbmcgc3BhY2VzICh1cCB0byBhbiAgZW1wdHkgIGZpZWxkKSwgIG9yICAiXgotICAgICAgICAgICAgKlswLTldKiAgKiQiICB3aGljaCAgaXMgZ29vZCBmb3IgbGVhZGluZyBhbmQgdHJhaWxpbmcKKyAgICAgICAgICAgIHlvdSBtYXkgdXNlIGZvciBleGFtcGxlICJeWzAtOV0qICokIiAgd2hpY2ggIGlzICBnb29kCisgICAgICAgICAgICBmb3IgIHRyYWlsaW5nICBzcGFjZXMgICh1cCAgdG8gYW4gZW1wdHkgZmllbGQpLCBvciAiXgorICAgICAgICAgICAgKlswLTldKiAqJCIgd2hpY2ggaXMgZ29vZCBmb3IgIGxlYWRpbmcgIGFuZCAgdHJhaWxpbmcKICAgICAgICAgICAgIHNwYWNlcyBhcm91bmQgdGhlIGRpZ2l0cy4KIAogICAgICAgIFRZUEVfSVBWNAogICAgICAgICAgICAgQW4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0IGFkZHJlc3MuIFRoaXMgcmVxdWlyZXMKLSAgICAgICAgICAgIG5vICBhZGRpdGlvbmFsIGFyZ3VtZW50LiBJdCBpcyBjaGVja2VkIHdoZXRoZXIgb3Igbm90Ci0gICAgICAgICAgICB0aGUgYnVmZmVyIGhhcyB0aGUgZm9ybSBhLmIuYy5kLCB3aGVyZSAgYSxiLGMgIGFuZCAgZAorICAgICAgICAgICAgbm8gYWRkaXRpb25hbCBhcmd1bWVudC4gSXQgaXMgY2hlY2tlZCB3aGV0aGVyIG9yICBub3QKKyAgICAgICAgICAgIHRoZSAgYnVmZmVyICBoYXMgIHRoZSBmb3JtIGEuYi5jLmQsIHdoZXJlIGEsYixjIGFuZCBkCiAgICAgICAgICAgICBhcmUgbnVtYmVycyBiZXR3ZWVuIDAgYW5kIDI1NS4gVHJhaWxpbmcgYmxhbmtzIGluIHRoZQotICAgICAgICAgICAgYnVmZmVyIGFyZSBpZ25vcmVkLiBUaGUgYWRkcmVzcyBpdHNlbGYgaXMgIG5vdCAgdmFsaS0KKyAgICAgICAgICAgIGJ1ZmZlciAgYXJlICBpZ25vcmVkLiBUaGUgYWRkcmVzcyBpdHNlbGYgaXMgbm90IHZhbGktCiAgICAgICAgICAgICBkYXRlZC4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIGFuIG5jdXJzZXMgZXh0ZW5zaW9uLgotICAgICAgICAgICAgVGhpcyBmaWVsZCB0eXBlIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIG90aGVyICBjdXJzZXMKKyAgICAgICAgICAgIFRoaXMgIGZpZWxkIHR5cGUgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gb3RoZXIgY3Vyc2VzCiAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCiAKLSAgICAgICBJdCAgaXMgIHBvc3NpYmxlICB0byAgc2V0ICB1cCBuZXcgcHJvZ3JhbW1lci1kZWZpbmVkIGZpZWxkCisgICAgICAgSXQgaXMgcG9zc2libGUgdG8gIHNldCAgdXAgIG5ldyAgcHJvZ3JhbW1lci1kZWZpbmVkICBmaWVsZAogICAgICAgIHR5cGVzLiAgU2VlIHRoZSA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGR0eXBlLjN4Lmh0bWwiPmZvcm1fZmllbGR0eXBlKDN4KTwvQT48L1NUUk9ORz4gbWFudWFsIHBhZ2UuCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgotICAgICAgIFRoZSBmdW5jdGlvbnMgPFNUUk9ORz5maWVsZF90eXBlPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+ZmllbGRfYXJnPC9TVFJPTkc+ICByZXR1cm4gIDxTVFJPTkc+TlVMTDwvU1RST05HPiAgb24KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlICBmdW5jdGlvbnMgIDxTVFJPTkc+ZmllbGRfdHlwZTwvU1RST05HPiAgYW5kICA8U1RST05HPmZpZWxkX2FyZzwvU1RST05HPiAgcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPiBvbgogICAgICAgIGVycm9yLiBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfZmllbGRfdHlwZTwvU1RST05HPiByZXR1cm5zIG9uZSBvZiB0aGUgZm9sLQogICAgICAgIGxvd2luZzoKIApAQCAtMTYyLDM1ICsxNjEsNDIgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV92YXJpYWJsZXMuM3guaHRtbCI+Zm9ybV92YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgbGlicmFyeS4gIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fZmllbGRfdmFsaWRhdGlvbi4zeC5odG1sIj5mb3JtX2ZpZWxkX3ZhbGlkYXRpb24oM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fZmllbGR0eXBlLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZHR5cGUuM3guaHRtbAppbmRleCA4MGRhYjQxLi5iMWUyN2E2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZHR5cGUuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9maWVsZHR5cGUuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDMxICsyNywzMiBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogZm9ybV9maWVsZHR5cGUuM3gsdiAxLjE0IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCBACisgICogQElkOiBmb3JtX2ZpZWxkdHlwZS4zeCx2IDEuMTYgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX2ZpZWxkdHlwZSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fZmllbGR0eXBlIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX2ZpZWxkdHlwZSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZHR5cGUuM3guaHRtbCI+Zm9ybV9maWVsZHR5cGUoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX2ZpZWxkdHlwZS4zeC5odG1sIj5mb3JtX2ZpZWxkdHlwZSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX2ZpZWxkdHlwZTwvU1RST05HPiAtIGRlZmluZSB2YWxpZGF0aW9uLWZpZWxkIHR5cGVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBGSUVMRFRZUEUgKm5ld19maWVsZHR5cGUoCiAgICAgICAgICAgIGJvb2wgKCogY29uc3QgZmllbGRfY2hlY2spKEZJRUxEICosIGNvbnN0IHZvaWQgKiksCkBAIC03Miw3ICs3Miw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5uZXdfZmllbGR0eXBlPC9TVFJPTkc+IGNyZWF0ZXMgYSBuZXcgZmllbGQgdHlwZSB1c2FibGUKICAgICAgICBmb3IgZGF0YSB2YWxpZGF0aW9uLiAgWW91IHN1cHBseSBpdCAgd2l0aCAgPEVNPmZpZWxkPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+Y2hlY2s8L0VNPiwgIGEKICAgICAgICBwcmVkaWNhdGUgIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhbiBlbnRlcmVkIGRhdGEgc3RyaW5nCkBAIC0xMTIsMTQgKzExMiwxNCBAQAogICAgICAgIDxTVFJPTkc+UkVRX1BSRVZfQ0hPSUNFPC9TVFJPTkc+IGFzc3VtZSB0aGF0IHRoZSBwb3NzaWJsZSB2YWx1ZXMgb2YgYSBmaWVsZAogICAgICAgIGZvcm0gYW4gb3JkZXJlZCBzZXQsIGFuZCBwcm92aWRlIHRoZSBmb3JtcyB1c2VyIHdpdGggYSB3YXkKICAgICAgICB0byAgbW92ZSAgdGhyb3VnaCB0aGUgc2V0LiAgVGhlIDxTVFJPTkc+c2V0X2ZpZWxkdHlwZV9jaG9pY2U8L1NUUk9ORz4gZnVuYy0KLSAgICAgICB0aW9uIGFsbG93cyBmb3JtcyAgcHJvZ3JhbW1lcnMgIHRvICBkZWZpbmUgIHN1Y2Nlc3NvciAgYW5kCi0gICAgICAgcHJlZGVjZXNzb3IgZnVuY3Rpb25zIGZvciB0aGUgZmllbGQgdHlwZS4gIFRoZXNlIGZ1bmN0aW9ucworICAgICAgIHRpb24gYWxsb3dzIGZvcm1zIHByb2dyYW1tZXJzIHRvIGRlZmluZSBzdWNjZXNzb3IgYW5kIHByZS0KKyAgICAgICBkZWNlc3NvciAgZnVuY3Rpb25zICBmb3IgIHRoZSBmaWVsZCB0eXBlLiAgVGhlc2UgZnVuY3Rpb25zCiAgICAgICAgdGFrZSB0aGUgZmllbGQgcG9pbnRlciBhbmQgYW4gYXJndW1lbnQtYmxvY2sgc3RydWN0dXJlICBhcwogICAgICAgIGFyZ3VtZW50cy4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgcG9pbnRlci12YWx1ZWQgIHJvdXRpbmVzICByZXR1cm4gTlVMTCBvbiBlcnJvci4gIFRoZXkKICAgICAgICBzZXQgZXJybm8gYWNjb3JkaW5nIHRvIHRoZWlyIHN1Y2Nlc3M6CiAKQEAgLTE1MiwxMiArMTUyLDEyIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIApAQCAtMTY3LDEzICsxNjcsMTMgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xODEsMTAgKzE4MSwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZHR5cGUuM3guaHRtbCI+Zm9ybV9maWVsZHR5cGUoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1faG9vay4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1faG9vay4zeC5odG1sCmluZGV4IGY4OGFhMWQuLjRmM2M1NGYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX2hvb2suM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9ob29rLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMiArMjcsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1faG9vay4zeCx2IDEuOSAyMDA3LzAyLzI0IDE3OjM0OjE4IHRvbSBFeHAgQAorICAqIEBJZDogZm9ybV9ob29rLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmZvcm1faG9vayAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1faG9vayAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Zm9ybV9ob29rIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJmb3JtX2hvb2suM3guaHRtbCI+Zm9ybV9ob29rKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1faG9vay4zeC5odG1sIj5mb3JtX2hvb2soM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Zm9ybV9ob29rPC9TVFJPTkc+IC0gc2V0IGhvb2tzIGZvciBhdXRvbWF0aWMgaW52b2NhdGlvbiBieSBhcHBsaWNhLQogICAgICAgIHRpb25zCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2ZpZWxkX2luaXQoRk9STSAqZm9ybSwgRm9ybV9Ib29rIGZ1bmMpOwogICAgICAgIEZvcm1fSG9vayBmaWVsZF9pbml0KGNvbnN0IEZPUk0gKmZvcm0pOwpAQCAtNjYsNyArNjYsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgZnVuY3Rpb25zIG1ha2UgaXQgcG9zc2libGUgdG8gc2V0IGhvb2sgZnVuY3Rpb25zICB0bwogICAgICAgIGJlIGNhbGxlZCBhdCB2YXJpb3VzIHBvaW50cyBpbiB0aGUgYXV0b21hdGljIHByb2Nlc3Npbmcgb2YKICAgICAgICBpbnB1dCBldmVudCBjb2RlcyBieSA8U1RST05HPmZvcm1fZHJpdmVyPC9TVFJPTkc+LgpAQCAtOTMsNyArOTMsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgUm91dGluZXMgdGhhdCByZXR1cm4gcG9pbnRlcnMgcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPiBvbiBlcnJvci4gIE90aGVyCiAgICAgICAgcm91dGluZXMgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCkBAIC0xMDQsMjQgKzEwNCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTI5LDEwICsxMjksMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9ob29rLjN4Lmh0bWwiPmZvcm1faG9vaygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9uZXcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX25ldy4zeC5odG1sCmluZGV4IGMzMTMwMTIuLjJiYzg2MzEgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX25ldy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX25ldy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzggKzI3LDM5IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX25ldy4zeCx2IDEuNyAyMDA2LzExLzA0IDE3OjEyOjAwIHRvbSBFeHAgQAorICAqIEBJZDogZm9ybV9uZXcuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX25ldyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fbmV3IDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX25ldyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9uZXcuM3guaHRtbCI+Zm9ybV9uZXcoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX25ldy4zeC5odG1sIj5mb3JtX25ldygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX25ldzwvU1RST05HPiAtIGNyZWF0ZSBhbmQgZGVzdHJveSBmb3JtcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgRk9STSAqbmV3X2Zvcm0oRklFTEQgKipmaWVsZHMpOwogICAgICAgIGludCBmcmVlX2Zvcm0oRk9STSAqZm9ybSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPm5ld19mb3JtPC9TVFJPTkc+ICBjcmVhdGVzIGEgbmV3IGZvcm0gY29ubmVjdGVkIHRvIGEKICAgICAgICBzcGVjaWZpZWQgZmllbGQgcG9pbnRlciBhcnJheSAod2hpY2ggbXVzdCAgYmUgIDxTVFJPTkc+TlVMTDwvU1RST05HPi10ZXJtaS0KICAgICAgICBuYXRlZCkuCkBAIC02OSw3ICs2OSw3IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5uZXdfZm9ybTwvU1RST05HPiByZXR1cm5zICA8U1RST05HPk5VTEw8L1NUUk9ORz4gIG9uICBlcnJvci4gICBJdCAgc2V0cwogICAgICAgIGVycm5vIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24ncyBzdWNjZXNzOgogCkBAIC05OCwyNCArOTgsMjQgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEyMywxMCArMTIzLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX25ldy4zeC5odG1sIj5mb3JtX25ldygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9uZXdfcGFnZS4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fbmV3X3BhZ2UuM3guaHRtbAppbmRleCA4ODYzMzY5Li45ZWU1YTY5IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9uZXdfcGFnZS4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX25ld19wYWdlLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOCArMjcsMzkgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1fbmV3X3BhZ2UuM3gsdiAxLjggMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fbmV3X3BhZ2UuM3gsdiAxLjEwIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9uZXdfcGFnZSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmZvcm1fbmV3X3BhZ2UgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fbmV3X3BhZ2UgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fbmV3X3BhZ2UuM3guaHRtbCI+Zm9ybV9uZXdfcGFnZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9uZXdfcGFnZS4zeC5odG1sIj5mb3JtX25ld19wYWdlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fbmV3X3BhZ2U8L1NUUk9ORz4gLSBmb3JtIHBhZ2luYXRpb24gZnVuY3Rpb25zCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X25ld19wYWdlKEZJRUxEICpmaWVsZCwgYm9vbCBuZXdfcGFnZV9mbGFnKTsKICAgICAgICBib29sIG5ld19wYWdlKGNvbnN0IEZJRUxEICpmaWVsZCk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPnNldF9uZXdfcGFnZTwvU1RST05HPiAgc2V0cyBvciByZXNldHMgYSBmbGFnIG1hcmtpbmcKICAgICAgICB0aGUgZ2l2ZW4gZmllbGQgYXMgdGhlIGJlZ2lubmluZyBvZiAgYSAgbmV3ICBwYWdlICBvbiAgaXRzCiAgICAgICAgZm9ybS4KQEAgLTY5LDcgKzY5LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPm5ld19wYWdlPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IG9yIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4uCiAKICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfbmV3X3BhZ2U8L1NUUk9ORz4gcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgpAQCAtODQsMjUgKzg0LDI1IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4gYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gImZvcm1fIiBmb3IKICAgICAgICBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIGVudHJ5IHBvaW50cy4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTExMCwxMCArMTEwLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9uZXdfcGFnZS4zeC5odG1sIj5mb3JtX25ld19wYWdlKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX29wdHMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX29wdHMuM3guaHRtbAppbmRleCA1Mzg2OWE1Li41YmNiNjY1IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9vcHRzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fb3B0cy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX29wdHMuM3gsdiAxLjkgMjAwNy8wMi8yNCAxNzozNDozNiB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fb3B0cy4zeCx2IDEuMTEgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX29wdHMgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5mb3JtX29wdHMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fb3B0cyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9vcHRzLjN4Lmh0bWwiPmZvcm1fb3B0cygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX29wdHMuM3guaHRtbCI+Zm9ybV9vcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fb3B0czwvU1RST05HPiAtIHNldCBhbmQgZ2V0IGZvcm0gb3B0aW9ucwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9mb3JtX29wdHMoRk9STSAqZm9ybSwgRmllbGRfT3B0aW9ucyBvcHRzKTsKICAgICAgICBpbnQgZm9ybV9vcHRzX29uKEZPUk0gKmZvcm0sIEZpZWxkX09wdGlvbnMgb3B0cyk7CkBAIC02MSw3ICs2MSw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPnNldF9mb3JtX29wdHM8L1NUUk9ORz4gIHNldHMgIGFsbCAgdGhlICBnaXZlbiBmb3JtJ3MKICAgICAgICBvcHRpb24gYml0cyAgKGZvcm0gIG9wdGlvbiAgYml0cyAgbWF5ICBiZSAgbG9naWNhbGx5LU9SJ2VkCiAgICAgICAgdG9nZXRoZXIpLgpAQCAtNzgsMTggKzc4LDE4IEBACiAgICAgICAgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBkZWZpbmVkIChhbGwgYXJlIG9uIGJ5IGRlZmF1bHQpOgogCiAgICAgICAgT19OTF9PVkVSTE9BRAotICAgICAgICAgICAgT3ZlcmxvYWQgIHRoZSAgPFNUUk9ORz5SRVFfTkVXX0xJTkU8L1NUUk9ORz4gIGZvcm1zICBkcml2ZXIgcmVxdWVzdCBzbwotICAgICAgICAgICAgdGhhdCBjYWxsaW5nIGl0IGF0IHRoZSBlbmQgb2YgYSAgZmllbGQgIGdvZXMgIHRvICB0aGUKKyAgICAgICAgICAgIE92ZXJsb2FkIHRoZSA8U1RST05HPlJFUV9ORVdfTElORTwvU1RST05HPiAgZm9ybXMgIGRyaXZlciAgcmVxdWVzdCAgc28KKyAgICAgICAgICAgIHRoYXQgIGNhbGxpbmcgIGl0ICBhdCAgdGhlIGVuZCBvZiBhIGZpZWxkIGdvZXMgdG8gdGhlCiAgICAgICAgICAgICBuZXh0IGZpZWxkLgogCiAgICAgICAgT19CU19PVkVSTE9BRAotICAgICAgICAgICAgT3ZlcmxvYWQgIHRoZSAgPFNUUk9ORz5SRVFfREVMX1BSRVY8L1NUUk9ORz4gIGZvcm1zICBkcml2ZXIgcmVxdWVzdCBzbwotICAgICAgICAgICAgdGhhdCBjYWxsaW5nIGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBmaWVsZCAgZ29lcyAgdG8KKyAgICAgICAgICAgIE92ZXJsb2FkIHRoZSA8U1RST05HPlJFUV9ERUxfUFJFVjwvU1RST05HPiAgZm9ybXMgIGRyaXZlciAgcmVxdWVzdCAgc28KKyAgICAgICAgICAgIHRoYXQgIGNhbGxpbmcgIGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBmaWVsZCBnb2VzIHRvCiAgICAgICAgICAgICB0aGUgcHJldmlvdXMgZmllbGQuCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBFeGNlcHQgZm9yIDxTVFJPTkc+Zm9ybV9vcHRzPC9TVFJPTkc+LCBlYWNoIHJvdXRpbmUgcmV0dXJucyBvbmUgb2YgdGhlIGZvbC0KICAgICAgICBsb3dpbmc6CiAKQEAgLTEwMCwzNSArMTAwLDQyIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zIGxpYnJhcnkuICBUaGV5Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KLSAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CisgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX29wdHMuM3guaHRtbCI+Zm9ybV9vcHRzKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX3BhZ2UuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX3BhZ2UuM3guaHRtbAppbmRleCA3NTMwNzViLi44YjEyYmI0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9wYWdlLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fcGFnZS4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX3BhZ2UuM3gsdiAxLjEwIDIwMDYvMTEvMDQgMTg6NTI6MzIgdG9tIEV4cCBACisgICogQElkOiBmb3JtX3BhZ2UuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9wYWdlIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9wYWdlIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX3BhZ2UgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fcGFnZS4zeC5odG1sIj5mb3JtX3BhZ2UoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9wYWdlLjN4Lmh0bWwiPmZvcm1fcGFnZSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX3BhZ2U8L1NUUk9ORz4gLSBzZXQgYW5kIGdldCBmb3JtIHBhZ2UgbnVtYmVyCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2N1cnJlbnRfZmllbGQoRk9STSAqZm9ybSwgRklFTEQgKmZpZWxkKTsKICAgICAgICBGSUVMRCAqY3VycmVudF9maWVsZChjb25zdCBGT1JNICopOwpAQCAtNjIsNyArNjIsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5zZXRfY3VycmVudDwvU1RST05HPiA8U1RST05HPmZpZWxkPC9TVFJPTkc+IHNldHMgdGhlIGN1cnJlbnQgZmllbGQgb2YKICAgICAgICB0aGUgZ2l2ZW4gZm9ybTsgPFNUUk9ORz5jdXJyZW50X2ZpZWxkPC9TVFJPTkc+IHJldHVybnMgdGhlIGN1cnJlbnQgZmllbGQgb2YKICAgICAgICB0aGUgZ2l2ZW4gZm9ybS4KQEAgLTgwLDcgKzgwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEV4Y2VwdCBmb3IgPFNUUk9ORz5mb3JtX3BhZ2U8L1NUUk9ORz4sIGVhY2ggcm91dGluZSByZXR1cm5zIG9uZSBvZiB0aGUgZm9sLQogICAgICAgIGxvd2luZzoKIApAQCAtMTA1LDI0ICsxMDUsMjQgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEzMCwxMCArMTMwLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fcGFnZS4zeC5odG1sIj5mb3JtX3BhZ2UoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2Zvcm1fcG9zdC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fcG9zdC4zeC5odG1sCmluZGV4IGYxMjVhMGIuLmI5NTBkMDkgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX3Bvc3QuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vZm9ybV9wb3N0LjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOSArMjcsNDAgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1fcG9zdC4zeCx2IDEuNyAyMDA2LzExLzA0IDE4OjUzOjIwIHRvbSBFeHAgQAorICAqIEBJZDogZm9ybV9wb3N0LjN4LHYgMS45IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV9wb3N0IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9wb3N0IDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX3Bvc3QgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fcG9zdC4zeC5odG1sIj5mb3JtX3Bvc3QoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9wb3N0LjN4Lmh0bWwiPmZvcm1fcG9zdCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX3Bvc3Q8L1NUUk9ORz4gIC0gIHdyaXRlIG9yIGVyYXNlIGZvcm1zIGZyb20gYXNzb2NpYXRlZCBzdWJ3aW4tCiAgICAgICAgZG93cwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHBvc3RfZm9ybShGT1JNICpmb3JtKTsKICAgICAgICBpbnQgdW5wb3N0X2Zvcm0oRk9STSAqZm9ybSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5wb3N0X2Zvcm08L1NUUk9ORz4gZGlzcGxheXMgYSBmb3JtIHRvICBpdHMgIGFzc29jaWF0ZWQKICAgICAgICBzdWJ3aW5kb3cuICAgVG8gdHJpZ2dlciBwaHlzaWNhbCBkaXNwbGF5IG9mIHRoZSBzdWJ3aW5kb3csCiAgICAgICAgdXNlICA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gIG9yICBzb21lICBlcXVpdmFsZW50ICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgcm91dGluZSAgICh0aGUKQEAgLTcyLDcgKzcyLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCkBAIC0xMDIsMjQgKzEwMiwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTI3LDEwICsxMjcsMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9wb3N0LjN4Lmh0bWwiPmZvcm1fcG9zdCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fcmVxdWVzdG5hbWUuM3guaHRtbAppbmRleCA2YzBjMmJkLi4yZDJkY2RmIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX3JlcXVlc3RuYW1lLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOCArMjcsMzkgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IGZvcm1fcmVxdWVzdG5hbWUuM3gsdiAxLjcgMjAwNi8xMS8wNCAxNzo1Nzo0OSB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fcmVxdWVzdG5hbWUuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5mb3JtX3JlcXVlc3RuYW1lIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV9yZXF1ZXN0bmFtZSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+Zm9ybV9yZXF1ZXN0bmFtZSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9yZXF1ZXN0bmFtZS4zeC5odG1sIj5mb3JtX3JlcXVlc3RuYW1lKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX3JlcXVlc3RuYW1lLjN4Lmh0bWwiPmZvcm1fcmVxdWVzdG5hbWUoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Zm9ybV9yZXF1ZXN0bmFtZTwvU1RST05HPiAtIGhhbmRsZSBwcmludGFibGUgZm9ybSByZXF1ZXN0IG5hbWVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBjb25zdCBjaGFyICpmb3JtX3JlcXVlc3RfbmFtZShpbnQgcmVxdWVzdCk7CiAgICAgICAgaW50IGZvcm1fcmVxdWVzdF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiA8U1RST05HPmZvcm1fcmVxdWVzdF9uYW1lPC9TVFJPTkc+IHJldHVybnMgdGhlIHByaW50YWJsZSBuYW1lCiAgICAgICAgb2YgYSBmb3JtIHJlcXVlc3QgY29kZS4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5mb3JtX3JlcXVlc3RfYnlfbmFtZTwvU1RST05HPiBzZWFyY2hlcyBpbiB0aGUgbmFtZS10YS0KQEAgLTY4LDcgKzY4LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Zm9ybV9yZXF1ZXN0X25hbWU8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPk5VTEw8L1NUUk9ORz4gb24gZXJyb3IgYW5kIHNldHMgZXJybm8gIHRvCiAgICAgICAgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPi4KICAgICAgICA8U1RST05HPmZvcm1fcmVxdWVzdF9ieV9uYW1lPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FX05PX01BVENIPC9TVFJPTkc+IG9uIGVycm9yLiAgSXQgZG9lcwpAQCAtNzYsMTggKzc2LDE4IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgYXJlICBzcGVjaWZpYyAgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3QKICAgICAgICBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtICBWICBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgSXQgIGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIHRoZW0gYmUgY29uLQpAQCAtOTUsNyArOTUsNyBAQAogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEwMywxMCArMTAzLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9yZXF1ZXN0bmFtZS4zeC5odG1sIj5mb3JtX3JlcXVlc3RuYW1lKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX3VzZXJwdHIuM3guaHRtbAppbmRleCBkNmE1MGZkLi5mZWFlNTMxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vZm9ybV91c2VycHRyLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2Zvcm1fdXNlcnB0ci4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNjYgKzI3LDY3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX3VzZXJwdHIuM3gsdiAxLjExIDIwMDYvMTEvMDQgMTg6NDM6MjQgdG9tIEV4cCBACisgICogQElkOiBmb3JtX3VzZXJwdHIuM3gsdiAxLjEzIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+Zm9ybV91c2VycHRyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV91c2VycHRyIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5mb3JtX3VzZXJwdHIgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImZvcm1fdXNlcnB0ci4zeC5odG1sIj5mb3JtX3VzZXJwdHIoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV91c2VycHRyLjN4Lmh0bWwiPmZvcm1fdXNlcnB0cigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5mb3JtX3VzZXJwdHI8L1NUUk9ORz4gLSBhc3NvY2lhdGUgYXBwbGljYXRpb24gZGF0YSB3aXRoIGEgZm9ybSBpdGVtCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2Zvcm1fdXNlcnB0cihGT1JNICpmb3JtLCB2b2lkICp1c2VycHRyKTsKICAgICAgICB2b2lkKiBmb3JtX3VzZXJwdHIoY29uc3QgRk9STSAqZm9ybSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Ci0gICAgICAgRXZlcnkgZm9ybSBhbmQgZXZlcnkgZm9ybSBpdGVtIGhhcyBhICBmaWVsZCAgdGhhdCAgY2FuICBiZQorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgRXZlcnkgIGZvcm0gIGFuZCAgZXZlcnkgIGZvcm0gaXRlbSBoYXMgYSBmaWVsZCB0aGF0IGNhbiBiZQogICAgICAgIHVzZWQgdG8gaG9sZCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBkYXRhICh0aGF0IGlzLCB0aGUgZm9ybS0KICAgICAgICBkcml2ZXIgY29kZSBsZWF2ZXMgaXQgYWxvbmUpLiAgVGhlc2UgZnVuY3Rpb25zIGdldCBhbmQgc2V0CiAgICAgICAgdGhlIGZvcm0gdXNlciBwb2ludGVyIGZpZWxkLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGUgIGZ1bmN0aW9uIDxTVFJPTkc+Zm9ybV91c2VycHRyPC9TVFJPTkc+IHJldHVybnMgYSBwb2ludGVyICh3aGljaCBtYXkgYmUKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlIGZ1bmN0aW9uIDxTVFJPTkc+Zm9ybV91c2VycHRyPC9TVFJPTkc+IHJldHVybnMgYSBwb2ludGVyICh3aGljaCBtYXkgIGJlCiAgICAgICAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+KS4gIEl0IGRvZXMgbm90IHNldCBlcnJuby4KIAogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPnNldF9mb3JtX3VzZXJwdHI8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPkVfT0s8L1NUUk9ORz4gKHN1Y2Nlc3MpLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImZvcm0uM3guaHRtbCI+Zm9ybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5LiAgVGhleQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAgICAgICAgVGhlIHVzZXIgcG9pbnRlciBpcyBhIHZvaWQgcG9pbnRlci4gIFdlIGNob3NlIG5vdCB0byBsZWF2ZQpAQCAtOTUsMTggKzk1LDI1IEBACiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KLSAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CisgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX3VzZXJwdHIuM3guaHRtbCI+Zm9ybV91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9mb3JtX3ZhcmlhYmxlcy4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2Zvcm1fdmFyaWFibGVzLjN4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0MTYxNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX3ZhcmlhYmxlcy4zeC5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8IS0tIAorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQ29weXJpZ2h0IChjKSAyMDEwLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBJZDogZm9ybV92YXJpYWJsZXMuM3gsdiAxLjQgMjAxMy8wNi8yMiAxNzo1ODozMiB0b20gRXhwIEAKKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KKzxUSVRMRT5mb3JtX3ZhcmlhYmxlcyAzeDwvVElUTEU+Cis8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KKzxCT0RZPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fdmFyaWFibGVzIDN4PC9IMT4KKzxQUkU+Cis8U1RST05HPjxBIEhSRUY9ImZvcm1fdmFyaWFibGVzLjN4Lmh0bWwiPmZvcm1fdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV92YXJpYWJsZXMuM3guaHRtbCI+Zm9ybV92YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPgorCisKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPlRZUEVfQUxOVU08L1NUUk9ORz4sIDxTVFJPTkc+VFlQRV9BTFBIQTwvU1RST05HPiwgPFNUUk9ORz5UWVBFX0VOVU08L1NUUk9ORz4sIDxTVFJPTkc+VFlQRV9JTlRFR0VSPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+VFlQRV9JUFY0PC9TVFJPTkc+LCA8U1RST05HPlRZUEVfTlVNRVJJQzwvU1RST05HPiwgPFNUUk9ORz5UWVBFX1JFR0VYUDwvU1RST05HPiAtIGZvcm0gc3lzdGVtIGdsb2JhbAorICAgICAgIHZhcmlhYmxlcworCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPkZJRUxEVFlQRTwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5UWVBFX0FMTlVNOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+RklFTERUWVBFPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPlRZUEVfQUxQSEE7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5GSUVMRFRZUEU8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+VFlQRV9FTlVNOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+RklFTERUWVBFPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPlRZUEVfSU5URUdFUjs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPkZJRUxEVFlQRTwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5UWVBFX0lQVjQ7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5GSUVMRFRZUEU8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+VFlQRV9OVU1FUklDOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+RklFTERUWVBFPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPlRZUEVfUkVHRVhQOzwvU1RST05HPgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIGFyZSAgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGUgZm9ybSBsaWJyYXJ5LCBkZWZpbmluZworICAgICAgIGZpZWxkcyB0aGF0IGNhbiBiZSBjcmVhdGVkIHVzaW5nIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV9maWVsZHR5cGUuM3guaHRtbCI+Zm9ybV9maWVsZHR5cGUoM3gpPC9BPjwvU1RST05HPi4gICBFYWNoCisgICAgICAgcHJvdmlkZXMgIGZ1bmN0aW9ucyAgZm9yICBmaWVsZC0gYW5kIGNoYXJhY3Rlci12YWxpZGF0aW9uLAorICAgICAgIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZGF0YXR5cGUuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVFlQRV9BTE5VTSI+VFlQRV9BTE5VTTwvYT48L0gzPjxQUkU+CisgICAgICAgVGhpcyBob2xkcyBhbHBoYW51bWVyaWMgZGF0YS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UWVBFX0FMUEhBIj5UWVBFX0FMUEhBPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIGhvbGRzIGFscGhhYmV0aWMgZGF0YS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UWVBFX0VOVU0iPlRZUEVfRU5VTTwvYT48L0gzPjxQUkU+CisgICAgICAgVGhpcyBob2xkcyBhbiBlbnVtZXJhdGVkIHR5cGUuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVFlQRV9JTlRFR0VSIj5UWVBFX0lOVEVHRVI8L2E+PC9IMz48UFJFPgorICAgICAgIFRoaXMgaG9sZHMgYSBkZWNpbWFsIGludGVnZXIuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVFlQRV9JUFY0Ij5UWVBFX0lQVjQ8L2E+PC9IMz48UFJFPgorICAgICAgIFRoaXMgaG9sZHMgYW4gSVB2NCBpbnRlcm5ldCBhZGRyZXNzLCBlLmcuLCAiMTI3LjAuMC4xIi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UWVBFX05VTUVSSUMiPlRZUEVfTlVNRVJJQzwvYT48L0gzPjxQUkU+CisgICAgICAgVGhpcyBob2xkcyBhIGRlY2ltYWwgbnVtYmVyLCB3aXRoIG9wdGlvbmFsIHNpZ24gYW5kICBkZWNpLQorICAgICAgIG1hbCBwb2ludC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UWVBFX1JFR0VYUCI+VFlQRV9SRUdFWFA8L2E+PC9IMz48UFJFPgorICAgICAgIFRoaXMgaG9sZHMgYSByZWd1bGFyIGV4cHJlc3Npb24uCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+VFlQRV9JUFY0PC9TVFJPTkc+ICB2YXJpYWJsZSAgaXMgIGFuIGV4dGVuc2lvbiBub3QgcHJvdmlkZWQgYnkKKyAgICAgICBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZvcm0gbGlicmFyeS4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCisKKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZm9ybV92YXJpYWJsZXMuM3guaHRtbCI+Zm9ybV92YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPgorPC9QUkU+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLVRZUEVfQUxOVU0iPlRZUEVfQUxOVU08L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVFlQRV9BTFBIQSI+VFlQRV9BTFBIQTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UWVBFX0VOVU0iPlRZUEVfRU5VTTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UWVBFX0lOVEVHRVIiPlRZUEVfSU5URUdFUjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UWVBFX0lQVjQiPlRZUEVfSVBWNDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UWVBFX05VTUVSSUMiPlRZUEVfTlVNRVJJQzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UWVBFX1JFR0VYUCI+VFlQRV9SRUdFWFA8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vZm9ybV93aW4uM3guaHRtbCBiL2RvYy9odG1sL21hbi9mb3JtX3dpbi4zeC5odG1sCmluZGV4IDZkMjEzZGYuLmIxNjRjMjYgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9mb3JtX3dpbi4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9mb3JtX3dpbi4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzIgKzI3LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBmb3JtX3dpbi4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwIEAKKyAgKiBASWQ6IGZvcm1fd2luLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmZvcm1fd2luIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+Zm9ybV93aW4gM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmZvcm1fd2luIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJmb3JtX3dpbi4zeC5odG1sIj5mb3JtX3dpbigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImZvcm1fd2luLjN4Lmh0bWwiPmZvcm1fd2luKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmZvcm1fd2luPC9TVFJPTkc+ICAtIG1ha2UgYW5kIGJyZWFrIGZvcm0gd2luZG93IGFuZCBzdWJ3aW5kb3cgYXNzby0KICAgICAgICBjaWF0aW9ucwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9mb3JtX3dpbihGT1JNICpmb3JtLCBXSU5ET1cgKndpbik7CiAgICAgICAgV0lORE9XICpmb3JtX3dpbihjb25zdCBGT1JNICpmb3JtKTsKQEAgLTYzLDI5ICs2MywyOSBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIEV2ZXJ5ICBmb3JtIGhhcyBhbiBhc3NvY2lhdGVkIHBhaXIgb2YgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93cy4gIFRoZQotICAgICAgIGZvcm0gd2luZG93IGRpc3BsYXlzIGFueSB0aXRsZSBhbmQgYm9yZGVyIGFzc29jaWF0ZWQgIHdpdGgKLSAgICAgICB0aGUgIHdpbmRvdzsgIHRoZSBmb3JtIHN1YndpbmRvdyBkaXNwbGF5cyB0aGUgaXRlbXMgb2YgdGhlCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBFdmVyeSBmb3JtIGhhcyBhbiBhc3NvY2lhdGVkIHBhaXIgb2YgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gd2luZG93cy4gICBUaGUKKyAgICAgICBmb3JtICB3aW5kb3cgZGlzcGxheXMgYW55IHRpdGxlIGFuZCBib3JkZXIgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgdGhlIHdpbmRvdzsgdGhlIGZvcm0gc3Vid2luZG93IGRpc3BsYXlzIHRoZSBpdGVtcyAgb2YgIHRoZQogICAgICAgIGZvcm0gdGhhdCBhcmUgY3VycmVudGx5IGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLgogCiAgICAgICAgVGhlIGZpcnN0IGZvdXIgZnVuY3Rpb25zIGdldCBhbmQgc2V0IHRob3NlIHdpbmRvd3MuICBJdCBpcwogICAgICAgIG5vdCBuZWNlc3NhcnkgdG8gc2V0IGVpdGhlciB3aW5kb3c7IGJ5IGRlZmF1bHQsIHRoZSBkcml2ZXIKICAgICAgICBjb2RlIHVzZXMgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4gZm9yIGJvdGguCiAKLSAgICAgICBJbiB0aGUgPFNUUk9ORz5zZXRfPC9TVFJPTkc+IGZ1bmN0aW9ucywgd2luZG93IGFyZ3VtZW50IG9mIDxTVFJPTkc+TlVMTDwvU1RST05HPiBpcyAgdHJlYXRlZAotICAgICAgIGFzICB0aG91Z2ggIGl0ICB3ZXJlICA8U1RST05HPnN0c2RjcjwvU1RST05HPi4gICBBIGZvcm0gYXJndW1lbnQgb2YgPFNUUk9ORz5OVUxMPC9TVFJPTkc+IGlzCi0gICAgICAgdHJlYXRlZCBhcyBhIHJlcXVlc3QgdG8gY2hhbmdlICB0aGUgIHN5c3RlbSAgZGVmYXVsdCAgZm9ybQorICAgICAgIEluICB0aGUgPFNUUk9ORz5zZXRfPC9TVFJPTkc+IGZ1bmN0aW9ucywgd2luZG93IGFyZ3VtZW50IG9mIDxTVFJPTkc+TlVMTDwvU1RST05HPiBpcyB0cmVhdGVkCisgICAgICAgYXMgdGhvdWdoIGl0IHdlcmUgPFNUUk9ORz5zdHNkY3I8L1NUUk9ORz4uICBBICBmb3JtICBhcmd1bWVudCAgb2YgIDxTVFJPTkc+TlVMTDwvU1RST05HPiAgaXMKKyAgICAgICB0cmVhdGVkICBhcyAgYSAgcmVxdWVzdCAgdG8gY2hhbmdlIHRoZSBzeXN0ZW0gZGVmYXVsdCBmb3JtCiAgICAgICAgd2luZG93IG9yIHN1YndpbmRvdy4KIAotICAgICAgIFRoZSAgZnVuY3Rpb24gPFNUUk9ORz5zY2FsZV9mb3JtPC9TVFJPTkc+IHJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSByZXF1aXJlZAorICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPnNjYWxlX2Zvcm08L1NUUk9ORz4gcmV0dXJucyB0aGUgbWluaW11bSBzaXplICByZXF1aXJlZAogICAgICAgIGZvciB0aGUgc3Vid2luZG93IG9mIDxFTT5mb3JtPC9FTT4uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgotICAgICAgIFJvdXRpbmVzIHRoYXQgcmV0dXJuIHBvaW50ZXJzIHJldHVybiA8U1RST05HPk5VTEw8L1NUUk9ORz4gb24gZXJyb3IuICAgUm91LQotICAgICAgIHRpbmVzICB0aGF0ICByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmcKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgUm91dGluZXMgIHRoYXQgcmV0dXJuIHBvaW50ZXJzIHJldHVybiA8U1RST05HPk5VTEw8L1NUUk9ORz4gb24gZXJyb3IuICBSb3UtCisgICAgICAgdGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gb25lIG9mICB0aGUgIGZvbGxvd2luZwogICAgICAgIGVycm9yIGNvZGVzOgogCiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgICAgIFN5c3RlbSBlcnJvciBvY2N1cnJlZCAoc2VlIDxTVFJPTkc+ZXJybm88L1NUUk9ORz4pLgogCiAgICAgICAgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPgotICAgICAgICAgICAgUm91dGluZSBkZXRlY3RlZCBhbiBpbmNvcnJlY3Qgb3IgIG91dC1vZi1yYW5nZSAgYXJndS0KKyAgICAgICAgICAgIFJvdXRpbmUgIGRldGVjdGVkICBhbiBpbmNvcnJlY3Qgb3Igb3V0LW9mLXJhbmdlIGFyZ3UtCiAgICAgICAgICAgICBtZW50LgogCiAgICAgICAgPFNUUk9ORz5FX1BPU1RFRDwvU1RST05HPgpAQCAtMTA1LDM1ICsxMDUsNDIgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iZm9ybS4zeC5odG1sIj5mb3JtKDN4KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJmb3JtLjN4Lmh0bWwiPmZvcm0oM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDtmb3JtLmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWIGZvcm1zICBsaWJyYXJ5LiAgIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSB0aGUgU3lzdGVtIFYgZm9ybXMgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJmb3JtX3dpbi4zeC5odG1sIj5mb3JtX3dpbigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vaW5kZXguaHRtbCBiL2RvYy9odG1sL21hbi9pbmRleC5odG1sCmluZGV4IDVkYjNhNmQuLmM5M2QxZjggMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9pbmRleC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9pbmRleC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAzLjAvL0VOIj4KIDwhLS0KLSAgJElkOiBpbmRleC5odG1sLHYgMS4zIDIwMDYvMTIvMjQgMjM6MDU6MzUgdG9tIEV4cCAkCisgICRJZDogaW5kZXguaHRtbCx2IDEuNyAyMDEzLzA2LzA3IDIwOjEyOjM2IHRvbSBFeHAgJAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksMzggKzI4LDgzIEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAtLT4KLTxIVE1MPgotPEhFQUQ+Ci08VElUTEU+TkNVUlNFUyAtIE1hbnVhbCBQYWdlczwvVElUTEU+Ci08TElOSyBSRVY9TUFERSBIUkVGPSJtYWlsdG86ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Ij4KLTwvSEVBRD4KLTxCT0RZPgotPEhSPgotPHVsPgotPGxpPlByb2dyYW1zOgotPHVsPgotPGxpPjxhIGhyZWYgPSAiY2FwdG9pbmZvLjFtLmh0bWwiPmNhcHRvaW5mbyAtIGNvbnZlcnQgYSB0ZXJtY2FwIGRlc2NyaXB0aW9uIGludG8gYSB0ZXJtaW5mbyBkZXNjcmlwdGlvbjwvYT4KLTxsaT48YSBocmVmID0gImNsZWFyLjEuaHRtbCI+Y2xlYXIgLSBjbGVhciB0aGUgdGVybWluYWwgc2NyZWVuPC9hPgotPGxpPjxhIGhyZWYgPSAiaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wIC0gY29tcGFyZSBvciBwcmludCBvdXQgdGVybWluZm8gZGVzY3JpcHRpb25zPC9hPgotPGxpPjxhIGhyZWYgPSAiaW5mb3RvY2FwLjFtLmh0bWwiPmluZm90b2NhcCAtIGNvbnZlcnQgYSB0ZXJtaW5mbyBkZXNjcmlwdGlvbiBpbnRvIGEgdGVybWNhcCBkZXNjcmlwdGlvbjwvYT4KLTxsaT48YSBocmVmID0gInRpYy4xbS5odG1sIj50aWMgLSB0aGUgdGVybWluZm8gZW50cnktZGVzY3JpcHRpb24gY29tcGlsZXI8L2E+Ci08bGk+PGEgaHJlZiA9ICJ0b2UuMW0uaHRtbCI+dG9lIC0gdGFibGUgb2YgKHRlcm1pbmZvKSBlbnRyaWVzPC9hPgotPGxpPjxhIGhyZWYgPSAidHB1dC4xLmh0bWwiPnRwdXQgLSAgaW5pdGlhbGl6ZSAgYSAgdGVybWluYWwgb3IgcXVlcnkgdGVybWluZm8gZGF0YWJhc2U8L2E+Ci08bGk+PGEgaHJlZiA9ICJ0c2V0LjEuaHRtbCI+dHNldCAtIHRlcm1pbmFsIGluaXRpYWxpemF0aW9uPC9hPgotPC91bD4KLTxsaT5MaWJyYXJpZXM6Ci08dWw+Ci08bGk+PGEgaHJlZiA9ICJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMgLSBDUlQgc2NyZWVuIGhhbmRsaW5nIGFuZCBvcHRpbWl6YXRpb24gcGFja2FnZTwvYT4KLTxsaT48YSBocmVmID0gInBhbmVsLjN4Lmh0bWwiPnBhbmVsLSBwYW5lbCBzdGFjayBleHRlbnNpb24gZm9yIGN1cnNlczwvYT4KLTxsaT48YSBocmVmID0gImZvcm0uM3guaHRtbCI+Zm9ybSAtIGN1cnNlcyBleHRlbnNpb24gZm9yIHByb2dyYW1taW5nIGZvcm1zPC9hPgotPGxpPjxhIGhyZWYgPSAibWVudS4zeC5odG1sIj5tZW51IC0gY3Vyc2VzIGV4dGVuc2lvbiBmb3IgcHJvZ3JhbW1pbmcgbWVudXM8L2E+Ci08L3VsPgotPGxpPkZpbGUgZm9ybWF0czoKLTx1bD4KLTxsaT48YSBocmVmID0gInRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8gLSB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGEgYmFzZTwvYT4KLTxsaT48YSBocmVmID0gInRlcm0uNS5odG1sIj50ZXJtIC0gZm9ybWF0IG9mIGNvbXBpbGVkIHRlcm0gZmlsZS48L2E+Ci08bGk+PGEgaHJlZiA9ICJ0ZXJtLjcuaHRtbCI+dGVybSAtIGNvbnZlbnRpb25zIGZvciBuYW1pbmcgdGVybWluYWwgdHlwZXM8L2E+Ci08L3VsPgotPC91bD4KLTwvQk9EWT4KLTwvSFRNTD4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CisKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0KKyAgIkhUTUwgVGlkeSBmb3IgTGludXggKHZlcnMgMjUgTWFyY2ggMjAwOSksIHNlZSB3d3cudzMub3JnIj4KKworICA8dGl0bGU+TkNVUlNFUyAmbmRhc2g7IE1hbnVhbCBQYWdlczwvdGl0bGU+CisgIDxsaW5rIHJldj0iTUFERSIgaHJlZj0ibWFpbHRvOmRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldCI+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0KKyAgInRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8dWw+CisgICAgPGxpPlByb2dyYW1zOgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT48YSBocmVmPSJjYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvICZuZGFzaDsgY29udmVydCBhCisgICAgICAgIHRlcm1jYXAgZGVzY3JpcHRpb24gaW50byBhIHRlcm1pbmZvIGRlc2NyaXB0aW9uPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9ImNsZWFyLjEuaHRtbCI+Y2xlYXIgJm5kYXNoOyBjbGVhciB0aGUgdGVybWluYWwKKyAgICAgICAgc2NyZWVuPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCAmbmRhc2g7IGNvbXBhcmUgb3IKKyAgICAgICAgcHJpbnQgb3V0IHRlcm1pbmZvIGRlc2NyaXB0aW9uczwvYT48L2xpPgorCisgICAgICAgIDxsaT48YSBocmVmPSJpbmZvdG9jYXAuMW0uaHRtbCI+aW5mb3RvY2FwICZuZGFzaDsgY29udmVydCBhCisgICAgICAgIHRlcm1pbmZvIGRlc2NyaXB0aW9uIGludG8gYSB0ZXJtY2FwIGRlc2NyaXB0aW9uPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9InRhYnMuMS5odG1sIj50YWJzICZuZGFzaDsgc2V0IHRhYnMgb24gYQorICAgICAgICB0ZXJtaW5hbDwvYT48L2xpPgorCisgICAgICAgIDxsaT48YSBocmVmPSJ0aWMuMW0uaHRtbCI+dGljICZuZGFzaDsgdGhlIHRlcm1pbmZvCisgICAgICAgIGVudHJ5LWRlc2NyaXB0aW9uIGNvbXBpbGVyPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9InRvZS4xbS5odG1sIj50b2UgJm5kYXNoOyB0YWJsZSBvZiAodGVybWluZm8pCisgICAgICAgIGVudHJpZXM8L2E+PC9saT4KKworICAgICAgICA8bGk+PGEgaHJlZj0idHB1dC4xLmh0bWwiPnRwdXQgJm5kYXNoOyBpbml0aWFsaXplIGEKKyAgICAgICAgdGVybWluYWwgb3IgcXVlcnkgdGVybWluZm8gZGF0YWJhc2U8L2E+PC9saT4KKworICAgICAgICA8bGk+PGEgaHJlZj0idHNldC4xLmh0bWwiPnRzZXQgJm5kYXNoOyB0ZXJtaW5hbAorICAgICAgICBpbml0aWFsaXphdGlvbjwvYT48L2xpPgorICAgICAgPC91bD4KKyAgICA8L2xpPgorCisgICAgPGxpPkxpYnJhcmllczoKKworICAgICAgPHVsPgorICAgICAgICA8bGk+PGEgaHJlZj0ibmN1cnNlcy4zeC5odG1sIj5uY3Vyc2VzICZuZGFzaDsgQ1JUIHNjcmVlbgorICAgICAgICBoYW5kbGluZyBhbmQgb3B0aW1pemF0aW9uIHBhY2thZ2U8L2E+PC9saT4KKworICAgICAgICA8bGk+PGEgaHJlZj0icGFuZWwuM3guaHRtbCI+cGFuZWwtIHBhbmVsIHN0YWNrIGV4dGVuc2lvbgorICAgICAgICBmb3IgY3Vyc2VzPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9ImZvcm0uM3guaHRtbCI+Zm9ybSAmbmRhc2g7IGN1cnNlcyBleHRlbnNpb24KKyAgICAgICAgZm9yIHByb2dyYW1taW5nIGZvcm1zPC9hPjwvbGk+CisKKyAgICAgICAgPGxpPjxhIGhyZWY9Im1lbnUuM3guaHRtbCI+bWVudSAmbmRhc2g7IGN1cnNlcyBleHRlbnNpb24KKyAgICAgICAgZm9yIHByb2dyYW1taW5nIG1lbnVzPC9hPjwvbGk+CisgICAgICA8L3VsPgorICAgIDwvbGk+CisKKyAgICA8bGk+RmlsZSBmb3JtYXRzOgorCisgICAgICA8dWw+CisgICAgICAgIDxsaT48YSBocmVmPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvICZuZGFzaDsgdGVybWluYWwKKyAgICAgICAgY2FwYWJpbGl0eSBkYXRhIGJhc2U8L2E+PC9saT4KKworICAgICAgICA8bGk+PGEgaHJlZj0idGVybS41Lmh0bWwiPnRlcm0gJm5kYXNoOyBmb3JtYXQgb2YgY29tcGlsZWQKKyAgICAgICAgdGVybSBmaWxlLjwvYT48L2xpPgorCisgICAgICAgIDxsaT48YSBocmVmPSJ0ZXJtLjcuaHRtbCI+dGVybSAmbmRhc2g7IGNvbnZlbnRpb25zIGZvcgorICAgICAgICBuYW1pbmcgdGVybWluYWwgdHlwZXM8L2E+PC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9saT4KKyAgPC91bD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9pbmZvY21wLjFtLmh0bWwgYi9kb2MvaHRtbC9tYW4vaW5mb2NtcC4xbS5odG1sCmluZGV4IDllNjM1NTcuLjlkMThjOTcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9pbmZvY21wLjFtLmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2luZm9jbXAuMW0uaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDM5ICsyNyw0MCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogaW5mb2NtcC4xbSx2IDEuNDQgMjAwNi8xMi8yNCAxODoxNjozMSB0b20gRXhwIEAKKyAgKiBASWQ6IGluZm9jbXAuMW0sdiAxLjU2IDIwMTUvMDUvMjMgMjA6NTA6MDAgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+aW5mb2NtcCAxbTwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmluZm9jbXAgMW08L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmluZm9jbXAgMW08L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gLSBjb21wYXJlIG9yIHByaW50IG91dCA8RU0+dGVybWluZm88L0VNPiBkZXNjcmlwdGlvbnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gWzxTVFJPTkc+LTFDRUZHSUxUVVZjZGVnaWxucHFydHV4PC9TVFJPTkc+XQorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+IFs8U1RST05HPi0xQ0RFRkdJS0xUVVZjZGVnaWxucHFydHV4PC9TVFJPTkc+XQogICAgICAgICAgICAgIFs8U1RST05HPi12PC9TVFJPTkc+IDxFTT5uPC9FTT5dIFs8U1RST05HPi1zPC9TVFJPTkc+IDxTVFJPTkc+ZDwvU1RST05HPnwgPFNUUk9ORz5pPC9TVFJPTkc+fCA8U1RST05HPmw8L1NUUk9ORz58IDxTVFJPTkc+YzwvU1RST05HPl0gWzxTVFJPTkc+LVI8L1NUUk9ORz4gPFNUUk9ORz5zdWJzZXQ8L1NUUk9ORz5dCiAgICAgICAgICAgICAgWzxTVFJPTkc+LXc8L1NUUk9ORz4gPEVNPndpZHRoPC9FTT5dIFs8U1RST05HPi1BPC9TVFJPTkc+IDxFTT5kaXJlY3Rvcnk8L0VNPl0gWzxTVFJPTkc+LUI8L1NUUk9ORz4gPEVNPmRpcmVjdG9yeTwvRU0+XQogICAgICAgICAgICAgIFs8RU0+dGVybW5hbWU8L0VNPi4uLl0KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+aW5mb2NtcDwvU1RST05HPiAgY2FuICBiZSAgdXNlZCAgdG8gY29tcGFyZSBhIGJpbmFyeSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGVudHJ5CiAgICAgICAgd2l0aCBvdGhlciB0ZXJtaW5mbyBlbnRyaWVzLCByZXdyaXRlIGEgIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gIGRlc2NyaXAtCiAgICAgICAgdGlvbiAgdG8gIHRha2UgIGFkdmFudGFnZSAgb2YgIHRoZSA8U1RST05HPnVzZT08L1NUUk9ORz4gdGVybWluZm8gZmllbGQsIG9yCkBAIC02OSw3OSArNjksMTAwIEBACiAgICAgICAgZmllbGRzIHdpbGwgYmUgcHJpbnRlZCAgZmlyc3QsICBmb2xsb3dlZCAgYnkgIHRoZSAgbnVtZXJpYwogICAgICAgIGZpZWxkcywgZm9sbG93ZWQgYnkgdGhlIHN0cmluZyBmaWVsZHMuCiAKLSAgIDxTVFJPTkc+RGVmYXVsdDwvU1RST05HPiA8U1RST05HPk9wdGlvbnM8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRGVmYXVsdC1PcHRpb25zIj5EZWZhdWx0IE9wdGlvbnM8L2E+PC9IMz48UFJFPgogICAgICAgIElmICBubyBvcHRpb25zIGFyZSBzcGVjaWZpZWQgYW5kIHplcm8gb3Igb25lIDxFTT50ZXJtbmFtZXM8L0VNPiBhcmUKICAgICAgICBzcGVjaWZpZWQsIHRoZSA8U1RST05HPi1JPC9TVFJPTkc+IG9wdGlvbiB3aWxsIGJlIGFzc3VtZWQuICAgSWYgIG1vcmUgIHRoYW4KLSAgICAgICBvbmUgIDxFTT50ZXJtbmFtZTwvRU0+IGlzIHNwZWNpZmllZCwgdGhlIDxTVFJPTkc+LWQ8L1NUUk9ORz4gb3B0aW9uIHdpbGwgYmUgYXNzdW1lZC4KKyAgICAgICBvbmUgPEVNPnRlcm1uYW1lPC9FTT4gaXMgc3BlY2lmaWVkLCB0aGUgPFNUUk9ORz4tZDwvU1RST05HPiBvcHRpb24gd2lsbCBiZSBhc3N1bWVkLgogCi0gICA8U1RST05HPkNvbXBhcmlzb248L1NUUk9ORz4gPFNUUk9ORz5PcHRpb25zPC9TVFJPTkc+IDxTVFJPTkc+Wy1kXTwvU1RST05HPiA8U1RST05HPlstY108L1NUUk9ORz4gPFNUUk9ORz5bLW5dPC9TVFJPTkc+Ci0gICAgICAgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+IGNvbXBhcmVzIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+ICBkZXNjcmlwdGlvbiAgb2YgIHRoZSAgZmlyc3QKLSAgICAgICB0ZXJtaW5hbCAgPEVNPnRlcm1uYW1lPC9FTT4gIHdpdGggZWFjaCBvZiB0aGUgZGVzY3JpcHRpb25zIGdpdmVuIGJ5Ci0gICAgICAgdGhlIGVudHJpZXMgZm9yIHRoZSAgb3RoZXIgIHRlcm1pbmFsJ3MgIDxFTT50ZXJtbmFtZXM8L0VNPi4gICBJZiAgYQotICAgICAgIGNhcGFiaWxpdHkgIGlzICBkZWZpbmVkIGZvciBvbmx5IG9uZSBvZiB0aGUgdGVybWluYWxzLCB0aGUKLSAgICAgICB2YWx1ZSByZXR1cm5lZCB3aWxsIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB0aGUgIGNhcGFiaWxpdHk6Ci0gICAgICAgPFNUUk9ORz5GPC9TVFJPTkc+ICBmb3IgIGJvb2xlYW4gIHZhcmlhYmxlcywgIDxTVFJPTkc+LTE8L1NUUk9ORz4gZm9yIGludGVnZXIgdmFyaWFibGVzLCBhbmQKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQ29tcGFyaXNvbi1PcHRpb25zLV8tZF8tXy1jXy1fLW5fIj5Db21wYXJpc29uIE9wdGlvbnMgWy1kXSBbLWNdIFstbl08L2E+PC9IMz48UFJFPgorICAgICAgIDxTVFJPTkc+aW5mb2NtcDwvU1RST05HPiAgY29tcGFyZXMgIHRoZSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZGVzY3JpcHRpb24gb2YgdGhlIGZpcnN0CisgICAgICAgdGVybWluYWwgPEVNPnRlcm1uYW1lPC9FTT4gd2l0aCBlYWNoIG9mIHRoZSBkZXNjcmlwdGlvbnMgIGdpdmVuICBieQorICAgICAgIHRoZSAgZW50cmllcyAgZm9yICB0aGUgIG90aGVyICB0ZXJtaW5hbCdzIDxFTT50ZXJtbmFtZXM8L0VNPi4gIElmIGEKKyAgICAgICBjYXBhYmlsaXR5IGlzIGRlZmluZWQgZm9yIG9ubHkgb25lIG9mIHRoZSAgdGVybWluYWxzLCAgdGhlCisgICAgICAgdmFsdWUgIHJldHVybmVkIHdpbGwgZGVwZW5kIG9uIHRoZSB0eXBlIG9mIHRoZSBjYXBhYmlsaXR5OgorICAgICAgIDxTVFJPTkc+RjwvU1RST05HPiBmb3IgYm9vbGVhbiB2YXJpYWJsZXMsIDxTVFJPTkc+LTE8L1NUUk9ORz4gIGZvciAgaW50ZWdlciAgdmFyaWFibGVzLCAgYW5kCiAgICAgICAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+IGZvciBzdHJpbmcgdmFyaWFibGVzLgogCi0gICAgICAgVGhlIDxTVFJPTkc+LWQ8L1NUUk9ORz4gb3B0aW9uIHByb2R1Y2VzIGEgbGlzdCBvZiBlYWNoIGNhcGFiaWxpdHkgIHRoYXQgIGlzCi0gICAgICAgZGlmZmVyZW50ICBiZXR3ZWVuICB0d28gZW50cmllcy4gIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCB0bwotICAgICAgIHNob3cgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZW50cmllcywgY3JlYXRlZCAgYnkgIGRpZi0KKyAgICAgICBUaGUgIDxTVFJPTkc+LWQ8L1NUUk9ORz4gIG9wdGlvbiBwcm9kdWNlcyBhIGxpc3Qgb2YgZWFjaCBjYXBhYmlsaXR5IHRoYXQgaXMKKyAgICAgICBkaWZmZXJlbnQgYmV0d2VlbiB0d28gZW50cmllcy4gIFRoaXMgb3B0aW9uIGlzICB1c2VmdWwgIHRvCisgICAgICAgc2hvdyAgdGhlICBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGVudHJpZXMsIGNyZWF0ZWQgYnkgZGlmLQogICAgICAgIGZlcmVudCBwZW9wbGUsIGZvciB0aGUgc2FtZSBvciBzaW1pbGFyIHRlcm1pbmFscy4KIAotICAgICAgIFRoZSAgPFNUUk9ORz4tYzwvU1RST05HPiAgb3B0aW9uIHByb2R1Y2VzIGEgbGlzdCBvZiBlYWNoIGNhcGFiaWxpdHkgdGhhdCBpcwotICAgICAgIGNvbW1vbiBiZXR3ZWVuIHR3byBlbnRyaWVzLiAgQ2FwYWJpbGl0aWVzIHRoYXQgYXJlIG5vdCBzZXQKLSAgICAgICBhcmUgIGlnbm9yZWQuICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHF1aWNrIGNoZWNrIHRvCi0gICAgICAgc2VlIGlmIHRoZSA8U1RST05HPi11PC9TVFJPTkc+IG9wdGlvbiBpcyB3b3J0aCB1c2luZy4KKyAgICAgICBUaGUgPFNUUk9ORz4tYzwvU1RST05HPiBvcHRpb24gcHJvZHVjZXMgYSBsaXN0IG9mIGVhY2ggY2FwYWJpbGl0eSAgdGhhdCAgaXMKKyAgICAgICBjb21tb24gYmV0d2VlbiB0d28gb3IgbW9yZSBlbnRyaWVzLiAgQ2FwYWJpbGl0aWVzIHRoYXQgYXJlCisgICAgICAgbm90IHNldCBhcmUgaWdub3JlZC4gIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIGFzICBhICBxdWljaworICAgICAgIGNoZWNrIHRvIHNlZSBpZiB0aGUgPFNUUk9ORz4tdTwvU1RST05HPiBvcHRpb24gaXMgd29ydGggdXNpbmcuCiAKLSAgICAgICBUaGUgPFNUUk9ORz4tbjwvU1RST05HPiBvcHRpb24gcHJvZHVjZXMgYSBsaXN0IG9mIGVhY2ggY2FwYWJpbGl0eSAgdGhhdCAgaXMKLSAgICAgICBpbiBuZWl0aGVyIGVudHJ5LiAgSWYgbm8gPEVNPnRlcm1uYW1lczwvRU0+IGFyZSBnaXZlbiwgdGhlIGVudmlyb24tCi0gICAgICAgbWVudCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4gd2lsbCBiZSB1c2VkIGZvciBib3RoIG9mIHRoZSA8RU0+dGVybW5hbWVzPC9FTT4uCi0gICAgICAgVGhpcyAgY2FuICBiZSB1c2VkIGFzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGFueXRoaW5nIHdhcwotICAgICAgIGxlZnQgb3V0IG9mIGEgZGVzY3JpcHRpb24uCisgICAgICAgVGhlICA8U1RST05HPi1uPC9TVFJPTkc+ICBvcHRpb24gcHJvZHVjZXMgYSBsaXN0IG9mIGVhY2ggY2FwYWJpbGl0eSB0aGF0IGlzCisgICAgICAgaW4gbm9uZSBvZiB0aGUgZ2l2ZW4gZW50cmllcy4gIElmIG5vIDxFTT50ZXJtbmFtZXM8L0VNPiBhcmUgIGdpdmVuLAorICAgICAgIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4gd2lsbCBiZSB1c2VkIGZvciBib3RoIG9mIHRoZQorICAgICAgIDxFTT50ZXJtbmFtZXM8L0VNPi4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBxdWljayBjaGVjayAgdG8gIHNlZSAgaWYKKyAgICAgICBhbnl0aGluZyB3YXMgbGVmdCBvdXQgb2YgYSBkZXNjcmlwdGlvbi4KIAotICAgPFNUUk9ORz5Tb3VyY2U8L1NUUk9ORz4gPFNUUk9ORz5MaXN0aW5nPC9TVFJPTkc+IDxTVFJPTkc+T3B0aW9uczwvU1RST05HPiA8U1RST05HPlstSV08L1NUUk9ORz4gPFNUUk9ORz5bLUxdPC9TVFJPTkc+IDxTVFJPTkc+Wy1DXTwvU1RST05HPiA8U1RST05HPlstcl08L1NUUk9ORz4KLSAgICAgICBUaGUgPFNUUk9ORz4tSTwvU1RST05HPiwgPFNUUk9ORz4tTDwvU1RST05HPiwgYW5kIDxTVFJPTkc+LUM8L1NUUk9ORz4gb3B0aW9ucyB3aWxsIHByb2R1Y2UgYSAgc291cmNlICBsaXN0aW5nCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVNvdXJjZS1MaXN0aW5nLU9wdGlvbnMtXy1JXy1fLUxfLV8tQ18tXy1yXyI+U291cmNlIExpc3RpbmcgT3B0aW9ucyBbLUldIFstTF0gWy1DXSBbLXJdPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIDxTVFJPTkc+LUk8L1NUUk9ORz4sICA8U1RST05HPi1MPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz4tQzwvU1RST05HPiBvcHRpb25zIHdpbGwgcHJvZHVjZSBhIHNvdXJjZSBsaXN0aW5nCiAgICAgICAgZm9yIGVhY2ggdGVybWluYWwgbmFtZWQuCiAKICAgICAgIDxTVFJPTkc+LUk8L1NUUk9ORz4gICB1c2UgdGhlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gbmFtZXMKICAgICAgIDxTVFJPTkc+LUw8L1NUUk9ORz4gICB1c2UgdGhlIGxvbmcgQyB2YXJpYWJsZSBuYW1lIGxpc3RlZCBpbiAmbHQ7PFNUUk9ORz50ZXJtLmg8L1NUUk9ORz4mZ3Q7CiAgICAgICA8U1RST05HPi1DPC9TVFJPTkc+ICAgdXNlIHRoZSA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gbmFtZXMKICAgICAgIDxTVFJPTkc+LXI8L1NUUk9ORz4gICB3aGVuIHVzaW5nIDxTVFJPTkc+LUM8L1NUUk9ORz4sIHB1dCBvdXQgYWxsIGNhcGFiaWxpdGllcyBpbiA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gZm9ybQorICAgICAgPFNUUk9ORz4tSzwvU1RST05HPiAgIG1vZGlmaWVzIHRoZSA8U1RST05HPi1DPC9TVFJPTkc+IG9wdGlvbiwgaW1wcm92aW5nIEJTRC1jb21wYXRpYmlsaXR5LgogCi0gICAgICAgSWYgIG5vICA8RU0+dGVybW5hbWVzPC9FTT4gYXJlIGdpdmVuLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPFNUUk9ORz5URVJNPC9TVFJPTkc+CisgICAgICAgSWYgbm8gPEVNPnRlcm1uYW1lczwvRU0+IGFyZSBnaXZlbiwgdGhlIGVudmlyb25tZW50ICB2YXJpYWJsZSAgPFNUUk9ORz5URVJNPC9TVFJPTkc+CiAgICAgICAgd2lsbCBiZSB1c2VkIGZvciB0aGUgdGVybWluYWwgbmFtZS4KIAotICAgICAgIFRoZSBzb3VyY2UgcHJvZHVjZWQgYnkgdGhlIDxTVFJPTkc+LUM8L1NUUk9ORz4gb3B0aW9uIG1heSBiZSB1c2VkICBkaXJlY3RseQotICAgICAgIGFzICBhIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiBlbnRyeSwgYnV0IG5vdCBhbGwgcGFyYW1ldGVyaXplZCBzdHJpbmdzIGNhbgorICAgICAgIFRoZSAgc291cmNlIHByb2R1Y2VkIGJ5IHRoZSA8U1RST05HPi1DPC9TVFJPTkc+IG9wdGlvbiBtYXkgYmUgdXNlZCBkaXJlY3RseQorICAgICAgIGFzIGEgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IGVudHJ5LCBidXQgbm90IGFsbCBwYXJhbWV0ZXJpemVkIHN0cmluZ3MgIGNhbgogICAgICAgIGJlIGNoYW5nZWQgdG8gdGhlIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiBmb3JtYXQuICA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gd2lsbCBhdHRlbXB0IHRvCi0gICAgICAgY29udmVydCAgbW9zdCAgb2YgIHRoZSBwYXJhbWV0ZXJpemVkIGluZm9ybWF0aW9uLCBhbmQgYW55LQotICAgICAgIHRoaW5nIG5vdCBjb252ZXJ0ZWQgd2lsbCBiZSBwbGFpbmx5IG1hcmtlZCBpbiAgdGhlICBvdXRwdXQKKyAgICAgICBjb252ZXJ0IG1vc3Qgb2YgdGhlIHBhcmFtZXRlcml6ZWQgIGluZm9ybWF0aW9uLCAgYW5kICBhbnktCisgICAgICAgdGhpbmcgIG5vdCAgY29udmVydGVkIHdpbGwgYmUgcGxhaW5seSBtYXJrZWQgaW4gdGhlIG91dHB1dAogICAgICAgIGFuZCBjb21tZW50ZWQgb3V0LiAgVGhlc2Ugc2hvdWxkIGJlIGVkaXRlZCBieSBoYW5kLgogCi0gICAgICAgQWxsICBwYWRkaW5nICBpbmZvcm1hdGlvbiAgZm9yICBzdHJpbmdzICB3aWxsIGJlIGNvbGxlY3RlZAotICAgICAgIHRvZ2V0aGVyIGFuZCBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgIHN0cmluZyAgd2hlcmUKLSAgICAgICA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gIGV4cGVjdHMgIGl0LiAgTWFuZGF0b3J5IHBhZGRpbmcgKHBhZGRpbmcgaW5mb3JtYS0KKyAgICAgICBGb3IgYmVzdCByZXN1bHRzIHdoZW4gY29udmVydGluZyB0byAgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+ICBmb3JtYXQsICB5b3UKKyAgICAgICBzaG91bGQgdXNlIGJvdGggPFNUUk9ORz4tQzwvU1RST05HPiBhbmQgPFNUUk9ORz4tcjwvU1RST05HPi4gIE5vcm1hbGx5IGEgdGVybWNhcCBkZXNjcmlwdGlvbgorICAgICAgIGlzIGxpbWl0ZWQgdG8gMTAyMyBieXRlcy4gIGluZm9jbXAgdHJpbXMgYXdheSBsZXNzICBlc3Nlbi0KKyAgICAgICB0aWFsICBwYXJ0cyAgdG8gbWFrZSBpdCBmaXQuICBJZiB5b3UgYXJlIGNvbnZlcnRpbmcgdG8gb25lCisgICAgICAgb2YgdGhlIChyYXJlKSAgdGVybWNhcCAgaW1wbGVtZW50YXRpb25zICB3aGljaCAgYWNjZXB0ICBhbgorICAgICAgIHVubGltaXRlZCAgc2l6ZSAgb2YgIHRlcm1jYXAsICB5b3UgIG1heSB3YW50IHRvIGFkZCB0aGUgPFNUUk9ORz4tVDwvU1RST05HPgorICAgICAgIG9wdGlvbi4gIE1vcmUgb2Z0ZW4gaG93ZXZlciwgeW91ICBtdXN0ICBoZWxwICB0aGUgIHRlcm1jYXAKKyAgICAgICBpbXBsZW1lbnRhdGlvbiwgIGFuZCAgdHJpbSAgZXhjZXNzICB3aGl0ZXNwYWNlICh1c2UgdGhlIDxTVFJPTkc+LTA8L1NUUk9ORz4KKyAgICAgICBvcHRpb24gZm9yIHRoYXQpLgorCisgICAgICAgQWxsIHBhZGRpbmcgaW5mb3JtYXRpb24gIGZvciAgc3RyaW5ncyAgd2lsbCAgYmUgIGNvbGxlY3RlZAorICAgICAgIHRvZ2V0aGVyICBhbmQgIHBsYWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgd2hlcmUKKyAgICAgICA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gZXhwZWN0cyBpdC4gIE1hbmRhdG9yeSBwYWRkaW5nICAocGFkZGluZyAgaW5mb3JtYS0KICAgICAgICB0aW9uIHdpdGggYSB0cmFpbGluZyAnLycpIHdpbGwgYmVjb21lIG9wdGlvbmFsLgogCiAgICAgICAgQWxsIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiB2YXJpYWJsZXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+LCBidXQKICAgICAgICB3aGljaCBhcmUgZGVyaXZhYmxlIGZyb20gb3RoZXIgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiB2YXJpYWJsZXMsIHdpbGwgYmUKICAgICAgICBvdXRwdXQuICBOb3QgYWxsIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gY2FwYWJpbGl0aWVzIHdpbGwgYmUgdHJhbnNsYXRlZDsKLSAgICAgICBvbmx5ICB0aG9zZSB2YXJpYWJsZXMgd2hpY2ggd2VyZSBwYXJ0IG9mIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiB3aWxsIG5vci0KLSAgICAgICBtYWxseSBiZSBvdXRwdXQuICBTcGVjaWZ5aW5nIHRoZSA8U1RST05HPi1yPC9TVFJPTkc+IG9wdGlvbiB3aWxsICB0YWtlICBvZmYKLSAgICAgICB0aGlzICByZXN0cmljdGlvbiwgIGFsbG93aW5nIGFsbCBjYXBhYmlsaXRpZXMgdG8gYmUgb3V0cHV0Ci0gICAgICAgaW4gPEVNPnRlcm1jYXA8L0VNPiBmb3JtLgorICAgICAgIG9ubHkgdGhvc2UgdmFyaWFibGVzIHdoaWNoIHdlcmUgcGFydCBvZiA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gd2lsbCAgbm9yLQorICAgICAgIG1hbGx5ICBiZSAgb3V0cHV0LiAgU3BlY2lmeWluZyB0aGUgPFNUUk9ORz4tcjwvU1RST05HPiBvcHRpb24gd2lsbCB0YWtlIG9mZgorICAgICAgIHRoaXMgcmVzdHJpY3Rpb24sIGFsbG93aW5nIGFsbCBjYXBhYmlsaXRpZXMgdG8gIGJlICBvdXRwdXQKKyAgICAgICBpbiAgPEVNPnRlcm1jYXA8L0VNPiAgZm9ybS4gIE5vcm1hbGx5IHlvdSB3b3VsZCB1c2UgYm90aCB0aGUgPFNUUk9ORz4tQzwvU1RST05HPiBhbmQKKyAgICAgICA8U1RST05HPi1yPC9TVFJPTkc+IG9wdGlvbnMuICBUaGUgIGFjdHVhbCAgZm9ybWF0ICB1c2VkICBpbmNvcnBvcmF0ZXMgIHNvbWUKKyAgICAgICBpbXByb3ZlbWVudHMgIGZvciBlc2NhcGVkIGNoYXJhY3RlcnMgZnJvbSB0ZXJtaW5mbyBmb3JtYXQuCisgICAgICAgRm9yIGEgc3RyaWN0ZXIgIEJTRC1jb21wYXRpYmxlICB0cmFuc2xhdGlvbiwgIHVzZSAgdGhlICA8U1RST05HPi1LPC9TVFJPTkc+CisgICAgICAgb3B0aW9uIHJhdGhlciB0aGFuIDxTVFJPTkc+LUM8L1NUUk9ORz4uCiAKICAgICAgICBOb3RlIHRoYXQgYmVjYXVzZSBwYWRkaW5nIGlzIGNvbGxlY3RlZCB0byB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgdGhlICBjYXBhYmlsaXR5LCAgbm90IGFsbCBjYXBhYmlsaXRpZXMgYXJlIG91dHB1dC4gIE1hbmRhLQotICAgICAgIHRvcnkgcGFkZGluZyBpcyBub3Qgc3VwcG9ydGVkLiAgIEJlY2F1c2UgIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiAgc3RyaW5ncwotICAgICAgIGFyZSAgbm90IGFzIGZsZXhpYmxlLCBpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGNvbnZlcnQKLSAgICAgICBhIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gc3RyaW5nIGNhcGFiaWxpdHkgaW50byAgYW4gIGVxdWl2YWxlbnQgIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPgotICAgICAgIGZvcm1hdC4gICBBIHN1YnNlcXVlbnQgY29udmVyc2lvbiBvZiB0aGUgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IGZpbGUgYmFjawotICAgICAgIGludG8gPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiBmb3JtYXQgd2lsbCBub3QgIG5lY2Vzc2FyaWx5ICByZXByb2R1Y2UgIHRoZQorICAgICAgIHRoZSBjYXBhYmlsaXR5LCBub3QgYWxsIGNhcGFiaWxpdGllcyBhcmUgIG91dHB1dC4gICBNYW5kYS0KKyAgICAgICB0b3J5ICBwYWRkaW5nICBpcyAgbm90IHN1cHBvcnRlZC4gIEJlY2F1c2UgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IHN0cmluZ3MKKyAgICAgICBhcmUgbm90IGFzIGZsZXhpYmxlLCBpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvICBjb252ZXJ0CisgICAgICAgYSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgc3RyaW5nICBjYXBhYmlsaXR5IGludG8gYW4gZXF1aXZhbGVudCA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4KKyAgICAgICBmb3JtYXQuICBBIHN1YnNlcXVlbnQgY29udmVyc2lvbiBvZiB0aGUgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IGZpbGUgIGJhY2sKKyAgICAgICBpbnRvICA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+ICBmb3JtYXQgIHdpbGwgbm90IG5lY2Vzc2FyaWx5IHJlcHJvZHVjZSB0aGUKICAgICAgICBvcmlnaW5hbCA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IHNvdXJjZS4KIAotICAgICAgIFNvbWUgIGNvbW1vbiAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgcGFyYW1ldGVyIHNlcXVlbmNlcywgdGhlaXIgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+Ci0gICAgICAgZXF1aXZhbGVudHMsIGFuZCBzb21lIHRlcm1pbmFsIHR5cGVzIHdoaWNoICBjb21tb25seSAgaGF2ZQorICAgICAgIFNvbWUgY29tbW9uIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gcGFyYW1ldGVyICBzZXF1ZW5jZXMsICB0aGVpciAgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+CisgICAgICAgZXF1aXZhbGVudHMsICBhbmQgIHNvbWUgdGVybWluYWwgdHlwZXMgd2hpY2ggY29tbW9ubHkgaGF2ZQogICAgICAgIHN1Y2ggc2VxdWVuY2VzLCBhcmU6CiAKICAgICAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+ICAgUmVwcmVzZW50YXRpdmUgVGVybWluYWxzCkBAIC0xNTMsNjcgKzE3NCw4MiBAQAogICAgICA8U1RST05HPiVwMSU/JSd4JyUmZ3Q7JXQlcDElJ3knJSslOzwvU1RST05HPiAgICA8U1RST05HPiUmZ3Q7eHk8L1NUUk9ORz4gICAgICBjb25jZXB0CiAgICAgIDxTVFJPTkc+JXAyPC9TVFJPTkc+IGlzIHByaW50ZWQgYmVmb3JlIDxTVFJPTkc+JXAxPC9TVFJPTkc+ICAgPFNUUk9ORz4lcjwvU1RST05HPiAgICAgICAgaHAKIAotICAgPFNUUk9ORz5Vc2U9PC9TVFJPTkc+IDxTVFJPTkc+T3B0aW9uPC9TVFJPTkc+IDxTVFJPTkc+Wy11XTwvU1RST05HPgotICAgICAgIFRoZSAgPFNUUk9ORz4tdTwvU1RST05HPiAgb3B0aW9uICBwcm9kdWNlcyBhIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gc291cmNlIGRlc2NyaXB0aW9uIG9mCi0gICAgICAgdGhlIGZpcnN0IHRlcm1pbmFsIDxFTT50ZXJtbmFtZTwvRU0+IHdoaWNoIGlzIHJlbGF0aXZlIHRvICB0aGUgIHN1bQotICAgICAgIG9mICB0aGUgIGRlc2NyaXB0aW9ucyAgZ2l2ZW4gIGJ5IHRoZSBlbnRyaWVzIGZvciB0aGUgb3RoZXIKLSAgICAgICB0ZXJtaW5hbHMgPEVNPnRlcm1uYW1lczwvRU0+LiAgSXQgZG9lcyB0aGlzIGJ5IGFuYWx5emluZyAgdGhlICBkaWYtCi0gICAgICAgZmVyZW5jZXMgICBiZXR3ZWVuICAgdGhlICBmaXJzdCAgPEVNPnRlcm1uYW1lPC9FTT4gIGFuZCAgdGhlICBvdGhlcgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Vc2VfLU9wdGlvbi1fLXVfIj5Vc2U9IE9wdGlvbiBbLXVdPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz4tdTwvU1RST05HPiBvcHRpb24gcHJvZHVjZXMgYSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+ICBzb3VyY2UgIGRlc2NyaXB0aW9uICBvZgorICAgICAgIHRoZSAgZmlyc3QgIHRlcm1pbmFsIDxFTT50ZXJtbmFtZTwvRU0+IHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBzdW0KKyAgICAgICBvZiB0aGUgZGVzY3JpcHRpb25zIGdpdmVuIGJ5IHRoZSAgZW50cmllcyAgZm9yICB0aGUgIG90aGVyCisgICAgICAgdGVybWluYWxzICA8RU0+dGVybW5hbWVzPC9FTT4uICAgSXQgZG9lcyB0aGlzIGJ5IGFuYWx5emluZyB0aGUgZGlmLQorICAgICAgIGZlcmVuY2VzICBiZXR3ZWVuICB0aGUgIGZpcnN0ICA8RU0+dGVybW5hbWU8L0VNPiAgYW5kICAgdGhlICAgb3RoZXIKICAgICAgICA8RU0+dGVybW5hbWVzPC9FTT4gYW5kIHByb2R1Y2luZyBhIGRlc2NyaXB0aW9uIHdpdGggPFNUUk9ORz51c2U9PC9TVFJPTkc+IGZpZWxkcyBmb3IKLSAgICAgICB0aGUgIG90aGVyICB0ZXJtaW5hbHMuICAgSW4gdGhpcyBtYW5uZXIsIGl0IGlzIHBvc3NpYmxlIHRvCi0gICAgICAgcmV0cm9maXQgIGdlbmVyaWMgIHRlcm1pbmZvICBlbnRyaWVzICBpbnRvICBhICAgdGVybWluYWwncworICAgICAgIHRoZSBvdGhlciB0ZXJtaW5hbHMuICBJbiB0aGlzIG1hbm5lciwgaXQgIGlzICBwb3NzaWJsZSAgdG8KKyAgICAgICByZXRyb2ZpdCAgIGdlbmVyaWMgIHRlcm1pbmZvICBlbnRyaWVzICBpbnRvICBhICB0ZXJtaW5hbCdzCiAgICAgICAgZGVzY3JpcHRpb24uICBPciwgaWYgdHdvIHNpbWlsYXIgdGVybWluYWxzIGV4aXN0LCBidXQgd2VyZQotICAgICAgIGNvZGVkIGF0IGRpZmZlcmVudCB0aW1lcyBvciBieSBkaWZmZXJlbnQgIHBlb3BsZSAgc28gIHRoYXQKKyAgICAgICBjb2RlZCAgYXQgIGRpZmZlcmVudCAgdGltZXMgb3IgYnkgZGlmZmVyZW50IHBlb3BsZSBzbyB0aGF0CiAgICAgICAgZWFjaCBkZXNjcmlwdGlvbiBpcyBhIGZ1bGwgZGVzY3JpcHRpb24sIHVzaW5nIDxTVFJPTkc+aW5mb2NtcDwvU1RST05HPiB3aWxsCiAgICAgICAgc2hvdyB3aGF0IGNhbiBiZSBkb25lIHRvIGNoYW5nZSBvbmUgZGVzY3JpcHRpb24gdG8gYmUgcmVsLQogICAgICAgIGF0aXZlIHRvIHRoZSBvdGhlci4KIAogICAgICAgIEEgY2FwYWJpbGl0eSB3aWxsIGdldCBwcmludGVkIHdpdGggYW4gYXQtc2lnbiAoQCkgaWYgaXQgbm8KLSAgICAgICBsb25nZXIgZXhpc3RzIGluIHRoZSBmaXJzdCA8RU0+dGVybW5hbWU8L0VNPiwgYnV0IG9uZSBvZiB0aGUgIG90aGVyCi0gICAgICAgPEVNPnRlcm1uYW1lPC9FTT4gIGVudHJpZXMgY29udGFpbnMgYSB2YWx1ZSBmb3IgaXQuICBBIGNhcGFiaWxpdHkncwotICAgICAgIHZhbHVlIGdldHMgcHJpbnRlZCBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0ICA8RU0+dGVybW5hbWU8L0VNPiAgaXMKLSAgICAgICBub3QgIGZvdW5kIGluIGFueSBvZiB0aGUgb3RoZXIgPEVNPnRlcm1uYW1lPC9FTT4gZW50cmllcywgb3IgaWYgdGhlCisgICAgICAgbG9uZ2VyICBleGlzdHMgaW4gdGhlIGZpcnN0IDxFTT50ZXJtbmFtZTwvRU0+LCBidXQgb25lIG9mIHRoZSBvdGhlcgorICAgICAgIDxFTT50ZXJtbmFtZTwvRU0+IGVudHJpZXMgY29udGFpbnMgYSB2YWx1ZSBmb3IgaXQuICBBICBjYXBhYmlsaXR5J3MKKyAgICAgICB2YWx1ZSAgZ2V0cyAgcHJpbnRlZCBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IDxFTT50ZXJtbmFtZTwvRU0+IGlzCisgICAgICAgbm90IGZvdW5kIGluIGFueSBvZiB0aGUgb3RoZXIgPEVNPnRlcm1uYW1lPC9FTT4gZW50cmllcywgb3IgaWYgIHRoZQogICAgICAgIGZpcnN0IG9mIHRoZSBvdGhlciA8RU0+dGVybW5hbWU8L0VNPiBlbnRyaWVzIHRoYXQgaGFzIHRoaXMgY2FwYWJpbC0KLSAgICAgICBpdHkgIGdpdmVzICBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGNhcGFiaWxpdHkgdGhhbiB0aGF0CisgICAgICAgaXR5IGdpdmVzIGEgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgY2FwYWJpbGl0eSAgdGhhbiAgdGhhdAogICAgICAgIGluIHRoZSBmaXJzdCA8RU0+dGVybW5hbWU8L0VNPi4KIAotICAgICAgIFRoZSBvcmRlciBvZiB0aGUgb3RoZXIgPEVNPnRlcm1uYW1lPC9FTT4gIGVudHJpZXMgIGlzICBzaWduaWZpY2FudC4KLSAgICAgICBTaW5jZSAgdGhlIHRlcm1pbmZvIGNvbXBpbGVyIDxTVFJPTkc+dGljPC9TVFJPTkc+IGRvZXMgYSBsZWZ0LXRvLXJpZ2h0IHNjYW4KKyAgICAgICBUaGUgIG9yZGVyICBvZiAgdGhlIG90aGVyIDxFTT50ZXJtbmFtZTwvRU0+IGVudHJpZXMgaXMgc2lnbmlmaWNhbnQuCisgICAgICAgU2luY2UgdGhlIHRlcm1pbmZvIGNvbXBpbGVyIDxTVFJPTkc+dGljPC9TVFJPTkc+IGRvZXMgYSBsZWZ0LXRvLXJpZ2h0ICBzY2FuCiAgICAgICAgb2YgdGhlIGNhcGFiaWxpdGllcywgc3BlY2lmeWluZyB0d28gPFNUUk9ORz51c2U9PC9TVFJPTkc+IGVudHJpZXMgdGhhdCBjb24tCiAgICAgICAgdGFpbiBkaWZmZXJpbmcgZW50cmllcyBmb3IgdGhlIHNhbWUgY2FwYWJpbGl0aWVzIHdpbGwgcHJvLQotICAgICAgIGR1Y2UgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uICB0aGUgIG9yZGVyICB0aGF0ICB0aGUKLSAgICAgICBlbnRyaWVzICBhcmUgIGdpdmVuIGluLiAgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+IHdpbGwgZmxhZyBhbnkgc3VjaCBpbmNvbi0KLSAgICAgICBzaXN0ZW5jaWVzIGJldHdlZW4gdGhlIG90aGVyIDxFTT50ZXJtbmFtZTwvRU0+IGVudHJpZXMgYXMgdGhleSAgYXJlCisgICAgICAgZHVjZSAgZGlmZmVyZW50ICByZXN1bHRzICBkZXBlbmRpbmcgIG9uIHRoZSBvcmRlciB0aGF0IHRoZQorICAgICAgIGVudHJpZXMgYXJlIGdpdmVuIGluLiAgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+IHdpbGwgZmxhZyBhbnkgIHN1Y2ggIGluY29uLQorICAgICAgIHNpc3RlbmNpZXMgIGJldHdlZW4gdGhlIG90aGVyIDxFTT50ZXJtbmFtZTwvRU0+IGVudHJpZXMgYXMgdGhleSBhcmUKICAgICAgICBmb3VuZC4KIAotICAgICAgIEFsdGVybmF0aXZlbHksICBzcGVjaWZ5aW5nIGEgY2FwYWJpbGl0eSA8RU0+YWZ0ZXI8L0VNPiBhIDxTVFJPTkc+dXNlPTwvU1RST05HPiBlbnRyeQorICAgICAgIEFsdGVybmF0aXZlbHksIHNwZWNpZnlpbmcgYSBjYXBhYmlsaXR5IDxFTT5hZnRlcjwvRU0+IGEgPFNUUk9ORz51c2U9PC9TVFJPTkc+ICBlbnRyeQogICAgICAgIHRoYXQgY29udGFpbnMgdGhhdCBjYXBhYmlsaXR5IHdpbGwgY2F1c2UgdGhlIHNlY29uZCBzcGVjaS0KLSAgICAgICBmaWNhdGlvbiAgdG8gIGJlICBpZ25vcmVkLiAgIFVzaW5nICA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gIHRvIHJlY3JlYXRlIGEKKyAgICAgICBmaWNhdGlvbiB0byBiZSAgaWdub3JlZC4gICBVc2luZyAgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+ICB0byAgcmVjcmVhdGUgIGEKICAgICAgICBkZXNjcmlwdGlvbiBjYW4gYmUgYSB1c2VmdWwgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnktCi0gICAgICAgdGhpbmcgIHdhcyAgc3BlY2lmaWVkICBjb3JyZWN0bHkgIGluICB0aGUgIG9yaWdpbmFsIHNvdXJjZQorICAgICAgIHRoaW5nIHdhcyAgc3BlY2lmaWVkICBjb3JyZWN0bHkgIGluICB0aGUgIG9yaWdpbmFsICBzb3VyY2UKICAgICAgICBkZXNjcmlwdGlvbi4KIAotICAgICAgIEFub3RoZXIgZXJyb3IgIHRoYXQgIGRvZXMgIG5vdCAgY2F1c2UgIGluY29ycmVjdCAgY29tcGlsZWQKLSAgICAgICBmaWxlcywgIGJ1dCB3aWxsIHNsb3cgZG93biB0aGUgY29tcGlsYXRpb24gdGltZSwgaXMgc3BlY2ktCi0gICAgICAgZnlpbmcgZXh0cmEgPFNUUk9ORz51c2U9PC9TVFJPTkc+IGZpZWxkcyAgdGhhdCAgYXJlICBzdXBlcmZsdW91cy4gICA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4KLSAgICAgICB3aWxsICBmbGFnICBhbnkgIG90aGVyICA8RU0+dGVybW5hbWU8L0VNPiA8RU0+dXNlPTwvRU0+IGZpZWxkcyB0aGF0IHdlcmUgbm90CisgICAgICAgQW5vdGhlciAgZXJyb3IgIHRoYXQgIGRvZXMgIG5vdCAgY2F1c2UgIGluY29ycmVjdCBjb21waWxlZAorICAgICAgIGZpbGVzLCBidXQgd2lsbCBzbG93IGRvd24gdGhlIGNvbXBpbGF0aW9uIHRpbWUsIGlzICBzcGVjaS0KKyAgICAgICBmeWluZyAgZXh0cmEgIDxTVFJPTkc+dXNlPTwvU1RST05HPiAgZmllbGRzICB0aGF0IGFyZSBzdXBlcmZsdW91cy4gIDxTVFJPTkc+aW5mb2NtcDwvU1RST05HPgorICAgICAgIHdpbGwgZmxhZyBhbnkgb3RoZXIgPEVNPnRlcm1uYW1lPC9FTT4gPEVNPnVzZT08L0VNPiAgZmllbGRzICB0aGF0ICB3ZXJlICBub3QKICAgICAgICBuZWVkZWQuCiAKICAgIDxTVFJPTkc+Q2hhbmdpbmc8L1NUUk9ORz4gPFNUUk9ORz5EYXRhYmFzZXM8L1NUUk9ORz4gPFNUUk9ORz5bLUE8L1NUUk9ORz4gPEVNPmRpcmVjdG9yeTwvRU0+XSBbLUIgPEVNPmRpcmVjdG9yeTwvRU0+XQotICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUgY29tcGlsZWQgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZGF0YWJhc2UgIGlzICB0YWtlbgotICAgICAgIGZyb20gIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8U1RST05HPlRFUk1JTkZPPC9TVFJPTkc+IC4gIElmIHRoZSB2YXJpYWJsZQotICAgICAgIGlzIG5vdCBkZWZpbmVkLCBvciB0aGUgdGVybWluYWwgaXMgbm90IGZvdW5kIGluIHRoYXQgbG9jYS0KLSAgICAgICB0aW9uLCAgdGhlICBzeXN0ZW0gIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gIGRhdGFiYXNlLCBpbiA8U1RST05HPi91c3Ivc2hhcmUvdGVyLTwvU1RST05HPgotICAgICAgIDxTVFJPTkc+bWluZm88L1NUUk9ORz4sIHdpbGwgYmUgdXNlZC4gIFRoZSBvcHRpb25zIDxTVFJPTkc+LUE8L1NUUk9ORz4gYW5kIDxTVFJPTkc+LUI8L1NUUk9ORz4gbWF5IGJlIHVzZWQgdG8KLSAgICAgICBvdmVycmlkZSAgdGhpcyAgbG9jYXRpb24uICBUaGUgPFNUUk9ORz4tQTwvU1RST05HPiBvcHRpb24gd2lsbCBzZXQgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPgotICAgICAgIGZvciB0aGUgZmlyc3QgPEVNPnRlcm1uYW1lPC9FTT4gYW5kIHRoZSA8U1RST05HPi1CPC9TVFJPTkc+IG9wdGlvbiB3aWxsIHNldCA8U1RST05HPlRFUk1JTkZPPC9TVFJPTkc+Ci0gICAgICAgZm9yICB0aGUgIG90aGVyICA8RU0+dGVybW5hbWVzPC9FTT4uICAgV2l0aCB0aGlzLCBpdCBpcyBwb3NzaWJsZSB0bwotICAgICAgIGNvbXBhcmUgZGVzY3JpcHRpb25zIGZvciBhIHRlcm1pbmFsICB3aXRoICB0aGUgIHNhbWUgIG5hbWUKLSAgICAgICBsb2NhdGVkICBpbiAgdHdvICBkaWZmZXJlbnQgZGF0YWJhc2VzLiAgVGhpcyBpcyB1c2VmdWwgZm9yCi0gICAgICAgY29tcGFyaW5nIGRlc2NyaXB0aW9ucyBmb3IgdGhlIHNhbWUgIHRlcm1pbmFsICBjcmVhdGVkICBieQotICAgICAgIGRpZmZlcmVudCBwZW9wbGUuCisgICAgICAgTGlrZSBvdGhlciA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdXRpbGl0aWVzLCBpbmZvY21wIGxvb2tzIGZvciB0aGUgdGVybWktCisgICAgICAgbmFsIGRlc2NyaXB0aW9ucyBpbiBzZXZlcmFsIHBsYWNlcy4gIFlvdSBjYW4gdXNlIHRoZSAgPFNUUk9ORz5URVItPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5NSU5GTzwvU1RST05HPiAgYW5kIDxTVFJPTkc+VEVSTUlORk9fRElSUzwvU1RST05HPiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUKKyAgICAgICB0aGUgY29tcGlsZWQtaW4gZGVmYXVsdCBsaXN0ICBvZiAgcGxhY2VzICB0byAgc2VhcmNoICAoc2VlCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IGZvciBkZXRhaWxzKS4KIAotICAgPFNUUk9ORz5PdGhlcjwvU1RST05HPiA8U1RST05HPk9wdGlvbnM8L1NUUk9ORz4KKyAgICAgICBZb3UgIGNhbiAgYWxzbyAgdXNlICB0aGUgb3B0aW9ucyA8U1RST05HPi1BPC9TVFJPTkc+IGFuZCA8U1RST05HPi1CPC9TVFJPTkc+IHRvIG92ZXJyaWRlIHRoZQorICAgICAgIGxpc3Qgb2YgcGxhY2VzIHRvIHNlYXJjaCB3aGVuIGNvbXBhcmluZyB0ZXJtaW5hbCAgZGVzY3JpcC0KKyAgICAgICB0aW9uczoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSA8U1RST05HPi1BPC9TVFJPTkc+IG9wdGlvbiBzZXRzIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGZpcnN0IDxFTT50ZXJtbmFtZTwvRU0+CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgICA8U1RST05HPi1CPC9TVFJPTkc+ICBvcHRpb24gIHNldHMgIHRoZSAgbG9jYXRpb24gIGZvciAgdGhlICBvdGhlcgorICAgICAgICAgICA8RU0+dGVybW5hbWVzPC9FTT4uCisKKyAgICAgICBVc2luZyB0aGVzZSBvcHRpb25zLCBpdCBpcyBwb3NzaWJsZSAgdG8gIGNvbXBhcmUgIGRlc2NyaXAtCisgICAgICAgdGlvbnMgIGZvciAgYSAgdGVybWluYWwgIHdpdGggdGhlIHNhbWUgbmFtZSBsb2NhdGVkIGluIHR3bworICAgICAgIGRpZmZlcmVudCBkYXRhYmFzZXMuICBGb3IgaW5zdGFuY2UsIHlvdSBjYW4gdXNlIHRoaXMgIGZlYS0KKyAgICAgICB0dXJlIGZvciBjb21wYXJpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgc2FtZSB0ZXJtaW5hbCBjcmUtCisgICAgICAgYXRlZCBieSBkaWZmZXJlbnQgcGVvcGxlLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU90aGVyLU9wdGlvbnMiPk90aGVyIE9wdGlvbnM8L2E+PC9IMz48UFJFPgorICAgICAgIDxTVFJPTkc+LTA8L1NUUk9ORz4gICBjYXVzZXMgdGhlIGZpZWxkcyB0byBiZSBwcmludGVkIG9uIG9uZSBsaW5lLCAgd2l0aG91dAorICAgICAgICAgICAgd3JhcHBpbmcuCisKICAgICAgICA8U1RST05HPi0xPC9TVFJPTkc+ICAgY2F1c2VzICB0aGUgIGZpZWxkcyAgdG8gYmUgcHJpbnRlZCBvdXQgb25lIHRvIGEgbGluZS4KICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGZpZWxkcyB3aWxsIGJlIHByaW50ZWQgIHNldmVyYWwgIHRvICBhCiAgICAgICAgICAgICBsaW5lIHRvIGEgbWF4aW11bSB3aWR0aCBvZiA2MCBjaGFyYWN0ZXJzLgpAQCAtMjIyLDYzICsyNTgsNzIgQEAKICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRpc2NhcmRpbmcgdGhlbS4gIENhcGFiaWxpdGllcyAgYXJlICBjb20tCiAgICAgICAgICAgICBtZW50ZWQgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCBhIHBlcmlvZC4KIAorICAgICAgIDxTVFJPTkc+LUQ8L1NUUk9ORz4gICB0ZWxscyA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gdG8gcHJpbnQgdGhlIGRhdGFiYXNlIGxvY2F0aW9ucyB0aGF0IGl0CisgICAgICAgICAgICBrbm93cyBhYm91dCwgYW5kIGV4aXQuCisKICAgICAgICA8U1RST05HPi1FPC9TVFJPTkc+ICAgRHVtcCAgdGhlICBjYXBhYmlsaXRpZXMgIG9mICB0aGUgIGdpdmVuICB0ZXJtaW5hbCAgYXMKLSAgICAgICAgICAgIHRhYmxlcywgbmVlZGVkIGluIHRoZSBDIGluaXRpYWxpemVyICBmb3IgIGEgIFRFUk1UWVBFCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgICh0aGUgIHRlcm1pbmFsIGNhcGFiaWxpdHkgc3RydWN0dXJlIGluIHRoZQotICAgICAgICAgICAgPFNUUk9ORz4mbHQ7dGVybS5oJmd0OzwvU1RST05HPikuICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgZm9yIHByZXBhcmluZyAgdmVyLQotICAgICAgICAgICAgc2lvbnMgIG9mICB0aGUgIGN1cnNlcyAgbGlicmFyeSBoYXJkd2lyZWQgZm9yIGEgZ2l2ZW4KLSAgICAgICAgICAgIHRlcm1pbmFsIHR5cGUuICBUaGUgdGFibGVzIGFyZSBhbGwgIGRlY2xhcmVkICBzdGF0aWMsCi0gICAgICAgICAgICBhbmQgIGFyZSAgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIGFuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgdGFibGVzLCAgbmVlZGVkICBpbiAgdGhlIEMgaW5pdGlhbGl6ZXIgZm9yIGEgVEVSTVRZUEUKKyAgICAgICAgICAgIHN0cnVjdHVyZSAodGhlIHRlcm1pbmFsIGNhcGFiaWxpdHkgc3RydWN0dXJlICBpbiAgdGhlCisgICAgICAgICAgICA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+KS4gICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgZm9yIHByZXBhcmluZyB2ZXItCisgICAgICAgICAgICBzaW9ucyBvZiB0aGUgY3Vyc2VzIGxpYnJhcnkgIGhhcmR3aXJlZCAgZm9yICBhICBnaXZlbgorICAgICAgICAgICAgdGVybWluYWwgIHR5cGUuICAgVGhlIHRhYmxlcyBhcmUgYWxsIGRlY2xhcmVkIHN0YXRpYywKKyAgICAgICAgICAgIGFuZCBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIGFuZCB0aGUgIG5hbWUgIG9mCiAgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyB0ZXJtaW5hbCBlbnRyeS4KIAotICAgICAgICAgICAgQmVmb3JlIG5jdXJzZXMgNS4wLCB0aGUgc3BsaXQgYmV0d2VlbiB0aGUgPFNUUk9ORz4tZTwvU1RST05HPiAgYW5kICA8U1RST05HPi1FPC9TVFJPTkc+Ci0gICAgICAgICAgICBvcHRpb25zICB3YXMgIG5vdCAgbmVlZGVkOyAgYnV0ICBzdXBwb3J0IGZvciBleHRlbmRlZAorICAgICAgICAgICAgQmVmb3JlICBuY3Vyc2VzICA1LjAsIHRoZSBzcGxpdCBiZXR3ZWVuIHRoZSA8U1RST05HPi1lPC9TVFJPTkc+IGFuZCA8U1RST05HPi1FPC9TVFJPTkc+CisgICAgICAgICAgICBvcHRpb25zIHdhcyBub3QgIG5lZWRlZDsgIGJ1dCAgc3VwcG9ydCAgZm9yICBleHRlbmRlZAogICAgICAgICAgICAgbmFtZXMgcmVxdWlyZWQgbWFraW5nIHRoZSBhcnJheXMgb2YgdGVybWluYWwgY2FwYWJpbC0KICAgICAgICAgICAgIGl0aWVzIHNlcGFyYXRlIGZyb20gdGhlIFRFUk1UWVBFIHN0cnVjdHVyZS4KIAotICAgICAgIDxTVFJPTkc+LWU8L1NUUk9ORz4gICBEdW1wICB0aGUgIGNhcGFiaWxpdGllcyAgb2YgdGhlIGdpdmVuIHRlcm1pbmFsIGFzIGEgQwotICAgICAgICAgICAgaW5pdGlhbGl6ZXIgZm9yIGEgVEVSTVRZUEUgIHN0cnVjdHVyZSAgKHRoZSAgdGVybWluYWwKLSAgICAgICAgICAgIGNhcGFiaWxpdHkgIHN0cnVjdHVyZSAgaW4gdGhlIDxTVFJPTkc+Jmx0O3Rlcm0uaCZndDs8L1NUUk9ORz4pLiAgVGhpcyBvcHRpb24KKyAgICAgICA8U1RST05HPi1lPC9TVFJPTkc+ICAgRHVtcCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBnaXZlbiB0ZXJtaW5hbCAgYXMgIGEgIEMKKyAgICAgICAgICAgIGluaXRpYWxpemVyICBmb3IgIGEgIFRFUk1UWVBFIHN0cnVjdHVyZSAodGhlIHRlcm1pbmFsCisgICAgICAgICAgICBjYXBhYmlsaXR5IHN0cnVjdHVyZSBpbiB0aGUgPFNUUk9ORz4mbHQ7dGVybS5oJmd0OzwvU1RST05HPikuICAgVGhpcyAgb3B0aW9uCiAgICAgICAgICAgICBpcyAgdXNlZnVsICBmb3IgIHByZXBhcmluZyAgdmVyc2lvbnMgIG9mICB0aGUgIGN1cnNlcwogICAgICAgICAgICAgbGlicmFyeSBoYXJkd2lyZWQgZm9yIGEgZ2l2ZW4gdGVybWluYWwgdHlwZS4KIAotICAgICAgIDxTVFJPTkc+LUY8L1NUUk9ORz4gICBjb21wYXJlICB0ZXJtaW5mbyAgZmlsZXMuICBUaGlzIGFzc3VtZXMgdGhhdCB0d28gZm9sLQotICAgICAgICAgICAgbG93aW5nICBhcmd1bWVudHMgIGFyZSAgZmlsZW5hbWVzLiAgIFRoZSAgZmlsZXMgICBhcmUKLSAgICAgICAgICAgIHNlYXJjaGVkICBmb3IgIHBhaXJ3aXNlIG1hdGNoZXMgYmV0d2VlbiBlbnRyaWVzLCB3aXRoCisgICAgICAgPFNUUk9ORz4tRjwvU1RST05HPiAgIGNvbXBhcmUgdGVybWluZm8gZmlsZXMuICBUaGlzIGFzc3VtZXMgdGhhdCAgdHdvICBmb2wtCisgICAgICAgICAgICBsb3dpbmcgICBhcmd1bWVudHMgIGFyZSAgZmlsZW5hbWVzLiAgIFRoZSAgZmlsZXMgIGFyZQorICAgICAgICAgICAgc2VhcmNoZWQgZm9yIHBhaXJ3aXNlIG1hdGNoZXMgYmV0d2VlbiAgZW50cmllcywgIHdpdGgKICAgICAgICAgICAgIHR3byBlbnRyaWVzIGNvbnNpZGVyZWQgdG8gbWF0Y2ggaWYgYW55IG9mIHRoZWlyIG5hbWVzCi0gICAgICAgICAgICBkby4gICBUaGUgIHJlcG9ydCAgcHJpbnRlZCAgdG8gIHN0YW5kYXJkIG91dHB1dCBsaXN0cwotICAgICAgICAgICAgZW50cmllcyB3aXRoICBubyAgbWF0Y2hlcyAgaW4gIHRoZSAgb3RoZXIgIGZpbGUsICBhbmQKLSAgICAgICAgICAgIGVudHJpZXMgIHdpdGggIG1vcmUgdGhhbiBvbmUgbWF0Y2guICBGb3IgZW50cmllcyB3aXRoCi0gICAgICAgICAgICBleGFjdGx5IG9uZSBtYXRjaCBpdCBpbmNsdWRlcyAgYSAgZGlmZmVyZW5jZSAgcmVwb3J0LgotICAgICAgICAgICAgTm9ybWFsbHksICB0byAgcmVkdWNlICB0aGUgIHZvbHVtZSBvZiB0aGUgcmVwb3J0LCB1c2UKLSAgICAgICAgICAgIHJlZmVyZW5jZXMgYXJlIG5vdCByZXNvbHZlZCBiZWZvcmUgbG9va2luZyAgZm9yICBkaWYtCisgICAgICAgICAgICBkby4gIFRoZSByZXBvcnQgIHByaW50ZWQgIHRvICBzdGFuZGFyZCAgb3V0cHV0ICBsaXN0cworICAgICAgICAgICAgZW50cmllcyAgd2l0aCAgbm8gIG1hdGNoZXMgIGluICB0aGUgIG90aGVyICBmaWxlLCBhbmQKKyAgICAgICAgICAgIGVudHJpZXMgd2l0aCBtb3JlIHRoYW4gb25lIG1hdGNoLiAgRm9yICBlbnRyaWVzICB3aXRoCisgICAgICAgICAgICBleGFjdGx5ICBvbmUgIG1hdGNoICBpdCBpbmNsdWRlcyBhIGRpZmZlcmVuY2UgcmVwb3J0LgorICAgICAgICAgICAgTm9ybWFsbHksIHRvIHJlZHVjZSB0aGUgdm9sdW1lICBvZiAgdGhlICByZXBvcnQsICB1c2UKKyAgICAgICAgICAgIHJlZmVyZW5jZXMgIGFyZSAgbm90IHJlc29sdmVkIGJlZm9yZSBsb29raW5nIGZvciBkaWYtCiAgICAgICAgICAgICBmZXJlbmNlcywgYnV0IHJlc29sdXRpb24gY2FuIGJlIGZvcmNlZCBieSBhbHNvIHNwZWNpLQogICAgICAgICAgICAgZnlpbmcgPFNUUk9ORz4tcjwvU1RST05HPi4KIAotICAgICAgIDxTVFJPTkc+LWY8L1NUUk9ORz4gICBEaXNwbGF5ICBjb21wbGV4ICB0ZXJtaW5mbyAgc3RyaW5ncyAgIHdoaWNoICAgY29udGFpbgorICAgICAgIDxTVFJPTkc+LWY8L1NUUk9ORz4gICBEaXNwbGF5ICAgY29tcGxleCAgIHRlcm1pbmZvICBzdHJpbmdzICB3aGljaCAgY29udGFpbgogICAgICAgICAgICAgaWYvdGhlbi9lbHNlL2VuZGlmIGV4cHJlc3Npb25zIGluZGVudGVkIGZvciByZWFkYWJpbC0KICAgICAgICAgICAgIGl0eS4KIAogICAgICAgIDxTVFJPTkc+LUc8L1NUUk9ORz4gICBEaXNwbGF5IGNvbnN0YW50IGxpdGVyYWxzIGluIGRlY2ltYWwgZm9ybSByYXRoZXIgdGhhbgogICAgICAgICAgICAgdGhlaXIgY2hhcmFjdGVyIGVxdWl2YWxlbnRzLgogCi0gICAgICAgPFNUUk9ORz4tZzwvU1RST05HPiAgIERpc3BsYXkgIGNvbnN0YW50ICBjaGFyYWN0ZXIgIGxpdGVyYWxzIGluIHF1b3RlZCBmb3JtCisgICAgICAgPFNUUk9ORz4tZzwvU1RST05HPiAgIERpc3BsYXkgY29uc3RhbnQgY2hhcmFjdGVyIGxpdGVyYWxzICBpbiAgcXVvdGVkICBmb3JtCiAgICAgICAgICAgICByYXRoZXIgdGhhbiB0aGVpciBkZWNpbWFsIGVxdWl2YWxlbnRzLgogCiAgICAgICAgPFNUUk9ORz4taTwvU1RST05HPiAgIEFuYWx5emUgdGhlIGluaXRpYWxpemF0aW9uICg8U1RST05HPmlzMTwvU1RST05HPiwgPFNUUk9ORz5pczI8L1NUUk9ORz4sIDxTVFJPTkc+aXMzPC9TVFJPTkc+KSwgYW5kIHJlc2V0Ci0gICAgICAgICAgICAoPFNUUk9ORz5yczE8L1NUUk9ORz4sICA8U1RST05HPnJzMjwvU1RST05HPiwgIDxTVFJPTkc+cnMzPC9TVFJPTkc+KSwgIHN0cmluZ3MgIGluICB0aGUgZW50cnkuICBGb3IgZWFjaAotICAgICAgICAgICAgc3RyaW5nLCB0aGUgY29kZSB0cmllcyB0byBhbmFseXplIGl0IGludG8gYWN0aW9ucyAgaW4KLSAgICAgICAgICAgIHRlcm1zIG9mIHRoZSBvdGhlciBjYXBhYmlsaXRpZXMgaW4gdGhlIGVudHJ5LCBjZXJ0YWluCi0gICAgICAgICAgICBYMy42NC9JU08gNjQyOS9FQ01BLTQ4IGNhcGFiaWxpdGllcywgYW5kIGNlcnRhaW4gIERFQwotICAgICAgICAgICAgVlQtc2VyaWVzICBwcml2YXRlICBtb2RlcyAodGhlIHNldCBvZiByZWNvZ25pemVkIHNwZS0KLSAgICAgICAgICAgIGNpYWwgc2VxdWVuY2VzIGhhcyAgYmVlbiAgc2VsZWN0ZWQgIGZvciAgY29tcGxldGVuZXNzCi0gICAgICAgICAgICBvdmVyICB0aGUgIGV4aXN0aW5nICB0ZXJtaW5mbyBkYXRhYmFzZSkuICBFYWNoIHJlcG9ydAotICAgICAgICAgICAgbGluZSBjb25zaXN0cyBvZiB0aGUgY2FwYWJpbGl0eSBuYW1lLCBmb2xsb3dlZCAgYnkgIGEKLSAgICAgICAgICAgIGNvbG9uIGFuZCBzcGFjZSwgZm9sbG93ZWQgYnkgYSBwcmludGFibGUgZXhwYW5zaW9uIG9mCi0gICAgICAgICAgICB0aGUgY2FwYWJpbGl0eSBzdHJpbmcgd2l0aCBzZWN0aW9ucyAgbWF0Y2hpbmcgIHJlY29nLQotICAgICAgICAgICAgbml6ZWQgIGFjdGlvbnMgIHRyYW5zbGF0ZWQgaW50byB7fS1icmFja2V0ZWQgZGVzY3JpcC0KLSAgICAgICAgICAgIHRpb25zLiAgSGVyZSAgaXMgIGEgIGxpc3QgIG9mICB0aGUgIERFQy9BTlNJICBzcGVjaWFsCi0gICAgICAgICAgICBzZXF1ZW5jZXMgcmVjb2duaXplZDogaS4KKyAgICAgICAgICAgICg8U1RST05HPnJzMTwvU1RST05HPiwgPFNUUk9ORz5yczI8L1NUUk9ORz4sIDxTVFJPTkc+cnMzPC9TVFJPTkc+KSwgc3RyaW5ncyBpbiB0aGUgIGVudHJ5LCAgYXMgIHdlbGwgIGFzCisgICAgICAgICAgICB0aG9zZSAgdXNlZCAgZm9yIHN0YXJ0aW5nL3N0b3BwaW5nIGN1cnNvci1wb3NpdGlvbmluZworICAgICAgICAgICAgbW9kZSAoPFNUUk9ORz5zbWN1cDwvU1RST05HPiwgIDxTVFJPTkc+cm1jdXA8L1NUUk9ORz4pICBhcyAgd2VsbCAgYXMgIHN0YXJ0aW5nL3N0b3BwaW5nCisgICAgICAgICAgICBrZXltYXAgbW9kZSAoPFNUUk9ORz5zbWt4PC9TVFJPTkc+LCA8U1RST05HPnJta3g8L1NUUk9ORz4pLgorCisgICAgICAgICAgICBGb3IgIGVhY2ggIHN0cmluZywgIHRoZSBjb2RlIHRyaWVzIHRvIGFuYWx5emUgaXQgaW50bworICAgICAgICAgICAgYWN0aW9ucyBpbiB0ZXJtcyBvZiB0aGUgIG90aGVyICBjYXBhYmlsaXRpZXMgIGluICB0aGUKKyAgICAgICAgICAgIGVudHJ5LCAgY2VydGFpbiAgWDMuNjQvSVNPIDY0MjkvRUNNQS00OCBjYXBhYmlsaXRpZXMsCisgICAgICAgICAgICBhbmQgY2VydGFpbiBERUMgVlQtc2VyaWVzIHByaXZhdGUgbW9kZXMgKHRoZSAgc2V0ICBvZgorICAgICAgICAgICAgcmVjb2duaXplZCAgc3BlY2lhbCAgc2VxdWVuY2VzICBoYXMgYmVlbiBzZWxlY3RlZCBmb3IKKyAgICAgICAgICAgIGNvbXBsZXRlbmVzcyBvdmVyIHRoZSAgZXhpc3RpbmcgIHRlcm1pbmZvICBkYXRhYmFzZSkuCisgICAgICAgICAgICBFYWNoICByZXBvcnQgIGxpbmUgIGNvbnNpc3RzICBvZiB0aGUgY2FwYWJpbGl0eSBuYW1lLAorICAgICAgICAgICAgZm9sbG93ZWQgYnkgYSBjb2xvbiBhbmQgc3BhY2UsIGZvbGxvd2VkIGJ5ICBhICBwcmludC0KKyAgICAgICAgICAgIGFibGUgZXhwYW5zaW9uIG9mIHRoZSBjYXBhYmlsaXR5IHN0cmluZyB3aXRoIHNlY3Rpb25zCisgICAgICAgICAgICBtYXRjaGluZyByZWNvZ25pemVkIGFjdGlvbnMgdHJhbnNsYXRlZCBpbnRvIHt9LWJyYWNrLQorICAgICAgICAgICAgZXRlZCBkZXNjcmlwdGlvbnMuCisKKyAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIHRoZSBERUMvQU5TSSBzcGVjaWFsIHNlcXVlbmNlcyByZWMtCisgICAgICAgICAgICBvZ25pemVkOgogCiAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgIE1lYW5pbmcKICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMTAsMjEgKzM1NSwyMCBAQAogICAgICAgICAgICAgICAgICAgREVDWystXUNLTSAgICBhcHBsaWNhdGlvbiBjdXJzb3Iga2V5cwogICAgICAgICAgICAgICAgICAgREVDWystXUFOTSAgICBzZXQgVlQ1MiBtb2RlCiAgICAgICAgICAgICAgICAgICBERUNbKy1dQ09MTSAgIDEzMi1jb2x1bW4gbW9kZQotCiAgICAgICAgICAgICAgICAgICBERUNbKy1dU0NMTSAgIHNtb290aCBzY3JvbGwKICAgICAgICAgICAgICAgICAgIERFQ1srLV1TQ05NICAgcmV2ZXJzZSB2aWRlbyBtb2RlCiAgICAgICAgICAgICAgICAgICBERUNbKy1dT00gICAgIG9yaWdpbiBtb2RlCiAgICAgICAgICAgICAgICAgICBERUNbKy1dQVdNICAgIHdyYXBhcm91bmQgbW9kZQogICAgICAgICAgICAgICAgICAgREVDWystXUFSTSAgICBhdXRvLXJlcGVhdCBtb2RlCiAKLSAgICAgICAgICAgIEl0ICBhbHNvICByZWNvZ25pemVzICBhICBTR1IgIGFjdGlvbiBjb3JyZXNwb25kaW5nIHRvCi0gICAgICAgICAgICBBTlNJL0lTTyA2NDI5L0VDTUEgU2V0IEdyYXBoaWNzIFJlbmRpdGlvbiwgIHdpdGggIHRoZQotICAgICAgICAgICAgdmFsdWVzICBOT1JNQUwsICBCT0xELCBVTkRFUkxJTkUsIEJMSU5LLCBhbmQgUkVWRVJTRS4KLSAgICAgICAgICAgIEFsbCBidXQgTk9STUFMIG1heSBiZSBwcmVmaXhlZCB3aXRoIGArJyAodHVybiBvbikgIG9yCisgICAgICAgICAgICBJdCBhbHNvIHJlY29nbml6ZXMgIGEgIFNHUiAgYWN0aW9uICBjb3JyZXNwb25kaW5nICB0bworICAgICAgICAgICAgQU5TSS9JU08gIDY0MjkvRUNNQSAgU2V0IEdyYXBoaWNzIFJlbmRpdGlvbiwgd2l0aCB0aGUKKyAgICAgICAgICAgIHZhbHVlcyBOT1JNQUwsIEJPTEQsIFVOREVSTElORSwgQkxJTkssICBhbmQgIFJFVkVSU0UuCisgICAgICAgICAgICBBbGwgIGJ1dCBOT1JNQUwgbWF5IGJlIHByZWZpeGVkIHdpdGggYCsnICh0dXJuIG9uKSBvcgogICAgICAgICAgICAgYC0nICh0dXJuIG9mZikuCiAKLSAgICAgICBBbiBTR1IwIGRlc2lnbmF0ZXMgYW4gZW1wdHkgaGlnaGxpZ2h0IHNlcXVlbmNlIChlcXVpdmFsZW50Ci0gICAgICAgdG8ge1NHUjpOT1JNQUx9KS4KKyAgICAgICAgICAgIEFuICBTR1IwICBkZXNpZ25hdGVzICBhbiAgZW1wdHkgIGhpZ2hsaWdodCAgIHNlcXVlbmNlCisgICAgICAgICAgICAoZXF1aXZhbGVudCB0byB7U0dSOk5PUk1BTH0pLgogCiAgICAgICAgPFNUUk9ORz4tbDwvU1RST05HPiAgIFNldCBvdXRwdXQgZm9ybWF0IHRvIHRlcm1pbmZvLgogCkBAIC0zNDAsMTEgKzM4NCwxMyBAQAogICAgICAgICAgICAgb24gIFNWcjEsICBVbHRyaXgsICBvciAgSFAvVVggdGhhdCBkbyBub3Qgc3VwcG9ydCB0aGUKICAgICAgICAgICAgIGZ1bGwgc2V0IG9mIFNWUjQvWFNJIEN1cnNlcyAgdGVybWluZm87ICBhbmQgIHZhcmlhbnRzCiAgICAgICAgICAgICBzdWNoIGFzIEFJWCB0aGF0IGhhdmUgdGhlaXIgb3duIGV4dGVuc2lvbnMgaW5jb21wYXRpLQotICAgICAgICAgICAgYmxlIHdpdGggU1ZyNC9YU0kuICBBdmFpbGFibGUgIHRlcm1pbmZvICBzdWJzZXRzICBhcmUKLSAgICAgICAgICAgICJTVnIxIiwgICJVbHRyaXgiLCAgIkhQIiwgIGFuZCAiQUlYIjsgc2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4KLSAgICAgICAgICAgIGZvciBkZXRhaWxzLiAgWW91IGNhbiBhbHNvIGNob29zZSAgdGhlICBzdWJzZXQgICJCU0QiCi0gICAgICAgICAgICB3aGljaCAgc2VsZWN0cyBvbmx5IGNhcGFiaWxpdGllcyB3aXRoIHRlcm1jYXAgZXF1aXZhLQotICAgICAgICAgICAgbGVudHMgcmVjb2duaXplZCBieSA0LjRCU0QuCisgICAgICAgICAgICBibGUgd2l0aCBTVnI0L1hTSS4KKworICAgICAgICAgICAgQXZhaWxhYmxlICB0ZXJtaW5mbyAgc3Vic2V0cyAgYXJlICAiU1ZyMSIsICAiVWx0cml4IiwKKyAgICAgICAgICAgICJIUCIsICBhbmQgICJBSVgiOyAgc2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gZm9yIGRldGFpbHMuICBZb3UKKyAgICAgICAgICAgIGNhbiBhbHNvIGNob29zZSB0aGUgc3Vic2V0ICJCU0QiIHdoaWNoICBzZWxlY3RzICBvbmx5CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMgIHdpdGggIHRlcm1jYXAgZXF1aXZhbGVudHMgcmVjb2duaXplZCBieQorICAgICAgICAgICAgNC40QlNELgogCiAgICAgICAgPFNUUk9ORz4tczwvU1RST05HPiA8RU0+W2R8aXxsfGNdPC9FTT4KICAgICAgICAgICAgIFRoZSA8U1RST05HPi1zPC9TVFJPTkc+IG9wdGlvbiAgc29ydHMgIHRoZSAgZmllbGRzICB3aXRoaW4gIGVhY2ggIHR5cGUKQEAgLTM5NywzNyArNDQzLDQwIEBACiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Ci0gICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mbyBDb21waWxlZCAgICAgIHRlcm1pbmFsICAgICBkZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UuCis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvIENvbXBpbGVkICB0ZXJtaW5hbCAgZGVzY3JpcHRpb24gIGRhdGEtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLgogCiAKIDwvUFJFPgotPEgyPkVYVEVOU0lPTlM8L0gyPjxQUkU+Ci0gICAgICAgVGhlIDxTVFJPTkc+LUU8L1NUUk9ORz4sIDxTVFJPTkc+LUY8L1NUUk9ORz4sIDxTVFJPTkc+LUc8L1NUUk9ORz4sIDxTVFJPTkc+LVI8L1NUUk9ORz4sIDxTVFJPTkc+LVQ8L1NUUk9ORz4sIDxTVFJPTkc+LVY8L1NUUk9ORz4sIDxTVFJPTkc+LWE8L1NUUk9ORz4sIDxTVFJPTkc+LWU8L1NUUk9ORz4sIDxTVFJPTkc+LWY8L1NUUk9ORz4sIDxTVFJPTkc+LWc8L1NUUk9ORz4sIDxTVFJPTkc+LWk8L1NUUk9ORz4sIDxTVFJPTkc+LWw8L1NUUk9ORz4sIDxTVFJPTkc+LXA8L1NUUk9ORz4sIDxTVFJPTkc+LXE8L1NUUk9ORz4KLSAgICAgICBhbmQgPFNUUk9ORz4tdDwvU1RST05HPiBvcHRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGluIFNWcjQgY3Vyc2VzLgorPEgyPjxhIG5hbWU9ImgyLUVYVEVOU0lPTlMiPkVYVEVOU0lPTlM8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSA8U1RST05HPi0wPC9TVFJPTkc+LCA8U1RST05HPi0xPC9TVFJPTkc+LCA8U1RST05HPi1FPC9TVFJPTkc+LCA8U1RST05HPi1GPC9TVFJPTkc+LCA8U1RST05HPi1HPC9TVFJPTkc+LCA8U1RST05HPi1SPC9TVFJPTkc+LCA8U1RST05HPi1UPC9TVFJPTkc+LCA8U1RST05HPi1WPC9TVFJPTkc+LCA8U1RST05HPi1hPC9TVFJPTkc+LCA8U1RST05HPi1lPC9TVFJPTkc+LCAgPFNUUk9ORz4tZjwvU1RST05HPiwgIDxTVFJPTkc+LWc8L1NUUk9ORz4sICA8U1RST05HPi1pPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+LWw8L1NUUk9ORz4sICA8U1RST05HPi1wPC9TVFJPTkc+LCAgPFNUUk9ORz4tcTwvU1RST05HPiAgYW5kICA8U1RST05HPi10PC9TVFJPTkc+ICBvcHRpb25zICBhcmUgIG5vdCBzdXBwb3J0ZWQgaW4gU1ZyNAorICAgICAgIGN1cnNlcy4KIAogICAgICAgIFRoZSA8U1RST05HPi1yPC9TVFJPTkc+IG9wdGlvbidzIG5vdGlvbiBvZiBgdGVybWNhcCcgY2FwYWJpbGl0aWVzIGlzIFN5c3RlbQotICAgICAgIFYgUmVsZWFzZSA0J3MuICBBY3R1YWwgQlNEIGN1cnNlcyAgdmVyc2lvbnMgIHdpbGwgIGhhdmUgIGEKLSAgICAgICBtb3JlICByZXN0cmljdGVkICBzZXQuICBUbyBzZWUgb25seSB0aGUgNC40QlNEIHNldCwgdXNlIDxTVFJPTkc+LXI8L1NUUk9ORz4KKyAgICAgICBWICBSZWxlYXNlICA0J3MuICAgQWN0dWFsICBCU0QgY3Vyc2VzIHZlcnNpb25zIHdpbGwgaGF2ZSBhCisgICAgICAgbW9yZSByZXN0cmljdGVkIHNldC4gIFRvIHNlZSBvbmx5IHRoZSA0LjRCU0Qgc2V0LCAgdXNlICA8U1RST05HPi1yPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz4tUkJTRDwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5CVUdTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUJVR1MiPkJVR1M8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8U1RST05HPi1GPC9TVFJPTkc+IG9wdGlvbiBvZiA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+IHNob3VsZCBiZSBhIDxTVFJPTkc+PEEgSFJFRj0idG9lLjFtLmh0bWwiPnRvZSgxbSk8L0E+PC9TVFJPTkc+IG1vZGUuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJjYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvKDFtKTwvQT48L1NUUk9ORz4sICAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb3RvY2FwLjFtLmh0bWwiPmluZm90b2NhcCgxbSk8L0E+PC9TVFJPTkc+LCAgICAgPFNUUk9ORz48QSBIUkVGPSJ0aWMuMW0uaHRtbCI+dGljKDFtKTwvQT48L1NUUk9ORz4sICAgICA8U1RST05HPjxBIEhSRUY9InRvZS4xbS5odG1sIj50b2UoMW0pPC9BPjwvU1RST05HPiwKKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY2FwdG9pbmZvLjFtLmh0bWwiPmNhcHRvaW5mbygxbSk8L0E+PC9TVFJPTkc+LCAgICAgPFNUUk9ORz48QSBIUkVGPSJpbmZvdG9jYXAuMW0uaHRtbCI+aW5mb3RvY2FwKDFtKTwvQT48L1NUUk9ORz4sICAgICA8U1RST05HPjxBIEhSRUY9InRpYy4xbS5odG1sIj50aWMoMW0pPC9BPjwvU1RST05HPiwgICAgPFNUUk9ORz48QSBIUkVGPSJ0b2UuMW0uaHRtbCI+dG9lKDFtKTwvQT48L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LgogCi0gICAgICAgVGhpcyBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNS42IChwYXRjaCAyMDA4MTAxMSkuCisgICAgICAgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKKworICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1IiPkFVVEhPUjwvYT48L0gyPjxQUkU+CiAgICAgICAgRXJpYyBTLiBSYXltb25kICZsdDtlc3JAc25hcmsudGh5cnN1cy5jb20mZ3Q7IGFuZAogICAgICAgIFRob21hcyBFLiBEaWNrZXkgJmx0O2RpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldCZndDsKIApAQCAtNDM1LDEwICs0ODQsMjUgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJpbmZvY21wLjFtLmh0bWwiPmluZm9jbXAoMW0pPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLURlZmF1bHQtT3B0aW9ucyI+RGVmYXVsdCBPcHRpb25zPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUNvbXBhcmlzb24tT3B0aW9ucy1fLWRfLV8tY18tXy1uXyI+Q29tcGFyaXNvbiBPcHRpb25zIFstZF0gWy1jXSBbLW5dPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVNvdXJjZS1MaXN0aW5nLU9wdGlvbnMtXy1JXy1fLUxfLV8tQ18tXy1yXyI+U291cmNlIExpc3RpbmcgT3B0aW9ucyBbLUldIFstTF0gWy1DXSBbLXJdPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVVzZV8tT3B0aW9uLV8tdV8iPlVzZT0gT3B0aW9uIFstdV08L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtT3RoZXItT3B0aW9ucyI+T3RoZXIgT3B0aW9uczwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUZJTEVTIj5GSUxFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FWFRFTlNJT05TIj5FWFRFTlNJT05TPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUJVR1MiPkJVR1M8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUiI+QVVUSE9SPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vaW5mb3RvY2FwLjFtLmh0bWwgYi9kb2MvaHRtbC9tYW4vaW5mb3RvY2FwLjFtLmh0bWwKaW5kZXggMTUzNTlkOC4uYmQ1ZjA1ZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2luZm90b2NhcC4xbS5odG1sCisrKyBiL2RvYy9odG1sL21hbi9pbmZvdG9jYXAuMW0uaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDQ5ICsyNyw1MSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogaW5mb3RvY2FwLjFtLHYgMS44IDIwMDYvMTIvMjQgMjA6MTM6NTYgdG9tIEV4cCBACisgICogQElkOiBpbmZvdG9jYXAuMW0sdiAxLjExIDIwMTAvMTIvMDQgMTg6Mzg6NTUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+aW5mb3RvY2FwIDFtPC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+aW5mb3RvY2FwIDFtPC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5pbmZvdG9jYXAgMW08L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImluZm90b2NhcC4xbS5odG1sIj5pbmZvdG9jYXAoMW0pPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb3RvY2FwLjFtLmh0bWwiPmluZm90b2NhcCgxbSk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pbmZvdG9jYXA8L1NUUk9ORz4gIC0gY29udmVydCBhIDxFTT50ZXJtaW5mbzwvRU0+IGRlc2NyaXB0aW9uIGludG8gYSA8RU0+dGVybWNhcDwvRU0+CiAgICAgICAgZGVzY3JpcHRpb24KIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+aW5mb3RvY2FwPC9TVFJPTkc+IFs8U1RST05HPi12PC9TVFJPTkc+PEVNPm48L0VNPiA8RU0+d2lkdGg8L0VNPl0gIFs8U1RST05HPi1WPC9TVFJPTkc+XSBbPFNUUk9ORz4tMTwvU1RST05HPl0gWzxTVFJPTkc+LXc8L1NUUk9ORz4gPEVNPndpZHRoPC9FTT5dIDxFTT5maWxlPC9FTT4gLiAuIC4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPmluZm90b2NhcDwvU1RST05HPiBsb29rcyBpbiA8RU0+ZmlsZTwvRU0+IGZvciAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZGVzY3JpcHRpb25zLiAgIEZvcgotICAgICAgIGVhY2ggb25lIGZvdW5kLCBhbiBlcXVpdmFsZW50IDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiBkZXNjcmlwdGlvbiBpcyB3cml0LQotICAgICAgIHRlbiB0byBzdGFuZGFyZCBvdXRwdXQuICAgVGVybWluZm8gIDxTVFJPTkc+dXNlPC9TVFJPTkc+ICBjYXBhYmlsaXRpZXMgIGFyZQotICAgICAgIHRyYW5zbGF0ZWQgZGlyZWN0bHkgdG8gdGVybWNhcCA8U1RST05HPnRjPC9TVFJPTkc+IGNhcGFiaWxpdGllcy4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+aW5mb3RvY2FwPC9TVFJPTkc+IGxvb2tzIGluICBlYWNoICBnaXZlbiAgdGV4dCAgPEVNPmZpbGU8L0VNPiAgZm9yICA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+CisgICAgICAgZGVzY3JpcHRpb25zLiAgIEZvciAgZWFjaCAgdGVybWluZm8gIGRlc2NyaXB0aW9uIGZvdW5kLCBhbgorICAgICAgIGVxdWl2YWxlbnQgPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IGRlc2NyaXB0aW9uIGlzIHdyaXR0ZW4gdG8gc3RhbmRhcmQgb3V0LQorICAgICAgIHB1dC4gIFRlcm1pbmZvIDxTVFJPTkc+dXNlPC9TVFJPTkc+IGNhcGFiaWxpdGllcyBhcmUgdHJhbnNsYXRlZCBkaXJlY3RseSB0bworICAgICAgIHRlcm1jYXAgPFNUUk9ORz50YzwvU1RST05HPiBjYXBhYmlsaXRpZXMuCiAKLSAgICAgICA8U1RST05HPi12PC9TVFJPTkc+ICAgcHJpbnQgIG91dCAgdHJhY2luZyAgaW5mb3JtYXRpb24gb24gc3RhbmRhcmQgZXJyb3IgYXMKKyAgICAgICA8U1RST05HPi12PC9TVFJPTkc+ICAgcHJpbnQgb3V0IHRyYWNpbmcgaW5mb3JtYXRpb24gb24gIHN0YW5kYXJkICBlcnJvciAgYXMKICAgICAgICAgICAgIHRoZSBwcm9ncmFtIHJ1bnMuCiAKLSAgICAgICA8U1RST05HPi1WPC9TVFJPTkc+ICAgcHJpbnQgb3V0IHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9ncmFtIGluIHVzZSBvbiAgc3Rhbi0KKyAgICAgICA8U1RST05HPi1WPC9TVFJPTkc+ICAgcHJpbnQgIG91dCB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvZ3JhbSBpbiB1c2Ugb24gc3Rhbi0KICAgICAgICAgICAgIGRhcmQgZXJyb3IgYW5kIGV4aXQuCiAKLSAgICAgICA8U1RST05HPi0xPC9TVFJPTkc+ICAgY2F1c2UgIHRoZSBmaWVsZHMgdG8gcHJpbnQgb3V0IG9uZSB0byBhIGxpbmUuICBPdGhlci0KKyAgICAgICA8U1RST05HPi0xPC9TVFJPTkc+ICAgY2F1c2UgdGhlIGZpZWxkcyB0byBwcmludCBvdXQgb25lIHRvIGEgbGluZS4gICBPdGhlci0KICAgICAgICAgICAgIHdpc2UsIHRoZSBmaWVsZHMgd2lsbCBiZSBwcmludGVkIHNldmVyYWwgdG8gYSBsaW5lIHRvCiAgICAgICAgICAgICBhIG1heGltdW0gd2lkdGggb2YgNjAgY2hhcmFjdGVycy4KIApAQCAtNzgsMzEgKzc5LDQzIEBACiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Ci0gICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mbyBDb21waWxlZCAgICAgIHRlcm1pbmFsICAgICBkZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UuCis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvIENvbXBpbGVkICB0ZXJtaW5hbCAgZGVzY3JpcHRpb24gIGRhdGEtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgotICAgICAgIFRoaXMgdXRpbGl0eSBpcyBhY3R1YWxseSBhIGxpbmsgIHRvICA8RU0+dGljPC9FTT4sICBydW5uaW5nICBpbiAgPEVNPi1DPC9FTT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgorICAgICAgIFRoaXMgIHV0aWxpdHkgIGlzICBhY3R1YWxseSAgYSAgbGluayB0byA8RU0+dGljPC9FTT4sIHJ1bm5pbmcgaW4gPEVNPi1DPC9FTT4KICAgICAgICBtb2RlLiAgWW91IGNhbiB1c2Ugb3RoZXIgPEVNPnRpYzwvRU0+IG9wdGlvbnMgc3VjaCBhcyA8U1RST05HPi1mPC9TVFJPTkc+IGFuZCAgPFNUUk9ORz4teDwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0aWMuMW0uaHRtbCI+dGljKDFtKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4KIAotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUiI+QVVUSE9SPC9hPjwvSDI+PFBSRT4KKyAgICAgICBFcmljIFMuIFJheW1vbmQgJmx0O2VzckBzbmFyay50aHlyc3VzLmNvbSZndDsgYW5kCisgICAgICAgVGhvbWFzIEUuIERpY2tleSAmbHQ7ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Jmd0OwogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb3RvY2FwLjFtLmh0bWwiPmluZm90b2NhcCgxbSk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1GSUxFUyI+RklMRVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2tleV9kZWZpbmVkLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4va2V5X2RlZmluZWQuM3guaHRtbAppbmRleCA3YjFkZWJlLi42MmQ1MmQxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4va2V5X2RlZmluZWQuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4va2V5X2RlZmluZWQuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNDUgKzI3LDQ2IEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAyMDAzCi0gICogQElkOiBrZXlfZGVmaW5lZC4zeCx2IDEuNCAyMDA2LzAyLzI1IDIxOjUwOjAxIHRvbSBFeHAgQAorICAqIEBJZDoga2V5X2RlZmluZWQuM3gsdiAxLjYgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5rZXlfZGVmaW5lZCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmtleV9kZWZpbmVkIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5rZXlfZGVmaW5lZCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ia2V5X2RlZmluZWQuM3guaHRtbCI+a2V5X2RlZmluZWQoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJrZXlfZGVmaW5lZC4zeC5odG1sIj5rZXlfZGVmaW5lZCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5rZXlfZGVmaW5lZDwvU1RST05HPiAtIGNoZWNrIGlmIGEga2V5Y29kZSBpcyBkZWZpbmVkCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5rZXlfZGVmaW5lZChjb25zdDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qZGVmaW5pdGlvbik7PC9TVFJPTkc+CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuICBJdCBwZXJtaXRzIGFuCiAgICAgICAgYXBwbGljYXRpb24gdG8gZGV0ZXJtaW5lIGlmIGEgc3RyaW5nIGlzIGN1cnJlbnRseSBib3VuZCB0bwogICAgICAgIGFueSBrZXljb2RlLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgSWYgIHRoZSAgc3RyaW5nICBpcyBib3VuZCB0byBhIGtleWNvZGUsIGl0cyB2YWx1ZSAoZ3JlYXRlcgogICAgICAgIHRoYW4gemVybykgaXMgcmV0dXJuZWQuICBJZiBubyBrZXljb2RlIGlzIGJvdW5kLCAgemVybyAgaXMKICAgICAgICByZXR1cm5lZC4gICBJZiAgdGhlICBzdHJpbmcgIGNvbmZsaWN0cyB3aXRoIGxvbmdlciBzdHJpbmdzCkBAIC03NCw3ICs3NCw3IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gIG5jdXJzZXMuICAgVGhleSAgd2VyZSAgbm90CiAgICAgICAgc3VwcG9ydGVkICBvbiAgVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtIFYgaW1wbGVtZW50YXRpb25zLgogICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIHRoZW0gYmUgIGNvbi0KQEAgLTgyLDIyICs4MiwyOCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgogICAgICAgIFRob21hcyBEaWNrZXkuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5X2RlZmluZWQuM3guaHRtbCI+a2V5X2RlZmluZWQoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2tleWJvdW5kLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4va2V5Ym91bmQuM3guaHRtbAppbmRleCBjNjJkOWRhLi5hNzI2ZjhhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4va2V5Ym91bmQuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4va2V5Ym91bmQuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNDUgKzI3LDQ2IEBACiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk5Ci0gICogQElkOiBrZXlib3VuZC4zeCx2IDEuNiAyMDA2LzAyLzI1IDIxOjQ3OjA2IHRvbSBFeHAgQAorICAqIEBJZDoga2V5Ym91bmQuM3gsdiAxLjggMjAxMC8xMi8wNCAxODo0OToyMCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Ci08VElUTEU+a2V5b2sgM3g8L1RJVExFPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+Cis8VElUTEU+a2V5Ym91bmQgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5rZXlvayAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+a2V5Ym91bmQgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+Ci08U1RST05HPjxBIEhSRUY9ImtleW9rLjN4Lmh0bWwiPmtleW9rKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5b2suM3guaHRtbCI+a2V5b2soM3gpPC9BPjwvU1RST05HPgorPFNUUk9ORz48QSBIUkVGPSJrZXlib3VuZC4zeC5odG1sIj5rZXlib3VuZCgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImtleWJvdW5kLjN4Lmh0bWwiPmtleWJvdW5kKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmtleWJvdW5kPC9TVFJPTkc+IC0gcmV0dXJuIGRlZmluaXRpb24gb2Yga2V5Y29kZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgIDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5rZXlib3VuZChpbnQ8L1NUUk9ORz4gPFNUUk9ORz5rZXljb2RlLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNvdW50KTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBjdXJzZXMgbGlicmFyeS4gIEl0IHBlcm1pdHMgYW4KICAgICAgICBhcHBsaWNhdGlvbiB0byBkZXRlcm1pbmUgdGhlIHN0cmluZyB3aGljaCAgaXMgIGRlZmluZWQgIGluCiAgICAgICAgdGhlIHRlcm1pbmZvIGZvciBzcGVjaWZpYyBrZXljb2Rlcy4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8RU0+a2V5Y29kZTwvRU0+IHBhcmFtZXRlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLCBlbHNlIE5VTEwKICAgICAgICBpcyByZXR1cm5lZC4gIElmIGl0IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkICBrZXksCiAgICAgICAgdGhlbiAgTlVMTCAgaXMgIHJldHVybmVkLiAgIFRoZSA8RU0+Y291bnQ8L0VNPiBwYXJhbWV0ZXIgaXMgdXNlZCB0bwpAQCAtNzYsNyArNzYsNyBAQAogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgYXJlIHNwZWNpZmljIHRvICBuY3Vyc2VzLiAgIFRoZXkgIHdlcmUgIG5vdAogICAgICAgIHN1cHBvcnRlZCAgb24gIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSBWIGltcGxlbWVudGF0aW9ucy4KICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiB0aGVtIGJlICBjb24tCkBAIC04NCwyMiArODQsMjggQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iZGVmaW5lX2tleS4zeC5odG1sIj5kZWZpbmVfa2V5KDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ia2V5b2suM3guaHRtbCI+a2V5b2soM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgogICAgICAgIFRob21hcyBEaWNrZXkuCiAKIAogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5b2suM3guaHRtbCI+a2V5b2soM3gpPC9BPjwvU1RST05HPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImtleWJvdW5kLjN4Lmh0bWwiPmtleWJvdW5kKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9rZXlvay4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL2tleW9rLjN4Lmh0bWwKaW5kZXggMmEzODYxMC4uMzFjYmFiOCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2tleW9rLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL2tleW9rLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDQ2ICsyNyw0NyBAQAogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NwotICAqIEBJZDoga2V5b2suM3gsdiAxLjkgMjAwNi8wMi8yNSAyMTo0NzowNiB0b20gRXhwIEAKKyAgKiBASWQ6IGtleW9rLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPmtleW9rIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+a2V5b2sgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmtleW9rIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJrZXlvay4zeC5odG1sIj5rZXlvaygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImtleW9rLjN4Lmh0bWwiPmtleW9rKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPmtleW9rPC9TVFJPTkc+IC0gZW5hYmxlIG9yIGRpc2FibGUgYSBrZXljb2RlCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5rZXlvayhpbnQ8L1NUUk9ORz4gPFNUUk9ORz5rZXljb2RlLDwvU1RST05HPiA8U1RST05HPmJvb2w8L1NUUk9ORz4gPFNUUk9ORz5lbmFibGUpOzwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhpcyBpcyBhbiBleHRlbnNpb24gdG8gdGhlIGN1cnNlcyBsaWJyYXJ5LiAgSXQgcGVybWl0cyBhbgogICAgICAgIGFwcGxpY2F0aW9uIHRvIGRpc2FibGUgc3BlY2lmaWMga2V5Y29kZXMsIHJhdGhlciB0aGFuICB1c2UKICAgICAgICB0aGUgIDxFTT5rZXlwYWQ8L0VNPiAgZnVuY3Rpb24gIHRvIGRpc2FibGUgYWxsIGtleWNvZGVzLiAgS2V5cyB0aGF0Ci0gICAgICAgaGF2ZSBiZWVuIGRpc2FibGVkIGNhbiBiZSByZWVuYWJsZWQuCisgICAgICAgaGF2ZSBiZWVuIGRpc2FibGVkIGNhbiBiZSByZS1lbmFibGVkLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGtleWNvZGUgIG11c3QgIGJlICBncmVhdGVyICB0aGFuICB6ZXJvLCAgZWxzZSAgRVJSICBpcwogICAgICAgIHJldHVybmVkLiAgIElmICBpdCAgZG9lcyAgbm90IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIGtleSwKICAgICAgICB0aGVuIEVSUiBpcyByZXR1cm5lZC4gIElmIHRoZSA8RU0+ZW5hYmxlPC9FTT4gIHBhcmFtZXRlciAgaXMgIHRydWUsCkBAIC03Niw3ICs3Niw3IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gIG5jdXJzZXMuICAgVGhleSAgd2VyZSAgbm90CiAgICAgICAgc3VwcG9ydGVkICBvbiAgVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtIFYgaW1wbGVtZW50YXRpb25zLgogICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIHRoZW0gYmUgIGNvbi0KQEAgLTg0LDIyICs4NCwyOCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZpbmVfa2V5LjN4Lmh0bWwiPmRlZmluZV9rZXkoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgogICAgICAgIFRob21hcyBEaWNrZXkuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ia2V5b2suM3guaHRtbCI+a2V5b2soM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL2xlZ2FjeV9jb2RpbmcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9sZWdhY3lfY29kaW5nLjN4Lmh0bWwKaW5kZXggOTI5N2E3Yi4uZDA0ZjcyOSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL2xlZ2FjeV9jb2RpbmcuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbGVnYWN5X2NvZGluZy4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOCArMjcsMzkgQEAKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5Ci0gICogQElkOiBsZWdhY3lfY29kaW5nLjN4LHYgMS4zIDIwMDYvMTIvMjQgMTU6MTI6NTUgdG9tIEV4cCBACisgICogQElkOiBsZWdhY3lfY29kaW5nLjN4LHYgMS40IDIwMTAvMTIvMDQgMTg6NDk6MjAgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bGVnYWN5X2NvZGluZyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPmxlZ2FjeV9jb2RpbmcgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPmxlZ2FjeV9jb2RpbmcgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9ImxlZ2FjeV9jb2RpbmcuM3guaHRtbCI+bGVnYWN5X2NvZGluZygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibGVnYWN5X2NvZGluZy4zeC5odG1sIj5sZWdhY3lfY29kaW5nKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPnVzZV9sZWdhY3lfY29kaW5nPC9TVFJPTkc+IC0gdXNlIHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xvcnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPnVzZV9sZWdhY3lfY29kaW5nKGludDwvU1RST05HPiA8U1RST05HPmxldmVsKTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPEVNPnVzZTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmxlZ2FjeTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmNvZGluZygpPC9FTT4gIGZ1bmN0aW9uICBpcyBhbiBleHRlbnNpb24gdG8gdGhlCiAgICAgICAgY3Vyc2VzIGxpYnJhcnkuICBJdCBhbGxvd3MgdGhlIGNhbGxlciB0byBjaGFuZ2UgdGhlIHJlc3VsdAogICAgICAgIG9mICA8U1RST05HPnVuY3RybDwvU1RST05HPiwgYW5kIHN1cHByZXNzIHJlbGF0ZWQgY2hlY2tzIHdpdGhpbiB0aGUgbGlicmFyeQpAQCAtODIsMTQgKzgyLDE0IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBJZiAgdGhlICBzY3JlZW4gIGhhcyAgbm90ICBiZWVuICBpbml0aWFsaXplZCwgb3IgdGhlIDxFTT5sZXZlbDwvRU0+CiAgICAgICAgcGFyYW1ldGVyIGlzIG91dCBvZiByYW5nZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgPFNUUk9ORz5FUlI8L1NUUk9ORz4uICBPdGgtCiAgICAgICAgZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBwcmV2aW91cyBsZXZlbDogPFNUUk9ORz4wPC9TVFJPTkc+LCA8U1RST05HPjE8L1NUUk9ORz4gb3IgPFNUUk9ORz4yPC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhpcyByb3V0aW5lIGlzIHNwZWNpZmljIHRvIG5jdXJzZXMuICBJdCB3YXMgbm90IHN1cHBvcnRlZAogICAgICAgIG9uIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSBWIGltcGxlbWVudGF0aW9ucy4gIEl0IGlzIHJlYy0KICAgICAgICBvbW1lbmRlZCAgdGhhdCBhbnkgY29kZSBkZXBlbmRpbmcgb24gbmN1cnNlcyBleHRlbnNpb25zIGJlCkBAIC05NywyMiArOTcsMjggQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+dW5jdHJsPC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUjwvSDI+PFBSRT4KLSAgICAgICBUaG9tYXMgRGlja2V5ICh0byBzdXBwb3J0IGx5bngncyBmb250LXN3aXRjaGluZyAgZmVhdHVyZSkuCis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgorICAgICAgIFRob21hcyBEaWNrZXkgKHRvIHN1cHBvcnQgbHlueCdzIGZvbnQtc3dpdGNoaW5nIGZlYXR1cmUpLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJsZWdhY3lfY29kaW5nLjN4Lmh0bWwiPmxlZ2FjeV9jb2RpbmcoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21lbnUuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51LjN4Lmh0bWwKaW5kZXggNGFiOTE5NS4uYTA1ZjA5NSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnUuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWVudS4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzYgKzI3LDM3IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51LjN4LHYgMS4xOSAyMDA2LzExLzA0IDE4OjM4OjI5IHRvbSBFeHAgQAorICAqIEBJZDogbWVudS4zeCx2IDEuMjIgMjAxNC8wOC8xNiAyMDozMjowOCB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5tZW51IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudTwvU1RST05HPiAtIGN1cnNlcyBleHRlbnNpb24gZm9yIHByb2dyYW1taW5nIG1lbnVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5tZW51PC9TVFJPTkc+IGxpYnJhcnkgcHJvdmlkZXMgdGVybWluYWwtaW5kZXBlbmRlbnQgZmFjaWxpdGllcwogICAgICAgIGZvciBjb21wb3NpbmcgbWVudSBzeXN0ZW1zICBvbiAgY2hhcmFjdGVyLWNlbGwgIHRlcm1pbmFscy4KICAgICAgICBUaGUgbGlicmFyeSBpbmNsdWRlczogaXRlbSByb3V0aW5lcywgd2hpY2ggY3JlYXRlIGFuZCBtb2QtCkBAIC03MCw3ICs3MCw5IEBACiAgICAgICAgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGVzZSAgZnVuY3Rpb25zLiAgIFRvICB1c2UgIHRoZSAgPFNUUk9ORz5tZW51PC9TVFJPTkc+CiAgICAgICAgbGlicmFyeSwgbGluayB3aXRoIHRoZSBvcHRpb25zIDxTVFJPTkc+LWxtZW51PC9TVFJPTkc+IDxTVFJPTkc+LWxjdXJzZXM8L1NUUk9ORz4uCiAKLSAgIDxTVFJPTkc+Q3VycmVudDwvU1RST05HPiA8U1RST05HPkRlZmF1bHQ8L1NUUk9ORz4gPFNUUk9ORz5WYWx1ZXM8L1NUUk9ORz4gPFNUUk9ORz5mb3I8L1NUUk9ORz4gPFNUUk9ORz5JdGVtPC9TVFJPTkc+IDxTVFJPTkc+QXR0cmlidXRlczwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DdXJyZW50LURlZmF1bHQtVmFsdWVzLWZvci1JdGVtLUF0dHJpYnV0ZXMiPkN1cnJlbnQgRGVmYXVsdCBWYWx1ZXMgZm9yIEl0ZW0gQXR0cmlidXRlczwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPm1lbnU8L1NUUk9ORz4gIGxpYnJhcnkgIG1haW50YWlucyAgYSAgZGVmYXVsdCAgdmFsdWUgIGZvciBpdGVtCiAgICAgICAgYXR0cmlidXRlcy4gIFlvdSBjYW4gZ2V0IG9yIHNldCB0aGlzICBkZWZhdWx0ICBieSAgY2FsbGluZwogICAgICAgIHRoZSAgYXBwcm9wcmlhdGUgIDxTVFJPTkc+Z2V0XzwvU1RST05HPiAgb3IgIDxTVFJPTkc+c2V0XzwvU1RST05HPiAgcm91dGluZSB3aXRoIGEgPFNUUk9ORz5OVUxMPC9TVFJPTkc+IGl0ZW0KQEAgLTc4LDcgKzgwLDkgQEAKICAgICAgICBhZmZlY3RzICBmdXR1cmUgIGl0ZW0gIGNyZWF0aW9ucywgIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlCiAgICAgICAgcmVuZGVyaW5nIG9mIGl0ZW1zIGFscmVhZHkgY3JlYXRlZC4KIAotICAgPFNUUk9ORz5Sb3V0aW5lPC9TVFJPTkc+IDxTVFJPTkc+TmFtZTwvU1RST05HPiA8U1RST05HPkluZGV4PC9TVFJPTkc+CisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVJvdXRpbmUtTmFtZS1JbmRleCI+Um91dGluZSBOYW1lIEluZGV4PC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIGVhY2ggPFNUUk9ORz5tZW51PC9TVFJPTkc+IHJvdXRpbmUgYW5kICB0aGUgIG5hbWUKICAgICAgICBvZiB0aGUgbWFudWFsIHBhZ2Ugb24gd2hpY2ggaXQgaXMgZGVzY3JpYmVkLgogCkBAIC0xNTIsNyArMTU2LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFJvdXRpbmVzICB0aGF0IHJldHVybiBwb2ludGVycyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLiAgUm91LQogICAgICAgIHRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIG9uZSBvZiAgdGhlICBmb2xsb3dpbmcKICAgICAgICBlcnJvciBjb2RlczoKQEAgLTE5Niw0NiArMjAwLDU1IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IGFuZCByZWxhdGVkIHBhZ2VzIHdob3NlIG5hbWVzIGJlZ2luICJtZW51XyIgZm9yCi0gICAgICAgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCi0KLQotPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlcyA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Jmx0O2V0aS5oJmd0OzwvU1RST05HPi4KIAotICAgICAgIEluICB5b3VyICBsaWJyYXJ5ICBsaXN0LCAgbGlibWVudS5hIHNob3VsZCBiZSBiZWZvcmUgbGlibi0KKyAgICAgICBJbiB5b3VyIGxpYnJhcnkgbGlzdCwgbGlibWVudS5hICBzaG91bGQgIGJlICBiZWZvcmUgIGxpYm4tCiAgICAgICAgY3Vyc2VzLmE7IHRoYXQgaXMsIHlvdSB3YW50IHRvIHNheSBgLWxtZW51IC1sbmN1cnNlcycsIG5vdAotICAgICAgIHRoZSAgb3RoZXIgIHdheSAgYXJvdW5kICAod2hpY2ggd291bGQgdXN1YWxseSBnaXZlIGEgbGluay0KKyAgICAgICB0aGUgb3RoZXIgd2F5IGFyb3VuZCAod2hpY2ggd291bGQgIHVzdWFsbHkgIGdpdmUgIGEgIGxpbmstCiAgICAgICAgZXJyb3IpLgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWICBtZW51ICBsaWJyYXJ5LiAgIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5jdXJzZXMKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yICBuY3Vyc2VzCiAgICAgICAgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IGFuZCByZWxhdGVkIHBhZ2VzIHdob3NlIG5hbWVzIGJlZ2luICJtZW51XyIgZm9yCisgICAgICAgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCisKKyAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA2LjAgKHBhdGNoIDIwMTUwODA4KS4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1DdXJyZW50LURlZmF1bHQtVmFsdWVzLWZvci1JdGVtLUF0dHJpYnV0ZXMiPkN1cnJlbnQgRGVmYXVsdCBWYWx1ZXMgZm9yIEl0ZW0gQXR0cmlidXRlczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Sb3V0aW5lLU5hbWUtSW5kZXgiPlJvdXRpbmUgTmFtZSBJbmRleDwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51X2F0dHJpYnV0ZXMuM3guaHRtbAppbmRleCBkN2MyYzZkLi5hYzMzOGU2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9hdHRyaWJ1dGVzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfYXR0cmlidXRlcy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X2F0dHJpYnV0ZXMuM3gsdiAxLjEwIDIwMDgvMDgvMjMgMTg6MjQ6MjMgdG9tIEV4cCBACisgICogQElkOiBtZW51X2F0dHJpYnV0ZXMuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9hdHRyaWJ1dGVzIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9hdHRyaWJ1dGVzIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5tZW51X2F0dHJpYnV0ZXMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfYXR0cmlidXRlcy4zeC5odG1sIj5tZW51X2F0dHJpYnV0ZXMoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9hdHRyaWJ1dGVzLjN4Lmh0bWwiPm1lbnVfYXR0cmlidXRlcygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5tZW51X2F0dHJpYnV0ZXM8L1NUUk9ORz4gLSBjb2xvciBhbmQgYXR0cmlidXRlIGNvbnRyb2wgZm9yIG1lbnVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X21lbnVfZm9yZShNRU5VICptZW51LCBjaHR5cGUgYXR0cik7CiAgICAgICAgY2h0eXBlIG1lbnVfZm9yZShjb25zdCBNRU5VICptZW51KTsKQEAgLTY1LDcgKzY1LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+c2V0X21lbnVfZm9yZTwvU1RST05HPiBzZXRzIHRoZSBmb3JlZ3JvdW5kIGF0dHJpYnV0ZQogICAgICAgIG9mIDxFTT5tZW51PC9FTT4uIFRoaXMgaXMgdGhlICBoaWdobGlnaHQgIHVzZWQgIGZvciAgc2VsZWN0ZWQgIG1lbnUKICAgICAgICBpdGVtcy4gICA8U1RST05HPm1lbnVfZm9yZTwvU1RST05HPiAgcmV0dXJucyB0aGUgZm9yZWdyb3VuZCBhdHRyaWJ1dGUuICBUaGUKQEAgLTkwLDcgKzkwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCkBAIC0xMDQsMjUgKzEwNCwyNSBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+IGFuZCByZWxhdGVkIHBhZ2VzIHdob3NlIG5hbWVzIGJlZ2luICJtZW51XyIgZm9yCiAgICAgICAgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWICBtZW51ICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xMzAsMTAgKzEzMCwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X2F0dHJpYnV0ZXMuM3guaHRtbCI+bWVudV9hdHRyaWJ1dGVzKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X2N1cnNvci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfY3Vyc29yLjN4Lmh0bWwKaW5kZXggODE1ZGNmNi4uZTVjMjlkZSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnVfY3Vyc29yLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfY3Vyc29yLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzNyArMjcsMzggQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfY3Vyc29yLjN4LHYgMS42IDIwMDYvMTEvMDQgMTc6MTM6NTcgdG9tIEV4cCBACisgICogQElkOiBtZW51X2N1cnNvci4zeCx2IDEuOCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1lbnVfY3Vyc29yIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9jdXJzb3IgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1lbnVfY3Vyc29yIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtZW51X2N1cnNvci4zeC5odG1sIj5tZW51X2N1cnNvcigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfY3Vyc29yLjN4Lmh0bWwiPm1lbnVfY3Vyc29yKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1lbnVfY3Vyc29yPC9TVFJPTkc+IC0gcG9zaXRpb24gYSBtZW51J3MgY3Vyc29yCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgcG9zX21lbnVfY3Vyc29yKGNvbnN0IE1FTlUgKm1lbnUpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5wb3NfbWVudV9jdXJzb3I8L1NUUk9ORz4gIHJlc3RvcmVzIHRoZSBjdXJzb3IgdG8gdGhlCiAgICAgICAgY3VycmVudCBwb3NpdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbnUncyBzZWxlY3RlZCBpdGVtLgogICAgICAgIFRoaXMgIGlzICB1c2VmdWwgYWZ0ZXIgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gcm91dGluZXMgaGF2ZSBiZWVuIGNhbGxlZCB0bwpAQCAtNjYsNyArNjYsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhpcyByb3V0aW5lIHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKICAgICAgICA8U1RST05HPkVfT0s8L1NUUk9ORz4gVGhlIHJvdXRpbmUgc3VjY2VlZGVkLgpAQCAtODMsMjQgKzgzLDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWICBtZW51ICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xMDgsMTAgKzEwOCwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9jdXJzb3IuM3guaHRtbCI+bWVudV9jdXJzb3IoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21lbnVfZHJpdmVyLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vbWVudV9kcml2ZXIuM3guaHRtbAppbmRleCBjNTkyNjk5Li43ZGU1ZWJhIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9kcml2ZXIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWVudV9kcml2ZXIuM3guaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNTIgKzI2LDUzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X2RyaXZlci4zeCx2IDEuMTUgMjAwOC8wNi8yMSAyMTo1NTozMCB0b20gRXhwIEAKKyAgKiBASWQ6IG1lbnVfZHJpdmVyLjN4LHYgMS4yMCAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1lbnVfZHJpdmVyIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9kcml2ZXIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1lbnVfZHJpdmVyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtZW51X2RyaXZlci4zeC5odG1sIj5tZW51X2RyaXZlcigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfZHJpdmVyLjN4Lmh0bWwiPm1lbnVfZHJpdmVyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1lbnVfZHJpdmVyPC9TVFJPTkc+IC0gY29tbWFuZC1wcm9jZXNzaW5nIGxvb3Agb2YgdGhlIG1lbnUgc3lzdGVtCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgbWVudV9kcml2ZXIoTUVOVSAqbWVudSwgaW50IGMpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgT25jZSBhIG1lbnUgaGFzIGJlZW4gcG9zdGVkIChkaXNwbGF5ZWQpLCB5b3Ugc2hvdWxkIGZ1bm5lbAogICAgICAgIGlucHV0IGV2ZW50cyB0byBpdCB0aHJvdWdoIDxTVFJPTkc+bWVudV9kcml2ZXI8L1NUUk9ORz4uICBUaGlzIHJvdXRpbmUgIGhhcwogICAgICAgIHRocmVlIG1ham9yIGlucHV0IGNhc2VzOgogCi0gICAgICAgLSAgVGhlICBpbnB1dCAgaXMgIGEgIGZvcm0gbmF2aWdhdGlvbiByZXF1ZXN0LiAgTmF2aWdhdGlvbgotICAgICAgICAgIHJlcXVlc3QgY29kZXMgYXJlIGNvbnN0YW50cyBkZWZpbmVkIGluIDxTVFJPTkc+Jmx0O2Zvcm0uaCZndDs8L1NUUk9ORz4sICB3aGljaAotICAgICAgICAgIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBrZXktIGFuZCBjaGFyYWN0ZXIgY29kZXMgcmV0dXJuZWQKLSAgICAgICAgICBieSA8U1RST05HPndnZXRjaDwvU1RST05HPi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgIGlucHV0ICBpcyAgYSBmb3JtIG5hdmlnYXRpb24gcmVxdWVzdC4gIE5hdmlnYXRpb24KKyAgICAgICAgICAgcmVxdWVzdCBjb2RlcyBhcmUgY29uc3RhbnRzIGRlZmluZWQgaW4gPFNUUk9ORz4mbHQ7Zm9ybS5oJmd0OzwvU1RST05HPiwgd2hpY2gKKyAgICAgICAgICAgYXJlICAgZGlzdGluY3QgIGZyb20gIHRoZSAga2V5LSAgYW5kICBjaGFyYWN0ZXIgIGNvZGVzCisgICAgICAgICAgIHJldHVybmVkIGJ5IDxTVFJPTkc+d2dldGNoPC9TVFJPTkc+LgogCi0gICAgICAgLSAgVGhlIGlucHV0IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4gIFByaW50YWJsZSAgY2hhcmFjLQotICAgICAgICAgIHRlcnMgICh3aGljaCAgbXVzdCAgYmUgIHBvc2l0aXZlLCAgbGVzcyAgdGhhbiAgMjU2KSBhcmUKLSAgICAgICAgICBjaGVja2VkIGFjY29yZGluZyB0byB0aGUgcHJvZ3JhbSdzIGxvY2FsZSBzZXR0aW5ncy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgaW5wdXQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyLiAgUHJpbnRhYmxlIGNoYXJhYy0KKyAgICAgICAgICAgdGVycyAgKHdoaWNoICBtdXN0ICBiZSAgcG9zaXRpdmUsICBsZXNzICB0aGFuIDI1NikgYXJlCisgICAgICAgICAgIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9ncmFtJ3MgbG9jYWxlIHNldHRpbmdzLgogCi0gICAgICAgLSAgVGhlIGlucHV0IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCBrZXkgYXNzb2NpYXRlZCAgd2l0aAotICAgICAgICAgIGFuIG1vdXNlIGV2ZW50LgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSBpbnB1dCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5IGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAgICBhbiBtb3VzZSBldmVudC4KIAogICAgICAgIFRoZSBtZW51IGRyaXZlciByZXF1ZXN0cyBhcmUgYXMgZm9sbG93czoKIApAQCAtMTE5LDggKzExOSw4IEBACiAgICAgICAgICAgICBDbGVhciB0aGUgbWVudSBwYXR0ZXJuIGJ1ZmZlci4KIAogICAgICAgIFJFUV9CQUNLX1BBVFRFUk4KLSAgICAgICAgICAgIERlbGV0ZSAgIHRoZSAgcHJldmlvdXMgIGNoYXJhY3RlciAgZnJvbSAgdGhlICBwYXR0ZXJuCi0gICAgICAgICAgICBidWZmZXIuCisgICAgICAgICAgICBEZWxldGUgIHRoZSAgcHJldmlvdXMgY2hhcmFjdGVyIGZyb20gdGhlIHBhdHRlcm4gYnVmLQorICAgICAgICAgICAgZmVyLgogCiAgICAgICAgUkVRX05FWFRfTUFUQ0gKICAgICAgICAgICAgIE1vdmUgdG8gdGhlIG5leHQgaXRlbSBtYXRjaGluZyB0aGUgcGF0dGVybiBtYXRjaC4KQEAgLTEyOCw1OSArMTI4LDYzIEBACiAgICAgICAgUkVRX1BSRVZfTUFUQ0gKICAgICAgICAgICAgIE1vdmUgdG8gdGhlIHByZXZpb3VzIGl0ZW0gbWF0Y2hpbmcgdGhlIHBhdHRlcm4gbWF0Y2guCiAKLSAgICAgICBJZiAgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIsIHRoZSBjb2RlCi0gICAgICAgYXBwZW5kcyBpdCB0byB0aGUgcGF0dGVybiBidWZmZXIgYW5kIGF0dGVtcHRzIHRvICBtb3ZlICB0bwotICAgICAgIHRoZSAgbmV4dCAgaXRlbSAgbWF0Y2hpbmcgdGhlIG5ldyBwYXR0ZXJuLiAgSWYgdGhlcmUgaXMgbm8KKyAgICAgICBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3RlciwgdGhlICBjb2RlCisgICAgICAgYXBwZW5kcyAgaXQgIHRvIHRoZSBwYXR0ZXJuIGJ1ZmZlciBhbmQgYXR0ZW1wdHMgdG8gbW92ZSB0bworICAgICAgIHRoZSBuZXh0IGl0ZW0gbWF0Y2hpbmcgdGhlIG5ldyBwYXR0ZXJuLiAgSWYgIHRoZXJlICBpcyAgbm8KICAgICAgICBzdWNoIG1hdGNoLCA8U1RST05HPm1lbnVfZHJpdmVyPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FX05PX01BVENIPC9TVFJPTkc+IGFuZCBkZWxldGVzIHRoZQogICAgICAgIGFwcGVuZGVkIGNoYXJhY3RlciBmcm9tIHRoZSBidWZmZXIuCiAKLSAgICAgICBJZiAgdGhlICBzZWNvbmQgIGFyZ3VtZW50ICBpcyBvbmUgb2YgdGhlIGFib3ZlIHByZS1kZWZpbmVkCisgICAgICAgSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBvbmUgIG9mICB0aGUgIGFib3ZlICBwcmUtZGVmaW5lZAogICAgICAgIHJlcXVlc3RzLCB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb24gaXMgcGVyZm9ybWVkLgogCi0gICA8U1RST05HPk1PVVNFPC9TVFJPTkc+IDxTVFJPTkc+SEFORExJTkc8L1NUUk9ORz4KLSAgICAgICBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCAga2V5LCAgdGhlCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU1PVVNFLUhBTkRMSU5HIj5NT1VTRSBIQU5ETElORzwvYT48L0gzPjxQUkU+CisgICAgICAgSWYgIHRoZSAgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCBrZXksIHRoZQogICAgICAgIGFzc29jaWF0ZWQgbW91c2UgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIG9uZSBvZiB0aGUgYWJvdmUKLSAgICAgICBwcmUtZGVmaW5lZCByZXF1ZXN0cy4gIEN1cnJlbnRseSBvbmx5IGNsaWNrcyBpbiAgdGhlICB1c2VyCi0gICAgICAgd2luZG93ICAoZS5nLiAgaW5zaWRlIHRoZSBtZW51IGRpc3BsYXkgYXJlYSBvciB0aGUgZGVjb3JhLQorICAgICAgIHByZS1kZWZpbmVkICByZXF1ZXN0cy4gICBDdXJyZW50bHkgb25seSBjbGlja3MgaW4gdGhlIHVzZXIKKyAgICAgICB3aW5kb3cgKGUuZy4sIGluc2lkZSB0aGUgbWVudSBkaXNwbGF5IGFyZWEgb3IgdGhlICBkZWNvcmEtCiAgICAgICAgdGlvbiB3aW5kb3cpIGFyZSBoYW5kbGVkLgogCiAgICAgICAgSWYgeW91IGNsaWNrIGFib3ZlIHRoZSBkaXNwbGF5IHJlZ2lvbiBvZiB0aGUgbWVudToKIAotICAgICAgICAgICAgICBhIFJFUV9TQ1JfVUxJTkUgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIFJFUV9TQ1JfVUxJTkUgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKIAotICAgICAgICAgICAgICBhIFJFUV9TQ1JfVVBBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIFJFUV9TQ1JfVVBBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKIAotICAgICAgICAgICAgICBhIFJFUV9GSVJTVF9JVEVNIGlzIGdlbmVyYXRlZCBmb3IgYSB0cmlwbGUtY2xpY2suCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYSBSRVFfRklSU1RfSVRFTSBpcyBnZW5lcmF0ZWQgZm9yIGEgdHJpcGxlLWNsaWNrLgogCiAgICAgICAgSWYgeW91IGNsaWNrIGJlbG93IHRoZSBkaXNwbGF5IHJlZ2lvbiBvZiB0aGUgbWVudToKIAotICAgICAgICAgICAgICBhIFJFUV9TQ1JfRExJTkUgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIFJFUV9TQ1JfRExJTkUgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKIAotICAgICAgICAgICAgICBhIFJFUV9TQ1JfRFBBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIFJFUV9TQ1JfRFBBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKIAotICAgICAgICAgICAgICBhIFJFUV9MQVNUX0lURU0gaXMgZ2VuZXJhdGVkIGZvciBhIHRyaXBsZS1jbGljay4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhIFJFUV9MQVNUX0lURU0gaXMgZ2VuZXJhdGVkIGZvciBhIHRyaXBsZS1jbGljay4KIAotICAgICAgIElmIHlvdSBjbGljayBhdCBhbiBpdGVtIGluc2lkZSB0aGUgIGRpc3BsYXkgIGFyZWEgIG9mICB0aGUKKyAgICAgICBJZiAgeW91ICBjbGljayAgYXQgIGFuIGl0ZW0gaW5zaWRlIHRoZSBkaXNwbGF5IGFyZWEgb2YgdGhlCiAgICAgICAgbWVudToKIAotICAgICAgICAgICAgICAtICB0aGUgbWVudSBjdXJzb3IgaXMgcG9zaXRpb25lZCB0byB0aGF0IGl0ZW0uCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgdGhlIG1lbnUgY3Vyc29yIGlzIHBvc2l0aW9uZWQgdG8gdGhhdCBpdGVtLgogCi0gICAgICAgICAgICAgIC0gIElmIHlvdSBkb3VibGUtY2xpY2sgYW4gaXRlbSBhIFJFUV9UT0dHTEVfSVRFTSBpcwotICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgIGFuZCAgPFNUUk9ORz5FX1VOS05PV05fQ09NTUFORDwvU1RST05HPiAgaXMgIHJldHVybmVkLgotICAgICAgICAgICAgICAgICBUaGlzICByZXR1cm4gdmFsdWUgbWFrZXMgc2Vuc2UsIGJlY2F1c2UgYSBkb3VibGUKLSAgICAgICAgICAgICAgICAgY2xpY2sgdXN1YWxseSBtZWFucyB0aGF0IGFuIGl0ZW0tc3BlY2lmaWMgYWN0aW9uCi0gICAgICAgICAgICAgICAgIHNob3VsZCAgYmUgIHJldHVybmVkLiAgSXQgaXMgZXhhY3RseSB0aGUgcHVycG9zZQotICAgICAgICAgICAgICAgICBvZiB0aGlzIHJldHVybiB2YWx1ZSB0byBzaWduYWwgdGhhdCBhbiAgYXBwbGljYS0KLSAgICAgICAgICAgICAgICAgdGlvbiBzcGVjaWZpYyBjb21tYW5kIHNob3VsZCBiZSBleGVjdXRlZC4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiB5b3UgZG91YmxlLWNsaWNrIGFuIGl0ZW0gYSBSRVFfVE9HR0xFX0lURU0gaXMgIGdlbi0KKyAgICAgICAgICAgZXJhdGVkIGFuZCA8U1RST05HPkVfVU5LTk9XTl9DT01NQU5EPC9TVFJPTkc+IGlzIHJldHVybmVkLiAgVGhpcyByZXR1cm4KKyAgICAgICAgICAgdmFsdWUgbWFrZXMgc2Vuc2UsICBiZWNhdXNlICBhICBkb3VibGUgIGNsaWNrICB1c3VhbGx5CisgICAgICAgICAgIG1lYW5zIHRoYXQgYW4gaXRlbS1zcGVjaWZpYyBhY3Rpb24gc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICAgICBJdCBpcyBleGFjdGx5IHRoZSBwdXJwb3NlIG9mIHRoaXMgcmV0dXJuIHZhbHVlIHRvIHNpZy0KKyAgICAgICAgICAgbmFsICB0aGF0ICBhbiAgYXBwbGljYXRpb24gIHNwZWNpZmljIGNvbW1hbmQgc2hvdWxkIGJlCisgICAgICAgICAgIGV4ZWN1dGVkLgogCi0gICAgICAgICAgICAgIC0gIElmICBhICB0cmFuc2xhdGlvbiAgaW50byAgYSAgcmVxdWVzdCAgd2FzICBkb25lLAotICAgICAgICAgICAgICAgICA8U1RST05HPm1lbnVfZHJpdmVyPC9TVFJPTkc+IHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzICByZXF1ZXN0LgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIElmIGEgdHJhbnNsYXRpb24gaW50byBhIHJlcXVlc3Qgd2FzIGRvbmUsICA8U1RST05HPm1lbnVfZHJpdmVyPC9TVFJPTkc+CisgICAgICAgICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuCiAKICAgICAgICBJZiAgeW91IGNsaWNrZWQgb3V0c2lkZSB0aGUgdXNlciB3aW5kb3cgb3IgdGhlIG1vdXNlIGV2ZW50CiAgICAgICAgY291bGQgIG5vdCAgYmUgIHRyYW5zbGF0ZWQgIGludG8gICBhICAgbWVudSAgIHJlcXVlc3QgICBhbgogICAgICAgIDxTVFJPTkc+RV9SRVFVRVNUX0RFTklFRDwvU1RST05HPiBpcyByZXR1cm5lZC4KIAotICAgPFNUUk9ORz5BUFBMSUNBVElPTi1ERUZJTkVEPC9TVFJPTkc+IDxTVFJPTkc+Q09NTUFORFM8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQVBQTElDQVRJT04tREVGSU5FRC1DT01NQU5EUyI+QVBQTElDQVRJT04tREVGSU5FRCBDT01NQU5EUzwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWl0aGVyIHByaW50YWJsZSBub3Igb25lIG9mIHRoZQogICAgICAgIGFib3ZlIHByZS1kZWZpbmVkIG1lbnUgcmVxdWVzdHMgb3IgIEtFWV9NT1VTRSwgIHRoZSAgZHJpdmUKICAgICAgICBhc3N1bWVzICBpdCBpcyBhbiBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjb21tYW5kIGFuZCByZXR1cm5zCkBAIC0xOTAsNyArMTk0LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9kcml2ZXI8L1NUUk9ORz4gcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGVycm9yIGNvZGVzOgogCiAgICAgICAgPFNUUk9ORz5FX09LPC9TVFJPTkc+IFRoZSByb3V0aW5lIHN1Y2NlZWRlZC4KQEAgLTIyMCwyNSArMjI0LDI1IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9IndnZXRjaC4zeC5odG1sIj53Z2V0Y2goM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGVzIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4gVGhlICBzdXAtCiAgICAgICAgcG9ydCBmb3IgbW91c2UgZXZlbnRzIGlzIG5jdXJzZXMgc3BlY2lmaWMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMjQ2LDEwICsyNTAsMjIgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfZHJpdmVyLjN4Lmh0bWwiPm1lbnVfZHJpdmVyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMy1NT1VTRS1IQU5ETElORyI+TU9VU0UgSEFORExJTkc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQVBQTElDQVRJT04tREVGSU5FRC1DT01NQU5EUyI+QVBQTElDQVRJT04tREVGSU5FRCBDT01NQU5EUzwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X2Zvcm1hdC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfZm9ybWF0LjN4Lmh0bWwKaW5kZXggNzdiNzNjNi4uM2U4YWRiYyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnVfZm9ybWF0LjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfZm9ybWF0LjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOCArMjcsMzkgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfZm9ybWF0LjN4LHYgMS4xMCAyMDA2LzExLzA0IDE3OjEyOjAwIHRvbSBFeHAgQAorICAqIEBJZDogbWVudV9mb3JtYXQuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9mb3JtYXQgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5tZW51X2Zvcm1hdCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudV9mb3JtYXQgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfZm9ybWF0LjN4Lmh0bWwiPm1lbnVfZm9ybWF0KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9mb3JtYXQuM3guaHRtbCI+bWVudV9mb3JtYXQoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9mb3JtYXQ8L1NUUk9ORz4gLSBzZXQgYW5kIGdldCBtZW51IHNpemVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X21lbnVfZm9ybWF0KE1FTlUgKm1lbnUsIGludCByb3dzLCBpbnQgY29scyk7CiAgICAgICAgdm9pZCBtZW51X2Zvcm1hdChjb25zdCBNRU5VICptZW51LCBpbnQgKnJvd3MsIGludCAqY29scyk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfbWVudV9mb3JtYXQ8L1NUUk9ORz4gc2V0cyB0aGUgbWF4aW11bSBkaXNwbGF5IHNpemUKICAgICAgICBvZiB0aGUgZ2l2ZW4gbWVudS4gIElmIHRoaXMgc2l6ZSBpcyB0b28gc21hbGwgIHRvICBkaXNwbGF5CiAgICAgICAgYWxsICBtZW51IGl0ZW1zLCB0aGUgbWVudSB3aWxsIGJlIG1hZGUgc2Nyb2xsYWJsZS4gSWYgdGhpcwpAQCAtNzksNyArNzksNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgcmV0dXJucyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCkBAIC05OSwyNCArOTksMjQgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgIG1lbnUgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEyNCwxMCArMTI0LDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X2Zvcm1hdC4zeC5odG1sIj5tZW51X2Zvcm1hdCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWVudV9ob29rLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vbWVudV9ob29rLjN4Lmh0bWwKaW5kZXggOTVhZGRmNC4uMDAxNDhmNyAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnVfaG9vay4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9tZW51X2hvb2suM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDMyICsyNywzMyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWVudV9ob29rLjN4LHYgMS45IDIwMDcvMDIvMjQgMTc6MzQ6MDggdG9tIEV4cCBACisgICogQElkOiBtZW51X2hvb2suM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9ob29rIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9ob29rIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5tZW51X2hvb2sgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfaG9vay4zeC5odG1sIj5tZW51X2hvb2soM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaG9vaygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5tZW51X2hvb2s8L1NUUk9ORz4gLSBzZXQgaG9va3MgZm9yIGF1dG9tYXRpYyBpbnZvY2F0aW9uIGJ5IGFwcGxpY2EtCiAgICAgICAgdGlvbnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfaXRlbV9pbml0KE1FTlUgKm1lbnUsIE1lbnVfSG9vayBmdW5jKTsKICAgICAgICBNZW51X0hvb2sgaXRlbV9pbml0KGNvbnN0IE1FTlUgKm1lbnUpOwpAQCAtNjYsNyArNjYsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgZnVuY3Rpb25zIG1ha2UgaXQgcG9zc2libGUgdG8gc2V0IGhvb2sgZnVuY3Rpb25zICB0bwogICAgICAgIGJlIGNhbGxlZCBhdCB2YXJpb3VzIHBvaW50cyBpbiB0aGUgYXV0b21hdGljIHByb2Nlc3Npbmcgb2YKICAgICAgICBpbnB1dCBldmVudCBjb2RlcyBieSA8U1RST05HPm1lbnVfZHJpdmVyPC9TVFJPTkc+LgpAQCAtOTMsNyArOTMsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgUm91dGluZXMgdGhhdCByZXR1cm4gcG9pbnRlcnMgcmV0dXJuIDxTVFJPTkc+TlVMTDwvU1RST05HPiBvbiBlcnJvci4gIE90aGVyCiAgICAgICAgcm91dGluZXMgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCkBAIC0xMDQsMjQgKzEwNCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTI5LDEwICsxMjksMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9ob29rLjN4Lmh0bWwiPm1lbnVfaG9vaygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWVudV9pdGVtcy4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfaXRlbXMuM3guaHRtbAppbmRleCBhZDYwOWY4Li5mYzU2YTg3IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9pdGVtcy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9tZW51X2l0ZW1zLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMiArMjcsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfaXRlbXMuM3gsdiAxLjcgMjAwNi8xMS8wNCAxODozNTozMSB0b20gRXhwIEAKKyAgKiBASWQ6IG1lbnVfaXRlbXMuM3gsdiAxLjEwIDIwMTIvMTEvMDMgMjM6MDM6NTkgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9pdGVtcyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1lbnVfaXRlbXMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1lbnVfaXRlbXMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfaXRlbXMuM3guaHRtbCI+bWVudV9pdGVtcygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1lbnVfaXRlbXM8L1NUUk9ORz4gIC0gbWFrZSBhbmQgYnJlYWsgY29ubmVjdGlvbnMgYmV0d2VlbiBpdGVtcyBhbmQKICAgICAgICBtZW51cwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9tZW51X2l0ZW1zKE1FTlUgKm1lbnUsIElURU0gKippdGVtcyk7CiAgICAgICAgSVRFTSAqKm1lbnVfaXRlbXMoY29uc3QgTUVOVSAqbWVudSk7CkBAIC02MSw3ICs2MSw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfbWVudV9pdGVtczwvU1RST05HPiBjaGFuZ2VzIHRoZSBpdGVtIHBvaW50ZXIgYXJyYXkKICAgICAgICBvZiAgdGhlICBnaXZlbiAgPEVNPm1lbnU8L0VNPi4gICBUaGUgIGFycmF5IG11c3QgYmUgdGVybWluYXRlZCBieSBhCiAgICAgICAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+LgpAQCAtNzQsNyArNzQsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPm1lbnVfaXRlbXM8L1NUUk9ORz4gcmV0dXJucyBhIHBvaW50ZXIgICh3aGljaCAgbWF5ICBiZQogICAgICAgIDxTVFJPTkc+TlVMTDwvU1RST05HPikuICBJdCBkb2VzIG5vdCBzZXQgZXJybm8uCiAKQEAgLTEwMSwzOCArMTAxLDQ1IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogICAgICAgIFRoZSAgU1ZyNCAgbWVudSAgbGlicmFyeSAgIGRvY3VtZW50YXRpb24gICBzcGVjaWZpZXMgICB0aGUKLSAgICAgICA8U1RST05HPml0ZW1fY291bnQ8L1NUUk9ORz4gIGVycm9yIHZhbHVlIGFzIC0xICh3aGljaCBpcyB0aGUgdmFsdWUgb2YgPFNUUk9ORz5FUlI8L1NUUk9ORz4pLgorICAgICAgIDxTVFJPTkc+aXRlbV9jb3VudDwvU1RST05HPiBlcnJvciB2YWx1ZSBhcyAtMSAod2hpY2ggaXMgdGhlIHZhbHVlIG9mIDxTVFJPTkc+RVJSPC9TVFJPTkc+KS4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9pdGVtcy4zeC5odG1sIj5tZW51X2l0ZW1zKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X21hcmsuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51X21hcmsuM3guaHRtbAppbmRleCA2OTI5OTYzLi5iMGU2NzhjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9tYXJrLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfbWFyay4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzggKzI3LDM5IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X21hcmsuM3gsdiAxLjkgMjAwNi8xMS8wNCAxODozMzoxOCB0b20gRXhwIEAKKyAgKiBASWQ6IG1lbnVfbWFyay4zeCx2IDEuMTEgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5tZW51X21hcmsgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5tZW51X21hcmsgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1lbnVfbWFyayAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyaygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X21hcmsuM3guaHRtbCI+bWVudV9tYXJrKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1lbnVfbWFyazwvU1RST05HPiAtIGdldCBhbmQgc2V0IHRoZSBtZW51IG1hcmsgc3RyaW5nCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X21lbnVfbWFyayhNRU5VICptZW51LCBjb25zdCBjaGFyICptYXJrKTsKICAgICAgICBjb25zdCBjaGFyICptZW51X21hcmsoY29uc3QgTUVOVSAqbWVudSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBJbiAgb3JkZXIgIHRvIG1ha2UgbWVudSBzZWxlY3Rpb25zIHZpc2libGUgb24gb2xkZXIgdGVybWktCiAgICAgICAgbmFscyB3aXRob3V0IGhpZ2hsaWdodGluZyBvciBjb2xvciAgY2FwYWJpbGl0eSwgIHRoZSAgbWVudQogICAgICAgIGxpYnJhcnkgIG1hcmtzICBzZWxlY3RlZCAgaXRlbXMgIGluICBhICBtZW51IHdpdGggYSBwcmVmaXgKQEAgLTc5LDcgKzc5LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPm1lbnVfbWFyazwvU1RST05HPiByZXR1cm5zIGEgIHBvaW50ZXIgICh3aGljaCAgbWF5ICBiZQogICAgICAgIDxTVFJPTkc+TlVMTDwvU1RST05HPikuICBJdCBkb2VzIG5vdCBzZXQgZXJybm8uCiAKQEAgLTk3LDI0ICs5NywyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTIyLDEwICsxMjIsMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9tYXJrLjN4Lmh0bWwiPm1lbnVfbWFyaygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWVudV9uZXcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51X25ldy4zeC5odG1sCmluZGV4IGM4ZmRkZTcuLjFiZDkwNzUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9tZW51X25ldy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9tZW51X25ldy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzggKzI3LDM5IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X25ldy4zeCx2IDEuOSAyMDA2LzExLzA0IDE4OjMxOjM3IHRvbSBFeHAgQAorICAqIEBJZDogbWVudV9uZXcuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9uZXcgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5tZW51X25ldyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudV9uZXcgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfbmV3LjN4Lmh0bWwiPm1lbnVfbmV3KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9uZXcuM3guaHRtbCI+bWVudV9uZXcoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9uZXc8L1NUUk9ORz4gLSBjcmVhdGUgYW5kIGRlc3Ryb3kgbWVudXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIE1FTlUgKm5ld19tZW51KElURU0gKippdGVtcyk7CiAgICAgICAgaW50IGZyZWVfbWVudShNRU5VICptZW51KTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+bmV3X21lbnU8L1NUUk9ORz4gIGNyZWF0ZXMgYSBuZXcgbWVudSBjb25uZWN0ZWQgdG8gYQogICAgICAgIHNwZWNpZmllZCBpdGVtIHBvaW50ZXIgYXJyYXkgKHdoaWNoICBtdXN0ICBiZSAgPFNUUk9ORz5OVUxMPC9TVFJPTkc+LXRlcm1pLQogICAgICAgIG5hdGVkKS4KQEAgLTY5LDcgKzY5LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPm5ld19tZW51PC9TVFJPTkc+IHJldHVybnMgIDxTVFJPTkc+TlVMTDwvU1RST05HPiAgb24gIGVycm9yLiAgIEl0ICBzZXRzCiAgICAgICAgZXJybm8gYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbidzIGZhaWx1cmU6CiAKQEAgLTk1LDI0ICs5NSwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgIHRoZSBTeXN0ZW0gViBtZW51IGxpYnJhcnkuICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTIwLDEwICsxMjAsMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfbmV3LjN4Lmh0bWwiPm1lbnVfbmV3KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X29wdHMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51X29wdHMuM3guaHRtbAppbmRleCAzZmI5NjcwLi5kNjFjOWQ2IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9vcHRzLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfb3B0cy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X29wdHMuM3gsdiAxLjEwIDIwMDcvMDIvMjQgMTc6MzM6NTkgdG9tIEV4cCBACisgICogQElkOiBtZW51X29wdHMuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9vcHRzIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9vcHRzIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5tZW51X29wdHMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cygzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5tZW51X29wdHM8L1NUUk9ORz4gLSBzZXQgYW5kIGdldCBtZW51IG9wdGlvbnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfbWVudV9vcHRzKE1FTlUgKm1lbnUsIE1lbnVfT3B0aW9ucyBvcHRzKTsKICAgICAgICBpbnQgbWVudV9vcHRzX29uKE1FTlUgKm1lbnUsIE1lbnVfT3B0aW9ucyBvcHRzKTsKQEAgLTYxLDcgKzYxLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+c2V0X21lbnVfb3B0czwvU1RST05HPiAgc2V0cyAgYWxsICB0aGUgIGdpdmVuIG1lbnUncwogICAgICAgIG9wdGlvbiBiaXRzICAobWVudSAgb3B0aW9uICBiaXRzICBtYXkgIGJlICBsb2dpY2FsbHktT1InZWQKICAgICAgICB0b2dldGhlcikuCkBAIC05MSwxNiArOTEsMTYgQEAKICAgICAgICAgICAgIElnbm9yZSB0aGUgY2FzZSB3aGVuIHBhdHRlcm4tbWF0Y2hpbmcuCiAKICAgICAgICBPX1NIT1dNQVRDSAotICAgICAgICAgICAgTW92ZSB0aGUgY3Vyc29yIHRvIHdpdGhpbiB0aGUgaXRlbSAgbmFtZSAgd2hpbGUgIHBhdC0KKyAgICAgICAgICAgIE1vdmUgIHRoZSAgY3Vyc29yICB0byB3aXRoaW4gdGhlIGl0ZW0gbmFtZSB3aGlsZSBwYXQtCiAgICAgICAgICAgICB0ZXJuLW1hdGNoaW5nLgogCiAgICAgICAgT19OT05DWUNMSUMKLSAgICAgICAgICAgIERvbid0ICAgd3JhcCAgIGFyb3VuZCAgbmV4dC1pdGVtICBhbmQgIHByZXZpb3VzLWl0ZW0sCisgICAgICAgICAgICBEb24ndCAgd3JhcCAgYXJvdW5kICBuZXh0LWl0ZW0gICBhbmQgICBwcmV2aW91cy1pdGVtLAogICAgICAgICAgICAgcmVxdWVzdHMgdG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgbWVudS4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEV4Y2VwdCBmb3IgPFNUUk9ORz5tZW51X29wdHM8L1NUUk9ORz4sIGVhY2ggcm91dGluZSByZXR1cm5zIG9uZSBvZiB0aGUgZm9sLQogICAgICAgIGxvd2luZzoKIApAQCAtMTE0LDM1ICsxMTQsNDIgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgotICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWICBtZW51ICBsaWJyYXJ5LiAgIFRoZXkKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfb3B0cy4zeC5odG1sIj5tZW51X29wdHMoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21lbnVfcGF0dGVybi4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfcGF0dGVybi4zeC5odG1sCmluZGV4IDAzNDVjNTYuLjk5N2JlMGMgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9tZW51X3BhdHRlcm4uM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWVudV9wYXR0ZXJuLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM4ICsyNiwzOSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWVudV9wYXR0ZXJuLjN4LHYgMS4xMSAyMDA4LzA2LzIxIDIxOjU4OjIwIHRvbSBFeHAgQAorICAqIEBJZDogbWVudV9wYXR0ZXJuLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1lbnVfcGF0dGVybiAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1lbnVfcGF0dGVybiAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudV9wYXR0ZXJuIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtZW51X3BhdHRlcm4uM3guaHRtbCI+bWVudV9wYXR0ZXJuKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfcGF0dGVybi4zeC5odG1sIj5tZW51X3BhdHRlcm4oM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9wYXR0ZXJuPC9TVFJPTkc+IC0gZ2V0IGFuZCBzZXQgYSBtZW51J3MgcGF0dGVybiBidWZmZXIKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfbWVudV9wYXR0ZXJuKE1FTlUgKm1lbnUsIGNvbnN0IGNoYXIgKnBhdHRlcm4pOwogICAgICAgIGNoYXIgKm1lbnVfcGF0dGVybihjb25zdCBNRU5VICptZW51KTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIEV2ZXJ5ICBtZW51ICBoYXMgIGFuICBhc3NvY2lhdGVkIHBhdHRlcm4gbWF0Y2ggYnVmZmVyLiAgQXMKICAgICAgICBpbnB1dCBldmVudHMgdGhhdCBhcmUgcHJpbnRhYmxlIGNoYXJhY3RlcnMgY29tZSAgaW4sICB0aGV5CiAgICAgICAgYXJlICBhcHBlbmRlZCB0byB0aGlzIG1hdGNoIGJ1ZmZlciBhbmQgdGVzdGVkIGZvciBhIG1hdGNoLApAQCAtNzQsNyArNzQsNyBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGZ1bmN0aW9uIDxTVFJPTkc+bWVudV9wYXR0ZXJuPC9TVFJPTkc+IHJldHVybnMgYSBwb2ludGVyLCB3aGljaCBpcyA8U1RST05HPk5VTEw8L1NUUk9ORz4KICAgICAgICBpZiB0aGUgPEVNPm1lbnU8L0VNPiBwYXJhbWV0ZXIgaXMgPFNUUk9ORz5OVUxMPC9TVFJPTkc+LiAgT3RoZXJ3aXNlLCBpdCBpcyBhIHBvaW50ZXIKICAgICAgICB0byBhIHN0cmluZyB3aGljaCBpcyBlbXB0eSBpZiBubyBwYXR0ZXJuIGhhcyBiZWVuIHNldC4gIEl0CkBAIC0xMDQsMjQgKzEwNCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgIHRoZSBTeXN0ZW0gViBtZW51IGxpYnJhcnkuICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTI5LDEwICsxMjksMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9wYXR0ZXJuLjN4Lmh0bWwiPm1lbnVfcGF0dGVybigzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWVudV9wb3N0LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vbWVudV9wb3N0LjN4Lmh0bWwKaW5kZXggODQwNTViZS4uYWUyNzViZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnVfcG9zdC4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9tZW51X3Bvc3QuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDM5ICsyNyw0MCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWVudV9wb3N0LjN4LHYgMS45IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCBACisgICogQElkOiBtZW51X3Bvc3QuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWVudV9wb3N0IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9wb3N0IDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5tZW51X3Bvc3QgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1lbnVfcG9zdC4zeC5odG1sIj5tZW51X3Bvc3QoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9wb3N0LjN4Lmh0bWwiPm1lbnVfcG9zdCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5tZW51X3Bvc3Q8L1NUUk9ORz4gIC0gIHdyaXRlIG9yIGVyYXNlIG1lbnVzIGZyb20gYXNzb2NpYXRlZCBzdWJ3aW4tCiAgICAgICAgZG93cwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHBvc3RfbWVudShNRU5VICptZW51KTsKICAgICAgICBpbnQgdW5wb3N0X21lbnUoTUVOVSAqbWVudSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5wb3N0X21lbnU8L1NUUk9ORz4gZGlzcGxheXMgYSBtZW51IHRvICBpdHMgIGFzc29jaWF0ZWQKICAgICAgICBzdWJ3aW5kb3cuICAgVG8gdHJpZ2dlciBwaHlzaWNhbCBkaXNwbGF5IG9mIHRoZSBzdWJ3aW5kb3csCiAgICAgICAgdXNlICA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gIG9yICBzb21lICBlcXVpdmFsZW50ICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgcm91dGluZSAgICh0aGUKQEAgLTczLDcgKzczLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCkBAIC0xMDQsMjQgKzEwNCwyNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIApAQCAtMTI5LDEwICsxMjksMTcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9wb3N0LjN4Lmh0bWwiPm1lbnVfcG9zdCgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWVudV9yZXF1ZXN0bmFtZS4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfcmVxdWVzdG5hbWUuM3guaHRtbAppbmRleCA2ZGE5ZWU5Li42NDlhNTQxIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9yZXF1ZXN0bmFtZS4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9tZW51X3JlcXVlc3RuYW1lLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzOCArMjcsMzkgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfcmVxdWVzdG5hbWUuM3gsdiAxLjcgMjAwNi8xMS8wNCAxNzo1NjowOSB0b20gRXhwIEAKKyAgKiBASWQ6IG1lbnVfcmVxdWVzdG5hbWUuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5tZW51X3JlcXVlc3RuYW1lIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWVudV9yZXF1ZXN0bmFtZSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudV9yZXF1ZXN0bmFtZSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9yZXF1ZXN0bmFtZS4zeC5odG1sIj5tZW51X3JlcXVlc3RuYW1lKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X3JlcXVlc3RuYW1lLjN4Lmh0bWwiPm1lbnVfcmVxdWVzdG5hbWUoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9yZXF1ZXN0bmFtZTwvU1RST05HPiAtIGhhbmRsZSBwcmludGFibGUgbWVudSByZXF1ZXN0IG5hbWVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBjb25zdCBjaGFyICptZW51X3JlcXVlc3RfbmFtZShpbnQgcmVxdWVzdCk7CiAgICAgICAgaW50IG1lbnVfcmVxdWVzdF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiA8U1RST05HPm1lbnVfcmVxdWVzdF9uYW1lPC9TVFJPTkc+IHJldHVybnMgdGhlIHByaW50YWJsZSBuYW1lCiAgICAgICAgb2YgYSBtZW51IHJlcXVlc3QgY29kZS4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5tZW51X3JlcXVlc3RfYnlfbmFtZTwvU1RST05HPiBzZWFyY2hlcyBpbiB0aGUgbmFtZS10YS0KQEAgLTY4LDcgKzY4LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV9yZXF1ZXN0X25hbWU8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPk5VTEw8L1NUUk9ORz4gb24gZXJyb3IgYW5kIHNldHMgZXJybm8gIHRvCiAgICAgICAgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPi4KICAgICAgICA8U1RST05HPm1lbnVfcmVxdWVzdF9ieV9uYW1lPC9TVFJPTkc+IHJldHVybnMgPFNUUk9ORz5FX05PX01BVENIPC9TVFJPTkc+IG9uIGVycm9yLiAgSXQgZG9lcwpAQCAtNzYsMTggKzc2LDE4IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgYXJlICBzcGVjaWZpYyAgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3QKICAgICAgICBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3LCBCU0Qgb3IgU3lzdGVtICBWICBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgSXQgIGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIHRoZW0gYmUgY29uLQpAQCAtOTUsNyArOTUsNyBAQAogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEwMywxMCArMTAzLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9yZXF1ZXN0bmFtZS4zeC5odG1sIj5tZW51X3JlcXVlc3RuYW1lKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X3NwYWNpbmcuM3guaHRtbCBiL2RvYy9odG1sL21hbi9tZW51X3NwYWNpbmcuM3guaHRtbAppbmRleCA3MzZlOTVjLi5kMDY3MjExIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWVudV9zcGFjaW5nLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfc3BhY2luZy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtZW51X3NwYWNpbmcuM3gsdiAxLjggMjAwNC8xMi8xMSAyMzozOTowNyB0b20gRXhwIEAKKyAgKiBASWQ6IG1lbnVfc3BhY2luZy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5tZW51X3NwYWNpbmcgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5tZW51X3NwYWNpbmcgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1lbnVfc3BhY2luZyAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9zcGFjaW5nLjN4Lmh0bWwiPm1lbnVfc3BhY2luZygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X3NwYWNpbmcuM3guaHRtbCI+bWVudV9zcGFjaW5nKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1lbnVfc3BhY2luZzwvU1RST05HPiAtIENvbnRyb2wgc3BhY2luZyBiZXR3ZWVuIG1lbnUgaXRlbXMuCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X21lbnVfc3BhY2luZyhNRU5VICptZW51LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcGNfZGVzY3JpcHRpb24sCkBAIC02NSw0NiArNjUsNDYgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPnNldF9tZW51X3NwYWNpbmc8L1NUUk9ORz4gIHNldHMgdGhlIHNwYWNpbmcgaW5mb3JtYS0KLSAgICAgICB0aW9ucyBmb3IgdGhlIG1lbnUuICA8U1RST05HPnNwY19kZXNjcmlwdGlvbjwvU1RST05HPiBjb250cm9scyAgdGhlICBudW1iZXIKLSAgICAgICBvZiBzcGFjZXMgYmV0d2VlbiBhbiBpdGVtIG5hbWUgYW5kIGFuIGl0ZW0gZGVzY3JpcHRpb24uIEl0Ci0gICAgICAgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gPFNUUk9ORz5UQUJTSVpFPC9TVFJPTkc+LiBUaGUgbWVudSBzeXN0ZW0gIHB1dHMgIGluCi0gICAgICAgdGhlICBtaWRkbGUgIG9mICB0aGlzICBzcGFjaW5nIGFyZWEgdGhlIHBhZCBjaGFyYWN0ZXIuIFRoZQotICAgICAgIHJlbWFpbmluZyBwYXJ0cyBhcmUgZmlsbGVkIHdpdGggc3BhY2VzLiAgPFNUUk9ORz5zcGNfcm93czwvU1RST05HPiBjb250cm9scwotICAgICAgIHRoZSAgbnVtYmVyIG9mIHJvd3MgdGhhdCBhcmUgdXNlZCBmb3IgYW4gaXRlbS4gSXQgbXVzdCBub3QKLSAgICAgICBiZSBsYXJnZXIgdGhhbiAzLiBUaGUgbWVudSBzeXN0ZW0gaW5zZXJ0cyB0aGUgYmxhbmsgIGxpbmVzCi0gICAgICAgYmV0d2VlbiAgaXRlbSByb3dzLCB0aGVzZSBsaW5lcyB3aWxsIGNvbnRhaW4gdGhlIHBhZCBjaGFyLQotICAgICAgIGFjdGVyIGluIHRoZSBhcHByb3ByaWF0ZSBwb3NpdGlvbnMuICA8U1RST05HPnNwY19jb2x1bW5zPC9TVFJPTkc+ICBjb250cm9scwotICAgICAgIHRoZSBudW1iZXIgb2YgYmxhbmtzIGJldHdlZW4gY29sdW1ucyBvZiBpdGVtcy4gSXQgbXVzdCBub3QKLSAgICAgICBiZSBsYXJnZXIgdGhhbiBUQUJTSVpFLiAgQSB2YWx1ZSBvZiAwIGZvciBhbGwgdGhlICBzcGFjaW5nCi0gICAgICAgdmFsdWVzICByZXNldHMgIHRoZW0gdG8gdGhlIGRlZmF1bHQsIHdoaWNoIGlzIDEgZm9yIGFsbCBvZgotICAgICAgIHRoZW0uCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zZXRfbWVudV9zcGFjaW5nPC9TVFJPTkc+IHNldHMgdGhlIHNwYWNpbmcgaW5mb3JtYXRpb24KKyAgICAgICBmb3IgdGhlIG1lbnUuICBJdHMgcGFyYW1ldGVyIDxTVFJPTkc+c3BjX2Rlc2NyaXB0aW9uPC9TVFJPTkc+IGNvbnRyb2xzICB0aGUKKyAgICAgICBudW1iZXIgb2Ygc3BhY2VzIGJldHdlZW4gYW4gaXRlbSBuYW1lIGFuZCBhbiBpdGVtIGRlc2NyaXAtCisgICAgICAgdGlvbi4gIEl0IG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDxTVFJPTkc+VEFCU0laRTwvU1RST05HPi4gIFRoZSBtZW51ICBzeXMtCisgICAgICAgdGVtICBwdXRzIGluIHRoZSBtaWRkbGUgb2YgdGhpcyBzcGFjaW5nIGFyZWEgdGhlIHBhZCBjaGFyLQorICAgICAgIGFjdGVyLiAgVGhlIHJlbWFpbmluZyBwYXJ0cyBhcmUgZmlsbGVkIHdpdGggIHNwYWNlcy4gICBUaGUKKyAgICAgICA8U1RST05HPnNwY19yb3dzPC9TVFJPTkc+ICBwYXJhbWV0ZXIgIGNvbnRyb2xzICB0aGUgbnVtYmVyIG9mIHJvd3MgdGhhdCBhcmUKKyAgICAgICB1c2VkIGZvciBhbiBpdGVtLiAgSXQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gMy4gIFRoZSBtZW51CisgICAgICAgc3lzdGVtICBpbnNlcnRzICB0aGUgIGJsYW5rIGxpbmVzIGJldHdlZW4gaXRlbSByb3dzLCB0aGVzZQorICAgICAgIGxpbmVzIHdpbGwgY29udGFpbiB0aGUgcGFkIGNoYXJhY3RlciAgaW4gIHRoZSAgYXBwcm9wcmlhdGUKKyAgICAgICBwb3NpdGlvbnMuICAgVGhlIDxTVFJPTkc+c3BjX2NvbHVtbnM8L1NUUk9ORz4gcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBudW1iZXIKKyAgICAgICBvZiBibGFua3MgYmV0d2VlbiBjb2x1bW5zIG9mIGl0ZW1zLiAgSXQgbXVzdCBub3QgYmUgbGFyZ2VyCisgICAgICAgdGhhbiAgVEFCU0laRS4gICBBICB2YWx1ZSAgb2YgMCBmb3IgYWxsIHRoZSBzcGFjaW5nIHZhbHVlcworICAgICAgIHJlc2V0cyB0aGVtIHRvIHRoZSBkZWZhdWx0LCB3aGljaCBpcyAxIGZvciBhbGwgb2YgdGhlbS4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5tZW51X3NwYWNpbmc8L1NUUk9ORz4gcGFzc2VzIGJhY2sgdGhlIHNwYWNpbmcgaW5mbyBmb3IKLSAgICAgICB0aGUgbWVudS4gSWYgYSBwb2ludGVyIGlzIE5VTEwsIHRoaXMgc3BlY2lmaWMgaW5mbyBpcyBzaW0tCi0gICAgICAgcGx5IG5vdCByZXR1cm5lZC4KKyAgICAgICB0aGUgIG1lbnUuICAgSWYgIGEgIHBvaW50ZXIgaXMgTlVMTCwgdGhpcyBzcGVjaWZpYyBpbmZvIGlzCisgICAgICAgc2ltcGx5IG5vdCByZXR1cm5lZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgQm90aCByb3V0aW5lcyByZXR1cm4gPFNUUk9ORz5FX09LPC9TVFJPTkc+IG9uIHN1Y2Nlc3MuIDxTVFJPTkc+c2V0X21lbnVfc3BhY2luZzwvU1RST05HPiBtYXkKLSAgICAgICByZXR1cm4gIDxTVFJPTkc+RV9QT1NURUQ8L1NUUk9ORz4gIGlmIHRoZSBtZW51IGlzIHBvc3RlZCwgb3IgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPgotICAgICAgIGlmIG9uZSBvZiB0aGUgc3BhY2luZyB2YWx1ZXMgaXMgb3V0IG9mIHJhbmdlLgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBCb3RoIHJvdXRpbmVzIHJldHVybiA8U1RST05HPkVfT0s8L1NUUk9ORz4gIG9uICBzdWNjZXNzLiAgIDxTVFJPTkc+c2V0X21lbnVfc3BhY2luZzwvU1RST05HPgorICAgICAgIG1heSAgcmV0dXJuIDxTVFJPTkc+RV9QT1NURUQ8L1NUUk9ORz4gaWYgdGhlIG1lbnUgaXMgcG9zdGVkLCBvciA8U1RST05HPkVfQkFEX0FSR1UtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5NRU5UPC9TVFJPTkc+IGlmIG9uZSBvZiB0aGUgc3BhY2luZyB2YWx1ZXMgaXMgb3V0IG9mIHJhbmdlLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPi4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3ZhcmlhYmxlcy4zeC5odG1sIj5jdXJzX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSAgcm91dGluZXMgIGFyZSAgc3BlY2lmaWMgIHRvIG5jdXJzZXMuICBUaGV5IHdlcmUgbm90CiAgICAgICAgc3VwcG9ydGVkIG9uIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSAgViAgaW1wbGVtZW50YXRpb25zLgogICAgICAgIEl0ICBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiB0aGVtIGJlIGNvbi0KQEAgLTExMiw3ICsxMTIsNyBAQAogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEyMCwxMCArMTIwLDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfc3BhY2luZy4zeC5odG1sIj5tZW51X3NwYWNpbmcoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21lbnVfdXNlcnB0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfdXNlcnB0ci4zeC5odG1sCmluZGV4IDc4MzQxY2QuLjY1NDYzYjQgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9tZW51X3VzZXJwdHIuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWVudV91c2VycHRyLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw2NiArMjcsNjcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfdXNlcnB0ci4zeCx2IDEuOCAyMDA2LzExLzA0IDE4OjIxOjAzIHRvbSBFeHAgQAorICAqIEBJZDogbWVudV91c2VycHRyLjN4LHYgMS4xMCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1lbnVfdXNlcnB0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1lbnVfdXNlcnB0ciAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWVudV91c2VycHRyIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtZW51X3VzZXJwdHIuM3guaHRtbCI+bWVudV91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1lbnVfdXNlcnB0ci4zeC5odG1sIj5tZW51X3VzZXJwdHIoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWVudV91c2VycHRyPC9TVFJPTkc+IC0gYXNzb2NpYXRlIGFwcGxpY2F0aW9uIGRhdGEgd2l0aCBhIG1lbnUgaXRlbQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9tZW51X3VzZXJwdHIoTUVOVSAqbWVudSwgdm9pZCAqdXNlcnB0cik7CiAgICAgICAgdm9pZCAqbWVudV91c2VycHRyKGNvbnN0IE1FTlUgKm1lbnUpOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIEV2ZXJ5IG1lbnUgYW5kIGV2ZXJ5IG1lbnUgaXRlbSBoYXMgYSAgZmllbGQgIHRoYXQgIGNhbiAgYmUKKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIEV2ZXJ5ICBtZW51ICBhbmQgIGV2ZXJ5ICBtZW51IGl0ZW0gaGFzIGEgZmllbGQgdGhhdCBjYW4gYmUKICAgICAgICB1c2VkIHRvIGhvbGQgYXBwbGljYXRpb24tc3BlY2lmaWMgZGF0YSAodGhhdCBpcywgdGhlIG1lbnUtCiAgICAgICAgZHJpdmVyIGNvZGUgbGVhdmVzIGl0IGFsb25lKS4gIFRoZXNlIGZ1bmN0aW9ucyBnZXQgYW5kIHNldAogICAgICAgIHRoZSBtZW51IHVzZXIgcG9pbnRlciBmaWVsZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz5tZW51X3VzZXJwdHI8L1NUUk9ORz4gIHJldHVybnMgIGEgIHBvaW50ZXIgKHdoaWNoIG1heSBiZSA8U1RST05HPk5VTEw8L1NUUk9ORz4pLiAgSXQKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5tZW51X3VzZXJwdHI8L1NUUk9ORz4gcmV0dXJucyBhIHBvaW50ZXIgKHdoaWNoIG1heSAgYmUgIDxTVFJPTkc+TlVMTDwvU1RST05HPikuICAgSXQKICAgICAgICBkb2VzIG5vdCBzZXQgZXJybm8uCiAKICAgICAgICA8U1RST05HPnNldF9tZW51X3VzZXJwdHI8L1NUUk9ORz4gcmV0dXJucyA8U1RST05HPkVfT0s8L1NUUk9ORz4gKHN1Y2Nlc3MpLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlICB0aGUgU3lzdGVtIFYgbWVudSBsaWJyYXJ5LiAgVGhleQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgIG1lbnUgIGxpYnJhcnkuICAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAgICAgICAgVGhlIHVzZXIgcG9pbnRlciBpcyBhIHZvaWQgcG9pbnRlci4gIFdlIGNob3NlIG5vdCB0byBsZWF2ZQpAQCAtOTUsMTggKzk1LDI1IEBACiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KLSAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CisgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X3VzZXJwdHIuM3guaHRtbCI+bWVudV91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9tZW51X3dpbi4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21lbnVfd2luLjN4Lmh0bWwKaW5kZXggODU1MTFiZi4uMTMyMWRmMSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21lbnVfd2luLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21lbnVfd2luLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMiArMjcsMzMgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1lbnVfd2luLjN4LHYgMS44IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCBACisgICogQElkOiBtZW51X3dpbi4zeCx2IDEuMTEgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5tZW51X3dpbiAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1lbnVfd2luIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5tZW51X3dpbiAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWVudV93aW4uM3guaHRtbCI+bWVudV93aW4oM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtZW51X3dpbi4zeC5odG1sIj5tZW51X3dpbigzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5tZW51X3dpbjwvU1RST05HPiAgLSBtYWtlIGFuZCBicmVhayBtZW51IHdpbmRvdyBhbmQgc3Vid2luZG93IGFzc28tCiAgICAgICAgY2lhdGlvbnMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIGludCBzZXRfbWVudV93aW4oTUVOVSAqbWVudSwgV0lORE9XICp3aW4pOwogICAgICAgIFdJTkRPVyAqbWVudV93aW4oY29uc3QgTUVOVSAqbWVudSk7CkBAIC02MywyOSArNjMsMjkgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgICAgICBFdmVyeSAgbWVudSBoYXMgYW4gYXNzb2NpYXRlZCBwYWlyIG9mIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvd3MuICBUaGUKLSAgICAgICBtZW51IHdpbmRvdyBkaXNwbGF5cyBhbnkgdGl0bGUgYW5kIGJvcmRlciBhc3NvY2lhdGVkICB3aXRoCi0gICAgICAgdGhlICB3aW5kb3c7ICB0aGUgbWVudSBzdWJ3aW5kb3cgZGlzcGxheXMgdGhlIGl0ZW1zIG9mIHRoZQorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CisgICAgICAgRXZlcnkgbWVudSBoYXMgYW4gYXNzb2NpYXRlZCBwYWlyIG9mIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHdpbmRvd3MuICAgVGhlCisgICAgICAgbWVudSAgd2luZG93IGRpc3BsYXlzIGFueSB0aXRsZSBhbmQgYm9yZGVyIGFzc29jaWF0ZWQgd2l0aAorICAgICAgIHRoZSB3aW5kb3c7IHRoZSBtZW51IHN1YndpbmRvdyBkaXNwbGF5cyB0aGUgaXRlbXMgIG9mICB0aGUKICAgICAgICBtZW51IHRoYXQgYXJlIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbi4KIAogICAgICAgIFRoZSBmaXJzdCBmb3VyIGZ1bmN0aW9ucyBnZXQgYW5kIHNldCB0aG9zZSB3aW5kb3dzLiAgSXQgaXMKICAgICAgICBub3QgbmVjZXNzYXJ5IHRvIHNldCBlaXRoZXIgd2luZG93OyBieSBkZWZhdWx0LCB0aGUgZHJpdmVyCiAgICAgICAgY29kZSB1c2VzIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+IGZvciBib3RoLgogCi0gICAgICAgSW4gdGhlIDxTVFJPTkc+c2V0XzwvU1RST05HPiBmdW5jdGlvbnMsIHdpbmRvdyBhcmd1bWVudCBvZiA8U1RST05HPk5VTEw8L1NUUk9ORz4gaXMgIHRyZWF0ZWQKLSAgICAgICBhcyAgdGhvdWdoICBpdCAgd2VyZSAgPFNUUk9ORz5zdHNkY3I8L1NUUk9ORz4uICAgQSBtZW51IGFyZ3VtZW50IG9mIDxTVFJPTkc+TlVMTDwvU1RST05HPiBpcwotICAgICAgIHRyZWF0ZWQgYXMgYSByZXF1ZXN0IHRvIGNoYW5nZSAgdGhlICBzeXN0ZW0gIGRlZmF1bHQgIG1lbnUKKyAgICAgICBJbiAgdGhlIDxTVFJPTkc+c2V0XzwvU1RST05HPiBmdW5jdGlvbnMsIHdpbmRvdyBhcmd1bWVudCBvZiA8U1RST05HPk5VTEw8L1NUUk9ORz4gaXMgdHJlYXRlZAorICAgICAgIGFzIHRob3VnaCBpdCB3ZXJlIDxTVFJPTkc+c3RzZGNyPC9TVFJPTkc+LiAgQSAgbWVudSAgYXJndW1lbnQgIG9mICA8U1RST05HPk5VTEw8L1NUUk9ORz4gIGlzCisgICAgICAgdHJlYXRlZCAgYXMgIGEgIHJlcXVlc3QgIHRvIGNoYW5nZSB0aGUgc3lzdGVtIGRlZmF1bHQgbWVudQogICAgICAgIHdpbmRvdyBvciBzdWJ3aW5kb3cuCiAKLSAgICAgICBUaGUgIGZ1bmN0aW9uIDxTVFJPTkc+c2NhbGVfbWVudTwvU1RST05HPiByZXR1cm5zIHRoZSBtaW5pbXVtIHNpemUgcmVxdWlyZWQKKyAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5zY2FsZV9tZW51PC9TVFJPTkc+IHJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSAgcmVxdWlyZWQKICAgICAgICBmb3IgdGhlIHN1YndpbmRvdyBvZiA8RU0+bWVudTwvRU0+LgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBwb2ludGVycyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLiAgIFJvdS0KLSAgICAgICB0aW5lcyAgdGhhdCAgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nCis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFJvdXRpbmVzICB0aGF0IHJldHVybiBwb2ludGVycyByZXR1cm4gPFNUUk9ORz5OVUxMPC9TVFJPTkc+IG9uIGVycm9yLiAgUm91LQorICAgICAgIHRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIG9uZSBvZiAgdGhlICBmb2xsb3dpbmcKICAgICAgICBlcnJvciBjb2RlczoKIAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICAgICBTeXN0ZW0gZXJyb3Igb2NjdXJyZWQgKHNlZSA8U1RST05HPmVycm5vPC9TVFJPTkc+KS4KIAogICAgICAgIDxTVFJPTkc+RV9CQURfQVJHVU1FTlQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJvdXRpbmUgZGV0ZWN0ZWQgYW4gaW5jb3JyZWN0IG9yICBvdXQtb2YtcmFuZ2UgIGFyZ3UtCisgICAgICAgICAgICBSb3V0aW5lICBkZXRlY3RlZCAgYW4gaW5jb3JyZWN0IG9yIG91dC1vZi1yYW5nZSBhcmd1LQogICAgICAgICAgICAgbWVudC4KIAogICAgICAgIDxTVFJPTkc+RV9QT1NURUQ8L1NUUk9ORz4KQEAgLTEwNSwzNSArMTA1LDQyIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgIHRoZSBTeXN0ZW0gViBtZW51IGxpYnJhcnkuICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KLSAgICAgICBKdWVyZ2VuICBQZmVpZmVyLiAgIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiBmb3IgbmV3Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CisgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV93aW4uM3guaHRtbCI+bWVudV93aW4oM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbCBiL2RvYy9odG1sL21hbi9taXRlbV9jdXJyZW50LjN4Lmh0bWwKaW5kZXggOTUyOTQ3My4uMmVlNjFhMiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21pdGVtX2N1cnJlbnQuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWl0ZW1fY3VycmVudC4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzEgKzI3LDMyIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtaXRlbV9jdXJyZW50LjN4LHYgMS4xMSAyMDA2LzExLzA0IDE4OjE4OjE5IHRvbSBFeHAgQAorICAqIEBJZDogbWl0ZW1fY3VycmVudC4zeCx2IDEuMTMgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5taXRlbV9jdXJyZW50IDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWl0ZW1fY3VycmVudCAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWl0ZW1fY3VycmVudCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fY3VycmVudC4zeC5odG1sIj5taXRlbV9jdXJyZW50KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtaXRlbV9jdXJyZW50LjN4Lmh0bWwiPm1pdGVtX2N1cnJlbnQoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWl0ZW1fY3VycmVudDwvU1RST05HPiAtIHNldCBhbmQgZ2V0IGN1cnJlbnRfbWVudV9pdGVtCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2N1cnJlbnRfaXRlbShNRU5VICptZW51LCBjb25zdCBJVEVNICppdGVtKTsKICAgICAgICBJVEVNICpjdXJyZW50X2l0ZW0oY29uc3QgTUVOVSAqbWVudSk7CkBAIC02Miw3ICs2Miw3IEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPnNldF9jdXJyZW50X2l0ZW08L1NUUk9ORz4gc2V0cyB0aGUgY3VycmVudCBpdGVtICh0aGUKICAgICAgICBpdGVtIG9uICB3aGljaCAgdGhlICBtZW51ICBjdXJzb3IgIGlzICBwb3NpdGlvbmVkKS4gICA8U1RST05HPmN1ci08L1NUUk9ORz4KICAgICAgICA8U1RST05HPnJlbnRfaXRlbTwvU1RST05HPiAgcmV0dXJucyAgYSAgcG9pbnRlciAgdG8gdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUKQEAgLTgwLDcgKzgwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+Y3VycmVudF9pdGVtPC9TVFJPTkc+IHJldHVybnMgYSBwb2ludGVyICh3aGljaCBtYXkgIGJlICA8U1RST05HPk5VTEw8L1NUUk9ORz4pLiAgIEl0CiAgICAgICAgZG9lcyBub3Qgc2V0IGVycm5vLgogCkBAIC0xMDgsMTggKzEwOCwxOCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKQEAgLTEyOSw3ICsxMjksNyBAQAogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTEzNywxMCArMTM3LDE3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fY3VycmVudC4zeC5odG1sIj5taXRlbV9jdXJyZW50KDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vbWl0ZW1fbmFtZS4zeC5odG1sCmluZGV4IDkwODk1ZDMuLmZkNzNjNmIgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi9taXRlbV9uYW1lLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21pdGVtX25hbWUuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDM4ICsyNywzOSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWl0ZW1fbmFtZS4zeCx2IDEuNiAyMDA2LzExLzA0IDE3OjUzOjQwIHRvbSBFeHAgQAorICAqIEBJZDogbWl0ZW1fbmFtZS4zeCx2IDEuOCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1pdGVtX25hbWUgM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5taXRlbV9uYW1lIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5taXRlbV9uYW1lIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtaXRlbV9uYW1lLjN4Lmh0bWwiPm1pdGVtX25hbWUoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pdGVtX25hbWUuM3guaHRtbCI+bWl0ZW1fbmFtZSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5taXRlbV9uYW1lPC9TVFJPTkc+IC0gZ2V0IG1lbnUgaXRlbSBuYW1lIGFuZCBkZXNjcmlwdGlvbiBmaWVsZHMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIGNvbnN0IGNoYXIgKml0ZW1fbmFtZShjb25zdCBJVEVNICppdGVtKTsKICAgICAgICBjb25zdCBjaGFyICppdGVtX2Rlc2NyaXB0aW9uKGNvbnN0IElURU0gKml0ZW0pOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiA8U1RST05HPml0ZW1fbmFtZTwvU1RST05HPiByZXR1cm5zIHRoZSBuYW1lIHBhcnQgb2YgdGhlIGdpdmVuCiAgICAgICAgaXRlbS4KICAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5pdGVtX2Rlc2NyaXB0aW9uPC9TVFJPTkc+IHJldHVybnMgdGhlIGRlc2NyaXB0aW9uIHBhcnQKQEAgLTY3LDMwICs2NywzMCBAQAogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2Ugcm91dGluZXMgcmV0dXJuIGEgcG9pbnRlciAod2hpY2ggbWF5IGJlIDxTVFJPTkc+TlVMTDwvU1RST05HPikuICBUaGV5CiAgICAgICAgZG8gbm90IHNldCBlcnJuby4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJtZW51LjN4Lmh0bWwiPm1lbnUoM3gpPC9BPjwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBoZWFkZXIgZmlsZSA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlcgogICAgICAgIGZpbGUgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPlBPUlRBQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlICB0aGUgU3lzdGVtIFYgbWVudSBsaWJyYXJ5LiAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uICBmb3IgIG5ldwogICAgICAgIGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCiAKQEAgLTk4LDEwICs5OCwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pdGVtX25hbWUuM3guaHRtbCI+bWl0ZW1fbmFtZSgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWl0ZW1fbmV3LjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vbWl0ZW1fbmV3LjN4Lmh0bWwKaW5kZXggZTA2OWIxMi4uNThjZWFmYSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21pdGVtX25ldy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9taXRlbV9uZXcuM3guaHRtbApAQCAtMSw4ICsxLDcgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqIHQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDU3ICsyNyw1OCBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWl0ZW1fbmV3LjN4LHYgMS4xMCAyMDA2LzExLzA0IDE4OjE2OjM2IHRvbSBFeHAgQAorICAqIEBJZDogbWl0ZW1fbmV3LjN4LHYgMS4xMiAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1pdGVtX25ldyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1pdGVtX25ldyAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+bWl0ZW1fbmV3IDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtaXRlbV9uZXcuM3guaHRtbCI+bWl0ZW1fbmV3KDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pdGVtX25ldy4zeC5odG1sIj5taXRlbV9uZXcoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+bWl0ZW1fbmV3PC9TVFJPTkc+IC0gY3JlYXRlIGFuZCBkZXN0cm95IG1lbnUgaXRlbXMKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPgogICAgICAgIElURU0gKm5ld19pdGVtKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKTsKICAgICAgICBpbnQgZnJlZV9pdGVtKElURU0gKml0ZW0pOwogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGZ1bmN0aW9uIDxTVFJPTkc+bmV3X2l0ZW08L1NUUk9ORz4gYWxsb2NhdGVzIGEgbmV3IGl0ZW0gYW5kIGluaXRpYWxpemVzCi0gICAgICAgaXQgIGZyb20gIHRoZSA8U1RST05HPm5hbWU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+ZGVzY3JpcHRpb248L1NUUk9ORz4gcG9pbnRlcnMuIFBsZWFzZSBub3RpY2UKLSAgICAgICB0aGF0IHRoZSBpdGVtIHN0b3JlcyBvbmx5IHRoZSBwb2ludGVycyAgdG8gIHRoZSAgbmFtZSAgYW5kCisgICAgICAgaXQgZnJvbSB0aGUgPFNUUk9ORz5uYW1lPC9TVFJPTkc+IGFuZCA8U1RST05HPmRlc2NyaXB0aW9uPC9TVFJPTkc+IHBvaW50ZXJzLiAgUGxlYXNlICBub3RpY2UKKyAgICAgICB0aGF0ICB0aGUgIGl0ZW0gIHN0b3JlcyAgb25seSB0aGUgcG9pbnRlcnMgdG8gdGhlIG5hbWUgYW5kCiAgICAgICAgZGVzY3JpcHRpb24uIFRob3NlIHBvaW50ZXJzIG11c3QgYmUgdmFsaWQgZHVyaW5nIHRoZSBsaWZlLQogICAgICAgIHRpbWUgb2YgdGhlIGl0ZW0uIFNvIHlvdSBzaG91bGQgYmUgdmVyeSBjYXJlZnVsIHdpdGggbmFtZXMKICAgICAgICBvciBkZXNjcmlwdGlvbnMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBvZiBzb21lIHJvdXRpbmVzLgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPmZyZWVfaXRlbTwvU1RST05HPiBkZS1hbGxvY2F0ZXMgYW4gaXRlbS4gUGxlYXNlIG5vdGljZQotICAgICAgIHRoYXQgaXQgIGlzICB0aGUgIHJlc3BvbnNpYmlsaXR5ICBvZiAgdGhlICBhcHBsaWNhdGlvbiAgdG8KLSAgICAgICByZWxlYXNlICB0aGUgbWVtb3J5IGZvciB0aGUgbmFtZSBvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgICAgdGhhdCAgaXQgIGlzICB0aGUgIHJlc3BvbnNpYmlsaXR5ICBvZiAgdGhlICBhcHBsaWNhdGlvbiB0bworICAgICAgIHJlbGVhc2UgdGhlIG1lbW9yeSBmb3IgdGhlIG5hbWUgb3IgdGhlIGRlc2NyaXB0aW9uIG9mICB0aGUKICAgICAgICBpdGVtLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBUaGUgZnVuY3Rpb24gPFNUUk9ORz5uZXdfaXRlbTwvU1RST05HPiByZXR1cm5zICA8U1RST05HPk5VTEw8L1NUUk9ORz4gIG9uICBlcnJvci4gICBJdCAgc2V0cworPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgIGZ1bmN0aW9uICA8U1RST05HPm5ld19pdGVtPC9TVFJPTkc+ICByZXR1cm5zICA8U1RST05HPk5VTEw8L1NUUk9ORz4gIG9uIGVycm9yLiAgSXQgc2V0cwogICAgICAgIGVycm5vIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24ncyBmYWlsdXJlOgogCiAgICAgICAgPFNUUk9ORz5FX0JBRF9BUkdVTUVOVDwvU1RST05HPgotICAgICAgICAgICAgUm91dGluZSAgZGV0ZWN0ZWQgIGFuIGluY29ycmVjdCBvciBvdXQtb2YtcmFuZ2UgYXJndS0KKyAgICAgICAgICAgIFJvdXRpbmUgZGV0ZWN0ZWQgYW4gaW5jb3JyZWN0IG9yICBvdXQtb2YtcmFuZ2UgIGFyZ3UtCiAgICAgICAgICAgICBtZW50LgogCiAgICAgICAgPFNUUk9ORz5FX1NZU1RFTV9FUlJPUjwvU1RST05HPgpAQCAtODksNyArODksNyBAQAogICAgICAgIDxTVFJPTkc+RV9PSzwvU1RST05HPiBUaGUgcm91dGluZSBzdWNjZWVkZWQuCiAKICAgICAgICA8U1RST05HPkVfQkFEX0FSR1VNRU5UPC9TVFJPTkc+Ci0gICAgICAgICAgICBSb3V0aW5lIGRldGVjdGVkIGFuIGluY29ycmVjdCBvciAgb3V0LW9mLXJhbmdlICBhcmd1LQorICAgICAgICAgICAgUm91dGluZSAgZGV0ZWN0ZWQgIGFuIGluY29ycmVjdCBvciBvdXQtb2YtcmFuZ2UgYXJndS0KICAgICAgICAgICAgIG1lbnQuCiAKICAgICAgICA8U1RST05HPkVfQ09OTkVDVEVEPC9TVFJPTkc+CkBAIC0xMDAsMzUgKzEwMCw0MiBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im1lbnUuM3guaHRtbCI+bWVudSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciBmaWxlIDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4gYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyCiAgICAgICAgZmlsZSA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlc2Ugcm91dGluZXMgZW11bGF0ZSB0aGUgU3lzdGVtIFYgIG1lbnUgIGxpYnJhcnkuICAgVGhleQorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgVGhlc2UgIHJvdXRpbmVzICBlbXVsYXRlICB0aGUgU3lzdGVtIFYgbWVudSBsaWJyYXJ5LiAgVGhleQogICAgICAgIHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Ci0gICAgICAgSnVlcmdlbiAgUGZlaWZlci4gICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gZm9yIG5ldworPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgorICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fbmV3LjN4Lmh0bWwiPm1pdGVtX25ldygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21pdGVtX29wdHMuM3guaHRtbAppbmRleCA0NTk5MzBhLi4zOTMyNTY0IDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWl0ZW1fb3B0cy4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9taXRlbV9vcHRzLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCwzMSArMjcsMzIgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1pdGVtX29wdHMuM3gsdiAxLjkgMjAwNy8wMi8yNCAxNzozMzozMiB0b20gRXhwIEAKKyAgKiBASWQ6IG1pdGVtX29wdHMuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWl0ZW1fb3B0cyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1pdGVtX29wdHMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1pdGVtX29wdHMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fb3B0cy4zeC5odG1sIj5taXRlbV9vcHRzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1pdGVtX29wdHM8L1NUUk9ORz4gLSBzZXQgYW5kIGdldCBtZW51IGl0ZW0gb3B0aW9ucwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9pdGVtX29wdHMoSVRFTSAqaXRlbSwgSXRlbV9PcHRpb25zIG9wdHMpOwogICAgICAgIGludCBpdGVtX29wdHNfb24oSVRFTSAqaXRlbSwgSXRlbV9PcHRpb25zIG9wdHMpOwpAQCAtNjEsNyArNjEsNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5zZXRfaXRlbV9vcHRzPC9TVFJPTkc+ICBzZXRzICBhbGwgIHRoZSAgZ2l2ZW4gaXRlbSdzCiAgICAgICAgb3B0aW9uIGJpdHMgIChtZW51ICBvcHRpb24gIGJpdHMgIG1heSAgYmUgIGxvZ2ljYWxseS1PUidlZAogICAgICAgIHRvZ2V0aGVyKS4KQEAgLTgxLDcgKzgxLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIEV4Y2VwdCBmb3IgPFNUUk9ORz5pdGVtX29wdHM8L1NUUk9ORz4sIGVhY2ggcm91dGluZSByZXR1cm5zIG9uZSBvZiB0aGUgZm9sLQogICAgICAgIGxvd2luZzoKIApAQCAtOTIsMjQgKzkyLDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlIHJvdXRpbmVzIGVtdWxhdGUgdGhlIFN5c3RlbSBWICBtZW51ICBsaWJyYXJ5LiAgIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xMTcsMTAgKzExNywxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pdGVtX29wdHMuM3guaHRtbCI+bWl0ZW1fb3B0cygzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItTk9URVMiPk5PVEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vbWl0ZW1fdXNlcnB0ci4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21pdGVtX3VzZXJwdHIuM3guaHRtbAppbmRleCBmYzdjOWM1Li44ODFkODUyIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vbWl0ZW1fdXNlcnB0ci4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi9taXRlbV91c2VycHRyLjN4Lmh0bWwKQEAgLTEsOCArMSw3IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKiB0CiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw2NiArMjcsNjcgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IG1pdGVtX3VzZXJwdHIuM3gsdiAxLjkgMjAwNi8xMS8wNCAxODoyMTowMyB0b20gRXhwIEAKKyAgKiBASWQ6IG1pdGVtX3VzZXJwdHIuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWl0ZW1fdXNlcnB0ciAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1pdGVtX3VzZXJwdHIgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1pdGVtX3VzZXJwdHIgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1pdGVtX3VzZXJwdHIuM3guaHRtbCI+bWl0ZW1fdXNlcnB0cigzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fdXNlcnB0ci4zeC5odG1sIj5taXRlbV91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1pdGVtX3VzZXJwdHI8L1NUUk9ORz4gIC0gIGFzc29jaWF0ZSAgYXBwbGljYXRpb24gIGRhdGEgd2l0aCBhIG1lbnUKICAgICAgICBpdGVtCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBpbnQgc2V0X2l0ZW1fdXNlcnB0cihJVEVNICppdGVtLCB2b2lkICp1c2VycHRyKTsKICAgICAgICB2b2lkICppdGVtX3VzZXJwdHIoY29uc3QgSVRFTSAqaXRlbSk7CiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBFdmVyeSBtZW51IGl0ZW0gaGFzIGEgZmllbGQgIHRoYXQgIGNhbiAgYmUgIHVzZWQgIHRvICBob2xkCiAgICAgICAgYXBwbGljYXRpb24tc3BlY2lmaWMgIGRhdGEgICh0aGF0IGlzLCB0aGUgbWVudS1kcml2ZXIgY29kZQogICAgICAgIGxlYXZlcyBpdCBhbG9uZSkuICBUaGVzZSBmdW5jdGlvbnMgZ2V0IGFuZCBzZXQgdGhhdCBmaWVsZC4KIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Ci0gICAgICAgVGhlICBmdW5jdGlvbiAgPFNUUk9ORz5pdGVtX3VzZXJwdHI8L1NUUk9ORz4gIHJldHVybnMgIGEgIHBvaW50ZXIgKHBvc3NpYmx5Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSBmdW5jdGlvbiAgPFNUUk9ORz5pdGVtX3VzZXJwdHI8L1NUUk9ORz4gIHJldHVybnMgIGEgIHBvaW50ZXIgIChwb3NzaWJseQogICAgICAgIDxTVFJPTkc+TlVMTDwvU1RST05HPikuICBJdCBkb2VzIG5vdCBzZXQgZXJybm8uCiAKICAgICAgICBUaGUgPFNUUk9ORz5zZXRfaXRlbV91c2VycHRyPC9TVFJPTkc+IGFsd2F5cyByZXR1cm5zIDxTVFJPTkc+RV9PSzwvU1RST05HPiAoc3VjY2VzcykuCiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KLSAgICAgICBUaGVzZSAgcm91dGluZXMgIGVtdWxhdGUgIHRoZSBTeXN0ZW0gViBtZW51IGxpYnJhcnkuICBUaGV5Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViAgbWVudSAgbGlicmFyeS4gICBUaGV5CiAgICAgICAgd2VyZSBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNyBvciBCU0QgdmVyc2lvbnMuCiAKICAgICAgICBUaGUgdXNlciBwb2ludGVyIGlzIGEgdm9pZCBwb2ludGVyLiAgV2UgY2hvc2Ugbm90IHRvIGxlYXZlCkBAIC05NSwxOCArOTUsMjUgQEAKIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgotICAgICAgIEp1ZXJnZW4gIFBmZWlmZXIuICAgTWFudWFsICBwYWdlcyAgYW5kICBhZGFwdGF0aW9uIGZvciBuZXcKKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgIHBhZ2VzICBhbmQgIGFkYXB0YXRpb24gIGZvciAgbmV3CiAgICAgICAgY3Vyc2VzIGJ5IEVyaWMgUy4gUmF5bW9uZC4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fdXNlcnB0ci4zeC5odG1sIj5taXRlbV91c2VycHRyKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9taXRlbV92YWx1ZS4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwKaW5kZXggMzg2YzhiOC4uZDY4YmEyOCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL21pdGVtX3ZhbHVlLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM4ICsyNiwzOSBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogbWl0ZW1fdmFsdWUuM3gsdiAxLjggMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwIEAKKyAgKiBASWQ6IG1pdGVtX3ZhbHVlLjN4LHYgMS4xMCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPm1pdGVtX3ZhbHVlIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+bWl0ZW1fdmFsdWUgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1pdGVtX3ZhbHVlIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJtaXRlbV92YWx1ZS4zeC5odG1sIj5taXRlbV92YWx1ZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pdGVtX3ZhbHVlLjN4Lmh0bWwiPm1pdGVtX3ZhbHVlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1pdGVtX3ZhbHVlPC9TVFJPTkc+IC0gc2V0IGFuZCBnZXQgbWVudSBpdGVtIHZhbHVlcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDttZW51LmgmZ3Q7PC9TVFJPTkc+CiAgICAgICAgaW50IHNldF9pdGVtX3ZhbHVlKElURU0gKml0ZW0sIGJvb2wgdmFsdWUpOwogICAgICAgIGJvb2wgaXRlbV92YWx1ZShjb25zdCBJVEVNICppdGVtKTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIElmICB5b3UgIHR1cm4gIG9mZiAgdGhlIG1lbnUgb3B0aW9uIDxTVFJPTkc+T19PTkVWQUxVRTwvU1RST05HPiAoZS5nLiwgd2l0aAogICAgICAgIDxTVFJPTkc+c2V0X21lbnVfb3B0czwvU1RST05HPiBvciA8U1RST05HPm1lbnVfb3B0c19vZmY8L1NUUk9ORz47ICBzZWUgIDxTVFJPTkc+PEEgSFJFRj0ibWVudV9vcHRzLjN4Lmh0bWwiPm1lbnVfb3B0cygzeCk8L0E+PC9TVFJPTkc+KSwgIHRoZQogICAgICAgIG1lbnUgYmVjb21lcyBtdWx0aS12YWx1ZWQ7IHRoYXQgaXMsIG1vcmUgdGhhbiBvbmUgaXRlbSBtYXkKQEAgLTcwLDcgKzcwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5SRVRVUk4gVkFMVUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmdW5jdGlvbiA8U1RST05HPnNldF9pdGVtX3ZhbHVlPC9TVFJPTkc+IHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKICAgICAgICA8U1RST05HPkVfT0s8L1NUUk9ORz4gVGhlIHJvdXRpbmUgc3VjY2VlZGVkLgpAQCAtODMsMjQgKzgzLDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC0xMDgsMTAgKzEwOCwxNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fdmFsdWUuM3guaHRtbCI+bWl0ZW1fdmFsdWUoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUkVUVVJOLVZBTFVFIj5SRVRVUk4gVkFMVUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL21pdGVtX3Zpc2libGUuM3guaHRtbCBiL2RvYy9odG1sL21hbi9taXRlbV92aXNpYmxlLjN4Lmh0bWwKaW5kZXggOGQzZDAxNi4uNzAyN2U1MiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL21pdGVtX3Zpc2libGUuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbWl0ZW1fdmlzaWJsZS4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzcgKzI3LDM4IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBtaXRlbV92aXNpYmxlLjN4LHYgMS41IDE5OTgvMTEvMjkgMDE6MTI6NTUgUmljay5PaG5lbXVzIEV4cCBACisgICogQElkOiBtaXRlbV92aXNpYmxlLjN4LHYgMS43IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bWl0ZW1fdmlzaWJsZSAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm1pdGVtX3Zpc2libGUgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm1pdGVtX3Zpc2libGUgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im1pdGVtX3Zpc2libGUuM3guaHRtbCI+bWl0ZW1fdmlzaWJsZSgzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibWl0ZW1fdmlzaWJsZS4zeC5odG1sIj5taXRlbV92aXNpYmxlKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm1pdGVtX3Zpc2libGU8L1NUUk9ORz4gLSBjaGVjayB2aXNpYmlsaXR5IG9mIGEgbWVudSBpdGVtCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O21lbnUuaCZndDs8L1NUUk9ORz4KICAgICAgICBib29sIGl0ZW1fdmlzaWJsZShjb25zdCBJVEVNICppdGVtKTsKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIEEgIG1lbnUgIGl0ZW0gIGlzICB2aXNpYmxlICB3aGVuIGl0IGlzIGluIHRoZSBwb3J0aW9uIG9mIGEKICAgICAgICBwb3N0ZWQgbWVudSB0aGF0IGlzIG1hcHBlZCBvbnRvIHRoZSBzY3JlZW4gKGlmIHRoZSBtZW51IGlzCiAgICAgICAgc2Nyb2xsYWJsZSwgIGluICBwYXJ0aWN1bGFyLCAgdGhpcyBwb3J0aW9uIHdpbGwgYmUgc21hbGxlcgpAQCAtNjYsMjQgKzY2LDI0IEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ibWVudS4zeC5odG1sIj5tZW51KDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgaGVhZGVyIGZpbGUgPFNUUk9ORz4mbHQ7bWVudS5oJmd0OzwvU1RST05HPiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIKICAgICAgICBmaWxlIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPi4KIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZXNlICByb3V0aW5lcyAgZW11bGF0ZSAgdGhlIFN5c3RlbSBWIG1lbnUgbGlicmFyeS4gIFRoZXkKICAgICAgICB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24gVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1JTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9IMj48UFJFPgogICAgICAgIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCAgcGFnZXMgIGFuZCAgYWRhcHRhdGlvbiAgZm9yICBuZXcKICAgICAgICBjdXJzZXMgYnkgRXJpYyBTLiBSYXltb25kLgogCkBAIC05MSwxMCArOTEsMTYgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJtaXRlbV92aXNpYmxlLjN4Lmh0bWwiPm1pdGVtX3Zpc2libGUoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL25jdXJzZXMuM3guaHRtbCBiL2RvYy9odG1sL21hbi9uY3Vyc2VzLjN4Lmh0bWwKaW5kZXggOGIxZGVlOC4uMGM1NjJjYSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL25jdXJzZXMuM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vbmN1cnNlcy4zeC5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNTIgKzI3LDUzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiBuY3Vyc2VzLjN4LHYgMS45MSAyMDA4LzEwLzExIDIwOjQzOjExIHRvbSBFeHAgQAorICAqIEBJZDogbmN1cnNlcy4zeCx2IDEuMTI0IDIwMTUvMDgvMDggMTQ6NTc6NTEgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+bmN1cnNlcyAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPm5jdXJzZXMgM3g8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm5jdXJzZXMgM3g8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+bmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5uY3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gLSBDUlQgc2NyZWVuIGhhbmRsaW5nIGFuZCBvcHRpbWl6YXRpb24gcGFja2FnZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICBsaWJyYXJ5ICByb3V0aW5lcyAgZ2l2ZSB0aGUgdXNlciBhIHRlcm1pbmFsLQogICAgICAgIGluZGVwZW5kZW50IG1ldGhvZCBvZiB1cGRhdGluZyBjaGFyYWN0ZXIgc2NyZWVucyB3aXRoIHJlYS0KLSAgICAgICBzb25hYmxlICAgb3B0aW1pemF0aW9uLiAgICBUaGlzICBpbXBsZW1lbnRhdGlvbiAgaXMgIGBgbmV3Ci0gICAgICAgY3Vyc2VzJycgKG5jdXJzZXMpIGFuZCBpcyAgdGhlICBhcHByb3ZlZCAgcmVwbGFjZW1lbnQgIGZvcgotICAgICAgIDQuNEJTRCAgY2xhc3NpYyBjdXJzZXMsIHdoaWNoIGhhcyBiZWVuIGRpc2NvbnRpbnVlZC4gIFRoaXMKLSAgICAgICBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNS42IChwYXRjaCAyMDA4MTAxMSkuCisgICAgICAgc29uYWJsZSBvcHRpbWl6YXRpb24uICBUaGlzIGltcGxlbWVudGF0aW9uIGlzICJuZXcgY3Vyc2VzIgorICAgICAgIChuY3Vyc2VzKSBhbmQgaXMgdGhlIGFwcHJvdmVkIHJlcGxhY2VtZW50IGZvciA0LjRCU0QgY2xhcy0KKyAgICAgICBzaWMgIGN1cnNlcywgIHdoaWNoIGhhcyBiZWVuIGRpc2NvbnRpbnVlZC4gIFRoaXMgZGVzY3JpYmVzCisgICAgICAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNi4wIChwYXRjaCAyMDE1MDgwOCkuCiAKLSAgICAgICBUaGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgZW11bGF0ZXMgIHRoZSAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+ICBsaWJyYXJ5ICBvZgotICAgICAgIFN5c3RlbSAgViAgUmVsZWFzZSAgNCAgVU5JWCwgIGFuZCBYUEc0IChYL09wZW4gUG9ydGFiaWxpdHkKLSAgICAgICBHdWlkZSkgY3Vyc2VzIChhbHNvIGtub3duIGFzIFhTSSBjdXJzZXMpLiAgWFNJIHN0YW5kcyAgZm9yCi0gICAgICAgWC9PcGVuICBTeXN0ZW0gIEludGVyZmFjZXMgRXh0ZW5zaW9uLiAgVGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBsaWJyYXJ5Ci0gICAgICAgaXMgZnJlZWx5IHJlZGlzdHJpYnV0YWJsZSAgaW4gIHNvdXJjZSAgZm9ybS4gICBEaWZmZXJlbmNlcwotICAgICAgIGZyb20gIHRoZSAgU1ZyNCBjdXJzZXMgYXJlIHN1bW1hcml6ZWQgdW5kZXIgdGhlIDxTVFJPTkc+RVhURU5TSU9OUzwvU1RST05HPgotICAgICAgIGFuZCA8U1RST05HPlBPUlRBQklMSVRZPC9TVFJPTkc+IHNlY3Rpb25zIGJlbG93IGFuZCBkZXNjcmliZWQgaW4gZGV0YWlsICBpbgotICAgICAgIHRoZSAgcmVzcGVjdGl2ZSAgPFNUUk9ORz5FWFRFTlNJT05TPC9TVFJPTkc+LCA8U1RST05HPlBPUlRBQklMSVRZPC9TVFJPTkc+IGFuZCA8U1RST05HPkJVR1M8L1NUUk9ORz4gc2VjdGlvbnMKLSAgICAgICBvZiBpbmRpdmlkdWFsIG1hbiBwYWdlcy4KKyAgICAgICBUaGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgZW11bGF0ZXMgdGhlIGN1cnNlcyBsaWJyYXJ5IG9mICBTeXN0ZW0KKyAgICAgICBWICBSZWxlYXNlICA0ICBVTklYLCAgYW5kICBYUEc0IChYL09wZW4gUG9ydGFiaWxpdHkgR3VpZGUpCisgICAgICAgY3Vyc2VzIChhbHNvIGtub3duIGFzIFhTSSBjdXJzZXMpLiAgWFNJIHN0YW5kcyBmb3IgIFgvT3BlbgorICAgICAgIFN5c3RlbSAgSW50ZXJmYWNlcyAgRXh0ZW5zaW9uLiAgIFRoZSAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICBsaWJyYXJ5ICBpcworICAgICAgIGZyZWVseSByZWRpc3RyaWJ1dGFibGUgaW4gc291cmNlIGZvcm0uICAgRGlmZmVyZW5jZXMgIGZyb20KKyAgICAgICB0aGUgIFNWcjQgIGN1cnNlcyAgYXJlIHN1bW1hcml6ZWQgdW5kZXIgdGhlIDxTVFJPTkc+RVhURU5TSU9OUzwvU1RST05HPiBhbmQKKyAgICAgICA8U1RST05HPlBPUlRBQklMSVRZPC9TVFJPTkc+IHNlY3Rpb25zIGJlbG93IGFuZCBkZXNjcmliZWQgaW4gZGV0YWlsIGluICB0aGUKKyAgICAgICByZXNwZWN0aXZlICA8U1RST05HPkVYVEVOU0lPTlM8L1NUUk9ORz4sICA8U1RST05HPlBPUlRBQklMSVRZPC9TVFJPTkc+ICBhbmQgPFNUUk9ORz5CVUdTPC9TVFJPTkc+IHNlY3Rpb25zIG9mCisgICAgICAgaW5kaXZpZHVhbCBtYW4gcGFnZXMuCiAKICAgICAgICBUaGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgYWxzbyBwcm92aWRlcyBtYW55IHVzZWZ1bCAgZXh0ZW5zaW9ucywKICAgICAgICBpLmUuLCAgZmVhdHVyZXMgIHdoaWNoICBjYW5ub3QgIGJlIGltcGxlbWVudGVkIGJ5IGEgc2ltcGxlCkBAIC05Niw2ICs5Niw5IEBACiAgICAgICAgbGF0aW9uOyB1c2Ugb2Ygc29mdCBsYWJlbCBrZXlzOyB0ZXJtaW5mbyBjYXBhYmlsaXRpZXM7IGFuZAogICAgICAgIGFjY2VzcyB0byBsb3ctbGV2ZWwgdGVybWluYWwtbWFuaXB1bGF0aW9uIHJvdXRpbmVzLgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUluaXRpYWxpemF0aW9uIj5Jbml0aWFsaXphdGlvbjwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlICBsaWJyYXJ5IHVzZXMgdGhlIGxvY2FsZSB3aGljaCB0aGUgY2FsbGluZyBwcm9ncmFtIGhhcwogICAgICAgIGluaXRpYWxpemVkLiAgVGhhdCBpcyBub3JtYWxseSBkb25lIHdpdGggPFNUUk9ORz5zZXRsb2NhbGU8L1NUUk9ORz46CiAKQEAgLTEzMSw2ICsxMzQsOSBAQAogICAgICAgIDxTVFJPTkc+VEVSTTwvU1RST05HPiAgaGFzICBiZWVuICBleHBvcnRlZC4gIDxTVFJPTkc+dHNldCgxKTwvU1RST05HPiBpcyB1c3VhbGx5IHJlc3BvbnNpYmxlCiAgICAgICAgZm9yIGRvaW5nIHRoaXMuICBbU2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gZm9yIGZ1cnRoZXIgZGV0YWlscy5dCiAKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRGF0YXR5cGVzIj5EYXRhdHlwZXM8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBwZXJtaXRzIG1hbmlwdWxhdGlvbiAgb2YgIGRhdGEgIHN0cnVjLQogICAgICAgIHR1cmVzLCAgY2FsbGVkICA8RU0+d2luZG93czwvRU0+LCAgd2hpY2ggIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHR3by0KICAgICAgICBkaW1lbnNpb25hbCBhcnJheXMgb2YgY2hhcmFjdGVycyByZXByZXNlbnRpbmcgYWxsIG9yICBwYXJ0CkBAIC0xNTAsNDggKzE1Niw1MSBAQAogICAgICAgIEFtb25nIHRob3NlLCB0aGUgbW9zdCBiYXNpYyByb3V0aW5lcyBhcmUgPFNUUk9ORz5tb3ZlPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+YWRkY2g8L1NUUk9ORz4uCiAgICAgICAgTW9yZSAgZ2VuZXJhbCB2ZXJzaW9ucyBvZiB0aGVzZSByb3V0aW5lcyBhcmUgaW5jbHVkZWQgd2l0aAogICAgICAgIG5hbWVzIGJlZ2lubmluZyB3aXRoIDxTVFJPTkc+dzwvU1RST05HPiwgYWxsb3dpbmcgdGhlICB1c2VyICB0byAgc3BlY2lmeSAgYQotICAgICAgIHdpbmRvdy4gICBUaGUgcm91dGluZXMgbm90IGJlZ2lubmluZyB3aXRoIDxTVFJPTkc+dzwvU1RST05HPiBhZmZlY3QgPFNUUk9ORz5zdGRzY3I8L1NUUk9ORz4uCisgICAgICAgd2luZG93LiAgVGhlIHJvdXRpbmVzIG5vdCBiZWdpbm5pbmcgd2l0aCA8U1RST05HPnc8L1NUUk9ORz4gYWZmZWN0IDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+LgogCi0gICAgICAgQWZ0ZXIgdXNpbmcgcm91dGluZXMgdG8gbWFuaXB1bGF0ZSBhICB3aW5kb3csICA8U1RST05HPnJlZnJlc2g8L1NUUk9ORz4gIGlzCi0gICAgICAgY2FsbGVkLCAgdGVsbGluZyA8U1RST05HPmN1cnNlczwvU1RST05HPiB0byBtYWtlIHRoZSB1c2VyJ3MgQ1JUIHNjcmVlbiBsb29rCi0gICAgICAgbGlrZSA8U1RST05HPnN0ZHNjcjwvU1RST05HPi4gIFRoZSBjaGFyYWN0ZXJzIGluIGEgd2luZG93IGFyZSAgYWN0dWFsbHkgIG9mCi0gICAgICAgdHlwZSAgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4sIChjaGFyYWN0ZXIgYW5kIGF0dHJpYnV0ZSBkYXRhKSBzbyB0aGF0IG90aGVyCi0gICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoYXJhY3RlciBtYXkgYWxzbyAgYmUgIHN0b3JlZCAgd2l0aAorICAgICAgIEFmdGVyICB1c2luZyAgcm91dGluZXMgIHRvIG1hbmlwdWxhdGUgYSB3aW5kb3csIDxTVFJPTkc+cmVmcmVzaDwvU1RST05HPiBpcworICAgICAgIGNhbGxlZCwgdGVsbGluZyA8U1RST05HPmN1cnNlczwvU1RST05HPiB0byBtYWtlIHRoZSB1c2VyJ3MgQ1JUIHNjcmVlbiAgbG9vaworICAgICAgIGxpa2UgIDxTVFJPTkc+c3Rkc2NyPC9TVFJPTkc+LiAgIFRoZSBjaGFyYWN0ZXJzIGluIGEgd2luZG93IGFyZSBhY3R1YWxseSBvZgorICAgICAgIHR5cGUgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4sIChjaGFyYWN0ZXIgYW5kIGF0dHJpYnV0ZSBkYXRhKSBzbyB0aGF0ICBvdGhlcgorICAgICAgIGluZm9ybWF0aW9uICBhYm91dCAgdGhlICBjaGFyYWN0ZXIgbWF5IGFsc28gYmUgc3RvcmVkIHdpdGgKICAgICAgICBlYWNoIGNoYXJhY3Rlci4KIAotICAgICAgIFNwZWNpYWwgIHdpbmRvd3MgIGNhbGxlZCAgPEVNPnBhZHM8L0VNPiAgbWF5ICBhbHNvICBiZSBtYW5pcHVsYXRlZC4KKyAgICAgICBTcGVjaWFsIHdpbmRvd3MgIGNhbGxlZCAgPEVNPnBhZHM8L0VNPiAgbWF5ICBhbHNvICBiZSAgbWFuaXB1bGF0ZWQuCiAgICAgICAgVGhlc2UgYXJlIHdpbmRvd3Mgd2hpY2ggYXJlIG5vdCBjb25zdHJhaW5lZCB0byB0aGUgc2l6ZSBvZgotICAgICAgIHRoZSAgc2NyZWVuIGFuZCB3aG9zZSBjb250ZW50cyBuZWVkIG5vdCBiZSBjb21wbGV0ZWx5IGRpcy0KKyAgICAgICB0aGUgc2NyZWVuIGFuZCB3aG9zZSBjb250ZW50cyBuZWVkIG5vdCBiZSBjb21wbGV0ZWx5ICBkaXMtCiAgICAgICAgcGxheWVkLiAgU2VlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wYWQuM3guaHRtbCI+Y3Vyc19wYWQoM3gpPC9BPjwvU1RST05HPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotICAgICAgIEluIGFkZGl0aW9uIHRvIGRyYXdpbmcgY2hhcmFjdGVycyAgb24gIHRoZSAgc2NyZWVuLCAgdmlkZW8KLSAgICAgICBhdHRyaWJ1dGVzICBhbmQgY29sb3JzIG1heSBiZSBzdXBwb3J0ZWQsIGNhdXNpbmcgdGhlIGNoYXItCi0gICAgICAgYWN0ZXJzIHRvIHNob3cgdXAgaW4gc3VjaCBtb2RlcyBhcyB1bmRlcmxpbmVkLCBpbiAgcmV2ZXJzZQotICAgICAgIHZpZGVvLCAgb3IgaW4gY29sb3Igb24gdGVybWluYWxzIHRoYXQgc3VwcG9ydCBzdWNoIGRpc3BsYXkKKyAgICAgICBJbiAgYWRkaXRpb24gIHRvICBkcmF3aW5nICBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sIHZpZGVvCisgICAgICAgYXR0cmlidXRlcyBhbmQgY29sb3JzIG1heSBiZSBzdXBwb3J0ZWQsIGNhdXNpbmcgdGhlICBjaGFyLQorICAgICAgIGFjdGVycyAgdG8gc2hvdyB1cCBpbiBzdWNoIG1vZGVzIGFzIHVuZGVybGluZWQsIGluIHJldmVyc2UKKyAgICAgICB2aWRlbywgb3IgaW4gY29sb3Igb24gdGVybWluYWxzIHRoYXQgc3VwcG9ydCBzdWNoICBkaXNwbGF5CiAgICAgICAgZW5oYW5jZW1lbnRzLiAgTGluZSBkcmF3aW5nIGNoYXJhY3RlcnMgbWF5IGJlIHNwZWNpZmllZCB0bwotICAgICAgIGJlICBvdXRwdXQuICAgT24gIGlucHV0LCAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gaXMgYWxzbyBhYmxlIHRvIHRyYW5zbGF0ZQotICAgICAgIGFycm93IGFuZCBmdW5jdGlvbiBrZXlzICB0aGF0ICB0cmFuc21pdCAgZXNjYXBlICBzZXF1ZW5jZXMKLSAgICAgICBpbnRvICBzaW5nbGUgIHZhbHVlcy4gICBUaGUgdmlkZW8gYXR0cmlidXRlcywgbGluZSBkcmF3aW5nCi0gICAgICAgY2hhcmFjdGVycywgIGFuZCAgaW5wdXQgIHZhbHVlcyAgdXNlICBuYW1lcywgIGRlZmluZWQgICBpbgorICAgICAgIGJlIG91dHB1dC4gIE9uIGlucHV0LCA8U1RST05HPmN1cnNlczwvU1RST05HPiBpcyAgYWxzbyAgYWJsZSAgdG8gIHRyYW5zbGF0ZQorICAgICAgIGFycm93ICBhbmQgIGZ1bmN0aW9uICBrZXlzICB0aGF0IHRyYW5zbWl0IGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICBpbnRvIHNpbmdsZSB2YWx1ZXMuICBUaGUgdmlkZW8gIGF0dHJpYnV0ZXMsICBsaW5lICBkcmF3aW5nCisgICAgICAgY2hhcmFjdGVycywgICBhbmQgIGlucHV0ICB2YWx1ZXMgIHVzZSAgbmFtZXMsICBkZWZpbmVkICBpbgogICAgICAgIDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPiwgc3VjaCBhcyA8U1RST05HPkFfUkVWRVJTRTwvU1RST05HPiwgPFNUUk9ORz5BQ1NfSExJTkU8L1NUUk9ORz4sIGFuZCA8U1RST05HPktFWV9MRUZUPC9TVFJPTkc+LgogCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUVudmlyb25tZW50LXZhcmlhYmxlcyI+RW52aXJvbm1lbnQgdmFyaWFibGVzPC9hPjwvSDM+PFBSRT4KICAgICAgICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiBhcmUgc2V0LCBvcgotICAgICAgIGlmIHRoZSBwcm9ncmFtIGlzIGV4ZWN1dGluZyBpbiBhIHdpbmRvdyBlbnZpcm9ubWVudCwgIGxpbmUKLSAgICAgICBhbmQgIGNvbHVtbiAgaW5mb3JtYXRpb24gIGluIHRoZSBlbnZpcm9ubWVudCB3aWxsIG92ZXJyaWRlCisgICAgICAgaWYgIHRoZSBwcm9ncmFtIGlzIGV4ZWN1dGluZyBpbiBhIHdpbmRvdyBlbnZpcm9ubWVudCwgbGluZQorICAgICAgIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gaW4gdGhlICBlbnZpcm9ubWVudCAgd2lsbCAgb3ZlcnJpZGUKICAgICAgICBpbmZvcm1hdGlvbiByZWFkIGJ5IDxFTT50ZXJtaW5mbzwvRU0+LiAgVGhpcyB3b3VsZCBhZmZlY3QgYSBwcm9ncmFtCi0gICAgICAgcnVubmluZyAgaW4gYW4gQVQmYW1wO1QgNjMwIGxheWVyLCBmb3IgZXhhbXBsZSwgd2hlcmUgdGhlIHNpemUKKyAgICAgICBydW5uaW5nIGluIGFuIEFUJmFtcDtUIDYzMCBsYXllciwgZm9yIGV4YW1wbGUsIHdoZXJlIHRoZSAgc2l6ZQogICAgICAgIG9mIGEgc2NyZWVuIGlzIGNoYW5nZWFibGUgKHNlZSA8U1RST05HPkVOVklST05NRU5UPC9TVFJPTkc+KS4KIAotICAgICAgIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8U1RST05HPlRFUk1JTkZPPC9TVFJPTkc+IGlzIGRlZmluZWQsIGFueSAgcHJvLQotICAgICAgIGdyYW0gIHVzaW5nICA8U1RST05HPmN1cnNlczwvU1RST05HPiBjaGVja3MgZm9yIGEgbG9jYWwgdGVybWluYWwgZGVmaW5pdGlvbgotICAgICAgIGJlZm9yZSBjaGVja2luZyBpbiB0aGUgc3RhbmRhcmQgcGxhY2UuICAgRm9yICBleGFtcGxlLCAgaWYKKyAgICAgICBJZiAgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxTVFJPTkc+VEVSTUlORk88L1NUUk9ORz4gaXMgZGVmaW5lZCwgYW55IHByby0KKyAgICAgICBncmFtIHVzaW5nIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IGNoZWNrcyBmb3IgYSBsb2NhbCAgdGVybWluYWwgIGRlZmluaXRpb24KKyAgICAgICBiZWZvcmUgIGNoZWNraW5nICBpbiAgdGhlIHN0YW5kYXJkIHBsYWNlLiAgRm9yIGV4YW1wbGUsIGlmCiAgICAgICAgPFNUUk9ORz5URVJNPC9TVFJPTkc+IGlzIHNldCB0byA8U1RST05HPmF0dDQ0MjQ8L1NUUk9ORz4sIHRoZW4gdGhlIGNvbXBpbGVkIHRlcm1pbmFsIGRlZmluaS0KICAgICAgICB0aW9uIGlzIGZvdW5kIGluCiAKICAgICAgICAgICAgICA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm8vYS9hdHQ0NDI0PC9TVFJPTkc+LgogCiAgICAgICAgKFRoZSA8U1RST05HPmE8L1NUUk9ORz4gaXMgY29waWVkIGZyb20gdGhlIGZpcnN0IGxldHRlciBvZiA8U1RST05HPmF0dDQ0MjQ8L1NUUk9ORz4gdG8gYXZvaWQKLSAgICAgICBjcmVhdGlvbiAgb2YgIGh1Z2UgIGRpcmVjdG9yaWVzLikgIEhvd2V2ZXIsIGlmIDxTVFJPTkc+VEVSTUlORk88L1NUUk9ORz4gaXMKKyAgICAgICBjcmVhdGlvbiBvZiBodWdlIGRpcmVjdG9yaWVzLikgIEhvd2V2ZXIsICBpZiAgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiAgaXMKICAgICAgICBzZXQgdG8gPFNUUk9ORz4kSE9NRS9teXRlcm1zPC9TVFJPTkc+LCA8U1RST05HPmN1cnNlczwvU1RST05HPiBmaXJzdCBjaGVja3MKIAogICAgICAgICAgICAgIDxTVFJPTkc+JEhPTUUvbXl0ZXJtcy9hL2F0dDQ0MjQ8L1NUUk9ORz4sCkBAIC0yMDAsMTIwICsyMDksMTIxIEBACiAKICAgICAgICAgICAgICA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm8vYS9hdHQ0NDI0PC9TVFJPTkc+LgogCi0gICAgICAgVGhpcyBpcyB1c2VmdWwgZm9yIGRldmVsb3BpbmcgZXhwZXJpbWVudGFsIGRlZmluaXRpb25zICBvcgorICAgICAgIFRoaXMgIGlzIHVzZWZ1bCBmb3IgZGV2ZWxvcGluZyBleHBlcmltZW50YWwgZGVmaW5pdGlvbnMgb3IKICAgICAgICB3aGVuIHdyaXRlIHBlcm1pc3Npb24gaW4gPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+IGlzIG5vdCBhdmFpbC0KICAgICAgICBhYmxlLgogCi0gICAgICAgVGhlIGludGVnZXIgIHZhcmlhYmxlcyAgPFNUUk9ORz5MSU5FUzwvU1RST05HPiAgYW5kICA8U1RST05HPkNPTFM8L1NUUk9ORz4gIGFyZSAgZGVmaW5lZCAgaW4KLSAgICAgICA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4gIGFuZCB3aWxsIGJlIGZpbGxlZCBpbiBieSA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gd2l0aCB0aGUgc2l6ZQorICAgICAgIFRoZSAgaW50ZWdlciAgdmFyaWFibGVzICA8U1RST05HPkxJTkVTPC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+Q09MUzwvU1RST05HPiAgYXJlICBkZWZpbmVkIGluCisgICAgICAgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+IGFuZCB3aWxsIGJlIGZpbGxlZCBpbiBieSA8U1RST05HPmluaXRzY3I8L1NUUk9ORz4gd2l0aCB0aGUgIHNpemUKICAgICAgICBvZiB0aGUgc2NyZWVuLiAgVGhlIGNvbnN0YW50cyA8U1RST05HPlRSVUU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gaGF2ZSB0aGUgdmFsLQogICAgICAgIHVlcyA8U1RST05HPjE8L1NUUk9ORz4gYW5kIDxTVFJPTkc+MDwvU1RST05HPiwgcmVzcGVjdGl2ZWx5LgogCi0gICAgICAgVGhlICA8U1RST05HPmN1cnNlczwvU1RST05HPiAgcm91dGluZXMgIGFsc28gIGRlZmluZSAgdGhlIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiB2YXJpYWJsZQorICAgICAgIFRoZSA8U1RST05HPmN1cnNlczwvU1RST05HPiByb3V0aW5lcyBhbHNvICBkZWZpbmUgIHRoZSAgPFNUUk9ORz5XSU5ET1c8L1NUUk9ORz4gIDxTVFJPTkc+KjwvU1RST05HPiAgdmFyaWFibGUKICAgICAgICA8U1RST05HPmN1cnNjcjwvU1RST05HPiB3aGljaCBpcyB1c2VkIGZvciBjZXJ0YWluIGxvdy1sZXZlbCBvcGVyYXRpb25zIGxpa2UKLSAgICAgICBjbGVhcmluZyAgYW5kICByZWRyYXdpbmcgYSBzY3JlZW4gY29udGFpbmluZyBnYXJiYWdlLiAgVGhlCisgICAgICAgY2xlYXJpbmcgYW5kIHJlZHJhd2luZyBhIHNjcmVlbiBjb250YWluaW5nICBnYXJiYWdlLiAgIFRoZQogICAgICAgIDxTVFJPTkc+Y3Vyc2NyPC9TVFJPTkc+IGNhbiBiZSB1c2VkIGluIG9ubHkgYSBmZXcgcm91dGluZXMuCiAKLSAgIDxTVFJPTkc+Um91dGluZTwvU1RST05HPiA8U1RST05HPmFuZDwvU1RST05HPiA8U1RST05HPkFyZ3VtZW50PC9TVFJPTkc+IDxTVFJPTkc+TmFtZXM8L1NUUk9ORz4KLSAgICAgICBNYW55IDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHJvdXRpbmVzIGhhdmUgdHdvIG9yIG1vcmUgdmVyc2lvbnMuICBUaGUgIHJvdS0KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUm91dGluZS1hbmQtQXJndW1lbnQtTmFtZXMiPlJvdXRpbmUgYW5kIEFyZ3VtZW50IE5hbWVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBNYW55ICA8U1RST05HPmN1cnNlczwvU1RST05HPiByb3V0aW5lcyBoYXZlIHR3byBvciBtb3JlIHZlcnNpb25zLiAgVGhlIHJvdS0KICAgICAgICB0aW5lcyBwcmVmaXhlZCB3aXRoIDxTVFJPTkc+dzwvU1RST05HPiByZXF1aXJlIGEgd2luZG93IGFyZ3VtZW50LiAgVGhlIHJvdS0KICAgICAgICB0aW5lcyBwcmVmaXhlZCB3aXRoIDxTVFJPTkc+cDwvU1RST05HPiByZXF1aXJlIGEgcGFkIGFyZ3VtZW50LiAgVGhvc2Ugd2l0aC0KICAgICAgICBvdXQgYSBwcmVmaXggZ2VuZXJhbGx5IHVzZSA8U1RST05HPnN0ZHNjcjwvU1RST05HPi4KIAogICAgICAgIFRoZSByb3V0aW5lcyBwcmVmaXhlZCB3aXRoIDxTVFJPTkc+bXY8L1NUUk9ORz4gcmVxdWlyZSBhIDxFTT55PC9FTT4gYW5kIDxFTT54PC9FTT4gY29vcmRpbmF0ZQotICAgICAgIHRvIG1vdmUgdG8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbi4gICBUaGUKLSAgICAgICA8U1RST05HPm12PC9TVFJPTkc+ICByb3V0aW5lcyAgaW1wbHkgIGEgY2FsbCB0byA8U1RST05HPm1vdmU8L1NUUk9ORz4gYmVmb3JlIHRoZSBjYWxsIHRvIHRoZQotICAgICAgIG90aGVyIHJvdXRpbmUuICBUaGUgY29vcmRpbmF0ZSA8RU0+eTwvRU0+IGFsd2F5cyByZWZlcnMgdG8gdGhlICByb3cKLSAgICAgICAob2YgIHRoZSAgd2luZG93KSwgYW5kIDxFTT54PC9FTT4gYWx3YXlzIHJlZmVycyB0byB0aGUgY29sdW1uLiAgVGhlCisgICAgICAgdG8gIG1vdmUgdG8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbi4gIFRoZQorICAgICAgIDxTVFJPTkc+bXY8L1NUUk9ORz4gcm91dGluZXMgaW1wbHkgYSBjYWxsIHRvIDxTVFJPTkc+bW92ZTwvU1RST05HPiBiZWZvcmUgdGhlICBjYWxsICB0byAgdGhlCisgICAgICAgb3RoZXIgIHJvdXRpbmUuICBUaGUgY29vcmRpbmF0ZSA8RU0+eTwvRU0+IGFsd2F5cyByZWZlcnMgdG8gdGhlIHJvdworICAgICAgIChvZiB0aGUgd2luZG93KSwgYW5kIDxFTT54PC9FTT4gYWx3YXlzIHJlZmVycyB0byB0aGUgIGNvbHVtbi4gICBUaGUKICAgICAgICB1cHBlciBsZWZ0LWhhbmQgY29ybmVyIGlzIGFsd2F5cyAoMCwwKSwgbm90ICgxLDEpLgogCiAgICAgICAgVGhlIHJvdXRpbmVzIHByZWZpeGVkIHdpdGggPFNUUk9ORz5tdnc8L1NUUk9ORz4gdGFrZSBib3RoIGEgd2luZG93IGFyZ3VtZW50Ci0gICAgICAgYW5kICA8RU0+eDwvRU0+ICBhbmQgIDxFTT55PC9FTT4gY29vcmRpbmF0ZXMuICBUaGUgd2luZG93IGFyZ3VtZW50IGlzIGFsd2F5cworICAgICAgIGFuZCA8RU0+eDwvRU0+IGFuZCA8RU0+eTwvRU0+IGNvb3JkaW5hdGVzLiAgVGhlIHdpbmRvdyAgYXJndW1lbnQgIGlzICBhbHdheXMKICAgICAgICBzcGVjaWZpZWQgYmVmb3JlIHRoZSBjb29yZGluYXRlcy4KIAotICAgICAgIEluIGVhY2ggY2FzZSwgPEVNPndpbjwvRU0+IGlzIHRoZSB3aW5kb3cgYWZmZWN0ZWQsIGFuZCA8RU0+cGFkPC9FTT4gIGlzICB0aGUKKyAgICAgICBJbiAgZWFjaCAgY2FzZSwgPEVNPndpbjwvRU0+IGlzIHRoZSB3aW5kb3cgYWZmZWN0ZWQsIGFuZCA8RU0+cGFkPC9FTT4gaXMgdGhlCiAgICAgICAgcGFkIGFmZmVjdGVkOyA8RU0+d2luPC9FTT4gYW5kIDxFTT5wYWQ8L0VNPiBhcmUgYWx3YXlzIHBvaW50ZXJzIHRvIHR5cGUgPFNUUk9ORz5XSU4tPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5ET1c8L1NUUk9ORz4uCiAKICAgICAgICBPcHRpb24gc2V0dGluZyByb3V0aW5lcyByZXF1aXJlIGEgQm9vbGVhbiBmbGFnIDxFTT5iZjwvRU0+IHdpdGggdGhlCi0gICAgICAgdmFsdWUgIDxTVFJPTkc+VFJVRTwvU1RST05HPiAgb3IgPFNUUk9ORz5GQUxTRTwvU1RST05HPjsgPEVNPmJmPC9FTT4gaXMgYWx3YXlzIG9mIHR5cGUgPFNUUk9ORz5ib29sPC9TVFJPTkc+LiAgTW9zdCBvZgotICAgICAgIHRoZSBkYXRhIHR5cGVzIHVzZWQgaW4gdGhlIGxpYnJhcnkgcm91dGluZXMsIHN1Y2ggYXMgIDxTVFJPTkc+V0lOLTwvU1RST05HPgotICAgICAgIDxTVFJPTkc+RE9XPC9TVFJPTkc+LCAgPFNUUk9ORz5TQ1JFRU48L1NUUk9ORz4sICA8U1RST05HPmJvb2w8L1NUUk9ORz4sIGFuZCA8U1RST05HPmNodHlwZTwvU1RST05HPiBhcmUgZGVmaW5lZCBpbiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCi0gICAgICAgVHlwZXMgdXNlZCBmb3IgdGhlIHRlcm1pbmZvIHJvdXRpbmVzIHN1Y2ggYXMgPFNUUk9ORz5URVJNSU5BTDwvU1RST05HPiAgYXJlCisgICAgICAgdmFsdWUgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IG9yIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz47IDxFTT5iZjwvRU0+IGlzIGFsd2F5cyBvZiB0eXBlIDxTVFJPTkc+Ym9vbDwvU1RST05HPi4gICBNb3N0ICBvZgorICAgICAgIHRoZSAgZGF0YSB0eXBlcyB1c2VkIGluIHRoZSBsaWJyYXJ5IHJvdXRpbmVzLCBzdWNoIGFzIDxTVFJPTkc+V0lOLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+RE9XPC9TVFJPTkc+LCA8U1RST05HPlNDUkVFTjwvU1RST05HPiwgPFNUUk9ORz5ib29sPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4gYXJlIGRlZmluZWQgIGluICA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4uCisgICAgICAgVHlwZXMgIHVzZWQgZm9yIHRoZSB0ZXJtaW5mbyByb3V0aW5lcyBzdWNoIGFzIDxTVFJPTkc+VEVSTUlOQUw8L1NUUk9ORz4gYXJlCiAgICAgICAgZGVmaW5lZCBpbiA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+LgogCi0gICAgICAgVGhpcyAgbWFudWFsICBwYWdlIGRlc2NyaWJlcyBmdW5jdGlvbnMgd2hpY2ggbWF5IGFwcGVhciBpbgotICAgICAgIGFueSBjb25maWd1cmF0aW9uIG9mIHRoZSBsaWJyYXJ5LiAgVGhlcmUgIGFyZSAgdHdvICBjb21tb24KKyAgICAgICBUaGlzIG1hbnVhbCBwYWdlIGRlc2NyaWJlcyBmdW5jdGlvbnMgd2hpY2ggbWF5ICBhcHBlYXIgIGluCisgICAgICAgYW55ICBjb25maWd1cmF0aW9uICBvZiAgdGhlIGxpYnJhcnkuICBUaGVyZSBhcmUgdHdvIGNvbW1vbgogICAgICAgIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSBsaWJyYXJ5OgogCi0gICAgICAgICAgICAgIG5jdXJzZXMKLSAgICAgICAgICAgICAgICAgICB0aGUgICJub3JtYWwiICBsaWJyYXJ5LCAgd2hpY2ggIGhhbmRsZXMgIDgtYml0Ci0gICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gIFRoZSBub3JtYWwgKDgtYml0KSBsaWJyYXJ5IHN0b3JlcwotICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgIGNvbWJpbmVkIHdpdGggYXR0cmlidXRlcyBpbiA8U1RST05HPmNodHlwZTwvU1RST05HPgotICAgICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAgICAgPEVNPm5jdXJzZXM8L0VNPgorICAgICAgICAgICAgICAgdGhlICJub3JtYWwiIGxpYnJhcnksIHdoaWNoIGhhbmRsZXMgOC1iaXQgIGNoYXJhYy0KKyAgICAgICAgICAgICAgIHRlcnMuICAgVGhlICBub3JtYWwgKDgtYml0KSBsaWJyYXJ5IHN0b3JlcyBjaGFyYWMtCisgICAgICAgICAgICAgICB0ZXJzIGNvbWJpbmVkIHdpdGggYXR0cmlidXRlcyBpbiA8U1RST05HPmNodHlwZTwvU1RST05HPiBkYXRhLgogCi0gICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcyBhbG9uZSAobm8gY29ycmVzcG9uZGluZyAgY2hhcmFjdGVyKQotICAgICAgICAgICAgICAgICAgIG1heSAgYmUgIHN0b3JlZCAgaW4gIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+ICBvciB0aGUgZXF1aXZhbGVudAotICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+YXR0cl90PC9TVFJPTkc+IGRhdGEuICBJbiAgZWl0aGVyICBjYXNlLCAgdGhlICBkYXRhICBpcwotICAgICAgICAgICAgICAgICAgIHN0b3JlZCBpbiBzb21ldGhpbmcgbGlrZSBhbiBpbnRlZ2VyLgorICAgICAgICAgICAgICAgQXR0cmlidXRlcyBhbG9uZSAobm8gY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIpICBtYXkKKyAgICAgICAgICAgICAgIGJlIHN0b3JlZCBpbiA8U1RST05HPmNodHlwZTwvU1RST05HPiBvciB0aGUgZXF1aXZhbGVudCA8U1RST05HPmF0dHJfdDwvU1RST05HPiBkYXRhLgorICAgICAgICAgICAgICAgSW4gZWl0aGVyIGNhc2UsIHRoZSBkYXRhIGlzICBzdG9yZWQgIGluICBzb21ldGhpbmcKKyAgICAgICAgICAgICAgIGxpa2UgYW4gaW50ZWdlci4KIAotICAgICAgICAgICAgICAgICAgIEVhY2ggIGNlbGwgIChyb3cgIGFuZCAgY29sdW1uKSAgaW4gYSA8U1RST05HPldJTkRPVzwvU1RST05HPiBpcwotICAgICAgICAgICAgICAgICAgIHN0b3JlZCBhcyBhIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+LgorICAgICAgICAgICAgICAgRWFjaCAgY2VsbCAgKHJvdyBhbmQgY29sdW1uKSBpbiBhIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IGlzIHN0b3JlZAorICAgICAgICAgICAgICAgYXMgYSA8U1RST05HPmNodHlwZTwvU1RST05HPi4KIAotICAgICAgICAgICAgICBuY3Vyc2VzdwotICAgICAgICAgICAgICAgICAgIHRoZSBzby1jYWxsZWQgIndpZGUiICBsaWJyYXJ5LCAgd2hpY2ggIGhhbmRsZXMKLSAgICAgICAgICAgICAgICAgICBtdWx0aWJ5dGUgICBjaGFyYWN0ZXJzICAoU2VlICB0aGUgIHNlY3Rpb24gIG9uCi0gICAgICAgICAgICAgICAgICAgPFNUUk9ORz5BTFRFUk5BVEU8L1NUUk9ORz4gPFNUUk9ORz5DT05GSUdVUkFUSU9OUzwvU1RST05HPikuICBUaGUgIndpZGUiIGxpYnJhcnkKLSAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyAgYWxsICBvZiAgdGhlIGNhbGxzIGZyb20gdGhlICJub3JtYWwiCi0gICAgICAgICAgICAgICAgICAgbGlicmFyeS4gIEl0IGFkZHMgYWJvdXQgb25lIHRoaXJkICBtb3JlICBjYWxscwotICAgICAgICAgICAgICAgICAgIHVzaW5nIGRhdGEgdHlwZXMgd2hpY2ggc3RvcmUgbXVsdGlieXRlIGNoYXJhYy0KLSAgICAgICAgICAgICAgICAgICB0ZXJzOgorICAgICAgICAgIDxFTT5uY3Vyc2VzdzwvRU0+CisgICAgICAgICAgICAgICB0aGUgc28tY2FsbGVkICJ3aWRlIiBsaWJyYXJ5LCB3aGljaCBoYW5kbGVzIG11bHRpLQorICAgICAgICAgICAgICAgYnl0ZSBjaGFyYWN0ZXJzIChzZWUgdGhlIHNlY3Rpb24gb24gPFNUUk9ORz5BTFRFUk5BVEU8L1NUUk9ORz4gPFNUUk9ORz5DT04tPC9TVFJPTkc+CisgICAgICAgICAgICAgICA8U1RST05HPkZJR1VSQVRJT05TPC9TVFJPTkc+KS4gIFRoZSAid2lkZSIgbGlicmFyeSBpbmNsdWRlcyBhbGwgIG9mCisgICAgICAgICAgICAgICB0aGUgIGNhbGxzICBmcm9tICB0aGUgICJub3JtYWwiICBsaWJyYXJ5LiAgSXQgYWRkcworICAgICAgICAgICAgICAgYWJvdXQgb25lIHRoaXJkIG1vcmUgY2FsbHMgdXNpbmcgZGF0YSB0eXBlcyAgd2hpY2gKKyAgICAgICAgICAgICAgIHN0b3JlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzOgogCi0gICAgICAgICAgICAgICAgICAgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byA8U1RST05HPmNodHlwZTwvU1RST05HPi4gIEhvd2V2ZXIgaXQgIGlzICBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsICBiZWNhdXNlICBtb3JlICBkYXRhIGlzIHN0b3JlZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiBjYW4gZml0IGludG8gYW4gaW50ZWdlci4gIFRoZSAgY2hhci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGVycyBhcmUgbGFyZ2UgZW5vdWdoIHRvIHJlcXVpcmUgYSBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyIHZhbHVlIC0gYW5kICB0aGVyZSAgbWF5ICBiZSAgbW9yZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiAgb25lICBjaGFyYWN0ZXIgcGVyIGNlbGwuICBUaGUgdmlkZW8KLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYW5kIGNvbG9yIGFyZSBzdG9yZWQgaW4gIHNlcGEtCi0gICAgICAgICAgICAgICAgICAgICAgICByYXRlIGZpZWxkcyBvZiB0aGUgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgPFNUUk9ORz5jY2hhcl90PC9TVFJPTkc+CisgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzICB0byAgPFNUUk9ORz5jaHR5cGU8L1NUUk9ORz4uICAgSG93ZXZlciAgaXQgIGlzICBhCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgYmVjYXVzZSBtb3JlIGRhdGEgaXMgIHN0b3JlZCAgdGhhbgorICAgICAgICAgICAgICAgICAgICBjYW4gIGZpdCBpbnRvIGFuIGludGVnZXIuICBUaGUgY2hhcmFjdGVycyBhcmUKKyAgICAgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHRvIHJlcXVpcmUgYSBmdWxsIGludGVnZXIgIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIC0gIGFuZCAgdGhlcmUgIG1heSBiZSBtb3JlIHRoYW4gb25lIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBwZXIgY2VsbC4gIFRoZSB2aWRlbyBhdHRyaWJ1dGVzIGFuZCBjb2xvciBhcmUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVkIGluIHNlcGFyYXRlIGZpZWxkcyBvZiB0aGUgc3RydWN0dXJlLgogCi0gICAgICAgICAgICAgICAgICAgICAgICBFYWNoIGNlbGwgKHJvdyBhbmQgY29sdW1uKSBpbiBhIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZWQgYXMgYSA8U1RST05HPmNjaGFyX3Q8L1NUUk9ORz4uCisgICAgICAgICAgICAgICAgICAgIEVhY2ggIGNlbGwgIChyb3cgIGFuZCAgY29sdW1uKSBpbiBhIDxTVFJPTkc+V0lORE9XPC9TVFJPTkc+IGlzCisgICAgICAgICAgICAgICAgICAgIHN0b3JlZCBhcyBhIDxTVFJPTkc+Y2NoYXJfdDwvU1RST05HPi4KIAotICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPgotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzIGEgIndpZGUiIGNoYXJhY3Rlci4gIExpa2UgIDxTVFJPTkc+Y2h0eXBlPC9TVFJPTkc+LAotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBtYXkgYmUgYW4gaW50ZWdlci4KKyAgICAgICAgICAgICAgIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPgorICAgICAgICAgICAgICAgICAgICBzdG9yZXMgYSAid2lkZSIgY2hhcmFjdGVyLiAgTGlrZSA8U1RST05HPmNodHlwZTwvU1RST05HPiwgdGhpcworICAgICAgICAgICAgICAgICAgICBtYXkgYmUgYW4gaW50ZWdlci4KIAotICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+d2ludF90PC9TVFJPTkc+Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZXMgIGEgPFNUUk9ORz53Y2hhcl90PC9TVFJPTkc+IG9yIDxTVFJPTkc+V0VPRjwvU1RST05HPiAtIG5vdCB0aGUgc2FtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRob3VnaCBib3RoIG1heSBoYXZlIHRoZSBzYW1lIHNpemUuCisgICAgICAgICAgICAgICA8U1RST05HPndpbnRfdDwvU1RST05HPgorICAgICAgICAgICAgICAgICAgICBzdG9yZXMgIGEgIDxTVFJPTkc+d2NoYXJfdDwvU1RST05HPiAgb3IgIDxTVFJPTkc+V0VPRjwvU1RST05HPiAgLSBub3QgdGhlIHNhbWUsCisgICAgICAgICAgICAgICAgICAgIHRob3VnaCBib3RoIG1heSBoYXZlIHRoZSBzYW1lIHNpemUuCiAKLSAgICAgICAgICAgICAgICAgICBUaGUgICJ3aWRlIiAgbGlicmFyeSAgcHJvdmlkZXMgIG5ldyAgZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgd2hpY2ggIGFyZSBhbmFsb2dvdXMgdG8gZnVuY3Rpb25zIGluIHRoZSAibm9yLQotICAgICAgICAgICAgICAgICAgIG1hbCIgbGlicmFyeS4gIFRoZXJlIGlzICBhICBuYW1pbmcgIGNvbnZlbnRpb24KLSAgICAgICAgICAgICAgICAgICB3aGljaCAgcmVsYXRlcyAgbWFueSAgb2YgdGhlIG5vcm1hbC93aWRlIHZhcmktCi0gICAgICAgICAgICAgICAgICAgYW50czogYSAiX3ciIGlzIGluc2VydGVkIGludG8gdGhlICBuYW1lLiAgIEZvcgotICAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+IGJlY29tZXMgPFNUUk9ORz53YWRkX3djaDwvU1RST05HPi4KKyAgICAgICAgICAgICAgIFRoZSAid2lkZSIgbGlicmFyeSBwcm92aWRlcyAgbmV3ICBmdW5jdGlvbnMgIHdoaWNoCisgICAgICAgICAgICAgICBhcmUgICBhbmFsb2dvdXMgICB0byAgZnVuY3Rpb25zICBpbiAgdGhlICAibm9ybWFsIgorICAgICAgICAgICAgICAgbGlicmFyeS4gICBUaGVyZSAgaXMgIGEgIG5hbWluZyAgY29udmVudGlvbiAgd2hpY2gKKyAgICAgICAgICAgICAgIHJlbGF0ZXMgIG1hbnkgIG9mIHRoZSBub3JtYWwvd2lkZSB2YXJpYW50czogYSAiX3ciCisgICAgICAgICAgICAgICBpcyBpbnNlcnRlZCBpbnRvIHRoZSBuYW1lLiAgIEZvciAgZXhhbXBsZSwgIDxTVFJPTkc+d2FkZGNoPC9TVFJPTkc+CisgICAgICAgICAgICAgICBiZWNvbWVzIDxTVFJPTkc+d2FkZF93Y2g8L1NUUk9ORz4uCiAKIAotICAgPFNUUk9ORz5Sb3V0aW5lPC9TVFJPTkc+IDxTVFJPTkc+TmFtZTwvU1RST05HPiA8U1RST05HPkluZGV4PC9TVFJPTkc+Cis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Sb3V0aW5lLU5hbWUtSW5kZXgiPlJvdXRpbmUgTmFtZSBJbmRleDwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyBlYWNoIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHJvdXRpbmUgYW5kIHRoZSBuYW1lCiAgICAgICAgb2YgdGhlIG1hbnVhbCBwYWdlIG9uIHdoaWNoICBpdCAgaXMgIGRlc2NyaWJlZC4gICBSb3V0aW5lcwogICAgICAgIGZsYWdnZWQgIHdpdGggIGAqJyAgYXJlIG5jdXJzZXMtc3BlY2lmaWMsIG5vdCBkZXNjcmliZWQgYnkKICAgICAgICBYUEc0IG9yIHByZXNlbnQgaW4gU1ZyNC4KIAotCiAgICAgICAgICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IFJvdXRpbmUgTmFtZSAgICAgTWFudWFsIFBhZ2UgTmFtZQogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICBDT0xPUl9QQUlSICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY29sb3IuM3guaHRtbCI+Y3Vyc19jb2xvcigzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIFBBSVJfTlVNQkVSICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hdHRyLjN4Lmh0bWwiPmN1cnNfYXR0cigzeCk8L0E+PC9TVFJPTkc+CisgICAgICAgICAgICAgIF9uY19mcmVlX2FuZF9leGl0ICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tZW1sZWFrcy4zeC5odG1sIj5jdXJzX21lbWxlYWtzKDN4KTwvQT48L1NUUk9ORz4qCisgICAgICAgICAgICAgIF9uY19mcmVlYWxsICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19tZW1sZWFrcy4zeC5odG1sIj5jdXJzX21lbWxlYWtzKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIF9uY190cmFjZWJpdHMgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlKDN4KTwvQT48L1NUUk9ORz4qCi0KICAgICAgICAgICAgICAgX3RyYWNlYXR0ciAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RyYWNlLjN4Lmh0bWwiPmN1cnNfdHJhY2UoM3gpPC9BPjwvU1RST05HPioKICAgICAgICAgICAgICAgX3RyYWNlYXR0cjIgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RyYWNlLjN4Lmh0bWwiPmN1cnNfdHJhY2UoM3gpPC9BPjwvU1RST05HPioKICAgICAgICAgICAgICAgX3RyYWNlY2hhciAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RyYWNlLjN4Lmh0bWwiPmN1cnNfdHJhY2UoM3gpPC9BPjwvU1RST05HPioKKwogICAgICAgICAgICAgICBfdHJhY2VjaHR5cGUgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZSgzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICBfdHJhY2VjaHR5cGUyICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZSgzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICBfdHJhY2VkdW1wICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdHJhY2UuM3guaHRtbCI+Y3Vyc190cmFjZSgzeCk8L0E+PC9TVFJPTkc+KgpAQCAtMzc2LDExICszODYsMTEgQEAKICAgICAgICAgICAgICAgZWNob2NoYXIgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2FkZGNoLjN4Lmh0bWwiPmN1cnNfYWRkY2goM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBlbmR3aW4gICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBlcmFzZSAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfY2xlYXIuM3guaHRtbCI+Y3Vyc19jbGVhcigzeCk8L0E+PC9TVFJPTkc+Ci0KICAgICAgICAgICAgICAgZXJhc2VjaGFyICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1hdHRycy4zeC5odG1sIj5jdXJzX3Rlcm1hdHRycygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIGVyYXNld2NoYXIgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtYXR0cnMuM3guaHRtbCI+Y3Vyc190ZXJtYXR0cnMoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBmaWx0ZXIgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBmbGFzaCAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYmVlcC4zeC5odG1sIj5jdXJzX2JlZXAoM3gpPC9BPjwvU1RST05HPgorCiAgICAgICAgICAgICAgIGZsdXNoaW5wICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIGdldF93Y2ggICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRfd2NoLjN4Lmh0bWwiPmN1cnNfZ2V0X3djaCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIGdldF93c3RyICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRfd3N0ci4zeC5odG1sIj5jdXJzX2dldF93c3RyKDN4KTwvQT48L1NUUk9ORz4KQEAgLTQ0MiwxNCArNDUyLDE2IEBACiAgICAgICAgICAgICAgIGlzX2NsZWFyZWQgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPioKICAgICAgICAgICAgICAgaXNfaWRjb2sgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICBpc19pZGxvayAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCi0KICAgICAgICAgICAgICAgaXNfaW1tZWRvayAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICBpc19rZXlwYWQgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIGlzX2xlYXZlb2sgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPioKICAgICAgICAgICAgICAgaXNfbGluZXRvdWNoZWQgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2goM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBpc19ub2RlbGF5ICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCisKICAgICAgICAgICAgICAgaXNfbm90aW1lb3V0ICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KgorICAgICAgICAgICAgICBpc19wYWQgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIGlzX3Njcm9sbG9rICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPioKKyAgICAgICAgICAgICAgaXNfc3Vid2luICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICBpc19zeW5jb2sgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIGlzX3Rlcm1fcmVzaXplZCAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0icmVzaXpldGVybS4zeC5odG1sIj5yZXNpemV0ZXJtKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIGlzX3dpbnRvdWNoZWQgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190b3VjaC4zeC5odG1sIj5jdXJzX3RvdWNoKDN4KTwvQT48L1NUUk9ORz4KQEAgLTUwOCwxMSArNTIwLDExIEBACiAgICAgICAgICAgICAgIG12aW5zc3RyICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbnNzdHIuM3guaHRtbCI+Y3Vyc19pbnNzdHIoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBtdmluc3RyICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5zdHIuM3guaHRtbCI+Y3Vyc19pbnN0cigzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIG12aW53c3RyICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbndzdHIuM3guaHRtbCI+Y3Vyc19pbndzdHIoM3gpPC9BPjwvU1RST05HPgotCiAgICAgICAgICAgICAgIG12cHJpbnR3ICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wcmludHcuM3guaHRtbCI+Y3Vyc19wcmludHcoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBtdnNjYW53ICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfc2NhbncuM3guaHRtbCI+Y3Vyc19zY2FudygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIG12dmxpbmUgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICBtdnZsaW5lX3NldCAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfYm9yZGVyX3NldC4zeC5odG1sIj5jdXJzX2JvcmRlcl9zZXQoM3gpPC9BPjwvU1RST05HPgorCiAgICAgICAgICAgICAgIG12d2FkZF93Y2ggICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2NoLjN4Lmh0bWwiPmN1cnNfYWRkX3djaCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIG12d2FkZF93Y2huc3RyICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2Noc3RyLjN4Lmh0bWwiPmN1cnNfYWRkX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIG12d2FkZF93Y2hzdHIgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19hZGRfd2Noc3RyLjN4Lmh0bWwiPmN1cnNfYWRkX3djaHN0cigzeCk8L0E+PC9TVFJPTkc+CkBAIC01NzQsMTYgKzU4NiwxNyBAQAogICAgICAgICAgICAgICBwbm91dHJlZnJlc2ggICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcGFkLjN4Lmh0bWwiPmN1cnNfcGFkKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgcHJlZnJlc2ggICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3BhZC4zeC5odG1sIj5jdXJzX3BhZCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHByaW50dyAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19wcmludHcuM3guaHRtbCI+Y3Vyc19wcmludHcoM3gpPC9BPjwvU1RST05HPgotCiAgICAgICAgICAgICAgIHB1dHAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgcHV0d2luICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3V0aWwuM3guaHRtbCI+Y3Vyc191dGlsKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgcWlmbHVzaCAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2lub3B0cy4zeC5odG1sIj5jdXJzX2lub3B0cygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHJhdyAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICByZWRyYXd3aW4gICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfcmVmcmVzaC4zeC5odG1sIj5jdXJzX3JlZnJlc2goM3gpPC9BPjwvU1RST05HPgorCiAgICAgICAgICAgICAgIHJlZnJlc2ggICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19yZWZyZXNoLjN4Lmh0bWwiPmN1cnNfcmVmcmVzaCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHJlc2V0X3Byb2dfbW9kZSAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19rZXJuZWwuM3guaHRtbCI+Y3Vyc19rZXJuZWwoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICByZXNldF9zaGVsbF9tb2RlICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfa2VybmVsLjN4Lmh0bWwiPmN1cnNfa2VybmVsKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgcmVzZXR0eSAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+CisgICAgICAgICAgICAgIHJlc2l6ZV90ZXJtICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0icmVzaXpldGVybS4zeC5odG1sIj5yZXNpemV0ZXJtKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIHJlc2l6ZXRlcm0gICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0icmVzaXpldGVybS4zeC5odG1sIj5yZXNpemV0ZXJtKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIHJlc3RhcnR0ZXJtICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgcmlwb2ZmbGluZSAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2tlcm5lbC4zeC5odG1sIj5jdXJzX2tlcm5lbCgzeCk8L0E+PC9TVFJPTkc+CkBAIC02MzYsMTUgKzY0OSwxNiBAQAogICAgICAgICAgICAgICB0aWdldGZsYWcgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHRpZ2V0bnVtICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgdGlnZXRzdHIgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPgorICAgICAgICAgICAgICB0aXBhcm0gICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+KgogICAgICAgICAgICAgICB0aW1lb3V0ICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5vcHRzLjN4Lmh0bWwiPmN1cnNfaW5vcHRzKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgdG91Y2hsaW5lICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RvdWNoLjN4Lmh0bWwiPmN1cnNfdG91Y2goM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB0b3VjaHdpbiAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdG91Y2guM3guaHRtbCI+Y3Vyc190b3VjaCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHRwYXJtICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4KLQogICAgICAgICAgICAgICB0cHV0cyAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jdXJzX3Rlcm1jYXAoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB0cHV0cyAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHRyYWNlICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIHR5cGVhaGVhZCAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbm9wdHMuM3guaHRtbCI+Y3Vyc19pbm9wdHMoM3gpPC9BPjwvU1RST05HPgorCiAgICAgICAgICAgICAgIHVuY3RybCAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHVuZ2V0X3djaCAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRfd2NoLjN4Lmh0bWwiPmN1cnNfZ2V0X3djaCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHVuZ2V0Y2ggICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRjaC4zeC5odG1sIj5jdXJzX2dldGNoKDN4KTwvQT48L1NUUk9ORz4KQEAgLTY1NCw2ICs2NjgsNyBAQAogICAgICAgICAgICAgICB1c2VfZW52ICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdXRpbC4zeC5odG1sIj5jdXJzX3V0aWwoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB1c2VfZXh0ZW5kZWRfbmFtZXMgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZXh0ZW5kLjN4Lmh0bWwiPmN1cnNfZXh0ZW5kKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIHVzZV9sZWdhY3lfY29kaW5nICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibGVnYWN5X2NvZGluZy4zeC5odG1sIj5sZWdhY3lfY29kaW5nKDN4KTwvQT48L1NUUk9ORz4qCisgICAgICAgICAgICAgIHVzZV90aW9jdGwgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc191dGlsLjN4Lmh0bWwiPmN1cnNfdXRpbCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHZpZF9hdHRyICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4KICAgICAgICAgICAgICAgdmlkX3B1dHMgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB2aWRhdHRyICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+CkBAIC03MDMsMTEgKzcxOCwxNCBAQAogICAgICAgICAgICAgICB3Z2V0X3dzdHIgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0X3dzdHIuM3guaHRtbCI+Y3Vyc19nZXRfd3N0cigzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHdnZXRia2dybmQgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ia2dybmQuM3guaHRtbCI+Y3Vyc19ia2dybmQoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB3Z2V0Y2ggICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+CisgICAgICAgICAgICAgIHdnZXRkZWxheSAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPioKICAgICAgICAgICAgICAgd2dldG5fd3N0ciAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldF93c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0X3dzdHIoM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB3Z2V0bnN0ciAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0c3RyLjN4Lmh0bWwiPmN1cnNfZ2V0c3RyKDN4KTwvQT48L1NUUk9ORz4KKyAgICAgICAgICAgICAgd2dldHBhcmVudCAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+KgorICAgICAgICAgICAgICB3Z2V0c2NycmVnICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfb3BhcXVlLjN4Lmh0bWwiPmN1cnNfb3BhcXVlKDN4KTwvQT48L1NUUk9ORz4qCiAgICAgICAgICAgICAgIHdnZXRzdHIgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19nZXRzdHIuM3guaHRtbCI+Y3Vyc19nZXRzdHIoM3gpPC9BPjwvU1RST05HPgotCiAgICAgICAgICAgICAgIHdobGluZSAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ib3JkZXIuM3guaHRtbCI+Y3Vyc19ib3JkZXIoM3gpPC9BPjwvU1RST05HPgorCiAgICAgICAgICAgICAgIHdobGluZV9zZXQgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19ib3JkZXJfc2V0LjN4Lmh0bWwiPmN1cnNfYm9yZGVyX3NldCgzeCk8L0E+PC9TVFJPTkc+CiAgICAgICAgICAgICAgIHdpbl93Y2ggICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19pbl93Y2guM3guaHRtbCI+Y3Vyc19pbl93Y2goM3gpPC9BPjwvU1RST05HPgogICAgICAgICAgICAgICB3aW5fd2NobnN0ciAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5fd2Noc3RyLjN4Lmh0bWwiPmN1cnNfaW5fd2Noc3RyKDN4KTwvQT48L1NUUk9ORz4KQEAgLTc0OSwxNSArNzY3LDE4IEBACiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBSb3V0aW5lcyB0aGF0IHJldHVybiBhbiBpbnRlZ2VyIHJldHVybiAgPFNUUk9ORz5FUlI8L1NUUk9ORz4gIHVwb24gIGZhaWx1cmUKICAgICAgICBhbmQgIGFuICBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gdXBvbiBzdWNjZXNzZnVsIGNvbS0KICAgICAgICBwbGV0aW9uLCB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkIGluICB0aGUgIHJvdXRpbmUgIGRlc2NyaXAtCiAgICAgICAgdGlvbnMuCiAKLSAgICAgICBBbGwgIG1hY3JvcyAgcmV0dXJuICB0aGUgIHZhbHVlICBvZiAgdGhlIDxTVFJPTkc+dzwvU1RST05HPiB2ZXJzaW9uLCBleGNlcHQKKyAgICAgICBBcyBhIGdlbmVyYWwgcnVsZSwgcm91dGluZXMgY2hlY2sgZm9yIG51bGwgcG9pbnRlcnMgcGFzc2VkCisgICAgICAgYXMgcGFyYW1ldGVycywgYW5kIGhhbmRsZSB0aGlzIGFzIGFuIGVycm9yLgorCisgICAgICAgQWxsIG1hY3JvcyByZXR1cm4gdGhlICB2YWx1ZSAgb2YgIHRoZSAgPFNUUk9ORz53PC9TVFJPTkc+ICB2ZXJzaW9uLCAgZXhjZXB0CiAgICAgICAgPFNUUk9ORz5zZXRzY3JyZWc8L1NUUk9ORz4sIDxTVFJPTkc+d3NldHNjcnJlZzwvU1RST05HPiwgPFNUUk9ORz5nZXR5eDwvU1RST05HPiwgPFNUUk9ORz5nZXRiZWd5eDwvU1RST05HPiwgYW5kIDxTVFJPTkc+Z2V0bWF4eXg8L1NUUk9ORz4uICBUaGUKLSAgICAgICByZXR1cm4gIHZhbHVlcyAgb2YgPFNUUk9ORz5zZXRzY3JyZWc8L1NUUk9ORz4sIDxTVFJPTkc+d3NldHNjcnJlZzwvU1RST05HPiwgPFNUUk9ORz5nZXR5eDwvU1RST05HPiwgPFNUUk9ORz5nZXRiZWd5eDwvU1RST05HPiwKKyAgICAgICByZXR1cm4gdmFsdWVzIG9mIDxTVFJPTkc+c2V0c2NycmVnPC9TVFJPTkc+LCA8U1RST05HPndzZXRzY3JyZWc8L1NUUk9ORz4sICA8U1RST05HPmdldHl4PC9TVFJPTkc+LCAgPFNUUk9ORz5nZXRiZWd5eDwvU1RST05HPiwKICAgICAgICBhbmQgPFNUUk9ORz5nZXRtYXh5eDwvU1RST05HPiBhcmUgdW5kZWZpbmVkIChpLmUuLCB0aGVzZSBzaG91bGQgbm90IGJlIHVzZWQKICAgICAgICBhcyB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFzc2lnbm1lbnQgc3RhdGVtZW50cykuCiAKQEAgLTc2NSwyNzQgKzc4NiwzOTUgQEAKIAogCiA8L1BSRT4KLTxIMj5FTlZJUk9OTUVOVDwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1FTlZJUk9OTUVOVCI+RU5WSVJPTk1FTlQ8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgc3ltYm9scyBhcmUgdXNlZnVsIGZvciBjdXN0b21pei0KICAgICAgICBpbmcgdGhlIHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBsaWJyYXJ5LiAgVGhlIG1vc3QKICAgICAgICBpbXBvcnRhbnQgb25lcyBoYXZlIGJlZW4gYWxyZWFkeSBkaXNjdXNzZWQgaW4gZGV0YWlsLgogCi0gICAgICAgQkFVRFJBVEUKLSAgICAgICAgICAgIFRoZSAgZGVidWdnaW5nIGxpYnJhcnkgY2hlY2tzIHRoaXMgZW52aXJvbm1lbnQgc3ltYm9sCi0gICAgICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiBoYXMgcmVkaXJlY3RlZCBvdXRwdXQgdG8gYSBmaWxlLgotICAgICAgICAgICAgVGhlICBzeW1ib2wncyBudW1lcmljIHZhbHVlIGlzIHVzZWQgZm9yIHRoZSBiYXVkcmF0ZS4KLSAgICAgICAgICAgIElmIG5vIHZhbHVlIGlzIGZvdW5kLCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdXNlcyA5NjAwLiAgVGhpcyBhbGxvd3MKLSAgICAgICAgICAgIHRlc3RlcnMgIHRvIGNvbnN0cnVjdCByZXBlYXRhYmxlIHRlc3QtY2FzZXMgdGhhdCB0YWtlCi0gICAgICAgICAgICBpbnRvIGFjY291bnQgY29zdHMgdGhhdCBkZXBlbmQgb24gYmF1ZHJhdGUuCisgICA8U1RST05HPkNDPC9TVFJPTkc+CisgICAgICAgV2hlbiBzZXQsICBjaGFuZ2UgIG9jY3VycmVuY2VzICBvZiAgdGhlICBjb21tYW5kX2NoYXJhY3RlcgorICAgICAgIChpLmUuLCAgdGhlICA8U1RST05HPmNtZGNoPC9TVFJPTkc+ICBjYXBhYmlsaXR5KSAgb2YgIHRoZSAgbG9hZGVkICB0ZXJtaW5mbworICAgICAgIGVudHJpZXMgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUuICBWZXJ5IGZldyAgdGVybWluZm8KKyAgICAgICBlbnRyaWVzIHByb3ZpZGUgdGhpcyBmZWF0dXJlLgogCi0gICAgICAgQ0MgICBXaGVuIHNldCwgY2hhbmdlIG9jY3VycmVuY2VzIG9mIHRoZSBjb21tYW5kX2NoYXJhY3RlcgotICAgICAgICAgICAgKGkuZS4sICB0aGUgIDxTVFJPTkc+Y21kY2g8L1NUUk9ORz4gY2FwYWJpbGl0eSkgb2YgdGhlIGxvYWRlZCB0ZXJtaW5mbwotICAgICAgICAgICAgZW50cmllcyB0byB0aGUgdmFsdWUgb2YgdGhpcyBzeW1ib2wuICBWZXJ5ICBmZXcgIHRlci0KLSAgICAgICAgICAgIG1pbmZvIGVudHJpZXMgcHJvdmlkZSB0aGlzIGZlYXR1cmUuCisgICAgICAgQmVjYXVzZSB0aGlzIG5hbWUgaXMgYWxzbyB1c2VkIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cworICAgICAgIHRvIHJlcHJlc2VudCB0aGUgQyBjb21waWxlcidzIG5hbWUsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBpZ25vcmVzIGl0ICBpZgorICAgICAgIGl0IGRvZXMgbm90IGhhcHBlbiB0byBiZSBhIHNpbmdsZSBjaGFyYWN0ZXIuCiAKLSAgICAgICBDT0xVTU5TCi0gICAgICAgICAgICBTcGVjaWZ5ICB0aGUgIHdpZHRoICBvZiAgdGhlICBzY3JlZW4gIGluICBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgQXBwbGljYXRpb25zIHJ1bm5pbmcgaW4gYSB3aW5kb3dpbmcgZW52aXJvbm1lbnQgIHVzdS0KLSAgICAgICAgICAgIGFsbHkgIGFyZSAgYWJsZSAgdG8gb2J0YWluIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93IGluCi0gICAgICAgICAgICB3aGljaCB0aGV5IGFyZSBleGVjdXRpbmcuICAgSWYgIG5laXRoZXIgIHRoZSAgPFNUUk9ORz5DT0xVTU5TPC9TVFJPTkc+Ci0gICAgICAgICAgICB2YWx1ZSAgbm9yICB0aGUgIHRlcm1pbmFsJ3Mgc2NyZWVuIHNpemUgaXMgYXZhaWxhYmxlLAotICAgICAgICAgICAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHVzZXMgdGhlIHNpemUgd2hpY2ggbWF5IGJlIHNwZWNpZmllZCAgaW4gIHRoZQotICAgICAgICAgICAgdGVybWluZm8gZGF0YWJhc2UgKGkuZS4sIHRoZSA8U1RST05HPmNvbHM8L1NUUk9ORz4gY2FwYWJpbGl0eSkuCiAKLSAgICAgICAgICAgIEl0ICBpcyAgaW1wb3J0YW50IHRoYXQgeW91ciBhcHBsaWNhdGlvbiB1c2UgYSBjb3JyZWN0Ci0gICAgICAgICAgICBzaXplIGZvciB0aGUgc2NyZWVuLiAgVGhpcyAgaXMgIG5vdCAgYWx3YXlzICBwb3NzaWJsZQotICAgICAgICAgICAgYmVjYXVzZSAgeW91ciAgYXBwbGljYXRpb24gIG1heSAgYmUgcnVubmluZyBvbiBhIGhvc3QKLSAgICAgICAgICAgIHdoaWNoIGRvZXMgbm90IGhvbm9yIE5BV1MgKE5lZ290aWF0aW9ucyBBYm91dCAgV2luZG93Ci0gICAgICAgICAgICBTaXplKSwgIG9yICBiZWNhdXNlICB5b3UgIGFyZSAgdGVtcG9yYXJpbHkgcnVubmluZyBhcwotICAgICAgICAgICAgYW5vdGhlciB1c2VyLiAgSG93ZXZlciwgc2V0dGluZyA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4gYW5kL29yICA8U1RST05HPkxJTkVTPC9TVFJPTkc+Ci0gICAgICAgICAgICBvdmVycmlkZXMgIHRoZSAgbGlicmFyeSdzICB1c2UgIG9mICB0aGUgIHNjcmVlbiAgc2l6ZQotICAgICAgICAgICAgb2J0YWluZWQgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUJBVURSQVRFIj5CQVVEUkFURTwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICBkZWJ1Z2dpbmcgIGxpYnJhcnkgIGNoZWNrcyAgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGhhcyByZWRpcmVjdGVkIG91dHB1dCB0byBhIGZpbGUuICBUaGUKKyAgICAgICB2YXJpYWJsZSdzICBudW1lcmljIHZhbHVlIGlzIHVzZWQgZm9yIHRoZSBiYXVkcmF0ZS4gIElmIG5vCisgICAgICAgdmFsdWUgaXMgZm91bmQsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB1c2VzIDk2MDAuICBUaGlzIGFsbG93cyB0ZXN0ZXJzIHRvCisgICAgICAgY29uc3RydWN0ICByZXBlYXRhYmxlICB0ZXN0LWNhc2VzICB0aGF0ICB0YWtlIGludG8gYWNjb3VudAorICAgICAgIGNvc3RzIHRoYXQgZGVwZW5kIG9uIGJhdWRyYXRlLgogCi0gICAgICAgICAgICBFaXRoZXIgPFNUUk9ORz5DT0xVTU5TPC9TVFJPTkc+IG9yICA8U1RST05HPkxJTkVTPC9TVFJPTkc+ICBzeW1ib2xzICBtYXkgIGJlICBzcGVjaWZpZWQKLSAgICAgICAgICAgIGluZGVwZW5kZW50bHkuICAgVGhpcyAgaXMgbWFpbmx5IHVzZWZ1bCB0byBjaXJjdW12ZW50Ci0gICAgICAgICAgICBsZWdhY3kgbWlzZmVhdHVyZXMgb2YgIHRlcm1pbmFsICBkZXNjcmlwdGlvbnMsICBlLmcuLAotICAgICAgICAgICAgeHRlcm0gd2hpY2ggY29tbW9ubHkgc3BlY2lmaWVzIGEgNjUgbGluZSBzY3JlZW4uICBGb3IKLSAgICAgICAgICAgIGJlc3QgcmVzdWx0cywgPFNUUk9ORz5saW5lczwvU1RST05HPiBhbmQgPFNUUk9ORz5jb2xzPC9TVFJPTkc+IHNob3VsZCBub3QgYmUgIHNwZWNpZmllZAotICAgICAgICAgICAgaW4gYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBmb3IgdGVybWluYWxzIHdoaWNoIGFyZSBydW4KLSAgICAgICAgICAgIGFzIGVtdWxhdGlvbnMuCiAKLSAgICAgICAgICAgIFVzZSB0aGUgPFNUUk9ORz51c2VfZW52PC9TVFJPTkc+IGZ1bmN0aW9uIHRvIGRpc2FibGUgYWxsIHVzZSBvZiBleHRlci0KLSAgICAgICAgICAgIG5hbCBlbnZpcm9ubWVudCAoaW5jbHVkaW5nIHN5c3RlbSBjYWxscykgdG8gZGV0ZXJtaW5lCi0gICAgICAgICAgICB0aGUgc2NyZWVuIHNpemUuCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DT0xVTU5TIj5DT0xVTU5TPC9hPjwvSDM+PFBSRT4KKyAgICAgICBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIGluICBjaGFyYWN0ZXJzLiAgIEFwcGxpY2EtCisgICAgICAgdGlvbnMgIHJ1bm5pbmcgaW4gYSB3aW5kb3dpbmcgZW52aXJvbm1lbnQgdXN1YWxseSBhcmUgYWJsZQorICAgICAgIHRvIG9idGFpbiB0aGUgd2lkdGggb2YgdGhlIHdpbmRvdyBpbiB3aGljaCB0aGV5ICBhcmUgIGV4ZS0KKyAgICAgICBjdXRpbmcuICAgSWYgIG5laXRoZXIgdGhlIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiB2YWx1ZSBub3IgdGhlIHRlcm1pbmFsJ3MKKyAgICAgICBzY3JlZW4gc2l6ZSBpcyBhdmFpbGFibGUsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB1c2VzIHRoZSBzaXplIHdoaWNoICBtYXkKKyAgICAgICBiZSAgc3BlY2lmaWVkICBpbiAgdGhlICB0ZXJtaW5mbyAgZGF0YWJhc2UgKGkuZS4sIHRoZSA8U1RST05HPmNvbHM8L1NUUk9ORz4KKyAgICAgICBjYXBhYmlsaXR5KS4KIAotICAgICAgIEVTQ0RFTEFZCi0gICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRvdGFsIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgZm9yICB3aGljaAotICAgICAgICAgICAgbmN1cnNlcyAgd2lsbCAgYXdhaXQgIGEgIGNoYXJhY3RlciAgc2VxdWVuY2UsIGUuZy4sIGEKLSAgICAgICAgICAgIGZ1bmN0aW9uIGtleS4gIFRoZSBkZWZhdWx0IHZhbHVlLCAxMDAwICBtaWxsaXNlY29uZHMsCi0gICAgICAgICAgICBpcyBlbm91Z2ggZm9yIG1vc3QgdXNlcy4gIEhvd2V2ZXIsIGl0IGlzIG1hZGUgYSB2YXJpLQotICAgICAgICAgICAgYWJsZSB0byBhY2NvbW1vZGF0ZSB1bnVzdWFsIGFwcGxpY2F0aW9ucy4KKyAgICAgICBJdCBpcyBpbXBvcnRhbnQgdGhhdCB5b3VyIGFwcGxpY2F0aW9uIHVzZSBhICBjb3JyZWN0ICBzaXplCisgICAgICAgZm9yICB0aGUgc2NyZWVuLiAgVGhpcyBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIGJlY2F1c2UgeW91cgorICAgICAgIGFwcGxpY2F0aW9uIG1heSBiZSBydW5uaW5nIG9uIGEgaG9zdCB3aGljaCBkb2VzIG5vdCAgaG9ub3IKKyAgICAgICBOQVdTICAoTmVnb3RpYXRpb25zIEFib3V0IFdpbmRvdyBTaXplKSwgb3IgYmVjYXVzZSB5b3UgYXJlCisgICAgICAgdGVtcG9yYXJpbHkgcnVubmluZyBhcyAgYW5vdGhlciAgdXNlci4gICBIb3dldmVyLCAgc2V0dGluZworICAgICAgIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiAgYW5kL29yICA8U1RST05HPkxJTkVTPC9TVFJPTkc+ICBvdmVycmlkZXMgdGhlIGxpYnJhcnkncyB1c2Ugb2YgdGhlCisgICAgICAgc2NyZWVuIHNpemUgb2J0YWluZWQgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KIAotICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIHdoZXJlIHlvdSBtYXkgd2lzaCB0byBjaGFuZ2UKLSAgICAgICAgICAgIHRoaXMgIHZhbHVlIGlzIHRvIHdvcmsgd2l0aCBzbG93IGhvc3RzLCBlLmcuLCBydW5uaW5nCi0gICAgICAgICAgICBvbiBhIG5ldHdvcmsuICBJZiB0aGUgIGhvc3QgIGNhbm5vdCAgcmVhZCAgY2hhcmFjdGVycwotICAgICAgICAgICAgcmFwaWRseSAgZW5vdWdoLCAgaXQgIHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgaWYKLSAgICAgICAgICAgIHRoZSB0ZXJtaW5hbCBkaWQgbm90IHNlbmQgY2hhcmFjdGVycyByYXBpZGx5ICBlbm91Z2guCi0gICAgICAgICAgICBUaGUgbGlicmFyeSB3aWxsIHN0aWxsIHNlZSBhIHRpbWVvdXQuCisgICAgICAgRWl0aGVyIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiBvciA8U1RST05HPkxJTkVTPC9TVFJPTkc+IHN5bWJvbHMgbWF5IGJlIHNwZWNpZmllZCAgaW5kZXBlbi0KKyAgICAgICBkZW50bHkuICAgVGhpcyAgaXMgbWFpbmx5IHVzZWZ1bCB0byBjaXJjdW12ZW50IGxlZ2FjeSBtaXMtCisgICAgICAgZmVhdHVyZXMgb2YgdGVybWluYWwgZGVzY3JpcHRpb25zLCBlLmcuLCB4dGVybSB3aGljaCAgY29tLQorICAgICAgIG1vbmx5IHNwZWNpZmllcyBhIDY1IGxpbmUgc2NyZWVuLiAgRm9yIGJlc3QgcmVzdWx0cywgPFNUUk9ORz5saW5lczwvU1RST05HPgorICAgICAgIGFuZCA8U1RST05HPmNvbHM8L1NUUk9ORz4gc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQgaW4gYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbgorICAgICAgIGZvciB0ZXJtaW5hbHMgd2hpY2ggYXJlIHJ1biBhcyBlbXVsYXRpb25zLgogCi0gICAgICAgICAgICBOb3RlICB0aGF0IHh0ZXJtIG1vdXNlIGV2ZW50cyBhcmUgYnVpbHQgdXAgZnJvbSBjaGFyLQotICAgICAgICAgICAgYWN0ZXIgc2VxdWVuY2VzIHJlY2VpdmVkIGZyb20gIHRoZSAgeHRlcm0uICAgSWYgIHlvdXIKLSAgICAgICAgICAgIGFwcGxpY2F0aW9uIG1ha2VzIGhlYXZ5IHVzZSBvZiBtdWx0aXBsZS1jbGlja2luZywgeW91Ci0gICAgICAgICAgICBtYXkgd2lzaCB0byBsZW5ndGhlbiB0aGlzIGRlZmF1bHQgdmFsdWUgIGJlY2F1c2UgIHRoZQotICAgICAgICAgICAgdGltZW91dCAgYXBwbGllcyB0byB0aGUgY29tcG9zZWQgbXVsdGktY2xpY2sgZXZlbnQgYXMKLSAgICAgICAgICAgIHdlbGwgYXMgdGhlIGluZGl2aWR1YWwgY2xpY2tzLgorICAgICAgIFVzZSAgdGhlICA8U1RST05HPnVzZV9lbnY8L1NUUk9ORz4gIGZ1bmN0aW9uIHRvIGRpc2FibGUgYWxsIHVzZSBvZiBleHRlcm5hbAorICAgICAgIGVudmlyb25tZW50IChidXQgbm90IGluY2x1ZGluZyBzeXN0ZW0gY2FsbHMpIHRvICBkZXRlcm1pbmUKKyAgICAgICB0aGUgIHNjcmVlbiAgc2l6ZS4gICBVc2UgdGhlIDxTVFJPTkc+dXNlX3Rpb2N0bDwvU1RST05HPiBmdW5jdGlvbiB0byB1cGRhdGUKKyAgICAgICA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4gb3IgPFNUUk9ORz5MSU5FUzwvU1RST05HPiB0byBtYXRjaCB0aGUgc2NyZWVuICBzaXplICBvYnRhaW5lZCAgZnJvbQorICAgICAgIHN5c3RlbSBjYWxscyBvciB0aGUgdGVybWluYWwgZGF0YWJhc2UuCiAKLSAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhpcyAgaW1wbGUtCi0gICAgICAgICAgICBtZW50YXRpb24gIHByb3ZpZGVzICBhICBnbG9iYWwgdmFyaWFibGUgd2l0aCB0aGUgc2FtZQotICAgICAgICAgICAgbmFtZS4gIFBvcnRhYmxlIGFwcGxpY2F0aW9ucyBzaG91bGQgbm90IHJlbHkgdXBvbiB0aGUKLSAgICAgICAgICAgIHByZXNlbmNlICBvZiBFU0NERUxBWSBpbiBlaXRoZXIgZm9ybSwgYnV0IHNldHRpbmcgdGhlCi0gICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsICB2YXJpYWJsZQotICAgICAgICAgICAgZG9lcyAgbm90ICBjcmVhdGUgcHJvYmxlbXMgd2hlbiBjb21waWxpbmcgYW4gYXBwbGljYS0KLSAgICAgICAgICAgIHRpb24uCiAKLSAgICAgICBIT01FIFRlbGxzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB3aGVyZSB5b3VyIGhvbWUgZGlyZWN0b3J5IGlzLiAgVGhhdCAgaXMKLSAgICAgICAgICAgIHdoZXJlICBpdCAgbWF5ICByZWFkICBhbmQgIHdyaXRlICBhdXhpbGlhcnkgIHRlcm1pbmFsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbnM6Cis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1FU0NERUxBWSI+RVNDREVMQVk8L2E+PC9IMz48UFJFPgorICAgICAgIFNwZWNpZmllcyAgdGhlICB0b3RhbCAgdGltZSwgIGluICBtaWxsaXNlY29uZHMsICBmb3Igd2hpY2gKKyAgICAgICBuY3Vyc2VzIHdpbGwgYXdhaXQgYSBjaGFyYWN0ZXIgc2VxdWVuY2UsIGUuZy4sIGEgIGZ1bmN0aW9uCisgICAgICAga2V5LiAgIFRoZSBkZWZhdWx0IHZhbHVlLCAxMDAwIG1pbGxpc2Vjb25kcywgaXMgZW5vdWdoIGZvcgorICAgICAgIG1vc3QgdXNlcy4gIEhvd2V2ZXIsIGl0IGlzIG1hZGUgYSB2YXJpYWJsZSB0byAgYWNjb21tb2RhdGUKKyAgICAgICB1bnVzdWFsIGFwcGxpY2F0aW9ucy4KIAotICAgICAgICAgICAgJEhPTUUvLnRlcm1jYXAKLSAgICAgICAgICAgICRIT01FLy50ZXJtaW5mbworICAgICAgIFRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSB3aGVyZSB5b3UgbWF5IHdpc2ggdG8gY2hhbmdlIHRoaXMKKyAgICAgICB2YWx1ZSBpcyB0byB3b3JrIHdpdGggc2xvdyBob3N0cywgZS5nLiwgcnVubmluZyBvbiBhICBuZXQtCisgICAgICAgd29yay4gICBJZiB0aGUgaG9zdCBjYW5ub3QgcmVhZCBjaGFyYWN0ZXJzIHJhcGlkbHkgZW5vdWdoLAorICAgICAgIGl0IHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgdGhlICB0ZXJtaW5hbCAgZGlkICBub3QKKyAgICAgICBzZW5kICBjaGFyYWN0ZXJzICByYXBpZGx5ICBlbm91Z2guICBUaGUgbGlicmFyeSB3aWxsIHN0aWxsCisgICAgICAgc2VlIGEgdGltZW91dC4KIAotICAgICAgIExJTkVTCi0gICAgICAgICAgICBMaWtlIENPTFVNTlMsIHNwZWNpZnkgdGhlIGhlaWdodCAgb2YgIHRoZSAgc2NyZWVuICBpbgotICAgICAgICAgICAgY2hhcmFjdGVycy4gICBTZWUgQ09MVU1OUyBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4KKyAgICAgICBOb3RlIHRoYXQgeHRlcm0gbW91c2UgZXZlbnRzIGFyZSBidWlsdCB1cCAgZnJvbSAgY2hhcmFjdGVyCisgICAgICAgc2VxdWVuY2VzICByZWNlaXZlZCAgZnJvbSAgdGhlIHh0ZXJtLiAgSWYgeW91ciBhcHBsaWNhdGlvbgorICAgICAgIG1ha2VzIGhlYXZ5IHVzZSBvZiAgbXVsdGlwbGUtY2xpY2tpbmcsICB5b3UgIG1heSAgd2lzaCAgdG8KKyAgICAgICBsZW5ndGhlbiB0aGlzIGRlZmF1bHQgdmFsdWUgYmVjYXVzZSB0aGUgdGltZW91dCBhcHBsaWVzIHRvCisgICAgICAgdGhlIGNvbXBvc2VkIG11bHRpLWNsaWNrIGV2ZW50IGFzIHdlbGwgYXMgIHRoZSAgaW5kaXZpZHVhbAorICAgICAgIGNsaWNrcy4KIAotICAgICAgIE1PVVNFX0JVVFRPTlNfMTIzCi0gICAgICAgICAgICBUaGlzIGFwcGxpZXMgb25seSB0byB0aGUgT1MvMiBFTVggcG9ydC4gIEl0IHNwZWNpZmllcwotICAgICAgICAgICAgdGhlICBvcmRlciAgb2YgIGJ1dHRvbnMgb24gdGhlIG1vdXNlLiAgT1MvMiBudW1iZXJzIGEKLSAgICAgICAgICAgIDMtYnV0dG9uIG1vdXNlIGluY29uc2lzdGVudGx5IGZyb20gb3RoZXIgcGxhdGZvcm1zOgorICAgICAgIEluICBhZGRpdGlvbiB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoaXMgaW1wbGVtZW50YS0KKyAgICAgICB0aW9uIHByb3ZpZGVzIGEgZ2xvYmFsIHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZS4gICBQb3ItCisgICAgICAgdGFibGUgIGFwcGxpY2F0aW9ucyAgc2hvdWxkICBub3QgcmVseSB1cG9uIHRoZSBwcmVzZW5jZSBvZgorICAgICAgIEVTQ0RFTEFZIGluIGVpdGhlciBmb3JtLCBidXQgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaS0KKyAgICAgICBhYmxlIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgdmFyaWFibGUgZG9lcyBub3QgY3JlYXRlIHByb2ItCisgICAgICAgbGVtcyB3aGVuIGNvbXBpbGluZyBhbiBhcHBsaWNhdGlvbi4KIAotICAgICAgICAgICAgMSA9IGxlZnQKLSAgICAgICAgICAgIDIgPSByaWdodAotICAgICAgICAgICAgMyA9IG1pZGRsZS4KIAotICAgICAgICAgICAgVGhpcyBzeW1ib2wgbGV0cyB5b3UgY3VzdG9taXplIHRoZSBtb3VzZS4gIFRoZSBzeW1ib2wKLSAgICAgICAgICAgIG11c3QgIGJlIHRocmVlIG51bWVyaWMgZGlnaXRzIDEtMyBpbiBhbnkgb3JkZXIsIGUuZy4sCi0gICAgICAgICAgICAxMjMgb3IgMzIxLiAgSWYgaXQgaXMgIG5vdCAgc3BlY2lmaWVkLCAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICB1c2VzCi0gICAgICAgICAgICAxMzIuCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1IT01FIj5IT01FPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUZWxscyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gd2hlcmUgeW91ciBob21lIGRpcmVjdG9yeSBpcy4gIFRoYXQgaXMgd2hlcmUKKyAgICAgICBpdCBtYXkgcmVhZCBhbmQgd3JpdGUgYXV4aWxpYXJ5IHRlcm1pbmFsIGRlc2NyaXB0aW9uczoKIAotICAgICAgIE5DVVJTRVNfQVNTVU1FRF9DT0xPUlMKLSAgICAgICAgICAgIE92ZXJyaWRlICB0aGUgIGNvbXBpbGVkLWluIGFzc3VtcHRpb24gdGhhdCB0aGUgdGVybWktCi0gICAgICAgICAgICBuYWwncyAgZGVmYXVsdCAgIGNvbG9ycyAgIGFyZSAgIHdoaXRlLW9uLWJsYWNrICAgKHNlZQotICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5kZWZhdWx0X2NvbG9ycygzeCk8L0E+PC9TVFJPTkc+KS4gICBZb3UgbWF5IHNldCB0aGUgZm9yZWdyb3VuZCBhbmQKLSAgICAgICAgICAgIGJhY2tncm91bmQgY29sb3IgdmFsdWVzIHdpdGggdGhpcyAgZW52aXJvbm1lbnQgIHZhcmktCi0gICAgICAgICAgICBhYmxlICBieSAgcHJvdmluZyAgYSAyLWVsZW1lbnQgbGlzdDogZm9yZWdyb3VuZCxiYWNrLQotICAgICAgICAgICAgZ3JvdW5kLiAgRm9yIGV4YW1wbGUsIHRvIHRlbGwgbmN1cnNlcyB0byAgbm90ICBhc3N1bWUKLSAgICAgICAgICAgIGFueXRoaW5nICBhYm91dCAgdGhlIGNvbG9ycywgc2V0IHRoaXMgdG8gIi0xLC0xIi4gIFRvCi0gICAgICAgICAgICBtYWtlIGl0IGdyZWVuLW9uLWJsYWNrLCBzZXQgaXQgdG8gIjIsMCIuICAgQW55ICBwb3NpLQotICAgICAgICAgICAgdGl2ZSB2YWx1ZSBmcm9tIHplcm8gdG8gdGhlIHRlcm1pbmZvIDxTVFJPTkc+bWF4X2NvbG9yczwvU1RST05HPiB2YWx1ZQotICAgICAgICAgICAgaXMgYWxsb3dlZC4KKyAgICAgICAkSE9NRS8udGVybWNhcAorICAgICAgICRIT01FLy50ZXJtaW5mbwogCi0gICAgICAgTkNVUlNFU19HUE1fVEVSTVMKLSAgICAgICAgICAgIFRoaXMgYXBwbGllcyBvbmx5IHRvIG5jdXJzZXMgY29uZmlndXJlZCAgdG8gIHVzZSAgdGhlCi0gICAgICAgICAgICBHUE0gaW50ZXJmYWNlLgogCi0gICAgICAgICAgICBJZiBwcmVzZW50LCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgYSBsaXN0IG9mIG9uZQotICAgICAgICAgICAgb3IgbW9yZSB0ZXJtaW5hbCBuYW1lcyBhZ2FpbnN0IHdoaWNoIHRoZSAgVEVSTSAgZW52aS0KLSAgICAgICAgICAgIHJvbm1lbnQgIHZhcmlhYmxlIGlzIG1hdGNoZWQuICBTZXR0aW5nIGl0IHRvIGFuIGVtcHR5Ci0gICAgICAgICAgICB2YWx1ZSBkaXNhYmxlcyB0aGUgR1BNIGludGVyZmFjZTsgdXNpbmcgdGhlICBidWlsdC1pbgotICAgICAgICAgICAgc3VwcG9ydCBmb3IgeHRlcm0sIGV0Yy4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUxJTkVTIj5MSU5FUzwvYT48L0gzPjxQUkU+CisgICAgICAgTGlrZSAgQ09MVU1OUywgc3BlY2lmeSB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4gaW4gY2hhcmFjLQorICAgICAgIHRlcnMuICBTZWUgQ09MVU1OUyBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4KIAotICAgICAgICAgICAgSWYgIHRoZSAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgYWJzZW50LCBuY3Vyc2VzIHdpbGwKLSAgICAgICAgICAgIGF0dGVtcHQgdG8gb3BlbiBHUE0gaWYgVEVSTSBjb250YWlucyAibGludXgiLgogCi0gICAgICAgTkNVUlNFU19OT19IQVJEX1RBQlMKLSAgICAgICAgICAgIDxTVFJPTkc+TmN1cnNlczwvU1RST05HPiBtYXkgdXNlIHRhYnMgYXMgcGFydCBvZiB0aGUgIGN1cnNvciAgbW92ZW1lbnQKLSAgICAgICAgICAgIG9wdGltaXphdGlvbi4gICBJbiAgc29tZSAgY2FzZXMsIHlvdXIgdGVybWluYWwgZHJpdmVyCi0gICAgICAgICAgICBtYXkgbm90IGhhbmRsZSB0aGVzZSBwcm9wZXJseS4gIFNldCB0aGlzICBlbnZpcm9ubWVudAotICAgICAgICAgICAgdmFyaWFibGUgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZS4gIFlvdSBjYW4gYWxzbyBhZGp1c3QKLSAgICAgICAgICAgIHlvdXIgPFNUUk9ORz5zdHR5PC9TVFJPTkc+IHNldHRpbmdzIHRvIGF2b2lkIHRoZSBwcm9ibGVtLgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtTU9VU0VfQlVUVE9OU18xMjMiPk1PVVNFX0JVVFRPTlNfMTIzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIGFwcGxpZXMgb25seSB0byB0aGUgT1MvMiBFTVggcG9ydC4gIEl0IHNwZWNpZmllcyAgdGhlCisgICAgICAgb3JkZXIgIG9mICBidXR0b25zICBvbiB0aGUgbW91c2UuICBPUy8yIG51bWJlcnMgYSAzLWJ1dHRvbgorICAgICAgIG1vdXNlIGluY29uc2lzdGVudGx5IGZyb20gb3RoZXIgcGxhdGZvcm1zOgogCi0gICAgICAgTkNVUlNFU19OT19NQUdJQ19DT09LSUVTCi0gICAgICAgICAgICBTb21lICB0ZXJtaW5hbHMgIHVzZSAgYSAgbWFnaWMtY29va2llICBmZWF0dXJlICB3aGljaAotICAgICAgICAgICAgcmVxdWlyZXMgIHNwZWNpYWwgIGhhbmRsaW5nICB0byBtYWtlIGhpZ2hsaWdodGluZyBhbmQKLSAgICAgICAgICAgIG90aGVyIHZpZGVvIGF0dHJpYnV0ZXMgIGRpc3BsYXkgIHByb3Blcmx5LiAgIFlvdSAgY2FuCi0gICAgICAgICAgICBzdXBwcmVzcyAgdGhlICBoaWdobGlnaHRpbmcgZW50aXJlbHkgZm9yIHRoZXNlIHRlcm1pLQotICAgICAgICAgICAgbmFscyBieSBzZXR0aW5nIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAgICAgMSA9IGxlZnQKKyAgICAgICAyID0gcmlnaHQKKyAgICAgICAzID0gbWlkZGxlLgogCi0gICAgICAgTkNVUlNFU19OT19QQURESU5HCi0gICAgICAgICAgICBNb3N0IG9mIHRoZSB0ZXJtaW5hbCAgZGVzY3JpcHRpb25zICBpbiAgdGhlICB0ZXJtaW5mbwotICAgICAgICAgICAgZGF0YWJhc2UgIGFyZSAgd3JpdHRlbiBmb3IgcmVhbCAiaGFyZHdhcmUiIHRlcm1pbmFscy4KLSAgICAgICAgICAgIE1hbnkgcGVvcGxlIHVzZSB0ZXJtaW5hbCBlbXVsYXRvcnMgIHdoaWNoICBydW4gIGluICBhCi0gICAgICAgICAgICB3aW5kb3dpbmcgICAgZW52aXJvbm1lbnQgICAgYW5kICAgIHVzZSAgIGN1cnNlcy1iYXNlZAotICAgICAgICAgICAgYXBwbGljYXRpb25zLiAgVGVybWluYWwgZW11bGF0b3JzIGNhbiAgZHVwbGljYXRlICBhbGwKLSAgICAgICAgICAgIG9mICB0aGUgaW1wb3J0YW50IGFzcGVjdHMgb2YgYSBoYXJkd2FyZSB0ZXJtaW5hbCwgYnV0Ci0gICAgICAgICAgICB0aGV5IGRvIG5vdCBoYXZlIHRoZSAgc2FtZSAgbGltaXRhdGlvbnMuICAgVGhlICBjaGllZgotICAgICAgICAgICAgbGltaXRhdGlvbiBvZiBhIGhhcmR3YXJlIHRlcm1pbmFsIGZyb20gdGhlIHN0YW5kcG9pbnQKLSAgICAgICAgICAgIG9mIHlvdXIgYXBwbGljYXRpb24gaXMgdGhlICBtYW5hZ2VtZW50ICBvZiAgZGF0YWZsb3csCi0gICAgICAgICAgICBpLmUuLCAgdGltaW5nLiAgIFVubGVzcyBhIGhhcmR3YXJlIHRlcm1pbmFsIGlzIGludGVyLQotICAgICAgICAgICAgZmFjZWQgaW50byBhIHRlcm1pbmFsIGNvbmNlbnRyYXRvciAod2hpY2ggIGRvZXMgIGZsb3cKLSAgICAgICAgICAgIGNvbnRyb2wpLCAgIGl0ICAob3IgIHlvdXIgIGFwcGxpY2F0aW9uKSAgbXVzdCAgbWFuYWdlCi0gICAgICAgICAgICBkYXRhZmxvdywgcHJldmVudGluZyBvdmVycnVucy4gIFRoZSBjaGVhcGVzdCBzb2x1dGlvbgotICAgICAgICAgICAgKG5vICBoYXJkd2FyZSBjb3N0KSBpcyBmb3IgeW91ciBwcm9ncmFtIHRvIGRvIHRoaXMgYnkKLSAgICAgICAgICAgIHBhdXNpbmcgIGFmdGVyICBvcGVyYXRpb25zICB0aGF0ICB0aGUgIHRlcm1pbmFsICBkb2VzCi0gICAgICAgICAgICBzbG93bHksIHN1Y2ggYXMgY2xlYXJpbmcgdGhlIGRpc3BsYXkuCisgICAgICAgVGhpcyB2YXJpYWJsZSBsZXRzIHlvdSBjdXN0b21pemUgdGhlIG1vdXNlLiAgVGhlICB2YXJpYWJsZQorICAgICAgIG11c3QgIGJlICB0aHJlZSBudW1lcmljIGRpZ2l0cyAxLTMgaW4gYW55IG9yZGVyLCBlLmcuLCAxMjMKKyAgICAgICBvciAzMjEuICBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdXNlcyAxMzIuCiAKLSAgICAgICAgICAgIEFzICBhICByZXN1bHQsICBtYW55IHRlcm1pbmFsIGRlc2NyaXB0aW9ucyAoaW5jbHVkaW5nCi0gICAgICAgICAgICB0aGUgdnQxMDApIGhhdmUgZGVsYXkgdGltZXMgZW1iZWRkZWQuICBZb3UgIG1heSAgd2lzaAotICAgICAgICAgICAgdG8gIHVzZSAgdGhlc2UgIGRlc2NyaXB0aW9ucywgYnV0IG5vdCB3YW50IHRvIHBheSB0aGUKLSAgICAgICAgICAgIHBlcmZvcm1hbmNlIHBlbmFsdHkuCiAKLSAgICAgICAgICAgIFNldCB0aGUgTkNVUlNFU19OT19QQURESU5HIHN5bWJvbCB0byBkaXNhYmxlIGFsbCAgYnV0Ci0gICAgICAgICAgICBtYW5kYXRvcnkgIHBhZGRpbmcuICAgTWFuZGF0b3J5ICBwYWRkaW5nIGlzIHVzZWQgYXMgYQotICAgICAgICAgICAgcGFydCBvZiBzcGVjaWFsIGNvbnRyb2wgc2VxdWVuY2VzIHN1Y2ggYXMgPEVNPmZsYXNoPC9FTT4uCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1OQ1VSU0VTX0FTU1VNRURfQ09MT1JTIj5OQ1VSU0VTX0FTU1VNRURfQ09MT1JTPC9hPjwvSDM+PFBSRT4KKyAgICAgICBPdmVycmlkZSB0aGUgY29tcGlsZWQtaW4gYXNzdW1wdGlvbiAgdGhhdCAgdGhlICB0ZXJtaW5hbCdzCisgICAgICAgZGVmYXVsdCAgIGNvbG9ycyAgIGFyZSAgd2hpdGUtb24tYmxhY2sgIChzZWUgIDxTVFJPTkc+ZGVmYXVsdF9jb2wtPC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJkZWZhdWx0X2NvbG9ycy4zeC5odG1sIj5vcnMoM3gpPC9BPjwvU1RST05HPikuICBZb3UgbWF5IHNldCB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcgorICAgICAgIHZhbHVlcyAgd2l0aCB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGJ5IHByb3ZpbmcgYSAyLWVsZS0KKyAgICAgICBtZW50IGxpc3Q6IGZvcmVncm91bmQsYmFja2dyb3VuZC4gIEZvciAgZXhhbXBsZSwgIHRvICB0ZWxsCisgICAgICAgbmN1cnNlcyAgdG8gbm90IGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgY29sb3JzLCBzZXQgdGhpcworICAgICAgIHRvICItMSwtMSIuICBUbyBtYWtlIGl0IGdyZWVuLW9uLWJsYWNrLCBzZXQgaXQgIHRvICAiMiwwIi4KKyAgICAgICBBbnkgIHBvc2l0aXZlICB2YWx1ZSAgZnJvbSB6ZXJvIHRvIHRoZSB0ZXJtaW5mbyA8U1RST05HPm1heF9jb2xvcnM8L1NUUk9ORz4KKyAgICAgICB2YWx1ZSBpcyBhbGxvd2VkLgogCi0gICAgICAgTkNVUlNFU19OT19TRVRCVUYKLSAgICAgICAgICAgIE5vcm1hbGx5IDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBlbmFibGVzIGJ1ZmZlcmVkIG91dHB1dCBkdXJpbmcgIHRlci0KLSAgICAgICAgICAgIG1pbmFsICBpbml0aWFsaXphdGlvbi4gICBUaGlzICBpcyAgZG9uZSAgKGFzICBpbiBTVnI0Ci0gICAgICAgICAgICBjdXJzZXMpIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgIEZvciAgdGVzdGluZyAgcHVyLQotICAgICAgICAgICAgcG9zZXMsIGJvdGggb2YgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGFuZCBjZXJ0YWluIGFwcGxpY2F0aW9ucywgdGhpcwotICAgICAgICAgICAgZmVhdHVyZSAgICBpcyAgICBtYWRlICAgIG9wdGlvbmFsLiAgICAgU2V0dGluZyAgICB0aGUKLSAgICAgICAgICAgIE5DVVJTRVNfTk9fU0VUQlVGIHZhcmlhYmxlIGRpc2FibGVzIG91dHB1dCBidWZmZXJpbmcsCi0gICAgICAgICAgICBsZWF2aW5nIHRoZSBvdXRwdXQgIGluICB0aGUgIG9yaWdpbmFsICAodXN1YWxseSAgbGluZQotICAgICAgICAgICAgYnVmZmVyZWQpIG1vZGUuCiAKLSAgICAgICBOQ1VSU0VTX05PX1VURjhfQUNTCi0gICAgICAgICAgICBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBjaGVja3MgZm9yCi0gICAgICAgICAgICBzcGVjaWFsIGNhc2VzIHdoZXJlIFZUMTAwIGxpbmUtZHJhd2luZyAoYW5kIHRoZSAgY29yLQotICAgICAgICAgICAgcmVzcG9uZGluZyAgIGFsdGVybmF0ZSAgY2hhcmFjdGVyICBzZXQgIGNhcGFiaWxpdGllcykKLSAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUgdGVybWluZm8gYXJlIGtub3duICB0byAgYmUgIG1pc3NpbmcuCi0gICAgICAgICAgICBTcGVjaWZpY2FsbHksICB3aGVuICBydW5uaW5nICBpbiAgYSBVVEYtOCBsb2NhbGUsIHRoZQotICAgICAgICAgICAgTGludXggY29uc29sZSBlbXVsYXRvciBhbmQgIHRoZSAgR05VICBzY3JlZW4gIHByb2dyYW0KLSAgICAgICAgICAgIGlnbm9yZSAgdGhlc2UuICAgTmN1cnNlcyAgY2hlY2tzIHRoZSBURVJNIGVudmlyb25tZW50Ci0gICAgICAgICAgICB2YXJpYWJsZSBmb3IgdGhlc2UuICBGb3IgIG90aGVyICBzcGVjaWFsICBjYXNlcywgIHlvdQotICAgICAgICAgICAgc2hvdWxkICBzZXQgIHRoaXMgIGVudmlyb25tZW50ICB2YXJpYWJsZS4gIERvaW5nIHRoaXMKLSAgICAgICAgICAgIHRlbGxzIG5jdXJzZXMgdG8gdXNlIFVuaWNvZGUgdmFsdWVzIHdoaWNoICBjb3JyZXNwb25kCi0gICAgICAgICAgICB0byB0aGUgVlQxMDAgbGluZS1kcmF3aW5nIGdseXBocy4gIFRoYXQgd29ya3MgZm9yIHRoZQotICAgICAgICAgICAgc3BlY2lhbCBjYXNlcyBjaXRlZCwgYW5kIGlzIGxpa2VseSB0byB3b3JrIGZvciB0ZXJtaS0KLSAgICAgICAgICAgIG5hbCBlbXVsYXRvcnMuCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1OQ1VSU0VTX0NPTlNPTEUyIj5OQ1VSU0VTX0NPTlNPTEUyPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIGFwcGxpZXMgb25seSB0byB0aGUgTWluR1cgcG9ydCBvZiBuY3Vyc2VzLgogCi0gICAgICAgICAgICBXaGVuICBzZXR0aW5nICB0aGlzICB2YXJpYWJsZSwgeW91IHNob3VsZCBzZXQgaXQgdG8gYQotICAgICAgICAgICAgbm9uemVybyB2YWx1ZS4gIFNldHRpbmcgaXQgdG8gemVybyAob3IgdG8gIGEgIG5vbm51bS0KLSAgICAgICAgICAgIGJlcikgZGlzYWJsZXMgdGhlIHNwZWNpYWwgY2hlY2sgZm9yIExpbnV4IGFuZCBzY3JlZW4uCisgICAgICAgVGhlIDxTVFJPTkc+Q29uc29sZTI8L1NUUk9ORz4gcHJvZ3JhbSdzIGhhbmRsaW5nIG9mIHRoZSAgTWljcm9zb2Z0ICBDb25zb2xlCisgICAgICAgQVBJIGNhbGwgPFNUUk9ORz5DcmVhdGVDb25zb2xlU2NyZWVuQnVmZmVyPC9TVFJPTkc+IGlzIGRlZmVjdGl2ZS4gIEFwcGxpY2EtCisgICAgICAgdGlvbnMgd2hpY2ggdXNlIHRoaXMgd2lsbCBoYW5nLiAgSG93ZXZlciwgaXQgIGlzICBwb3NzaWJsZQorICAgICAgIHRvICBzaW11bGF0ZSAgdGhlICBhY3Rpb24gIG9mIHRoaXMgY2FsbCBieSBtYXBwaW5nIGNvb3JkaS0KKyAgICAgICBuYXRlcywgZXhwbGljaXRseSBzYXZpbmcgYW5kIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgc2NyZWVuCisgICAgICAgY29udGVudHMuICAgU2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPFNUUk9ORz5OQ0dEQjwvU1RST05HPiBoYXMgdGhlCisgICAgICAgc2FtZSBlZmZlY3QuCiAKLSAgICAgICBOQ1VSU0VTX1RSQUNFCi0gICAgICAgICAgICBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gZGVidWdnaW5nICBsaWJyYXJ5Ci0gICAgICAgICAgICBjaGVja3MgIHRoZSAgTkNVUlNFU19UUkFDRSBzeW1ib2wuICBJZiBpdCBpcyBkZWZpbmVkLAotICAgICAgICAgICAgdG8gYSBudW1lcmljIHZhbHVlLCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gY2FsbHMgdGhlIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gZnVuY3Rpb24sCi0gICAgICAgICAgICB1c2luZyB0aGF0IHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KIAotICAgICAgICAgICAgVGhlICBhcmd1bWVudCAgdmFsdWVzLCB3aGljaCBhcmUgZGVmaW5lZCBpbiA8U1RST05HPmN1cnNlcy5oPC9TVFJPTkc+LAotICAgICAgICAgICAgcHJvdmlkZSBzZXZlcmFsIHR5cGVzIG9mIGluZm9ybWF0aW9uLiAgIFdoZW4gIHJ1bm5pbmcKLSAgICAgICAgICAgIHdpdGggIHRyYWNlcyBlbmFibGVkLCB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgd3JpdGUgdGhlCi0gICAgICAgICAgICBmaWxlIDxTVFJPTkc+dHJhY2U8L1NUUk9ORz4gdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtTkNVUlNFU19HUE1fVEVSTVMiPk5DVVJTRVNfR1BNX1RFUk1TPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGlzIGFwcGxpZXMgb25seSB0byBuY3Vyc2VzIGNvbmZpZ3VyZWQgIHRvICB1c2UgIHRoZSAgR1BNCisgICAgICAgaW50ZXJmYWNlLgogCi0gICAgICAgVEVSTSBEZW5vdGVzIHlvdXIgdGVybWluYWwgdHlwZS4gIEVhY2ggIHRlcm1pbmFsICB0eXBlICBpcwotICAgICAgICAgICAgZGlzdGluY3QsIHRob3VnaCBtYW55IGFyZSBzaW1pbGFyLgorICAgICAgIElmICBwcmVzZW50LCAgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGEgbGlzdCBvZiBvbmUgb3IKKyAgICAgICBtb3JlIHRlcm1pbmFsIG5hbWVzIGFnYWluc3QgIHdoaWNoICB0aGUgIFRFUk0gIGVudmlyb25tZW50CisgICAgICAgdmFyaWFibGUgIGlzICBtYXRjaGVkLiAgIFNldHRpbmcgaXQgdG8gYW4gZW1wdHkgdmFsdWUgZGlzLQorICAgICAgIGFibGVzIHRoZSBHUE0gaW50ZXJmYWNlOyB1c2luZyB0aGUgIGJ1aWx0LWluICBzdXBwb3J0ICBmb3IKKyAgICAgICB4dGVybSwgZXRjLgogCi0gICAgICAgVEVSTUNBUAotICAgICAgICAgICAgSWYgdGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBsaWJyYXJ5IGhhcyBiZWVuIGNvbmZpZ3VyZWQgd2l0aCA8RU0+dGVybS08L0VNPgotICAgICAgICAgICAgPEVNPmNhcDwvRU0+IHN1cHBvcnQsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiAgd2lsbCAgY2hlY2sgIGZvciAgYSAgdGVybWluYWwncwotICAgICAgICAgICAgZGVzY3JpcHRpb24gaW4gdGVybWNhcCBmb3JtIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUgaW4KLSAgICAgICAgICAgIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4KKyAgICAgICBJZiAgdGhlICBlbnZpcm9ubWVudCAgdmFyaWFibGUgIGlzICBhYnNlbnQsICBuY3Vyc2VzICB3aWxsCisgICAgICAgYXR0ZW1wdCB0byBvcGVuIEdQTSBpZiBURVJNIGNvbnRhaW5zICJsaW51eCIuCiAKLSAgICAgICAgICAgIFRoZSAgVEVSTUNBUCAgc3ltYm9sICBjb250YWlucyAgZWl0aGVyICAgYSAgIHRlcm1pbmFsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiAgKHdpdGggIG5ld2xpbmVzIHN0cmlwcGVkIG91dCksIG9yIGEgZmlsZQotICAgICAgICAgICAgbmFtZSB0ZWxsaW5nIHdoZXJlIHRoZSAgaW5mb3JtYXRpb24gIGRlbm90ZWQgIGJ5ICB0aGUKLSAgICAgICAgICAgIFRFUk0gIHN5bWJvbCAgZXhpc3RzLiAgIEluICBlaXRoZXIgIGNhc2UsICBzZXR0aW5nIGl0Ci0gICAgICAgICAgICBkaXJlY3RzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB0byBpZ25vcmUgdGhlIHVzdWFsICBwbGFjZSAgZm9yICB0aGlzCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiwgZS5nLiwgL2V0Yy90ZXJtY2FwLgogCi0gICAgICAgVEVSTUlORk8KLSAgICAgICAgICAgIE92ZXJyaWRlcyB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBzZWFyY2hlcyBmb3IKLSAgICAgICAgICAgIHlvdXIgdGVybWluYWwgZGVzY3JpcHRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdCwgYnV0Ci0gICAgICAgICAgICBub3QgIHRoZSAgb25seSB3YXkgdG8gY2hhbmdlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgVGhlIGNvbXBsZXRlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgaW4gb3JkZXIgZm9sbG93czoKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU5DVVJTRVNfTk9fSEFSRF9UQUJTIj5OQ1VSU0VTX05PX0hBUkRfVEFCUzwvYT48L0gzPjxQUkU+CisgICAgICAgPFNUUk9ORz5OY3Vyc2VzPC9TVFJPTkc+IG1heSB1c2UgdGFicyBhcyBwYXJ0IG9mIHRoZSBjdXJzb3IgbW92ZW1lbnQgIG9wdGktCisgICAgICAgbWl6YXRpb24uICAgSW4gIHNvbWUgIGNhc2VzLCAgeW91ciB0ZXJtaW5hbCBkcml2ZXIgbWF5IG5vdAorICAgICAgIGhhbmRsZSB0aGVzZSBwcm9wZXJseS4gIFNldCB0aGlzIGVudmlyb25tZW50ICB2YXJpYWJsZSAgdG8KKyAgICAgICBkaXNhYmxlICB0aGUgIGZlYXR1cmUuICBZb3UgY2FuIGFsc28gYWRqdXN0IHlvdXIgPFNUUk9ORz5zdHR5PC9TVFJPTkc+IHNldC0KKyAgICAgICB0aW5ncyB0byBhdm9pZCB0aGUgcHJvYmxlbS4gIE5DVVJTRVNfTk9fTUFHSUNfQ09PS0lFICBTb21lCisgICAgICAgdGVybWluYWxzICB1c2UgIGEgbWFnaWMtY29va2llIGZlYXR1cmUgd2hpY2ggcmVxdWlyZXMgc3BlLQorICAgICAgIGNpYWwgIGhhbmRsaW5nICB0byAgbWFrZSAgaGlnaGxpZ2h0aW5nICBhbmQgIG90aGVyICAgdmlkZW8KKyAgICAgICBhdHRyaWJ1dGVzICBkaXNwbGF5ICBwcm9wZXJseS4gIFlvdSBjYW4gc3VwcHJlc3MgdGhlIGhpZ2gtCisgICAgICAgbGlnaHRpbmcgZW50aXJlbHkgZm9yICB0aGVzZSAgdGVybWluYWxzICBieSAgc2V0dGluZyAgdGhpcworICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlLgogCi0gICAgICAgICAgICAtICB0aGUgbGFzdCBkaXJlY3RvcnkgdG8gd2hpY2ggPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHdyb3RlLCBpZiBhbnksCi0gICAgICAgICAgICAgICBpcyBzZWFyY2hlZCBmaXJzdAogCi0gICAgICAgICAgICAtICB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgVEVSTUlORk8gc3ltYm9sCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1OQ1VSU0VTX05PX1BBRERJTkciPk5DVVJTRVNfTk9fUEFERElORzwvYT48L0gzPjxQUkU+CisgICAgICAgTW9zdCBvZiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb25zIGluIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZQorICAgICAgIGFyZSB3cml0dGVuIGZvciByZWFsICJoYXJkd2FyZSIgIHRlcm1pbmFscy4gICBNYW55ICBwZW9wbGUKKyAgICAgICB1c2UgIHRlcm1pbmFsICBlbXVsYXRvcnMgd2hpY2ggcnVuIGluIGEgd2luZG93aW5nIGVudmlyb24tCisgICAgICAgbWVudCBhbmQgdXNlIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbnMuICAgVGVybWluYWwgIGVtdWxhLQorICAgICAgIHRvcnMgY2FuIGR1cGxpY2F0ZSBhbGwgb2YgdGhlIGltcG9ydGFudCBhc3BlY3RzIG9mIGEgaGFyZC0KKyAgICAgICB3YXJlIHRlcm1pbmFsLCBidXQgdGhleSBkbyBub3QgaGF2ZSB0aGUgc2FtZSAgbGltaXRhdGlvbnMuCisgICAgICAgVGhlICBjaGllZiAgbGltaXRhdGlvbiAgb2YgIGEgIGhhcmR3YXJlICB0ZXJtaW5hbCBmcm9tIHRoZQorICAgICAgIHN0YW5kcG9pbnQgIG9mICB5b3VyICBhcHBsaWNhdGlvbiAgaXMgIHRoZSAgbWFuYWdlbWVudCAgb2YKKyAgICAgICBkYXRhZmxvdywgIGkuZS4sICB0aW1pbmcuICAgVW5sZXNzICBhIGhhcmR3YXJlIHRlcm1pbmFsIGlzCisgICAgICAgaW50ZXJmYWNlZCBpbnRvIGEgdGVybWluYWwgY29uY2VudHJhdG9yICh3aGljaCAgZG9lcyAgZmxvdworICAgICAgIGNvbnRyb2wpLCAgaXQgIChvciB5b3VyIGFwcGxpY2F0aW9uKSBtdXN0IG1hbmFnZSBkYXRhZmxvdywKKyAgICAgICBwcmV2ZW50aW5nIG92ZXJydW5zLiAgVGhlIGNoZWFwZXN0IHNvbHV0aW9uICAobm8gIGhhcmR3YXJlCisgICAgICAgY29zdCkgIGlzICBmb3IgIHlvdXIgIHByb2dyYW0gIHRvIGRvIHRoaXMgYnkgcGF1c2luZyBhZnRlcgorICAgICAgIG9wZXJhdGlvbnMgdGhhdCB0aGUgdGVybWluYWwgZG9lcyBzbG93bHksIHN1Y2ggYXMgY2xlYXJpbmcKKyAgICAgICB0aGUgZGlzcGxheS4KIAotICAgICAgICAgICAgLSAgJEhPTUUvLnRlcm1pbmZvCisgICAgICAgQXMgIGEgIHJlc3VsdCwgIG1hbnkgIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyAoaW5jbHVkaW5nIHRoZQorICAgICAgIHZ0MTAwKSBoYXZlIGRlbGF5IHRpbWVzIGVtYmVkZGVkLiAgWW91ICBtYXkgIHdpc2ggIHRvICB1c2UKKyAgICAgICB0aGVzZSAgZGVzY3JpcHRpb25zLCAgYnV0ICBub3Qgd2FudCB0byBwYXkgdGhlIHBlcmZvcm1hbmNlCisgICAgICAgcGVuYWx0eS4KIAotICAgICAgICAgICAgLSAgZGlyZWN0b3JpZXMgbGlzdGVkIGluIHRoZSBURVJNSU5GT19ESVJTIHN5bWJvbAorICAgICAgIFNldCB0aGUgTkNVUlNFU19OT19QQURESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRpc2FibGUKKyAgICAgICBhbGwgYnV0IG1hbmRhdG9yeSBwYWRkaW5nLiAgTWFuZGF0b3J5IHBhZGRpbmcgaXMgdXNlZCBhcyBhCisgICAgICAgcGFydCBvZiBzcGVjaWFsIGNvbnRyb2wgc2VxdWVuY2VzIHN1Y2ggYXMgPEVNPmZsYXNoPC9FTT4uCiAKLSAgICAgICAgICAgIC0gIG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHdob3NlIG5hbWVzIGFyZSBjb25maWd1cmVkCi0gICAgICAgICAgICAgICBhbmQgIGNvbXBpbGVkICBpbnRvICB0aGUgIG5jdXJzZXMgIGxpYnJhcnksICBlLmcuLAotICAgICAgICAgICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mbwogCi0gICAgICAgVEVSTUlORk9fRElSUwotICAgICAgICAgICAgU3BlY2lmaWVzICBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciB0ZXJtaS0KLSAgICAgICAgICAgIG5hbCBkZXNjcmlwdGlvbnMuICBUaGUgbGlzdCBpcyAgc2VwYXJhdGVkICBieSAgY29sb25zCi0gICAgICAgICAgICAoaS5lLiwgICI6Iikgb24gVW5peCwgc2VtaWNvbG9ucyBvbiBPUy8yIEVNWC4gIEFsbCBvZgotICAgICAgICAgICAgdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyBhcmUgaW4gdGVybWluZm8gZm9ybSwgd2hpY2gKLSAgICAgICAgICAgIG1ha2VzICBhICBzdWJkaXJlY3RvcnkgIG5hbWVkIGZvciB0aGUgZmlyc3QgbGV0dGVyIG9mCi0gICAgICAgICAgICB0aGUgdGVybWluYWwgbmFtZXMgdGhlcmVpbi4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU5DVVJTRVNfTk9fU0VUQlVGIj5OQ1VSU0VTX05PX1NFVEJVRjwvYT48L0gzPjxQUkU+CisgICAgICAgVGhpcyBzZXR0aW5nIGlzIG9ic29sZXRlLiAgQmVmb3JlIGNoYW5nZXMKIAotICAgICAgIFRFUk1QQVRICi0gICAgICAgICAgICBJZiBURVJNQ0FQIGRvZXMgbm90IGhvbGQgYSAgZmlsZSAgbmFtZSAgdGhlbiAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+Ci0gICAgICAgICAgICBjaGVja3MgIHRoZSBURVJNUEFUSCBzeW1ib2wuICBUaGlzIGlzIGEgbGlzdCBvZiBmaWxlLQotICAgICAgICAgICAgbmFtZXMgc2VwYXJhdGVkIGJ5IHNwYWNlcyBvciBjb2xvbnMgIChpLmUuLCAgIjoiKSAgb24KLSAgICAgICAgICAgIFVuaXgsIHNlbWljb2xvbnMgb24gT1MvMiBFTVguICBJZiB0aGUgVEVSTVBBVEggc3ltYm9sCi0gICAgICAgICAgICBpcyBub3Qgc2V0LCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gbG9va3MgaW4gdGhlIGZpbGVzICAvZXRjL3Rlcm1jYXAsCi0gICAgICAgICAgICAvdXNyL3NoYXJlL21pc2MvdGVybWNhcCAgYW5kICAkSE9NRS8udGVybWNhcCwgaW4gdGhhdAotICAgICAgICAgICAgb3JkZXIuCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgc3RhcnRlZCB3aXRoIDUuOSBwYXRjaCAyMDEyMDgyNSBhbmQKIAotICAgICAgIFRoZSBsaWJyYXJ5IG1heSBiZSBjb25maWd1cmVkIHRvIGRpc3JlZ2FyZCAgdGhlICBmb2xsb3dpbmcKLSAgICAgICB2YXJpYWJsZXMgIHdoZW4gIHRoZSBjdXJyZW50IHVzZXIgaXMgdGhlIHN1cGVydXNlciAocm9vdCksCi0gICAgICAgb3IgaWYgdGhlIGFwcGxpY2F0aW9uIHVzZXMgc2V0dWlkIG9yICBzZXRnaWQgIHBlcm1pc3Npb25zOgorICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGNvbnRpbnVlZCB0aG91Z2ggNS45IHBhdGNoIDIwMTMwMTI2CisKKyAgICAgICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gZW5hYmxlZCBidWZmZXJlZCBvdXRwdXQgZHVyaW5nICB0ZXJtaW5hbCAgaW5pdGlhbC0KKyAgICAgICBpemF0aW9uLiAgIFRoaXMgIHdhcyAgZG9uZSAoYXMgaW4gU1ZyNCBjdXJzZXMpIGZvciBwZXJmb3ItCisgICAgICAgbWFuY2UgcmVhc29ucy4gIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBib3RoIG9mIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiAgYW5kCisgICAgICAgY2VydGFpbiAgYXBwbGljYXRpb25zLCAgdGhpcyAgZmVhdHVyZSAgd2FzICBtYWRlIG9wdGlvbmFsLgorICAgICAgIFNldHRpbmcgdGhlICBOQ1VSU0VTX05PX1NFVEJVRiAgdmFyaWFibGUgIGRpc2FibGVkICBvdXRwdXQKKyAgICAgICBidWZmZXJpbmcsICBsZWF2aW5nICB0aGUgIG91dHB1dCAgaW4gdGhlIG9yaWdpbmFsICh1c3VhbGx5CisgICAgICAgbGluZSBidWZmZXJlZCkgbW9kZS4KKworICAgICAgIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBuY3Vyc2VzICBwZXJmb3JtcyAgaXRzICBvd24KKyAgICAgICBidWZmZXJpbmcgIGFuZCAgZG9lcyBub3QgcmVxdWlyZSB0aGlzIHdvcmthcm91bmQuICBJdCBkb2VzCisgICAgICAgbm90IG1vZGlmeSB0aGUgYnVmZmVyaW5nIG9mIHRoZSBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICBUaGUgcmVhc29uIGZvciB0aGUgY2hhbmdlIHdhcyB0byAgbWFrZSAgdGhlICBiZWhhdmlvciAgZm9yCisgICAgICAgaW50ZXJydXB0cyBhbmQgb3RoZXIgc2lnbmFscyBtb3JlIHJvYnVzdC4gIE9uZSBkcmF3YmFjayBpcworICAgICAgIHRoYXQgY2VydGFpbiBub25jb252ZW50aW9uYWwgcHJvZ3JhbXMgd291bGQgIG1peCAgb3JkaW5hcnkKKyAgICAgICBzdGRpbyAgY2FsbHMgIHdpdGggbmN1cnNlcyBjYWxscyBhbmQgKHVzdWFsbHkpIHdvcmsuICBUaGlzCisgICAgICAgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlICBzaW5jZSAgbmN1cnNlcyAgaXMgIG5vdCAgdXNpbmcgIHRoZQorICAgICAgIGJ1ZmZlcmVkICBzdGFuZGFyZCAgb3V0cHV0IGJ1dCBpdHMgb3duIG91dHB1dCAodG8gdGhlIHNhbWUKKyAgICAgICBmaWxlIGRlc2NyaXB0b3IpLiAgQXMgYSBzcGVjaWFsIGNhc2UsIHRoZSBsb3ctbGV2ZWwgIGNhbGxzCisgICAgICAgc3VjaCAgYXMgIDxTVFJPTkc+cHV0cDwvU1RST05HPiAgc3RpbGwgIHVzZSB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgQnV0IGhpZ2gtCisgICAgICAgbGV2ZWwgY3Vyc2VzIGNhbGxzIGRvIG5vdC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1OQ1VSU0VTX05PX1VURjhfQUNTIj5OQ1VSU0VTX05PX1VURjhfQUNTPC9hPjwvSDM+PFBSRT4KKyAgICAgICBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gbGlicmFyeSBjaGVja3MgZm9yIHNwZS0KKyAgICAgICBjaWFsIGNhc2VzIHdoZXJlIFZUMTAwIGxpbmUtZHJhd2luZyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgIGNhcGFiaWxpdGllcykgIGRlc2NyaWJlZCAgaW4gIHRoZQorICAgICAgIHRlcm1pbmZvIGFyZSBrbm93biB0byBiZSBtaXNzaW5nLiAgU3BlY2lmaWNhbGx5LCB3aGVuIHJ1bi0KKyAgICAgICBuaW5nIGluIGEgVVRGLTggbG9jYWxlLCB0aGUgTGludXggY29uc29sZSBlbXVsYXRvciBhbmQgdGhlCisgICAgICAgR05VICBzY3JlZW4gcHJvZ3JhbSBpZ25vcmUgdGhlc2UuICBOY3Vyc2VzIGNoZWNrcyB0aGUgVEVSTQorICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGVzZS4gIEZvciBvdGhlciBzcGVjaWFsICBjYXNlcywKKyAgICAgICB5b3UgIHNob3VsZCAgc2V0ICB0aGlzICBlbnZpcm9ubWVudCAgdmFyaWFibGUuICBEb2luZyB0aGlzCisgICAgICAgdGVsbHMgbmN1cnNlcyB0byB1c2UgVW5pY29kZSB2YWx1ZXMgIHdoaWNoICBjb3JyZXNwb25kICB0bworICAgICAgIHRoZSBWVDEwMCBsaW5lLWRyYXdpbmcgZ2x5cGhzLiAgVGhhdCB3b3JrcyBmb3IgdGhlIHNwZWNpYWwKKyAgICAgICBjYXNlcyBjaXRlZCwgYW5kIGlzIGxpa2VseSB0byB3b3JrIGZvciB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgICAgICBXaGVuIHNldHRpbmcgdGhpcyB2YXJpYWJsZSwgeW91IHNob3VsZCBzZXQgaXQgdG8gYSBub256ZXJvCisgICAgICAgdmFsdWUuICAgU2V0dGluZyAgaXQgIHRvIHplcm8gKG9yIHRvIGEgbm9ubnVtYmVyKSBkaXNhYmxlcworICAgICAgIHRoZSBzcGVjaWFsIGNoZWNrIGZvciAibGludXgiIGFuZCAic2NyZWVuIi4KKworICAgICAgIEFzIGFuIGFsdGVybmF0aXZlIHRvICB0aGUgIGVudmlyb25tZW50ICB2YXJpYWJsZSwgIG5jdXJzZXMKKyAgICAgICBjaGVja3MgIGZvciBhbiBleHRlbmRlZCB0ZXJtaW5mbyBjYXBhYmlsaXR5IDxTVFJPTkc+VTg8L1NUUk9ORz4uICBUaGlzIGlzIGEKKyAgICAgICBudW1lcmljIGNhcGFiaWxpdHkgd2hpY2ggY2FuICBiZSAgY29tcGlsZWQgIHVzaW5nICA8U1RST05HPnRpYzwvU1RST05HPiA8U1RST05HPi14PC9TVFJPTkc+LgorICAgICAgIEZvciBleGFtcGxlCisKKyAgICAgICAgICAjIGxpbnV4IGNvbnNvbGUsIGlmIHBhdGNoZWQgdG8gcHJvdmlkZSB3b3JraW5nCisgICAgICAgICAgIyBWVDEwMCBzaGlmdC1pbi9zaGlmdC1vdXQsIHdpdGggY29ycmVzcG9uZGluZyBmb250LgorICAgICAgICAgIGxpbnV4LXZ0MTAwfGxpbnV4IGNvbnNvbGUgd2l0aCBWVDEwMCBsaW5lLWdyYXBoaWNzLAorICAgICAgICAgICAgICAgICAgVTgjMCwgdXNlPWxpbnV4LAorCisgICAgICAgICAgIyB1eHRlcm0gd2l0aCB2dDEwMEdyYXBoaWNzIHJlc291cmNlIHNldCB0byBmYWxzZQorICAgICAgICAgIHh0ZXJtLXV0Zjh8eHRlcm0gcmVseWluZyBvbiBVVEYtOCBsaW5lLWdyYXBoaWNzLAorICAgICAgICAgICAgICAgICAgVTgjMSwgdXNlPXh0ZXJtLAorCisgICAgICAgVGhlIG5hbWUgIlU4IiBpcyBjaG9zZW4gdG8gYmUgdHdvIGNoYXJhY3RlcnMsIHRvIHBlcm1pdCBpdAorICAgICAgIHRvIGJlIHVzZWQgIGJ5ICBhcHBsaWNhdGlvbnMgIHRoYXQgIHVzZSAgbmN1cnNlcycgIHRlcm1jYXAKKyAgICAgICBpbnRlcmZhY2UuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtTkNVUlNFU19UUkFDRSI+TkNVUlNFU19UUkFDRTwvYT48L0gzPjxQUkU+CisgICAgICAgRHVyaW5nICAgaW5pdGlhbGl6YXRpb24sICB0aGUgIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiAgZGVidWdnaW5nICBsaWJyYXJ5CisgICAgICAgY2hlY2tzIHRoZSBOQ1VSU0VTX1RSQUNFIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSWYgIGl0ICBpcworICAgICAgIGRlZmluZWQsIHRvIGEgbnVtZXJpYyB2YWx1ZSwgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGNhbGxzIHRoZSA8U1RST05HPnRyYWNlPC9TVFJPTkc+IGZ1bmMtCisgICAgICAgdGlvbiwgdXNpbmcgdGhhdCB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCisKKyAgICAgICBUaGUgYXJndW1lbnQgdmFsdWVzLCB3aGljaCBhcmUgZGVmaW5lZCBpbiAgPFNUUk9ORz5jdXJzZXMuaDwvU1RST05HPiwgIHByby0KKyAgICAgICB2aWRlICBzZXZlcmFsICB0eXBlcyAgb2YgIGluZm9ybWF0aW9uLiAgIFdoZW4gcnVubmluZyB3aXRoCisgICAgICAgdHJhY2VzIGVuYWJsZWQsIHlvdXIgYXBwbGljYXRpb24gd2lsbCB3cml0ZSB0aGUgZmlsZSA8U1RST05HPnRyYWNlPC9TVFJPTkc+CisgICAgICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCisgICAgICAgU2VlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190cmFjZS4zeC5odG1sIj5jdXJzX3RyYWNlKDN4KTwvQT48L1NUUk9ORz4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVEVSTSI+VEVSTTwvYT48L0gzPjxQUkU+CisgICAgICAgRGVub3RlcyAgeW91ciAgdGVybWluYWwgIHR5cGUuICBFYWNoIHRlcm1pbmFsIHR5cGUgaXMgZGlzLQorICAgICAgIHRpbmN0LCB0aG91Z2ggbWFueSBhcmUgc2ltaWxhci4KKworICAgICAgIDxTVFJPTkc+VEVSTTwvU1RST05HPiBpcyBjb21tb25seSBzZXQgYnkgdGVybWluYWwgZW11bGF0b3JzIHRvIGhlbHAgIGFwcGxpLQorICAgICAgIGNhdGlvbnMgIGZpbmQgIGEgIHdvcmthYmxlICB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4gIFNvbWUgb2YKKyAgICAgICB0aG9zZSAgY2hvb3NlICBhICBwb3B1bGFyICBhcHByb3hpbWF0aW9uLCAgZS5nLiwgICAiYW5zaSIsCisgICAgICAgInZ0MTAwIiwgICJ4dGVybSIgIHJhdGhlciAgdGhhbiAgYW4gZXhhY3QgZml0LiAgTm90IGluZnJlLQorICAgICAgIHF1ZW50bHksIHlvdXIgYXBwbGljYXRpb24gd2lsbCAgaGF2ZSAgcHJvYmxlbXMgIHdpdGggIHRoYXQKKyAgICAgICBhcHByb2FjaCwgZS5nLiwgaW5jb3JyZWN0IGZ1bmN0aW9uLWtleSBkZWZpbml0aW9ucy4KKworICAgICAgIElmICB5b3UgIHNldCA8U1RST05HPlRFUk08L1NUUk9ORz4gaW4geW91ciBlbnZpcm9ubWVudCwgaXQgaGFzIG5vIGVmZmVjdCBvbgorICAgICAgIHRoZSBvcGVyYXRpb24gb2YgdGhlIHRlcm1pbmFsIGVtdWxhdG9yLiAgSXQgIG9ubHkgIGFmZmVjdHMKKyAgICAgICB0aGUgIHdheSBhcHBsaWNhdGlvbnMgd29yayB3aXRoaW4gdGhlIHRlcm1pbmFsLiAgTGlrZXdpc2UsCisgICAgICAgYXMgYSBnZW5lcmFsIHJ1bGUgKDxTVFJPTkc+eHRlcm08L1NUUk9ORz4gYmVpbmcgYSByYXJlIGV4Y2VwdGlvbiksIHRlcm1pbmFsCisgICAgICAgZW11bGF0b3JzICB3aGljaCAgYWxsb3cgeW91IHRvIHNwZWNpZnkgPFNUUk9ORz5URVJNPC9TVFJPTkc+IGFzIGEgcGFyYW1ldGVyCisgICAgICAgb3IgY29uZmlndXJhdGlvbiB2YWx1ZSBkbyBub3QgIGNoYW5nZSAgdGhlaXIgIGJlaGF2aW9yICB0bworICAgICAgIG1hdGNoIHRoYXQgc2V0dGluZy4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1URVJNQ0FQIj5URVJNQ0FQPC9hPjwvSDM+PFBSRT4KKyAgICAgICBJZiAgdGhlICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gIGxpYnJhcnkgaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoIDxFTT50ZXJtY2FwPC9FTT4KKyAgICAgICBzdXBwb3J0LCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gd2lsbCBjaGVjayBmb3IgYSAgdGVybWluYWwncyAgZGVzY3JpcHRpb24KKyAgICAgICBpbiAgdGVybWNhcCAgZm9ybSAgaWYgIGl0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHRlcm1pbmZvCisgICAgICAgZGF0YWJhc2UuCisKKyAgICAgICBUaGUgVEVSTUNBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWlucyBlaXRoZXIgYSAgdGVybWktCisgICAgICAgbmFsICBkZXNjcmlwdGlvbiAgKHdpdGggIG5ld2xpbmVzIHN0cmlwcGVkIG91dCksIG9yIGEgZmlsZQorICAgICAgIG5hbWUgdGVsbGluZyB3aGVyZSB0aGUgaW5mb3JtYXRpb24gIGRlbm90ZWQgIGJ5ICB0aGUgIFRFUk0KKyAgICAgICBlbnZpcm9ubWVudCAgdmFyaWFibGUgIGV4aXN0cy4gIEluIGVpdGhlciBjYXNlLCBzZXR0aW5nIGl0CisgICAgICAgZGlyZWN0cyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdG8gaWdub3JlIHRoZSB1c3VhbCBwbGFjZSBmb3IgdGhpcyAgaW5mb3ItCisgICAgICAgbWF0aW9uLCBlLmcuLCAvZXRjL3Rlcm1jYXAuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVEVSTUlORk8iPlRFUk1JTkZPPC9hPjwvSDM+PFBSRT4KKyAgICAgICBPdmVycmlkZXMgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gc2VhcmNoZXMgZm9yIHlvdXIKKyAgICAgICB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4gIFRoaXMgaXMgdGhlIHNpbXBsZXN0LCBidXQgIG5vdCAgdGhlCisgICAgICAgb25seSAgd2F5IHRvIGNoYW5nZSB0aGUgbGlzdCBvZiBkaXJlY3Rvcmllcy4gIFRoZSBjb21wbGV0ZQorICAgICAgIGxpc3Qgb2YgZGlyZWN0b3JpZXMgaW4gb3JkZXIgZm9sbG93czoKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIHRoZSBsYXN0IGRpcmVjdG9yeSB0byB3aGljaCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gd3JvdGUsIGlmICBhbnksCisgICAgICAgICAgICAgIGlzIHNlYXJjaGVkIGZpcnN0CisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgVEVSTUlORk8gZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgdmFyaWFibGUKKworICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgICRIT01FLy50ZXJtaW5mbworCisgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgZGlyZWN0b3JpZXMgbGlzdGVkIGluIHRoZSBURVJNSU5GT19ESVJTIGVudmlyb25tZW50CisgICAgICAgICAgICAgIHZhcmlhYmxlCisKKyAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBvbmUgIG9yIG1vcmUgZGlyZWN0b3JpZXMgd2hvc2UgbmFtZXMgYXJlIGNvbmZpZ3VyZWQKKyAgICAgICAgICAgICAgYW5kIGNvbXBpbGVkIGludG8gdGhlIG5jdXJzZXMgbGlicmFyeSwgaS5lLiwKKworICAgICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIC91c3IvbG9jYWwvbmN1cnNlcy9zaGFyZS90ZXItCisgICAgICAgICAgICAgICAgIG1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm8gIChjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgICAgICAgICAgICAgICBURVJNSU5GT19ESVJTIHZhcmlhYmxlKQorCisgICAgICAgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgL3Vzci9zaGFyZS90ZXJtaW5mbyAoY29ycmVzcG9uZGluZyB0byAgdGhlICBURVItCisgICAgICAgICAgICAgICAgIE1JTkZPIHZhcmlhYmxlKQorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVRFUk1JTkZPX0RJUlMiPlRFUk1JTkZPX0RJUlM8L2E+PC9IMz48UFJFPgorICAgICAgIFNwZWNpZmllcyAgYSAgbGlzdCAgb2YgIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgdGVybWluYWwKKyAgICAgICBkZXNjcmlwdGlvbnMuICBUaGUgbGlzdCBpcyBzZXBhcmF0ZWQgYnkgY29sb25zIChpLmUuLCAiOiIpCisgICAgICAgb24gVW5peCwgc2VtaWNvbG9ucyBvbiBPUy8yIEVNWC4KKworICAgICAgIEFsbCAgb2YgIHRoZSAgdGVybWluYWwgIGRlc2NyaXB0aW9ucyBhcmUgaW4gdGVybWluZm8gZm9ybS4KKyAgICAgICBOb3JtYWxseSB0aGVzZSBhcmUgc3RvcmVkIGluIGEgZGlyZWN0b3J5IHRyZWUsIHVzaW5nICBzdWItCisgICAgICAgZGlyZWN0b3JpZXMgIG5hbWVkICBieSAgdGhlICBmaXJzdCAgbGV0dGVyIG9mIHRoZSB0ZXJtaW5hbAorICAgICAgIG5hbWVzIHRoZXJlaW4uCisKKyAgICAgICBJZiA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gaXMgYnVpbHQgd2l0aCAgYSAgaGFzaGVkICBkYXRhYmFzZSwgIHRoZW4gIGVhY2gKKyAgICAgICBlbnRyeSBpbiB0aGlzIGxpc3QgY2FuIGFsc28gYmUgdGhlIHBhdGggb2YgdGhlIGNvcnJlc3BvbmQtCisgICAgICAgaW5nIGRhdGFiYXNlIGZpbGUuCisKKyAgICAgICBJZiA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gaXMgYnVpbHQgd2l0aCBhICBzdXBwb3J0ICBmb3IgIHJlYWRpbmcgIHRlcm1jYXAKKyAgICAgICBmaWxlcyBkaXJlY3RseSwgdGhlbiBhbiBlbnRyeSBpbiB0aGlzIGxpc3QgbWF5IGJlIHRoZSBwYXRoCisgICAgICAgb2YgYSB0ZXJtY2FwIGZpbGUuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVEVSTVBBVEgiPlRFUk1QQVRIPC9hPjwvSDM+PFBSRT4KKyAgICAgICBJZiBURVJNQ0FQIGRvZXMgbm90IGhvbGQgYSBmaWxlIG5hbWUgdGhlbiAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICBjaGVja3MKKyAgICAgICB0aGUgIFRFUk1QQVRIICBlbnZpcm9ubWVudCAgdmFyaWFibGUuICAgVGhpcyAgaXMgYSBsaXN0IG9mCisgICAgICAgZmlsZW5hbWVzIHNlcGFyYXRlZCBieSBzcGFjZXMgb3IgIGNvbG9ucyAgKGkuZS4sICAiOiIpICBvbgorICAgICAgIFVuaXgsIHNlbWljb2xvbnMgb24gT1MvMiBFTVguCisKKyAgICAgICBJZiAgdGhlICBURVJNUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4KKyAgICAgICBsb29rcyBpbiB0aGUgZmlsZXMgIC9ldGMvdGVybWNhcCwgIC91c3Ivc2hhcmUvbWlzYy90ZXJtY2FwCisgICAgICAgYW5kICRIT01FLy50ZXJtY2FwLCBpbiB0aGF0IG9yZGVyLgorCisgICAgICAgVGhlICBsaWJyYXJ5ICBtYXkgYmUgY29uZmlndXJlZCB0byBkaXNyZWdhcmQgdGhlIGZvbGxvd2luZworICAgICAgIHZhcmlhYmxlcyB3aGVuIHRoZSBjdXJyZW50IHVzZXIgaXMgdGhlICBzdXBlcnVzZXIgIChyb290KSwKKyAgICAgICBvciBpZiB0aGUgYXBwbGljYXRpb24gdXNlcyBzZXR1aWQgb3Igc2V0Z2lkIHBlcm1pc3Npb25zOgorCiAgICAgICAgJFRFUk1JTkZPLCAkVEVSTUlORk9fRElSUywgJFRFUk1QQVRILCBhcyB3ZWxsIGFzICRIT01FLgogCiAKIDwvUFJFPgotPEgyPkFMVEVSTkFURSBDT05GSUdVUkFUSU9OUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BTFRFUk5BVEUtQ09ORklHVVJBVElPTlMiPkFMVEVSTkFURSBDT05GSUdVUkFUSU9OUzwvYT48L0gyPjxQUkU+CiAgICAgICAgU2V2ZXJhbCAgZGlmZmVyZW50ICBjb25maWd1cmF0aW9ucyBhcmUgcG9zc2libGUsIGRlcGVuZGluZwogICAgICAgIG9uICB0aGUgIGNvbmZpZ3VyZSAgc2NyaXB0ICBvcHRpb25zICB1c2VkICB3aGVuICAgYnVpbGRpbmcKICAgICAgICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4uICAgVGhlcmUgIGFyZSBhIGZldyBtYWluIG9wdGlvbnMgd2hvc2UgZWZmZWN0cyBhcmUKQEAgLTEwNDIsNyArMTE4NCw3IEBACiAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgaW5jbHVkZSBmb3IgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGlzIGFzIG5vdGVkIGluICA8U1RST05HPlNZTi08L1NUUk9ORz4KICAgICAgICAgICAgIDxTVFJPTkc+T1BTSVM8L1NUUk9ORz46CiAKLSAgICAgICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CisgICAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtjdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgICAgICAgVGhpcyAgb3B0aW9uIGlzIHVzZWQgdG8gYXZvaWQgZmlsZW5hbWUgY29uZmxpY3RzIHdoZW4KICAgICAgICAgICAgIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBpcyBub3QgdGhlIG1haW4gaW1wbGVtZW50YXRpb24gb2YgIGN1cnNlcyAgb2YKQEAgLTEwNTAsNyArMTE5Miw3IEBACiAgICAgICAgICAgICBvdmVyd3JpdGUsIGl0IHB1dHMgaXRzICBoZWFkZXJzICBpbiAgYSAgc3ViZGlyZWN0b3J5LAogICAgICAgICAgICAgZS5nLiwKIAotICAgICAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtuY3Vyc2VzL2N1cnNlcy5oJmd0OzwvU1RST05HPgorICAgICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7bmN1cnNlcy9jdXJzZXMuaCZndDs8L1NUUk9ORz4KIAogICAgICAgICAgICAgSXQgIGFsc28gIG9taXRzIGEgc3ltYm9saWMgbGluayB3aGljaCB3b3VsZCBhbGxvdyB5b3UKICAgICAgICAgICAgIHRvIHVzZSA8U1RST05HPi1sY3Vyc2VzPC9TVFJPTkc+IHRvIGJ1aWxkIGV4ZWN1dGFibGVzLgpAQCAtMTA2MiwxMSArMTIwNCwxMSBAQAogICAgICAgICAgICAgbGlicmFyeSAgbmFtZXMgIGhhdmUgIGEgICJ3IiAgYXBwZW5kZWQgdG8gdGhlbSwgaS5lLiwKICAgICAgICAgICAgIGluc3RlYWQgb2YKIAotICAgICAgICAgICAgPFNUUk9ORz4tbG5jdXJzZXM8L1NUUk9ORz4KKyAgICAgICAgICA8U1RST05HPi1sbmN1cnNlczwvU1RST05HPgogCiAgICAgICAgICAgICB5b3UgbGluayB3aXRoCiAKLSAgICAgICAgICAgIDxTVFJPTkc+LWxuY3Vyc2VzdzwvU1RST05HPgorICAgICAgICAgIDxTVFJPTkc+LWxuY3Vyc2VzdzwvU1RST05HPgogCiAgICAgICAgICAgICBZb3UgbXVzdCBhbHNvIGRlZmluZSA8U1RST05HPl9YT1BFTl9TT1VSQ0VfRVhURU5ERUQ8L1NUUk9ORz4gd2hlbiBjb20tCiAgICAgICAgICAgICBwaWxpbmcgIGZvciAgdGhlICB3aWRlLWNoYXJhY3RlciAgbGlicmFyeSAgdG8gdXNlIHRoZQpAQCAtMTA4MSw2ICsxMjIzLDE3IEBACiAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgdG8gYmUgYnVpbHQgdXNpbmcgIGVpdGhlciAgbGlicmFyeSAgZnJvbQogICAgICAgICAgICAgdGhlIHNhbWUgc2V0IG9mIGhlYWRlcnMuCiAKKyAgICAgICAtLXdpdGgtcHRocmVhZAorICAgICAgICAgICAgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgcmVuYW1lcyB0aGUgbGlicmFyeS4gIEFsbCBvZiB0aGUKKyAgICAgICAgICAgIGxpYnJhcnkgbmFtZXMgaGF2ZSBhICJ0IiBhcHBlbmRlZCB0byB0aGVtIChiZWZvcmUgYW55CisgICAgICAgICAgICAidyIgYWRkZWQgYnkgPFNUUk9ORz4tLWVuYWJsZS13aWRlYzwvU1RST05HPikuCisKKyAgICAgICAgICAgIFRoZSAgZ2xvYmFsICB2YXJpYWJsZXMgIHN1Y2ggYXMgPFNUUk9ORz5MSU5FUzwvU1RST05HPiBhcmUgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgIG1hY3JvcyB0byBhbGxvdyByZWFkLW9ubHkgYWNjZXNzLiAgQXQgdGhlIHNhbWUgIHRpbWUsCisgICAgICAgICAgICBzZXR0ZXItZnVuY3Rpb25zICBhcmUgIHByb3ZpZGVkICB0byBzZXQgdGhlc2UgdmFsdWVzLgorICAgICAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMgKHZlcnkgZmV3KSBtYXkgcmVxdWlyZSAgY2hhbmdlcyAgdG8KKyAgICAgICAgICAgIHdvcmsgd2l0aCB0aGlzIGNvbnZlbnRpb24uCisKICAgICAgICAtLXdpdGgtc2hhcmVkCiAKICAgICAgICAtLXdpdGgtbm9ybWFsCkBAIC0xMTAzLDcgKzEyNTYsNyBAQAogCiAKIDwvUFJFPgotPEgyPkZJTEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUZJTEVTIj5GSUxFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgL3Vzci9zaGFyZS90YWJzZXQKICAgICAgICAgICAgIGRpcmVjdG9yeSAgY29udGFpbmluZyAgaW5pdGlhbGl6YXRpb24gIGZpbGVzICBmb3IgdGhlCiAgICAgICAgICAgICB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGFiYXNlIC91c3Ivc2hhcmUvdGVybWluZm8gdGVyLQpAQCAtMTExMSwxMyArMTI2NCwxNCBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiAgYW5kICByZWxhdGVkICBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbiAiY3Vyc18iCiAgICAgICAgZm9yIGRldGFpbGVkIHJvdXRpbmUgZGVzY3JpcHRpb25zLgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc192YXJpYWJsZXMuM3guaHRtbCI+Y3Vyc192YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPgogCiAKIDwvUFJFPgotPEgyPkVYVEVOU0lPTlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRVhURU5TSU9OUyI+RVhURU5TSU9OUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlICA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gIGxpYnJhcnkgIGNhbiAgYmUgIGNvbXBpbGVkICB3aXRoICBhbiAgb3B0aW9uCiAgICAgICAgKDxTVFJPTkc+LURVU0VfR0VUQ0FQPC9TVFJPTkc+KSB0aGF0IGZhbGxzIGJhY2sgdG8gdGhlIG9sZC1zdHlsZSAvZXRjL3Rlcm0tCiAgICAgICAgY2FwIGZpbGUgaWYgdGhlIHRlcm1pbmFsIHNldHVwIGNvZGUgY2Fubm90IGZpbmQgYSB0ZXJtaW5mbwpAQCAtMTE1Nyw3ICsxMzExLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIGJlIEJBU0UtbGV2ZWwgY29uZm9yLQogICAgICAgIG1hbnQgd2l0aCBYU0kgQ3Vyc2VzLiAgVGhlIEVYVEVOREVEIFhTSSBDdXJzZXMgZnVuY3Rpb25hbC0KICAgICAgICBpdHkgKGluY2x1ZGluZyBjb2xvciBzdXBwb3J0KSBpcyBzdXBwb3J0ZWQuCkBAIC0xMTY3LDMzICsxMzIxLDQ5IEBACiAgICAgICAgZGVzY3JpYmVkICBpbiAgPFNUUk9ORz5QT1JUQUJJTElUWTwvU1RST05HPiAgc2VjdGlvbnMgIG9mICB0aGUgIGxpYnJhcnkgbWFuCiAgICAgICAgcGFnZXMuCiAKKyAgICAgICBVbmxpa2Ugb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGlzIG9uZSAgY2hlY2tzICBwYXJhbWV0ZXJzCisgICAgICAgc3VjaCAgYXMgIHBvaW50ZXJzIHRvIFdJTkRPVyBzdHJ1Y3R1cmVzIHRvIGVuc3VyZSB0aGV5IGFyZQorICAgICAgIG5vdCBudWxsLiAgVGhlIG1haW4gcmVhc29uIGZvciBwcm92aWRpbmcgdGhpcyBiZWhhdmlvciAgaXMKKyAgICAgICB0byBndWFyZCBhZ2FpbnN0IHByb2dyYW1tZXIgZXJyb3IuICBUaGUgc3RhbmRhcmQgaW50ZXJmYWNlCisgICAgICAgZG9lcyBub3QgcHJvdmlkZSBhIHdheSBmb3IgdGhlIGxpYnJhcnkgdG8gdGVsbCBhbiBhcHBsaWNhLQorICAgICAgIHRpb24gIHdoaWNoICBvZiAgc2V2ZXJhbCAgcG9zc2libGUgIGVycm9ycyAgd2VyZSBkZXRlY3RlZC4KKyAgICAgICBSZWx5aW5nIG9uIHRoaXMgKG9yIHNvbWUgb3RoZXIpIGV4dGVuc2lvbiAgd2lsbCAgYWR2ZXJzZWx5CisgICAgICAgYWZmZWN0IHRoZSBwb3J0YWJpbGl0eSBvZiBjdXJzZXMgYXBwbGljYXRpb25zLgorCiAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBhbHNvIGNvbnRhaW5zIHNldmVyYWwgZXh0ZW5zaW9uczoKIAotICAgICAgICAgICAgVGhlIHJvdXRpbmUgPFNUUk9ORz5oYXNfa2V5PC9TVFJPTkc+IGlzIG5vdCBwYXJ0IG9mIFhQRzQsICBub3IgIGlzICBpdAotICAgICAgICAgICAgcHJlc2VudCAgaW4gU1ZyNC4gIFNlZSB0aGUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX2dldGNoLjN4Lmh0bWwiPmN1cnNfZ2V0Y2goM3gpPC9BPjwvU1RST05HPiBtYW51YWwgcGFnZQotICAgICAgICAgICAgZm9yIGRldGFpbHMuCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhlICByb3V0aW5lICA8U1RST05HPmhhc19rZXk8L1NUUk9ORz4gIGlzICBub3QgcGFydCBvZiBYUEc0LCBub3IgaXMgaXQKKyAgICAgICAgICAgcHJlc2VudCBpbiBTVnI0LiAgU2VlIHRoZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+ICBtYW51YWwgIHBhZ2UKKyAgICAgICAgICAgZm9yIGRldGFpbHMuCiAKLSAgICAgICAgICAgIFRoZSByb3V0aW5lIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4gaXMgbm90IHBhcnQgb2YgWFBHNCwgbm9yICBpcyAgaXQKLSAgICAgICAgICAgIHByZXNlbnQgIGluICBTVnI0LiAgIFNlZSB0aGUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Nsay4zeC5odG1sIj5jdXJzX3NsaygzeCk8L0E+PC9TVFJPTkc+IG1hbnVhbCBwYWdlCi0gICAgICAgICAgICBmb3IgZGV0YWlscy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgIHJvdXRpbmUgIDxTVFJPTkc+c2xrX2F0dHI8L1NUUk9ORz4gIGlzIG5vdCBwYXJ0IG9mIFhQRzQsIG5vciBpcyBpdAorICAgICAgICAgICBwcmVzZW50IGluIFNWcjQuICBTZWUgdGhlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19zbGsuM3guaHRtbCI+Y3Vyc19zbGsoM3gpPC9BPjwvU1RST05HPiBtYW51YWwgcGFnZSBmb3IKKyAgICAgICAgICAgZGV0YWlscy4KIAotICAgICAgICAgICAgVGhlIHJvdXRpbmVzIDxTVFJPTkc+Z2V0bW91c2U8L1NUUk9ORz4sICA8U1RST05HPm1vdXNlbWFzazwvU1RST05HPiwgIDxTVFJPTkc+dW5nZXRtb3VzZTwvU1RST05HPiwgIDxTVFJPTkc+bW91LTwvU1RST05HPgotICAgICAgICAgICAgPFNUUk9ORz5zZWludGVydmFsPC9TVFJPTkc+LCAgYW5kIDxTVFJPTkc+d2VuY2xvc2U8L1NUUk9ORz4gcmVsYXRpbmcgdG8gbW91c2UgaW50ZXJmYWMtCi0gICAgICAgICAgICBpbmcgYXJlIG5vdCBwYXJ0IG9mIFhQRzQsIG5vciAgYXJlICB0aGV5ICBwcmVzZW50ICBpbgotICAgICAgICAgICAgU1ZyNC4gICAgU2VlICAgdGhlICA8U1RST05HPjxBIEhSRUY9ImN1cnNfbW91c2UuM3guaHRtbCI+Y3Vyc19tb3VzZSgzeCk8L0E+PC9TVFJPTkc+ICBtYW51YWwgIHBhZ2UgIGZvcgotICAgICAgICAgICAgZGV0YWlscy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgcm91dGluZXMgPFNUUk9ORz5nZXRtb3VzZTwvU1RST05HPiwgPFNUUk9ORz5tb3VzZW1hc2s8L1NUUk9ORz4sIDxTVFJPTkc+dW5nZXRtb3VzZTwvU1RST05HPiwgPFNUUk9ORz5tb3VzZWluLTwvU1RST05HPgorICAgICAgICAgICA8U1RST05HPnRlcnZhbDwvU1RST05HPiwgYW5kIDxTVFJPTkc+d2VuY2xvc2U8L1NUUk9ORz4gcmVsYXRpbmcgdG8gbW91c2UgaW50ZXJmYWNpbmcgYXJlCisgICAgICAgICAgIG5vdCAgcGFydCAgb2YgWFBHNCwgbm9yIGFyZSB0aGV5IHByZXNlbnQgaW4gU1ZyNC4gIFNlZQorICAgICAgICAgICB0aGUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX21vdXNlLjN4Lmh0bWwiPmN1cnNfbW91c2UoM3gpPC9BPjwvU1RST05HPiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KIAotICAgICAgICAgICAgVGhlIHJvdXRpbmUgPFNUUk9ORz5tY3ByaW50PC9TVFJPTkc+IHdhcyBub3QgcHJlc2VudCBpbiAgYW55ICBwcmV2aW91cwotICAgICAgICAgICAgY3Vyc2VzIGltcGxlbWVudGF0aW9uLiAgU2VlIHRoZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfcHJpbnQuM3guaHRtbCI+Y3Vyc19wcmludCgzeCk8L0E+PC9TVFJPTkc+IG1hbnVhbAotICAgICAgICAgICAgcGFnZSBmb3IgZGV0YWlscy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgcm91dGluZSA8U1RST05HPm1jcHJpbnQ8L1NUUk9ORz4gd2FzIG5vdCBwcmVzZW50ICBpbiAgYW55ICBwcmV2aW91cworICAgICAgICAgICBjdXJzZXMgIGltcGxlbWVudGF0aW9uLiAgU2VlIHRoZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfcHJpbnQuM3guaHRtbCI+Y3Vyc19wcmludCgzeCk8L0E+PC9TVFJPTkc+IG1hbnVhbAorICAgICAgICAgICBwYWdlIGZvciBkZXRhaWxzLgogCi0gICAgICAgICAgICBUaGUgcm91dGluZSA8U1RST05HPndyZXNpemU8L1NUUk9ORz4gaXMgbm90IHBhcnQgb2YgWFBHNCwgIG5vciAgaXMgIGl0Ci0gICAgICAgICAgICBwcmVzZW50IGluIFNWcjQuICBTZWUgdGhlIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4gbWFudWFsIHBhZ2UgZm9yCi0gICAgICAgICAgICBkZXRhaWxzLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSByb3V0aW5lIDxTVFJPTkc+d3Jlc2l6ZTwvU1RST05HPiBpcyBub3QgcGFydCBvZiAgWFBHNCwgIG5vciAgaXMgIGl0CisgICAgICAgICAgIHByZXNlbnQgIGluIFNWcjQuICBTZWUgdGhlIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4gbWFudWFsIHBhZ2UgZm9yCisgICAgICAgICAgIGRldGFpbHMuCiAKLSAgICAgICAgICAgIFRoZSBXSU5ET1cgc3RydWN0dXJlJ3MgaW50ZXJuYWwgZGV0YWlscyBjYW4gYmUgaGlkZGVuCi0gICAgICAgICAgICBmcm9tICBhcHBsaWNhdGlvbiAgcHJvZ3JhbXMuICBTZWUgPFNUUk9ORz48QSBIUkVGPSJjdXJzX29wYXF1ZS4zeC5odG1sIj5jdXJzX29wYXF1ZSgzeCk8L0E+PC9TVFJPTkc+IGZvcgotICAgICAgICAgICAgdGhlIGRpc2N1c3Npb24gb2YgPFNUUk9ORz5pc19zY3JvbGxvazwvU1RST05HPiwgZXRjLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoZSBXSU5ET1cgc3RydWN0dXJlJ3MgaW50ZXJuYWwgZGV0YWlscyBjYW4gYmUgIGhpZGRlbgorICAgICAgICAgICBmcm9tICBhcHBsaWNhdGlvbiAgcHJvZ3JhbXMuICAgU2VlIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc19vcGFxdWUuM3guaHRtbCI+Y3Vyc19vcGFxdWUoM3gpPC9BPjwvU1RST05HPiBmb3IKKyAgICAgICAgICAgdGhlIGRpc2N1c3Npb24gb2YgPFNUUk9ORz5pc19zY3JvbGxvazwvU1RST05HPiwgZXRjLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgY29uZmlndXJlZCB0byBwcm92aWRlIHJ1ZGktCisgICAgICAgICAgIG1lbnRhcnkgIHN1cHBvcnQgZm9yIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gIFNlZQorICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGhyZWFkcy4zeC5odG1sIj5jdXJzX3RocmVhZHMoM3gpPC9BPjwvU1RST05HPiBmb3IgZGV0YWlscy4KKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGFsc28gYmUgY29uZmlndXJlZCB0byAgcHJvdmlkZQorICAgICAgICAgICBhIHNldCBvZiBmdW5jdGlvbnMgd2hpY2ggaW1wcm92ZSB0aGUgYWJpbGl0eSB0byBtYW5hZ2UKKyAgICAgICAgICAgbXVsdGlwbGUgc2NyZWVucy4gIFNlZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfc3BfZnVuY3MuM3guaHRtbCI+Y3Vyc19zcF9mdW5jcygzeCk8L0E+PC9TVFJPTkc+IGZvciBkZXRhaWxzLgogCiAgICAgICAgSW4gaGlzdG9yaWMgY3Vyc2VzIHZlcnNpb25zLCBkZWxheXMgZW1iZWRkZWQgaW4gdGhlICBjYXBhLQogICAgICAgIGJpbGl0aWVzIDxTVFJPTkc+Y3I8L1NUUk9ORz4sIDxTVFJPTkc+aW5kPC9TVFJPTkc+LCA8U1RST05HPmN1YjE8L1NUUk9ORz4sIDxTVFJPTkc+ZmY8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dGFiPC9TVFJPTkc+IGFjdGl2YXRlZCBjb3JyZXNwb25kaW5nCkBAIC0xMjA1LDcgKzEzNzUsNyBAQAogCiAKIDwvUFJFPgotPEgyPk5PVEVTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEVTIj5OT1RFUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIGhlYWRlciAgZmlsZSAgPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+ICBhdXRvbWF0aWNhbGx5ICBpbmNsdWRlcyAgdGhlCiAgICAgICAgaGVhZGVyIGZpbGVzIDxTVFJPTkc+Jmx0O3N0ZGlvLmgmZ3Q7PC9TVFJPTkc+IGFuZCA8U1RST05HPiZsdDt1bmN0cmwuaCZndDs8L1NUUk9ORz4uCiAKQEAgLTEyMTYsNyArMTM4Niw3IEBACiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBaZXlkIE0uIEJlbi1IYWxpbSwgRXJpYyAgUy4gIFJheW1vbmQsICBUaG9tYXMgIEUuICBEaWNrZXkuCiAgICAgICAgQmFzZWQgb24gcGN1cnNlcyBieSBQYXZlbCBDdXJ0aXMuCiAKQEAgLTEyMjQsMTAgKzEzOTQsNTEgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPm5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLUluaXRpYWxpemF0aW9uIj5Jbml0aWFsaXphdGlvbjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1EYXRhdHlwZXMiPkRhdGF0eXBlczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1FbnZpcm9ubWVudC12YXJpYWJsZXMiPkVudmlyb25tZW50IHZhcmlhYmxlczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Sb3V0aW5lLWFuZC1Bcmd1bWVudC1OYW1lcyI+Um91dGluZSBhbmQgQXJndW1lbnQgTmFtZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtUm91dGluZS1OYW1lLUluZGV4Ij5Sb3V0aW5lIE5hbWUgSW5kZXg8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FTlZJUk9OTUVOVCI+RU5WSVJPTk1FTlQ8L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLUJBVURSQVRFIj5CQVVEUkFURTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1DT0xVTU5TIj5DT0xVTU5TPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUVTQ0RFTEFZIj5FU0NERUxBWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1IT01FIj5IT01FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUxJTkVTIj5MSU5FUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1NT1VTRV9CVVRUT05TXzEyMyI+TU9VU0VfQlVUVE9OU18xMjM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTkNVUlNFU19BU1NVTUVEX0NPTE9SUyI+TkNVUlNFU19BU1NVTUVEX0NPTE9SUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1OQ1VSU0VTX0NPTlNPTEUyIj5OQ1VSU0VTX0NPTlNPTEUyPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLU5DVVJTRVNfR1BNX1RFUk1TIj5OQ1VSU0VTX0dQTV9URVJNUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1OQ1VSU0VTX05PX0hBUkRfVEFCUyI+TkNVUlNFU19OT19IQVJEX1RBQlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTkNVUlNFU19OT19QQURESU5HIj5OQ1VSU0VTX05PX1BBRERJTkc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTkNVUlNFU19OT19TRVRCVUYiPk5DVVJTRVNfTk9fU0VUQlVGPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLU5DVVJTRVNfTk9fVVRGOF9BQ1MiPk5DVVJTRVNfTk9fVVRGOF9BQ1M8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTkNVUlNFU19UUkFDRSI+TkNVUlNFU19UUkFDRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1URVJNIj5URVJNPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVRFUk1DQVAiPlRFUk1DQVA8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVEVSTUlORk8iPlRFUk1JTkZPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVRFUk1JTkZPX0RJUlMiPlRFUk1JTkZPX0RJUlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVEVSTVBBVEgiPlRFUk1QQVRIPC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItQUxURVJOQVRFLUNPTkZJR1VSQVRJT05TIj5BTFRFUk5BVEUgQ09ORklHVVJBVElPTlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRklMRVMiPkZJTEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FWFRFTlNJT05TIj5FWFRFTlNJT05TPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL25jdXJzZXM1LWNvbmZpZy4xLmh0bWwgYi9kb2MvaHRtbC9tYW4vbmN1cnNlczUtY29uZmlnLjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWViNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2h0bWwvbWFuL25jdXJzZXM1LWNvbmZpZy4xLmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhLS0gCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQElkOiBNS25jdV9jb25maWcuaW4sdiAxLjMgMjAxMC8wMy8wNiAyMjoyOToxNyB0b20gRXhwIEAKKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KKzxUSVRMRT5uY3Vyc2VzNS1jb25maWcgMTwvVElUTEU+Cis8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzwvSEVBRD4KKzxCT0RZPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPm5jdXJzZXM1LWNvbmZpZyAxPC9IMT4KKzxQUkU+Cis8U1RST05HPjxBIEhSRUY9Im5jdXJzZXM1LWNvbmZpZy4xLmh0bWwiPm5jdXJzZXM1LWNvbmZpZygxKTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlczUtY29uZmlnLjEuaHRtbCI+bmN1cnNlczUtY29uZmlnKDEpPC9BPjwvU1RST05HPgorCisKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KKyAgICAgICBuY3Vyc2VzNS1jb25maWcgLSBoZWxwZXIgc2NyaXB0IGZvciBuY3Vyc2VzIGxpYnJhcmllcworCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz5uY3Vyc2VzNS1jb25maWc8L1NUUk9ORz4gWzxFTT5vcHRpb25zPC9FTT5dCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGlzIGlzIGEgc2hlbGwgc2NyaXB0IHdoaWNoIHNpbXBsaWZpZXMgY29uZmlndXJpbmcgYXBwbGktCisgICAgICAgY2F0aW9ucyBhZ2FpbnN0IGEgcGFydGljdWxhciBzZXQgb2YgbmN1cnNlcyBsaWJyYXJpZXMuCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItT1BUSU9OUyI+T1BUSU9OUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz4tLXByZWZpeDwvU1RST05HPgorICAgICAgICAgICAgICBlY2hvcyB0aGUgcGFja2FnZS1wcmVmaXggb2YgbmN1cnNlcworCisgICAgICAgPFNUUk9ORz4tLWV4ZWMtcHJlZml4PC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zIHRoZSBleGVjdXRhYmxlLXByZWZpeCBvZiBuY3Vyc2VzCisKKyAgICAgICA8U1RST05HPi0tY2ZsYWdzPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zIHRoZSBDIGNvbXBpbGVyIGZsYWdzIG5lZWRlZCB0byAgY29tcGlsZSAgd2l0aAorICAgICAgICAgICAgICBuY3Vyc2VzCisKKyAgICAgICA8U1RST05HPi0tbGliczwvU1RST05HPiBlY2hvcyB0aGUgbGlicmFyaWVzIG5lZWRlZCB0byBsaW5rIHdpdGggbmN1cnNlcworCisgICAgICAgPFNUUk9ORz4tLXZlcnNpb248L1NUUk9ORz4KKyAgICAgICAgICAgICAgZWNob3MgdGhlIHJlbGVhc2UrcGF0Y2hkYXRlIHZlcnNpb24gb2YgbmN1cnNlcworCisgICAgICAgPFNUUk9ORz4tLWFiaS12ZXJzaW9uPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zIHRoZSBBQkkgdmVyc2lvbiBvZiBuY3Vyc2VzCisKKyAgICAgICA8U1RST05HPi0tbW91c2UtdmVyc2lvbjwvU1RST05HPgorICAgICAgICAgICAgICBlY2hvcyB0aGUgbW91c2UtaW50ZXJmYWNlIHZlcnNpb24gb2YgbmN1cnNlcworCisgICAgICAgPFNUUk9ORz4tLWJpbmRpcjwvU1RST05HPgorICAgICAgICAgICAgICBlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbmN1cnNlcyBwcm9ncmFtcworCisgICAgICAgPFNUUk9ORz4tLWRhdGFkaXI8L1NUUk9ORz4KKyAgICAgICAgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIG5jdXJzZXMgZGF0YQorCisgICAgICAgPFNUUk9ORz4tLWluY2x1ZGVkaXI8L1NUUk9ORz4KKyAgICAgICAgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIG5jdXJzZXMgaGVhZGVyIGZpbGVzCisKKyAgICAgICA8U1RST05HPi0tbGliZGlyPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBuY3Vyc2VzIGxpYnJhcmllcworCisgICAgICAgPFNUUk9ORz4tLW1hbmRpcjwvU1RST05HPgorICAgICAgICAgICAgICBlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbmN1cnNlcyBtYW5wYWdlcworCisgICAgICAgPFNUUk9ORz4tLXRlcm1pbmZvPC9TVFJPTkc+CisgICAgICAgICAgICAgIGVjaG9zIHRoZSAkVEVSTUlORk8gdGVybWluZm8gZGF0YWJhc2UgcGF0aCwgZS5nLiwKKyAgICAgICAgICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mbworCisgICAgICAgPFNUUk9ORz4tLXRlcm1pbmZvLWRpcnM8L1NUUk9ORz4KKyAgICAgICAgICAgICAgZWNob3MgdGhlICRURVJNSU5GT19ESVJTIGRpcmVjdG9yeSBsaXN0LCBlLmcuLAorICAgICAgICAgICAgICAvdXNyL2xvY2FsL25jdXJzZXMvc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS90ZXItCisgICAgICAgICAgICAgIG1pbmZvCisKKyAgICAgICA8U1RST05HPi0tdGVybXBhdGg8L1NUUk9ORz4KKyAgICAgICAgICAgICAgZWNob3MgdGhlICRURVJNUEFUSCB0ZXJtY2FwIGxpc3QsICBpZiAgc3VwcG9ydCAgZm9yCisgICAgICAgICAgICAgIHRlcm1jYXAgaXMgY29uZmlndXJlZC4KKworICAgICAgIDxTVFJPTkc+LS1oZWxwPC9TVFJPTkc+IHByaW50cyB0aGlzIG1lc3NhZ2UKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgorCisgICAgICAgVGhpcyBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNS45IChwYXRjaCAyMDE1MDUyMykuCisKKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlczUtY29uZmlnLjEuaHRtbCI+bmN1cnNlczUtY29uZmlnKDEpPC9BPjwvU1RST05HPgorPC9QUkU+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItT1BUSU9OUyI+T1BUSU9OUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KKzwvQk9EWT4KKzwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi9wYW5lbC4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL3BhbmVsLjN4Lmh0bWwKaW5kZXggYTViNWEwNi4uNTJlMWY2OCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL3BhbmVsLjN4Lmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL3BhbmVsLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMjAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMxICsyNiwzMiBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogcGFuZWwuM3gsdiAxLjE0IDIwMDcvMDUvMTIgMjA6NDU6MjAgdG9tIEV4cCBACisgICogQElkOiBwYW5lbC4zeCx2IDEuMTggMjAxNS8wNC8xMSAxMDoyMzo0OSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT5wYW5lbCAzeDwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPnBhbmVsIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5wYW5lbCAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0icGFuZWwuM3guaHRtbCI+cGFuZWwoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJwYW5lbC4zeC5odG1sIj5wYW5lbCgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgcGFuZWwgLSBwYW5lbCBzdGFjayBleHRlbnNpb24gZm9yIGN1cnNlcwogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDtwYW5lbC5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5jYzwvU1RST05HPiA8U1RST05HPltmbGFnc108L1NUUk9ORz4gPFNUUk9ORz5zb3VyY2VmaWxlczwvU1RST05HPiA8U1RST05HPi1scGFuZWw8L1NUUk9ORz4gPFNUUk9ORz4tbG5jdXJzZXM8L1NUUk9ORz4KQEAgLTc0LDcgKzc0LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFBhbmVscyAgYXJlICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4gIHdpbmRvd3Mgd2l0aCB0aGUgYWRkZWQgZmVhdHVyZSBvZgogICAgICAgIGRlcHRoLiAgUGFuZWwgZnVuY3Rpb25zIGFsbG93IHRoZSB1c2Ugb2YgIHN0YWNrZWQgIHdpbmRvd3MKICAgICAgICBhbmQgIGVuc3VyZSAgdGhlICBwcm9wZXIgIHBvcnRpb25zICBvZiBlYWNoIHdpbmRvdyBhbmQgdGhlCkBAIC05NSw3ICs5NSw3IEBACiAKIAogPC9QUkU+Ci08SDI+RlVOQ1RJT05TPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUZVTkNUSU9OUyI+RlVOQ1RJT05TPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPm5ld19wYW5lbCh3aW4pPC9TVFJPTkc+CiAgICAgICAgICAgICAgIGFsbG9jYXRlcyAgIGEgICA8U1RST05HPlBBTkVMPC9TVFJPTkc+IHN0cnVjdHVyZSwgYXNzb2NpYXRlcyBpdCB3aXRoCiAgICAgICAgICAgICAgIDxTVFJPTkc+d2luPC9TVFJPTkc+LCBwbGFjZXMgdGhlIHBhbmVsICBvbiAgdGhlICB0b3AgIG9mICB0aGUgIHN0YWNrCkBAIC0xMDYsMzMgKzEwNiwzMyBAQAogICAgICAgICAgICAgICByZWZyZXNoZXMgdGhlIHZpcnR1YWwgc2NyZWVuIHRvIHJlZmxlY3QgIHRoZSAgcmVsYS0KICAgICAgICAgICAgICAgdGlvbnMgYmV0d2VlbiB0aGUgcGFuZWxzIGluIHRoZSBzdGFjaywgYnV0IGRvZXMgbm90CiAgICAgICAgICAgICAgIGNhbGwgZG91cGRhdGUoKSB0byAgcmVmcmVzaCAgdGhlICBwaHlzaWNhbCAgc2NyZWVuLgotICAgICAgICAgICAgICBVc2UgdGhpcyBmdW5jdGlvbiBhbmQgbm90IHdyZWZyZXNoIG9yIHdub3V0cmVmcmVzaC4KLSAgICAgICAgICAgICAgdXBkYXRlX3BhbmVscygpIG1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgYmVmb3JlCi0gICAgICAgICAgICAgIGEgIGNhbGwgIHRvIGRvdXBkYXRlKCksIGJ1dCBkb3VwZGF0ZSgpIGlzIHRoZSBmdW5jLQotICAgICAgICAgICAgICB0aW9uIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgcGh5c2ljYWwgIHNjcmVlbi4KKyAgICAgICAgICAgICAgVXNlIHRoaXMgZnVuY3Rpb24gYW5kIG5vdCA8U1RST05HPndyZWZyZXNoPC9TVFJPTkc+IG9yIDxTVFJPTkc+d25vdXRyZWZyZXNoPC9TVFJPTkc+LgorICAgICAgICAgICAgICA8U1RST05HPnVwZGF0ZV9wYW5lbHM8L1NUUk9ORz4gbWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBiZWZvcmUgYQorICAgICAgICAgICAgICBjYWxsICB0byBkb3VwZGF0ZSgpLCBidXQgZG91cGRhdGUoKSBpcyB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBwaHlzaWNhbCBzY3JlZW4uCiAKICAgICAgICA8U1RST05HPmRlbF9wYW5lbChwYW4pPC9TVFJPTkc+CiAgICAgICAgICAgICAgIHJlbW92ZXMgdGhlIGdpdmVuIHBhbmVsIGZyb20gdGhlICBzdGFjayBhbmQgZGVhbGxvLQotICAgICAgICAgICAgICBjYXRlcyB0aGUgPFNUUk9ORz5QQU5FTDwvU1RST05HPiBzdHJ1Y3R1cmUgKGJ1dCBub3QgIGl0cyAgYXNzb2NpYXRlZAorICAgICAgICAgICAgICBjYXRlcyAgdGhlICA8U1RST05HPlBBTkVMPC9TVFJPTkc+IHN0cnVjdHVyZSAoYnV0IG5vdCBpdHMgYXNzb2NpYXRlZAogICAgICAgICAgICAgICB3aW5kb3cpLgogCiAgICAgICAgPFNUUk9ORz5oaWRlX3BhbmVsKHBhbik8L1NUUk9ORz4KLSAgICAgICAgICAgICAgcmVtb3ZlcyAgdGhlICBnaXZlbiAgcGFuZWwgZnJvbSB0aGUgcGFuZWwgc3RhY2sgYW5kCisgICAgICAgICAgICAgIHJlbW92ZXMgdGhlIGdpdmVuIHBhbmVsIGZyb20gdGhlICBwYW5lbCAgc3RhY2sgIGFuZAogICAgICAgICAgICAgICB0aHVzIGhpZGVzIGl0IGZyb20gdmlldy4gVGhlIDxTVFJPTkc+UEFORUw8L1NUUk9ORz4gc3RydWN0dXJlIGlzIG5vdAogICAgICAgICAgICAgICBsb3N0LCBtZXJlbHkgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay4KIAogICAgICAgIDxTVFJPTkc+cGFuZWxfaGlkZGVuKHBhbik8L1NUUk9ORz4KLSAgICAgICAgICAgICAgcmV0dXJucyAgVFJVRSAgaWYgIHRoZSBwYW5lbCBpcyBpbiB0aGUgcGFuZWwgc3RhY2ssCi0gICAgICAgICAgICAgIEZBTFNFIGlmIGl0ICBpcyAgbm90LiAgIElmICB0aGUgIHBhbmVsICBpcyAgYSAgbnVsbAorICAgICAgICAgICAgICByZXR1cm5zIDxTVFJPTkc+VFJVRTwvU1RST05HPiBpZiB0aGUgcGFuZWwgaXMgaW4gIHRoZSAgcGFuZWwgIHN0YWNrLAorICAgICAgICAgICAgICA8U1RST05HPkZBTFNFPC9TVFJPTkc+ICBpZiAgaXQgIGlzICBub3QuICAgSWYgIHRoZSAgcGFuZWwgIGlzIGEgbnVsbAogICAgICAgICAgICAgICBwb2ludGVyLCByZXR1cm4gRVJSLgogCiAgICAgICAgPFNUUk9ORz5zaG93X3BhbmVsKHBhbik8L1NUUk9ORz4KLSAgICAgICAgICAgICAgbWFrZXMgIGEgIGhpZGRlbiBwYW5lbCB2aXNpYmxlIGJ5IHBsYWNpbmcgaXQgb24gdG9wCisgICAgICAgICAgICAgIG1ha2VzIGEgaGlkZGVuIHBhbmVsIHZpc2libGUgYnkgcGxhY2luZyBpdCAgb24gIHRvcAogICAgICAgICAgICAgICBvZiB0aGUgcGFuZWxzIGluIHRoZSBwYW5lbCBzdGFjay4gU2VlIENPTVBBVElCSUxJVFkKICAgICAgICAgICAgICAgYmVsb3cuCiAKICAgICAgICA8U1RST05HPnRvcF9wYW5lbChwYW4pPC9TVFJPTkc+Ci0gICAgICAgICAgICAgIHB1dHMgIHRoZSAgZ2l2ZW4gdmlzaWJsZSBwYW5lbCBvbiB0b3Agb2YgYWxsIHBhbmVscworICAgICAgICAgICAgICBwdXRzIHRoZSBnaXZlbiB2aXNpYmxlIHBhbmVsIG9uIHRvcCBvZiAgYWxsICBwYW5lbHMKICAgICAgICAgICAgICAgaW4gdGhlIHN0YWNrLiAgU2VlIENPTVBBVElCSUxJVFkgYmVsb3cuCiAKICAgICAgICA8U1RST05HPmJvdHRvbV9wYW5lbChwYW4pPC9TVFJPTkc+CkBAIC0xNDAsMjYgKzE0MCwyNiBAQAogCiAgICAgICAgPFNUUk9ORz5tb3ZlX3BhbmVsKHBhbixzdGFydHksc3RhcnR4KTwvU1RST05HPgogICAgICAgICAgICAgICBtb3ZlcyB0aGUgZ2l2ZW4gcGFuZWwgd2luZG93IHNvIHRoYXQgaXRzIHVwcGVyLWxlZnQKLSAgICAgICAgICAgICAgY29ybmVyICBpcyAgYXQgIDxTVFJPTkc+c3RhcnR5PC9TVFJPTkc+LCA8U1RST05HPnN0YXJ0eDwvU1RST05HPi4gIEl0IGRvZXMgbm90IGNoYW5nZQorICAgICAgICAgICAgICBjb3JuZXIgaXMgYXQgPFNUUk9ORz5zdGFydHk8L1NUUk9ORz4sIDxTVFJPTkc+c3RhcnR4PC9TVFJPTkc+LiAgSXQgIGRvZXMgIG5vdCAgY2hhbmdlCiAgICAgICAgICAgICAgIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFuZWwgaW4gdGhlIHN0YWNrLiAgQmUgc3VyZSB0bwotICAgICAgICAgICAgICB1c2UgIHRoaXMgIGZ1bmN0aW9uLCAgbm90ICA8U1RST05HPm12d2luKCk8L1NUUk9ORz4sIHRvIG1vdmUgYSBwYW5lbAorICAgICAgICAgICAgICB1c2UgdGhpcyBmdW5jdGlvbiwgbm90IDxTVFJPTkc+bXZ3aW4oKTwvU1RST05HPiwgIHRvICBtb3ZlICBhICBwYW5lbAogICAgICAgICAgICAgICB3aW5kb3cuCiAKICAgICAgICA8U1RST05HPnJlcGxhY2VfcGFuZWwocGFuLHdpbmRvdyk8L1NUUk9ORz4KLSAgICAgICAgICAgICAgcmVwbGFjZXMgdGhlIGN1cnJlbnQgd2luZG93IG9mICBwYW5lbCAgd2l0aCAgPFNUUk9ORz53aW5kb3c8L1NUUk9ORz4KKyAgICAgICAgICAgICAgcmVwbGFjZXMgIHRoZSAgY3VycmVudCAgd2luZG93IG9mIHBhbmVsIHdpdGggPFNUUk9ORz53aW5kb3c8L1NUUk9ORz4KICAgICAgICAgICAgICAgKHVzZWZ1bCwgZm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgdG8gcmVzaXplIGEgcGFuZWw7CiAgICAgICAgICAgICAgIGlmIHlvdSdyZSB1c2luZyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4sIHlvdSBjYW4gY2FsbCA8U1RST05HPnJlcGxhY2VfcGFuZWw8L1NUUk9ORz4KLSAgICAgICAgICAgICAgb24gIHRoZSBvdXRwdXQgb2YgPFNUUk9ORz48QSBIUkVGPSJ3cmVzaXplLjN4Lmh0bWwiPndyZXNpemUoM3gpPC9BPjwvU1RST05HPikuICBJdCBkb2VzIG5vdCBjaGFuZ2UKKyAgICAgICAgICAgICAgb24gdGhlIG91dHB1dCBvZiA8U1RST05HPjxBIEhSRUY9IndyZXNpemUuM3guaHRtbCI+d3Jlc2l6ZSgzeCk8L0E+PC9TVFJPTkc+KS4gIEl0IGRvZXMgbm90ICBjaGFuZ2UKICAgICAgICAgICAgICAgdGhlIHBvc2l0aW9uIG9mIHRoZSBwYW5lbCBpbiB0aGUgc3RhY2suCiAKICAgICAgICA8U1RST05HPnBhbmVsX2Fib3ZlKHBhbik8L1NUUk9ORz4KLSAgICAgICAgICAgICAgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHBhbmVsIGFib3ZlIHBhbi4gICBJZiAgdGhlCi0gICAgICAgICAgICAgIHBhbmVsICBhcmd1bWVudCBpcyA8U1RST05HPihQQU5FTDwvU1RST05HPiA8U1RST05HPiopMDwvU1RST05HPiwgaXQgcmV0dXJucyBhIHBvaW50ZXIKKyAgICAgICAgICAgICAgcmV0dXJucyAgYSAgcG9pbnRlciB0byB0aGUgcGFuZWwgYWJvdmUgcGFuLiAgSWYgdGhlCisgICAgICAgICAgICAgIHBhbmVsIGFyZ3VtZW50IGlzIDxTVFJPTkc+KFBBTkVMPC9TVFJPTkc+IDxTVFJPTkc+KikwPC9TVFJPTkc+LCBpdCByZXR1cm5zIGEgIHBvaW50ZXIKICAgICAgICAgICAgICAgdG8gdGhlIGJvdHRvbSBwYW5lbCBpbiB0aGUgc3RhY2suCiAKICAgICAgICA8U1RST05HPnBhbmVsX2JlbG93KHBhbik8L1NUUk9ORz4KLSAgICAgICAgICAgICAgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHBhbmVsIGp1c3QgYmVsb3cgcGFuLiAgIElmCi0gICAgICAgICAgICAgIHRoZSAgcGFuZWwgIGFyZ3VtZW50ICBpcyAgPFNUUk9ORz4oUEFORUw8L1NUUk9ORz4gIDxTVFJPTkc+KikwPC9TVFJPTkc+LCBpdCByZXR1cm5zIGEKKyAgICAgICAgICAgICAgcmV0dXJucyAgYSBwb2ludGVyIHRvIHRoZSBwYW5lbCBqdXN0IGJlbG93IHBhbi4gIElmCisgICAgICAgICAgICAgIHRoZSBwYW5lbCBhcmd1bWVudCBpcyAgPFNUUk9ORz4oUEFORUw8L1NUUk9ORz4gIDxTVFJPTkc+KikwPC9TVFJPTkc+LCAgaXQgIHJldHVybnMgIGEKICAgICAgICAgICAgICAgcG9pbnRlciB0byB0aGUgdG9wIHBhbmVsIGluIHRoZSBzdGFjay4KIAogICAgICAgIDxTVFJPTkc+c2V0X3BhbmVsX3VzZXJwdHIocGFuLHB0cik8L1NUUk9ORz4KQEAgLTE3MywyMCArMTczLDIwIEBACiAKIAogPC9QUkU+Ci08SDI+RElBR05PU1RJQ1M8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRElBR05PU1RJQ1MiPkRJQUdOT1NUSUNTPC9hPjwvSDI+PFBSRT4KICAgICAgICBFYWNoICByb3V0aW5lICB0aGF0ICByZXR1cm5zICBhIHBvaW50ZXIgcmV0dXJucyA8U1RST05HPk5VTEw8L1NUUk9ORz4gaWYgYW4KICAgICAgICBlcnJvciBvY2N1cnMuIEVhY2ggIHJvdXRpbmUgIHRoYXQgIHJldHVybnMgIGFuICBpbnQgIHZhbHVlCiAgICAgICAgcmV0dXJucyA8U1RST05HPk9LPC9TVFJPTkc+IGlmIGl0IGV4ZWN1dGVzIHN1Y2Nlc3NmdWxseSBhbmQgPFNUUk9ORz5FUlI8L1NUUk9ORz4gaWYgbm90LgogCiAKIDwvUFJFPgotPEgyPkNPTVBBVElCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQ09NUEFUSUJJTElUWSI+Q09NUEFUSUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgUmVhc29uYWJsZSAgY2FyZSAgaGFzIGJlZW4gdGFrZW4gdG8gIGVuc3VyZSAgY29tcGF0aWJpbGl0eQogICAgICAgIHdpdGggIHRoZSAgbmF0aXZlICBwYW5lbCAgZmFjaWxpdHkgIGludHJvZHVjZWQgIGluICBTVnIzLjIKLSAgICAgICAoaW5zcGVjdGlvbiAgIG9mICAgdGhlICBTVnI0ICBtYW51YWwgIHBhZ2VzICBzdWdnZXN0cyAgdGhlCi0gICAgICAgcHJvZ3JhbW1pbmcgIGludGVyZmFjZSAgaXMgIHVuY2hhbmdlZCkuICAgVGhlICA8U1RST05HPlBBTkVMPC9TVFJPTkc+ICBkYXRhCi0gICAgICAgc3RydWN0dXJlcyAgYXJlICBtZXJlbHkgICBzaW1pbGFyLiBUaGUgIHByb2dyYW1tZXIgaXMgY2F1LQotICAgICAgIHRpb25lZCBub3QgdG8gZGlyZWN0bHkgdXNlIDxTVFJPTkc+UEFORUw8L1NUUk9ORz4gZmllbGRzLgorICAgICAgIChpbnNwZWN0aW9uIG9mIHRoZSBTVnI0IG1hbnVhbCBwYWdlcyBzdWdnZXN0cyB0aGUgcHJvZ3JhbS0KKyAgICAgICBtaW5nIGludGVyZmFjZSBpcyB1bmNoYW5nZWQpLiAgVGhlIDxTVFJPTkc+UEFORUw8L1NUUk9ORz4gIGRhdGEgIHN0cnVjdHVyZXMKKyAgICAgICBhcmUgIG1lcmVseSAgIHNpbWlsYXIuIFRoZSAgcHJvZ3JhbW1lciBpcyBjYXV0aW9uZWQgbm90IHRvCisgICAgICAgZGlyZWN0bHkgdXNlIDxTVFJPTkc+UEFORUw8L1NUUk9ORz4gZmllbGRzLgogCiAgICAgICAgVGhlIGZ1bmN0aW9ucyA8U1RST05HPnNob3dfcGFuZWwoKTwvU1RST05HPiBhbmQgPFNUUk9ORz50b3BfcGFuZWwoKTwvU1RST05HPiAgYXJlICBpZGVudGljYWwKICAgICAgICBpbiAgdGhpcyAgaW1wbGVtZW50YXRpb24sICBhbmQgd29yayBlcXVhbGx5IHdlbGwgd2l0aCBkaXMtCkBAIC0yMDAsNyArMjAwLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5OT1RFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5PVEUiPk5PVEU8L2E+PC9IMj48UFJFPgogICAgICAgIEluIHlvdXIgbGlicmFyeSBsaXN0LCBsaWJwYW5lbC5hIHNob3VsZCAgYmUgIGJlZm9yZSAgbGlibi0KICAgICAgICBjdXJzZXMuYTsgIHRoYXQgIGlzLCAgeW91IHdhbnQgdG8gc2F5IGAtbHBhbmVsIC1sbmN1cnNlcycsCiAgICAgICAgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kICh3aGljaCB3b3VsZCB1c3VhbGx5IGdpdmUgYSBsaW5rLQpAQCAtMjA4LDIxICsyMDgsMjEgQEAKIAogCiA8L1BSRT4KLTxIMj5GSUxFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1GSUxFUyI+RklMRVM8L2E+PC9IMj48UFJFPgogICAgICAgIHBhbmVsLmggaW50ZXJmYWNlIGZvciB0aGUgcGFuZWxzIGxpYnJhcnkKIAogICAgICAgIGxpYnBhbmVsLmEgdGhlIHBhbmVscyBsaWJyYXJ5IGl0c2VsZgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5jdXJzZXMoM3gpPC9BPjwvU1RST05HPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4sCiAKLSAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA1LjYgKHBhdGNoIDIwMDgxMDExKS4KKyAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA2LjAgKHBhdGNoIDIwMTUwODA4KS4KIAogCiA8L1BSRT4KLTxIMj5BVVRIT1I8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9IMj48UFJFPgogICAgICAgIE9yaWdpbmFsbHkgICB3cml0dGVuICAgYnkgICBXYXJyZW4gIFR1Y2tlciAgJmx0O3dodEBuNGhnZi5tdC0KICAgICAgICBwYXJrLmdhLnVzJmd0OywgcHJpbWFyaWx5IHRvIGFzc2lzdCAgaW4gIHBvcnRpbmcgIHUzODZtb24gIHRvCiAgICAgICAgc3lzdGVtcyAgd2l0aG91dCAgYSBuYXRpdmUgcGFuZWxzIGxpYnJhcnkuICBSZXBhY2thZ2VkIGZvcgpAQCAtMjMyLDEwICsyMzIsMTkgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InBhbmVsLjN4Lmh0bWwiPnBhbmVsKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUZVTkNUSU9OUyI+RlVOQ1RJT05TPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURJQUdOT1NUSUNTIj5ESUFHTk9TVElDUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1DT01QQVRJQklMSVRZIj5DT01QQVRJQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEUiPk5PVEU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRklMRVMiPkZJTEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL3Jlc2l6ZXRlcm0uM3guaHRtbCBiL2RvYy9odG1sL21hbi9yZXNpemV0ZXJtLjN4Lmh0bWwKaW5kZXggMjNiMDg0NS4uMmFmZTEyNSAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL3Jlc2l6ZXRlcm0uM3guaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vcmVzaXpldGVybS4zeC5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMyArMjYsMzQgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni0yMDA1Ci0gICogQElkOiByZXNpemV0ZXJtLjN4LHYgMS4xMSAyMDA1LzA2LzI1IDIyOjE5OjQyIHRvbSBFeHAgQAorICAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk2LW9uCisgICogQElkOiByZXNpemV0ZXJtLjN4LHYgMS4xOSAyMDE1LzA2LzA2IDIzOjM4OjE4IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPnJlc2l6ZXRlcm0gM3g8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT5yZXNpemV0ZXJtIDN4PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj5yZXNpemV0ZXJtIDN4PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJyZXNpemV0ZXJtLjN4Lmh0bWwiPnJlc2l6ZXRlcm0oM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InJlc2l6ZXRlcm0uM3guaHRtbCI+cmVzaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5pc190ZXJtX3Jlc2l6ZWQ8L1NUUk9ORz4sICA8U1RST05HPnJlc2l6ZV90ZXJtPC9TVFJPTkc+LCAgPFNUUk9ORz5yZXNpemV0ZXJtPC9TVFJPTkc+ICAtICBjaGFuZ2UgIHRoZQogICAgICAgIGN1cnNlcyB0ZXJtaW5hbCBzaXplCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPiNpbmNsdWRlPC9TVFJPTkc+IDxTVFJPTkc+Jmx0O2N1cnNlcy5oJmd0OzwvU1RST05HPgogCiAgICAgICAgPFNUUk9ORz5ib29sPC9TVFJPTkc+IDxTVFJPTkc+aXNfdGVybV9yZXNpemVkKGludDwvU1RST05HPiA8U1RST05HPmxpbmVzLDwvU1RST05HPiA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPmNvbHVtbnMpOzwvU1RST05HPgpAQCAtNjIsNDEgKzYyLDUzIEBACiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuICAgSXQgIHByb3ZpZGVzCiAgICAgICAgY2FsbGVycyAgd2l0aCAgYSBob29rIGludG8gdGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBkYXRhIHRvIHJlc2l6ZSB3aW4tCiAgICAgICAgZG93cywgcHJpbWFyaWx5IGZvciB1c2UgYnkgcHJvZ3JhbXMgcnVubmluZyBpbiBhbiBYIFdpbmRvdwotICAgICAgIHRlcm1pbmFsICAoZS5nLiwgIHh0ZXJtKS4gIFRoZSBmdW5jdGlvbiA8U1RST05HPnJlc2l6ZXRlcm08L1NUUk9ORz4gcmVzaXplcwotICAgICAgIHRoZSBzdGFuZGFyZCBhbmQgY3VycmVudCB3aW5kb3dzIHRvIHRoZSAgc3BlY2lmaWVkICBkaW1lbi0KLSAgICAgICBzaW9ucywgIGFuZCAgYWRqdXN0cyAgb3RoZXIgIGJvb2trZWVwaW5nICBkYXRhIHVzZWQgYnkgdGhlCi0gICAgICAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgdGhhdCByZWNvcmQgdGhlIHdpbmRvdyBkaW1lbnNpb25zLgorICAgICAgIHRlcm1pbmFsIChlLmcuLCB4dGVybSkuCiAKLSAgICAgICBNb3N0ICBvZiAgdGhlICB3b3JrICBpcyAgZG9uZSAgYnkgICB0aGUgICBpbm5lciAgIGZ1bmN0aW9uCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXJlc2l6ZXRlcm0iPnJlc2l6ZXRlcm08L2E+PC9IMz48UFJFPgorICAgICAgIFRoZSAgZnVuY3Rpb24gIDxTVFJPTkc+cmVzaXpldGVybTwvU1RST05HPiByZXNpemVzIHRoZSBzdGFuZGFyZCBhbmQgY3VycmVudAorICAgICAgIHdpbmRvd3MgdG8gdGhlIHNwZWNpZmllZCAgZGltZW5zaW9ucywgIGFuZCAgYWRqdXN0cyAgb3RoZXIKKyAgICAgICBib29ra2VlcGluZyAgZGF0YSAgdXNlZCBieSB0aGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgdGhhdCByZWNvcmQKKyAgICAgICB0aGUgd2luZG93IGRpbWVuc2lvbnMgc3VjaCBhcyB0aGUgIDxTVFJPTkc+TElORVM8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5DT0xTPC9TVFJPTkc+ICB2YXJpLQorICAgICAgIGFibGVzLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLXJlc2l6ZV90ZXJtIj5yZXNpemVfdGVybTwvYT48L0gzPjxQUkU+CisgICAgICAgTW9zdCAgIG9mICAgdGhlICAgd29yayAgaXMgIGRvbmUgIGJ5ICB0aGUgIGlubmVyICBmdW5jdGlvbgogICAgICAgIDxTVFJPTkc+cmVzaXplX3Rlcm08L1NUUk9ORz4uICBUaGUgb3V0ZXIgZnVuY3Rpb24gPFNUUk9ORz5yZXNpemV0ZXJtPC9TVFJPTkc+IGFkZHMgYm9va2tlZXAtCi0gICAgICAgaW5nIGZvciB0aGUgU0lHV0lOQ0ggaGFuZGxlci4gIFdoZW4gcmVzaXppbmcgdGhlICB3aW5kb3dzLAotICAgICAgIDxTVFJPTkc+cmVzaXplX3Rlcm08L1NUUk9ORz4gIGJsYW5rLWZpbGxzIHRoZSBhcmVhcyB0aGF0IGFyZSBleHRlbmRlZC4gIFRoZQorICAgICAgIGluZyAgZm9yIHRoZSBTSUdXSU5DSCBoYW5kbGVyLiAgV2hlbiByZXNpemluZyB0aGUgd2luZG93cywKKyAgICAgICA8U1RST05HPnJlc2l6ZV90ZXJtPC9TVFJPTkc+IGJsYW5rLWZpbGxzIHRoZSBhcmVhcyB0aGF0IGFyZSBleHRlbmRlZC4gICBUaGUKICAgICAgICBjYWxsaW5nIGFwcGxpY2F0aW9uIHNob3VsZCBmaWxsIGluIHRoZXNlIGFyZWFzIHdpdGggYXBwcm8tCi0gICAgICAgcHJpYXRlICBkYXRhLiAgVGhlIDxTVFJPTkc+cmVzaXplX3Rlcm08L1NUUk9ORz4gZnVuY3Rpb24gYXR0ZW1wdHMgdG8gcmVzaXplCi0gICAgICAgYWxsIHdpbmRvd3MuICBIb3dldmVyLCBkdWUgdG8gdGhlICBjYWxsaW5nICBjb252ZW50aW9uICBvZgotICAgICAgIHBhZHMsICBpdCAgaXMgIG5vdCAgcG9zc2libGUgdG8gcmVzaXplIHRoZXNlIHdpdGhvdXQgYWRkaS0KKyAgICAgICBwcmlhdGUgZGF0YS4gIFRoZSA8U1RST05HPnJlc2l6ZV90ZXJtPC9TVFJPTkc+IGZ1bmN0aW9uIGF0dGVtcHRzIHRvICByZXNpemUKKyAgICAgICBhbGwgIHdpbmRvd3MuICAgSG93ZXZlciwgIGR1ZSB0byB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mCisgICAgICAgcGFkcywgaXQgaXMgbm90IHBvc3NpYmxlIHRvICByZXNpemUgIHRoZXNlICB3aXRob3V0ICBhZGRpLQogICAgICAgIHRpb25hbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbi4KIAotICAgICAgIEEgc3VwcG9ydCBmdW5jdGlvbiA8U1RST05HPmlzX3Rlcm1fcmVzaXplZDwvU1RST05HPiAgaXMgIHByb3ZpZGVkICBzbyAgdGhhdAotICAgICAgIGFwcGxpY2F0aW9ucyAgY2FuICBjaGVjayBpZiB0aGUgPFNUUk9ORz5yZXNpemVfdGVybTwvU1RST05HPiBmdW5jdGlvbiB3b3VsZAotICAgICAgIG1vZGlmeSB0aGUgd2luZG93IHN0cnVjdHVyZXMuICBJdCByZXR1cm5zIFRSVUUgaWYgdGhlIHdpbi0KLSAgICAgICBkb3dzIHdvdWxkIGJlIG1vZGlmaWVkLCBhbmQgRkFMU0Ugb3RoZXJ3aXNlLgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1pc190ZXJtX3Jlc2l6ZWQiPmlzX3Rlcm1fcmVzaXplZDwvYT48L0gzPjxQUkU+CisgICAgICAgQSAgc3VwcG9ydCAgZnVuY3Rpb24gIDxTVFJPTkc+aXNfdGVybV9yZXNpemVkPC9TVFJPTkc+ICBpcyBwcm92aWRlZCBzbyB0aGF0CisgICAgICAgYXBwbGljYXRpb25zIGNhbiBjaGVjayBpZiB0aGUgPFNUUk9ORz5yZXNpemVfdGVybTwvU1RST05HPiAgZnVuY3Rpb24gIHdvdWxkCisgICAgICAgbW9kaWZ5IHRoZSB3aW5kb3cgc3RydWN0dXJlcy4gIEl0IHJldHVybnMgPFNUUk9ORz5UUlVFPC9TVFJPTkc+IGlmIHRoZSB3aW4tCisgICAgICAgZG93cyB3b3VsZCBiZSBtb2RpZmllZCwgYW5kIDxTVFJPTkc+RkFMU0U8L1NUUk9ORz4gb3RoZXJ3aXNlLgogCiAKIDwvUFJFPgotPEgyPlJFVFVSTiBWQUxVRTwvSDI+PFBSRT4KLSAgICAgICBFeGNlcHQgIGFzICBub3RlcywgIHRoZXNlICBmdW5jdGlvbiByZXR1cm4gdGhlIGludGVnZXIgPFNUUk9ORz5FUlI8L1NUUk9ORz4KLSAgICAgICB1cG9uIGZhaWx1cmUgYW5kIDxTVFJPTkc+T0s8L1NUUk9ORz4gb24gc3VjY2Vzcy4gIFRoZXkgd2lsbCBmYWlsIGlmICBlaXRoZXIKKzxIMj48YSBuYW1lPSJoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L0gyPjxQUkU+CisgICAgICAgRXhjZXB0IGFzIG5vdGVkLCB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuICB0aGUgIGludGVnZXIgIDxTVFJPTkc+RVJSPC9TVFJPTkc+CisgICAgICAgdXBvbiAgZmFpbHVyZSBhbmQgPFNUUk9ORz5PSzwvU1RST05HPiBvbiBzdWNjZXNzLiAgVGhleSB3aWxsIGZhaWwgaWYgZWl0aGVyCiAgICAgICAgb2YgdGhlIGRpbWVuc2lvbnMgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBvciBpZiBhbgotICAgICAgIGVycm9yIG9jY3VycyB3aGlsZSAocmUpYWxsb2NhdGluZyBtZW1vcnkgZm9yIHRoZSAgd2luZG93cy4KKyAgICAgICBlcnJvciBvY2N1cnMgd2hpbGUgKHJlKWFsbG9jYXRpbmcgbWVtb3J5IGZvciB0aGUgd2luZG93cy4KIAogCiA8L1BSRT4KLTxIMj5OT1RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OT1RFUyI+Tk9URVM8L2E+PC9IMj48UFJFPgogICAgICAgIFdoaWxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBzdXBwb3J0IGEKICAgICAgICBzaWduYWwgaGFuZGxlciAoaS5lLiwgZm9yIFNJR1dJTkNIKSwgY2FyZSBzaG91bGQgYmUgIHRha2VuCiAgICAgICAgdG8gIGF2b2lkIGludm9raW5nIHRoZW0gaW4gYSBjb250ZXh0IHdoZXJlIDxTVFJPTkc+bWFsbG9jPC9TVFJPTkc+IG9yIDxTVFJPTkc+cmVhbC08L1NUUk9ORz4KQEAgLTEwNCw3ICsxMTYsNyBAQAogICAgICAgIHRpb25zLgogCiAgICAgICAgSWYgIG5jdXJzZXMgIGlzIGNvbmZpZ3VyZWQgdG8gc3VwcGx5IGl0cyBvd24gU0lHV0lOQ0ggaGFuLQotICAgICAgIGRsZXIsIHRoZSA8U1RST05HPnJlc2l6ZXRlcm08L1NUUk9ORz4gZnVuY3Rpb24gdW5nZXRjaCdzIGEgPFNUUk9ORz5LRVlfUkVTSVpFPC9TVFJPTkc+IHdoaWNoCisgICAgICAgZGxlciwgdGhlIDxTVFJPTkc+cmVzaXpldGVybTwvU1RST05HPiBmdW5jdGlvbiA8U1RST05HPnVuZ2V0Y2g8L1NUUk9ORz4ncyBhIDxTVFJPTkc+S0VZX1JFU0laRTwvU1RST05HPiB3aGljaAogICAgICAgIHdpbGwgIGJlICByZWFkIG9uIHRoZSBuZXh0IGNhbGwgdG8gPFNUUk9ORz5nZXRjaDwvU1RST05HPi4gIFRoaXMgaXMgdXNlZCB0bwogICAgICAgIGFsZXJ0IGFuIGFwcGxpY2F0aW9uIHRoYXQgdGhlIHNjcmVlbiBzaXplIGhhcyBjaGFuZ2VkLCBhbmQKICAgICAgICB0aGF0ICBpdCBzaG91bGQgcmVwYWludCBzcGVjaWFsIGZlYXR1cmVzIHN1Y2ggYXMgcGFkcyB0aGF0CkBAIC0xMTMsMTggKzEyNSwxNiBAQAogICAgICAgIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgPFNUUk9ORz5MSU5FUzwvU1RST05HPiAgb3IgIDxTVFJPTkc+Q09MVU1OUzwvU1RST05HPiAgYXJlICBzZXQsCiAgICAgICAgdGhpcyAgb3ZlcnJpZGVzICB0aGUgIGxpYnJhcnkncyAgdXNlICBvZiAgdGhlICB3aW5kb3cgc2l6ZQogICAgICAgIG9idGFpbmVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaHVzLCBldmVuIGlmIGEgIFNJRy0KLSAgICAgICBXSU5DSCAgaXMgcmVjZWl2ZWQsIG5vIHNjcmVlbiBzaXplIGNoYW5nZSBtYXkgYmUgcmVjb3JkZWQuCi0gICAgICAgSW4gdGhhdCBjYXNlLCBubyA8U1RST05HPktFWV9SRVNJWkU8L1NUUk9ORz4gaXMgcXVldWVkIGZvciB0aGUgbmV4dCBjYWxsIHRvCi0gICAgICAgPFNUUk9ORz5nZXRjaDwvU1RST05HPjsgYW4gPFNUUk9ORz5FUlI8L1NUUk9ORz4gd2lsbCBiZSByZXR1cm5lZCBpbnN0ZWFkLgorICAgICAgIFdJTkNIIGlzIHJlY2VpdmVkLCBubyBzY3JlZW4gc2l6ZSBjaGFuZ2UgbWF5IGJlIHJlY29yZGVkLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImN1cnNfZ2V0Y2guM3guaHRtbCI+Y3Vyc19nZXRjaCgzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdmFyaWFibGVzLjN4Lmh0bWwiPmN1cnNfdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUiI+QVVUSE9SPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaG9tYXMgRGlja2V5IChmcm9tIGFuIGVxdWl2YWxlbnQgZnVuY3Rpb24gd3JpdHRlbiBpbiAxOTg4CiAgICAgICAgZm9yIEJTRCBjdXJzZXMpLgogCkBAIC0xMzIsMTAgKzE0MiwyMiBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InJlc2l6ZXRlcm0uM3guaHRtbCI+cmVzaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtcmVzaXpldGVybSI+cmVzaXpldGVybTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1yZXNpemVfdGVybSI+cmVzaXplX3Rlcm08L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtaXNfdGVybV9yZXNpemVkIj5pc190ZXJtX3Jlc2l6ZWQ8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1SRVRVUk4tVkFMVUUiPlJFVFVSTiBWQUxVRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUiI+QVVUSE9SPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vdGFicy4xLmh0bWwgYi9kb2MvaHRtbC9tYW4vdGFicy4xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjOGEyNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9odG1sL21hbi90YWJzLjEuaHRtbApAQCAtMCwwICsxLDE5NSBAQAorPCEtLSAKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIENvcHlyaWdodCAoYykgMjAwOC0yMDExLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBASWQ6IHRhYnMuMSx2IDEuMTEgMjAxMy8wNi8yMiAxODoxMTo1NyB0b20gRXhwIEAKKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KKzxUSVRMRT50YWJzIDE8L1RJVExFPgorPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8L0hFQUQ+Cis8Qk9EWT4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj50YWJzIDE8L0gxPgorPFBSRT4KKzxTVFJPTkc+PEEgSFJFRj0idGFicy4xLmh0bWwiPnRhYnMoMSk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0YWJzLjEuaHRtbCI+dGFicygxKTwvQT48L1NUUk9ORz4KKworCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz50YWJzPC9TVFJPTkc+IC0gc2V0IHRhYnMgb24gYSB0ZXJtaW5hbAorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz50YWJzPC9TVFJPTkc+IFs8RU0+b3B0aW9uczwvRU0+XV0gPEVNPlt0YWJzdG9wLWxpc3RdPC9FTT4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSAgPFNUUk9ORz50YWJzPC9TVFJPTkc+ICBwcm9ncmFtIGNsZWFycyBhbmQgc2V0cyB0YWItc3RvcHMgb24gdGhlIHRlcm1pLQorICAgICAgIG5hbC4gIFRoaXMgdXNlcyB0aGUgdGVybWluZm8gIDxFTT5jbGVhcjwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPmFsbDwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPnRhYnM8L0VNPiAgYW5kICA8RU0+c2V0PC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+dGFiPC9FTT4KKyAgICAgICBjYXBhYmlsaXRpZXMuICAgSWYgIGVpdGhlciAgaXMgIGFic2VudCwgIDxTVFJPTkc+dGFiczwvU1RST05HPiBpcyB1bmFibGUgdG8KKyAgICAgICBjbGVhci9zZXQgdGFiLXN0b3BzLiAgVGhlIHRlcm1pbmFsIHNob3VsZCBiZSBjb25maWd1cmVkIHRvCisgICAgICAgdXNlIGhhcmQgdGFicywgZS5nLiwKKworICAgICAgICAgICAgICBzdHR5IHRhYjAKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1PUFRJT05TIj5PUFRJT05TPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtR2VuZXJhbC1PcHRpb25zIj5HZW5lcmFsIE9wdGlvbnM8L2E+PC9IMz48UFJFPgorICAgICAgIDxTVFJPTkc+LVQ8L1NUUk9ORz48RU0+bmFtZTwvRU0+CisgICAgICAgICAgICBUZWxsIDxTVFJPTkc+dGFiczwvU1RST05HPiB3aGljaCB0ZXJtaW5hbCB0eXBlIHRvIHVzZS4gIElmIHRoaXMgb3B0aW9uCisgICAgICAgICAgICBpcyBub3QgZ2l2ZW4sIDxTVFJPTkc+dGFiczwvU1RST05HPiB3aWxsICB1c2UgIHRoZSAgPFNUUk9ORz4kVEVSTTwvU1RST05HPiAgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHZhcmlhYmxlLiAgIElmICB0aGF0ICBpcyAgbm90ICBzZXQsICBpdCAgd2lsbCB1c2UgdGhlCisgICAgICAgICAgICA8RU0+YW5zaSt0YWJzPC9FTT4gZW50cnkuCisKKyAgICAgICA8U1RST05HPi1kPC9TVFJPTkc+ICAgVGhlIGRlYnVnZ2luZyBvcHRpb24gc2hvd3MgYSBydWxlciBsaW5lLCBmb2xsb3dlZCAgYnkKKyAgICAgICAgICAgIHR3byAgZGF0YSAgbGluZXMuICAgVGhlICBmaXJzdCAgZGF0YSAgbGluZSAgc2hvd3MgdGhlCisgICAgICAgICAgICBleHBlY3RlZCB0YWItc3RvcHMgbWFya2VkIHdpdGggYXN0ZXJpc2tzLiAgVGhlIHNlY29uZAorICAgICAgICAgICAgZGF0YSAgbGluZSAgc2hvd3MgIHRoZSAgYWN0dWFsIHRhYi1zdG9wcywgbWFya2VkIHdpdGgKKyAgICAgICAgICAgIGFzdGVyaXNrcy4KKworICAgICAgIDxTVFJPTkc+LW48L1NUUk9ORz4gICBUaGlzIG9wdGlvbiB0ZWxscyA8U1RST05HPnRhYnM8L1NUUk9ORz4gdG8gY2hlY2sgdGhlIG9wdGlvbnMgIGFuZCAgcnVuCisgICAgICAgICAgICBhbnkgIGRlYnVnZ2luZyBvcHRpb24sIGJ1dCBub3QgdG8gbW9kaWZ5IHRoZSB0ZXJtaW5hbAorICAgICAgICAgICAgc2V0dGluZ3MuCisKKyAgICAgICA8U1RST05HPi1WPC9TVFJPTkc+ICAgcmVwb3J0cyB0aGUgdmVyc2lvbiBvZiBuY3Vyc2VzIHdoaWNoIHdhcyB1c2VkIGluIHRoaXMKKyAgICAgICAgICAgIHByb2dyYW0sIGFuZCBleGl0cy4KKworICAgICAgIFRoZSAgPFNUUk9ORz50YWJzPC9TVFJPTkc+ICBwcm9ncmFtICBwcm9jZXNzZXMgIGEgc2luZ2xlIGxpc3Qgb2YgdGFiIHN0b3BzLgorICAgICAgIFRoZSBsYXN0IG9wdGlvbiB0byBiZSBwcm9jZXNzZWQgd2hpY2ggZGVmaW5lcyAgYSAgbGlzdCAgaXMKKyAgICAgICB0aGUgb25lIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbGlzdCB0byBiZSBwcm9jZXNzZWQuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtSW1wbGljaXQtTGlzdHMiPkltcGxpY2l0IExpc3RzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBVc2UgIGEgIHNpbmdsZSBudW1iZXIgYXMgYW4gb3B0aW9uLCBlLmcuLCAiPFNUUk9ORz4tNTwvU1RST05HPiIgdG8gc2V0IHRhYnMKKyAgICAgICBhdCB0aGUgZ2l2ZW4gaW50ZXJ2YWwgKGluIHRoaXMgY2FzZSAgMSwgIDYsICAxMSwgIDE2LCAgMjEsCisgICAgICAgZXRjLikuICAgVGFicyAgYXJlICByZXBlYXRlZCB1cCB0byB0aGUgcmlnaHQgbWFyZ2luIG9mIHRoZQorICAgICAgIHNjcmVlbi4KKworICAgICAgIFVzZSAiPFNUUk9ORz4tMDwvU1RST05HPiIgdG8gY2xlYXIgYWxsIHRhYnMuCisKKyAgICAgICBVc2UgIjxTVFJPTkc+LTg8L1NUUk9ORz4iIHRvIHNldCB0YWJzIHRvIHRoZSBzdGFuZGFyZCBpbnRlcnZhbC4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1FeHBsaWNpdC1MaXN0cyI+RXhwbGljaXQgTGlzdHM8L2E+PC9IMz48UFJFPgorICAgICAgIEFuIGV4cGxpY2l0IGxpc3QgY2FuIGJlIGRlZmluZWQgYWZ0ZXIgIHRoZSAgb3B0aW9ucyAgKHRoaXMKKyAgICAgICBkb2VzICBub3QgIHVzZSAgYSAiLSIpLiAgVGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBtdXN0IGJlIGluCisgICAgICAgaW5jcmVhc2luZyBudW1lcmljIG9yZGVyLCBhbmQgZ3JlYXRlciB0aGFuIHplcm8uICBUaGV5IGFyZQorICAgICAgIHNlcGFyYXRlZCBieSBhIGNvbW1hIG9yIGEgYmxhbmssIGZvciBleGFtcGxlLAorCisgICAgICAgICAgICAgIHRhYnMgMSw2LDExLDE2LDIxCisgICAgICAgICAgICAgIHRhYnMgMSA2IDExIDE2IDIxCisgICAgICAgVXNlICBhICAnKycgIHRvIHRyZWF0IGEgbnVtYmVyIGFzIGFuIGluY3JlbWVudCByZWxhdGl2ZSB0bworICAgICAgIHRoZSBwcmV2aW91cyB2YWx1ZSwgZS5nLiwKKworICAgICAgICAgICAgICB0YWJzIDEsKzUsKzUsKzUsKzUKKworICAgICAgIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDEsNiwxMSwxNiwyMSBleGFtcGxlLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVByZWRlZmluZWQtVGFiLVN0b3BzIj5QcmVkZWZpbmVkIFRhYi1TdG9wczwvYT48L0gzPjxQUkU+CisgICAgICAgWC9PcGVuIGRlZmluZXMgc2V2ZXJhbCBwcmVkZWZpbmVkIGxpc3RzIG9mIHRhYiBzdG9wcy4KKworICAgICAgIDxTVFJPTkc+LWE8L1NUUk9ORz4gICBBc3NlbWJsZXIsIElCTSBTLzM3MCwgZmlyc3QgZm9ybWF0CisKKyAgICAgICA8U1RST05HPi1hMjwvU1RST05HPiAgQXNzZW1ibGVyLCBJQk0gUy8zNzAsIHNlY29uZCBmb3JtYXQKKworICAgICAgIDxTVFJPTkc+LWM8L1NUUk9ORz4gICBDT0JPTCwgbm9ybWFsIGZvcm1hdAorCisgICAgICAgPFNUUk9ORz4tYzI8L1NUUk9ORz4gIENPQk9MIGNvbXBhY3QgZm9ybWF0CisKKyAgICAgICA8U1RST05HPi1jMzwvU1RST05HPiAgQ09CT0wgY29tcGFjdCBmb3JtYXQgZXh0ZW5kZWQKKworICAgICAgIDxTVFJPTkc+LWY8L1NUUk9ORz4gICBGT1JUUkFOCisKKyAgICAgICA8U1RST05HPi1wPC9TVFJPTkc+ICAgUEwvSQorCisgICAgICAgPFNUUk9ORz4tczwvU1RST05HPiAgIFNOT0JPTAorCisgICAgICAgPFNUUk9ORz4tdTwvU1RST05HPiAgIFVOSVZBQyAxMTAwIEFzc2VtYmxlcgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L0gyPjxQUkU+CisgICAgICAgWC9PcGVuIGRlc2NyaWJlcyBhIDxTVFJPTkc+K208L1NUUk9ORz4gb3B0aW9uLCB0byBzZXQgIGEgIHRlcm1pbmFsJ3MgIGxlZnQtCisgICAgICAgbWFyZ2luLiAgIFZlcnkgZmV3IG9mIHRoZSBlbnRyaWVzIGluIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZQorICAgICAgIHByb3ZpZGUgdGhpcyBjYXBhYmlsaXR5LgorCisgICAgICAgVGhlIDxTVFJPTkc+LWQ8L1NUUk9ORz4gKGRlYnVnKSBhbmQgPFNUUk9ORz4tbjwvU1RST05HPiAobm8tb3ApIG9wdGlvbnMgYXJlICBleHRlbnNpb25zICBub3QKKyAgICAgICBwcm92aWRlZCBieSBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICBEb2N1bWVudGF0aW9uICBmb3Igb3RoZXIgaW1wbGVtZW50YXRpb25zIHN0YXRlcyB0aGF0IHRoZXJlCisgICAgICAgaXMgYSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHRhYiBzdG9wcy4gIFdoaWxlIHNvbWUgIHRlcm1pLQorICAgICAgIG5hbHMgbWF5IG5vdCBhY2NlcHQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0YWIgc3RvcHMsIHRoaXMKKyAgICAgICBpbXBsZW1lbnRhdGlvbiB3aWxsIGF0dGVtcHQgdG8gc2V0IHRhYiAgc3RvcHMgIHVwICB0byAgdGhlCisgICAgICAgcmlnaHQgIG1hcmdpbiAgb2YgdGhlIHNjcmVlbiwgaWYgdGhlIGdpdmVuIGxpc3QgaGFwcGVucyB0bworICAgICAgIGJlIHRoYXQgbG9uZy4KKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idHNldC4xLmh0bWwiPnRzZXQoMSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4uCisKKyAgICAgICBUaGlzIGRlc2NyaWJlcyA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiA2LjAgKHBhdGNoIDIwMTUwODA4KS4KKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRhYnMuMS5odG1sIj50YWJzKDEpPC9BPjwvU1RST05HPgorPC9QUkU+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItT1BUSU9OUyI+T1BUSU9OUzwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtR2VuZXJhbC1PcHRpb25zIj5HZW5lcmFsIE9wdGlvbnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtSW1wbGljaXQtTGlzdHMiPkltcGxpY2l0IExpc3RzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUV4cGxpY2l0LUxpc3RzIj5FeHBsaWNpdCBMaXN0czwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1QcmVkZWZpbmVkLVRhYi1TdG9wcyI+UHJlZGVmaW5lZCBUYWItU3RvcHM8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vdGVybS41Lmh0bWwgYi9kb2MvaHRtbC9tYW4vdGVybS41Lmh0bWwKaW5kZXggNTBmZGM1NS4uMjIxZGI0MCAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL3Rlcm0uNS5odG1sCisrKyBiL2RvYy9odG1sL21hbi90ZXJtLjUuaHRtbApAQCAtMSw3ICsxLDYgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwgMi4wLy9FTiI+CiA8IS0tIAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzcgKzI2LDQwIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiB0ZXJtLjUsdiAxLjE5IDIwMDYvMTIvMjQgMTg6MTI6MzggdG9tIEV4cCBACisgICogQElkOiB0ZXJtLjUsdiAxLjIyIDIwMTUvMDQvMjYgMTQ6NTA6MjMgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+dGVybSA1PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+dGVybSA1PC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj50ZXJtIDU8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9InRlcm0uNS5odG1sIj50ZXJtKDUpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idGVybS41Lmh0bWwiPnRlcm0oNSk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgdGVybSAtIGZvcm1hdCBvZiBjb21waWxlZCB0ZXJtIGZpbGUuCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPnRlcm08L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgIDxTVFJPTkc+U1RPUkFHRTwvU1RST05HPiA8U1RST05HPkxPQ0FUSU9OPC9TVFJPTkc+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtU1RPUkFHRS1MT0NBVElPTiI+U1RPUkFHRSBMT0NBVElPTjwvYT48L0gzPjxQUkU+CiAgICAgICAgQ29tcGlsZWQgdGVybWluZm8gZGVzY3JpcHRpb25zIGFyZSBwbGFjZWQgdW5kZXIgdGhlIGRpcmVjLQogICAgICAgIHRvcnkgPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+LiAgIFR3byAgY29uZmlndXJhdGlvbnMgIGFyZSAgc3VwLQogICAgICAgIHBvcnRlZCAod2hlbiBidWlsZGluZyB0aGUgbmN1cnNlcyBsaWJyYXJpZXMpOgpAQCAtODksNyArOTEsOSBAQAogICAgICAgICAgICAgZGlyZWN0b3J5ICB0cmVlICBmb3IgIGVudHJpZXMgIHRoYXQgIGNvcnJlc3BvbmQgdG8gYW4KICAgICAgICAgICAgIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kIGhhc2hlZCBkYXRhYmFzZSBvdGhlcndpc2UuCiAKLSAgIDxTVFJPTkc+U1RPUkFHRTwvU1RST05HPiA8U1RST05HPkZPUk1BVDwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1TVE9SQUdFLUZPUk1BVCI+U1RPUkFHRSBGT1JNQVQ8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZSBmb3JtYXQgaGFzIGJlZW4gY2hvc2VuIHNvIHRoYXQgaXQgd2lsbCBiZSB0aGUgc2FtZSAgb24KICAgICAgICBhbGwgIGhhcmR3YXJlLiAgIEFuICA4IG9yIG1vcmUgYml0IGJ5dGUgaXMgYXNzdW1lZCwgYnV0IG5vCiAgICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgYnl0ZSAgb3JkZXJpbmcgIG9yICBzaWduICBleHRlbnNpb24gIGFyZQpAQCAtMTEzLDcgKzExNyw3IEBACiAgICAgICAgICAgICAoNCkgdGhlIG51bWJlciBvZiBzaG9ydCBpbnRlZ2VycyBpbiB0aGUgbnVtYmVycyAgc2VjLQogICAgICAgICAgICAgdGlvbjsKIAotICAgICAgICAgICAgKDUpIHRoZSBudW1iZXIgb2Ygb2Zmc2V0cyAgKHNob3J0ICBpbnRlZ2VycykgIGluICB0aGUKKyAgICAgICAgICAgICg1KSAgdGhlICBudW1iZXIgIG9mICBvZmZzZXRzIChzaG9ydCBpbnRlZ2VycykgaW4gdGhlCiAgICAgICAgICAgICBzdHJpbmdzIHNlY3Rpb247CiAKICAgICAgICAgICAgICg2KSB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBzdHJpbmcgdGFibGUuCkBAIC0xNjcsNyArMTcxLDkgQEAKICAgICAgICB0aGUgdmFsdWVzIG9mIHN0cmluZyBjYXBhYmlsaXRpZXMgcmVmZXJlbmNlZCBpbiB0aGUgc3RyaW5nCiAgICAgICAgc2VjdGlvbi4gIEVhY2ggc3RyaW5nIGlzIG51bGwgdGVybWluYXRlZC4KIAotICAgPFNUUk9ORz5FWFRFTkRFRDwvU1RST05HPiA8U1RST05HPlNUT1JBR0U8L1NUUk9ORz4gPFNUUk9ORz5GT1JNQVQ8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRVhURU5ERUQtU1RPUkFHRS1GT1JNQVQiPkVYVEVOREVEIFNUT1JBR0UgRk9STUFUPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIHByZXZpb3VzICBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgY29udmVudGlvbmFsIHRlcm1pbmZvCiAgICAgICAgYmluYXJ5IGZvcm1hdC4gIFdpdGggc29tZSBtaW5vciB2YXJpYXRpb25zIG9mIHRoZSAgb2Zmc2V0cwogICAgICAgIChzZWUgIFBPUlRBQklMSVRZKSwgIHRoZSBzYW1lIGJpbmFyeSBmb3JtYXQgaXMgdXNlZCBpbiBhbGwKQEAgLTE5Nyw3ICsyMDMsNyBAQAogICAgICAgICAgICAgICAgICBieXRlcy4KIAogICAgICAgIFVzaW5nICB0aGUgIGNvdW50cyBhbmQgc2l6ZXMsIG5jdXJzZXMgYWxsb2NhdGVzIGFycmF5cyBhbmQKLSAgICAgICByZWFkcyBkYXRhIGZvciB0aGUgZXh0ZW5kZWQgY2FwYWJpbHRpZXMgaW4gdGhlIHNhbWUgIG9yZGVyCisgICAgICAgcmVhZHMgZGF0YSBmb3IgdGhlIGV4dGVuZGVkIGNhcGFiaWxpdGllcyBpbiB0aGUgc2FtZSBvcmRlcgogICAgICAgIGFzIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24uCiAKICAgICAgICBUaGUgZXh0ZW5kZWQgc3RyaW5nIHRhYmxlIGNvbnRhaW5zIHZhbHVlcyBmb3Igc3RyaW5nIGNhcGEtCkBAIC0yMDcsNyArMjEzLDcgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgPEVNPnNldHVwdGVybTwvRU0+IHRvIGV4cGVjdCBhIGRpZmZlci0KICAgICAgICBlbnQgIHNldCAgb2YgY2FwYWJpbGl0aWVzIHRoYW4gYXJlIGFjdHVhbGx5IHByZXNlbnQgaW4gdGhlCiAgICAgICAgZmlsZS4gIEVpdGhlciB0aGUgZGF0YWJhc2UgbWF5ICBoYXZlICBiZWVuICB1cGRhdGVkICBzaW5jZQpAQCAtMjMzLDcgKzIzOSw3IEBACiAKIAogPC9QUkU+Ci08SDI+RVhBTVBMRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1FWEFNUExFIj5FWEFNUExFPC9hPjwvSDI+PFBSRT4KICAgICAgICBBcyAgYW4gIGV4YW1wbGUsIGhlcmUgaXMgYSBoZXggZHVtcCBvZiB0aGUgZGVzY3JpcHRpb24gZm9yCiAgICAgICAgdGhlIExlYXItU2llZ2xlciBBRE0tMywgYSAgcG9wdWxhciAgdGhvdWdoICByYXRoZXIgIHN0dXBpZAogICAgICAgIGVhcmx5IHRlcm1pbmFsOgpAQCAtMjcxLDI0ICsyNzcsMjQgQEAKIAogCiA8L1BSRT4KLTxIMj5MSU1JVFM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTElNSVRTIj5MSU1JVFM8L2E+PC9IMj48UFJFPgogICAgICAgIFNvbWUgIGxpbWl0YXRpb25zOiAgdG90YWwgIGNvbXBpbGVkICBlbnRyaWVzIGNhbm5vdCBleGNlZWQKICAgICAgICA0MDk2IGJ5dGVzLiAgVGhlIG5hbWUgZmllbGQgY2Fubm90IGV4Y2VlZCAxMjggYnl0ZXMuCiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvLyovKiAgY29tcGlsZWQgdGVybWluYWwgY2FwYWJpbGl0eSBkYXRhCiAgICAgICAgYmFzZQogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUlM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhvbWFzIEUuIERpY2tleQogICAgICAgIGV4dGVuZGVkIHRlcm1pbmZvIGZvcm1hdCBmb3IgbmN1cnNlcyA1LjAKICAgICAgICBoYXNoZWQgZGF0YWJhc2Ugc3VwcG9ydCBmb3IgbmN1cnNlcyA1LjYKQEAgLTI5OSwxMCArMzA1LDI0IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRlcm0uNS5odG1sIj50ZXJtKDUpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLVNUT1JBR0UtTE9DQVRJT04iPlNUT1JBR0UgTE9DQVRJT048L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtU1RPUkFHRS1GT1JNQVQiPlNUT1JBR0UgRk9STUFUPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUVYVEVOREVELVNUT1JBR0UtRk9STUFUIj5FWFRFTkRFRCBTVE9SQUdFIEZPUk1BVDwvYT48L2xpPgorPC91bD4KKzwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FWEFNUExFIj5FWEFNUExFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUxJTUlUUyI+TElNSVRTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUZJTEVTIj5GSUxFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SUyI+QVVUSE9SUzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL3Rlcm0uNy5odG1sIGIvZG9jL2h0bWwvbWFuL3Rlcm0uNy5odG1sCmluZGV4IDUzZWE2MzMuLjc0OTEzOWUgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi90ZXJtLjcuaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vdGVybS43Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDMxICsyNiwzMiBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogdGVybS43LHYgMS4xOCAyMDA3LzA2LzAyIDIwOjQwOjA3IHRvbSBFeHAgQAorICAqIEBJZDogdGVybS43LHYgMS4yMyAyMDExLzEyLzE3IDIzOjMyOjE3IHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPnRlcm0gNzwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPnRlcm0gNzwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+dGVybSA3PC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJ0ZXJtLjcuaHRtbCI+dGVybSg3KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRlcm0uNy5odG1sIj50ZXJtKDcpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIHRlcm0gLSBjb252ZW50aW9ucyBmb3IgbmFtaW5nIHRlcm1pbmFsIHR5cGVzCiAKIAogPC9QUkU+Ci08SDI+REVTQ1JJUFRJT048L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgIGVudmlyb25tZW50IHZhcmlhYmxlIDxTVFJPTkc+VEVSTTwvU1RST05HPiBzaG91bGQgbm9ybWFsbHkgY29udGFpbiB0aGUKICAgICAgICB0eXBlIG5hbWUgb2YgdGhlIHRlcm1pbmFsLCBjb25zb2xlIG9yIGRpc3BsYXktZGV2aWNlICB0eXBlCiAgICAgICAgeW91ICBhcmUgIHVzaW5nLiAgIFRoaXMgIGluZm9ybWF0aW9uICBpcyAgY3JpdGljYWwgZm9yIGFsbApAQCAtNTksNyArNTksNyBAQAogICAgICAgIG1haWxlci4KIAogICAgICAgIEEgIGRlZmF1bHQgIDxTVFJPTkc+VEVSTTwvU1RST05HPiAgdmFsdWUgd2lsbCBiZSBzZXQgb24gYSBwZXItbGluZSBiYXNpcyBieQotICAgICAgIGVpdGhlciA8U1RST05HPi9ldGMvaW5pdHRhYjwvU1RST05HPiAoTGludXggYW5kICBTeXN0ZW0tVi1saWtlICBVTklYZXMpICBvcgorICAgICAgIGVpdGhlciAgPFNUUk9ORz4vZXRjL2luaXR0YWI8L1NUUk9ORz4gIChlLmcuLCAgU3lzdGVtLVYtbGlrZSAgIFVOSVhlcykgICBvcgogICAgICAgIDxTVFJPTkc+L2V0Yy90dHlzPC9TVFJPTkc+ICAoQlNEICBVTklYZXMpLiAgVGhpcyB3aWxsIG5lYXJseSBhbHdheXMgc3VmZmljZQogICAgICAgIGZvciB3b3Jrc3RhdGlvbiBhbmQgbWljcm9jb21wdXRlciBjb25zb2xlcy4KIApAQCAtODUsOSArODUsOSBAQAogICAgICAgIHRoZSB0dHkgZGV2aWNlIGFuZCBiYXVkIHJhdGUuCiAKICAgICAgICBTZXR0aW5nIHlvdXIgb3duIDxTVFJPTkc+VEVSTTwvU1RST05HPiB2YWx1ZSBtYXkgYWxzbyBiZSB1c2VmdWwgaWYgeW91IGhhdmUKLSAgICAgICBjcmVhdGVkIGEgY3VzdG9tICBlbnRyeSAgaW5jb3Jwb3JhdGluZyAgb3B0aW9ucyAgKHN1Y2ggIGFzCi0gICAgICAgdmlzdWFsICBiZWxsICBvciByZXZlcnNlLXZpZGVvKSB3aGljaCB5b3Ugd2lzaCB0byBvdmVycmlkZQotICAgICAgIHRoZSBzeXN0ZW0gZGVmYXVsdCB0eXBlIGZvciB5b3VyIGxpbmUuCisgICAgICAgY3JlYXRlZCBhIGN1c3RvbSBlbnRyeSBpbmNvcnBvcmF0aW5nIG9wdGlvbnMgKHN1Y2ggYXMgdmlzLQorICAgICAgIHVhbCAgYmVsbCBvciByZXZlcnNlLXZpZGVvKSB3aGljaCB5b3Ugd2lzaCB0byBvdmVycmlkZSB0aGUKKyAgICAgICBzeXN0ZW0gZGVmYXVsdCB0eXBlIGZvciB5b3VyIGxpbmUuCiAKICAgICAgICBUZXJtaW5hbCB0eXBlIGRlc2NyaXB0aW9ucyBhcmUgc3RvcmVkIGFzIGZpbGVzIG9mIGNhcGFiaWwtCiAgICAgICAgaXR5IGRhdGEgdW5kZXJuZWF0aCAvdXNyL3NoYXJlL3Rlcm1pbmZvLiAgVG8gYnJvd3NlIGEgbGlzdApAQCAtMTAxLDkgKzEwMSw5IEBACiAgICAgICAgeW91ICBtdXN0ICB1c2UgdGhlIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4gY29tbWFuZC4gIEludm9rZSBpdCBhcyBmb2wtCiAgICAgICAgbG93czoKIAotICAgICAgICAgICAgaW5mb2NtcCA8RU0+ZW50cnktbmFtZTwvRU0+CisgICAgICAgICAgICBpbmZvY21wIDxFTT5lbnRyeTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPm5hbWU8L0VNPgogCi0gICAgICAgd2hlcmUgPEVNPmVudHJ5LW5hbWU8L0VNPiBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSB5b3Ugd2lzaCB0byBleGFtLQorICAgICAgIHdoZXJlIDxFTT5lbnRyeTwvRU0+PFNUUk9ORz5fPC9TVFJPTkc+PEVNPm5hbWU8L0VNPiBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSB5b3Ugd2lzaCB0byBleGFtLQogICAgICAgIGluZSAgKGFuZCB0aGUgbmFtZSBvZiBpdHMgY2FwYWJpbGl0eSBmaWxlIHRoZSBzdWJkaXJlY3RvcnkKICAgICAgICBvZiAvdXNyL3NoYXJlL3Rlcm1pbmZvIG5hbWVkIGZvciBpdHMgZmlyc3QgbGV0dGVyKS4gICBUaGlzCiAgICAgICAgY29tbWFuZCAgZHVtcHMgIGEgIGNhcGFiaWxpdHkgIGZpbGUgIGluICB0aGUgIHRleHQgIGZvcm1hdApAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgICAgdGh1cyA8U1RST05HPnZ0MTAwPC9TVFJPTkc+LCA8U1RST05HPmhwMjYyMTwvU1RST05HPiwgPFNUUk9ORz53eTUwPC9TVFJPTkc+LgogCiAgICAgICAgVGhlIHJvb3QgbmFtZSBmb3IgYSBQQy1Vbml4IGNvbnNvbGUgdHlwZSBzaG91bGQgYmUgdGhlICBPUwotICAgICAgIG5hbWUsICBpLmUuICA8U1RST05HPmxpbnV4PC9TVFJPTkc+LCA8U1RST05HPmJzZG9zPC9TVFJPTkc+LCA8U1RST05HPmZyZWVic2Q8L1NUUk9ORz4sIDxTVFJPTkc+bmV0YnNkPC9TVFJPTkc+LiAgSXQgc2hvdWxkIDxFTT5ub3Q8L0VNPgorICAgICAgIG5hbWUsICBpLmUuLCA8U1RST05HPmxpbnV4PC9TVFJPTkc+LCA8U1RST05HPmJzZG9zPC9TVFJPTkc+LCA8U1RST05HPmZyZWVic2Q8L1NUUk9ORz4sIDxTVFJPTkc+bmV0YnNkPC9TVFJPTkc+LiAgSXQgc2hvdWxkIDxFTT5ub3Q8L0VNPgogICAgICAgIGJlIDxTVFJPTkc+Y29uc29sZTwvU1RST05HPiBvciBhbnkgb3RoZXIgZ2VuZXJpYyB0aGF0IG1pZ2h0IGNhdXNlIGNvbmZ1c2lvbgogICAgICAgIGluICBhICBtdWx0aS1wbGF0Zm9ybSBlbnZpcm9ubWVudCEgIElmIGEgbW9kZWwgbnVtYmVyIGZvbC0KICAgICAgICBsb3dzLCBpdCBzaG91bGQgaW5kaWNhdGUgZWl0aGVyIHRoZSBPUyAgcmVsZWFzZSAgbGV2ZWwgIG9yCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICBUaGUgIHJvb3QgIG5hbWUgIGZvciBhIHRlcm1pbmFsIGVtdWxhdG9yIChhc3N1bWluZyBpdCBkb2VzCiAgICAgICAgbm90IGZpdCBvbmUgb2YgdGhlIHN0YW5kYXJkIEFOU0kgb3IgdnQxMDAgdHlwZXMpIHNob3VsZCBiZQogICAgICAgIHRoZSBwcm9ncmFtIG5hbWUgb3IgYSByZWFkaWx5IHJlY29nbml6YWJsZSBhYmJyZXZpYXRpb24gb2YKLSAgICAgICBpdCAoaS5lLiA8U1RST05HPnZlcnNhdGVybTwvU1RST05HPiwgPFNUUk9ORz5jdHJtPC9TVFJPTkc+KS4KKyAgICAgICBpdCAoaS5lLiwgPFNUUk9ORz52ZXJzYXRlcm08L1NUUk9ORz4sIDxTVFJPTkc+Y3RybTwvU1RST05HPikuCiAKICAgICAgICBGb2xsb3dpbmcgdGhlIHJvb3QgbmFtZSwgeW91IG1heSBhZGQgYW55IHJlYXNvbmFibGUgbnVtYmVyCiAgICAgICAgb2YgaHlwaGVuLXNlcGFyYXRlZCBmZWF0dXJlIHN1ZmZpeGVzLgpAQCAtMjE2LDE0ICsyMTYsMTQgQEAKIAogCiA8L1BSRT4KLTxIMj5QT1JUQUJJTElUWTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIEZvciAgbWF4aW11bSAgY29tcGF0aWJpbGl0eSAgd2l0aCAgb2xkZXIgIFN5c3RlbSBWIFVOSVhlcywKICAgICAgICBuYW1lcyBhbmQgYWxpYXNlcyBzaG91bGQgYmUgdW5pcXVlICB3aXRoaW4gIHRoZSAgZmlyc3QgIDE0CiAgICAgICAgY2hhcmFjdGVycy4KIAogCiA8L1BSRT4KLTxIMj5GSUxFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1GSUxFUyI+RklMRVM8L2E+PC9IMj48UFJFPgogICAgICAgIC91c3Ivc2hhcmUvdGVybWluZm8vPy8qCiAgICAgICAgICAgICBjb21waWxlZCB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGEgYmFzZQogCkBAIC0yMzUsMTcgKzIzNSwyMSBAQAogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm0uNS5odG1sIj50ZXJtKDUpPC9BPjwvU1RST05HPi4KIAogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRlcm0uNy5odG1sIj50ZXJtKDcpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRklMRVMiPkZJTEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL3Rlcm1fdmFyaWFibGVzLjN4Lmh0bWwgYi9kb2MvaHRtbC9tYW4vdGVybV92YXJpYWJsZXMuM3guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2IxNmRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL2h0bWwvbWFuL3Rlcm1fdmFyaWFibGVzLjN4Lmh0bWwKQEAgLTAsMCArMSwyMDkgQEAKKzwhLS0gCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQElkOiB0ZXJtX3ZhcmlhYmxlcy4zeCx2IDEuNiAyMDE1LzA0LzIyIDAwOjM0OjQ5IHRvbSBFeHAgQAorLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgorPFRJVExFPnRlcm1fdmFyaWFibGVzIDN4PC9USVRMRT4KKzxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPC9IRUFEPgorPEJPRFk+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+dGVybV92YXJpYWJsZXMgM3g8L0gxPgorPFBSRT4KKzxTVFJPTkc+PEEgSFJFRj0idGVybV92YXJpYWJsZXMuM3guaHRtbCI+dGVybV92YXJpYWJsZXMoM3gpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtX3ZhcmlhYmxlcy4zeC5odG1sIj50ZXJtX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+CisKKworCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+U1A8L1NUUk9ORz4sIDxTVFJPTkc+YWNzX21hcDwvU1RST05HPiwgPFNUUk9ORz5ib29sY29kZXM8L1NUUk9ORz4sIDxTVFJPTkc+Ym9vbGZuYW1lczwvU1RST05HPiwgPFNUUk9ORz5ib29sbmFtZXM8L1NUUk9ORz4sIDxTVFJPTkc+Y3VyX3Rlcm08L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz5udW1jb2RlczwvU1RST05HPiwgPFNUUk9ORz5udW1mbmFtZXM8L1NUUk9ORz4sIDxTVFJPTkc+bnVtbmFtZXM8L1NUUk9ORz4sIDxTVFJPTkc+c3RyY29kZXM8L1NUUk9ORz4sIDxTVFJPTkc+c3RyZm5hbWVzPC9TVFJPTkc+LAorICAgICAgIDxTVFJPTkc+c3RybmFtZXM8L1NUUk9ORz4sIDxTVFJPTkc+dHR5dHlwZTwvU1RST05HPiAtIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+IHRlcm1pbmZvIGdsb2JhbCB2YXJpYWJsZXMKKworCis8L1BSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz4jaW5jbHVkZTwvU1RST05HPiA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPmNodHlwZTwvU1RST05HPiA8U1RST05HPmFjc19tYXBbXTs8L1NUUk9ORz4KKworICAgICAgIDxTVFJPTkc+VEVSTUlOQUw8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y3VyX3Rlcm07PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz50dHl0eXBlW107PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmJvb2xjb2Rlczs8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmJvb2xmbmFtZXM7PC9TVFJPTkc+CisgICAgICAgPFNUUk9ORz5OQ1VSU0VTX0NPTlNUPC9TVFJPTkc+IDxTVFJPTkc+Y2hhcjwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5jb25zdDwvU1RST05HPiA8U1RST05HPio8L1NUUk9ORz4gPFNUUk9ORz5ib29sbmFtZXM7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPm51bWNvZGVzOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+bnVtZm5hbWVzOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+bnVtbmFtZXM7PC9TVFJPTkc+CisKKyAgICAgICA8U1RST05HPk5DVVJTRVNfQ09OU1Q8L1NUUk9ORz4gPFNUUk9ORz5jaGFyPC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPmNvbnN0PC9TVFJPTkc+IDxTVFJPTkc+KjwvU1RST05HPiA8U1RST05HPnN0cmNvZGVzOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+c3RyZm5hbWVzOzwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TkNVUlNFU19DT05TVDwvU1RST05HPiA8U1RST05HPmNoYXI8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+Y29uc3Q8L1NUUk9ORz4gPFNUUk9ORz4qPC9TVFJPTkc+IDxTVFJPTkc+c3RybmFtZXM7PC9TVFJPTkc+CisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGlzICBwYWdlIHN1bW1hcml6ZXMgdmFyaWFibGVzIHByb3ZpZGVkIGJ5IHRoZSA8U1RST05HPmN1cnNlczwvU1RST05HPiBsaS0KKyAgICAgICBicmFyeSdzIGxvdy1sZXZlbCB0ZXJtaW5mbyBpbnRlcmZhY2UuICBBIG1vcmUgY29tcGxldGUgZGUtCisgICAgICAgc2NyaXB0aW9uIGlzIGdpdmVuIGluIHRoZSA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWluZm8uM3guaHRtbCI+Y3Vyc190ZXJtaW5mbygzeCk8L0E+PC9TVFJPTkc+IG1hbnVhbCBwYWdlLgorCisgICAgICAgRGVwZW5kaW5nICBvbiB0aGUgY29uZmlndXJhdGlvbiwgdGhlc2UgbWF5IGJlIGFjdHVhbCB2YXJpLQorICAgICAgIGFibGVzLCBvciAgbWFjcm9zICAoc2VlICA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGhyZWFkcy4zeC5odG1sIj5jdXJzX3RocmVhZHMoM3gpPC9BPjwvU1RST05HPikgIHdoaWNoICBwcm92aWRlCisgICAgICAgcmVhZC1vbmx5ICBhY2Nlc3MgIHRvIDxFTT5jdXJzZXM8L0VNPidzIHN0YXRlLiAgSW4gZWl0aGVyIGNhc2UsIGFwLQorICAgICAgIHBsaWNhdGlvbnMgc2hvdWxkIHRyZWF0IHRoZW0gYXMgcmVhZC1vbmx5IHRvIGF2b2lkIGNvbmZ1cy0KKyAgICAgICBpbmcgdGhlIGxpYnJhcnkuCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQWx0ZXJuYXRlLUNoYXJhY3Rlci1TZXQtTWFwcGluZyI+QWx0ZXJuYXRlIENoYXJhY3RlciBTZXQgTWFwcGluZzwvYT48L0gzPjxQUkU+CisgICAgICAgQWZ0ZXIgIGluaXRpYWxpemluZyB0aGUgY3Vyc2VzIG9yIHRlcm1pbmZvIGludGVyZmFjZXMsIHRoZQorICAgICAgIDxTVFJPTkc+YWNzX21hcDwvU1RST05HPiBhcnJheSBob2xkcyBpbmZvcm1hdGlvbiB1c2VkICB0byAgdHJhbnNsYXRlICBjZWxscworICAgICAgIHdpdGggIHRoZSAgPFNUUk9ORz5BX0FMVENIQVJTRVQ8L1NUUk9ORz4gIHZpZGVvIGF0dHJpYnV0ZSBpbnRvIGxpbmUtZHJhd2luZworICAgICAgIGNoYXJhY3RlcnMuCisKKyAgICAgICBUaGUgZW5jb2Rpbmcgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgYXJyYXkgaGFzICBjaGFuZ2VkCisgICAgICAgcGVyaW9kaWNhbGx5LiAgIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgbmVlZCBvbmx5IGtub3cgdGhhdAorICAgICAgIGl0IGlzIHVzZWQgZm9yIHRoZSAiQUNTXyIgY29uc3RhbnRzIGluICZsdDtjdXJzZXMuaCZndDsuCisKKyAgICAgICBUaGUgY29tcGFyYWJsZSBkYXRhIGZvciB0aGUgd2lkZS1jaGFyYWN0ZXIgIGxpYnJhcnkgIGlzICBhCisgICAgICAgcHJpdmF0ZSB2YXJpYWJsZS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1DdXJyZW50LVRlcm1pbmFsLURhdGEiPkN1cnJlbnQgVGVybWluYWwgRGF0YTwvYT48L0gzPjxQUkU+CisgICAgICAgQWZ0ZXIgIGluaXRpYWxpemluZyB0aGUgY3Vyc2VzIG9yIHRlcm1pbmZvIGludGVyZmFjZXMsIHRoZQorICAgICAgIDxTVFJPTkc+Y3VyX3Rlcm08L1NUUk9ORz4gY29udGFpbnMgZGF0YSBkZXNjcmliaW5nICB0aGUgIGN1cnJlbnQgIHRlcm1pbmFsLgorICAgICAgIFRoaXMgdmFyaWFibGUgaXMgYWxzbyBzZXQgYXMgYSBzaWRlLWVmZmVjdCBvZiA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPgorICAgICAgIGFuZCA8U1RST05HPjxBIEhSRUY9ImN1cnNfaW5pdHNjci4zeC5odG1sIj5jdXJzX2luaXRzY3IoM3gpPC9BPjwvU1RST05HPi4KKworICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIHNhdmUgYSB2YWx1ZSBvZiA8U1RST05HPmN1cl90ZXJtPC9TVFJPTkc+IGZvciAgc3Vic2VxdWVudAorICAgICAgIHVzZSAgYXMgIGEgIHBhcmFtZXRlciAgdG8gIDxTVFJPTkc+c2V0X3Rlcm08L1NUUk9ORz4sIGZvciBzd2l0Y2hpbmcgYmV0d2VlbgorICAgICAgIHNjcmVlbnMuICBBbHRlcm5hdGl2ZWx5LCBvbmUgY2FuICBzYXZlICB0aGUgIHJldHVybiAgdmFsdWUKKyAgICAgICBmcm9tIDxTVFJPTkc+bmV3dGVybTwvU1RST05HPiBvciA8U1RST05HPnNldHVwdGVybTwvU1RST05HPiB0byByZXVzZSBpbiA8U1RST05HPnNldF90ZXJtPC9TVFJPTkc+LgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVRlcm1pbmZvLU5hbWVzIj5UZXJtaW5mbyBOYW1lczwvYT48L0gzPjxQUkU+CisgICAgICAgVGhlICA8U1RST05HPjxBIEhSRUY9InRpYy4xbS5odG1sIj50aWMoMW0pPC9BPjwvU1RST05HPiAgYW5kIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4gcHJvZ3JhbXMgdXNlIGxvb2t1cCB0YWJsZXMgZm9yCisgICAgICAgdGhlIGxvbmcgYW5kIHNob3J0IG5hbWVzIG9mIHRlcm1pbmZvIGNhcGFiaWxpdGllcywgYXMgd2VsbAorICAgICAgIGFzICB0aGUgIGNvcnJlc3BvbmRpbmcgIG5hbWVzICBmb3IgIHRlcm1jYXAgIGNhcGFiaWxpdGllcy4KKyAgICAgICBUaGVzZSBhcmUgYXZhaWxhYmxlIHRvIG90aGVyICBhcHBsaWNhdGlvbnMsICBhbHRob3VnaCAgdGhlCisgICAgICAgaGFzaC10YWJsZXMgdXNlZCBieSB0aGUgdGVybWluZm8gYW5kIHRlcm1jYXAgZnVuY3Rpb25zIGFyZQorICAgICAgIG5vdCBhdmFpbGFibGUuCisKKyAgICAgICBUaGUgbG9uZyB0ZXJtaW5mbyBjYXBhYmlsaXR5IG5hbWVzICB1c2UgIGEgICJsIiAgKGVsbCkgIGluCisgICAgICAgdGhlaXIgbmFtZXM6IDxTVFJPTkc+Ym9vbGZuYW1lczwvU1RST05HPiwgPFNUUk9ORz5udW1mbmFtZXM8L1NUUk9ORz4sIGFuZCA8U1RST05HPnN0cmZuYW1lczwvU1RST05HPi4KKworICAgICAgIFRoZXNlIGFyZSB0aGUgc2hvcnQgbmFtZXMgZm9yIHRlcm1pbmZvIGNhcGFiaWxpdGllczogPFNUUk9ORz5ib29sLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+bmFtZXM8L1NUUk9ORz4sIDxTVFJPTkc+bnVtbmFtZXM8L1NUUk9ORz4sIGFuZCA8U1RST05HPnN0cm5hbWVzPC9TVFJPTkc+LgorCisgICAgICAgVGhlc2UgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVzICB1c2VkICBmb3IgIHRlcm1jYXAgIGRlLQorICAgICAgIHNjcmlwdGlvbnM6IDxTVFJPTkc+Ym9vbGNvZGVzPC9TVFJPTkc+LCA8U1RST05HPm51bWNvZGVzPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5zdHJjb2RlczwvU1RST05HPi4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1UZXJtaW5hbC1UeXBlIj5UZXJtaW5hbCBUeXBlPC9hPjwvSDM+PFBSRT4KKyAgICAgICBPbiAgaW5pdGlhbGl6YXRpb24gIG9mICB0aGUgY3Vyc2VzIG9yIHRlcm1pbmZvIGludGVyZmFjZXMsCisgICAgICAgPFNUUk9ORz5zZXR1cHRlcm08L1NUUk9ORz4gY29waWVzIHRoZSB0ZXJtaW5hbCBuYW1lIHRvIHRoZSBhcnJheSA8U1RST05HPnR0eXR5cGU8L1NUUk9ORz4uCisKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVGVybWluZm8tTmFtZXMiPlRlcm1pbmZvIE5hbWVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgdmFyaWFibGVzLCA8U1RST05HPiZsdDt0ZXJtLmgmZ3Q7PC9TVFJPTkc+IGFsc28gZGVmaW5lcyBhIHN5bS0KKyAgICAgICBib2wgIGZvciBlYWNoIHRlcm1pbmZvIGNhcGFiaWxpdHkgPEVNPmxvbmc8L0VNPiA8RU0+bmFtZTwvRU0+LiAgVGhlc2UgYXJlIGluCisgICAgICAgdGVybXMgb2YgdGhlIHN5bWJvbCA8U1RST05HPkNVUjwvU1RST05HPiwgd2hpY2ggaXMgZGVmaW5lZAorCisgICAgICAgI2RlZmluZSBDVVIgY3VyX3Rlcm0tJmd0O3R5cGUuCisKKyAgICAgICBUaGVzZSBzeW1ib2xzIHByb3ZpZGUgYSBmYXN0ZXIgbWV0aG9kIG9mIGFjY2Vzc2luZyB0ZXJtaW4tCisgICAgICAgZm8gY2FwYWJpbGl0aWVzIHRoYW4gdXNpbmcgPFNUUk9ORz48QSBIUkVGPSJ0aWdldHN0ci4zeC5odG1sIj50aWdldHN0cigzeCk8L0E+PC9TVFJPTkc+LCBldGMuCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgIGxvdy1sZXZlbCAgdGVybWluZm8gIGludGVyZmFjZSAgaXMgIGluaXRpYWxpemVkIHVzaW5nCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPi4gIFRoZSB1cHBlci1sZXZlbCBjdXJzZXMgaW50ZXJmYWNlIHVzZXMgIHRoZQorICAgICAgIGxvdy1sZXZlbCB0ZXJtaW5mbyBpbnRlcmZhY2UsIGludGVybmFsbHkuCisKKworPC9QUkU+Cis8SDI+PGEgbmFtZT0iaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvSDI+PFBSRT4KKyAgICAgICBYL09wZW4gIEN1cnNlcyAgZG9lcyAgbm90IGRlc2NyaWJlIGFueSBvZiB0aGVzZSBleGNlcHQgZm9yCisgICAgICAgPFNUUk9ORz5jdXJfdGVybTwvU1RST05HPi4gIChUaGUgaW5jbHVzaW9uIG9mIDxTVFJPTkc+Y3VyX3Rlcm08L1NUUk9ORz4gIGFwcGVhcnMgIHRvICBiZSAgYW4KKyAgICAgICBvdmVyc2lnaHQsIHNpbmNlIG90aGVyIGNvbXBhcmFibGUgbG93LWxldmVsIGluZm9ybWF0aW9uIGlzCisgICAgICAgb21pdHRlZCBieSBYL09wZW4pLgorCisgICAgICAgT3RoZXIgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIGNvbXBhcmFibGUgdmFyaWFibGVzLiAgU29tZQorICAgICAgIGltcGxlbWVudGF0aW9ucyAgcHJvdmlkZSB0aGUgdmFyaWFibGVzIGluIHRoZWlyIGxpYnJhcmllcywKKyAgICAgICBidXQgb21pdCB0aGVtIGZyb20gdGhlIGhlYWRlciBmaWxlcy4KKworICAgICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggcHJvdmlkZSB0ZXJtaW5mbyBpbnRlcmZhY2VzICBhZGQKKyAgICAgICBkZWZpbml0aW9ucyAgYXMgIGRlc2NyaWJlZCAgaW4gdGhlIDxTVFJPTkc+VGVybWluZm88L1NUUk9ORz4gPFNUUk9ORz5OYW1lczwvU1RST05HPiBzZWN0aW9uLgorICAgICAgIE1vc3QsIGJ1dCBub3QgYWxsLCBiYXNlIHRoZSBkZWZpbml0aW9uIHVwb24gIHRoZSAgPFNUUk9ORz5jdXJfdGVybTwvU1RST05HPgorICAgICAgIHZhcmlhYmxlLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCAgICAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4sICAgICAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3RocmVhZHMuM3guaHRtbCI+Y3Vyc190aHJlYWRzKDN4KTwvQT48L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPi4KKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtX3ZhcmlhYmxlcy4zeC5odG1sIj50ZXJtX3ZhcmlhYmxlcygzeCk8L0E+PC9TVFJPTkc+Cis8L1BSRT4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtQWx0ZXJuYXRlLUNoYXJhY3Rlci1TZXQtTWFwcGluZyI+QWx0ZXJuYXRlIENoYXJhY3RlciBTZXQgTWFwcGluZzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1DdXJyZW50LVRlcm1pbmFsLURhdGEiPkN1cnJlbnQgVGVybWluYWwgRGF0YTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UZXJtaW5mby1OYW1lcyI+VGVybWluZm8gTmFtZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtVGVybWluYWwtVHlwZSI+VGVybWluYWwgVHlwZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UZXJtaW5mby1OYW1lcyI+VGVybWluZm8gTmFtZXM8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1OT1RFUyI+Tk9URVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItUE9SVEFCSUxJVFkiPlBPUlRBQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPC91bD4KKzwvZGl2PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL3Rlcm1pbmZvLjUuaHRtbCBiL2RvYy9odG1sL21hbi90ZXJtaW5mby41Lmh0bWwKaW5kZXggMTI4NGQwMi4uY2Y3MGY3ZiAxMDA2NDQKLS0tIGEvZG9jL2h0bWwvbWFuL3Rlcm1pbmZvLjUuaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vdGVybWluZm8uNS5odG1sCkBAIC0xLDQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqIERPIE5PVCBFRElUIFRISVMgRklMRSBCWSBIQU5EIQpAQCAtNiw3ICs1LDcgQEAKICAgKiBOb3RlOiB0aGlzIG11c3QgYmUgcnVuIHRocm91Z2ggdGJsIGJlZm9yZSBucm9mZi4KICAgKiBUaGUgbWFnaWMgY29va2llIG9uIHRoZSBmaXJzdCBsaW5lIHRyaWdnZXJzIHRoaXMgdW5kZXIgc29tZSBtYW4gcHJvZ3JhbXMuCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw5ICszMSw5IEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiB0ZXJtaW5mby5oZWFkLHYgMS4xNiAyMDA3LzAzLzA0IDAwOjA5OjQ2IHRvbSBFeHAgQAorICAqIEBJZDogdGVybWluZm8uaGVhZCx2IDEuMjEgMjAxMy8wMy8wOSAyMjoxMTozNiB0b20gRXhwIEAKICAgKiBIZWFkIG9mIHRlcm1pbmZvIG1hbiBwYWdlIGVuZHMgaGVyZQotICAqIEBJZDogdGVybWluZm8udGFpbCx2IDEuNDkgMjAwOC8wMi8xNiAyMDo1Nzo0MyB0b20gRXhwIEAKKyAgKiBASWQ6IHRlcm1pbmZvLnRhaWwsdiAxLjY5IDIwMTUvMDQvMjYgMTQ6NDc6MjMgdG9tIEV4cCBACiAgICogQmVnaW5uaW5nIG9mIHRlcm1pbmZvLnRhaWwgZmlsZQogICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIG5jdXJzZXMuCiAgICogU2VlICJ0ZXJtaW5mby5oZWFkIiBmb3IgY29weXJpZ2h0LgpAQCAtNDQsNDEgKzQzLDQyIEBACiAgICouaW4gKzIKICAgKi5USAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPnRlcm1pbmZvIDUgICBGaWxlIEZvcm1hdHM8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT50ZXJtaW5mbyA1ICAgRmlsZSBGb3JtYXRzPC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj50ZXJtaW5mbyA1ICAgRmlsZSBGb3JtYXRzPC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICBGaWxlIEZvcm1hdHMgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgdGVybWluZm8gLSB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGEgYmFzZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mby8qLyoKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIDxFTT5UZXJtaW5mbzwvRU0+ICBpcyAgYSAgZGF0YSAgYmFzZSAgZGVzY3JpYmluZyB0ZXJtaW5hbHMsIHVzZWQgYnkKLSAgICAgICBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbXMgIHN1Y2ggIGFzICA8U1RST05HPjxBIEhSRUY9Im52aS4xLmh0bWwiPm52aSgxKTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9InJvZ3VlLjEuaHRtbCI+cm9ndWUoMSk8L0E+PC9TVFJPTkc+ICBhbmQKKyAgICAgICBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbXMgIHN1Y2ggIGFzICA8U1RST05HPm52aSgxKTwvU1RST05HPiwgIDxTVFJPTkc+cm9ndWUoMSk8L1NUUk9ORz4gIGFuZAogICAgICAgIGxpYnJhcmllcyAgc3VjaCAgYXMgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LiAgPEVNPlRlcm1pbmZvPC9FTT4gZGVzY3JpYmVzIHRlcm1pLQogICAgICAgIG5hbHMgYnkgZ2l2aW5nIGEgc2V0IG9mIGNhcGFiaWxpdGllcyB3aGljaCB0aGV5ICBoYXZlLCAgYnkKICAgICAgICBzcGVjaWZ5aW5nIGhvdyB0byBwZXJmb3JtIHNjcmVlbiBvcGVyYXRpb25zLCBhbmQgYnkgc3BlY2ktCiAgICAgICAgZnlpbmcgcGFkZGluZyByZXF1aXJlbWVudHMgYW5kICBpbml0aWFsaXphdGlvbiAgc2VxdWVuY2VzLgotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgogCiAgICAgICAgRW50cmllcyBpbiA8RU0+dGVybWluZm88L0VNPiBjb25zaXN0IG9mIGEgc2VxdWVuY2Ugb2YgYCwnIHNlcGFyYXRlZAogICAgICAgIGZpZWxkcyAoZW1iZWRkZWQgY29tbWFzIG1heSBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2ggb3IKQEAgLTEwNiwxNCArMTA2LDEzIEBACiAgICAgICAgVGVybWluYWwgbmFtZXMgKGV4Y2VwdCBmb3IgdGhlIGxhc3QsIHZlcmJvc2UgZW50cnkpIHNob3VsZAogICAgICAgIGJlIGNob3NlbiB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zLiAgVGhlIHBhcnRpY3VsYXIKICAgICAgICBwaWVjZSBvZiBoYXJkd2FyZSBtYWtpbmcgdXAgdGhlICB0ZXJtaW5hbCAgc2hvdWxkICBoYXZlICBhCi0gICAgICAgcm9vdCAgbmFtZSwgdGh1cyBgYGhwMjYyMScnLiAgVGhpcyBuYW1lIHNob3VsZCBub3QgY29udGFpbgorICAgICAgIHJvb3QgIG5hbWUsICB0aHVzICAiaHAyNjIxIi4gIFRoaXMgbmFtZSBzaG91bGQgbm90IGNvbnRhaW4KICAgICAgICBoeXBoZW5zLiAgTW9kZXMgdGhhdCB0aGUgaGFyZHdhcmUgY2FuIGJlIGluLCBvciB1c2VyIHByZWYtCiAgICAgICAgZXJlbmNlcywgIHNob3VsZCAgYmUgaW5kaWNhdGVkIGJ5IGFwcGVuZGluZyBhIGh5cGhlbiBhbmQgYQogICAgICAgIG1vZGUgc3VmZml4LiAgVGh1cywgYSB2dDEwMCBpbiAxMzIgY29sdW1uICBtb2RlICB3b3VsZCAgYmUKICAgICAgICB2dDEwMC13LiAgVGhlIGZvbGxvd2luZyBzdWZmaXhlcyBzaG91bGQgYmUgdXNlZCB3aGVyZSBwb3MtCiAgICAgICAgc2libGU6CiAKLQogICAgICAgPFNUUk9ORz5TdWZmaXg8L1NUUk9ORz4gICAgICAgICAgICAgICAgICA8U1RST05HPk1lYW5pbmc8L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgPFNUUk9ORz5FeGFtcGxlPC9TVFJPTkc+CiAgICAgICAtPEVNPm5uPC9FTT4gICAgICBOdW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbiAgICAgICAgICAgIGFhYS02MAogICAgICAgLTxFTT5uPC9FTT5wICAgICAgTnVtYmVyIG9mIHBhZ2VzIG9mIG1lbW9yeSAgICAgICAgICAgICAgICBjMTAwLTRwCkBAIC0xMjYsMTQgKzEyNSwxNiBAQAogICAgICAgLW5zICAgICAgTm8gc3RhdHVzIGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICBocDI2MjYtbnMKICAgICAgIC1ydiAgICAgIFJldmVyc2UgdmlkZW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEwMC1ydgogICAgICAgLXMgICAgICAgRW5hYmxlIHN0YXR1cyBsaW5lICAgICAgICAgICAgICAgICAgICAgICB2dDEwMC1zCi0KICAgICAgIC12YiAgICAgIFVzZSB2aXNpYmxlIGJlbGwgaW5zdGVhZCBvZiBiZWVwICAgICAgICAgd3kzNzAtdmIKKwogICAgICAgLXcgICAgICAgV2lkZSBtb2RlICgmZ3Q7IDgwIGNvbHVtbnMsIHVzdWFsbHkgMTMyKSAgICB2dDEwMC13CiAKICAgICAgICBGb3IgbW9yZSBvbiB0ZXJtaW5hbCBuYW1pbmcgY29udmVudGlvbnMsIHNlZSAgdGhlICA8U1RST05HPnRlcm0oNyk8L1NUUk9ORz4KICAgICAgICBtYW51YWwgcGFnZS4KIAotICAgPFNUUk9ORz5DYXBhYmlsaXRpZXM8L1NUUk9ORz4KKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUHJlZGVmaW5lZC1DYXBhYmlsaXRpZXMiPlByZWRlZmluZWQgQ2FwYWJpbGl0aWVzPC9hPjwvSDM+PFBSRT4KICAgICAgICBUaGUgIGZvbGxvd2luZyAgaXMgIGEgIGNvbXBsZXRlICB0YWJsZSBvZiB0aGUgY2FwYWJpbGl0aWVzCiAgICAgICAgaW5jbHVkZWQgaW4gYSB0ZXJtaW5mbyBkZXNjcmlwdGlvbiBibG9jayBhbmQgYXZhaWxhYmxlICB0bwogICAgICAgIHRlcm1pbmZvLXVzaW5nIGNvZGUuICBJbiBlYWNoIGxpbmUgb2YgdGhlIHRhYmxlLApAQCAtMTc2LDEzMyArMTc3LDEzNCBAQAogICAgICAgIFRoZXNlIGFyZSB0aGUgYm9vbGVhbiBjYXBhYmlsaXRpZXM6CiAKIAotICAgICAgICAgICAgICAgPFNUUk9ORz5WYXJpYWJsZTwvU1RST05HPiAgICAgICAgICA8U1RST05HPkNhcC08L1NUUk9ORz4gIDxTVFJPTkc+VENhcDwvU1RST05HPiAgICAgIDxTVFJPTkc+RGVzY3JpcHRpb248L1NUUk9ORz4KLSAgICAgICAgICAgICAgIDxTVFJPTkc+Qm9vbGVhbnM8L1NUUk9ORz4gICAgICAgICAgPFNUUk9ORz5uYW1lPC9TVFJPTkc+ICA8U1RST05HPkNvZGU8L1NUUk9ORz4KLSAgICAgICBhdXRvX2xlZnRfbWFyZ2luICAgICAgICAgIGJ3ICAgIGJ3ICAgIGN1YjEgd3JhcHMgZnJvbSBjb2wtCisgICAgICAgICAgICAgICA8U1RST05HPlZhcmlhYmxlPC9TVFJPTkc+ICAgICAgICAgIDxTVFJPTkc+Q2FwLTwvU1RST05HPiAgIDxTVFJPTkc+VENhcDwvU1RST05HPiAgICAgPFNUUk9ORz5EZXNjcmlwdGlvbjwvU1RST05HPgorICAgICAgICAgICAgICAgPFNUUk9ORz5Cb29sZWFuczwvU1RST05HPiAgICAgICAgICA8U1RST05HPm5hbWU8L1NUUk9ORz4gICA8U1RST05HPkNvZGU8L1NUUk9ORz4KKyAgICAgICBhdXRvX2xlZnRfbWFyZ2luICAgICAgICAgIGJ3ICAgICBidyAgIGN1YjEgd3JhcHMgZnJvbSBjb2wtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bW4gMCB0byBsYXN0IGNvbHVtbgotICAgICAgIGF1dG9fcmlnaHRfbWFyZ2luICAgICAgICAgYW0gICAgYW0gICAgdGVybWluYWwgaGFzIGF1dG8tCisgICAgICAgYXV0b19yaWdodF9tYXJnaW4gICAgICAgICBhbSAgICAgYW0gICB0ZXJtaW5hbCBoYXMgYXV0by0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGljIG1hcmdpbnMKLSAgICAgICBiYWNrX2NvbG9yX2VyYXNlICAgICAgICAgIGJjZSAgIHV0ICAgIHNjcmVlbiBlcmFzZWQgd2l0aAorICAgICAgIGJhY2tfY29sb3JfZXJhc2UgICAgICAgICAgYmNlICAgIHV0ICAgc2NyZWVuIGVyYXNlZCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kIGNvbG9yCi0gICAgICAgY2FuX2NoYW5nZSAgICAgICAgICAgICAgICBjY2MgICBjYyAgICB0ZXJtaW5hbCBjYW4gcmUtCisgICAgICAgY2FuX2NoYW5nZSAgICAgICAgICAgICAgICBjY2MgICAgY2MgICB0ZXJtaW5hbCBjYW4gcmUtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgZXhpc3RpbmcgY29sLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JzCi0gICAgICAgY2VvbF9zdGFuZG91dF9nbGl0Y2ggICAgICB4aHAgICB4cyAgICBzdGFuZG91dCBub3QgZXJhc2VkCisgICAgICAgY2VvbF9zdGFuZG91dF9nbGl0Y2ggICAgICB4aHAgICAgeHMgICBzdGFuZG91dCBub3QgZXJhc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBvdmVyd3JpdGluZyAoaHApCi0gICAgICAgY29sX2FkZHJfZ2xpdGNoICAgICAgICAgICB4aHBhICBZQSAgICBvbmx5IHBvc2l0aXZlIG1vdGlvbgorICAgICAgIGNvbF9hZGRyX2dsaXRjaCAgICAgICAgICAgeGhwYSAgIFlBICAgb25seSBwb3NpdGl2ZSBtb3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBocGEvbWhwYSBjYXBzCiAKIAotICAgICAgIGNwaV9jaGFuZ2VzX3JlcyAgICAgICAgICAgY3BpeCAgWUYgICAgY2hhbmdpbmcgY2hhcmFjdGVyCisKKyAgICAgICBjcGlfY2hhbmdlc19yZXMgICAgICAgICAgIGNwaXggICBZRiAgIGNoYW5naW5nIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl0Y2ggY2hhbmdlcyByZXNvLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHV0aW9uCi0gICAgICAgY3JfY2FuY2Vsc19taWNyb19tb2RlICAgICBjcnhtICBZQiAgICB1c2luZyBjciB0dXJucyBvZmYKKyAgICAgICBjcl9jYW5jZWxzX21pY3JvX21vZGUgICAgIGNyeG0gICBZQiAgIHVzaW5nIGNyIHR1cm5zIG9mZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm8gbW9kZQotICAgICAgIGRlc3RfdGFic19tYWdpY19zbXNvICAgICAgeHQgICAgeHQgICAgdGFicyBkZXN0cnVjdGl2ZSwKKyAgICAgICBkZXN0X3RhYnNfbWFnaWNfc21zbyAgICAgIHh0ICAgICB4dCAgIHRhYnMgZGVzdHJ1Y3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyBzbyBjaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodDEwNjEpCi0gICAgICAgZWF0X25ld2xpbmVfZ2xpdGNoICAgICAgICB4ZW5sICB4biAgICBuZXdsaW5lIGlnbm9yZWQKKyAgICAgICBlYXRfbmV3bGluZV9nbGl0Y2ggICAgICAgIHhlbmwgICB4biAgIG5ld2xpbmUgaWdub3JlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgODAgY29scyAoY29uLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VwdCkKLSAgICAgICBlcmFzZV9vdmVyc3RyaWtlICAgICAgICAgIGVvICAgIGVvICAgIGNhbiBlcmFzZSBvdmVyLQorICAgICAgIGVyYXNlX292ZXJzdHJpa2UgICAgICAgICAgZW8gICAgIGVvICAgY2FuIGVyYXNlIG92ZXItCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpa2VzIHdpdGggYSBibGFuawotICAgICAgIGdlbmVyaWNfdHlwZSAgICAgICAgICAgICAgZ24gICAgZ24gICAgZ2VuZXJpYyBsaW5lIHR5cGUKLSAgICAgICBoYXJkX2NvcHkgICAgICAgICAgICAgICAgIGhjICAgIGhjICAgIGhhcmRjb3B5IHRlcm1pbmFsCi0gICAgICAgaGFyZF9jdXJzb3IgICAgICAgICAgICAgICBjaHRzICBIQyAgICBjdXJzb3IgaXMgaGFyZCB0bworICAgICAgIGdlbmVyaWNfdHlwZSAgICAgICAgICAgICAgZ24gICAgIGduICAgZ2VuZXJpYyBsaW5lIHR5cGUKKyAgICAgICBoYXJkX2NvcHkgICAgICAgICAgICAgICAgIGhjICAgICBoYyAgIGhhcmRjb3B5IHRlcm1pbmFsCisgICAgICAgaGFyZF9jdXJzb3IgICAgICAgICAgICAgICBjaHRzICAgSEMgICBjdXJzb3IgaXMgaGFyZCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlCi0gICAgICAgaGFzX21ldGFfa2V5ICAgICAgICAgICAgICBrbSAgICBrbSAgICBIYXMgYSBtZXRhIGtleQorICAgICAgIGhhc19tZXRhX2tleSAgICAgICAgICAgICAga20gICAgIGttICAgSGFzIGEgbWV0YSBrZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuLCBzZXRzIDh0aC1iaXQpCi0gICAgICAgaGFzX3ByaW50X3doZWVsICAgICAgICAgICBkYWlzeSBZQyAgICBwcmludGVyIG5lZWRzIG9wZXJhLQorICAgICAgIGhhc19wcmludF93aGVlbCAgICAgICAgICAgZGFpc3kgIFlDICAgcHJpbnRlciBuZWVkcyBvcGVyYS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvciB0byBjaGFuZ2UgY2hhci0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGVyIHNldAotICAgICAgIGhhc19zdGF0dXNfbGluZSAgICAgICAgICAgaHMgICAgaHMgICAgaGFzIGV4dHJhIHN0YXR1cworICAgICAgIGhhc19zdGF0dXNfbGluZSAgICAgICAgICAgaHMgICAgIGhzICAgaGFzIGV4dHJhIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZQotICAgICAgIGh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbiAgaGxzICAgaGwgICAgdGVybWluYWwgdXNlcyBvbmx5CisgICAgICAgaHVlX2xpZ2h0bmVzc19zYXR1cmF0aW9uICBobHMgICAgaGwgICB0ZXJtaW5hbCB1c2VzIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMUyBjb2xvciBub3RhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRla3Ryb25peCkKLSAgICAgICBpbnNlcnRfbnVsbF9nbGl0Y2ggICAgICAgIGluICAgIGluICAgIGluc2VydCBtb2RlIGRpc3Rpbi0KKyAgICAgICBpbnNlcnRfbnVsbF9nbGl0Y2ggICAgICAgIGluICAgICBpbiAgIGluc2VydCBtb2RlIGRpc3Rpbi0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aXNoZXMgbnVsbHMKLSAgICAgICBscGlfY2hhbmdlc19yZXMgICAgICAgICAgIGxwaXggIFlHICAgIGNoYW5naW5nIGxpbmUgcGl0Y2gKKyAgICAgICBscGlfY2hhbmdlc19yZXMgICAgICAgICAgIGxwaXggICBZRyAgIGNoYW5naW5nIGxpbmUgcGl0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgcmVzb2x1dGlvbgotICAgICAgIG1lbW9yeV9hYm92ZSAgICAgICAgICAgICAgZGEgICAgZGEgICAgZGlzcGxheSBtYXkgYmUKKyAgICAgICBtZW1vcnlfYWJvdmUgICAgICAgICAgICAgIGRhICAgICBkYSAgIGRpc3BsYXkgbWF5IGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBhYm92ZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbgotICAgICAgIG1lbW9yeV9iZWxvdyAgICAgICAgICAgICAgZGIgICAgZGIgICAgZGlzcGxheSBtYXkgYmUKKyAgICAgICBtZW1vcnlfYmVsb3cgICAgICAgICAgICAgIGRiICAgICBkYiAgIGRpc3BsYXkgbWF5IGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBiZWxvdyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbgotICAgICAgIG1vdmVfaW5zZXJ0X21vZGUgICAgICAgICAgbWlyICAgbWkgICAgc2FmZSB0byBtb3ZlIHdoaWxlCisgICAgICAgbW92ZV9pbnNlcnRfbW9kZSAgICAgICAgICBtaXIgICAgbWkgICBzYWZlIHRvIG1vdmUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGluc2VydCBtb2RlCi0gICAgICAgbW92ZV9zdGFuZG91dF9tb2RlICAgICAgICBtc2dyICBtcyAgICBzYWZlIHRvIG1vdmUgd2hpbGUKKyAgICAgICBtb3ZlX3N0YW5kb3V0X21vZGUgICAgICAgIG1zZ3IgICBtcyAgIHNhZmUgdG8gbW92ZSB3aGlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RhbmRvdXQgbW9kZQotICAgICAgIG5lZWRzX3hvbl94b2ZmICAgICAgICAgICAgbnhvbiAgbnggICAgcGFkZGluZyB3aWxsIG5vdAorICAgICAgIG5lZWRzX3hvbl94b2ZmICAgICAgICAgICAgbnhvbiAgIG54ICAgcGFkZGluZyB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yaywgeG9uL3hvZmYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkCi0gICAgICAgbm9fZXNjX2N0bGMgICAgICAgICAgICAgICB4c2IgICB4YiAgICBiZWVoaXZlIChmMT1lc2NhcGUsCisgICAgICAgbm9fZXNjX2N0bGMgICAgICAgICAgICAgICB4c2IgICAgeGIgICBiZWVoaXZlIChmMT1lc2NhcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMj1jdHJsIEMpCi0gICAgICAgbm9fcGFkX2NoYXIgICAgICAgICAgICAgICBucGMgICBOUCAgICBwYWQgY2hhcmFjdGVyIGRvZXMKKyAgICAgICBub19wYWRfY2hhciAgICAgICAgICAgICAgIG5wYyAgICBOUCAgIHBhZCBjaGFyYWN0ZXIgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGV4aXN0Ci0gICAgICAgbm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvbiAgICBuZHNjciBORCAgICBzY3JvbGxpbmcgcmVnaW9uIGlzCisgICAgICAgbm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvbiAgICBuZHNjciAgTkQgICBzY3JvbGxpbmcgcmVnaW9uIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tZGVzdHJ1Y3RpdmUKLSAgICAgICBub25fcmV2X3JtY3VwICAgICAgICAgICAgIG5ycm1jIE5SICAgIHNtY3VwIGRvZXMgbm90CisgICAgICAgbm9uX3Jldl9ybWN1cCAgICAgICAgICAgICBucnJtYyAgTlIgICBzbWN1cCBkb2VzIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSBybWN1cAotICAgICAgIG92ZXJfc3RyaWtlICAgICAgICAgICAgICAgb3MgICAgb3MgICAgdGVybWluYWwgY2FuIG92ZXItCisgICAgICAgb3Zlcl9zdHJpa2UgICAgICAgICAgICAgICBvcyAgICAgb3MgICB0ZXJtaW5hbCBjYW4gb3Zlci0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlrZQotICAgICAgIHBydHJfc2lsZW50ICAgICAgICAgICAgICAgbWM1aSAgNWkgICAgcHJpbnRlciB3aWxsIG5vdAorICAgICAgIHBydHJfc2lsZW50ICAgICAgICAgICAgICAgbWM1aSAgIDVpICAgcHJpbnRlciB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBvbiBzY3JlZW4KLSAgICAgICByb3dfYWRkcl9nbGl0Y2ggICAgICAgICAgIHh2cGEgIFlEICAgIG9ubHkgcG9zaXRpdmUgbW90aW9uCisgICAgICAgcm93X2FkZHJfZ2xpdGNoICAgICAgICAgICB4dnBhICAgWUQgICBvbmx5IHBvc2l0aXZlIG1vdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZwYS9tdnBhIGNhcHMKLSAgICAgICBzZW1pX2F1dG9fcmlnaHRfbWFyZ2luICAgIHNhbSAgIFlFICAgIHByaW50aW5nIGluIGxhc3QKKyAgICAgICBzZW1pX2F1dG9fcmlnaHRfbWFyZ2luICAgIHNhbSAgICBZRSAgIHByaW50aW5nIGluIGxhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiBjYXVzZXMgY3IKLSAgICAgICBzdGF0dXNfbGluZV9lc2Nfb2sgICAgICAgIGVzbG9rIGVzICAgIGVzY2FwZSBjYW4gYmUgdXNlZAorICAgICAgIHN0YXR1c19saW5lX2VzY19vayAgICAgICAgZXNsb2sgIGVzICAgZXNjYXBlIGNhbiBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgc3RhdHVzIGxpbmUKLSAgICAgICB0aWxkZV9nbGl0Y2ggICAgICAgICAgICAgIGh6ICAgIGh6ICAgIGNhbm5vdCBwcmludCB+J3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXplbHRpbmUpCisgICAgICAgdGlsZGVfZ2xpdGNoICAgICAgICAgICAgICBoeiAgICAgaHogICBjYW5ub3QgcHJpbnQgfidzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSGF6ZWx0aW5lKQogCiAKLSAgICAgICB0cmFuc3BhcmVudF91bmRlcmxpbmUgICAgIHVsICAgIHVsICAgIHVuZGVybGluZSBjaGFyYWN0ZXIKKyAgICAgICB0cmFuc3BhcmVudF91bmRlcmxpbmUgICAgIHVsICAgICB1bCAgIHVuZGVybGluZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJzdHJpa2VzCi0gICAgICAgeG9uX3hvZmYgICAgICAgICAgICAgICAgICB4b24gICB4byAgICB0ZXJtaW5hbCB1c2VzCisgICAgICAgeG9uX3hvZmYgICAgICAgICAgICAgICAgICB4b24gICAgeG8gICB0ZXJtaW5hbCB1c2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b24veG9mZiBoYW5kc2hha2luZwogCiAgICAgICAgVGhlc2UgYXJlIHRoZSBudW1lcmljIGNhcGFiaWxpdGllczoKIAogCi0gICAgICAgICAgICA8U1RST05HPlZhcmlhYmxlPC9TVFJPTkc+ICAgICAgICAgPFNUUk9ORz5DYXAtPC9TVFJPTkc+ICAgICA8U1RST05HPlRDYXA8L1NUUk9ORz4gICAgICAgPFNUUk9ORz5EZXNjcmlwdGlvbjwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+TnVtZXJpYzwvU1RST05HPiAgICAgICAgIDxTVFJPTkc+bmFtZTwvU1RST05HPiAgICAgPFNUUk9ORz5Db2RlPC9TVFJPTkc+Ci0gICAgICAgY29sdW1ucyAgICAgICAgICAgICAgIGNvbHMgICAgIGNvICAgICBudW1iZXIgb2YgY29sdW1ucyBpbgorICAgICAgICAgICAgICAgPFNUUk9ORz5WYXJpYWJsZTwvU1RST05HPiAgICAgICAgICA8U1RST05HPkNhcC08L1NUUk9ORz4gICA8U1RST05HPlRDYXA8L1NUUk9ORz4gICAgIDxTVFJPTkc+RGVzY3JpcHRpb248L1NUUk9ORz4KKyAgICAgICAgICAgICAgICA8U1RST05HPk51bWVyaWM8L1NUUk9ORz4gICAgICAgICAgPFNUUk9ORz5uYW1lPC9TVFJPTkc+ICAgPFNUUk9ORz5Db2RlPC9TVFJPTkc+CisgICAgICAgY29sdW1ucyAgICAgICAgICAgICAgICAgICBjb2xzICAgY28gICBudW1iZXIgb2YgY29sdW1ucyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBsaW5lCi0gICAgICAgaW5pdF90YWJzICAgICAgICAgICAgIGl0ICAgICAgIGl0ICAgICB0YWJzIGluaXRpYWxseSBldmVyeQorICAgICAgIGluaXRfdGFicyAgICAgICAgICAgICAgICAgaXQgICAgIGl0ICAgdGFicyBpbml0aWFsbHkgZXZlcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3BhY2VzCi0gICAgICAgbGFiZWxfaGVpZ2h0ICAgICAgICAgIGxoICAgICAgIGxoICAgICByb3dzIGluIGVhY2ggbGFiZWwKLSAgICAgICBsYWJlbF93aWR0aCAgICAgICAgICAgbHcgICAgICAgbHcgICAgIGNvbHVtbnMgaW4gZWFjaAorICAgICAgIGxhYmVsX2hlaWdodCAgICAgICAgICAgICAgbGggICAgIGxoICAgcm93cyBpbiBlYWNoIGxhYmVsCisgICAgICAgbGFiZWxfd2lkdGggICAgICAgICAgICAgICBsdyAgICAgbHcgICBjb2x1bW5zIGluIGVhY2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsCi0gICAgICAgbGluZXMgICAgICAgICAgICAgICAgIGxpbmVzICAgIGxpICAgICBudW1iZXIgb2YgbGluZXMgb24KKyAgICAgICBsaW5lcyAgICAgICAgICAgICAgICAgICAgIGxpbmVzICBsaSAgIG51bWJlciBvZiBsaW5lcyBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuIG9yIHBhZ2UKLSAgICAgICBsaW5lc19vZl9tZW1vcnkgICAgICAgbG0gICAgICAgbG0gICAgIGxpbmVzIG9mIG1lbW9yeSBpZiAmZ3Q7CisgICAgICAgbGluZXNfb2ZfbWVtb3J5ICAgICAgICAgICBsbSAgICAgbG0gICBsaW5lcyBvZiBtZW1vcnkgaWYgJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS4gMCBtZWFucyB2YXJpZXMKLSAgICAgICBtYWdpY19jb29raWVfZ2xpdGNoICAgeG1jICAgICAgc2cgICAgIG51bWJlciBvZiBibGFuaworICAgICAgIG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggICAgICAgeG1jICAgIHNnICAgbnVtYmVyIG9mIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGxlZnQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtc28gb3Igcm1zbwotICAgICAgIG1heF9hdHRyaWJ1dGVzICAgICAgICBtYSAgICAgICBtYSAgICAgbWF4aW11bSBjb21iaW5lZAorICAgICAgIG1heF9hdHRyaWJ1dGVzICAgICAgICAgICAgbWEgICAgIG1hICAgbWF4aW11bSBjb21iaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB0ZXJtaW5hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGhhbmRsZQotICAgICAgIG1heF9jb2xvcnMgICAgICAgICAgICBjb2xvcnMgICBDbyAgICAgbWF4aW11bSBudW1iZXIgb2YKKyAgICAgICBtYXhfY29sb3JzICAgICAgICAgICAgICAgIGNvbG9ycyBDbyAgIG1heGltdW0gbnVtYmVyIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMgb24gc2NyZWVuCi0gICAgICAgbWF4X3BhaXJzICAgICAgICAgICAgIHBhaXJzICAgIHBhICAgICBtYXhpbXVtIG51bWJlciBvZgorICAgICAgIG1heF9wYWlycyAgICAgICAgICAgICAgICAgcGFpcnMgIHBhICAgbWF4aW11bSBudW1iZXIgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLXBhaXJzIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuCi0gICAgICAgbWF4aW11bV93aW5kb3dzICAgICAgIHdudW0gICAgIE1XICAgICBtYXhpbXVtIG51bWJlciBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lYWJsZSB3aW5kb3dzCi0gICAgICAgbm9fY29sb3JfdmlkZW8gICAgICAgIG5jdiAgICAgIE5DICAgICB2aWRlbyBhdHRyaWJ1dGVzCisgICAgICAgbWF4aW11bV93aW5kb3dzICAgICAgICAgICB3bnVtICAgTVcgICBtYXhpbXVtIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5hYmxlIHdpbmRvd3MKKyAgICAgICBub19jb2xvcl92aWRlbyAgICAgICAgICAgIG5jdiAgICBOQyAgIHZpZGVvIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2Fubm90IGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggY29sb3JzCi0gICAgICAgbnVtX2xhYmVscyAgICAgICAgICAgIG5sYWIgICAgIE5sICAgICBudW1iZXIgb2YgbGFiZWxzIG9uCisgICAgICAgbnVtX2xhYmVscyAgICAgICAgICAgICAgICBubGFiICAgTmwgICBudW1iZXIgb2YgbGFiZWxzIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4KLSAgICAgICBwYWRkaW5nX2JhdWRfcmF0ZSAgICAgcGIgICAgICAgcGIgICAgIGxvd2VzdCBiYXVkIHJhdGUKKyAgICAgICBwYWRkaW5nX2JhdWRfcmF0ZSAgICAgICAgIHBiICAgICBwYiAgIGxvd2VzdCBiYXVkIHJhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHBhZGRpbmcgbmVlZGVkCi0gICAgICAgdmlydHVhbF90ZXJtaW5hbCAgICAgIHZ0ICAgICAgIHZ0ICAgICB2aXJ0dWFsIHRlcm1pbmFsCisgICAgICAgdmlydHVhbF90ZXJtaW5hbCAgICAgICAgICB2dCAgICAgdnQgICB2aXJ0dWFsIHRlcm1pbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgKENCL3VuaXgpCi0gICAgICAgd2lkdGhfc3RhdHVzX2xpbmUgICAgIHdzbCAgICAgIHdzICAgICBudW1iZXIgb2YgY29sdW1ucyBpbgorICAgICAgIHdpZHRoX3N0YXR1c19saW5lICAgICAgICAgd3NsICAgIHdzICAgbnVtYmVyIG9mIGNvbHVtbnMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBsaW5lCiAKICAgICAgICBUaGUgZm9sbG93aW5nIG51bWVyaWMgIGNhcGFiaWxpdGllcyAgYXJlICBwcmVzZW50ICBpbiAgdGhlCkBAIC0zMTAsNDcgKzMxMiw0NyBAQAogICAgICAgIG1hbiBwYWdlLiAgVGhleSBjYW1lIGluIHdpdGggU1ZyNCdzIHByaW50ZXIgc3VwcG9ydC4KIAogCi0gICAgICAgICAgICAgPFNUUk9ORz5WYXJpYWJsZTwvU1RST05HPiAgICAgICAgIDxTVFJPTkc+Q2FwLTwvU1RST05HPiAgICA8U1RST05HPlRDYXA8L1NUUk9ORz4gICAgICAgPFNUUk9ORz5EZXNjcmlwdGlvbjwvU1RST05HPgotICAgICAgICAgICAgIDxTVFJPTkc+TnVtZXJpYzwvU1RST05HPiAgICAgICAgICA8U1RST05HPm5hbWU8L1NUUk9ORz4gICAgPFNUUk9ORz5Db2RlPC9TVFJPTkc+Ci0gICAgICAgYml0X2ltYWdlX2VudHdpbmluZyAgICBiaXR3aW4gIFlvICAgICBudW1iZXIgb2YgcGFzc2VzIGZvcgorICAgICAgICAgICAgICAgPFNUUk9ORz5WYXJpYWJsZTwvU1RST05HPiAgICAgICAgICA8U1RST05HPkNhcC08L1NUUk9ORz4gICA8U1RST05HPlRDYXA8L1NUUk9ORz4gICAgIDxTVFJPTkc+RGVzY3JpcHRpb248L1NUUk9ORz4KKyAgICAgICAgICAgICAgICA8U1RST05HPk51bWVyaWM8L1NUUk9ORz4gICAgICAgICAgPFNUUk9ORz5uYW1lPC9TVFJPTkc+ICAgPFNUUk9ORz5Db2RlPC9TVFJPTkc+CisgICAgICAgYml0X2ltYWdlX2VudHdpbmluZyAgICAgICBiaXR3aW4gWW8gICBudW1iZXIgb2YgcGFzc2VzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBiaXQtaW1hZ2Ugcm93Ci0gICAgICAgYml0X2ltYWdlX3R5cGUgICAgICAgICBiaXR5cGUgIFlwICAgICB0eXBlIG9mIGJpdC1pbWFnZQorICAgICAgIGJpdF9pbWFnZV90eXBlICAgICAgICAgICAgYml0eXBlIFlwICAgdHlwZSBvZiBiaXQtaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZQotICAgICAgIGJ1ZmZlcl9jYXBhY2l0eSAgICAgICAgYnVmc3ogICBZYSAgICAgbnVtYmVycyBvZiBieXRlcworICAgICAgIGJ1ZmZlcl9jYXBhY2l0eSAgICAgICAgICAgYnVmc3ogIFlhICAgbnVtYmVycyBvZiBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGluZwotICAgICAgIGJ1dHRvbnMgICAgICAgICAgICAgICAgYnRucyAgICBCVCAgICAgbnVtYmVyIG9mIGJ1dHRvbnMgb24KKyAgICAgICBidXR0b25zICAgICAgICAgICAgICAgICAgIGJ0bnMgICBCVCAgIG51bWJlciBvZiBidXR0b25zIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZQotICAgICAgIGRvdF9ob3J6X3NwYWNpbmcgICAgICAgc3BpbmggICBZYyAgICAgc3BhY2luZyBvZiBkb3RzIGhvci0KKyAgICAgICBkb3RfaG9yel9zcGFjaW5nICAgICAgICAgIHNwaW5oICBZYyAgIHNwYWNpbmcgb2YgZG90cyBob3ItCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpem9udGFsbHkgaW4gZG90cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyIGluY2gKIAotICAgICAgIGRvdF92ZXJ0X3NwYWNpbmcgICAgICAgc3BpbnYgICBZYiAgICAgc3BhY2luZyBvZiBwaW5zIHZlci0KKyAgICAgICBkb3RfdmVydF9zcGFjaW5nICAgICAgICAgIHNwaW52ICBZYiAgIHNwYWNpbmcgb2YgcGlucyB2ZXItCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNhbGx5IGluIHBpbnMgcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNoCi0gICAgICAgbWF4X21pY3JvX2FkZHJlc3MgICAgICBtYWRkciAgIFlkICAgICBtYXhpbXVtIHZhbHVlIGluCisgICAgICAgbWF4X21pY3JvX2FkZHJlc3MgICAgICAgICBtYWRkciAgWWQgICBtYXhpbXVtIHZhbHVlIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb18uLi5fYWRkcmVzcwotICAgICAgIG1heF9taWNyb19qdW1wICAgICAgICAgbWp1bXAgICBZZSAgICAgbWF4aW11bSB2YWx1ZSBpbgorICAgICAgIG1heF9taWNyb19qdW1wICAgICAgICAgICAgbWp1bXAgIFllICAgbWF4aW11bSB2YWx1ZSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybV8uLi5fbWljcm8KLSAgICAgICBtaWNyb19jb2xfc2l6ZSAgICAgICAgIG1jcyAgICAgWWYgICAgIGNoYXJhY3RlciBzdGVwIHNpemUKKyAgICAgICBtaWNyb19jb2xfc2l6ZSAgICAgICAgICAgIG1jcyAgICBZZiAgIGNoYXJhY3RlciBzdGVwIHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gaW4gbWljcm8gbW9kZQotICAgICAgIG1pY3JvX2xpbmVfc2l6ZSAgICAgICAgbWxzICAgICBZZyAgICAgbGluZSBzdGVwIHNpemUgd2hlbgorICAgICAgIG1pY3JvX2xpbmVfc2l6ZSAgICAgICAgICAgbWxzICAgIFlnICAgbGluZSBzdGVwIHNpemUgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWljcm8gbW9kZQotICAgICAgIG51bWJlcl9vZl9waW5zICAgICAgICAgbnBpbnMgICBZaCAgICAgbnVtYmVycyBvZiBwaW5zIGluCisgICAgICAgbnVtYmVyX29mX3BpbnMgICAgICAgICAgICBucGlucyAgWWggICBudW1iZXJzIG9mIHBpbnMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50LWhlYWQKLSAgICAgICBvdXRwdXRfcmVzX2NoYXIgICAgICAgIG9yYyAgICAgWWkgICAgIGhvcml6b250YWwgcmVzb2x1LQorICAgICAgIG91dHB1dF9yZXNfY2hhciAgICAgICAgICAgb3JjICAgIFlpICAgaG9yaXpvbnRhbCByZXNvbHUtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW9uIGluIHVuaXRzIHBlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZQotICAgICAgIG91dHB1dF9yZXNfaG9yel9pbmNoICAgb3JoaSAgICBZayAgICAgaG9yaXpvbnRhbCByZXNvbHUtCisgICAgICAgb3V0cHV0X3Jlc19ob3J6X2luY2ggICAgICBvcmhpICAgWWsgICBob3Jpem9udGFsIHJlc29sdS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpb24gaW4gdW5pdHMgcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNoCi0gICAgICAgb3V0cHV0X3Jlc19saW5lICAgICAgICBvcmwgICAgIFlqICAgICB2ZXJ0aWNhbCByZXNvbHV0aW9uCisgICAgICAgb3V0cHV0X3Jlc19saW5lICAgICAgICAgICBvcmwgICAgWWogICB2ZXJ0aWNhbCByZXNvbHV0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bml0cyBwZXIgbGluZQotICAgICAgIG91dHB1dF9yZXNfdmVydF9pbmNoICAgb3J2aSAgICBZbCAgICAgdmVydGljYWwgcmVzb2x1dGlvbgorICAgICAgIG91dHB1dF9yZXNfdmVydF9pbmNoICAgICAgb3J2aSAgIFlsICAgdmVydGljYWwgcmVzb2x1dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5pdHMgcGVyIGluY2gKLSAgICAgICBwcmludF9yYXRlICAgICAgICAgICAgIGNwcyAgICAgWW0gICAgIHByaW50IHJhdGUgaW4gY2hhci0KKyAgICAgICBwcmludF9yYXRlICAgICAgICAgICAgICAgIGNwcyAgICBZbSAgIHByaW50IHJhdGUgaW4gY2hhci0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGVycyBwZXIgc2Vjb25kCi0gICAgICAgd2lkZV9jaGFyX3NpemUgICAgICAgICB3aWRjcyAgIFluICAgICBjaGFyYWN0ZXIgc3RlcCBzaXplCisgICAgICAgd2lkZV9jaGFyX3NpemUgICAgICAgICAgICB3aWRjcyAgWW4gICBjaGFyYWN0ZXIgc3RlcCBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGluIGRvdWJsZSB3aWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlCiAKQEAgLTQwMiw4ICs0MDQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlICE/CiAgICAgICAgY3JlYXRlX3dpbmRvdyAgICAgICAgICAgICBjd2luICAgQ1cgICBkZWZpbmUgYSB3aW5kb3cgIzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gIzIsIzMgdG8gIzQsIzUKLSAgICAgICBjdXJzb3JfYWRkcmVzcyAgICAgICAgICAgIGN1cCAgICBjbSAgIG1vdmUgdG8gcm93ICMxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zICMyCisgICAgICAgY3Vyc29yX2FkZHJlc3MgICAgICAgICAgICBjdXAgICAgY20gICBtb3ZlIHRvIHJvdyAjMSBjb2wtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bW5zICMyCiAgICAgICAgY3Vyc29yX2Rvd24gICAgICAgICAgICAgICBjdWQxICAgZG8gICBkb3duIG9uZSBsaW5lCiAgICAgICAgY3Vyc29yX2hvbWUgICAgICAgICAgICAgICBob21lICAgaG8gICBob21lIGN1cnNvciAoaWYgbm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cCkKQEAgLTkwNCw4ICs5MDYsOCBAQAogICAgICAgIHplcm9fbW90aW9uICAgICAgICAgICAgICAgemVyb20gIFp4ICAgTm8gbW90aW9uIGZvciBzdWJzZS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZW50IGNoYXJhY3RlcgogCi0gICAgICAgVGhlICBmb2xsb3dpbmcgIHN0cmluZyAgY2FwYWJpbGl0aWVzICBhcmUgIHByZXNlbnQgIGluIHRoZQotICAgICAgIFNWcjQuMCB0ZXJtIHN0cnVjdHVyZSwgYnV0IHdlcmUgb3JpZ2luYWxseSBub3QgIGRvY3VtZW50ZWQKKyAgICAgICBUaGUgZm9sbG93aW5nICBzdHJpbmcgIGNhcGFiaWxpdGllcyAgYXJlICBwcmVzZW50ICBpbiAgdGhlCisgICAgICAgU1ZyNC4wICB0ZXJtIHN0cnVjdHVyZSwgYnV0IHdlcmUgb3JpZ2luYWxseSBub3QgZG9jdW1lbnRlZAogICAgICAgIGluIHRoZSBtYW4gcGFnZS4KIAogCkBAIC05MjgsOSArOTMwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgY29kZXNldHMKICAgICAgICBjb2xvcl9uYW1lcyAgICAgICAgICAgICAgIGNvbG9ybm0gIFl3ICAgR2l2ZSBuYW1lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciAjMQotICAgICAgIGRlZmluZV9iaXRfaW1hZ2VfcmVnaW9uICAgZGVmYmkgICAgWXggICBEZWZpbmUgcmVjdGFuLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWFsYXIgYml0IGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbgorICAgICAgIGRlZmluZV9iaXRfaW1hZ2VfcmVnaW9uICAgZGVmYmkgICAgWXggICBEZWZpbmUgcmVjdGFuZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IGltYWdlIHJlZ2lvbgogICAgICAgIGRldmljZV90eXBlICAgICAgICAgICAgICAgZGV2dCAgICAgZHYgICBJbmRpY2F0ZSBsYW4tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1YWdlL2NvZGVzZXQgc3VwLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0CkBAIC05ODUsMTcgKzk4NiwxOSBAQAogICAgICAgIHNldF9wYWdlX2xlbmd0aCAgICAgICAgICAgc2xpbmVzICAgWVogICBTZXQgcGFnZSBsZW5ndGggdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzEgbGluZXMKIAorCiAgICAgICAgc2V0X3RiX21hcmdpbiAgICAgICAgICAgICBzbWd0YiAgICBNVCAgIFNldHMgYm90aCB0b3AgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSBtYXJnaW5zIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMxLCAjMgogCi0gICAgICAgIFRoZSBYU0kgQ3Vyc2VzICBzdGFuZGFyZCAgYWRkZWQgIHRoZXNlLiAgIFRoZXkgIGFyZSAgc29tZQotICAgICAgICBwb3N0LTQuMSAgdmVyc2lvbnMgIG9mIFN5c3RlbSBWIGN1cnNlcywgZS5nLiwgU29sYXJpcyAyLjUKLSAgICAgICAgYW5kIElSSVggNi54LiAgVGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB0ZXJtY2FwICBuYW1lcyAgZm9yICB0aGVtICBhcmUKLSAgICAgICAgaW52ZW50ZWQ7IGFjY29yZGluZyB0byB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwgdGhleSBoYXZlCi0gICAgICAgIG5vIHRlcm1jYXAgbmFtZXMuICBJZiB5b3VyIGNvbXBpbGVkIHRlcm1pbmZvIGVudHJpZXMgIHVzZQotICAgICAgICB0aGVzZSwgIHRoZXkgIG1heSAgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYKLSAgICAgICAgdGVybWluZm8gZW50cmllcyBhZnRlciBTVnI0LjE7IGJld2FyZSEKKyAgICAgICAgVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgIHRoZXNlICBoYXJkY29weSAgY2FwYWJpbGktCisgICAgICAgIHRpZXMuICBUaGV5IHdlcmUgdXNlZCBpbiBzb21lIHBvc3QtNC4xIHZlcnNpb25zIG9mIFN5c3RlbQorICAgICAgICBWIGN1cnNlcywgZS5nLiwgU29sYXJpcyAyLjUgYW5kIElSSVggNi54LiAgRXhjZXB0IGZvciA8U1RST05HPllJPC9TVFJPTkc+LAorICAgICAgICB0aGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkLiAgQWNjb3JkLQorICAgICAgICBpbmcgdG8gdGhlIFhTSSBDdXJzZXMgIHN0YW5kYXJkLCAgdGhleSAgaGF2ZSAgbm8gIHRlcm1jYXAKKyAgICAgICAgbmFtZXMuICBJZiB5b3VyIGNvbXBpbGVkIHRlcm1pbmZvIGVudHJpZXMgdXNlIHRoZXNlLCB0aGV5CisgICAgICAgIG1heSBub3QgIGJlICBiaW5hcnktY29tcGF0aWJsZSAgd2l0aCAgU3lzdGVtICBWICB0ZXJtaW5mbworICAgICAgICBlbnRyaWVzIGFmdGVyIFNWcjQuMTsgYmV3YXJlIQogCiAKICAgICAgICAgICAgICAgICA8U1RST05HPlZhcmlhYmxlPC9TVFJPTkc+ICAgICAgICAgPFNUUk9ORz5DYXAtPC9TVFJPTkc+ICAgPFNUUk9ORz5UQ2FwPC9TVFJPTkc+ICAgICA8U1RST05HPkRlc2NyaXB0aW9uPC9TVFJPTkc+CkBAIC0xMDE1LDkwICsxMDE4LDE3MyBAQAogICAgICAgICBzZXRfYV9hdHRyaWJ1dGVzICAgICAgICAgc2dyMSAgIHNBICAgRGVmaW5lIHNlY29uZCBzZXQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMxLSM2Ci0gICAgICAgIHNldF9wZ2xlbl9pbmNoICAgICAgICAgICBzbGVuZ3Roc0wgICBZSSBTZXQgcGFnZSBsZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvICMxIGh1bmRyZWR0aCBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5jaAorICAgICAgICBzZXRfcGdsZW5faW5jaCAgICAgICAgICAgc2xlbmd0aFlJICAgU2V0IHBhZ2UgbGVuZ3RoIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjMSBodW5kcmVkdGggb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2ggKHNvbWUgaW1wbGVtZW4tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXRpb25zIHVzZSBzTCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1jYXApLgogCi0gICA8U1RST05HPkE8L1NUUk9ORz4gPFNUUk9ORz5TYW1wbGU8L1NUUk9ORz4gPFNUUk9ORz5FbnRyeTwvU1RST05HPgorCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1Vc2VyLURlZmluZWQtQ2FwYWJpbGl0aWVzIj5Vc2VyLURlZmluZWQgQ2FwYWJpbGl0aWVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIHByZWNlZGluZyBzZWN0aW9uIGxpc3RlZCB0aGUgPEVNPnByZWRlZmluZWQ8L0VNPiBjYXBhYmlsaXRpZXMuCisgICAgICAgVGhleSBkZWFsIHdpdGggc29tZSAgc3BlY2lhbCAgZmVhdHVyZXMgIGZvciAgdGVybWluYWxzICBubworICAgICAgIGxvbmdlciAgKG9yICBwb3NzaWJseSBuZXZlcikgcHJvZHVjZWQuICBPY2Nhc2lvbmFsbHkgdGhlcmUKKyAgICAgICBhcmUgc3BlY2lhbCBmZWF0dXJlcyBvZiBuZXdlciB0ZXJtaW5hbHMgd2hpY2ggYXJlICBhd2t3YXJkCisgICAgICAgb3IgaW1wb3NzaWJsZSB0byByZXByZXNlbnQgYnkgcmV1c2luZyB0aGUgcHJlZGVmaW5lZCBjYXBhLQorICAgICAgIGJpbGl0aWVzLgorCisgICAgICAgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGFkZHJlc3NlcyB0aGlzIGxpbWl0YXRpb24gYnkgYWxsb3dpbmcgdXNlci1kZWZpbmVkCisgICAgICAgY2FwYWJpbGl0aWVzLiAgVGhlIDxTVFJPTkc+dGljPC9TVFJPTkc+IGFuZCA8U1RST05HPmluZm9jbXA8L1NUUk9ORz4gcHJvZ3JhbXMgcHJvdmlkZSB0aGUgPFNUUk9ORz4teDwvU1RST05HPgorICAgICAgIG9wdGlvbiBmb3IgdGhpcyBwdXJwb3NlLiAgIFdoZW4gIDxTVFJPTkc+LXg8L1NUUk9ORz4gIGlzICBzZXQsICA8U1RST05HPnRpYzwvU1RST05HPiAgdHJlYXRzCisgICAgICAgdW5rbm93biAgY2FwYWJpbGl0aWVzICBhcyAgdXNlci1kZWZpbmVkLiAgIFRoYXQgaXMsIGlmIDxTVFJPTkc+dGljPC9TVFJPTkc+CisgICAgICAgZW5jb3VudGVycyBhIGNhcGFiaWxpdHkgbmFtZSB3aGljaCBpdCBkb2VzIG5vdCAgcmVjb2duaXplLAorICAgICAgIGl0ICBpbmZlcnMgIGl0cyAgdHlwZSAoYm9vbGVhbiwgbnVtYmVyIG9yIHN0cmluZykgZnJvbSB0aGUKKyAgICAgICBzeW50YXggYW5kIG1ha2VzIGFuIGV4dGVuZGVkIHRhYmxlIGVudHJ5IGZvciB0aGF0IGNhcGFiaWwtCisgICAgICAgaXR5LiAgIFRoZSA8U1RST05HPnVzZV9leHRlbmRlZF9uYW1lczwvU1RST05HPiBmdW5jdGlvbiBtYWtlcyB0aGlzIGluZm9ybWEtCisgICAgICAgdGlvbiBjb25kaXRpb25hbGx5IGF2YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMuICBUaGUgbmN1cnNlcworICAgICAgIGxpYnJhcnkgIHByb3ZpZGVzIHRoZSBkYXRhIGxlYXZpbmcgbW9zdCBvZiB0aGUgYmVoYXZpb3IgdG8KKyAgICAgICBhcHBsaWNhdGlvbnM6CisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBVc2VyLWRlZmluZWQgY2FwYWJpbGl0eSBzdHJpbmdzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGgKKyAgICAgICAgICAgImsiIGFyZSB0cmVhdGVkIGFzIGZ1bmN0aW9uIGtleXMuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBUaGUgIHR5cGVzIChib29sZWFuLCBudW1iZXIsIHN0cmluZykgZGV0ZXJtaW5lZCBieSA8U1RST05HPnRpYzwvU1RST05HPgorICAgICAgICAgICBjYW4gYmUgaW5mZXJyZWQgYnkgc3VjY2Vzc2Z1bCBjYWxscyBvbiA8U1RST05HPnRpZ2V0ZmxhZzwvU1RST05HPiwgZXRjLgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgSWYgdGhlIGNhcGFiaWxpdHkgbmFtZSBoYXBwZW5zIHRvIGJlICB0d28gIGNoYXJhY3RlcnMsCisgICAgICAgICAgIHRoZSAgY2FwYWJpbGl0eSAgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgdGVybWNhcAorICAgICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICBXaGlsZSB0ZXJtY2FwIGlzIHNhaWQgdG8gYmUgZXh0ZW5zaWJsZSBiZWNhdXNlIGl0IGRvZXMgbm90CisgICAgICAgdXNlICBhICBwcmVkZWZpbmVkIHNldCBvZiBjYXBhYmlsaXRpZXMsIGluIHByYWN0aWNlIGl0IGhhcworICAgICAgIGJlZW4gbGltaXRlZCAgdG8gIHRoZSAgY2FwYWJpbGl0aWVzICBkZWZpbmVkICBieSAgdGVybWluZm8KKyAgICAgICBpbXBsZW1lbnRhdGlvbnMuICAgQXMgIGEgIHJ1bGUsICB1c2VyLWRlZmluZWQgY2FwYWJpbGl0aWVzCisgICAgICAgaW50ZW5kZWQgZm9yIHVzZSBieSB0ZXJtY2FwIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgbGltaXRlZAorICAgICAgIHRvICBib29sZWFucyAgYW5kICBudW1iZXJzICB0byBhdm9pZCBydW5uaW5nIHBhc3QgdGhlIDEwMjMKKyAgICAgICBieXRlIGxpbWl0IGFzc3VtZWQgYnkgdGVybWNhcCAgaW1wbGVtZW50YXRpb25zICBhbmQgIHRoZWlyCisgICAgICAgYXBwbGljYXRpb25zLiAgIEluICBwYXJ0aWN1bGFyLCBwcm92aWRpbmcgZXh0ZW5kZWQgc2V0cyBvZgorICAgICAgIGZ1bmN0aW9uIGtleXMgKHBhc3QgdGhlIDYwIG51bWJlcmVkIGtleXMgYW5kICB0aGUgIGhhbmRmdWwKKyAgICAgICBvZiBzcGVjaWFsIG5hbWVkIGtleXMpIGlzIGJlc3QgZG9uZSB1c2luZyB0aGUgbG9uZ2VyIG5hbWVzCisgICAgICAgYXZhaWxhYmxlIHVzaW5nIHRlcm1pbmZvLgorCisKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUEtU2FtcGxlLUVudHJ5Ij5BIFNhbXBsZSBFbnRyeTwvYT48L0gzPjxQUkU+CiAgICAgICAgVGhlIGZvbGxvd2luZyBlbnRyeSwgZGVzY3JpYmluZyBhbiBBTlNJLXN0YW5kYXJkIHRlcm1pbmFsLAogICAgICAgIGlzICByZXByZXNlbnRhdGl2ZSAgb2YgIHdoYXQgYSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGVudHJ5IGZvciBhIG1vZGVybgogICAgICAgIHRlcm1pbmFsIHR5cGljYWxseSBsb29rcyBsaWtlLgogCi0gICAgIGFuc2l8YW5zaS9wYy10ZXJtIGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLSAgICAgICAgICAgICBtYzVpLAotICAgICAgICAgICAgIGNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0gICAgICAgICAgICAgY3ViPVxFWyVwMSVkRCwgY3VkPVxFWyVwMSVkQiwgY3VmPVxFWyVwMSVkQywKLSAgICAgICAgICAgICBjdXU9XEVbJXAxJWRBLCBkY2g9XEVbJXAxJWRQLCBkbD1cRVslcDElZE0sCi0gICAgICAgICAgICAgZWNoPVxFWyVwMSVkWCwgZWwxPVxFWzFLLCBocGE9XEVbJXAxJWRHLCBodD1cRVtJLAotICAgICAgICAgICAgIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaW5kbj1cRVslcDElZFMsIC5pbmRuPVxFWyVwMSVkVCwKLSAgICAgICAgICAgICBrYnM9XkgsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLSAgICAgICAgICAgICBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVbTSwga2YxMD1cRVtWLAotICAgICAgICAgICAgIGtmMTE9XEVbVywga2YxMj1cRVtYLCBrZjI9XEVbTiwga2YzPVxFW08sIGtmND1cRVtQLAotICAgICAgICAgICAgIGtmNT1cRVtRLCBrZjY9XEVbUiwga2Y3PVxFW1MsIGtmOD1cRVtULCBrZjk9XEVbVSwKLSAgICAgICAgICAgICBraWNoMT1cRVtMLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgbmVsPVxyXEVbUywKLSAgICAgICAgICAgICBvcD1cRVszNzs0MG0sIHJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwKLSAgICAgICAgICAgICByaW49XEVbJXAxJWRULCBzMGRzPVxFKEIsIHMxZHM9XEUpQiwgczJkcz1cRSpCLAotICAgICAgICAgICAgIHMzZHM9XEUrQiwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLSAgICAgICAgICAgICBzZXRiPVxFWzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0gICAgICAgICAgICAgc2V0Zj1cRVszJT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotICAgICAgICAgICAgIHNncj1cRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDgldDsxMSU7JT8lcDkldDsxMiU7bSwKLSAgICAgICAgICAgICBzZ3IwPVxFWzA7MTBtLCB0YmM9XEVbMmcsIHU2PVxFWyVkOyVkUiwgdTc9XEVbNm4sCi0gICAgICAgICAgICAgdTg9XEVbPyVbOzAxMjM0NTY3ODldYywgdTk9XEVbYywgdnBhPVxFWyVwMSVkZCwKKyAgICAgICBhbnNpfGFuc2kvcGMtdGVybSBjb21wYXRpYmxlIHdpdGggY29sb3IsCisgICAgICAgICAgICAgICBhbSwgbWM1aSwgbWlyLCBtc2dyLAorICAgICAgICAgICAgICAgY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3YjMywgcGFpcnMjNjQsCisgICAgICAgICAgICAgICBhY3NjPStcMDIwXCxcMDIxLVwwMzAuXlkwXDMzM2BcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjAKKyAgICAgICAgICAgICAgICAgICAgalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwMworICAgICAgICAgICAgICAgICAgICB1XDI2NHZcMzAxd1wzMDJ4XDI2M3lcMzYzelwzNjJ7XDM0M3xcMzMwfVwyMzR+XDM3NiwKKyAgICAgICAgICAgICAgIGJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwKKyAgICAgICAgICAgICAgIGNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKKyAgICAgICAgICAgICAgIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAorICAgICAgICAgICAgICAgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCisgICAgICAgICAgICAgICBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAorICAgICAgICAgICAgICAgZWwxPVxFWzFLLCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XEVbSSwgaHRzPVxFSCwKKyAgICAgICAgICAgICAgIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKKyAgICAgICAgICAgICAgIGluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwga2JzPV5ILCBrY2J0PVxFW1osIGtjdWIxPVxFW0QsCisgICAgICAgICAgICAgICBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILCBraWNoMT1cRVtMLAorICAgICAgICAgICAgICAgbWM0PVxFWzRpLCBtYzU9XEVbNWksIG5lbD1cclxFW1MsIG9wPVxFWzM5OzQ5bSwKKyAgICAgICAgICAgICAgIHJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmV2PVxFWzdtLCByaW49XEVbJXAxJWRULAorICAgICAgICAgICAgICAgcm1hY3M9XEVbMTBtLCBybXBjaD1cRVsxMG0sIHJtc289XEVbbSwgcm11bD1cRVttLAorICAgICAgICAgICAgICAgczBkcz1cRShCLCBzMWRzPVxFKUIsIHMyZHM9XEUqQiwgczNkcz1cRStCLAorICAgICAgICAgICAgICAgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKKyAgICAgICAgICAgICAgIHNncj1cRVswOzEwJT8lcDEldDs3JTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDIldDs0JTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDMldDs3JTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDQldDs1JTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDYldDsxJTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDcldDs4JTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJT8lcDkldDsxMSU7bSwKKyAgICAgICAgICAgICAgIHNncjA9XEVbMDsxMG0sIHNtYWNzPVxFWzExbSwgc21wY2g9XEVbMTFtLCBzbXNvPVxFWzdtLAorICAgICAgICAgICAgICAgc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sCisgICAgICAgICAgICAgICB1OD1cRVs/JVs7MDEyMzQ1Njc4OV1jLCB1OT1cRVtjLCB2cGE9XEVbJWklcDElZGQsCiAKICAgICAgICBFbnRyaWVzIG1heSBjb250aW51ZSBvbnRvIG11bHRpcGxlIGxpbmVzIGJ5IHBsYWNpbmcgIHdoaXRlCiAgICAgICAgc3BhY2UgIGF0ICB0aGUgIGJlZ2lubmluZyAgb2YgIGVhY2ggbGluZSBleGNlcHQgdGhlIGZpcnN0LgotICAgICAgIENvbW1lbnRzIG1heSBiZSBpbmNsdWRlZCBvbiBsaW5lcyAgYmVnaW5uaW5nICB3aXRoICBgYCMnJy4KLSAgICAgICBDYXBhYmlsaXRpZXMgaW4gPEVNPnRlcm1pbmZvPC9FTT4gYXJlIG9mIHRocmVlIHR5cGVzOiBCb29sZWFuIGNhcGEtCi0gICAgICAgYmlsaXRpZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCB0aGUgdGVybWluYWwgaGFzIHNvbWUgcGFydGljLQotICAgICAgIHVsYXIgIGZlYXR1cmUsIG51bWVyaWMgY2FwYWJpbGl0aWVzIGdpdmluZyB0aGUgc2l6ZSBvZiB0aGUKLSAgICAgICB0ZXJtaW5hbCBvciB0aGUgc2l6ZSAgb2YgIHBhcnRpY3VsYXIgIGRlbGF5cywgIGFuZCAgc3RyaW5nCi0gICAgICAgY2FwYWJpbGl0aWVzLCAgd2hpY2ggIGdpdmUgYSBzZXF1ZW5jZSB3aGljaCBjYW4gYmUgdXNlZCB0bwotICAgICAgIHBlcmZvcm0gcGFydGljdWxhciB0ZXJtaW5hbCBvcGVyYXRpb25zLgorICAgICAgIENvbW1lbnRzIG1heSBiZSBpbmNsdWRlZCAgb24gIGxpbmVzICBiZWdpbm5pbmcgIHdpdGggICIjIi4KKyAgICAgICBDYXBhYmlsaXRpZXMgaW4gPEVNPnRlcm1pbmZvPC9FTT4gYXJlIG9mIHRocmVlIHR5cGVzOgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgQm9vbGVhbiAgY2FwYWJpbGl0aWVzIHdoaWNoIGluZGljYXRlIHRoYXQgdGhlIHRlcm1pbmFsCisgICAgICAgICAgIGhhcyBzb21lIHBhcnRpY3VsYXIgZmVhdHVyZSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIG51bWVyaWMgY2FwYWJpbGl0aWVzIGdpdmluZyB0aGUgc2l6ZSBvZiAgdGhlICB0ZXJtaW5hbAorICAgICAgICAgICBvciB0aGUgc2l6ZSBvZiBwYXJ0aWN1bGFyIGRlbGF5cywgYW5kCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBzdHJpbmcgIGNhcGFiaWxpdGllcywgIHdoaWNoIGdpdmUgYSBzZXF1ZW5jZSB3aGljaCBjYW4KKyAgICAgICAgICAgYmUgdXNlZCB0byBwZXJmb3JtIHBhcnRpY3VsYXIgdGVybWluYWwgb3BlcmF0aW9ucy4KIAogCi0gICA8U1RST05HPlR5cGVzPC9TVFJPTkc+IDxTVFJPTkc+b2Y8L1NUUk9ORz4gPFNUUk9ORz5DYXBhYmlsaXRpZXM8L1NUUk9ORz4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVR5cGVzLW9mLUNhcGFiaWxpdGllcyI+VHlwZXMgb2YgQ2FwYWJpbGl0aWVzPC9hPjwvSDM+PFBSRT4KICAgICAgICBBbGwgY2FwYWJpbGl0aWVzIGhhdmUgbmFtZXMuICBGb3IgaW5zdGFuY2UsIHRoZSBmYWN0ICB0aGF0CiAgICAgICAgQU5TSS1zdGFuZGFyZCAgdGVybWluYWxzICBoYXZlIDxFTT5hdXRvbWF0aWM8L0VNPiA8RU0+bWFyZ2luczwvRU0+IChpLmUuLCBhbgogICAgICAgIGF1dG9tYXRpYyByZXR1cm4gYW5kIGxpbmUtZmVlZCB3aGVuIHRoZSBlbmQgb2YgYSAgbGluZSAgaXMKICAgICAgICByZWFjaGVkKSAgaXMgIGluZGljYXRlZCAgYnkgIHRoZSBjYXBhYmlsaXR5IDxTVFJPTkc+YW08L1NUUk9ORz4uICBIZW5jZSB0aGUKICAgICAgICBkZXNjcmlwdGlvbiBvZiBhbnNpIGluY2x1ZGVzIDxTVFJPTkc+YW08L1NUUk9ORz4uICBOdW1lcmljIGNhcGFiaWxpdGllcyBhcmUKLSAgICAgICBmb2xsb3dlZCAgYnkgIHRoZSBjaGFyYWN0ZXIgYCMnIGFuZCB0aGVuIGEgcG9zaXRpdmUgdmFsdWUuCisgICAgICAgZm9sbG93ZWQgIGJ5ICB0aGUgY2hhcmFjdGVyICIjIiBhbmQgdGhlbiBhIHBvc2l0aXZlIHZhbHVlLgogICAgICAgIFRodXMgPFNUUk9ORz5jb2xzPC9TVFJPTkc+LCB3aGljaCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSAgdGVyLQotICAgICAgIG1pbmFsICBoYXMsICBnaXZlcyAgdGhlICB2YWx1ZSAgYDgwJyBmb3IgYW5zaS4gIFZhbHVlcyBmb3IKKyAgICAgICBtaW5hbCAgaGFzLCAgZ2l2ZXMgIHRoZSAgdmFsdWUgICI4MCIgZm9yIGFuc2kuICBWYWx1ZXMgZm9yCiAgICAgICAgbnVtZXJpYyBjYXBhYmlsaXRpZXMgbWF5IGJlIHNwZWNpZmllZCBpbiBkZWNpbWFsLCBvY3RhbCBvcgogICAgICAgIGhleGFkZWNpbWFsLCAgdXNpbmcgdGhlIEMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgY29udmVudGlvbnMKICAgICAgICAoZS5nLiwgMjU1LCAwMzc3IGFuZCAweGZmIG9yIDB4RkYpLgogCiAgICAgICAgRmluYWxseSwgc3RyaW5nIHZhbHVlZCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgPFNUUk9ORz5lbDwvU1RST05HPiAoY2xlYXIgIHRvCiAgICAgICAgZW5kIG9mIGxpbmUgc2VxdWVuY2UpIGFyZSBnaXZlbiBieSB0aGUgdHdvLWNoYXJhY3RlciBjb2RlLAotICAgICAgIGFuIGA9JywgYW5kIHRoZW4gYSBzdHJpbmcgZW5kaW5nICBhdCAgdGhlICBuZXh0ICBmb2xsb3dpbmcKLSAgICAgICBgLCcuCisgICAgICAgYW4gIj0iLCBhbmQgdGhlbiBhIHN0cmluZyBlbmRpbmcgIGF0ICB0aGUgIG5leHQgIGZvbGxvd2luZworICAgICAgICIsIi4KIAogICAgICAgIEEgIG51bWJlciAgb2YgIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIHByb3ZpZGVkIGluIHRoZSBzdHJpbmcKICAgICAgICB2YWx1ZWQgY2FwYWJpbGl0aWVzIGZvciBlYXN5IGVuY29kaW5nIG9mIGNoYXJhY3RlcnMgdGhlcmUuCiAgICAgICAgQm90aCAgPFNUUk9ORz5cRTwvU1RST05HPiAgYW5kICA8U1RST05HPlxlPC9TVFJPTkc+IG1hcCB0byBhbiBFU0NBUEUgY2hhcmFjdGVyLCA8U1RST05HPl54PC9TVFJPTkc+IG1hcHMgdG8gYQogICAgICAgIGNvbnRyb2wteCBmb3IgYW55IGFwcHJvcHJpYXRlIHgsIGFuZCB0aGUgc2VxdWVuY2VzICA8U1RST05HPlxuPC9TVFJPTkc+ICA8U1RST05HPlxsPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5ccjwvU1RST05HPiAgPFNUUk9ORz5cdDwvU1RST05HPiAgPFNUUk9ORz5cYjwvU1RST05HPiAgPFNUUk9ORz5cZjwvU1RST05HPiAgPFNUUk9ORz5cczwvU1RST05HPiBnaXZlIGEgbmV3bGluZSwgbGluZS1mZWVkLCByZXR1cm4sIHRhYiwKLSAgICAgICBiYWNrc3BhY2UsIGZvcm0tZmVlZCwgYW5kIHNwYWNlLiAgT3RoZXIgZXNjYXBlcyBpbmNsdWRlIDxTVFJPTkc+XF48L1NUUk9ORz4KLSAgICAgICBmb3IgIDxTVFJPTkc+XjwvU1RST05HPiwgPFNUUk9ORz5cXDwvU1RST05HPiBmb3IgPFNUUk9ORz5cPC9TVFJPTkc+LCA8U1RST05HPlw8L1NUUk9ORz4sIGZvciBjb21tYSwgPFNUUk9ORz5cOjwvU1RST05HPiBmb3IgPFNUUk9ORz46PC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5cMDwvU1RST05HPiBmb3IgbnVsbC4KLSAgICAgICAoPFNUUk9ORz5cMDwvU1RST05HPiB3aWxsIHByb2R1Y2UgXDIwMCwgd2hpY2ggZG9lcyBub3QgdGVybWluYXRlICBhICBzdHJpbmcKLSAgICAgICBidXQgYmVoYXZlcyBhcyBhIG51bGwgY2hhcmFjdGVyIG9uIG1vc3QgdGVybWluYWxzLCBwcm92aWQtCi0gICAgICAgaW5nIENTNyBpcyBzcGVjaWZpZWQuICBTZWUgPFNUUk9ORz48QSBIUkVGPSJzdHR5LjEuaHRtbCI+c3R0eSgxKTwvQT48L1NUUk9ORz4uKSAgRmluYWxseSwgIGNoYXJhY3RlcnMKLSAgICAgICBtYXkgYmUgZ2l2ZW4gYXMgdGhyZWUgb2N0YWwgZGlnaXRzIGFmdGVyIGEgPFNUUk9ORz5cPC9TVFJPTkc+LgorICAgICAgIGJhY2tzcGFjZSwgZm9ybS1mZWVkLCBhbmQgc3BhY2UuICBPdGhlciBlc2NhcGVzIGluY2x1ZGUKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+XF48L1NUUk9ORz4gZm9yIDxTVFJPTkc+XjwvU1RST05HPiwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+XFw8L1NUUk9ORz4gZm9yIDxTVFJPTkc+XDwvU1RST05HPiwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+XDwvU1RST05HPiwgZm9yIGNvbW1hLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5cOjwvU1RST05HPiBmb3IgPFNUUk9ORz46PC9TVFJPTkc+LAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYW5kIDxTVFJPTkc+XDA8L1NUUk9ORz4gZm9yIG51bGwuCisKKyAgICAgICAgICAgPFNUUk9ORz5cMDwvU1RST05HPiB3aWxsIHByb2R1Y2UgIFwyMDAsICB3aGljaCAgZG9lcyAgbm90ICB0ZXJtaW5hdGUgIGEKKyAgICAgICAgICAgc3RyaW5nICBidXQgYmVoYXZlcyBhcyBhIG51bGwgY2hhcmFjdGVyIG9uIG1vc3QgdGVybWktCisgICAgICAgICAgIG5hbHMsIHByb3ZpZGluZyBDUzcgaXMgc3BlY2lmaWVkLiAgU2VlIDxTVFJPTkc+c3R0eSgxKTwvU1RST05HPi4KKworICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHF1aXJrIGlzIHRvIG1haW50YWluICBiaW5hcnkgIGNvbS0KKyAgICAgICAgICAgcGF0aWJpbGl0eSAgb2YgIHRoZSBjb21waWxlZCB0ZXJtaW5mbyBmaWxlcyB3aXRoIG90aGVyCisgICAgICAgICAgIGltcGxlbWVudGF0aW9ucywgZS5nLiwgdGhlIFNWcjQgc3lzdGVtcywgIHdoaWNoICBkb2N1LQorICAgICAgICAgICBtZW50ICB0aGlzLiAgIENvbXBpbGVkICB0ZXJtaW5mbyBmaWxlcyB1c2UgbnVsbC10ZXJtaS0KKyAgICAgICAgICAgbmF0ZWQgc3RyaW5ncywgd2l0aCBubyBsZW5ndGhzLiAgTW9kaWZ5aW5nIHRoaXMgIHdvdWxkCisgICAgICAgICAgIHJlcXVpcmUgYSBuZXcgYmluYXJ5IGZvcm1hdCwgd2hpY2ggd291bGQgbm90IHdvcmsgd2l0aAorICAgICAgICAgICBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICBGaW5hbGx5LCBjaGFyYWN0ZXJzIG1heSBiZSBnaXZlbiAgYXMgIHRocmVlICBvY3RhbCAgZGlnaXRzCisgICAgICAgYWZ0ZXIgYSA8U1RST05HPlw8L1NUUk9ORz4uCiAKICAgICAgICBBICBkZWxheSAgaW4gIG1pbGxpc2Vjb25kcyBtYXkgYXBwZWFyIGFueXdoZXJlIGluIGEgc3RyaW5nCiAgICAgICAgY2FwYWJpbGl0eSwgZW5jbG9zZWQgaW4gJCZsdDsuLiZndDsgYnJhY2tldHMsIGFzIGluICA8U1RST05HPmVsPC9TVFJPTkc+PVxFSyQmbHQ7NSZndDssCiAgICAgICAgYW5kICBwYWRkaW5nICBjaGFyYWN0ZXJzICBhcmUgc3VwcGxpZWQgYnkgPEVNPnRwdXRzPC9FTT4gdG8gcHJvdmlkZQogICAgICAgIHRoaXMgZGVsYXkuICBUaGUgZGVsYXkgbXVzdCBiZSBhIG51bWJlciB3aXRoIGF0ICBtb3N0ICBvbmUKICAgICAgICBkZWNpbWFsIHBsYWNlIG9mIHByZWNpc2lvbjsgaXQgbWF5IGJlIGZvbGxvd2VkIGJ5IHN1ZmZpeGVzCi0gICAgICAgYConIG9yICcvJyBvciBib3RoLiAgQSAgYConICBpbmRpY2F0ZXMgIHRoYXQgIHRoZSAgcGFkZGluZworICAgICAgICIqIiBvciAiLyIgb3IgYm90aC4gIEEgICIqIiAgaW5kaWNhdGVzICB0aGF0ICB0aGUgIHBhZGRpbmcKICAgICAgICByZXF1aXJlZCAgaXMgIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIGxpbmVzIGFmZmVjdGVkCiAgICAgICAgYnkgdGhlICBvcGVyYXRpb24sICBhbmQgIHRoZSAgYW1vdW50ICBnaXZlbiAgaXMgIHRoZSAgcGVyLQogICAgICAgIGFmZmVjdGVkLXVuaXQgIHBhZGRpbmcgIHJlcXVpcmVkLiAgIChJbiB0aGUgY2FzZSBvZiBpbnNlcnQKICAgICAgICBjaGFyYWN0ZXIsICB0aGUgIGZhY3RvciAgaXMgIHN0aWxsICB0aGUgIG51bWJlciAgb2YgIDxFTT5saW5lczwvRU0+CiAgICAgICAgYWZmZWN0ZWQuKSAgIE5vcm1hbGx5LCAgcGFkZGluZyAgaXMgYWR2aXNvcnkgaWYgdGhlIGRldmljZQogICAgICAgIGhhcyB0aGUgPFNUUk9ORz54b248L1NUUk9ORz4gY2FwYWJpbGl0eTsgaXQgaXMgdXNlZCAgZm9yICBjb3N0ICBjb21wdXRhdGlvbgotICAgICAgIGJ1dCAgZG9lcyBub3QgdHJpZ2dlciBkZWxheXMuICBBIGAvJyBzdWZmaXggaW5kaWNhdGVzIHRoYXQKKyAgICAgICBidXQgIGRvZXMgbm90IHRyaWdnZXIgZGVsYXlzLiAgQSAiLyIgc3VmZml4IGluZGljYXRlcyB0aGF0CiAgICAgICAgdGhlIHBhZGRpbmcgaXMgbWFuZGF0b3J5IGFuZCBmb3JjZXMgYSBkZWxheSBvZiAgdGhlICBnaXZlbgogICAgICAgIG51bWJlciAgb2YgIG1pbGxpc2Vjb25kcyAgZXZlbiBvbiBkZXZpY2VzIGZvciB3aGljaCA8U1RST05HPnhvbjwvU1RST05HPiBpcwogICAgICAgIHByZXNlbnQgdG8gaW5kaWNhdGUgZmxvdyBjb250cm9sLgpAQCAtMTEwOCw4NSArMTE5NCwxMDAgQEAKICAgICAgICBleGFtcGxlLCBzZWUgdGhlIHNlY29uZCA8U1RST05HPmluZDwvU1RST05HPiBpbiB0aGUgZXhhbXBsZSBhYm92ZS4KIAogCi0gICA8U1RST05HPkZldGNoaW5nPC9TVFJPTkc+IDxTVFJPTkc+Q29tcGlsZWQ8L1NUUk9ORz4gPFNUUk9ORz5EZXNjcmlwdGlvbnM8L1NUUk9ORz4KLSAgICAgICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVEVSTUlORk8gaXMgc2V0LCBpdCBpcyAgaW50ZXItCi0gICAgICAgcHJldGVkICBhcyB0aGUgcGF0aG5hbWUgb2YgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgY29tLQotICAgICAgIHBpbGVkIGRlc2NyaXB0aW9uIHlvdSBhcmUgd29ya2luZyBvbi4gIE9ubHkgdGhhdCBkaXJlY3RvcnkKLSAgICAgICBpcyBzZWFyY2hlZC4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUZldGNoaW5nLUNvbXBpbGVkLURlc2NyaXB0aW9ucyI+RmV0Y2hpbmcgQ29tcGlsZWQgRGVzY3JpcHRpb25zPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IGxpYnJhcnkgc2VhcmNoZXMgZm9yIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyAgaW4KKyAgICAgICBzZXZlcmFsIHBsYWNlcy4gIEl0IHVzZXMgb25seSB0aGUgZmlyc3QgZGVzY3JpcHRpb24gZm91bmQuCisgICAgICAgVGhlIGxpYnJhcnkgaGFzIGEgY29tcGlsZWQtaW4gbGlzdCAgb2YgIHBsYWNlcyAgdG8gIHNlYXJjaAorICAgICAgIHdoaWNoICBjYW4gYmUgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICBCZWZvcmUKKyAgICAgICBzdGFydGluZyB0byBzZWFyY2gsIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBlbGltaW5hdGVzIGR1cGxpY2F0ZXMgIGluICBpdHMKKyAgICAgICBzZWFyY2ggbGlzdC4KIAotICAgICAgIElmICBURVJNSU5GTyAgaXMgIG5vdCBzZXQsIHRoZSA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gdmVyc2lvbiBvZiB0aGUgdGVyLQotICAgICAgIG1pbmZvIHJlYWRlciBjb2RlICB3aWxsICBpbnN0ZWFkICBsb29rICBpbiAgdGhlICBkaXJlY3RvcnkKLSAgICAgICA8U1RST05HPiRIT01FLy50ZXJtaW5mbzwvU1RST05HPiAgZm9yICBhIGNvbXBpbGVkIGRlc2NyaXB0aW9uLiAgSWYgaXQgZmFpbHMKLSAgICAgICB0byBmaW5kIG9uZSAgdGhlcmUsICBhbmQgIHRoZSAgZW52aXJvbm1lbnQgIHZhcmlhYmxlICBURVItCi0gICAgICAgTUlORk9fRElSUyAgaXMgc2V0LCBpdCB3aWxsIGludGVycHJldCB0aGUgY29udGVudHMgb2YgdGhhdAotICAgICAgIHZhcmlhYmxlIGFzIGEgbGlzdCBvZiBjb2xvbi0gc2VwYXJhdGVkIGRpcmVjdG9yaWVzICB0byAgYmUKLSAgICAgICBzZWFyY2hlZCAgKGFuICBlbXB0eSAgZW50cnkgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb21tYW5kIHRvCi0gICAgICAgc2VhcmNoIDxFTT4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9FTT4pLiAgSWYgbm8gZGVzY3JpcHRpb24gIGlzICBmb3VuZAotICAgICAgIGluICBhbnkgb2YgdGhlIFRFUk1JTkZPX0RJUlMgZGlyZWN0b3JpZXMsIHRoZSBmZXRjaCBmYWlscy4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiAgdGhlICBlbnZpcm9ubWVudCAgdmFyaWFibGUgIFRFUk1JTkZPIGlzIHNldCwgaXQgaXMKKyAgICAgICAgICAgaW50ZXJwcmV0ZWQgYXMgdGhlIHBhdGhuYW1lIG9mIGEgZGlyZWN0b3J5ICBjb250YWluaW5nCisgICAgICAgICAgIHRoZSAgY29tcGlsZWQgIGRlc2NyaXB0aW9uICB5b3UgIGFyZSB3b3JraW5nIG9uLiAgT25seQorICAgICAgICAgICB0aGF0IGRpcmVjdG9yeSBpcyBzZWFyY2hlZC4KIAotICAgICAgIElmIG5laXRoZXIgVEVSTUlORk8gbm9yIFRFUk1JTkZPX0RJUlMgIGlzICBzZXQsICB0aGUgIGxhc3QKLSAgICAgICBwbGFjZSAgIHRyaWVkICB3aWxsICBiZSAgdGhlICBzeXN0ZW0gIHRlcm1pbmZvICBkaXJlY3RvcnksCi0gICAgICAgPEVNPi91c3Ivc2hhcmUvdGVybWluZm88L0VNPi4KKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBJZiBURVJNSU5GTyBpcyBub3Qgc2V0LCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gd2lsbCBpbnN0ZWFkICBsb29rICBpbgorICAgICAgICAgICB0aGUgIGRpcmVjdG9yeSA8U1RST05HPiRIT01FLy50ZXJtaW5mbzwvU1RST05HPiBmb3IgYSBjb21waWxlZCBkZXNjcmlwLQorICAgICAgICAgICB0aW9uLgogCi0gICAgICAgKE5laXRoZXIgdGhlICA8U1RST05HPiRIT01FLy50ZXJtaW5mbzwvU1RST05HPiAgbG9va3VwcyAgbm9yICBURVJNSU5GT19ESVJTCi0gICAgICAgZXh0ZW5zaW9ucyAgIGFyZSAgc3VwcG9ydGVkICB1bmRlciAgc3RvY2sgIFN5c3RlbSAgViAgdGVyLQotICAgICAgIG1pbmZvL2N1cnNlcy4pCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgTmV4dCwgaWYgdGhlICBlbnZpcm9ubWVudCAgdmFyaWFibGUgIFRFUk1JTkZPX0RJUlMgIGlzCisgICAgICAgICAgIHNldCwgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHdpbGwgaW50ZXJwcmV0IHRoZSBjb250ZW50cyBvZiB0aGF0IHZhcmktCisgICAgICAgICAgIGFibGUgYXMgYSAgbGlzdCAgb2YgIGNvbG9uLXNlcGFyYXRlZCAgZGlyZWN0b3JpZXMgIChvcgorICAgICAgICAgICBkYXRhYmFzZSBmaWxlcykgdG8gYmUgc2VhcmNoZWQuCisKKyAgICAgICAgICAgQW4gIGVtcHR5IGRpcmVjdG9yeSBuYW1lIChpLmUuLCBpZiB0aGUgdmFyaWFibGUgYmVnaW5zCisgICAgICAgICAgIG9yIGVuZHMgd2l0aCBhIGNvbG9uLCBvciBjb250YWlucyBhZGphY2VudCBjb2xvbnMpICBpcworICAgICAgICAgICBpbnRlcnByZXRlZCAgYXMgIHRoZSAgc3lzdGVtICBsb2NhdGlvbiA8RU0+L3Vzci9zaGFyZS90ZXItPC9FTT4KKyAgICAgICAgICAgPEVNPm1pbmZvPC9FTT4uCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBGaW5hbGx5LCA8U1RST05HPm5jdXJzZXM8L1NUUk9ORz4gc2VhcmNoZXMgdGhlc2UgY29tcGlsZWQtaW4gbG9jYXRpb25zOgorCisgICAgICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGEgICAgICAgICAgbGlzdCAgICAgICAgICAgb2YgICAgICAgICAgIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAoL3Vzci9sb2NhbC9uY3Vyc2VzL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVyLQorICAgICAgICAgICAgICAgbWluZm8pLCBhbmQKKworICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgc3lzdGVtIHRlcm1pbmZvIGRpcmVjdG9yeSwgPEVNPi91c3Ivc2hhcmUvdGVybWluZm88L0VNPgorICAgICAgICAgICAgICAgKHRoZSBjb21waWxlZC1pbiBkZWZhdWx0KS4KIAogCi0gICA8U1RST05HPlByZXBhcmluZzwvU1RST05HPiA8U1RST05HPkRlc2NyaXB0aW9uczwvU1RST05HPgotICAgICAgIFdlIG5vdyBvdXRsaW5lIGhvdyB0byBwcmVwYXJlIGRlc2NyaXB0aW9ucyAgb2YgIHRlcm1pbmFscy4KLSAgICAgICBUaGUgIG1vc3QgIGVmZmVjdGl2ZSB3YXkgdG8gcHJlcGFyZSBhIHRlcm1pbmFsIGRlc2NyaXB0aW9uCi0gICAgICAgaXMgYnkgaW1pdGF0aW5nIHRoZSBkZXNjcmlwdGlvbiBvZiBhIHNpbWlsYXIgIHRlcm1pbmFsICBpbgotICAgICAgIDxFTT50ZXJtaW5mbzwvRU0+ICBhbmQgIHRvICBidWlsZCB1cCBhIGRlc2NyaXB0aW9uIGdyYWR1YWxseSwgdXNpbmcKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVByZXBhcmluZy1EZXNjcmlwdGlvbnMiPlByZXBhcmluZyBEZXNjcmlwdGlvbnM8L2E+PC9IMz48UFJFPgorICAgICAgIFdlICBub3cgIG91dGxpbmUgaG93IHRvIHByZXBhcmUgZGVzY3JpcHRpb25zIG9mIHRlcm1pbmFscy4KKyAgICAgICBUaGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHByZXBhcmUgYSAgdGVybWluYWwgIGRlc2NyaXB0aW9uCisgICAgICAgaXMgIGJ5ICBpbWl0YXRpbmcgdGhlIGRlc2NyaXB0aW9uIG9mIGEgc2ltaWxhciB0ZXJtaW5hbCBpbgorICAgICAgIDxFTT50ZXJtaW5mbzwvRU0+IGFuZCB0byBidWlsZCB1cCBhICBkZXNjcmlwdGlvbiAgZ3JhZHVhbGx5LCAgdXNpbmcKICAgICAgICBwYXJ0aWFsIGRlc2NyaXB0aW9ucyB3aXRoIDxFTT52aTwvRU0+IG9yIHNvbWUgb3RoZXIgc2NyZWVuLW9yaWVudGVkCi0gICAgICAgcHJvZ3JhbSAgdG8gIGNoZWNrIHRoYXQgdGhleSBhcmUgY29ycmVjdC4gIEJlIGF3YXJlIHRoYXQgYQorICAgICAgIHByb2dyYW0gdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBjb3JyZWN0LiAgQmUgYXdhcmUgIHRoYXQgIGEKICAgICAgICB2ZXJ5IHVudXN1YWwgdGVybWluYWwgbWF5IGV4cG9zZSBkZWZpY2llbmNpZXMgaW4gdGhlIGFiaWwtCi0gICAgICAgaXR5ICBvZiAgdGhlICA8RU0+dGVybWluZm88L0VNPiAgZmlsZSB0byBkZXNjcmliZSBpdCBvciBidWdzIGluIHRoZQorICAgICAgIGl0eSBvZiB0aGUgPEVNPnRlcm1pbmZvPC9FTT4gZmlsZSB0byBkZXNjcmliZSBpdCAgb3IgIGJ1Z3MgIGluICB0aGUKICAgICAgICBzY3JlZW4taGFuZGxpbmcgY29kZSBvZiB0aGUgdGVzdCBwcm9ncmFtLgogCi0gICAgICAgVG8gZ2V0IHRoZSBwYWRkaW5nIGZvciBpbnNlcnQgbGluZSByaWdodCAoaWYgdGhlICB0ZXJtaW5hbAorICAgICAgIFRvICBnZXQgdGhlIHBhZGRpbmcgZm9yIGluc2VydCBsaW5lIHJpZ2h0IChpZiB0aGUgdGVybWluYWwKICAgICAgICBtYW51ZmFjdHVyZXIgZGlkIG5vdCBkb2N1bWVudCBpdCkgYSBzZXZlcmUgdGVzdCBpcyB0byBlZGl0Ci0gICAgICAgYSBsYXJnZSBmaWxlIGF0IDk2MDAgYmF1ZCwgZGVsZXRlIDE2IG9yIHNvIGxpbmVzIGZyb20gIHRoZQotICAgICAgIG1pZGRsZSAgb2YgIHRoZSBzY3JlZW4sIHRoZW4gaGl0IHRoZSBgdScga2V5IHNldmVyYWwgdGltZXMKLSAgICAgICBxdWlja2x5LiAgSWYgdGhlIHRlcm1pbmFsIG1lc3NlcyB1cCwgbW9yZSBwYWRkaW5nIGlzICB1c3UtCi0gICAgICAgYWxseSAgbmVlZGVkLiAgQSBzaW1pbGFyIHRlc3QgY2FuIGJlIHVzZWQgZm9yIGluc2VydCBjaGFyLQorICAgICAgIGEgIGxhcmdlIGZpbGUgYXQgOTYwMCBiYXVkLCBkZWxldGUgMTYgb3Igc28gbGluZXMgZnJvbSB0aGUKKyAgICAgICBtaWRkbGUgb2YgdGhlIHNjcmVlbiwgdGhlbiBoaXQgdGhlICJ1IiBrZXkgIHNldmVyYWwgIHRpbWVzCisgICAgICAgcXVpY2tseS4gICBJZiB0aGUgdGVybWluYWwgbWVzc2VzIHVwLCBtb3JlIHBhZGRpbmcgaXMgdXN1LQorICAgICAgIGFsbHkgbmVlZGVkLiAgQSBzaW1pbGFyIHRlc3QgY2FuIGJlIHVzZWQgZm9yIGluc2VydCAgY2hhci0KICAgICAgICBhY3Rlci4KIAogCi0gICA8U1RST05HPkJhc2ljPC9TVFJPTkc+IDxTVFJPTkc+Q2FwYWJpbGl0aWVzPC9TVFJPTkc+Ci0gICAgICAgVGhlIG51bWJlciBvZiBjb2x1bW5zIG9uIGVhY2ggbGluZSAgZm9yICB0aGUgIHRlcm1pbmFsICBpcwotICAgICAgIGdpdmVuICBieSB0aGUgPFNUUk9ORz5jb2xzPC9TVFJPTkc+IG51bWVyaWMgY2FwYWJpbGl0eS4gIElmIHRoZSB0ZXJtaW5hbCBpcwotICAgICAgIGEgQ1JULCB0aGVuIHRoZSBudW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbiBpcyBnaXZlbiAgYnkKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUJhc2ljLUNhcGFiaWxpdGllcyI+QmFzaWMgQ2FwYWJpbGl0aWVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBUaGUgIG51bWJlciAgb2YgIGNvbHVtbnMgIG9uIGVhY2ggbGluZSBmb3IgdGhlIHRlcm1pbmFsIGlzCisgICAgICAgZ2l2ZW4gYnkgdGhlIDxTVFJPTkc+Y29sczwvU1RST05HPiBudW1lcmljIGNhcGFiaWxpdHkuICBJZiB0aGUgdGVybWluYWwgIGlzCisgICAgICAgYSAgQ1JULCB0aGVuIHRoZSBudW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbiBpcyBnaXZlbiBieQogICAgICAgIHRoZSA8U1RST05HPmxpbmVzPC9TVFJPTkc+IGNhcGFiaWxpdHkuICBJZiB0aGUgdGVybWluYWwgd3JhcHMgYXJvdW5kIHRvIHRoZQotICAgICAgIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lIHdoZW4gaXQgcmVhY2hlcyB0aGUgcmlnaHQgIG1hci0KKyAgICAgICBiZWdpbm5pbmcgIG9mIHRoZSBuZXh0IGxpbmUgd2hlbiBpdCByZWFjaGVzIHRoZSByaWdodCBtYXItCiAgICAgICAgZ2luLCB0aGVuIGl0IHNob3VsZCBoYXZlIHRoZSA8U1RST05HPmFtPC9TVFJPTkc+IGNhcGFiaWxpdHkuICBJZiB0aGUgdGVybWktCi0gICAgICAgbmFsIGNhbiBjbGVhciBpdHMgc2NyZWVuLCBsZWF2aW5nIHRoZSBjdXJzb3IgaW4gIHRoZSAgaG9tZQotICAgICAgIHBvc2l0aW9uLCAgdGhlbiB0aGlzIGlzIGdpdmVuIGJ5IHRoZSA8U1RST05HPmNsZWFyPC9TVFJPTkc+IHN0cmluZyBjYXBhYmlsLQotICAgICAgIGl0eS4gIElmIHRoZSB0ZXJtaW5hbCBvdmVyc3RyaWtlcyAocmF0aGVyIHRoYW4gY2xlYXJpbmcgIGEKLSAgICAgICBwb3NpdGlvbiAgd2hlbiAgYSBjaGFyYWN0ZXIgaXMgc3RydWNrIG92ZXIpIHRoZW4gaXQgc2hvdWxkCi0gICAgICAgaGF2ZSB0aGUgPFNUUk9ORz5vczwvU1RST05HPiBjYXBhYmlsaXR5LiAgSWYgdGhlICB0ZXJtaW5hbCAgaXMgIGEgIHByaW50aW5nCi0gICAgICAgdGVybWluYWwsICB3aXRoIG5vIHNvZnQgY29weSB1bml0LCBnaXZlIGl0IGJvdGggPFNUUk9ORz5oYzwvU1RST05HPiBhbmQgPFNUUk9ORz5vczwvU1RST05HPi4KLSAgICAgICAoPFNUUk9ORz5vczwvU1RST05HPiBhcHBsaWVzIHRvIHN0b3JhZ2Ugc2NvcGUgdGVybWluYWxzLCBzdWNoIGFzICBURUtUUk9OSVgKLSAgICAgICA0MDEwICBzZXJpZXMsIGFzIHdlbGwgYXMgaGFyZCBjb3B5IGFuZCBBUEwgdGVybWluYWxzLikgIElmCisgICAgICAgbmFsICBjYW4gIGNsZWFyIGl0cyBzY3JlZW4sIGxlYXZpbmcgdGhlIGN1cnNvciBpbiB0aGUgaG9tZQorICAgICAgIHBvc2l0aW9uLCB0aGVuIHRoaXMgaXMgZ2l2ZW4gYnkgdGhlIDxTVFJPTkc+Y2xlYXI8L1NUUk9ORz4gc3RyaW5nICBjYXBhYmlsLQorICAgICAgIGl0eS4gICBJZiB0aGUgdGVybWluYWwgb3ZlcnN0cmlrZXMgKHJhdGhlciB0aGFuIGNsZWFyaW5nIGEKKyAgICAgICBwb3NpdGlvbiB3aGVuIGEgY2hhcmFjdGVyIGlzIHN0cnVjayBvdmVyKSB0aGVuICBpdCAgc2hvdWxkCisgICAgICAgaGF2ZSAgdGhlICA8U1RST05HPm9zPC9TVFJPTkc+ICBjYXBhYmlsaXR5LiAgIElmIHRoZSB0ZXJtaW5hbCBpcyBhIHByaW50aW5nCisgICAgICAgdGVybWluYWwsIHdpdGggbm8gc29mdCBjb3B5IHVuaXQsIGdpdmUgaXQgYm90aCA8U1RST05HPmhjPC9TVFJPTkc+IGFuZCAgPFNUUk9ORz5vczwvU1RST05HPi4KKyAgICAgICAoPFNUUk9ORz5vczwvU1RST05HPiAgYXBwbGllcyB0byBzdG9yYWdlIHNjb3BlIHRlcm1pbmFscywgc3VjaCBhcyBURUtUUk9OSVgKKyAgICAgICA0MDEwIHNlcmllcywgYXMgd2VsbCBhcyBoYXJkIGNvcHkgYW5kIEFQTCB0ZXJtaW5hbHMuKSAgIElmCiAgICAgICAgdGhlcmUgaXMgYSBjb2RlIHRvIG1vdmUgdGhlIGN1cnNvciB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZQogICAgICAgIGN1cnJlbnQgcm93LCBnaXZlIHRoaXMgYXMgPFNUUk9ORz5jcjwvU1RST05HPi4gIChOb3JtYWxseSB0aGlzIHdpbGwgYmUgY2FyLQotICAgICAgIHJpYWdlIHJldHVybiwgY29udHJvbCBNLikgIElmIHRoZXJlIGlzIGEgY29kZSAgdG8gIHByb2R1Y2UKKyAgICAgICByaWFnZSAgcmV0dXJuLCAgY29udHJvbCBNLikgIElmIHRoZXJlIGlzIGEgY29kZSB0byBwcm9kdWNlCiAgICAgICAgYW4gYXVkaWJsZSBzaWduYWwgKGJlbGwsIGJlZXAsIGV0YykgZ2l2ZSB0aGlzIGFzIDxTVFJPTkc+YmVsPC9TVFJPTkc+LgogCi0gICAgICAgSWYgIHRoZXJlIGlzIGEgY29kZSB0byBtb3ZlIHRoZSBjdXJzb3Igb25lIHBvc2l0aW9uIHRvIHRoZQotICAgICAgIGxlZnQgKHN1Y2ggYXMgYmFja3NwYWNlKSB0aGF0IGNhcGFiaWxpdHkgc2hvdWxkICBiZSAgZ2l2ZW4KLSAgICAgICBhcyAgPFNUUk9ORz5jdWIxPC9TVFJPTkc+LiAgIFNpbWlsYXJseSwgY29kZXMgdG8gbW92ZSB0byB0aGUgcmlnaHQsIHVwLCBhbmQKKyAgICAgICBJZiB0aGVyZSBpcyBhIGNvZGUgdG8gbW92ZSB0aGUgY3Vyc29yIG9uZSBwb3NpdGlvbiB0byAgdGhlCisgICAgICAgbGVmdCAgKHN1Y2ggIGFzIGJhY2tzcGFjZSkgdGhhdCBjYXBhYmlsaXR5IHNob3VsZCBiZSBnaXZlbgorICAgICAgIGFzIDxTVFJPTkc+Y3ViMTwvU1RST05HPi4gIFNpbWlsYXJseSwgY29kZXMgdG8gbW92ZSB0byB0aGUgcmlnaHQsICB1cCwgIGFuZAogICAgICAgIGRvd24gc2hvdWxkIGJlIGdpdmVuIGFzIDxTVFJPTkc+Y3VmMTwvU1RST05HPiwgPFNUUk9ORz5jdXUxPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5jdWQxPC9TVFJPTkc+LiAgVGhlc2UgbG9jYWwKLSAgICAgICBjdXJzb3IgIG1vdGlvbnMgIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRleHQgdGhleSBwYXNzIG92ZXIsCi0gICAgICAgZm9yIGV4YW1wbGUsIHlvdSB3b3VsZCBub3Qgbm9ybWFsbHkgdXNlICBgPFNUUk9ORz5jdWYxPC9TVFJPTkc+PSAnICBiZWNhdXNlCisgICAgICAgY3Vyc29yIG1vdGlvbnMgc2hvdWxkIG5vdCBhbHRlciB0aGUgdGV4dCB0aGV5ICBwYXNzICBvdmVyLAorICAgICAgIGZvciAgZXhhbXBsZSwgIHlvdSB3b3VsZCBub3Qgbm9ybWFsbHkgdXNlICI8U1RST05HPmN1ZjE8L1NUUk9ORz49ICIgYmVjYXVzZQogICAgICAgIHRoZSBzcGFjZSB3b3VsZCBlcmFzZSB0aGUgY2hhcmFjdGVyIG1vdmVkIG92ZXIuCiAKLSAgICAgICBBICB2ZXJ5ICBpbXBvcnRhbnQgIHBvaW50ICBoZXJlICBpcyAgdGhhdCB0aGUgbG9jYWwgY3Vyc29yCi0gICAgICAgbW90aW9ucyBlbmNvZGVkIGluIDxFTT50ZXJtaW5mbzwvRU0+IGFyZSB1bmRlZmluZWQgYXQgdGhlIGxlZnQgIGFuZAotICAgICAgIHRvcCAgZWRnZXMgIG9mICBhICBDUlQgIHRlcm1pbmFsLiAgIFByb2dyYW1zICBzaG91bGQgbmV2ZXIKLSAgICAgICBhdHRlbXB0IHRvIGJhY2tzcGFjZSBhcm91bmQgdGhlIGxlZnQgZWRnZSwgIHVubGVzcyAgPFNUUk9ORz5idzwvU1RST05HPiAgaXMKKyAgICAgICBBIHZlcnkgaW1wb3J0YW50IHBvaW50ICBoZXJlICBpcyAgdGhhdCAgdGhlICBsb2NhbCAgY3Vyc29yCisgICAgICAgbW90aW9ucyAgZW5jb2RlZCBpbiA8RU0+dGVybWluZm88L0VNPiBhcmUgdW5kZWZpbmVkIGF0IHRoZSBsZWZ0IGFuZAorICAgICAgIHRvcCBlZGdlcyAgb2YgIGEgIENSVCAgdGVybWluYWwuICAgUHJvZ3JhbXMgIHNob3VsZCAgbmV2ZXIKKyAgICAgICBhdHRlbXB0ICB0byAgYmFja3NwYWNlICBhcm91bmQgdGhlIGxlZnQgZWRnZSwgdW5sZXNzIDxTVFJPTkc+Ync8L1NUUk9ORz4gaXMKICAgICAgICBnaXZlbiwgYW5kIG5ldmVyIGF0dGVtcHQgdG8gZ28gdXAgbG9jYWxseSBvZmYgdGhlIHRvcC4gIEluCi0gICAgICAgb3JkZXIgdG8gc2Nyb2xsIHRleHQgdXAsIGEgcHJvZ3JhbSB3aWxsIGdvIHRvICB0aGUgIGJvdHRvbQorICAgICAgIG9yZGVyICB0byAgc2Nyb2xsIHRleHQgdXAsIGEgcHJvZ3JhbSB3aWxsIGdvIHRvIHRoZSBib3R0b20KICAgICAgICBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCBzZW5kIHRoZSA8U1RST05HPmluZDwvU1RST05HPiAoaW5kZXgpIHN0cmluZy4KIAogICAgICAgIFRvIHNjcm9sbCB0ZXh0IGRvd24sIGEgcHJvZ3JhbSBnb2VzIHRvIHRoZSB0b3AgbGVmdCBjb3JuZXIKQEAgLTEyMjIsMjAgKzEzMjMsMjEgQEAKICAgICAgICBkZXNjcmliZWQgYXMKIAogICAgICAgIDMzfHR0eTMzfHR0eXxtb2RlbCAzMyB0ZWxldHlwZSwKLSAgICAgICAgICAgIGJlbD1eRywgY29scyM3MiwgY3I9Xk0sIGN1ZDE9XkosIGhjLCBpbmQ9XkosIG9zLAorICAgICAgICAgICAgICAgYmVsPV5HLCBjb2xzIzcyLCBjcj1eTSwgY3VkMT1eSiwgaGMsIGluZD1eSiwgb3MsCiAKICAgICAgICB3aGlsZSB0aGUgTGVhciBTaWVnbGVyIEFETS0zIGlzIGRlc2NyaWJlZCBhcwogCiAgICAgICAgYWRtM3wzfGxzaSBhZG0zLAotICAgICAgICAgICAgYW0sIGJlbD1eRywgY2xlYXI9XlosIGNvbHMjODAsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotICAgICAgICAgICAgaW5kPV5KLCBsaW5lcyMyNCwKKyAgICAgICAgICAgICAgIGFtLCBiZWw9XkcsIGNsZWFyPV5aLCBjb2xzIzgwLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKKyAgICAgICAgICAgICAgIGluZD1eSiwgbGluZXMjMjQsCiAKIAotICAgPFNUUk9ORz5QYXJhbWV0ZXJpemVkPC9TVFJPTkc+IDxTVFJPTkc+U3RyaW5nczwvU1RST05HPgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUGFyYW1ldGVyaXplZC1TdHJpbmdzIj5QYXJhbWV0ZXJpemVkIFN0cmluZ3M8L2E+PC9IMz48UFJFPgogICAgICAgIEN1cnNvciBhZGRyZXNzaW5nIGFuZCBvdGhlciBzdHJpbmdzICByZXF1aXJpbmcgIHBhcmFtZXRlcnMKICAgICAgICBpbiAgdGhlICB0ZXJtaW5hbCAgYXJlIGRlc2NyaWJlZCBieSBhIHBhcmFtZXRlcml6ZWQgc3RyaW5nCi0gICAgICAgY2FwYWJpbGl0eSwgd2l0aCA8U1RST05HPjxBIEhSRUY9InByaW50Zi4zLmh0bWwiPnByaW50ZigzKTwvQT48L1NUUk9ORz4gbGlrZSBlc2NhcGVzICA8U1RST05HPiV4PC9TVFJPTkc+ICBpbiAgaXQuICAgRm9yCi0gICAgICAgZXhhbXBsZSwgIHRvICBhZGRyZXNzICB0aGUgIGN1cnNvciwgIHRoZSA8U1RST05HPmN1cDwvU1RST05HPiBjYXBhYmlsaXR5IGlzCisgICAgICAgY2FwYWJpbGl0eSwgd2l0aCA8RU0+cHJpbnRmPC9FTT4tbGlrZSBlc2NhcGVzIHN1Y2ggIGFzICA8RU0+JXg8L0VNPiAgaW4gIGl0LgorICAgICAgIEZvciAgZXhhbXBsZSwgdG8gYWRkcmVzcyB0aGUgY3Vyc29yLCB0aGUgPFNUUk9ORz5jdXA8L1NUUk9ORz4gY2FwYWJpbGl0eSBpcwogICAgICAgIGdpdmVuLCB1c2luZyB0d28gcGFyYW1ldGVyczogdGhlIHJvdyBhbmQgY29sdW1uIHRvIGFkZHJlc3MKICAgICAgICB0by4gIChSb3dzIGFuZCBjb2x1bW5zIGFyZSBudW1iZXJlZCBmcm9tIHplcm8gYW5kIHJlZmVyIHRvCiAgICAgICAgdGhlIHBoeXNpY2FsIHNjcmVlbiB2aXNpYmxlIHRvIHRoZSB1c2VyLCBub3QgdG8gYW55IHVuc2VlbgpAQCAtMTI1MiwzMiArMTM1NCwzMSBAQAogCiAgICAgICAgVGhlIDxTVFJPTkc+JTwvU1RST05HPiBlbmNvZGluZ3MgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmdzOgogCisgICAgICAgPFNUUk9ORz4lJTwvU1RST05HPiAgIG91dHB1dHMgIiUiCiAKLSAgICAgICAlJSAgIG91dHB1dHMgYCUnCi0KLSAgICAgICAlPEVNPltbPC9FTT46PEVNPl1mbGFnc11bd2lkdGhbLnByZWNpc2lvbl1dWzwvRU0+ZG94WHM8RU0+XTwvRU0+Ci0gICAgICAgICAgICBhcyBpbiA8U1RST05HPnByaW50ZjwvU1RST05HPiwgZmxhZ3MgYXJlIFstKyNdIGFuZCBzcGFjZS4gIFVzZSAgYSAgYDonCi0gICAgICAgICAgICB0byAgYWxsb3cgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGEgYC0nIGZsYWcsIGF2b2lkLQorICAgICAgIDxTVFJPTkc+JTwvU1RST05HPjxFTT5bWzwvRU0+OjxFTT5dZmxhZ3NdW3dpZHRoWy5wcmVjaXNpb25dXVs8L0VNPjxTVFJPTkc+ZG94WHM8L1NUUk9ORz48RU0+XTwvRU0+CisgICAgICAgICAgICBhcyBpbiA8U1RST05HPnByaW50ZjwvU1RST05HPiwgZmxhZ3MgYXJlIDxFTT5bLSsjXTwvRU0+IGFuZCA8RU0+c3BhY2U8L0VNPi4gIFVzZSAgYSAgIjoiCisgICAgICAgICAgICB0byAgYWxsb3cgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGEgIi0iIGZsYWcsIGF2b2lkLQogICAgICAgICAgICAgaW5nIGludGVycHJldGluZyAiJS0iIGFzIGFuIG9wZXJhdG9yLgogCiAgICAgICAgJWMgICBwcmludCBwb3AoKSBsaWtlICVjIGluIDxTVFJPTkc+cHJpbnRmPC9TVFJPTkc+CiAKLSAgICAgICAlcyAgIHByaW50IHBvcCgpIGxpa2UgJXMgaW4gPFNUUk9ORz5wcmludGY8L1NUUk9ORz4KKyAgICAgICA8U1RST05HPiVzPC9TVFJPTkc+ICAgcHJpbnQgcG9wKCkgbGlrZSAlcyBpbiA8U1RST05HPnByaW50ZjwvU1RST05HPgogCi0gICAgICAgJXBbMS05XQorICAgICAgIDxTVFJPTkc+JXA8L1NUUk9ORz48RU0+WzEtOV08L0VNPgogICAgICAgICAgICAgcHVzaCA8RU0+aTwvRU0+J3RoIHBhcmFtZXRlcgogCi0gICAgICAgJVBbYS16XQotICAgICAgICAgICAgc2V0IGR5bmFtaWMgdmFyaWFibGUgW2Etel0gdG8gcG9wKCkKKyAgICAgICA8U1RST05HPiVQPC9TVFJPTkc+PEVNPlthLXpdPC9FTT4KKyAgICAgICAgICAgIHNldCBkeW5hbWljIHZhcmlhYmxlIDxFTT5bYS16XTwvRU0+IHRvIHBvcCgpCiAKLSAgICAgICAlZ1thLXpdCi0gICAgICAgICAgICBnZXQgZHluYW1pYyB2YXJpYWJsZSBbYS16XSBhbmQgcHVzaCBpdAorICAgICAgIDxTVFJPTkc+JWc8L1NUUk9ORz48RU0+W2Etel0vPC9FTT4KKyAgICAgICAgICAgIGdldCBkeW5hbWljIHZhcmlhYmxlIDxFTT5bYS16XTwvRU0+IGFuZCBwdXNoIGl0CiAKLSAgICAgICAlUFtBLVpdCi0gICAgICAgICAgICBzZXQgc3RhdGljIHZhcmlhYmxlIFthLXpdIHRvIHBvcCgpCisgICAgICAgPFNUUk9ORz4lUDwvU1RST05HPjxFTT5bQS1aXTwvRU0+CisgICAgICAgICAgICBzZXQgc3RhdGljIHZhcmlhYmxlIDxFTT5bYS16XTwvRU0+IHRvIDxFTT5wb3AoKTwvRU0+CiAKLSAgICAgICAlZ1tBLVpdCi0gICAgICAgICAgICBnZXQgc3RhdGljIHZhcmlhYmxlIFthLXpdIGFuZCBwdXNoIGl0CisgICAgICAgPFNUUk9ORz4lZzwvU1RST05HPjxFTT5bQS1aXTwvRU0+CisgICAgICAgICAgICBnZXQgc3RhdGljIHZhcmlhYmxlIDxFTT5bYS16XTwvRU0+IGFuZCBwdXNoIGl0CiAKICAgICAgICAgICAgIFRoZSB0ZXJtcyAgInN0YXRpYyIgIGFuZCAgImR5bmFtaWMiICBhcmUgIG1pc2xlYWRpbmcuCiAgICAgICAgICAgICBIaXN0b3JpY2FsbHksICB0aGVzZSBhcmUgc2ltcGx5IHR3byBkaWZmZXJlbnQgc2V0cyBvZgpAQCAtMTI4Niw1OSArMTM4Nyw1OSBAQAogICAgICAgICAgICAgb3RoZXIgaW1wbGVtZW50YXRpb25zLiAgUmVseWluZyBvbiBpdCB3aWxsICBhZHZlcnNlbHkKICAgICAgICAgICAgIGltcGFjdCBwb3J0YWJpbGl0eSB0byBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCiAKLSAgICAgICAlJzxFTT5jPC9FTT4nIGNoYXIgY29uc3RhbnQgPEVNPmM8L0VNPgorICAgICAgIDxTVFJPTkc+JSc8L1NUUk9ORz48RU0+YzwvRU0+PFNUUk9ORz4nPC9TVFJPTkc+IGNoYXIgY29uc3RhbnQgPEVNPmM8L0VNPgogCi0gICAgICAgJXs8RU0+bm48L0VNPn0KKyAgICAgICA8U1RST05HPiV7PC9TVFJPTkc+PEVNPm5uPC9FTT48U1RST05HPn08L1NUUk9ORz4KICAgICAgICAgICAgIGludGVnZXIgY29uc3RhbnQgPEVNPm5uPC9FTT4KIAotICAgICAgICVsICAgcHVzaCBzdHJsZW4ocG9wKQorICAgICAgIDxTVFJPTkc+JWw8L1NUUk9ORz4gICBwdXNoIHN0cmxlbihwb3ApCiAKLSAgICAgICAlKyAlLSAlKiAlLyAlbQotICAgICAgICAgICAgYXJpdGhtZXRpYyAoJW0gaXMgbW9kKTogcHVzaChwb3AoKSBvcCBwb3AoKSkKKyAgICAgICA8U1RST05HPiUrPC9TVFJPTkc+LCA8U1RST05HPiUtPC9TVFJPTkc+LCA8U1RST05HPiUqPC9TVFJPTkc+LCA8U1RST05HPiUvPC9TVFJPTkc+LCA8U1RST05HPiVtPC9TVFJPTkc+CisgICAgICAgICAgICBhcml0aG1ldGljICglbSBpcyBtb2QpOiA8RU0+cHVzaChwb3AoKTwvRU0+IDxFTT5vcDwvRU0+IDxFTT5wb3AoKSk8L0VNPgogCi0gICAgICAgJSZhbXA7ICV8ICVeCi0gICAgICAgICAgICBiaXQgb3BlcmF0aW9ucyAoQU5ELCBPUiBhbmQgZXhjbHVzaXZlLU9SKTogcHVzaChwb3AoKQotICAgICAgICAgICAgb3AgcG9wKCkpCisgICAgICAgPFNUUk9ORz4lJmFtcDs8L1NUUk9ORz4sIDxTVFJPTkc+JXw8L1NUUk9ORz4sIDxTVFJPTkc+JV48L1NUUk9ORz4KKyAgICAgICAgICAgIGJpdCBvcGVyYXRpb25zIChBTkQsIE9SIGFuZCBleGNsdXNpdmUtT1IpOiA8RU0+cHVzaChwb3AoKTwvRU0+CisgICAgICAgICAgICA8RU0+b3A8L0VNPiA8RU0+cG9wKCkpPC9FTT4KIAotICAgICAgICU9ICUmZ3Q7ICUmbHQ7Ci0gICAgICAgICAgICBsb2dpY2FsIG9wZXJhdGlvbnM6IHB1c2gocG9wKCkgb3AgcG9wKCkpCisgICAgICAgPFNUUk9ORz4lPTwvU1RST05HPiwgPFNUUk9ORz4lJmd0OzwvU1RST05HPiwgPFNUUk9ORz4lJmx0OzwvU1RST05HPgorICAgICAgICAgICAgbG9naWNhbCBvcGVyYXRpb25zOiA8RU0+cHVzaChwb3AoKTwvRU0+IDxFTT5vcDwvRU0+IDxFTT5wb3AoKSk8L0VNPgogCi0gICAgICAgJUEsICVPCisgICAgICAgPFNUUk9ORz4lQTwvU1RST05HPiwgPFNUUk9ORz4lTzwvU1RST05HPgogICAgICAgICAgICAgbG9naWNhbCBBTkQgYW5kIE9SIG9wZXJhdGlvbnMgKGZvciBjb25kaXRpb25hbHMpCiAKLSAgICAgICAlISAlfgorICAgICAgIDxTVFJPTkc+JSE8L1NUUk9ORz4sIDxTVFJPTkc+JX48L1NUUk9ORz4KICAgICAgICAgICAgIHVuYXJ5ICBvcGVyYXRpb25zICAobG9naWNhbCAgYW5kICAgYml0ICAgY29tcGxlbWVudCk6CiAgICAgICAgICAgICBwdXNoKG9wIHBvcCgpKQogCi0gICAgICAgJWkgICBhZGQgMSB0byBmaXJzdCB0d28gcGFyYW1ldGVycyAoZm9yIEFOU0kgdGVybWluYWxzKQorICAgICAgIDxTVFJPTkc+JWk8L1NUUk9ORz4gICBhZGQgMSB0byBmaXJzdCB0d28gcGFyYW1ldGVycyAoZm9yIEFOU0kgdGVybWluYWxzKQogCi0gICAgICAgJT8gPEVNPmV4cHI8L0VNPiAldCA8RU0+dGhlbnBhcnQ8L0VNPiAlZSA8RU0+ZWxzZXBhcnQ8L0VNPiAlOwotICAgICAgICAgICAgVGhpcyAgZm9ybXMgIGFuICBpZi10aGVuLWVsc2UuICAgVGhlICAlZSAgPEVNPmVsc2VwYXJ0PC9FTT4gaXMKLSAgICAgICAgICAgIG9wdGlvbmFsLiAgVXN1YWxseSB0aGUgJT8gPEVNPmV4cHI8L0VNPiBwYXJ0ICBwdXNoZXMgIGEgIHZhbHVlCi0gICAgICAgICAgICBvbnRvICB0aGUgc3RhY2ssIGFuZCAldCBwb3BzIGl0IGZyb20gdGhlIHN0YWNrLCB0ZXN0LQorICAgICAgIDxTVFJPTkc+JT88L1NUUk9ORz4gPEVNPmV4cHI8L0VNPiA8U1RST05HPiV0PC9TVFJPTkc+IDxFTT50aGVucGFydDwvRU0+IDxTVFJPTkc+JWU8L1NUUk9ORz4gPEVNPmVsc2VwYXJ0PC9FTT4gPFNUUk9ORz4lOzwvU1RST05HPgorICAgICAgICAgICAgVGhpcyAgZm9ybXMgIGFuICBpZi10aGVuLWVsc2UuICAgVGhlICA8U1RST05HPiVlPC9TVFJPTkc+ICA8RU0+ZWxzZXBhcnQ8L0VNPiBpcworICAgICAgICAgICAgb3B0aW9uYWwuICBVc3VhbGx5IHRoZSA8U1RST05HPiU/PC9TVFJPTkc+IDxFTT5leHByPC9FTT4gcGFydCAgcHVzaGVzICBhICB2YWx1ZQorICAgICAgICAgICAgb250byAgdGhlIHN0YWNrLCBhbmQgPFNUUk9ORz4ldDwvU1RST05HPiBwb3BzIGl0IGZyb20gdGhlIHN0YWNrLCB0ZXN0LQogICAgICAgICAgICAgaW5nIGlmIGl0IGlzIG5vbnplcm8gKHRydWUpLiAgSWYgaXQgaXMgemVybyAgKGZhbHNlKSwKLSAgICAgICAgICAgIGNvbnRyb2wgcGFzc2VzIHRvIHRoZSAlZSAoZWxzZSkgcGFydC4KKyAgICAgICAgICAgIGNvbnRyb2wgcGFzc2VzIHRvIHRoZSA8U1RST05HPiVlPC9TVFJPTkc+IChlbHNlKSBwYXJ0LgogCiAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBmb3JtIGVsc2UtaWYncyBhIGxhIEFsZ29sIDY4OgotICAgICAgICAgICAgJT8gYzEgJXQgYjEgJWUgYzIgJXQgYjIgJWUgYzMgJXQgYjMgJWUgYzQgJXQgYjQgJWUgJTsKKyAgICAgICAgICAgIDxTVFJPTkc+JT88L1NUUk9ORz4gYzEgPFNUUk9ORz4ldDwvU1RST05HPiBiMSA8U1RST05HPiVlPC9TVFJPTkc+IGMyIDxTVFJPTkc+JXQ8L1NUUk9ORz4gYjIgPFNUUk9ORz4lZTwvU1RST05HPiBjMyA8U1RST05HPiV0PC9TVFJPTkc+IGIzIDxTVFJPTkc+JWU8L1NUUk9ORz4gYzQgPFNUUk9ORz4ldDwvU1RST05HPiBiNCA8U1RST05HPiVlPC9TVFJPTkc+IDxTVFJPTkc+JTs8L1NUUk9ORz4KIAogICAgICAgICAgICAgd2hlcmUgY2kgYXJlIGNvbmRpdGlvbnMsIGJpIGFyZSBib2RpZXMuCiAKICAgICAgICAgICAgIFVzZSB0aGUgPFNUUk9ORz4tZjwvU1RST05HPiBvcHRpb24gb2YgPFNUUk9ORz50aWM8L1NUUk9ORz4gb3IgPFNUUk9ORz5pbmZvY21wPC9TVFJPTkc+IHRvIHNlZSB0aGUgc3RydWMtCi0gICAgICAgICAgICB0dXJlICBvZiAgaWYtdGhlLWVsc2Uncy4gIFNvbWUgc3RyaW5ncywgZS5nLiwgPFNUUk9ORz5zZ3I8L1NUUk9ORz4gY2FuCisgICAgICAgICAgICB0dXJlIG9mIGlmLXRoZW4tZWxzZSdzLiAgU29tZSBzdHJpbmdzLCBlLmcuLCA8U1RST05HPnNncjwvU1RST05HPiAgY2FuCiAgICAgICAgICAgICBiZSB2ZXJ5IGNvbXBsaWNhdGVkIHdoZW4gd3JpdHRlbiBvbiBvbmUgbGluZS4gIFRoZSA8U1RST05HPi1mPC9TVFJPTkc+Ci0gICAgICAgICAgICBvcHRpb24gIHNwbGl0cyAgdGhlICBzdHJpbmcgaW50byBsaW5lcyB3aXRoIHRoZSBwYXJ0cworICAgICAgICAgICAgb3B0aW9uIHNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMgIHdpdGggIHRoZSAgcGFydHMKICAgICAgICAgICAgIGluZGVudGVkLgogCiAgICAgICAgQmluYXJ5IG9wZXJhdGlvbnMgYXJlIGluIHBvc3RmaXggZm9ybSB3aXRoIHRoZSBvcGVyYW5kcyBpbgotICAgICAgIHRoZSAgdXN1YWwgIG9yZGVyLiAgIFRoYXQgIGlzLCAgdG8gIGdldCAgeC01IG9uZSB3b3VsZCB1c2UKLSAgICAgICAiJWd4JXs1fSUtIi4gICVQIGFuZCAlZyB2YXJpYWJsZXMgIGFyZSAgcGVyc2lzdGVudCAgYWNyb3NzCisgICAgICAgdGhlIHVzdWFsIG9yZGVyLiAgVGhhdCAgaXMsICB0byAgZ2V0ICB4LTUgIG9uZSAgd291bGQgIHVzZQorICAgICAgICIlZ3glezV9JS0iLiAgIDxTVFJPTkc+JVA8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz4lZzwvU1RST05HPiB2YXJpYWJsZXMgYXJlIHBlcnNpc3RlbnQgYWNyb3NzCiAgICAgICAgZXNjYXBlLXN0cmluZyBldmFsdWF0aW9ucy4KIAogICAgICAgIENvbnNpZGVyIHRoZSBIUDI2NDUsIHdoaWNoLCB0byBnZXQgdG8gcm93IDMgYW5kIGNvbHVtbiAxMiwKLSAgICAgICBuZWVkcyB0byBiZSBzZW50IFxFJmFtcDthMTJjMDNZICBwYWRkZWQgIGZvciAgNiAgbWlsbGlzZWNvbmRzLgotICAgICAgIE5vdGUgIHRoYXQgIHRoZSAgb3JkZXIgb2YgdGhlIHJvd3MgYW5kIGNvbHVtbnMgaXMgaW52ZXJ0ZWQKLSAgICAgICBoZXJlLCBhbmQgdGhhdCB0aGUgcm93IGFuZCBjb2x1bW4gYXJlIHByaW50ZWQgYXMgdHdvICBkaWctCisgICAgICAgbmVlZHMgIHRvICBiZSAgc2VudCAgXEUmYW1wO2ExMmMwM1kgcGFkZGVkIGZvciA2IG1pbGxpc2Vjb25kcy4KKyAgICAgICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSByb3dzIGFuZCAgY29sdW1ucyAgaXMgIGludmVydGVkCisgICAgICAgaGVyZSwgIGFuZCB0aGF0IHRoZSByb3cgYW5kIGNvbHVtbiBhcmUgcHJpbnRlZCBhcyB0d28gZGlnLQogICAgICAgIGl0cy4gIFRodXMgaXRzIDxTVFJPTkc+Y3VwPC9TVFJPTkc+IGNhcGFiaWxpdHkgaXMgImN1cD02XEUmYW1wOyVwMiUyZGMlcDElMmRZIi4KIAogICAgICAgIFRoZSBNaWNyb3Rlcm0gQUNULUlWIG5lZWRzIHRoZSBjdXJyZW50IHJvdyBhbmQgY29sdW1uIHNlbnQKQEAgLTEzNTQsNyArMTQ1NSw3IEBACiAKICAgICAgICBBIGZpbmFsIGV4YW1wbGUgaXMgdGhlIExTSSBBRE0tM2EsIHdoaWNoIHVzZXMgcm93IGFuZCBjb2wtCiAgICAgICAgdW1uICBvZmZzZXQgIGJ5ICBhICBibGFuayAgY2hhcmFjdGVyLCAgdGh1cyAgImN1cD1cRT0lcDElJwotICAgICAgICclKyVjJXAyJScgICclKyVjIi4gICBBZnRlciBzZW5kaW5nIGBcRT0nLCB0aGlzIHB1c2hlcyB0aGUKKyAgICAgICAnJSslYyVwMiUnICAnJSslYyIuICAgQWZ0ZXIgc2VuZGluZyAiXEU9IiwgdGhpcyBwdXNoZXMgdGhlCiAgICAgICAgZmlyc3QgcGFyYW1ldGVyLCBwdXNoZXMgdGhlIEFTQ0lJIHZhbHVlIGZvciBhIHNwYWNlICAoMzIpLAogICAgICAgIGFkZHMgIHRoZW0gIChwdXNoaW5nICB0aGUgc3VtIG9uIHRoZSBzdGFjayBpbiBwbGFjZSBvZiB0aGUKICAgICAgICB0d28gcHJldmlvdXMgdmFsdWVzKSBhbmQgb3V0cHV0cyB0aGF0IHZhbHVlIGFzICBhICBjaGFyYWMtCkBAIC0xMzYyLDcgKzE0NjMsOCBAQAogICAgICAgIE1vcmUgY29tcGxleCBhcml0aG1ldGljIGlzIHBvc3NpYmxlIHVzaW5nIHRoZSBzdGFjay4KIAogCi0gICA8U1RST05HPkN1cnNvcjwvU1RST05HPiA8U1RST05HPk1vdGlvbnM8L1NUUk9ORz4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUN1cnNvci1Nb3Rpb25zIj5DdXJzb3IgTW90aW9uczwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgdGhlIHRlcm1pbmFsIGhhcyBhIGZhc3Qgd2F5IHRvIGhvbWUgdGhlIGN1cnNvciAodG8gdmVyeQogICAgICAgIHVwcGVyICBsZWZ0ICBjb3JuZXIgIG9mICBzY3JlZW4pIHRoZW4gdGhpcyBjYW4gYmUgZ2l2ZW4gYXMKICAgICAgICA8U1RST05HPmhvbWU8L1NUUk9ORz47IHNpbWlsYXJseSBhIGZhc3Qgd2F5IG9mIGdldHRpbmcgdG8gdGhlICBsb3dlciAgbGVmdC0KQEAgLTEzODAsMTIgKzE0ODIsMTIgQEAKICAgICAgICA8U1RST05HPmhwYTwvU1RST05HPiAoaG9yaXpvbnRhbCBwb3NpdGlvbiBhYnNvbHV0ZSkgYW5kIDxTVFJPTkc+dnBhPC9TVFJPTkc+ICh2ZXJ0aWNhbCBwb3NpLQogICAgICAgIHRpb24gYWJzb2x1dGUpLiAgU29tZXRpbWVzIHRoZXNlIGFyZSBzaG9ydGVyIHRoYW4gdGhlIG1vcmUKICAgICAgICBnZW5lcmFsIHR3byBwYXJhbWV0ZXIgc2VxdWVuY2UgKGFzIHdpdGggIHRoZSAgaHAyNjQ1KSAgYW5kCi0gICAgICAgY2FuICAgYmUgICB1c2VkICBpbiAgcHJlZmVyZW5jZSAgdG8gIDxTVFJPTkc+Y3VwPC9TVFJPTkc+LiAgIElmICB0aGVyZSAgYXJlCi0gICAgICAgcGFyYW1ldGVyaXplZCBsb2NhbCBtb3Rpb25zIChlLmcuLCBtb3ZlIDxFTT5uPC9FTT4gIHNwYWNlcyAgdG8gIHRoZQotICAgICAgIHJpZ2h0KSB0aGVzZSBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5jdWQ8L1NUUk9ORz4sIDxTVFJPTkc+Y3ViPC9TVFJPTkc+LCA8U1RST05HPmN1ZjwvU1RST05HPiwgYW5kIDxTVFJPTkc+Y3V1PC9TVFJPTkc+IHdpdGggYQotICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgIGluZGljYXRpbmcgIGhvdyAgbWFueSAgc3BhY2VzICB0byAgbW92ZS4KLSAgICAgICBUaGVzZSAgYXJlICBwcmltYXJpbHkgdXNlZnVsIGlmIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCBoYXZlCi0gICAgICAgPFNUUk9ORz5jdXA8L1NUUk9ORz4sIHN1Y2ggYXMgdGhlIFRFS1RST05JWCA0MDI1LgorICAgICAgIGNhbiBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gPFNUUk9ORz5jdXA8L1NUUk9ORz4uICBJZiB0aGVyZSBhcmUgcGFyYW1ldGVyLQorICAgICAgIGl6ZWQgbG9jYWwgbW90aW9ucyAoZS5nLiwgbW92ZSAgPEVNPm48L0VNPiAgc3BhY2VzICB0byAgdGhlICByaWdodCkKKyAgICAgICB0aGVzZSBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5jdWQ8L1NUUk9ORz4sIDxTVFJPTkc+Y3ViPC9TVFJPTkc+LCA8U1RST05HPmN1ZjwvU1RST05HPiwgYW5kIDxTVFJPTkc+Y3V1PC9TVFJPTkc+IHdpdGggYSBzaW5nbGUKKyAgICAgICBwYXJhbWV0ZXIgaW5kaWNhdGluZyBob3cgbWFueSBzcGFjZXMgdG8gbW92ZS4gICBUaGVzZSAgYXJlCisgICAgICAgcHJpbWFyaWx5ICB1c2VmdWwgIGlmIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCBoYXZlIDxTVFJPTkc+Y3VwPC9TVFJPTkc+LCBzdWNoCisgICAgICAgYXMgdGhlIFRFS1RST05JWCA0MDI1LgogCiAgICAgICAgSWYgdGhlIHRlcm1pbmFsIG5lZWRzIHRvIGJlIGluIGEgc3BlY2lhbCBtb2RlIHdoZW4gcnVubmluZwogICAgICAgIGEgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlc2UgY2FwYWJpbGl0aWVzLCB0aGUgY29kZXMgdG8gZW50ZXIKQEAgLTE0MDIsNyArMTUwNCw4IEBACiAgICAgICAgPFNUUk9ORz5ybWN1cDwvU1RST05HPiksIHNwZWNpZnkgPFNUUk9ORz5ucnJtYzwvU1RST05HPi4KIAogCi0gICA8U1RST05HPkFyZWE8L1NUUk9ORz4gPFNUUk9ORz5DbGVhcnM8L1NUUk9ORz4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUFyZWEtQ2xlYXJzIj5BcmVhIENsZWFyczwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgdGhlIHRlcm1pbmFsIGNhbiBjbGVhciBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZQogICAgICAgIGVuZCAgb2YgIHRoZSAgbGluZSwgIGxlYXZpbmcgIHRoZSBjdXJzb3Igd2hlcmUgaXQgaXMsIHRoaXMKICAgICAgICBzaG91bGQgYmUgZ2l2ZW4gYXMgPFNUUk9ORz5lbDwvU1RST05HPi4gIElmIHRoZSB0ZXJtaW5hbCBjYW4gY2xlYXIgZnJvbSB0aGUKQEAgLTE0MTUsNyArMTUxOCw4IEBACiAgICAgICAgbnVtYmVyIG9mIGxpbmVzLCBpZiBhIHRydWUgPFNUUk9ORz5lZDwvU1RST05HPiBpcyBub3QgYXZhaWxhYmxlLikKIAogCi0gICA8U1RST05HPkluc2VydC9kZWxldGU8L1NUUk9ORz4gPFNUUk9ORz5saW5lPC9TVFJPTkc+IDxTVFJPTkc+YW5kPC9TVFJPTkc+IDxTVFJPTkc+dmVydGljYWw8L1NUUk9ORz4gPFNUUk9ORz5tb3Rpb25zPC9TVFJPTkc+Cis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1JbnNlcnRfZGVsZXRlLWxpbmUtYW5kLXZlcnRpY2FsLW1vdGlvbnMiPkluc2VydC9kZWxldGUgbGluZSBhbmQgdmVydGljYWwgbW90aW9uczwvYT48L0gzPjxQUkU+CiAgICAgICAgSWYgIHRoZSB0ZXJtaW5hbCBjYW4gb3BlbiBhIG5ldyBibGFuayBsaW5lIGJlZm9yZSB0aGUgbGluZQogICAgICAgIHdoZXJlIHRoZSBjdXJzb3IgaXMsIHRoaXMgc2hvdWxkIGJlIGdpdmVuIGFzIDxTVFJPTkc+aWwxPC9TVFJPTkc+OyB0aGlzICBpcwogICAgICAgIGRvbmUgIG9ubHkgIGZyb20gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIGEgbGluZS4gIFRoZSBjdXJzb3IKQEAgLTE0NzgsNyArMTU4Miw4IEBACiAgICAgICAgYnJpbmcgZG93biBub24tYmxhbmsgbGluZXMuCiAKIAotICAgPFNUUk9ORz5JbnNlcnQvRGVsZXRlPC9TVFJPTkc+IDxTVFJPTkc+Q2hhcmFjdGVyPC9TVFJPTkc+Cis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1JbnNlcnRfRGVsZXRlLUNoYXJhY3RlciI+SW5zZXJ0L0RlbGV0ZSBDaGFyYWN0ZXI8L2E+PC9IMz48UFJFPgogICAgICAgIFRoZXJlIGFyZSB0d28gYmFzaWMga2luZHMgb2YgIGludGVsbGlnZW50ICB0ZXJtaW5hbHMgIHdpdGgKICAgICAgICByZXNwZWN0ICB0byBpbnNlcnQvZGVsZXRlIGNoYXJhY3RlciB3aGljaCBjYW4gYmUgZGVzY3JpYmVkCiAgICAgICAgdXNpbmcgPEVNPnRlcm1pbmZvLjwvRU0+ICBUaGUgbW9zdCBjb21tb24gIGluc2VydC9kZWxldGUgIGNoYXJhY3RlcgpAQCAtMTQ4OCwzNCArMTU5MywzNiBAQAogICAgICAgIEVsbWVyIE93bCwgbWFrZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gIHR5cGVkICBhbmQgIHVudHlwZWQKICAgICAgICBibGFua3MgIG9uICB0aGUgIHNjcmVlbiwgc2hpZnRpbmcgdXBvbiBhbiBpbnNlcnQgb3IgZGVsZXRlCiAgICAgICAgb25seSB0byBhbiB1bnR5cGVkIGJsYW5rIG9uIHRoZSAgc2NyZWVuICB3aGljaCAgaXMgIGVpdGhlcgotICAgICAgIGVsaW1pbmF0ZWQsICBvciAgZXhwYW5kZWQgIHRvIHR3byB1bnR5cGVkIGJsYW5rcy4gIFlvdSBjYW4KLSAgICAgICBkZXRlcm1pbmUgdGhlIGtpbmQgb2YgdGVybWluYWwgeW91IGhhdmUgIGJ5ICBjbGVhcmluZyAgdGhlCi0gICAgICAgc2NyZWVuICBhbmQgIHRoZW4gdHlwaW5nIHRleHQgc2VwYXJhdGVkIGJ5IGN1cnNvciBtb3Rpb25zLgotICAgICAgIFR5cGUgImFiYyAgICBkZWYiIHVzaW5nIGxvY2FsIGN1cnNvciBtb3Rpb25zIChub3QgIHNwYWNlcykKLSAgICAgICBiZXR3ZWVuIHRoZSAiYWJjIiBhbmQgdGhlICJkZWYiLiAgVGhlbiBwb3NpdGlvbiB0aGUgY3Vyc29yCi0gICAgICAgYmVmb3JlIHRoZSAiYWJjIiBhbmQgcHV0IHRoZSB0ZXJtaW5hbCBpbiBpbnNlcnQgbW9kZS4gICBJZgotICAgICAgIHR5cGluZyAgY2hhcmFjdGVycyAgY2F1c2VzICB0aGUgIHJlc3Qgb2YgdGhlIGxpbmUgdG8gc2hpZnQKLSAgICAgICByaWdpZGx5IGFuZCBjaGFyYWN0ZXJzIHRvIGZhbGwgb2ZmIHRoZSBlbmQsIHRoZW4geW91ciB0ZXItCi0gICAgICAgbWluYWwgIGRvZXMgIG5vdCAgZGlzdGluZ3Vpc2ggIGJldHdlZW4gIGJsYW5rcyBhbmQgdW50eXBlZAotICAgICAgIHBvc2l0aW9ucy4gIElmIHRoZSAiYWJjIiBzaGlmdHMgb3ZlciB0byAgdGhlICAiZGVmIiAgd2hpY2gKLSAgICAgICB0aGVuICBtb3ZlIHRvZ2V0aGVyIGFyb3VuZCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUgYW5kCi0gICAgICAgb250byB0aGUgbmV4dCBhcyB5b3UgaW5zZXJ0LCB5b3UgaGF2ZSB0aGUgc2Vjb25kICB0eXBlICBvZgotICAgICAgIHRlcm1pbmFsLCAgYW5kIHNob3VsZCBnaXZlIHRoZSBjYXBhYmlsaXR5IDxTVFJPTkc+aW48L1NUUk9ORz4sIHdoaWNoIHN0YW5kcwotICAgICAgIGZvciAiaW5zZXJ0IG51bGwiLiAgV2hpbGUgdGhlc2UgYXJlIHR3byBsb2dpY2FsbHkgc2VwYXJhdGUKLSAgICAgICBhdHRyaWJ1dGVzICAob25lICBsaW5lICB2ZXJzdXMgbXVsdGktbGluZSBpbnNlcnQgbW9kZSwgYW5kCi0gICAgICAgc3BlY2lhbCB0cmVhdG1lbnQgb2YgdW50eXBlZCBzcGFjZXMpIHdlIGhhdmUgc2VlbiBubyAgdGVyLQotICAgICAgIG1pbmFscyB3aG9zZSBpbnNlcnQgbW9kZSBjYW5ub3QgYmUgZGVzY3JpYmVkIHdpdGggdGhlIHNpbi0KLSAgICAgICBnbGUgYXR0cmlidXRlLgorICAgICAgIGVsaW1pbmF0ZWQsIG9yIGV4cGFuZGVkIHRvIHR3byB1bnR5cGVkIGJsYW5rcy4KKworICAgICAgIFlvdSAgY2FuIGRldGVybWluZSB0aGUga2luZCBvZiB0ZXJtaW5hbCB5b3UgaGF2ZSBieSBjbGVhci0KKyAgICAgICBpbmcgdGhlIHNjcmVlbiBhbmQgdGhlbiB0eXBpbmcgdGV4dCAgc2VwYXJhdGVkICBieSAgY3Vyc29yCisgICAgICAgbW90aW9ucy4gICBUeXBlICAiYWJjICAgIGRlZiIgIHVzaW5nICBsb2NhbCBjdXJzb3IgbW90aW9ucworICAgICAgIChub3Qgc3BhY2VzKSBiZXR3ZWVuIHRoZSAiYWJjIiBhbmQgdGhlICJkZWYiLiAgVGhlbiAgcG9zaS0KKyAgICAgICB0aW9uICB0aGUgIGN1cnNvciBiZWZvcmUgdGhlICJhYmMiIGFuZCBwdXQgdGhlIHRlcm1pbmFsIGluCisgICAgICAgaW5zZXJ0IG1vZGUuICBJZiB0eXBpbmcgY2hhcmFjdGVycyBjYXVzZXMgdGhlIHJlc3Qgb2YgIHRoZQorICAgICAgIGxpbmUgIHRvIHNoaWZ0IHJpZ2lkbHkgYW5kIGNoYXJhY3RlcnMgdG8gZmFsbCBvZmYgdGhlIGVuZCwKKyAgICAgICB0aGVuIHlvdXIgdGVybWluYWwgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBibGFua3MgYW5kCisgICAgICAgdW50eXBlZCAgcG9zaXRpb25zLiAgSWYgdGhlICJhYmMiIHNoaWZ0cyBvdmVyIHRvIHRoZSAiZGVmIgorICAgICAgIHdoaWNoIHRoZW4gbW92ZSB0b2dldGhlciBhcm91bmQgdGhlICBlbmQgIG9mICB0aGUgIGN1cnJlbnQKKyAgICAgICBsaW5lICBhbmQgb250byB0aGUgbmV4dCBhcyB5b3UgaW5zZXJ0LCB5b3UgaGF2ZSB0aGUgc2Vjb25kCisgICAgICAgdHlwZSBvZiB0ZXJtaW5hbCwgYW5kIHNob3VsZCBnaXZlIHRoZSBjYXBhYmlsaXR5IDxTVFJPTkc+aW48L1NUUk9ORz4sIHdoaWNoCisgICAgICAgc3RhbmRzIGZvciAiaW5zZXJ0IG51bGwiLgorCisgICAgICAgV2hpbGUgIHRoZXNlICBhcmUgIHR3byAgbG9naWNhbGx5IHNlcGFyYXRlIGF0dHJpYnV0ZXMgKG9uZQorICAgICAgIGxpbmUgdmVyc3VzIG11bHRpLWxpbmUgaW5zZXJ0IG1vZGUsIGFuZCBzcGVjaWFsICB0cmVhdG1lbnQKKyAgICAgICBvZiAgdW50eXBlZCBzcGFjZXMpIHdlIGhhdmUgc2VlbiBubyB0ZXJtaW5hbHMgd2hvc2UgaW5zZXJ0CisgICAgICAgbW9kZSBjYW5ub3QgYmUgZGVzY3JpYmVkIHdpdGggdGhlIHNpbmdsZSBhdHRyaWJ1dGUuCiAKICAgICAgICBUZXJtaW5mbyBjYW4gZGVzY3JpYmUgYm90aCB0ZXJtaW5hbHMgd2hpY2ggaGF2ZSBhbiAgaW5zZXJ0CiAgICAgICAgbW9kZSwgYW5kIHRlcm1pbmFscyB3aGljaCBzZW5kIGEgc2ltcGxlIHNlcXVlbmNlIHRvIG9wZW4gYQogICAgICAgIGJsYW5rIHBvc2l0aW9uIG9uIHRoZSBjdXJyZW50ICBsaW5lLiAgIEdpdmUgIGFzICA8U1RST05HPnNtaXI8L1NUUk9ORz4gIHRoZQogICAgICAgIHNlcXVlbmNlICB0byAgZ2V0ICBpbnRvICBpbnNlcnQgIG1vZGUuICAgR2l2ZSAgYXMgPFNUUk9ORz5ybWlyPC9TVFJPTkc+IHRoZQogICAgICAgIHNlcXVlbmNlIHRvIGxlYXZlIGluc2VydCAgbW9kZS4gICBOb3cgIGdpdmUgIGFzICA8U1RST05HPmljaDE8L1NUUk9ORz4gIGFueQotICAgICAgIHNlcXVlbmNlICBuZWVkZWQgIHRvICBiZSAgc2VudCAganVzdCAgYmVmb3JlICBzZW5kaW5nICB0aGUKLSAgICAgICBjaGFyYWN0ZXIgdG8gYmUgaW5zZXJ0ZWQuICAgTW9zdCAgdGVybWluYWxzICB3aXRoICBhICB0cnVlCi0gICAgICAgaW5zZXJ0ICBtb2RlICB3aWxsICBub3QgIGdpdmUgPFNUUk9ORz5pY2gxPC9TVFJPTkc+OyB0ZXJtaW5hbHMgd2hpY2ggc2VuZCBhCi0gICAgICAgc2VxdWVuY2UgdG8gb3BlbiBhIHNjcmVlbiBwb3NpdGlvbiBzaG91bGQgZ2l2ZSBpdCBoZXJlLgorICAgICAgIHNlcXVlbmNlIG5lZWRlZCB0byBiZSBzZW50IGp1c3QgYmVmb3JlIHNlbmRpbmcgdGhlIGNoYXJhYy0KKyAgICAgICB0ZXIgdG8gYmUgaW5zZXJ0ZWQuICBNb3N0IHRlcm1pbmFscyAgd2l0aCAgYSAgdHJ1ZSAgaW5zZXJ0CisgICAgICAgbW9kZSAgd2lsbCAgbm90IGdpdmUgPFNUUk9ORz5pY2gxPC9TVFJPTkc+OyB0ZXJtaW5hbHMgd2hpY2ggc2VuZCBhIHNlcXVlbmNlCisgICAgICAgdG8gb3BlbiBhIHNjcmVlbiBwb3NpdGlvbiBzaG91bGQgZ2l2ZSBpdCBoZXJlLgogCiAgICAgICAgSWYgeW91ciB0ZXJtaW5hbCBoYXMgYm90aCwgaW5zZXJ0IG1vZGUgaXMgdXN1YWxseSAgcHJlZmVyLQogICAgICAgIGFibGUgIHRvICA8U1RST05HPmljaDE8L1NUUk9ORz4uICAgVGVjaG5pY2FsbHksICB5b3UgIHNob3VsZCAgbm90IGdpdmUgYm90aApAQCAtMTUzNSwxNSArMTY0MiwxNSBAQAogICAgICAgIG1pbGxpc2Vjb25kcyAgaW4gPFNUUk9ORz5pcDwvU1RST05HPiAoYSBzdHJpbmcgb3B0aW9uKS4gIEFueSBvdGhlciBzZXF1ZW5jZQogICAgICAgIHdoaWNoIG1heSBuZWVkIHRvIGJlIHNlbnQgYWZ0ZXIgIGFuICBpbnNlcnQgIG9mICBhICBzaW5nbGUKICAgICAgICBjaGFyYWN0ZXIgbWF5IGFsc28gYmUgZ2l2ZW4gaW4gPFNUUk9ORz5pcDwvU1RST05HPi4gIElmIHlvdXIgdGVybWluYWwgbmVlZHMKLSAgICAgICBib3RoIHRvIGJlIHBsYWNlZCBpbnRvIGFuIGBpbnNlcnQgbW9kZScgYW5kIGEgc3BlY2lhbCBjb2RlCisgICAgICAgYm90aCB0byBiZSBwbGFjZWQgaW50byBhbiAiaW5zZXJ0IG1vZGUiIGFuZCBhIHNwZWNpYWwgY29kZQogICAgICAgIHRvICBwcmVjZWRlICBlYWNoICBpbnNlcnRlZCBjaGFyYWN0ZXIsIHRoZW4gYm90aCA8U1RST05HPnNtaXI8L1NUUk9ORz4vPFNUUk9ORz5ybWlyPC9TVFJPTkc+CiAgICAgICAgYW5kIDxTVFJPTkc+aWNoMTwvU1RST05HPiBjYW4gYmUgZ2l2ZW4sIGFuZCBib3RoIHdpbGwgIGJlICB1c2VkLiAgIFRoZSAgPFNUUk9ORz5pY2g8L1NUUk9ORz4KICAgICAgICBjYXBhYmlsaXR5LCB3aXRoIG9uZSBwYXJhbWV0ZXIsIDxFTT5uPC9FTT4sIHdpbGwgcmVwZWF0IHRoZSBlZmZlY3RzCiAgICAgICAgb2YgPFNUUk9ORz5pY2gxPC9TVFJPTkc+IDxFTT5uPC9FTT4gdGltZXMuCiAKICAgICAgICBJZiBwYWRkaW5nIGlzIG5lY2Vzc2FyeSBiZXR3ZWVuIGNoYXJhY3RlcnMgdHlwZWQgd2hpbGUgbm90Ci0gICAgICAgaW4gIGluc2VydCAgbW9kZSwgIGdpdmUgIHRoaXMgIGFzIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcwotICAgICAgIHBhZGRpbmcgaW4gPFNUUk9ORz5ybXA8L1NUUk9ORz4uCisgICAgICAgaW4gaW5zZXJ0IG1vZGUsIGdpdmUgdGhpcyBhcyBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgcGFkLQorICAgICAgIGRpbmcgaW4gPFNUUk9ORz5ybXA8L1NUUk9ORz4uCiAKICAgICAgICBJdCBpcyBvY2Nhc2lvbmFsbHkgIG5lY2Vzc2FyeSAgdG8gIG1vdmUgIGFyb3VuZCAgd2hpbGUgIGluCiAgICAgICAgaW5zZXJ0ICBtb2RlICB0byBkZWxldGUgY2hhcmFjdGVycyBvbiB0aGUgc2FtZSBsaW5lIChlLmcuLApAQCAtMTU2NSw3ICsxNjcyLDggQEAKICAgICAgICB3aXRoIG9uZSBwYXJhbWV0ZXIuCiAKIAotICAgPFNUUk9ORz5IaWdobGlnaHRpbmcsPC9TVFJPTkc+IDxTVFJPTkc+VW5kZXJsaW5pbmcsPC9TVFJPTkc+IDxTVFJPTkc+YW5kPC9TVFJPTkc+IDxTVFJPTkc+VmlzaWJsZTwvU1RST05HPiA8U1RST05HPkJlbGxzPC9TVFJPTkc+Cis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1IaWdobGlnaHRpbmdfLVVuZGVybGluaW5nXy1hbmQtVmlzaWJsZS1CZWxscyI+SGlnaGxpZ2h0aW5nLCBVbmRlcmxpbmluZywgYW5kIFZpc2libGUgQmVsbHM8L2E+PC9IMz48UFJFPgogICAgICAgIElmICB5b3VyICB0ZXJtaW5hbCAgaGFzICBvbmUgIG9yICBtb3JlICBraW5kcyAgb2YgIGRpc3BsYXkKICAgICAgICBhdHRyaWJ1dGVzLCB0aGVzZSBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBudW1iZXIgIG9mICBkaWYtCiAgICAgICAgZmVyZW50IHdheXMuICBZb3Ugc2hvdWxkIGNob29zZSBvbmUgZGlzcGxheSBmb3JtIGFzIDxFTT5zdGFuZC08L0VNPgpAQCAtMTU3NSwyMDUgKzE2ODMsMjM0IEBACiAgICAgICAgcGx1cyAgaGFsZi1icmlnaHQgIGlzICBnb29kLCBvciByZXZlcnNlIHZpZGVvIGFsb25lLikgIFRoZQogICAgICAgIHNlcXVlbmNlcyB0byBlbnRlciBhbmQgZXhpdCBzdGFuZG91dCAgbW9kZSAgYXJlICBnaXZlbiAgYXMKICAgICAgICA8U1RST05HPnNtc288L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5ybXNvPC9TVFJPTkc+LCByZXNwZWN0aXZlbHkuICBJZiB0aGUgY29kZSB0byBjaGFuZ2UgaW50bwotICAgICAgIG9yIG91dCBvZiBzdGFuZG91dCBtb2RlICBsZWF2ZXMgIG9uZSAgb3IgIGV2ZW4gIHR3byAgYmxhbmsKLSAgICAgICBzcGFjZXMgIG9uIHRoZSBzY3JlZW4sIGFzIHRoZSBUVkkgOTEyIGFuZCBUZWxlcmF5IDEwNjEgZG8sCisgICAgICAgb3Igb3V0IG9mIHN0YW5kb3V0IG1vZGUgbGVhdmVzIG9uZSBvciBldmVuIHR3byBibGFuayAgc3BhLQorICAgICAgIGNlcyAgb24gIHRoZSAgc2NyZWVuLCAgYXMgdGhlIFRWSSA5MTIgYW5kIFRlbGVyYXkgMTA2MSBkbywKICAgICAgICB0aGVuIDxTVFJPTkc+eG1jPC9TVFJPTkc+IHNob3VsZCBiZSBnaXZlbiB0byB0ZWxsIGhvdyBtYW55IHNwYWNlcyBhcmUgbGVmdC4KIAotICAgICAgIENvZGVzICB0byAgYmVnaW4gIHVuZGVybGluaW5nICBhbmQgIGVuZCB1bmRlcmxpbmluZyBjYW4gYmUKLSAgICAgICBnaXZlbiBhcyA8U1RST05HPnNtdWw8L1NUUk9ORz4gYW5kIDxTVFJPTkc+cm11bDwvU1RST05HPiByZXNwZWN0aXZlbHkuICBJZiB0aGUgdGVybWluYWwgIGhhcwotICAgICAgIGEgIGNvZGUgIHRvICB1bmRlcmxpbmUgIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmQgbW92ZSB0aGUKKyAgICAgICBDb2RlcyB0byBiZWdpbiB1bmRlcmxpbmluZyAgYW5kICBlbmQgIHVuZGVybGluaW5nICBjYW4gIGJlCisgICAgICAgZ2l2ZW4gIGFzIDxTVFJPTkc+c211bDwvU1RST05HPiBhbmQgPFNUUk9ORz5ybXVsPC9TVFJPTkc+IHJlc3BlY3RpdmVseS4gIElmIHRoZSB0ZXJtaW5hbCBoYXMKKyAgICAgICBhIGNvZGUgdG8gdW5kZXJsaW5lIHRoZSBjdXJyZW50ICBjaGFyYWN0ZXIgIGFuZCAgbW92ZSAgdGhlCiAgICAgICAgY3Vyc29yIG9uZSBzcGFjZSB0byB0aGUgcmlnaHQsIHN1Y2ggYXMgdGhlIE1pY3JvdGVybSBNaW1lLAogICAgICAgIHRoaXMgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+dWM8L1NUUk9ORz4uCiAKLSAgICAgICBPdGhlciAgY2FwYWJpbGl0aWVzICB0byAgZW50ZXIgIHZhcmlvdXMgaGlnaGxpZ2h0aW5nIG1vZGVzCi0gICAgICAgaW5jbHVkZSA8U1RST05HPmJsaW5rPC9TVFJPTkc+IChibGlua2luZykgPFNUUk9ORz5ib2xkPC9TVFJPTkc+IChib2xkIG9yIGV4dHJhICBicmlnaHQpICA8U1RST05HPmRpbTwvU1RST05HPgotICAgICAgIChkaW0gIG9yICBoYWxmLWJyaWdodCkgIDxTVFJPTkc+aW52aXM8L1NUUk9ORz4gKGJsYW5raW5nIG9yIGludmlzaWJsZSB0ZXh0KQotICAgICAgIDxTVFJPTkc+cHJvdDwvU1RST05HPiAocHJvdGVjdGVkKSA8U1RST05HPnJldjwvU1RST05HPiAocmV2ZXJzZSB2aWRlbykgPFNUUk9ORz5zZ3IwPC9TVFJPTkc+ICAodHVybiAgb2ZmICA8RU0+YWxsPC9FTT4KLSAgICAgICBhdHRyaWJ1dGUgIG1vZGVzKSAgPFNUUk9ORz5zbWFjczwvU1RST05HPiAgKGVudGVyICBhbHRlcm5hdGUgIGNoYXJhY3RlciBzZXQKLSAgICAgICBtb2RlKSBhbmQgIDxTVFJPTkc+cm1hY3M8L1NUUk9ORz4gIChleGl0ICBhbHRlcm5hdGUgIGNoYXJhY3RlciAgc2V0ICBtb2RlKS4KLSAgICAgICBUdXJuaW5nICBvbiAgYW55IG9mIHRoZXNlIG1vZGVzIHNpbmdseSBtYXkgb3IgbWF5IG5vdCB0dXJuCisgICAgICAgT3RoZXIgY2FwYWJpbGl0aWVzIHRvICBlbnRlciAgdmFyaW91cyAgaGlnaGxpZ2h0aW5nICBtb2RlcworICAgICAgIGluY2x1ZGUgIDxTVFJPTkc+Ymxpbms8L1NUUk9ORz4gIChibGlua2luZykgPFNUUk9ORz5ib2xkPC9TVFJPTkc+IChib2xkIG9yIGV4dHJhIGJyaWdodCkgPFNUUk9ORz5kaW08L1NUUk9ORz4KKyAgICAgICAoZGltIG9yIGhhbGYtYnJpZ2h0KSA8U1RST05HPmludmlzPC9TVFJPTkc+IChibGFua2luZyAgb3IgIGludmlzaWJsZSAgdGV4dCkKKyAgICAgICA8U1RST05HPnByb3Q8L1NUUk9ORz4gIChwcm90ZWN0ZWQpICA8U1RST05HPnJldjwvU1RST05HPiAgKHJldmVyc2UgdmlkZW8pIDxTVFJPTkc+c2dyMDwvU1RST05HPiAodHVybiBvZmYgPEVNPmFsbDwvRU0+CisgICAgICAgYXR0cmlidXRlIG1vZGVzKSAgPFNUUk9ORz5zbWFjczwvU1RST05HPiAgKGVudGVyICBhbHRlcm5hdGUgIGNoYXJhY3RlciAgc2V0CisgICAgICAgbW9kZSkgIGFuZCAgPFNUUk9ORz5ybWFjczwvU1RST05HPiAgKGV4aXQgIGFsdGVybmF0ZSAgY2hhcmFjdGVyICBzZXQgbW9kZSkuCisgICAgICAgVHVybmluZyBvbiBhbnkgb2YgdGhlc2UgbW9kZXMgc2luZ2x5IG1heSBvciBtYXkgIG5vdCAgdHVybgogICAgICAgIG9mZiBvdGhlciBtb2Rlcy4KIAotICAgICAgIElmIHRoZXJlIGlzIGEgc2VxdWVuY2UgdG8gc2V0ICBhcmJpdHJhcnkgIGNvbWJpbmF0aW9ucyAgb2YKLSAgICAgICBtb2RlcywgIHRoaXMgc2hvdWxkIGJlIGdpdmVuIGFzIDxTVFJPTkc+c2dyPC9TVFJPTkc+IChzZXQgYXR0cmlidXRlcyksIHRhay0KLSAgICAgICBpbmcgOSBwYXJhbWV0ZXJzLiAgRWFjaCBwYXJhbWV0ZXIgaXMgZWl0aGVyIDAgb3IgIG5vbnplcm8sCisgICAgICAgSWYgIHRoZXJlICBpcyAgYSBzZXF1ZW5jZSB0byBzZXQgYXJiaXRyYXJ5IGNvbWJpbmF0aW9ucyBvZgorICAgICAgIG1vZGVzLCB0aGlzIHNob3VsZCBiZSBnaXZlbiBhcyA8U1RST05HPnNncjwvU1RST05HPiAoc2V0IGF0dHJpYnV0ZXMpLCAgdGFrLQorICAgICAgIGluZyAgOSBwYXJhbWV0ZXJzLiAgRWFjaCBwYXJhbWV0ZXIgaXMgZWl0aGVyIDAgb3Igbm9uemVybywKICAgICAgICBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgaXMgb24gb3Igb2ZmLiAgVGhlIDkgcGFyYW0tCi0gICAgICAgZXRlcnMgYXJlLCBpbiBvcmRlcjogc3RhbmRvdXQsIHVuZGVybGluZSwgcmV2ZXJzZSwgIGJsaW5rLAotICAgICAgIGRpbSwgIGJvbGQsICBibGFuaywgcHJvdGVjdCwgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQuICBOb3QKLSAgICAgICBhbGwgbW9kZXMgbmVlZCBiZSBzdXBwb3J0ZWQgYnkgPFNUUk9ORz5zZ3I8L1NUUk9ORz4sIG9ubHkgdGhvc2UgIGZvciAgd2hpY2gKKyAgICAgICBldGVycyAgYXJlLCBpbiBvcmRlcjogc3RhbmRvdXQsIHVuZGVybGluZSwgcmV2ZXJzZSwgYmxpbmssCisgICAgICAgZGltLCBib2xkLCBibGFuaywgcHJvdGVjdCwgYWx0ZXJuYXRlIGNoYXJhY3RlciAgc2V0LiAgIE5vdAorICAgICAgIGFsbCAgbW9kZXMgIG5lZWQgYmUgc3VwcG9ydGVkIGJ5IDxTVFJPTkc+c2dyPC9TVFJPTkc+LCBvbmx5IHRob3NlIGZvciB3aGljaAogICAgICAgIGNvcnJlc3BvbmRpbmcgc2VwYXJhdGUgYXR0cmlidXRlIGNvbW1hbmRzIGV4aXN0LgogCiAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBERUMgdnQyMjAgc3VwcG9ydHMgbW9zdCBvZiB0aGUgbW9kZXM6CiAKKyAgICAgICAgPFNUUk9ORz50cGFybTwvU1RST05HPiA8U1RST05HPnBhcmFtZXRlcjwvU1RST05HPiAgICAgIDxTVFJPTkc+YXR0cmlidXRlPC9TVFJPTkc+ICAgICAgICA8U1RST05HPmVzY2FwZTwvU1RST05HPiA8U1RST05HPnNlcXVlbmNlPC9TVFJPTkc+CiAKLSAgICAgICAgICAgPFNUUk9ORz50cGFybTwvU1RST05HPiA8U1RST05HPnBhcmFtZXRlcjwvU1RST05HPiAgIDxTVFJPTkc+YXR0cmlidXRlPC9TVFJPTkc+ICAgIDxTVFJPTkc+ZXNjYXBlPC9TVFJPTkc+IDxTVFJPTkc+c2VxdWVuY2U8L1NUUk9ORz4KKyAgICAgICAgbm9uZSAgICAgICAgICAgICAgICAgbm9uZSAgICAgICAgICAgICBcRVswbQorICAgICAgICBwMSAgICAgICAgICAgICAgICAgICBzdGFuZG91dCAgICAgICAgIFxFWzA7MTs3bQorICAgICAgICBwMiAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgICAgICAgIFxFWzA7NG0KKyAgICAgICAgcDMgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSAgICAgICAgICBcRVswOzdtCisgICAgICAgIHA0ICAgICAgICAgICAgICAgICAgIGJsaW5rICAgICAgICAgICAgXEVbMDs1bQorICAgICAgICBwNSAgICAgICAgICAgICAgICAgICBkaW0gICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUKKyAgICAgICAgcDYgICAgICAgICAgICAgICAgICAgYm9sZCAgICAgICAgICAgICBcRVswOzFtCisgICAgICAgIHA3ICAgICAgICAgICAgICAgICAgIGludmlzICAgICAgICAgICAgXEVbMDs4bQorICAgICAgICBwOCAgICAgICAgICAgICAgICAgICBwcm90ZWN0ICAgICAgICAgIG5vdCB1c2VkCisgICAgICAgIHA5ICAgICAgICAgICAgICAgICAgIGFsdGNoYXJzZXQgICAgICAgXk8gKG9mZikgXk4gKG9uKQogCi0gICAgICAgICAgIG5vbmUgICAgICAgICAgICAgIG5vbmUgICAgICAgICBcRVswbQotICAgICAgICAgICBwMSAgICAgICAgICAgICAgICBzdGFuZG91dCAgICAgXEVbMDsxOzdtCi0gICAgICAgICAgIHAyICAgICAgICAgICAgICAgIHVuZGVybGluZSAgICBcRVswOzRtCi0gICAgICAgICAgIHAzICAgICAgICAgICAgICAgIHJldmVyc2UgICAgICBcRVswOzdtCi0gICAgICAgICAgIHA0ICAgICAgICAgICAgICAgIGJsaW5rICAgICAgICBcRVswOzVtCi0gICAgICAgICAgIHA1ICAgICAgICAgICAgICAgIGRpbSAgICAgICAgICBub3QgYXZhaWxhYmxlCi0gICAgICAgICAgIHA2ICAgICAgICAgICAgICAgIGJvbGQgICAgICAgICBcRVswOzFtCi0gICAgICAgICAgIHA3ICAgICAgICAgICAgICAgIGludmlzICAgICAgICBcRVswOzhtCi0gICAgICAgICAgIHA4ICAgICAgICAgICAgICAgIHByb3RlY3QgICAgICBub3QgdXNlZAotICAgICAgICAgICBwOSAgICAgICAgICAgICAgICBhbHRjaGFyc2V0ICAgXk8gKG9mZikgXk4gKG9uKQotCi0gICAgICAgV2UgIGJlZ2luIGVhY2ggZXNjYXBlIHNlcXVlbmNlIGJ5IHR1cm5pbmcgb2ZmIGFueSBleGlzdGluZwotICAgICAgIG1vZGVzLCBzaW5jZSB0aGVyZSBpcyBubyBxdWljayB3YXkgIHRvICBkZXRlcm1pbmUgIHdoZXRoZXIKKyAgICAgICBXZSBiZWdpbiBlYWNoIGVzY2FwZSBzZXF1ZW5jZSBieSB0dXJuaW5nIG9mZiBhbnkgIGV4aXN0aW5nCisgICAgICAgbW9kZXMsICBzaW5jZSAgdGhlcmUgIGlzIG5vIHF1aWNrIHdheSB0byBkZXRlcm1pbmUgd2hldGhlcgogICAgICAgIHRoZXkgYXJlIGFjdGl2ZS4gIFN0YW5kb3V0IGlzIHNldCB1cCB0byBiZSB0aGUgY29tYmluYXRpb24KLSAgICAgICBvZiByZXZlcnNlIGFuZCBib2xkLiAgVGhlIHZ0MjIwICB0ZXJtaW5hbCAgaGFzICBhICBwcm90ZWN0Ci0gICAgICAgbW9kZSwgIHRob3VnaCAgaXQgIGlzICBub3QgY29tbW9ubHkgdXNlZCBpbiBzZ3IgYmVjYXVzZSBpdAotICAgICAgIHByb3RlY3RzIGNoYXJhY3RlcnMgb24gdGhlIHNjcmVlbiAgZnJvbSAgdGhlICBob3N0J3MgIGVyYS0KLSAgICAgICBzdXJlcy4gICBUaGUgIGFsdGNoYXJzZXQgbW9kZSBhbHNvIGlzIGRpZmZlcmVudCBpbiB0aGF0IGl0Ci0gICAgICAgaXMgZWl0aGVyIF5PIG9yIF5OLCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBpcyBvZmYgb3IgIG9uLgotICAgICAgIElmICBhbGwgIG1vZGVzICBhcmUgIHR1cm5lZCAgb24sIHRoZSByZXN1bHRpbmcgc2VxdWVuY2UgaXMKKyAgICAgICBvZiAgcmV2ZXJzZSAgYW5kICBib2xkLiAgIFRoZSB2dDIyMCB0ZXJtaW5hbCBoYXMgYSBwcm90ZWN0CisgICAgICAgbW9kZSwgdGhvdWdoIGl0IGlzIG5vdCBjb21tb25seSB1c2VkICBpbiAgc2dyICBiZWNhdXNlICBpdAorICAgICAgIHByb3RlY3RzICBjaGFyYWN0ZXJzICBvbiAgdGhlICBzY3JlZW4gZnJvbSB0aGUgaG9zdCdzIGVyYS0KKyAgICAgICBzdXJlcy4gIFRoZSBhbHRjaGFyc2V0IG1vZGUgYWxzbyBpcyBkaWZmZXJlbnQgaW4gIHRoYXQgIGl0CisgICAgICAgaXMgIGVpdGhlciBeTyBvciBeTiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgaXMgb2ZmIG9yIG9uLgorICAgICAgIElmIGFsbCBtb2RlcyBhcmUgdHVybmVkICBvbiwgIHRoZSAgcmVzdWx0aW5nICBzZXF1ZW5jZSAgaXMKICAgICAgICBcRVswOzE7NDs1Ozc7OG1eTi4KIAotICAgICAgIFNvbWUgc2VxdWVuY2VzIGFyZSBjb21tb24gdG8gZGlmZmVyZW50IG1vZGVzLiAgIEZvciAgZXhhbS0KLSAgICAgICBwbGUsICA7NyAgaXMgb3V0cHV0IHdoZW4gZWl0aGVyIHAxIG9yIHAzIGlzIHRydWUsIHRoYXQgaXMsCisgICAgICAgU29tZSAgc2VxdWVuY2VzICBhcmUgY29tbW9uIHRvIGRpZmZlcmVudCBtb2Rlcy4gIEZvciBleGFtLQorICAgICAgIHBsZSwgOzcgaXMgb3V0cHV0IHdoZW4gZWl0aGVyIHAxIG9yIHAzIGlzIHRydWUsICB0aGF0ICBpcywKICAgICAgICBpZiBlaXRoZXIgc3RhbmRvdXQgb3IgcmV2ZXJzZSBtb2RlcyBhcmUgdHVybmVkIG9uLgogCi0gICAgICAgV3JpdGluZyBvdXQgdGhlIGFib3ZlIHNlcXVlbmNlcywgYWxvbmcgd2l0aCAgdGhlaXIgIGRlcGVuLQorICAgICAgIFdyaXRpbmcgIG91dCAgdGhlIGFib3ZlIHNlcXVlbmNlcywgYWxvbmcgd2l0aCB0aGVpciBkZXBlbi0KICAgICAgICBkZW5jaWVzIHlpZWxkcwogCisgICAgICA8U1RST05HPnNlcXVlbmNlPC9TVFJPTkc+ICAgICAgICAgICAgIDxTVFJPTkc+d2hlbjwvU1RST05HPiA8U1RST05HPnRvPC9TVFJPTkc+IDxTVFJPTkc+b3V0cHV0PC9TVFJPTkc+ICAgICAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiA8U1RST05HPnRyYW5zbGF0aW9uPC9TVFJPTkc+CiAKLSAgICAgICAgIDxTVFJPTkc+c2VxdWVuY2U8L1NUUk9ORz4gICAgPFNUUk9ORz53aGVuPC9TVFJPTkc+IDxTVFJPTkc+dG88L1NUUk9ORz4gPFNUUk9ORz5vdXRwdXQ8L1NUUk9ORz4gICAgIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gPFNUUk9ORz50cmFuc2xhdGlvbjwvU1RST05HPgotCi0gICAgICAgICBcRVswICAgICAgIGFsd2F5cyAgICAgICAgICAgICAgXEVbMAotICAgICAgICAgOzEgICAgICAgICBpZiBwMSBvciBwNiAgICAgICAgICU/JXAxJXA2JXwldDsxJTsKLSAgICAgICAgIDs0ICAgICAgICAgaWYgcDIgICAgICAgICAgICAgICAlPyVwMiV8JXQ7NCU7Ci0gICAgICAgICA7NSAgICAgICAgIGlmIHA0ICAgICAgICAgICAgICAgJT8lcDQlfCV0OzUlOwotCi0gICAgICAgICA7NyAgICAgICAgIGlmIHAxIG9yIHAzICAgICAgICAgJT8lcDElcDMlfCV0OzclOwotICAgICAgICAgOzggICAgICAgICBpZiBwNyAgICAgICAgICAgICAgICU/JXA3JXwldDs4JTsKLSAgICAgICAgIG0gICAgICAgICAgYWx3YXlzICAgICAgICAgICAgICBtCi0gICAgICAgICBeTiBvciBeTyAgIGlmIHA5IF5OLCBlbHNlIF5PICAgJT8lcDkldF5OJWVeTyU7CisgICAgICBcRVswICAgICAgICAgICAgICAgICBhbHdheXMgICAgICAgICAgICAgIFxFWzAKKyAgICAgIDsxICAgICAgICAgICAgICAgICAgIGlmIHAxIG9yIHA2ICAgICAgICAgJT8lcDElcDYlfCV0OzElOworICAgICAgOzQgICAgICAgICAgICAgICAgICAgaWYgcDIgICAgICAgICAgICAgICAlPyVwMiV8JXQ7NCU7CisgICAgICA7NSAgICAgICAgICAgICAgICAgICBpZiBwNCAgICAgICAgICAgICAgICU/JXA0JXwldDs1JTsKKyAgICAgIDs3ICAgICAgICAgICAgICAgICAgIGlmIHAxIG9yIHAzICAgICAgICAgJT8lcDElcDMlfCV0OzclOworICAgICAgOzggICAgICAgICAgICAgICAgICAgaWYgcDcgICAgICAgICAgICAgICAlPyVwNyV8JXQ7OCU7CisgICAgICBtICAgICAgICAgICAgICAgICAgICBhbHdheXMgICAgICAgICAgICAgIG0KKyAgICAgIF5OIG9yIF5PICAgICAgICAgICAgIGlmIHA5IF5OLCBlbHNlIF5PICAgJT8lcDkldF5OJWVeTyU7CiAKICAgICAgICBQdXR0aW5nIHRoaXMgYWxsIHRvZ2V0aGVyIGludG8gdGhlIHNnciBzZXF1ZW5jZSBnaXZlczoKIAotICAgICAgICAgICBzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTsKLSAgICAgICAgICAgICAgICU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKKyAgICAgICAgICAgc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOworICAgICAgICAgICAgICAgJT8lcDElcDMlfCV0OzclOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCiAKLSAgICAgICBSZW1lbWJlciAgdGhhdCAgaWYgIHlvdSBzcGVjaWZ5IHNnciwgeW91IG11c3QgYWxzbyBzcGVjaWZ5Ci0gICAgICAgc2dyMC4gIEFsc28sIHNvbWUgaW1wbGVtZW50YXRpb25zIHJlbHkgb24gc2dyIGJlaW5nICBnaXZlbgotICAgICAgIGlmICBzZ3IwICBpcywgTm90IGFsbCB0ZXJtaW5mbyBlbnRyaWVzIG5lY2Vzc2FyaWx5IGhhdmUgYW4KLSAgICAgICBzZ3Igc3RyaW5nLCBob3dldmVyLiAgTWFueSB0ZXJtaW5mbyAgZW50cmllcyAgYXJlICBkZXJpdmVkCi0gICAgICAgZnJvbSAgdGVybWNhcCAgZW50cmllcyB3aGljaCBoYXZlIG5vIHNnciBzdHJpbmcuICBUaGUgb25seQotICAgICAgIGRyYXdiYWNrIHRvIGFkZGluZyBhbiBzZ3IgIHN0cmluZyAgaXMgIHRoYXQgIHRlcm1jYXAgIGFsc28KLSAgICAgICBhc3N1bWVzICB0aGF0ICBzZ3IwICBkb2VzIG5vdCBleGl0IGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0CisgICAgICAgUmVtZW1iZXIgdGhhdCBpZiB5b3Ugc3BlY2lmeSBzZ3IsIHlvdSAgbXVzdCAgYWxzbyAgc3BlY2lmeQorICAgICAgIHNncjAuICAgQWxzbywgc29tZSBpbXBsZW1lbnRhdGlvbnMgcmVseSBvbiBzZ3IgYmVpbmcgZ2l2ZW4KKyAgICAgICBpZiBzZ3IwIGlzLCBOb3QgYWxsIHRlcm1pbmZvIGVudHJpZXMgbmVjZXNzYXJpbHkgIGhhdmUgIGFuCisgICAgICAgc2dyICBzdHJpbmcsICBob3dldmVyLiAgIE1hbnkgdGVybWluZm8gZW50cmllcyBhcmUgZGVyaXZlZAorICAgICAgIGZyb20gdGVybWNhcCBlbnRyaWVzIHdoaWNoIGhhdmUgbm8gc2dyIHN0cmluZy4gICBUaGUgIG9ubHkKKyAgICAgICBkcmF3YmFjayAgdG8gIGFkZGluZyAgYW4gIHNnciAgc3RyaW5nIGlzIHRoYXQgdGVybWNhcCBhbHNvCisgICAgICAgYXNzdW1lcyB0aGF0IHNncjAgZG9lcyBub3QgZXhpdCAgYWx0ZXJuYXRlICBjaGFyYWN0ZXIgIHNldAogICAgICAgIG1vZGUuCiAKLSAgICAgICBUZXJtaW5hbHMgd2l0aCB0aGUgYGBtYWdpYyBjb29raWUnJyBnbGl0Y2ggICg8U1RST05HPnhtYzwvU1RST05HPikgIGRlcG9zaXQKLSAgICAgICBzcGVjaWFsICAgYGBjb29raWVzJycgICB3aGVuICAgdGhleSAgcmVjZWl2ZSAgbW9kZS1zZXR0aW5nCi0gICAgICAgc2VxdWVuY2VzLCB3aGljaCBhZmZlY3QgdGhlIGRpc3BsYXkgYWxnb3JpdGhtIHJhdGhlciAgdGhhbgotICAgICAgIGhhdmluZyAgZXh0cmEgIGJpdHMgIGZvciAgZWFjaCBjaGFyYWN0ZXIuICBTb21lIHRlcm1pbmFscywKLSAgICAgICBzdWNoIGFzIHRoZSBIUCAyNjIxLCAgYXV0b21hdGljYWxseSAgbGVhdmUgIHN0YW5kb3V0ICBtb2RlCi0gICAgICAgd2hlbiAgdGhleSAgbW92ZSB0byBhIG5ldyBsaW5lIG9yIHRoZSBjdXJzb3IgaXMgYWRkcmVzc2VkLgotICAgICAgIFByb2dyYW1zIHVzaW5nIHN0YW5kb3V0IG1vZGUgIHNob3VsZCAgZXhpdCAgc3RhbmRvdXQgIG1vZGUKLSAgICAgICBiZWZvcmUgIG1vdmluZyB0aGUgY3Vyc29yIG9yIHNlbmRpbmcgYSBuZXdsaW5lLCB1bmxlc3MgdGhlCi0gICAgICAgPFNUUk9ORz5tc2dyPC9TVFJPTkc+IGNhcGFiaWxpdHksIGFzc2VydGluZyB0aGF0IGl0ICBpcyAgc2FmZSAgdG8gIG1vdmUgIGluCisgICAgICAgVGVybWluYWxzICB3aXRoICB0aGUgICJtYWdpYyAgY29va2llIiBnbGl0Y2ggKDxTVFJPTkc+eG1jPC9TVFJPTkc+KSBkZXBvc2l0CisgICAgICAgc3BlY2lhbCAgICJjb29raWVzIiAgIHdoZW4gICB0aGV5ICAgcmVjZWl2ZSAgIG1vZGUtc2V0dGluZworICAgICAgIHNlcXVlbmNlcywgIHdoaWNoIGFmZmVjdCB0aGUgZGlzcGxheSBhbGdvcml0aG0gcmF0aGVyIHRoYW4KKyAgICAgICBoYXZpbmcgZXh0cmEgYml0cyBmb3IgIGVhY2ggIGNoYXJhY3Rlci4gICBTb21lICB0ZXJtaW5hbHMsCisgICAgICAgc3VjaCAgYXMgIHRoZSAgSFAgIDI2MjEsIGF1dG9tYXRpY2FsbHkgbGVhdmUgc3RhbmRvdXQgbW9kZQorICAgICAgIHdoZW4gdGhleSBtb3ZlIHRvIGEgbmV3IGxpbmUgb3IgdGhlIGN1cnNvciAgaXMgIGFkZHJlc3NlZC4KKyAgICAgICBQcm9ncmFtcyAgdXNpbmcgIHN0YW5kb3V0ICBtb2RlICBzaG91bGQgZXhpdCBzdGFuZG91dCBtb2RlCisgICAgICAgYmVmb3JlIG1vdmluZyB0aGUgY3Vyc29yIG9yIHNlbmRpbmcgYSBuZXdsaW5lLCB1bmxlc3MgIHRoZQorICAgICAgIDxTVFJPTkc+bXNncjwvU1RST05HPiAgY2FwYWJpbGl0eSwgIGFzc2VydGluZyAgdGhhdCAgaXQgIGlzIHNhZmUgdG8gbW92ZSBpbgogICAgICAgIHN0YW5kb3V0IG1vZGUsIGlzIHByZXNlbnQuCiAKLSAgICAgICBJZiAgdGhlIHRlcm1pbmFsIGhhcyBhIHdheSBvZiBmbGFzaGluZyB0aGUgc2NyZWVuIHRvIGluZGktCi0gICAgICAgY2F0ZSBhbiBlcnJvciBxdWlldGx5IChhIGJlbGwgcmVwbGFjZW1lbnQpIHRoZW4gIHRoaXMgIGNhbgorICAgICAgIElmIHRoZSB0ZXJtaW5hbCBoYXMgYSB3YXkgb2YgZmxhc2hpbmcgdGhlIHNjcmVlbiB0byAgaW5kaS0KKyAgICAgICBjYXRlICBhbiAgZXJyb3IgcXVpZXRseSAoYSBiZWxsIHJlcGxhY2VtZW50KSB0aGVuIHRoaXMgY2FuCiAgICAgICAgYmUgZ2l2ZW4gYXMgPFNUUk9ORz5mbGFzaDwvU1RST05HPjsgaXQgbXVzdCBub3QgbW92ZSB0aGUgY3Vyc29yLgogCi0gICAgICAgSWYgIHRoZSAgY3Vyc29yICBuZWVkcyB0byBiZSBtYWRlIG1vcmUgdmlzaWJsZSB0aGFuIG5vcm1hbAorICAgICAgIElmIHRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgbWFkZSBtb3JlICB2aXNpYmxlICB0aGFuICBub3JtYWwKICAgICAgICB3aGVuIGl0IGlzIG5vdCBvbiB0aGUgYm90dG9tIGxpbmUgKHRvIG1ha2UsIGZvciBleGFtcGxlLCBhCi0gICAgICAgbm9uLWJsaW5raW5nICB1bmRlcmxpbmUgIGludG8gIGFuICBlYXNpZXIgdG8gZmluZCBibG9jayBvcgorICAgICAgIG5vbi1ibGlua2luZyB1bmRlcmxpbmUgaW50byBhbiBlYXNpZXIgIHRvICBmaW5kICBibG9jayAgb3IKICAgICAgICBibGlua2luZyB1bmRlcmxpbmUpIGdpdmUgdGhpcyBzZXF1ZW5jZSBhcyA8U1RST05HPmN2dmlzPC9TVFJPTkc+LiAgSWYgdGhlcmUKLSAgICAgICBpcyAgYSAgd2F5ICB0byAgbWFrZSB0aGUgY3Vyc29yIGNvbXBsZXRlbHkgaW52aXNpYmxlLCBnaXZlCisgICAgICAgaXMgYSB3YXkgdG8gbWFrZSB0aGUgIGN1cnNvciAgY29tcGxldGVseSAgaW52aXNpYmxlLCAgZ2l2ZQogICAgICAgIHRoYXQgYXMgPFNUUk9ORz5jaXZpczwvU1RST05HPi4gIFRoZSBjYXBhYmlsaXR5IDxTVFJPTkc+Y25vcm08L1NUUk9ORz4gc2hvdWxkIGJlIGdpdmVuIHdoaWNoCiAgICAgICAgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIGJvdGggb2YgdGhlc2UgbW9kZXMuCiAKICAgICAgICBJZiB5b3VyIHRlcm1pbmFsIGNvcnJlY3RseSBnZW5lcmF0ZXMgdW5kZXJsaW5lZCBjaGFyYWN0ZXJzCi0gICAgICAgKHdpdGggbm8gc3BlY2lhbCBjb2RlcyBuZWVkZWQpIGV2ZW4gIHRob3VnaCAgaXQgIGRvZXMgIG5vdAotICAgICAgIG92ZXJzdHJpa2UsICB0aGVuIHlvdSBzaG91bGQgZ2l2ZSB0aGUgY2FwYWJpbGl0eSA8U1RST05HPnVsPC9TVFJPTkc+LiAgSWYgYQotICAgICAgIGNoYXJhY3RlciBvdmVyc3RyaWtpbmcgYW5vdGhlciBsZWF2ZXMgYm90aCAgY2hhcmFjdGVycyAgb24KKyAgICAgICAod2l0aCAgbm8gIHNwZWNpYWwgIGNvZGVzICBuZWVkZWQpIGV2ZW4gdGhvdWdoIGl0IGRvZXMgbm90CisgICAgICAgb3ZlcnN0cmlrZSwgdGhlbiB5b3Ugc2hvdWxkIGdpdmUgdGhlIGNhcGFiaWxpdHkgPFNUUk9ORz51bDwvU1RST05HPi4gIElmICBhCisgICAgICAgY2hhcmFjdGVyICBvdmVyc3RyaWtpbmcgIGFub3RoZXIgbGVhdmVzIGJvdGggY2hhcmFjdGVycyBvbgogICAgICAgIHRoZSBzY3JlZW4sIHNwZWNpZnkgdGhlIGNhcGFiaWxpdHkgPFNUUk9ORz5vczwvU1RST05HPi4gIElmIG92ZXJzdHJpa2VzIGFyZQotICAgICAgIGVyYXNhYmxlIHdpdGggYSBibGFuaywgdGhlbiB0aGlzIHNob3VsZCAgYmUgIGluZGljYXRlZCAgYnkKKyAgICAgICBlcmFzYWJsZSAgd2l0aCAgYSAgYmxhbmssIHRoZW4gdGhpcyBzaG91bGQgYmUgaW5kaWNhdGVkIGJ5CiAgICAgICAgZ2l2aW5nIDxTVFJPTkc+ZW88L1NUUk9ORz4uCiAKIAotICAgPFNUUk9ORz5LZXlwYWQ8L1NUUk9ORz4gPFNUUk9ORz5hbmQ8L1NUUk9ORz4gPFNUUk9ORz5GdW5jdGlvbjwvU1RST05HPiA8U1RST05HPktleXM8L1NUUk9ORz4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUtleXBhZC1hbmQtRnVuY3Rpb24tS2V5cyI+S2V5cGFkIGFuZCBGdW5jdGlvbiBLZXlzPC9hPjwvSDM+PFBSRT4KICAgICAgICBJZiB0aGUgdGVybWluYWwgaGFzIGEga2V5cGFkIHRoYXQgdHJhbnNtaXRzIGNvZGVzIHdoZW4gdGhlCi0gICAgICAga2V5cyBhcmUgcHJlc3NlZCwgdGhpcyBpbmZvcm1hdGlvbiAgY2FuICBiZSAgZ2l2ZW4uICAgTm90ZQorICAgICAgIGtleXMgIGFyZSAgcHJlc3NlZCwgIHRoaXMgIGluZm9ybWF0aW9uIGNhbiBiZSBnaXZlbi4gIE5vdGUKICAgICAgICB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYW5kbGUgdGVybWluYWxzIHdoZXJlIHRoZSBrZXktCiAgICAgICAgcGFkIG9ubHkgd29ya3MgaW4gbG9jYWwgKHRoaXMgYXBwbGllcywgZm9yIGV4YW1wbGUsIHRvIHRoZQotICAgICAgIHVuc2hpZnRlZCAgSFAgIDI2MjEgIGtleXMpLiAgIElmICB0aGUga2V5cGFkIGNhbiBiZSBzZXQgdG8KLSAgICAgICB0cmFuc21pdCBvciBub3QgdHJhbnNtaXQsIGdpdmUgdGhlc2UgIGNvZGVzICBhcyAgPFNUUk9ORz5zbWt4PC9TVFJPTkc+ICBhbmQKKyAgICAgICB1bnNoaWZ0ZWQgSFAgMjYyMSBrZXlzKS4gIElmIHRoZSAga2V5cGFkICBjYW4gIGJlICBzZXQgIHRvCisgICAgICAgdHJhbnNtaXQgIG9yICBub3QgIHRyYW5zbWl0LCAgZ2l2ZSB0aGVzZSBjb2RlcyBhcyA8U1RST05HPnNta3g8L1NUUk9ORz4gYW5kCiAgICAgICAgPFNUUk9ORz5ybWt4PC9TVFJPTkc+LiAgT3RoZXJ3aXNlIHRoZSBrZXlwYWQgaXMgYXNzdW1lZCB0byBhbHdheXMgdHJhbnNtaXQuCisKICAgICAgICBUaGUgY29kZXMgc2VudCBieSB0aGUgbGVmdCBhcnJvdywgcmlnaHQgYXJyb3csICB1cCAgYXJyb3csCiAgICAgICAgZG93biAgYXJyb3csICBhbmQgIGhvbWUga2V5cyBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5rY3ViMSw8L1NUUk9ORz4gPFNUUk9ORz5rY3VmMSw8L1NUUk9ORz4KICAgICAgICA8U1RST05HPmtjdXUxLDwvU1RST05HPiA8U1RST05HPmtjdWQxLDwvU1RST05HPiBhbmQgPFNUUk9ORz5raG9tZTwvU1RST05HPiByZXNwZWN0aXZlbHkuICBJZiB0aGVyZSBhcmUgIGZ1bmMtCiAgICAgICAgdGlvbiAga2V5cyAgc3VjaCAgYXMgZjAsIGYxLCAuLi4sIGYxMCwgdGhlIGNvZGVzIHRoZXkgc2VuZAogICAgICAgIGNhbiBiZSBnaXZlbiBhcyA8U1RST05HPmtmMCw8L1NUUk9ORz4gPFNUUk9ORz5rZjEsPC9TVFJPTkc+IDxTVFJPTkc+Li4uLDwvU1RST05HPiA8U1RST05HPmtmMTA8L1NUUk9ORz4uICBJZiB0aGVzZSAga2V5cyAgaGF2ZQogICAgICAgIGxhYmVscyAgb3RoZXIgIHRoYW4gdGhlIGRlZmF1bHQgZjAgdGhyb3VnaCBmMTAsIHRoZSBsYWJlbHMKLSAgICAgICBjYW4gIGJlICBnaXZlbiAgYXMgIDxTVFJPTkc+bGYwLDwvU1RST05HPiAgPFNUUk9ORz5sZjEsPC9TVFJPTkc+ICA8U1RST05HPi4uLiw8L1NUUk9ORz4gIDxTVFJPTkc+bGYxMDwvU1RST05HPi4gICAgVGhlICAgY29kZXMKLSAgICAgICB0cmFuc21pdHRlZCAgYnkgIGNlcnRhaW4gIG90aGVyIHNwZWNpYWwga2V5cyBjYW4gYmUgZ2l2ZW46Ci0gICAgICAgPFNUUk9ORz5rbGw8L1NUUk9ORz4gKGhvbWUgZG93biksIDxTVFJPTkc+a2JzPC9TVFJPTkc+IChiYWNrc3BhY2UpLCA8U1RST05HPmt0YmM8L1NUUk9ORz4gKGNsZWFyICBhbGwgIHRhYnMpLAotICAgICAgIDxTVFJPTkc+a2N0YWI8L1NUUk9ORz4gIChjbGVhciAgdGhlICB0YWIgIHN0b3AgaW4gdGhpcyBjb2x1bW4pLCA8U1RST05HPmtjbHI8L1NUUk9ORz4gKGNsZWFyCi0gICAgICAgc2NyZWVuIG9yICBlcmFzZSAga2V5KSwgIDxTVFJPTkc+a2RjaDE8L1NUUk9ORz4gIChkZWxldGUgIGNoYXJhY3RlciksICA8U1RST05HPmtkbDE8L1NUUk9ORz4KLSAgICAgICAoZGVsZXRlIGxpbmUpLCA8U1RST05HPmtybWlyPC9TVFJPTkc+IChleGl0IGluc2VydCBtb2RlKSwgPFNUUk9ORz5rZWw8L1NUUk9ORz4gKGNsZWFyIHRvIGVuZAotICAgICAgIG9mIGxpbmUpLCA8U1RST05HPmtlZDwvU1RST05HPiAoY2xlYXIgdG8gIGVuZCAgb2YgIHNjcmVlbiksICA8U1RST05HPmtpY2gxPC9TVFJPTkc+ICAoaW5zZXJ0Ci0gICAgICAgY2hhcmFjdGVyICBvciAgZW50ZXIgaW5zZXJ0IG1vZGUpLCA8U1RST05HPmtpbDE8L1NUUk9ORz4gKGluc2VydCBsaW5lKSwgPFNUUk9ORz5rbnA8L1NUUk9ORz4KLSAgICAgICAobmV4dCAgcGFnZSksICA8U1RST05HPmtwcDwvU1RST05HPiAgKHByZXZpb3VzICBwYWdlKSwgIDxTVFJPTkc+a2luZDwvU1RST05HPiAgKHNjcm9sbCAgZm9yLQotICAgICAgIHdhcmQvZG93biksIDxTVFJPTkc+a3JpPC9TVFJPTkc+IChzY3JvbGwgYmFja3dhcmQvdXApLCA8U1RST05HPmtodHM8L1NUUk9ORz4gKHNldCBhIHRhYiBzdG9wCi0gICAgICAgaW4gdGhpcyBjb2x1bW4pLiAgSW4gYWRkaXRpb24sIGlmIHRoZSBrZXlwYWQgaGFzIGEgMyBieSAgMwotICAgICAgIGFycmF5ICBvZiAga2V5cyAgaW5jbHVkaW5nICB0aGUgZm91ciBhcnJvdyBrZXlzLCB0aGUgb3RoZXIKLSAgICAgICBmaXZlIGtleXMgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+a2ExPC9TVFJPTkc+LCA8U1RST05HPmthMzwvU1RST05HPiwgIDxTVFJPTkc+a2IyPC9TVFJPTkc+LCAgPFNUUk9ORz5rYzE8L1NUUk9ORz4sICBhbmQgIDxTVFJPTkc+a2MzPC9TVFJPTkc+LgotICAgICAgIFRoZXNlICBrZXlzIGFyZSB1c2VmdWwgd2hlbiB0aGUgZWZmZWN0cyBvZiBhIDMgYnkgMyBkaXJlYy0KLSAgICAgICB0aW9uYWwgcGFkIGFyZSBuZWVkZWQuCisgICAgICAgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+bGYwLDwvU1RST05HPiA8U1RST05HPmxmMSw8L1NUUk9ORz4gPFNUUk9ORz4uLi4sPC9TVFJPTkc+IDxTVFJPTkc+bGYxMDwvU1RST05HPi4KIAotICAgICAgIFN0cmluZ3MgdG8gcHJvZ3JhbSBmdW5jdGlvbiBrZXlzIGNhbiBiZSAgZ2l2ZW4gIGFzICA8U1RST05HPnBma2V5PC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+cGZsb2M8L1NUUk9ORz4sICBhbmQgPFNUUk9ORz5wZng8L1NUUk9ORz4uICBBIHN0cmluZyB0byBwcm9ncmFtIHNjcmVlbiBsYWJlbHMgc2hvdWxkCi0gICAgICAgYmUgc3BlY2lmaWVkIGFzIDxTVFJPTkc+cGxuPC9TVFJPTkc+LiAgRWFjaCAgb2YgIHRoZXNlICBzdHJpbmdzICB0YWtlcyAgdHdvCi0gICAgICAgcGFyYW1ldGVyczogIHRoZSBmdW5jdGlvbiBrZXkgbnVtYmVyIHRvIHByb2dyYW0gKGZyb20gMCB0bwotICAgICAgIDEwKSBhbmQgdGhlIHN0cmluZyB0byBwcm9ncmFtIGl0IHdpdGguICBGdW5jdGlvbiBrZXkgIG51bS0KLSAgICAgICBiZXJzICBvdXQgIG9mICB0aGlzICByYW5nZSBtYXkgcHJvZ3JhbSB1bmRlZmluZWQga2V5cyBpbiBhCi0gICAgICAgdGVybWluYWwgZGVwZW5kZW50IG1hbm5lci4gICBUaGUgIGRpZmZlcmVuY2UgIGJldHdlZW4gIHRoZQotICAgICAgIGNhcGFiaWxpdGllcyAgaXMgIHRoYXQgPFNUUk9ORz5wZmtleTwvU1RST05HPiBjYXVzZXMgcHJlc3NpbmcgdGhlIGdpdmVuIGtleQotICAgICAgIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSB1c2VyIHR5cGluZyB0aGUgZ2l2ZW4gc3RyaW5nOyAgPFNUUk9ORz5wZmxvYzwvU1RST05HPgorICAgICAgIFRoZSBjb2RlcyB0cmFuc21pdHRlZCBieSBjZXJ0YWluIG90aGVyIHNwZWNpYWwga2V5cyBjYW4gYmUKKyAgICAgICBnaXZlbjoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2xsPC9TVFJPTkc+IChob21lIGRvd24pLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5rYnM8L1NUUk9ORz4gKGJhY2tzcGFjZSksCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmt0YmM8L1NUUk9ORz4gKGNsZWFyIGFsbCB0YWJzKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2N0YWI8L1NUUk9ORz4gKGNsZWFyIHRoZSB0YWIgc3RvcCBpbiB0aGlzIGNvbHVtbiksCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmtjbHI8L1NUUk9ORz4gKGNsZWFyIHNjcmVlbiBvciBlcmFzZSBrZXkpLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5rZGNoMTwvU1RST05HPiAoZGVsZXRlIGNoYXJhY3RlciksCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmtkbDE8L1NUUk9ORz4gKGRlbGV0ZSBsaW5lKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a3JtaXI8L1NUUk9ORz4gKGV4aXQgaW5zZXJ0IG1vZGUpLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5rZWw8L1NUUk9ORz4gKGNsZWFyIHRvIGVuZCBvZiBsaW5lKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2VkPC9TVFJPTkc+IChjbGVhciB0byBlbmQgb2Ygc2NyZWVuKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2ljaDE8L1NUUk9ORz4gKGluc2VydCBjaGFyYWN0ZXIgb3IgZW50ZXIgaW5zZXJ0IG1vZGUpLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPFNUUk9ORz5raWwxPC9TVFJPTkc+IChpbnNlcnQgbGluZSksCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmtucDwvU1RST05HPiAobmV4dCBwYWdlKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a3BwPC9TVFJPTkc+IChwcmV2aW91cyBwYWdlKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2luZDwvU1RST05HPiAoc2Nyb2xsIGZvcndhcmQvZG93biksCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPmtyaTwvU1RST05HPiAoc2Nyb2xsIGJhY2t3YXJkL3VwKSwKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIDxTVFJPTkc+a2h0czwvU1RST05HPiAoc2V0IGEgdGFiIHN0b3AgaW4gdGhpcyBjb2x1bW4pLgorCisgICAgICAgSW4gIGFkZGl0aW9uLCAgaWYgIHRoZSAga2V5cGFkICBoYXMgYSAzIGJ5IDMgYXJyYXkgb2Yga2V5cworICAgICAgIGluY2x1ZGluZyB0aGUgZm91ciBhcnJvdyBrZXlzLCB0aGUgb3RoZXIgZml2ZSBrZXlzIGNhbiAgYmUKKyAgICAgICBnaXZlbiBhcyA8U1RST05HPmthMTwvU1RST05HPiwgPFNUUk9ORz5rYTM8L1NUUk9ORz4sIDxTVFJPTkc+a2IyPC9TVFJPTkc+LCA8U1RST05HPmtjMTwvU1RST05HPiwgYW5kIDxTVFJPTkc+a2MzPC9TVFJPTkc+LiAgVGhlc2Uga2V5cyBhcmUgdXNlLQorICAgICAgIGZ1bCB3aGVuIHRoZSBlZmZlY3RzIG9mIGEgIDMgIGJ5ICAzICBkaXJlY3Rpb25hbCAgcGFkICBhcmUKKyAgICAgICBuZWVkZWQuCisKKyAgICAgICBTdHJpbmdzICB0byAgcHJvZ3JhbSAgZnVuY3Rpb24ga2V5cyBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5wZmtleTwvU1RST05HPiwKKyAgICAgICA8U1RST05HPnBmbG9jPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5wZng8L1NUUk9ORz4uICBBIHN0cmluZyB0byBwcm9ncmFtIHNjcmVlbiBsYWJlbHMgIHNob3VsZAorICAgICAgIGJlICBzcGVjaWZpZWQgIGFzICA8U1RST05HPnBsbjwvU1RST05HPi4gICBFYWNoICBvZiB0aGVzZSBzdHJpbmdzIHRha2VzIHR3bworICAgICAgIHBhcmFtZXRlcnM6IHRoZSBmdW5jdGlvbiBrZXkgbnVtYmVyIHRvIHByb2dyYW0gKGZyb20gMCAgdG8KKyAgICAgICAxMCkgIGFuZCB0aGUgc3RyaW5nIHRvIHByb2dyYW0gaXQgd2l0aC4gIEZ1bmN0aW9uIGtleSBudW0tCisgICAgICAgYmVycyBvdXQgb2YgdGhpcyByYW5nZSBtYXkgcHJvZ3JhbSAgdW5kZWZpbmVkICBrZXlzICBpbiAgYQorICAgICAgIHRlcm1pbmFsICBkZXBlbmRlbnQgIG1hbm5lci4gICBUaGUgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgICAgICBjYXBhYmlsaXRpZXMgaXMgdGhhdCA8U1RST05HPnBma2V5PC9TVFJPTkc+IGNhdXNlcyBwcmVzc2luZyB0aGUgIGdpdmVuICBrZXkKKyAgICAgICB0byAgYmUgdGhlIHNhbWUgYXMgdGhlIHVzZXIgdHlwaW5nIHRoZSBnaXZlbiBzdHJpbmc7IDxTVFJPTkc+cGZsb2M8L1NUUk9ORz4KICAgICAgICBjYXVzZXMgdGhlIHN0cmluZyB0byBiZSBleGVjdXRlZCBieSB0aGUgdGVybWluYWwgaW4gbG9jYWw7Ci0gICAgICAgYW5kIDxTVFJPTkc+cGZ4PC9TVFJPTkc+IGNhdXNlcyB0aGUgc3RyaW5nIHRvIGJlIHRyYW5zbWl0dGVkICB0byAgdGhlICBjb20tCisgICAgICAgYW5kICA8U1RST05HPnBmeDwvU1RST05HPiAgY2F1c2VzICB0aGUgc3RyaW5nIHRvIGJlIHRyYW5zbWl0dGVkIHRvIHRoZSBjb20tCiAgICAgICAgcHV0ZXIuCiAKICAgICAgICBUaGUgY2FwYWJpbGl0aWVzIDxTVFJPTkc+bmxhYjwvU1RST05HPiwgPFNUUk9ORz5sdzwvU1RST05HPiBhbmQgPFNUUk9ORz5saDwvU1RST05HPiBkZWZpbmUgdGhlIG51bWJlciBvZiBwcm8tCi0gICAgICAgZ3JhbW1hYmxlIHNjcmVlbiBsYWJlbHMgYW5kIHRoZWlyIHdpZHRoICBhbmQgIGhlaWdodC4gICBJZgotICAgICAgIHRoZXJlICBhcmUgIGNvbW1hbmRzICB0byAgdHVybiB0aGUgbGFiZWxzIG9uIGFuZCBvZmYsIGdpdmUKLSAgICAgICB0aGVtIGluIDxTVFJPTkc+c21sbjwvU1RST05HPiBhbmQgPFNUUk9ORz5ybWxuPC9TVFJPTkc+LiAgPFNUUk9ORz5zbWxuPC9TVFJPTkc+IGlzIG5vcm1hbGx5IG91dHB1dCBhZnRlciAgb25lCisgICAgICAgZ3JhbW1hYmxlICBzY3JlZW4gIGxhYmVscyAgYW5kIHRoZWlyIHdpZHRoIGFuZCBoZWlnaHQuICBJZgorICAgICAgIHRoZXJlIGFyZSBjb21tYW5kcyB0byB0dXJuIHRoZSBsYWJlbHMgIG9uICBhbmQgIG9mZiwgIGdpdmUKKyAgICAgICB0aGVtICBpbiA8U1RST05HPnNtbG48L1NUUk9ORz4gYW5kIDxTVFJPTkc+cm1sbjwvU1RST05HPi4gIDxTVFJPTkc+c21sbjwvU1RST05HPiBpcyBub3JtYWxseSBvdXRwdXQgYWZ0ZXIgb25lCiAgICAgICAgb3IgbW9yZSBwbG4gc2VxdWVuY2VzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjaGFuZ2UgYmVjb21lcwogICAgICAgIHZpc2libGUuCiAKIAotICAgPFNUUk9ORz5UYWJzPC9TVFJPTkc+IDxTVFJPTkc+YW5kPC9TVFJPTkc+IDxTVFJPTkc+SW5pdGlhbGl6YXRpb248L1NUUk9ORz4KLSAgICAgICBJZiB0aGUgdGVybWluYWwgaGFzIGhhcmR3YXJlIHRhYnMsIHRoZSBjb21tYW5kIHRvICBhZHZhbmNlCi0gICAgICAgdG8gIHRoZSAgbmV4dCB0YWIgc3RvcCBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5odDwvU1RST05HPiAodXN1YWxseSBjb250cm9sCi0gICAgICAgSSkuICBBIGBgYmFjay10YWInJyBjb21tYW5kIHdoaWNoIG1vdmVzICBsZWZ0d2FyZCAgdG8gIHRoZQotICAgICAgIHByZWNlZGluZyB0YWIgc3RvcCBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5jYnQ8L1NUUk9ORz4uICBCeSBjb252ZW50aW9uLCBpZgotICAgICAgIHRoZSB0ZWxldHlwZSBtb2RlcyBpbmRpY2F0ZSB0aGF0IHRhYnMgYXJlICBiZWluZyAgZXhwYW5kZWQKLSAgICAgICBieSAgdGhlICBjb21wdXRlciAgcmF0aGVyIHRoYW4gYmVpbmcgc2VudCB0byB0aGUgdGVybWluYWwsCi0gICAgICAgcHJvZ3JhbXMgc2hvdWxkIG5vdCAgdXNlICA8U1RST05HPmh0PC9TVFJPTkc+ICBvciAgPFNUUk9ORz5jYnQ8L1NUUk9ORz4gIGV2ZW4gIGlmICB0aGV5ICBhcmUKLSAgICAgICBwcmVzZW50LCAgc2luY2UgIHRoZSB1c2VyIG1heSBub3QgaGF2ZSB0aGUgdGFiIHN0b3BzIHByb3AtCi0gICAgICAgZXJseSBzZXQuICBJZiB0aGUgdGVybWluYWwgaGFzICBoYXJkd2FyZSAgdGFicyAgd2hpY2ggIGFyZQotICAgICAgIGluaXRpYWxseSAgc2V0IGV2ZXJ5IDxFTT5uPC9FTT4gc3BhY2VzIHdoZW4gdGhlIHRlcm1pbmFsIGlzIHBvd2VyZWQKLSAgICAgICB1cCwgdGhlIG51bWVyaWMgcGFyYW1ldGVyIDxTVFJPTkc+aXQ8L1NUUk9ORz4gaXMgZ2l2ZW4sIHNob3dpbmcgdGhlICBudW1iZXIKLSAgICAgICBvZiAgc3BhY2VzICB0aGUgdGFicyBhcmUgc2V0IHRvLiAgVGhpcyBpcyBub3JtYWxseSB1c2VkIGJ5Ci0gICAgICAgdGhlIDxFTT50c2V0PC9FTT4gY29tbWFuZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBzZXQgdGhlIG1vZGUgIGZvcgotICAgICAgIGhhcmR3YXJlICB0YWIgZXhwYW5zaW9uLCBhbmQgd2hldGhlciB0byBzZXQgdGhlIHRhYiBzdG9wcy4KLSAgICAgICBJZiB0aGUgdGVybWluYWwgaGFzIHRhYiBzdG9wcyB0aGF0IGNhbiBiZSAgc2F2ZWQgIGluICBub24tCi0gICAgICAgdm9sYXRpbGUgIG1lbW9yeSwgdGhlIHRlcm1pbmZvIGRlc2NyaXB0aW9uIGNhbiBhc3N1bWUgdGhhdAorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtVGFicy1hbmQtSW5pdGlhbGl6YXRpb24iPlRhYnMgYW5kIEluaXRpYWxpemF0aW9uPC9hPjwvSDM+PFBSRT4KKyAgICAgICBJZiAgdGhlIHRlcm1pbmFsIGhhcyBoYXJkd2FyZSB0YWJzLCB0aGUgY29tbWFuZCB0byBhZHZhbmNlCisgICAgICAgdG8gdGhlIG5leHQgdGFiIHN0b3AgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+aHQ8L1NUUk9ORz4gICh1c3VhbGx5ICBjb250cm9sCisgICAgICAgSSkuICBBICJiYWNrLXRhYiIgY29tbWFuZCB3aGljaCBtb3ZlcyBsZWZ0d2FyZCB0byB0aGUgcHJlLQorICAgICAgIGNlZGluZyB0YWIgc3RvcCBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5jYnQ8L1NUUk9ORz4uICAgQnkgIGNvbnZlbnRpb24sICBpZgorICAgICAgIHRoZSAgdGVsZXR5cGUgIG1vZGVzIGluZGljYXRlIHRoYXQgdGFicyBhcmUgYmVpbmcgZXhwYW5kZWQKKyAgICAgICBieSB0aGUgY29tcHV0ZXIgcmF0aGVyIHRoYW4gYmVpbmcgc2VudCAgdG8gIHRoZSAgdGVybWluYWwsCisgICAgICAgcHJvZ3JhbXMgIHNob3VsZCAgbm90ICB1c2UgIDxTVFJPTkc+aHQ8L1NUUk9ORz4gIG9yICA8U1RST05HPmNidDwvU1RST05HPiAgZXZlbiAgaWYgdGhleSBhcmUKKyAgICAgICBwcmVzZW50LCBzaW5jZSB0aGUgdXNlciBtYXkgbm90IGhhdmUgdGhlIHRhYiAgc3RvcHMgIHByb3AtCisgICAgICAgZXJseSAgc2V0LiAgIElmICB0aGUgIHRlcm1pbmFsIGhhcyBoYXJkd2FyZSB0YWJzIHdoaWNoIGFyZQorICAgICAgIGluaXRpYWxseSBzZXQgZXZlcnkgPEVNPm48L0VNPiBzcGFjZXMgd2hlbiB0aGUgdGVybWluYWwgaXMgIHBvd2VyZWQKKyAgICAgICB1cCwgIHRoZSBudW1lcmljIHBhcmFtZXRlciA8U1RST05HPml0PC9TVFJPTkc+IGlzIGdpdmVuLCBzaG93aW5nIHRoZSBudW1iZXIKKyAgICAgICBvZiBzcGFjZXMgdGhlIHRhYnMgYXJlIHNldCB0by4gIFRoaXMgaXMgbm9ybWFsbHkgIHVzZWQgIGJ5CisgICAgICAgdGhlICA8RU0+dHNldDwvRU0+IGNvbW1hbmQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gc2V0IHRoZSBtb2RlIGZvcgorICAgICAgIGhhcmR3YXJlIHRhYiBleHBhbnNpb24sIGFuZCB3aGV0aGVyIHRvIHNldCB0aGUgdGFiICBzdG9wcy4KKyAgICAgICBJZiAgdGhlICB0ZXJtaW5hbCAgaGFzIHRhYiBzdG9wcyB0aGF0IGNhbiBiZSBzYXZlZCBpbiBub24tCisgICAgICAgdm9sYXRpbGUgbWVtb3J5LCB0aGUgdGVybWluZm8gZGVzY3JpcHRpb24gY2FuIGFzc3VtZSAgdGhhdAogICAgICAgIHRoZXkgYXJlIHByb3Blcmx5IHNldC4KIAotICAgICAgIE90aGVyIGNhcGFiaWxpdGllcyBpbmNsdWRlIDxTVFJPTkc+aXMxPC9TVFJPTkc+LCA8U1RST05HPmlzMjwvU1RST05HPiwgYW5kIDxTVFJPTkc+aXMzPC9TVFJPTkc+LCAgaW5pdGlhbGl6YS0KLSAgICAgICB0aW9uICBzdHJpbmdzICBmb3IgdGhlIHRlcm1pbmFsLCA8U1RST05HPmlwcm9nPC9TVFJPTkc+LCB0aGUgcGF0aCBuYW1lIG9mIGEKLSAgICAgICBwcm9ncmFtIHRvIGJlIHJ1biB0byBpbml0aWFsaXplIHRoZSB0ZXJtaW5hbCwgYW5kIDxTVFJPTkc+aWY8L1NUUk9ORz4sICB0aGUKLSAgICAgICBuYW1lICBvZiAgYSAgZmlsZSAgY29udGFpbmluZyBsb25nIGluaXRpYWxpemF0aW9uIHN0cmluZ3MuCi0gICAgICAgVGhlc2Ugc3RyaW5ncyBhcmUgZXhwZWN0ZWQgdG8gc2V0IHRoZSB0ZXJtaW5hbCBpbnRvICBtb2RlcwotICAgICAgIGNvbnNpc3RlbnQgIHdpdGggIHRoZSAgcmVzdCAgb2YgIHRoZSB0ZXJtaW5mbyBkZXNjcmlwdGlvbi4KKyAgICAgICBPdGhlciAgY2FwYWJpbGl0aWVzIGluY2x1ZGUgPFNUUk9ORz5pczE8L1NUUk9ORz4sIDxTVFJPTkc+aXMyPC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5pczM8L1NUUk9ORz4sIGluaXRpYWxpemEtCisgICAgICAgdGlvbiBzdHJpbmdzIGZvciB0aGUgdGVybWluYWwsIDxTVFJPTkc+aXByb2c8L1NUUk9ORz4sIHRoZSBwYXRoIG5hbWUgIG9mICBhCisgICAgICAgcHJvZ3JhbSAgdG8gYmUgcnVuIHRvIGluaXRpYWxpemUgdGhlIHRlcm1pbmFsLCBhbmQgPFNUUk9ORz5pZjwvU1RST05HPiwgdGhlCisgICAgICAgbmFtZSBvZiBhIGZpbGUgIGNvbnRhaW5pbmcgIGxvbmcgIGluaXRpYWxpemF0aW9uICBzdHJpbmdzLgorICAgICAgIFRoZXNlICBzdHJpbmdzIGFyZSBleHBlY3RlZCB0byBzZXQgdGhlIHRlcm1pbmFsIGludG8gbW9kZXMKKyAgICAgICBjb25zaXN0ZW50IHdpdGggdGhlICByZXN0ICBvZiAgdGhlICB0ZXJtaW5mbyAgZGVzY3JpcHRpb24uCiAgICAgICAgVGhleSBhcmUgbm9ybWFsbHkgc2VudCB0byB0aGUgdGVybWluYWwsIGJ5IHRoZSA8RU0+aW5pdDwvRU0+IG9wdGlvbgotICAgICAgIG9mICB0aGUgIDxFTT50cHV0PC9FTT4gIHByb2dyYW0sICBlYWNoIHRpbWUgdGhlIHVzZXIgbG9ncyBpbi4gIFRoZXkKKyAgICAgICBvZiB0aGUgPEVNPnRwdXQ8L0VNPiBwcm9ncmFtLCBlYWNoIHRpbWUgdGhlICB1c2VyICBsb2dzICBpbi4gICBUaGV5CiAgICAgICAgd2lsbCBiZSBwcmludGVkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CiAKICAgICAgICAgICAgICAgcnVuIHRoZSBwcm9ncmFtCkBAIC0xNzkzLDk0ICsxOTMwLDk3IEBACiAgICAgICAgICAgICAgIGFuZCBmaW5hbGx5CiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPFNUUk9ORz5pczM8L1NUUk9ORz4uCiAKLSAgICAgICBNb3N0IGluaXRpYWxpemF0aW9uIGlzIGRvbmUgd2l0aCAgPFNUUk9ORz5pczI8L1NUUk9ORz4uICAgU3BlY2lhbCAgdGVybWluYWwKKyAgICAgICBNb3N0ICBpbml0aWFsaXphdGlvbiAgaXMgIGRvbmUgd2l0aCA8U1RST05HPmlzMjwvU1RST05HPi4gIFNwZWNpYWwgdGVybWluYWwKICAgICAgICBtb2RlcyBjYW4gYmUgc2V0IHVwIHdpdGhvdXQgZHVwbGljYXRpbmcgc3RyaW5ncyBieSBwdXR0aW5nCi0gICAgICAgdGhlIGNvbW1vbiBzZXF1ZW5jZXMgaW4gPFNUUk9ORz5pczI8L1NUUk9ORz4gYW5kIHNwZWNpYWwgY2FzZXMgaW4gIDxTVFJPTkc+aXMxPC9TVFJPTkc+ICBhbmQKKyAgICAgICB0aGUgIGNvbW1vbiAgc2VxdWVuY2VzIGluIDxTVFJPTkc+aXMyPC9TVFJPTkc+IGFuZCBzcGVjaWFsIGNhc2VzIGluIDxTVFJPTkc+aXMxPC9TVFJPTkc+IGFuZAogICAgICAgIDxTVFJPTkc+aXMzPC9TVFJPTkc+LgogCiAgICAgICAgQSBzZXQgb2Ygc2VxdWVuY2VzIHRoYXQgZG9lcyBhIGhhcmRlciByZXNldCBmcm9tIGEgdG90YWxseQogICAgICAgIHVua25vd24gc3RhdGUgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+cnMxPC9TVFJPTkc+LCA8U1RST05HPnJzMjwvU1RST05HPiwgPFNUUk9ORz5yZjwvU1RST05HPiBhbmQgPFNUUk9ORz5yczM8L1NUUk9ORz4sIGFuYWxvLQotICAgICAgIGdvdXMgIHRvICA8U1RST05HPmlzMTwvU1RST05HPiAgPFNUUk9ORz4sPC9TVFJPTkc+ICA8U1RST05HPmlzMjwvU1RST05HPiAgPFNUUk9ORz4sPC9TVFJPTkc+ICA8U1RST05HPmlmPC9TVFJPTkc+ICBhbmQgPFNUUk9ORz5pczM8L1NUUk9ORz4gcmVzcGVjdGl2ZWx5LiAgVGhlc2UKLSAgICAgICBzdHJpbmdzIGFyZSBvdXRwdXQgYnkgdGhlIDxFTT5yZXNldDwvRU0+ICBwcm9ncmFtLCAgd2hpY2ggIGlzICB1c2VkCi0gICAgICAgd2hlbiAgdGhlIHRlcm1pbmFsIGdldHMgaW50byBhIHdlZGdlZCBzdGF0ZS4gIENvbW1hbmRzIGFyZQotICAgICAgIG5vcm1hbGx5IHBsYWNlZCBpbiA8U1RST05HPnJzMTwvU1RST05HPiwgPFNUUk9ORz5yczI8L1NUUk9ORz4gPFNUUk9ORz5yczM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+cmY8L1NUUk9ORz4gb25seSBpZiAgdGhleSAgcHJvLQotICAgICAgIGR1Y2UgIGFubm95aW5nIGVmZmVjdHMgb24gdGhlIHNjcmVlbiBhbmQgYXJlIG5vdCBuZWNlc3NhcnkKLSAgICAgICB3aGVuIGxvZ2dpbmcgaW4uICBGb3IgZXhhbXBsZSwgIHRoZSAgY29tbWFuZCAgdG8gIHNldCAgdGhlCi0gICAgICAgdnQxMDAgIGludG8gIDgwLWNvbHVtbiBtb2RlIHdvdWxkIG5vcm1hbGx5IGJlIHBhcnQgb2YgPFNUUk9ORz5pczI8L1NUUk9ORz4sCi0gICAgICAgYnV0IGl0IGNhdXNlcyBhbiBhbm5veWluZyBnbGl0Y2ggb2YgdGhlIHNjcmVlbiBhbmQgaXMgIG5vdAotICAgICAgIG5vcm1hbGx5ICBuZWVkZWQgIHNpbmNlIHRoZSB0ZXJtaW5hbCBpcyB1c3VhbGx5IGFscmVhZHkgaW4KKyAgICAgICBnb3VzIHRvIDxTVFJPTkc+aXMxPC9TVFJPTkc+IDxTVFJPTkc+LDwvU1RST05HPiAgPFNUUk9ORz5pczI8L1NUUk9ORz4gIDxTVFJPTkc+LDwvU1RST05HPiAgPFNUUk9ORz5pZjwvU1RST05HPiAgYW5kICA8U1RST05HPmlzMzwvU1RST05HPiAgcmVzcGVjdGl2ZWx5LiAgIFRoZXNlCisgICAgICAgc3RyaW5ncyAgYXJlICBvdXRwdXQgIGJ5ICB0aGUgPEVNPnJlc2V0PC9FTT4gcHJvZ3JhbSwgd2hpY2ggaXMgdXNlZAorICAgICAgIHdoZW4gdGhlIHRlcm1pbmFsIGdldHMgaW50byBhIHdlZGdlZCBzdGF0ZS4gIENvbW1hbmRzICBhcmUKKyAgICAgICBub3JtYWxseSAgcGxhY2VkICBpbiA8U1RST05HPnJzMTwvU1RST05HPiwgPFNUUk9ORz5yczI8L1NUUk9ORz4gPFNUUk9ORz5yczM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+cmY8L1NUUk9ORz4gb25seSBpZiB0aGV5IHByby0KKyAgICAgICBkdWNlIGFubm95aW5nIGVmZmVjdHMgb24gdGhlIHNjcmVlbiBhbmQgYXJlIG5vdCAgbmVjZXNzYXJ5CisgICAgICAgd2hlbiAgbG9nZ2luZyAgaW4uICAgRm9yICBleGFtcGxlLCAgdGhlIGNvbW1hbmQgdG8gc2V0IHRoZQorICAgICAgIHZ0MTAwIGludG8gODAtY29sdW1uIG1vZGUgd291bGQgbm9ybWFsbHkgYmUgcGFydCAgb2YgIDxTVFJPTkc+aXMyPC9TVFJPTkc+LAorICAgICAgIGJ1dCAgaXQgY2F1c2VzIGFuIGFubm95aW5nIGdsaXRjaCBvZiB0aGUgc2NyZWVuIGFuZCBpcyBub3QKKyAgICAgICBub3JtYWxseSBuZWVkZWQgc2luY2UgdGhlIHRlcm1pbmFsIGlzIHVzdWFsbHkgIGFscmVhZHkgIGluCiAgICAgICAgODAgY29sdW1uIG1vZGUuCiAKICAgICAgICBUaGUgPEVNPnJlc2V0PC9FTT4gcHJvZ3JhbSB3cml0ZXMgc3RyaW5ncyBpbmNsdWRpbmcgPFNUUk9ORz5pcHJvZzwvU1RST05HPiwgZXRjLiwgaW4KLSAgICAgICB0aGUgIHNhbWUgIG9yZGVyICBhcyAgdGhlICA8RU0+aW5pdDwvRU0+ICBwcm9ncmFtLCB1c2luZyA8U1RST05HPnJzMTwvU1RST05HPiwgZXRjLiwKKyAgICAgICB0aGUgc2FtZSBvcmRlciBhcyAgdGhlICA8RU0+aW5pdDwvRU0+ICBwcm9ncmFtLCAgdXNpbmcgIDxTVFJPTkc+cnMxPC9TVFJPTkc+LCAgZXRjLiwKICAgICAgICBpbnN0ZWFkIG9mIDxTVFJPTkc+aXMxPC9TVFJPTkc+LCBldGMuICBJZiBhbnkgb2YgPFNUUk9ORz5yczE8L1NUUk9ORz4sIDxTVFJPTkc+cnMyPC9TVFJPTkc+LCA8U1RST05HPnJzMzwvU1RST05HPiwgb3IgPFNUUk9ORz5yZjwvU1RST05HPiByZXNldAotICAgICAgIGNhcGFiaWxpdHkgIHN0cmluZ3MgIGFyZSAgbWlzc2luZywgdGhlIDxFTT5yZXNldDwvRU0+IHByb2dyYW0gZmFsbHMKKyAgICAgICBjYXBhYmlsaXR5IHN0cmluZ3MgYXJlIG1pc3NpbmcsIHRoZSAgPEVNPnJlc2V0PC9FTT4gIHByb2dyYW0gIGZhbGxzCiAgICAgICAgYmFjayAgdXBvbiAgdGhlICBjb3JyZXNwb25kaW5nICBpbml0aWFsaXphdGlvbiAgY2FwYWJpbGl0eQogICAgICAgIHN0cmluZy4KIAogICAgICAgIElmIHRoZXJlIGFyZSBjb21tYW5kcyB0byBzZXQgYW5kIGNsZWFyIHRhYiBzdG9wcywgdGhleSBjYW4KLSAgICAgICBiZSBnaXZlbiBhcyA8U1RST05HPnRiYzwvU1RST05HPiAoY2xlYXIgYWxsIHRhYiBzdG9wcykgYW5kIDxTVFJPTkc+aHRzPC9TVFJPTkc+IChzZXQgIGEgIHRhYgotICAgICAgIHN0b3AgIGluIHRoZSBjdXJyZW50IGNvbHVtbiBvZiBldmVyeSByb3cpLiAgSWYgYSBtb3JlIGNvbS0KLSAgICAgICBwbGV4IHNlcXVlbmNlIGlzIG5lZWRlZCAgdG8gIHNldCAgdGhlICB0YWJzICB0aGFuICBjYW4gIGJlCi0gICAgICAgZGVzY3JpYmVkICBieSAgdGhpcywgIHRoZSBzZXF1ZW5jZSBjYW4gYmUgcGxhY2VkIGluIDxTVFJPTkc+aXMyPC9TVFJPTkc+IG9yCisgICAgICAgYmUgIGdpdmVuICBhcyA8U1RST05HPnRiYzwvU1RST05HPiAoY2xlYXIgYWxsIHRhYiBzdG9wcykgYW5kIDxTVFJPTkc+aHRzPC9TVFJPTkc+IChzZXQgYSB0YWIKKyAgICAgICBzdG9wIGluIHRoZSBjdXJyZW50IGNvbHVtbiBvZiBldmVyeSByb3cpLiAgSWYgYSBtb3JlICBjb20tCisgICAgICAgcGxleCAgc2VxdWVuY2UgIGlzICBuZWVkZWQgIHRvICBzZXQgIHRoZSAgdGFicyB0aGFuIGNhbiBiZQorICAgICAgIGRlc2NyaWJlZCBieSB0aGlzLCB0aGUgc2VxdWVuY2UgY2FuIGJlIHBsYWNlZCAgaW4gIDxTVFJPTkc+aXMyPC9TVFJPTkc+ICBvcgogICAgICAgIDxTVFJPTkc+aWY8L1NUUk9ORz4uCiAKLSAgIDxTVFJPTkc+RGVsYXlzPC9TVFJPTkc+IDxTVFJPTkc+YW5kPC9TVFJPTkc+IDxTVFJPTkc+UGFkZGluZzwvU1RST05HPgotICAgICAgIE1hbnkgb2xkZXIgYW5kIHNsb3dlciAgdGVybWluYWxzICBkbyAgbm90ICBzdXBwb3J0ICBlaXRoZXIKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtRGVsYXlzLWFuZC1QYWRkaW5nIj5EZWxheXMgYW5kIFBhZGRpbmc8L2E+PC9IMz48UFJFPgorICAgICAgIE1hbnkgIG9sZGVyICBhbmQgIHNsb3dlciAgdGVybWluYWxzICBkbyBub3Qgc3VwcG9ydCBlaXRoZXIKICAgICAgICBYT04vWE9GRiBvciBEVFIgaGFuZHNoYWtpbmcsIGluY2x1ZGluZyBoYXJkIGNvcHkgdGVybWluYWxzCi0gICAgICAgYW5kIHNvbWUgdmVyeSBhcmNoYWljIENSVHMgKGluY2x1ZGluZywgIGZvciAgZXhhbXBsZSwgIERFQwotICAgICAgIFZUMTAwcykuICAgVGhlc2UgbWF5IHJlcXVpcmUgcGFkZGluZyBjaGFyYWN0ZXJzIGFmdGVyIGNlci0KKyAgICAgICBhbmQgIHNvbWUgIHZlcnkgIGFyY2hhaWMgQ1JUcyAoaW5jbHVkaW5nLCBmb3IgZXhhbXBsZSwgREVDCisgICAgICAgVlQxMDBzKS4gIFRoZXNlIG1heSByZXF1aXJlIHBhZGRpbmcgY2hhcmFjdGVycyBhZnRlciAgY2VyLQogICAgICAgIHRhaW4gY3Vyc29yIG1vdGlvbnMgYW5kIHNjcmVlbiBjaGFuZ2VzLgogCiAgICAgICAgSWYgdGhlIHRlcm1pbmFsIHVzZXMgeG9uL3hvZmYgaGFuZHNoYWtpbmcgZm9yIGZsb3cgY29udHJvbAotICAgICAgICh0aGF0ICBpcywgaXQgYXV0b21hdGljYWxseSBlbWl0cyBeUyBiYWNrIHRvIHRoZSBob3N0IHdoZW4KKyAgICAgICAodGhhdCBpcywgaXQgYXV0b21hdGljYWxseSBlbWl0cyBeUyBiYWNrIHRvIHRoZSBob3N0ICB3aGVuCiAgICAgICAgaXRzIGlucHV0IGJ1ZmZlcnMgYXJlIGNsb3NlIHRvIGZ1bGwpLCBzZXQgPFNUUk9ORz54b248L1NUUk9ORz4uICBUaGlzIGNhcGEtCi0gICAgICAgYmlsaXR5ICBzdXBwcmVzc2VzICB0aGUgZW1pc3Npb24gb2YgcGFkZGluZy4gIFlvdSBjYW4gYWxzbwotICAgICAgIHNldCBpdCBmb3IgbWVtb3J5LW1hcHBlZCBjb25zb2xlIGRldmljZXMgZWZmZWN0aXZlbHkgIHRoYXQKLSAgICAgICBkbyAgbm90ICBoYXZlICBhICBzcGVlZCBsaW1pdC4gIFBhZGRpbmcgaW5mb3JtYXRpb24gc2hvdWxkCi0gICAgICAgc3RpbGwgYmUgaW5jbHVkZWQgc28gdGhhdCByb3V0aW5lcyBjYW4gbWFrZSAgYmV0dGVyICBkZWNpLQorICAgICAgIGJpbGl0eSBzdXBwcmVzc2VzIHRoZSBlbWlzc2lvbiBvZiBwYWRkaW5nLiAgWW91ICBjYW4gIGFsc28KKyAgICAgICBzZXQgIGl0IGZvciBtZW1vcnktbWFwcGVkIGNvbnNvbGUgZGV2aWNlcyBlZmZlY3RpdmVseSB0aGF0CisgICAgICAgZG8gbm90IGhhdmUgYSBzcGVlZCAgbGltaXQuICAgUGFkZGluZyAgaW5mb3JtYXRpb24gIHNob3VsZAorICAgICAgIHN0aWxsICBiZSAgaW5jbHVkZWQgc28gdGhhdCByb3V0aW5lcyBjYW4gbWFrZSBiZXR0ZXIgZGVjaS0KICAgICAgICBzaW9ucyBhYm91dCByZWxhdGl2ZSBjb3N0cywgYnV0IGFjdHVhbCBwYWQgY2hhcmFjdGVycyB3aWxsCiAgICAgICAgbm90IGJlIHRyYW5zbWl0dGVkLgogCi0gICAgICAgSWYgPFNUUk9ORz5wYjwvU1RST05HPiAocGFkZGluZyBiYXVkIHJhdGUpIGlzIGdpdmVuLCBwYWRkaW5nIGlzICBzdXBwcmVzc2VkCi0gICAgICAgYXQgIGJhdWQgcmF0ZXMgYmVsb3cgdGhlIHZhbHVlIG9mIDxTVFJPTkc+cGI8L1NUUk9ORz4uICBJZiB0aGUgZW50cnkgaGFzIG5vCi0gICAgICAgcGFkZGluZyBiYXVkIHJhdGUsIHRoZW4gd2hldGhlciBwYWRkaW5nIGlzIGVtaXR0ZWQgb3IgIG5vdAorICAgICAgIElmICA8U1RST05HPnBiPC9TVFJPTkc+IChwYWRkaW5nIGJhdWQgcmF0ZSkgaXMgZ2l2ZW4sIHBhZGRpbmcgaXMgc3VwcHJlc3NlZAorICAgICAgIGF0IGJhdWQgcmF0ZXMgYmVsb3cgdGhlIHZhbHVlIG9mIDxTVFJPTkc+cGI8L1NUUk9ORz4uICBJZiB0aGUgZW50cnkgaGFzICBubworICAgICAgIHBhZGRpbmcgIGJhdWQgcmF0ZSwgdGhlbiB3aGV0aGVyIHBhZGRpbmcgaXMgZW1pdHRlZCBvciBub3QKICAgICAgICBpcyBjb21wbGV0ZWx5IGNvbnRyb2xsZWQgYnkgPFNUUk9ORz54b248L1NUUk9ORz4uCiAKLSAgICAgICBJZiAgdGhlIHRlcm1pbmFsIHJlcXVpcmVzIG90aGVyIHRoYW4gYSBudWxsICh6ZXJvKSBjaGFyYWMtCi0gICAgICAgdGVyIGFzIGEgcGFkLCB0aGVuIHRoaXMgY2FuIGJlIGdpdmVuICBhcyAgPFNUUk9ORz5wYWQ8L1NUUk9ORz4uICAgT25seSAgdGhlCisgICAgICAgSWYgdGhlIHRlcm1pbmFsIHJlcXVpcmVzIG90aGVyIHRoYW4gYSBudWxsICh6ZXJvKSAgY2hhcmFjLQorICAgICAgIHRlciAgYXMgIGEgIHBhZCwgIHRoZW4gdGhpcyBjYW4gYmUgZ2l2ZW4gYXMgPFNUUk9ORz5wYWQ8L1NUUk9ORz4uICBPbmx5IHRoZQogICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgPFNUUk9ORz5wYWQ8L1NUUk9ORz4gc3RyaW5nIGlzIHVzZWQuCiAKIAotICAgPFNUUk9ORz5TdGF0dXM8L1NUUk9ORz4gPFNUUk9ORz5MaW5lczwvU1RST05HPgotICAgICAgIFNvbWUgIHRlcm1pbmFscyAgaGF2ZSAgYW4gZXh0cmEgYHN0YXR1cyBsaW5lJyB3aGljaCBpcyBub3QKLSAgICAgICBub3JtYWxseSB1c2VkIGJ5IHNvZnR3YXJlIChhbmQgdGh1cyAgbm90ICBjb3VudGVkICBpbiAgdGhlCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1TdGF0dXMtTGluZXMiPlN0YXR1cyBMaW5lczwvYT48L0gzPjxQUkU+CisgICAgICAgU29tZSB0ZXJtaW5hbHMgaGF2ZSBhbiBleHRyYSAic3RhdHVzIGxpbmUiICB3aGljaCAgaXMgIG5vdAorICAgICAgIG5vcm1hbGx5ICB1c2VkICBieSAgc29mdHdhcmUgIChhbmQgdGh1cyBub3QgY291bnRlZCBpbiB0aGUKICAgICAgICB0ZXJtaW5hbCdzIDxTVFJPTkc+bGluZXM8L1NUUk9ORz4gY2FwYWJpbGl0eSkuCiAKLSAgICAgICBUaGUgIHNpbXBsZXN0ICBjYXNlICBpcyAgYSAgc3RhdHVzICBsaW5lICB3aGljaCBpcyBjdXJzb3ItCi0gICAgICAgYWRkcmVzc2FibGUgYnV0IG5vdCBwYXJ0IG9mIHRoZSBtYWluIHNjcm9sbGluZyAgcmVnaW9uICBvbgotICAgICAgIHRoZSAgc2NyZWVuOyAgdGhlICBIZWF0aGtpdCAgSDE5IGhhcyBhIHN0YXR1cyBsaW5lIG9mIHRoaXMKLSAgICAgICBraW5kLCBhcyB3b3VsZCBhIDI0LWxpbmUgVlQxMDAgd2l0aCAgYSAgMjMtbGluZSAgc2Nyb2xsaW5nCi0gICAgICAgcmVnaW9uICBzZXQgdXAgb24gaW5pdGlhbGl6YXRpb24uICBUaGlzIHNpdHVhdGlvbiBpcyBpbmRpLQorICAgICAgIFRoZSBzaW1wbGVzdCBjYXNlICBpcyAgYSAgc3RhdHVzICBsaW5lICB3aGljaCAgaXMgIGN1cnNvci0KKyAgICAgICBhZGRyZXNzYWJsZSAgYnV0ICBub3QgcGFydCBvZiB0aGUgbWFpbiBzY3JvbGxpbmcgcmVnaW9uIG9uCisgICAgICAgdGhlIHNjcmVlbjsgdGhlIEhlYXRoa2l0IEgxOSBoYXMgYSAgc3RhdHVzICBsaW5lICBvZiAgdGhpcworICAgICAgIGtpbmQsICBhcyAgd291bGQgIGEgMjQtbGluZSBWVDEwMCB3aXRoIGEgMjMtbGluZSBzY3JvbGxpbmcKKyAgICAgICByZWdpb24gc2V0IHVwIG9uIGluaXRpYWxpemF0aW9uLiAgVGhpcyBzaXR1YXRpb24gaXMgIGluZGktCiAgICAgICAgY2F0ZWQgYnkgdGhlIDxTVFJPTkc+aHM8L1NUUk9ORz4gY2FwYWJpbGl0eS4KIAogICAgICAgIFNvbWUgdGVybWluYWxzIHdpdGggc3RhdHVzIGxpbmVzIG5lZWQgc3BlY2lhbCBzZXF1ZW5jZXMgdG8KLSAgICAgICBhY2Nlc3MgIHRoZSAgc3RhdHVzICBsaW5lLiAgIFRoZXNlICBtYXkgIGJlIGV4cHJlc3NlZCBhcyBhCisgICAgICAgYWNjZXNzIHRoZSBzdGF0dXMgbGluZS4gICBUaGVzZSAgbWF5ICBiZSAgZXhwcmVzc2VkICBhcyAgYQogICAgICAgIHN0cmluZyB3aXRoIHNpbmdsZSBwYXJhbWV0ZXIgPFNUUk9ORz50c2w8L1NUUk9ORz4gd2hpY2ggdGFrZXMgdGhlIGN1cnNvciB0bwotICAgICAgIGEgIGdpdmVuIHplcm8tb3JpZ2luIGNvbHVtbiBvbiB0aGUgc3RhdHVzIGxpbmUuICBUaGUgY2FwYS0KKyAgICAgICBhIGdpdmVuIHplcm8tb3JpZ2luIGNvbHVtbiBvbiB0aGUgc3RhdHVzIGxpbmUuICBUaGUgIGNhcGEtCiAgICAgICAgYmlsaXR5IDxTVFJPTkc+ZnNsPC9TVFJPTkc+IG11c3QgcmV0dXJuIHRvIHRoZSBtYWluLXNjcmVlbiBjdXJzb3IgcG9zaXRpb25zCi0gICAgICAgYmVmb3JlICB0aGUgIGxhc3QgIDxTVFJPTkc+dHNsPC9TVFJPTkc+LiAgIFlvdSBtYXkgbmVlZCB0byBlbWJlZCB0aGUgc3RyaW5nCi0gICAgICAgdmFsdWVzIG9mIDxTVFJPTkc+c2M8L1NUUk9ORz4gKHNhdmUgY3Vyc29yKSBhbmQgPFNUUk9ORz5yYzwvU1RST05HPiAocmVzdG9yZSBjdXJzb3IpIGluICA8U1RST05HPnRzbDwvU1RST05HPgorICAgICAgIGJlZm9yZSB0aGUgbGFzdCA8U1RST05HPnRzbDwvU1RST05HPi4gIFlvdSBtYXkgbmVlZCAgdG8gIGVtYmVkICB0aGUgIHN0cmluZworICAgICAgIHZhbHVlcyAgb2YgPFNUUk9ORz5zYzwvU1RST05HPiAoc2F2ZSBjdXJzb3IpIGFuZCA8U1RST05HPnJjPC9TVFJPTkc+IChyZXN0b3JlIGN1cnNvcikgaW4gPFNUUk9ORz50c2w8L1NUUk9ORz4KICAgICAgICBhbmQgPFNUUk9ORz5mc2w8L1NUUk9ORz4gdG8gYWNjb21wbGlzaCB0aGlzLgogCi0gICAgICAgVGhlICBzdGF0dXMgIGxpbmUgaXMgbm9ybWFsbHkgYXNzdW1lZCB0byBiZSB0aGUgc2FtZSB3aWR0aAotICAgICAgIGFzIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBJZiB0aGlzIGlzIHVudHJ1ZSwgeW91ICBjYW4KKyAgICAgICBUaGUgc3RhdHVzIGxpbmUgaXMgbm9ybWFsbHkgYXNzdW1lZCB0byBiZSB0aGUgIHNhbWUgIHdpZHRoCisgICAgICAgYXMgIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBJZiB0aGlzIGlzIHVudHJ1ZSwgeW91IGNhbgogICAgICAgIHNwZWNpZnkgaXQgd2l0aCB0aGUgbnVtZXJpYyBjYXBhYmlsaXR5IDxTVFJPTkc+d3NsPC9TVFJPTkc+LgogCi0gICAgICAgQSAgY29tbWFuZCB0byBlcmFzZSBvciBibGFuayB0aGUgc3RhdHVzIGxpbmUgbWF5IGJlIHNwZWNpLQorICAgICAgIEEgY29tbWFuZCB0byBlcmFzZSBvciBibGFuayB0aGUgc3RhdHVzIGxpbmUgbWF5IGJlICBzcGVjaS0KICAgICAgICBmaWVkIGFzIDxTVFJPTkc+ZHNsPC9TVFJPTkc+LgogCi0gICAgICAgVGhlICBib29sZWFuICBjYXBhYmlsaXR5ICA8U1RST05HPmVzbG9rPC9TVFJPTkc+ICBzcGVjaWZpZXMgICB0aGF0ICAgZXNjYXBlCisgICAgICAgVGhlICAgYm9vbGVhbiAgIGNhcGFiaWxpdHkgIDxTVFJPTkc+ZXNsb2s8L1NUUk9ORz4gIHNwZWNpZmllcyAgdGhhdCAgZXNjYXBlCiAgICAgICAgc2VxdWVuY2VzLCB0YWJzLCBldGMuLCB3b3JrIG9yZGluYXJpbHkgaW4gdGhlIHN0YXR1cyBsaW5lLgogCiAgICAgICAgVGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQgdXNlIGFueSAgb2YgIHRoZXNlCkBAIC0xODg4LDQ5ICsyMDI4LDQ4IEBACiAgICAgICAgYmVjb21lIGltcG9ydGFudC4KIAogCi0gICA8U1RST05HPkxpbmU8L1NUUk9ORz4gPFNUUk9ORz5HcmFwaGljczwvU1RST05HPgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtTGluZS1HcmFwaGljcyI+TGluZSBHcmFwaGljczwvYT48L0gzPjxQUkU+CiAgICAgICAgTWFueSB0ZXJtaW5hbHMgaGF2ZSBhbHRlcm5hdGUgY2hhcmFjdGVyICBzZXRzICB1c2VmdWwgIGZvcgogICAgICAgIGZvcm1zLWRyYXdpbmcuICAgVGVybWluZm8gIGFuZCA8U1RST05HPmN1cnNlczwvU1RST05HPiBidWlsZCBpbiBzdXBwb3J0IGZvcgogICAgICAgIHRoZSBkcmF3aW5nIGNoYXJhY3RlcnMgc3VwcG9ydGVkIGJ5IHRoZSBWVDEwMCwgIHdpdGggIHNvbWUKICAgICAgICBjaGFyYWN0ZXJzICBmcm9tICB0aGUgIEFUJmFtcDtUICA0NDEwdjEgYWRkZWQuICBUaGlzIGFsdGVybmF0ZQogICAgICAgIGNoYXJhY3RlciBzZXQgbWF5IGJlIHNwZWNpZmllZCBieSB0aGUgPFNUUk9ORz5hY3NjPC9TVFJPTkc+IGNhcGFiaWxpdHkuCiAKLQotICAgICAgICAgICAgICAgIDxTVFJPTkc+R2x5cGg8L1NUUk9ORz4gICAgICAgICAgICAgPFNUUk9ORz5BQ1M8L1NUUk9ORz4gICAgICAgICAgICA8U1RST05HPkFzY2lpPC9TVFJPTkc+ICAgICAgPFNUUk9ORz5WVDEwMDwvU1RST05HPgotICAgICAgICAgICAgICAgICA8U1RST05HPk5hbWU8L1NUUk9ORz4gICAgICAgICAgICAgPFNUUk9ORz5OYW1lPC9TVFJPTkc+ICAgICAgICAgICA8U1RST05HPkRlZmF1bHQ8L1NUUk9ORz4gICAgPFNUUk9ORz5OYW1lPC9TVFJPTkc+Ci0gICAgICAgVUsgcG91bmQgc2lnbiAgICAgICAgICAgICAgQUNTX1NURVJMSU5HICAgZiAgICAgICAgICB9Ci0gICAgICAgYXJyb3cgcG9pbnRpbmcgZG93biAgICAgICAgQUNTX0RBUlJPVyAgICAgdiAgICAgICAgICAuCi0gICAgICAgYXJyb3cgcG9pbnRpbmcgbGVmdCAgICAgICAgQUNTX0xBUlJPVyAgICAgJmx0OyAgICAgICAgICAsCi0gICAgICAgYXJyb3cgcG9pbnRpbmcgcmlnaHQgICAgICAgQUNTX1JBUlJPVyAgICAgJmd0OyAgICAgICAgICArCi0gICAgICAgYXJyb3cgcG9pbnRpbmcgdXAgICAgICAgICAgQUNTX1VBUlJPVyAgICAgXiAgICAgICAgICAtCi0gICAgICAgYm9hcmQgb2Ygc3F1YXJlcyAgICAgICAgICAgQUNTX0JPQVJEICAgICAgIyAgICAgICAgICBoCi0gICAgICAgYnVsbGV0ICAgICAgICAgICAgICAgICAgICAgQUNTX0JVTExFVCAgICAgbyAgICAgICAgICB+Ci0gICAgICAgY2hlY2tlciBib2FyZCAoc3RpcHBsZSkgICAgQUNTX0NLQk9BUkQgICAgOiAgICAgICAgICBhCi0gICAgICAgZGVncmVlIHN5bWJvbCAgICAgICAgICAgICAgQUNTX0RFR1JFRSAgICAgXCAgICAgICAgICBmCi0gICAgICAgZGlhbW9uZCAgICAgICAgICAgICAgICAgICAgQUNTX0RJQU1PTkQgICAgKyAgICAgICAgICBgCi0gICAgICAgZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvICAgQUNTX0dFUVVBTCAgICAgJmd0OyAgICAgICAgICB6Ci0gICAgICAgZ3JlZWsgcGkgICAgICAgICAgICAgICAgICAgQUNTX1BJICAgICAgICAgKiAgICAgICAgICB7Ci0gICAgICAgaG9yaXpvbnRhbCBsaW5lICAgICAgICAgICAgQUNTX0hMSU5FICAgICAgLSAgICAgICAgICBxCi0gICAgICAgbGFudGVybiBzeW1ib2wgICAgICAgICAgICAgQUNTX0xBTlRFUk4gICAgIyAgICAgICAgICBpCi0gICAgICAgbGFyZ2UgcGx1cyBvciBjcm9zc292ZXIgICAgQUNTX1BMVVMgICAgICAgKyAgICAgICAgICBuCi0gICAgICAgbGVzcy10aGFuLW9yLWVxdWFsLXRvICAgICAgQUNTX0xFUVVBTCAgICAgJmx0OyAgICAgICAgICB5Ci0KLSAgICAgICBsb3dlciBsZWZ0IGNvcm5lciAgICAgICAgICBBQ1NfTExDT1JORVIgICArICAgICAgICAgIG0KLSAgICAgICBsb3dlciByaWdodCBjb3JuZXIgICAgICAgICBBQ1NfTFJDT1JORVIgICArICAgICAgICAgIGoKLSAgICAgICBub3QtZXF1YWwgICAgICAgICAgICAgICAgICBBQ1NfTkVRVUFMICAgICAhICAgICAgICAgIHwKLSAgICAgICBwbHVzL21pbnVzICAgICAgICAgICAgICAgICBBQ1NfUExNSU5VUyAgICAjICAgICAgICAgIGcKLSAgICAgICBzY2FuIGxpbmUgMSAgICAgICAgICAgICAgICBBQ1NfUzEgICAgICAgICB+ICAgICAgICAgIG8KLSAgICAgICBzY2FuIGxpbmUgMyAgICAgICAgICAgICAgICBBQ1NfUzMgICAgICAgICAtICAgICAgICAgIHAKLSAgICAgICBzY2FuIGxpbmUgNyAgICAgICAgICAgICAgICBBQ1NfUzcgICAgICAgICAtICAgICAgICAgIHIKLSAgICAgICBzY2FuIGxpbmUgOSAgICAgICAgICAgICAgICBBQ1NfUzkgICAgICAgICBfICAgICAgICAgIHMKLSAgICAgICBzb2xpZCBzcXVhcmUgYmxvY2sgICAgICAgICBBQ1NfQkxPQ0sgICAgICAjICAgICAgICAgIDAKLSAgICAgICB0ZWUgcG9pbnRpbmcgZG93biAgICAgICAgICBBQ1NfVFRFRSAgICAgICArICAgICAgICAgIHcKLSAgICAgICB0ZWUgcG9pbnRpbmcgbGVmdCAgICAgICAgICBBQ1NfUlRFRSAgICAgICArICAgICAgICAgIHUKLSAgICAgICB0ZWUgcG9pbnRpbmcgcmlnaHQgICAgICAgICBBQ1NfTFRFRSAgICAgICArICAgICAgICAgIHQKLSAgICAgICB0ZWUgcG9pbnRpbmcgdXAgICAgICAgICAgICBBQ1NfQlRFRSAgICAgICArICAgICAgICAgIHYKLSAgICAgICB1cHBlciBsZWZ0IGNvcm5lciAgICAgICAgICBBQ1NfVUxDT1JORVIgICArICAgICAgICAgIGwKLSAgICAgICB1cHBlciByaWdodCBjb3JuZXIgICAgICAgICBBQ1NfVVJDT1JORVIgICArICAgICAgICAgIGsKLSAgICAgICB2ZXJ0aWNhbCBsaW5lICAgICAgICAgICAgICBBQ1NfVkxJTkUgICAgICB8ICAgICAgICAgIHgKKyAgICAgICA8U1RST05HPkdseXBoPC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPkFDUzwvU1RST05HPiAgICAgICAgICAgPFNUUk9ORz5Bc2NpaTwvU1RST05HPiAgICAgPFNUUk9ORz5WVDEwMDwvU1RST05HPgorICAgICAgIDxTVFJPTkc+TmFtZTwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+TmFtZTwvU1RST05HPiAgICAgICAgICA8U1RST05HPkRlZmF1bHQ8L1NUUk9ORz4gICA8U1RST05HPk5hbWU8L1NUUk9ORz4KKyAgICAgICBVSyBwb3VuZCBzaWduICAgICAgICAgICAgICAgQUNTX1NURVJMSU5HICBmICAgICAgICAgfQorICAgICAgIGFycm93IHBvaW50aW5nIGRvd24gICAgICAgICBBQ1NfREFSUk9XICAgIHYgICAgICAgICAuCisgICAgICAgYXJyb3cgcG9pbnRpbmcgbGVmdCAgICAgICAgIEFDU19MQVJST1cgICAgJmx0OyAgICAgICAgICwKKyAgICAgICBhcnJvdyBwb2ludGluZyByaWdodCAgICAgICAgQUNTX1JBUlJPVyAgICAmZ3Q7ICAgICAgICAgKworICAgICAgIGFycm93IHBvaW50aW5nIHVwICAgICAgICAgICBBQ1NfVUFSUk9XICAgIF4gICAgICAgICAtCisgICAgICAgYm9hcmQgb2Ygc3F1YXJlcyAgICAgICAgICAgIEFDU19CT0FSRCAgICAgIyAgICAgICAgIGgKKyAgICAgICBidWxsZXQgICAgICAgICAgICAgICAgICAgICAgQUNTX0JVTExFVCAgICBvICAgICAgICAgfgorICAgICAgIGNoZWNrZXIgYm9hcmQgKHN0aXBwbGUpICAgICBBQ1NfQ0tCT0FSRCAgIDogICAgICAgICBhCisgICAgICAgZGVncmVlIHN5bWJvbCAgICAgICAgICAgICAgIEFDU19ERUdSRUUgICAgXCAgICAgICAgIGYKKyAgICAgICBkaWFtb25kICAgICAgICAgICAgICAgICAgICAgQUNTX0RJQU1PTkQgICArICAgICAgICAgYAorICAgICAgIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byAgICBBQ1NfR0VRVUFMICAgICZndDsgICAgICAgICB6CisgICAgICAgZ3JlZWsgcGkgICAgICAgICAgICAgICAgICAgIEFDU19QSSAgICAgICAgKiAgICAgICAgIHsKKyAgICAgICBob3Jpem9udGFsIGxpbmUgICAgICAgICAgICAgQUNTX0hMSU5FICAgICAtICAgICAgICAgcQorICAgICAgIGxhbnRlcm4gc3ltYm9sICAgICAgICAgICAgICBBQ1NfTEFOVEVSTiAgICMgICAgICAgICBpCisgICAgICAgbGFyZ2UgcGx1cyBvciBjcm9zc292ZXIgICAgIEFDU19QTFVTICAgICAgKyAgICAgICAgIG4KKyAgICAgICBsZXNzLXRoYW4tb3ItZXF1YWwtdG8gICAgICAgQUNTX0xFUVVBTCAgICAmbHQ7ICAgICAgICAgeQorICAgICAgIGxvd2VyIGxlZnQgY29ybmVyICAgICAgICAgICBBQ1NfTExDT1JORVIgICsgICAgICAgICBtCisgICAgICAgbG93ZXIgcmlnaHQgY29ybmVyICAgICAgICAgIEFDU19MUkNPUk5FUiAgKyAgICAgICAgIGoKKyAgICAgICBub3QtZXF1YWwgICAgICAgICAgICAgICAgICAgQUNTX05FUVVBTCAgICAhICAgICAgICAgfAorICAgICAgIHBsdXMvbWludXMgICAgICAgICAgICAgICAgICBBQ1NfUExNSU5VUyAgICMgICAgICAgICBnCisgICAgICAgc2NhbiBsaW5lIDEgICAgICAgICAgICAgICAgIEFDU19TMSAgICAgICAgfiAgICAgICAgIG8KKyAgICAgICBzY2FuIGxpbmUgMyAgICAgICAgICAgICAgICAgQUNTX1MzICAgICAgICAtICAgICAgICAgcAorICAgICAgIHNjYW4gbGluZSA3ICAgICAgICAgICAgICAgICBBQ1NfUzcgICAgICAgIC0gICAgICAgICByCisgICAgICAgc2NhbiBsaW5lIDkgICAgICAgICAgICAgICAgIEFDU19TOSAgICAgICAgXyAgICAgICAgIHMKKyAgICAgICBzb2xpZCBzcXVhcmUgYmxvY2sgICAgICAgICAgQUNTX0JMT0NLICAgICAjICAgICAgICAgMAorICAgICAgIHRlZSBwb2ludGluZyBkb3duICAgICAgICAgICBBQ1NfVFRFRSAgICAgICsgICAgICAgICB3CisgICAgICAgdGVlIHBvaW50aW5nIGxlZnQgICAgICAgICAgIEFDU19SVEVFICAgICAgKyAgICAgICAgIHUKKyAgICAgICB0ZWUgcG9pbnRpbmcgcmlnaHQgICAgICAgICAgQUNTX0xURUUgICAgICArICAgICAgICAgdAorICAgICAgIHRlZSBwb2ludGluZyB1cCAgICAgICAgICAgICBBQ1NfQlRFRSAgICAgICsgICAgICAgICB2CisgICAgICAgdXBwZXIgbGVmdCBjb3JuZXIgICAgICAgICAgIEFDU19VTENPUk5FUiAgKyAgICAgICAgIGwKKyAgICAgICB1cHBlciByaWdodCBjb3JuZXIgICAgICAgICAgQUNTX1VSQ09STkVSICArICAgICAgICAgaworICAgICAgIHZlcnRpY2FsIGxpbmUgICAgICAgICAgICAgICBBQ1NfVkxJTkUgICAgIHwgICAgICAgICB4CiAKICAgICAgICBUaGUgYmVzdCB3YXkgdG8gZGVmaW5lIGEgbmV3IGRldmljZSdzIGdyYXBoaWNzIHNldCAgaXMgIHRvCiAgICAgICAgYWRkICBhICBjb2x1bW4gIHRvIGEgY29weSBvZiB0aGlzIHRhYmxlIGZvciB5b3VyIHRlcm1pbmFsLApAQCAtMTk0MSw5ICsyMDgwLDEwIEBACiAgICAgICAgQUNTQyBzdHJpbmcuCiAKIAotICAgPFNUUk9ORz5Db2xvcjwvU1RST05HPiA8U1RST05HPkhhbmRsaW5nPC9TVFJPTkc+Ci0gICAgICAgTW9zdCBjb2xvciB0ZXJtaW5hbHMgYXJlIGVpdGhlciBgVGVrdHJvbml4LWxpa2UnICBvciAgYEhQLQotICAgICAgIGxpa2UnLiAgIFRla3Ryb25peC1saWtlIHRlcm1pbmFscyBoYXZlIGEgcHJlZGVmaW5lZCBzZXQgb2YKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLUNvbG9yLUhhbmRsaW5nIj5Db2xvciBIYW5kbGluZzwvYT48L0gzPjxQUkU+CisgICAgICAgTW9zdCBjb2xvciB0ZXJtaW5hbHMgYXJlIGVpdGhlciAiVGVrdHJvbml4LWxpa2UiICBvciAgIkhQLQorICAgICAgIGxpa2UiLiAgIFRla3Ryb25peC1saWtlIHRlcm1pbmFscyBoYXZlIGEgcHJlZGVmaW5lZCBzZXQgb2YKICAgICAgICBOIGNvbG9ycyAod2hlcmUgTiB1c3VhbGx5IDgpLCBhbmQgY2FuICBzZXQgIGNoYXJhY3Rlci1jZWxsCiAgICAgICAgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjaGFyYWN0ZXJzIGluZGVwZW5kZW50bHksIG1peGluZwogICAgICAgIHRoZW0gaW50byBOICogTiBjb2xvci1wYWlycy4gIE9uICBIUC1saWtlICB0ZXJtaW5hbHMsICB0aGUKQEAgLTE5ODYsNyArMjEyNiw2IEBACiAgICAgICAgdGhlc2UgIGFzICBpdCAgbGlrZXMsICBidXQgIHRoZSBSR0IgdmFsdWVzIGluZGljYXRlIG5vcm1hbAogICAgICAgIGxvY2F0aW9ucyBpbiBjb2xvciBzcGFjZS4KIAotCiAgICAgICAgICAgICAgPFNUUk9ORz5Db2xvcjwvU1RST05HPiAgICAgICA8U1RST05HPiNkZWZpbmU8L1NUUk9ORz4gICAgICAgPFNUUk9ORz5WYWx1ZTwvU1RST05HPiAgICAgICA8U1RST05HPlJHQjwvU1RST05HPgogICAgICAgICAgICAgIGJsYWNrICAgICA8U1RST05HPkNPTE9SX0JMQUNLPC9TVFJPTkc+ICAgICAgIDAgICAgIDAsIDAsIDAKICAgICAgICAgICAgICByZWQgICAgICAgPFNUUk9ORz5DT0xPUl9SRUQ8L1NUUk9ORz4gICAgICAgICAxICAgICBtYXgsMCwwCkBAIC0yMDA5LDYgKzIxNDgsNyBAQAogICAgICAgICAgICAgIG1hZ2VudGEgICA8U1RST05HPkNPTE9SX01BR0VOVEE8L1NUUk9ORz4gICAgIDUgICAgIG1heCwwLG1heAogICAgICAgICAgICAgIHllbGxvdyAgICA8U1RST05HPkNPTE9SX1lFTExPVzwvU1RST05HPiAgICAgIDYgICAgIG1heCxtYXgsMAogICAgICAgICAgICAgIHdoaXRlICAgICA8U1RST05HPkNPTE9SX1dISVRFPC9TVFJPTkc+ICAgICAgIDcgICAgIG1heCxtYXgsbWF4CisKICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90IGNvbmZ1c2UgdGhlIHR3byBzZXRzIG9mIGNvbG9yIGNhcGEtCiAgICAgICAgYmlsaXRpZXM7IG90aGVyd2lzZSByZWQvYmx1ZSB3aWxsIGJlIGludGVyY2hhbmdlZCAgb24gIHRoZQogICAgICAgIGRpc3BsYXkuCkBAIC0yMDM4LDE3ICsyMTc4LDIzIEBACiAgICAgICAgb3JzICBhcmUgIGVuYWJsZWQuICBUaGUgY29ycmVzcG9uZGVuY2Ugd2l0aCB0aGUgYXR0cmlidXRlcwogICAgICAgIHVuZGVyc3Rvb2QgYnkgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gaXMgYXMgZm9sbG93czoKIAotCi0gICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz5BdHRyaWJ1dGU8L1NUUk9ORz4gICAgICA8U1RST05HPkJpdDwvU1RST05HPiAgIDxTVFJPTkc+RGVjaW1hbDwvU1RST05HPgotICAgICAgICAgICAgICAgICAgICAgIEFfU1RBTkRPVVQgICAgIDAgICAgIDEKLSAgICAgICAgICAgICAgICAgICAgICBBX1VOREVSTElORSAgICAxICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgQV9SRVZFUlNFICAgICAgMiAgICAgNAotICAgICAgICAgICAgICAgICAgICAgIEFfQkxJTksgICAgICAgIDMgICAgIDgKLSAgICAgICAgICAgICAgICAgICAgICBBX0RJTSAgICAgICAgICA0ICAgICAxNgotICAgICAgICAgICAgICAgICAgICAgIEFfQk9MRCAgICAgICAgIDUgICAgIDMyCi0gICAgICAgICAgICAgICAgICAgICAgQV9JTlZJUyAgICAgICAgNiAgICAgNjQKLSAgICAgICAgICAgICAgICAgICAgICBBX1BST1RFQ1QgICAgICA3ICAgICAxMjgKLSAgICAgICAgICAgICAgICAgICAgICBBX0FMVENIQVJTRVQgICA4ICAgICAyNTYKKyAgICAgICAgICA8U1RST05HPkF0dHJpYnV0ZTwvU1RST05HPiAgICAgICAgICAgICAgPFNUUk9ORz5CaXQ8L1NUUk9ORz4gICA8U1RST05HPkRlY2ltYWw8L1NUUk9ORz4gICAgICA8U1RST05HPlNldDwvU1RST05HPiA8U1RST05HPmJ5PC9TVFJPTkc+CisgICAgICAgICAgQV9TVEFORE9VVCAgICAgICAgICAgICAwICAgICAxICAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9VTkRFUkxJTkUgICAgICAgICAgICAxICAgICAyICAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9SRVZFUlNFICAgICAgICAgICAgICAyICAgICA0ICAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9CTElOSyAgICAgICAgICAgICAgICAzICAgICA4ICAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9ESU0gICAgICAgICAgICAgICAgICA0ICAgICAxNiAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9CT0xEICAgICAgICAgICAgICAgICA1ICAgICAzMiAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9JTlZJUyAgICAgICAgICAgICAgICA2ICAgICA2NCAgICAgICAgICAgc2dyCisgICAgICAgICAgQV9QUk9URUNUICAgICAgICAgICAgICA3ICAgICAxMjggICAgICAgICAgc2dyCisgICAgICAgICAgQV9BTFRDSEFSU0VUICAgICAgICAgICA4ICAgICAyNTYgICAgICAgICAgc2dyCisgICAgICAgICAgQV9IT1JJWk9OVEFMICAgICAgICAgICA5ICAgICA1MTIgICAgICAgICAgc2dyMQorICAgICAgICAgIEFfTEVGVCAgICAgICAgICAgICAgICAgMTAgICAgMTAyNCAgICAgICAgIHNncjEKKyAgICAgICAgICBBX0xPVyAgICAgICAgICAgICAgICAgIDExICAgIDIwNDggICAgICAgICBzZ3IxCisgICAgICAgICAgQV9SSUdIVCAgICAgICAgICAgICAgICAxMiAgICA0MDk2ICAgICAgICAgc2dyMQorICAgICAgICAgIEFfVE9QICAgICAgICAgICAgICAgICAgMTMgICAgODE5MiAgICAgICAgIHNncjEKKyAgICAgICAgICBBX1ZFUlRJQ0FMICAgICAgICAgICAgIDE0ICAgIDE2Mzg0ICAgICAgICBzZ3IxCisgICAgICAgICAgQV9JVEFMSUMgICAgICAgICAgICAgICAxNSAgICAzMjc2OCAgICAgICAgc2l0bQogCiAgICAgICAgRm9yIGV4YW1wbGUsICBvbiAgbWFueSAgSUJNICBQQyAgY29uc29sZXMsICB0aGUgIHVuZGVybGluZQogICAgICAgIGF0dHJpYnV0ZSAgY29sbGlkZXMgIHdpdGggdGhlIGZvcmVncm91bmQgY29sb3IgYmx1ZSBhbmQgaXMKQEAgLTIwNTksNyArMjIwNSw4IEBACiAgICAgICAgYW5kIG9wdGltaXplcyB0aGUgb3V0cHV0IGluIGZhdm9yIG9mIGNvbG9ycy4KIAogCi0gICA8U1RST05HPk1pc2NlbGxhbmVvdXM8L1NUUk9ORz4KKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLU1pc2NlbGxhbmVvdXMiPk1pc2NlbGxhbmVvdXM8L2E+PC9IMz48UFJFPgogICAgICAgIElmIHRoZSB0ZXJtaW5hbCByZXF1aXJlcyBvdGhlciB0aGFuIGEgbnVsbCAoemVybykgIGNoYXJhYy0KICAgICAgICB0ZXIgIGFzICBhICBwYWQsICB0aGVuIHRoaXMgY2FuIGJlIGdpdmVuIGFzIHBhZC4gIE9ubHkgdGhlCiAgICAgICAgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBwYWQgc3RyaW5nIGlzIHVzZWQuICBJZiB0aGUgIHRlcm1pLQpAQCAtMjA4Miw3ICsyMjI5LDcgQEAKICAgICAgICBwYXJhbWV0ZXJpemVkICBzdHJpbmcgIDxTVFJPTkc+cmVwPC9TVFJPTkc+LiAgIFRoZSAgZmlyc3QgIHBhcmFtZXRlciBpcyB0aGUKICAgICAgICBjaGFyYWN0ZXIgdG8gYmUgcmVwZWF0ZWQgYW5kIHRoZSBzZWNvbmQgaXMgdGhlICBudW1iZXIgIG9mCiAgICAgICAgdGltZXMgIHRvIHJlcGVhdCBpdC4gIFRodXMsIHRwYXJtKHJlcGVhdF9jaGFyLCAneCcsIDEwKSBpcwotICAgICAgIHRoZSBzYW1lIGFzIGB4eHh4eHh4eHh4Jy4KKyAgICAgICB0aGUgc2FtZSBhcyAieHh4eHh4eHh4eCIuCiAKICAgICAgICBJZiB0aGUgdGVybWluYWwgaGFzIGEgc2V0dGFibGUgY29tbWFuZCBjaGFyYWN0ZXIsIHN1Y2ggIGFzCiAgICAgICAgdGhlICBURUtUUk9OSVggIDQwMjUsIHRoaXMgY2FuIGJlIGluZGljYXRlZCB3aXRoIDxTVFJPTkc+Y21kY2g8L1NUUk9ORz4uICBBCkBAIC0yMTAyLDEyICsyMjQ5LDEyIEBACiAgICAgICAgPEVNPnZpcnR1YWw8L0VNPiAgIHRlcm1pbmFsICAgZGVzY3JpcHRpb25zICBmb3IgIHdoaWNoICB0aGUgIGVzY2FwZQogICAgICAgIHNlcXVlbmNlcyBhcmUga25vd24uKQogCi0gICAgICAgSWYgdGhlIHRlcm1pbmFsIGhhcyBhIGBgbWV0YSBrZXknJyB3aGljaCBhY3RzIGFzICBhICBzaGlmdAorICAgICAgIElmIHRoZSB0ZXJtaW5hbCBoYXMgYSAibWV0YSBrZXkiIHdoaWNoICBhY3RzICBhcyAgYSAgc2hpZnQKICAgICAgICBrZXksICBzZXR0aW5nICB0aGUgIDh0aCAgYml0IG9mIGFueSBjaGFyYWN0ZXIgdHJhbnNtaXR0ZWQsCiAgICAgICAgdGhpcyBmYWN0IGNhbiBiZSBpbmRpY2F0ZWQgd2l0aCA8U1RST05HPmttPC9TVFJPTkc+LiAgIE90aGVyd2lzZSwgIHNvZnR3YXJlCiAgICAgICAgd2lsbCBhc3N1bWUgdGhhdCB0aGUgOHRoIGJpdCBpcyBwYXJpdHkgYW5kIGl0IHdpbGwgdXN1YWxseQotICAgICAgIGJlIGNsZWFyZWQuICBJZiBzdHJpbmdzIGV4aXN0IHRvIHR1cm4gdGhpcyAgYGBtZXRhICBtb2RlJycKLSAgICAgICBvbiBhbmQgb2ZmLCB0aGV5IGNhbiBiZSBnaXZlbiBhcyA8U1RST05HPnNtbTwvU1RST05HPiBhbmQgPFNUUk9ORz5ybW08L1NUUk9ORz4uCisgICAgICAgYmUgY2xlYXJlZC4gIElmIHN0cmluZ3MgZXhpc3QgdG8gdHVybiB0aGlzICJtZXRhIG1vZGUiICBvbgorICAgICAgIGFuZCBvZmYsIHRoZXkgY2FuIGJlIGdpdmVuIGFzIDxTVFJPTkc+c21tPC9TVFJPTkc+IGFuZCA8U1RST05HPnJtbTwvU1RST05HPi4KIAogICAgICAgIElmICB0aGUgdGVybWluYWwgaGFzIG1vcmUgbGluZXMgb2YgbWVtb3J5IHRoYW4gd2lsbCBmaXQgb24KICAgICAgICB0aGUgc2NyZWVuIGF0IG9uY2UsIHRoZSBudW1iZXIgb2YgbGluZXMgb2YgbWVtb3J5ICBjYW4gIGJlCkBAIC0yMTMzLDE2MSArMjI4MCwxNjkgQEAKICAgICAgICBwcmludGVyIHdoaWxlIGFuIDxTVFJPTkc+bWM1cDwvU1RST05HPiBpcyBpbiBlZmZlY3QuCiAKIAotICAgPFNUUk9ORz5HbGl0Y2hlczwvU1RST05HPiA8U1RST05HPmFuZDwvU1RST05HPiA8U1RST05HPkJyYWluZGFtYWdlPC9TVFJPTkc+Ci0gICAgICAgSGF6ZWx0aW5lIHRlcm1pbmFscywgd2hpY2ggZG8gbm90IGFsbG93IGB+JyBjaGFyYWN0ZXJzICB0bworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtR2xpdGNoZXMtYW5kLUJyYWluZGFtYWdlIj5HbGl0Y2hlcyBhbmQgQnJhaW5kYW1hZ2U8L2E+PC9IMz48UFJFPgorICAgICAgIEhhemVsdGluZSB0ZXJtaW5hbHMsIHdoaWNoIGRvIG5vdCBhbGxvdyAifiIgY2hhcmFjdGVycyAgdG8KICAgICAgICBiZSBkaXNwbGF5ZWQgc2hvdWxkIGluZGljYXRlIDxTVFJPTkc+aHo8L1NUUk9ORz4uCiAKICAgICAgICBUZXJtaW5hbHMgd2hpY2ggaWdub3JlIGEgbGluZS1mZWVkIGltbWVkaWF0ZWx5IGFmdGVyIGFuIDxTVFJPTkc+YW08L1NUUk9ORz4KICAgICAgICB3cmFwLCBzdWNoIGFzIHRoZSBDb25jZXB0IGFuZCB2dDEwMCwgc2hvdWxkIGluZGljYXRlIDxTVFJPTkc+eGVubDwvU1RST05HPi4KIAotICAgICAgIElmICA8U1RST05HPmVsPC9TVFJPTkc+ICBpcyAgcmVxdWlyZWQgIHRvICBnZXQgIHJpZCBvZiBzdGFuZG91dCAoaW5zdGVhZCBvZgotICAgICAgIG1lcmVseSB3cml0aW5nIG5vcm1hbCB0ZXh0IG9uIHRvcCBvZiBpdCksICA8U1RST05HPnhocDwvU1RST05HPiAgc2hvdWxkICBiZQorICAgICAgIElmIDxTVFJPTkc+ZWw8L1NUUk9ORz4gaXMgcmVxdWlyZWQgdG8gIGdldCAgcmlkICBvZiAgc3RhbmRvdXQgIChpbnN0ZWFkICBvZgorICAgICAgIG1lcmVseSAgd3JpdGluZyAgbm9ybWFsICB0ZXh0IG9uIHRvcCBvZiBpdCksIDxTVFJPTkc+eGhwPC9TVFJPTkc+IHNob3VsZCBiZQogICAgICAgIGdpdmVuLgogCi0gICAgICAgVGVsZXJheSAgdGVybWluYWxzLCAgd2hlcmUgIHRhYnMgdHVybiBhbGwgY2hhcmFjdGVycyBtb3ZlZAotICAgICAgIG92ZXIgdG8gYmxhbmtzLCBzaG91bGQgIGluZGljYXRlICA8U1RST05HPnh0PC9TVFJPTkc+ICAoZGVzdHJ1Y3RpdmUgIHRhYnMpLgotICAgICAgIE5vdGU6ICAgIHRoZSAgICB2YXJpYWJsZSAgICBpbmRpY2F0aW5nICAgIHRoaXMgICAgaXMgICBub3cKLSAgICAgICBgZGVzdF90YWJzX21hZ2ljX3Ntc28nOyBpbiBvbGRlciAgdmVyc2lvbnMsICBpdCAgd2FzICB0ZWwtCisgICAgICAgVGVsZXJheSB0ZXJtaW5hbHMsIHdoZXJlIHRhYnMgdHVybiAgYWxsICBjaGFyYWN0ZXJzICBtb3ZlZAorICAgICAgIG92ZXIgIHRvICBibGFua3MsICBzaG91bGQgIGluZGljYXRlIDxTVFJPTkc+eHQ8L1NUUk9ORz4gKGRlc3RydWN0aXZlIHRhYnMpLgorICAgICAgIE5vdGU6ICAgdGhlICAgIHZhcmlhYmxlICAgIGluZGljYXRpbmcgICAgdGhpcyAgICBpcyAgICBub3cKKyAgICAgICAiZGVzdF90YWJzX21hZ2ljX3Ntc28iOyAgaW4gIG9sZGVyICB2ZXJzaW9ucywgIGl0IHdhcyB0ZWwtCiAgICAgICAgZXJheV9nbGl0Y2guICBUaGlzIGdsaXRjaCBpcyBhbHNvIHRha2VuIHRvIG1lYW4gdGhhdCBpdCBpcwotICAgICAgIG5vdCBwb3NzaWJsZSB0byBwb3NpdGlvbiB0aGUgY3Vyc29yIG9uIHRvcCAgb2YgIGEgIGBgbWFnaWMKLSAgICAgICBjb29raWUnJywgdGhhdCB0byBlcmFzZSBzdGFuZG91dCBtb2RlIGl0IGlzIGluc3RlYWQgbmVjZXMtCisgICAgICAgbm90ICBwb3NzaWJsZSAgdG8gIHBvc2l0aW9uICB0aGUgY3Vyc29yIG9uIHRvcCBvZiBhICJtYWdpYworICAgICAgIGNvb2tpZSIsIHRoYXQgdG8gZXJhc2Ugc3RhbmRvdXQgbW9kZSBpdCBpcyBpbnN0ZWFkICBuZWNlcy0KICAgICAgICBzYXJ5IHRvIHVzZSBkZWxldGUgYW5kIGluc2VydCBsaW5lLiAgVGhlIG5jdXJzZXMgaW1wbGVtZW4tCiAgICAgICAgdGF0aW9uIGlnbm9yZXMgdGhpcyBnbGl0Y2guCiAKLSAgICAgICBUaGUgIEJlZWhpdmUgU3VwZXJiZWUsIHdoaWNoIGlzIHVuYWJsZSB0byBjb3JyZWN0bHkgdHJhbnMtCi0gICAgICAgbWl0IHRoZSBlc2NhcGUgb3IgY29udHJvbCBDIGNoYXJhY3RlcnMsIGhhcyA8U1RST05HPnhzYjwvU1RST05HPiwgIGluZGljYXQtCi0gICAgICAgaW5nICB0aGF0IHRoZSBmMSBrZXkgaXMgdXNlZCBmb3IgZXNjYXBlIGFuZCBmMiBmb3IgY29udHJvbAotICAgICAgIEMuICAoT25seSBjZXJ0YWluIFN1cGVyYmVlcyBoYXZlIHRoaXMgIHByb2JsZW0sICBkZXBlbmRpbmcKLSAgICAgICBvbiAgdGhlICBST00uKSAgTm90ZSB0aGF0IGluIG9sZGVyIHRlcm1pbmZvIHZlcnNpb25zLCB0aGlzCi0gICAgICAgY2FwYWJpbGl0eSAgd2FzICBjYWxsZWQgIGBiZWVoaXZlX2dsaXRjaCc7ICAgaXQgICBpcyAgIG5vdwotICAgICAgIGBub19lc2NfY3RsX2MnLgorICAgICAgIFRoZSBCZWVoaXZlIFN1cGVyYmVlLCB3aGljaCBpcyB1bmFibGUgdG8gY29ycmVjdGx5ICB0cmFucy0KKyAgICAgICBtaXQgIHRoZSBlc2NhcGUgb3IgY29udHJvbCBDIGNoYXJhY3RlcnMsIGhhcyA8U1RST05HPnhzYjwvU1RST05HPiwgaW5kaWNhdC0KKyAgICAgICBpbmcgdGhhdCB0aGUgZjEga2V5IGlzIHVzZWQgZm9yIGVzY2FwZSBhbmQgZjIgZm9yICBjb250cm9sCisgICAgICAgQy4gICAoT25seSAgY2VydGFpbiBTdXBlcmJlZXMgaGF2ZSB0aGlzIHByb2JsZW0sIGRlcGVuZGluZworICAgICAgIG9uIHRoZSBST00uKSAgTm90ZSB0aGF0IGluIG9sZGVyIHRlcm1pbmZvICB2ZXJzaW9ucywgIHRoaXMKKyAgICAgICBjYXBhYmlsaXR5ICAgd2FzICAgY2FsbGVkICAgImJlZWhpdmVfZ2xpdGNoIjsgIGl0ICBpcyAgbm93CisgICAgICAgIm5vX2VzY19jdGxfYyIuCiAKLSAgICAgICBPdGhlciAgc3BlY2lmaWMgIHRlcm1pbmFsICBwcm9ibGVtcyAgbWF5ICBiZSAgY29ycmVjdGVkIGJ5CisgICAgICAgT3RoZXIgc3BlY2lmaWMgIHRlcm1pbmFsICBwcm9ibGVtcyAgbWF5ICBiZSAgY29ycmVjdGVkICBieQogICAgICAgIGFkZGluZyBtb3JlIGNhcGFiaWxpdGllcyBvZiB0aGUgZm9ybSA8U1RST05HPng8L1NUUk9ORz48RU0+eDwvRU0+LgogCiAKLSAgIDxTVFJPTkc+U2ltaWxhcjwvU1RST05HPiA8U1RST05HPlRlcm1pbmFsczwvU1RST05HPgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtU2ltaWxhci1UZXJtaW5hbHMiPlNpbWlsYXIgVGVybWluYWxzPC9hPjwvSDM+PFBSRT4KICAgICAgICBJZiB0aGVyZSBhcmUgdHdvIHZlcnkgc2ltaWxhciB0ZXJtaW5hbHMsIG9uZSAodGhlIHZhcmlhbnQpCi0gICAgICAgY2FuICBiZSAgZGVmaW5lZCAgYXMgIGJlaW5nIGp1c3QgbGlrZSB0aGUgb3RoZXIgKHRoZSBiYXNlKQotICAgICAgIHdpdGggY2VydGFpbiBleGNlcHRpb25zLiAgSW4gdGhlIGRlZmluaXRpb24gb2YgIHRoZSAgdmFyaS0KLSAgICAgICBhbnQsICB0aGUgc3RyaW5nIGNhcGFiaWxpdHkgPFNUUk9ORz51c2U8L1NUUk9ORz4gY2FuIGJlIGdpdmVuIHdpdGggdGhlIG5hbWUKLSAgICAgICBvZiB0aGUgYmFzZSB0ZXJtaW5hbC4gIFRoZSBjYXBhYmlsaXRpZXMgZ2l2ZW4gIGJlZm9yZSAgPFNUUk9ORz51c2U8L1NUUk9ORz4KLSAgICAgICBvdmVycmlkZSAgdGhvc2UgIGluICB0aGUgYmFzZSB0eXBlIG5hbWVkIGJ5IDxTVFJPTkc+dXNlPC9TVFJPTkc+LiAgSWYgdGhlcmUKLSAgICAgICBhcmUgbXVsdGlwbGUgPFNUUk9ORz51c2U8L1NUUk9ORz4gY2FwYWJpbGl0aWVzLCB0aGV5IGFyZSBtZXJnZWQgaW4gIHJldmVyc2UKLSAgICAgICBvcmRlci4gICBUaGF0IGlzLCB0aGUgcmlnaHRtb3N0IDxTVFJPTkc+dXNlPC9TVFJPTkc+IHJlZmVyZW5jZSBpcyBwcm9jZXNzZWQKLSAgICAgICBmaXJzdCwgdGhlbiB0aGUgb25lIHRvIGl0cyBsZWZ0LCBhbmQgc28gZm9ydGguICAgQ2FwYWJpbGktCi0gICAgICAgdGllcyAgZ2l2ZW4gZXhwbGljaXRseSBpbiB0aGUgZW50cnkgb3ZlcnJpZGUgdGhvc2UgYnJvdWdodAorICAgICAgIGNhbiBiZSBkZWZpbmVkIGFzIGJlaW5nIGp1c3QgbGlrZSAgdGhlICBvdGhlciAgKHRoZSAgYmFzZSkKKyAgICAgICB3aXRoICBjZXJ0YWluICBleGNlcHRpb25zLiAgSW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIHZhcmktCisgICAgICAgYW50LCB0aGUgc3RyaW5nIGNhcGFiaWxpdHkgPFNUUk9ORz51c2U8L1NUUk9ORz4gY2FuIGJlIGdpdmVuIHdpdGggdGhlICBuYW1lCisgICAgICAgb2YgIHRoZSAgYmFzZSB0ZXJtaW5hbC4gIFRoZSBjYXBhYmlsaXRpZXMgZ2l2ZW4gYmVmb3JlIDxTVFJPTkc+dXNlPC9TVFJPTkc+CisgICAgICAgb3ZlcnJpZGUgdGhvc2UgaW4gdGhlIGJhc2UgdHlwZSBuYW1lZCBieSAgPFNUUk9ORz51c2U8L1NUUk9ORz4uICAgSWYgIHRoZXJlCisgICAgICAgYXJlICBtdWx0aXBsZSA8U1RST05HPnVzZTwvU1RST05HPiBjYXBhYmlsaXRpZXMsIHRoZXkgYXJlIG1lcmdlZCBpbiByZXZlcnNlCisgICAgICAgb3JkZXIuICBUaGF0IGlzLCB0aGUgcmlnaHRtb3N0IDxTVFJPTkc+dXNlPC9TVFJPTkc+IHJlZmVyZW5jZSBpcyAgcHJvY2Vzc2VkCisgICAgICAgZmlyc3QsICB0aGVuIHRoZSBvbmUgdG8gaXRzIGxlZnQsIGFuZCBzbyBmb3J0aC4gIENhcGFiaWxpLQorICAgICAgIHRpZXMgZ2l2ZW4gZXhwbGljaXRseSBpbiB0aGUgZW50cnkgb3ZlcnJpZGUgdGhvc2UgIGJyb3VnaHQKICAgICAgICBpbiBieSA8U1RST05HPnVzZTwvU1RST05HPiByZWZlcmVuY2VzLgogCiAgICAgICAgQSBjYXBhYmlsaXR5IGNhbiBiZSBjYW5jZWxlZCBieSBwbGFjaW5nIDxTVFJPTkc+eHhAPC9TVFJPTkc+IHRvIHRoZSBsZWZ0IG9mCi0gICAgICAgdGhlICB1c2UgIHJlZmVyZW5jZSB0aGF0IGltcG9ydHMgaXQsIHdoZXJlIDxFTT54eDwvRU0+IGlzIHRoZSBjYXBhLQorICAgICAgIHRoZSB1c2UgcmVmZXJlbmNlIHRoYXQgaW1wb3J0cyBpdCwgd2hlcmUgPEVNPnh4PC9FTT4gaXMgIHRoZSAgY2FwYS0KICAgICAgICBiaWxpdHkuICBGb3IgZXhhbXBsZSwgdGhlIGVudHJ5CiAKLSAgICAgICAgICAgICAgICAgICAyNjIxLW5sLCBzbWt4QCwgcm1reEAsIHVzZT0yNjIxLAorICAgICAgICAgICAgICAyNjIxLW5sLCBzbWt4QCwgcm1reEAsIHVzZT0yNjIxLAogCi0gICAgICAgZGVmaW5lcyBhIDI2MjEtbmwgdGhhdCBkb2VzIG5vdCAgaGF2ZSAgdGhlICA8U1RST05HPnNta3g8L1NUUk9ORz4gIG9yICA8U1RST05HPnJta3g8L1NUUk9ORz4KLSAgICAgICBjYXBhYmlsaXRpZXMsICBhbmQgaGVuY2UgZG9lcyBub3QgdHVybiBvbiB0aGUgZnVuY3Rpb24ga2V5Ci0gICAgICAgbGFiZWxzIHdoZW4gaW4gdmlzdWFsIG1vZGUuICBUaGlzIGlzIHVzZWZ1bCBmb3IgIGRpZmZlcmVudAorICAgICAgIGRlZmluZXMgIGEgIDI2MjEtbmwgIHRoYXQgIGRvZXMgIG5vdCBoYXZlIHRoZSA8U1RST05HPnNta3g8L1NUUk9ORz4gb3IgPFNUUk9ORz5ybWt4PC9TVFJPTkc+CisgICAgICAgY2FwYWJpbGl0aWVzLCBhbmQgaGVuY2UgZG9lcyBub3QgdHVybiBvbiB0aGUgZnVuY3Rpb24gIGtleQorICAgICAgIGxhYmVscyAgd2hlbiBpbiB2aXN1YWwgbW9kZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBkaWZmZXJlbnQKICAgICAgICBtb2RlcyBmb3IgYSB0ZXJtaW5hbCwgb3IgZm9yIGRpZmZlcmVudCB1c2VyIHByZWZlcmVuY2VzLgogCiAKLSAgIDxTVFJPTkc+UGl0ZmFsbHM8L1NUUk9ORz4gPFNUUk9ORz5vZjwvU1RST05HPiA8U1RST05HPkxvbmc8L1NUUk9ORz4gPFNUUk9ORz5FbnRyaWVzPC9TVFJPTkc+Ci0gICAgICAgTG9uZyAgdGVybWluZm8gIGVudHJpZXMgIGFyZSAgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVtOyB0bwotICAgICAgIGRhdGUsIG5vIGVudHJ5IGhhcyBldmVuICBhcHByb2FjaGVkICB0ZXJtaW5mbydzICA0MDk2LWJ5dGUKKzwvUFJFPgorPEgzPjxhIG5hbWU9ImgzLVBpdGZhbGxzLW9mLUxvbmctRW50cmllcyI+UGl0ZmFsbHMgb2YgTG9uZyBFbnRyaWVzPC9hPjwvSDM+PFBSRT4KKyAgICAgICBMb25nIHRlcm1pbmZvIGVudHJpZXMgYXJlIHVubGlrZWx5IHRvICBiZSAgYSAgcHJvYmxlbTsgIHRvCisgICAgICAgZGF0ZSwgIG5vICBlbnRyeSAgaGFzIGV2ZW4gYXBwcm9hY2hlZCB0ZXJtaW5mbydzIDQwOTYtYnl0ZQogICAgICAgIHN0cmluZy10YWJsZSBtYXhpbXVtLiAgVW5mb3J0dW5hdGVseSwgdGhlIHRlcm1jYXAgdHJhbnNsYS0KICAgICAgICB0aW9ucyBhcmUgbXVjaCBtb3JlIHN0cmljdGx5IGxpbWl0ZWQgKHRvIDEwMjMgYnl0ZXMpLCB0aHVzCi0gICAgICAgdGVybWNhcCAgdHJhbnNsYXRpb25zICBvZiAgbG9uZyB0ZXJtaW5mbyBlbnRyaWVzIGNhbiBjYXVzZQorICAgICAgIHRlcm1jYXAgdHJhbnNsYXRpb25zIG9mIGxvbmcgdGVybWluZm8gIGVudHJpZXMgIGNhbiAgY2F1c2UKICAgICAgICBwcm9ibGVtcy4KIAotICAgICAgIFRoZSBtYW4gcGFnZXMgZm9yIDQuM0JTRCBhbmQgb2xkZXIgdmVyc2lvbnMgIG9mICA8U1RST05HPnRnZXRlbnQoKTwvU1RST05HPgotICAgICAgIGluc3RydWN0ICB0aGUgIHVzZXIgdG8gYWxsb2NhdGUgYSAxMDI0LWJ5dGUgYnVmZmVyIGZvciB0aGUKLSAgICAgICB0ZXJtY2FwIGVudHJ5LiAgVGhlICBlbnRyeSAgZ2V0cyAgbnVsbC10ZXJtaW5hdGVkICBieSAgdGhlCisgICAgICAgVGhlICBtYW4gIHBhZ2VzIGZvciA0LjNCU0QgYW5kIG9sZGVyIHZlcnNpb25zIG9mIDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+CisgICAgICAgaW5zdHJ1Y3QgdGhlIHVzZXIgdG8gYWxsb2NhdGUgYSAxMDI0LWJ5dGUgYnVmZmVyICBmb3IgIHRoZQorICAgICAgIHRlcm1jYXAgIGVudHJ5LiAgIFRoZSAgZW50cnkgIGdldHMgIG51bGwtdGVybWluYXRlZCBieSB0aGUKICAgICAgICB0ZXJtY2FwIGxpYnJhcnksIHNvIHRoYXQgbWFrZXMgdGhlIG1heGltdW0gc2FmZSBsZW5ndGggZm9yCi0gICAgICAgYSB0ZXJtY2FwIGVudHJ5IDFrLTEgKDEwMjMpIGJ5dGVzLiAgRGVwZW5kaW5nIG9uIHdoYXQgIHRoZQotICAgICAgIGFwcGxpY2F0aW9uICBhbmQgIHRoZSB0ZXJtY2FwIGxpYnJhcnkgYmVpbmcgdXNlZCBkb2VzLCBhbmQKKyAgICAgICBhICB0ZXJtY2FwIGVudHJ5IDFrLTEgKDEwMjMpIGJ5dGVzLiAgRGVwZW5kaW5nIG9uIHdoYXQgdGhlCisgICAgICAgYXBwbGljYXRpb24gYW5kIHRoZSB0ZXJtY2FwIGxpYnJhcnkgYmVpbmcgdXNlZCAgZG9lcywgIGFuZAogICAgICAgIHdoZXJlIGluIHRoZSB0ZXJtY2FwIGZpbGUgdGhlIHRlcm1pbmFsIHR5cGUgdGhhdCA8U1RST05HPnRnZXRlbnQoKTwvU1RST05HPgogICAgICAgIGlzIHNlYXJjaGluZyBmb3IgaXMsIHNldmVyYWwgYmFkIHRoaW5ncyBjYW4gaGFwcGVuLgogCi0gICAgICAgU29tZSAgdGVybWNhcCBsaWJyYXJpZXMgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2Ugb3IgZXhpdCBpZgotICAgICAgIHRoZXkgZmluZCBhbiBlbnRyeSB0aGF0J3MgbG9uZ2VyIHRoYW4gMTAyMyAgYnl0ZXM7ICBvdGhlcnMKLSAgICAgICBkbyAgbm90OyAgb3RoZXJzIHRydW5jYXRlIHRoZSBlbnRyaWVzIHRvIDEwMjMgYnl0ZXMuICBTb21lCisgICAgICAgU29tZSB0ZXJtY2FwIGxpYnJhcmllcyBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBvciBleGl0ICBpZgorICAgICAgIHRoZXkgIGZpbmQgIGFuIGVudHJ5IHRoYXQncyBsb25nZXIgdGhhbiAxMDIzIGJ5dGVzOyBvdGhlcnMKKyAgICAgICBkbyBub3Q7IG90aGVycyB0cnVuY2F0ZSB0aGUgZW50cmllcyB0byAxMDIzICBieXRlcy4gICBTb21lCiAgICAgICAgYXBwbGljYXRpb24gcHJvZ3JhbXMgYWxsb2NhdGUgbW9yZSB0aGFuIHRoZSByZWNvbW1lbmRlZCAxSwogICAgICAgIGZvciB0aGUgdGVybWNhcCBlbnRyeTsgb3RoZXJzIGRvIG5vdC4KIAogICAgICAgIEVhY2ggdGVybWNhcCBlbnRyeSBoYXMgdHdvIGltcG9ydGFudCBzaXplcyBhc3NvY2lhdGVkIHdpdGgKICAgICAgICBpdDogYmVmb3JlICJ0YyIgZXhwYW5zaW9uLCBhbmQgYWZ0ZXIgInRjIiBleHBhbnNpb24uICAidGMiCi0gICAgICAgaXMgIHRoZSAgY2FwYWJpbGl0eSB0aGF0IHRhY2tzIG9uIGFub3RoZXIgdGVybWNhcCBlbnRyeSB0bwotICAgICAgIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgb25lLCB0byBhZGQgIG9uICBpdHMgIGNhcGFiaWxpdGllcy4KLSAgICAgICBJZiAgYSB0ZXJtY2FwIGVudHJ5IGRvZXMgbm90IHVzZSB0aGUgInRjIiBjYXBhYmlsaXR5LCB0aGVuCisgICAgICAgaXMgdGhlIGNhcGFiaWxpdHkgdGhhdCB0YWNrcyBvbiBhbm90aGVyIHRlcm1jYXAgIGVudHJ5ICB0bworICAgICAgIHRoZSAgZW5kICBvZiAgdGhlIGN1cnJlbnQgb25lLCB0byBhZGQgb24gaXRzIGNhcGFiaWxpdGllcy4KKyAgICAgICBJZiBhIHRlcm1jYXAgZW50cnkgZG9lcyBub3QgdXNlIHRoZSAidGMiIGNhcGFiaWxpdHksICB0aGVuCiAgICAgICAgb2YgY291cnNlIHRoZSB0d28gbGVuZ3RocyBhcmUgdGhlIHNhbWUuCiAKLSAgICAgICBUaGUgImJlZm9yZSB0YyBleHBhbnNpb24iIGxlbmd0aCAgaXMgIHRoZSAgbW9zdCAgaW1wb3J0YW50Ci0gICAgICAgb25lLCAgYmVjYXVzZSBpdCBhZmZlY3RzIG1vcmUgdGhhbiBqdXN0IHVzZXJzIG9mIHRoYXQgcGFyLQotICAgICAgIHRpY3VsYXIgdGVybWluYWwuICBUaGlzIGlzIHRoZSBsZW5ndGggb2YgdGhlIGVudHJ5ICBhcyAgaXQKKyAgICAgICBUaGUgICJiZWZvcmUgIHRjICBleHBhbnNpb24iICBsZW5ndGggaXMgdGhlIG1vc3QgaW1wb3J0YW50CisgICAgICAgb25lLCBiZWNhdXNlIGl0IGFmZmVjdHMgbW9yZSB0aGFuIGp1c3QgdXNlcnMgb2YgdGhhdCAgcGFyLQorICAgICAgIHRpY3VsYXIgIHRlcm1pbmFsLiAgIFRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZW50cnkgYXMgaXQKICAgICAgICBleGlzdHMgaW4gL2V0Yy90ZXJtY2FwLCBtaW51cyB0aGUgYmFja3NsYXNoLW5ld2xpbmUgcGFpcnMsCiAgICAgICAgd2hpY2ggPFNUUk9ORz50Z2V0ZW50KCk8L1NUUk9ORz4gc3RyaXBzIG91dCB3aGlsZSByZWFkaW5nIGl0LiAgU29tZSB0ZXJtY2FwCi0gICAgICAgbGlicmFyaWVzICBzdHJpcCAgb2ZmICB0aGUgZmluYWwgbmV3bGluZSwgdG9vIChHTlUgdGVybWNhcAorICAgICAgIGxpYnJhcmllcyBzdHJpcCBvZmYgdGhlIGZpbmFsIG5ld2xpbmUsICB0b28gIChHTlUgIHRlcm1jYXAKICAgICAgICBkb2VzIG5vdCkuICBOb3cgc3VwcG9zZToKIAotICAgICAgICogICAgYSB0ZXJtY2FwIGVudHJ5IGJlZm9yZSBleHBhbnNpb24gaXMgIG1vcmUgIHRoYW4gIDEwMjMKLSAgICAgICAgICAgIGJ5dGVzIGxvbmcsCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYSAgdGVybWNhcCAgZW50cnkgIGJlZm9yZSAgZXhwYW5zaW9uIGlzIG1vcmUgdGhhbiAxMDIzCisgICAgICAgICAgIGJ5dGVzIGxvbmcsCiAKLSAgICAgICAqICAgIGFuZCB0aGUgYXBwbGljYXRpb24gaGFzIG9ubHkgYWxsb2NhdGVkIGEgMWsgYnVmZmVyLAorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGFuZCB0aGUgYXBwbGljYXRpb24gaGFzIG9ubHkgYWxsb2NhdGVkIGEgMWsgYnVmZmVyLAogCi0gICAgICAgKiAgICBhbmQgIHRoZSAgdGVybWNhcCBsaWJyYXJ5IChsaWtlIHRoZSBvbmUgaW4gQlNEL09TIDEuMQotICAgICAgICAgICAgYW5kIEdOVSkgcmVhZHMgdGhlIHdob2xlIGVudHJ5IGludG8gIHRoZSAgYnVmZmVyLCAgbm8KLSAgICAgICAgICAgIG1hdHRlciAgd2hhdCBpdHMgbGVuZ3RoLCB0byBzZWUgaWYgaXQgaXMgdGhlIGVudHJ5IGl0Ci0gICAgICAgICAgICB3YW50cywKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBhbmQgdGhlIHRlcm1jYXAgbGlicmFyeSAobGlrZSB0aGUgb25lICBpbiAgQlNEL09TICAxLjEKKyAgICAgICAgICAgYW5kICBHTlUpICByZWFkcyAgdGhlICB3aG9sZSBlbnRyeSBpbnRvIHRoZSBidWZmZXIsIG5vCisgICAgICAgICAgIG1hdHRlciB3aGF0IGl0cyBsZW5ndGgsIHRvIHNlZSBpZiBpdCBpcyB0aGUgIGVudHJ5ICBpdAorICAgICAgICAgICB3YW50cywKIAotICAgICAgICogICAgYW5kIDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+IGlzIHNlYXJjaGluZyBmb3IgYSB0ZXJtaW5hbCAgdHlwZSAgdGhhdAotICAgICAgICAgICAgZWl0aGVyIGlzIHRoZSBsb25nIGVudHJ5LCBhcHBlYXJzIGluIHRoZSB0ZXJtY2FwIGZpbGUKLSAgICAgICAgICAgIGFmdGVyIHRoZSBsb25nIGVudHJ5LCBvciBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlICBmaWxlCi0gICAgICAgICAgICBhdCAgYWxsICAoc28gIHRoYXQgIDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+IGhhcyB0byBzZWFyY2ggdGhlIHdob2xlCi0gICAgICAgICAgICB0ZXJtY2FwIGZpbGUpLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIGFuZCAgPFNUUk9ORz50Z2V0ZW50KCk8L1NUUk9ORz4gIGlzICBzZWFyY2hpbmcgZm9yIGEgdGVybWluYWwgdHlwZSB0aGF0CisgICAgICAgICAgIGVpdGhlciBpcyB0aGUgbG9uZyBlbnRyeSwgYXBwZWFycyBpbiB0aGUgdGVybWNhcCAgZmlsZQorICAgICAgICAgICBhZnRlciAgdGhlICBsb25nIGVudHJ5LCBvciBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGZpbGUKKyAgICAgICAgICAgYXQgYWxsIChzbyB0aGF0IDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+ICBoYXMgIHRvICBzZWFyY2ggIHRoZSAgd2hvbGUKKyAgICAgICAgICAgdGVybWNhcCBmaWxlKS4KIAotICAgICAgIFRoZW4gPFNUUk9ORz50Z2V0ZW50KCk8L1NUUk9ORz4gd2lsbCBvdmVyd3JpdGUgbWVtb3J5LCBwZXJoYXBzICBpdHMgIHN0YWNrLAotICAgICAgIGFuZCAgcHJvYmFibHkgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgUHJvZ3JhbXMgbGlrZSB0ZWxuZXQKLSAgICAgICBhcmUgcGFydGljdWxhcmx5IHZ1bG5lcmFibGU7ICBtb2Rlcm4gIHRlbG5ldHMgIHBhc3MgIGFsb25nCi0gICAgICAgdmFsdWVzICBsaWtlIHRoZSB0ZXJtaW5hbCB0eXBlIGF1dG9tYXRpY2FsbHkuICBUaGUgcmVzdWx0cwotICAgICAgIGFyZSBhbG1vc3QgYXMgdW5kZXNpcmFibGUgd2l0aCAgYSAgdGVybWNhcCAgbGlicmFyeSwgIGxpa2UKLSAgICAgICBTdW5PUyAgNC4xLjMgIGFuZCBVbHRyaXggNC40LCB0aGF0IHByaW50cyB3YXJuaW5nIG1lc3NhZ2VzCi0gICAgICAgd2hlbiBpdCByZWFkcyBhbiBvdmVybHkgbG9uZyB0ZXJtY2FwIGVudHJ5LiAgSWYgYSAgdGVybWNhcAotICAgICAgIGxpYnJhcnkgIHRydW5jYXRlcyAgbG9uZyAgZW50cmllcywgIGxpa2UgIE9TRi8xIDMuMCwgaXQgaXMKLSAgICAgICBpbW11bmUgdG8gZHlpbmcgaGVyZSBidXQgd2lsbCByZXR1cm4gIGluY29ycmVjdCAgZGF0YSAgZm9yCisgICAgICAgVGhlbiAgPFNUUk9ORz50Z2V0ZW50KCk8L1NUUk9ORz4gIHdpbGwgb3ZlcndyaXRlIG1lbW9yeSwgcGVyaGFwcyBpdHMgc3RhY2ssCisgICAgICAgYW5kIHByb2JhYmx5IGNvcmUgZHVtcCB0aGUgcHJvZ3JhbS4gIFByb2dyYW1zIGxpa2UgIHRlbG5ldAorICAgICAgIGFyZSAgcGFydGljdWxhcmx5ICB2dWxuZXJhYmxlOyAgbW9kZXJuICB0ZWxuZXRzIHBhc3MgYWxvbmcKKyAgICAgICB2YWx1ZXMgbGlrZSB0aGUgdGVybWluYWwgdHlwZSBhdXRvbWF0aWNhbGx5LiAgVGhlICByZXN1bHRzCisgICAgICAgYXJlICBhbG1vc3QgIGFzICB1bmRlc2lyYWJsZSAgd2l0aCBhIHRlcm1jYXAgbGlicmFyeSwgbGlrZQorICAgICAgIFN1bk9TIDQuMS4zIGFuZCBVbHRyaXggNC40LCB0aGF0IHByaW50cyAgd2FybmluZyAgbWVzc2FnZXMKKyAgICAgICB3aGVuICBpdCByZWFkcyBhbiBvdmVybHkgbG9uZyB0ZXJtY2FwIGVudHJ5LiAgSWYgYSB0ZXJtY2FwCisgICAgICAgbGlicmFyeSB0cnVuY2F0ZXMgbG9uZyBlbnRyaWVzLCAgbGlrZSAgT1NGLzEgIDMuMCwgIGl0ICBpcworICAgICAgIGltbXVuZSAgdG8gIGR5aW5nICBoZXJlIGJ1dCB3aWxsIHJldHVybiBpbmNvcnJlY3QgZGF0YSBmb3IKICAgICAgICB0aGUgdGVybWluYWwuCiAKICAgICAgICBUaGUgImFmdGVyIHRjIGV4cGFuc2lvbiIgbGVuZ3RoIHdpbGwgaGF2ZSBhIHNpbWlsYXIgZWZmZWN0CiAgICAgICAgdG8gdGhlIGFib3ZlLCBidXQgb25seSBmb3IgcGVvcGxlIHdobyBhY3R1YWxseSBzZXQgVEVSTSB0bwotICAgICAgIHRoYXQgIHRlcm1pbmFsIHR5cGUsIHNpbmNlIDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+IG9ubHkgZG9lcyAidGMiIGV4cGFuLQotICAgICAgIHNpb24gb25jZSBpdCBpcyBmb3VuZCB0aGUgdGVybWluYWwgIHR5cGUgIGl0ICB3YXMgIGxvb2tpbmcKKyAgICAgICB0aGF0IHRlcm1pbmFsIHR5cGUsIHNpbmNlIDxTVFJPTkc+dGdldGVudCgpPC9TVFJPTkc+IG9ubHkgZG9lcyAidGMiICBleHBhbi0KKyAgICAgICBzaW9uICBvbmNlICBpdCAgaXMgIGZvdW5kIHRoZSB0ZXJtaW5hbCB0eXBlIGl0IHdhcyBsb29raW5nCiAgICAgICAgZm9yLCBub3Qgd2hpbGUgc2VhcmNoaW5nLgogCiAgICAgICAgSW4gc3VtbWFyeSwgYSB0ZXJtY2FwIGVudHJ5IHRoYXQgaXMgbG9uZ2VyIHRoYW4gMTAyMyBieXRlcwotICAgICAgIGNhbiBjYXVzZSwgb24gdmFyaW91cyBjb21iaW5hdGlvbnMgIG9mICB0ZXJtY2FwICBsaWJyYXJpZXMKLSAgICAgICBhbmQgIGFwcGxpY2F0aW9ucywgIGEgIGNvcmUgIGR1bXAsICB3YXJuaW5ncywgb3IgaW5jb3JyZWN0Ci0gICAgICAgb3BlcmF0aW9uLiAgSWYgaXQgaXMgdG9vIGxvbmcgZXZlbiBiZWZvcmUgInRjIiAgZXhwYW5zaW9uLAorICAgICAgIGNhbiAgY2F1c2UsICBvbiAgdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgdGVybWNhcCBsaWJyYXJpZXMKKyAgICAgICBhbmQgYXBwbGljYXRpb25zLCBhICBjb3JlICBkdW1wLCAgd2FybmluZ3MsICBvciAgaW5jb3JyZWN0CisgICAgICAgb3BlcmF0aW9uLiAgIElmIGl0IGlzIHRvbyBsb25nIGV2ZW4gYmVmb3JlICJ0YyIgZXhwYW5zaW9uLAogICAgICAgIGl0IHdpbGwgaGF2ZSB0aGlzIGVmZmVjdCBldmVuIGZvciB1c2VycyBvZiBzb21lIG90aGVyIHRlci0KLSAgICAgICBtaW5hbCB0eXBlcyBhbmQgdXNlcnMgd2hvc2UgVEVSTSB2YXJpYWJsZSBkb2VzIG5vdCBoYXZlICBhCisgICAgICAgbWluYWwgIHR5cGVzIGFuZCB1c2VycyB3aG9zZSBURVJNIHZhcmlhYmxlIGRvZXMgbm90IGhhdmUgYQogICAgICAgIHRlcm1jYXAgZW50cnkuCiAKICAgICAgICBXaGVuIGluIC1DICh0cmFuc2xhdGUgdG8gdGVybWNhcCkgbW9kZSwgdGhlIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiBpbXBsZS0KICAgICAgICBtZW50YXRpb24gb2YgPFNUUk9ORz48QSBIUkVGPSJ0aWMuMW0uaHRtbCI+dGljKDFtKTwvQT48L1NUUk9ORz4gaXNzdWVzIHdhcm5pbmcgbWVzc2FnZXMgd2hlbiB0aGUgcHJlLQotICAgICAgIHRjICBsZW5ndGggIG9mICBhIHRlcm1jYXAgdHJhbnNsYXRpb24gaXMgdG9vIGxvbmcuICBUaGUgLWMKLSAgICAgICAoY2hlY2spIG9wdGlvbiBhbHNvIGNoZWNrcyByZXNvbHZlZCAoYWZ0ZXIgIHRjICBleHBhbnNpb24pCisgICAgICAgdGMgbGVuZ3RoIG9mIGEgdGVybWNhcCB0cmFuc2xhdGlvbiBpcyB0b28gIGxvbmcuICAgVGhlICAtYworICAgICAgIChjaGVjaykgIG9wdGlvbiAgYWxzbyBjaGVja3MgcmVzb2x2ZWQgKGFmdGVyIHRjIGV4cGFuc2lvbikKICAgICAgICBsZW5ndGhzLgogCi0gICA8U1RST05HPkJpbmFyeTwvU1RST05HPiA8U1RST05HPkNvbXBhdGliaWxpdHk8L1NUUk9ORz4KLSAgICAgICBJdCAgaXMgbm90IHdpc2UgdG8gY291bnQgb24gcG9ydGFiaWxpdHkgb2YgYmluYXJ5IHRlcm1pbmZvCi0gICAgICAgZW50cmllcyBiZXR3ZWVuIGNvbW1lcmNpYWwgVU5JWCB2ZXJzaW9ucy4gIFRoZSBwcm9ibGVtICBpcwotICAgICAgIHRoYXQgIHRoZXJlICBhcmUgIGF0IGxlYXN0IHR3byB2ZXJzaW9ucyBvZiB0ZXJtaW5mbyAodW5kZXIKKworPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtQmluYXJ5LUNvbXBhdGliaWxpdHkiPkJpbmFyeSBDb21wYXRpYmlsaXR5PC9hPjwvSDM+PFBSRT4KKyAgICAgICBJdCBpcyBub3Qgd2lzZSB0byBjb3VudCBvbiBwb3J0YWJpbGl0eSBvZiBiaW5hcnkgIHRlcm1pbmZvCisgICAgICAgZW50cmllcyAgYmV0d2VlbiBjb21tZXJjaWFsIFVOSVggdmVyc2lvbnMuICBUaGUgcHJvYmxlbSBpcworICAgICAgIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byB2ZXJzaW9ucyAgb2YgIHRlcm1pbmZvICAodW5kZXIKICAgICAgICBIUC1VWCBhbmQgQUlYKSB3aGljaCBkaXZlcmdlZCBmcm9tIFN5c3RlbSBWIHRlcm1pbmZvIGFmdGVyCi0gICAgICAgU1ZyMSwgIGFuZCBoYXZlIGFkZGVkIGV4dGVuc2lvbiBjYXBhYmlsaXRpZXMgdG8gdGhlIHN0cmluZwotICAgICAgIHRhYmxlIHRoYXQgKGluIHRoZSBiaW5hcnkgZm9ybWF0KSBjb2xsaWRlICB3aXRoICBTeXN0ZW0gIFYKKyAgICAgICBTVnIxLCBhbmQgaGF2ZSBhZGRlZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzIHRvIHRoZSAgc3RyaW5nCisgICAgICAgdGFibGUgIHRoYXQgIChpbiAgdGhlIGJpbmFyeSBmb3JtYXQpIGNvbGxpZGUgd2l0aCBTeXN0ZW0gVgogICAgICAgIGFuZCBYU0kgQ3Vyc2VzIGV4dGVuc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+RVhURU5TSU9OUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1FWFRFTlNJT05TIj5FWFRFTlNJT05TPC9hPjwvSDI+PFBSRT4KKyAgICAgICBTZWFyY2hpbmcgZm9yIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyBpbiA8U1RST05HPiRIT01FLy50ZXJtaW5mbzwvU1RST05HPiBhbmQKKyAgICAgICBURVJNSU5GT19ESVJTIGlzIG5vdCBzdXBwb3J0ZWQgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zLgorCiAgICAgICAgU29tZSAgU1ZyNCAgPFNUUk9ORz5jdXJzZXM8L1NUUk9ORz4gIGltcGxlbWVudGF0aW9ucywgIGFuZCAgYWxsIHByZXZpb3VzIHRvCiAgICAgICAgU1ZyNCwgZG8gbm90IGludGVycHJldCB0aGUgJUEgYW5kICVPIG9wZXJhdG9ycyBpbiAgcGFyYW1lLQogICAgICAgIHRlciBzdHJpbmdzLgpAQCAtMjMxNiw2ICsyNDcxLDE0IEBACiAgICAgICAgYW5kIGVtdWxhdG9ycyBsaWtlIHh0ZXJtIHRoYXQgIGNhbiAgcmV0dXJuICBtb3VzZS10cmFja2luZwogICAgICAgIGluZm9ybWF0aW9uIGluIHRoZSBrZXlib2FyZC1pbnB1dCBzdHJlYW0uCiAKKyAgICAgICBYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IG1lbnRpb24gaXRhbGljcy4gIFBvcnRhYmxlIGFwcGxpY2EtCisgICAgICAgdGlvbnMgbXVzdCBhc3N1bWUgdGhhdCAgbnVtZXJpYyAgY2FwYWJpbGl0aWVzICBhcmUgIHNpZ25lZAorICAgICAgIDE2LWJpdCAgdmFsdWVzLiAgIFRoaXMgIGluY2x1ZGVzICB0aGUgPEVNPm5vPC9FTT48U1RST05HPl88L1NUUk9ORz48RU0+Y29sb3I8L0VNPjxTVFJPTkc+XzwvU1RST05HPjxFTT52aWRlbzwvRU0+IChuY3YpCisgICAgICAgY2FwYWJpbGl0eS4gIFRoZSAzMjc2OCBtYXNrIHZhbHVlIHVzZWQgIGZvciAgaXRhbGljcyAgd2l0aAorICAgICAgIG5jdiAgY2FuICBiZSBjb25mdXNlZCB3aXRoIGFuIGFic2VudCBvciBjYW5jZWxsZWQgbmN2LiAgSWYKKyAgICAgICBpdGFsaWNzIHNob3VsZCB3b3JrIHdpdGggY29sb3JzLCB0aGVuIHRoZSBuY3YgIHZhbHVlICBtdXN0CisgICAgICAgYmUgc3BlY2lmaWVkLCBldmVuIGlmIGl0IGlzIHplcm8uCisKICAgICAgICBEaWZmZXJlbnQgIGNvbW1lcmNpYWwgcG9ydHMgb2YgdGVybWluZm8gYW5kIGN1cnNlcyBzdXBwb3J0CiAgICAgICAgZGlmZmVyZW50IHN1YnNldHMgb2YgdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYW5kIChpbiAgc29tZQogICAgICAgIGNhc2VzKSBkaWZmZXJlbnQgZXh0ZW5zaW9uIHNldHMuICBIZXJlIGlzIGEgc3VtbWFyeSwgYWNjdS0KQEAgLTIzNDIsMjIgKzI1MDUsMjMgQEAKICAgICAgICB0aHJvdWdoIDYzLCBwbHVzIGEgbnVtYmVyICBvZiAgaW5jb21wYXRpYmxlICBzdHJpbmcgIHRhYmxlCiAgICAgICAgZXh0ZW5zaW9ucy4KIAotICAgICAgIDxTVFJPTkc+T1NGPC9TVFJPTkc+ICAtLSBTdXBwb3J0cyBib3RoIHRoZSBTVnI0IHNldCBhbmQgdGhlIEFJWCBleHRlbnNpb25zLgorICAgICAgIDxTVFJPTkc+T1NGPC9TVFJPTkc+IC0tIFN1cHBvcnRzIGJvdGggdGhlIFNWcjQgc2V0IGFuZCB0aGUgQUlYIGV4dGVuc2lvbnMuCiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvLz8vKiAgZmlsZXMgICAgIGNvbnRhaW5pbmcgICAgIHRlcm1pbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9ucwogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgotICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idGljLjFtLmh0bWwiPnRpYygxbSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0icHJpbnRmLjMuaHRtbCI+cHJpbnRmKDMpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtLjUuaHRtbCI+dGVybSg1KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9InRpYy4xbS5odG1sIj50aWMoMW0pPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4sICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sICA8U1RST05HPnByaW50ZigzKTwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9InRlcm0uNS5odG1sIj50ZXJtKDUpPC9BPjwvU1RST05HPi4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9InRlcm1fdmFyaWFibGVzLjN4Lmh0bWwiPnRlcm1fdmFyaWFibGVzKDN4KTwvQT48L1NUUk9ORz4uCiAKIAogPC9QUkU+Ci08SDI+QVVUSE9SUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1JTIj5BVVRIT1JTPC9hPjwvSDI+PFBSRT4KICAgICAgICBaZXlkICBNLiAgQmVuLUhhbGltLCAgRXJpYyAgUy4gIFJheW1vbmQsIFRob21hcyBFLiBEaWNrZXkuCiAgICAgICAgQmFzZWQgb24gcGN1cnNlcyBieSBQYXZlbCBDdXJ0aXMuCiAKQEAgLTIzNjUsMTAgKzI1MjksNDMgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPgogPC9QUkU+Ci08SFI+Ci08QUREUkVTUz4KLU1hbigxKSBvdXRwdXQgY29udmVydGVkIHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly93d3cub2FjLnVjaS5lZHUvaW5kaXYvZWhvb2QvbWFuMmh0bWwuaHRtbCI+bWFuMmh0bWw8L2E+Ci08L0FERFJFU1M+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPHVsPgorPGxpPjxhIGhyZWY9IiNoMi1OQU1FIj5OQU1FPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gzLVByZWRlZmluZWQtQ2FwYWJpbGl0aWVzIj5QcmVkZWZpbmVkIENhcGFiaWxpdGllczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Vc2VyLURlZmluZWQtQ2FwYWJpbGl0aWVzIj5Vc2VyLURlZmluZWQgQ2FwYWJpbGl0aWVzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUEtU2FtcGxlLUVudHJ5Ij5BIFNhbXBsZSBFbnRyeTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UeXBlcy1vZi1DYXBhYmlsaXRpZXMiPlR5cGVzIG9mIENhcGFiaWxpdGllczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1GZXRjaGluZy1Db21waWxlZC1EZXNjcmlwdGlvbnMiPkZldGNoaW5nIENvbXBpbGVkIERlc2NyaXB0aW9uczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1QcmVwYXJpbmctRGVzY3JpcHRpb25zIj5QcmVwYXJpbmcgRGVzY3JpcHRpb25zPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUJhc2ljLUNhcGFiaWxpdGllcyI+QmFzaWMgQ2FwYWJpbGl0aWVzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVBhcmFtZXRlcml6ZWQtU3RyaW5ncyI+UGFyYW1ldGVyaXplZCBTdHJpbmdzPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUN1cnNvci1Nb3Rpb25zIj5DdXJzb3IgTW90aW9uczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1BcmVhLUNsZWFycyI+QXJlYSBDbGVhcnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtSW5zZXJ0X2RlbGV0ZS1saW5lLWFuZC12ZXJ0aWNhbC1tb3Rpb25zIj5JbnNlcnQvZGVsZXRlIGxpbmUgYW5kIHZlcnRpY2FsIG1vdGlvbnM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtSW5zZXJ0X0RlbGV0ZS1DaGFyYWN0ZXIiPkluc2VydC9EZWxldGUgQ2hhcmFjdGVyPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLUhpZ2hsaWdodGluZ18tVW5kZXJsaW5pbmdfLWFuZC1WaXNpYmxlLUJlbGxzIj5IaWdobGlnaHRpbmcsIFVuZGVybGluaW5nLCBhbmQgVmlzaWJsZSBCZWxsczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1LZXlwYWQtYW5kLUZ1bmN0aW9uLUtleXMiPktleXBhZCBhbmQgRnVuY3Rpb24gS2V5czwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1UYWJzLWFuZC1Jbml0aWFsaXphdGlvbiI+VGFicyBhbmQgSW5pdGlhbGl6YXRpb248L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtRGVsYXlzLWFuZC1QYWRkaW5nIj5EZWxheXMgYW5kIFBhZGRpbmc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtU3RhdHVzLUxpbmVzIj5TdGF0dXMgTGluZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTGluZS1HcmFwaGljcyI+TGluZSBHcmFwaGljczwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1Db2xvci1IYW5kbGluZyI+Q29sb3IgSGFuZGxpbmc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtTWlzY2VsbGFuZW91cyI+TWlzY2VsbGFuZW91czwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1HbGl0Y2hlcy1hbmQtQnJhaW5kYW1hZ2UiPkdsaXRjaGVzIGFuZCBCcmFpbmRhbWFnZTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1TaW1pbGFyLVRlcm1pbmFscyI+U2ltaWxhciBUZXJtaW5hbHM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtUGl0ZmFsbHMtb2YtTG9uZy1FbnRyaWVzIj5QaXRmYWxscyBvZiBMb25nIEVudHJpZXM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDMtQmluYXJ5LUNvbXBhdGliaWxpdHkiPkJpbmFyeSBDb21wYXRpYmlsaXR5PC9hPjwvbGk+Cis8L3VsPgorPC9saT4KKzxsaT48YSBocmVmPSIjaDItRVhURU5TSU9OUyI+RVhURU5TSU9OUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1GSUxFUyI+RklMRVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUFVVEhPUlMiPkFVVEhPUlM8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi90aWMuMW0uaHRtbCBiL2RvYy9odG1sL21hbi90aWMuMW0uaHRtbAppbmRleCBiMzEwM2FkLi5mMjg3YzFlIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vdGljLjFtLmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL3RpYy4xbS5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw4NSArMjYsMTYzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiB0aWMuMW0sdiAxLjQ0IDIwMDYvMTIvMjQgMTc6NTk6MTEgdG9tIEV4cCBACisgICogQElkOiB0aWMuMW0sdiAxLjYwIDIwMTQvMDUvMjQgMjI6MDA6MTEgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+dGljIDFtPC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+dGljIDFtPC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj50aWMgMW08L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9InRpYy4xbS5odG1sIj50aWMoMW0pPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idGljLjFtLmh0bWwiPnRpYygxbSk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz50aWM8L1NUUk9ORz4gLSB0aGUgPEVNPnRlcm1pbmZvPC9FTT4gZW50cnktZGVzY3JpcHRpb24gY29tcGlsZXIKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPnRpYzwvU1RST05HPiAgWzxTVFJPTkc+LTFDR0lMTlRVVmFjZmdyc3R4PC9TVFJPTkc+XSAgWzxTVFJPTkc+LWU8L1NUUk9ORz4gPEVNPm5hbWVzPC9FTT5dIFs8U1RST05HPi1vPC9TVFJPTkc+IDxFTT5kaXI8L0VNPl0gWzxTVFJPTkc+LVI8L1NUUk9ORz4gPEVNPnN1YnNldDwvRU0+XQotICAgICAgIFs8U1RST05HPi12PC9TVFJPTkc+WzxFTT5uPC9FTT5dXSBbPFNUUk9ORz4tdzwvU1RST05HPls8RU0+bjwvRU0+XV0gPEVNPmZpbGU8L0VNPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz50aWM8L1NUUk9ORz4gIFs8U1RST05HPi0wMUNER0lLTE5UVVZhY2ZncnN0eDwvU1RST05HPl0gIFs8U1RST05HPi1lPC9TVFJPTkc+IDxFTT5uYW1lczwvRU0+XSBbPFNUUk9ORz4tbzwvU1RST05HPiA8RU0+ZGlyPC9FTT5dIFs8U1RST05HPi1SPC9TVFJPTkc+IDxFTT5zdWItPC9FTT4KKyAgICAgICA8RU0+c2V0PC9FTT5dIFs8U1RST05HPi12PC9TVFJPTkc+WzxFTT5uPC9FTT5dXSBbPFNUUk9ORz4tdzwvU1RST05HPls8RU0+bjwvRU0+XV0gPEVNPmZpbGU8L0VNPgogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgotICAgICAgIFRoZSBjb21tYW5kIDxTVFJPTkc+dGljPC9TVFJPTkc+IHRyYW5zbGF0ZXMgYSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZmlsZSAgZnJvbSAgc291cmNlCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGUgPFNUUk9ORz50aWM8L1NUUk9ORz4gY29tbWFuZCB0cmFuc2xhdGVzIGEgIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gIGZpbGUgIGZyb20gIHNvdXJjZQogICAgICAgIGZvcm1hdCAgaW50byBjb21waWxlZCBmb3JtYXQuICBUaGUgY29tcGlsZWQgZm9ybWF0IGlzIG5lYy0KICAgICAgICBlc3NhcnkgZm9yIHVzZSB3aXRoIHRoZSBsaWJyYXJ5IHJvdXRpbmVzIGluIDxTVFJPTkc+PEEgSFJFRj0ibmN1cnNlcy4zeC5odG1sIj5uY3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4uCiAKKyAgICAgICBBcyBkZXNjcmliZWQgaW4gPFNUUk9ORz48QSBIUkVGPSJ0ZXJtLjUuaHRtbCI+dGVybSg1KTwvQT48L1NUUk9ORz4sIHRoZSAgZGF0YWJhc2UgIG1heSAgYmUgIGVpdGhlciAgYQorICAgICAgIGRpcmVjdG9yeSAgdHJlZSAgKG9uZSBmaWxlIHBlciB0ZXJtaW5hbCBlbnRyeSkgb3IgYSBoYXNoZWQKKyAgICAgICBkYXRhYmFzZSAob25lIHJlY29yZCBwZXIgZW50cnkpLiAgVGhlIDxTVFJPTkc+dGljPC9TVFJPTkc+ICBjb21tYW5kICB3cml0ZXMKKyAgICAgICBvbmx5IG9uZSB0eXBlIG9mIGVudHJ5LCBkZXBlbmRpbmcgb24gaG93IGl0IHdhcyBidWlsdDoKKworICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEZvciAgZGlyZWN0b3J5ICB0cmVlcywgIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBlLmcuLAorICAgICAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvLCBzcGVjaWZpZXMgIHRoZSAgbG9jYXRpb24gIG9mICB0aGUKKyAgICAgICAgICAgZGF0YWJhc2UuCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBGb3IgIGhhc2hlZCAgZGF0YWJhc2VzLCAgYSBmaWxlbmFtZSBpcyBuZWVkZWQuICBJZiB0aGUKKyAgICAgICAgICAgZ2l2ZW4gZmlsZSBpcyBub3QgZm91bmQgYnkgdGhhdCBuYW1lLCBidXQgY2FuIGJlIGZvdW5kCisgICAgICAgICAgIGJ5IGFkZGluZyB0aGUgc3VmZml4ICIuZGIiLCB0aGVuIHRoYXQgaXMgdXNlZC4KKworICAgICAgICAgICBUaGUgIGRlZmF1bHQgIG5hbWUgZm9yIHRoZSBoYXNoZWQgZGF0YWJhc2UgaXMgdGhlIHNhbWUKKyAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IG5hbWUgIChvbmx5ICBhZGRpbmcgIGEgICIuZGIiCisgICAgICAgICAgIHN1ZmZpeCkuCisKKyAgICAgICBJbiAgZWl0aGVyICBjYXNlICAoZGlyZWN0b3J5IG9yIGhhc2hlZCBkYXRhYmFzZSksIDxTVFJPTkc+dGljPC9TVFJPTkc+IHdpbGwKKyAgICAgICBjcmVhdGUgdGhlIGNvbnRhaW5lciBpZiBpdCBkb2VzIG5vdCBleGlzdC4gIEZvciAgYSAgZGlyZWMtCisgICAgICAgdG9yeSwgIHRoaXMgIHdvdWxkICBiZSB0aGUgInRlcm1pbmZvIiBsZWFmLCB2ZXJzdXMgYSAidGVyLQorICAgICAgIG1pbmZvLmRiIiBmaWxlLgorCiAgICAgICAgVGhlIHJlc3VsdHMgYXJlIG5vcm1hbGx5IHBsYWNlZCAgaW4gIHRoZSAgc3lzdGVtICB0ZXJtaW5mbwotICAgICAgIGRpcmVjdG9yeSAgPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+LiAgIFRoZXJlICBhcmUgIHR3byAgd2F5cyB0bwotICAgICAgIGNoYW5nZSB0aGlzIGJlaGF2aW9yLgorICAgICAgIGRhdGFiYXNlICAgPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+LiAgICBUaGUgIGNvbXBpbGVkICB0ZXJtaW5hbAorICAgICAgIGRlc2NyaXB0aW9uIGNhbiBiZSBwbGFjZWQgaW4gYSAgZGlmZmVyZW50ICB0ZXJtaW5mbyAgZGF0YS0KKyAgICAgICBiYXNlLiAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFjaGlldmUgdGhpczoKIAotICAgICAgIEZpcnN0LCB5b3UgbWF5IG92ZXJyaWRlIHRoZSBzeXN0ZW0gZGVmYXVsdCBieSBzZXR0aW5nICB0aGUKLSAgICAgICB2YXJpYWJsZSAgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiAgaW4gIHlvdXIgIHNoZWxsIGVudmlyb25tZW50IHRvIGEgdmFsaWQKLSAgICAgICAoZXhpc3RpbmcpIGRpcmVjdG9yeSBuYW1lLgorICAgICAgIDxTVFJPTkc+bzwvU1RST05HPiAgIEZpcnN0LCAgeW91ICBtYXkgb3ZlcnJpZGUgdGhlIHN5c3RlbSBkZWZhdWx0IGVpdGhlciBieQorICAgICAgICAgICB1c2luZyB0aGUgPFNUUk9ORz4tbzwvU1RST05HPiBvcHRpb24sIG9yIGJ5IHNldHRpbmcgdGhlICB2YXJpYWJsZSAgPFNUUk9ORz5URVItPC9TVFJPTkc+CisgICAgICAgICAgIDxTVFJPTkc+TUlORk88L1NUUk9ORz4gIGluICB5b3VyICBzaGVsbCBlbnZpcm9ubWVudCB0byBhIHZhbGlkIGRhdGFiYXNlCisgICAgICAgICAgIGxvY2F0aW9uLgogCi0gICAgICAgU2Vjb25kbHksIGlmIDxTVFJPTkc+dGljPC9TVFJPTkc+IGNhbm5vdCBnZXQgYWNjZXNzIHRvICA8RU0+L3Vzci9zaGFyZS90ZXJtaW5mbzwvRU0+Ci0gICAgICAgb3IgIHlvdXIgIFRFUk1JTkZPICBkaXJlY3RvcnksICBpdCBsb29rcyBmb3IgdGhlIGRpcmVjdG9yeQotICAgICAgIDxFTT4kSE9NRS8udGVybWluZm88L0VNPjsgaWYgdGhhdCBkaXJlY3RvcnkgZXhpc3RzLCAgdGhlICBlbnRyeSAgaXMKLSAgICAgICBwbGFjZWQgdGhlcmUuCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgU2Vjb25kbHksIGlmIDxTVFJPTkc+dGljPC9TVFJPTkc+IGNhbm5vdCB3cml0ZSAgaW4gIDxFTT4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9FTT4KKyAgICAgICAgICAgb3IgIHRoZSAgbG9jYXRpb24gIHNwZWNpZmllZCB1c2luZyB5b3VyIFRFUk1JTkZPIHZhcmktCisgICAgICAgICAgIGFibGUsIGl0IGxvb2tzIGZvciB0aGUgZGlyZWN0b3J5ICA8RU0+JEhPTUUvLnRlcm1pbmZvPC9FTT4gIChvcgorICAgICAgICAgICBoYXNoZWQgIGRhdGFiYXNlIDxFTT4kSE9NRS8udGVybWluZm8uZGIpPC9FTT47IGlmIHRoYXQgbG9jYXRpb24KKyAgICAgICAgICAgZXhpc3RzLCB0aGUgZW50cnkgaXMgcGxhY2VkIHRoZXJlLgogCiAgICAgICAgTGlicmFyaWVzIHRoYXQgcmVhZCB0ZXJtaW5mbyBlbnRyaWVzIGFyZSBleHBlY3RlZCB0byBjaGVjawotICAgICAgIGZvciBhIFRFUk1JTkZPIGRpcmVjdG9yeSBmaXJzdCwgbG9vayBhdCA8RU0+JEhPTUUvLnRlcm1pbmZvPC9FTT4gaWYKLSAgICAgICBURVJNSU5GTyAgaXMgIG5vdCBzZXQsIGFuZCBmaW5hbGx5IGxvb2sgaW4gPEVNPi91c3Ivc2hhcmUvdGVyLTwvRU0+Ci0gICAgICAgPEVNPm1pbmZvPC9FTT4uCisgICAgICAgaW4gc3VjY2Vzc2lvbgorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYSAgbG9jYXRpb24gIHNwZWNpZmllZCAgd2l0aCAgdGhlIFRFUk1JTkZPIGVudmlyb25tZW50CisgICAgICAgICAgIHZhcmlhYmxlLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgPEVNPiRIT01FLy50ZXJtaW5mbzwvRU0+LAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgZGlyZWN0b3JpZXMgbGlzdGVkIGluICB0aGUgIFRFUk1JTkZPX0RJUlMgIGVudmlyb25tZW50CisgICAgICAgICAgIHZhcmlhYmxlLAorCisgICAgICAgPFNUUk9ORz5vPC9TVFJPTkc+ICAgYSAgICAgICBjb21waWxlZC1pbiAgICAgIGxpc3QgICAgICBvZiAgICAgIGRpcmVjdG9yaWVzCisgICAgICAgICAgICgvdXNyL2xvY2FsL25jdXJzZXMvc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS90ZXItCisgICAgICAgICAgIG1pbmZvKSwgYW5kCisKKyAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICB0aGUgc3lzdGVtIHRlcm1pbmZvIGRhdGFiYXNlICg8RU0+L3Vzci9zaGFyZS90ZXJtaW5mbzwvRU0+KS4KKworCis8L1BSRT4KKzxIMz48YSBuYW1lPSJoMy1PUFRJT05TIj5PUFRJT05TPC9hPjwvSDM+PFBSRT4KKyAgICAgICA8U1RST05HPi0wPC9TVFJPTkc+ICAgICByZXN0cmljdHMgdGhlIG91dHB1dCB0byBhIHNpbmdsZSBsaW5lCiAKICAgICAgICA8U1RST05HPi0xPC9TVFJPTkc+ICAgICByZXN0cmljdHMgdGhlIG91dHB1dCB0byBhIHNpbmdsZSBjb2x1bW4KIAogICAgICAgIDxTVFJPTkc+LWE8L1NUUk9ORz4gICAgIHRlbGxzICA8U1RST05HPnRpYzwvU1RST05HPiAgdG8gIHJldGFpbiAgY29tbWVudGVkLW91dCAgY2FwYWJpbGl0aWVzCiAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRpc2NhcmRpbmcgdGhlbS4gIENhcGFiaWxpdGllcyBhcmUgY29tLQotICAgICAgICAgICAgICBtZW50ZWQgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCBhIHBlcmlvZC4gIFRoaXMgIHNldHMKLSAgICAgICAgICAgICAgdGhlICA8U1RST05HPi14PC9TVFJPTkc+IG9wdGlvbiwgYmVjYXVzZSBpdCB0cmVhdHMgdGhlIGNvbW1lbnRlZC1vdXQKLSAgICAgICAgICAgICAgZW50cmllcyBhcyB1c2VyLWRlZmluZWQgbmFtZXMuICBJZiAgdGhlICBzb3VyY2UgIGlzCi0gICAgICAgICAgICAgIHRlcm1jYXAsICBhY2NlcHQgIHRoZSAyLWNoYXJhY3RlciBuYW1lcyByZXF1aXJlZCBieQorICAgICAgICAgICAgICBtZW50ZWQgIGJ5IHByZWZpeGluZyB0aGVtIHdpdGggYSBwZXJpb2QuICBUaGlzIHNldHMKKyAgICAgICAgICAgICAgdGhlIDxTVFJPTkc+LXg8L1NUUk9ORz4gb3B0aW9uLCBiZWNhdXNlIGl0IHRyZWF0cyB0aGUgIGNvbW1lbnRlZC1vdXQKKyAgICAgICAgICAgICAgZW50cmllcyAgYXMgIHVzZXItZGVmaW5lZCAgbmFtZXMuICBJZiB0aGUgc291cmNlIGlzCisgICAgICAgICAgICAgIHRlcm1jYXAsIGFjY2VwdCB0aGUgMi1jaGFyYWN0ZXIgbmFtZXMgIHJlcXVpcmVkICBieQogICAgICAgICAgICAgICB2ZXJzaW9uIDYuICBPdGhlcndpc2UgdGhlc2UgYXJlIGlnbm9yZWQuCiAKLSAgICAgICA8U1RST05HPi1DPC9TVFJPTkc+ICAgICBGb3JjZSBzb3VyY2UgdHJhbnNsYXRpb24gdG8gdGVybWNhcCBmb3JtYXQuICAgTm90ZToKLSAgICAgICAgICAgICAgdGhpcyAgZGlmZmVycyAgZnJvbSB0aGUgPFNUUk9ORz4tQzwvU1RST05HPiBvcHRpb24gb2YgPFNUUk9ORz48QSBIUkVGPSJpbmZvY21wLjFtLmh0bWwiPmluZm9jbXAoMW0pPC9BPjwvU1RST05HPiBpbgorICAgICAgIDxTVFJPTkc+LUM8L1NUUk9ORz4gICAgIEZvcmNlICBzb3VyY2UgdHJhbnNsYXRpb24gdG8gdGVybWNhcCBmb3JtYXQuICBOb3RlOgorICAgICAgICAgICAgICB0aGlzIGRpZmZlcnMgZnJvbSB0aGUgPFNUUk9ORz4tQzwvU1RST05HPiBvcHRpb24gb2YgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4gIGluCiAgICAgICAgICAgICAgIHRoYXQgaXQgZG9lcyBub3QgbWVyZWx5IHRyYW5zbGF0ZSBjYXBhYmlsaXR5IG5hbWVzLAotICAgICAgICAgICAgICBidXQgIGFsc28gIHRyYW5zbGF0ZXMgIHRlcm1pbmZvICBzdHJpbmdzIHRvIHRlcm1jYXAKKyAgICAgICAgICAgICAgYnV0IGFsc28gdHJhbnNsYXRlcyAgdGVybWluZm8gIHN0cmluZ3MgIHRvICB0ZXJtY2FwCiAgICAgICAgICAgICAgIGZvcm1hdC4gIENhcGFiaWxpdGllcyB0aGF0IGFyZSBub3QgdHJhbnNsYXRhYmxlIGFyZQotICAgICAgICAgICAgICBsZWZ0ICBpbiAgdGhlICBlbnRyeSB1bmRlciB0aGVpciB0ZXJtaW5mbyBuYW1lcyBidXQKLSAgICAgICAgICAgICAgY29tbWVudGVkIG91dCB3aXRoIHR3byBwcmVjZWRpbmcgZG90cy4KKyAgICAgICAgICAgICAgbGVmdCBpbiB0aGUgZW50cnkgdW5kZXIgdGhlaXIgIHRlcm1pbmZvICBuYW1lcyAgYnV0CisgICAgICAgICAgICAgIGNvbW1lbnRlZCAgb3V0IHdpdGggdHdvIHByZWNlZGluZyBkb3RzLiAgVGhlIGFjdHVhbAorICAgICAgICAgICAgICBmb3JtYXQgIHVzZWQgIGluY29ycG9yYXRlcyAgc29tZSAgaW1wcm92ZW1lbnRzICBmb3IKKyAgICAgICAgICAgICAgZXNjYXBlZCAgY2hhcmFjdGVycyAgZnJvbSAgdGVybWluZm8gIGZvcm1hdC4gIEZvciBhCisgICAgICAgICAgICAgIHN0cmljdGVyIEJTRC1jb21wYXRpYmxlICB0cmFuc2xhdGlvbiwgIGFkZCAgdGhlICA8U1RST05HPi1LPC9TVFJPTkc+CisgICAgICAgICAgICAgIG9wdGlvbi4KKworICAgICAgICAgICAgICBJZiAgdGhpcyAgaXMgY29tYmluZWQgd2l0aCA8U1RST05HPi1jPC9TVFJPTkc+LCA8U1RST05HPnRpYzwvU1RST05HPiBtYWtlcyBhZGRpdGlvbmFsCisgICAgICAgICAgICAgIGNoZWNrcyB0byByZXBvcnQgY2FzZXMgd2hlcmUgdGhlIHRlcm1pbmZvIHZhbHVlcyBkbworICAgICAgICAgICAgICBub3QgIGhhdmUgYW4gZXhhY3QgZXF1aXZhbGVudCBpbiB0ZXJtY2FwIGZvcm0uICBGb3IKKyAgICAgICAgICAgICAgZXhhbXBsZToKKworICAgICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICA8U1RST05HPnNncjwvU1RST05HPiB1c3VhbGx5IHdpbGwgbm90IGNvbnZlcnQsICBiZWNhdXNlICB0ZXJtY2FwCisgICAgICAgICAgICAgICAgICBsYWNrcyAgdGhlICBhYmlsaXR5ICB0byB3b3JrIHdpdGggbW9yZSB0aGFuIHR3bworICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycywgYW5kIGJlY2F1c2UgdGVybWNhcCBsYWNrcyAgbWFueSAgb2YKKyAgICAgICAgICAgICAgICAgIHRoZSAgYXJpdGhtZXRpYy9sb2dpY2FsICBvcGVyYXRvcnMgdXNlZCBpbiB0ZXItCisgICAgICAgICAgICAgICAgICBtaW5mby4KKworICAgICAgICAgICAgICA8U1RST05HPm88L1NUUk9ORz4gICBjYXBhYmlsaXRpZXMgd2l0aCBtb3JlIHRoYW4gb25lIGRlbGF5ICBvciAgd2l0aAorICAgICAgICAgICAgICAgICAgZGVsYXlzICBiZWZvcmUgIHRoZSAgZW5kIG9mIHRoZSBzdHJpbmcgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgIGNvbnZlcnQgY29tcGxldGVseS4KIAogICAgICAgIDxTVFJPTkc+LWM8L1NUUk9ORz4gICAgIHRlbGxzIDxTVFJPTkc+dGljPC9TVFJPTkc+IHRvIG9ubHkgY2hlY2sgPEVNPmZpbGU8L0VNPiBmb3IgZXJyb3JzLCAgaW5jbHVkaW5nCiAgICAgICAgICAgICAgIHN5bnRheCAgcHJvYmxlbXMgYW5kIGJhZCB1c2UgbGlua3MuICBJZiB5b3Ugc3BlY2lmeQogICAgICAgICAgICAgICA8U1RST05HPi1DPC9TVFJPTkc+ICg8U1RST05HPi1JPC9TVFJPTkc+KSB3aXRoIHRoaXMgb3B0aW9uLCB0aGUgY29kZSB3aWxsIHByaW50IHdhcm4tCiAgICAgICAgICAgICAgIGluZ3MgYWJvdXQgZW50cmllcyB3aGljaCwgYWZ0ZXIgdXNlIHJlc29sdXRpb24sIGFyZQogICAgICAgICAgICAgICBtb3JlIHRoYW4gMTAyMyAoNDA5NikgYnl0ZXMgbG9uZy4gIER1ZSB0byAgYSAgZml4ZWQKLSAgICAgICAgICAgICAgYnVmZmVyICBsZW5ndGggIGluICBvbGRlciAgdGVybWNhcCBsaWJyYXJpZXMgKGFuZCBhCi0gICAgICAgICAgICAgIGRvY3VtZW50ZWQgbGltaXQgaW4gdGVybWluZm8pLCAgdGhlc2UgIGVudHJpZXMgIG1heQotICAgICAgICAgICAgICBjYXVzZSBjb3JlIGR1bXBzLgorICAgICAgICAgICAgICBidWZmZXIgIGxlbmd0aCAgaW4gb2xkZXIgdGVybWNhcCBsaWJyYXJpZXMsIGFzIHdlbGwKKyAgICAgICAgICAgICAgYXMgYnVnZ3kgY2hlY2tpbmcgZm9yIHRoZSBidWZmZXIgbGVuZ3RoIChhbmQgYSBkb2MtCisgICAgICAgICAgICAgIHVtZW50ZWQgbGltaXQgaW4gdGVybWluZm8pLCB0aGVzZSBlbnRyaWVzIG1heSBjYXVzZQorICAgICAgICAgICAgICBjb3JlIGR1bXBzIHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICAgICAgIDxTVFJPTkc+dGljPC9TVFJPTkc+IGNoZWNrcyBzdHJpbmcgY2FwYWJpbGl0aWVzIHRvIGVuc3VyZSB0aGF0IHRob3NlCisgICAgICAgICAgICAgIHdpdGggcGFyYW1ldGVycyB3aWxsIGJlIHZhbGlkIGV4cHJlc3Npb25zLiAgSXQgZG9lcworICAgICAgICAgICAgICB0aGlzIGNoZWNrIG9ubHkgZm9yIHRoZSBwcmVkZWZpbmVkIHN0cmluZyBjYXBhYmlsaS0KKyAgICAgICAgICAgICAgdGllczsgIHRob3NlICB3aGljaCAgYXJlIGRlZmluZWQgd2l0aCB0aGUgPFNUUk9ORz4teDwvU1RST05HPiBvcHRpb24KKyAgICAgICAgICAgICAgYXJlIGlnbm9yZWQuCisKKyAgICAgICA8U1RST05HPi1EPC9TVFJPTkc+ICAgICB0ZWxscyA8U1RST05HPnRpYzwvU1RST05HPiB0byBwcmludCB0aGUgZGF0YWJhc2UgbG9jYXRpb25zICB0aGF0ICBpdAorICAgICAgICAgICAgICBrbm93cyBhYm91dCwgYW5kIGV4aXQuICBUaGUgZmlyc3QgbG9jYXRpb24gc2hvd24gaXMKKyAgICAgICAgICAgICAgdGhlIG9uZSB0byB3aGljaCBpdCB3b3VsZCB3cml0ZSAgY29tcGlsZWQgIHRlcm1pbmFsCisgICAgICAgICAgICAgIGRlc2NyaXB0aW9ucy4gICBJZiAgPFNUUk9ORz50aWM8L1NUUk9ORz4gIGlzICBub3QgIGFibGUgIHRvICBmaW5kICBhCisgICAgICAgICAgICAgIHdyaXRhYmxlIGRhdGFiYXNlIGxvY2F0aW9uIGFjY29yZGluZyB0byAgdGhlICBydWxlcworICAgICAgICAgICAgICBzdW1tYXJpemVkICBhYm92ZSwgIGl0ICB3aWxsIHByaW50IGEgZGlhZ25vc3RpYyBhbmQKKyAgICAgICAgICAgICAgZXhpdCB3aXRoIGFuIGVycm9yIHJhdGhlciB0aGFuIHByaW50aW5nIGEgIGxpc3QgIG9mCisgICAgICAgICAgICAgIGRhdGFiYXNlIGxvY2F0aW9ucy4KIAogICAgICAgIDxTVFJPTkc+LWU8L1NUUk9ORz4gPEVNPm5hbWVzPC9FTT4KICAgICAgICAgICAgICAgTGltaXQgIHdyaXRlcyAgYW5kICB0cmFuc2xhdGlvbnMgIHRvICB0aGUgZm9sbG93aW5nCkBAIC0xMzAsMTI4ICsyMDcsMTM3IEBACiAKICAgICAgICA8U1RST05HPi1JPC9TVFJPTkc+ICAgICBGb3JjZSBzb3VyY2UgdHJhbnNsYXRpb24gdG8gdGVybWluZm8gZm9ybWF0LgogCi0gICAgICAgPFNUUk9ORz4tTDwvU1RST05HPiAgICAgRm9yY2UgIHNvdXJjZSAgdHJhbnNsYXRpb24gdG8gdGVybWluZm8gZm9ybWF0IHVzaW5nCisgICAgICAgPFNUUk9ORz4tSzwvU1RST05HPiAgICAgU3VwcHJlc3MgIHNvbWUgIGxvbmdzdGFuZGluZyAgbmN1cnNlcyBleHRlbnNpb25zIHRvCisgICAgICAgICAgICAgIHRlcm1jYXAgZm9ybWF0LCBlLmcuLCAiXHMiIGZvciBzcGFjZS4KKworICAgICAgIDxTVFJPTkc+LUw8L1NUUk9ORz4gICAgIEZvcmNlIHNvdXJjZSB0cmFuc2xhdGlvbiB0byB0ZXJtaW5mbyAgZm9ybWF0ICB1c2luZwogICAgICAgICAgICAgICB0aGUgbG9uZyBDIHZhcmlhYmxlIG5hbWVzIGxpc3RlZCBpbiAmbHQ7PFNUUk9ORz50ZXJtLmg8L1NUUk9ORz4mZ3Q7CiAKICAgICAgICA8U1RST05HPi1OPC9TVFJPTkc+ICAgICBEaXNhYmxlIHNtYXJ0IGRlZmF1bHRzLiAgTm9ybWFsbHksIHdoZW4gdHJhbnNsYXRpbmcKICAgICAgICAgICAgICAgZnJvbSB0ZXJtY2FwIHRvIHRlcm1pbmZvLCB0aGUgY29tcGlsZXIgbWFrZXMgYSBudW0tCi0gICAgICAgICAgICAgIGJlciBvZiBhc3N1bXB0aW9ucyBhYm91dCAgdGhlICBkZWZhdWx0cyAgb2YgIHN0cmluZwotICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgIDxTVFJPTkc+cmVzZXQxX3N0cmluZzwvU1RST05HPiwgIDxTVFJPTkc+Y2FycmlhZ2VfcmV0dXJuPC9TVFJPTkc+LCA8U1RST05HPmN1ci08L1NUUk9ORz4KLSAgICAgICAgICAgICAgPFNUUk9ORz5zb3JfbGVmdDwvU1RST05HPiwgPFNUUk9ORz5jdXJzb3JfZG93bjwvU1RST05HPiwgIDxTVFJPTkc+c2Nyb2xsX2ZvcndhcmQ8L1NUUk9ORz4sICA8U1RST05HPnRhYjwvU1RST05HPiwgIDxTVFJPTkc+bmV3LTwvU1RST05HPgotICAgICAgICAgICAgICA8U1RST05HPmxpbmU8L1NUUk9ORz4sICA8U1RST05HPmtleV9iYWNrc3BhY2U8L1NUUk9ORz4sICA8U1RST05HPmtleV9sZWZ0PC9TVFJPTkc+LCBhbmQgPFNUUk9ORz5rZXlfZG93bjwvU1RST05HPiwgdGhlbgotICAgICAgICAgICAgICBhdHRlbXB0cyB0byB1c2Ugb2Jzb2xldGUgIHRlcm1jYXAgIGNhcGFiaWxpdGllcyAgdG8KKyAgICAgICAgICAgICAgYmVyICBvZiAgYXNzdW1wdGlvbnMgIGFib3V0ICB0aGUgZGVmYXVsdHMgb2Ygc3RyaW5nCisgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA8U1RST05HPnJlc2V0MV9zdHJpbmc8L1NUUk9ORz4sICA8U1RST05HPmNhcnJpYWdlX3JldHVybjwvU1RST05HPiwgIDxTVFJPTkc+Y3VyLTwvU1RST05HPgorICAgICAgICAgICAgICA8U1RST05HPnNvcl9sZWZ0PC9TVFJPTkc+LCAgPFNUUk9ORz5jdXJzb3JfZG93bjwvU1RST05HPiwgIDxTVFJPTkc+c2Nyb2xsX2ZvcndhcmQ8L1NUUk9ORz4sICA8U1RST05HPnRhYjwvU1RST05HPiwgPFNUUk9ORz5uZXctPC9TVFJPTkc+CisgICAgICAgICAgICAgIDxTVFJPTkc+bGluZTwvU1RST05HPiwgPFNUUk9ORz5rZXlfYmFja3NwYWNlPC9TVFJPTkc+LCA8U1RST05HPmtleV9sZWZ0PC9TVFJPTkc+LCBhbmQgIDxTVFJPTkc+a2V5X2Rvd248L1NUUk9ORz4sICB0aGVuCisgICAgICAgICAgICAgIGF0dGVtcHRzICB0byAgdXNlICBvYnNvbGV0ZSB0ZXJtY2FwIGNhcGFiaWxpdGllcyB0bwogICAgICAgICAgICAgICBkZWR1Y2UgY29ycmVjdCB2YWx1ZXMuICBJdCBhbHNvIG5vcm1hbGx5IHN1cHByZXNzZXMKICAgICAgICAgICAgICAgb3V0cHV0IG9mIG9ic29sZXRlIHRlcm1jYXAgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgPFNUUk9ORz5iczwvU1RST05HPi4KLSAgICAgICAgICAgICAgVGhpcyAgb3B0aW9uIGZvcmNlcyBhIG1vcmUgbGl0ZXJhbCB0cmFuc2xhdGlvbiB0aGF0CisgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGZvcmNlcyBhIG1vcmUgbGl0ZXJhbCB0cmFuc2xhdGlvbiAgdGhhdAogICAgICAgICAgICAgICBhbHNvIHByZXNlcnZlcyB0aGUgb2Jzb2xldGUgY2FwYWJpbGl0aWVzLgogCi0gICAgICAgPFNUUk9ORz4tbzwvU1RST05HPjxFTT5kaXI8L0VNPiAgV3JpdGUgY29tcGlsZWQgZW50cmllcyB0byBnaXZlbiAgZGlyZWN0b3J5LiAgIE92ZXItCi0gICAgICAgICAgICAgIHJpZGVzIHRoZSBURVJNSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICA8U1RST05HPi1vPC9TVFJPTkc+PEVNPmRpcjwvRU0+ICBXcml0ZSAgY29tcGlsZWQgZW50cmllcyB0byBnaXZlbiBkYXRhYmFzZSBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgT3ZlcnJpZGVzIHRoZSBURVJNSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAogICAgICAgIDxTVFJPTkc+LVI8L1NUUk9ORz48RU0+c3Vic2V0PC9FTT4KLSAgICAgICAgICAgICAgUmVzdHJpY3QgIG91dHB1dCB0byBhIGdpdmVuIHN1YnNldC4gIFRoaXMgb3B0aW9uIGlzCi0gICAgICAgICAgICAgIGZvciB1c2Ugd2l0aCAgYXJjaGFpYyAgdmVyc2lvbnMgIG9mICB0ZXJtaW5mbyAgbGlrZQorICAgICAgICAgICAgICBSZXN0cmljdCBvdXRwdXQgdG8gYSBnaXZlbiBzdWJzZXQuICBUaGlzIG9wdGlvbiAgaXMKKyAgICAgICAgICAgICAgZm9yICB1c2UgIHdpdGggIGFyY2hhaWMgIHZlcnNpb25zICBvZiB0ZXJtaW5mbyBsaWtlCiAgICAgICAgICAgICAgIHRob3NlIG9uIFNWcjEsIFVsdHJpeCwgb3IgSFAvVVggdGhhdCBkbyBub3Qgc3VwcG9ydAotICAgICAgICAgICAgICB0aGUgZnVsbCBzZXQgb2YgU1ZSNC9YU0kgQ3Vyc2VzIHRlcm1pbmZvOyBhbmQgIG91dC0KKyAgICAgICAgICAgICAgdGhlICBmdWxsIHNldCBvZiBTVlI0L1hTSSBDdXJzZXMgdGVybWluZm87IGFuZCBvdXQtCiAgICAgICAgICAgICAgIHJpZ2h0IGJyb2tlbiBwb3J0cyBsaWtlIEFJWCAzLnggdGhhdCBoYXZlIHRoZWlyIG93bgotICAgICAgICAgICAgICBleHRlbnNpb25zIGluY29tcGF0aWJsZSB3aXRoICBTVnI0L1hTSS4gICBBdmFpbGFibGUKKyAgICAgICAgICAgICAgZXh0ZW5zaW9ucyAgaW5jb21wYXRpYmxlICB3aXRoIFNWcjQvWFNJLiAgQXZhaWxhYmxlCiAgICAgICAgICAgICAgIHN1YnNldHMgIGFyZSAgIlNWcjEiLCAgIlVsdHJpeCIsICAiSFAiLCAgIkJTRCIgIGFuZAogICAgICAgICAgICAgICAiQUlYIjsgc2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gZm9yIGRldGFpbHMuCiAKLSAgICAgICA8U1RST05HPi1yPC9TVFJPTkc+ICAgICBGb3JjZSBlbnRyeSByZXNvbHV0aW9uIChzbyB0aGVyZSBhcmUgIG5vICByZW1haW5pbmcKLSAgICAgICAgICAgICAgdGMgIGNhcGFiaWxpdGllcykgIGV2ZW4gIHdoZW4gIGRvaW5nIHRyYW5zbGF0aW9uIHRvCi0gICAgICAgICAgICAgIHRlcm1jYXAgZm9ybWF0LiAgVGhpcyBtYXkgIGJlICBuZWVkZWQgIGlmICB5b3UgIGFyZQotICAgICAgICAgICAgICBwcmVwYXJpbmcgIGEgIHRlcm1jYXAgIGZpbGUgIGZvciAgYSB0ZXJtY2FwIGxpYnJhcnkKLSAgICAgICAgICAgICAgKHN1Y2ggYXMgR05VIHRlcm1jYXAgdGhyb3VnaCAgdmVyc2lvbiAgMS4zICBvciAgQlNECi0gICAgICAgICAgICAgIHRlcm1jYXAgdGhyb3VnaCA0LjNCU0QpIHRoYXQgZG9lcyBub3QgaGFuZGxlIG11bHRpLQotICAgICAgICAgICAgICBwbGUgdGMgY2FwYWJpbGl0aWVzIHBlciBlbnRyeS4KKyAgICAgICA8U1RST05HPi1yPC9TVFJPTkc+ICAgICBGb3JjZSAgZW50cnkgIHJlc29sdXRpb24gKHNvIHRoZXJlIGFyZSBubyByZW1haW5pbmcKKyAgICAgICAgICAgICAgdGMgY2FwYWJpbGl0aWVzKSBldmVuICB3aGVuICBkb2luZyAgdHJhbnNsYXRpb24gIHRvCisgICAgICAgICAgICAgIHRlcm1jYXAgZm9ybWF0LiAgVGhpcyBtYXkgYmUgbmVlZGVkIGlmIHlvdSBhcmUgcHJlLQorICAgICAgICAgICAgICBwYXJpbmcgYSB0ZXJtY2FwIGZpbGUgZm9yIGEgdGVybWNhcCAgbGlicmFyeSAgKHN1Y2gKKyAgICAgICAgICAgICAgYXMgIEdOVSAgdGVybWNhcCB0aHJvdWdoIHZlcnNpb24gMS4zIG9yIEJTRCB0ZXJtY2FwCisgICAgICAgICAgICAgIHRocm91Z2ggNC4zQlNEKSB0aGF0IGRvZXMgbm90ICBoYW5kbGUgIG11bHRpcGxlICB0YworICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgcGVyIGVudHJ5LgogCi0gICAgICAgPFNUUk9ORz4tczwvU1RST05HPiAgICAgU3VtbWFyaXplIHRoZSBjb21waWxlIGJ5IHNob3dpbmcgdGhlIGRpcmVjdG9yeSBpbnRvCi0gICAgICAgICAgICAgIHdoaWNoICBlbnRyaWVzICBhcmUgIHdyaXR0ZW4sICBhbmQgIHRoZSAgbnVtYmVyICBvZgotICAgICAgICAgICAgICBlbnRyaWVzIHdoaWNoIGFyZSBjb21waWxlZC4KKyAgICAgICA8U1RST05HPi1zPC9TVFJPTkc+ICAgICBTdW1tYXJpemUgdGhlIGNvbXBpbGUgYnkgc2hvd2luZyB0aGUgZGF0YWJhc2UgbG9jYS0KKyAgICAgICAgICAgICAgdGlvbiBpbnRvIHdoaWNoIGVudHJpZXMgYXJlIHdyaXR0ZW4sIGFuZCB0aGUgbnVtYmVyCisgICAgICAgICAgICAgIG9mIGVudHJpZXMgd2hpY2ggYXJlIGNvbXBpbGVkLgogCiAgICAgICAgPFNUUk9ORz4tVDwvU1RST05HPiAgICAgZWxpbWluYXRlcyBzaXplLXJlc3RyaWN0aW9ucyBvbiB0aGUgZ2VuZXJhdGVkIHRleHQuCi0gICAgICAgICAgICAgIFRoaXMgIGlzICBtYWlubHkgIHVzZWZ1bCAgZm9yIHRlc3RpbmcgYW5kIGFuYWx5c2lzLAotICAgICAgICAgICAgICBzaW5jZSB0aGUgY29tcGlsZWQgZGVzY3JpcHRpb25zIGFyZSBsaW1pdGVkICAoZS5nLiwKKyAgICAgICAgICAgICAgVGhpcyBpcyBtYWlubHkgdXNlZnVsICBmb3IgIHRlc3RpbmcgIGFuZCAgYW5hbHlzaXMsCisgICAgICAgICAgICAgIHNpbmNlICB0aGUgY29tcGlsZWQgZGVzY3JpcHRpb25zIGFyZSBsaW1pdGVkIChlLmcuLAogICAgICAgICAgICAgICAxMDIzIGZvciB0ZXJtY2FwLCA0MDk2IGZvciB0ZXJtaW5mbykuCiAKLSAgICAgICA8U1RST05HPi10PC9TVFJPTkc+ICAgICB0ZWxscyAgPFNUUk9ORz50aWM8L1NUUk9ORz4gIHRvICBkaXNjYXJkIGNvbW1lbnRlZC1vdXQgY2FwYWJpbGl0aWVzLgorICAgICAgIDxTVFJPTkc+LXQ8L1NUUk9ORz4gICAgIHRlbGxzIDxTVFJPTkc+dGljPC9TVFJPTkc+IHRvICBkaXNjYXJkICBjb21tZW50ZWQtb3V0ICBjYXBhYmlsaXRpZXMuCiAgICAgICAgICAgICAgIE5vcm1hbGx5IHdoZW4gdHJhbnNsYXRpbmcgZnJvbSB0ZXJtaW5mbyB0byB0ZXJtY2FwLAogICAgICAgICAgICAgICB1bnRyYW5zbGF0YWJsZSBjYXBhYmlsaXRpZXMgYXJlIGNvbW1lbnRlZC1vdXQuCiAKLSAgICAgICA8U1RST05HPi1VPC9TVFJPTkc+ICAgdGVsbHMgIDxTVFJPTkc+dGljPC9TVFJPTkc+IHRvIG5vdCBwb3N0LXByb2Nlc3MgdGhlIGRhdGEgYWZ0ZXIgcGFyc2luZwotICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlLiAgTm9ybWFsbHksIGl0IGluZmVycyBkYXRhICB3aGljaCAgaXMKLSAgICAgICAgICAgIGNvbW1vbmx5ICBtaXNzaW5nIGluIG9sZGVyIHRlcm1pbmZvIGRhdGEsIG9yIGluIHRlcm0tCisgICAgICAgPFNUUk9ORz4tVTwvU1RST05HPiAgIHRlbGxzIDxTVFJPTkc+dGljPC9TVFJPTkc+IHRvIG5vdCBwb3N0LXByb2Nlc3MgdGhlIGRhdGEgYWZ0ZXIgIHBhcnNpbmcKKyAgICAgICAgICAgIHRoZSAgc291cmNlICBmaWxlLiAgTm9ybWFsbHksIGl0IGluZmVycyBkYXRhIHdoaWNoIGlzCisgICAgICAgICAgICBjb21tb25seSBtaXNzaW5nIGluIG9sZGVyIHRlcm1pbmZvIGRhdGEsIG9yIGluICB0ZXJtLQogICAgICAgICAgICAgY2Fwcy4KIAogICAgICAgIDxTVFJPTkc+LVY8L1NUUk9ORz4gICByZXBvcnRzIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMgd2hpY2ggd2FzIHVzZWQgaW4gdGhpcwogICAgICAgICAgICAgcHJvZ3JhbSwgYW5kIGV4aXRzLgogCi0gICAgICAgPFNUUk9ORz4tdjwvU1RST05HPjxFTT5uPC9FTT4gIHNwZWNpZmllcyAgdGhhdCAgKHZlcmJvc2UpIG91dHB1dCBiZSB3cml0dGVuIHRvIHN0YW4tCi0gICAgICAgICAgICBkYXJkIGVycm9yIHRyYWNlIGluZm9ybWF0aW9uIHNob3dpbmcgPFNUUk9ORz50aWM8L1NUUk9ORz4ncyAgcHJvZ3Jlc3MuCi0gICAgICAgICAgICBUaGUgIG9wdGlvbmFsICBwYXJhbWV0ZXIgIDxFTT5uPC9FTT4gaXMgYSBudW1iZXIgZnJvbSAxIHRvIDEwLAotICAgICAgICAgICAgaW5jbHVzaXZlLCBpbmRpY2F0aW5nIHRoZSBkZXNpcmVkIGxldmVsIG9mIGRldGFpbCAgb2YKLSAgICAgICAgICAgIGluZm9ybWF0aW9uLiAgIElmICA8RU0+bjwvRU0+IGlzIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGxldmVsIGlzCi0gICAgICAgICAgICAxLiAgSWYgPEVNPm48L0VNPiBpcyBzcGVjaWZpZWQgYW5kIGdyZWF0ZXIgdGhhbiAxLCAgdGhlICBsZXZlbAorICAgICAgIDxTVFJPTkc+LXY8L1NUUk9ORz48RU0+bjwvRU0+ICBzcGVjaWZpZXMgdGhhdCAodmVyYm9zZSkgb3V0cHV0IGJlIHdyaXR0ZW4gIHRvICBzdGFuLQorICAgICAgICAgICAgZGFyZCAgZXJyb3IgdHJhY2UgaW5mb3JtYXRpb24gc2hvd2luZyA8U1RST05HPnRpYzwvU1RST05HPidzIHByb2dyZXNzLgorICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlciA8RU0+bjwvRU0+IGlzIGEgbnVtYmVyIGZyb20gIDEgIHRvICAxMCwKKyAgICAgICAgICAgIGluY2x1c2l2ZSwgIGluZGljYXRpbmcgdGhlIGRlc2lyZWQgbGV2ZWwgb2YgZGV0YWlsIG9mCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4gIElmIDxFTT5uPC9FTT4gaXMgb21pdHRlZCwgdGhlIGRlZmF1bHQgIGxldmVsICBpcworICAgICAgICAgICAgMS4gICBJZiAgPEVNPm48L0VNPiBpcyBzcGVjaWZpZWQgYW5kIGdyZWF0ZXIgdGhhbiAxLCB0aGUgbGV2ZWwKICAgICAgICAgICAgIG9mIGRldGFpbCBpcyBpbmNyZWFzZWQuCiAKLSAgICAgICA8U1RST05HPi13PC9TVFJPTkc+PEVNPm48L0VNPiAgc3BlY2lmaWVzICB0aGUgd2lkdGggb2YgdGhlIG91dHB1dC4gIFRoZSBwYXJhbWV0ZXIgaXMKKyAgICAgICAgICAgIFRoZSBkZWJ1ZyBmbGFnIGxldmVscyBhcmUgYXMgZm9sbG93czoKKworICAgICAgICAgICAgMSAgICAgIE5hbWVzIG9mIGZpbGVzIGNyZWF0ZWQgYW5kIGxpbmtlZAorCisgICAgICAgICAgICAyICAgICAgSW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgInVzZSIgZmFjaWxpdHkKKworICAgICAgICAgICAgMyAgICAgIFN0YXRpc3RpY3MgZnJvbSB0aGUgaGFzaGluZyBhbGdvcml0aG0KKworICAgICAgICAgICAgNSAgICAgIFN0cmluZy10YWJsZSBtZW1vcnkgYWxsb2NhdGlvbnMKKworICAgICAgICAgICAgNyAgICAgIEVudHJpZXMgaW50byB0aGUgc3RyaW5nLXRhYmxlCisKKyAgICAgICAgICAgIDggICAgICBMaXN0IG9mIHRva2VucyBlbmNvdW50ZXJlZCBieSBzY2FubmVyCisKKyAgICAgICAgICAgIDkgICAgICBBbGwgdmFsdWVzIGNvbXB1dGVkICBpbiAgY29uc3RydWN0aW9uICBvZiAgdGhlCisgICAgICAgICAgICAgICAgICAgaGFzaCB0YWJsZQorCisgICAgICAgICAgICBJZiAgdGhlIGRlYnVnIGxldmVsIDxFTT5uPC9FTT4gaXMgbm90IGdpdmVuLCBpdCBpcyB0YWtlbiB0byBiZQorICAgICAgICAgICAgb25lLgorCisgICAgICAgPFNUUk9ORz4tdzwvU1RST05HPjxFTT5uPC9FTT4gIHNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIG91dHB1dC4gIFRoZSBwYXJhbWV0ZXIgIGlzCiAgICAgICAgICAgICBvcHRpb25hbC4gIElmIGl0IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIDYwLgogCiAgICAgICAgPFNUUk9ORz4teDwvU1RST05HPiAgIFRyZWF0IHVua25vd24gY2FwYWJpbGl0aWVzIGFzIHVzZXItZGVmaW5lZC4gIFRoYXQgaXMsCi0gICAgICAgICAgICBpZiAgeW91ICBzdXBwbHkgIGEgY2FwYWJpbGl0eSBuYW1lIHdoaWNoIDxTVFJPTkc+dGljPC9TVFJPTkc+IGRvZXMgbm90CisgICAgICAgICAgICBpZiB5b3Ugc3VwcGx5IGEgY2FwYWJpbGl0eSBuYW1lIHdoaWNoICA8U1RST05HPnRpYzwvU1RST05HPiAgZG9lcyAgbm90CiAgICAgICAgICAgICByZWNvZ25pemUsIGl0IHdpbGwgaW5mZXIgaXRzIHR5cGUgKGJvb2xlYW4sIG51bWJlciBvcgotICAgICAgICAgICAgc3RyaW5nKSAgZnJvbSAgdGhlICBzeW50YXggYW5kIG1ha2UgYW4gZXh0ZW5kZWQgdGFibGUKKyAgICAgICAgICAgIHN0cmluZykgZnJvbSB0aGUgc3ludGF4IGFuZCBtYWtlICBhbiAgZXh0ZW5kZWQgIHRhYmxlCiAgICAgICAgICAgICBlbnRyeSAgZm9yICB0aGF0LiAgIFVzZXItZGVmaW5lZCAgY2FwYWJpbGl0eSAgc3RyaW5ncwotICAgICAgICAgICAgd2hvc2UgIG5hbWUgYmVnaW5zIHdpdGggYGBrJycgYXJlIHRyZWF0ZWQgYXMgZnVuY3Rpb24KKyAgICAgICAgICAgIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggImsiIGFyZSAgdHJlYXRlZCAgYXMgIGZ1bmN0aW9uCiAgICAgICAgICAgICBrZXlzLgogCi0gICAgICAgPEVNPmZpbGU8L0VNPiBjb250YWlucyBvbmUgb3IgbW9yZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+ICB0ZXJtaW5hbCAgZGVzY3JpcHRpb25zCi0gICAgICAgICAgICBpbiBzb3VyY2UgZm9ybWF0IFtzZWUgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPl0uICBFYWNoIGRlc2NyaXB0aW9uCi0gICAgICAgICAgICBpbiB0aGUgZmlsZSBkZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhICBwYXJ0aWN1LQotICAgICAgICAgICAgbGFyIHRlcm1pbmFsLgogCi0gICAgICAgVGhlIGRlYnVnIGZsYWcgbGV2ZWxzIGFyZSBhcyBmb2xsb3dzOgorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUEFSQU1FVEVSUyI+UEFSQU1FVEVSUzwvYT48L0gzPjxQUkU+CisgICAgICAgPEVNPmZpbGU8L0VNPiAgIGNvbnRhaW5zIG9uZSBvciBtb3JlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gdGVybWluYWwgZGVzY3JpcHRpb25zCisgICAgICAgICAgICAgIGluIHNvdXJjZSBmb3JtYXQgW3NlZSA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+XS4gIEVhY2ggIGRlc2NyaXAtCisgICAgICAgICAgICAgIHRpb24gIGluICB0aGUgIGZpbGUgZGVzY3JpYmVzIHRoZSBjYXBhYmlsaXRpZXMgb2YgYQorICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHRlcm1pbmFsLgogCi0gICAgICAgMSAgICAgIE5hbWVzIG9mIGZpbGVzIGNyZWF0ZWQgYW5kIGxpbmtlZAorICAgICAgICAgICAgICBJZiA8RU0+ZmlsZTwvRU0+IGlzICItIiwgdGhlbiB0aGUgIGRhdGEgIGlzICByZWFkICBmcm9tICB0aGUKKyAgICAgICAgICAgICAgc3RhbmRhcmQgaW5wdXQuICBUaGUgPEVNPmZpbGU8L0VNPiBwYXJhbWV0ZXIgbWF5IGFsc28gYmUgdGhlCisgICAgICAgICAgICAgIHBhdGggb2YgYSBjaGFyYWN0ZXItZGV2aWNlLgogCi0gICAgICAgMiAgICAgIEluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIGBgdXNlJycgZmFjaWxpdHkKIAotICAgICAgIDMgICAgICBTdGF0aXN0aWNzIGZyb20gdGhlIGhhc2hpbmcgYWxnb3JpdGhtCi0KLSAgICAgICA1ICAgICAgU3RyaW5nLXRhYmxlIG1lbW9yeSBhbGxvY2F0aW9ucwotCi0gICAgICAgNyAgICAgIEVudHJpZXMgaW50byB0aGUgc3RyaW5nLXRhYmxlCi0KLSAgICAgICA4ICAgICAgTGlzdCBvZiB0b2tlbnMgZW5jb3VudGVyZWQgYnkgc2Nhbm5lcgotCi0gICAgICAgOSAgICAgIEFsbCB2YWx1ZXMgY29tcHV0ZWQgaW4gY29uc3RydWN0aW9uIG9mIHRoZSBoYXNoIHRhLQotICAgICAgICAgICAgICBibGUKLQotICAgICAgIElmIHRoZSBkZWJ1ZyBsZXZlbCA8RU0+bjwvRU0+IGlzIG5vdCBnaXZlbiwgaXQgaXMgdGFrZW4gdG8gYmUgIG9uZS4KLQorPC9QUkU+Cis8SDM+PGEgbmFtZT0iaDMtUFJPQ0VTU0lORyI+UFJPQ0VTU0lORzwvYT48L0gzPjxQUkU+CiAgICAgICAgQWxsIGJ1dCBvbmUgb2YgdGhlIGNhcGFiaWxpdGllcyByZWNvZ25pemVkIGJ5IDxTVFJPTkc+dGljPC9TVFJPTkc+IGFyZSBkb2MtCiAgICAgICAgdW1lbnRlZCBpbiA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LiAgVGhlIGV4Y2VwdGlvbiBpcyB0aGUgPFNUUk9ORz51c2U8L1NUUk9ORz4gY2FwYWJpbC0KICAgICAgICBpdHkuCiAKLSAgICAgICBXaGVuICBhICA8U1RST05HPnVzZTwvU1RST05HPj08RU0+ZW50cnk8L0VNPi08RU0+bmFtZTwvRU0+ICBmaWVsZCBpcyBkaXNjb3ZlcmVkIGluIGEgdGVybWluYWwKLSAgICAgICBlbnRyeSBjdXJyZW50bHkgYmVpbmcgY29tcGlsZWQsIDxTVFJPTkc+dGljPC9TVFJPTkc+IHJlYWRzICBpbiAgdGhlICBiaW5hcnkKLSAgICAgICBmcm9tICA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm88L1NUUk9ORz4gdG8gY29tcGxldGUgdGhlIGVudHJ5LiAgKEVudHJpZXMKLSAgICAgICBjcmVhdGVkIGZyb20gPEVNPmZpbGU8L0VNPiB3aWxsIGJlIHVzZWQgZmlyc3QuICBJZiB0aGUgIGVudmlyb25tZW50Ci0gICAgICAgdmFyaWFibGUgIDxTVFJPTkc+VEVSTUlORk88L1NUUk9ORz4gIGlzICBzZXQsICB0aGF0ICBkaXJlY3RvcnkgIGlzIHNlYXJjaGVkCi0gICAgICAgaW5zdGVhZCBvZiA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm88L1NUUk9ORz4uKSAgPFNUUk9ORz50aWM8L1NUUk9ORz4gZHVwbGljYXRlcyB0aGUgY2FwYS0KLSAgICAgICBiaWxpdGllcyAgaW4gIDxFTT5lbnRyeTwvRU0+LTxFTT5uYW1lPC9FTT4gIGZvciAgdGhlIGN1cnJlbnQgZW50cnksIHdpdGggdGhlCi0gICAgICAgZXhjZXB0aW9uICBvZiAgdGhvc2UgIGNhcGFiaWxpdGllcyAgdGhhdCAgZXhwbGljaXRseSAgIGFyZQorICAgICAgIFdoZW4gYSA8U1RST05HPnVzZTwvU1RST05HPj08RU0+ZW50cnk8L0VNPi08RU0+bmFtZTwvRU0+IGZpZWxkIGlzIGRpc2NvdmVyZWQgIGluICBhICB0ZXJtaW5hbAorICAgICAgIGVudHJ5ICBjdXJyZW50bHkgIGJlaW5nICBjb21waWxlZCwgPFNUUk9ORz50aWM8L1NUUk9ORz4gcmVhZHMgaW4gdGhlIGJpbmFyeQorICAgICAgIGZyb20gPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+IHRvIGNvbXBsZXRlIHRoZSBlbnRyeS4gICAoRW50cmllcworICAgICAgIGNyZWF0ZWQgIGZyb20gPEVNPmZpbGU8L0VNPiB3aWxsIGJlIHVzZWQgZmlyc3QuICA8U1RST05HPnRpYzwvU1RST05HPiBkdXBsaWNhdGVzIHRoZQorICAgICAgIGNhcGFiaWxpdGllcyBpbiA8RU0+ZW50cnk8L0VNPi08RU0+bmFtZTwvRU0+IGZvciB0aGUgY3VycmVudCBlbnRyeSwgd2l0aCB0aGUKKyAgICAgICBleGNlcHRpb24gICBvZiAgdGhvc2UgIGNhcGFiaWxpdGllcyAgdGhhdCAgZXhwbGljaXRseSAgYXJlCiAgICAgICAgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBlbnRyeS4KIAotICAgICAgIFdoZW4gICAgYW4gICBlbnRyeSwgICBlLmcuLCAgIDxTVFJPTkc+ZW50cnlfbmFtZV8xPC9TVFJPTkc+LCAgIGNvbnRhaW5zICAgYQotICAgICAgIDxTVFJPTkc+dXNlPTwvU1RST05HPjxFTT5lbnRyeTwvRU0+XzxFTT5uYW1lPC9FTT5fPEVNPjI8L0VNPiAgZmllbGQsICBhbnkgIGNhbmNlbGVkICBjYXBhYmlsaXRpZXMgICBpbgotICAgICAgIDxFTT5lbnRyeTwvRU0+XzxFTT5uYW1lPC9FTT5fPEVNPjI8L0VNPiAgbXVzdCBhbHNvIGFwcGVhciBpbiA8U1RST05HPmVudHJ5X25hbWVfMTwvU1RST05HPiBiZWZvcmUgPFNUUk9ORz51c2U9PC9TVFJPTkc+CisgICAgICAgV2hlbiAgIGFuICAgZW50cnksICAgZS5nLiwgICA8U1RST05HPmVudHJ5X25hbWVfMTwvU1RST05HPiwgICBjb250YWlucyAgICBhCisgICAgICAgPFNUUk9ORz51c2U9PC9TVFJPTkc+PEVNPmVudHJ5PC9FTT5fPEVNPm5hbWU8L0VNPl88RU0+MjwvRU0+ICAgZmllbGQsICBhbnkgIGNhbmNlbGVkICBjYXBhYmlsaXRpZXMgIGluCisgICAgICAgPEVNPmVudHJ5PC9FTT5fPEVNPm5hbWU8L0VNPl88RU0+MjwvRU0+IG11c3QgYWxzbyBhcHBlYXIgaW4gPFNUUk9ORz5lbnRyeV9uYW1lXzE8L1NUUk9ORz4gYmVmb3JlICA8U1RST05HPnVzZT08L1NUUk9ORz4KICAgICAgICBmb3IgdGhlc2UgY2FwYWJpbGl0aWVzIHRvIGJlIGNhbmNlbGVkIGluIDxTVFJPTkc+ZW50cnlfbmFtZV8xPC9TVFJPTkc+LgogCi0gICAgICAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxTVFJPTkc+VEVSTUlORk88L1NUUk9ORz4gaXMgc2V0LCB0aGUgIGNvbXBpbGVkCi0gICAgICAgcmVzdWx0cyBhcmUgcGxhY2VkIHRoZXJlIGluc3RlYWQgb2YgPFNUUk9ORz4vdXNyL3NoYXJlL3Rlcm1pbmZvPC9TVFJPTkc+LgotCiAgICAgICAgVG90YWwgY29tcGlsZWQgZW50cmllcyBjYW5ub3QgZXhjZWVkIDQwOTYgYnl0ZXMuICBUaGUgbmFtZQogICAgICAgIGZpZWxkIGNhbm5vdCBleGNlZWQgNTEyIGJ5dGVzLiAgVGVybWluYWwgIG5hbWVzICBleGNlZWRpbmcKICAgICAgICB0aGUgIG1heGltdW0gIGFsaWFzICBsZW5ndGggKDMyIGNoYXJhY3RlcnMgb24gc3lzdGVtcyB3aXRoCkBAIC0yNjEsNjQgKzM0Nyw4MyBAQAogCiAKIDwvUFJFPgotPEgyPkNPTVBBVElCSUxJVFk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItQ09NUEFUSUJJTElUWSI+Q09NUEFUSUJJTElUWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlcmUgaXMgc29tZSBldmlkZW5jZSB0aGF0IGhpc3RvcmljICA8U1RST05HPnRpYzwvU1RST05HPiAgaW1wbGVtZW50YXRpb25zCiAgICAgICAgdHJlYXRlZCAgZGVzY3JpcHRpb24gIGZpZWxkcyB3aXRoIG5vIHdoaXRlc3BhY2UgaW4gdGhlbSBhcwogICAgICAgIGFkZGl0aW9uYWwgYWxpYXNlcyBvciBzaG9ydCBuYW1lcy4gIFRoaXMgPFNUUk9ORz50aWM8L1NUUk9ORz4gZG9lcyAgbm90ICBkbwogICAgICAgIHRoYXQsICBidXQgIGl0ICBkb2VzICB3YXJuICB3aGVuIGRlc2NyaXB0aW9uIGZpZWxkcyBtYXkgYmUKLSAgICAgICB0cmVhdGVkIHRoYXQgd2F5IGFuZCBjaGVjayB0aGVtIGZvciBkYW5nZXJvdXMgIGNoYXJhY3RlcnMuCisgICAgICAgdHJlYXRlZCB0aGF0IHdheSBhbmQgY2hlY2sgdGhlbSBmb3IgZGFuZ2Vyb3VzIGNoYXJhY3RlcnMuCiAKIAogPC9QUkU+Ci08SDI+RVhURU5TSU9OUzwvSDI+PFBSRT4KLSAgICAgICBVbmxpa2UgdGhlIHN0b2NrIFNWcjQgPFNUUk9ORz50aWM8L1NUUk9ORz4gY29tbWFuZCwgdGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4KLSAgICAgICBhY3R1YWxseSBjb21waWxlIHRlcm1jYXAgc291cmNlcy4gICBJbiAgZmFjdCwgIGVudHJpZXMgIGluCi0gICAgICAgdGVybWluZm8gIGFuZCAgdGVybWNhcCAgc3ludGF4ICBjYW4gIGJlICBtaXhlZCBpbiBhIHNpbmdsZQotICAgICAgIHNvdXJjZSBmaWxlLiAgU2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gIGZvciAgdGhlICBsaXN0ICBvZiAgdGVybWNhcAotICAgICAgIG5hbWVzIHRha2VuIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGVybWluZm8gbmFtZXMuCis8SDI+PGEgbmFtZT0iaDItRVhURU5TSU9OUyI+RVhURU5TSU9OUzwvYT48L0gyPjxQUkU+CisgICAgICAgVW5saWtlIHRoZSBTVnI0IDxTVFJPTkc+dGljPC9TVFJPTkc+IGNvbW1hbmQsIHRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGFjdHUtCisgICAgICAgYWxseSAgY29tcGlsZSAgdGVybWNhcCAgc291cmNlcy4gIEluIGZhY3QsIGVudHJpZXMgaW4gdGVyLQorICAgICAgIG1pbmZvIGFuZCB0ZXJtY2FwIHN5bnRheCBjYW4gYmUgbWl4ZWQgaW4gYSAgc2luZ2xlICBzb3VyY2UKKyAgICAgICBmaWxlLiAgU2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gZm9yIHRoZSBsaXN0IG9mIHRlcm1jYXAgbmFtZXMgdGFrZW4KKyAgICAgICB0byBiZSBlcXVpdmFsZW50IHRvIHRlcm1pbmZvIG5hbWVzLgogCi0gICAgICAgVGhlICBTVnI0ICBtYW51YWwgIHBhZ2VzICBhcmUgIG5vdCBjbGVhciBvbiB0aGUgcmVzb2x1dGlvbgotICAgICAgIHJ1bGVzIGZvciA8U1RST05HPnVzZTwvU1RST05HPiBjYXBhYmlsaXRpZXMuICBUaGlzICBpbXBsZW1lbnRhdGlvbiAgb2YgIDxTVFJPTkc+dGljPC9TVFJPTkc+CisgICAgICAgVGhlIFNWcjQgbWFudWFsIHBhZ2VzIGFyZSAgbm90ICBjbGVhciAgb24gIHRoZSAgcmVzb2x1dGlvbgorICAgICAgIHJ1bGVzICBmb3IgIDxTVFJPTkc+dXNlPC9TVFJPTkc+ICBjYXBhYmlsaXRpZXMuICBUaGlzIGltcGxlbWVudGF0aW9uIG9mIDxTVFJPTkc+dGljPC9TVFJPTkc+CiAgICAgICAgd2lsbCBmaW5kIDxTVFJPTkc+dXNlPC9TVFJPTkc+IHRhcmdldHMgYW55d2hlcmUgaW4gdGhlIHNvdXJjZSBmaWxlLCBvciBhbnktCi0gICAgICAgd2hlcmUgaW4gdGhlIGZpbGUgdHJlZSByb290ZWQgYXQgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiAoaWYgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiAgaXMKLSAgICAgICBkZWZpbmVkKSwgIG9yICBpbiB0aGUgdXNlcidzIDxFTT4kSE9NRS8udGVybWluZm88L0VNPiBkaXJlY3RvcnkgKGlmCi0gICAgICAgaXQgZXhpc3RzKSwgb3IgKGZpbmFsbHkpIGFueXdoZXJlICBpbiAgdGhlICBzeXN0ZW0ncyAgZmlsZQotICAgICAgIHRyZWUgb2YgY29tcGlsZWQgZW50cmllcy4KKyAgICAgICB3aGVyZSAgaW4gdGhlIGZpbGUgdHJlZSByb290ZWQgYXQgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiAoaWYgPFNUUk9ORz5URVJNSU5GTzwvU1RST05HPiBpcworICAgICAgIGRlZmluZWQpLCBvciBpbiB0aGUgdXNlcidzIDxFTT4kSE9NRS8udGVybWluZm88L0VNPiBkYXRhYmFzZSAoaWYgaXQKKyAgICAgICBleGlzdHMpLCAgb3IgIChmaW5hbGx5KSBhbnl3aGVyZSBpbiB0aGUgc3lzdGVtJ3MgZmlsZSB0cmVlCisgICAgICAgb2YgY29tcGlsZWQgZW50cmllcy4KIAotICAgICAgIFRoZSAgZXJyb3IgIG1lc3NhZ2VzIGZyb20gdGhpcyA8U1RST05HPnRpYzwvU1RST05HPiBoYXZlIHRoZSBzYW1lIGZvcm1hdCBhcwotICAgICAgIEdOVSBDIGVycm9yIG1lc3NhZ2VzLCBhbmQgY2FuIGJlICBwYXJzZWQgIGJ5ICBHTlUgIEVtYWNzJ3MKKyAgICAgICBUaGUgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGlzIDxTVFJPTkc+dGljPC9TVFJPTkc+IGhhdmUgdGhlIHNhbWUgIGZvcm1hdCAgYXMKKyAgICAgICBHTlUgIEMgIGVycm9yICBtZXNzYWdlcywgIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IEdOVSBFbWFjcydzCiAgICAgICAgY29tcGlsZSBmYWNpbGl0eS4KIAotICAgICAgIFRoZSAgPFNUUk9ORz4tQzwvU1RST05HPiwgIDxTVFJPTkc+LUc8L1NUUk9ORz4sICA8U1RST05HPi1JPC9TVFJPTkc+LCA8U1RST05HPi1OPC9TVFJPTkc+LCA8U1RST05HPi1SPC9TVFJPTkc+LCA8U1RST05HPi1UPC9TVFJPTkc+LCA8U1RST05HPi1WPC9TVFJPTkc+LCA8U1RST05HPi1hPC9TVFJPTkc+LCA8U1RST05HPi1lPC9TVFJPTkc+LCA8U1RST05HPi1mPC9TVFJPTkc+LCA8U1RST05HPi1nPC9TVFJPTkc+LCA8U1RST05HPi1vPC9TVFJPTkc+LCA8U1RST05HPi1yPC9TVFJPTkc+LAotICAgICAgIDxTVFJPTkc+LXM8L1NUUk9ORz4sIDxTVFJPTkc+LXQ8L1NUUk9ORz4gYW5kIDxTVFJPTkc+LXg8L1NUUk9ORz4gb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB1bmRlciAgU1ZyNC4gICBUaGUKLSAgICAgICBTVnI0IDxTVFJPTkc+LWM8L1NUUk9ORz4gbW9kZSBkb2VzIG5vdCByZXBvcnQgYmFkIHVzZSBsaW5rcy4KKyAgICAgICBUaGUgPFNUUk9ORz4tMDwvU1RST05HPiwgPFNUUk9ORz4tMTwvU1RST05HPiwgPFNUUk9ORz4tQzwvU1RST05HPiwgPFNUUk9ORz4tRzwvU1RST05HPiwgPFNUUk9ORz4tSTwvU1RST05HPiwgPFNUUk9ORz4tTjwvU1RST05HPiwgPFNUUk9ORz4tUjwvU1RST05HPiwgPFNUUk9ORz4tVDwvU1RST05HPiwgPFNUUk9ORz4tVjwvU1RST05HPiwgPFNUUk9ORz4tYTwvU1RST05HPiwgIDxTVFJPTkc+LWU8L1NUUk9ORz4sICA8U1RST05HPi1mPC9TVFJPTkc+LCAgPFNUUk9ORz4tZzwvU1RST05HPiwKKyAgICAgICA8U1RST05HPi1vPC9TVFJPTkc+LCAgPFNUUk9ORz4tcjwvU1RST05HPiwgIDxTVFJPTkc+LXM8L1NUUk9ORz4sICA8U1RST05HPi10PC9TVFJPTkc+ICBhbmQgIDxTVFJPTkc+LXg8L1NUUk9ORz4gb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB1bmRlcgorICAgICAgIFNWcjQuICBUaGUgU1ZyNCA8U1RST05HPi1jPC9TVFJPTkc+IG1vZGUgZG9lcyBub3QgcmVwb3J0IGJhZCB1c2UgbGlua3MuCiAKLSAgICAgICBTeXN0ZW0gIFYgZG9lcyBub3QgY29tcGlsZSBlbnRyaWVzIHRvIG9yIHJlYWQgZW50cmllcyBmcm9tCi0gICAgICAgeW91ciA8RU0+JEhPTUUvLnRlcm1pbmZvPC9FTT4gZGlyZWN0b3J5IHVubGVzcyBURVJNSU5GTyBpcyAgZXhwbGljLQorICAgICAgIFN5c3RlbSBWIGRvZXMgbm90IGNvbXBpbGUgZW50cmllcyB0byBvciByZWFkIGVudHJpZXMgIGZyb20KKyAgICAgICB5b3VyICA8RU0+JEhPTUUvLnRlcm1pbmZvPC9FTT4gIGRhdGFiYXNlIHVubGVzcyBURVJNSU5GTyBpcyBleHBsaWMtCiAgICAgICAgaXRseSBzZXQgdG8gaXQuCiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm8vPy8qPC9TVFJPTkc+CiAgICAgICAgICAgICBDb21waWxlZCB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBkYXRhYmFzZS4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+LCAgICA8U1RST05HPjxBIEhSRUY9ImNhcHRvaW5mby4xbS5odG1sIj5jYXB0b2luZm8oMW0pPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9ImluZm90b2NhcC4xbS5odG1sIj5pbmZvdG9jYXAoMW0pPC9BPjwvU1RST05HPiwgICA8U1RST05HPjxBIEhSRUY9InRvZS4xbS5odG1sIj50b2UoMW0pPC9BPjwvU1RST05HPiwKLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImluZm9jbXAuMW0uaHRtbCI+aW5mb2NtcCgxbSk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iY2FwdG9pbmZvLjFtLmh0bWwiPmNhcHRvaW5mbygxbSk8L0E+PC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb3RvY2FwLjFtLmh0bWwiPmluZm90b2NhcCgxbSk8L0E+PC9TVFJPTkc+LCAgICA8U1RST05HPjxBIEhSRUY9InRvZS4xbS5odG1sIj50b2UoMW0pPC9BPjwvU1RST05HPiwKKyAgICAgICA8U1RST05HPjxBIEhSRUY9Im5jdXJzZXMuM3guaHRtbCI+Y3Vyc2VzKDN4KTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybS41Lmh0bWwiPnRlcm0oNSk8L0E+PC9TVFJPTkc+LiAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPi4KIAotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgorCisKKzwvUFJFPgorPEgyPjxhIG5hbWU9ImgyLUFVVEhPUiI+QVVUSE9SPC9hPjwvSDI+PFBSRT4KKyAgICAgICBFcmljIFMuIFJheW1vbmQgJmx0O2VzckBzbmFyay50aHlyc3VzLmNvbSZndDsgYW5kCisgICAgICAgVGhvbWFzIEUuIERpY2tleSAmbHQ7ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0Jmd0OwogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idGljLjFtLmh0bWwiPnRpYygxbSk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDMtT1BUSU9OUyI+T1BUSU9OUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMy1QQVJBTUVURVJTIj5QQVJBTUVURVJTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gzLVBST0NFU1NJTkciPlBST0NFU1NJTkc8L2E+PC9saT4KKzwvdWw+Cis8L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1DT01QQVRJQklMSVRZIj5DT01QQVRJQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUVYVEVOU0lPTlMiPkVYVEVOU0lPTlM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRklMRVMiPkZJTEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1BVVRIT1IiPkFVVEhPUjwvYT48L2xpPgorPC91bD4KKzwvZGl2PgogPC9CT0RZPgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbWFuL3RvZS4xbS5odG1sIGIvZG9jL2h0bWwvbWFuL3RvZS4xbS5odG1sCmluZGV4IDdmNDM3MmYuLjk4Nzk5YjcgMTAwNjQ0Ci0tLSBhL2RvYy9odG1sL21hbi90b2UuMW0uaHRtbAorKysgYi9kb2MvaHRtbC9tYW4vdG9lLjFtLmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDM2ICsyNiwzNyBAQAogICAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCiAgICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBJZDogdG9lLjFtLHYgMS4yMSAyMDA4LzAxLzA1IDIwOjU3OjE2IHRvbSBFeHAgQAorICAqIEBJZDogdG9lLjFtLHYgMS4yNiAyMDEyLzAxLzAxIDAwOjQwOjUxIHRvbSBFeHAgQAogLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgogPEhUTUw+CiA8SEVBRD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgLSBzZWUgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L3NjcmlwdHMvcmVhZG1lLmh0bWwjb3RoZXJzX3NjcmlwdHMiPgogPFRJVExFPnRvZSAxbTwvVElUTEU+CiA8bGluayByZXY9bWFkZSBocmVmPSJtYWlsdG86YnVnLW5jdXJzZXNAZ251Lm9yZyI+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KIDwvSEVBRD4KIDxCT0RZPgotPEgxPnRvZSAxbTwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+dG9lIDFtPC9IMT4KIDxQUkU+Ci08IS0tIE1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIDMuMC4xIC0tPgogPFNUUk9ORz48QSBIUkVGPSJ0b2UuMW0uaHRtbCI+dG9lKDFtKTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RST05HPjxBIEhSRUY9InRvZS4xbS5odG1sIj50b2UoMW0pPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+dG9lPC9TVFJPTkc+IC0gdGFibGUgb2YgKHRlcm1pbmZvKSBlbnRyaWVzCiAKIAogPC9QUkU+Ci08SDI+U1lOT1BTSVM8L0gyPjxQUkU+Ci0gICAgICAgPFNUUk9ORz50b2U8L1NUUk9ORz4gWzxTVFJPTkc+LXY8L1NUUk9ORz5bPEVNPm48L0VNPl1dIFs8U1RST05HPi1haHVVVjwvU1RST05HPl0gPEVNPmZpbGUuLi48L0VNPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CisgICAgICAgPFNUUk9ORz50b2U8L1NUUk9ORz4gWzxTVFJPTkc+LXY8L1NUUk9ORz5bPEVNPm48L0VNPl1dIFs8U1RST05HPi1haHN1VVY8L1NUUk9ORz5dIDxFTT5maWxlLi4uPC9FTT4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFdpdGggbm8gb3B0aW9ucywgPFNUUk9ORz50b2U8L1NUUk9ORz4gbGlzdHMgYWxsIGF2YWlsYWJsZSB0ZXJtaW5hbCB0eXBlcyBieQogICAgICAgIHByaW1hcnkgbmFtZSB3aXRoIGRlc2NyaXB0aW9ucy4gICBGaWxlICBhcmd1bWVudHMgIHNwZWNpZnkKICAgICAgICB0aGUgIGRpcmVjdG9yaWVzICB0byAgYmUgc2Nhbm5lZDsgaWYgbm8gc3VjaCBhcmd1bWVudHMgYXJlCkBAIC03MSw2ICs3MSwxNCBAQAogICAgICAgICAgICAgICBuY3Vyc2VzIHdvdWxkIHNlYXJjaCwgcmF0aGVyIHRoYW4gIG9ubHkgIHRoZSAgZmlyc3QKICAgICAgICAgICAgICAgb25lIHRoYXQgaXQgZmluZHMuCiAKKyAgICAgICAgICAgICAgSWYgIHRoZSAgPFNUUk9ORz4tczwvU1RST05HPiBpcyBhbHNvIGdpdmVuLCA8U1RST05HPnRvZTwvU1RST05HPiBhZGRzIGEgY29sdW1uIHRvIHRoZQorICAgICAgICAgICAgICByZXBvcnQsIHNob3dpbmcgKGxpa2UgIDxTVFJPTkc+Y29uZmxpY3QoMSk8L1NUUk9ORz4pICB3aGljaCAgZW50cmllcworICAgICAgICAgICAgICB3aGljaCAgYmVsb25nIHRvIGEgZ2l2ZW4gdGVybWluYWwgZGF0YWJhc2UuICBBbiAiKiIKKyAgICAgICAgICAgICAgbWFya3MgZW50cmllcyB3aGljaCBkaWZmZXIsIGFuZCAiKyIgIG1hcmtzICBlcXVpdmEtCisgICAgICAgICAgICAgIGxlbnQgZW50cmllcy4KKworICAgICAgIDxTVFJPTkc+LXM8L1NUUk9ORz4gICAgIHNvcnQgdGhlIG91dHB1dCBieSB0aGUgZW50cnkgbmFtZXMuCisKICAgICAgICA8U1RST05HPi11PC9TVFJPTkc+IDxFTT5maWxlPC9FTT4KICAgICAgICAgICAgICAgc2F5cyAgdG8gIHdyaXRlICBhICByZXBvcnQgIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQsCiAgICAgICAgICAgICAgIGxpc3RpbmcgZGVwZW5kZW5jaWVzIGluIHRoZSBnaXZlbiAgdGVybWluZm8vdGVybWNhcApAQCAtMTAxLDI2ICsxMDksMzAgQEAKIAogCiA8L1BSRT4KLTxIMj5GSUxFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1GSUxFUyI+RklMRVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+L3Vzci9zaGFyZS90ZXJtaW5mby8/Lyo8L1NUUk9ORz4KICAgICAgICAgICAgIENvbXBpbGVkIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGRhdGFiYXNlLgogCiAKIDwvUFJFPgotPEgyPlNFRSBBTFNPPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFRS1BTFNPIj5TRUUgQUxTTzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0aWMuMW0uaHRtbCI+dGljKDFtKTwvQT48L1NUUk9ORz4sICAgIDxTVFJPTkc+PEEgSFJFRj0iaW5mb2NtcC4xbS5odG1sIj5pbmZvY21wKDFtKTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz48QSBIUkVGPSJjYXB0b2luZm8uMW0uaHRtbCI+Y2FwdG9pbmZvKDFtKTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz48QSBIUkVGPSJpbmZvdG9jYXAuMW0uaHRtbCI+aW5mb3RvY2FwKDFtKTwvQT48L1NUUk9ORz4sCiAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJuY3Vyc2VzLjN4Lmh0bWwiPmN1cnNlcygzeCk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LgogCi0gICAgICAgVGhpcyBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNS42IChwYXRjaCAyMDA4MTAxMSkuCisgICAgICAgVGhpcyBkZXNjcmliZXMgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHZlcnNpb24gNi4wIChwYXRjaCAyMDE1MDgwOCkuCiAKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0b2UuMW0uaHRtbCI+dG9lKDFtKTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUZJTEVTIj5GSUxFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi90cHV0LjEuaHRtbCBiL2RvYy9odG1sL21hbi90cHV0LjEuaHRtbAppbmRleCAyZDMxYWE1Li5jMDRmNTNkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vdHB1dC4xLmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL3RwdXQuMS5odG1sCkBAIC0xLDggKzEsNyBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICogdAogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMzIgKzI3LDMzIEBACiAgICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKICAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogQElkOiB0cHV0LjEsdiAxLjI3IDIwMDYvMTIvMjQgMTg6MTE6MzEgdG9tIEV4cCBACisgICogQElkOiB0cHV0LjEsdiAxLjMyIDIwMTIvMDcvMTQgMjE6MDY6NDUgdG9tIEV4cCBACiAtLT4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8SFRNTD4KIDxIRUFEPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXMtYXNjaWkiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAtIHNlZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9yZWFkbWUuaHRtbCNvdGhlcnNfc2NyaXB0cyI+CiA8VElUTEU+dHB1dCAxPC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+dHB1dCAxPC9IMT4KLTxIUj4KKzxIMSBjbGFzcz0ibm8taGVhZGVyIj50cHV0IDE8L0gxPgogPFBSRT4KLTwhLS0gTWFucGFnZSBjb252ZXJ0ZWQgYnkgbWFuMmh0bWwgMy4wLjEgLS0+CiA8U1RST05HPjxBIEhSRUY9InRwdXQuMS5odG1sIj50cHV0KDEpPC9BPjwvU1RST05HPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idHB1dC4xLmh0bWwiPnRwdXQoMSk8L0E+PC9TVFJPTkc+CiAKIAogCiAKIDwvUFJFPgotPEgyPk5BTUU8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTkFNRSI+TkFNRTwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz50cHV0PC9TVFJPTkc+LCAgPFNUUk9ORz5yZXNldDwvU1RST05HPiAgLSAgaW5pdGlhbGl6ZSAgYSAgdGVybWluYWwgb3IgcXVlcnkgdGVybWluZm8KICAgICAgICBkYXRhYmFzZQogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz50cHV0PC9TVFJPTkc+IFs8U1RST05HPi1UPC9TVFJPTkc+PEVNPnR5cGU8L0VNPl0gPEVNPmNhcG5hbWU8L0VNPiBbPEVNPnBhcm1zPC9FTT4gLi4uIF0KICAgICAgICA8U1RST05HPnRwdXQ8L1NUUk9ORz4gWzxTVFJPTkc+LVQ8L1NUUk9ORz48RU0+dHlwZTwvRU0+XSA8U1RST05HPmluaXQ8L1NUUk9ORz4KICAgICAgICA8U1RST05HPnRwdXQ8L1NUUk9ORz4gWzxTVFJPTkc+LVQ8L1NUUk9ORz48RU0+dHlwZTwvRU0+XSA8U1RST05HPnJlc2V0PC9TVFJPTkc+CkBAIC02MywxMCArNjMsMTAgQEAKIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1ERVNDUklQVElPTiI+REVTQ1JJUFRJT048L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSA8U1RST05HPnRwdXQ8L1NUUk9ORz4gdXRpbGl0eSB1c2VzIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRhdGFiYXNlICB0byAgbWFrZSAgdGhlCiAgICAgICAgdmFsdWVzICBvZiB0ZXJtaW5hbC1kZXBlbmRlbnQgY2FwYWJpbGl0aWVzIGFuZCBpbmZvcm1hdGlvbgotICAgICAgIGF2YWlsYWJsZSB0byB0aGUgc2hlbGwgKHNlZSA8U1RST05HPjxBIEhSRUY9InNoLjEuaHRtbCI+c2goMSk8L0E+PC9TVFJPTkc+KSwgdG8gaW5pdGlhbGl6ZSBvciByZXNldAorICAgICAgIGF2YWlsYWJsZSB0byB0aGUgc2hlbGwgKHNlZSA8U1RST05HPnNoKDEpPC9TVFJPTkc+KSwgdG8gaW5pdGlhbGl6ZSBvciByZXNldAogICAgICAgIHRoZSAgdGVybWluYWwsICBvciAgcmV0dXJuICB0aGUgbG9uZyBuYW1lIG9mIHRoZSByZXF1ZXN0ZWQKICAgICAgICB0ZXJtaW5hbCB0eXBlLiAgVGhlIHJlc3VsdCBkZXBlbmRzIHVwb24gIHRoZSAgY2FwYWJpbGl0eSdzCiAgICAgICAgdHlwZToKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgIEJlZm9yZSB1c2luZyBhIHZhbHVlIHJldHVybmVkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQsICB0aGUKICAgICAgICBhcHBsaWNhdGlvbiAgc2hvdWxkICB0ZXN0ICB0aGUgIGV4aXQgIGNvZGUgIChlLmcuLCA8U1RST05HPiQ/PC9TVFJPTkc+LCBzZWUKLSAgICAgICA8U1RST05HPjxBIEhSRUY9InNoLjEuaHRtbCI+c2goMSk8L0E+PC9TVFJPTkc+KSB0byBiZSBzdXJlIGl0IGlzIDxTVFJPTkc+MDwvU1RST05HPi4gIChTZWUgdGhlIDxTVFJPTkc+RVhJVDwvU1RST05HPiA8U1RST05HPkNPREVTPC9TVFJPTkc+IGFuZCAgPFNUUk9ORz5ESUFHLTwvU1RST05HPgorICAgICAgIDxTVFJPTkc+c2goMSk8L1NUUk9ORz4pIHRvIGJlIHN1cmUgaXQgaXMgPFNUUk9ORz4wPC9TVFJPTkc+LiAgKFNlZSB0aGUgPFNUUk9ORz5FWElUPC9TVFJPTkc+IDxTVFJPTkc+Q09ERVM8L1NUUk9ORz4gYW5kICA8U1RST05HPkRJQUctPC9TVFJPTkc+CiAgICAgICAgPFNUUk9ORz5OT1NUSUNTPC9TVFJPTkc+ICBzZWN0aW9ucy4pICAgRm9yICBhIGNvbXBsZXRlIGxpc3Qgb2YgY2FwYWJpbGl0aWVzCiAgICAgICAgYW5kIHRoZSA8RU0+Y2FwbmFtZTwvRU0+IGFzc29jaWF0ZWQgd2l0aCBlYWNoLCBzZWUgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPi4KIApAQCAtOTUsNTQgKzk1LDUzIEBACiAgICAgICAgICAgICAgIG9wdGlvbiBpcyB1bm5lY2Vzc2FyeSwgYmVjYXVzZSB0aGUgZGVmYXVsdCBpcyB0YWtlbgogICAgICAgICAgICAgICBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4uICBJZiA8U1RST05HPi1UPC9TVFJPTkc+IGlzIHNwZWMtCiAgICAgICAgICAgICAgIGlmaWVkLCAgdGhlbiAgdGhlIHNoZWxsIHZhcmlhYmxlcyA8U1RST05HPkxJTkVTPC9TVFJPTkc+IGFuZCA8U1RST05HPkNPTFVNTlM8L1NUUk9ORz4KLSAgICAgICAgICAgICAgd2lsbCBiZSBpZ25vcmVkLGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSAgd2lsbCAgbm90Ci0gICAgICAgICAgICAgIGJlIHF1ZXJpZWQgZm9yIHRoZSBhY3R1YWwgc2NyZWVuIHNpemUuCisgICAgICAgICAgICAgIHdpbGwgYWxzbyBiZSBpZ25vcmVkLgogCiAgICAgICAgPEVNPmNhcG5hbWU8L0VNPgotICAgICAgICAgICAgICBpbmRpY2F0ZXMgICB0aGUgICBjYXBhYmlsaXR5ICAgZnJvbSAgIHRoZSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPgotICAgICAgICAgICAgICBkYXRhYmFzZS4gIFdoZW4gPFNUUk9ORz50ZXJtY2FwPC9TVFJPTkc+IHN1cHBvcnQgaXMgY29tcGlsZWQgaW4sIHRoZQorICAgICAgICAgICAgICBpbmRpY2F0ZXMgdGhlIGNhcGFiaWxpdHkgZnJvbSAgdGhlICA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+ICBkYXRhLQorICAgICAgICAgICAgICBiYXNlLiAgIFdoZW4gIDxTVFJPTkc+dGVybWNhcDwvU1RST05HPiAgc3VwcG9ydCAgaXMgY29tcGlsZWQgaW4sIHRoZQogICAgICAgICAgICAgICA8U1RST05HPnRlcm1jYXA8L1NUUk9ORz4gbmFtZSBmb3IgdGhlIGNhcGFiaWxpdHkgaXMgYWxzbyBhY2NlcHRlZC4KIAotICAgICAgIDxFTT5wYXJtczwvRU0+ICBJZiAgdGhlICBjYXBhYmlsaXR5ICBpcyBhIHN0cmluZyB0aGF0IHRha2VzIHBhcmFtZS0KKyAgICAgICA8RU0+cGFybXM8L0VNPiAgSWYgdGhlIGNhcGFiaWxpdHkgaXMgYSBzdHJpbmcgIHRoYXQgIHRha2VzICBwYXJhbWUtCiAgICAgICAgICAgICAgIHRlcnMsIHRoZSBhcmd1bWVudHMgPEVNPnBhcm1zPC9FTT4gd2lsbCBiZSBpbnN0YW50aWF0ZWQgaW50bwogICAgICAgICAgICAgICB0aGUgc3RyaW5nLgogCi0gICAgICAgICAgICAgIE1vc3QgIHBhcmFtZXRlcnMgIGFyZSBudW1iZXJzLiAgT25seSBhIGZldyB0ZXJtaW5mbworICAgICAgICAgICAgICBNb3N0IHBhcmFtZXRlcnMgYXJlIG51bWJlcnMuICBPbmx5IGEgIGZldyAgdGVybWluZm8KICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzIHJlcXVpcmUgc3RyaW5nIHBhcmFtZXRlcnM7IDxTVFJPTkc+dHB1dDwvU1RST05HPiB1c2VzIGEKICAgICAgICAgICAgICAgdGFibGUgdG8gZGVjaWRlIHdoaWNoIHRvIHBhc3MgYXMgc3RyaW5ncy4gIE5vcm1hbGx5Ci0gICAgICAgICAgICAgIDxTVFJPTkc+dHB1dDwvU1RST05HPiB1c2VzIDxTVFJPTkc+dHBhcm08L1NUUk9ORz4gKDN4KSB0byBwZXJmb3JtICB0aGUgIHN1YnN0aXR1dGlvbi4KKyAgICAgICAgICAgICAgPFNUUk9ORz50cHV0PC9TVFJPTkc+ICB1c2VzICA8U1RST05HPnRwYXJtPC9TVFJPTkc+ICgzeCkgdG8gcGVyZm9ybSB0aGUgc3Vic3RpdHV0aW9uLgogICAgICAgICAgICAgICBJZiBubyBwYXJhbWV0ZXJzIGFyZSBnaXZlbiBmb3IgdGhlIGNhcGFiaWxpdHksIDxTVFJPTkc+dHB1dDwvU1RST05HPgotICAgICAgICAgICAgICB3cml0ZXMgICB0aGUgICBzdHJpbmcgICB3aXRob3V0ICAgcGVyZm9ybWluZyAgICB0aGUKLSAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uLgorICAgICAgICAgICAgICB3cml0ZXMgIHRoZSBzdHJpbmcgd2l0aG91dCBwZXJmb3JtaW5nIHRoZSBzdWJzdGl0dS0KKyAgICAgICAgICAgICAgdGlvbi4KIAotICAgICAgIDxTVFJPTkc+LVM8L1NUUk9ORz4gICAgIGFsbG93cyAgbW9yZSAgdGhhbiBvbmUgY2FwYWJpbGl0eSBwZXIgaW52b2NhdGlvbiBvZgorICAgICAgIDxTVFJPTkc+LVM8L1NUUk9ORz4gICAgIGFsbG93cyBtb3JlIHRoYW4gb25lIGNhcGFiaWxpdHkgcGVyICBpbnZvY2F0aW9uICBvZgogICAgICAgICAgICAgICA8U1RST05HPnRwdXQ8L1NUUk9ORz4uICBUaGUgY2FwYWJpbGl0aWVzIG11c3QgYmUgcGFzc2VkIHRvIDxTVFJPTkc+dHB1dDwvU1RST05HPiBmcm9tCiAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBpbnB1dCBpbnN0ZWFkIG9mIGZyb20gdGhlIGNvbW1hbmQgbGluZQotICAgICAgICAgICAgICAoc2VlIGV4YW1wbGUpLiAgT25seSBvbmUgIDxFTT5jYXBuYW1lPC9FTT4gIGlzICBhbGxvd2VkICBwZXIKLSAgICAgICAgICAgICAgbGluZS4gICBUaGUgIDxTVFJPTkc+LVM8L1NUUk9ORz4gb3B0aW9uIGNoYW5nZXMgdGhlIG1lYW5pbmcgb2YgdGhlIDxTVFJPTkc+MDwvU1RST05HPgotICAgICAgICAgICAgICBhbmQgPFNUUk9ORz4xPC9TVFJPTkc+IGJvb2xlYW4gYW5kIHN0cmluZyBleGl0IGNvZGVzIChzZWUgIHRoZSAgRVhJVAorICAgICAgICAgICAgICAoc2VlICBleGFtcGxlKS4gICBPbmx5ICBvbmUgIDxFTT5jYXBuYW1lPC9FTT4gaXMgYWxsb3dlZCBwZXIKKyAgICAgICAgICAgICAgbGluZS4gIFRoZSA8U1RST05HPi1TPC9TVFJPTkc+IG9wdGlvbiBjaGFuZ2VzIHRoZSBtZWFuaW5nIG9mICB0aGUgIDxTVFJPTkc+MDwvU1RST05HPgorICAgICAgICAgICAgICBhbmQgIDxTVFJPTkc+MTwvU1RST05HPiAgYm9vbGVhbiBhbmQgc3RyaW5nIGV4aXQgY29kZXMgKHNlZSB0aGUgRVhJVAogICAgICAgICAgICAgICBDT0RFUyBzZWN0aW9uKS4KIAogICAgICAgICAgICAgICBBZ2FpbiwgPFNUUk9ORz50cHV0PC9TVFJPTkc+IHVzZXMgYSB0YWJsZSBhbmQgdGhlIHByZXNlbmNlIG9mIHBhcmFtLQotICAgICAgICAgICAgICBldGVycyBpbiBpdHMgaW5wdXQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gIHVzZSAgPFNUUk9ORz50cGFybTwvU1RST05HPgorICAgICAgICAgICAgICBldGVycyAgaW4gIGl0cyBpbnB1dCB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgPFNUUk9ORz50cGFybTwvU1RST05HPgogICAgICAgICAgICAgICAoM3gpLCBhbmQgaG93IHRvIGludGVycHJldCB0aGUgcGFyYW1ldGVycy4KIAotICAgICAgIDxTVFJPTkc+LVY8L1NUUk9ORz4gICAgIHJlcG9ydHMgIHRoZSAgdmVyc2lvbiAgb2YgbmN1cnNlcyB3aGljaCB3YXMgdXNlZCBpbgorICAgICAgIDxTVFJPTkc+LVY8L1NUUk9ORz4gICAgIHJlcG9ydHMgdGhlIHZlcnNpb24gb2YgbmN1cnNlcyB3aGljaCAgd2FzICB1c2VkICBpbgogICAgICAgICAgICAgICB0aGlzIHByb2dyYW0sIGFuZCBleGl0cy4KIAotICAgICAgIDxTVFJPTkc+aW5pdDwvU1RST05HPiAgIElmIHRoZSA8U1RST05HPnRlcm1pbmZvPC9TVFJPTkc+IGRhdGFiYXNlIGlzIHByZXNlbnQgIGFuZCAgYW4gIGVudHJ5CisgICAgICAgPFNUUk9ORz5pbml0PC9TVFJPTkc+ICAgSWYgIHRoZSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZGF0YWJhc2UgaXMgcHJlc2VudCBhbmQgYW4gZW50cnkKICAgICAgICAgICAgICAgZm9yIHRoZSB1c2VyJ3MgdGVybWluYWwgZXhpc3RzIChzZWUgPFNUUk9ORz4tVDwvU1RST05HPjxFTT50eXBlPC9FTT4sIGFib3ZlKSwKICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyB3aWxsIG9jY3VyOgogCi0gICAgICAgICAgICAgICgxKSAgICBpZiBwcmVzZW50LCAgdGhlICB0ZXJtaW5hbCdzICBpbml0aWFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgc3RyaW5ncyAgd2lsbCAgYmUgIG91dHB1dCBhcyBkZXRhaWxlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gc2VjdGlvbiBvbiA8RU0+VGFiczwvRU0+IDxFTT5hbmQ8L0VNPiAgPEVNPkluaXRpYWxpemEtPC9FTT4KKyAgICAgICAgICAgICAgKDEpICAgIGlmICBwcmVzZW50LCAgdGhlICB0ZXJtaW5hbCdzIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzIHdpbGwgYmUgb3V0cHV0IGFzICBkZXRhaWxlZCAgaW4gIHRoZQorICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiAgc2VjdGlvbiBvbiA8RU0+VGFiczwvRU0+IDxFTT5hbmQ8L0VNPiA8RU0+SW5pdGlhbGl6YS08L0VNPgogICAgICAgICAgICAgICAgICAgICAgPEVNPnRpb248L0VNPiwKIAotICAgICAgICAgICAgICAoMikgICAgYW55ICBkZWxheXMgKGUuZy4sIG5ld2xpbmUpIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgKDIpICAgIGFueSBkZWxheXMgKGUuZy4sIG5ld2xpbmUpIHNwZWNpZmllZCBpbiAgdGhlCiAgICAgICAgICAgICAgICAgICAgICBlbnRyeSB3aWxsIGJlIHNldCBpbiB0aGUgdHR5IGRyaXZlciwKIAotICAgICAgICAgICAgICAoMykgICAgdGFicyBleHBhbnNpb24gd2lsbCAgYmUgIHR1cm5lZCAgb24gIG9yICBvZmYKKyAgICAgICAgICAgICAgKDMpICAgIHRhYnMgIGV4cGFuc2lvbiAgd2lsbCAgYmUgIHR1cm5lZCAgb24gb3Igb2ZmCiAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gaW4gdGhlIGVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgYW5kCiAKQEAgLTE1MywzNyArMTUyLDM3IEBACiAgICAgICAgICAgICAgIGZvciBhbnkgb2YgdGhlIGZvdXIgYWJvdmUgYWN0aXZpdGllcywgdGhhdCBhY3Rpdml0eQogICAgICAgICAgICAgICB3aWxsIHNpbGVudGx5IGJlIHNraXBwZWQuCiAKLSAgICAgICA8U1RST05HPnJlc2V0PC9TVFJPTkc+ICBJbnN0ZWFkICBvZiBwdXR0aW5nIG91dCBpbml0aWFsaXphdGlvbiBzdHJpbmdzLCB0aGUKLSAgICAgICAgICAgICAgdGVybWluYWwncyByZXNldCBzdHJpbmdzIHdpbGwgYmUgb3V0cHV0IGlmICBwcmVzZW50Ci0gICAgICAgICAgICAgICg8U1RST05HPnJzMTwvU1RST05HPiwgIDxTVFJPTkc+cnMyPC9TVFJPTkc+LCA8U1RST05HPnJzMzwvU1RST05HPiwgPFNUUk9ORz5yZjwvU1RST05HPikuICBJZiB0aGUgcmVzZXQgc3RyaW5ncyBhcmUgbm90Ci0gICAgICAgICAgICAgIHByZXNlbnQsIGJ1dCBpbml0aWFsaXphdGlvbiBzdHJpbmdzIGFyZSwgIHRoZSAgaW5pLQotICAgICAgICAgICAgICB0aWFsaXphdGlvbiAgc3RyaW5ncyAgd2lsbCAgYmUgIG91dHB1dC4gIE90aGVyd2lzZSwKKyAgICAgICA8U1RST05HPnJlc2V0PC9TVFJPTkc+ICBJbnN0ZWFkIG9mIHB1dHRpbmcgb3V0IGluaXRpYWxpemF0aW9uIHN0cmluZ3MsICB0aGUKKyAgICAgICAgICAgICAgdGVybWluYWwncyAgcmVzZXQgc3RyaW5ncyB3aWxsIGJlIG91dHB1dCBpZiBwcmVzZW50CisgICAgICAgICAgICAgICg8U1RST05HPnJzMTwvU1RST05HPiwgPFNUUk9ORz5yczI8L1NUUk9ORz4sIDxTVFJPTkc+cnMzPC9TVFJPTkc+LCA8U1RST05HPnJmPC9TVFJPTkc+KS4gIElmIHRoZSByZXNldCBzdHJpbmdzIGFyZSAgbm90CisgICAgICAgICAgICAgIHByZXNlbnQsICBidXQgIGluaXRpYWxpemF0aW9uIHN0cmluZ3MgYXJlLCB0aGUgaW5pLQorICAgICAgICAgICAgICB0aWFsaXphdGlvbiBzdHJpbmdzICB3aWxsICBiZSAgb3V0cHV0LiAgIE90aGVyd2lzZSwKICAgICAgICAgICAgICAgPFNUUk9ORz5yZXNldDwvU1RST05HPiBhY3RzIGlkZW50aWNhbGx5IHRvIDxTVFJPTkc+aW5pdDwvU1RST05HPi4KIAogICAgICAgIDxTVFJPTkc+bG9uZ25hbWU8L1NUUk9ORz4KLSAgICAgICAgICAgICAgSWYgdGhlIDxTVFJPTkc+dGVybWluZm88L1NUUk9ORz4gZGF0YWJhc2UgaXMgcHJlc2VudCAgYW5kICBhbiAgZW50cnkKLSAgICAgICAgICAgICAgZm9yICB0aGUgdXNlcidzIHRlcm1pbmFsIGV4aXN0cyAoc2VlIDxTVFJPTkc+LVQ8L1NUUk9ORz48RU0+dHlwZTwvRU0+IGFib3ZlKSwKKyAgICAgICAgICAgICAgSWYgIHRoZSAgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiAgZGF0YWJhc2UgaXMgcHJlc2VudCBhbmQgYW4gZW50cnkKKyAgICAgICAgICAgICAgZm9yIHRoZSB1c2VyJ3MgdGVybWluYWwgZXhpc3RzIChzZWUgPFNUUk9ORz4tVDwvU1RST05HPjxFTT50eXBlPC9FTT4gIGFib3ZlKSwKICAgICAgICAgICAgICAgdGhlbiB0aGUgbG9uZyBuYW1lIG9mIHRoZSB0ZXJtaW5hbCB3aWxsIGJlIHB1dCBvdXQuCiAgICAgICAgICAgICAgIFRoZSBsb25nIG5hbWUgaXMgdGhlIGxhc3QgbmFtZSBpbiB0aGUgZmlyc3QgbGluZSBvZgogICAgICAgICAgICAgICB0aGUgdGVybWluYWwncyBkZXNjcmlwdGlvbiBpbiB0aGUgPFNUUk9ORz50ZXJtaW5mbzwvU1RST05HPiBkYXRhYmFzZQogICAgICAgICAgICAgICBbc2VlIDxTVFJPTkc+PEEgSFJFRj0idGVybS41Lmh0bWwiPnRlcm0oNSk8L0E+PC9TVFJPTkc+XS4KIAotICAgICAgIElmICA8U1RST05HPnRwdXQ8L1NUUk9ORz4gIGlzICBpbnZva2VkICBieSBhIGxpbmsgbmFtZWQgPFNUUk9ORz5yZXNldDwvU1RST05HPiwgdGhpcyBoYXMgdGhlCisgICAgICAgSWYgPFNUUk9ORz50cHV0PC9TVFJPTkc+IGlzIGludm9rZWQgYnkgYSBsaW5rIG5hbWVkICA8U1RST05HPnJlc2V0PC9TVFJPTkc+LCAgdGhpcyAgaGFzICB0aGUKICAgICAgICBzYW1lIGVmZmVjdCBhcyA8U1RST05HPnRwdXQ8L1NUUk9ORz4gPFNUUk9ORz5yZXNldDwvU1RST05HPi4gIFNlZSA8U1RST05HPnRzZXQ8L1NUUk9ORz4gZm9yIGNvbXBhcmlzb24sIHdoaWNoCiAgICAgICAgaGFzIHNpbWlsYXIgYmVoYXZpb3IuCiAKIAogPC9QUkU+Ci08SDI+RVhBTVBMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRVhBTVBMRVMiPkVYQU1QTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPnRwdXQ8L1NUUk9ORz4gPFNUUk9ORz5pbml0PC9TVFJPTkc+CiAgICAgICAgICAgICBJbml0aWFsaXplIHRoZSB0ZXJtaW5hbCBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgdGVyLQotICAgICAgICAgICAgbWluYWwgaW4gdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgPFNUUk9ORz5URVJNPC9TVFJPTkc+LiAgVGhpcyAgY29tLQotICAgICAgICAgICAgbWFuZCAgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGV2ZXJ5b25lJ3MgLnByb2ZpbGUgYWZ0ZXIKKyAgICAgICAgICAgIG1pbmFsICBpbiB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4uICBUaGlzIGNvbS0KKyAgICAgICAgICAgIG1hbmQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGV2ZXJ5b25lJ3MgLnByb2ZpbGUgIGFmdGVyCiAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4gaGFzIGJlZW4gZXhwb3J0ZWQsIGFzCi0gICAgICAgICAgICBpbGx1c3RyYXRlZCBvbiB0aGUgPFNUUk9ORz48QSBIUkVGPSJwcm9maWxlLjUuaHRtbCI+cHJvZmlsZSg1KTwvQT48L1NUUk9ORz4gbWFudWFsIHBhZ2UuCisgICAgICAgICAgICBpbGx1c3RyYXRlZCBvbiB0aGUgPFNUUk9ORz5wcm9maWxlKDUpPC9TVFJPTkc+IG1hbnVhbCBwYWdlLgogCiAgICAgICAgPFNUUk9ORz50cHV0PC9TVFJPTkc+IDxTVFJPTkc+LVQ1NjIwPC9TVFJPTkc+IDxTVFJPTkc+cmVzZXQ8L1NUUk9ORz4KLSAgICAgICAgICAgIFJlc2V0ICBhbiAgQVQmYW1wO1QgNTYyMCB0ZXJtaW5hbCwgb3ZlcnJpZGluZyB0aGUgdHlwZSBvZgorICAgICAgICAgICAgUmVzZXQgYW4gQVQmYW1wO1QgNTYyMCB0ZXJtaW5hbCwgb3ZlcnJpZGluZyB0aGUgIHR5cGUgIG9mCiAgICAgICAgICAgICB0ZXJtaW5hbCBpbiB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSA8U1RST05HPlRFUk08L1NUUk9ORz4uCiAKICAgICAgICA8U1RST05HPnRwdXQ8L1NUUk9ORz4gPFNUUk9ORz5jdXA8L1NUUk9ORz4gPFNUUk9ORz4wPC9TVFJPTkc+IDxTVFJPTkc+MDwvU1RST05HPgpAQCAtMjM5LDcgKzIzOCw3IEBACiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPi91c3Ivc2hhcmUvdGVybWluZm88L1NUUk9ORz4KICAgICAgICAgICAgICAgY29tcGlsZWQgdGVybWluYWwgZGVzY3JpcHRpb24gZGF0YWJhc2UKIApAQCAtMjUyLDcgKzI1MSw3IEBACiAKIAogPC9QUkU+Ci08SDI+RVhJVCBDT0RFUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1FWElULUNPREVTIj5FWElUIENPREVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBJZiB0aGUgPFNUUk9ORz4tUzwvU1RST05HPiBvcHRpb24gaXMgdXNlZCwgPFNUUk9ORz50cHV0PC9TVFJPTkc+IGNoZWNrcyBmb3IgZXJyb3JzIGZyb20gZWFjaAogICAgICAgIGxpbmUsIGFuZCBpZiBhbnkgZXJyb3JzIGFyZSBmb3VuZCwgd2lsbCBzZXQgdGhlIGV4aXQgIGNvZGUKICAgICAgICB0byAgNCAgcGx1cyB0aGUgbnVtYmVyIG9mIGxpbmVzIHdpdGggZXJyb3JzLiAgSWYgbm8gZXJyb3JzCkBAIC0yNjMsNDIgKzI2Miw0MSBAQAogICAgICAgIHR5cGUgb2YgPEVNPmNhcG5hbWU8L0VNPjoKIAogICAgICAgICAgICAgPEVNPmJvb2xlYW48L0VNPgotICAgICAgICAgICAgICAgICAgIGEgdmFsdWUgb2YgPFNUUk9ORz4wPC9TVFJPTkc+IGlzIHNldCBmb3IgVFJVRSBhbmQgPFNUUk9ORz4xPC9TVFJPTkc+IGZvciAgRkFMU0UuCisgICAgICAgICAgICAgICAgICAgYSB2YWx1ZSBvZiA8U1RST05HPjA8L1NUUk9ORz4gaXMgc2V0IGZvciBUUlVFIGFuZCA8U1RST05HPjE8L1NUUk9ORz4gZm9yIEZBTFNFLgogCi0gICAgICAgICAgICA8RU0+c3RyaW5nPC9FTT4gYSAgdmFsdWUgb2YgPFNUUk9ORz4wPC9TVFJPTkc+IGlzIHNldCBpZiB0aGUgPEVNPmNhcG5hbWU8L0VNPiBpcyBkZWZpbmVkCi0gICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdGVybWluYWwgPEVNPnR5cGU8L0VNPiAodGhlIHZhbHVlICBvZiAgPEVNPmNhcG5hbWU8L0VNPgotICAgICAgICAgICAgICAgICAgIGlzICByZXR1cm5lZCBvbiBzdGFuZGFyZCBvdXRwdXQpOyBhIHZhbHVlIG9mIDxTVFJPTkc+MTwvU1RST05HPgorICAgICAgICAgICAgPEVNPnN0cmluZzwvRU0+IGEgdmFsdWUgb2YgPFNUUk9ORz4wPC9TVFJPTkc+IGlzIHNldCBpZiB0aGUgPEVNPmNhcG5hbWU8L0VNPiBpcyAgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgIGZvciAgdGhpcyAgdGVybWluYWwgPEVNPnR5cGU8L0VNPiAodGhlIHZhbHVlIG9mIDxFTT5jYXBuYW1lPC9FTT4KKyAgICAgICAgICAgICAgICAgICBpcyByZXR1cm5lZCBvbiBzdGFuZGFyZCBvdXRwdXQpOyBhIHZhbHVlIG9mICA8U1RST05HPjE8L1NUUk9ORz4KICAgICAgICAgICAgICAgICAgICBpcyBzZXQgaWYgPEVNPmNhcG5hbWU8L0VNPiBpcyBub3QgZGVmaW5lZCBmb3IgdGhpcyB0ZXItCi0gICAgICAgICAgICAgICAgICAgbWluYWwgIDxFTT50eXBlPC9FTT4gIChub3RoaW5nICBpcyAgd3JpdHRlbiB0byBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgIG1pbmFsIDxFTT50eXBlPC9FTT4gKG5vdGhpbmcgIGlzICB3cml0dGVuICB0byAgc3RhbmRhcmQKICAgICAgICAgICAgICAgICAgICBvdXRwdXQpLgogCiAgICAgICAgICAgICA8RU0+aW50ZWdlcjwvRU0+Ci0gICAgICAgICAgICAgICAgICAgYSB2YWx1ZSBvZiA8U1RST05HPjA8L1NUUk9ORz4gaXMgYWx3YXlzICBzZXQsICB3aGV0aGVyICBvciAgbm90CisgICAgICAgICAgICAgICAgICAgYSAgdmFsdWUgIG9mICA8U1RST05HPjA8L1NUUk9ORz4gIGlzIGFsd2F5cyBzZXQsIHdoZXRoZXIgb3Igbm90CiAgICAgICAgICAgICAgICAgICAgPEVNPmNhcG5hbWU8L0VNPiBpcyBkZWZpbmVkIGZvciB0aGlzIHRlcm1pbmFsIDxFTT50eXBlPC9FTT4uICBUbwotICAgICAgICAgICAgICAgICAgIGRldGVybWluZSBpZiA8RU0+Y2FwbmFtZTwvRU0+IGlzIGRlZmluZWQgZm9yIHRoaXMgIHRlci0KKyAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgIGlmIDxFTT5jYXBuYW1lPC9FTT4gaXMgZGVmaW5lZCBmb3IgdGhpcyB0ZXItCiAgICAgICAgICAgICAgICAgICAgbWluYWwgPEVNPnR5cGU8L0VNPiwgdGhlIHVzZXIgbXVzdCB0ZXN0IHRoZSB2YWx1ZSB3cml0LQotICAgICAgICAgICAgICAgICAgIHRlbiB0byBzdGFuZGFyZCBvdXRwdXQuICBBIHZhbHVlIG9mICA8U1RST05HPi0xPC9TVFJPTkc+ICBtZWFucwotICAgICAgICAgICAgICAgICAgIHRoYXQgIDxFTT5jYXBuYW1lPC9FTT4gaXMgbm90IGRlZmluZWQgZm9yIHRoaXMgdGVybWluYWwKKyAgICAgICAgICAgICAgICAgICB0ZW4gIHRvICBzdGFuZGFyZCBvdXRwdXQuICBBIHZhbHVlIG9mIDxTVFJPTkc+LTE8L1NUUk9ORz4gbWVhbnMKKyAgICAgICAgICAgICAgICAgICB0aGF0IDxFTT5jYXBuYW1lPC9FTT4gaXMgbm90IGRlZmluZWQgZm9yIHRoaXMgIHRlcm1pbmFsCiAgICAgICAgICAgICAgICAgICAgPEVNPnR5cGU8L0VNPi4KIAotICAgICAgICAgICAgPEVNPm90aGVyPC9FTT4gIDxTVFJPTkc+cmVzZXQ8L1NUUk9ORz4gb3IgPFNUUk9ORz5pbml0PC9TVFJPTkc+IG1heSBmYWlsIHRvIGZpbmQgIHRoZWlyICByZXNwZWMtCi0gICAgICAgICAgICAgICAgICAgdGl2ZSAgZmlsZXMuICAgSW4gIHRoYXQgY2FzZSwgdGhlIGV4aXQgY29kZSBpcworICAgICAgICAgICAgPEVNPm90aGVyPC9FTT4gIDxTVFJPTkc+cmVzZXQ8L1NUUk9ORz4gIG9yICA8U1RST05HPmluaXQ8L1NUUk9ORz4gbWF5IGZhaWwgdG8gZmluZCB0aGVpciByZXNwZWMtCisgICAgICAgICAgICAgICAgICAgdGl2ZSBmaWxlcy4gIEluIHRoYXQgY2FzZSwgdGhlICBleGl0ICBjb2RlICBpcwogICAgICAgICAgICAgICAgICAgIHNldCB0byA0ICsgPFNUUk9ORz5lcnJubzwvU1RST05HPi4KIAotICAgICAgIEFueSBvdGhlciBleGl0IGNvZGUgaW5kaWNhdGVzIGFuIGVycm9yOyBzZWUgIHRoZSAgRElBR05PUy0KKyAgICAgICBBbnkgIG90aGVyICBleGl0IGNvZGUgaW5kaWNhdGVzIGFuIGVycm9yOyBzZWUgdGhlIERJQUdOT1MtCiAgICAgICAgVElDUyBzZWN0aW9uLgogCiAKIDwvUFJFPgotPEgyPkRJQUdOT1NUSUNTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURJQUdOT1NUSUNTIj5ESUFHTk9TVElDUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz50cHV0PC9TVFJPTkc+IHByaW50cyB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2VzIGFuZCBzZXRzIHRoZSBjb3ItCiAgICAgICAgcmVzcG9uZGluZyBleGl0IGNvZGVzLgogCi0KICAgICAgICBleGl0IGNvZGUgICBlcnJvciBtZXNzYWdlCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgPFNUUk9ORz4wPC9TVFJPTkc+ICAgICAgICAgICAoPEVNPmNhcG5hbWU8L0VNPiBpcyBhIG51bWVyaWMgdmFyaWFibGUgdGhhdCBpcyBub3Qgc3BlY2lmaWVkICBpbgotICAgICAgICAgICAgICAgICAgIHRoZSAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiAgZGF0YWJhc2UgIGZvciB0aGlzIHRlcm1pbmFsIHR5cGUsIGUuZy4KKyAgICAgICA8U1RST05HPjA8L1NUUk9ORz4gICAgICAgICAgICg8RU0+Y2FwbmFtZTwvRU0+ICBpcyBhIG51bWVyaWMgdmFyaWFibGUgdGhhdCBpcyBub3Qgc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgdGhlIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4gZGF0YWJhc2UgZm9yIHRoaXMgIHRlcm1pbmFsICB0eXBlLCAgZS5nLgogICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+dHB1dDwvU1RST05HPiA8U1RST05HPi1UNDUwPC9TVFJPTkc+IDxTVFJPTkc+bGluZXM8L1NUUk9ORz4gYW5kIDxTVFJPTkc+dHB1dDwvU1RST05HPiA8U1RST05HPi1UMjYyMTwvU1RST05HPiA8U1RST05HPnhtYzwvU1RST05HPikKICAgICAgICA8U1RST05HPjE8L1NUUk9ORz4gICAgICAgICAgIG5vIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCwgc2VlIHRoZSA8U1RST05HPkVYSVQ8L1NUUk9ORz4gPFNUUk9ORz5DT0RFUzwvU1RST05HPiBzZWN0aW9uLgogICAgICAgIDxTVFJPTkc+MjwvU1RST05HPiAgICAgICAgICAgdXNhZ2UgZXJyb3IKQEAgLTMwOSwzNSArMzA3LDU1IEBACiAKIAogPC9QUkU+Ci08SDI+UE9SVEFCSUxJVFk8L0gyPjxQUkU+Ci0gICAgICAgVGhlIDxTVFJPTkc+bG9uZ25hbWU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+LVM8L1NUUk9ORz4gb3B0aW9ucywgYW5kICB0aGUgIHBhcmFtZXRlci1zdWJzdGl0dS0KLSAgICAgICB0aW9uICBmZWF0dXJlcyAgdXNlZCBpbiB0aGUgPFNUUk9ORz5jdXA8L1NUUk9ORz4gZXhhbXBsZSwgYXJlIG5vdCBzdXBwb3J0ZWQKKzxIMj48YSBuYW1lPSJoMi1QT1JUQUJJTElUWSI+UE9SVEFCSUxJVFk8L2E+PC9IMj48UFJFPgorICAgICAgIFRoZSAgPFNUUk9ORz5sb25nbmFtZTwvU1RST05HPiAgYW5kIDxTVFJPTkc+LVM8L1NUUk9ORz4gb3B0aW9ucywgYW5kIHRoZSBwYXJhbWV0ZXItc3Vic3RpdHUtCisgICAgICAgdGlvbiBmZWF0dXJlcyB1c2VkIGluIHRoZSA8U1RST05HPmN1cDwvU1RST05HPiBleGFtcGxlLCBhcmUgIG5vdCAgc3VwcG9ydGVkCiAgICAgICAgaW4gQlNEIGN1cnNlcyBvciBpbiBBVCZhbXA7VC9VU0wgY3Vyc2VzIGJlZm9yZSBTVnI0LgogCi0gICAgICAgWC9PcGVuIGRvY3VtZW50cyBvbmx5IHRoZSBvcGVyYW5kcyAgZm9yICA8U1RST05HPmNsZWFyPC9TVFJPTkc+LCAgPFNUUk9ORz5pbml0PC9TVFJPTkc+ICBhbmQKLSAgICAgICA8U1RST05HPnJlc2V0PC9TVFJPTkc+LiAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIDxTVFJPTkc+Y2xlYXI8L1NUUk9ORz4gaXMgcGFydCBvZiB0aGUgPEVNPmNhcC08L0VNPgorICAgICAgIFgvT3BlbiAgZG9jdW1lbnRzICBvbmx5ICB0aGUgIG9wZXJhbmRzIGZvciA8U1RST05HPmNsZWFyPC9TVFJPTkc+LCA8U1RST05HPmluaXQ8L1NUUk9ORz4gYW5kCisgICAgICAgPFNUUk9ORz5yZXNldDwvU1RST05HPi4gIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIDxTVFJPTkc+Y2xlYXI8L1NUUk9ORz4gaXMgcGFydCBvZiB0aGUgIDxFTT5jYXAtPC9FTT4KICAgICAgICA8RU0+bmFtZTwvRU0+IHN1cHBvcnQuICBPdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgPFNUUk9ORz50cHV0PC9TVFJPTkc+IG9uIFNWcjQtYmFzZWQKICAgICAgICBzeXN0ZW1zIHN1Y2ggYXMgU29sYXJpcywgSVJJWDY0IGFuZCBIUFVYIGFzIHdlbGwgYXMgb3RoZXJzCi0gICAgICAgc3VjaCAgYXMgIEFJWCAgYW5kICBUcnU2NCAgcHJvdmlkZSAgc3VwcG9ydCAgZm9yICAgPEVNPmNhcG5hbWU8L0VNPgotICAgICAgIG9wZXJhbmRzLiAgQSBmZXcgcGxhdGZvcm1zIHN1Y2ggYXMgRnJlZUJTRCBhbmQgTmV0QlNEIHJlYy0KLSAgICAgICBvZ25pemUgdGVybWNhcCBuYW1lcyByYXRoZXIgdGhhbiB0ZXJtaW5mbyBjYXBhYmlsaXR5IG5hbWVzCi0gICAgICAgaW4gdGhlaXIgcmVzcGVjdGl2ZSA8U1RST05HPnRwdXQ8L1NUUk9ORz4gY29tbWFuZHMuCisgICAgICAgc3VjaCAgYXMgIEFJWCAgYW5kIFRydTY0IHByb3ZpZGUgc3VwcG9ydCBmb3IgPEVNPmNhcG5hbWU8L0VNPiBvcGVyLQorICAgICAgIGFuZHMuCisKKyAgICAgICBBIGZldyBwbGF0Zm9ybXMgc3VjaCBhcyBGcmVlQlNEIGFuZCBOZXRCU0QgcmVjb2duaXplIHRlcm0tCisgICAgICAgY2FwICBuYW1lcyAgcmF0aGVyIHRoYW4gdGVybWluZm8gY2FwYWJpbGl0eSBuYW1lcyBpbiB0aGVpcgorICAgICAgIHJlc3BlY3RpdmUgPFNUUk9ORz50cHV0PC9TVFJPTkc+IGNvbW1hbmRzLgorCisgICAgICAgTW9zdCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggcHJvdmlkZSBzdXBwb3J0IGZvciA8RU0+Y2FwbmFtZTwvRU0+IG9wLQorICAgICAgIGVyYW5kcyAgdXNlIHRoZSA8RU0+dHBhcm08L0VNPiBmdW5jdGlvbiB0byBleHBhbmQgcGFyYW1ldGVycyBpbiBpdC4KKyAgICAgICBUaGF0IGZ1bmN0aW9uIGV4cGVjdHMgYSAgbWl4dHVyZSAgb2YgIG51bWVyaWMgIGFuZCAgc3RyaW5nCisgICAgICAgcGFyYW1ldGVycywgIHJlcXVpcmluZyAgPFNUUk9ORz50cHV0PC9TVFJPTkc+ICB0byAga25vdyAgd2hpY2ggdHlwZSB0byB1c2UuCisgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgdGFibGUgdG8gZGV0ZXJtaW5lIHRoYXQgZm9yIHRoZQorICAgICAgIHN0YW5kYXJkICA8RU0+Y2FwbmFtZTwvRU0+ICBvcGVyYW5kcywgYW5kIGFuIGludGVybmFsIGxpYnJhcnkgZnVuYy0KKyAgICAgICB0aW9uICB0byAgYW5hbHl6ZSAgbm9uc3RhbmRhcmQgIDxFTT5jYXBuYW1lPC9FTT4gIG9wZXJhbmRzLiAgIE90aGVyCisgICAgICAgaW1wbGVtZW50YXRpb25zICBtYXkgc2ltcGx5IGd1ZXNzIHRoYXQgYW4gb3BlcmFuZCBjb250YWluLQorICAgICAgIGluZyBvbmx5IGRpZ2l0cyBpcyBpbnRlbmRlZCB0byBiZSBhIG51bWJlci4KIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImNsZWFyLjEuaHRtbCI+Y2xlYXIoMSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InN0dHkuMS5odG1sIj5zdHR5KDEpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJ0YWJzLjEuaHRtbCI+dGFicygxKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGVybWluZm8uNS5odG1sIj50ZXJtaW5mbyg1KTwvQT48L1NUUk9ORz4uCis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KKyAgICAgICA8U1RST05HPjxBIEhSRUY9ImNsZWFyLjEuaHRtbCI+Y2xlYXIoMSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPnN0dHkoMSk8L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0idGFicy4xLmh0bWwiPnRhYnMoMSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InRlcm1pbmZvLjUuaHRtbCI+dGVybWluZm8oNSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9ImN1cnNfdGVybWNhcC4zeC5odG1sIj5jdXJzX3Rlcm1jYXAoM3gpPC9BPjwvU1RST05HPi4KIAotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idHB1dC4xLmh0bWwiPnRwdXQoMSk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1FWEFNUExFUyI+RVhBTVBMRVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRklMRVMiPkZJTEVTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUVYSVQtQ09ERVMiPkVYSVQgQ09ERVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItRElBR05PU1RJQ1MiPkRJQUdOT1NUSUNTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVBPUlRBQklMSVRZIj5QT1JUQUJJTElUWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL21hbi90c2V0LjEuaHRtbCBiL2RvYy9odG1sL21hbi90c2V0LjEuaHRtbAppbmRleCA5NTFmZDBjLi43MzE5MmNkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vdHNldC4xLmh0bWwKKysrIGIvZG9jL2h0bWwvbWFuL3RzZXQuMS5odG1sCkBAIC0xLDcgKzEsNiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KIDwhLS0gCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzMSArMjYsMzIgQEAKICAgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBASWQ6IHRzZXQuMSx2IDEuMTkgMjAwNi8xMi8yNCAxNTowMDozMCB0b20gRXhwIEAKKyAgKiBASWQ6IHRzZXQuMSx2IDEuMjkgMjAxMy8xMi8yMSAyMjoxNTo1MyB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT50c2V0IDE8L1RJVExFPgogPGxpbmsgcmV2PW1hZGUgaHJlZj0ibWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmciPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiA8L0hFQUQ+CiA8Qk9EWT4KLTxIMT50c2V0IDE8L0gxPgotPEhSPgorPEgxIGNsYXNzPSJuby1oZWFkZXIiPnRzZXQgMTwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0idHNldC4xLmh0bWwiPnRzZXQoMSk8L0E+PC9TVFJPTkc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0c2V0LjEuaHRtbCI+dHNldCgxKTwvQT48L1NUUk9ORz4KIAogCiAKIAogPC9QUkU+Ci08SDI+TkFNRTwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1OQU1FIj5OQU1FPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPnRzZXQ8L1NUUk9ORz4sIDxTVFJPTkc+cmVzZXQ8L1NUUk9ORz4gLSB0ZXJtaW5hbCBpbml0aWFsaXphdGlvbgogCiAKIDwvUFJFPgotPEgyPlNZTk9QU0lTPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNZTk9QU0lTIj5TWU5PUFNJUzwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz50c2V0PC9TVFJPTkc+ICBbPFNUUk9ORz4tSVFWY3Fyc3c8L1NUUk9ORz5dIFs8U1RST05HPi08L1NUUk9ORz5dIFs8U1RST05HPi1lPC9TVFJPTkc+IDxFTT5jaDwvRU0+XSBbPFNUUk9ORz4taTwvU1RST05HPiA8RU0+Y2g8L0VNPl0gWzxTVFJPTkc+LWs8L1NUUk9ORz4gPEVNPmNoPC9FTT5dIFs8U1RST05HPi1tPC9TVFJPTkc+IDxFTT5tYXBwaW5nPC9FTT5dCiAgICAgICAgWzxFTT50ZXJtaW5hbDwvRU0+XQogICAgICAgIDxTVFJPTkc+cmVzZXQ8L1NUUk9ORz4gWzxTVFJPTkc+LUlRVmNxcnN3PC9TVFJPTkc+XSBbPFNUUk9ORz4tPC9TVFJPTkc+XSBbPFNUUk9ORz4tZTwvU1RST05HPiA8RU0+Y2g8L0VNPl0gWzxTVFJPTkc+LWk8L1NUUk9ORz4gPEVNPmNoPC9FTT5dIFs8U1RST05HPi1rPC9TVFJPTkc+IDxFTT5jaDwvRU0+XSBbPFNUUk9ORz4tbTwvU1RST05HPiA8RU0+bWFwcGluZzwvRU0+XQpAQCAtNTksNyArNTksNyBAQAogCiAKIDwvUFJFPgotPEgyPkRFU0NSSVBUSU9OPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L0gyPjxQUkU+CiAgICAgICAgPFNUUk9ORz5Uc2V0PC9TVFJPTkc+ICBpbml0aWFsaXplcyAgdGVybWluYWxzLiAgIDxTVFJPTkc+VHNldDwvU1RST05HPiAgZmlyc3QgZGV0ZXJtaW5lcyB0aGUKICAgICAgICB0eXBlIG9mIHRlcm1pbmFsIHRoYXQgeW91IGFyZSB1c2luZy4gICBUaGlzICBkZXRlcm1pbmF0aW9uCiAgICAgICAgaXMgZG9uZSBhcyBmb2xsb3dzLCB1c2luZyB0aGUgZmlyc3QgdGVybWluYWwgdHlwZSBmb3VuZC4KQEAgLTcwLDE4ICs3MCwxOCBAQAogCiAgICAgICAgMy4gIChCU0QgIHN5c3RlbXMgb25seS4pIFRoZSB0ZXJtaW5hbCB0eXBlIGFzc29jaWF0ZWQgd2l0aAogICAgICAgIHRoZSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgZGV2aWNlIGluICB0aGUgIDxFTT4vZXRjL3R0eXM8L0VNPiAgZmlsZS4KLSAgICAgICAoT24gTGludXggYW5kIFN5c3RlbS1WLWxpa2UgVU5JWGVzLCA8RU0+Z2V0dHk8L0VNPiBkb2VzIHRoaXMgam9iIGJ5Ci0gICAgICAgc2V0dGluZyA8U1RST05HPlRFUk08L1NUUk9ORz4gIGFjY29yZGluZyAgdG8gIHRoZSAgdHlwZSAgcGFzc2VkICB0byAgaXQgIGJ5Ci0gICAgICAgPEVNPi9ldGMvaW5pdHRhYjwvRU0+LikKKyAgICAgICAoT24gIFN5c3RlbS1WLWxpa2UgIFVOSVhlcyAgYW5kIHN5c3RlbXMgdXNpbmcgdGhhdCBjb252ZW4tCisgICAgICAgdGlvbiwgPEVNPmdldHR5PC9FTT4gZG9lcyB0aGlzIGpvYiBieSBzZXR0aW5nIDxTVFJPTkc+VEVSTTwvU1RST05HPiBhY2NvcmRpbmcgdG8gdGhlCisgICAgICAgdHlwZSBwYXNzZWQgdG8gaXQgYnkgPEVNPi9ldGMvaW5pdHRhYjwvRU0+LikKIAotICAgICAgIDQuIFRoZSBkZWZhdWx0IHRlcm1pbmFsIHR5cGUsIGBgdW5rbm93bicnLgorICAgICAgIDQuIFRoZSBkZWZhdWx0IHRlcm1pbmFsIHR5cGUsICJ1bmtub3duIi4KIAogICAgICAgIElmICB0aGUgIHRlcm1pbmFsICB0eXBlICB3YXMgbm90IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC0KICAgICAgICBsaW5lLCB0aGUgPFNUUk9ORz4tbTwvU1RST05HPiBvcHRpb24gbWFwcGluZ3MgYXJlICB0aGVuICBhcHBsaWVkICAoc2VlICB0aGUKICAgICAgICBzZWN0aW9uICA8U1RST05HPlRFUk1JTkFMPC9TVFJPTkc+ICA8U1RST05HPlRZUEU8L1NUUk9ORz4gIDxTVFJPTkc+TUFQUElORzwvU1RST05HPiAgZm9yICBtb3JlICBpbmZvcm1hdGlvbikuCiAgICAgICAgVGhlbiwgaWYgdGhlIHRlcm1pbmFsIHR5cGUgYmVnaW5zICB3aXRoICBhICBxdWVzdGlvbiAgbWFyawotICAgICAgIChgYD8nJyksIHRoZSB1c2VyIGlzIHByb21wdGVkIGZvciBjb25maXJtYXRpb24gb2YgdGhlIHRlci0KLSAgICAgICBtaW5hbCB0eXBlLiAgQW4gZW1wdHkgIHJlc3BvbnNlICBjb25maXJtcyAgdGhlICB0eXBlLCAgb3IsCisgICAgICAgKCI/IiksIHRoZSB1c2VyIGlzIHByb21wdGVkIGZvciBjb25maXJtYXRpb24gb2YgdGhlIHRlcm1pLQorICAgICAgIG5hbCB0eXBlLiAgIEFuICBlbXB0eSAgcmVzcG9uc2UgIGNvbmZpcm1zICB0aGUgIHR5cGUsICBvciwKICAgICAgICBhbm90aGVyICB0eXBlICBjYW4gYmUgZW50ZXJlZCB0byBzcGVjaWZ5IGEgbmV3IHR5cGUuICBPbmNlCiAgICAgICAgdGhlIHRlcm1pbmFsIHR5cGUgaGFzIGJlZW4gZGV0ZXJtaW5lZCwgdGhlIHRlcm1pbmZvICBlbnRyeQogICAgICAgIGZvciAgdGhlICB0ZXJtaW5hbCAgaXMgcmV0cmlldmVkLiAgSWYgbm8gdGVybWluZm8gZW50cnkgaXMKQEAgLTExNiw4ICsxMTYsOSBAQAogCiAgICAgICAgVGhlIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6CiAKLSAgICAgICA8U1RST05HPi1jPC9TVFJPTkc+ICAgU2V0ICBjb250cm9sICBjaGFyYWN0ZXJzIGFuZCBtb2Rlcy4gIDxTVFJPTkc+LWU8L1NUUk9ORz4gU2V0IHRoZSBlcmFzZQotICAgICAgICAgICAgY2hhcmFjdGVyIHRvIDxFTT5jaDwvRU0+LgorICAgICAgIDxTVFJPTkc+LWM8L1NUUk9ORz4gICBTZXQgY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBtb2Rlcy4KKworICAgICAgIDxTVFJPTkc+LWU8L1NUUk9ORz4gICBTZXQgdGhlIGVyYXNlIGNoYXJhY3RlciB0byA8RU0+Y2g8L0VNPi4KIAogICAgICAgIDxTVFJPTkc+LUk8L1NUUk9ORz4gICBEbyAgbm90ICBzZW5kICB0aGUgIHRlcm1pbmFsICBvciAgdGFiICBpbml0aWFsaXphdGlvbgogICAgICAgICAgICAgc3RyaW5ncyB0byB0aGUgdGVybWluYWwuCkBAIC0xMjYsMzkgKzEyNywzOSBAQAogCiAgICAgICAgPFNUUk9ORz4tazwvU1RST05HPiAgIFNldCB0aGUgbGluZSBraWxsIGNoYXJhY3RlciB0byA8RU0+Y2g8L0VNPi4KIAotICAgICAgIDxTVFJPTkc+LW08L1NUUk9ORz4gICBTcGVjaWZ5ICBhICBtYXBwaW5nICBmcm9tICBhIHBvcnQgdHlwZSB0byBhIHRlcm1pbmFsLgorICAgICAgIDxTVFJPTkc+LW08L1NUUk9ORz4gICBTcGVjaWZ5IGEgbWFwcGluZyBmcm9tIGEgcG9ydCAgdHlwZSAgdG8gIGEgIHRlcm1pbmFsLgogICAgICAgICAgICAgU2VlIHRoZSBzZWN0aW9uIDxTVFJPTkc+VEVSTUlOQUw8L1NUUk9ORz4gPFNUUk9ORz5UWVBFPC9TVFJPTkc+IDxTVFJPTkc+TUFQUElORzwvU1RST05HPiBmb3IgbW9yZSBpbmZvci0KICAgICAgICAgICAgIG1hdGlvbi4KIAotICAgICAgIDxTVFJPTkc+LVE8L1NUUk9ORz4gICBEbyAgbm90ICBkaXNwbGF5ICBhbnkgdmFsdWVzIGZvciB0aGUgZXJhc2UsIGludGVycnVwdAorICAgICAgIDxTVFJPTkc+LVE8L1NUUk9ORz4gICBEbyBub3QgZGlzcGxheSBhbnkgdmFsdWVzIGZvciAgdGhlICBlcmFzZSwgIGludGVycnVwdAogICAgICAgICAgICAgYW5kIGxpbmUga2lsbCBjaGFyYWN0ZXJzLiAgTm9ybWFsbHkgPFNUUk9ORz50c2V0PC9TVFJPTkc+IGRpc3BsYXlzIHRoZQotICAgICAgICAgICAgdmFsdWVzICBmb3IgIGNvbnRyb2wgY2hhcmFjdGVycyB3aGljaCBkaWZmZXIgZnJvbSB0aGUKKyAgICAgICAgICAgIHZhbHVlcyBmb3IgY29udHJvbCBjaGFyYWN0ZXJzIHdoaWNoIGRpZmZlciAgZnJvbSAgdGhlCiAgICAgICAgICAgICBzeXN0ZW0ncyBkZWZhdWx0IHZhbHVlcy4KIAotICAgICAgIDxTVFJPTkc+LXE8L1NUUk9ORz4gICBUaGUgdGVybWluYWwgdHlwZSBpcyBkaXNwbGF5ZWQgdG8gdGhlICBzdGFuZGFyZCAgb3V0LQotICAgICAgICAgICAgcHV0LCAgYW5kIHRoZSB0ZXJtaW5hbCBpcyBub3QgaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4KKyAgICAgICA8U1RST05HPi1xPC9TVFJPTkc+ICAgVGhlICB0ZXJtaW5hbCAgdHlwZSBpcyBkaXNwbGF5ZWQgdG8gdGhlIHN0YW5kYXJkIG91dC0KKyAgICAgICAgICAgIHB1dCwgYW5kIHRoZSB0ZXJtaW5hbCBpcyBub3QgaW5pdGlhbGl6ZWQgaW4gYW55ICB3YXkuCiAgICAgICAgICAgICBUaGUgb3B0aW9uIGAtJyBieSBpdHNlbGYgaXMgZXF1aXZhbGVudCBidXQgYXJjaGFpYy4KIAogICAgICAgIDxTVFJPTkc+LXI8L1NUUk9ORz4gICBQcmludCB0aGUgdGVybWluYWwgdHlwZSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0LgogCiAgICAgICAgPFNUUk9ORz4tczwvU1RST05HPiAgIFByaW50ICB0aGUgIHNlcXVlbmNlICBvZiBzaGVsbCBjb21tYW5kcyB0byBpbml0aWFsaXplCiAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPFNUUk9ORz5URVJNPC9TVFJPTkc+IHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuCi0gICAgICAgICAgICBTZWUgIHRoZSBzZWN0aW9uIDxTVFJPTkc+U0VUVElORzwvU1RST05HPiA8U1RST05HPlRIRTwvU1RST05HPiA8U1RST05HPkVOVklST05NRU5UPC9TVFJPTkc+IGZvciBkZXRhaWxzLgorICAgICAgICAgICAgU2VlIHRoZSBzZWN0aW9uIDxTVFJPTkc+U0VUVElORzwvU1RST05HPiA8U1RST05HPlRIRTwvU1RST05HPiA8U1RST05HPkVOVklST05NRU5UPC9TVFJPTkc+IGZvciBkZXRhaWxzLgogCiAgICAgICAgPFNUUk9ORz4tVjwvU1RST05HPiAgIHJlcG9ydHMgdGhlIHZlcnNpb24gb2YgbmN1cnNlcyB3aGljaCB3YXMgdXNlZCBpbiB0aGlzCiAgICAgICAgICAgICBwcm9ncmFtLCBhbmQgZXhpdHMuCiAKLSAgICAgICA8U1RST05HPi13PC9TVFJPTkc+ICAgUmVzaXplICB0aGUgIHdpbmRvdyAgdG8gIG1hdGNoICB0aGUgIHNpemUgZGVkdWNlZCB2aWEKKyAgICAgICA8U1RST05HPi13PC9TVFJPTkc+ICAgUmVzaXplIHRoZSB3aW5kb3cgIHRvICBtYXRjaCAgdGhlICBzaXplICBkZWR1Y2VkICB2aWEKICAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+LiAgIE5vcm1hbGx5ICB0aGlzICBoYXMgIG5vICBlZmZlY3QsICB1bmxlc3MKICAgICAgICAgICAgIDxTVFJPTkc+c2V0dXB0ZXJtPC9TVFJPTkc+IGlzIG5vdCBhYmxlIHRvIGRldGVjdCB0aGUgd2luZG93IHNpemUuCiAKICAgICAgICBUaGUgYXJndW1lbnRzIGZvciB0aGUgPFNUUk9ORz4tZTwvU1RST05HPiwgPFNUUk9ORz4taTwvU1RST05HPiwgYW5kIDxTVFJPTkc+LWs8L1NUUk9ORz4gb3B0aW9ucyBtYXkgZWl0aGVyIGJlCi0gICAgICAgZW50ZXJlZCBhcyBhY3R1YWwgY2hhcmFjdGVycyBvciBieSB1c2luZyB0aGUgIGBoYXQnICBub3RhLQotICAgICAgIHRpb24sIGkuZS4gY29udHJvbC1oIG1heSBiZSBzcGVjaWZpZWQgYXMgYGBeSCcnIG9yIGBgXmgnJy4KKyAgICAgICBlbnRlcmVkICBhcyAgYWN0dWFsIGNoYXJhY3RlcnMgb3IgYnkgdXNpbmcgdGhlIGBoYXQnIG5vdGEtCisgICAgICAgdGlvbiwgaS5lLiwgY29udHJvbC1oIG1heSBiZSBzcGVjaWZpZWQgYXMgIl5IIiBvciAiXmgiLgogCiAKIDwvUFJFPgotPEgyPlNFVFRJTkcgVEhFIEVOVklST05NRU5UPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVNFVFRJTkctVEhFLUVOVklST05NRU5UIj5TRVRUSU5HIFRIRSBFTlZJUk9OTUVOVDwvYT48L0gyPjxQUkU+CiAgICAgICAgSXQgaXMgb2Z0ZW4gZGVzaXJhYmxlICB0byAgZW50ZXIgIHRoZSAgdGVybWluYWwgIHR5cGUgIGFuZAogICAgICAgIGluZm9ybWF0aW9uICBhYm91dCAgdGhlICB0ZXJtaW5hbCdzICBjYXBhYmlsaXRpZXMgaW50byB0aGUKICAgICAgICBzaGVsbCdzIGVudmlyb25tZW50LiAgVGhpcyBpcyBkb25lIHVzaW5nIHRoZSA8U1RST05HPi1zPC9TVFJPTkc+IG9wdGlvbi4KQEAgLTE2Niw3ICsxNjcsNyBAQAogICAgICAgIFdoZW4gdGhlIDxTVFJPTkc+LXM8L1NUUk9ORz4gb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGNvbW1hbmRzIHRvIGVudGVyIHRoZQogICAgICAgIGluZm9ybWF0aW9uICBpbnRvICB0aGUgIHNoZWxsJ3MgZW52aXJvbm1lbnQgYXJlIHdyaXR0ZW4gdG8KICAgICAgICB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgSWYgdGhlIDxTVFJPTkc+U0hFTEw8L1NUUk9ORz4gZW52aXJvbm1lbnRhbCAgdmFyaWFibGUKLSAgICAgICBlbmRzIGluIGBgY3NoJycsIHRoZSBjb21tYW5kcyBhcmUgZm9yIDxTVFJPTkc+Y3NoPC9TVFJPTkc+LCBvdGhlcndpc2UsIHRoZXkKKyAgICAgICBlbmRzICBpbiAgImNzaCIsIHRoZSBjb21tYW5kcyBhcmUgZm9yIDxTVFJPTkc+Y3NoPC9TVFJPTkc+LCBvdGhlcndpc2UsIHRoZXkKICAgICAgICBhcmUgZm9yIDxTVFJPTkc+c2g8L1NUUk9ORz4uICBOb3RlLCB0aGUgPFNUUk9ORz5jc2g8L1NUUk9ORz4gIGNvbW1hbmRzICBzZXQgIGFuZCAgdW5zZXQgIHRoZQogICAgICAgIHNoZWxsICB2YXJpYWJsZSAgPFNUUk9ORz5ub2dsb2I8L1NUUk9ORz4sICBsZWF2aW5nIGl0IHVuc2V0LiAgVGhlIGZvbGxvd2luZwogICAgICAgIGxpbmUgaW4gdGhlIDxTVFJPTkc+LmxvZ2luPC9TVFJPTkc+IG9yIDxTVFJPTkc+LnByb2ZpbGU8L1NUUk9ORz4gZmlsZXMgd2lsbCAgaW5pdGlhbGl6ZSAgdGhlCkBAIC0xNzYsNyArMTc3LDcgQEAKIAogCiA8L1BSRT4KLTxIMj5URVJNSU5BTCBUWVBFIE1BUFBJTkc8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItVEVSTUlOQUwtVFlQRS1NQVBQSU5HIj5URVJNSU5BTCBUWVBFIE1BUFBJTkc8L2E+PC9IMj48UFJFPgogICAgICAgIFdoZW4gdGhlIHRlcm1pbmFsIGlzIG5vdCBoYXJkd2lyZWQgaW50byB0aGUgc3lzdGVtIChvciB0aGUKICAgICAgICBjdXJyZW50IHN5c3RlbSBpbmZvcm1hdGlvbiBpcyBpbmNvcnJlY3QpIHRoZSB0ZXJtaW5hbCB0eXBlCiAgICAgICAgZGVyaXZlZCAgZnJvbSB0aGUgPEVNPi9ldGMvdHR5czwvRU0+IGZpbGUgb3IgdGhlIDxTVFJPTkc+VEVSTTwvU1RST05HPiBlbnZpcm9ubWVudGFsCkBAIC0xODYsMjEgKzE4NywyMSBAQAogICAgICAgIHRlcm1pbmFsIHVzZWQgb24gc3VjaCBwb3J0cy4KIAogICAgICAgIFRoZSAgcHVycG9zZSAgb2YgIHRoZSA8U1RST05HPi1tPC9TVFJPTkc+IG9wdGlvbiBpcyB0byBtYXAgZnJvbSBzb21lIHNldCBvZgotICAgICAgIGNvbmRpdGlvbnMgdG8gYSB0ZXJtaW5hbCB0eXBlLCB0aGF0IGlzLCB0byB0ZWxsIDxTVFJPTkc+dHNldDwvU1RST05HPiAgYGBJZgorICAgICAgIGNvbmRpdGlvbnMgdG8gYSB0ZXJtaW5hbCB0eXBlLCB0aGF0IGlzLCB0byB0ZWxsICA8U1RST05HPnRzZXQ8L1NUUk9ORz4gICJJZgogICAgICAgIEknbSAgb24gdGhpcyBwb3J0IGF0IGEgcGFydGljdWxhciBzcGVlZCwgZ3Vlc3MgdGhhdCBJJ20gb24KLSAgICAgICB0aGF0IGtpbmQgb2YgdGVybWluYWwnJy4KKyAgICAgICB0aGF0IGtpbmQgb2YgdGVybWluYWwiLgogCiAgICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSA8U1RST05HPi1tPC9TVFJPTkc+IG9wdGlvbiBjb25zaXN0cyBvZiBhbiBvcHRpb25hbCBwb3J0CiAgICAgICAgdHlwZSwgYW4gb3B0aW9uYWwgb3BlcmF0b3IsIGFuIG9wdGlvbmFsIGJhdWQgcmF0ZSBzcGVjaWZpLQotICAgICAgIGNhdGlvbiwgYW4gb3B0aW9uYWwgY29sb24gKGBgOicnKSBjaGFyYWN0ZXIgYW5kIGEgdGVybWluYWwKKyAgICAgICBjYXRpb24sIGFuIG9wdGlvbmFsIGNvbG9uICgiOiIpIGNoYXJhY3RlciBhbmQgIGEgIHRlcm1pbmFsCiAgICAgICAgdHlwZS4gICBUaGUgcG9ydCB0eXBlIGlzIGEgc3RyaW5nIChkZWxpbWl0ZWQgYnkgZWl0aGVyIHRoZQogICAgICAgIG9wZXJhdG9yIG9yIHRoZSBjb2xvbiBjaGFyYWN0ZXIpLiAgVGhlIG9wZXJhdG9yIG1heSBiZSBhbnkKLSAgICAgICBjb21iaW5hdGlvbiBvZiBgYCZndDsnJywgYGAmbHQ7JycsIGBgQCcnLCBhbmQgYGAhJyc7IGBgJmd0OycnIG1lYW5zCi0gICAgICAgZ3JlYXRlciB0aGFuLCBgYCZsdDsnJyBtZWFucyBsZXNzIHRoYW4sIGBgQCcnIG1lYW5zIGVxdWFsICB0bwotICAgICAgIGFuZCBgYCEnJyBpbnZlcnRzIHRoZSBzZW5zZSBvZiB0aGUgdGVzdC4gIFRoZSBiYXVkIHJhdGUgaXMKLSAgICAgICBzcGVjaWZpZWQgYXMgYSBudW1iZXIgYW5kIGlzIGNvbXBhcmVkIHdpdGggIHRoZSAgc3BlZWQgIG9mCi0gICAgICAgdGhlICBzdGFuZGFyZCAgZXJyb3IgIG91dHB1dCAgKHdoaWNoIHNob3VsZCBiZSB0aGUgY29udHJvbAotICAgICAgIHRlcm1pbmFsKS4gIFRoZSB0ZXJtaW5hbCB0eXBlIGlzIGEgc3RyaW5nLgorICAgICAgIGNvbWJpbmF0aW9uICBvZiAgIiZndDsiLCAiJmx0OyIsICJAIiwgYW5kICIhIjsgIiZndDsiIG1lYW5zIGdyZWF0ZXIKKyAgICAgICB0aGFuLCAiJmx0OyIgbWVhbnMgbGVzcyB0aGFuLCAiQCIgIG1lYW5zICBlcXVhbCAgdG8gIGFuZCAgIiEiCisgICAgICAgaW52ZXJ0cyB0aGUgc2Vuc2Ugb2YgdGhlIHRlc3QuICBUaGUgYmF1ZCByYXRlIGlzIHNwZWNpZmllZAorICAgICAgIGFzIGEgbnVtYmVyIGFuZCBpcyBjb21wYXJlZCB3aXRoIHRoZSBzcGVlZCBvZiB0aGUgc3RhbmRhcmQKKyAgICAgICBlcnJvciAgb3V0cHV0ICh3aGljaCBzaG91bGQgYmUgdGhlIGNvbnRyb2wgdGVybWluYWwpLiAgVGhlCisgICAgICAgdGVybWluYWwgdHlwZSBpcyBhIHN0cmluZy4KIAogICAgICAgIElmIHRoZSB0ZXJtaW5hbCB0eXBlIGlzIG5vdCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwKICAgICAgICB0aGUgIDxTVFJPTkc+LW08L1NUUk9ORz4gbWFwcGluZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIHRlcm1pbmFsIHR5cGUuICBJZiB0aGUKQEAgLTIzMSwxMiArMjMyLDEyIEBACiAgICAgICAgYXJndW1lbnQuICBBbHNvLCB0byBhdm9pZCBwcm9ibGVtcyAgd2l0aCAgbWV0YS1jaGFyYWN0ZXJzLAogICAgICAgIGl0ICBpcyAgc3VnZ2VzdGVkICB0aGF0ICB0aGUgIGVudGlyZSA8U1RST05HPi1tPC9TVFJPTkc+IG9wdGlvbiBhcmd1bWVudCBiZQogICAgICAgIHBsYWNlZCB3aXRoaW4gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMsIGFuZCB0aGF0IDxTVFJPTkc+Y3NoPC9TVFJPTkc+ICB1c2VycwotICAgICAgIGluc2VydCAgYSAgYmFja3NsYXNoIGNoYXJhY3RlciAoYGBcJycpIGJlZm9yZSBhbnkgZXhjbGFtYS0KLSAgICAgICB0aW9uIG1hcmtzIChgYCEnJykuCisgICAgICAgaW5zZXJ0ICBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIgKCJcIikgYmVmb3JlIGFueSBleGNsYW1hdGlvbgorICAgICAgIG1hcmtzICgiISIpLgogCiAKIDwvUFJFPgotPEgyPkhJU1RPUlk8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItSElTVE9SWSI+SElTVE9SWTwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhlIDxTVFJPTkc+dHNldDwvU1RST05HPiBjb21tYW5kIGFwcGVhcmVkIGluIEJTRCAzLjAuICBUaGUgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+ICBpbXBsZS0KICAgICAgICBtZW50YXRpb24gIHdhcyBsaWdodGx5IGFkYXB0ZWQgZnJvbSB0aGUgNC40QlNEIHNvdXJjZXMgZm9yCiAgICAgICAgYSB0ZXJtaW5mbyBlbnZpcm9ubWVudCBieSBFcmljIFMuIFJheW1vbmQgJmx0O2VzckBzbmFyay50aHlyLQpAQCAtMjQ0LDE3ICsyNDUsMTcgQEAKIAogCiA8L1BSRT4KLTxIMj5DT01QQVRJQklMSVRZPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLUNPTVBBVElCSUxJVFkiPkNPTVBBVElCSUxJVFk8L2E+PC9IMj48UFJFPgogICAgICAgIFRoZSAgPFNUUk9ORz50c2V0PC9TVFJPTkc+ICB1dGlsaXR5IGhhcyBiZWVuIHByb3ZpZGVkIGZvciBiYWNrd2FyZC1jb21wYXRpLQogICAgICAgIGJpbGl0eSB3aXRoIEJTRCBlbnZpcm9ubWVudHMgKHVuZGVyICBtb3N0ICBtb2Rlcm4gIFVOSVhlcywKLSAgICAgICA8U1RST05HPi9ldGMvaW5pdHRhYjwvU1RST05HPiAgYW5kICA8U1RST05HPjxBIEhSRUY9ImdldHR5LjEuaHRtbCI+Z2V0dHkoMSk8L0E+PC9TVFJPTkc+IGNhbiBzZXQgPFNUUk9ORz5URVJNPC9TVFJPTkc+IGFwcHJvcHJpYXRlbHkgZm9yCisgICAgICAgPFNUUk9ORz4vZXRjL2luaXR0YWI8L1NUUk9ORz4gIGFuZCAgPFNUUk9ORz5nZXR0eSgxKTwvU1RST05HPiBjYW4gc2V0IDxTVFJPTkc+VEVSTTwvU1RST05HPiBhcHByb3ByaWF0ZWx5IGZvcgogICAgICAgIGVhY2ggZGlhbC11cCBsaW5lOyB0aGlzICBvYnZpYXRlcyAgd2hhdCAgd2FzICA8U1RST05HPnRzZXQ8L1NUUk9ORz4ncyAgbW9zdAogICAgICAgIGltcG9ydGFudCAgdXNlKS4gICBUaGlzIGltcGxlbWVudGF0aW9uIGJlaGF2ZXMgbGlrZSA0LjRCU0QKICAgICAgICB0c2V0LCB3aXRoIGEgZmV3IGV4Y2VwdGlvbnMgc3BlY2lmaWVkIGhlcmUuCiAKICAgICAgICBUaGUgPFNUUk9ORz4tUzwvU1RST05HPiBvcHRpb24gb2YgQlNEIHRzZXQgbm8gbG9uZ2VyIHdvcmtzOyAgaXQgIHByaW50cyAgYW4KICAgICAgICBlcnJvciBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgZGllcy4gIFRoZSA8U1RST05HPi1zPC9TVFJPTkc+IG9wdGlvbiBvbmx5IHNldHMKLSAgICAgICA8U1RST05HPlRFUk08L1NUUk9ORz4sIG5vdCA8U1RST05HPlRFUk1DQVA8L1NUUk9ORz4uICBCb3RoIHRoZXNlICBjaGFuZ2VzICBhcmUgIGJlY2F1c2UgIHRoZQorICAgICAgIDxTVFJPTkc+VEVSTTwvU1RST05HPiwgbm90IDxTVFJPTkc+VEVSTUNBUDwvU1RST05HPi4gIEJvdGggb2YgdGhlc2UgY2hhbmdlcyBhcmUgYmVjYXVzZSAgdGhlCiAgICAgICAgPFNUUk9ORz5URVJNQ0FQPC9TVFJPTkc+ICB2YXJpYWJsZSAgaXMgIG5vIGxvbmdlciBzdXBwb3J0ZWQgdW5kZXIgdGVybWluZm8tCiAgICAgICAgYmFzZWQgPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+LCB3aGljaCBtYWtlcyA8U1RST05HPnRzZXQ8L1NUUk9ORz4gPFNUUk9ORz4tUzwvU1RST05HPiB1c2VsZXNzICh3ZSBtYWRlIGl0IGRpZQogICAgICAgIG5vaXNpbHkgcmF0aGVyIHRoYW4gc2lsZW50bHkgaW5kdWNlIGxvc3NhZ2UpLgpAQCAtMjcwLDcgKzI3MSw3IEBACiAgICAgICAgPFNUUk9ORz4tZDwvU1RST05HPiwgYW5kIDxTVFJPTkc+LXA8L1NUUk9ORz4gb3B0aW9ucyBhcmUgc2ltaWxhcmx5IG5vdCBkb2N1bWVudGVkIG9yIHVzZWZ1bCwKICAgICAgICBidXQgd2VyZSByZXRhaW5lZCBhcyB0aGV5IGFwcGVhciB0byBiZSBpbiB3aWRlc3ByZWFkICB1c2UuCiAgICAgICAgSXQgIGlzICBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IGFueSB1c2FnZSBvZiB0aGVzZSB0aHJlZQotICAgICAgIG9wdGlvbnMgYmUgY2hhbmdlZCB0byB1c2UgdGhlIDxTVFJPTkc+LW08L1NUUk9ORz4gb3B0aW9uIGluc3RlYWQuICAgVGhlICAtbgorICAgICAgIG9wdGlvbnMgYmUgY2hhbmdlZCB0byB1c2UgdGhlIDxTVFJPTkc+LW08L1NUUk9ORz4gb3B0aW9uIGluc3RlYWQuICAgVGhlICA8U1RST05HPi1uPC9TVFJPTkc+CiAgICAgICAgb3B0aW9uICByZW1haW5zLCBidXQgaGFzIG5vIGVmZmVjdC4gIFRoZSA8U1RST05HPi1hZG5wPC9TVFJPTkc+IG9wdGlvbnMgYXJlCiAgICAgICAgdGhlcmVmb3JlIG9taXR0ZWQgZnJvbSB0aGUgdXNhZ2Ugc3VtbWFyeSBhYm92ZS4KIApAQCAtMjg2LDcgKzI4Nyw3IEBACiAKIAogPC9QUkU+Ci08SDI+RU5WSVJPTk1FTlQ8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRU5WSVJPTk1FTlQiPkVOVklST05NRU5UPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgPFNUUk9ORz50c2V0PC9TVFJPTkc+IGNvbW1hbmQgdXNlcyB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAKICAgICAgICBTSEVMTApAQCAtMzA0LDcgKzMwNSw3IEBACiAKIAogPC9QUkU+Ci08SDI+RklMRVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItRklMRVMiPkZJTEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICAvZXRjL3R0eXMKICAgICAgICAgICAgIHN5c3RlbSAgcG9ydCAgbmFtZSAgdG8gdGVybWluYWwgdHlwZSBtYXBwaW5nIGRhdGFiYXNlCiAgICAgICAgICAgICAoQlNEIHZlcnNpb25zIG9ubHkpLgpAQCAtMzE0LDIwICszMTUsMjkgQEAKIAogCiA8L1BSRT4KLTxIMj5TRUUgQUxTTzwvSDI+PFBSRT4KLSAgICAgICA8U1RST05HPjxBIEhSRUY9ImNzaC4xLmh0bWwiPmNzaCgxKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ic2guMS5odG1sIj5zaCgxKTwvQT48L1NUUk9ORz4sIDxTVFJPTkc+PEEgSFJFRj0ic3R0eS4xLmh0bWwiPnN0dHkoMSk8L0E+PC9TVFJPTkc+LCAgPFNUUk9ORz48QSBIUkVGPSJjdXJzX3Rlcm1pbmZvLjN4Lmh0bWwiPmN1cnNfdGVybWluZm8oM3gpPC9BPjwvU1RST05HPiwgIDxTVFJPTkc+PEEgSFJFRj0idHR5LjQuaHRtbCI+dHR5KDQpPC9BPjwvU1RST05HPiwgIHRlci0KLSAgICAgICA8U1RST05HPjxBIEhSRUY9Im1pbmZvLjUuaHRtbCI+bWluZm8oNSk8L0E+PC9TVFJPTkc+LCA8U1RST05HPjxBIEhSRUY9InR0eXMuNS5odG1sIj50dHlzKDUpPC9BPjwvU1RST05HPiwgPFNUUk9ORz48QSBIUkVGPSJlbnZpcm9uLjcuaHRtbCI+ZW52aXJvbig3KTwvQT48L1NUUk9ORz4KKzxIMj48YSBuYW1lPSJoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9IMj48UFJFPgorICAgICAgIDxTVFJPTkc+Y3NoKDEpPC9TVFJPTkc+LCAgIDxTVFJPTkc+c2goMSk8L1NUUk9ORz4sICAgPFNUUk9ORz5zdHR5KDEpPC9TVFJPTkc+LCAgIDxTVFJPTkc+PEEgSFJFRj0iY3Vyc190ZXJtaW5mby4zeC5odG1sIj5jdXJzX3Rlcm1pbmZvKDN4KTwvQT48L1NUUk9ORz4sICAgPFNUUk9ORz50dHkoNCk8L1NUUk9ORz4sCisgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ0ZXJtaW5mby41Lmh0bWwiPnRlcm1pbmZvKDUpPC9BPjwvU1RST05HPiwgPFNUUk9ORz50dHlzKDUpPC9TVFJPTkc+LCA8U1RST05HPmVudmlyb24oNyk8L1NUUk9ORz4KIAotICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDUuNiAocGF0Y2ggMjAwODEwMTEpLgorICAgICAgIFRoaXMgZGVzY3JpYmVzIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPiB2ZXJzaW9uIDYuMCAocGF0Y2ggMjAxNTA4MDgpLgogCiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0idHNldC4xLmh0bWwiPnRzZXQoMSk8L0E+PC9TVFJPTkc+CiA8L1BSRT4KLTxIUj4KLTxBRERSRVNTPgotTWFuKDEpIG91dHB1dCBjb252ZXJ0ZWQgd2l0aAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYWMudWNpLmVkdS9pbmRpdi9laG9vZC9tYW4yaHRtbC5odG1sIj5tYW4yaHRtbDwvYT4KLTwvQUREUkVTUz4KKzxkaXYgY2xhc3M9Im5hdiI+Cis8dWw+Cis8bGk+PGEgaHJlZj0iI2gyLU5BTUUiPk5BTUU8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU1lOT1BTSVMiPlNZTk9QU0lTPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLURFU0NSSVBUSU9OIj5ERVNDUklQVElPTjwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRVRUSU5HLVRIRS1FTlZJUk9OTUVOVCI+U0VUVElORyBUSEUgRU5WSVJPTk1FTlQ8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItVEVSTUlOQUwtVFlQRS1NQVBQSU5HIj5URVJNSU5BTCBUWVBFIE1BUFBJTkc8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItSElTVE9SWSI+SElTVE9SWTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1DT01QQVRJQklMSVRZIj5DT01QQVRJQklMSVRZPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLUVOVklST05NRU5UIj5FTlZJUk9OTUVOVDwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1GSUxFUyI+RklMRVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvbGk+Cis8L3VsPgorPC9kaXY+CiA8L0JPRFk+CiA8L0hUTUw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tYW4vd3Jlc2l6ZS4zeC5odG1sIGIvZG9jL2h0bWwvbWFuL3dyZXNpemUuM3guaHRtbAppbmRleCAzZTRlZDM1Li44ZTk4NmNkIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9tYW4vd3Jlc2l6ZS4zeC5odG1sCisrKyBiL2RvYy9odG1sL21hbi93cmVzaXplLjN4Lmh0bWwKQEAgLTEsNyArMSw2IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPgogPCEtLSAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDQ4ICsyNyw0OSBAQAogICAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NgotICAqIEBJZDogd3Jlc2l6ZS4zeCx2IDEuOSAyMDA2LzAyLzI1IDIxOjQ3OjA2IHRvbSBFeHAgQAorICAqIEBJZDogd3Jlc2l6ZS4zeCx2IDEuMTMgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwIEAKIC0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KIDxIVE1MPgogPEhFQUQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9Ik1hbnBhZ2UgY29udmVydGVkIGJ5IG1hbjJodG1sIC0gc2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL3JlYWRtZS5odG1sI290aGVyc19zY3JpcHRzIj4KIDxUSVRMRT53cmVzaXplIDN4PC9USVRMRT4KIDxsaW5rIHJldj1tYWRlIGhyZWY9Im1haWx0bzpidWctbmN1cnNlc0BnbnUub3JnIj4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogPC9IRUFEPgogPEJPRFk+Ci08SDE+d3Jlc2l6ZSAzeDwvSDE+Ci08SFI+Cis8SDEgY2xhc3M9Im5vLWhlYWRlciI+d3Jlc2l6ZSAzeDwvSDE+CiA8UFJFPgotPCEtLSBNYW5wYWdlIGNvbnZlcnRlZCBieSBtYW4yaHRtbCAzLjAuMSAtLT4KIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUUk9ORz48QSBIUkVGPSJ3cmVzaXplLjN4Lmh0bWwiPndyZXNpemUoM3gpPC9BPjwvU1RST05HPgogCiAKIAogCiA8L1BSRT4KLTxIMj5OQU1FPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLU5BTUUiPk5BTUU8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+d3Jlc2l6ZTwvU1RST05HPiAtIHJlc2l6ZSBhIGN1cnNlcyB3aW5kb3cKIAogCiA8L1BSRT4KLTxIMj5TWU5PUFNJUzwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9IMj48UFJFPgogICAgICAgIDxTVFJPTkc+I2luY2x1ZGU8L1NUUk9ORz4gPFNUUk9ORz4mbHQ7Y3Vyc2VzLmgmZ3Q7PC9TVFJPTkc+CiAKICAgICAgICA8U1RST05HPmludDwvU1RST05HPiA8U1RST05HPndyZXNpemUoV0lORE9XPC9TVFJPTkc+IDxTVFJPTkc+Kndpbiw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5saW5lcyw8L1NUUk9ORz4gPFNUUk9ORz5pbnQ8L1NUUk9ORz4gPFNUUk9ORz5jb2x1bW5zKTs8L1NUUk9ORz4KIAogCiA8L1BSRT4KLTxIMj5ERVNDUklQVElPTjwvSDI+PFBSRT4KLSAgICAgICBUaGUgIDxTVFJPTkc+d3Jlc2l6ZTwvU1RST05HPiAgZnVuY3Rpb24gIHJlYWxsb2NhdGVzIHN0b3JhZ2UgZm9yIGFuIDxTVFJPTkc+bmN1cnNlczwvU1RST05HPgotICAgICAgIHdpbmRvdyB0byBhZGp1c3QgaXRzIGRpbWVuc2lvbnMgdG8gdGhlICBzcGVjaWZpZWQgIHZhbHVlcy4KLSAgICAgICBJZiBlaXRoZXIgZGltZW5zaW9uIGlzIGxhcmdlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlcywgdGhlCi0gICAgICAgd2luZG93J3MgZGF0YSBpcyBmaWxsZWQgd2l0aCBibGFua3MgdGhhdCBoYXZlIHRoZSAgY3VycmVudAotICAgICAgIGJhY2tncm91bmQgIHJlbmRpdGlvbiAgKGFzICBzZXQgIGJ5IDxTVFJPTkc+d2JrZ25kc2V0PC9TVFJPTkc+KSBtZXJnZWQgaW50bwotICAgICAgIHRoZW0uCis8SDI+PGEgbmFtZT0iaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvSDI+PFBSRT4KKyAgICAgICBUaGlzICBpcyAgYW4gIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuICBJdCByZWFsbG8tCisgICAgICAgY2F0ZXMgc3RvcmFnZSBmb3IgYW4gPFNUUk9ORz5uY3Vyc2VzPC9TVFJPTkc+IHdpbmRvdyB0byBhZGp1c3QgIGl0cyAgZGltZW4tCisgICAgICAgc2lvbnMgIHRvICB0aGUgIHNwZWNpZmllZCAgdmFsdWVzLiAgSWYgZWl0aGVyIGRpbWVuc2lvbiBpcworICAgICAgIGxhcmdlciB0aGFuIHRoZSAgY3VycmVudCAgdmFsdWVzLCAgdGhlICB3aW5kb3cncyAgZGF0YSAgaXMKKyAgICAgICBmaWxsZWQgd2l0aCBibGFua3MgdGhhdCBoYXZlIHRoZSBjdXJyZW50IGJhY2tncm91bmQgcmVuZGktCisgICAgICAgdGlvbiAoYXMgc2V0IGJ5IDxTVFJPTkc+d2JrZ2RzZXQ8L1NUUk9ORz4pIG1lcmdlZCBpbnRvIHRoZW0uCiAKIAogPC9QUkU+Ci08SDI+UkVUVVJOIFZBTFVFPC9IMj48UFJFPgorPEgyPjxhIG5hbWU9ImgyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgaW50ZWdlciA8U1RST05HPkVSUjwvU1RST05HPiB1cG9uIGZhaWx1cmUgIGFuZCAgPFNUUk9ORz5PSzwvU1RST05HPgogICAgICAgIG9uIHN1Y2Nlc3MuICBJdCB3aWxsIGZhaWwgaWYgZWl0aGVyIG9mIHRoZSBkaW1lbnNpb25zIGxlc3MKICAgICAgICB0aGFuIG9yIGVxdWFsICB0byAgemVybywgIG9yICBpZiAgYW4gIGVycm9yICBvY2N1cnMgIHdoaWxlCkBAIC03Nyw3ICs3Nyw3IEBACiAKIAogPC9QUkU+Ci08SDI+Tk9URVM8L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItTk9URVMiPk5PVEVTPC9hPjwvSDI+PFBSRT4KICAgICAgICBUaGUgb25seSByZXN0cmljdGlvbiBwbGFjZWQgb24gdGhlIGRpbWVuc2lvbnMgaXMgdGhhdCB0aGV5CiAgICAgICAgYmUgZ3JlYXRlciB0aGFuIHplcm8uICBUaGUgZGltZW5zaW9ucyBhcmUgbm90IGNvbXBhcmVkICB0bwogICAgICAgIDxTVFJPTkc+Y3Vyc2VzPC9TVFJPTkc+ICAgc2NyZWVuICAgZGltZW5zaW9ucyAgdG8gIHNpbXBsaWZ5ICB0aGUgIGxvZ2ljICBvZgpAQCAtODYsMTIgKzg2LDEyIEBACiAKIAogPC9QUkU+Ci08SDI+U0VFIEFMU088L0gyPjxQUkU+Cis8SDI+PGEgbmFtZT0iaDItU0VFLUFMU08iPlNFRSBBTFNPPC9hPjwvSDI+PFBSRT4KICAgICAgICA8U1RST05HPjxBIEhSRUY9InJlc2l6ZXRlcm0uM3guaHRtbCI+cmVzaXpldGVybSgzeCk8L0E+PC9TVFJPTkc+LgogCiAKIDwvUFJFPgotPEgyPkFVVEhPUjwvSDI+PFBSRT4KKzxIMj48YSBuYW1lPSJoMi1BVVRIT1IiPkFVVEhPUjwvYT48L0gyPjxQUkU+CiAgICAgICAgVGhvbWFzIERpY2tleSAoZnJvbSBhbiBlcXVpdmFsZW50IGZ1bmN0aW9uIHdyaXR0ZW4gaW4gMTk4OAogICAgICAgIGZvciBCU0QgY3Vyc2VzKS4KIApAQCAtOTksMTAgKzk5LDE2IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVFJPTkc+PEEgSFJFRj0id3Jlc2l6ZS4zeC5odG1sIj53cmVzaXplKDN4KTwvQT48L1NUUk9ORz4KIDwvUFJFPgotPEhSPgotPEFERFJFU1M+Ci1NYW4oMSkgb3V0cHV0IGNvbnZlcnRlZCB3aXRoCi08YSBocmVmPSJodHRwOi8vd3d3Lm9hYy51Y2kuZWR1L2luZGl2L2Vob29kL21hbjJodG1sLmh0bWwiPm1hbjJodG1sPC9hPgotPC9BRERSRVNTPgorPGRpdiBjbGFzcz0ibmF2Ij4KKzx1bD4KKzxsaT48YSBocmVmPSIjaDItTkFNRSI+TkFNRTwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TWU5PUFNJUyI+U1lOT1BTSVM8L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItREVTQ1JJUFRJT04iPkRFU0NSSVBUSU9OPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLVJFVFVSTi1WQUxVRSI+UkVUVVJOIFZBTFVFPC9hPjwvbGk+Cis8bGk+PGEgaHJlZj0iI2gyLU5PVEVTIj5OT1RFUzwvYT48L2xpPgorPGxpPjxhIGhyZWY9IiNoMi1TRUUtQUxTTyI+U0VFIEFMU088L2E+PC9saT4KKzxsaT48YSBocmVmPSIjaDItQVVUSE9SIj5BVVRIT1I8L2E+PC9saT4KKzwvdWw+Cis8L2Rpdj4KIDwvQk9EWT4KIDwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL25jdXJzZXMtaW50cm8uaHRtbCBiL2RvYy9odG1sL25jdXJzZXMtaW50cm8uaHRtbAppbmRleCA0NTFlN2FiLi5hNmNkNDBjIDEwMDY0NAotLS0gYS9kb2MvaHRtbC9uY3Vyc2VzLWludHJvLmh0bWwKKysrIGIvZG9jL2h0bWwvbmN1cnNlcy1pbnRyby5odG1sCkBAIC0xLDggKzEsOCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAzLjAvL0VOIj4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiI+CiA8IS0tCi0gICRJZDogbmN1cnNlcy1pbnRyby5odG1sLHYgMS40MyAyMDA3LzAzLzAzIDE5OjMxOjUwIHRvbSBFeHAgJAorICAkSWQ6IG5jdXJzZXMtaW50cm8uaHRtbCx2IDEuNDYgMjAxMy8wNS8xNyAyMzoyOToyNyB0b20gRXhwICQKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQzMSw2ICs0MzEsNyBAQAogSGVyZSBpcyBhIHNhbXBsZSBwcm9ncmFtIHRvIG1vdGl2YXRlIHRoZSBkaXNjdXNzaW9uOgogCiA8UFJFPgorI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwogI2luY2x1ZGUgJmx0O2N1cnNlcy5oJmd0OwogI2luY2x1ZGUgJmx0O3NpZ25hbC5oJmd0OwogCmRpZmYgLS1naXQgYS9kb2MvbmN1cnNlcy1pbnRyby5kb2MgYi9kb2MvbmN1cnNlcy1pbnRyby5kb2MKaW5kZXggODUxNzlkMS4uMWQ3MmY4MCAxMDA2NDQKLS0tIGEvZG9jL25jdXJzZXMtaW50cm8uZG9jCisrKyBiL2RvYy9uY3Vyc2VzLWludHJvLmRvYwpAQCAtMzMyLDYgKzMzMiw3IEBACiAgICBmdW5jdGlvbiBuYW1lcyBhbmQgcGFyYW1ldGVycyBhcyBtZW50aW9uZWQgYWJvdmUuCiAKICAgIEhlcmUgaXMgYSBzYW1wbGUgcHJvZ3JhbSB0byBtb3RpdmF0ZSB0aGUgZGlzY3Vzc2lvbjoKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxjdXJzZXMuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KIApkaWZmIC0tZ2l0IGEvZWRpdF9tYW4uc2VkIGIvZWRpdF9tYW4uc2VkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWM3YTc3Li4wMDAwMDAwCi0tLSBhL2VkaXRfbWFuLnNlZAorKysgL2Rldi9udWxsCkBAIC0xLDQyNiArMCwwIEBACi0jIERvIHRoZSBUSCBsaW5lcwotcy9USCBcPGNhcHRvaW5mbyAxTSAiIi9USCBjYXB0b2luZm8gMSAiIi8KLXMvVEggXDxjbGVhciAxICIiL1RIIGNsZWFyIDEgIiIvCi1zL1RIIFw8Y3Vyc19hZGRfd2NoIDNYICIiL1RIIGFkZF93Y2ggM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19hZGRfd2Noc3RyIDNYICIiL1RIIGFkZF93Y2hzdHIgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19hZGRjaCAzWCAiIi9USCBhZGRjaCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2FkZGNoc3RyIDNYICIiL1RIIGFkZGNoc3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfYWRkc3RyIDNYICIiL1RIIGFkZHN0ciAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2FkZHdzdHIgM1ggIiIvVEggYWRkd3N0ciAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2F0dHIgM1ggIiIvVEggYXR0ciAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2JlZXAgM1ggIiIvVEggYmVlcCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2JrZ2QgM1ggIiIvVEggYmtnZCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2JrZ3JuZCAzWCAiIi9USCBia2dybmQgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19ib3JkZXIgM1ggIiIvVEggYm9yZGVyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfYm9yZGVyX3NldCAzWCAiIi9USCBib3JkZXJfc2V0IDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfY2xlYXIgM1ggIiIvVEggY2xlYXIgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19jb2xvciAzWCAiIi9USCBjb2xvciAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2RlbGNoIDNYICIiL1RIIGRlbGNoIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfZGVsZXRlbG4gM1ggIiIvVEggZGVsZXRlbG4gM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19leHRlbmQgM1ggIiIvVEggZXh0ZW5zaW9ucyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2dldF93Y2ggM1ggIiIvVEggZ2V0X3djaCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2dldF93c3RyIDNYICIiL1RIIGdldF93c3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfZ2V0Y2NoYXIgM1ggIiIvVEggZ2V0Y2NoYXIgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19nZXRjaCAzWCAiIi9USCBnZXRjaCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2dldHN0ciAzWCAiIi9USCBnZXRzdHIgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19nZXR5eCAzWCAiIi9USCBnZXR5eCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2luX3djaCAzWCAiIi9USCBpbl93Y2ggM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19pbl93Y2hzdHIgM1ggIiIvVEggaW5fd2Noc3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5jaCAzWCAiIi9USCBpbmNoIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5jaHN0ciAzWCAiIi9USCBpbmNoc3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5pdHNjciAzWCAiIi9USCBpbml0c2NyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5vcHRzIDNYICIiL1RIIGlub3B0cyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2luc193Y2ggM1ggIiIvVEggaW5zX3djaCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2luc193c3RyIDNYICIiL1RIIGluc193c3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5zY2ggM1ggIiIvVEggaW5zY2ggM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19pbnNzdHIgM1ggIiIvVEggaW5zc3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfaW5zdHIgM1ggIiIvVEggaW5zdHIgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19pbndzdHIgM1ggIiIvVEggaW53c3RyIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfa2VybmVsIDNYICIiL1RIIGtlcm5lbCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX2xlZ2FjeSAzWCAiIi9USCBsZWdhY3kgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19tZW1sZWFrcyAzWCAiIi9USCBtZW1sZWFrcyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX21vdXNlIDNYICIiL1RIIG1vdXNlIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfbW92ZSAzWCAiIi9USCBtb3ZlIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfb3BhcXVlIDNYICIiL1RIIG9wYXF1ZSAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX291dG9wdHMgM1ggIiIvVEggb3V0b3B0cyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX292ZXJsYXkgM1ggIiIvVEggb3ZlcmxheSAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX3BhZCAzWCAiIi9USCBwYWQgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19wcmludCAzWCAiIi9USCBwcmludCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX3ByaW50dyAzWCAiIi9USCBwcmludHcgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19yZWZyZXNoIDNYICIiL1RIIHJlZnJlc2ggM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc19zY2FudyAzWCAiIi9USCBzY2FudyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX3Njcl9kdW1wIDNYICIiL1RIIHNjcl9kdW1wIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfc2Nyb2xsIDNYICIiL1RIIHNjcm9sbCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX3NsayAzWCAiIi9USCBzbGsgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc190ZXJtYXR0cnMgM1ggIiIvVEggdGVybWF0dHJzIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfdGVybWNhcCAzWCAiIi9USCB0ZXJtY2FwIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfdGVybWluZm8gM1ggIiIvVEggdGVybWluZm8gM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc190aHJlYWRzIDNYICIiL1RIIHRocmVhZHMgM05DVVJTRVMgIiIvCi1zL1RIIFw8Y3Vyc190b3VjaCAzWCAiIi9USCB0b3VjaCAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzX3RyYWNlIDNYICIiL1RIIHRyYWNlIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfdXRpbCAzWCAiIi9USCB1dGlsIDNOQ1VSU0VTICIiLwotcy9USCBcPGN1cnNfd2luZG93IDNYICIiL1RIIHdpbmRvdyAzTkNVUlNFUyAiIi8KLXMvVEggXDxjdXJzZXMgM1ggIiIvVEggbmN1cnNlcyAzTkNVUlNFUyAiIi8KLXMvVEggXDxkZWZhdWx0X2NvbG9ycyAzWCAiIi9USCBkZWZhdWx0X2NvbG9ycyAzTkNVUlNFUyAiIi8KLXMvVEggXDxkZWZpbmVfa2V5IDNYICIiL1RIIGRlZmluZV9rZXkgM05DVVJTRVMgIiIvCi1zL1RIIFw8Zm9ybSAzWCAiIi9USCBmb3JtIDNGT1JNICIiLwotcy9USCBcPGZvcm1fY3Vyc29yIDNYICIiL1RIIGN1cnNvciAzRk9STSAiIi8KLXMvVEggXDxmb3JtX2RhdGEgM1ggIiIvVEggZGF0YSAzRk9STSAiIi8KLXMvVEggXDxmb3JtX2RyaXZlciAzWCAiIi9USCBkcml2ZXIgM0ZPUk0gIiIvCi1zL1RIIFw8Zm9ybV9maWVsZCAzWCAiIi9USCBmaWVsZCAzRk9STSAiIi8KLXMvVEggXDxmb3JtX2ZpZWxkX2F0dHJpYnV0ZXMgM1ggIiIvVEggZmllbGRfYXR0cmlidXRlcyAzRk9STSAiIi8KLXMvVEggXDxmb3JtX2ZpZWxkX2J1ZmZlciAzWCAiIi9USCBmaWVsZF9idWZmZXIgM0ZPUk0gIiIvCi1zL1RIIFw8Zm9ybV9maWVsZF9pbmZvIDNYICIiL1RIIGZpZWxkX2luZm8gM0ZPUk0gIiIvCi1zL1RIIFw8Zm9ybV9maWVsZF9qdXN0IDNYICIiL1RIIGZpZWxkX2p1c3QgM0ZPUk0gIiIvCi1zL1RIIFw8Zm9ybV9maWVsZF9uZXcgM1ggIiIvVEggZmllbGRfbmV3IDNGT1JNICIiLwotcy9USCBcPGZvcm1fZmllbGRfb3B0cyAzWCAiIi9USCBmaWVsZF9vcHRzIDNGT1JNICIiLwotcy9USCBcPGZvcm1fZmllbGRfdXNlcnB0ciAzWCAiIi9USCBmaWVsZF91c2VycHRyIDNGT1JNICIiLwotcy9USCBcPGZvcm1fZmllbGRfdmFsaWRhdGlvbiAzWCAiIi9USCBmaWVsZF92YWxpZGF0aW9uIDNGT1JNICIiLwotcy9USCBcPGZvcm1fZmllbGR0eXBlIDNYICIiL1RIIGZpZWxkdHlwZSAzRk9STSAiIi8KLXMvVEggXDxmb3JtX2hvb2sgM1ggIiIvVEggaG9vayAzRk9STSAiIi8KLXMvVEggXDxmb3JtX25ldyAzWCAiIi9USCBuZXcgM0ZPUk0gIiIvCi1zL1RIIFw8Zm9ybV9uZXdfcGFnZSAzWCAiIi9USCBuZXdfcGFnZSAzRk9STSAiIi8KLXMvVEggXDxmb3JtX29wdHMgM1ggIiIvVEggb3B0cyAzRk9STSAiIi8KLXMvVEggXDxmb3JtX3BhZ2UgM1ggIiIvVEggcGFnZSAzRk9STSAiIi8KLXMvVEggXDxmb3JtX3Bvc3QgM1ggIiIvVEggcG9zdCAzRk9STSAiIi8KLXMvVEggXDxmb3JtX3JlcXVlc3RuYW1lIDNYICIiL1RIIHJlcXVlc3RuYW1lIDNGT1JNICIiLwotcy9USCBcPGZvcm1fdXNlcnB0ciAzWCAiIi9USCB1c2VycHRyIDNGT1JNICIiLwotcy9USCBcPGZvcm1fd2luIDNYICIiL1RIIHdpbiAzRk9STSAiIi8KLXMvVEggXDxpbmZvY21wIDFNICIiL1RIIGluZm9jbXAgMSAiIi8KLXMvVEggXDxpbmZvdG9jYXAgMU0gIiIvVEggaW5mb3RvY2FwIDEgIiIvCi1zL1RIIFw8a2V5X2RlZmluZWQgM1ggIiIvVEgga2V5X2RlZmluZWQgM05DVVJTRVMgIiIvCi1zL1RIIFw8a2V5Ym91bmQgM1ggIiIvVEgga2V5Ym91bmQgM05DVVJTRVMgIiIvCi1zL1RIIFw8a2V5b2sgM1ggIiIvVEgga2V5b2sgM05DVVJTRVMgIiIvCi1zL1RIIFw8bGVnYWN5X2NvZGluZyAzWCAiIi9USCBsZWdhY3lfY29kaW5nIDNOQ1VSU0VTICIiLwotcy9USCBcPG1lbnUgM1ggIiIvVEggbWVudSAzTUVOVSAiIi8KLXMvVEggXDxtZW51X2F0dHJpYnV0ZXMgM1ggIiIvVEggYXR0cmlidXRlcyAzTUVOVSAiIi8KLXMvVEggXDxtZW51X2N1cnNvciAzWCAiIi9USCBjdXJzb3IgM01FTlUgIiIvCi1zL1RIIFw8bWVudV9kcml2ZXIgM1ggIiIvVEggZHJpdmVyIDNNRU5VICIiLwotcy9USCBcPG1lbnVfZm9ybWF0IDNYICIiL1RIIGZvcm1hdCAzTUVOVSAiIi8KLXMvVEggXDxtZW51X2hvb2sgM1ggIiIvVEggaG9vayAzTUVOVSAiIi8KLXMvVEggXDxtZW51X2l0ZW1zIDNYICIiL1RIIGl0ZW1zIDNNRU5VICIiLwotcy9USCBcPG1lbnVfbWFyayAzWCAiIi9USCBtYXJrIDNNRU5VICIiLwotcy9USCBcPG1lbnVfbmV3IDNYICIiL1RIIG5ldyAzTUVOVSAiIi8KLXMvVEggXDxtZW51X29wdHMgM1ggIiIvVEggb3B0cyAzTUVOVSAiIi8KLXMvVEggXDxtZW51X3BhdHRlcm4gM1ggIiIvVEggcGF0dGVybiAzTUVOVSAiIi8KLXMvVEggXDxtZW51X3Bvc3QgM1ggIiIvVEggcG9zdCAzTUVOVSAiIi8KLXMvVEggXDxtZW51X3JlcXVlc3RuYW1lIDNYICIiL1RIIHJlcXVlc3RuYW1lIDNNRU5VICIiLwotcy9USCBcPG1lbnVfc3BhY2luZyAzWCAiIi9USCBzcGFjaW5nIDNNRU5VICIiLwotcy9USCBcPG1lbnVfdXNlcnB0ciAzWCAiIi9USCB1c2VycHRyIDNNRU5VICIiLwotcy9USCBcPG1lbnVfd2luIDNYICIiL1RIIHdpbiAzTUVOVSAiIi8KLXMvVEggXDxtaXRlbV9jdXJyZW50IDNYICIiL1RIIG1lbnVfY3VycmVudCAzTUVOVSAiIi8KLXMvVEggXDxtaXRlbV9uYW1lIDNYICIiL1RIIG1lbnVfbmFtZSAzTUVOVSAiIi8KLXMvVEggXDxtaXRlbV9uZXcgM1ggIiIvVEggbWVudV9uZXcgM01FTlUgIiIvCi1zL1RIIFw8bWl0ZW1fb3B0cyAzWCAiIi9USCBtZW51X29wdHMgM01FTlUgIiIvCi1zL1RIIFw8bWl0ZW1fdXNlcnB0ciAzWCAiIi9USCBtZW51X3VzZXJwdHIgM01FTlUgIiIvCi1zL1RIIFw8bWl0ZW1fdmFsdWUgM1ggIiIvVEggbWVudV92YWx1ZSAzTUVOVSAiIi8KLXMvVEggXDxtaXRlbV92aXNpYmxlIDNYICIiL1RIIG1lbnVfdmlzaWJsZSAzTUVOVSAiIi8KLXMvVEggXDxuY3Vyc2VzIDNYICIiL1RIIG5jdXJzZXMgM05DVVJTRVMgIiIvCi1zL1RIIFw8cGFuZWwgM1ggIiIvVEggcGFuZWwgM0NVUlNFUyAiIi8KLXMvVEggXDxwcmludGYgM1MgIiIvVEggcHJpbnRmIDMgIiIvCi1zL1RIIFw8cHV0YyAzUyAgIiIvVEggcHV0YyAzICIiLwotcy9USCBcPHJlc2l6ZXRlcm0gM1ggIiIvVEggcmVzaXpldGVybSAzTkNVUlNFUyAiIi8KLXMvVEggXDxzY2FuZiAzUyAiIi9USCBzY2FuZiAzICIiLwotcy9USCBcPHN5c3RlbSAzUyAiIi9USCBzeXN0ZW0gMyAiIi8KLXMvVEggXDx0ZXJtIDUgIiIvVEggdGVybSA1ICIiLwotcy9USCBcPHRlcm0gNyAiIi9USCB0ZXJtIDcgIiIvCi1zL1RIIFw8dGVybWluZm8gNSAiIi9USCB0ZXJtaW5mbyA1ICIiLwotcy9USCBcPHRlcm1pbmZvIFxcXCpOICIiL1RIIHRlcm1pbmZvIDUgIiIvCi1zL1RIIFw8dGljIDFNICIiL1RIIHRpYyAxICIiLwotcy9USCBcPHRvZSAxTSAiIi9USCB0b2UgMSAiIi8KLXMvVEggXDx0cHV0IDEgIiIvVEggdHB1dCAxICIiLwotcy9USCBcPHRzZXQgMSAiIi9USCB0c2V0IDEgIiIvCi1zL1RIIFw8dnByaW50ZiAzUyAiIi9USCB2cHJpbnRmIDMgIiIvCi1zL1RIIFw8d3Jlc2l6ZSAzWCAiIi9USCB3cmVzaXplIDNOQ1VSU0VTICIiLwotcy9USCBcPHRhY2sgMU0gIiIvVEggdGFjayAxICIiLwotcy9USCBcPGdldHR5IDEgIiIvVEggZ2V0dHkgOCAiIi8KLXMvVEggXDxzY2FuZiAzICIiL1RIIHNjYW5mIDMgIiIvCi1zL1RIIFw8dHR5cyA1ICIiL1RIIHR0eXMgNCAiIi8KLXMvVEggXDx0ZXJtaW8gNyAiIi9USCB0ZXJtaW9zIDMgIiIvCi1zL1RIIFw8c3lzdGVtIDMgIiIvVEggc3lzdGVtIDMgIiIvCi1zL1RIIFw8cmVnY29tcCAzWCAiIi9USCByZWdjb21wIDMgIiIvCi1zL1RIIFw8cmVnZXhlYyAzWCAiIi9USCByZWdleGVjIDMgIiIvCi0jIERvIHRoZSBlbWJlZGRlZCByZWZlcmVuY2VzCi1zL1w8ZkJjYXB0b2luZm9cXGZSKDFNKS9mQmNhcHRvaW5mb1xcZlIoMSkvCi1zL1w8ZkJjbGVhclxcZlIoMSkvZkJjbGVhclxcZlIoMSkvCi1zL1w8ZkJjdXJzX2FkZF93Y2hcXGZSKDNYKS9mQmFkZF93Y2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYWRkX3djaHN0clxcZlIoM1gpL2ZCYWRkX3djaHN0clxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19hZGRjaFxcZlIoM1gpL2ZCYWRkY2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYWRkY2hzdHJcXGZSKDNYKS9mQmFkZGNoc3RyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2FkZHN0clxcZlIoM1gpL2ZCYWRkc3RyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2FkZHdzdHJcXGZSKDNYKS9mQmFkZHdzdHJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYXR0clxcZlIoM1gpL2ZCYXR0clxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19iZWVwXFxmUigzWCkvZkJiZWVwXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2JrZ2RcXGZSKDNYKS9mQmJrZ2RcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYmtncm5kXFxmUigzWCkvZkJia2dybmRcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYm9yZGVyXFxmUigzWCkvZkJib3JkZXJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfYm9yZGVyX3NldFxcZlIoM1gpL2ZCYm9yZGVyX3NldFxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19jbGVhclxcZlIoM1gpL2ZCY2xlYXJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfY29sb3JcXGZSKDNYKS9mQmNvbG9yXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2RlbGNoXFxmUigzWCkvZkJkZWxjaFxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19kZWxldGVsblxcZlIoM1gpL2ZCZGVsZXRlbG5cXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfZXh0ZW5kXFxmUigzWCkvZkJleHRlbnNpb25zXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2dldF93Y2hcXGZSKDNYKS9mQmdldF93Y2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfZ2V0X3dzdHJcXGZSKDNYKS9mQmdldF93c3RyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2dldGNjaGFyXFxmUigzWCkvZkJnZXRjY2hhclxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19nZXRjaFxcZlIoM1gpL2ZCZ2V0Y2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfZ2V0c3RyXFxmUigzWCkvZkJnZXRzdHJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfZ2V0eXhcXGZSKDNYKS9mQmdldHl4XFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2luX3djaFxcZlIoM1gpL2ZCaW5fd2NoXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2luX3djaHN0clxcZlIoM1gpL2ZCaW5fd2Noc3RyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2luY2hcXGZSKDNYKS9mQmluY2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfaW5jaHN0clxcZlIoM1gpL2ZCaW5jaHN0clxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19pbml0c2NyXFxmUigzWCkvZkJpbml0c2NyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2lub3B0c1xcZlIoM1gpL2ZCaW5vcHRzXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2luc193Y2hcXGZSKDNYKS9mQmluc193Y2hcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfaW5zX3dzdHJcXGZSKDNYKS9mQmluc193c3RyXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX2luc2NoXFxmUigzWCkvZkJpbnNjaFxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19pbnNzdHJcXGZSKDNYKS9mQmluc3N0clxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19pbnN0clxcZlIoM1gpL2ZCaW5zdHJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfaW53c3RyXFxmUigzWCkvZkJpbndzdHJcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfa2VybmVsXFxmUigzWCkvZkJrZXJuZWxcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfbGVnYWN5XFxmUigzWCkvZkJsZWdhY3lcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfbWVtbGVha3NcXGZSKDNYKS9mQm1lbWxlYWtzXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX21vdXNlXFxmUigzWCkvZkJtb3VzZVxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19tb3ZlXFxmUigzWCkvZkJtb3ZlXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX29wYXF1ZVxcZlIoM1gpL2ZCb3BhcXVlXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX291dG9wdHNcXGZSKDNYKS9mQm91dG9wdHNcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfb3ZlcmxheVxcZlIoM1gpL2ZCb3ZlcmxheVxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19wYWRcXGZSKDNYKS9mQnBhZFxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19wcmludFxcZlIoM1gpL2ZCcHJpbnRcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfcHJpbnR3XFxmUigzWCkvZkJwcmludHdcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfcmVmcmVzaFxcZlIoM1gpL2ZCcmVmcmVzaFxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc19zY2Fud1xcZlIoM1gpL2ZCc2NhbndcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfc2NyX2R1bXBcXGZSKDNYKS9mQnNjcl9kdW1wXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3Njcm9sbFxcZlIoM1gpL2ZCc2Nyb2xsXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3Nsa1xcZlIoM1gpL2ZCc2xrXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3Rlcm1hdHRyc1xcZlIoM1gpL2ZCdGVybWF0dHJzXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3Rlcm1jYXBcXGZSKDNYKS9mQnRlcm1jYXBcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfdGVybWluZm9cXGZSKDNYKS9mQnRlcm1pbmZvXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3RocmVhZHNcXGZSKDNYKS9mQnRocmVhZHNcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmN1cnNfdG91Y2hcXGZSKDNYKS9mQnRvdWNoXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3RyYWNlXFxmUigzWCkvZkJ0cmFjZVxcZlIoM05DVVJTRVMpLwotcy9cPGZCY3Vyc191dGlsXFxmUigzWCkvZkJ1dGlsXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzX3dpbmRvd1xcZlIoM1gpL2ZCd2luZG93XFxmUigzTkNVUlNFUykvCi1zL1w8ZkJjdXJzZXNcXGZSKDNYKS9mQm5jdXJzZXNcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmRlZmF1bHRfY29sb3JzXFxmUigzWCkvZkJkZWZhdWx0X2NvbG9yc1xcZlIoM05DVVJTRVMpLwotcy9cPGZCZGVmaW5lX2tleVxcZlIoM1gpL2ZCZGVmaW5lX2tleVxcZlIoM05DVVJTRVMpLwotcy9cPGZCZm9ybVxcZlIoM1gpL2ZCZm9ybVxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9jdXJzb3JcXGZSKDNYKS9mQmN1cnNvclxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9kYXRhXFxmUigzWCkvZkJkYXRhXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX2RyaXZlclxcZlIoM1gpL2ZCZHJpdmVyXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX2ZpZWxkXFxmUigzWCkvZkJmaWVsZFxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9maWVsZF9hdHRyaWJ1dGVzXFxmUigzWCkvZkJmaWVsZF9hdHRyaWJ1dGVzXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX2ZpZWxkX2J1ZmZlclxcZlIoM1gpL2ZCZmllbGRfYnVmZmVyXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX2ZpZWxkX2luZm9cXGZSKDNYKS9mQmZpZWxkX2luZm9cXGZSKDNGT1JNKS8KLXMvXDxmQmZvcm1fZmllbGRfanVzdFxcZlIoM1gpL2ZCZmllbGRfanVzdFxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9maWVsZF9uZXdcXGZSKDNYKS9mQmZpZWxkX25ld1xcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9maWVsZF9vcHRzXFxmUigzWCkvZkJmaWVsZF9vcHRzXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX2ZpZWxkX3VzZXJwdHJcXGZSKDNYKS9mQmZpZWxkX3VzZXJwdHJcXGZSKDNGT1JNKS8KLXMvXDxmQmZvcm1fZmllbGRfdmFsaWRhdGlvblxcZlIoM1gpL2ZCZmllbGRfdmFsaWRhdGlvblxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9maWVsZHR5cGVcXGZSKDNYKS9mQmZpZWxkdHlwZVxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9ob29rXFxmUigzWCkvZkJob29rXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX25ld1xcZlIoM1gpL2ZCbmV3XFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX25ld19wYWdlXFxmUigzWCkvZkJuZXdfcGFnZVxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9vcHRzXFxmUigzWCkvZkJvcHRzXFxmUigzRk9STSkvCi1zL1w8ZkJmb3JtX3BhZ2VcXGZSKDNYKS9mQnBhZ2VcXGZSKDNGT1JNKS8KLXMvXDxmQmZvcm1fcG9zdFxcZlIoM1gpL2ZCcG9zdFxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV9yZXF1ZXN0bmFtZVxcZlIoM1gpL2ZCcmVxdWVzdG5hbWVcXGZSKDNGT1JNKS8KLXMvXDxmQmZvcm1fdXNlcnB0clxcZlIoM1gpL2ZCdXNlcnB0clxcZlIoM0ZPUk0pLwotcy9cPGZCZm9ybV93aW5cXGZSKDNYKS9mQndpblxcZlIoM0ZPUk0pLwotcy9cPGZCaW5mb2NtcFxcZlIoMU0pL2ZCaW5mb2NtcFxcZlIoMSkvCi1zL1w8ZkJpbmZvdG9jYXBcXGZSKDFNKS9mQmluZm90b2NhcFxcZlIoMSkvCi1zL1w8ZkJrZXlfZGVmaW5lZFxcZlIoM1gpL2ZCa2V5X2RlZmluZWRcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQmtleWJvdW5kXFxmUigzWCkvZkJrZXlib3VuZFxcZlIoM05DVVJTRVMpLwotcy9cPGZCa2V5b2tcXGZSKDNYKS9mQmtleW9rXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJsZWdhY3lfY29kaW5nXFxmUigzWCkvZkJsZWdhY3lfY29kaW5nXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJtZW51XFxmUigzWCkvZkJtZW51XFxmUigzTUVOVSkvCi1zL1w8ZkJtZW51X2F0dHJpYnV0ZXNcXGZSKDNYKS9mQmF0dHJpYnV0ZXNcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfY3Vyc29yXFxmUigzWCkvZkJjdXJzb3JcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfZHJpdmVyXFxmUigzWCkvZkJkcml2ZXJcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfZm9ybWF0XFxmUigzWCkvZkJmb3JtYXRcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfaG9va1xcZlIoM1gpL2ZCaG9va1xcZlIoM01FTlUpLwotcy9cPGZCbWVudV9pdGVtc1xcZlIoM1gpL2ZCaXRlbXNcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfbWFya1xcZlIoM1gpL2ZCbWFya1xcZlIoM01FTlUpLwotcy9cPGZCbWVudV9uZXdcXGZSKDNYKS9mQm5ld1xcZlIoM01FTlUpLwotcy9cPGZCbWVudV9vcHRzXFxmUigzWCkvZkJvcHRzXFxmUigzTUVOVSkvCi1zL1w8ZkJtZW51X3BhdHRlcm5cXGZSKDNYKS9mQnBhdHRlcm5cXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfcG9zdFxcZlIoM1gpL2ZCcG9zdFxcZlIoM01FTlUpLwotcy9cPGZCbWVudV9yZXF1ZXN0bmFtZVxcZlIoM1gpL2ZCcmVxdWVzdG5hbWVcXGZSKDNNRU5VKS8KLXMvXDxmQm1lbnVfc3BhY2luZ1xcZlIoM1gpL2ZCc3BhY2luZ1xcZlIoM01FTlUpLwotcy9cPGZCbWVudV91c2VycHRyXFxmUigzWCkvZkJ1c2VycHRyXFxmUigzTUVOVSkvCi1zL1w8ZkJtZW51X3dpblxcZlIoM1gpL2ZCd2luXFxmUigzTUVOVSkvCi1zL1w8ZkJtaXRlbV9jdXJyZW50XFxmUigzWCkvZkJtZW51X2N1cnJlbnRcXGZSKDNNRU5VKS8KLXMvXDxmQm1pdGVtX25hbWVcXGZSKDNYKS9mQm1lbnVfbmFtZVxcZlIoM01FTlUpLwotcy9cPGZCbWl0ZW1fbmV3XFxmUigzWCkvZkJtZW51X25ld1xcZlIoM01FTlUpLwotcy9cPGZCbWl0ZW1fb3B0c1xcZlIoM1gpL2ZCbWVudV9vcHRzXFxmUigzTUVOVSkvCi1zL1w8ZkJtaXRlbV91c2VycHRyXFxmUigzWCkvZkJtZW51X3VzZXJwdHJcXGZSKDNNRU5VKS8KLXMvXDxmQm1pdGVtX3ZhbHVlXFxmUigzWCkvZkJtZW51X3ZhbHVlXFxmUigzTUVOVSkvCi1zL1w8ZkJtaXRlbV92aXNpYmxlXFxmUigzWCkvZkJtZW51X3Zpc2libGVcXGZSKDNNRU5VKS8KLXMvXDxmQm5jdXJzZXNcXGZSKDNYKS9mQm5jdXJzZXNcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQnBhbmVsXFxmUigzWCkvZkJwYW5lbFxcZlIoM0NVUlNFUykvCi1zL1w8ZkJwcmludGZcXGZSKDNTKS9mQnByaW50ZlxcZlIoMykvCi1zL1w8ZkJwdXRjXFxmUigzUyApL2ZCcHV0Y1xcZlIoMykvCi1zL1w8ZkJyZXNpemV0ZXJtXFxmUigzWCkvZkJyZXNpemV0ZXJtXFxmUigzTkNVUlNFUykvCi1zL1w8ZkJzY2FuZlxcZlIoM1MpL2ZCc2NhbmZcXGZSKDMpLwotcy9cPGZCc3lzdGVtXFxmUigzUykvZkJzeXN0ZW1cXGZSKDMpLwotcy9cPGZCdGVybVxcZlIoNSkvZkJ0ZXJtXFxmUig1KS8KLXMvXDxmQnRlcm1cXGZSKDcpL2ZCdGVybVxcZlIoNykvCi1zL1w8ZkJ0ZXJtaW5mb1xcZlIoNSkvZkJ0ZXJtaW5mb1xcZlIoNSkvCi1zL1w8ZkJ0ZXJtaW5mb1xcZlIoXFxcKk4pL2ZCdGVybWluZm9cXGZSKDUpLwotcy9cPGZCdGljXFxmUigxTSkvZkJ0aWNcXGZSKDEpLwotcy9cPGZCdG9lXFxmUigxTSkvZkJ0b2VcXGZSKDEpLwotcy9cPGZCdHB1dFxcZlIoMSkvZkJ0cHV0XFxmUigxKS8KLXMvXDxmQnRzZXRcXGZSKDEpL2ZCdHNldFxcZlIoMSkvCi1zL1w8ZkJ2cHJpbnRmXFxmUigzUykvZkJ2cHJpbnRmXFxmUigzKS8KLXMvXDxmQndyZXNpemVcXGZSKDNYKS9mQndyZXNpemVcXGZSKDNOQ1VSU0VTKS8KLXMvXDxmQnRhY2tcXGZSKDFNKS9mQnRhY2tcXGZSKDEpLwotcy9cPGZCZ2V0dHlcXGZSKDEpL2ZCZ2V0dHlcXGZSKDgpLwotcy9cPGZCc2NhbmZcXGZSKDMpL2ZCc2NhbmZcXGZSKDMpLwotcy9cPGZCdHR5c1xcZlIoNSkvZkJ0dHlzXFxmUig0KS8KLXMvXDxmQnRlcm1pb1xcZlIoNykvZkJ0ZXJtaW9zXFxmUigzKS8KLXMvXDxmQnN5c3RlbVxcZlIoMykvZkJzeXN0ZW1cXGZSKDMpLwotcy9cPGZCcmVnY29tcFxcZlIoM1gpL2ZCcmVnY29tcFxcZlIoMykvCi1zL1w8ZkJyZWdleGVjXFxmUigzWCkvZkJyZWdleGVjXFxmUigzKS8KLSMgRG8gdGhlIAxCeHh4DFIgcmVmZXJlbmNlcyBpbiB0aGUgLk5BTUUgc2VjdGlvbgotcy9eXFxmQmNhcHRvaW5mb1xcZltSUF0gLS9cXGZCY2FwdG9pbmZvXFxmUiAtLwotcy9eXFxmQmNsZWFyXFxmW1JQXSAtL1xcZkJjbGVhclxcZlIgLS8KLXMvXlxcZkJjdXJzX2FkZF93Y2hcXGZbUlBdIC0vXFxmQmFkZF93Y2hcXGZSIC0vCi1zL15cXGZCY3Vyc19hZGRfd2Noc3RyXFxmW1JQXSAtL1xcZkJhZGRfd2Noc3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfYWRkY2hcXGZbUlBdIC0vXFxmQmFkZGNoXFxmUiAtLwotcy9eXFxmQmN1cnNfYWRkY2hzdHJcXGZbUlBdIC0vXFxmQmFkZGNoc3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfYWRkc3RyXFxmW1JQXSAtL1xcZkJhZGRzdHJcXGZSIC0vCi1zL15cXGZCY3Vyc19hZGR3c3RyXFxmW1JQXSAtL1xcZkJhZGR3c3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfYXR0clxcZltSUF0gLS9cXGZCYXR0clxcZlIgLS8KLXMvXlxcZkJjdXJzX2JlZXBcXGZbUlBdIC0vXFxmQmJlZXBcXGZSIC0vCi1zL15cXGZCY3Vyc19ia2dkXFxmW1JQXSAtL1xcZkJia2dkXFxmUiAtLwotcy9eXFxmQmN1cnNfYmtncm5kXFxmW1JQXSAtL1xcZkJia2dybmRcXGZSIC0vCi1zL15cXGZCY3Vyc19ib3JkZXJcXGZbUlBdIC0vXFxmQmJvcmRlclxcZlIgLS8KLXMvXlxcZkJjdXJzX2JvcmRlcl9zZXRcXGZbUlBdIC0vXFxmQmJvcmRlcl9zZXRcXGZSIC0vCi1zL15cXGZCY3Vyc19jbGVhclxcZltSUF0gLS9cXGZCY2xlYXJcXGZSIC0vCi1zL15cXGZCY3Vyc19jb2xvclxcZltSUF0gLS9cXGZCY29sb3JcXGZSIC0vCi1zL15cXGZCY3Vyc19kZWxjaFxcZltSUF0gLS9cXGZCZGVsY2hcXGZSIC0vCi1zL15cXGZCY3Vyc19kZWxldGVsblxcZltSUF0gLS9cXGZCZGVsZXRlbG5cXGZSIC0vCi1zL15cXGZCY3Vyc19leHRlbmRcXGZbUlBdIC0vXFxmQmV4dGVuc2lvbnNcXGZSIC0vCi1zL15cXGZCY3Vyc19nZXRfd2NoXFxmW1JQXSAtL1xcZkJnZXRfd2NoXFxmUiAtLwotcy9eXFxmQmN1cnNfZ2V0X3dzdHJcXGZbUlBdIC0vXFxmQmdldF93c3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfZ2V0Y2NoYXJcXGZbUlBdIC0vXFxmQmdldGNjaGFyXFxmUiAtLwotcy9eXFxmQmN1cnNfZ2V0Y2hcXGZbUlBdIC0vXFxmQmdldGNoXFxmUiAtLwotcy9eXFxmQmN1cnNfZ2V0c3RyXFxmW1JQXSAtL1xcZkJnZXRzdHJcXGZSIC0vCi1zL15cXGZCY3Vyc19nZXR5eFxcZltSUF0gLS9cXGZCZ2V0eXhcXGZSIC0vCi1zL15cXGZCY3Vyc19pbl93Y2hcXGZbUlBdIC0vXFxmQmluX3djaFxcZlIgLS8KLXMvXlxcZkJjdXJzX2luX3djaHN0clxcZltSUF0gLS9cXGZCaW5fd2Noc3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfaW5jaFxcZltSUF0gLS9cXGZCaW5jaFxcZlIgLS8KLXMvXlxcZkJjdXJzX2luY2hzdHJcXGZbUlBdIC0vXFxmQmluY2hzdHJcXGZSIC0vCi1zL15cXGZCY3Vyc19pbml0c2NyXFxmW1JQXSAtL1xcZkJpbml0c2NyXFxmUiAtLwotcy9eXFxmQmN1cnNfaW5vcHRzXFxmW1JQXSAtL1xcZkJpbm9wdHNcXGZSIC0vCi1zL15cXGZCY3Vyc19pbnNfd2NoXFxmW1JQXSAtL1xcZkJpbnNfd2NoXFxmUiAtLwotcy9eXFxmQmN1cnNfaW5zX3dzdHJcXGZbUlBdIC0vXFxmQmluc193c3RyXFxmUiAtLwotcy9eXFxmQmN1cnNfaW5zY2hcXGZbUlBdIC0vXFxmQmluc2NoXFxmUiAtLwotcy9eXFxmQmN1cnNfaW5zc3RyXFxmW1JQXSAtL1xcZkJpbnNzdHJcXGZSIC0vCi1zL15cXGZCY3Vyc19pbnN0clxcZltSUF0gLS9cXGZCaW5zdHJcXGZSIC0vCi1zL15cXGZCY3Vyc19pbndzdHJcXGZbUlBdIC0vXFxmQmlud3N0clxcZlIgLS8KLXMvXlxcZkJjdXJzX2tlcm5lbFxcZltSUF0gLS9cXGZCa2VybmVsXFxmUiAtLwotcy9eXFxmQmN1cnNfbGVnYWN5XFxmW1JQXSAtL1xcZkJsZWdhY3lcXGZSIC0vCi1zL15cXGZCY3Vyc19tZW1sZWFrc1xcZltSUF0gLS9cXGZCbWVtbGVha3NcXGZSIC0vCi1zL15cXGZCY3Vyc19tb3VzZVxcZltSUF0gLS9cXGZCbW91c2VcXGZSIC0vCi1zL15cXGZCY3Vyc19tb3ZlXFxmW1JQXSAtL1xcZkJtb3ZlXFxmUiAtLwotcy9eXFxmQmN1cnNfb3BhcXVlXFxmW1JQXSAtL1xcZkJvcGFxdWVcXGZSIC0vCi1zL15cXGZCY3Vyc19vdXRvcHRzXFxmW1JQXSAtL1xcZkJvdXRvcHRzXFxmUiAtLwotcy9eXFxmQmN1cnNfb3ZlcmxheVxcZltSUF0gLS9cXGZCb3ZlcmxheVxcZlIgLS8KLXMvXlxcZkJjdXJzX3BhZFxcZltSUF0gLS9cXGZCcGFkXFxmUiAtLwotcy9eXFxmQmN1cnNfcHJpbnRcXGZbUlBdIC0vXFxmQnByaW50XFxmUiAtLwotcy9eXFxmQmN1cnNfcHJpbnR3XFxmW1JQXSAtL1xcZkJwcmludHdcXGZSIC0vCi1zL15cXGZCY3Vyc19yZWZyZXNoXFxmW1JQXSAtL1xcZkJyZWZyZXNoXFxmUiAtLwotcy9eXFxmQmN1cnNfc2NhbndcXGZbUlBdIC0vXFxmQnNjYW53XFxmUiAtLwotcy9eXFxmQmN1cnNfc2NyX2R1bXBcXGZbUlBdIC0vXFxmQnNjcl9kdW1wXFxmUiAtLwotcy9eXFxmQmN1cnNfc2Nyb2xsXFxmW1JQXSAtL1xcZkJzY3JvbGxcXGZSIC0vCi1zL15cXGZCY3Vyc19zbGtcXGZbUlBdIC0vXFxmQnNsa1xcZlIgLS8KLXMvXlxcZkJjdXJzX3Rlcm1hdHRyc1xcZltSUF0gLS9cXGZCdGVybWF0dHJzXFxmUiAtLwotcy9eXFxmQmN1cnNfdGVybWNhcFxcZltSUF0gLS9cXGZCdGVybWNhcFxcZlIgLS8KLXMvXlxcZkJjdXJzX3Rlcm1pbmZvXFxmW1JQXSAtL1xcZkJ0ZXJtaW5mb1xcZlIgLS8KLXMvXlxcZkJjdXJzX3RocmVhZHNcXGZbUlBdIC0vXFxmQnRocmVhZHNcXGZSIC0vCi1zL15cXGZCY3Vyc190b3VjaFxcZltSUF0gLS9cXGZCdG91Y2hcXGZSIC0vCi1zL15cXGZCY3Vyc190cmFjZVxcZltSUF0gLS9cXGZCdHJhY2VcXGZSIC0vCi1zL15cXGZCY3Vyc191dGlsXFxmW1JQXSAtL1xcZkJ1dGlsXFxmUiAtLwotcy9eXFxmQmN1cnNfd2luZG93XFxmW1JQXSAtL1xcZkJ3aW5kb3dcXGZSIC0vCi1zL15cXGZCY3Vyc2VzXFxmW1JQXSAtL1xcZkJuY3Vyc2VzXFxmUiAtLwotcy9eXFxmQmRlZmF1bHRfY29sb3JzXFxmW1JQXSAtL1xcZkJkZWZhdWx0X2NvbG9yc1xcZlIgLS8KLXMvXlxcZkJkZWZpbmVfa2V5XFxmW1JQXSAtL1xcZkJkZWZpbmVfa2V5XFxmUiAtLwotcy9eXFxmQmZvcm1cXGZbUlBdIC0vXFxmQmZvcm1cXGZSIC0vCi1zL15cXGZCZm9ybV9jdXJzb3JcXGZbUlBdIC0vXFxmQmN1cnNvclxcZlIgLS8KLXMvXlxcZkJmb3JtX2RhdGFcXGZbUlBdIC0vXFxmQmRhdGFcXGZSIC0vCi1zL15cXGZCZm9ybV9kcml2ZXJcXGZbUlBdIC0vXFxmQmRyaXZlclxcZlIgLS8KLXMvXlxcZkJmb3JtX2ZpZWxkXFxmW1JQXSAtL1xcZkJmaWVsZFxcZlIgLS8KLXMvXlxcZkJmb3JtX2ZpZWxkX2F0dHJpYnV0ZXNcXGZbUlBdIC0vXFxmQmZpZWxkX2F0dHJpYnV0ZXNcXGZSIC0vCi1zL15cXGZCZm9ybV9maWVsZF9idWZmZXJcXGZbUlBdIC0vXFxmQmZpZWxkX2J1ZmZlclxcZlIgLS8KLXMvXlxcZkJmb3JtX2ZpZWxkX2luZm9cXGZbUlBdIC0vXFxmQmZpZWxkX2luZm9cXGZSIC0vCi1zL15cXGZCZm9ybV9maWVsZF9qdXN0XFxmW1JQXSAtL1xcZkJmaWVsZF9qdXN0XFxmUiAtLwotcy9eXFxmQmZvcm1fZmllbGRfbmV3XFxmW1JQXSAtL1xcZkJmaWVsZF9uZXdcXGZSIC0vCi1zL15cXGZCZm9ybV9maWVsZF9vcHRzXFxmW1JQXSAtL1xcZkJmaWVsZF9vcHRzXFxmUiAtLwotcy9eXFxmQmZvcm1fZmllbGRfdXNlcnB0clxcZltSUF0gLS9cXGZCZmllbGRfdXNlcnB0clxcZlIgLS8KLXMvXlxcZkJmb3JtX2ZpZWxkX3ZhbGlkYXRpb25cXGZbUlBdIC0vXFxmQmZpZWxkX3ZhbGlkYXRpb25cXGZSIC0vCi1zL15cXGZCZm9ybV9maWVsZHR5cGVcXGZbUlBdIC0vXFxmQmZpZWxkdHlwZVxcZlIgLS8KLXMvXlxcZkJmb3JtX2hvb2tcXGZbUlBdIC0vXFxmQmhvb2tcXGZSIC0vCi1zL15cXGZCZm9ybV9uZXdcXGZbUlBdIC0vXFxmQm5ld1xcZlIgLS8KLXMvXlxcZkJmb3JtX25ld19wYWdlXFxmW1JQXSAtL1xcZkJuZXdfcGFnZVxcZlIgLS8KLXMvXlxcZkJmb3JtX29wdHNcXGZbUlBdIC0vXFxmQm9wdHNcXGZSIC0vCi1zL15cXGZCZm9ybV9wYWdlXFxmW1JQXSAtL1xcZkJwYWdlXFxmUiAtLwotcy9eXFxmQmZvcm1fcG9zdFxcZltSUF0gLS9cXGZCcG9zdFxcZlIgLS8KLXMvXlxcZkJmb3JtX3JlcXVlc3RuYW1lXFxmW1JQXSAtL1xcZkJyZXF1ZXN0bmFtZVxcZlIgLS8KLXMvXlxcZkJmb3JtX3VzZXJwdHJcXGZbUlBdIC0vXFxmQnVzZXJwdHJcXGZSIC0vCi1zL15cXGZCZm9ybV93aW5cXGZbUlBdIC0vXFxmQndpblxcZlIgLS8KLXMvXlxcZkJpbmZvY21wXFxmW1JQXSAtL1xcZkJpbmZvY21wXFxmUiAtLwotcy9eXFxmQmluZm90b2NhcFxcZltSUF0gLS9cXGZCaW5mb3RvY2FwXFxmUiAtLwotcy9eXFxmQmtleV9kZWZpbmVkXFxmW1JQXSAtL1xcZkJrZXlfZGVmaW5lZFxcZlIgLS8KLXMvXlxcZkJrZXlib3VuZFxcZltSUF0gLS9cXGZCa2V5Ym91bmRcXGZSIC0vCi1zL15cXGZCa2V5b2tcXGZbUlBdIC0vXFxmQmtleW9rXFxmUiAtLwotcy9eXFxmQmxlZ2FjeV9jb2RpbmdcXGZbUlBdIC0vXFxmQmxlZ2FjeV9jb2RpbmdcXGZSIC0vCi1zL15cXGZCbWVudVxcZltSUF0gLS9cXGZCbWVudVxcZlIgLS8KLXMvXlxcZkJtZW51X2F0dHJpYnV0ZXNcXGZbUlBdIC0vXFxmQmF0dHJpYnV0ZXNcXGZSIC0vCi1zL15cXGZCbWVudV9jdXJzb3JcXGZbUlBdIC0vXFxmQmN1cnNvclxcZlIgLS8KLXMvXlxcZkJtZW51X2RyaXZlclxcZltSUF0gLS9cXGZCZHJpdmVyXFxmUiAtLwotcy9eXFxmQm1lbnVfZm9ybWF0XFxmW1JQXSAtL1xcZkJmb3JtYXRcXGZSIC0vCi1zL15cXGZCbWVudV9ob29rXFxmW1JQXSAtL1xcZkJob29rXFxmUiAtLwotcy9eXFxmQm1lbnVfaXRlbXNcXGZbUlBdIC0vXFxmQml0ZW1zXFxmUiAtLwotcy9eXFxmQm1lbnVfbWFya1xcZltSUF0gLS9cXGZCbWFya1xcZlIgLS8KLXMvXlxcZkJtZW51X25ld1xcZltSUF0gLS9cXGZCbmV3XFxmUiAtLwotcy9eXFxmQm1lbnVfb3B0c1xcZltSUF0gLS9cXGZCb3B0c1xcZlIgLS8KLXMvXlxcZkJtZW51X3BhdHRlcm5cXGZbUlBdIC0vXFxmQnBhdHRlcm5cXGZSIC0vCi1zL15cXGZCbWVudV9wb3N0XFxmW1JQXSAtL1xcZkJwb3N0XFxmUiAtLwotcy9eXFxmQm1lbnVfcmVxdWVzdG5hbWVcXGZbUlBdIC0vXFxmQnJlcXVlc3RuYW1lXFxmUiAtLwotcy9eXFxmQm1lbnVfc3BhY2luZ1xcZltSUF0gLS9cXGZCc3BhY2luZ1xcZlIgLS8KLXMvXlxcZkJtZW51X3VzZXJwdHJcXGZbUlBdIC0vXFxmQnVzZXJwdHJcXGZSIC0vCi1zL15cXGZCbWVudV93aW5cXGZbUlBdIC0vXFxmQndpblxcZlIgLS8KLXMvXlxcZkJtaXRlbV9jdXJyZW50XFxmW1JQXSAtL1xcZkJtZW51X2N1cnJlbnRcXGZSIC0vCi1zL15cXGZCbWl0ZW1fbmFtZVxcZltSUF0gLS9cXGZCbWVudV9uYW1lXFxmUiAtLwotcy9eXFxmQm1pdGVtX25ld1xcZltSUF0gLS9cXGZCbWVudV9uZXdcXGZSIC0vCi1zL15cXGZCbWl0ZW1fb3B0c1xcZltSUF0gLS9cXGZCbWVudV9vcHRzXFxmUiAtLwotcy9eXFxmQm1pdGVtX3VzZXJwdHJcXGZbUlBdIC0vXFxmQm1lbnVfdXNlcnB0clxcZlIgLS8KLXMvXlxcZkJtaXRlbV92YWx1ZVxcZltSUF0gLS9cXGZCbWVudV92YWx1ZVxcZlIgLS8KLXMvXlxcZkJtaXRlbV92aXNpYmxlXFxmW1JQXSAtL1xcZkJtZW51X3Zpc2libGVcXGZSIC0vCi1zL15cXGZCbmN1cnNlc1xcZltSUF0gLS9cXGZCbmN1cnNlc1xcZlIgLS8KLXMvXlxcZkJwYW5lbFxcZltSUF0gLS9cXGZCcGFuZWxcXGZSIC0vCi1zL15cXGZCcHJpbnRmXFxmW1JQXSAtL1xcZkJwcmludGZcXGZSIC0vCi1zL15cXGZCcHV0Y1xcZltSUF0gLS9cXGZCcHV0Y1xcZlIgLS8KLXMvXlxcZkJyZXNpemV0ZXJtXFxmW1JQXSAtL1xcZkJyZXNpemV0ZXJtXFxmUiAtLwotcy9eXFxmQnNjYW5mXFxmW1JQXSAtL1xcZkJzY2FuZlxcZlIgLS8KLXMvXlxcZkJzeXN0ZW1cXGZbUlBdIC0vXFxmQnN5c3RlbVxcZlIgLS8KLXMvXlxcZkJ0ZXJtXFxmW1JQXSAtL1xcZkJ0ZXJtXFxmUiAtLwotcy9eXFxmQnRlcm1cXGZbUlBdIC0vXFxmQnRlcm1cXGZSIC0vCi1zL15cXGZCdGVybWluZm9cXGZbUlBdIC0vXFxmQnRlcm1pbmZvXFxmUiAtLwotcy9eXFxmQnRlcm1pbmZvXFxmW1JQXSAtL1xcZkJ0ZXJtaW5mb1xcZlIgLS8KLXMvXlxcZkJ0aWNcXGZbUlBdIC0vXFxmQnRpY1xcZlIgLS8KLXMvXlxcZkJ0b2VcXGZbUlBdIC0vXFxmQnRvZVxcZlIgLS8KLXMvXlxcZkJ0cHV0XFxmW1JQXSAtL1xcZkJ0cHV0XFxmUiAtLwotcy9eXFxmQnRzZXRcXGZbUlBdIC0vXFxmQnRzZXRcXGZSIC0vCi1zL15cXGZCdnByaW50ZlxcZltSUF0gLS9cXGZCdnByaW50ZlxcZlIgLS8KLXMvXlxcZkJ3cmVzaXplXFxmW1JQXSAtL1xcZkJ3cmVzaXplXFxmUiAtLwotcy9eXFxmQnRhY2tcXGZbUlBdIC0vXFxmQnRhY2tcXGZSIC0vCi1zL15cXGZCZ2V0dHlcXGZbUlBdIC0vXFxmQmdldHR5XFxmUiAtLwotcy9eXFxmQnNjYW5mXFxmW1JQXSAtL1xcZkJzY2FuZlxcZlIgLS8KLXMvXlxcZkJ0dHlzXFxmW1JQXSAtL1xcZkJ0dHlzXFxmUiAtLwotcy9eXFxmQnRlcm1pb1xcZltSUF0gLS9cXGZCdGVybWlvc1xcZlIgLS8KLXMvXlxcZkJzeXN0ZW1cXGZbUlBdIC0vXFxmQnN5c3RlbVxcZlIgLS8KLXMvXlxcZkJyZWdjb21wXFxmW1JQXSAtL1xcZkJyZWdjb21wXFxmUiAtLwotcy9eXFxmQnJlZ2V4ZWNcXGZbUlBdIC0vXFxmQnJlZ2V4ZWNcXGZSIC0vCmRpZmYgLS1naXQgYS9mb3JtL01ha2VmaWxlIGIvZm9ybS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY0MTg0OS4uMDAwMDAwMAotLS0gYS9mb3JtL01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsNzY4ICswLDAgQEAKLSMgJElkOiBNYWtlZmlsZS5pbix2IDEuNDcgMjAwNy8wNC8yOCAxNDo1NjoxMSB0b20gRXhwICQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwotIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCi0jIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKLSMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIwotIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCi0jIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKLSMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKLSMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIwotIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCi0jIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIwotIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCi0jIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCi0jIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKLSMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KLSMKLSMgTWFrZWZpbGUgZm9yIGZvcm0gc291cmNlIGNvZGUuCi0jCi0jIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZzoKLSMJbGlicmFyaWVzIChub3JtYWwvZGVidWcvcHJvZmlsZS9zaGFyZWQpCi0jCi0jIFRoZSB2YXJpYWJsZSAnc3JjZGlyJyByZWZlcnMgdG8gdGhlIHNvdXJjZS1kaXN0cmlidXRpb24sIGFuZCBjYW4gYmUgc2V0IHdpdGgKLSMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgIi0tc3JjZGlyPURJUiIuCi0jCi0jIFRoZSBydWxlcyBhcmUgb3JnYW5pemVkIHRvIHByb2R1Y2UgdGhlIGxpYnJhcmllcyBmb3IgdGhlIGNvbmZpZ3VyZWQgbW9kZWxzLAotCi0jIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgotLlNVRkZJWEVTOgotCi1TSEVMTAkJPSAvYmluL3NoCi1USElTCQk9IE1ha2VmaWxlCi0KLXgJCT0gCi1vCQk9IC5vCi0KLU1PREVMCQk9IG5vcm1hbAotREVTVERJUgkJPSAKLXNyY2RpcgkJPSAuCi1wcmVmaXgJCT0gL3Vzci9sb2NhbAotZXhlY19wcmVmaXgJPSAke3ByZWZpeH0KLWJpbmRpcgkJPSAke2V4ZWNfcHJlZml4fS9iaW4KLWxpYmRpcgkJPSAke2V4ZWNfcHJlZml4fS9saWIKLWluY2x1ZGVkaXIJPSAke3ByZWZpeH0vaW5jbHVkZS9uY3Vyc2VzCi0KLUxJQlRPT0wJCT0gCi1MSUJUT09MX0NMRUFOCT0gCi1MSUJUT09MX0NPTVBJTEUJPSAKLUxJQlRPT0xfTElOSwk9ICR7Q0N9Ci1MSUJUT09MX0lOU1RBTEwJPSAKLUxJQlRPT0xfVU5JTlNUQUxMID0gCi0KLUlOU1RBTEwJCT0gL3Vzci9iaW4vaW5zdGFsbCAtYwotSU5TVEFMTF9MSUIJPSAvdXNyL2Jpbi9pbnN0YWxsIC1jIC1tIDY0NAotSU5TVEFMTF9QUk9HCT0gJHtJTlNUQUxMfQotSU5TVEFMTF9EQVRBCT0gJHtJTlNUQUxMfSAtbSA2NDQKLQotQVIJCT0gYXJtLWVhYmktYXIKLUFSX09QVFMJCT0gcnYKLUFXSwkJPSBtYXdrCi1MRAkJPSBhcm0tZWFiaS1sZAotTE5fUwkJPSBsbiAtcwotCi1DQwkJPSBhZ2NjLnBsCi1DUFAJCT0gYWdjYy5wbCAtRQotQ0ZMQUdTCQk9IC1PMiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlPTEyMDAKLQotQ1BQRkxBR1MJPSAtSS4uL25jdXJzZXMgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uL2luY2x1ZGUgIC1VX1hPUEVOX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9NTAwIC1VX1BPU0lYX0NfU09VUkNFIC1EX1BPU0lYX0NfU09VUkNFPTE5OTUwNkwgLUROREVCVUcgLUkke2luY2x1ZGVkaXJ9Ci0KLUNDRkxBR1MJCT0gJChDUFBGTEFHUykgJChDRkxBR1MpCi0KLUNGTEFHU19MSUJUT09MCT0gJChDQ0ZMQUdTKQotQ0ZMQUdTX05PUk1BTAk9ICQoQ0NGTEFHUykKLUNGTEFHU19ERUJVRwk9ICQoQ0NGTEFHUykgLWcgLURUUkFDRQotQ0ZMQUdTX1BST0ZJTEUJPSAkKENDRkxBR1MpIC1wZwotQ0ZMQUdTX1NIQVJFRAk9ICQoQ0NGTEFHUykgdW5rbm93bgotCi1DRkxBR1NfREVGQVVMVAk9ICQoQ0ZMQUdTX05PUk1BTCkKLQotTElOSwkJPSAkKExJQlRPT0xfTElOSykKLUxERkxBR1MJCT0gICAKLQotU0hMSUJfRElSUwk9IC1MLi4vbGliCi1TSExJQl9MSVNUCT0gJChTSExJQl9ESVJTKSAtbG5jdXJzZXMgCi0KLU1LX1NIQVJFRF9MSUIJPSBlY2hvIHVua25vd24KLQotTkNVUlNFU19NQUpPUgk9IDUKLU5DVVJTRVNfTUlOT1IJPSA3Ci1SRUxfVkVSU0lPTgk9IDUuNwotQUJJX1ZFUlNJT04JPSA1Ci0KLVJBTkxJQgkJPSBhcm0tZWFiaS1yYW5saWIKLQotTElCUkFSSUVTCT0gIC4uL2xpYi9saWJmb3JtLmEgLi4vbGliL2xpYmZvcm1fZy5hCi0KLUxJTlQJCT0gCi1MSU5UX09QVFMJPSAKLUxJTlRfTElCUwk9IC1sZm9ybSAtbG5jdXJzZXMgCi0KLUFVVE9fU1JDCT0gXAotCQkuLi9pbmNsdWRlL2Zvcm0uaAotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotYWxsIFwKLWxpYnMgXAotaW5zdGFsbCA6OgkkKEFVVE9fU1JDKSAkKExJQlJBUklFUykKLQotc291cmNlcyA6CSQoQVVUT19TUkMpCi0KLSQoREVTVERJUikkKGJpbmRpcikgXAotJChERVNURElSKSQobGliZGlyKSA6Ci0Jc2ggJChzcmNkaXIpLy4uL21rZGlycy5zaCAkQAotCi0jIG1ha2UgY29waWVzIHRvIHNpbXBsaWZ5IGluY2x1ZGUtcGF0aHMgd2hpbGUgc3RpbGwga2VlcGluZyBmb3JtJ3MgaW5jbHVkZQotIyBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LgotLi4vaW5jbHVkZS9mb3JtLmggOiAkKHNyY2RpcikvZm9ybS5oCi0JLXJtIC1mICRACi0JY3AgJChzcmNkaXIpL2Zvcm0uaCAkQAotCi1GT1JNX1BSSVZfSCA9IFwKLQkkKHNyY2RpcikvZm9ybS5wcml2LmggXAotCSQoc3JjZGlyKS9mb3JtLmggXAotCS4uL2luY2x1ZGUvbWZfY29tbW9uLmggXAotCS4uL2luY2x1ZGUvY3Vyc2VzLmggXAotCS4uL2luY2x1ZGUvZXRpLmgKLQotdGFnczoKLQljdGFncyAqLltjaF0KLQotVEFHUzoKLQlldGFncyAqLltjaF0KLQotbW9zdGx5Y2xlYW4gOjoKLQktcm0gLWYgY29yZSB0YWdzIFRBR1MgKn4gKi5iYWsgKi5pICoubG4gKi5hdGFjIHRyYWNlCi0KLWNsZWFuIDo6IG1vc3RseWNsZWFuCi0JLXJtIC1mICQoQVVUT19TUkMpCi0KLWRpc3RjbGVhbiA6OiBjbGVhbgotCS1ybSAtZiBNYWtlZmlsZQotCi1yZWFsY2xlYW4gOjogZGlzdGNsZWFuCi0KLS4uL2luY2x1ZGUvbWZfY29tbW9uLmggXAotLi4vaW5jbHVkZS9ldGkuaCA6Ci0JY2QgLi4vbWVudSAmJiAkKE1BS0UpICRACi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBnZW5lcmF0ZWQgYnkgbWstMHRoLmF3awotIyAgIGxpYm5hbWU6ICAgIGZvcm0KLSMgICBzdWJzZXRzOiAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLQotLlNVRkZJWEVTOiAuYyAuY2MgLmggLmkgLmlpCi0uYy5pIDoKLQkkKENQUCkgJChDUFBGTEFHUykgJDwgPiRACi0uY2MuaWkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLS5oLmkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLQotQ19TUkMgPSBcCi0JJChzcmNkaXIpL2ZfdHJhY2UuYyBcCi0JJChzcmNkaXIpL2ZsZF9hcmcuYyBcCi0JJChzcmNkaXIpL2ZsZF9hdHRyLmMgXAotCSQoc3JjZGlyKS9mbGRfY3VycmVudC5jIFwKLQkkKHNyY2RpcikvZmxkX2RlZi5jIFwKLQkkKHNyY2RpcikvZmxkX2R1cC5jIFwKLQkkKHNyY2RpcikvZmxkX2Z0Y2hvaWNlLmMgXAotCSQoc3JjZGlyKS9mbGRfZnRsaW5rLmMgXAotCSQoc3JjZGlyKS9mbGRfaW5mby5jIFwKLQkkKHNyY2RpcikvZmxkX2p1c3QuYyBcCi0JJChzcmNkaXIpL2ZsZF9saW5rLmMgXAotCSQoc3JjZGlyKS9mbGRfbWF4LmMgXAotCSQoc3JjZGlyKS9mbGRfbW92ZS5jIFwKLQkkKHNyY2RpcikvZmxkX25ld2Z0eXAuYyBcCi0JJChzcmNkaXIpL2ZsZF9vcHRzLmMgXAotCSQoc3JjZGlyKS9mbGRfcGFkLmMgXAotCSQoc3JjZGlyKS9mbGRfcGFnZS5jIFwKLQkkKHNyY2RpcikvZmxkX3N0YXQuYyBcCi0JJChzcmNkaXIpL2ZsZF90eXBlLmMgXAotCSQoc3JjZGlyKS9mbGRfdXNlci5jIFwKLQkkKHNyY2RpcikvZnJtX2N1cnNvci5jIFwKLQkkKHNyY2RpcikvZnJtX2RhdGEuYyBcCi0JJChzcmNkaXIpL2ZybV9kZWYuYyBcCi0JJChzcmNkaXIpL2ZybV9kcml2ZXIuYyBcCi0JJChzcmNkaXIpL2ZybV9ob29rLmMgXAotCSQoc3JjZGlyKS9mcm1fb3B0cy5jIFwKLQkkKHNyY2RpcikvZnJtX3BhZ2UuYyBcCi0JJChzcmNkaXIpL2ZybV9wb3N0LmMgXAotCSQoc3JjZGlyKS9mcm1fcmVxX25hbWUuYyBcCi0JJChzcmNkaXIpL2ZybV9zY2FsZS5jIFwKLQkkKHNyY2RpcikvZnJtX3N1Yi5jIFwKLQkkKHNyY2RpcikvZnJtX3VzZXIuYyBcCi0JJChzcmNkaXIpL2ZybV93aW4uYyBcCi0JJChzcmNkaXIpL2Z0eV9hbG51bS5jIFwKLQkkKHNyY2RpcikvZnR5X2FscGhhLmMgXAotCSQoc3JjZGlyKS9mdHlfZW51bS5jIFwKLQkkKHNyY2RpcikvZnR5X2ludC5jIFwKLQkkKHNyY2RpcikvZnR5X2lwdjQuYyBcCi0JJChzcmNkaXIpL2Z0eV9udW0uYyBcCi0JJChzcmNkaXIpL2Z0eV9yZWdleC5jCi0KLSMgUHJvZHVjaW5nIGxsaWItbGZvcm0gaXMgdGltZS1jb25zdW1pbmcsIHNvIHRoZXJlJ3Mgbm8gZGlyZWN0LWRlcGVuZGVuY3kgZm9yCi0jIGl0IGluIHRoZSBsaW50bGliIHJ1bGUuICBXZSdsbCBvbmx5IHJlbW92ZSBpbiB0aGUgY2xlYW5lc3Qgc2V0dXAuCi1jbGVhbiA6OgotCXJtIC1mIGxsaWItbGZvcm0uKgotCi1yZWFsY2xlYW4gOjoKLQlybSAtZiBsbGliLWxmb3JtCi0KLWxsaWItbGZvcm0gOiAkKENfU1JDKQotCWNwcm90byAtYSAtbCAtRE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSD0wIC1ETElOVCAkKENQUEZMQUdTKSAkKENfU1JDKSA+JEAKLQotbGludGxpYiA6Ci0Jc2ggJChzcmNkaXIpLy4uL21pc2MvbWFrZWxsaWIgZm9ybSAkKENQUEZMQUdTKQotbGludCA6Ci0JJChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJChDX1NSQykgJChMSU5UX0xJQlMpCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTFzdC5hd2sgKHN1YnNldD10aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MpCi0jICBuYW1lOiAgICAgICAgICBmb3JtCi0jICB0cmFjZXM6ICAgICAgICBERUJVRwotIyAgTU9ERUw6ICAgICAgICAgTk9STUFMCi0jICBtb2RlbDogICAgICAgICBvYmplY3RzCi0jICBwcmVmaXg6ICAgICAgICBsaWIKLSMgIHN1ZmZpeDogICAgICAgIC5hCi0jICBzdWJzZXQ6ICAgICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgIFNobGliVmVyOiAgICAgIGF1dG8KLSMgIFNobGliVmVySW5maXg6IG5vCi0jICBUZXJtbGliUm9vdDogICBuY3Vyc2VzCi0jICBUZXJtbGliU3VmZml4OiAuYQotIyAgUmVMaW5rOiAgICAgICAgCi0jICBEb0xpbmtzOiAgICAgICBubwotIyAgcm1Tb0xvY3M6ICAgICAgbm8KLSMgIGxkY29uZmlnOiAgICAgIDoKLSMgIG92ZXJ3cml0ZTogICAgIG5vCi0jICBkZXBlbmQ6ICAgICAgICAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9mb3JtLnByaXYuaAotIyAgaG9zdDogICAgICAgICAgYXJtLXVua25vd24tZWFiaQotCi1OT1JNQUxfT0JKUyA9IFwKLQkuLi9vYmplY3RzL2ZsZF9hcmckbyBcCi0JLi4vb2JqZWN0cy9mbGRfYXR0ciRvIFwKLQkuLi9vYmplY3RzL2ZsZF9jdXJyZW50JG8gXAotCS4uL29iamVjdHMvZmxkX2RlZiRvIFwKLQkuLi9vYmplY3RzL2ZsZF9kdXAkbyBcCi0JLi4vb2JqZWN0cy9mbGRfZnRjaG9pY2UkbyBcCi0JLi4vb2JqZWN0cy9mbGRfZnRsaW5rJG8gXAotCS4uL29iamVjdHMvZmxkX2luZm8kbyBcCi0JLi4vb2JqZWN0cy9mbGRfanVzdCRvIFwKLQkuLi9vYmplY3RzL2ZsZF9saW5rJG8gXAotCS4uL29iamVjdHMvZmxkX21heCRvIFwKLQkuLi9vYmplY3RzL2ZsZF9tb3ZlJG8gXAotCS4uL29iamVjdHMvZmxkX25ld2Z0eXAkbyBcCi0JLi4vb2JqZWN0cy9mbGRfb3B0cyRvIFwKLQkuLi9vYmplY3RzL2ZsZF9wYWQkbyBcCi0JLi4vb2JqZWN0cy9mbGRfcGFnZSRvIFwKLQkuLi9vYmplY3RzL2ZsZF9zdGF0JG8gXAotCS4uL29iamVjdHMvZmxkX3R5cGUkbyBcCi0JLi4vb2JqZWN0cy9mbGRfdXNlciRvIFwKLQkuLi9vYmplY3RzL2ZybV9jdXJzb3IkbyBcCi0JLi4vb2JqZWN0cy9mcm1fZGF0YSRvIFwKLQkuLi9vYmplY3RzL2ZybV9kZWYkbyBcCi0JLi4vb2JqZWN0cy9mcm1fZHJpdmVyJG8gXAotCS4uL29iamVjdHMvZnJtX2hvb2skbyBcCi0JLi4vb2JqZWN0cy9mcm1fb3B0cyRvIFwKLQkuLi9vYmplY3RzL2ZybV9wYWdlJG8gXAotCS4uL29iamVjdHMvZnJtX3Bvc3QkbyBcCi0JLi4vb2JqZWN0cy9mcm1fcmVxX25hbWUkbyBcCi0JLi4vb2JqZWN0cy9mcm1fc2NhbGUkbyBcCi0JLi4vb2JqZWN0cy9mcm1fc3ViJG8gXAotCS4uL29iamVjdHMvZnJtX3VzZXIkbyBcCi0JLi4vb2JqZWN0cy9mcm1fd2luJG8gXAotCS4uL29iamVjdHMvZnR5X2FsbnVtJG8gXAotCS4uL29iamVjdHMvZnR5X2FscGhhJG8gXAotCS4uL29iamVjdHMvZnR5X2VudW0kbyBcCi0JLi4vb2JqZWN0cy9mdHlfaW50JG8gXAotCS4uL29iamVjdHMvZnR5X2lwdjQkbyBcCi0JLi4vb2JqZWN0cy9mdHlfbnVtJG8gXAotCS4uL29iamVjdHMvZnR5X3JlZ2V4JG8KLQotJChOT1JNQUxfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9mb3JtLnByaXYuaAotCi0uLi9saWIvbGliZm9ybS5hIDogJChOT1JNQUxfT0JKUykKLQkkKEFSKSAkKEFSX09QVFMpICRAICQ/Ci0JJChSQU5MSUIpICRACi0KLWluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKLWluc3RhbGwuZm9ybSA6OiAkKERFU1RESVIpJChsaWJkaXIpIC4uL2xpYi9saWJmb3JtLmEKLQlAZWNobyBpbnN0YWxsaW5nIC4uL2xpYi9saWJmb3JtLmEgYXMgJChERVNURElSKSQobGliZGlyKS9saWJmb3JtLmEKLQkkKElOU1RBTExfREFUQSkgLi4vbGliL2xpYmZvcm0uYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmZvcm0uYQotCSQoUkFOTElCKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmZvcm0uYQotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnMgXAotdW5pbnN0YWxsLmZvcm0gOjoKLQlAZWNobyB1bmluc3RhbGxpbmcgJChERVNURElSKSQobGliZGlyKS9saWJmb3JtLmEKLQktQHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliZm9ybS5hCi0KLWNsZWFuIDo6Ci0JLXJtIC1mIC4uL2xpYi9saWJmb3JtLmEKLQotbW9zdGx5Y2xlYW46OgotCS1ybSAtZiAkKE5PUk1BTF9PQkpTKQotCi0jIGdlbmVyYXRlZCBieSBtay0ybmQuYXdrCi0jICAgbW9kZWw6ICAgICAgb2JqZWN0cwotIyAgIE1PREVMOiAgICAgIE5PUk1BTAotIyAgIGVjaG86ICAgICAgIHllcwotIyAgIHN1YnNldDogICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgIGNyZW5hbWVzOiAgIHllcwotIyAgIGN4eHJlbmFtZXM6IG5vCi0jICAgdHJhY2VzOiAgICAgREVCVUcKLSMgICBzcmNkaXI6ICAgICAuCi0KLS4uL29iamVjdHMvZmxkX2FyZyRvIDoJJChzcmNkaXIpL2ZsZF9hcmcuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX2FyZy5jIC1vIC4uL29iamVjdHMvZmxkX2FyZyRvCi0KLS4uL29iamVjdHMvZmxkX2F0dHIkbyA6CSQoc3JjZGlyKS9mbGRfYXR0ci5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfYXR0ci5jIC1vIC4uL29iamVjdHMvZmxkX2F0dHIkbwotCi0uLi9vYmplY3RzL2ZsZF9jdXJyZW50JG8gOgkkKHNyY2RpcikvZmxkX2N1cnJlbnQuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX2N1cnJlbnQuYyAtbyAuLi9vYmplY3RzL2ZsZF9jdXJyZW50JG8KLQotLi4vb2JqZWN0cy9mbGRfZGVmJG8gOgkkKHNyY2RpcikvZmxkX2RlZi5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfZGVmLmMgLW8gLi4vb2JqZWN0cy9mbGRfZGVmJG8KLQotLi4vb2JqZWN0cy9mbGRfZHVwJG8gOgkkKHNyY2RpcikvZmxkX2R1cC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfZHVwLmMgLW8gLi4vb2JqZWN0cy9mbGRfZHVwJG8KLQotLi4vb2JqZWN0cy9mbGRfZnRjaG9pY2UkbyA6CSQoc3JjZGlyKS9mbGRfZnRjaG9pY2UuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX2Z0Y2hvaWNlLmMgLW8gLi4vb2JqZWN0cy9mbGRfZnRjaG9pY2UkbwotCi0uLi9vYmplY3RzL2ZsZF9mdGxpbmskbyA6CSQoc3JjZGlyKS9mbGRfZnRsaW5rLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9mdGxpbmsuYyAtbyAuLi9vYmplY3RzL2ZsZF9mdGxpbmskbwotCi0uLi9vYmplY3RzL2ZsZF9pbmZvJG8gOgkkKHNyY2RpcikvZmxkX2luZm8uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX2luZm8uYyAtbyAuLi9vYmplY3RzL2ZsZF9pbmZvJG8KLQotLi4vb2JqZWN0cy9mbGRfanVzdCRvIDoJJChzcmNkaXIpL2ZsZF9qdXN0LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9qdXN0LmMgLW8gLi4vb2JqZWN0cy9mbGRfanVzdCRvCi0KLS4uL29iamVjdHMvZmxkX2xpbmskbyA6CSQoc3JjZGlyKS9mbGRfbGluay5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfbGluay5jIC1vIC4uL29iamVjdHMvZmxkX2xpbmskbwotCi0uLi9vYmplY3RzL2ZsZF9tYXgkbyA6CSQoc3JjZGlyKS9mbGRfbWF4LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9tYXguYyAtbyAuLi9vYmplY3RzL2ZsZF9tYXgkbwotCi0uLi9vYmplY3RzL2ZsZF9tb3ZlJG8gOgkkKHNyY2RpcikvZmxkX21vdmUuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX21vdmUuYyAtbyAuLi9vYmplY3RzL2ZsZF9tb3ZlJG8KLQotLi4vb2JqZWN0cy9mbGRfbmV3ZnR5cCRvIDoJJChzcmNkaXIpL2ZsZF9uZXdmdHlwLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9uZXdmdHlwLmMgLW8gLi4vb2JqZWN0cy9mbGRfbmV3ZnR5cCRvCi0KLS4uL29iamVjdHMvZmxkX29wdHMkbyA6CSQoc3JjZGlyKS9mbGRfb3B0cy5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfb3B0cy5jIC1vIC4uL29iamVjdHMvZmxkX29wdHMkbwotCi0uLi9vYmplY3RzL2ZsZF9wYWQkbyA6CSQoc3JjZGlyKS9mbGRfcGFkLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9wYWQuYyAtbyAuLi9vYmplY3RzL2ZsZF9wYWQkbwotCi0uLi9vYmplY3RzL2ZsZF9wYWdlJG8gOgkkKHNyY2RpcikvZmxkX3BhZ2UuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX3BhZ2UuYyAtbyAuLi9vYmplY3RzL2ZsZF9wYWdlJG8KLQotLi4vb2JqZWN0cy9mbGRfc3RhdCRvIDoJJChzcmNkaXIpL2ZsZF9zdGF0LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZsZF9zdGF0LmMgLW8gLi4vb2JqZWN0cy9mbGRfc3RhdCRvCi0KLS4uL29iamVjdHMvZmxkX3R5cGUkbyA6CSQoc3JjZGlyKS9mbGRfdHlwZS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mbGRfdHlwZS5jIC1vIC4uL29iamVjdHMvZmxkX3R5cGUkbwotCi0uLi9vYmplY3RzL2ZsZF91c2VyJG8gOgkkKHNyY2RpcikvZmxkX3VzZXIuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZmxkX3VzZXIuYyAtbyAuLi9vYmplY3RzL2ZsZF91c2VyJG8KLQotLi4vb2JqZWN0cy9mcm1fY3Vyc29yJG8gOgkkKHNyY2RpcikvZnJtX2N1cnNvci5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mcm1fY3Vyc29yLmMgLW8gLi4vb2JqZWN0cy9mcm1fY3Vyc29yJG8KLQotLi4vb2JqZWN0cy9mcm1fZGF0YSRvIDoJJChzcmNkaXIpL2ZybV9kYXRhLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZybV9kYXRhLmMgLW8gLi4vb2JqZWN0cy9mcm1fZGF0YSRvCi0KLS4uL29iamVjdHMvZnJtX2RlZiRvIDoJJChzcmNkaXIpL2ZybV9kZWYuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnJtX2RlZi5jIC1vIC4uL29iamVjdHMvZnJtX2RlZiRvCi0KLS4uL29iamVjdHMvZnJtX2RyaXZlciRvIDoJJChzcmNkaXIpL2ZybV9kcml2ZXIuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnJtX2RyaXZlci5jIC1vIC4uL29iamVjdHMvZnJtX2RyaXZlciRvCi0KLS4uL29iamVjdHMvZnJtX2hvb2skbyA6CSQoc3JjZGlyKS9mcm1faG9vay5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mcm1faG9vay5jIC1vIC4uL29iamVjdHMvZnJtX2hvb2skbwotCi0uLi9vYmplY3RzL2ZybV9vcHRzJG8gOgkkKHNyY2RpcikvZnJtX29wdHMuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnJtX29wdHMuYyAtbyAuLi9vYmplY3RzL2ZybV9vcHRzJG8KLQotLi4vb2JqZWN0cy9mcm1fcGFnZSRvIDoJJChzcmNkaXIpL2ZybV9wYWdlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZybV9wYWdlLmMgLW8gLi4vb2JqZWN0cy9mcm1fcGFnZSRvCi0KLS4uL29iamVjdHMvZnJtX3Bvc3QkbyA6CSQoc3JjZGlyKS9mcm1fcG9zdC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mcm1fcG9zdC5jIC1vIC4uL29iamVjdHMvZnJtX3Bvc3QkbwotCi0uLi9vYmplY3RzL2ZybV9yZXFfbmFtZSRvIDoJJChzcmNkaXIpL2ZybV9yZXFfbmFtZS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mcm1fcmVxX25hbWUuYyAtbyAuLi9vYmplY3RzL2ZybV9yZXFfbmFtZSRvCi0KLS4uL29iamVjdHMvZnJtX3NjYWxlJG8gOgkkKHNyY2RpcikvZnJtX3NjYWxlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZybV9zY2FsZS5jIC1vIC4uL29iamVjdHMvZnJtX3NjYWxlJG8KLQotLi4vb2JqZWN0cy9mcm1fc3ViJG8gOgkkKHNyY2RpcikvZnJtX3N1Yi5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mcm1fc3ViLmMgLW8gLi4vb2JqZWN0cy9mcm1fc3ViJG8KLQotLi4vb2JqZWN0cy9mcm1fdXNlciRvIDoJJChzcmNkaXIpL2ZybV91c2VyLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2ZybV91c2VyLmMgLW8gLi4vb2JqZWN0cy9mcm1fdXNlciRvCi0KLS4uL29iamVjdHMvZnJtX3dpbiRvIDoJJChzcmNkaXIpL2ZybV93aW4uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnJtX3dpbi5jIC1vIC4uL29iamVjdHMvZnJtX3dpbiRvCi0KLS4uL29iamVjdHMvZnR5X2FsbnVtJG8gOgkkKHNyY2RpcikvZnR5X2FsbnVtLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2Z0eV9hbG51bS5jIC1vIC4uL29iamVjdHMvZnR5X2FsbnVtJG8KLQotLi4vb2JqZWN0cy9mdHlfYWxwaGEkbyA6CSQoc3JjZGlyKS9mdHlfYWxwaGEuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnR5X2FscGhhLmMgLW8gLi4vb2JqZWN0cy9mdHlfYWxwaGEkbwotCi0uLi9vYmplY3RzL2Z0eV9lbnVtJG8gOgkkKHNyY2RpcikvZnR5X2VudW0uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnR5X2VudW0uYyAtbyAuLi9vYmplY3RzL2Z0eV9lbnVtJG8KLQotLi4vb2JqZWN0cy9mdHlfaW50JG8gOgkkKHNyY2RpcikvZnR5X2ludC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vZm9ybS9mdHlfaW50LmMgLW8gLi4vb2JqZWN0cy9mdHlfaW50JG8KLQotLi4vb2JqZWN0cy9mdHlfaXB2NCRvIDoJJChzcmNkaXIpL2Z0eV9pcHY0LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2Z0eV9pcHY0LmMgLW8gLi4vb2JqZWN0cy9mdHlfaXB2NCRvCi0KLS4uL29iamVjdHMvZnR5X251bSRvIDoJJChzcmNkaXIpL2Z0eV9udW0uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL2Zvcm0vZnR5X251bS5jIC1vIC4uL29iamVjdHMvZnR5X251bSRvCi0KLS4uL29iamVjdHMvZnR5X3JlZ2V4JG8gOgkkKHNyY2RpcikvZnR5X3JlZ2V4LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9mb3JtL2Z0eV9yZWdleC5jIC1vIC4uL29iamVjdHMvZnR5X3JlZ2V4JG8KLQotCi0jIGdlbmVyYXRlZCBieSBtay0xc3QuYXdrIChzdWJzZXQ9dGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzKQotIyAgbmFtZTogICAgICAgICAgZm9ybQotIyAgdHJhY2VzOiAgICAgICAgREVCVUcKLSMgIE1PREVMOiAgICAgICAgIERFQlVHCi0jICBtb2RlbDogICAgICAgICBvYmpfZwotIyAgcHJlZml4OiAgICAgICAgbGliCi0jICBzdWZmaXg6ICAgICAgICBfZy5hCi0jICBzdWJzZXQ6ICAgICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgIFNobGliVmVyOiAgICAgIGF1dG8KLSMgIFNobGliVmVySW5maXg6IG5vCi0jICBUZXJtbGliUm9vdDogICBuY3Vyc2VzCi0jICBUZXJtbGliU3VmZml4OiAuYQotIyAgUmVMaW5rOiAgICAgICAgCi0jICBEb0xpbmtzOiAgICAgICBubwotIyAgcm1Tb0xvY3M6ICAgICAgbm8KLSMgIGxkY29uZmlnOiAgICAgIDoKLSMgIG92ZXJ3cml0ZTogICAgIG5vCi0jICBkZXBlbmQ6ICAgICAgICAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9mb3JtLnByaXYuaAotIyAgaG9zdDogICAgICAgICAgYXJtLXVua25vd24tZWFiaQotCi1ERUJVR19PQkpTID0gXAotCS4uL29ial9nL2ZfdHJhY2UkbyBcCi0JLi4vb2JqX2cvZmxkX2FyZyRvIFwKLQkuLi9vYmpfZy9mbGRfYXR0ciRvIFwKLQkuLi9vYmpfZy9mbGRfY3VycmVudCRvIFwKLQkuLi9vYmpfZy9mbGRfZGVmJG8gXAotCS4uL29ial9nL2ZsZF9kdXAkbyBcCi0JLi4vb2JqX2cvZmxkX2Z0Y2hvaWNlJG8gXAotCS4uL29ial9nL2ZsZF9mdGxpbmskbyBcCi0JLi4vb2JqX2cvZmxkX2luZm8kbyBcCi0JLi4vb2JqX2cvZmxkX2p1c3QkbyBcCi0JLi4vb2JqX2cvZmxkX2xpbmskbyBcCi0JLi4vb2JqX2cvZmxkX21heCRvIFwKLQkuLi9vYmpfZy9mbGRfbW92ZSRvIFwKLQkuLi9vYmpfZy9mbGRfbmV3ZnR5cCRvIFwKLQkuLi9vYmpfZy9mbGRfb3B0cyRvIFwKLQkuLi9vYmpfZy9mbGRfcGFkJG8gXAotCS4uL29ial9nL2ZsZF9wYWdlJG8gXAotCS4uL29ial9nL2ZsZF9zdGF0JG8gXAotCS4uL29ial9nL2ZsZF90eXBlJG8gXAotCS4uL29ial9nL2ZsZF91c2VyJG8gXAotCS4uL29ial9nL2ZybV9jdXJzb3IkbyBcCi0JLi4vb2JqX2cvZnJtX2RhdGEkbyBcCi0JLi4vb2JqX2cvZnJtX2RlZiRvIFwKLQkuLi9vYmpfZy9mcm1fZHJpdmVyJG8gXAotCS4uL29ial9nL2ZybV9ob29rJG8gXAotCS4uL29ial9nL2ZybV9vcHRzJG8gXAotCS4uL29ial9nL2ZybV9wYWdlJG8gXAotCS4uL29ial9nL2ZybV9wb3N0JG8gXAotCS4uL29ial9nL2ZybV9yZXFfbmFtZSRvIFwKLQkuLi9vYmpfZy9mcm1fc2NhbGUkbyBcCi0JLi4vb2JqX2cvZnJtX3N1YiRvIFwKLQkuLi9vYmpfZy9mcm1fdXNlciRvIFwKLQkuLi9vYmpfZy9mcm1fd2luJG8gXAotCS4uL29ial9nL2Z0eV9hbG51bSRvIFwKLQkuLi9vYmpfZy9mdHlfYWxwaGEkbyBcCi0JLi4vb2JqX2cvZnR5X2VudW0kbyBcCi0JLi4vb2JqX2cvZnR5X2ludCRvIFwKLQkuLi9vYmpfZy9mdHlfaXB2NCRvIFwKLQkuLi9vYmpfZy9mdHlfbnVtJG8gXAotCS4uL29ial9nL2Z0eV9yZWdleCRvCi0KLSQoREVCVUdfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9mb3JtLnByaXYuaAotCi0uLi9saWIvbGliZm9ybV9nLmEgOiAkKERFQlVHX09CSlMpCi0JJChBUikgJChBUl9PUFRTKSAkQCAkPwotCSQoUkFOTElCKSAkQAotCi1pbnN0YWxsIFwKLWluc3RhbGwubGlicyBcCi1pbnN0YWxsLmZvcm0gOjogJChERVNURElSKSQobGliZGlyKSAuLi9saWIvbGliZm9ybV9nLmEKLQlAZWNobyBpbnN0YWxsaW5nIC4uL2xpYi9saWJmb3JtX2cuYSBhcyAkKERFU1RESVIpJChsaWJkaXIpL2xpYmZvcm1fZy5hCi0JJChJTlNUQUxMX0RBVEEpIC4uL2xpYi9saWJmb3JtX2cuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmZvcm1fZy5hCi0JJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGliZm9ybV9nLmEKLQotdW5pbnN0YWxsIFwKLXVuaW5zdGFsbC5saWJzIFwKLXVuaW5zdGFsbC5mb3JtIDo6Ci0JQGVjaG8gdW5pbnN0YWxsaW5nICQoREVTVERJUikkKGxpYmRpcikvbGliZm9ybV9nLmEKLQktQHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliZm9ybV9nLmEKLQotY2xlYW4gOjoKLQktcm0gLWYgLi4vbGliL2xpYmZvcm1fZy5hCi0KLW1vc3RseWNsZWFuOjoKLQktcm0gLWYgJChERUJVR19PQkpTKQotCi0jIGdlbmVyYXRlZCBieSBtay0ybmQuYXdrCi0jICAgbW9kZWw6ICAgICAgb2JqX2cKLSMgICBNT0RFTDogICAgICBERUJVRwotIyAgIGVjaG86ICAgICAgIHllcwotIyAgIHN1YnNldDogICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgIGNyZW5hbWVzOiAgIHllcwotIyAgIGN4eHJlbmFtZXM6IG5vCi0jICAgdHJhY2VzOiAgICAgREVCVUcKLSMgICBzcmNkaXI6ICAgICAuCi0KLS4uL29ial9nL2ZfdHJhY2UkbyA6CSQoc3JjZGlyKS9mX3RyYWNlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZl90cmFjZS5jIC1vIC4uL29ial9nL2ZfdHJhY2UkbwotCi0uLi9vYmpfZy9mbGRfYXJnJG8gOgkkKHNyY2RpcikvZmxkX2FyZy5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9hcmcuYyAtbyAuLi9vYmpfZy9mbGRfYXJnJG8KLQotLi4vb2JqX2cvZmxkX2F0dHIkbyA6CSQoc3JjZGlyKS9mbGRfYXR0ci5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9hdHRyLmMgLW8gLi4vb2JqX2cvZmxkX2F0dHIkbwotCi0uLi9vYmpfZy9mbGRfY3VycmVudCRvIDoJJChzcmNkaXIpL2ZsZF9jdXJyZW50LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX2N1cnJlbnQuYyAtbyAuLi9vYmpfZy9mbGRfY3VycmVudCRvCi0KLS4uL29ial9nL2ZsZF9kZWYkbyA6CSQoc3JjZGlyKS9mbGRfZGVmLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX2RlZi5jIC1vIC4uL29ial9nL2ZsZF9kZWYkbwotCi0uLi9vYmpfZy9mbGRfZHVwJG8gOgkkKHNyY2RpcikvZmxkX2R1cC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9kdXAuYyAtbyAuLi9vYmpfZy9mbGRfZHVwJG8KLQotLi4vb2JqX2cvZmxkX2Z0Y2hvaWNlJG8gOgkkKHNyY2RpcikvZmxkX2Z0Y2hvaWNlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX2Z0Y2hvaWNlLmMgLW8gLi4vb2JqX2cvZmxkX2Z0Y2hvaWNlJG8KLQotLi4vb2JqX2cvZmxkX2Z0bGluayRvIDoJJChzcmNkaXIpL2ZsZF9mdGxpbmsuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mbGRfZnRsaW5rLmMgLW8gLi4vb2JqX2cvZmxkX2Z0bGluayRvCi0KLS4uL29ial9nL2ZsZF9pbmZvJG8gOgkkKHNyY2RpcikvZmxkX2luZm8uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mbGRfaW5mby5jIC1vIC4uL29ial9nL2ZsZF9pbmZvJG8KLQotLi4vb2JqX2cvZmxkX2p1c3QkbyA6CSQoc3JjZGlyKS9mbGRfanVzdC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9qdXN0LmMgLW8gLi4vb2JqX2cvZmxkX2p1c3QkbwotCi0uLi9vYmpfZy9mbGRfbGluayRvIDoJJChzcmNkaXIpL2ZsZF9saW5rLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX2xpbmsuYyAtbyAuLi9vYmpfZy9mbGRfbGluayRvCi0KLS4uL29ial9nL2ZsZF9tYXgkbyA6CSQoc3JjZGlyKS9mbGRfbWF4LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX21heC5jIC1vIC4uL29ial9nL2ZsZF9tYXgkbwotCi0uLi9vYmpfZy9mbGRfbW92ZSRvIDoJJChzcmNkaXIpL2ZsZF9tb3ZlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX21vdmUuYyAtbyAuLi9vYmpfZy9mbGRfbW92ZSRvCi0KLS4uL29ial9nL2ZsZF9uZXdmdHlwJG8gOgkkKHNyY2RpcikvZmxkX25ld2Z0eXAuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mbGRfbmV3ZnR5cC5jIC1vIC4uL29ial9nL2ZsZF9uZXdmdHlwJG8KLQotLi4vb2JqX2cvZmxkX29wdHMkbyA6CSQoc3JjZGlyKS9mbGRfb3B0cy5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9vcHRzLmMgLW8gLi4vb2JqX2cvZmxkX29wdHMkbwotCi0uLi9vYmpfZy9mbGRfcGFkJG8gOgkkKHNyY2RpcikvZmxkX3BhZC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9wYWQuYyAtbyAuLi9vYmpfZy9mbGRfcGFkJG8KLQotLi4vb2JqX2cvZmxkX3BhZ2UkbyA6CSQoc3JjZGlyKS9mbGRfcGFnZS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF9wYWdlLmMgLW8gLi4vb2JqX2cvZmxkX3BhZ2UkbwotCi0uLi9vYmpfZy9mbGRfc3RhdCRvIDoJJChzcmNkaXIpL2ZsZF9zdGF0LmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZmxkX3N0YXQuYyAtbyAuLi9vYmpfZy9mbGRfc3RhdCRvCi0KLS4uL29ial9nL2ZsZF90eXBlJG8gOgkkKHNyY2RpcikvZmxkX3R5cGUuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mbGRfdHlwZS5jIC1vIC4uL29ial9nL2ZsZF90eXBlJG8KLQotLi4vb2JqX2cvZmxkX3VzZXIkbyA6CSQoc3JjZGlyKS9mbGRfdXNlci5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZsZF91c2VyLmMgLW8gLi4vb2JqX2cvZmxkX3VzZXIkbwotCi0uLi9vYmpfZy9mcm1fY3Vyc29yJG8gOgkkKHNyY2RpcikvZnJtX2N1cnNvci5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZybV9jdXJzb3IuYyAtbyAuLi9vYmpfZy9mcm1fY3Vyc29yJG8KLQotLi4vb2JqX2cvZnJtX2RhdGEkbyA6CSQoc3JjZGlyKS9mcm1fZGF0YS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZybV9kYXRhLmMgLW8gLi4vb2JqX2cvZnJtX2RhdGEkbwotCi0uLi9vYmpfZy9mcm1fZGVmJG8gOgkkKHNyY2RpcikvZnJtX2RlZi5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZybV9kZWYuYyAtbyAuLi9vYmpfZy9mcm1fZGVmJG8KLQotLi4vb2JqX2cvZnJtX2RyaXZlciRvIDoJJChzcmNkaXIpL2ZybV9kcml2ZXIuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1fZHJpdmVyLmMgLW8gLi4vb2JqX2cvZnJtX2RyaXZlciRvCi0KLS4uL29ial9nL2ZybV9ob29rJG8gOgkkKHNyY2RpcikvZnJtX2hvb2suYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1faG9vay5jIC1vIC4uL29ial9nL2ZybV9ob29rJG8KLQotLi4vb2JqX2cvZnJtX29wdHMkbyA6CSQoc3JjZGlyKS9mcm1fb3B0cy5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2ZybV9vcHRzLmMgLW8gLi4vb2JqX2cvZnJtX29wdHMkbwotCi0uLi9vYmpfZy9mcm1fcGFnZSRvIDoJJChzcmNkaXIpL2ZybV9wYWdlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZnJtX3BhZ2UuYyAtbyAuLi9vYmpfZy9mcm1fcGFnZSRvCi0KLS4uL29ial9nL2ZybV9wb3N0JG8gOgkkKHNyY2RpcikvZnJtX3Bvc3QuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1fcG9zdC5jIC1vIC4uL29ial9nL2ZybV9wb3N0JG8KLQotLi4vb2JqX2cvZnJtX3JlcV9uYW1lJG8gOgkkKHNyY2RpcikvZnJtX3JlcV9uYW1lLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZnJtX3JlcV9uYW1lLmMgLW8gLi4vb2JqX2cvZnJtX3JlcV9uYW1lJG8KLQotLi4vb2JqX2cvZnJtX3NjYWxlJG8gOgkkKHNyY2RpcikvZnJtX3NjYWxlLmMgXAotCQkJJChGT1JNX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL2Zvcm0vZnJtX3NjYWxlLmMgLW8gLi4vb2JqX2cvZnJtX3NjYWxlJG8KLQotLi4vb2JqX2cvZnJtX3N1YiRvIDoJJChzcmNkaXIpL2ZybV9zdWIuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1fc3ViLmMgLW8gLi4vb2JqX2cvZnJtX3N1YiRvCi0KLS4uL29ial9nL2ZybV91c2VyJG8gOgkkKHNyY2RpcikvZnJtX3VzZXIuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1fdXNlci5jIC1vIC4uL29ial9nL2ZybV91c2VyJG8KLQotLi4vb2JqX2cvZnJtX3dpbiRvIDoJJChzcmNkaXIpL2ZybV93aW4uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mcm1fd2luLmMgLW8gLi4vb2JqX2cvZnJtX3dpbiRvCi0KLS4uL29ial9nL2Z0eV9hbG51bSRvIDoJJChzcmNkaXIpL2Z0eV9hbG51bS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2Z0eV9hbG51bS5jIC1vIC4uL29ial9nL2Z0eV9hbG51bSRvCi0KLS4uL29ial9nL2Z0eV9hbHBoYSRvIDoJJChzcmNkaXIpL2Z0eV9hbHBoYS5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2Z0eV9hbHBoYS5jIC1vIC4uL29ial9nL2Z0eV9hbHBoYSRvCi0KLS4uL29ial9nL2Z0eV9lbnVtJG8gOgkkKHNyY2RpcikvZnR5X2VudW0uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mdHlfZW51bS5jIC1vIC4uL29ial9nL2Z0eV9lbnVtJG8KLQotLi4vb2JqX2cvZnR5X2ludCRvIDoJJChzcmNkaXIpL2Z0eV9pbnQuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mdHlfaW50LmMgLW8gLi4vb2JqX2cvZnR5X2ludCRvCi0KLS4uL29ial9nL2Z0eV9pcHY0JG8gOgkkKHNyY2RpcikvZnR5X2lwdjQuYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mdHlfaXB2NC5jIC1vIC4uL29ial9nL2Z0eV9pcHY0JG8KLQotLi4vb2JqX2cvZnR5X251bSRvIDoJJChzcmNkaXIpL2Z0eV9udW0uYyBcCi0JCQkkKEZPUk1fUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vZm9ybS9mdHlfbnVtLmMgLW8gLi4vb2JqX2cvZnR5X251bSRvCi0KLS4uL29ial9nL2Z0eV9yZWdleCRvIDoJJChzcmNkaXIpL2Z0eV9yZWdleC5jIFwKLQkJCSQoRk9STV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9mb3JtL2Z0eV9yZWdleC5jIC1vIC4uL29ial9nL2Z0eV9yZWdleCRvCi0KLQotIyBnZW5lcmF0ZWQgYnkgbWstaGRyLmF3awotIyAgc3Vic2V0OiAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICBjb21wYXQ6ICAgICB5ZXMKLQotJHtERVNURElSfSR7aW5jbHVkZWRpcn0gOgotCXNoICR7c3JjZGlyfS8uLi9ta2RpcnMuc2ggJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5pbmNsdWRlcyA6OiAke0FVVE9fU1JDfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSBcCi0JCSQoc3JjZGlyKS9mb3JtLmgKLQlAIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiBmb3JtLmgpIDsgLi4vaGVhZGVycy5zaCAke0lOU1RBTExfREFUQX0gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJHtzcmNkaXJ9ICQoc3JjZGlyKS9mb3JtLmgKLQotdW5pbnN0YWxsIFwKLXVuaW5zdGFsbC5saWJzIFwKLXVuaW5zdGFsbC5pbmNsdWRlcyA6OgotCS1AIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiBmb3JtLmgpCi1kZXBlbmQgOiAke0FVVE9fU1JDfQotCW1ha2VkZXBlbmQgLS0gJHtDUFBGTEFHU30gLS0gJHtDX1NSQ30KLQotIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgpkaWZmIC0tZ2l0IGEvZm9ybS9NYWtlZmlsZS5pbiBiL2Zvcm0vTWFrZWZpbGUuaW4KaW5kZXggMmJmMzFlMS4uMjliNDkyOSAxMDA2NDQKLS0tIGEvZm9ybS9NYWtlZmlsZS5pbgorKysgYi9mb3JtL01ha2VmaWxlLmluCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40NyAyMDA3LzA0LzI4IDE0OjU2OjExIHRvbSBFeHAgJAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS42MyAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtNDIsNyArNDIsOCBAQAogIyB0dXJuIG9mZiBfYWxsXyBzdWZmaXggcnVsZXM7IHdlJ2xsIGdlbmVyYXRlIG91ciBvd24KIC5TVUZGSVhFUzoKIAotU0hFTEwJCT0gL2Jpbi9zaAorU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKIFRISVMJCT0gTWFrZWZpbGUKIAogeAkJPSBARVhFRVhUQApAQCAtNTAsMTkgKzUxLDI3IEBACiAKIE1PREVMCQk9IEBERlRfTFdSX01PREVMQAogREVTVERJUgkJPSBAREVTVERJUkAKK3RvcF9zcmNkaXIJPSBAdG9wX3NyY2RpckAKIHNyY2RpcgkJPSBAc3JjZGlyQAogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKIGJpbmRpcgkJPSBAYmluZGlyQAogbGliZGlyCQk9IEBsaWJkaXJACiBpbmNsdWRlZGlyCT0gQGluY2x1ZGVkaXJACitpbmNsdWRlc3ViZGlyCT0gQGluY2x1ZGVzdWJkaXJACisKK0lOQ0xVREVESVIJPSAkKERFU1RESVIpJChpbmNsdWRlZGlyKSQoaW5jbHVkZXN1YmRpcikKKworUEFDS0FHRQkJPSBAUEFDS0FHRUAKIAogTElCVE9PTAkJPSBATElCVE9PTEAKK0xJQlRPT0xfT1BUUwk9IEBMSUJUT09MX09QVFNAIEBFWFBPUlRfU1lNU0AKIExJQlRPT0xfQ0xFQU4JPSBATElCX0NMRUFOQAogTElCVE9PTF9DT01QSUxFCT0gQExJQl9DT01QSUxFQAogTElCVE9PTF9MSU5LCT0gQExJQl9MSU5LQAogTElCVE9PTF9JTlNUQUxMCT0gQExJQl9JTlNUQUxMQAogTElCVE9PTF9VTklOU1RBTEwgPSBATElCX1VOSU5TVEFMTEAKK0xUX1VOREVGCT0gQExUX1VOREVGQAogCiBJTlNUQUxMCQk9IEBJTlNUQUxMQAogSU5TVEFMTF9MSUIJPSBASU5TVEFMTEAgQElOU1RBTExfTElCQApAQCAtNzAsMTYgKzc5LDE5IEBACiBJTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQAogCiBBUgkJPSBAQVJACi1BUl9PUFRTCQk9IEBBUl9PUFRTQAorQVJGTEFHUwkJPSBAQVJGTEFHU0AKIEFXSwkJPSBAQVdLQAogTEQJCT0gQExEQAogTE5fUwkJPSBATE5fU0AKIAorQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAorCiBDQwkJPSBAQ0NACiBDUFAJCT0gQENQUEAKIENGTEFHUwkJPSBAQ0ZMQUdTQAogCi1DUFBGTEFHUwk9IC1JQHRvcF9zcmNkaXJAL25jdXJzZXMgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKK0NQUEZMQUdTCT0gLUkke3RvcF9zcmNkaXJ9L25jdXJzZXMgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKIAogQ0NGTEFHUwkJPSAkKENQUEZMQUdTKSAkKENGTEFHUykKIApAQCAtOTUsOCArMTA3LDExIEBACiBMREZMQUdTCQk9IEBMREZMQUdTQCBATERfTU9ERUxAIEBMSUJTQAogCiBTSExJQl9ESVJTCT0gLUwuLi9saWIKLVNITElCX0xJU1QJPSAkKFNITElCX0RJUlMpIC1sbmN1cnNlc0BMSUJfU1VGRklYQCBAU0hMSUJfTElTVEAKK1NITElCX0xJU1QJPSAkKFNITElCX0RJUlMpIC1sbmN1cnNlc0BVU0VfTElCX1NVRkZJWEAgQFNITElCX0xJU1RACiAKK1JQQVRIX0xJU1QJPSBAUlBBVEhfTElTVEAKK1JFU1VMVElOR19TWU1TCT0gQFJFU1VMVElOR19TWU1TQAorVkVSU0lPTkVEX1NZTVMJPSBAVkVSU0lPTkVEX1NZTVNACiBNS19TSEFSRURfTElCCT0gQE1LX1NIQVJFRF9MSUJACiAKIE5DVVJTRVNfTUFKT1IJPSBATkNVUlNFU19NQUpPUkAKQEAgLTEwNiw3ICsxMjEsNyBAQAogCiBSQU5MSUIJCT0gQExJQl9QUkVQQAogCi1MSUJSQVJJRVMJPSBATElCU19UT19NQUtFQAorTElCUkFSSUVTCT0gQExpYnNfVG9fTWFrZUAKIAogTElOVAkJPSBATElOVEAKIExJTlRfT1BUUwk9IEBMSU5UX09QVFNACkBAIC0xMjQsNyArMTM5LDcgQEAKIAogJChERVNURElSKSQoYmluZGlyKSBcCiAkKERFU1RESVIpJChsaWJkaXIpIDoKLQlzaCAkKHNyY2RpcikvLi4vbWtkaXJzLnNoICRACisJbWtkaXIgLXAgJEAKIAogIyBtYWtlIGNvcGllcyB0byBzaW1wbGlmeSBpbmNsdWRlLXBhdGhzIHdoaWxlIHN0aWxsIGtlZXBpbmcgZm9ybSdzIGluY2x1ZGUKICMgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4KQEAgLTEzMiw3ICsxNDcsNyBAQAogCS1ybSAtZiAkQAogCWNwICQoc3JjZGlyKS9mb3JtLmggJEAKIAotRk9STV9QUklWX0ggPSBcCitIRUFERVJfREVQUyA9IFwKIAkkKHNyY2RpcikvZm9ybS5wcml2LmggXAogCSQoc3JjZGlyKS9mb3JtLmggXAogCS4uL2luY2x1ZGUvbWZfY29tbW9uLmggXApAQCAtMTQwLDEwICsxNTUsMTAgQEAKIAkuLi9pbmNsdWRlL2V0aS5oCiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCisJJChDVEFHUykgKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQpAQCAtMTUzLDYgKzE2OCw3IEBACiAKIGRpc3RjbGVhbiA6OiBjbGVhbgogCS1ybSAtZiBNYWtlZmlsZQorCS1ybSAtcmYgLmxpYnMgKi5kU1lNCiAKIHJlYWxjbGVhbiA6OiBkaXN0Y2xlYW4KIApkaWZmIC0tZ2l0IGEvZm9ybS9mX3RyYWNlLmMgYi9mb3JtL2ZfdHJhY2UuYwppbmRleCAzYmI0Y2NkLi42MDQ0ZTAzIDEwMDY0NAotLS0gYS9mb3JtL2ZfdHJhY2UuYworKysgYi9mb3JtL2ZfdHJhY2UuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDMzICszMiwzMyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmX3RyYWNlLmMsdiAxLjEgMjAwNC8xMi8yNSAyMzoyODo0OSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZfdHJhY2UuYyx2IDEuMiAyMDEwLzAxLzIzIDIxOjE0OjM2IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKEZJRUxEICoqKQogX25jX3JldHJhY2VfZmllbGRfcHRyKEZJRUxEICoqY29kZSkKIHsKLSAgVCgoVF9SRVRVUk4oIiVwIiksIGNvZGUpKTsKKyAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopY29kZSkpOwogICByZXR1cm4gY29kZTsKIH0KIAogTkNVUlNFU19FWFBPUlQoRklFTEQgKikKIF9uY19yZXRyYWNlX2ZpZWxkKEZJRUxEICpjb2RlKQogewotICBUKChUX1JFVFVSTigiJXAiKSwgY29kZSkpOworICBUKChUX1JFVFVSTigiJXAiKSwgKHZvaWQgKiljb2RlKSk7CiAgIHJldHVybiBjb2RlOwogfQogCiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikKIF9uY19yZXRyYWNlX2ZpZWxkX3R5cGUoRklFTERUWVBFICpjb2RlKQogewotICBUKChUX1JFVFVSTigiJXAiKSwgY29kZSkpOworICBUKChUX1JFVFVSTigiJXAiKSwgKHZvaWQgKiljb2RlKSk7CiAgIHJldHVybiBjb2RlOwogfQogCiBOQ1VSU0VTX0VYUE9SVChGT1JNICopCiBfbmNfcmV0cmFjZV9mb3JtKEZPUk0gKmNvZGUpCiB7Ci0gIFQoKFRfUkVUVVJOKCIlcCIpLCBjb2RlKSk7CisgIFQoKFRfUkVUVVJOKCIlcCIpLCAodm9pZCAqKWNvZGUpKTsKICAgcmV0dXJuIGNvZGU7CiB9CiAKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2FyZy5jIGIvZm9ybS9mbGRfYXJnLmMKaW5kZXggZjc5YTE1Ny4uMDAxYzFkMSAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfYXJnLmMKKysrIGIvZm9ybS9mbGRfYXJnLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZsZF9hcmcuYyx2IDEuMTEgMjAwNC8xMi8yNSAyMjoyMDoxOCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9hcmcuYyx2IDEuMTMgMjAxMi8wNi8xMCAwMDoyNzo0OSB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KQEAgLTY3LDExICs2NywxMSBAQAogCQkgIHZvaWQgKCpjb25zdCBmcmVlX2FyZykgKHZvaWQgKikpCiB7CiAgIFQoKFRfQ0FMTEVEKCJzZXRfZmllbGR0eXBlX2FyZyglcCwlcCwlcCwlcCkiKSwKLSAgICAgdHlwLCBtYWtlX2FyZywgY29weV9hcmcsIGZyZWVfYXJnKSk7CisgICAgICh2b2lkICopdHlwLCBtYWtlX2FyZywgY29weV9hcmcsIGZyZWVfYXJnKSk7CiAKICAgaWYgKHR5cCAhPSAwICYmIG1ha2VfYXJnICE9ICh2b2lkICopMCkKICAgICB7Ci0gICAgICB0eXAtPnN0YXR1cyB8PSBfSEFTX0FSR1M7CisgICAgICBTZXRTdGF0dXModHlwLCBfSEFTX0FSR1MpOwogICAgICAgdHlwLT5tYWtlYXJnID0gbWFrZV9hcmc7CiAgICAgICB0eXAtPmNvcHlhcmcgPSBjb3B5X2FyZzsKICAgICAgIHR5cC0+ZnJlZWFyZyA9IGZyZWVfYXJnOwpAQCAtOTEsNyArOTEsNyBAQAogTkNVUlNFU19FWFBPUlQodm9pZCAqKQogZmllbGRfYXJnKGNvbnN0IEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZpZWxkX2FyZyglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX2FyZyglcCkiKSwgKGNvbnN0IHZvaWQgKilmaWVsZCkpOwogICByZXR1cm5Wb2lkUHRyKE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPmFyZyk7CiB9CiAKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2F0dHIuYyBiL2Zvcm0vZmxkX2F0dHIuYwppbmRleCBjOWMwODM4Li4wMTEyZjAwIDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9hdHRyLmMKKysrIGIvZm9ybS9mbGRfYXR0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfYXR0ci5jLHYgMS4xMCAyMDA0LzEyLzExIDIxOjMzOjE1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZmxkX2F0dHIuYyx2IDEuMTEgMjAxMC8wMS8yMyAyMToxMjowOCB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgRmllbGQtQXR0cmlidXRlIG1hbmlwdWxhdGlvbiByb3V0aW5lcwpAQCAtNjYsNyArNjYsNyBAQAogI2RlZmluZSBHRU5fRklFTERfQVRUUl9HRVRfRkNUKCBuYW1lICkgXAogTkNVUlNFU19JTVBFWFAgY2h0eXBlIE5DVVJTRVNfQVBJIGZpZWxkXyAjIyBuYW1lIChjb25zdCBGSUVMRCAqIGZpZWxkKVwKIHtcCi0gICBUKChUX0NBTExFRCgiZmllbGRfIiAjbmFtZSAiKCVwKSIpLCBmaWVsZCkpO1wKKyAgIFQoKFRfQ0FMTEVEKCJmaWVsZF8iICNuYW1lICIoJXApIiksIChjb25zdCB2b2lkICopIGZpZWxkKSk7XAogICAgcmV0dXJuQXR0ciggQV9BVFRSSUJVVEVTICYgKE5vcm1hbGl6ZV9GaWVsZCggZmllbGQgKSAtPiBuYW1lKSApO1wKIH0KIApkaWZmIC0tZ2l0IGEvZm9ybS9mbGRfY3VycmVudC5jIGIvZm9ybS9mbGRfY3VycmVudC5jCmluZGV4IDdjM2E5MGEuLmVmOWVjMDAgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX2N1cnJlbnQuYworKysgYi9mb3JtL2ZsZF9jdXJyZW50LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZsZF9jdXJyZW50LmMsdiAxLjExIDIwMDQvMTIvMjUgMjI6NDA6MTMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfY3VycmVudC5jLHYgMS4xMiAyMDEwLzAxLzIzIDIxOjE0OjM1IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQpAQCAtNTIsNyArNTIsNyBAQAogewogICBpbnQgZXJyID0gRV9PSzsKIAotICBUKChUX0NBTExFRCgic2V0X2N1cnJlbnRfZmllbGQoJXAsJXApIiksIGZvcm0sIGZpZWxkKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfY3VycmVudF9maWVsZCglcCwlcCkiKSwgKHZvaWQgKilmb3JtLCAodm9pZCAqKWZpZWxkKSk7CiAgIGlmIChmb3JtID09IDAgfHwgZmllbGQgPT0gMCkKICAgICB7CiAgICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMTEzLDcgKzExMyw3IEBACiBOQ1VSU0VTX0VYUE9SVChGSUVMRCAqKQogY3VycmVudF9maWVsZChjb25zdCBGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiY3VycmVudF9maWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiY3VycmVudF9maWVsZCglcCkiKSwgKGNvbnN0IHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkZpZWxkKE5vcm1hbGl6ZV9Gb3JtKGZvcm0pLT5jdXJyZW50KTsKIH0KIApAQCAtMTMwLDcgKzEzMCw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBmaWVsZF9pbmRleChjb25zdCBGSUVMRCAqZmllbGQpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmaWVsZF9pbmRleCglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX2luZGV4KCVwKSIpLCAoY29uc3Qgdm9pZCAqKWZpZWxkKSk7CiAgIHJldHVybkNvZGUoKGZpZWxkICE9IDAgJiYgZmllbGQtPmZvcm0gIT0gMCkgPyAoaW50KWZpZWxkLT5pbmRleCA6IC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvZm9ybS9mbGRfZGVmLmMgYi9mb3JtL2ZsZF9kZWYuYwppbmRleCAzNTU5YmE2Li5iMTg0NjJmIDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9kZWYuYworKysgYi9mb3JtL2ZsZF9kZWYuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX2RlZi5jLHYgMS4zNiAyMDA3LzEwLzEzIDE5OjI5OjU4IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZmxkX2RlZi5jLHYgMS40MSAyMDE0LzA3LzI2IDIxOjA4OjU1IHRvbSBFeHAgJCIpCiAKIC8qIHRoaXMgY2FuJ3QgYmUgcmVhZG9ubHkgKi8KIHN0YXRpYyBGSUVMRCBkZWZhdWx0X2ZpZWxkID0KQEAgLTUzLDcgKzUzLDcgQEAKICAgKGludCknICcsCQkJLyogcGFkICAgICAqLwogICBBX05PUk1BTCwJCQkvKiBmb3JlICAgICovCiAgIEFfTk9STUFMLAkJCS8qIGJhY2sgICAgKi8KLSAgQUxMX0ZJRUxEX09QVFMsCQkvKiBvcHRzICAgICovCisgIFNURF9GSUVMRF9PUFRTLAkJLyogb3B0cyAgICAqLwogICAoRklFTEQgKikwLAkJCS8qIHNuZXh0ICAgKi8KICAgKEZJRUxEICopMCwJCQkvKiBzcHJldiAgICovCiAgIChGSUVMRCAqKTAsCQkJLyogbGluayAgICAqLwpAQCAtNjUsOCArNjUsNyBAQAogICBOQ1VSU0VTX0ZJRUxEX0VYVEVOU0lPTgogfTsKIAotTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEICopCi1fbmNfRGVmYXVsdF9GaWVsZCA9ICZkZWZhdWx0X2ZpZWxkOworTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEICopIF9uY19EZWZhdWx0X0ZpZWxkID0gJmRlZmF1bHRfZmllbGQ7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQpAQCAtMTg2LDEwICsxODUsMTIgQEAKICAgICB7CiAgICAgICBpZiAoKHR5cC0+c3RhdHVzICYgX0xJTktFRF9UWVBFKSAhPSAwKQogCXsKLQkgIGFzc2VydChhcmdwICE9IDApOwotCSAgX25jX0ZyZWVfQXJndW1lbnQodHlwLT5sZWZ0LCBhcmdwLT5sZWZ0KTsKLQkgIF9uY19GcmVlX0FyZ3VtZW50KHR5cC0+cmlnaHQsIGFyZ3AtPnJpZ2h0KTsKLQkgIGZyZWUoYXJncCk7CisJICBpZiAoYXJncCAhPSAwKQorCSAgICB7CisJICAgICAgX25jX0ZyZWVfQXJndW1lbnQodHlwLT5sZWZ0LCBhcmdwLT5sZWZ0KTsKKwkgICAgICBfbmNfRnJlZV9Bcmd1bWVudCh0eXAtPnJpZ2h0LCBhcmdwLT5yaWdodCk7CisJICAgICAgZnJlZShhcmdwKTsKKwkgICAgfQogCX0KICAgICAgIGVsc2UKIAl7CkBAIC0yNTIsOCArMjUzLDggQEAKICAgaWYgKGZpZWxkLT50eXBlICE9IDApCiAgICAgewogICAgICAgZmllbGQtPnR5cGUtPnJlZi0tOworICAgICAgX25jX0ZyZWVfQXJndW1lbnQoZmllbGQtPnR5cGUsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpOwogICAgIH0KLSAgX25jX0ZyZWVfQXJndW1lbnQoZmllbGQtPnR5cGUsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjkxLDE2ICsyOTIsMTYgQEAKICAgICAgICgoZXJyID0gRV9TWVNURU1fRVJST1IpICE9IDApICYmCS8qIHRyaWNrOiB0aGlzIHJlc2V0cyB0aGUgZGVmYXVsdCBlcnJvciAqLwogICAgICAgKE5ld19GaWVsZCA9IHR5cGVNYWxsb2MoRklFTEQsIDEpKSAhPSAwKQogICAgIHsKLSAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCBOZXdfRmllbGQpKTsKKyAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCAodm9pZCAqKU5ld19GaWVsZCkpOwogICAgICAgKk5ld19GaWVsZCA9IGRlZmF1bHRfZmllbGQ7Ci0gICAgICBOZXdfRmllbGQtPnJvd3MgPSByb3dzOwotICAgICAgTmV3X0ZpZWxkLT5jb2xzID0gY29sczsKKyAgICAgIE5ld19GaWVsZC0+cm93cyA9IChzaG9ydClyb3dzOworICAgICAgTmV3X0ZpZWxkLT5jb2xzID0gKHNob3J0KWNvbHM7CiAgICAgICBOZXdfRmllbGQtPmRyb3dzID0gcm93cyArIG5yb3c7CiAgICAgICBOZXdfRmllbGQtPmRjb2xzID0gY29sczsKLSAgICAgIE5ld19GaWVsZC0+ZnJvdyA9IGZyb3c7Ci0gICAgICBOZXdfRmllbGQtPmZjb2wgPSBmY29sOworICAgICAgTmV3X0ZpZWxkLT5mcm93ID0gKHNob3J0KWZyb3c7CisgICAgICBOZXdfRmllbGQtPmZjb2wgPSAoc2hvcnQpZmNvbDsKICAgICAgIE5ld19GaWVsZC0+bnJvdyA9IG5yb3c7Ci0gICAgICBOZXdfRmllbGQtPm5idWYgPSBuYnVmOworICAgICAgTmV3X0ZpZWxkLT5uYnVmID0gKHNob3J0KW5idWY7CiAgICAgICBOZXdfRmllbGQtPmxpbmsgPSBOZXdfRmllbGQ7CiAKICNpZiBVU0VfV0lERUNfU1VQUE9SVApAQCAtMzU1LDcgKzM1Niw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBmcmVlX2ZpZWxkKEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZyZWVfZmllbGQoJXApIiksIGZpZWxkKSk7CisgIFQoKFRfQ0FMTEVEKCJmcmVlX2ZpZWxkKCVwKSIpLCAodm9pZCAqKWZpZWxkKSk7CiAgIGlmICghZmllbGQpCiAgICAgewogICAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2R1cC5jIGIvZm9ybS9mbGRfZHVwLmMKaW5kZXggYmJjMzhhMy4uMmRmNDBlZSAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfZHVwLmMKKysrIGIvZm9ybS9mbGRfZHVwLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZsZF9kdXAuYyx2IDEuMTIgMjAwNy8xMC8xMyAxOTozMDoyMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9kdXAuYyx2IDEuMTQgMjAxMi8wMy8xMSAwMDozNzoxNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KQEAgLTUzLDE1ICs1MywxNSBAQAogICBGSUVMRCAqTmV3X0ZpZWxkID0gKEZJRUxEICopMDsKICAgaW50IGVyciA9IEVfQkFEX0FSR1VNRU5UOwogCi0gIFQoKFRfQ0FMTEVEKCJkdXBfZmllbGQoJXAsJWQsJWQpIiksIGZpZWxkLCBmcm93LCBmY29sKSk7CisgIFQoKFRfQ0FMTEVEKCJkdXBfZmllbGQoJXAsJWQsJWQpIiksICh2b2lkICopZmllbGQsIGZyb3csIGZjb2wpKTsKICAgaWYgKGZpZWxkICYmIChmcm93ID49IDApICYmIChmY29sID49IDApICYmCiAgICAgICAoKGVyciA9IEVfU1lTVEVNX0VSUk9SKSAhPSAwKSAmJgkvKiB0cmljayA6IHRoaXMgcmVzZXRzIHRoZSBkZWZhdWx0IGVycm9yICovCiAgICAgICAoTmV3X0ZpZWxkID0gdHlwZU1hbGxvYyhGSUVMRCwgMSkpKQogICAgIHsKLSAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCBOZXdfRmllbGQpKTsKKyAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCAodm9pZCAqKU5ld19GaWVsZCkpOwogICAgICAgKk5ld19GaWVsZCA9ICpfbmNfRGVmYXVsdF9GaWVsZDsKLSAgICAgIE5ld19GaWVsZC0+ZnJvdyA9IGZyb3c7Ci0gICAgICBOZXdfRmllbGQtPmZjb2wgPSBmY29sOworICAgICAgTmV3X0ZpZWxkLT5mcm93ID0gKHNob3J0KSBmcm93OworICAgICAgTmV3X0ZpZWxkLT5mY29sID0gKHNob3J0KSBmY29sOwogICAgICAgTmV3X0ZpZWxkLT5saW5rID0gTmV3X0ZpZWxkOwogICAgICAgTmV3X0ZpZWxkLT5yb3dzID0gZmllbGQtPnJvd3M7CiAgICAgICBOZXdfRmllbGQtPmNvbHMgPSBmaWVsZC0+Y29sczsKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2Z0Y2hvaWNlLmMgYi9mb3JtL2ZsZF9mdGNob2ljZS5jCmluZGV4IDkyMzdmOTYuLjA5MDEzMDYgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX2Z0Y2hvaWNlLmMKKysrIGIvZm9ybS9mbGRfZnRjaG9pY2UuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX2Z0Y2hvaWNlLmMsdiAxLjkgMjAwNC8xMi8xMSAyMTo0NDo1NyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9mdGNob2ljZS5jLHYgMS4xMyAyMDEyLzA2LzEwIDAwOjI3OjQ5IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC01MSwxNCArNTEsMTkgQEAKIAkJICAgICBib29sICgqY29uc3QgbmV4dF9jaG9pY2UpIChGSUVMRCAqLCBjb25zdCB2b2lkICopLAogCQkgICAgIGJvb2wgKCpjb25zdCBwcmV2X2Nob2ljZSkgKEZJRUxEICosIGNvbnN0IHZvaWQgKikpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfZmllbGR0eXBlX2Nob2ljZSglcCwlcCwlcCkiKSwgdHlwLCBuZXh0X2Nob2ljZSwgcHJldl9jaG9pY2UpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9maWVsZHR5cGVfY2hvaWNlKCVwLCVwLCVwKSIpLCAodm9pZCAqKXR5cCwgbmV4dF9jaG9pY2UsIHByZXZfY2hvaWNlKSk7CiAKICAgaWYgKCF0eXAgfHwgIW5leHRfY2hvaWNlIHx8ICFwcmV2X2Nob2ljZSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwogCi0gIHR5cC0+c3RhdHVzIHw9IF9IQVNfQ0hPSUNFOworICBTZXRTdGF0dXModHlwLCBfSEFTX0NIT0lDRSk7CisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisgIHR5cC0+ZW51bV9uZXh0Lm9uZXh0ID0gbmV4dF9jaG9pY2U7CisgIHR5cC0+ZW51bV9wcmV2Lm9wcmV2ID0gcHJldl9jaG9pY2U7CisjZWxzZQogICB0eXAtPm5leHQgPSBuZXh0X2Nob2ljZTsKICAgdHlwLT5wcmV2ID0gcHJldl9jaG9pY2U7CisjZW5kaWYKICAgUkVUVVJOKEVfT0spOwogfQogCmRpZmYgLS1naXQgYS9mb3JtL2ZsZF9mdGxpbmsuYyBiL2Zvcm0vZmxkX2Z0bGluay5jCmluZGV4IDRlZDIyMTkuLmU3YjE0NDAgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX2Z0bGluay5jCisrKyBiL2Zvcm0vZmxkX2Z0bGluay5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfZnRsaW5rLmMsdiAxLjEzIDIwMDcvMTAvMTMgMTk6MzA6MzUgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfZnRsaW5rLmMsdiAxLjE1IDIwMTIvMDYvMTAgMDA6Mjc6NDkgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTUzLDIwICs1MywyMCBAQAogewogICBGSUVMRFRZUEUgKm5mdHlwID0gKEZJRUxEVFlQRSAqKTA7CiAKLSAgVCgoVF9DQUxMRUQoImxpbmtfZmllbGR0eXBlKCVwLCVwKSIpLCB0eXBlMSwgdHlwZTIpKTsKKyAgVCgoVF9DQUxMRUQoImxpbmtfZmllbGR0eXBlKCVwLCVwKSIpLCAodm9pZCAqKXR5cGUxLCAodm9pZCAqKXR5cGUyKSk7CiAgIGlmICh0eXBlMSAmJiB0eXBlMikKICAgICB7CiAgICAgICBuZnR5cCA9IHR5cGVNYWxsb2MoRklFTERUWVBFLCAxKTsKIAogICAgICAgaWYgKG5mdHlwKQogCXsKLQkgIFQoKFRfQ1JFQVRFKCJmaWVsZHR5cGUgJXAiKSwgbmZ0eXApKTsKKwkgIFQoKFRfQ1JFQVRFKCJmaWVsZHR5cGUgJXAiKSwgKHZvaWQgKiluZnR5cCkpOwogCSAgKm5mdHlwID0gKl9uY19EZWZhdWx0X0ZpZWxkVHlwZTsKLQkgIG5mdHlwLT5zdGF0dXMgfD0gX0xJTktFRF9UWVBFOworCSAgU2V0U3RhdHVzKG5mdHlwLCBfTElOS0VEX1RZUEUpOwogCSAgaWYgKCh0eXBlMS0+c3RhdHVzICYgX0hBU19BUkdTKSB8fCAodHlwZTItPnN0YXR1cyAmIF9IQVNfQVJHUykpCi0JICAgIG5mdHlwLT5zdGF0dXMgfD0gX0hBU19BUkdTOworCSAgICBTZXRTdGF0dXMobmZ0eXAsIF9IQVNfQVJHUyk7CiAJICBpZiAoKHR5cGUxLT5zdGF0dXMgJiBfSEFTX0NIT0lDRSkgfHwgKHR5cGUyLT5zdGF0dXMgJiBfSEFTX0NIT0lDRSkpCi0JICAgIG5mdHlwLT5zdGF0dXMgfD0gX0hBU19DSE9JQ0U7CisJICAgIFNldFN0YXR1cyhuZnR5cCwgX0hBU19DSE9JQ0UpOwogCSAgbmZ0eXAtPmxlZnQgPSB0eXBlMTsKIAkgIG5mdHlwLT5yaWdodCA9IHR5cGUyOwogCSAgdHlwZTEtPnJlZisrOwpkaWZmIC0tZ2l0IGEvZm9ybS9mbGRfaW5mby5jIGIvZm9ybS9mbGRfaW5mby5jCmluZGV4IDMyNDE5OGMuLjEzZmU4ZTcgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX2luZm8uYworKysgYi9mb3JtL2ZsZF9pbmZvLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZsZF9pbmZvLmMsdiAxLjEwIDIwMDQvMTIvMTEgMjI6MjQ6NTcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfaW5mby5jLHYgMS4xMSAyMDEwLzAxLzIzIDIxOjE0OjM1IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC01MywxMCArNTMsMTAgQEAKIAkgICBpbnQgKm5yb3csIGludCAqbmJ1ZikKIHsKICAgVCgoVF9DQUxMRUQoImZpZWxkX2luZm8oJXAsJXAsJXAsJXAsJXAsJXAsJXApIiksCi0gICAgIGZpZWxkLAotICAgICByb3dzLCBjb2xzLAotICAgICBmcm93LCBmY29sLAotICAgICBucm93LCBuYnVmKSk7CisgICAgIChjb25zdCB2b2lkICopZmllbGQsCisgICAgICh2b2lkICopcm93cywgKHZvaWQgKiljb2xzLAorICAgICAodm9pZCAqKWZyb3csICh2b2lkICopZmNvbCwKKyAgICAgKHZvaWQgKilucm93LCAodm9pZCAqKW5idWYpKTsKIAogICBpZiAoIWZpZWxkKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC05MSw3ICs5MSwxMSBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogZHluYW1pY19maWVsZF9pbmZvKGNvbnN0IEZJRUxEICpmaWVsZCwgaW50ICpkcm93cywgaW50ICpkY29scywgaW50ICptYXhncm93KQogewotICBUKChUX0NBTExFRCgiZHluYW1pY19maWVsZF9pbmZvKCVwLCVwLCVwLCVwKSIpLCBmaWVsZCwgZHJvd3MsIGRjb2xzLCBtYXhncm93KSk7CisgIFQoKFRfQ0FMTEVEKCJkeW5hbWljX2ZpZWxkX2luZm8oJXAsJXAsJXAsJXApIiksCisgICAgIChjb25zdCB2b2lkICopZmllbGQsCisgICAgICh2b2lkICopZHJvd3MsCisgICAgICh2b2lkICopZGNvbHMsCisgICAgICh2b2lkICopbWF4Z3JvdykpOwogCiAgIGlmICghZmllbGQpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2p1c3QuYyBiL2Zvcm0vZmxkX2p1c3QuYwppbmRleCBlMDIxZmIxLi5kZWEyMGI3IDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9qdXN0LmMKKysrIGIvZm9ybS9mbGRfanVzdC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfanVzdC5jLHYgMS4xMSAyMDA0LzEyLzExIDIyOjU1OjQ4IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZmxkX2p1c3QuYyx2IDEuMTMgMjAxMi8wMy8xMSAwMDozNzoxNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNDksNyArNDksNyBAQAogewogICBpbnQgcmVzID0gRV9CQURfQVJHVU1FTlQ7CiAKLSAgVCgoVF9DQUxMRUQoInNldF9maWVsZF9qdXN0KCVwLCVkKSIpLCBmaWVsZCwganVzdCkpOworICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX2p1c3QoJXAsJWQpIiksICh2b2lkICopZmllbGQsIGp1c3QpKTsKIAogICBpZiAoKGp1c3QgPT0gTk9fSlVTVElGSUNBVElPTikgfHwKICAgICAgIChqdXN0ID09IEpVU1RJRllfTEVGVCkgfHwKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgIE5vcm1hbGl6ZV9GaWVsZChmaWVsZCk7CiAgICAgICBpZiAoZmllbGQtPmp1c3QgIT0ganVzdCkKIAl7Ci0JICBmaWVsZC0+anVzdCA9IGp1c3Q7CisJICBmaWVsZC0+anVzdCA9IChzaG9ydCkganVzdDsKIAkgIHJlcyA9IF9uY19TeW5jaHJvbml6ZV9BdHRyaWJ1dGVzKGZpZWxkKTsKIAl9CiAgICAgICBlbHNlCkBAIC03OSw3ICs3OSw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBmaWVsZF9qdXN0KGNvbnN0IEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZpZWxkX2p1c3QoJXApIiksIGZpZWxkKSk7CisgIFQoKFRfQ0FMTEVEKCJmaWVsZF9qdXN0KCVwKSIpLCAoY29uc3Qgdm9pZCAqKWZpZWxkKSk7CiAgIHJldHVybkNvZGUoTm9ybWFsaXplX0ZpZWxkKGZpZWxkKS0+anVzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX2xpbmsuYyBiL2Zvcm0vZmxkX2xpbmsuYwppbmRleCAwYWFjN2RiLi5iNmM0NzY4IDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9saW5rLmMKKysrIGIvZm9ybS9mbGRfbGluay5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfbGluay5jLHYgMS4xMSAyMDA3LzEwLzEzIDE5OjMwOjQzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZmxkX2xpbmsuYyx2IDEuMTMgMjAxMi8wMy8xMSAwMDozNzoxNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNTQsMTUgKzU0LDE1IEBACiAgIEZJRUxEICpOZXdfRmllbGQgPSAoRklFTEQgKikwOwogICBpbnQgZXJyID0gRV9CQURfQVJHVU1FTlQ7CiAKLSAgVCgoVF9DQUxMRUQoImxpbmtfZmllbGQoJXAsJWQsJWQpIiksIGZpZWxkLCBmcm93LCBmY29sKSk7CisgIFQoKFRfQ0FMTEVEKCJsaW5rX2ZpZWxkKCVwLCVkLCVkKSIpLCAodm9pZCAqKWZpZWxkLCBmcm93LCBmY29sKSk7CiAgIGlmIChmaWVsZCAmJiAoZnJvdyA+PSAwKSAmJiAoZmNvbCA+PSAwKSAmJgogICAgICAgKChlcnIgPSBFX1NZU1RFTV9FUlJPUikgIT0gMCkgJiYJLyogdHJpY2s6IHRoaXMgcmVzZXRzIHRoZSBkZWZhdWx0IGVycm9yICovCiAgICAgICAoTmV3X0ZpZWxkID0gdHlwZU1hbGxvYyhGSUVMRCwgMSkpKQogICAgIHsKLSAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCBOZXdfRmllbGQpKTsKKyAgICAgIFQoKFRfQ1JFQVRFKCJmaWVsZCAlcCIpLCAodm9pZCAqKU5ld19GaWVsZCkpOwogICAgICAgKk5ld19GaWVsZCA9ICpfbmNfRGVmYXVsdF9GaWVsZDsKLSAgICAgIE5ld19GaWVsZC0+ZnJvdyA9IGZyb3c7Ci0gICAgICBOZXdfRmllbGQtPmZjb2wgPSBmY29sOworICAgICAgTmV3X0ZpZWxkLT5mcm93ID0gKHNob3J0KSBmcm93OworICAgICAgTmV3X0ZpZWxkLT5mY29sID0gKHNob3J0KSBmY29sOwogCiAgICAgICBOZXdfRmllbGQtPmxpbmsgPSBmaWVsZC0+bGluazsKICAgICAgIGZpZWxkLT5saW5rID0gTmV3X0ZpZWxkOwpkaWZmIC0tZ2l0IGEvZm9ybS9mbGRfbWF4LmMgYi9mb3JtL2ZsZF9tYXguYwppbmRleCA3ZjUzNTJlLi42YzdmZTcyIDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9tYXguYworKysgYi9mb3JtL2ZsZF9tYXguYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX21heC5jLHYgMS45IDIwMDQvMTIvMTEgMjE6NTE6NTQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfbWF4LmMsdiAxLjEzIDIwMTMvMDgvMjQgMjI6NTk6MjggdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTQ3LDcgKzQ3LDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9tYXhfZmllbGQoRklFTEQgKmZpZWxkLCBpbnQgbWF4Z3JvdykKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9tYXhfZmllbGQoJXAsJWQpIiksIGZpZWxkLCBtYXhncm93KSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfbWF4X2ZpZWxkKCVwLCVkKSIpLCAodm9pZCAqKWZpZWxkLCBtYXhncm93KSk7CiAKICAgaWYgKCFmaWVsZCB8fCAobWF4Z3JvdyA8IDApKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC02MiwxMyArNjIsMTMgQEAKIAkgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKIAl9CiAgICAgICBmaWVsZC0+bWF4Z3JvdyA9IG1heGdyb3c7Ci0gICAgICBmaWVsZC0+c3RhdHVzICY9IH5fTUFZX0dST1c7Ci0gICAgICBpZiAoIShmaWVsZC0+b3B0cyAmIE9fU1RBVElDKSkKKyAgICAgIENsclN0YXR1cyhmaWVsZCwgX01BWV9HUk9XKTsKKyAgICAgIGlmICghKCh1bnNpZ25lZClmaWVsZC0+b3B0cyAmIE9fU1RBVElDKSkKIAl7CiAJICBpZiAoKG1heGdyb3cgPT0gMCkgfHwKIAkgICAgICAoc2luZ2xlX2xpbmVfZmllbGQgJiYgKGZpZWxkLT5kY29scyA8IG1heGdyb3cpKSB8fAogCSAgICAgICghc2luZ2xlX2xpbmVfZmllbGQgJiYgKGZpZWxkLT5kcm93cyA8IG1heGdyb3cpKSkKLQkgICAgZmllbGQtPnN0YXR1cyB8PSBfTUFZX0dST1c7CisJICAgIFNldFN0YXR1cyhmaWVsZCwgX01BWV9HUk9XKTsKIAl9CiAgICAgfQogICBSRVRVUk4oRV9PSyk7CmRpZmYgLS1naXQgYS9mb3JtL2ZsZF9tb3ZlLmMgYi9mb3JtL2ZsZF9tb3ZlLmMKaW5kZXggZDljZWFhZS4uOTlmNTQ5MCAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfbW92ZS5jCisrKyBiL2Zvcm0vZmxkX21vdmUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX21vdmUuYyx2IDEuOSAyMDA0LzEyLzExIDIxOjUyOjQ0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZmxkX21vdmUuYyx2IDEuMTEgMjAxMi8wMy8xMSAwMDozNzoxNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNDgsNyArNDgsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogbW92ZV9maWVsZChGSUVMRCAqZmllbGQsIGludCBmcm93LCBpbnQgZmNvbCkKIHsKLSAgVCgoVF9DQUxMRUQoIm1vdmVfZmllbGQoJXAsJWQsJWQpIiksIGZpZWxkLCBmcm93LCBmY29sKSk7CisgIFQoKFRfQ0FMTEVEKCJtb3ZlX2ZpZWxkKCVwLCVkLCVkKSIpLCAodm9pZCAqKWZpZWxkLCBmcm93LCBmY29sKSk7CiAKICAgaWYgKCFmaWVsZCB8fCAoZnJvdyA8IDApIHx8IChmY29sIDwgMCkpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKQEAgLTU2LDggKzU2LDggQEAKICAgaWYgKGZpZWxkLT5mb3JtKQogICAgIFJFVFVSTihFX0NPTk5FQ1RFRCk7CiAKLSAgZmllbGQtPmZyb3cgPSBmcm93OwotICBmaWVsZC0+ZmNvbCA9IGZjb2w7CisgIGZpZWxkLT5mcm93ID0gKHNob3J0KSBmcm93OworICBmaWVsZC0+ZmNvbCA9IChzaG9ydCkgZmNvbDsKICAgUkVUVVJOKEVfT0spOwogfQogCmRpZmYgLS1naXQgYS9mb3JtL2ZsZF9uZXdmdHlwLmMgYi9mb3JtL2ZsZF9uZXdmdHlwLmMKaW5kZXggYzI5ODRiMS4uNDM1MWFlZCAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfbmV3ZnR5cC5jCisrKyBiL2Zvcm0vZmxkX25ld2Z0eXAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX25ld2Z0eXAuYyx2IDEuMTUgMjAwNy8xMC8xMyAxOTozMDo1NSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9uZXdmdHlwLmMsdiAxLjE5IDIwMTAvMDEvMjMgMjE6MTQ6MzYgdG9tIEV4cCAkIikKIAotc3RhdGljIEZJRUxEVFlQRSBjb25zdCBkZWZhdWx0X2ZpZWxkdHlwZSA9CitzdGF0aWMgRklFTERUWVBFIGRlZmF1bHRfZmllbGR0eXBlID0KIHsKICAgMCwJCQkJLyogc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAwTCwJCQkJLyogcmVmZXJlbmNlIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNDMsMTMgKzQzLDE2IEBACiAgIE5VTEwsCQkJCS8qIG1ha2VhcmcgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgTlVMTCwJCQkJLyogY29weWFyZyBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICBOVUxMLAkJCQkvKiBmcmVlYXJnIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIE5VTEwsCQkJCS8qIGZpZWxkIHZhbGlkYXRpb24gZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgKi8KLSAgTlVMTCwJCQkJLyogQ2hhcmFjdGVyIGNoZWNrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAqLwotICBOVUxMLAkJCQkvKiBlbnVtZXJhdGUgbmV4dCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICovCi0gIE5VTEwJCQkJLyogZW51bWVyYXRlIHByZXZpb3VzIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAqLworICBJTklUX0ZUX0ZVTkMoTlVMTCksCQkvKiBmaWVsZCB2YWxpZGF0aW9uIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICovCisgIElOSVRfRlRfRlVOQyhOVUxMKSwJCS8qIENoYXJhY3RlciBjaGVjayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgKi8KKyAgSU5JVF9GVF9GVU5DKE5VTEwpLAkJLyogZW51bWVyYXRlIG5leHQgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAqLworICBJTklUX0ZUX0ZVTkMoTlVMTCksCQkvKiBlbnVtZXJhdGUgcHJldmlvdXMgZnVuY3Rpb24gICAgICAgICAgICAgICAgICovCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisgIE5VTEwJCQkJLyogZ2VuZXJpYyBjYWxsYmFjayBhbHRlcm5hdGl2ZSB0byBtYWtlYXJnICAgICAqLworI2VuZGlmCiB9OwogCi1OQ1VSU0VTX0VYUE9SVF9WQVIoY29uc3QgRklFTERUWVBFICopCitOQ1VSU0VTX0VYUE9SVF9WQVIoRklFTERUWVBFICopCiBfbmNfRGVmYXVsdF9GaWVsZFR5cGUgPSAmZGVmYXVsdF9maWVsZHR5cGU7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MCwxMCArODMsMTUgQEAKIAogICAgICAgaWYgKG5mdHlwKQogCXsKLQkgIFQoKFRfQ1JFQVRFKCJmaWVsZHR5cGUgJXAiKSwgbmZ0eXApKTsKKwkgIFQoKFRfQ1JFQVRFKCJmaWVsZHR5cGUgJXAiKSwgKHZvaWQgKiluZnR5cCkpOwogCSAgKm5mdHlwID0gZGVmYXVsdF9maWVsZHR5cGU7CisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisJICBuZnR5cC0+ZmllbGRjaGVjay5vZmNoZWNrID0gZmllbGRfY2hlY2s7CisJICBuZnR5cC0+Y2hhcmNoZWNrLm9jY2hlY2sgPSBjaGFyX2NoZWNrOworI2Vsc2UKIAkgIG5mdHlwLT5mY2hlY2sgPSBmaWVsZF9jaGVjazsKIAkgIG5mdHlwLT5jY2hlY2sgPSBjaGFyX2NoZWNrOworI2VuZGlmCiAJfQogICAgICAgZWxzZQogCXsKQEAgLTExMCw3ICsxMTgsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogZnJlZV9maWVsZHR5cGUoRklFTERUWVBFICp0eXApCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmcmVlX2ZpZWxkdHlwZSglcCkiKSwgdHlwKSk7CisgIFQoKFRfQ0FMTEVEKCJmcmVlX2ZpZWxkdHlwZSglcCkiKSwgKHZvaWQgKil0eXApKTsKIAogICBpZiAoIXR5cCkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpkaWZmIC0tZ2l0IGEvZm9ybS9mbGRfb3B0cy5jIGIvZm9ybS9mbGRfb3B0cy5jCmluZGV4IDNjODgxYWMuLmE1MmYxZTIgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX29wdHMuYworKysgYi9mb3JtL2ZsZF9vcHRzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZsZF9vcHRzLmMsdiAxLjExIDIwMDQvMTIvMTEgMjE6NTU6NDYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfb3B0cy5jLHYgMS4xMiAyMDEwLzAxLzIzIDIxOjE0OjM2IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBGaWVsZC1PcHRpb25zIG1hbmlwdWxhdGlvbiByb3V0aW5lcwpAQCAtNTUsNyArNTUsNyBAQAogewogICBpbnQgcmVzID0gRV9CQURfQVJHVU1FTlQ7CiAKLSAgVCgoVF9DQUxMRUQoInNldF9maWVsZF9vcHRzKCVwLCVkKSIpLCBmaWVsZCwgb3B0cykpOworICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX29wdHMoJXAsJWQpIiksICh2b2lkICopZmllbGQsIG9wdHMpKTsKIAogICBvcHRzICY9IEFMTF9GSUVMRF9PUFRTOwogICBpZiAoIShvcHRzICYgfkFMTF9GSUVMRF9PUFRTKSkKQEAgLTc0LDcgKzc0LDcgQEAKIE5DVVJTRVNfRVhQT1JUKEZpZWxkX09wdGlvbnMpCiBmaWVsZF9vcHRzKGNvbnN0IEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZpZWxkX29wdHMoJXApIiksIGZpZWxkKSk7CisgIFQoKFRfQ0FMTEVEKCJmaWVsZF9vcHRzKCVwKSIpLCAoY29uc3Qgdm9pZCAqKWZpZWxkKSk7CiAKICAgcmV0dXJuQ29kZShBTExfRklFTERfT1BUUyAmIE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPm9wdHMpOwogfQpAQCAtOTYsNyArOTYsNyBAQAogewogICBpbnQgcmVzID0gRV9CQURfQVJHVU1FTlQ7CiAKLSAgVCgoVF9DQUxMRUQoImZpZWxkX29wdHNfb24oJXAsJWQpIiksIGZpZWxkLCBvcHRzKSk7CisgIFQoKFRfQ0FMTEVEKCJmaWVsZF9vcHRzX29uKCVwLCVkKSIpLCAodm9pZCAqKWZpZWxkLCBvcHRzKSk7CiAKICAgb3B0cyAmPSBBTExfRklFTERfT1BUUzsKICAgaWYgKCEob3B0cyAmIH5BTExfRklFTERfT1BUUykpCkBAIC0xMjQsNyArMTI0LDcgQEAKIHsKICAgaW50IHJlcyA9IEVfQkFEX0FSR1VNRU5UOwogCi0gIFQoKFRfQ0FMTEVEKCJmaWVsZF9vcHRzX29mZiglcCwlZCkiKSwgZmllbGQsIG9wdHMpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX29wdHNfb2ZmKCVwLCVkKSIpLCAodm9pZCAqKWZpZWxkLCBvcHRzKSk7CiAKICAgb3B0cyAmPSBBTExfRklFTERfT1BUUzsKICAgaWYgKCEob3B0cyAmIH5BTExfRklFTERfT1BUUykpCmRpZmYgLS1naXQgYS9mb3JtL2ZsZF9wYWQuYyBiL2Zvcm0vZmxkX3BhZC5jCmluZGV4IDYzZDhhZDEuLjRmOGZmMWYgMTAwNjQ0Ci0tLSBhL2Zvcm0vZmxkX3BhZC5jCisrKyBiL2Zvcm0vZmxkX3BhZC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfcGFkLmMsdiAxLjkgMjAwNC8xMi8xMSAyMTo1Njo0OSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9wYWQuYyx2IDEuMTAgMjAxMC8wMS8yMyAyMToxNDozNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNTAsNyArNTAsNyBAQAogewogICBpbnQgcmVzID0gRV9CQURfQVJHVU1FTlQ7CiAKLSAgVCgoVF9DQUxMRUQoInNldF9maWVsZF9wYWQoJXAsJWQpIiksIGZpZWxkLCBjaCkpOworICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX3BhZCglcCwlZCkiKSwgKHZvaWQgKilmaWVsZCwgY2gpKTsKIAogICBOb3JtYWxpemVfRmllbGQoZmllbGQpOwogICBpZiAoaXNwcmludChVQ2hhcihjaCkpKQpAQCAtNzcsNyArNzcsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogZmllbGRfcGFkKGNvbnN0IEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZpZWxkX3BhZCglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX3BhZCglcCkiKSwgKGNvbnN0IHZvaWQgKilmaWVsZCkpOwogCiAgIHJldHVybkNvZGUoTm9ybWFsaXplX0ZpZWxkKGZpZWxkKS0+cGFkKTsKIH0KZGlmZiAtLWdpdCBhL2Zvcm0vZmxkX3BhZ2UuYyBiL2Zvcm0vZmxkX3BhZ2UuYwppbmRleCBlMWFmNDk2Li5iY2NlNGNmIDEwMDY0NAotLS0gYS9mb3JtL2ZsZF9wYWdlLmMKKysrIGIvZm9ybS9mbGRfcGFnZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmbGRfcGFnZS5jLHYgMS45IDIwMDQvMTIvMTEgMjE6NTg6MTkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmbGRfcGFnZS5jLHYgMS4xMiAyMDEyLzA2LzEwIDAwOjEyOjQ3IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC00NywxNiArNDcsMTYgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9uZXdfcGFnZShGSUVMRCAqZmllbGQsIGJvb2wgbmV3X3BhZ2VfZmxhZykKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9uZXdfcGFnZSglcCwlZCkiKSwgZmllbGQsIG5ld19wYWdlX2ZsYWcpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9uZXdfcGFnZSglcCwlZCkiKSwgKHZvaWQgKilmaWVsZCwgbmV3X3BhZ2VfZmxhZykpOwogCiAgIE5vcm1hbGl6ZV9GaWVsZChmaWVsZCk7CiAgIGlmIChmaWVsZC0+Zm9ybSkKICAgICBSRVRVUk4oRV9DT05ORUNURUQpOwogCiAgIGlmIChuZXdfcGFnZV9mbGFnKQotICAgIGZpZWxkLT5zdGF0dXMgfD0gX05FV1BBR0U7CisgICAgU2V0U3RhdHVzKGZpZWxkLCBfTkVXUEFHRSk7CiAgIGVsc2UKLSAgICBmaWVsZC0+c3RhdHVzICY9IH5fTkVXUEFHRTsKKyAgICBDbHJTdGF0dXMoZmllbGQsIF9ORVdQQUdFKTsKIAogICBSRVRVUk4oRV9PSyk7CiB9CkBAIC03NCw3ICs3NCw3IEBACiBOQ1VSU0VTX0VYUE9SVChib29sKQogbmV3X3BhZ2UoY29uc3QgRklFTEQgKmZpZWxkKQogewotICBUKChUX0NBTExFRCgibmV3X3BhZ2UoJXApIiksIGZpZWxkKSk7CisgIFQoKFRfQ0FMTEVEKCJuZXdfcGFnZSglcCkiKSwgKGNvbnN0IHZvaWQgKilmaWVsZCkpOwogCiAgIHJldHVybkJvb2woKE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPnN0YXR1cyAmIF9ORVdQQUdFKSA/IFRSVUUgOiBGQUxTRSk7CiB9CmRpZmYgLS1naXQgYS9mb3JtL2ZsZF9zdGF0LmMgYi9mb3JtL2ZsZF9zdGF0LmMKaW5kZXggYjg1YjRkNS4uOWJiZTc2ZSAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfc3RhdC5jCisrKyBiL2Zvcm0vZmxkX3N0YXQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX3N0YXQuYyx2IDEuMTEgMjAwNC8xMi8xMSAyMjoyODowMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF9zdGF0LmMsdiAxLjE0IDIwMTIvMDYvMTAgMDA6MTM6MDkgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTQ2LDE0ICs0NiwxNCBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X2ZpZWxkX3N0YXR1cyhGSUVMRCAqZmllbGQsIGJvb2wgc3RhdHVzKQogewotICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX3N0YXR1cyglcCwlZCkiKSwgZmllbGQsIHN0YXR1cykpOworICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX3N0YXR1cyglcCwlZCkiKSwgKHZvaWQgKilmaWVsZCwgc3RhdHVzKSk7CiAKICAgTm9ybWFsaXplX0ZpZWxkKGZpZWxkKTsKIAogICBpZiAoc3RhdHVzKQotICAgIGZpZWxkLT5zdGF0dXMgfD0gX0NIQU5HRUQ7CisgICAgU2V0U3RhdHVzKGZpZWxkLCBfQ0hBTkdFRCk7CiAgIGVsc2UKLSAgICBmaWVsZC0+c3RhdHVzICY9IH5fQ0hBTkdFRDsKKyAgICBDbHJTdGF0dXMoZmllbGQsIF9DSEFOR0VEKTsKIAogICBSRVRVUk4oRV9PSyk7CiB9CkBAIC03MSw3ICs3MSw3IEBACiBOQ1VSU0VTX0VYUE9SVChib29sKQogZmllbGRfc3RhdHVzKGNvbnN0IEZJRUxEICpmaWVsZCkKIHsKLSAgVCgoVF9DQUxMRUQoImZpZWxkX3N0YXR1cyglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX3N0YXR1cyglcCkiKSwgKGNvbnN0IHZvaWQgKilmaWVsZCkpOwogCiAgIHJldHVybkJvb2woKE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPnN0YXR1cyAmIF9DSEFOR0VEKSA/IFRSVUUgOiBGQUxTRSk7CiB9CmRpZmYgLS1naXQgYS9mb3JtL2ZsZF90eXBlLmMgYi9mb3JtL2ZsZF90eXBlLmMKaW5kZXggYzlhM2ZiZS4uMGIzNWI3ZSAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfdHlwZS5jCisrKyBiL2Zvcm0vZmxkX3R5cGUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX3R5cGUuYyx2IDEuMTUgMjAwNC8xMi8yNSAyMjoyNDoxMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF90eXBlLmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MTQ6MzYgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTUyLDcgKzUyLDcgQEAKICAgaW50IHJlcyA9IEVfU1lTVEVNX0VSUk9SOwogICBpbnQgZXJyID0gMDsKIAotICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX3R5cGUoJXAsJXApIiksIGZpZWxkLCB0eXBlKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfZmllbGRfdHlwZSglcCwlcCkiKSwgKHZvaWQgKilmaWVsZCwgKHZvaWQgKil0eXBlKSk7CiAKICAgdmFfc3RhcnQoYXAsIHR5cGUpOwogCkBAIC05MCw3ICs5MCw3IEBACiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikKIGZpZWxkX3R5cGUoY29uc3QgRklFTEQgKmZpZWxkKQogewotICBUKChUX0NBTExFRCgiZmllbGRfdHlwZSglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoImZpZWxkX3R5cGUoJXApIiksIChjb25zdCB2b2lkICopZmllbGQpKTsKICAgcmV0dXJuRmllbGRUeXBlKE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPnR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9mb3JtL2ZsZF91c2VyLmMgYi9mb3JtL2ZsZF91c2VyLmMKaW5kZXggMzIzNjIyYy4uMzBiY2Y3YSAxMDA2NDQKLS0tIGEvZm9ybS9mbGRfdXNlci5jCisrKyBiL2Zvcm0vZmxkX3VzZXIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZmxkX3VzZXIuYyx2IDEuMTUgMjAwNC8xMi8yNSAyMjoyNDo1MCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZsZF91c2VyLmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MTQ6MzYgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTQ2LDcgKzQ2LDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9maWVsZF91c2VycHRyKEZJRUxEICpmaWVsZCwgdm9pZCAqdXNycHRyKQogewotICBUKChUX0NBTExFRCgic2V0X2ZpZWxkX3VzZXJwdHIoJXAsJXApIiksIGZpZWxkLCB1c3JwdHIpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9maWVsZF91c2VycHRyKCVwLCVwKSIpLCAodm9pZCAqKWZpZWxkLCAodm9pZCAqKXVzcnB0cikpOwogCiAgIE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPnVzcnB0ciA9IHVzcnB0cjsKICAgUkVUVVJOKEVfT0spOwpAQCAtNjUsNyArNjUsNyBAQAogTkNVUlNFU19FWFBPUlQodm9pZCAqKQogZmllbGRfdXNlcnB0cihjb25zdCBGSUVMRCAqZmllbGQpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmaWVsZF91c2VycHRyKCVwKSIpLCBmaWVsZCkpOworICBUKChUX0NBTExFRCgiZmllbGRfdXNlcnB0ciglcCkiKSwgKGNvbnN0IHZvaWQgKilmaWVsZCkpOwogICByZXR1cm5Wb2lkUHRyKE5vcm1hbGl6ZV9GaWVsZChmaWVsZCktPnVzcnB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL2Zvcm0vZm9ybS5oIGIvZm9ybS9mb3JtLmgKaW5kZXggYTQ2OTFhOC4uMDk4NTZkYyAxMDA2NDQKLS0tIGEvZm9ybS9mb3JtLmgKKysrIGIvZm9ybS9mb3JtLmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCwxMCArMzAsMTEgQEAKICAqICAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk1LDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogJElkOiBmb3JtLmgsdiAwLjIwIDIwMDQvMTIvMDQgMjI6MjI6MTAgdG9tIEV4cCAkICovCisvKiAkSWQ6IGZvcm0uaCx2IDAuMjQgMjAxNC8wNy8yNiAyMDo1MjoyOCB0b20gRXhwICQgKi8KIAogI2lmbmRlZiBGT1JNX0gKICNkZWZpbmUgRk9STV9ICisvKiAqSU5ERU5ULU9GRiovCiAKICNpbmNsdWRlIDxjdXJzZXMuaD4KICNpbmNsdWRlIDxldGkuaD4KQEAgLTEwNSwzNCArMTA2LDEzIEBACiAgIE5DVVJTRVNfRklFTERfSU5URVJOQUxTCiB9IEZJRUxEOwogCi0JLyoqKioqKioqKioqKioqCi0JKiAgRklFTERUWVBFICAqCi0JKioqKioqKioqKioqKiovCi0KLXR5cGVkZWYgc3RydWN0IHR5cGVub2RlIHsKLSAgdW5zaWduZWQgc2hvcnQJc3RhdHVzOwkJCS8qIGZsYWdzCQkqLwotICBsb25nCQkJcmVmOwkJCS8qIHJlZmVyZW5jZSBjb3VudAkqLwotICBzdHJ1Y3QgdHlwZW5vZGUgKglsZWZ0OwkJCS8qIHB0ciB0byBvcGVyYW5kIGZvciB8ICovCi0gIHN0cnVjdCB0eXBlbm9kZSAqCXJpZ2h0OwkJCS8qIHB0ciB0byBvcGVyYW5kIGZvciB8ICovCi0KLSAgdm9pZCogKCptYWtlYXJnKSh2YV9saXN0ICopOwkJCS8qIG1ha2UgZmllbGR0eXBlIGFyZwkqLwotICB2b2lkKiAoKmNvcHlhcmcpKGNvbnN0IHZvaWQgKik7CQkvKiBjb3B5IGZpZWxkdHlwZSBhcmcJKi8KLSAgdm9pZAkoKmZyZWVhcmcpKHZvaWQgKik7CQkJLyogZnJlZSBmaWVsZHR5cGUgYXJnCSovCi0KLSAgYm9vbAkoKmZjaGVjaykoRklFTEQgKixjb25zdCB2b2lkICopOwkvKiBmaWVsZCB2YWxpZGF0aW9uCSovCi0gIGJvb2wJKCpjY2hlY2spKGludCxjb25zdCB2b2lkICopOwkJLyogY2hhcmFjdGVyIHZhbGlkYXRpb24gKi8KLQotICBib29sCSgqbmV4dCkoRklFTEQgKixjb25zdCB2b2lkICopOwkJLyogZW51bWVyYXRlIG5leHQgdmFsdWUgKi8KLSAgYm9vbAkoKnByZXYpKEZJRUxEICosY29uc3Qgdm9pZCAqKTsJCS8qIGVudW1lcmF0ZSBwcmV2IHZhbHVlICovCi0KLX0gRklFTERUWVBFOwogCiAJLyoqKioqKioqKgogCSogIEZPUk0gICoKIAkqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IGZvcm1ub2RlIHsKLSAgdW5zaWduZWQgc2hvcnQJc3RhdHVzOwkJLyogZmxhZ3MJCQkqLworICB1bnNpZ25lZCBzaG9ydAlzdGF0dXM7CSAgCS8qIGZsYWdzCQkJKi8KICAgc2hvcnQJCQlyb3dzOwkJLyogc2l6ZSBpbiByb3dzCQkJKi8KICAgc2hvcnQJCQljb2xzOwkJLyogc2l6ZSBpbiBjb2xzCQkJKi8KICAgaW50CQkJY3Vycm93OwkJLyogY3VycmVudCByb3cgaW4gZmllbGQgd2luZG93CSovCkBAIC0xNTgsNiArMTM4LDQ5IEBACiAKIH0gRk9STTsKIAorCisJLyoqKioqKioqKioqKioqCisJKiAgRklFTERUWVBFICAqCisJKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHR5cGVub2RlIHsKKyAgdW5zaWduZWQgc2hvcnQJc3RhdHVzOwkJCS8qIGZsYWdzCQkgICAgKi8KKyAgbG9uZwkJCXJlZjsJCQkvKiByZWZlcmVuY2UgY291bnQJICAgICovCisgIHN0cnVjdCB0eXBlbm9kZSAqCWxlZnQ7CQkJLyogcHRyIHRvIG9wZXJhbmQgZm9yIHwgICAgICovCisgIHN0cnVjdCB0eXBlbm9kZSAqCXJpZ2h0OwkJCS8qIHB0ciB0byBvcGVyYW5kIGZvciB8ICAgICAqLworCisgIHZvaWQqICgqbWFrZWFyZykodmFfbGlzdCAqKTsJCQkvKiBtYWtlIGZpZWxkdHlwZSBhcmcJICAgICovCisgIHZvaWQqICgqY29weWFyZykoY29uc3Qgdm9pZCAqKTsJCS8qIGNvcHkgZmllbGR0eXBlIGFyZyAJICAgICovCisgIHZvaWQJKCpmcmVlYXJnKSh2b2lkICopOwkJCS8qIGZyZWUgZmllbGR0eXBlIGFyZwkgICAgKi8KKworI2lmIE5DVVJTRVNfSU5URVJPUF9GVU5DUworICB1bmlvbiB7CisgICAgYm9vbCAoKm9mY2hlY2spKEZJRUxEICosY29uc3Qgdm9pZCAqKTsJLyogZmllbGQgdmFsaWRhdGlvbgkgICAgKi8KKyAgICBib29sICgqZ2ZjaGVjaykoRk9STSosRklFTEQgKixjb25zdCB2b2lkKik7CS8qIGdlbmVyaWMgZmllbGQgdmFsaWRhdGlvbiAqLworICB9IGZpZWxkY2hlY2s7CisgIHVuaW9uIHsKKyAgICBib29sICgqb2NjaGVjaykoaW50LGNvbnN0IHZvaWQgKik7CQkvKiBjaGFyYWN0ZXIgdmFsaWRhdGlvbiAgICAgKi8KKyAgICBib29sICgqZ2NjaGVjaykoaW50LEZPUk0qLAorCQkgICAgRklFTEQqLGNvbnN0IHZvaWQqKTsgICAgICAgIC8qIGdlbmVyaWMgY2hhciB2YWxpZGF0aW9uICAqLworICB9IGNoYXJjaGVjazsKKyAgdW5pb24geworICAgIGJvb2wgKCpvbmV4dCkoRklFTEQgKixjb25zdCB2b2lkICopOyAgICAgICAgLyogZW51bWVyYXRlIG5leHQgdmFsdWUgICAgICovCisgICAgYm9vbCAoKmduZXh0KShGT1JNKixGSUVMRCosY29uc3Qgdm9pZCopOyAgICAvKiBnZW5lcmljIGVudW1lcmF0ZSBuZXh0ICAgKi8KKyAgfSBlbnVtX25leHQ7CisgIHVuaW9uIHsKKyAgICBib29sICgqb3ByZXYpKEZJRUxEICosY29uc3Qgdm9pZCAqKTsJLyogZW51bWVyYXRlIHByZXYgdmFsdWUgICAgICovCisgICAgYm9vbCAoKmdwcmV2KShGT1JNKixGSUVMRCosY29uc3Qgdm9pZCopOyAgICAvKiBnZW5lcmljIGVudW1lcmF0ZSBwcmV2ICAgKi8KKyAgfSBlbnVtX3ByZXY7CisgIHZvaWQqICgqZ2VuZXJpY2FyZykodm9pZCopOyAgICAgICAgICAgICAgICAgICAvKiBBbHRlcm5hdGUgQXJnIG1ldGhvZCAgICAgKi8KKyNlbHNlCisgIGJvb2wJKCpmY2hlY2spKEZJRUxEICosY29uc3Qgdm9pZCAqKTsJLyogZmllbGQgdmFsaWRhdGlvbgkqLworICBib29sCSgqY2NoZWNrKShpbnQsY29uc3Qgdm9pZCAqKTsJCS8qIGNoYXJhY3RlciB2YWxpZGF0aW9uICovCisKKyAgYm9vbAkoKm5leHQpKEZJRUxEICosY29uc3Qgdm9pZCAqKTsJCS8qIGVudW1lcmF0ZSBuZXh0IHZhbHVlICovCisgIGJvb2wJKCpwcmV2KShGSUVMRCAqLGNvbnN0IHZvaWQgKik7CQkvKiBlbnVtZXJhdGUgcHJldiB2YWx1ZSAqLworI2VuZGlmCit9IEZJRUxEVFlQRTsKKwogdHlwZWRlZiB2b2lkICgqRm9ybV9Ib29rKShGT1JNICopOwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTgxLDYgKzIwNCw3IEBACiAjZGVmaW5lIE9fTlVMTE9LCQkoMHgwMDgwVSkKICNkZWZpbmUgT19QQVNTT0sJCSgweDAxMDBVKQogI2RlZmluZSBPX1NUQVRJQwkJKDB4MDIwMFUpCisjZGVmaW5lIE9fRFlOQU1JQ19KVVNUSUZZCSgweDA0MDBVKQkvKiBuY3Vyc2VzIGV4dGVuc2lvbgkqLwogCiAvKiBmb3JtIG9wdGlvbnMgKi8KICNkZWZpbmUgT19OTF9PVkVSTE9BRAkJKDB4MDAwMVUpCkBAIC0yNzksMTMgKzMwMyw2IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKSBUWVBFX0lQVjQ7ICAgICAgLyogSW50ZXJuZXQgSVAgVmVyc2lvbiA0IGFkZHJlc3MgKi8KIAogCS8qKioqKioqKioqKioqKioqKioqKioqKgotCSogICBEZWZhdWx0IG9iamVjdHMgICAgKgotCSoqKioqKioqKioqKioqKioqKioqKioqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihGT1JNICopCV9uY19EZWZhdWx0X0Zvcm07Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEICopCV9uY19EZWZhdWx0X0ZpZWxkOwotCi0KLQkvKioqKioqKioqKioqKioqKioqKioqKioKIAkqICBGSUVMRFRZUEUgcm91dGluZXMgICoKIAkqKioqKioqKioqKioqKioqKioqKioqKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikgbmV3X2ZpZWxkdHlwZSAoCkBAIC0zODEsNiArMzk4LDkgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXVucG9zdF9mb3JtIChGT1JNICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJcG9zX2Zvcm1fY3Vyc29yIChGT1JNICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJZm9ybV9kcml2ZXIgKEZPUk0gKixpbnQpOworIyBpZiBOQ1VSU0VTX1dJREVDSEFSCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmb3JtX2RyaXZlcl93IChGT1JNICosaW50LHdjaGFyX3QpOworIyBlbmRpZgogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2Zvcm1fdXNlcnB0ciAoRk9STSAqLHZvaWQgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZm9ybV9vcHRzIChGT1JNICosRm9ybV9PcHRpb25zKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZvcm1fb3B0c19vbiAoRk9STSAqLEZvcm1fT3B0aW9ucyk7CkBAIC0zOTYsOCArNDE2LDEzIEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkJZGF0YV9haGVhZCAoY29uc3QgRk9STSAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKQlkYXRhX2JlaGluZCAoY29uc3QgRk9STSAqKTsKIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChGT1JNICopCU5DVVJTRVNfU1BfTkFNRShuZXdfZm9ybSkgKFNDUkVFTiosIEZJRUxEICoqKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKICAgfQogI2VuZGlmCisvKiAqSU5ERU5ULU9OKi8KIAotI2VuZGlmCS8qIEZPUk1fSCAqLworI2VuZGlmIC8qIEZPUk1fSCAqLwpkaWZmIC0tZ2l0IGEvZm9ybS9mb3JtLnByaXYuaCBiL2Zvcm0vZm9ybS5wcml2LmgKaW5kZXggZmVhNjI3ZC4uNGQxZGZlNyAxMDA2NDQKLS0tIGEvZm9ybS9mb3JtLnByaXYuaAorKysgYi9mb3JtL2Zvcm0ucHJpdi5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsMTEgKzMwLDExIEBACiAgKiAgIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NSwxOTk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qICRJZDogZm9ybS5wcml2LmgsdiAwLjI3IDIwMDgvMDkvMDggMjA6Mjk6MDUgdG9tIEV4cCAkICovCisvKiAkSWQ6IGZvcm0ucHJpdi5oLHYgMC4zOCAyMDE0LzExLzAxIDEzOjU2OjE0IHRvbSBFeHAgJCAqLwogCiAjaWZuZGVmIEZPUk1fUFJJVl9ICiAjZGVmaW5lIEZPUk1fUFJJVl9IIDEKLQorLyogKklOREVOVC1PRkYqLwogI2luY2x1ZGUgImN1cnNlcy5wcml2LmgiCiAjaW5jbHVkZSAibWZfY29tbW9uLmgiCiAKQEAgLTYyLDYgKzYyLDEzIEBACiAKICNpbmNsdWRlICJmb3JtLmgiCiAKKwkvKioqKioqKioqKioqKioqKioqKioqKioKKwkqICAgRGVmYXVsdCBvYmplY3RzICAgICoKKwkqKioqKioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoRk9STSAqKSAgICAgIF9uY19EZWZhdWx0X0Zvcm07CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEICopICAgICBfbmNfRGVmYXVsdF9GaWVsZDsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoRklFTERUWVBFICopIF9uY19EZWZhdWx0X0ZpZWxkVHlwZTsKKwogLyogZm9ybSAgc3RhdHVzIHZhbHVlcyAqLwogI2RlZmluZSBfT1ZMTU9ERSAgICAgICAgICgweDA0VSkgLyogRm9ybSBpcyBpbiBvdmVybGF5IG1vZGUgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgX1dJTkRPV19NT0RJRklFRCAoMHgxMFUpIC8qIEN1cnJlbnQgZmllbGQgd2luZG93IGhhcyBiZWVuIG1vZGlmaWVkICovCkBAIC03OCw2ICs4NSw3IEBACiAjZGVmaW5lIF9IQVNfQVJHUyAgICAgICAgKDB4MDJVKSAvKiBUeXBlIGhhcyBhcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBfSEFTX0NIT0lDRSAgICAgICgweDA0VSkgLyogVHlwZSBoYXMgY2hvaWNlIG1ldGhvZHMgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgX1JFU0lERU5UICAgICAgICAoMHgwOFUpIC8qIFR5cGUgaXMgYnVpbHQtaW4gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9HRU5FUklDICAgICAgICAgKDB4MTBVKSAvKiBBIGdlbmVyaWMgZmllbGQgdHlwZSAgICAgICAgICAgICAgICAgICAqLwogCiAvKiBUaGlzIGFyZSB0aGUgZmllbGQgb3B0aW9ucyByZXF1aXJlZCB0byBiZSBhIHNlbGVjdGFibGUgZmllbGQgaW4gZmllbGQKICAgIG5hdmlnYXRpb24gcmVxdWVzdHMgKi8KQEAgLTkxLDIxICs5OSwzNCBAQAogI2RlZmluZSBOb3JtYWxpemVfRmllbGQoZmllbGQpIFwKICAgKChmaWVsZCkgPSAoZmllbGQgIT0gMCkgPyAoZmllbGQpIDogX25jX0RlZmF1bHRfRmllbGQpCiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIEdldF9Gb3JtX1NjcmVlbihmb3JtKSBcCisgICgoZm9ybSktPndpbiA/IF9uY19zY3JlZW5fb2YoKGZvcm0tPndpbikpOkNVUlJFTlRfU0NSRUVOKQorI2Vsc2UKKyNkZWZpbmUgR2V0X0Zvcm1fU2NyZWVuKGZvcm0pIENVUlJFTlRfU0NSRUVOCisjZW5kaWYKKwogLyogUmV0cmlldmUgZm9ybXMgd2luZG93ICovCiAjZGVmaW5lIEdldF9Gb3JtX1dpbmRvdyhmb3JtKSBcCi0gICgoZm9ybSktPnN1Yj8oZm9ybSktPnN1YjooKGZvcm0pLT53aW4/KGZvcm0pLT53aW46c3Rkc2NyKSkKKyAgKChmb3JtKS0+c3ViIFwKKyAgID8gKGZvcm0pLT5zdWIgXAorICAgOiAoKGZvcm0pLT53aW4gXAorICAgICAgPyAoZm9ybSktPndpbiBcCisgICAgICA6IFN0ZFNjcmVlbihHZXRfRm9ybV9TY3JlZW4oZm9ybSkpKSkKIAogLyogQ2FsY3VsYXRlIHRoZSBzaXplIGZvciBhIHNpbmdsZSBidWZmZXIgZm9yIHRoaXMgZmllbGQgKi8KICNkZWZpbmUgQnVmZmVyX0xlbmd0aChmaWVsZCkgKChmaWVsZCktPmRyb3dzICogKGZpZWxkKS0+ZGNvbHMpCiAKIC8qIENhbGN1bGF0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgYnVmZmVycyBmb3IgdGhpcyBmaWVsZCAqLwogI2RlZmluZSBUb3RhbF9CdWZmZXJfU2l6ZShmaWVsZCkgXAotICAgKCAoQnVmZmVyX0xlbmd0aChmaWVsZCkgKyAxKSAqICgxKyhmaWVsZCktPm5idWYpICogc2l6ZW9mKEZJRUxEX0NFTEwpICkKKyAgICggKHNpemVfdCkoQnVmZmVyX0xlbmd0aChmaWVsZCkgKyAxKSAqIChzaXplX3QpKDErKGZpZWxkKS0+bmJ1ZikgKiBzaXplb2YoRklFTERfQ0VMTCkgKQogCiAvKiBMb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBmaWVsZCBpcyBzaW5nbGUgbGluZWQgKi8KICNkZWZpbmUgU2luZ2xlX0xpbmVfRmllbGQoZmllbGQpIFwKICAgICgoKGZpZWxkKS0+cm93cyArIChmaWVsZCktPm5yb3cpID09IDEpCiAKKyNkZWZpbmUgRmllbGRfSGFzX09wdGlvbihmLG8pICAgICAgKCgoKHVuc2lnbmVkKShmKS0+b3B0cykgJiBvKSAhPSAwKQorCiAvKiBMb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBmaWVsZCBpcyBzZWxlY3RhYmxlICovCiAjZGVmaW5lIEZpZWxkX0lzX1NlbGVjdGFibGUoZikgICAgICgoKHVuc2lnbmVkKSgoZiktPm9wdHMpICYgT19TRUxFQ1RBQkxFKT09T19TRUxFQ1RBQkxFKQogI2RlZmluZSBGaWVsZF9Jc19Ob3RfU2VsZWN0YWJsZShmKSAoKCh1bnNpZ25lZCkoKGYpLT5vcHRzKSAmIE9fU0VMRUNUQUJMRSkhPU9fU0VMRUNUQUJMRSkKQEAgLTEyNyw3ICsxNDgsNyBAQAogCQkJT19OTF9PVkVSTE9BRCAgfFwKIAkJCU9fQlNfT1ZFUkxPQUQgICApCiAKLSNkZWZpbmUgQUxMX0ZJRUxEX09QVFMgKEZpZWxkX09wdGlvbnMpKCBcCisjZGVmaW5lIFNURF9GSUVMRF9PUFRTIChGaWVsZF9PcHRpb25zKSggXAogCQkJT19WSVNJQkxFIHxcCiAJCQlPX0FDVElWRSAgfFwKIAkJCU9fUFVCTElDICB8XApAQCAtMTM3LDE1ICsxNTgsMTcgQEAKIAkJCU9fQVVUT1NLSVB8XAogCQkJT19OVUxMT0sgIHxcCiAJCQlPX1BBU1NPSyAgfFwKLQkJCU9fU1RBVElDICAgKQorCQkJT19TVEFUSUMpCisKKyNkZWZpbmUgQUxMX0ZJRUxEX09QVFMgKEZpZWxkX09wdGlvbnMpKCBcCisJCQlTVERfRklFTERfT1BUUyB8XAorCQkJT19EWU5BTUlDX0pVU1RJRlkpCiAKICNkZWZpbmUgQ19CTEFOSyAnICcKICNkZWZpbmUgaXNfYmxhbmsoYykgKChjKT09Q19CTEFOSykKIAogI2RlZmluZSBDX1pFUk9TICdcMCcKIAotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihjb25zdCBGSUVMRFRZUEUgKikgX25jX0RlZmF1bHRfRmllbGRUeXBlOwotCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoVHlwZUFyZ3VtZW50ICopIF9uY19NYWtlX0FyZ3VtZW50IChjb25zdCBGSUVMRFRZUEUqLCB2YV9saXN0KiwgaW50Kik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoVHlwZUFyZ3VtZW50ICopIF9uY19Db3B5X0FyZ3VtZW50IChjb25zdCBGSUVMRFRZUEUqLCBjb25zdCBUeXBlQXJndW1lbnQqLCBpbnQqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfRnJlZV9Bcmd1bWVudCAoY29uc3QgRklFTERUWVBFKiwgVHlwZUFyZ3VtZW50Kik7CkBAIC0xNjEsMjMgKzE4NCw1MyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX1NldF9DdXJyZW50X0ZpZWxkIChGT1JNKiwgRklFTEQqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvciAoRk9STSopOwogCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCitleHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopIF9uY19UWVBFX0lOVEVHRVIodm9pZCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopIF9uY19UWVBFX0FMTlVNKHZvaWQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKSBfbmNfVFlQRV9BTFBIQSh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikgX25jX1RZUEVfRU5VTSh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikgX25jX1RZUEVfTlVNRVJJQyh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikgX25jX1RZUEVfUkVHRVhQKHZvaWQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKSBfbmNfVFlQRV9JUFY0KHZvaWQpOworCitleHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopCitfbmNfZ2VuZXJpY19maWVsZHR5cGUoYm9vbCAoKmNvbnN0IGZpZWxkX2NoZWNrKSAoRk9STSosIAorCQkJCQkJIEZJRUxEICosIAorCQkJCQkJIGNvbnN0IHZvaWQgKiksCisJCSAgICAgIGJvb2wgKCpjb25zdCBjaGFyX2NoZWNrKSAgKGludCwgCisJCQkJCQkgRk9STSosIAorCQkJCQkJIEZJRUxEKiwgCisJCQkJCQkgY29uc3Qgdm9pZCAqKSwKKwkJICAgICAgYm9vbCAoKmNvbnN0IG5leHQpKEZPUk0qLEZJRUxEKixjb25zdCB2b2lkKiksCisJCSAgICAgIGJvb2wgKCpjb25zdCBwcmV2KShGT1JNKixGSUVMRCosY29uc3Qgdm9pZCopLAorCQkgICAgICB2b2lkICgqZnJlZWNhbGxiYWNrKSh2b2lkKikpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZShGSUVMRCosIEZJRUxEVFlQRSosIGludCAoKikodm9pZCoqKSk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XKikgX25jX2Zvcm1fY3Vyc29yKGNvbnN0IEZPUk0qICwgaW50KiAsIGludCogKTsKKworI2RlZmluZSBJTklUX0ZUX0ZVTkMoZnVuYykge2Z1bmN9CisjZWxzZQorI2RlZmluZSBJTklUX0ZUX0ZVTkMoZnVuYykgZnVuYworI2VuZGlmCisKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZ2V0X2ZpZWxkYnVmZmVyKEZPUk0qLCBGSUVMRCosIEZJRUxEX0NFTEwqKTsKKwogI2lmIFVTRV9XSURFQ19TVVBQT1JUCiBleHRlcm4gTkNVUlNFU19FWFBPUlQod2NoYXJfdCAqKSBfbmNfV2lkZW5fU3RyaW5nKGNoYXIgKiwgaW50ICopOwogI2VuZGlmCiAKICNpZmRlZiBUUkFDRQogCi0jZGVmaW5lIHJldHVybkZpZWxkKGNvZGUpCVRSQUNFX1JFVFVSTihjb2RlLGZpZWxkKQotI2RlZmluZSByZXR1cm5GaWVsZFB0cihjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxmaWVsZF9wdHIpCi0jZGVmaW5lIHJldHVybkZvcm0oY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsZm9ybSkKLSNkZWZpbmUgcmV0dXJuRmllbGRUeXBlKGNvZGUpCVRSQUNFX1JFVFVSTihjb2RlLGZpZWxkX3R5cGUpCi0jZGVmaW5lIHJldHVybkZvcm1Ib29rKGNvZGUpCVRSQUNFX1JFVFVSTihjb2RlLGZvcm1faG9vaykKKyNkZWZpbmUgcmV0dXJuRmllbGQoY29kZSkJVFJBQ0VfUkVUVVJOMShjb2RlLGZpZWxkKQorI2RlZmluZSByZXR1cm5GaWVsZFB0cihjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUsZmllbGRfcHRyKQorI2RlZmluZSByZXR1cm5Gb3JtKGNvZGUpCVRSQUNFX1JFVFVSTjEoY29kZSxmb3JtKQorI2RlZmluZSByZXR1cm5GaWVsZFR5cGUoY29kZSkJVFJBQ0VfUkVUVVJOMShjb2RlLGZpZWxkX3R5cGUpCisjZGVmaW5lIHJldHVybkZvcm1Ib29rKGNvZGUpCVRSQUNFX1JFVFVSTjEoY29kZSxmb3JtX2hvb2spCiAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRCAqKikJICAgIF9uY19yZXRyYWNlX2ZpZWxkX3B0ciAoRklFTEQgKiopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEICopCSAgICBfbmNfcmV0cmFjZV9maWVsZCAoRklFTEQgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopICBfbmNfcmV0cmFjZV9maWVsZF90eXBlIChGSUVMRFRZUEUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoRk9STSAqKSAgX25jX3JldHJhY2VfZm9ybSAoRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGb3JtX0hvb2spICBfbmNfcmV0cmFjZV9mb3JtX2hvb2sgKEZvcm1fSG9vayk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoRk9STSAqKSAgICAgICBfbmNfcmV0cmFjZV9mb3JtIChGT1JNICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZvcm1fSG9vaykgICAgX25jX3JldHJhY2VfZm9ybV9ob29rIChGb3JtX0hvb2spOwogCiAjZWxzZSAvKiAhVFJBQ0UgKi8KIApAQCAtMjQ2LDUgKzI5OSw2IEBACiAgICAgICByZXN1bHQgPSAoKCpidWZmZXIgfHwgKGwgPCB3aWR0aCkpID8gRkFMU0UgOiBUUlVFKTsgXAogICAgIH0KICNlbmRpZgorLyogKklOREVOVC1PTiovCiAKICNlbmRpZiAvKiBGT1JNX1BSSVZfSCAqLwpkaWZmIC0tZ2l0IGEvZm9ybS9mcm1fY3Vyc29yLmMgYi9mb3JtL2ZybV9jdXJzb3IuYwppbmRleCAxOGRhYmFiLi43YTRjZDE2IDEwMDY0NAotLS0gYS9mb3JtL2ZybV9jdXJzb3IuYworKysgYi9mb3JtL2ZybV9jdXJzb3IuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZnJtX2N1cnNvci5jLHYgMS45IDIwMDQvMTIvMTEgMjI6MDE6MDMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fY3Vyc29yLmMsdiAxLjEwIDIwMTAvMDEvMjMgMjE6MTQ6MzYgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTUzLDcgKzUzLDcgQEAKIHsKICAgaW50IHJlczsKIAotICBUKChUX0NBTExFRCgicG9zX2Zvcm1fY3Vyc29yKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJwb3NfZm9ybV9jdXJzb3IoJXApIiksICh2b2lkICopZm9ybSkpOwogCiAgIGlmICghZm9ybSkKICAgICByZXMgPSBFX0JBRF9BUkdVTUVOVDsKZGlmZiAtLWdpdCBhL2Zvcm0vZnJtX2RhdGEuYyBiL2Zvcm0vZnJtX2RhdGEuYwppbmRleCA3ODdhMTc5Li5hOTM2MDYwIDEwMDY0NAotLS0gYS9mb3JtL2ZybV9kYXRhLmMKKysrIGIvZm9ybS9mcm1fZGF0YS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmcm1fZGF0YS5jLHYgMS4xNCAyMDA1LzExLzI2IDE1OjM0OjAxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZnJtX2RhdGEuYyx2IDEuMTYgMjAxMy8wOC8yNCAyMjo0NDowNSB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNDksNyArNDksNyBAQAogewogICBib29sIHJlc3VsdCA9IEZBTFNFOwogCi0gIFQoKFRfQ0FMTEVEKCJkYXRhX2JlaGluZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiZGF0YV9iZWhpbmQoJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOwogCiAgIGlmIChmb3JtICYmIChmb3JtLT5zdGF0dXMgJiBfUE9TVEVEKSAmJiBmb3JtLT5jdXJyZW50KQogICAgIHsKQEAgLTEwMyw3ICsxMDMsNyBAQAogCQl9CiAJICAgIH0KICNlbHNlCi0JICBjZWxsID0gd2luY2godyk7CisJICBjZWxsID0gKEZJRUxEX0NFTEwpIHdpbmNoKHcpOwogCSAgaWYgKENoQ2hhck9mKGNlbGwpICE9IENoQ2hhck9mKHBhZCkpCiAJICAgIHsKIAkgICAgICByZXN1bHQgPSBGQUxTRTsKQEAgLTEzNiw3ICsxMzYsNyBAQAogewogICBib29sIHJlc3VsdCA9IEZBTFNFOwogCi0gIFQoKFRfQ0FMTEVEKCJkYXRhX2FoZWFkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJkYXRhX2FoZWFkKCVwKSIpLCAoY29uc3Qgdm9pZCAqKWZvcm0pKTsKIAogICBpZiAoZm9ybSAmJiAoZm9ybS0+c3RhdHVzICYgX1BPU1RFRCkgJiYgZm9ybS0+Y3VycmVudCkKICAgICB7CmRpZmYgLS1naXQgYS9mb3JtL2ZybV9kZWYuYyBiL2Zvcm0vZnJtX2RlZi5jCmluZGV4IGU2ODk3NTEuLmZkN2I1NmEgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnJtX2RlZi5jCisrKyBiL2Zvcm0vZnJtX2RlZi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmcm1fZGVmLmMsdiAxLjIzIDIwMDgvMDgvMDQgMDA6MDc6NTUgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fZGVmLmMsdiAxLjI2IDIwMTIvMDMvMTEgMDA6Mzc6MTYgdG9tIEV4cCAkIikKIAogLyogdGhpcyBjYW4ndCBiZSByZWFkb25seSAqLwogc3RhdGljIEZPUk0gZGVmYXVsdF9mb3JtID0KQEAgLTE2MCw3ICsxNjAsNyBAQAogICBpbnQgbWF4aW11bV9yb3dfaW5fZmllbGQsIG1heGltdW1fY29sX2luX2ZpZWxkOwogICBfUEFHRSAqcGc7CiAKLSAgVCgoVF9DQUxMRUQoIkNvbm5lY3RfRmllbGRzKCVwLCVwKSIpLCBmb3JtLCBmaWVsZHMpKTsKKyAgVCgoVF9DQUxMRUQoIkNvbm5lY3RfRmllbGRzKCVwLCVwKSIpLCAodm9pZCAqKWZvcm0sICh2b2lkICopZmllbGRzKSk7CiAKICAgYXNzZXJ0KGZvcm0pOwogCkBAIC0xODgsNyArMTg4LDcgQEAKICAgLyogYWxsb2NhdGUgcGFnZSBzdHJ1Y3R1cmVzICovCiAgIGlmICgocGcgPSB0eXBlTWFsbG9jKF9QQUdFLCBwYWdlX25yKSkgIT0gKF9QQUdFICopIDApCiAgICAgewotICAgICAgVCgoVF9DUkVBVEUoIl9QQUdFICVwIiksIHBnKSk7CisgICAgICBUKChUX0NSRUFURSgiX1BBR0UgJXAiKSwgKHZvaWQgKilwZykpOwogICAgICAgZm9ybS0+cGFnZSA9IHBnOwogICAgIH0KICAgZWxzZQpAQCAtMTk5LDE0ICsxOTksMTQgQEAKICAgZm9yIChqID0gMDsgaiA8IGZpZWxkX2NudDsgaisrKQogICAgIHsKICAgICAgIGlmIChqID09IDApCi0JcGctPnBtaW4gPSBqOworCXBnLT5wbWluID0gKHNob3J0KSBqOwogICAgICAgZWxzZQogCXsKIAkgIGlmIChmaWVsZHNbal0tPnN0YXR1cyAmIF9ORVdQQUdFKQogCSAgICB7Ci0JICAgICAgcGctPnBtYXggPSBqIC0gMTsKKwkgICAgICBwZy0+cG1heCA9IChzaG9ydCkgKGogLSAxKTsKIAkgICAgICBwZysrOwotCSAgICAgIHBnLT5wbWluID0gajsKKwkgICAgICBwZy0+cG1pbiA9IChzaG9ydCkgajsKIAkgICAgfQogCX0KIApAQCAtMjE0LDE0ICsyMTQsMTQgQEAKICAgICAgIG1heGltdW1fY29sX2luX2ZpZWxkID0gZmllbGRzW2pdLT5mY29sICsgZmllbGRzW2pdLT5jb2xzOwogCiAgICAgICBpZiAoZm9ybS0+cm93cyA8IG1heGltdW1fcm93X2luX2ZpZWxkKQotCWZvcm0tPnJvd3MgPSBtYXhpbXVtX3Jvd19pbl9maWVsZDsKKwlmb3JtLT5yb3dzID0gKHNob3J0KSBtYXhpbXVtX3Jvd19pbl9maWVsZDsKICAgICAgIGlmIChmb3JtLT5jb2xzIDwgbWF4aW11bV9jb2xfaW5fZmllbGQpCi0JZm9ybS0+Y29scyA9IG1heGltdW1fY29sX2luX2ZpZWxkOworCWZvcm0tPmNvbHMgPSAoc2hvcnQpIG1heGltdW1fY29sX2luX2ZpZWxkOwogICAgIH0KIAotICBwZy0+cG1heCA9IGZpZWxkX2NudCAtIDE7Ci0gIGZvcm0tPm1heGZpZWxkID0gZmllbGRfY250OwotICBmb3JtLT5tYXhwYWdlID0gcGFnZV9ucjsKKyAgcGctPnBtYXggPSAoc2hvcnQpIChmaWVsZF9jbnQgLSAxKTsKKyAgZm9ybS0+bWF4ZmllbGQgPSAoc2hvcnQpIGZpZWxkX2NudDsKKyAgZm9ybS0+bWF4cGFnZSA9IChzaG9ydCkgcGFnZV9ucjsKIAogICAvKiBTb3J0IGZpZWxkcyBvbiBmb3JtIHBhZ2VzICovCiAgIGZvciAocGFnZV9uciA9IDA7IHBhZ2VfbnIgPCBmb3JtLT5tYXhwYWdlOyBwYWdlX25yKyspCkBAIC0yMzAsOCArMjMwLDggQEAKIAogICAgICAgZm9yIChqID0gZm9ybS0+cGFnZVtwYWdlX25yXS5wbWluOyBqIDw9IGZvcm0tPnBhZ2VbcGFnZV9ucl0ucG1heDsgaisrKQogCXsKLQkgIGZpZWxkc1tqXS0+aW5kZXggPSBqOwotCSAgZmllbGRzW2pdLT5wYWdlID0gcGFnZV9ucjsKKwkgIGZpZWxkc1tqXS0+aW5kZXggPSAoc2hvcnQpIGo7CisJICBmaWVsZHNbal0tPnBhZ2UgPSAoc2hvcnQpIHBhZ2VfbnI7CiAJICBmbGQgPSBJbnNlcnRfRmllbGRfQnlfUG9zaXRpb24oZmllbGRzW2pdLCBmbGQpOwogCX0KICAgICAgIGlmIChmbGQpCkBAIC0yODMsNyArMjgzLDcgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKLXwgICBGdW5jdGlvbiAgICAgIDogIEZPUk0gKm5ld19mb3JtKCBGSUVMRCAqKmZpZWxkcyApCit8ICAgRnVuY3Rpb24gICAgICA6ICBGT1JNICpuZXdfZm9ybV9zcChTQ1JFRU4qIHNwLCBGSUVMRCoqIGZpZWxkcyApCiB8ICAgCiB8ICAgRGVzY3JpcHRpb24gICA6ICBDcmVhdGUgbmV3IGZvcm0gd2l0aCBnaXZlbiBhcnJheSBvZiBmaWVsZHMuCiB8CkBAIC0yOTUsMjEgKzI5NSwzMSBAQAogfCAgICAgICAgICAgICAgICAgICAgRV9TWVNURU1fRVJST1IgIC0gbm90IGVub3VnaCBtZW1vcnkKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBOQ1VSU0VTX0VYUE9SVChGT1JNICopCi1uZXdfZm9ybShGSUVMRCAqKmZpZWxkcykKK05DVVJTRVNfU1BfTkFNRShuZXdfZm9ybSkgKE5DVVJTRVNfU1BfRENMeCBGSUVMRCAqKmZpZWxkcykKIHsKICAgaW50IGVyciA9IEVfU1lTVEVNX0VSUk9SOworICBGT1JNICpmb3JtID0gKEZPUk0gKikwOwogCi0gIEZPUk0gKmZvcm0gPSB0eXBlTWFsbG9jKEZPUk0sIDEpOworICBUKChUX0NBTExFRCgibmV3X2Zvcm0oJXAsJXApIiksICh2b2lkICopU1BfUEFSTSwgKHZvaWQgKilmaWVsZHMpKTsKIAotICBUKChUX0NBTExFRCgibmV3X2Zvcm0oJXApIiksIGZpZWxkcykpOwotICBpZiAoZm9ybSkKKyAgaWYgKElzVmFsaWRTY3JlZW4oU1BfUEFSTSkpCiAgICAgewotICAgICAgVCgoVF9DUkVBVEUoImZvcm0gJXAiKSwgZm9ybSkpOwotICAgICAgKmZvcm0gPSAqX25jX0RlZmF1bHRfRm9ybTsKLSAgICAgIGlmICgoZXJyID0gQXNzb2NpYXRlX0ZpZWxkcyhmb3JtLCBmaWVsZHMpKSAhPSBFX09LKQorICAgICAgZm9ybSA9IHR5cGVNYWxsb2MoRk9STSwgMSk7CisKKyAgICAgIGlmIChmb3JtKQogCXsKLQkgIGZyZWVfZm9ybShmb3JtKTsKLQkgIGZvcm0gPSAoRk9STSAqKTA7CisJICBUKChUX0NSRUFURSgiZm9ybSAlcCIpLCAodm9pZCAqKWZvcm0pKTsKKwkgICpmb3JtID0gKl9uY19EZWZhdWx0X0Zvcm07CisJICAvKiBUaGlzIGVuc3VyZXMgd2luIGFuZCBzdWIgYXJlIGFsd2F5cyBub24tbnVsbCwKKwkgICAgIHNvIHdlIGNhbiBkZXJpdmUgYWx3YXlzIHRoZSBTQ1JFRU4gdGhhdCB0aGlzIGZvcm0gaXMKKwkgICAgIHJ1bm5pbmcgb24uICovCisJICBmb3JtLT53aW4gPSBTdGRTY3JlZW4oU1BfUEFSTSk7CisJICBmb3JtLT5zdWIgPSBTdGRTY3JlZW4oU1BfUEFSTSk7CisJICBpZiAoKGVyciA9IEFzc29jaWF0ZV9GaWVsZHMoZm9ybSwgZmllbGRzKSkgIT0gRV9PSykKKwkgICAgeworCSAgICAgIGZyZWVfZm9ybShmb3JtKTsKKwkgICAgICBmb3JtID0gKEZPUk0gKikwOworCSAgICB9CiAJfQogICAgIH0KIApAQCAtMzIxLDYgKzMzMSwyNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIAorfCAgIEZ1bmN0aW9uICAgICAgOiAgRk9STSogbmV3X2Zvcm0oRklFTEQqKiBmaWVsZHMgKQorfCAgIAorfCAgIERlc2NyaXB0aW9uICAgOiAgQ3JlYXRlIG5ldyBmb3JtIHdpdGggZ2l2ZW4gYXJyYXkgb2YgZmllbGRzLgorfAorfCAgIFJldHVybiBWYWx1ZXMgOiAgUG9pbnRlciB0byBmb3JtLiBOVUxMIGlmIGVycm9yIG9jY3VycmVkLgorISAgICAgICAgICAgICAgICAgICAgU2V0IGVycm5vOgorfCAgICAgICAgICAgICAgICAgICAgRV9PSyAgICAgICAgICAgIC0gc3VjY2VzcworfCAgICAgICAgICAgICAgICAgICAgRV9CQURfQVJHVU1FTlQgIC0gSW52YWxpZCBmb3JtIHBvaW50ZXIgb3IgZmllbGQgYXJyYXkKK3wgICAgICAgICAgICAgICAgICAgIEVfQ09OTkVDVEVEICAgICAtIGEgZmllbGQgaXMgYWxyZWFkeSBjb25uZWN0ZWQKK3wgICAgICAgICAgICAgICAgICAgIEVfU1lTVEVNX0VSUk9SICAtIG5vdCBlbm91Z2ggbWVtb3J5CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKEZPUk0gKikKK25ld19mb3JtKEZJRUxEICoqZmllbGRzKQoreworICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKG5ld19mb3JtKSAoQ1VSUkVOVF9TQ1JFRU4sIGZpZWxkcyk7Cit9CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKIHwgICBGdW5jdGlvbiAgICAgIDogIGludCBmcmVlX2Zvcm0oIEZPUk0gKmZvcm0gKQogfCAgIAogfCAgIERlc2NyaXB0aW9uICAgOiAgUmVsZWFzZSBpbnRlcm5hbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGZvcm0uCkBAIC0zMzIsNyArMzYzLDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIGZyZWVfZm9ybShGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiZnJlZV9mb3JtKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJmcmVlX2Zvcm0oJXApIiksICh2b2lkICopZm9ybSkpOwogCiAgIGlmICghZm9ybSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMzY2LDcgKzM5Nyw3IEBACiAgIEZJRUxEICoqb2xkOwogICBpbnQgcmVzOwogCi0gIFQoKFRfQ0FMTEVEKCJzZXRfZm9ybV9maWVsZHMoJXAsJXApIiksIGZvcm0sIGZpZWxkcykpOworICBUKChUX0NBTExFRCgic2V0X2Zvcm1fZmllbGRzKCVwLCVwKSIpLCAodm9pZCAqKWZvcm0sICh2b2lkICopZmllbGRzKSk7CiAKICAgaWYgKCFmb3JtKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC0zOTQsNyArNDI1LDcgQEAKIE5DVVJTRVNfRVhQT1JUKEZJRUxEICoqKQogZm9ybV9maWVsZHMoY29uc3QgRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoImZvcm1fZmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoImZvcm1fZmllbGQoJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOwogICByZXR1cm5GaWVsZFB0cihOb3JtYWxpemVfRm9ybShmb3JtKS0+ZmllbGQpOwogfQogCkBAIC00MDksNyArNDQwLDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIGZpZWxkX2NvdW50KGNvbnN0IEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmaWVsZF9jb3VudCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiZmllbGRfY291bnQoJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOwogCiAgIHJldHVybkNvZGUoTm9ybWFsaXplX0Zvcm0oZm9ybSktPm1heGZpZWxkKTsKIH0KZGlmZiAtLWdpdCBhL2Zvcm0vZnJtX2RyaXZlci5jIGIvZm9ybS9mcm1fZHJpdmVyLmMKaW5kZXggOTQzMjNlZC4uZWViZGU0MiAxMDA2NDQKLS0tIGEvZm9ybS9mcm1fZHJpdmVyLmMKKysrIGIvZm9ybS9mcm1fZHJpdmVyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9kcml2ZXIuYyx2IDEuODggMjAwOC8xMC8xOCAxNjoyNTowMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZybV9kcml2ZXIuYyx2IDEuMTE1IDIwMTQvMDkvMjUgMjE6NTU6MjQgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFRoaXMgaXMgdGhlIGNvcmUgbW9kdWxlIG9mIHRoZSBmb3JtIGxpYnJhcnkuIEl0IGNvbnRhaW5zIHRoZSBtYWpvcml0eQpAQCAtMTcyLDI5ICsxNzIsMzAgQEAKICAgIGluc3RlYWQgb2YgYSBkZXJpdmVkIHdpbmRvdyBiZWNhdXNlIGl0IGNvbnRhaW5zIGludmlzaWJsZSBwYXJ0cy4KICAgIFRoaXMgaXMgdHJ1ZSBmb3Igbm9uLXB1YmxpYyBmaWVsZHMgYW5kIGZvciBzY3JvbGxhYmxlIGZpZWxkcy4gKi8KICNkZWZpbmUgSGFzX0ludmlzaWJsZV9QYXJ0cyhmaWVsZCkgICAgIFwKLSAgKCEoKGZpZWxkKS0+b3B0cyAmIE9fUFVCTElDKSAgICAgIHx8IFwKKyAgKCEoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19QVUJMSUMpKSB8fCBcCiAgICBJc19TY3JvbGxfRmllbGQoZmllbGQpKQogCiAvKiBMb2dpYyB0byBkZWNpZGUgd2hldGhlciBvciBub3QgYSBmaWVsZCBuZWVkcyBqdXN0aWZpY2F0aW9uICovCiAjZGVmaW5lIEp1c3RpZmljYXRpb25fQWxsb3dlZChmaWVsZCkgICAgICAgIFwKICAgICgoKGZpZWxkKS0+anVzdCAhPSBOT19KVVNUSUZJQ0FUSU9OKSAgJiYgXAogICAgIChTaW5nbGVfTGluZV9GaWVsZChmaWVsZCkpICAgICAgICAgICAmJiBcCi0gICAgKCgoZmllbGQpLT5kY29scyA9PSAoZmllbGQpLT5jb2xzKSAgICYmIFwKLSAgICAoKGZpZWxkKS0+b3B0cyAmIE9fU1RBVElDKSkgICAgICAgICAgICAgKQorICAgICgoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19TVEFUSUMpICAmJiBcCisgICAgICgoZmllbGQpLT5kY29scyA9PSAoZmllbGQpLT5jb2xzKSkgIHx8IFwKKyAgICBGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0RZTkFNSUNfSlVTVElGWSkpKQogCiAvKiBMb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBkeW5hbWljIGZpZWxkIG1heSBzdGlsbCBncm93ICovCiAjZGVmaW5lIEdyb3dhYmxlKGZpZWxkKSAoKGZpZWxkKS0+c3RhdHVzICYgX01BWV9HUk9XKQogCiAvKiBNYWNybyB0byBzZXQgdGhlIGF0dHJpYnV0ZXMgZm9yIGEgZmllbGRzIHdpbmRvdyAqLwogI2RlZmluZSBTZXRfRmllbGRfV2luZG93X0F0dHJpYnV0ZXMoZmllbGQsd2luKSBcCi0oICB3YmtnZHNldCgod2luKSwoY2h0eXBlKSgoZmllbGQpLT5wYWQgfCAoZmllbGQpLT5iYWNrKSksIFwKLSAgIHdhdHRyc2V0KCh3aW4pLChmaWVsZCktPmZvcmUpICkKKyggIHdia2dkc2V0KCh3aW4pLChjaHR5cGUpKChjaHR5cGUpKChmaWVsZCktPnBhZCkgfCAoZmllbGQpLT5iYWNrKSksIFwKKyAgICh2b2lkKSB3YXR0cnNldCgod2luKSwgKGludCkoZmllbGQpLT5mb3JlKSApCiAKIC8qIExvZ2ljIHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCBhIGZpZWxkIHJlYWxseSBhcHBlYXJzIG9uIHRoZSBmb3JtICovCiAjZGVmaW5lIEZpZWxkX1JlYWxseV9BcHBlYXJzKGZpZWxkKSAgICAgICAgIFwKICAgKChmaWVsZC0+Zm9ybSkgICAgICAgICAgICAgICAgICAgICAgICAgICYmXAogICAgKGZpZWxkLT5mb3JtLT5zdGF0dXMgJiBfUE9TVEVEKSAgICAgICAgJiZcCi0gICAoZmllbGQtPm9wdHMgJiBPX1ZJU0lCTEUpICAgICAgICAgICAgICAmJlwKKyAgIChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX1ZJU0lCTEUpKSAgICYmXAogICAgKGZpZWxkLT5wYWdlID09IGZpZWxkLT5mb3JtLT5jdXJwYWdlKSkKIAogLyogTG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBvbiB0aGUgZmlyc3QgcG9zaXRpb24gaW4gdGhlCkBAIC01MTIsOSArNTEzLDEwIEBACiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQotfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIHZvaWQgV2luZG93X1RvX0J1ZmZlcigKK3wgICBGdW5jdGlvbiAgICAgIDogIHZvaWQgX25jX2dldF9maWVsZGJ1ZmZlcigKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSU5ET1cgKiB3aW4sCi18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTEQgICogZmllbGQpCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTEQgICogZmllbGQsCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfQ0VMTCAqIGJ1ZikKIHwKIHwgICBEZXNjcmlwdGlvbiAgIDogIENvcHkgdGhlIGNvbnRlbnQgb2YgdGhlIHdpbmRvdyBpbnRvIHRoZSBidWZmZXIuCiB8ICAgICAgICAgICAgICAgICAgICBUaGUgbXVsdGlwbGUgbGluZXMgb2YgYSB3aW5kb3cgYXJlIHNpbXBseQpAQCAtNTIzLDE4ICs1MjUsMjIgQEAKIHwKIHwgICBSZXR1cm4gVmFsdWVzIDogIC0KICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1zdGF0aWMgdm9pZAotV2luZG93X1RvX0J1ZmZlcihXSU5ET1cgKndpbiwgRklFTEQgKmZpZWxkKQorTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19nZXRfZmllbGRidWZmZXIoRk9STSAqZm9ybSwgRklFTEQgKmZpZWxkLCBGSUVMRF9DRUxMICpidWYpCiB7CiAgIGludCBwYWQ7CiAgIGludCBsZW4gPSAwOwogICBGSUVMRF9DRUxMICpwOwogICBpbnQgcm93LCBoZWlnaHQ7CisgIFdJTkRPVyAqd2luOwogCi0gIGFzc2VydCh3aW4gJiYgZmllbGQgJiYgZmllbGQtPmJ1Zik7CisgIGFzc2VydChmb3JtICYmIGZpZWxkICYmIGJ1Zik7CisKKyAgd2luID0gZm9ybS0+dzsKKyAgYXNzZXJ0KHdpbik7CiAKICAgcGFkID0gZmllbGQtPnBhZDsKLSAgcCA9IGZpZWxkLT5idWY7CisgIHAgPSBidWY7CiAgIGhlaWdodCA9IGdldG1heHkod2luKTsKIAogICBmb3IgKHJvdyA9IDA7IChyb3cgPCBoZWlnaHQpICYmIChyb3cgPCBmaWVsZC0+ZHJvd3MpOyByb3crKykKQEAgLTU2Myw2ICs1NjksMjUgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCBXaW5kb3dfVG9fQnVmZmVyKAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUk0gICAqIGZvcm0sCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTEQgICogZmllbGQpCit8Cit8ICAgRGVzY3JpcHRpb24gICA6ICBDb3B5IHRoZSBjb250ZW50IG9mIHRoZSB3aW5kb3cgaW50byB0aGUgYnVmZmVyLgorfCAgICAgICAgICAgICAgICAgICAgVGhlIG11bHRpcGxlIGxpbmVzIG9mIGEgd2luZG93IGFyZSBzaW1wbHkKK3wgICAgICAgICAgICAgICAgICAgIGNvbmNhdGVuYXRlZCBpbnRvIHRoZSBidWZmZXIuIFBhZCBjaGFyYWN0ZXJzIGluCit8ICAgICAgICAgICAgICAgICAgICB0aGUgd2luZG93IHdpbGwgYmUgcmVwbGFjZWQgYnkgYmxhbmtzIGluIHRoZSBidWZmZXIuCit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICAtCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQKK1dpbmRvd19Ub19CdWZmZXIoRk9STSAqZm9ybSwgRklFTEQgKmZpZWxkKQoreworICBfbmNfZ2V0X2ZpZWxkYnVmZmVyKGZvcm0sIGZpZWxkLCBmaWVsZC0+YnVmKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCBTeW5jaHJvbml6ZV9CdWZmZXIoRk9STSAqIGZvcm0pCiB8CiB8ICAgRGVzY3JpcHRpb24gICA6ICBJZiB0aGVyZSB3YXMgYSBjaGFuZ2UsIGNvcHkgdGhlIGNvbnRlbnQgb2YgdGhlCkBAIC01NzcsOSArNjAyLDkgQEAKIHsKICAgaWYgKGZvcm0tPnN0YXR1cyAmIF9XSU5ET1dfTU9ESUZJRUQpCiAgICAgewotICAgICAgZm9ybS0+c3RhdHVzICY9IH5fV0lORE9XX01PRElGSUVEOwotICAgICAgZm9ybS0+c3RhdHVzIHw9IF9GQ0hFQ0tfUkVRVUlSRUQ7Ci0gICAgICBXaW5kb3dfVG9fQnVmZmVyKGZvcm0tPncsIGZvcm0tPmN1cnJlbnQpOworICAgICAgQ2xyU3RhdHVzKGZvcm0sIF9XSU5ET1dfTU9ESUZJRUQpOworICAgICAgU2V0U3RhdHVzKGZvcm0sIF9GQ0hFQ0tfUkVRVUlSRUQpOworICAgICAgV2luZG93X1RvX0J1ZmZlcihmb3JtLCBmb3JtLT5jdXJyZW50KTsKICAgICAgIHdtb3ZlKGZvcm0tPncsIGZvcm0tPmN1cnJvdywgZm9ybS0+Y3VyY29sKTsKICAgICB9CiB9CkBAIC02MjksNyArNjU0LDcgQEAKIAkgICAgZ3Jvd3RoID0gTWluaW11bShmaWVsZC0+bWF4Z3JvdyAtIGZpZWxkLT5kY29scywgZ3Jvd3RoKTsKIAkgIGZpZWxkLT5kY29scyArPSBncm93dGg7CiAJICBpZiAoZmllbGQtPmRjb2xzID09IGZpZWxkLT5tYXhncm93KQotCSAgICBmaWVsZC0+c3RhdHVzICY9IH5fTUFZX0dST1c7CisJICAgIENsclN0YXR1cyhmaWVsZCwgX01BWV9HUk9XKTsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAtNjM4LDcgKzY2Myw3IEBACiAJICAgIGdyb3d0aCA9IE1pbmltdW0oZmllbGQtPm1heGdyb3cgLSBmaWVsZC0+ZHJvd3MsIGdyb3d0aCk7CiAJICBmaWVsZC0+ZHJvd3MgKz0gZ3Jvd3RoOwogCSAgaWYgKGZpZWxkLT5kcm93cyA9PSBmaWVsZC0+bWF4Z3JvdykKLQkgICAgZmllbGQtPnN0YXR1cyAmPSB+X01BWV9HUk9XOworCSAgICBDbHJTdGF0dXMoZmllbGQsIF9NQVlfR1JPVyk7CiAJfQogICAgICAgLyogZHJvd3MsIGRjb2xzIGNoYW5nZWQsIHNvIHdlIGdldCByZWFsbHkgdGhlIG5ldyBidWZmZXIgbGVuZ3RoICovCiAgICAgICBuZXdfYnVmbGVuID0gQnVmZmVyX0xlbmd0aChmaWVsZCk7CkBAIC02NTAsNyArNjc1LDcgQEAKIAkgIGZpZWxkLT5kcm93cyA9IG9sZF9kcm93czsKIAkgIGlmICgoc2luZ2xlX2xpbmVfZmllbGQgJiYgKGZpZWxkLT5kY29scyAhPSBmaWVsZC0+bWF4Z3JvdykpIHx8CiAJICAgICAgKCFzaW5nbGVfbGluZV9maWVsZCAmJiAoZmllbGQtPmRyb3dzICE9IGZpZWxkLT5tYXhncm93KSkpCi0JICAgIGZpZWxkLT5zdGF0dXMgfD0gX01BWV9HUk9XOworCSAgICBTZXRTdGF0dXMoZmllbGQsIF9NQVlfR1JPVyk7CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTY2Myw3ICs2ODgsNyBAQAogCiAJICByZXN1bHQgPSBUUlVFOwkvKiBhbGxvdyBzaGFyaW5nIG9mIHJlY292ZXJ5IG9uIGZhaWx1cmUgKi8KIAotCSAgVCgoVF9DUkVBVEUoImZpZWxkY2VsbCAlcCIpLCBuZXdidWYpKTsKKwkgIFQoKFRfQ1JFQVRFKCJmaWVsZGNlbGwgJXAiKSwgKHZvaWQgKiluZXdidWYpKTsKIAkgIGZpZWxkLT5idWYgPSBuZXdidWY7CiAJICBmb3IgKGkgPSAwOyBpIDw9IGZpZWxkLT5uYnVmOyBpKyspCiAJICAgIHsKQEAgLTcyOSw3ICs3NTQsNyBAQAogCQkgICAoZmllbGQtPmRjb2xzICE9IGZpZWxkLT5tYXhncm93KSkgfHwKIAkJICAoIXNpbmdsZV9saW5lX2ZpZWxkICYmCiAJCSAgIChmaWVsZC0+ZHJvd3MgIT0gZmllbGQtPm1heGdyb3cpKSkKLQkJZmllbGQtPnN0YXR1cyB8PSBfTUFZX0dST1c7CisJCVNldFN0YXR1cyhmaWVsZCwgX01BWV9HUk9XKTsKIAkgICAgICBmcmVlKG5ld2J1Zik7CiAJICAgIH0KIAl9CkBAIC03NTIsNyArNzc3LDcgQEAKIHN0YXRpYyBpbnQKIEZpZWxkX2VuY2xvc2VzKEZJRUxEICpmaWVsZCwgaW50IHJ5LCBpbnQgcngpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGaWVsZF9lbmNsb3NlcyglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoIkZpZWxkX2VuY2xvc2VzKCVwKSIpLCAodm9pZCAqKWZpZWxkKSk7CiAgIGlmIChmaWVsZCAhPSAwCiAgICAgICAmJiBmaWVsZC0+ZnJvdyA8PSByeQogICAgICAgJiYgKGZpZWxkLT5mcm93ICsgZmllbGQtPnJvd3MpID4gcnkKQEAgLTgyNSw3ICs4NTAsNyBAQAogICBXSU5ET1cgKmZvcm13aW47CiAgIEZJRUxEICpmaWVsZDsKIAotICBUKChUX0NBTExFRCgiX25jX1JlZnJlc2hfQ3VycmVudF9GaWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiX25jX1JlZnJlc2hfQ3VycmVudF9GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAKICAgaWYgKCFmb3JtKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC04MzYsNyArODYxLDcgQEAKICAgZmllbGQgPSBmb3JtLT5jdXJyZW50OwogICBmb3Jtd2luID0gR2V0X0Zvcm1fV2luZG93KGZvcm0pOwogCi0gIGlmIChmaWVsZC0+b3B0cyAmIE9fUFVCTElDKQorICBpZiAoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19QVUJMSUMpKQogICAgIHsKICAgICAgIGlmIChJc19TY3JvbGxfRmllbGQoZmllbGQpKQogCXsKQEAgLTg3MywxOSArODk4LDE5IEBACiAJCSAgaWYgKGZvcm0tPmN1cnJvdyA8IGZvcm0tPnRvcHJvdykKIAkJICAgIHsKIAkJICAgICAgZm9ybS0+dG9wcm93ID0gZm9ybS0+Y3Vycm93OwotCQkgICAgICBmaWVsZC0+c3RhdHVzIHw9IF9ORVdUT1A7CisJCSAgICAgIFNldFN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CiAJCSAgICB9CiAJCSAgaWYgKGZvcm0tPmN1cnJvdyA+PSByb3dfYWZ0ZXJfYm90dG9tKQogCQkgICAgewogCQkgICAgICBmb3JtLT50b3Byb3cgPSBmb3JtLT5jdXJyb3cgLSBmaWVsZC0+cm93cyArIDE7Ci0JCSAgICAgIGZpZWxkLT5zdGF0dXMgfD0gX05FV1RPUDsKKwkJICAgICAgU2V0U3RhdHVzKGZpZWxkLCBfTkVXVE9QKTsKIAkJICAgIH0KIAkJICBpZiAoZmllbGQtPnN0YXR1cyAmIF9ORVdUT1ApCiAJCSAgICB7CiAJCSAgICAgIC8qIG1lYW5zIHdlIGhhdmUgdG8gY29weSB3aG9sZSByYW5nZSAqLwogCQkgICAgICBmaXJzdF9tb2RpZmllZF9yb3cgPSBmb3JtLT50b3Byb3c7CiAJCSAgICAgIGZpcnN0X3VubW9kaWZpZWRfcm93ID0gZmlyc3RfbW9kaWZpZWRfcm93ICsgZmllbGQtPnJvd3M7Ci0JCSAgICAgIGZpZWxkLT5zdGF0dXMgJj0gfl9ORVdUT1A7CisJCSAgICAgIENsclN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CiAJCSAgICB9CiAJCSAgZWxzZQogCQkgICAgewpAQCAtOTU5LDIxICs5ODQsMjIgQEAKIAogICBpZiAobGVuID4gMCkKICAgICB7Ci0gICAgICBhc3NlcnQod2luICYmIChmaWVsZC0+ZHJvd3MgPT0gMSkgJiYgKGZpZWxkLT5kY29scyA9PSBmaWVsZC0+Y29scykpOworICAgICAgYXNzZXJ0KHdpbiAmJiAoZmllbGQtPmRyb3dzID09IDEpKTsKIAotICAgICAgc3dpdGNoIChmaWVsZC0+anVzdCkKLQl7Ci0JY2FzZSBKVVNUSUZZX0xFRlQ6Ci0JICBicmVhazsKLQljYXNlIEpVU1RJRllfQ0VOVEVSOgotCSAgY29sID0gKGZpZWxkLT5jb2xzIC0gbGVuKSAvIDI7Ci0JICBicmVhazsKLQljYXNlIEpVU1RJRllfUklHSFQ6Ci0JICBjb2wgPSBmaWVsZC0+Y29scyAtIGxlbjsKLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICBicmVhazsKLQl9CisgICAgICBpZiAoZmllbGQtPmNvbHMgLSBsZW4gPj0gMCkKKwlzd2l0Y2ggKGZpZWxkLT5qdXN0KQorCSAgeworCSAgY2FzZSBKVVNUSUZZX0xFRlQ6CisJICAgIGJyZWFrOworCSAgY2FzZSBKVVNUSUZZX0NFTlRFUjoKKwkgICAgY29sID0gKGZpZWxkLT5jb2xzIC0gbGVuKSAvIDI7CisJICAgIGJyZWFrOworCSAgY2FzZSBKVVNUSUZZX1JJR0hUOgorCSAgICBjb2wgPSBmaWVsZC0+Y29scyAtIGxlbjsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsKKwkgIH0KIAogICAgICAgd21vdmUod2luLCAwLCBjb2wpOwogICAgICAgbXlBREROU1RSKHdpbiwgYnAsIGxlbik7CkBAIC0xMDEwLDcgKzEwMzYsOCBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KLXwgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyBib29sIENoZWNrX0NoYXIoCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgYm9vbCBDaGVja19DaGFyKEZPUk0gICpmb3JtLAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUVMRCAqZmllbGQsCiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEVFlQRSAqIHR5cCwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQXJndW1lbnQgKmFyZ3ApCkBAIC0xMDIyLDcgKzEwNDksMTEgQEAKIHwgICAgICAgICAgICAgICAgICAgIEZBTFNFICAgICAgICAgICAgLSBDaGFyYWN0ZXIgaXMgaW52YWxpZAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0YXRpYyBib29sCi1DaGVja19DaGFyKEZJRUxEVFlQRSAqdHlwLCBpbnQgY2gsIFR5cGVBcmd1bWVudCAqYXJncCkKK0NoZWNrX0NoYXIoRk9STSAqZm9ybSwKKwkgICBGSUVMRCAqZmllbGQsCisJICAgRklFTERUWVBFICp0eXAsCisJICAgaW50IGNoLAorCSAgIFR5cGVBcmd1bWVudCAqYXJncCkKIHsKICAgaWYgKHR5cCkKICAgICB7CkBAIC0xMDMwLDEzICsxMDYxLDIzIEBACiAJewogCSAgYXNzZXJ0KGFyZ3ApOwogCSAgcmV0dXJuICgKLQkJICAgQ2hlY2tfQ2hhcih0eXAtPmxlZnQsIGNoLCBhcmdwLT5sZWZ0KSB8fAotCQkgICBDaGVja19DaGFyKHR5cC0+cmlnaHQsIGNoLCBhcmdwLT5yaWdodCkpOworCQkgICBDaGVja19DaGFyKGZvcm0sIGZpZWxkLCB0eXAtPmxlZnQsIGNoLCBhcmdwLT5sZWZ0KSB8fAorCQkgICBDaGVja19DaGFyKGZvcm0sIGZpZWxkLCB0eXAtPnJpZ2h0LCBjaCwgYXJncC0+cmlnaHQpKTsKIAl9CiAgICAgICBlbHNlCiAJeworI2lmIE5DVVJTRVNfSU5URVJPUF9GVU5DUworCSAgaWYgKHR5cC0+Y2hhcmNoZWNrLm9jY2hlY2spCisJICAgIHsKKwkgICAgICBpZiAodHlwLT5zdGF0dXMgJiBfR0VORVJJQykKKwkJcmV0dXJuIHR5cC0+Y2hhcmNoZWNrLmdjY2hlY2soY2gsIGZvcm0sIGZpZWxkLCAodm9pZCAqKWFyZ3ApOworCSAgICAgIGVsc2UKKwkJcmV0dXJuIHR5cC0+Y2hhcmNoZWNrLm9jY2hlY2soY2gsICh2b2lkICopYXJncCk7CisJICAgIH0KKyNlbHNlCiAJICBpZiAodHlwLT5jY2hlY2spCiAJICAgIHJldHVybiB0eXAtPmNjaGVjayhjaCwgKHZvaWQgKilhcmdwKTsKKyNlbmRpZgogCX0KICAgICB9CiAgIHJldHVybiAoIWlzY250cmwoVUNoYXIoY2gpKSA/IFRSVUUgOiBGQUxTRSk7CkBAIC0xMDcyLDIzICsxMTEzLDI3IEBACiAgICAgcmV0dXJuIEVfU1lTVEVNX0VSUk9SOwogICBlbHNlCiAgICAgewotICAgICAgaWYgKGZpZWxkLT5vcHRzICYgT19WSVNJQkxFKQotCVNldF9GaWVsZF9XaW5kb3dfQXR0cmlidXRlcyhmaWVsZCwgd2luKTsKKyAgICAgIGlmIChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX1ZJU0lCTEUpKQorCXsKKwkgIFNldF9GaWVsZF9XaW5kb3dfQXR0cmlidXRlcyhmaWVsZCwgd2luKTsKKwl9CiAgICAgICBlbHNlCi0Jd2F0dHJzZXQod2luLCBXSU5ET1dfQVRUUlMoZndpbikpOworCXsKKwkgICh2b2lkKXdhdHRyc2V0KHdpbiwgKGludClXSU5ET1dfQVRUUlMoZndpbikpOworCX0KICAgICAgIHdlcmFzZSh3aW4pOwogICAgIH0KIAogICBpZiAoIWJFcmFzZUZsYWcpCiAgICAgewotICAgICAgaWYgKGZpZWxkLT5vcHRzICYgT19QVUJMSUMpCisgICAgICBpZiAoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19QVUJMSUMpKQogCXsKIAkgIGlmIChKdXN0aWZpY2F0aW9uX0FsbG93ZWQoZmllbGQpKQogCSAgICBQZXJmb3JtX0p1c3RpZmljYXRpb24oZmllbGQsIHdpbik7CiAJICBlbHNlCiAJICAgIEJ1ZmZlcl9Ub19XaW5kb3coZmllbGQsIHdpbik7CiAJfQotICAgICAgZmllbGQtPnN0YXR1cyAmPSB+X05FV1RPUDsKKyAgICAgIENsclN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CiAgICAgfQogICB3c3luY3VwKHdpbik7CiAgIGRlbHdpbih3aW4pOwpAQCAtMTEyNywxOCArMTE3MiwxOCBAQAogCSAgZm9ybS0+Y3Vycm93ID0gZm9ybS0+Y3VyY29sID0gZm9ybS0+dG9wcm93ID0gZm9ybS0+YmVnaW5jb2wgPSAwOwogCSAgd2VyYXNlKGZvcm0tPncpOwogCi0JICBpZiAoKGZpZWxkLT5vcHRzICYgT19QVUJMSUMpICYmIEp1c3RpZmljYXRpb25fQWxsb3dlZChmaWVsZCkpCisJICBpZiAoKEZpZWxkX0hhc19PcHRpb24oZmllbGQsIE9fUFVCTElDKSkgJiYgSnVzdGlmaWNhdGlvbl9BbGxvd2VkKGZpZWxkKSkKIAkgICAgVW5kb19KdXN0aWZpY2F0aW9uKGZpZWxkLCBmb3JtLT53KTsKIAkgIGVsc2UKIAkgICAgQnVmZmVyX1RvX1dpbmRvdyhmaWVsZCwgZm9ybS0+dyk7CiAKLQkgIGZpZWxkLT5zdGF0dXMgfD0gX05FV1RPUDsKKwkgIFNldFN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CiAJICByZXMgPSBfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkKGZvcm0pOwogCX0KICAgICAgIGVsc2UKIAlyZXMgPSBEaXNwbGF5X0ZpZWxkKGZpZWxkKTsKICAgICB9Ci0gIGZpZWxkLT5zdGF0dXMgfD0gX0NIQU5HRUQ7CisgIFNldFN0YXR1cyhmaWVsZCwgX0NIQU5HRUQpOwogICByZXR1cm4gKHJlcyk7CiB9CiAKQEAgLTExNjgsNyArMTIxMyw3IEBACiAgICAgcmV0dXJuIChFX1NZU1RFTV9FUlJPUik7CiAKICAgZm9yIChsaW5rZWRfZmllbGQgPSBmaWVsZC0+bGluazsKLSAgICAgICBsaW5rZWRfZmllbGQgIT0gZmllbGQ7CisgICAgICAgKGxpbmtlZF9maWVsZCAhPSBmaWVsZCkgJiYgKGxpbmtlZF9maWVsZCAhPSAwKTsKICAgICAgICBsaW5rZWRfZmllbGQgPSBsaW5rZWRfZmllbGQtPmxpbmspCiAgICAgewogICAgICAgaWYgKCgoc3luY3JlcyA9IFN5bmNocm9uaXplX0ZpZWxkKGxpbmtlZF9maWVsZCkpICE9IEVfT0spICYmCkBAIC0xMTk3LDcgKzEyNDIsNyBAQAogICBpbnQgcmVzID0gRV9PSzsKICAgV0lORE9XICpmb3Jtd2luOwogCi0gIFQoKFRfQ0FMTEVEKCJfbmNfU3luY2hyb25pemVfQXR0cmlidXRlcyglcCkiKSwgZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoIl9uY19TeW5jaHJvbml6ZV9BdHRyaWJ1dGVzKCVwKSIpLCAodm9pZCAqKWZpZWxkKSk7CiAKICAgaWYgKCFmaWVsZCkKICAgICByZXR1cm5Db2RlKEVfQkFEX0FSR1VNRU5UKTsKQEAgLTEyMTMsNyArMTI1OCw3IEBACiAJICB3ZXJhc2UoZm9ybS0+dyk7CiAJICB3bW92ZShmb3JtLT53LCBmb3JtLT5jdXJyb3csIGZvcm0tPmN1cmNvbCk7CiAKLQkgIGlmIChmaWVsZC0+b3B0cyAmIE9fUFVCTElDKQorCSAgaWYgKEZpZWxkX0hhc19PcHRpb24oZmllbGQsIE9fUFVCTElDKSkKIAkgICAgewogCSAgICAgIGlmIChKdXN0aWZpY2F0aW9uX0FsbG93ZWQoZmllbGQpKQogCQlVbmRvX0p1c3RpZmljYXRpb24oZmllbGQsIGZvcm0tPncpOwpAQCAtMTIyOSw3ICsxMjc0LDcgQEAKIAkJICAgICAgZmllbGQtPnJvd3MgLSAxLCBmaWVsZC0+Y29scyAtIDEsIDApOwogCSAgICAgIHdzeW5jdXAoZm9ybXdpbik7CiAJICAgICAgQnVmZmVyX1RvX1dpbmRvdyhmaWVsZCwgZm9ybS0+dyk7Ci0JICAgICAgZmllbGQtPnN0YXR1cyB8PSBfTkVXVE9QOwkJLyogZmFrZSByZWZyZXNoIHRvIHBhaW50IGFsbCAqLworCSAgICAgIFNldFN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CS8qIGZha2UgcmVmcmVzaCB0byBwYWludCBhbGwgKi8KIAkgICAgICBfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkKGZvcm0pOwogCSAgICB9CiAJfQpAQCAtMTI2NCw3ICsxMzA5LDcgQEAKICAgRk9STSAqZm9ybTsKICAgaW50IHJlcyA9IEVfT0s7CiAKLSAgVCgoVF9DQUxMRUQoIl9uY19TeW5jaHJvbml6ZV9PcHRpb25zKCVwLCUjeCkiKSwgZmllbGQsIG5ld29wdHMpKTsKKyAgVCgoVF9DQUxMRUQoIl9uY19TeW5jaHJvbml6ZV9PcHRpb25zKCVwLCUjeCkiKSwgKHZvaWQgKilmaWVsZCwgbmV3b3B0cykpOwogCiAgIGlmICghZmllbGQpCiAgICAgcmV0dXJuQ29kZShFX0JBRF9BUkdVTUVOVCk7CkBAIC0xMjc2LDQyICsxMzIxLDQxIEBACiAKICAgaWYgKGZvcm0pCiAgICAgewotICAgICAgaWYgKGZvcm0tPmN1cnJlbnQgPT0gZmllbGQpCi0JewotCSAgZmllbGQtPm9wdHMgPSBvbGRvcHRzOwotCSAgcmV0dXJuQ29kZShFX0NVUlJFTlQpOwotCX0KLQogICAgICAgaWYgKGZvcm0tPnN0YXR1cyAmIF9QT1NURUQpCiAJewotCSAgaWYgKChmb3JtLT5jdXJwYWdlID09IGZpZWxkLT5wYWdlKSkKKwkgIGlmIChmb3JtLT5jdXJyZW50ID09IGZpZWxkKQogCSAgICB7Ci0JICAgICAgaWYgKGNoYW5nZWRfb3B0cyAmIE9fVklTSUJMRSkKKwkgICAgICBmaWVsZC0+b3B0cyA9IG9sZG9wdHM7CisJICAgICAgcmV0dXJuQ29kZShFX0NVUlJFTlQpOworCSAgICB9CisJICBpZiAoZm9ybS0+Y3VycGFnZSA9PSBmaWVsZC0+cGFnZSkKKwkgICAgeworCSAgICAgIGlmICgodW5zaWduZWQpY2hhbmdlZF9vcHRzICYgT19WSVNJQkxFKQogCQl7Ci0JCSAgaWYgKG5ld29wdHMgJiBPX1ZJU0lCTEUpCisJCSAgaWYgKCh1bnNpZ25lZCluZXdvcHRzICYgT19WSVNJQkxFKQogCQkgICAgcmVzID0gRGlzcGxheV9GaWVsZChmaWVsZCk7CiAJCSAgZWxzZQogCQkgICAgcmVzID0gRXJhc2VfRmllbGQoZmllbGQpOwogCQl9CiAJICAgICAgZWxzZQogCQl7Ci0JCSAgaWYgKChjaGFuZ2VkX29wdHMgJiBPX1BVQkxJQykgJiYKLQkJICAgICAgKG5ld29wdHMgJiBPX1ZJU0lCTEUpKQorCQkgIGlmICgoKHVuc2lnbmVkKWNoYW5nZWRfb3B0cyAmIE9fUFVCTElDKSAmJgorCQkgICAgICAoKHVuc2lnbmVkKW5ld29wdHMgJiBPX1ZJU0lCTEUpKQogCQkgICAgcmVzID0gRGlzcGxheV9GaWVsZChmaWVsZCk7CiAJCX0KIAkgICAgfQogCX0KICAgICB9CiAKLSAgaWYgKGNoYW5nZWRfb3B0cyAmIE9fU1RBVElDKQorICBpZiAoKHVuc2lnbmVkKWNoYW5nZWRfb3B0cyAmIE9fU1RBVElDKQogICAgIHsKICAgICAgIGJvb2wgc2luZ2xlX2xpbmVfZmllbGQgPSBTaW5nbGVfTGluZV9GaWVsZChmaWVsZCk7CiAgICAgICBpbnQgcmVzMiA9IEVfT0s7CiAKLSAgICAgIGlmIChuZXdvcHRzICYgT19TVEFUSUMpCisgICAgICBpZiAoKHVuc2lnbmVkKW5ld29wdHMgJiBPX1NUQVRJQykKIAl7CiAJICAvKiB0aGUgZmllbGQgYmVjb21lcyBub3cgc3RhdGljICovCi0JICBmaWVsZC0+c3RhdHVzICY9IH5fTUFZX0dST1c7CisJICBDbHJTdGF0dXMoZmllbGQsIF9NQVlfR1JPVyk7CiAJICAvKiBpZiBhY3R1YWxseSB3ZSBoYXZlIG5vIGhpZGRlbiBjb2x1bW5zLCBqdXN0aWZpY2F0aW9uIG1heQogCSAgICAgb2NjdXIgYWdhaW4gKi8KIAkgIGlmIChzaW5nbGVfbGluZV9maWVsZCAmJgpAQCAtMTMyOSw3ICsxMzczLDcgQEAKIAkgICAgICAoc2luZ2xlX2xpbmVfZmllbGQgJiYgKGZpZWxkLT5kY29scyA8IGZpZWxkLT5tYXhncm93KSkgfHwKIAkgICAgICAoIXNpbmdsZV9saW5lX2ZpZWxkICYmIChmaWVsZC0+ZHJvd3MgPCBmaWVsZC0+bWF4Z3JvdykpKQogCSAgICB7Ci0JICAgICAgZmllbGQtPnN0YXR1cyB8PSBfTUFZX0dST1c7CisJICAgICAgU2V0U3RhdHVzKGZpZWxkLCBfTUFZX0dST1cpOwogCSAgICAgIC8qIGEgZmllbGQgd2l0aCBqdXN0aWZpY2F0aW9uIG5vdyBjaGFuZ2VzIGl0cyBiZWhhdmlvciwKIAkgICAgICAgICBzbyB3ZSBtdXN0IHJlZGlzcGxheSBpdCAqLwogCSAgICAgIGlmIChzaW5nbGVfbGluZV9maWVsZCAmJgpAQCAtMTM2NSw3ICsxNDA5LDcgQEAKICAgRklFTEQgKmZpZWxkOwogICBXSU5ET1cgKm5ld193aW5kb3c7CiAKLSAgVCgoVF9DQUxMRUQoIl9uY19TZXRfQ3VycmVudF9GaWVsZCglcCwlcCkiKSwgZm9ybSwgbmV3ZmllbGQpKTsKKyAgVCgoVF9DQUxMRUQoIl9uY19TZXRfQ3VycmVudF9GaWVsZCglcCwlcCkiKSwgKHZvaWQgKilmb3JtLCAodm9pZCAqKW5ld2ZpZWxkKSk7CiAKICAgaWYgKCFmb3JtIHx8ICFuZXdmaWVsZCB8fCAhZm9ybS0+Y3VycmVudCB8fCAobmV3ZmllbGQtPmZvcm0gIT0gZm9ybSkpCiAgICAgcmV0dXJuQ29kZShFX0JBRF9BUkdVTUVOVCk7CkBAIC0xMzgyLDI3ICsxNDI2LDQ0IEBACiAgICAgICAhKGZvcm0tPnN0YXR1cyAmIF9QT1NURUQpKQogICAgIHsKICAgICAgIGlmICgoZm9ybS0+dykgJiYKLQkgIChmaWVsZC0+b3B0cyAmIE9fVklTSUJMRSkgJiYKKwkgIChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX1ZJU0lCTEUpKSAmJgogCSAgKGZpZWxkLT5mb3JtLT5jdXJwYWdlID09IGZpZWxkLT5wYWdlKSkKIAl7CiAJICBfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkKGZvcm0pOwotCSAgaWYgKGZpZWxkLT5vcHRzICYgT19QVUJMSUMpCisJICBpZiAoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19QVUJMSUMpKQogCSAgICB7CiAJICAgICAgaWYgKGZpZWxkLT5kcm93cyA+IGZpZWxkLT5yb3dzKQogCQl7CiAJCSAgaWYgKGZvcm0tPnRvcHJvdyA9PSAwKQotCQkgICAgZmllbGQtPnN0YXR1cyAmPSB+X05FV1RPUDsKKwkJICAgIENsclN0YXR1cyhmaWVsZCwgX05FV1RPUCk7CiAJCSAgZWxzZQotCQkgICAgZmllbGQtPnN0YXR1cyB8PSBfTkVXVE9QOworCQkgICAgU2V0U3RhdHVzKGZpZWxkLCBfTkVXVE9QKTsKIAkJfQogCSAgICAgIGVsc2UKIAkJewogCQkgIGlmIChKdXN0aWZpY2F0aW9uX0FsbG93ZWQoZmllbGQpKQogCQkgICAgewotCQkgICAgICBXaW5kb3dfVG9fQnVmZmVyKGZvcm0tPncsIGZpZWxkKTsKKwkJICAgICAgV2luZG93X1RvX0J1ZmZlcihmb3JtLCBmaWVsZCk7CiAJCSAgICAgIHdlcmFzZShmb3JtLT53KTsKIAkJICAgICAgUGVyZm9ybV9KdXN0aWZpY2F0aW9uKGZpZWxkLCBmb3JtLT53KTsKLQkJICAgICAgd3N5bmN1cChmb3JtLT53KTsKKwkJICAgICAgaWYgKEZpZWxkX0hhc19PcHRpb24oZmllbGQsIE9fRFlOQU1JQ19KVVNUSUZZKSAmJgorCQkJICAoZm9ybS0+dy0+X3BhcmVudCA9PSAwKSkKKwkJCXsKKwkJCSAgY29weXdpbihmb3JtLT53LAorCQkJCSAgR2V0X0Zvcm1fV2luZG93KGZvcm0pLAorCQkJCSAgMCwKKwkJCQkgIDAsCisJCQkJICBmaWVsZC0+ZnJvdywKKwkJCQkgIGZpZWxkLT5mY29sLAorCQkJCSAgZmllbGQtPmZyb3csCisJCQkJICBmaWVsZC0+Y29scyArIGZpZWxkLT5mY29sIC0gMSwKKwkJCQkgIDApOworCQkJICB3c3luY3VwKEdldF9Gb3JtX1dpbmRvdyhmb3JtKSk7CisJCQl9CisJCSAgICAgIGVsc2UKKwkJCXsKKwkJCSAgd3N5bmN1cChmb3JtLT53KTsKKwkJCX0KIAkJICAgIH0KIAkJfQogCSAgICB9CkBAIC0xNDI3LDcgKzE0ODgsNyBAQAogCWRlbHdpbihmb3JtLT53KTsKICAgICAgIGZvcm0tPncgPSBuZXdfd2luZG93OwogCi0gICAgICBmb3JtLT5zdGF0dXMgJj0gfl9XSU5ET1dfTU9ESUZJRUQ7CisgICAgICBDbHJTdGF0dXMoZm9ybSwgX1dJTkRPV19NT0RJRklFRCk7CiAgICAgICBTZXRfRmllbGRfV2luZG93X0F0dHJpYnV0ZXMoZmllbGQsIGZvcm0tPncpOwogCiAgICAgICBpZiAoSGFzX0ludmlzaWJsZV9QYXJ0cyhmaWVsZCkpCkBAIC0xNDcyLDcgKzE1MzMsNyBAQAogICBGSUVMRCAqZmllbGQgPSBmb3JtLT5jdXJyZW50OwogICBpbnQgc3RlcCA9IG15V0NXSURUSChmb3JtLT53LCBmb3JtLT5jdXJyb3csIGZvcm0tPmN1cmNvbCk7CiAKLSAgVCgoVF9DQUxMRUQoIklGTl9OZXh0X0NoYXJhY3RlciglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSUZOX05leHRfQ2hhcmFjdGVyKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKChmb3JtLT5jdXJjb2wgKz0gc3RlcCkgPT0gZmllbGQtPmRjb2xzKQogICAgIHsKICAgICAgIGlmICgoKysoZm9ybS0+Y3Vycm93KSkgPT0gZmllbGQtPmRyb3dzKQpAQCAtMTUxNCw3ICsxNTc1LDcgQEAKICAgaW50IGFtb3VudCA9IG15V0NXSURUSChmb3JtLT53LCBmb3JtLT5jdXJyb3csIGZvcm0tPmN1cmNvbCAtIDEpOwogICBpbnQgb2xkY29sID0gZm9ybS0+Y3VyY29sOwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fUHJldmlvdXNfQ2hhcmFjdGVyKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fUHJldmlvdXNfQ2hhcmFjdGVyKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKChmb3JtLT5jdXJjb2wgLT0gYW1vdW50KSA8IDApCiAgICAgewogICAgICAgaWYgKCgtLShmb3JtLT5jdXJyb3cpKSA8IDApCkBAIC0xNTQyLDcgKzE2MDMsNyBAQAogewogICBGSUVMRCAqZmllbGQgPSBmb3JtLT5jdXJyZW50OwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fTmV4dF9MaW5lKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fTmV4dF9MaW5lKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKCgrKyhmb3JtLT5jdXJyb3cpKSA9PSBmaWVsZC0+ZHJvd3MpCiAgICAgewogI2lmIEdST1dfSUZfTkFWSUdBVEUKQEAgLTE1NjgsNyArMTYyOSw3IEBACiBzdGF0aWMgaW50CiBJRk5fUHJldmlvdXNfTGluZShGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiSUZOX1ByZXZpb3VzX0xpbmUoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIklGTl9QcmV2aW91c19MaW5lKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKCgtLShmb3JtLT5jdXJyb3cpKSA8IDApCiAgICAgewogICAgICAgZm9ybS0+Y3Vycm93Kys7CkBAIC0xNTk1LDcgKzE2NTYsNyBAQAogICBGSUVMRF9DRUxMICpzOwogICBGSUVMRF9DRUxMICp0OwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fTmV4dF9Xb3JkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fTmV4dF9Xb3JkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKIAogICAvKiBXZSByZWFsbHkgbmVlZCBhY2Nlc3MgdG8gdGhlIGRhdGEsIHNvIHdlIGhhdmUgdG8gc3luY2hyb25pemUgKi8KICAgU3luY2hyb25pemVfQnVmZmVyKGZvcm0pOwpAQCAtMTYzOCw3ICsxNjk5LDcgQEAKICAgRklFTERfQ0VMTCAqdDsKICAgYm9vbCBhZ2FpbiA9IEZBTFNFOwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fUHJldmlvdXNfV29yZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSUZOX1ByZXZpb3VzX1dvcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogCiAgIC8qIFdlIHJlYWxseSBuZWVkIGFjY2VzcyB0byB0aGUgZGF0YSwgc28gd2UgaGF2ZSB0byBzeW5jaHJvbml6ZSAqLwogICBTeW5jaHJvbml6ZV9CdWZmZXIoZm9ybSk7CkBAIC0xNjg4LDcgKzE3NDksNyBAQAogewogICBGSUVMRCAqZmllbGQgPSBmb3JtLT5jdXJyZW50OwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fQmVnaW5uaW5nX09mX0ZpZWxkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fQmVnaW5uaW5nX09mX0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgU3luY2hyb25pemVfQnVmZmVyKGZvcm0pOwogICBBZGp1c3RfQ3Vyc29yX1Bvc2l0aW9uKGZvcm0sCiAJCQkgR2V0X1N0YXJ0X09mX0RhdGEoZmllbGQtPmJ1ZiwgQnVmZmVyX0xlbmd0aChmaWVsZCkpKTsKQEAgLTE3MTIsNyArMTc3Myw3IEBACiAgIEZJRUxEICpmaWVsZCA9IGZvcm0tPmN1cnJlbnQ7CiAgIEZJRUxEX0NFTEwgKnBvczsKIAotICBUKChUX0NBTExFRCgiSUZOX0VuZF9PZl9GaWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSUZOX0VuZF9PZl9GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIFN5bmNocm9uaXplX0J1ZmZlcihmb3JtKTsKICAgcG9zID0gQWZ0ZXJfRW5kX09mX0RhdGEoZmllbGQtPmJ1ZiwgQnVmZmVyX0xlbmd0aChmaWVsZCkpOwogICBpZiAocG9zID09IChmaWVsZC0+YnVmICsgQnVmZmVyX0xlbmd0aChmaWVsZCkpKQpAQCAtMTczNSw3ICsxNzk2LDcgQEAKIHsKICAgRklFTEQgKmZpZWxkID0gZm9ybS0+Y3VycmVudDsKIAotICBUKChUX0NBTExFRCgiSUZOX0JlZ2lubmluZ19PZl9MaW5lKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fQmVnaW5uaW5nX09mX0xpbmUoJXApIiksICh2b2lkICopZm9ybSkpOwogICBTeW5jaHJvbml6ZV9CdWZmZXIoZm9ybSk7CiAgIEFkanVzdF9DdXJzb3JfUG9zaXRpb24oZm9ybSwKIAkJCSBHZXRfU3RhcnRfT2ZfRGF0YShBZGRyZXNzX09mX0N1cnJlbnRfUm93X0luX0J1ZmZlcihmb3JtKSwKQEAgLTE3NjEsNyArMTgyMiw3IEBACiAgIEZJRUxEX0NFTEwgKnBvczsKICAgRklFTERfQ0VMTCAqYnA7CiAKLSAgVCgoVF9DQUxMRUQoIklGTl9FbmRfT2ZfTGluZSglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSUZOX0VuZF9PZl9MaW5lKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgU3luY2hyb25pemVfQnVmZmVyKGZvcm0pOwogICBicCA9IEFkZHJlc3NfT2ZfQ3VycmVudF9Sb3dfSW5fQnVmZmVyKGZvcm0pOwogICBwb3MgPSBBZnRlcl9FbmRfT2ZfRGF0YShicCwgZmllbGQtPmRjb2xzKTsKQEAgLTE3ODcsNyArMTg0OCw3IEBACiAgIGludCBhbW91bnQgPSBteVdDV0lEVEgoZm9ybS0+dywgZm9ybS0+Y3Vycm93LCBmb3JtLT5jdXJjb2wgLSAxKTsKICAgaW50IG9sZGNvbCA9IGZvcm0tPmN1cmNvbDsKIAotICBUKChUX0NBTExFRCgiSUZOX0xlZnRfQ2hhcmFjdGVyKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fTGVmdF9DaGFyYWN0ZXIoJXApIiksICh2b2lkICopZm9ybSkpOwogICBpZiAoKGZvcm0tPmN1cmNvbCAtPSBhbW91bnQpIDwgMCkKICAgICB7CiAgICAgICBmb3JtLT5jdXJjb2wgPSBvbGRjb2w7CkBAIC0xODEyLDcgKzE4NzMsNyBAQAogICBpbnQgYW1vdW50ID0gbXlXQ1dJRFRIKGZvcm0tPncsIGZvcm0tPmN1cnJvdywgZm9ybS0+Y3VyY29sKTsKICAgaW50IG9sZGNvbCA9IGZvcm0tPmN1cmNvbDsKIAotICBUKChUX0NBTExFRCgiSUZOX1JpZ2h0X0NoYXJhY3RlciglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSUZOX1JpZ2h0X0NoYXJhY3RlciglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIGlmICgoZm9ybS0+Y3VyY29sICs9IGFtb3VudCkgPj0gZm9ybS0+Y3VycmVudC0+ZGNvbHMpCiAgICAgewogI2lmIEdST1dfSUZfTkFWSUdBVEUKQEAgLTE4NDAsNyArMTkwMSw3IEBACiBzdGF0aWMgaW50CiBJRk5fVXBfQ2hhcmFjdGVyKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJJRk5fVXBfQ2hhcmFjdGVyKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJJRk5fVXBfQ2hhcmFjdGVyKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKCgtLShmb3JtLT5jdXJyb3cpKSA8IDApCiAgICAgewogICAgICAgZm9ybS0+Y3Vycm93Kys7CkBAIC0xODY0LDcgKzE5MjUsNyBAQAogewogICBGSUVMRCAqZmllbGQgPSBmb3JtLT5jdXJyZW50OwogCi0gIFQoKFRfQ0FMTEVEKCJJRk5fRG93bl9DaGFyYWN0ZXIoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIklGTl9Eb3duX0NoYXJhY3RlciglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIGlmICgoKysoZm9ybS0+Y3Vycm93KSkgPT0gZmllbGQtPmRyb3dzKQogICAgIHsKICNpZiBHUk9XX0lGX05BVklHQVRFCkBAIC0xOTU2LDcgKzIwMTcsNyBAQAogICAgIHsKICAgICAgIHJlcyA9IGZjdChmb3JtKTsKICAgICAgIGlmIChyZXMgPT0gRV9PSykKLQlmb3JtLT5jdXJyZW50LT5zdGF0dXMgfD0gX05FV1RPUDsKKwlTZXRTdGF0dXMoZm9ybS0+Y3VycmVudCwgX05FV1RPUCk7CiAgICAgfQogICByZXR1cm4gKHJlcyk7CiB9CkBAIC0xOTczLDcgKzIwMzQsNyBAQAogc3RhdGljIGludAogVlNDX1Njcm9sbF9MaW5lX0ZvcndhcmQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfTGluZV9Gb3J3YXJkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJWU0NfU2Nyb2xsX0xpbmVfRm9yd2FyZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoVlNDX0dlbmVyaWMoZm9ybSwgMSkpOwogfQogCkBAIC0xOTg5LDcgKzIwNTAsNyBAQAogc3RhdGljIGludAogVlNDX1Njcm9sbF9MaW5lX0JhY2t3YXJkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJWU0NfU2Nyb2xsX0xpbmVfQmFja3dhcmQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfTGluZV9CYWNrd2FyZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoVlNDX0dlbmVyaWMoZm9ybSwgLTEpKTsKIH0KIApAQCAtMjAwNSw3ICsyMDY2LDcgQEAKIHN0YXRpYyBpbnQKIFZTQ19TY3JvbGxfUGFnZV9Gb3J3YXJkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJWU0NfU2Nyb2xsX1BhZ2VfRm9yd2FyZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiVlNDX1Njcm9sbF9QYWdlX0ZvcndhcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKFZTQ19HZW5lcmljKGZvcm0sIGZvcm0tPmN1cnJlbnQtPnJvd3MpKTsKIH0KIApAQCAtMjAyMSw3ICsyMDgyLDcgQEAKIHN0YXRpYyBpbnQKIFZTQ19TY3JvbGxfSGFsZl9QYWdlX0ZvcndhcmQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfSGFsZl9QYWdlX0ZvcndhcmQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfSGFsZl9QYWdlX0ZvcndhcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKFZTQ19HZW5lcmljKGZvcm0sIChmb3JtLT5jdXJyZW50LT5yb3dzICsgMSkgLyAyKSk7CiB9CiAKQEAgLTIwMzcsNyArMjA5OCw3IEBACiBzdGF0aWMgaW50CiBWU0NfU2Nyb2xsX1BhZ2VfQmFja3dhcmQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfUGFnZV9CYWNrd2FyZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiVlNDX1Njcm9sbF9QYWdlX0JhY2t3YXJkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShWU0NfR2VuZXJpYyhmb3JtLCAtKGZvcm0tPmN1cnJlbnQtPnJvd3MpKSk7CiB9CiAKQEAgLTIwNTMsNyArMjExNCw3IEBACiBzdGF0aWMgaW50CiBWU0NfU2Nyb2xsX0hhbGZfUGFnZV9CYWNrd2FyZChGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiVlNDX1Njcm9sbF9IYWxmX1BhZ2VfQmFja3dhcmQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIlZTQ19TY3JvbGxfSGFsZl9QYWdlX0JhY2t3YXJkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShWU0NfR2VuZXJpYyhmb3JtLCAtKChmb3JtLT5jdXJyZW50LT5yb3dzICsgMSkgLyAyKSkpOwogfQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTQ3LDcgKzIyMDgsNyBAQAogc3RhdGljIGludAogSFNDX1Njcm9sbF9DaGFyX0ZvcndhcmQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIkhTQ19TY3JvbGxfQ2hhcl9Gb3J3YXJkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJIU0NfU2Nyb2xsX0NoYXJfRm9yd2FyZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoSFNDX0dlbmVyaWMoZm9ybSwgMSkpOwogfQogCkBAIC0yMTYzLDcgKzIyMjQsNyBAQAogc3RhdGljIGludAogSFNDX1Njcm9sbF9DaGFyX0JhY2t3YXJkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJIU0NfU2Nyb2xsX0NoYXJfQmFja3dhcmQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkhTQ19TY3JvbGxfQ2hhcl9CYWNrd2FyZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoSFNDX0dlbmVyaWMoZm9ybSwgLTEpKTsKIH0KIApAQCAtMjE3OSw3ICsyMjQwLDcgQEAKIHN0YXRpYyBpbnQKIEhTQ19Ib3Jpem9udGFsX0xpbmVfRm9yd2FyZChGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiSFNDX0hvcml6b250YWxfTGluZV9Gb3J3YXJkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJIU0NfSG9yaXpvbnRhbF9MaW5lX0ZvcndhcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKEhTQ19HZW5lcmljKGZvcm0sIGZvcm0tPmN1cnJlbnQtPmNvbHMpKTsKIH0KIApAQCAtMjE5NSw3ICsyMjU2LDcgQEAKIHN0YXRpYyBpbnQKIEhTQ19Ib3Jpem9udGFsX0hhbGZfTGluZV9Gb3J3YXJkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJIU0NfSG9yaXpvbnRhbF9IYWxmX0xpbmVfRm9yd2FyZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSFNDX0hvcml6b250YWxfSGFsZl9MaW5lX0ZvcndhcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKEhTQ19HZW5lcmljKGZvcm0sIChmb3JtLT5jdXJyZW50LT5jb2xzICsgMSkgLyAyKSk7CiB9CiAKQEAgLTIyMTEsNyArMjI3Miw3IEBACiBzdGF0aWMgaW50CiBIU0NfSG9yaXpvbnRhbF9MaW5lX0JhY2t3YXJkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJIU0NfSG9yaXpvbnRhbF9MaW5lX0JhY2t3YXJkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJIU0NfSG9yaXpvbnRhbF9MaW5lX0JhY2t3YXJkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShIU0NfR2VuZXJpYyhmb3JtLCAtKGZvcm0tPmN1cnJlbnQtPmNvbHMpKSk7CiB9CiAKQEAgLTIyMjcsNyArMjI4OCw3IEBACiBzdGF0aWMgaW50CiBIU0NfSG9yaXpvbnRhbF9IYWxmX0xpbmVfQmFja3dhcmQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIkhTQ19Ib3Jpem9udGFsX0hhbGZfTGluZV9CYWNrd2FyZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiSFNDX0hvcml6b250YWxfSGFsZl9MaW5lX0JhY2t3YXJkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShIU0NfR2VuZXJpYyhmb3JtLCAtKChmb3JtLT5jdXJyZW50LT5jb2xzICsgMSkgLyAyKSkpOwogfQogCkBAIC0yMzg4LDcgKzI0NDksNyBAQAogICBpbnQgcmVzdWx0ID0gRV9SRVFVRVNUX0RFTklFRDsKICAgYm9vbCBMYXN0X1JvdyA9ICgoZmllbGQtPmRyb3dzIC0gMSkgPT0gZm9ybS0+Y3Vycm93KTsKIAotICBpZiAoKGZpZWxkLT5vcHRzICYgT19XUkFQKSAmJgkvKiB3cmFwcGluZyB3YW50ZWQgICAgICovCisgIGlmICgoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19XUkFQKSkgJiYJLyogd3JhcHBpbmcgd2FudGVkICAgICAqLwogICAgICAgKCFTaW5nbGVfTGluZV9GaWVsZChmaWVsZCkpICYmCS8qIG11c3QgYmUgbXVsdGktbGluZSAgKi8KICAgICAgIChUaGVyZV9Jc19Ob19Sb29tX0Zvcl9BX0NoYXJfSW5fTGluZShmb3JtKSkgJiYJLyogbGluZSBpcyBmdWxsICAgICAgICAqLwogICAgICAgKCFMYXN0X1JvdyB8fCBHcm93YWJsZShmaWVsZCkpKQkvKiB0aGVyZSBhcmUgbW9yZSBsaW5lcyAqLwpAQCAtMjQwNiw3ICsyNDY3LDcgQEAKIAkgICAgcmV0dXJuIEVfU1lTVEVNX0VSUk9SOwogCX0KICAgICAgIGJwID0gQWRkcmVzc19PZl9DdXJyZW50X1Jvd19Jbl9CdWZmZXIoZm9ybSk7Ci0gICAgICBXaW5kb3dfVG9fQnVmZmVyKGZvcm0tPncsIGZpZWxkKTsKKyAgICAgIFdpbmRvd19Ub19CdWZmZXIoZm9ybSwgZmllbGQpOwogICAgICAgc3BsaXQgPSBBZnRlcl9MYXN0X1doaXRlc3BhY2VfQ2hhcmFjdGVyKGJwLCBmaWVsZC0+ZGNvbHMpOwogICAgICAgLyogc3BsaXQgcG9pbnRzIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlcXVlbmNlIHRvIGJlIGJyb3VnaHQKICAgICAgICAgIG9uIHRoZSBuZXh0IGxpbmUgKi8KQEAgLTI0MzIsNyArMjQ5Myw3IEBACiAgICAgICBpZiAocmVzdWx0ICE9IEVfT0spCiAJewogCSAgRGVsZXRlQ2hhcihmb3JtKTsKLQkgIFdpbmRvd19Ub19CdWZmZXIoZm9ybS0+dywgZmllbGQpOworCSAgV2luZG93X1RvX0J1ZmZlcihmb3JtLCBmaWVsZCk7CiAJICByZXN1bHQgPSBFX1JFUVVFU1RfREVOSUVEOwogCX0KICAgICB9CkBAIC0yNDcxLDcgKzI1MzIsNyBAQAogICAgICBlZGl0YWJsZSBmaWVsZHMuCiAgICAqLwogICBpZiAoKGZjdCA9PSBGRV9EZWxldGVfUHJldmlvdXMpICYmCi0gICAgICAoZm9ybS0+b3B0cyAmIE9fQlNfT1ZFUkxPQUQpICYmCisgICAgICAoKHVuc2lnbmVkKWZvcm0tPm9wdHMgJiBPX0JTX09WRVJMT0FEKSAmJgogICAgICAgRmlyc3RfUG9zaXRpb25fSW5fQ3VycmVudF9GaWVsZChmb3JtKSkKICAgICB7CiAgICAgICByZXMgPSBJbnRlcl9GaWVsZF9OYXZpZ2F0aW9uKEZOX1ByZXZpb3VzX0ZpZWxkLCBmb3JtKTsKQEAgLTI0ODAsNyArMjU0MSw3IEBACiAgICAgewogICAgICAgaWYgKGZjdCA9PSBGRV9OZXdfTGluZSkKIAl7Ci0JICBpZiAoKGZvcm0tPm9wdHMgJiBPX05MX09WRVJMT0FEKSAmJgorCSAgaWYgKCgodW5zaWduZWQpZm9ybS0+b3B0cyAmIE9fTkxfT1ZFUkxPQUQpICYmCiAJICAgICAgRmlyc3RfUG9zaXRpb25fSW5fQ3VycmVudF9GaWVsZChmb3JtKSkKIAkgICAgewogCSAgICAgIHJlcyA9IEludGVyX0ZpZWxkX05hdmlnYXRpb24oRk5fTmV4dF9GaWVsZCwgZm9ybSk7CkBAIC0yNDkyLDExICsyNTUzLDExIEBACiAgICAgICBlbHNlCiAJewogCSAgLyogRnJvbSBub3cgb24sIGV2ZXJ5dGhpbmcgbXVzdCBiZSBlZGl0YWJsZSAqLwotCSAgaWYgKGZvcm0tPmN1cnJlbnQtPm9wdHMgJiBPX0VESVQpCisJICBpZiAoKHVuc2lnbmVkKWZvcm0tPmN1cnJlbnQtPm9wdHMgJiBPX0VESVQpCiAJICAgIHsKIAkgICAgICByZXMgPSBmY3QoZm9ybSk7CiAJICAgICAgaWYgKHJlcyA9PSBFX09LKQotCQlmb3JtLT5zdGF0dXMgfD0gX1dJTkRPV19NT0RJRklFRDsKKwkJU2V0U3RhdHVzKGZvcm0sIF9XSU5ET1dfTU9ESUZJRUQpOwogCSAgICB9CiAJfQogICAgIH0KQEAgLTI1MjMsMTMgKzI1ODQsMTMgQEAKICAgRklFTERfQ0VMTCAqYnAsICp0OwogICBib29sIExhc3RfUm93ID0gKChmaWVsZC0+ZHJvd3MgLSAxKSA9PSBmb3JtLT5jdXJyb3cpOwogCi0gIFQoKFRfQ0FMTEVEKCJGRV9OZXdfTGluZSglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRkVfTmV3X0xpbmUoJXApIiksICh2b2lkICopZm9ybSkpOwogICBpZiAoZm9ybS0+c3RhdHVzICYgX09WTE1PREUpCiAgICAgewogICAgICAgaWYgKExhc3RfUm93ICYmCiAJICAoIShHcm93YWJsZShmaWVsZCkgJiYgIVNpbmdsZV9MaW5lX0ZpZWxkKGZpZWxkKSkpKQogCXsKLQkgIGlmICghKGZvcm0tPm9wdHMgJiBPX05MX09WRVJMT0FEKSkKKwkgIGlmICghKCh1bnNpZ25lZClmb3JtLT5vcHRzICYgT19OTF9PVkVSTE9BRCkpCiAJICAgIHJldHVybkNvZGUoRV9SRVFVRVNUX0RFTklFRCk7CiAJICB3bW92ZShmb3JtLT53LCBmb3JtLT5jdXJyb3csIGZvcm0tPmN1cmNvbCk7CiAJICB3Y2xydG9lb2woZm9ybS0+dyk7CkBAIC0yNTM3LDcgKzI1OTgsNyBAQAogCSAgICAgaGFuZGxlZCBpbiB0aGUgZ2VuZXJpYyByb3V0aW5lLiBUaGUgcmVhc29uIGlzLAogCSAgICAgdGhhdCBGTl9OZXh0X0ZpZWxkIG1heSBmYWlsLCBidXQgdGhlIGZvcm0gaXMKIAkgICAgIGRlZmluaXRpdmVseSBjaGFuZ2VkICovCi0JICBmb3JtLT5zdGF0dXMgfD0gX1dJTkRPV19NT0RJRklFRDsKKwkgIFNldFN0YXR1cyhmb3JtLCBfV0lORE9XX01PRElGSUVEKTsKIAkgIHJldHVybkNvZGUoSW50ZXJfRmllbGRfTmF2aWdhdGlvbihGTl9OZXh0X0ZpZWxkLCBmb3JtKSk7CiAJfQogICAgICAgZWxzZQpAQCAtMjU1Myw3ICsyNjE0LDcgQEAKIAkgIHdjbHJ0b2VvbChmb3JtLT53KTsKIAkgIGZvcm0tPmN1cnJvdysrOwogCSAgZm9ybS0+Y3VyY29sID0gMDsKLQkgIGZvcm0tPnN0YXR1cyB8PSBfV0lORE9XX01PRElGSUVEOworCSAgU2V0U3RhdHVzKGZvcm0sIF9XSU5ET1dfTU9ESUZJRUQpOwogCSAgcmV0dXJuQ29kZShFX09LKTsKIAl9CiAgICAgfQpAQCAtMjU2Myw3ICsyNjI0LDcgQEAKICAgICAgIGlmIChMYXN0X1JvdyAmJgogCSAgIShHcm93YWJsZShmaWVsZCkgJiYgIVNpbmdsZV9MaW5lX0ZpZWxkKGZpZWxkKSkpCiAJewotCSAgaWYgKCEoZm9ybS0+b3B0cyAmIE9fTkxfT1ZFUkxPQUQpKQorCSAgaWYgKCEoKHVuc2lnbmVkKWZvcm0tPm9wdHMgJiBPX05MX09WRVJMT0FEKSkKIAkgICAgcmV0dXJuQ29kZShFX1JFUVVFU1RfREVOSUVEKTsKIAkgIHJldHVybkNvZGUoSW50ZXJfRmllbGRfTmF2aWdhdGlvbihGTl9OZXh0X0ZpZWxkLCBmb3JtKSk7CiAJfQpAQCAtMjU4NSw3ICsyNjQ2LDcgQEAKIAkgIHdtb3ZlKGZvcm0tPncsIGZvcm0tPmN1cnJvdywgZm9ybS0+Y3VyY29sKTsKIAkgIHdpbnNlcnRsbihmb3JtLT53KTsKIAkgIG15QURETlNUUihmb3JtLT53LCBicCwgKGludCkodCAtIGJwKSk7Ci0JICBmb3JtLT5zdGF0dXMgfD0gX1dJTkRPV19NT0RJRklFRDsKKwkgIFNldFN0YXR1cyhmb3JtLCBfV0lORE9XX01PRElGSUVEKTsKIAkgIHJldHVybkNvZGUoRV9PSyk7CiAJfQogICAgIH0KQEAgLTI2MDYsOCArMjY2Nyw5IEBACiAgIEZJRUxEICpmaWVsZCA9IGZvcm0tPmN1cnJlbnQ7CiAgIGludCByZXN1bHQgPSBFX1JFUVVFU1RfREVOSUVEOwogCi0gIFQoKFRfQ0FMTEVEKCJGRV9JbnNlcnRfQ2hhcmFjdGVyKCVwKSIpLCBmb3JtKSk7Ci0gIGlmIChDaGVja19DaGFyKGZpZWxkLT50eXBlLCAoaW50KUNfQkxBTkssIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQorICBUKChUX0NBTExFRCgiRkVfSW5zZXJ0X0NoYXJhY3RlciglcCkiKSwgKHZvaWQgKilmb3JtKSk7CisgIGlmIChDaGVja19DaGFyKGZvcm0sIGZpZWxkLCBmaWVsZC0+dHlwZSwgKGludClDX0JMQU5LLAorCQkgKFR5cGVBcmd1bWVudCAqKShmaWVsZC0+YXJnKSkpCiAgICAgewogICAgICAgYm9vbCBUaGVyZV9Jc19Sb29tID0gSXNfVGhlcmVfUm9vbV9Gb3JfQV9DaGFyX0luX0xpbmUoZm9ybSk7CiAKQEAgLTI2NDEsOCArMjcwMyw5IEBACiAgIEZJRUxEICpmaWVsZCA9IGZvcm0tPmN1cnJlbnQ7CiAgIGludCByZXN1bHQgPSBFX1JFUVVFU1RfREVOSUVEOwogCi0gIFQoKFRfQ0FMTEVEKCJGRV9JbnNlcnRfTGluZSglcCkiKSwgZm9ybSkpOwotICBpZiAoQ2hlY2tfQ2hhcihmaWVsZC0+dHlwZSwgKGludClDX0JMQU5LLCAoVHlwZUFyZ3VtZW50ICopKGZpZWxkLT5hcmcpKSkKKyAgVCgoVF9DQUxMRUQoIkZFX0luc2VydF9MaW5lKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKKyAgaWYgKENoZWNrX0NoYXIoZm9ybSwgZmllbGQsCisJCSBmaWVsZC0+dHlwZSwgKGludClDX0JMQU5LLCAoVHlwZUFyZ3VtZW50ICopKGZpZWxkLT5hcmcpKSkKICAgICB7CiAgICAgICBib29sIE1heWJlX0RvbmUgPSAoZm9ybS0+Y3Vycm93ICE9IChmaWVsZC0+ZHJvd3MgLSAxKSkgJiYKICAgICAgIElzX1RoZXJlX1Jvb21fRm9yX0FfTGluZShmb3JtKTsKQEAgLTI2NzQsNyArMjczNyw3IEBACiBzdGF0aWMgaW50CiBGRV9EZWxldGVfQ2hhcmFjdGVyKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGRV9EZWxldGVfQ2hhcmFjdGVyKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJGRV9EZWxldGVfQ2hhcmFjdGVyKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgRGVsZXRlQ2hhcihmb3JtKTsKICAgcmV0dXJuQ29kZShFX09LKTsKIH0KQEAgLTI2OTcsNyArMjc2MCw3IEBACiB7CiAgIEZJRUxEICpmaWVsZCA9IGZvcm0tPmN1cnJlbnQ7CiAKLSAgVCgoVF9DQUxMRUQoIkZFX0RlbGV0ZV9QcmV2aW91cyglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRkVfRGVsZXRlX1ByZXZpb3VzKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgaWYgKEZpcnN0X1Bvc2l0aW9uX0luX0N1cnJlbnRfRmllbGQoZm9ybSkpCiAgICAgcmV0dXJuQ29kZShFX1JFUVVFU1RfREVOSUVEKTsKIApAQCAtMjc2NSw3ICsyODI4LDcgQEAKIHN0YXRpYyBpbnQKIEZFX0RlbGV0ZV9MaW5lKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGRV9EZWxldGVfTGluZSglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRkVfRGVsZXRlX0xpbmUoJXApIiksICh2b2lkICopZm9ybSkpOwogICBmb3JtLT5jdXJjb2wgPSAwOwogICB3ZGVsZXRlbG4oZm9ybS0+dyk7CiAgIHJldHVybkNvZGUoRV9PSyk7CkBAIC0yNzg5LDcgKzI4NTIsNyBAQAogICBGSUVMRF9DRUxMICpjcCA9IGJwICsgZm9ybS0+Y3VyY29sOwogICBGSUVMRF9DRUxMICpzOwogCi0gIFQoKFRfQ0FMTEVEKCJGRV9EZWxldGVfV29yZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRkVfRGVsZXRlX1dvcmQoJXApIiksICh2b2lkICopZm9ybSkpOwogICBTeW5jaHJvbml6ZV9CdWZmZXIoZm9ybSk7CiAgIGlmIChJU0JMQU5LKCpjcCkpCiAgICAgcmV0dXJuQ29kZShFX1JFUVVFU1RfREVOSUVEKTsJLyogbm90IGluIHdvcmQgKi8KQEAgLTI4MjMsNyArMjg4Niw3IEBACiBzdGF0aWMgaW50CiBGRV9DbGVhcl9Ub19FbmRfT2ZfTGluZShGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiRkVfQ2xlYXJfVG9fRW5kX09mX0xpbmUoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZFX0NsZWFyX1RvX0VuZF9PZl9MaW5lKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgd21vdmUoZm9ybS0+dywgZm9ybS0+Y3Vycm93LCBmb3JtLT5jdXJjb2wpOwogICB3Y2xydG9lb2woZm9ybS0+dyk7CiAgIHJldHVybkNvZGUoRV9PSyk7CkBAIC0yODQwLDcgKzI5MDMsNyBAQAogc3RhdGljIGludAogRkVfQ2xlYXJfVG9fRW5kX09mX0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGRV9DbGVhcl9Ub19FbmRfT2ZfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZFX0NsZWFyX1RvX0VuZF9PZl9GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHdtb3ZlKGZvcm0tPncsIGZvcm0tPmN1cnJvdywgZm9ybS0+Y3VyY29sKTsKICAgd2NscnRvYm90KGZvcm0tPncpOwogICByZXR1cm5Db2RlKEVfT0spOwpAQCAtMjg1Nyw3ICsyOTIwLDcgQEAKIHN0YXRpYyBpbnQKIEZFX0NsZWFyX0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGRV9DbGVhcl9GaWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRkVfQ2xlYXJfRmllbGQoJXApIiksICh2b2lkICopZm9ybSkpOwogICBmb3JtLT5jdXJyb3cgPSBmb3JtLT5jdXJjb2wgPSAwOwogICB3ZXJhc2UoZm9ybS0+dyk7CiAgIHJldHVybkNvZGUoRV9PSyk7CkBAIC0yODgxLDggKzI5NDQsOCBAQAogc3RhdGljIGludAogRU1fT3ZlcmxheV9Nb2RlKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJFTV9PdmVybGF5X01vZGUoJXApIiksIGZvcm0pKTsKLSAgZm9ybS0+c3RhdHVzIHw9IF9PVkxNT0RFOworICBUKChUX0NBTExFRCgiRU1fT3ZlcmxheV9Nb2RlKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKKyAgU2V0U3RhdHVzKGZvcm0sIF9PVkxNT0RFKTsKICAgcmV0dXJuQ29kZShFX09LKTsKIH0KIApAQCAtMjg5Nyw4ICsyOTYwLDggQEAKIHN0YXRpYyBpbnQKIEVNX0luc2VydF9Nb2RlKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJFTV9JbnNlcnRfTW9kZSglcCkiKSwgZm9ybSkpOwotICBmb3JtLT5zdGF0dXMgJj0gfl9PVkxNT0RFOworICBUKChUX0NBTExFRCgiRU1fSW5zZXJ0X01vZGUoJXApIiksICh2b2lkICopZm9ybSkpOworICBDbHJTdGF0dXMoZm9ybSwgX09WTE1PREUpOwogICByZXR1cm5Db2RlKEVfT0spOwogfQogCkBAIC0yOTEyLDcgKzI5NzUsNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KLXwgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyBib29sIE5leHRfQ2hvaWNlKAorfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGJvb2wgTmV4dF9DaG9pY2UoRk9STSAqIGZvcm0sCiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUVMRFRZUEUgKiB0eXAsCiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUVMRCAqIGZpZWxkLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUFyZ3VtZW50ICphcmdwKQpAQCAtMjkyNCw3ICsyOTg3LDcgQEAKIHwgICAgICAgICAgICAgICAgICAgIEZBTFNFICAgLSBjb3VsZG4ndCByZXRyaWV2ZSBuZXh0IGNob2ljZQogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0YXRpYyBib29sCi1OZXh0X0Nob2ljZShGSUVMRFRZUEUgKnR5cCwgRklFTEQgKmZpZWxkLCBUeXBlQXJndW1lbnQgKmFyZ3ApCitOZXh0X0Nob2ljZShGT1JNICpmb3JtLCBGSUVMRFRZUEUgKnR5cCwgRklFTEQgKmZpZWxkLCBUeXBlQXJndW1lbnQgKmFyZ3ApCiB7CiAgIGlmICghdHlwIHx8ICEodHlwLT5zdGF0dXMgJiBfSEFTX0NIT0lDRSkpCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjkzMywxOSArMjk5NiwyNyBAQAogICAgIHsKICAgICAgIGFzc2VydChhcmdwKTsKICAgICAgIHJldHVybiAoCi0JICAgICAgIE5leHRfQ2hvaWNlKHR5cC0+bGVmdCwgZmllbGQsIGFyZ3AtPmxlZnQpIHx8Ci0JICAgICAgIE5leHRfQ2hvaWNlKHR5cC0+cmlnaHQsIGZpZWxkLCBhcmdwLT5yaWdodCkpOworCSAgICAgICBOZXh0X0Nob2ljZShmb3JtLCB0eXAtPmxlZnQsIGZpZWxkLCBhcmdwLT5sZWZ0KSB8fAorCSAgICAgICBOZXh0X0Nob2ljZShmb3JtLCB0eXAtPnJpZ2h0LCBmaWVsZCwgYXJncC0+cmlnaHQpKTsKICAgICB9CiAgIGVsc2UKICAgICB7CisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisgICAgICBhc3NlcnQodHlwLT5lbnVtX25leHQub25leHQpOworICAgICAgaWYgKHR5cC0+c3RhdHVzICYgX0dFTkVSSUMpCisJcmV0dXJuIHR5cC0+ZW51bV9uZXh0LmduZXh0KGZvcm0sIGZpZWxkLCAodm9pZCAqKWFyZ3ApOworICAgICAgZWxzZQorCXJldHVybiB0eXAtPmVudW1fbmV4dC5vbmV4dChmaWVsZCwgKHZvaWQgKilhcmdwKTsKKyNlbHNlCiAgICAgICBhc3NlcnQodHlwLT5uZXh0KTsKICAgICAgIHJldHVybiB0eXAtPm5leHQoZmllbGQsICh2b2lkICopYXJncCk7CisjZW5kaWYKICAgICB9CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQotfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGJvb2wgUHJldmlvdXNfQ2hvaWNlKAorfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGJvb2wgUHJldmlvdXNfQ2hvaWNlKEZPUk0gKiBmb3JtLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEVFlQRSAqIHR5cCwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUVMRCAqIGZpZWxkLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVBcmd1bWVudCAqYXJncCkKQEAgLTI5NTcsNyArMzAyOCw3IEBACiB8ICAgICAgICAgICAgICAgICAgICBGQUxTRSAgIC0gY291bGRuJ3QgcmV0cmlldmUgcHJldmlvdXMgY2hvaWNlCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogc3RhdGljIGJvb2wKLVByZXZpb3VzX0Nob2ljZShGSUVMRFRZUEUgKnR5cCwgRklFTEQgKmZpZWxkLCBUeXBlQXJndW1lbnQgKmFyZ3ApCitQcmV2aW91c19DaG9pY2UoRk9STSAqZm9ybSwgRklFTERUWVBFICp0eXAsIEZJRUxEICpmaWVsZCwgVHlwZUFyZ3VtZW50ICphcmdwKQogewogICBpZiAoIXR5cCB8fCAhKHR5cC0+c3RhdHVzICYgX0hBU19DSE9JQ0UpKQogICAgIHJldHVybiBGQUxTRTsKQEAgLTI5NjYsMTMgKzMwMzcsMjEgQEAKICAgICB7CiAgICAgICBhc3NlcnQoYXJncCk7CiAgICAgICByZXR1cm4gKAotCSAgICAgICBQcmV2aW91c19DaG9pY2UodHlwLT5sZWZ0LCBmaWVsZCwgYXJncC0+bGVmdCkgfHwKLQkgICAgICAgUHJldmlvdXNfQ2hvaWNlKHR5cC0+cmlnaHQsIGZpZWxkLCBhcmdwLT5yaWdodCkpOworCSAgICAgICBQcmV2aW91c19DaG9pY2UoZm9ybSwgdHlwLT5sZWZ0LCBmaWVsZCwgYXJncC0+bGVmdCkgfHwKKwkgICAgICAgUHJldmlvdXNfQ2hvaWNlKGZvcm0sIHR5cC0+cmlnaHQsIGZpZWxkLCBhcmdwLT5yaWdodCkpOwogICAgIH0KICAgZWxzZQogICAgIHsKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKyAgICAgIGFzc2VydCh0eXAtPmVudW1fcHJldi5vcHJldik7CisgICAgICBpZiAodHlwLT5zdGF0dXMgJiBfR0VORVJJQykKKwlyZXR1cm4gdHlwLT5lbnVtX3ByZXYuZ3ByZXYoZm9ybSwgZmllbGQsICh2b2lkICopYXJncCk7CisgICAgICBlbHNlCisJcmV0dXJuIHR5cC0+ZW51bV9wcmV2Lm9wcmV2KGZpZWxkLCAodm9pZCAqKWFyZ3ApOworI2Vsc2UKICAgICAgIGFzc2VydCh0eXAtPnByZXYpOwogICAgICAgcmV0dXJuIHR5cC0+cHJldihmaWVsZCwgKHZvaWQgKilhcmdwKTsKKyNlbmRpZgogICAgIH0KIH0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjk5Nyw5ICszMDc2LDkgQEAKIHsKICAgRklFTEQgKmZpZWxkID0gZm9ybS0+Y3VycmVudDsKIAotICBUKChUX0NBTExFRCgiQ1JfTmV4dF9DaG9pY2UoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkNSX05leHRfQ2hvaWNlKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgU3luY2hyb25pemVfQnVmZmVyKGZvcm0pOwotICByZXR1cm5Db2RlKChOZXh0X0Nob2ljZShmaWVsZC0+dHlwZSwgZmllbGQsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQorICByZXR1cm5Db2RlKChOZXh0X0Nob2ljZShmb3JtLCBmaWVsZC0+dHlwZSwgZmllbGQsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQogCSAgICAgPyBFX09LCiAJICAgICA6IEVfUkVRVUVTVF9ERU5JRUQpOwogfQpAQCAtMzAxOCw5ICszMDk3LDkgQEAKIHsKICAgRklFTEQgKmZpZWxkID0gZm9ybS0+Y3VycmVudDsKIAotICBUKChUX0NBTExFRCgiQ1JfUHJldmlvdXNfQ2hvaWNlKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJDUl9QcmV2aW91c19DaG9pY2UoJXApIiksICh2b2lkICopZm9ybSkpOwogICBTeW5jaHJvbml6ZV9CdWZmZXIoZm9ybSk7Ci0gIHJldHVybkNvZGUoKFByZXZpb3VzX0Nob2ljZShmaWVsZC0+dHlwZSwgZmllbGQsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQorICByZXR1cm5Db2RlKChQcmV2aW91c19DaG9pY2UoZm9ybSwgZmllbGQtPnR5cGUsIGZpZWxkLCAoVHlwZUFyZ3VtZW50ICopKGZpZWxkLT5hcmcpKSkKIAkgICAgID8gRV9PSwogCSAgICAgOiBFX1JFUVVFU1RfREVOSUVEKTsKIH0KQEAgLTMwMzQsNyArMzExMyw3IEBACiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQotfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGJvb2wgQ2hlY2tfRmllbGQoCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgYm9vbCBDaGVja19GaWVsZChGT1JNKiBmb3JtLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTERUWVBFICogdHlwLAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklFTEQgKiBmaWVsZCwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVBcmd1bWVudCAqIGFyZ3ApCkBAIC0zMDQ3LDExICszMTI2LDExIEBACiB8ICAgICAgICAgICAgICAgICAgICBGQUxTRSAgICAgIC0gZmllbGQgaXMgaW52YWxpZC4KICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBzdGF0aWMgYm9vbAotQ2hlY2tfRmllbGQoRklFTERUWVBFICp0eXAsIEZJRUxEICpmaWVsZCwgVHlwZUFyZ3VtZW50ICphcmdwKQorQ2hlY2tfRmllbGQoRk9STSAqZm9ybSwgRklFTERUWVBFICp0eXAsIEZJRUxEICpmaWVsZCwgVHlwZUFyZ3VtZW50ICphcmdwKQogewogICBpZiAodHlwKQogICAgIHsKLSAgICAgIGlmIChmaWVsZC0+b3B0cyAmIE9fTlVMTE9LKQorICAgICAgaWYgKEZpZWxkX0hhc19PcHRpb24oZmllbGQsIE9fTlVMTE9LKSkKIAl7CiAJICBGSUVMRF9DRUxMICpicCA9IGZpZWxkLT5idWY7CiAKQEAgLTMwNjgsMTMgKzMxNDcsMjMgQEAKIAl7CiAJICBhc3NlcnQoYXJncCk7CiAJICByZXR1cm4gKAotCQkgICBDaGVja19GaWVsZCh0eXAtPmxlZnQsIGZpZWxkLCBhcmdwLT5sZWZ0KSB8fAotCQkgICBDaGVja19GaWVsZCh0eXAtPnJpZ2h0LCBmaWVsZCwgYXJncC0+cmlnaHQpKTsKKwkJICAgQ2hlY2tfRmllbGQoZm9ybSwgdHlwLT5sZWZ0LCBmaWVsZCwgYXJncC0+bGVmdCkgfHwKKwkJICAgQ2hlY2tfRmllbGQoZm9ybSwgdHlwLT5yaWdodCwgZmllbGQsIGFyZ3AtPnJpZ2h0KSk7CiAJfQogICAgICAgZWxzZQogCXsKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKwkgIGlmICh0eXAtPmZpZWxkY2hlY2sub2ZjaGVjaykKKwkgICAgeworCSAgICAgIGlmICh0eXAtPnN0YXR1cyAmIF9HRU5FUklDKQorCQlyZXR1cm4gdHlwLT5maWVsZGNoZWNrLmdmY2hlY2soZm9ybSwgZmllbGQsICh2b2lkICopYXJncCk7CisJICAgICAgZWxzZQorCQlyZXR1cm4gdHlwLT5maWVsZGNoZWNrLm9mY2hlY2soZmllbGQsICh2b2lkICopYXJncCk7CisJICAgIH0KKyNlbHNlCiAJICBpZiAodHlwLT5mY2hlY2spCiAJICAgIHJldHVybiB0eXAtPmZjaGVjayhmaWVsZCwgKHZvaWQgKilhcmdwKTsKKyNlbmRpZgogCX0KICAgICB9CiAgIHJldHVybiBUUlVFOwpAQCAtMzA5OCwxMiArMzE4NywxMiBAQAogCiAgIFN5bmNocm9uaXplX0J1ZmZlcihmb3JtKTsKICAgaWYgKChmb3JtLT5zdGF0dXMgJiBfRkNIRUNLX1JFUVVJUkVEKSB8fAotICAgICAgKCEoZmllbGQtPm9wdHMgJiBPX1BBU1NPSykpKQorICAgICAgKCEoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19QQVNTT0spKSkpCiAgICAgewotICAgICAgaWYgKCFDaGVja19GaWVsZChmaWVsZC0+dHlwZSwgZmllbGQsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQorICAgICAgaWYgKCFDaGVja19GaWVsZChmb3JtLCBmaWVsZC0+dHlwZSwgZmllbGQsIChUeXBlQXJndW1lbnQgKikoZmllbGQtPmFyZykpKQogCXJldHVybiBGQUxTRTsKLSAgICAgIGZvcm0tPnN0YXR1cyAmPSB+X0ZDSEVDS19SRVFVSVJFRDsKLSAgICAgIGZpZWxkLT5zdGF0dXMgfD0gX0NIQU5HRUQ7CisgICAgICBDbHJTdGF0dXMoZm9ybSwgX0ZDSEVDS19SRVFVSVJFRCk7CisgICAgICBTZXRTdGF0dXMoZmllbGQsIF9DSEFOR0VEKTsKICAgICAgIFN5bmNocm9uaXplX0xpbmtlZF9GaWVsZHMoZmllbGQpOwogICAgIH0KICAgcmV0dXJuIFRSVUU7CkBAIC0zMTI4LDcgKzMyMTcsNyBAQAogc3RhdGljIGludAogRlZfVmFsaWRhdGlvbihGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiRlZfVmFsaWRhdGlvbiglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRlZfVmFsaWRhdGlvbiglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIGlmIChfbmNfSW50ZXJuYWxfVmFsaWRhdGlvbihmb3JtKSkKICAgICByZXR1cm5Db2RlKEVfT0spOwogICBlbHNlCkBAIC0zMjAzLDE0ICszMjkyLDE1IEBACiAJICBkbwogCSAgICB7CiAJICAgICAgZmllbGQgPSAoZmllbGQgPT0gbGFzdF9vbl9wYWdlKSA/IGZpcnN0IDogZmllbGQgKyAxOwotCSAgICAgIGlmICgoKCpmaWVsZCktPm9wdHMgJiBPX1ZJU0lCTEUpKQorCSAgICAgIGlmIChGaWVsZF9IYXNfT3B0aW9uKCpmaWVsZCwgT19WSVNJQkxFKSkKIAkJYnJlYWs7CiAJICAgIH0KIAkgIHdoaWxlIChwcm9wb3NlZCAhPSAoKmZpZWxkKSk7CiAKIAkgIHByb3Bvc2VkID0gKmZpZWxkOwogCi0JICBpZiAoKHByb3Bvc2VkID09ICpsYXN0X29uX3BhZ2UpICYmICEocHJvcG9zZWQtPm9wdHMgJiBPX1ZJU0lCTEUpKQorCSAgaWYgKChwcm9wb3NlZCA9PSAqbGFzdF9vbl9wYWdlKSAmJgorCSAgICAgICEoKHVuc2lnbmVkKXByb3Bvc2VkLT5vcHRzICYgT19WSVNJQkxFKSkKIAkgICAgewogCSAgICAgIC8qIFRoaXMgbWVhbnMsIHRoZXJlIGlzIGFsc28gbm8gdmlzaWJsZSBmaWVsZCBvbiB0aGUgcGFnZS4KIAkgICAgICAgICBTbyB3ZSBwcm9wb3NlIHRoZSBmaXJzdCBvbmUgYW5kIGhvcGUgdGhlIHZlcnkgYmVzdC4uLgpAQCAtMzUwNiw3ICszNTk2LDcgQEAKIHN0YXRpYyBpbnQKIEZOX05leHRfRmllbGQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIkZOX05leHRfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX05leHRfRmllbGQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfQ3VycmVudF9GaWVsZChmb3JtLAogCQkJCSAgIE5leHRfRmllbGRfT25fUGFnZShmb3JtLT5jdXJyZW50KSkpOwogfQpAQCAtMzUyNCw3ICszNjE0LDcgQEAKIHN0YXRpYyBpbnQKIEZOX1ByZXZpb3VzX0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9QcmV2aW91c19GaWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRk5fUHJldmlvdXNfRmllbGQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfQ3VycmVudF9GaWVsZChmb3JtLAogCQkJCSAgIFByZXZpb3VzX0ZpZWxkX09uX1BhZ2UoZm9ybS0+Y3VycmVudCkpKTsKIH0KQEAgLTM1NDEsNyArMzYzMSw3IEBACiBzdGF0aWMgaW50CiBGTl9GaXJzdF9GaWVsZChGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiRk5fRmlyc3RfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX0ZpcnN0X0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShfbmNfU2V0X0N1cnJlbnRfRmllbGQoZm9ybSwKIAkJCQkgICBOZXh0X0ZpZWxkX09uX1BhZ2UoZm9ybS0+ZmllbGRbZm9ybS0+cGFnZVtmb3JtLT5jdXJwYWdlXS5wbWF4XSkpKTsKIH0KQEAgLTM1NTgsNyArMzY0OCw3IEBACiBzdGF0aWMgaW50CiBGTl9MYXN0X0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9MYXN0X0ZpZWxkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJGTl9MYXN0X0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZSgKIAkgICAgICBfbmNfU2V0X0N1cnJlbnRfRmllbGQoZm9ybSwKIAkJCQkgICAgUHJldmlvdXNfRmllbGRfT25fUGFnZShmb3JtLT5maWVsZFtmb3JtLT5wYWdlW2Zvcm0tPmN1cnBhZ2VdLnBtaW5dKSkpOwpAQCAtMzU3Nyw3ICszNjY3LDcgQEAKIHN0YXRpYyBpbnQKIEZOX1NvcnRlZF9OZXh0X0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9Tb3J0ZWRfTmV4dF9GaWVsZCglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiRk5fU29ydGVkX05leHRfRmllbGQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfQ3VycmVudF9GaWVsZChmb3JtLAogCQkJCSAgIFNvcnRlZF9OZXh0X0ZpZWxkKGZvcm0tPmN1cnJlbnQpKSk7CiB9CkBAIC0zNTk1LDcgKzM2ODUsNyBAQAogc3RhdGljIGludAogRk5fU29ydGVkX1ByZXZpb3VzX0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9Tb3J0ZWRfUHJldmlvdXNfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX1NvcnRlZF9QcmV2aW91c19GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoX25jX1NldF9DdXJyZW50X0ZpZWxkKGZvcm0sCiAJCQkJICAgU29ydGVkX1ByZXZpb3VzX0ZpZWxkKGZvcm0tPmN1cnJlbnQpKSk7CiB9CkBAIC0zNjEzLDcgKzM3MDMsNyBAQAogc3RhdGljIGludAogRk5fU29ydGVkX0ZpcnN0X0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9Tb3J0ZWRfRmlyc3RfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX1NvcnRlZF9GaXJzdF9GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoX25jX1NldF9DdXJyZW50X0ZpZWxkKGZvcm0sCiAJCQkJICAgU29ydGVkX05leHRfRmllbGQoZm9ybS0+ZmllbGRbZm9ybS0+cGFnZVtmb3JtLT5jdXJwYWdlXS5zbWF4XSkpKTsKIH0KQEAgLTM2MzEsNyArMzcyMSw3IEBACiBzdGF0aWMgaW50CiBGTl9Tb3J0ZWRfTGFzdF9GaWVsZChGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiRk5fU29ydGVkX0xhc3RfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX1NvcnRlZF9MYXN0X0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShfbmNfU2V0X0N1cnJlbnRfRmllbGQoZm9ybSwKIAkJCQkgICBTb3J0ZWRfUHJldmlvdXNfRmllbGQoZm9ybS0+ZmllbGRbZm9ybS0+cGFnZVtmb3JtLT5jdXJwYWdlXS5zbWluXSkpKTsKIH0KQEAgLTM2NDksNyArMzczOSw3IEBACiBzdGF0aWMgaW50CiBGTl9MZWZ0X0ZpZWxkKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJGTl9MZWZ0X0ZpZWxkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJGTl9MZWZ0X0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShfbmNfU2V0X0N1cnJlbnRfRmllbGQoZm9ybSwKIAkJCQkgICBMZWZ0X05laWdoYm9yX0ZpZWxkKGZvcm0tPmN1cnJlbnQpKSk7CiB9CkBAIC0zNjY3LDcgKzM3NTcsNyBAQAogc3RhdGljIGludAogRk5fUmlnaHRfRmllbGQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIkZOX1JpZ2h0X0ZpZWxkKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJGTl9SaWdodF9GaWVsZCglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoX25jX1NldF9DdXJyZW50X0ZpZWxkKGZvcm0sCiAJCQkJICAgUmlnaHRfTmVpZ2hib3JfRmllbGQoZm9ybS0+Y3VycmVudCkpKTsKIH0KQEAgLTM2ODcsNyArMzc3Nyw3IEBACiBzdGF0aWMgaW50CiBGTl9VcF9GaWVsZChGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiRk5fVXBfRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX1VwX0ZpZWxkKCVwKSIpLCAodm9pZCAqKWZvcm0pKTsKICAgcmV0dXJuQ29kZShfbmNfU2V0X0N1cnJlbnRfRmllbGQoZm9ybSwKIAkJCQkgICBVcHBlcl9OZWlnaGJvcl9GaWVsZChmb3JtLT5jdXJyZW50KSkpOwogfQpAQCAtMzcwNyw3ICszNzk3LDcgQEAKIHN0YXRpYyBpbnQKIEZOX0Rvd25fRmllbGQoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIkZOX0Rvd25fRmllbGQoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIkZOX0Rvd25fRmllbGQoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfQ3VycmVudF9GaWVsZChmb3JtLAogCQkJCSAgIERvd25fTmVpZ2hib3JfRmllbGQoZm9ybS0+Y3VycmVudCkpKTsKIH0KQEAgLTM3NDYsMTEgKzM4MzYsMTEgQEAKICAgICAgIEZJRUxEICpsYXN0X2ZpZWxkLCAqZmllbGRfb25fcGFnZTsKIAogICAgICAgd2VyYXNlKEdldF9Gb3JtX1dpbmRvdyhmb3JtKSk7Ci0gICAgICBmb3JtLT5jdXJwYWdlID0gcGFnZTsKKyAgICAgIGZvcm0tPmN1cnBhZ2UgPSAoc2hvcnQpcGFnZTsKICAgICAgIGxhc3RfZmllbGQgPSBmaWVsZF9vbl9wYWdlID0gZm9ybS0+ZmllbGRbZm9ybS0+cGFnZVtwYWdlXS5zbWluXTsKICAgICAgIGRvCiAJewotCSAgaWYgKGZpZWxkX29uX3BhZ2UtPm9wdHMgJiBPX1ZJU0lCTEUpCisJICBpZiAoKHVuc2lnbmVkKWZpZWxkX29uX3BhZ2UtPm9wdHMgJiBPX1ZJU0lCTEUpCiAJICAgIGlmICgocmVzID0gRGlzcGxheV9GaWVsZChmaWVsZF9vbl9wYWdlKSkgIT0gRV9PSykKIAkgICAgICByZXR1cm4gKHJlcyk7CiAJICBmaWVsZF9vbl9wYWdlID0gZmllbGRfb25fcGFnZS0+c25leHQ7CkBAIC0zODUxLDcgKzM5NDEsNyBAQAogc3RhdGljIGludAogUE5fTmV4dF9QYWdlKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJQTl9OZXh0X1BhZ2UoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIlBOX05leHRfUGFnZSglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoX25jX1NldF9Gb3JtX1BhZ2UoZm9ybSwgTmV4dF9QYWdlX051bWJlcihmb3JtKSwgKEZJRUxEICopMCkpOwogfQogCkBAIC0zODY3LDcgKzM5NTcsNyBAQAogc3RhdGljIGludAogUE5fUHJldmlvdXNfUGFnZShGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiUE5fUHJldmlvdXNfUGFnZSglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiUE5fUHJldmlvdXNfUGFnZSglcCkiKSwgKHZvaWQgKilmb3JtKSk7CiAgIHJldHVybkNvZGUoX25jX1NldF9Gb3JtX1BhZ2UoZm9ybSwgUHJldmlvdXNfUGFnZV9OdW1iZXIoZm9ybSksIChGSUVMRCAqKTApKTsKIH0KIApAQCAtMzg4Myw3ICszOTczLDcgQEAKIHN0YXRpYyBpbnQKIFBOX0ZpcnN0X1BhZ2UoRk9STSAqZm9ybSkKIHsKLSAgVCgoVF9DQUxMRUQoIlBOX0ZpcnN0X1BhZ2UoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoIlBOX0ZpcnN0X1BhZ2UoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfRm9ybV9QYWdlKGZvcm0sIDAsIChGSUVMRCAqKTApKTsKIH0KIApAQCAtMzg5OSw3ICszOTg5LDcgQEAKIHN0YXRpYyBpbnQKIFBOX0xhc3RfUGFnZShGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiUE5fTGFzdF9QYWdlKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJQTl9MYXN0X1BhZ2UoJXApIiksICh2b2lkICopZm9ybSkpOwogICByZXR1cm5Db2RlKF9uY19TZXRfRm9ybV9QYWdlKGZvcm0sIGZvcm0tPm1heHBhZ2UgLSAxLCAoRklFTEQgKikwKSk7CiB9CiAKQEAgLTM5MTEsNiArNDAwMSw5NCBAQAogICBIZWxwZXIgcm91dGluZXMgZm9yIHRoZSBjb3JlIGZvcm0gZHJpdmVyLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKyMgaWYgVVNFX1dJREVDX1NVUFBPUlQKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQorfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGludCBEYXRhX0VudHJ5X3coRk9STSAqIGZvcm0sIHdjaGFyX3QgYykKK3wKK3wgICBEZXNjcmlwdGlvbiAgIDogIEVudGVyIHRoZSB3aWRlIGNoYXJhY3RlciBjIGludG8gYXQgdGhlIGN1cnJlbnQKK3wgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IGZpZWxkIG9mIHRoZSBmb3JtLgorfAorfCAgIFJldHVybiBWYWx1ZXMgOiAgRV9PSyAgICAgICAgICAgICAgLSBzdWNjZXNzCit8ICAgICAgICAgICAgICAgICAgICBFX1JFUVVFU1RfREVOSUVEICAtIGRyaXZlciBjb3VsZCBub3QgcHJvY2VzcyB0aGUgcmVxdWVzdAorfCAgICAgICAgICAgICAgICAgICAgRV9TWVNURU1fRVJST1IgICAgLQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyBpbnQKK0RhdGFfRW50cnlfdyhGT1JNICpmb3JtLCB3Y2hhcl90IGMpCit7CisgIEZJRUxEICpmaWVsZCA9IGZvcm0tPmN1cnJlbnQ7CisgIGludCByZXN1bHQgPSBFX1JFUVVFU1RfREVOSUVEOworCisgIFQoKFRfQ0FMTEVEKCJEYXRhX0VudHJ5KCVwLCVzKSIpLCAodm9pZCAqKWZvcm0sIF90cmFjZWNodHlwZSgoY2h0eXBlKWMpKSk7CisgIGlmICgoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19FRElUKSkKKyNpZiBGSVhfRk9STV9JTkFDVElWRV9CVUcKKyAgICAgICYmIChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0FDVElWRSkpCisjZW5kaWYKKyAgICApCisgICAgeworICAgICAgd2NoYXJfdCBnaXZlblsyXTsKKyAgICAgIGNjaGFyX3QgdGVtcF9jaDsKKworICAgICAgZ2l2ZW5bMF0gPSBjOworICAgICAgZ2l2ZW5bMV0gPSAxOworICAgICAgc2V0Y2NoYXIoJnRlbXBfY2gsIGdpdmVuLCAwLCAwLCAodm9pZCAqKTApOworICAgICAgaWYgKChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0JMQU5LKSkgJiYKKwkgIEZpcnN0X1Bvc2l0aW9uX0luX0N1cnJlbnRfRmllbGQoZm9ybSkgJiYKKwkgICEoZm9ybS0+c3RhdHVzICYgX0ZDSEVDS19SRVFVSVJFRCkgJiYKKwkgICEoZm9ybS0+c3RhdHVzICYgX1dJTkRPV19NT0RJRklFRCkpCisJd2VyYXNlKGZvcm0tPncpOworCisgICAgICBpZiAoZm9ybS0+c3RhdHVzICYgX09WTE1PREUpCisJeworCSAgd2FkZF93Y2goZm9ybS0+dywgJnRlbXBfY2gpOworCX0KKyAgICAgIGVsc2UKKwkvKiBubyBfT1ZMTU9ERSAqLworCXsKKwkgIGJvb2wgVGhlcmVfSXNfUm9vbSA9IElzX1RoZXJlX1Jvb21fRm9yX0FfQ2hhcl9Jbl9MaW5lKGZvcm0pOworCisJICBpZiAoIShUaGVyZV9Jc19Sb29tIHx8CisJCSgoU2luZ2xlX0xpbmVfRmllbGQoZmllbGQpICYmIEdyb3dhYmxlKGZpZWxkKSkpKSkKKwkgICAgUkVUVVJOKEVfUkVRVUVTVF9ERU5JRUQpOworCisJICBpZiAoIVRoZXJlX0lzX1Jvb20gJiYgIUZpZWxkX0dyb3duKGZpZWxkLCAxKSkKKwkgICAgUkVUVVJOKEVfU1lTVEVNX0VSUk9SKTsKKworCSAgd2luc193Y2goZm9ybS0+dywgJnRlbXBfY2gpOworCX0KKworICAgICAgaWYgKChyZXN1bHQgPSBXcmFwcGluZ19Ob3RfTmVjZXNzYXJ5X09yX1dyYXBwaW5nX09rKGZvcm0pKSA9PSBFX09LKQorCXsKKwkgIGJvb2wgRW5kX09mX0ZpZWxkID0gKCgoZmllbGQtPmRyb3dzIC0gMSkgPT0gZm9ybS0+Y3Vycm93KSAmJgorCQkJICAgICAgICgoZmllbGQtPmRjb2xzIC0gMSkgPT0gZm9ybS0+Y3VyY29sKSk7CisKKwkgIGZvcm0tPnN0YXR1cyB8PSBfV0lORE9XX01PRElGSUVEOworCSAgaWYgKEVuZF9PZl9GaWVsZCAmJiAhR3Jvd2FibGUoZmllbGQpICYmIChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0FVVE9TS0lQKSkpCisJICAgIHJlc3VsdCA9IEludGVyX0ZpZWxkX05hdmlnYXRpb24oRk5fTmV4dF9GaWVsZCwgZm9ybSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoRW5kX09mX0ZpZWxkICYmIEdyb3dhYmxlKGZpZWxkKSAmJiAhRmllbGRfR3Jvd24oZmllbGQsIDEpKQorCQlyZXN1bHQgPSBFX1NZU1RFTV9FUlJPUjsKKwkgICAgICBlbHNlCisJCXsKKwkJICAvKgorCQkgICAqIFdlIGhhdmUganVzdCBhZGRlZCBhIGJ5dGUgdG8gdGhlIGZvcm0gZmllbGQuICBJdCBtYXkgaGF2ZQorCQkgICAqIGJlZW4gcGFydCBvZiBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICBJZiBpdCB3YXMsIHRoZQorCQkgICAqIGFkZGNoX3VzZWQgZmllbGQgaXMgbm9uemVybyBhbmQgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gbW92ZQorCQkgICAqIHRvIGEgbmV3IGNvbHVtbi4KKwkJICAgKi8KKwkJICBpZiAoV0lORE9XX0VYVChmb3JtLT53LCBhZGRjaF91c2VkKSA9PSAwKQorCQkgICAgSUZOX05leHRfQ2hhcmFjdGVyKGZvcm0pOworCisJCSAgcmVzdWx0ID0gRV9PSzsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKyAgUkVUVVJOKHJlc3VsdCk7Cit9CisjIGVuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQogfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIGludCBEYXRhX0VudHJ5KEZPUk0gKiBmb3JtLGludCBjKQpAQCAtMzkyOCwxNCArNDEwNiwxNCBAQAogICBGSUVMRCAqZmllbGQgPSBmb3JtLT5jdXJyZW50OwogICBpbnQgcmVzdWx0ID0gRV9SRVFVRVNUX0RFTklFRDsKIAotICBUKChUX0NBTExFRCgiRGF0YV9FbnRyeSglcCwlcykiKSwgZm9ybSwgX3RyYWNlY2h0eXBlKChjaHR5cGUpYykpKTsKLSAgaWYgKChmaWVsZC0+b3B0cyAmIE9fRURJVCkKKyAgVCgoVF9DQUxMRUQoIkRhdGFfRW50cnkoJXAsJXMpIiksICh2b2lkICopZm9ybSwgX3RyYWNlY2h0eXBlKChjaHR5cGUpYykpKTsKKyAgaWYgKChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0VESVQpKQogI2lmIEZJWF9GT1JNX0lOQUNUSVZFX0JVRwotICAgICAgJiYgKGZpZWxkLT5vcHRzICYgT19BQ1RJVkUpCisgICAgICAmJiAoRmllbGRfSGFzX09wdGlvbihmaWVsZCwgT19BQ1RJVkUpKQogI2VuZGlmCiAgICAgKQogICAgIHsKLSAgICAgIGlmICgoZmllbGQtPm9wdHMgJiBPX0JMQU5LKSAmJgorICAgICAgaWYgKChGaWVsZF9IYXNfT3B0aW9uKGZpZWxkLCBPX0JMQU5LKSkgJiYKIAkgIEZpcnN0X1Bvc2l0aW9uX0luX0N1cnJlbnRfRmllbGQoZm9ybSkgJiYKIAkgICEoZm9ybS0+c3RhdHVzICYgX0ZDSEVDS19SRVFVSVJFRCkgJiYKIAkgICEoZm9ybS0+c3RhdHVzICYgX1dJTkRPV19NT0RJRklFRCkpCkBAIC0zOTY1LDggKzQxNDMsOCBAQAogCSAgYm9vbCBFbmRfT2ZfRmllbGQgPSAoKChmaWVsZC0+ZHJvd3MgLSAxKSA9PSBmb3JtLT5jdXJyb3cpICYmCiAJCQkgICAgICAgKChmaWVsZC0+ZGNvbHMgLSAxKSA9PSBmb3JtLT5jdXJjb2wpKTsKIAotCSAgZm9ybS0+c3RhdHVzIHw9IF9XSU5ET1dfTU9ESUZJRUQ7Ci0JICBpZiAoRW5kX09mX0ZpZWxkICYmICFHcm93YWJsZShmaWVsZCkgJiYgKGZpZWxkLT5vcHRzICYgT19BVVRPU0tJUCkpCisJICBTZXRTdGF0dXMoZm9ybSwgX1dJTkRPV19NT0RJRklFRCk7CisJICBpZiAoRW5kX09mX0ZpZWxkICYmICFHcm93YWJsZShmaWVsZCkgJiYgKEZpZWxkX0hhc19PcHRpb24oZmllbGQsIE9fQVVUT1NLSVApKSkKIAkgICAgcmVzdWx0ID0gSW50ZXJfRmllbGRfTmF2aWdhdGlvbihGTl9OZXh0X0ZpZWxkLCBmb3JtKTsKIAkgIGVsc2UKIAkgICAgewpAQCAtNDEyOSw3ICs0MzA3LDcgQEAKICAgY29uc3QgQmluZGluZ19JbmZvICpCSSA9IChCaW5kaW5nX0luZm8gKikgMDsKICAgaW50IHJlcyA9IEVfVU5LTk9XTl9DT01NQU5EOwogCi0gIFQoKFRfQ0FMTEVEKCJmb3JtX2RyaXZlciglcCwlZCkiKSwgZm9ybSwgYykpOworICBUKChUX0NBTExFRCgiZm9ybV9kcml2ZXIoJXAsJWQpIiksICh2b2lkICopZm9ybSwgYykpOwogCiAgIGlmICghZm9ybSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtNDE1OCw3ICs0MzM2LDEwIEBACiAKICAgaWYgKChjID49IE1JTl9GT1JNX0NPTU1BTkQgJiYgYyA8PSBNQVhfRk9STV9DT01NQU5EKSAmJgogICAgICAgKChiaW5kaW5nc1tjIC0gTUlOX0ZPUk1fQ09NTUFORF0ua2V5Y29kZSAmIEtleV9NYXNrKSA9PSBjKSkKLSAgICBCSSA9ICYoYmluZGluZ3NbYyAtIE1JTl9GT1JNX0NPTU1BTkRdKTsKKyAgICB7CisgICAgICBUUihUUkFDRV9DQUxMUywgKCJmb3JtX3JlcXVlc3QgJXMiLCBmb3JtX3JlcXVlc3RfbmFtZShjKSkpOworICAgICAgQkkgPSAmKGJpbmRpbmdzW2MgLSBNSU5fRk9STV9DT01NQU5EXSk7CisgICAgfQogCiAgIGlmIChCSSkKICAgICB7CkBAIC00MTc2LDcgKzQzNTcsNyBAQAogCU5VTEwJCQkvKiBDaG9pY2UgUmVxdWVzdCBpcyBnZW5lcmljICAgICAgICAgICAqLwogICAgICAgfTsKICAgICAgIHNpemVfdCBuTWV0aG9kcyA9IChzaXplb2YoR2VuZXJpY19NZXRob2RzKSAvIHNpemVvZihHZW5lcmljX01ldGhvZHNbMF0pKTsKLSAgICAgIHNpemVfdCBtZXRob2QgPSAoQkktPmtleWNvZGUgPj4gSURfU2hmdCkgJiAweGZmZmY7CS8qIHNlZSBJRF9NYXNrICovCisgICAgICBzaXplX3QgbWV0aG9kID0gKHNpemVfdCkgKChCSS0+a2V5Y29kZSA+PiBJRF9TaGZ0KSAmIDB4ZmZmZik7CS8qIHNlZSBJRF9NYXNrICovCiAKICAgICAgIGlmICgobWV0aG9kID49IG5NZXRob2RzKSB8fCAhKEJJLT5jbWQpKQogCXJlcyA9IEVfU1lTVEVNX0VSUk9SOwpAQCAtNDE4NSwxNiArNDM2NiwyMCBAQAogCSAgR2VuZXJpY19NZXRob2QgZmN0ID0gR2VuZXJpY19NZXRob2RzW21ldGhvZF07CiAKIAkgIGlmIChmY3QpCi0JICAgIHJlcyA9IGZjdChCSS0+Y21kLCBmb3JtKTsKKwkgICAgeworCSAgICAgIHJlcyA9IGZjdChCSS0+Y21kLCBmb3JtKTsKKwkgICAgfQogCSAgZWxzZQotCSAgICByZXMgPSAoQkktPmNtZCkgKGZvcm0pOworCSAgICB7CisJICAgICAgcmVzID0gKEJJLT5jbWQpIChmb3JtKTsKKwkgICAgfQogCX0KICAgICB9CiAjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCiAgIGVsc2UgaWYgKEtFWV9NT1VTRSA9PSBjKQogICAgIHsKICAgICAgIE1FVkVOVCBldmVudDsKLSAgICAgIFdJTkRPVyAqd2luID0gZm9ybS0+d2luID8gZm9ybS0+d2luIDogc3Rkc2NyOworICAgICAgV0lORE9XICp3aW4gPSBmb3JtLT53aW4gPyBmb3JtLT53aW4gOiBTdGRTY3JlZW4oR2V0X0Zvcm1fU2NyZWVuKGZvcm0pKTsKICAgICAgIFdJTkRPVyAqc3ViID0gZm9ybS0+c3ViID8gZm9ybS0+c3ViIDogd2luOwogCiAgICAgICBnZXRtb3VzZSgmZXZlbnQpOwpAQCAtNDI4MSw3ICs0NDY2LDcgQEAKICAgICAgIGlmICghaXNjbnRybChVQ2hhcihjKSkpCiAjZWxzZQogICAgICAgaWYgKGlzcHJpbnQoVUNoYXIoYykpICYmCi0JICBDaGVja19DaGFyKGZvcm0tPmN1cnJlbnQtPnR5cGUsIGMsCisJICBDaGVja19DaGFyKGZvcm0sIGZvcm0tPmN1cnJlbnQsIGZvcm0tPmN1cnJlbnQtPnR5cGUsIGMsCiAJCSAgICAgKFR5cGVBcmd1bWVudCAqKShmb3JtLT5jdXJyZW50LT5hcmcpKSkKICNlbmRpZgogCXJlcyA9IERhdGFfRW50cnkoZm9ybSwgYyk7CkBAIC00MjkwLDYgKzQ0NzUsMTk1IEBACiAgIFJFVFVSTihyZXMpOwogfQogCisjIGlmIFVTRV9XSURFQ19TVVBQT1JUCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KK3wgICBGdW5jdGlvbiAgICAgIDogIGludCBmb3JtX2RyaXZlcl93KEZPUk0gKiBmb3JtLGludCB0eXBlLHdjaGFyX3QgIGMpCit8Cit8ICAgRGVzY3JpcHRpb24gICA6ICBUaGlzIGlzIHRoZSB3b3JraG9yc2Ugb2YgdGhlIGZvcm1zIHN5c3RlbS4KK3wKK3wgICAgICAgICAgICAgICAgICAgIElucHV0IGlzIGVpdGhlciBhIGtleSBjb2RlIChyZXF1ZXN0KSBvciBhIHdpZGUgY2hhcgorfCAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgYnkgZS5nLiBnZXRfd2NoICgpLiBUaGUgdHlwZSBtdXN0IGJlIHBhc3NlZAorfCAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCxzbyB0aGF0IHdlIGFyZSBhYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBjaGFyCit8ICAgICAgICAgICAgICAgICAgICBpcyBhIG11bHRpYnl0ZSBjaGFyIG9yIGEgcmVxdWVzdC4KKworfCAgICAgICAgICAgICAgICAgICAgSWYgaXQgaXMgYSByZXF1ZXN0LCB0aGUgZm9ybSBkcml2ZXIgZXhlY3V0ZXMKK3wgICAgICAgICAgICAgICAgICAgIHRoZSByZXF1ZXN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIElmIGl0IGlzIGRhdGEKK3wgICAgICAgICAgICAgICAgICAgIChwcmludGFibGUgY2hhcmFjdGVyKSwgaXQgZW50ZXJzIHRoZSBkYXRhIGludG8gdGhlCit8ICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBjdXJyZW50IGZpZWxkLiBJZiBpdCBpcyBub3QKK3wgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZWQsIHRoZSBmb3JtIGRyaXZlciBhc3N1bWVzIGl0IGlzIGFuIGFwcGxpY2F0aW9uCit8ICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGNvbW1hbmQgYW5kIHJldHVybnMgRV9VTktOT1dOX0NPTU1BTkQuCit8ICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbiBkZWZpbmVkIGNvbW1hbmQgc2hvdWxkIGJlIGRlZmluZWQgcmVsYXRpdmUKK3wgICAgICAgICAgICAgICAgICAgIHRvIE1BWF9GT1JNX0NPTU1BTkQsIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGEgcmVxdWVzdC4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIEVfT0sgICAgICAgICAgICAgIC0gc3VjY2VzcworfCAgICAgICAgICAgICAgICAgICAgRV9TWVNURU1fRVJST1IgICAgLSBzeXN0ZW0gZXJyb3IKK3wgICAgICAgICAgICAgICAgICAgIEVfQkFEX0FSR1VNRU5UICAgIC0gYW4gYXJndW1lbnQgaXMgaW5jb3JyZWN0Cit8ICAgICAgICAgICAgICAgICAgICBFX05PVF9QT1NURUQgICAgICAtIGZvcm0gaXMgbm90IHBvc3RlZAorfCAgICAgICAgICAgICAgICAgICAgRV9JTlZBTElEX0ZJRUxEICAgLSBmaWVsZCBjb250ZW50cyBhcmUgaW52YWxpZAorfCAgICAgICAgICAgICAgICAgICAgRV9CQURfU1RBVEUgICAgICAgLSBjYWxsZWQgZnJvbSBpbnNpZGUgYSBob29rIHJvdXRpbmUKK3wgICAgICAgICAgICAgICAgICAgIEVfUkVRVUVTVF9ERU5JRUQgIC0gcmVxdWVzdCBmYWlsZWQKK3wgICAgICAgICAgICAgICAgICAgIEVfTk9UX0NPTk5FQ1RFRCAgIC0gbm8gZmllbGRzIGFyZSBjb25uZWN0ZWQgdG8gdGhlIGZvcm0KK3wgICAgICAgICAgICAgICAgICAgIEVfVU5LTk9XTl9DT01NQU5EIC0gY29tbWFuZCBub3Qga25vd24KKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitmb3JtX2RyaXZlcl93KEZPUk0gKmZvcm0sIGludCB0eXBlLCB3Y2hhcl90IGMpCit7CisgIGNvbnN0IEJpbmRpbmdfSW5mbyAqQkkgPSAoQmluZGluZ19JbmZvICopIDA7CisgIGludCByZXMgPSBFX1VOS05PV05fQ09NTUFORDsKKworICBUKChUX0NBTExFRCgiZm9ybV9kcml2ZXIoJXAsJWQpIiksICh2b2lkICopZm9ybSwgKGludCljKSk7CisKKyAgaWYgKCFmb3JtKQorICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CisKKyAgaWYgKCEoZm9ybS0+ZmllbGQpKQorICAgIFJFVFVSTihFX05PVF9DT05ORUNURUQpOworCisgIGFzc2VydChmb3JtLT5wYWdlKTsKKworICBpZiAoYyA9PSAod2NoYXJfdClGSVJTVF9BQ1RJVkVfTUFHSUMpCisgICAgeworICAgICAgZm9ybS0+Y3VycmVudCA9IF9uY19GaXJzdF9BY3RpdmVfRmllbGQoZm9ybSk7CisgICAgICBSRVRVUk4oRV9PSyk7CisgICAgfQorCisgIGFzc2VydChmb3JtLT5jdXJyZW50ICYmCisJIGZvcm0tPmN1cnJlbnQtPmJ1ZiAmJgorCSAoZm9ybS0+Y3VycmVudC0+Zm9ybSA9PSBmb3JtKQorICAgICk7CisKKyAgaWYgKGZvcm0tPnN0YXR1cyAmIF9JTl9EUklWRVIpCisgICAgUkVUVVJOKEVfQkFEX1NUQVRFKTsKKworICBpZiAoIShmb3JtLT5zdGF0dXMgJiBfUE9TVEVEKSkKKyAgICBSRVRVUk4oRV9OT1RfUE9TVEVEKTsKKworICAvKiBjaGVjayBpZiB0aGlzIGlzIGEga2V5Y29kZSBvciBhICh3aWRlKSBjaGFyICovCisgIGlmICh0eXBlID09IEtFWV9DT0RFX1lFUykKKyAgICB7CisgICAgICBpZiAoKGMgPj0gTUlOX0ZPUk1fQ09NTUFORCAmJiBjIDw9IE1BWF9GT1JNX0NPTU1BTkQpICYmCisJICAoKGJpbmRpbmdzW2MgLSBNSU5fRk9STV9DT01NQU5EXS5rZXljb2RlICYgS2V5X01hc2spID09IGMpKQorCUJJID0gJihiaW5kaW5nc1tjIC0gTUlOX0ZPUk1fQ09NTUFORF0pOworICAgIH0KKworICBpZiAoQkkpCisgICAgeworICAgICAgdHlwZWRlZiBpbnQgKCpHZW5lcmljX01ldGhvZCkgKGludCAoKmNvbnN0KSAoRk9STSAqKSwgRk9STSAqKTsKKyAgICAgIHN0YXRpYyBjb25zdCBHZW5lcmljX01ldGhvZCBHZW5lcmljX01ldGhvZHNbXSA9CisgICAgICB7CisJUGFnZV9OYXZpZ2F0aW9uLAkvKiBvdmVybG9hZGVkIHRvIGNhbGwgZmllbGQmZm9ybSBob29rcyAqLworCUludGVyX0ZpZWxkX05hdmlnYXRpb24sCS8qIG92ZXJsb2FkZWQgdG8gY2FsbCBmaWVsZCBob29rcyAgICAgICovCisJTlVMTCwJCQkvKiBJbnRyYS1GaWVsZCBpcyBnZW5lcmljICAgICAgICAgICAgICAqLworCVZlcnRpY2FsX1Njcm9sbGluZywJLyogT3ZlcmxvYWRlZCB0byBjaGVjayBtdWx0aS1saW5lICAgICAgKi8KKwlIb3Jpem9udGFsX1Njcm9sbGluZywJLyogT3ZlcmxvYWRlZCB0byBjaGVjayBzaW5nbGUtbGluZSAgICAgKi8KKwlGaWVsZF9FZGl0aW5nLAkJLyogT3ZlcmxvYWRlZCB0byBtYXJrIG1vZGlmaWNhdGlvbiAgICAgKi8KKwlOVUxMLAkJCS8qIEVkaXQgTW9kZSBpcyBnZW5lcmljICAgICAgICAgICAgICAgICovCisJTlVMTCwJCQkvKiBGaWVsZCBWYWxpZGF0aW9uIGlzIGdlbmVyaWMgICAgICAgICAqLworCU5VTEwJCQkvKiBDaG9pY2UgUmVxdWVzdCBpcyBnZW5lcmljICAgICAgICAgICAqLworICAgICAgfTsKKyAgICAgIHNpemVfdCBuTWV0aG9kcyA9IChzaXplb2YoR2VuZXJpY19NZXRob2RzKSAvIHNpemVvZihHZW5lcmljX01ldGhvZHNbMF0pKTsKKyAgICAgIHNpemVfdCBtZXRob2QgPSAoc2l6ZV90KSAoQkktPmtleWNvZGUgPj4gSURfU2hmdCkgJiAweGZmZmY7CS8qIHNlZSBJRF9NYXNrICovCisKKyAgICAgIGlmICgobWV0aG9kID49IG5NZXRob2RzKSB8fCAhKEJJLT5jbWQpKQorCXJlcyA9IEVfU1lTVEVNX0VSUk9SOworICAgICAgZWxzZQorCXsKKwkgIEdlbmVyaWNfTWV0aG9kIGZjdCA9IEdlbmVyaWNfTWV0aG9kc1ttZXRob2RdOworCisJICBpZiAoZmN0KQorCSAgICByZXMgPSBmY3QoQkktPmNtZCwgZm9ybSk7CisJICBlbHNlCisJICAgIHJlcyA9IChCSS0+Y21kKSAoZm9ybSk7CisJfQorICAgIH0KKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKyAgZWxzZSBpZiAoS0VZX01PVVNFID09IGMpCisgICAgeworICAgICAgTUVWRU5UIGV2ZW50OworICAgICAgV0lORE9XICp3aW4gPSBmb3JtLT53aW4gPyBmb3JtLT53aW4gOiBTdGRTY3JlZW4oR2V0X0Zvcm1fU2NyZWVuKGZvcm0pKTsKKyAgICAgIFdJTkRPVyAqc3ViID0gZm9ybS0+c3ViID8gZm9ybS0+c3ViIDogd2luOworCisgICAgICBnZXRtb3VzZSgmZXZlbnQpOworICAgICAgaWYgKChldmVudC5ic3RhdGUgJiAoQlVUVE9OMV9DTElDS0VEIHwKKwkJCSAgIEJVVFRPTjFfRE9VQkxFX0NMSUNLRUQgfAorCQkJICAgQlVUVE9OMV9UUklQTEVfQ0xJQ0tFRCkpCisJICAmJiB3ZW5jbG9zZSh3aW4sIGV2ZW50LnksIGV2ZW50LngpKQorCXsJCQkvKiB3ZSByZWFjdCBvbmx5IGlmIHRoZSBjbGljayB3YXMgaW4gdGhlIHVzZXJ3aW4sIHRoYXQgbWVhbnMKKwkJCQkgICAqIGluc2lkZSB0aGUgZm9ybSBkaXNwbGF5IGFyZWEgb3IgYXQgdGhlIGRlY29yYXRpb24gd2luZG93LgorCQkJCSAqLworCSAgaW50IHJ5ID0gZXZlbnQueSwgcnggPSBldmVudC54OwkvKiBzY3JlZW4gY29vcmRpbmF0ZXMgKi8KKworCSAgcmVzID0gRV9SRVFVRVNUX0RFTklFRDsKKwkgIGlmIChtb3VzZV90cmFmbygmcnksICZyeCwgRkFMU0UpKQorCSAgICB7CQkJLyogcngsIHJ5IGFyZSBub3cgImN1cnNlcyIgY29vcmRpbmF0ZXMgKi8KKwkgICAgICBpZiAocnkgPCBzdWItPl9iZWd5KQorCQl7CQkvKiB3ZSBjbGlja2VkIGFib3ZlIHRoZSBkaXNwbGF5IHJlZ2lvbjsgdGhpcyBpcworCQkJCSAgICogaW50ZXJwcmV0ZWQgYXMgInNjcm9sbCB1cCIgcmVxdWVzdAorCQkJCSAqLworCQkgIGlmIChldmVudC5ic3RhdGUgJiBCVVRUT04xX0NMSUNLRUQpCisJCSAgICByZXMgPSBmb3JtX2RyaXZlcihmb3JtLCBSRVFfUFJFVl9GSUVMRCk7CisJCSAgZWxzZSBpZiAoZXZlbnQuYnN0YXRlICYgQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRCkKKwkJICAgIHJlcyA9IGZvcm1fZHJpdmVyKGZvcm0sIFJFUV9QUkVWX1BBR0UpOworCQkgIGVsc2UgaWYgKGV2ZW50LmJzdGF0ZSAmIEJVVFRPTjFfVFJJUExFX0NMSUNLRUQpCisJCSAgICByZXMgPSBmb3JtX2RyaXZlcihmb3JtLCBSRVFfRklSU1RfRklFTEQpOworCQl9CisJICAgICAgZWxzZSBpZiAocnkgPiBzdWItPl9iZWd5ICsgc3ViLT5fbWF4eSkKKwkJewkJLyogd2UgY2xpY2tlZCBiZWxvdyB0aGUgZGlzcGxheSByZWdpb247IHRoaXMgaXMKKwkJCQkgICAqIGludGVycHJldGVkIGFzICJzY3JvbGwgZG93biIgcmVxdWVzdAorCQkJCSAqLworCQkgIGlmIChldmVudC5ic3RhdGUgJiBCVVRUT04xX0NMSUNLRUQpCisJCSAgICByZXMgPSBmb3JtX2RyaXZlcihmb3JtLCBSRVFfTkVYVF9GSUVMRCk7CisJCSAgZWxzZSBpZiAoZXZlbnQuYnN0YXRlICYgQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRCkKKwkJICAgIHJlcyA9IGZvcm1fZHJpdmVyKGZvcm0sIFJFUV9ORVhUX1BBR0UpOworCQkgIGVsc2UgaWYgKGV2ZW50LmJzdGF0ZSAmIEJVVFRPTjFfVFJJUExFX0NMSUNLRUQpCisJCSAgICByZXMgPSBmb3JtX2RyaXZlcihmb3JtLCBSRVFfTEFTVF9GSUVMRCk7CisJCX0KKwkgICAgICBlbHNlIGlmICh3ZW5jbG9zZShzdWIsIGV2ZW50LnksIGV2ZW50LngpKQorCQl7CQkvKiBJbnNpZGUgdGhlIGFyZWEgd2UgdHJ5IHRvIGZpbmQgdGhlIGhpdCBpdGVtICovCisJCSAgaW50IGk7CisKKwkJICByeSA9IGV2ZW50Lnk7CisJCSAgcnggPSBldmVudC54OworCQkgIGlmICh3bW91c2VfdHJhZm8oc3ViLCAmcnksICZyeCwgRkFMU0UpKQorCQkgICAgeworCQkgICAgICBpbnQgbWluX2ZpZWxkID0gZm9ybS0+cGFnZVtmb3JtLT5jdXJwYWdlXS5wbWluOworCQkgICAgICBpbnQgbWF4X2ZpZWxkID0gZm9ybS0+cGFnZVtmb3JtLT5jdXJwYWdlXS5wbWF4OworCisJCSAgICAgIGZvciAoaSA9IG1pbl9maWVsZDsgaSA8PSBtYXhfZmllbGQ7ICsraSkKKwkJCXsKKwkJCSAgRklFTEQgKmZpZWxkID0gZm9ybS0+ZmllbGRbaV07CisKKwkJCSAgaWYgKEZpZWxkX0lzX1NlbGVjdGFibGUoZmllbGQpCisJCQkgICAgICAmJiBGaWVsZF9lbmNsb3NlcyhmaWVsZCwgcnksIHJ4KSA9PSBFX09LKQorCQkJICAgIHsKKwkJCSAgICAgIHJlcyA9IF9uY19TZXRfQ3VycmVudF9GaWVsZChmb3JtLCBmaWVsZCk7CisJCQkgICAgICBpZiAocmVzID09IEVfT0spCisJCQkJcmVzID0gX25jX1Bvc2l0aW9uX0Zvcm1fQ3Vyc29yKGZvcm0pOworCQkJICAgICAgaWYgKHJlcyA9PSBFX09LCisJCQkJICAmJiAoZXZlbnQuYnN0YXRlICYgQlVUVE9OMV9ET1VCTEVfQ0xJQ0tFRCkpCisJCQkJcmVzID0gRV9VTktOT1dOX0NPTU1BTkQ7CisJCQkgICAgICBicmVhazsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwlyZXMgPSBFX1JFUVVFU1RfREVOSUVEOworICAgIH0KKyNlbmRpZiAvKiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gKi8KKyAgZWxzZSBpZiAodHlwZSA9PSBPSykKKyAgICB7CisgICAgICByZXMgPSBEYXRhX0VudHJ5X3coZm9ybSwgYyk7CisgICAgfQorCisgIF9uY19SZWZyZXNoX0N1cnJlbnRfRmllbGQoZm9ybSk7CisgIFJFVFVSTihyZXMpOworfQorIyBlbmRpZgkvKiBVU0VfV0lERUNfU1VQUE9SVCAqLworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgRmllbGQtQnVmZmVyIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4KICAgVGhlIGVmZmVjdHMgb2Ygc2V0dGluZyBhIGJ1ZmZlciBhcmUgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBjb3JlIG9mIHRoZSBmb3JtCkBAIC00MzE5LDE0ICs0NjkzLDE0IEBACiB7CiAgIEZJRUxEX0NFTEwgKnA7CiAgIGludCByZXMgPSBFX09LOwotICB1bnNpZ25lZCBpbnQgaTsKLSAgdW5zaWduZWQgaW50IGxlbjsKKyAgaW50IGk7CisgIGludCBsZW47CiAKICNpZiBVU0VfV0lERUNfU1VQUE9SVAogICBGSUVMRF9DRUxMICp3aWRldmFsdWUgPSAwOwogI2VuZGlmCiAKLSAgVCgoVF9DQUxMRUQoInNldF9maWVsZF9idWZmZXIoJXAsJWQsJXMpIiksIGZpZWxkLCBidWZmZXIsIF9uY192aXNidWYodmFsdWUpKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfZmllbGRfYnVmZmVyKCVwLCVkLCVzKSIpLCAodm9pZCAqKWZpZWxkLCBidWZmZXIsIF9uY192aXNidWYodmFsdWUpKSk7CiAKICAgaWYgKCFmaWVsZCB8fCAhdmFsdWUgfHwgKChidWZmZXIgPCAwKSB8fCAoYnVmZmVyID4gZmllbGQtPm5idWYpKSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtNDMzOCw3ICs0NzEyLDcgQEAKICAgICAgIC8qIGZvciBhIGdyb3dhYmxlIGZpZWxkIHdlIG11c3QgYXNzdW1lIHplcm8gdGVybWluYXRlZCBzdHJpbmdzLCBiZWNhdXNlCiAgICAgICAgICBzb21laG93IHdlIGhhdmUgdG8gZGV0ZWN0IHRoZSBsZW5ndGggb2Ygd2hhdCBzaG91bGQgYmUgY29waWVkLgogICAgICAgICovCi0gICAgICB1bnNpZ25lZCBpbnQgdmxlbiA9IHN0cmxlbih2YWx1ZSk7CisgICAgICBpbnQgdmxlbiA9IChpbnQpc3RybGVuKHZhbHVlKTsKIAogICAgICAgaWYgKHZsZW4gPiBsZW4pCiAJewpAQCAtNDM0Nyw3ICs0NzIxLDkgQEAKIAkJCQkJCSAgICAgKiBmaWVsZC0+Y29scykpKSkKIAkgICAgUkVUVVJOKEVfU1lTVEVNX0VSUk9SKTsKIAorI2lmICFVU0VfV0lERUNfU1VQUE9SVAogCSAgbGVuID0gdmxlbjsKKyNlbmRpZgogCX0KICAgICB9CiAKQEAgLTQzNjAsMTQgKzQ3MzYsMTUgQEAKICAgICogYW5kIG90aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZSByZWFsbHkgZG8gbm90IHdhbnQgdG8gaGFuZGxlIGhlcmUuCiAgICAqLwogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCi0gIGlmICh3cmVzaXplKGZpZWxkLT53b3JraW5nLCBmaWVsZC0+ZHJvd3MsIGZpZWxkLT5kY29scykgPT0gRVJSKQorICBpZiAod3Jlc2l6ZShmaWVsZC0+d29ya2luZywgMSwgQnVmZmVyX0xlbmd0aChmaWVsZCkgKyAxKSA9PSBFUlIpCiAjZW5kaWYKICAgICB7CiAgICAgICBkZWx3aW4oZmllbGQtPndvcmtpbmcpOwotICAgICAgZmllbGQtPndvcmtpbmcgPSBuZXdwYWQoZmllbGQtPmRyb3dzLCBmaWVsZC0+ZGNvbHMpOworICAgICAgZmllbGQtPndvcmtpbmcgPSBuZXdwYWQoMSwgQnVmZmVyX0xlbmd0aChmaWVsZCkgKyAxKTsKICAgICB9CisgIGxlbiA9IEJ1ZmZlcl9MZW5ndGgoZmllbGQpOwogICB3Y2xlYXIoZmllbGQtPndvcmtpbmcpOwotICBtdndhZGRzdHIoZmllbGQtPndvcmtpbmcsIDAsIDAsIHZhbHVlKTsKKyAgKHZvaWQpbXZ3YWRkc3RyKGZpZWxkLT53b3JraW5nLCAwLCAwLCB2YWx1ZSk7CiAKICAgaWYgKCh3aWRldmFsdWUgPSB0eXBlQ2FsbG9jKEZJRUxEX0NFTEwsIGxlbiArIDEpKSA9PSAwKQogICAgIHsKQEAgLTQzNzUsMTEgKzQ3NTIsMTEgQEAKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgKHVuc2lnbmVkKWZpZWxkLT5kcm93czsgKytpKQorICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxkLT5kcm93czsgKytpKQogCXsKLQkgIG12d2luX3djaG5zdHIoZmllbGQtPndvcmtpbmcsIGksIDAsCi0JCQl3aWRldmFsdWUgKyAoaSAqIGZpZWxkLT5kY29scyksCi0JCQlmaWVsZC0+ZGNvbHMpOworCSAgKHZvaWQpbXZ3aW5fd2NobnN0cihmaWVsZC0+d29ya2luZywgMCwgKGludClpICogZmllbGQtPmRjb2xzLAorCQkJICAgICAgd2lkZXZhbHVlICsgKChpbnQpaSAqIGZpZWxkLT5kY29scyksCisJCQkgICAgICBmaWVsZC0+ZGNvbHMpOwogCX0KICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKIAl7CkBAIC00NDMzLDI3ICs0ODEwLDI3IEBACiB7CiAgIGNoYXIgKnJlc3VsdCA9IDA7CiAKLSAgVCgoVF9DQUxMRUQoImZpZWxkX2J1ZmZlciglcCwlZCkiKSwgZmllbGQsIGJ1ZmZlcikpOworICBUKChUX0NBTExFRCgiZmllbGRfYnVmZmVyKCVwLCVkKSIpLCAoY29uc3Qgdm9pZCAqKWZpZWxkLCBidWZmZXIpKTsKIAogICBpZiAoZmllbGQgJiYgKGJ1ZmZlciA+PSAwKSAmJiAoYnVmZmVyIDw9IGZpZWxkLT5uYnVmKSkKICAgICB7CiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKICAgICAgIEZJRUxEX0NFTEwgKmRhdGEgPSBBZGRyZXNzX09mX050aF9CdWZmZXIoZmllbGQsIGJ1ZmZlcik7Ci0gICAgICB1bnNpZ25lZCBuZWVkID0gMDsKKyAgICAgIHNpemVfdCBuZWVkID0gMDsKICAgICAgIGludCBzaXplID0gQnVmZmVyX0xlbmd0aChmaWVsZCk7CiAgICAgICBpbnQgbjsKIAogICAgICAgLyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIHRoZSBleHBhbmRlZCBzdHJpbmcgKi8KICAgICAgIGZvciAobiA9IDA7IG4gPCBzaXplOyArK24pCiAJewotCSAgaWYgKCFpc1dpZGVjRXh0KGRhdGFbbl0pKQorCSAgaWYgKCFpc1dpZGVjRXh0KGRhdGFbbl0pICYmIGRhdGFbbl0uY2hhcnNbMF0gIT0gTCdcMCcpCiAJICAgIHsKIAkgICAgICBtYnN0YXRlX3Qgc3RhdGU7CiAJICAgICAgc2l6ZV90IG5leHQ7CiAKIAkgICAgICBpbml0X21iKHN0YXRlKTsKIAkgICAgICBuZXh0ID0gX25jX3djcnRvbWIoMCwgZGF0YVtuXS5jaGFyc1swXSwgJnN0YXRlKTsKLQkgICAgICBpZiAoIWlzRUlMU0VRKG5leHQpKQorCSAgICAgIGlmIChuZXh0ID4gMCkKIAkJbmVlZCArPSBuZXh0OwogCSAgICB9CiAJfQpAQCAtNDQ2MywxMiArNDg0MCwyNSBAQAogCWZyZWUoZmllbGQtPmV4cGFuZGVkW2J1ZmZlcl0pOwogICAgICAgZmllbGQtPmV4cGFuZGVkW2J1ZmZlcl0gPSB0eXBlTWFsbG9jKGNoYXIsIG5lZWQgKyAxKTsKIAotICAgICAgLyogZXhwYW5kIHRoZSBtdWx0aWJ5dGUgZGF0YSAqLworICAgICAgLyoKKyAgICAgICAqIEV4cGFuZCB0aGUgbXVsdGlieXRlIGRhdGEuCisgICAgICAgKgorICAgICAgICogSXQgbWF5IGFsc28gYmUgbXVsdGktY29sdW1uIGRhdGEuICBJbiB0aGF0IGNhc2UsIHRoZSBkYXRhIGZvciBhIHJvdworICAgICAgICogbWF5IGJlIG51bGwtcGFkZGVkIHRvIGFsaWduIHRvIHRoZSBkY29scy9kcm93cyBsYXlvdXQgKG9yIGl0IG1heQorICAgICAgICogY29udGFpbiBlbWJlZGRlZCB3aWRlLWNoYXJhY3RlciBleHRlbnNpb25zKS4gIENoYW5nZSB0aGUgbnVsbC1wYWRkaW5nCisgICAgICAgKiB0byBibGFua3MgYXMgbmVlZGVkLgorICAgICAgICovCiAgICAgICBpZiAoKHJlc3VsdCA9IGZpZWxkLT5leHBhbmRlZFtidWZmZXJdKSAhPSAwKQogCXsKIAkgIHdjbGVhcihmaWVsZC0+d29ya2luZyk7Ci0JICBtdndhZGRfd2NobnN0cihmaWVsZC0+d29ya2luZywgMCwgMCwgZGF0YSwgc2l6ZSk7Ci0JICBtdndpbm5zdHIoZmllbGQtPndvcmtpbmcsIDAsIDAsIHJlc3VsdCwgKGludCluZWVkKTsKKwkgIHdtb3ZlKGZpZWxkLT53b3JraW5nLCAwLCAwKTsKKwkgIGZvciAobiA9IDA7IG4gPCBzaXplOyArK24pCisJICAgIHsKKwkgICAgICBpZiAoIWlzV2lkZWNFeHQoZGF0YVtuXSkgJiYgZGF0YVtuXS5jaGFyc1swXSAhPSBMJ1wwJykKKwkJd2FkZF93Y2goZmllbGQtPndvcmtpbmcsICZkYXRhW25dKTsKKwkgICAgfQorCSAgd21vdmUoZmllbGQtPndvcmtpbmcsIDAsIDApOworCSAgd2lubnN0cihmaWVsZC0+d29ya2luZywgcmVzdWx0LCAoaW50KW5lZWQpOwogCX0KICNlbHNlCiAgICAgICByZXN1bHQgPSBBZGRyZXNzX09mX050aF9CdWZmZXIoZmllbGQsIGJ1ZmZlcik7CkBAIC00NDc5LDIyICs0ODY5LDYgQEAKIAogI2lmIFVTRV9XSURFQ19TVVBQT1JUCiAKLS8qIEZJWE1FOiBzZWUgbGliX2dldF93Y2guYyAqLwotI2lmIEhBVkVfTUJUT1dDICYmIEhBVkVfTUJMRU4KLSNkZWZpbmUgcmVzZXRfbWJ5dGVzKHN0YXRlKSBtYmxlbihOVUxMLCAwKSwgbWJ0b3djKE5VTEwsIE5VTEwsIDApCi0jZGVmaW5lIGNvdW50X21ieXRlcyhidWZmZXIsbGVuZ3RoLHN0YXRlKSBtYmxlbihidWZmZXIsbGVuZ3RoKQotI2RlZmluZSB0cmFuc19tYnl0ZXMod2NoLGJ1ZmZlcixsZW5ndGgsc3RhdGUpIFwKLQkoaW50KSBtYnRvd2MoJndjaCwgYnVmZmVyLCBsZW5ndGgpCi0jZWxpZiBIQVZFX01CUlRPV0MgJiYgSEFWRV9NQlJMRU4KLSNkZWZpbmUgTkVFRF9TVEFURQotI2RlZmluZSByZXNldF9tYnl0ZXMoc3RhdGUpIGluaXRfbWIoc3RhdGUpCi0jZGVmaW5lIGNvdW50X21ieXRlcyhidWZmZXIsbGVuZ3RoLHN0YXRlKSBtYnJsZW4oYnVmZmVyLGxlbmd0aCwmc3RhdGUpCi0jZGVmaW5lIHRyYW5zX21ieXRlcyh3Y2gsYnVmZmVyLGxlbmd0aCxzdGF0ZSkgXAotCShpbnQpIG1icnRvd2MoJndjaCwgYnVmZmVyLCBsZW5ndGgsICZzdGF0ZSkKLSNlbHNlCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgQ29udmVydCBhIG11bHRpYnl0ZSBzdHJpbmcgdG8gYSB3aWRlLWNoYXJhY3RlciBzdHJpbmcuICBUaGUgcmVzdWx0IG11c3QgYmUKIHwgZnJlZWQgYnkgdGhlIGNhbGxlci4KQEAgLTQ1MDksNyArNDg4Myw3IEBACiAgIGludCBwYXNzOwogICBpbnQgc3RhdHVzOwogCi0jaWZkZWYgTkVFRF9TVEFURQorI2lmbmRlZiBzdGF0ZV91bnVzZWQKICAgbWJzdGF0ZV90IHN0YXRlOwogI2VuZGlmCiAKQEAgLTQ1MjgsOCArNDkwMiw4IEBACiAKIAkgICAgICBzb3VyY2VbcGFzc2VkICsgdHJpZXNdID0gMDsKIAkgICAgICByZXNldF9tYnl0ZXMoc3RhdGUpOwotCSAgICAgIHN0YXR1cyA9IHRyYW5zX21ieXRlcyh3Y2gsIHNvdXJjZSArIHBhc3NlZCwgdHJpZXMsIHN0YXRlKTsKLQkgICAgICBzb3VyY2VbcGFzc2VkICsgdHJpZXNdID0gc2F2ZTsKKwkgICAgICBzdGF0dXMgPSBjaGVja19tYnl0ZXMod2NoLCBzb3VyY2UgKyBwYXNzZWQsIHRyaWVzLCBzdGF0ZSk7CisJICAgICAgc291cmNlW3Bhc3NlZCArIHRyaWVzXSA9IChjaGFyKXNhdmU7CiAKIAkgICAgICBpZiAoc3RhdHVzID4gMCkKIAkJewpAQCAtNDU0MywxNCArNDkxNywxNCBAQAogCQl7CiAJCSAgcmVzdWx0W25lZWRdID0gd2NoOwogCQl9Ci0JICAgICAgcGFzc2VkICs9IHN0YXR1czsKKwkgICAgICBwYXNzZWQgKz0gKHNpemVfdCkgc3RhdHVzOwogCSAgICAgICsrbmVlZDsKIAkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJICAgICAgaWYgKHBhc3MpCiAJCXsKLQkJICByZXN1bHRbbmVlZF0gPSBzb3VyY2VbcGFzc2VkXTsKKwkJICByZXN1bHRbbmVlZF0gPSAod2NoYXJfdClzb3VyY2VbcGFzc2VkXTsKIAkJfQogCSAgICAgICsrbmVlZDsKIAkgICAgICArK3Bhc3NlZDsKQEAgLTQ1NjMsNyArNDkzNyw3IEBACiAJICAgIGJyZWFrOwogCSAgcmVzdWx0ID0gdHlwZUNhbGxvYyh3Y2hhcl90LCBuZWVkKTsKIAotCSAgKmxlbmd0aHAgPSBuZWVkOworCSAgKmxlbmd0aHAgPSAoaW50KW5lZWQ7CiAJICBpZiAocmVzdWx0ID09IDApCiAJICAgIGJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL2Zvcm0vZnJtX2hvb2suYyBiL2Zvcm0vZnJtX2hvb2suYwppbmRleCAxOGU2ZDcxLi4yMzg1MGJmIDEwMDY0NAotLS0gYS9mb3JtL2ZybV9ob29rLmMKKysrIGIvZm9ybS9mcm1faG9vay5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsMTMgKzMyLDEzIEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9ob29rLmMsdiAxLjE0IDIwMDQvMTIvMjUgMjI6Mzc6MjcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1faG9vay5jLHYgMS4xNiAyMDEyLzAzLzExIDAwOjM3OjE2IHRvbSBFeHAgJCIpCiAKIC8qICJUZW1wbGF0ZSIgbWFjcm8gdG8gZ2VuZXJhdGUgZnVuY3Rpb24gdG8gc2V0IGFwcGxpY2F0aW9uIHNwZWNpZmljIGhvb2sgKi8KICNkZWZpbmUgR0VOX0hPT0tfU0VUX0ZVTkNUSU9OKCB0eXAsIG5hbWUgKSBcCiBOQ1VSU0VTX0lNUEVYUCBpbnQgTkNVUlNFU19BUEkgc2V0XyAjIyB0eXAgIyMgXyAjIyBuYW1lIChGT1JNICpmb3JtLCBGb3JtX0hvb2sgZnVuYylcCiB7XAotICAgVCgoVF9DQUxMRUQoInNldF8iICN0eXAiXyIjbmFtZSIoJXAsJXApIiksIGZvcm0sIGZ1bmMpKTtcCisgICBUKChUX0NBTExFRCgic2V0XyIgI3R5cCJfIiNuYW1lIiglcCwlcCkiKSwgKHZvaWQgKikgZm9ybSwgZnVuYykpO1wKICAgIChOb3JtYWxpemVfRm9ybSggZm9ybSApIC0+IHR5cCAjIyBuYW1lKSA9IGZ1bmMgO1wKICAgIFJFVFVSTihFX09LKTtcCiB9CkBAIC00Nyw3ICs0Nyw3IEBACiAjZGVmaW5lIEdFTl9IT09LX0dFVF9GVU5DVElPTiggdHlwLCBuYW1lICkgXAogTkNVUlNFU19JTVBFWFAgRm9ybV9Ib29rIE5DVVJTRVNfQVBJIHR5cCAjIyBfICMjIG5hbWUgKCBjb25zdCBGT1JNICpmb3JtIClcCiB7XAotICAgVCgoVF9DQUxMRUQoI3R5cCAiXyIgI25hbWUgIiglcCkiKSwgZm9ybSkpO1wKKyAgIFQoKFRfQ0FMTEVEKCN0eXAgIl8iICNuYW1lICIoJXApIiksIChjb25zdCB2b2lkICopIGZvcm0pKTtcCiAgICByZXR1cm5Gb3JtSG9vayggTm9ybWFsaXplX0Zvcm0oIGZvcm0gKSAtPiB0eXAgIyMgbmFtZSApO1wKIH0KIApkaWZmIC0tZ2l0IGEvZm9ybS9mcm1fb3B0cy5jIGIvZm9ybS9mcm1fb3B0cy5jCmluZGV4IGQzNmQ2MTguLjQyZDYyNjcgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnJtX29wdHMuYworKysgYi9mb3JtL2ZybV9vcHRzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9vcHRzLmMsdiAxLjE0IDIwMDUvMDQvMTYgMTY6NTk6MTggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fb3B0cy5jLHYgMS4xNyAyMDEzLzA4LzI0IDIyOjU4OjQ3IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC00NywxMCArNDcsMTAgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9mb3JtX29wdHMoRk9STSAqZm9ybSwgRm9ybV9PcHRpb25zIG9wdHMpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfZm9ybV9vcHRzKCVwLCVkKSIpLCBmb3JtLCBvcHRzKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfZm9ybV9vcHRzKCVwLCVkKSIpLCAodm9pZCAqKWZvcm0sIG9wdHMpKTsKIAotICBvcHRzICY9IEFMTF9GT1JNX09QVFM7Ci0gIGlmIChvcHRzICYgfkFMTF9GT1JNX09QVFMpCisgIG9wdHMgJj0gKEZvcm1fT3B0aW9ucykgQUxMX0ZPUk1fT1BUUzsKKyAgaWYgKCh1bnNpZ25lZClvcHRzICYgfkFMTF9GT1JNX09QVFMpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKICAgZWxzZQogICAgIHsKQEAgLTcwLDggKzcwLDggQEAKIE5DVVJTRVNfRVhQT1JUKEZvcm1fT3B0aW9ucykKIGZvcm1fb3B0cyhjb25zdCBGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiZm9ybV9vcHRzKCVwKSIpLCBmb3JtKSk7Ci0gIHJldHVybkNvZGUoKGludCkoTm9ybWFsaXplX0Zvcm0oZm9ybSktPm9wdHMgJiBBTExfRk9STV9PUFRTKSk7CisgIFQoKFRfQ0FMTEVEKCJmb3JtX29wdHMoJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOworICByZXR1cm5Db2RlKChGb3JtX09wdGlvbnMpICgodW5zaWduZWQpTm9ybWFsaXplX0Zvcm0oZm9ybSktPm9wdHMgJiBBTExfRk9STV9PUFRTKSk7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04NywxMCArODcsMTAgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIGZvcm1fb3B0c19vbihGT1JNICpmb3JtLCBGb3JtX09wdGlvbnMgb3B0cykKIHsKLSAgVCgoVF9DQUxMRUQoImZvcm1fb3B0c19vbiglcCwlZCkiKSwgZm9ybSwgb3B0cykpOworICBUKChUX0NBTExFRCgiZm9ybV9vcHRzX29uKCVwLCVkKSIpLCAodm9pZCAqKWZvcm0sIG9wdHMpKTsKIAotICBvcHRzICY9IEFMTF9GT1JNX09QVFM7Ci0gIGlmIChvcHRzICYgfkFMTF9GT1JNX09QVFMpCisgIG9wdHMgJj0gKEZvcm1fT3B0aW9ucykgQUxMX0ZPUk1fT1BUUzsKKyAgaWYgKCh1bnNpZ25lZClvcHRzICYgfkFMTF9GT1JNX09QVFMpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKICAgZWxzZQogICAgIHsKQEAgLTExMiwxMCArMTEyLDEwIEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBmb3JtX29wdHNfb2ZmKEZPUk0gKmZvcm0sIEZvcm1fT3B0aW9ucyBvcHRzKQogewotICBUKChUX0NBTExFRCgiZm9ybV9vcHRzX29mZiglcCwlZCkiKSwgZm9ybSwgb3B0cykpOworICBUKChUX0NBTExFRCgiZm9ybV9vcHRzX29mZiglcCwlZCkiKSwgKHZvaWQgKilmb3JtLCBvcHRzKSk7CiAKLSAgb3B0cyAmPSBBTExfRk9STV9PUFRTOwotICBpZiAob3B0cyAmIH5BTExfRk9STV9PUFRTKQorICBvcHRzICY9IChGb3JtX09wdGlvbnMpIEFMTF9GT1JNX09QVFM7CisgIGlmICgodW5zaWduZWQpb3B0cyAmIH5BTExfRk9STV9PUFRTKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CiAgIGVsc2UKICAgICB7CmRpZmYgLS1naXQgYS9mb3JtL2ZybV9wYWdlLmMgYi9mb3JtL2ZybV9wYWdlLmMKaW5kZXggYTM3MTgzOC4uMTM1MjBkYSAxMDA2NDQKLS0tIGEvZm9ybS9mcm1fcGFnZS5jCisrKyBiL2Zvcm0vZnJtX3BhZ2UuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZnJtX3BhZ2UuYyx2IDEuMTAgMjAwNC8xMi8xMSAyMjowODoyMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZybV9wYWdlLmMsdiAxLjEyIDIwMTIvMDYvMTAgMDA6Mjg6MDQgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTUxLDE0ICs1MSwxNCBAQAogewogICBpbnQgZXJyID0gRV9PSzsKIAotICBUKChUX0NBTExFRCgic2V0X2Zvcm1fcGFnZSglcCwlZCkiKSwgZm9ybSwgcGFnZSkpOworICBUKChUX0NBTExFRCgic2V0X2Zvcm1fcGFnZSglcCwlZCkiKSwgKHZvaWQgKilmb3JtLCBwYWdlKSk7CiAKICAgaWYgKCFmb3JtIHx8IChwYWdlIDwgMCkgfHwgKHBhZ2UgPj0gZm9ybS0+bWF4cGFnZSkpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKIAogICBpZiAoIShmb3JtLT5zdGF0dXMgJiBfUE9TVEVEKSkKICAgICB7Ci0gICAgICBmb3JtLT5jdXJwYWdlID0gcGFnZTsKKyAgICAgIGZvcm0tPmN1cnBhZ2UgPSAoc2hvcnQpcGFnZTsKICAgICAgIGZvcm0tPmN1cnJlbnQgPSBfbmNfRmlyc3RfQWN0aXZlX0ZpZWxkKGZvcm0pOwogICAgIH0KICAgZWxzZQpAQCAtOTgsNyArOTgsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogZm9ybV9wYWdlKGNvbnN0IEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmb3JtX3BhZ2UoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoImZvcm1fcGFnZSglcCkiKSwgKGNvbnN0IHZvaWQgKilmb3JtKSk7CiAKICAgcmV0dXJuQ29kZShOb3JtYWxpemVfRm9ybShmb3JtKS0+Y3VycGFnZSk7CiB9CmRpZmYgLS1naXQgYS9mb3JtL2ZybV9wb3N0LmMgYi9mb3JtL2ZybV9wb3N0LmMKaW5kZXggMjg5MzdlOS4uMzE1NjhiMiAxMDA2NDQKLS0tIGEvZm9ybS9mcm1fcG9zdC5jCisrKyBiL2Zvcm0vZnJtX3Bvc3QuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZnJtX3Bvc3QuYyx2IDEuOSAyMDA0LzEyLzExIDIyOjE5OjA2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZnJtX3Bvc3QuYyx2IDEuMTEgMjAxMi8wNi8xMCAwMDoyNzo0OSB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNTQsNyArNTQsNyBAQAogICBpbnQgZXJyOwogICBpbnQgcGFnZTsKIAotICBUKChUX0NBTExFRCgicG9zdF9mb3JtKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJwb3N0X2Zvcm0oJXApIiksICh2b2lkICopZm9ybSkpOwogCiAgIGlmICghZm9ybSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtNzcsNyArNzcsNyBAQAogICBpZiAoKGVyciA9IF9uY19TZXRfRm9ybV9QYWdlKGZvcm0sIHBhZ2UsIGZvcm0tPmN1cnJlbnQpKSAhPSBFX09LKQogICAgIFJFVFVSTihlcnIpOwogCi0gIGZvcm0tPnN0YXR1cyB8PSBfUE9TVEVEOworICBTZXRTdGF0dXMoZm9ybSwgX1BPU1RFRCk7CiAKICAgQ2FsbF9Ib29rKGZvcm0sIGZvcm1pbml0KTsKICAgQ2FsbF9Ib29rKGZvcm0sIGZpZWxkaW5pdCk7CkBAIC0xMDAsNyArMTAwLDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHVucG9zdF9mb3JtKEZPUk0gKmZvcm0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJ1bnBvc3RfZm9ybSglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgidW5wb3N0X2Zvcm0oJXApIiksICh2b2lkICopZm9ybSkpOwogCiAgIGlmICghZm9ybSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMTE3LDcgKzExNyw3IEBACiAgIHdlcmFzZShHZXRfRm9ybV9XaW5kb3coZm9ybSkpOwogICBkZWx3aW4oZm9ybS0+dyk7CiAgIGZvcm0tPncgPSAoV0lORE9XICopMDsKLSAgZm9ybS0+c3RhdHVzICY9IH5fUE9TVEVEOworICBDbHJTdGF0dXMoZm9ybSwgX1BPU1RFRCk7CiAgIFJFVFVSTihFX09LKTsKIH0KIApkaWZmIC0tZ2l0IGEvZm9ybS9mcm1fcmVxX25hbWUuYyBiL2Zvcm0vZnJtX3JlcV9uYW1lLmMKaW5kZXggN2FjOWFiZS4uNTY4NmIyMiAxMDA2NDQKLS0tIGEvZm9ybS9mcm1fcmVxX25hbWUuYworKysgYi9mb3JtL2ZybV9yZXFfbmFtZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNzMgKzM3LDc3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9yZXFfbmFtZS5jLHYgMS4xNiAyMDA4LzA3LzA1IDIzOjIyOjA4IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZnJtX3JlcV9uYW1lLmMsdiAxLjE5IDIwMTUvMDQvMDQgMTc6MTE6NDYgdG9tIEV4cCAkIikKIAotc3RhdGljIGNvbnN0IGNoYXIgKnJlcXVlc3RfbmFtZXNbTUFYX0ZPUk1fQ09NTUFORCAtIE1JTl9GT1JNX0NPTU1BTkQgKyAxXSA9CisjZGVmaW5lIERBVEEocykgeyBzIH0KKworc3RhdGljIGNvbnN0IGNoYXIgcmVxdWVzdF9uYW1lc1tNQVhfRk9STV9DT01NQU5EIC0gTUlOX0ZPUk1fQ09NTUFORCArIDFdWzEzXSA9CiB7Ci0gICJORVhUX1BBR0UiLAotICAiUFJFVl9QQUdFIiwKLSAgIkZJUlNUX1BBR0UiLAotICAiTEFTVF9QQUdFIiwKKyAgREFUQSgiTkVYVF9QQUdFIiksCisgIERBVEEoIlBSRVZfUEFHRSIpLAorICBEQVRBKCJGSVJTVF9QQUdFIiksCisgIERBVEEoIkxBU1RfUEFHRSIpLAogCi0gICJORVhUX0ZJRUxEIiwKLSAgIlBSRVZfRklFTEQiLAotICAiRklSU1RfRklFTEQiLAotICAiTEFTVF9GSUVMRCIsCi0gICJTTkVYVF9GSUVMRCIsCi0gICJTUFJFVl9GSUVMRCIsCi0gICJTRklSU1RfRklFTEQiLAotICAiU0xBU1RfRklFTEQiLAotICAiTEVGVF9GSUVMRCIsCi0gICJSSUdIVF9GSUVMRCIsCi0gICJVUF9GSUVMRCIsCi0gICJET1dOX0ZJRUxEIiwKKyAgREFUQSgiTkVYVF9GSUVMRCIpLAorICBEQVRBKCJQUkVWX0ZJRUxEIiksCisgIERBVEEoIkZJUlNUX0ZJRUxEIiksCisgIERBVEEoIkxBU1RfRklFTEQiKSwKKyAgREFUQSgiU05FWFRfRklFTEQiKSwKKyAgREFUQSgiU1BSRVZfRklFTEQiKSwKKyAgREFUQSgiU0ZJUlNUX0ZJRUxEIiksCisgIERBVEEoIlNMQVNUX0ZJRUxEIiksCisgIERBVEEoIkxFRlRfRklFTEQiKSwKKyAgREFUQSgiUklHSFRfRklFTEQiKSwKKyAgREFUQSgiVVBfRklFTEQiKSwKKyAgREFUQSgiRE9XTl9GSUVMRCIpLAogCi0gICJORVhUX0NIQVIiLAotICAiUFJFVl9DSEFSIiwKLSAgIk5FWFRfTElORSIsCi0gICJQUkVWX0xJTkUiLAotICAiTkVYVF9XT1JEIiwKLSAgIlBSRVZfV09SRCIsCi0gICJCRUdfRklFTEQiLAotICAiRU5EX0ZJRUxEIiwKLSAgIkJFR19MSU5FIiwKLSAgIkVORF9MSU5FIiwKLSAgIkxFRlRfQ0hBUiIsCi0gICJSSUdIVF9DSEFSIiwKLSAgIlVQX0NIQVIiLAotICAiRE9XTl9DSEFSIiwKKyAgREFUQSgiTkVYVF9DSEFSIiksCisgIERBVEEoIlBSRVZfQ0hBUiIpLAorICBEQVRBKCJORVhUX0xJTkUiKSwKKyAgREFUQSgiUFJFVl9MSU5FIiksCisgIERBVEEoIk5FWFRfV09SRCIpLAorICBEQVRBKCJQUkVWX1dPUkQiKSwKKyAgREFUQSgiQkVHX0ZJRUxEIiksCisgIERBVEEoIkVORF9GSUVMRCIpLAorICBEQVRBKCJCRUdfTElORSIpLAorICBEQVRBKCJFTkRfTElORSIpLAorICBEQVRBKCJMRUZUX0NIQVIiKSwKKyAgREFUQSgiUklHSFRfQ0hBUiIpLAorICBEQVRBKCJVUF9DSEFSIiksCisgIERBVEEoIkRPV05fQ0hBUiIpLAogCi0gICJORVdfTElORSIsCi0gICJJTlNfQ0hBUiIsCi0gICJJTlNfTElORSIsCi0gICJERUxfQ0hBUiIsCi0gICJERUxfUFJFViIsCi0gICJERUxfTElORSIsCi0gICJERUxfV09SRCIsCi0gICJDTFJfRU9MIiwKLSAgIkNMUl9FT0YiLAotICAiQ0xSX0ZJRUxEIiwKLSAgIk9WTF9NT0RFIiwKLSAgIklOU19NT0RFIiwKLSAgIlNDUl9GTElORSIsCi0gICJTQ1JfQkxJTkUiLAotICAiU0NSX0ZQQUdFIiwKLSAgIlNDUl9CUEFHRSIsCi0gICJTQ1JfRkhQQUdFIiwKLSAgIlNDUl9CSFBBR0UiLAotICAiU0NSX0ZDSEFSIiwKLSAgIlNDUl9CQ0hBUiIsCi0gICJTQ1JfSEZMSU5FIiwKLSAgIlNDUl9IQkxJTkUiLAotICAiU0NSX0hGSEFMRiIsCi0gICJTQ1JfSEJIQUxGIiwKKyAgREFUQSgiTkVXX0xJTkUiKSwKKyAgREFUQSgiSU5TX0NIQVIiKSwKKyAgREFUQSgiSU5TX0xJTkUiKSwKKyAgREFUQSgiREVMX0NIQVIiKSwKKyAgREFUQSgiREVMX1BSRVYiKSwKKyAgREFUQSgiREVMX0xJTkUiKSwKKyAgREFUQSgiREVMX1dPUkQiKSwKKyAgREFUQSgiQ0xSX0VPTCIpLAorICBEQVRBKCJDTFJfRU9GIiksCisgIERBVEEoIkNMUl9GSUVMRCIpLAorICBEQVRBKCJPVkxfTU9ERSIpLAorICBEQVRBKCJJTlNfTU9ERSIpLAorICBEQVRBKCJTQ1JfRkxJTkUiKSwKKyAgREFUQSgiU0NSX0JMSU5FIiksCisgIERBVEEoIlNDUl9GUEFHRSIpLAorICBEQVRBKCJTQ1JfQlBBR0UiKSwKKyAgREFUQSgiU0NSX0ZIUEFHRSIpLAorICBEQVRBKCJTQ1JfQkhQQUdFIiksCisgIERBVEEoIlNDUl9GQ0hBUiIpLAorICBEQVRBKCJTQ1JfQkNIQVIiKSwKKyAgREFUQSgiU0NSX0hGTElORSIpLAorICBEQVRBKCJTQ1JfSEJMSU5FIiksCisgIERBVEEoIlNDUl9IRkhBTEYiKSwKKyAgREFUQSgiU0NSX0hCSEFMRiIpLAogCi0gICJWQUxJREFUSU9OIiwKLSAgIk5FWFRfQ0hPSUNFIiwKLSAgIlBSRVZfQ0hPSUNFIgorICBEQVRBKCJWQUxJREFUSU9OIiksCisgIERBVEEoIk5FWFRfQ0hPSUNFIiksCisgIERBVEEoIlBSRVZfQ0hPSUNFIikKIH07CiAKKyN1bmRlZiBEQVRBCisKICNkZWZpbmUgQV9TSVpFIChzaXplb2YocmVxdWVzdF9uYW1lcykvc2l6ZW9mKHJlcXVlc3RfbmFtZXNbMF0pKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ0LDI0ICsxNDgsMjcgQEAKICAgLyogYmVjYXVzZSB0aGUgdGFibGUgaXMgc28gc21hbGwsIGl0IGRvZXNuJ3QgcmVhbGx5IGh1cnQKICAgICAgdG8gcnVuIHNlcXVlbnRpYWxseSB0aHJvdWdoIGl0LgogICAgKi8KLSAgdW5zaWduZWQgaW50IGkgPSAwOwotICBjaGFyIGJ1ZlsxNl07CisgIHNpemVfdCBpID0gMDsKKyAgY2hhciBidWZbMTZdOwkJCS8qIGxvbmdlc3QgbmFtZSBpcyAxMCBjaGFycyAqLwogCiAgIFQoKFRfQ0FMTEVEKCJmb3JtX3JlcXVlc3RfYnlfbmFtZSglcykiKSwgX25jX3Zpc2J1ZihzdHIpKSk7CiAKLSAgaWYgKHN0cikKKyAgaWYgKHN0ciAhPSAwICYmIChpID0gc3RybGVuKHN0cikpICE9IDApCiAgICAgewotICAgICAgc3RybmNweShidWYsIHN0ciwgc2l6ZW9mKGJ1ZikpOwotICAgICAgd2hpbGUgKChpIDwgc2l6ZW9mKGJ1ZikpICYmIChidWZbaV0gIT0gJ1wwJykpCisgICAgICBpZiAoaSA+IHNpemVvZihidWYpIC0gMikKKwlpID0gc2l6ZW9mKGJ1ZikgLSAyOworICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBpKTsKKyAgICAgIGJ1ZltpXSA9ICdcMCc7CisKKyAgICAgIGZvciAoaSA9IDA7IGJ1ZltpXSAhPSAnXDAnOyArK2kpCiAJewotCSAgYnVmW2ldID0gdG91cHBlcihVQ2hhcihidWZbaV0pKTsKLQkgIGkrKzsKKwkgIGJ1ZltpXSA9IChjaGFyKXRvdXBwZXIoVUNoYXIoYnVmW2ldKSk7CiAJfQogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgQV9TSVpFOyBpKyspCiAJewotCSAgaWYgKHN0cm5jbXAocmVxdWVzdF9uYW1lc1tpXSwgYnVmLCBzaXplb2YoYnVmKSkgPT0gMCkKLQkgICAgcmV0dXJuQ29kZShNSU5fRk9STV9DT01NQU5EICsgKGludCkgaSk7CisJICBpZiAoc3RyY21wKHJlcXVlc3RfbmFtZXNbaV0sIGJ1ZikgPT0gMCkKKwkgICAgcmV0dXJuQ29kZShNSU5fRk9STV9DT01NQU5EICsgKGludClpKTsKIAl9CiAgICAgfQogICBSRVRVUk4oRV9OT19NQVRDSCk7CmRpZmYgLS1naXQgYS9mb3JtL2ZybV9zY2FsZS5jIGIvZm9ybS9mcm1fc2NhbGUuYwppbmRleCAyZWJmNzJkLi4yN2UxNTRlIDEwMDY0NAotLS0gYS9mb3JtL2ZybV9zY2FsZS5jCisrKyBiL2Zvcm0vZnJtX3NjYWxlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9zY2FsZS5jLHYgMS45IDIwMDQvMTIvMTEgMjI6MTI6MzQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fc2NhbGUuYyx2IDEuMTAgMjAxMC8wMS8yMyAyMToxNDozNiB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0gIApAQCAtNDcsNyArNDcsMTAgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNjYWxlX2Zvcm0oY29uc3QgRk9STSAqZm9ybSwgaW50ICpyb3dzLCBpbnQgKmNvbHMpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzY2FsZV9mb3JtKCVwLCVwLCVwKSIpLCBmb3JtLCByb3dzLCBjb2xzKSk7CisgIFQoKFRfQ0FMTEVEKCJzY2FsZV9mb3JtKCVwLCVwLCVwKSIpLAorICAgICAoY29uc3Qgdm9pZCAqKWZvcm0sCisgICAgICh2b2lkICopcm93cywKKyAgICAgKHZvaWQgKiljb2xzKSk7CiAKICAgaWYgKCFmb3JtKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CmRpZmYgLS1naXQgYS9mb3JtL2ZybV9zdWIuYyBiL2Zvcm0vZnJtX3N1Yi5jCmluZGV4IDZkYjAwMjMuLjFhYjEzMWEgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnJtX3N1Yi5jCisrKyBiL2Zvcm0vZnJtX3N1Yi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTIgKzI3LDEyIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk1LDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NS0xOTk3LDIwMDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV9zdWIuYyx2IDEuOSAyMDA0LzEyLzExIDIyOjEzOjM5IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZnJtX3N1Yi5jLHYgMS4xMiAyMDEwLzAxLzIzIDIxOjE0OjM2IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC00NiwxMyArNDYsMjIgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9mb3JtX3N1YihGT1JNICpmb3JtLCBXSU5ET1cgKndpbikKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9mb3JtX3N1YiglcCwlcCkiKSwgZm9ybSwgd2luKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfZm9ybV9zdWIoJXAsJXApIiksICh2b2lkICopZm9ybSwgKHZvaWQgKil3aW4pKTsKIAogICBpZiAoZm9ybSAmJiAoZm9ybS0+c3RhdHVzICYgX1BPU1RFRCkpCiAgICAgUkVUVVJOKEVfUE9TVEVEKTsKKyAgZWxzZQorICAgIHsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgICBGT1JNICpmID0gTm9ybWFsaXplX0Zvcm0oZm9ybSk7CiAKLSAgTm9ybWFsaXplX0Zvcm0oZm9ybSktPnN1YiA9IHdpbjsKLSAgUkVUVVJOKEVfT0spOworICAgICAgZi0+c3ViID0gd2luID8gd2luIDogU3RkU2NyZWVuKEdldF9Gb3JtX1NjcmVlbihmKSk7CisgICAgICBSRVRVUk4oRV9PSyk7CisjZWxzZQorICAgICAgTm9ybWFsaXplX0Zvcm0oZm9ybSktPnN1YiA9IHdpbjsKKyAgICAgIFJFVFVSTihFX09LKTsKKyNlbmRpZgorICAgIH0KIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY4LDcgKzc3LDcgQEAKIHsKICAgY29uc3QgRk9STSAqZjsKIAotICBUKChUX0NBTExFRCgiZm9ybV9zdWIoJXApIiksIGZvcm0pKTsKKyAgVCgoVF9DQUxMRUQoImZvcm1fc3ViKCVwKSIpLCAoY29uc3Qgdm9pZCAqKWZvcm0pKTsKIAogICBmID0gTm9ybWFsaXplX0Zvcm0oZm9ybSk7CiAgIHJldHVybldpbihHZXRfRm9ybV9XaW5kb3coZikpOwpkaWZmIC0tZ2l0IGEvZm9ybS9mcm1fdXNlci5jIGIvZm9ybS9mcm1fdXNlci5jCmluZGV4IDRkNWUwZTQuLjEzNzViNWUgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnJtX3VzZXIuYworKysgYi9mb3JtL2ZybV91c2VyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZybV91c2VyLmMsdiAxLjE0IDIwMDQvMTIvMjUgMjI6Mzc6NTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fdXNlci5jLHYgMS4xNSAyMDEwLzAxLzIzIDIxOjE0OjM2IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC00Niw3ICs0Niw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzZXRfZm9ybV91c2VycHRyKEZPUk0gKmZvcm0sIHZvaWQgKnVzcnB0cikKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9mb3JtX3VzZXJwdHIoJXAsJXApIiksIGZvcm0sIHVzcnB0cikpOworICBUKChUX0NBTExFRCgic2V0X2Zvcm1fdXNlcnB0ciglcCwlcCkiKSwgKHZvaWQgKilmb3JtLCAodm9pZCAqKXVzcnB0cikpOwogCiAgIE5vcm1hbGl6ZV9Gb3JtKGZvcm0pLT51c3JwdHIgPSB1c3JwdHI7CiAgIFJFVFVSTihFX09LKTsKQEAgLTY1LDcgKzY1LDcgQEAKIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikKIGZvcm1fdXNlcnB0cihjb25zdCBGT1JNICpmb3JtKQogewotICBUKChUX0NBTExFRCgiZm9ybV91c2VycHRyKCVwKSIpLCBmb3JtKSk7CisgIFQoKFRfQ0FMTEVEKCJmb3JtX3VzZXJwdHIoJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOwogICByZXR1cm5Wb2lkUHRyKE5vcm1hbGl6ZV9Gb3JtKGZvcm0pLT51c3JwdHIpOwogfQogCmRpZmYgLS1naXQgYS9mb3JtL2ZybV93aW4uYyBiL2Zvcm0vZnJtX3dpbi5jCmluZGV4IDIyNThmMGEuLmE2NWNjNTkgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnJtX3dpbi5jCisrKyBiL2Zvcm0vZnJtX3dpbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmcm1fd2luLmMsdiAxLjEzIDIwMDQvMTIvMTEgMjI6MTU6MjcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmcm1fd2luLmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MTQ6MzYgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKQEAgLTQ2LDEzICs0NiwyMiBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X2Zvcm1fd2luKEZPUk0gKmZvcm0sIFdJTkRPVyAqd2luKQogewotICBUKChUX0NBTExFRCgic2V0X2Zvcm1fd2luKCVwLCVwKSIpLCBmb3JtLCB3aW4pKTsKKyAgVCgoVF9DQUxMRUQoInNldF9mb3JtX3dpbiglcCwlcCkiKSwgKHZvaWQgKilmb3JtLCAodm9pZCAqKXdpbikpOwogCiAgIGlmIChmb3JtICYmIChmb3JtLT5zdGF0dXMgJiBfUE9TVEVEKSkKICAgICBSRVRVUk4oRV9QT1NURUQpOworICBlbHNlCisgICAgeworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICAgIEZPUk0gKmYgPSBOb3JtYWxpemVfRm9ybShmb3JtKTsKIAotICBOb3JtYWxpemVfRm9ybShmb3JtKS0+d2luID0gd2luOwotICBSRVRVUk4oRV9PSyk7CisgICAgICBmLT53aW4gPSB3aW4gPyB3aW4gOiBTdGRTY3JlZW4oR2V0X0Zvcm1fU2NyZWVuKGYpKTsKKyAgICAgIFJFVFVSTihFX09LKTsKKyNlbHNlCisgICAgICBOb3JtYWxpemVfRm9ybShmb3JtKS0+d2luID0gd2luOworICAgICAgUkVUVVJOKEVfT0spOworI2VuZGlmCisgICAgfQogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjYsMTIgKzc1LDE4IEBACiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKIGZvcm1fd2luKGNvbnN0IEZPUk0gKmZvcm0pCiB7CisgIFdJTkRPVyAqcmVzdWx0OwogICBjb25zdCBGT1JNICpmOwogCi0gIFQoKFRfQ0FMTEVEKCJmb3JtX3dpbiglcCkiKSwgZm9ybSkpOworICBUKChUX0NBTExFRCgiZm9ybV93aW4oJXApIiksIChjb25zdCB2b2lkICopZm9ybSkpOwogCiAgIGYgPSBOb3JtYWxpemVfRm9ybShmb3JtKTsKLSAgcmV0dXJuV2luKGYtPndpbiA/IGYtPndpbiA6IHN0ZHNjcik7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICByZXN1bHQgPSAoZi0+d2luID8gZi0+d2luIDogU3RkU2NyZWVuKEdldF9Gb3JtX1NjcmVlbihmKSkpOworI2Vsc2UKKyAgcmVzdWx0ID0gKGYtPndpbiA/IGYtPndpbiA6IHN0ZHNjcik7CisjZW5kaWYKKyAgcmV0dXJuV2luKHJlc3VsdCk7CiB9CiAKIC8qIGZybV93aW4uYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL2Zvcm0vZnR5X2FsbnVtLmMgYi9mb3JtL2Z0eV9hbG51bS5jCmluZGV4IDU5ZGQyNzMuLmNkYTIzZGMgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnR5X2FsbnVtLmMKKysrIGIvZm9ybS9mdHlfYWxudW0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZnR5X2FsbnVtLmMsdiAxLjIxIDIwMDcvMTAvMTMgMTk6MzE6NTIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmdHlfYWxudW0uYyx2IDEuMjQgMjAxMC8wMS8yMyAyMToxNDozNiB0b20gRXhwICQiKQogCiAjZGVmaW5lIHRoaXNBUkcgYWxudW1BUkcKIApAQCAtNDYsNiArNDYsMzIgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqR2VuZXJpY19UaGlzX1R5cGUodm9pZCAqYXJnKQorfAorfCAgIERlc2NyaXB0aW9uICAgOiAgQWxsb2NhdGUgc3RydWN0dXJlIGZvciBhbHBoYW51bWVyaWMgdHlwZSBhcmd1bWVudC4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIFBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlIG9yIE5VTEwgb24gZXJyb3IKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCAqCitHZW5lcmljX1RoaXNfVHlwZSh2b2lkICphcmcpCit7CisgIHRoaXNBUkcgKmFyZ3AgPSAodGhpc0FSRyAqKSAwOworCisgIGlmIChhcmcpCisgICAgeworICAgICAgYXJncCA9IHR5cGVNYWxsb2ModGhpc0FSRywgMSk7CisKKyAgICAgIGlmIChhcmdwKQorCXsKKwkgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksICh2b2lkICopYXJncCkpOworCSAgYXJncC0+d2lkdGggPSAqKChpbnQgKilhcmcpOworCX0KKyAgICB9CisgIHJldHVybiAoKHZvaWQgKilhcmdwKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqTWFrZV9UaGlzX1R5cGUodmFfbGlzdCAqYXApCiB8CiB8ICAgRGVzY3JpcHRpb24gICA6ICBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIGFscGhhbnVtZXJpYyB0eXBlIGFyZ3VtZW50LgpAQCAtNTUsMTUgKzgxLDkgQEAKIHN0YXRpYyB2b2lkICoKIE1ha2VfVGhpc19UeXBlKHZhX2xpc3QgKmFwKQogewotICB0aGlzQVJHICphcmdwID0gdHlwZU1hbGxvYyh0aGlzQVJHLCAxKTsKKyAgaW50IHcgPSB2YV9hcmcoKmFwLCBpbnQpOwogCi0gIGlmIChhcmdwKQotICAgIHsKLSAgICAgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksIGFyZ3ApKTsKLSAgICAgIGFyZ3AtPndpZHRoID0gdmFfYXJnKCphcCwgaW50KTsKLSAgICB9Ci0KLSAgcmV0dXJuICgodm9pZCAqKWFyZ3ApOworICByZXR1cm4gR2VuZXJpY19UaGlzX1R5cGUoKHZvaWQgKikmdyk7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04Miw3ICsxMDIsNyBAQAogCiAgIGlmIChyZXN1bHQpCiAgICAgewotICAgICAgVCgoVF9DUkVBVEUoInRoaXNBUkcgJXAiKSwgcmVzdWx0KSk7CisgICAgICBUKChUX0NSRUFURSgidGhpc0FSRyAlcCIpLCAodm9pZCAqKXJlc3VsdCkpOwogICAgICAgKnJlc3VsdCA9ICphcDsKICAgICB9CiAKQEAgLTE1NiwxMiArMTc2LDI3IEBACiAgIE1ha2VfVGhpc19UeXBlLAogICBDb3B5X1RoaXNfVHlwZSwKICAgRnJlZV9UaGlzX1R5cGUsCi0gIENoZWNrX1RoaXNfRmllbGQsCi0gIENoZWNrX1RoaXNfQ2hhcmFjdGVyLAotICBOVUxMLAotICBOVUxMCisgIElOSVRfRlRfRlVOQyhDaGVja19UaGlzX0ZpZWxkKSwKKyAgSU5JVF9GVF9GVU5DKENoZWNrX1RoaXNfQ2hhcmFjdGVyKSwKKyAgSU5JVF9GVF9GVU5DKE5VTEwpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisgIEdlbmVyaWNfVGhpc19UeXBlCisjZW5kaWYKIH07CiAKIE5DVVJTRVNfRVhQT1JUX1ZBUihGSUVMRFRZUEUqKSBUWVBFX0FMTlVNID0gJnR5cGVUSElTOwogCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisvKiBUaGUgbmV4dCByb3V0aW5lcyBhcmUgdG8gc2ltcGxpZnkgdGhlIHVzZSBvZiBuY3Vyc2VzIGZyb20KKyAgIHByb2dyYW1taW5nIGxhbmd1YWdlcyB3aXRoIHJlc3RpY3Rpb25zIG9uIGludGVyb3Agd2l0aCBDIGxldmVsCisgICBjb25zdHJ1Y3RzIChlLmcuIHZhcmlhYmxlIGFjY2VzcyBvciB2YV9saXN0ICsgZWxsaXBzaXMgY29uc3RydWN0cykKKyovCitOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikKK19uY19UWVBFX0FMTlVNKHZvaWQpCit7CisgIHJldHVybiBUWVBFX0FMTlVNOworfQorI2VuZGlmCisKIC8qIGZ0eV9hbG51bS5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvZm9ybS9mdHlfYWxwaGEuYyBiL2Zvcm0vZnR5X2FscGhhLmMKaW5kZXggYmQ0OTU0NC4uOTE3YTllMCAxMDA2NDQKLS0tIGEvZm9ybS9mdHlfYWxwaGEuYworKysgYi9mb3JtL2Z0eV9hbHBoYS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmdHlfYWxwaGEuYyx2IDEuMjMgMjAwNy8xMC8xMyAxOTozMjowOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZ0eV9hbHBoYS5jLHYgMS4yNiAyMDEwLzAxLzIzIDIxOjE0OjM2IHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgdGhpc0FSRyBhbHBoYUFSRwogCkBAIC00Niw2ICs0NiwzMiBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibmZvcm0KK3wgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyB2b2lkICpHZW5lcmljX1RoaXNfVHlwZSh2YV9saXN0ICphcCkKK3wKK3wgICBEZXNjcmlwdGlvbiAgIDogIEFsbG9jYXRlIHN0cnVjdHVyZSBmb3IgYWxwaGEgdHlwZSBhcmd1bWVudC4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIFBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlIG9yIE5VTEwgb24gZXJyb3IKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCAqCitHZW5lcmljX1RoaXNfVHlwZSh2b2lkICphcmcpCit7CisgIHRoaXNBUkcgKmFyZ3AgPSAodGhpc0FSRyAqKSAwOworCisgIGlmIChhcmcpCisgICAgeworICAgICAgYXJncCA9IHR5cGVNYWxsb2ModGhpc0FSRywgMSk7CisKKyAgICAgIGlmIChhcmdwKQorCXsKKwkgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksICh2b2lkICopYXJncCkpOworCSAgYXJncC0+d2lkdGggPSAqKChpbnQgKilhcmcpOworCX0KKyAgICB9CisgIHJldHVybiAoKHZvaWQgKilhcmdwKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqTWFrZV9UaGlzX1R5cGUodmFfbGlzdCAqYXApCiB8CiB8ICAgRGVzY3JpcHRpb24gICA6ICBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIGFscGhhIHR5cGUgYXJndW1lbnQuCkBAIC01NSwxNSArODEsOSBAQAogc3RhdGljIHZvaWQgKgogTWFrZV9UaGlzX1R5cGUodmFfbGlzdCAqYXApCiB7Ci0gIHRoaXNBUkcgKmFyZ3AgPSB0eXBlTWFsbG9jKHRoaXNBUkcsIDEpOworICBpbnQgdyA9IHZhX2FyZygqYXAsIGludCk7CiAKLSAgaWYgKGFyZ3ApCi0gICAgewotICAgICAgVCgoVF9DUkVBVEUoInRoaXNBUkcgJXAiKSwgYXJncCkpOwotICAgICAgYXJncC0+d2lkdGggPSB2YV9hcmcoKmFwLCBpbnQpOwotICAgIH0KLQotICByZXR1cm4gKCh2b2lkICopYXJncCk7CisgIHJldHVybiBHZW5lcmljX1RoaXNfVHlwZSgodm9pZCAqKSZ3KTsKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgyLDcgKzEwMiw3IEBACiAKICAgaWYgKHJlc3VsdCkKICAgICB7Ci0gICAgICBUKChUX0NSRUFURSgidGhpc0FSRyAlcCIpLCByZXN1bHQpKTsKKyAgICAgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksICh2b2lkICopcmVzdWx0KSk7CiAgICAgICAqcmVzdWx0ID0gKmFwOwogICAgIH0KIApAQCAtMTU2LDEyICsxNzYsMjcgQEAKICAgTWFrZV9UaGlzX1R5cGUsCiAgIENvcHlfVGhpc19UeXBlLAogICBGcmVlX1RoaXNfVHlwZSwKLSAgQ2hlY2tfVGhpc19GaWVsZCwKLSAgQ2hlY2tfVGhpc19DaGFyYWN0ZXIsCi0gIE5VTEwsCi0gIE5VTEwKKyAgSU5JVF9GVF9GVU5DKENoZWNrX1RoaXNfRmllbGQpLAorICBJTklUX0ZUX0ZVTkMoQ2hlY2tfVGhpc19DaGFyYWN0ZXIpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisgIElOSVRfRlRfRlVOQyhOVUxMKSwKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKyAgR2VuZXJpY19UaGlzX1R5cGUKKyNlbmRpZgogfTsKIAogTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSopIFRZUEVfQUxQSEEgPSAmdHlwZVRISVM7CiAKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKy8qIFRoZSBuZXh0IHJvdXRpbmVzIGFyZSB0byBzaW1wbGlmeSB0aGUgdXNlIG9mIG5jdXJzZXMgZnJvbQorICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHdpdGggcmVzdGljdGlvbnMgb24gaW50ZXJvcCB3aXRoIEMgbGV2ZWwKKyAgIGNvbnN0cnVjdHMgKGUuZy4gdmFyaWFibGUgYWNjZXNzIG9yIHZhX2xpc3QgKyBlbGxpcHNpcyBjb25zdHJ1Y3RzKQorKi8KK05DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKQorX25jX1RZUEVfQUxQSEEodm9pZCkKK3sKKyAgcmV0dXJuIFRZUEVfQUxQSEE7Cit9CisjZW5kaWYKKwogLyogZnR5X2FscGhhLmMgZW5kcyBoZXJlICovCmRpZmYgLS1naXQgYS9mb3JtL2Z0eV9lbnVtLmMgYi9mb3JtL2Z0eV9lbnVtLmMKaW5kZXggYzk2YTA4MC4uZDMzNTE2NCAxMDA2NDQKLS0tIGEvZm9ybS9mdHlfZW51bS5jCisrKyBiL2Zvcm0vZnR5X2VudW0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgImZvcm0ucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogZnR5X2VudW0uYyx2IDEuMjIgMjAwNy8xMC8xMyAxOTozMjoyNiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZ0eV9lbnVtLmMsdiAxLjI2IDIwMTAvMDUvMDEgMjE6MTE6MDcgdG9tIEV4cCAkIikKIAogdHlwZWRlZiBzdHJ1Y3QKICAgewpAQCAtNDUsNiArNDUsNzcgQEAKICAgfQogZW51bUFSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGNoYXIgKiprd2RzOworICAgIGludCBjY2FzZTsKKyAgICBpbnQgY3VuaXF1ZTsKKyAgfQorZW51bVBhcmFtczsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKK3wgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyB2b2lkICpHZW5lcmljX0VudW1fVHlwZSh2b2lkICogYXJnKQorfCAgIAorfCAgIERlc2NyaXB0aW9uICAgOiAgQWxsb2NhdGUgc3RydWN0dXJlIGZvciBlbnVtZXJhdGlvbiB0eXBlIGFyZ3VtZW50LgorfAorfCAgIFJldHVybiBWYWx1ZXMgOiAgUG9pbnRlciB0byBhcmd1bWVudCBzdHJ1Y3R1cmUgb3IgTlVMTCBvbiBlcnJvcgorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3N0YXRpYyB2b2lkICoKK0dlbmVyaWNfRW51bV9UeXBlKHZvaWQgKmFyZykKK3sKKyAgZW51bUFSRyAqYXJncCA9IChlbnVtQVJHICopMDsKKyAgZW51bVBhcmFtcyAqcGFyYW1zID0gKGVudW1QYXJhbXMgKikgYXJnOworCisgIGlmIChwYXJhbXMpCisgICAgeworICAgICAgYXJncCA9IHR5cGVNYWxsb2MoZW51bUFSRywgMSk7CisKKyAgICAgIGlmIChhcmdwKQorCXsKKwkgIGludCBjbnQgPSAwOworCSAgY2hhciAqKmtwID0gKGNoYXIgKiopMDsKKwkgIGNoYXIgKiprd2RzID0gKGNoYXIgKiopMDsKKwkgIGNoYXIgKiprcHRhcmdldDsKKwkgIGludCBjY2FzZSwgY3VuaXF1ZTsKKworCSAgVCgoVF9DUkVBVEUoImVudW1BUkcgJXAiKSwgKHZvaWQgKilhcmdwKSk7CisJICBrd2RzID0gcGFyYW1zLT5rd2RzOworCSAgY2Nhc2UgPSBwYXJhbXMtPmNjYXNlOworCSAgY3VuaXF1ZSA9IHBhcmFtcy0+Y3VuaXF1ZTsKKworCSAgYXJncC0+Y2hlY2tjYXNlID0gY2Nhc2UgPyBUUlVFIDogRkFMU0U7CisJICBhcmdwLT5jaGVja3VuaXF1ZSA9IGN1bmlxdWUgPyBUUlVFIDogRkFMU0U7CisJICBhcmdwLT5rd2RzID0gKGNoYXIgKiopMDsKKworCSAga3AgPSBrd2RzOworCSAgd2hpbGUgKGtwICYmICgqa3ArKykpCisJICAgIGNudCsrOworCSAgYXJncC0+Y291bnQgPSBjbnQ7CisKKwkgIGlmIChjbnQgPiAwKQorCSAgICB7CisJICAgICAgLyogV2UgY29weSB0aGUga2V5d29yZHMsIGJlY2F1c2Ugd2UgY2FuJ3QgcmVseSBvbiB0aGUgZmFjdAorCSAgICAgICAgIHRoYXQgdGhlIGNhbGxlciBkb2Vzbid0IHJlbG9jYXRlIG9yIGZyZWUgdGhlIG1lbW9yeSB1c2VkCisJICAgICAgICAgZm9yIHRoZSBrZXl3b3JkcyAobWF5YmUgaGUgaGFzIEdDKQorCSAgICAgICAqLworCSAgICAgIGFyZ3AtPmt3ZHMgPSB0eXBlTWFsbG9jKGNoYXIgKiwgY250ICsgMSk7CisKKwkgICAgICBrcCA9IGt3ZHM7CisJICAgICAgaWYgKChrcHRhcmdldCA9IGFyZ3AtPmt3ZHMpICE9IDApCisJCXsKKwkJICB3aGlsZSAoa3AgJiYgKCprcCkpCisJCSAgICB7CisJCSAgICAgICgqa3B0YXJnZXQrKykgPSBzdHJkdXAoKmtwKyspOworCQkgICAgfQorCQkgICprcHRhcmdldCA9IChjaGFyICopMDsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKyAgcmV0dXJuICh2b2lkICopYXJncDsKK30KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKIHwgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyB2b2lkICpNYWtlX0VudW1fVHlwZSggdmFfbGlzdCAqIGFwICkKQEAgLTU2LDI4ICsxMjcsMTMgQEAKIHN0YXRpYyB2b2lkICoKIE1ha2VfRW51bV9UeXBlKHZhX2xpc3QgKmFwKQogewotICBlbnVtQVJHICphcmdwID0gdHlwZU1hbGxvYyhlbnVtQVJHLCAxKTsKKyAgZW51bVBhcmFtcyBwYXJhbXM7CiAKLSAgaWYgKGFyZ3ApCi0gICAgewotICAgICAgaW50IGNudCA9IDA7Ci0gICAgICBjaGFyICoqa3AgPSAoY2hhciAqKikwOwotICAgICAgaW50IGNjYXNlLCBjdW5pcXVlOworICBwYXJhbXMua3dkcyA9IHZhX2FyZygqYXAsIGNoYXIgKiopOworICBwYXJhbXMuY2Nhc2UgPSB2YV9hcmcoKmFwLCBpbnQpOworICBwYXJhbXMuY3VuaXF1ZSA9IHZhX2FyZygqYXAsIGludCk7CiAKLSAgICAgIFQoKFRfQ1JFQVRFKCJlbnVtQVJHICVwIiksIGFyZ3ApKTsKLSAgICAgIGFyZ3AtPmt3ZHMgPSB2YV9hcmcoKmFwLCBjaGFyICoqKTsKLSAgICAgIGNjYXNlID0gdmFfYXJnKCphcCwgaW50KTsKLSAgICAgIGN1bmlxdWUgPSB2YV9hcmcoKmFwLCBpbnQpOwotCi0gICAgICBhcmdwLT5jaGVja2Nhc2UgPSBjY2FzZSA/IFRSVUUgOiBGQUxTRTsKLSAgICAgIGFyZ3AtPmNoZWNrdW5pcXVlID0gY3VuaXF1ZSA/IFRSVUUgOiBGQUxTRTsKLQotICAgICAga3AgPSBhcmdwLT5rd2RzOwotICAgICAgd2hpbGUgKGtwICYmICgqa3ArKykpCi0JY250Kys7Ci0gICAgICBhcmdwLT5jb3VudCA9IGNudDsKLSAgICB9Ci0gIHJldHVybiAodm9pZCAqKWFyZ3A7CisgIHJldHVybiBHZW5lcmljX0VudW1fVHlwZSgodm9pZCAqKSZwYXJhbXMpOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTAxLDggKzE1NywyNCBAQAogCiAgICAgICBpZiAocmVzdWx0KQogCXsKLQkgIFQoKFRfQ1JFQVRFKCJlbnVtQVJHICVwIiksIHJlc3VsdCkpOworCSAgVCgoVF9DUkVBVEUoImVudW1BUkcgJXAiKSwgKHZvaWQgKilyZXN1bHQpKTsKIAkgICpyZXN1bHQgPSAqYXA7CisKKwkgIGlmIChhcC0+Y291bnQgPiAwKQorCSAgICB7CisJICAgICAgY2hhciAqKmtwdGFyZ2V0OworCSAgICAgIGNoYXIgKiprcCA9IGFwLT5rd2RzOworCSAgICAgIHJlc3VsdC0+a3dkcyA9IHR5cGVNYWxsb2MoY2hhciAqLCAxICsgYXAtPmNvdW50KTsKKworCSAgICAgIGlmICgoa3B0YXJnZXQgPSByZXN1bHQtPmt3ZHMpICE9IDApCisJCXsKKwkJICB3aGlsZSAoa3AgJiYgKCprcCkpCisJCSAgICB7CisJCSAgICAgICgqa3B0YXJnZXQrKykgPSBzdHJkdXAoKmtwKyspOworCQkgICAgfQorCQkgICprcHRhcmdldCA9IChjaGFyICopMDsKKwkJfQorCSAgICB9CiAJfQogICAgIH0KICAgcmV0dXJuICh2b2lkICopcmVzdWx0OwpAQCAtMTIwLDcgKzE5MiwyNCBAQAogRnJlZV9FbnVtX1R5cGUodm9pZCAqYXJncCkKIHsKICAgaWYgKGFyZ3ApCi0gICAgZnJlZShhcmdwKTsKKyAgICB7CisgICAgICBjb25zdCBlbnVtQVJHICphcCA9IChjb25zdCBlbnVtQVJHICopYXJncDsKKworICAgICAgaWYgKGFwLT5rd2RzICYmIGFwLT5jb3VudCA+IDApCisJeworCSAgY2hhciAqKmtwID0gYXAtPmt3ZHM7CisJICBpbnQgY250ID0gMDsKKworCSAgd2hpbGUgKGtwICYmICgqa3ApKQorCSAgICB7CisJICAgICAgZnJlZSgqa3ArKyk7CisJICAgICAgY250Kys7CisJICAgIH0KKwkgIGFzc2VydChjbnQgPT0gYXAtPmNvdW50KTsKKwkgIGZyZWUoYXAtPmt3ZHMpOworCX0KKyAgICAgIGZyZWUoYXJncCk7CisgICAgfQogfQogCiAjZGVmaW5lIFNLSVBfU1BBQ0UoeCkgd2hpbGUoKCgqKHgpKSE9J1wwJykgJiYgKGlzX2JsYW5rKCooeCkpKSkgKHgpKysKQEAgLTMyNiwxMyArNDE1LDI4IEBACiAgIE1ha2VfRW51bV9UeXBlLAogICBDb3B5X0VudW1fVHlwZSwKICAgRnJlZV9FbnVtX1R5cGUsCi0gIENoZWNrX0VudW1fRmllbGQsCi0gIE5VTEwsCi0gIE5leHRfRW51bSwKLSAgUHJldmlvdXNfRW51bQorICBJTklUX0ZUX0ZVTkMoQ2hlY2tfRW51bV9GaWVsZCksCisgIElOSVRfRlRfRlVOQyhOVUxMKSwKKyAgSU5JVF9GVF9GVU5DKE5leHRfRW51bSksCisgIElOSVRfRlRfRlVOQyhQcmV2aW91c19FbnVtKSwKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKyAgR2VuZXJpY19FbnVtX1R5cGUKKyNlbmRpZgogfTsKIAogTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKQogVFlQRV9FTlVNID0gJnR5cGVFTlVNOwogCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisvKiBUaGUgbmV4dCByb3V0aW5lcyBhcmUgdG8gc2ltcGxpZnkgdGhlIHVzZSBvZiBuY3Vyc2VzIGZyb20KKyAgIHByb2dyYW1taW5nIGxhbmd1YWdlcyB3aXRoIHJlc3RpY3Rpb25zIG9uIGludGVyb3Agd2l0aCBDIGxldmVsCisgICBjb25zdHJ1Y3RzIChlLmcuIHZhcmlhYmxlIGFjY2VzcyBvciB2YV9saXN0ICsgZWxsaXBzaXMgY29uc3RydWN0cykKKyovCitOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikKK19uY19UWVBFX0VOVU0odm9pZCkKK3sKKyAgcmV0dXJuIFRZUEVfRU5VTTsKK30KKyNlbmRpZgorCiAvKiBmdHlfZW51bS5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvZm9ybS9mdHlfZ2VuZXJpYy5jIGIvZm9ybS9mdHlfZ2VuZXJpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOWNlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9mb3JtL2Z0eV9nZW5lcmljLmMKQEAgLTAsMCArMSwyOTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyogIEF1dGhvciA6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImZvcm0ucHJpdi5oIgorCitNT0RVTEVfSUQoIiRJZDogZnR5X2dlbmVyaWMuYyx2IDEuNiAyMDEyLzA2LzEwIDAwOjI3OjQ5IHRvbSBFeHAgJCIpCisKKy8qCisgKiBUaGlzIGlzIG5vdCBhIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgYSBmaWVsZCB0eXBlLCBidXQgYWRkcyBzb21lCisgKiBzdXBwb3J0IGZvciBoaWdoZXIgbGV2ZWwgbGFuZ3VhZ2VzIHdpdGggc29tZSByZXN0cmljdGlvbnMgdG8gaW50ZXJvcAorICogd2l0aCBDIGxhbmd1YWdlLiBFc3BlY2lhbGx5IHRoZSBjb2xsZWN0aW9uIG9mIGFyZ3VtZW50cyBmb3IgdGhlCisgKiB2YXJpb3VzIGZpZWxkdHlwZXMgaXMgbm90IGJhc2VkIG9uIHRoZSB2YXJhcmcgQyBtZWNoYW5pc20sIGJ1dCBvbiBhCisgKiBpdGVyYXRvciBiYXNlZCBjYWxsYmFjayBtZWNoYW5pc20gdGhhdCBhbGxvd2VzIHRoZSBoaWdoIGxldmVsIGxhbmd1YWdlCisgKiB0byBwcm92aWRlIHRoZSBhcmd1bWVudHMgYXMgYSBzdHJ1Y3R1cmUuIE1vc3QgbGFuZ3VhZ2VzIGhhdmUgbWVjaGFuaXNtcworICogdG8gbGF5b3V0IHN0cnVjdHVyZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBwYXNzZWQgdG8gQy4KKyAqIFRoZSBsYW5ndWFnZXMgY2FuIHJlZ2lzdGVyIGEgbmV3IGdlbmVyaWMgZmllbGR0eXBlIGR5bmFtaWNhbGx5IGFuZCBzdG9yZQorICogYSBoYW5kbGUgKGtleSkgdG8gdGhlIGNhbGxpbmcgb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBUb2dldGhlciB3aXRoIHRoYXQKKyAqIGl0IGNhbiByZWdpc3RlciBhIGZyZWVhcmcgY2FsbGJhY2ssIHNvIHRoYXQgdGhlIGhpZ2ggbGV2ZWwgbGFuZ3VhZ2UKKyAqIHJlbWFpbnMgaW4gY29udHJvbCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGFyZ3VtZW50cyB0aGV5IHBhc3MuCisgKiBUaGUgZGVzaWduIGlkZWEgaXMsIHRoYXQgdGhlIGhpZ2gtbGV2ZWwgbGFuZ3VhZ2UgLSB0eXBpY2FsbHkgYSBPTworICogbGFuZ3VhZ2UgbGlrZSBDIyBvciBKYXZhLCB1c2VzIGl0J3Mgb3duIGRpc3BhdGNoaW5nIG1lY2hhbmlzbXMKKyAqIChwb2x5bW9ycGhpc20pIHRvIGNhbGwgdGhlIHByb3BlciBjaGVjayByb3V0aW5lcyByZXNwb25zaWJsZSBmb3IgdGhlCisgKiBhcmd1bWVudCB0eXBlLiBTbyB0aGVzZSBsYW5ndWFnZSBpbXBsZW1lbnQgdHlwaWNhbGx5IG9ubHkgb25lIGdlbmVyaWMKKyAqIGZpZWxkdHlwZSB0aGV5IHJlZ2lzdGVyIHdpdGggdGhlIGZvcm1zIGxpYnJhcnkgdXNpbmcgdGhpcyBjYWxsLgorICoKKyAqIEZvciB0aGF0IHB1cnBvc2Ugd2UgaGF2ZSBleHRlbmRlZCB0aGUgZmllbGR0eXBlIHN0cnVjIGJ5IGEgbmV3IGVsZW1lbnQKKyAqIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnRzIGZyb20gYSBzaW5nbGUgc3RydWN0IHBhc3NlZCBieSB0aGUgY2FsbGVyLiAKKyAqIAorICovCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqR2VuZXJpY19UaGlzX1R5cGUoIHZvaWQgKiBhcmcgKQorfCAgIAorfCAgIERlc2NyaXB0aW9uICAgOiAgV2UgaW50ZXJwcmV0IHRoZSBwYXNzZWQgYXJnIGp1c3QgYXMgYSBoYW5kbGUgdGhlCit8ICAgICAgICAgICAgICAgICAgICBjYWxsaW5nIGxhbmd1YWdlIHVzZXMgdG8ga2VlcCB0cmFjayBvZiBpdHMgYWxsb2NhdGVkCit8ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBzdHJ1Y3R1cmVzLiBXZSBjYW4gc2ltcGx5IGNvcHkgaXQgYmFjay4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIFBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgKgorR2VuZXJpY19UaGlzX1R5cGUodm9pZCAqYXJnKQoreworICByZXR1cm4gKGFyZyk7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQorfCAgIEZ1bmN0aW9uICAgICAgOiAgRklFTERUWVBFICpfbmNfZ2VuZXJpY19maWVsZHR5cGUoCit8ICAgICAgICAgICAgICAgICAgICAgICBib29sICgqIGNvbnN0IGZpZWxkX2NoZWNrKShGSUVMRCAqLGNvbnN0IHZvaWQgKiksCit8ICAgICAgICAgICAgICAgICAgICAgICBib29sICgqIGNvbnN0IGNoYXJfY2hlY2spIChpbnQsIGNvbnN0IHZvaWQgKiksCit8ICAgCQkgICAgICAgIGJvb2wgKCpjb25zdCBuZXh0KShGT1JNKixGSUVMRCosY29uc3Qgdm9pZCopLAorfAkJICAgICAgICBib29sICgqY29uc3QgcHJldikoRk9STSosRklFTEQqLGNvbnN0IHZvaWQqKSwKK3wgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmcmVlY2FsbGJhY2spKHZvaWQqKSkKK3wKK3wgICBEZXNjcmlwdGlvbiAgIDogIENyZWF0ZSBhIG5ldyBmaWVsZHR5cGUuIFRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyIG11c3QKK3wgICAgICAgICAgICAgICAgICAgIHdyaXRlIGEgZmllbGRfY2hlY2sgYW5kIGEgY2hhcl9jaGVjayBmdW5jdGlvbiBhbmQgZ2l2ZQorfCAgICAgICAgICAgICAgICAgICAgdGhlbSBhcyBpbnB1dCB0byB0aGlzIGNhbGwuIEEgY2FsbGJhY2sgdG8gYWxsb3cgdGhlCit8ICAgICAgICAgICAgICAgICAgICByZWxlYXNlIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IG11c3QgYWxzbyBiZSBwcm92aWRlZC4KK3wgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmljIGZpZWxkIHR5cGVzLCB3ZSBwcm92aWRlIHNvbWUgbW9yZSAKK3wgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWVsZCBhcyBwYXJhbWV0ZXJzLgorfAorfCAgICAgICAgICAgICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzLCBlcnJubyBpcyBzZXQgdG8KK3wgICAgICAgICAgICAgICAgICAgICAgIEVfQkFEX0FSR1VNRU5UICAtIGludmFsaWQgYXJndW1lbnRzCit8ICAgICAgICAgICAgICAgICAgICAgICBFX1NZU1RFTV9FUlJPUiAgLSBzeXN0ZW0gZXJyb3IgKG5vIG1lbW9yeSkKK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIEZpZWxkdHlwZSBwb2ludGVyIG9yIE5VTEwgaWYgZXJyb3Igb2NjdXJyZWQKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitOQ1VSU0VTX0VYUE9SVChGSUVMRFRZUEUgKikKK19uY19nZW5lcmljX2ZpZWxkdHlwZShib29sICgqY29uc3QgZmllbGRfY2hlY2spIChGT1JNICosIEZJRUxEICosIGNvbnN0IHZvaWQgKiksCisJCSAgICAgIGJvb2wgKCpjb25zdCBjaGFyX2NoZWNrKSAoaW50LCBGT1JNICosIEZJRUxEICosIGNvbnN0CisJCQkJCQl2b2lkICopLAorCQkgICAgICBib29sICgqY29uc3QgbmV4dCkgKEZPUk0gKiwgRklFTEQgKiwgY29uc3Qgdm9pZCAqKSwKKwkJICAgICAgYm9vbCAoKmNvbnN0IHByZXYpIChGT1JNICosIEZJRUxEICosIGNvbnN0IHZvaWQgKiksCisJCSAgICAgIHZvaWQgKCpmcmVlY2FsbGJhY2spICh2b2lkICopKQoreworICBpbnQgY29kZSA9IEVfU1lTVEVNX0VSUk9SOworICBGSUVMRFRZUEUgKnJlcyA9IChGSUVMRFRZUEUgKikwOworCisgIFQoKFRfQ0FMTEVEKCJfbmNfZ2VuZXJpY19maWVsZHR5cGUoJXAsJXAsJXAsJXAsJXApIiksCisgICAgIGZpZWxkX2NoZWNrLCBjaGFyX2NoZWNrLCBuZXh0LCBwcmV2LCBmcmVlY2FsbGJhY2spKTsKKworICBpZiAoZmllbGRfY2hlY2sgfHwgY2hhcl9jaGVjaykKKyAgICB7CisgICAgICByZXMgPSB0eXBlTWFsbG9jKEZJRUxEVFlQRSwgMSk7CisKKyAgICAgIGlmIChyZXMpCisJeworCSAgKnJlcyA9ICpfbmNfRGVmYXVsdF9GaWVsZFR5cGU7CisJICBTZXRTdGF0dXMocmVzLCAoX0hBU19BUkdTIHwgX0dFTkVSSUMpKTsKKwkgIHJlcy0+ZmllbGRjaGVjay5nZmNoZWNrID0gZmllbGRfY2hlY2s7CisJICByZXMtPmNoYXJjaGVjay5nY2NoZWNrID0gY2hhcl9jaGVjazsKKwkgIHJlcy0+Z2VuZXJpY2FyZyA9IEdlbmVyaWNfVGhpc19UeXBlOworCSAgcmVzLT5mcmVlYXJnID0gZnJlZWNhbGxiYWNrOworCSAgcmVzLT5lbnVtX25leHQuZ25leHQgPSBuZXh0OworCSAgcmVzLT5lbnVtX3ByZXYuZ3ByZXYgPSBwcmV2OworCSAgY29kZSA9IEVfT0s7CisJfQorICAgIH0KKyAgZWxzZQorICAgIGNvZGUgPSBFX0JBRF9BUkdVTUVOVDsKKworICBpZiAoRV9PSyAhPSBjb2RlKQorICAgIFNFVF9FUlJPUihjb2RlKTsKKworICByZXR1cm5GaWVsZFR5cGUocmVzKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKK3wgICBGdW5jdGlvbiAgICAgIDogIHN0YXRpYyBUeXBlQXJndW1lbnQgKkdlbmVyaWNBcmd1bWVudCgKK3wgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRklFTERUWVBFKiB0eXAsCit8ICAgICAgICAgICAgICAgICAgICAgIGludCAoKmFyZ2l0ZXJhdG9yKSh2b2lkKiopLAorfCAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycikKK3wgICAKK3wgICBEZXNjcmlwdGlvbiAgIDogIFRoZSBpdGVyYXRvciBjYWxsYmFjayBtdXN0IGJyb3dzZSB0aHJvdWdoIGFsbCBmaWVsZHR5cGUKK3wgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgdGhhdCBoYXZlIGFuIGFyZ3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUKK3wgICAgICAgICAgICAgICAgICAgIHR5cGUuIFRoZSBpdGVyYXRvciByZXR1cm5zIDEgaWYgdGhlIG9wZXJhdGlvbiB0byBnZXQKK3wgICAgICAgICAgICAgICAgICAgIHRoZSBuZXh0IGVsZW1lbnQgd2FzIHN1Y2Nlc3NmdWxsLCAwIG90aGVyd2lzZS4gSWYgdGhlCit8ICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciBjb3VsZCBtb3ZlIHRvIHRoZSBuZXh0IGFyZ3VtZW50LCBpdCBmaWxscworfCAgICAgICAgICAgICAgICAgICAgdGhlIHZvaWQqIHBvaW50ZXIgcmVwcmVzZW50aW5nIHRoZSBhcmd1bWVudCBpbnRvIHRoZQorfCAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gcHJvdmlkZWQgYXMgYXJndW1lbnQgdG8gdGhlIGl0ZXJhdG9yLgorfCAgICAgICAgICAgICAgICAgICAgVGhlIGVyciByZWZlcmVuY2UgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGVycm9ycy4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIFBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIFR5cGVBcmd1bWVudCAqCitHZW5lcmljQXJndW1lbnQoY29uc3QgRklFTERUWVBFICp0eXAsCisJCWludCAoKmFyZ2l0ZXJhdG9yKSAodm9pZCAqKiksIGludCAqZXJyKQoreworICBUeXBlQXJndW1lbnQgKnJlcyA9IChUeXBlQXJndW1lbnQgKikwOworCisgIGlmICh0eXAgIT0gMCAmJiAodHlwLT5zdGF0dXMgJiBfSEFTX0FSR1MpICE9IDAgJiYgZXJyICE9IDAgJiYgYXJnaXRlcmF0b3IgIT0gMCkKKyAgICB7CisgICAgICBpZiAodHlwLT5zdGF0dXMgJiBfTElOS0VEX1RZUEUpCisJeworCSAgLyogQ29tcG9zaXRlIGZpZWxkdHlwZXMga2VlcCB0cmFjayBpbnRlcm5hbGx5IG9mIHRoZWlyIG93biBtZW1vcnkgKi8KKwkgIFR5cGVBcmd1bWVudCAqcCA9IHR5cGVNYWxsb2MoVHlwZUFyZ3VtZW50LCAxKTsKKworCSAgaWYgKHApCisJICAgIHsKKwkgICAgICBwLT5sZWZ0ID0gR2VuZXJpY0FyZ3VtZW50KHR5cC0+bGVmdCwgYXJnaXRlcmF0b3IsIGVycik7CisJICAgICAgcC0+cmlnaHQgPSBHZW5lcmljQXJndW1lbnQodHlwLT5yaWdodCwgYXJnaXRlcmF0b3IsIGVycik7CisJICAgICAgcmV0dXJuIHA7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgKmVyciArPSAxOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBhc3NlcnQodHlwLT5nZW5lcmljYXJnICE9ICh2b2lkICopMCk7CisJICBpZiAodHlwLT5nZW5lcmljYXJnID09IDApCisJICAgICplcnIgKz0gMTsKKwkgIGVsc2UKKwkgICAgeworCSAgICAgIHZvaWQgKmFyZ3A7CisJICAgICAgaW50IHZhbGlkID0gYXJnaXRlcmF0b3IoJmFyZ3ApOworCisJICAgICAgaWYgKHZhbGlkID09IDAgfHwgYXJncCA9PSAwIHx8CisJCSAgIShyZXMgPSAoVHlwZUFyZ3VtZW50ICopdHlwLT5nZW5lcmljYXJnKGFyZ3ApKSkKKwkJeworCQkgICplcnIgKz0gMTsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKyAgcmV0dXJuIHJlczsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtICAKK3wgICBGdW5jdGlvbiAgICAgIDogIGludCBfbmNfc2V0X2dlbmVyaWNfZmllbGR0eXBlKAorfCAgICAgICAgICAgICAgICAgICAgICBGSUVMRCogZmllbGQsCit8ICAgICAgICAgICAgICAgICAgICAgIEZJRUxEVFlQRSogZnR5cCwKK3wgICAgICAgICAgICAgICAgICAgICAgaW50ICgqYXJnaXRlcmF0b3IpKHZvaWQqKikpCit8ICAgCit8ICAgRGVzY3JpcHRpb24gICA6ICBBc3NpZ24gdGhlIGZpZWxkdHlwZSB0byB0aGUgZmllbGQgYW5kIHVzZSB0aGUgaXRlcmF0b3IKK3wgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbSB0byBnZXQgdGhlIGFyZ3VtZW50cyB3aGVuIGEgY2hlY2sgaXMgCit8ICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQuCit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICBFX09LIGlmIGFsbCB3ZW50IHdlbGwKK3wgICAgICAgICAgICAgICAgICAgIEVfU1lTVEVNX0VSUk9SIGlmIGFuIGVycm9yIG9jY3VycmVkCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworTkNVUlNFU19FWFBPUlQoaW50KQorX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZShGSUVMRCAqZmllbGQsCisJCQkgIEZJRUxEVFlQRSAqZnR5cCwKKwkJCSAgaW50ICgqYXJnaXRlcmF0b3IpICh2b2lkICoqKSkKK3sKKyAgaW50IGNvZGUgPSBFX1NZU1RFTV9FUlJPUjsKKyAgaW50IGVyciA9IDA7CisKKyAgaWYgKGZpZWxkKQorICAgIHsKKyAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC0+dHlwZSkKKwlfbmNfRnJlZV9UeXBlKGZpZWxkKTsKKworICAgICAgZmllbGQtPnR5cGUgPSBmdHlwOworICAgICAgaWYgKGZ0eXApCisJeworCSAgaWYgKGFyZ2l0ZXJhdG9yKQorCSAgICB7CisJICAgICAgLyogVGhlIHByZWNvbmRpdGlvbiBpcyB0aGF0IHRoZSBpdGVyYXRvciBpcyByZXNldCAqLworCSAgICAgIGZpZWxkLT5hcmcgPSAodm9pZCAqKUdlbmVyaWNBcmd1bWVudChmaWVsZC0+dHlwZSwgYXJnaXRlcmF0b3IsICZlcnIpOworCisJICAgICAgaWYgKGVycikKKwkJeworCQkgIF9uY19GcmVlX0FyZ3VtZW50KGZpZWxkLT50eXBlLCAoVHlwZUFyZ3VtZW50ICopKGZpZWxkLT5hcmcpKTsKKwkJICBmaWVsZC0+dHlwZSA9IChGSUVMRFRZUEUgKikwOworCQkgIGZpZWxkLT5hcmcgPSAodm9pZCAqKTA7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBjb2RlID0gRV9PSzsKKwkJICBpZiAoZmllbGQtPnR5cGUpCisJCSAgICBmaWVsZC0+dHlwZS0+cmVmKys7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBmaWVsZC0+YXJnID0gKHZvaWQgKikwOworCSAgY29kZSA9IEVfT0s7CisJfQorICAgIH0KKyAgcmV0dXJuIGNvZGU7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCit8ICAgRnVuY3Rpb24gICAgICA6ICBXSU5ET1cqIF9uY19mb3JtX2N1cnNvcigKK3wgICAgICAgICAgICAgICAgICAgICAgRk9STSogZm9ybSwKK3wgICAgICAgICAgICAgICAgICAgICAgaW50ICpwUm93LCBpbnQgKnBDb2wpCit8ICAgCit8ICAgRGVzY3JpcHRpb24gICA6ICBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIGZvcm0gY3Vyc29yIHBvc2l0aW9uCit8ICAgICAgICAgICAgICAgICAgICBXZSBhbHNvIHJldHVybiB0aGUgZmllbGQgd2luZG93Cit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICBUaGUgZmllbGRzIFdpbmRvdyBvciBOVUxMIG9uIGVycm9yCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworTkNVUlNFU19FWFBPUlQoV0lORE9XICopCitfbmNfZm9ybV9jdXJzb3IoY29uc3QgRk9STSAqZm9ybSwgaW50ICpwUm93LCBpbnQgKnBDb2wpCit7CisgIGludCBjb2RlID0gRV9TWVNURU1fRVJST1I7CisgIFdJTkRPVyAqcmVzID0gKFdJTkRPVyAqKTA7CisKKyAgaWYgKCEoZm9ybSA9PSAwIHx8IHBSb3cgPT0gMCB8fCBwQ29sID09IDApKQorICAgIHsKKyAgICAgICpwUm93ID0gZm9ybS0+Y3Vycm93OworICAgICAgKnBDb2wgPSBmb3JtLT5jdXJjb2w7CisgICAgICByZXMgPSBmb3JtLT53OworICAgICAgY29kZSA9IEVfT0s7CisgICAgfQorICBpZiAoY29kZSAhPSBFX09LKQorICAgIFNFVF9FUlJPUihjb2RlKTsKKyAgcmV0dXJuIHJlczsKK30KKworI2Vsc2UKK2V4dGVybiB2b2lkIF9uY19mdHlfZ2VuZXJpYyh2b2lkKTsKK3ZvaWQKK19uY19mdHlfZ2VuZXJpYyh2b2lkKQoreworfQorI2VuZGlmCisKKy8qIGZ0eV9nZW5lcmljLmMgZW5kcyBoZXJlICovCmRpZmYgLS1naXQgYS9mb3JtL2Z0eV9pbnQuYyBiL2Zvcm0vZnR5X2ludC5jCmluZGV4IDhhNTM2N2YuLjFlNDM4NzQgMTAwNjQ0Ci0tLSBhL2Zvcm0vZnR5X2ludC5jCisrKyBiL2Zvcm0vZnR5X2ludC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmdHlfaW50LmMsdiAxLjIyIDIwMDcvMTAvMTMgMTk6MzI6NDAgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmdHlfaW50LmMsdiAxLjI2IDIwMTIvMDIvMjMgMTA6MDI6MTUgdG9tIEV4cCAkIikKIAogI2lmIFVTRV9XSURFQ19TVVBQT1JUCiAjZGVmaW5lIGlzRGlnaXQoYykgKGlzd2RpZ2l0KCh3aW50X3QpKGMpKSB8fCBpc2RpZ2l0KFVDaGFyKGMpKSkKQEAgLTUyLDYgKzUyLDQxIEBACiAgIH0KIHRoaXNBUkc7CiAKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICBpbnQgcHJlY2lzaW9uOworICAgIGxvbmcgbG93OworICAgIGxvbmcgaGlnaDsKKyAgfQoraW50ZWdlclBBUk07CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqR2VuZXJpY19UaGlzX1R5cGUoIHZvaWQgKiBhcmcgKQorfCAgIAorfCAgIERlc2NyaXB0aW9uICAgOiAgQWxsb2NhdGUgc3RydWN0dXJlIGZvciBpbnRlZ2VyIHR5cGUgYXJndW1lbnQuCit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICBQb2ludGVyIHRvIGFyZ3VtZW50IHN0cnVjdHVyZSBvciBOVUxMIG9uIGVycm9yCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgKgorR2VuZXJpY19UaGlzX1R5cGUodm9pZCAqYXJnKQoreworICB0aGlzQVJHICphcmdwID0gKHRoaXNBUkcgKikgMDsKKyAgdGhpc0FSRyAqcGFyYW0gPSAodGhpc0FSRyAqKSBhcmc7CisKKyAgaWYgKHBhcmFtKQorICAgIHsKKyAgICAgIGFyZ3AgPSB0eXBlTWFsbG9jKHRoaXNBUkcsIDEpOworCisgICAgICBpZiAoYXJncCkKKwl7CisJICBUKChUX0NSRUFURSgidGhpc0FSRyAlcCIpLCAodm9pZCAqKWFyZ3ApKTsKKwkgICphcmdwID0gKnBhcmFtOworCX0KKyAgICB9CisgIHJldHVybiAodm9pZCAqKWFyZ3A7Cit9CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqTWFrZV9UaGlzX1R5cGUoIHZhX2xpc3QgKiBhcCApCkBAIC02MywxNiArOTgsMTMgQEAKIHN0YXRpYyB2b2lkICoKIE1ha2VfVGhpc19UeXBlKHZhX2xpc3QgKmFwKQogewotICB0aGlzQVJHICphcmdwID0gdHlwZU1hbGxvYyh0aGlzQVJHLCAxKTsKKyAgdGhpc0FSRyBhcmc7CiAKLSAgaWYgKGFyZ3ApCi0gICAgewotICAgICAgVCgoVF9DUkVBVEUoInRoaXNBUkcgJXAiKSwgYXJncCkpOwotICAgICAgYXJncC0+cHJlY2lzaW9uID0gdmFfYXJnKCphcCwgaW50KTsKLSAgICAgIGFyZ3AtPmxvdyA9IHZhX2FyZygqYXAsIGxvbmcpOwotICAgICAgYXJncC0+aGlnaCA9IHZhX2FyZygqYXAsIGxvbmcpOwotICAgIH0KLSAgcmV0dXJuICh2b2lkICopYXJncDsKKyAgYXJnLnByZWNpc2lvbiA9IHZhX2FyZygqYXAsIGludCk7CisgIGFyZy5sb3cgPSB2YV9hcmcoKmFwLCBsb25nKTsKKyAgYXJnLmhpZ2ggPSB2YV9hcmcoKmFwLCBsb25nKTsKKworICByZXR1cm4gR2VuZXJpY19UaGlzX1R5cGUoKHZvaWQgKikmYXJnKTsKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk0LDcgKzEyNiw3IEBACiAgICAgICByZXN1bHQgPSB0eXBlTWFsbG9jKHRoaXNBUkcsIDEpOwogICAgICAgaWYgKHJlc3VsdCkKIAl7Ci0JICBUKChUX0NSRUFURSgidGhpc0FSRyAlcCIpLCByZXN1bHQpKTsKKwkgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksICh2b2lkICopcmVzdWx0KSk7CiAJICAqcmVzdWx0ID0gKmFwOwogCX0KICAgICB9CkBAIC0yMDEsNyArMjMzLDggQEAKIAkgICAgfQogCSAgaWYgKHJlc3VsdCkKIAkgICAgewotCSAgICAgIHNwcmludGYoYnVmLCAiJS4qbGQiLCAocHJlYyA+IDAgPyBwcmVjIDogMCksIHZhbCk7CisJICAgICAgX25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKHNpemVvZihidWYpKQorCQkJICAiJS4qbGQiLCAocHJlYyA+IDAgPyBwcmVjIDogMCksIHZhbCk7CiAJICAgICAgc2V0X2ZpZWxkX2J1ZmZlcihmaWVsZCwgMCwgYnVmKTsKIAkgICAgfQogCX0KQEAgLTIzNSwxMiArMjY4LDI3IEBACiAgIE1ha2VfVGhpc19UeXBlLAogICBDb3B5X1RoaXNfVHlwZSwKICAgRnJlZV9UaGlzX1R5cGUsCi0gIENoZWNrX1RoaXNfRmllbGQsCi0gIENoZWNrX1RoaXNfQ2hhcmFjdGVyLAotICBOVUxMLAotICBOVUxMCisgIElOSVRfRlRfRlVOQyhDaGVja19UaGlzX0ZpZWxkKSwKKyAgSU5JVF9GVF9GVU5DKENoZWNrX1RoaXNfQ2hhcmFjdGVyKSwKKyAgSU5JVF9GVF9GVU5DKE5VTEwpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCisgIEdlbmVyaWNfVGhpc19UeXBlCisjZW5kaWYKIH07CiAKIE5DVVJTRVNfRVhQT1JUX1ZBUihGSUVMRFRZUEUqKSBUWVBFX0lOVEVHRVIgPSAmdHlwZVRISVM7CiAKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKy8qIFRoZSBuZXh0IHJvdXRpbmVzIGFyZSB0byBzaW1wbGlmeSB0aGUgdXNlIG9mIG5jdXJzZXMgZnJvbQorICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHdpdGggcmVzdGljdGlvbnMgb24gaW50ZXJvcCB3aXRoIEMgbGV2ZWwKKyAgIGNvbnN0cnVjdHMgKGUuZy4gdmFyaWFibGUgYWNjZXNzIG9yIHZhX2xpc3QgKyBlbGxpcHNpcyBjb25zdHJ1Y3RzKQorKi8KK05DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKQorX25jX1RZUEVfSU5URUdFUih2b2lkKQoreworICByZXR1cm4gVFlQRV9JTlRFR0VSOworfQorI2VuZGlmCisKIC8qIGZ0eV9pbnQuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL2Zvcm0vZnR5X2lwdjQuYyBiL2Zvcm0vZnR5X2lwdjQuYwppbmRleCA1ZDFhMjA5Li44ZGMwNGY4IDEwMDY0NAotLS0gYS9mb3JtL2Z0eV9pcHY0LmMKKysrIGIvZm9ybS9mdHlfaXB2NC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmdHlfaXB2NC5jLHYgMS44IDIwMDYvMTIvMDIgMTk6MzM6MDIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBmdHlfaXB2NC5jLHYgMS4xMCAyMDA5LzExLzA3IDIwOjE3OjU4IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybSAgCkBAIC05NCwxMiArOTQsMjcgQEAKICAgTlVMTCwKICAgTlVMTCwKICAgTlVMTCwKLSAgQ2hlY2tfSVBWNF9GaWVsZCwKLSAgQ2hlY2tfSVBWNF9DaGFyYWN0ZXIsCi0gIE5VTEwsCisgIElOSVRfRlRfRlVOQyhDaGVja19JUFY0X0ZpZWxkKSwKKyAgSU5JVF9GVF9GVU5DKENoZWNrX0lQVjRfQ2hhcmFjdGVyKSwKKyAgSU5JVF9GVF9GVU5DKE5VTEwpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisjaWYgTkNVUlNFU19JTlRFUk9QX0ZVTkNTCiAgIE5VTEwKKyNlbmRpZgogfTsKIAogTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSopIFRZUEVfSVBWNCA9ICZ0eXBlSVBWNDsKIAorI2lmIE5DVVJTRVNfSU5URVJPUF9GVU5DUworLyogVGhlIG5leHQgcm91dGluZXMgYXJlIHRvIHNpbXBsaWZ5IHRoZSB1c2Ugb2YgbmN1cnNlcyBmcm9tCisgICBwcm9ncmFtbWluZyBsYW5ndWFnZXMgd2l0aCByZXN0aWN0aW9ucyBvbiBpbnRlcm9wIHdpdGggQyBsZXZlbAorICAgY29uc3RydWN0cyAoZS5nLiB2YXJpYWJsZSBhY2Nlc3Mgb3IgdmFfbGlzdCArIGVsbGlwc2lzIGNvbnN0cnVjdHMpCisqLworTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopCitfbmNfVFlQRV9JUFY0KHZvaWQpCit7CisgIHJldHVybiBUWVBFX0lQVjQ7Cit9CisjZW5kaWYKKwogLyogZnR5X2lwdjQuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL2Zvcm0vZnR5X251bS5jIGIvZm9ybS9mdHlfbnVtLmMKaW5kZXggZTc0ZThlMy4uOGNjZTQzZiAxMDA2NDQKLS0tIGEvZm9ybS9mdHlfbnVtLmMKKysrIGIvZm9ybS9mdHlfbnVtLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJmb3JtLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IGZ0eV9udW0uYyx2IDEuMjUgMjAwNy8xMC8xMyAxOTozMjo1NCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZ0eV9udW0uYyx2IDEuMjkgMjAxMi8wMi8yMyAxMDowMjoxNSB0b20gRXhwICQiKQogCiAjaWYgSEFWRV9MT0NBTEVfSAogI2luY2x1ZGUgPGxvY2FsZS5oPgpAQCAtNjMsNiArNjMsNDkgQEAKICAgfQogdGhpc0FSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgZG91YmxlIGxvdzsKKyAgICBkb3VibGUgaGlnaDsKKyAgfQordGhpc1BBUk07CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJuZm9ybQorfCAgIEZ1bmN0aW9uICAgICAgOiAgc3RhdGljIHZvaWQgKkdlbmVyaWNfVGhpc19UeXBlKHZvaWQgKiBhcmcpCit8Cit8ICAgRGVzY3JpcHRpb24gICA6ICBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIG51bWVyaWMgdHlwZSBhcmd1bWVudC4KK3wKK3wgICBSZXR1cm4gVmFsdWVzIDogIFBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlIG9yIE5VTEwgb24gZXJyb3IKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZCAqCitHZW5lcmljX1RoaXNfVHlwZSh2b2lkICphcmcpCit7CisgIHRoaXNBUkcgKmFyZ24gPSAodGhpc0FSRyAqKSAwOworICB0aGlzUEFSTSAqYXJncyA9ICh0aGlzUEFSTSAqKSBhcmc7CisKKyAgaWYgKGFyZ3MpCisgICAgeworICAgICAgYXJnbiA9IHR5cGVNYWxsb2ModGhpc0FSRywgMSk7CisKKyAgICAgIGlmIChhcmduKQorCXsKKwkgIFQoKFRfQ1JFQVRFKCJ0aGlzQVJHICVwIiksICh2b2lkICopYXJnbikpOworCSAgYXJnbi0+cHJlY2lzaW9uID0gYXJncy0+cHJlY2lzaW9uOworCSAgYXJnbi0+bG93ID0gYXJncy0+bG93OworCSAgYXJnbi0+aGlnaCA9IGFyZ3MtPmhpZ2g7CisKKyNpZiBIQVZFX0xPQ0FMRV9ICisJICBhcmduLT5MID0gbG9jYWxlY29udigpOworI2Vsc2UKKwkgIGFyZ24tPkwgPSBOVUxMOworI2VuZGlmCisJfQorICAgIH0KKyAgcmV0dXJuICh2b2lkICopYXJnbjsKK30KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqTWFrZV9UaGlzX1R5cGUodmFfbGlzdCAqIGFwKQpAQCAtNzQsMjIgKzExNywxMyBAQAogc3RhdGljIHZvaWQgKgogTWFrZV9UaGlzX1R5cGUodmFfbGlzdCAqYXApCiB7Ci0gIHRoaXNBUkcgKmFyZ24gPSB0eXBlTWFsbG9jKHRoaXNBUkcsIDEpOworICB0aGlzUEFSTSBhcmc7CiAKLSAgaWYgKGFyZ24pCi0gICAgewotICAgICAgVCgoVF9DUkVBVEUoInRoaXNBUkcgJXAiKSwgYXJnbikpOwotICAgICAgYXJnbi0+cHJlY2lzaW9uID0gdmFfYXJnKCphcCwgaW50KTsKLSAgICAgIGFyZ24tPmxvdyA9IHZhX2FyZygqYXAsIGRvdWJsZSk7Ci0gICAgICBhcmduLT5oaWdoID0gdmFfYXJnKCphcCwgZG91YmxlKTsKKyAgYXJnLnByZWNpc2lvbiA9IHZhX2FyZygqYXAsIGludCk7CisgIGFyZy5sb3cgPSB2YV9hcmcoKmFwLCBkb3VibGUpOworICBhcmcuaGlnaCA9IHZhX2FyZygqYXAsIGRvdWJsZSk7CiAKLSNpZiBIQVZFX0xPQ0FMRV9ICi0gICAgICBhcmduLT5MID0gbG9jYWxlY29udigpOwotI2Vsc2UKLSAgICAgIGFyZ24tPkwgPSBOVUxMOwotI2VuZGlmCi0gICAgfQotICByZXR1cm4gKHZvaWQgKilhcmduOworICByZXR1cm4gR2VuZXJpY19UaGlzX1R5cGUoKHZvaWQgKikmYXJnKTsKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMSw3ICsxNDUsNyBAQAogICAgICAgcmVzdWx0ID0gdHlwZU1hbGxvYyh0aGlzQVJHLCAxKTsKICAgICAgIGlmIChyZXN1bHQpCiAJewotCSAgVCgoVF9DUkVBVEUoInRoaXNBUkcgJXAiKSwgcmVzdWx0KSk7CisJICBUKChUX0NSRUFURSgidGhpc0FSRyAlcCIpLCAodm9pZCAqKXJlc3VsdCkpOwogCSAgKnJlc3VsdCA9ICphcDsKIAl9CiAgICAgfQpAQCAtMjM3LDcgKzI3MSw4IEBACiAJICAgIH0KIAkgIGlmIChyZXN1bHQpCiAJICAgIHsKLQkgICAgICBzcHJpbnRmKGJ1ZiwgIiUuKmYiLCAocHJlYyA+IDAgPyBwcmVjIDogMCksIHZhbCk7CisJICAgICAgX25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKHNpemVvZihidWYpKQorCQkJICAiJS4qZiIsIChwcmVjID4gMCA/IHByZWMgOiAwKSwgdmFsKTsKIAkgICAgICBzZXRfZmllbGRfYnVmZmVyKGZpZWxkLCAwLCBidWYpOwogCSAgICB9CiAJfQpAQCAtMjc5LDEyICszMTQsMjcgQEAKICAgTWFrZV9UaGlzX1R5cGUsCiAgIENvcHlfVGhpc19UeXBlLAogICBGcmVlX1RoaXNfVHlwZSwKLSAgQ2hlY2tfVGhpc19GaWVsZCwKLSAgQ2hlY2tfVGhpc19DaGFyYWN0ZXIsCi0gIE5VTEwsCi0gIE5VTEwKKyAgSU5JVF9GVF9GVU5DKENoZWNrX1RoaXNfRmllbGQpLAorICBJTklUX0ZUX0ZVTkMoQ2hlY2tfVGhpc19DaGFyYWN0ZXIpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisgIElOSVRfRlRfRlVOQyhOVUxMKSwKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKyAgR2VuZXJpY19UaGlzX1R5cGUKKyNlbmRpZgogfTsKIAogTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSopIFRZUEVfTlVNRVJJQyA9ICZ0eXBlVEhJUzsKIAorI2lmIE5DVVJTRVNfSU5URVJPUF9GVU5DUworLyogVGhlIG5leHQgcm91dGluZXMgYXJlIHRvIHNpbXBsaWZ5IHRoZSB1c2Ugb2YgbmN1cnNlcyBmcm9tCisgICBwcm9ncmFtbWluZyBsYW5ndWFnZXMgd2l0aCByZXN0aWN0aW9ucyBvbiBpbnRlcm9wIHdpdGggQyBsZXZlbAorICAgY29uc3RydWN0cyAoZS5nLiB2YXJpYWJsZSBhY2Nlc3Mgb3IgdmFfbGlzdCArIGVsbGlwc2lzIGNvbnN0cnVjdHMpCisqLworTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopCitfbmNfVFlQRV9OVU1FUklDKHZvaWQpCit7CisgIHJldHVybiBUWVBFX05VTUVSSUM7Cit9CisjZW5kaWYKKwogLyogZnR5X251bS5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvZm9ybS9mdHlfcmVnZXguYyBiL2Zvcm0vZnR5X3JlZ2V4LmMKaW5kZXggMjQ3Nzc5Zi4uMTk0YTUyZSAxMDA2NDQKLS0tIGEvZm9ybS9mdHlfcmVnZXguYworKysgYi9mb3JtL2Z0eV9yZWdleC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiZm9ybS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBmdHlfcmVnZXguYyx2IDEuMjEgMjAwNy8xMC8xMyAxOTozMzo1MCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGZ0eV9yZWdleC5jLHYgMS4yNiAyMDE1LzAxLzEwIDE3OjEwOjI1IHRvbSBFeHAgJCIpCiAKICNpZiBIQVZFX1JFR0VYX0hfRlVOQ1MJCS8qIFdlIHByZWZlciBQT1NJWCByZWdleCAqLwogI2luY2x1ZGUgPHJlZ2V4Lmg+CkBAIC05MCw2ICs5MCwxMTQgQEAKIAogI2VuZGlmCiAKKyNpZiBIQVZFX1JFR0VYX0hfRlVOQ1MgfCBIQVZFX1JFR0VYUF9IX0ZVTkNTIHwgSEFWRV9SRUdFWFBSX0hfRlVOQ1MKKyMgZGVmaW5lIE1BWUJFX1VOVVNFRAorI2Vsc2UKKyMgZGVmaW5lIE1BWUJFX1VOVVNFRCBHQ0NfVU5VU0VECisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCit8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqR2VuZXJpY19SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKHZvaWQgKiBhcmcpCit8Cit8ICAgRGVzY3JpcHRpb24gICA6ICBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIHJlZ2V4IHR5cGUgYXJndW1lbnQuCit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICBQb2ludGVyIHRvIGFyZ3VtZW50IHN0cnVjdHVyZSBvciBOVUxMIG9uIGVycm9yCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgKgorR2VuZXJpY19SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKHZvaWQgKmFyZyBNQVlCRV9VTlVTRUQpCit7CisjaWYgSEFWRV9SRUdFWF9IX0ZVTkNTCisgIGNoYXIgKnJ4ID0gKGNoYXIgKilhcmc7CisgIFJlZ0V4cF9BcmcgKnByZWcgPSAoUmVnRXhwX0FyZyAqKTA7CisKKyAgaWYgKHJ4KQorICAgIHsKKyAgICAgIHByZWcgPSB0eXBlQ2FsbG9jKFJlZ0V4cF9BcmcsIDEpOworCisgICAgICBpZiAocHJlZykKKwl7CisJICBUKChUX0NSRUFURSgiUmVnRXhwX0FyZyAlcCIpLCAodm9pZCAqKXByZWcpKTsKKwkgIGlmICgoKHByZWctPnBSZWdFeHAgPSB0eXBlTWFsbG9jKHJlZ2V4X3QsIDEpKSAhPSAwKQorCSAgICAgICYmICFyZWdjb21wKHByZWctPnBSZWdFeHAsIHJ4LAorCQkJICAoUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwgUkVHX05FV0xJTkUpKSkKKwkgICAgeworCSAgICAgIFQoKFRfQ1JFQVRFKCJyZWdleF90ICVwIiksICh2b2lkICopcHJlZy0+cFJlZ0V4cCkpOworCSAgICAgIGlmICgocHJlZy0+cmVmQ291bnQgPSB0eXBlTWFsbG9jKHVuc2lnbmVkIGxvbmcsIDEpKSAhPSAwKQorCQkgKihwcmVnLT5yZWZDb3VudCkgPSAxOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAocHJlZy0+cFJlZ0V4cCkKKwkJZnJlZShwcmVnLT5wUmVnRXhwKTsKKwkgICAgICBmcmVlKHByZWcpOworCSAgICAgIHByZWcgPSAoUmVnRXhwX0FyZyAqKTA7CisJICAgIH0KKwl9CisgICAgfQorICByZXR1cm4gKCh2b2lkICopcHJlZyk7CisjZWxpZiBIQVZFX1JFR0VYUF9IX0ZVTkNTIHwgSEFWRV9SRUdFWFBSX0hfRlVOQ1MKKyAgY2hhciAqcnggPSAoY2hhciAqKWFyZzsKKyAgUmVnRXhwX0FyZyAqcEFyZyA9IChSZWdFeHBfQXJnICopMDsKKworICBpZiAocngpCisgICAgeworICAgICAgcEFyZyA9IHR5cGVNYWxsb2MoUmVnRXhwX0FyZywgMSk7CisKKyAgICAgIGlmIChwQXJnKQorCXsKKwkgIGludCBibGVuID0gUlhfSU5DUkVNRU5UOworCisJICBUKChUX0NSRUFURSgiUmVnRXhwX0FyZyAlcCIpLCBwQXJnKSk7CisJICBwQXJnLT5jb21waWxlZF9leHByZXNzaW9uID0gTlVMTDsKKwkgIGlmICgocEFyZy0+cmVmQ291bnQgPSB0eXBlTWFsbG9jKHVuc2lnbmVkIGxvbmcsIDEpKSAhPSAwKQorCSAgICAgKihwQXJnLT5yZWZDb3VudCkgPSAxOworCisJICBkbworCSAgICB7CisJICAgICAgY2hhciAqYnVmID0gdHlwZU1hbGxvYyhjaGFyLCBibGVuKTsKKworCSAgICAgIGlmIChidWYpCisJCXsKKyNpZiBIQVZFX1JFR0VYUF9IX0ZVTkNTCisJCSAgY2hhciAqbGFzdF9wb3MgPSBjb21waWxlKHJ4LCBidWYsICZidWZbYmxlbl0sICdcMCcpOworCisjZWxzZSAvKiBIQVZFX1JFR0VYUFJfSF9GVU5DUyAqLworCQkgIGNoYXIgKmxhc3RfcG9zID0gY29tcGlsZShyeCwgYnVmLCAmYnVmW2JsZW5dKTsKKyNlbmRpZgorCQkgIGlmIChyZWdfZXJybm8pCisJCSAgICB7CisJCSAgICAgIGZyZWUoYnVmKTsKKwkJICAgICAgaWYgKHJlZ19lcnJubyA9PSA1MCkKKwkJCWJsZW4gKz0gUlhfSU5DUkVNRU5UOworCQkgICAgICBlbHNlCisJCQl7CisJCQkgIGZyZWUocEFyZyk7CisJCQkgIHBBcmcgPSBOVUxMOworCQkJICBicmVhazsKKwkJCX0KKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICB7CisJCSAgICAgIHBBcmctPmNvbXBpbGVkX2V4cHJlc3Npb24gPSBidWY7CisJCSAgICAgIGJyZWFrOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgIHdoaWxlIChibGVuIDw9IE1BWF9SWF9MRU4pOworCX0KKyAgICAgIGlmIChwQXJnICYmICFwQXJnLT5jb21waWxlZF9leHByZXNzaW9uKQorCXsKKwkgIGZyZWUocEFyZyk7CisJICBwQXJnID0gTlVMTDsKKwl9CisgICAgfQorICByZXR1cm4gKHZvaWQgKilwQXJnOworI2Vsc2UKKyAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5mb3JtCiB8ICAgRnVuY3Rpb24gICAgICA6ICBzdGF0aWMgdm9pZCAqTWFrZV9SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKHZhX2xpc3QgKiBhcCkKQEAgLTEwMSw5MSArMjA5LDkgQEAKIHN0YXRpYyB2b2lkICoKIE1ha2VfUmVndWxhckV4cHJlc3Npb25fVHlwZSh2YV9saXN0ICphcCkKIHsKLSNpZiBIQVZFX1JFR0VYX0hfRlVOQ1MKICAgY2hhciAqcnggPSB2YV9hcmcoKmFwLCBjaGFyICopOwotICBSZWdFeHBfQXJnICpwcmVnOwogCi0gIHByZWcgPSB0eXBlTWFsbG9jKFJlZ0V4cF9BcmcsIDEpOwotCi0gIGlmIChwcmVnKQotICAgIHsKLSAgICAgIFQoKFRfQ1JFQVRFKCJSZWdFeHBfQXJnICVwIiksIHByZWcpKTsKLSAgICAgIGlmICgoKHByZWctPnBSZWdFeHAgPSB0eXBlTWFsbG9jKHJlZ2V4X3QsIDEpKSAhPSAwKQotCSAgJiYgIXJlZ2NvbXAocHJlZy0+cFJlZ0V4cCwgcngsCi0JCSAgICAgIChSRUdfRVhURU5ERUQgfCBSRUdfTk9TVUIgfCBSRUdfTkVXTElORSkpKQotCXsKLQkgIFQoKFRfQ1JFQVRFKCJyZWdleF90ICVwIiksIHByZWctPnBSZWdFeHApKTsKLQkgIHByZWctPnJlZkNvdW50ID0gdHlwZU1hbGxvYyh1bnNpZ25lZCBsb25nLCAxKTsKLQotCSAgKihwcmVnLT5yZWZDb3VudCkgPSAxOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBpZiAocHJlZy0+cFJlZ0V4cCkKLQkgICAgZnJlZShwcmVnLT5wUmVnRXhwKTsKLQkgIGZyZWUocHJlZyk7Ci0JICBwcmVnID0gKFJlZ0V4cF9BcmcgKikwOwotCX0KLSAgICB9Ci0gIHJldHVybiAoKHZvaWQgKilwcmVnKTsKLSNlbGlmIEhBVkVfUkVHRVhQX0hfRlVOQ1MgfCBIQVZFX1JFR0VYUFJfSF9GVU5DUwotICBjaGFyICpyeCA9IHZhX2FyZygqYXAsIGNoYXIgKik7Ci0gIFJlZ0V4cF9BcmcgKnBBcmc7Ci0KLSAgcEFyZyA9IHR5cGVNYWxsb2MoUmVnRXhwX0FyZywgMSk7Ci0KLSAgaWYgKHBBcmcpCi0gICAgewotICAgICAgaW50IGJsZW4gPSBSWF9JTkNSRU1FTlQ7Ci0KLSAgICAgIFQoKFRfQ1JFQVRFKCJSZWdFeHBfQXJnICVwIiksIHBBcmcpKTsKLSAgICAgIHBBcmctPmNvbXBpbGVkX2V4cHJlc3Npb24gPSBOVUxMOwotICAgICAgcEFyZy0+cmVmQ291bnQgPSB0eXBlTWFsbG9jKHVuc2lnbmVkIGxvbmcsIDEpOwotCi0gICAgICAqKHBBcmctPnJlZkNvdW50KSA9IDE7Ci0KLSAgICAgIGRvCi0JewotCSAgY2hhciAqYnVmID0gdHlwZU1hbGxvYyhjaGFyLCBibGVuKTsKLQotCSAgaWYgKGJ1ZikKLQkgICAgewotI2lmIEhBVkVfUkVHRVhQX0hfRlVOQ1MKLQkgICAgICBjaGFyICpsYXN0X3BvcyA9IGNvbXBpbGUocngsIGJ1ZiwgJmJ1ZltibGVuXSwgJ1wwJyk7Ci0KLSNlbHNlIC8qIEhBVkVfUkVHRVhQUl9IX0ZVTkNTICovCi0JICAgICAgY2hhciAqbGFzdF9wb3MgPSBjb21waWxlKHJ4LCBidWYsICZidWZbYmxlbl0pOwotI2VuZGlmCi0JICAgICAgaWYgKHJlZ19lcnJubykKLQkJewotCQkgIGZyZWUoYnVmKTsKLQkJICBpZiAocmVnX2Vycm5vID09IDUwKQotCQkgICAgYmxlbiArPSBSWF9JTkNSRU1FTlQ7Ci0JCSAgZWxzZQotCQkgICAgewotCQkgICAgICBmcmVlKHBBcmcpOwotCQkgICAgICBwQXJnID0gTlVMTDsKLQkJICAgICAgYnJlYWs7Ci0JCSAgICB9Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICBwQXJnLT5jb21waWxlZF9leHByZXNzaW9uID0gYnVmOwotCQkgIGJyZWFrOwotCQl9Ci0JICAgIH0KLQl9Ci0gICAgICB3aGlsZSAoYmxlbiA8PSBNQVhfUlhfTEVOKTsKLSAgICB9Ci0gIGlmIChwQXJnICYmICFwQXJnLT5jb21waWxlZF9leHByZXNzaW9uKQotICAgIHsKLSAgICAgIGZyZWUocEFyZyk7Ci0gICAgICBwQXJnID0gTlVMTDsKLSAgICB9Ci0gIHJldHVybiAodm9pZCAqKXBBcmc7Ci0jZWxzZQotICByZXR1cm4gMDsKLSNlbmRpZgorICByZXR1cm4gR2VuZXJpY19SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKCh2b2lkICopcngpOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTk4LDcgKzIyNCw3IEBACiB8ICAgUmV0dXJuIFZhbHVlcyA6ICBQb2ludGVyIHRvIGFyZ3VtZW50IHN0cnVjdHVyZSBvciBOVUxMIG9uIGVycm9yLgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0YXRpYyB2b2lkICoKLUNvcHlfUmVndWxhckV4cHJlc3Npb25fVHlwZShjb25zdCB2b2lkICphcmdwKQorQ29weV9SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKGNvbnN0IHZvaWQgKmFyZ3AgTUFZQkVfVU5VU0VEKQogewogI2lmIChIQVZFX1JFR0VYX0hfRlVOQ1MgfCBIQVZFX1JFR0VYUF9IX0ZVTkNTIHwgSEFWRV9SRUdFWFBSX0hfRlVOQ1MpCiAgIGNvbnN0IFJlZ0V4cF9BcmcgKmFwID0gKGNvbnN0IFJlZ0V4cF9BcmcgKilhcmdwOwpAQCAtMjI0LDcgKzI1MCw3IEBACiB8ICAgUmV0dXJuIFZhbHVlcyA6ICAtCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogc3RhdGljIHZvaWQKLUZyZWVfUmVndWxhckV4cHJlc3Npb25fVHlwZSh2b2lkICphcmdwKQorRnJlZV9SZWd1bGFyRXhwcmVzc2lvbl9UeXBlKHZvaWQgKmFyZ3AgTUFZQkVfVU5VU0VEKQogewogI2lmIEhBVkVfUkVHRVhfSF9GVU5DUyB8IEhBVkVfUkVHRVhQX0hfRlVOQ1MgfCBIQVZFX1JFR0VYUFJfSF9GVU5DUwogICBSZWdFeHBfQXJnICphcCA9IChSZWdFeHBfQXJnICopYXJncDsKQEAgLTIzOCw2ICsyNjQsNyBAQAogCSAgICB7CiAJICAgICAgZnJlZShhcC0+cmVmQ291bnQpOwogCSAgICAgIHJlZ2ZyZWUoYXAtPnBSZWdFeHApOworCSAgICAgIGZyZWUoYXAtPnBSZWdFeHApOwogCSAgICB9CiAjZWxpZiBIQVZFX1JFR0VYUF9IX0ZVTkNTIHwgSEFWRV9SRUdFWFBSX0hfRlVOQ1MKIAkgIGlmIChhcC0+Y29tcGlsZWRfZXhwcmVzc2lvbikKQEAgLTI2NCw3ICsyOTEsOCBAQAogfCAgICAgICAgICAgICAgICAgICAgRkFMU0UgLSBmaWVsZCBpcyBpbnZhbGlkCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogc3RhdGljIGJvb2wKLUNoZWNrX1JlZ3VsYXJFeHByZXNzaW9uX0ZpZWxkKEZJRUxEICpmaWVsZCwgY29uc3Qgdm9pZCAqYXJncCkKK0NoZWNrX1JlZ3VsYXJFeHByZXNzaW9uX0ZpZWxkKEZJRUxEICpmaWVsZCBNQVlCRV9VTlVTRUQsCisJCQkgICAgICBjb25zdCB2b2lkICphcmdwIE1BWUJFX1VOVVNFRCkKIHsKICAgYm9vbCBtYXRjaCA9IEZBTFNFOwogCkBAIC0yOTUsMTIgKzMyMywyNyBAQAogICBNYWtlX1JlZ3VsYXJFeHByZXNzaW9uX1R5cGUsCiAgIENvcHlfUmVndWxhckV4cHJlc3Npb25fVHlwZSwKICAgRnJlZV9SZWd1bGFyRXhwcmVzc2lvbl9UeXBlLAotICBDaGVja19SZWd1bGFyRXhwcmVzc2lvbl9GaWVsZCwKLSAgTlVMTCwKLSAgTlVMTCwKLSAgTlVMTAorICBJTklUX0ZUX0ZVTkMoQ2hlY2tfUmVndWxhckV4cHJlc3Npb25fRmllbGQpLAorICBJTklUX0ZUX0ZVTkMoTlVMTCksCisgIElOSVRfRlRfRlVOQyhOVUxMKSwKKyAgSU5JVF9GVF9GVU5DKE5VTEwpLAorI2lmIE5DVVJTRVNfSU5URVJPUF9GVU5DUworICBHZW5lcmljX1JlZ3VsYXJFeHByZXNzaW9uX1R5cGUKKyNlbmRpZgogfTsKIAogTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSopIFRZUEVfUkVHRVhQID0gJnR5cGVSRUdFWFA7CiAKKyNpZiBOQ1VSU0VTX0lOVEVST1BfRlVOQ1MKKy8qIFRoZSBuZXh0IHJvdXRpbmVzIGFyZSB0byBzaW1wbGlmeSB0aGUgdXNlIG9mIG5jdXJzZXMgZnJvbQorICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHdpdGggcmVzdGljdGlvbnMgb24gaW50ZXJvcCB3aXRoIEMgbGV2ZWwKKyAgIGNvbnN0cnVjdHMgKGUuZy4gdmFyaWFibGUgYWNjZXNzIG9yIHZhX2xpc3QgKyBlbGxpcHNpcyBjb25zdHJ1Y3RzKQorKi8KK05DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKQorX25jX1RZUEVfUkVHRVhQKHZvaWQpCit7CisgIHJldHVybiBUWVBFX1JFR0VYUDsKK30KKyNlbmRpZgorCiAvKiBmdHlfcmVnZXguYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL2Zvcm0vbGxpYi1sZm9ybSBiL2Zvcm0vbGxpYi1sZm9ybQppbmRleCBiZDdjM2E0Li40MzcxZDU0IDEwMDY0NAotLS0gYS9mb3JtL2xsaWItbGZvcm0KKysrIGIvZm9ybS9sbGliLWxmb3JtCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTMgKzI3LDEzIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMTk5NiwxOTk3LDIwMDIsMjAwNSAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBMSU5UTElCUkFSWSAqLwogCiAvKiAuL2ZfdHJhY2UuYyAqLwogCi0jaW5jbHVkZSAiZm9ybS5wcml2LmgiCisjaW5jbHVkZSA8Zm9ybS5wcml2Lmg+CiAKICN1bmRlZiBfbmNfcmV0cmFjZV9maWVsZF9wdHIKIEZJRUxECSoqX25jX3JldHJhY2VfZmllbGRfcHRyKApAQCAtMjY0LDcgKzI2NCw3IEBACiAvKiAuL2ZsZF9uZXdmdHlwLmMgKi8KIAogI3VuZGVmIF9uY19EZWZhdWx0X0ZpZWxkVHlwZQotY29uc3QgRklFTERUWVBFICpfbmNfRGVmYXVsdF9GaWVsZFR5cGUgPSB7MH07CitGSUVMRFRZUEUgKl9uY19EZWZhdWx0X0ZpZWxkVHlwZTsKIAogI3VuZGVmIG5ld19maWVsZHR5cGUKIEZJRUxEVFlQRSAqbmV3X2ZpZWxkdHlwZSgKQEAgLTM5Niw2ICszOTYsMTIgQEAKICN1bmRlZiBfbmNfRGVmYXVsdF9Gb3JtCiBGT1JNCSpfbmNfRGVmYXVsdF9Gb3JtOwogCisjdW5kZWYgbmV3X2Zvcm1fc3AKK0ZPUk0JKm5ld19mb3JtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJRklFTEQJKipmaWVsZHMpCisJCXsgcmV0dXJuKCooRk9STSAqKikwKTsgfQorCiAjdW5kZWYgbmV3X2Zvcm0KIEZPUk0JKm5ld19mb3JtKAogCQlGSUVMRAkqKmZpZWxkcykKQEAgLTQyNCw2ICs0MzAsMTMgQEAKIAogLyogLi9mcm1fZHJpdmVyLmMgKi8KIAorI3VuZGVmIF9uY19nZXRfZmllbGRidWZmZXIKK3ZvaWQJX25jX2dldF9maWVsZGJ1ZmZlcigKKwkJRk9STQkqZm9ybSwgCisJCUZJRUxECSpmaWVsZCwgCisJCWNoYXIJKmJ1ZikKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvcgogaW50CV9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvcigKIAkJRk9STQkqZm9ybSkKQEAgLTY2MSw2ICs2NzQsMTAgQEAKICN1bmRlZiBUWVBFX0FMTlVNCiBGSUVMRFRZUEUgKlRZUEVfQUxOVU07CiAKKyN1bmRlZiBfbmNfVFlQRV9BTE5VTQorRklFTERUWVBFICpfbmNfVFlQRV9BTE5VTSh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCiAvKiAuL2Z0eV9hbHBoYS5jICovCiAKIHR5cGVkZWYgc3RydWN0CkBAIC02NzIsNiArNjg5LDEwIEBACiAjdW5kZWYgVFlQRV9BTFBIQQogRklFTERUWVBFICpUWVBFX0FMUEhBOwogCisjdW5kZWYgX25jX1RZUEVfQUxQSEEKK0ZJRUxEVFlQRSAqX25jX1RZUEVfQUxQSEEodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKwogLyogLi9mdHlfZW51bS5jICovCiAKIHR5cGVkZWYgc3RydWN0CkBAIC02ODMsOSArNzA0LDYxIEBACiAgIH0KIGVudW1BUkc7CiAKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICBjaGFyICoqa3dkczsKKyAgICBpbnQgY2Nhc2U7CisgICAgaW50IGN1bmlxdWU7CisgIH0KK2VudW1QYXJhbXM7CisKICN1bmRlZiBUWVBFX0VOVU0KIEZJRUxEVFlQRSAqVFlQRV9FTlVNOwogCisjdW5kZWYgX25jX1RZUEVfRU5VTQorRklFTERUWVBFICpfbmNfVFlQRV9FTlVNKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X2dlbmVyaWMuYyAqLworCisjdW5kZWYgX25jX2dlbmVyaWNfZmllbGR0eXBlCitGSUVMRFRZUEUgKl9uY19nZW5lcmljX2ZpZWxkdHlwZSgKKwkJTkNVUlNFU19CT09MICgqY29uc3QgZmllbGRfY2hlY2spKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGNoYXJfY2hlY2spKAorCQlpbnQJcDEsIAorCQlGT1JNCSpwMiwgCisJCUZJRUxECSpwMywgCisJCWNvbnN0IHZvaWQgKnA0KSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IG5leHQpKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IHByZXYpKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCXZvaWQJKCpmcmVlY2FsbGJhY2spKAorCQl2b2lkCSpwMSkpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0X2dlbmVyaWNfZmllbGR0eXBlCitpbnQJX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZSgKKwkJRklFTEQJKmZpZWxkLCAKKwkJRklFTERUWVBFICpmdHlwLCAKKwkJaW50CSgqYXJnaXRlcmF0b3IpKAorCQl2b2lkCSoqcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfZm9ybV9jdXJzb3IKK1dJTkRPVwkqX25jX2Zvcm1fY3Vyc29yKAorCQljb25zdCBGT1JNICpmb3JtLCAKKwkJaW50CSpwUm93LCAKKwkJaW50CSpwQ29sKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCiAvKiAuL2Z0eV9pbnQuYyAqLwogCiB0eXBlZGVmIHN0cnVjdApAQCAtNjk2LDEzICs3NjksMzAgQEAKICAgfQogaW50ZWdlckFSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgbG9uZyBsb3c7CisgICAgbG9uZyBoaWdoOworICB9CitpbnRlZ2VyUEFSTTsKKwogI3VuZGVmIFRZUEVfSU5URUdFUgogRklFTERUWVBFICpUWVBFX0lOVEVHRVI7CiAKKyN1bmRlZiBfbmNfVFlQRV9JTlRFR0VSCitGSUVMRFRZUEUgKl9uY19UWVBFX0lOVEVHRVIodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKwogLyogLi9mdHlfaXB2NC5jICovCisKICN1bmRlZiBUWVBFX0lQVjQKIEZJRUxEVFlQRSAqVFlQRV9JUFY0OwogCisjdW5kZWYgX25jX1RZUEVfSVBWNAorRklFTERUWVBFICpfbmNfVFlQRV9JUFY0KHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKIC8qIC4vZnR5X251bS5jICovCiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KQEAgLTcxNiw5ICs4MDYsMjEgQEAKICAgfQogbnVtZXJpY0FSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgZG91YmxlIGxvdzsKKyAgICBkb3VibGUgaGlnaDsKKyAgfQordGhpc1BBUk07CisKICN1bmRlZiBUWVBFX05VTUVSSUMKIEZJRUxEVFlQRSAqVFlQRV9OVU1FUklDOwogCisjdW5kZWYgX25jX1RZUEVfTlVNRVJJQworRklFTERUWVBFICpfbmNfVFlQRV9OVU1FUklDKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKIC8qIC4vZnR5X3JlZ2V4LmMgKi8KIAogI2luY2x1ZGUgPHJlZ2V4Lmg+CkBAIC03MzIsMyArODM0LDcgQEAKIAogI3VuZGVmIFRZUEVfUkVHRVhQCiBGSUVMRFRZUEUgKlRZUEVfUkVHRVhQOworCisjdW5kZWYgX25jX1RZUEVfUkVHRVhQCitGSUVMRFRZUEUgKl9uY19UWVBFX1JFR0VYUCh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQpkaWZmIC0tZ2l0IGEvZm9ybS9sbGliLWxmb3JtdCBiL2Zvcm0vbGxpYi1sZm9ybXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3YTRhNwotLS0gL2Rldi9udWxsCisrKyBiL2Zvcm0vbGxpYi1sZm9ybXQKQEAgLTAsMCArMSw4NDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDIwMTAtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMSU5UTElCUkFSWSAqLworCisvKiAuL2ZfdHJhY2UuYyAqLworCisjaW5jbHVkZSA8Zm9ybS5wcml2Lmg+CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9maWVsZF9wdHIKK0ZJRUxECSoqX25jX3JldHJhY2VfZmllbGRfcHRyKAorCQlGSUVMRAkqKmNvZGUpCisJCXsgcmV0dXJuKCooRklFTEQgKioqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9maWVsZAorRklFTEQJKl9uY19yZXRyYWNlX2ZpZWxkKAorCQlGSUVMRAkqY29kZSkKKwkJeyByZXR1cm4oKihGSUVMRCAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfZmllbGRfdHlwZQorRklFTERUWVBFICpfbmNfcmV0cmFjZV9maWVsZF90eXBlKAorCQlGSUVMRFRZUEUgKmNvZGUpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9mb3JtCitGT1JNCSpfbmNfcmV0cmFjZV9mb3JtKAorCQlGT1JNCSpjb2RlKQorCQl7IHJldHVybigqKEZPUk0gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2Zvcm1faG9vaworRm9ybV9Ib29rIF9uY19yZXRyYWNlX2Zvcm1faG9vaygKKwkJRm9ybV9Ib29rIGNvZGUpCisJCXsgcmV0dXJuKCooRm9ybV9Ib29rICopMCk7IH0KKworLyogLi9mbGRfYXJnLmMgKi8KKworI3VuZGVmIHNldF9maWVsZHR5cGVfYXJnCitpbnQJc2V0X2ZpZWxkdHlwZV9hcmcoCisJCUZJRUxEVFlQRSAqdHlwLCAKKwkJdm9pZAkqKCpjb25zdCBtYWtlX2FyZykoCisJCXZhX2xpc3QJKnAxKSwgCisJCXZvaWQJKigqY29uc3QgY29weV9hcmcpKAorCQljb25zdCB2b2lkICpwMSksIAorCQl2b2lkCSgqY29uc3QgZnJlZV9hcmcpKAorCQl2b2lkCSpwMSkpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2FyZwordm9pZAkqZmllbGRfYXJnKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisvKiAuL2ZsZF9hdHRyLmMgKi8KKworI3VuZGVmIHNldF9maWVsZF9mb3JlCitpbnQJc2V0X2ZpZWxkX2ZvcmUoCisJCUZJRUxECSpmaWVsZCwgCisJCWNodHlwZQlhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9mb3JlCitjaHR5cGUJZmllbGRfZm9yZSgKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKyN1bmRlZiBzZXRfZmllbGRfYmFjaworaW50CXNldF9maWVsZF9iYWNrKAorCQlGSUVMRAkqZmllbGQsIAorCQljaHR5cGUJYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfYmFjaworY2h0eXBlCWZpZWxkX2JhY2soCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisvKiAuL2ZsZF9jdXJyZW50LmMgKi8KKworI3VuZGVmIHNldF9jdXJyZW50X2ZpZWxkCitpbnQJc2V0X2N1cnJlbnRfZmllbGQoCisJCUZPUk0JKmZvcm0sIAorCQlGSUVMRAkqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGN1cnJlbnRfZmllbGQKK0ZJRUxECSpjdXJyZW50X2ZpZWxkKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKEZJRUxEICoqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9pbmRleAoraW50CWZpZWxkX2luZGV4KAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfZGVmLmMgKi8KKworI3VuZGVmIF9uY19EZWZhdWx0X0ZpZWxkCitGSUVMRAkqX25jX0RlZmF1bHRfRmllbGQ7CisKKyN1bmRlZiBfbmNfTWFrZV9Bcmd1bWVudAorVHlwZUFyZ3VtZW50ICpfbmNfTWFrZV9Bcmd1bWVudCgKKwkJY29uc3QgRklFTERUWVBFICp0eXAsIAorCQl2YV9saXN0CSphcCwgCisJCWludAkqZXJyKQorCQl7IHJldHVybigqKFR5cGVBcmd1bWVudCAqKikwKTsgfQorCisjdW5kZWYgX25jX0NvcHlfQXJndW1lbnQKK1R5cGVBcmd1bWVudCAqX25jX0NvcHlfQXJndW1lbnQoCisJCWNvbnN0IEZJRUxEVFlQRSAqdHlwLCAKKwkJY29uc3QgVHlwZUFyZ3VtZW50ICphcmdwLCAKKwkJaW50CSplcnIpCisJCXsgcmV0dXJuKCooVHlwZUFyZ3VtZW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfRnJlZV9Bcmd1bWVudAordm9pZAlfbmNfRnJlZV9Bcmd1bWVudCgKKwkJY29uc3QgRklFTERUWVBFICp0eXAsIAorCQlUeXBlQXJndW1lbnQgKmFyZ3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfQ29weV9UeXBlCitOQ1VSU0VTX0JPT0wgX25jX0NvcHlfVHlwZSgKKwkJRklFTEQJKmRzdCwgCisJCUZJRUxEIGNvbnN0ICpzcmMpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19GcmVlX1R5cGUKK3ZvaWQJX25jX0ZyZWVfVHlwZSgKKwkJRklFTEQJKmZpZWxkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbmV3X2ZpZWxkCitGSUVMRAkqbmV3X2ZpZWxkKAorCQlpbnQJcm93cywgCisJCWludAljb2xzLCAKKwkJaW50CWZyb3csIAorCQlpbnQJZmNvbCwgCisJCWludAlucm93LCAKKwkJaW50CW5idWYpCisJCXsgcmV0dXJuKCooRklFTEQgKiopMCk7IH0KKworI3VuZGVmIGZyZWVfZmllbGQKK2ludAlmcmVlX2ZpZWxkKAorCQlGSUVMRAkqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfZHVwLmMgKi8KKworI3VuZGVmIGR1cF9maWVsZAorRklFTEQJKmR1cF9maWVsZCgKKwkJRklFTEQJKmZpZWxkLCAKKwkJaW50CWZyb3csIAorCQlpbnQJZmNvbCkKKwkJeyByZXR1cm4oKihGSUVMRCAqKikwKTsgfQorCisvKiAuL2ZsZF9mdGNob2ljZS5jICovCisKKyN1bmRlZiBzZXRfZmllbGR0eXBlX2Nob2ljZQoraW50CXNldF9maWVsZHR5cGVfY2hvaWNlKAorCQlGSUVMRFRZUEUgKnR5cCwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IG5leHRfY2hvaWNlKSgKKwkJRklFTEQJKnAxLCAKKwkJY29uc3Qgdm9pZCAqcDIpLCAKKwkJTkNVUlNFU19CT09MICgqY29uc3QgcHJldl9jaG9pY2UpKAorCQlGSUVMRAkqcDEsIAorCQljb25zdCB2b2lkICpwMikpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfZnRsaW5rLmMgKi8KKworI3VuZGVmIGxpbmtfZmllbGR0eXBlCitGSUVMRFRZUEUgKmxpbmtfZmllbGR0eXBlKAorCQlGSUVMRFRZUEUgKnR5cGUxLCAKKwkJRklFTERUWVBFICp0eXBlMikKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mbGRfaW5mby5jICovCisKKyN1bmRlZiBmaWVsZF9pbmZvCitpbnQJZmllbGRfaW5mbygKKwkJY29uc3QgRklFTEQgKmZpZWxkLCAKKwkJaW50CSpyb3dzLCAKKwkJaW50CSpjb2xzLCAKKwkJaW50CSpmcm93LCAKKwkJaW50CSpmY29sLCAKKwkJaW50CSpucm93LCAKKwkJaW50CSpuYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkeW5hbWljX2ZpZWxkX2luZm8KK2ludAlkeW5hbWljX2ZpZWxkX2luZm8oCisJCWNvbnN0IEZJRUxEICpmaWVsZCwgCisJCWludAkqZHJvd3MsIAorCQlpbnQJKmRjb2xzLCAKKwkJaW50CSptYXhncm93KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vZmxkX2p1c3QuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX2p1c3QKK2ludAlzZXRfZmllbGRfanVzdCgKKwkJRklFTEQJKmZpZWxkLCAKKwkJaW50CWp1c3QpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2p1c3QKK2ludAlmaWVsZF9qdXN0KAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfbGluay5jICovCisKKyN1bmRlZiBsaW5rX2ZpZWxkCitGSUVMRAkqbGlua19maWVsZCgKKwkJRklFTEQJKmZpZWxkLCAKKwkJaW50CWZyb3csIAorCQlpbnQJZmNvbCkKKwkJeyByZXR1cm4oKihGSUVMRCAqKikwKTsgfQorCisvKiAuL2ZsZF9tYXguYyAqLworCisjdW5kZWYgc2V0X21heF9maWVsZAoraW50CXNldF9tYXhfZmllbGQoCisJCUZJRUxECSpmaWVsZCwgCisJCWludAltYXhncm93KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vZmxkX21vdmUuYyAqLworCisjdW5kZWYgbW92ZV9maWVsZAoraW50CW1vdmVfZmllbGQoCisJCUZJRUxECSpmaWVsZCwgCisJCWludAlmcm93LCAKKwkJaW50CWZjb2wpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfbmV3ZnR5cC5jICovCisKKyN1bmRlZiBfbmNfRGVmYXVsdF9GaWVsZFR5cGUKK0ZJRUxEVFlQRSAqX25jX0RlZmF1bHRfRmllbGRUeXBlOworCisjdW5kZWYgbmV3X2ZpZWxkdHlwZQorRklFTERUWVBFICpuZXdfZmllbGR0eXBlKAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBmaWVsZF9jaGVjaykoCisJCUZJRUxECSpwMSwgCisJCWNvbnN0IHZvaWQgKnAyKSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGNoYXJfY2hlY2spKAorCQlpbnQJcDEsIAorCQljb25zdCB2b2lkICpwMikpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKyN1bmRlZiBmcmVlX2ZpZWxkdHlwZQoraW50CWZyZWVfZmllbGR0eXBlKAorCQlGSUVMRFRZUEUgKnR5cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9vcHRzLmMgKi8KKworI3VuZGVmIHNldF9maWVsZF9vcHRzCitpbnQJc2V0X2ZpZWxkX29wdHMoCisJCUZJRUxECSpmaWVsZCwgCisJCUZpZWxkX09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfb3B0cworRmllbGRfT3B0aW9ucyBmaWVsZF9vcHRzKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooRmllbGRfT3B0aW9ucyAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9vcHRzX29uCitpbnQJZmllbGRfb3B0c19vbigKKwkJRklFTEQJKmZpZWxkLCAKKwkJRmllbGRfT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9vcHRzX29mZgoraW50CWZpZWxkX29wdHNfb2ZmKAorCQlGSUVMRAkqZmllbGQsIAorCQlGaWVsZF9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfcGFkLmMgKi8KKworI3VuZGVmIHNldF9maWVsZF9wYWQKK2ludAlzZXRfZmllbGRfcGFkKAorCQlGSUVMRAkqZmllbGQsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3BhZAoraW50CWZpZWxkX3BhZCgKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vZmxkX3BhZ2UuYyAqLworCisjdW5kZWYgc2V0X25ld19wYWdlCitpbnQJc2V0X25ld19wYWdlKAorCQlGSUVMRAkqZmllbGQsIAorCQlOQ1VSU0VTX0JPT0wgbmV3X3BhZ2VfZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbmV3X3BhZ2UKK05DVVJTRVNfQk9PTCBuZXdfcGFnZSgKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vZmxkX3N0YXQuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX3N0YXR1cworaW50CXNldF9maWVsZF9zdGF0dXMoCisJCUZJRUxECSpmaWVsZCwgCisJCU5DVVJTRVNfQk9PTCBzdGF0dXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3N0YXR1cworTkNVUlNFU19CT09MIGZpZWxkX3N0YXR1cygKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vZmxkX3R5cGUuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX3R5cGUKK2ludAlzZXRfZmllbGRfdHlwZSgKKwkJRklFTEQJKmZpZWxkLCAKKwkJRklFTERUWVBFICp0eXBlLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF90eXBlCitGSUVMRFRZUEUgKmZpZWxkX3R5cGUoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mbGRfdXNlci5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfdXNlcnB0cgoraW50CXNldF9maWVsZF91c2VycHRyKAorCQlGSUVMRAkqZmllbGQsIAorCQl2b2lkCSp1c3JwdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3VzZXJwdHIKK3ZvaWQJKmZpZWxkX3VzZXJwdHIoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vZnJtX2N1cnNvci5jICovCisKKyN1bmRlZiBwb3NfZm9ybV9jdXJzb3IKK2ludAlwb3NfZm9ybV9jdXJzb3IoCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fZGF0YS5jICovCisKKyN1bmRlZiBkYXRhX2JlaGluZAorTkNVUlNFU19CT09MIGRhdGFfYmVoaW5kKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBkYXRhX2FoZWFkCitOQ1VSU0VTX0JPT0wgZGF0YV9haGVhZCgKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL2ZybV9kZWYuYyAqLworCisjdW5kZWYgX25jX0RlZmF1bHRfRm9ybQorRk9STQkqX25jX0RlZmF1bHRfRm9ybTsKKworI3VuZGVmIG5ld19mb3JtX3NwCitGT1JNCSpuZXdfZm9ybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJRUxECSoqZmllbGRzKQorCQl7IHJldHVybigqKEZPUk0gKiopMCk7IH0KKworI3VuZGVmIG5ld19mb3JtCitGT1JNCSpuZXdfZm9ybSgKKwkJRklFTEQJKipmaWVsZHMpCisJCXsgcmV0dXJuKCooRk9STSAqKikwKTsgfQorCisjdW5kZWYgZnJlZV9mb3JtCitpbnQJZnJlZV9mb3JtKAorCQlGT1JNCSpmb3JtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzZXRfZm9ybV9maWVsZHMKK2ludAlzZXRfZm9ybV9maWVsZHMoCisJCUZPUk0JKmZvcm0sIAorCQlGSUVMRAkqKmZpZWxkcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZm9ybV9maWVsZHMKK0ZJRUxECSoqZm9ybV9maWVsZHMoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooRklFTEQgKioqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9jb3VudAoraW50CWZpZWxkX2NvdW50KAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vZnJtX2RyaXZlci5jICovCisKKyN1bmRlZiBfbmNfZ2V0X2ZpZWxkYnVmZmVyCit2b2lkCV9uY19nZXRfZmllbGRidWZmZXIoCisJCUZPUk0JKmZvcm0sIAorCQlGSUVMRAkqZmllbGQsIAorCQljaGFyCSpidWYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfUG9zaXRpb25fRm9ybV9DdXJzb3IKK2ludAlfbmNfUG9zaXRpb25fRm9ybV9DdXJzb3IoCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19SZWZyZXNoX0N1cnJlbnRfRmllbGQKK2ludAlfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkKAorCQlGT1JNCSpmb3JtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfU3luY2hyb25pemVfQXR0cmlidXRlcworaW50CV9uY19TeW5jaHJvbml6ZV9BdHRyaWJ1dGVzKAorCQlGSUVMRAkqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19TeW5jaHJvbml6ZV9PcHRpb25zCitpbnQJX25jX1N5bmNocm9uaXplX09wdGlvbnMoCisJCUZJRUxECSpmaWVsZCwgCisJCUZpZWxkX09wdGlvbnMgbmV3b3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX1NldF9DdXJyZW50X0ZpZWxkCitpbnQJX25jX1NldF9DdXJyZW50X0ZpZWxkKAorCQlGT1JNCSpmb3JtLCAKKwkJRklFTEQJKm5ld2ZpZWxkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfSW50ZXJuYWxfVmFsaWRhdGlvbgorTkNVUlNFU19CT09MIF9uY19JbnRlcm5hbF9WYWxpZGF0aW9uKAorCQlGT1JNCSpmb3JtKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfRmlyc3RfQWN0aXZlX0ZpZWxkCitGSUVMRAkqX25jX0ZpcnN0X0FjdGl2ZV9GaWVsZCgKKwkJRk9STQkqZm9ybSkKKwkJeyByZXR1cm4oKihGSUVMRCAqKikwKTsgfQorCisjdW5kZWYgX25jX1NldF9Gb3JtX1BhZ2UKK2ludAlfbmNfU2V0X0Zvcm1fUGFnZSgKKwkJRk9STQkqZm9ybSwgCisJCWludAlwYWdlLCAKKwkJRklFTEQJKmZpZWxkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGludCBrZXljb2RlOyAKKyAgaW50ICgqY21kKSAoRk9STSAqKTsgCit9CitCaW5kaW5nX0luZm87CisKKyN1bmRlZiBmb3JtX2RyaXZlcgoraW50CWZvcm1fZHJpdmVyKAorCQlGT1JNCSpmb3JtLCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNldF9maWVsZF9idWZmZXIKK2ludAlzZXRfZmllbGRfYnVmZmVyKAorCQlGSUVMRAkqZmllbGQsIAorCQlpbnQJYnVmZmVyLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2J1ZmZlcgorY2hhcgkqZmllbGRfYnVmZmVyKAorCQljb25zdCBGSUVMRCAqZmllbGQsIAorCQlpbnQJYnVmZmVyKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9mcm1faG9vay5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfaW5pdAoraW50CXNldF9maWVsZF9pbml0KAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2luaXQKK0Zvcm1fSG9vayBmaWVsZF9pbml0KAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKEZvcm1fSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfZmllbGRfdGVybQoraW50CXNldF9maWVsZF90ZXJtKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3Rlcm0KK0Zvcm1fSG9vayBmaWVsZF90ZXJtKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKEZvcm1fSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfZm9ybV9pbml0CitpbnQJc2V0X2Zvcm1faW5pdCgKKwkJRk9STQkqZm9ybSwgCisJCUZvcm1fSG9vayBmdW5jKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX2luaXQKK0Zvcm1fSG9vayBmb3JtX2luaXQoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooRm9ybV9Ib29rICopMCk7IH0KKworI3VuZGVmIHNldF9mb3JtX3Rlcm0KK2ludAlzZXRfZm9ybV90ZXJtKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fdGVybQorRm9ybV9Ib29rIGZvcm1fdGVybSgKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihGb3JtX0hvb2sgKikwKTsgfQorCisvKiAuL2ZybV9vcHRzLmMgKi8KKworI3VuZGVmIHNldF9mb3JtX29wdHMKK2ludAlzZXRfZm9ybV9vcHRzKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fb3B0cworRm9ybV9PcHRpb25zIGZvcm1fb3B0cygKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihGb3JtX09wdGlvbnMgKikwKTsgfQorCisjdW5kZWYgZm9ybV9vcHRzX29uCitpbnQJZm9ybV9vcHRzX29uKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fb3B0c19vZmYKK2ludAlmb3JtX29wdHNfb2ZmKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcGFnZS5jICovCisKKyN1bmRlZiBzZXRfZm9ybV9wYWdlCitpbnQJc2V0X2Zvcm1fcGFnZSgKKwkJRk9STQkqZm9ybSwgCisJCWludAlwYWdlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX3BhZ2UKK2ludAlmb3JtX3BhZ2UoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcG9zdC5jICovCisKKyN1bmRlZiBwb3N0X2Zvcm0KK2ludAlwb3N0X2Zvcm0oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHVucG9zdF9mb3JtCitpbnQJdW5wb3N0X2Zvcm0oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcmVxX25hbWUuYyAqLworCisjdW5kZWYgZm9ybV9yZXF1ZXN0X25hbWUKK2NvbnN0IGNoYXIgKmZvcm1fcmVxdWVzdF9uYW1lKAorCQlpbnQJcmVxdWVzdCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBmb3JtX3JlcXVlc3RfYnlfbmFtZQoraW50CWZvcm1fcmVxdWVzdF9ieV9uYW1lKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fc2NhbGUuYyAqLworCisjdW5kZWYgc2NhbGVfZm9ybQoraW50CXNjYWxlX2Zvcm0oCisJCWNvbnN0IEZPUk0gKmZvcm0sIAorCQlpbnQJKnJvd3MsIAorCQlpbnQJKmNvbHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fc3ViLmMgKi8KKworI3VuZGVmIHNldF9mb3JtX3N1YgoraW50CXNldF9mb3JtX3N1YigKKwkJRk9STQkqZm9ybSwgCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX3N1YgorV0lORE9XCSpmb3JtX3N1YigKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi9mcm1fdXNlci5jICovCisKKyN1bmRlZiBzZXRfZm9ybV91c2VycHRyCitpbnQJc2V0X2Zvcm1fdXNlcnB0cigKKwkJRk9STQkqZm9ybSwgCisJCXZvaWQJKnVzcnB0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZm9ybV91c2VycHRyCit2b2lkCSpmb3JtX3VzZXJwdHIoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisvKiAuL2ZybV93aW4uYyAqLworCisjdW5kZWYgc2V0X2Zvcm1fd2luCitpbnQJc2V0X2Zvcm1fd2luKAorCQlGT1JNCSpmb3JtLCAKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fd2luCitXSU5ET1cJKmZvcm1fd2luKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisvKiAuL2Z0eV9hbG51bS5jICovCisKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICBpbnQgd2lkdGg7CisgIH0KK2FsbnVtQVJHOworCisjdW5kZWYgVFlQRV9BTE5VTQorRklFTERUWVBFICpUWVBFX0FMTlVNOworCisjdW5kZWYgX25jX1RZUEVfQUxOVU0KK0ZJRUxEVFlQRSAqX25jX1RZUEVfQUxOVU0odm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mdHlfYWxwaGEuYyAqLworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHdpZHRoOworICB9CithbHBoYUFSRzsKKworI3VuZGVmIFRZUEVfQUxQSEEKK0ZJRUxEVFlQRSAqVFlQRV9BTFBIQTsKKworI3VuZGVmIF9uY19UWVBFX0FMUEhBCitGSUVMRFRZUEUgKl9uY19UWVBFX0FMUEhBKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X2VudW0uYyAqLworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgY2hhciAqKmt3ZHM7CisgICAgaW50IGNvdW50OworICAgIE5DVVJTRVNfQk9PTCBjaGVja2Nhc2U7CisgICAgTkNVUlNFU19CT09MIGNoZWNrdW5pcXVlOworICB9CitlbnVtQVJHOworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgY2hhciAqKmt3ZHM7CisgICAgaW50IGNjYXNlOworICAgIGludCBjdW5pcXVlOworICB9CitlbnVtUGFyYW1zOworCisjdW5kZWYgVFlQRV9FTlVNCitGSUVMRFRZUEUgKlRZUEVfRU5VTTsKKworI3VuZGVmIF9uY19UWVBFX0VOVU0KK0ZJRUxEVFlQRSAqX25jX1RZUEVfRU5VTSh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2Z0eV9nZW5lcmljLmMgKi8KKworI3VuZGVmIF9uY19nZW5lcmljX2ZpZWxkdHlwZQorRklFTERUWVBFICpfbmNfZ2VuZXJpY19maWVsZHR5cGUoCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGZpZWxkX2NoZWNrKSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBjaGFyX2NoZWNrKSgKKwkJaW50CXAxLCAKKwkJRk9STQkqcDIsIAorCQlGSUVMRAkqcDMsIAorCQljb25zdCB2b2lkICpwNCksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBuZXh0KSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBwcmV2KSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQl2b2lkCSgqZnJlZWNhbGxiYWNrKSgKKwkJdm9pZAkqcDEpKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisjdW5kZWYgX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZQoraW50CV9uY19zZXRfZ2VuZXJpY19maWVsZHR5cGUoCisJCUZJRUxECSpmaWVsZCwgCisJCUZJRUxEVFlQRSAqZnR5cCwgCisJCWludAkoKmFyZ2l0ZXJhdG9yKSgKKwkJdm9pZAkqKnAxKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2Zvcm1fY3Vyc29yCitXSU5ET1cJKl9uY19mb3JtX2N1cnNvcigKKwkJY29uc3QgRk9STSAqZm9ybSwgCisJCWludAkqcFJvdywgCisJCWludAkqcENvbCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi9mdHlfaW50LmMgKi8KKwordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgbG9uZyBsb3c7CisgICAgbG9uZyBoaWdoOworICB9CitpbnRlZ2VyQVJHOworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHByZWNpc2lvbjsKKyAgICBsb25nIGxvdzsKKyAgICBsb25nIGhpZ2g7CisgIH0KK2ludGVnZXJQQVJNOworCisjdW5kZWYgVFlQRV9JTlRFR0VSCitGSUVMRFRZUEUgKlRZUEVfSU5URUdFUjsKKworI3VuZGVmIF9uY19UWVBFX0lOVEVHRVIKK0ZJRUxEVFlQRSAqX25jX1RZUEVfSU5URUdFUih2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2Z0eV9pcHY0LmMgKi8KKworI3VuZGVmIFRZUEVfSVBWNAorRklFTERUWVBFICpUWVBFX0lQVjQ7CisKKyN1bmRlZiBfbmNfVFlQRV9JUFY0CitGSUVMRFRZUEUgKl9uY19UWVBFX0lQVjQodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mdHlfbnVtLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHByZWNpc2lvbjsKKyAgICBkb3VibGUgbG93OworICAgIGRvdWJsZSBoaWdoOworICAgIHN0cnVjdCBsY29udiAqTDsKKyAgfQorbnVtZXJpY0FSRzsKKwordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgZG91YmxlIGxvdzsKKyAgICBkb3VibGUgaGlnaDsKKyAgfQordGhpc1BBUk07CisKKyN1bmRlZiBUWVBFX05VTUVSSUMKK0ZJRUxEVFlQRSAqVFlQRV9OVU1FUklDOworCisjdW5kZWYgX25jX1RZUEVfTlVNRVJJQworRklFTERUWVBFICpfbmNfVFlQRV9OVU1FUklDKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X3JlZ2V4LmMgKi8KKworI2luY2x1ZGUgPHJlZ2V4Lmg+CisKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICByZWdleF90ICpwUmVnRXhwOworICAgIHVuc2lnbmVkIGxvbmcgKnJlZkNvdW50OworICB9CitSZWdFeHBfQXJnOworCisjdW5kZWYgVFlQRV9SRUdFWFAKK0ZJRUxEVFlQRSAqVFlQRV9SRUdFWFA7CisKKyN1bmRlZiBfbmNfVFlQRV9SRUdFWFAKK0ZJRUxEVFlQRSAqX25jX1RZUEVfUkVHRVhQKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CmRpZmYgLS1naXQgYS9mb3JtL2xsaWItbGZvcm10dyBiL2Zvcm0vbGxpYi1sZm9ybXR3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhODY4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9mb3JtL2xsaWItbGZvcm10dwpAQCAtMCwwICsxLDg1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMC1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vZl90cmFjZS5jICovCisKKyNpbmNsdWRlIDxmb3JtLnByaXYuaD4KKworI3VuZGVmIF9uY19yZXRyYWNlX2ZpZWxkX3B0cgorRklFTEQJKipfbmNfcmV0cmFjZV9maWVsZF9wdHIoCisJCUZJRUxECSoqY29kZSkKKwkJeyByZXR1cm4oKihGSUVMRCAqKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2ZpZWxkCitGSUVMRAkqX25jX3JldHJhY2VfZmllbGQoCisJCUZJRUxECSpjb2RlKQorCQl7IHJldHVybigqKEZJRUxEICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9maWVsZF90eXBlCitGSUVMRFRZUEUgKl9uY19yZXRyYWNlX2ZpZWxkX3R5cGUoCisJCUZJRUxEVFlQRSAqY29kZSkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2Zvcm0KK0ZPUk0JKl9uY19yZXRyYWNlX2Zvcm0oCisJCUZPUk0JKmNvZGUpCisJCXsgcmV0dXJuKCooRk9STSAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfZm9ybV9ob29rCitGb3JtX0hvb2sgX25jX3JldHJhY2VfZm9ybV9ob29rKAorCQlGb3JtX0hvb2sgY29kZSkKKwkJeyByZXR1cm4oKihGb3JtX0hvb2sgKikwKTsgfQorCisvKiAuL2ZsZF9hcmcuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkdHlwZV9hcmcKK2ludAlzZXRfZmllbGR0eXBlX2FyZygKKwkJRklFTERUWVBFICp0eXAsIAorCQl2b2lkCSooKmNvbnN0IG1ha2VfYXJnKSgKKwkJdmFfbGlzdAkqcDEpLCAKKwkJdm9pZAkqKCpjb25zdCBjb3B5X2FyZykoCisJCWNvbnN0IHZvaWQgKnAxKSwgCisJCXZvaWQJKCpjb25zdCBmcmVlX2FyZykoCisJCXZvaWQJKnAxKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfYXJnCit2b2lkCSpmaWVsZF9hcmcoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vZmxkX2F0dHIuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX2ZvcmUKK2ludAlzZXRfZmllbGRfZm9yZSgKKwkJRklFTEQJKmZpZWxkLCAKKwkJY2h0eXBlCWF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2ZvcmUKK2NodHlwZQlmaWVsZF9mb3JlKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworI3VuZGVmIHNldF9maWVsZF9iYWNrCitpbnQJc2V0X2ZpZWxkX2JhY2soCisJCUZJRUxECSpmaWVsZCwgCisJCWNodHlwZQlhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9iYWNrCitjaHR5cGUJZmllbGRfYmFjaygKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKy8qIC4vZmxkX2N1cnJlbnQuYyAqLworCisjdW5kZWYgc2V0X2N1cnJlbnRfZmllbGQKK2ludAlzZXRfY3VycmVudF9maWVsZCgKKwkJRk9STQkqZm9ybSwgCisJCUZJRUxECSpmaWVsZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3VycmVudF9maWVsZAorRklFTEQJKmN1cnJlbnRfZmllbGQoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooRklFTEQgKiopMCk7IH0KKworI3VuZGVmIGZpZWxkX2luZGV4CitpbnQJZmllbGRfaW5kZXgoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9kZWYuYyAqLworCisjdW5kZWYgX25jX0RlZmF1bHRfRmllbGQKK0ZJRUxECSpfbmNfRGVmYXVsdF9GaWVsZDsKKworI3VuZGVmIF9uY19NYWtlX0FyZ3VtZW50CitUeXBlQXJndW1lbnQgKl9uY19NYWtlX0FyZ3VtZW50KAorCQljb25zdCBGSUVMRFRZUEUgKnR5cCwgCisJCXZhX2xpc3QJKmFwLCAKKwkJaW50CSplcnIpCisJCXsgcmV0dXJuKCooVHlwZUFyZ3VtZW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfQ29weV9Bcmd1bWVudAorVHlwZUFyZ3VtZW50ICpfbmNfQ29weV9Bcmd1bWVudCgKKwkJY29uc3QgRklFTERUWVBFICp0eXAsIAorCQljb25zdCBUeXBlQXJndW1lbnQgKmFyZ3AsIAorCQlpbnQJKmVycikKKwkJeyByZXR1cm4oKihUeXBlQXJndW1lbnQgKiopMCk7IH0KKworI3VuZGVmIF9uY19GcmVlX0FyZ3VtZW50Cit2b2lkCV9uY19GcmVlX0FyZ3VtZW50KAorCQljb25zdCBGSUVMRFRZUEUgKnR5cCwgCisJCVR5cGVBcmd1bWVudCAqYXJncCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Db3B5X1R5cGUKK05DVVJTRVNfQk9PTCBfbmNfQ29weV9UeXBlKAorCQlGSUVMRAkqZHN0LCAKKwkJRklFTEQgY29uc3QgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX0ZyZWVfVHlwZQordm9pZAlfbmNfRnJlZV9UeXBlKAorCQlGSUVMRAkqZmllbGQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBuZXdfZmllbGQKK0ZJRUxECSpuZXdfZmllbGQoCisJCWludAlyb3dzLCAKKwkJaW50CWNvbHMsIAorCQlpbnQJZnJvdywgCisJCWludAlmY29sLCAKKwkJaW50CW5yb3csIAorCQlpbnQJbmJ1ZikKKwkJeyByZXR1cm4oKihGSUVMRCAqKikwKTsgfQorCisjdW5kZWYgZnJlZV9maWVsZAoraW50CWZyZWVfZmllbGQoCisJCUZJRUxECSpmaWVsZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9kdXAuYyAqLworCisjdW5kZWYgZHVwX2ZpZWxkCitGSUVMRAkqZHVwX2ZpZWxkKAorCQlGSUVMRAkqZmllbGQsIAorCQlpbnQJZnJvdywgCisJCWludAlmY29sKQorCQl7IHJldHVybigqKEZJRUxEICoqKTApOyB9CisKKy8qIC4vZmxkX2Z0Y2hvaWNlLmMgKi8KKworI3VuZGVmIHNldF9maWVsZHR5cGVfY2hvaWNlCitpbnQJc2V0X2ZpZWxkdHlwZV9jaG9pY2UoCisJCUZJRUxEVFlQRSAqdHlwLCAKKwkJTkNVUlNFU19CT09MICgqY29uc3QgbmV4dF9jaG9pY2UpKAorCQlGSUVMRAkqcDEsIAorCQljb25zdCB2b2lkICpwMiksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBwcmV2X2Nob2ljZSkoCisJCUZJRUxECSpwMSwgCisJCWNvbnN0IHZvaWQgKnAyKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9mdGxpbmsuYyAqLworCisjdW5kZWYgbGlua19maWVsZHR5cGUKK0ZJRUxEVFlQRSAqbGlua19maWVsZHR5cGUoCisJCUZJRUxEVFlQRSAqdHlwZTEsIAorCQlGSUVMRFRZUEUgKnR5cGUyKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2ZsZF9pbmZvLmMgKi8KKworI3VuZGVmIGZpZWxkX2luZm8KK2ludAlmaWVsZF9pbmZvKAorCQljb25zdCBGSUVMRCAqZmllbGQsIAorCQlpbnQJKnJvd3MsIAorCQlpbnQJKmNvbHMsIAorCQlpbnQJKmZyb3csIAorCQlpbnQJKmZjb2wsIAorCQlpbnQJKm5yb3csIAorCQlpbnQJKm5idWYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGR5bmFtaWNfZmllbGRfaW5mbworaW50CWR5bmFtaWNfZmllbGRfaW5mbygKKwkJY29uc3QgRklFTEQgKmZpZWxkLCAKKwkJaW50CSpkcm93cywgCisJCWludAkqZGNvbHMsIAorCQlpbnQJKm1heGdyb3cpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfanVzdC5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfanVzdAoraW50CXNldF9maWVsZF9qdXN0KAorCQlGSUVMRAkqZmllbGQsIAorCQlpbnQJanVzdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfanVzdAoraW50CWZpZWxkX2p1c3QoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9saW5rLmMgKi8KKworI3VuZGVmIGxpbmtfZmllbGQKK0ZJRUxECSpsaW5rX2ZpZWxkKAorCQlGSUVMRAkqZmllbGQsIAorCQlpbnQJZnJvdywgCisJCWludAlmY29sKQorCQl7IHJldHVybigqKEZJRUxEICoqKTApOyB9CisKKy8qIC4vZmxkX21heC5jICovCisKKyN1bmRlZiBzZXRfbWF4X2ZpZWxkCitpbnQJc2V0X21heF9maWVsZCgKKwkJRklFTEQJKmZpZWxkLCAKKwkJaW50CW1heGdyb3cpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfbW92ZS5jICovCisKKyN1bmRlZiBtb3ZlX2ZpZWxkCitpbnQJbW92ZV9maWVsZCgKKwkJRklFTEQJKmZpZWxkLCAKKwkJaW50CWZyb3csIAorCQlpbnQJZmNvbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9uZXdmdHlwLmMgKi8KKworI3VuZGVmIF9uY19EZWZhdWx0X0ZpZWxkVHlwZQorRklFTERUWVBFICpfbmNfRGVmYXVsdF9GaWVsZFR5cGU7CisKKyN1bmRlZiBuZXdfZmllbGR0eXBlCitGSUVMRFRZUEUgKm5ld19maWVsZHR5cGUoCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGZpZWxkX2NoZWNrKSgKKwkJRklFTEQJKnAxLCAKKwkJY29uc3Qgdm9pZCAqcDIpLCAKKwkJTkNVUlNFU19CT09MICgqY29uc3QgY2hhcl9jaGVjaykoCisJCWludAlwMSwgCisJCWNvbnN0IHZvaWQgKnAyKSkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworI3VuZGVmIGZyZWVfZmllbGR0eXBlCitpbnQJZnJlZV9maWVsZHR5cGUoCisJCUZJRUxEVFlQRSAqdHlwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vZmxkX29wdHMuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX29wdHMKK2ludAlzZXRfZmllbGRfb3B0cygKKwkJRklFTEQJKmZpZWxkLCAKKwkJRmllbGRfT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmaWVsZF9vcHRzCitGaWVsZF9PcHRpb25zIGZpZWxkX29wdHMoCisJCWNvbnN0IEZJRUxEICpmaWVsZCkKKwkJeyByZXR1cm4oKihGaWVsZF9PcHRpb25zICopMCk7IH0KKworI3VuZGVmIGZpZWxkX29wdHNfb24KK2ludAlmaWVsZF9vcHRzX29uKAorCQlGSUVMRAkqZmllbGQsIAorCQlGaWVsZF9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX29wdHNfb2ZmCitpbnQJZmllbGRfb3B0c19vZmYoCisJCUZJRUxECSpmaWVsZCwgCisJCUZpZWxkX09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZsZF9wYWQuYyAqLworCisjdW5kZWYgc2V0X2ZpZWxkX3BhZAoraW50CXNldF9maWVsZF9wYWQoCisJCUZJRUxECSpmaWVsZCwgCisJCWludAljaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfcGFkCitpbnQJZmllbGRfcGFkKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mbGRfcGFnZS5jICovCisKKyN1bmRlZiBzZXRfbmV3X3BhZ2UKK2ludAlzZXRfbmV3X3BhZ2UoCisJCUZJRUxECSpmaWVsZCwgCisJCU5DVVJTRVNfQk9PTCBuZXdfcGFnZV9mbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXdfcGFnZQorTkNVUlNFU19CT09MIG5ld19wYWdlKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi9mbGRfc3RhdC5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfc3RhdHVzCitpbnQJc2V0X2ZpZWxkX3N0YXR1cygKKwkJRklFTEQJKmZpZWxkLCAKKwkJTkNVUlNFU19CT09MIHN0YXR1cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfc3RhdHVzCitOQ1VSU0VTX0JPT0wgZmllbGRfc3RhdHVzKAorCQljb25zdCBGSUVMRCAqZmllbGQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi9mbGRfdHlwZS5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfdHlwZQoraW50CXNldF9maWVsZF90eXBlKAorCQlGSUVMRAkqZmllbGQsIAorCQlGSUVMRFRZUEUgKnR5cGUsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3R5cGUKK0ZJRUxEVFlQRSAqZmllbGRfdHlwZSgKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2ZsZF91c2VyLmMgKi8KKworI3VuZGVmIHNldF9maWVsZF91c2VycHRyCitpbnQJc2V0X2ZpZWxkX3VzZXJwdHIoCisJCUZJRUxECSpmaWVsZCwgCisJCXZvaWQJKnVzcnB0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfdXNlcnB0cgordm9pZAkqZmllbGRfdXNlcnB0cigKKwkJY29uc3QgRklFTEQgKmZpZWxkKQorCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KKworLyogLi9mcm1fY3Vyc29yLmMgKi8KKworI3VuZGVmIHBvc19mb3JtX2N1cnNvcgoraW50CXBvc19mb3JtX2N1cnNvcigKKwkJRk9STQkqZm9ybSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2ZybV9kYXRhLmMgKi8KKworI3VuZGVmIGRhdGFfYmVoaW5kCitOQ1VSU0VTX0JPT0wgZGF0YV9iZWhpbmQoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGRhdGFfYWhlYWQKK05DVVJTRVNfQk9PTCBkYXRhX2FoZWFkKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vZnJtX2RlZi5jICovCisKKyN1bmRlZiBfbmNfRGVmYXVsdF9Gb3JtCitGT1JNCSpfbmNfRGVmYXVsdF9Gb3JtOworCisjdW5kZWYgbmV3X2Zvcm1fc3AKK0ZPUk0JKm5ld19mb3JtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJRklFTEQJKipmaWVsZHMpCisJCXsgcmV0dXJuKCooRk9STSAqKikwKTsgfQorCisjdW5kZWYgbmV3X2Zvcm0KK0ZPUk0JKm5ld19mb3JtKAorCQlGSUVMRAkqKmZpZWxkcykKKwkJeyByZXR1cm4oKihGT1JNICoqKTApOyB9CisKKyN1bmRlZiBmcmVlX2Zvcm0KK2ludAlmcmVlX2Zvcm0oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNldF9mb3JtX2ZpZWxkcworaW50CXNldF9mb3JtX2ZpZWxkcygKKwkJRk9STQkqZm9ybSwgCisJCUZJRUxECSoqZmllbGRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX2ZpZWxkcworRklFTEQJKipmb3JtX2ZpZWxkcygKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihGSUVMRCAqKiopMCk7IH0KKworI3VuZGVmIGZpZWxkX2NvdW50CitpbnQJZmllbGRfY291bnQoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fZHJpdmVyLmMgKi8KKworI3VuZGVmIF9uY19nZXRfZmllbGRidWZmZXIKK3ZvaWQJX25jX2dldF9maWVsZGJ1ZmZlcigKKwkJRk9STQkqZm9ybSwgCisJCUZJRUxECSpmaWVsZCwgCisJCWNjaGFyX3QJKmJ1ZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvcgoraW50CV9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvcigKKwkJRk9STQkqZm9ybSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX1JlZnJlc2hfQ3VycmVudF9GaWVsZAoraW50CV9uY19SZWZyZXNoX0N1cnJlbnRfRmllbGQoCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19TeW5jaHJvbml6ZV9BdHRyaWJ1dGVzCitpbnQJX25jX1N5bmNocm9uaXplX0F0dHJpYnV0ZXMoCisJCUZJRUxECSpmaWVsZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX1N5bmNocm9uaXplX09wdGlvbnMKK2ludAlfbmNfU3luY2hyb25pemVfT3B0aW9ucygKKwkJRklFTEQJKmZpZWxkLCAKKwkJRmllbGRfT3B0aW9ucyBuZXdvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfU2V0X0N1cnJlbnRfRmllbGQKK2ludAlfbmNfU2V0X0N1cnJlbnRfRmllbGQoCisJCUZPUk0JKmZvcm0sIAorCQlGSUVMRAkqbmV3ZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19JbnRlcm5hbF9WYWxpZGF0aW9uCitOQ1VSU0VTX0JPT0wgX25jX0ludGVybmFsX1ZhbGlkYXRpb24oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19GaXJzdF9BY3RpdmVfRmllbGQKK0ZJRUxECSpfbmNfRmlyc3RfQWN0aXZlX0ZpZWxkKAorCQlGT1JNCSpmb3JtKQorCQl7IHJldHVybigqKEZJRUxEICoqKTApOyB9CisKKyN1bmRlZiBfbmNfU2V0X0Zvcm1fUGFnZQoraW50CV9uY19TZXRfRm9ybV9QYWdlKAorCQlGT1JNCSpmb3JtLCAKKwkJaW50CXBhZ2UsIAorCQlGSUVMRAkqZmllbGQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgaW50IGtleWNvZGU7IAorICBpbnQgKCpjbWQpIChGT1JNICopOyAKK30KK0JpbmRpbmdfSW5mbzsKKworI3VuZGVmIGZvcm1fZHJpdmVyCitpbnQJZm9ybV9kcml2ZXIoCisJCUZPUk0JKmZvcm0sIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZm9ybV9kcml2ZXJfdworaW50CWZvcm1fZHJpdmVyX3coCisJCUZPUk0JKmZvcm0sIAorCQlpbnQJdHlwZSwgCisJCXdjaGFyX3QJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X2ZpZWxkX2J1ZmZlcgoraW50CXNldF9maWVsZF9idWZmZXIoCisJCUZJRUxECSpmaWVsZCwgCisJCWludAlidWZmZXIsIAorCQljb25zdCBjaGFyICp2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZmllbGRfYnVmZmVyCitjaGFyCSpmaWVsZF9idWZmZXIoCisJCWNvbnN0IEZJRUxEICpmaWVsZCwgCisJCWludAlidWZmZXIpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX1dpZGVuX1N0cmluZword2NoYXJfdAkqX25jX1dpZGVuX1N0cmluZygKKwkJY2hhcgkqc291cmNlLCAKKwkJaW50CSpsZW5ndGhwKQorCQl7IHJldHVybigqKHdjaGFyX3QgKiopMCk7IH0KKworLyogLi9mcm1faG9vay5jICovCisKKyN1bmRlZiBzZXRfZmllbGRfaW5pdAoraW50CXNldF9maWVsZF9pbml0KAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX2luaXQKK0Zvcm1fSG9vayBmaWVsZF9pbml0KAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKEZvcm1fSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfZmllbGRfdGVybQoraW50CXNldF9maWVsZF90ZXJtKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZpZWxkX3Rlcm0KK0Zvcm1fSG9vayBmaWVsZF90ZXJtKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKEZvcm1fSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfZm9ybV9pbml0CitpbnQJc2V0X2Zvcm1faW5pdCgKKwkJRk9STQkqZm9ybSwgCisJCUZvcm1fSG9vayBmdW5jKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX2luaXQKK0Zvcm1fSG9vayBmb3JtX2luaXQoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooRm9ybV9Ib29rICopMCk7IH0KKworI3VuZGVmIHNldF9mb3JtX3Rlcm0KK2ludAlzZXRfZm9ybV90ZXJtKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fdGVybQorRm9ybV9Ib29rIGZvcm1fdGVybSgKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihGb3JtX0hvb2sgKikwKTsgfQorCisvKiAuL2ZybV9vcHRzLmMgKi8KKworI3VuZGVmIHNldF9mb3JtX29wdHMKK2ludAlzZXRfZm9ybV9vcHRzKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fb3B0cworRm9ybV9PcHRpb25zIGZvcm1fb3B0cygKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihGb3JtX09wdGlvbnMgKikwKTsgfQorCisjdW5kZWYgZm9ybV9vcHRzX29uCitpbnQJZm9ybV9vcHRzX29uKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fb3B0c19vZmYKK2ludAlmb3JtX29wdHNfb2ZmKAorCQlGT1JNCSpmb3JtLCAKKwkJRm9ybV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcGFnZS5jICovCisKKyN1bmRlZiBzZXRfZm9ybV9wYWdlCitpbnQJc2V0X2Zvcm1fcGFnZSgKKwkJRk9STQkqZm9ybSwgCisJCWludAlwYWdlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX3BhZ2UKK2ludAlmb3JtX3BhZ2UoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcG9zdC5jICovCisKKyN1bmRlZiBwb3N0X2Zvcm0KK2ludAlwb3N0X2Zvcm0oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHVucG9zdF9mb3JtCitpbnQJdW5wb3N0X2Zvcm0oCisJCUZPUk0JKmZvcm0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fcmVxX25hbWUuYyAqLworCisjdW5kZWYgZm9ybV9yZXF1ZXN0X25hbWUKK2NvbnN0IGNoYXIgKmZvcm1fcmVxdWVzdF9uYW1lKAorCQlpbnQJcmVxdWVzdCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBmb3JtX3JlcXVlc3RfYnlfbmFtZQoraW50CWZvcm1fcmVxdWVzdF9ieV9uYW1lKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fc2NhbGUuYyAqLworCisjdW5kZWYgc2NhbGVfZm9ybQoraW50CXNjYWxlX2Zvcm0oCisJCWNvbnN0IEZPUk0gKmZvcm0sIAorCQlpbnQJKnJvd3MsIAorCQlpbnQJKmNvbHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9mcm1fc3ViLmMgKi8KKworI3VuZGVmIHNldF9mb3JtX3N1YgoraW50CXNldF9mb3JtX3N1YigKKwkJRk9STQkqZm9ybSwgCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmb3JtX3N1YgorV0lORE9XCSpmb3JtX3N1YigKKwkJY29uc3QgRk9STSAqZm9ybSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi9mcm1fdXNlci5jICovCisKKyN1bmRlZiBzZXRfZm9ybV91c2VycHRyCitpbnQJc2V0X2Zvcm1fdXNlcnB0cigKKwkJRk9STQkqZm9ybSwgCisJCXZvaWQJKnVzcnB0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZm9ybV91c2VycHRyCit2b2lkCSpmb3JtX3VzZXJwdHIoCisJCWNvbnN0IEZPUk0gKmZvcm0pCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisvKiAuL2ZybV93aW4uYyAqLworCisjdW5kZWYgc2V0X2Zvcm1fd2luCitpbnQJc2V0X2Zvcm1fd2luKAorCQlGT1JNCSpmb3JtLCAKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZvcm1fd2luCitXSU5ET1cJKmZvcm1fd2luKAorCQljb25zdCBGT1JNICpmb3JtKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisvKiAuL2Z0eV9hbG51bS5jICovCisKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICBpbnQgd2lkdGg7CisgIH0KK2FsbnVtQVJHOworCisjdW5kZWYgVFlQRV9BTE5VTQorRklFTERUWVBFICpUWVBFX0FMTlVNOworCisjdW5kZWYgX25jX1RZUEVfQUxOVU0KK0ZJRUxEVFlQRSAqX25jX1RZUEVfQUxOVU0odm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mdHlfYWxwaGEuYyAqLworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHdpZHRoOworICB9CithbHBoYUFSRzsKKworI3VuZGVmIFRZUEVfQUxQSEEKK0ZJRUxEVFlQRSAqVFlQRV9BTFBIQTsKKworI3VuZGVmIF9uY19UWVBFX0FMUEhBCitGSUVMRFRZUEUgKl9uY19UWVBFX0FMUEhBKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X2VudW0uYyAqLworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgY2hhciAqKmt3ZHM7CisgICAgaW50IGNvdW50OworICAgIE5DVVJTRVNfQk9PTCBjaGVja2Nhc2U7CisgICAgTkNVUlNFU19CT09MIGNoZWNrdW5pcXVlOworICB9CitlbnVtQVJHOworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgY2hhciAqKmt3ZHM7CisgICAgaW50IGNjYXNlOworICAgIGludCBjdW5pcXVlOworICB9CitlbnVtUGFyYW1zOworCisjdW5kZWYgVFlQRV9FTlVNCitGSUVMRFRZUEUgKlRZUEVfRU5VTTsKKworI3VuZGVmIF9uY19UWVBFX0VOVU0KK0ZJRUxEVFlQRSAqX25jX1RZUEVfRU5VTSh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2Z0eV9nZW5lcmljLmMgKi8KKworI3VuZGVmIF9uY19nZW5lcmljX2ZpZWxkdHlwZQorRklFTERUWVBFICpfbmNfZ2VuZXJpY19maWVsZHR5cGUoCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGZpZWxkX2NoZWNrKSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBjaGFyX2NoZWNrKSgKKwkJaW50CXAxLCAKKwkJRk9STQkqcDIsIAorCQlGSUVMRAkqcDMsIAorCQljb25zdCB2b2lkICpwNCksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBuZXh0KSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQlOQ1VSU0VTX0JPT0wgKCpjb25zdCBwcmV2KSgKKwkJRk9STQkqcDEsIAorCQlGSUVMRAkqcDIsIAorCQljb25zdCB2b2lkICpwMyksIAorCQl2b2lkCSgqZnJlZWNhbGxiYWNrKSgKKwkJdm9pZAkqcDEpKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisjdW5kZWYgX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZQoraW50CV9uY19zZXRfZ2VuZXJpY19maWVsZHR5cGUoCisJCUZJRUxECSpmaWVsZCwgCisJCUZJRUxEVFlQRSAqZnR5cCwgCisJCWludAkoKmFyZ2l0ZXJhdG9yKSgKKwkJdm9pZAkqKnAxKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2Zvcm1fY3Vyc29yCitXSU5ET1cJKl9uY19mb3JtX2N1cnNvcigKKwkJY29uc3QgRk9STSAqZm9ybSwgCisJCWludAkqcFJvdywgCisJCWludAkqcENvbCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi9mdHlfaW50LmMgKi8KKwordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgbG9uZyBsb3c7CisgICAgbG9uZyBoaWdoOworICB9CitpbnRlZ2VyQVJHOworCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHByZWNpc2lvbjsKKyAgICBsb25nIGxvdzsKKyAgICBsb25nIGhpZ2g7CisgIH0KK2ludGVnZXJQQVJNOworCisjdW5kZWYgVFlQRV9JTlRFR0VSCitGSUVMRFRZUEUgKlRZUEVfSU5URUdFUjsKKworI3VuZGVmIF9uY19UWVBFX0lOVEVHRVIKK0ZJRUxEVFlQRSAqX25jX1RZUEVfSU5URUdFUih2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCisvKiAuL2Z0eV9pcHY0LmMgKi8KKworI3VuZGVmIFRZUEVfSVBWNAorRklFTERUWVBFICpUWVBFX0lQVjQ7CisKKyN1bmRlZiBfbmNfVFlQRV9JUFY0CitGSUVMRFRZUEUgKl9uY19UWVBFX0lQVjQodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKworLyogLi9mdHlfbnVtLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorCit0eXBlZGVmIHN0cnVjdAorICB7CisgICAgaW50IHByZWNpc2lvbjsKKyAgICBkb3VibGUgbG93OworICAgIGRvdWJsZSBoaWdoOworICAgIHN0cnVjdCBsY29udiAqTDsKKyAgfQorbnVtZXJpY0FSRzsKKwordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgZG91YmxlIGxvdzsKKyAgICBkb3VibGUgaGlnaDsKKyAgfQordGhpc1BBUk07CisKKyN1bmRlZiBUWVBFX05VTUVSSUMKK0ZJRUxEVFlQRSAqVFlQRV9OVU1FUklDOworCisjdW5kZWYgX25jX1RZUEVfTlVNRVJJQworRklFTERUWVBFICpfbmNfVFlQRV9OVU1FUklDKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X3JlZ2V4LmMgKi8KKworI2luY2x1ZGUgPHJlZ2V4Lmg+CisKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICByZWdleF90ICpwUmVnRXhwOworICAgIHVuc2lnbmVkIGxvbmcgKnJlZkNvdW50OworICB9CitSZWdFeHBfQXJnOworCisjdW5kZWYgVFlQRV9SRUdFWFAKK0ZJRUxEVFlQRSAqVFlQRV9SRUdFWFA7CisKKyN1bmRlZiBfbmNfVFlQRV9SRUdFWFAKK0ZJRUxEVFlQRSAqX25jX1RZUEVfUkVHRVhQKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CmRpZmYgLS1naXQgYS9mb3JtL2xsaWItbGZvcm13IGIvZm9ybS9sbGliLWxmb3JtdwppbmRleCA3NjkwYzViLi5mNmE2ODVmIDEwMDY0NAotLS0gYS9mb3JtL2xsaWItbGZvcm13CisrKyBiL2Zvcm0vbGxpYi1sZm9ybXcKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEzICsyNywxMyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAyMDAyLDIwMDUgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAyMDAyLW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogTElOVExJQlJBUlkgKi8KIAogLyogLi9mX3RyYWNlLmMgKi8KIAotI2luY2x1ZGUgImZvcm0ucHJpdi5oIgorI2luY2x1ZGUgPGZvcm0ucHJpdi5oPgogCiAjdW5kZWYgX25jX3JldHJhY2VfZmllbGRfcHRyCiBGSUVMRAkqKl9uY19yZXRyYWNlX2ZpZWxkX3B0cigKQEAgLTI2NCw3ICsyNjQsNyBAQAogLyogLi9mbGRfbmV3ZnR5cC5jICovCiAKICN1bmRlZiBfbmNfRGVmYXVsdF9GaWVsZFR5cGUKLWNvbnN0IEZJRUxEVFlQRSAqX25jX0RlZmF1bHRfRmllbGRUeXBlID0gezB9OworRklFTERUWVBFICpfbmNfRGVmYXVsdF9GaWVsZFR5cGU7CiAKICN1bmRlZiBuZXdfZmllbGR0eXBlCiBGSUVMRFRZUEUgKm5ld19maWVsZHR5cGUoCkBAIC0zOTYsNiArMzk2LDEyIEBACiAjdW5kZWYgX25jX0RlZmF1bHRfRm9ybQogRk9STQkqX25jX0RlZmF1bHRfRm9ybTsKIAorI3VuZGVmIG5ld19mb3JtX3NwCitGT1JNCSpuZXdfZm9ybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJRUxECSoqZmllbGRzKQorCQl7IHJldHVybigqKEZPUk0gKiopMCk7IH0KKwogI3VuZGVmIG5ld19mb3JtCiBGT1JNCSpuZXdfZm9ybSgKIAkJRklFTEQJKipmaWVsZHMpCkBAIC00MjQsNiArNDMwLDEzIEBACiAKIC8qIC4vZnJtX2RyaXZlci5jICovCiAKKyN1bmRlZiBfbmNfZ2V0X2ZpZWxkYnVmZmVyCit2b2lkCV9uY19nZXRfZmllbGRidWZmZXIoCisJCUZPUk0JKmZvcm0sIAorCQlGSUVMRAkqZmllbGQsIAorCQljY2hhcl90CSpidWYpCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfUG9zaXRpb25fRm9ybV9DdXJzb3IKIGludAlfbmNfUG9zaXRpb25fRm9ybV9DdXJzb3IoCiAJCUZPUk0JKmZvcm0pCkBAIC00ODEsNiArNDk0LDEzIEBACiAJCWludAljKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBmb3JtX2RyaXZlcl93CitpbnQJZm9ybV9kcml2ZXJfdygKKwkJRk9STQkqZm9ybSwgCisJCWludAl0eXBlLCAKKwkJd2NoYXJfdAljKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzZXRfZmllbGRfYnVmZmVyCiBpbnQJc2V0X2ZpZWxkX2J1ZmZlcigKIAkJRklFTEQJKmZpZWxkLCAKQEAgLTY2Nyw2ICs2ODcsMTAgQEAKICN1bmRlZiBUWVBFX0FMTlVNCiBGSUVMRFRZUEUgKlRZUEVfQUxOVU07CiAKKyN1bmRlZiBfbmNfVFlQRV9BTE5VTQorRklFTERUWVBFICpfbmNfVFlQRV9BTE5VTSh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQorCiAvKiAuL2Z0eV9hbHBoYS5jICovCiAKIHR5cGVkZWYgc3RydWN0CkBAIC02NzgsNiArNzAyLDEwIEBACiAjdW5kZWYgVFlQRV9BTFBIQQogRklFTERUWVBFICpUWVBFX0FMUEhBOwogCisjdW5kZWYgX25jX1RZUEVfQUxQSEEKK0ZJRUxEVFlQRSAqX25jX1RZUEVfQUxQSEEodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKwogLyogLi9mdHlfZW51bS5jICovCiAKIHR5cGVkZWYgc3RydWN0CkBAIC02ODksOSArNzE3LDYxIEBACiAgIH0KIGVudW1BUkc7CiAKK3R5cGVkZWYgc3RydWN0CisgIHsKKyAgICBjaGFyICoqa3dkczsKKyAgICBpbnQgY2Nhc2U7CisgICAgaW50IGN1bmlxdWU7CisgIH0KK2VudW1QYXJhbXM7CisKICN1bmRlZiBUWVBFX0VOVU0KIEZJRUxEVFlQRSAqVFlQRV9FTlVNOwogCisjdW5kZWYgX25jX1RZUEVfRU5VTQorRklFTERUWVBFICpfbmNfVFlQRV9FTlVNKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKy8qIC4vZnR5X2dlbmVyaWMuYyAqLworCisjdW5kZWYgX25jX2dlbmVyaWNfZmllbGR0eXBlCitGSUVMRFRZUEUgKl9uY19nZW5lcmljX2ZpZWxkdHlwZSgKKwkJTkNVUlNFU19CT09MICgqY29uc3QgZmllbGRfY2hlY2spKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IGNoYXJfY2hlY2spKAorCQlpbnQJcDEsIAorCQlGT1JNCSpwMiwgCisJCUZJRUxECSpwMywgCisJCWNvbnN0IHZvaWQgKnA0KSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IG5leHQpKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCU5DVVJTRVNfQk9PTCAoKmNvbnN0IHByZXYpKAorCQlGT1JNCSpwMSwgCisJCUZJRUxECSpwMiwgCisJCWNvbnN0IHZvaWQgKnAzKSwgCisJCXZvaWQJKCpmcmVlY2FsbGJhY2spKAorCQl2b2lkCSpwMSkpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0X2dlbmVyaWNfZmllbGR0eXBlCitpbnQJX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZSgKKwkJRklFTEQJKmZpZWxkLCAKKwkJRklFTERUWVBFICpmdHlwLCAKKwkJaW50CSgqYXJnaXRlcmF0b3IpKAorCQl2b2lkCSoqcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfZm9ybV9jdXJzb3IKK1dJTkRPVwkqX25jX2Zvcm1fY3Vyc29yKAorCQljb25zdCBGT1JNICpmb3JtLCAKKwkJaW50CSpwUm93LCAKKwkJaW50CSpwQ29sKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCiAvKiAuL2Z0eV9pbnQuYyAqLwogCiB0eXBlZGVmIHN0cnVjdApAQCAtNzAyLDEzICs3ODIsMzAgQEAKICAgfQogaW50ZWdlckFSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgbG9uZyBsb3c7CisgICAgbG9uZyBoaWdoOworICB9CitpbnRlZ2VyUEFSTTsKKwogI3VuZGVmIFRZUEVfSU5URUdFUgogRklFTERUWVBFICpUWVBFX0lOVEVHRVI7CiAKKyN1bmRlZiBfbmNfVFlQRV9JTlRFR0VSCitGSUVMRFRZUEUgKl9uY19UWVBFX0lOVEVHRVIodm9pZCkKKwkJeyByZXR1cm4oKihGSUVMRFRZUEUgKiopMCk7IH0KKwogLyogLi9mdHlfaXB2NC5jICovCisKICN1bmRlZiBUWVBFX0lQVjQKIEZJRUxEVFlQRSAqVFlQRV9JUFY0OwogCisjdW5kZWYgX25jX1RZUEVfSVBWNAorRklFTERUWVBFICpfbmNfVFlQRV9JUFY0KHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKIC8qIC4vZnR5X251bS5jICovCiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KQEAgLTcyMiw5ICs4MTksMjEgQEAKICAgfQogbnVtZXJpY0FSRzsKIAordHlwZWRlZiBzdHJ1Y3QKKyAgeworICAgIGludCBwcmVjaXNpb247CisgICAgZG91YmxlIGxvdzsKKyAgICBkb3VibGUgaGlnaDsKKyAgfQordGhpc1BBUk07CisKICN1bmRlZiBUWVBFX05VTUVSSUMKIEZJRUxEVFlQRSAqVFlQRV9OVU1FUklDOwogCisjdW5kZWYgX25jX1RZUEVfTlVNRVJJQworRklFTERUWVBFICpfbmNfVFlQRV9OVU1FUklDKHZvaWQpCisJCXsgcmV0dXJuKCooRklFTERUWVBFICoqKTApOyB9CisKIC8qIC4vZnR5X3JlZ2V4LmMgKi8KIAogI2luY2x1ZGUgPHJlZ2V4Lmg+CkBAIC03MzgsMyArODQ3LDcgQEAKIAogI3VuZGVmIFRZUEVfUkVHRVhQCiBGSUVMRFRZUEUgKlRZUEVfUkVHRVhQOworCisjdW5kZWYgX25jX1RZUEVfUkVHRVhQCitGSUVMRFRZUEUgKl9uY19UWVBFX1JFR0VYUCh2b2lkKQorCQl7IHJldHVybigqKEZJRUxEVFlQRSAqKikwKTsgfQpkaWZmIC0tZ2l0IGEvZm9ybS9tb2R1bGVzIGIvZm9ybS9tb2R1bGVzCmluZGV4IDg5ZjlmOWYuLjIwNTM1NmIgMTAwNjQ0Ci0tLSBhL2Zvcm0vbW9kdWxlcworKysgYi9mb3JtL21vZHVsZXMKQEAgLTEsNiArMSw2IEBACi0jICRJZDogbW9kdWxlcyx2IDEuMTUgMjAwNi8xMi8yNCAwMDo1Mjo1OCB0b20gRXhwICQKKyMgJElkOiBtb2R1bGVzLHYgMS4xNyAyMDEwLzAxLzIzIDE2OjI2OjM3IHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjgsNDkgKzI4LDUxIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKICMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5CTE5OTUtb24KKyMgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgMjAwOAogIwogCiBAIGJhc2UKICMgTGlicmFyeSBvYmplY3RzCi1mX3RyYWNlCQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX2FyZwkJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9hdHRyCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfY3VycmVudAlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX2RlZgkJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9kdXAJCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfZnRjaG9pY2UJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9mdGxpbmsJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9pbmZvCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfanVzdAlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX2xpbmsJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9tYXgJCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfbW92ZQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX25ld2Z0eXAJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9vcHRzCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfcGFkCQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX3BhZ2UJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZsZF9zdGF0CWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mbGRfdHlwZQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZmxkX3VzZXIJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZybV9jdXJzb3IJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZybV9kYXRhCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mcm1fZGVmCQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnJtX2RyaXZlcglsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnJtX2hvb2sJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZybV9vcHRzCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mcm1fcGFnZQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnJtX3Bvc3QJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZybV9yZXFfbmFtZQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnJtX3NjYWxlCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mcm1fc3ViCQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnJtX3VzZXIJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZybV93aW4JCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mdHlfYWxudW0JbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZ0eV9hbHBoYQlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnR5X2VudW0JbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZ0eV9pbnQJCWxpYgkJJChzcmNkaXIpCSQoRk9STV9QUklWX0gpCi1mdHlfaXB2NAlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQotZnR5X251bQkJbGliCQkkKHNyY2RpcikJJChGT1JNX1BSSVZfSCkKLWZ0eV9yZWdleAlsaWIJCSQoc3JjZGlyKQkkKEZPUk1fUFJJVl9IKQorZl90cmFjZQkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF9hcmcJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfYXR0cglsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX2N1cnJlbnQJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF9kZWYJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfZHVwCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX2Z0Y2hvaWNlCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfZnRsaW5rCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfaW5mbwlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX2p1c3QJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF9saW5rCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfbWF4CQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX21vdmUJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF9uZXdmdHlwCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfb3B0cwlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX3BhZAkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF9wYWdlCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmbGRfc3RhdAlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZmxkX3R5cGUJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZsZF91c2VyCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmcm1fY3Vyc29yCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmcm1fZGF0YQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnJtX2RlZgkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZybV9kcml2ZXIJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZybV9ob29rCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmcm1fb3B0cwlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnJtX3BhZ2UJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZybV9wb3N0CWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmcm1fcmVxX25hbWUJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZybV9zY2FsZQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnJtX3N1YgkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZybV91c2VyCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmcm1fd2luCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnR5X2FsbnVtCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmdHlfYWxwaGEJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2Z0eV9lbnVtCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmdHlfZ2VuZXJpYwlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnR5X2ludAkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2Z0eV9pcHY0CWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmdHlfbnVtCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZnR5X3JlZ2V4CWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCiAKICMgdmlsZTptYWtlbW9kZQpkaWZmIC0tZ2l0IGEvaGVhZGVycy5zaCBiL2hlYWRlcnMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE0MjJjYmMuLjAwMDAwMDAKLS0tIGEvaGVhZGVycy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgVGhpcyBzaGVsbCBzY3JpcHQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSAnY29uZmlndXJlJyBzY3JpcHQuICBJdCBpcyBpbnZva2VkIGluIGEKLSMgc3ViZGlyZWN0b3J5IG9mIHRoZSBidWlsZCB0cmVlLiAgSXQgZ2VuZXJhdGVzIGEgc2VkLXNjcmlwdCBpbiB0aGUgcGFyZW50Ci0jIGRpcmVjdG9yeSB0aGF0IGlzIHVzZWQgdG8gYWRqdXN0IGluY2x1ZGVzIGZvciBoZWFkZXIgZmlsZXMgdGhhdCByZXNpZGUgaW4gYQotIyBzdWJkaXJlY3Rvcnkgb2YgL3Vzci9pbmNsdWRlLCBldGMuCi1QUkc9IiIKLXdoaWxlIHRlc3QgJCMgIT0gMwotZG8KLVBSRz0iJFBSRyAkMSI7IHNoaWZ0Ci1kb25lCi1EU1Q9JDEKLVJFRj0kMgotU1JDPSQzCi1UTVBTUkM9JHtUTVBESVItL3RtcH0vYGJhc2VuYW1lICRTUkNgJCQKLVRNUFNFRD0ke1RNUERJUi0vdG1wfS9oZWFkZXJzLnNlZCQkCi1lY2hvIGluc3RhbGxpbmcgJFNSQyBpbiAkRFNUCi1jYXNlICREU1QgaW4KLS8qL2luY2x1ZGUvKikKLQlFTkQ9YGJhc2VuYW1lICREU1RgCi0JZm9yIGkgaW4gYGNhdCAkUkVGLy4uLyovaGVhZGVycyB8ZmdyZXAgLXYgIiMiYAotCWRvCi0JCU5BTUU9YGJhc2VuYW1lICRpYAotCQllY2hvICJzLzwkTkFNRT4vPCRFTkRcLyROQU1FPi8iID4+ICRUTVBTRUQKLQlkb25lCi0JOzsKLSopCi0JZWNobyAiIiA+PiAkVE1QU0VECi0JOzsKLWVzYWMKLXJtIC1mICRUTVBTUkMKLXNlZCAtZiAkVE1QU0VEICRTUkMgPiAkVE1QU1JDCi1OQU1FPWBiYXNlbmFtZSAkU1JDYAotIyBKdXN0IGluIGNhc2Ugc29tZW9uZSBnemlwJ2QgbWFucGFnZXMsIHJlbW92ZSB0aGUgY29uZmxpY3RpbmcgY29weS4KLXRlc3QgLWYgJERTVC8kTkFNRS5neiAmJiBybSAtZiAkRFNULyROQU1FLmd6Ci0KLWV2YWwgJFBSRyAkVE1QU1JDICREU1QvJE5BTUUKLXJtIC1mICRUTVBTUkMgJFRNUFNFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9DYXBzIGIvaW5jbHVkZS9DYXBzCmluZGV4IDdjNjNjN2YuLjEyMGFlMzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvQ2FwcworKysgYi9pbmNsdWRlL0NhcHMKQEAgLTEsNSArMSw1IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yOSw3ICsyOSw3IEBACiAjIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NQogIyAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPgogIwotIyAkSWQ6IENhcHMsdiAxLjM2IDIwMDYvMDUvMjcgMTU6MzM6MDQgdG9tIEV4cCAkCisjICRJZDogQ2Fwcyx2IDEuMzkgMjAxNS8wNC8yNiAxNToyNTo1NSB0b20gRXhwICQKICMKICMgVGhpcyBpcyB0aGUgbWFzdGVyIHRlcm1jYXAvdGVybWluZm8gY2FwYWJpbGl0eSB0YWJsZS4KICMKQEAgLTk3LDcgKzk3LDcgQEAKICMgMy4gTGlzdCBpdCBpbiB0aGUgc3RhbmRhcmQgdGFibGUuICBZb3UgYWxtb3N0IGNlcnRhaW5seSBkbyAqbm90KiB3YW50CiAjIHRvIGRvIHRoaXMgLS0gdGhlIGNhcGFiaWxpdGllcyBpbiB0aGF0IG9uZSwgYW5kIHRoZWlyIG9yZGVyLCBoYXZlIGJlZW4KICMgY2FyZWZ1bGx5IGNob3NlbiB0byBiZSBTVnI0LWJpbmFyeS1jb21wYXRpYmxlIHdoZW4gdGhleSdyZSB3cml0dGVuIG91dAotIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0aGUgbmN1cnNlcworIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0byB0aGUgbmN1cnNlcwogIyBsaWJyYXJ5IHdoYXQgdG8gZG8gd2l0aCB0aGUgdGVybWluZm8gZGF0YSBhZnRlciBpdCdzIHJlYWQgaW4uCiAjCiAjIDQuIExpc3QgaXQgaW4gdGhlIGFsaWFzZXMgdGFibGUgd2l0aCBhbiBJR05PUkUgdGFyZ2V0IGZpZWxkLiAgSWYgeW91CkBAIC0yMjcsNyArMjI3LDcgQEAKIG92ZXJfc3RyaWtlCQkJb3MJYm9vbAlvcwktCS0JWUJDRy0JdGVybWluYWwgY2FuIG92ZXJzdHJpa2UKIHN0YXR1c19saW5lX2VzY19vawkJZXNsb2sJYm9vbAllcwktCS0JWUItRy0JZXNjYXBlIGNhbiBiZSB1c2VkIG9uIHRoZSBzdGF0dXMgbGluZQogZGVzdF90YWJzX21hZ2ljX3Ntc28JCXh0CWJvb2wJeHQJLQktCVlCQ0dFCXRhYnMgZGVzdHJ1Y3RpdmUsIG1hZ2ljIHNvIGNoYXIgKHQxMDYxKQotdGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoaGF6ZWx0aW5lKQordGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoSGF6ZWx0aW5lKQogdHJhbnNwYXJlbnRfdW5kZXJsaW5lCQl1bAlib29sCXVsCS0JLQlZQkNHRQl1bmRlcmxpbmUgY2hhcmFjdGVyIG92ZXJzdHJpa2VzCiB4b25feG9mZgkJCXhvbglib29sCXhvCS0JLQlZQi0tLQl0ZXJtaW5hbCB1c2VzIHhvbi94b2ZmIGhhbmRzaGFraW5nCiBuZWVkc194b25feG9mZgkJCW54b24JYm9vbAlueAktCS0JLS0tLS0JcGFkZGluZyB3aWxsIG5vdCB3b3JrLCB4b24veG9mZiByZXF1aXJlZApAQCAtMjcxLDcgKzI3MSw3IEBACiBsYWJlbF9oZWlnaHQJCQlsaAludW0JbGgJLQktCS0tLS0tCXJvd3MgaW4gZWFjaCBsYWJlbAogbGFiZWxfd2lkdGgJCQlsdwludW0JbHcJLQktCS0tLS0tCWNvbHVtbnMgaW4gZWFjaCBsYWJlbAogbWF4X2F0dHJpYnV0ZXMJCQltYQludW0JbWEJLQktCVlCQy0tCW1heGltdW0gY29tYmluZWQgYXR0cmlidXRlcyB0ZXJtaW5hbCBjYW4gaGFuZGxlCi1tYXhpbXVtX3dpbmRvd3MJCQl3bnVtCW51bQlNVwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgZGVmaW5lYWJsZSB3aW5kb3dzCittYXhpbXVtX3dpbmRvd3MJCQl3bnVtCW51bQlNVwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgZGVmaW5hYmxlIHdpbmRvd3MKICMgVGhlc2UgY2FtZSBpbiB3aXRoIFNWcjQncyBjb2xvciBzdXBwb3J0CiBtYXhfY29sb3JzCQkJY29sb3JzCW51bQlDbwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgY29sb3JzIG9uIHNjcmVlbgogbWF4X3BhaXJzCQkJcGFpcnMJbnVtCXBhCS0JLQktLS0tLQltYXhpbXVtIG51bWJlciBvZiBjb2xvci1wYWlycyBvbiB0aGUgc2NyZWVuCkBAIC03MTksNyArNzE5LDcgQEAKIGJpdF9pbWFnZV9uZXdsaW5lCQliaW5lbAlzdHIJWnoJLQkJLQktLS0tLQlNb3ZlIHRvIG5leHQgcm93IG9mIHRoZSBiaXQgaW1hZ2UKIGJpdF9pbWFnZV9jYXJyaWFnZV9yZXR1cm4JYmljcglzdHIJWXYJLQkJLQktLS0tLQlNb3ZlIHRvIGJlZ2lubmluZyBvZiBzYW1lIHJvdwogY29sb3JfbmFtZXMJCQljb2xvcm5tCXN0cglZdwktCQktCS0tLS0tCUdpdmUgbmFtZSBmb3IgY29sb3IgIzEKLWRlZmluZV9iaXRfaW1hZ2VfcmVnaW9uCQlkZWZiaQlzdHIJWXgJLQkJLQktLS0tLQlEZWZpbmUgcmVjdGFuZ3VhbGFyIGJpdCBpbWFnZSByZWdpb24KK2RlZmluZV9iaXRfaW1hZ2VfcmVnaW9uCQlkZWZiaQlzdHIJWXgJLQkJLQktLS0tLQlEZWZpbmUgcmVjdGFuZ3VsYXIgYml0IGltYWdlIHJlZ2lvbgogZW5kX2JpdF9pbWFnZV9yZWdpb24JCWVuZGJpCXN0cglZeQktCQktCS0tLS0tCUVuZCBhIGJpdC1pbWFnZSByZWdpb24KIHNldF9jb2xvcl9iYW5kCQlzZXRjb2xvcglzdHIJWXoJLQkJLQktLS0tLQlDaGFuZ2UgdG8gcmliYm9uIGNvbG9yICMxCiBzZXRfcGFnZV9sZW5ndGgJCQlzbGluZXMJc3RyCVlaCS0JCS0JLS0tLS0JU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGxpbmVzCkBAIC03MzgsMTEgKzczOCwxMyBAQAogIyUuYWQKICMlCiAjJS5pbiAuOGkKLSMlVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgdGhlc2UuICBUaGV5IGFyZSBzb21lIHBvc3QtNC4xIAotIyV2ZXJzaW9ucyBvZiBTeXN0ZW0gViBjdXJzZXMsIGUuZy4sIFNvbGFyaXMgMi41IGFuZCBJUklYIDYueC4KLSMlVGhlIFxmQm5jdXJzZXNcZlIgdGVybWNhcCBuYW1lcyBmb3IgdGhlbSBhcmUgaW52ZW50ZWQ7IGFjY29yZGluZyB0byB0aGUKLSMlWFNJIEN1cnNlcyBzdGFuZGFyZCwgdGhleSBoYXZlIG5vIHRlcm1jYXAgbmFtZXMuICBJZiB5b3VyIGNvbXBpbGVkIHRlcm1pbmZvCi0jJWVudHJpZXMgdXNlIHRoZXNlLCB0aGV5IG1heSBub3QgYmUgYmluYXJ5LWNvbXBhdGlibGUgd2l0aCBTeXN0ZW0gViB0ZXJtaW5mbworIyVUaGUgWFNJIEN1cnNlcyBzdGFuZGFyZCBhZGRlZCB0aGVzZSBoYXJkY29weSBjYXBhYmlsaXRpZXMuCisjJVRoZXkgd2VyZSB1c2VkIGluIHNvbWUgcG9zdC00LjEgdmVyc2lvbnMgb2YgU3lzdGVtIFYgY3Vyc2VzLAorIyVlLmcuLCBTb2xhcmlzIDIuNSBhbmQgSVJJWCA2LnguCisjJUV4Y2VwdCBmb3IgXGZCWUlcZlAsIHRoZSBcZkJuY3Vyc2VzXGZSIHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkLgorIyVBY2NvcmRpbmcgdG8gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIHRoZXkgaGF2ZSBubyB0ZXJtY2FwIG5hbWVzLgorIyVJZiB5b3VyIGNvbXBpbGVkIHRlcm1pbmZvIGVudHJpZXMgdXNlIHRoZXNlLAorIyV0aGV5IG1heSBub3QgYmUgYmluYXJ5LWNvbXBhdGlibGUgd2l0aCBTeXN0ZW0gViB0ZXJtaW5mbwogIyVlbnRyaWVzIGFmdGVyIFNWcjQuMTsgYmV3YXJlIQogIyUKICMlLm5hCkBAIC03NjAsNyArNzYyLDcgQEAKIGVudGVyX3RvcF9obF9tb2RlCQlldGhsbQlzdHIJWHQJLQkJLQktLS0tLQlFbnRlciB0b3AgaGlnaGxpZ2h0IG1vZGUKIGVudGVyX3ZlcnRpY2FsX2hsX21vZGUJCWV2aGxtCXN0cglYdgktCQktCS0tLS0tCUVudGVyIHZlcnRpY2FsIGhpZ2hsaWdodCBtb2RlCiBzZXRfYV9hdHRyaWJ1dGVzCQlzZ3IxCXN0cglzQQktCQktCS0tLS0tCURlZmluZSBzZWNvbmQgc2V0IG9mIHZpZGVvIGF0dHJpYnV0ZXMgIzEtIzYKLXNldF9wZ2xlbl9pbmNoCQkJc2xlbmd0aAlzdHIJc0wJLQkJLQktLS0tLQlZSSBTZXQgcGFnZSBsZW5ndGggdG8gIzEgaHVuZHJlZHRoIG9mIGFuIGluY2gKK3NldF9wZ2xlbl9pbmNoCQkJc2xlbmd0aAlzdHIJWUkJLQkJLQktLS0tLQlTZXQgcGFnZSBsZW5ndGggdG8gIzEgaHVuZHJlZHRoIG9mIGFuIGluY2ggKHNvbWUgaW1wbGVtZW50YXRpb25zIHVzZSBzTCBmb3IgdGVybWNhcCkuCiAjJS5URQogIyUuYWQKICMKQEAgLTEyNTYsOSArMTI1OCwzIEBACiAjIGtjbWQsIGtlbmQsIGtobHAsIGFuZCBrZjExLi4ua2Y2My4KICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLSMgTG9jYWwgVmFyaWFibGVzOgotIyBjYXNlLWZvbGQtc2VhcmNoOm5pbAotIyB0cnVuY2F0ZS1saW5lczp0Ci0jIEVuZDoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvQ2Fwcy5haXg0IGIvaW5jbHVkZS9DYXBzLmFpeDQKaW5kZXggNzU5MTNkYy4uOGZiNTNjMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9DYXBzLmFpeDQKKysrIGIvaW5jbHVkZS9DYXBzLmFpeDQKQEAgLTEsNSArMSw1IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMSwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yOCw3ICsyOCw3IEBACiAjCiAjIEF1dGhvcjogVGhvbWFzIERpY2tleQogIwotIyAkSWQ6IENhcHMuYWl4NCx2IDEuNyAyMDA2LzA1LzI3IDE1OjMzOjA0IHRvbSBFeHAgJAorIyAkSWQ6IENhcHMuYWl4NCx2IDEuMTAgMjAxNS8wNC8yNiAxNToyNTo1NSB0b20gRXhwICQKICMKICMgVGhpcyBpcyBhbiBhZGFwdGF0aW9uIG9mIG5jdXJzZXMnIHRlcm1jYXAvdGVybWluZm8gY2FwYWJpbGl0eSB0YWJsZSwgd2hpY2gKICMgaXMgZGVzaWduZWQgdG8gYWxpZ24gd2l0aCBBSVggNC54J3MgdGVybWluZm8uCkBAIC05Nyw3ICs5Nyw3IEBACiAjIDMuIExpc3QgaXQgaW4gdGhlIHN0YW5kYXJkIHRhYmxlLiAgWW91IGFsbW9zdCBjZXJ0YWlubHkgZG8gKm5vdCogd2FudAogIyB0byBkbyB0aGlzIC0tIHRoZSBjYXBhYmlsaXRpZXMgaW4gdGhhdCBvbmUsIGFuZCB0aGVpciBvcmRlciwgaGF2ZSBiZWVuCiAjIGNhcmVmdWxseSBjaG9zZW4gdG8gYmUgU1ZyNC1iaW5hcnktY29tcGF0aWJsZSB3aGVuIHRoZXkncmUgd3JpdHRlbiBvdXQKLSMgYXMgYSB0ZXJtaW5mbyBvYmplY3QsIGFuZCBicmVha2luZyB0aGlzIHdvdWxkIGJlIGJhZC4gIEl0J3MgdXAgdGhlIG5jdXJzZXMKKyMgYXMgYSB0ZXJtaW5mbyBvYmplY3QsIGFuZCBicmVha2luZyB0aGlzIHdvdWxkIGJlIGJhZC4gIEl0J3MgdXAgdG8gdGhlIG5jdXJzZXMKICMgbGlicmFyeSB3aGF0IHRvIGRvIHdpdGggdGhlIHRlcm1pbmZvIGRhdGEgYWZ0ZXIgaXQncyByZWFkIGluLgogIwogIyA0LiBMaXN0IGl0IGluIHRoZSBhbGlhc2VzIHRhYmxlIHdpdGggYW4gSUdOT1JFIHRhcmdldCBmaWVsZC4gIElmIHlvdQpAQCAtMjI3LDcgKzIyNyw3IEBACiBvdmVyX3N0cmlrZQkJCW9zCWJvb2wJb3MJLQktCVlCQ0ctCXRlcm1pbmFsIGNhbiBvdmVyc3RyaWtlCiBzdGF0dXNfbGluZV9lc2Nfb2sJCWVzbG9rCWJvb2wJZXMJLQktCVlCLUctCWVzY2FwZSBjYW4gYmUgdXNlZCBvbiB0aGUgc3RhdHVzIGxpbmUKIGRlc3RfdGFic19tYWdpY19zbXNvCQl4dAlib29sCXh0CS0JLQlZQkNHRQl0YWJzIGRlc3RydWN0aXZlLCBtYWdpYyBzbyBjaGFyICh0MTA2MSkKLXRpbGRlX2dsaXRjaAkJCWh6CWJvb2wJaHoJLQktCVlCLUdFCWNhbm5vdCBwcmludCB+J3MgKGhhemVsdGluZSkKK3RpbGRlX2dsaXRjaAkJCWh6CWJvb2wJaHoJLQktCVlCLUdFCWNhbm5vdCBwcmludCB+J3MgKEhhemVsdGluZSkKIHRyYW5zcGFyZW50X3VuZGVybGluZQkJdWwJYm9vbAl1bAktCS0JWUJDR0UJdW5kZXJsaW5lIGNoYXJhY3RlciBvdmVyc3RyaWtlcwogeG9uX3hvZmYJCQl4b24JYm9vbAl4bwktCS0JWUItLS0JdGVybWluYWwgdXNlcyB4b24veG9mZiBoYW5kc2hha2luZwogbmVlZHNfeG9uX3hvZmYJCQlueG9uCWJvb2wJbngJLQktCS0tLS0tCXBhZGRpbmcgd2lsbCBub3Qgd29yaywgeG9uL3hvZmYgcmVxdWlyZWQKQEAgLTI3MSw3ICsyNzEsNyBAQAogbGFiZWxfaGVpZ2h0CQkJbGgJbnVtCWxoCS0JLQktLS0tLQlyb3dzIGluIGVhY2ggbGFiZWwKIGxhYmVsX3dpZHRoCQkJbHcJbnVtCWx3CS0JLQktLS0tLQljb2x1bW5zIGluIGVhY2ggbGFiZWwKIG1heF9hdHRyaWJ1dGVzCQkJbWEJbnVtCW1hCS0JLQlZQkMtLQltYXhpbXVtIGNvbWJpbmVkIGF0dHJpYnV0ZXMgdGVybWluYWwgY2FuIGhhbmRsZQotbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluZWFibGUgd2luZG93cworbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluYWJsZSB3aW5kb3dzCiAjIFRoZXNlIGNhbWUgaW4gd2l0aCBTVnI0J3MgY29sb3Igc3VwcG9ydAogbWF4X2NvbG9ycwkJCWNvbG9ycwludW0JQ28JLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGNvbG9ycyBvbiBzY3JlZW4KIG1heF9wYWlycwkJCXBhaXJzCW51bQlwYQktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgY29sb3ItcGFpcnMgb24gdGhlIHNjcmVlbgpAQCAtODIxLDcgKzgyMSw3IEBACiBiaXRfaW1hZ2VfbmV3bGluZQkJYmluZWwJc3RyCVp6CS0JCS0JLS0tLS0JTW92ZSB0byBuZXh0IHJvdyBvZiB0aGUgYml0IGltYWdlCiBiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuCWJpY3IJc3RyCVl2CS0JCS0JLS0tLS0JTW92ZSB0byBiZWdpbm5pbmcgb2Ygc2FtZSByb3cKIGNvbG9yX25hbWVzCQkJY29sb3JubQlzdHIJWXcJLQkJLQktLS0tLQlHaXZlIG5hbWUgZm9yIGNvbG9yICMxCi1kZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1YWxhciBiaXQgaW1hZ2UgcmVnaW9uCitkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1bGFyIGJpdCBpbWFnZSByZWdpb24KIGVuZF9iaXRfaW1hZ2VfcmVnaW9uCQllbmRiaQlzdHIJWXkJLQkJLQktLS0tLQlFbmQgYSBiaXQtaW1hZ2UgcmVnaW9uCiBzZXRfY29sb3JfYmFuZAkJc2V0Y29sb3IJc3RyCVl6CS0JCS0JLS0tLS0JQ2hhbmdlIHRvIHJpYmJvbiBjb2xvciAjMQogc2V0X3BhZ2VfbGVuZ3RoCQkJc2xpbmVzCXN0cglZWgktCQktCS0tLS0tCVNldCBwYWdlIGxlbmd0aCB0byAjMSBsaW5lcwpAQCAtODQwLDExICs4NDAsMTMgQEAKICMlLmFkCiAjJQogIyUuaW4gLjhpCi0jJVRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkIGFkZGVkIHRoZXNlLiAgVGhleSBhcmUgc29tZSBwb3N0LTQuMSAKLSMldmVyc2lvbnMgb2YgU3lzdGVtIFYgY3Vyc2VzLCBlLmcuLCBTb2xhcmlzIDIuNSBhbmQgSVJJWCA2LnguCi0jJVRoZSBcZkJuY3Vyc2VzXGZSIHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkOyBhY2NvcmRpbmcgdG8gdGhlCi0jJVhTSSBDdXJzZXMgc3RhbmRhcmQsIHRoZXkgaGF2ZSBubyB0ZXJtY2FwIG5hbWVzLiAgSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbwotIyVlbnRyaWVzIHVzZSB0aGVzZSwgdGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KKyMlVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgdGhlc2UgaGFyZGNvcHkgY2FwYWJpbGl0aWVzLgorIyVUaGV5IHdlcmUgdXNlZCBpbiBzb21lIHBvc3QtNC4xIHZlcnNpb25zIG9mIFN5c3RlbSBWIGN1cnNlcywKKyMlZS5nLiwgU29sYXJpcyAyLjUgYW5kIElSSVggNi54LgorIyVFeGNlcHQgZm9yIFxmQllJXGZQLCB0aGUgXGZCbmN1cnNlc1xmUiB0ZXJtY2FwIG5hbWVzIGZvciB0aGVtIGFyZSBpbnZlbnRlZC4KKyMlQWNjb3JkaW5nIHRvIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCB0aGV5IGhhdmUgbm8gdGVybWNhcCBuYW1lcy4KKyMlSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbyBlbnRyaWVzIHVzZSB0aGVzZSwKKyMldGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KICMlZW50cmllcyBhZnRlciBTVnI0LjE7IGJld2FyZSEKICMlCiAjJS5uYQpAQCAtODYyLDcgKzg2NCw3IEBACiBlbnRlcl90b3BfaGxfbW9kZQkJZXRobG0Jc3RyCVh0CS0JCS0JLS0tLS0JRW50ZXIgdG9wIGhpZ2hsaWdodCBtb2RlCiBlbnRlcl92ZXJ0aWNhbF9obF9tb2RlCQlldmhsbQlzdHIJWHYJLQkJLQktLS0tLQlFbnRlciB2ZXJ0aWNhbCBoaWdobGlnaHQgbW9kZQogc2V0X2FfYXR0cmlidXRlcwkJc2dyMQlzdHIJc0EJLQkJLQktLS0tLQlEZWZpbmUgc2Vjb25kIHNldCBvZiB2aWRlbyBhdHRyaWJ1dGVzICMxLSM2Ci1zZXRfcGdsZW5faW5jaAkJCXNsZW5ndGgJc3RyCXNMCS0JCS0JLS0tLS0JWUkgU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGh1bmRyZWR0aCBvZiBhbiBpbmNoCitzZXRfcGdsZW5faW5jaAkJCXNsZW5ndGgJc3RyCVlJCS0JCS0JLS0tLS0JU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGh1bmRyZWR0aCBvZiBhbiBpbmNoIChzb21lIGltcGxlbWVudGF0aW9ucyB1c2Ugc0wgZm9yIHRlcm1jYXApLgogIyUuVEUKICMlLmFkCiAjCkBAIC0xMjQ3LDkgKzEyNDksMyBAQAogIyBrY21kLCBrZW5kLCBraGxwLCBhbmQga2YxMS4uLmtmNjMuCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgY2FzZS1mb2xkLXNlYXJjaDpuaWwKLSMgdHJ1bmNhdGUtbGluZXM6dAotIyBFbmQ6CmRpZmYgLS1naXQgYS9pbmNsdWRlL0NhcHMuaHB1eDExIGIvaW5jbHVkZS9DYXBzLmhwdXgxMQppbmRleCBiNzRhY2RiLi41MTJhYTgyIDEwMDY0NAotLS0gYS9pbmNsdWRlL0NhcHMuaHB1eDExCisrKyBiL2luY2x1ZGUvQ2Fwcy5ocHV4MTEKQEAgLTEsNSArMSw1IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yOCw3ICsyOCw3IEBACiAjCiAjIEF1dGhvcjogVGhvbWFzIERpY2tleQogIwotIyAkSWQ6IENhcHMuaHB1eDExLHYgMS40IDIwMDYvMDUvMjcgMTU6MzM6MDQgdG9tIEV4cCAkCisjICRJZDogQ2Fwcy5ocHV4MTEsdiAxLjcgMjAxNS8wNC8yNiAxNToyNTo1NSB0b20gRXhwICQKICMKICMgVGhpcyBpcyBhbiBhZGFwdGF0aW9uIG9mIG5jdXJzZXMnIHRlcm1jYXAvdGVybWluZm8gY2FwYWJpbGl0eSB0YWJsZSwgd2hpY2gKICMgaXMgZGVzaWduZWQgdG8gYWxpZ24gd2l0aCBIUFVYIDExLngncyB0ZXJtaW5mby4KQEAgLTk3LDcgKzk3LDcgQEAKICMgMy4gTGlzdCBpdCBpbiB0aGUgc3RhbmRhcmQgdGFibGUuICBZb3UgYWxtb3N0IGNlcnRhaW5seSBkbyAqbm90KiB3YW50CiAjIHRvIGRvIHRoaXMgLS0gdGhlIGNhcGFiaWxpdGllcyBpbiB0aGF0IG9uZSwgYW5kIHRoZWlyIG9yZGVyLCBoYXZlIGJlZW4KICMgY2FyZWZ1bGx5IGNob3NlbiB0byBiZSBTVnI0LWJpbmFyeS1jb21wYXRpYmxlIHdoZW4gdGhleSdyZSB3cml0dGVuIG91dAotIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0aGUgbmN1cnNlcworIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0byB0aGUgbmN1cnNlcwogIyBsaWJyYXJ5IHdoYXQgdG8gZG8gd2l0aCB0aGUgdGVybWluZm8gZGF0YSBhZnRlciBpdCdzIHJlYWQgaW4uCiAjCiAjIDQuIExpc3QgaXQgaW4gdGhlIGFsaWFzZXMgdGFibGUgd2l0aCBhbiBJR05PUkUgdGFyZ2V0IGZpZWxkLiAgSWYgeW91CkBAIC0yMjcsNyArMjI3LDcgQEAKIG92ZXJfc3RyaWtlCQkJb3MJYm9vbAlvcwktCS0JWUJDRy0JdGVybWluYWwgY2FuIG92ZXJzdHJpa2UKIHN0YXR1c19saW5lX2VzY19vawkJZXNsb2sJYm9vbAllcwktCS0JWUItRy0JZXNjYXBlIGNhbiBiZSB1c2VkIG9uIHRoZSBzdGF0dXMgbGluZQogZGVzdF90YWJzX21hZ2ljX3Ntc28JCXh0CWJvb2wJeHQJLQktCVlCQ0dFCXRhYnMgZGVzdHJ1Y3RpdmUsIG1hZ2ljIHNvIGNoYXIgKHQxMDYxKQotdGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoaGF6ZWx0aW5lKQordGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoSGF6ZWx0aW5lKQogdHJhbnNwYXJlbnRfdW5kZXJsaW5lCQl1bAlib29sCXVsCS0JLQlZQkNHRQl1bmRlcmxpbmUgY2hhcmFjdGVyIG92ZXJzdHJpa2VzCiB4b25feG9mZgkJCXhvbglib29sCXhvCS0JLQlZQi0tLQl0ZXJtaW5hbCB1c2VzIHhvbi94b2ZmIGhhbmRzaGFraW5nCiAjIGVuZCBib29sZWFucyBmb3IgSFBVWCA5LCAxMCAobm9uLWNvbG9yIGN1cnNlcykKQEAgLTI3Myw3ICsyNzMsNyBAQAogbGFiZWxfaGVpZ2h0CQkJbGgJbnVtCWxoCS0JLQktLS0tLQlyb3dzIGluIGVhY2ggbGFiZWwKIGxhYmVsX3dpZHRoCQkJbHcJbnVtCWx3CS0JLQktLS0tLQljb2x1bW5zIGluIGVhY2ggbGFiZWwKIG1heF9hdHRyaWJ1dGVzCQkJbWEJbnVtCW1hCS0JLQlZQkMtLQltYXhpbXVtIGNvbWJpbmVkIGF0dHJpYnV0ZXMgdGVybWluYWwgY2FuIGhhbmRsZQotbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluZWFibGUgd2luZG93cworbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluYWJsZSB3aW5kb3dzCiAjIFRoZXNlIGNhbWUgaW4gd2l0aCBTVnI0J3MgY29sb3Igc3VwcG9ydAogbWF4X2NvbG9ycwkJCWNvbG9ycwludW0JQ28JLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGNvbG9ycyBvbiBzY3JlZW4KIG1heF9wYWlycwkJCXBhaXJzCW51bQlwYQktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgY29sb3ItcGFpcnMgb24gdGhlIHNjcmVlbgpAQCAtNzI3LDcgKzcyNyw3IEBACiBiaXRfaW1hZ2VfbmV3bGluZQkJYmluZWwJc3RyCVp6CS0JCS0JLS0tLS0JTW92ZSB0byBuZXh0IHJvdyBvZiB0aGUgYml0IGltYWdlCiBiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuCWJpY3IJc3RyCVl2CS0JCS0JLS0tLS0JTW92ZSB0byBiZWdpbm5pbmcgb2Ygc2FtZSByb3cKIGNvbG9yX25hbWVzCQkJY29sb3JubQlzdHIJWXcJLQkJLQktLS0tLQlHaXZlIG5hbWUgZm9yIGNvbG9yICMxCi1kZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1YWxhciBiaXQgaW1hZ2UgcmVnaW9uCitkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1bGFyIGJpdCBpbWFnZSByZWdpb24KIGVuZF9iaXRfaW1hZ2VfcmVnaW9uCQllbmRiaQlzdHIJWXkJLQkJLQktLS0tLQlFbmQgYSBiaXQtaW1hZ2UgcmVnaW9uCiBzZXRfY29sb3JfYmFuZAkJc2V0Y29sb3IJc3RyCVl6CS0JCS0JLS0tLS0JQ2hhbmdlIHRvIHJpYmJvbiBjb2xvciAjMQogc2V0X3BhZ2VfbGVuZ3RoCQkJc2xpbmVzCXN0cglZWgktCQktCS0tLS0tCVNldCBwYWdlIGxlbmd0aCB0byAjMSBsaW5lcwpAQCAtNzQ2LDExICs3NDYsMTMgQEAKICMlLmFkCiAjJQogIyUuaW4gLjhpCi0jJVRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkIGFkZGVkIHRoZXNlLiAgVGhleSBhcmUgc29tZSBwb3N0LTQuMSAKLSMldmVyc2lvbnMgb2YgU3lzdGVtIFYgY3Vyc2VzLCBlLmcuLCBTb2xhcmlzIDIuNSBhbmQgSVJJWCA2LnguCi0jJVRoZSBcZkJuY3Vyc2VzXGZSIHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkOyBhY2NvcmRpbmcgdG8gdGhlCi0jJVhTSSBDdXJzZXMgc3RhbmRhcmQsIHRoZXkgaGF2ZSBubyB0ZXJtY2FwIG5hbWVzLiAgSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbwotIyVlbnRyaWVzIHVzZSB0aGVzZSwgdGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KKyMlVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgdGhlc2UgaGFyZGNvcHkgY2FwYWJpbGl0aWVzLgorIyVUaGV5IHdlcmUgdXNlZCBpbiBzb21lIHBvc3QtNC4xIHZlcnNpb25zIG9mIFN5c3RlbSBWIGN1cnNlcywKKyMlZS5nLiwgU29sYXJpcyAyLjUgYW5kIElSSVggNi54LgorIyVFeGNlcHQgZm9yIFxmQllJXGZQLCB0aGUgXGZCbmN1cnNlc1xmUiB0ZXJtY2FwIG5hbWVzIGZvciB0aGVtIGFyZSBpbnZlbnRlZC4KKyMlQWNjb3JkaW5nIHRvIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCB0aGV5IGhhdmUgbm8gdGVybWNhcCBuYW1lcy4KKyMlSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbyBlbnRyaWVzIHVzZSB0aGVzZSwKKyMldGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KICMlZW50cmllcyBhZnRlciBTVnI0LjE7IGJld2FyZSEKICMlCiAjJS5uYQpAQCAtNzYxLDcgKzc2Myw3IEBACiAjJWx3MjUgbHc2IGx3MiBsdzIwLgogIyVcZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKICMlXGZCU3RyaW5nCW5hbWUJQ29kZVxmUgotc2V0X3BnbGVuX2luY2gJCQlzbGVuZ3RoCXN0cglzTAktCQktCS0tLS0tCVlJIFNldCBwYWdlIGxlbmd0aCB0byAjMSBodW5kcmVkdGggb2YgYW4gaW5jaAorc2V0X3BnbGVuX2luY2gJCQlzbGVuZ3RoCXN0cglZSQktCQktCS0tLS0tCVNldCBwYWdlIGxlbmd0aCB0byAjMSBodW5kcmVkdGggb2YgYW4gaW5jaCAoc29tZSBpbXBsZW1lbnRhdGlvbnMgdXNlIHNMIGZvciB0ZXJtY2FwKS4KIGVudGVyX2hvcml6b250YWxfaGxfbW9kZQllaGhsbQlzdHIJWGgJLQkJLQktLS0tLQlFbnRlciBob3Jpem9udGFsIGhpZ2hsaWdodCBtb2RlCiBlbnRlcl9sZWZ0X2hsX21vZGUJCWVsaGxtCXN0cglYbAktCQktCS0tLS0tCUVudGVyIGxlZnQgaGlnaGxpZ2h0IG1vZGUKIGVudGVyX2xvd19obF9tb2RlCQllbG9obG0Jc3RyCVhvCS0JCS0JLS0tLS0JRW50ZXIgbG93IGhpZ2hsaWdodCBtb2RlCkBAIC0xMjcwLDkgKzEyNzIsMyBAQAogIyBrY21kLCBrZW5kLCBraGxwLCBhbmQga2YxMS4uLmtmNjMuCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgY2FzZS1mb2xkLXNlYXJjaDpuaWwKLSMgdHJ1bmNhdGUtbGluZXM6dAotIyBFbmQ6CmRpZmYgLS1naXQgYS9pbmNsdWRlL0NhcHMua2V5cyBiL2luY2x1ZGUvQ2Fwcy5rZXlzCmluZGV4IDY4NDFhZTUuLmViZjM5MmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvQ2Fwcy5rZXlzCisrKyBiL2luY2x1ZGUvQ2Fwcy5rZXlzCkBAIC0xLDUgKzEsNSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMS0yMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAyMDAxLTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjksNyArMjksNyBAQAogIyBBdXRob3I6IFRob21hcyBEaWNrZXkKICMgICAgYW5kOiBJbHlhIFpha2hhcmV2aWNoCiAjCi0jICRJZDogQ2Fwcy5rZXlzLHYgMS4zIDIwMDYvMDUvMjcgMTU6MzM6MDQgdG9tIEV4cCAkCisjICRJZDogQ2Fwcy5rZXlzLHYgMS44IDIwMTUvMDQvMjYgMTU6MjU6NTUgdG9tIEV4cCAkCiAjCiAjIFRoaXMgaXMgYW4gYWRhcHRhdGlvbiBvZiBuY3Vyc2VzJyB0ZXJtY2FwL3Rlcm1pbmZvIGNhcGFiaWxpdHkgdGFibGUsIHdoaWNoCiAjIGlzIGlsbHVzdHJhdGVzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gdG8gZGVzY3JpYmUgYWx0LSwgc2hpZnQtIGFuZApAQCAtOTksNyArOTksNyBAQAogIyAzLiBMaXN0IGl0IGluIHRoZSBzdGFuZGFyZCB0YWJsZS4gIFlvdSBhbG1vc3QgY2VydGFpbmx5IGRvICpub3QqIHdhbnQKICMgdG8gZG8gdGhpcyAtLSB0aGUgY2FwYWJpbGl0aWVzIGluIHRoYXQgb25lLCBhbmQgdGhlaXIgb3JkZXIsIGhhdmUgYmVlbgogIyBjYXJlZnVsbHkgY2hvc2VuIHRvIGJlIFNWcjQtYmluYXJ5LWNvbXBhdGlibGUgd2hlbiB0aGV5J3JlIHdyaXR0ZW4gb3V0Ci0jIGFzIGEgdGVybWluZm8gb2JqZWN0LCBhbmQgYnJlYWtpbmcgdGhpcyB3b3VsZCBiZSBiYWQuICBJdCdzIHVwIHRoZSBuY3Vyc2VzCisjIGFzIGEgdGVybWluZm8gb2JqZWN0LCBhbmQgYnJlYWtpbmcgdGhpcyB3b3VsZCBiZSBiYWQuICBJdCdzIHVwIHRvIHRoZSBuY3Vyc2VzCiAjIGxpYnJhcnkgd2hhdCB0byBkbyB3aXRoIHRoZSB0ZXJtaW5mbyBkYXRhIGFmdGVyIGl0J3MgcmVhZCBpbi4KICMKICMgNC4gTGlzdCBpdCBpbiB0aGUgYWxpYXNlcyB0YWJsZSB3aXRoIGFuIElHTk9SRSB0YXJnZXQgZmllbGQuICBJZiB5b3UKQEAgLTIyOSwxMSArMjI5LDExIEBACiBvdmVyX3N0cmlrZQkJCW9zCWJvb2wJb3MJLQktCVlCQ0ctCXRlcm1pbmFsIGNhbiBvdmVyc3RyaWtlCiBzdGF0dXNfbGluZV9lc2Nfb2sJCWVzbG9rCWJvb2wJZXMJLQktCVlCLUctCWVzY2FwZSBjYW4gYmUgdXNlZCBvbiB0aGUgc3RhdHVzIGxpbmUKIGRlc3RfdGFic19tYWdpY19zbXNvCQl4dAlib29sCXh0CS0JLQlZQkNHRQl0YWJzIGRlc3RydWN0aXZlLCBtYWdpYyBzbyBjaGFyICh0MTA2MSkKLXRpbGRlX2dsaXRjaAkJCWh6CWJvb2wJaHoJLQktCVlCLUdFCWNhbid0IHByaW50IH4ncyAoaGF6ZWx0aW5lKQordGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoSGF6ZWx0aW5lKQogdHJhbnNwYXJlbnRfdW5kZXJsaW5lCQl1bAlib29sCXVsCS0JLQlZQkNHRQl1bmRlcmxpbmUgY2hhcmFjdGVyIG92ZXJzdHJpa2VzCiB4b25feG9mZgkJCXhvbglib29sCXhvCS0JLQlZQi0tLQl0ZXJtaW5hbCB1c2VzIHhvbi94b2ZmIGhhbmRzaGFraW5nCi1uZWVkc194b25feG9mZgkJCW54b24JYm9vbAlueAktCS0JLS0tLS0JcGFkZGluZyB3b24ndCB3b3JrLCB4b24veG9mZiByZXF1aXJlZAotcHJ0cl9zaWxlbnQJCQltYzVpCWJvb2wJNWkJLQktCS0tLS0tCXByaW50ZXIgd29uJ3QgZWNobyBvbiBzY3JlZW4KK25lZWRzX3hvbl94b2ZmCQkJbnhvbglib29sCW54CS0JLQktLS0tLQlwYWRkaW5nIHdpbGwgbm90IHdvcmssIHhvbi94b2ZmIHJlcXVpcmVkCitwcnRyX3NpbGVudAkJCW1jNWkJYm9vbAk1aQktCS0JLS0tLS0JcHJpbnRlciB3aWxsIG5vdCBlY2hvIG9uIHNjcmVlbgogaGFyZF9jdXJzb3IJCQljaHRzCWJvb2wJSEMJLQktCS0tLS0tCWN1cnNvciBpcyBoYXJkIHRvIHNlZQogbm9uX3Jldl9ybWN1cAkJCW5ycm1jCWJvb2wJTlIJLQktCS0tLS0tCXNtY3VwIGRvZXMgbm90IHJldmVyc2Ugcm1jdXAKIG5vX3BhZF9jaGFyCQkJbnBjCWJvb2wJTlAJLQktCS0tLS0tCXBhZCBjaGFyYWN0ZXIgZG9lcyBub3QgZXhpc3QKQEAgLTI3MywxMSArMjczLDExIEBACiBsYWJlbF9oZWlnaHQJCQlsaAludW0JbGgJLQktCS0tLS0tCXJvd3MgaW4gZWFjaCBsYWJlbAogbGFiZWxfd2lkdGgJCQlsdwludW0JbHcJLQktCS0tLS0tCWNvbHVtbnMgaW4gZWFjaCBsYWJlbAogbWF4X2F0dHJpYnV0ZXMJCQltYQludW0JbWEJLQktCVlCQy0tCW1heGltdW0gY29tYmluZWQgYXR0cmlidXRlcyB0ZXJtaW5hbCBjYW4gaGFuZGxlCi1tYXhpbXVtX3dpbmRvd3MJCQl3bnVtCW51bQlNVwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgZGVmaW5lYWJsZSB3aW5kb3dzCittYXhpbXVtX3dpbmRvd3MJCQl3bnVtCW51bQlNVwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgZGVmaW5hYmxlIHdpbmRvd3MKICMgVGhlc2UgY2FtZSBpbiB3aXRoIFNWcjQncyBjb2xvciBzdXBwb3J0CiBtYXhfY29sb3JzCQkJY29sb3JzCW51bQlDbwktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgY29sb3JzIG9uIHNjcmVlbgogbWF4X3BhaXJzCQkJcGFpcnMJbnVtCXBhCS0JLQktLS0tLQltYXhpbXVtIG51bWJlciBvZiBjb2xvci1wYWlycyBvbiB0aGUgc2NyZWVuCi1ub19jb2xvcl92aWRlbwkJCW5jdgludW0JTkMJLQktCS0tLS0tCXZpZGVvIGF0dHJpYnV0ZXMgdGhhdCBjYW4ndCBiZSB1c2VkIHdpdGggY29sb3JzCitub19jb2xvcl92aWRlbwkJCW5jdgludW0JTkMJLQktCS0tLS0tCXZpZGVvIGF0dHJpYnV0ZXMgdGhhdCBjYW5ub3QgYmUgdXNlZCB3aXRoIGNvbG9ycwogIyUuVEUKICMlLmFkCiAjJQpAQCAtODA5LDcgKzgwOSw3IEBACiBiaXRfaW1hZ2VfbmV3bGluZQkJYmluZWwJc3RyCVp6CS0JCS0JLS0tLS0JTW92ZSB0byBuZXh0IHJvdyBvZiB0aGUgYml0IGltYWdlCiBiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuCWJpY3IJc3RyCVl2CS0JCS0JLS0tLS0JTW92ZSB0byBiZWdpbm5pbmcgb2Ygc2FtZSByb3cKIGNvbG9yX25hbWVzCQkJY29sb3JubQlzdHIJWXcJLQkJLQktLS0tLQlHaXZlIG5hbWUgZm9yIGNvbG9yICMxCi1kZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1YWxhciBiaXQgaW1hZ2UgcmVnaW9uCitkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1bGFyIGJpdCBpbWFnZSByZWdpb24KIGVuZF9iaXRfaW1hZ2VfcmVnaW9uCQllbmRiaQlzdHIJWXkJLQkJLQktLS0tLQlFbmQgYSBiaXQtaW1hZ2UgcmVnaW9uCiBzZXRfY29sb3JfYmFuZAkJc2V0Y29sb3IJc3RyCVl6CS0JCS0JLS0tLS0JQ2hhbmdlIHRvIHJpYmJvbiBjb2xvciAjMQogc2V0X3BhZ2VfbGVuZ3RoCQkJc2xpbmVzCXN0cglZWgktCQktCS0tLS0tCVNldCBwYWdlIGxlbmd0aCB0byAjMSBsaW5lcwpAQCAtODI4LDExICs4MjgsMTMgQEAKICMlLmFkCiAjJQogIyUuaW4gLjhpCi0jJVRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkIGFkZGVkIHRoZXNlLiAgVGhleSBhcmUgc29tZSBwb3N0LTQuMSAKLSMldmVyc2lvbnMgb2YgU3lzdGVtIFYgY3Vyc2VzLCBlLmcuLCBTb2xhcmlzIDIuNSBhbmQgSVJJWCA2LnguCi0jJVRoZSBcZkJuY3Vyc2VzXGZSIHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkOyBhY2NvcmRpbmcgdG8gdGhlCi0jJVhTSSBDdXJzZXMgc3RhbmRhcmQsIHRoZXkgaGF2ZSBubyB0ZXJtY2FwIG5hbWVzLiAgSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbwotIyVlbnRyaWVzIHVzZSB0aGVzZSwgdGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KKyMlVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgdGhlc2UgaGFyZGNvcHkgY2FwYWJpbGl0aWVzLgorIyVUaGV5IHdlcmUgdXNlZCBpbiBzb21lIHBvc3QtNC4xIHZlcnNpb25zIG9mIFN5c3RlbSBWIGN1cnNlcywKKyMlZS5nLiwgU29sYXJpcyAyLjUgYW5kIElSSVggNi54LgorIyVFeGNlcHQgZm9yIFxmQllJXGZQLCB0aGUgXGZCbmN1cnNlc1xmUiB0ZXJtY2FwIG5hbWVzIGZvciB0aGVtIGFyZSBpbnZlbnRlZC4KKyMlQWNjb3JkaW5nIHRvIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCB0aGV5IGhhdmUgbm8gdGVybWNhcCBuYW1lcy4KKyMlSWYgeW91ciBjb21waWxlZCB0ZXJtaW5mbyBlbnRyaWVzIHVzZSB0aGVzZSwKKyMldGhleSBtYXkgbm90IGJlIGJpbmFyeS1jb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgdGVybWluZm8KICMlZW50cmllcyBhZnRlciBTVnI0LjE7IGJld2FyZSEKICMlCiAjJS5uYQpAQCAtODUwLDcgKzg1Miw3IEBACiBlbnRlcl90b3BfaGxfbW9kZQkJZXRobG0Jc3RyCVh0CS0JCS0JLS0tLS0JRW50ZXIgdG9wIGhpZ2hsaWdodCBtb2RlCiBlbnRlcl92ZXJ0aWNhbF9obF9tb2RlCQlldmhsbQlzdHIJWHYJLQkJLQktLS0tLQlFbnRlciB2ZXJ0aWNhbCBoaWdobGlnaHQgbW9kZQogc2V0X2FfYXR0cmlidXRlcwkJc2dyMQlzdHIJc0EJLQkJLQktLS0tLQlEZWZpbmUgc2Vjb25kIHNldCBvZiB2aWRlbyBhdHRyaWJ1dGVzICMxLSM2Ci1zZXRfcGdsZW5faW5jaAkJCXNsZW5ndGgJc3RyCXNMCS0JCS0JLS0tLS0JWUkgU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGh1bmRyZWR0aCBvZiBhbiBpbmNoCitzZXRfcGdsZW5faW5jaAkJCXNsZW5ndGgJc3RyCVlJCS0JCS0JLS0tLS0JU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGh1bmRyZWR0aCBvZiBhbiBpbmNoIChzb21lIGltcGxlbWVudGF0aW9ucyB1c2Ugc0wgZm9yIHRlcm1jYXApLgogIyUuVEUKICMlLmFkCiAjCkBAIC0xMzQ2LDkgKzEzNDgsMyBAQAogIyBrY21kLCBrZW5kLCBraGxwLCBhbmQga2YxMS4uLmtmNjMuCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgY2FzZS1mb2xkLXNlYXJjaDpuaWwKLSMgdHJ1bmNhdGUtbGluZXM6dAotIyBFbmQ6CmRpZmYgLS1naXQgYS9pbmNsdWRlL0NhcHMub3NmMXI1IGIvaW5jbHVkZS9DYXBzLm9zZjFyNQppbmRleCBkOWVhNTY0Li5lMWJmZTBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL0NhcHMub3NmMXI1CisrKyBiL2luY2x1ZGUvQ2Fwcy5vc2YxcjUKQEAgLTEsNSArMSw1IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yOCw3ICsyOCw3IEBACiAjCiAjIEF1dGhvcjogVGhvbWFzIERpY2tleQogIwotIyAkSWQ6IENhcHMub3NmMXI1LHYgMS40IDIwMDYvMDUvMjcgMTU6MzM6MDQgdG9tIEV4cCAkCisjICRJZDogQ2Fwcy5vc2YxcjUsdiAxLjcgMjAxNS8wNC8yNiAxNToyNTo1NSB0b20gRXhwICQKICMKICMgVGhpcyBpcyBhbiBhZGFwdGF0aW9uIG9mIG5jdXJzZXMnIHRlcm1jYXAvdGVybWluZm8gY2FwYWJpbGl0eSB0YWJsZSwgd2hpY2gKICMgaXMgZGVzaWduZWQgdG8gYWxpZ24gd2l0aCBPU0YvMSB2ZXJzaW9uIDUgKFRydTY0KSB0ZXJtaW5mby4KQEAgLTk3LDcgKzk3LDcgQEAKICMgMy4gTGlzdCBpdCBpbiB0aGUgc3RhbmRhcmQgdGFibGUuICBZb3UgYWxtb3N0IGNlcnRhaW5seSBkbyAqbm90KiB3YW50CiAjIHRvIGRvIHRoaXMgLS0gdGhlIGNhcGFiaWxpdGllcyBpbiB0aGF0IG9uZSwgYW5kIHRoZWlyIG9yZGVyLCBoYXZlIGJlZW4KICMgY2FyZWZ1bGx5IGNob3NlbiB0byBiZSBTVnI0LWJpbmFyeS1jb21wYXRpYmxlIHdoZW4gdGhleSdyZSB3cml0dGVuIG91dAotIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0aGUgbmN1cnNlcworIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0byB0aGUgbmN1cnNlcwogIyBsaWJyYXJ5IHdoYXQgdG8gZG8gd2l0aCB0aGUgdGVybWluZm8gZGF0YSBhZnRlciBpdCdzIHJlYWQgaW4uCiAjCiAjIDQuIExpc3QgaXQgaW4gdGhlIGFsaWFzZXMgdGFibGUgd2l0aCBhbiBJR05PUkUgdGFyZ2V0IGZpZWxkLiAgSWYgeW91CkBAIC0yMjcsNyArMjI3LDcgQEAKIG92ZXJfc3RyaWtlCQkJb3MJYm9vbAlvcwktCS0JWUJDRy0JdGVybWluYWwgY2FuIG92ZXJzdHJpa2UKIHN0YXR1c19saW5lX2VzY19vawkJZXNsb2sJYm9vbAllcwktCS0JWUItRy0JZXNjYXBlIGNhbiBiZSB1c2VkIG9uIHRoZSBzdGF0dXMgbGluZQogZGVzdF90YWJzX21hZ2ljX3Ntc28JCXh0CWJvb2wJeHQJLQktCVlCQ0dFCXRhYnMgZGVzdHJ1Y3RpdmUsIG1hZ2ljIHNvIGNoYXIgKHQxMDYxKQotdGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoaGF6ZWx0aW5lKQordGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoSGF6ZWx0aW5lKQogdHJhbnNwYXJlbnRfdW5kZXJsaW5lCQl1bAlib29sCXVsCS0JLQlZQkNHRQl1bmRlcmxpbmUgY2hhcmFjdGVyIG92ZXJzdHJpa2VzCiB4b25feG9mZgkJCXhvbglib29sCXhvCS0JLQlZQi0tLQl0ZXJtaW5hbCB1c2VzIHhvbi94b2ZmIGhhbmRzaGFraW5nCiBiYWNrX2NvbG9yX2VyYXNlCQliY2UJYm9vbAl1dAktCS0JLS0tLS0Jc2NyZWVuIGVyYXNlZCB3aXRoIGJhY2tncm91bmQgY29sb3IKQEAgLTI4MCw3ICsyODAsNyBAQAogbWF4X21pY3JvX2FkZHJlc3MJCW1hZGRyCW51bQlZZAktCS0JLS0tLS0JbWF4aW11bSB2YWx1ZSBpbiBtaWNyb18uLi5fYWRkcmVzcwogbWF4X21pY3JvX2p1bXAJCQltanVtcAludW0JWWUJLQktCS0tLS0tCW1heGltdW0gdmFsdWUgaW4gcGFybV8uLi5fbWljcm8KIG1heF9wYWlycwkJCXBhaXJzCW51bQlwYQktCS0JLS0tLS0JbWF4aW11bSBudW1iZXIgb2YgY29sb3ItcGFpcnMgb24gdGhlIHNjcmVlbgotbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluZWFibGUgd2luZG93cworbWF4aW11bV93aW5kb3dzCQkJd251bQludW0JTVcJLQktCS0tLS0tCW1heGltdW0gbnVtYmVyIG9mIGRlZmluYWJsZSB3aW5kb3dzCiBtaWNyb19jb2xfc2l6ZQkJCW1jcwludW0JWWYJLQktCS0tLS0tCWNoYXJhY3RlciBzdGVwIHNpemUgd2hlbiBpbiBtaWNybyBtb2RlCiBtaWNyb19saW5lX3NpemUJCQltbHMJbnVtCVlnCS0JLQktLS0tLQlsaW5lIHN0ZXAgc2l6ZSB3aGVuIGluIG1pY3JvIG1vZGUKIG5vX2NvbG9yX3ZpZGVvCQkJbmN2CW51bQlOQwktCS0JLS0tLS0JdmlkZW8gYXR0cmlidXRlcyB0aGF0IGNhbiBub3QgYmUgdXNlZCB3aXRoIGNvbG9ycwpAQCAtNTc0LDcgKzU3NCw3IEBACiBjb2RlX3NldF9pbml0CQkJY3NpbglzdHIJY2kJLQkJLQktLS0tLQlJbml0IHNlcXVlbmNlIGZvciBtdWx0aXBsZSBjb2Rlc2V0cwogY29sb3JfbmFtZXMJCQljb2xvcm5tCXN0cglZdwktCQktCS0tLS0tCUdpdmUgbmFtZSBmb3IgY29sb3IgIzEKIGNyZWF0ZV93aW5kb3cJCQljd2luCXN0cglDVwktCQktCS0tLS0tCWRlZmluZSBhIHdpbmRvdyAjMSBmcm9tICMyLCMzIHRvICM0LCM1Ci1kZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1YWxhciBiaXQgaW1hZ2UgcmVnaW9uCitkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbgkJZGVmYmkJc3RyCVl4CS0JCS0JLS0tLS0JRGVmaW5lIHJlY3Rhbmd1bGFyIGJpdCBpbWFnZSByZWdpb24KIGRlZmluZV9jaGFyCQkJZGVmYwlzdHIJWkUJLQkJLQktLS0tLQlEZWZpbmUgYSBjaGFyYWN0ZXIgIzEsICMyIGRvdHMgd2lkZSwgZGVzY2VuZGVyICMzCiBkZXZpY2VfdHlwZQkJCWRldnQJc3RyCWR2CS0JCS0JLS0tLS0JSW5kaWNhdGUgbGFuZ3VhZ2UvY29kZXNldCBzdXBwb3J0CiBkaWFsX3Bob25lCQkJZGlhbAlzdHIJREkJLQkJLQktLS0tLQlkaWFsIG51bWJlciAjMQpAQCAtNzY5LDcgKzc2OSw3IEBACiB4b2ZmX2NoYXJhY3RlcgkJCXhvZmZjCXN0cglYRgktCQktCS0tLS0tCVhPRkYgY2hhcmFjdGVyCiB4b25fY2hhcmFjdGVyCQkJeG9uYwlzdHIJWE4JLQkJLQktLS0tLQlYT04gY2hhcmFjdGVyCiB6ZXJvX21vdGlvbgkJCXplcm9tCXN0cglaeAktCQktCS0tLS0tCU5vIG1vdGlvbiBmb3Igc3Vic2VxdWVudCBjaGFyYWN0ZXIKLXNldF9wZ2xlbl9pbmNoCQkJc2xlbmd0aAlzdHIJc0wJLQkJLQktLS0tLQlZSSBTZXQgcGFnZSBsZW5ndGggdG8gIzEgaHVuZHJlZHRoIG9mIGFuIGluY2gKK3NldF9wZ2xlbl9pbmNoCQkJc2xlbmd0aAlzdHIJWUkJLQkJLQktLS0tLQlTZXQgcGFnZSBsZW5ndGggdG8gIzEgaHVuZHJlZHRoIG9mIGFuIGluY2ggKHNvbWUgaW1wbGVtZW50YXRpb25zIHVzZSBzTCBmb3IgdGVybWNhcCkuCiBlbnRlcl9ob3Jpem9udGFsX2hsX21vZGUJZWhobG0Jc3RyCVhoCS0JCS0JLS0tLS0JRW50ZXIgaG9yaXpvbnRhbCBoaWdobGlnaHQgbW9kZQogZW50ZXJfbGVmdF9obF9tb2RlCQllbGhsbQlzdHIJWGwJLQkJLQktLS0tLQlFbnRlciBsZWZ0IGhpZ2hsaWdodCBtb2RlCiBlbnRlcl9sb3dfaGxfbW9kZQkJZWxvaGxtCXN0cglYbwktCQktCS0tLS0tCUVudGVyIGxvdyBoaWdobGlnaHQgbW9kZQpAQCAtMTI2Niw5ICsxMjY2LDMgQEAKICMga2NtZCwga2VuZCwga2hscCwgYW5kIGtmMTEuLi5rZjYzLgogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotIyBMb2NhbCBWYXJpYWJsZXM6Ci0jIGNhc2UtZm9sZC1zZWFyY2g6bmlsCi0jIHRydW5jYXRlLWxpbmVzOnQKLSMgRW5kOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9DYXBzLnV3aW4gYi9pbmNsdWRlL0NhcHMudXdpbgppbmRleCA0NTBlYWViLi5iMDlmNjEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL0NhcHMudXdpbgorKysgYi9pbmNsdWRlL0NhcHMudXdpbgpAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMjAwMS0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI4LDcgKzI4LDcgQEAKICMKICMgQXV0aG9yOiBUaG9tYXMgRGlja2V5CiAjCi0jICRJZDogQ2Fwcy51d2luLHYgMS40IDIwMDYvMDUvMjcgMTU6MzM6MDQgdG9tIEV4cCAkCisjICRJZDogQ2Fwcy51d2luLHYgMS42IDIwMTUvMDQvMjYgMTU6MjQ6MjEgdG9tIEV4cCAkCiAjCiAjIFRoaXMgaXMgYW4gYWRhcHRhdGlvbiBvZiBuY3Vyc2VzJyB0ZXJtY2FwL3Rlcm1pbmZvIGNhcGFiaWxpdHkgdGFibGUsIHdoaWNoCiAjIGlzIGRlc2lnbmVkIHRvIGFsaWduIHdpdGggVS9XaW4ncyB0ZXJtaW5mby4KQEAgLTk3LDcgKzk3LDcgQEAKICMgMy4gTGlzdCBpdCBpbiB0aGUgc3RhbmRhcmQgdGFibGUuICBZb3UgYWxtb3N0IGNlcnRhaW5seSBkbyAqbm90KiB3YW50CiAjIHRvIGRvIHRoaXMgLS0gdGhlIGNhcGFiaWxpdGllcyBpbiB0aGF0IG9uZSwgYW5kIHRoZWlyIG9yZGVyLCBoYXZlIGJlZW4KICMgY2FyZWZ1bGx5IGNob3NlbiB0byBiZSBTVnI0LWJpbmFyeS1jb21wYXRpYmxlIHdoZW4gdGhleSdyZSB3cml0dGVuIG91dAotIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0aGUgbmN1cnNlcworIyBhcyBhIHRlcm1pbmZvIG9iamVjdCwgYW5kIGJyZWFraW5nIHRoaXMgd291bGQgYmUgYmFkLiAgSXQncyB1cCB0byB0aGUgbmN1cnNlcwogIyBsaWJyYXJ5IHdoYXQgdG8gZG8gd2l0aCB0aGUgdGVybWluZm8gZGF0YSBhZnRlciBpdCdzIHJlYWQgaW4uCiAjCiAjIDQuIExpc3QgaXQgaW4gdGhlIGFsaWFzZXMgdGFibGUgd2l0aCBhbiBJR05PUkUgdGFyZ2V0IGZpZWxkLiAgSWYgeW91CkBAIC0yMjcsNyArMjI3LDcgQEAKIG92ZXJfc3RyaWtlCQkJb3MJYm9vbAlvcwktCS0JWUJDRy0JdGVybWluYWwgY2FuIG92ZXJzdHJpa2UKIHN0YXR1c19saW5lX2VzY19vawkJZXNsb2sJYm9vbAllcwktCS0JWUItRy0JZXNjYXBlIGNhbiBiZSB1c2VkIG9uIHRoZSBzdGF0dXMgbGluZQogZGVzdF90YWJzX21hZ2ljX3Ntc28JCXh0CWJvb2wJeHQJLQktCVlCQ0dFCXRhYnMgZGVzdHJ1Y3RpdmUsIG1hZ2ljIHNvIGNoYXIgKHQxMDYxKQotdGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoaGF6ZWx0aW5lKQordGlsZGVfZ2xpdGNoCQkJaHoJYm9vbAloegktCS0JWUItR0UJY2Fubm90IHByaW50IH4ncyAoSGF6ZWx0aW5lKQogdHJhbnNwYXJlbnRfdW5kZXJsaW5lCQl1bAlib29sCXVsCS0JLQlZQkNHRQl1bmRlcmxpbmUgY2hhcmFjdGVyIG92ZXJzdHJpa2VzCiB4b25feG9mZgkJCXhvbglib29sCXhvCS0JLQlZQi0tLQl0ZXJtaW5hbCB1c2VzIHhvbi94b2ZmIGhhbmRzaGFraW5nCiBuZWVkc194b25feG9mZgkJCW54b24JYm9vbAlueAktCS0JLS0tLS0JcGFkZGluZyB3aWxsIG5vdCB3b3JrLCB4b24veG9mZiByZXF1aXJlZApAQCAtMTA4Miw5ICsxMDgyLDMgQEAKICMga2NtZCwga2VuZCwga2hscCwgYW5kIGtmMTEuLi5rZjYzLgogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotIyBMb2NhbCBWYXJpYWJsZXM6Ci0jIGNhc2UtZm9sZC1zZWFyY2g6bmlsCi0jIHRydW5jYXRlLWxpbmVzOnQKLSMgRW5kOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9NS2tleV9kZWZzLnNoIGIvaW5jbHVkZS9NS2tleV9kZWZzLnNoCmluZGV4IGIzY2I0ZjcuLjQ1YTA2ZDAgMTAwNzU1Ci0tLSBhL2luY2x1ZGUvTUtrZXlfZGVmcy5zaAorKysgYi9pbmNsdWRlL01La2V5X2RlZnMuc2gKQEAgLTEsNyArMSw3IEBACiAjISAvYmluL3NoCi0jICRJZDogTUtrZXlfZGVmcy5zaCx2IDEuMTQgMjAwMy8xMi8wNiAxNzoxMDowOSB0b20gRXhwICQKKyMgJElkOiBNS2tleV9kZWZzLnNoLHYgMS4xNSAyMDEzLzAzLzA5IDE2OjMyOjAxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMS0yMDAyLDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtNjUsOSArNjUsMTIgQEAKIGtleV9ldmVudAlrdjEJc3RyCVYxCUtFWV9FVkVOVAkrCS0tLS0tCVdlIHdlcmUgaW50ZXJydXB0ZWQgYnkgYW4gZXZlbnQKIEVPRgogCitUSElTPS4vYGJhc2VuYW1lICQwYAorUEFSTT0uL2BiYXNlbmFtZSAkREFUQWAKKwogY2F0IDw8RU9GCiAvKgotICogVGhlc2UgZGVmaW5pdGlvbnMgd2VyZSBnZW5lcmF0ZWQgYnkgJDAgJERBVEEKKyAqIFRoZXNlIGRlZmluaXRpb25zIHdlcmUgZ2VuZXJhdGVkIGJ5ICRUSElTICRQQVJNCiAgKi8KIEVPRgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL01LcGFyYW1ldHJpemVkLnNoIGIvaW5jbHVkZS9NS3BhcmFtZXRyaXplZC5zaAppbmRleCAyODI1YzgyLi4zY2U1ZDljIDEwMDc1NQotLS0gYS9pbmNsdWRlL01LcGFyYW1ldHJpemVkLnNoCisrKyBiL2luY2x1ZGUvTUtwYXJhbWV0cml6ZWQuc2gKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI2LDcgKzI2LDcgQEAKICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgJElkOiBNS3BhcmFtZXRyaXplZC5zaCx2IDEuNiAyMDA2LzA0LzIyIDIxOjM2OjE2IHRvbSBFeHAgJAorIyAkSWQ6IE1LcGFyYW1ldHJpemVkLnNoLHYgMS43IDIwMTQvMDUvMjQgMTU6MDc6MTkgdG9tIEV4cCAkCiAjCiAjIE1LcGFyYW1ldHJpemVkLnNoIC0tIGdlbmVyYXRlIGluZGlyZWN0aW9uIHZlY3RvcnMgZm9yIHZhcmlvdXMgc29ydCBtZXRob2RzCiAjCkBAIC01MywxMCArNTMsMTEgQEAKICMgdGhpcywgdGhhdCB3b3VsZCBiZSBjbGVhbmVyLi4uLgogCiAke0FXSy1hd2t9IDwkQ0FQUyAnCi0kMyAhPSAic3RyIgl7bmV4dDt9Ci0kMSB+IC9eYWNzXy8Je3ByaW50ICItMSxcdC8qICIsICQyLCAiICovIjsgY291bnQrKzsgbmV4dDt9Ci0kMCB+IC8jWzAtOV0vCXtwcmludCAiMSxcdC8qICIsICQyLCAiICovIjsgY291bnQrKzsgbmV4dDt9Ci0JCXtwcmludCAiMCxcdC8qICIsICQyLCAiICovIjsgY291bnQrKzt9Ci1FTkQJCXtwcmludGYoIn0gLyogJWQgZW50cmllcyAqLztcblxuIiwgY291bnQpO30KKyQzICE9ICJzdHIiCQl7bmV4dDt9CiskMSB+IC9eYWNzXy8JCXtwcmludCAiLTEsXHQvKiAiLCAkMiwgIiAqLyI7IGNvdW50Kys7IG5leHQ7fQorJDEgfiAvXmxhYmVsX2Zvcm1hdC8Je3ByaW50ICItMSxcdC8qICIsICQyLCAiICovIjsgY291bnQrKzsgbmV4dDt9CiskMCB+IC8jWzAtOV0vCQl7cHJpbnQgIjEsXHQvKiAiLCAkMiwgIiAqLyI7IGNvdW50Kys7IG5leHQ7fQorCQkJe3ByaW50ICIwLFx0LyogIiwgJDIsICIgKi8iOyBjb3VudCsrO30KK0VORAkJCXtwcmludGYoIn0gLyogJWQgZW50cmllcyAqLztcblxuIiwgY291bnQpO30KICcKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9NS3Rlcm0uaC5hd2sgYi9pbmNsdWRlL01LdGVybS5oLmF3awpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM4NDQ4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL01LdGVybS5oLmF3aworKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCwwIEBACi0jIHZpbGU6YXdrbW9kZQotQkVHSU4JCXsKLQkJICAgIHByaW50ICAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCi0JCSAgICBwcmludCAgIiAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKLQkJICAgIHByaW50ICAiICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoiCi0JCSAgICBwcmludCAgIiAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKiIKLQkJICAgIHByaW50ICAiICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoiCi0JCSAgICBwcmludCAgIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqIgotCQkgICAgcHJpbnQgICIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKiIKLQkJICAgIHByaW50ICAiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCi0JCSAgICBwcmludCAgIiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqIgotCQkgICAgcHJpbnQgICIgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKiIKLQkJICAgIHByaW50ICAiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCi0JCSAgICBwcmludCAgIiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoiCi0JCSAgICBwcmludCAgIiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKiIKLQkJICAgIHByaW50ICAiICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoiCi0JCSAgICBwcmludCAgIiAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqIgotCQkgICAgcHJpbnQgICIgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKiIKLQkJICAgIHByaW50ICAiICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCi0JCSAgICBwcmludCAgIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKiIKLQkJICAgIHByaW50ICAiICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoiCi0JCSAgICBwcmludCAgIiAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqIgotCQkgICAgcHJpbnQgICIgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKLQkJICAgIHByaW50ICAiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyIKLQkJICAgIHByaW50ICAiLyogQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgICovIgotCQkgICAgcHJpbnQgICIvKiAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8iCi0JCSAgICBwcmludCAgIi8qICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTUtb24gICAgICAgICAgICAgICAgICAqLyIKLQkJICAgIHByaW50ICAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIi8qICRJZDogTUt0ZXJtLmguYXdrLmluLHYgMS41MCAyMDA4LzA1LzI0IDIzOjEzOjU5IHRvbSBFeHAgJCAqLyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiIKLQkJICAgIHByaW50ICAiKioJdGVybS5oIC0tIERlZmluaXRpb24gb2Ygc3RydWN0IHRlcm0iCi0JCSAgICBwcmludCAgIiovIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgTkNVUlNFU19URVJNX0hfaW5jbCIKLQkJICAgIHByaW50ICAiI2RlZmluZSBOQ1VSU0VTX1RFUk1fSF9pbmNsIDEiCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiI3VuZGVmICBOQ1VSU0VTX1ZFUlNJT04iCi0JCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19WRVJTSU9OIFwiNS43XCIiCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiI2luY2x1ZGUgPG5jdXJzZXNfZGxsLmg+IgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiNpZmRlZiBfX2NwbHVzcGx1cyIKLQkJICAgIHByaW50ICAiZXh0ZXJuIFwiQ1wiIHsiCi0JCSAgICBwcmludCAgIiNlbmRpZiIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiBNYWtlIHRoaXMgZmlsZSBzZWxmLWNvbnRhaW5lZCBieSBwcm92aWRpbmcgZGVmYXVsdHMgZm9yIHRoZSBIQVZFX1RFUk1JT1tTXV9IIgotCQkgICAgcHJpbnQgICIgKiBkZWZpbml0aW9uIChiYXNlZCBvbiB0aGUgc3lzdGVtIGZvciB3aGljaCB0aGlzIHdhcyBjb25maWd1cmVkKS4iCi0JCSAgICBwcmludCAgIiAqLyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjdW5kZWYgIE5DVVJTRVNfQ09OU1QiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19DT05TVCAvKm5vdGhpbmcqLyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjdW5kZWYgIE5DVVJTRVNfU0JPT0wiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19TQk9PTCBjaGFyIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiN1bmRlZiAgTkNVUlNFU19YTkFNRVMiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19YTkFNRVMgMSIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiBXZSB3aWxsIHVzZSB0aGVzZSBzeW1ib2xzIHRvIGhpZGUgZGlmZmVyZW5jZXMgYmV0d2VlbiIKLQkJICAgIHByaW50ICAiICogdGVybWlvcy90ZXJtaW8vc2d0dHliIGludGVyZmFjZXMuIgotCQkgICAgcHJpbnQgICIgKi8iCi0JCSAgICBwcmludCAgIiN1bmRlZiAgVFRZIgotCQkgICAgcHJpbnQgICIjdW5kZWYgIFNFVF9UVFkiCi0JCSAgICBwcmludCAgIiN1bmRlZiAgR0VUX1RUWSIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiBBc3N1bWUgUE9TSVggdGVybWlvIGlmIHdlIGhhdmUgdGhlIGhlYWRlciBhbmQgZnVuY3Rpb24gKi8iCi0JCSAgICBwcmludCAgIi8qICNpZiBIQVZFX1RFUk1JT1NfSCAmJiBIQVZFX1RDR0VUQVRUUiAqLyIKLQkJICAgIHByaW50ICAiI2lmIDEgJiYgMSIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjdW5kZWYgIFRFUk1JT1MiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgVEVSTUlPUyAxIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiNpbmNsdWRlIDx0ZXJtaW9zLmg+IgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRUWSBzdHJ1Y3QgdGVybWlvcyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjZWxzZSAvKiAhSEFWRV9URVJNSU9TX0ggKi8iCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiLyogI2lmIEhBVkVfVEVSTUlPX0ggKi8iCi0JCSAgICBwcmludCAgIiNpZiAwIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiN1bmRlZiAgVEVSTUlPUyIKLQkJICAgIHByaW50ICAiI2RlZmluZSBURVJNSU9TIDEiCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiI2luY2x1ZGUgPHRlcm1pby5oPiIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUVFkgc3RydWN0IHRlcm1pbyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiBBZGQgZGVmaW5pdGlvbnMgdG8gbWFrZSB0ZXJtaW8gbG9vayBsaWtlIHRlcm1pb3MuIgotCQkgICAgcHJpbnQgICIgKiBCdXQgaWZkZWYgaXQsIHNpbmNlIHRoZXJlIGFyZSBzb21lIGltcGxlbWVudGF0aW9ucyIKLQkJICAgIHByaW50ICAiICogdGhhdCB0cnkgdG8gZG8gdGhpcyBmb3IgdXMgaW4gYSBmYWtlIDx0ZXJtaW8uaD4uIgotCQkgICAgcHJpbnQgICIgKi8iCi0JCSAgICBwcmludCAgIiNpZm5kZWYgVENTQU5PVyIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBTk9XIFRDU0VUQSIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDU0FEUkFJTiIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBRFJBSU4gVENTRVRBVyIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDU0FGTFVTSCIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBRkxVU0ggVENTRVRBRiIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIHRjc2V0YXR0ciIKLQkJICAgIHByaW50ICAiI2RlZmluZSB0Y3NldGF0dHIoZmQsIGNtZCwgYXJnKSBpb2N0bChmZCwgY21kLCBhcmcpIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgdGNnZXRhdHRyIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIHRjZ2V0YXR0cihmZCwgYXJnKSBpb2N0bChmZCwgVENHRVRBLCBhcmcpIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgY2ZnZXRvc3BlZWQiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgY2ZnZXRvc3BlZWQodCkgKCh0KS0+Y19jZmxhZyAmIENCQVVEKSIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDSUZMVVNIICIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ0lGTFVTSCAwIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgVENPRkxVU0ggIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRDT0ZMVVNIIDEiCi0JCSAgICBwcmludCAgIiNlbmRpZiIKLQkJICAgIHByaW50ICAiI2lmbmRlZiBUQ0lPRkxVU0ggIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRDSU9GTFVTSCAyIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgdGNmbHVzaCIKLQkJICAgIHByaW50ICAiI2RlZmluZSB0Y2ZsdXNoKGZkLCBhcmcpIGlvY3RsKGZkLCBUQ0ZMU0gsIGFyZykiCi0JCSAgICBwcmludCAgIiNlbmRpZiIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjZWxzZSAvKiAhSEFWRV9URVJNSU9fSCAqLyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjdW5kZWYgVEVSTUlPUyIKLQkJICAgIHByaW50ICAiI2luY2x1ZGUgPHNndHR5Lmg+IgotCQkgICAgcHJpbnQgICIjaW5jbHVkZSA8c3lzL2lvY3RsLmg+IgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRUWSBzdHJ1Y3Qgc2d0dHliIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiNlbmRpZiAvKiBIQVZFX1RFUk1JT19IICovIgotCQkgICAgcHJpbnQgICIiCi0JCSAgICBwcmludCAgIiNlbmRpZiAvKiBIQVZFX1RFUk1JT1NfSCAqLyIKLQkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIjaWZkZWYgVEVSTUlPUyIKLQkJICAgIHByaW50ICAiI2RlZmluZSBHRVRfVFRZKGZkLCBidWYpIHRjZ2V0YXR0cihmZCwgYnVmKSIKLQkJICAgIHByaW50ICAiI2RlZmluZSBTRVRfVFRZKGZkLCBidWYpIHRjc2V0YXR0cihmZCwgVENTQURSQUlOLCBidWYpIgotCQkgICAgcHJpbnQgICIjZWxzZSIKLQkJICAgIHByaW50ICAiI2RlZmluZSBHRVRfVFRZKGZkLCBidWYpIGd0dHkoZmQsIGJ1ZikiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgU0VUX1RUWShmZCwgYnVmKSBzdHR5KGZkLCBidWYpIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiI2RlZmluZSBOQU1FU0laRSAyNTYiCi0JCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiI2RlZmluZSBDVVIgY3VyX3Rlcm0tPnR5cGUuIgotCQkgICAgcHJpbnQgICIiCi0JCX0KLQotJDIgPT0gIiUlLVNUT1AtSEVSRS0lJSIJewotCQkJcHJpbnQgICIiCi0JCQlwcmludGYgIiNkZWZpbmUgQk9PTFdSSVRFICVkXG4iLCBCb29sQ291bnQKLQkJCXByaW50ZiAiI2RlZmluZSBOVU1XUklURSAgJWRcbiIsIE51bWJlckNvdW50Ci0JCQlwcmludGYgIiNkZWZpbmUgU1RSV1JJVEUgICVkXG4iLCBTdHJpbmdDb3VudAotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIi8qIG9sZGVyIHN5bm9ueW1zIGZvciBzb21lIGNhcGFiaWxpdGllcyAqLyIKLQkJCXByaW50ICAiI2RlZmluZSBiZWVoaXZlX2dsaXRjaAlub19lc2NfY3RsYyIKLQkJCXByaW50ICAiI2RlZmluZSB0ZWxlcmF5X2dsaXRjaAlkZXN0X3RhYnNfbWFnaWNfc21zbyIKLQkJCXByaW50ICAiI2RlZmluZSBtaWNyb19jaGFyX3NpemUgbWljcm9fY29sX3NpemUiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2lmZGVmIF9fSU5URVJOQUxfQ0FQU19WSVNJQkxFIgotCQl9Ci0KLS9eIy8JCXtuZXh0O30KLQotJDEgPT0gImFjc19jaGFycyIJe2Fjc2luZGV4ID0gU3RyaW5nQ291bnR9Ci0KLSQzID09ICJib29sIgl7Ci0JCSAgICBwcmludGYgIiNkZWZpbmUgJS0zMHMgQ1VSIEJvb2xlYW5zWyVkXVxuIiwgJDEsIEJvb2xDb3VudCsrCi0JCX0KLQotJDMgPT0gIm51bSIJewotCQkgICAgcHJpbnRmICIjZGVmaW5lICUtMzBzIENVUiBOdW1iZXJzWyVkXVxuIiwgJDEsIE51bWJlckNvdW50KysKLQkJfQotCi0kMyA9PSAic3RyIgl7Ci0JCSAgICBwcmludGYgIiNkZWZpbmUgJS0zMHMgQ1VSIFN0cmluZ3NbJWRdXG4iLCAkMSwgU3RyaW5nQ291bnQrKwotCQl9Ci0KLUVORAkJewotCQkJcHJpbnQgICIjZW5kaWYgLyogX19JTlRFUk5BTF9DQVBTX1ZJU0lCTEUgKi8iCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIvKiIKLQkJCXByaW50ICAiICogUHJlZGVmaW5lZCB0ZXJtaW5mbyBhcnJheSBzaXplcyIKLQkJCXByaW50ICAiICovIgotCQkJcHJpbnRmICIjZGVmaW5lIEJPT0xDT1VOVCAlZFxuIiwgQm9vbENvdW50Ci0JCQlwcmludGYgIiNkZWZpbmUgTlVNQ09VTlQgICVkXG4iLCBOdW1iZXJDb3VudAotCQkJcHJpbnRmICIjZGVmaW5lIFNUUkNPVU5UICAlZFxuIiwgU3RyaW5nQ291bnQKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIvKiB1c2VkIGJ5IGNvZGUgZm9yIGNvbXBhcmluZyBlbnRyaWVzICovIgotCQkJcHJpbnQgICIjZGVmaW5lIGFjc19jaGFyc19pbmRleAkiLCBhY3NpbmRleAotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgInR5cGVkZWYgc3RydWN0IHRlcm10eXBlIHsJLyogaW4tY29yZSBmb3JtIG9mIHRlcm1pbmZvIGRhdGEgKi8iCi0JCQlwcmludCAgIiAgICBjaGFyICAqdGVybV9uYW1lczsJCS8qIHN0cl90YWJsZSBvZmZzZXQgb2YgdGVybSBuYW1lcyAqLyIKLQkJCXByaW50ICAiICAgIGNoYXIgICpzdHJfdGFibGU7CQkvKiBwb2ludGVyIHRvIHN0cmluZyB0YWJsZSAqLyIKLQkJCXByaW50ICAiICAgIE5DVVJTRVNfU0JPT0wgICpCb29sZWFuczsJLyogYXJyYXkgb2YgYm9vbGVhbiB2YWx1ZXMgKi8iCi0JCQlwcmludCAgIiAgICBzaG9ydCAqTnVtYmVyczsJCS8qIGFycmF5IG9mIGludGVnZXIgdmFsdWVzICovIgotCQkJcHJpbnQgICIgICAgY2hhciAgKipTdHJpbmdzOwkJLyogYXJyYXkgb2Ygc3RyaW5nIG9mZnNldHMgKi8iCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2lmIE5DVVJTRVNfWE5BTUVTIgotCQkJcHJpbnQgICIgICAgY2hhciAgKmV4dF9zdHJfdGFibGU7CS8qIHBvaW50ZXIgdG8gZXh0ZW5kZWQgc3RyaW5nIHRhYmxlICovIgotCQkJcHJpbnQgICIgICAgY2hhciAgKipleHRfTmFtZXM7CQkvKiBjb3JyZXNwb25kaW5nIG5hbWVzICovIgotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIiAgICB1bnNpZ25lZCBzaG9ydCBudW1fQm9vbGVhbnM7LyogY291bnQgdG90YWwgQm9vbGVhbnMgKi8iCi0JCQlwcmludCAgIiAgICB1bnNpZ25lZCBzaG9ydCBudW1fTnVtYmVyczsJLyogY291bnQgdG90YWwgTnVtYmVycyAqLyIKLQkJCXByaW50ICAiICAgIHVuc2lnbmVkIHNob3J0IG51bV9TdHJpbmdzOwkvKiBjb3VudCB0b3RhbCBTdHJpbmdzICovIgotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIiAgICB1bnNpZ25lZCBzaG9ydCBleHRfQm9vbGVhbnM7LyogY291bnQgZXh0ZW5zaW9ucyB0byBCb29sZWFucyAqLyIKLQkJCXByaW50ICAiICAgIHVuc2lnbmVkIHNob3J0IGV4dF9OdW1iZXJzOwkvKiBjb3VudCBleHRlbnNpb25zIHRvIE51bWJlcnMgKi8iCi0JCQlwcmludCAgIiAgICB1bnNpZ25lZCBzaG9ydCBleHRfU3RyaW5nczsJLyogY291bnQgZXh0ZW5zaW9ucyB0byBTdHJpbmdzICovIgotCQkJcHJpbnQgICIjZW5kaWYgLyogTkNVUlNFU19YTkFNRVMgKi8iCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAifSBURVJNVFlQRTsiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAidHlwZWRlZiBzdHJ1Y3QgdGVybSB7CQkvKiBkZXNjcmliZSBhbiBhY3R1YWwgdGVybWluYWwgKi8iCi0JCQlwcmludCAgIiAgICBURVJNVFlQRQl0eXBlOwkJLyogdGVybWluYWwgdHlwZSBkZXNjcmlwdGlvbiAqLyIKLQkJCXByaW50ICAiICAgIHNob3J0CUZpbGVkZXM7CS8qIGZpbGUgZGVzY3JpcHRpb24gYmVpbmcgd3JpdHRlbiB0byAqLyIKLQkJCXByaW50ICAiICAgIFRUWQkJT3R0eWIsCQkvKiBvcmlnaW5hbCBzdGF0ZSBvZiB0aGUgdGVybWluYWwgKi8iCi0JCQlwcmludCAgIgkJTnR0eWI7CQkvKiBjdXJyZW50IHN0YXRlIG9mIHRoZSB0ZXJtaW5hbCAqLyIKLQkJCXByaW50ICAiICAgIGludAkJX2JhdWRyYXRlOwkvKiB1c2VkIHRvIGNvbXB1dGUgcGFkZGluZyAqLyIKLQkJCXByaW50ICAiICAgIGNoYXIgKiAgICAgIF90ZXJtbmFtZTsgICAgICAvKiB1c2VkIGZvciB0ZXJtbmFtZSgpICovIgotCQkJcHJpbnQgICJ9IFRFUk1JTkFMOyIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIjaWYgMCB8fCAwIgotCQkJcHJpbnQgICJOQ1VSU0VTX1dSQVBQRURfVkFSKFRFUk1JTkFMICosIGN1cl90ZXJtKTsiCi0JCQlwcmludCAgIk5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgYm9vbG5hbWVzKTsiCi0JCQlwcmludCAgIk5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgYm9vbGNvZGVzKTsiCi0JCQlwcmludCAgIk5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgYm9vbGZuYW1lcyk7IgotCQkJcHJpbnQgICJOQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIG51bW5hbWVzKTsiCi0JCQlwcmludCAgIk5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgbnVtY29kZXMpOyIKLQkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBudW1mbmFtZXMpOyIKLQkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBzdHJuYW1lcyk7IgotCQkJcHJpbnQgICJOQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIHN0cmNvZGVzKTsiCi0JCQlwcmludCAgIk5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgc3RyZm5hbWVzKTsiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2RlZmluZSBjdXJfdGVybSAgIE5DVVJTRVNfUFVCTElDX1ZBUihjdXJfdGVybSgpKSIKLQkJCXByaW50ICAiI2RlZmluZSBib29sbmFtZXMgIE5DVVJTRVNfUFVCTElDX1ZBUihib29sbmFtZXMoKSkiCi0JCQlwcmludCAgIiNkZWZpbmUgYm9vbGNvZGVzICBOQ1VSU0VTX1BVQkxJQ19WQVIoYm9vbGNvZGVzKCkpIgotCQkJcHJpbnQgICIjZGVmaW5lIGJvb2xmbmFtZXMgTkNVUlNFU19QVUJMSUNfVkFSKGJvb2xmbmFtZXMoKSkiCi0JCQlwcmludCAgIiNkZWZpbmUgbnVtbmFtZXMgICBOQ1VSU0VTX1BVQkxJQ19WQVIobnVtbmFtZXMoKSkiCi0JCQlwcmludCAgIiNkZWZpbmUgbnVtY29kZXMgICBOQ1VSU0VTX1BVQkxJQ19WQVIobnVtY29kZXMoKSkiCi0JCQlwcmludCAgIiNkZWZpbmUgbnVtZm5hbWVzICBOQ1VSU0VTX1BVQkxJQ19WQVIobnVtZm5hbWVzKCkpIgotCQkJcHJpbnQgICIjZGVmaW5lIHN0cm5hbWVzICAgTkNVUlNFU19QVUJMSUNfVkFSKHN0cm5hbWVzKCkpIgotCQkJcHJpbnQgICIjZGVmaW5lIHN0cmNvZGVzICAgTkNVUlNFU19QVUJMSUNfVkFSKHN0cmNvZGVzKCkpIgotCQkJcHJpbnQgICIjZGVmaW5lIHN0cmZuYW1lcyAgTkNVUlNFU19QVUJMSUNfVkFSKHN0cmZuYW1lcygpKSIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIjZWxzZSIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFRFUk1JTkFMICopIGN1cl90ZXJtOyIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbG5hbWVzW107IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbGNvZGVzW107IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbGZuYW1lc1tdOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIG51bW5hbWVzW107IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgbnVtY29kZXNbXTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBudW1mbmFtZXNbXTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBzdHJuYW1lc1tdOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIHN0cmNvZGVzW107IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgc3RyZm5hbWVzW107IgotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIiNlbmRpZiIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIvKiBpbnRlcm5hbHMgKi8iCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19zZXRfdHR5X21vZGUgKFRUWSAqYnVmKTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19nZXRfdHR5X21vZGUgKFRUWSAqYnVmKTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19yZWFkX2VudHJ5IChjb25zdCBjaGFyICogY29uc3QsIGNoYXIgKiBjb25zdCwgVEVSTVRZUEUgKmNvbnN0KTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19yZWFkX2ZpbGVfZW50cnkgKGNvbnN0IGNoYXIgKmNvbnN0LCBURVJNVFlQRSAqKTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19yZWFkX3Rlcm10eXBlIChURVJNVFlQRSAqLCBjaGFyICosIGludCk7IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfZmlyc3RfbmFtZSAoY29uc3QgY2hhciAqY29uc3QpOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX25hbWVfbWF0Y2ggKGNvbnN0IGNoYXIgKmNvbnN0LCBjb25zdCBjaGFyICpjb25zdCwgY29uc3QgY2hhciAqY29uc3QpOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IFRFUk1UWVBFICopIF9uY19mYWxsYmFjayAoY29uc3QgY2hhciAqKTsiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiLyogZW50cnkgcG9pbnRzICovIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoVEVSTUlOQUwgKikgc2V0X2N1cnRlcm0gKFRFUk1JTkFMICopOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsX2N1cnRlcm0gKFRFUk1JTkFMICopOyIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIvKiBtaXNjZWxsYW5lb3VzIGVudHJ5IHBvaW50cyAqLyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzdGFydHRlcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLCBpbnQsIGludCAqKTsiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldHVwdGVybSAoTkNVUlNFU19DT05TVCBjaGFyICosaW50LGludCAqKTsiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiLyogdGVybWluZm8gZW50cnkgcG9pbnRzLCBhbHNvIGRlY2xhcmVkIGluIGN1cnNlcy5oICovIgotCQkJcHJpbnQgICIjaWYgIWRlZmluZWQoX19OQ1VSU0VTX0gpIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0aWdldHN0ciAoTkNVUlNFU19DT05TVCBjaGFyICopOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihjaGFyKSB0dHl0eXBlW107IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwdXRwIChjb25zdCBjaGFyICopOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdGlnZXRmbGFnIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0aWdldG51bSAoTkNVUlNFU19DT05TVCBjaGFyICopOyIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIjaWYgMSAvKiBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MgKi8iCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgLi4uKTsJLyogc3BlY2lhbCAqLyIKLQkJCXByaW50ICAiI2Vsc2UiCi0JCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcpOwkvKiBzcGVjaWFsICovIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybV92YXJhcmdzIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgLi4uKTsJLyogc3BlY2lhbCAqLyIKLQkJCXByaW50ICAiI2VuZGlmIgotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIiNlbmRpZiAvKiBfX05DVVJTRVNfSCAqLyIKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICIvKiB0ZXJtY2FwIGRhdGFiYXNlIGVtdWxhdGlvbiAoWFBHNCB1c2VzIGNvbnN0IG9ubHkgZm9yIDJuZCBwYXJhbSBvZiB0Z2V0ZW50KSAqLyIKLQkJCXByaW50ICAiI2lmICFkZWZpbmVkKE5DVVJTRVNfVEVSTUNBUF9IX2luY2wpIgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0Z2V0c3RyIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgY2hhciAqKik7IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0Z290byAoY29uc3QgY2hhciAqLCBpbnQsIGludCk7IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0Z2V0ZW50IChjaGFyICosIGNvbnN0IGNoYXIgKik7IgotCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0Z2V0ZmxhZyAoTkNVUlNFU19DT05TVCBjaGFyICopOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdGdldG51bSAoTkNVUlNFU19DT05TVCBjaGFyICopOyIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdHB1dHMgKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQgKCopKGludCkpOyIKLQkJCXByaW50ICAiI2VuZGlmIC8qIE5DVVJTRVNfVEVSTUNBUF9IX2luY2wgKi8iCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2lmZGVmIF9fY3BsdXNwbHVzIgotCQkJcHJpbnQgICJ9IgotCQkJcHJpbnQgICIjZW5kaWYiCi0JCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2VuZGlmIC8qIE5DVVJTRVNfVEVSTV9IX2luY2wgKi8iCi0JCX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvTUt0ZXJtLmguYXdrLmluIGIvaW5jbHVkZS9NS3Rlcm0uaC5hd2suaW4KaW5kZXggNWZjMjA1Mi4uNTg3ZWU1MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9NS3Rlcm0uaC5hd2suaW4KKysrIGIvaW5jbHVkZS9NS3Rlcm0uaC5hd2suaW4KQEAgLTEsNyArMSw3IEBACiAjIHZpbGU6YXdrbW9kZQogQkVHSU4JCXsKIAkJICAgIHByaW50ICAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCi0JCSAgICBwcmludCAgIiAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqIgorCQkgICAgcHJpbnQgICIgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKiIKIAkJICAgIHByaW50ICAiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCiAJCSAgICBwcmludCAgIiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqIgogCQkgICAgcHJpbnQgICIgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKiIKQEAgLTM0LDcgKzM0LDcgQEAKIAkJICAgIHByaW50ICAiLyogICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5NS1vbiAgICAgICAgICAgICAgICAgICovIgogCQkgICAgcHJpbnQgICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8iCiAJCSAgICBwcmludCAgIiIKLQkJICAgIHByaW50ICAiLyogJElkOiBNS3Rlcm0uaC5hd2suaW4sdiAxLjUwIDIwMDgvMDUvMjQgMjM6MTM6NTkgdG9tIEV4cCAkICovIgorCQkgICAgcHJpbnQgICIvKiAkSWQ6IE1LdGVybS5oLmF3ay5pbix2IDEuNjIgMjAxMy8wOC8xNyAxOToyMTo1NiB0b20gRXhwICQgKi8iCiAJCSAgICBwcmludCAgIiIKIAkJICAgIHByaW50ICAiLyoiCiAJCSAgICBwcmludCAgIioqCXRlcm0uaCAtLSBEZWZpbml0aW9uIG9mIHN0cnVjdCB0ZXJtIgpAQCAtNjIsNiArNjIsMTIgQEAKIAkJICAgIHByaW50ICAiI3VuZGVmICBOQ1VSU0VTX1NCT09MIgogCQkgICAgcHJpbnQgICIjZGVmaW5lIE5DVVJTRVNfU0JPT0wgQE5DVVJTRVNfU0JPT0xAIgogCQkgICAgcHJpbnQgICIiCisJCSAgICBwcmludCAgIiN1bmRlZiAgTkNVUlNFU19VU0VfREFUQUJBU0UiCisJCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19VU0VfREFUQUJBU0UgQE5DVVJTRVNfVVNFX0RBVEFCQVNFQCIKKwkJICAgIHByaW50ICAiIgorCQkgICAgcHJpbnQgICIjdW5kZWYgIE5DVVJTRVNfVVNFX1RFUk1DQVAiCisJCSAgICBwcmludCAgIiNkZWZpbmUgTkNVUlNFU19VU0VfVEVSTUNBUCBATkNVUlNFU19VU0VfVEVSTUNBUEAiCisJCSAgICBwcmludCAgIiIKIAkJICAgIHByaW50ICAiI3VuZGVmICBOQ1VSU0VTX1hOQU1FUyIKIAkJICAgIHByaW50ICAiI2RlZmluZSBOQ1VSU0VTX1hOQU1FUyBATkNVUlNFU19YTkFNRVNAIgogCQkgICAgcHJpbnQgICIiCkBAIC05Myw0OCArOTksMTcgQEAKIAkJICAgIHByaW50ICAiI2luY2x1ZGUgPHRlcm1pby5oPiIKIAkJICAgIHByaW50ICAiI2RlZmluZSBUVFkgc3RydWN0IHRlcm1pbyIKIAkJICAgIHByaW50ICAiIgotCQkgICAgcHJpbnQgICIvKiBBZGQgZGVmaW5pdGlvbnMgdG8gbWFrZSB0ZXJtaW8gbG9vayBsaWtlIHRlcm1pb3MuIgotCQkgICAgcHJpbnQgICIgKiBCdXQgaWZkZWYgaXQsIHNpbmNlIHRoZXJlIGFyZSBzb21lIGltcGxlbWVudGF0aW9ucyIKLQkJICAgIHByaW50ICAiICogdGhhdCB0cnkgdG8gZG8gdGhpcyBmb3IgdXMgaW4gYSBmYWtlIDx0ZXJtaW8uaD4uIgotCQkgICAgcHJpbnQgICIgKi8iCi0JCSAgICBwcmludCAgIiNpZm5kZWYgVENTQU5PVyIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBTk9XIFRDU0VUQSIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDU0FEUkFJTiIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBRFJBSU4gVENTRVRBVyIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDU0FGTFVTSCIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ1NBRkxVU0ggVENTRVRBRiIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIHRjc2V0YXR0ciIKLQkJICAgIHByaW50ICAiI2RlZmluZSB0Y3NldGF0dHIoZmQsIGNtZCwgYXJnKSBpb2N0bChmZCwgY21kLCBhcmcpIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgdGNnZXRhdHRyIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIHRjZ2V0YXR0cihmZCwgYXJnKSBpb2N0bChmZCwgVENHRVRBLCBhcmcpIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgY2ZnZXRvc3BlZWQiCi0JCSAgICBwcmludCAgIiNkZWZpbmUgY2ZnZXRvc3BlZWQodCkgKCh0KS0+Y19jZmxhZyAmIENCQVVEKSIKLQkJICAgIHByaW50ICAiI2VuZGlmIgotCQkgICAgcHJpbnQgICIjaWZuZGVmIFRDSUZMVVNIICIKLQkJICAgIHByaW50ICAiI2RlZmluZSBUQ0lGTFVTSCAwIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgVENPRkxVU0ggIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRDT0ZMVVNIIDEiCi0JCSAgICBwcmludCAgIiNlbmRpZiIKLQkJICAgIHByaW50ICAiI2lmbmRlZiBUQ0lPRkxVU0ggIgotCQkgICAgcHJpbnQgICIjZGVmaW5lIFRDSU9GTFVTSCAyIgotCQkgICAgcHJpbnQgICIjZW5kaWYiCi0JCSAgICBwcmludCAgIiNpZm5kZWYgdGNmbHVzaCIKLQkJICAgIHByaW50ICAiI2RlZmluZSB0Y2ZsdXNoKGZkLCBhcmcpIGlvY3RsKGZkLCBUQ0ZMU0gsIGFyZykiCi0JCSAgICBwcmludCAgIiNlbmRpZiIKLQkJICAgIHByaW50ICAiIgogCQkgICAgcHJpbnQgICIjZWxzZSAvKiAhSEFWRV9URVJNSU9fSCAqLyIKIAkJICAgIHByaW50ICAiIgorCQkgICAgcHJpbnQgICIjaWYgX19NSU5HVzMyX18iCisJCSAgICBwcmludCAgIiMgIGluY2x1ZGUgPG5jdXJzZXNfbWluZ3cuaD4iCisJCSAgICBwcmludCAgIiMgIGRlZmluZSBUVFkgc3RydWN0IHRlcm1pb3MiCisJCSAgICBwcmludCAgIiNlbHNlIgogCQkgICAgcHJpbnQgICIjdW5kZWYgVEVSTUlPUyIKIAkJICAgIHByaW50ICAiI2luY2x1ZGUgPHNndHR5Lmg+IgogCQkgICAgcHJpbnQgICIjaW5jbHVkZSA8c3lzL2lvY3RsLmg+IgogCQkgICAgcHJpbnQgICIjZGVmaW5lIFRUWSBzdHJ1Y3Qgc2d0dHliIgotCQkgICAgcHJpbnQgICIiCisJCSAgICBwcmludCAgIiNlbmRpZiAvKiBNSU5HVzMyICovIgogCQkgICAgcHJpbnQgICIjZW5kaWYgLyogSEFWRV9URVJNSU9fSCAqLyIKIAkJICAgIHByaW50ICAiIgogCQkgICAgcHJpbnQgICIjZW5kaWYgLyogSEFWRV9URVJNSU9TX0ggKi8iCkBAIC0yMjgsOCArMjAzLDE2IEBACiAJCQlwcmludCAgIiAgICBjaGFyICogICAgICBfdGVybW5hbWU7ICAgICAgLyogdXNlZCBmb3IgdGVybW5hbWUoKSAqLyIKIAkJCXByaW50ICAifSBURVJNSU5BTDsiCiAJCQlwcmludCAgIiIKLQkJCXByaW50ICAiI2lmIEBCUk9LRU5fTElOS0VSQCB8fCBAY2ZfY3ZfZW5hYmxlX3JlZW50cmFudEAiCisJCQlwcmludCAgIiNpZiBAQlJPS0VOX0xJTktFUkAgJiYgIUBjZl9jdl9lbmFibGVfcmVlbnRyYW50QCIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihURVJNSU5BTCAqKSBjdXJfdGVybTsiCisJCQlwcmludCAgIiNlbGlmIEBjZl9jdl9lbmFibGVfcmVlbnRyYW50QCIKIAkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihURVJNSU5BTCAqLCBjdXJfdGVybSk7IgorCQkJcHJpbnQgICIjZGVmaW5lIGN1cl90ZXJtICAgTkNVUlNFU19QVUJMSUNfVkFSKGN1cl90ZXJtKCkpIgorCQkJcHJpbnQgICIjZWxzZSIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihURVJNSU5BTCAqKSBjdXJfdGVybTsiCisJCQlwcmludCAgIiNlbmRpZiIKKwkJCXByaW50ICAiIgorCQkJcHJpbnQgICIjaWYgQEJST0tFTl9MSU5LRVJAIHx8IEBjZl9jdl9lbmFibGVfcmVlbnRyYW50QCIKIAkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBib29sbmFtZXMpOyIKIAkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBib29sY29kZXMpOyIKIAkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBib29sZm5hbWVzKTsiCkBAIC0yNDAsNyArMjIzLDYgQEAKIAkJCXByaW50ICAiTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBzdHJjb2Rlcyk7IgogCQkJcHJpbnQgICJOQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIHN0cmZuYW1lcyk7IgogCQkJcHJpbnQgICIiCi0JCQlwcmludCAgIiNkZWZpbmUgY3VyX3Rlcm0gICBOQ1VSU0VTX1BVQkxJQ19WQVIoY3VyX3Rlcm0oKSkiCiAJCQlwcmludCAgIiNkZWZpbmUgYm9vbG5hbWVzICBOQ1VSU0VTX1BVQkxJQ19WQVIoYm9vbG5hbWVzKCkpIgogCQkJcHJpbnQgICIjZGVmaW5lIGJvb2xjb2RlcyAgTkNVUlNFU19QVUJMSUNfVkFSKGJvb2xjb2RlcygpKSIKIAkJCXByaW50ICAiI2RlZmluZSBib29sZm5hbWVzIE5DVVJTRVNfUFVCTElDX1ZBUihib29sZm5hbWVzKCkpIgpAQCAtMjUzLDggKzIzNSw2IEBACiAJCQlwcmludCAgIiIKIAkJCXByaW50ICAiI2Vsc2UiCiAJCQlwcmludCAgIiIKLQkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihURVJNSU5BTCAqKSBjdXJfdGVybTsiCi0JCQlwcmludCAgIiIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xuYW1lc1tdOyIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xjb2Rlc1tdOyIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xmbmFtZXNbXTsiCkBAIC0yNzIsNiArMjUyLDcgQEAKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX2dldF90dHlfbW9kZSAoVFRZICpidWYpOyIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3JlYWRfZW50cnkgKGNvbnN0IGNoYXIgKiBjb25zdCwgY2hhciAqIGNvbnN0LCBURVJNVFlQRSAqY29uc3QpOyIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3JlYWRfZmlsZV9lbnRyeSAoY29uc3QgY2hhciAqY29uc3QsIFRFUk1UWVBFICopOyIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19pbml0X3Rlcm10eXBlIChURVJNVFlQRSAqY29uc3QpOyIKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3JlYWRfdGVybXR5cGUgKFRFUk1UWVBFICosIGNoYXIgKiwgaW50KTsiCiAJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF9uY19maXJzdF9uYW1lIChjb25zdCBjaGFyICpjb25zdCk7IgogCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfbmFtZV9tYXRjaCAoY29uc3QgY2hhciAqY29uc3QsIGNvbnN0IGNoYXIgKmNvbnN0LCBjb25zdCBjaGFyICpjb25zdCk7IgpAQCAtMzAwLDYgKzI4MSw4IEBACiAJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtX3ZhcmFyZ3MgKE5DVVJTRVNfQ09OU1QgY2hhciAqLCAuLi4pOwkvKiBzcGVjaWFsICovIgogCQkJcHJpbnQgICIjZW5kaWYiCiAJCQlwcmludCAgIiIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGlwYXJtIChjb25zdCBjaGFyICosIC4uLik7CQkvKiBzcGVjaWFsICovIgorCQkJcHJpbnQgICIiCiAJCQlwcmludCAgIiNlbmRpZiAvKiBfX05DVVJTRVNfSCAqLyIKIAkJCXByaW50ICAiIgogCQkJcHJpbnQgICIvKiB0ZXJtY2FwIGRhdGFiYXNlIGVtdWxhdGlvbiAoWFBHNCB1c2VzIGNvbnN0IG9ubHkgZm9yIDJuZCBwYXJhbSBvZiB0Z2V0ZW50KSAqLyIKQEAgLTMxMiw2ICsyOTUsMzcgQEAKIAkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdHB1dHMgKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQgKCopKGludCkpOyIKIAkJCXByaW50ICAiI2VuZGlmIC8qIE5DVVJTRVNfVEVSTUNBUF9IX2luY2wgKi8iCiAJCQlwcmludCAgIiIKKwkJCXByaW50ICAiLyoiCisJCQlwcmludCAgIiAqIEluY2x1ZGUgY3Vyc2VzLmggYmVmb3JlIHRlcm0uaCB0byBlbmFibGUgdGhlc2UgZXh0ZW5zaW9ucy4iCisJCQlwcmludCAgIiAqLyIKKwkJCXByaW50ICAiI2lmIGRlZmluZWQoTkNVUlNFU19TUF9GVU5DUykgJiYgKE5DVVJTRVNfU1BfRlVOQ1MgIT0gMCkiCisJCQlwcmludCAgIiIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgIE5DVVJTRVNfU1BfTkFNRSh0aWdldHN0cikgKFNDUkVFTiosIE5DVVJTRVNfQ09OU1QgY2hhciAqKTsiCisJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBOQ1VSU0VTX1NQX05BTUUocHV0cCkgKFNDUkVFTiosIGNvbnN0IGNoYXIgKik7IgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgTkNVUlNFU19TUF9OQU1FKHRpZ2V0ZmxhZykgKFNDUkVFTiosIE5DVVJTRVNfQ09OU1QgY2hhciAqKTsiCisJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBOQ1VSU0VTX1NQX05BTUUodGlnZXRudW0pIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKik7IgorCQkJcHJpbnQgICIiCisJCQlwcmludCAgIiNpZiBATkNVUlNFU19UUEFSTV9WQVJBUkdTQCAvKiBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MgKi8iCisJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopICBOQ1VSU0VTX1NQX05BTUUodHBhcm0pIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgLi4uKTsJLyogc3BlY2lhbCAqLyIKKwkJCXByaW50ICAiI2Vsc2UiCisJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopICBOQ1VSU0VTX1NQX05BTUUodHBhcm0pIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcpOwkvKiBzcGVjaWFsICovIgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSAgTkNVUlNFU19TUF9OQU1FKHRwYXJtX3ZhcmFyZ3MpIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgLi4uKTsJLyogc3BlY2lhbCAqLyIKKwkJCXByaW50ICAiI2VuZGlmIgorCQkJcHJpbnQgICIiCisJCQlwcmludCAgIi8qIHRlcm1jYXAgZGF0YWJhc2UgZW11bGF0aW9uIChYUEc0IHVzZXMgY29uc3Qgb25seSBmb3IgMm5kIHBhcmFtIG9mIHRnZXRlbnQpICovIgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSAgTkNVUlNFU19TUF9OQU1FKHRnZXRzdHIpIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgY2hhciAqKik7IgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSAgTkNVUlNFU19TUF9OQU1FKHRnb3RvKSAoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCk7IgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgTkNVUlNFU19TUF9OQU1FKHRnZXRlbnQpIChTQ1JFRU4qLCBjaGFyICosIGNvbnN0IGNoYXIgKik7IgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgTkNVUlNFU19TUF9OQU1FKHRnZXRmbGFnKSAoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICopOyIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIE5DVVJTRVNfU1BfTkFNRSh0Z2V0bnVtKSAoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICopOyIKKwkJCXByaW50ICAiZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIE5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKFNDUkVFTiosIGNvbnN0IGNoYXIgKiwgaW50LCBOQ1VSU0VTX1NQX09VVEMpOyIKKwkJCXByaW50ICAiIgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoVEVSTUlOQUwgKikgTkNVUlNFU19TUF9OQU1FKHNldF9jdXJ0ZXJtKSAoU0NSRUVOKiwgVEVSTUlOQUwgKik7IgorCQkJcHJpbnQgICJleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgTkNVUlNFU19TUF9OQU1FKGRlbF9jdXJ0ZXJtKSAoU0NSRUVOKiwgVEVSTUlOQUwgKik7IgorCQkJcHJpbnQgICIiCisJCQlwcmludCAgImV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBOQ1VSU0VTX1NQX05BTUUocmVzdGFydHRlcm0pIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgaW50LCBpbnQgKik7IgorCQkJcHJpbnQgICIjZW5kaWYgLyogTkNVUlNFU19TUF9GVU5DUyAqLyIKKwkJCXByaW50ICAiIgogCQkJcHJpbnQgICIjaWZkZWYgX19jcGx1c3BsdXMiCiAJCQlwcmludCAgIn0iCiAJCQlwcmludCAgIiNlbmRpZiIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvTWFrZWZpbGUgYi9pbmNsdWRlL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWJkNjIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS4zNSAyMDAxLzEyLzA4IDE4OjUwOjA2IHRvbSBFeHAgJAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OCwyMDAwLDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCi0jIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKLSMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIwotIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCi0jIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKLSMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIwotIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIwotIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIwotIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCi0jIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKLSMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIwotIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCi0jIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKLSMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKLSMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIwotIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCi0jIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni0yMDAxCi0jCi0jIE1ha2VmaWxlIGZvciBuY3Vyc2VzIHNvdXJjZSBjb2RlLgotIwotIyBUaGlzIG1ha2VzL2luc3RhbGxzIG5jdXJzZXMgaW5jbHVkZS1maWxlcwotIwotIyBUaGUgdmFyaWFibGUgJ3NyY2RpcicgcmVmZXJzIHRvIHRoZSBzb3VyY2UtZGlzdHJpYnV0aW9uLCBhbmQgY2FuIGJlIHNldCB3aXRoCi0jIHRoZSBjb25maWd1cmUgc2NyaXB0IGJ5ICItLXNyY2Rpcj1ESVIiLgotCi0jIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgotLlNVRkZJWEVTOgotCi1TSEVMTAkJPSAvYmluL3NoCi1USElTCQk9IE1ha2VmaWxlCi0KLURFU1RESVIJCT0gCi1zcmNkaXIJCT0gLgotcHJlZml4CQk9IC91c3IvbG9jYWwKLWV4ZWNfcHJlZml4CT0gJHtwcmVmaXh9Ci1pbmNsdWRlZGlyCT0gJHtwcmVmaXh9L2luY2x1ZGUvbmN1cnNlcwotCi1JTlNUQUxMCQk9IC91c3IvYmluL2luc3RhbGwgLWMKLUlOU1RBTExfREFUQQk9ICR7SU5TVEFMTH0gLW0gNjQ0Ci0KLUFXSwkJPSBtYXdrCi1MTl9TCQk9IGxuIC1zCi0KLVZFUlNJT04JCT0gNS43Ci0KLSMgVGhlICJDYXBzIiBmaWxlIHNwZWNpZmllcyB0aGUgdGVybWluZm8gZGF0YWJhc2UgZm9ybWF0LCBhcyB3ZWxsIGFzIHRoZSBsaXN0Ci0jIG9mIGZ1bmN0aW9uIGtleXMuCi1URVJNSU5GT19DQVBTCT0gJChzcmNkaXIpL0NhcHMKLQotIyBUaGVzZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0Ci1DT05GSUdfU1JDID0gXAotCU1LdGVybS5oLmF3ayBcCi0JY3Vyc2VzLmhlYWQgXAotCXRlcm1jYXAuaCBcCi0JdW5jdHJsLmgKLQotIyBUaGVzZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoaXMgbWFrZWZpbGUKLUFVVE9fU1JDID0gXAotCWN1cnNlcy5oIFwKLQloYXNoc2l6ZS5oIFwKLQluY3Vyc2VzX2RlZi5oIFwKLQlwYXJhbWV0cml6ZWQuaCBcCi0JdGVybS5oCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1hbGwgXAotbGlicyBcCi1kZXBlbmQgXAotc291cmNlcyBcCi1pbnN0YWxsIDo6CSQoQVVUT19TUkMpCi0KLWN1cnNlcy5oIDogJChURVJNSU5GT19DQVBTKSBcCi0JCWN1cnNlcy5oZWFkIFwKLQkJJChzcmNkaXIpL2N1cnNlcy50YWlsIFwKLQkJJChzcmNkaXIpL01La2V5X2RlZnMuc2gKLQljYXQgY3Vyc2VzLmhlYWQgPiRACi0JQVdLPSQoQVdLKSBzaCAkKHNyY2RpcikvTUtrZXlfZGVmcy5zaCAkKFRFUk1JTkZPX0NBUFMpID4+JEAKLQlzaCAtYyAnaWYgdGVzdCAiY2h0eXBlIiA9ICJjY2hhcl90IiA7IHRoZW4gY2F0ICQoc3JjZGlyKS9jdXJzZXMud2lkZSA+PiRAIDsgZmknCi0JY2F0ICQoc3JjZGlyKS9jdXJzZXMudGFpbCA+PiRACi0KLXRlcm0uaDogJChURVJNSU5GT19DQVBTKSBNS3Rlcm0uaC5hd2sKLQkkKEFXSykgLWYgTUt0ZXJtLmguYXdrICQoVEVSTUlORk9fQ0FQUykgPiAkQAotCXNoICQoc3JjZGlyKS9lZGl0X2NmZy5zaCAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggJEAKLQotaGFzaHNpemUuaDogJChURVJNSU5GT19DQVBTKSAkKHNyY2RpcikvTUtoYXNoc2l6ZS5zaAotCXNoICQoc3JjZGlyKS9NS2hhc2hzaXplLnNoICQoVEVSTUlORk9fQ0FQUykgPiRACi0KLW5jdXJzZXNfZGVmLmg6ICQoc3JjZGlyKS9uY3Vyc2VzX2RlZnMgJChzcmNkaXIpL01LbmN1cnNlc19kZWYuc2gKLQlBV0s9JChBV0spIHNoICQoc3JjZGlyKS9NS25jdXJzZXNfZGVmLnNoICQoc3JjZGlyKS9uY3Vyc2VzX2RlZnMgPiRACi0KLXBhcmFtZXRyaXplZC5oOiAkKFRFUk1JTkZPX0NBUFMpICQoc3JjZGlyKS9NS3BhcmFtZXRyaXplZC5zaAotCUFXSz0kKEFXSykgc2ggJChzcmNkaXIpL01LcGFyYW1ldHJpemVkLnNoICQoVEVSTUlORk9fQ0FQUykgPiRACi0KLXRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCi0KLVRBR1M6Ci0JZXRhZ3MgKi5bY2hdCi0KLW1vc3RseWNsZWFuIDo6Ci0JLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQotCi1jbGVhbiA6OiBtb3N0bHljbGVhbgotCS1ybSAtZiAkKEFVVE9fU1JDKQotCi1kaXN0Y2xlYW4gOjogY2xlYW4KLQktcm0gLWYgTWFrZWZpbGUgJChDT05GSUdfU1JDKQotCi1yZWFsY2xlYW4gOjogZGlzdGNsZWFuCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBnZW5lcmF0ZWQgYnkgbWstaGRyLmF3awotIyAgc3Vic2V0OiAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICBjb21wYXQ6ICAgICB5ZXMKLQotJHtERVNURElSfSR7aW5jbHVkZWRpcn0gOgotCXNoICR7c3JjZGlyfS8uLi9ta2RpcnMuc2ggJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5pbmNsdWRlcyA6OiAke0FVVE9fU1JDfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSBcCi0JCXRlcm0uaCBcCi0JCWN1cnNlcy5oIFwKLQkJdW5jdHJsLmggXAotCQl0ZXJtY2FwLmggXAotCQkkKHNyY2RpcikvbmN1cnNlc19kbGwuaCBcCi0JCSQoc3JjZGlyKS90aWMuaCBcCi0JCSQoc3JjZGlyKS90ZXJtX2VudHJ5LmggXAotCQkkKHNyY2RpcikvbmNfdHBhcm0uaAotCUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHRlcm0uaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gdGVybS5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgY3Vyc2VzLmgpIDsgLi4vaGVhZGVycy5zaCAke0lOU1RBTExfREFUQX0gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJHtzcmNkaXJ9IGN1cnNlcy5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbmN1cnNlcy5oICYmICR7TE5fU30gY3Vyc2VzLmggbmN1cnNlcy5oKQotCUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHVuY3RybC5oKSA7IC4uL2hlYWRlcnMuc2ggJHtJTlNUQUxMX0RBVEF9ICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICR7c3JjZGlyfSB1bmN0cmwuaAotCUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHRlcm1jYXAuaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gdGVybWNhcC5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbmN1cnNlc19kbGwuaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gJChzcmNkaXIpL25jdXJzZXNfZGxsLmgKLQlAIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiB0aWMuaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gJChzcmNkaXIpL3RpYy5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgdGVybV9lbnRyeS5oKSA7IC4uL2hlYWRlcnMuc2ggJHtJTlNUQUxMX0RBVEF9ICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICR7c3JjZGlyfSAkKHNyY2RpcikvdGVybV9lbnRyeS5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbmNfdHBhcm0uaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gJChzcmNkaXIpL25jX3RwYXJtLmgKLQotdW5pbnN0YWxsIFwKLXVuaW5zdGFsbC5saWJzIFwKLXVuaW5zdGFsbC5pbmNsdWRlcyA6OgotCS1AIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiB0ZXJtLmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIGN1cnNlcy5oKQotCS1AIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiBuY3Vyc2VzLmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHVuY3RybC5oKQotCS1AIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiB0ZXJtY2FwLmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIG5jdXJzZXNfZGxsLmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHRpYy5oKQotCS1AIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiB0ZXJtX2VudHJ5LmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIG5jX3RwYXJtLmgpCmRpZmYgLS1naXQgYS9pbmNsdWRlL01ha2VmaWxlLmluIGIvaW5jbHVkZS9NYWtlZmlsZS5pbgppbmRleCAxYTQ4YTE3Li5jZmE5ODc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL01ha2VmaWxlLmluCisrKyBiL2luY2x1ZGUvTWFrZWZpbGUuaW4KQEAgLTEsNiArMSw2IEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjM1IDIwMDEvMTIvMDggMTg6NTA6MDYgdG9tIEV4cCAkCisjICRJZDogTWFrZWZpbGUuaW4sdiAxLjQzIDIwMTUvMDgvMDUgMDk6MjU6NTUgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAsMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0zOSw3ICszOSw4IEBACiAjIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCiBERVNURElSCQk9IEBERVNURElSQApAQCAtNDcsNiArNDgsOSBAQAogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKIGluY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKK2luY2x1ZGVzdWJkaXIJPSBAaW5jbHVkZXN1YmRpckAKKworSU5DTFVERURJUgk9ICQoREVTVERJUikkKGluY2x1ZGVkaXIpJChpbmNsdWRlc3ViZGlyKQogCiBJTlNUQUxMCQk9IEBJTlNUQUxMQAogSU5TVEFMTF9EQVRBCT0gQElOU1RBTExfREFUQUAKQEAgLTU0LDYgKzU4LDkgQEAKIEFXSwkJPSBAQVdLQAogTE5fUwkJPSBATE5fU0AKIAorQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAorCiBWRVJTSU9OCQk9IEBjZl9jdl9yZWxfdmVyc2lvbkAKIAogIyBUaGUgIkNhcHMiIGZpbGUgc3BlY2lmaWVzIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZSBmb3JtYXQsIGFzIHdlbGwgYXMgdGhlIGxpc3QKQEAgLTY0LDYgKzcxLDcgQEAKIENPTkZJR19TUkMgPSBcCiAJTUt0ZXJtLmguYXdrIFwKIAljdXJzZXMuaGVhZCBcCisJbmN1cnNlc19kbGwuaCBcCiAJdGVybWNhcC5oIFwKIAl1bmN0cmwuaAogCkBAIC03Myw2ICs4MSw3IEBACiAJaGFzaHNpemUuaCBcCiAJbmN1cnNlc19kZWYuaCBcCiAJcGFyYW1ldHJpemVkLmggXAorCWNvbmZpZy5oIFwKIAl0ZXJtLmgKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTg3LDM3ICs5Niw0MiBAQAogCQkkKHNyY2RpcikvY3Vyc2VzLnRhaWwgXAogCQkkKHNyY2RpcikvTUtrZXlfZGVmcy5zaAogCWNhdCBjdXJzZXMuaGVhZCA+JEAKLQlBV0s9JChBV0spIHNoICQoc3JjZGlyKS9NS2tleV9kZWZzLnNoICQoVEVSTUlORk9fQ0FQUykgPj4kQAotCXNoIC1jICdpZiB0ZXN0ICJATkNVUlNFU19DSF9UQCIgPSAiY2NoYXJfdCIgOyB0aGVuIGNhdCAkKHNyY2RpcikvY3Vyc2VzLndpZGUgPj4kQCA7IGZpJworCUFXSz0kKEFXSykgJChTSEVMTCkgJChzcmNkaXIpL01La2V5X2RlZnMuc2ggJChURVJNSU5GT19DQVBTKSA+PiRACisJJChTSEVMTCkgLWMgJ2lmIHRlc3QgIkBOQ1VSU0VTX0NIX1RAIiA9ICJjY2hhcl90IiA7IHRoZW4gY2F0ICQoc3JjZGlyKS9jdXJzZXMud2lkZSA+PiRAIDsgZmknCiAJY2F0ICQoc3JjZGlyKS9jdXJzZXMudGFpbCA+PiRACiAKIHRlcm0uaDogJChURVJNSU5GT19DQVBTKSBNS3Rlcm0uaC5hd2sKIAkkKEFXSykgLWYgTUt0ZXJtLmguYXdrICQoVEVSTUlORk9fQ0FQUykgPiAkQAotCXNoICQoc3JjZGlyKS9lZGl0X2NmZy5zaCAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggJEAKKwkkKFNIRUxMKSAkKHNyY2RpcikvZWRpdF9jZmcuc2ggLi4vaW5jbHVkZS9uY3Vyc2VzX2NmZy5oICRACiAKIGhhc2hzaXplLmg6ICQoVEVSTUlORk9fQ0FQUykgJChzcmNkaXIpL01LaGFzaHNpemUuc2gKLQlzaCAkKHNyY2RpcikvTUtoYXNoc2l6ZS5zaCAkKFRFUk1JTkZPX0NBUFMpID4kQAorCSQoU0hFTEwpICQoc3JjZGlyKS9NS2hhc2hzaXplLnNoICQoVEVSTUlORk9fQ0FQUykgPiRACiAKIG5jdXJzZXNfZGVmLmg6ICQoc3JjZGlyKS9uY3Vyc2VzX2RlZnMgJChzcmNkaXIpL01LbmN1cnNlc19kZWYuc2gKLQlBV0s9JChBV0spIHNoICQoc3JjZGlyKS9NS25jdXJzZXNfZGVmLnNoICQoc3JjZGlyKS9uY3Vyc2VzX2RlZnMgPiRACisJQVdLPSQoQVdLKSAkKFNIRUxMKSAkKHNyY2RpcikvTUtuY3Vyc2VzX2RlZi5zaCAkKHNyY2RpcikvbmN1cnNlc19kZWZzID4kQAogCiBwYXJhbWV0cml6ZWQuaDogJChURVJNSU5GT19DQVBTKSAkKHNyY2RpcikvTUtwYXJhbWV0cml6ZWQuc2gKLQlBV0s9JChBV0spIHNoICQoc3JjZGlyKS9NS3BhcmFtZXRyaXplZC5zaCAkKFRFUk1JTkZPX0NBUFMpID4kQAorCUFXSz0kKEFXSykgJChTSEVMTCkgJChzcmNkaXIpL01LcGFyYW1ldHJpemVkLnNoICQoVEVSTUlORk9fQ0FQUykgPiRACisKKyMgVGhpcyBpcyByZXF1aXJlZCBieSBwdGhyZWFkLmggb24gTWluR1cKK2NvbmZpZy5oOgorCXRvdWNoICRACiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCisJJChDVEFHUykgKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgogCS1ybSAtZiAkKEFVVE9fU1JDKQorCS1ybSAtcmYgKi5kU1lNCiAKIGRpc3RjbGVhbiA6OiBjbGVhbgotCS1ybSAtZiBNYWtlZmlsZSAkKENPTkZJR19TUkMpCisJLXJtIC1mIE1ha2VmaWxlICQoQ09ORklHX1NSQykgY29uZmlnLmgKIAogcmVhbGNsZWFuIDo6IGRpc3RjbGVhbgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NhcGRlZmF1bHRzLmMgYi9pbmNsdWRlL2NhcGRlZmF1bHRzLmMKaW5kZXggMzNmMmZlOC4uZGE3NmNjMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jYXBkZWZhdWx0cy5jCisrKyBiL2luY2x1ZGUvY2FwZGVmYXVsdHMuYwpAQCAtMzIsNyArMzIsNyBAQAogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiAkSWQ6IGNhcGRlZmF1bHRzLmMsdiAxLjEzIDIwMDgvMDgvMDQgMTI6MzM6NDIgdG9tIEV4cCAkICovCisvKiAkSWQ6IGNhcGRlZmF1bHRzLmMsdiAxLjE0IDIwMDgvMTEvMTYgMDA6MTk6NTkganVlcmdlbiBFeHAgJCAqLwogCiAgICAgLyoKICAgICAgKiBDb21wdXRlIG9ic29sZXRlIGNhcGFiaWxpdGllcy4gIFRoZSByZWFzb24gdGhpcyBpcyBhbiBpbmNsdWRlIGZpbGUgaXMKQEAgLTQ0LDExICs0NCwxMSBAQAogICAgICAqIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoKS4KICAgICAgKi8KIHsKLSAgICBjaGFyICpzcDsKKyAgICBjaGFyICpzdHJwOwogICAgIHNob3J0IGNhcHZhbDsKIAogI2RlZmluZSBFWFRSQUNUX0RFTEFZKHN0cikgXAotICAgIAkoc2hvcnQpIChzcCA9IHN0cmNocihzdHIsICcqJyksIHNwID8gYXRvaShzcCsxKSA6IDApCisgICAgCShzaG9ydCkgKHN0cnAgPSBzdHJjaHIoc3RyLCAnKicpLCBzdHJwID8gYXRvaShzdHJwKzEpIDogMCkKIAogICAgIC8qIGN1cnJlbnQgKDQuNEJTRCkgY2FwYWJpbGl0aWVzIG1hcmtlZCBvYnNvbGV0ZSAqLwogICAgIGlmIChWQUxJRF9TVFJJTkcoY2FycmlhZ2VfcmV0dXJuKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJzZXMuaCBiL2luY2x1ZGUvY3Vyc2VzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjIzNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9jdXJzZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCi0gKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAkSWQ6IGN1cnNlcy5oLmluLHYgMS4xODcgMjAwOC8wOC8zMCAyMDoxMToyOSB0b20gRXhwICQgKi8KLQotI2lmbmRlZiBfX05DVVJTRVNfSAotI2RlZmluZSBfX05DVVJTRVNfSAotCi0jZGVmaW5lIENVUlNFUyAxCi0jZGVmaW5lIENVUlNFU19IIDEKLQotLyogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgdGhlIGVuaGFuY2VkIGZ1bmN0aW9uYWxpdHkgdG8gYmUgdmlzaWJsZS4KLSAqIEhvd2V2ZXIsIHNvbWUgb2YgdGhlIHdpZGUtY2hhcmFjdGVyIChlbmhhbmNlZCkgZnVuY3Rpb25hbGl0eSBpcyBtaXNzaW5nLgotICogU28gd2UgZG8gbm90IGRlZmluZSBpdCAoeWV0KS4KLSNkZWZpbmUgX1hPUEVOX0NVUlNFUyAxCi0gKi8KLQotLyogVGhlc2UgYXJlIGRlZmluZWQgb25seSBpbiBjdXJzZXMuaCwgYW5kIGFyZSB1c2VkIGZvciBjb25kaXRpb25hbCBjb21waWxlcyAqLwotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUFKT1IgNQotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUlOT1IgNwotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggMjAwODExMDIKLQotLyogVGhpcyBpcyBkZWZpbmVkIGluIG1vcmUgdGhhbiBvbmUgbmN1cnNlcyBoZWFkZXIsIGZvciBpZGVudGlmaWNhdGlvbiAqLwotI3VuZGVmICBOQ1VSU0VTX1ZFUlNJT04KLSNkZWZpbmUgTkNVUlNFU19WRVJTSU9OICI1LjciCi0KLS8qCi0gKiBJZGVudGlmeSB0aGUgbW91c2UgZW5jb2RpbmcgdmVyc2lvbi4KLSAqLwotI2RlZmluZSBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gMQotCi0vKgotICogRGVmaW5pdGlvbnMgdG8gZmFjaWxpdGF0ZSBETEwncy4KLSAqLwotI2luY2x1ZGUgPG5jdXJzZXNfZGxsLmg+Ci0KLS8qCi0gKiBVc2VyLWRlZmluYWJsZSB0d2VhayB0byBkaXNhYmxlIHRoZSBpbmNsdWRlIG9mIDxzdGRib29sLmg+LgotICovCi0jaWZuZGVmIE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSAotI2RlZmluZSBOQ1VSU0VTX0VOQUJMRV9TVERCT09MX0ggMQotI2VuZGlmCi0KLS8qCi0gKiBOQ1VSU0VTX0FUVFJfVCBpcyB1c2VkIHRvIHF1aWV0IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgbmN1cnNlcwotICogY29uZmlndXJlZCB1c2luZyAtLWRpc2FibGUtbWFjcm9zLgotICovCi0jaWZkZWYgTkNVUlNFU19OT01BQ1JPUwotI2lmbmRlZiBOQ1VSU0VTX0FUVFJfVAotI2RlZmluZSBOQ1VSU0VTX0FUVFJfVCBhdHRyX3QKLSNlbmRpZgotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotI2lmbmRlZiBOQ1VSU0VTX0FUVFJfVAotI2RlZmluZSBOQ1VSU0VTX0FUVFJfVCBpbnQKLSNlbmRpZgotCi0vKgotICogRXhwYW5kcyB0byAnY29uc3QnIGlmIG5jdXJzZXMgaXMgY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1jb25zdC4gIE5vdGUgdGhhdAotICogZG9pbmcgc28gbWFrZXMgaXQgaW5jb21wYXRpYmxlIHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIFgvT3BlbiBDdXJzZXMuCi0gKi8KLSN1bmRlZiAgTkNVUlNFU19DT05TVAotI2RlZmluZSBOQ1VSU0VTX0NPTlNUIC8qbm90aGluZyovCi0KLSN1bmRlZiBOQ1VSU0VTX0lOTElORQotI2RlZmluZSBOQ1VSU0VTX0lOTElORSBpbmxpbmUKLQotLyoKLSAqIFRoZSBpbnRlcm5hbCB0eXBlIHVzZWQgZm9yIGNvbG9yIHZhbHVlcwotICovCi0jdW5kZWYJTkNVUlNFU19DT0xPUl9UCi0jZGVmaW5lCU5DVVJTRVNfQ09MT1JfVCBzaG9ydAotCi0vKgotICogRGVmaW5pdGlvbiB1c2VkIHRvIG1ha2UgV0lORE9XIGFuZCBzaW1pbGFyIHN0cnVjdHMgb3BhcXVlLgotICovCi0jaWZuZGVmIE5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIE5DVVJTRVNfT1BBUVVFIDAKLSNlbmRpZgotCi0vKgotICogVGhlIGludGVybmFsIHR5cGUgdXNlZCBmb3Igd2luZG93IGRpbWVuc2lvbnMuCi0gKi8KLSN1bmRlZglOQ1VSU0VTX1NJWkVfVAotI2RlZmluZQlOQ1VSU0VTX1NJWkVfVCBzaG9ydAotCi0vKgotICogQ29udHJvbCB3aGV0aGVyIHRwYXJtKCkgc3VwcG9ydHMgdmFyYXJncyBvciBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4KLSAqLwotI3VuZGVmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUwotI2RlZmluZSBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MgMQotCi0vKgotICogTkNVUlNFU19DSF9UIGlzIHVzZWQgaW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIGJ1dCBub3QgdXNlZCBvdGhlcndpc2UgaW4KLSAqIHRoaXMgaGVhZGVyIGZpbGUsIHNpbmNlIHRoYXQgd291bGQgbWFrZSB0aGUgbm9ybWFsL3dpZGUtY2hhcmFjdGVyIHZlcnNpb25zCi0gKiBvZiB0aGUgaGVhZGVyIGluY29tcGF0aWJsZS4KLSAqLwotI3VuZGVmCU5DVVJTRVNfQ0hfVAotI2RlZmluZSBOQ1VSU0VTX0NIX1QgY2h0eXBlCi0KLSNpZiAwICYmIGRlZmluZWQoX0xQNjQpCi10eXBlZGVmIHVuc2lnbmVkIGNodHlwZTsKLXR5cGVkZWYgdW5zaWduZWQgbW1hc2tfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2h0eXBlOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIG1tYXNrX3Q7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8dW5jdHJsLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CS8qIHdlIG5lZWQgdmFfbGlzdCAqLwotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKLSNpbmNsdWRlIDxzdGRkZWYuaD4JLyogd2Ugd2FudCB3Y2hhcl90ICovCi0jZW5kaWYgLyogX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAqLwotCi0vKiBYL09wZW4gYW5kIFNWcjQgc3BlY2lmeSB0aGF0IGN1cnNlcyBpbXBsZW1lbnRzICdib29sJy4gIEhvd2V2ZXIsIEMrKyBtYXkgYWxzbwotICogaW1wbGVtZW50IGl0LiAgSWYgc28sIHdlIG11c3QgdXNlIHRoZSBDKysgY29tcGlsZXIncyB0eXBlIHRvIGF2b2lkIGNvbmZsaWN0Ci0gKiB3aXRoIG90aGVyIGludGVyZmFjZXMuCi0gKgotICogQSBmdXJ0aGVyIGNvbXBsaWNhdGlvbiBpcyB0aGF0IDxzdGRib29sLmg+IG1heSBkZWNsYXJlICdib29sJyB0byBiZSBhCi0gKiBkaWZmZXJlbnQgdHlwZSwgc3VjaCBhcyBhbiBlbnVtIHdoaWNoIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wYXRpYmxlIHdpdGgKLSAqIEMrKy4gIElmIHdlIGhhdmUgPHN0ZGJvb2wuaD4sIG1ha2UgJ2Jvb2wnIGEgbWFjcm8sIHNvIHVzZXJzIG1heSAjdW5kZWYgaXQuCi0gKiBPdGhlcndpc2UsIGxldCBpdCByZW1haW4gYSB0eXBlZGVmIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyICNkZWZpbmUncy4KLSAqIEluIGVpdGhlciBjYXNlLCBtYWtlIGEgdHlwZWRlZiBmb3IgTkNVUlNFU19CT09MIHdoaWNoIGNhbiBiZSB1c2VkIGlmIG5lZWRlZAotICogZnJvbSBlaXRoZXIgQyBvciBDKysuCi0gKi8KLQotI3VuZGVmIFRSVUUKLSNkZWZpbmUgVFJVRSAgICAxCi0KLSN1bmRlZiBGQUxTRQotI2RlZmluZSBGQUxTRSAgIDAKLQotdHlwZWRlZiB1bnNpZ25lZCBOQ1VSU0VTX0JPT0w7Ci0KLSNpZiAwCS8qIF9fY3BsdXNwbHVzLCBldGMuICovCi0KLS8qIHVzZSB0aGUgQysrIGNvbXBpbGVyJ3MgYm9vbCB0eXBlICovCi0jZGVmaW5lIE5DVVJTRVNfQk9PTCBib29sCi0KLSNlbHNlCQkJLyogYzg5LCBjOTksIGV0Yy4gKi8KLQotI2lmIE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSAotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLS8qIHVzZSB3aGF0ZXZlciB0aGUgQyBjb21waWxlciBkZWNpZGVzIGJvb2wgcmVhbGx5IGlzICovCi0jZGVmaW5lIE5DVVJTRVNfQk9PTCBib29sCi0jZWxzZQotLyogdGhlcmUgaXMgbm8gcHJlZGVmaW5lZCBib29sIC0gdXNlIG91ciBvd24gKi8KLSN1bmRlZiBib29sCi0jZGVmaW5lIGJvb2wgTkNVUlNFU19CT09MCi0jZW5kaWYKLQotI2VuZGlmIC8qICFfX2NwbHVzcGx1cywgZXRjLiAqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2RlZmluZSBOQ1VSU0VTX0NBU1QodHlwZSx2YWx1ZSkgc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpCi0jZWxzZQotI2RlZmluZSBOQ1VSU0VTX0NBU1QodHlwZSx2YWx1ZSkgKHR5cGUpKHZhbHVlKQotI2VuZGlmCi0KLS8qCi0gKiBYL09wZW4gYXR0cmlidXRlcy4gIEluIHRoZSBuY3Vyc2VzIGltcGxlbWVudGF0aW9uLCB0aGV5IGFyZSBpZGVudGljYWwgdG8gdGhlCi0gKiBBXyBhdHRyaWJ1dGVzLgotICovCi0jZGVmaW5lIFdBX0FUVFJJQlVURVMJQV9BVFRSSUJVVEVTCi0jZGVmaW5lIFdBX05PUk1BTAlBX05PUk1BTAotI2RlZmluZSBXQV9TVEFORE9VVAlBX1NUQU5ET1VUCi0jZGVmaW5lIFdBX1VOREVSTElORQlBX1VOREVSTElORQotI2RlZmluZSBXQV9SRVZFUlNFCUFfUkVWRVJTRQotI2RlZmluZSBXQV9CTElOSwlBX0JMSU5LCi0jZGVmaW5lIFdBX0RJTQkJQV9ESU0KLSNkZWZpbmUgV0FfQk9MRAkJQV9CT0xECi0jZGVmaW5lIFdBX0FMVENIQVJTRVQJQV9BTFRDSEFSU0VUCi0jZGVmaW5lIFdBX0lOVklTCUFfSU5WSVMKLSNkZWZpbmUgV0FfUFJPVEVDVAlBX1BST1RFQ1QKLSNkZWZpbmUgV0FfSE9SSVpPTlRBTAlBX0hPUklaT05UQUwKLSNkZWZpbmUgV0FfTEVGVAkJQV9MRUZUCi0jZGVmaW5lIFdBX0xPVwkJQV9MT1cKLSNkZWZpbmUgV0FfUklHSFQJQV9SSUdIVAotI2RlZmluZSBXQV9UT1AJCUFfVE9QCi0jZGVmaW5lIFdBX1ZFUlRJQ0FMCUFfVkVSVElDQUwKLQotLyogY29sb3JzICovCi0jZGVmaW5lIENPTE9SX0JMQUNLCTAKLSNkZWZpbmUgQ09MT1JfUkVECTEKLSNkZWZpbmUgQ09MT1JfR1JFRU4JMgotI2RlZmluZSBDT0xPUl9ZRUxMT1cJMwotI2RlZmluZSBDT0xPUl9CTFVFCTQKLSNkZWZpbmUgQ09MT1JfTUFHRU5UQQk1Ci0jZGVmaW5lIENPTE9SX0NZQU4JNgotI2RlZmluZSBDT0xPUl9XSElURQk3Ci0KLS8qIGxpbmUgZ3JhcGhpY3MgKi8KLQotI2lmIDAgfHwgMAotTkNVUlNFU19XUkFQUEVEX1ZBUihjaHR5cGUqLCBhY3NfbWFwKTsKLSNkZWZpbmUgYWNzX21hcCAoX25jX2Fjc19tYXAoKSkKLSNlbHNlCi1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNodHlwZSkgYWNzX21hcFtdOwotI2VuZGlmCi0KLSNkZWZpbmUgTkNVUlNFU19BQ1MoYykJKGFjc19tYXBbTkNVUlNFU19DQVNUKHVuc2lnbmVkIGNoYXIsYyldKQotCi0vKiBWVDEwMCBzeW1ib2xzIGJlZ2luIGhlcmUgKi8KLSNkZWZpbmUgQUNTX1VMQ09STkVSCU5DVVJTRVNfQUNTKCdsJykgLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KLSNkZWZpbmUgQUNTX0xMQ09STkVSCU5DVVJTRVNfQUNTKCdtJykgLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KLSNkZWZpbmUgQUNTX1VSQ09STkVSCU5DVVJTRVNfQUNTKCdrJykgLyogdXBwZXIgcmlnaHQgY29ybmVyICovCi0jZGVmaW5lIEFDU19MUkNPUk5FUglOQ1VSU0VTX0FDUygnaicpIC8qIGxvd2VyIHJpZ2h0IGNvcm5lciAqLwotI2RlZmluZSBBQ1NfTFRFRQlOQ1VSU0VTX0FDUygndCcpIC8qIHRlZSBwb2ludGluZyByaWdodCAqLwotI2RlZmluZSBBQ1NfUlRFRQlOQ1VSU0VTX0FDUygndScpIC8qIHRlZSBwb2ludGluZyBsZWZ0ICovCi0jZGVmaW5lIEFDU19CVEVFCU5DVVJTRVNfQUNTKCd2JykgLyogdGVlIHBvaW50aW5nIHVwICovCi0jZGVmaW5lIEFDU19UVEVFCU5DVVJTRVNfQUNTKCd3JykgLyogdGVlIHBvaW50aW5nIGRvd24gKi8KLSNkZWZpbmUgQUNTX0hMSU5FCU5DVVJTRVNfQUNTKCdxJykgLyogaG9yaXpvbnRhbCBsaW5lICovCi0jZGVmaW5lIEFDU19WTElORQlOQ1VSU0VTX0FDUygneCcpIC8qIHZlcnRpY2FsIGxpbmUgKi8KLSNkZWZpbmUgQUNTX1BMVVMJTkNVUlNFU19BQ1MoJ24nKSAvKiBsYXJnZSBwbHVzIG9yIGNyb3Nzb3ZlciAqLwotI2RlZmluZSBBQ1NfUzEJCU5DVVJTRVNfQUNTKCdvJykgLyogc2NhbiBsaW5lIDEgKi8KLSNkZWZpbmUgQUNTX1M5CQlOQ1VSU0VTX0FDUygncycpIC8qIHNjYW4gbGluZSA5ICovCi0jZGVmaW5lIEFDU19ESUFNT05ECU5DVVJTRVNfQUNTKCdgJykgLyogZGlhbW9uZCAqLwotI2RlZmluZSBBQ1NfQ0tCT0FSRAlOQ1VSU0VTX0FDUygnYScpIC8qIGNoZWNrZXIgYm9hcmQgKHN0aXBwbGUpICovCi0jZGVmaW5lIEFDU19ERUdSRUUJTkNVUlNFU19BQ1MoJ2YnKSAvKiBkZWdyZWUgc3ltYm9sICovCi0jZGVmaW5lIEFDU19QTE1JTlVTCU5DVVJTRVNfQUNTKCdnJykgLyogcGx1cy9taW51cyAqLwotI2RlZmluZSBBQ1NfQlVMTEVUCU5DVVJTRVNfQUNTKCd+JykgLyogYnVsbGV0ICovCi0vKiBUZWxldHlwZSA1NDEwdjEgc3ltYm9scyBiZWdpbiBoZXJlICovCi0jZGVmaW5lIEFDU19MQVJST1cJTkNVUlNFU19BQ1MoJywnKSAvKiBhcnJvdyBwb2ludGluZyBsZWZ0ICovCi0jZGVmaW5lIEFDU19SQVJST1cJTkNVUlNFU19BQ1MoJysnKSAvKiBhcnJvdyBwb2ludGluZyByaWdodCAqLwotI2RlZmluZSBBQ1NfREFSUk9XCU5DVVJTRVNfQUNTKCcuJykgLyogYXJyb3cgcG9pbnRpbmcgZG93biAqLwotI2RlZmluZSBBQ1NfVUFSUk9XCU5DVVJTRVNfQUNTKCctJykgLyogYXJyb3cgcG9pbnRpbmcgdXAgKi8KLSNkZWZpbmUgQUNTX0JPQVJECU5DVVJTRVNfQUNTKCdoJykgLyogYm9hcmQgb2Ygc3F1YXJlcyAqLwotI2RlZmluZSBBQ1NfTEFOVEVSTglOQ1VSU0VTX0FDUygnaScpIC8qIGxhbnRlcm4gc3ltYm9sICovCi0jZGVmaW5lIEFDU19CTE9DSwlOQ1VSU0VTX0FDUygnMCcpIC8qIHNvbGlkIHNxdWFyZSBibG9jayAqLwotLyoKLSAqIFRoZXNlIGFyZW4ndCBkb2N1bWVudGVkLCBidXQgYSBsb3Qgb2YgU3lzdGVtIFZzIGhhdmUgdGhlbSBhbnl3YXkKLSAqICh5b3UgY2FuIHNwb3QgcHBycnl5enp7e3x8fX0gaW4gYSBsb3Qgb2YgQVQmVCB0ZXJtaW5mbyBzdHJpbmdzKS4KLSAqIFRoZSBBQ1NfbmFtZXMgbWF5IG5vdCBtYXRjaCBBVCZUJ3MsIG91ciBzb3VyY2UgZGlkbid0IGtub3cgdGhlbS4KLSAqLwotI2RlZmluZSBBQ1NfUzMJCU5DVVJTRVNfQUNTKCdwJykgLyogc2NhbiBsaW5lIDMgKi8KLSNkZWZpbmUgQUNTX1M3CQlOQ1VSU0VTX0FDUygncicpIC8qIHNjYW4gbGluZSA3ICovCi0jZGVmaW5lIEFDU19MRVFVQUwJTkNVUlNFU19BQ1MoJ3knKSAvKiBsZXNzL2VxdWFsICovCi0jZGVmaW5lIEFDU19HRVFVQUwJTkNVUlNFU19BQ1MoJ3onKSAvKiBncmVhdGVyL2VxdWFsICovCi0jZGVmaW5lIEFDU19QSQkJTkNVUlNFU19BQ1MoJ3snKSAvKiBQaSAqLwotI2RlZmluZSBBQ1NfTkVRVUFMCU5DVVJTRVNfQUNTKCd8JykgLyogbm90IGVxdWFsICovCi0jZGVmaW5lIEFDU19TVEVSTElORwlOQ1VSU0VTX0FDUygnfScpIC8qIFVLIHBvdW5kIHNpZ24gKi8KLQotLyoKLSAqIExpbmUgZHJhd2luZyBBQ1MgbmFtZXMgYXJlIG9mIHRoZSBmb3JtIEFDU190cmJsLCB3aGVyZSB0IGlzIHRoZSB0b3AsIHIKLSAqIGlzIHRoZSByaWdodCwgYiBpcyB0aGUgYm90dG9tLCBhbmQgbCBpcyB0aGUgbGVmdC4gIHQsIHIsIGIsIGFuZCBsIG1pZ2h0Ci0gKiBiZSBCIChibGFuayksIFMgKHNpbmdsZSksIEQgKGRvdWJsZSksIG9yIFQgKHRoaWNrKS4gIFRoZSBzdWJzZXQgZGVmaW5lZAotICogaGVyZSBvbmx5IHVzZXMgQiBhbmQgUy4KLSAqLwotI2RlZmluZSBBQ1NfQlNTQglBQ1NfVUxDT1JORVIKLSNkZWZpbmUgQUNTX1NTQkIJQUNTX0xMQ09STkVSCi0jZGVmaW5lIEFDU19CQlNTCUFDU19VUkNPUk5FUgotI2RlZmluZSBBQ1NfU0JCUwlBQ1NfTFJDT1JORVIKLSNkZWZpbmUgQUNTX1NCU1MJQUNTX1JURUUKLSNkZWZpbmUgQUNTX1NTU0IJQUNTX0xURUUKLSNkZWZpbmUgQUNTX1NTQlMJQUNTX0JURUUKLSNkZWZpbmUgQUNTX0JTU1MJQUNTX1RURUUKLSNkZWZpbmUgQUNTX0JTQlMJQUNTX0hMSU5FCi0jZGVmaW5lIEFDU19TQlNCCUFDU19WTElORQotI2RlZmluZSBBQ1NfU1NTUwlBQ1NfUExVUwotCi0jdW5kZWYJRVJSCi0jZGVmaW5lIEVSUiAgICAgKC0xKQotCi0jdW5kZWYJT0sKLSNkZWZpbmUgT0sgICAgICAoMCkKLQotLyogdmFsdWVzIGZvciB0aGUgX2ZsYWdzIG1lbWJlciAqLwotI2RlZmluZSBfU1VCV0lOICAgICAgICAgMHgwMQkvKiBpcyB0aGlzIGEgc3ViLXdpbmRvdz8gKi8KLSNkZWZpbmUgX0VORExJTkUgICAgICAgIDB4MDIJLyogaXMgdGhlIHdpbmRvdyBmbHVzaCByaWdodD8gKi8KLSNkZWZpbmUgX0ZVTExXSU4gICAgICAgIDB4MDQJLyogaXMgdGhlIHdpbmRvdyBmdWxsLXNjcmVlbj8gKi8KLSNkZWZpbmUgX1NDUk9MTFdJTiAgICAgIDB4MDgJLyogYm90dG9tIGVkZ2UgaXMgYXQgc2NyZWVuIGJvdHRvbT8gKi8KLSNkZWZpbmUgX0lTUEFECSAgICAgICAgMHgxMAkvKiBpcyB0aGlzIHdpbmRvdyBhIHBhZD8gKi8KLSNkZWZpbmUgX0hBU01PVkVEICAgICAgIDB4MjAJLyogaGFzIGN1cnNvciBtb3ZlZCBzaW5jZSBsYXN0IHJlZnJlc2g/ICovCi0jZGVmaW5lIF9XUkFQUEVEICAgICAgICAweDQwCS8qIGN1cnNvciB3YXMganVzdCB3cmFwcHBlZCAqLwotCi0vKgotICogdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBmaXJzdGNoYXIgYW5kIGxhc3RjaGFyIGZpZWxkcyB0byBtYXJrCi0gKiB1bmNoYW5nZWQgbGluZXMKLSAqLwotI2RlZmluZSBfTk9DSEFOR0UgICAgICAgLTEKLQotLyoKLSAqIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgb2xkaW5kZXggZmllbGQgdG8gbWFyayBsaW5lcyBjcmVhdGVkIGJ5IGluc2VydGlvbnMKLSAqIGFuZCBzY3JvbGxzLgotICovCi0jZGVmaW5lIF9ORVdJTkRFWAktMQotCi10eXBlZGVmIHN0cnVjdCBzY3JlZW4gIFNDUkVFTjsKLXR5cGVkZWYgc3RydWN0IF93aW5fc3QgV0lORE9XOwotCi10eXBlZGVmCWNodHlwZQlhdHRyX3Q7CQkvKiAuLi5tdXN0IGJlIGF0IGxlYXN0IGFzIHdpZGUgYXMgY2h0eXBlICovCi0KLSNpZmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECi0KLSNpZiAwCi0jaWZkZWYgbWJsZW4JCQkvKiBsaWJ1dGY4LmggZGVmaW5lcyBpdCB3L28gdW5kZWZpbmluZyBmaXJzdCAqLwotI3VuZGVmIG1ibGVuCi0jZW5kaWYKLSNpbmNsdWRlIDxsaWJ1dGY4Lmg+Ci0jZW5kaWYKLQotI2lmIDAKLSNpbmNsdWRlIDx3Y2hhci5oPgkJLyogLi4udG8gZ2V0IG1ic3RhdGVfdCwgZXRjLiAqLwotI2VuZGlmCi0KLSNpZiAwCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IHdjaGFyX3Q7Ci0jZW5kaWYKLQotI2lmIDAKLXR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKLSNlbmRpZgotCi0jZGVmaW5lIENDSEFSV19NQVgJNQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBhdHRyX3QJYXR0cjsKLSAgICB3Y2hhcl90CWNoYXJzW0NDSEFSV19NQVhdOwotI2lmIDAKLSN1bmRlZiBOQ1VSU0VTX0VYVF9DT0xPUlMKLSNkZWZpbmUgTkNVUlNFU19FWFRfQ09MT1JTIDIwMDgxMTAyCi0gICAgaW50CQlleHRfY29sb3I7CS8qIGNvbG9yIHBhaXIsIG11c3QgYmUgbW9yZSB0aGFuIDE2LWJpdHMgKi8KLSNlbmRpZgotfQotY2NoYXJfdDsKLQotI2VuZGlmIC8qIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgKi8KLQotI2lmICFOQ1VSU0VTX09QQVFVRQotc3RydWN0IGxkYXQ7Ci0KLXN0cnVjdCBfd2luX3N0Ci17Ci0JTkNVUlNFU19TSVpFX1QgX2N1cnksIF9jdXJ4OyAvKiBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAqLwotCi0JLyogd2luZG93IGxvY2F0aW9uIGFuZCBzaXplICovCi0JTkNVUlNFU19TSVpFX1QgX21heHksIF9tYXh4OyAvKiBtYXhpbXVtcyBvZiB4IGFuZCB5LCBOT1Qgd2luZG93IHNpemUgKi8KLQlOQ1VSU0VTX1NJWkVfVCBfYmVneSwgX2JlZ3g7IC8qIHNjcmVlbiBjb29yZHMgb2YgdXBwZXItbGVmdC1oYW5kIGNvcm5lciAqLwotCi0Jc2hvcnQgICBfZmxhZ3M7CQkvKiB3aW5kb3cgc3RhdGUgZmxhZ3MgKi8KLQotCS8qIGF0dHJpYnV0ZSB0cmFja2luZyAqLwotCWF0dHJfdCAgX2F0dHJzOwkJLyogY3VycmVudCBhdHRyaWJ1dGUgZm9yIG5vbi1zcGFjZSBjaGFyYWN0ZXIgKi8KLQljaHR5cGUgIF9ia2dkOwkJLyogY3VycmVudCBiYWNrZ3JvdW5kIGNoYXIvYXR0cmlidXRlIHBhaXIgKi8KLQotCS8qIG9wdGlvbiB2YWx1ZXMgc2V0IGJ5IHVzZXIgKi8KLQlib29sCV9ub3RpbWVvdXQ7CS8qIG5vIHRpbWUgb3V0IG9uIGZ1bmN0aW9uLWtleSBlbnRyeT8gKi8KLQlib29sCV9jbGVhcjsJCS8qIGNvbnNpZGVyIGFsbCBkYXRhIGluIHRoZSB3aW5kb3cgaW52YWxpZD8gKi8KLQlib29sCV9sZWF2ZW9rOwkvKiBPSyB0byBub3QgcmVzZXQgY3Vyc29yIG9uIGV4aXQ/ICovCi0JYm9vbAlfc2Nyb2xsOwkvKiBPSyB0byBzY3JvbGwgdGhpcyB3aW5kb3c/ICovCi0JYm9vbAlfaWRsb2s7CQkvKiBPSyB0byB1c2UgaW5zZXJ0L2RlbGV0ZSBsaW5lPyAqLwotCWJvb2wJX2lkY29rOwkJLyogT0sgdG8gdXNlIGluc2VydC9kZWxldGUgY2hhcj8gKi8KLQlib29sCV9pbW1lZDsJCS8qIHdpbmRvdyBpbiBpbW1lZCBtb2RlPyAobm90IHlldCB1c2VkKSAqLwotCWJvb2wJX3N5bmM7CQkvKiB3aW5kb3cgaW4gc3luYyBtb2RlPyAqLwotCWJvb2wJX3VzZV9rZXlwYWQ7CS8qIHByb2Nlc3MgZnVuY3Rpb24ga2V5cyBpbnRvIEtFWV8gc3ltYm9scz8gKi8KLQlpbnQJX2RlbGF5OwkJLyogMCA9IG5vZGVsYXksIDwwID0gYmxvY2tpbmcsID4wID0gZGVsYXkgKi8KLQotCXN0cnVjdCBsZGF0ICpfbGluZTsJLyogdGhlIGFjdHVhbCBsaW5lIGRhdGEgKi8KLQotCS8qIGdsb2JhbCBzY3JlZW4gc3RhdGUgKi8KLQlOQ1VSU0VTX1NJWkVfVCBfcmVndG9wOwkvKiB0b3AgbGluZSBvZiBzY3JvbGxpbmcgcmVnaW9uICovCi0JTkNVUlNFU19TSVpFX1QgX3JlZ2JvdHRvbTsgLyogYm90dG9tIGxpbmUgb2Ygc2Nyb2xsaW5nIHJlZ2lvbiAqLwotCi0JLyogdGhlc2UgYXJlIHVzZWQgb25seSBpZiB0aGlzIGlzIGEgc3ViLXdpbmRvdyAqLwotCWludAlfcGFyeDsJCS8qIHggY29vcmRpbmF0ZSBvZiB0aGlzIHdpbmRvdyBpbiBwYXJlbnQgKi8KLQlpbnQJX3Bhcnk7CQkvKiB5IGNvb3JkaW5hdGUgb2YgdGhpcyB3aW5kb3cgaW4gcGFyZW50ICovCi0JV0lORE9XCSpfcGFyZW50OwkvKiBwb2ludGVyIHRvIHBhcmVudCBpZiBhIHN1Yi13aW5kb3cgKi8KLQotCS8qIHRoZXNlIGFyZSB1c2VkIG9ubHkgaWYgdGhpcyBpcyBhIHBhZCAqLwotCXN0cnVjdCBwZGF0Ci0JewotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX3ksICAgICAgX3BhZF94OwotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX3RvcCwgICAgX3BhZF9sZWZ0OwotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX2JvdHRvbSwgX3BhZF9yaWdodDsKLQl9IF9wYWQ7Ci0KLQlOQ1VSU0VTX1NJWkVfVCBfeW9mZnNldDsgLyogcmVhbCBiZWd5IGlzIF9iZWd5ICsgX3lvZmZzZXQgKi8KLQotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKLQljY2hhcl90ICBfYmtncm5kOwkvKiBjdXJyZW50IGJhY2tncm91bmQgY2hhci9hdHRyaWJ1dGUgcGFpciAqLwotI2lmIDAKLQlpbnQJX2NvbG9yOwkJLyogY3VycmVudCBjb2xvci1wYWlyIGZvciBub24tc3BhY2UgY2hhcmFjdGVyICovCi0jZW5kaWYKLSNlbmRpZgotfTsKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0vKgotICogVGhpcyBpcyBhbiBleHRlbnNpb24gdG8gc3VwcG9ydCBldmVudHMuLi4KLSAqLwotI2lmIDEKLSNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSNpZiAhZGVmaW5lZChfX0JFT1NfXykgfHwgZGVmaW5lZChfX0hBSUtVX18pCi0gICAvKiBGaXggX25jX3RpbWVkX3dhaXQoKSBvbiBCRU9TLi4uICovCi0jICBkZWZpbmUgTkNVUlNFU19FVkVOVF9WRVJTSU9OCTEKLSNlbmRpZgkvKiAhZGVmaW5lZChfX0JFT1NfXykgKi8KLQotLyoKLSAqIEJpdHMgdG8gc2V0IGluIF9uY19ldmVudC5kYXRhLmZsYWdzCi0gKi8KLSMgIGRlZmluZSBfTkNfRVZFTlRfVElNRU9VVF9NU0VDCTEKLSMgIGRlZmluZSBfTkNfRVZFTlRfRklMRQkJMgotIyAgZGVmaW5lIF9OQ19FVkVOVF9GSUxFX1JFQURBQkxFCTIKLSMgIGlmIDAJCQkJCS8qIE5vdCBzdXBwb3J0ZWQgeWV0Li4uICovCi0jICAgIGRlZmluZSBfTkNfRVZFTlRfRklMRV9XUklUQUJMRQk0Ci0jICAgIGRlZmluZSBfTkNfRVZFTlRfRklMRV9FWENFUFRJT04JOAotIyAgZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBpbnQgdHlwZTsKLSAgICB1bmlvbgotICAgIHsKLQlsb25nIHRpbWVvdXRfbXNlYzsJLyogX05DX0VWRU5UX1RJTUVPVVRfTVNFQyAqLwotCXN0cnVjdAotCXsKLQkgICAgdW5zaWduZWQgaW50IGZsYWdzOwotCSAgICBpbnQgZmQ7Ci0JICAgIHVuc2lnbmVkIGludCByZXN1bHQ7Ci0JfSBmZXY7CQkJCS8qIF9OQ19FVkVOVF9GSUxFICovCi0gICAgfSBkYXRhOwotfSBfbmNfZXZlbnQ7Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgaW50IGNvdW50OwotICAgIGludCByZXN1bHRfZmxhZ3M7CS8qIF9OQ19FVkVOVF9USU1FT1VUX01TRUMgb3IgX05DX0VWRU5UX0ZJTEVfUkVBREFCTEUgKi8KLSAgICBfbmNfZXZlbnQgKmV2ZW50c1sxXTsKLX0gX25jX2V2ZW50bGlzdDsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldGNoX2V2ZW50cyhXSU5ET1cgKiwgX25jX2V2ZW50bGlzdCAqKTsJLyogZXhwZXJpbWVudGFsICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0bnN0cl9ldmVudHMoV0lORE9XICosY2hhciAqLGludCxfbmNfZXZlbnRsaXN0ICopOy8qIGV4cGVyaW1lbnRhbCAqLwotCi0jZW5kaWYgLyogTkNVUlNFU19XR0VUQ0hfRVZFTlRTICovCi0jZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KLQotLyoKLSAqIEdDQyAoYW5kIHNvbWUgb3RoZXIgY29tcGlsZXJzKSBkZWZpbmUgJ19fYXR0cmlidXRlX18nOyB3ZSdyZSB1c2luZyB0aGlzCi0gKiBtYWNybyB0byBhbGVydCB0aGUgY29tcGlsZXIgdG8gZmxhZyBpbmNvbnNpc3RlbmNpZXMgaW4gcHJpbnRmL3NjYW5mLWxpa2UKLSAqIGZ1bmN0aW9uIGNhbGxzLiAgSnVzdCBpbiBjYXNlICdfX2F0dHJpYnV0ZV9fJyBpc24ndCBkZWZpbmVkLCBtYWtlIGEgZHVtbXkuCi0gKiBPbGQgdmVyc2lvbnMgb2YgRysrIGRvIG5vdCBhY2NlcHQgaXQgYW55d2F5LCBhdCBsZWFzdCBub3QgY29uc2lzdGVudGx5IHdpdGgKLSAqIEdDQy4KLSAqLwotI2lmICEoZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0dOVUdfXykgfHwgZGVmaW5lZChfX2F0dHJpYnV0ZV9fKSkKLSNkZWZpbmUgX19hdHRyaWJ1dGVfXyhwKSAvKiBub3RoaW5nICovCi0jZW5kaWYKLQotLyoKLSAqIFdlIGNhbm5vdCBkZWZpbmUgdGhlc2UgaW4gbmN1cnNlc19jZmcuaCwgc2luY2UgdGhleSByZXF1aXJlIHBhcmFtZXRlcnMgdG8gYmUKLSAqIHBhc3NlZCAodGhhdCBpcyBub24tcG9ydGFibGUpLiAgSWYgeW91IGhhcHBlbiB0byBiZSB1c2luZyBnY2Mgd2l0aCB3YXJuaW5ncwotICogZW5hYmxlZCwgZGVmaW5lCi0gKglHQ0NfUFJJTlRGCi0gKglHQ0NfU0NBTkYKLSAqIHRvIGltcHJvdmUgY2hlY2tpbmcgb2YgY2FsbHMgdG8gcHJpbnR3KCksIGV0Yy4KLSAqLwotI2lmbmRlZiBHQ0NfUFJJTlRGTElLRQotI2lmIGRlZmluZWQoR0NDX1BSSU5URikgJiYgIWRlZmluZWQocHJpbnRmKQotI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSkKLSNlbHNlCi0jZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIC8qbm90aGluZyovCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEdDQ19TQ0FORkxJS0UKLSNpZiBkZWZpbmVkKEdDQ19TQ0FORikgJiYgIWRlZmluZWQoc2NhbmYpCi0jZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIF9fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpCi0jZWxzZQotI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICAvKm5vdGhpbmcqLwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZglHQ0NfTk9SRVRVUk4KLSNkZWZpbmUJR0NDX05PUkVUVVJOIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi0jaWZuZGVmCUdDQ19VTlVTRUQKLSNkZWZpbmUJR0NDX1VOVVNFRCAvKiBub3RoaW5nICovCi0jZW5kaWYKLQotLyoKLSAqIEZ1bmN0aW9uIHByb3RvdHlwZXMuICBUaGlzIGlzIHRoZSBjb21wbGV0ZSBYL09wZW4gQ3Vyc2VzIGxpc3Qgb2YgcmVxdWlyZWQKLSAqIGZ1bmN0aW9ucy4gIFRob3NlIG1hcmtlZCBgZ2VuZXJhdGVkJyB3aWxsIGhhdmUgc291cmNlcyBnZW5lcmF0ZWQgZnJvbSB0aGUKLSAqIG1hY3JvIGRlZmluaXRpb25zIGxhdGVyIGluIHRoaXMgZmlsZSwgaW4gb3JkZXIgdG8gc2F0aXNmeSBYUEc0LjIKLSAqIHJlcXVpcmVtZW50cy4KLSAqLwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRjaCAoY29uc3QgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNobnN0ciAoY29uc3QgY2h0eXBlICosIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNoc3RyIChjb25zdCBjaHR5cGUgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRuc3RyIChjb25zdCBjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRzdHIgKGNvbnN0IGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb2ZmIChOQ1VSU0VTX0FUVFJfVCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb24gKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJzZXQgKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfZ2V0IChhdHRyX3QgKiwgc2hvcnQgKiwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX29mZiAoYXR0cl90LCB2b2lkICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9vbiAoYXR0cl90LCB2b2lkICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9zZXQgKGF0dHJfdCwgc2hvcnQsIHZvaWQgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJhdWRyYXRlICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJlZXAgICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJrZ2QgKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIGJrZ2RzZXQgKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYm9yZGVyIChjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBib3ggKFdJTkRPVyAqLCBjaHR5cGUsIGNodHlwZSk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBjYW5fY2hhbmdlX2NvbG9yICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2JyZWFrICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNoZ2F0IChpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xlYXIgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNsZWFyb2sgKFdJTkRPVyAqLGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjbHJ0b2JvdCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xydG9lb2wgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX2NvbnRlbnQgKHNob3J0LHNob3J0KixzaG9ydCosc2hvcnQqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX3NldCAoc2hvcnQsdm9pZCopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgQ09MT1JfUEFJUiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjb3B5d2luIChjb25zdCBXSU5ET1cqLFdJTkRPVyosaW50LGludCxpbnQsaW50LGludCxpbnQsaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGN1cnNfc2V0IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVmX3Byb2dfbW9kZSAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRlZl9zaGVsbF9tb2RlICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsYXlfb3V0cHV0IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsY2ggKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBkZWxzY3JlZW4gKFNDUkVFTiAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsd2luIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWxldGVsbiAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBkZXJ3aW4gKFdJTkRPVyAqLGludCxpbnQsaW50LGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkb3VwZGF0ZSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIGR1cHdpbiAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlY2hvICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlY2hvY2hhciAoY29uc3QgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGVyYXNlICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlbmR3aW4gKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIpIGVyYXNlY2hhciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgZmlsdGVyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGZsYXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGZsdXNoaW5wICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIGdldGJrZ2QgKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGdldGNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRuc3RyIChjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRzdHIgKGNoYXIgKik7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBnZXR3aW4gKEZJTEUgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhhbGZkZWxheSAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBoYXNfY29sb3JzICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBoYXNfaWMgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGhhc19pbCAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBobGluZSAoY2h0eXBlLCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBpZGNvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpZGxvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgaW1tZWRvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSBpbmNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbmNobnN0ciAoY2h0eXBlICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbmNoc3RyIChjaHR5cGUgKik7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBpbml0c2NyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluaXRfY29sb3IgKHNob3J0LHNob3J0LHNob3J0LHNob3J0KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluaXRfcGFpciAoc2hvcnQsc2hvcnQsc2hvcnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGlubnN0ciAoY2hhciAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zY2ggKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zZGVsbG4gKGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zZXJ0bG4gKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc25zdHIgKGNvbnN0IGNoYXIgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc3N0ciAoY29uc3QgY2hhciAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc3RyIChjaGFyICopOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGludHJmbHVzaCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc2VuZHdpbiAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbGluZXRvdWNoZWQgKFdJTkRPVyAqLGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3dpbnRvdWNoZWQgKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBrZXluYW1lIChpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleXBhZCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyKSBraWxsY2hhciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBsZWF2ZW9rIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgbG9uZ25hbWUgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbWV0YSAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG1vdmUgKGludCwgaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoIChpbnQsIGludCwgY29uc3QgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRjaG5zdHIgKGludCwgaW50LCBjb25zdCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoc3RyIChpbnQsIGludCwgY29uc3QgY2h0eXBlICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkbnN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZHN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12Y2hnYXQgKGludCwgaW50LCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZjdXIgKGludCxpbnQsaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12ZGVsY2ggKGludCwgaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmRlcndpbiAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmdldGNoIChpbnQsIGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZnZXRuc3RyIChpbnQsIGludCwgY2hhciAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmdldHN0ciAoaW50LCBpbnQsIGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmhsaW5lIChpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSBtdmluY2ggKGludCwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5jaG5zdHIgKGludCwgaW50LCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluY2hzdHIgKGludCwgaW50LCBjaHR5cGUgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5uc3RyIChpbnQsIGludCwgY2hhciAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc2NoIChpbnQsIGludCwgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zbnN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc3N0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zdHIgKGludCwgaW50LCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZwcmludHcgKGludCxpbnQsIGNvbnN0IGNoYXIgKiwuLi4pCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSgzLDQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZzY2FudyAoaW50LGludCwgTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDMsNCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnZsaW5lIChpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRjaCAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaHR5cGUpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNobnN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaHR5cGUgKiwgaW50KTsvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNoc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNodHlwZSAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRuc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndjaGdhdCAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7LyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndkZWxjaCAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0Y2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldG5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldHN0ciAoV0lORE9XICosIGludCwgaW50LCBjaGFyICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2hsaW5lIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbiAoV0lORE9XICosaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIG12d2luY2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbmNobnN0ciAoV0lORE9XICosIGludCwgaW50LCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbmNoc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5uc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKiwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zY2ggKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zbnN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICosIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d3ByaW50dyAoV0lORE9XKixpbnQsaW50LCBjb25zdCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSg0LDUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3c2NhbncgKFdJTkRPVyAqLGludCxpbnQsIE5DVVJTRVNfQ09OU1QgY2hhciAqLC4uLikJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1NDQU5GTElLRSg0LDUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3dmxpbmUgKFdJTkRPVyAqLGludCwgaW50LCBjaHR5cGUsIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbmFwbXMgKGludCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBuZXdwYWQgKGludCxpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKSBuZXd0ZXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKixGSUxFICosRklMRSAqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgbmV3d2luIChpbnQsaW50LGludCxpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBubCAodm9pZCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9jYnJlYWsgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9kZWxheSAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vZWNobyAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub25sICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgbm9xaWZsdXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vcmF3ICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vdGltZW91dCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG92ZXJsYXkgKGNvbnN0IFdJTkRPVyosV0lORE9XICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG92ZXJ3cml0ZSAoY29uc3QgV0lORE9XKixXSU5ET1cgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcGFpcl9jb250ZW50IChzaG9ydCxzaG9ydCosc2hvcnQqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBQQUlSX05VTUJFUiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwZWNob2NoYXIgKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHBub3V0cmVmcmVzaCAoV0lORE9XKixpbnQsaW50LGludCxpbnQsaW50LGludCk7LyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHByZWZyZXNoIChXSU5ET1cgKixpbnQsaW50LGludCxpbnQsaW50LGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwcmludHcgKGNvbnN0IGNoYXIgKiwuLi4pCQkJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1BSSU5URkxJS0UoMSwyKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHB1dHdpbiAoV0lORE9XICosIEZJTEUgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBxaWZsdXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJhdyAodm9pZCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVkcmF3d2luIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZWZyZXNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZXNldHR5ICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2V0X3Byb2dfbW9kZSAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2V0X3NoZWxsX21vZGUgKHZvaWQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByaXBvZmZsaW5lIChpbnQsIGludCAoKikoV0lORE9XICosIGludCkpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2F2ZXR0eSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY2FudyAoTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1NDQU5GTElLRSgxLDIpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2NyX2R1bXAgKGNvbnN0IGNoYXIgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcl9pbml0IChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JsIChpbnQpOwkJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JvbGwgKFdJTkRPVyAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JvbGxvayAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcl9yZXN0b3JlIChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3Jfc2V0IChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzZXRzY3JyZWcgKGludCxpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikgc2V0X3Rlcm0gKFNDUkVFTiAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2F0dHJvZmYgKGNvbnN0IGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyX29mZiAoY29uc3QgYXR0cl90LCB2b2lkICopOwkJLyogZ2VuZXJhdGVkOldJREVDICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cm9uIChjb25zdCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9vbiAoYXR0cl90LHZvaWQqKTsJCQkvKiBnZW5lcmF0ZWQ6V0lERUMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyc2V0IChjb25zdCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYXR0cl90KSBzbGtfYXR0ciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9zZXQgKGNvbnN0IGF0dHJfdCxzaG9ydCx2b2lkKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfY2xlYXIgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2NvbG9yIChzaG9ydCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfaW5pdCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHNsa19sYWJlbCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19ub3V0cmVmcmVzaCAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19yZWZyZXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19yZXN0b3JlICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19zZXQgKGludCxjb25zdCBjaGFyICosaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfdG91Y2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc3RhbmRvdXQgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHN0YW5kZW5kICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzdGFydF9jb2xvciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHN1YnBhZCAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHN1YndpbiAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzeW5jb2sgKFdJTkRPVyAqLCBib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgdGVybWF0dHJzICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRlcm1uYW1lICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB0aW1lb3V0IChpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRvdWNobGluZSAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdG91Y2h3aW4gKFdJTkRPVyAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0eXBlYWhlYWQgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1bmdldGNoIChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdW50b3VjaHdpbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHVzZV9lbnYgKGJvb2wpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdmlkYXR0ciAoY2h0eXBlKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZpZHB1dHMgKGNodHlwZSwgaW50ICgqKShpbnQpKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2bGluZSAoY2h0eXBlLCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3cHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndfcHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3c2NhbncgKFdJTkRPVyAqLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKix2YV9saXN0KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3X3NjYW53IChXSU5ET1cgKiwgTkNVUlNFU19DT05TVCBjaGFyICosdmFfbGlzdCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZGNoIChXSU5ET1cgKiwgY29uc3QgY2h0eXBlKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YWRkY2huc3RyIChXSU5ET1cgKixjb25zdCBjaHR5cGUgKixpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZGNoc3RyIChXSU5ET1cgKixjb25zdCBjaHR5cGUgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRuc3RyIChXSU5ET1cgKixjb25zdCBjaGFyICosaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRzdHIgKFdJTkRPVyAqLGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyb24gKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJvZmYgKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJzZXQgKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfZ2V0IChXSU5ET1cgKiwgYXR0cl90ICosIHNob3J0ICosIHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfb24gKFdJTkRPVyAqLCBhdHRyX3QsIHZvaWQgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfb2ZmIChXSU5ET1cgKiwgYXR0cl90LCB2b2lkICopOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfc2V0IChXSU5ET1cgKiwgYXR0cl90LCBzaG9ydCwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YmtnZCAoV0lORE9XICosIGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3YmtnZHNldCAoV0lORE9XICosY2h0eXBlKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2JvcmRlciAoV0lORE9XICosY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y2hnYXQgKFdJTkRPVyAqLCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7LyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjbGVhciAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NscnRvYm90IChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjbHJ0b2VvbCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y29sb3Jfc2V0IChXSU5ET1cqLHNob3J0LHZvaWQqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgd2N1cnN5bmN1cCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZGVsY2ggKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdkZWxldGVsbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2VjaG9jaGFyIChXSU5ET1cgKiwgY29uc3QgY2h0eXBlKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZXJhc2UgKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRjaCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldG5zdHIgKFdJTkRPVyAqLGNoYXIgKixpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRzdHIgKFdJTkRPVyAqLCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2hsaW5lIChXSU5ET1cgKiwgY2h0eXBlLCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIHdpbmNoIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5jaG5zdHIgKFdJTkRPVyAqLCBjaHR5cGUgKiwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5jaHN0ciAoV0lORE9XICosIGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2lubnN0ciAoV0lORE9XICosIGNoYXIgKiwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zY2ggKFdJTkRPVyAqLCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zZGVsbG4gKFdJTkRPVyAqLGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNlcnRsbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2luc25zdHIgKFdJTkRPVyAqLCBjb25zdCBjaGFyICosaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNzdHIgKFdJTkRPVyAqLCBjb25zdCBjaGFyICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zdHIgKFdJTkRPVyAqLCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd21vdmUgKFdJTkRPVyAqLGludCxpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3bm91dHJlZnJlc2ggKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3ByaW50dyAoV0lORE9XICosIGNvbnN0IGNoYXIgKiwuLi4pCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSgyLDMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3JlZHJhd2xuIChXSU5ET1cgKixpbnQsaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3cmVmcmVzaCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3NjYW53IChXSU5ET1cgKiwgTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDIsMyk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c2NybCAoV0lORE9XICosaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3NldHNjcnJlZyAoV0lORE9XICosaW50LGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3N0YW5kb3V0IChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c3RhbmRlbmQgKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3c3luY2Rvd24gKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHdzeW5jdXAgKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3dGltZW91dCAoV0lORE9XICosaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3RvdWNobG4gKFdJTkRPVyAqLGludCxpbnQsaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3dmxpbmUgKFdJTkRPVyAqLGNodHlwZSxpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLQotLyoKLSAqIFRoZXNlIGFyZSBhbHNvIGRlY2xhcmVkIGluIDx0ZXJtLmg+OgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0aWdldGZsYWcgKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0aWdldG51bSAoTkNVUlNFU19DT05TVCBjaGFyICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRpZ2V0c3RyIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcHV0cCAoY29uc3QgY2hhciAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLQotI2lmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLCAuLi4pOwkvKiBzcGVjaWFsICovCi0jZWxzZQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLCBsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyk7CS8qIHNwZWNpYWwgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtX3ZhcmFyZ3MgKE5DVVJTRVNfQ09OU1QgY2hhciAqLCAuLi4pOwkvKiBzcGVjaWFsICovCi0jZW5kaWYKLQotLyoKLSAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGluIFgvT3BlbiwgYnV0IHdlIHVzZSB0aGVtIGluIG1hY3JvIGRlZmluaXRpb25zOgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRhdHRycyAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y3VyeCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y3VyeSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0YmVneCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0YmVneSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bWF4eCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bWF4eSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0cGFyeCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0cGFyeSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotCi0vKgotICogdmlkX2F0dHIoKSB3YXMgaW1wbGVtZW50ZWQgb3JpZ2luYWxseSBiYXNlZCBvbiBhIGRyYWZ0IG9mIFgvT3BlbiBjdXJzZXMuCi0gKi8KLSNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotI2RlZmluZSB2aWRfYXR0cihhLHBhaXIsb3B0cykgdmlkYXR0cihhKQotI2VuZGlmCi0KLS8qCi0gKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGV4dGVuc2lvbnMgLSBub3QgaW4gWC9PcGVuIEN1cnNlcy4KLSAqLwotI2lmIDEKLSN1bmRlZiAgTkNVUlNFU19FWFRfRlVOQ1MKLSNkZWZpbmUgTkNVUlNFU19FWFRfRlVOQ1MgMjAwODExMDIKLXR5cGVkZWYgaW50ICgqTkNVUlNFU19XSU5ET1dfQ0IpKFdJTkRPVyAqLCB2b2lkICopOwotdHlwZWRlZiBpbnQgKCpOQ1VSU0VTX1NDUkVFTl9DQikoU0NSRUVOICosIHZvaWQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfdGVybV9yZXNpemVkIChpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBrZXlib3VuZCAoaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikgY3Vyc2VzX3ZlcnNpb24gKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXNzdW1lX2RlZmF1bHRfY29sb3JzIChpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWZpbmVfa2V5IChjb25zdCBjaGFyICosIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBrZXlfZGVmaW5lZCAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleW9rIChpbnQsIGJvb2wpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzaXplX3Rlcm0gKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2l6ZXRlcm0gKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldF9lc2NkZWxheSAoaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldF90YWJzaXplIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdXNlX2RlZmF1bHRfY29sb3JzICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV9leHRlbmRlZF9uYW1lcyAoYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1c2VfbGVnYWN5X2NvZGluZyAoaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV9zY3JlZW4gKFNDUkVFTiAqLCBOQ1VSU0VTX1NDUkVFTl9DQiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV93aW5kb3cgKFdJTkRPVyAqLCBOQ1VSU0VTX1dJTkRPV19DQiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdyZXNpemUgKFdJTkRPVyAqLCBpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgbm9maWx0ZXIodm9pZCk7Ci0KLS8qCi0gKiBUaGVzZSBleHRlbnNpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgV0lORE9XIGV2ZW4KLSAqIHdoZW4gTkNVUlNFU19PUEFRVUUgaXMgc2V0OgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfY2xlYXJlZCAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19pZGNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2ltbWVkb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfa2V5cGFkIChjb25zdCBXSU5ET1cgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19sZWF2ZW9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX25vZGVsYXkgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbm90aW1lb3V0IChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3Njcm9sbG9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3N5bmNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0c2NycmVnIChjb25zdCBXSU5ET1cgKiwgaW50ICosIGludCAqKTsgLyogZ2VuZXJhdGVkICovCi0KLSNlbHNlCi0jZGVmaW5lIGN1cnNlc192ZXJzaW9uKCkgTkNVUlNFU19WRVJTSU9OCi0jZW5kaWYKLQotLyogYXR0cmlidXRlcyAqLwotCi0jZGVmaW5lIE5DVVJTRVNfQVRUUl9TSElGVCAgICAgICA4Ci0jZGVmaW5lIE5DVVJTRVNfQklUUyhtYXNrLHNoaWZ0KSAoKG1hc2spIDw8ICgoc2hpZnQpICsgTkNVUlNFU19BVFRSX1NISUZUKSkKLQotI2RlZmluZSBBX05PUk1BTAkoMVVMIC0gMVVMKQotI2RlZmluZSBBX0FUVFJJQlVURVMJTkNVUlNFU19CSVRTKH4oMVVMIC0gMVVMKSwwKQotI2RlZmluZSBBX0NIQVJURVhUCShOQ1VSU0VTX0JJVFMoMVVMLDApIC0gMVVMKQotI2RlZmluZSBBX0NPTE9SCQlOQ1VSU0VTX0JJVFMoKCgxVUwpIDw8IDgpIC0gMVVMLDApCi0jZGVmaW5lIEFfU1RBTkRPVVQJTkNVUlNFU19CSVRTKDFVTCw4KQotI2RlZmluZSBBX1VOREVSTElORQlOQ1VSU0VTX0JJVFMoMVVMLDkpCi0jZGVmaW5lIEFfUkVWRVJTRQlOQ1VSU0VTX0JJVFMoMVVMLDEwKQotI2RlZmluZSBBX0JMSU5LCQlOQ1VSU0VTX0JJVFMoMVVMLDExKQotI2RlZmluZSBBX0RJTQkJTkNVUlNFU19CSVRTKDFVTCwxMikKLSNkZWZpbmUgQV9CT0xECQlOQ1VSU0VTX0JJVFMoMVVMLDEzKQotI2RlZmluZSBBX0FMVENIQVJTRVQJTkNVUlNFU19CSVRTKDFVTCwxNCkKLSNkZWZpbmUgQV9JTlZJUwkJTkNVUlNFU19CSVRTKDFVTCwxNSkKLSNkZWZpbmUgQV9QUk9URUNUCU5DVVJTRVNfQklUUygxVUwsMTYpCi0jZGVmaW5lIEFfSE9SSVpPTlRBTAlOQ1VSU0VTX0JJVFMoMVVMLDE3KQotI2RlZmluZSBBX0xFRlQJCU5DVVJTRVNfQklUUygxVUwsMTgpCi0jZGVmaW5lIEFfTE9XCQlOQ1VSU0VTX0JJVFMoMVVMLDE5KQotI2RlZmluZSBBX1JJR0hUCQlOQ1VSU0VTX0JJVFMoMVVMLDIwKQotI2RlZmluZSBBX1RPUAkJTkNVUlNFU19CSVRTKDFVTCwyMSkKLSNkZWZpbmUgQV9WRVJUSUNBTAlOQ1VSU0VTX0JJVFMoMVVMLDIyKQotCi0vKgotICogTW9zdCBvZiB0aGUgcHNldWRvIGZ1bmN0aW9ucyBhcmUgbWFjcm9zIHRoYXQgZWl0aGVyIHByb3ZpZGUgY29tcGF0aWJpbGl0eQotICogd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBjdXJzZXMsIG9yIHByb3ZpZGUgaW5saW5lIGZ1bmN0aW9uYWxpdHkgdG8gaW1wcm92ZQotICogcGVyZm9ybWFuY2UuCi0gKi8KLQotLyoKLSAqIFRoZXNlIHBzZXVkbyBmdW5jdGlvbnMgYXJlIGFsd2F5cyBpbXBsZW1lbnRlZCBhcyBtYWNyb3M6Ci0gKi8KLQotI2RlZmluZSBnZXR5eCh3aW4seSx4KSAgIAkoeSA9IGdldGN1cnkod2luKSwgeCA9IGdldGN1cngod2luKSkKLSNkZWZpbmUgZ2V0YmVneXgod2luLHkseCkJKHkgPSBnZXRiZWd5KHdpbiksIHggPSBnZXRiZWd4KHdpbikpCi0jZGVmaW5lIGdldG1heHl4KHdpbix5LHgpCSh5ID0gZ2V0bWF4eSh3aW4pLCB4ID0gZ2V0bWF4eCh3aW4pKQotI2RlZmluZSBnZXRwYXJ5eCh3aW4seSx4KQkoeSA9IGdldHBhcnkod2luKSwgeCA9IGdldHBhcngod2luKSkKLQotI2RlZmluZSBnZXRzeXgoeSx4KSBkbyB7IGlmIChuZXdzY3IpIHsgXAotCQkJICAgICBpZiAoaXNfbGVhdmVvayhuZXdzY3IpKSBcCi0JCQkJKHkpID0gKHgpID0gLTE7IFwKLQkJCSAgICAgZWxzZSBcCi0JCQkJIGdldHl4KG5ld3NjciwoeSksICh4KSk7IFwKLQkJCX0gXAotCQkgICAgfSB3aGlsZSgwKQotCi0jZGVmaW5lIHNldHN5eCh5LHgpIGRvIHsgaWYgKG5ld3NjcikgeyBcCi0JCQkgICAgaWYgKCh5KSA9PSAtMSAmJiAoeCkgPT0gLTEpIFwKLQkJCQlsZWF2ZW9rKG5ld3NjciwgVFJVRSk7IFwKLQkJCSAgICBlbHNlIHsgXAotCQkJCWxlYXZlb2sobmV3c2NyLCBGQUxTRSk7IFwKLQkJCQl3bW92ZShuZXdzY3IsICh5KSwgKHgpKTsgXAotCQkJICAgIH0gXAotCQkJfSBcCi0JCSAgICB9IHdoaWxlKDApCi0KLSNpZm5kZWYgTkNVUlNFU19OT01BQ1JPUwotCi0vKgotICogVGhlc2UgbWlzY2VsbGFuZW91cyBwc2V1ZG8gZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eToKLSAqLwotCi0jZGVmaW5lIHdnZXRzdHIodywgcykJCXdnZXRuc3RyKHcsIHMsIC0xKQotI2RlZmluZSBnZXRuc3RyKHMsIG4pCQl3Z2V0bnN0cihzdGRzY3IsIHMsIG4pCi0KLSNkZWZpbmUgc2V0dGVybSh0ZXJtKQkJc2V0dXB0ZXJtKHRlcm0sIDEsIChpbnQgKikwKQotCi0jZGVmaW5lIGZpeHRlcm0oKQkJcmVzZXRfcHJvZ19tb2RlKCkKLSNkZWZpbmUgcmVzZXR0ZXJtKCkJCXJlc2V0X3NoZWxsX21vZGUoKQotI2RlZmluZSBzYXZldGVybSgpCQlkZWZfcHJvZ19tb2RlKCkKLSNkZWZpbmUgY3Jtb2RlKCkJCWNicmVhaygpCi0jZGVmaW5lIG5vY3Jtb2RlKCkJCW5vY2JyZWFrKCkKLSNkZWZpbmUgZ2V0dG1vZGUoKQotCi0vKiBJdCBzZWVtcyBvbGRlciBTWVNWIGN1cnNlcyB2ZXJzaW9ucyBkZWZpbmUgdGhlc2UgKi8KLSNpZiAhTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgZ2V0YXR0cnMod2luKQkJKCh3aW4pID8gKHdpbiktPl9hdHRycyA6IEFfTk9STUFMKQotI2RlZmluZSBnZXRjdXJ4KHdpbikJCSgod2luKSA/ICh3aW4pLT5fY3VyeCA6IEVSUikKLSNkZWZpbmUgZ2V0Y3VyeSh3aW4pCQkoKHdpbikgPyAod2luKS0+X2N1cnkgOiBFUlIpCi0jZGVmaW5lIGdldGJlZ3god2luKQkJKCh3aW4pID8gKHdpbiktPl9iZWd4IDogRVJSKQotI2RlZmluZSBnZXRiZWd5KHdpbikJCSgod2luKSA/ICh3aW4pLT5fYmVneSA6IEVSUikKLSNkZWZpbmUgZ2V0bWF4eCh3aW4pCQkoKHdpbikgPyAoKHdpbiktPl9tYXh4ICsgMSkgOiBFUlIpCi0jZGVmaW5lIGdldG1heHkod2luKQkJKCh3aW4pID8gKCh3aW4pLT5fbWF4eSArIDEpIDogRVJSKQotI2RlZmluZSBnZXRwYXJ4KHdpbikJCSgod2luKSA/ICh3aW4pLT5fcGFyeCA6IEVSUikKLSNkZWZpbmUgZ2V0cGFyeSh3aW4pCQkoKHdpbikgPyAod2luKS0+X3BhcnkgOiBFUlIpCi0jZW5kaWYgLyogTkNVUlNFU19PUEFRVUUgKi8KLQotI2RlZmluZSB3c3RhbmRvdXQod2luKSAgICAgIAkod2F0dHJzZXQod2luLEFfU1RBTkRPVVQpKQotI2RlZmluZSB3c3RhbmRlbmQod2luKSAgICAgIAkod2F0dHJzZXQod2luLEFfTk9STUFMKSkKLQotI2RlZmluZSB3YXR0cm9uKHdpbixhdCkJCXdhdHRyX29uKHdpbiwgTkNVUlNFU19DQVNUKGF0dHJfdCwgYXQpLCBOVUxMKQotI2RlZmluZSB3YXR0cm9mZih3aW4sYXQpCXdhdHRyX29mZih3aW4sIE5DVVJTRVNfQ0FTVChhdHRyX3QsIGF0KSwgTlVMTCkKLQotI2lmICFOQ1VSU0VTX09QQVFVRQotI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCkgJiYgMAotI2RlZmluZSB3YXR0cnNldCh3aW4sYXQpCSgod2luKS0+X2NvbG9yID0gUEFJUl9OVU1CRVIoYXQpLCBcCi0JCQkJICh3aW4pLT5fYXR0cnMgPSAoYXQpKQotI2Vsc2UKLSNkZWZpbmUgd2F0dHJzZXQod2luLGF0KQkoKHdpbiktPl9hdHRycyA9IChhdCkpCi0jZW5kaWYKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHNjcm9sbCh3aW4pCQl3c2NybCh3aW4sMSkKLQotI2RlZmluZSB0b3VjaHdpbih3aW4pCQl3dG91Y2hsbigod2luKSwgMCwgZ2V0bWF4eSh3aW4pLCAxKQotI2RlZmluZSB0b3VjaGxpbmUod2luLCBzLCBjKQl3dG91Y2hsbigod2luKSwgcywgYywgMSkKLSNkZWZpbmUgdW50b3VjaHdpbih3aW4pCQl3dG91Y2hsbigod2luKSwgMCwgZ2V0bWF4eSh3aW4pLCAwKQotCi0jZGVmaW5lIGJveCh3aW4sIHYsIGgpCQl3Ym9yZGVyKHdpbiwgdiwgdiwgaCwgaCwgMCwgMCwgMCwgMCkKLSNkZWZpbmUgYm9yZGVyKGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikJd2JvcmRlcihzdGRzY3IsIGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikKLSNkZWZpbmUgaGxpbmUoY2gsIG4pCQl3aGxpbmUoc3Rkc2NyLCBjaCwgbikKLSNkZWZpbmUgdmxpbmUoY2gsIG4pCQl3dmxpbmUoc3Rkc2NyLCBjaCwgbikKLQotI2RlZmluZSB3aW5zdHIodywgcykJCXdpbm5zdHIodywgcywgLTEpCi0jZGVmaW5lIHdpbmNoc3RyKHcsIHMpCQl3aW5jaG5zdHIodywgcywgLTEpCi0jZGVmaW5lIHdpbnNzdHIodywgcykJCXdpbnNuc3RyKHcsIHMsIC0xKQotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIHJlZHJhd3dpbih3aW4pCQl3cmVkcmF3bG4od2luLCAwLCAod2luKS0+X21heHkrMSkKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHdhZGRzdHIod2luLHN0cikJd2FkZG5zdHIod2luLHN0ciwtMSkKLSNkZWZpbmUgd2FkZGNoc3RyKHdpbixzdHIpCXdhZGRjaG5zdHIod2luLHN0ciwtMSkKLQotLyoKLSAqIFRoZXNlIGFwcGx5IHRvIHRoZSBmaXJzdCAyNTYgY29sb3IgcGFpcnMuCi0gKi8KLSNkZWZpbmUgQ09MT1JfUEFJUihuKQlOQ1VSU0VTX0JJVFMobiwgMCkKLSNkZWZpbmUgUEFJUl9OVU1CRVIoYSkJKE5DVVJTRVNfQ0FTVChpbnQsKCgoYSkgJiBBX0NPTE9SKSA+PiBOQ1VSU0VTX0FUVFJfU0hJRlQpKSkKLQotLyoKLSAqIHBzZXVkbyBmdW5jdGlvbnMgZm9yIHN0YW5kYXJkIHNjcmVlbgotICovCi0KLSNkZWZpbmUgYWRkY2goY2gpCQl3YWRkY2goc3Rkc2NyLGNoKQotI2RlZmluZSBhZGRjaG5zdHIoc3RyLG4pCXdhZGRjaG5zdHIoc3Rkc2NyLHN0cixuKQotI2RlZmluZSBhZGRjaHN0cihzdHIpCQl3YWRkY2hzdHIoc3Rkc2NyLHN0cikKLSNkZWZpbmUgYWRkbnN0cihzdHIsbikJCXdhZGRuc3RyKHN0ZHNjcixzdHIsbikKLSNkZWZpbmUgYWRkc3RyKHN0cikJCXdhZGRuc3RyKHN0ZHNjcixzdHIsLTEpCi0jZGVmaW5lIGF0dHJvZmYoYXQpCQl3YXR0cm9mZihzdGRzY3IsYXQpCi0jZGVmaW5lIGF0dHJvbihhdCkJCXdhdHRyb24oc3Rkc2NyLGF0KQotI2RlZmluZSBhdHRyc2V0KGF0KQkJd2F0dHJzZXQoc3Rkc2NyLGF0KQotI2RlZmluZSBhdHRyX2dldChhcCxjcCxvKQl3YXR0cl9nZXQoc3Rkc2NyLGFwLGNwLG8pCi0jZGVmaW5lIGF0dHJfb2ZmKGEsbykJCXdhdHRyX29mZihzdGRzY3IsYSxvKQotI2RlZmluZSBhdHRyX29uKGEsbykJCXdhdHRyX29uKHN0ZHNjcixhLG8pCi0jZGVmaW5lIGF0dHJfc2V0KGEsYyxvKQkJd2F0dHJfc2V0KHN0ZHNjcixhLGMsbykKLSNkZWZpbmUgYmtnZChjaCkJCXdia2dkKHN0ZHNjcixjaCkKLSNkZWZpbmUgYmtnZHNldChjaCkJCXdia2dkc2V0KHN0ZHNjcixjaCkKLSNkZWZpbmUgY2hnYXQobixhLGMsbykJCXdjaGdhdChzdGRzY3IsbixhLGMsbykKLSNkZWZpbmUgY2xlYXIoKQkJCXdjbGVhcihzdGRzY3IpCi0jZGVmaW5lIGNscnRvYm90KCkJCXdjbHJ0b2JvdChzdGRzY3IpCi0jZGVmaW5lIGNscnRvZW9sKCkJCXdjbHJ0b2VvbChzdGRzY3IpCi0jZGVmaW5lIGNvbG9yX3NldChjLG8pCQl3Y29sb3Jfc2V0KHN0ZHNjcixjLG8pCi0jZGVmaW5lIGRlbGNoKCkJCQl3ZGVsY2goc3Rkc2NyKQotI2RlZmluZSBkZWxldGVsbigpCQl3aW5zZGVsbG4oc3Rkc2NyLC0xKQotI2RlZmluZSBlY2hvY2hhcihjKQkJd2VjaG9jaGFyKHN0ZHNjcixjKQotI2RlZmluZSBlcmFzZSgpCQkJd2VyYXNlKHN0ZHNjcikKLSNkZWZpbmUgZ2V0Y2goKQkJCXdnZXRjaChzdGRzY3IpCi0jZGVmaW5lIGdldHN0cihzdHIpCQl3Z2V0c3RyKHN0ZHNjcixzdHIpCi0jZGVmaW5lIGluY2goKQkJCXdpbmNoKHN0ZHNjcikKLSNkZWZpbmUgaW5jaG5zdHIocyxuKQkJd2luY2huc3RyKHN0ZHNjcixzLG4pCi0jZGVmaW5lIGluY2hzdHIocykJCXdpbmNoc3RyKHN0ZHNjcixzKQotI2RlZmluZSBpbm5zdHIocyxuKQkJd2lubnN0cihzdGRzY3IscyxuKQotI2RlZmluZSBpbnNjaChjKQkJd2luc2NoKHN0ZHNjcixjKQotI2RlZmluZSBpbnNkZWxsbihuKQkJd2luc2RlbGxuKHN0ZHNjcixuKQotI2RlZmluZSBpbnNlcnRsbigpCQl3aW5zZGVsbG4oc3Rkc2NyLDEpCi0jZGVmaW5lIGluc25zdHIocyxuKQkJd2luc25zdHIoc3Rkc2NyLHMsbikKLSNkZWZpbmUgaW5zc3RyKHMpCQl3aW5zc3RyKHN0ZHNjcixzKQotI2RlZmluZSBpbnN0cihzKQkJd2luc3RyKHN0ZHNjcixzKQotI2RlZmluZSBtb3ZlKHkseCkJCXdtb3ZlKHN0ZHNjcix5LHgpCi0jZGVmaW5lIHJlZnJlc2goKQkJd3JlZnJlc2goc3Rkc2NyKQotI2RlZmluZSBzY3JsKG4pCQkJd3Njcmwoc3Rkc2NyLG4pCi0jZGVmaW5lIHNldHNjcnJlZyh0LGIpCQl3c2V0c2NycmVnKHN0ZHNjcix0LGIpCi0jZGVmaW5lIHN0YW5kZW5kKCkJCXdzdGFuZGVuZChzdGRzY3IpCi0jZGVmaW5lIHN0YW5kb3V0KCkJCXdzdGFuZG91dChzdGRzY3IpCi0jZGVmaW5lIHRpbWVvdXQoZGVsYXkpCQl3dGltZW91dChzdGRzY3IsZGVsYXkpCi0jZGVmaW5lIHdkZWxldGVsbih3aW4pCQl3aW5zZGVsbG4od2luLC0xKQotI2RlZmluZSB3aW5zZXJ0bG4od2luKQkJd2luc2RlbGxuKHdpbiwxKQotCi0vKgotICogbXYgZnVuY3Rpb25zCi0gKi8KLQotI2RlZmluZSBtdndhZGRjaCh3aW4seSx4LGNoKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaCh3aW4sY2gpKQotI2RlZmluZSBtdndhZGRjaG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaG5zdHIod2luLHN0cixuKSkKLSNkZWZpbmUgbXZ3YWRkY2hzdHIod2luLHkseCxzdHIpCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkY2huc3RyKHdpbixzdHIsLTEpKQotI2RlZmluZSBtdndhZGRuc3RyKHdpbix5LHgsc3RyLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkbnN0cih3aW4sc3RyLG4pKQotI2RlZmluZSBtdndhZGRzdHIod2luLHkseCxzdHIpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZG5zdHIod2luLHN0ciwtMSkpCi0jZGVmaW5lIG12d2RlbGNoKHdpbix5LHgpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2RlbGNoKHdpbikpCi0jZGVmaW5lIG12d2NoZ2F0KHdpbix5LHgsbixhLGMsbykJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdjaGdhdCh3aW4sbixhLGMsbykpCi0jZGVmaW5lIG12d2dldGNoKHdpbix5LHgpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2dldGNoKHdpbikpCi0jZGVmaW5lIG12d2dldG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRuc3RyKHdpbixzdHIsbikpCi0jZGVmaW5lIG12d2dldHN0cih3aW4seSx4LHN0cikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3Z2V0c3RyKHdpbixzdHIpKQotI2RlZmluZSBtdndobGluZSh3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aGxpbmUod2luLGMsbikpCi0jZGVmaW5lIG12d2luY2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBOQ1VSU0VTX0NBU1QoY2h0eXBlLCBFUlIpIDogd2luY2god2luKSkKLSNkZWZpbmUgbXZ3aW5jaG5zdHIod2luLHkseCxzLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5jaG5zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luY2hzdHIod2luLHkseCxzKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbmNoc3RyKHdpbixzKSkKLSNkZWZpbmUgbXZ3aW5uc3RyKHdpbix5LHgscyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbm5zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luc2NoKHdpbix5LHgsYykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5zY2god2luLGMpKQotI2RlZmluZSBtdndpbnNuc3RyKHdpbix5LHgscyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNuc3RyKHdpbixzLG4pKQotI2RlZmluZSBtdndpbnNzdHIod2luLHkseCxzKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNzdHIod2luLHMpKQotI2RlZmluZSBtdndpbnN0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc3RyKHdpbixzKSkKLSNkZWZpbmUgbXZ3dmxpbmUod2luLHkseCxjLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd3ZsaW5lKHdpbixjLG4pKQotCi0jZGVmaW5lIG12YWRkY2goeSx4LGNoKQkJCW12d2FkZGNoKHN0ZHNjcix5LHgsY2gpCi0jZGVmaW5lIG12YWRkY2huc3RyKHkseCxzdHIsbikJCW12d2FkZGNobnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmFkZGNoc3RyKHkseCxzdHIpCQltdndhZGRjaHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZhZGRuc3RyKHkseCxzdHIsbikJCW12d2FkZG5zdHIoc3Rkc2NyLHkseCxzdHIsbikKLSNkZWZpbmUgbXZhZGRzdHIoeSx4LHN0cikJCW12d2FkZHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZjaGdhdCh5LHgsbixhLGMsbykJCW12d2NoZ2F0KHN0ZHNjcix5LHgsbixhLGMsbykKLSNkZWZpbmUgbXZkZWxjaCh5LHgpCQkJbXZ3ZGVsY2goc3Rkc2NyLHkseCkKLSNkZWZpbmUgbXZnZXRjaCh5LHgpCQkJbXZ3Z2V0Y2goc3Rkc2NyLHkseCkKLSNkZWZpbmUgbXZnZXRuc3RyKHkseCxzdHIsbikJCW12d2dldG5zdHIoc3Rkc2NyLHkseCxzdHIsbikKLSNkZWZpbmUgbXZnZXRzdHIoeSx4LHN0cikJCW12d2dldHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZobGluZSh5LHgsYyxuKQkJbXZ3aGxpbmUoc3Rkc2NyLHkseCxjLG4pCi0jZGVmaW5lIG12aW5jaCh5LHgpCQkJbXZ3aW5jaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmluY2huc3RyKHkseCxzLG4pCQltdndpbmNobnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbmNoc3RyKHkseCxzKQkJbXZ3aW5jaHN0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12aW5uc3RyKHkseCxzLG4pCQltdndpbm5zdHIoc3Rkc2NyLHkseCxzLG4pCi0jZGVmaW5lIG12aW5zY2goeSx4LGMpCQkJbXZ3aW5zY2goc3Rkc2NyLHkseCxjKQotI2RlZmluZSBtdmluc25zdHIoeSx4LHMsbikJCW12d2luc25zdHIoc3Rkc2NyLHkseCxzLG4pCi0jZGVmaW5lIG12aW5zc3RyKHkseCxzKQkJCW12d2luc3N0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12aW5zdHIoeSx4LHMpCQkJbXZ3aW5zdHIoc3Rkc2NyLHkseCxzKQotI2RlZmluZSBtdnZsaW5lKHkseCxjLG4pCQltdnd2bGluZShzdGRzY3IseSx4LGMsbikKLQotLyoKLSAqIFNvbWUgd2lkZS1jaGFyYWN0ZXIgZnVuY3Rpb25zIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRob3V0IHRoZSBleHRlbnNpb25zLgotICovCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIGdldGJrZ2Qod2luKSAgICAgICAgICAgICAgICAgICAgKCh3aW4pLT5fYmtnZCkKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHNsa19hdHRyX29mZihhLHYpCQkoKHYpID8gRVJSIDogc2xrX2F0dHJvZmYoYSkpCi0jZGVmaW5lIHNsa19hdHRyX29uKGEsdikJCSgodikgPyBFUlIgOiBzbGtfYXR0cm9uKGEpKQotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFX0VYVEVOREVEKSAmJiAwCi0jZGVmaW5lIHdhdHRyX3NldCh3aW4sYSxwLG9wdHMpCQkoKHdpbiktPl9hdHRycyA9ICgoYSkgJiB+QV9DT0xPUiksIFwKLQkJCQkJICh3aW4pLT5fY29sb3IgPSAocCksIFwKLQkJCQkJIE9LKQotI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoYSkgIT0gKHZvaWQgKikwICYmICgqKGEpID0gKHdpbiktPl9hdHRycykpLCBcCi0JCQkJCSAodm9pZCkoKHApICE9ICh2b2lkICopMCAmJiAoKihwKSA9ICh3aW4pLT5fY29sb3IpKSwgXAotCQkJCQkgT0spCi0jZWxzZQotI2RlZmluZSB3YXR0cl9zZXQod2luLGEscCxvcHRzKQkJKCh3aW4pLT5fYXR0cnMgPSAoKChhKSAmIH5BX0NPTE9SKSB8IENPTE9SX1BBSVIocCkpLCBPSykKLSNkZWZpbmUgd2F0dHJfZ2V0KHdpbixhLHAsb3B0cykJCSgodm9pZCkoKGEpICE9ICh2b2lkICopMCAmJiAoKihhKSA9ICh3aW4pLT5fYXR0cnMpKSwgXAotCQkJCQkgKHZvaWQpKChwKSAhPSAodm9pZCAqKTAgJiYgKCoocCkgPSBQQUlSX05VTUJFUigod2luKS0+X2F0dHJzKSkpLCBcCi0JCQkJCSBPSykKLSNlbmRpZgotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLS8qCi0gKiBYL09wZW4gY3Vyc2VzIGRlcHJlY2F0ZXMgU1ZyNCB2d3ByaW50dy92d3NjYW53LCB3aGljaCBhcmUgc3VwcG9zZWQgdG8gdXNlCi0gKiB2YXJhcmdzLmguICBJdCBhZGRzIG5ldyBjYWxscyB2d19wcmludHcvdndfc2NhbncsIHdoaWNoIGFyZSBzdXBwb3NlZCB0bwotICogdXNlIFBPU0lYIHN0ZGFyZy5oLiAgVGhlIG5jdXJzZXMgdmVyc2lvbnMgb2YgdndwcmludHcvdndzY2FudyBhbHJlYWR5Ci0gKiB1c2Ugc3RkYXJnLmgsIHNvLi4uCi0gKi8KLSNkZWZpbmUgdndfcHJpbnR3CQl2d3ByaW50dwotI2RlZmluZSB2d19zY2FudwkJdndzY2FudwotCi0vKgotICogRXhwb3J0IGZhbGxiYWNrIGZ1bmN0aW9uIGZvciB1c2UgaW4gQysrIGJpbmRpbmcuCi0gKi8KLSNpZiAhMQotI2RlZmluZSB2c3NjYW5mKGEsYixjKSBfbmNfdnNzY2FuZihhLGIsYykKLU5DVVJTRVNfRVhQT1JUKGludCkgdnNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0jZW5kaWYKLQotLyoKLSAqIFRoZXNlIG1hY3JvcyBhcmUgZXh0ZW5zaW9ucyAtIG5vdCBpbiBYL09wZW4gQ3Vyc2VzLgotICovCi0jaWYgMQotI2lmICFOQ1VSU0VTX09QQVFVRQotI2RlZmluZSBpc19jbGVhcmVkKHdpbikJCSgod2luKS0+X2NsZWFyKQotI2RlZmluZSBpc19pZGNvayh3aW4pCQkoKHdpbiktPl9pZGNvaykKLSNkZWZpbmUgaXNfaWRsb2sod2luKQkJKCh3aW4pLT5faWRsb2spCi0jZGVmaW5lIGlzX2ltbWVkb2sod2luKQkJKCh3aW4pLT5faW1tZWQpCi0jZGVmaW5lIGlzX2tleXBhZCh3aW4pCQkoKHdpbiktPl91c2Vfa2V5cGFkKQotI2RlZmluZSBpc19sZWF2ZW9rKHdpbikJCSgod2luKS0+X2xlYXZlb2spCi0jZGVmaW5lIGlzX25vZGVsYXkod2luKQkJKCh3aW4pLT5fZGVsYXkgPT0gMCkKLSNkZWZpbmUgaXNfbm90aW1lb3V0KHdpbikJKCh3aW4pLT5fbm90aW1lb3V0KQotI2RlZmluZSBpc19zY3JvbGxvayh3aW4pCSgod2luKS0+X3Njcm9sbCkKLSNkZWZpbmUgaXNfc3luY29rKHdpbikJCSgod2luKS0+X3N5bmMpCi0jZGVmaW5lIHdnZXRwYXJlbnQod2luKQkJKCh3aW4pID8gKHdpbiktPl9wYXJlbnQgOiAwKQotI2RlZmluZSB3Z2V0c2NycmVnKHdpbix0LGIpCSgod2luKSA/ICgqKHQpID0gKHdpbiktPl9yZWd0b3AsICooYikgPSAod2luKS0+X3JlZ2JvdHRvbSwgT0spIDogRVJSKQotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotLyoKLSAqIFB1YmxpYyB2YXJpYWJsZXMuCi0gKgotICogTm90ZXM6Ci0gKglhLiBFU0NERUxBWSB3YXMgYW4gdW5kb2N1bWVudGVkIGZlYXR1cmUgdW5kZXIgQUlYIGN1cnNlcy4KLSAqCSAgIEl0IGdpdmVzIHRoZSBFU0MgZXhwaXJlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLgotICoJYi4gdHR5dHlwZSBpcyBuZWVkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAqLwotI2lmIDAKLQotTkNVUlNFU19XUkFQUEVEX1ZBUihXSU5ET1cgKiwgY3Vyc2NyKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoV0lORE9XICosIG5ld3Njcik7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKFdJTkRPVyAqLCBzdGRzY3IpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihjaGFyICosIHR0eXR5cGUpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIENPTE9SUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgQ09MT1JfUEFJUlMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIENPTFMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIEVTQ0RFTEFZKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoaW50LCBMSU5FUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgVEFCU0laRSk7Ci0KLSNkZWZpbmUgY3Vyc2NyICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKGN1cnNjcigpKQotI2RlZmluZSBuZXdzY3IgICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIobmV3c2NyKCkpCi0jZGVmaW5lIHN0ZHNjciAgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihzdGRzY3IoKSkKLSNkZWZpbmUgdHR5dHlwZSAgICAgTkNVUlNFU19QVUJMSUNfVkFSKHR0eXR5cGUoKSkKLSNkZWZpbmUgQ09MT1JTICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKENPTE9SUygpKQotI2RlZmluZSBDT0xPUl9QQUlSUyBOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MT1JfUEFJUlMoKSkKLSNkZWZpbmUgQ09MUyAgICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKENPTFMoKSkKLSNkZWZpbmUgRVNDREVMQVkgICAgTkNVUlNFU19QVUJMSUNfVkFSKEVTQ0RFTEFZKCkpCi0jZGVmaW5lIExJTkVTICAgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihMSU5FUygpKQotI2RlZmluZSBUQUJTSVpFICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoVEFCU0laRSgpKQotCi0jZWxzZQotCi1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBjdXJzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBuZXdzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBzdGRzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIpIHR0eXR5cGVbXTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBDT0xPUlM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGludCkgQ09MT1JfUEFJUlM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGludCkgQ09MUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBFU0NERUxBWTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBMSU5FUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBUQUJTSVpFOwotCi0jZW5kaWYKLQotLyoKLSAqIFBzZXVkby1jaGFyYWN0ZXIgdG9rZW5zIG91dHNpZGUgQVNDSUkgcmFuZ2UuICBUaGUgY3Vyc2VzIHdnZXRjaCgpIGZ1bmN0aW9uCi0gKiB3aWxsIHJldHVybiBhbnkgZ2l2ZW4gb25lIG9mIHRoZXNlIG9ubHkgaWYgdGhlIGNvcnJlc3BvbmRpbmcgay0gY2FwYWJpbGl0eQotICogaXMgZGVmaW5lZCBpbiB5b3VyIHRlcm1pbmFsJ3MgdGVybWluZm8gZW50cnkuCi0gKgotICogU29tZSBrZXlzIChLRVlfQTEsIGV0YykgYXJlIGFycmFuZ2VkIGxpa2UgdGhpczoKLSAqCWExICAgICB1cCAgICBhMwotICoJbGVmdCAgIGIyICAgIHJpZ2h0Ci0gKgljMSAgICAgZG93biAgYzMKLSAqCi0gKiBBIGZldyBrZXkgY29kZXMgZG8gbm90IGRlcGVuZCB1cG9uIHRoZSB0ZXJtaW5mbyBlbnRyeS4KLSAqLwotI2RlZmluZSBLRVlfQ09ERV9ZRVMJMDQwMAkJLyogQSB3Y2hhcl90IGNvbnRhaW5zIGEga2V5IGNvZGUgKi8KLSNkZWZpbmUgS0VZX01JTgkJMDQwMQkJLyogTWluaW11bSBjdXJzZXMga2V5ICovCi0jZGVmaW5lIEtFWV9CUkVBSwkwNDAxCQkvKiBCcmVhayBrZXkgKHVucmVsaWFibGUpICovCi0jZGVmaW5lIEtFWV9TUkVTRVQJMDUzMAkJLyogU29mdCAocGFydGlhbCkgcmVzZXQgKHVucmVsaWFibGUpICovCi0jZGVmaW5lIEtFWV9SRVNFVAkwNTMxCQkvKiBSZXNldCBvciBoYXJkIHJlc2V0ICh1bnJlbGlhYmxlKSAqLwotLyoKLSAqIFRoZXNlIGRlZmluaXRpb25zIHdlcmUgZ2VuZXJhdGVkIGJ5IC4vTUtrZXlfZGVmcy5zaCAuL0NhcHMKLSAqLwotI2RlZmluZSBLRVlfRE9XTgkwNDAyCQkvKiBkb3duLWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfVVAJCTA0MDMJCS8qIHVwLWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfTEVGVAkwNDA0CQkvKiBsZWZ0LWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfUklHSFQJMDQwNQkJLyogcmlnaHQtYXJyb3cga2V5ICovCi0jZGVmaW5lIEtFWV9IT01FCTA0MDYJCS8qIGhvbWUga2V5ICovCi0jZGVmaW5lIEtFWV9CQUNLU1BBQ0UJMDQwNwkJLyogYmFja3NwYWNlIGtleSAqLwotI2RlZmluZSBLRVlfRjAJCTA0MTAJCS8qIEZ1bmN0aW9uIGtleXMuICBTcGFjZSBmb3IgNjQgKi8KLSNkZWZpbmUgS0VZX0YobikJKEtFWV9GMCsobikpCS8qIFZhbHVlIG9mIGZ1bmN0aW9uIGtleSBuICovCi0jZGVmaW5lIEtFWV9ETAkJMDUxMAkJLyogZGVsZXRlLWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9JTAkJMDUxMQkJLyogaW5zZXJ0LWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9EQwkJMDUxMgkJLyogZGVsZXRlLWNoYXJhY3RlciBrZXkgKi8KLSNkZWZpbmUgS0VZX0lDCQkwNTEzCQkvKiBpbnNlcnQtY2hhcmFjdGVyIGtleSAqLwotI2RlZmluZSBLRVlfRUlDCQkwNTE0CQkvKiBzZW50IGJ5IHJtaXIgb3Igc21pciBpbiBpbnNlcnQgbW9kZSAqLwotI2RlZmluZSBLRVlfQ0xFQVIJMDUxNQkJLyogY2xlYXItc2NyZWVuIG9yIGVyYXNlIGtleSAqLwotI2RlZmluZSBLRVlfRU9TCQkwNTE2CQkvKiBjbGVhci10by1lbmQtb2Ytc2NyZWVuIGtleSAqLwotI2RlZmluZSBLRVlfRU9MCQkwNTE3CQkvKiBjbGVhci10by1lbmQtb2YtbGluZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NGCQkwNTIwCQkvKiBzY3JvbGwtZm9yd2FyZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NSCQkwNTIxCQkvKiBzY3JvbGwtYmFja3dhcmQga2V5ICovCi0jZGVmaW5lIEtFWV9OUEFHRQkwNTIyCQkvKiBuZXh0LXBhZ2Uga2V5ICovCi0jZGVmaW5lIEtFWV9QUEFHRQkwNTIzCQkvKiBwcmV2aW91cy1wYWdlIGtleSAqLwotI2RlZmluZSBLRVlfU1RBQgkwNTI0CQkvKiBzZXQtdGFiIGtleSAqLwotI2RlZmluZSBLRVlfQ1RBQgkwNTI1CQkvKiBjbGVhci10YWIga2V5ICovCi0jZGVmaW5lIEtFWV9DQVRBQgkwNTI2CQkvKiBjbGVhci1hbGwtdGFicyBrZXkgKi8KLSNkZWZpbmUgS0VZX0VOVEVSCTA1MjcJCS8qIGVudGVyL3NlbmQga2V5ICovCi0jZGVmaW5lIEtFWV9QUklOVAkwNTMyCQkvKiBwcmludCBrZXkgKi8KLSNkZWZpbmUgS0VZX0xMCQkwNTMzCQkvKiBsb3dlci1sZWZ0IGtleSAoaG9tZSBkb3duKSAqLwotI2RlZmluZSBLRVlfQTEJCTA1MzQJCS8qIHVwcGVyIGxlZnQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9BMwkJMDUzNQkJLyogdXBwZXIgcmlnaHQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9CMgkJMDUzNgkJLyogY2VudGVyIG9mIGtleXBhZCAqLwotI2RlZmluZSBLRVlfQzEJCTA1MzcJCS8qIGxvd2VyIGxlZnQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9DMwkJMDU0MAkJLyogbG93ZXIgcmlnaHQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9CVEFCCTA1NDEJCS8qIGJhY2stdGFiIGtleSAqLwotI2RlZmluZSBLRVlfQkVHCQkwNTQyCQkvKiBiZWdpbiBrZXkgKi8KLSNkZWZpbmUgS0VZX0NBTkNFTAkwNTQzCQkvKiBjYW5jZWwga2V5ICovCi0jZGVmaW5lIEtFWV9DTE9TRQkwNTQ0CQkvKiBjbG9zZSBrZXkgKi8KLSNkZWZpbmUgS0VZX0NPTU1BTkQJMDU0NQkJLyogY29tbWFuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0NPUFkJMDU0NgkJLyogY29weSBrZXkgKi8KLSNkZWZpbmUgS0VZX0NSRUFURQkwNTQ3CQkvKiBjcmVhdGUga2V5ICovCi0jZGVmaW5lIEtFWV9FTkQJCTA1NTAJCS8qIGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0VYSVQJMDU1MQkJLyogZXhpdCBrZXkgKi8KLSNkZWZpbmUgS0VZX0ZJTkQJMDU1MgkJLyogZmluZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0hFTFAJMDU1MwkJLyogaGVscCBrZXkgKi8KLSNkZWZpbmUgS0VZX01BUksJMDU1NAkJLyogbWFyayBrZXkgKi8KLSNkZWZpbmUgS0VZX01FU1NBR0UJMDU1NQkJLyogbWVzc2FnZSBrZXkgKi8KLSNkZWZpbmUgS0VZX01PVkUJMDU1NgkJLyogbW92ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX05FWFQJMDU1NwkJLyogbmV4dCBrZXkgKi8KLSNkZWZpbmUgS0VZX09QRU4JMDU2MAkJLyogb3BlbiBrZXkgKi8KLSNkZWZpbmUgS0VZX09QVElPTlMJMDU2MQkJLyogb3B0aW9ucyBrZXkgKi8KLSNkZWZpbmUgS0VZX1BSRVZJT1VTCTA1NjIJCS8qIHByZXZpb3VzIGtleSAqLwotI2RlZmluZSBLRVlfUkVETwkwNTYzCQkvKiByZWRvIGtleSAqLwotI2RlZmluZSBLRVlfUkVGRVJFTkNFCTA1NjQJCS8qIHJlZmVyZW5jZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFRlJFU0gJMDU2NQkJLyogcmVmcmVzaCBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFUExBQ0UJMDU2NgkJLyogcmVwbGFjZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFU1RBUlQJMDU2NwkJLyogcmVzdGFydCBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFU1VNRQkwNTcwCQkvKiByZXN1bWUga2V5ICovCi0jZGVmaW5lIEtFWV9TQVZFCTA1NzEJCS8qIHNhdmUga2V5ICovCi0jZGVmaW5lIEtFWV9TQkVHCTA1NzIJCS8qIHNoaWZ0ZWQgYmVnaW4ga2V5ICovCi0jZGVmaW5lIEtFWV9TQ0FOQ0VMCTA1NzMJCS8qIHNoaWZ0ZWQgY2FuY2VsIGtleSAqLwotI2RlZmluZSBLRVlfU0NPTU1BTkQJMDU3NAkJLyogc2hpZnRlZCBjb21tYW5kIGtleSAqLwotI2RlZmluZSBLRVlfU0NPUFkJMDU3NQkJLyogc2hpZnRlZCBjb3B5IGtleSAqLwotI2RlZmluZSBLRVlfU0NSRUFURQkwNTc2CQkvKiBzaGlmdGVkIGNyZWF0ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NEQwkJMDU3NwkJLyogc2hpZnRlZCBkZWxldGUtY2hhcmFjdGVyIGtleSAqLwotI2RlZmluZSBLRVlfU0RMCQkwNjAwCQkvKiBzaGlmdGVkIGRlbGV0ZS1saW5lIGtleSAqLwotI2RlZmluZSBLRVlfU0VMRUNUCTA2MDEJCS8qIHNlbGVjdCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NFTkQJMDYwMgkJLyogc2hpZnRlZCBlbmQga2V5ICovCi0jZGVmaW5lIEtFWV9TRU9MCTA2MDMJCS8qIHNoaWZ0ZWQgY2xlYXItdG8tZW5kLW9mLWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9TRVhJVAkwNjA0CQkvKiBzaGlmdGVkIGV4aXQga2V5ICovCi0jZGVmaW5lIEtFWV9TRklORAkwNjA1CQkvKiBzaGlmdGVkIGZpbmQga2V5ICovCi0jZGVmaW5lIEtFWV9TSEVMUAkwNjA2CQkvKiBzaGlmdGVkIGhlbHAga2V5ICovCi0jZGVmaW5lIEtFWV9TSE9NRQkwNjA3CQkvKiBzaGlmdGVkIGhvbWUga2V5ICovCi0jZGVmaW5lIEtFWV9TSUMJCTA2MTAJCS8qIHNoaWZ0ZWQgaW5zZXJ0LWNoYXJhY3RlciBrZXkgKi8KLSNkZWZpbmUgS0VZX1NMRUZUCTA2MTEJCS8qIHNoaWZ0ZWQgbGVmdC1hcnJvdyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NNRVNTQUdFCTA2MTIJCS8qIHNoaWZ0ZWQgbWVzc2FnZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NNT1ZFCTA2MTMJCS8qIHNoaWZ0ZWQgbW92ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NORVhUCTA2MTQJCS8qIHNoaWZ0ZWQgbmV4dCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NPUFRJT05TCTA2MTUJCS8qIHNoaWZ0ZWQgb3B0aW9ucyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NQUkVWSU9VUwkwNjE2CQkvKiBzaGlmdGVkIHByZXZpb3VzIGtleSAqLwotI2RlZmluZSBLRVlfU1BSSU5UCTA2MTcJCS8qIHNoaWZ0ZWQgcHJpbnQga2V5ICovCi0jZGVmaW5lIEtFWV9TUkVETwkwNjIwCQkvKiBzaGlmdGVkIHJlZG8ga2V5ICovCi0jZGVmaW5lIEtFWV9TUkVQTEFDRQkwNjIxCQkvKiBzaGlmdGVkIHJlcGxhY2Uga2V5ICovCi0jZGVmaW5lIEtFWV9TUklHSFQJMDYyMgkJLyogc2hpZnRlZCByaWdodC1hcnJvdyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NSU1VNRQkwNjIzCQkvKiBzaGlmdGVkIHJlc3VtZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NTQVZFCTA2MjQJCS8qIHNoaWZ0ZWQgc2F2ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NTVVNQRU5ECTA2MjUJCS8qIHNoaWZ0ZWQgc3VzcGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NVTkRPCTA2MjYJCS8qIHNoaWZ0ZWQgdW5kbyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NVU1BFTkQJMDYyNwkJLyogc3VzcGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1VORE8JMDYzMAkJLyogdW5kbyBrZXkgKi8KLSNkZWZpbmUgS0VZX01PVVNFCTA2MzEJCS8qIE1vdXNlIGV2ZW50IGhhcyBvY2N1cnJlZCAqLwotI2RlZmluZSBLRVlfUkVTSVpFCTA2MzIJCS8qIFRlcm1pbmFsIHJlc2l6ZSBldmVudCAqLwotI2RlZmluZSBLRVlfRVZFTlQJMDYzMwkJLyogV2Ugd2VyZSBpbnRlcnJ1cHRlZCBieSBhbiBldmVudCAqLwotCi0jZGVmaW5lIEtFWV9NQVgJCTA3NzcJCS8qIE1heGltdW0ga2V5IHZhbHVlIGlzIDA2MzMgKi8KLS8qICRJZDogY3Vyc2VzLnRhaWwsdiAxLjE2IDIwMDgvMDcvMDUgMjA6MjA6MzggdG9tIEV4cCAkICovCi0vKgotICogdmlsZTpjbW9kZToKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIG5jdXJzZXMsIGRlc2lnbmVkIHRvIGJlIGFwcGVuZGVkIGFmdGVyIGN1cnNlcy5oLmluCi0gKiAoc2VlIHRoYXQgZmlsZSBmb3IgdGhlIHJlbGV2YW50IGNvcHlyaWdodCkuCi0gKi8KLQotLyogbW91c2UgaW50ZXJmYWNlICovCi0KLSNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPiAxCi0jZGVmaW5lIE5DVVJTRVNfTU9VU0VfTUFTSyhiLG0pICgobSkgPDwgKCgoYikgLSAxKSAqIDUpKQotI2Vsc2UKLSNkZWZpbmUgTkNVUlNFU19NT1VTRV9NQVNLKGIsbSkgKChtKSA8PCAoKChiKSAtIDEpICogNikpCi0jZW5kaWYKLQotI2RlZmluZQlOQ1VSU0VTX0JVVFRPTl9SRUxFQVNFRAkwMDFMCi0jZGVmaW5lCU5DVVJTRVNfQlVUVE9OX1BSRVNTRUQJMDAyTAotI2RlZmluZQlOQ1VSU0VTX0JVVFRPTl9DTElDS0VECTAwNEwKLSNkZWZpbmUJTkNVUlNFU19ET1VCTEVfQ0xJQ0tFRAkwMTBMCi0jZGVmaW5lCU5DVVJTRVNfVFJJUExFX0NMSUNLRUQJMDIwTAotI2RlZmluZQlOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UCTA0MEwKLQotLyogZXZlbnQgbWFza3MgKi8KLSNkZWZpbmUJQlVUVE9OMV9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMSwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjFfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjFfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjFfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjFfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OMl9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMiwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjJfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjJfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjJfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjJfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OM19SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMywgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjNfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjNfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjNfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjNfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9ONF9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soNCwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjRfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjRfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjRfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjRfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLS8qCi0gKiBJbiAzMiBiaXRzIHRoZSB2ZXJzaW9uLTEgc2NoZW1lIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIHNwYWNlIGZvciBhIDV0aAotICogYnV0dG9uLCB1bmxlc3Mgd2UgY2hvb3NlIHRvIGNoYW5nZSB0aGUgQUJJIGJ5IG9taXR0aW5nIHRoZSByZXNlcnZlZC1ldmVudHMuCi0gKi8KLSNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPiAxCi0KLSNkZWZpbmUJQlVUVE9ONV9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soNSwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjVfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjVfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjVfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjVfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OX0NUUkwJCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDAxTCkKLSNkZWZpbmUJQlVUVE9OX1NISUZUCQlOQ1VSU0VTX01PVVNFX01BU0soNiwgMDAwMkwpCi0jZGVmaW5lCUJVVFRPTl9BTFQJCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDA0TCkKLSNkZWZpbmUJUkVQT1JUX01PVVNFX1BPU0lUSU9OCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDEwTCkKLQotI2Vsc2UKLQotI2RlZmluZQlCVVRUT04xX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygxLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT04yX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygyLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT04zX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygzLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT040X1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSyg0LCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotCi0jZGVmaW5lCUJVVFRPTl9DVFJMCQlOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAwMUwpCi0jZGVmaW5lCUJVVFRPTl9TSElGVAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIDAwMDJMKQotI2RlZmluZQlCVVRUT05fQUxUCQlOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAwNEwpCi0jZGVmaW5lCVJFUE9SVF9NT1VTRV9QT1NJVElPTglOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAxMEwpCi0KLSNlbmRpZgotCi0jZGVmaW5lCUFMTF9NT1VTRV9FVkVOVFMJKFJFUE9SVF9NT1VTRV9QT1NJVElPTiAtIDEpCi0KLS8qIG1hY3JvcyB0byBleHRyYWN0IHNpbmdsZSBldmVudC1iaXRzIGZyb20gbWFza3MgKi8KLSNkZWZpbmUJQlVUVE9OX1JFTEVBU0UoZSwgeCkJCSgoZSkgJiBOQ1VSU0VTX01PVVNFX01BU0soeCwgMDAxKSkKLSNkZWZpbmUJQlVUVE9OX1BSRVNTKGUsIHgpCQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAwMikpCi0jZGVmaW5lCUJVVFRPTl9DTElDSyhlLCB4KQkJKChlKSAmIE5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDQpKQotI2RlZmluZQlCVVRUT05fRE9VQkxFX0NMSUNLKGUsIHgpCSgoZSkgJiBOQ1VSU0VTX01PVVNFX01BU0soeCwgMDEwKSkKLSNkZWZpbmUJQlVUVE9OX1RSSVBMRV9DTElDSyhlLCB4KQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAyMCkpCi0jZGVmaW5lCUJVVFRPTl9SRVNFUlZFRF9FVkVOVChlLCB4KQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDA0MCkpCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgc2hvcnQgaWQ7CQkvKiBJRCB0byBkaXN0aW5ndWlzaCBtdWx0aXBsZSBkZXZpY2VzICovCi0gICAgaW50IHgsIHksIHo7CS8qIGV2ZW50IGNvb3JkaW5hdGVzIChjaGFyYWN0ZXItY2VsbCkgKi8KLSAgICBtbWFza190IGJzdGF0ZTsJLyogYnV0dG9uIHN0YXRlIGJpdHMgKi8KLX0KLU1FVkVOVDsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bW91c2UgKE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVuZ2V0bW91c2UgKE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChtbWFza190KSBtb3VzZW1hc2sgKG1tYXNrX3QsIG1tYXNrX3QgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgd2VuY2xvc2UgKGNvbnN0IFdJTkRPVyAqLCBpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtb3VzZWludGVydmFsIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIHdtb3VzZV90cmFmbyAoY29uc3QgV0lORE9XKiwgaW50KiwgaW50KiwgYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgbW91c2VfdHJhZm8gKGludCosIGludCosIGJvb2wpOyAgICAgICAgICAgICAgLyogZ2VuZXJhdGVkICovCi0KLSNkZWZpbmUgbW91c2VfdHJhZm8oeSx4LHRvX3NjcmVlbikgd21vdXNlX3RyYWZvKHN0ZHNjcix5LHgsdG9fc2NyZWVuKQotCi0vKiBvdGhlciBub24tWFNJIGZ1bmN0aW9ucyAqLwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtY3ByaW50IChjaGFyICosIGludCk7CS8qIGRpcmVjdCBkYXRhIHRvIHByaW50ZXIgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhhc19rZXkgKGludCk7CQkvKiBkbyB3ZSBoYXZlIGdpdmVuIGtleT8gKi8KLQotLyogRGVidWdnaW5nIDogdXNlIHdpdGggbGlibmN1cnNlc19nLmEgKi8KLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF90cmFjZWYgKGNvbnN0IGNoYXIgKiwgLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF90cmFjZWR1bXAgKGNvbnN0IGNoYXIgKiwgV0lORE9XICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlYXR0ciAoYXR0cl90KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWF0dHIyIChpbnQsIGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfdHJhY2ViaXRzICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWNoYXIgKGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjaHR5cGUgKGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjaHR5cGUyIChpbnQsIGNodHlwZSk7Ci0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotI2RlZmluZSBfdHJhY2VjaF90CQlfdHJhY2VjY2hhcl90Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjY2hhcl90IChjb25zdCBjY2hhcl90ICopOwotI2RlZmluZSBfdHJhY2VjaF90MgkJX3RyYWNlY2NoYXJfdDIKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWNjaGFyX3QyIChpbnQsIGNvbnN0IGNjaGFyX3QgKik7Ci0jZWxzZQotI2RlZmluZSBfdHJhY2VjaF90CQlfdHJhY2VjaHR5cGUKLSNkZWZpbmUgX3RyYWNlY2hfdDIJCV90cmFjZWNodHlwZTIKLSNlbmRpZgotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlbW91c2UgKGNvbnN0IE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB0cmFjZSAoY29uc3QgdW5zaWduZWQgaW50KTsKLQotLyogdHJhY2UgbWFza3MgKi8KLSNkZWZpbmUgVFJBQ0VfRElTQUJMRQkweDAwMDAJLyogdHVybiBvZmYgdHJhY2luZyAqLwotI2RlZmluZSBUUkFDRV9USU1FUwkweDAwMDEJLyogdHJhY2UgdXNlciBhbmQgc3lzdGVtIHRpbWVzIG9mIHVwZGF0ZXMgKi8KLSNkZWZpbmUgVFJBQ0VfVFBVVFMJMHgwMDAyCS8qIHRyYWNlIHRwdXRzIGNhbGxzICovCi0jZGVmaW5lIFRSQUNFX1VQREFURQkweDAwMDQJLyogdHJhY2UgdXBkYXRlIGFjdGlvbnMsIG9sZCAmIG5ldyBzY3JlZW5zICovCi0jZGVmaW5lIFRSQUNFX01PVkUJMHgwMDA4CS8qIHRyYWNlIGN1cnNvciBtb3ZlcyBhbmQgc2Nyb2xscyAqLwotI2RlZmluZSBUUkFDRV9DSEFSUFVUCTB4MDAxMAkvKiB0cmFjZSBhbGwgY2hhcmFjdGVyIG91dHB1dHMgKi8KLSNkZWZpbmUgVFJBQ0VfT1JESU5BUlkJMHgwMDFGCS8qIHRyYWNlIGFsbCB1cGRhdGUgYWN0aW9ucyAqLwotI2RlZmluZSBUUkFDRV9DQUxMUwkweDAwMjAJLyogdHJhY2UgYWxsIGN1cnNlcyBjYWxscyAqLwotI2RlZmluZSBUUkFDRV9WSVJUUFVUCTB4MDA0MAkvKiB0cmFjZSB2aXJ0dWFsIGNoYXJhY3RlciBwdXRzICovCi0jZGVmaW5lIFRSQUNFX0lFVkVOVAkweDAwODAJLyogdHJhY2UgbG93LWxldmVsIGlucHV0IHByb2Nlc3NpbmcgKi8KLSNkZWZpbmUgVFJBQ0VfQklUUwkweDAxMDAJLyogdHJhY2Ugc3RhdGUgb2YgVFRZIGNvbnRyb2wgYml0cyAqLwotI2RlZmluZSBUUkFDRV9JQ0FMTFMJMHgwMjAwCS8qIHRyYWNlIGludGVybmFsL25lc3RlZCBjYWxscyAqLwotI2RlZmluZSBUUkFDRV9DQ0FMTFMJMHgwNDAwCS8qIHRyYWNlIHBlci1jaGFyYWN0ZXIgY2FsbHMgKi8KLSNkZWZpbmUgVFJBQ0VfREFUQUJBU0UJMHgwODAwCS8qIHRyYWNlIHJlYWQvd3JpdGUgb2YgdGVybWluZm8vdGVybWNhcCBkYXRhICovCi0jZGVmaW5lIFRSQUNFX0FUVFJTCTB4MTAwMAkvKiB0cmFjZSBhdHRyaWJ1dGUgdXBkYXRlcyAqLwotCi0jZGVmaW5lIFRSQUNFX1NISUZUCTEzCS8qIG51bWJlciBvZiBiaXRzIGluIHRoZSB0cmFjZSBtYXNrcyAqLwotI2RlZmluZSBUUkFDRV9NQVhJTVVNCSgoMSA8PCBUUkFDRV9TSElGVCkgLSAxKSAvKiBtYXhpbXVtIHRyYWNlIGxldmVsICovCi0KLSNpZiBkZWZpbmVkKFRSQUNFKSB8fCBkZWZpbmVkKE5DVVJTRVNfVEVTVCkKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBfbmNfb3B0aW1pemVfZW5hYmxlOwkJLyogZW5hYmxlIG9wdGltaXphdGlvbnMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopIF9uY192aXNidWYgKGNvbnN0IGNoYXIgKik7Ci0jZGVmaW5lIE9QVElNSVpFX01WQ1VSCQkweDAxCS8qIGN1cnNvciBtb3ZlbWVudCBvcHRpbWl6YXRpb24gKi8KLSNkZWZpbmUgT1BUSU1JWkVfSEFTSE1BUAkweDAyCS8qIGRpZmYgaGFzaGluZyB0byBkZXRlY3Qgc2Nyb2xscyAqLwotI2RlZmluZSBPUFRJTUlaRV9TQ1JPTEwJCTB4MDQJLyogc2Nyb2xsIG9wdGltaXphdGlvbiAqLwotI2RlZmluZSBPUFRJTUlaRV9BTEwJCTB4ZmYJLyogZW5hYmxlIGFsbCBvcHRpbWl6YXRpb25zIChkZmx0KSAqLwotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaWZuZGVmIE5DVVJTRVNfTk9NQUNST1MKLQotLyogdGhlc2UgbmFtZXMgY29uZmxpY3Qgd2l0aCBTVEwgKi8KLSN1bmRlZiBib3gKLSN1bmRlZiBjbGVhcgotI3VuZGVmIGVyYXNlCi0jdW5kZWYgbW92ZQotI3VuZGVmIHJlZnJlc2gKLQotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBfX05DVVJTRVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJzZXMuaC5pbiBiL2luY2x1ZGUvY3Vyc2VzLmguaW4KaW5kZXggNTNkYTlhNS4uNjVlZWRhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJzZXMuaC5pbgorKysgYi9pbmNsdWRlL2N1cnNlcy5oLmluCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiAkSWQ6IGN1cnNlcy5oLmluLHYgMS4xODcgMjAwOC8wOC8zMCAyMDoxMToyOSB0b20gRXhwICQgKi8KKy8qICRJZDogY3Vyc2VzLmguaW4sdiAxLjI0MSAyMDE0LzA4LzA5IDIwOjM5OjQ0IHRvbSBFeHAgJCAqLwogCiAjaWZuZGVmIF9fTkNVUlNFU19ICiAjZGVmaW5lIF9fTkNVUlNFU19ICkBAIC00MCwxMiArNDAsNiBAQAogI2RlZmluZSBDVVJTRVMgMQogI2RlZmluZSBDVVJTRVNfSCAxCiAKLS8qIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIHRoZSBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5IHRvIGJlIHZpc2libGUuCi0gKiBIb3dldmVyLCBzb21lIG9mIHRoZSB3aWRlLWNoYXJhY3RlciAoZW5oYW5jZWQpIGZ1bmN0aW9uYWxpdHkgaXMgbWlzc2luZy4KLSAqIFNvIHdlIGRvIG5vdCBkZWZpbmUgaXQgKHlldCkuCi0jZGVmaW5lIF9YT1BFTl9DVVJTRVMgMQotICovCi0KIC8qIFRoZXNlIGFyZSBkZWZpbmVkIG9ubHkgaW4gY3Vyc2VzLmgsIGFuZCBhcmUgdXNlZCBmb3IgY29uZGl0aW9uYWwgY29tcGlsZXMgKi8KICNkZWZpbmUgTkNVUlNFU19WRVJTSU9OX01BSk9SIEBOQ1VSU0VTX01BSk9SQAogI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUlOT1IgQE5DVVJTRVNfTUlOT1JACkBAIC02NSw2ICs1OSwxMCBAQAogICovCiAjaW5jbHVkZSA8bmN1cnNlc19kbGwuaD4KIAorI2lmIEBIQVZFX1NURElOVF9IQAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisKIC8qCiAgKiBVc2VyLWRlZmluYWJsZSB0d2VhayB0byBkaXNhYmxlIHRoZSBpbmNsdWRlIG9mIDxzdGRib29sLmg+LgogICovCkBAIC03NiwxMiArNzQsNiBAQAogICogTkNVUlNFU19BVFRSX1QgaXMgdXNlZCB0byBxdWlldCBjb21waWxlciB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIG5jdXJzZXMKICAqIGNvbmZpZ3VyZWQgdXNpbmcgLS1kaXNhYmxlLW1hY3Jvcy4KICAqLwotI2lmZGVmIE5DVVJTRVNfTk9NQUNST1MKLSNpZm5kZWYgTkNVUlNFU19BVFRSX1QKLSNkZWZpbmUgTkNVUlNFU19BVFRSX1QgYXR0cl90Ci0jZW5kaWYKLSNlbmRpZiAvKiBOQ1VSU0VTX05PTUFDUk9TICovCi0KICNpZm5kZWYgTkNVUlNFU19BVFRSX1QKICNkZWZpbmUgTkNVUlNFU19BVFRSX1QgaW50CiAjZW5kaWYKQEAgLTk3LDExICs4OSwyMCBAQAogI2RlZmluZSBOQ1VSU0VTX0lOTElORSBATkNVUlNFU19JTkxJTkVACiAKIC8qCi0gKiBUaGUgaW50ZXJuYWwgdHlwZSB1c2VkIGZvciBjb2xvciB2YWx1ZXMKKyAqIFRoZSBpbnRlcm5hbCB0eXBlIHVzZWQgZm9yIGNvbG9yIHZhbHVlcywgYW5kIGZvciBjb2xvci1wYWlycy4gIFRoZSBsYXR0ZXIKKyAqIGFsbG93cyB0aGUgY3Vyc2VzIGxpYnJhcnkgdG8gZW51bWVyYXRlIHRoZSBjb21iaW5hdGlvbnMgb2YgZm9yZWdyb3VuZCBhbmQKKyAqIGJhY2tncm91bmQgY29sb3JzIHVzZWQgYnkgYW4gYXBwbGljYXRpb24sIGFuZCBpcyBub3JtYWxseSB0aGUgcHJvZHVjdCBvZiB0aGUKKyAqIHRvdGFsIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLgorICoKKyAqIFgvT3BlbiB1c2VzICJzaG9ydCIgZm9yIGJvdGggb2YgdGhlc2UgdHlwZXMsIHVsdGltYXRlbHkgYmVjYXVzZSB0aGV5IGFyZQorICogbnVtYmVycyBmcm9tIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZSwgd2hpY2ggdXNlcyAxNi1iaXQgc2lnbmVkIHZhbHVlcy4KICAqLwogI3VuZGVmCU5DVVJTRVNfQ09MT1JfVAogI2RlZmluZQlOQ1VSU0VTX0NPTE9SX1Qgc2hvcnQKIAorI3VuZGVmCU5DVVJTRVNfUEFJUlNfVAorI2RlZmluZQlOQ1VSU0VTX1BBSVJTX1Qgc2hvcnQKKwogLyoKICAqIERlZmluaXRpb24gdXNlZCB0byBtYWtlIFdJTkRPVyBhbmQgc2ltaWxhciBzdHJ1Y3RzIG9wYXF1ZS4KICAqLwpAQCAtMTEwLDYgKzExMSwxOSBAQAogI2VuZGlmCiAKIC8qCisgKiBUaGUgcmVlbnRyYW50IGNvZGUgcmVsaWVzIG9uIHRoZSBvcGFxdWUgc2V0dGluZywgYnV0IGFkZHMgZmVhdHVyZXMuCisgKi8KKyNpZm5kZWYgTkNVUlNFU19SRUVOVFJBTlQKKyNkZWZpbmUgTkNVUlNFU19SRUVOVFJBTlQgQGNmX2N2X2VuYWJsZV9yZWVudHJhbnRACisjZW5kaWYKKworLyoKKyAqIENvbnRyb2wgd2hldGhlciBiaW5kaW5ncyBmb3IgaW50ZXJvcCBzdXBwb3J0IGFyZSBhZGRlZC4KKyAqLworI3VuZGVmCU5DVVJTRVNfSU5URVJPUF9GVU5DUworI2RlZmluZQlOQ1VSU0VTX0lOVEVST1BfRlVOQ1MgQE5DVVJTRVNfSU5URVJPUF9GVU5DU0AKKworLyoKICAqIFRoZSBpbnRlcm5hbCB0eXBlIHVzZWQgZm9yIHdpbmRvdyBkaW1lbnNpb25zLgogICovCiAjdW5kZWYJTkNVUlNFU19TSVpFX1QKQEAgLTEyMiw2ICsxMzYsMTMgQEAKICNkZWZpbmUgTkNVUlNFU19UUEFSTV9WQVJBUkdTIEBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1NACiAKIC8qCisgKiBDb250cm9sIHR5cGUgdXNlZCBmb3IgdHBhcm0ncyBhcmd1bWVudHMuICBXaGlsZSBYL09wZW4gZXF1YXRlcyBsb25nIGFuZAorICogY2hhciogdmFsdWVzLCB0aGlzIGlzIG5vdCBhbHdheXMgd29ya2FibGUgZm9yIDY0LWJpdCBwbGF0Zm9ybXMuCisgKi8KKyN1bmRlZiBOQ1VSU0VTX1RQQVJNX0FSRworI2RlZmluZSBOQ1VSU0VTX1RQQVJNX0FSRyBATkNVUlNFU19UUEFSTV9BUkdACisKKy8qCiAgKiBOQ1VSU0VTX0NIX1QgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgbGlicmFyeSwgYnV0IG5vdCB1c2VkIG90aGVyd2lzZSBpbgogICogdGhpcyBoZWFkZXIgZmlsZSwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIHRoZSBub3JtYWwvd2lkZS1jaGFyYWN0ZXIgdmVyc2lvbnMKICAqIG9mIHRoZSBoZWFkZXIgaW5jb21wYXRpYmxlLgpAQCAtMTMzLDE2ICsxNTQsMzQgQEAKIHR5cGVkZWYgdW5zaWduZWQgY2h0eXBlOwogdHlwZWRlZiB1bnNpZ25lZCBtbWFza190OwogI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgQGNmX2N2X3R5cGVvZl9jaHR5cGVAIGNodHlwZTsKLXR5cGVkZWYgdW5zaWduZWQgQGNmX2N2X3R5cGVvZl9tbWFza190QCBtbWFza190OwordHlwZWRlZiBAY2ZfY3ZfdHlwZW9mX2NodHlwZUAgY2h0eXBlOwordHlwZWRlZiBAY2ZfY3ZfdHlwZW9mX21tYXNrX3RAIG1tYXNrX3Q7CiAjZW5kaWYKIAorLyoKKyAqIFdlIG5lZWQgRklMRSwgZXRjLiAgSW5jbHVkZSB0aGlzIGJlZm9yZSBjaGVja2luZyBhbnkgZmVhdHVyZSBzeW1ib2xzLgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmN0cmwuaD4KKworLyoKKyAqIFdpdGggWFBHNCwgeW91IG11c3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQsIGl0IGlzIHJlZHVuZGFudCAob3IKKyAqIGNvbmZsaWN0aW5nKSB3aGVuIF9YT1BFTl9TT1VSQ0UgaXMgNTAwIG9yIGdyZWF0ZXIuICBJZiBOQ1VSU0VTX1dJREVDSEFSIGlzCisgKiBub3QgYWxyZWFkeSBkZWZpbmVkLCBlLmcuLCBpZiB0aGUgcGxhdGZvcm0gcmVsaWVzIHVwb24gbm9uc3RhbmRhcmQgZmVhdHVyZQorICogdGVzdCBtYWNyb3MsIGRlZmluZSBpdCBhdCB0aGlzIHBvaW50IGlmIHRoZSBzdGFuZGFyZCBmZWF0dXJlIHRlc3QgbWFjcm9zCisgKiBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZCBiZSBkZWZpbmVkLgorICovCisjaWZuZGVmIE5DVVJTRVNfV0lERUNIQVIKKyNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQpIHx8IChkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFIC0gMCA+PSA1MDApKQorI2RlZmluZSBOQ1VSU0VTX1dJREVDSEFSIDEKKyNlbHNlCisjZGVmaW5lIE5DVVJTRVNfV0lERUNIQVIgMAorI2VuZGlmCisjZW5kaWYgLyogTkNVUlNFU19XSURFQ0hBUiAqLworCiAjaW5jbHVkZSA8c3RkYXJnLmg+CS8qIHdlIG5lZWQgdmFfbGlzdCAqLwotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCiAjaW5jbHVkZSA8c3RkZGVmLmg+CS8qIHdlIHdhbnQgd2NoYXJfdCAqLwotI2VuZGlmIC8qIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgKi8KKyNlbmRpZgogCiAvKiBYL09wZW4gYW5kIFNWcjQgc3BlY2lmeSB0aGF0IGN1cnNlcyBpbXBsZW1lbnRzICdib29sJy4gIEhvd2V2ZXIsIEMrKyBtYXkgYWxzbwogICogaW1wbGVtZW50IGl0LiAgSWYgc28sIHdlIG11c3QgdXNlIHRoZSBDKysgY29tcGlsZXIncyB0eXBlIHRvIGF2b2lkIGNvbmZsaWN0CkBAIC0yMTIsNiArMjUxLDEwIEBACiAjZGVmaW5lIFdBX1RPUAkJQV9UT1AKICNkZWZpbmUgV0FfVkVSVElDQUwJQV9WRVJUSUNBTAogCisjaWYgQE5DVVJTRVNfRVhUX0ZVTkNTQAorI2RlZmluZSBXQV9JVEFMSUMJQV9JVEFMSUMJLyogbmN1cnNlcyBleHRlbnNpb24gKi8KKyNlbmRpZgorCiAvKiBjb2xvcnMgKi8KICNkZWZpbmUgQ09MT1JfQkxBQ0sJMAogI2RlZmluZSBDT0xPUl9SRUQJMQpAQCAtMjI0LDE0ICsyNjcsMTQgQEAKIAogLyogbGluZSBncmFwaGljcyAqLwogCi0jaWYgQEJST0tFTl9MSU5LRVJAIHx8IEBjZl9jdl9lbmFibGVfcmVlbnRyYW50QAorI2lmIEBCUk9LRU5fTElOS0VSQCB8fCBOQ1VSU0VTX1JFRU5UUkFOVAogTkNVUlNFU19XUkFQUEVEX1ZBUihjaHR5cGUqLCBhY3NfbWFwKTsKLSNkZWZpbmUgYWNzX21hcCAoX25jX2Fjc19tYXAoKSkKKyNkZWZpbmUgYWNzX21hcCBOQ1VSU0VTX1BVQkxJQ19WQVIoYWNzX21hcCgpKQogI2Vsc2UKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2h0eXBlKSBhY3NfbWFwW107CiAjZW5kaWYKIAotI2RlZmluZSBOQ1VSU0VTX0FDUyhjKQkoYWNzX21hcFtOQ1VSU0VTX0NBU1QodW5zaWduZWQgY2hhcixjKV0pCisjZGVmaW5lIE5DVVJTRVNfQUNTKGMpCShhY3NfbWFwW05DVVJTRVNfQ0FTVCh1bnNpZ25lZCBjaGFyLChjKSldKQogCiAvKiBWVDEwMCBzeW1ib2xzIGJlZ2luIGhlcmUgKi8KICNkZWZpbmUgQUNTX1VMQ09STkVSCU5DVVJTRVNfQUNTKCdsJykgLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KQEAgLTMyMyw3ICszNjYsNyBAQAogCiB0eXBlZGVmCWNodHlwZQlhdHRyX3Q7CQkvKiAuLi5tdXN0IGJlIGF0IGxlYXN0IGFzIHdpZGUgYXMgY2h0eXBlICovCiAKLSNpZmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjaWYgTkNVUlNFU19XSURFQ0hBUgogCiAjaWYgQE5DVVJTRVNfTElCVVRGOEAKICNpZmRlZiBtYmxlbgkJCS8qIGxpYnV0ZjguaCBkZWZpbmVzIGl0IHcvbyB1bmRlZmluaW5nIGZpcnN0ICovCkBAIC0zNDQsNyArMzg3LDEzIEBACiB0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3RATkNVUlNFU19PS19XQ0hBUl9UQDsKICNlbmRpZgogCi0jZGVmaW5lIENDSEFSV19NQVgJNQorLyoKKyAqIGNjaGFyX3Qgc3RvcmVzIGFuIGFycmF5IG9mIENDSEFSV19NQVggd2lkZSBjaGFyYWN0ZXJzLiAgVGhlIGZpcnN0IGlzCisgKiBub3JtYWxseSBhIHNwYWNpbmcgY2hhcmFjdGVyLiAgVGhlIG90aGVycyBhcmUgbm9uLXNwYWNpbmcuICBJZiB0aG9zZQorICogKHNwYWNpbmcgYW5kIG5vbnNwYWNpbmcpIGRvIG5vdCBmaWxsIHRoZSBhcnJheSwgYSBudWxsIEwnXDAnIGZvbGxvd3MuCisgKiBPdGhlcndpc2UsIGEgbnVsbCBpcyBhc3N1bWVkIHRvIGZvbGxvdyB3aGVuIGV4dHJhY3RpbmcgdmlhIGdldGNjaGFyKCkuCisgKi8KKyNkZWZpbmUgQ0NIQVJXX01BWAlATkNVUlNFU19DQ0hBUldfTUFYQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBhdHRyX3QJYXR0cjsKQEAgLTM1Nyw3ICs0MDYsNyBAQAogfQogY2NoYXJfdDsKIAotI2VuZGlmIC8qIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgKi8KKyNlbmRpZiAvKiBOQ1VSU0VTX1dJREVDSEFSICovCiAKICNpZiAhTkNVUlNFU19PUEFRVUUKIHN0cnVjdCBsZGF0OwpAQCAtNDA5LDcgKzQ1OCw3IEBACiAKIAlOQ1VSU0VTX1NJWkVfVCBfeW9mZnNldDsgLyogcmVhbCBiZWd5IGlzIF9iZWd5ICsgX3lvZmZzZXQgKi8KIAotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCiAJY2NoYXJfdCAgX2JrZ3JuZDsJLyogY3VycmVudCBiYWNrZ3JvdW5kIGNoYXIvYXR0cmlidXRlIHBhaXIgKi8KICNpZiBATkNVUlNFU19FWFRfQ09MT1JTQAogCWludAlfY29sb3I7CQkvKiBjdXJyZW50IGNvbG9yLXBhaXIgZm9yIG5vbi1zcGFjZSBjaGFyYWN0ZXIgKi8KQEAgLTQ2MSw4ICs1MTAsOCBAQAogICAgIF9uY19ldmVudCAqZXZlbnRzWzFdOwogfSBfbmNfZXZlbnRsaXN0OwogCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0Y2hfZXZlbnRzKFdJTkRPVyAqLCBfbmNfZXZlbnRsaXN0ICopOwkvKiBleHBlcmltZW50YWwgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRuc3RyX2V2ZW50cyhXSU5ET1cgKixjaGFyICosaW50LF9uY19ldmVudGxpc3QgKik7LyogZXhwZXJpbWVudGFsICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0Y2hfZXZlbnRzIChXSU5ET1cgKiwgX25jX2V2ZW50bGlzdCAqKTsJLyogZXhwZXJpbWVudGFsICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0bnN0cl9ldmVudHMgKFdJTkRPVyAqLGNoYXIgKixpbnQsX25jX2V2ZW50bGlzdCAqKTsvKiBleHBlcmltZW50YWwgKi8KIAogI2VuZGlmIC8qIE5DVVJTRVNfV0dFVENIX0VWRU5UUyAqLwogI2VuZGlmIC8qIE5DVVJTRVNfRVhUX0ZVTkNTICovCkBAIC01MTEsNiArNTYwLDEyIEBACiAjZW5kaWYKIAogLyoKKyAqIEN1cnNlcyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uLiAgRGVmaW5lIG91ciB0eXBlIGZvciB0aGlzIHRvIHNpbXBsaWZ5CisgKiBleHRlbmRpbmcgaXQgZm9yIHRoZSBzcC1mdW5jcyBmZWF0dXJlLgorICovCit0eXBlZGVmIGludCAoKk5DVVJTRVNfT1VUQykoaW50KTsKKworLyoKICAqIEZ1bmN0aW9uIHByb3RvdHlwZXMuICBUaGlzIGlzIHRoZSBjb21wbGV0ZSBYL09wZW4gQ3Vyc2VzIGxpc3Qgb2YgcmVxdWlyZWQKICAqIGZ1bmN0aW9ucy4gIFRob3NlIG1hcmtlZCBgZ2VuZXJhdGVkJyB3aWxsIGhhdmUgc291cmNlcyBnZW5lcmF0ZWQgZnJvbSB0aGUKICAqIG1hY3JvIGRlZmluaXRpb25zIGxhdGVyIGluIHRoaXMgZmlsZSwgaW4gb3JkZXIgdG8gc2F0aXNmeSBYUEc0LjIKQEAgLTUyNSwxMCArNTgwLDEwIEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb2ZmIChOQ1VSU0VTX0FUVFJfVCk7CQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb24gKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJzZXQgKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfZ2V0IChhdHRyX3QgKiwgc2hvcnQgKiwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX2dldCAoYXR0cl90ICosIE5DVVJTRVNfUEFJUlNfVCAqLCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfb2ZmIChhdHRyX3QsIHZvaWQgKik7CQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX29uIChhdHRyX3QsIHZvaWQgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX3NldCAoYXR0cl90LCBzaG9ydCwgdm9pZCAqKTsJCS8qIGdlbmVyYXRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9zZXQgKGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCB2b2lkICopOwkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBiYXVkcmF0ZSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBiZWVwICAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBia2dkIChjaHR5cGUpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KQEAgLTUzNywxMyArNTkyLDEzIEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBib3ggKFdJTkRPVyAqLCBjaHR5cGUsIGNodHlwZSk7CQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBjYW5fY2hhbmdlX2NvbG9yICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2JyZWFrICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNoZ2F0IChpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2hnYXQgKGludCwgYXR0cl90LCBOQ1VSU0VTX1BBSVJTX1QsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xlYXIgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNsZWFyb2sgKFdJTkRPVyAqLGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjbHJ0b2JvdCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xydG9lb2wgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX2NvbnRlbnQgKHNob3J0LHNob3J0KixzaG9ydCosc2hvcnQqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX3NldCAoc2hvcnQsdm9pZCopOwkJCS8qIGdlbmVyYXRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY29sb3JfY29udGVudCAoTkNVUlNFU19DT0xPUl9ULE5DVVJTRVNfQ09MT1JfVCosTkNVUlNFU19DT0xPUl9UKixOQ1VSU0VTX0NPTE9SX1QqKTsJLyogaW1wbGVtZW50ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX3NldCAoTkNVUlNFU19QQUlSU19ULHZvaWQqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIENPTE9SX1BBSVIgKGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY29weXdpbiAoY29uc3QgV0lORE9XKixXSU5ET1cqLGludCxpbnQsaW50LGludCxpbnQsaW50LGludCk7CS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjdXJzX3NldCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KQEAgLTU4Miw4ICs2MzcsOCBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5jaG5zdHIgKGNodHlwZSAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5jaHN0ciAoY2h0eXBlICopOwkJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgaW5pdHNjciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbml0X2NvbG9yIChzaG9ydCxzaG9ydCxzaG9ydCxzaG9ydCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbml0X3BhaXIgKHNob3J0LHNob3J0LHNob3J0KTsJCS8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbml0X2NvbG9yIChOQ1VSU0VTX0NPTE9SX1QsTkNVUlNFU19DT0xPUl9ULE5DVVJTRVNfQ09MT1JfVCxOQ1VSU0VTX0NPTE9SX1QpOwkvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5pdF9wYWlyIChOQ1VSU0VTX1BBSVJTX1QsTkNVUlNFU19DT0xPUl9ULE5DVVJTRVNfQ09MT1JfVCk7CQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5uc3RyIChjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbnNjaCAoY2h0eXBlKTsJCQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbnNkZWxsbiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCkBAIC02MDcsNyArNjYyLDcgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkY2hzdHIgKGludCwgaW50LCBjb25zdCBjaHR5cGUgKik7CS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRuc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZjaGdhdCAoaW50LCBpbnQsIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmNoZ2F0IChpbnQsIGludCwgaW50LCBhdHRyX3QsIE5DVVJTRVNfUEFJUlNfVCwgY29uc3Qgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmN1ciAoaW50LGludCxpbnQsaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZkZWxjaCAoaW50LCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12ZGVyd2luIChXSU5ET1cgKiwgaW50LCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KQEAgLTYzMyw3ICs2ODgsNyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3YWRkY2hzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2h0eXBlICopOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZG5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZHN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2NoZ2F0IChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsvKiBnZW5lcmF0ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2NoZ2F0IChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgYXR0cl90LCBOQ1VSU0VTX1BBSVJTX1QsIGNvbnN0IHZvaWQgKik7LyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndkZWxjaCAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0Y2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldG5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KQEAgLTY0Niw3ICs3MDEsNyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5uc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKiwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zY2ggKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zbnN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICosIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luc3N0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICopOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d3ByaW50dyAoV0lORE9XKixpbnQsaW50LCBjb25zdCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwogCQlHQ0NfUFJJTlRGTElLRSg0LDUpOwpAQCAtNjU0LDkgKzcwOSw5IEBACiAJCUdDQ19TQ0FORkxJS0UoNCw1KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d3ZsaW5lIChXSU5ET1cgKixpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5hcG1zIChpbnQpOwkJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgbmV3cGFkIChpbnQsaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgbmV3cGFkIChpbnQsaW50KTsJCSAgICAgICAJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikgbmV3dGVybSAoTkNVUlNFU19DT05TVCBjaGFyICosRklMRSAqLEZJTEUgKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIG5ld3dpbiAoaW50LGludCxpbnQsaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBuZXd3aW4gKGludCxpbnQsaW50LGludCk7CSAgICAgICAJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5sICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub2NicmVhayAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub2RlbGF5IChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwpAQCAtNjY3LDcgKzcyMiw3IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub3RpbWVvdXQgKFdJTkRPVyAqLGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBvdmVybGF5IChjb25zdCBXSU5ET1cqLFdJTkRPVyAqKTsJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBvdmVyd3JpdGUgKGNvbnN0IFdJTkRPVyosV0lORE9XICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHBhaXJfY29udGVudCAoc2hvcnQsc2hvcnQqLHNob3J0Kik7CQkvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcGFpcl9jb250ZW50IChOQ1VSU0VTX1BBSVJTX1QsTkNVUlNFU19DT0xPUl9UKixOQ1VSU0VTX0NPTE9SX1QqKTsJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBQQUlSX05VTUJFUiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwZWNob2NoYXIgKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwkJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHBub3V0cmVmcmVzaCAoV0lORE9XKixpbnQsaW50LGludCxpbnQsaW50LGludCk7LyogaW1wbGVtZW50ZWQgKi8KQEAgLTcwMSwxNiArNzU2LDE2IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9vbiAoYXR0cl90LHZvaWQqKTsJCQkvKiBnZW5lcmF0ZWQ6V0lERUMgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyc2V0IChjb25zdCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoYXR0cl90KSBzbGtfYXR0ciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9zZXQgKGNvbnN0IGF0dHJfdCxzaG9ydCx2b2lkKik7CS8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9zZXQgKGNvbnN0IGF0dHJfdCxOQ1VSU0VTX1BBSVJTX1Qsdm9pZCopOwkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2NsZWFyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19jb2xvciAoc2hvcnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2NvbG9yIChOQ1VSU0VTX1BBSVJTX1QpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2luaXQgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBzbGtfbGFiZWwgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfbm91dHJlZnJlc2ggKHZvaWQpOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfcmVmcmVzaCAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfcmVzdG9yZSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfc2V0IChpbnQsY29uc3QgY2hhciAqLGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX3RvdWNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa190b3VjaCAodm9pZCk7CSAgICAgIAkgICAgICAgCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc3RhbmRvdXQgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHN0YW5kZW5kICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzdGFydF9jb2xvciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCkBAIC03MjYsOCArNzgxLDkgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVuZ2V0Y2ggKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1bnRvdWNod2luIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgdXNlX2VudiAoYm9vbCk7CQkJCS8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgdXNlX3Rpb2N0bCAoYm9vbCk7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2aWRhdHRyIChjaHR5cGUpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdmlkcHV0cyAoY2h0eXBlLCBpbnQgKCopKGludCkpOwkJLyogaW1wbGVtZW50ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZpZHB1dHMgKGNodHlwZSwgTkNVUlNFU19PVVRDKTsJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2bGluZSAoY2h0eXBlLCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3cHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndfcHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBnZW5lcmF0ZWQgKi8KQEAgLTc0MSwxOCArNzk3LDE4IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cm9uIChXSU5ET1cgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyb2ZmIChXSU5ET1cgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyc2V0IChXSU5ET1cgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyX2dldCAoV0lORE9XICosIGF0dHJfdCAqLCBzaG9ydCAqLCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyX2dldCAoV0lORE9XICosIGF0dHJfdCAqLCBOQ1VSU0VTX1BBSVJTX1QgKiwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9vbiAoV0lORE9XICosIGF0dHJfdCwgdm9pZCAqKTsJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9vZmYgKFdJTkRPVyAqLCBhdHRyX3QsIHZvaWQgKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9zZXQgKFdJTkRPVyAqLCBhdHRyX3QsIHNob3J0LCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyX3NldCAoV0lORE9XICosIGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdia2dkIChXSU5ET1cgKiwgY2h0eXBlKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHdia2dkc2V0IChXSU5ET1cgKixjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Ym9yZGVyIChXSU5ET1cgKixjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjaGdhdCAoV0lORE9XICosIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NoZ2F0IChXSU5ET1cgKiwgaW50LCBhdHRyX3QsIE5DVVJTRVNfUEFJUlNfVCwgY29uc3Qgdm9pZCAqKTsvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NsZWFyIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y2xydG9ib3QgKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NscnRvZW9sIChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjb2xvcl9zZXQgKFdJTkRPVyosc2hvcnQsdm9pZCopOwkJLyogaW1wbGVtZW50ZWQgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjb2xvcl9zZXQgKFdJTkRPVyosTkNVUlNFU19QQUlSU19ULHZvaWQqKTsJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgd2N1cnN5bmN1cCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZGVsY2ggKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdkZWxldGVsbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwpAQCAtODAxLDEwICs4NTcsMTIgQEAKICNpZiBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgLi4uKTsJLyogc3BlY2lhbCAqLwogI2Vsc2UKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcpOwkvKiBzcGVjaWFsICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybSAoTkNVUlNFU19DT05TVCBjaGFyICosIE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHLE5DVVJTRVNfVFBBUk1fQVJHKTsJLyogc3BlY2lhbCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm1fdmFyYXJncyAoTkNVUlNFU19DT05TVCBjaGFyICosIC4uLik7CS8qIHNwZWNpYWwgKi8KICNlbmRpZgogCitleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0aXBhcm0gKGNvbnN0IGNoYXIgKiwgLi4uKTsJCS8qIHNwZWNpYWwgKi8KKwogLyoKICAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGluIFgvT3BlbiwgYnV0IHdlIHVzZSB0aGVtIGluIG1hY3JvIGRlZmluaXRpb25zOgogICovCkBAIC04MjEsNyArODc5LDcgQEAKIC8qCiAgKiB2aWRfYXR0cigpIHdhcyBpbXBsZW1lbnRlZCBvcmlnaW5hbGx5IGJhc2VkIG9uIGEgZHJhZnQgb2YgWC9PcGVuIGN1cnNlcy4KICAqLwotI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjaWYgIU5DVVJTRVNfV0lERUNIQVIKICNkZWZpbmUgdmlkX2F0dHIoYSxwYWlyLG9wdHMpIHZpZGF0dHIoYSkKICNlbmRpZgogCkBAIC04MzgsNiArODk2LDcgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopIGN1cnNlc192ZXJzaW9uICh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFzc3VtZV9kZWZhdWx0X2NvbG9ycyAoaW50LCBpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVmaW5lX2tleSAoY29uc3QgY2hhciAqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0X2VzY2RlbGF5ICh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleV9kZWZpbmVkIChjb25zdCBjaGFyICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkga2V5b2sgKGludCwgYm9vbCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZXNpemVfdGVybSAoaW50LCBpbnQpOwpAQCAtODU2LDI3ICs5MTUsMTQxIEBACiAgKiBUaGVzZSBleHRlbnNpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgV0lORE9XIGV2ZW4KICAqIHdoZW4gTkNVUlNFU19PUEFRVUUgaXMgc2V0OgogICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfY2xlYXJlZCAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19pZGNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2ltbWVkb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfa2V5cGFkIChjb25zdCBXSU5ET1cgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19sZWF2ZW9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX25vZGVsYXkgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbm90aW1lb3V0IChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3Njcm9sbG9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3N5bmNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0c2NycmVnIChjb25zdCBXSU5ET1cgKiwgaW50ICosIGludCAqKTsgLyogZ2VuZXJhdGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqKTsJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfY2xlYXJlZCAoY29uc3QgV0lORE9XICopOwkvKiBAR0VORVJBVEVEX0VYVF9GVU5DU0AgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19pZGNvayAoY29uc3QgV0lORE9XICopOwkJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIEBHRU5FUkFURURfRVhUX0ZVTkNTQCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2ltbWVkb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfa2V5cGFkIChjb25zdCBXSU5ET1cgKik7CQkvKiBAR0VORVJBVEVEX0VYVF9GVU5DU0AgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19sZWF2ZW9rIChjb25zdCBXSU5ET1cgKik7CS8qIEBHRU5FUkFURURfRVhUX0ZVTkNTQCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX25vZGVsYXkgKGNvbnN0IFdJTkRPVyAqKTsJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbm90aW1lb3V0IChjb25zdCBXSU5ET1cgKik7CS8qIEBHRU5FUkFURURfRVhUX0ZVTkNTQCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3BhZCAoY29uc3QgV0lORE9XICopOwkJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfc2Nyb2xsb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogQEdFTkVSQVRFRF9FWFRfRlVOQ1NAICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfc3Vid2luIChjb25zdCBXSU5ET1cgKik7CQkvKiBAR0VORVJBVEVEX0VYVF9GVU5DU0AgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19zeW5jb2sgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIEBHRU5FUkFURURfRVhUX0ZVTkNTQCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldGRlbGF5IChjb25zdCBXSU5ET1cgKik7CQkvKiBAR0VORVJBVEVEX0VYVF9GVU5DU0AgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRzY3JyZWcgKGNvbnN0IFdJTkRPVyAqLCBpbnQgKiwgaW50ICopOyAvKiBAR0VORVJBVEVEX0VYVF9GVU5DU0AgKi8KIAogI2Vsc2UKICNkZWZpbmUgY3Vyc2VzX3ZlcnNpb24oKSBOQ1VSU0VTX1ZFUlNJT04KICNlbmRpZgogCisvKgorICogRXh0cmEgZXh0ZW5zaW9uLWZ1bmN0aW9ucywgd2hpY2ggcGFzcyBhIFNDUkVFTiBwb2ludGVyIHJhdGhlciB0aGFuIHVzaW5nCisgKiBhIGdsb2JhbCB2YXJpYWJsZSBTUC4KKyAqLworI2lmIEBOQ1VSU0VTX1NQX0ZVTkNTQAorI3VuZGVmICBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIE5DVVJTRVNfU1BfRlVOQ1MgQE5DVVJTRVNfUEFUQ0hACisjZGVmaW5lIE5DVVJTRVNfU1BfTkFNRShuYW1lKSBuYW1lIyNfc3AKKworLyogRGVmaW5lIHRoZSBzcC1mdW5jcyBoZWxwZXIgZnVuY3Rpb24gKi8KKyNkZWZpbmUgTkNVUlNFU19TUF9PVVRDIE5DVVJTRVNfU1BfTkFNRShOQ1VSU0VTX09VVEMpCit0eXBlZGVmIGludCAoKk5DVVJTRVNfU1BfT1VUQykoU0NSRUVOKiwgaW50KTsKKworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKSBuZXdfcHJlc2NyICh2b2lkKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoYmF1ZHJhdGUpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGJlZXApIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIE5DVVJTRVNfU1BfTkFNRShjYW5fY2hhbmdlX2NvbG9yKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShjYnJlYWspIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGN1cnNfc2V0KSAoU0NSRUVOKiwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGNvbG9yX2NvbnRlbnQpIChTQ1JFRU4qLCBOQ1VSU0VTX1BBSVJTX1QsIE5DVVJTRVNfQ09MT1JfVCosIE5DVVJTRVNfQ09MT1JfVCosIE5DVVJTRVNfQ09MT1JfVCopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoZGVmX3Byb2dfbW9kZSkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoZGVmX3NoZWxsX21vZGUpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGRlbGF5X291dHB1dCkgKFNDUkVFTiosIGludCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShkb3VwZGF0ZSkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoZWNobykgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoZW5kd2luKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyKSBOQ1VSU0VTX1NQX05BTUUoZXJhc2VjaGFyKSAoU0NSRUVOKik7LyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIE5DVVJTRVNfU1BfTkFNRShmaWx0ZXIpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGZsYXNoKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShmbHVzaGlucCkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIE5DVVJTRVNfU1BfTkFNRShnZXR3aW4pIChTQ1JFRU4qLCBGSUxFICopOwkJCS8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShoYWxmZGVsYXkpIChTQ1JFRU4qLCBpbnQpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgTkNVUlNFU19TUF9OQU1FKGhhc19jb2xvcnMpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIE5DVVJTRVNfU1BfTkFNRShoYXNfaWMpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIE5DVVJTRVNfU1BfTkFNRShoYXNfaWwpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGluaXRfY29sb3IpIChTQ1JFRU4qLCBOQ1VSU0VTX0NPTE9SX1QsIE5DVVJTRVNfQ09MT1JfVCwgTkNVUlNFU19DT0xPUl9ULCBOQ1VSU0VTX0NPTE9SX1QpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoaW5pdF9wYWlyKSAoU0NSRUVOKiwgTkNVUlNFU19QQUlSU19ULCBOQ1VSU0VTX0NPTE9SX1QsIE5DVVJTRVNfQ09MT1JfVCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShpbnRyZmx1c2gpIChTQ1JFRU4qLCBXSU5ET1cqLCBib29sKTsJLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIE5DVVJTRVNfU1BfTkFNRShpc2VuZHdpbikgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIE5DVVJTRVNfU1BfTkFNRShrZXluYW1lKSAoU0NSRUVOKiwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIpIE5DVVJTRVNfU1BfTkFNRShraWxsY2hhcikgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBOQ1VSU0VTX1NQX05BTUUobG9uZ25hbWUpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKG12Y3VyKSAoU0NSRUVOKiwgaW50LCBpbnQsIGludCwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKG5hcG1zKSAoU0NSRUVOKiwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBOQ1VSU0VTX1NQX05BTUUobmV3cGFkKSAoU0NSRUVOKiwgaW50LCBpbnQpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoU0NSRUVOICopIE5DVVJTRVNfU1BfTkFNRShuZXd0ZXJtKSAoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICosIEZJTEUgKiwgRklMRSAqKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBOQ1VSU0VTX1NQX05BTUUobmV3d2luKSAoU0NSRUVOKiwgaW50LCBpbnQsIGludCwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKG5sKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShub2NicmVhaykgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUobm9lY2hvKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShub25sKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBOQ1VSU0VTX1NQX05BTUUobm9xaWZsdXNoKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShub3JhdykgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUocGFpcl9jb250ZW50KSAoU0NSRUVOKiwgTkNVUlNFU19QQUlSU19ULCBOQ1VSU0VTX0NPTE9SX1QqLCBOQ1VSU0VTX0NPTE9SX1QqKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIE5DVVJTRVNfU1BfTkFNRShxaWZsdXNoKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShyYXcpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHJlc2V0X3Byb2dfbW9kZSkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUocmVzZXRfc2hlbGxfbW9kZSkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUocmVzZXR0eSkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUocmlwb2ZmbGluZSkgKFNDUkVFTiosIGludCwgaW50ICgqKShXSU5ET1cgKiwgaW50KSk7CS8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzYXZldHR5KSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzY3JfaW5pdCkgKFNDUkVFTiosIGNvbnN0IGNoYXIgKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzY3JfcmVzdG9yZSkgKFNDUkVFTiosIGNvbnN0IGNoYXIgKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzY3Jfc2V0KSAoU0NSRUVOKiwgY29uc3QgY2hhciAqKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa19hdHRyb2ZmKSAoU0NSRUVOKiwgY29uc3QgY2h0eXBlKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa19hdHRyb24pIChTQ1JFRU4qLCBjb25zdCBjaHR5cGUpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHJzZXQpIChTQ1JFRU4qLCBjb25zdCBjaHR5cGUpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYXR0cl90KSBOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHIpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa19hdHRyX3NldCkgKFNDUkVFTiosIGNvbnN0IGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCB2b2lkKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzbGtfY2xlYXIpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa19jb2xvcikgKFNDUkVFTiosIE5DVVJTRVNfUEFJUlNfVCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzbGtfaW5pdCkgKFNDUkVFTiosIGludCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIE5DVVJTRVNfU1BfTkFNRShzbGtfbGFiZWwpIChTQ1JFRU4qLCBpbnQpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoc2xrX25vdXRyZWZyZXNoKSAoU0NSRUVOKik7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShzbGtfcmVmcmVzaCkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoc2xrX3Jlc3RvcmUpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa19zZXQpIChTQ1JFRU4qLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNsa190b3VjaCkgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoc3RhcnRfY29sb3IpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgTkNVUlNFU19TUF9OQU1FKHRlcm1hdHRycykgKFNDUkVFTiopOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBOQ1VSU0VTX1NQX05BTUUodGVybW5hbWUpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHR5cGVhaGVhZCkgKFNDUkVFTiosIGludCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRSh1bmdldGNoKSAoU0NSRUVOKiwgaW50KTsgLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIE5DVVJTRVNfU1BfTkFNRSh1c2VfZW52KSAoU0NSRUVOKiwgYm9vbCk7IC8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBOQ1VSU0VTX1NQX05BTUUodXNlX3Rpb2N0bCkgKFNDUkVFTiosIGJvb2wpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUodmlkYXR0cikgKFNDUkVFTiosIGNodHlwZSk7CS8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRSh2aWRwdXRzKSAoU0NSRUVOKiwgY2h0eXBlLCBOQ1VSU0VTX1NQX09VVEMpOyAvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCisjaWYgQE5DVVJTRVNfRVhUX0ZVTkNTQAorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgTkNVUlNFU19TUF9OQU1FKGtleWJvdW5kKSAoU0NSRUVOKiwgaW50LCBpbnQpOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGFzc3VtZV9kZWZhdWx0X2NvbG9ycykgKFNDUkVFTiosIGludCwgaW50KTsJLyogaW1wbGVtZW50ZWQ6RVhUX1NQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShkZWZpbmVfa2V5KSAoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGdldF9lc2NkZWxheSkgKFNDUkVFTiopOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIE5DVVJTRVNfU1BfTkFNRShpc190ZXJtX3Jlc2l6ZWQpIChTQ1JFRU4qLCBpbnQsIGludCk7CS8qIGltcGxlbWVudGVkOkVYVF9TUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoa2V5X2RlZmluZWQpIChTQ1JFRU4qLCBjb25zdCBjaGFyICopOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGtleW9rKSAoU0NSRUVOKiwgaW50LCBib29sKTsJLyogaW1wbGVtZW50ZWQ6RVhUX1NQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBOQ1VSU0VTX1NQX05BTUUobm9maWx0ZXIpIChTQ1JFRU4qKTsgLyogaW1wbGVtZW50ZWQgKi8JLyogaW1wbGVtZW50ZWQ6RVhUX1NQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShyZXNpemVfdGVybSkgKFNDUkVFTiosIGludCwgaW50KTsJLyogaW1wbGVtZW50ZWQ6RVhUX1NQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShyZXNpemV0ZXJtKSAoU0NSRUVOKiwgaW50LCBpbnQpOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHNldF9lc2NkZWxheSkgKFNDUkVFTiosIGludCk7CS8qIGltcGxlbWVudGVkOkVYVF9TUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBOQ1VSU0VTX1NQX05BTUUoc2V0X3RhYnNpemUpIChTQ1JFRU4qLCBpbnQpOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHVzZV9kZWZhdWx0X2NvbG9ycykgKFNDUkVFTiopOwkvKiBpbXBsZW1lbnRlZDpFWFRfU1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHVzZV9sZWdhY3lfY29kaW5nKSAoU0NSRUVOKiwgaW50KTsJLyogaW1wbGVtZW50ZWQ6RVhUX1NQX0ZVTkMgKi8KKyNlbmRpZgorI2Vsc2UKKyN1bmRlZiAgTkNVUlNFU19TUF9GVU5DUworI2RlZmluZSBOQ1VSU0VTX1NQX0ZVTkNTIDAKKyNkZWZpbmUgTkNVUlNFU19TUF9OQU1FKG5hbWUpIG5hbWUKKyNkZWZpbmUgTkNVUlNFU19TUF9PVVRDIE5DVVJTRVNfT1VUQworI2VuZGlmCisKIC8qIGF0dHJpYnV0ZXMgKi8KIAogI2RlZmluZSBOQ1VSU0VTX0FUVFJfU0hJRlQgICAgICAgOAotI2RlZmluZSBOQ1VSU0VTX0JJVFMobWFzayxzaGlmdCkgKChtYXNrKSA8PCAoKHNoaWZ0KSArIE5DVVJTRVNfQVRUUl9TSElGVCkpCisjZGVmaW5lIE5DVVJTRVNfQklUUyhtYXNrLHNoaWZ0KSAoTkNVUlNFU19DQVNUKGNodHlwZSwobWFzaykpIDw8ICgoc2hpZnQpICsgTkNVUlNFU19BVFRSX1NISUZUKSkKIAogI2RlZmluZSBBX05PUk1BTAkoQGNmX2N2XzFVTEAgLSBAY2ZfY3ZfMVVMQCkKICNkZWZpbmUgQV9BVFRSSUJVVEVTCU5DVVJTRVNfQklUUyh+KEBjZl9jdl8xVUxAIC0gQGNmX2N2XzFVTEApLDApCkBAIC04OTgsNiArMTA3MSwxMCBAQAogI2RlZmluZSBBX1RPUAkJTkNVUlNFU19CSVRTKEBjZl9jdl8xVUxALDIxKQogI2RlZmluZSBBX1ZFUlRJQ0FMCU5DVVJTRVNfQklUUyhAY2ZfY3ZfMVVMQCwyMikKIAorI2lmIEBOQ1VSU0VTX0VYVF9GVU5DU0AKKyNkZWZpbmUgQV9JVEFMSUMJTkNVUlNFU19CSVRTKEBjZl9jdl8xVUxALDIzKQkvKiBuY3Vyc2VzIGV4dGVuc2lvbiAqLworI2VuZGlmCisKIC8qCiAgKiBNb3N0IG9mIHRoZSBwc2V1ZG8gZnVuY3Rpb25zIGFyZSBtYWNyb3MgdGhhdCBlaXRoZXIgcHJvdmlkZSBjb21wYXRpYmlsaXR5CiAgKiB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIGN1cnNlcywgb3IgcHJvdmlkZSBpbmxpbmUgZnVuY3Rpb25hbGl0eSB0byBpbXByb3ZlCkBAIC05MzgsNyArMTExNSw3IEBACiAgKi8KIAogI2RlZmluZSB3Z2V0c3RyKHcsIHMpCQl3Z2V0bnN0cih3LCBzLCAtMSkKLSNkZWZpbmUgZ2V0bnN0cihzLCBuKQkJd2dldG5zdHIoc3Rkc2NyLCBzLCBuKQorI2RlZmluZSBnZXRuc3RyKHMsIG4pCQl3Z2V0bnN0cihzdGRzY3IsIHMsIChuKSkKIAogI2RlZmluZSBzZXR0ZXJtKHRlcm0pCQlzZXR1cHRlcm0odGVybSwgMSwgKGludCAqKTApCiAKQEAgLTk1MSw3ICsxMTI4LDcgQEAKIAogLyogSXQgc2VlbXMgb2xkZXIgU1lTViBjdXJzZXMgdmVyc2lvbnMgZGVmaW5lIHRoZXNlICovCiAjaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIGdldGF0dHJzKHdpbikJCSgod2luKSA/ICh3aW4pLT5fYXR0cnMgOiBBX05PUk1BTCkKKyNkZWZpbmUgZ2V0YXR0cnMod2luKQkJTkNVUlNFU19DQVNUKGludCwgKHdpbikgPyAod2luKS0+X2F0dHJzIDogQV9OT1JNQUwpCiAjZGVmaW5lIGdldGN1cngod2luKQkJKCh3aW4pID8gKHdpbiktPl9jdXJ4IDogRVJSKQogI2RlZmluZSBnZXRjdXJ5KHdpbikJCSgod2luKSA/ICh3aW4pLT5fY3VyeSA6IEVSUikKICNkZWZpbmUgZ2V0YmVneCh3aW4pCQkoKHdpbikgPyAod2luKS0+X2JlZ3ggOiBFUlIpCkBAIC05NjksMTEgKzExNDYsMTcgQEAKICNkZWZpbmUgd2F0dHJvZmYod2luLGF0KQl3YXR0cl9vZmYod2luLCBOQ1VSU0VTX0NBU1QoYXR0cl90LCBhdCksIE5VTEwpCiAKICNpZiAhTkNVUlNFU19PUEFRVUUKLSNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQpICYmIEBOQ1VSU0VTX0VYVF9DT0xPUlNACi0jZGVmaW5lIHdhdHRyc2V0KHdpbixhdCkJKCh3aW4pLT5fY29sb3IgPSBQQUlSX05VTUJFUihhdCksIFwKLQkJCQkgKHdpbiktPl9hdHRycyA9IChhdCkpCisjaWYgTkNVUlNFU19XSURFQ0hBUiAmJiBATkNVUlNFU19FWFRfQ09MT1JTQAorI2RlZmluZSB3YXR0cnNldCh3aW4sYXQpCSgod2luKSBcCisJCQkJICA/ICgod2luKS0+X2NvbG9yID0gTkNVUlNFU19DQVNUKGludCwgUEFJUl9OVU1CRVIoYXQpKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW4pLT5fYXR0cnMgPSBOQ1VSU0VTX0NBU1QoYXR0cl90LCBhdCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSykgXAorCQkJCSAgOiBFUlIpCiAjZWxzZQotI2RlZmluZSB3YXR0cnNldCh3aW4sYXQpCSgod2luKS0+X2F0dHJzID0gKGF0KSkKKyNkZWZpbmUgd2F0dHJzZXQod2luLGF0KSAgICAgICAgKCh3aW4pIFwKKwkJCQkgID8gKCh3aW4pLT5fYXR0cnMgPSBOQ1VSU0VTX0NBU1QoYXR0cl90LCBhdCksIFwKKwkJCQkgICAgIE9LKSBcCisJCQkJICA6IEVSUikKICNlbmRpZgogI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCiAKQEAgLTk4NSwxNSArMTE2OCwxNSBAQAogCiAjZGVmaW5lIGJveCh3aW4sIHYsIGgpCQl3Ym9yZGVyKHdpbiwgdiwgdiwgaCwgaCwgMCwgMCwgMCwgMCkKICNkZWZpbmUgYm9yZGVyKGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikJd2JvcmRlcihzdGRzY3IsIGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikKLSNkZWZpbmUgaGxpbmUoY2gsIG4pCQl3aGxpbmUoc3Rkc2NyLCBjaCwgbikKLSNkZWZpbmUgdmxpbmUoY2gsIG4pCQl3dmxpbmUoc3Rkc2NyLCBjaCwgbikKKyNkZWZpbmUgaGxpbmUoY2gsIG4pCQl3aGxpbmUoc3Rkc2NyLCBjaCwgKG4pKQorI2RlZmluZSB2bGluZShjaCwgbikJCXd2bGluZShzdGRzY3IsIGNoLCAobikpCiAKICNkZWZpbmUgd2luc3RyKHcsIHMpCQl3aW5uc3RyKHcsIHMsIC0xKQogI2RlZmluZSB3aW5jaHN0cih3LCBzKQkJd2luY2huc3RyKHcsIHMsIC0xKQogI2RlZmluZSB3aW5zc3RyKHcsIHMpCQl3aW5zbnN0cih3LCBzLCAtMSkKIAogI2lmICFOQ1VSU0VTX09QQVFVRQotI2RlZmluZSByZWRyYXd3aW4od2luKQkJd3JlZHJhd2xuKHdpbiwgMCwgKHdpbiktPl9tYXh5KzEpCisjZGVmaW5lIHJlZHJhd3dpbih3aW4pCQl3cmVkcmF3bG4od2luLCAwLCAoKHdpbikgPyAod2luKS0+X21heHkrMSA6IC0xKSkKICNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwogCiAjZGVmaW5lIHdhZGRzdHIod2luLHN0cikJd2FkZG5zdHIod2luLHN0ciwtMSkKQEAgLTEwMDIsNTUgKzExODUsNTUgQEAKIC8qCiAgKiBUaGVzZSBhcHBseSB0byB0aGUgZmlyc3QgMjU2IGNvbG9yIHBhaXJzLgogICovCi0jZGVmaW5lIENPTE9SX1BBSVIobikJTkNVUlNFU19CSVRTKG4sIDApCi0jZGVmaW5lIFBBSVJfTlVNQkVSKGEpCShOQ1VSU0VTX0NBU1QoaW50LCgoKGEpICYgQV9DT0xPUikgPj4gTkNVUlNFU19BVFRSX1NISUZUKSkpCisjZGVmaW5lIENPTE9SX1BBSVIobikJTkNVUlNFU19CSVRTKChuKSwgMCkKKyNkZWZpbmUgUEFJUl9OVU1CRVIoYSkJKE5DVVJTRVNfQ0FTVChpbnQsKChOQ1VSU0VTX0NBU1QodW5zaWduZWQgbG9uZywoYSkpICYgQV9DT0xPUikgPj4gTkNVUlNFU19BVFRSX1NISUZUKSkpCiAKIC8qCiAgKiBwc2V1ZG8gZnVuY3Rpb25zIGZvciBzdGFuZGFyZCBzY3JlZW4KICAqLwogCi0jZGVmaW5lIGFkZGNoKGNoKQkJd2FkZGNoKHN0ZHNjcixjaCkKLSNkZWZpbmUgYWRkY2huc3RyKHN0cixuKQl3YWRkY2huc3RyKHN0ZHNjcixzdHIsbikKLSNkZWZpbmUgYWRkY2hzdHIoc3RyKQkJd2FkZGNoc3RyKHN0ZHNjcixzdHIpCi0jZGVmaW5lIGFkZG5zdHIoc3RyLG4pCQl3YWRkbnN0cihzdGRzY3Isc3RyLG4pCi0jZGVmaW5lIGFkZHN0cihzdHIpCQl3YWRkbnN0cihzdGRzY3Isc3RyLC0xKQotI2RlZmluZSBhdHRyb2ZmKGF0KQkJd2F0dHJvZmYoc3Rkc2NyLGF0KQotI2RlZmluZSBhdHRyb24oYXQpCQl3YXR0cm9uKHN0ZHNjcixhdCkKLSNkZWZpbmUgYXR0cnNldChhdCkJCXdhdHRyc2V0KHN0ZHNjcixhdCkKLSNkZWZpbmUgYXR0cl9nZXQoYXAsY3AsbykJd2F0dHJfZ2V0KHN0ZHNjcixhcCxjcCxvKQotI2RlZmluZSBhdHRyX29mZihhLG8pCQl3YXR0cl9vZmYoc3Rkc2NyLGEsbykKLSNkZWZpbmUgYXR0cl9vbihhLG8pCQl3YXR0cl9vbihzdGRzY3IsYSxvKQotI2RlZmluZSBhdHRyX3NldChhLGMsbykJCXdhdHRyX3NldChzdGRzY3IsYSxjLG8pCi0jZGVmaW5lIGJrZ2QoY2gpCQl3YmtnZChzdGRzY3IsY2gpCi0jZGVmaW5lIGJrZ2RzZXQoY2gpCQl3YmtnZHNldChzdGRzY3IsY2gpCi0jZGVmaW5lIGNoZ2F0KG4sYSxjLG8pCQl3Y2hnYXQoc3Rkc2NyLG4sYSxjLG8pCisjZGVmaW5lIGFkZGNoKGNoKQkJd2FkZGNoKHN0ZHNjciwoY2gpKQorI2RlZmluZSBhZGRjaG5zdHIoc3RyLG4pCXdhZGRjaG5zdHIoc3Rkc2NyLChzdHIpLChuKSkKKyNkZWZpbmUgYWRkY2hzdHIoc3RyKQkJd2FkZGNoc3RyKHN0ZHNjciwoc3RyKSkKKyNkZWZpbmUgYWRkbnN0cihzdHIsbikJCXdhZGRuc3RyKHN0ZHNjciwoc3RyKSwobikpCisjZGVmaW5lIGFkZHN0cihzdHIpCQl3YWRkbnN0cihzdGRzY3IsKHN0ciksLTEpCisjZGVmaW5lIGF0dHJvZmYoYXQpCQl3YXR0cm9mZihzdGRzY3IsKGF0KSkKKyNkZWZpbmUgYXR0cm9uKGF0KQkJd2F0dHJvbihzdGRzY3IsKGF0KSkKKyNkZWZpbmUgYXR0cnNldChhdCkJCXdhdHRyc2V0KHN0ZHNjciwoYXQpKQorI2RlZmluZSBhdHRyX2dldChhcCxjcCxvKQl3YXR0cl9nZXQoc3Rkc2NyLChhcCksKGNwKSwobykpCisjZGVmaW5lIGF0dHJfb2ZmKGEsbykJCXdhdHRyX29mZihzdGRzY3IsKGEpLChvKSkKKyNkZWZpbmUgYXR0cl9vbihhLG8pCQl3YXR0cl9vbihzdGRzY3IsKGEpLChvKSkKKyNkZWZpbmUgYXR0cl9zZXQoYSxjLG8pCQl3YXR0cl9zZXQoc3Rkc2NyLChhKSwoYyksKG8pKQorI2RlZmluZSBia2dkKGNoKQkJd2JrZ2Qoc3Rkc2NyLChjaCkpCisjZGVmaW5lIGJrZ2RzZXQoY2gpCQl3YmtnZHNldChzdGRzY3IsKGNoKSkKKyNkZWZpbmUgY2hnYXQobixhLGMsbykJCXdjaGdhdChzdGRzY3IsKG4pLChhKSwoYyksKG8pKQogI2RlZmluZSBjbGVhcigpCQkJd2NsZWFyKHN0ZHNjcikKICNkZWZpbmUgY2xydG9ib3QoKQkJd2NscnRvYm90KHN0ZHNjcikKICNkZWZpbmUgY2xydG9lb2woKQkJd2NscnRvZW9sKHN0ZHNjcikKLSNkZWZpbmUgY29sb3Jfc2V0KGMsbykJCXdjb2xvcl9zZXQoc3Rkc2NyLGMsbykKKyNkZWZpbmUgY29sb3Jfc2V0KGMsbykJCXdjb2xvcl9zZXQoc3Rkc2NyLChjKSwobykpCiAjZGVmaW5lIGRlbGNoKCkJCQl3ZGVsY2goc3Rkc2NyKQogI2RlZmluZSBkZWxldGVsbigpCQl3aW5zZGVsbG4oc3Rkc2NyLC0xKQotI2RlZmluZSBlY2hvY2hhcihjKQkJd2VjaG9jaGFyKHN0ZHNjcixjKQorI2RlZmluZSBlY2hvY2hhcihjKQkJd2VjaG9jaGFyKHN0ZHNjciwoYykpCiAjZGVmaW5lIGVyYXNlKCkJCQl3ZXJhc2Uoc3Rkc2NyKQogI2RlZmluZSBnZXRjaCgpCQkJd2dldGNoKHN0ZHNjcikKLSNkZWZpbmUgZ2V0c3RyKHN0cikJCXdnZXRzdHIoc3Rkc2NyLHN0cikKKyNkZWZpbmUgZ2V0c3RyKHN0cikJCXdnZXRzdHIoc3Rkc2NyLChzdHIpKQogI2RlZmluZSBpbmNoKCkJCQl3aW5jaChzdGRzY3IpCi0jZGVmaW5lIGluY2huc3RyKHMsbikJCXdpbmNobnN0cihzdGRzY3IscyxuKQotI2RlZmluZSBpbmNoc3RyKHMpCQl3aW5jaHN0cihzdGRzY3IscykKLSNkZWZpbmUgaW5uc3RyKHMsbikJCXdpbm5zdHIoc3Rkc2NyLHMsbikKLSNkZWZpbmUgaW5zY2goYykJCXdpbnNjaChzdGRzY3IsYykKLSNkZWZpbmUgaW5zZGVsbG4obikJCXdpbnNkZWxsbihzdGRzY3IsbikKKyNkZWZpbmUgaW5jaG5zdHIocyxuKQkJd2luY2huc3RyKHN0ZHNjciwocyksKG4pKQorI2RlZmluZSBpbmNoc3RyKHMpCQl3aW5jaHN0cihzdGRzY3IsKHMpKQorI2RlZmluZSBpbm5zdHIocyxuKQkJd2lubnN0cihzdGRzY3IsKHMpLChuKSkKKyNkZWZpbmUgaW5zY2goYykJCXdpbnNjaChzdGRzY3IsKGMpKQorI2RlZmluZSBpbnNkZWxsbihuKQkJd2luc2RlbGxuKHN0ZHNjciwobikpCiAjZGVmaW5lIGluc2VydGxuKCkJCXdpbnNkZWxsbihzdGRzY3IsMSkKLSNkZWZpbmUgaW5zbnN0cihzLG4pCQl3aW5zbnN0cihzdGRzY3IscyxuKQotI2RlZmluZSBpbnNzdHIocykJCXdpbnNzdHIoc3Rkc2NyLHMpCi0jZGVmaW5lIGluc3RyKHMpCQl3aW5zdHIoc3Rkc2NyLHMpCi0jZGVmaW5lIG1vdmUoeSx4KQkJd21vdmUoc3Rkc2NyLHkseCkKKyNkZWZpbmUgaW5zbnN0cihzLG4pCQl3aW5zbnN0cihzdGRzY3IsKHMpLChuKSkKKyNkZWZpbmUgaW5zc3RyKHMpCQl3aW5zc3RyKHN0ZHNjciwocykpCisjZGVmaW5lIGluc3RyKHMpCQl3aW5zdHIoc3Rkc2NyLChzKSkKKyNkZWZpbmUgbW92ZSh5LHgpCQl3bW92ZShzdGRzY3IsKHkpLCh4KSkKICNkZWZpbmUgcmVmcmVzaCgpCQl3cmVmcmVzaChzdGRzY3IpCi0jZGVmaW5lIHNjcmwobikJCQl3c2NybChzdGRzY3IsbikKLSNkZWZpbmUgc2V0c2NycmVnKHQsYikJCXdzZXRzY3JyZWcoc3Rkc2NyLHQsYikKKyNkZWZpbmUgc2NybChuKQkJCXdzY3JsKHN0ZHNjciwobikpCisjZGVmaW5lIHNldHNjcnJlZyh0LGIpCQl3c2V0c2NycmVnKHN0ZHNjciwodCksKGIpKQogI2RlZmluZSBzdGFuZGVuZCgpCQl3c3RhbmRlbmQoc3Rkc2NyKQogI2RlZmluZSBzdGFuZG91dCgpCQl3c3RhbmRvdXQoc3Rkc2NyKQotI2RlZmluZSB0aW1lb3V0KGRlbGF5KQkJd3RpbWVvdXQoc3Rkc2NyLGRlbGF5KQorI2RlZmluZSB0aW1lb3V0KGRlbGF5KQkJd3RpbWVvdXQoc3Rkc2NyLChkZWxheSkpCiAjZGVmaW5lIHdkZWxldGVsbih3aW4pCQl3aW5zZGVsbG4od2luLC0xKQogI2RlZmluZSB3aW5zZXJ0bG4od2luKQkJd2luc2RlbGxuKHdpbiwxKQogCkBAIC0xMDU4LDcwICsxMjQxLDc1IEBACiAgKiBtdiBmdW5jdGlvbnMKICAqLwogCi0jZGVmaW5lIG12d2FkZGNoKHdpbix5LHgsY2gpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZGNoKHdpbixjaCkpCi0jZGVmaW5lIG12d2FkZGNobnN0cih3aW4seSx4LHN0cixuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZGNobnN0cih3aW4sc3RyLG4pKQotI2RlZmluZSBtdndhZGRjaHN0cih3aW4seSx4LHN0cikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaG5zdHIod2luLHN0ciwtMSkpCi0jZGVmaW5lIG12d2FkZG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRuc3RyKHdpbixzdHIsbikpCi0jZGVmaW5lIG12d2FkZHN0cih3aW4seSx4LHN0cikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkbnN0cih3aW4sc3RyLC0xKSkKLSNkZWZpbmUgbXZ3ZGVsY2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3ZGVsY2god2luKSkKLSNkZWZpbmUgbXZ3Y2hnYXQod2luLHkseCxuLGEsYyxvKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2NoZ2F0KHdpbixuLGEsYyxvKSkKLSNkZWZpbmUgbXZ3Z2V0Y2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3Z2V0Y2god2luKSkKLSNkZWZpbmUgbXZ3Z2V0bnN0cih3aW4seSx4LHN0cixuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2dldG5zdHIod2luLHN0cixuKSkKLSNkZWZpbmUgbXZ3Z2V0c3RyKHdpbix5LHgsc3RyKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRzdHIod2luLHN0cikpCi0jZGVmaW5lIG12d2hsaW5lKHdpbix5LHgsYyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdobGluZSh3aW4sYyxuKSkKLSNkZWZpbmUgbXZ3aW5jaCh3aW4seSx4KQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IE5DVVJTRVNfQ0FTVChjaHR5cGUsIEVSUikgOiB3aW5jaCh3aW4pKQotI2RlZmluZSBtdndpbmNobnN0cih3aW4seSx4LHMsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbmNobnN0cih3aW4scyxuKSkKLSNkZWZpbmUgbXZ3aW5jaHN0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luY2hzdHIod2luLHMpKQotI2RlZmluZSBtdndpbm5zdHIod2luLHkseCxzLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2lubnN0cih3aW4scyxuKSkKLSNkZWZpbmUgbXZ3aW5zY2god2luLHkseCxjKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNjaCh3aW4sYykpCi0jZGVmaW5lIG12d2luc25zdHIod2luLHkseCxzLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc25zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luc3N0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc3N0cih3aW4scykpCi0jZGVmaW5lIG12d2luc3RyKHdpbix5LHgscykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5zdHIod2luLHMpKQotI2RlZmluZSBtdnd2bGluZSh3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3dmxpbmUod2luLGMsbikpCisjZGVmaW5lIG12d2FkZGNoKHdpbix5LHgsY2gpCQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2FkZGNoKCh3aW4pLChjaCkpKQorI2RlZmluZSBtdndhZGRjaG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdhZGRjaG5zdHIoKHdpbiksKHN0ciksKG4pKSkKKyNkZWZpbmUgbXZ3YWRkY2hzdHIod2luLHkseCxzdHIpCSh3bW92ZSgod2luKSwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3YWRkY2huc3RyKCh3aW4pLChzdHIpLC0xKSkKKyNkZWZpbmUgbXZ3YWRkbnN0cih3aW4seSx4LHN0cixuKQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2FkZG5zdHIoKHdpbiksKHN0ciksKG4pKSkKKyNkZWZpbmUgbXZ3YWRkc3RyKHdpbix5LHgsc3RyKQkJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdhZGRuc3RyKCh3aW4pLChzdHIpLC0xKSkKKyNkZWZpbmUgbXZ3ZGVsY2god2luLHkseCkJCSh3bW92ZSgod2luKSwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3ZGVsY2god2luKSkKKyNkZWZpbmUgbXZ3Y2hnYXQod2luLHkseCxuLGEsYyxvKQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2NoZ2F0KCh3aW4pLChuKSwoYSksKGMpLChvKSkpCisjZGVmaW5lIG12d2dldGNoKHdpbix5LHgpCQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2dldGNoKHdpbikpCisjZGVmaW5lIG12d2dldG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdnZXRuc3RyKCh3aW4pLChzdHIpLChuKSkpCisjZGVmaW5lIG12d2dldHN0cih3aW4seSx4LHN0cikJCSh3bW92ZSgod2luKSwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3Z2V0c3RyKCh3aW4pLChzdHIpKSkKKyNkZWZpbmUgbXZ3aGxpbmUod2luLHkseCxjLG4pCQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2hsaW5lKCh3aW4pLChjKSwobikpKQorI2RlZmluZSBtdndpbmNoKHdpbix5LHgpCQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gTkNVUlNFU19DQVNUKGNodHlwZSwgRVJSKSA6IHdpbmNoKHdpbikpCisjZGVmaW5lIG12d2luY2huc3RyKHdpbix5LHgscyxuKQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2luY2huc3RyKCh3aW4pLChzKSwobikpKQorI2RlZmluZSBtdndpbmNoc3RyKHdpbix5LHgscykJCSh3bW92ZSgod2luKSwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3aW5jaHN0cigod2luKSwocykpKQorI2RlZmluZSBtdndpbm5zdHIod2luLHkseCxzLG4pCQkod21vdmUoKHdpbiksKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2lubnN0cigod2luKSwocyksKG4pKSkKKyNkZWZpbmUgbXZ3aW5zY2god2luLHkseCxjKQkJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdpbnNjaCgod2luKSwoYykpKQorI2RlZmluZSBtdndpbnNuc3RyKHdpbix5LHgscyxuKQkJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdpbnNuc3RyKCh3aW4pLChzKSwobikpKQorI2RlZmluZSBtdndpbnNzdHIod2luLHkseCxzKQkJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdpbnNzdHIoKHdpbiksKHMpKSkKKyNkZWZpbmUgbXZ3aW5zdHIod2luLHkseCxzKQkJKHdtb3ZlKCh3aW4pLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdpbnN0cigod2luKSwocykpKQorI2RlZmluZSBtdnd2bGluZSh3aW4seSx4LGMsbikJCSh3bW92ZSgod2luKSwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3dmxpbmUoKHdpbiksKGMpLChuKSkpCiAKLSNkZWZpbmUgbXZhZGRjaCh5LHgsY2gpCQkJbXZ3YWRkY2goc3Rkc2NyLHkseCxjaCkKLSNkZWZpbmUgbXZhZGRjaG5zdHIoeSx4LHN0cixuKQkJbXZ3YWRkY2huc3RyKHN0ZHNjcix5LHgsc3RyLG4pCi0jZGVmaW5lIG12YWRkY2hzdHIoeSx4LHN0cikJCW12d2FkZGNoc3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmFkZG5zdHIoeSx4LHN0cixuKQkJbXZ3YWRkbnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmFkZHN0cih5LHgsc3RyKQkJbXZ3YWRkc3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmNoZ2F0KHkseCxuLGEsYyxvKQkJbXZ3Y2hnYXQoc3Rkc2NyLHkseCxuLGEsYyxvKQotI2RlZmluZSBtdmRlbGNoKHkseCkJCQltdndkZWxjaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmdldGNoKHkseCkJCQltdndnZXRjaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmdldG5zdHIoeSx4LHN0cixuKQkJbXZ3Z2V0bnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmdldHN0cih5LHgsc3RyKQkJbXZ3Z2V0c3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmhsaW5lKHkseCxjLG4pCQltdndobGluZShzdGRzY3IseSx4LGMsbikKLSNkZWZpbmUgbXZpbmNoKHkseCkJCQltdndpbmNoKHN0ZHNjcix5LHgpCi0jZGVmaW5lIG12aW5jaG5zdHIoeSx4LHMsbikJCW12d2luY2huc3RyKHN0ZHNjcix5LHgscyxuKQotI2RlZmluZSBtdmluY2hzdHIoeSx4LHMpCQltdndpbmNoc3RyKHN0ZHNjcix5LHgscykKLSNkZWZpbmUgbXZpbm5zdHIoeSx4LHMsbikJCW12d2lubnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbnNjaCh5LHgsYykJCQltdndpbnNjaChzdGRzY3IseSx4LGMpCi0jZGVmaW5lIG12aW5zbnN0cih5LHgscyxuKQkJbXZ3aW5zbnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbnNzdHIoeSx4LHMpCQkJbXZ3aW5zc3RyKHN0ZHNjcix5LHgscykKLSNkZWZpbmUgbXZpbnN0cih5LHgscykJCQltdndpbnN0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12dmxpbmUoeSx4LGMsbikJCW12d3ZsaW5lKHN0ZHNjcix5LHgsYyxuKQorI2RlZmluZSBtdmFkZGNoKHkseCxjaCkJCQltdndhZGRjaChzdGRzY3IsKHkpLCh4KSwoY2gpKQorI2RlZmluZSBtdmFkZGNobnN0cih5LHgsc3RyLG4pCQltdndhZGRjaG5zdHIoc3Rkc2NyLCh5KSwoeCksKHN0ciksKG4pKQorI2RlZmluZSBtdmFkZGNoc3RyKHkseCxzdHIpCQltdndhZGRjaHN0cihzdGRzY3IsKHkpLCh4KSwoc3RyKSkKKyNkZWZpbmUgbXZhZGRuc3RyKHkseCxzdHIsbikJCW12d2FkZG5zdHIoc3Rkc2NyLCh5KSwoeCksKHN0ciksKG4pKQorI2RlZmluZSBtdmFkZHN0cih5LHgsc3RyKQkJbXZ3YWRkc3RyKHN0ZHNjciwoeSksKHgpLChzdHIpKQorI2RlZmluZSBtdmNoZ2F0KHkseCxuLGEsYyxvKQkJbXZ3Y2hnYXQoc3Rkc2NyLCh5KSwoeCksKG4pLChhKSwoYyksKG8pKQorI2RlZmluZSBtdmRlbGNoKHkseCkJCQltdndkZWxjaChzdGRzY3IsKHkpLCh4KSkKKyNkZWZpbmUgbXZnZXRjaCh5LHgpCQkJbXZ3Z2V0Y2goc3Rkc2NyLCh5KSwoeCkpCisjZGVmaW5lIG12Z2V0bnN0cih5LHgsc3RyLG4pCQltdndnZXRuc3RyKHN0ZHNjciwoeSksKHgpLChzdHIpLChuKSkKKyNkZWZpbmUgbXZnZXRzdHIoeSx4LHN0cikJCW12d2dldHN0cihzdGRzY3IsKHkpLCh4KSwoc3RyKSkKKyNkZWZpbmUgbXZobGluZSh5LHgsYyxuKQkJbXZ3aGxpbmUoc3Rkc2NyLCh5KSwoeCksKGMpLChuKSkKKyNkZWZpbmUgbXZpbmNoKHkseCkJCQltdndpbmNoKHN0ZHNjciwoeSksKHgpKQorI2RlZmluZSBtdmluY2huc3RyKHkseCxzLG4pCQltdndpbmNobnN0cihzdGRzY3IsKHkpLCh4KSwocyksKG4pKQorI2RlZmluZSBtdmluY2hzdHIoeSx4LHMpCQltdndpbmNoc3RyKHN0ZHNjciwoeSksKHgpLChzKSkKKyNkZWZpbmUgbXZpbm5zdHIoeSx4LHMsbikJCW12d2lubnN0cihzdGRzY3IsKHkpLCh4KSwocyksKG4pKQorI2RlZmluZSBtdmluc2NoKHkseCxjKQkJCW12d2luc2NoKHN0ZHNjciwoeSksKHgpLChjKSkKKyNkZWZpbmUgbXZpbnNuc3RyKHkseCxzLG4pCQltdndpbnNuc3RyKHN0ZHNjciwoeSksKHgpLChzKSwobikpCisjZGVmaW5lIG12aW5zc3RyKHkseCxzKQkJCW12d2luc3N0cihzdGRzY3IsKHkpLCh4KSwocykpCisjZGVmaW5lIG12aW5zdHIoeSx4LHMpCQkJbXZ3aW5zdHIoc3Rkc2NyLCh5KSwoeCksKHMpKQorI2RlZmluZSBtdnZsaW5lKHkseCxjLG4pCQltdnd2bGluZShzdGRzY3IsKHkpLCh4KSwoYyksKG4pKQogCiAvKgogICogU29tZSB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGhvdXQgdGhlIGV4dGVuc2lvbnMuCiAgKi8KICNpZiAhTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgZ2V0YmtnZCh3aW4pICAgICAgICAgICAgICAgICAgICAoKHdpbiktPl9ia2dkKQorI2RlZmluZSBnZXRia2dkKHdpbikgICAgICAgICAgICAgICAgICAgICgod2luKSA/ICgod2luKS0+X2JrZ2QpIDogMCkKICNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwogCiAjZGVmaW5lIHNsa19hdHRyX29mZihhLHYpCQkoKHYpID8gRVJSIDogc2xrX2F0dHJvZmYoYSkpCiAjZGVmaW5lIHNsa19hdHRyX29uKGEsdikJCSgodikgPyBFUlIgOiBzbGtfYXR0cm9uKGEpKQogCiAjaWYgIU5DVVJTRVNfT1BBUVVFCi0jaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFX0VYVEVOREVEKSAmJiBATkNVUlNFU19FWFRfQ09MT1JTQAotI2RlZmluZSB3YXR0cl9zZXQod2luLGEscCxvcHRzKQkJKCh3aW4pLT5fYXR0cnMgPSAoKGEpICYgfkFfQ09MT1IpLCBcCi0JCQkJCSAod2luKS0+X2NvbG9yID0gKHApLCBcCisjaWYgTkNVUlNFU19XSURFQ0hBUiAmJiBATkNVUlNFU19FWFRfQ09MT1JTQAorI2RlZmluZSB3YXR0cl9zZXQod2luLGEscCxvcHRzKQkJKCgod2luKSBcCisJCQkJCSAgPyAoKHdpbiktPl9hdHRycyA9ICgoYSkgJiB+QV9DT0xPUiksIFwKKwkJCQkJICAgICAod2luKS0+X2NvbG9yID0gKHApKSBcCisJCQkJCSAgOiBPSyksIFwKIAkJCQkJIE9LKQotI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoYSkgIT0gKHZvaWQgKikwICYmICgqKGEpID0gKHdpbiktPl9hdHRycykpLCBcCi0JCQkJCSAodm9pZCkoKHApICE9ICh2b2lkICopMCAmJiAoKihwKSA9ICh3aW4pLT5fY29sb3IpKSwgXAorI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoKGEpICE9ICh2b2lkICopMCkgPyAoKihhKSA9ICh3aW4pID8gKHdpbiktPl9hdHRycyA6IDApIDogT0spLCBcCisJCQkJCSAodm9pZCkoKChwKSAhPSAodm9pZCAqKTApID8gKCoocCkgPSAoTkNVUlNFU19QQUlSU19UKSAoKHdpbikgPyAod2luKS0+X2NvbG9yIDogMCkpIDogT0spLCBcCiAJCQkJCSBPSykKICNlbHNlCi0jZGVmaW5lIHdhdHRyX3NldCh3aW4sYSxwLG9wdHMpCQkoKHdpbiktPl9hdHRycyA9ICgoKGEpICYgfkFfQ09MT1IpIHwgQ09MT1JfUEFJUihwKSksIE9LKQotI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoYSkgIT0gKHZvaWQgKikwICYmICgqKGEpID0gKHdpbiktPl9hdHRycykpLCBcCi0JCQkJCSAodm9pZCkoKHApICE9ICh2b2lkICopMCAmJiAoKihwKSA9IFBBSVJfTlVNQkVSKCh3aW4pLT5fYXR0cnMpKSksIFwKKyNkZWZpbmUgd2F0dHJfc2V0KHdpbixhLHAsb3B0cykJCSgoKHdpbikgXAorCQkJCQkgID8gKCh3aW4pLT5fYXR0cnMgPSAoKChhKSAmIH5BX0NPTE9SKSB8IChhdHRyX3QpQ09MT1JfUEFJUihwKSkpIFwKKwkJCQkJICA6IE9LKSwgXAorCQkJCQkgT0spCisjZGVmaW5lIHdhdHRyX2dldCh3aW4sYSxwLG9wdHMpCQkoKHZvaWQpKCgoYSkgIT0gKHZvaWQgKikwKSA/ICgqKGEpID0gKHdpbikgPyAod2luKS0+X2F0dHJzIDogMCkgOiBPSyksIFwKKwkJCQkJICh2b2lkKSgoKHApICE9ICh2b2lkICopMCkgPyAoKihwKSA9IChOQ1VSU0VTX1BBSVJTX1QpICgod2luKSA/IFBBSVJfTlVNQkVSKCh3aW4pLT5fYXR0cnMpIDogMCkpIDogT0spLCBcCiAJCQkJCSBPSykKICNlbmRpZgogI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCkBAIC0xMTQ4LDE2ICsxMzM2LDE5IEBACiAgKi8KICNpZiBATkNVUlNFU19FWFRfRlVOQ1NACiAjaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIGlzX2NsZWFyZWQod2luKQkJKCh3aW4pLT5fY2xlYXIpCi0jZGVmaW5lIGlzX2lkY29rKHdpbikJCSgod2luKS0+X2lkY29rKQotI2RlZmluZSBpc19pZGxvayh3aW4pCQkoKHdpbiktPl9pZGxvaykKLSNkZWZpbmUgaXNfaW1tZWRvayh3aW4pCQkoKHdpbiktPl9pbW1lZCkKLSNkZWZpbmUgaXNfa2V5cGFkKHdpbikJCSgod2luKS0+X3VzZV9rZXlwYWQpCi0jZGVmaW5lIGlzX2xlYXZlb2sod2luKQkJKCh3aW4pLT5fbGVhdmVvaykKLSNkZWZpbmUgaXNfbm9kZWxheSh3aW4pCQkoKHdpbiktPl9kZWxheSA9PSAwKQotI2RlZmluZSBpc19ub3RpbWVvdXQod2luKQkoKHdpbiktPl9ub3RpbWVvdXQpCi0jZGVmaW5lIGlzX3Njcm9sbG9rKHdpbikJKCh3aW4pLT5fc2Nyb2xsKQotI2RlZmluZSBpc19zeW5jb2sod2luKQkJKCh3aW4pLT5fc3luYykKKyNkZWZpbmUgaXNfY2xlYXJlZCh3aW4pCQkoKHdpbikgPyAod2luKS0+X2NsZWFyIDogRkFMU0UpCisjZGVmaW5lIGlzX2lkY29rKHdpbikJCSgod2luKSA/ICh3aW4pLT5faWRjb2sgOiBGQUxTRSkKKyNkZWZpbmUgaXNfaWRsb2sod2luKQkJKCh3aW4pID8gKHdpbiktPl9pZGxvayA6IEZBTFNFKQorI2RlZmluZSBpc19pbW1lZG9rKHdpbikJCSgod2luKSA/ICh3aW4pLT5faW1tZWQgOiBGQUxTRSkKKyNkZWZpbmUgaXNfa2V5cGFkKHdpbikJCSgod2luKSA/ICh3aW4pLT5fdXNlX2tleXBhZCA6IEZBTFNFKQorI2RlZmluZSBpc19sZWF2ZW9rKHdpbikJCSgod2luKSA/ICh3aW4pLT5fbGVhdmVvayA6IEZBTFNFKQorI2RlZmluZSBpc19ub2RlbGF5KHdpbikJCSgod2luKSA/ICgod2luKS0+X2RlbGF5ID09IDApIDogRkFMU0UpCisjZGVmaW5lIGlzX25vdGltZW91dCh3aW4pCSgod2luKSA/ICh3aW4pLT5fbm90aW1lb3V0IDogRkFMU0UpCisjZGVmaW5lIGlzX3BhZCh3aW4pCQkoKHdpbikgPyAoKHdpbiktPl9mbGFncyAmIF9JU1BBRCkgIT0gMCA6IEZBTFNFKQorI2RlZmluZSBpc19zY3JvbGxvayh3aW4pCSgod2luKSA/ICh3aW4pLT5fc2Nyb2xsIDogRkFMU0UpCisjZGVmaW5lIGlzX3N1Yndpbih3aW4pCQkoKHdpbikgPyAoKHdpbiktPl9mbGFncyAmIF9TVUJXSU4pICE9IDAgOiBGQUxTRSkKKyNkZWZpbmUgaXNfc3luY29rKHdpbikJCSgod2luKSA/ICh3aW4pLT5fc3luYyA6IEZBTFNFKQorI2RlZmluZSB3Z2V0ZGVsYXkod2luKQkJKCh3aW4pID8gKHdpbiktPl9kZWxheSA6IDApCiAjZGVmaW5lIHdnZXRwYXJlbnQod2luKQkJKCh3aW4pID8gKHdpbiktPl9wYXJlbnQgOiAwKQogI2RlZmluZSB3Z2V0c2NycmVnKHdpbix0LGIpCSgod2luKSA/ICgqKHQpID0gKHdpbiktPl9yZWd0b3AsICooYikgPSAod2luKS0+X3JlZ2JvdHRvbSwgT0spIDogRVJSKQogI2VuZGlmCkBAIC0xMTczLDcgKzEzNjQsNyBAQAogICoJICAgSXQgZ2l2ZXMgdGhlIEVTQyBleHBpcmUgdGltZSBpbiBtaWxsaXNlY29uZHMuCiAgKgliLiB0dHl0eXBlIGlzIG5lZWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICovCi0jaWYgQGNmX2N2X2VuYWJsZV9yZWVudHJhbnRACisjaWYgTkNVUlNFU19SRUVOVFJBTlQKIAogTkNVUlNFU19XUkFQUEVEX1ZBUihXSU5ET1cgKiwgY3Vyc2NyKTsKIE5DVVJTRVNfV1JBUFBFRF9WQVIoV0lORE9XICosIG5ld3Njcik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cnNlcy5oZWFkIGIvaW5jbHVkZS9jdXJzZXMuaGVhZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiOGRmZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2N1cnNlcy5oZWFkCisrKyAvZGV2L251bGwKQEAgLTEsMTIzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKLSAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qICRJZDogY3Vyc2VzLmguaW4sdiAxLjE4NyAyMDA4LzA4LzMwIDIwOjExOjI5IHRvbSBFeHAgJCAqLwotCi0jaWZuZGVmIF9fTkNVUlNFU19ICi0jZGVmaW5lIF9fTkNVUlNFU19ICi0KLSNkZWZpbmUgQ1VSU0VTIDEKLSNkZWZpbmUgQ1VSU0VTX0ggMQotCi0vKiBUaGlzIHNob3VsZCBiZSBkZWZpbmVkIGZvciB0aGUgZW5oYW5jZWQgZnVuY3Rpb25hbGl0eSB0byBiZSB2aXNpYmxlLgotICogSG93ZXZlciwgc29tZSBvZiB0aGUgd2lkZS1jaGFyYWN0ZXIgKGVuaGFuY2VkKSBmdW5jdGlvbmFsaXR5IGlzIG1pc3NpbmcuCi0gKiBTbyB3ZSBkbyBub3QgZGVmaW5lIGl0ICh5ZXQpLgotI2RlZmluZSBfWE9QRU5fQ1VSU0VTIDEKLSAqLwotCi0vKiBUaGVzZSBhcmUgZGVmaW5lZCBvbmx5IGluIGN1cnNlcy5oLCBhbmQgYXJlIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGVzICovCi0jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTl9NQUpPUiA1Ci0jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTl9NSU5PUiA3Ci0jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCAyMDA4MTEwMgotCi0vKiBUaGlzIGlzIGRlZmluZWQgaW4gbW9yZSB0aGFuIG9uZSBuY3Vyc2VzIGhlYWRlciwgZm9yIGlkZW50aWZpY2F0aW9uICovCi0jdW5kZWYgIE5DVVJTRVNfVkVSU0lPTgotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT04gIjUuNyIKLQotLyoKLSAqIElkZW50aWZ5IHRoZSBtb3VzZSBlbmNvZGluZyB2ZXJzaW9uLgotICovCi0jZGVmaW5lIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiAxCi0KLS8qCi0gKiBEZWZpbml0aW9ucyB0byBmYWNpbGl0YXRlIERMTCdzLgotICovCi0jaW5jbHVkZSA8bmN1cnNlc19kbGwuaD4KLQotLyoKLSAqIFVzZXItZGVmaW5hYmxlIHR3ZWFrIHRvIGRpc2FibGUgdGhlIGluY2x1ZGUgb2YgPHN0ZGJvb2wuaD4uCi0gKi8KLSNpZm5kZWYgTkNVUlNFU19FTkFCTEVfU1REQk9PTF9ICi0jZGVmaW5lIE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSCAxCi0jZW5kaWYKLQotLyoKLSAqIE5DVVJTRVNfQVRUUl9UIGlzIHVzZWQgdG8gcXVpZXQgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBidWlsZGluZyBuY3Vyc2VzCi0gKiBjb25maWd1cmVkIHVzaW5nIC0tZGlzYWJsZS1tYWNyb3MuCi0gKi8KLSNpZmRlZiBOQ1VSU0VTX05PTUFDUk9TCi0jaWZuZGVmIE5DVVJTRVNfQVRUUl9UCi0jZGVmaW5lIE5DVVJTRVNfQVRUUl9UIGF0dHJfdAotI2VuZGlmCi0jZW5kaWYgLyogTkNVUlNFU19OT01BQ1JPUyAqLwotCi0jaWZuZGVmIE5DVVJTRVNfQVRUUl9UCi0jZGVmaW5lIE5DVVJTRVNfQVRUUl9UIGludAotI2VuZGlmCi0KLS8qCi0gKiBFeHBhbmRzIHRvICdjb25zdCcgaWYgbmN1cnNlcyBpcyBjb25maWd1cmVkIHVzaW5nIC0tZW5hYmxlLWNvbnN0LiAgTm90ZSB0aGF0Ci0gKiBkb2luZyBzbyBtYWtlcyBpdCBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgWC9PcGVuIEN1cnNlcy4KLSAqLwotI3VuZGVmICBOQ1VSU0VTX0NPTlNUCi0jZGVmaW5lIE5DVVJTRVNfQ09OU1QgLypub3RoaW5nKi8KLQotI3VuZGVmIE5DVVJTRVNfSU5MSU5FCi0jZGVmaW5lIE5DVVJTRVNfSU5MSU5FIGlubGluZQotCi0vKgotICogVGhlIGludGVybmFsIHR5cGUgdXNlZCBmb3IgY29sb3IgdmFsdWVzCi0gKi8KLSN1bmRlZglOQ1VSU0VTX0NPTE9SX1QKLSNkZWZpbmUJTkNVUlNFU19DT0xPUl9UIHNob3J0Ci0KLS8qCi0gKiBEZWZpbml0aW9uIHVzZWQgdG8gbWFrZSBXSU5ET1cgYW5kIHNpbWlsYXIgc3RydWN0cyBvcGFxdWUuCi0gKi8KLSNpZm5kZWYgTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgTkNVUlNFU19PUEFRVUUgMAotI2VuZGlmCi0KLS8qCi0gKiBUaGUgaW50ZXJuYWwgdHlwZSB1c2VkIGZvciB3aW5kb3cgZGltZW5zaW9ucy4KLSAqLwotI3VuZGVmCU5DVVJTRVNfU0laRV9UCi0jZGVmaW5lCU5DVVJTRVNfU0laRV9UIHNob3J0Ci0KLS8qCi0gKiBDb250cm9sIHdoZXRoZXIgdHBhcm0oKSBzdXBwb3J0cyB2YXJhcmdzIG9yIGZpeGVkLXBhcmFtZXRlciBsaXN0LgotICovCi0jdW5kZWYgTkNVUlNFU19UUEFSTV9WQVJBUkdTCi0jZGVmaW5lIE5DVVJTRVNfVFBBUk1fVkFSQVJHUyAxCi0KLS8qCi0gKiBOQ1VSU0VTX0NIX1QgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgbGlicmFyeSwgYnV0IG5vdCB1c2VkIG90aGVyd2lzZSBpbgotICogdGhpcyBoZWFkZXIgZmlsZSwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIHRoZSBub3JtYWwvd2lkZS1jaGFyYWN0ZXIgdmVyc2lvbnMKLSAqIG9mIHRoZSBoZWFkZXIgaW5jb21wYXRpYmxlLgotICovCi0jdW5kZWYJTkNVUlNFU19DSF9UCi0jZGVmaW5lIE5DVVJTRVNfQ0hfVCBjaHR5cGUKLQotI2lmIDAgJiYgZGVmaW5lZChfTFA2NCkKLXR5cGVkZWYgdW5zaWduZWQgY2h0eXBlOwotdHlwZWRlZiB1bnNpZ25lZCBtbWFza190OwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBjaHR5cGU7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1hc2tfdDsKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmN0cmwuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4JLyogd2UgbmVlZCB2YV9saXN0ICovCi0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotI2luY2x1ZGUgPHN0ZGRlZi5oPgkvKiB3ZSB3YW50IHdjaGFyX3QgKi8KLSNlbmRpZiAvKiBfWE9QRU5fU09VUkNFX0VYVEVOREVEICovCi0KLS8qIFgvT3BlbiBhbmQgU1ZyNCBzcGVjaWZ5IHRoYXQgY3Vyc2VzIGltcGxlbWVudHMgJ2Jvb2wnLiAgSG93ZXZlciwgQysrIG1heSBhbHNvCi0gKiBpbXBsZW1lbnQgaXQuICBJZiBzbywgd2UgbXVzdCB1c2UgdGhlIEMrKyBjb21waWxlcidzIHR5cGUgdG8gYXZvaWQgY29uZmxpY3QKLSAqIHdpdGggb3RoZXIgaW50ZXJmYWNlcy4KLSAqCi0gKiBBIGZ1cnRoZXIgY29tcGxpY2F0aW9uIGlzIHRoYXQgPHN0ZGJvb2wuaD4gbWF5IGRlY2xhcmUgJ2Jvb2wnIHRvIGJlIGEKLSAqIGRpZmZlcmVudCB0eXBlLCBzdWNoIGFzIGFuIGVudW0gd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBhdGlibGUgd2l0aAotICogQysrLiAgSWYgd2UgaGF2ZSA8c3RkYm9vbC5oPiwgbWFrZSAnYm9vbCcgYSBtYWNybywgc28gdXNlcnMgbWF5ICN1bmRlZiBpdC4KLSAqIE90aGVyd2lzZSwgbGV0IGl0IHJlbWFpbiBhIHR5cGVkZWYgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgI2RlZmluZSdzLgotICogSW4gZWl0aGVyIGNhc2UsIG1ha2UgYSB0eXBlZGVmIGZvciBOQ1VSU0VTX0JPT0wgd2hpY2ggY2FuIGJlIHVzZWQgaWYgbmVlZGVkCi0gKiBmcm9tIGVpdGhlciBDIG9yIEMrKy4KLSAqLwotCi0jdW5kZWYgVFJVRQotI2RlZmluZSBUUlVFICAgIDEKLQotI3VuZGVmIEZBTFNFCi0jZGVmaW5lIEZBTFNFICAgMAotCi10eXBlZGVmIHVuc2lnbmVkIE5DVVJTRVNfQk9PTDsKLQotI2lmIDAJLyogX19jcGx1c3BsdXMsIGV0Yy4gKi8KLQotLyogdXNlIHRoZSBDKysgY29tcGlsZXIncyBib29sIHR5cGUgKi8KLSNkZWZpbmUgTkNVUlNFU19CT09MIGJvb2wKLQotI2Vsc2UJCQkvKiBjODksIGM5OSwgZXRjLiAqLwotCi0jaWYgTkNVUlNFU19FTkFCTEVfU1REQk9PTF9ICi0jaW5jbHVkZSA8c3RkYm9vbC5oPgotLyogdXNlIHdoYXRldmVyIHRoZSBDIGNvbXBpbGVyIGRlY2lkZXMgYm9vbCByZWFsbHkgaXMgKi8KLSNkZWZpbmUgTkNVUlNFU19CT09MIGJvb2wKLSNlbHNlCi0vKiB0aGVyZSBpcyBubyBwcmVkZWZpbmVkIGJvb2wgLSB1c2Ugb3VyIG93biAqLwotI3VuZGVmIGJvb2wKLSNkZWZpbmUgYm9vbCBOQ1VSU0VTX0JPT0wKLSNlbmRpZgotCi0jZW5kaWYgLyogIV9fY3BsdXNwbHVzLCBldGMuICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZGVmaW5lIE5DVVJTRVNfQ0FTVCh0eXBlLHZhbHVlKSBzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkKLSNlbHNlCi0jZGVmaW5lIE5DVVJTRVNfQ0FTVCh0eXBlLHZhbHVlKSAodHlwZSkodmFsdWUpCi0jZW5kaWYKLQotLyoKLSAqIFgvT3BlbiBhdHRyaWJ1dGVzLiAgSW4gdGhlIG5jdXJzZXMgaW1wbGVtZW50YXRpb24sIHRoZXkgYXJlIGlkZW50aWNhbCB0byB0aGUKLSAqIEFfIGF0dHJpYnV0ZXMuCi0gKi8KLSNkZWZpbmUgV0FfQVRUUklCVVRFUwlBX0FUVFJJQlVURVMKLSNkZWZpbmUgV0FfTk9STUFMCUFfTk9STUFMCi0jZGVmaW5lIFdBX1NUQU5ET1VUCUFfU1RBTkRPVVQKLSNkZWZpbmUgV0FfVU5ERVJMSU5FCUFfVU5ERVJMSU5FCi0jZGVmaW5lIFdBX1JFVkVSU0UJQV9SRVZFUlNFCi0jZGVmaW5lIFdBX0JMSU5LCUFfQkxJTksKLSNkZWZpbmUgV0FfRElNCQlBX0RJTQotI2RlZmluZSBXQV9CT0xECQlBX0JPTEQKLSNkZWZpbmUgV0FfQUxUQ0hBUlNFVAlBX0FMVENIQVJTRVQKLSNkZWZpbmUgV0FfSU5WSVMJQV9JTlZJUwotI2RlZmluZSBXQV9QUk9URUNUCUFfUFJPVEVDVAotI2RlZmluZSBXQV9IT1JJWk9OVEFMCUFfSE9SSVpPTlRBTAotI2RlZmluZSBXQV9MRUZUCQlBX0xFRlQKLSNkZWZpbmUgV0FfTE9XCQlBX0xPVwotI2RlZmluZSBXQV9SSUdIVAlBX1JJR0hUCi0jZGVmaW5lIFdBX1RPUAkJQV9UT1AKLSNkZWZpbmUgV0FfVkVSVElDQUwJQV9WRVJUSUNBTAotCi0vKiBjb2xvcnMgKi8KLSNkZWZpbmUgQ09MT1JfQkxBQ0sJMAotI2RlZmluZSBDT0xPUl9SRUQJMQotI2RlZmluZSBDT0xPUl9HUkVFTgkyCi0jZGVmaW5lIENPTE9SX1lFTExPVwkzCi0jZGVmaW5lIENPTE9SX0JMVUUJNAotI2RlZmluZSBDT0xPUl9NQUdFTlRBCTUKLSNkZWZpbmUgQ09MT1JfQ1lBTgk2Ci0jZGVmaW5lIENPTE9SX1dISVRFCTcKLQotLyogbGluZSBncmFwaGljcyAqLwotCi0jaWYgMCB8fCAwCi1OQ1VSU0VTX1dSQVBQRURfVkFSKGNodHlwZSosIGFjc19tYXApOwotI2RlZmluZSBhY3NfbWFwIChfbmNfYWNzX21hcCgpKQotI2Vsc2UKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2h0eXBlKSBhY3NfbWFwW107Ci0jZW5kaWYKLQotI2RlZmluZSBOQ1VSU0VTX0FDUyhjKQkoYWNzX21hcFtOQ1VSU0VTX0NBU1QodW5zaWduZWQgY2hhcixjKV0pCi0KLS8qIFZUMTAwIHN5bWJvbHMgYmVnaW4gaGVyZSAqLwotI2RlZmluZSBBQ1NfVUxDT1JORVIJTkNVUlNFU19BQ1MoJ2wnKSAvKiB1cHBlciBsZWZ0IGNvcm5lciAqLwotI2RlZmluZSBBQ1NfTExDT1JORVIJTkNVUlNFU19BQ1MoJ20nKSAvKiBsb3dlciBsZWZ0IGNvcm5lciAqLwotI2RlZmluZSBBQ1NfVVJDT1JORVIJTkNVUlNFU19BQ1MoJ2snKSAvKiB1cHBlciByaWdodCBjb3JuZXIgKi8KLSNkZWZpbmUgQUNTX0xSQ09STkVSCU5DVVJTRVNfQUNTKCdqJykgLyogbG93ZXIgcmlnaHQgY29ybmVyICovCi0jZGVmaW5lIEFDU19MVEVFCU5DVVJTRVNfQUNTKCd0JykgLyogdGVlIHBvaW50aW5nIHJpZ2h0ICovCi0jZGVmaW5lIEFDU19SVEVFCU5DVVJTRVNfQUNTKCd1JykgLyogdGVlIHBvaW50aW5nIGxlZnQgKi8KLSNkZWZpbmUgQUNTX0JURUUJTkNVUlNFU19BQ1MoJ3YnKSAvKiB0ZWUgcG9pbnRpbmcgdXAgKi8KLSNkZWZpbmUgQUNTX1RURUUJTkNVUlNFU19BQ1MoJ3cnKSAvKiB0ZWUgcG9pbnRpbmcgZG93biAqLwotI2RlZmluZSBBQ1NfSExJTkUJTkNVUlNFU19BQ1MoJ3EnKSAvKiBob3Jpem9udGFsIGxpbmUgKi8KLSNkZWZpbmUgQUNTX1ZMSU5FCU5DVVJTRVNfQUNTKCd4JykgLyogdmVydGljYWwgbGluZSAqLwotI2RlZmluZSBBQ1NfUExVUwlOQ1VSU0VTX0FDUygnbicpIC8qIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyICovCi0jZGVmaW5lIEFDU19TMQkJTkNVUlNFU19BQ1MoJ28nKSAvKiBzY2FuIGxpbmUgMSAqLwotI2RlZmluZSBBQ1NfUzkJCU5DVVJTRVNfQUNTKCdzJykgLyogc2NhbiBsaW5lIDkgKi8KLSNkZWZpbmUgQUNTX0RJQU1PTkQJTkNVUlNFU19BQ1MoJ2AnKSAvKiBkaWFtb25kICovCi0jZGVmaW5lIEFDU19DS0JPQVJECU5DVVJTRVNfQUNTKCdhJykgLyogY2hlY2tlciBib2FyZCAoc3RpcHBsZSkgKi8KLSNkZWZpbmUgQUNTX0RFR1JFRQlOQ1VSU0VTX0FDUygnZicpIC8qIGRlZ3JlZSBzeW1ib2wgKi8KLSNkZWZpbmUgQUNTX1BMTUlOVVMJTkNVUlNFU19BQ1MoJ2cnKSAvKiBwbHVzL21pbnVzICovCi0jZGVmaW5lIEFDU19CVUxMRVQJTkNVUlNFU19BQ1MoJ34nKSAvKiBidWxsZXQgKi8KLS8qIFRlbGV0eXBlIDU0MTB2MSBzeW1ib2xzIGJlZ2luIGhlcmUgKi8KLSNkZWZpbmUgQUNTX0xBUlJPVwlOQ1VSU0VTX0FDUygnLCcpIC8qIGFycm93IHBvaW50aW5nIGxlZnQgKi8KLSNkZWZpbmUgQUNTX1JBUlJPVwlOQ1VSU0VTX0FDUygnKycpIC8qIGFycm93IHBvaW50aW5nIHJpZ2h0ICovCi0jZGVmaW5lIEFDU19EQVJST1cJTkNVUlNFU19BQ1MoJy4nKSAvKiBhcnJvdyBwb2ludGluZyBkb3duICovCi0jZGVmaW5lIEFDU19VQVJST1cJTkNVUlNFU19BQ1MoJy0nKSAvKiBhcnJvdyBwb2ludGluZyB1cCAqLwotI2RlZmluZSBBQ1NfQk9BUkQJTkNVUlNFU19BQ1MoJ2gnKSAvKiBib2FyZCBvZiBzcXVhcmVzICovCi0jZGVmaW5lIEFDU19MQU5URVJOCU5DVVJTRVNfQUNTKCdpJykgLyogbGFudGVybiBzeW1ib2wgKi8KLSNkZWZpbmUgQUNTX0JMT0NLCU5DVVJTRVNfQUNTKCcwJykgLyogc29saWQgc3F1YXJlIGJsb2NrICovCi0vKgotICogVGhlc2UgYXJlbid0IGRvY3VtZW50ZWQsIGJ1dCBhIGxvdCBvZiBTeXN0ZW0gVnMgaGF2ZSB0aGVtIGFueXdheQotICogKHlvdSBjYW4gc3BvdCBwcHJyeXl6ent7fHx9fSBpbiBhIGxvdCBvZiBBVCZUIHRlcm1pbmZvIHN0cmluZ3MpLgotICogVGhlIEFDU19uYW1lcyBtYXkgbm90IG1hdGNoIEFUJlQncywgb3VyIHNvdXJjZSBkaWRuJ3Qga25vdyB0aGVtLgotICovCi0jZGVmaW5lIEFDU19TMwkJTkNVUlNFU19BQ1MoJ3AnKSAvKiBzY2FuIGxpbmUgMyAqLwotI2RlZmluZSBBQ1NfUzcJCU5DVVJTRVNfQUNTKCdyJykgLyogc2NhbiBsaW5lIDcgKi8KLSNkZWZpbmUgQUNTX0xFUVVBTAlOQ1VSU0VTX0FDUygneScpIC8qIGxlc3MvZXF1YWwgKi8KLSNkZWZpbmUgQUNTX0dFUVVBTAlOQ1VSU0VTX0FDUygneicpIC8qIGdyZWF0ZXIvZXF1YWwgKi8KLSNkZWZpbmUgQUNTX1BJCQlOQ1VSU0VTX0FDUygneycpIC8qIFBpICovCi0jZGVmaW5lIEFDU19ORVFVQUwJTkNVUlNFU19BQ1MoJ3wnKSAvKiBub3QgZXF1YWwgKi8KLSNkZWZpbmUgQUNTX1NURVJMSU5HCU5DVVJTRVNfQUNTKCd9JykgLyogVUsgcG91bmQgc2lnbiAqLwotCi0vKgotICogTGluZSBkcmF3aW5nIEFDUyBuYW1lcyBhcmUgb2YgdGhlIGZvcm0gQUNTX3RyYmwsIHdoZXJlIHQgaXMgdGhlIHRvcCwgcgotICogaXMgdGhlIHJpZ2h0LCBiIGlzIHRoZSBib3R0b20sIGFuZCBsIGlzIHRoZSBsZWZ0LiAgdCwgciwgYiwgYW5kIGwgbWlnaHQKLSAqIGJlIEIgKGJsYW5rKSwgUyAoc2luZ2xlKSwgRCAoZG91YmxlKSwgb3IgVCAodGhpY2spLiAgVGhlIHN1YnNldCBkZWZpbmVkCi0gKiBoZXJlIG9ubHkgdXNlcyBCIGFuZCBTLgotICovCi0jZGVmaW5lIEFDU19CU1NCCUFDU19VTENPUk5FUgotI2RlZmluZSBBQ1NfU1NCQglBQ1NfTExDT1JORVIKLSNkZWZpbmUgQUNTX0JCU1MJQUNTX1VSQ09STkVSCi0jZGVmaW5lIEFDU19TQkJTCUFDU19MUkNPUk5FUgotI2RlZmluZSBBQ1NfU0JTUwlBQ1NfUlRFRQotI2RlZmluZSBBQ1NfU1NTQglBQ1NfTFRFRQotI2RlZmluZSBBQ1NfU1NCUwlBQ1NfQlRFRQotI2RlZmluZSBBQ1NfQlNTUwlBQ1NfVFRFRQotI2RlZmluZSBBQ1NfQlNCUwlBQ1NfSExJTkUKLSNkZWZpbmUgQUNTX1NCU0IJQUNTX1ZMSU5FCi0jZGVmaW5lIEFDU19TU1NTCUFDU19QTFVTCi0KLSN1bmRlZglFUlIKLSNkZWZpbmUgRVJSICAgICAoLTEpCi0KLSN1bmRlZglPSwotI2RlZmluZSBPSyAgICAgICgwKQotCi0vKiB2YWx1ZXMgZm9yIHRoZSBfZmxhZ3MgbWVtYmVyICovCi0jZGVmaW5lIF9TVUJXSU4gICAgICAgICAweDAxCS8qIGlzIHRoaXMgYSBzdWItd2luZG93PyAqLwotI2RlZmluZSBfRU5ETElORSAgICAgICAgMHgwMgkvKiBpcyB0aGUgd2luZG93IGZsdXNoIHJpZ2h0PyAqLwotI2RlZmluZSBfRlVMTFdJTiAgICAgICAgMHgwNAkvKiBpcyB0aGUgd2luZG93IGZ1bGwtc2NyZWVuPyAqLwotI2RlZmluZSBfU0NST0xMV0lOICAgICAgMHgwOAkvKiBib3R0b20gZWRnZSBpcyBhdCBzY3JlZW4gYm90dG9tPyAqLwotI2RlZmluZSBfSVNQQUQJICAgICAgICAweDEwCS8qIGlzIHRoaXMgd2luZG93IGEgcGFkPyAqLwotI2RlZmluZSBfSEFTTU9WRUQgICAgICAgMHgyMAkvKiBoYXMgY3Vyc29yIG1vdmVkIHNpbmNlIGxhc3QgcmVmcmVzaD8gKi8KLSNkZWZpbmUgX1dSQVBQRUQgICAgICAgIDB4NDAJLyogY3Vyc29yIHdhcyBqdXN0IHdyYXBwcGVkICovCi0KLS8qCi0gKiB0aGlzIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGZpcnN0Y2hhciBhbmQgbGFzdGNoYXIgZmllbGRzIHRvIG1hcmsKLSAqIHVuY2hhbmdlZCBsaW5lcwotICovCi0jZGVmaW5lIF9OT0NIQU5HRSAgICAgICAtMQotCi0vKgotICogdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBvbGRpbmRleCBmaWVsZCB0byBtYXJrIGxpbmVzIGNyZWF0ZWQgYnkgaW5zZXJ0aW9ucwotICogYW5kIHNjcm9sbHMuCi0gKi8KLSNkZWZpbmUgX05FV0lOREVYCS0xCi0KLXR5cGVkZWYgc3RydWN0IHNjcmVlbiAgU0NSRUVOOwotdHlwZWRlZiBzdHJ1Y3QgX3dpbl9zdCBXSU5ET1c7Ci0KLXR5cGVkZWYJY2h0eXBlCWF0dHJfdDsJCS8qIC4uLm11c3QgYmUgYXQgbGVhc3QgYXMgd2lkZSBhcyBjaHR5cGUgKi8KLQotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKLQotI2lmIDAKLSNpZmRlZiBtYmxlbgkJCS8qIGxpYnV0ZjguaCBkZWZpbmVzIGl0IHcvbyB1bmRlZmluaW5nIGZpcnN0ICovCi0jdW5kZWYgbWJsZW4KLSNlbmRpZgotI2luY2x1ZGUgPGxpYnV0ZjguaD4KLSNlbmRpZgotCi0jaWYgMAotI2luY2x1ZGUgPHdjaGFyLmg+CQkvKiAuLi50byBnZXQgbWJzdGF0ZV90LCBldGMuICovCi0jZW5kaWYKLQotI2lmIDAKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgd2NoYXJfdDsKLSNlbmRpZgotCi0jaWYgMAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwotI2VuZGlmCi0KLSNkZWZpbmUgQ0NIQVJXX01BWAk1Ci10eXBlZGVmIHN0cnVjdAotewotICAgIGF0dHJfdAlhdHRyOwotICAgIHdjaGFyX3QJY2hhcnNbQ0NIQVJXX01BWF07Ci0jaWYgMAotI3VuZGVmIE5DVVJTRVNfRVhUX0NPTE9SUwotI2RlZmluZSBOQ1VSU0VTX0VYVF9DT0xPUlMgMjAwODExMDIKLSAgICBpbnQJCWV4dF9jb2xvcjsJLyogY29sb3IgcGFpciwgbXVzdCBiZSBtb3JlIHRoYW4gMTYtYml0cyAqLwotI2VuZGlmCi19Ci1jY2hhcl90OwotCi0jZW5kaWYgLyogX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAqLwotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi1zdHJ1Y3QgbGRhdDsKLQotc3RydWN0IF93aW5fc3QKLXsKLQlOQ1VSU0VTX1NJWkVfVCBfY3VyeSwgX2N1cng7IC8qIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uICovCi0KLQkvKiB3aW5kb3cgbG9jYXRpb24gYW5kIHNpemUgKi8KLQlOQ1VSU0VTX1NJWkVfVCBfbWF4eSwgX21heHg7IC8qIG1heGltdW1zIG9mIHggYW5kIHksIE5PVCB3aW5kb3cgc2l6ZSAqLwotCU5DVVJTRVNfU0laRV9UIF9iZWd5LCBfYmVneDsgLyogc2NyZWVuIGNvb3JkcyBvZiB1cHBlci1sZWZ0LWhhbmQgY29ybmVyICovCi0KLQlzaG9ydCAgIF9mbGFnczsJCS8qIHdpbmRvdyBzdGF0ZSBmbGFncyAqLwotCi0JLyogYXR0cmlidXRlIHRyYWNraW5nICovCi0JYXR0cl90ICBfYXR0cnM7CQkvKiBjdXJyZW50IGF0dHJpYnV0ZSBmb3Igbm9uLXNwYWNlIGNoYXJhY3RlciAqLwotCWNodHlwZSAgX2JrZ2Q7CQkvKiBjdXJyZW50IGJhY2tncm91bmQgY2hhci9hdHRyaWJ1dGUgcGFpciAqLwotCi0JLyogb3B0aW9uIHZhbHVlcyBzZXQgYnkgdXNlciAqLwotCWJvb2wJX25vdGltZW91dDsJLyogbm8gdGltZSBvdXQgb24gZnVuY3Rpb24ta2V5IGVudHJ5PyAqLwotCWJvb2wJX2NsZWFyOwkJLyogY29uc2lkZXIgYWxsIGRhdGEgaW4gdGhlIHdpbmRvdyBpbnZhbGlkPyAqLwotCWJvb2wJX2xlYXZlb2s7CS8qIE9LIHRvIG5vdCByZXNldCBjdXJzb3Igb24gZXhpdD8gKi8KLQlib29sCV9zY3JvbGw7CS8qIE9LIHRvIHNjcm9sbCB0aGlzIHdpbmRvdz8gKi8KLQlib29sCV9pZGxvazsJCS8qIE9LIHRvIHVzZSBpbnNlcnQvZGVsZXRlIGxpbmU/ICovCi0JYm9vbAlfaWRjb2s7CQkvKiBPSyB0byB1c2UgaW5zZXJ0L2RlbGV0ZSBjaGFyPyAqLwotCWJvb2wJX2ltbWVkOwkJLyogd2luZG93IGluIGltbWVkIG1vZGU/IChub3QgeWV0IHVzZWQpICovCi0JYm9vbAlfc3luYzsJCS8qIHdpbmRvdyBpbiBzeW5jIG1vZGU/ICovCi0JYm9vbAlfdXNlX2tleXBhZDsJLyogcHJvY2VzcyBmdW5jdGlvbiBrZXlzIGludG8gS0VZXyBzeW1ib2xzPyAqLwotCWludAlfZGVsYXk7CQkvKiAwID0gbm9kZWxheSwgPDAgPSBibG9ja2luZywgPjAgPSBkZWxheSAqLwotCi0Jc3RydWN0IGxkYXQgKl9saW5lOwkvKiB0aGUgYWN0dWFsIGxpbmUgZGF0YSAqLwotCi0JLyogZ2xvYmFsIHNjcmVlbiBzdGF0ZSAqLwotCU5DVVJTRVNfU0laRV9UIF9yZWd0b3A7CS8qIHRvcCBsaW5lIG9mIHNjcm9sbGluZyByZWdpb24gKi8KLQlOQ1VSU0VTX1NJWkVfVCBfcmVnYm90dG9tOyAvKiBib3R0b20gbGluZSBvZiBzY3JvbGxpbmcgcmVnaW9uICovCi0KLQkvKiB0aGVzZSBhcmUgdXNlZCBvbmx5IGlmIHRoaXMgaXMgYSBzdWItd2luZG93ICovCi0JaW50CV9wYXJ4OwkJLyogeCBjb29yZGluYXRlIG9mIHRoaXMgd2luZG93IGluIHBhcmVudCAqLwotCWludAlfcGFyeTsJCS8qIHkgY29vcmRpbmF0ZSBvZiB0aGlzIHdpbmRvdyBpbiBwYXJlbnQgKi8KLQlXSU5ET1cJKl9wYXJlbnQ7CS8qIHBvaW50ZXIgdG8gcGFyZW50IGlmIGEgc3ViLXdpbmRvdyAqLwotCi0JLyogdGhlc2UgYXJlIHVzZWQgb25seSBpZiB0aGlzIGlzIGEgcGFkICovCi0Jc3RydWN0IHBkYXQKLQl7Ci0JICAgIE5DVVJTRVNfU0laRV9UIF9wYWRfeSwgICAgICBfcGFkX3g7Ci0JICAgIE5DVVJTRVNfU0laRV9UIF9wYWRfdG9wLCAgICBfcGFkX2xlZnQ7Ci0JICAgIE5DVVJTRVNfU0laRV9UIF9wYWRfYm90dG9tLCBfcGFkX3JpZ2h0OwotCX0gX3BhZDsKLQotCU5DVVJTRVNfU0laRV9UIF95b2Zmc2V0OyAvKiByZWFsIGJlZ3kgaXMgX2JlZ3kgKyBfeW9mZnNldCAqLwotCi0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotCWNjaGFyX3QgIF9ia2dybmQ7CS8qIGN1cnJlbnQgYmFja2dyb3VuZCBjaGFyL2F0dHJpYnV0ZSBwYWlyICovCi0jaWYgMAotCWludAlfY29sb3I7CQkvKiBjdXJyZW50IGNvbG9yLXBhaXIgZm9yIG5vbi1zcGFjZSBjaGFyYWN0ZXIgKi8KLSNlbmRpZgotI2VuZGlmCi19OwotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLS8qCi0gKiBUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byBzdXBwb3J0IGV2ZW50cy4uLgotICovCi0jaWYgMQotI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwotI2lmICFkZWZpbmVkKF9fQkVPU19fKSB8fCBkZWZpbmVkKF9fSEFJS1VfXykKLSAgIC8qIEZpeCBfbmNfdGltZWRfd2FpdCgpIG9uIEJFT1MuLi4gKi8KLSMgIGRlZmluZSBOQ1VSU0VTX0VWRU5UX1ZFUlNJT04JMQotI2VuZGlmCS8qICFkZWZpbmVkKF9fQkVPU19fKSAqLwotCi0vKgotICogQml0cyB0byBzZXQgaW4gX25jX2V2ZW50LmRhdGEuZmxhZ3MKLSAqLwotIyAgZGVmaW5lIF9OQ19FVkVOVF9USU1FT1VUX01TRUMJMQotIyAgZGVmaW5lIF9OQ19FVkVOVF9GSUxFCQkyCi0jICBkZWZpbmUgX05DX0VWRU5UX0ZJTEVfUkVBREFCTEUJMgotIyAgaWYgMAkJCQkJLyogTm90IHN1cHBvcnRlZCB5ZXQuLi4gKi8KLSMgICAgZGVmaW5lIF9OQ19FVkVOVF9GSUxFX1dSSVRBQkxFCTQKLSMgICAgZGVmaW5lIF9OQ19FVkVOVF9GSUxFX0VYQ0VQVElPTgk4Ci0jICBlbmRpZgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIGludCB0eXBlOwotICAgIHVuaW9uCi0gICAgewotCWxvbmcgdGltZW91dF9tc2VjOwkvKiBfTkNfRVZFTlRfVElNRU9VVF9NU0VDICovCi0Jc3RydWN0Ci0JewotCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Ci0JICAgIGludCBmZDsKLQkgICAgdW5zaWduZWQgaW50IHJlc3VsdDsKLQl9IGZldjsJCQkJLyogX05DX0VWRU5UX0ZJTEUgKi8KLSAgICB9IGRhdGE7Ci19IF9uY19ldmVudDsKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBpbnQgY291bnQ7Ci0gICAgaW50IHJlc3VsdF9mbGFnczsJLyogX05DX0VWRU5UX1RJTUVPVVRfTVNFQyBvciBfTkNfRVZFTlRfRklMRV9SRUFEQUJMRSAqLwotICAgIF9uY19ldmVudCAqZXZlbnRzWzFdOwotfSBfbmNfZXZlbnRsaXN0OwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0Y2hfZXZlbnRzKFdJTkRPVyAqLCBfbmNfZXZlbnRsaXN0ICopOwkvKiBleHBlcmltZW50YWwgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRuc3RyX2V2ZW50cyhXSU5ET1cgKixjaGFyICosaW50LF9uY19ldmVudGxpc3QgKik7LyogZXhwZXJpbWVudGFsICovCi0KLSNlbmRpZiAvKiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMgKi8KLSNlbmRpZiAvKiBOQ1VSU0VTX0VYVF9GVU5DUyAqLwotCi0vKgotICogR0NDIChhbmQgc29tZSBvdGhlciBjb21waWxlcnMpIGRlZmluZSAnX19hdHRyaWJ1dGVfXyc7IHdlJ3JlIHVzaW5nIHRoaXMKLSAqIG1hY3JvIHRvIGFsZXJ0IHRoZSBjb21waWxlciB0byBmbGFnIGluY29uc2lzdGVuY2llcyBpbiBwcmludGYvc2NhbmYtbGlrZQotICogZnVuY3Rpb24gY2FsbHMuICBKdXN0IGluIGNhc2UgJ19fYXR0cmlidXRlX18nIGlzbid0IGRlZmluZWQsIG1ha2UgYSBkdW1teS4KLSAqIE9sZCB2ZXJzaW9ucyBvZiBHKysgZG8gbm90IGFjY2VwdCBpdCBhbnl3YXksIGF0IGxlYXN0IG5vdCBjb25zaXN0ZW50bHkgd2l0aAotICogR0NDLgotICovCi0jaWYgIShkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fR05VR19fKSB8fCBkZWZpbmVkKF9fYXR0cmlidXRlX18pKQotI2RlZmluZSBfX2F0dHJpYnV0ZV9fKHApIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi0vKgotICogV2UgY2Fubm90IGRlZmluZSB0aGVzZSBpbiBuY3Vyc2VzX2NmZy5oLCBzaW5jZSB0aGV5IHJlcXVpcmUgcGFyYW1ldGVycyB0byBiZQotICogcGFzc2VkICh0aGF0IGlzIG5vbi1wb3J0YWJsZSkuICBJZiB5b3UgaGFwcGVuIHRvIGJlIHVzaW5nIGdjYyB3aXRoIHdhcm5pbmdzCi0gKiBlbmFibGVkLCBkZWZpbmUKLSAqCUdDQ19QUklOVEYKLSAqCUdDQ19TQ0FORgotICogdG8gaW1wcm92ZSBjaGVja2luZyBvZiBjYWxscyB0byBwcmludHcoKSwgZXRjLgotICovCi0jaWZuZGVmIEdDQ19QUklOVEZMSUtFCi0jaWYgZGVmaW5lZChHQ0NfUFJJTlRGKSAmJiAhZGVmaW5lZChwcmludGYpCi0jZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsZm10LHZhcikpKQotI2Vsc2UKLSNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgLypub3RoaW5nKi8KLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgR0NDX1NDQU5GTElLRQotI2lmIGRlZmluZWQoR0NDX1NDQU5GKSAmJiAhZGVmaW5lZChzY2FuZikKLSNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSkKLSNlbHNlCi0jZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIC8qbm90aGluZyovCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmCUdDQ19OT1JFVFVSTgotI2RlZmluZQlHQ0NfTk9SRVRVUk4gLyogbm90aGluZyAqLwotI2VuZGlmCi0KLSNpZm5kZWYJR0NDX1VOVVNFRAotI2RlZmluZQlHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi0vKgotICogRnVuY3Rpb24gcHJvdG90eXBlcy4gIFRoaXMgaXMgdGhlIGNvbXBsZXRlIFgvT3BlbiBDdXJzZXMgbGlzdCBvZiByZXF1aXJlZAotICogZnVuY3Rpb25zLiAgVGhvc2UgbWFya2VkIGBnZW5lcmF0ZWQnIHdpbGwgaGF2ZSBzb3VyY2VzIGdlbmVyYXRlZCBmcm9tIHRoZQotICogbWFjcm8gZGVmaW5pdGlvbnMgbGF0ZXIgaW4gdGhpcyBmaWxlLCBpbiBvcmRlciB0byBzYXRpc2Z5IFhQRzQuMgotICogcmVxdWlyZW1lbnRzLgotICovCi0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNoIChjb25zdCBjaHR5cGUpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYWRkY2huc3RyIChjb25zdCBjaHR5cGUgKiwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYWRkY2hzdHIgKGNvbnN0IGNodHlwZSAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZG5zdHIgKGNvbnN0IGNoYXIgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZHN0ciAoY29uc3QgY2hhciAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJvZmYgKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJvbiAoTkNVUlNFU19BVFRSX1QpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cnNldCAoTkNVUlNFU19BVFRSX1QpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9nZXQgKGF0dHJfdCAqLCBzaG9ydCAqLCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfb2ZmIChhdHRyX3QsIHZvaWQgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX29uIChhdHRyX3QsIHZvaWQgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX3NldCAoYXR0cl90LCBzaG9ydCwgdm9pZCAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYmF1ZHJhdGUgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYmVlcCAgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYmtnZCAoY2h0eXBlKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgYmtnZHNldCAoY2h0eXBlKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBib3JkZXIgKGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJveCAoV0lORE9XICosIGNodHlwZSwgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGNhbl9jaGFuZ2VfY29sb3IgKHZvaWQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjYnJlYWsgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2hnYXQgKGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjbGVhciAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xlYXJvayAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNscnRvYm90ICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjbHJ0b2VvbCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY29sb3JfY29udGVudCAoc2hvcnQsc2hvcnQqLHNob3J0KixzaG9ydCopOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY29sb3Jfc2V0IChzaG9ydCx2b2lkKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBDT0xPUl9QQUlSIChpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvcHl3aW4gKGNvbnN0IFdJTkRPVyosV0lORE9XKixpbnQsaW50LGludCxpbnQsaW50LGludCxpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY3Vyc19zZXQgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWZfcHJvZ19tb2RlICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVmX3NoZWxsX21vZGUgKHZvaWQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWxheV9vdXRwdXQgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWxjaCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIGRlbHNjcmVlbiAoU0NSRUVOICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWx3aW4gKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRlbGV0ZWxuICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIGRlcndpbiAoV0lORE9XICosaW50LGludCxpbnQsaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRvdXBkYXRlICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgZHVwd2luIChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGVjaG8gKHZvaWQpOwkJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGVjaG9jaGFyIChjb25zdCBjaHR5cGUpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZXJhc2UgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGVuZHdpbiAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhcikgZXJhc2VjaGFyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBmaWx0ZXIgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZmxhc2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZmx1c2hpbnAgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgZ2V0YmtnZCAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y2ggKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGdldG5zdHIgKGNoYXIgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGdldHN0ciAoY2hhciAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIGdldHdpbiAoRklMRSAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaGFsZmRlbGF5IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGhhc19jb2xvcnMgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGhhc19pYyAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaGFzX2lsICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhsaW5lIChjaHR5cGUsIGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIGlkY29rIChXSU5ET1cgKiwgYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGlkbG9rIChXSU5ET1cgKiwgYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBpbW1lZG9rIChXSU5ET1cgKiwgYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIGluY2ggKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluY2huc3RyIChjaHR5cGUgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluY2hzdHIgKGNodHlwZSAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIGluaXRzY3IgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5pdF9jb2xvciAoc2hvcnQsc2hvcnQsc2hvcnQsc2hvcnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5pdF9wYWlyIChzaG9ydCxzaG9ydCxzaG9ydCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5uc3RyIChjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbnNjaCAoY2h0eXBlKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbnNkZWxsbiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbnNlcnRsbiAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zbnN0ciAoY29uc3QgY2hhciAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zc3RyIChjb25zdCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zdHIgKGNoYXIgKik7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW50cmZsdXNoIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzZW5kd2luICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19saW5ldG91Y2hlZCAoV0lORE9XICosaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfd2ludG91Y2hlZCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIGtleW5hbWUgKGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkga2V5cGFkIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIpIGtpbGxjaGFyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGxlYXZlb2sgKFdJTkRPVyAqLGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBsb25nbmFtZSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtZXRhIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbW92ZSAoaW50LCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkY2ggKGludCwgaW50LCBjb25zdCBjaHR5cGUpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNobnN0ciAoaW50LCBpbnQsIGNvbnN0IGNodHlwZSAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkY2hzdHIgKGludCwgaW50LCBjb25zdCBjaHR5cGUgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRuc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZjaGdhdCAoaW50LCBpbnQsIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmN1ciAoaW50LGludCxpbnQsaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZkZWxjaCAoaW50LCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12ZGVyd2luIChXSU5ET1cgKiwgaW50LCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12Z2V0Y2ggKGludCwgaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmdldG5zdHIgKGludCwgaW50LCBjaGFyICosIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12Z2V0c3RyIChpbnQsIGludCwgY2hhciAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aGxpbmUgKGludCwgaW50LCBjaHR5cGUsIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIG12aW5jaCAoaW50LCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZpbmNobnN0ciAoaW50LCBpbnQsIGNodHlwZSAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5jaHN0ciAoaW50LCBpbnQsIGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZpbm5zdHIgKGludCwgaW50LCBjaGFyICosIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zY2ggKGludCwgaW50LCBjaHR5cGUpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZpbnNuc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zc3RyIChpbnQsIGludCwgY29uc3QgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZpbnN0ciAoaW50LCBpbnQsIGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnByaW50dyAoaW50LGludCwgY29uc3QgY2hhciAqLC4uLikJCS8qIGltcGxlbWVudGVkICovCi0JCUdDQ19QUklOVEZMSUtFKDMsNCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnNjYW53IChpbnQsaW50LCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwuLi4pCS8qIGltcGxlbWVudGVkICovCi0JCUdDQ19TQ0FORkxJS0UoMyw0KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12dmxpbmUgKGludCwgaW50LCBjaHR5cGUsIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNoIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNodHlwZSk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3YWRkY2huc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNodHlwZSAqLCBpbnQpOy8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3YWRkY2hzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2h0eXBlICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZG5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZHN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2NoZ2F0IChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2RlbGNoIChXSU5ET1cgKiwgaW50LCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndnZXRjaCAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0bnN0ciAoV0lORE9XICosIGludCwgaW50LCBjaGFyICosIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0c3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aGxpbmUgKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luIChXSU5ET1cgKixpbnQsaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgbXZ3aW5jaCAoV0lORE9XICosIGludCwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luY2huc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luY2hzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbm5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbnNjaCAoV0lORE9XICosIGludCwgaW50LCBjaHR5cGUpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbnNuc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbnNzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3cHJpbnR3IChXSU5ET1cqLGludCxpbnQsIGNvbnN0IGNoYXIgKiwuLi4pCS8qIGltcGxlbWVudGVkICovCi0JCUdDQ19QUklOVEZMSUtFKDQsNSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndzY2FudyAoV0lORE9XICosaW50LGludCwgTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDQsNSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnd2bGluZSAoV0lORE9XICosaW50LCBpbnQsIGNodHlwZSwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBuYXBtcyAoaW50KTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIG5ld3BhZCAoaW50LGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoU0NSRUVOICopIG5ld3Rlcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLEZJTEUgKixGSUxFICopOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBuZXd3aW4gKGludCxpbnQsaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5sICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub2NicmVhayAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub2RlbGF5IChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9lY2hvICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vbmwgKHZvaWQpOwkJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBub3FpZmx1c2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9yYXcgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm90aW1lb3V0IChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgb3ZlcmxheSAoY29uc3QgV0lORE9XKixXSU5ET1cgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgb3ZlcndyaXRlIChjb25zdCBXSU5ET1cqLFdJTkRPVyAqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwYWlyX2NvbnRlbnQgKHNob3J0LHNob3J0KixzaG9ydCopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIFBBSVJfTlVNQkVSIChpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHBlY2hvY2hhciAoV0lORE9XICosIGNvbnN0IGNodHlwZSk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcG5vdXRyZWZyZXNoIChXSU5ET1cqLGludCxpbnQsaW50LGludCxpbnQsaW50KTsvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcHJlZnJlc2ggKFdJTkRPVyAqLGludCxpbnQsaW50LGludCxpbnQsaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHByaW50dyAoY29uc3QgY2hhciAqLC4uLikJCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSgxLDIpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcHV0d2luIChXSU5ET1cgKiwgRklMRSAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHFpZmx1c2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmF3ICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZWRyYXd3aW4gKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlZnJlc2ggKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2V0dHkgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzZXRfcHJvZ19tb2RlICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzZXRfc2hlbGxfbW9kZSAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJpcG9mZmxpbmUgKGludCwgaW50ICgqKShXSU5ET1cgKiwgaW50KSk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzYXZldHR5ICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjYW53IChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwuLi4pCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDEsMik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JfZHVtcCAoY29uc3QgY2hhciAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2NyX2luaXQgKGNvbnN0IGNoYXIgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcmwgKGludCk7CQkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcm9sbCAoV0lORE9XICopOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcm9sbG9rIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2NyX3Jlc3RvcmUgKGNvbnN0IGNoYXIgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcl9zZXQgKGNvbnN0IGNoYXIgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldHNjcnJlZyAoaW50LGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKSBzZXRfdGVybSAoU0NSRUVOICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cm9mZiAoY29uc3QgY2h0eXBlKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2F0dHJfb2ZmIChjb25zdCBhdHRyX3QsIHZvaWQgKik7CQkvKiBnZW5lcmF0ZWQ6V0lERUMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyb24gKGNvbnN0IGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyX29uIChhdHRyX3Qsdm9pZCopOwkJCS8qIGdlbmVyYXRlZDpXSURFQyAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2F0dHJzZXQgKGNvbnN0IGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChhdHRyX3QpIHNsa19hdHRyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyX3NldCAoY29uc3QgYXR0cl90LHNob3J0LHZvaWQqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19jbGVhciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfY29sb3IgKHNob3J0KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19pbml0IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgc2xrX2xhYmVsIChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX25vdXRyZWZyZXNoICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX3JlZnJlc2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX3Jlc3RvcmUgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX3NldCAoaW50LGNvbnN0IGNoYXIgKixpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa190b3VjaCAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzdGFuZG91dCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc3RhbmRlbmQgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHN0YXJ0X2NvbG9yICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgc3VicGFkIChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgc3Vid2luIChXSU5ET1cgKiwgaW50LCBpbnQsIGludCwgaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHN5bmNvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSB0ZXJtYXR0cnMgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGVybW5hbWUgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHRpbWVvdXQgKGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdG91Y2hsaW5lIChXSU5ET1cgKiwgaW50LCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0b3VjaHdpbiAoV0lORE9XICopOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHR5cGVhaGVhZCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVuZ2V0Y2ggKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1bnRvdWNod2luIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgdXNlX2VudiAoYm9vbCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2aWRhdHRyIChjaHR5cGUpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdmlkcHV0cyAoY2h0eXBlLCBpbnQgKCopKGludCkpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZsaW5lIChjaHR5cGUsIGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndwcmludHcgKFdJTkRPVyAqLCBjb25zdCBjaGFyICosdmFfbGlzdCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2d19wcmludHcgKFdJTkRPVyAqLCBjb25zdCBjaGFyICosdmFfbGlzdCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndzY2FudyAoV0lORE9XICosIE5DVVJTRVNfQ09OU1QgY2hhciAqLHZhX2xpc3QpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndfc2NhbncgKFdJTkRPVyAqLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKix2YV9saXN0KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YWRkY2ggKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRjaG5zdHIgKFdJTkRPVyAqLGNvbnN0IGNodHlwZSAqLGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YWRkY2hzdHIgKFdJTkRPVyAqLGNvbnN0IGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZG5zdHIgKFdJTkRPVyAqLGNvbnN0IGNoYXIgKixpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZHN0ciAoV0lORE9XICosY29uc3QgY2hhciAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJvbiAoV0lORE9XICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cm9mZiAoV0lORE9XICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cnNldCAoV0lORE9XICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9nZXQgKFdJTkRPVyAqLCBhdHRyX3QgKiwgc2hvcnQgKiwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9vbiAoV0lORE9XICosIGF0dHJfdCwgdm9pZCAqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9vZmYgKFdJTkRPVyAqLCBhdHRyX3QsIHZvaWQgKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YXR0cl9zZXQgKFdJTkRPVyAqLCBhdHRyX3QsIHNob3J0LCB2b2lkICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdia2dkIChXSU5ET1cgKiwgY2h0eXBlKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHdia2dkc2V0IChXSU5ET1cgKixjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Ym9yZGVyIChXSU5ET1cgKixjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjaGdhdCAoV0lORE9XICosIGludCwgYXR0cl90LCBzaG9ydCwgY29uc3Qgdm9pZCAqKTsvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NsZWFyIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y2xydG9ib3QgKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NscnRvZW9sIChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjb2xvcl9zZXQgKFdJTkRPVyosc2hvcnQsdm9pZCopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3Y3Vyc3luY3VwIChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdkZWxjaCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2RlbGV0ZWxuIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZWNob2NoYXIgKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdlcmFzZSAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldGNoIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0bnN0ciAoV0lORE9XICosY2hhciAqLGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldHN0ciAoV0lORE9XICosIGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aGxpbmUgKFdJTkRPVyAqLCBjaHR5cGUsIGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgd2luY2ggKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbmNobnN0ciAoV0lORE9XICosIGNodHlwZSAqLCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbmNoc3RyIChXSU5ET1cgKiwgY2h0eXBlICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5uc3RyIChXSU5ET1cgKiwgY2hhciAqLCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNjaCAoV0lORE9XICosIGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNkZWxsbiAoV0lORE9XICosaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2luc2VydGxuIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zbnN0ciAoV0lORE9XICosIGNvbnN0IGNoYXIgKixpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2luc3N0ciAoV0lORE9XICosIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnN0ciAoV0lORE9XICosIGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3bW92ZSAoV0lORE9XICosaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdub3V0cmVmcmVzaCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3cHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLC4uLikJCS8qIGltcGxlbWVudGVkICovCi0JCUdDQ19QUklOVEZMSUtFKDIsMyk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3cmVkcmF3bG4gKFdJTkRPVyAqLGludCxpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdyZWZyZXNoIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c2NhbncgKFdJTkRPVyAqLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwuLi4pCS8qIGltcGxlbWVudGVkICovCi0JCUdDQ19TQ0FORkxJS0UoMiwzKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdzY3JsIChXSU5ET1cgKixpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c2V0c2NycmVnIChXSU5ET1cgKixpbnQsaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c3RhbmRvdXQgKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdzdGFuZGVuZCAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHdzeW5jZG93biAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgd3N5bmN1cCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHd0aW1lb3V0IChXSU5ET1cgKixpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3dG91Y2hsbiAoV0lORE9XICosaW50LGludCxpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHd2bGluZSAoV0lORE9XICosY2h0eXBlLGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotCi0vKgotICogVGhlc2UgYXJlIGFsc28gZGVjbGFyZWQgaW4gPHRlcm0uaD46Ci0gKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRpZ2V0ZmxhZyAoTkNVUlNFU19DT05TVCBjaGFyICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRpZ2V0bnVtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGlnZXRzdHIgKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwdXRwIChjb25zdCBjaGFyICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotCi0jaWYgTkNVUlNFU19UUEFSTV9WQVJBUkdTCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybSAoTkNVUlNFU19DT05TVCBjaGFyICosIC4uLik7CS8qIHNwZWNpYWwgKi8KLSNlbHNlCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybSAoTkNVUlNFU19DT05TVCBjaGFyICosIGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nKTsJLyogc3BlY2lhbCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm1fdmFyYXJncyAoTkNVUlNFU19DT05TVCBjaGFyICosIC4uLik7CS8qIHNwZWNpYWwgKi8KLSNlbmRpZgotCi0vKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgaW4gWC9PcGVuLCBidXQgd2UgdXNlIHRoZW0gaW4gbWFjcm8gZGVmaW5pdGlvbnM6Ci0gKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGdldGF0dHJzIChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRjdXJ4IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRjdXJ5IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRiZWd4IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRiZWd5IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRtYXh4IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRtYXh5IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRwYXJ4IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRwYXJ5IChjb25zdCBXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi0KLS8qCi0gKiB2aWRfYXR0cigpIHdhcyBpbXBsZW1lbnRlZCBvcmlnaW5hbGx5IGJhc2VkIG9uIGEgZHJhZnQgb2YgWC9PcGVuIGN1cnNlcy4KLSAqLwotI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECi0jZGVmaW5lIHZpZF9hdHRyKGEscGFpcixvcHRzKSB2aWRhdHRyKGEpCi0jZW5kaWYKLQotLyoKLSAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXh0ZW5zaW9ucyAtIG5vdCBpbiBYL09wZW4gQ3Vyc2VzLgotICovCi0jaWYgMQotI3VuZGVmICBOQ1VSU0VTX0VYVF9GVU5DUwotI2RlZmluZSBOQ1VSU0VTX0VYVF9GVU5DUyAyMDA4MTEwMgotdHlwZWRlZiBpbnQgKCpOQ1VSU0VTX1dJTkRPV19DQikoV0lORE9XICosIHZvaWQgKik7Ci10eXBlZGVmIGludCAoKk5DVVJTRVNfU0NSRUVOX0NCKShTQ1JFRU4gKiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc190ZXJtX3Jlc2l6ZWQgKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIGtleWJvdW5kIChpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKSBjdXJzZXNfdmVyc2lvbiAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhc3N1bWVfZGVmYXVsdF9jb2xvcnMgKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRlZmluZV9rZXkgKGNvbnN0IGNoYXIgKiwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleV9kZWZpbmVkIChjb25zdCBjaGFyICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkga2V5b2sgKGludCwgYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZXNpemVfdGVybSAoaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzaXpldGVybSAoaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2V0X2VzY2RlbGF5IChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2V0X3RhYnNpemUgKGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1c2VfZGVmYXVsdF9jb2xvcnMgKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdXNlX2V4dGVuZGVkX25hbWVzIChib29sKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV9sZWdhY3lfY29kaW5nIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdXNlX3NjcmVlbiAoU0NSRUVOICosIE5DVVJTRVNfU0NSRUVOX0NCLCB2b2lkICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdXNlX3dpbmRvdyAoV0lORE9XICosIE5DVVJTRVNfV0lORE9XX0NCLCB2b2lkICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3Jlc2l6ZSAoV0lORE9XICosIGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBub2ZpbHRlcih2b2lkKTsKLQotLyoKLSAqIFRoZXNlIGV4dGVuc2lvbnMgcHJvdmlkZSBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gc3RvcmVkIGluIHRoZSBXSU5ET1cgZXZlbgotICogd2hlbiBOQ1VSU0VTX09QQVFVRSBpcyBzZXQ6Ci0gKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgd2dldHBhcmVudCAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19jbGVhcmVkIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2lkY29rIChjb25zdCBXSU5ET1cgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19pZGxvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfaW1tZWRvayAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19rZXlwYWQgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2xlYXZlb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbm9kZWxheSAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19ub3RpbWVvdXQgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfc2Nyb2xsb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfc3luY29rIChjb25zdCBXSU5ET1cgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRzY3JyZWcgKGNvbnN0IFdJTkRPVyAqLCBpbnQgKiwgaW50ICopOyAvKiBnZW5lcmF0ZWQgKi8KLQotI2Vsc2UKLSNkZWZpbmUgY3Vyc2VzX3ZlcnNpb24oKSBOQ1VSU0VTX1ZFUlNJT04KLSNlbmRpZgotCi0vKiBhdHRyaWJ1dGVzICovCi0KLSNkZWZpbmUgTkNVUlNFU19BVFRSX1NISUZUICAgICAgIDgKLSNkZWZpbmUgTkNVUlNFU19CSVRTKG1hc2ssc2hpZnQpICgobWFzaykgPDwgKChzaGlmdCkgKyBOQ1VSU0VTX0FUVFJfU0hJRlQpKQotCi0jZGVmaW5lIEFfTk9STUFMCSgxVUwgLSAxVUwpCi0jZGVmaW5lIEFfQVRUUklCVVRFUwlOQ1VSU0VTX0JJVFMofigxVUwgLSAxVUwpLDApCi0jZGVmaW5lIEFfQ0hBUlRFWFQJKE5DVVJTRVNfQklUUygxVUwsMCkgLSAxVUwpCi0jZGVmaW5lIEFfQ09MT1IJCU5DVVJTRVNfQklUUygoKDFVTCkgPDwgOCkgLSAxVUwsMCkKLSNkZWZpbmUgQV9TVEFORE9VVAlOQ1VSU0VTX0JJVFMoMVVMLDgpCi0jZGVmaW5lIEFfVU5ERVJMSU5FCU5DVVJTRVNfQklUUygxVUwsOSkKLSNkZWZpbmUgQV9SRVZFUlNFCU5DVVJTRVNfQklUUygxVUwsMTApCi0jZGVmaW5lIEFfQkxJTksJCU5DVVJTRVNfQklUUygxVUwsMTEpCi0jZGVmaW5lIEFfRElNCQlOQ1VSU0VTX0JJVFMoMVVMLDEyKQotI2RlZmluZSBBX0JPTEQJCU5DVVJTRVNfQklUUygxVUwsMTMpCi0jZGVmaW5lIEFfQUxUQ0hBUlNFVAlOQ1VSU0VTX0JJVFMoMVVMLDE0KQotI2RlZmluZSBBX0lOVklTCQlOQ1VSU0VTX0JJVFMoMVVMLDE1KQotI2RlZmluZSBBX1BST1RFQ1QJTkNVUlNFU19CSVRTKDFVTCwxNikKLSNkZWZpbmUgQV9IT1JJWk9OVEFMCU5DVVJTRVNfQklUUygxVUwsMTcpCi0jZGVmaW5lIEFfTEVGVAkJTkNVUlNFU19CSVRTKDFVTCwxOCkKLSNkZWZpbmUgQV9MT1cJCU5DVVJTRVNfQklUUygxVUwsMTkpCi0jZGVmaW5lIEFfUklHSFQJCU5DVVJTRVNfQklUUygxVUwsMjApCi0jZGVmaW5lIEFfVE9QCQlOQ1VSU0VTX0JJVFMoMVVMLDIxKQotI2RlZmluZSBBX1ZFUlRJQ0FMCU5DVVJTRVNfQklUUygxVUwsMjIpCi0KLS8qCi0gKiBNb3N0IG9mIHRoZSBwc2V1ZG8gZnVuY3Rpb25zIGFyZSBtYWNyb3MgdGhhdCBlaXRoZXIgcHJvdmlkZSBjb21wYXRpYmlsaXR5Ci0gKiB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIGN1cnNlcywgb3IgcHJvdmlkZSBpbmxpbmUgZnVuY3Rpb25hbGl0eSB0byBpbXByb3ZlCi0gKiBwZXJmb3JtYW5jZS4KLSAqLwotCi0vKgotICogVGhlc2UgcHNldWRvIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGltcGxlbWVudGVkIGFzIG1hY3JvczoKLSAqLwotCi0jZGVmaW5lIGdldHl4KHdpbix5LHgpICAgCSh5ID0gZ2V0Y3VyeSh3aW4pLCB4ID0gZ2V0Y3VyeCh3aW4pKQotI2RlZmluZSBnZXRiZWd5eCh3aW4seSx4KQkoeSA9IGdldGJlZ3kod2luKSwgeCA9IGdldGJlZ3god2luKSkKLSNkZWZpbmUgZ2V0bWF4eXgod2luLHkseCkJKHkgPSBnZXRtYXh5KHdpbiksIHggPSBnZXRtYXh4KHdpbikpCi0jZGVmaW5lIGdldHBhcnl4KHdpbix5LHgpCSh5ID0gZ2V0cGFyeSh3aW4pLCB4ID0gZ2V0cGFyeCh3aW4pKQotCi0jZGVmaW5lIGdldHN5eCh5LHgpIGRvIHsgaWYgKG5ld3NjcikgeyBcCi0JCQkgICAgIGlmIChpc19sZWF2ZW9rKG5ld3NjcikpIFwKLQkJCQkoeSkgPSAoeCkgPSAtMTsgXAotCQkJICAgICBlbHNlIFwKLQkJCQkgZ2V0eXgobmV3c2NyLCh5KSwgKHgpKTsgXAotCQkJfSBcCi0JCSAgICB9IHdoaWxlKDApCi0KLSNkZWZpbmUgc2V0c3l4KHkseCkgZG8geyBpZiAobmV3c2NyKSB7IFwKLQkJCSAgICBpZiAoKHkpID09IC0xICYmICh4KSA9PSAtMSkgXAotCQkJCWxlYXZlb2sobmV3c2NyLCBUUlVFKTsgXAotCQkJICAgIGVsc2UgeyBcCi0JCQkJbGVhdmVvayhuZXdzY3IsIEZBTFNFKTsgXAotCQkJCXdtb3ZlKG5ld3NjciwgKHkpLCAoeCkpOyBcCi0JCQkgICAgfSBcCi0JCQl9IFwKLQkJICAgIH0gd2hpbGUoMCkKLQotI2lmbmRlZiBOQ1VSU0VTX05PTUFDUk9TCi0KLS8qCi0gKiBUaGVzZSBtaXNjZWxsYW5lb3VzIHBzZXVkbyBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5OgotICovCi0KLSNkZWZpbmUgd2dldHN0cih3LCBzKQkJd2dldG5zdHIodywgcywgLTEpCi0jZGVmaW5lIGdldG5zdHIocywgbikJCXdnZXRuc3RyKHN0ZHNjciwgcywgbikKLQotI2RlZmluZSBzZXR0ZXJtKHRlcm0pCQlzZXR1cHRlcm0odGVybSwgMSwgKGludCAqKTApCi0KLSNkZWZpbmUgZml4dGVybSgpCQlyZXNldF9wcm9nX21vZGUoKQotI2RlZmluZSByZXNldHRlcm0oKQkJcmVzZXRfc2hlbGxfbW9kZSgpCi0jZGVmaW5lIHNhdmV0ZXJtKCkJCWRlZl9wcm9nX21vZGUoKQotI2RlZmluZSBjcm1vZGUoKQkJY2JyZWFrKCkKLSNkZWZpbmUgbm9jcm1vZGUoKQkJbm9jYnJlYWsoKQotI2RlZmluZSBnZXR0bW9kZSgpCi0KLS8qIEl0IHNlZW1zIG9sZGVyIFNZU1YgY3Vyc2VzIHZlcnNpb25zIGRlZmluZSB0aGVzZSAqLwotI2lmICFOQ1VSU0VTX09QQVFVRQotI2RlZmluZSBnZXRhdHRycyh3aW4pCQkoKHdpbikgPyAod2luKS0+X2F0dHJzIDogQV9OT1JNQUwpCi0jZGVmaW5lIGdldGN1cngod2luKQkJKCh3aW4pID8gKHdpbiktPl9jdXJ4IDogRVJSKQotI2RlZmluZSBnZXRjdXJ5KHdpbikJCSgod2luKSA/ICh3aW4pLT5fY3VyeSA6IEVSUikKLSNkZWZpbmUgZ2V0YmVneCh3aW4pCQkoKHdpbikgPyAod2luKS0+X2JlZ3ggOiBFUlIpCi0jZGVmaW5lIGdldGJlZ3kod2luKQkJKCh3aW4pID8gKHdpbiktPl9iZWd5IDogRVJSKQotI2RlZmluZSBnZXRtYXh4KHdpbikJCSgod2luKSA/ICgod2luKS0+X21heHggKyAxKSA6IEVSUikKLSNkZWZpbmUgZ2V0bWF4eSh3aW4pCQkoKHdpbikgPyAoKHdpbiktPl9tYXh5ICsgMSkgOiBFUlIpCi0jZGVmaW5lIGdldHBhcngod2luKQkJKCh3aW4pID8gKHdpbiktPl9wYXJ4IDogRVJSKQotI2RlZmluZSBnZXRwYXJ5KHdpbikJCSgod2luKSA/ICh3aW4pLT5fcGFyeSA6IEVSUikKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHdzdGFuZG91dCh3aW4pICAgICAgCSh3YXR0cnNldCh3aW4sQV9TVEFORE9VVCkpCi0jZGVmaW5lIHdzdGFuZGVuZCh3aW4pICAgICAgCSh3YXR0cnNldCh3aW4sQV9OT1JNQUwpKQotCi0jZGVmaW5lIHdhdHRyb24od2luLGF0KQkJd2F0dHJfb24od2luLCBOQ1VSU0VTX0NBU1QoYXR0cl90LCBhdCksIE5VTEwpCi0jZGVmaW5lIHdhdHRyb2ZmKHdpbixhdCkJd2F0dHJfb2ZmKHdpbiwgTkNVUlNFU19DQVNUKGF0dHJfdCwgYXQpLCBOVUxMKQotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFX0VYVEVOREVEKSAmJiAwCi0jZGVmaW5lIHdhdHRyc2V0KHdpbixhdCkJKCh3aW4pLT5fY29sb3IgPSBQQUlSX05VTUJFUihhdCksIFwKLQkJCQkgKHdpbiktPl9hdHRycyA9IChhdCkpCi0jZWxzZQotI2RlZmluZSB3YXR0cnNldCh3aW4sYXQpCSgod2luKS0+X2F0dHJzID0gKGF0KSkKLSNlbmRpZgotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLSNkZWZpbmUgc2Nyb2xsKHdpbikJCXdzY3JsKHdpbiwxKQotCi0jZGVmaW5lIHRvdWNod2luKHdpbikJCXd0b3VjaGxuKCh3aW4pLCAwLCBnZXRtYXh5KHdpbiksIDEpCi0jZGVmaW5lIHRvdWNobGluZSh3aW4sIHMsIGMpCXd0b3VjaGxuKCh3aW4pLCBzLCBjLCAxKQotI2RlZmluZSB1bnRvdWNod2luKHdpbikJCXd0b3VjaGxuKCh3aW4pLCAwLCBnZXRtYXh5KHdpbiksIDApCi0KLSNkZWZpbmUgYm94KHdpbiwgdiwgaCkJCXdib3JkZXIod2luLCB2LCB2LCBoLCBoLCAwLCAwLCAwLCAwKQotI2RlZmluZSBib3JkZXIobHMsIHJzLCB0cywgYnMsIHRsLCB0ciwgYmwsIGJyKQl3Ym9yZGVyKHN0ZHNjciwgbHMsIHJzLCB0cywgYnMsIHRsLCB0ciwgYmwsIGJyKQotI2RlZmluZSBobGluZShjaCwgbikJCXdobGluZShzdGRzY3IsIGNoLCBuKQotI2RlZmluZSB2bGluZShjaCwgbikJCXd2bGluZShzdGRzY3IsIGNoLCBuKQotCi0jZGVmaW5lIHdpbnN0cih3LCBzKQkJd2lubnN0cih3LCBzLCAtMSkKLSNkZWZpbmUgd2luY2hzdHIodywgcykJCXdpbmNobnN0cih3LCBzLCAtMSkKLSNkZWZpbmUgd2luc3N0cih3LCBzKQkJd2luc25zdHIodywgcywgLTEpCi0KLSNpZiAhTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgcmVkcmF3d2luKHdpbikJCXdyZWRyYXdsbih3aW4sIDAsICh3aW4pLT5fbWF4eSsxKQotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLSNkZWZpbmUgd2FkZHN0cih3aW4sc3RyKQl3YWRkbnN0cih3aW4sc3RyLC0xKQotI2RlZmluZSB3YWRkY2hzdHIod2luLHN0cikJd2FkZGNobnN0cih3aW4sc3RyLC0xKQotCi0vKgotICogVGhlc2UgYXBwbHkgdG8gdGhlIGZpcnN0IDI1NiBjb2xvciBwYWlycy4KLSAqLwotI2RlZmluZSBDT0xPUl9QQUlSKG4pCU5DVVJTRVNfQklUUyhuLCAwKQotI2RlZmluZSBQQUlSX05VTUJFUihhKQkoTkNVUlNFU19DQVNUKGludCwoKChhKSAmIEFfQ09MT1IpID4+IE5DVVJTRVNfQVRUUl9TSElGVCkpKQotCi0vKgotICogcHNldWRvIGZ1bmN0aW9ucyBmb3Igc3RhbmRhcmQgc2NyZWVuCi0gKi8KLQotI2RlZmluZSBhZGRjaChjaCkJCXdhZGRjaChzdGRzY3IsY2gpCi0jZGVmaW5lIGFkZGNobnN0cihzdHIsbikJd2FkZGNobnN0cihzdGRzY3Isc3RyLG4pCi0jZGVmaW5lIGFkZGNoc3RyKHN0cikJCXdhZGRjaHN0cihzdGRzY3Isc3RyKQotI2RlZmluZSBhZGRuc3RyKHN0cixuKQkJd2FkZG5zdHIoc3Rkc2NyLHN0cixuKQotI2RlZmluZSBhZGRzdHIoc3RyKQkJd2FkZG5zdHIoc3Rkc2NyLHN0ciwtMSkKLSNkZWZpbmUgYXR0cm9mZihhdCkJCXdhdHRyb2ZmKHN0ZHNjcixhdCkKLSNkZWZpbmUgYXR0cm9uKGF0KQkJd2F0dHJvbihzdGRzY3IsYXQpCi0jZGVmaW5lIGF0dHJzZXQoYXQpCQl3YXR0cnNldChzdGRzY3IsYXQpCi0jZGVmaW5lIGF0dHJfZ2V0KGFwLGNwLG8pCXdhdHRyX2dldChzdGRzY3IsYXAsY3AsbykKLSNkZWZpbmUgYXR0cl9vZmYoYSxvKQkJd2F0dHJfb2ZmKHN0ZHNjcixhLG8pCi0jZGVmaW5lIGF0dHJfb24oYSxvKQkJd2F0dHJfb24oc3Rkc2NyLGEsbykKLSNkZWZpbmUgYXR0cl9zZXQoYSxjLG8pCQl3YXR0cl9zZXQoc3Rkc2NyLGEsYyxvKQotI2RlZmluZSBia2dkKGNoKQkJd2JrZ2Qoc3Rkc2NyLGNoKQotI2RlZmluZSBia2dkc2V0KGNoKQkJd2JrZ2RzZXQoc3Rkc2NyLGNoKQotI2RlZmluZSBjaGdhdChuLGEsYyxvKQkJd2NoZ2F0KHN0ZHNjcixuLGEsYyxvKQotI2RlZmluZSBjbGVhcigpCQkJd2NsZWFyKHN0ZHNjcikKLSNkZWZpbmUgY2xydG9ib3QoKQkJd2NscnRvYm90KHN0ZHNjcikKLSNkZWZpbmUgY2xydG9lb2woKQkJd2NscnRvZW9sKHN0ZHNjcikKLSNkZWZpbmUgY29sb3Jfc2V0KGMsbykJCXdjb2xvcl9zZXQoc3Rkc2NyLGMsbykKLSNkZWZpbmUgZGVsY2goKQkJCXdkZWxjaChzdGRzY3IpCi0jZGVmaW5lIGRlbGV0ZWxuKCkJCXdpbnNkZWxsbihzdGRzY3IsLTEpCi0jZGVmaW5lIGVjaG9jaGFyKGMpCQl3ZWNob2NoYXIoc3Rkc2NyLGMpCi0jZGVmaW5lIGVyYXNlKCkJCQl3ZXJhc2Uoc3Rkc2NyKQotI2RlZmluZSBnZXRjaCgpCQkJd2dldGNoKHN0ZHNjcikKLSNkZWZpbmUgZ2V0c3RyKHN0cikJCXdnZXRzdHIoc3Rkc2NyLHN0cikKLSNkZWZpbmUgaW5jaCgpCQkJd2luY2goc3Rkc2NyKQotI2RlZmluZSBpbmNobnN0cihzLG4pCQl3aW5jaG5zdHIoc3Rkc2NyLHMsbikKLSNkZWZpbmUgaW5jaHN0cihzKQkJd2luY2hzdHIoc3Rkc2NyLHMpCi0jZGVmaW5lIGlubnN0cihzLG4pCQl3aW5uc3RyKHN0ZHNjcixzLG4pCi0jZGVmaW5lIGluc2NoKGMpCQl3aW5zY2goc3Rkc2NyLGMpCi0jZGVmaW5lIGluc2RlbGxuKG4pCQl3aW5zZGVsbG4oc3Rkc2NyLG4pCi0jZGVmaW5lIGluc2VydGxuKCkJCXdpbnNkZWxsbihzdGRzY3IsMSkKLSNkZWZpbmUgaW5zbnN0cihzLG4pCQl3aW5zbnN0cihzdGRzY3IscyxuKQotI2RlZmluZSBpbnNzdHIocykJCXdpbnNzdHIoc3Rkc2NyLHMpCi0jZGVmaW5lIGluc3RyKHMpCQl3aW5zdHIoc3Rkc2NyLHMpCi0jZGVmaW5lIG1vdmUoeSx4KQkJd21vdmUoc3Rkc2NyLHkseCkKLSNkZWZpbmUgcmVmcmVzaCgpCQl3cmVmcmVzaChzdGRzY3IpCi0jZGVmaW5lIHNjcmwobikJCQl3c2NybChzdGRzY3IsbikKLSNkZWZpbmUgc2V0c2NycmVnKHQsYikJCXdzZXRzY3JyZWcoc3Rkc2NyLHQsYikKLSNkZWZpbmUgc3RhbmRlbmQoKQkJd3N0YW5kZW5kKHN0ZHNjcikKLSNkZWZpbmUgc3RhbmRvdXQoKQkJd3N0YW5kb3V0KHN0ZHNjcikKLSNkZWZpbmUgdGltZW91dChkZWxheSkJCXd0aW1lb3V0KHN0ZHNjcixkZWxheSkKLSNkZWZpbmUgd2RlbGV0ZWxuKHdpbikJCXdpbnNkZWxsbih3aW4sLTEpCi0jZGVmaW5lIHdpbnNlcnRsbih3aW4pCQl3aW5zZGVsbG4od2luLDEpCi0KLS8qCi0gKiBtdiBmdW5jdGlvbnMKLSAqLwotCi0jZGVmaW5lIG12d2FkZGNoKHdpbix5LHgsY2gpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZGNoKHdpbixjaCkpCi0jZGVmaW5lIG12d2FkZGNobnN0cih3aW4seSx4LHN0cixuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZGNobnN0cih3aW4sc3RyLG4pKQotI2RlZmluZSBtdndhZGRjaHN0cih3aW4seSx4LHN0cikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaG5zdHIod2luLHN0ciwtMSkpCi0jZGVmaW5lIG12d2FkZG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRuc3RyKHdpbixzdHIsbikpCi0jZGVmaW5lIG12d2FkZHN0cih3aW4seSx4LHN0cikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkbnN0cih3aW4sc3RyLC0xKSkKLSNkZWZpbmUgbXZ3ZGVsY2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3ZGVsY2god2luKSkKLSNkZWZpbmUgbXZ3Y2hnYXQod2luLHkseCxuLGEsYyxvKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2NoZ2F0KHdpbixuLGEsYyxvKSkKLSNkZWZpbmUgbXZ3Z2V0Y2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3Z2V0Y2god2luKSkKLSNkZWZpbmUgbXZ3Z2V0bnN0cih3aW4seSx4LHN0cixuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2dldG5zdHIod2luLHN0cixuKSkKLSNkZWZpbmUgbXZ3Z2V0c3RyKHdpbix5LHgsc3RyKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRzdHIod2luLHN0cikpCi0jZGVmaW5lIG12d2hsaW5lKHdpbix5LHgsYyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdobGluZSh3aW4sYyxuKSkKLSNkZWZpbmUgbXZ3aW5jaCh3aW4seSx4KQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IE5DVVJTRVNfQ0FTVChjaHR5cGUsIEVSUikgOiB3aW5jaCh3aW4pKQotI2RlZmluZSBtdndpbmNobnN0cih3aW4seSx4LHMsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbmNobnN0cih3aW4scyxuKSkKLSNkZWZpbmUgbXZ3aW5jaHN0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luY2hzdHIod2luLHMpKQotI2RlZmluZSBtdndpbm5zdHIod2luLHkseCxzLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2lubnN0cih3aW4scyxuKSkKLSNkZWZpbmUgbXZ3aW5zY2god2luLHkseCxjKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNjaCh3aW4sYykpCi0jZGVmaW5lIG12d2luc25zdHIod2luLHkseCxzLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc25zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luc3N0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc3N0cih3aW4scykpCi0jZGVmaW5lIG12d2luc3RyKHdpbix5LHgscykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5zdHIod2luLHMpKQotI2RlZmluZSBtdnd2bGluZSh3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3dmxpbmUod2luLGMsbikpCi0KLSNkZWZpbmUgbXZhZGRjaCh5LHgsY2gpCQkJbXZ3YWRkY2goc3Rkc2NyLHkseCxjaCkKLSNkZWZpbmUgbXZhZGRjaG5zdHIoeSx4LHN0cixuKQkJbXZ3YWRkY2huc3RyKHN0ZHNjcix5LHgsc3RyLG4pCi0jZGVmaW5lIG12YWRkY2hzdHIoeSx4LHN0cikJCW12d2FkZGNoc3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmFkZG5zdHIoeSx4LHN0cixuKQkJbXZ3YWRkbnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmFkZHN0cih5LHgsc3RyKQkJbXZ3YWRkc3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmNoZ2F0KHkseCxuLGEsYyxvKQkJbXZ3Y2hnYXQoc3Rkc2NyLHkseCxuLGEsYyxvKQotI2RlZmluZSBtdmRlbGNoKHkseCkJCQltdndkZWxjaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmdldGNoKHkseCkJCQltdndnZXRjaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmdldG5zdHIoeSx4LHN0cixuKQkJbXZ3Z2V0bnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmdldHN0cih5LHgsc3RyKQkJbXZ3Z2V0c3RyKHN0ZHNjcix5LHgsc3RyKQotI2RlZmluZSBtdmhsaW5lKHkseCxjLG4pCQltdndobGluZShzdGRzY3IseSx4LGMsbikKLSNkZWZpbmUgbXZpbmNoKHkseCkJCQltdndpbmNoKHN0ZHNjcix5LHgpCi0jZGVmaW5lIG12aW5jaG5zdHIoeSx4LHMsbikJCW12d2luY2huc3RyKHN0ZHNjcix5LHgscyxuKQotI2RlZmluZSBtdmluY2hzdHIoeSx4LHMpCQltdndpbmNoc3RyKHN0ZHNjcix5LHgscykKLSNkZWZpbmUgbXZpbm5zdHIoeSx4LHMsbikJCW12d2lubnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbnNjaCh5LHgsYykJCQltdndpbnNjaChzdGRzY3IseSx4LGMpCi0jZGVmaW5lIG12aW5zbnN0cih5LHgscyxuKQkJbXZ3aW5zbnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbnNzdHIoeSx4LHMpCQkJbXZ3aW5zc3RyKHN0ZHNjcix5LHgscykKLSNkZWZpbmUgbXZpbnN0cih5LHgscykJCQltdndpbnN0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12dmxpbmUoeSx4LGMsbikJCW12d3ZsaW5lKHN0ZHNjcix5LHgsYyxuKQotCi0vKgotICogU29tZSB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGhvdXQgdGhlIGV4dGVuc2lvbnMuCi0gKi8KLSNpZiAhTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgZ2V0YmtnZCh3aW4pICAgICAgICAgICAgICAgICAgICAoKHdpbiktPl9ia2dkKQotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLSNkZWZpbmUgc2xrX2F0dHJfb2ZmKGEsdikJCSgodikgPyBFUlIgOiBzbGtfYXR0cm9mZihhKSkKLSNkZWZpbmUgc2xrX2F0dHJfb24oYSx2KQkJKCh2KSA/IEVSUiA6IHNsa19hdHRyb24oYSkpCi0KLSNpZiAhTkNVUlNFU19PUEFRVUUKLSNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQpICYmIDAKLSNkZWZpbmUgd2F0dHJfc2V0KHdpbixhLHAsb3B0cykJCSgod2luKS0+X2F0dHJzID0gKChhKSAmIH5BX0NPTE9SKSwgXAotCQkJCQkgKHdpbiktPl9jb2xvciA9IChwKSwgXAotCQkJCQkgT0spCi0jZGVmaW5lIHdhdHRyX2dldCh3aW4sYSxwLG9wdHMpCQkoKHZvaWQpKChhKSAhPSAodm9pZCAqKTAgJiYgKCooYSkgPSAod2luKS0+X2F0dHJzKSksIFwKLQkJCQkJICh2b2lkKSgocCkgIT0gKHZvaWQgKikwICYmICgqKHApID0gKHdpbiktPl9jb2xvcikpLCBcCi0JCQkJCSBPSykKLSNlbHNlCi0jZGVmaW5lIHdhdHRyX3NldCh3aW4sYSxwLG9wdHMpCQkoKHdpbiktPl9hdHRycyA9ICgoKGEpICYgfkFfQ09MT1IpIHwgQ09MT1JfUEFJUihwKSksIE9LKQotI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoYSkgIT0gKHZvaWQgKikwICYmICgqKGEpID0gKHdpbiktPl9hdHRycykpLCBcCi0JCQkJCSAodm9pZCkoKHApICE9ICh2b2lkICopMCAmJiAoKihwKSA9IFBBSVJfTlVNQkVSKCh3aW4pLT5fYXR0cnMpKSksIFwKLQkJCQkJIE9LKQotI2VuZGlmCi0jZW5kaWYgLyogTkNVUlNFU19PUEFRVUUgKi8KLQotLyoKLSAqIFgvT3BlbiBjdXJzZXMgZGVwcmVjYXRlcyBTVnI0IHZ3cHJpbnR3L3Z3c2NhbncsIHdoaWNoIGFyZSBzdXBwb3NlZCB0byB1c2UKLSAqIHZhcmFyZ3MuaC4gIEl0IGFkZHMgbmV3IGNhbGxzIHZ3X3ByaW50dy92d19zY2Fudywgd2hpY2ggYXJlIHN1cHBvc2VkIHRvCi0gKiB1c2UgUE9TSVggc3RkYXJnLmguICBUaGUgbmN1cnNlcyB2ZXJzaW9ucyBvZiB2d3ByaW50dy92d3NjYW53IGFscmVhZHkKLSAqIHVzZSBzdGRhcmcuaCwgc28uLi4KLSAqLwotI2RlZmluZSB2d19wcmludHcJCXZ3cHJpbnR3Ci0jZGVmaW5lIHZ3X3NjYW53CQl2d3NjYW53Ci0KLS8qCi0gKiBFeHBvcnQgZmFsbGJhY2sgZnVuY3Rpb24gZm9yIHVzZSBpbiBDKysgYmluZGluZy4KLSAqLwotI2lmICExCi0jZGVmaW5lIHZzc2NhbmYoYSxiLGMpIF9uY192c3NjYW5mKGEsYixjKQotTkNVUlNFU19FWFBPUlQoaW50KSB2c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSNlbmRpZgotCi0vKgotICogVGhlc2UgbWFjcm9zIGFyZSBleHRlbnNpb25zIC0gbm90IGluIFgvT3BlbiBDdXJzZXMuCi0gKi8KLSNpZiAxCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIGlzX2NsZWFyZWQod2luKQkJKCh3aW4pLT5fY2xlYXIpCi0jZGVmaW5lIGlzX2lkY29rKHdpbikJCSgod2luKS0+X2lkY29rKQotI2RlZmluZSBpc19pZGxvayh3aW4pCQkoKHdpbiktPl9pZGxvaykKLSNkZWZpbmUgaXNfaW1tZWRvayh3aW4pCQkoKHdpbiktPl9pbW1lZCkKLSNkZWZpbmUgaXNfa2V5cGFkKHdpbikJCSgod2luKS0+X3VzZV9rZXlwYWQpCi0jZGVmaW5lIGlzX2xlYXZlb2sod2luKQkJKCh3aW4pLT5fbGVhdmVvaykKLSNkZWZpbmUgaXNfbm9kZWxheSh3aW4pCQkoKHdpbiktPl9kZWxheSA9PSAwKQotI2RlZmluZSBpc19ub3RpbWVvdXQod2luKQkoKHdpbiktPl9ub3RpbWVvdXQpCi0jZGVmaW5lIGlzX3Njcm9sbG9rKHdpbikJKCh3aW4pLT5fc2Nyb2xsKQotI2RlZmluZSBpc19zeW5jb2sod2luKQkJKCh3aW4pLT5fc3luYykKLSNkZWZpbmUgd2dldHBhcmVudCh3aW4pCQkoKHdpbikgPyAod2luKS0+X3BhcmVudCA6IDApCi0jZGVmaW5lIHdnZXRzY3JyZWcod2luLHQsYikJKCh3aW4pID8gKCoodCkgPSAod2luKS0+X3JlZ3RvcCwgKihiKSA9ICh3aW4pLT5fcmVnYm90dG9tLCBPSykgOiBFUlIpCi0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLyogTkNVUlNFU19OT01BQ1JPUyAqLwotCi0vKgotICogUHVibGljIHZhcmlhYmxlcy4KLSAqCi0gKiBOb3RlczoKLSAqCWEuIEVTQ0RFTEFZIHdhcyBhbiB1bmRvY3VtZW50ZWQgZmVhdHVyZSB1bmRlciBBSVggY3Vyc2VzLgotICoJICAgSXQgZ2l2ZXMgdGhlIEVTQyBleHBpcmUgdGltZSBpbiBtaWxsaXNlY29uZHMuCi0gKgliLiB0dHl0eXBlIGlzIG5lZWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotICovCi0jaWYgMAotCi1OQ1VSU0VTX1dSQVBQRURfVkFSKFdJTkRPVyAqLCBjdXJzY3IpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihXSU5ET1cgKiwgbmV3c2NyKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoV0lORE9XICosIHN0ZHNjcik7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGNoYXIgKiwgdHR5dHlwZSk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgQ09MT1JTKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoaW50LCBDT0xPUl9QQUlSUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgQ09MUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgRVNDREVMQVkpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIExJTkVTKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoaW50LCBUQUJTSVpFKTsKLQotI2RlZmluZSBjdXJzY3IgICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoY3Vyc2NyKCkpCi0jZGVmaW5lIG5ld3NjciAgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihuZXdzY3IoKSkKLSNkZWZpbmUgc3Rkc2NyICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKHN0ZHNjcigpKQotI2RlZmluZSB0dHl0eXBlICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIodHR5dHlwZSgpKQotI2RlZmluZSBDT0xPUlMgICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MT1JTKCkpCi0jZGVmaW5lIENPTE9SX1BBSVJTIE5DVVJTRVNfUFVCTElDX1ZBUihDT0xPUl9QQUlSUygpKQotI2RlZmluZSBDT0xTICAgICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MUygpKQotI2RlZmluZSBFU0NERUxBWSAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoRVNDREVMQVkoKSkKLSNkZWZpbmUgTElORVMgICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKExJTkVTKCkpCi0jZGVmaW5lIFRBQlNJWkUgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihUQUJTSVpFKCkpCi0KLSNlbHNlCi0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoV0lORE9XICopIGN1cnNjcjsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoV0lORE9XICopIG5ld3NjcjsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoV0lORE9XICopIHN0ZHNjcjsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2hhcikgdHR5dHlwZVtdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIENPTE9SUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBDT0xPUl9QQUlSUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBDT0xTOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIEVTQ0RFTEFZOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIExJTkVTOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIFRBQlNJWkU7Ci0KLSNlbmRpZgotCi0vKgotICogUHNldWRvLWNoYXJhY3RlciB0b2tlbnMgb3V0c2lkZSBBU0NJSSByYW5nZS4gIFRoZSBjdXJzZXMgd2dldGNoKCkgZnVuY3Rpb24KLSAqIHdpbGwgcmV0dXJuIGFueSBnaXZlbiBvbmUgb2YgdGhlc2Ugb25seSBpZiB0aGUgY29ycmVzcG9uZGluZyBrLSBjYXBhYmlsaXR5Ci0gKiBpcyBkZWZpbmVkIGluIHlvdXIgdGVybWluYWwncyB0ZXJtaW5mbyBlbnRyeS4KLSAqCi0gKiBTb21lIGtleXMgKEtFWV9BMSwgZXRjKSBhcmUgYXJyYW5nZWQgbGlrZSB0aGlzOgotICoJYTEgICAgIHVwICAgIGEzCi0gKglsZWZ0ICAgYjIgICAgcmlnaHQKLSAqCWMxICAgICBkb3duICBjMwotICoKLSAqIEEgZmV3IGtleSBjb2RlcyBkbyBub3QgZGVwZW5kIHVwb24gdGhlIHRlcm1pbmZvIGVudHJ5LgotICovCi0jZGVmaW5lIEtFWV9DT0RFX1lFUwkwNDAwCQkvKiBBIHdjaGFyX3QgY29udGFpbnMgYSBrZXkgY29kZSAqLwotI2RlZmluZSBLRVlfTUlOCQkwNDAxCQkvKiBNaW5pbXVtIGN1cnNlcyBrZXkgKi8KLSNkZWZpbmUgS0VZX0JSRUFLCTA0MDEJCS8qIEJyZWFrIGtleSAodW5yZWxpYWJsZSkgKi8KLSNkZWZpbmUgS0VZX1NSRVNFVAkwNTMwCQkvKiBTb2Z0IChwYXJ0aWFsKSByZXNldCAodW5yZWxpYWJsZSkgKi8KLSNkZWZpbmUgS0VZX1JFU0VUCTA1MzEJCS8qIFJlc2V0IG9yIGhhcmQgcmVzZXQgKHVucmVsaWFibGUpICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cnNlcy50YWlsIGIvaW5jbHVkZS9jdXJzZXMudGFpbAppbmRleCBhZWY3YzM3Li41ZjkxMWFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cnNlcy50YWlsCisrKyBiL2luY2x1ZGUvY3Vyc2VzLnRhaWwKQEAgLTEsNCArMSw0IEBACi0vKiAkSWQ6IGN1cnNlcy50YWlsLHYgMS4xNiAyMDA4LzA3LzA1IDIwOjIwOjM4IHRvbSBFeHAgJCAqLworLyogJElkOiBjdXJzZXMudGFpbCx2IDEuMjEgMjAxMS8xMC8yOSAyMDowMzoyMiB0b20gRXhwICQgKi8KIC8qCiAgKiB2aWxlOmNtb2RlOgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgbmN1cnNlcywgZGVzaWduZWQgdG8gYmUgYXBwZW5kZWQgYWZ0ZXIgY3Vyc2VzLmguaW4KQEAgLTk0LDEzICs5NCwyMiBAQAogfQogTUVWRU5UOwogCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRtb3VzZSAoTUVWRU5UICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdW5nZXRtb3VzZSAoTUVWRU5UICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpICAgIGhhc19tb3VzZSh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBnZXRtb3VzZSAoTUVWRU5UICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHVuZ2V0bW91c2UgKE1FVkVOVCAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChtbWFza190KSBtb3VzZW1hc2sgKG1tYXNrX3QsIG1tYXNrX3QgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgd2VuY2xvc2UgKGNvbnN0IFdJTkRPVyAqLCBpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtb3VzZWludGVydmFsIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIHdtb3VzZV90cmFmbyAoY29uc3QgV0lORE9XKiwgaW50KiwgaW50KiwgYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgbW91c2VfdHJhZm8gKGludCosIGludCosIGJvb2wpOyAgICAgICAgICAgICAgLyogZ2VuZXJhdGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgICAgd2VuY2xvc2UgKGNvbnN0IFdJTkRPVyAqLCBpbnQsIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgbW91c2VpbnRlcnZhbCAoaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSAgICB3bW91c2VfdHJhZm8gKGNvbnN0IFdJTkRPVyosIGludCosIGludCosIGJvb2wpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpICAgIG1vdXNlX3RyYWZvIChpbnQqLCBpbnQqLCBib29sKTsgICAgICAgICAgICAgIC8qIGdlbmVyYXRlZCAqLworCisjaWYgTkNVUlNFU19TUF9GVU5DUworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpICAgIE5DVVJTRVNfU1BfTkFNRShoYXNfbW91c2UpIChTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBOQ1VSU0VTX1NQX05BTUUoZ2V0bW91c2UpIChTQ1JFRU4qLCBNRVZFTlQgKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgTkNVUlNFU19TUF9OQU1FKHVuZ2V0bW91c2UpIChTQ1JFRU4qLE1FVkVOVCAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChtbWFza190KSBOQ1VSU0VTX1NQX05BTUUobW91c2VtYXNrKSAoU0NSRUVOKiwgbW1hc2tfdCwgbW1hc2tfdCAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBOQ1VSU0VTX1NQX05BTUUobW91c2VpbnRlcnZhbCkgKFNDUkVFTiosIGludCk7CisjZW5kaWYKIAogI2RlZmluZSBtb3VzZV90cmFmbyh5LHgsdG9fc2NyZWVuKSB3bW91c2VfdHJhZm8oc3Rkc2NyLHkseCx0b19zY3JlZW4pCiAKQEAgLTEwOSw2ICsxMTgsMTEgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG1jcHJpbnQgKGNoYXIgKiwgaW50KTsJLyogZGlyZWN0IGRhdGEgdG8gcHJpbnRlciAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaGFzX2tleSAoaW50KTsJCS8qIGRvIHdlIGhhdmUgZ2l2ZW4ga2V5PyAqLwogCisjaWYgTkNVUlNFU19TUF9GVU5DUworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKGhhc19rZXkpIChTQ1JFRU4qLCBpbnQpOyAgICAvKiBkbyB3ZSBoYXZlIGdpdmVuIGtleT8gKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRShtY3ByaW50KSAoU0NSRUVOKiwgY2hhciAqLCBpbnQpOwkvKiBkaXJlY3QgZGF0YSB0byBwcmludGVyICovCisjZW5kaWYKKwogLyogRGVidWdnaW5nIDogdXNlIHdpdGggbGlibmN1cnNlc19nLmEgKi8KIAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF90cmFjZWYgKGNvbnN0IGNoYXIgKiwgLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpOwpAQCAtMTE5LDcgKzEzMyw3IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjaGFyIChpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlY2h0eXBlIChjaHR5cGUpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlY2h0eXBlMiAoaW50LCBjaHR5cGUpOwotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCiAjZGVmaW5lIF90cmFjZWNoX3QJCV90cmFjZWNjaGFyX3QKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWNjaGFyX3QgKGNvbnN0IGNjaGFyX3QgKik7CiAjZGVmaW5lIF90cmFjZWNoX3QyCQlfdHJhY2VjY2hhcl90MgpAQCAtMTYwLDYgKzE3NCw4IEBACiAjZGVmaW5lIE9QVElNSVpFX0FMTAkJMHhmZgkvKiBlbmFibGUgYWxsIG9wdGltaXphdGlvbnMgKGRmbHQpICovCiAjZW5kaWYKIAorI2luY2x1ZGUgPHVuY3RybC5oPgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2lmbmRlZiBOQ1VSU0VTX05PTUFDUk9TCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cnNlcy53aWRlIGIvaW5jbHVkZS9jdXJzZXMud2lkZQppbmRleCAwYzc5OWU0Li41ZDEzMGE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cnNlcy53aWRlCisrKyBiL2luY2x1ZGUvY3Vyc2VzLndpZGUKQEAgLTEsMTQgKzEsMTYgQEAKLS8qICRJZDogY3Vyc2VzLndpZGUsdiAxLjM0IDIwMDcvMDMvMTAgMTc6NTI6MjMgdG9tIEV4cCAkICovCisvKiAkSWQ6IGN1cnNlcy53aWRlLHYgMS40NiAyMDE0LzAyLzAxIDIyOjAwOjMyIHRvbSBFeHAgJCAqLwogLyoKICAqIHZpbGU6Y21vZGU6CiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBuY3Vyc2VzLCBkZXNpZ25lZCB0byBiZSBhcHBlbmRlZCBhZnRlciBjdXJzZXMuaC5pbgogICogKHNlZSB0aGF0IGZpbGUgZm9yIHRoZSByZWxldmFudCBjb3B5cmlnaHQpLgogICovCi0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2RlZmluZSBfWE9QRU5fQ1VSU0VTIDEKKworI2lmIE5DVVJTRVNfV0lERUNIQVIKIAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihjY2hhcl90ICopIF9uY193YWNzOwogCi0jZGVmaW5lIE5DVVJTRVNfV0FDUyhjKQkoJl9uY193YWNzWyh1bnNpZ25lZCBjaGFyKWNdKQorI2RlZmluZSBOQ1VSU0VTX1dBQ1MoYykJKCZfbmNfd2Fjc1tOQ1VSU0VTX0NBU1QodW5zaWduZWQgY2hhciwoYykpXSkKIAogI2RlZmluZSBXQUNTX0JTU0IJTkNVUlNFU19XQUNTKCdsJykKICNkZWZpbmUgV0FDU19TU0JCCU5DVVJTRVNfV0FDUygnbScpCkBAIC02MCw2ICs2Miw1NiBAQAogI2RlZmluZSBXQUNTX05FUVVBTAlOQ1VSU0VTX1dBQ1MoJ3wnKSAvKiBub3QgZXF1YWwgKi8KICNkZWZpbmUgV0FDU19TVEVSTElORwlOQ1VSU0VTX1dBQ1MoJ30nKSAvKiBVSyBwb3VuZCBzaWduICovCiAKKwkvKiBkb3VibGUgbGluZXMgKi8KKyNkZWZpbmUgV0FDU19CRERCCU5DVVJTRVNfV0FDUygnQycpCisjZGVmaW5lIFdBQ1NfRERCQglOQ1VSU0VTX1dBQ1MoJ0QnKQorI2RlZmluZSBXQUNTX0JCREQJTkNVUlNFU19XQUNTKCdCJykKKyNkZWZpbmUgV0FDU19EQkJECU5DVVJTRVNfV0FDUygnQScpCisjZGVmaW5lIFdBQ1NfREJERAlOQ1VSU0VTX1dBQ1MoJ0cnKQorI2RlZmluZSBXQUNTX0REREIJTkNVUlNFU19XQUNTKCdGJykKKyNkZWZpbmUgV0FDU19EREJECU5DVVJTRVNfV0FDUygnSCcpCisjZGVmaW5lIFdBQ1NfQkRERAlOQ1VSU0VTX1dBQ1MoJ0knKQorI2RlZmluZSBXQUNTX0JEQkQJTkNVUlNFU19XQUNTKCdSJykKKyNkZWZpbmUgV0FDU19EQkRCCU5DVVJTRVNfV0FDUygnWScpCisjZGVmaW5lIFdBQ1NfRERERAlOQ1VSU0VTX1dBQ1MoJ0UnKQorCisjZGVmaW5lIFdBQ1NfRF9VTENPUk5FUglXQUNTX0JEREIKKyNkZWZpbmUgV0FDU19EX0xMQ09STkVSCVdBQ1NfRERCQgorI2RlZmluZSBXQUNTX0RfVVJDT1JORVIJV0FDU19CQkRECisjZGVmaW5lIFdBQ1NfRF9MUkNPUk5FUglXQUNTX0RCQkQKKyNkZWZpbmUgV0FDU19EX1JURUUJV0FDU19EQkRECisjZGVmaW5lIFdBQ1NfRF9MVEVFCVdBQ1NfREREQgorI2RlZmluZSBXQUNTX0RfQlRFRQlXQUNTX0REQkQKKyNkZWZpbmUgV0FDU19EX1RURUUJV0FDU19CRERECisjZGVmaW5lIFdBQ1NfRF9ITElORQlXQUNTX0JEQkQKKyNkZWZpbmUgV0FDU19EX1ZMSU5FCVdBQ1NfREJEQgorI2RlZmluZSBXQUNTX0RfUExVUwlXQUNTX0REREQKKworCS8qIHRoaWNrIGxpbmVzICovCisjZGVmaW5lIFdBQ1NfQlRUQglOQ1VSU0VTX1dBQ1MoJ0wnKQorI2RlZmluZSBXQUNTX1RUQkIJTkNVUlNFU19XQUNTKCdNJykKKyNkZWZpbmUgV0FDU19CQlRUCU5DVVJTRVNfV0FDUygnSycpCisjZGVmaW5lIFdBQ1NfVEJCVAlOQ1VSU0VTX1dBQ1MoJ0onKQorI2RlZmluZSBXQUNTX1RCVFQJTkNVUlNFU19XQUNTKCdVJykKKyNkZWZpbmUgV0FDU19UVFRCCU5DVVJTRVNfV0FDUygnVCcpCisjZGVmaW5lIFdBQ1NfVFRCVAlOQ1VSU0VTX1dBQ1MoJ1YnKQorI2RlZmluZSBXQUNTX0JUVFQJTkNVUlNFU19XQUNTKCdXJykKKyNkZWZpbmUgV0FDU19CVEJUCU5DVVJTRVNfV0FDUygnUScpCisjZGVmaW5lIFdBQ1NfVEJUQglOQ1VSU0VTX1dBQ1MoJ1gnKQorI2RlZmluZSBXQUNTX1RUVFQJTkNVUlNFU19XQUNTKCdOJykKKworI2RlZmluZSBXQUNTX1RfVUxDT1JORVIJV0FDU19CVFRCCisjZGVmaW5lIFdBQ1NfVF9MTENPUk5FUglXQUNTX1RUQkIKKyNkZWZpbmUgV0FDU19UX1VSQ09STkVSCVdBQ1NfQkJUVAorI2RlZmluZSBXQUNTX1RfTFJDT1JORVIJV0FDU19UQkJUCisjZGVmaW5lIFdBQ1NfVF9SVEVFCVdBQ1NfVEJUVAorI2RlZmluZSBXQUNTX1RfTFRFRQlXQUNTX1RUVEIKKyNkZWZpbmUgV0FDU19UX0JURUUJV0FDU19UVEJUCisjZGVmaW5lIFdBQ1NfVF9UVEVFCVdBQ1NfQlRUVAorI2RlZmluZSBXQUNTX1RfSExJTkUJV0FDU19CVEJUCisjZGVmaW5lIFdBQ1NfVF9WTElORQlXQUNTX1RCVEIKKyNkZWZpbmUgV0FDU19UX1BMVVMJV0FDU19UVFRUCisKIC8qCiAgKiBGdW5jdGlvbiBwcm90b3R5cGVzIGZvciB3aWRlLWNoYXJhY3RlciBvcGVyYXRpb25zLgogICoKQEAgLTgzLDcgKzEzNSw3IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRfd2NoICh3aW50X3QgKik7CQkJCS8qIGdlbmVyYXRlZDpXSURFQyAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0X3dzdHIgKHdpbnRfdCAqKTsJCQkJLyogZ2VuZXJhdGVkOldJREVDICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRia2dybmQgKGNjaGFyX3QgKik7CQkJLyogZ2VuZXJhdGVkOldJREVDICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRjY2hhciAoY29uc3QgY2NoYXJfdCAqLCB3Y2hhcl90KiwgYXR0cl90Kiwgc2hvcnQqLCB2b2lkKik7CS8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRjY2hhciAoY29uc3QgY2NoYXJfdCAqLCB3Y2hhcl90KiwgYXR0cl90KiwgTkNVUlNFU19QQUlSU19UKiwgdm9pZCopOwkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bl93c3RyICh3aW50X3QgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQ6V0lERUMgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhsaW5lX3NldCAoY29uc3QgY2NoYXJfdCAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkOldJREVDICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbl93Y2ggKGNjaGFyX3QgKik7CQkJCS8qIGdlbmVyYXRlZDpXSURFQyAqLwpAQCAtMTMzLDEyICsxODUsMTIgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2lud3N0ciAoV0lORE9XICosIGludCwgaW50LCB3Y2hhcl90ICopOwkJLyogZ2VuZXJhdGVkOldJREVDICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnd2bGluZV9zZXQgKFdJTkRPVyAqLCBpbnQsaW50LCBjb25zdCBjY2hhcl90ICosaW50KTsgLyogZ2VuZXJhdGVkOldJREVDICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwZWNob193Y2hhciAoV0lORE9XICosIGNvbnN0IGNjaGFyX3QgKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzZXRjY2hhciAoY2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIGNvbnN0IGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzZXRjY2hhciAoY2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIGNvbnN0IGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCBjb25zdCB2b2lkICopOwkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX3dzZXQgKGludCwgY29uc3Qgd2NoYXJfdCAqLCBpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGF0dHJfdCkgdGVybV9hdHRycyAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVuZ2V0X3djaCAoY29uc3Qgd2NoYXJfdCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZpZF9hdHRyIChhdHRyX3QsIHNob3J0LCB2b2lkICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZpZF9wdXRzIChhdHRyX3QsIHNob3J0LCB2b2lkICosIGludCAoKikoaW50KSk7IC8qIGltcGxlbWVudGVkICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2aWRfYXR0ciAoYXR0cl90LCBOQ1VSU0VTX1BBSVJTX1QsIHZvaWQgKik7CQkvKiBpbXBsZW1lbnRlZCAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdmlkX3B1dHMgKGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCB2b2lkICosIE5DVVJTRVNfT1VUQyk7IC8qIGltcGxlbWVudGVkICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2bGluZV9zZXQgKGNvbnN0IGNjaGFyX3QgKiwgaW50KTsJCS8qIGdlbmVyYXRlZDpXSURFQyAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZF93Y2ggKFdJTkRPVyAqLGNvbnN0IGNjaGFyX3QgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZF93Y2huc3RyIChXSU5ET1cgKixjb25zdCBjY2hhcl90ICosaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KQEAgLTE2NSw4MiArMjE3LDkwIEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQod2NoYXJfdCopIHd1bmN0cmwgKGNjaGFyX3QgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHd2bGluZV9zZXQgKFdJTkRPVyAqLCBjb25zdCBjY2hhcl90ICosIGludCk7CS8qIGltcGxlbWVudGVkICovCiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitleHRlcm4gTkNVUlNFU19FWFBPUlQoYXR0cl90KSBOQ1VSU0VTX1NQX05BTUUodGVybV9hdHRycykgKFNDUkVFTiopOwkJLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHVuZ2V0X3djaCkgKFNDUkVFTiosIGNvbnN0IHdjaGFyX3QpOwkvKiBpbXBsZW1lbnRlZDpTUF9GVU5DICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQod2NoYXJfdCopIE5DVVJTRVNfU1BfTkFNRSh3dW5jdHJsKSAoU0NSRUVOKiwgY2NoYXJfdCAqKTsJLyogaW1wbGVtZW50ZWQ6U1BfRlVOQyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKHZpZF9hdHRyKSAoU0NSRUVOKiwgYXR0cl90LCBOQ1VSU0VTX1BBSVJTX1QsIHZvaWQgKik7CS8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIE5DVVJTRVNfU1BfTkFNRSh2aWRfcHV0cykgKFNDUkVFTiosIGF0dHJfdCwgTkNVUlNFU19QQUlSU19ULCB2b2lkICosIE5DVVJTRVNfU1BfT1VUQyk7CS8qIGltcGxlbWVudGVkOlNQX0ZVTkMgKi8KKyNlbmRpZgorCiAjaWZuZGVmIE5DVVJTRVNfTk9NQUNST1MKIAogLyoKICAqIFhTSSBjdXJzZXMgbWFjcm9zIGZvciBYUEc0IGNvbmZvcm1hbmNlLgogICovCi0jZGVmaW5lIGFkZF93Y2goYykJCQl3YWRkX3djaChzdGRzY3IsYykKLSNkZWZpbmUgYWRkX3djaG5zdHIoc3RyLG4pCQl3YWRkX3djaG5zdHIoc3Rkc2NyLHN0cixuKQotI2RlZmluZSBhZGRfd2Noc3RyKHN0cikJCQl3YWRkX3djaHN0cihzdGRzY3Isc3RyKQotI2RlZmluZSBhZGRud3N0cih3c3RyLG4pCQl3YWRkbndzdHIoc3Rkc2NyLHdzdHIsbikKLSNkZWZpbmUgYWRkd3N0cih3c3RyKQkJCXdhZGR3c3RyKHN0ZHNjcix3c3RyKQotI2RlZmluZSBia2dybmQoYykJCQl3Ymtncm5kKHN0ZHNjcixjKQotI2RlZmluZSBia2dybmRzZXQoYykJCQl3Ymtncm5kc2V0KHN0ZHNjcixjKQotI2RlZmluZSBib3JkZXJfc2V0KGwscix0LGIsdGwsdHIsYmwsYnIpIHdib3JkZXJfc2V0KHN0ZHNjcixsLHIsdCxiLHRsLHRyLGJsLGJyKQotI2RlZmluZSBib3hfc2V0KHcsdixoKQkJCXdib3JkZXJfc2V0KHcsdix2LGgsaCwwLDAsMCwwKQotI2RlZmluZSBlY2hvX3djaGFyKGMpCQkJd2VjaG9fd2NoYXIoc3Rkc2NyLGMpCi0jZGVmaW5lIGdldF93Y2goYykJCQl3Z2V0X3djaChzdGRzY3IsYykKLSNkZWZpbmUgZ2V0X3dzdHIodCkJCQl3Z2V0X3dzdHIoc3Rkc2NyLHQpCi0jZGVmaW5lIGdldGJrZ3JuZCh3Y2gpCQkJd2dldGJrZ3JuZChzdGRzY3Isd2NoKQotI2RlZmluZSBnZXRuX3dzdHIodCxuKQkJCXdnZXRuX3dzdHIoc3Rkc2NyLHQsbikKLSNkZWZpbmUgaGxpbmVfc2V0KGMsbikJCQl3aGxpbmVfc2V0KHN0ZHNjcixjLG4pCi0jZGVmaW5lIGluX3djaChjKQkJCXdpbl93Y2goc3Rkc2NyLGMpCi0jZGVmaW5lIGluX3djaG5zdHIoYyxuKQkJCXdpbl93Y2huc3RyKHN0ZHNjcixjLG4pCi0jZGVmaW5lIGluX3djaHN0cihjKQkJCXdpbl93Y2hzdHIoc3Rkc2NyLGMpCi0jZGVmaW5lIGlubndzdHIoYyxuKQkJCXdpbm53c3RyKHN0ZHNjcixjLG4pCi0jZGVmaW5lIGluc19ud3N0cih0LG4pCQkJd2luc19ud3N0cihzdGRzY3IsdCxuKQotI2RlZmluZSBpbnNfd2NoKGMpCQkJd2luc193Y2goc3Rkc2NyLGMpCi0jZGVmaW5lIGluc193c3RyKHQpCQkJd2luc193c3RyKHN0ZHNjcix0KQotI2RlZmluZSBpbndzdHIoYykJCQl3aW53c3RyKHN0ZHNjcixjKQotI2RlZmluZSB2bGluZV9zZXQoYyxuKQkJCXd2bGluZV9zZXQoc3Rkc2NyLGMsbikKLSNkZWZpbmUgd2FkZF93Y2hzdHIod2luLHN0cikJCXdhZGRfd2NobnN0cih3aW4sc3RyLC0xKQotI2RlZmluZSB3YWRkd3N0cih3aW4sd3N0cikJCXdhZGRud3N0cih3aW4sd3N0ciwtMSkKLSNkZWZpbmUgd2dldF93c3RyKHcsdCkJCQl3Z2V0bl93c3RyKHcsdCwtMSkKLSNkZWZpbmUgd2luX3djaHN0cih3LGMpCQkJd2luX3djaG5zdHIodyxjLC0xKQotI2RlZmluZSB3aW5zX3dzdHIodyx0KQkJCXdpbnNfbndzdHIodyx0LC0xKQorI2RlZmluZSBhZGRfd2NoKGMpCQkJd2FkZF93Y2goc3Rkc2NyLChjKSkKKyNkZWZpbmUgYWRkX3djaG5zdHIoc3RyLG4pCQl3YWRkX3djaG5zdHIoc3Rkc2NyLChzdHIpLChuKSkKKyNkZWZpbmUgYWRkX3djaHN0cihzdHIpCQkJd2FkZF93Y2hzdHIoc3Rkc2NyLChzdHIpKQorI2RlZmluZSBhZGRud3N0cih3c3RyLG4pCQl3YWRkbndzdHIoc3Rkc2NyLCh3c3RyKSwobikpCisjZGVmaW5lIGFkZHdzdHIod3N0cikJCQl3YWRkd3N0cihzdGRzY3IsKHdzdHIpKQorI2RlZmluZSBia2dybmQoYykJCQl3Ymtncm5kKHN0ZHNjciwoYykpCisjZGVmaW5lIGJrZ3JuZHNldChjKQkJCXdia2dybmRzZXQoc3Rkc2NyLChjKSkKKyNkZWZpbmUgYm9yZGVyX3NldChsLHIsdCxiLHRsLHRyLGJsLGJyKSB3Ym9yZGVyX3NldChzdGRzY3IsKGwpLChyKSwodCksKGIpLHRsLHRyLGJsLGJyKQorI2RlZmluZSBib3hfc2V0KHcsdixoKQkJCXdib3JkZXJfc2V0KCh3KSwodiksKHYpLChoKSwoaCksMCwwLDAsMCkKKyNkZWZpbmUgZWNob193Y2hhcihjKQkJCXdlY2hvX3djaGFyKHN0ZHNjciwoYykpCisjZGVmaW5lIGdldF93Y2goYykJCQl3Z2V0X3djaChzdGRzY3IsKGMpKQorI2RlZmluZSBnZXRfd3N0cih0KQkJCXdnZXRfd3N0cihzdGRzY3IsKHQpKQorI2RlZmluZSBnZXRia2dybmQod2NoKQkJCXdnZXRia2dybmQoc3Rkc2NyLCh3Y2gpKQorI2RlZmluZSBnZXRuX3dzdHIodCxuKQkJCXdnZXRuX3dzdHIoc3Rkc2NyLCh0KSwobikpCisjZGVmaW5lIGhsaW5lX3NldChjLG4pCQkJd2hsaW5lX3NldChzdGRzY3IsKGMpLChuKSkKKyNkZWZpbmUgaW5fd2NoKGMpCQkJd2luX3djaChzdGRzY3IsKGMpKQorI2RlZmluZSBpbl93Y2huc3RyKGMsbikJCQl3aW5fd2NobnN0cihzdGRzY3IsKGMpLChuKSkKKyNkZWZpbmUgaW5fd2Noc3RyKGMpCQkJd2luX3djaHN0cihzdGRzY3IsKGMpKQorI2RlZmluZSBpbm53c3RyKGMsbikJCQl3aW5ud3N0cihzdGRzY3IsKGMpLChuKSkKKyNkZWZpbmUgaW5zX253c3RyKHQsbikJCQl3aW5zX253c3RyKHN0ZHNjciwodCksKG4pKQorI2RlZmluZSBpbnNfd2NoKGMpCQkJd2luc193Y2goc3Rkc2NyLChjKSkKKyNkZWZpbmUgaW5zX3dzdHIodCkJCQl3aW5zX3dzdHIoc3Rkc2NyLCh0KSkKKyNkZWZpbmUgaW53c3RyKGMpCQkJd2lud3N0cihzdGRzY3IsKGMpKQorI2RlZmluZSB2bGluZV9zZXQoYyxuKQkJCXd2bGluZV9zZXQoc3Rkc2NyLChjKSwobikpCisjZGVmaW5lIHdhZGRfd2Noc3RyKHdpbixzdHIpCQl3YWRkX3djaG5zdHIoKHdpbiksKHN0ciksLTEpCisjZGVmaW5lIHdhZGR3c3RyKHdpbix3c3RyKQkJd2FkZG53c3RyKCh3aW4pLCh3c3RyKSwtMSkKKyNkZWZpbmUgd2dldF93c3RyKHcsdCkJCQl3Z2V0bl93c3RyKCh3KSwodCksLTEpCisjZGVmaW5lIHdpbl93Y2hzdHIodyxjKQkJCXdpbl93Y2huc3RyKCh3KSwoYyksLTEpCisjZGVmaW5lIHdpbnNfd3N0cih3LHQpCQkJd2luc19ud3N0cigodyksKHQpLC0xKQogCiAjaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIHdnZXRia2dybmQod2luLHdjaCkJCSgqd2NoID0gd2luLT5fYmtncm5kLCBPSykKKyNkZWZpbmUgd2dldGJrZ3JuZCh3aW4sd2NoKQkJKCh3aW4pID8gKCood2NoKSA9ICh3aW4pLT5fYmtncm5kKSA6ICood2NoKSwgT0spCiAjZW5kaWYKIAotI2RlZmluZSBtdmFkZF93Y2goeSx4LGMpCQltdndhZGRfd2NoKHN0ZHNjcix5LHgsYykKLSNkZWZpbmUgbXZhZGRfd2NobnN0cih5LHgscyxuKQkJbXZ3YWRkX3djaG5zdHIoc3Rkc2NyLHkseCxzLG4pCi0jZGVmaW5lIG12YWRkX3djaHN0cih5LHgscykJCW12d2FkZF93Y2hzdHIoc3Rkc2NyLHkseCxzKQotI2RlZmluZSBtdmFkZG53c3RyKHkseCx3c3RyLG4pCQltdndhZGRud3N0cihzdGRzY3IseSx4LHdzdHIsbikKLSNkZWZpbmUgbXZhZGR3c3RyKHkseCx3c3RyKQkJbXZ3YWRkd3N0cihzdGRzY3IseSx4LHdzdHIpCi0jZGVmaW5lIG12Z2V0X3djaCh5LHgsYykJCW12d2dldF93Y2goc3Rkc2NyLHkseCxjKQotI2RlZmluZSBtdmdldF93c3RyKHkseCx0KQkJbXZ3Z2V0X3dzdHIoc3Rkc2NyLHkseCx0KQotI2RlZmluZSBtdmdldG5fd3N0cih5LHgsdCxuKQkJbXZ3Z2V0bl93c3RyKHN0ZHNjcix5LHgsdCxuKQotI2RlZmluZSBtdmhsaW5lX3NldCh5LHgsYyxuKQkJbXZ3aGxpbmVfc2V0KHN0ZHNjcix5LHgsYyxuKQotI2RlZmluZSBtdmluX3djaCh5LHgsYykJCQltdndpbl93Y2goc3Rkc2NyLHkseCxjKQotI2RlZmluZSBtdmluX3djaG5zdHIoeSx4LGMsbikJCW12d2luX3djaG5zdHIoc3Rkc2NyLHkseCxjLG4pCi0jZGVmaW5lIG12aW5fd2Noc3RyKHkseCxjKQkJbXZ3aW5fd2Noc3RyKHN0ZHNjcix5LHgsYykKLSNkZWZpbmUgbXZpbm53c3RyKHkseCxjLG4pCQltdndpbm53c3RyKHN0ZHNjcix5LHgsYyxuKQotI2RlZmluZSBtdmluc19ud3N0cih5LHgsdCxuKQkJbXZ3aW5zX253c3RyKHN0ZHNjcix5LHgsdCxuKQotI2RlZmluZSBtdmluc193Y2goeSx4LGMpCQltdndpbnNfd2NoKHN0ZHNjcix5LHgsYykKLSNkZWZpbmUgbXZpbnNfd3N0cih5LHgsdCkJCW12d2luc193c3RyKHN0ZHNjcix5LHgsdCkKLSNkZWZpbmUgbXZpbndzdHIoeSx4LGMpCQkJbXZ3aW53c3RyKHN0ZHNjcix5LHgsYykKLSNkZWZpbmUgbXZ2bGluZV9zZXQoeSx4LGMsbikJCW12d3ZsaW5lX3NldChzdGRzY3IseSx4LGMsbikKKyNkZWZpbmUgbXZhZGRfd2NoKHkseCxjKQkJbXZ3YWRkX3djaChzdGRzY3IsKHkpLCh4KSwoYykpCisjZGVmaW5lIG12YWRkX3djaG5zdHIoeSx4LHMsbikJCW12d2FkZF93Y2huc3RyKHN0ZHNjciwoeSksKHgpLChzKSwobikpCisjZGVmaW5lIG12YWRkX3djaHN0cih5LHgscykJCW12d2FkZF93Y2hzdHIoc3Rkc2NyLCh5KSwoeCksKHMpKQorI2RlZmluZSBtdmFkZG53c3RyKHkseCx3c3RyLG4pCQltdndhZGRud3N0cihzdGRzY3IsKHkpLCh4KSwod3N0ciksKG4pKQorI2RlZmluZSBtdmFkZHdzdHIoeSx4LHdzdHIpCQltdndhZGR3c3RyKHN0ZHNjciwoeSksKHgpLCh3c3RyKSkKKyNkZWZpbmUgbXZnZXRfd2NoKHkseCxjKQkJbXZ3Z2V0X3djaChzdGRzY3IsKHkpLCh4KSwoYykpCisjZGVmaW5lIG12Z2V0X3dzdHIoeSx4LHQpCQltdndnZXRfd3N0cihzdGRzY3IsKHkpLCh4KSwodCkpCisjZGVmaW5lIG12Z2V0bl93c3RyKHkseCx0LG4pCQltdndnZXRuX3dzdHIoc3Rkc2NyLCh5KSwoeCksKHQpLChuKSkKKyNkZWZpbmUgbXZobGluZV9zZXQoeSx4LGMsbikJCW12d2hsaW5lX3NldChzdGRzY3IsKHkpLCh4KSwoYyksKG4pKQorI2RlZmluZSBtdmluX3djaCh5LHgsYykJCQltdndpbl93Y2goc3Rkc2NyLCh5KSwoeCksKGMpKQorI2RlZmluZSBtdmluX3djaG5zdHIoeSx4LGMsbikJCW12d2luX3djaG5zdHIoc3Rkc2NyLCh5KSwoeCksKGMpLChuKSkKKyNkZWZpbmUgbXZpbl93Y2hzdHIoeSx4LGMpCQltdndpbl93Y2hzdHIoc3Rkc2NyLCh5KSwoeCksKGMpKQorI2RlZmluZSBtdmlubndzdHIoeSx4LGMsbikJCW12d2lubndzdHIoc3Rkc2NyLCh5KSwoeCksKGMpLChuKSkKKyNkZWZpbmUgbXZpbnNfbndzdHIoeSx4LHQsbikJCW12d2luc19ud3N0cihzdGRzY3IsKHkpLCh4KSwodCksKG4pKQorI2RlZmluZSBtdmluc193Y2goeSx4LGMpCQltdndpbnNfd2NoKHN0ZHNjciwoeSksKHgpLChjKSkKKyNkZWZpbmUgbXZpbnNfd3N0cih5LHgsdCkJCW12d2luc193c3RyKHN0ZHNjciwoeSksKHgpLCh0KSkKKyNkZWZpbmUgbXZpbndzdHIoeSx4LGMpCQkJbXZ3aW53c3RyKHN0ZHNjciwoeSksKHgpLChjKSkKKyNkZWZpbmUgbXZ2bGluZV9zZXQoeSx4LGMsbikJCW12d3ZsaW5lX3NldChzdGRzY3IsKHkpLCh4KSwoYyksKG4pKQogCi0jZGVmaW5lIG12d2FkZF93Y2god2luLHkseCxjKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRfd2NoKHdpbixjKSkKLSNkZWZpbmUgbXZ3YWRkX3djaG5zdHIod2luLHkseCxzLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkX3djaG5zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2FkZF93Y2hzdHIod2luLHkseCxzKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZF93Y2hzdHIod2luLHMpKQotI2RlZmluZSBtdndhZGRud3N0cih3aW4seSx4LHdzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRud3N0cih3aW4sd3N0cixuKSkKLSNkZWZpbmUgbXZ3YWRkd3N0cih3aW4seSx4LHdzdHIpCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkd3N0cih3aW4sd3N0cikpCi0jZGVmaW5lIG12d2dldF93Y2god2luLHkseCxjKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRfd2NoKHdpbixjKSkKLSNkZWZpbmUgbXZ3Z2V0X3dzdHIod2luLHkseCx0KQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRfd3N0cih3aW4sdCkpCi0jZGVmaW5lIG12d2dldG5fd3N0cih3aW4seSx4LHQsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRuX3dzdHIod2luLHQsbikpCi0jZGVmaW5lIG12d2hsaW5lX3NldCh3aW4seSx4LGMsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdobGluZV9zZXQod2luLGMsbikpCi0jZGVmaW5lIG12d2luX3djaCh3aW4seSx4LGMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luX3djaCh3aW4sYykpCi0jZGVmaW5lIG12d2luX3djaG5zdHIod2luLHkseCxjLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5fd2NobnN0cih3aW4sYyxuKSkKLSNkZWZpbmUgbXZ3aW5fd2Noc3RyKHdpbix5LHgsYykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5fd2Noc3RyKHdpbixjKSkKLSNkZWZpbmUgbXZ3aW5ud3N0cih3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5ud3N0cih3aW4sYyxuKSkKLSNkZWZpbmUgbXZ3aW5zX253c3RyKHdpbix5LHgsdCxuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc19ud3N0cih3aW4sdCxuKSkKLSNkZWZpbmUgbXZ3aW5zX3djaCh3aW4seSx4LGMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc193Y2god2luLGMpKQotI2RlZmluZSBtdndpbnNfd3N0cih3aW4seSx4LHQpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc193c3RyKHdpbix0KSkKLSNkZWZpbmUgbXZ3aW53c3RyKHdpbix5LHgsYykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW53c3RyKHdpbixjKSkKLSNkZWZpbmUgbXZ3dmxpbmVfc2V0KHdpbix5LHgsYyxuKQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd3ZsaW5lX3NldCh3aW4sYyxuKSkKKyNkZWZpbmUgbXZ3YWRkX3djaCh3aW4seSx4LGMpCQkod21vdmUod2luLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdhZGRfd2NoKCh3aW4pLChjKSkpCisjZGVmaW5lIG12d2FkZF93Y2huc3RyKHdpbix5LHgscyxuKQkod21vdmUod2luLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdhZGRfd2NobnN0cigod2luKSwocyksKG4pKSkKKyNkZWZpbmUgbXZ3YWRkX3djaHN0cih3aW4seSx4LHMpCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2FkZF93Y2hzdHIoKHdpbiksKHMpKSkKKyNkZWZpbmUgbXZ3YWRkbndzdHIod2luLHkseCx3c3RyLG4pCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2FkZG53c3RyKCh3aW4pLCh3c3RyKSwobikpKQorI2RlZmluZSBtdndhZGR3c3RyKHdpbix5LHgsd3N0cikJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3YWRkd3N0cigod2luKSwod3N0cikpKQorI2RlZmluZSBtdndnZXRfd2NoKHdpbix5LHgsYykJCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2dldF93Y2goKHdpbiksKGMpKSkKKyNkZWZpbmUgbXZ3Z2V0X3dzdHIod2luLHkseCx0KQkJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3Z2V0X3dzdHIoKHdpbiksKHQpKSkKKyNkZWZpbmUgbXZ3Z2V0bl93c3RyKHdpbix5LHgsdCxuKQkod21vdmUod2luLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdnZXRuX3dzdHIoKHdpbiksKHQpLChuKSkpCisjZGVmaW5lIG12d2hsaW5lX3NldCh3aW4seSx4LGMsbikJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3aGxpbmVfc2V0KCh3aW4pLChjKSwobikpKQorI2RlZmluZSBtdndpbl93Y2god2luLHkseCxjKQkJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3aW5fd2NoKCh3aW4pLChjKSkpCisjZGVmaW5lIG12d2luX3djaG5zdHIod2luLHkseCxjLG4pCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2luX3djaG5zdHIoKHdpbiksKGMpLChuKSkpCisjZGVmaW5lIG12d2luX3djaHN0cih3aW4seSx4LGMpCQkod21vdmUod2luLCh5KSwoeCkpID09IEVSUiA/IEVSUiA6IHdpbl93Y2hzdHIoKHdpbiksKGMpKSkKKyNkZWZpbmUgbXZ3aW5ud3N0cih3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2lubndzdHIoKHdpbiksKGMpLChuKSkpCisjZGVmaW5lIG12d2luc19ud3N0cih3aW4seSx4LHQsbikJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3aW5zX253c3RyKCh3aW4pLCh0KSwobikpKQorI2RlZmluZSBtdndpbnNfd2NoKHdpbix5LHgsYykJCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2luc193Y2goKHdpbiksKGMpKSkKKyNkZWZpbmUgbXZ3aW5zX3dzdHIod2luLHkseCx0KQkJKHdtb3ZlKHdpbiwoeSksKHgpKSA9PSBFUlIgPyBFUlIgOiB3aW5zX3dzdHIoKHdpbiksKHQpKSkKKyNkZWZpbmUgbXZ3aW53c3RyKHdpbix5LHgsYykJCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd2lud3N0cigod2luKSwoYykpKQorI2RlZmluZSBtdnd2bGluZV9zZXQod2luLHkseCxjLG4pCSh3bW92ZSh3aW4sKHkpLCh4KSkgPT0gRVJSID8gRVJSIDogd3ZsaW5lX3NldCgod2luKSwoYyksKG4pKSkKIAogI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KIApAQCAtMjQ5LDQgKzMwOSw0IEBACiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKSBfbmNfdmlzd2lidWYoY29uc3Qgd2ludF90ICopOwogI2VuZGlmCiAKLSNlbmRpZiAvKiBfWE9QRU5fU09VUkNFX0VYVEVOREVEICovCisjZW5kaWYgLyogTkNVUlNFU19XSURFQ0hBUiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ldGkuaCBiL2luY2x1ZGUvZXRpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYTYxOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9ldGkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgotICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCi0gKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKLSAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCi0gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKLSAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCi0gKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgotICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgotICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKLSAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCi0gKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NSwxOTk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qICRJZDogZXRpLmgsdiAxLjggMjAwMy8xMC8yNSAxNToyNDoyOSB0b20gRXhwICQgKi8KLQotI2lmbmRlZiBOQ1VSU0VTX0VUSV9IX2luY2wKLSNkZWZpbmUgTkNVUlNFU19FVElfSF9pbmNsIDEKLQotI2RlZmluZQlFX09LCQkJKDApCi0jZGVmaW5lCUVfU1lTVEVNX0VSUk9SCSAJKC0xKQotI2RlZmluZQlFX0JBRF9BUkdVTUVOVAkgCSgtMikKLSNkZWZpbmUJRV9QT1NURUQJIAkoLTMpCi0jZGVmaW5lCUVfQ09OTkVDVEVECSAJKC00KQotI2RlZmluZQlFX0JBRF9TVEFURQkgCSgtNSkKLSNkZWZpbmUJRV9OT19ST09NCSAJKC02KQotI2RlZmluZQlFX05PVF9QT1NURUQJCSgtNykKLSNkZWZpbmUJRV9VTktOT1dOX0NPTU1BTkQJKC04KQotI2RlZmluZQlFX05PX01BVENICQkoLTkpCi0jZGVmaW5lCUVfTk9UX1NFTEVDVEFCTEUJKC0xMCkKLSNkZWZpbmUJRV9OT1RfQ09OTkVDVEVECSAgICAgICAgKC0xMSkKLSNkZWZpbmUJRV9SRVFVRVNUX0RFTklFRAkoLTEyKQotI2RlZmluZQlFX0lOVkFMSURfRklFTEQJICAgICAgICAoLTEzKQotI2RlZmluZQlFX0NVUlJFTlQJCSgtMTQpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mb3JtLmggYi9pbmNsdWRlL2Zvcm0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ2OTFhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2Zvcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTUsMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAkSWQ6IGZvcm0uaCx2IDAuMjAgMjAwNC8xMi8wNCAyMjoyMjoxMCB0b20gRXhwICQgKi8KLQotI2lmbmRlZiBGT1JNX0gKLSNkZWZpbmUgRk9STV9ICi0KLSNpbmNsdWRlIDxjdXJzZXMuaD4KLSNpbmNsdWRlIDxldGkuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0gIGV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpZm5kZWYgRk9STV9QUklWX0gKLXR5cGVkZWYgdm9pZCAqRklFTERfQ0VMTDsKLSNlbmRpZgotCi0jaWZuZGVmIE5DVVJTRVNfRklFTERfSU5URVJOQUxTCi0jZGVmaW5lIE5DVVJTRVNfRklFTERfSU5URVJOQUxTIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi10eXBlZGVmIGludCBGb3JtX09wdGlvbnM7Ci10eXBlZGVmIGludCBGaWVsZF9PcHRpb25zOwotCi0JLyoqKioqKioqKioKLQkqICBfUEFHRSAgKgotCSoqKioqKioqKiovCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgc2hvcnQgcG1pbjsJCS8qIGluZGV4IG9mIGZpcnN0IGZpZWxkIG9uIHBhZ2UJCQkqLwotICBzaG9ydCBwbWF4OwkJLyogaW5kZXggb2YgbGFzdCBmaWVsZCBvbiBwYWdlCQkJKi8KLSAgc2hvcnQgc21pbjsJCS8qIGluZGV4IG9mIHRvcCBsZWZ0bW9zdCBmaWVsZCBvbiBwYWdlCQkqLwotICBzaG9ydCBzbWF4OwkJLyogaW5kZXggb2YgYm90dG9tIHJpZ2h0bW9zdCBmaWVsZCBvbiBwYWdlCSovCi19IF9QQUdFOwotCi0JLyoqKioqKioqKioKLQkqICBGSUVMRCAgKgotCSoqKioqKioqKiovCi0KLXR5cGVkZWYgc3RydWN0IGZpZWxkbm9kZSB7Ci0gIHVuc2lnbmVkIHNob3J0CXN0YXR1czsJCS8qIGZsYWdzCQkJKi8KLSAgc2hvcnQJCQlyb3dzOwkJLyogc2l6ZSBpbiByb3dzCQkJKi8KLSAgc2hvcnQJCQljb2xzOwkJLyogc2l6ZSBpbiBjb2xzCQkJKi8KLSAgc2hvcnQJCQlmcm93OwkJLyogZmlyc3Qgcm93CQkJKi8KLSAgc2hvcnQJCQlmY29sOwkJLyogZmlyc3QgY29sCQkJKi8KLSAgaW50CQkJZHJvd3M7CQkvKiBkeW5hbWljIHJvd3MJCQkqLwotICBpbnQJCQlkY29sczsJCS8qIGR5bmFtaWMgY29scwkJCSovCi0gIGludAkJCW1heGdyb3c7CS8qIG1heGltdW0gZmllbGQgZ3Jvd3RoCQkqLwotICBpbnQJCQlucm93OwkJLyogb2ZmLXNjcmVlbiByb3dzCQkqLwotICBzaG9ydAkJCW5idWY7CQkvKiBhZGRpdGlvbmFsIGJ1ZmZlcnMJCSovCi0gIHNob3J0CQkJanVzdDsJCS8qIGp1c3RpZmljYXRpb24JCSovCi0gIHNob3J0CQkJcGFnZTsJCS8qIHBhZ2Ugb24gZm9ybQkJCSovCi0gIHNob3J0CQkJaW5kZXg7CQkvKiBpbnRvIGZvcm0gLT4gZmllbGQJCSovCi0gIGludAkJCXBhZDsJCS8qIHBhZCBjaGFyYWN0ZXIJCSovCi0gIGNodHlwZQkJZm9yZTsJCS8qIGZvcmVncm91bmQgYXR0cmlidXRlCQkqLwotICBjaHR5cGUJCWJhY2s7CQkvKiBiYWNrZ3JvdW5kIGF0dHJpYnV0ZQkJKi8KLSAgRmllbGRfT3B0aW9ucwkJb3B0czsJCS8qIG9wdGlvbnMJCQkqLwotICBzdHJ1Y3QgZmllbGRub2RlICoJc25leHQ7CQkvKiBzb3J0ZWQgb3JkZXIgcG9pbnRlcgkJKi8KLSAgc3RydWN0IGZpZWxkbm9kZSAqCXNwcmV2OwkJLyogc29ydGVkIG9yZGVyIHBvaW50ZXIJCSovCi0gIHN0cnVjdCBmaWVsZG5vZGUgKglsaW5rOwkJLyogbGlua2VkIGZpZWxkIGNoYWluCQkqLwotICBzdHJ1Y3QgZm9ybW5vZGUgKglmb3JtOwkJLyogY29udGFpbmluZyBmb3JtCQkqLwotICBzdHJ1Y3QgdHlwZW5vZGUgKgl0eXBlOwkJLyogZmllbGQgdHlwZQkJCSovCi0gIHZvaWQgKgkJYXJnOwkJLyogYXJndW1lbnQgZm9yIHR5cGUJCSovCi0gIEZJRUxEX0NFTEwgKgkJYnVmOwkJLyogZmllbGQgYnVmZmVycwkJKi8KLSAgdm9pZCAqCQl1c3JwdHI7CQkvKiB1c2VyIHBvaW50ZXIJCQkqLwotICAvKgotICAgKiBUaGUgd2lkZS1jaGFyYWN0ZXIgY29uZmlndXJhdGlvbiByZXF1aXJlcyBleHRyYSBpbmZvcm1hdGlvbi4gIEJlY2F1c2UKLSAgICogdGhlcmUgYXJlIGV4aXN0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IG1hbmlwdWxhdGUgdGhlIG1lbWJlcnMgb2YgRklFTEQKLSAgICogZGlyZWN0bHksIHdlIGNhbm5vdCBtYWtlIHRoZSBzdHJ1Y3Qgb3BhcXVlLiAgT2Zmc2V0cyBvZiBtZW1iZXJzIHVwIHRvCi0gICAqIHRoaXMgcG9pbnQgYXJlIHRoZSBzYW1lIGluIHRoZSBuYXJyb3ctIGFuZCB3aWRlLWNoYXJhY3RlciBjb25maWd1cmF0aW9uLgotICAgKiBCdXQgbm90ZSB0aGF0IHRoZSB0eXBlIG9mIGJ1ZiBkZXBlbmRzIG9uIHRoZSBjb25maWd1cmF0aW9uLCBhbmQgaXMgbWFkZQotICAgKiBvcGFxdWUgZm9yIHRoYXQgcmVhc29uLgotICAgKi8KLSAgTkNVUlNFU19GSUVMRF9JTlRFUk5BTFMKLX0gRklFTEQ7Ci0KLQkvKioqKioqKioqKioqKioKLQkqICBGSUVMRFRZUEUgICoKLQkqKioqKioqKioqKioqKi8KLQotdHlwZWRlZiBzdHJ1Y3QgdHlwZW5vZGUgewotICB1bnNpZ25lZCBzaG9ydAlzdGF0dXM7CQkJLyogZmxhZ3MJCSovCi0gIGxvbmcJCQlyZWY7CQkJLyogcmVmZXJlbmNlIGNvdW50CSovCi0gIHN0cnVjdCB0eXBlbm9kZSAqCWxlZnQ7CQkJLyogcHRyIHRvIG9wZXJhbmQgZm9yIHwgKi8KLSAgc3RydWN0IHR5cGVub2RlICoJcmlnaHQ7CQkJLyogcHRyIHRvIG9wZXJhbmQgZm9yIHwgKi8KLQotICB2b2lkKiAoKm1ha2VhcmcpKHZhX2xpc3QgKik7CQkJLyogbWFrZSBmaWVsZHR5cGUgYXJnCSovCi0gIHZvaWQqICgqY29weWFyZykoY29uc3Qgdm9pZCAqKTsJCS8qIGNvcHkgZmllbGR0eXBlIGFyZwkqLwotICB2b2lkCSgqZnJlZWFyZykodm9pZCAqKTsJCQkvKiBmcmVlIGZpZWxkdHlwZSBhcmcJKi8KLQotICBib29sCSgqZmNoZWNrKShGSUVMRCAqLGNvbnN0IHZvaWQgKik7CS8qIGZpZWxkIHZhbGlkYXRpb24JKi8KLSAgYm9vbAkoKmNjaGVjaykoaW50LGNvbnN0IHZvaWQgKik7CQkvKiBjaGFyYWN0ZXIgdmFsaWRhdGlvbiAqLwotCi0gIGJvb2wJKCpuZXh0KShGSUVMRCAqLGNvbnN0IHZvaWQgKik7CQkvKiBlbnVtZXJhdGUgbmV4dCB2YWx1ZSAqLwotICBib29sCSgqcHJldikoRklFTEQgKixjb25zdCB2b2lkICopOwkJLyogZW51bWVyYXRlIHByZXYgdmFsdWUgKi8KLQotfSBGSUVMRFRZUEU7Ci0KLQkvKioqKioqKioqCi0JKiAgRk9STSAgKgotCSoqKioqKioqKi8KLQotdHlwZWRlZiBzdHJ1Y3QgZm9ybW5vZGUgewotICB1bnNpZ25lZCBzaG9ydAlzdGF0dXM7CQkvKiBmbGFncwkJCSovCi0gIHNob3J0CQkJcm93czsJCS8qIHNpemUgaW4gcm93cwkJCSovCi0gIHNob3J0CQkJY29sczsJCS8qIHNpemUgaW4gY29scwkJCSovCi0gIGludAkJCWN1cnJvdzsJCS8qIGN1cnJlbnQgcm93IGluIGZpZWxkIHdpbmRvdwkqLwotICBpbnQJCQljdXJjb2w7CQkvKiBjdXJyZW50IGNvbCBpbiBmaWVsZCB3aW5kb3cJKi8KLSAgaW50CQkJdG9wcm93OwkJLyogaW4gc2Nyb2xsYWJsZSBmaWVsZCB3aW5kb3cJKi8KLSAgaW50CQkJYmVnaW5jb2w7CS8qIGluIGhvcml6LiBzY3JvbGxhYmxlIGZpZWxkCSovCi0gIHNob3J0CQkJbWF4ZmllbGQ7CS8qIG51bWJlciBvZiBmaWVsZHMJCSovCi0gIHNob3J0CQkJbWF4cGFnZTsJLyogbnVtYmVyIG9mIHBhZ2VzCQkqLwotICBzaG9ydAkJCWN1cnBhZ2U7CS8qIGluZGV4IGludG8gcGFnZQkJKi8KLSAgRm9ybV9PcHRpb25zCQlvcHRzOwkJLyogb3B0aW9ucwkJCSovCi0gIFdJTkRPVyAqCQl3aW47CQkvKiB3aW5kb3cJCQkqLwotICBXSU5ET1cgKgkJc3ViOwkJLyogc3Vid2luZG93CQkJKi8KLSAgV0lORE9XICoJCXc7CQkvKiB3aW5kb3cgZm9yIGN1cnJlbnQgZmllbGQJKi8KLSAgRklFTEQgKioJCWZpZWxkOwkJLyogZmllbGQgW21heGZpZWxkXQkJKi8KLSAgRklFTEQgKgkJY3VycmVudDsJLyogY3VycmVudCBmaWVsZAkJKi8KLSAgX1BBR0UgKgkJcGFnZTsJCS8qIHBhZ2UgW21heHBhZ2VdCQkqLwotICB2b2lkICoJCXVzcnB0cjsJCS8qIHVzZXIgcG9pbnRlcgkJCSovCi0KLSAgdm9pZAkJCSgqZm9ybWluaXQpKHN0cnVjdCBmb3Jtbm9kZSAqKTsKLSAgdm9pZAkJCSgqZm9ybXRlcm0pKHN0cnVjdCBmb3Jtbm9kZSAqKTsKLSAgdm9pZAkJCSgqZmllbGRpbml0KShzdHJ1Y3QgZm9ybW5vZGUgKik7Ci0gIHZvaWQJCQkoKmZpZWxkdGVybSkoc3RydWN0IGZvcm1ub2RlICopOwotCi19IEZPUk07Ci0KLXR5cGVkZWYgdm9pZCAoKkZvcm1fSG9vaykoRk9STSAqKTsKLQotCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioKLQkqICBtaXNjZWxsYW5lb3VzICNkZWZpbmVzICAqCi0JKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBmaWVsZCBqdXN0aWZpY2F0aW9uICovCi0jZGVmaW5lIE5PX0pVU1RJRklDQVRJT04JKDApCi0jZGVmaW5lIEpVU1RJRllfTEVGVAkJKDEpCi0jZGVmaW5lIEpVU1RJRllfQ0VOVEVSCQkoMikKLSNkZWZpbmUgSlVTVElGWV9SSUdIVAkJKDMpCi0KLS8qIGZpZWxkIG9wdGlvbnMgKi8KLSNkZWZpbmUgT19WSVNJQkxFCQkoMHgwMDAxVSkKLSNkZWZpbmUgT19BQ1RJVkUJCSgweDAwMDJVKQotI2RlZmluZSBPX1BVQkxJQwkJKDB4MDAwNFUpCi0jZGVmaW5lIE9fRURJVAkJCSgweDAwMDhVKQotI2RlZmluZSBPX1dSQVAJCQkoMHgwMDEwVSkKLSNkZWZpbmUgT19CTEFOSwkJCSgweDAwMjBVKQotI2RlZmluZSBPX0FVVE9TS0lQCQkoMHgwMDQwVSkKLSNkZWZpbmUgT19OVUxMT0sJCSgweDAwODBVKQotI2RlZmluZSBPX1BBU1NPSwkJKDB4MDEwMFUpCi0jZGVmaW5lIE9fU1RBVElDCQkoMHgwMjAwVSkKLQotLyogZm9ybSBvcHRpb25zICovCi0jZGVmaW5lIE9fTkxfT1ZFUkxPQUQJCSgweDAwMDFVKQotI2RlZmluZSBPX0JTX09WRVJMT0FECQkoMHgwMDAyVSkKLQotLyogZm9ybSBkcml2ZXIgY29tbWFuZHMgKi8KLSNkZWZpbmUgUkVRX05FWFRfUEFHRQkgKEtFWV9NQVggKyAxKQkvKiBtb3ZlIHRvIG5leHQgcGFnZQkJKi8KLSNkZWZpbmUgUkVRX1BSRVZfUEFHRQkgKEtFWV9NQVggKyAyKQkvKiBtb3ZlIHRvIHByZXZpb3VzIHBhZ2UJKi8KLSNkZWZpbmUgUkVRX0ZJUlNUX1BBR0UJIChLRVlfTUFYICsgMykJLyogbW92ZSB0byBmaXJzdCBwYWdlCQkqLwotI2RlZmluZSBSRVFfTEFTVF9QQUdFCSAoS0VZX01BWCArIDQpCS8qIG1vdmUgdG8gbGFzdCBwYWdlCQkqLwotCi0jZGVmaW5lIFJFUV9ORVhUX0ZJRUxECSAoS0VZX01BWCArIDUpCS8qIG1vdmUgdG8gbmV4dCBmaWVsZAkJKi8KLSNkZWZpbmUgUkVRX1BSRVZfRklFTEQJIChLRVlfTUFYICsgNikJLyogbW92ZSB0byBwcmV2aW91cyBmaWVsZAkqLwotI2RlZmluZSBSRVFfRklSU1RfRklFTEQJIChLRVlfTUFYICsgNykJLyogbW92ZSB0byBmaXJzdCBmaWVsZAkJKi8KLSNkZWZpbmUgUkVRX0xBU1RfRklFTEQJIChLRVlfTUFYICsgOCkJLyogbW92ZSB0byBsYXN0IGZpZWxkCQkqLwotI2RlZmluZSBSRVFfU05FWFRfRklFTEQJIChLRVlfTUFYICsgOSkJLyogbW92ZSB0byBzb3J0ZWQgbmV4dCBmaWVsZAkqLwotI2RlZmluZSBSRVFfU1BSRVZfRklFTEQJIChLRVlfTUFYICsgMTApCS8qIG1vdmUgdG8gc29ydGVkIHByZXYgZmllbGQJKi8KLSNkZWZpbmUgUkVRX1NGSVJTVF9GSUVMRCAoS0VZX01BWCArIDExKQkvKiBtb3ZlIHRvIHNvcnRlZCBmaXJzdCBmaWVsZAkqLwotI2RlZmluZSBSRVFfU0xBU1RfRklFTEQJIChLRVlfTUFYICsgMTIpCS8qIG1vdmUgdG8gc29ydGVkIGxhc3QgZmllbGQJKi8KLSNkZWZpbmUgUkVRX0xFRlRfRklFTEQJIChLRVlfTUFYICsgMTMpCS8qIG1vdmUgdG8gbGVmdCB0byBmaWVsZAkqLwotI2RlZmluZSBSRVFfUklHSFRfRklFTEQJIChLRVlfTUFYICsgMTQpCS8qIG1vdmUgdG8gcmlnaHQgdG8gZmllbGQJKi8KLSNkZWZpbmUgUkVRX1VQX0ZJRUxECSAoS0VZX01BWCArIDE1KQkvKiBtb3ZlIHRvIHVwIHRvIGZpZWxkCQkqLwotI2RlZmluZSBSRVFfRE9XTl9GSUVMRAkgKEtFWV9NQVggKyAxNikJLyogbW92ZSB0byBkb3duIHRvIGZpZWxkCSovCi0KLSNkZWZpbmUgUkVRX05FWFRfQ0hBUgkgKEtFWV9NQVggKyAxNykJLyogbW92ZSB0byBuZXh0IGNoYXIgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX1BSRVZfQ0hBUgkgKEtFWV9NQVggKyAxOCkJLyogbW92ZSB0byBwcmV2IGNoYXIgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX05FWFRfTElORQkgKEtFWV9NQVggKyAxOSkJLyogbW92ZSB0byBuZXh0IGxpbmUgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX1BSRVZfTElORQkgKEtFWV9NQVggKyAyMCkJLyogbW92ZSB0byBwcmV2IGxpbmUgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX05FWFRfV09SRAkgKEtFWV9NQVggKyAyMSkJLyogbW92ZSB0byBuZXh0IHdvcmQgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX1BSRVZfV09SRAkgKEtFWV9NQVggKyAyMikJLyogbW92ZSB0byBwcmV2IHdvcmQgaW4gZmllbGQJKi8KLSNkZWZpbmUgUkVRX0JFR19GSUVMRAkgKEtFWV9NQVggKyAyMykJLyogbW92ZSB0byBmaXJzdCBjaGFyIGluIGZpZWxkCSovCi0jZGVmaW5lIFJFUV9FTkRfRklFTEQJIChLRVlfTUFYICsgMjQpCS8qIG1vdmUgYWZ0ZXIgbGFzdCBjaGFyIGluIGZsZAkqLwotI2RlZmluZSBSRVFfQkVHX0xJTkUJIChLRVlfTUFYICsgMjUpCS8qIG1vdmUgdG8gYmVnaW5uaW5nIG9mIGxpbmUJKi8KLSNkZWZpbmUgUkVRX0VORF9MSU5FCSAoS0VZX01BWCArIDI2KQkvKiBtb3ZlIGFmdGVyIGxhc3QgY2hhciBpbiBsaW5lCSovCi0jZGVmaW5lIFJFUV9MRUZUX0NIQVIJIChLRVlfTUFYICsgMjcpCS8qIG1vdmUgbGVmdCBpbiBmaWVsZAkJKi8KLSNkZWZpbmUgUkVRX1JJR0hUX0NIQVIJIChLRVlfTUFYICsgMjgpCS8qIG1vdmUgcmlnaHQgaW4gZmllbGQJCSovCi0jZGVmaW5lIFJFUV9VUF9DSEFSCSAoS0VZX01BWCArIDI5KQkvKiBtb3ZlIHVwIGluIGZpZWxkCQkqLwotI2RlZmluZSBSRVFfRE9XTl9DSEFSCSAoS0VZX01BWCArIDMwKQkvKiBtb3ZlIGRvd24gaW4gZmllbGQJCSovCi0KLSNkZWZpbmUgUkVRX05FV19MSU5FCSAoS0VZX01BWCArIDMxKQkvKiBpbnNlcnQvb3ZlcmxheSBuZXcgbGluZQkqLwotI2RlZmluZSBSRVFfSU5TX0NIQVIJIChLRVlfTUFYICsgMzIpCS8qIGluc2VydCBibGFuayBjaGFyIGF0IGN1cnNvcgkqLwotI2RlZmluZSBSRVFfSU5TX0xJTkUJIChLRVlfTUFYICsgMzMpCS8qIGluc2VydCBibGFuayBsaW5lIGF0IGN1cnNvcgkqLwotI2RlZmluZSBSRVFfREVMX0NIQVIJIChLRVlfTUFYICsgMzQpCS8qIGRlbGV0ZSBjaGFyIGF0IGN1cnNvcgkqLwotI2RlZmluZSBSRVFfREVMX1BSRVYJIChLRVlfTUFYICsgMzUpCS8qIGRlbGV0ZSBjaGFyIGJlZm9yZSBjdXJzb3IJKi8KLSNkZWZpbmUgUkVRX0RFTF9MSU5FCSAoS0VZX01BWCArIDM2KQkvKiBkZWxldGUgbGluZSBhdCBjdXJzb3IJKi8KLSNkZWZpbmUgUkVRX0RFTF9XT1JECSAoS0VZX01BWCArIDM3KQkvKiBkZWxldGUgd29yZCBhdCBjdXJzb3IJKi8KLSNkZWZpbmUgUkVRX0NMUl9FT0wJIChLRVlfTUFYICsgMzgpCS8qIGNsZWFyIHRvIGVuZCBvZiBsaW5lCQkqLwotI2RlZmluZSBSRVFfQ0xSX0VPRgkgKEtFWV9NQVggKyAzOSkJLyogY2xlYXIgdG8gZW5kIG9mIGZpZWxkCSovCi0jZGVmaW5lIFJFUV9DTFJfRklFTEQJIChLRVlfTUFYICsgNDApCS8qIGNsZWFyIGVudGlyZSBmaWVsZAkJKi8KLSNkZWZpbmUgUkVRX09WTF9NT0RFCSAoS0VZX01BWCArIDQxKQkvKiBiZWdpbiBvdmVybGF5IG1vZGUJCSovCi0jZGVmaW5lIFJFUV9JTlNfTU9ERQkgKEtFWV9NQVggKyA0MikJLyogYmVnaW4gaW5zZXJ0IG1vZGUJCSovCi0jZGVmaW5lIFJFUV9TQ1JfRkxJTkUJIChLRVlfTUFYICsgNDMpCS8qIHNjcm9sbCBmaWVsZCBmb3J3YXJkIGEgbGluZQkqLwotI2RlZmluZSBSRVFfU0NSX0JMSU5FCSAoS0VZX01BWCArIDQ0KQkvKiBzY3JvbGwgZmllbGQgYmFja3dhcmQgYSBsaW5lCSovCi0jZGVmaW5lIFJFUV9TQ1JfRlBBR0UJIChLRVlfTUFYICsgNDUpCS8qIHNjcm9sbCBmaWVsZCBmb3J3YXJkIGEgcGFnZQkqLwotI2RlZmluZSBSRVFfU0NSX0JQQUdFCSAoS0VZX01BWCArIDQ2KQkvKiBzY3JvbGwgZmllbGQgYmFja3dhcmQgYSBwYWdlCSovCi0jZGVmaW5lIFJFUV9TQ1JfRkhQQUdFCSAoS0VZX01BWCArIDQ3KSAvKiBzY3JvbGwgZmllbGQgZm9yd2FyZAkgaGFsZiBwYWdlICovCi0jZGVmaW5lIFJFUV9TQ1JfQkhQQUdFCSAoS0VZX01BWCArIDQ4KSAvKiBzY3JvbGwgZmllbGQgYmFja3dhcmQgaGFsZiBwYWdlICovCi0jZGVmaW5lIFJFUV9TQ1JfRkNIQVIJIChLRVlfTUFYICsgNDkpIC8qIGhvcml6b250YWwgc2Nyb2xsIGNoYXIJKi8KLSNkZWZpbmUgUkVRX1NDUl9CQ0hBUgkgKEtFWV9NQVggKyA1MCkgLyogaG9yaXpvbnRhbCBzY3JvbGwgY2hhcgkqLwotI2RlZmluZSBSRVFfU0NSX0hGTElORQkgKEtFWV9NQVggKyA1MSkgLyogaG9yaXpvbnRhbCBzY3JvbGwgbGluZQkqLwotI2RlZmluZSBSRVFfU0NSX0hCTElORQkgKEtFWV9NQVggKyA1MikgLyogaG9yaXpvbnRhbCBzY3JvbGwgbGluZQkqLwotI2RlZmluZSBSRVFfU0NSX0hGSEFMRgkgKEtFWV9NQVggKyA1MykgLyogaG9yaXpvbnRhbCBzY3JvbGwgaGFsZiBsaW5lCSovCi0jZGVmaW5lIFJFUV9TQ1JfSEJIQUxGCSAoS0VZX01BWCArIDU0KSAvKiBob3Jpem9udGFsIHNjcm9sbCBoYWxmIGxpbmUJKi8KLQotI2RlZmluZSBSRVFfVkFMSURBVElPTgkgKEtFWV9NQVggKyA1NSkJLyogdmFsaWRhdGUgZmllbGQJCSovCi0jZGVmaW5lIFJFUV9ORVhUX0NIT0lDRQkgKEtFWV9NQVggKyA1NikJLyogZGlzcGxheSBuZXh0IGZpZWxkIGNob2ljZQkqLwotI2RlZmluZSBSRVFfUFJFVl9DSE9JQ0UJIChLRVlfTUFYICsgNTcpCS8qIGRpc3BsYXkgcHJldiBmaWVsZCBjaG9pY2UJKi8KLQotI2RlZmluZSBNSU5fRk9STV9DT01NQU5EIChLRVlfTUFYICsgMSkJLyogdXNlZCBieSBmb3JtX2RyaXZlcgkJKi8KLSNkZWZpbmUgTUFYX0ZPUk1fQ09NTUFORCAoS0VZX01BWCArIDU3KQkvKiB1c2VkIGJ5IGZvcm1fZHJpdmVyCQkqLwotCi0jaWYgZGVmaW5lZChNQVhfQ09NTUFORCkKLSMgIGlmIChNQVhfRk9STV9DT01NQU5EID4gTUFYX0NPTU1BTkQpCi0jICAgIGVycm9yIFNvbWV0aGluZyBpcyB3cm9uZyAtLSBNQVhfRk9STV9DT01NQU5EIGlzIGdyZWF0ZXIgdGhhbiBNQVhfQ09NTUFORAotIyAgZWxpZiAoTUFYX0NPTU1BTkQgIT0gKEtFWV9NQVggKyAxMjgpKQotIyAgICBlcnJvciBTb21ldGhpbmcgaXMgd3JvbmcgLS0gTUFYX0NPTU1BTkQgaXMgYWxyZWFkeSBpbmNvbnNpc3RlbnRseSBkZWZpbmVkLgotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTUFYX0NPTU1BTkQgKEtFWV9NQVggKyAxMjgpCi0jZW5kaWYKLQotCS8qKioqKioqKioqKioqKioqKioqKioqKioqCi0JKiAgc3RhbmRhcmQgZmllbGQgdHlwZXMgICoKLQkqKioqKioqKioqKioqKioqKioqKioqKioqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihGSUVMRFRZUEUgKikgVFlQRV9BTFBIQTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoRklFTERUWVBFICopIFRZUEVfQUxOVU07Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKSBUWVBFX0VOVU07Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKSBUWVBFX0lOVEVHRVI7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKSBUWVBFX05VTUVSSUM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZJRUxEVFlQRSAqKSBUWVBFX1JFR0VYUDsKLQotCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQkqICBidWlsdC1pbiBhZGRpdGlvbmFsIGZpZWxkIHR5cGVzICAqCi0JKiAgVGhleSBhcmUgbm90IGRlZmluZWQgaW4gU1ZyNCAgICAgKgotCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoRklFTERUWVBFICopIFRZUEVfSVBWNDsgICAgICAvKiBJbnRlcm5ldCBJUCBWZXJzaW9uIDQgYWRkcmVzcyAqLwotCi0JLyoqKioqKioqKioqKioqKioqKioqKioqCi0JKiAgIERlZmF1bHQgb2JqZWN0cyAgICAqCi0JKioqKioqKioqKioqKioqKioqKioqKiovCi1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKEZPUk0gKikJX25jX0RlZmF1bHRfRm9ybTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoRklFTEQgKikJX25jX0RlZmF1bHRfRmllbGQ7Ci0KLQotCS8qKioqKioqKioqKioqKioqKioqKioqKgotCSogIEZJRUxEVFlQRSByb3V0aW5lcyAgKgotCSoqKioqKioqKioqKioqKioqKioqKioqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKSBuZXdfZmllbGR0eXBlICgKLQkJICAgIGJvb2wgKCogY29uc3QgZmllbGRfY2hlY2spKEZJRUxEICosY29uc3Qgdm9pZCAqKSwKLQkJICAgIGJvb2wgKCogY29uc3QgY2hhcl9jaGVjaykoaW50LGNvbnN0IHZvaWQgKikpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEVFlQRSAqKSBsaW5rX2ZpZWxkdHlwZSgKLQkJICAgIEZJRUxEVFlQRSAqLCBGSUVMRFRZUEUgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZyZWVfZmllbGR0eXBlIChGSUVMRFRZUEUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZmllbGR0eXBlX2FyZyAoRklFTERUWVBFICosCi0JCSAgICB2b2lkICogKCogY29uc3QgbWFrZV9hcmcpKHZhX2xpc3QgKiksCi0JCSAgICB2b2lkICogKCogY29uc3QgY29weV9hcmcpKGNvbnN0IHZvaWQgKiksCi0JCSAgICB2b2lkICgqIGNvbnN0IGZyZWVfYXJnKSh2b2lkICopKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCSBzZXRfZmllbGR0eXBlX2Nob2ljZSAoRklFTERUWVBFICosCi0JCSAgICBib29sICgqIGNvbnN0IG5leHRfY2hvaWNlKShGSUVMRCAqLGNvbnN0IHZvaWQgKiksCi0JICAgICAgCSAgICBib29sICgqIGNvbnN0IHByZXZfY2hvaWNlKShGSUVMRCAqLGNvbnN0IHZvaWQgKikpOwotCi0JLyoqKioqKioqKioqKioqKioqKioKLQkqICBGSUVMRCByb3V0aW5lcyAgKgotCSoqKioqKioqKioqKioqKioqKiovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTEQgKikJbmV3X2ZpZWxkIChpbnQsaW50LGludCxpbnQsaW50LGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTEQgKikJZHVwX2ZpZWxkIChGSUVMRCAqLGludCxpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZJRUxEICopCWxpbmtfZmllbGQgKEZJRUxEICosaW50LGludCk7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZyZWVfZmllbGQgKEZJRUxEICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJZmllbGRfaW5mbyAoY29uc3QgRklFTEQgKixpbnQgKixpbnQgKixpbnQgKixpbnQgKixpbnQgKixpbnQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlkeW5hbWljX2ZpZWxkX2luZm8gKGNvbnN0IEZJRUxEICosaW50ICosaW50ICosaW50ICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21heF9maWVsZCAoIEZJRUxEICosaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCW1vdmVfZmllbGQgKEZJRUxEICosaW50LGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZmllbGRfdHlwZSAoRklFTEQgKixGSUVMRFRZUEUgKiwuLi4pOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X25ld19wYWdlIChGSUVMRCAqLGJvb2wpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2ZpZWxkX2p1c3QgKEZJRUxEICosaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZpZWxkX2p1c3QgKGNvbnN0IEZJRUxEICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2ZpZWxkX2ZvcmUgKEZJRUxEICosY2h0eXBlKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9maWVsZF9iYWNrIChGSUVMRCAqLGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZmllbGRfcGFkIChGSUVMRCAqLGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmaWVsZF9wYWQgKGNvbnN0IEZJRUxEICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2ZpZWxkX2J1ZmZlciAoRklFTEQgKixpbnQsY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9maWVsZF9zdGF0dXMgKEZJRUxEICosYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZmllbGRfdXNlcnB0ciAoRklFTEQgKiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9maWVsZF9vcHRzIChGSUVMRCAqLEZpZWxkX09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJZmllbGRfb3B0c19vbiAoRklFTEQgKixGaWVsZF9PcHRpb25zKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZpZWxkX29wdHNfb2ZmIChGSUVMRCAqLEZpZWxkX09wdGlvbnMpOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKQlmaWVsZF9mb3JlIChjb25zdCBGSUVMRCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpCWZpZWxkX2JhY2sgKGNvbnN0IEZJRUxEICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkJbmV3X3BhZ2UgKGNvbnN0IEZJRUxEICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpCWZpZWxkX3N0YXR1cyAoY29uc3QgRklFTEQgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkICopCWZpZWxkX2FyZyAoY29uc3QgRklFTEQgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkICopCWZpZWxkX3VzZXJwdHIgKGNvbnN0IEZJRUxEICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTERUWVBFICopCWZpZWxkX3R5cGUgKGNvbnN0IEZJRUxEICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKQlmaWVsZF9idWZmZXIgKGNvbnN0IEZJRUxEICosaW50KTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEZpZWxkX09wdGlvbnMpCWZpZWxkX29wdHMgKGNvbnN0IEZJRUxEICopOwotCi0JLyoqKioqKioqKioqKioqKioqKgotCSogIEZPUk0gcm91dGluZXMgICoKLQkqKioqKioqKioqKioqKioqKiovCi0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGT1JNICopCW5ld19mb3JtIChGSUVMRCAqKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGSUVMRCAqKikJZm9ybV9maWVsZHMgKGNvbnN0IEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoRklFTEQgKikJY3VycmVudF9maWVsZCAoY29uc3QgRk9STSAqKTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQlmb3JtX3dpbiAoY29uc3QgRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikJZm9ybV9zdWIgKGNvbnN0IEZPUk0gKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGb3JtX0hvb2spCWZvcm1faW5pdCAoY29uc3QgRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGb3JtX0hvb2spCWZvcm1fdGVybSAoY29uc3QgRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGb3JtX0hvb2spCWZpZWxkX2luaXQgKGNvbnN0IEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoRm9ybV9Ib29rKQlmaWVsZF90ZXJtIChjb25zdCBGT1JNICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmcmVlX2Zvcm0gKEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZm9ybV9maWVsZHMgKEZPUk0gKixGSUVMRCAqKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmaWVsZF9jb3VudCAoY29uc3QgRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9mb3JtX3dpbiAoRk9STSAqLFdJTkRPVyAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9mb3JtX3N1YiAoRk9STSAqLFdJTkRPVyAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9jdXJyZW50X2ZpZWxkIChGT1JNICosRklFTEQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmaWVsZF9pbmRleCAoY29uc3QgRklFTEQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZm9ybV9wYWdlIChGT1JNICosaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZvcm1fcGFnZSAoY29uc3QgRk9STSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNjYWxlX2Zvcm0gKGNvbnN0IEZPUk0gKixpbnQgKixpbnQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZm9ybV9pbml0IChGT1JNICosRm9ybV9Ib29rKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9mb3JtX3Rlcm0gKEZPUk0gKixGb3JtX0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2ZpZWxkX2luaXQgKEZPUk0gKixGb3JtX0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2ZpZWxkX3Rlcm0gKEZPUk0gKixGb3JtX0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJcG9zdF9mb3JtIChGT1JNICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJdW5wb3N0X2Zvcm0gKEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlwb3NfZm9ybV9jdXJzb3IgKEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlmb3JtX2RyaXZlciAoRk9STSAqLGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfZm9ybV91c2VycHRyIChGT1JNICosdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9mb3JtX29wdHMgKEZPUk0gKixGb3JtX09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJZm9ybV9vcHRzX29uIChGT1JNICosRm9ybV9PcHRpb25zKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZvcm1fb3B0c19vZmYgKEZPUk0gKixGb3JtX09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJZm9ybV9yZXF1ZXN0X2J5X25hbWUgKGNvbnN0IGNoYXIgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopCWZvcm1fcmVxdWVzdF9uYW1lIChpbnQpOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCAqKQlmb3JtX3VzZXJwdHIgKGNvbnN0IEZPUk0gKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChGb3JtX09wdGlvbnMpCWZvcm1fb3B0cyAoY29uc3QgRk9STSAqKTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpCWRhdGFfYWhlYWQgKGNvbnN0IEZPUk0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkJZGF0YV9iZWhpbmQgKGNvbnN0IEZPUk0gKik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotICB9Ci0jZW5kaWYKLQotI2VuZGlmCS8qIEZPUk1fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9oYXNoZWRfZGIuaCBiL2luY2x1ZGUvaGFzaGVkX2RiLmgKaW5kZXggNGRkMzkzMy4uMWFlMjliMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9oYXNoZWRfZGIuaAorKysgYi9pbmNsdWRlL2hhc2hlZF9kYi5oCkBAIC0zMSw3ICszMSw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKLSAqICRJZDogaGFzaGVkX2RiLmgsdiAxLjUgMjAwNi8wOC8xOSAxNTo1ODozNCB0b20gRXhwICQKKyAqICRJZDogaGFzaGVkX2RiLmgsdiAxLjYgMjAxNC8wNC8xMiAyMjo0MToxMCB0b20gRXhwICQKICAqLwogCiAjaWZuZGVmIEhBU0hFRF9EQl9ICkBAIC00MSw2ICs0MSw4IEBACiAKICNpZiBVU0VfSEFTSEVEX0RCCiAKKyNkZWZpbmUgREJfREJNX0hTRUFSQ0ggMAkvKiBxdWlldCBnY2MgLVd1bmRlZiB3aXRoIGRiNiAqLworCiAjaW5jbHVkZSA8ZGIuaD4KIAogI2lmbmRlZiBEQk5fU1VGRklYCmRpZmYgLS1naXQgYS9pbmNsdWRlL2hhc2hzaXplLmggYi9pbmNsdWRlL2hhc2hzaXplLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OGZkNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9oYXNoc2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKgotICogaGFzaHNpemUuaCAtLSBoYXNoIGFuZCB0b2tlbiB0YWJsZSBjb25zdGFudHMKLSAqLwotCi0jZGVmaW5lIENBUFRBQlNJWkUJNDk3Ci0jZGVmaW5lIEhBU0hUQUJTSVpFCSg0OTcgKiAyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9oZWFkZXJzIGIvaW5jbHVkZS9oZWFkZXJzCmluZGV4IGEyNGJkOTAuLjJmMjBiZWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaGVhZGVycworKysgYi9pbmNsdWRlL2hlYWRlcnMKQEAgLTEsNiArMSw2IEBACi0jICRJZDogaGVhZGVycyx2IDEuOSAyMDA3LzAxLzIwIDE5OjU3OjA0IE1pcm9zbGF2LkxpY2h2YXIgRXhwICQKKyMgJElkOiBoZWFkZXJzLHYgMS4xMyAyMDEzLzEwLzIwIDAwOjMyOjIxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjksMTQgKzI5LDI0IEBACiAjCiAjIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQkxOTk2LW9uCiAjCi10ZXJtLmgKIGN1cnNlcy5oCiB1bmN0cmwuaAorbmN1cnNlc19kbGwuaAorCisjIFN1cHBvcnQgZm9yIHRlcm1jYXAgKGFuZCB0aWMsIGV0Yy4pLCB3aGljaCBjYW4gYmUgYSBzZXBhcmF0ZSBsaWJyYXJ5CitAIHRlcm1saWIKK3Rlcm0uaAogdGVybWNhcC5oCi0kKHNyY2RpcikvbmN1cnNlc19kbGwuaAorCisjIEhlYWRlcnMgdXNlZCBvbmx5IGZvciB0aWMsIG90aGVyIHByb2dyYW1zIHVzaW5nIGludGVybmFsIGludGVyZmFjZXMKIEAgdGljbGliCiAkKHNyY2RpcikvdGljLmgKICQoc3JjZGlyKS90ZXJtX2VudHJ5LmgKICQoc3JjZGlyKS9uY190cGFybS5oCiAKKyMgUG9ydGluZworQCBwb3J0X3dpbjMyY29uCiskKHNyY2RpcikvbmN1cnNlc19taW5ndy5oCiskKHNyY2RpcikvbmNfbWluZ3cuaAorCiAjIHZpbGU6bWFrZW1vZGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVudS5oIGIvaW5jbHVkZS9tZW51LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MzUyZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tZW51LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk1LDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogJElkOiBtZW51LmgsdiAxLjE5IDIwMDcvMDIvMjQgMTc6MzI6MTMgdG9tIEV4cCAkICovCi0KLSNpZm5kZWYgRVRJX01FTlUKLSNkZWZpbmUgRVRJX01FTlUKLQotI2lmZGVmIEFNSUdBCi0jZGVmaW5lIFRFWFQgVEVYVF9uY3Vyc2VzCi0jZW5kaWYKLQotI2luY2x1ZGUgPGN1cnNlcy5oPgotI2luY2x1ZGUgPGV0aS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXR5cGVkZWYgaW50IE1lbnVfT3B0aW9uczsKLXR5cGVkZWYgaW50IEl0ZW1fT3B0aW9uczsKLQotLyogTWVudSBvcHRpb25zOiAqLwotI2RlZmluZSBPX09ORVZBTFVFICAgICAgKDB4MDEpCi0jZGVmaW5lIE9fU0hPV0RFU0MgICAgICAoMHgwMikKLSNkZWZpbmUgT19ST1dNQUpPUiAgICAgICgweDA0KQotI2RlZmluZSBPX0lHTk9SRUNBU0UgICAgKDB4MDgpCi0jZGVmaW5lIE9fU0hPV01BVENIICAgICAoMHgxMCkKLSNkZWZpbmUgT19OT05DWUNMSUMgICAgICgweDIwKQotCi0vKiBJdGVtIG9wdGlvbnM6ICovCi0jZGVmaW5lIE9fU0VMRUNUQUJMRSAgICAoMHgwMSkKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgY29uc3QgY2hhciogc3RyOwotICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7Ci19IFRFWFQ7Ci0KLXR5cGVkZWYgc3RydWN0IHRhZ0lURU0gCi17Ci0gIFRFWFQgICAgICAgICAgIG5hbWU7ICAgICAgICAvKiBuYW1lIG9mIG1lbnUgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBURVhUICAgICAgICAgICBkZXNjcmlwdGlvbjsgLyogZGVzY3JpcHRpb24gb2YgaXRlbSwgb3B0aW9uYWwgaW4gZGlzcGxheSAgKi8gCi0gIHN0cnVjdCB0YWdNRU5VICppbWVudTsgICAgICAvKiBQb2ludGVyIHRvIHBhcmVudCBtZW51ICAgICAgICAgICAgICAgICAgICAqLwotICB2b2lkICAgICAgICAgICAqdXNlcnB0cjsgICAgLyogUG9pbnRlciB0byB1c2VyIGRlZmluZWQgcGVyIGl0ZW0gZGF0YSAgICAgKi8gCi0gIEl0ZW1fT3B0aW9ucyAgIG9wdDsgICAgICAgICAvKiBJdGVtIG9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAKLSAgc2hvcnQgICAgICAgICAgaW5kZXg7ICAgICAgIC8qIEl0ZW0gbnVtYmVyIGlmIGNvbm5lY3RlZCB0byBhIG1lbnUgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIHk7ICAgICAgICAgICAvKiB5IGFuZCB4IGxvY2F0aW9uIG9mIGl0ZW0gaW4gbWVudSAgICAgICAgICAqLwotICBzaG9ydCAgICAgICAgICB4OwotICBib29sICAgICAgICAgICB2YWx1ZTsgICAgICAgLyogU2VsZWN0aW9uIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gIHN0cnVjdCB0YWdJVEVNICpsZWZ0OyAgICAgICAvKiBuZWlnaGJvciBpdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICBzdHJ1Y3QgdGFnSVRFTSAqcmlnaHQ7Ci0gIHN0cnVjdCB0YWdJVEVNICp1cDsKLSAgc3RydWN0IHRhZ0lURU0gKmRvd247Ci0KLX0gSVRFTTsKLQotdHlwZWRlZiB2b2lkICgqTWVudV9Ib29rKShzdHJ1Y3QgdGFnTUVOVSAqKTsKLQotdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVSAKLXsKLSAgc2hvcnQgICAgICAgICAgaGVpZ2h0OyAgICAgICAgICAgICAgICAvKiBOci4gb2YgY2hhcnMgaGlnaCAgICAgICAgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIHdpZHRoOyAgICAgICAgICAgICAgICAgLyogTnIuIG9mIGNoYXJzIHdpZGUgICAgICAgICAgICAgICAqLwotICBzaG9ydCAgICAgICAgICByb3dzOyAgICAgICAgICAgICAgICAgIC8qIE5yLiBvZiBpdGVtcyBoaWdoICAgICAgICAgICAgICAgKi8KLSAgc2hvcnQgICAgICAgICAgY29sczsgICAgICAgICAgICAgICAgICAvKiBOci4gb2YgaXRlbXMgd2lkZSAgICAgICAgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIGZyb3dzOyAgICAgICAgICAgICAgICAgLyogTnIuIG9mIGZvcm1hdHRlZCBpdGVtcyBoaWdoICAgICAqLwotICBzaG9ydCAgICAgICAgICBmY29sczsgICAgICAgICAgICAgICAgIC8qIE5yLiBvZiBmb3JtYXR0ZWQgaXRlbXMgd2lkZSAgICAgKi8KLSAgc2hvcnQgICAgICAgICAgYXJvd3M7ICAgICAgICAgICAgICAgICAvKiBOci4gb2YgaXRlbXMgaGlnaCAoYWN0dWFsKSAgICAgICovCi0gIHNob3J0ICAgICAgICAgIG5hbWVsZW47ICAgICAgICAgICAgICAgLyogTWF4LiBuYW1lIGxlbmd0aCAgICAgICAgICAgICAgICAqLwotICBzaG9ydCAgICAgICAgICBkZXNjbGVuOyAgICAgICAgICAgICAgIC8qIE1heC4gZGVzY3JpcHRpb24gbGVuZ3RoICAgICAgICAgKi8KLSAgc2hvcnQgICAgICAgICAgbWFya2xlbjsgICAgICAgICAgICAgICAvKiBMZW5ndGggb2YgbWFyaywgaWYgYW55ICAgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIGl0ZW1sZW47ICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIG9uZSBpdGVtICAgICAgICAgICAgICAqLwotICBzaG9ydCAgICAgICAgICBzcGNfZGVzYzsgICAgICAgICAgICAgIC8qIFNwYWNpbmcgZm9yIGRlc2NyaXB0b3IgICAgICAgICAgKi8KLSAgc2hvcnQgICAgICAgICAgc3BjX2NvbHM7ICAgICAgICAgICAgICAvKiBTcGFjaW5nIGZvciBjb2x1bW5zICAgICAgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIHNwY19yb3dzOyAgICAgICAgICAgICAgLyogU3BhY2luZyBmb3Igcm93cyAgICAgICAgICAgICAgICAqLyAKLSAgY2hhciAgICAgICAgICAqcGF0dGVybjsgICAgICAgICAgICAgICAvKiBCdWZmZXIgdG8gc3RvcmUgbWF0Y2ggY2hhcnMgICAgICovCi0gIHNob3J0ICAgICAgICAgIHBpbmRleDsgICAgICAgICAgICAgICAgLyogSW5kZXggaW50byBwYXR0ZXJuIGJ1ZmZlciAgICAgICAqLwotICBXSU5ET1cgICAgICAgICp3aW47ICAgICAgICAgICAgICAgICAgIC8qIFdpbmRvdyBjb250YWluaW5nIG1lbnUgICAgICAgICAgKi8KLSAgV0lORE9XICAgICAgICAqc3ViOyAgICAgICAgICAgICAgICAgICAvKiBTdWJ3aW5kb3cgZm9yIG1lbnUgZGlzcGxheSAgICAgICovCi0gIFdJTkRPVyAgICAgICAgKnVzZXJ3aW47ICAgICAgICAgICAgICAgLyogVXNlcidzIHdpbmRvdyAgICAgICAgICAgICAgICAgICAqLwotICBXSU5ET1cgICAgICAgICp1c2Vyc3ViOyAgICAgICAgICAgICAgIC8qIFVzZXIncyBzdWJ3aW5kb3cgICAgICAgICAgICAgICAgKi8KLSAgSVRFTSAgICAgICAgICAqKml0ZW1zOyAgICAgICAgICAgICAgICAvKiBhcnJheSBvZiBpdGVtcyAgICAgICAgICAgICAgICAgICovIAotICBzaG9ydCAgICAgICAgICBuaXRlbXM7ICAgICAgICAgICAgICAgIC8qIE5yLiBvZiBpdGVtcyBpbiBtZW51ICAgICAgICAgICAgKi8KLSAgSVRFTSAgICAgICAgICAqY3VyaXRlbTsgICAgICAgICAgICAgICAvKiBDdXJyZW50IGl0ZW0gICAgICAgICAgICAgICAgICAgICovCi0gIHNob3J0ICAgICAgICAgIHRvcHJvdzsgICAgICAgICAgICAgICAgLyogVG9wIHJvdyBvZiBtZW51ICAgICAgICAgICAgICAgICAqLwotICBjaHR5cGUgICAgICAgICBmb3JlOyAgICAgICAgICAgICAgICAgIC8qIFNlbGVjdGlvbiBhdHRyaWJ1dGUgICAgICAgICAgICAgKi8KLSAgY2h0eXBlICAgICAgICAgYmFjazsgICAgICAgICAgICAgICAgICAvKiBOb25zZWxlY3Rpb24gYXR0cmlidXRlICAgICAgICAgICovCi0gIGNodHlwZSAgICAgICAgIGdyZXk7ICAgICAgICAgICAgICAgICAgLyogSW5hY3RpdmUgYXR0cmlidXRlICAgICAgICAgICAgICAqLwotICB1bnNpZ25lZCBjaGFyICBwYWQ7ICAgICAgICAgICAgICAgICAgIC8qIFBhZCBjaGFyYWN0ZXIgICAgICAgICAgICAgICAgICAgKi8KLQotICBNZW51X0hvb2sgICAgICBtZW51aW5pdDsgICAgICAgICAgICAgIC8qIFVzZXIgaG9va3MgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgTWVudV9Ib29rICAgICAgbWVudXRlcm07Ci0gIE1lbnVfSG9vayAgICAgIGl0ZW1pbml0OwotICBNZW51X0hvb2sgICAgICBpdGVtdGVybTsKLQotICB2b2lkICAgICAgICAgICp1c2VycHRyOyAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gbWVudXMgdXNlciBkYXRhICAgICAgKi8KLSAgY2hhciAgICAgICAgICAqbWFyazsgICAgICAgICAgICAgICAgICAvKiBQb2ludGVyIHRvIG1hcmtlciBzdHJpbmcgICAgICAgICovCi0KLSAgTWVudV9PcHRpb25zICAgb3B0OyAgICAgICAgICAgICAgICAgICAvKiBNZW51IG9wdGlvbnMgICAgICAgICAgICAgICAgICAgICovCi0gIHVuc2lnbmVkIHNob3J0IHN0YXR1czsgICAgICAgICAgICAgICAgLyogSW50ZXJuYWwgc3RhdGUgb2YgbWVudSAgICAgICAgICAqLwotCi19IE1FTlU7Ci0KLQotLyogRGVmaW5lIGtleXMgKi8KLQotI2RlZmluZSBSRVFfTEVGVF9JVEVNICAgICAgICAgICAoS0VZX01BWCArIDEpCi0jZGVmaW5lIFJFUV9SSUdIVF9JVEVNICAgICAgICAgIChLRVlfTUFYICsgMikKLSNkZWZpbmUgUkVRX1VQX0lURU0gICAgICAgICAgICAgKEtFWV9NQVggKyAzKQotI2RlZmluZSBSRVFfRE9XTl9JVEVNICAgICAgICAgICAoS0VZX01BWCArIDQpCi0jZGVmaW5lIFJFUV9TQ1JfVUxJTkUgICAgICAgICAgIChLRVlfTUFYICsgNSkKLSNkZWZpbmUgUkVRX1NDUl9ETElORSAgICAgICAgICAgKEtFWV9NQVggKyA2KQotI2RlZmluZSBSRVFfU0NSX0RQQUdFICAgICAgICAgICAoS0VZX01BWCArIDcpCi0jZGVmaW5lIFJFUV9TQ1JfVVBBR0UgICAgICAgICAgIChLRVlfTUFYICsgOCkKLSNkZWZpbmUgUkVRX0ZJUlNUX0lURU0gICAgICAgICAgKEtFWV9NQVggKyA5KQotI2RlZmluZSBSRVFfTEFTVF9JVEVNICAgICAgICAgICAoS0VZX01BWCArIDEwKQotI2RlZmluZSBSRVFfTkVYVF9JVEVNICAgICAgICAgICAoS0VZX01BWCArIDExKQotI2RlZmluZSBSRVFfUFJFVl9JVEVNICAgICAgICAgICAoS0VZX01BWCArIDEyKQotI2RlZmluZSBSRVFfVE9HR0xFX0lURU0gICAgICAgICAoS0VZX01BWCArIDEzKQotI2RlZmluZSBSRVFfQ0xFQVJfUEFUVEVSTiAgICAgICAoS0VZX01BWCArIDE0KQotI2RlZmluZSBSRVFfQkFDS19QQVRURVJOICAgICAgICAoS0VZX01BWCArIDE1KQotI2RlZmluZSBSRVFfTkVYVF9NQVRDSCAgICAgICAgICAoS0VZX01BWCArIDE2KQotI2RlZmluZSBSRVFfUFJFVl9NQVRDSCAgICAgICAgICAoS0VZX01BWCArIDE3KQotCi0jZGVmaW5lIE1JTl9NRU5VX0NPTU1BTkQgICAgICAgIChLRVlfTUFYICsgMSkKLSNkZWZpbmUgTUFYX01FTlVfQ09NTUFORCAgICAgICAgKEtFWV9NQVggKyAxNykKLQotLyoKLSAqIFNvbWUgQVQmVCBjb2RlIGV4cGVjdHMgTUFYX0NPTU1BTkQgdG8gYmUgb3V0LW9mLWJhbmQgbm90Ci0gKiBqdXN0IGZvciBtZW51IGNvbW1hbmRzIGJ1dCBmb3IgZm9ybXMgb25lcyBhcyB3ZWxsLgotICovCi0jaWYgZGVmaW5lZChNQVhfQ09NTUFORCkKLSMgIGlmIChNQVhfTUVOVV9DT01NQU5EID4gTUFYX0NPTU1BTkQpCi0jICAgIGVycm9yIFNvbWV0aGluZyBpcyB3cm9uZyAtLSBNQVhfTUVOVV9DT01NQU5EIGlzIGdyZWF0ZXIgdGhhbiBNQVhfQ09NTUFORAotIyAgZWxpZiAoTUFYX0NPTU1BTkQgIT0gKEtFWV9NQVggKyAxMjgpKQotIyAgICBlcnJvciBTb21ldGhpbmcgaXMgd3JvbmcgLS0gTUFYX0NPTU1BTkQgaXMgYWxyZWFkeSBpbmNvbnNpc3RlbnRseSBkZWZpbmVkLgotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTUFYX0NPTU1BTkQgKEtFWV9NQVggKyAxMjgpCi0jZW5kaWYKLQotCi0vKiAtLS0tLS0tLS0gcHJvdG90eXBlcyBmb3IgbGlibWVudSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKElURU0gKiopCW1lbnVfaXRlbXMgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoSVRFTSAqKQljdXJyZW50X2l0ZW0gKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoSVRFTSAqKQluZXdfaXRlbSAoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChNRU5VICopCW5ld19tZW51IChJVEVNICoqKTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKEl0ZW1fT3B0aW9ucykJaXRlbV9vcHRzIChjb25zdCBJVEVNICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE1lbnVfT3B0aW9ucykJbWVudV9vcHRzIChjb25zdCBNRU5VICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoTWVudV9Ib29rKQlpdGVtX2luaXQgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoTWVudV9Ib29rKQlpdGVtX3Rlcm0gKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoTWVudV9Ib29rKQltZW51X2luaXQgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoTWVudV9Ib29rKQltZW51X3Rlcm0gKGNvbnN0IE1FTlUgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikJbWVudV9zdWIgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopCW1lbnVfd2luIChjb25zdCBNRU5VICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKQlpdGVtX2Rlc2NyaXB0aW9uIChjb25zdCBJVEVNICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikJaXRlbV9uYW1lIChjb25zdCBJVEVNICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikJbWVudV9tYXJrIChjb25zdCBNRU5VICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikJbWVudV9yZXF1ZXN0X25hbWUgKGludCk7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCW1lbnVfcGF0dGVybiAoY29uc3QgTUVOVSAqKTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikJbWVudV91c2VycHRyIChjb25zdCBNRU5VICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikJaXRlbV91c2VycHRyIChjb25zdCBJVEVNICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKQltZW51X2JhY2sgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKQltZW51X2ZvcmUgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKQltZW51X2dyZXkgKGNvbnN0IE1FTlUgKik7Ci0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZyZWVfaXRlbSAoSVRFTSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWZyZWVfbWVudSAoTUVOVSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCWl0ZW1fY291bnQgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlpdGVtX2luZGV4IChjb25zdCBJVEVNICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJaXRlbV9vcHRzX29mZiAoSVRFTSAqLEl0ZW1fT3B0aW9ucyk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlpdGVtX29wdHNfb24gKElURU0gKixJdGVtX09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJbWVudV9kcml2ZXIgKE1FTlUgKixpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJbWVudV9vcHRzX29mZiAoTUVOVSAqLE1lbnVfT3B0aW9ucyk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQltZW51X29wdHNfb24gKE1FTlUgKixNZW51X09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJbWVudV9wYWQgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlwb3NfbWVudV9jdXJzb3IgKGNvbnN0IE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlwb3N0X21lbnUgKE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzY2FsZV9tZW51IChjb25zdCBNRU5VICosaW50ICosaW50ICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2N1cnJlbnRfaXRlbSAoTUVOVSAqbWVudSxJVEVNICppdGVtKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9pdGVtX2luaXQgKE1FTlUgKiwgTWVudV9Ib29rKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9pdGVtX29wdHMgKElURU0gKixJdGVtX09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2l0ZW1fdGVybSAoTUVOVSAqLCBNZW51X0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2l0ZW1fdXNlcnB0ciAoSVRFTSAqLCB2b2lkICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X2l0ZW1fdmFsdWUgKElURU0gKixib29sKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X2JhY2sgKE1FTlUgKixjaHR5cGUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfZm9yZSAoTUVOVSAqLGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfbWVudV9mb3JtYXQgKE1FTlUgKixpbnQsaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X2dyZXkgKE1FTlUgKixjaHR5cGUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfaW5pdCAoTUVOVSAqLCBNZW51X0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfaXRlbXMgKE1FTlUgKixJVEVNICoqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X21hcmsgKE1FTlUgKiwgY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X29wdHMgKE1FTlUgKixNZW51X09wdGlvbnMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfcGFkIChNRU5VICosaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X3BhdHRlcm4gKE1FTlUgKixjb25zdCBjaGFyICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfc3ViIChNRU5VICosV0lORE9XICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfdGVybSAoTUVOVSAqLCBNZW51X0hvb2spOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJc2V0X21lbnVfdXNlcnB0ciAoTUVOVSAqLHZvaWQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfbWVudV93aW4gKE1FTlUgKixXSU5ET1cgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQlzZXRfdG9wX3JvdyAoTUVOVSAqLGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQl0b3Bfcm93IChjb25zdCBNRU5VICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkJdW5wb3N0X21lbnUgKE1FTlUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQltZW51X3JlcXVlc3RfYnlfbmFtZSAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpCXNldF9tZW51X3NwYWNpbmcgKE1FTlUgKixpbnQsaW50LGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KQltZW51X3NwYWNpbmcgKGNvbnN0IE1FTlUgKixpbnQgKixpbnQgKixpbnQgKik7Ci0KLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpCWl0ZW1fdmFsdWUgKGNvbnN0IElURU0gKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkJaXRlbV92aXNpYmxlIChjb25zdCBJVEVNICopOwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkJbWVudV9mb3JtYXQgKGNvbnN0IE1FTlUgKixpbnQgKixpbnQgKik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotICB9Ci0jZW5kaWYKLQotI2VuZGlmIC8qIEVUSV9NRU5VICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21mX2NvbW1vbi5oIGIvaW5jbHVkZS9tZl9jb21tb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgxNjcyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21mX2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk1LDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogJElkOiBtZl9jb21tb24uaCx2IDAuMjIgMjAwNS8xMS8yNiAxNToyNjo1MiB0b20gRXhwICQgKi8KLQotLyogQ29tbW9uIGludGVybmFsIGhlYWRlciBmb3IgbWVudSBhbmQgZm9ybSBsaWJyYXJ5ICovCi0KLSNpZm5kZWYgTUZfQ09NTU9OX0hfaW5jbAotI2RlZmluZSBNRl9DT01NT05fSF9pbmNsIDEKLQotI2luY2x1ZGUgPG5jdXJzZXNfY2ZnLmg+Ci0jaW5jbHVkZSA8Y3Vyc2VzLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0KLSNpZiBERUNMX0VSUk5PCi1leHRlcm4gaW50IGVycm5vOwotI2VuZGlmCi0KLS8qIGluIGNhc2Ugb2YgZGVidWcgdmVyc2lvbiB3ZSBpZ25vcmUgdGhlIHN1cHByZXNzaW9uIG9mIGFzc2VydGlvbnMgKi8KLSNpZmRlZiBUUkFDRQotIyAgaWZkZWYgTkRFQlVHCi0jICAgIHVuZGVmIE5ERUJVRwotIyAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmNfYWxsb2MuaD4KLQotI2lmIFVTRV9SQ1NfSURTCi0jZGVmaW5lIE1PRFVMRV9JRChpZCkgc3RhdGljIGNvbnN0IGNoYXIgSWRlbnRbXSA9IGlkOwotI2Vsc2UKLSNkZWZpbmUgTU9EVUxFX0lEKGlkKSAvKm5vdGhpbmcqLwotI2VuZGlmCi0KLQotLyogTWF4aW11bSByZWd1bGFyIDgtYml0IGNoYXJhY3RlciBjb2RlICovCi0jZGVmaW5lIE1BWF9SRUdVTEFSX0NIQVJBQ1RFUiAoMHhmZikKLQotI2RlZmluZSBTRVRfRVJST1IoY29kZSkgKGVycm5vPShjb2RlKSkKLSNkZWZpbmUgR0VUX0VSUk9SKCkgICAgIChlcnJubykKLQotI2lmZGVmIFRSQUNFCi0jZGVmaW5lIFJFVFVSTihjb2RlKSAgICByZXR1cm5Db2RlKCBTRVRfRVJST1IoY29kZSkgKQotI2Vsc2UKLSNkZWZpbmUgUkVUVVJOKGNvZGUpICAgIHJldHVybiggU0VUX0VSUk9SKGNvZGUpICkKLSNlbmRpZgotCi0vKiBUaGUgZmV3IGNvbW1vbiB2YWx1ZXMgaW4gdGhlIHN0YXR1cyBmaWVsZHMgZm9yIG1lbnVzIGFuZCBmb3JtcyAqLwotI2RlZmluZSBfUE9TVEVEICAgICAgICAgKDB4MDFVKSAgLyogbWVudSBvciBmb3JtIGlzIHBvc3RlZCAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIF9JTl9EUklWRVIgICAgICAoMHgwMlUpICAvKiBtZW51IG9yIGZvcm0gaXMgcHJvY2Vzc2luZyBob29rIHJvdXRpbmUgKi8KLQotLyogQ2FsbCBvYmplY3QgaG9vayAqLwotI2RlZmluZSBDYWxsX0hvb2soIG9iamVjdCwgaGFuZGxlciApIFwKLSAgIGlmICggKG9iamVjdCkgIT0gMCAmJiAoKG9iamVjdCktPmhhbmRsZXIpICE9ICh2b2lkICopIDAgKVwKLSAgIHtcCi0JKG9iamVjdCktPnN0YXR1cyB8PSBfSU5fRFJJVkVSO1wKLQkob2JqZWN0KS0+aGFuZGxlcihvYmplY3QpO1wKLQkob2JqZWN0KS0+c3RhdHVzICY9IH5fSU5fRFJJVkVSO1wKLSAgIH0KLQotI2VuZGlmIC8qIE1GX0NPTU1PTl9IX2luY2wgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmNfYWxsb2MuaCBiL2luY2x1ZGUvbmNfYWxsb2MuaAppbmRleCBmNTIxYmZmLi4zNTZmNjA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25jX2FsbG9jLmgKKysrIGIvaW5jbHVkZS9uY19hbGxvYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksMTYgKzI5LDE3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogJElkOiBuY19hbGxvYy5oLHYgMS4xNiAyMDA4LzA5LzI3IDIyOjMwOjMzIHRvbSBFeHAgJCAqLworLyogJElkOiBuY19hbGxvYy5oLHYgMS4yMiAyMDEzLzAxLzI2IDIxOjU2OjUxIHRvbSBFeHAgJCAqLwogCiAjaWZuZGVmIE5DX0FMTE9DX2luY2x1ZGVkCiAjZGVmaW5lIE5DX0FMTE9DX2luY2x1ZGVkIDEKKy8qICpJTkRFTlQtT0ZGKiAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZiBIQVZFX0xJQkRNQUxMT0MKKyNpZiBkZWZpbmVkKEhBVkVfTElCRE1BTExPQykgJiYgSEFWRV9MSUJETUFMTE9DCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjdW5kZWYgc3RybmR1cAkJLyogd29ya2Fyb3VuZCBmb3IgI2RlZmluZSBpbiBHTElCQyAyLjcgKi8KICNpbmNsdWRlIDxkbWFsbG9jLmg+ICAgIC8qIEdyYXkgV2F0c29uJ3MgbGlicmFyeSAqLwpAQCAtNDcsMTQgKzQ4LDE0IEBACiAjZGVmaW5lIEhBVkVfTElCRE1BTExPQyAwCiAjZW5kaWYKIAotI2lmIEhBVkVfTElCREJNQUxMT0MKKyNpZiBkZWZpbmVkKEhBVkVfTElCREJNQUxMT0MpICYmIEhBVkVfTElCREJNQUxMT0MKICNpbmNsdWRlIDxkYm1hbGxvYy5oPiAgIC8qIENvbm9yIENhaGlsbCdzIGxpYnJhcnkgKi8KICNlbHNlCiAjdW5kZWYgIEhBVkVfTElCREJNQUxMT0MKICNkZWZpbmUgSEFWRV9MSUJEQk1BTExPQyAwCiAjZW5kaWYKIAotI2lmIEhBVkVfTElCTVBBVFJPTAorI2lmIGRlZmluZWQoSEFWRV9MSUJNUEFUUk9MKSAmJiBIQVZFX0xJQk1QQVRST0wKICNpbmNsdWRlIDxtcGF0cm9sLmg+ICAgIC8qIE1lbW9yeS1QYXRyb2wgbGlicmFyeSAqLwogI2Vsc2UKICN1bmRlZiAgSEFWRV9MSUJNUEFUUk9MCkBAIC03NCw5ICs3NSwxNSBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19mcmVlX3RwYXJtKHZvaWQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19sZWFrc19kdW1wX2VudHJ5KHZvaWQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19sZWFrc190aWModm9pZCk7Ci0jZGVmaW5lIEV4aXRQcm9ncmFtKGNvZGUpIF9uY19mcmVlX2FuZF9leGl0KGNvZGUpCisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlX2FuZF9leGl0KShTQ1JFRU4qLCBpbnQpIEdDQ19OT1JFVFVSTjsKICNlbmRpZgogCisjZGVmaW5lIEV4aXRQcm9ncmFtKGNvZGUpIF9uY19mcmVlX2FuZF9leGl0KGNvZGUpCisKKyNlbmRpZiAvKiBOT19MRUFLUywgZXRjICovCisKICNpZm5kZWYgSEFWRV9OQ19GUkVFQUxMCiAjZGVmaW5lIEhBVkVfTkNfRlJFRUFMTCAwCiAjZW5kaWYKQEAgLTg4LDYgKzk1LDcgQEAKIC8qIGRvYWxsb2MuYyAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikgX25jX2RvYWxsb2Modm9pZCAqLCBzaXplX3QpOwogI2lmICFIQVZFX1NUUkRVUAorI3VuZGVmIHN0cmR1cAogI2RlZmluZSBzdHJkdXAgX25jX3N0cmR1cAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX25jX3N0cmR1cChjb25zdCBjaGFyICopOwogI2VuZGlmCkBAIC05NSwxMiArMTAzLDE0IEBACiAvKiBlbnRyaWVzLmMgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfbGVha3NfdGluZm8odm9pZCk7CiAKLSNkZWZpbmUgdHlwZU1hbGxvYyh0eXBlLGVsdHMpICh0eXBlICopbWFsbG9jKChlbHRzKSpzaXplb2YodHlwZSkpCi0jZGVmaW5lIHR5cGVDYWxsb2ModHlwZSxlbHRzKSAodHlwZSAqKWNhbGxvYygoZWx0cyksc2l6ZW9mKHR5cGUpKQotI2RlZmluZSB0eXBlUmVhbGxvYyh0eXBlLGVsdHMscHRyKSAodHlwZSAqKV9uY19kb2FsbG9jKHB0ciwgKGVsdHMpKnNpemVvZih0eXBlKSkKKyNkZWZpbmUgdHlwZU1hbGxvYyh0eXBlLGVsdHMpICh0eXBlICopbWFsbG9jKChzaXplX3QpKGVsdHMpKnNpemVvZih0eXBlKSkKKyNkZWZpbmUgdHlwZUNhbGxvYyh0eXBlLGVsdHMpICh0eXBlICopY2FsbG9jKChzaXplX3QpKGVsdHMpLHNpemVvZih0eXBlKSkKKyNkZWZpbmUgdHlwZVJlYWxsb2ModHlwZSxlbHRzLHB0cikgKHR5cGUgKilfbmNfZG9hbGxvYyhwdHIsIChzaXplX3QpKGVsdHMpKnNpemVvZih0eXBlKSkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAorLyogKklOREVOVC1PTiogKi8KKwogI2VuZGlmIC8qIE5DX0FMTE9DX2luY2x1ZGVkICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25jX21pbmd3LmggYi9pbmNsdWRlL25jX21pbmd3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0NzAwMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmNfbWluZ3cuaApAQCAtMCwwICsxLDY5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQXV0aG9yOiBUaG9tYXMgRGlja2V5LCAyMDA4LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qICRJZDogbmNfbWluZ3cuaCx2IDEuMyAyMDEwLzA5LzI1IDIyOjE2OjEyIGp1ZXJnZW4gRXhwICQgKi8KKworI2lmbmRlZiBOQ19NSU5HV19ICisjZGVmaW5lIE5DX01JTkdXX0ggMQorCisjaWZkZWYgV0lOVkVSCisjICBpZiBXSU5WRVIgPCAweDA1MDEKKyMgICAgZXJyb3IgV0lOVkVSIG11c3QgYXQgbGVhc3QgYmUgMHgwNTAxCisjICBlbmRpZiAgCisjZWxzZQorIyAgZGVmaW5lIFdJTlZFUiAweDA1MDEKKyNlbmRpZgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI3VuZGVmIHNsZWVwCisjZGVmaW5lIHNsZWVwKG4pIFNsZWVwKChuKSAqIDEwMDApCisKKyN1bmRlZiBnZXR0aW1lb2ZkYXkKKyNkZWZpbmUgZ2V0dGltZW9mZGF5KHR2LHR6KSBfbmNfZ2V0dGltZW9mZGF5KHR2LHR6KQorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4JLyogZm9yIHN0cnVjdCB0aW1ldmFsICovCisKK2V4dGVybiBpbnQgX25jX2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqLCB2b2lkICopOworCisjdW5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkKKyNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQorCisjZGVmaW5lIFNJR0hVUCAgMQorI2RlZmluZSBTSUdLSUxMIDkKKyNkZWZpbmUgZ2V0bG9naW4oKSAidXNlcm5hbWUiCisKKyN1bmRlZiB3Y3dpZHRoCisjZGVmaW5lIHdjd2lkdGgodWNzKSBfbmNfd2N3aWR0aCh1Y3MpCitleHRlcm4gaW50IF9uY193Y3dpZHRoKHdjaGFyX3QpOworCisjZW5kaWYgLyogTkNfTUlOR1dfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY19wYW5lbC5oIGIvaW5jbHVkZS9uY19wYW5lbC5oCmluZGV4IDY1Nzg1NzcuLjZhOWZmZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmNfcGFuZWwuaAorKysgYi9pbmNsdWRlL25jX3BhbmVsLmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMSw5ICszMSw4IEBACiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyoKLSAqICRJZDogbmNfcGFuZWwuaCx2IDEuNSAyMDA4LzA4LzA0IDE4OjI2OjQ2IHRvbSBFeHAgJAorICogJElkOiBuY19wYW5lbC5oLHYgMS43IDIwMDkvMDcvMDQgMTg6MjA6MDIgdG9tIEV4cCAkCiAgKgogICoJbmNfcGFuZWwuaAogICoKQEAgLTQ1LDI1ICs0NCwzMyBAQAogI2RlZmluZSBOQ19QQU5FTF9IIDEKIAogI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKK2V4dGVybiAiQyIKK3sKICNlbmRpZgogCi1zdHJ1Y3QgcGFuZWw7IC8qIEZvcndhcmQgRGVjbGFyYXRpb24gKi8KKyAgc3RydWN0IHBhbmVsOwkJCS8qIEZvcndhcmQgRGVjbGFyYXRpb24gKi8KIAotc3RydWN0IHBhbmVsaG9vayB7Ci0gIHN0cnVjdCBwYW5lbCogICB0b3BfcGFuZWw7Ci0gIHN0cnVjdCBwYW5lbCogICBib3R0b21fcGFuZWw7Ci0gIHN0cnVjdCBwYW5lbCogICBzdGRzY3JfcHNldWRvX3BhbmVsOworICBzdHJ1Y3QgcGFuZWxob29rCisgICAgeworICAgICAgc3RydWN0IHBhbmVsICp0b3BfcGFuZWw7CisgICAgICBzdHJ1Y3QgcGFuZWwgKmJvdHRvbV9wYW5lbDsKKyAgICAgIHN0cnVjdCBwYW5lbCAqc3Rkc2NyX3BzZXVkb19wYW5lbDsKICNpZiBOT19MRUFLUwotICBpbnQgKCpkZXN0cm95KShzdHJ1Y3QgcGFuZWwgKik7CisgICAgICBpbnQgKCpkZXN0cm95KSAoc3RydWN0IHBhbmVsICopOwogI2VuZGlmCi19OworICAgIH07CiAKLS8qIFJldHJpZXZlIHRoZSBwYW5lbGhvb2sgb2YgdGhlIGN1cnJlbnQgc2NyZWVuICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoc3RydWN0IHBhbmVsaG9vayopIF9uY19wYW5lbGhvb2sgKHZvaWQpOworICBzdHJ1Y3Qgc2NyZWVuOwkJLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworLyogUmV0cmlldmUgdGhlIHBhbmVsaG9vayBvZiB0aGUgc3BlY2lmaWVkIHNjcmVlbiAqLworICBleHRlcm4gTkNVUlNFU19FWFBPUlQoc3RydWN0IHBhbmVsaG9vayAqKQorICAgIF9uY19wYW5lbGhvb2sgKHZvaWQpOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHN0cnVjdCBwYW5lbGhvb2sgKikKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3BhbmVsaG9vaykgKFNDUkVFTiAqKTsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCi0jZW5kaWYgLyogTkNfUEFORUxfSCAqLworI2VuZGlmCQkJCS8qIE5DX1BBTkVMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmNfc3RyaW5nLmggYi9pbmNsdWRlL25jX3N0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNmNjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25jX3N0cmluZy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMjAxMiAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgU1RSSU5HX0hBQ0tTX0gKKyNkZWZpbmUgU1RSSU5HX0hBQ0tTX0ggMQorCisjaW5jbHVkZSA8bmN1cnNlc19jZmcuaD4KKworLyoKKyAqICRJZDogbmNfc3RyaW5nLmgsdiAxLjQgMjAxMy8xMi8xNSAwMTowOToxOSB0b20gRXhwICQKKyAqCisgKiBTdHJpbmctaGFja3MuICBVc2UgdGhlc2UgbWFjcm9zIHRvIHN0aWZsZSB3YXJuaW5ncyBvbiAocHJlc3VtYWJseSkgY29ycmVjdAorICogdXNlcyBvZiBzdHJjYXQsIHN0cmNweSBhbmQgc3ByaW50Zi4KKyAqCisgKiBCeSB0aGUgd2F5IC0KKyAqIEEgZnVuZGFtZW50YWwgbGltaXRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlcyAoYW5kIGZyZXF1ZW50IGlzc3VlIGluIGJ1ZworICogcmVwb3J0cyB1c2luZyB0aGVzZSBmdW5jdGlvbnMpIGlzIHRoYXQgc2l6ZXMgYXJlIHBhc3NlZCBhcyB1bnNpZ25lZCB2YWx1ZXMKKyAqICh3aXRoIGFzc29jaWF0ZWQgc2lnbi1leHRlbnNpb24gcHJvYmxlbXMpLCBsaW1pdGluZyB0aGVpciBlZmZlY3RpdmVuZXNzCisgKiB3aGVuIGNoZWNraW5nIGZvciBidWZmZXIgb3ZlcmZsb3cuCisgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIE5DVVJTRVNfVk9JRAkJLyogbm90aGluZyAqLworI2Vsc2UKKyNkZWZpbmUgTkNVUlNFU19WT0lEICh2b2lkKQorI2VuZGlmCisKKyNpZiBVU0VfU1RSSU5HX0hBQ0tTICYmIEhBVkVfU1RSTENBVAorI2RlZmluZSBfbmNfU1RSQ0FUKGQscyxuKQlOQ1VSU0VTX1ZPSUQgc3RybGNhdCgoZCksKHMpLE5DVVJTRVNfQ0FTVChzaXplX3QsbikpCisjZWxzZQorI2RlZmluZSBfbmNfU1RSQ0FUKGQscyxuKQlOQ1VSU0VTX1ZPSUQgc3RyY2F0KChkKSwocykpCisjZW5kaWYKKworI2lmIFVTRV9TVFJJTkdfSEFDS1MgJiYgSEFWRV9TVFJMQ1BZCisjZGVmaW5lIF9uY19TVFJDUFkoZCxzLG4pCU5DVVJTRVNfVk9JRCBzdHJsY3B5KChkKSwocyksTkNVUlNFU19DQVNUKHNpemVfdCxuKSkKKyNlbHNlCisjZGVmaW5lIF9uY19TVFJDUFkoZCxzLG4pCU5DVVJTRVNfVk9JRCBzdHJjcHkoKGQpLChzKSkKKyNlbmRpZgorCisjaWYgVVNFX1NUUklOR19IQUNLUyAmJiBIQVZFX1NOUFJJTlRGCisjZGVmaW5lIF9uY19TUFJJTlRGICAgICAgICAgICAgIE5DVVJTRVNfVk9JRCBzbnByaW50ZgorI2RlZmluZSBfbmNfU0xJTUlUKG4pICAgICAgICAgICBOQ1VSU0VTX0NBU1Qoc2l6ZV90LG4pLAorI2Vsc2UKKyNkZWZpbmUgX25jX1NQUklOVEYgICAgICAgICAgICAgTkNVUlNFU19WT0lEIHNwcmludGYKKyNkZWZpbmUgX25jX1NMSU1JVChuKQkJLyogbm90aGluZyAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBTVFJJTkdfSEFDS1NfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY190ZXJtaW9zLmggYi9pbmNsdWRlL25jX3Rlcm1pb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjE3ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uY190ZXJtaW9zLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMjAxMSAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qICRJZDogbmNfdGVybWlvcy5oLHYgMS4zIDIwMTQvMDUvMDMgMTk6NDA6MTAganVlcmdlbiBFeHAgJCAqLworCisjaWZuZGVmIE5DX1RFUk1JT1NfaW5jbHVkZWQKKyNkZWZpbmUgTkNfVEVSTUlPU19pbmNsdWRlZCAxCisKKyNpZiBIQVZFX1RFUk1JT1NfSCAmJiBIQVZFX1RDR0VUQVRUUgorCisjZWxzZSAvKiAhSEFWRV9URVJNSU9TX0ggKi8KKworI2lmIEhBVkVfVEVSTUlPX0gKKworLyogQWRkIGRlZmluaXRpb25zIHRvIG1ha2UgdGVybWlvIGxvb2sgbGlrZSB0ZXJtaW9zLgorICogQnV0IGlmZGVmIGl0LCBzaW5jZSB0aGVyZSBhcmUgc29tZSBpbXBsZW1lbnRhdGlvbnMKKyAqIHRoYXQgdHJ5IHRvIGRvIHRoaXMgZm9yIHVzIGluIGEgZmFrZSA8dGVybWlvLmg+LgorICovCisjaWZuZGVmIFRDU0FEUkFJTgorI2RlZmluZSBUQ1NBRFJBSU4gVENTRVRBVworI2VuZGlmCisjaWZuZGVmIFRDU0FGTFVTSAorI2RlZmluZSBUQ1NBRkxVU0ggVENTRVRBRgorI2VuZGlmCisjaWZuZGVmIHRjc2V0YXR0cgorI2RlZmluZSB0Y3NldGF0dHIoZmQsIGNtZCwgYXJnKSBpb2N0bChmZCwgY21kLCBhcmcpCisjZW5kaWYKKyNpZm5kZWYgdGNnZXRhdHRyCisjZGVmaW5lIHRjZ2V0YXR0cihmZCwgYXJnKSBpb2N0bChmZCwgVENHRVRBLCBhcmcpCisjZW5kaWYKKyNpZm5kZWYgY2ZnZXRvc3BlZWQKKyNkZWZpbmUgY2ZnZXRvc3BlZWQodCkgKCh0KS0+Y19jZmxhZyAmIENCQVVEKQorI2VuZGlmCisjaWZuZGVmIFRDSUZMVVNICisjZGVmaW5lIFRDSUZMVVNIIDAKKyNlbmRpZgorI2lmbmRlZiB0Y2ZsdXNoCisjZGVmaW5lIHRjZmx1c2goZmQsIGFyZykgaW9jdGwoZmQsIFRDRkxTSCwgYXJnKQorI2VuZGlmCisKKyNlbHNlIC8qICFIQVZFX1RFUk1JT19IICovCisKKyNpZiBfX01JTkdXMzJfXworCisvKiBsZmxhZyBiaXRzICovCisjZGVmaW5lIElTSUcJMHgwMDAxCisjZGVmaW5lIElDQU5PTgkweDAwMDIKKyNkZWZpbmUgRUNITwkweDAwMDQKKyNkZWZpbmUgRUNIT0UJMHgwMDA4CisjZGVmaW5lIEVDSE9LCTB4MDAxMAorI2RlZmluZSBFQ0hPTkwJMHgwMDIwCisjZGVmaW5lIE5PRkxTSAkweDAwNDAKKyNkZWZpbmUgSUVYVEVOCTB4MDEwMAorCisjZGVmaW5lIFZFT0YJICAgICA0CisjZGVmaW5lIFZFUkFTRQkgICAgIDUKKyNkZWZpbmUgVklOVFIJICAgICA2CisjZGVmaW5lIFZLSUxMCSAgICAgNworI2RlZmluZSBWTUlOCSAgICAgOQorI2RlZmluZSBWUVVJVAkgICAgMTAKKyNkZWZpbmUgVlRJTUUJICAgIDE2CisKKy8qIGlmbGFnIGJpdHMgKi8KKyNkZWZpbmUgSUdOQlJLCTB4MDAwMDEKKyNkZWZpbmUgQlJLSU5UCTB4MDAwMDIKKyNkZWZpbmUgSUdOUEFSCTB4MDAwMDQKKyNkZWZpbmUgSU5QQ0sJMHgwMDAxMAorI2RlZmluZSBJU1RSSVAJMHgwMDAyMAorI2RlZmluZSBJTkxDUgkweDAwMDQwCisjZGVmaW5lIElHTkNSCTB4MDAwODAKKyNkZWZpbmUgSUNSTkwJMHgwMDEwMAorI2RlZmluZSBJWE9OCTB4MDA0MDAKKyNkZWZpbmUgSVhPRkYJMHgwMTAwMAorI2RlZmluZSBQQVJNUksJMHgxMDAwMAorCisvKiBvZmxhZyBiaXRzICovCisjZGVmaW5lIE9QT1NUCTB4MDAwMDEKKworLyogY2ZsYWcgYml0cyAqLworI2RlZmluZSBDQkFVRAkgMHgwMTAwZgorI2RlZmluZSBCMAkgMHgwMDAwMAorI2RlZmluZSBCNTAJIDB4MDAwMDEKKyNkZWZpbmUgQjc1CSAweDAwMDAyCisjZGVmaW5lIEIxMTAJIDB4MDAwMDMKKyNkZWZpbmUgQjEzNAkgMHgwMDAwNAorI2RlZmluZSBCMTUwCSAweDAwMDA1CisjZGVmaW5lIEIyMDAJIDB4MDAwMDYKKyNkZWZpbmUgQjMwMAkgMHgwMDAwNworI2RlZmluZSBCNjAwCSAweDAwMDA4CisjZGVmaW5lIEIxMjAwCSAweDAwMDA5CisjZGVmaW5lIEIxODAwCSAweDAwMDBhCisjZGVmaW5lIEIyNDAwCSAweDAwMDBiCisjZGVmaW5lIEI0ODAwCSAweDAwMDBjCisjZGVmaW5lIEI5NjAwCSAweDAwMDBkCisKKyNkZWZpbmUgQ1NJWkUJIDB4MDAwMzAKKyNkZWZpbmUgQ1M4CSAweDAwMDMwCisjZGVmaW5lIENTVE9QQgkgMHgwMDA0MAorI2RlZmluZSBDUkVBRAkgMHgwMDA4MAorI2RlZmluZSBQQVJFTkIJIDB4MDAxMDAKKyNkZWZpbmUgUEFST0RECSAweDAwMjAwCisjZGVmaW5lIEhVUENMCSAweDAwNDAwCisjZGVmaW5lIENMT0NBTAkgMHgwMDgwMAorCisjZGVmaW5lIFRDSUZMVVNICTAKKyNkZWZpbmUgVENTQURSQUlOCTMKKworI2lmbmRlZiBjZmdldG9zcGVlZAorI2RlZmluZSBjZmdldG9zcGVlZCh0KSAoKHQpLT5jX2NmbGFnICYgQ0JBVUQpCisjZW5kaWYKKworI2lmbmRlZiB0Y3NldGF0dHIKKyNkZWZpbmUgdGNzZXRhdHRyKGZkLCBvcHQsIGFyZykgX25jX21pbmd3X3Rjc2V0YXR0cihmZCwgb3B0LCBhcmcpCisjZW5kaWYKKworI2lmbmRlZiB0Y2dldGF0dHIKKyNkZWZpbmUgdGNnZXRhdHRyKGZkLCBhcmcpIF9uY19taW5nd190Y2dldGF0dHIoZmQsIGFyZykKKyNlbmRpZgorCisjaWZuZGVmIHRjZmx1c2gKKyNkZWZpbmUgdGNmbHVzaChmZCwgcXVldWUpIF9uY19taW5nd190Y2ZsdXNoKGZkLCBxdWV1ZSkKKyNlbmRpZgorCisjdW5kZWYgIHR0eW5hbWUKKyNkZWZpbmUgdHR5bmFtZShmZCkgTlVMTAorCisjZW5kaWYgLyogX19NSU5HVzMyX18gKi8KKyNlbmRpZiAvKiBIQVZFX1RFUk1JT19IICovCisKKyNlbmRpZiAvKiBIQVZFX1RFUk1JT1NfSCAqLworCisjZW5kaWYgLyogTkNfVEVSTUlPU19pbmNsdWRlZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY190cGFybS5oIGIvaW5jbHVkZS9uY190cGFybS5oCmluZGV4IGQxZDc2OWIuLjI0OGY2YzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmNfdHBhcm0uaAorKysgYi9pbmNsdWRlL25jX3RwYXJtLmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCwxMyArMzAsMjMgQEAKICAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAyMDA2ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogJElkOiBuY190cGFybS5oLHYgMS40IDIwMDYvMTEvMjYgMDA6NDk6MjUgdG9tIEV4cCAkICovCisvKiAkSWQ6IG5jX3RwYXJtLmgsdiAxLjYgMjAxMi8wMi8xOCAyMTozNDo0MiB0b20gRXhwICQgKi8KKworI2lmbmRlZiBOQ19UUEFSTV9pbmNsdWRlZAorI2RlZmluZSBOQ19UUEFSTV9pbmNsdWRlZCAxCiAKIC8qCiAgKiBDYXN0IHBhcmFtZXRlcnMgcGFzdCB0aGUgZm9ybWF0dGluZy1zdHJpbmcgZm9yIHRwYXJtKCkgdG8gbWF0Y2ggdGhlCiAgKiBhc3N1bXB0aW9uIG9mIHRoZSB2YXJhcmdzIGNvZGUuCiAgKi8KKyNpZm5kZWYgVFBBUk1fQVJHCisjaWZkZWYgTkNVUlNFU19UUEFSTV9BUkcKKyNkZWZpbmUgVFBBUk1fQVJHIE5DVVJTRVNfVFBBUk1fQVJHCisjZWxzZQogI2RlZmluZSBUUEFSTV9BUkcgbG9uZworI2VuZGlmCisjZW5kaWYgLyogVFBBUkFNX0FSRyAqLworCiAjZGVmaW5lIFRQQVJNX04obikgKFRQQVJNX0FSRykobikKIAogI2RlZmluZSBUUEFSTV85KGEsYixjLGQsZSxmLGcsaCxpLGopIHRwYXJtKGEsVFBBUk1fTihiKSxUUEFSTV9OKGMpLFRQQVJNX04oZCksVFBBUk1fTihlKSxUUEFSTV9OKGYpLFRQQVJNX04oZyksVFBBUk1fTihoKSxUUEFSTV9OKGkpLFRQQVJNX04oaikpCkBAIC02MywzICs3Myw1IEBACiAjZGVmaW5lIFRQQVJNXzEoYSxiKSBUUEFSTV8yKGEsYiwwKQogI2RlZmluZSBUUEFSTV8wKGEpIFRQQVJNXzEoYSwwKQogI2VuZGlmCisKKyNlbmRpZiAvKiBOQ19UUEFSTV9pbmNsdWRlZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzLmggYi9pbmNsdWRlL25jdXJzZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmMjM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25jdXJzZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCi0gKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAkSWQ6IGN1cnNlcy5oLmluLHYgMS4xODcgMjAwOC8wOC8zMCAyMDoxMToyOSB0b20gRXhwICQgKi8KLQotI2lmbmRlZiBfX05DVVJTRVNfSAotI2RlZmluZSBfX05DVVJTRVNfSAotCi0jZGVmaW5lIENVUlNFUyAxCi0jZGVmaW5lIENVUlNFU19IIDEKLQotLyogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBmb3IgdGhlIGVuaGFuY2VkIGZ1bmN0aW9uYWxpdHkgdG8gYmUgdmlzaWJsZS4KLSAqIEhvd2V2ZXIsIHNvbWUgb2YgdGhlIHdpZGUtY2hhcmFjdGVyIChlbmhhbmNlZCkgZnVuY3Rpb25hbGl0eSBpcyBtaXNzaW5nLgotICogU28gd2UgZG8gbm90IGRlZmluZSBpdCAoeWV0KS4KLSNkZWZpbmUgX1hPUEVOX0NVUlNFUyAxCi0gKi8KLQotLyogVGhlc2UgYXJlIGRlZmluZWQgb25seSBpbiBjdXJzZXMuaCwgYW5kIGFyZSB1c2VkIGZvciBjb25kaXRpb25hbCBjb21waWxlcyAqLwotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUFKT1IgNQotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUlOT1IgNwotI2RlZmluZSBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggMjAwODExMDIKLQotLyogVGhpcyBpcyBkZWZpbmVkIGluIG1vcmUgdGhhbiBvbmUgbmN1cnNlcyBoZWFkZXIsIGZvciBpZGVudGlmaWNhdGlvbiAqLwotI3VuZGVmICBOQ1VSU0VTX1ZFUlNJT04KLSNkZWZpbmUgTkNVUlNFU19WRVJTSU9OICI1LjciCi0KLS8qCi0gKiBJZGVudGlmeSB0aGUgbW91c2UgZW5jb2RpbmcgdmVyc2lvbi4KLSAqLwotI2RlZmluZSBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gMQotCi0vKgotICogRGVmaW5pdGlvbnMgdG8gZmFjaWxpdGF0ZSBETEwncy4KLSAqLwotI2luY2x1ZGUgPG5jdXJzZXNfZGxsLmg+Ci0KLS8qCi0gKiBVc2VyLWRlZmluYWJsZSB0d2VhayB0byBkaXNhYmxlIHRoZSBpbmNsdWRlIG9mIDxzdGRib29sLmg+LgotICovCi0jaWZuZGVmIE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSAotI2RlZmluZSBOQ1VSU0VTX0VOQUJMRV9TVERCT09MX0ggMQotI2VuZGlmCi0KLS8qCi0gKiBOQ1VSU0VTX0FUVFJfVCBpcyB1c2VkIHRvIHF1aWV0IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgbmN1cnNlcwotICogY29uZmlndXJlZCB1c2luZyAtLWRpc2FibGUtbWFjcm9zLgotICovCi0jaWZkZWYgTkNVUlNFU19OT01BQ1JPUwotI2lmbmRlZiBOQ1VSU0VTX0FUVFJfVAotI2RlZmluZSBOQ1VSU0VTX0FUVFJfVCBhdHRyX3QKLSNlbmRpZgotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotI2lmbmRlZiBOQ1VSU0VTX0FUVFJfVAotI2RlZmluZSBOQ1VSU0VTX0FUVFJfVCBpbnQKLSNlbmRpZgotCi0vKgotICogRXhwYW5kcyB0byAnY29uc3QnIGlmIG5jdXJzZXMgaXMgY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1jb25zdC4gIE5vdGUgdGhhdAotICogZG9pbmcgc28gbWFrZXMgaXQgaW5jb21wYXRpYmxlIHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIFgvT3BlbiBDdXJzZXMuCi0gKi8KLSN1bmRlZiAgTkNVUlNFU19DT05TVAotI2RlZmluZSBOQ1VSU0VTX0NPTlNUIC8qbm90aGluZyovCi0KLSN1bmRlZiBOQ1VSU0VTX0lOTElORQotI2RlZmluZSBOQ1VSU0VTX0lOTElORSBpbmxpbmUKLQotLyoKLSAqIFRoZSBpbnRlcm5hbCB0eXBlIHVzZWQgZm9yIGNvbG9yIHZhbHVlcwotICovCi0jdW5kZWYJTkNVUlNFU19DT0xPUl9UCi0jZGVmaW5lCU5DVVJTRVNfQ09MT1JfVCBzaG9ydAotCi0vKgotICogRGVmaW5pdGlvbiB1c2VkIHRvIG1ha2UgV0lORE9XIGFuZCBzaW1pbGFyIHN0cnVjdHMgb3BhcXVlLgotICovCi0jaWZuZGVmIE5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIE5DVVJTRVNfT1BBUVVFIDAKLSNlbmRpZgotCi0vKgotICogVGhlIGludGVybmFsIHR5cGUgdXNlZCBmb3Igd2luZG93IGRpbWVuc2lvbnMuCi0gKi8KLSN1bmRlZglOQ1VSU0VTX1NJWkVfVAotI2RlZmluZQlOQ1VSU0VTX1NJWkVfVCBzaG9ydAotCi0vKgotICogQ29udHJvbCB3aGV0aGVyIHRwYXJtKCkgc3VwcG9ydHMgdmFyYXJncyBvciBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4KLSAqLwotI3VuZGVmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUwotI2RlZmluZSBOQ1VSU0VTX1RQQVJNX1ZBUkFSR1MgMQotCi0vKgotICogTkNVUlNFU19DSF9UIGlzIHVzZWQgaW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIGJ1dCBub3QgdXNlZCBvdGhlcndpc2UgaW4KLSAqIHRoaXMgaGVhZGVyIGZpbGUsIHNpbmNlIHRoYXQgd291bGQgbWFrZSB0aGUgbm9ybWFsL3dpZGUtY2hhcmFjdGVyIHZlcnNpb25zCi0gKiBvZiB0aGUgaGVhZGVyIGluY29tcGF0aWJsZS4KLSAqLwotI3VuZGVmCU5DVVJTRVNfQ0hfVAotI2RlZmluZSBOQ1VSU0VTX0NIX1QgY2h0eXBlCi0KLSNpZiAwICYmIGRlZmluZWQoX0xQNjQpCi10eXBlZGVmIHVuc2lnbmVkIGNodHlwZTsKLXR5cGVkZWYgdW5zaWduZWQgbW1hc2tfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2h0eXBlOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIG1tYXNrX3Q7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8dW5jdHJsLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CS8qIHdlIG5lZWQgdmFfbGlzdCAqLwotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKLSNpbmNsdWRlIDxzdGRkZWYuaD4JLyogd2Ugd2FudCB3Y2hhcl90ICovCi0jZW5kaWYgLyogX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAqLwotCi0vKiBYL09wZW4gYW5kIFNWcjQgc3BlY2lmeSB0aGF0IGN1cnNlcyBpbXBsZW1lbnRzICdib29sJy4gIEhvd2V2ZXIsIEMrKyBtYXkgYWxzbwotICogaW1wbGVtZW50IGl0LiAgSWYgc28sIHdlIG11c3QgdXNlIHRoZSBDKysgY29tcGlsZXIncyB0eXBlIHRvIGF2b2lkIGNvbmZsaWN0Ci0gKiB3aXRoIG90aGVyIGludGVyZmFjZXMuCi0gKgotICogQSBmdXJ0aGVyIGNvbXBsaWNhdGlvbiBpcyB0aGF0IDxzdGRib29sLmg+IG1heSBkZWNsYXJlICdib29sJyB0byBiZSBhCi0gKiBkaWZmZXJlbnQgdHlwZSwgc3VjaCBhcyBhbiBlbnVtIHdoaWNoIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wYXRpYmxlIHdpdGgKLSAqIEMrKy4gIElmIHdlIGhhdmUgPHN0ZGJvb2wuaD4sIG1ha2UgJ2Jvb2wnIGEgbWFjcm8sIHNvIHVzZXJzIG1heSAjdW5kZWYgaXQuCi0gKiBPdGhlcndpc2UsIGxldCBpdCByZW1haW4gYSB0eXBlZGVmIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyICNkZWZpbmUncy4KLSAqIEluIGVpdGhlciBjYXNlLCBtYWtlIGEgdHlwZWRlZiBmb3IgTkNVUlNFU19CT09MIHdoaWNoIGNhbiBiZSB1c2VkIGlmIG5lZWRlZAotICogZnJvbSBlaXRoZXIgQyBvciBDKysuCi0gKi8KLQotI3VuZGVmIFRSVUUKLSNkZWZpbmUgVFJVRSAgICAxCi0KLSN1bmRlZiBGQUxTRQotI2RlZmluZSBGQUxTRSAgIDAKLQotdHlwZWRlZiB1bnNpZ25lZCBOQ1VSU0VTX0JPT0w7Ci0KLSNpZiAwCS8qIF9fY3BsdXNwbHVzLCBldGMuICovCi0KLS8qIHVzZSB0aGUgQysrIGNvbXBpbGVyJ3MgYm9vbCB0eXBlICovCi0jZGVmaW5lIE5DVVJTRVNfQk9PTCBib29sCi0KLSNlbHNlCQkJLyogYzg5LCBjOTksIGV0Yy4gKi8KLQotI2lmIE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSAotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLS8qIHVzZSB3aGF0ZXZlciB0aGUgQyBjb21waWxlciBkZWNpZGVzIGJvb2wgcmVhbGx5IGlzICovCi0jZGVmaW5lIE5DVVJTRVNfQk9PTCBib29sCi0jZWxzZQotLyogdGhlcmUgaXMgbm8gcHJlZGVmaW5lZCBib29sIC0gdXNlIG91ciBvd24gKi8KLSN1bmRlZiBib29sCi0jZGVmaW5lIGJvb2wgTkNVUlNFU19CT09MCi0jZW5kaWYKLQotI2VuZGlmIC8qICFfX2NwbHVzcGx1cywgZXRjLiAqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2RlZmluZSBOQ1VSU0VTX0NBU1QodHlwZSx2YWx1ZSkgc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpCi0jZWxzZQotI2RlZmluZSBOQ1VSU0VTX0NBU1QodHlwZSx2YWx1ZSkgKHR5cGUpKHZhbHVlKQotI2VuZGlmCi0KLS8qCi0gKiBYL09wZW4gYXR0cmlidXRlcy4gIEluIHRoZSBuY3Vyc2VzIGltcGxlbWVudGF0aW9uLCB0aGV5IGFyZSBpZGVudGljYWwgdG8gdGhlCi0gKiBBXyBhdHRyaWJ1dGVzLgotICovCi0jZGVmaW5lIFdBX0FUVFJJQlVURVMJQV9BVFRSSUJVVEVTCi0jZGVmaW5lIFdBX05PUk1BTAlBX05PUk1BTAotI2RlZmluZSBXQV9TVEFORE9VVAlBX1NUQU5ET1VUCi0jZGVmaW5lIFdBX1VOREVSTElORQlBX1VOREVSTElORQotI2RlZmluZSBXQV9SRVZFUlNFCUFfUkVWRVJTRQotI2RlZmluZSBXQV9CTElOSwlBX0JMSU5LCi0jZGVmaW5lIFdBX0RJTQkJQV9ESU0KLSNkZWZpbmUgV0FfQk9MRAkJQV9CT0xECi0jZGVmaW5lIFdBX0FMVENIQVJTRVQJQV9BTFRDSEFSU0VUCi0jZGVmaW5lIFdBX0lOVklTCUFfSU5WSVMKLSNkZWZpbmUgV0FfUFJPVEVDVAlBX1BST1RFQ1QKLSNkZWZpbmUgV0FfSE9SSVpPTlRBTAlBX0hPUklaT05UQUwKLSNkZWZpbmUgV0FfTEVGVAkJQV9MRUZUCi0jZGVmaW5lIFdBX0xPVwkJQV9MT1cKLSNkZWZpbmUgV0FfUklHSFQJQV9SSUdIVAotI2RlZmluZSBXQV9UT1AJCUFfVE9QCi0jZGVmaW5lIFdBX1ZFUlRJQ0FMCUFfVkVSVElDQUwKLQotLyogY29sb3JzICovCi0jZGVmaW5lIENPTE9SX0JMQUNLCTAKLSNkZWZpbmUgQ09MT1JfUkVECTEKLSNkZWZpbmUgQ09MT1JfR1JFRU4JMgotI2RlZmluZSBDT0xPUl9ZRUxMT1cJMwotI2RlZmluZSBDT0xPUl9CTFVFCTQKLSNkZWZpbmUgQ09MT1JfTUFHRU5UQQk1Ci0jZGVmaW5lIENPTE9SX0NZQU4JNgotI2RlZmluZSBDT0xPUl9XSElURQk3Ci0KLS8qIGxpbmUgZ3JhcGhpY3MgKi8KLQotI2lmIDAgfHwgMAotTkNVUlNFU19XUkFQUEVEX1ZBUihjaHR5cGUqLCBhY3NfbWFwKTsKLSNkZWZpbmUgYWNzX21hcCAoX25jX2Fjc19tYXAoKSkKLSNlbHNlCi1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNodHlwZSkgYWNzX21hcFtdOwotI2VuZGlmCi0KLSNkZWZpbmUgTkNVUlNFU19BQ1MoYykJKGFjc19tYXBbTkNVUlNFU19DQVNUKHVuc2lnbmVkIGNoYXIsYyldKQotCi0vKiBWVDEwMCBzeW1ib2xzIGJlZ2luIGhlcmUgKi8KLSNkZWZpbmUgQUNTX1VMQ09STkVSCU5DVVJTRVNfQUNTKCdsJykgLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KLSNkZWZpbmUgQUNTX0xMQ09STkVSCU5DVVJTRVNfQUNTKCdtJykgLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KLSNkZWZpbmUgQUNTX1VSQ09STkVSCU5DVVJTRVNfQUNTKCdrJykgLyogdXBwZXIgcmlnaHQgY29ybmVyICovCi0jZGVmaW5lIEFDU19MUkNPUk5FUglOQ1VSU0VTX0FDUygnaicpIC8qIGxvd2VyIHJpZ2h0IGNvcm5lciAqLwotI2RlZmluZSBBQ1NfTFRFRQlOQ1VSU0VTX0FDUygndCcpIC8qIHRlZSBwb2ludGluZyByaWdodCAqLwotI2RlZmluZSBBQ1NfUlRFRQlOQ1VSU0VTX0FDUygndScpIC8qIHRlZSBwb2ludGluZyBsZWZ0ICovCi0jZGVmaW5lIEFDU19CVEVFCU5DVVJTRVNfQUNTKCd2JykgLyogdGVlIHBvaW50aW5nIHVwICovCi0jZGVmaW5lIEFDU19UVEVFCU5DVVJTRVNfQUNTKCd3JykgLyogdGVlIHBvaW50aW5nIGRvd24gKi8KLSNkZWZpbmUgQUNTX0hMSU5FCU5DVVJTRVNfQUNTKCdxJykgLyogaG9yaXpvbnRhbCBsaW5lICovCi0jZGVmaW5lIEFDU19WTElORQlOQ1VSU0VTX0FDUygneCcpIC8qIHZlcnRpY2FsIGxpbmUgKi8KLSNkZWZpbmUgQUNTX1BMVVMJTkNVUlNFU19BQ1MoJ24nKSAvKiBsYXJnZSBwbHVzIG9yIGNyb3Nzb3ZlciAqLwotI2RlZmluZSBBQ1NfUzEJCU5DVVJTRVNfQUNTKCdvJykgLyogc2NhbiBsaW5lIDEgKi8KLSNkZWZpbmUgQUNTX1M5CQlOQ1VSU0VTX0FDUygncycpIC8qIHNjYW4gbGluZSA5ICovCi0jZGVmaW5lIEFDU19ESUFNT05ECU5DVVJTRVNfQUNTKCdgJykgLyogZGlhbW9uZCAqLwotI2RlZmluZSBBQ1NfQ0tCT0FSRAlOQ1VSU0VTX0FDUygnYScpIC8qIGNoZWNrZXIgYm9hcmQgKHN0aXBwbGUpICovCi0jZGVmaW5lIEFDU19ERUdSRUUJTkNVUlNFU19BQ1MoJ2YnKSAvKiBkZWdyZWUgc3ltYm9sICovCi0jZGVmaW5lIEFDU19QTE1JTlVTCU5DVVJTRVNfQUNTKCdnJykgLyogcGx1cy9taW51cyAqLwotI2RlZmluZSBBQ1NfQlVMTEVUCU5DVVJTRVNfQUNTKCd+JykgLyogYnVsbGV0ICovCi0vKiBUZWxldHlwZSA1NDEwdjEgc3ltYm9scyBiZWdpbiBoZXJlICovCi0jZGVmaW5lIEFDU19MQVJST1cJTkNVUlNFU19BQ1MoJywnKSAvKiBhcnJvdyBwb2ludGluZyBsZWZ0ICovCi0jZGVmaW5lIEFDU19SQVJST1cJTkNVUlNFU19BQ1MoJysnKSAvKiBhcnJvdyBwb2ludGluZyByaWdodCAqLwotI2RlZmluZSBBQ1NfREFSUk9XCU5DVVJTRVNfQUNTKCcuJykgLyogYXJyb3cgcG9pbnRpbmcgZG93biAqLwotI2RlZmluZSBBQ1NfVUFSUk9XCU5DVVJTRVNfQUNTKCctJykgLyogYXJyb3cgcG9pbnRpbmcgdXAgKi8KLSNkZWZpbmUgQUNTX0JPQVJECU5DVVJTRVNfQUNTKCdoJykgLyogYm9hcmQgb2Ygc3F1YXJlcyAqLwotI2RlZmluZSBBQ1NfTEFOVEVSTglOQ1VSU0VTX0FDUygnaScpIC8qIGxhbnRlcm4gc3ltYm9sICovCi0jZGVmaW5lIEFDU19CTE9DSwlOQ1VSU0VTX0FDUygnMCcpIC8qIHNvbGlkIHNxdWFyZSBibG9jayAqLwotLyoKLSAqIFRoZXNlIGFyZW4ndCBkb2N1bWVudGVkLCBidXQgYSBsb3Qgb2YgU3lzdGVtIFZzIGhhdmUgdGhlbSBhbnl3YXkKLSAqICh5b3UgY2FuIHNwb3QgcHBycnl5enp7e3x8fX0gaW4gYSBsb3Qgb2YgQVQmVCB0ZXJtaW5mbyBzdHJpbmdzKS4KLSAqIFRoZSBBQ1NfbmFtZXMgbWF5IG5vdCBtYXRjaCBBVCZUJ3MsIG91ciBzb3VyY2UgZGlkbid0IGtub3cgdGhlbS4KLSAqLwotI2RlZmluZSBBQ1NfUzMJCU5DVVJTRVNfQUNTKCdwJykgLyogc2NhbiBsaW5lIDMgKi8KLSNkZWZpbmUgQUNTX1M3CQlOQ1VSU0VTX0FDUygncicpIC8qIHNjYW4gbGluZSA3ICovCi0jZGVmaW5lIEFDU19MRVFVQUwJTkNVUlNFU19BQ1MoJ3knKSAvKiBsZXNzL2VxdWFsICovCi0jZGVmaW5lIEFDU19HRVFVQUwJTkNVUlNFU19BQ1MoJ3onKSAvKiBncmVhdGVyL2VxdWFsICovCi0jZGVmaW5lIEFDU19QSQkJTkNVUlNFU19BQ1MoJ3snKSAvKiBQaSAqLwotI2RlZmluZSBBQ1NfTkVRVUFMCU5DVVJTRVNfQUNTKCd8JykgLyogbm90IGVxdWFsICovCi0jZGVmaW5lIEFDU19TVEVSTElORwlOQ1VSU0VTX0FDUygnfScpIC8qIFVLIHBvdW5kIHNpZ24gKi8KLQotLyoKLSAqIExpbmUgZHJhd2luZyBBQ1MgbmFtZXMgYXJlIG9mIHRoZSBmb3JtIEFDU190cmJsLCB3aGVyZSB0IGlzIHRoZSB0b3AsIHIKLSAqIGlzIHRoZSByaWdodCwgYiBpcyB0aGUgYm90dG9tLCBhbmQgbCBpcyB0aGUgbGVmdC4gIHQsIHIsIGIsIGFuZCBsIG1pZ2h0Ci0gKiBiZSBCIChibGFuayksIFMgKHNpbmdsZSksIEQgKGRvdWJsZSksIG9yIFQgKHRoaWNrKS4gIFRoZSBzdWJzZXQgZGVmaW5lZAotICogaGVyZSBvbmx5IHVzZXMgQiBhbmQgUy4KLSAqLwotI2RlZmluZSBBQ1NfQlNTQglBQ1NfVUxDT1JORVIKLSNkZWZpbmUgQUNTX1NTQkIJQUNTX0xMQ09STkVSCi0jZGVmaW5lIEFDU19CQlNTCUFDU19VUkNPUk5FUgotI2RlZmluZSBBQ1NfU0JCUwlBQ1NfTFJDT1JORVIKLSNkZWZpbmUgQUNTX1NCU1MJQUNTX1JURUUKLSNkZWZpbmUgQUNTX1NTU0IJQUNTX0xURUUKLSNkZWZpbmUgQUNTX1NTQlMJQUNTX0JURUUKLSNkZWZpbmUgQUNTX0JTU1MJQUNTX1RURUUKLSNkZWZpbmUgQUNTX0JTQlMJQUNTX0hMSU5FCi0jZGVmaW5lIEFDU19TQlNCCUFDU19WTElORQotI2RlZmluZSBBQ1NfU1NTUwlBQ1NfUExVUwotCi0jdW5kZWYJRVJSCi0jZGVmaW5lIEVSUiAgICAgKC0xKQotCi0jdW5kZWYJT0sKLSNkZWZpbmUgT0sgICAgICAoMCkKLQotLyogdmFsdWVzIGZvciB0aGUgX2ZsYWdzIG1lbWJlciAqLwotI2RlZmluZSBfU1VCV0lOICAgICAgICAgMHgwMQkvKiBpcyB0aGlzIGEgc3ViLXdpbmRvdz8gKi8KLSNkZWZpbmUgX0VORExJTkUgICAgICAgIDB4MDIJLyogaXMgdGhlIHdpbmRvdyBmbHVzaCByaWdodD8gKi8KLSNkZWZpbmUgX0ZVTExXSU4gICAgICAgIDB4MDQJLyogaXMgdGhlIHdpbmRvdyBmdWxsLXNjcmVlbj8gKi8KLSNkZWZpbmUgX1NDUk9MTFdJTiAgICAgIDB4MDgJLyogYm90dG9tIGVkZ2UgaXMgYXQgc2NyZWVuIGJvdHRvbT8gKi8KLSNkZWZpbmUgX0lTUEFECSAgICAgICAgMHgxMAkvKiBpcyB0aGlzIHdpbmRvdyBhIHBhZD8gKi8KLSNkZWZpbmUgX0hBU01PVkVEICAgICAgIDB4MjAJLyogaGFzIGN1cnNvciBtb3ZlZCBzaW5jZSBsYXN0IHJlZnJlc2g/ICovCi0jZGVmaW5lIF9XUkFQUEVEICAgICAgICAweDQwCS8qIGN1cnNvciB3YXMganVzdCB3cmFwcHBlZCAqLwotCi0vKgotICogdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBmaXJzdGNoYXIgYW5kIGxhc3RjaGFyIGZpZWxkcyB0byBtYXJrCi0gKiB1bmNoYW5nZWQgbGluZXMKLSAqLwotI2RlZmluZSBfTk9DSEFOR0UgICAgICAgLTEKLQotLyoKLSAqIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgb2xkaW5kZXggZmllbGQgdG8gbWFyayBsaW5lcyBjcmVhdGVkIGJ5IGluc2VydGlvbnMKLSAqIGFuZCBzY3JvbGxzLgotICovCi0jZGVmaW5lIF9ORVdJTkRFWAktMQotCi10eXBlZGVmIHN0cnVjdCBzY3JlZW4gIFNDUkVFTjsKLXR5cGVkZWYgc3RydWN0IF93aW5fc3QgV0lORE9XOwotCi10eXBlZGVmCWNodHlwZQlhdHRyX3Q7CQkvKiAuLi5tdXN0IGJlIGF0IGxlYXN0IGFzIHdpZGUgYXMgY2h0eXBlICovCi0KLSNpZmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECi0KLSNpZiAwCi0jaWZkZWYgbWJsZW4JCQkvKiBsaWJ1dGY4LmggZGVmaW5lcyBpdCB3L28gdW5kZWZpbmluZyBmaXJzdCAqLwotI3VuZGVmIG1ibGVuCi0jZW5kaWYKLSNpbmNsdWRlIDxsaWJ1dGY4Lmg+Ci0jZW5kaWYKLQotI2lmIDAKLSNpbmNsdWRlIDx3Y2hhci5oPgkJLyogLi4udG8gZ2V0IG1ic3RhdGVfdCwgZXRjLiAqLwotI2VuZGlmCi0KLSNpZiAwCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IHdjaGFyX3Q7Ci0jZW5kaWYKLQotI2lmIDAKLXR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKLSNlbmRpZgotCi0jZGVmaW5lIENDSEFSV19NQVgJNQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBhdHRyX3QJYXR0cjsKLSAgICB3Y2hhcl90CWNoYXJzW0NDSEFSV19NQVhdOwotI2lmIDAKLSN1bmRlZiBOQ1VSU0VTX0VYVF9DT0xPUlMKLSNkZWZpbmUgTkNVUlNFU19FWFRfQ09MT1JTIDIwMDgxMTAyCi0gICAgaW50CQlleHRfY29sb3I7CS8qIGNvbG9yIHBhaXIsIG11c3QgYmUgbW9yZSB0aGFuIDE2LWJpdHMgKi8KLSNlbmRpZgotfQotY2NoYXJfdDsKLQotI2VuZGlmIC8qIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgKi8KLQotI2lmICFOQ1VSU0VTX09QQVFVRQotc3RydWN0IGxkYXQ7Ci0KLXN0cnVjdCBfd2luX3N0Ci17Ci0JTkNVUlNFU19TSVpFX1QgX2N1cnksIF9jdXJ4OyAvKiBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAqLwotCi0JLyogd2luZG93IGxvY2F0aW9uIGFuZCBzaXplICovCi0JTkNVUlNFU19TSVpFX1QgX21heHksIF9tYXh4OyAvKiBtYXhpbXVtcyBvZiB4IGFuZCB5LCBOT1Qgd2luZG93IHNpemUgKi8KLQlOQ1VSU0VTX1NJWkVfVCBfYmVneSwgX2JlZ3g7IC8qIHNjcmVlbiBjb29yZHMgb2YgdXBwZXItbGVmdC1oYW5kIGNvcm5lciAqLwotCi0Jc2hvcnQgICBfZmxhZ3M7CQkvKiB3aW5kb3cgc3RhdGUgZmxhZ3MgKi8KLQotCS8qIGF0dHJpYnV0ZSB0cmFja2luZyAqLwotCWF0dHJfdCAgX2F0dHJzOwkJLyogY3VycmVudCBhdHRyaWJ1dGUgZm9yIG5vbi1zcGFjZSBjaGFyYWN0ZXIgKi8KLQljaHR5cGUgIF9ia2dkOwkJLyogY3VycmVudCBiYWNrZ3JvdW5kIGNoYXIvYXR0cmlidXRlIHBhaXIgKi8KLQotCS8qIG9wdGlvbiB2YWx1ZXMgc2V0IGJ5IHVzZXIgKi8KLQlib29sCV9ub3RpbWVvdXQ7CS8qIG5vIHRpbWUgb3V0IG9uIGZ1bmN0aW9uLWtleSBlbnRyeT8gKi8KLQlib29sCV9jbGVhcjsJCS8qIGNvbnNpZGVyIGFsbCBkYXRhIGluIHRoZSB3aW5kb3cgaW52YWxpZD8gKi8KLQlib29sCV9sZWF2ZW9rOwkvKiBPSyB0byBub3QgcmVzZXQgY3Vyc29yIG9uIGV4aXQ/ICovCi0JYm9vbAlfc2Nyb2xsOwkvKiBPSyB0byBzY3JvbGwgdGhpcyB3aW5kb3c/ICovCi0JYm9vbAlfaWRsb2s7CQkvKiBPSyB0byB1c2UgaW5zZXJ0L2RlbGV0ZSBsaW5lPyAqLwotCWJvb2wJX2lkY29rOwkJLyogT0sgdG8gdXNlIGluc2VydC9kZWxldGUgY2hhcj8gKi8KLQlib29sCV9pbW1lZDsJCS8qIHdpbmRvdyBpbiBpbW1lZCBtb2RlPyAobm90IHlldCB1c2VkKSAqLwotCWJvb2wJX3N5bmM7CQkvKiB3aW5kb3cgaW4gc3luYyBtb2RlPyAqLwotCWJvb2wJX3VzZV9rZXlwYWQ7CS8qIHByb2Nlc3MgZnVuY3Rpb24ga2V5cyBpbnRvIEtFWV8gc3ltYm9scz8gKi8KLQlpbnQJX2RlbGF5OwkJLyogMCA9IG5vZGVsYXksIDwwID0gYmxvY2tpbmcsID4wID0gZGVsYXkgKi8KLQotCXN0cnVjdCBsZGF0ICpfbGluZTsJLyogdGhlIGFjdHVhbCBsaW5lIGRhdGEgKi8KLQotCS8qIGdsb2JhbCBzY3JlZW4gc3RhdGUgKi8KLQlOQ1VSU0VTX1NJWkVfVCBfcmVndG9wOwkvKiB0b3AgbGluZSBvZiBzY3JvbGxpbmcgcmVnaW9uICovCi0JTkNVUlNFU19TSVpFX1QgX3JlZ2JvdHRvbTsgLyogYm90dG9tIGxpbmUgb2Ygc2Nyb2xsaW5nIHJlZ2lvbiAqLwotCi0JLyogdGhlc2UgYXJlIHVzZWQgb25seSBpZiB0aGlzIGlzIGEgc3ViLXdpbmRvdyAqLwotCWludAlfcGFyeDsJCS8qIHggY29vcmRpbmF0ZSBvZiB0aGlzIHdpbmRvdyBpbiBwYXJlbnQgKi8KLQlpbnQJX3Bhcnk7CQkvKiB5IGNvb3JkaW5hdGUgb2YgdGhpcyB3aW5kb3cgaW4gcGFyZW50ICovCi0JV0lORE9XCSpfcGFyZW50OwkvKiBwb2ludGVyIHRvIHBhcmVudCBpZiBhIHN1Yi13aW5kb3cgKi8KLQotCS8qIHRoZXNlIGFyZSB1c2VkIG9ubHkgaWYgdGhpcyBpcyBhIHBhZCAqLwotCXN0cnVjdCBwZGF0Ci0JewotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX3ksICAgICAgX3BhZF94OwotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX3RvcCwgICAgX3BhZF9sZWZ0OwotCSAgICBOQ1VSU0VTX1NJWkVfVCBfcGFkX2JvdHRvbSwgX3BhZF9yaWdodDsKLQl9IF9wYWQ7Ci0KLQlOQ1VSU0VTX1NJWkVfVCBfeW9mZnNldDsgLyogcmVhbCBiZWd5IGlzIF9iZWd5ICsgX3lvZmZzZXQgKi8KLQotI2lmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKLQljY2hhcl90ICBfYmtncm5kOwkvKiBjdXJyZW50IGJhY2tncm91bmQgY2hhci9hdHRyaWJ1dGUgcGFpciAqLwotI2lmIDAKLQlpbnQJX2NvbG9yOwkJLyogY3VycmVudCBjb2xvci1wYWlyIGZvciBub24tc3BhY2UgY2hhcmFjdGVyICovCi0jZW5kaWYKLSNlbmRpZgotfTsKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0vKgotICogVGhpcyBpcyBhbiBleHRlbnNpb24gdG8gc3VwcG9ydCBldmVudHMuLi4KLSAqLwotI2lmIDEKLSNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSNpZiAhZGVmaW5lZChfX0JFT1NfXykgfHwgZGVmaW5lZChfX0hBSUtVX18pCi0gICAvKiBGaXggX25jX3RpbWVkX3dhaXQoKSBvbiBCRU9TLi4uICovCi0jICBkZWZpbmUgTkNVUlNFU19FVkVOVF9WRVJTSU9OCTEKLSNlbmRpZgkvKiAhZGVmaW5lZChfX0JFT1NfXykgKi8KLQotLyoKLSAqIEJpdHMgdG8gc2V0IGluIF9uY19ldmVudC5kYXRhLmZsYWdzCi0gKi8KLSMgIGRlZmluZSBfTkNfRVZFTlRfVElNRU9VVF9NU0VDCTEKLSMgIGRlZmluZSBfTkNfRVZFTlRfRklMRQkJMgotIyAgZGVmaW5lIF9OQ19FVkVOVF9GSUxFX1JFQURBQkxFCTIKLSMgIGlmIDAJCQkJCS8qIE5vdCBzdXBwb3J0ZWQgeWV0Li4uICovCi0jICAgIGRlZmluZSBfTkNfRVZFTlRfRklMRV9XUklUQUJMRQk0Ci0jICAgIGRlZmluZSBfTkNfRVZFTlRfRklMRV9FWENFUFRJT04JOAotIyAgZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBpbnQgdHlwZTsKLSAgICB1bmlvbgotICAgIHsKLQlsb25nIHRpbWVvdXRfbXNlYzsJLyogX05DX0VWRU5UX1RJTUVPVVRfTVNFQyAqLwotCXN0cnVjdAotCXsKLQkgICAgdW5zaWduZWQgaW50IGZsYWdzOwotCSAgICBpbnQgZmQ7Ci0JICAgIHVuc2lnbmVkIGludCByZXN1bHQ7Ci0JfSBmZXY7CQkJCS8qIF9OQ19FVkVOVF9GSUxFICovCi0gICAgfSBkYXRhOwotfSBfbmNfZXZlbnQ7Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgaW50IGNvdW50OwotICAgIGludCByZXN1bHRfZmxhZ3M7CS8qIF9OQ19FVkVOVF9USU1FT1VUX01TRUMgb3IgX05DX0VWRU5UX0ZJTEVfUkVBREFCTEUgKi8KLSAgICBfbmNfZXZlbnQgKmV2ZW50c1sxXTsKLX0gX25jX2V2ZW50bGlzdDsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldGNoX2V2ZW50cyhXSU5ET1cgKiwgX25jX2V2ZW50bGlzdCAqKTsJLyogZXhwZXJpbWVudGFsICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0bnN0cl9ldmVudHMoV0lORE9XICosY2hhciAqLGludCxfbmNfZXZlbnRsaXN0ICopOy8qIGV4cGVyaW1lbnRhbCAqLwotCi0jZW5kaWYgLyogTkNVUlNFU19XR0VUQ0hfRVZFTlRTICovCi0jZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KLQotLyoKLSAqIEdDQyAoYW5kIHNvbWUgb3RoZXIgY29tcGlsZXJzKSBkZWZpbmUgJ19fYXR0cmlidXRlX18nOyB3ZSdyZSB1c2luZyB0aGlzCi0gKiBtYWNybyB0byBhbGVydCB0aGUgY29tcGlsZXIgdG8gZmxhZyBpbmNvbnNpc3RlbmNpZXMgaW4gcHJpbnRmL3NjYW5mLWxpa2UKLSAqIGZ1bmN0aW9uIGNhbGxzLiAgSnVzdCBpbiBjYXNlICdfX2F0dHJpYnV0ZV9fJyBpc24ndCBkZWZpbmVkLCBtYWtlIGEgZHVtbXkuCi0gKiBPbGQgdmVyc2lvbnMgb2YgRysrIGRvIG5vdCBhY2NlcHQgaXQgYW55d2F5LCBhdCBsZWFzdCBub3QgY29uc2lzdGVudGx5IHdpdGgKLSAqIEdDQy4KLSAqLwotI2lmICEoZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0dOVUdfXykgfHwgZGVmaW5lZChfX2F0dHJpYnV0ZV9fKSkKLSNkZWZpbmUgX19hdHRyaWJ1dGVfXyhwKSAvKiBub3RoaW5nICovCi0jZW5kaWYKLQotLyoKLSAqIFdlIGNhbm5vdCBkZWZpbmUgdGhlc2UgaW4gbmN1cnNlc19jZmcuaCwgc2luY2UgdGhleSByZXF1aXJlIHBhcmFtZXRlcnMgdG8gYmUKLSAqIHBhc3NlZCAodGhhdCBpcyBub24tcG9ydGFibGUpLiAgSWYgeW91IGhhcHBlbiB0byBiZSB1c2luZyBnY2Mgd2l0aCB3YXJuaW5ncwotICogZW5hYmxlZCwgZGVmaW5lCi0gKglHQ0NfUFJJTlRGCi0gKglHQ0NfU0NBTkYKLSAqIHRvIGltcHJvdmUgY2hlY2tpbmcgb2YgY2FsbHMgdG8gcHJpbnR3KCksIGV0Yy4KLSAqLwotI2lmbmRlZiBHQ0NfUFJJTlRGTElLRQotI2lmIGRlZmluZWQoR0NDX1BSSU5URikgJiYgIWRlZmluZWQocHJpbnRmKQotI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSkKLSNlbHNlCi0jZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIC8qbm90aGluZyovCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEdDQ19TQ0FORkxJS0UKLSNpZiBkZWZpbmVkKEdDQ19TQ0FORikgJiYgIWRlZmluZWQoc2NhbmYpCi0jZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIF9fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpCi0jZWxzZQotI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICAvKm5vdGhpbmcqLwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZglHQ0NfTk9SRVRVUk4KLSNkZWZpbmUJR0NDX05PUkVUVVJOIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi0jaWZuZGVmCUdDQ19VTlVTRUQKLSNkZWZpbmUJR0NDX1VOVVNFRCAvKiBub3RoaW5nICovCi0jZW5kaWYKLQotLyoKLSAqIEZ1bmN0aW9uIHByb3RvdHlwZXMuICBUaGlzIGlzIHRoZSBjb21wbGV0ZSBYL09wZW4gQ3Vyc2VzIGxpc3Qgb2YgcmVxdWlyZWQKLSAqIGZ1bmN0aW9ucy4gIFRob3NlIG1hcmtlZCBgZ2VuZXJhdGVkJyB3aWxsIGhhdmUgc291cmNlcyBnZW5lcmF0ZWQgZnJvbSB0aGUKLSAqIG1hY3JvIGRlZmluaXRpb25zIGxhdGVyIGluIHRoaXMgZmlsZSwgaW4gb3JkZXIgdG8gc2F0aXNmeSBYUEc0LjIKLSAqIHJlcXVpcmVtZW50cy4KLSAqLwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRjaCAoY29uc3QgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNobnN0ciAoY29uc3QgY2h0eXBlICosIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNoc3RyIChjb25zdCBjaHR5cGUgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRuc3RyIChjb25zdCBjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhZGRzdHIgKGNvbnN0IGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb2ZmIChOQ1VSU0VTX0FUVFJfVCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb24gKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJzZXQgKE5DVVJTRVNfQVRUUl9UKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfZ2V0IChhdHRyX3QgKiwgc2hvcnQgKiwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX29mZiAoYXR0cl90LCB2b2lkICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9vbiAoYXR0cl90LCB2b2lkICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9zZXQgKGF0dHJfdCwgc2hvcnQsIHZvaWQgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJhdWRyYXRlICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJlZXAgICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGJrZ2QgKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIGJrZ2RzZXQgKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYm9yZGVyIChjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBib3ggKFdJTkRPVyAqLCBjaHR5cGUsIGNodHlwZSk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBjYW5fY2hhbmdlX2NvbG9yICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2JyZWFrICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNoZ2F0IChpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xlYXIgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNsZWFyb2sgKFdJTkRPVyAqLGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjbHJ0b2JvdCAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgY2xydG9lb2wgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX2NvbnRlbnQgKHNob3J0LHNob3J0KixzaG9ydCosc2hvcnQqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX3NldCAoc2hvcnQsdm9pZCopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgQ09MT1JfUEFJUiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBjb3B5d2luIChjb25zdCBXSU5ET1cqLFdJTkRPVyosaW50LGludCxpbnQsaW50LGludCxpbnQsaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGN1cnNfc2V0IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVmX3Byb2dfbW9kZSAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRlZl9zaGVsbF9tb2RlICh2b2lkKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsYXlfb3V0cHV0IChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsY2ggKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBkZWxzY3JlZW4gKFNDUkVFTiAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZGVsd2luIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWxldGVsbiAodm9pZCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBkZXJ3aW4gKFdJTkRPVyAqLGludCxpbnQsaW50LGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkb3VwZGF0ZSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIGR1cHdpbiAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlY2hvICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlY2hvY2hhciAoY29uc3QgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGVyYXNlICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBlbmR3aW4gKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIpIGVyYXNlY2hhciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgZmlsdGVyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGZsYXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGZsdXNoaW5wICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIGdldGJrZ2QgKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGdldGNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRuc3RyIChjaGFyICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRzdHIgKGNoYXIgKik7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBnZXR3aW4gKEZJTEUgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhhbGZkZWxheSAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBoYXNfY29sb3JzICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBoYXNfaWMgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGhhc19pbCAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBobGluZSAoY2h0eXBlLCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBpZGNvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpZGxvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgaW1tZWRvayAoV0lORE9XICosIGJvb2wpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSBpbmNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbmNobnN0ciAoY2h0eXBlICosIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBpbmNoc3RyIChjaHR5cGUgKik7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBpbml0c2NyICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluaXRfY29sb3IgKHNob3J0LHNob3J0LHNob3J0LHNob3J0KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluaXRfcGFpciAoc2hvcnQsc2hvcnQsc2hvcnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGlubnN0ciAoY2hhciAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zY2ggKGNodHlwZSk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zZGVsbG4gKGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgaW5zZXJ0bG4gKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc25zdHIgKGNvbnN0IGNoYXIgKiwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc3N0ciAoY29uc3QgY2hhciAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGluc3RyIChjaGFyICopOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGludHJmbHVzaCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc2VuZHdpbiAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbGluZXRvdWNoZWQgKFdJTkRPVyAqLGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3dpbnRvdWNoZWQgKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBrZXluYW1lIChpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleXBhZCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyKSBraWxsY2hhciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBsZWF2ZW9rIChXSU5ET1cgKixib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgbG9uZ25hbWUgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbWV0YSAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG1vdmUgKGludCwgaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoIChpbnQsIGludCwgY29uc3QgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRjaG5zdHIgKGludCwgaW50LCBjb25zdCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoc3RyIChpbnQsIGludCwgY29uc3QgY2h0eXBlICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkbnN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZHN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12Y2hnYXQgKGludCwgaW50LCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZjdXIgKGludCxpbnQsaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12ZGVsY2ggKGludCwgaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmRlcndpbiAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmdldGNoIChpbnQsIGludCk7CQkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZnZXRuc3RyIChpbnQsIGludCwgY2hhciAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmdldHN0ciAoaW50LCBpbnQsIGNoYXIgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmhsaW5lIChpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSBtdmluY2ggKGludCwgaW50KTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5jaG5zdHIgKGludCwgaW50LCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluY2hzdHIgKGludCwgaW50LCBjaHR5cGUgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5uc3RyIChpbnQsIGludCwgY2hhciAqLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc2NoIChpbnQsIGludCwgY2h0eXBlKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zbnN0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc3N0ciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zdHIgKGludCwgaW50LCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZwcmludHcgKGludCxpbnQsIGNvbnN0IGNoYXIgKiwuLi4pCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSgzLDQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZzY2FudyAoaW50LGludCwgTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDMsNCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdnZsaW5lIChpbnQsIGludCwgY2h0eXBlLCBpbnQpOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRjaCAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaHR5cGUpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNobnN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaHR5cGUgKiwgaW50KTsvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNoc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNodHlwZSAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRuc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRzdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY29uc3QgY2hhciAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndjaGdhdCAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7LyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndkZWxjaCAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0Y2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldG5zdHIgKFdJTkRPVyAqLCBpbnQsIGludCwgY2hhciAqLCBpbnQpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldHN0ciAoV0lORE9XICosIGludCwgaW50LCBjaGFyICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2hsaW5lIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbiAoV0lORE9XICosaW50LGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIG12d2luY2ggKFdJTkRPVyAqLCBpbnQsIGludCk7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbmNobnN0ciAoV0lORE9XICosIGludCwgaW50LCBjaHR5cGUgKiwgaW50KTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbmNoc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5uc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKiwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zY2ggKFdJTkRPVyAqLCBpbnQsIGludCwgY2h0eXBlKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zbnN0ciAoV0lORE9XICosIGludCwgaW50LCBjb25zdCBjaGFyICosIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d2luc3RyIChXSU5ET1cgKiwgaW50LCBpbnQsIGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG12d3ByaW50dyAoV0lORE9XKixpbnQsaW50LCBjb25zdCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSg0LDUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3c2NhbncgKFdJTkRPVyAqLGludCxpbnQsIE5DVVJTRVNfQ09OU1QgY2hhciAqLC4uLikJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1NDQU5GTElLRSg0LDUpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbXZ3dmxpbmUgKFdJTkRPVyAqLGludCwgaW50LCBjaHR5cGUsIGludCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbmFwbXMgKGludCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKSBuZXdwYWQgKGludCxpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKSBuZXd0ZXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKixGSUxFICosRklMRSAqKTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgbmV3d2luIChpbnQsaW50LGludCxpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBubCAodm9pZCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9jYnJlYWsgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgbm9kZWxheSAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vZWNobyAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBub25sICh2b2lkKTsJCQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgbm9xaWZsdXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vcmF3ICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG5vdGltZW91dCAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG92ZXJsYXkgKGNvbnN0IFdJTkRPVyosV0lORE9XICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIG92ZXJ3cml0ZSAoY29uc3QgV0lORE9XKixXSU5ET1cgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcGFpcl9jb250ZW50IChzaG9ydCxzaG9ydCosc2hvcnQqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBQQUlSX05VTUJFUiAoaW50KTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwZWNob2NoYXIgKFdJTkRPVyAqLCBjb25zdCBjaHR5cGUpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHBub3V0cmVmcmVzaCAoV0lORE9XKixpbnQsaW50LGludCxpbnQsaW50LGludCk7LyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHByZWZyZXNoIChXSU5ET1cgKixpbnQsaW50LGludCxpbnQsaW50LGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBwcmludHcgKGNvbnN0IGNoYXIgKiwuLi4pCQkJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1BSSU5URkxJS0UoMSwyKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHB1dHdpbiAoV0lORE9XICosIEZJTEUgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBxaWZsdXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJhdyAodm9pZCk7CQkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVkcmF3d2luIChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZWZyZXNoICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByZXNldHR5ICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2V0X3Byb2dfbW9kZSAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2V0X3NoZWxsX21vZGUgKHZvaWQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSByaXBvZmZsaW5lIChpbnQsIGludCAoKikoV0lORE9XICosIGludCkpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2F2ZXR0eSAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY2FudyAoTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkJLyogaW1wbGVtZW50ZWQgKi8KLQkJR0NDX1NDQU5GTElLRSgxLDIpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2NyX2R1bXAgKGNvbnN0IGNoYXIgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcl9pbml0IChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JsIChpbnQpOwkJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JvbGwgKFdJTkRPVyAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3JvbGxvayAoV0lORE9XICosYm9vbCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNjcl9yZXN0b3JlIChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzY3Jfc2V0IChjb25zdCBjaGFyICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzZXRzY3JyZWcgKGludCxpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikgc2V0X3Rlcm0gKFNDUkVFTiAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2F0dHJvZmYgKGNvbnN0IGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyX29mZiAoY29uc3QgYXR0cl90LCB2b2lkICopOwkJLyogZ2VuZXJhdGVkOldJREVDICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cm9uIChjb25zdCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9vbiAoYXR0cl90LHZvaWQqKTsJCQkvKiBnZW5lcmF0ZWQ6V0lERUMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19hdHRyc2V0IChjb25zdCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYXR0cl90KSBzbGtfYXR0ciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9zZXQgKGNvbnN0IGF0dHJfdCxzaG9ydCx2b2lkKik7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfY2xlYXIgKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2NvbG9yIChzaG9ydCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfaW5pdCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHNsa19sYWJlbCAoaW50KTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19ub3V0cmVmcmVzaCAodm9pZCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19yZWZyZXNoICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19yZXN0b3JlICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNsa19zZXQgKGludCxjb25zdCBjaGFyICosaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfdG91Y2ggKHZvaWQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgc3RhbmRvdXQgKHZvaWQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHN0YW5kZW5kICh2b2lkKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzdGFydF9jb2xvciAodm9pZCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHN1YnBhZCAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHN1YndpbiAoV0lORE9XICosIGludCwgaW50LCBpbnQsIGludCk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzeW5jb2sgKFdJTkRPVyAqLCBib29sKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNodHlwZSkgdGVybWF0dHJzICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRlcm1uYW1lICh2b2lkKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB0aW1lb3V0IChpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRvdWNobGluZSAoV0lORE9XICosIGludCwgaW50KTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdG91Y2h3aW4gKFdJTkRPVyAqKTsJCQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0eXBlYWhlYWQgKGludCk7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1bmdldGNoIChpbnQpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdW50b3VjaHdpbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHVzZV9lbnYgKGJvb2wpOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdmlkYXR0ciAoY2h0eXBlKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZpZHB1dHMgKGNodHlwZSwgaW50ICgqKShpbnQpKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB2bGluZSAoY2h0eXBlLCBpbnQpOwkJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3cHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdndfcHJpbnR3IChXSU5ET1cgKiwgY29uc3QgY2hhciAqLHZhX2xpc3QpOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3c2NhbncgKFdJTkRPVyAqLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKix2YV9saXN0KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHZ3X3NjYW53IChXSU5ET1cgKiwgTkNVUlNFU19DT05TVCBjaGFyICosdmFfbGlzdCk7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZGNoIChXSU5ET1cgKiwgY29uc3QgY2h0eXBlKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YWRkY2huc3RyIChXSU5ET1cgKixjb25zdCBjaHR5cGUgKixpbnQpOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2FkZGNoc3RyIChXSU5ET1cgKixjb25zdCBjaHR5cGUgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRuc3RyIChXSU5ET1cgKixjb25zdCBjaGFyICosaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRzdHIgKFdJTkRPVyAqLGNvbnN0IGNoYXIgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyb24gKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJvZmYgKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJzZXQgKFdJTkRPVyAqLCBpbnQpOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfZ2V0IChXSU5ET1cgKiwgYXR0cl90ICosIHNob3J0ICosIHZvaWQgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfb24gKFdJTkRPVyAqLCBhdHRyX3QsIHZvaWQgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfb2ZmIChXSU5ET1cgKiwgYXR0cl90LCB2b2lkICopOwkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfc2V0IChXSU5ET1cgKiwgYXR0cl90LCBzaG9ydCwgdm9pZCAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3YmtnZCAoV0lORE9XICosIGNodHlwZSk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3YmtnZHNldCAoV0lORE9XICosY2h0eXBlKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2JvcmRlciAoV0lORE9XICosY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSxjaHR5cGUsY2h0eXBlLGNodHlwZSk7CS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y2hnYXQgKFdJTkRPVyAqLCBpbnQsIGF0dHJfdCwgc2hvcnQsIGNvbnN0IHZvaWQgKik7LyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjbGVhciAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2NscnRvYm90IChXSU5ET1cgKik7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdjbHJ0b2VvbCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Y29sb3Jfc2V0IChXSU5ET1cqLHNob3J0LHZvaWQqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgd2N1cnN5bmN1cCAoV0lORE9XICopOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZGVsY2ggKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdkZWxldGVsbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2VjaG9jaGFyIChXSU5ET1cgKiwgY29uc3QgY2h0eXBlKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3ZXJhc2UgKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRjaCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2dldG5zdHIgKFdJTkRPVyAqLGNoYXIgKixpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRzdHIgKFdJTkRPVyAqLCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2hsaW5lIChXSU5ET1cgKiwgY2h0eXBlLCBpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpIHdpbmNoIChXSU5ET1cgKik7CQkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5jaG5zdHIgKFdJTkRPVyAqLCBjaHR5cGUgKiwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5jaHN0ciAoV0lORE9XICosIGNodHlwZSAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2lubnN0ciAoV0lORE9XICosIGNoYXIgKiwgaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zY2ggKFdJTkRPVyAqLCBjaHR5cGUpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zZGVsbG4gKFdJTkRPVyAqLGludCk7CQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNlcnRsbiAoV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd2luc25zdHIgKFdJTkRPVyAqLCBjb25zdCBjaGFyICosaW50KTsJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdpbnNzdHIgKFdJTkRPVyAqLCBjb25zdCBjaGFyICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3aW5zdHIgKFdJTkRPVyAqLCBjaGFyICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd21vdmUgKFdJTkRPVyAqLGludCxpbnQpOwkJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3bm91dHJlZnJlc2ggKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3ByaW50dyAoV0lORE9XICosIGNvbnN0IGNoYXIgKiwuLi4pCQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfUFJJTlRGTElLRSgyLDMpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3JlZHJhd2xuIChXSU5ET1cgKixpbnQsaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3cmVmcmVzaCAoV0lORE9XICopOwkJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3NjYW53IChXSU5ET1cgKiwgTkNVUlNFU19DT05TVCBjaGFyICosLi4uKQkvKiBpbXBsZW1lbnRlZCAqLwotCQlHQ0NfU0NBTkZMSUtFKDIsMyk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c2NybCAoV0lORE9XICosaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3NldHNjcnJlZyAoV0lORE9XICosaW50LGludCk7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3N0YW5kb3V0IChXSU5ET1cgKik7CQkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3c3RhbmRlbmQgKFdJTkRPVyAqKTsJCQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3c3luY2Rvd24gKFdJTkRPVyAqKTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIHdzeW5jdXAgKFdJTkRPVyAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB3dGltZW91dCAoV0lORE9XICosaW50KTsJCQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgd3RvdWNobG4gKFdJTkRPVyAqLGludCxpbnQsaW50KTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3dmxpbmUgKFdJTkRPVyAqLGNodHlwZSxpbnQpOwkJLyogaW1wbGVtZW50ZWQgKi8KLQotLyoKLSAqIFRoZXNlIGFyZSBhbHNvIGRlY2xhcmVkIGluIDx0ZXJtLmg+OgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0aWdldGZsYWcgKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsJCS8qIGltcGxlbWVudGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0aWdldG51bSAoTkNVUlNFU19DT05TVCBjaGFyICopOwkJLyogaW1wbGVtZW50ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRpZ2V0c3RyIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7CQkvKiBpbXBsZW1lbnRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcHV0cCAoY29uc3QgY2hhciAqKTsJCQkJLyogaW1wbGVtZW50ZWQgKi8KLQotI2lmIE5DVVJTRVNfVFBBUk1fVkFSQVJHUwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLCAuLi4pOwkvKiBzcGVjaWFsICovCi0jZWxzZQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLCBsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyk7CS8qIHNwZWNpYWwgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRwYXJtX3ZhcmFyZ3MgKE5DVVJTRVNfQ09OU1QgY2hhciAqLCAuLi4pOwkvKiBzcGVjaWFsICovCi0jZW5kaWYKLQotLyoKLSAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGluIFgvT3BlbiwgYnV0IHdlIHVzZSB0aGVtIGluIG1hY3JvIGRlZmluaXRpb25zOgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBnZXRhdHRycyAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y3VyeCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y3VyeSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0YmVneCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0YmVneSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bWF4eCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bWF4eSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0cGFyeCAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0cGFyeSAoY29uc3QgV0lORE9XICopOwkJCS8qIGdlbmVyYXRlZCAqLwotCi0vKgotICogdmlkX2F0dHIoKSB3YXMgaW1wbGVtZW50ZWQgb3JpZ2luYWxseSBiYXNlZCBvbiBhIGRyYWZ0IG9mIFgvT3BlbiBjdXJzZXMuCi0gKi8KLSNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotI2RlZmluZSB2aWRfYXR0cihhLHBhaXIsb3B0cykgdmlkYXR0cihhKQotI2VuZGlmCi0KLS8qCi0gKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGV4dGVuc2lvbnMgLSBub3QgaW4gWC9PcGVuIEN1cnNlcy4KLSAqLwotI2lmIDEKLSN1bmRlZiAgTkNVUlNFU19FWFRfRlVOQ1MKLSNkZWZpbmUgTkNVUlNFU19FWFRfRlVOQ1MgMjAwODExMDIKLXR5cGVkZWYgaW50ICgqTkNVUlNFU19XSU5ET1dfQ0IpKFdJTkRPVyAqLCB2b2lkICopOwotdHlwZWRlZiBpbnQgKCpOQ1VSU0VTX1NDUkVFTl9DQikoU0NSRUVOICosIHZvaWQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfdGVybV9yZXNpemVkIChpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBrZXlib3VuZCAoaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikgY3Vyc2VzX3ZlcnNpb24gKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgYXNzdW1lX2RlZmF1bHRfY29sb3JzIChpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBkZWZpbmVfa2V5IChjb25zdCBjaGFyICosIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBrZXlfZGVmaW5lZCAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGtleW9rIChpbnQsIGJvb2wpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcmVzaXplX3Rlcm0gKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc2l6ZXRlcm0gKGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldF9lc2NkZWxheSAoaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHNldF90YWJzaXplIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdXNlX2RlZmF1bHRfY29sb3JzICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV9leHRlbmRlZF9uYW1lcyAoYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB1c2VfbGVnYWN5X2NvZGluZyAoaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV9zY3JlZW4gKFNDUkVFTiAqLCBOQ1VSU0VTX1NDUkVFTl9DQiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVzZV93aW5kb3cgKFdJTkRPVyAqLCBOQ1VSU0VTX1dJTkRPV19DQiwgdm9pZCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHdyZXNpemUgKFdJTkRPVyAqLCBpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgbm9maWx0ZXIodm9pZCk7Ci0KLS8qCi0gKiBUaGVzZSBleHRlbnNpb25zIHByb3ZpZGUgYWNjZXNzIHRvIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgV0lORE9XIGV2ZW4KLSAqIHdoZW4gTkNVUlNFU19PUEFRVUUgaXMgc2V0OgotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfY2xlYXJlZCAoY29uc3QgV0lORE9XICopOwkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19pZGNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqKTsJCS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX2ltbWVkb2sgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfa2V5cGFkIChjb25zdCBXSU5ET1cgKik7CQkvKiBnZW5lcmF0ZWQgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBpc19sZWF2ZW9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX25vZGVsYXkgKGNvbnN0IFdJTkRPVyAqKTsJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgaXNfbm90aW1lb3V0IChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3Njcm9sbG9rIChjb25zdCBXSU5ET1cgKik7CS8qIGdlbmVyYXRlZCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIGlzX3N5bmNvayAoY29uc3QgV0lORE9XICopOwkJLyogZ2VuZXJhdGVkICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0c2NycmVnIChjb25zdCBXSU5ET1cgKiwgaW50ICosIGludCAqKTsgLyogZ2VuZXJhdGVkICovCi0KLSNlbHNlCi0jZGVmaW5lIGN1cnNlc192ZXJzaW9uKCkgTkNVUlNFU19WRVJTSU9OCi0jZW5kaWYKLQotLyogYXR0cmlidXRlcyAqLwotCi0jZGVmaW5lIE5DVVJTRVNfQVRUUl9TSElGVCAgICAgICA4Ci0jZGVmaW5lIE5DVVJTRVNfQklUUyhtYXNrLHNoaWZ0KSAoKG1hc2spIDw8ICgoc2hpZnQpICsgTkNVUlNFU19BVFRSX1NISUZUKSkKLQotI2RlZmluZSBBX05PUk1BTAkoMVVMIC0gMVVMKQotI2RlZmluZSBBX0FUVFJJQlVURVMJTkNVUlNFU19CSVRTKH4oMVVMIC0gMVVMKSwwKQotI2RlZmluZSBBX0NIQVJURVhUCShOQ1VSU0VTX0JJVFMoMVVMLDApIC0gMVVMKQotI2RlZmluZSBBX0NPTE9SCQlOQ1VSU0VTX0JJVFMoKCgxVUwpIDw8IDgpIC0gMVVMLDApCi0jZGVmaW5lIEFfU1RBTkRPVVQJTkNVUlNFU19CSVRTKDFVTCw4KQotI2RlZmluZSBBX1VOREVSTElORQlOQ1VSU0VTX0JJVFMoMVVMLDkpCi0jZGVmaW5lIEFfUkVWRVJTRQlOQ1VSU0VTX0JJVFMoMVVMLDEwKQotI2RlZmluZSBBX0JMSU5LCQlOQ1VSU0VTX0JJVFMoMVVMLDExKQotI2RlZmluZSBBX0RJTQkJTkNVUlNFU19CSVRTKDFVTCwxMikKLSNkZWZpbmUgQV9CT0xECQlOQ1VSU0VTX0JJVFMoMVVMLDEzKQotI2RlZmluZSBBX0FMVENIQVJTRVQJTkNVUlNFU19CSVRTKDFVTCwxNCkKLSNkZWZpbmUgQV9JTlZJUwkJTkNVUlNFU19CSVRTKDFVTCwxNSkKLSNkZWZpbmUgQV9QUk9URUNUCU5DVVJTRVNfQklUUygxVUwsMTYpCi0jZGVmaW5lIEFfSE9SSVpPTlRBTAlOQ1VSU0VTX0JJVFMoMVVMLDE3KQotI2RlZmluZSBBX0xFRlQJCU5DVVJTRVNfQklUUygxVUwsMTgpCi0jZGVmaW5lIEFfTE9XCQlOQ1VSU0VTX0JJVFMoMVVMLDE5KQotI2RlZmluZSBBX1JJR0hUCQlOQ1VSU0VTX0JJVFMoMVVMLDIwKQotI2RlZmluZSBBX1RPUAkJTkNVUlNFU19CSVRTKDFVTCwyMSkKLSNkZWZpbmUgQV9WRVJUSUNBTAlOQ1VSU0VTX0JJVFMoMVVMLDIyKQotCi0vKgotICogTW9zdCBvZiB0aGUgcHNldWRvIGZ1bmN0aW9ucyBhcmUgbWFjcm9zIHRoYXQgZWl0aGVyIHByb3ZpZGUgY29tcGF0aWJpbGl0eQotICogd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBjdXJzZXMsIG9yIHByb3ZpZGUgaW5saW5lIGZ1bmN0aW9uYWxpdHkgdG8gaW1wcm92ZQotICogcGVyZm9ybWFuY2UuCi0gKi8KLQotLyoKLSAqIFRoZXNlIHBzZXVkbyBmdW5jdGlvbnMgYXJlIGFsd2F5cyBpbXBsZW1lbnRlZCBhcyBtYWNyb3M6Ci0gKi8KLQotI2RlZmluZSBnZXR5eCh3aW4seSx4KSAgIAkoeSA9IGdldGN1cnkod2luKSwgeCA9IGdldGN1cngod2luKSkKLSNkZWZpbmUgZ2V0YmVneXgod2luLHkseCkJKHkgPSBnZXRiZWd5KHdpbiksIHggPSBnZXRiZWd4KHdpbikpCi0jZGVmaW5lIGdldG1heHl4KHdpbix5LHgpCSh5ID0gZ2V0bWF4eSh3aW4pLCB4ID0gZ2V0bWF4eCh3aW4pKQotI2RlZmluZSBnZXRwYXJ5eCh3aW4seSx4KQkoeSA9IGdldHBhcnkod2luKSwgeCA9IGdldHBhcngod2luKSkKLQotI2RlZmluZSBnZXRzeXgoeSx4KSBkbyB7IGlmIChuZXdzY3IpIHsgXAotCQkJICAgICBpZiAoaXNfbGVhdmVvayhuZXdzY3IpKSBcCi0JCQkJKHkpID0gKHgpID0gLTE7IFwKLQkJCSAgICAgZWxzZSBcCi0JCQkJIGdldHl4KG5ld3NjciwoeSksICh4KSk7IFwKLQkJCX0gXAotCQkgICAgfSB3aGlsZSgwKQotCi0jZGVmaW5lIHNldHN5eCh5LHgpIGRvIHsgaWYgKG5ld3NjcikgeyBcCi0JCQkgICAgaWYgKCh5KSA9PSAtMSAmJiAoeCkgPT0gLTEpIFwKLQkJCQlsZWF2ZW9rKG5ld3NjciwgVFJVRSk7IFwKLQkJCSAgICBlbHNlIHsgXAotCQkJCWxlYXZlb2sobmV3c2NyLCBGQUxTRSk7IFwKLQkJCQl3bW92ZShuZXdzY3IsICh5KSwgKHgpKTsgXAotCQkJICAgIH0gXAotCQkJfSBcCi0JCSAgICB9IHdoaWxlKDApCi0KLSNpZm5kZWYgTkNVUlNFU19OT01BQ1JPUwotCi0vKgotICogVGhlc2UgbWlzY2VsbGFuZW91cyBwc2V1ZG8gZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eToKLSAqLwotCi0jZGVmaW5lIHdnZXRzdHIodywgcykJCXdnZXRuc3RyKHcsIHMsIC0xKQotI2RlZmluZSBnZXRuc3RyKHMsIG4pCQl3Z2V0bnN0cihzdGRzY3IsIHMsIG4pCi0KLSNkZWZpbmUgc2V0dGVybSh0ZXJtKQkJc2V0dXB0ZXJtKHRlcm0sIDEsIChpbnQgKikwKQotCi0jZGVmaW5lIGZpeHRlcm0oKQkJcmVzZXRfcHJvZ19tb2RlKCkKLSNkZWZpbmUgcmVzZXR0ZXJtKCkJCXJlc2V0X3NoZWxsX21vZGUoKQotI2RlZmluZSBzYXZldGVybSgpCQlkZWZfcHJvZ19tb2RlKCkKLSNkZWZpbmUgY3Jtb2RlKCkJCWNicmVhaygpCi0jZGVmaW5lIG5vY3Jtb2RlKCkJCW5vY2JyZWFrKCkKLSNkZWZpbmUgZ2V0dG1vZGUoKQotCi0vKiBJdCBzZWVtcyBvbGRlciBTWVNWIGN1cnNlcyB2ZXJzaW9ucyBkZWZpbmUgdGhlc2UgKi8KLSNpZiAhTkNVUlNFU19PUEFRVUUKLSNkZWZpbmUgZ2V0YXR0cnMod2luKQkJKCh3aW4pID8gKHdpbiktPl9hdHRycyA6IEFfTk9STUFMKQotI2RlZmluZSBnZXRjdXJ4KHdpbikJCSgod2luKSA/ICh3aW4pLT5fY3VyeCA6IEVSUikKLSNkZWZpbmUgZ2V0Y3VyeSh3aW4pCQkoKHdpbikgPyAod2luKS0+X2N1cnkgOiBFUlIpCi0jZGVmaW5lIGdldGJlZ3god2luKQkJKCh3aW4pID8gKHdpbiktPl9iZWd4IDogRVJSKQotI2RlZmluZSBnZXRiZWd5KHdpbikJCSgod2luKSA/ICh3aW4pLT5fYmVneSA6IEVSUikKLSNkZWZpbmUgZ2V0bWF4eCh3aW4pCQkoKHdpbikgPyAoKHdpbiktPl9tYXh4ICsgMSkgOiBFUlIpCi0jZGVmaW5lIGdldG1heHkod2luKQkJKCh3aW4pID8gKCh3aW4pLT5fbWF4eSArIDEpIDogRVJSKQotI2RlZmluZSBnZXRwYXJ4KHdpbikJCSgod2luKSA/ICh3aW4pLT5fcGFyeCA6IEVSUikKLSNkZWZpbmUgZ2V0cGFyeSh3aW4pCQkoKHdpbikgPyAod2luKS0+X3BhcnkgOiBFUlIpCi0jZW5kaWYgLyogTkNVUlNFU19PUEFRVUUgKi8KLQotI2RlZmluZSB3c3RhbmRvdXQod2luKSAgICAgIAkod2F0dHJzZXQod2luLEFfU1RBTkRPVVQpKQotI2RlZmluZSB3c3RhbmRlbmQod2luKSAgICAgIAkod2F0dHJzZXQod2luLEFfTk9STUFMKSkKLQotI2RlZmluZSB3YXR0cm9uKHdpbixhdCkJCXdhdHRyX29uKHdpbiwgTkNVUlNFU19DQVNUKGF0dHJfdCwgYXQpLCBOVUxMKQotI2RlZmluZSB3YXR0cm9mZih3aW4sYXQpCXdhdHRyX29mZih3aW4sIE5DVVJTRVNfQ0FTVChhdHRyX3QsIGF0KSwgTlVMTCkKLQotI2lmICFOQ1VSU0VTX09QQVFVRQotI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCkgJiYgMAotI2RlZmluZSB3YXR0cnNldCh3aW4sYXQpCSgod2luKS0+X2NvbG9yID0gUEFJUl9OVU1CRVIoYXQpLCBcCi0JCQkJICh3aW4pLT5fYXR0cnMgPSAoYXQpKQotI2Vsc2UKLSNkZWZpbmUgd2F0dHJzZXQod2luLGF0KQkoKHdpbiktPl9hdHRycyA9IChhdCkpCi0jZW5kaWYKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHNjcm9sbCh3aW4pCQl3c2NybCh3aW4sMSkKLQotI2RlZmluZSB0b3VjaHdpbih3aW4pCQl3dG91Y2hsbigod2luKSwgMCwgZ2V0bWF4eSh3aW4pLCAxKQotI2RlZmluZSB0b3VjaGxpbmUod2luLCBzLCBjKQl3dG91Y2hsbigod2luKSwgcywgYywgMSkKLSNkZWZpbmUgdW50b3VjaHdpbih3aW4pCQl3dG91Y2hsbigod2luKSwgMCwgZ2V0bWF4eSh3aW4pLCAwKQotCi0jZGVmaW5lIGJveCh3aW4sIHYsIGgpCQl3Ym9yZGVyKHdpbiwgdiwgdiwgaCwgaCwgMCwgMCwgMCwgMCkKLSNkZWZpbmUgYm9yZGVyKGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikJd2JvcmRlcihzdGRzY3IsIGxzLCBycywgdHMsIGJzLCB0bCwgdHIsIGJsLCBicikKLSNkZWZpbmUgaGxpbmUoY2gsIG4pCQl3aGxpbmUoc3Rkc2NyLCBjaCwgbikKLSNkZWZpbmUgdmxpbmUoY2gsIG4pCQl3dmxpbmUoc3Rkc2NyLCBjaCwgbikKLQotI2RlZmluZSB3aW5zdHIodywgcykJCXdpbm5zdHIodywgcywgLTEpCi0jZGVmaW5lIHdpbmNoc3RyKHcsIHMpCQl3aW5jaG5zdHIodywgcywgLTEpCi0jZGVmaW5lIHdpbnNzdHIodywgcykJCXdpbnNuc3RyKHcsIHMsIC0xKQotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIHJlZHJhd3dpbih3aW4pCQl3cmVkcmF3bG4od2luLCAwLCAod2luKS0+X21heHkrMSkKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHdhZGRzdHIod2luLHN0cikJd2FkZG5zdHIod2luLHN0ciwtMSkKLSNkZWZpbmUgd2FkZGNoc3RyKHdpbixzdHIpCXdhZGRjaG5zdHIod2luLHN0ciwtMSkKLQotLyoKLSAqIFRoZXNlIGFwcGx5IHRvIHRoZSBmaXJzdCAyNTYgY29sb3IgcGFpcnMuCi0gKi8KLSNkZWZpbmUgQ09MT1JfUEFJUihuKQlOQ1VSU0VTX0JJVFMobiwgMCkKLSNkZWZpbmUgUEFJUl9OVU1CRVIoYSkJKE5DVVJTRVNfQ0FTVChpbnQsKCgoYSkgJiBBX0NPTE9SKSA+PiBOQ1VSU0VTX0FUVFJfU0hJRlQpKSkKLQotLyoKLSAqIHBzZXVkbyBmdW5jdGlvbnMgZm9yIHN0YW5kYXJkIHNjcmVlbgotICovCi0KLSNkZWZpbmUgYWRkY2goY2gpCQl3YWRkY2goc3Rkc2NyLGNoKQotI2RlZmluZSBhZGRjaG5zdHIoc3RyLG4pCXdhZGRjaG5zdHIoc3Rkc2NyLHN0cixuKQotI2RlZmluZSBhZGRjaHN0cihzdHIpCQl3YWRkY2hzdHIoc3Rkc2NyLHN0cikKLSNkZWZpbmUgYWRkbnN0cihzdHIsbikJCXdhZGRuc3RyKHN0ZHNjcixzdHIsbikKLSNkZWZpbmUgYWRkc3RyKHN0cikJCXdhZGRuc3RyKHN0ZHNjcixzdHIsLTEpCi0jZGVmaW5lIGF0dHJvZmYoYXQpCQl3YXR0cm9mZihzdGRzY3IsYXQpCi0jZGVmaW5lIGF0dHJvbihhdCkJCXdhdHRyb24oc3Rkc2NyLGF0KQotI2RlZmluZSBhdHRyc2V0KGF0KQkJd2F0dHJzZXQoc3Rkc2NyLGF0KQotI2RlZmluZSBhdHRyX2dldChhcCxjcCxvKQl3YXR0cl9nZXQoc3Rkc2NyLGFwLGNwLG8pCi0jZGVmaW5lIGF0dHJfb2ZmKGEsbykJCXdhdHRyX29mZihzdGRzY3IsYSxvKQotI2RlZmluZSBhdHRyX29uKGEsbykJCXdhdHRyX29uKHN0ZHNjcixhLG8pCi0jZGVmaW5lIGF0dHJfc2V0KGEsYyxvKQkJd2F0dHJfc2V0KHN0ZHNjcixhLGMsbykKLSNkZWZpbmUgYmtnZChjaCkJCXdia2dkKHN0ZHNjcixjaCkKLSNkZWZpbmUgYmtnZHNldChjaCkJCXdia2dkc2V0KHN0ZHNjcixjaCkKLSNkZWZpbmUgY2hnYXQobixhLGMsbykJCXdjaGdhdChzdGRzY3IsbixhLGMsbykKLSNkZWZpbmUgY2xlYXIoKQkJCXdjbGVhcihzdGRzY3IpCi0jZGVmaW5lIGNscnRvYm90KCkJCXdjbHJ0b2JvdChzdGRzY3IpCi0jZGVmaW5lIGNscnRvZW9sKCkJCXdjbHJ0b2VvbChzdGRzY3IpCi0jZGVmaW5lIGNvbG9yX3NldChjLG8pCQl3Y29sb3Jfc2V0KHN0ZHNjcixjLG8pCi0jZGVmaW5lIGRlbGNoKCkJCQl3ZGVsY2goc3Rkc2NyKQotI2RlZmluZSBkZWxldGVsbigpCQl3aW5zZGVsbG4oc3Rkc2NyLC0xKQotI2RlZmluZSBlY2hvY2hhcihjKQkJd2VjaG9jaGFyKHN0ZHNjcixjKQotI2RlZmluZSBlcmFzZSgpCQkJd2VyYXNlKHN0ZHNjcikKLSNkZWZpbmUgZ2V0Y2goKQkJCXdnZXRjaChzdGRzY3IpCi0jZGVmaW5lIGdldHN0cihzdHIpCQl3Z2V0c3RyKHN0ZHNjcixzdHIpCi0jZGVmaW5lIGluY2goKQkJCXdpbmNoKHN0ZHNjcikKLSNkZWZpbmUgaW5jaG5zdHIocyxuKQkJd2luY2huc3RyKHN0ZHNjcixzLG4pCi0jZGVmaW5lIGluY2hzdHIocykJCXdpbmNoc3RyKHN0ZHNjcixzKQotI2RlZmluZSBpbm5zdHIocyxuKQkJd2lubnN0cihzdGRzY3IscyxuKQotI2RlZmluZSBpbnNjaChjKQkJd2luc2NoKHN0ZHNjcixjKQotI2RlZmluZSBpbnNkZWxsbihuKQkJd2luc2RlbGxuKHN0ZHNjcixuKQotI2RlZmluZSBpbnNlcnRsbigpCQl3aW5zZGVsbG4oc3Rkc2NyLDEpCi0jZGVmaW5lIGluc25zdHIocyxuKQkJd2luc25zdHIoc3Rkc2NyLHMsbikKLSNkZWZpbmUgaW5zc3RyKHMpCQl3aW5zc3RyKHN0ZHNjcixzKQotI2RlZmluZSBpbnN0cihzKQkJd2luc3RyKHN0ZHNjcixzKQotI2RlZmluZSBtb3ZlKHkseCkJCXdtb3ZlKHN0ZHNjcix5LHgpCi0jZGVmaW5lIHJlZnJlc2goKQkJd3JlZnJlc2goc3Rkc2NyKQotI2RlZmluZSBzY3JsKG4pCQkJd3Njcmwoc3Rkc2NyLG4pCi0jZGVmaW5lIHNldHNjcnJlZyh0LGIpCQl3c2V0c2NycmVnKHN0ZHNjcix0LGIpCi0jZGVmaW5lIHN0YW5kZW5kKCkJCXdzdGFuZGVuZChzdGRzY3IpCi0jZGVmaW5lIHN0YW5kb3V0KCkJCXdzdGFuZG91dChzdGRzY3IpCi0jZGVmaW5lIHRpbWVvdXQoZGVsYXkpCQl3dGltZW91dChzdGRzY3IsZGVsYXkpCi0jZGVmaW5lIHdkZWxldGVsbih3aW4pCQl3aW5zZGVsbG4od2luLC0xKQotI2RlZmluZSB3aW5zZXJ0bG4od2luKQkJd2luc2RlbGxuKHdpbiwxKQotCi0vKgotICogbXYgZnVuY3Rpb25zCi0gKi8KLQotI2RlZmluZSBtdndhZGRjaCh3aW4seSx4LGNoKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaCh3aW4sY2gpKQotI2RlZmluZSBtdndhZGRjaG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdhZGRjaG5zdHIod2luLHN0cixuKSkKLSNkZWZpbmUgbXZ3YWRkY2hzdHIod2luLHkseCxzdHIpCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkY2huc3RyKHdpbixzdHIsLTEpKQotI2RlZmluZSBtdndhZGRuc3RyKHdpbix5LHgsc3RyLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3YWRkbnN0cih3aW4sc3RyLG4pKQotI2RlZmluZSBtdndhZGRzdHIod2luLHkseCxzdHIpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2FkZG5zdHIod2luLHN0ciwtMSkpCi0jZGVmaW5lIG12d2RlbGNoKHdpbix5LHgpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2RlbGNoKHdpbikpCi0jZGVmaW5lIG12d2NoZ2F0KHdpbix5LHgsbixhLGMsbykJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdjaGdhdCh3aW4sbixhLGMsbykpCi0jZGVmaW5lIG12d2dldGNoKHdpbix5LHgpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2dldGNoKHdpbikpCi0jZGVmaW5lIG12d2dldG5zdHIod2luLHkseCxzdHIsbikJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdnZXRuc3RyKHdpbixzdHIsbikpCi0jZGVmaW5lIG12d2dldHN0cih3aW4seSx4LHN0cikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3Z2V0c3RyKHdpbixzdHIpKQotI2RlZmluZSBtdndobGluZSh3aW4seSx4LGMsbikJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aGxpbmUod2luLGMsbikpCi0jZGVmaW5lIG12d2luY2god2luLHkseCkJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBOQ1VSU0VTX0NBU1QoY2h0eXBlLCBFUlIpIDogd2luY2god2luKSkKLSNkZWZpbmUgbXZ3aW5jaG5zdHIod2luLHkseCxzLG4pCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5jaG5zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luY2hzdHIod2luLHkseCxzKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbmNoc3RyKHdpbixzKSkKLSNkZWZpbmUgbXZ3aW5uc3RyKHdpbix5LHgscyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbm5zdHIod2luLHMsbikpCi0jZGVmaW5lIG12d2luc2NoKHdpbix5LHgsYykJCSh3bW92ZSh3aW4seSx4KSA9PSBFUlIgPyBFUlIgOiB3aW5zY2god2luLGMpKQotI2RlZmluZSBtdndpbnNuc3RyKHdpbix5LHgscyxuKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNuc3RyKHdpbixzLG4pKQotI2RlZmluZSBtdndpbnNzdHIod2luLHkseCxzKQkJKHdtb3ZlKHdpbix5LHgpID09IEVSUiA/IEVSUiA6IHdpbnNzdHIod2luLHMpKQotI2RlZmluZSBtdndpbnN0cih3aW4seSx4LHMpCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd2luc3RyKHdpbixzKSkKLSNkZWZpbmUgbXZ3dmxpbmUod2luLHkseCxjLG4pCQkod21vdmUod2luLHkseCkgPT0gRVJSID8gRVJSIDogd3ZsaW5lKHdpbixjLG4pKQotCi0jZGVmaW5lIG12YWRkY2goeSx4LGNoKQkJCW12d2FkZGNoKHN0ZHNjcix5LHgsY2gpCi0jZGVmaW5lIG12YWRkY2huc3RyKHkseCxzdHIsbikJCW12d2FkZGNobnN0cihzdGRzY3IseSx4LHN0cixuKQotI2RlZmluZSBtdmFkZGNoc3RyKHkseCxzdHIpCQltdndhZGRjaHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZhZGRuc3RyKHkseCxzdHIsbikJCW12d2FkZG5zdHIoc3Rkc2NyLHkseCxzdHIsbikKLSNkZWZpbmUgbXZhZGRzdHIoeSx4LHN0cikJCW12d2FkZHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZjaGdhdCh5LHgsbixhLGMsbykJCW12d2NoZ2F0KHN0ZHNjcix5LHgsbixhLGMsbykKLSNkZWZpbmUgbXZkZWxjaCh5LHgpCQkJbXZ3ZGVsY2goc3Rkc2NyLHkseCkKLSNkZWZpbmUgbXZnZXRjaCh5LHgpCQkJbXZ3Z2V0Y2goc3Rkc2NyLHkseCkKLSNkZWZpbmUgbXZnZXRuc3RyKHkseCxzdHIsbikJCW12d2dldG5zdHIoc3Rkc2NyLHkseCxzdHIsbikKLSNkZWZpbmUgbXZnZXRzdHIoeSx4LHN0cikJCW12d2dldHN0cihzdGRzY3IseSx4LHN0cikKLSNkZWZpbmUgbXZobGluZSh5LHgsYyxuKQkJbXZ3aGxpbmUoc3Rkc2NyLHkseCxjLG4pCi0jZGVmaW5lIG12aW5jaCh5LHgpCQkJbXZ3aW5jaChzdGRzY3IseSx4KQotI2RlZmluZSBtdmluY2huc3RyKHkseCxzLG4pCQltdndpbmNobnN0cihzdGRzY3IseSx4LHMsbikKLSNkZWZpbmUgbXZpbmNoc3RyKHkseCxzKQkJbXZ3aW5jaHN0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12aW5uc3RyKHkseCxzLG4pCQltdndpbm5zdHIoc3Rkc2NyLHkseCxzLG4pCi0jZGVmaW5lIG12aW5zY2goeSx4LGMpCQkJbXZ3aW5zY2goc3Rkc2NyLHkseCxjKQotI2RlZmluZSBtdmluc25zdHIoeSx4LHMsbikJCW12d2luc25zdHIoc3Rkc2NyLHkseCxzLG4pCi0jZGVmaW5lIG12aW5zc3RyKHkseCxzKQkJCW12d2luc3N0cihzdGRzY3IseSx4LHMpCi0jZGVmaW5lIG12aW5zdHIoeSx4LHMpCQkJbXZ3aW5zdHIoc3Rkc2NyLHkseCxzKQotI2RlZmluZSBtdnZsaW5lKHkseCxjLG4pCQltdnd2bGluZShzdGRzY3IseSx4LGMsbikKLQotLyoKLSAqIFNvbWUgd2lkZS1jaGFyYWN0ZXIgZnVuY3Rpb25zIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRob3V0IHRoZSBleHRlbnNpb25zLgotICovCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jZGVmaW5lIGdldGJrZ2Qod2luKSAgICAgICAgICAgICAgICAgICAgKCh3aW4pLT5fYmtnZCkKLSNlbmRpZiAvKiBOQ1VSU0VTX09QQVFVRSAqLwotCi0jZGVmaW5lIHNsa19hdHRyX29mZihhLHYpCQkoKHYpID8gRVJSIDogc2xrX2F0dHJvZmYoYSkpCi0jZGVmaW5lIHNsa19hdHRyX29uKGEsdikJCSgodikgPyBFUlIgOiBzbGtfYXR0cm9uKGEpKQotCi0jaWYgIU5DVVJTRVNfT1BBUVVFCi0jaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFX0VYVEVOREVEKSAmJiAwCi0jZGVmaW5lIHdhdHRyX3NldCh3aW4sYSxwLG9wdHMpCQkoKHdpbiktPl9hdHRycyA9ICgoYSkgJiB+QV9DT0xPUiksIFwKLQkJCQkJICh3aW4pLT5fY29sb3IgPSAocCksIFwKLQkJCQkJIE9LKQotI2RlZmluZSB3YXR0cl9nZXQod2luLGEscCxvcHRzKQkJKCh2b2lkKSgoYSkgIT0gKHZvaWQgKikwICYmICgqKGEpID0gKHdpbiktPl9hdHRycykpLCBcCi0JCQkJCSAodm9pZCkoKHApICE9ICh2b2lkICopMCAmJiAoKihwKSA9ICh3aW4pLT5fY29sb3IpKSwgXAotCQkJCQkgT0spCi0jZWxzZQotI2RlZmluZSB3YXR0cl9zZXQod2luLGEscCxvcHRzKQkJKCh3aW4pLT5fYXR0cnMgPSAoKChhKSAmIH5BX0NPTE9SKSB8IENPTE9SX1BBSVIocCkpLCBPSykKLSNkZWZpbmUgd2F0dHJfZ2V0KHdpbixhLHAsb3B0cykJCSgodm9pZCkoKGEpICE9ICh2b2lkICopMCAmJiAoKihhKSA9ICh3aW4pLT5fYXR0cnMpKSwgXAotCQkJCQkgKHZvaWQpKChwKSAhPSAodm9pZCAqKTAgJiYgKCoocCkgPSBQQUlSX05VTUJFUigod2luKS0+X2F0dHJzKSkpLCBcCi0JCQkJCSBPSykKLSNlbmRpZgotI2VuZGlmIC8qIE5DVVJTRVNfT1BBUVVFICovCi0KLS8qCi0gKiBYL09wZW4gY3Vyc2VzIGRlcHJlY2F0ZXMgU1ZyNCB2d3ByaW50dy92d3NjYW53LCB3aGljaCBhcmUgc3VwcG9zZWQgdG8gdXNlCi0gKiB2YXJhcmdzLmguICBJdCBhZGRzIG5ldyBjYWxscyB2d19wcmludHcvdndfc2NhbncsIHdoaWNoIGFyZSBzdXBwb3NlZCB0bwotICogdXNlIFBPU0lYIHN0ZGFyZy5oLiAgVGhlIG5jdXJzZXMgdmVyc2lvbnMgb2YgdndwcmludHcvdndzY2FudyBhbHJlYWR5Ci0gKiB1c2Ugc3RkYXJnLmgsIHNvLi4uCi0gKi8KLSNkZWZpbmUgdndfcHJpbnR3CQl2d3ByaW50dwotI2RlZmluZSB2d19zY2FudwkJdndzY2FudwotCi0vKgotICogRXhwb3J0IGZhbGxiYWNrIGZ1bmN0aW9uIGZvciB1c2UgaW4gQysrIGJpbmRpbmcuCi0gKi8KLSNpZiAhMQotI2RlZmluZSB2c3NjYW5mKGEsYixjKSBfbmNfdnNzY2FuZihhLGIsYykKLU5DVVJTRVNfRVhQT1JUKGludCkgdnNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0jZW5kaWYKLQotLyoKLSAqIFRoZXNlIG1hY3JvcyBhcmUgZXh0ZW5zaW9ucyAtIG5vdCBpbiBYL09wZW4gQ3Vyc2VzLgotICovCi0jaWYgMQotI2lmICFOQ1VSU0VTX09QQVFVRQotI2RlZmluZSBpc19jbGVhcmVkKHdpbikJCSgod2luKS0+X2NsZWFyKQotI2RlZmluZSBpc19pZGNvayh3aW4pCQkoKHdpbiktPl9pZGNvaykKLSNkZWZpbmUgaXNfaWRsb2sod2luKQkJKCh3aW4pLT5faWRsb2spCi0jZGVmaW5lIGlzX2ltbWVkb2sod2luKQkJKCh3aW4pLT5faW1tZWQpCi0jZGVmaW5lIGlzX2tleXBhZCh3aW4pCQkoKHdpbiktPl91c2Vfa2V5cGFkKQotI2RlZmluZSBpc19sZWF2ZW9rKHdpbikJCSgod2luKS0+X2xlYXZlb2spCi0jZGVmaW5lIGlzX25vZGVsYXkod2luKQkJKCh3aW4pLT5fZGVsYXkgPT0gMCkKLSNkZWZpbmUgaXNfbm90aW1lb3V0KHdpbikJKCh3aW4pLT5fbm90aW1lb3V0KQotI2RlZmluZSBpc19zY3JvbGxvayh3aW4pCSgod2luKS0+X3Njcm9sbCkKLSNkZWZpbmUgaXNfc3luY29rKHdpbikJCSgod2luKS0+X3N5bmMpCi0jZGVmaW5lIHdnZXRwYXJlbnQod2luKQkJKCh3aW4pID8gKHdpbiktPl9wYXJlbnQgOiAwKQotI2RlZmluZSB3Z2V0c2NycmVnKHdpbix0LGIpCSgod2luKSA/ICgqKHQpID0gKHdpbiktPl9yZWd0b3AsICooYikgPSAod2luKS0+X3JlZ2JvdHRvbSwgT0spIDogRVJSKQotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotLyoKLSAqIFB1YmxpYyB2YXJpYWJsZXMuCi0gKgotICogTm90ZXM6Ci0gKglhLiBFU0NERUxBWSB3YXMgYW4gdW5kb2N1bWVudGVkIGZlYXR1cmUgdW5kZXIgQUlYIGN1cnNlcy4KLSAqCSAgIEl0IGdpdmVzIHRoZSBFU0MgZXhwaXJlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLgotICoJYi4gdHR5dHlwZSBpcyBuZWVkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAqLwotI2lmIDAKLQotTkNVUlNFU19XUkFQUEVEX1ZBUihXSU5ET1cgKiwgY3Vyc2NyKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoV0lORE9XICosIG5ld3Njcik7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKFdJTkRPVyAqLCBzdGRzY3IpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihjaGFyICosIHR0eXR5cGUpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIENPTE9SUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgQ09MT1JfUEFJUlMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIENPTFMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihpbnQsIEVTQ0RFTEFZKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoaW50LCBMSU5FUyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKGludCwgVEFCU0laRSk7Ci0KLSNkZWZpbmUgY3Vyc2NyICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKGN1cnNjcigpKQotI2RlZmluZSBuZXdzY3IgICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIobmV3c2NyKCkpCi0jZGVmaW5lIHN0ZHNjciAgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihzdGRzY3IoKSkKLSNkZWZpbmUgdHR5dHlwZSAgICAgTkNVUlNFU19QVUJMSUNfVkFSKHR0eXR5cGUoKSkKLSNkZWZpbmUgQ09MT1JTICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKENPTE9SUygpKQotI2RlZmluZSBDT0xPUl9QQUlSUyBOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MT1JfUEFJUlMoKSkKLSNkZWZpbmUgQ09MUyAgICAgICAgTkNVUlNFU19QVUJMSUNfVkFSKENPTFMoKSkKLSNkZWZpbmUgRVNDREVMQVkgICAgTkNVUlNFU19QVUJMSUNfVkFSKEVTQ0RFTEFZKCkpCi0jZGVmaW5lIExJTkVTICAgICAgIE5DVVJTRVNfUFVCTElDX1ZBUihMSU5FUygpKQotI2RlZmluZSBUQUJTSVpFICAgICBOQ1VSU0VTX1BVQkxJQ19WQVIoVEFCU0laRSgpKQotCi0jZWxzZQotCi1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBjdXJzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBuZXdzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFdJTkRPVyAqKSBzdGRzY3I7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIpIHR0eXR5cGVbXTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBDT0xPUlM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGludCkgQ09MT1JfUEFJUlM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGludCkgQ09MUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBFU0NERUxBWTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBMSU5FUzsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBUQUJTSVpFOwotCi0jZW5kaWYKLQotLyoKLSAqIFBzZXVkby1jaGFyYWN0ZXIgdG9rZW5zIG91dHNpZGUgQVNDSUkgcmFuZ2UuICBUaGUgY3Vyc2VzIHdnZXRjaCgpIGZ1bmN0aW9uCi0gKiB3aWxsIHJldHVybiBhbnkgZ2l2ZW4gb25lIG9mIHRoZXNlIG9ubHkgaWYgdGhlIGNvcnJlc3BvbmRpbmcgay0gY2FwYWJpbGl0eQotICogaXMgZGVmaW5lZCBpbiB5b3VyIHRlcm1pbmFsJ3MgdGVybWluZm8gZW50cnkuCi0gKgotICogU29tZSBrZXlzIChLRVlfQTEsIGV0YykgYXJlIGFycmFuZ2VkIGxpa2UgdGhpczoKLSAqCWExICAgICB1cCAgICBhMwotICoJbGVmdCAgIGIyICAgIHJpZ2h0Ci0gKgljMSAgICAgZG93biAgYzMKLSAqCi0gKiBBIGZldyBrZXkgY29kZXMgZG8gbm90IGRlcGVuZCB1cG9uIHRoZSB0ZXJtaW5mbyBlbnRyeS4KLSAqLwotI2RlZmluZSBLRVlfQ09ERV9ZRVMJMDQwMAkJLyogQSB3Y2hhcl90IGNvbnRhaW5zIGEga2V5IGNvZGUgKi8KLSNkZWZpbmUgS0VZX01JTgkJMDQwMQkJLyogTWluaW11bSBjdXJzZXMga2V5ICovCi0jZGVmaW5lIEtFWV9CUkVBSwkwNDAxCQkvKiBCcmVhayBrZXkgKHVucmVsaWFibGUpICovCi0jZGVmaW5lIEtFWV9TUkVTRVQJMDUzMAkJLyogU29mdCAocGFydGlhbCkgcmVzZXQgKHVucmVsaWFibGUpICovCi0jZGVmaW5lIEtFWV9SRVNFVAkwNTMxCQkvKiBSZXNldCBvciBoYXJkIHJlc2V0ICh1bnJlbGlhYmxlKSAqLwotLyoKLSAqIFRoZXNlIGRlZmluaXRpb25zIHdlcmUgZ2VuZXJhdGVkIGJ5IC4vTUtrZXlfZGVmcy5zaCAuL0NhcHMKLSAqLwotI2RlZmluZSBLRVlfRE9XTgkwNDAyCQkvKiBkb3duLWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfVVAJCTA0MDMJCS8qIHVwLWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfTEVGVAkwNDA0CQkvKiBsZWZ0LWFycm93IGtleSAqLwotI2RlZmluZSBLRVlfUklHSFQJMDQwNQkJLyogcmlnaHQtYXJyb3cga2V5ICovCi0jZGVmaW5lIEtFWV9IT01FCTA0MDYJCS8qIGhvbWUga2V5ICovCi0jZGVmaW5lIEtFWV9CQUNLU1BBQ0UJMDQwNwkJLyogYmFja3NwYWNlIGtleSAqLwotI2RlZmluZSBLRVlfRjAJCTA0MTAJCS8qIEZ1bmN0aW9uIGtleXMuICBTcGFjZSBmb3IgNjQgKi8KLSNkZWZpbmUgS0VZX0YobikJKEtFWV9GMCsobikpCS8qIFZhbHVlIG9mIGZ1bmN0aW9uIGtleSBuICovCi0jZGVmaW5lIEtFWV9ETAkJMDUxMAkJLyogZGVsZXRlLWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9JTAkJMDUxMQkJLyogaW5zZXJ0LWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9EQwkJMDUxMgkJLyogZGVsZXRlLWNoYXJhY3RlciBrZXkgKi8KLSNkZWZpbmUgS0VZX0lDCQkwNTEzCQkvKiBpbnNlcnQtY2hhcmFjdGVyIGtleSAqLwotI2RlZmluZSBLRVlfRUlDCQkwNTE0CQkvKiBzZW50IGJ5IHJtaXIgb3Igc21pciBpbiBpbnNlcnQgbW9kZSAqLwotI2RlZmluZSBLRVlfQ0xFQVIJMDUxNQkJLyogY2xlYXItc2NyZWVuIG9yIGVyYXNlIGtleSAqLwotI2RlZmluZSBLRVlfRU9TCQkwNTE2CQkvKiBjbGVhci10by1lbmQtb2Ytc2NyZWVuIGtleSAqLwotI2RlZmluZSBLRVlfRU9MCQkwNTE3CQkvKiBjbGVhci10by1lbmQtb2YtbGluZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NGCQkwNTIwCQkvKiBzY3JvbGwtZm9yd2FyZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NSCQkwNTIxCQkvKiBzY3JvbGwtYmFja3dhcmQga2V5ICovCi0jZGVmaW5lIEtFWV9OUEFHRQkwNTIyCQkvKiBuZXh0LXBhZ2Uga2V5ICovCi0jZGVmaW5lIEtFWV9QUEFHRQkwNTIzCQkvKiBwcmV2aW91cy1wYWdlIGtleSAqLwotI2RlZmluZSBLRVlfU1RBQgkwNTI0CQkvKiBzZXQtdGFiIGtleSAqLwotI2RlZmluZSBLRVlfQ1RBQgkwNTI1CQkvKiBjbGVhci10YWIga2V5ICovCi0jZGVmaW5lIEtFWV9DQVRBQgkwNTI2CQkvKiBjbGVhci1hbGwtdGFicyBrZXkgKi8KLSNkZWZpbmUgS0VZX0VOVEVSCTA1MjcJCS8qIGVudGVyL3NlbmQga2V5ICovCi0jZGVmaW5lIEtFWV9QUklOVAkwNTMyCQkvKiBwcmludCBrZXkgKi8KLSNkZWZpbmUgS0VZX0xMCQkwNTMzCQkvKiBsb3dlci1sZWZ0IGtleSAoaG9tZSBkb3duKSAqLwotI2RlZmluZSBLRVlfQTEJCTA1MzQJCS8qIHVwcGVyIGxlZnQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9BMwkJMDUzNQkJLyogdXBwZXIgcmlnaHQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9CMgkJMDUzNgkJLyogY2VudGVyIG9mIGtleXBhZCAqLwotI2RlZmluZSBLRVlfQzEJCTA1MzcJCS8qIGxvd2VyIGxlZnQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9DMwkJMDU0MAkJLyogbG93ZXIgcmlnaHQgb2Yga2V5cGFkICovCi0jZGVmaW5lIEtFWV9CVEFCCTA1NDEJCS8qIGJhY2stdGFiIGtleSAqLwotI2RlZmluZSBLRVlfQkVHCQkwNTQyCQkvKiBiZWdpbiBrZXkgKi8KLSNkZWZpbmUgS0VZX0NBTkNFTAkwNTQzCQkvKiBjYW5jZWwga2V5ICovCi0jZGVmaW5lIEtFWV9DTE9TRQkwNTQ0CQkvKiBjbG9zZSBrZXkgKi8KLSNkZWZpbmUgS0VZX0NPTU1BTkQJMDU0NQkJLyogY29tbWFuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0NPUFkJMDU0NgkJLyogY29weSBrZXkgKi8KLSNkZWZpbmUgS0VZX0NSRUFURQkwNTQ3CQkvKiBjcmVhdGUga2V5ICovCi0jZGVmaW5lIEtFWV9FTkQJCTA1NTAJCS8qIGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0VYSVQJMDU1MQkJLyogZXhpdCBrZXkgKi8KLSNkZWZpbmUgS0VZX0ZJTkQJMDU1MgkJLyogZmluZCBrZXkgKi8KLSNkZWZpbmUgS0VZX0hFTFAJMDU1MwkJLyogaGVscCBrZXkgKi8KLSNkZWZpbmUgS0VZX01BUksJMDU1NAkJLyogbWFyayBrZXkgKi8KLSNkZWZpbmUgS0VZX01FU1NBR0UJMDU1NQkJLyogbWVzc2FnZSBrZXkgKi8KLSNkZWZpbmUgS0VZX01PVkUJMDU1NgkJLyogbW92ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX05FWFQJMDU1NwkJLyogbmV4dCBrZXkgKi8KLSNkZWZpbmUgS0VZX09QRU4JMDU2MAkJLyogb3BlbiBrZXkgKi8KLSNkZWZpbmUgS0VZX09QVElPTlMJMDU2MQkJLyogb3B0aW9ucyBrZXkgKi8KLSNkZWZpbmUgS0VZX1BSRVZJT1VTCTA1NjIJCS8qIHByZXZpb3VzIGtleSAqLwotI2RlZmluZSBLRVlfUkVETwkwNTYzCQkvKiByZWRvIGtleSAqLwotI2RlZmluZSBLRVlfUkVGRVJFTkNFCTA1NjQJCS8qIHJlZmVyZW5jZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFRlJFU0gJMDU2NQkJLyogcmVmcmVzaCBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFUExBQ0UJMDU2NgkJLyogcmVwbGFjZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFU1RBUlQJMDU2NwkJLyogcmVzdGFydCBrZXkgKi8KLSNkZWZpbmUgS0VZX1JFU1VNRQkwNTcwCQkvKiByZXN1bWUga2V5ICovCi0jZGVmaW5lIEtFWV9TQVZFCTA1NzEJCS8qIHNhdmUga2V5ICovCi0jZGVmaW5lIEtFWV9TQkVHCTA1NzIJCS8qIHNoaWZ0ZWQgYmVnaW4ga2V5ICovCi0jZGVmaW5lIEtFWV9TQ0FOQ0VMCTA1NzMJCS8qIHNoaWZ0ZWQgY2FuY2VsIGtleSAqLwotI2RlZmluZSBLRVlfU0NPTU1BTkQJMDU3NAkJLyogc2hpZnRlZCBjb21tYW5kIGtleSAqLwotI2RlZmluZSBLRVlfU0NPUFkJMDU3NQkJLyogc2hpZnRlZCBjb3B5IGtleSAqLwotI2RlZmluZSBLRVlfU0NSRUFURQkwNTc2CQkvKiBzaGlmdGVkIGNyZWF0ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NEQwkJMDU3NwkJLyogc2hpZnRlZCBkZWxldGUtY2hhcmFjdGVyIGtleSAqLwotI2RlZmluZSBLRVlfU0RMCQkwNjAwCQkvKiBzaGlmdGVkIGRlbGV0ZS1saW5lIGtleSAqLwotI2RlZmluZSBLRVlfU0VMRUNUCTA2MDEJCS8qIHNlbGVjdCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NFTkQJMDYwMgkJLyogc2hpZnRlZCBlbmQga2V5ICovCi0jZGVmaW5lIEtFWV9TRU9MCTA2MDMJCS8qIHNoaWZ0ZWQgY2xlYXItdG8tZW5kLW9mLWxpbmUga2V5ICovCi0jZGVmaW5lIEtFWV9TRVhJVAkwNjA0CQkvKiBzaGlmdGVkIGV4aXQga2V5ICovCi0jZGVmaW5lIEtFWV9TRklORAkwNjA1CQkvKiBzaGlmdGVkIGZpbmQga2V5ICovCi0jZGVmaW5lIEtFWV9TSEVMUAkwNjA2CQkvKiBzaGlmdGVkIGhlbHAga2V5ICovCi0jZGVmaW5lIEtFWV9TSE9NRQkwNjA3CQkvKiBzaGlmdGVkIGhvbWUga2V5ICovCi0jZGVmaW5lIEtFWV9TSUMJCTA2MTAJCS8qIHNoaWZ0ZWQgaW5zZXJ0LWNoYXJhY3RlciBrZXkgKi8KLSNkZWZpbmUgS0VZX1NMRUZUCTA2MTEJCS8qIHNoaWZ0ZWQgbGVmdC1hcnJvdyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NNRVNTQUdFCTA2MTIJCS8qIHNoaWZ0ZWQgbWVzc2FnZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NNT1ZFCTA2MTMJCS8qIHNoaWZ0ZWQgbW92ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NORVhUCTA2MTQJCS8qIHNoaWZ0ZWQgbmV4dCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NPUFRJT05TCTA2MTUJCS8qIHNoaWZ0ZWQgb3B0aW9ucyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NQUkVWSU9VUwkwNjE2CQkvKiBzaGlmdGVkIHByZXZpb3VzIGtleSAqLwotI2RlZmluZSBLRVlfU1BSSU5UCTA2MTcJCS8qIHNoaWZ0ZWQgcHJpbnQga2V5ICovCi0jZGVmaW5lIEtFWV9TUkVETwkwNjIwCQkvKiBzaGlmdGVkIHJlZG8ga2V5ICovCi0jZGVmaW5lIEtFWV9TUkVQTEFDRQkwNjIxCQkvKiBzaGlmdGVkIHJlcGxhY2Uga2V5ICovCi0jZGVmaW5lIEtFWV9TUklHSFQJMDYyMgkJLyogc2hpZnRlZCByaWdodC1hcnJvdyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NSU1VNRQkwNjIzCQkvKiBzaGlmdGVkIHJlc3VtZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NTQVZFCTA2MjQJCS8qIHNoaWZ0ZWQgc2F2ZSBrZXkgKi8KLSNkZWZpbmUgS0VZX1NTVVNQRU5ECTA2MjUJCS8qIHNoaWZ0ZWQgc3VzcGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1NVTkRPCTA2MjYJCS8qIHNoaWZ0ZWQgdW5kbyBrZXkgKi8KLSNkZWZpbmUgS0VZX1NVU1BFTkQJMDYyNwkJLyogc3VzcGVuZCBrZXkgKi8KLSNkZWZpbmUgS0VZX1VORE8JMDYzMAkJLyogdW5kbyBrZXkgKi8KLSNkZWZpbmUgS0VZX01PVVNFCTA2MzEJCS8qIE1vdXNlIGV2ZW50IGhhcyBvY2N1cnJlZCAqLwotI2RlZmluZSBLRVlfUkVTSVpFCTA2MzIJCS8qIFRlcm1pbmFsIHJlc2l6ZSBldmVudCAqLwotI2RlZmluZSBLRVlfRVZFTlQJMDYzMwkJLyogV2Ugd2VyZSBpbnRlcnJ1cHRlZCBieSBhbiBldmVudCAqLwotCi0jZGVmaW5lIEtFWV9NQVgJCTA3NzcJCS8qIE1heGltdW0ga2V5IHZhbHVlIGlzIDA2MzMgKi8KLS8qICRJZDogY3Vyc2VzLnRhaWwsdiAxLjE2IDIwMDgvMDcvMDUgMjA6MjA6MzggdG9tIEV4cCAkICovCi0vKgotICogdmlsZTpjbW9kZToKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIG5jdXJzZXMsIGRlc2lnbmVkIHRvIGJlIGFwcGVuZGVkIGFmdGVyIGN1cnNlcy5oLmluCi0gKiAoc2VlIHRoYXQgZmlsZSBmb3IgdGhlIHJlbGV2YW50IGNvcHlyaWdodCkuCi0gKi8KLQotLyogbW91c2UgaW50ZXJmYWNlICovCi0KLSNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPiAxCi0jZGVmaW5lIE5DVVJTRVNfTU9VU0VfTUFTSyhiLG0pICgobSkgPDwgKCgoYikgLSAxKSAqIDUpKQotI2Vsc2UKLSNkZWZpbmUgTkNVUlNFU19NT1VTRV9NQVNLKGIsbSkgKChtKSA8PCAoKChiKSAtIDEpICogNikpCi0jZW5kaWYKLQotI2RlZmluZQlOQ1VSU0VTX0JVVFRPTl9SRUxFQVNFRAkwMDFMCi0jZGVmaW5lCU5DVVJTRVNfQlVUVE9OX1BSRVNTRUQJMDAyTAotI2RlZmluZQlOQ1VSU0VTX0JVVFRPTl9DTElDS0VECTAwNEwKLSNkZWZpbmUJTkNVUlNFU19ET1VCTEVfQ0xJQ0tFRAkwMTBMCi0jZGVmaW5lCU5DVVJTRVNfVFJJUExFX0NMSUNLRUQJMDIwTAotI2RlZmluZQlOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UCTA0MEwKLQotLyogZXZlbnQgbWFza3MgKi8KLSNkZWZpbmUJQlVUVE9OMV9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMSwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjFfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjFfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjFfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjFfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OMl9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMiwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjJfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjJfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjJfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjJfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDIsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OM19SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soMywgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjNfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjNfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjNfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjNfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDMsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9ONF9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soNCwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjRfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjRfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjRfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjRfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDQsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLS8qCi0gKiBJbiAzMiBiaXRzIHRoZSB2ZXJzaW9uLTEgc2NoZW1lIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIHNwYWNlIGZvciBhIDV0aAotICogYnV0dG9uLCB1bmxlc3Mgd2UgY2hvb3NlIHRvIGNoYW5nZSB0aGUgQUJJIGJ5IG9taXR0aW5nIHRoZSByZXNlcnZlZC1ldmVudHMuCi0gKi8KLSNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPiAxCi0KLSNkZWZpbmUJQlVUVE9ONV9SRUxFQVNFRAlOQ1VSU0VTX01PVVNFX01BU0soNSwgTkNVUlNFU19CVVRUT05fUkVMRUFTRUQpCi0jZGVmaW5lCUJVVFRPTjVfUFJFU1NFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfQlVUVE9OX1BSRVNTRUQpCi0jZGVmaW5lCUJVVFRPTjVfQ0xJQ0tFRAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfQlVUVE9OX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjVfRE9VQkxFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfRE9VQkxFX0NMSUNLRUQpCi0jZGVmaW5lCUJVVFRPTjVfVFJJUExFX0NMSUNLRUQJTkNVUlNFU19NT1VTRV9NQVNLKDUsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpCi0KLSNkZWZpbmUJQlVUVE9OX0NUUkwJCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDAxTCkKLSNkZWZpbmUJQlVUVE9OX1NISUZUCQlOQ1VSU0VTX01PVVNFX01BU0soNiwgMDAwMkwpCi0jZGVmaW5lCUJVVFRPTl9BTFQJCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDA0TCkKLSNkZWZpbmUJUkVQT1JUX01PVVNFX1BPU0lUSU9OCU5DVVJTRVNfTU9VU0VfTUFTSyg2LCAwMDEwTCkKLQotI2Vsc2UKLQotI2RlZmluZQlCVVRUT04xX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygxLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT04yX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygyLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT04zX1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSygzLCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotI2RlZmluZQlCVVRUT040X1JFU0VSVkVEX0VWRU5UCU5DVVJTRVNfTU9VU0VfTUFTSyg0LCBOQ1VSU0VTX1JFU0VSVkVEX0VWRU5UKQotCi0jZGVmaW5lCUJVVFRPTl9DVFJMCQlOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAwMUwpCi0jZGVmaW5lCUJVVFRPTl9TSElGVAkJTkNVUlNFU19NT1VTRV9NQVNLKDUsIDAwMDJMKQotI2RlZmluZQlCVVRUT05fQUxUCQlOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAwNEwpCi0jZGVmaW5lCVJFUE9SVF9NT1VTRV9QT1NJVElPTglOQ1VSU0VTX01PVVNFX01BU0soNSwgMDAxMEwpCi0KLSNlbmRpZgotCi0jZGVmaW5lCUFMTF9NT1VTRV9FVkVOVFMJKFJFUE9SVF9NT1VTRV9QT1NJVElPTiAtIDEpCi0KLS8qIG1hY3JvcyB0byBleHRyYWN0IHNpbmdsZSBldmVudC1iaXRzIGZyb20gbWFza3MgKi8KLSNkZWZpbmUJQlVUVE9OX1JFTEVBU0UoZSwgeCkJCSgoZSkgJiBOQ1VSU0VTX01PVVNFX01BU0soeCwgMDAxKSkKLSNkZWZpbmUJQlVUVE9OX1BSRVNTKGUsIHgpCQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAwMikpCi0jZGVmaW5lCUJVVFRPTl9DTElDSyhlLCB4KQkJKChlKSAmIE5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDQpKQotI2RlZmluZQlCVVRUT05fRE9VQkxFX0NMSUNLKGUsIHgpCSgoZSkgJiBOQ1VSU0VTX01PVVNFX01BU0soeCwgMDEwKSkKLSNkZWZpbmUJQlVUVE9OX1RSSVBMRV9DTElDSyhlLCB4KQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAyMCkpCi0jZGVmaW5lCUJVVFRPTl9SRVNFUlZFRF9FVkVOVChlLCB4KQkoKGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDA0MCkpCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgc2hvcnQgaWQ7CQkvKiBJRCB0byBkaXN0aW5ndWlzaCBtdWx0aXBsZSBkZXZpY2VzICovCi0gICAgaW50IHgsIHksIHo7CS8qIGV2ZW50IGNvb3JkaW5hdGVzIChjaGFyYWN0ZXItY2VsbCkgKi8KLSAgICBtbWFza190IGJzdGF0ZTsJLyogYnV0dG9uIHN0YXRlIGJpdHMgKi8KLX0KLU1FVkVOVDsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bW91c2UgKE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHVuZ2V0bW91c2UgKE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChtbWFza190KSBtb3VzZW1hc2sgKG1tYXNrX3QsIG1tYXNrX3QgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgd2VuY2xvc2UgKGNvbnN0IFdJTkRPVyAqLCBpbnQsIGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtb3VzZWludGVydmFsIChpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIHdtb3VzZV90cmFmbyAoY29uc3QgV0lORE9XKiwgaW50KiwgaW50KiwgYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgbW91c2VfdHJhZm8gKGludCosIGludCosIGJvb2wpOyAgICAgICAgICAgICAgLyogZ2VuZXJhdGVkICovCi0KLSNkZWZpbmUgbW91c2VfdHJhZm8oeSx4LHRvX3NjcmVlbikgd21vdXNlX3RyYWZvKHN0ZHNjcix5LHgsdG9fc2NyZWVuKQotCi0vKiBvdGhlciBub24tWFNJIGZ1bmN0aW9ucyAqLwotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBtY3ByaW50IChjaGFyICosIGludCk7CS8qIGRpcmVjdCBkYXRhIHRvIHByaW50ZXIgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGhhc19rZXkgKGludCk7CQkvKiBkbyB3ZSBoYXZlIGdpdmVuIGtleT8gKi8KLQotLyogRGVidWdnaW5nIDogdXNlIHdpdGggbGlibmN1cnNlc19nLmEgKi8KLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF90cmFjZWYgKGNvbnN0IGNoYXIgKiwgLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF90cmFjZWR1bXAgKGNvbnN0IGNoYXIgKiwgV0lORE9XICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlYXR0ciAoYXR0cl90KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWF0dHIyIChpbnQsIGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfdHJhY2ViaXRzICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWNoYXIgKGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjaHR5cGUgKGNodHlwZSk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjaHR5cGUyIChpbnQsIGNodHlwZSk7Ci0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAotI2RlZmluZSBfdHJhY2VjaF90CQlfdHJhY2VjY2hhcl90Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfdHJhY2VjY2hhcl90IChjb25zdCBjY2hhcl90ICopOwotI2RlZmluZSBfdHJhY2VjaF90MgkJX3RyYWNlY2NoYXJfdDIKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF90cmFjZWNjaGFyX3QyIChpbnQsIGNvbnN0IGNjaGFyX3QgKik7Ci0jZWxzZQotI2RlZmluZSBfdHJhY2VjaF90CQlfdHJhY2VjaHR5cGUKLSNkZWZpbmUgX3RyYWNlY2hfdDIJCV90cmFjZWNodHlwZTIKLSNlbmRpZgotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX3RyYWNlbW91c2UgKGNvbnN0IE1FVkVOVCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSB0cmFjZSAoY29uc3QgdW5zaWduZWQgaW50KTsKLQotLyogdHJhY2UgbWFza3MgKi8KLSNkZWZpbmUgVFJBQ0VfRElTQUJMRQkweDAwMDAJLyogdHVybiBvZmYgdHJhY2luZyAqLwotI2RlZmluZSBUUkFDRV9USU1FUwkweDAwMDEJLyogdHJhY2UgdXNlciBhbmQgc3lzdGVtIHRpbWVzIG9mIHVwZGF0ZXMgKi8KLSNkZWZpbmUgVFJBQ0VfVFBVVFMJMHgwMDAyCS8qIHRyYWNlIHRwdXRzIGNhbGxzICovCi0jZGVmaW5lIFRSQUNFX1VQREFURQkweDAwMDQJLyogdHJhY2UgdXBkYXRlIGFjdGlvbnMsIG9sZCAmIG5ldyBzY3JlZW5zICovCi0jZGVmaW5lIFRSQUNFX01PVkUJMHgwMDA4CS8qIHRyYWNlIGN1cnNvciBtb3ZlcyBhbmQgc2Nyb2xscyAqLwotI2RlZmluZSBUUkFDRV9DSEFSUFVUCTB4MDAxMAkvKiB0cmFjZSBhbGwgY2hhcmFjdGVyIG91dHB1dHMgKi8KLSNkZWZpbmUgVFJBQ0VfT1JESU5BUlkJMHgwMDFGCS8qIHRyYWNlIGFsbCB1cGRhdGUgYWN0aW9ucyAqLwotI2RlZmluZSBUUkFDRV9DQUxMUwkweDAwMjAJLyogdHJhY2UgYWxsIGN1cnNlcyBjYWxscyAqLwotI2RlZmluZSBUUkFDRV9WSVJUUFVUCTB4MDA0MAkvKiB0cmFjZSB2aXJ0dWFsIGNoYXJhY3RlciBwdXRzICovCi0jZGVmaW5lIFRSQUNFX0lFVkVOVAkweDAwODAJLyogdHJhY2UgbG93LWxldmVsIGlucHV0IHByb2Nlc3NpbmcgKi8KLSNkZWZpbmUgVFJBQ0VfQklUUwkweDAxMDAJLyogdHJhY2Ugc3RhdGUgb2YgVFRZIGNvbnRyb2wgYml0cyAqLwotI2RlZmluZSBUUkFDRV9JQ0FMTFMJMHgwMjAwCS8qIHRyYWNlIGludGVybmFsL25lc3RlZCBjYWxscyAqLwotI2RlZmluZSBUUkFDRV9DQ0FMTFMJMHgwNDAwCS8qIHRyYWNlIHBlci1jaGFyYWN0ZXIgY2FsbHMgKi8KLSNkZWZpbmUgVFJBQ0VfREFUQUJBU0UJMHgwODAwCS8qIHRyYWNlIHJlYWQvd3JpdGUgb2YgdGVybWluZm8vdGVybWNhcCBkYXRhICovCi0jZGVmaW5lIFRSQUNFX0FUVFJTCTB4MTAwMAkvKiB0cmFjZSBhdHRyaWJ1dGUgdXBkYXRlcyAqLwotCi0jZGVmaW5lIFRSQUNFX1NISUZUCTEzCS8qIG51bWJlciBvZiBiaXRzIGluIHRoZSB0cmFjZSBtYXNrcyAqLwotI2RlZmluZSBUUkFDRV9NQVhJTVVNCSgoMSA8PCBUUkFDRV9TSElGVCkgLSAxKSAvKiBtYXhpbXVtIHRyYWNlIGxldmVsICovCi0KLSNpZiBkZWZpbmVkKFRSQUNFKSB8fCBkZWZpbmVkKE5DVVJTRVNfVEVTVCkKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBfbmNfb3B0aW1pemVfZW5hYmxlOwkJLyogZW5hYmxlIG9wdGltaXphdGlvbnMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopIF9uY192aXNidWYgKGNvbnN0IGNoYXIgKik7Ci0jZGVmaW5lIE9QVElNSVpFX01WQ1VSCQkweDAxCS8qIGN1cnNvciBtb3ZlbWVudCBvcHRpbWl6YXRpb24gKi8KLSNkZWZpbmUgT1BUSU1JWkVfSEFTSE1BUAkweDAyCS8qIGRpZmYgaGFzaGluZyB0byBkZXRlY3Qgc2Nyb2xscyAqLwotI2RlZmluZSBPUFRJTUlaRV9TQ1JPTEwJCTB4MDQJLyogc2Nyb2xsIG9wdGltaXphdGlvbiAqLwotI2RlZmluZSBPUFRJTUlaRV9BTEwJCTB4ZmYJLyogZW5hYmxlIGFsbCBvcHRpbWl6YXRpb25zIChkZmx0KSAqLwotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaWZuZGVmIE5DVVJTRVNfTk9NQUNST1MKLQotLyogdGhlc2UgbmFtZXMgY29uZmxpY3Qgd2l0aCBTVEwgKi8KLSN1bmRlZiBib3gKLSN1bmRlZiBjbGVhcgotI3VuZGVmIGVyYXNlCi0jdW5kZWYgbW92ZQotI3VuZGVmIHJlZnJlc2gKLQotI2VuZGlmIC8qIE5DVVJTRVNfTk9NQUNST1MgKi8KLQotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBfX05DVVJTRVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzX2NmZy5oIGIvaW5jbHVkZS9uY3Vyc2VzX2NmZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWExZDgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmN1cnNlc19jZmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0vKiBpbmNsdWRlL25jdXJzZXNfY2ZnLmguICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCi0gKiAkSWQ6IG5jdXJzZXNfY2ZnLmhpbix2IDEuNyAyMDA1LzAxLzAyIDAxOjI2OjU4IHRvbSBFeHAgJAotICoKLSAqIFRoaXMgaXMgYSB0ZW1wbGF0ZS1maWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlICJuY3Vyc2VzX2NmZy5oIiBmaWxlLgotICoKLSAqIFJhdGhlciB0aGFuIGxpc3QgZXZlcnkgZGVmaW5pdGlvbiwgdGhlIGNvbmZpZ3VyYXRpb24gc2NyaXB0IHN1YnN0aXR1dGVzIHRoZQotICogZGVmaW5pdGlvbnMgdGhhdCBpdCBmaW5kcyB1c2luZyAnc2VkJy4gIFlvdSBuZWVkIGEgcGF0Y2ggKG9yaWdpbmFsIGRhdGUKLSAqIDk3MTIyMikgdG8gYXV0b2NvbmYgMi4xMiBvciAyLjEzIHRvIGRvIHRoaXMuCi0gKgotICogU2VlOgotICoJaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2F1dG9jb25mLwotICoJZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYXV0b2NvbmYvCi0gKi8KLSNpZm5kZWYgTkNfQ09ORklHX0gKLSNkZWZpbmUgTkNfQ09ORklHX0gKLQotI2RlZmluZSBTWVNURU1fTkFNRSAiZWFiaSIKLSNkZWZpbmUgQ0NfSEFTX1BST1RPUyAxCi0jaWYgMAotdm9pZCBleGl0IChpbnQpOwotI2VuZGlmCi0jZGVmaW5lIEhBVkVfTE9OR19GSUxFX05BTUVTIDEKLSNkZWZpbmUgTUlYRURDQVNFX0ZJTEVOQU1FUyAxCi0jZGVmaW5lIFVTRV9EQVRBQkFTRSAxCi0jZGVmaW5lIFRFUk1JTkZPX0RJUlMgIi91c3IvbG9jYWwvc2hhcmUvdGVybWluZm8iCi0jZGVmaW5lIFRFUk1JTkZPICIvdXNyL2xvY2FsL3NoYXJlL3Rlcm1pbmZvIgotI2RlZmluZSBQVVJFX1RFUk1JTkZPIDEKLSNkZWZpbmUgVVNFX0hPTUVfVEVSTUlORk8gMQotI2RlZmluZSBVU0VfUk9PVF9FTlZJUk9OIDEKLSNkZWZpbmUgSEFWRV9SRU1PVkUgMQotI2RlZmluZSBIQVZFX1VOTElOSyAxCi0jZGVmaW5lIEhBVkVfTElOSyAxCi0jZGVmaW5lIEhBVkVfU1lNTElOSyAxCi0jZGVmaW5lIFVTRV9MSU5LUyAxCi0jZGVmaW5lIEhBVkVfRlNFRUtPIDEKLSNkZWZpbmUgSEFWRV9DVVJTRVNfVkVSU0lPTiAxCi0jZGVmaW5lIEhBVkVfSEFTX0tFWSAxCi0jZGVmaW5lIEhBVkVfUkVTSVpFVEVSTSAxCi0jZGVmaW5lIEhBVkVfUkVTSVpFX1RFUk0gMQotI2RlZmluZSBIQVZFX1VTRV9ERUZBVUxUX0NPTE9SUyAxCi0jZGVmaW5lIEhBVkVfV1JFU0laRSAxCi0jZGVmaW5lIE5DVVJTRVNfRVhUX0ZVTkNTIDEKLSNkZWZpbmUgTkNVUlNFU19OT19QQURESU5HIDEKLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLSNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCi0jZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotI2RlZmluZSBIQVZFX1NUUklOR19IIDEKLSNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCi0jZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKLSNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKLSNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCi0jZGVmaW5lIEhBVkVfVU5JU1REX0ggMQotI2RlZmluZSBTSVpFT0ZfU0lHTkVEX0NIQVIgMQotI2RlZmluZSBVU0VfU0lHV0lOQ0ggMQotI2RlZmluZSBVU0VfQVNTVU1FRF9DT0xPUiAxCi0jZGVmaW5lIFVTRV9IQVNITUFQIDEKLSNkZWZpbmUgR0NDX1NDQU5GIDEKLSNkZWZpbmUgR0NDX1BSSU5URiAxCi0jZGVmaW5lIEdDQ19VTlVTRUQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLSNkZWZpbmUgR0NDX05PUkVUVVJOIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKLSNkZWZpbmUgTkRFQlVHIDEKLSNkZWZpbmUgSEFWRV9OQ19BTExPQ19IIDEKLSNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQotI2RlZmluZSBTVERDX0hFQURFUlMgMQotI2RlZmluZSBIQVZFX0RJUkVOVF9IIDEKLSNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDEKLSNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLSNkZWZpbmUgSEFWRV9HRVRPUFRfSCAxCi0jZGVmaW5lIEhBVkVfTElNSVRTX0ggMQotI2RlZmluZSBIQVZFX1BPTExfSCAxCi0jZGVmaW5lIEhBVkVfU1lTX0lPQ1RMX0ggMQotI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKLSNkZWZpbmUgSEFWRV9TWVNfUE9MTF9IIDEKLSNkZWZpbmUgSEFWRV9TWVNfU0VMRUNUX0ggMQotI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMQotI2RlZmluZSBIQVZFX1NZU19USU1FU19IIDEKLSNkZWZpbmUgSEFWRV9VTklTVERfSCAxCi0jZGVmaW5lIEhBVkVfV0NUWVBFX0ggMQotI2RlZmluZSBIQVZFX1NZU19USU1FX1NFTEVDVCAxCi0jZGVmaW5lIFNJR19BVE9NSUNfVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QKLSNkZWZpbmUgVFlQRU9GX0NIVFlQRSBsb25nCi0jZGVmaW5lIEhBVkVfR0VUQ1dEIDEKLSNkZWZpbmUgSEFWRV9HRVRFR0lEIDEKLSNkZWZpbmUgSEFWRV9HRVRFVUlEIDEKLSNkZWZpbmUgSEFWRV9JU1NFVFVHSUQgMQotI2RlZmluZSBIQVZFX1BPTEwgMQotI2RlZmluZSBIQVZFX1JFTU9WRSAxCi0jZGVmaW5lIEhBVkVfU0VMRUNUIDEKLSNkZWZpbmUgSEFWRV9TRVRCVUYgMQotI2RlZmluZSBIQVZFX1NFVEJVRkZFUiAxCi0jZGVmaW5lIEhBVkVfU0VUVkJVRiAxCi0jZGVmaW5lIEhBVkVfU0lHQUNUSU9OIDEKLSNkZWZpbmUgSEFWRV9TVFJEVVAgMQotI2RlZmluZSBIQVZFX1NUUlNUUiAxCi0jZGVmaW5lIEhBVkVfVENHRVRQR1JQIDEKLSNkZWZpbmUgSEFWRV9USU1FUyAxCi0jZGVmaW5lIEhBVkVfVlNOUFJJTlRGIDEKLSNkZWZpbmUgSEFWRV9JU0FTQ0lJIDEKLSNkZWZpbmUgSEFWRV9URVJNSU9TX0ggMQotI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKLSNkZWZpbmUgSEFWRV9UQ0dFVEFUVFIgMQotI2RlZmluZSBIQVZFX1ZTU0NBTkYgMQotI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKLSNkZWZpbmUgSEFWRV9TSVpFQ0hBTkdFIDEKLSNkZWZpbmUgSEFWRV9JT1NUUkVBTSAxCi0jZGVmaW5lIEhBVkVfVFlQRUlORk8gMQotI2RlZmluZSBDUFBfSEFTX1NUQVRJQ19DQVNUIDEKLSNkZWZpbmUgSEFWRV9TTEtfQ09MT1IgMQotI2RlZmluZSBIQVZFX1BBTkVMX0ggMQotI2RlZmluZSBIQVZFX0xJQlBBTkVMIDEKLSNkZWZpbmUgSEFWRV9NRU5VX0ggMQotI2RlZmluZSBIQVZFX0xJQk1FTlUgMQotI2RlZmluZSBIQVZFX0ZPUk1fSCAxCi0jZGVmaW5lIEhBVkVfTElCRk9STSAxCi0jZGVmaW5lIE5DVVJTRVNfUEFUSFNFUCAnOicKLSNkZWZpbmUgTkNVUlNFU19WRVJTSU9OX1NUUklORyAiNS43LjIwMDgxMTAyIgotCi0jaW5jbHVkZSA8bmN1cnNlc19kZWYuaD4KLQotCS8qIFRoZSBDIGNvbXBpbGVyIG1heSBub3QgdHJlYXQgdGhlc2UgcHJvcGVybHkgYnV0IEMrKyBoYXMgdG8gKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotI3VuZGVmIGNvbnN0Ci0jdW5kZWYgaW5saW5lCi0jZWxzZQotI2lmIGRlZmluZWQobGludCkgfHwgZGVmaW5lZChUUkFDRSkKLSN1bmRlZiBpbmxpbmUKLSNkZWZpbmUgaW5saW5lIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotI2VuZGlmCi0KLQkvKiBPbiBIUC1VWCwgdGhlIEMgY29tcGlsZXIgZG9lc24ndCBncm9rIG1ic3RhdGVfdCB3aXRob3V0Ci0JICAgLURfWE9QRU5fU09VUkNFPTUwMC4gSG93ZXZlciwgdGhpcyBjYXVzZXMgcHJvYmxlbXMgb24KLQkgICBJUklYLiBTbywgd2UgI2RlZmluZSBtYnN0YXRlX3QgdG8gaW50IGluIGNvbmZpZ3VyZS5pbgotCSAgIG9ubHkgZm9yIHRoZSBDIGNvbXBpbGVyIGlmIG5lZWRlZC4gKi8KLSNpZm5kZWYgX19jcGx1c3BsdXMKLSNpZmRlZiBORUVEX01CU1RBVEVfVF9ERUYKLSNkZWZpbmUgbWJzdGF0ZV90IGludAotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8qIE5DX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25jdXJzZXNfZGVmLmggYi9pbmNsdWRlL25jdXJzZXNfZGVmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZDhkOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uY3Vyc2VzX2RlZi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzA4ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IC4vTUtuY3Vyc2VzX2RlZi5zaAotICovCi0KLSNpZm5kZWYgTkNfREVGSU5FX0gKLSNkZWZpbmUgTkNfREVGSU5FX0ggMQotCi0jaWZuZGVmIEJST0tFTl9MSU5LRVIKLSNkZWZpbmUgQlJPS0VOX0xJTktFUiAwCi0jZW5kaWYKLQotI2lmbmRlZiBCU0RfVFBVVFMKLSNkZWZpbmUgQlNEX1RQVVRTIDAKLSNlbmRpZgotCi0jaWZuZGVmIENDX0hBU19QUk9UT1MKLSNkZWZpbmUgQ0NfSEFTX1BST1RPUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBDUFBfSEFTX1BBUkFNX0lOSVQKLSNkZWZpbmUgQ1BQX0hBU19QQVJBTV9JTklUIDAKLSNlbmRpZgotCi0jaWZuZGVmIENVUlNFU19BQ1NfQVJSQVkKLSNkZWZpbmUgQ1VSU0VTX0FDU19BUlJBWSBhY3NfbWFwCi0jZW5kaWYKLQotI2lmbmRlZiBDVVJTRVNfV0FDU19BUlJBWQotI2RlZmluZSBDVVJTRVNfV0FDU19BUlJBWSBfbmNfd2FjcwotI2VuZGlmCi0KLSNpZm5kZWYgREVDTF9FUlJOTwotI2RlZmluZSBERUNMX0VSUk5PIDAKLSNlbmRpZgotCi0jaWZuZGVmIEVUSVBfTkVFRFNfTUFUSF9ICi0jZGVmaW5lIEVUSVBfTkVFRFNfTUFUSF9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEdDQ19OT1JFVFVSTgotI2RlZmluZSBHQ0NfTk9SRVRVUk4gLyogbm90aGluZyAqLwotI2VuZGlmCi0KLSNpZm5kZWYgR0NDX1VOVVNFRAotI2RlZmluZSBHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfQklHX0NPUkUKLSNkZWZpbmUgSEFWRV9CSUdfQ09SRSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0JTRF9DR0VURU5UCi0jZGVmaW5lIEhBVkVfQlNEX0NHRVRFTlQgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9CU0RfU0lHTkFMX0gKLSNkZWZpbmUgSEFWRV9CU0RfU0lHTkFMX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9CVE9XQwotI2RlZmluZSBIQVZFX0JUT1dDIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfQlVJTFRJTl9ICi0jZGVmaW5lIEhBVkVfQlVJTFRJTl9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfQ0hHQVQKLSNkZWZpbmUgSEFWRV9DSEdBVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0NPTE9SX1NFVAotI2RlZmluZSBIQVZFX0NPTE9SX1NFVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0RJUkVOVF9ICi0jZGVmaW5lIEhBVkVfRElSRU5UX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9FUlJOTwotI2RlZmluZSBIQVZFX0VSUk5PIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfRkNOVExfSAotI2RlZmluZSBIQVZFX0ZDTlRMX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9GSUxURVIKLSNkZWZpbmUgSEFWRV9GSUxURVIgMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9GT1JNX0gKLSNkZWZpbmUgSEFWRV9GT1JNX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRCRUdYCi0jZGVmaW5lIEhBVkVfR0VUQkVHWCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0dFVENVUlgKLSNkZWZpbmUgSEFWRV9HRVRDVVJYIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfR0VUQ1dECi0jZGVmaW5lIEhBVkVfR0VUQ1dEIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfR0VURUdJRAotI2RlZmluZSBIQVZFX0dFVEVHSUQgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRFVUlECi0jZGVmaW5lIEhBVkVfR0VURVVJRCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0dFVE1BWFgKLSNkZWZpbmUgSEFWRV9HRVRNQVhYIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfR0VUTlNUUgotI2RlZmluZSBIQVZFX0dFVE5TVFIgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRPUFRfSAotI2RlZmluZSBIQVZFX0dFVE9QVF9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfR0VUUEFSWAotI2RlZmluZSBIQVZFX0dFVFBBUlggMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkKLSNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRUVFlOQU0KLSNkZWZpbmUgSEFWRV9HRVRUVFlOQU0gMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HRVRXSU4KLSNkZWZpbmUgSEFWRV9HRVRXSU4gMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HUE1fSAotI2RlZmluZSBIQVZFX0dQTV9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfR1BQX0JVSUxUSU5fSAotI2RlZmluZSBIQVZFX0dQUF9CVUlMVElOX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9HWFhfQlVJTFRJTl9ICi0jZGVmaW5lIEhBVkVfR1hYX0JVSUxUSU5fSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0hBU19LRVkKLSNkZWZpbmUgSEFWRV9IQVNfS0VZIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfSU9TVFJFQU0KLSNkZWZpbmUgSEFWRV9JT1NUUkVBTSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0lTQVNDSUkKLSNkZWZpbmUgSEFWRV9JU0FTQ0lJIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfSVNTRVRVR0lECi0jZGVmaW5lIEhBVkVfSVNTRVRVR0lEIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAotI2RlZmluZSBIQVZFX0xBTkdJTkZPX0NPREVTRVQgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9MSUJDX0gKLSNkZWZpbmUgSEFWRV9MSUJDX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9MSUJEQk1BTExPQwotI2RlZmluZSBIQVZFX0xJQkRCTUFMTE9DIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTElCRE1BTExPQwotI2RlZmluZSBIQVZFX0xJQkRNQUxMT0MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9MSUJGT1JNCi0jZGVmaW5lIEhBVkVfTElCRk9STSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0xJQkdQTQotI2RlZmluZSBIQVZFX0xJQkdQTSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0xJQk1FTlUKLSNkZWZpbmUgSEFWRV9MSUJNRU5VIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTElCTVBBVFJPTAotI2RlZmluZSBIQVZFX0xJQk1QQVRST0wgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9MSUJQQU5FTAotI2RlZmluZSBIQVZFX0xJQlBBTkVMIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTElNSVRTX0gKLSNkZWZpbmUgSEFWRV9MSU1JVFNfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0xJTksKLSNkZWZpbmUgSEFWRV9MSU5LIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTE9DQUxFX0gKLSNkZWZpbmUgSEFWRV9MT0NBTEVfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0xPTkdfRklMRV9OQU1FUwotI2RlZmluZSBIQVZFX0xPTkdfRklMRV9OQU1FUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX01CTEVOCi0jZGVmaW5lIEhBVkVfTUJMRU4gMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NQlJMRU4KLSNkZWZpbmUgSEFWRV9NQlJMRU4gMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NQlJUT1dDCi0jZGVmaW5lIEhBVkVfTUJSVE9XQyAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX01CU1JUT1dDUwotI2RlZmluZSBIQVZFX01CU1JUT1dDUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX01CU1RPV0NTCi0jZGVmaW5lIEhBVkVfTUJTVE9XQ1MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NQlRPV0MKLSNkZWZpbmUgSEFWRV9NQlRPV0MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NRU5VX0gKLSNkZWZpbmUgSEFWRV9NRU5VX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NS1NURU1QCi0jZGVmaW5lIEhBVkVfTUtTVEVNUCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX01WVkxJTkUKLSNkZWZpbmUgSEFWRV9NVlZMSU5FIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTVZXVkxJTkUKLSNkZWZpbmUgSEFWRV9NVldWTElORSAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX05BTk9TTEVFUAotI2RlZmluZSBIQVZFX05BTk9TTEVFUCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX05DX0FMTE9DX0gKLSNkZWZpbmUgSEFWRV9OQ19BTExPQ19IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfUEFORUxfSAotI2RlZmluZSBIQVZFX1BBTkVMX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9QT0xMCi0jZGVmaW5lIEhBVkVfUE9MTCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1BPTExfSAotI2RlZmluZSBIQVZFX1BPTExfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1BVUklGWQotI2RlZmluZSBIQVZFX1BVUklGWSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1BVVFdDCi0jZGVmaW5lIEhBVkVfUFVUV0MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9QVVRXSU4KLSNkZWZpbmUgSEFWRV9QVVRXSU4gMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9SRUdFWFBSX0hfRlVOQ1MKLSNkZWZpbmUgSEFWRV9SRUdFWFBSX0hfRlVOQ1MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9SRUdFWFBfSF9GVU5DUwotI2RlZmluZSBIQVZFX1JFR0VYUF9IX0ZVTkNTIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfUkVHRVhfSF9GVU5DUwotI2RlZmluZSBIQVZFX1JFR0VYX0hfRlVOQ1MgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9SRU1PVkUKLSNkZWZpbmUgSEFWRV9SRU1PVkUgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9SRVNJWkVURVJNCi0jZGVmaW5lIEhBVkVfUkVTSVpFVEVSTSAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1JFU0laRV9URVJNCi0jZGVmaW5lIEhBVkVfUkVTSVpFX1RFUk0gMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9SSVBPRkZMSU5FCi0jZGVmaW5lIEhBVkVfUklQT0ZGTElORSAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NFTEVDVAotI2RlZmluZSBIQVZFX1NFTEVDVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NFVEJVRgotI2RlZmluZSBIQVZFX1NFVEJVRiAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NFVEJVRkZFUgotI2RlZmluZSBIQVZFX1NFVEJVRkZFUiAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NFVFVQVEVSTQotI2RlZmluZSBIQVZFX1NFVFVQVEVSTSAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NFVFZCVUYKLSNkZWZpbmUgSEFWRV9TRVRWQlVGIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU0lHQUNUSU9OCi0jZGVmaW5lIEhBVkVfU0lHQUNUSU9OIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU0lHVkVDCi0jZGVmaW5lIEhBVkVfU0lHVkVDIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU0laRUNIQU5HRQotI2RlZmluZSBIQVZFX1NJWkVDSEFOR0UgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9TTEtfQ09MT1IKLSNkZWZpbmUgSEFWRV9TTEtfQ09MT1IgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9TTEtfSU5JVAotI2RlZmluZSBIQVZFX1NMS19JTklUIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU1RSRFVQCi0jZGVmaW5lIEhBVkVfU1RSRFVQIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU1RSU1RSCi0jZGVmaW5lIEhBVkVfU1RSU1RSIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU1lNTElOSwotI2RlZmluZSBIQVZFX1NZTUxJTksgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9TWVNfQlNEVFlQRVNfSAotI2RlZmluZSBIQVZFX1NZU19CU0RUWVBFU19IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfU1lTX0lPQ1RMX0gKLSNkZWZpbmUgSEFWRV9TWVNfSU9DVExfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9TWVNfUE9MTF9ICi0jZGVmaW5lIEhBVkVfU1lTX1BPTExfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NZU19TRUxFQ1RfSAotI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NZU19URVJNSU9fSAotI2RlZmluZSBIQVZFX1NZU19URVJNSU9fSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NZU19USU1FU19ICi0jZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9TWVNfVElNRV9ICi0jZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1NZU19USU1FX1NFTEVDVAotI2RlZmluZSBIQVZFX1NZU19USU1FX1NFTEVDVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RDR0VUQVRUUgotI2RlZmluZSBIQVZFX1RDR0VUQVRUUiAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RDR0VUUEdSUAotI2RlZmluZSBIQVZFX1RDR0VUUEdSUCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RFTEwKLSNkZWZpbmUgSEFWRV9URUxMIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVEVSTUFUVFJTCi0jZGVmaW5lIEhBVkVfVEVSTUFUVFJTIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVEVSTUlPU19ICi0jZGVmaW5lIEhBVkVfVEVSTUlPU19IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVEVSTUlPX0gKLSNkZWZpbmUgSEFWRV9URVJNSU9fSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RFUk1OQU1FCi0jZGVmaW5lIEhBVkVfVEVSTU5BTUUgMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9URVJNX0gKLSNkZWZpbmUgSEFWRV9URVJNX0ggMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9UR0VURU5UCi0jZGVmaW5lIEhBVkVfVEdFVEVOVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RJR0VUTlVNCi0jZGVmaW5lIEhBVkVfVElHRVROVU0gMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9USUdFVFNUUgotI2RlZmluZSBIQVZFX1RJR0VUU1RSIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVElNRVMKLSNkZWZpbmUgSEFWRV9USU1FUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RUWUVOVF9ICi0jZGVmaW5lIEhBVkVfVFRZRU5UX0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9UWVBFQUhFQUQKLSNkZWZpbmUgSEFWRV9UWVBFQUhFQUQgMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9UWVBFSU5GTwotI2RlZmluZSBIQVZFX1RZUEVJTkZPIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVFlQRV9BVFRSX1QKLSNkZWZpbmUgSEFWRV9UWVBFX0FUVFJfVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1RZUEVfU0lHQUNUSU9OCi0jZGVmaW5lIEhBVkVfVFlQRV9TSUdBQ1RJT04gMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9VTklTVERfSAotI2RlZmluZSBIQVZFX1VOSVNURF9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVU5MSU5LCi0jZGVmaW5lIEhBVkVfVU5MSU5LIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCi0jZGVmaW5lIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVkZTQ0FORgotI2RlZmluZSBIQVZFX1ZGU0NBTkYgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9WU05QUklOVEYKLSNkZWZpbmUgSEFWRV9WU05QUklOVEYgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9WU1NDQU5GCi0jZGVmaW5lIEhBVkVfVlNTQ0FORiAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1dDU1JUT01CUwotI2RlZmluZSBIQVZFX1dDU1JUT01CUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1dDU1RPTUJTCi0jZGVmaW5lIEhBVkVfV0NTVE9NQlMgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9XQ1RPQgotI2RlZmluZSBIQVZFX1dDVE9CIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfV0NUT01CCi0jZGVmaW5lIEhBVkVfV0NUT01CIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfV0NUWVBFX0gKLSNkZWZpbmUgSEFWRV9XQ1RZUEVfSCAwCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1dJTlNTVFIKLSNkZWZpbmUgSEFWRV9XSU5TU1RSIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfV09SS0lOR19QT0xMCi0jZGVmaW5lIEhBVkVfV09SS0lOR19QT0xMIDAKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfV1JFU0laRQotI2RlZmluZSBIQVZFX1dSRVNJWkUgMAotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9fRE9TQ0FOCi0jZGVmaW5lIEhBVkVfX0RPU0NBTiAwCi0jZW5kaWYKLQotI2lmbmRlZiBNSVhFRENBU0VfRklMRU5BTUVTCi0jZGVmaW5lIE1JWEVEQ0FTRV9GSUxFTkFNRVMgMAotI2VuZGlmCi0KLSNpZm5kZWYgTkNVUlNFU19DSEFSX0VRCi0jZGVmaW5lIE5DVVJTRVNfQ0hBUl9FUSAwCi0jZW5kaWYKLQotI2lmbmRlZiBOQ1VSU0VTX0VYUEFOREVECi0jZGVmaW5lIE5DVVJTRVNfRVhQQU5ERUQgMAotI2VuZGlmCi0KLSNpZm5kZWYgTkNVUlNFU19FWFRfQ09MT1JTCi0jZGVmaW5lIE5DVVJTRVNfRVhUX0NPTE9SUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBOQ1VSU0VTX0VYVF9GVU5DUwotI2RlZmluZSBOQ1VSU0VTX0VYVF9GVU5DUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBOQ1VSU0VTX05PX1BBRERJTkcKLSNkZWZpbmUgTkNVUlNFU19OT19QQURESU5HIDAKLSNlbmRpZgotCi0jaWZuZGVmIE5DVVJTRVNfUEFUSFNFUAotI2RlZmluZSBOQ1VSU0VTX1BBVEhTRVAgJzonCi0jZW5kaWYKLQotI2lmbmRlZiBOREVCVUcKLSNkZWZpbmUgTkRFQlVHIDAKLSNlbmRpZgotCi0jaWZuZGVmIE5FRURfUFRFTV9ICi0jZGVmaW5lIE5FRURfUFRFTV9IIDAKLSNlbmRpZgotCi0jaWZuZGVmIE5PX0xFQUtTCi0jZGVmaW5lIE5PX0xFQUtTIDAKLSNlbmRpZgotCi0jaWZuZGVmIFBVUkVfVEVSTUlORk8KLSNkZWZpbmUgUFVSRV9URVJNSU5GTyAwCi0jZW5kaWYKLQotI2lmbmRlZiBSRVRTSUdUWVBFCi0jZGVmaW5lIFJFVFNJR1RZUEUgMAotI2VuZGlmCi0KLSNpZm5kZWYgU1REQ19IRUFERVJTCi0jZGVmaW5lIFNURENfSEVBREVSUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBTVlI0X0FDVElPTgotI2RlZmluZSBTVlI0X0FDVElPTiAwCi0jZW5kaWYKLQotI2lmbmRlZiBTVlI0X1RFUk1JTwotI2RlZmluZSBTVlI0X1RFUk1JTyAwCi0jZW5kaWYKLQotI2lmbmRlZiBTWVNURU1fTkFNRQotI2RlZmluZSBTWVNURU1fTkFNRSAidW5rbm93biIKLSNlbmRpZgotCi0jaWZuZGVmIFRFUk1JTkZPCi0jZGVmaW5lIFRFUk1JTkZPICJub25lIgotI2VuZGlmCi0KLSNpZm5kZWYgVEVSTVBBVEgKLSNkZWZpbmUgVEVSTVBBVEggIm5vbmUiCi0jZW5kaWYKLQotI2lmbmRlZiBUSU1FX1dJVEhfU1lTX1RJTUUKLSNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDAKLSNlbmRpZgotCi0jaWZuZGVmIFRZUEVPRl9DSFRZUEUKLSNkZWZpbmUgVFlQRU9GX0NIVFlQRSAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfQ09MT1JGR0JHCi0jZGVmaW5lIFVTRV9DT0xPUkZHQkcgMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX0RBVEFCQVNFCi0jZGVmaW5lIFVTRV9EQVRBQkFTRSAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfR0VUQ0FQCi0jZGVmaW5lIFVTRV9HRVRDQVAgMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX0dFVENBUF9DQUNIRQotI2RlZmluZSBVU0VfR0VUQ0FQX0NBQ0hFIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9IQVJEX1RBQlMKLSNkZWZpbmUgVVNFX0hBUkRfVEFCUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfSEFTSEVEX0RCCi0jZGVmaW5lIFVTRV9IQVNIRURfREIgMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX0hBU0hNQVAKLSNkZWZpbmUgVVNFX0hBU0hNQVAgMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX0hPTUVfVEVSTUlORk8KLSNkZWZpbmUgVVNFX0hPTUVfVEVSTUlORk8gMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX0xJTktTCi0jZGVmaW5lIFVTRV9MSU5LUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfTVlfTUVNTU9WRQotI2RlZmluZSBVU0VfTVlfTUVNTU9WRSAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfT0tfQkNPUFkKLSNkZWZpbmUgVVNFX09LX0JDT1BZIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9SQ1NfSURTCi0jZGVmaW5lIFVTRV9SQ1NfSURTIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9SRUVOVFJBTlQKLSNkZWZpbmUgVVNFX1JFRU5UUkFOVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfU0FGRV9TUFJJTlRGCi0jZGVmaW5lIFVTRV9TQUZFX1NQUklOVEYgMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX1NDUk9MTF9ISU5UUwotI2RlZmluZSBVU0VfU0NST0xMX0hJTlRTIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9TSUdXSU5DSAotI2RlZmluZSBVU0VfU0lHV0lOQ0ggMAotI2VuZGlmCi0KLSNpZm5kZWYgVVNFX1NZTUxJTktTCi0jZGVmaW5lIFVTRV9TWU1MSU5LUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfU1lTTU9VU0UKLSNkZWZpbmUgVVNFX1NZU01PVVNFIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9URVJNQ0FQCi0jZGVmaW5lIFVTRV9URVJNQ0FQIDAKLSNlbmRpZgotCi0jaWZuZGVmIFVTRV9XRUFLX1NZTUJPTFMKLSNkZWZpbmUgVVNFX1dFQUtfU1lNQk9MUyAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfV0lERUNfU1VQUE9SVAotI2RlZmluZSBVU0VfV0lERUNfU1VQUE9SVCAwCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VfWE1DX1NVUFBPUlQKLSNkZWZpbmUgVVNFX1hNQ19TVVBQT1JUIDAKLSNlbmRpZgotCi0jZW5kaWYgLyogTkNfREVGSU5FX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmN1cnNlc19kZWZzIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKaW5kZXggOTdhMzc3ZC4uZWZhZjYzNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKKysrIGIvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKQEAgLTEsNiArMSw2IEBACi0jICRJZDogbmN1cnNlc19kZWZzLHYgMS40MCAyMDA4LzA5LzA2IDE1OjU3OjQxIHRvbSBFeHAgJAorIyAkSWQ6IG5jdXJzZXNfZGVmcyx2IDEuNjkgMjAxNS8wMy8yNyAxMDo0NzozMSB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMjAwMC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTMzLDcgKzMzLDcgQEAKIAogQlJPS0VOX0xJTktFUgogQlNEX1RQVVRTCi1DQ19IQVNfUFJPVE9TCitDR0VURU5UX0NPTlNUCS8qIG5vdGhpbmcgKi8KIENQUF9IQVNfUEFSQU1fSU5JVAogQ1VSU0VTX0FDU19BUlJBWQlhY3NfbWFwCiBDVVJTRVNfV0FDU19BUlJBWQlfbmNfd2FjcwpAQCAtNDEsNiArNDEsNyBAQAogRVRJUF9ORUVEU19NQVRIX0gKIEdDQ19OT1JFVFVSTgkvKiBub3RoaW5nICovCiBHQ0NfVU5VU0VECS8qIG5vdGhpbmcgKi8KK0hBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCiBIQVZFX0JJR19DT1JFCiBIQVZFX0JTRF9DR0VURU5UCiBIQVZFX0JTRF9TSUdOQUxfSApAQCAtNjksNiArNzAsNyBAQAogSEFWRV9HUFBfQlVJTFRJTl9ICiBIQVZFX0dYWF9CVUlMVElOX0gKIEhBVkVfSEFTX0tFWQorSEFWRV9JTlRUWVBFU19ICiBIQVZFX0lPU1RSRUFNCiBIQVZFX0lTQVNDSUkKIEhBVkVfSVNTRVRVR0lECkBAIC04NSw2ICs4Nyw3IEBACiBIQVZFX0xJTksKIEhBVkVfTE9DQUxFX0gKIEhBVkVfTE9OR19GSUxFX05BTUVTCitIQVZFX01BVEhfSAogSEFWRV9NQkxFTgogSEFWRV9NQlJMRU4KIEhBVkVfTUJSVE9XQwpAQCAtMTAxLDYgKzEwNCw3IEBACiBIQVZFX1BPTEwKIEhBVkVfUE9MTF9ICiBIQVZFX1BVUklGWQorSEFWRV9QVVRFTlYKIEhBVkVfUFVUV0MgCiBIQVZFX1BVVFdJTgkxCiBIQVZFX1JFR0VYUFJfSF9GVU5DUwpAQCAtMTEwLDE3ICsxMTQsMjQgQEAKIEhBVkVfUkVTSVpFVEVSTQogSEFWRV9SRVNJWkVfVEVSTQogSEFWRV9SSVBPRkZMSU5FCTEKK0hBVkVfU0NSX0RVTVAgMQogSEFWRV9TRUxFQ1QKIEhBVkVfU0VUQlVGCiBIQVZFX1NFVEJVRkZFUgorSEFWRV9TRVRFTlYKIEhBVkVfU0VUVVBURVJNCTEKIEhBVkVfU0VUVkJVRgorSEFWRV9TR1RUWV9ICiBIQVZFX1NJR0FDVElPTgogSEFWRV9TSUdWRUMKIEhBVkVfU0laRUNIQU5HRQogSEFWRV9TTEtfQ09MT1IKIEhBVkVfU0xLX0lOSVQJMQorSEFWRV9TTlBSSU5URgorSEFWRV9TVERJTlRfSAogSEFWRV9TVFJEVVAKK0hBVkVfU1RSTENBVAorSEFWRV9TVFJMQ1BZCiBIQVZFX1NUUlNUUgogSEFWRV9TWU1MSU5LCiBIQVZFX1NZU19CU0RUWVBFU19ICkBAIC0xMzksNiArMTUwLDcgQEAKIEhBVkVfVEVSTUlPU19ICiBIQVZFX1RFUk1JT19ICiBIQVZFX1RFUk1OQU1FCTEKK0hBVkVfVEVSTV9FTlRSWV9ICTEKIEhBVkVfVEVSTV9ICTEKIEhBVkVfVEdFVEVOVAkxCiBIQVZFX1RJR0VUTlVNCTEKQEAgLTE0OSwxMCArMTYxLDE3IEBACiBIQVZFX1RZUEVJTkZPCiBIQVZFX1RZUEVfQVRUUl9UCiBIQVZFX1RZUEVfU0lHQUNUSU9OCitIQVZFX1VOQ1RSTF9ICTEKIEhBVkVfVU5JU1REX0gKIEhBVkVfVU5MSU5LCiBIQVZFX1VTRV9ERUZBVUxUX0NPTE9SUworSEFWRV9VU0VfRU5WCTEKK0hBVkVfVVNFX0VYVEVOREVEX05BTUVTCitIQVZFX1VTRV9TQ1JFRU4KK0hBVkVfVVNFX1dJTkRPVwogSEFWRV9WRlNDQU5GCitIQVZFX1ZJRFBVVFMJMQorSEFWRV9WSURfUFVUUwkxCiBIQVZFX1ZTTlBSSU5URgogSEFWRV9WU1NDQU5GCiBIQVZFX1dDU1JUT01CUwpAQCAtMTYzLDE5ICsxODIsMjEgQEAKIEhBVkVfV0lOU1NUUgkxCiBIQVZFX1dPUktJTkdfUE9MTAogSEFWRV9XUkVTSVpFCitIQVZFX1dTWU5DRE9XTgkxCiBIQVZFX19ET1NDQU4KIE1JWEVEQ0FTRV9GSUxFTkFNRVMKIE5DVVJTRVNfQ0hBUl9FUQogTkNVUlNFU19FWFBBTkRFRAogTkNVUlNFU19FWFRfQ09MT1JTCiBOQ1VSU0VTX0VYVF9GVU5DUworTkNVUlNFU19FWFRfUFVUV0lOCiBOQ1VSU0VTX05PX1BBRERJTkcKK05DVVJTRVNfT1NQRUVEX0NPTVBBVAogTkNVUlNFU19QQVRIU0VQCSc6JwotTkRFQlVHCitOQ1VSU0VTX1dJREVDSEFSCiBORUVEX1BURU1fSAogTk9fTEVBS1MKIFBVUkVfVEVSTUlORk8KLVJFVFNJR1RZUEUKIFNURENfSEVBREVSUwogU1ZSNF9BQ1RJT04KIFNWUjRfVEVSTUlPCkBAIC0xODUsNyArMjA2LDYgQEAKIFRJTUVfV0lUSF9TWVNfVElNRQogVFlQRU9GX0NIVFlQRQogVVNFX0NPTE9SRkdCRwotVVNFX0RBVEFCQVNFCiBVU0VfR0VUQ0FQCiBVU0VfR0VUQ0FQX0NBQ0hFCiBVU0VfSEFSRF9UQUJTCkBAIC0xOTUsMTQgKzIxNSwxNSBAQAogVVNFX0xJTktTCiBVU0VfTVlfTUVNTU9WRQogVVNFX09LX0JDT1BZCitVU0VfUFRIUkVBRFNfRUlOVFIKIFVTRV9SQ1NfSURTCiBVU0VfUkVFTlRSQU5UCiBVU0VfU0FGRV9TUFJJTlRGCiBVU0VfU0NST0xMX0hJTlRTCiBVU0VfU0lHV0lOQ0gKK1VTRV9TVFJJTkdfSEFDS1MKIFVTRV9TWU1MSU5LUwogVVNFX1NZU01PVVNFCi1VU0VfVEVSTUNBUAogVVNFX1dFQUtfU1lNQk9MUwogVVNFX1dJREVDX1NVUFBPUlQKIFVTRV9YTUNfU1VQUE9SVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzX2RsbC5oIGIvaW5jbHVkZS9uY3Vyc2VzX2RsbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjRmZWVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmN1cnNlc19kbGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgotICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCi0gKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKLSAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCi0gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKLSAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCi0gKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgotICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgotICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKLSAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCi0gKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAkSWQ6IG5jdXJzZXNfZGxsLmgsdiAxLjYgMjAwNy8wMy8xMCAxOToyMTo0OSB0b20gRXhwICQgKi8KLQotI2lmbmRlZiBOQ1VSU0VTX0RMTF9IX2luY2wKLSNkZWZpbmUgTkNVUlNFU19ETExfSF9pbmNsIDEKLQotLyogbm8gbG9uZ2VyIG5lZWRlZCBvbiBjeWd3aW4gb3IgbWluZ3csIHRoYW5rcyB0byBhdXRvLWltcG9ydCAgICAgICAqLwotLyogYnV0IHRoaXMgc3RydWN0dXJlIG1heSBiZSB1c2VmdWwgYXQgc29tZSBwb2ludCBmb3IgYW4gTVNWQyBidWlsZCAqLwotLyogc28sIGZvciBub3cgdW5jb25kaXRpb25hbGx5IGRlZmluZSB0aGUgaW1wb3J0YW50IGZsYWdzICAgICAgICAgICAqLwotLyogInRoZSByaWdodCB3YXkiIGZvciBwcm9wZXIgc3RhdGljIGFuZCBkbGwrYXV0by1pbXBvcnQgYmVoYXZpb3IgICAqLwotI3VuZGVmIE5DVVJTRVNfRExMCi0jZGVmaW5lIE5DVVJTRVNfU1RBVElDCi0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBpZiBkZWZpbmVkKE5DVVJTRVNfRExMKQotIyAgICBpZiBkZWZpbmVkKE5DVVJTRVNfU1RBVElDKQotIyAgICAgIHVuZGVmIE5DVVJTRVNfU1RBVElDCi0jICAgIGVuZGlmCi0jICBlbmRpZgotIyAgdW5kZWYgTkNVUlNFU19JTVBFWFAKLSMgIHVuZGVmIE5DVVJTRVNfQVBJCi0jICB1bmRlZiBOQ1VSU0VTX0VYUE9SVAotIyAgdW5kZWYgTkNVUlNFU19FWFBPUlRfVkFSCi0jICBpZiBkZWZpbmVkKE5DVVJTRVNfRExMKQotLyogYnVpbGRpbmcgYSBETEwgKi8KLSMgICAgZGVmaW5lIE5DVVJTRVNfSU1QRVhQIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZWxpZiBkZWZpbmVkKE5DVVJTRVNfU1RBVElDKQotLyogYnVpbGRpbmcgb3IgbGlua2luZyB0byBhIHN0YXRpYyBsaWJyYXJ5ICovCi0jICAgIGRlZmluZSBOQ1VSU0VTX0lNUEVYUCAvKiBub3RoaW5nICovCi0jICBlbHNlCi0vKiBsaW5raW5nIHRvIHRoZSBETEwgKi8KLSMgICAgZGVmaW5lIE5DVVJTRVNfSU1QRVhQIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZW5kaWYKLSMgIGRlZmluZSBOQ1VSU0VTX0FQSSBfX2NkZWNsCi0jICBkZWZpbmUgTkNVUlNFU19FWFBPUlQodHlwZSkgTkNVUlNFU19JTVBFWFAgdHlwZSBOQ1VSU0VTX0FQSQotIyAgZGVmaW5lIE5DVVJTRVNfRVhQT1JUX1ZBUih0eXBlKSBOQ1VSU0VTX0lNUEVYUCB0eXBlCi0jZW5kaWYKLQotLyogVGFrZSBjYXJlIG9mIG5vbi1jeWd3aW4gcGxhdGZvcm1zICovCi0jaWYgIWRlZmluZWQoTkNVUlNFU19JTVBFWFApCi0jICBkZWZpbmUgTkNVUlNFU19JTVBFWFAgLyogbm90aGluZyAqLwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkNVUlNFU19BUEkpCi0jICBkZWZpbmUgTkNVUlNFU19BUEkgLyogbm90aGluZyAqLwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkNVUlNFU19FWFBPUlQpCi0jICBkZWZpbmUgTkNVUlNFU19FWFBPUlQodHlwZSkgTkNVUlNFU19JTVBFWFAgdHlwZSBOQ1VSU0VTX0FQSQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkNVUlNFU19FWFBPUlRfVkFSKQotIyAgZGVmaW5lIE5DVVJTRVNfRVhQT1JUX1ZBUih0eXBlKSBOQ1VSU0VTX0lNUEVYUCB0eXBlCi0jZW5kaWYKLQotLyoKLSAqIEZvciByZWVudHJhbnQgY29kZSwgd2UgbWFwIHRoZSB2YXJpb3VzIGdsb2JhbCB2YXJpYWJsZXMgaW50byBTQ1JFRU4gYnkKLSAqIHVzaW5nIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhlbS4KLSAqLwotI2RlZmluZSBOQ1VSU0VTX1BVQkxJQ19WQVIobmFtZSkgX25jXyMjbmFtZQotI2RlZmluZSBOQ1VSU0VTX1dSQVBQRURfVkFSKHR5cGUsbmFtZSkgZXh0ZXJuIHR5cGUgTkNVUlNFU19QVUJMSUNfVkFSKG5hbWUpKHZvaWQpCi0KLSNlbmRpZiAvKiBOQ1VSU0VTX0RMTF9IX2luY2wgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmN1cnNlc19kbGwuaC5pbiBiL2luY2x1ZGUvbmN1cnNlc19kbGwuaC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzY4NTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uY3Vyc2VzX2RsbC5oLmluCkBAIC0wLDAgKzEsMTAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogJElkOiBuY3Vyc2VzX2RsbC5oLmluLHYgMS45IDIwMTQvMDgvMDIgMjE6MzA6MjAgdG9tIEV4cCAkICovCisKKyNpZm5kZWYgTkNVUlNFU19ETExfSF9pbmNsCisjZGVmaW5lIE5DVVJTRVNfRExMX0hfaW5jbCAxCisKKy8qIDIwMTQtMDgtMDIgd29ya2Fyb3VuZCBmb3IgYnJva2VuIE1pbkdXIGNvbXBpbGVyLgorICogT2RkbHksIG9ubHkgVFJBQ0UgaXMgbWFwcGVkIHRvIHRyYWNlIC0gdGhlIG90aGVyIC1EJ3MgYXJlIG9rYXkuCisgKiBzdWdnZXN0IFRETSBhcyBhbiBhbHRlcm5hdGl2ZS4KKyAqLworI2lmIGRlZmluZWQoX19NSU5HVzY0X18pCisjZWxpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorI2lmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPT0gOCkKKworI2lmZGVmIHRyYWNlCisjdW5kZWYgdHJhY2UKKyNkZWZpbmUgVFJBQ0UKKyNlbmRpZgorCisjZW5kaWYJLyogYnJva2VuIGNvbXBpbGVyICovCisjZW5kaWYJLyogTWluZ1cgKi8KKworLyoKKyAqIEZvciByZWVudHJhbnQgY29kZSwgd2UgbWFwIHRoZSB2YXJpb3VzIGdsb2JhbCB2YXJpYWJsZXMgaW50byBTQ1JFRU4gYnkKKyAqIHVzaW5nIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhlbS4KKyAqLworI2RlZmluZSBOQ1VSU0VTX1BVQkxJQ19WQVIobmFtZSkgQE5DVVJTRVNfV1JBUF9QUkVGSVhAIyNuYW1lCisjZGVmaW5lIE5DVVJTRVNfV1JBUFBFRF9WQVIodHlwZSxuYW1lKSBleHRlcm4gdHlwZSBOQ1VSU0VTX1BVQkxJQ19WQVIobmFtZSkodm9pZCkKKworLyogbm8gbG9uZ2VyIG5lZWRlZCBvbiBjeWd3aW4gb3IgbWluZ3csIHRoYW5rcyB0byBhdXRvLWltcG9ydCAgICAgICAqLworLyogYnV0IHRoaXMgc3RydWN0dXJlIG1heSBiZSB1c2VmdWwgYXQgc29tZSBwb2ludCBmb3IgYW4gTVNWQyBidWlsZCAqLworLyogc28sIGZvciBub3cgdW5jb25kaXRpb25hbGx5IGRlZmluZSB0aGUgaW1wb3J0YW50IGZsYWdzICAgICAgICAgICAqLworLyogInRoZSByaWdodCB3YXkiIGZvciBwcm9wZXIgc3RhdGljIGFuZCBkbGwrYXV0by1pbXBvcnQgYmVoYXZpb3IgICAqLworI3VuZGVmIE5DVVJTRVNfRExMCisjZGVmaW5lIE5DVVJTRVNfU1RBVElDCisKKyNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19NSU5HVzMyX18pCisjICBpZiBkZWZpbmVkKE5DVVJTRVNfRExMKQorIyAgICBpZiBkZWZpbmVkKE5DVVJTRVNfU1RBVElDKQorIyAgICAgIHVuZGVmIE5DVVJTRVNfU1RBVElDCisjICAgIGVuZGlmCisjICBlbmRpZgorIyAgdW5kZWYgTkNVUlNFU19JTVBFWFAKKyMgIHVuZGVmIE5DVVJTRVNfQVBJCisjICB1bmRlZiBOQ1VSU0VTX0VYUE9SVAorIyAgdW5kZWYgTkNVUlNFU19FWFBPUlRfVkFSCisjICBpZiBkZWZpbmVkKE5DVVJTRVNfRExMKQorLyogYnVpbGRpbmcgYSBETEwgKi8KKyMgICAgZGVmaW5lIE5DVVJTRVNfSU1QRVhQIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyAgZWxpZiBkZWZpbmVkKE5DVVJTRVNfU1RBVElDKQorLyogYnVpbGRpbmcgb3IgbGlua2luZyB0byBhIHN0YXRpYyBsaWJyYXJ5ICovCisjICAgIGRlZmluZSBOQ1VSU0VTX0lNUEVYUCAvKiBub3RoaW5nICovCisjICBlbHNlCisvKiBsaW5raW5nIHRvIHRoZSBETEwgKi8KKyMgICAgZGVmaW5lIE5DVVJTRVNfSU1QRVhQIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgZW5kaWYKKyMgIGRlZmluZSBOQ1VSU0VTX0FQSSBfX2NkZWNsCisjICBkZWZpbmUgTkNVUlNFU19FWFBPUlQodHlwZSkgTkNVUlNFU19JTVBFWFAgdHlwZSBOQ1VSU0VTX0FQSQorIyAgZGVmaW5lIE5DVVJTRVNfRVhQT1JUX1ZBUih0eXBlKSBOQ1VSU0VTX0lNUEVYUCB0eXBlCisjZW5kaWYKKworLyogVGFrZSBjYXJlIG9mIG5vbi1jeWd3aW4gcGxhdGZvcm1zICovCisjaWYgIWRlZmluZWQoTkNVUlNFU19JTVBFWFApCisjICBkZWZpbmUgTkNVUlNFU19JTVBFWFAgLyogbm90aGluZyAqLworI2VuZGlmCisjaWYgIWRlZmluZWQoTkNVUlNFU19BUEkpCisjICBkZWZpbmUgTkNVUlNFU19BUEkgLyogbm90aGluZyAqLworI2VuZGlmCisjaWYgIWRlZmluZWQoTkNVUlNFU19FWFBPUlQpCisjICBkZWZpbmUgTkNVUlNFU19FWFBPUlQodHlwZSkgTkNVUlNFU19JTVBFWFAgdHlwZSBOQ1VSU0VTX0FQSQorI2VuZGlmCisjaWYgIWRlZmluZWQoTkNVUlNFU19FWFBPUlRfVkFSKQorIyAgZGVmaW5lIE5DVVJTRVNfRVhQT1JUX1ZBUih0eXBlKSBOQ1VSU0VTX0lNUEVYUCB0eXBlCisjZW5kaWYKKworI2VuZGlmIC8qIE5DVVJTRVNfRExMX0hfaW5jbCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzX21pbmd3LmggYi9pbmNsdWRlL25jdXJzZXNfbWluZ3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmJhZDc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uY3Vyc2VzX21pbmd3LmgKQEAgLTAsMCArMSw4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyLCAyMDA4LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiAkSWQ6IG5jdXJzZXNfbWluZ3cuaCx2IDEuMyAyMDE0LzA1LzAzIDE5OjQwOjE5IGp1ZXJnZW4gRXhwICQgKi8KKworLyoKKyAqIFRoaXMgaXMgYSBwbGFjZWhvbGRlciB1cCB0byBub3cgYW5kIGRlc2NyaWJlcyB3aGF0IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkCisgKiB0byBzdXBwb3J0IEkvTyB0byBleHRlcm5hbCB0ZXJtaW5hbHMgd2l0aCBuY3Vyc2VzIG9uIHRoZSBXaW5kb3dzIE9TLgorICovCisKKyNpZiBfX01JTkdXMzJfXworI2lmbmRlZiBfTkNfTUlOR1dICisjZGVmaW5lIF9OQ19NSU5HV0gKKworI2RlZmluZSBVU0VfQ09OU09MRV9EUklWRVIgMQorCisjdW5kZWYgIFRFUk1JT1MKKyNkZWZpbmUgVEVSTUlPUyAxCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBjY190OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgIHRjZmxhZ190OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgIHNwZWVkX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG90Y2ZsYWdfdDsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBvc3BlZWRfdDsKKworI2RlZmluZSBOQ0NTIDE4CitzdHJ1Y3QgdGVybWlvcworeworICB0Y2ZsYWdfdAljX2lmbGFnOworICB0Y2ZsYWdfdAljX29mbGFnOworICB0Y2ZsYWdfdAljX2NmbGFnOworICB0Y2ZsYWdfdAljX2xmbGFnOworICBjaGFyCQljX2xpbmU7CisgIGNjX3QJCWNfY2NbTkNDU107CisgIHNwZWVkX3QJY19pc3BlZWQ7CisgIHNwZWVkX3QJY19vc3BlZWQ7Cit9OworCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgX25jX21pbmd3X3Rjc2V0YXR0cigKKyAgICBpbnQgZmQsIAorICAgIGludCBvcHRpb25hbF9hY3Rpb25zLCAKKyAgICBjb25zdCBzdHJ1Y3QgdGVybWlvcyogYXJnKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICBfbmNfbWluZ3dfdGNnZXRhdHRyKAorICAgIGludCBmZCwgCisgICAgc3RydWN0IHRlcm1pb3MqIGFyZyk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgX25jX21pbmd3X3RjZmx1c2goCisgICAgaW50IGZkLCAKKyAgICBpbnQgcXVldWUpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zZXRfdGVybV9kcml2ZXIodm9pZCogdGVybSk7CisKKyNlbmRpZiAvKiBfTkNfTUlOR1dIICovCisjZW5kaWYgLyogX19NSU5HVzMyX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGFuZWwuaCBiL2luY2x1ZGUvcGFuZWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwMjA5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3BhbmVsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTUgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogJElkOiBwYW5lbC5oLHYgMS4xMCAyMDA2LzA1LzI3IDE5OjQ5OjQwIHRvbSBFeHAgJCAqLwotCi0vKiBwYW5lbC5oIC0tIGludGVyZmFjZSBmaWxlIGZvciBwYW5lbHMgbGlicmFyeSAqLwotCi0jaWZuZGVmIE5DVVJTRVNfUEFORUxfSF9pbmNsCi0jZGVmaW5lIE5DVVJTRVNfUEFORUxfSF9pbmNsIDEKLQotI2luY2x1ZGUgPGN1cnNlcy5oPgotCi10eXBlZGVmIHN0cnVjdCBwYW5lbAotewotICBXSU5ET1cgKndpbjsKLSAgc3RydWN0IHBhbmVsICpiZWxvdzsKLSAgc3RydWN0IHBhbmVsICphYm92ZTsKLSAgTkNVUlNFU19DT05TVCB2b2lkICp1c2VyOwotfSBQQU5FTDsKLQotI2lmCWRlZmluZWQoX19jcGx1c3BsdXMpCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XKikgcGFuZWxfd2luZG93IChjb25zdCBQQU5FTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICB1cGRhdGVfcGFuZWxzICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBoaWRlX3BhbmVsIChQQU5FTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBzaG93X3BhbmVsIChQQU5FTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICBkZWxfcGFuZWwgKFBBTkVMICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHRvcF9wYW5lbCAoUEFORUwgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgYm90dG9tX3BhbmVsIChQQU5FTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChQQU5FTCopICBuZXdfcGFuZWwgKFdJTkRPVyAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChQQU5FTCopICBwYW5lbF9hYm92ZSAoY29uc3QgUEFORUwgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoUEFORUwqKSAgcGFuZWxfYmVsb3cgKGNvbnN0IFBBTkVMICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHNldF9wYW5lbF91c2VycHRyIChQQU5FTCAqLCBOQ1VSU0VTX0NPTlNUIHZvaWQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCB2b2lkKikgcGFuZWxfdXNlcnB0ciAoY29uc3QgUEFORUwgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgbW92ZV9wYW5lbCAoUEFORUwgKiwgaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHJlcGxhY2VfcGFuZWwgKFBBTkVMICosV0lORE9XICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHBhbmVsX2hpZGRlbiAoY29uc3QgUEFORUwgKik7Ci0KLSNpZglkZWZpbmVkKF9fY3BsdXNwbHVzKQotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBOQ1VSU0VTX1BBTkVMX0hfaW5jbCAqLwotCi0vKiBlbmQgb2YgcGFuZWwuaCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wYXJhbWV0cml6ZWQuaCBiL2luY2x1ZGUvcGFyYW1ldHJpemVkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MGE5NDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9wYXJhbWV0cml6ZWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2MCArMCwwIEBACi0vKgotICogcGFyYW1ldHJpemVkLmggLS0tIGlzIGEgdGVybWNhcCBjYXBhYmlsaXR5IHBhcmFtZXRyaXplZD8KLSAqCi0gKiBOb3RlOiB0aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHVzaW5nIE1LcGFyYW1ldHJpemVkLnNoLCBkbyBub3QgZWRpdCBieSBoYW5kLgotICogQSB2YWx1ZSBvZiAtMSBpbiB0aGUgdGFibGUgbWVhbnMgc3VwcHJlc3MgYm90aCBwYWQgYW5kICUgdHJhbnNsYXRpb25zLgotICogQSB2YWx1ZSBvZiAwIGluIHRoZSB0YWJsZSBtZWFucyBkbyBwYWQgYnV0IG5vdCAlIHRyYW5zbGF0aW9ucy4KLSAqIEEgdmFsdWUgb2YgMSBpbiB0aGUgdGFibGUgbWVhbnMgZG8gYm90aCBwYWQgYW5kICUgdHJhbnNsYXRpb25zLgotICovCi0KLXN0YXRpYyBzaG9ydCBjb25zdCBwYXJhbWV0cml6ZWRbXSA9IHsKLTAsCS8qICBjYnQgICovCi0wLAkvKiAgYmVsICAqLwotMCwJLyogIGNyICAqLwotMSwJLyogIGNzciAgKi8KLTAsCS8qICB0YmMgICovCi0wLAkvKiAgY2xlYXIgICovCi0wLAkvKiAgZWwgICovCi0wLAkvKiAgZWQgICovCi0xLAkvKiAgaHBhICAqLwotMCwJLyogIGNtZGNoICAqLwotMSwJLyogIGN1cCAgKi8KLTAsCS8qICBjdWQxICAqLwotMCwJLyogIGhvbWUgICovCi0wLAkvKiAgY2l2aXMgICovCi0wLAkvKiAgY3ViMSAgKi8KLTEsCS8qICBtcmN1cCAgKi8KLTAsCS8qICBjbm9ybSAgKi8KLTAsCS8qICBjdWYxICAqLwotMCwJLyogIGxsICAqLwotMCwJLyogIGN1dTEgICovCi0wLAkvKiAgY3Z2aXMgICovCi0wLAkvKiAgZGNoMSAgKi8KLTAsCS8qICBkbDEgICovCi0wLAkvKiAgZHNsICAqLwotMCwJLyogIGhkICAqLwotMCwJLyogIHNtYWNzICAqLwotMCwJLyogIGJsaW5rICAqLwotMCwJLyogIGJvbGQgICovCi0wLAkvKiAgc21jdXAgICovCi0wLAkvKiAgc21kYyAgKi8KLTAsCS8qICBkaW0gICovCi0wLAkvKiAgc21pciAgKi8KLTAsCS8qICBpbnZpcyAgKi8KLTAsCS8qICBwcm90ICAqLwotMCwJLyogIHJldiAgKi8KLTAsCS8qICBzbXNvICAqLwotMCwJLyogIHNtdWwgICovCi0xLAkvKiAgZWNoICAqLwotMCwJLyogIHJtYWNzICAqLwotMCwJLyogIHNncjAgICovCi0wLAkvKiAgcm1jdXAgICovCi0wLAkvKiAgcm1kYyAgKi8KLTAsCS8qICBybWlyICAqLwotMCwJLyogIHJtc28gICovCi0wLAkvKiAgcm11bCAgKi8KLTAsCS8qICBmbGFzaCAgKi8KLTAsCS8qICBmZiAgKi8KLTAsCS8qICBmc2wgICovCi0wLAkvKiAgaXMxICAqLwotMCwJLyogIGlzMiAgKi8KLTAsCS8qICBpczMgICovCi0wLAkvKiAgaWYgICovCi0wLAkvKiAgaWNoMSAgKi8KLTAsCS8qICBpbDEgICovCi0wLAkvKiAgaXAgICovCi0wLAkvKiAga2JzICAqLwotMCwJLyogIGt0YmMgICovCi0wLAkvKiAga2NsciAgKi8KLTAsCS8qICBrY3RhYiAgKi8KLTAsCS8qICBrZGNoMSAgKi8KLTAsCS8qICBrZGwxICAqLwotMCwJLyogIGtjdWQxICAqLwotMCwJLyogIGtybWlyICAqLwotMCwJLyogIGtlbCAgKi8KLTAsCS8qICBrZWQgICovCi0wLAkvKiAga2YwICAqLwotMCwJLyogIGtmMSAgKi8KLTAsCS8qICBrZjEwICAqLwotMCwJLyogIGtmMiAgKi8KLTAsCS8qICBrZjMgICovCi0wLAkvKiAga2Y0ICAqLwotMCwJLyogIGtmNSAgKi8KLTAsCS8qICBrZjYgICovCi0wLAkvKiAga2Y3ICAqLwotMCwJLyogIGtmOCAgKi8KLTAsCS8qICBrZjkgICovCi0wLAkvKiAga2hvbWUgICovCi0wLAkvKiAga2ljaDEgICovCi0wLAkvKiAga2lsMSAgKi8KLTAsCS8qICBrY3ViMSAgKi8KLTAsCS8qICBrbGwgICovCi0wLAkvKiAga25wICAqLwotMCwJLyogIGtwcCAgKi8KLTAsCS8qICBrY3VmMSAgKi8KLTAsCS8qICBraW5kICAqLwotMCwJLyogIGtyaSAgKi8KLTAsCS8qICBraHRzICAqLwotMCwJLyogIGtjdXUxICAqLwotMCwJLyogIHJta3ggICovCi0wLAkvKiAgc21reCAgKi8KLTAsCS8qICBsZjAgICovCi0wLAkvKiAgbGYxICAqLwotMCwJLyogIGxmMTAgICovCi0wLAkvKiAgbGYyICAqLwotMCwJLyogIGxmMyAgKi8KLTAsCS8qICBsZjQgICovCi0wLAkvKiAgbGY1ICAqLwotMCwJLyogIGxmNiAgKi8KLTAsCS8qICBsZjcgICovCi0wLAkvKiAgbGY4ICAqLwotMCwJLyogIGxmOSAgKi8KLTAsCS8qICBybW0gICovCi0wLAkvKiAgc21tICAqLwotMCwJLyogIG5lbCAgKi8KLTAsCS8qICBwYWQgICovCi0xLAkvKiAgZGNoICAqLwotMSwJLyogIGRsICAqLwotMSwJLyogIGN1ZCAgKi8KLTEsCS8qICBpY2ggICovCi0xLAkvKiAgaW5kbiAgKi8KLTEsCS8qICBpbCAgKi8KLTEsCS8qICBjdWIgICovCi0xLAkvKiAgY3VmICAqLwotMSwJLyogIHJpbiAgKi8KLTEsCS8qICBjdXUgICovCi0xLAkvKiAgcGZrZXkgICovCi0xLAkvKiAgcGZsb2MgICovCi0xLAkvKiAgcGZ4ICAqLwotMCwJLyogIG1jMCAgKi8KLTAsCS8qICBtYzQgICovCi0wLAkvKiAgbWM1ICAqLwotMSwJLyogIHJlcCAgKi8KLTAsCS8qICByczEgICovCi0wLAkvKiAgcnMyICAqLwotMCwJLyogIHJzMyAgKi8KLTAsCS8qICByZiAgKi8KLTAsCS8qICByYyAgKi8KLTEsCS8qICB2cGEgICovCi0wLAkvKiAgc2MgICovCi0wLAkvKiAgaW5kICAqLwotMCwJLyogIHJpICAqLwotMSwJLyogIHNnciAgKi8KLTAsCS8qICBodHMgICovCi0xLAkvKiAgd2luZCAgKi8KLTAsCS8qICBodCAgKi8KLTEsCS8qICB0c2wgICovCi0wLAkvKiAgdWMgICovCi0wLAkvKiAgaHUgICovCi0wLAkvKiAgaXByb2cgICovCi0wLAkvKiAga2ExICAqLwotMCwJLyogIGthMyAgKi8KLTAsCS8qICBrYjIgICovCi0wLAkvKiAga2MxICAqLwotMCwJLyogIGtjMyAgKi8KLTEsCS8qICBtYzVwICAqLwotMCwJLyogIHJtcCAgKi8KLS0xLAkvKiAgYWNzYyAgKi8KLTEsCS8qICBwbG4gICovCi0wLAkvKiAga2NidCAgKi8KLTAsCS8qICBzbXhvbiAgKi8KLTAsCS8qICBybXhvbiAgKi8KLTAsCS8qICBzbWFtICAqLwotMCwJLyogIHJtYW0gICovCi0wLAkvKiAgeG9uYyAgKi8KLTAsCS8qICB4b2ZmYyAgKi8KLTAsCS8qICBlbmFjcyAgKi8KLTAsCS8qICBzbWxuICAqLwotMCwJLyogIHJtbG4gICovCi0wLAkvKiAga2JlZyAgKi8KLTAsCS8qICBrY2FuICAqLwotMCwJLyogIGtjbG8gICovCi0wLAkvKiAga2NtZCAgKi8KLTAsCS8qICBrY3B5ICAqLwotMCwJLyogIGtjcnQgICovCi0wLAkvKiAga2VuZCAgKi8KLTAsCS8qICBrZW50ICAqLwotMCwJLyogIGtleHQgICovCi0wLAkvKiAga2ZuZCAgKi8KLTAsCS8qICBraGxwICAqLwotMCwJLyogIGttcmsgICovCi0wLAkvKiAga21zZyAgKi8KLTAsCS8qICBrbW92ICAqLwotMCwJLyogIGtueHQgICovCi0wLAkvKiAga29wbiAgKi8KLTAsCS8qICBrb3B0ICAqLwotMCwJLyogIGtwcnYgICovCi0wLAkvKiAga3BydCAgKi8KLTAsCS8qICBrcmRvICAqLwotMCwJLyogIGtyZWYgICovCi0wLAkvKiAga3JmciAgKi8KLTAsCS8qICBrcnBsICAqLwotMCwJLyogIGtyc3QgICovCi0wLAkvKiAga3JlcyAgKi8KLTAsCS8qICBrc2F2ICAqLwotMCwJLyogIGtzcGQgICovCi0wLAkvKiAga3VuZCAgKi8KLTAsCS8qICBrQkVHICAqLwotMCwJLyogIGtDQU4gICovCi0wLAkvKiAga0NNRCAgKi8KLTAsCS8qICBrQ1BZICAqLwotMCwJLyogIGtDUlQgICovCi0wLAkvKiAga0RDICAqLwotMCwJLyogIGtETCAgKi8KLTAsCS8qICBrc2x0ICAqLwotMCwJLyogIGtFTkQgICovCi0wLAkvKiAga0VPTCAgKi8KLTAsCS8qICBrRVhUICAqLwotMCwJLyogIGtGTkQgICovCi0xLAkvKiAga0hMUCAgKi8KLTEsCS8qICBrSE9NICAqLwotMSwJLyogIGtJQyAgKi8KLTEsCS8qICBrTEZUICAqLwotMCwJLyogIGtNU0cgICovCi0wLAkvKiAga01PViAgKi8KLTAsCS8qICBrTlhUICAqLwotMCwJLyogIGtPUFQgICovCi0wLAkvKiAga1BSViAgKi8KLTAsCS8qICBrUFJUICAqLwotMCwJLyogIGtSRE8gICovCi0wLAkvKiAga1JQTCAgKi8KLTAsCS8qICBrUklUICAqLwotMCwJLyogIGtSRVMgICovCi0wLAkvKiAga1NBViAgKi8KLTAsCS8qICBrU1BEICAqLwotMCwJLyogIGtVTkQgICovCi0wLAkvKiAgcmZpICAqLwotMCwJLyogIGtmMTEgICovCi0wLAkvKiAga2YxMiAgKi8KLTAsCS8qICBrZjEzICAqLwotMCwJLyogIGtmMTQgICovCi0wLAkvKiAga2YxNSAgKi8KLTAsCS8qICBrZjE2ICAqLwotMCwJLyogIGtmMTcgICovCi0wLAkvKiAga2YxOCAgKi8KLTAsCS8qICBrZjE5ICAqLwotMCwJLyogIGtmMjAgICovCi0wLAkvKiAga2YyMSAgKi8KLTAsCS8qICBrZjIyICAqLwotMCwJLyogIGtmMjMgICovCi0wLAkvKiAga2YyNCAgKi8KLTAsCS8qICBrZjI1ICAqLwotMCwJLyogIGtmMjYgICovCi0wLAkvKiAga2YyNyAgKi8KLTAsCS8qICBrZjI4ICAqLwotMCwJLyogIGtmMjkgICovCi0wLAkvKiAga2YzMCAgKi8KLTAsCS8qICBrZjMxICAqLwotMCwJLyogIGtmMzIgICovCi0wLAkvKiAga2YzMyAgKi8KLTAsCS8qICBrZjM0ICAqLwotMCwJLyogIGtmMzUgICovCi0wLAkvKiAga2YzNiAgKi8KLTAsCS8qICBrZjM3ICAqLwotMCwJLyogIGtmMzggICovCi0wLAkvKiAga2YzOSAgKi8KLTAsCS8qICBrZjQwICAqLwotMCwJLyogIGtmNDEgICovCi0wLAkvKiAga2Y0MiAgKi8KLTAsCS8qICBrZjQzICAqLwotMCwJLyogIGtmNDQgICovCi0wLAkvKiAga2Y0NSAgKi8KLTAsCS8qICBrZjQ2ICAqLwotMCwJLyogIGtmNDcgICovCi0wLAkvKiAga2Y0OCAgKi8KLTAsCS8qICBrZjQ5ICAqLwotMCwJLyogIGtmNTAgICovCi0wLAkvKiAga2Y1MSAgKi8KLTAsCS8qICBrZjUyICAqLwotMCwJLyogIGtmNTMgICovCi0wLAkvKiAga2Y1NCAgKi8KLTAsCS8qICBrZjU1ICAqLwotMCwJLyogIGtmNTYgICovCi0wLAkvKiAga2Y1NyAgKi8KLTAsCS8qICBrZjU4ICAqLwotMCwJLyogIGtmNTkgICovCi0wLAkvKiAga2Y2MCAgKi8KLTAsCS8qICBrZjYxICAqLwotMCwJLyogIGtmNjIgICovCi0wLAkvKiAga2Y2MyAgKi8KLTAsCS8qICBlbDEgICovCi0wLAkvKiAgbWdjICAqLwotMCwJLyogIHNtZ2wgICovCi0wLAkvKiAgc21nciAgKi8KLTAsCS8qICBmbG4gICovCi0xLAkvKiAgc2NsayAgKi8KLTAsCS8qICBkY2xrICAqLwotMCwJLyogIHJtY2xrICAqLwotMSwJLyogIGN3aW4gICovCi0xLAkvKiAgd2luZ28gICovCi0wLAkvKiAgaHVwICAqLwotMSwJLyogIGRpYWwgICovCi0xLAkvKiAgcWRpYWwgICovCi0wLAkvKiAgdG9uZSAgKi8KLTAsCS8qICBwdWxzZSAgKi8KLTAsCS8qICBob29rICAqLwotMCwJLyogIHBhdXNlICAqLwotMCwJLyogIHdhaXQgICovCi0xLAkvKiAgdTAgICovCi0xLAkvKiAgdTEgICovCi0xLAkvKiAgdTIgICovCi0xLAkvKiAgdTMgICovCi0xLAkvKiAgdTQgICovCi0xLAkvKiAgdTUgICovCi0xLAkvKiAgdTYgICovCi0xLAkvKiAgdTcgICovCi0xLAkvKiAgdTggICovCi0xLAkvKiAgdTkgICovCi0wLAkvKiAgb3AgICovCi0wLAkvKiAgb2MgICovCi0xLAkvKiAgaW5pdGMgICovCi0xLAkvKiAgaW5pdHAgICovCi0xLAkvKiAgc2NwICAqLwotMSwJLyogIHNldGYgICovCi0xLAkvKiAgc2V0YiAgKi8KLTEsCS8qICBjcGkgICovCi0xLAkvKiAgbHBpICAqLwotMSwJLyogIGNociAgKi8KLTEsCS8qICBjdnIgICovCi0xLAkvKiAgZGVmYyAgKi8KLTAsCS8qICBzd2lkbSAgKi8KLTAsCS8qICBzZHJmcSAgKi8KLTAsCS8qICBzaXRtICAqLwotMCwJLyogIHNsbSAgKi8KLTAsCS8qICBzbWljbSAgKi8KLTAsCS8qICBzbmxxICAqLwotMCwJLyogIHNucm1xICAqLwotMCwJLyogIHNzaG0gICovCi0wLAkvKiAgc3N1Ym0gICovCi0wLAkvKiAgc3N1cG0gICovCi0wLAkvKiAgc3VtICAqLwotMCwJLyogIHJ3aWRtICAqLwotMCwJLyogIHJpdG0gICovCi0wLAkvKiAgcmxtICAqLwotMCwJLyogIHJtaWNtICAqLwotMCwJLyogIHJzaG0gICovCi0wLAkvKiAgcnN1Ym0gICovCi0wLAkvKiAgcnN1cG0gICovCi0wLAkvKiAgcnVtICAqLwotMCwJLyogIG1ocGEgICovCi0wLAkvKiAgbWN1ZDEgICovCi0wLAkvKiAgbWN1YjEgICovCi0wLAkvKiAgbWN1ZjEgICovCi0xLAkvKiAgbXZwYSAgKi8KLTAsCS8qICBtY3V1MSAgKi8KLTAsCS8qICBwb3JkZXIgICovCi0wLAkvKiAgbWN1ZCAgKi8KLTAsCS8qICBtY3ViICAqLwotMCwJLyogIG1jdWYgICovCi0wLAkvKiAgbWN1dSAgKi8KLTEsCS8qICBzY3MgICovCi0wLAkvKiAgc21nYiAgKi8KLTEsCS8qICBzbWdicCAgKi8KLTEsCS8qICBzbWdscCAgKi8KLTEsCS8qICBzbWdycCAgKi8KLTAsCS8qICBzbWd0ICAqLwotMSwJLyogIHNtZ3RwICAqLwotMCwJLyogIHNiaW0gICovCi0xLAkvKiAgc2NzZCAgKi8KLTAsCS8qICByYmltICAqLwotMSwJLyogIHJjc2QgICovCi0wLAkvKiAgc3ViY3MgICovCi0wLAkvKiAgc3VwY3MgICovCi0wLAkvKiAgZG9jciAgKi8KLTAsCS8qICB6ZXJvbSAgKi8KLTEsCS8qICBjc25tICAqLwotMCwJLyogIGttb3VzICAqLwotMCwJLyogIG1pbmZvICAqLwotMCwJLyogIHJlcW1wICAqLwotMSwJLyogIGdldG0gICovCi0xLAkvKiAgc2V0YWYgICovCi0xLAkvKiAgc2V0YWIgICovCi0xLAkvKiAgcGZ4bCAgKi8KLTAsCS8qICBkZXZ0ICAqLwotMCwJLyogIGNzaW4gICovCi0wLAkvKiAgczBkcyAgKi8KLTAsCS8qICBzMWRzICAqLwotMCwJLyogIHMyZHMgICovCi0wLAkvKiAgczNkcyAgKi8KLTEsCS8qICBzbWdsciAgKi8KLTEsCS8qICBzbWd0YiAgKi8KLTEsCS8qICBiaXJlcCAgKi8KLTAsCS8qICBiaW5lbCAgKi8KLTAsCS8qICBiaWNyICAqLwotMSwJLyogIGNvbG9ybm0gICovCi0wLAkvKiAgZGVmYmkgICovCi0wLAkvKiAgZW5kYmkgICovCi0xLAkvKiAgc2V0Y29sb3IgICovCi0xLAkvKiAgc2xpbmVzICAqLwotMSwJLyogIGRpc3BjICAqLwotMCwJLyogIHNtcGNoICAqLwotMCwJLyogIHJtcGNoICAqLwotMCwJLyogIHNtc2MgICovCi0wLAkvKiAgcm1zYyAgKi8KLTAsCS8qICBwY3RybSAgKi8KLTAsCS8qICBzY2VzYyAgKi8KLTAsCS8qICBzY2VzYSAgKi8KLTAsCS8qICBlaGhsbSAgKi8KLTAsCS8qICBlbGhsbSAgKi8KLTAsCS8qICBlbG9obG0gICovCi0wLAkvKiAgZXJobG0gICovCi0wLAkvKiAgZXRobG0gICovCi0wLAkvKiAgZXZobG0gICovCi0xLAkvKiAgc2dyMSAgKi8KLTEsCS8qICBzbGVuZ3RoICAqLwotMCwJLyogIE9UaTIgICovCi0wLAkvKiAgT1RycyAgKi8KLTAsCS8qICBPVG5sICAqLwotMCwJLyogIE9UYmMgICovCi0wLAkvKiAgT1RrbyAgKi8KLTAsCS8qICBPVG1hICAqLwotLTEsCS8qICBPVEcyICAqLwotLTEsCS8qICBPVEczICAqLwotLTEsCS8qICBPVEcxICAqLwotLTEsCS8qICBPVEc0ICAqLwotLTEsCS8qICBPVEdSICAqLwotLTEsCS8qICBPVEdMICAqLwotLTEsCS8qICBPVEdVICAqLwotLTEsCS8qICBPVEdEICAqLwotLTEsCS8qICBPVEdIICAqLwotLTEsCS8qICBPVEdWICAqLwotLTEsCS8qICBPVEdDICAqLwotMCwJLyogIG1lbWwgICovCi0wLAkvKiAgbWVtdSAgKi8KLTEsCS8qICBwbG4gICovCi0wLAkvKiAgc21sbiAgKi8KLTAsCS8qICBybWxuICAqLwotMCwJLyogIGtmMTEgICovCi0wLAkvKiAga2YxMiAgKi8KLTAsCS8qICBrZjEzICAqLwotMCwJLyogIGtmMTQgICovCi0wLAkvKiAga2YxNSAgKi8KLTAsCS8qICBrZjE2ICAqLwotMCwJLyogIGtmMTcgICovCi0wLAkvKiAga2YxOCAgKi8KLTAsCS8qICBrZjE5ICAqLwotMCwJLyogIGtmMjAgICovCi0wLAkvKiAga2YyMSAgKi8KLTAsCS8qICBrZjIyICAqLwotMCwJLyogIGtmMjMgICovCi0wLAkvKiAga2YyNCAgKi8KLTAsCS8qICBrZjI1ICAqLwotMCwJLyogIGtmMjYgICovCi0wLAkvKiAga2YyNyAgKi8KLTAsCS8qICBrZjI4ICAqLwotMCwJLyogIGtmMjkgICovCi0wLAkvKiAga2YzMCAgKi8KLTAsCS8qICBrZjMxICAqLwotMCwJLyogIGtmMzIgICovCi0wLAkvKiAga2YzMyAgKi8KLTAsCS8qICBrZjM0ICAqLwotMCwJLyogIGtmMzUgICovCi0wLAkvKiAga2YzNiAgKi8KLTAsCS8qICBrZjM3ICAqLwotMCwJLyogIGtmMzggICovCi0wLAkvKiAga2YzOSAgKi8KLTAsCS8qICBrZjQwICAqLwotMCwJLyogIGtmNDEgICovCi0wLAkvKiAga2Y0MiAgKi8KLTAsCS8qICBrZjQzICAqLwotMCwJLyogIGtmNDQgICovCi0wLAkvKiAga2Y0NSAgKi8KLTAsCS8qICBrZjQ2ICAqLwotMCwJLyogIGtmNDcgICovCi0wLAkvKiAga2Y0OCAgKi8KLTAsCS8qICBrZjQ5ICAqLwotMCwJLyogIGtmNTAgICovCi0wLAkvKiAga2Y1MSAgKi8KLTAsCS8qICBrZjUyICAqLwotMCwJLyogIGtmNTMgICovCi0wLAkvKiAga2Y1NCAgKi8KLTAsCS8qICBrZjU1ICAqLwotMCwJLyogIGtmNTYgICovCi0wLAkvKiAga2Y1NyAgKi8KLTAsCS8qICBrZjU4ICAqLwotMCwJLyogIGtmNTkgICovCi0wLAkvKiAga2Y2MCAgKi8KLTAsCS8qICBrZjYxICAqLwotMCwJLyogIGtmNjIgICovCi0wLAkvKiAga2Y2MyAgKi8KLTAsCS8qICBib3gxICAqLwotMCwJLyogIGJveDIgICovCi0wLAkvKiAgYmF0dDEgICovCi0wLAkvKiAgYmF0dDIgICovCi0wLAkvKiAgY29sYjAgICovCi0wLAkvKiAgY29sYjEgICovCi0wLAkvKiAgY29sYjIgICovCi0wLAkvKiAgY29sYjMgICovCi0wLAkvKiAgY29sYjQgICovCi0wLAkvKiAgY29sYjUgICovCi0wLAkvKiAgY29sYjYgICovCi0wLAkvKiAgY29sYjcgICovCi0wLAkvKiAgY29sZjAgICovCi0wLAkvKiAgY29sZjEgICovCi0wLAkvKiAgY29sZjIgICovCi0wLAkvKiAgY29sZjMgICovCi0wLAkvKiAgY29sZjQgICovCi0wLAkvKiAgY29sZjUgICovCi0wLAkvKiAgY29sZjYgICovCi0wLAkvKiAgY29sZjcgICovCi0wLAkvKiAgZm9udDAgICovCi0wLAkvKiAgZm9udDEgICovCi0wLAkvKiAgZm9udDIgICovCi0wLAkvKiAgZm9udDMgICovCi0wLAkvKiAgZm9udDQgICovCi0wLAkvKiAgZm9udDUgICovCi0wLAkvKiAgZm9udDYgICovCi0wLAkvKiAgZm9udDcgICovCi0wLAkvKiAga2J0YWIgICovCi0wLAkvKiAga2RvICAqLwotMCwJLyogIGtjbWQgICovCi0wLAkvKiAga2NwbiAgKi8KLTAsCS8qICBrZW5kICAqLwotMCwJLyogIGtobHAgICovCi0wLAkvKiAga25sICAqLwotMCwJLyogIGtucG4gICovCi0wLAkvKiAga3BwbiAgKi8KLTAsCS8qICBrcHBuICAqLwotMCwJLyogIGtxdWl0ICAqLwotMCwJLyogIGtzZWwgICovCi0wLAkvKiAga3NjbCAgKi8KLTAsCS8qICBrc2NyICAqLwotMCwJLyogIGt0YWIgICovCi0wLAkvKiAga21wZjEgICovCi0wLAkvKiAga21wdDEgICovCi0wLAkvKiAga21wZjIgICovCi0wLAkvKiAga21wdDIgICovCi0wLAkvKiAga21wZjMgICovCi0wLAkvKiAga21wdDMgICovCi0wLAkvKiAga21wZjQgICovCi0wLAkvKiAga21wdDQgICovCi0wLAkvKiAga21wZjUgICovCi0wLAkvKiAga21wdDUgICovCi0wLAkvKiAgYXBzdHIgICovCi0wLAkvKiAga21wZjYgICovCi0wLAkvKiAga21wdDYgICovCi0wLAkvKiAga21wZjcgICovCi0wLAkvKiAga21wdDcgICovCi0wLAkvKiAga21wZjggICovCi0wLAkvKiAga21wdDggICovCi0wLAkvKiAga21wZjkgICovCi0wLAkvKiAga21wdDkgICovCi0wLAkvKiAga3NmMSAgKi8KLTAsCS8qICBrc2YyICAqLwotMCwJLyogIGtzZjMgICovCi0wLAkvKiAga3NmNCAgKi8KLTAsCS8qICBrc2Y1ICAqLwotMCwJLyogIGtzZjYgICovCi0wLAkvKiAga3NmNyAgKi8KLTAsCS8qICBrc2Y4ICAqLwotMCwJLyogIGtzZjkgICovCi0wLAkvKiAga3NmMTAgICovCi0wLAkvKiAga2YxMSAgKi8KLTAsCS8qICBrZjEyICAqLwotMCwJLyogIGthY3QgICovCi0wLAkvKiAgdG9wbCAgKi8KLTAsCS8qICBidG1sICAqLwotMCwJLyogIHJ2ZXJ0ICAqLwotMCwJLyogIGx2ZXJ0ICAqLwotfSAvKiA1NDggZW50cmllcyAqLzsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90ZXJtLmggYi9pbmNsdWRlL3Rlcm0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFiODljMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3Rlcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDc5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICAqLwotLyogICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk1LW9uICAgICAgICAgICAgICAgICAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAkSWQ6IE1LdGVybS5oLmF3ay5pbix2IDEuNTAgMjAwOC8wNS8yNCAyMzoxMzo1OSB0b20gRXhwICQgKi8KLQotLyoKLSoqCXRlcm0uaCAtLSBEZWZpbml0aW9uIG9mIHN0cnVjdCB0ZXJtCi0qLwotCi0jaWZuZGVmIE5DVVJTRVNfVEVSTV9IX2luY2wKLSNkZWZpbmUgTkNVUlNFU19URVJNX0hfaW5jbCAxCi0KLSN1bmRlZiAgTkNVUlNFU19WRVJTSU9OCi0jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTiAiNS43IgotCi0jaW5jbHVkZSA8bmN1cnNlc19kbGwuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiBNYWtlIHRoaXMgZmlsZSBzZWxmLWNvbnRhaW5lZCBieSBwcm92aWRpbmcgZGVmYXVsdHMgZm9yIHRoZSBIQVZFX1RFUk1JT1tTXV9ICi0gKiBkZWZpbml0aW9uIChiYXNlZCBvbiB0aGUgc3lzdGVtIGZvciB3aGljaCB0aGlzIHdhcyBjb25maWd1cmVkKS4KLSAqLwotCi0jdW5kZWYgIE5DVVJTRVNfQ09OU1QKLSNkZWZpbmUgTkNVUlNFU19DT05TVCAvKm5vdGhpbmcqLwotCi0jdW5kZWYgIE5DVVJTRVNfU0JPT0wKLSNkZWZpbmUgTkNVUlNFU19TQk9PTCBjaGFyCi0KLSN1bmRlZiAgTkNVUlNFU19YTkFNRVMKLSNkZWZpbmUgTkNVUlNFU19YTkFNRVMgMQotCi0vKiBXZSB3aWxsIHVzZSB0aGVzZSBzeW1ib2xzIHRvIGhpZGUgZGlmZmVyZW5jZXMgYmV0d2VlbgotICogdGVybWlvcy90ZXJtaW8vc2d0dHliIGludGVyZmFjZXMuCi0gKi8KLSN1bmRlZiAgVFRZCi0jdW5kZWYgIFNFVF9UVFkKLSN1bmRlZiAgR0VUX1RUWQotCi0vKiBBc3N1bWUgUE9TSVggdGVybWlvIGlmIHdlIGhhdmUgdGhlIGhlYWRlciBhbmQgZnVuY3Rpb24gKi8KLS8qICNpZiBIQVZFX1RFUk1JT1NfSCAmJiBIQVZFX1RDR0VUQVRUUiAqLwotI2lmIDEgJiYgMQotCi0jdW5kZWYgIFRFUk1JT1MKLSNkZWZpbmUgVEVSTUlPUyAxCi0KLSNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0jZGVmaW5lIFRUWSBzdHJ1Y3QgdGVybWlvcwotCi0jZWxzZSAvKiAhSEFWRV9URVJNSU9TX0ggKi8KLQotLyogI2lmIEhBVkVfVEVSTUlPX0ggKi8KLSNpZiAwCi0KLSN1bmRlZiAgVEVSTUlPUwotI2RlZmluZSBURVJNSU9TIDEKLQotI2luY2x1ZGUgPHRlcm1pby5oPgotI2RlZmluZSBUVFkgc3RydWN0IHRlcm1pbwotCi0vKiBBZGQgZGVmaW5pdGlvbnMgdG8gbWFrZSB0ZXJtaW8gbG9vayBsaWtlIHRlcm1pb3MuCi0gKiBCdXQgaWZkZWYgaXQsIHNpbmNlIHRoZXJlIGFyZSBzb21lIGltcGxlbWVudGF0aW9ucwotICogdGhhdCB0cnkgdG8gZG8gdGhpcyBmb3IgdXMgaW4gYSBmYWtlIDx0ZXJtaW8uaD4uCi0gKi8KLSNpZm5kZWYgVENTQU5PVwotI2RlZmluZSBUQ1NBTk9XIFRDU0VUQQotI2VuZGlmCi0jaWZuZGVmIFRDU0FEUkFJTgotI2RlZmluZSBUQ1NBRFJBSU4gVENTRVRBVwotI2VuZGlmCi0jaWZuZGVmIFRDU0FGTFVTSAotI2RlZmluZSBUQ1NBRkxVU0ggVENTRVRBRgotI2VuZGlmCi0jaWZuZGVmIHRjc2V0YXR0cgotI2RlZmluZSB0Y3NldGF0dHIoZmQsIGNtZCwgYXJnKSBpb2N0bChmZCwgY21kLCBhcmcpCi0jZW5kaWYKLSNpZm5kZWYgdGNnZXRhdHRyCi0jZGVmaW5lIHRjZ2V0YXR0cihmZCwgYXJnKSBpb2N0bChmZCwgVENHRVRBLCBhcmcpCi0jZW5kaWYKLSNpZm5kZWYgY2ZnZXRvc3BlZWQKLSNkZWZpbmUgY2ZnZXRvc3BlZWQodCkgKCh0KS0+Y19jZmxhZyAmIENCQVVEKQotI2VuZGlmCi0jaWZuZGVmIFRDSUZMVVNIIAotI2RlZmluZSBUQ0lGTFVTSCAwCi0jZW5kaWYKLSNpZm5kZWYgVENPRkxVU0ggCi0jZGVmaW5lIFRDT0ZMVVNIIDEKLSNlbmRpZgotI2lmbmRlZiBUQ0lPRkxVU0ggCi0jZGVmaW5lIFRDSU9GTFVTSCAyCi0jZW5kaWYKLSNpZm5kZWYgdGNmbHVzaAotI2RlZmluZSB0Y2ZsdXNoKGZkLCBhcmcpIGlvY3RsKGZkLCBUQ0ZMU0gsIGFyZykKLSNlbmRpZgotCi0jZWxzZSAvKiAhSEFWRV9URVJNSU9fSCAqLwotCi0jdW5kZWYgVEVSTUlPUwotI2luY2x1ZGUgPHNndHR5Lmg+Ci0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jZGVmaW5lIFRUWSBzdHJ1Y3Qgc2d0dHliCi0KLSNlbmRpZiAvKiBIQVZFX1RFUk1JT19IICovCi0KLSNlbmRpZiAvKiBIQVZFX1RFUk1JT1NfSCAqLwotCi0jaWZkZWYgVEVSTUlPUwotI2RlZmluZSBHRVRfVFRZKGZkLCBidWYpIHRjZ2V0YXR0cihmZCwgYnVmKQotI2RlZmluZSBTRVRfVFRZKGZkLCBidWYpIHRjc2V0YXR0cihmZCwgVENTQURSQUlOLCBidWYpCi0jZWxzZQotI2RlZmluZSBHRVRfVFRZKGZkLCBidWYpIGd0dHkoZmQsIGJ1ZikKLSNkZWZpbmUgU0VUX1RUWShmZCwgYnVmKSBzdHR5KGZkLCBidWYpCi0jZW5kaWYKLQotI2RlZmluZSBOQU1FU0laRSAyNTYKLQotI2RlZmluZSBDVVIgY3VyX3Rlcm0tPnR5cGUuCi0KLSNkZWZpbmUgYXV0b19sZWZ0X21hcmdpbiAgICAgICAgICAgICAgIENVUiBCb29sZWFuc1swXQotI2RlZmluZSBhdXRvX3JpZ2h0X21hcmdpbiAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzFdCi0jZGVmaW5lIG5vX2VzY19jdGxjICAgICAgICAgICAgICAgICAgICBDVVIgQm9vbGVhbnNbMl0KLSNkZWZpbmUgY2VvbF9zdGFuZG91dF9nbGl0Y2ggICAgICAgICAgIENVUiBCb29sZWFuc1szXQotI2RlZmluZSBlYXRfbmV3bGluZV9nbGl0Y2ggICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzRdCi0jZGVmaW5lIGVyYXNlX292ZXJzdHJpa2UgICAgICAgICAgICAgICBDVVIgQm9vbGVhbnNbNV0KLSNkZWZpbmUgZ2VuZXJpY190eXBlICAgICAgICAgICAgICAgICAgIENVUiBCb29sZWFuc1s2XQotI2RlZmluZSBoYXJkX2NvcHkgICAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzddCi0jZGVmaW5lIGhhc19tZXRhX2tleSAgICAgICAgICAgICAgICAgICBDVVIgQm9vbGVhbnNbOF0KLSNkZWZpbmUgaGFzX3N0YXR1c19saW5lICAgICAgICAgICAgICAgIENVUiBCb29sZWFuc1s5XQotI2RlZmluZSBpbnNlcnRfbnVsbF9nbGl0Y2ggICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzEwXQotI2RlZmluZSBtZW1vcnlfYWJvdmUgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzExXQotI2RlZmluZSBtZW1vcnlfYmVsb3cgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzEyXQotI2RlZmluZSBtb3ZlX2luc2VydF9tb2RlICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzEzXQotI2RlZmluZSBtb3ZlX3N0YW5kb3V0X21vZGUgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE0XQotI2RlZmluZSBvdmVyX3N0cmlrZSAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE1XQotI2RlZmluZSBzdGF0dXNfbGluZV9lc2Nfb2sgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE2XQotI2RlZmluZSBkZXN0X3RhYnNfbWFnaWNfc21zbyAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE3XQotI2RlZmluZSB0aWxkZV9nbGl0Y2ggICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE4XQotI2RlZmluZSB0cmFuc3BhcmVudF91bmRlcmxpbmUgICAgICAgICAgQ1VSIEJvb2xlYW5zWzE5XQotI2RlZmluZSB4b25feG9mZiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzIwXQotI2RlZmluZSBuZWVkc194b25feG9mZiAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzIxXQotI2RlZmluZSBwcnRyX3NpbGVudCAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzIyXQotI2RlZmluZSBoYXJkX2N1cnNvciAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzIzXQotI2RlZmluZSBub25fcmV2X3JtY3VwICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzI0XQotI2RlZmluZSBub19wYWRfY2hhciAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzI1XQotI2RlZmluZSBub25fZGVzdF9zY3JvbGxfcmVnaW9uICAgICAgICAgQ1VSIEJvb2xlYW5zWzI2XQotI2RlZmluZSBjYW5fY2hhbmdlICAgICAgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzI3XQotI2RlZmluZSBiYWNrX2NvbG9yX2VyYXNlICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzI4XQotI2RlZmluZSBodWVfbGlnaHRuZXNzX3NhdHVyYXRpb24gICAgICAgQ1VSIEJvb2xlYW5zWzI5XQotI2RlZmluZSBjb2xfYWRkcl9nbGl0Y2ggICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzMwXQotI2RlZmluZSBjcl9jYW5jZWxzX21pY3JvX21vZGUgICAgICAgICAgQ1VSIEJvb2xlYW5zWzMxXQotI2RlZmluZSBoYXNfcHJpbnRfd2hlZWwgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzMyXQotI2RlZmluZSByb3dfYWRkcl9nbGl0Y2ggICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzMzXQotI2RlZmluZSBzZW1pX2F1dG9fcmlnaHRfbWFyZ2luICAgICAgICAgQ1VSIEJvb2xlYW5zWzM0XQotI2RlZmluZSBjcGlfY2hhbmdlc19yZXMgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzM1XQotI2RlZmluZSBscGlfY2hhbmdlc19yZXMgICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzM2XQotI2RlZmluZSBjb2x1bW5zICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMF0KLSNkZWZpbmUgaW5pdF90YWJzICAgICAgICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzFdCi0jZGVmaW5lIGxpbmVzICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1syXQotI2RlZmluZSBsaW5lc19vZl9tZW1vcnkgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbM10KLSNkZWZpbmUgbWFnaWNfY29va2llX2dsaXRjaCAgICAgICAgICAgIENVUiBOdW1iZXJzWzRdCi0jZGVmaW5lIHBhZGRpbmdfYmF1ZF9yYXRlICAgICAgICAgICAgICBDVVIgTnVtYmVyc1s1XQotI2RlZmluZSB2aXJ0dWFsX3Rlcm1pbmFsICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbNl0KLSNkZWZpbmUgd2lkdGhfc3RhdHVzX2xpbmUgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzddCi0jZGVmaW5lIG51bV9sYWJlbHMgICAgICAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1s4XQotI2RlZmluZSBsYWJlbF9oZWlnaHQgICAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbOV0KLSNkZWZpbmUgbGFiZWxfd2lkdGggICAgICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzEwXQotI2RlZmluZSBtYXhfYXR0cmlidXRlcyAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMTFdCi0jZGVmaW5lIG1heGltdW1fd2luZG93cyAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1sxMl0KLSNkZWZpbmUgbWF4X2NvbG9ycyAgICAgICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzEzXQotI2RlZmluZSBtYXhfcGFpcnMgICAgICAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMTRdCi0jZGVmaW5lIG5vX2NvbG9yX3ZpZGVvICAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1sxNV0KLSNkZWZpbmUgYnVmZmVyX2NhcGFjaXR5ICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzE2XQotI2RlZmluZSBkb3RfdmVydF9zcGFjaW5nICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMTddCi0jZGVmaW5lIGRvdF9ob3J6X3NwYWNpbmcgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1sxOF0KLSNkZWZpbmUgbWF4X21pY3JvX2FkZHJlc3MgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzE5XQotI2RlZmluZSBtYXhfbWljcm9fanVtcCAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMjBdCi0jZGVmaW5lIG1pY3JvX2NvbF9zaXplICAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1syMV0KLSNkZWZpbmUgbWljcm9fbGluZV9zaXplICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzIyXQotI2RlZmluZSBudW1iZXJfb2ZfcGlucyAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMjNdCi0jZGVmaW5lIG91dHB1dF9yZXNfY2hhciAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1syNF0KLSNkZWZpbmUgb3V0cHV0X3Jlc19saW5lICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzI1XQotI2RlZmluZSBvdXRwdXRfcmVzX2hvcnpfaW5jaCAgICAgICAgICAgQ1VSIE51bWJlcnNbMjZdCi0jZGVmaW5lIG91dHB1dF9yZXNfdmVydF9pbmNoICAgICAgICAgICBDVVIgTnVtYmVyc1syN10KLSNkZWZpbmUgcHJpbnRfcmF0ZSAgICAgICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzI4XQotI2RlZmluZSB3aWRlX2NoYXJfc2l6ZSAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMjldCi0jZGVmaW5lIGJ1dHRvbnMgICAgICAgICAgICAgICAgICAgICAgICBDVVIgTnVtYmVyc1szMF0KLSNkZWZpbmUgYml0X2ltYWdlX2VudHdpbmluZyAgICAgICAgICAgIENVUiBOdW1iZXJzWzMxXQotI2RlZmluZSBiaXRfaW1hZ2VfdHlwZSAgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMzJdCi0jZGVmaW5lIGJhY2tfdGFiICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1swXQotI2RlZmluZSBiZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMV0KLSNkZWZpbmUgY2FycmlhZ2VfcmV0dXJuICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzJdCi0jZGVmaW5lIGNoYW5nZV9zY3JvbGxfcmVnaW9uICAgICAgICAgICBDVVIgU3RyaW5nc1szXQotI2RlZmluZSBjbGVhcl9hbGxfdGFicyAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNF0KLSNkZWZpbmUgY2xlYXJfc2NyZWVuICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzVdCi0jZGVmaW5lIGNscl9lb2wgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s2XQotI2RlZmluZSBjbHJfZW9zICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbN10KLSNkZWZpbmUgY29sdW1uX2FkZHJlc3MgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzhdCi0jZGVmaW5lIGNvbW1hbmRfY2hhcmFjdGVyICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s5XQotI2RlZmluZSBjdXJzb3JfYWRkcmVzcyAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTBdCi0jZGVmaW5lIGN1cnNvcl9kb3duICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1sxMV0KLSNkZWZpbmUgY3Vyc29yX2hvbWUgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzEyXQotI2RlZmluZSBjdXJzb3JfaW52aXNpYmxlICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTNdCi0jZGVmaW5lIGN1cnNvcl9sZWZ0ICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1sxNF0KLSNkZWZpbmUgY3Vyc29yX21lbV9hZGRyZXNzICAgICAgICAgICAgIENVUiBTdHJpbmdzWzE1XQotI2RlZmluZSBjdXJzb3Jfbm9ybWFsICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTZdCi0jZGVmaW5lIGN1cnNvcl9yaWdodCAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1sxN10KLSNkZWZpbmUgY3Vyc29yX3RvX2xsICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzE4XQotI2RlZmluZSBjdXJzb3JfdXAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTldCi0jZGVmaW5lIGN1cnNvcl92aXNpYmxlICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1syMF0KLSNkZWZpbmUgZGVsZXRlX2NoYXJhY3RlciAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzIxXQotI2RlZmluZSBkZWxldGVfbGluZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjJdCi0jZGVmaW5lIGRpc19zdGF0dXNfbGluZSAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1syM10KLSNkZWZpbmUgZG93bl9oYWxmX2xpbmUgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzI0XQotI2RlZmluZSBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICAgICAgICAgQ1VSIFN0cmluZ3NbMjVdCi0jZGVmaW5lIGVudGVyX2JsaW5rX21vZGUgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1syNl0KLSNkZWZpbmUgZW50ZXJfYm9sZF9tb2RlICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzI3XQotI2RlZmluZSBlbnRlcl9jYV9tb2RlICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjhdCi0jZGVmaW5lIGVudGVyX2RlbGV0ZV9tb2RlICAgICAgICAgICAgICBDVVIgU3RyaW5nc1syOV0KLSNkZWZpbmUgZW50ZXJfZGltX21vZGUgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzMwXQotI2RlZmluZSBlbnRlcl9pbnNlcnRfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzFdCi0jZGVmaW5lIGVudGVyX3NlY3VyZV9tb2RlICAgICAgICAgICAgICBDVVIgU3RyaW5nc1szMl0KLSNkZWZpbmUgZW50ZXJfcHJvdGVjdGVkX21vZGUgICAgICAgICAgIENVUiBTdHJpbmdzWzMzXQotI2RlZmluZSBlbnRlcl9yZXZlcnNlX21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzRdCi0jZGVmaW5lIGVudGVyX3N0YW5kb3V0X21vZGUgICAgICAgICAgICBDVVIgU3RyaW5nc1szNV0KLSNkZWZpbmUgZW50ZXJfdW5kZXJsaW5lX21vZGUgICAgICAgICAgIENVUiBTdHJpbmdzWzM2XQotI2RlZmluZSBlcmFzZV9jaGFycyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzddCi0jZGVmaW5lIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAgICAgICAgICBDVVIgU3RyaW5nc1szOF0KLSNkZWZpbmUgZXhpdF9hdHRyaWJ1dGVfbW9kZSAgICAgICAgICAgIENVUiBTdHJpbmdzWzM5XQotI2RlZmluZSBleGl0X2NhX21vZGUgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDBdCi0jZGVmaW5lIGV4aXRfZGVsZXRlX21vZGUgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s0MV0KLSNkZWZpbmUgZXhpdF9pbnNlcnRfbW9kZSAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzQyXQotI2RlZmluZSBleGl0X3N0YW5kb3V0X21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDNdCi0jZGVmaW5lIGV4aXRfdW5kZXJsaW5lX21vZGUgICAgICAgICAgICBDVVIgU3RyaW5nc1s0NF0KLSNkZWZpbmUgZmxhc2hfc2NyZWVuICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzQ1XQotI2RlZmluZSBmb3JtX2ZlZWQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDZdCi0jZGVmaW5lIGZyb21fc3RhdHVzX2xpbmUgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s0N10KLSNkZWZpbmUgaW5pdF8xc3RyaW5nICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzQ4XQotI2RlZmluZSBpbml0XzJzdHJpbmcgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDldCi0jZGVmaW5lIGluaXRfM3N0cmluZyAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s1MF0KLSNkZWZpbmUgaW5pdF9maWxlICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzUxXQotI2RlZmluZSBpbnNlcnRfY2hhcmFjdGVyICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNTJdCi0jZGVmaW5lIGluc2VydF9saW5lICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s1M10KLSNkZWZpbmUgaW5zZXJ0X3BhZGRpbmcgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzU0XQotI2RlZmluZSBrZXlfYmFja3NwYWNlICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNTVdCi0jZGVmaW5lIGtleV9jYXRhYiAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s1Nl0KLSNkZWZpbmUga2V5X2NsZWFyICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzU3XQotI2RlZmluZSBrZXlfY3RhYiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNThdCi0jZGVmaW5lIGtleV9kYyAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s1OV0KLSNkZWZpbmUga2V5X2RsICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzYwXQotI2RlZmluZSBrZXlfZG93biAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNjFdCi0jZGVmaW5lIGtleV9laWMgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s2Ml0KLSNkZWZpbmUga2V5X2VvbCAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzYzXQotI2RlZmluZSBrZXlfZW9zICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNjRdCi0jZGVmaW5lIGtleV9mMCAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s2NV0KLSNkZWZpbmUga2V5X2YxICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzY2XQotI2RlZmluZSBrZXlfZjEwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNjddCi0jZGVmaW5lIGtleV9mMiAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s2OF0KLSNkZWZpbmUga2V5X2YzICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzY5XQotI2RlZmluZSBrZXlfZjQgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNzBdCi0jZGVmaW5lIGtleV9mNSAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s3MV0KLSNkZWZpbmUga2V5X2Y2ICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzcyXQotI2RlZmluZSBrZXlfZjcgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNzNdCi0jZGVmaW5lIGtleV9mOCAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s3NF0KLSNkZWZpbmUga2V5X2Y5ICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzc1XQotI2RlZmluZSBrZXlfaG9tZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNzZdCi0jZGVmaW5lIGtleV9pYyAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s3N10KLSNkZWZpbmUga2V5X2lsICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzc4XQotI2RlZmluZSBrZXlfbGVmdCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNzldCi0jZGVmaW5lIGtleV9sbCAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s4MF0KLSNkZWZpbmUga2V5X25wYWdlICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzgxXQotI2RlZmluZSBrZXlfcHBhZ2UgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbODJdCi0jZGVmaW5lIGtleV9yaWdodCAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s4M10KLSNkZWZpbmUga2V5X3NmICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzg0XQotI2RlZmluZSBrZXlfc3IgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbODVdCi0jZGVmaW5lIGtleV9zdGFiICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s4Nl0KLSNkZWZpbmUga2V5X3VwICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzg3XQotI2RlZmluZSBrZXlwYWRfbG9jYWwgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbODhdCi0jZGVmaW5lIGtleXBhZF94bWl0ICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s4OV0KLSNkZWZpbmUgbGFiX2YwICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzkwXQotI2RlZmluZSBsYWJfZjEgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbOTFdCi0jZGVmaW5lIGxhYl9mMTAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s5Ml0KLSNkZWZpbmUgbGFiX2YyICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzkzXQotI2RlZmluZSBsYWJfZjMgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbOTRdCi0jZGVmaW5lIGxhYl9mNCAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s5NV0KLSNkZWZpbmUgbGFiX2Y1ICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzk2XQotI2RlZmluZSBsYWJfZjYgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbOTddCi0jZGVmaW5lIGxhYl9mNyAgICAgICAgICAgICAgICAgICAgICAgICBDVVIgU3RyaW5nc1s5OF0KLSNkZWZpbmUgbGFiX2Y4ICAgICAgICAgICAgICAgICAgICAgICAgIENVUiBTdHJpbmdzWzk5XQotI2RlZmluZSBsYWJfZjkgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTAwXQotI2RlZmluZSBtZXRhX29mZiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTAxXQotI2RlZmluZSBtZXRhX29uICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTAyXQotI2RlZmluZSBuZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTAzXQotI2RlZmluZSBwYWRfY2hhciAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA0XQotI2RlZmluZSBwYXJtX2RjaCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA1XQotI2RlZmluZSBwYXJtX2RlbGV0ZV9saW5lICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA2XQotI2RlZmluZSBwYXJtX2Rvd25fY3Vyc29yICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA3XQotI2RlZmluZSBwYXJtX2ljaCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA4XQotI2RlZmluZSBwYXJtX2luZGV4ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTA5XQotI2RlZmluZSBwYXJtX2luc2VydF9saW5lICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTEwXQotI2RlZmluZSBwYXJtX2xlZnRfY3Vyc29yICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTExXQotI2RlZmluZSBwYXJtX3JpZ2h0X2N1cnNvciAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTEyXQotI2RlZmluZSBwYXJtX3JpbmRleCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTEzXQotI2RlZmluZSBwYXJtX3VwX2N1cnNvciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE0XQotI2RlZmluZSBwa2V5X2tleSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE1XQotI2RlZmluZSBwa2V5X2xvY2FsICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE2XQotI2RlZmluZSBwa2V5X3htaXQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE3XQotI2RlZmluZSBwcmludF9zY3JlZW4gICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE4XQotI2RlZmluZSBwcnRyX29mZiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTE5XQotI2RlZmluZSBwcnRyX29uICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTIwXQotI2RlZmluZSByZXBlYXRfY2hhciAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTIxXQotI2RlZmluZSByZXNldF8xc3RyaW5nICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTIyXQotI2RlZmluZSByZXNldF8yc3RyaW5nICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTIzXQotI2RlZmluZSByZXNldF8zc3RyaW5nICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI0XQotI2RlZmluZSByZXNldF9maWxlICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI1XQotI2RlZmluZSByZXN0b3JlX2N1cnNvciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI2XQotI2RlZmluZSByb3dfYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI3XQotI2RlZmluZSBzYXZlX2N1cnNvciAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI4XQotI2RlZmluZSBzY3JvbGxfZm9yd2FyZCAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTI5XQotI2RlZmluZSBzY3JvbGxfcmV2ZXJzZSAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTMwXQotI2RlZmluZSBzZXRfYXR0cmlidXRlcyAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTMxXQotI2RlZmluZSBzZXRfdGFiICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTMyXQotI2RlZmluZSBzZXRfd2luZG93ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTMzXQotI2RlZmluZSB0YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM0XQotI2RlZmluZSB0b19zdGF0dXNfbGluZSAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM1XQotI2RlZmluZSB1bmRlcmxpbmVfY2hhciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM2XQotI2RlZmluZSB1cF9oYWxmX2xpbmUgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM3XQotI2RlZmluZSBpbml0X3Byb2cgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM4XQotI2RlZmluZSBrZXlfYTEgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTM5XQotI2RlZmluZSBrZXlfYTMgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQwXQotI2RlZmluZSBrZXlfYjIgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQxXQotI2RlZmluZSBrZXlfYzEgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQyXQotI2RlZmluZSBrZXlfYzMgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQzXQotI2RlZmluZSBwcnRyX25vbiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ0XQotI2RlZmluZSBjaGFyX3BhZGRpbmcgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ1XQotI2RlZmluZSBhY3NfY2hhcnMgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ2XQotI2RlZmluZSBwbGFiX25vcm0gICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ3XQotI2RlZmluZSBrZXlfYnRhYiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ4XQotI2RlZmluZSBlbnRlcl94b25fbW9kZSAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTQ5XQotI2RlZmluZSBleGl0X3hvbl9tb2RlICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTUwXQotI2RlZmluZSBlbnRlcl9hbV9tb2RlICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTUxXQotI2RlZmluZSBleGl0X2FtX21vZGUgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTUyXQotI2RlZmluZSB4b25fY2hhcmFjdGVyICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTUzXQotI2RlZmluZSB4b2ZmX2NoYXJhY3RlciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU0XQotI2RlZmluZSBlbmFfYWNzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU1XQotI2RlZmluZSBsYWJlbF9vbiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU2XQotI2RlZmluZSBsYWJlbF9vZmYgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU3XQotI2RlZmluZSBrZXlfYmVnICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU4XQotI2RlZmluZSBrZXlfY2FuY2VsICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTU5XQotI2RlZmluZSBrZXlfY2xvc2UgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTYwXQotI2RlZmluZSBrZXlfY29tbWFuZCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTYxXQotI2RlZmluZSBrZXlfY29weSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTYyXQotI2RlZmluZSBrZXlfY3JlYXRlICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTYzXQotI2RlZmluZSBrZXlfZW5kICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY0XQotI2RlZmluZSBrZXlfZW50ZXIgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY1XQotI2RlZmluZSBrZXlfZXhpdCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY2XQotI2RlZmluZSBrZXlfZmluZCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY3XQotI2RlZmluZSBrZXlfaGVscCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY4XQotI2RlZmluZSBrZXlfbWFyayAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTY5XQotI2RlZmluZSBrZXlfbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTcwXQotI2RlZmluZSBrZXlfbW92ZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTcxXQotI2RlZmluZSBrZXlfbmV4dCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTcyXQotI2RlZmluZSBrZXlfb3BlbiAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTczXQotI2RlZmluZSBrZXlfb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc0XQotI2RlZmluZSBrZXlfcHJldmlvdXMgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc1XQotI2RlZmluZSBrZXlfcHJpbnQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc2XQotI2RlZmluZSBrZXlfcmVkbyAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc3XQotI2RlZmluZSBrZXlfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc4XQotI2RlZmluZSBrZXlfcmVmcmVzaCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTc5XQotI2RlZmluZSBrZXlfcmVwbGFjZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTgwXQotI2RlZmluZSBrZXlfcmVzdGFydCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTgxXQotI2RlZmluZSBrZXlfcmVzdW1lICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTgyXQotI2RlZmluZSBrZXlfc2F2ZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTgzXQotI2RlZmluZSBrZXlfc3VzcGVuZCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg0XQotI2RlZmluZSBrZXlfdW5kbyAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg1XQotI2RlZmluZSBrZXlfc2JlZyAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg2XQotI2RlZmluZSBrZXlfc2NhbmNlbCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg3XQotI2RlZmluZSBrZXlfc2NvbW1hbmQgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg4XQotI2RlZmluZSBrZXlfc2NvcHkgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTg5XQotI2RlZmluZSBrZXlfc2NyZWF0ZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTkwXQotI2RlZmluZSBrZXlfc2RjICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTkxXQotI2RlZmluZSBrZXlfc2RsICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTkyXQotI2RlZmluZSBrZXlfc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTkzXQotI2RlZmluZSBrZXlfc2VuZCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk0XQotI2RlZmluZSBrZXlfc2VvbCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk1XQotI2RlZmluZSBrZXlfc2V4aXQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk2XQotI2RlZmluZSBrZXlfc2ZpbmQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk3XQotI2RlZmluZSBrZXlfc2hlbHAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk4XQotI2RlZmluZSBrZXlfc2hvbWUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMTk5XQotI2RlZmluZSBrZXlfc2ljICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjAwXQotI2RlZmluZSBrZXlfc2xlZnQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjAxXQotI2RlZmluZSBrZXlfc21lc3NhZ2UgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjAyXQotI2RlZmluZSBrZXlfc21vdmUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjAzXQotI2RlZmluZSBrZXlfc25leHQgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA0XQotI2RlZmluZSBrZXlfc29wdGlvbnMgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA1XQotI2RlZmluZSBrZXlfc3ByZXZpb3VzICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA2XQotI2RlZmluZSBrZXlfc3ByaW50ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA3XQotI2RlZmluZSBrZXlfc3JlZG8gICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA4XQotI2RlZmluZSBrZXlfc3JlcGxhY2UgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjA5XQotI2RlZmluZSBrZXlfc3JpZ2h0ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjEwXQotI2RlZmluZSBrZXlfc3JzdW1lICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjExXQotI2RlZmluZSBrZXlfc3NhdmUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjEyXQotI2RlZmluZSBrZXlfc3N1c3BlbmQgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjEzXQotI2RlZmluZSBrZXlfc3VuZG8gICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE0XQotI2RlZmluZSByZXFfZm9yX2lucHV0ICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE1XQotI2RlZmluZSBrZXlfZjExICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE2XQotI2RlZmluZSBrZXlfZjEyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE3XQotI2RlZmluZSBrZXlfZjEzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE4XQotI2RlZmluZSBrZXlfZjE0ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjE5XQotI2RlZmluZSBrZXlfZjE1ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjIwXQotI2RlZmluZSBrZXlfZjE2ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjIxXQotI2RlZmluZSBrZXlfZjE3ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjIyXQotI2RlZmluZSBrZXlfZjE4ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjIzXQotI2RlZmluZSBrZXlfZjE5ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI0XQotI2RlZmluZSBrZXlfZjIwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI1XQotI2RlZmluZSBrZXlfZjIxICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI2XQotI2RlZmluZSBrZXlfZjIyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI3XQotI2RlZmluZSBrZXlfZjIzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI4XQotI2RlZmluZSBrZXlfZjI0ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjI5XQotI2RlZmluZSBrZXlfZjI1ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjMwXQotI2RlZmluZSBrZXlfZjI2ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjMxXQotI2RlZmluZSBrZXlfZjI3ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjMyXQotI2RlZmluZSBrZXlfZjI4ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjMzXQotI2RlZmluZSBrZXlfZjI5ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM0XQotI2RlZmluZSBrZXlfZjMwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM1XQotI2RlZmluZSBrZXlfZjMxICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM2XQotI2RlZmluZSBrZXlfZjMyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM3XQotI2RlZmluZSBrZXlfZjMzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM4XQotI2RlZmluZSBrZXlfZjM0ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjM5XQotI2RlZmluZSBrZXlfZjM1ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQwXQotI2RlZmluZSBrZXlfZjM2ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQxXQotI2RlZmluZSBrZXlfZjM3ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQyXQotI2RlZmluZSBrZXlfZjM4ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQzXQotI2RlZmluZSBrZXlfZjM5ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ0XQotI2RlZmluZSBrZXlfZjQwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ1XQotI2RlZmluZSBrZXlfZjQxICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ2XQotI2RlZmluZSBrZXlfZjQyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ3XQotI2RlZmluZSBrZXlfZjQzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ4XQotI2RlZmluZSBrZXlfZjQ0ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjQ5XQotI2RlZmluZSBrZXlfZjQ1ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjUwXQotI2RlZmluZSBrZXlfZjQ2ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjUxXQotI2RlZmluZSBrZXlfZjQ3ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjUyXQotI2RlZmluZSBrZXlfZjQ4ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjUzXQotI2RlZmluZSBrZXlfZjQ5ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU0XQotI2RlZmluZSBrZXlfZjUwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU1XQotI2RlZmluZSBrZXlfZjUxICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU2XQotI2RlZmluZSBrZXlfZjUyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU3XQotI2RlZmluZSBrZXlfZjUzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU4XQotI2RlZmluZSBrZXlfZjU0ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjU5XQotI2RlZmluZSBrZXlfZjU1ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjYwXQotI2RlZmluZSBrZXlfZjU2ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjYxXQotI2RlZmluZSBrZXlfZjU3ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjYyXQotI2RlZmluZSBrZXlfZjU4ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjYzXQotI2RlZmluZSBrZXlfZjU5ICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY0XQotI2RlZmluZSBrZXlfZjYwICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY1XQotI2RlZmluZSBrZXlfZjYxICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY2XQotI2RlZmluZSBrZXlfZjYyICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY3XQotI2RlZmluZSBrZXlfZjYzICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY4XQotI2RlZmluZSBjbHJfYm9sICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjY5XQotI2RlZmluZSBjbGVhcl9tYXJnaW5zICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjcwXQotI2RlZmluZSBzZXRfbGVmdF9tYXJnaW4gICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjcxXQotI2RlZmluZSBzZXRfcmlnaHRfbWFyZ2luICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjcyXQotI2RlZmluZSBsYWJlbF9mb3JtYXQgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjczXQotI2RlZmluZSBzZXRfY2xvY2sgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc0XQotI2RlZmluZSBkaXNwbGF5X2Nsb2NrICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc1XQotI2RlZmluZSByZW1vdmVfY2xvY2sgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc2XQotI2RlZmluZSBjcmVhdGVfd2luZG93ICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc3XQotI2RlZmluZSBnb3RvX3dpbmRvdyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc4XQotI2RlZmluZSBoYW5ndXAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjc5XQotI2RlZmluZSBkaWFsX3Bob25lICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjgwXQotI2RlZmluZSBxdWlja19kaWFsICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjgxXQotI2RlZmluZSB0b25lICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjgyXQotI2RlZmluZSBwdWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjgzXQotI2RlZmluZSBmbGFzaF9ob29rICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg0XQotI2RlZmluZSBmaXhlZF9wYXVzZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg1XQotI2RlZmluZSB3YWl0X3RvbmUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg2XQotI2RlZmluZSB1c2VyMCAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg3XQotI2RlZmluZSB1c2VyMSAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg4XQotI2RlZmluZSB1c2VyMiAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjg5XQotI2RlZmluZSB1c2VyMyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjkwXQotI2RlZmluZSB1c2VyNCAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjkxXQotI2RlZmluZSB1c2VyNSAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjkyXQotI2RlZmluZSB1c2VyNiAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjkzXQotI2RlZmluZSB1c2VyNyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk0XQotI2RlZmluZSB1c2VyOCAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk1XQotI2RlZmluZSB1c2VyOSAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk2XQotI2RlZmluZSBvcmlnX3BhaXIgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk3XQotI2RlZmluZSBvcmlnX2NvbG9ycyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk4XQotI2RlZmluZSBpbml0aWFsaXplX2NvbG9yICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMjk5XQotI2RlZmluZSBpbml0aWFsaXplX3BhaXIgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzAwXQotI2RlZmluZSBzZXRfY29sb3JfcGFpciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzAxXQotI2RlZmluZSBzZXRfZm9yZWdyb3VuZCAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzAyXQotI2RlZmluZSBzZXRfYmFja2dyb3VuZCAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzAzXQotI2RlZmluZSBjaGFuZ2VfY2hhcl9waXRjaCAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA0XQotI2RlZmluZSBjaGFuZ2VfbGluZV9waXRjaCAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA1XQotI2RlZmluZSBjaGFuZ2VfcmVzX2hvcnogICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA2XQotI2RlZmluZSBjaGFuZ2VfcmVzX3ZlcnQgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA3XQotI2RlZmluZSBkZWZpbmVfY2hhciAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA4XQotI2RlZmluZSBlbnRlcl9kb3VibGV3aWRlX21vZGUgICAgICAgICAgQ1VSIFN0cmluZ3NbMzA5XQotI2RlZmluZSBlbnRlcl9kcmFmdF9xdWFsaXR5ICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzEwXQotI2RlZmluZSBlbnRlcl9pdGFsaWNzX21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzExXQotI2RlZmluZSBlbnRlcl9sZWZ0d2FyZF9tb2RlICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzEyXQotI2RlZmluZSBlbnRlcl9taWNyb19tb2RlICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzEzXQotI2RlZmluZSBlbnRlcl9uZWFyX2xldHRlcl9xdWFsaXR5ICAgICAgQ1VSIFN0cmluZ3NbMzE0XQotI2RlZmluZSBlbnRlcl9ub3JtYWxfcXVhbGl0eSAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzE1XQotI2RlZmluZSBlbnRlcl9zaGFkb3dfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzE2XQotI2RlZmluZSBlbnRlcl9zdWJzY3JpcHRfbW9kZSAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzE3XQotI2RlZmluZSBlbnRlcl9zdXBlcnNjcmlwdF9tb2RlICAgICAgICAgQ1VSIFN0cmluZ3NbMzE4XQotI2RlZmluZSBlbnRlcl91cHdhcmRfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzE5XQotI2RlZmluZSBleGl0X2RvdWJsZXdpZGVfbW9kZSAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzIwXQotI2RlZmluZSBleGl0X2l0YWxpY3NfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzIxXQotI2RlZmluZSBleGl0X2xlZnR3YXJkX21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzIyXQotI2RlZmluZSBleGl0X21pY3JvX21vZGUgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzIzXQotI2RlZmluZSBleGl0X3NoYWRvd19tb2RlICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI0XQotI2RlZmluZSBleGl0X3N1YnNjcmlwdF9tb2RlICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI1XQotI2RlZmluZSBleGl0X3N1cGVyc2NyaXB0X21vZGUgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI2XQotI2RlZmluZSBleGl0X3Vwd2FyZF9tb2RlICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI3XQotI2RlZmluZSBtaWNyb19jb2x1bW5fYWRkcmVzcyAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI4XQotI2RlZmluZSBtaWNyb19kb3duICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzI5XQotI2RlZmluZSBtaWNyb19sZWZ0ICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzMwXQotI2RlZmluZSBtaWNyb19yaWdodCAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzMxXQotI2RlZmluZSBtaWNyb19yb3dfYWRkcmVzcyAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzMyXQotI2RlZmluZSBtaWNyb191cCAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzMzXQotI2RlZmluZSBvcmRlcl9vZl9waW5zICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM0XQotI2RlZmluZSBwYXJtX2Rvd25fbWljcm8gICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM1XQotI2RlZmluZSBwYXJtX2xlZnRfbWljcm8gICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM2XQotI2RlZmluZSBwYXJtX3JpZ2h0X21pY3JvICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM3XQotI2RlZmluZSBwYXJtX3VwX21pY3JvICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM4XQotI2RlZmluZSBzZWxlY3RfY2hhcl9zZXQgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzM5XQotI2RlZmluZSBzZXRfYm90dG9tX21hcmdpbiAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQwXQotI2RlZmluZSBzZXRfYm90dG9tX21hcmdpbl9wYXJtICAgICAgICAgQ1VSIFN0cmluZ3NbMzQxXQotI2RlZmluZSBzZXRfbGVmdF9tYXJnaW5fcGFybSAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQyXQotI2RlZmluZSBzZXRfcmlnaHRfbWFyZ2luX3Bhcm0gICAgICAgICAgQ1VSIFN0cmluZ3NbMzQzXQotI2RlZmluZSBzZXRfdG9wX21hcmdpbiAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ0XQotI2RlZmluZSBzZXRfdG9wX21hcmdpbl9wYXJtICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ1XQotI2RlZmluZSBzdGFydF9iaXRfaW1hZ2UgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ2XQotI2RlZmluZSBzdGFydF9jaGFyX3NldF9kZWYgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ3XQotI2RlZmluZSBzdG9wX2JpdF9pbWFnZSAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ4XQotI2RlZmluZSBzdG9wX2NoYXJfc2V0X2RlZiAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzQ5XQotI2RlZmluZSBzdWJzY3JpcHRfY2hhcmFjdGVycyAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzUwXQotI2RlZmluZSBzdXBlcnNjcmlwdF9jaGFyYWN0ZXJzICAgICAgICAgQ1VSIFN0cmluZ3NbMzUxXQotI2RlZmluZSB0aGVzZV9jYXVzZV9jciAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzUyXQotI2RlZmluZSB6ZXJvX21vdGlvbiAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzUzXQotI2RlZmluZSBjaGFyX3NldF9uYW1lcyAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU0XQotI2RlZmluZSBrZXlfbW91c2UgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU1XQotI2RlZmluZSBtb3VzZV9pbmZvICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU2XQotI2RlZmluZSByZXFfbW91c2VfcG9zICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU3XQotI2RlZmluZSBnZXRfbW91c2UgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU4XQotI2RlZmluZSBzZXRfYV9mb3JlZ3JvdW5kICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzU5XQotI2RlZmluZSBzZXRfYV9iYWNrZ3JvdW5kICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzYwXQotI2RlZmluZSBwa2V5X3BsYWIgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzYxXQotI2RlZmluZSBkZXZpY2VfdHlwZSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzYyXQotI2RlZmluZSBjb2RlX3NldF9pbml0ICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzYzXQotI2RlZmluZSBzZXQwX2Rlc19zZXEgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY0XQotI2RlZmluZSBzZXQxX2Rlc19zZXEgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY1XQotI2RlZmluZSBzZXQyX2Rlc19zZXEgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY2XQotI2RlZmluZSBzZXQzX2Rlc19zZXEgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY3XQotI2RlZmluZSBzZXRfbHJfbWFyZ2luICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY4XQotI2RlZmluZSBzZXRfdGJfbWFyZ2luICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzY5XQotI2RlZmluZSBiaXRfaW1hZ2VfcmVwZWF0ICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzcwXQotI2RlZmluZSBiaXRfaW1hZ2VfbmV3bGluZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzcxXQotI2RlZmluZSBiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuICAgICAgQ1VSIFN0cmluZ3NbMzcyXQotI2RlZmluZSBjb2xvcl9uYW1lcyAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzczXQotI2RlZmluZSBkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbiAgICAgICAgQ1VSIFN0cmluZ3NbMzc0XQotI2RlZmluZSBlbmRfYml0X2ltYWdlX3JlZ2lvbiAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzc1XQotI2RlZmluZSBzZXRfY29sb3JfYmFuZCAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzc2XQotI2RlZmluZSBzZXRfcGFnZV9sZW5ndGggICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzc3XQotI2RlZmluZSBkaXNwbGF5X3BjX2NoYXIgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzc4XQotI2RlZmluZSBlbnRlcl9wY19jaGFyc2V0X21vZGUgICAgICAgICAgQ1VSIFN0cmluZ3NbMzc5XQotI2RlZmluZSBleGl0X3BjX2NoYXJzZXRfbW9kZSAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzgwXQotI2RlZmluZSBlbnRlcl9zY2FuY29kZV9tb2RlICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzgxXQotI2RlZmluZSBleGl0X3NjYW5jb2RlX21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzgyXQotI2RlZmluZSBwY190ZXJtX29wdGlvbnMgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzgzXQotI2RlZmluZSBzY2FuY29kZV9lc2NhcGUgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzg0XQotI2RlZmluZSBhbHRfc2NhbmNvZGVfZXNjICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzg1XQotI2RlZmluZSBlbnRlcl9ob3Jpem9udGFsX2hsX21vZGUgICAgICAgQ1VSIFN0cmluZ3NbMzg2XQotI2RlZmluZSBlbnRlcl9sZWZ0X2hsX21vZGUgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzg3XQotI2RlZmluZSBlbnRlcl9sb3dfaGxfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzg4XQotI2RlZmluZSBlbnRlcl9yaWdodF9obF9tb2RlICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzg5XQotI2RlZmluZSBlbnRlcl90b3BfaGxfbW9kZSAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzkwXQotI2RlZmluZSBlbnRlcl92ZXJ0aWNhbF9obF9tb2RlICAgICAgICAgQ1VSIFN0cmluZ3NbMzkxXQotI2RlZmluZSBzZXRfYV9hdHRyaWJ1dGVzICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzkyXQotI2RlZmluZSBzZXRfcGdsZW5faW5jaCAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzkzXQotCi0jZGVmaW5lIEJPT0xXUklURSAzNwotI2RlZmluZSBOVU1XUklURSAgMzMKLSNkZWZpbmUgU1RSV1JJVEUgIDM5NAotCi0vKiBvbGRlciBzeW5vbnltcyBmb3Igc29tZSBjYXBhYmlsaXRpZXMgKi8KLSNkZWZpbmUgYmVlaGl2ZV9nbGl0Y2gJbm9fZXNjX2N0bGMKLSNkZWZpbmUgdGVsZXJheV9nbGl0Y2gJZGVzdF90YWJzX21hZ2ljX3Ntc28KLSNkZWZpbmUgbWljcm9fY2hhcl9zaXplIG1pY3JvX2NvbF9zaXplCi0KLSNpZmRlZiBfX0lOVEVSTkFMX0NBUFNfVklTSUJMRQotI2RlZmluZSB0ZXJtY2FwX2luaXQyICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzk0XQotI2RlZmluZSB0ZXJtY2FwX3Jlc2V0ICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzk1XQotI2RlZmluZSBtYWdpY19jb29raWVfZ2xpdGNoX3VsICAgICAgICAgQ1VSIE51bWJlcnNbMzNdCi0jZGVmaW5lIGJhY2tzcGFjZXNfd2l0aF9icyAgICAgICAgICAgICBDVVIgQm9vbGVhbnNbMzddCi0jZGVmaW5lIGNydF9ub19zY3JvbGxpbmcgICAgICAgICAgICAgICBDVVIgQm9vbGVhbnNbMzhdCi0jZGVmaW5lIG5vX2NvcnJlY3RseV93b3JraW5nX2NyICAgICAgICBDVVIgQm9vbGVhbnNbMzldCi0jZGVmaW5lIGNhcnJpYWdlX3JldHVybl9kZWxheSAgICAgICAgICBDVVIgTnVtYmVyc1szNF0KLSNkZWZpbmUgbmV3X2xpbmVfZGVsYXkgICAgICAgICAgICAgICAgIENVUiBOdW1iZXJzWzM1XQotI2RlZmluZSBsaW5lZmVlZF9pZl9ub3RfbGYgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzk2XQotI2RlZmluZSBiYWNrc3BhY2VfaWZfbm90X2JzICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzk3XQotI2RlZmluZSBnbnVfaGFzX21ldGFfa2V5ICAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzQwXQotI2RlZmluZSBsaW5lZmVlZF9pc19uZXdsaW5lICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzQxXQotI2RlZmluZSBiYWNrc3BhY2VfZGVsYXkgICAgICAgICAgICAgICAgQ1VSIE51bWJlcnNbMzZdCi0jZGVmaW5lIGhvcml6b250YWxfdGFiX2RlbGF5ICAgICAgICAgICBDVVIgTnVtYmVyc1szN10KLSNkZWZpbmUgbnVtYmVyX29mX2Z1bmN0aW9uX2tleXMgICAgICAgIENVUiBOdW1iZXJzWzM4XQotI2RlZmluZSBvdGhlcl9ub25fZnVuY3Rpb25fa2V5cyAgICAgICAgQ1VSIFN0cmluZ3NbMzk4XQotI2RlZmluZSBhcnJvd19rZXlfbWFwICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbMzk5XQotI2RlZmluZSBoYXNfaGFyZHdhcmVfdGFicyAgICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzQyXQotI2RlZmluZSByZXR1cm5fZG9lc19jbHJfZW9sICAgICAgICAgICAgQ1VSIEJvb2xlYW5zWzQzXQotI2RlZmluZSBhY3NfdWxjb3JuZXIgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDAwXQotI2RlZmluZSBhY3NfbGxjb3JuZXIgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDAxXQotI2RlZmluZSBhY3NfdXJjb3JuZXIgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDAyXQotI2RlZmluZSBhY3NfbHJjb3JuZXIgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDAzXQotI2RlZmluZSBhY3NfbHRlZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA0XQotI2RlZmluZSBhY3NfcnRlZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA1XQotI2RlZmluZSBhY3NfYnRlZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA2XQotI2RlZmluZSBhY3NfdHRlZSAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA3XQotI2RlZmluZSBhY3NfaGxpbmUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA4XQotI2RlZmluZSBhY3NfdmxpbmUgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDA5XQotI2RlZmluZSBhY3NfcGx1cyAgICAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDEwXQotI2RlZmluZSBtZW1vcnlfbG9jayAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDExXQotI2RlZmluZSBtZW1vcnlfdW5sb2NrICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDEyXQotI2RlZmluZSBib3hfY2hhcnNfMSAgICAgICAgICAgICAgICAgICAgQ1VSIFN0cmluZ3NbNDEzXQotI2VuZGlmIC8qIF9fSU5URVJOQUxfQ0FQU19WSVNJQkxFICovCi0KLQotLyoKLSAqIFByZWRlZmluZWQgdGVybWluZm8gYXJyYXkgc2l6ZXMKLSAqLwotI2RlZmluZSBCT09MQ09VTlQgNDQKLSNkZWZpbmUgTlVNQ09VTlQgIDM5Ci0jZGVmaW5lIFNUUkNPVU5UICA0MTQKLQotLyogdXNlZCBieSBjb2RlIGZvciBjb21wYXJpbmcgZW50cmllcyAqLwotI2RlZmluZSBhY3NfY2hhcnNfaW5kZXgJIDE0NgotCi10eXBlZGVmIHN0cnVjdCB0ZXJtdHlwZSB7CS8qIGluLWNvcmUgZm9ybSBvZiB0ZXJtaW5mbyBkYXRhICovCi0gICAgY2hhciAgKnRlcm1fbmFtZXM7CQkvKiBzdHJfdGFibGUgb2Zmc2V0IG9mIHRlcm0gbmFtZXMgKi8KLSAgICBjaGFyICAqc3RyX3RhYmxlOwkJLyogcG9pbnRlciB0byBzdHJpbmcgdGFibGUgKi8KLSAgICBOQ1VSU0VTX1NCT09MICAqQm9vbGVhbnM7CS8qIGFycmF5IG9mIGJvb2xlYW4gdmFsdWVzICovCi0gICAgc2hvcnQgKk51bWJlcnM7CQkvKiBhcnJheSBvZiBpbnRlZ2VyIHZhbHVlcyAqLwotICAgIGNoYXIgICoqU3RyaW5nczsJCS8qIGFycmF5IG9mIHN0cmluZyBvZmZzZXRzICovCi0KLSNpZiBOQ1VSU0VTX1hOQU1FUwotICAgIGNoYXIgICpleHRfc3RyX3RhYmxlOwkvKiBwb2ludGVyIHRvIGV4dGVuZGVkIHN0cmluZyB0YWJsZSAqLwotICAgIGNoYXIgICoqZXh0X05hbWVzOwkJLyogY29ycmVzcG9uZGluZyBuYW1lcyAqLwotCi0gICAgdW5zaWduZWQgc2hvcnQgbnVtX0Jvb2xlYW5zOy8qIGNvdW50IHRvdGFsIEJvb2xlYW5zICovCi0gICAgdW5zaWduZWQgc2hvcnQgbnVtX051bWJlcnM7CS8qIGNvdW50IHRvdGFsIE51bWJlcnMgKi8KLSAgICB1bnNpZ25lZCBzaG9ydCBudW1fU3RyaW5nczsJLyogY291bnQgdG90YWwgU3RyaW5ncyAqLwotCi0gICAgdW5zaWduZWQgc2hvcnQgZXh0X0Jvb2xlYW5zOy8qIGNvdW50IGV4dGVuc2lvbnMgdG8gQm9vbGVhbnMgKi8KLSAgICB1bnNpZ25lZCBzaG9ydCBleHRfTnVtYmVyczsJLyogY291bnQgZXh0ZW5zaW9ucyB0byBOdW1iZXJzICovCi0gICAgdW5zaWduZWQgc2hvcnQgZXh0X1N0cmluZ3M7CS8qIGNvdW50IGV4dGVuc2lvbnMgdG8gU3RyaW5ncyAqLwotI2VuZGlmIC8qIE5DVVJTRVNfWE5BTUVTICovCi0KLX0gVEVSTVRZUEU7Ci0KLXR5cGVkZWYgc3RydWN0IHRlcm0gewkJLyogZGVzY3JpYmUgYW4gYWN0dWFsIHRlcm1pbmFsICovCi0gICAgVEVSTVRZUEUJdHlwZTsJCS8qIHRlcm1pbmFsIHR5cGUgZGVzY3JpcHRpb24gKi8KLSAgICBzaG9ydAlGaWxlZGVzOwkvKiBmaWxlIGRlc2NyaXB0aW9uIGJlaW5nIHdyaXR0ZW4gdG8gKi8KLSAgICBUVFkJCU90dHliLAkJLyogb3JpZ2luYWwgc3RhdGUgb2YgdGhlIHRlcm1pbmFsICovCi0JCU50dHliOwkJLyogY3VycmVudCBzdGF0ZSBvZiB0aGUgdGVybWluYWwgKi8KLSAgICBpbnQJCV9iYXVkcmF0ZTsJLyogdXNlZCB0byBjb21wdXRlIHBhZGRpbmcgKi8KLSAgICBjaGFyICogICAgICBfdGVybW5hbWU7ICAgICAgLyogdXNlZCBmb3IgdGVybW5hbWUoKSAqLwotfSBURVJNSU5BTDsKLQotI2lmIDAgfHwgMAotTkNVUlNFU19XUkFQUEVEX1ZBUihURVJNSU5BTCAqLCBjdXJfdGVybSk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIGJvb2xuYW1lcyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIGJvb2xjb2Rlcyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIGJvb2xmbmFtZXMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBudW1uYW1lcyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIG51bWNvZGVzKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgbnVtZm5hbWVzKTsKLU5DVVJTRVNfV1JBUFBFRF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiwgc3RybmFtZXMpOwotTkNVUlNFU19XUkFQUEVEX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqLCBzdHJjb2Rlcyk7Ci1OQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIHN0cmZuYW1lcyk7Ci0KLSNkZWZpbmUgY3VyX3Rlcm0gICBOQ1VSU0VTX1BVQkxJQ19WQVIoY3VyX3Rlcm0oKSkKLSNkZWZpbmUgYm9vbG5hbWVzICBOQ1VSU0VTX1BVQkxJQ19WQVIoYm9vbG5hbWVzKCkpCi0jZGVmaW5lIGJvb2xjb2RlcyAgTkNVUlNFU19QVUJMSUNfVkFSKGJvb2xjb2RlcygpKQotI2RlZmluZSBib29sZm5hbWVzIE5DVVJTRVNfUFVCTElDX1ZBUihib29sZm5hbWVzKCkpCi0jZGVmaW5lIG51bW5hbWVzICAgTkNVUlNFU19QVUJMSUNfVkFSKG51bW5hbWVzKCkpCi0jZGVmaW5lIG51bWNvZGVzICAgTkNVUlNFU19QVUJMSUNfVkFSKG51bWNvZGVzKCkpCi0jZGVmaW5lIG51bWZuYW1lcyAgTkNVUlNFU19QVUJMSUNfVkFSKG51bWZuYW1lcygpKQotI2RlZmluZSBzdHJuYW1lcyAgIE5DVVJTRVNfUFVCTElDX1ZBUihzdHJuYW1lcygpKQotI2RlZmluZSBzdHJjb2RlcyAgIE5DVVJTRVNfUFVCTElDX1ZBUihzdHJjb2RlcygpKQotI2RlZmluZSBzdHJmbmFtZXMgIE5DVVJTRVNfUFVCTElDX1ZBUihzdHJmbmFtZXMoKSkKLQotI2Vsc2UKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihURVJNSU5BTCAqKSBjdXJfdGVybTsKLQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xuYW1lc1tdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xjb2Rlc1tdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIGJvb2xmbmFtZXNbXTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBudW1uYW1lc1tdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIG51bWNvZGVzW107Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgbnVtZm5hbWVzW107Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgc3RybmFtZXNbXTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBzdHJjb2Rlc1tdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIHN0cmZuYW1lc1tdOwotCi0jZW5kaWYKLQotLyogaW50ZXJuYWxzICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfc2V0X3R0eV9tb2RlIChUVFkgKmJ1Zik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfZ2V0X3R0eV9tb2RlIChUVFkgKmJ1Zik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfcmVhZF9lbnRyeSAoY29uc3QgY2hhciAqIGNvbnN0LCBjaGFyICogY29uc3QsIFRFUk1UWVBFICpjb25zdCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfcmVhZF9maWxlX2VudHJ5IChjb25zdCBjaGFyICpjb25zdCwgVEVSTVRZUEUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfcmVhZF90ZXJtdHlwZSAoVEVSTVRZUEUgKiwgY2hhciAqLCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX25jX2ZpcnN0X25hbWUgKGNvbnN0IGNoYXIgKmNvbnN0KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19uYW1lX21hdGNoIChjb25zdCBjaGFyICpjb25zdCwgY29uc3QgY2hhciAqY29uc3QsIGNvbnN0IGNoYXIgKmNvbnN0KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBURVJNVFlQRSAqKSBfbmNfZmFsbGJhY2sgKGNvbnN0IGNoYXIgKik7Ci0KLS8qIGVudHJ5IHBvaW50cyAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFRFUk1JTkFMICopIHNldF9jdXJ0ZXJtIChURVJNSU5BTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIGRlbF9jdXJ0ZXJtIChURVJNSU5BTCAqKTsKLQotLyogbWlzY2VsbGFuZW91cyBlbnRyeSBwb2ludHMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHJlc3RhcnR0ZXJtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgaW50LCBpbnQgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBzZXR1cHRlcm0gKE5DVVJTRVNfQ09OU1QgY2hhciAqLGludCxpbnQgKik7Ci0KLS8qIHRlcm1pbmZvIGVudHJ5IHBvaW50cywgYWxzbyBkZWNsYXJlZCBpbiBjdXJzZXMuaCAqLwotI2lmICFkZWZpbmVkKF9fTkNVUlNFU19IKQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGlnZXRzdHIgKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2hhcikgdHR5dHlwZVtdOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgcHV0cCAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRpZ2V0ZmxhZyAoTkNVUlNFU19DT05TVCBjaGFyICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdGlnZXRudW0gKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsKLQotI2lmIDEgLyogTkNVUlNFU19UUEFSTV9WQVJBUkdTICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybSAoTkNVUlNFU19DT05TVCBjaGFyICosIC4uLik7CS8qIHNwZWNpYWwgKi8KLSNlbHNlCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSB0cGFybSAoTkNVUlNFU19DT05TVCBjaGFyICosIGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nLGxvbmcsbG9uZyxsb25nKTsJLyogc3BlY2lhbCAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdHBhcm1fdmFyYXJncyAoTkNVUlNFU19DT05TVCBjaGFyICosIC4uLik7CS8qIHNwZWNpYWwgKi8KLSNlbmRpZgotCi0jZW5kaWYgLyogX19OQ1VSU0VTX0ggKi8KLQotLyogdGVybWNhcCBkYXRhYmFzZSBlbXVsYXRpb24gKFhQRzQgdXNlcyBjb25zdCBvbmx5IGZvciAybmQgcGFyYW0gb2YgdGdldGVudCkgKi8KLSNpZiAhZGVmaW5lZChOQ1VSU0VTX1RFUk1DQVBfSF9pbmNsKQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGdldHN0ciAoTkNVUlNFU19DT05TVCBjaGFyICosIGNoYXIgKiopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgdGdvdG8gKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdGdldGVudCAoY2hhciAqLCBjb25zdCBjaGFyICopOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgdGdldGZsYWcgKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRnZXRudW0gKE5DVVJTRVNfQ09OU1QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRwdXRzIChjb25zdCBjaGFyICosIGludCwgaW50ICgqKShpbnQpKTsKLSNlbmRpZiAvKiBOQ1VSU0VTX1RFUk1DQVBfSF9pbmNsICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBOQ1VSU0VTX1RFUk1fSF9pbmNsICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Rlcm1fZW50cnkuaCBiL2luY2x1ZGUvdGVybV9lbnRyeS5oCmluZGV4IGZiODc1NDAuLmIxMjcxMGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdGVybV9lbnRyeS5oCisrKyBiL2luY2x1ZGUvdGVybV9lbnRyeS5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsNyArMzIsNyBAQAogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTgtb24gICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiAkSWQ6IHRlcm1fZW50cnkuaCx2IDEuMzUgMjAwOC8wOC8xNiAxNjoxNjowMyB0b20gRXhwICQgKi8KKy8qICRJZDogdGVybV9lbnRyeS5oLHYgMS40NSAyMDE0LzExLzAxIDE0OjQ3OjAwIHRvbSBFeHAgJCAqLwogCiAvKgogICoJdGVybV9lbnRyeS5oIC0tIGludGVyZmFjZSB0byBlbnRyeS1tYW5pcHVsYXRpb24gY29kZQpAQCAtNDcsMjggKzQ3LDQ2IEBACiAKICNpbmNsdWRlIDx0ZXJtLmg+CiAKKyAgICAvKgorICAgICAqIHNlZSBkYl9pdGVyYXRvci5jIC0gdGhpcyBlbnVtZXJhdGlvbiBsaXN0cyB0aGUgcGxhY2VzIHNlYXJjaGVkIGZvciBhCisgICAgICogdGVybWluYWwgZGVzY3JpcHRpb24gYW5kIGRlZmluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIHNlYXJjaGVkLgorICAgICAqLworICAgIHR5cGVkZWYgZW51bSB7CisJZGJkVElDID0gMCwJCS8qIHNwZWNpYWwsIHVzZWQgYnkgdGljIHdoZW4gd3JpdGluZyBlbnRyeSAqLworI2lmIE5DVVJTRVNfVVNFX0RBVEFCQVNFCisJZGJkRW52T25jZSwJCS8qIHRoZSAkVEVSTUlORk8gZW52aXJvbm1lbnQgdmFyaWFibGUgKi8KKwlkYmRIb21lLAkJLyogJEhPTUUvLnRlcm1pbmZvICovCisJZGJkRW52TGlzdCwJCS8qIHRoZSAkVEVSTUlORk9fRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLworCWRiZENmZ0xpc3QsCQkvKiB0aGUgY29tcGlsZWQtaW4gVEVSTUlORk9fRElSUyB2YWx1ZSAqLworCWRiZENmZ09uY2UsCQkvKiB0aGUgY29tcGlsZWQtaW4gVEVSTUlORk8gdmFsdWUgKi8KKyNlbmRpZgorI2lmIE5DVVJTRVNfVVNFX1RFUk1DQVAKKwlkYmRFbnZPbmNlMiwJCS8qIHRoZSAkVEVSTUNBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLworCWRiZEVudkxpc3QyLAkJLyogdGhlICRURVJNUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLworCWRiZENmZ0xpc3QyLAkJLyogdGhlIGNvbXBpbGVkLWluIFRFUk1QQVRIICovCisjZW5kaWYKKwlkYmRMQVNUCisgICAgfSBEQkRJUlM7CisKICNkZWZpbmUgTUFYX1VTRVMJMzIKICNkZWZpbmUgTUFYX0NST1NTTElOS1MJMTYKIAotdHlwZWRlZiBzdHJ1Y3QgZW50cnkgewotCVRFUk1UWVBFCXR0ZXJtOwotCXVuc2lnbmVkCW51c2VzOwotCXN0cnVjdAotICAgICAgICB7Ci0JICAgIGNoYXIJCSpuYW1lOwotCSAgICBzdHJ1Y3QgZW50cnkJKmxpbms7Ci0JICAgIGxvbmcJCWxpbmU7Ci0gICAgICAgIH0KLQl1c2VzW01BWF9VU0VTXTsKLQlpbnQJCW5jcm9zc2xpbmtzOwotCXN0cnVjdCBlbnRyeQkqY3Jvc3NsaW5rc1tNQVhfQ1JPU1NMSU5LU107Ci0JbG9uZwkJY3N0YXJ0LCBjZW5kOwotCWxvbmcJCXN0YXJ0bGluZTsKLQlzdHJ1Y3QgZW50cnkJKm5leHQ7Ci0Jc3RydWN0IGVudHJ5CSpsYXN0OwotfQotRU5UUlk7Ci0KKyAgICB0eXBlZGVmIHN0cnVjdCBlbnRyeSB7CisJVEVSTVRZUEUgdHRlcm07CisJdW5zaWduZWQgbnVzZXM7CisJc3RydWN0IHsKKwkgICAgY2hhciAqbmFtZTsKKwkgICAgc3RydWN0IGVudHJ5ICpsaW5rOworCSAgICBsb25nIGxpbmU7CisJfSB1c2VzW01BWF9VU0VTXTsKKwlpbnQgbmNyb3NzbGlua3M7CisJc3RydWN0IGVudHJ5ICpjcm9zc2xpbmtzW01BWF9DUk9TU0xJTktTXTsKKwlsb25nIGNzdGFydCwgY2VuZDsKKwlsb25nIHN0YXJ0bGluZTsKKwlzdHJ1Y3QgZW50cnkgKm5leHQ7CisJc3RydWN0IGVudHJ5ICpsYXN0OworICAgIH0gRU5UUlk7CisvKiAqSU5ERU5ULU9GRiogKi8KICNpZiBOQ1VSU0VTX1hOQU1FUwogI2RlZmluZSBOVU1fQk9PTEVBTlModHApICh0cCktPm51bV9Cb29sZWFucwogI2RlZmluZSBOVU1fTlVNQkVSUyh0cCkgICh0cCktPm51bV9OdW1iZXJzCkBAIC04MSwxMiArOTksMTggQEAKICNkZWZpbmUgRVhUX05BTUVTKHRwLGksbGltaXQsaW5kZXgsdGFibGUpIHRhYmxlW2ldCiAjZW5kaWYKIAotI2RlZmluZSBOVU1fRVhUX05BTUVTKHRwKSAoKHRwKS0+ZXh0X0Jvb2xlYW5zICsgKHRwKS0+ZXh0X051bWJlcnMgKyAodHApLT5leHRfU3RyaW5ncykKKyNkZWZpbmUgTlVNX0VYVF9OQU1FUyh0cCkgKHVuc2lnbmVkKSAoKHRwKS0+ZXh0X0Jvb2xlYW5zICsgKHRwKS0+ZXh0X051bWJlcnMgKyAodHApLT5leHRfU3RyaW5ncykKIAogI2RlZmluZSBmb3JfZWFjaF9ib29sZWFuKG4sdHApIGZvcihuID0gMDsgbiA8IE5VTV9CT09MRUFOUyh0cCk7IG4rKykKICNkZWZpbmUgZm9yX2VhY2hfbnVtYmVyKG4sdHApICBmb3IobiA9IDA7IG4gPCBOVU1fTlVNQkVSUyh0cCk7ICBuKyspCiAjZGVmaW5lIGZvcl9lYWNoX3N0cmluZyhuLHRwKSAgZm9yKG4gPSAwOyBuIDwgTlVNX1NUUklOR1ModHApOyAgbisrKQogCisjaWYgTkNVUlNFU19YTkFNRVMKKyNkZWZpbmUgZm9yX2VhY2hfZXh0X2Jvb2xlYW4obix0cCkgZm9yKG4gPSBCT09MQ09VTlQ7IG4gPCBOVU1fQk9PTEVBTlModHApOyBuKyspCisjZGVmaW5lIGZvcl9lYWNoX2V4dF9udW1iZXIobix0cCkgIGZvcihuID0gTlVNQ09VTlQ7IG4gPCBOVU1fTlVNQkVSUyh0cCk7ICBuKyspCisjZGVmaW5lIGZvcl9lYWNoX2V4dF9zdHJpbmcobix0cCkgIGZvcihuID0gU1RSQ09VTlQ7IG4gPCBOVU1fU1RSSU5HUyh0cCk7ICBuKyspCisjZW5kaWYKKwogI2RlZmluZSBFeHRCb29sbmFtZSh0cCxpLG5hbWVzKSBFWFRfTkFNRVModHAsIGksIEJPT0xDT1VOVCwgKGkgLSAodHAtPm51bV9Cb29sZWFucyAtIHRwLT5leHRfQm9vbGVhbnMpKSwgbmFtZXMpCiAjZGVmaW5lIEV4dE51bW5hbWUodHAsaSxuYW1lcykgIEVYVF9OQU1FUyh0cCwgaSwgTlVNQ09VTlQsIChpIC0gKHRwLT5udW1fTnVtYmVycyAtIHRwLT5leHRfTnVtYmVycykpICsgdHAtPmV4dF9Cb29sZWFucywgbmFtZXMpCiAjZGVmaW5lIEV4dFN0cm5hbWUodHAsaSxuYW1lcykgIEVYVF9OQU1FUyh0cCwgaSwgU1RSQ09VTlQsIChpIC0gKHRwLT5udW1fU3RyaW5ncyAtIHRwLT5leHRfU3RyaW5ncykpICsgKHRwLT5leHRfTnVtYmVycyArIHRwLT5leHRfQm9vbGVhbnMpLCBuYW1lcykKQEAgLTEyNiw3ICsxNTAsNyBAQAogCiAvKiBhbGxvY190dHlwZS5jOiBlbGVtZW50YXJ5IGFsbG9jYXRpb24gY29kZSAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19hbGlnbl90ZXJtdHlwZSAoVEVSTVRZUEUgKiwgVEVSTVRZUEUgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2NvcHlfdGVybXR5cGUgKFRFUk1UWVBFICosIFRFUk1UWVBFICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19jb3B5X3Rlcm10eXBlIChURVJNVFlQRSAqLCBjb25zdCBURVJNVFlQRSAqKTsKIAogLyogZnJlZV90dHlwZS5jOiBlbGVtZW50YXJ5IGFsbG9jYXRpb24gY29kZSAqLwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19mcmVlX3Rlcm10eXBlIChURVJNVFlQRSAqKTsKQEAgLTE0Niw3ICsxNzAsNyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX2NhcGNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogCiAvKiB3cml0ZV9lbnRyeS5jOiB3cml0aW5nIGFuIGVudHJ5IHRvIHRoZSBmaWxlIHN5c3RlbSAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zZXRfd3JpdGVkaXIgKGNoYXIgKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3NldF93cml0ZWRpciAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfd3JpdGVfZW50cnkgKFRFUk1UWVBFICpjb25zdCk7CiAKIC8qIGNvbXBfcGFyc2UuYzogZW50cnkgbGlzdCBoYW5kbGluZyAqLwpAQCAtMTYwLDkgKzE4NCw5IEBACiAKIC8qIHRyYWNlX3huYW1lcy5jICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3RyYWNlX3huYW1lcyAoVEVSTVRZUEUgKik7CisvKiAqSU5ERU5ULU9OKiAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5kaWYgLyogTkNVUlNFU19URVJNX0VOVFJZX0hfaW5jbCAqLworI2VuZGlmCQkJCS8qIE5DVVJTRVNfVEVSTV9FTlRSWV9IX2luY2wgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGVybWNhcC5oIGIvaW5jbHVkZS90ZXJtY2FwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjA4ODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS90ZXJtY2FwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKLSAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogJElkOiB0ZXJtY2FwLmguaW4sdiAxLjE2IDIwMDEvMDMvMjQgMjE6NTM6MjcgdG9tIEV4cCAkICovCi0KLSNpZm5kZWYgTkNVUlNFU19URVJNQ0FQX0hfaW5jbAotI2RlZmluZSBOQ1VSU0VTX1RFUk1DQVBfSF9pbmNsCTEKLQotI3VuZGVmICBOQ1VSU0VTX1ZFUlNJT04KLSNkZWZpbmUgTkNVUlNFU19WRVJTSU9OICI1LjciCi0KLSNpbmNsdWRlIDxuY3Vyc2VzX2RsbC5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLXsKLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KLSN1bmRlZiAgTkNVUlNFU19DT05TVCAKLSNkZWZpbmUgTkNVUlNFU19DT05TVCAvKm5vdGhpbmcqLyAKLQotI3VuZGVmICBOQ1VSU0VTX09TUEVFRCAKLSNkZWZpbmUgTkNVUlNFU19PU1BFRUQgc2hvcnQgCi0KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2hhcikgUEM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIgKikgVVA7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIgKikgQkM7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfT1NQRUVEKSBvc3BlZWQ7IAotCi0jaWYgIWRlZmluZWQoTkNVUlNFU19URVJNX0hfaW5jbCkKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRnZXRzdHIgKE5DVVJTRVNfQ09OU1QgY2hhciAqLCBjaGFyICoqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIHRnb3RvIChjb25zdCBjaGFyICosIGludCwgaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRnZXRlbnQgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIHRnZXRmbGFnIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0Z2V0bnVtIChOQ1VSU0VTX0NPTlNUIGNoYXIgKik7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSB0cHV0cyAoY29uc3QgY2hhciAqLCBpbnQsIGludCAoKikoaW50KSk7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIE5DVVJTRVNfVEVSTUNBUF9IX2luY2wgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGljLmggYi9pbmNsdWRlL3RpYy5oCmluZGV4IDRlMTAzOTkuLjUyOGExYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdGljLmgKKysrIGIvaW5jbHVkZS90aWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMzLDE0ICszMywxNCBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCi0gKiAkSWQ6IHRpYy5oLHYgMS42MiAyMDA3LzA4LzExIDE2OjEyOjQzIHRvbSBFeHAgJAorICogJElkOiB0aWMuaCx2IDEuNjkgMjAxMi8wMy8xNyAxODoyMjoxMCB0b20gRXhwICQKICAqCXRpYy5oIC0gR2xvYmFsIHZhcmlhYmxlcyBhbmQgc3RydWN0dXJlcyBmb3IgdGhlIHRlcm1pbmZvCiAgKgkJCWNvbXBpbGVyLgogICovCiAKICNpZm5kZWYgX19USUNfSAogI2RlZmluZSBfX1RJQ19ICi0KKy8qICpJTkRFTlQtT0ZGKiAqLwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMTgzLDYgKzE4Myw4IEBACiAKICNlbmRpZgogCit0eXBlZGVmIHNob3J0IEhhc2hWYWx1ZTsKKwogCS8qCiAJICogVGhlIGZpbGUgY29tcF9jYXB0YWIuYyBjb250YWlucyBhbiBhcnJheSBvZiB0aGVzZSBzdHJ1Y3R1cmVzLCBvbmUKIAkgKiBwZXIgcG9zc2libGUgY2FwYWJpbGl0eS4gIFRoZXNlIGFyZSBpbmRleGVkIGJ5IGEgaGFzaCB0YWJsZSBhcnJheSBvZgpAQCAtMTkzLDEwICsxOTUsMjEgQEAKIHsKIAljb25zdCBjaGFyICpudGVfbmFtZTsJLyogbmFtZSB0byBoYXNoIG9uICovCiAJaW50CW50ZV90eXBlOwkvKiBCT09MRUFOLCBOVU1CRVIgb3IgU1RSSU5HICovCi0Jc2hvcnQJbnRlX2luZGV4OwkvKiBpbmRleCBvZiBhc3NvY2lhdGVkIHZhcmlhYmxlIGluIGl0cyBhcnJheSAqLwotCXNob3J0CW50ZV9saW5rOwkvKiBpbmRleCBpbiB0YWJsZSBvZiBuZXh0IGhhc2gsIG9yIC0xICovCisJSGFzaFZhbHVlIG50ZV9pbmRleDsJLyogaW5kZXggb2YgYXNzb2NpYXRlZCB2YXJpYWJsZSBpbiBpdHMgYXJyYXkgKi8KKwlIYXNoVmFsdWUgbnRlX2xpbms7CS8qIGluZGV4IGluIHRhYmxlIG9mIG5leHQgaGFzaCwgb3IgLTEgKi8KIH07CiAKKwkvKgorCSAqIFVzZSB0aGlzIHN0cnVjdHVyZSB0byBoaWRlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGVybWluZm8gYW5kIHRlcm1jYXAKKwkgKiB0YWJsZXMuCisJICovCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgdGFibGVfc2l6ZTsKKwljb25zdCBIYXNoVmFsdWUgKnRhYmxlX2RhdGE7CisJSGFzaFZhbHVlICgqaGFzaF9vZikoY29uc3QgY2hhciAqKTsKKwlpbnQgKCpjb21wYXJlX25hbWVzKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Cit9IEhhc2hEYXRhOworCiBzdHJ1Y3QgYWxpYXMKIHsKIAljb25zdCBjaGFyCSpmcm9tOwpAQCAtMjA1LDExICsyMTgsMTggQEAKIH07CiAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqKSBfbmNfZ2V0X3RhYmxlIChib29sKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBzaG9ydCAqKSBfbmNfZ2V0X2hhc2hfdGFibGUgKGJvb2wpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNvbnN0IEhhc2hEYXRhICopIF9uY19nZXRfaGFzaF9pbmZvIChib29sKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBIYXNoVmFsdWUgKikgX25jX2dldF9oYXNoX3RhYmxlIChib29sKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBzdHJ1Y3QgYWxpYXMgKikgX25jX2dldF9hbGlhc190YWJsZSAoYm9vbCk7CiAKICNkZWZpbmUgTk9URk9VTkQJKChzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqKSAwKQogCisvKgorICogVGhlIGNhc3RzIGFyZSByZXF1aXJlZCBmb3IgY29ycmVjdCBzaWduLXByb3BhZ2F0aW9uIHdpdGggc3lzdGVtcyBzdWNoIGFzCisgKiBBSVgsIElSSVg2NCwgU29sYXJpcyB3aGljaCBkZWZhdWx0IHRvIHVuc2lnbmVkIGNoYXJhY3RlcnMuICBUaGUgQyBzdGFuZGFyZAorICogbGVhdmVzIHRoaXMgZGV0YWlsIHVuc3BlY2lmaWVkLgorICovCisKIC8qIG91dC1vZi1iYW5kIHZhbHVlcyBmb3IgcmVwcmVzZW50aW5nIGFic2VudCBjYXBhYmlsaXRpZXMgKi8KICNkZWZpbmUgQUJTRU5UX0JPT0xFQU4JCSgoc2lnbmVkIGNoYXIpLTEpCS8qIDI1NSAqLwogI2RlZmluZSBBQlNFTlRfTlVNRVJJQwkJKC0xKQpAQCAtMjM0LDYgKzI1NCw4IEBACiAjZGVmaW5lIFRFUk1JTkZPICIvdXNyL3NoYXJlL3Rlcm1pbmZvIgogI2VuZGlmCiAKKyNpZmRlZiBOQ1VSU0VTX1RFUk1fRU5UUllfSF9pbmNsCisKIC8qIGFjY2Vzcy5jICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQodW5zaWduZWQpIF9uY19wYXRobGFzdCAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfaXNfYWJzX3BhdGggKGNvbnN0IGNoYXIgKik7CkBAIC0yNDQsOSArMjY2LDkgQEAKIAogLyogY29tcF9oYXNoLmM6IG5hbWUgbG9va3VwICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKikgX25jX2ZpbmRfZW50cnkKLQkoY29uc3QgY2hhciAqLCBjb25zdCBzaG9ydCAqKTsKKwkoY29uc3QgY2hhciAqLCBjb25zdCBIYXNoVmFsdWUgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKikgX25jX2ZpbmRfdHlwZV9lbnRyeQotCShjb25zdCBjaGFyICosIGludCwgY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKik7CisJKGNvbnN0IGNoYXIgKiwgaW50LCBib29sKTsKIAogLyogY29tcF9zY2FuLmM6IGxleGljYWwgYW5hbHlzaXMgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICBfbmNfZ2V0X3Rva2VuIChib29sKTsKQEAgLTI1Niw2ICsyNzgsNyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIF9uY19jdXJyX2NvbDsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBfbmNfY3Vycl9saW5lOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIF9uY19zeW50YXg7CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGludCkgX25jX3N0cmljdF9ic2Q7CiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGxvbmcpIF9uY19jb21tZW50X2VuZDsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIobG9uZykgX25jX2NvbW1lbnRfc3RhcnQ7CiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKGxvbmcpIF9uY19jdXJyX2ZpbGVfcG9zOwpAQCAtMzAwLDIzICszMjMsNiBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBfbmNfcHJvZ25hbWU7CiAKIC8qIGRiX2l0ZXJhdG9yLmMgKi8KLXR5cGVkZWYgZW51bSB7Ci0gICAgZGJkVElDID0gMCwKLSNpZiBVU0VfREFUQUJBU0UKLSAgICBkYmRFbnZPbmNlLAotICAgIGRiZEhvbWUsCi0gICAgZGJkRW52TGlzdCwKLSAgICBkYmRDZmdMaXN0LAotICAgIGRiZENmZ09uY2UsCi0jZW5kaWYKLSNpZiBVU0VfVEVSTUNBUAotICAgIGRiZEVudk9uY2UyLAotICAgIGRiZEVudkxpc3QyLAotICAgIGRiZENmZ0xpc3QyLAotI2VuZGlmCi0gICAgZGJkTEFTVAotfSBEQkRJUlM7Ci0KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopIF9uY19uZXh0X2RiKERCRElSUyAqLCBpbnQgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKSBfbmNfdGljX2RpciAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZmlyc3RfZGIoREJESVJTICosIGludCAqKTsKQEAgLTMyNSw4ICszMzEsMTEgQEAKIC8qIHdyaXRlX2VudHJ5LmMgKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY190aWNfd3JpdHRlbiAodm9pZCk7CiAKKyNlbmRpZiAvKiBOQ1VSU0VTX1RFUk1fRU5UUllfSF9pbmNsICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKKy8qICpJTkRFTlQtT04qICovCiAjZW5kaWYgLyogX19USUNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91bmN0cmwuaCBiL2luY2x1ZGUvdW5jdHJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZGMyMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS91bmN0cmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgotICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCi0gKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKLSAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCi0gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKLSAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCi0gKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgotICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgotICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKLSAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCi0gKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogdW5jdHJsLmgKLSAqCi0gKiBEaXNwbGF5IGEgcHJpbnRhYmxlIHZlcnNpb24gb2YgYSBjb250cm9sIGNoYXJhY3Rlci4KLSAqIENvbnRyb2wgY2hhcmFjdGVycyBhcmUgZGlzcGxheWVkIGluIGNhcmV0IG5vdGF0aW9uICheeCksIERFTEVURSBpcyBkaXNwbGF5ZWQKLSAqIGFzIF4/LiBQcmludGFibGUgY2hhcmFjdGVycyBhcmUgZGlzcGxheWVkIGFzIGlzLgotICovCi0KLS8qICRJZDogdW5jdHJsLmguaW4sdiAxLjEwIDIwMDEvMDMvMjQgMjE6NTM6MjUgdG9tIEV4cCAkICovCi0KLSNpZm5kZWYgTkNVUlNFU19VTkNUUkxfSF9pbmNsCi0jZGVmaW5lIE5DVVJTRVNfVU5DVFJMX0hfaW5jbAkxCi0KLSN1bmRlZiAgTkNVUlNFU19WRVJTSU9OCi0jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTiAiNS43IgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpbmNsdWRlIDxjdXJzZXMuaD4KLQotI3VuZGVmIHVuY3RybAotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIHVuY3RybCAoY2h0eXBlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIE5DVVJTRVNfVU5DVFJMX0hfaW5jbCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91bmN0cmwuaC5pbiBiL2luY2x1ZGUvdW5jdHJsLmguaW4KaW5kZXggNzBkNzRiNy4uZTA4YmM4MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91bmN0cmwuaC5pbgorKysgYi9pbmNsdWRlL3VuY3RybC5oLmluCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OCwyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzksNyArMzksNyBAQAogICogYXMgXj8uIFByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgYXMgaXMuCiAgKi8KIAotLyogJElkOiB1bmN0cmwuaC5pbix2IDEuMTAgMjAwMS8wMy8yNCAyMTo1MzoyNSB0b20gRXhwICQgKi8KKy8qICRJZDogdW5jdHJsLmguaW4sdiAxLjExIDIwMDkvMDQvMTggMjE6MDA6NTIgdG9tIEV4cCAkICovCiAKICNpZm5kZWYgTkNVUlNFU19VTkNUUkxfSF9pbmNsCiAjZGVmaW5lIE5DVVJTRVNfVU5DVFJMX0hfaW5jbAkxCkBAIC01Niw2ICs1NiwxMCBAQAogI3VuZGVmIHVuY3RybAogTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIHVuY3RybCAoY2h0eXBlKTsKIAorI2lmIEBOQ1VSU0VTX1NQX0ZVTkNTQAorTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIE5DVVJTRVNfU1BfTkFNRSh1bmN0cmwpIChTQ1JFRU4qLCBjaHR5cGUpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vMS8xMTc4IGIvbGliL3Rlcm1pbmZvLzEvMTE3OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk0MWQwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vMS8xMTc4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzEvMTczMC1sbSBiL2xpYi90ZXJtaW5mby8xLzE3MzAtbG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzYwMTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzEvMTczMC1sbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby8yLzI2MjEgYi9saWIvdGVybWluZm8vMi8yNjIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzBkMjVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby8yLzI2MjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vMi8yNjIxLXdsIGIvbGliL3Rlcm1pbmZvLzIvMjYyMS13bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcwZDI1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vMi8yNjIxLXdsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzIvMjYyMUEgYi9saWIvdGVybWluZm8vMi8yNjIxQQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcwZDI1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vMi8yNjIxQQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby8yLzI2MjFhIGIvbGliL3Rlcm1pbmZvLzIvMjYyMWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGQyNWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzIvMjYyMWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vMy8zODZhdCBiL2xpYi90ZXJtaW5mby8zLzM4NmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgwZDExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby8zLzM4NmF0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzMvM2IxIGIvbGliL3Rlcm1pbmZvLzMvM2IxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDE4NDNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby8zLzNiMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby80LzQwMjVleCBiL2xpYi90ZXJtaW5mby80LzQwMjVleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk0YzFmMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNC80MDI1ZXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNC80MDI3ZXggYi9saWIvdGVybWluZm8vNC80MDI3ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NGMxZjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzQvNDAyN2V4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzQvNDQxMC13IGIvbGliL3Rlcm1pbmZvLzQvNDQxMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGQ5NmVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby80LzQ0MTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby81LzUwNTEgYi9saWIvdGVybWluZm8vNS81MDUxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzM3NjZjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby81LzUwNTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNS81NDEwLXcgYi9saWIvdGVybWluZm8vNS81NDEwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZDk2ZWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzUvNTQxMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzUvNTYyMCBiL2xpYi90ZXJtaW5mby81LzU2MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTY4ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzUvNTYyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby81LzU2MzAtMjQgYi9saWIvdGVybWluZm8vNS81NjMwLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWQzOTYzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby81LzU2MzAtMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNS81NjMwRE1ELTI0IGIvbGliL3Rlcm1pbmZvLzUvNTYzMERNRC0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFkMzk2My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNS81NjMwRE1ELTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzYvNjA1MyBiL2xpYi90ZXJtaW5mby82LzYwNTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTZlZGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzYvNjA1MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby82LzYwNTMtZGcgYi9saWIvdGVybWluZm8vNi82MDUzLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTE2ZWRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby82LzYwNTMtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNi82MDV4IGIvbGliL3Rlcm1pbmZvLzYvNjA1eApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUxNmVkYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNi82MDV4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzYvNjA1eC1kZyBiL2xpYi90ZXJtaW5mby82LzYwNXgtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTZlZGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzYvNjA1eC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby82LzYzMC1sbSBiL2xpYi90ZXJtaW5mby82LzYzMC1sbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzNjAxNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNi82MzAtbG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNi82MzBNVEctMjQgYi9saWIvdGVybWluZm8vNi82MzBNVEctMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZDM5NjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzYvNjMwTVRHLTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzcvNzMwTVRHLTI0IGIvbGliL3Rlcm1pbmZvLzcvNzMwTVRHLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBlNjUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby83LzczME1URy0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby83LzczME1URy00MSBiL2xpYi90ZXJtaW5mby83LzczME1URy00MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0NTQwZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNy83MzBNVEctNDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vNy83MzBNVEctNDFyIGIvbGliL3Rlcm1pbmZvLzcvNzMwTVRHLTQxcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5MDFlNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vNy83MzBNVEctNDFyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzcvNzMwTVRHciBiL2xpYi90ZXJtaW5mby83LzczME1UR3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMzcyM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzcvNzMwTVRHcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby83LzczME1UR3ItMjQgYi9saWIvdGVybWluZm8vNy83MzBNVEdyLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTU1OGM4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby83LzczME1UR3ItMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vOC84NTEwIGIvbGliL3Rlcm1pbmZvLzgvODUxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhZTdmMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vOC84NTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvLzkvOTU1LWhiIGIvbGliL3Rlcm1pbmZvLzkvOTU1LWhiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTZhYjg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby85Lzk1NS1oYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby85Lzk1NS13IGIvbGliL3Rlcm1pbmZvLzkvOTU1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZGE2NjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvLzkvOTU1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vOS85dGVybSBiL2xpYi90ZXJtaW5mby85Lzl0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGY1NTk1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby85Lzl0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL0EvQXBwbGVfVGVybWluYWwgYi9saWIvdGVybWluZm8vQS9BcHBsZV9UZXJtaW5hbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQxNGYzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vQS9BcHBsZV9UZXJtaW5hbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9FL0V0ZXJtIGIvbGliL3Rlcm1pbmZvL0UvRXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2FhMjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL0UvRXRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vRS9FdGVybS0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9FL0V0ZXJtLTI1NmNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTg5ZTI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9FL0V0ZXJtLTI1NmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL0UvRXRlcm0tODhjb2xvciBiL2xpYi90ZXJtaW5mby9FL0V0ZXJtLTg4Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZjA5NTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL0UvRXRlcm0tODhjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9FL0V0ZXJtLWNvbG9yIGIvbGliL3Rlcm1pbmZvL0UvRXRlcm0tY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2FhMjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL0UvRXRlcm0tY29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vTC9MRlQtUEM4NTAgYi9saWIvdGVybWluZm8vTC9MRlQtUEM4NTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzViNDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL0wvTEZULVBDODUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL00vTXR4T3JiIGIvbGliL3Rlcm1pbmZvL00vTXR4T3JiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2RhMjQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9NL010eE9yYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9NL010eE9yYjE2MiBiL2xpYi90ZXJtaW5mby9NL010eE9yYjE2MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAwOWI0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vTS9NdHhPcmIxNjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vTS9NdHhPcmIyMDQgYi9saWIvdGVybWluZm8vTS9NdHhPcmIyMDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZTQ5YjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL00vTXR4T3JiMjA0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL04vTkNSMjYwVlQzMDBXUFAgYi9saWIvdGVybWluZm8vTi9OQ1IyNjBWVDMwMFdQUApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyNWU0NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vTi9OQ1IyNjBWVDMwMFdQUAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9OL05DUlZUMTAwV1BQIGIvbGliL3Rlcm1pbmZvL04vTkNSVlQxMDBXUFAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMGFkNTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL04vTkNSVlQxMDBXUFAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QMTIgYi9saWIvdGVybWluZm8vUC9QMTIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1N2Y1OWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDEyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDEyLU0gYi9saWIvdGVybWluZm8vUC9QMTItTQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZDMyMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QMTItTQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9QL1AxMi1NLVcgYi9saWIvdGVybWluZm8vUC9QMTItTS1XCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTUyYjYwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9QL1AxMi1NLVcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QMTItVyBiL2xpYi90ZXJtaW5mby9QL1AxMi1XCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODFkYWU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9QL1AxMi1XCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDE0IGIvbGliL3Rlcm1pbmZvL1AvUDE0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjg2NDI3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9QL1AxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9QL1AxNC1NIGIvbGliL3Rlcm1pbmZvL1AvUDE0LU0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZGQzMTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDE0LU0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QMTQtTS1XIGIvbGliL3Rlcm1pbmZvL1AvUDE0LU0tVwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI2NDc1ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QMTQtTS1XCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDE0LVcgYi9saWIvdGVybWluZm8vUC9QMTQtVwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlOGRiMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QMTQtVworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9QL1A0IGIvbGliL3Rlcm1pbmZvL1AvUDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNTNlNDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QNSBiL2xpYi90ZXJtaW5mby9QL1A1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTg0OGQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9QL1A1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDcgYi9saWIvdGVybWluZm8vUC9QNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5YjRmZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9QL1A4IGIvbGliL3Rlcm1pbmZvL1AvUDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZmQ5ZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QOC1XIGIvbGliL3Rlcm1pbmZvL1AvUDgtVwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYyNTRkMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QOC1XCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDkgYi9saWIvdGVybWluZm8vUC9QOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxN2RlZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUC9QOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9QL1A5LTggYi9saWIvdGVybWluZm8vUC9QOS04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkxYTliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9QL1A5LTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUC9QOS04LVcgYi9saWIvdGVybWluZm8vUC9QOS04LVcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZTNkYTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDktOC1XCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1AvUDktVyBiL2xpYi90ZXJtaW5mby9QL1A5LVcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MzUwOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1AvUDktVworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9RL1EzMDYtOC1wYyBiL2xpYi90ZXJtaW5mby9RL1EzMDYtOC1wYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ4YWY2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUS9RMzA2LTgtcGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUS9RMzEwLXZpcC1IIGIvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtSApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNmNGU5Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUS9RMzEwLXZpcC1ICisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtSC1hbSBiL2xpYi90ZXJtaW5mby9RL1EzMTAtdmlwLUgtYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZjRlOTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtSC1hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9RL1EzMTAtdmlwLUh3IGIvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtSHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDlmMDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtSHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vUS9RMzEwLXZpcC13IGIvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcxMGEyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vUS9RMzEwLXZpcC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtdy1hbSBiL2xpYi90ZXJtaW5mby9RL1EzMTAtdmlwLXctYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MTBhMmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1EvUTMxMC12aXAtdy1hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9YL1gtaHB0ZXJtIGIvbGliL3Rlcm1pbmZvL1gvWC1ocHRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiY2NmZmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL1gvWC1ocHRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hMjEwIGIvbGliL3Rlcm1pbmZvL2EvYTIxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyMGM2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hMjEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYTgwIGIvbGliL3Rlcm1pbmZvL2EvYTgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGI5OWM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2E4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2E5ODAgYi9saWIvdGVybWluZm8vYS9hOTgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODZjNWE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2E5ODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYTQwODAgYi9saWIvdGVybWluZm8vYS9hYTQwODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYTFlNDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWE0MDgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhIGIvbGliL3Rlcm1pbmZvL2EvYWFhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTlkNGQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYStkZWMgYi9saWIvdGVybWluZm8vYS9hYWErZGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjUxNGQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYStkZWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWErcnYgYi9saWIvdGVybWluZm8vYS9hYWErcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMGJkNTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhK3J2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhK3VuayBiL2xpYi90ZXJtaW5mby9hL2FhYSt1bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NDYxNzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhK3VuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0xOCBiL2xpYi90ZXJtaW5mby9hL2FhYS0xOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYwM2FlYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMTgtcnYgYi9saWIvdGVybWluZm8vYS9hYWEtMTgtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlOGM4NGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTE4LXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTIwIGIvbGliL3Rlcm1pbmZvL2EvYWFhLTIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjdiYjJkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS0yMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0yMiBiL2xpYi90ZXJtaW5mby9hL2FhYS0yMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRjNjJhMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMjQgYi9saWIvdGVybWluZm8vYS9hYWEtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNjBiNDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTI0LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTI0LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDVhNTFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS0yNC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0yNiBiL2xpYi90ZXJtaW5mby9hL2FhYS0yNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0NTVmNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMjYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMjggYi9saWIvdGVybWluZm8vYS9hYWEtMjgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTc5OWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTI4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwIGIvbGliL3Rlcm1pbmZvL2EvYWFhLTMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTlkNGQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS0zMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0zMC1jdHh0IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLWN0eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NmRmMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLWN0eHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMzAtcnYgYi9saWIvdGVybWluZm8vYS9hYWEtMzAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZWQ3NTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXJ2LWN0eHQgYi9saWIvdGVybWluZm8vYS9hYWEtMzAtcnYtY3R4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzllMmJmMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMzAtcnYtY3R4dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0zMC1zIGIvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOWI4YzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMzAtcy1jdHh0IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMtY3R4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg4YTlhZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMzAtcy1jdHh0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMtcnYgYi9saWIvdGVybWluZm8vYS9hYWEtMzAtcy1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc5YjE0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtMzAtcy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS0zMC1zLXJ2LWN0IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMtcnYtY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZDQzM2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTMwLXMtcnYtY3QKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtMzYgYi9saWIvdGVybWluZm8vYS9hYWEtMzYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZTg3ZDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTM2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTM2LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTM2LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDM5NDFhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS0zNi1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS00MCBiL2xpYi90ZXJtaW5mby9hL2FhYS00MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiMGVkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtNDAtcnYgYi9saWIvdGVybWluZm8vYS9hYWEtNDAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNmMzNzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTQwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTQ4IGIvbGliL3Rlcm1pbmZvL2EvYWFhLTQ4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjY1MzU3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS00OAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS00OC1ydiBiL2xpYi90ZXJtaW5mby9hL2FhYS00OC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg3MzA1ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtNDgtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtNjAgYi9saWIvdGVybWluZm8vYS9hYWEtNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNzE2OTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTYwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTYwLWRlYy1ydiBiL2xpYi90ZXJtaW5mby9hL2FhYS02MC1kZWMtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMzAxMmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLTYwLWRlYy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS02MC1ydiBiL2xpYi90ZXJtaW5mby9hL2FhYS02MC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ1MzU0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtNjAtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtNjAtcyBiL2xpYi90ZXJtaW5mby9hL2FhYS02MC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjFjMmY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS02MC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLTYwLXMtcnYgYi9saWIvdGVybWluZm8vYS9hYWEtNjAtcy1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0OWMxZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtNjAtcy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS1jdHh0IGIvbGliL3Rlcm1pbmZvL2EvYWFhLWN0eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NmRmMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLWN0eHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtZGIgYi9saWIvdGVybWluZm8vYS9hYWEtZGIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ODg5MDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLWRiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLXJ2IGIvbGliL3Rlcm1pbmZvL2EvYWFhLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWVkNzU1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS1ydi1jdHh0IGIvbGliL3Rlcm1pbmZvL2EvYWFhLXJ2LWN0eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZTJiZjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLXJ2LWN0eHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtcnYtdW5rIGIvbGliL3Rlcm1pbmZvL2EvYWFhLXJ2LXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZiOTBhNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtcnYtdW5rCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLXMgYi9saWIvdGVybWluZm8vYS9hYWEtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5YjhjNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYWEtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS1zLWN0eHQgYi9saWIvdGVybWluZm8vYS9hYWEtcy1jdHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODhhOWFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS1zLWN0eHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYWEtcy1ydiBiL2xpYi90ZXJtaW5mby9hL2FhYS1zLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzliMTQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS1zLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWFhLXMtcnYtY3R4dCBiL2xpYi90ZXJtaW5mby9hL2FhYS1zLXJ2LWN0eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZDQzM2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWFhLXMtcnYtY3R4dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FhYS11bmsgYi9saWIvdGVybWluZm8vYS9hYWEtdW5rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTQ2MTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FhYS11bmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYXMxOTAxIGIvbGliL3Rlcm1pbmZvL2EvYWFzMTkwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRjZGU5ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYXMxOTAxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWJtODAgYi9saWIvdGVybWluZm8vYS9hYm04MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNiZWU4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hYm04MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FibTg1IGIvbGliL3Rlcm1pbmZvL2EvYWJtODUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmUzNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWJtODUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hYm04NWUgYi9saWIvdGVybWluZm8vYS9hYm04NWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmU5MjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWJtODVlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWJtODVoIGIvbGliL3Rlcm1pbmZvL2EvYWJtODVoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzg0MjkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FibTg1aAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FibTg1aC1vbGQgYi9saWIvdGVybWluZm8vYS9hYm04NWgtb2xkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjBhMDI5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FibTg1aC1vbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hY3Q0IGIvbGliL3Rlcm1pbmZvL2EvYWN0NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0YmQxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hY3Q0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWN0NSBiL2xpYi90ZXJtaW5mby9hL2FjdDUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjI5NmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWN0NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkZHJpbmZvIGIvbGliL3Rlcm1pbmZvL2EvYWRkcmluZm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjUxYWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRkcmluZm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZGRzOTgwIGIvbGliL3Rlcm1pbmZvL2EvYWRkczk4MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg2YzVhNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZGRzOTgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRkc3ZpZXdwb2ludCBiL2xpYi90ZXJtaW5mby9hL2FkZHN2aWV3cG9pbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjVhOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRkc3ZpZXdwb2ludAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkZHN2cDYwIGIvbGliL3Rlcm1pbmZvL2EvYWRkc3ZwNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMDg1OGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRkc3ZwNjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0rc2dyIGIvbGliL3Rlcm1pbmZvL2EvYWRtK3NncgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZiYzk5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0rc2dyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtMSBiL2xpYi90ZXJtaW5mby9hL2FkbTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYjgyMjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTExIGIvbGliL3Rlcm1pbmZvL2EvYWRtMTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NjRiNWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0xMTc4IGIvbGliL3Rlcm1pbmZvL2EvYWRtMTE3OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk0MWQwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0xMTc4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtMTIgYi9saWIvdGVybWluZm8vYS9hZG0xMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQxZjEyOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0xMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTFhIGIvbGliL3Rlcm1pbmZvL2EvYWRtMWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYjgyMjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0yIGIvbGliL3Rlcm1pbmZvL2EvYWRtMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI5Y2Q3NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtMjAgYi9saWIvdGVybWluZm8vYS9hZG0yMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1N2Y4NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0yMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTIxIGIvbGliL3Rlcm1pbmZvL2EvYWRtMjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YzMzYzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0yMiBiL2xpYi90ZXJtaW5mby9hL2FkbTIyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzEzMDU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FkbTIyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtMyBiL2xpYi90ZXJtaW5mby9hL2FkbTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhOGU5ZWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTMxIGIvbGliL3Rlcm1pbmZvL2EvYWRtMzEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZjJhOTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMzEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0zMS1vbGQgYi9saWIvdGVybWluZm8vYS9hZG0zMS1vbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNmQ5ZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtMzEtb2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtMzYgYi9saWIvdGVybWluZm8vYS9hZG0zNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk2YjJiMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG0zNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTNhIGIvbGliL3Rlcm1pbmZvL2EvYWRtM2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MDQ4ZmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtM2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG0zYSsgYi9saWIvdGVybWluZm8vYS9hZG0zYSsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNzRjMTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtM2ErCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWRtNDIgYi9saWIvdGVybWluZm8vYS9hZG00MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIyNWJmNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FkbTQyLW5zIGIvbGliL3Rlcm1pbmZvL2EvYWRtNDItbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YjQ1ZmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWRtNDItbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hZG01IGIvbGliL3Rlcm1pbmZvL2EvYWRtNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlZmVmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZG01CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWVwcm8gYi9saWIvdGVybWluZm8vYS9hZXBybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjZmY1OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hZXBybworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FpeHRlcm0gYi9saWIvdGVybWluZm8vYS9haXh0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTI5YWE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FpeHRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9haXh0ZXJtLTE2Y29sb3IgYi9saWIvdGVybWluZm8vYS9haXh0ZXJtLTE2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYzYxZWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWl4dGVybS0xNmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWl4dGVybS1tIGIvbGliL3Rlcm1pbmZvL2EvYWl4dGVybS1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTg0YTgwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FpeHRlcm0tbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FpeHRlcm0tbS1vbGQgYi9saWIvdGVybWluZm8vYS9haXh0ZXJtLW0tb2xkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Njk0OWM5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FpeHRlcm0tbS1vbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9haiBiL2xpYi90ZXJtaW5mby9hL2FqCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGI2MWY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FqCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWo1MTAgYi9saWIvdGVybWluZm8vYS9hajUxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkZTk0MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hajUxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FqODMwIGIvbGliL3Rlcm1pbmZvL2EvYWo4MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYjYxZjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWo4MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hajgzMiBiL2xpYi90ZXJtaW5mby9hL2FqODMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGI2MWY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FqODMyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0MiBiL2xpYi90ZXJtaW5mby9hL2FsdDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGYzZjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdDMgYi9saWIvdGVybWluZm8vYS9hbHQzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDlkZWUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHQ0IGIvbGliL3Rlcm1pbmZvL2EvYWx0NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjNWJiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbHQ0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0NSBiL2xpYi90ZXJtaW5mby9hL2FsdDUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOWRlZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdDcgYi9saWIvdGVybWluZm8vYS9hbHQ3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDIxZWYzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdDcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHQ3cGMgYi9saWIvdGVybWluZm8vYS9hbHQ3cGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNDExNzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0N3BjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0by1oMTkgYi9saWIvdGVybWluZm8vYS9hbHRvLWgxOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4ZTFkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbHRvLWgxOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdG8taGVhdGggYi9saWIvdGVybWluZm8vYS9hbHRvLWhlYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNThlMWRhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG8taGVhdGgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHRvaDE5IGIvbGliL3Rlcm1pbmZvL2EvYWx0b2gxOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4ZTFkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbHRvaDE5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0b2hlYXRoIGIvbGliL3Rlcm1pbmZvL2EvYWx0b2hlYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNThlMWRhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG9oZWF0aAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdG9zLTIgYi9saWIvdGVybWluZm8vYS9hbHRvcy0yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRmM2YwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG9zLTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHRvcy0zIGIvbGliL3Rlcm1pbmZvL2EvYWx0b3MtMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5ZGVlMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbHRvcy0zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0b3MtNCBiL2xpYi90ZXJtaW5mby9hL2FsdG9zLTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYzViYjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0b3MtNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdG9zLTUgYi9saWIvdGVybWluZm8vYS9hbHRvcy01CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDlkZWUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG9zLTUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHRvczIgYi9saWIvdGVybWluZm8vYS9hbHRvczIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGYzZjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0b3MyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0b3MzIGIvbGliL3Rlcm1pbmZvL2EvYWx0b3MzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDlkZWUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG9zMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdG9zNCBiL2xpYi90ZXJtaW5mby9hL2FsdG9zNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjNWJiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbHRvczQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbHRvczUgYi9saWIvdGVybWluZm8vYS9hbHRvczUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOWRlZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0b3M1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYWx0b3M3IGIvbGliL3Rlcm1pbmZvL2EvYWx0b3M3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDIxZWYzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FsdG9zNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FsdG9zN3BjIGIvbGliL3Rlcm1pbmZvL2EvYWx0b3M3cGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNDExNzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYWx0b3M3cGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbWJhcyBiL2xpYi90ZXJtaW5mby9hL2FtYmFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTlkNGQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FtYmFzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1iYXNzYWRvciBiL2xpYi90ZXJtaW5mby9hL2FtYmFzc2Fkb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOWQ0ZDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1iYXNzYWRvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtaWdhIGIvbGliL3Rlcm1pbmZvL2EvYW1pZ2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMzNkMWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1pZ2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbWlnYS04Yml0IGIvbGliL3Rlcm1pbmZvL2EvYW1pZ2EtOGJpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZhZjc1Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbWlnYS04Yml0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1pZ2EtaCBiL2xpYi90ZXJtaW5mby9hL2FtaWdhLWgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Njg4NzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1pZ2EtaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtaWdhLXZuYyBiL2xpYi90ZXJtaW5mby9hL2FtaWdhLXZuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFlYmUwYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbWlnYS12bmMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbXAyMTkgYi9saWIvdGVybWluZm8vYS9hbXAyMTkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMDQ5MGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1wMjE5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1wMjE5dyBiL2xpYi90ZXJtaW5mby9hL2FtcDIxOXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NWJkNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1wMjE5dworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtcGV4LTIxOSBiL2xpYi90ZXJtaW5mby9hL2FtcGV4LTIxOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMwNDkwZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleC0yMTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbXBleC0yMTl3IGIvbGliL3Rlcm1pbmZvL2EvYW1wZXgtMjE5dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ1YmQ2NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleC0yMTl3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgtMjMyIGIvbGliL3Rlcm1pbmZvL2EvYW1wZXgtMjMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OThjMzNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FtcGV4LTIzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtcGV4MTc1IGIvbGliL3Rlcm1pbmZvL2EvYW1wZXgxNzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZTAzMTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgxNzUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbXBleDE3NS1iIGIvbGliL3Rlcm1pbmZvL2EvYW1wZXgxNzUtYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI2NDY2Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleDE3NS1iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgyMTAgYi9saWIvdGVybWluZm8vYS9hbXBleDIxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyMGM2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleDIxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtcGV4MjE5IGIvbGliL3Rlcm1pbmZvL2EvYW1wZXgyMTkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMDQ5MGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgyMTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbXBleDIxOXcgYi9saWIvdGVybWluZm8vYS9hbXBleDIxOXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NWJkNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgyMTl3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW1wZXgyMzIgYi9saWIvdGVybWluZm8vYS9hbXBleDIzMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk4YzMzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleDIzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FtcGV4MjMydyBiL2xpYi90ZXJtaW5mby9hL2FtcGV4MjMydwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVmYmJkZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleDIzMncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbXBleDgwIGIvbGliL3Rlcm1pbmZvL2EvYW1wZXg4MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRiOTljNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbXBleDgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5uYXJib3I0MDgwIGIvbGliL3Rlcm1pbmZvL2EvYW5uYXJib3I0MDgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmExZTQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FubmFyYm9yNDA4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2kgYi9saWIvdGVybWluZm8vYS9hbnNpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmU1OGIyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK2Fycm93cyBiL2xpYi90ZXJtaW5mby9hL2Fuc2krYXJyb3dzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDgyOTk1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krYXJyb3dzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStjc3IgYi9saWIvdGVybWluZm8vYS9hbnNpK2NzcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE5NmYzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK2NzcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2krY3VwIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStjdXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMjhkNzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaStjdXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK2VucSBiL2xpYi90ZXJtaW5mby9hL2Fuc2krZW5xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTAzZDMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krZW5xCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStlcmFzZSBiL2xpYi90ZXJtaW5mby9hL2Fuc2krZXJhc2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MjRiZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaStlcmFzZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2kraWRjIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStpZGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZjhlMjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaStpZGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK2lkbCBiL2xpYi90ZXJtaW5mby9hL2Fuc2kraWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGE4ODRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kraWRsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStpZGwxIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStpZGwxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDI1MzdkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kraWRsMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2kraW5pdHRhYnMgYi9saWIvdGVybWluZm8vYS9hbnNpK2luaXR0YWJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTIyMWRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kraW5pdHRhYnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK2xvY2FsIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStsb2NhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFhMjI0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK2xvY2FsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStsb2NhbDEgYi9saWIvdGVybWluZm8vYS9hbnNpK2xvY2FsMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwMmRkYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK2xvY2FsMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2krcHAgYi9saWIvdGVybWluZm8vYS9hbnNpK3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmNlODI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK3JjYSBiL2xpYi90ZXJtaW5mby9hL2Fuc2krcmNhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWE1MzEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krcmNhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStyZXAgYi9saWIvdGVybWluZm8vYS9hbnNpK3JlcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMwZGM3Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK3JlcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2krc2dyIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStzZ3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlY2NjMDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaStzZ3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK3NncmJvbGQgYi9saWIvdGVybWluZm8vYS9hbnNpK3NncmJvbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NzczZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaStzZ3Jib2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaStzZ3JkaW0gYi9saWIvdGVybWluZm8vYS9hbnNpK3NncmRpbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFhOTQxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK3NncmRpbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2krc2dyc28gYi9saWIvdGVybWluZm8vYS9hbnNpK3NncnNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmQ1NmEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krc2dyc28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpK3NncnVsIGIvbGliL3Rlcm1pbmZvL2EvYW5zaStzZ3J1bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU2Njg1My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpK3NncnVsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaSt0YWJzIGIvbGliL3Rlcm1pbmZvL2EvYW5zaSt0YWJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTNjZWYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2krdGFicworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktY29sb3ItMi1lbXggYi9saWIvdGVybWluZm8vYS9hbnNpLWNvbG9yLTItZW14CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWNmYmE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktY29sb3ItMi1lbXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpLWNvbG9yLTMtZW14IGIvbGliL3Rlcm1pbmZvL2EvYW5zaS1jb2xvci0zLWVteApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJlMGVmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLWNvbG9yLTMtZW14CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaS1lbXggYi9saWIvdGVybWluZm8vYS9hbnNpLWVteApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzNDNmNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLWVteAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktZ2VuZXJpYyBiL2xpYi90ZXJtaW5mby9hL2Fuc2ktZ2VuZXJpYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3ZTNmYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLWdlbmVyaWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpLW0gYi9saWIvdGVybWluZm8vYS9hbnNpLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MmQ1ZDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaS1taW5pIGIvbGliL3Rlcm1pbmZvL2EvYW5zaS1taW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjFmYjdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktbWluaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktbW9ubyBiL2xpYi90ZXJtaW5mby9hL2Fuc2ktbW9ubwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcyZDVkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpLW1yIGIvbGliL3Rlcm1pbmZvL2EvYW5zaS1tcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyMjFlOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLW1yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaS1tdGFicyBiL2xpYi90ZXJtaW5mby9hL2Fuc2ktbXRhYnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlZDMwZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaS1tdGFicworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktbnQgYi9saWIvdGVybWluZm8vYS9hbnNpLW50CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmJjOGI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2ktbnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpLnN5cyBiL2xpYi90ZXJtaW5mby9hL2Fuc2kuc3lzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDBhMzNiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kuc3lzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaS5zeXMtb2xkIGIvbGliL3Rlcm1pbmZvL2EvYW5zaS5zeXMtb2xkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGNmYTJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2kuc3lzLW9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2kuc3lzayBiL2xpYi90ZXJtaW5mby9hL2Fuc2kuc3lzawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0ODQxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpLnN5c2sKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpNDNtIGIvbGliL3Rlcm1pbmZvL2EvYW5zaTQzbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkMDRiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpNDNtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaTc3IGIvbGliL3Rlcm1pbmZvL2EvYW5zaTc3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTcwZjMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2k3NworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgyNSBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNDczYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpODB4MjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpODB4MjUtbW9ubyBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgyNS1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmI5ZTA5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgyNS1tb25vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDI1LXJhdyBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgyNS1yYXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NjExNGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDI1LXJhdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgzMCBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyZTQ2Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpODB4MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpODB4MzAtbW9ubyBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgzMC1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQ3YThkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHgzMC1tb25vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDQzIGIvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDQzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2MwZmY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg0MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg0My1tb25vIGIvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDQzLW1vbm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOTg4M2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDQzLW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpODB4NTAgYi9saWIvdGVybWluZm8vYS9hbnNpODB4NTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YjhjZjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaTgweDUwLW1vbm8gYi9saWIvdGVybWluZm8vYS9hbnNpODB4NTAtbW9ubwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlYTVmMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpODB4NTAtbW9ubworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg2MCBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg2MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdjZWRjNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpODB4NjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpODB4NjAtbW9ubyBiL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg2MC1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGI3M2RlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2k4MHg2MC1tb25vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaWwgYi9saWIvdGVybWluZm8vYS9hbnNpbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDliOGNmMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hbnNpbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2lsLW1vbm8gYi9saWIvdGVybWluZm8vYS9hbnNpbC1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmVhNWYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2lsLW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpcyBiL2xpYi90ZXJtaW5mby9hL2Fuc2lzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ0NzNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2lzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYW5zaXMtbW9ubyBiL2xpYi90ZXJtaW5mby9hL2Fuc2lzLW1vbm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYjllMDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaXMtbW9ubworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fuc2lzeXNrIGIvbGliL3Rlcm1pbmZvL2EvYW5zaXN5c2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNDg0MTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYW5zaXN5c2sKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hbnNpdyBiL2xpYi90ZXJtaW5mby9hL2Fuc2l3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODYxMTRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fuc2l3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXAtdm04MCBiL2xpYi90ZXJtaW5mby9hL2FwLXZtODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZjhkZmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXAtdm04MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwbCBiL2xpYi90ZXJtaW5mby9hL2FwbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5YTU3NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcGwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcG9sbG8gYi9saWIvdGVybWluZm8vYS9hcG9sbG8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YTM1NjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBvbGxvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBvbGxvXzE1UCBiL2xpYi90ZXJtaW5mby9hL2Fwb2xsb18xNVAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyODQ3MzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBvbGxvXzE1UAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2Fwb2xsb18xOUwgYi9saWIvdGVybWluZm8vYS9hcG9sbG9fMTlMCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTJkMzU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2Fwb2xsb18xOUwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcG9sbG9fY29sb3IgYi9saWIvdGVybWluZm8vYS9hcG9sbG9fY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMTdmMmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBvbGxvX2NvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUtODAgYi9saWIvdGVybWluZm8vYS9hcHBsZS04MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ1YzVjNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcHBsZS04MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLWFlIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGUtYWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YTIzMzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUtYWUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcHBsZS1zb3JvYyBiL2xpYi90ZXJtaW5mby9hL2FwcGxlLXNvcm9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTVmY2I4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLXNvcm9jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdXRlcm0gYi9saWIvdGVybWluZm8vYS9hcHBsZS11dGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlZWJmNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcHBsZS11dGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLXV0ZXJtLXZiIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdXRlcm0tdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Nzg1NWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdXRlcm0tdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcHBsZS12aWRleCBiL2xpYi90ZXJtaW5mby9hL2FwcGxlLXZpZGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWIyODY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLXZpZGV4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdmlkZXgyIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdmlkZXgyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQzNWIyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLXZpZGV4MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwcGxlLXZpZGV4MyBiL2xpYi90ZXJtaW5mby9hL2FwcGxlLXZpZGV4MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYyOWU4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcHBsZS12aWRleDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcHBsZS12bTgwIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGUtdm04MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmOGRmZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcHBsZS12bTgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUyZSBiL2xpYi90ZXJtaW5mby9hL2FwcGxlMmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0Y2NhMmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBwbGUyZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwcGxlMmUtcCBiL2xpYi90ZXJtaW5mby9hL2FwcGxlMmUtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2ODI2Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcHBsZTJlLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcHBsZTgwcCBiL2xpYi90ZXJtaW5mby9hL2FwcGxlODBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGM5MmM2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlODBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSSBiL2xpYi90ZXJtaW5mby9hL2FwcGxlSUkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NzQ3OGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FwcGxlSUljIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMTFiOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcHBsZUlJZSBiL2xpYi90ZXJtaW5mby9hL2FwcGxlSUllCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzExYjkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlSUllCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSWdzIGIvbGliL3Rlcm1pbmZvL2EvYXBwbGVJSWdzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzExYjkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FwcGxlSUlncworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FybTEwMCBiL2xpYi90ZXJtaW5mby9hL2FybTEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcyOWEzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcm0xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hcm0xMDAtYW0gYi9saWIvdGVybWluZm8vYS9hcm0xMDAtYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MjlhM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXJtMTAwLWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXJtMTAwLXcgYi9saWIvdGVybWluZm8vYS9hcm0xMDAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE5MDM1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hcm0xMDAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2FybTEwMC13YW0gYi9saWIvdGVybWluZm8vYS9hcm0xMDAtd2FtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTkwMzVhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2FybTEwMC13YW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdDM4NiBiL2xpYi90ZXJtaW5mby9hL2F0Mzg2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgwZDExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0Mzg2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXRhcmkgYi9saWIvdGVybWluZm8vYS9hdGFyaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MTg4MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdGFyaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0ZXJtIGIvbGliL3Rlcm1pbmZvL2EvYXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNDhiNWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQyMzAwIGIvbGliL3Rlcm1pbmZvL2EvYXR0MjMwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZmN2Q1Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQyMzAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0MjM1MCBiL2xpYi90ZXJtaW5mby9hL2F0dDIzNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNmZhOWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0MjM1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTAgYi9saWIvdGVybWluZm8vYS9hdHQ0NDEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2JiZGNlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDEwLXcgYi9saWIvdGVybWluZm8vYS9hdHQ0NDEwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZDk2ZWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxMHYxIGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxMHYxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjc2NzJmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTB2MQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTB2MS13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxMHYxLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDkwODguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxMHYxLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4ZmIwZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNStubCBiL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUrbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YThkZTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNStubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtbmwgYi9saWIvdGVybWluZm8vYS9hdHQ0NDE1LW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTIyYjEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtbmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2NzNiYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1LXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS1ydi1ubCBiL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtcnYtbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOGY5YWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS1ydi1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMxNmQwYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDE1LXctbmwgYi9saWIvdGVybWluZm8vYS9hdHQ0NDE1LXctbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MDUxNjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS13LW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS13LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS13LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWU2ZDg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtdy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTUtdy1ydi1uIGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS13LXJ2LW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNjY5MWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxNS13LXJ2LW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDE4IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkwMTM0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDE4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQxOC13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQxOC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWMyZjAzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MTgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjAgYi9saWIvdGVybWluZm8vYS9hdHQ0NDIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQ5ZTY4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDI0IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5YmM4Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNC0xIGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNC0xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWYyODU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjQtMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjRtIGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NjcxZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDI1IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYwMmI1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNS1ubCBiL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjUtbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMmU3MGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNS1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjUtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDQ0MjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI0NzA3NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ0NDI2IGIvbGliL3Rlcm1pbmZvL2EvYXR0NDQyNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1ZjIwNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ0NDI2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTAwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRlZjQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDUwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDUwNSBiL2xpYi90ZXJtaW5mby9hL2F0dDUwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJkZmZhYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1MDUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1MDUtMjQgYi9saWIvdGVybWluZm8vYS9hdHQ1MDUtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2NhYWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTA1LTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTEwYSBiL2xpYi90ZXJtaW5mby9hL2F0dDUxMGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMGRlOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTEwYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDUxMGQgYi9saWIvdGVybWluZm8vYS9hdHQ1MTBkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDdjODk3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDUxMGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1MTMgYi9saWIvdGVybWluZm8vYS9hdHQ1MTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGVmNDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTEzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTMxMCBiL2xpYi90ZXJtaW5mby9hL2F0dDUzMTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNWYyMmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTMxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDUzMjAgYi9saWIvdGVybWluZm8vYS9hdHQ1MzIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDVmMjJlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDUzMjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDEwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNiYmRjZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQxMC13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQxMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGQ5NmVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MTB2MSBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MTB2MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3NjcyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDEwdjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDEwdjEtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MTB2MS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODQ5MDg4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MTB2MS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQxOCBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MDEzNDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQxOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MTgtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MTgtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFjMmYwMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDE4LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4ZmIwZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMCtubCBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MjArbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YThkZTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMCtubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtbmwgYi9saWIvdGVybWluZm8vYS9hdHQ1NDIwLW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTIyYjEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtbmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwLXJ2IGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2NzNiYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC1ydi1ubCBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtcnYtbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOGY5YWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC1ydi1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMxNmQwYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwLXctbmwgYi9saWIvdGVybWluZm8vYS9hdHQ1NDIwLXctbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MDUxNjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC13LW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC13LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC13LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWU2ZDg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtdy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjAtdy1ydi1uIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC13LXJ2LW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNjY5MWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMC13LXJ2LW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwXzIgYi9saWIvdGVybWluZm8vYS9hdHQ1NDIwXzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ODM5ZDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMF8yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyMF8yLXcgYi9saWIvdGVybWluZm8vYS9hdHQ1NDIwXzItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhjZmI3Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDIwXzItdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjUgYi9saWIvdGVybWluZm8vYS9hdHQ1NDI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjAyYjVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NDI1LW5sIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyNS1ubApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQyZTcwYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NDI1LW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTQyNS13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NTQyNS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjQ3MDc1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MzAgYi9saWIvdGVybWluZm8vYS9hdHQ1NDMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmRmZmFjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU0MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NjIwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA5Njg4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NjIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMC0xIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMC0xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjEyYzdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU2MjAtMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDU2MjAtMjQgYi9saWIvdGVybWluZm8vYS9hdHQ1NjIwLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODEyYjYyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU2MjAtMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ1NjIwLTM0IGIvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMC0zNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU2MGYwYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ1NjIwLTM0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMC1zIGIvbGliL3Rlcm1pbmZvL2EvYXR0NTYyMC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzEzYmNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDU2MjAtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYwNSBiL2xpYi90ZXJtaW5mby9hL2F0dDYwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQzNmZmZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MDUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MDUtcGMgYi9saWIvdGVybWluZm8vYS9hdHQ2MDUtcGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMTFiNDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjA1LXBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjA1LXcgYi9saWIvdGVybWluZm8vYS9hdHQ2MDUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM2ZWI1NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MDUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYxMCBiL2xpYi90ZXJtaW5mby9hL2F0dDYxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkNDA5NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MTAtMTAzayBiL2xpYi90ZXJtaW5mby9hL2F0dDYxMC0xMDNrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTRiODJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDYxMC0xMDNrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjEwLTEwM2stdyBiL2xpYi90ZXJtaW5mby9hL2F0dDYxMC0xMDNrLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNThiYjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjEwLTEwM2stdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYxMC13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NjEwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0N2JmOGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjEwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MTUgYi9saWIvdGVybWluZm8vYS9hdHQ2MTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMGU2NzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjE1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjE1LTEwM2sgYi9saWIvdGVybWluZm8vYS9hdHQ2MTUtMTAzawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1ZDA2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MTUtMTAzaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYxNS0xMDNrLXcgYi9saWIvdGVybWluZm8vYS9hdHQ2MTUtMTAzay13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2RmNzhkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDYxNS0xMDNrLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MTUtdyBiL2xpYi90ZXJtaW5mby9hL2F0dDYxNS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTE0Nzk0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDYxNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjIwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NjIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmRjNmQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDYyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYyMC0xMDNrIGIvbGliL3Rlcm1pbmZvL2EvYXR0NjIwLTEwM2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNDhjNmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjIwLTEwM2sKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MjAtMTAzay13IGIvbGliL3Rlcm1pbmZvL2EvYXR0NjIwLTEwM2stdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRjN2NjNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MjAtMTAzay13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjIwLXcgYi9saWIvdGVybWluZm8vYS9hdHQ2MjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2NWZiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MjAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDYzMCBiL2xpYi90ZXJtaW5mby9hL2F0dDYzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RmZGI3Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ2MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ2MzAtMjQgYi9saWIvdGVybWluZm8vYS9hdHQ2MzAtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZDM5NjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjMwLTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NjM4NiBiL2xpYi90ZXJtaW5mby9hL2F0dDYzODYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODBkMTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NjM4NgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDcwMCBiL2xpYi90ZXJtaW5mby9hL2F0dDcwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdjMWM4NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ3MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ3MzAgYi9saWIvdGVybWluZm8vYS9hdHQ3MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNTFhYzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NzMwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NzMwLTI0IGIvbGliL3Rlcm1pbmZvL2EvYXR0NzMwLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBlNjUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDczMC0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDczMC00MSBiL2xpYi90ZXJtaW5mby9hL2F0dDczMC00MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0NTQwZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ3MzAtNDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ3MzAwIGIvbGliL3Rlcm1pbmZvL2EvYXR0NzMwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQxODQzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ3MzAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXR0NzMwciBiL2xpYi90ZXJtaW5mby9hL2F0dDczMHIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMzcyM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXR0NzMwcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F0dDczMHItMjQgYi9saWIvdGVybWluZm8vYS9hdHQ3MzByLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTU1OGM4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F0dDczMHItMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdHQ3MzByLTQxIGIvbGliL3Rlcm1pbmZvL2EvYXR0NzMwci00MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5MDFlNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdHQ3MzByLTQxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZhdGFyIGIvbGliL3Rlcm1pbmZvL2EvYXZhdGFyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWI0YWUwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2YXRhcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2YXRhcjAgYi9saWIvdGVybWluZm8vYS9hdmF0YXIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTNmN2Y5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2YXRhcjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdmF0YXIwKyBiL2xpYi90ZXJtaW5mby9hL2F2YXRhcjArCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjRjZDBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2YXRhcjArCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZhdGFyMSBiL2xpYi90ZXJtaW5mby9hL2F2YXRhcjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YjRhZTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXZhdGFyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2dCBiL2xpYi90ZXJtaW5mby9hL2F2dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDliYjJlMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdnQrcyBiL2xpYi90ZXJtaW5mby9hL2F2dCtzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzBjOTgzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2dCtzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZ0LW5zIGIvbGliL3Rlcm1pbmZvL2EvYXZ0LW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWU0MDY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2dC1ucworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2dC1ydiBiL2xpYi90ZXJtaW5mby9hL2F2dC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhYjFiNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdnQtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdnQtcnYtbnMgYi9saWIvdGVybWluZm8vYS9hdnQtcnYtbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODIzMjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXJ2LW5zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXJ2LXMgYi9saWIvdGVybWluZm8vYS9hdnQtcnYtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhYjFiNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdnQtcnYtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2dC1zIGIvbGliL3Rlcm1pbmZvL2EvYXZ0LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YmIyZTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdnQtdyBiL2xpYi90ZXJtaW5mby9hL2F2dC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTU2N2Q4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2dC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXctbnMgYi9saWIvdGVybWluZm8vYS9hdnQtdy1ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhjODcyYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYS9hdnQtdy1ucworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2dC13LXJ2IGIvbGliL3Rlcm1pbmZvL2EvYXZ0LXctcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwZGQzYWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXctcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hdnQtdy1ydi1ucyBiL2xpYi90ZXJtaW5mby9hL2F2dC13LXJ2LW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzI4YWRkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2dC13LXJ2LW5zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXctcnYtcyBiL2xpYi90ZXJtaW5mby9hL2F2dC13LXJ2LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwZGQzYWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXZ0LXctcnYtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9hL2F2dC13LXMgYi9saWIvdGVybWluZm8vYS9hdnQtdy1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTU2N2Q4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9hL2F2dC13LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYS9hd3MgYi9saWIvdGVybWluZm8vYS9hd3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OTQ2ZmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXdzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2EvYXdzYyBiL2xpYi90ZXJtaW5mby9hL2F3c2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NDAwZTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2EvYXdzYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2ItMTI4IGIvbGliL3Rlcm1pbmZvL2IvYi0xMjgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NWJhMDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYi0xMjgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iYW50YW0gYi9saWIvdGVybWluZm8vYi9iYW50YW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZWMwMDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmFudGFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmFzaWM0IGIvbGliL3Rlcm1pbmZvL2IvYmFzaWM0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjJhZWQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2Jhc2ljNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2Jhc2lzIGIvbGliL3Rlcm1pbmZvL2IvYmFzaXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNDUwZjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmFzaXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iY3Q1MTBhIGIvbGliL3Rlcm1pbmZvL2IvYmN0NTEwYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMwZGU4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iY3Q1MTBhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmN0NTEwZCBiL2xpYi90ZXJtaW5mby9iL2JjdDUxMGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0N2M4OTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmN0NTEwZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JlYWNvbiBiL2xpYi90ZXJtaW5mby9iL2JlYWNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYwMTMwMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iZWFjb24KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iZWUgYi9saWIvdGVybWluZm8vYi9iZWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZGUwMmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmVlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmVlaGl2ZSBiL2xpYi90ZXJtaW5mby9iL2JlZWhpdmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZGUwMmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmVlaGl2ZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JlZWhpdmUzIGIvbGliL3Rlcm1pbmZvL2IvYmVlaGl2ZTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MmJjMTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmVlaGl2ZTMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iZWVoaXZlNCBiL2xpYi90ZXJtaW5mby9iL2JlZWhpdmU0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTA2NjU0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JlZWhpdmU0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmVlaGl2ZUlJSW0gYi9saWIvdGVybWluZm8vYi9iZWVoaXZlSUlJbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYyYmMxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iZWVoaXZlSUlJbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JldGVybSBiL2xpYi90ZXJtaW5mby9iL2JldGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E4OTdlMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iZXRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iZzEuMjUgYi9saWIvdGVybWluZm8vYi9iZzEuMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZDA2YzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmcxLjI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmcxLjI1bnYgYi9saWIvdGVybWluZm8vYi9iZzEuMjVudgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyMThhZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iZzEuMjVudgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JnMS4yNXJ2IGIvbGliL3Rlcm1pbmZvL2IvYmcxLjI1cnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMzIzZWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmcxLjI1cnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iZzIuMCBiL2xpYi90ZXJtaW5mby9iL2JnMi4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWQzYWUwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JnMi4wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmcyLjBudiBiL2xpYi90ZXJtaW5mby9iL2JnMi4wbnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDViZjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmcyLjBudgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JnMi4wcnYgYi9saWIvdGVybWluZm8vYi9iZzIuMHJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY1NjEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JnMi4wcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iZzMuMTAgYi9saWIvdGVybWluZm8vYi9iZzMuMTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZDNhZTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmczLjEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmczLjEwbnYgYi9saWIvdGVybWluZm8vYi9iZzMuMTBudgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE0NWJmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iZzMuMTBudgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JnMy4xMHJ2IGIvbGliL3Rlcm1pbmZvL2IvYmczLjEwcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNjU2MTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYmczLjEwcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9iaDNtIGIvbGliL3Rlcm1pbmZvL2IvYmgzbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYyYmMxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9iaDNtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYmg0IGIvbGliL3Rlcm1pbmZvL2IvYmg0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTA2NjU0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JoNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JpdGdyYXBoIGIvbGliL3Rlcm1pbmZvL2IvYml0Z3JhcGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDViZjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYml0Z3JhcGgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9ibGl0IGIvbGliL3Rlcm1pbmZvL2IvYmxpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZhNTY1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9ibGl0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYm9iY2F0IGIvbGliL3Rlcm1pbmZvL2IvYm9iY2F0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGVkNGFiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JvYmNhdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwIGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMDUzMDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9icTMwMC04IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiMGEzOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC04CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOC1wYyBiL2xpYi90ZXJtaW5mby9iL2JxMzAwLTgtcGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOGFmNjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOC1wYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLTgtcGMtcnYgYi9saWIvdGVybWluZm8vYi9icTMwMC04LXBjLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDc0NWRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLTgtcGMtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9icTMwMC04LXBjLXcgYi9saWIvdGVybWluZm8vYi9icTMwMC04LXBjLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYmNiZGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOC1wYy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOC1wYy13LXJ2IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtOC1wYy13LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWNlN2Q5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLTgtcGMtdy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLThydiBiL2xpYi90ZXJtaW5mby9iL2JxMzAwLThydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVmNTQ5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC04cnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9icTMwMC04dyBiL2xpYi90ZXJtaW5mby9iL2JxMzAwLTh3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTkwNmVhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLTh3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMgYi9saWIvdGVybWluZm8vYi9icTMwMC1wYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNiNjgyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC1wYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLXBjLXJ2IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OGE4YmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9icTMwMC1wYy13IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY5ODNlNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC1wYy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMtdy1ydiBiL2xpYi90ZXJtaW5mby9iL2JxMzAwLXBjLXctcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMmFlYjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcGMtdy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLXJ2IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2M2MmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9icTMwMC13IGIvbGliL3Rlcm1pbmZvL2IvYnEzMDAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZlNWY5YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnEzMDAtdy04cnYgYi9saWIvdGVybWluZm8vYi9icTMwMC13LThydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0NGU2OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYi9icTMwMC13LThydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLXctcnYgYi9saWIvdGVybWluZm8vYi9icTMwMC13LXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjVlYWViLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JxMzAwLXctcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9ic2Rvcy1wYyBiL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTk4YTU0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnNkb3MtcGMtbSBiL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBjLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYTRjMTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnNkb3MtcGMtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBjLW1vbm8gYi9saWIvdGVybWluZm8vYi9ic2Rvcy1wYy1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWE0YzE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBjLW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYi9ic2Rvcy1wYy1ub2JvbGQgYi9saWIvdGVybWluZm8vYi9ic2Rvcy1wYy1ub2JvbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNTZmYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnNkb3MtcGMtbm9ib2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2IvYnNkb3MtcHBjIGIvbGliL3Rlcm1pbmZvL2IvYnNkb3MtcHBjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTlkYjE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9iL2JzZG9zLXBwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9iL2JzZG9zLXNwYXJjIGIvbGliL3Rlcm1pbmZvL2IvYnNkb3Mtc3BhcmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNzhlM2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2IvYnNkb3Mtc3BhcmMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMTAwIGIvbGliL3Rlcm1pbmZvL2MvYzEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYTUzYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jMTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzEwMC0xcCBiL2xpYi90ZXJtaW5mby9jL2MxMDAtMXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzODg3MzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzEwMC0xcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2MxMDAtNHAgYi9saWIvdGVybWluZm8vYy9jMTAwLTRwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZhNTNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MxMDAtNHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMTAwLXJ2IGIvbGliL3Rlcm1pbmZvL2MvYzEwMC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzN2ExYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jMTAwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzEwMC1ydi00cCBiL2xpYi90ZXJtaW5mby9jL2MxMDAtcnYtNHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzdhMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzEwMC1ydi00cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2MxMDQgYi9saWIvdGVybWluZm8vYy9jMTA0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZhNTNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MxMDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMTA4IGIvbGliL3Rlcm1pbmZvL2MvYzEwOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzMjc1OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jMTA4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzEwOC00cCBiL2xpYi90ZXJtaW5mby9jL2MxMDgtNHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOTNlZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzEwOC00cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2MxMDgtOHAgYi9saWIvdGVybWluZm8vYy9jMTA4LThwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjMyNzU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MxMDgtOHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMTA4LXJ2IGIvbGliL3Rlcm1pbmZvL2MvYzEwOC1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRhY2JiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jMTA4LXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzEwOC1ydi00cCBiL2xpYi90ZXJtaW5mby9jL2MxMDgtcnYtNHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMmRjYzYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzEwOC1ydi00cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2MxMDgtcnYtOHAgYi9saWIvdGVybWluZm8vYy9jMTA4LXJ2LThwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGFjYmIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MxMDgtcnYtOHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMTA4LXcgYi9saWIvdGVybWluZm8vYy9jMTA4LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZTBlMzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzEwOC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzEwOC13LThwIGIvbGliL3Rlcm1pbmZvL2MvYzEwOC13LThwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWUwZTMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MxMDgtdy04cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2MzMDAgYi9saWIvdGVybWluZm8vYy9jMzAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlYzljLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2MzMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jMzAxIGIvbGliL3Rlcm1pbmZvL2MvYzMwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUyMjhmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jMzAxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvYzMyMSBiL2xpYi90ZXJtaW5mby9jL2MzMjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MjI4ZjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvYzMyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NhMjI4NTEgYi9saWIvdGVybWluZm8vYy9jYTIyODUxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGI1Y2Y4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NhMjI4NTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jYWQ2OC0yIGIvbGliL3Rlcm1pbmZvL2MvY2FkNjgtMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxM2RiNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jYWQ2OC0yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2FkNjgtMyBiL2xpYi90ZXJtaW5mby9jL2NhZDY4LTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNjMxOWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2FkNjgtMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NiYmxpdCBiL2xpYi90ZXJtaW5mby9jL2NiYmxpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxZDJkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jYmJsaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jYnVuaXggYi9saWIvdGVybWluZm8vYy9jYnVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZTk2NzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2J1bml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2NpIGIvbGliL3Rlcm1pbmZvL2MvY2NpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTllN2IwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NjaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NjaTEgYi9saWIvdGVybWluZm8vYy9jY2kxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTllN2IwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NjaTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jZGM0NTYgYi9saWIvdGVybWluZm8vYy9jZGM0NTYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YzI1MDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2RjNDU2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2RjNzIxIGIvbGliL3Rlcm1pbmZvL2MvY2RjNzIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWFhNWQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NkYzcyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NkYzcyMS1lc2MgYi9saWIvdGVybWluZm8vYy9jZGM3MjEtZXNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWY0YjBjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NkYzcyMS1lc2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jZGM3MjFsbCBiL2xpYi90ZXJtaW5mby9jL2NkYzcyMWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzE4NjA5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NkYzcyMWxsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2RjNzUyIGIvbGliL3Rlcm1pbmZvL2MvY2RjNzUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDJhNjA5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NkYzc1MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NkYzc1NiBiL2xpYi90ZXJtaW5mby9jL2NkYzc1NgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc1Mzk4NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jZGM3NTYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jZzc5MDAgYi9saWIvdGVybWluZm8vYy9jZzc5MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNWExY2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2c3OTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2djMiBiL2xpYi90ZXJtaW5mby9jL2NnYzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MTNkYjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2djMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NnYzMgYi9saWIvdGVybWluZm8vYy9jZ2MzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjYzMTllLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NnYzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaHJvbWF0aWNzIGIvbGliL3Rlcm1pbmZvL2MvY2hyb21hdGljcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1YTFjZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaHJvbWF0aWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2k4NTEwIGIvbGliL3Rlcm1pbmZvL2MvY2k4NTEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFlN2YwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpODUxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdC04MCBiL2xpYi90ZXJtaW5mby9jL2NpdC04MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFiYWVhMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXQtODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXQxMDEgYi9saWIvdGVybWluZm8vYy9jaXQxMDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwODA3YjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZSBiL2xpYi90ZXJtaW5mby9jL2NpdDEwMWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZTVkNjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdDEwMWUtMTMyIGIvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZS0xMzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZDFkYTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZS0xMzIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXQxMDFlLW4gYi9saWIvdGVybWluZm8vYy9jaXQxMDFlLW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDY3OTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZS1uCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZS1uMTMyIGIvbGliL3Rlcm1pbmZvL2MvY2l0MTAxZS1uMTMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTEzMzFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdDEwMWUtbjEzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdDEwMWUtcnYgYi9saWIvdGVybWluZm8vYy9jaXQxMDFlLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjU5MDFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdDEwMWUtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXQ1MDAgYi9saWIvdGVybWluZm8vYy9jaXQ1MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MDQ3Y2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0NTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0ODAgYi9saWIvdGVybWluZm8vYy9jaXQ4MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFiYWVhMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXQ4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdGMgYi9saWIvdGVybWluZm8vYy9jaXRjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDgwN2I5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXRvaCBiL2xpYi90ZXJtaW5mby9jL2NpdG9oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFlN2YwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdG9oCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0b2gtNmxwaSBiL2xpYi90ZXJtaW5mby9jL2NpdG9oLTZscGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMWYzYzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY2l0b2gtNmxwaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdG9oLThscGkgYi9saWIvdGVybWluZm8vYy9jaXRvaC04bHBpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGQyZWQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdG9oLThscGkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXRvaC1jb21wIGIvbGliL3Rlcm1pbmZvL2MvY2l0b2gtY29tcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFiYjYzMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXRvaC1jb21wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0b2gtZWxpdGUgYi9saWIvdGVybWluZm8vYy9jaXRvaC1lbGl0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3MGQ3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXRvaC1lbGl0ZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NpdG9oLXBpY2EgYi9saWIvdGVybWluZm8vYy9jaXRvaC1waWNhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2YwZTAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NpdG9oLXBpY2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jaXRvaC1wcm9wIGIvbGliL3Rlcm1pbmZvL2MvY2l0b2gtcHJvcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNhYWNiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXRvaC1wcm9wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY2l0b2gtcHMgYi9saWIvdGVybWluZm8vYy9jaXRvaC1wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNhYWNiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jaXRvaC1wcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvY28zIGIvbGliL3Rlcm1pbmZvL2MvY29jbzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNTIzZGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29jbzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb2hlcmVudCBiL2xpYi90ZXJtaW5mby9jL2NvaGVyZW50CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmUzODU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvaGVyZW50CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29sb3JfeHRlcm0gYi9saWIvdGVybWluZm8vYy9jb2xvcl94dGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAyNTVkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb2xvcl94dGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbG9yc2NhbiBiL2xpYi90ZXJtaW5mby9jL2NvbG9yc2NhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4ZDllZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb2xvcnNjYW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb21tb2RvcmUgYi9saWIvdGVybWluZm8vYy9jb21tb2RvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NWJhMDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29tbW9kb3JlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdCBiL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmE1M2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQtYXZ0IGIvbGliL3Rlcm1pbmZvL2MvY29uY2VwdC1hdnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YmIyZTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdC1hdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTAwIGIvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYTUzYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwMC1ydiBiL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzdhMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwMC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDggYi9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjMyNzU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4LTRwIGIvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOC00cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5M2VlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4LTRwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOC04cCBiL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDgtOHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMzI3NTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOC04cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDgtdy04IGIvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOC13LTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZTBlMzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOC13LTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4LXc4cCBiL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDgtdzhwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWUwZTMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbmNlcHQxMDgtdzhwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uY2VwdDEwOHJ2NHAgYi9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4cnY0cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyZGNjNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25jZXB0MTA4cnY0cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNSBiL2xpYi90ZXJtaW5mby9jL2NvbnMyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNDczYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zMjUtaXNvLW0gYi9saWIvdGVybWluZm8vYy9jb25zMjUtaXNvLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MjNkODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczI1LWlzby1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczI1LWlzbzg4NTkgYi9saWIvdGVybWluZm8vYy9jb25zMjUtaXNvODg1OQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY2NWM4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjUtaXNvODg1OQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNS1rb2k4LXIgYi9saWIvdGVybWluZm8vYy9jb25zMjUta29pOC1yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiMWM4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNS1rb2k4LXIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zMjUta29pOHItbSBiL2xpYi90ZXJtaW5mby9jL2NvbnMyNS1rb2k4ci1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThhNTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNS1rb2k4ci1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczI1LW0gYi9saWIvdGVybWluZm8vYy9jb25zMjUtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZiOWUwOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjUtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNWwxIGIvbGliL3Rlcm1pbmZvL2MvY29uczI1bDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NjVjODguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczI1bDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zMjVsMS1tIGIvbGliL3Rlcm1pbmZvL2MvY29uczI1bDEtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUyM2Q4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjVsMS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczI1ciBiL2xpYi90ZXJtaW5mby9jL2NvbnMyNXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZGIxYzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczI1cgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnMyNXItbSBiL2xpYi90ZXJtaW5mby9jL2NvbnMyNXItbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4YTU0ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjVyLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zMjV3IGIvbGliL3Rlcm1pbmZvL2MvY29uczI1dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2MTE0Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zMjV3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczMwIGIvbGliL3Rlcm1pbmZvL2MvY29uczMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTJlNDY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnMzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnMzMC1tIGIvbGliL3Rlcm1pbmZvL2MvY29uczMwLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNDdhOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczMwLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNDMgYi9saWIvdGVybWluZm8vYy9jb25zNDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzBmZjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczQzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczQzLW0gYi9saWIvdGVybWluZm8vYy9jb25zNDMtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM5ODgzYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNDMtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM1MCBiL2xpYi90ZXJtaW5mby9jL2NvbnM1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDliOGNmMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNTAtaXNvLW0gYi9saWIvdGVybWluZm8vYy9jb25zNTAtaXNvLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyY2Q4YzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczUwLWlzby1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczUwLWlzbzg4NTkgYi9saWIvdGVybWluZm8vYy9jb25zNTAtaXNvODg1OQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUyMTg5My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTAtaXNvODg1OQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM1MC1rb2k4ciBiL2xpYi90ZXJtaW5mby9jL2NvbnM1MC1rb2k4cgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlMzZmYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTAta29pOHIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNTAta29pOHItbSBiL2xpYi90ZXJtaW5mby9jL2NvbnM1MC1rb2k4ci1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQ0NmE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnM1MC1rb2k4ci1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczUwLW0gYi9saWIvdGVybWluZm8vYy9jb25zNTAtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlYTVmMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTAtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM1MGwxIGIvbGliL3Rlcm1pbmZvL2MvY29uczUwbDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MjE4OTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczUwbDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNTBsMS1tIGIvbGliL3Rlcm1pbmZvL2MvY29uczUwbDEtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjZDhjMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTBsMS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczUwciBiL2xpYi90ZXJtaW5mby9jL2NvbnM1MHIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTM2ZmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczUwcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM1MHItbSBiL2xpYi90ZXJtaW5mby9jL2NvbnM1MHItbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZkNDZhNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNTByLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNjAgYi9saWIvdGVybWluZm8vYy9jb25zNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3Y2VkYzYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczYwLWlzbyBiL2xpYi90ZXJtaW5mby9jL2NvbnM2MC1pc28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDdmZGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwLWlzbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM2MC1pc28tbSBiL2xpYi90ZXJtaW5mby9jL2NvbnM2MC1pc28tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYyN2QyYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNjAtaXNvLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNjAta29pOHIgYi9saWIvdGVybWluZm8vYy9jb25zNjAta29pOHIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NGM1ODQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwLWtvaThyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczYwLWtvaThyLW0gYi9saWIvdGVybWluZm8vYy9jb25zNjAta29pOHItbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFiYjk2Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb25zNjAta29pOHItbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM2MC1tIGIvbGliL3Rlcm1pbmZvL2MvY29uczYwLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYjczZGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNjBsMSBiL2xpYi90ZXJtaW5mby9jL2NvbnM2MGwxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQ3ZmRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnM2MGwxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29uczYwbDEtbSBiL2xpYi90ZXJtaW5mby9jL2NvbnM2MGwxLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MjdkMmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwbDEtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnM2MHIgYi9saWIvdGVybWluZm8vYy9jb25zNjByCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDRjNTg0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnM2MHIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb25zNjByLW0gYi9saWIvdGVybWluZm8vYy9jb25zNjByLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYmI5NmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29uczYwci1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29udGVsMzAwIGIvbGliL3Rlcm1pbmZvL2MvY29udGVsMzAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlYzljLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnRlbDMwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvbnRlbDMwMSBiL2xpYi90ZXJtaW5mby9jL2NvbnRlbDMwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUyMjhmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb250ZWwzMDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb250ZWwzMjAgYi9saWIvdGVybWluZm8vYy9jb250ZWwzMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNGVjOWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY29udGVsMzIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29udGVsMzIxIGIvbGliL3Rlcm1pbmZvL2MvY29udGVsMzIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTIyOGY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvbnRlbDMyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NvcHMgYi9saWIvdGVybWluZm8vYy9jb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzcwZmM5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvcHMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jb3BzLTEwIGIvbGliL3Rlcm1pbmZvL2MvY29wcy0xMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM3MGZjOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jb3BzLTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY29wczEwIGIvbGliL3Rlcm1pbmZvL2MvY29wczEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzcwZmM5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2NvcHMxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NydCBiL2xpYi90ZXJtaW5mby9jL2NydApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkZmViNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jcnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jcnQtdnQyMjAgYi9saWIvdGVybWluZm8vYy9jcnQtdnQyMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZGZlYjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY3J0LXZ0MjIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY3MxMCBiL2xpYi90ZXJtaW5mby9jL2NzMTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhOGQ5ZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY3MxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2NzMTAtdyBiL2xpYi90ZXJtaW5mby9jL2NzMTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIzOTE1Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jczEwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jdDgyIGIvbGliL3Rlcm1pbmZvL2MvY3Q4MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU5NGQzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jdDgyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY3Q4NTAwIGIvbGliL3Rlcm1pbmZvL2MvY3Q4NTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTIyYTc4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2N0ODUwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2N0cm0gYi9saWIvdGVybWluZm8vYy9jdHJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTllZDE0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2N0cm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jeCBiL2xpYi90ZXJtaW5mby9jL2N4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDI1NWRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2N4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY3gxMDAgYi9saWIvdGVybWluZm8vYy9jeDEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAyNTVkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jeDEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2N5YjExMCBiL2xpYi90ZXJtaW5mby9jL2N5YjExMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY2MmNlNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jeWIxMTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jeWI4MyBiL2xpYi90ZXJtaW5mby9jL2N5YjgzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWUxZjlmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2N5YjgzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2MvY3lnd2luIGIvbGliL3Rlcm1pbmZvL2MvY3lnd2luCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDcyODg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9jL2N5Z3dpbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9jL2N5Z3dpbkIxOSBiL2xpYi90ZXJtaW5mby9jL2N5Z3dpbkIxOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhODQ0MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vYy9jeWd3aW5CMTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vYy9jeWd3aW5EQkcgYi9saWIvdGVybWluZm8vYy9jeWd3aW5EQkcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNGQzMDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2MvY3lnd2luREJHCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDEzMiBiL2xpYi90ZXJtaW5mby9kL2QxMzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NjY3NTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDEzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyIGIvbGliL3Rlcm1pbmZvL2QvZDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTZlZGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMi1kZyBiL2xpYi90ZXJtaW5mby9kL2QyLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTE2ZWRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIwMCBiL2xpYi90ZXJtaW5mby9kL2QyMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NDQ2MDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMDAtZGcgYi9saWIvdGVybWluZm8vZC9kMjAwLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTQ0NjA2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMDAtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjEwIGIvbGliL3Rlcm1pbmZvL2QvZDIxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1OTQyNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxMC1kZyBiL2xpYi90ZXJtaW5mby9kL2QyMTAtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMWU4MzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxMC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTEgYi9saWIvdGVybWluZm8vZC9kMjExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjgzOThhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjExLTdiIGIvbGliL3Rlcm1pbmZvL2QvZDIxMS03YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4YzE5ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjExLTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxMS1kZyBiL2xpYi90ZXJtaW5mby9kL2QyMTEtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZmY2ZmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxMS1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTQgYi9saWIvdGVybWluZm8vZC9kMjE0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTU5NDI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE0LWRnIGIvbGliL3Rlcm1pbmZvL2QvZDIxNC1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQxZTgzMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjE0LWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNSBiL2xpYi90ZXJtaW5mby9kL2QyMTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmODM5OGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTUtN2IgYi9saWIvdGVybWluZm8vZC9kMjE1LTdiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhjMTlkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTUtN2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE1LWRnIGIvbGliL3Rlcm1pbmZvL2QvZDIxNS1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBmZjZmYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjE1LWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNisgYi9saWIvdGVybWluZm8vZC9kMjE2KwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjMTZiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjE2KworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTYrMjUgYi9saWIvdGVybWluZm8vZC9kMjE2KzI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWY0MTVhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTYrMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE2K2RnIGIvbGliL3Rlcm1pbmZvL2QvZDIxNitkZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIzZWRiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjE2K2RnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNi1kZyBiL2xpYi90ZXJtaW5mby9kL2QyMTYtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViM2VkYjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNi1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTYtdW5peCBiL2xpYi90ZXJtaW5mby9kL2QyMTYtdW5peApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjMTZiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjE2LXVuaXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE2LXVuaXgtMjUgYi9saWIvdGVybWluZm8vZC9kMjE2LXVuaXgtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZjQxNWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNi11bml4LTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNmUrIGIvbGliL3Rlcm1pbmZvL2QvZDIxNmUrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGMxNmI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTZlKworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTZlK2RnIGIvbGliL3Rlcm1pbmZvL2QvZDIxNmUrZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViM2VkYjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNmUrZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE2ZS1kZyBiL2xpYi90ZXJtaW5mby9kL2QyMTZlLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjNlZGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTZlLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNmUtdW5peCBiL2xpYi90ZXJtaW5mby9kL2QyMTZlLXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0YzE2YjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNmUtdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMTctZGcgYi9saWIvdGVybWluZm8vZC9kMjE3LWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjNlZGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTctZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjE3LXVuaXggYi9saWIvdGVybWluZm8vZC9kMjE3LXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNTVkNzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIxNy11bml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIxNy11bml4LTI1IGIvbGliL3Rlcm1pbmZvL2QvZDIxNy11bml4LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmJhYWJmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMTctdW5peC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMjAgYi9saWIvdGVybWluZm8vZC9kMjIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTZjNDc3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjIwLTdiIGIvbGliL3Rlcm1pbmZvL2QvZDIyMC03YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYmFmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjIwLTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIyMC1kZyBiL2xpYi90ZXJtaW5mby9kL2QyMjAtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNzYzZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIyMC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMzAgYi9saWIvdGVybWluZm8vZC9kMjMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWRlMGQ0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2QyMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kMjMwLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDIzMC1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiYzMzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjMwLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDIzMGMgYi9saWIvdGVybWluZm8vZC9kMjMwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFkZTBkNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kMjMwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2QyMzBjLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDIzMGMtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YmMzM2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDIzMGMtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDAwIGIvbGliL3Rlcm1pbmZvL2QvZDQwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYwNGRiOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQwMC1kZyBiL2xpYi90ZXJtaW5mby9kL2Q0MDAtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MDRkYjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQwMC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTAgYi9saWIvdGVybWluZm8vZC9kNDEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTJjOTMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEwLTdiIGIvbGliL3Rlcm1pbmZvL2QvZDQxMC03YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMxOGE0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEwLTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMC03Yi13IGIvbGliL3Rlcm1pbmZvL2QvZDQxMC03Yi13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDU5Y2Y2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTAtN2ItdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTAtZGcgYi9saWIvdGVybWluZm8vZC9kNDEwLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcyN2NhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTAtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEwLXcgYi9saWIvdGVybWluZm8vZC9kNDEwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYTAzNTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMSBiL2xpYi90ZXJtaW5mby9kL2Q0MTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MmM5MzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTEtN2IgYi9saWIvdGVybWluZm8vZC9kNDExLTdiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzE4YTQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTEtN2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDExLTdiLXcgYi9saWIvdGVybWluZm8vZC9kNDExLTdiLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNTljZjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMS03Yi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMS1kZyBiL2xpYi90ZXJtaW5mby9kL2Q0MTEtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNzI3Y2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMS1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTEtdyBiL2xpYi90ZXJtaW5mby9kL2Q0MTEtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhMDM1NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDExLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEyKyBiL2xpYi90ZXJtaW5mby9kL2Q0MTIrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ0YzU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTIrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMisyNSBiL2xpYi90ZXJtaW5mby9kL2Q0MTIrMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NTM1ZjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMisyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTIrZGcgYi9saWIvdGVybWluZm8vZC9kNDEyK2RnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWY1NjAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTIrZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEyK3MgYi9saWIvdGVybWluZm8vZC9kNDEyK3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNTBjYjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMitzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMitzciBiL2xpYi90ZXJtaW5mby9kL2Q0MTIrc3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmFhNzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMitzcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTIrdyBiL2xpYi90ZXJtaW5mby9kL2Q0MTIrdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmZmEyYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEyK3cKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEyLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQxMi1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFmNTYwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEyLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4IGIvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ0YzU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC0yNSBiL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1MzVmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEyLXVuaXgtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEyLXVuaXgtcyBiL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTUwY2I2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4LXNyIGIvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4LXNyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDZhYTc0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC1zcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTItdW5peC13IGIvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZmZhMmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMi11bml4LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEzLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQxMy1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFmNTYwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEzLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4IGIvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDczOTlhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC0yNSBiL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JjODhlYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDEzLXVuaXgtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDEzLXVuaXgtcyBiL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDg2OGM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4LXNyIGIvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4LXNyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODVlNDgwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC1zcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTMtdW5peC13IGIvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzBkNjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxMy11bml4LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDE0LXVuaXggYi9saWIvdGVybWluZm8vZC9kNDE0LXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNjAzMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LTI1IGIvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhkNDExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MTQtdW5peC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MTQtdW5peC1zIGIvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNDdkOWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDE0LXVuaXgtc3IgYi9saWIvdGVybWluZm8vZC9kNDE0LXVuaXgtc3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYTVhNjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LXNyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQxNC11bml4LXcgYi9saWIvdGVybWluZm8vZC9kNDE0LXVuaXgtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVhOTZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDE0LXVuaXgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtZGcgYi9saWIvdGVybWluZm8vZC9kNDMwLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmE1OTk3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwLWRnLWNjYyBiL2xpYi90ZXJtaW5mby9kL2Q0MzAtZGctY2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWM5ZTUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtZGctY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4IGIvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDM1NDcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC0yNSBiL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjNmJiOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtMjUtY2NjIGIvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LTI1LWNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiMzcxZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtMjUtY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LWNjYyBiL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC1jY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYzcxNjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LWNjYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC1zIGIvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTczNzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtcy1jY2MgYi9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtcy1jY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMmYzODEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXMtY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXNyIGIvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXNyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzQxYjJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC1zcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC1zci1jY2MgYi9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtc3ItY2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTQ0ZGNiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC1zci1jY2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwLXVuaXgtdyBiL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjU5YjRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXctY2NjIGIvbGliL3Rlcm1pbmZvL2QvZDQzMC11bml4LXctY2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWYyNzQ1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzAtdW5peC13LWNjYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQzMGMtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYTU5OTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwYy1kZy1jY2MgYi9saWIvdGVybWluZm8vZC9kNDMwYy1kZy1jY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YzllNTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtZGctY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peCBiL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMzU0NzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtMjUgYi9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGM2YmI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LTI1LWNjYyBiL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtMjUtY2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmIzNzFmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtMjUtY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1jY2MgYi9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LWNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZjNzE2NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LWNjYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtcyBiL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhNzM3Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LXMtY2NjIGIvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1zLWNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMyZjM4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LXMtY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1zciBiL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtc3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NDFiMmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1zcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtc3ItY2NjIGIvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1zci1jY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNDRkY2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC1zci1jY2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LXcgYi9saWIvdGVybWluZm8vZC9kNDMwYy11bml4LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNTliNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC13LWNjYyBiL2xpYi90ZXJtaW5mby9kL2Q0MzBjLXVuaXgtdy1jY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZjI3NDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQzMGMtdW5peC13LWNjYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NTAgYi9saWIvdGVybWluZm8vZC9kNDUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjA0ZGI5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDUwLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQ1MC1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYwNGRiOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDUwLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2MCBiL2xpYi90ZXJtaW5mby9kL2Q0NjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MmM5MzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjAtN2IgYi9saWIvdGVybWluZm8vZC9kNDYwLTdiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzE4YTQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjAtN2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYwLTdiLXcgYi9saWIvdGVybWluZm8vZC9kNDYwLTdiLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNTljZjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MC03Yi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2MC1kZyBiL2xpYi90ZXJtaW5mby9kL2Q0NjAtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNzI3Y2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjAtdyBiL2xpYi90ZXJtaW5mby9kL2Q0NjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhMDM1NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYxIGIvbGliL3Rlcm1pbmZvL2QvZDQ2MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkyYzkzMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2MS03YiBiL2xpYi90ZXJtaW5mby9kL2Q0NjEtN2IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMThhNDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MS03YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjEtN2ItdyBiL2xpYi90ZXJtaW5mby9kL2Q0NjEtN2ItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA1OWNmNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYxLTdiLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYxLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQ2MS1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM3MjdjYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYxLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2MS13IGIvbGliL3Rlcm1pbmZvL2QvZDQ2MS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmEwMzU1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjEtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjIrIGIvbGliL3Rlcm1pbmZvL2QvZDQ2MisKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDRjNTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MisKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYyKzI1IGIvbGliL3Rlcm1pbmZvL2QvZDQ2MisyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1MzVmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYyKzI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2MitkZyBiL2xpYi90ZXJtaW5mby9kL2Q0NjIrZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZjU2MDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MitkZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjIrcyBiL2xpYi90ZXJtaW5mby9kL2Q0NjIrcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1MGNiNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYyK3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYyK3NyIGIvbGliL3Rlcm1pbmZvL2QvZDQ2MitzcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA2YWE3NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYyK3NyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mit3IGIvbGliL3Rlcm1pbmZvL2QvZDQ2Mit3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmZmYTJiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjIrdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjItZGcgYi9saWIvdGVybWluZm8vZC9kNDYyLWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWY1NjAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjItZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYyLXVuaXggYi9saWIvdGVybWluZm8vZC9kNDYyLXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDRjNTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LTI1IGIvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTUzNWY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjItdW5peC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjItdW5peC1zIGIvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNTBjYjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYyLXVuaXgtc3IgYi9saWIvdGVybWluZm8vZC9kNDYyLXVuaXgtc3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmFhNzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LXNyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2Mi11bml4LXcgYi9saWIvdGVybWluZm8vZC9kNDYyLXVuaXgtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmZmEyYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYyLXVuaXgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjJlLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQ2MmUtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZjU2MDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2MmUtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYzLWRnIGIvbGliL3Rlcm1pbmZvL2QvZDQ2My1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFmNTYwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYzLWRnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4IGIvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDczOTlhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC0yNSBiL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JjODhlYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDYzLXVuaXgtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDYzLXVuaXgtcyBiL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDg2OGM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4LXNyIGIvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4LXNyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODVlNDgwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC1zcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjMtdW5peC13IGIvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzBkNjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2My11bml4LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDY0LXVuaXggYi9saWIvdGVybWluZm8vZC9kNDY0LXVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNjAzMWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LTI1IGIvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhkNDExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NjQtdW5peC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NjQtdW5peC1zIGIvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNDdkOWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDY0LXVuaXgtc3IgYi9saWIvdGVybWluZm8vZC9kNDY0LXVuaXgtc3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYTVhNjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LXNyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ2NC11bml4LXcgYi9saWIvdGVybWluZm8vZC9kNDY0LXVuaXgtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVhOTZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDY0LXVuaXgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NzAgYi9saWIvdGVybWluZm8vZC9kNDcwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjYyZWFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDcwLTdiIGIvbGliL3Rlcm1pbmZvL2QvZDQ3MC03YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZGE5Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDcwLTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ3MC1kZyBiL2xpYi90ZXJtaW5mby9kL2Q0NzAtZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOGFlMjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ3MC1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q0NzBjIGIvbGliL3Rlcm1pbmZvL2QvZDQ3MGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNjJlYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDQ3MGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNDcwYy03YiBiL2xpYi90ZXJtaW5mby9kL2Q0NzBjLTdiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdkYTlmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q0NzBjLTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDQ3MGMtZGcgYi9saWIvdGVybWluZm8vZC9kNDcwYy1kZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4YWUyNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNDcwYy1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q1NTUgYi9saWIvdGVybWluZm8vZC9kNTU1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2EyOTQ0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q1NTUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNTU1LTdiIGIvbGliL3Rlcm1pbmZvL2QvZDU1NS03YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2MzhkOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNTU1LTdiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDU1NS03Yi13IGIvbGliL3Rlcm1pbmZvL2QvZDU1NS03Yi13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2JkNzUxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q1NTUtN2ItdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q1NTUtZGcgYi9saWIvdGVybWluZm8vZC9kNTU1LWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWM2N2NmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q1NTUtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNTU1LXcgYi9saWIvdGVybWluZm8vZC9kNTU1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNzk4YWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDU1NS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDU3NyBiL2xpYi90ZXJtaW5mby9kL2Q1NzcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YzlkNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDU3NworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q1NzctN2IgYi9saWIvdGVybWluZm8vZC9kNTc3LTdiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjAxMTQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q1NzctN2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNTc3LTdiLXcgYi9saWIvdGVybWluZm8vZC9kNTc3LTdiLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYzZlYzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDU3Ny03Yi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDU3Ny1kZyBiL2xpYi90ZXJtaW5mby9kL2Q1NzctZGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMDY5ZWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDU3Ny1kZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q1NzctdyBiL2xpYi90ZXJtaW5mby9kL2Q1NzctdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E2YjE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNTc3LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kNTc4IGIvbGliL3Rlcm1pbmZvL2QvZDU3OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQxMjM2YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kNTc4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDU3OC03YiBiL2xpYi90ZXJtaW5mby9kL2Q1NzgtN2IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YWM2MTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDU3OC03YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Q1NzgtZGcgYi9saWIvdGVybWluZm8vZC9kNTc4LWRnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTA2OWVlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Q1NzgtZGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kODAgYi9saWIvdGVybWluZm8vZC9kODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYjk5YzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZDgwMCBiL2xpYi90ZXJtaW5mby9kL2Q4MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNjA1YzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZDgwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RhcndpbiBiL2xpYi90ZXJtaW5mby9kL2RhcndpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDViMmZiOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTAweDM3IGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEwMHgzNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMjY4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTAweDM3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEwMHgzNy1tIGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEwMHgzNy1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTc4MjcwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMDB4MzctbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMTJ4MzcgYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTEyeDM3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTgwNDA4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMTJ4MzcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTEyeDM3LW0gYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTEyeDM3LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YmI2NWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTExMngzNy1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEyOHg0MCBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMjh4NDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NzFhYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEyOHg0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMjh4NDAtbSBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMjh4NDAtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdjMzAzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTI4eDQwLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTI4eDQ4IGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEyOHg0OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY0MjVjYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTI4eDQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEyOHg0OC1tIGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTEyOHg0OC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTg4OGE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xMjh4NDgtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xNDR4NDggYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTQ0eDQ4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTc1NTdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xNDR4NDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTQ0eDQ4LW0gYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTQ0eDQ4LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MDBhMTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTE0NHg0OC1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTE2MHg2NCBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xNjB4NjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMjNiOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTE2MHg2NAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xNjB4NjQtbSBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0xNjB4NjQtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThhNDg3Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMTYweDY0LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjAweDY0IGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTIwMHg2NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlM2VmMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjAweDY0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTIwMHg2NC1tIGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTIwMHg2NC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDdiMTI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yMDB4NjQtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yMDB4NzUgYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjAweDc1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODlhMTA0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yMDB4NzUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjAweDc1LW0gYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjAweDc1LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYTZhZGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTIwMHg3NS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTI1Nng5NiBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yNTZ4OTYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZDVkYTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTI1Nng5NgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yNTZ4OTYtbSBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi0yNTZ4OTYtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJhZjYxMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tMjU2eDk2LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MjUgYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZmU4ZTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTgweDI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTgweDI1LW0gYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MjUtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0ZTQ4MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MjUtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi04MHgzMCBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi04MHgzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5ZWVhZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tODB4MzAtbSBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi04MHgzMC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2YyYWEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi04MHgzMC1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTkweDMwIGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTkweDMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTYxNDBjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi05MHgzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi05MHgzMC1tIGIvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTkweDMwLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlODE4NjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLTkweDMwLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tYiBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1iCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWRmY2E1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLWYgYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1MmIxMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1mMiBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1mMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVlYmRkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tZjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tbSBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjQ5NmU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLW0tYiBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tLWIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzY1OGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGFyd2luLW0tYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tLWYgYi9saWIvdGVybWluZm8vZC9kYXJ3aW4tbS1mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmIwYTNlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tLWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXJ3aW4tbS1mMiBiL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tLWYyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmZlYmM3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rhcndpbi1tLWYyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGF0YWdyYXBoaXggYi9saWIvdGVybWluZm8vZC9kYXRhZ3JhcGhpeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2Njc1MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXRhZ3JhcGhpeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RhdGFtZWRpYTI1MDAgYi9saWIvdGVybWluZm8vZC9kYXRhbWVkaWEyNTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDI4MzlmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RhdGFtZWRpYTI1MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kYXRhcG9pbnQgYi9saWIvdGVybWluZm8vZC9kYXRhcG9pbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmM2ZDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGF0YXBvaW50CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGF0YXNwZWVkNDAgYi9saWIvdGVybWluZm8vZC9kYXRhc3BlZWQ0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1YzM1Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kYXRhc3BlZWQ0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RkNTAwMCBiL2xpYi90ZXJtaW5mby9kL2RkNTAwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkODU5MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZDUwMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZHIgYi9saWIvdGVybWluZm8vZC9kZHIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZGY4ODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGRyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGRyMzE4MCBiL2xpYi90ZXJtaW5mby9kL2RkcjMxODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZGY4ODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGRyMzE4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RlYy12dDEwMCBiL2xpYi90ZXJtaW5mby9kL2RlYy12dDEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzODQ4Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZWMtdnQxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZWMtdnQyMjAgYi9saWIvdGVybWluZm8vZC9kZWMtdnQyMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YWM1YTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGVjLXZ0MjIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGVjLXZ0MzMwIGIvbGliL3Rlcm1pbmZvL2QvZGVjLXZ0MzMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWM4MTIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RlYy12dDMzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RlYy12dDM0MCBiL2xpYi90ZXJtaW5mby9kL2RlYy12dDM0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljODEyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZWMtdnQzNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZWMtdnQ0MDAgYi9saWIvdGVybWluZm8vZC9kZWMtdnQ0MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZmU2MDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGVjLXZ0NDAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGVjYW5zaSBiL2xpYi90ZXJtaW5mby9kL2RlY2Fuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMGNkNmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGVjYW5zaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RlY3BybyBiL2xpYi90ZXJtaW5mby9kL2RlY3BybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU2NTcxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZWNwcm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZWN3cml0ZXIgYi9saWIvdGVybWluZm8vZC9kZWN3cml0ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODZkNTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGVjd3JpdGVyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGVsdGEgYi9saWIvdGVybWluZm8vZC9kZWx0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkODU5MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZWx0YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnK2NjYyBiL2xpYi90ZXJtaW5mby9kL2RnK2NjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNhOWU5NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZytjY2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZytjb2xvciBiL2xpYi90ZXJtaW5mby9kL2RnK2NvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2MyMGNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnK2NvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGcrY29sb3I4IGIvbGliL3Rlcm1pbmZvL2QvZGcrY29sb3I4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQ3YjQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnK2NvbG9yOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnK2ZpeGVkIGIvbGliL3Rlcm1pbmZvL2QvZGcrZml4ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYjNjZDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGcrZml4ZWQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZy1hbnNpIGIvbGliL3Rlcm1pbmZvL2QvZGctYW5zaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3NzBlMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZy1hbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGctZ2VuZXJpYyBiL2xpYi90ZXJtaW5mby9kL2RnLWdlbmVyaWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MjNhMDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGctZ2VuZXJpYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnMTAwIGIvbGliL3Rlcm1pbmZvL2QvZGcxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZGZmMzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGcxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZzIwMCBiL2xpYi90ZXJtaW5mby9kL2RnMjAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDY1MzZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnMjAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGcyMTAgYi9saWIvdGVybWluZm8vZC9kZzIxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3NzBlMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZzIxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnMjExIGIvbGliL3Rlcm1pbmZvL2QvZGcyMTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYzMxYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGcyMTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZzQ1MCBiL2xpYi90ZXJtaW5mby9kL2RnNDUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTM5ODkxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnNDUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGc0NjAtYW5zaSBiL2xpYi90ZXJtaW5mby9kL2RnNDYwLWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzODdjNmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGc0NjAtYW5zaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnNjA1MyBiL2xpYi90ZXJtaW5mby9kL2RnNjA1MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUxNmVkYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZzYwNTMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZzYwNTMtb2xkIGIvbGliL3Rlcm1pbmZvL2QvZGc2MDUzLW9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkZmYzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZzYwNTMtb2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGc2MDV4IGIvbGliL3Rlcm1pbmZvL2QvZGc2MDV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTE2ZWRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnNjA1eAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnNjEzNCBiL2xpYi90ZXJtaW5mby9kL2RnNjEzNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzOTg5MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZzYxMzQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZ2tleXMrMTEgYi9saWIvdGVybWluZm8vZC9kZ2tleXMrMTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZmEyYTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGdrZXlzKzExCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGdrZXlzKzE1IGIvbGliL3Rlcm1pbmZvL2QvZGdrZXlzKzE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmMzYjdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2Rna2V5cysxNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2Rna2V5cys3YiBiL2xpYi90ZXJtaW5mby9kL2Rna2V5cys3YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4YzUwNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZ2tleXMrN2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZ2tleXMrOGIgYi9saWIvdGVybWluZm8vZC9kZ2tleXMrOGIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OTFkZDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGdrZXlzKzhiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGdtb2RlK2NvbG9yIGIvbGliL3Rlcm1pbmZvL2QvZGdtb2RlK2NvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmMzZDhjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnbW9kZStjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RnbW9kZStjb2xvcjggYi9saWIvdGVybWluZm8vZC9kZ21vZGUrY29sb3I4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzk5MzAzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RnbW9kZStjb2xvcjgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kZ3VuaXgrY2NjIGIvbGliL3Rlcm1pbmZvL2QvZGd1bml4K2NjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI0NzExMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kZ3VuaXgrY2NjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGd1bml4K2ZpeGVkIGIvbGliL3Rlcm1pbmZvL2QvZGd1bml4K2ZpeGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmMzZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RndW5peCtmaXhlZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbyBiL2xpYi90ZXJtaW5mby9kL2RpYWJsbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhMTJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kaWFibG8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kaWFibG8tbG0gYi9saWIvdGVybWluZm8vZC9kaWFibG8tbG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWYwMDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvLWxtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTYyMCBiL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MGZhYWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTYyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2MjAtbTggYi9saWIvdGVybWluZm8vZC9kaWFibG8xNjIwLW04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmUzYmViLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2MjAtbTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kaWFibG8xNjQwIGIvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTY0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhMTJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kaWFibG8xNjQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTY0MC1sbSBiL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2NDAtbG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWYwMDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTY0MC1sbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2NDAtbTggYi9saWIvdGVybWluZm8vZC9kaWFibG8xNjQwLW04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmUzYmViLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE2NDAtbTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kaWFibG8xNzIwIGIvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTcyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYwZmFhZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kaWFibG8xNzIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTczMCBiL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE3MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YTEyZDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTczMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE3NDAgYi9saWIvdGVybWluZm8vZC9kaWFibG8xNzQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ExMmQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzE3NDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kaWFibG8xNzQwLWxtIGIvbGliL3Rlcm1pbmZvL2QvZGlhYmxvMTc0MC1sbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzNjAxNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kaWFibG8xNzQwLWxtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGlhYmxvNDUwIGIvbGliL3Rlcm1pbmZvL2QvZGlhYmxvNDUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjBmYWFmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzQ1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpYWJsbzYzMCBiL2xpYi90ZXJtaW5mby9kL2RpYWJsbzYzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhMTJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kaWFibG82MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kaWFsb2d1ZSBiL2xpYi90ZXJtaW5mby9kL2RpYWxvZ3VlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGI5OWM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpYWxvZ3VlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGlhbG9ndWU4MCBiL2xpYi90ZXJtaW5mby9kL2RpYWxvZ3VlODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYjk5YzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGlhbG9ndWU4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RpZ2lsb2cgYi9saWIvdGVybWluZm8vZC9kaWdpbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzM1NzJiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RpZ2lsb2cKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kamdwcCBiL2xpYi90ZXJtaW5mby9kL2RqZ3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2FkZmY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RqZ3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGpncHAyMDMgYi9saWIvdGVybWluZm8vZC9kamdwcDIwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFjMTdiYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kamdwcDIwMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RqZ3BwMjA0IGIvbGliL3Rlcm1pbmZvL2QvZGpncHAyMDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYzFjMDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGpncHAyMDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9ka3U3MDAzIGIvbGliL3Rlcm1pbmZvL2QvZGt1NzAwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFlNTdiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9ka3U3MDAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGt1NzAwMy1kdW1iIGIvbGliL3Rlcm1pbmZvL2QvZGt1NzAwMy1kdW1iCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTNiYTMyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RrdTcwMDMtZHVtYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RrdTcxMDIgYi9saWIvdGVybWluZm8vZC9ka3U3MTAyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGViNjU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RrdTcxMDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9ka3U3MTAyLW9sZCBiL2xpYi90ZXJtaW5mby9kL2RrdTcxMDItb2xkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mzg5MTcwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RrdTcxMDItb2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZGt1NzEwMi1zbmEgYi9saWIvdGVybWluZm8vZC9ka3U3MTAyLXNuYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY1ODBkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9ka3U3MTAyLXNuYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RrdTcxMDMtc25hIGIvbGliL3Rlcm1pbmZvL2QvZGt1NzEwMy1zbmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYTZhZjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZGt1NzEwMy1zbmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9ka3U3MjAyIGIvbGliL3Rlcm1pbmZvL2QvZGt1NzIwMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgzNzgxNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9ka3U3MjAyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZG0xNTIwIGIvbGliL3Rlcm1pbmZvL2QvZG0xNTIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmM1ZDI2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RtMTUyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RtMTUyMSBiL2xpYi90ZXJtaW5mby9kL2RtMTUyMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJjNWQyNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbTE1MjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kbTI1MDAgYi9saWIvdGVybWluZm8vZC9kbTI1MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMjgzOWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZG0yNTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZG0zMDI1IGIvbGliL3Rlcm1pbmZvL2QvZG0zMDI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2UyOWViLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RtMzAyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RtMzA0NSBiL2xpYi90ZXJtaW5mby9kL2RtMzA0NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFmNzZmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbTMwNDUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kbTgwIGIvbGliL3Rlcm1pbmZvL2QvZG04MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhOGY1ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbTgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZG04MHcgYi9saWIvdGVybWluZm8vZC9kbTgwdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBkODhiYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbTgwdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RtY2hhdCBiL2xpYi90ZXJtaW5mby9kL2RtY2hhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyNWI5MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbWNoYXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kbWQgYi9saWIvdGVybWluZm8vZC9kbWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTY4ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZG1kCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZG1kLTI0IGIvbGliL3Rlcm1pbmZvL2QvZG1kLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODEyYjYyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RtZC0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RtZC0zNCBiL2xpYi90ZXJtaW5mby9kL2RtZC0zNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU2MGYwYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbWQtMzQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kbWQxIGIvbGliL3Rlcm1pbmZvL2QvZG1kMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIxMmM3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kbWQxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZG1kdDgwIGIvbGliL3Rlcm1pbmZvL2QvZG1kdDgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2E4ZjVkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RtZHQ4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RtZHQ4MHcgYi9saWIvdGVybWluZm8vZC9kbWR0ODB3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGQ4OGJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RtZHQ4MHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kbXRlcm0gYi9saWIvdGVybWluZm8vZC9kbXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZmMzNzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZG10ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHAzMzYwIGIvbGliL3Rlcm1pbmZvL2QvZHAzMzYwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDJjNmQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RwMzM2MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2RwODI0MiBiL2xpYi90ZXJtaW5mby9kL2RwODI0MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY5NzJjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kcDgyNDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kczQwIGIvbGliL3Rlcm1pbmZvL2QvZHM0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1YzM1Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kczQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHM0MC0yIGIvbGliL3Rlcm1pbmZvL2QvZHM0MC0yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzVjMzViLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2RzNDAtMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R0LTEwMCBiL2xpYi90ZXJtaW5mby9kL2R0LTEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5MmMwYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdC0xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdC0xMDB3IGIvbGliL3Rlcm1pbmZvL2QvZHQtMTAwdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBiMGVjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdC0xMDB3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHQxMDAgYi9saWIvdGVybWluZm8vZC9kdDEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5MmMwYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdDEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R0MTAwdyBiL2xpYi90ZXJtaW5mby9kL2R0MTAwdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBiMGVjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdDEwMHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdDExMCBiL2xpYi90ZXJtaW5mby9kL2R0MTEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmNhNzlkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2R0MTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHQ4MCBiL2xpYi90ZXJtaW5mby9kL2R0ODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YThmNWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHQ4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R0ODAtc2FzIGIvbGliL3Rlcm1pbmZvL2QvZHQ4MC1zYXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxYzQwNmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHQ4MC1zYXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdDgwdyBiL2xpYi90ZXJtaW5mby9kL2R0ODB3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGQ4OGJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2R0ODB3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHRjMzAwcyBiL2xpYi90ZXJtaW5mby9kL2R0YzMwMHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMmI4M2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHRjMzAwcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R0YzM4MiBiL2xpYi90ZXJtaW5mby9kL2R0YzM4MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFmYTM4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdGMzODIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdHRlcm0gYi9saWIvdGVybWluZm8vZC9kdHRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYjdiMTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHR0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHVtYiBiL2xpYi90ZXJtaW5mby9kL2R1bWIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNDA5MWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHVtYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R3IGIvbGliL3Rlcm1pbmZvL2QvZHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODZkNTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdzEgYi9saWIvdGVybWluZm8vZC9kdzEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZjBlNmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHcxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHcyIGIvbGliL3Rlcm1pbmZvL2QvZHcyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODg2ZDU3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2R3MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R3MyBiL2xpYi90ZXJtaW5mby9kL2R3MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBmMDI2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kdzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZC9kdzQgYi9saWIvdGVybWluZm8vZC9kdzQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMGJkYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2QvZHc0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2QvZHdrIGIvbGliL3Rlcm1pbmZvL2QvZHdrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmI5NmQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9kL2R3aworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9kL2R3ay12dCBiL2xpYi90ZXJtaW5mby9kL2R3ay12dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiOTZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZC9kd2stdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lY21hK2NvbG9yIGIvbGliL3Rlcm1pbmZvL2UvZWNtYStjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViZmFkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lY21hK2NvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZWNtYStzZ3IgYi9saWIvdGVybWluZm8vZS9lY21hK3NncgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBiZjA0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lY21hK3NncgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2Vsa3MgYi9saWIvdGVybWluZm8vZS9lbGtzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjY3NmRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2Vsa3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lbGtzLWFuc2kgYi9saWIvdGVybWluZm8vZS9lbGtzLWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZTQ4MGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZWxrcy1hbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZWxrcy1nbGFzc3R0eSBiL2xpYi90ZXJtaW5mby9lL2Vsa3MtZ2xhc3N0dHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjODc3MTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZWxrcy1nbGFzc3R0eQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2Vsa3MtdnQ1MiBiL2xpYi90ZXJtaW5mby9lL2Vsa3MtdnQ1MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRhYjM4NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lbGtzLXZ0NTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lbW90cyBiL2xpYi90ZXJtaW5mby9lL2Vtb3RzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzUxOGVkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2Vtb3RzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZW11IGIvbGliL3Rlcm1pbmZvL2UvZW11CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2NlNWNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2VtdQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2VtdS0yMjAgYi9saWIvdGVybWluZm8vZS9lbXUtMjIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmMwYWE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2VtdS0yMjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lbXgtYmFzZSBiL2xpYi90ZXJtaW5mby9lL2VteC1iYXNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGMyZWMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2VteC1iYXNlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZW52MjMwIGIvbGliL3Rlcm1pbmZvL2UvZW52MjMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjk5OWVjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2VudjIzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2VudmlzaW9uMjMwIGIvbGliL3Rlcm1pbmZvL2UvZW52aXNpb24yMzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOTk5ZWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZW52aXNpb24yMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lcDQwIGIvbGliL3Rlcm1pbmZvL2UvZXA0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiNTNjMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lcDQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZXA0MDAwIGIvbGliL3Rlcm1pbmZvL2UvZXA0MDAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmI1M2MxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9lL2VwNDAwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2VwNDA4MCBiL2xpYi90ZXJtaW5mby9lL2VwNDA4MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwNGE1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lcDQwODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lcDQ4IGIvbGliL3Rlcm1pbmZvL2UvZXA0OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwNGE1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lcDQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZXJnbzQwMDAgYi9saWIvdGVybWluZm8vZS9lcmdvNDAwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwMTM0NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lcmdvNDAwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2VzcHJpdCBiL2xpYi90ZXJtaW5mby9lL2VzcHJpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ5NTU4Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9lc3ByaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9lc3ByaXQtYW0gYi9saWIvdGVybWluZm8vZS9lc3ByaXQtYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMTRhNjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZXNwcml0LWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZXRlcm0gYi9saWIvdGVybWluZm8vZS9ldGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4OTYzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9ldGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2V4MTU1IGIvbGliL3Rlcm1pbmZvL2UvZXgxNTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNzc4NjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZXgxNTUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9leGNlbDYyIGIvbGliL3Rlcm1pbmZvL2UvZXhjZWw2MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5MTc2Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9leGNlbDYyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZXhjZWw2Mi1ydiBiL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjItcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4OTNlNWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZXhjZWw2Mi1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjItdyBiL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkNjNmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9leGNlbDYyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9leGNlbDY0IGIvbGliL3Rlcm1pbmZvL2UvZXhjZWw2NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5MTc2Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9leGNlbDY0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2UvZXhjZWw2NC1ydiBiL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjQtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4OTNlNWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZXhjZWw2NC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjQtdyBiL2xpYi90ZXJtaW5mby9lL2V4Y2VsNjQtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkNjNmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZS9leGNlbDY0LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZS9leGVjODAgYi9saWIvdGVybWluZm8vZS9leGVjODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDNhYTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2UvZXhlYzgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZjEwMCBiL2xpYi90ZXJtaW5mby9mL2YxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOTVlY2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZjEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2YxMDAtcnYgYi9saWIvdGVybWluZm8vZi9mMTAwLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTViOTJlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2YxMDAtcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mMTEwIGIvbGliL3Rlcm1pbmZvL2YvZjExMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0ODQ5OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mMTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZjExMC0xNCBiL2xpYi90ZXJtaW5mby9mL2YxMTAtMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViZWMxMTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZjExMC0xNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2YxMTAtMTR3IGIvbGliL3Rlcm1pbmZvL2YvZjExMC0xNHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NWI0MDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZjExMC0xNHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mMTEwLXcgYi9saWIvdGVybWluZm8vZi9mMTEwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YmZlNGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZjExMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZjE3MjAgYi9saWIvdGVybWluZm8vZi9mMTcyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM4MzdkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mMTcyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2YxNzIwYSBiL2xpYi90ZXJtaW5mby9mL2YxNzIwYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM4MzdkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mMTcyMGEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mMjAwIGIvbGliL3Rlcm1pbmZvL2YvZjIwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmMDg4Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mMjAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZjIwMC13IGIvbGliL3Rlcm1pbmZvL2YvZjIwMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmMxMzYwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2YyMDAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2YyMDB2aSBiL2xpYi90ZXJtaW5mby9mL2YyMDB2aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1YzkwNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mMjAwdmkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mMjAwdmktdyBiL2xpYi90ZXJtaW5mby9mL2YyMDB2aS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjRmYmU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2YyMDB2aS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZmFsY28gYi9saWIvdGVybWluZm8vZi9mYWxjbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkYmY5My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mYWxjbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2ZhbGNvLXAgYi9saWIvdGVybWluZm8vZi9mYWxjby1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjY1MTE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2ZhbGNvLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mZW5peCBiL2xpYi90ZXJtaW5mby9mL2Zlbml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTY1ZWQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2Zlbml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZmVuaXh3IGIvbGliL3Rlcm1pbmZvL2YvZmVuaXh3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzFiYzQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2Zlbml4dworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2ZpeHRlcm0gYi9saWIvdGVybWluZm8vZi9maXh0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTFkMmRhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2ZpeHRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mb3J0dW5lIGIvbGliL3Rlcm1pbmZvL2YvZm9ydHVuZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE4ZWQ5NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mb3J0dW5lCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZm9zIGIvbGliL3Rlcm1pbmZvL2YvZm9zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MThlZDk0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2ZvcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2ZveCBiL2xpYi90ZXJtaW5mby9mL2ZveApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZlZDcyYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mb3gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mcmVlZG9tIGIvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU5NWVjYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mcmVlZG9tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbS1ydiBiL2xpYi90ZXJtaW5mby9mL2ZyZWVkb20tcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNWI5MmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbS1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9mL2ZyZWVkb20xMDAgYi9saWIvdGVybWluZm8vZi9mcmVlZG9tMTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTk1ZWNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9mL2ZyZWVkb20xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZi9mcmVlZG9tMTEwIGIvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbTExMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0ODQ5OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZi9mcmVlZG9tMTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbTIwMCBiL2xpYi90ZXJtaW5mby9mL2ZyZWVkb20yMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZjA4ODIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2YvZnJlZWRvbTIwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dhdG9yIGIvbGliL3Rlcm1pbmZvL2cvZ2F0b3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNmZkNmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ2F0b3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nYXRvci01MiBiL2xpYi90ZXJtaW5mby9nL2dhdG9yLTUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmJmODZjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dhdG9yLTUyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ2F0b3ItNTJ0IGIvbGliL3Rlcm1pbmZvL2cvZ2F0b3ItNTJ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWEwYWY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dhdG9yLTUydAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dhdG9yLXQgYi9saWIvdGVybWluZm8vZy9nYXRvci10CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTJiZjE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dhdG9yLXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9naWdpIGIvbGliL3Rlcm1pbmZvL2cvZ2lnaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUwMmY1Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9naWdpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ2xhc3N0dHkgYi9saWIvdGVybWluZm8vZy9nbGFzc3R0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNmNzJjZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nbGFzc3R0eQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dub21lIGIvbGliL3Rlcm1pbmZvL2cvZ25vbWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMTFlMjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nbm9tZStwY2ZrZXlzIGIvbGliL3Rlcm1pbmZvL2cvZ25vbWUrcGNma2V5cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljYmQ1MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nbm9tZStwY2ZrZXlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUtMjAwNyBiL2xpYi90ZXJtaW5mby9nL2dub21lLTIwMDcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyY2I2ZWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUtMjAwNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dub21lLTIwMDggYi9saWIvdGVybWluZm8vZy9nbm9tZS0yMDA4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2QyNGY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dub21lLTIwMDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nbm9tZS0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9nL2dub21lLTI1NmNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWFlY2Y4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dub21lLTI1NmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUtZmM1IGIvbGliL3Rlcm1pbmZvL2cvZ25vbWUtZmM1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNiYjdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dub21lLWZjNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dub21lLXJoNjIgYi9saWIvdGVybWluZm8vZy9nbm9tZS1yaDYyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWFlODVlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dub21lLXJoNjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nbm9tZS1yaDcyIGIvbGliL3Rlcm1pbmZvL2cvZ25vbWUtcmg3MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmNzRmNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nbm9tZS1yaDcyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUtcmg4MCBiL2xpYi90ZXJtaW5mby9nL2dub21lLXJoODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NjVmNTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ25vbWUtcmg4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dub21lLXJoOTAgYi9saWIvdGVybWluZm8vZy9nbm9tZS1yaDkwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTk4ZTk2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dub21lLXJoOTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nby0yMjUgYi9saWIvdGVybWluZm8vZy9nby0yMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MWM1ZjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ28tMjI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ28xNDAgYi9saWIvdGVybWluZm8vZy9nbzE0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk4MDkwNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nbzE0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dvMTQwdyBiL2xpYi90ZXJtaW5mby9nL2dvMTQwdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyNDdlMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nbzE0MHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nbzIyNSBiL2xpYi90ZXJtaW5mby9nL2dvMjI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjFjNWY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dvMjI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3JhcGhvcyBiL2xpYi90ZXJtaW5mby9nL2dyYXBob3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNjI3YjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3JhcGhvcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dyYXBob3MtMzAgYi9saWIvdGVybWluZm8vZy9ncmFwaG9zLTMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzg5NDAwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dyYXBob3MtMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nczU0MzAgYi9saWIvdGVybWluZm8vZy9nczU0MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZGZmYWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3M1NDMwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3M1NDMwLTIyIGIvbGliL3Rlcm1pbmZvL2cvZ3M1NDMwLTIyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDUyYzM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dzNTQzMC0yMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2dzNTQzMC0yNCBiL2xpYi90ZXJtaW5mby9nL2dzNTQzMC0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjY2FhYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9nczU0MzAtMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9nczYzMDAgYi9saWIvdGVybWluZm8vZy9nczYzMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTE4ZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3M2MzAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3NpIGIvbGliL3Rlcm1pbmZvL2cvZ3NpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTVkOTcwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2dzaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d0MTAwIGIvbGliL3Rlcm1pbmZvL2cvZ3QxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOWZmODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3QxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndDEwMGEgYi9saWIvdGVybWluZm8vZy9ndDEwMGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOWZmODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3QxMDBhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3Q0MCBiL2xpYi90ZXJtaW5mby9nL2d0NDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMzMxNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3Q0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d0NDIgYi9saWIvdGVybWluZm8vZy9ndDQyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzNlMmNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d0NDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1IGIvbGliL3Rlcm1pbmZvL2cvZ3VydQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlNzkzZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9ndXJ1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydStydiBiL2xpYi90ZXJtaW5mby9nL2d1cnUrcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYzMyYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydStydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUrcyBiL2xpYi90ZXJtaW5mby9nL2d1cnUrcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY4NTkzZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9ndXJ1K3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1K3VuayBiL2xpYi90ZXJtaW5mby9nL2d1cnUrdW5rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU3OTNlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUrdW5rCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS0yNCBiL2xpYi90ZXJtaW5mby9nL2d1cnUtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZjFhYjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUtMzMgYi9saWIvdGVybWluZm8vZy9ndXJ1LTMzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU3OTNlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtMzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1LTMzLXJ2IGIvbGliL3Rlcm1pbmZvL2cvZ3VydS0zMy1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA2NjI5Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9ndXJ1LTMzLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS0zMy1zIGIvbGliL3Rlcm1pbmZvL2cvZ3VydS0zMy1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGMyNDc4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtMzMtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNDQgYi9saWIvdGVybWluZm8vZy9ndXJ1LTQ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ2YWM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1LTQ0LXMgYi9saWIvdGVybWluZm8vZy9ndXJ1LTQ0LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYzBlNGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS00NC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS03NiBiL2xpYi90ZXJtaW5mby9nL2d1cnUtNzYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZjIxYjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS03NgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNzYtbHAgYi9saWIvdGVybWluZm8vZy9ndXJ1LTc2LWxwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2JkMmFiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNzYtbHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1LTc2LXMgYi9saWIvdGVybWluZm8vZy9ndXJ1LTc2LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MDA1YjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni13IGIvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODkzZjczLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNzYtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUtNzYtdy1zIGIvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni13LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODI4ZTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni13LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1LTc2LXdtIGIvbGliL3Rlcm1pbmZvL2cvZ3VydS03Ni13bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkwOTU2Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9ndXJ1LTc2LXdtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS1scCBiL2xpYi90ZXJtaW5mby9nL2d1cnUtbHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmQyYWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2cvZ3VydS1scAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9nL2d1cnUtbmN0eHQgYi9saWIvdGVybWluZm8vZy9ndXJ1LW5jdHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2EwMjY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtbmN0eHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vZy9ndXJ1LXJ2IGIvbGliL3Rlcm1pbmZvL2cvZ3VydS1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA2NjI5Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vZy9ndXJ1LXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2cvZ3VydS1zIGIvbGliL3Rlcm1pbmZvL2cvZ3VydS1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGMyNDc4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9nL2d1cnUtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gtMTAwIGIvbGliL3Rlcm1pbmZvL2gvaC0xMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MmVjYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaC0xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oLTEwMGJ3IGIvbGliL3Rlcm1pbmZvL2gvaC0xMDBidwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ODY2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oLTEwMGJ3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDEwMCBiL2xpYi90ZXJtaW5mby9oL2gxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MmVjYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gxMDBidyBiL2xpYi90ZXJtaW5mby9oL2gxMDBidwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ODY2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMTAwYncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMTkgYi9saWIvdGVybWluZm8vaC9oMTkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1OTNlOTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDE5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDE5LWEgYi9saWIvdGVybWluZm8vaC9oMTktYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhNGI1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMTktYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gxOS1iIGIvbGliL3Rlcm1pbmZvL2gvaDE5LWIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1OTNlOTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDE5LWIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMTktYnMgYi9saWIvdGVybWluZm8vaC9oMTktYnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjk0OGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDE5LWJzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDE5LWcgYi9saWIvdGVybWluZm8vaC9oMTktZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdjY2EzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMTktZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gxOS1zbXVsIGIvbGliL3Rlcm1pbmZvL2gvaDE5LXNtdWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMmNkMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDE5LXNtdWwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMTktdSBiL2xpYi90ZXJtaW5mby9oL2gxOS11CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjk3ZjZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gxOS11CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDE5LXVzIGIvbGliL3Rlcm1pbmZvL2gvaDE5LXVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTJjZDMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gxOS11cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gxOWEgYi9saWIvdGVybWluZm8vaC9oMTlhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmE0YjVhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gxOWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMTlnIGIvbGliL3Rlcm1pbmZvL2gvaDE5ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdjY2EzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMTlnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDE5ayBiL2xpYi90ZXJtaW5mby9oL2gxOWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNWRkNDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDE5aworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gxOWtlcm1pdCBiL2xpYi90ZXJtaW5mby9oL2gxOWtlcm1pdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE1ZGQ0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMTlrZXJtaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMTl1cyBiL2xpYi90ZXJtaW5mby9oL2gxOXVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTJjZDMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gxOXVzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDI5YS1rYy1iYyBiL2xpYi90ZXJtaW5mby9oL2gyOWEta2MtYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YjMwOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaDI5YS1rYy1iYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2gyOWEta2MtdWMgYi9saWIvdGVybWluZm8vaC9oMjlhLWtjLXVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzFjOGI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gyOWEta2MtdWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oMjlhLW5rYy1iYyBiL2xpYi90ZXJtaW5mby9oL2gyOWEtbmtjLWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjY1MTJkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2gyOWEtbmtjLWJjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaDI5YS1ua2MtdWMgYi9saWIvdGVybWluZm8vaC9oMjlhLW5rYy11YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2ZTgwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oMjlhLW5rYy11YworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2g4MCBiL2xpYi90ZXJtaW5mby9oL2g4MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkM2FhNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oYTg2NzUgYi9saWIvdGVybWluZm8vaC9oYTg2NzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTk5NWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGE4Njc1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaGE4Njg2IGIvbGliL3Rlcm1pbmZvL2gvaGE4Njg2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTczZjE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hhODY4NgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hhemVsIGIvbGliL3Rlcm1pbmZvL2gvaGF6ZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDNhYTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGF6ZWwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oZHMyMDAgYi9saWIvdGVybWluZm8vaC9oZHMyMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YTI2MTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGRzMjAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaGU4MCBiL2xpYi90ZXJtaW5mby9oL2hlODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDNhYTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGU4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hlYXRoIGIvbGliL3Rlcm1pbmZvL2gvaGVhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1OTNlOTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGVhdGgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oZWF0aC0xOSBiL2xpYi90ZXJtaW5mby9oL2hlYXRoLTE5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTkzZTk2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hlYXRoLTE5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaGVhdGgtYW5zaSBiL2xpYi90ZXJtaW5mby9oL2hlYXRoLWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYTRiNWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGVhdGgtYW5zaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hlYXRoa2l0IGIvbGliL3Rlcm1pbmZvL2gvaGVhdGhraXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1OTNlOTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGVhdGhraXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oZWF0aGtpdC1hIGIvbGliL3Rlcm1pbmZvL2gvaGVhdGhraXQtYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhNGI1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oZWF0aGtpdC1hCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaGZ0IGIvbGliL3Rlcm1pbmZvL2gvaGZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjI5ZmJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hmdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hmdC1jIGIvbGliL3Rlcm1pbmZvL2gvaGZ0LWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Nzg4MDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGZ0LWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oZnQtYy1vbGQgYi9saWIvdGVybWluZm8vaC9oZnQtYy1vbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZWIxYzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGZ0LWMtb2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaGZ0LW9sZCBiL2xpYi90ZXJtaW5mby9oL2hmdC1vbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZjk0OGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGZ0LW9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hpcmV6MTAwIGIvbGliL3Rlcm1pbmZvL2gvaGlyZXoxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMTU2YWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaGlyZXoxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oaXJlejEwMC13IGIvbGliL3Rlcm1pbmZvL2gvaGlyZXoxMDAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkxYWY3Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oaXJlejEwMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaG1vZDEgYi9saWIvdGVybWluZm8vaC9obW9kMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhmMGQwZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9obW9kMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwIGIvbGliL3Rlcm1pbmZvL2gvaHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNjg4NmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocCthcnJvd3MgYi9saWIvdGVybWluZm8vaC9ocCthcnJvd3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMDBhMTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHArYXJyb3dzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHArY29sb3IgYi9saWIvdGVybWluZm8vaC9ocCtjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5NjQ1Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocCtjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwK2xhYmVscyBiL2xpYi90ZXJtaW5mby9oL2hwK2xhYmVscwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzllOWE2Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocCtsYWJlbHMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocCtwZmsrYXJyb3dzIGIvbGliL3Rlcm1pbmZvL2gvaHArcGZrK2Fycm93cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkzNjQxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocCtwZmsrYXJyb3dzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHArcGZrK2NyIGIvbGliL3Rlcm1pbmZvL2gvaHArcGZrK2NyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjdjM2IzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwK3BmaytjcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwK3Bmay1jciBiL2xpYi90ZXJtaW5mby9oL2hwK3Bmay1jcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM0MTRhNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocCtwZmstY3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocCtwcmludGVyIGIvbGliL3Rlcm1pbmZvL2gvaHArcHJpbnRlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjllZjZlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocCtwcmludGVyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAxMTAgYi9saWIvdGVybWluZm8vaC9ocDExMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmODkyOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDExMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMTUwIGIvbGliL3Rlcm1pbmZvL2gvaHAxNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYTc0ZjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAxNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDIgYi9saWIvdGVybWluZm8vaC9ocDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjAzY2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyMzYgYi9saWIvdGVybWluZm8vaC9ocDIzNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzMjAyZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDIzNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjM4MiBiL2xpYi90ZXJtaW5mby9oL2hwMjM4MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNmMDA3OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDIzODIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDIzODJhIGIvbGliL3Rlcm1pbmZvL2gvaHAyMzgyYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNmMDA3OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDIzODJhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyMzkyIGIvbGliL3Rlcm1pbmZvL2gvaHAyMzkyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTg1NzllLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjM5MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjM5NyBiL2xpYi90ZXJtaW5mby9oL2hwMjM5NwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmY2FmMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDIzOTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDIzOTdhIGIvbGliL3Rlcm1pbmZvL2gvaHAyMzk3YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmY2FmMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDIzOTdhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzBkMjVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS00OCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMS00OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0OTBhZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjEtNDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjEtYSBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmFhNzVjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1hCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLWJhIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLWJhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGNjMzMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1iYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1mbCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1mbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBiOTExZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjEtZmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjEtazQ1IGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLWs0NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIxYzA5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjEtazQ1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLW5sIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGEzNTkxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1udCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMS1udApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ4MDk0Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjEtbnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjEtd2wgYi9saWIvdGVybWluZm8vaC9ocDI2MjEtd2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGQyNWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxLXdsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxQSBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMUEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGQyNWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxQQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWEgYi9saWIvdGVybWluZm8vaC9ocDI2MjFhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzBkMjVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjFhLWEgYi9saWIvdGVybWluZm8vaC9ocDI2MjFhLWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYWE3NWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYS1hCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYiBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMWIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNGZlYzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWIta3ggYi9saWIvdGVybWluZm8vaC9ocDI2MjFiLWt4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjRjZWU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWIta3gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjFiLWt4LXAgYi9saWIvdGVybWluZm8vaC9ocDI2MjFiLWt4LXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODU1MGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYi1reC1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYi1wIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxYi1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjk1ZGY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWItcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMWs0NSBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMWs0NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIxYzA5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjFrNDUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjFwIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I4MmZlYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjFwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIxcC1hIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIxcC1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDIwN2JmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMXAtYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMiBiL2xpYi90ZXJtaW5mby9oL2hwMjYyMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkzZGE4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjJhIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIyYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkzZGE4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjJhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjIzIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjIzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWEzOWE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyM2EgYi9saWIvdGVybWluZm8vaC9ocDI2MjNhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWEzOWE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyM2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjQgYi9saWIvdGVybWluZm8vaC9ocDI2MjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YTgyOWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0LTEwcCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNC0xMHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYjU3NjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0LTEwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNGEgYi9saWIvdGVybWluZm8vaC9ocDI2MjRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWE4MjlhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNGEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjRhLTEwcCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNGEtMTBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2I1NzY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNGEtMTBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0YiBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNGIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YTgyOWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNGItMTBwIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi0xMHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYjU3NjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi0xMHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjRiLTEwcC1wIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi0xMHAtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMzNDhhYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjRiLTEwcC1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi00cCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNGItNHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YTgyOWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi00cAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNGItNHAtcCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNGItNHAtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRkNjc0MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjRiLTRwLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjRiLXAgYi9saWIvdGVybWluZm8vaC9ocDI2MjRiLXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZDY3NDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI0Yi1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI2IGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDFkZmU3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNi0xMiBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNi0xMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmNjYzZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjYtMTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjYtMTItcyBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNi0xMi1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTg0MzA5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNi0xMi1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI2LTEyeDQwIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI2LTEyeDQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDE2YTQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNi0xMng0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNi1ucyBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNi1ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3NDJiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjYtbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjYtcyBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNi1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTEyNGY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNi1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI2LXg0MCBiL2xpYi90ZXJtaW5mby9oL2hwMjYyNi14NDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMTNiN2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI2LXg0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNmEgYi9saWIvdGVybWluZm8vaC9ocDI2MjZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDFkZmU3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyNmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjZwIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI2cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxZGZlNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjZwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI3YSBiL2xpYi90ZXJtaW5mby9oL2hwMjYyN2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMDA1MzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI3YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjYyN2EtcmV2IGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI3YS1yZXYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YmE4N2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjI3YS1yZXYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2MjdjIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjI3YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNjNWE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2MjdjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjJ4IGIvbGliL3Rlcm1pbmZvL2gvaHAyNjJ4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjlhYTZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjYyeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjY0MGEgYi9saWIvdGVybWluZm8vaC9ocDI2NDBhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGI0NTBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjY0MGEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2NDBiIGIvbGliL3Rlcm1pbmZvL2gvaHAyNjQwYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2ZWRlMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDI2NDBiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQxYSBiL2xpYi90ZXJtaW5mby9oL2hwMjY0MWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMGFkOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQxYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjY0NGEgYi9saWIvdGVybWluZm8vaC9ocDI2NDRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTZlZGUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjY0NGEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2NDUgYi9saWIvdGVybWluZm8vaC9ocDI2NDUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZmYxNmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ1YSBiL2xpYi90ZXJtaW5mby9oL2hwMjY0NWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMGFkOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ1YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMjY0N2EgYi9saWIvdGVybWluZm8vaC9ocDI2NDdhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzBhZDkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwMjY0N2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDI2NDggYi9saWIvdGVybWluZm8vaC9ocDI2NDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjA4Y2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ4YSBiL2xpYi90ZXJtaW5mby9oL2hwMjY0OGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjA4Y2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHAyNjQ4YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwMzAwaCBiL2xpYi90ZXJtaW5mby9oL2hwMzAwaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1ZTc0YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDMwMGgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDQ1IGIvbGliL3Rlcm1pbmZvL2gvaHA0NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmZjE2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDQ1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHA3MDAgYi9saWIvdGVybWluZm8vaC9ocDcwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlOTc2Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDcwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwNzAwLXd5IGIvbGliL3Rlcm1pbmZvL2gvaHA3MDAtd3kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MGVhOTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHA3MDAtd3kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDcwMDkyIGIvbGliL3Rlcm1pbmZvL2gvaHA3MDA5MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmOTFiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDcwMDkyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHA3MDA5MkEgYi9saWIvdGVybWluZm8vaC9ocDcwMDkyQQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmOTFiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocDcwMDkyQQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwNzAwOTJhIGIvbGliL3Rlcm1pbmZvL2gvaHA3MDA5MmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjkxYjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHA3MDA5MmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDk4MzcgYi9saWIvdGVybWluZm8vaC9ocDk4MzcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNTdjYTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHA5ODM3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHA5ODQ1IGIvbGliL3Rlcm1pbmZvL2gvaHA5ODQ1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzMwNDE0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwOTg0NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwOTg1NTAgYi9saWIvdGVybWluZm8vaC9ocDk4NTUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY4Njg1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwOTg1NTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocDk4NTUwYSBiL2xpYi90ZXJtaW5mby9oL2hwOTg1NTBhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY4Njg1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwOTg1NTBhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHA5ODcyMCBiL2xpYi90ZXJtaW5mby9oL2hwOTg3MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNTdjYTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHA5ODcyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwOTg3MjEgYi9saWIvdGVybWluZm8vaC9ocDk4NzIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTU3Y2E3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2hwOTg3MjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocGFuc2kgYi9saWIvdGVybWluZm8vaC9ocGFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZTk3NjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHBhbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHBleCBiL2xpYi90ZXJtaW5mby9oL2hwZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZWU2ZmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHBleAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwZXgyIGIvbGliL3Rlcm1pbmZvL2gvaHBleDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjAzY2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHBleDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocGdlbmVyaWMgYi9saWIvdGVybWluZm8vaC9ocGdlbmVyaWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNjg4NmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHBnZW5lcmljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHBzdWIgYi9saWIvdGVybWluZm8vaC9ocHN1YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWViZGIwNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocHN1YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2hwdGVybSBiL2xpYi90ZXJtaW5mby9oL2hwdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJjY2ZmYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9ocHRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9ocHRlcm0tY29sb3IgYi9saWIvdGVybWluZm8vaC9ocHRlcm0tY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMmFjYzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHB0ZXJtLWNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHR4MTEgYi9saWIvdGVybWluZm8vaC9odHgxMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU2NWQ4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9odHgxMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2h1cmQgYi9saWIvdGVybWluZm8vaC9odXJkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTliY2E1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2h1cmQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oejEwMDAgYi9saWIvdGVybWluZm8vaC9oejEwMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMmNlZGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHoxMDAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHoxNDIwIGIvbGliL3Rlcm1pbmZvL2gvaHoxNDIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGNhZjJlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2h6MTQyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2h6MTUwMCBiL2xpYi90ZXJtaW5mby9oL2h6MTUwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkzODE4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oejE1MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oejE1MTAgYi9saWIvdGVybWluZm8vaC9oejE1MTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZDFiZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHoxNTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHoxNTIwIGIvbGliL3Rlcm1pbmZvL2gvaHoxNTIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjUzM2JjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2h6MTUyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2h6MTUyMC1ub2VzYyBiL2xpYi90ZXJtaW5mby9oL2h6MTUyMC1ub2VzYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyNGI1YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oejE1MjAtbm9lc2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaC9oejE1NTIgYi9saWIvdGVybWluZm8vaC9oejE1NTIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NWExZDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2gvaHoxNTUyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2gvaHoxNTUyLXJ2IGIvbGliL3Rlcm1pbmZvL2gvaHoxNTUyLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjMzODg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9oL2h6MTU1Mi1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9oL2h6MjAwMCBiL2xpYi90ZXJtaW5mby9oL2h6MjAwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ3Nzk1ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaC9oejIwMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pMTAwIGIvbGliL3Rlcm1pbmZvL2kvaTEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M5ZmY4NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pMTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaTMxMDEgYi9saWIvdGVybWluZm8vaS9pMzEwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxODUzZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pMzEwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2kzMTY0IGIvbGliL3Rlcm1pbmZvL2kvaTMxNjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTMxZTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaTMxNjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pNDAwIGIvbGliL3Rlcm1pbmZvL2kvaTQwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViZTg1OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pNDAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJjczIgYi9saWIvdGVybWluZm8vaS9pYmNzMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJkYTcyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYmNzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libSsxNmNvbG9yIGIvbGliL3Rlcm1pbmZvL2kvaWJtKzE2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDE1OTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtKzE2Y29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm0rY29sb3IgYi9saWIvdGVybWluZm8vaS9pYm0rY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTYwNTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtK2NvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtLWFwbCBiL2xpYi90ZXJtaW5mby9pL2libS1hcGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OWE1NzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtLWFwbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libS1wYyBiL2xpYi90ZXJtaW5mby9pL2libS1wYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzNzY2Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm0tcGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm0tc3lzdGVtMSBiL2xpYi90ZXJtaW5mby9pL2libS1zeXN0ZW0xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmZjZTIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libS1zeXN0ZW0xCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtMzEwMSBiL2xpYi90ZXJtaW5mby9pL2libTMxMDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMTg1M2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtMzEwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTMxNTEgYi9saWIvdGVybWluZm8vaS9pYm0zMTUxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmY2ZGY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTMxNTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm0zMTYxIGIvbGliL3Rlcm1pbmZvL2kvaWJtMzE2MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFkY2ExOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm0zMTYxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtMzE2MS1DIGIvbGliL3Rlcm1pbmZvL2kvaWJtMzE2MS1DCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzEzZWVjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTMxNjEtQworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTMxNjIgYi9saWIvdGVybWluZm8vaS9pYm0zMTYyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Yjc3ZTNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTMxNjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm0zMTYzIGIvbGliL3Rlcm1pbmZvL2kvaWJtMzE2MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFkY2ExOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm0zMTYzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtMzE2NCBiL2xpYi90ZXJtaW5mby9pL2libTMxNjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTMxZTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtMzE2NAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTMyN3ggYi9saWIvdGVybWluZm8vaS9pYm0zMjd4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmEzMmNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTMyN3gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm01MDUxIGIvbGliL3Rlcm1pbmZvL2kvaWJtNTA1MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzNzY2Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm01MDUxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtNTA4MSBiL2xpYi90ZXJtaW5mby9pL2libTUwODEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMjlmYmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtNTA4MQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTUwODEtYyBiL2xpYi90ZXJtaW5mby9pL2libTUwODEtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJiZGMwMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm01MDgxLWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm01MTUxIGIvbGliL3Rlcm1pbmZvL2kvaWJtNTE1MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3YjNhMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm01MTUxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtNTE1NCBiL2xpYi90ZXJtaW5mby9pL2libTUxNTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOTQzMDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtNTE1NAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTUxNTQtYyBiL2xpYi90ZXJtaW5mby9pL2libTUxNTQtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdmY2U5YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm01MTU0LWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm02MTUzIGIvbGliL3Rlcm1pbmZvL2kvaWJtNjE1MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2MTViOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm02MTUzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtNjE1My00MCBiL2xpYi90ZXJtaW5mby9pL2libTYxNTMtNDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYmQ1NjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtNjE1My00MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTYxNTMtOTAgYi9saWIvdGVybWluZm8vaS9pYm02MTUzLTkwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjlhNjkxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTYxNTMtOTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm02MTU0IGIvbGliL3Rlcm1pbmZvL2kvaWJtNjE1NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcyM2IzMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm02MTU0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtNjE1NC1jIGIvbGliL3Rlcm1pbmZvL2kvaWJtNjE1NC1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjliMzBhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTYxNTQtYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTYxNTUgYi9saWIvdGVybWluZm8vaS9pYm02MTU1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTlmZWM3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTYxNTUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm04NTAzIGIvbGliL3Rlcm1pbmZvL2kvaWJtODUwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg3MGUyMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm04NTAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtODUwNyBiL2xpYi90ZXJtaW5mby9pL2libTg1MDcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NzBlMjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtODUwNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTg1MTIgYi9saWIvdGVybWluZm8vaS9pYm04NTEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDk3Y2JlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libTg1MTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm04NTEzIGIvbGliL3Rlcm1pbmZvL2kvaWJtODUxMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ5N2NiZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm04NTEzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtODUxNCBiL2xpYi90ZXJtaW5mby9pL2libTg1MTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZGRmZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtODUxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libTg1MTQtYyBiL2xpYi90ZXJtaW5mby9pL2libTg1MTQtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQyZGU0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm04NTE0LWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm04NjA0IGIvbGliL3Rlcm1pbmZvL2kvaWJtODYwNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg3MGUyMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm04NjA0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtYWVkIGIvbGliL3Rlcm1pbmZvL2kvaWJtYWVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjdkMGYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libWFlZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libWFwYTE2IGIvbGliL3Rlcm1pbmZvL2kvaWJtYXBhMTYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YmQxYWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtYXBhMTYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm1hcGE4IGIvbGliL3Rlcm1pbmZvL2kvaWJtYXBhOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJlNzAxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1hcGE4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtYXBhOGMgYi9saWIvdGVybWluZm8vaS9pYm1hcGE4YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJlNzAxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1hcGE4YworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libWFwYThjLWMgYi9saWIvdGVybWluZm8vaS9pYm1hcGE4Yy1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjliMzBhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libWFwYThjLWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm1lZ2EgYi9saWIvdGVybWluZm8vaS9pYm1lZ2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMzIxNTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtZWdhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtZWdhLWMgYi9saWIvdGVybWluZm8vaS9pYm1lZ2EtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdmY2U5YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1lZ2EtYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libW1vbm8gYi9saWIvdGVybWluZm8vaS9pYm1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjBiYmM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm1tcGVsLWMgYi9saWIvdGVybWluZm8vaS9pYm1tcGVsLWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYmRjMDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtbXBlbC1jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtcGMgYi9saWIvdGVybWluZm8vaS9pYm1wYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg0NDcxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1wYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libXBjMyBiL2xpYi90ZXJtaW5mby9pL2libXBjMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkOTkyZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1wYzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm1wYzNyIGIvbGliL3Rlcm1pbmZvL2kvaWJtcGMzcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkYjFjOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1wYzNyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtcGMzci1tb25vIGIvbGliL3Rlcm1pbmZvL2kvaWJtcGMzci1tb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThhNTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libXBjM3ItbW9ubworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libXBjeCBiL2xpYi90ZXJtaW5mby9pL2libXBjeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZlMzA1Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm1wY3gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pYm12Z2EgYi9saWIvdGVybWluZm8vaS9pYm12Z2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiOTRjZjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWJtdmdhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWJtdmdhLWMgYi9saWIvdGVybWluZm8vaS9pYm12Z2EtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNjNWI4ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pYm12Z2EtYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2libXggYi9saWIvdGVybWluZm8vaS9pYm14CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmUzMDU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2libXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pY2w2NDAyIGIvbGliL3Rlcm1pbmZvL2kvaWNsNjQwMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUwM2YxNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pY2w2NDAyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaWNsNjQwNCBiL2xpYi90ZXJtaW5mby9pL2ljbDY0MDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMDNmMTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaWNsNjQwNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2ljbDY0MDQtdyBiL2xpYi90ZXJtaW5mby9pL2ljbDY0MDQtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4YTBiMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pY2w2NDA0LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pZm1yIGIvbGliL3Rlcm1pbmZvL2kvaWZtcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY4MmRjYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pZm1yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaW1zLWFuc2kgYi9saWIvdGVybWluZm8vaS9pbXMtYW5zaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU3YzQyNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbXMtYW5zaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2ltczk1MCBiL2xpYi90ZXJtaW5mby9pL2ltczk1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdkOTc4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbXM5NTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pbXM5NTAtYiBiL2xpYi90ZXJtaW5mby9pL2ltczk1MC1iCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjA0OWE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2ltczk1MC1iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaW1zOTUwLXJ2IGIvbGliL3Rlcm1pbmZvL2kvaW1zOTUwLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmI1NmQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2ltczk1MC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2luZm90b24gYi9saWIvdGVybWluZm8vaS9pbmZvdG9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGM1MDliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2luZm90b24KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pbnRlcml4IGIvbGliL3Rlcm1pbmZvL2kvaW50ZXJpeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkNGQ2YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbnRlcml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaW50ZXJpeC1udGkgYi9saWIvdGVybWluZm8vaS9pbnRlcml4LW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNTcxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbnRlcml4LW50aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2ludGVydGVjIGIvbGliL3Rlcm1pbmZvL2kvaW50ZXJ0ZWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjAxMzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaW50ZXJ0ZWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pbnRlcnR1YmUgYi9saWIvdGVybWluZm8vaS9pbnRlcnR1YmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjAxMzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaW50ZXJ0dWJlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaW50ZXJ0dWJlMiBiL2xpYi90ZXJtaW5mby9pL2ludGVydHViZTIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYmIzYjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaW50ZXJ0dWJlMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2ludGV4dCBiL2xpYi90ZXJtaW5mby9pL2ludGV4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYwN2JhNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbnRleHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pbnRleHQyIGIvbGliL3Rlcm1pbmZvL2kvaW50ZXh0MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNlOGVjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbnRleHQyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaW50ZXh0aWkgYi9saWIvdGVybWluZm8vaS9pbnRleHRpaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNlOGVjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pbnRleHRpaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2lwcyBiL2xpYi90ZXJtaW5mby9pL2lwcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNhYWNiMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pcHMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pcHNpIGIvbGliL3Rlcm1pbmZvL2kvaXBzaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYwZmFhZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pcHNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaXExMjAgYi9saWIvdGVybWluZm8vaS9pcTEyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3YTYwMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pcTEyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2lxMTQwIGIvbGliL3Rlcm1pbmZvL2kvaXExNDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNjQxYzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaXExNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pcmlzLWFuc2kgYi9saWIvdGVybWluZm8vaS9pcmlzLWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMTE0MjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2kvaXJpcy1hbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaXJpcy1hbnNpLWFwIGIvbGliL3Rlcm1pbmZvL2kvaXJpcy1hbnNpLWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDVmYzk1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2lyaXMtYW5zaS1hcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9pL2lyaXMtYW5zaS1uZXQgYi9saWIvdGVybWluZm8vaS9pcmlzLWFuc2ktbmV0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDExNDIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2lyaXMtYW5zaS1uZXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vaS9pcmlzLWNvbG9yIGIvbGliL3Rlcm1pbmZvL2kvaXJpcy1jb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY2YzYwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vaS9pcmlzLWNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2kvaXJpczQwIGIvbGliL3Rlcm1pbmZvL2kvaXJpczQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWY3OThlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9pL2lyaXM0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9qL2phaXh0ZXJtIGIvbGliL3Rlcm1pbmZvL2ovamFpeHRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMGMzZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2ovamFpeHRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vai9qYWl4dGVybS1tIGIvbGliL3Rlcm1pbmZvL2ovamFpeHRlcm0tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhMDk2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vai9qYWl4dGVybS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2ovamVycSBiL2xpYi90ZXJtaW5mby9qL2plcnEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2YTU2NWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2ovamVycQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9qL2pmYnRlcm0gYi9saWIvdGVybWluZm8vai9qZmJ0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTYzYTI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9qL2pmYnRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rNDUgYi9saWIvdGVybWluZm8vay9rNDUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMWMwOWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2svazQ1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva2F5cHJvIGIvbGliL3Rlcm1pbmZvL2sva2F5cHJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTI4MDdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2theXBybworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2theXBybzIgYi9saWIvdGVybWluZm8vay9rYXlwcm8yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTI4MDdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2theXBybzIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rZHM2NDAyIGIvbGliL3Rlcm1pbmZvL2sva2RzNjQwMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUwM2YxNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rZHM2NDAyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva2RzNzM3MiBiL2xpYi90ZXJtaW5mby9rL2tkczczNzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMDNmMTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva2RzNzM3MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tkczczNzItdyBiL2xpYi90ZXJtaW5mby9rL2tkczczNzItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4YTBiMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rZHM3MzcyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rZXJtaXQgYi9saWIvdGVybWluZm8vay9rZXJtaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMmM5OWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva2VybWl0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva2VybWl0LWFtIGIvbGliL3Rlcm1pbmZvL2sva2VybWl0LWFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGQzM2M1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tlcm1pdC1hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tsb25lK2FjcyBiL2xpYi90ZXJtaW5mby9rL2tsb25lK2FjcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY2Y2EwMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rbG9uZSthY3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rbG9uZStjb2xvciBiL2xpYi90ZXJtaW5mby9rL2tsb25lK2NvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU2YjdjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tsb25lK2NvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva2xvbmUra29pOGFjcyBiL2xpYi90ZXJtaW5mby9rL2tsb25lK2tvaThhY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzZWRjNDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva2xvbmUra29pOGFjcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tsb25lK3NnciBiL2xpYi90ZXJtaW5mby9rL2tsb25lK3NncgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI2MTUxYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rbG9uZStzZ3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rbG9uZStzZ3ItZHVtYiBiL2xpYi90ZXJtaW5mby9rL2tsb25lK3Nnci1kdW1iCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVlZDQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tsb25lK3Nnci1kdW1iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva2xvbmUrc2dyOCBiL2xpYi90ZXJtaW5mby9rL2tsb25lK3NncjgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZTYzYTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva2xvbmUrc2dyOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tvbiBiL2xpYi90ZXJtaW5mby9rL2tvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2M2EyNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb24KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rb24yIGIvbGliL3Rlcm1pbmZvL2sva29uMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2M2EyNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb24yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva29uc29sZSBiL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNzYwNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva29uc29sZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUrcGNma2V5cyBiL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUrcGNma2V5cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MxNjE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb25zb2xlK3BjZmtleXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rb25zb2xlLTE2Y29sb3IgYi9saWIvdGVybWluZm8vay9rb25zb2xlLTE2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjE2ZGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS0xNmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtMjU2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxODc3YmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS0yNTZjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtYmFzZSBiL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtYmFzZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1OWI5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb25zb2xlLWJhc2UKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rb25zb2xlLWxpbnV4IGIvbGliL3Rlcm1pbmZvL2sva29uc29sZS1saW51eApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRmMzNkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb25zb2xlLWxpbnV4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS1zb2xhcmlzIGIvbGliL3Rlcm1pbmZvL2sva29uc29sZS1zb2xhcmlzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTQ3MTAzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtc29sYXJpcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtdnQxMDAgYi9saWIvdGVybWluZm8vay9rb25zb2xlLXZ0MTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjQ0MGZiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUtdnQxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rb25zb2xlLXZ0NDIwcGMgYi9saWIvdGVybWluZm8vay9rb25zb2xlLXZ0NDIwcGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYTJhMjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS12dDQyMHBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva29uc29sZS14ZjN4IGIvbGliL3Rlcm1pbmZvL2sva29uc29sZS14ZjN4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWRkYTQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUteGYzeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUteGY0eCBiL2xpYi90ZXJtaW5mby9rL2tvbnNvbGUteGY0eApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBhY2Y0Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rb25zb2xlLXhmNHgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rdDcgYi9saWIvdGVybWluZm8vay9rdDcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OTljNTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva3Q3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva3Q3aXggYi9saWIvdGVybWluZm8vay9rdDdpeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU2NmE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rdDdpeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2t0ZXJtIGIvbGliL3Rlcm1pbmZvL2sva3Rlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YmFlZTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva3Rlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rdGVybS1jbyBiL2xpYi90ZXJtaW5mby9rL2t0ZXJtLWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWFkMzg0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9rL2t0ZXJtLWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2sva3Rlcm0tY29sb3IgYi9saWIvdGVybWluZm8vay9rdGVybS1jb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZDM4NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rdGVybS1jb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9rL2t0bSBiL2xpYi90ZXJtaW5mby9rL2t0bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkYmY2Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vay9rdG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vay9rdnQgYi9saWIvdGVybWluZm8vay9rdnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxN2JhZWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2sva3Z0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGExMjAgYi9saWIvdGVybWluZm8vbC9sYTEyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBmMDI2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9sYTEyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xheWVyIGIvbGliL3Rlcm1pbmZvL2wvbGF5ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMTNiY2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGF5ZXIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9sZnQgYi9saWIvdGVybWluZm8vbC9sZnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzViNDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGZ0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGZ0LXBjODUwIGIvbGliL3Rlcm1pbmZvL2wvbGZ0LXBjODUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM1YjQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xmdC1wYzg1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xpbnV4IGIvbGliL3Rlcm1pbmZvL2wvbGludXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjM2NlYjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGludXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9saW51eC1iYXNpYyBiL2xpYi90ZXJtaW5mby9sL2xpbnV4LWJhc2ljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDZmYjUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LWJhc2ljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGludXgtYyBiL2xpYi90ZXJtaW5mby9sL2xpbnV4LWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NDAyMzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGludXgtYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LWMtbmMgYi9saWIvdGVybWluZm8vbC9saW51eC1jLW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Mjg0Y2ZiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LWMtbmMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9saW51eC1rb2k4IGIvbGliL3Rlcm1pbmZvL2wvbGludXgta29pOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMzZWM5Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saW51eC1rb2k4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGludXgta29pOHIgYi9saWIvdGVybWluZm8vbC9saW51eC1rb2k4cgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNjMDRlYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saW51eC1rb2k4cgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LWxhdCBiL2xpYi90ZXJtaW5mby9sL2xpbnV4LWxhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRjYzFjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saW51eC1sYXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9saW51eC1tIGIvbGliL3Rlcm1pbmZvL2wvbGludXgtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdlNzFhNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saW51eC1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGludXgtbmljIGIvbGliL3Rlcm1pbmZvL2wvbGludXgtbmljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmQ5OTUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LW5pYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xpbnV4LXZ0IGIvbGliL3Rlcm1pbmZvL2wvbGludXgtdnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzE5OGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGludXgtdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9saW51eDIuNi4yNiBiL2xpYi90ZXJtaW5mby9sL2xpbnV4Mi42LjI2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGU2ZjhlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xpbnV4Mi42LjI2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGlzYSBiL2xpYi90ZXJtaW5mby9sL2xpc2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYWEwYmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGlzYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xpc2F0ZXJtIGIvbGliL3Rlcm1pbmZvL2wvbGlzYXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MTJkNjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbGlzYXRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9saXNhdGVybS13IGIvbGliL3Rlcm1pbmZvL2wvbGlzYXRlcm0tdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkxNDM1MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saXNhdGVybS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbGlzd2IgYi9saWIvdGVybWluZm8vbC9saXN3YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM5ZmE3Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9saXN3YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2xuMDMgYi9saWIvdGVybWluZm8vbC9sbjAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTE1MzFjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xuMDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9sbjAzLXcgYi9saWIvdGVybWluZm8vbC9sbjAzLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOGIzYWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL2wvbG4wMy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL2wvbHByIGIvbGliL3Rlcm1pbmZvL2wvbHByCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzllMWU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2xwcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9sL2x1bmEgYi9saWIvdGVybWluZm8vbC9sdW5hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWExOGE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9sL2x1bmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbC9sdW5hNjhrIGIvbGliL3Rlcm1pbmZvL2wvbHVuYTY4awpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhMThhOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbC9sdW5hNjhrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbTItbmFtIGIvbGliL3Rlcm1pbmZvL20vbTItbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWVkZjhjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL20yLW5hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21hYyBiL2xpYi90ZXJtaW5mby9tL21hYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJkNWQyNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tYWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tYWMtdyBiL2xpYi90ZXJtaW5mby9tL21hYy13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDg5MDUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21hYy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWFjaCBiL2xpYi90ZXJtaW5mby9tL21hY2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0Njk5YzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWFjaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21hY2gtYm9sZCBiL2xpYi90ZXJtaW5mby9tL21hY2gtYm9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI3MmZjYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tYWNoLWJvbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tYWNoLWNvbG9yIGIvbGliL3Rlcm1pbmZvL20vbWFjaC1jb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU2M2Q4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tYWNoLWNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWFjaW50b3NoIGIvbGliL3Rlcm1pbmZvL20vbWFjaW50b3NoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ1ZDI3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21hY2ludG9zaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21hY3Rlcm1pbmFsLXcgYi9saWIvdGVybWluZm8vbS9tYWN0ZXJtaW5hbC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDg5MDUzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21hY3Rlcm1pbmFsLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tYWkgYi9saWIvdGVybWluZm8vbS9tYWkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMmFlZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWFpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWFzc2NvbXAgYi9saWIvdGVybWluZm8vbS9tYXNzY29tcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdlZjM4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tYXNzY29tcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21hc3Njb21wMSBiL2xpYi90ZXJtaW5mby9tL21hc3Njb21wMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUzMDNiOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tYXNzY29tcDEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tYXNzY29tcDIgYi9saWIvdGVybWluZm8vbS9tYXNzY29tcDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOTljYmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWFzc2NvbXAyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWRsMTEwIGIvbGliL3Rlcm1pbmZvL20vbWRsMTEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjYyY2U1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21kbDExMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21lZ2F0ZWsgYi9saWIvdGVybWluZm8vbS9tZWdhdGVrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmMxNTY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21lZ2F0ZWsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tZW1ocCBiL2xpYi90ZXJtaW5mby9tL21lbWhwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDkyYjIyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21lbWhwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWdyIGIvbGliL3Rlcm1pbmZvL20vbWdyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzczY2ZkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21ncgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21nci1saW51eCBiL2xpYi90ZXJtaW5mby9tL21nci1saW51eApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYwNjVhMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tZ3ItbGludXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tZ3Itc3VuIGIvbGliL3Rlcm1pbmZvL20vbWdyLXN1bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwNDEyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tZ3Itc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWd0IGIvbGliL3Rlcm1pbmZvL20vbWd0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTkyMzA2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21ndAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21ndGVybSBiL2xpYi90ZXJtaW5mby9tL21ndGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0ZDVmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tZ3Rlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taWNyb2IgYi9saWIvdGVybWluZm8vbS9taWNyb2IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNmY0ZGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWljcm9iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWljcm9iZWUgYi9saWIvdGVybWluZm8vbS9taWNyb2JlZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2ZjRkZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taWNyb2JlZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pY3JvdGVybSBiL2xpYi90ZXJtaW5mby9tL21pY3JvdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0YmQxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taWNyb3Rlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taWNyb3Rlcm01IGIvbGliL3Rlcm1pbmZvL20vbWljcm90ZXJtNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiMjk2Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taWNyb3Rlcm01CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWltZSBiL2xpYi90ZXJtaW5mby9tL21pbWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZjVjY2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbWUtM2F4IGIvbGliL3Rlcm1pbmZvL20vbWltZS0zYXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MjE0MzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZS0zYXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW1lLWZiIGIvbGliL3Rlcm1pbmZvL20vbWltZS1mYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxNDA3OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW1lLWZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWltZS1oYiBiL2xpYi90ZXJtaW5mby9tL21pbWUtaGIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmOWM5ZjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZS1oYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbWUxIGIvbGliL3Rlcm1pbmZvL20vbWltZTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZjVjY2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW1lMiBiL2xpYi90ZXJtaW5mby9tL21pbWUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2Y1Y2NjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21pbWUyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWltZTJhIGIvbGliL3Rlcm1pbmZvL20vbWltZTJhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWEzZThlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21pbWUyYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbWUyYS1zIGIvbGliL3Rlcm1pbmZvL20vbWltZTJhLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MzZjMmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZTJhLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW1lMmEtdiBiL2xpYi90ZXJtaW5mby9tL21pbWUyYS12CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWEzZThlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21pbWUyYS12CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWltZTMxNCBiL2xpYi90ZXJtaW5mby9tL21pbWUzMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNjkxNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZTMxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbWUzNDAgYi9saWIvdGVybWluZm8vbS9taW1lMzQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjdiY2JiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21pbWUzNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW1lM2EgYi9saWIvdGVybWluZm8vbS9taW1lM2EKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2VhNDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZTNhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWltZTNheCBiL2xpYi90ZXJtaW5mby9tL21pbWUzYXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MjE0MzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZTNheAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbWVpIGIvbGliL3Rlcm1pbmZvL20vbWltZWkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZjVjY2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZWkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW1laWkgYi9saWIvdGVybWluZm8vbS9taW1laWkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZjVjY2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWltZWlpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWluaXRlbCBiL2xpYi90ZXJtaW5mby9tL21pbml0ZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZWRmOGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWluaXRlbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbml0ZWwtMiBiL2xpYi90ZXJtaW5mby9tL21pbml0ZWwtMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVlZGY4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5pdGVsLTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW5pdGVsLTItbmFtIGIvbGliL3Rlcm1pbmZvL20vbWluaXRlbC0yLW5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVlZGY4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5pdGVsLTItbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWluaXRlbDEgYi9saWIvdGVybWluZm8vbS9taW5pdGVsMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJlMzMwNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5pdGVsMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbml0ZWwxYiBiL2xpYi90ZXJtaW5mby9tL21pbml0ZWwxYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM1MWU4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5pdGVsMWIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW5pdGVsMWItODAgYi9saWIvdGVybWluZm8vbS9taW5pdGVsMWItODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNDQ0MmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWluaXRlbDFiLTgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWluaXggYi9saWIvdGVybWluZm8vbS9taW5peApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNlMDI4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21pbml4LW9sZCBiL2xpYi90ZXJtaW5mby9tL21pbml4LW9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMwYzRmYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9taW5peC1vbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9taW5peC1vbGQtYW0gYi9saWIvdGVybWluZm8vbS9taW5peC1vbGQtYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYmJmMjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWluaXgtb2xkLWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbWx0ZXJtIGIvbGliL3Rlcm1pbmZvL20vbWx0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWQ3ODFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21sdGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21sdGVybStwY2ZrZXlzIGIvbGliL3Rlcm1pbmZvL20vbWx0ZXJtK3BjZmtleXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZmU4NTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbWx0ZXJtK3BjZmtleXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tbTMxNCBiL2xpYi90ZXJtaW5mby9tL21tMzE0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzY5MTRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21tMzE0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbW0zNDAgYi9saWIvdGVybWluZm8vbS9tbTM0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3YmNiYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tbTM0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21vZCBiL2xpYi90ZXJtaW5mby9tL21vZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNkNGU4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tb2QKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tb2QyNCBiL2xpYi90ZXJtaW5mby9tL21vZDI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTQ3ZDQ1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21vZDI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbW9kZ3JhcGggYi9saWIvdGVybWluZm8vbS9tb2RncmFwaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0N2Q0NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tb2RncmFwaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21vZGdyYXBoMiBiL2xpYi90ZXJtaW5mby9tL21vZGdyYXBoMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMwM2ViNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tb2RncmFwaDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tb2RncmFwaDQ4IGIvbGliL3Rlcm1pbmZvL20vbW9kZ3JhcGg0OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNkNGU4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tb2RncmFwaDQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbW9uby1lbXggYi9saWIvdGVybWluZm8vbS9tb25vLWVteApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY5NDBhOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tb25vLWVteAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21vcnBob3MgYi9saWIvdGVybWluZm8vbS9tb3JwaG9zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmI2MjNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21vcnBob3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tb3VzZS1zdW4gYi9saWIvdGVybWluZm8vbS9tb3VzZS1zdW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNmZjZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbW91c2Utc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXJ4dnQgYi9saWIvdGVybWluZm8vbS9tcnh2dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI4MmEyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tcnh2dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21zLXZ0LXV0ZjggYi9saWIvdGVybWluZm8vbS9tcy12dC11dGY4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTE2ZDhmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21zLXZ0LXV0ZjgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tcy12dDEwMCBiL2xpYi90ZXJtaW5mby9tL21zLXZ0MTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTliNzczLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21zLXZ0MTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXMtdnQxMDArIGIvbGliL3Rlcm1pbmZvL20vbXMtdnQxMDArCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTA3YjAyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21zLXZ0MTAwKworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21zLXZ0MTAwLWNvbG9yIGIvbGliL3Rlcm1pbmZvL20vbXMtdnQxMDAtY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNzFkNjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbXMtdnQxMDAtY29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tc2syMjcgYi9saWIvdGVybWluZm8vbS9tc2syMjcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwZDU3MDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbXNrMjI3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXNrMjI3MTQgYi9saWIvdGVybWluZm8vbS9tc2syMjcxNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg3YmI2MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tc2syMjcxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21zazIyN2FtIGIvbGliL3Rlcm1pbmZvL20vbXNrMjI3YW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YWRlOGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbXNrMjI3YW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tc2tlcm1pdDIyNyBiL2xpYi90ZXJtaW5mby9tL21za2VybWl0MjI3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGQ1NzA2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21za2VybWl0MjI3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXNrZXJtaXQyMjcxNCBiL2xpYi90ZXJtaW5mby9tL21za2VybWl0MjI3MTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4N2JiNjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbXNrZXJtaXQyMjcxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL21za2VybWl0MjI3YW0gYi9saWIvdGVybWluZm8vbS9tc2tlcm1pdDIyN2FtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2FkZThjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL21za2VybWl0MjI3YW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tdC03MCBiL2xpYi90ZXJtaW5mby9tL210LTcwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmU3NDRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL210LTcwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXQ0NTIwLXJ2IGIvbGliL3Rlcm1pbmZvL20vbXQ0NTIwLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2Q1ODM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL210NDUyMC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL210NzAgYi9saWIvdGVybWluZm8vbS9tdDcwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmU3NDRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL210NzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbS9tdGVybSBiL2xpYi90ZXJtaW5mby9tL210ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTZmY2VkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9tL210ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL20vbXRlcm0tYW5zaSBiL2xpYi90ZXJtaW5mby9tL210ZXJtLWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYjBhOWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL20vbXRlcm0tYW5zaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9tL212dGVybSBiL2xpYi90ZXJtaW5mby9tL212dGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxMmI3Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbS9tdnRlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uYW5zaS5zeXMgYi9saWIvdGVybWluZm8vbi9uYW5zaS5zeXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MTNlMmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmFuc2kuc3lzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmFuc2kuc3lzayBiL2xpYi90ZXJtaW5mby9uL25hbnNpLnN5c2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGUyMDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmFuc2kuc3lzaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25hbnNpc3lzIGIvbGliL3Rlcm1pbmZvL24vbmFuc2lzeXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MTNlMmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmFuc2lzeXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uYW5zaXN5c2sgYi9saWIvdGVybWluZm8vbi9uYW5zaXN5c2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGUyMDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmFuc2lzeXNrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnBwcCBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHZwcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYjA1ZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnBwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZwd3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnB3cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZTZkNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnB3cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDEwMGFuIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQxMDBhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJiNGMxYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDEwMGFuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQxMDBwcCBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MTAwcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYzM0NDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQxMDBwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MTAwd2FuIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQxMDB3YW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjY2VjMjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQxMDB3YW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDEwMHdwcCBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MTAwd3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTNhOGIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MTAwd3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQyMDBhbiBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MjAwYW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjODY1NmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQyMDBhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MjAwcHAgYi9saWIvdGVybWluZm8vbi9uY3IxNjB2dDIwMHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGE0ZDExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MjAwcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDIwMHdhbiBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MjAwd2FuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjg5ZDFhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MjAwd2FuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQyMDB3cHAgYi9saWIvdGVybWluZm8vbi9uY3IxNjB2dDIwMHdwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI2YmE4YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDIwMHdwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MzAwYW4gYi9saWIvdGVybWluZm8vbi9uY3IxNjB2dDMwMGFuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTU1ZjAzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MzAwYW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDMwMHBwIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQzMDBwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjZDMxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDMwMHBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQzMDB3YW4gYi9saWIvdGVybWluZm8vbi9uY3IxNjB2dDMwMHdhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkyMTQwYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB2dDMwMHdhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHZ0MzAwd3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQzMDB3cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OWIzMjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwdnQzMDB3cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTUwK3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwd3k1MCtwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhmMjFkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTUwK3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMTYwd3k1MCt3cHAgYi9saWIvdGVybWluZm8vbi9uY3IxNjB3eTUwK3dwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1NjE3Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTUwK3dwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjE2MHd5NjBwcCBiL2xpYi90ZXJtaW5mby9uL25jcjE2MHd5NjBwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ1YzYxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTYwcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTYwd3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMTYwd3k2MHdwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1MjI1Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IxNjB3eTYwd3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50YW4gYi9saWIvdGVybWluZm8vbi9uY3IyNjBpbnRhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhYjY5NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjBpbnRhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MGludHBwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NjJkMjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjBpbnR3YW4gYi9saWIvdGVybWluZm8vbi9uY3IyNjBpbnR3YW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZTA2OTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50d2FuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50d3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwaW50d3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzRjYmYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MGludHdwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZwcHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB2cHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjU4ZWFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZwcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB2cHdwcCBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHZwd3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTllY2RiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZwd3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQxMDBhbiBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MTAwYW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYjRkYTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQxMDBhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MTAwcHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB2dDEwMHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2U3NWYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MTAwcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDEwMHdhbiBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MTAwd2FuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTAxYzE0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MTAwd2FuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQxMDB3cHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB2dDEwMHdwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyYWJmNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDEwMHdwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MjAwYW4gYi9saWIvdGVybWluZm8vbi9uY3IyNjB2dDIwMGFuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjE2ZjQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MjAwYW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDIwMHBwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQyMDBwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ5OGVmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDIwMHBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQyMDB3YW4gYi9saWIvdGVybWluZm8vbi9uY3IyNjB2dDIwMHdhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ4ZjhmYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDIwMHdhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MjAwd3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQyMDB3cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOTU3MDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQyMDB3cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDMwMGFuIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQzMDBhbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyYmNkNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDMwMGFuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQzMDBwcCBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MzAwcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYTQ5ZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQzMDBwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MzAwd2FuIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQzMDB3YW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlM2Y1ZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwdnQzMDB3YW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB2dDMwMHdwcCBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MzAwd3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzI1ZTQ0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHZ0MzAwd3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzMjVwcCBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5MzI1cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkN2Q0OGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzMjVwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5MzI1d3BwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzMjV3cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNTU4YzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzMjV3cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB3eTM1MHBwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzNTBwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAxYmNlOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB3eTM1MHBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3kzNTB3cHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB3eTM1MHdwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk2YWQ0MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3IyNjB3eTM1MHdwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NTArcHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB3eTUwK3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjcwZTY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NTArcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3IyNjB3eTUwK3dwcCBiL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NTArd3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2Y3YzhjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NTArd3BwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3k2MHBwIGIvbGliL3Rlcm1pbmZvL24vbmNyMjYwd3k2MHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjNlNGRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NjBwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NjB3cHAgYi9saWIvdGVybWluZm8vbi9uY3IyNjB3eTYwd3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmI3ZmU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcjI2MHd5NjB3cHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3I3OTAwIGIvbGliL3Rlcm1pbmZvL24vbmNyNzkwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyNzQyOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3I3OTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNyNzkwMGkgYi9saWIvdGVybWluZm8vbi9uY3I3OTAwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyNzQyOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3I3OTAwaQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcjc5MDBpdiBiL2xpYi90ZXJtaW5mby9uL25jcjc5MDBpdgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRhMDgwMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3I3OTAwaXYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3I3OTAxIGIvbGliL3Rlcm1pbmZvL24vbmNyNzkwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljOTg0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3I3OTAxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNydnQxMDBhbiBiL2xpYi90ZXJtaW5mby9uL25jcnZ0MTAwYW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZmJiODEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNydnQxMDBhbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jcnZ0MTAwcHAgYi9saWIvdGVybWluZm8vbi9uY3J2dDEwMHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWZiYjgxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcnZ0MTAwcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3J2dDEwMHdhbiBiL2xpYi90ZXJtaW5mby9uL25jcnZ0MTAwd2FuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTBhZDU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jcnZ0MTAwd2FuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNydnQxMDB3cHAgYi9saWIvdGVybWluZm8vbi9uY3J2dDEwMHdwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UwYWQ1OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3J2dDEwMHdwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jc2EgYi9saWIvdGVybWluZm8vbi9uY3NhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWEwY2FlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jc2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3NhLW0gYi9saWIvdGVybWluZm8vbi9uY3NhLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZTIzZjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmNzYS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNzYS1tLW5zIGIvbGliL3Rlcm1pbmZvL24vbmNzYS1tLW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGVmOTk4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jc2EtbS1ucworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25jc2EtbnMgYi9saWIvdGVybWluZm8vbi9uY3NhLW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmVmZTM3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jc2EtbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uY3NhLXZ0MjIwIGIvbGliL3Rlcm1pbmZvL24vbmNzYS12dDIyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyZmFjYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uY3NhLXZ0MjIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmNzYS12dDIyMC04IGIvbGliL3Rlcm1pbmZvL24vbmNzYS12dDIyMC04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmUyM2YwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25jc2EtdnQyMjAtOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25kOTUwMCBiL2xpYi90ZXJtaW5mby9uL25kOTUwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBlZGU4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZDk1MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZHI5NTAwIGIvbGliL3Rlcm1pbmZvL24vbmRyOTUwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBlZGU4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZHI5NTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC0yNSBiL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MTJhOWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtMjUtbWMgYi9saWIvdGVybWluZm8vbi9uZHI5NTAwLTI1LW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmFmYTdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtMjUtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZHI5NTAwLTI1LW1jLW5sIGIvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC0yNS1tYy1ubApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVjMDFlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZHI5NTAwLTI1LW1jLW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC0yNS1ubCBiL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtMjUtbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4N2Q1OTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC0yNS1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtbWMgYi9saWIvdGVybWluZm8vbi9uZHI5NTAwLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWYyZTZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZHI5NTAwLW1jLW5sIGIvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC1tYy1ubApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRlOTEyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZHI5NTAwLW1jLW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC1ubCBiL2xpYi90ZXJtaW5mby9uL25kcjk1MDAtbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYTNkYmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmRyOTUwMC1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25lYyBiL2xpYi90ZXJtaW5mby9uL25lYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg1YjZkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZWM1NTIwIGIvbGliL3Rlcm1pbmZvL24vbmVjNTUyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg1YjZkYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZWM1NTIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3aHAgYi9saWIvdGVybWluZm8vbi9uZXdocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE4M2E4ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdocAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld2hwa2V5Ym9hcmQgYi9saWIvdGVybWluZm8vbi9uZXdocGtleWJvYXJkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzkzMDEwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld2hwa2V5Ym9hcmQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzIGIvbGliL3Rlcm1pbmZvL24vbmV3cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIyYTZkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3cy0yOSBiL2xpYi90ZXJtaW5mby9uL25ld3MtMjkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZGMwNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0yOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MtMjktZXVjIGIvbGliL3Rlcm1pbmZvL24vbmV3cy0yOS1ldWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1OTU2NDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0yOS1ldWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzLTI5LXNqaXMgYi9saWIvdGVybWluZm8vbi9uZXdzLTI5LXNqaXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZjQwMjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0yOS1zamlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3cy0zMyBiL2xpYi90ZXJtaW5mby9uL25ld3MtMzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MWQ5YTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0zMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MtMzMtZXVjIGIvbGliL3Rlcm1pbmZvL24vbmV3cy0zMy1ldWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MDBmZGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0zMy1ldWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzLTMzLXNqaXMgYi9saWIvdGVybWluZm8vbi9uZXdzLTMzLXNqaXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MTk2NTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy0zMy1zamlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3cy00MiBiL2xpYi90ZXJtaW5mby9uL25ld3MtNDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZjY4NmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MtNDItZXVjIGIvbGliL3Rlcm1pbmZvL24vbmV3cy00Mi1ldWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NDhiMTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy00Mi1ldWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzLTQyLXNqaXMgYi9saWIvdGVybWluZm8vbi9uZXdzLTQyLXNqaXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NGM2YzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy00Mi1zamlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3cy1hIGIvbGliL3Rlcm1pbmZvL24vbmV3cy1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGZjZDg0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld3MtYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MtbyBiL2xpYi90ZXJtaW5mby9uL25ld3MtbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0NGZmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzLW8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzLW9sZC11bmsgYi9saWIvdGVybWluZm8vbi9uZXdzLW9sZC11bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMmQ3YjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3cy1vbGQtdW5rCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3cy11bmsgYi9saWIvdGVybWluZm8vbi9uZXdzLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2NWE4Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MyOCBiL2xpYi90ZXJtaW5mby9uL25ld3MyOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk1ZGQ5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzMjgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzMjgtYSBiL2xpYi90ZXJtaW5mby9uL25ld3MyOC1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQxMTFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld3MyOC1hCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3czI5IGIvbGliL3Rlcm1pbmZvL24vbmV3czI5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQxMTFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld3MyOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MzMSBiL2xpYi90ZXJtaW5mby9uL25ld3MzMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhYThkOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzMzEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzMzEtYSBiL2xpYi90ZXJtaW5mby9uL25ld3MzMS1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGRmMTM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld3MzMS1hCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3czMxLW8gYi9saWIvdGVybWluZm8vbi9uZXdzMzEtbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQwM2FhZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzMzEtbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3MzMyBiL2xpYi90ZXJtaW5mby9uL25ld3MzMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkZjEzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzMzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzNDAgYi9saWIvdGVybWluZm8vbi9uZXdzNDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMmE2ZDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3czQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3czQwLWEgYi9saWIvdGVybWluZm8vbi9uZXdzNDAtYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmY2Q4NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzNDAtYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3M0MC1vIGIvbGliL3Rlcm1pbmZvL24vbmV3czQwLW8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDRmZjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3czQwLW8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzNDIgYi9saWIvdGVybWluZm8vbi9uZXdzNDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmNkODQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3czQyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3c2NibSBiL2xpYi90ZXJtaW5mby9uL25ld3NjYm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYWE4ZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3c2NibQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25ld3NjYm0tYSBiL2xpYi90ZXJtaW5mby9uL25ld3NjYm0tYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkZjEzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uZXdzY2JtLWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXdzY2JtLW8gYi9saWIvdGVybWluZm8vbi9uZXdzY2JtLW8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDNhYWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV3c2NibS1vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbmV3c2NibTMzIGIvbGliL3Rlcm1pbmZvL24vbmV3c2NibTMzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGRmMTM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25ld3NjYm0zMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25leHQgYi9saWIvdGVybWluZm8vbi9uZXh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDgxODBlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25leHQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uZXh0c2hlbGwgYi9saWIvdGVybWluZm8vbi9uZXh0c2hlbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDE2YTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbmV4dHNoZWxsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbm9ydGhzdGFyIGIvbGliL3Rlcm1pbmZvL24vbm9ydGhzdGFyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDQwZTNjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25vcnRoc3RhcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybSBiL2xpYi90ZXJtaW5mby9uL25zdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQxNGYzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0rNyBiL2xpYi90ZXJtaW5mby9uL25zdGVybSs3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjU2ODU3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybSs3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK2FjcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybSthY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMDU2ZWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK2FjcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybStjIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMDc5NzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0rYzQxIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK2M0MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ2YTYyOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0rYzQxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK21hYyBiL2xpYi90ZXJtaW5mby9uL25zdGVybSttYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3Y2NmZTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK21hYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybStzIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYTI3NzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtK3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tMTZjb2xvciBiL2xpYi90ZXJtaW5mby9uL25zdGVybS0xNmNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWRmOTE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS0xNmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLTcgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhMzhlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS03LWMgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDY4NDc4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS03LWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1jLXMgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1jLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMGI4YmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLTctYy1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLTctbSBiL2xpYi90ZXJtaW5mby9uL25zdGVybS03LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YmY4ZTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLTctbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS03LW0tcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS03LW0tcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIzOTUxYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1tLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1zIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLTctcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlYzdjYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tNy1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZjViMTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtYyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNjMzY1My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYWNzLWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYWNzLWMtcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtYy1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODdkMGUwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtYy1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcy1tIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcy1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2JkNmRhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1hY3MtbS1zIGIvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcy1tLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNWIzODkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcy1tLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYWNzLXMgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tYWNzLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOTUyODcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWFjcy1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWMgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyZjJkNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLTcgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tYy03CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDY4NDc4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYy1hY3MgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tYy1hY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYzM2NTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWMtYWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWMtcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YzNkNTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLWMtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLXMtNyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLXMtNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwYjhiZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYy1zLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tYy1zLWFjcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLXMtYWNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODdkMGUwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1jLXMtYWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLW0gYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY4ZDIwYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLTcgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tbS03CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWJmOGUxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tbS1hY3MgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tbS1hY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmQ2ZGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLW0tYWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLW0tcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYzhmODcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLW0tcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLXMtNyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLXMtNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIzOTUxYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tbS1zLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tbS1zLWFjcyBiL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLXMtYWNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTViMzg5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1tLXMtYWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLXMgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4MjcyNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1zLTcgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tcy03CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmVjN2NhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL25zdGVybS1zLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9uc3Rlcm0tcy1hY3MgYi9saWIvdGVybWluZm8vbi9uc3Rlcm0tcy1hY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOTUyODcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnN0ZXJtLXMtYWNzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlIGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Q0ZDZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0xMDAgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmUwNDBjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMTAwLW50aSBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0xMDAtbnRpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDkxNGM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0xMDAtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTI1IGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Q0ZDZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0yNS1udGkgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMjUtbnRpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmQ1NzE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0yNS1udGkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMjUtdyBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0yNS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2EzMGMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTI1LXctdnQgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMjUtdy12dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MDk1NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMjUtdy12dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0zNSBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS0zNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY5ZmM0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMzUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMzUtbnRpIGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTM1LW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA0ZDJhYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMzUtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTM1LXcgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMzUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ4OWU3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtMzUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS01MCBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS01MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTViODkxNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNTAtbnRpIGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTUwLW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JhMjAyMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNTAtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTUwLXcgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwYTQ5ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS02MCBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS02MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5ZjEwNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNjAtbnRpIGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTYwLW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5OWIxNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNjAtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLTYwLXcgYi9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ0ZTVmYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtNjAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS13IGIvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYTMwYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnRjb25zb2xlLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9udGNvbnNvbGUtdy12dCBiL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS13LXZ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjUwOTU1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL250Y29uc29sZS13LXZ0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndlNTAxIGIvbGliL3Rlcm1pbmZvL24vbndlNTAxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFhOGQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253ZTUwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253ZTUwMS1hIGIvbGliL3Rlcm1pbmZvL24vbndlNTAxLWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZGYxMzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndlNTAxLWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud2U1MDEtbyBiL2xpYi90ZXJtaW5mby9uL253ZTUwMS1vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDAzYWFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253ZTUwMS1vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwLTUxMSBiL2xpYi90ZXJtaW5mby9uL253cC01MTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NDlmNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwLTUxMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cC01MTcgYi9saWIvdGVybWluZm8vbi9ud3AtNTE3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGY2YTE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cC01MTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3AtNTE3LXcgYi9saWIvdGVybWluZm8vbi9ud3AtNTE3LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NmE5MzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwLTUxNy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwMjUxLWEgYi9saWIvdGVybWluZm8vbi9ud3AyNTEtYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkZjEzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9ud3AyNTEtYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDI1MS1vIGIvbGliL3Rlcm1pbmZvL24vbndwMjUxLW8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDNhYWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwMjUxLW8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3A1MTEgYi9saWIvdGVybWluZm8vbi9ud3A1MTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NDlmNjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTExCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwNTEyIGIvbGliL3Rlcm1pbmZvL24vbndwNTEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjJhNmQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDUxMi1hIGIvbGliL3Rlcm1pbmZvL24vbndwNTEyLWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmNkODQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTEyLWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3A1MTItbyBiL2xpYi90ZXJtaW5mby9uL253cDUxMi1vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDQ0ZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxMi1vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwNTEzIGIvbGliL3Rlcm1pbmZvL24vbndwNTEzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGFhOGQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDUxMy1hIGIvbGliL3Rlcm1pbmZvL24vbndwNTEzLWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZGYxMzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTEzLWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3A1MTMtbyBiL2xpYi90ZXJtaW5mby9uL253cDUxMy1vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDAzYWFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxMy1vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwNTE0IGIvbGliL3Rlcm1pbmZvL24vbndwNTE0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjJhNmQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDUxNC1hIGIvbGliL3Rlcm1pbmZvL24vbndwNTE0LWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmNkODQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTE0LWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3A1MTQtbyBiL2xpYi90ZXJtaW5mby9uL253cDUxNC1vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDQ0ZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxNC1vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwNTE3IGIvbGliL3Rlcm1pbmZvL24vbndwNTE3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGY2YTE3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9uL253cDUxNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDUxNy13IGIvbGliL3Rlcm1pbmZvL24vbndwNTE3LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NmE5MzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTE3LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ud3A1MTggYi9saWIvdGVybWluZm8vbi9ud3A1MTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYWE4ZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTE4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL24vbndwNTE4LWEgYi9saWIvdGVybWluZm8vbi9ud3A1MTgtYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkZjEzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vbi9ud3A1MTgtYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9uL253cDUxOC1vIGIvbGliL3Rlcm1pbmZvL24vbndwNTE4LW8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDNhYWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbndwNTE4LW8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vbi9ueHRlcm0gYi9saWIvdGVybWluZm8vbi9ueHRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmYyZTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL24vbnh0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vbzMxIGIvbGliL3Rlcm1pbmZvL28vbzMxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjZkOWU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL28zMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL280MTEyLW5kIGIvbGliL3Rlcm1pbmZvL28vbzQxMTItbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YjUxMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vbzQxMTItbmQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vODVoIGIvbGliL3Rlcm1pbmZvL28vbzg1aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwYTAyOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vODVoCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb2FibTg1aCBiL2xpYi90ZXJtaW5mby9vL29hYm04NWgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGEwMjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb2FibTg1aAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29ibGl0IGIvbGliL3Rlcm1pbmZvL28vb2JsaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2OTU5ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb2JsaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vYzEwMCBiL2xpYi90ZXJtaW5mby9vL29jMTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzg4NzMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29jMTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb2NvbmNlcHQgYi9saWIvdGVybWluZm8vby9vY29uY2VwdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4ODczMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vY29uY2VwdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29mY29ucyBiL2xpYi90ZXJtaW5mby9vL29mY29ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFiZGZhYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vZmNvbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vamVycSBiL2xpYi90ZXJtaW5mby9vL29qZXJxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Njk1OTgzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29qZXJxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb2xkaWJtcGMzIGIvbGliL3Rlcm1pbmZvL28vb2xkaWJtcGMzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2QyZGVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29sZGlibXBjMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29sZHBjMyBiL2xpYi90ZXJtaW5mby9vL29sZHBjMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNkMmRlZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vbGRwYzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vbGRzdW4gYi9saWIvdGVybWluZm8vby9vbGRzdW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZWUwZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb2xkc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb21yb24gYi9saWIvdGVybWluZm8vby9vbXJvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE1MDhmZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vbXJvbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udCBiL2xpYi90ZXJtaW5mby9vL29wZW5udApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkNGQ2YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtMTAwIGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlMDQwYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtMTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTEwMC1udGkgYi9saWIvdGVybWluZm8vby9vcGVubnQtMTAwLW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA5MTRjNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtMTAwLW50aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC0yNSBiL2xpYi90ZXJtaW5mby9vL29wZW5udC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkNGQ2YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtMjUtbnRpIGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTI1LW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNTcxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtMjUtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTI1LXcgYi9saWIvdGVybWluZm8vby9vcGVubnQtMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNhMzBjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC0yNS13LXZ0IGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTI1LXctdnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTA5NTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTI1LXctdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtMzUgYi9saWIvdGVybWluZm8vby9vcGVubnQtMzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OWZjNDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTM1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTM1LW50aSBiL2xpYi90ZXJtaW5mby9vL29wZW5udC0zNS1udGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNGQyYWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTM1LW50aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC0zNS13IGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTM1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkODllN2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTM1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtNTAgYi9saWIvdGVybWluZm8vby9vcGVubnQtNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1Yjg5MTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTUwLW50aSBiL2xpYi90ZXJtaW5mby9vL29wZW5udC01MC1udGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYTIwMjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTUwLW50aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC01MC13IGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTUwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMGE0OWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTUwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtNjAgYi9saWIvdGVybWluZm8vby9vcGVubnQtNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOWYxMDQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTYwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTYwLW50aSBiL2xpYi90ZXJtaW5mby9vL29wZW5udC02MC1udGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOTliMTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTYwLW50aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC02MC13IGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LTYwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNGU1ZmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LTYwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcGVubnQtbnRpIGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LW50aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNTcxNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtbnRpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LXcgYi9saWIvdGVybWluZm8vby9vcGVubnQtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNhMzBjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vcGVubnQtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29wZW5udC13LXZ0IGIvbGliL3Rlcm1pbmZvL28vb3Blbm50LXctdnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTA5NTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Blbm50LXctdnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vcHVzM24xKyBiL2xpYi90ZXJtaW5mby9vL29wdXMzbjErCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzk5ZjJmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29wdXMzbjErCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3JpZ2libXBjMyBiL2xpYi90ZXJtaW5mby9vL29yaWdpYm1wYzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzdhOTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3JpZ2libXBjMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29yaWdwYzMgYi9saWIvdGVybWluZm8vby9vcmlncGMzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWM3YTkzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29yaWdwYzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vczlMSUkgYi9saWIvdGVybWluZm8vby9vczlMSUkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNTIzZGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3M5TElJCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Nib3JuZSBiL2xpYi90ZXJtaW5mby9vL29zYm9ybmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OGQ3MDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Nib3JuZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29zYm9ybmUtdyBiL2xpYi90ZXJtaW5mby9vL29zYm9ybmUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VjZTQ4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vc2Jvcm5lLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vc2Jvcm5lMSBiL2xpYi90ZXJtaW5mby9vL29zYm9ybmUxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzhkNzA4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL29zYm9ybmUxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3Nib3JuZTEtdyBiL2xpYi90ZXJtaW5mby9vL29zYm9ybmUxLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlY2U0ODcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3Nib3JuZTEtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL29zZXhlYyBiL2xpYi90ZXJtaW5mby9vL29zZXhlYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIyMzAwYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vc2V4ZWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vdGVrNDExMiBiL2xpYi90ZXJtaW5mby9vL290ZWs0MTEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWI1MTMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL290ZWs0MTEyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3RlazQxMTMgYi9saWIvdGVybWluZm8vby9vdGVrNDExMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliNTEzMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vby9vdGVrNDExMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9vL290ZWs0MTE0IGIvbGliL3Rlcm1pbmZvL28vb3RlazQxMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YjUxMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL28vb3RlazQxMTQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vby9vdGVrNDExNSBiL2xpYi90ZXJtaW5mby9vL290ZWs0MTE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTMzYzBjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL290ZWs0MTE1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL28vb3dsIGIvbGliL3Rlcm1pbmZvL28vb3dsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjFkZTQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9vL293bAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3AxMiBiL2xpYi90ZXJtaW5mby9wL3AxMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU3ZjU5YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wMTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wMTItbSBiL2xpYi90ZXJtaW5mby9wL3AxMi1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRkMzIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3AxMi1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDEyLW0tdyBiL2xpYi90ZXJtaW5mby9wL3AxMi1tLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNTJiNjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDEyLW0tdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3AxMi13IGIvbGliL3Rlcm1pbmZvL3AvcDEyLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MWRhZTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDEyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wMTQgYi9saWIvdGVybWluZm8vcC9wMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODY0MjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDE0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDE0LW0gYi9saWIvdGVybWluZm8vcC9wMTQtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkZDMxMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wMTQtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3AxNC1tLXcgYi9saWIvdGVybWluZm8vcC9wMTQtbS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjY0NzVkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3AxNC1tLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wMTQtdyBiL2xpYi90ZXJtaW5mby9wL3AxNC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmU4ZGIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3AxNC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDE5IGIvbGliL3Rlcm1pbmZvL3AvcDE5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTY1YjY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3AxOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3A0IGIvbGliL3Rlcm1pbmZvL3AvcDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNTNlNDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wNSBiL2xpYi90ZXJtaW5mby9wL3A1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTg0OGQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3A1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDcgYi9saWIvdGVybWluZm8vcC9wNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5YjRmZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3A4IGIvbGliL3Rlcm1pbmZvL3AvcDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZmQ5ZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wOC13IGIvbGliL3Rlcm1pbmZvL3AvcDgtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYyNTRkMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wOC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDhnbCBiL2xpYi90ZXJtaW5mby9wL3A4Z2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYmQ2MTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDhnbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3A5IGIvbGliL3Rlcm1pbmZvL3AvcDkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMTdkZWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcDkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wOS04IGIvbGliL3Rlcm1pbmZvL3AvcDktOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5MWE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wOS04CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcDktOC13IGIvbGliL3Rlcm1pbmZvL3AvcDktOC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2UzZGE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3A5LTgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3A5LXcgYi9saWIvdGVybWluZm8vcC9wOS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODM1MDkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3A5LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wYy1jb2hlcmVudCBiL2xpYi90ZXJtaW5mby9wL3BjLWNvaGVyZW50CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmUzODU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjLWNvaGVyZW50CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGMtbWluaXggYi9saWIvdGVybWluZm8vcC9wYy1taW5peApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ4ZTBiNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wYy1taW5peAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjLXZlbml4IGIvbGliL3Rlcm1pbmZvL3AvcGMtdmVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYTdlYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGMtdmVuaXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wYzMgYi9saWIvdGVybWluZm8vcC9wYzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZjNjNjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGMzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGMzLWJvbGQgYi9saWIvdGVybWluZm8vcC9wYzMtYm9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkOTkyZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wYzMtYm9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjM3IgYi9saWIvdGVybWluZm8vcC9wYzNyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiMWM4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjM3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wYzNyLW0gYi9saWIvdGVybWluZm8vcC9wYzNyLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhOGE1NGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGMzci1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGM2MzAwcGx1cyBiL2xpYi90ZXJtaW5mby9wL3BjNjMwMHBsdXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTVmMjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGM2MzAwcGx1cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjNzMwMCBiL2xpYi90ZXJtaW5mby9wL3BjNzMwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQxODQzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wYzczMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2Fuc2kgYi9saWIvdGVybWluZm8vcC9wY2Fuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YWY5OWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTI1IGIvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDIxNDdiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaS0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaS0yNS1tIGIvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTI1LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOGRlYWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTI1LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2Fuc2ktMzMgYi9saWIvdGVybWluZm8vcC9wY2Fuc2ktMzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOGIxYTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTMzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLTMzLW0gYi9saWIvdGVybWluZm8vcC9wY2Fuc2ktMzMtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVlMjljOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2Fuc2ktMzMtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaS00MyBiL2xpYi90ZXJtaW5mby9wL3BjYW5zaS00MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1MjkxNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2Fuc2ktNDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2Fuc2ktNDMtbSBiL2xpYi90ZXJtaW5mby9wL3BjYW5zaS00My1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWQwNGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaS00My1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLW0gYi9saWIvdGVybWluZm8vcC9wY2Fuc2ktbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU4YTEzMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2Fuc2ktbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaS1tb25vIGIvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLW1vbm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1OGExMzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpLW1vbm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2Fuc2kyNSBiL2xpYi90ZXJtaW5mby9wL3BjYW5zaTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDIxNDdiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpMjVtIGIvbGliL3Rlcm1pbmZvL3AvcGNhbnNpMjVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYThkZWFiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaTI1bQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjYW5zaTMzIGIvbGliL3Rlcm1pbmZvL3AvcGNhbnNpMzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOGIxYTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpMzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2Fuc2kzM20gYi9saWIvdGVybWluZm8vcC9wY2Fuc2kzM20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTI5YzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpMzNtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNhbnNpNDMgYi9saWIvdGVybWluZm8vcC9wY2Fuc2k0MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1MjkxNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2Fuc2k0MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjY29ucyBiL2xpYi90ZXJtaW5mby9wL3BjY29ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ3Yzk0NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2NvbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2NvbnNvbGUgYi9saWIvdGVybWluZm8vcC9wY2NvbnNvbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkN2M5NDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNjb25zb2xlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNpeCBiL2xpYi90ZXJtaW5mby9wL3BjaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZmJlNTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNpeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3Bja2VybWl0IGIvbGliL3Rlcm1pbmZvL3AvcGNrZXJtaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMGU5NTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNrZXJtaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY2tlcm1pdDEyIGIvbGliL3Rlcm1pbmZvL3AvcGNrZXJtaXQxMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAwZTk1MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2tlcm1pdDEyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGNrZXJtaXQxMjAgYi9saWIvdGVybWluZm8vcC9wY2tlcm1pdDEyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2ODJjOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY2tlcm1pdDEyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjbXcgYi9saWIvdGVybWluZm8vcC9wY213CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjhlZmY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjbXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3Bsb3QgYi9saWIvdGVybWluZm8vcC9wY3Bsb3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYTM4YjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGNwbG90CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGN2dDI1IGIvbGliL3Rlcm1pbmZvL3AvcGN2dDI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDc1MWIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjdnQyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjdnQyNS1jb2xvciBiL2xpYi90ZXJtaW5mby9wL3BjdnQyNS1jb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhNjIzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY3Z0MjUtY29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3Z0MjV3IGIvbGliL3Rlcm1pbmZvL3AvcGN2dDI1dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE0ZjRiNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY3Z0MjV3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGN2dDI4IGIvbGliL3Rlcm1pbmZvL3AvcGN2dDI4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2MzYWNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjdnQyOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjdnQyOHcgYi9saWIvdGVybWluZm8vcC9wY3Z0Mjh3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjhiMTk4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjdnQyOHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3Z0MzUgYi9saWIvdGVybWluZm8vcC9wY3Z0MzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMTQ3M2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGN2dDM1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGN2dDM1dyBiL2xpYi90ZXJtaW5mby9wL3BjdnQzNXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YTk1MTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGN2dDM1dworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjdnQ0MCBiL2xpYi90ZXJtaW5mby9wL3BjdnQ0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3MTM2NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY3Z0NDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3Z0NDB3IGIvbGliL3Rlcm1pbmZvL3AvcGN2dDQwdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA5MDVhZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY3Z0NDB3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGN2dDQzIGIvbGliL3Rlcm1pbmZvL3AvcGN2dDQzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmMwM2U1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjdnQ0MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjdnQ0M3cgYi9saWIvdGVybWluZm8vcC9wY3Z0NDN3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzgyYzhlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjdnQ0M3cKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3Z0NTAgYi9saWIvdGVybWluZm8vcC9wY3Z0NTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYzRkZjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGN2dDUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGN2dDUwdyBiL2xpYi90ZXJtaW5mby9wL3BjdnQ1MHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMjkzMTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGN2dDUwdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BjdnRYWCBiL2xpYi90ZXJtaW5mby9wL3BjdnRYWApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk0NjA0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wY3Z0WFgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wY3oxOSBiL2xpYi90ZXJtaW5mby9wL3BjejE5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmUzODU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BjejE5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGUxMTAwIGIvbGliL3Rlcm1pbmZvL3AvcGUxMTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmVkNzJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BlMTEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BlMTIwMCBiL2xpYi90ZXJtaW5mby9wL3BlMTIwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxZGU0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wZTEyMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wZTEyNTEgYi9saWIvdGVybWluZm8vcC9wZTEyNTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMTA1MDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGUxMjUxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGU1NTAgYi9saWIvdGVybWluZm8vcC9wZTU1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBlYzAwNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wZTU1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BlNjEwMCBiL2xpYi90ZXJtaW5mby9wL3BlNjEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBlYzAwNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wZTYxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wZTYzMDAgYi9saWIvdGVybWluZm8vcC9wZTYzMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMTA1MDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcGU2MzAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGU2MzEyIGIvbGliL3Rlcm1pbmZvL3AvcGU2MzEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjEwNTAwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BlNjMxMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BlNzAwMGMgYi9saWIvdGVybWluZm8vcC9wZTcwMDBjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjJmY2RlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BlNzAwMGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wZTcwMDBtIGIvbGliL3Rlcm1pbmZvL3AvcGU3MDAwbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBjNTgzNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wZTcwMDBtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcGlsb3QgYi9saWIvdGVybWluZm8vcC9waWxvdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYxNDgzMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9waWxvdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BtY29ucyBiL2xpYi90ZXJtaW5mby9wL3BtY29ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1Yjc4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wbWNvbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wbWNvbnNvbGUgYi9saWIvdGVybWluZm8vcC9wbWNvbnNvbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNWI3ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcG1jb25zb2xlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpbnRlciBiL2xpYi90ZXJtaW5mby9wL3ByaW50ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWUxZTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpbnRlcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMTIgYi9saWIvdGVybWluZm8vcC9wcmlzbTEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTdmNTlhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTEyLW0gYi9saWIvdGVybWluZm8vcC9wcmlzbTEyLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZGQzMjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc20xMi1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc20xMi1tLXcgYi9saWIvdGVybWluZm8vcC9wcmlzbTEyLW0tdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E1MmI2MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTEyLW0tdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMTItdyBiL2xpYi90ZXJtaW5mby9wL3ByaXNtMTItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxZGFlOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTEyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTE0IGIvbGliL3Rlcm1pbmZvL3AvcHJpc20xNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI4NjQyNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTE0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc20xNC1tIGIvbGliL3Rlcm1pbmZvL3AvcHJpc20xNC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWRkMzEwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMTQtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMTQtbS13IGIvbGliL3Rlcm1pbmZvL3AvcHJpc20xNC1tLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNjQ3NWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc20xNC1tLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTE0LXcgYi9saWIvdGVybWluZm8vcC9wcmlzbTE0LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZThkYjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc20xNC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc20yIGIvbGliL3Rlcm1pbmZvL3AvcHJpc20yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDY3MzdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtNCBiL2xpYi90ZXJtaW5mby9wL3ByaXNtNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ1M2U0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTUgYi9saWIvdGVybWluZm8vcC9wcmlzbTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxODQ4ZDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc201CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc203IGIvbGliL3Rlcm1pbmZvL3AvcHJpc203CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzliNGZmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtOCBiL2xpYi90ZXJtaW5mby9wL3ByaXNtOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJmZDllNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTgtdyBiL2xpYi90ZXJtaW5mby9wL3ByaXNtOC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjI1NGQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtOC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc204Z2wgYi9saWIvdGVybWluZm8vcC9wcmlzbThnbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFiZDYxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbThnbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtOSBiL2xpYi90ZXJtaW5mby9wL3ByaXNtOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxN2RlZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wcmlzbTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcmlzbTktOCBiL2xpYi90ZXJtaW5mby9wL3ByaXNtOS04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkxYTliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3ByaXNtOS04CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHJpc205LTgtdyBiL2xpYi90ZXJtaW5mby9wL3ByaXNtOS04LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZTNkYTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc205LTgtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3ByaXNtOS13IGIvbGliL3Rlcm1pbmZvL3AvcHJpc205LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MzUwOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJpc205LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wcm8zNTAgYi9saWIvdGVybWluZm8vcC9wcm8zNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNjU3MTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHJvMzUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHMzMDAgYi9saWIvdGVybWluZm8vcC9wczMwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY3M2NhMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wczMwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BzdGVybSBiL2xpYi90ZXJtaW5mby9wL3BzdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlYzUzZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wc3Rlcm0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wc3Rlcm0tODB4MjQgYi9saWIvdGVybWluZm8vcC9wc3Rlcm0tODB4MjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NmZlMjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHN0ZXJtLTgweDI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHN0ZXJtLTkweDI4IGIvbGliL3Rlcm1pbmZvL3AvcHN0ZXJtLTkweDI4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTU3YjM3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3BzdGVybS05MHgyOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BzdGVybS05Nng0OCBiL2xpYi90ZXJtaW5mby9wL3BzdGVybS05Nng0OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRhYjg4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wc3Rlcm0tOTZ4NDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wc3Rlcm0tYmFzaWMgYi9saWIvdGVybWluZm8vcC9wc3Rlcm0tYmFzaWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZWM1M2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHN0ZXJtLWJhc2ljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHN0ZXJtLWZhc3QgYi9saWIvdGVybWluZm8vcC9wc3Rlcm0tZmFzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhkM2M4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wc3Rlcm0tZmFzdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3BzeF9hbnNpIGIvbGliL3Rlcm1pbmZvL3AvcHN4X2Fuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YmM4YjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHN4X2Fuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wdDEwMCBiL2xpYi90ZXJtaW5mby9wL3B0MTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTY1ZWQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3B0MTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHQxMDB3IGIvbGliL3Rlcm1pbmZvL3AvcHQxMDB3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzFiYzQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3B0MTAwdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3B0MjAwIGIvbGliL3Rlcm1pbmZvL3AvcHQyMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NjVlZDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHQyMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wdDIwMHcgYi9saWIvdGVybWluZm8vcC9wdDIwMHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMWJjNDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHQyMDB3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHQyMTAgYi9saWIvdGVybWluZm8vcC9wdDIxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE0MTdjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wdDIxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3B0MjUwIGIvbGliL3Rlcm1pbmZvL3AvcHQyNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYjE2NjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHQyNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wdDI1MHcgYi9saWIvdGVybWluZm8vcC9wdDI1MHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTVlMTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHQyNTB3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHQ1MDUgYi9saWIvdGVybWluZm8vcC9wdDUwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJkZmZhYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wdDUwNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3B0NTA1LTIyIGIvbGliL3Rlcm1pbmZvL3AvcHQ1MDUtMjIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NTJjMzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHQ1MDUtMjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wdDUwNS0yNCBiL2xpYi90ZXJtaW5mby9wL3B0NTA1LTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjYWFhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3B0NTA1LTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHR5IGIvbGliL3Rlcm1pbmZvL3AvcHR5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWIxYmY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3B0eQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9wL3B1dHR5IGIvbGliL3Rlcm1pbmZvL3AvcHV0dHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MTIzODguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3AvcHV0dHkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcC9wdXR0eS0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9wL3B1dHR5LTI1NmNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzdiZTM1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9wL3B1dHR5LTI1NmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3AvcHV0dHktdnQxMDAgYi9saWIvdGVybWluZm8vcC9wdXR0eS12dDEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY2MTg5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcC9wdXR0eS12dDEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3FhbnNpIGIvbGliL3Rlcm1pbmZvL3EvcWFuc2kKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZGRhYmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcWFuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xYW5zaS1nIGIvbGliL3Rlcm1pbmZvL3EvcWFuc2ktZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhYTk0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xYW5zaS1nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcWFuc2ktbSBiL2xpYi90ZXJtaW5mby9xL3FhbnNpLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhM2M0MWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcWFuc2ktbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3FhbnNpLXQgYi9saWIvdGVybWluZm8vcS9xYW5zaS10CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGQ3ZDU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3FhbnNpLXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xYW5zaS13IGIvbGliL3Rlcm1pbmZvL3EvcWFuc2ktdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY1ZWExOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xYW5zaS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcWRjb25zIGIvbGliL3Rlcm1pbmZvL3EvcWRjb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZlYTMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3FkY29ucworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3Fkc3MgYi9saWIvdGVybWluZm8vcS9xZHNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZlYTMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3Fkc3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xbnggYi9saWIvdGVybWluZm8vcS9xbngKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNGIzOTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcW54CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcW54NCBiL2xpYi90ZXJtaW5mby9xL3FueDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNGIzOTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcW54NAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3FueG0gYi9saWIvdGVybWluZm8vcS9xbnhtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTgwZjBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3FueG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xbnh0IGIvbGliL3Rlcm1pbmZvL3EvcW54dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzZDdhOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xbnh0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcW54dDIgYi9saWIvdGVybWluZm8vcS9xbnh0MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ3YWY4ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xbnh0MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3FueHQ0IGIvbGliL3Rlcm1pbmZvL3EvcW54dDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyM2Q3YTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcW54dDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xbnh0bW9ubyBiL2xpYi90ZXJtaW5mby9xL3FueHRtb25vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzAxNDYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3FueHRtb25vCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcW54dyBiL2xpYi90ZXJtaW5mby9xL3FueHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTQ5OGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcW54dworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F1bWUgYi9saWIvdGVybWluZm8vcS9xdW1lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmNiYzU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F1bWUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdW1lNSBiL2xpYi90ZXJtaW5mby9xL3F1bWU1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmNiYzU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F1bWU1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTAxIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTAxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjQ1ZGY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMSsgYi9saWIvdGVybWluZm8vcS9xdnQxMDErCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWZlMDRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMSsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMDFwIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTAxcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmZTA0ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMDFwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTAyIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTAyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTczZWYwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMyBiL2xpYi90ZXJtaW5mby9xL3F2dDEwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ2MTFmNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMDMtdyBiL2xpYi90ZXJtaW5mby9xL3F2dDEwMy13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yjk3ZTI0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDEwMy13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTA4IGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTA4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjQ1ZGY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDEwOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDExOSBiL2xpYi90ZXJtaW5mby9xL3F2dDExOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2MjgyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMTkrIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5KwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2MjgyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTkrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5Ky0yNSBiL2xpYi90ZXJtaW5mby9xL3F2dDExOSstMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzVhNWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5Ky0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDExOSstMjUtdyBiL2xpYi90ZXJtaW5mby9xL3F2dDExOSstMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0OWRjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTkrLTI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMTkrLXcgYi9saWIvdGVybWluZm8vcS9xdnQxMTkrLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNDQ5MzYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5Ky13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5LTI1LXcgYi9saWIvdGVybWluZm8vcS9xdnQxMTktMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0OWRjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTktMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDExOS13IGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNDQ5MzYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMTlwIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2MjgyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTlwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5cC0yNSBiL2xpYi90ZXJtaW5mby9xL3F2dDExOXAtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzVhNWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5cC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDExOXAtMjUtdyBiL2xpYi90ZXJtaW5mby9xL3F2dDExOXAtMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0OWRjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQxMTlwLTI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQxMTlwLXcgYi9saWIvdGVybWluZm8vcS9xdnQxMTlwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNDQ5MzYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MTE5cC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzIGIvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODAwYjI2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDIwMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDIwMysgYi9saWIvdGVybWluZm8vcS9xdnQyMDMrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODAwYjI2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDIwMysKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQyMDMtMjUgYi9saWIvdGVybWluZm8vcS9xdnQyMDMtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MWI5YjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzLTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzLTI1LXcgYi9saWIvdGVybWluZm8vcS9xdnQyMDMtMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRiMzBjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcS9xdnQyMDMtMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9xL3F2dDIwMy13IGIvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NjhlYmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3EvcXZ0MjAzLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcS9xdnQyMDMtdy1hbSBiL2xpYi90ZXJtaW5mby9xL3F2dDIwMy13LWFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzY4ZWJmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9xL3F2dDIwMy13LWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcmJjb21tIGIvbGliL3Rlcm1pbmZvL3IvcmJjb21tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjVjZDI5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JiY29tbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3JiY29tbS1uYW0gYi9saWIvdGVybWluZm8vci9yYmNvbW0tbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2MwZjliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JiY29tbS1uYW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yYmNvbW0tdyBiL2xpYi90ZXJtaW5mby9yL3JiY29tbS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmY5NGIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JiY29tbS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcmNhIGIvbGliL3Rlcm1pbmZvL3IvcmNhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTIwYjY4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JjYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3Jjb25zIGIvbGliL3Rlcm1pbmZvL3IvcmNvbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NTBkNTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3IvcmNvbnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yY29ucy1jb2xvciBiL2xpYi90ZXJtaW5mby9yL3Jjb25zLWNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmU0ZDU5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3Jjb25zLWNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcmVidXMzMTgwIGIvbGliL3Rlcm1pbmZvL3IvcmVidXMzMTgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmRmODg1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JlYnVzMzE4MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3JlZ2VudCBiL2xpYi90ZXJtaW5mby9yL3JlZ2VudApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4Y2U2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yZWdlbnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yZWdlbnQxMDAgYi9saWIvdGVybWluZm8vci9yZWdlbnQxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MDBmMTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3IvcmVnZW50MTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcmVnZW50MjAgYi9saWIvdGVybWluZm8vci9yZWdlbnQyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThmYWRmNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yZWdlbnQyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3JlZ2VudDIwMCBiL2xpYi90ZXJtaW5mby9yL3JlZ2VudDIwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQzY2I0Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yZWdlbnQyMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yZWdlbnQyNSBiL2xpYi90ZXJtaW5mby9yL3JlZ2VudDI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjM1MWU0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JlZ2VudDI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcmVnZW50NDAgYi9saWIvdGVybWluZm8vci9yZWdlbnQ0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZlYzYzMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yZWdlbnQ0MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3JlZ2VudDQwKyBiL2xpYi90ZXJtaW5mby9yL3JlZ2VudDQwKwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJlN2JhNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yZWdlbnQ0MCsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yZWdlbnQ2MCBiL2xpYi90ZXJtaW5mby9yL3JlZ2VudDYwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDNjYjQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3JlZ2VudDYwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3IvcnQ2MjIxIGIvbGliL3Rlcm1pbmZvL3IvcnQ2MjIxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzhkNTQ5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9yL3J0NjIyMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3J0NjIyMS13IGIvbGliL3Rlcm1pbmZvL3IvcnQ2MjIxLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZmMxYzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3IvcnQ2MjIxLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9ydHBjIGIvbGliL3Rlcm1pbmZvL3IvcnRwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZiZDFhZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9ydHBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Ivcnh2dCBiL2xpYi90ZXJtaW5mby9yL3J4dnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTAxY2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3J4dnQrcGNma2V5cyBiL2xpYi90ZXJtaW5mby9yL3J4dnQrcGNma2V5cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdlN2ZjMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yeHZ0K3BjZmtleXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yeHZ0LTE2Y29sb3IgYi9saWIvdGVybWluZm8vci9yeHZ0LTE2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZTMwNTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC0xNmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9yL3J4dnQtMjU2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhN2VmNzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC0yNTZjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3J4dnQtODhjb2xvciBiL2xpYi90ZXJtaW5mby9yL3J4dnQtODhjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3NjkyNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yeHZ0LTg4Y29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yeHZ0LWJhc2ljIGIvbGliL3Rlcm1pbmZvL3Ivcnh2dC1iYXNpYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA2MjNhYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yeHZ0LWJhc2ljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC1jb2xvciBiL2xpYi90ZXJtaW5mby9yL3J4dnQtY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NTFlNDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC1jb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9yL3J4dnQtY3lnd2luIGIvbGliL3Rlcm1pbmZvL3Ivcnh2dC1jeWd3aW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MjQ2NTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC1jeWd3aW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vci9yeHZ0LWN5Z3dpbi1uYXRpdmUgYi9saWIvdGVybWluZm8vci9yeHZ0LWN5Z3dpbi1uYXRpdmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZTMyOWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC1jeWd3aW4tbmF0aXZlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Ivcnh2dC14cG0gYi9saWIvdGVybWluZm8vci9yeHZ0LXhwbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEyNjc4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vci9yeHZ0LXhwbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3M0IGIvbGliL3Rlcm1pbmZvL3MvczQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MTg0M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3MvczQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zYjEgYi9saWIvdGVybWluZm8vcy9zYjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NTdkYTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2IxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2IyIGIvbGliL3Rlcm1pbmZvL3Mvc2IyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTE3MDg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NiMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NiMyBiL2xpYi90ZXJtaW5mby9zL3NiMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ExNzA4Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zYjMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zYmkgYi9saWIvdGVybWluZm8vcy9zYmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZmYyZjUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2JpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2JvYmNhdCBiL2xpYi90ZXJtaW5mby9zL3Nib2JjYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZWQ0YWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2JvYmNhdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjNDEwIGIvbGliL3Rlcm1pbmZvL3Mvc2M0MTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMGQ0MmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2M0MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zYzQxNSBiL2xpYi90ZXJtaW5mby9zL3NjNDE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzBkNDJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NjNDE1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NhbnNldCBiL2xpYi90ZXJtaW5mby9zL3NjYW5zZXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMGQ0MmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NhbnNldAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3Njb2Fuc2kgYi9saWIvdGVybWluZm8vcy9zY29hbnNpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODZiNTBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3Njb2Fuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY29hbnNpLW5ldyBiL2xpYi90ZXJtaW5mby9zL3Njb2Fuc2ktbmV3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBlMjFmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3Njb2Fuc2ktbmV3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NvYW5zaS1vbGQgYi9saWIvdGVybWluZm8vcy9zY29hbnNpLW9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkZjUzMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY29hbnNpLW9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbiBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQyYjU0YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4rZmtleXMgYi9saWIvdGVybWluZm8vcy9zY3JlZW4rZmtleXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNTY0YWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuK2ZrZXlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTE2Y29sb3IgYi9saWIvdGVybWluZm8vcy9zY3JlZW4tMTZjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhZmRkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMTZjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0xNmNvbG9yLWJjZSBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0xNmNvbG9yLWJjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUyMmFkMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMTZjb2xvci1iY2UKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMTZjb2xvci1iY2UtcyBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0xNmNvbG9yLWJjZS1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmM1ZGVjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0xNmNvbG9yLWJjZS1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTE2Y29sb3ItcyBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0xNmNvbG9yLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MTg3MDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTE2Y29sb3ItcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0yNTZjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZmZjRhZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMjU2Y29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMjU2Y29sb3ItYmNlIGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTI1NmNvbG9yLWJjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU3ZmQ5NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tMjU2Y29sb3ItYmNlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTI1NmNvbG9yLWJjZS1zIGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTI1NmNvbG9yLWJjZS1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTRhMThmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0yNTZjb2xvci1iY2UtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi0yNTZjb2xvci1zIGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTI1NmNvbG9yLXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MmI3M2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLTI1NmNvbG9yLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4tYmNlIGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLWJjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhMDk5Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tYmNlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLXMgYi9saWIvdGVybWluZm8vcy9zY3JlZW4tcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU5MjI5Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4tcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi13IGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkM2Y0YjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4ubGludXggYi9saWIvdGVybWluZm8vcy9zY3JlZW4ubGludXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNWEwYTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLmxpbnV4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLm1sdGVybSBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi5tbHRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MGM2NGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLm1sdGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi5yeHZ0IGIvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLnJ4dnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NThjYzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLnJ4dnQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4udGVyYXRlcm0gYi9saWIvdGVybWluZm8vcy9zY3JlZW4udGVyYXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMjI0Y2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLnRlcmF0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLnh0ZXJtLW5ldyBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi54dGVybS1uZXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwN2VmMmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuLnh0ZXJtLW5ldworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi54dGVybS1yNiBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi54dGVybS1yNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1OTYxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JlZW4ueHRlcm0tcjYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3JlZW4ueHRlcm0teGZyZWU4NiBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbi54dGVybS14ZnJlZTg2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDdlZjJlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbi54dGVybS14ZnJlZTg2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuMiBiL2xpYi90ZXJtaW5mby9zL3NjcmVlbjIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNzI3NmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc2NyZWVuMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbjMgYi9saWIvdGVybWluZm8vcy9zY3JlZW4zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjhiY2M4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NjcmVlbjMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zY3Jld3BvaW50IGIvbGliL3Rlcm1pbmZvL3Mvc2NyZXdwb2ludApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk5NmQ2NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3Jld3BvaW50CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc2NyaHAgYi9saWIvdGVybWluZm8vcy9zY3JocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY5OGJmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zY3JocAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3NpYm8gYi9saWIvdGVybWluZm8vcy9zaWJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTFlNjA3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3NpYm8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zaW10ZXJtIGIvbGliL3Rlcm1pbmZvL3Mvc2ltdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFlZjBmNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zaW10ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc29yb2MgYi9saWIvdGVybWluZm8vcy9zb3JvYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3YTYwMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zb3JvYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3Nvcm9jMTIwIGIvbGliL3Rlcm1pbmZvL3Mvc29yb2MxMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1N2E2MDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc29yb2MxMjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zb3JvYzE0MCBiL2xpYi90ZXJtaW5mby9zL3Nvcm9jMTQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTY0MWM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3Nvcm9jMTQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3BpbndyaXRlciBiL2xpYi90ZXJtaW5mby9zL3NwaW53cml0ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NWI2ZGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3BpbndyaXRlcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N0NTIgYi9saWIvdGVybWluZm8vcy9zdDUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTEwYjRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N0NTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4gYi9saWIvdGVybWluZm8vcy9zdW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzZmOTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLTEgYi9saWIvdGVybWluZm8vcy9zdW4tMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIxNWZiYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi0xMiBiL2xpYi90ZXJtaW5mby9zL3N1bi0xMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjViMzAxNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tMTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tMTcgYi9saWIvdGVybWluZm8vcy9zdW4tMTcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNjU2MzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuLTE3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLTI0IGIvbGliL3Rlcm1pbmZvL3Mvc3VuLTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDhmYTg0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi0zNCBiL2xpYi90ZXJtaW5mby9zL3N1bi0zNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmZjFjYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tMzQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tNDggYi9saWIvdGVybWluZm8vcy9zdW4tNDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NzFjMjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuLTQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLWMgYi9saWIvdGVybWluZm8vcy9zdW4tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhYjU2OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi1jZ3NpeCBiL2xpYi90ZXJtaW5mby9zL3N1bi1jZ3NpeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZkOGMzNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tY2dzaXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tY21kIGIvbGliL3Rlcm1pbmZvL3Mvc3VuLWNtZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhYjU2OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tY21kCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLWNvbG9yIGIvbGliL3Rlcm1pbmZvL3Mvc3VuLWNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmM5NTQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi1jb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi1lIGIvbGliL3Rlcm1pbmZvL3Mvc3VuLWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMWI2MDQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuLWUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tZS1zIGIvbGliL3Rlcm1pbmZvL3Mvc3VuLWUtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1ZjA3OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW4tZS1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLWlsIGIvbGliL3Rlcm1pbmZvL3Mvc3VuLWlsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTUyMDQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi1pbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi1uaWMgYi9saWIvdGVybWluZm8vcy9zdW4tbmljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTFiNjA0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi1uaWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tcyBiL2xpYi90ZXJtaW5mby9zL3N1bi1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzBmNDBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuLXMtZSBiL2xpYi90ZXJtaW5mby9zL3N1bi1zLWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWYwNzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuLXMtZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bi1zczUgYi9saWIvdGVybWluZm8vcy9zdW4tc3M1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmQ4YzM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bi1zczUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW4tdHlwZTQgYi9saWIvdGVybWluZm8vcy9zdW4tdHlwZTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMWI4ODAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuLXR5cGU0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VuMSBiL2xpYi90ZXJtaW5mby9zL3N1bjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzZmOTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VuMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1bjIgYi9saWIvdGVybWluZm8vcy9zdW4yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTc2Zjk3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N1bjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdW5lIGIvbGliL3Rlcm1pbmZvL3Mvc3VuZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UxYjYwNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdW5lCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VwZXJiZWUgYi9saWIvdGVybWluZm8vcy9zdXBlcmJlZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmZjJmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdXBlcmJlZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N1cGVyYmVlLXhzYiBiL2xpYi90ZXJtaW5mby9zL3N1cGVyYmVlLXhzYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwMjFiYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdXBlcmJlZS14c2IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zdXBlcmJlZWljIGIvbGliL3Rlcm1pbmZvL3Mvc3VwZXJiZWVpYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU4MmMyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zdXBlcmJlZWljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3VwZXJicmFpbiBiL2xpYi90ZXJtaW5mby9zL3N1cGVyYnJhaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyN2JkMDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3VwZXJicmFpbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N2ODAgYi9saWIvdGVybWluZm8vcy9zdjgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmY3ZDUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby9zL3N2ODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zd3RwIGIvbGliL3Rlcm1pbmZvL3Mvc3d0cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU5NGQzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zd3RwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Mvc3luZXJ0ZWsgYi9saWIvdGVybWluZm8vcy9zeW5lcnRlawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkYmY2Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zeW5lcnRlaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby9zL3N5bmVydGVrMzgwIGIvbGliL3Rlcm1pbmZvL3Mvc3luZXJ0ZWszODAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZGJmNmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Mvc3luZXJ0ZWszODAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vcy9zeXN0ZW0xIGIvbGliL3Rlcm1pbmZvL3Mvc3lzdGVtMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJmY2UyMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vcy9zeXN0ZW0xCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdDEwIGIvbGliL3Rlcm1pbmZvL3QvdDEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWE2ZDJkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3QxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3QxMDYxIGIvbGliL3Rlcm1pbmZvL3QvdDEwNjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDk3ZDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdDEwNjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90MTA2MWYgYi9saWIvdGVybWluZm8vdC90MTA2MWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MjhiOWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdDEwNjFmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdDE2IGIvbGliL3Rlcm1pbmZvL3QvdDE2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDA3M2EyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3QxNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3QzNzAwIGIvbGliL3Rlcm1pbmZvL3QvdDM3MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNWFkMmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdDM3MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90MzgwMCBiL2xpYi90ZXJtaW5mby90L3QzODAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjk0ZGM4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3QzODAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdDY1M3ggYi9saWIvdGVybWluZm8vdC90NjUzeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY4NjllNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90NjUzeAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RhYiBiL2xpYi90ZXJtaW5mby90L3RhYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiMDk4MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90YWIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90YWIxMzIgYi9saWIvdGVybWluZm8vdC90YWIxMzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYjA5ODEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGFiMTMyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGFiMTMyLTE1IGIvbGliL3Rlcm1pbmZvL3QvdGFiMTMyLTE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWIwOTgxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RhYjEzMi0xNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RhYjEzMi1ydiBiL2xpYi90ZXJtaW5mby90L3RhYjEzMi1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIxMmJlZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90YWIxMzItcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90YWIxMzItdyBiL2xpYi90ZXJtaW5mby90L3RhYjEzMi13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQxMDhhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RhYjEzMi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGFiMTMyLXctcnYgYi9saWIvdGVybWluZm8vdC90YWIxMzItdy1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMwNmY0Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90YWIxMzItdy1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RhbmRlbTY1MTAgYi9saWIvdGVybWluZm8vdC90YW5kZW02NTEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWNkOGRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RhbmRlbTY1MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90YW5kZW02NTMgYi9saWIvdGVybWluZm8vdC90YW5kZW02NTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmODY5ZTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGFuZGVtNjUzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrIGIvbGliL3Rlcm1pbmZvL3QvdGVrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTZmZDg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMTIgYi9saWIvdGVybWluZm8vdC90ZWs0MDEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTZmZDg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDEzIGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAxMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxNzJkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MDEzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAxNCBiL2xpYi90ZXJtaW5mby90L3RlazQwMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMmUxZTQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAxNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMTQtc20gYi9saWIvdGVybWluZm8vdC90ZWs0MDE0LXNtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDVlMmQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMTQtc20KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDE1IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAxNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQzYWM0Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MDE1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAxNS1zbSBiL2xpYi90ZXJtaW5mby90L3RlazQwMTUtc20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MTNiZTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAxNS1zbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMjMgYi9saWIvdGVybWluZm8vdC90ZWs0MDIzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjExNmFhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDI0IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJiYTE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MDI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNSBiL2xpYi90ZXJtaW5mby90L3RlazQwMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYmExOWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMjUtMTcgYi9saWIvdGVybWluZm8vdC90ZWs0MDI1LTE3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yzk3MGY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjUtMTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDI1LTE3LXdzIGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNS0xNy13cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdmZGRmOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MDI1LTE3LXdzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNS1jciBiL2xpYi90ZXJtaW5mby90L3RlazQwMjUtY3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmQ1Y2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNS1jcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMjUtZXggYi9saWIvdGVybWluZm8vdC90ZWs0MDI1LWV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWIwMGRiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjUtZXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDI1YSBiL2xpYi90ZXJtaW5mby90L3RlazQwMjVhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTIwODEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjVhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNWV4IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNWV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTRjMWYzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjVleAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQwMjcgYi9saWIvdGVybWluZm8vdC90ZWs0MDI3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmJhMTliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQwMjcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MDI3LWV4IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDAyNy1leApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTliMDBkYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MDI3LWV4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwNSBiL2xpYi90ZXJtaW5mby90L3RlazQxMDUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTBlMDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMDUtMzAgYi9saWIvdGVybWluZm8vdC90ZWs0MTA1LTMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTM3MDgxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMDUtMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MTA1YSBiL2xpYi90ZXJtaW5mby90L3RlazQxMDVhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGFkYWEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMDVhCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwNmJybCBiL2xpYi90ZXJtaW5mby90L3RlazQxMDZicmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTU5M2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwNmJybAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMDcgYi9saWIvdGVybWluZm8vdC90ZWs0MTA3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDU4YTRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMDcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MTA3YnJsIGIvbGliL3Rlcm1pbmZvL3QvdGVrNDEwN2JybApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1NTkzZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MTA3YnJsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwOSBiL2xpYi90ZXJtaW5mby90L3RlazQxMDkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NThhNGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDEwOQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMDlicmwgYi9saWIvdGVybWluZm8vdC90ZWs0MTA5YnJsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTU1OTNlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMDlicmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MTEyIGIvbGliL3Rlcm1pbmZvL3QvdGVrNDExMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQzYWZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MTEyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDExMi01IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDExMi01CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTNhZjdiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMTItNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMTItbmQgYi9saWIvdGVybWluZm8vdC90ZWs0MTEyLW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzlkOTU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMTItbmQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MTEzIGIvbGliL3Rlcm1pbmZvL3QvdGVrNDExMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEyMDdhNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MTEzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDExMy0zNCBiL2xpYi90ZXJtaW5mby90L3RlazQxMTMtMzQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNTdjM2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDExMy0zNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMTMtbmQgYi9saWIvdGVybWluZm8vdC90ZWs0MTEzLW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTM0ODFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMTMtbmQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MTE0IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDExNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQzYWZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MTE0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDExNSBiL2xpYi90ZXJtaW5mby90L3RlazQxMTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjYyODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDExNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQxMjUgYi9saWIvdGVybWluZm8vdC90ZWs0MTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjRiN2ZkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlazQxMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0MjA1IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDIwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxNjgzYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MjA1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVrNDIwNyBiL2xpYi90ZXJtaW5mby90L3RlazQyMDcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhN2E4MTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVrNDIwNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlazQyMDctcyBiL2xpYi90ZXJtaW5mby90L3RlazQyMDctcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhjMDE3ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0MjA3LXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZWs0NDA0IGIvbGliL3Rlcm1pbmZvL3QvdGVrNDQwNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUyMjMwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZWs0NDA0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVsZXJheSBiL2xpYi90ZXJtaW5mby90L3RlbGVyYXkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDk3ZDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVsZXJheQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlbGV0ZWMgYi9saWIvdGVybWluZm8vdC90ZWxldGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTA3OGVhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlbGV0ZWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZXJhdGVybSBiL2xpYi90ZXJtaW5mby90L3RlcmF0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjVkYTZjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RlcmF0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVyYXRlcm0yLjMgYi9saWIvdGVybWluZm8vdC90ZXJhdGVybTIuMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAwZWI3MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZXJhdGVybTIuMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RlcmF0ZXJtNC41OSBiL2xpYi90ZXJtaW5mby90L3RlcmF0ZXJtNC41OQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkxNThiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90ZXJhdGVybTQuNTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90ZXJtaW5ldCBiL2xpYi90ZXJtaW5mby90L3Rlcm1pbmV0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M2MzljLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3Rlcm1pbmV0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGVybWluZXQxMjAwIGIvbGliL3Rlcm1pbmZvL3QvdGVybWluZXQxMjAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M2MzljLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3Rlcm1pbmV0MTIwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3Rlcm1pbmV0MzAwIGIvbGliL3Rlcm1pbmZvL3QvdGVybWluZXQzMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YzYzOWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGVybWluZXQzMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90Z3RlbG5ldCBiL2xpYi90ZXJtaW5mby90L3RndGVsbmV0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjE0ODMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RndGVsbmV0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk3MDAgYi9saWIvdGVybWluZm8vdC90aTcwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3ZWI4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90aTcwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpNzMzIGIvbGliL3Rlcm1pbmZvL3QvdGk3MzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlN2ViODguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk3MzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTczNSBiL2xpYi90ZXJtaW5mby90L3RpNzM1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTdlYjg4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpNzM1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk3NDUgYi9saWIvdGVybWluZm8vdC90aTc0NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3ZWI4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90aTc0NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpODAwIGIvbGliL3Rlcm1pbmZvL3QvdGk4MDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlN2ViODguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk4MDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTkxNiBiL2xpYi90ZXJtaW5mby90L3RpOTE2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTkwNmIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTE2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk5MTYtMTMyIGIvbGliL3Rlcm1pbmZvL3QvdGk5MTYtMTMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWVhMGIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTE2LTEzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpOTE2LTIyMC03IGIvbGliL3Rlcm1pbmZvL3QvdGk5MTYtMjIwLTcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OTA2YjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MTYtMjIwLTcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTkxNi0yMjAtOCBiL2xpYi90ZXJtaW5mby90L3RpOTE2LTIyMC04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmFkNWMxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTE2LTIyMC04CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk5MTYtOCBiL2xpYi90ZXJtaW5mby90L3RpOTE2LTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYWQ1YzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MTYtOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpOTE2LTgtMTMyIGIvbGliL3Rlcm1pbmZvL3QvdGk5MTYtOC0xMzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Yzg3OTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MTYtOC0xMzIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTkyNCBiL2xpYi90ZXJtaW5mby90L3RpOTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGNiOGIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk5MjQtOCBiL2xpYi90ZXJtaW5mby90L3RpOTI0LTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3Mzc2MzkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MjQtOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpOTI0LTh3IGIvbGliL3Rlcm1pbmZvL3QvdGk5MjQtOHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYjg0ZDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MjQtOHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTkyNHcgYi9saWIvdGVybWluZm8vdC90aTkyNHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNmIxMTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MjR3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk5MjYgYi9saWIvdGVybWluZm8vdC90aTkyNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlMmZkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90aTkyNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpOTI2LTggYi9saWIvdGVybWluZm8vdC90aTkyNi04CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWE2YjZmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTI2LTgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aTkyOCBiL2xpYi90ZXJtaW5mby90L3RpOTI4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODk1MzMyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RpOTI4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGk5MjgtOCBiL2xpYi90ZXJtaW5mby90L3RpOTI4LTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOGYwZmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MjgtOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RpOTMxIGIvbGliL3Rlcm1pbmZvL3QvdGk5MzEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZTQ4YmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdGk5MzEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90aV9hbnNpIGIvbGliL3Rlcm1pbmZvL3QvdGlfYW5zaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ2NzY2OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90aV9hbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdGt0ZXJtIGIvbGliL3Rlcm1pbmZvL3QvdGt0ZXJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2JlOWY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RrdGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RuMTIwMCBiL2xpYi90ZXJtaW5mby90L3RuMTIwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjNjM5Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90bjEyMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90bjMwMCBiL2xpYi90ZXJtaW5mby90L3RuMzAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M2MzljLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RuMzAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHJzMTYgYi9saWIvdGVybWluZm8vdC90cnMxNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3MDdkMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90cnMxNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RyczIgYi9saWIvdGVybWluZm8vdC90cnMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDM0MDQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RyczIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90cnM4MElJIGIvbGliL3Rlcm1pbmZvL3QvdHJzODBJSQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzNDA0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90cnM4MElJCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHJzSUkgYi9saWIvdGVybWluZm8vdC90cnNJSQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzNDA0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90cnNJSQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RzLTEgYi9saWIvdGVybWluZm8vdC90cy0xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGRiZjkzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RzLTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90cy0xcCBiL2xpYi90ZXJtaW5mby90L3RzLTFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjY1MTE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RzLTFwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHMxIGIvbGliL3Rlcm1pbmZvL3QvdHMxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGRiZjkzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RzMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RzMTAwIGIvbGliL3Rlcm1pbmZvL3QvdHMxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZjgwNWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHMxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90czEwMC1jdHh0IGIvbGliL3Rlcm1pbmZvL3QvdHMxMDAtY3R4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhMTg3My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90czEwMC1jdHh0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHMxMDAtc3AgYi9saWIvdGVybWluZm8vdC90czEwMC1zcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmODA1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90czEwMC1zcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3RzMXAgYi9saWIvdGVybWluZm8vdC90czFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjY1MTE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3RzMXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dCBiL2xpYi90ZXJtaW5mby90L3R0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2JlOWY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHQ1MDUtMjIgYi9saWIvdGVybWluZm8vdC90dDUwNS0yMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ1MmMzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dDUwNS0yMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTMzIGIvbGliL3Rlcm1pbmZvL3QvdHR5MzMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNzE5YTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5MzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHkzNSBiL2xpYi90ZXJtaW5mby90L3R0eTM1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjcxOWExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTM1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5MzcgYi9saWIvdGVybWluZm8vdC90dHkzNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNhMGYxNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHkzNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTQwIGIvbGliL3Rlcm1pbmZvL3QvdHR5NDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NWMzNWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk0MyBiL2xpYi90ZXJtaW5mby90L3R0eTQzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDI0NzkxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTQzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NDQyMCBiL2xpYi90ZXJtaW5mby90L3R0eTQ0MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDllNjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NDQyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTQ0MjQgYi9saWIvdGVybWluZm8vdC90dHk0NDI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzliYzgyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTQ0MjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk0NDI0LTEgYi9saWIvdGVybWluZm8vdC90dHk0NDI0LTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZjI4NTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NDQyNC0xCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NDQyNG0gYi9saWIvdGVybWluZm8vdC90dHk0NDI0bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2NzFlMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk0NDI0bQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTQ0MjYgYi9saWIvdGVybWluZm8vdC90dHk0NDI2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzVmMjA0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTQ0MjYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDEwIGIvbGliL3Rlcm1pbmZvL3QvdHR5NTQxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNiYmRjZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NDEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQxMC13IGIvbGliL3Rlcm1pbmZvL3QvdHR5NTQxMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGQ5NmVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU0MTB2MSBiL2xpYi90ZXJtaW5mby90L3R0eTU0MTB2MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3NjcyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NDEwdjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDEwdjEtdyBiL2xpYi90ZXJtaW5mby90L3R0eTU0MTB2MS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODQ5MDg4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MTB2MS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMCBiL2xpYi90ZXJtaW5mby90L3R0eTU0MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1OGZiMGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjArbmwgYi9saWIvdGVybWluZm8vdC90dHk1NDIwK25sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWE4ZGU4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjArbmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDIwLW5sIGIvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC1ubApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyMmIxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NDIwLW5sCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC1ydiBiL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NjczYmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC1ydgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtcnYtbmwgYi9saWIvdGVybWluZm8vdC90dHk1NDIwLXJ2LW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzhmOWFiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtcnYtbmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDIwLXcgYi9saWIvdGVybWluZm8vdC90dHk1NDIwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMTZkMGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC13LW5sIGIvbGliL3Rlcm1pbmZvL3QvdHR5NTQyMC13LW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTA1MTY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtdy1ubAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtdy1ydiBiL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtdy1ydgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFlNmQ4Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NDIwLXctcnYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDIwLXctcnYtbiBiL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtdy1ydi1uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTY2OTFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjAtdy1ydi1uCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyNSBiL2xpYi90ZXJtaW5mby90L3R0eTU0MjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MDJiNWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjUtbmwgYi9saWIvdGVybWluZm8vdC90dHk1NDI1LW5sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDJlNzBiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R0eTU0MjUtbmwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NDI1LXcgYi9saWIvdGVybWluZm8vdC90dHk1NDI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNDcwNzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTQyNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTYyMCBiL2xpYi90ZXJtaW5mby90L3R0eTU2MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTY4ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTYyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU2MjAtMSBiL2xpYi90ZXJtaW5mby90L3R0eTU2MjAtMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIxMmM3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NjIwLTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHk1NjIwLTI0IGIvbGliL3Rlcm1pbmZvL3QvdHR5NTYyMC0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxMmI2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NjIwLTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHR5NTYyMC0zNCBiL2xpYi90ZXJtaW5mby90L3R0eTU2MjAtMzQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNjBmMGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5NTYyMC0zNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R0eTU2MjAtcyBiL2xpYi90ZXJtaW5mby90L3R0eTU2MjAtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxM2JjYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dHk1NjIwLXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dHlkbWQgYi9saWIvdGVybWluZm8vdC90dHlkbWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTY4ODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHR5ZG1kCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpODAzIGIvbGliL3Rlcm1pbmZvL3QvdHZpODAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWM4OGZiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTgwMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkwNjUgYi9saWIvdGVybWluZm8vdC90dmk5MDY1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzU4YjY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkwNjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTAgYi9saWIvdGVybWluZm8vdC90dmk5MTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OGI2Y2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEwKyBiL2xpYi90ZXJtaW5mby90L3R2aTkxMCsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMGE4ZmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEwKworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMiBiL2xpYi90ZXJtaW5mby90L3R2aTkxMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiZWZlZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjMWE3ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYisycCBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmIrMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNmY3OWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYisycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmIrZGltIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYitkaW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MjQ5Y2MuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYitkaW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiK21jIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYittYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRiNzE3Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiK21jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYitwcmludGVyIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYitwcmludGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjM3YWMyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmIrcHJpbnRlcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmIrdmIgYi9saWIvdGVybWluZm8vdC90dmk5MTJiK3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2U4NGNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmIrdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzM2E0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi0ycC1tYyBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItMnAtbWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MTU1NzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi0ycC1tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItMnAtcCBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItMnAtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwMTE4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLTJwLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLTJwLXVuayBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItMnAtdW5rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhjNWIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItMnAtdW5rCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1tYyBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItbWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZWIyYTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItbWMtMnAgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLW1jLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTE1NTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItbWMtMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLW1jLXZiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1tYy12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4NTk4Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLW1jLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1wIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDdiMTVkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItcC0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItcC0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwMTE4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXAtMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXAtdmIgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLXAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjBhZmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi1wLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0MGMxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdW5rLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi11bmstMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGM1YjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi11bmstMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXVuay12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdW5rLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmRjYTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdW5rLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYmE0YmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdmItbWMgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLXZiLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTg1OThiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmItdmItbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXZiLXAgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLXZiLXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjBhZmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi12Yi1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYi12Yi11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MTJiLXZiLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZkY2E0ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJiLXZiLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMgYi9saWIvdGVybWluZm8vdC90dmk5MTJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2MxYTdkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzM2E0My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy0ycC1tYyBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtMnAtbWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MTU1NzEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy0ycC1tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtMnAtcCBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtMnAtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwMTE4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLTJwLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLTJwLXVuayBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtMnAtdW5rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhjNWIwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtMnAtdW5rCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1tYyBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtbWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZWIyYTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtbWMtMnAgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLW1jLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTE1NTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtbWMtMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLW1jLXZiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1tYy12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4NTk4Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLW1jLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1wIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDdiMTVkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtcC0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtcC0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwMTE4OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXAtMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXAtdmIgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLXAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjBhZmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy1wLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0MGMxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdW5rLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy11bmstMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGM1YjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy11bmstMnAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXVuay12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdW5rLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmRjYTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdW5rLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYmE0YmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdmItbWMgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLXZiLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTg1OThiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmMtdmItbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXZiLXAgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLXZiLXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjBhZmUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy12Yi1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyYy12Yi11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MTJjLXZiLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZkY2E0ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MTJjLXZiLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkxMmNjIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTEyY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Y2Q1YWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTEyY2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MTQgYi9saWIvdGVybWluZm8vdC90dmk5MTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYmVmZWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTE0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JlZmVmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGIgYi9saWIvdGVybWluZm8vdC90dmk5MjBiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTU0MjA0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiK2ZuIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYitmbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2ZGFmNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiK2ZuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGItMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZTUwM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi0ycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItMnAtbWMgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLTJwLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODI3YTdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItMnAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiLTJwLXAgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLTJwLXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjVkN2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi0ycC1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi0ycC11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLTJwLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0MmRiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiLTJwLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItbWMgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDUxZGNiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiLW1jLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1tYy0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyN2E3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiLW1jLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1tYy12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGItbWMtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2N2U0ZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1tYy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItcCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGItcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiODg0Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXAtMnAgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLXAtMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjVkN2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1wLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1wLXZiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi1wLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk1M2ExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItcC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdW5rIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi11bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNDAwYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi11bmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXVuay0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdW5rLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTQyZGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdW5rLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi11bmstdmIgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLXVuay12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYxOGU3NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXVuay12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdmIgYi9saWIvdGVybWluZm8vdC90dmk5MjBiLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGI4NTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXZiLW1jIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi12Yi1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY3ZTRlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBiLXZiLW1jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi12Yi1wIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi12Yi1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk1M2ExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdmItcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGItdmItdW5rIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi12Yi11bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MThlNzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYi12Yi11bmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk1NDIwNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZTUwM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy0ycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtMnAtbWMgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLTJwLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODI3YTdhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtMnAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjLTJwLXAgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLTJwLXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjVkN2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy0ycC1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy0ycC11bmsgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLTJwLXVuawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0MmRiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjLTJwLXVuaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtbWMgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDUxZGNiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjLW1jLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1tYy0ycApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyN2E3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjLW1jLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1tYy12YiBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtbWMtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2N2U0ZTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1tYy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtcCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiODg0Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXAtMnAgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLXAtMnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjVkN2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1wLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1wLXZiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy1wLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk1M2ExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtcC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdW5rIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy11bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNDAwYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy11bmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXVuay0ycCBiL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdW5rLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTQyZGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdW5rLTJwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy11bmstdmIgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLXVuay12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYxOGU3NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXVuay12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdmIgYi9saWIvdGVybWluZm8vdC90dmk5MjBjLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGI4NTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXZiLW1jIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy12Yi1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY3ZTRlNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjBjLXZiLW1jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy12Yi1wIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy12Yi1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk1M2ExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdmItcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyMGMtdmItdW5rIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy12Yi11bmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MThlNzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIwYy12Yi11bmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjEgYi9saWIvdGVybWluZm8vdC90dmk5MjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkM2M4M2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTIxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTI0IGIvbGliL3Rlcm1pbmZvL3QvdHZpOTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDgwYTUyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyNSBiL2xpYi90ZXJtaW5mby90L3R2aTkyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkMDZjOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5MjUtaGkgYi9saWIvdGVybWluZm8vdC90dmk5MjUtaGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZDI4MmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTI1LWhpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTJCIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTJCCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2MxY2RiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTkyQgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTkyRCBiL2xpYi90ZXJtaW5mby90L3R2aTkyRApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA0ZTY2OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5MkQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5NTAgYi9saWIvdGVybWluZm8vdC90dmk5NTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMGVhZTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTUwLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTUwLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDNiYTMzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTk1MC0ycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTk1MC00cCBiL2xpYi90ZXJtaW5mby90L3R2aTk1MC00cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y4ZmQ3YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5NTAtNHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5NTAtcnYgYi9saWIvdGVybWluZm8vdC90dmk5NTAtcnYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMTZjNDUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTUwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTUwLXJ2LTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTUwLXJ2LTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDFjODY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTk1MC1ydi0ycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTk1MC1ydi00cCBiL2xpYi90ZXJtaW5mby90L3R2aTk1MC1ydi00cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhYjA4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5NTAtcnYtNHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5NTUgYi9saWIvdGVybWluZm8vdC90dmk5NTUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YmMyYWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTU1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTU1LWhiIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTU1LWhiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTZhYjg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTk1NS1oYgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTk1NS13IGIvbGliL3Rlcm1pbmZvL3QvdHZpOTU1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZGE2NjcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTU1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmk5NzAgYi9saWIvdGVybWluZm8vdC90dmk5NzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYTEwNTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHZpOTcwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHZpOTcwLTJwIGIvbGliL3Rlcm1pbmZvL3QvdHZpOTcwLTJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmY1ODM2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aTk3MC0ycAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R2aTk3MC12YiBiL2xpYi90ZXJtaW5mby90L3R2aTk3MC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZmMGE2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90dmk5NzAtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90dmlwdCBiL2xpYi90ZXJtaW5mby90L3R2aXB0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzUyOGE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby90L3R2aXB0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHdzLWdlbmVyaWMgYi9saWIvdGVybWluZm8vdC90d3MtZ2VuZXJpYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBlYjY1OS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90d3MtZ2VuZXJpYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby90L3R3czIxMDItc25hIGIvbGliL3Rlcm1pbmZvL3QvdHdzMjEwMi1zbmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNTgwZDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3QvdHdzMjEwMi1zbmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdC90d3MyMTAzIGIvbGliL3Rlcm1pbmZvL3QvdHdzMjEwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJmMWY3MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90d3MyMTAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3QvdHdzMjEwMy1zbmEgYi9saWIvdGVybWluZm8vdC90d3MyMTAzLXNuYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhNmFmMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdC90d3MyMTAzLXNuYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby91L3VsdGltYTIgYi9saWIvdGVybWluZm8vdS91bHRpbWEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTdjNDI3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby91L3VsdGltYTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdS91bHRpbWFJSSBiL2xpYi90ZXJtaW5mby91L3VsdGltYUlJCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTdjNDI3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby91L3VsdGltYUlJCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3UvdW5pdGVybSBiL2xpYi90ZXJtaW5mby91L3VuaXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MWEyYjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3UvdW5pdGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby91L3VuaXRlcm00OSBiL2xpYi90ZXJtaW5mby91L3VuaXRlcm00OQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQxYTJiMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdS91bml0ZXJtNDkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdS91bml4cGMgYi9saWIvdGVybWluZm8vdS91bml4cGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MTg0M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3UvdW5peHBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3UvdW5rbm93biBiL2xpYi90ZXJtaW5mby91L3Vua25vd24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOWI5MGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3UvdW5rbm93bgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby91L3V0czMwIGIvbGliL3Rlcm1pbmZvL3UvdXRzMzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MmI3NDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3UvdXRzMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdS91d2luIGIvbGliL3Rlcm1pbmZvL3UvdXdpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcxOTlhMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdS91d2luCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdjIwMC1uYW0gYi9saWIvdGVybWluZm8vdi92MjAwLW5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlMDk3MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92MjAwLW5hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3YzMjBuIGIvbGliL3Rlcm1pbmZvL3YvdjMyMG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMTYxYzQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdjMyMG4KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92MzIyMCBiL2xpYi90ZXJtaW5mby92L3YzMjIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTZhNmYyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3YzMjIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdjU0MTAgYi9saWIvdGVybWluZm8vdi92NTQxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg2ZTEwMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92NTQxMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZhbmlsbGEgYi9saWIvdGVybWluZm8vdi92YW5pbGxhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDVkMGY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZhbmlsbGEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92YXBwbGUgYi9saWIvdGVybWluZm8vdi92YXBwbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MjllODEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmFwcGxlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmMxMDMgYi9saWIvdGVybWluZm8vdi92YzEwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE5NzhmYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92YzEwMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZjMjAzIGIvbGliL3Rlcm1pbmZvL3YvdmMyMDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTc4ZmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmMyMDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92YzMwMyBiL2xpYi90ZXJtaW5mby92L3ZjMzAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTk3OGZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZjMzAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmMzMDNhIGIvbGliL3Rlcm1pbmZvL3YvdmMzMDNhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWU0YzY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZjMzAzYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZjNDAzYSBiL2xpYi90ZXJtaW5mby92L3ZjNDAzYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VlNGM2Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92YzQwM2EKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92YzQwNCBiL2xpYi90ZXJtaW5mby92L3ZjNDA0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2Y4OWY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZjNDA0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmM0MDQtcyBiL2xpYi90ZXJtaW5mby92L3ZjNDA0LXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZTI1NTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmM0MDQtcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZjNDE0IGIvbGliL3Rlcm1pbmZvL3YvdmM0MTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYTA3M2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmM0MTQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92YzQxNGggYi9saWIvdGVybWluZm8vdi92YzQxNGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYTA3M2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmM0MTRoCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmM0MTUgYi9saWIvdGVybWluZm8vdi92YzQxNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkYzgxZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92YzQxNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Zlbml4IGIvbGliL3Rlcm1pbmZvL3YvdmVuaXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYTdlYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmVuaXgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92ZXJzYXRlcm0gYi9saWIvdGVybWluZm8vdi92ZXJzYXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyY2UyZmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmVyc2F0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmkyMDAgYi9saWIvdGVybWluZm8vdi92aTIwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg5NTIxMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTIwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpMjAwLWYgYi9saWIvdGVybWluZm8vdi92aTIwMC1mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGEzYWE2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpMjAwLWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aTIwMC1ydiBiL2xpYi90ZXJtaW5mby92L3ZpMjAwLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWZlOTIyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpMjAwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmkzMDAgYi9saWIvdGVybWluZm8vdi92aTMwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjZmNmNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTMwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpMzAwLW9sZCBiL2xpYi90ZXJtaW5mby92L3ZpMzAwLW9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRhNTFjMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTMwMC1vbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aTUwIGIvbGliL3Rlcm1pbmZvL3Yvdmk1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQyZGJkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Yvdmk1MDAgYi9saWIvdGVybWluZm8vdi92aTUwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU5NzMzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTUwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpNTBhZG0gYi9saWIvdGVybWluZm8vdi92aTUwYWRtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2QyOTBkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpNTBhZG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aTU1IGIvbGliL3Rlcm1pbmZvL3Yvdmk1NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhZDEzOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTU1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Yvdmk1NTAgYi9saWIvdGVybWluZm8vdi92aTU1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlNGY3ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aTU1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpNjAzIGIvbGliL3Rlcm1pbmZvL3Yvdmk2MDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZTE2MmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Yvdmk2MDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aWV3cG9pbnQgYi9saWIvdGVybWluZm8vdi92aWV3cG9pbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjVhOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Yvdmlld3BvaW50CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Yvdmlld3BvaW50M2ErIGIvbGliL3Rlcm1pbmZvL3Yvdmlld3BvaW50M2ErCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBmODJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpZXdwb2ludDNhKworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpZXdwb2ludDYwIGIvbGliL3Rlcm1pbmZvL3Yvdmlld3BvaW50NjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMDg1OGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3Yvdmlld3BvaW50NjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aWV3cG9pbnQ5MCBiL2xpYi90ZXJtaW5mby92L3ZpZXdwb2ludDkwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWNiYmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpZXdwb2ludDkwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmlwIGIvbGliL3Rlcm1pbmZvL3YvdmlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTBhOGQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpcC1IIGIvbGliL3Rlcm1pbmZvL3YvdmlwLUgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZjRlOTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmlwLUgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aXAtSHcgYi9saWIvdGVybWluZm8vdi92aXAtSHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDlmMDMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmlwLUh3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmlwLXcgYi9saWIvdGVybWluZm8vdi92aXAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcxMGEyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aXAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZpcDc4MDAtSCBiL2xpYi90ZXJtaW5mby92L3ZpcDc4MDAtSApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNmNGU5Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aXA3ODAwLUgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aXA3ODAwLUh3IGIvbGliL3Rlcm1pbmZvL3YvdmlwNzgwMC1IdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIwOWYwMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aXA3ODAwLUh3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdmlwNzgwMC13IGIvbGliL3Rlcm1pbmZvL3YvdmlwNzgwMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzEwYTJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZpcDc4MDAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Zpc2E1MCBiL2xpYi90ZXJtaW5mby92L3Zpc2E1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEzMWViNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aXNhNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92aXN1YWw2MDMgYi9saWIvdGVybWluZm8vdi92aXN1YWw2MDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZTE2MmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmlzdWFsNjAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3Yvdml0dHkgYi9saWIvdGVybWluZm8vdi92aXR0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxM2JjYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92aXR0eQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZrMTAwIGIvbGliL3Rlcm1pbmZvL3YvdmsxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MDJmNTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdmsxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92cDNhKyBiL2xpYi90ZXJtaW5mby92L3ZwM2ErCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBmODJjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZwM2ErCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnA2MCBiL2xpYi90ZXJtaW5mby92L3ZwNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMDg1OGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnA2MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZwOTAgYi9saWIvdGVybWluZm8vdi92cDkwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWNiYmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3ZwOTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92cmVtb3RlIGIvbGliL3Rlcm1pbmZvL3YvdnJlbW90ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdmZmYxZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92cmVtb3RlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnMxMDAgYi9saWIvdGVybWluZm8vdi92czEwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0OWY2ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92czEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3ZzMTAwLXgxMCBiL2xpYi90ZXJtaW5mby92L3ZzMTAwLXgxMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhYmIyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92czEwMC14MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92c2MgYi9saWIvdGVybWluZm8vdi92c2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZWZmOWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnNjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQtNjEgYi9saWIvdGVybWluZm8vdi92dC02MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiNjBiMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dC02MQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0LXV0ZjggYi9saWIvdGVybWluZm8vdi92dC11dGY4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTE2ZDhmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0LXV0ZjgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMCBiL2xpYi90ZXJtaW5mby92L3Z0MTAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTcxNzZkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDArIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDArCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTA3YjAyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwKworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwK2VucSBiL2xpYi90ZXJtaW5mby92L3Z0MTAwK2VucQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIwNTYyMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMCtlbnEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMCtmbmtleXMgYi9saWIvdGVybWluZm8vdi92dDEwMCtmbmtleXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZGMwZjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDArZm5rZXlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAra2V5cGFkIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAra2V5cGFkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjllNmY3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwK2tleXBhZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwK3Bma2V5cyBiL2xpYi90ZXJtaW5mby92L3Z0MTAwK3Bma2V5cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE5Y2VlZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMCtwZmtleXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC1hbSBiL2xpYi90ZXJtaW5mby92L3Z0MTAwLWFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTcxNzZkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtYm0gYi9saWIvdGVybWluZm8vdi92dDEwMC1ibQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIyYTZkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC1ibQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLWJtLW8gYi9saWIvdGVybWluZm8vdi92dDEwMC1ibS1vCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDQ0ZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLWJtLW8KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC1ib3QtcyBiL2xpYi90ZXJtaW5mby92L3Z0MTAwLWJvdC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODk0MGY4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLWJvdC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmFtIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDM2NTI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLW5hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLW5hbS13IGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmFtLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYWI5NGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmFtLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC1uYXYgYi9saWIvdGVybWluZm8vdi92dDEwMC1uYXYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MjdmMDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmF2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtbmF2LXcgYi9saWIvdGVybWluZm8vdi92dDEwMC1uYXYtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUxZDBhOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC1uYXYtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXB1dHR5IGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcHV0dHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMTljNGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcHV0dHkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC1zIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI1YjdkNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcy1ib3QgYi9saWIvdGVybWluZm8vdi92dDEwMC1zLWJvdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg5NDBmOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC1zLWJvdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXMtdG9wIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcy10b3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNWI3ZDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtcy10b3AKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC10b3AtcyBiL2xpYi90ZXJtaW5mby92L3Z0MTAwLXRvcC1zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjViN2Q2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXRvcC1zCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtdmIgYi9saWIvdGVybWluZm8vdi92dDEwMC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNlMTY5NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXcgYi9saWIvdGVybWluZm8vdi92dDEwMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDk2ZmQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMC13LWFtIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtdy1hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA5NmZkMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC13LWFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtdy1uYW0gYi9saWIvdGVybWluZm8vdi92dDEwMC13LW5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFhYjk0Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMC13LW5hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAwLXctbmF2IGIvbGliL3Rlcm1pbmZvL3YvdnQxMDAtdy1uYXYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MWQwYTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDAtdy1uYXYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMG5hbSBiL2xpYi90ZXJtaW5mby92L3Z0MTAwbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDM2NTI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTAwbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDIgYi9saWIvdGVybWluZm8vdi92dDEwMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlhMzkzYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTAyK2VucSBiL2xpYi90ZXJtaW5mby92L3Z0MTAyK2VucQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1ZDU5ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMitlbnEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEwMi1uc2dyIGIvbGliL3Rlcm1pbmZvL3YvdnQxMDItbnNncgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxOTFkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEwMi1uc2dyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMDItdyBiL2xpYi90ZXJtaW5mby92L3Z0MTAyLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4N2M2NjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMDItdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MTI1IGIvbGliL3Rlcm1pbmZvL3YvdnQxMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwN2I1YjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQxMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDEzMSBiL2xpYi90ZXJtaW5mby92L3Z0MTMxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmJiNGIxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MTMxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQxMzIgYi9saWIvdGVybWluZm8vdi92dDEzMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlNTVlZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDEzMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MjAwIGIvbGliL3Rlcm1pbmZvL3YvdnQyMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2NjZjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDIwMC04IGIvbGliL3Rlcm1pbmZvL3YvdnQyMDAtOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwN2Y3ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDIwMC04CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtOGJpdCBiL2xpYi90ZXJtaW5mby92L3Z0MjAwLThiaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDdmN2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtOGJpdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MjAwLWpzIGIvbGliL3Rlcm1pbmZvL3YvdnQyMDAtanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMWYyOWIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtanMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDIwMC1vbGQgYi9saWIvdGVybWluZm8vdi92dDIwMC1vbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YjIzYzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtb2xkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtdyBiL2xpYi90ZXJtaW5mby92L3Z0MjAwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0YWRmODMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMDAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MjIwIGIvbGliL3Rlcm1pbmZvL3YvdnQyMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2NjZjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDIyMCtrZXlwYWQgYi9saWIvdGVybWluZm8vdi92dDIyMCtrZXlwYWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYjMyZDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMjAra2V5cGFkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQyMjAtOCBiL2xpYi90ZXJtaW5mby92L3Z0MjIwLTgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDdmN2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQyMjAtOAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MjIwLThiaXQgYi9saWIvdGVybWluZm8vdi92dDIyMC04Yml0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjA3ZjdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MjIwLThiaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDIyMC1qcyBiL2xpYi90ZXJtaW5mby92L3Z0MjIwLWpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTFmMjliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MjIwLWpzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQyMjAtbmFtIGIvbGliL3Rlcm1pbmZvL3YvdnQyMjAtbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGUwOTcxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MjIwLW5hbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MjIwLW9sZCBiL2xpYi90ZXJtaW5mby92L3Z0MjIwLW9sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiMjNjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDIyMC1vbGQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDIyMC13IGIvbGliL3Rlcm1pbmZvL3YvdnQyMjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhZGY4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDIyMC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQyMjBkIGIvbGliL3Rlcm1pbmZvL3YvdnQyMjBkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2RhOTE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MjIwZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MzAwIGIvbGliL3Rlcm1pbmZvL3YvdnQzMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzODhlODYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDMwMC1uYW0gYi9saWIvdGVybWluZm8vdi92dDMwMC1uYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlM2YxZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMDAtbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQzMDAtdyBiL2xpYi90ZXJtaW5mby92L3Z0MzAwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNmIwZjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMDAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MzAwLXctbmFtIGIvbGliL3Rlcm1pbmZvL3YvdnQzMDAtdy1uYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYzQwODYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMDAtdy1uYW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDMyMCBiL2xpYi90ZXJtaW5mby92L3Z0MzIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzg4ZTg2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MzIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQzMjAtazMgYi9saWIvdGVybWluZm8vdi92dDMyMC1rMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4NmRlNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDMyMC1rMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MzIwLWszMTEgYi9saWIvdGVybWluZm8vdi92dDMyMC1rMzExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE4NTRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MzIwLWszMTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDMyMC1uYW0gYi9saWIvdGVybWluZm8vdi92dDMyMC1uYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlM2YxZDkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMjAtbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQzMjAtdyBiL2xpYi90ZXJtaW5mby92L3Z0MzIwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNmIwZjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMjAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MzIwLXctbmFtIGIvbGliL3Rlcm1pbmZvL3YvdnQzMjAtdy1uYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYzQwODYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzMjAtdy1uYW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDMyMG5hbSBiL2xpYi90ZXJtaW5mby92L3Z0MzIwbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDE2MWM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0MzIwbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQzMzAgYi9saWIvdGVybWluZm8vdi92dDMzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljODEyMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDMzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0MzQwIGIvbGliL3Rlcm1pbmZvL3YvdnQzNDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YzgxMjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQzNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDQwMCBiL2xpYi90ZXJtaW5mby92L3Z0NDAwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmZlNjA3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0NDAwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQ0MDAtMjQgYi9saWIvdGVybWluZm8vdi92dDQwMC0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZmZTYwNy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDQwMC0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0NDIwIGIvbGliL3Rlcm1pbmZvL3YvdnQ0MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMDc3MTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ0MjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDQyMGYgYi9saWIvdGVybWluZm8vdi92dDQyMGYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NDE5NTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ0MjBmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQ0MjBwYyBiL2xpYi90ZXJtaW5mby92L3Z0NDIwcGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZDY2NzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ0MjBwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0NDIwcGNkb3MgYi9saWIvdGVybWluZm8vdi92dDQyMHBjZG9zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmQ1ZTExLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0NDIwcGNkb3MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDUwIGIvbGliL3Rlcm1pbmZvL3YvdnQ1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU3ZGFkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQ1MGggYi9saWIvdGVybWluZm8vdi92dDUwaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliYjlhMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDUwaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0NTEwIGIvbGliL3Rlcm1pbmZvL3YvdnQ1MTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlOWM0ZTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ1MTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDUxMHBjIGIvbGliL3Rlcm1pbmZvL3YvdnQ1MTBwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGViN2Y3My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDUxMHBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQ1MTBwY2RvcyBiL2xpYi90ZXJtaW5mby92L3Z0NTEwcGNkb3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTZmMmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ1MTBwY2RvcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0NTIgYi9saWIvdGVybWluZm8vdi92dDUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2Y0NjZmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0NTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDUyMCBiL2xpYi90ZXJtaW5mby92L3Z0NTIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjVlZTFmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0NTIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnQ1MjUgYi9saWIvdGVybWluZm8vdi92dDUyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNlMWNmZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdi92dDUyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z0NjEgYi9saWIvdGVybWluZm8vdi92dDYxCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGI2MGIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby92L3Z0NjEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdi92dDYxLjUgYi9saWIvdGVybWluZm8vdi92dDYxLjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0YjYwYjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnQ2MS41CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3YvdnRudCBiL2xpYi90ZXJtaW5mby92L3Z0bnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNzFkNjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnRudAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby92L3Z2MTAwIGIvbGliL3Rlcm1pbmZvL3YvdnYxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MTJiNzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3YvdnYxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93cmVuIGIvbGliL3Rlcm1pbmZvL3cvd3JlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk2NWVkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93cmVuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3JlbncgYi9saWIvdGVybWluZm8vdy93cmVudwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMxYmM0Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93cmVudworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3dzaXJpcyBiL2xpYi90ZXJtaW5mby93L3dzaXJpcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmNzk4ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93c2lyaXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93c3Z0MjUgYi9saWIvdGVybWluZm8vdy93c3Z0MjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTBhMjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3N2dDI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3N2dDI1bSBiL2xpYi90ZXJtaW5mby93L3dzdnQyNW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMDhiOWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3N2dDI1bQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5LTc1YXAgYi9saWIvdGVybWluZm8vdy93eS03NWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjY2OWY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5LTc1YXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eS05OWZndCBiL2xpYi90ZXJtaW5mby93L3d5LTk5Zmd0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmRkMzZiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5LTk5Zmd0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3ktOTlmZ3RhIGIvbGliL3Rlcm1pbmZvL3cvd3ktOTlmZ3RhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmZiNWMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5LTk5Zmd0YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTAwIGIvbGliL3Rlcm1pbmZvL3cvd3kxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OGRjNTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTEwMHEgYi9saWIvdGVybWluZm8vdy93eTEwMHEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NmE2MGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxMDBxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxMjAgYi9saWIvdGVybWluZm8vdy93eTEyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhMTc3OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTEyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTIwLTI1IGIvbGliL3Rlcm1pbmZvL3cvd3kxMjAtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1OTdmZjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxMjAtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTEyMC0yNS13IGIvbGliL3Rlcm1pbmZvL3cvd3kxMjAtMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY3NmMzMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTEyMC0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxMjAtdmIgYi9saWIvdGVybWluZm8vdy93eTEyMC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U0ODUyOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTEyMC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTIwLXcgYi9saWIvdGVybWluZm8vdy93eTEyMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDg1Yzg4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTIwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTEyMC13LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kxMjAtdy12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFmMDhkOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTEyMC13LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxMjAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3kxMjAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWYwOGQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTIwLXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTUwIGIvbGliL3Rlcm1pbmZvL3cvd3kxNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YTE3NzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE1MC0yNSBiL2xpYi90ZXJtaW5mby93L3d5MTUwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTk3ZmY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTUwLTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAtMjUtdyBiL2xpYi90ZXJtaW5mby93L3d5MTUwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NzZjMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAtMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTUwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kxNTAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNDg1MjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE1MC13IGIvbGliL3Rlcm1pbmZvL3cvd3kxNTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4NWM4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE1MC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAtdy12YiBiL2xpYi90ZXJtaW5mby93L3d5MTUwLXctdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZjA4ZDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNTAtdy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTYwIGIvbGliL3Rlcm1pbmZvL3cvd3kxNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NTAyODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE2MC0yNSBiL2xpYi90ZXJtaW5mby93L3d5MTYwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGIyNmJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTYwLTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtMjUtdyBiL2xpYi90ZXJtaW5mby93L3d5MTYwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNzE2YmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTYwLTQyIGIvbGliL3Rlcm1pbmZvL3cvd3kxNjAtNDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OGUyNzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtNDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE2MC00Mi13IGIvbGliL3Rlcm1pbmZvL3cvd3kxNjAtNDItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMwY2IyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE2MC00Mi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtNDMgYi9saWIvdGVybWluZm8vdy93eTE2MC00MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmYjgyMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE2MC00MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTYwLTQzLXcgYi9saWIvdGVybWluZm8vdy93eTE2MC00My13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmMwYTFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTYwLTQzLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE2MC10ZWsgYi9saWIvdGVybWluZm8vdy93eTE2MC10ZWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MzVkNjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtdGVrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtdmIgYi9saWIvdGVybWluZm8vdy93eTE2MC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2YTE5Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE2MC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTYwLXcgYi9saWIvdGVybWluZm8vdy93eTE2MC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjI3MWRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTYwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE2MC13LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kxNjAtdy12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZkNjY4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE2MC13LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxNjAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3kxNjAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ2Njg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTYwLXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTg1IGIvbGliL3Rlcm1pbmZvL3cvd3kxODUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OGZiM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxODUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE4NS0yNCBiL2xpYi90ZXJtaW5mby93L3d5MTg1LTI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjgzZTdlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTg1LTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kxODUtdmIgYi9saWIvdGVybWluZm8vdy93eTE4NS12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY5YzhmZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTE4NS12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MTg1LXcgYi9saWIvdGVybWluZm8vdy93eTE4NS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjM3NmY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MTg1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTE4NS13dmIgYi9saWIvdGVybWluZm8vdy93eTE4NS13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzFjN2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kxODUtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMCBiL2xpYi90ZXJtaW5mby93L3d5MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OWM2ZDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzAtbWMgYi9saWIvdGVybWluZm8vdy93eTMwLW1jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2U0YmQxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzMC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5MmEzNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMwLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUgYi9saWIvdGVybWluZm8vdy93eTMyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRhOTU4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTI1IGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjlkM2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMyNS0yNXcgYi9saWIvdGVybWluZm8vdy93eTMyNS0yNXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkOTA3MTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtMjV3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDIgYi9saWIvdGVybWluZm8vdy93eTMyNS00MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3ZWFiZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNS00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTQydyBiL2xpYi90ZXJtaW5mby93L3d5MzI1LTQydwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNkZjZmMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNS00MncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMyNS00MnctdmIgYi9saWIvdGVybWluZm8vdy93eTMyNS00MnctdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YTk0MmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDJ3LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDJ3dmIgYi9saWIvdGVybWluZm8vdy93eTMyNS00Mnd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVhOTQyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNS00Mnd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTQzIGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMDRlMmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMyNS00M3cgYi9saWIvdGVybWluZm8vdy93eTMyNS00M3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzhmZDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDN3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDN3LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDN3LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjgxMWM3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTQzdy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTQzd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDN3dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ODExYzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtNDN3dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMyNS04MCBiL2xpYi90ZXJtaW5mby93L3d5MzI1LTgwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTY5ZDNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzI1LTgwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtdmIgYi9saWIvdGVybWluZm8vdy93eTMyNS12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI1NDg0OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNS12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1LXcgYi9saWIvdGVybWluZm8vdy93eTMyNS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjE5NWRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTMyNS13LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtdy12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwYzE0NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNS13LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzMjUtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzMjUtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzBjMTQ1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzI1LXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzI1dy0yNCBiL2xpYi90ZXJtaW5mby93L3d5MzI1dy0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIxOTVkZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTMyNXctMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTM1MCBiL2xpYi90ZXJtaW5mby93L3d5MzUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2E0MWM2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzNTAtdmIgYi9saWIvdGVybWluZm8vdy93eTM1MC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5MmJiNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTM1MC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzUwLXcgYi9saWIvdGVybWluZm8vdy93eTM1MC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMThjMjBhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzUwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTM1MC13dmIgYi9saWIvdGVybWluZm8vdy93eTM1MC13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMTI3MGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzNTAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAgYi9saWIvdGVybWluZm8vdy93eTM3MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkZjBhOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTM3MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzcwLTEwMWsgYi9saWIvdGVybWluZm8vdy93eTM3MC0xMDFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWRmMGE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzcwLTEwMWsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTM3MC0xMDVrIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtMTA1awpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4MDRjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTM3MC0xMDVrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAtRVBDIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtRVBDCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjBmM2Y4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzcwLUVQQworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzcwLW5rIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtbmsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYzg1ZWEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAtbmsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTM3MC1ydiBiL2xpYi90ZXJtaW5mby93L3d5MzcwLXJ2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGYzYjIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzcwLXJ2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAtdGVrIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtdGVrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzNjNThlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzcwLXRlaworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5MzcwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYWNkNTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTM3MC13IGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc3NTRmOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTM3MC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3kzNzAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3kzNzAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjg5ODA2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5MzcwLXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTAgYi9saWIvdGVybWluZm8vdy93eTUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmQxYmQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUwLW1jIGIvbGliL3Rlcm1pbmZvL3cvd3k1MC1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJkYzU0Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUwLW1jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MC12YiBiL2xpYi90ZXJtaW5mby93L3d5NTAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMzhlMGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTAtdyBiL2xpYi90ZXJtaW5mby93L3d5NTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5NTkxMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUwLXd2YiBiL2xpYi90ZXJtaW5mby93L3d5NTAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmNkYzliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAgYi9saWIvdGVybWluZm8vdy93eTUyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJkODRkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTI0IGIvbGliL3Rlcm1pbmZvL3cvd3k1MjAtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZjBhN2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC0zNiBiL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDY1ODAyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtMzZwYyBiL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2cGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDE0M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtMzZwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2dyBiL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI1ZTY3Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC0zNncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC0zNndwYyBiL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2d3BjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTdjZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTM2d3BjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtNDggYi9saWIvdGVybWluZm8vdy93eTUyMC00OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmZTgxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC00OAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTQ4cGMgYi9saWIvdGVybWluZm8vdy93eTUyMC00OHBjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWY2ZDFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTIwLTQ4cGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC00OHcgYi9saWIvdGVybWluZm8vdy93eTUyMC00OHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MWEwZjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtNDh3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtNDh3cGMgYi9saWIvdGVybWluZm8vdy93eTUyMC00OHdwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM4MzU1OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC00OHdwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLWVwYyBiL2xpYi90ZXJtaW5mby93L3d5NTIwLWVwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVhZjEzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC1lcGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC1lcGMtMjQgYi9saWIvdGVybWluZm8vdy93eTUyMC1lcGMtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODk0NmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjIyNDY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTIwLWVwYy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLWVwYy13IGIvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OTU2YTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC1lcGMtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3k1MjAtZXBjLXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI5Y2ZjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC1lcGMtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtdmIgYi9saWIvdGVybWluZm8vdy93eTUyMC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYyMjY1MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTUyMC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NTIwLXcgYi9saWIvdGVybWluZm8vdy93eTUyMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWExZTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NTIwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTUyMC13dmIgYi9saWIvdGVybWluZm8vdy93eTUyMC13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNmYwOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k1MjAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k2MCBiL2xpYi90ZXJtaW5mby93L3d5NjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NTIyZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NjAtMjUgYi9saWIvdGVybWluZm8vdy93eTYwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U4NjcyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NjAtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTYwLTI1LXcgYi9saWIvdGVybWluZm8vdy93eTYwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4N2FhYTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k2MC0zMTZYIGIvbGliL3Rlcm1pbmZvL3cvd3k2MC0zMTZYCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRjYTE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NjAtMzE2WAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NjAtNDIgYi9saWIvdGVybWluZm8vdy93eTYwLTQyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDZiNGY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NjAtNDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTYwLTQyLXcgYi9saWIvdGVybWluZm8vdy93eTYwLTQyLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTE3YzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC00Mi13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k2MC00MyBiL2xpYi90ZXJtaW5mby93L3d5NjAtNDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3YzA4NGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC00MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NjAtNDMtdyBiL2xpYi90ZXJtaW5mby93L3d5NjAtNDMtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjMTk2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTYwLTQzLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTYwLUFUIGIvbGliL3Rlcm1pbmZvL3cvd3k2MC1BVApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3YjNhMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTYwLUFUCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k2MC1QQyBiL2xpYi90ZXJtaW5mby93L3d5NjAtUEMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NDQ3MTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC1QQworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NjAtdmIgYi9saWIvdGVybWluZm8vdy93eTYwLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTE0YjIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NjAtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTYwLXcgYi9saWIvdGVybWluZm8vdy93eTYwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZmExZTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k2MC13LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3k2MC13LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQyNjQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NjAtdy12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NjAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3k2MC13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNDI2NDYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k2MC13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTc1IGIvbGliL3Rlcm1pbmZvL3cvd3k3NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0ZjEwMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTc1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k3NS1tYyBiL2xpYi90ZXJtaW5mby93L3d5NzUtbWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMzE4YWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k3NS1tYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NzUtdmIgYi9saWIvdGVybWluZm8vdy93eTc1LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzE2NTg0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5NzUtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTc1LXcgYi9saWIvdGVybWluZm8vdy93eTc1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YWU1NWMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k3NS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k3NS13dmIgYi9saWIvdGVybWluZm8vdy93eTc1LXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVlYTdmYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTc1LXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5NzVhcCBiL2xpYi90ZXJtaW5mby93L3d5NzVhcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY2NjlmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTc1YXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTg1IGIvbGliL3Rlcm1pbmZvL3cvd3k4NQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYzYzUwNS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTg1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k4NS04Yml0IGIvbGliL3Rlcm1pbmZvL3cvd3k4NS04Yml0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzg2NzNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5ODUtOGJpdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5ODUtdmIgYi9saWIvdGVybWluZm8vdy93eTg1LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg4YTk5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5ODUtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTg1LXcgYi9saWIvdGVybWluZm8vdy93eTg1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNzBlYzIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k4NS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k4NS13dmIgYi9saWIvdGVybWluZm8vdy93eTg1LXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljMTAxMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTg1LXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5OTktYW5zaSBiL2xpYi90ZXJtaW5mby93L3d5OTktYW5zaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ4YjllYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5LWFuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTk5YS1hbnNpIGIvbGliL3Rlcm1pbmZvL3cvd3k5OWEtYW5zaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNjMGRjYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5YS1hbnNpCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k5OWYgYi9saWIvdGVybWluZm8vdy93eTk5ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JkZDM2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5ZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5OTlmYSBiL2xpYi90ZXJtaW5mby93L3d5OTlmYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZmYjVjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5ZmEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTk5Zmd0IGIvbGliL3Rlcm1pbmZvL3cvd3k5OWZndApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JkZDM2Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Zmd0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k5OWZndGEgYi9saWIvdGVybWluZm8vdy93eTk5Zmd0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZmYjVjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Zmd0YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5OTlndCBiL2xpYi90ZXJtaW5mby93L3d5OTlndApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWViNDNlYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Z3QKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTk5Z3QtMjUgYi9saWIvdGVybWluZm8vdy93eTk5Z3QtMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZTFiMjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LTI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LTI1LXcgYi9saWIvdGVybWluZm8vdy93eTk5Z3QtMjUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU2ODU0Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Z3QtMjUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5OTlndC10ZWsgYi9saWIvdGVybWluZm8vdy93eTk5Z3QtdGVrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzhlZGIyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5OTlndC10ZWsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTk5Z3QtdmIgYi9saWIvdGVybWluZm8vdy93eTk5Z3QtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNzA2YTMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LXcgYi9saWIvdGVybWluZm8vdy93eTk5Z3QtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk4MzFjYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Z3QtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5OTlndC13LXZiIGIvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LXctdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmY2IzODAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LXctdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eTk5Z3Qtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3k5OWd0LXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjYjM4MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eTk5Z3Qtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZS0zMjUgYi9saWIvdGVybWluZm8vdy93eXNlLTMyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2OWQzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlLTMyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UtNzVhcCBiL2xpYi90ZXJtaW5mby93L3d5c2UtNzVhcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY2NjlmOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlLTc1YXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlLXZwIGIvbGliL3Rlcm1pbmZvL3cvd3lzZS12cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMyN2U0YS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlLXZwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTEyMCBiL2xpYi90ZXJtaW5mby93L3d5c2UxMjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YTE3NzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTEyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtMjUgYi9saWIvdGVybWluZm8vdy93eXNlMTIwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTk3ZmY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTIwLTI1LXcgYi9saWIvdGVybWluZm8vdy93eXNlMTIwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NzZjMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTEyMC0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTEyMC12YiBiL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNDg1MjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTEyMC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtdyBiL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4NWM4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTIwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTIwLXd2YiBiL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWYwOGQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxMjAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MCBiL2xpYi90ZXJtaW5mby93L3d5c2UxNTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YTE3NzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxNTAtMjUgYi9saWIvdGVybWluZm8vdy93eXNlMTUwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTk3ZmY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxNTAtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTUwLTI1LXcgYi9saWIvdGVybWluZm8vdy93eXNlMTUwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NzZjMzMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MC0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MC12YiBiL2xpYi90ZXJtaW5mby93L3d5c2UxNTAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNDg1MjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxNTAtdyBiL2xpYi90ZXJtaW5mby93L3d5c2UxNTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4NWM4OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTUwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTUwLXctdmIgYi9saWIvdGVybWluZm8vdy93eXNlMTUwLXctdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZjA4ZDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE1MC13LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MCBiL2xpYi90ZXJtaW5mby93L3d5c2UxNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NTAyODUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtMjUgYi9saWIvdGVybWluZm8vdy93eXNlMTYwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGIyNmJhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTYwLTI1LXcgYi9saWIvdGVybWluZm8vdy93eXNlMTYwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNzE2YmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC0yNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC00MiBiL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtNDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OGUyNzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtNDItdyBiL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtNDItdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMwY2IyYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTYwLTQyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTYwLTQzIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC00MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmYjgyMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTYwLTQzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC00My13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC00My13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmMwYTFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtNDMtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtdmIgYi9saWIvdGVybWluZm8vdy93eXNlMTYwLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjZhMTliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxNjAtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTYwLXcgYi9saWIvdGVybWluZm8vdy93eXNlMTYwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMjcxZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE2MC13dmIgYi9saWIvdGVybWluZm8vdy93eXNlMTYwLXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZkNjY4Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTYwLXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxODUgYi9saWIvdGVybWluZm8vdy93eXNlMTg1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOThmYjNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxODUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTg1LTI0IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTE4NS0yNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY4M2U3ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTg1LTI0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE4NS12YiBiL2xpYi90ZXJtaW5mby93L3d5c2UxODUtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmOWM4ZmYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTE4NS12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UxODUtdyBiL2xpYi90ZXJtaW5mby93L3d5c2UxODUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzNzZmNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMTg1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMTg1LXd2YiBiL2xpYi90ZXJtaW5mby93L3d5c2UxODUtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjMxYzdiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UxODUtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMwIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTljNmQ2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzMC1tYyBiL2xpYi90ZXJtaW5mby93L3d5c2UzMC1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNlNGJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzAtdmIgYi9saWIvdGVybWluZm8vdy93eXNlMzAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOTJhMzUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMwLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNSBiL2xpYi90ZXJtaW5mby93L3d5c2UzMjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YTk1OGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtMjUgYi9saWIvdGVybWluZm8vdy93eXNlMzI1LTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTY5ZDNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtMjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzI1LTI1dyBiL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtMjV3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDkwNzE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtMjV3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00MiBiL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtNDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViN2VhYmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtNDJ3IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00MncKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZGY2ZjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00MncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzI1LTQzIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMwNGUyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzI1LTQzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS00M3cgYi9saWIvdGVybWluZm8vdy93eXNlMzI1LTQzdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3OGZkMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzI1LTQzdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtdmIgYi9saWIvdGVybWluZm8vdy93eXNlMzI1LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjU0ODQ4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzMjUtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzI1LXcgYi9saWIvdGVybWluZm8vdy93eXNlMzI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMTk1ZGYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS13CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTMyNS13dmIgYi9saWIvdGVybWluZm8vdy93eXNlMzI1LXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwYzE0NS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzI1LXd2YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzNTAgYi9saWIvdGVybWluZm8vdy93eXNlMzUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2E0MWM2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzNTAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzUwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTM1MC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5MmJiNi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzUwLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTM1MC13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTM1MC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMThjMjBhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2UzNTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2UzNTAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTM1MC13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMTI3MGEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTM1MC13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlMzcwIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTM3MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkZjBhOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlMzcwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUwIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmQxYmQ3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MC1tYyBiL2xpYi90ZXJtaW5mby93L3d5c2U1MC1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJkYzU0Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTAtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTAtdmIgYi9saWIvdGVybWluZm8vdy93eXNlNTAtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMzhlMGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUwLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUwLXcgYi9saWIvdGVybWluZm8vdy93eXNlNTAtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5NTkxMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MC13dmIgYi9saWIvdGVybWluZm8vdy93eXNlNTAtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmNkYzliLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MC13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJkODRkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC0yNCBiL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZjBhN2YuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtMzYgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDY1ODAyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtMzYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2cGMgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2cGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDE0M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC0zNnBjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC0zNncgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI1ZTY3Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2dworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtMzZ3cGMgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLTM2d3BjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTdjZmY1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtMzZ3cGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTQ4IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmZTgxOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OHBjIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OHBjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWY2ZDFlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtNDhwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtNDh3IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OHcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MWEwZjkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OHcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTQ4d3BjIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC00OHdwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM4MzU1OC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLTQ4d3BjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC1lcGMgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLWVwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVhZjEzZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLWVwYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtZXBjLXcgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLWVwYy13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTk1NmEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtZXBjLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwLXAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC1wLXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI5Y2ZjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLXAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC1wYy0yNCBiL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtcGMtMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODk0NmIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC1wYy0yNAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtcGMtdmIgYi9saWIvdGVybWluZm8vdy93eXNlNTIwLXBjLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjIyNDY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtcGMtdmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNTIwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC12YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYyMjY1MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNTIwLXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWExZTRlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U1MjAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC13dmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNmYwOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTUyMC13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNjAgYi9saWIvdGVybWluZm8vdy93eXNlNjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NTIyZWQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTI1IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U4NjcyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC0yNS13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTI1LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4N2FhYTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNjAtMzE2WCBiL2xpYi90ZXJtaW5mby93L3d5c2U2MC0zMTZYCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRjYTE5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC0zMTZYCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQyIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDZiNGY2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC00MgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC00Mi13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQyLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTE3YzguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQyLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNjAtNDMgYi9saWIvdGVybWluZm8vdy93eXNlNjAtNDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3YzA4NGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLTQzLXcgYi9saWIvdGVybWluZm8vdy93eXNlNjAtNDMtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjMTk2Mi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNjAtNDMtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC1BVCBiL2xpYi90ZXJtaW5mby93L3d5c2U2MC1BVApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3YjNhMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNjAtQVQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNjAtUEMgYi9saWIvdGVybWluZm8vdy93eXNlNjAtUEMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NDQ3MTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLVBDCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLXZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTE0YjIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC12YgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U2MC13IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZmExZTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNjAtd3ZiIGIvbGliL3Rlcm1pbmZvL3cvd3lzZTYwLXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0MjY0Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNjAtd3ZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTc1IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTc1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTRmMTAwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U3NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U3NS1tYyBiL2xpYi90ZXJtaW5mby93L3d5c2U3NS1tYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzMThhZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNzUtbWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNzUtdmIgYi9saWIvdGVybWluZm8vdy93eXNlNzUtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MTY1ODQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTc1LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTc1LXcgYi9saWIvdGVybWluZm8vdy93eXNlNzUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhZTU1Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlNzUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U3NS13dmIgYi9saWIvdGVybWluZm8vdy93eXNlNzUtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWVhN2ZhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U3NS13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlNzVhcCBiL2xpYi90ZXJtaW5mby93L3d5c2U3NWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjY2OWY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U3NWFwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTg1IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTg1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjNjNTA1Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U4NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U4NS04Yml0IGIvbGliL3Rlcm1pbmZvL3cvd3lzZTg1LThiaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjODY3M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTg1LThiaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlODUtdmIgYi9saWIvdGVybWluZm8vdy93eXNlODUtdmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ODhhOTkuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTg1LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTg1LXcgYi9saWIvdGVybWluZm8vdy93eXNlODUtdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3MGVjMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlODUtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U4NS13dmIgYi9saWIvdGVybWluZm8vdy93eXNlODUtd3ZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWMxMDEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U4NS13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlOTlndCBiL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWI0M2VjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTk5Z3QtMjUgYi9saWIvdGVybWluZm8vdy93eXNlOTlndC0yNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBlMWIyMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlOTlndC0yNQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LTI1LXcgYi9saWIvdGVybWluZm8vdy93eXNlOTlndC0yNS13CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTY4NTRmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LTI1LXcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vdy93eXNlOTlndC12YiBiL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LXZiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzcwNmEzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LXZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3cvd3lzZTk5Z3QtdyBiL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LXcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ODMxY2IuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3cvd3lzZTk5Z3QtdworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LXd2YiBiL2xpYi90ZXJtaW5mby93L3d5c2U5OWd0LXd2YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjYjM4MC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vdy93eXNlOTlndC13dmIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94MTB0ZXJtIGIvbGliL3Rlcm1pbmZvL3gveDEwdGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhYmIyZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94MTB0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveDE3MDAgYi9saWIvdGVybWluZm8veC94MTcwMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhMTJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94MTcwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3gxNzAwLWxtIGIvbGliL3Rlcm1pbmZvL3gveDE3MDAtbG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzYwMTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveDE3MDAtbG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94MTcyMCBiL2xpYi90ZXJtaW5mby94L3gxNzIwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGI4MDk3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3gxNzIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveDE3NTAgYi9saWIvdGVybWluZm8veC94MTc1MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiODA5Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94MTc1MAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3g2OGsgYi9saWIvdGVybWluZm8veC94NjhrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDdjZDAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3g2OGsKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94NjhrLWl0ZSBiL2xpYi90ZXJtaW5mby94L3g2OGstaXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDdjZDAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3g2OGstaXRlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveDgyMCBiL2xpYi90ZXJtaW5mby94L3g4MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOWEzZGIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveDgyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hka3UgYi9saWIvdGVybWluZm8veC94ZGt1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmYxZjcwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hka3UKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94ZW5peCBiL2xpYi90ZXJtaW5mby94L3hlbml4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmUzMDU2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hlbml4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveGVyb3ggYi9saWIvdGVybWluZm8veC94ZXJveApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdhMTJkMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94ZXJveAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hlcm94LWxtIGIvbGliL3Rlcm1pbmZvL3gveGVyb3gtbG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWYwMDcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveGVyb3gtbG0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94ZXJveDE3MjAgYi9saWIvdGVybWluZm8veC94ZXJveDE3MjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjgwOTcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveGVyb3gxNzIwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveGVyb3g4MjAgYi9saWIvdGVybWluZm8veC94ZXJveDgyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5YTNkYi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94ZXJveDgyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hmY2UgYi9saWIvdGVybWluZm8veC94ZmNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWU3MzhiLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hmY2UKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94aXRlcm0gYi9saWIvdGVybWluZm8veC94aXRlcm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOGY2YmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveGl0ZXJtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveGw4MyBiL2xpYi90ZXJtaW5mby94L3hsODMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZTFmOWYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveGw4MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYyBiL2xpYi90ZXJtaW5mby94L3hudXBwYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDViMmZiOS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrMTAweDM3IGIvbGliL3Rlcm1pbmZvL3gveG51cHBjKzEwMHgzNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhmMTgwZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMrMTAweDM3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzExMngzNyBiL2xpYi90ZXJtaW5mby94L3hudXBwYysxMTJ4MzcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNzczMjYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzExMngzNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYysxMjh4NDAgYi9saWIvdGVybWluZm8veC94bnVwcGMrMTI4eDQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDcwMjc0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYysxMjh4NDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrMTI4eDQ4IGIvbGliL3Rlcm1pbmZvL3gveG51cHBjKzEyOHg0OApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4MDkxYS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMrMTI4eDQ4CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzE0NHg0OCBiL2xpYi90ZXJtaW5mby94L3hudXBwYysxNDR4NDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YmY5M2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzE0NHg0OAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYysxNjB4NjQgYi9saWIvdGVybWluZm8veC94bnVwcGMrMTYweDY0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc0YzA5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYysxNjB4NjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrMjAweDY0IGIvbGliL3Rlcm1pbmZvL3gveG51cHBjKzIwMHg2NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNiZGFhMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMrMjAweDY0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzIwMHg3NSBiL2xpYi90ZXJtaW5mby94L3hudXBwYysyMDB4NzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZDgyNTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzIwMHg3NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYysyNTZ4OTYgYi9saWIvdGVybWluZm8veC94bnVwcGMrMjU2eDk2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzk1ZDQwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYysyNTZ4OTYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrODB4MjUgYi9saWIvdGVybWluZm8veC94bnVwcGMrODB4MjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NDg0MjEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzgweDI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjKzgweDMwIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjKzgweDMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNmYjgxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYys4MHgzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYys5MHgzMCBiL2xpYi90ZXJtaW5mby94L3hudXBwYys5MHgzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM1MTNjOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMrOTB4MzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrYiBiL2xpYi90ZXJtaW5mby94L3hudXBwYytiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWVhODVjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYytiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjK2Jhc2ljIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjK2Jhc2ljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzMxOTYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYytiYXNpYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYytjIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjK2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNWRhOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjK2MKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMrZiBiL2xpYi90ZXJtaW5mby94L3hudXBwYytmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGMwYzczLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYytmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjK2YyIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjK2YyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTgxZjk2Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYytmMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMDB4MzcgYi9saWIvdGVybWluZm8veC94bnVwcGMtMTAweDM3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjAyNjg3Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMDB4MzcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMTAweDM3LW0gYi9saWIvdGVybWluZm8veC94bnVwcGMtMTAweDM3LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNzgyNzAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTEwMHgzNy1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTExMngzNyBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMTJ4MzcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhODA0MDguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTExMngzNworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMTJ4MzctbSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMTJ4MzctbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiYjY1Zi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMTEyeDM3LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMTI4eDQwIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTEyOHg0MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ3MWFjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMTI4eDQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTEyOHg0MC1tIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTEyOHg0MC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2MzMDNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMjh4NDAtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMjh4NDggYi9saWIvdGVybWluZm8veC94bnVwcGMtMTI4eDQ4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjQyNWNhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xMjh4NDgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMTI4eDQ4LW0gYi9saWIvdGVybWluZm8veC94bnVwcGMtMTI4eDQ4LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhODg4YTYuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTEyOHg0OC1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTE0NHg0OCBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0xNDR4NDgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNzU1N2EuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTE0NHg0OAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xNDR4NDgtbSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0xNDR4NDgtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcwMGExMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMTQ0eDQ4LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMTYweDY0IGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTE2MHg2NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyM2I4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMTYweDY0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTE2MHg2NC1tIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTE2MHg2NC1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGE0ODcyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0xNjB4NjQtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0yMDB4NjQgYi9saWIvdGVybWluZm8veC94bnVwcGMtMjAweDY0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGUzZWYxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0yMDB4NjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMjAweDY0LW0gYi9saWIvdGVybWluZm8veC94bnVwcGMtMjAweDY0LW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwN2IxMjQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTIwMHg2NC1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTIwMHg3NSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0yMDB4NzUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4OWExMDQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTIwMHg3NQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0yMDB4NzUtbSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy0yMDB4NzUtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNhNmFkYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMjAweDc1LW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtMjU2eDk2IGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTI1Nng5NgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRkNWRhNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtMjU2eDk2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTI1Nng5Ni1tIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTI1Nng5Ni1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmFmNjEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy0yNTZ4OTYtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgyNSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgyNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZmZThlNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtODB4MjUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtODB4MjUtbSBiL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgyNS1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzRlNDgwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgyNS1tCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTgweDMwIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTgweDMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTllZWFkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgzMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy04MHgzMC1tIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLTgweDMwLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzZjJhYTIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTgweDMwLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtOTB4MzAgYi9saWIvdGVybWluZm8veC94bnVwcGMtOTB4MzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NjE0MGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTkweDMwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLTkweDMwLW0gYi9saWIvdGVybWluZm8veC94bnVwcGMtOTB4MzAtbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU4MTg2MS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtOTB4MzAtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy1iIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLWIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZGZjYTUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLWIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtZiBiL2xpYi90ZXJtaW5mby94L3hudXBwYy1mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTUyYjEwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy1mCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLWYyIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLWYyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWViZGRjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3hudXBwYy1mMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy1tIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDk2ZTguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94bnVwcGMtbS1iIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0tYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzNjU4Yy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94bnVwcGMtbS1iCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0tZiBiL2xpYi90ZXJtaW5mby94L3hudXBwYy1tLWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YjBhM2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0tZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3hudXBwYy1tLWYyIGIvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0tZjIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZmViYzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveG51cHBjLW0tZjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGFsayBiL2xpYi90ZXJtaW5mby94L3h0YWxrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGIzZWIzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0YWxrCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0gYi9saWIvdGVybWluZm8veC94dGVybQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjOTg4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtKzI1NmNvbG9yIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rMjU2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNTg1MjIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rMjU2Y29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybSs4OGNvbG9yIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rODhjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE3M2VjOC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybSs4OGNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rYXBwIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rYXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGY3YzM5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK2FwcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK2VkaXQgYi9saWIvdGVybWluZm8veC94dGVybStlZGl0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzcxYWQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK2VkaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybStub2FwcCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK25vYXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDg4MTQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK25vYXBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGMrZWRpdCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjK2VkaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NzI0MzcuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGMrZWRpdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjYzAgYi9saWIvdGVybWluZm8veC94dGVybStwY2MwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjc3NDllLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjYzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybStwY2MxIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNjMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM3MzEyYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybStwY2MxCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNjMiBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjYzIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NjIxOGQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNjMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjYzMgYi9saWIvdGVybWluZm8veC94dGVybStwY2MzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODBkYTgyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjYzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybStwY2UyIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNlMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhMTEyMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybStwY2UyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNmMCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjZjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOTFiNjMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNmMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjZjIgYi9saWIvdGVybWluZm8veC94dGVybStwY2YyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDY5MWNkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3BjZjIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybStwY2ZrZXlzIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rcGNma2V5cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVlNDc2ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybStwY2ZrZXlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcjZmMiBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK3I2ZjIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNDg0N2UuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rcjZmMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtK3NsIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0rc2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNjIzZGUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rc2wKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybStzbC10d20gYi9saWIvdGVybWluZm8veC94dGVybStzbC10d20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNGU5YTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rc2wtdHdtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rdnQrZWRpdCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtK3Z0K2VkaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MzVjYjguLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0rdnQrZWRpdAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLTEwMDIgYi9saWIvdGVybWluZm8veC94dGVybS0xMDAyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWQzYWQzLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLTEwMDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS0xMDAzIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0tMTAwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NlMTQ4My4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS0xMDAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tMTZjb2xvciBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLTE2Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYmYxNmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tMTZjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLTI0IGIvbGliL3Rlcm1pbmZvL3gveHRlcm0tMjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDlmNmQuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tMjQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS0yNTZjb2xvciBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLTI1NmNvbG9yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JlN2VmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLTI1NmNvbG9yCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tODhjb2xvciBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLTg4Y29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMGUyN2QuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tODhjb2xvcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLThiaXQgYi9saWIvdGVybWluZm8veC94dGVybS04Yml0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWYyZWJkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLThiaXQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS1iYXNpYyBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLWJhc2ljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjJiY2JmLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLWJhc2ljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tYm9sZCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLWJvbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNGYwZDAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tYm9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLWNvbG9yIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0tY29sb3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmYyZTEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tY29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS1ocCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLWhwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDk1MjM0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLWhwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tbmV3IGIvbGliL3Rlcm1pbmZvL3gveHRlcm0tbmV3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjQwOGE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLW5ldworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLW5pYyBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLW5pYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxNTY5ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS1uaWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS1ub2FwcCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLW5vYXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDY0NzY0Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLW5vYXBwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tb2xkIGIvbGliL3Rlcm1pbmZvL3gveHRlcm0tb2xkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDIyZjBjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLW9sZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXBjb2xvciBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXBjb2xvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxZGJjMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS1wY29sb3IKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS1yNSBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXI1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDQ0OWI4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXI1CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tcjYgYi9saWIvdGVybWluZm8veC94dGVybS1yNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyMmYwYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS1yNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXNjbyBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXNjbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI0ZjY1NC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS1zY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS1zdW4gYi9saWIvdGVybWluZm8veC94dGVybS1zdW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NDgxMDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0tdnQyMjAgYi9saWIvdGVybWluZm8veC94dGVybS12dDIyMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEzMDA2Ny4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS12dDIyMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXZ0NTIgYi9saWIvdGVybWluZm8veC94dGVybS12dDUyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDg4ZjlhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXZ0NTIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXYzMiBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjMyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmM0YjMwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjMyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0teGY4Ni12MzMgYi9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXYzMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5OTczZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXYzMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjMzMyBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjMzMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQxZGE1Yi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXYzMzMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXY0MCBiL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTg5MTY5Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjQwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0teGY4Ni12NDMgYi9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXY0MwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3ZDE5ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS14Zjg2LXY0MworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtLXhmODYtdjQ0IGIvbGliL3Rlcm1pbmZvL3gveHRlcm0teGY4Ni12NDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0YzU5MDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm0teGY4Ni12NDQKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybS14ZnJlZTg2IGIvbGliL3Rlcm1pbmZvL3gveHRlcm0teGZyZWU4NgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3NDNhYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS14ZnJlZTg2CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm0teGkgYi9saWIvdGVybWluZm8veC94dGVybS14aQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyMTJkZi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybS14aQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtMSBiL2xpYi90ZXJtaW5mby94L3h0ZXJtMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThmNWMzMy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybTEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybWMgYi9saWIvdGVybWluZm8veC94dGVybWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMjg3NGMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHRlcm1jCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHRlcm1tIGIvbGliL3Rlcm1pbmZvL3gveHRlcm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTc3MGE4Li4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby94L3h0ZXJtbQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby94L3h0ZXJtcyBiL2xpYi90ZXJtaW5mby94L3h0ZXJtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0OWY2ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybXMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8veC94dGVybXMtc3VuIGIvbGliL3Rlcm1pbmZvL3gveHRlcm1zLXN1bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwZWIyMi4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8veC94dGVybXMtc3VuCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3gveHdzaCBiL2xpYi90ZXJtaW5mby94L3h3c2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NmM2MDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3gveHdzaAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3otMTAwIGIvbGliL3Rlcm1pbmZvL3ovei0xMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MmVjYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovei0xMDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96LTEwMGJ3IGIvbGliL3Rlcm1pbmZvL3ovei0xMDBidwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ODY2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96LTEwMGJ3CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejEwMCBiL2xpYi90ZXJtaW5mby96L3oxMDAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MmVjYWUuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovejEwMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3oxMDBidyBiL2xpYi90ZXJtaW5mby96L3oxMDBidwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ODY2ZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MTAwYncKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96MTEwIGIvbGliL3Rlcm1pbmZvL3ovejExMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcyZWNhZS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MTEwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejExMGJ3IGIvbGliL3Rlcm1pbmZvL3ovejExMGJ3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDk4NjZlLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3oxMTBidworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3oxOSBiL2xpYi90ZXJtaW5mby96L3oxOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU5M2U5Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MTkKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96MjkgYi9saWIvdGVybWluZm8vei96MjkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjOGExZmMuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovejI5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejI5YSBiL2xpYi90ZXJtaW5mby96L3oyOWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YjMwOTAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovejI5YQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3oyOWEta2MtYmMgYi9saWIvdGVybWluZm8vei96MjlhLWtjLWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWIzMDkwLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3oyOWEta2MtYmMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96MjlhLWtjLXVjIGIvbGliL3Rlcm1pbmZvL3ovejI5YS1rYy11YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcxYzhiNC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MjlhLWtjLXVjCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejI5YS1ua2MtYmMgYi9saWIvdGVybWluZm8vei96MjlhLW5rYy1iYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY2NTEyZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MjlhLW5rYy1iYworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3oyOWEtbmtjLXVjIGIvbGliL3Rlcm1pbmZvL3ovejI5YS1ua2MtdWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNmU4MDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovejI5YS1ua2MtdWMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96MjliIGIvbGliL3Rlcm1pbmZvL3ovejI5YgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4YTFmYy4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MjliCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejMwIGIvbGliL3Rlcm1pbmZvL3ovejMwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjI1M2JhLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3ozMAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3ozNDAgYi9saWIvdGVybWluZm8vei96MzQwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTI1ZmZkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3ozNDAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96MzQwLW5hbSBiL2xpYi90ZXJtaW5mby96L3ozNDAtbmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDVkNDEyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3ozNDAtbmFtCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejM5LWEgYi9saWIvdGVybWluZm8vei96MzktYQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkzNDQwMS4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96MzktYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3ozOWEgYi9saWIvdGVybWluZm8vei96MzlhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTM0NDAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3ozOWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96NTAgYi9saWIvdGVybWluZm8vei96NTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NDY2NDIuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovejUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovejgwMDEgYi9saWIvdGVybWluZm8vei96ODAwMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5ZTdiMC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96ODAwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3plbjMwIGIvbGliL3Rlcm1pbmZvL3ovemVuMzAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMjUzYmEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovemVuMzAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96ZW41MCBiL2xpYi90ZXJtaW5mby96L3plbjUwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTQ2NjQyLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3plbjUwCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovemVuODAwMSBiL2xpYi90ZXJtaW5mby96L3plbjgwMDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OWU3YjAuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovemVuODAwMQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3plbml0aCBiL2xpYi90ZXJtaW5mby96L3plbml0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU5M2U5Ni4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96ZW5pdGgKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96ZW5pdGgyOSBiL2xpYi90ZXJtaW5mby96L3plbml0aDI5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzhhMWZjLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3plbml0aDI5CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovemVuaXRoMzktYSBiL2xpYi90ZXJtaW5mby96L3plbml0aDM5LWEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MzQ0MDEuLjAwMDAwMDAKLS0tIGEvbGliL3Rlcm1pbmZvL3ovemVuaXRoMzktYQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3plbml0aDM5LWFuc2kgYi9saWIvdGVybWluZm8vei96ZW5pdGgzOS1hbnNpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTM0NDAxLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3plbml0aDM5LWFuc2kKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96dC0xIGIvbGliL3Rlcm1pbmZvL3ovenQtMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU2NWQ4ZC4uMDAwMDAwMAotLS0gYS9saWIvdGVybWluZm8vei96dC0xCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbGliL3Rlcm1pbmZvL3ovenR4IGIvbGliL3Rlcm1pbmZvL3ovenR4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTY1ZDhkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3p0eAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYi90ZXJtaW5mby96L3p0eC0xLWEgYi9saWIvdGVybWluZm8vei96dHgtMS1hCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTY1ZDhkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3p0eC0xLWEKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWIvdGVybWluZm8vei96dHgxMSBiL2xpYi90ZXJtaW5mby96L3p0eDExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTY1ZDhkLi4wMDAwMDAwCi0tLSBhL2xpYi90ZXJtaW5mby96L3p0eDExCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbWFuL01LYWRhX2NvbmZpZy5pbiBiL21hbi9NS2FkYV9jb25maWcuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg0NTg5NwotLS0gL2Rldi9udWxsCisrKyBiL21hbi9NS2FkYV9jb25maWcuaW4KQEAgLTAsMCArMSwxMjIgQEAKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiIENvcHlyaWdodCAoYykgMjAxMC0yMDExLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisuXCIgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKy5cIiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorLlwiIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisuXCIgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKy5cIiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKy5cIiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKy5cIiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorLlwiIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisuXCIgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKy5cIiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorLlwiIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisuXCIgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisuXCIgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKy5cIiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlwiICRJZDogTUthZGFfY29uZmlnLmluLHYgMS44IDIwMTQvMDYvMDcgMTk6MzI6NTIgdG9tIEV4cCAkCisuVEggQURBQ1VSU0VTICIxIiAiIiAiIiAiVXNlciBDb21tYW5kcyIKKy5TSCBOQU1FCithZGFjdXJzZXNcLWNvbmZpZyBcLSBoZWxwZXIgc2NyaXB0IGZvciBBZGFDdXJzZXMgbGlicmFyaWVzCisuU0ggU1lOT1BTSVMKKy5CIGFkYWN1cnNlc1wtY29uZmlnCitbXGZJb3B0aW9uc1xmUl0KKy5TSCBERVNDUklQVElPTgorVGhpcyBpcyBhIHNoZWxsIHNjcmlwdCB3aGljaCBzaW1wbGlmaWVzIGNvbmZpZ3VyaW5nIGFuIGFwcGxpY2F0aW9uIHRvIHVzZQordGhlIEFkYUN1cnNlcyBsaWJyYXJ5IGJpbmRpbmcgdG8gbmN1cnNlcy4KKy5TSCBPUFRJT05TCisuVFAKK1xmQlwtXC1jZmxhZ3NcZlIKK2VjaG9zIHRoZSBnbmF0IChBZGEgY29tcGlsZXIpIGZsYWdzIG5lZWRlZCB0byBjb21waWxlIHdpdGggQWRhQ3Vyc2VzLgorLlRQCitcZkJcLVwtbGlic1xmUgorZWNob3MgdGhlIGduYXQgbGlicmFyaWVzIG5lZWRlZCB0byBsaW5rIHdpdGggQWRhQ3Vyc2VzLgorLlRQCitcZkJcLVwtdmVyc2lvblxmUgorZWNob3MgdGhlIHJlbGVhc2UrcGF0Y2hkYXRlIHZlcnNpb24gb2YgdGhlIG5jdXJzZXMgbGlicmFyaWVzIHVzZWQKK3RvIGNvbmZpZ3VyZSBhbmQgYnVpbGQgQWRhQ3Vyc2VzLgorLlRQCitcZkJcLVwtaGVscFxmUgorcHJpbnRzIGEgbGlzdCBvZiB0aGUgXGZCYWRhY3Vyc2VzXC1jb25maWdcZlAgc2NyaXB0J3Mgb3B0aW9ucy4KKy5QUAorSWYgbm8gb3B0aW9ucyBhcmUgZ2l2ZW4sIFxmQmFkYWN1cnNlc1wtY29uZmlnXGZQIHByaW50cyB0aGUgY29tYmluYXRpb24KK29mIAorXGZCXC1cLWNmbGFnc1xmUiBhbmQKK1xmQlwtXC1saWJzXGZSCit0aGF0IFxmQmduYXRtYWtlXGZQIGV4cGVjdHMgKHNlZSBleGFtcGxlKS4KKy5TSCBFWEFNUExFCisuUFAKK0ZvciBleGFtcGxlLCBzdXBwb3NpbmcgdGhhdCB5b3Ugd2FudCB0byBjb21waWxlIHRoZSAiSGVsbG8gV29ybGQhIgorcHJvZ3JhbSBmb3IgQWRhQ3Vyc2VzLgorTWFrZSBhIGZpbGUgbmFtZWQgImhlbGxvLmFkYiI6CisuUlMKKy5uZgorLmZ0IENXCit3aXRoIFRlcm1pbmFsX0ludGVyZmFjZS5DdXJzZXM7IHVzZSBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzOworCitwcm9jZWR1cmUgSGVsbG8gaXMKKworICAgVmlzaWJpbGl0eSA6IEN1cnNvcl9WaXNpYmlsaXR5IDo9IEludmlzaWJsZTsKKyAgIGRvbmUgOiBCb29sZWFuIDo9IEZhbHNlOworICAgYyA6IEtleV9Db2RlOworCitiZWdpbgorCisgICBJbml0X1NjcmVlbjsKKyAgIFNldF9FY2hvX01vZGUgKEZhbHNlKTsKKworICAgU2V0X0N1cnNvcl9WaXNpYmlsaXR5IChWaXNpYmlsaXR5KTsKKyAgIFNldF9UaW1lb3V0X01vZGUgKFN0YW5kYXJkX1dpbmRvdywgTm9uX0Jsb2NraW5nLCAwKTsKKworICAgTW92ZV9DdXJzb3IgKExpbmUgPT4gTGluZXMgLyAyLCBDb2x1bW4gPT4gKENvbHVtbnMgLSAxMikgLyAyKTsKKyAgIEFkZCAoU3RyID0+ICJIZWxsbyBXb3JsZCEiKTsKKworICAgd2hpbGUgbm90IGRvbmUgbG9vcAorCisgICAgICBjIDo9IEdldF9LZXlzdHJva2UgKFN0YW5kYXJkX1dpbmRvdyk7CisgICAgICBjYXNlIGMgaXMKKyAgICAgIHdoZW4gQ2hhcmFjdGVyJ1BvcyAoJ3EnKSA9PiBkb25lIDo9IFRydWU7CisgICAgICB3aGVuIG90aGVycyA9PiBudWxsOworICAgICAgZW5kIGNhc2U7CisKKyAgICAgIE5hcF9NaWxsaV9TZWNvbmRzICg1MCk7CisgICBlbmQgbG9vcDsKKworICAgRW5kX1dpbmRvd3M7CisKK2VuZCBIZWxsbzsKKy5maQorLlJFCisuUFAKK1RoZW4sIHVzaW5nCisuUlMKKy5mdCBDVworZ25hdG1ha2UgYGFkYWN1cnNlcy1jb25maWcgLS1jZmxhZ3NgIGhlbGxvIC1sYXJncyBgYWRhY3Vyc2VzLWNvbmZpZyAtLWxpYnNgCisuZnQKKy5SRQorLlBQCitvciAoc2ltcGxlcik6CisuUlMKKy5mdCBDVworZ25hdG1ha2UgaGVsbG8gYGFkYWN1cnNlcy1jb25maWdgCisuZnQKKy5SRQorLlBQCit5b3Ugd2lsbCBjb21waWxlIGFuZCBsaW5rIHRoZSBwcm9ncmFtLgorLlNIICJTRUUgQUxTTyIKK1xmQmN1cnNlc1xmUigzWCkKKy5QUAorVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgordmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgpkaWZmIC0tZ2l0IGEvbWFuL01LbmN1X2NvbmZpZy5pbiBiL21hbi9NS25jdV9jb25maWcuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlNzcyYwotLS0gL2Rldi9udWxsCisrKyBiL21hbi9NS25jdV9jb25maWcuaW4KQEAgLTAsMCArMSw5OCBAQAorLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgQ29weXJpZ2h0IChjKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKy5cIiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorLlwiIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisuXCIgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKy5cIiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorLlwiIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorLlwiIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorLlwiIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisuXCIgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKy5cIiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorLlwiIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisuXCIgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKy5cIiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKy5cIiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorLlwiIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuXCIgJElkOiBNS25jdV9jb25maWcuaW4sdiAxLjMgMjAxMC8wMy8wNiAyMjoyOToxNyB0b20gRXhwICQKKy5USCBATElCX05BTUVAQERGVF9BUkdfU1VGRklYQEBjZl9jdl9hYmlfdmVyc2lvbkAtY29uZmlnIDEgIiIKKy5TSCBOQU1FCitATElCX05BTUVAQERGVF9BUkdfU1VGRklYQEBjZl9jdl9hYmlfdmVyc2lvbkAtY29uZmlnIFwtIGhlbHBlciBzY3JpcHQgZm9yIG5jdXJzZXMgbGlicmFyaWVzCisuU0ggU1lOT1BTSVMKKy5CIEBMSUJfTkFNRUBAREZUX0FSR19TVUZGSVhAQGNmX2N2X2FiaV92ZXJzaW9uQC1jb25maWcgCitbXGZJb3B0aW9uc1xmUl0KKy5TSCBERVNDUklQVElPTgorVGhpcyBpcyBhIHNoZWxsIHNjcmlwdCB3aGljaCBzaW1wbGlmaWVzIGNvbmZpZ3VyaW5nIGFwcGxpY2F0aW9ucyBhZ2FpbnN0CithIHBhcnRpY3VsYXIgc2V0IG9mIG5jdXJzZXMgbGlicmFyaWVzLgorLlNIIE9QVElPTlMKKy5UUAorXGZCXC1cLXByZWZpeFxmUgorZWNob3MgdGhlIHBhY2thZ2VcLXByZWZpeCBvZiBuY3Vyc2VzCisuVFAKK1xmQlwtXC1leGVjXC1wcmVmaXhcZlIKK2VjaG9zIHRoZSBleGVjdXRhYmxlXC1wcmVmaXggb2YgbmN1cnNlcworLlRQCitcZkJcLVwtY2ZsYWdzXGZSCitlY2hvcyB0aGUgQyBjb21waWxlciBmbGFncyBuZWVkZWQgdG8gY29tcGlsZSB3aXRoIG5jdXJzZXMKKy5UUAorXGZCXC1cLWxpYnNcZlIKK2VjaG9zIHRoZSBsaWJyYXJpZXMgbmVlZGVkIHRvIGxpbmsgd2l0aCBuY3Vyc2VzCisuVFAKK1xmQlwtXC12ZXJzaW9uXGZSCitlY2hvcyB0aGUgcmVsZWFzZStwYXRjaGRhdGUgdmVyc2lvbiBvZiBuY3Vyc2VzCisuVFAKK1xmQlwtXC1hYmlcLXZlcnNpb25cZlIKK2VjaG9zIHRoZSBBQkkgdmVyc2lvbiBvZiBuY3Vyc2VzCisuVFAKK1xmQlwtXC1tb3VzZVwtdmVyc2lvblxmUgorZWNob3MgdGhlIG1vdXNlXC1pbnRlcmZhY2UgdmVyc2lvbiBvZiBuY3Vyc2VzCisuVFAKK1xmQlwtXC1iaW5kaXJcZlIKK2VjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBuY3Vyc2VzIHByb2dyYW1zCisuVFAKK1xmQlwtXC1kYXRhZGlyXGZSCitlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbmN1cnNlcyBkYXRhCisuVFAKK1xmQlwtXC1pbmNsdWRlZGlyXGZSCitlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbmN1cnNlcyBoZWFkZXIgZmlsZXMKKy5UUAorXGZCXC1cLWxpYmRpclxmUgorZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIG5jdXJzZXMgbGlicmFyaWVzCisuVFAKK1xmQlwtXC1tYW5kaXJcZlIKK2VjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBuY3Vyc2VzIG1hbnBhZ2VzCisuVFAKK1xmQlwtXC10ZXJtaW5mb1xmUgorZWNob3MgdGhlICRURVJNSU5GTyB0ZXJtaW5mbyBkYXRhYmFzZSBwYXRoLCBlLmcuLAorLlJTCitAVEVSTUlORk9ACisuUkUKKy5UUAorXGZCXC1cLXRlcm1pbmZvXC1kaXJzXGZSCitlY2hvcyB0aGUgJFRFUk1JTkZPX0RJUlMgZGlyZWN0b3J5IGxpc3QsIGUuZy4sCisuUlMKK0BURVJNSU5GT19ESVJTQAorLlJFCisuVFAKK1xmQlwtXC10ZXJtcGF0aFxmUgorZWNob3MgdGhlICRURVJNUEFUSCB0ZXJtY2FwIGxpc3QsIGlmIHN1cHBvcnQgZm9yIHRlcm1jYXAgaXMgY29uZmlndXJlZC4KKy5UUAorXGZCXC1cLWhlbHBcZlIKK3ByaW50cyB0aGlzIG1lc3NhZ2UKKy5TSCAiU0VFIEFMU08iCitcZkJjdXJzZXNcZlIoM1gpCisuUFAKK1RoaXMgZGVzY3JpYmVzIFxmQm5jdXJzZXNcZlIKK3ZlcnNpb24gQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCAocGF0Y2ggQE5DVVJTRVNfUEFUQ0hAKS4KZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5pbiBiL21hbi9NYWtlZmlsZS5pbgppbmRleCBjMDRmN2M5Li40NzhjMzk4IDEwMDY0NAotLS0gYS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvbWFuL01ha2VmaWxlLmluCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40MSAyMDA3LzAzLzMxIDE1OjU0OjA2IHRvbSBFeHAgJAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40OCAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMzQsMTQgKzM0LDE5IEBACiAjIE5PVEU6IFdoZW4geW91IGFkZCBvciByZW5hbWUgYSBtYW4gcGFnZSwgbWFrZSBzdXJlIHlvdSB1cGRhdGUgYm90aAogIyB0aGUgdG9wLWxldmVsIE1BTklGRVNUIGFuZCBhbnkgbWFuLyoucmVuYW1lcyBmaWxlcyEKIAotU0hFTEwJCT0gL2Jpbi9zaAorU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKIAogREVTVERJUgkJPSBAREVTVERJUkAKIHNyY2RpcgkJPSBAc3JjZGlyQAogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKK2RhdGFyb290ZGlyCT0gQGRhdGFyb290ZGlyQAogZGF0YWRpcgkJPSBAZGF0YWRpckAKIG1hbmRpcgkJPSBAbWFuZGlyQAoraW5jbHVkZXN1YmRpcgk9IEBpbmNsdWRlc3ViZGlyQAorCitJTkNMVURFRElSCT0gJChERVNURElSKSQoaW5jbHVkZWRpcikkKGluY2x1ZGVzdWJkaXIpCiAKIElOU1RBTEwJCT0gQElOU1RBTExACiBJTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQApAQCAtNTIsMjAgKzU3LDIwIEBACiB0YWdzIDoKIAogJChERVNURElSKSQobWFuZGlyKSA6Ci0Jc2ggJChzcmNkaXIpLy4uL21rZGlycy5zaCAkQAorCW1rZGlyIC1wICRACiAKLUVESVRBUkdTID0gJChERVNURElSKSQobWFuZGlyKSAkKHNyY2RpcikgdGVybWluZm8uNSAkKHNyY2RpcikvKi5bMC05XSoKK0VESVRBUkdTID0gJChERVNURElSKSQobWFuZGlyKSAkKHNyY2RpcikgdGVybWluZm8uNSAqLWNvbmZpZy4xICQoc3JjZGlyKS8qLlswLTldKgogCiBpbnN0YWxsIGluc3RhbGwubWFuIDogdGVybWluZm8uNSAkKERFU1RESVIpJChtYW5kaXIpCi0Jc2ggLi4vZWRpdF9tYW4uc2ggbm9ybWFsIGluc3RhbGxpbmcgJChFRElUQVJHUykKKwkkKFNIRUxMKSAuLi9lZGl0X21hbi5zaCBub3JtYWwgaW5zdGFsbGluZyAkKEVESVRBUkdTKQogCiB1bmluc3RhbGwgdW5pbnN0YWxsLm1hbiA6Ci0JLXNoIC4uL2VkaXRfbWFuLnNoIG5vcm1hbCByZW1vdmluZyAkKEVESVRBUkdTKQorCS0kKFNIRUxMKSAuLi9lZGl0X21hbi5zaCBub3JtYWwgcmVtb3ZpbmcgJChFRElUQVJHUykKIAogIyBXZSBjb21wb3NlIHRlcm1pbmZvLjUgZnJvbSB0aGUgcmVhbCBzb3VyY2VzLi4uCiBDQVBMSVNUPSQoc3JjZGlyKS8uLi9pbmNsdWRlL0BURVJNSU5GT19DQVBTQAogdGVybWluZm8uNTogJChzcmNkaXIpL3Rlcm1pbmZvLmhlYWQgJChDQVBMSVNUKSAkKHNyY2RpcikvdGVybWluZm8udGFpbCBNYWtlZmlsZSAkKHNyY2RpcikvTUt0ZXJtaW5mby5zaAotCXNoICQoc3JjZGlyKS9NS3Rlcm1pbmZvLnNoICQoc3JjZGlyKS90ZXJtaW5mby5oZWFkICQoQ0FQTElTVCkgJChzcmNkaXIpL3Rlcm1pbmZvLnRhaWwgPnRlcm1pbmZvLjUKKwkkKFNIRUxMKSAkKHNyY2RpcikvTUt0ZXJtaW5mby5zaCAkKHNyY2RpcikvdGVybWluZm8uaGVhZCAkKENBUExJU1QpICQoc3JjZGlyKS90ZXJtaW5mby50YWlsID50ZXJtaW5mby41CiAKIG1vc3RseWNsZWFuIDoKIAktcm0gLWYgY29yZSB0YWdzIFRBR1MgKn4gKi5iYWsgKi5sbiAqLmF0YWMgdHJhY2UKQEAgLTc0LDcgKzc5LDcgQEAKIAlybSAtZiB0ZXJtaW5mby41CiAKIC4uL2VkaXRfbWFuLnNlZCA6IG1ha2Vfc2VkLnNoIEBNQU5QQUdFX1JFTkFNRVNACi0Jc2ggJChzcmNkaXIpL21ha2Vfc2VkLnNoIEBNQU5QQUdFX1JFTkFNRVNAID4uLi9lZGl0X21hbi5zZWQKKwkkKFNIRUxMKSAkKHNyY2RpcikvbWFrZV9zZWQuc2ggQE1BTlBBR0VfUkVOQU1FU0AgPi4uL2VkaXRfbWFuLnNlZAogCiBkaXN0Y2xlYW4gcmVhbGNsZWFuOiBjbGVhbgotCXJtIC1mIE1ha2VmaWxlIC4uL2VkaXRfbWFuLiogLi4vbWFuX2FsaWFzLioKKwlybSAtZiBNYWtlZmlsZSAqLWNvbmZpZy4xIC4uL2VkaXRfbWFuLiogLi4vbWFuX2FsaWFzLioKZGlmZiAtLWdpdCBhL21hbi9jYXB0b2luZm8uMW0gYi9tYW4vY2FwdG9pbmZvLjFtCmluZGV4IGRlNTdhMjcuLmM3YTMzNjQgMTAwNjQ0Ci0tLSBhL21hbi9jYXB0b2luZm8uMW0KKysrIGIvbWFuL2NhcHRvaW5mby4xbQpAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywzOCArMjcsNDQgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGNhcHRvaW5mby4xbSx2IDEuMjIgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwICQKKy5cIiAkSWQ6IGNhcHRvaW5mby4xbSx2IDEuMjUgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwICQKIC5USCBAQ0FQVE9JTkZPQCAxTSAiIgogLmRzIG4gNQogLmRzIGQgQFRFUk1JTkZPQAogLlNIIE5BTUUKLVxmQkBDQVBUT0lORk9AXGZSIC0gY29udmVydCBhIFxmSXRlcm1jYXBcZlIgZGVzY3JpcHRpb24gaW50byBhIFxmSXRlcm1pbmZvXGZSIGRlc2NyaXB0aW9uCitcZkJAQ0FQVE9JTkZPQFxmUiBcLSBjb252ZXJ0IGEgXGZJdGVybWNhcFxmUiBkZXNjcmlwdGlvbiBpbnRvIGEgXGZJdGVybWluZm9cZlIgZGVzY3JpcHRpb24KIC5TSCBTWU5PUFNJUwotXGZCQENBUFRPSU5GT0BcZlIgW1xmQi12XGZSXGZJblxmUiBcZkl3aWR0aFxmUl0gIFtcZkItVlxmUl0gW1xmQi0xXGZSXSBbXGZCLXdcZlIgXGZJd2lkdGhcZlJdIFxmSWZpbGVcZlIgLiAuIC4KK1xmQkBDQVBUT0lORk9AXGZSIFtcZkJcLXZcZlJcZkluXGZSIFxmSXdpZHRoXGZSXSAgW1xmQlwtVlxmUl0gW1xmQlwtMVxmUl0gW1xmQlwtd1xmUiBcZkl3aWR0aFxmUl0gXGZJZmlsZVxmUiAuIC4gLgogLlNIIERFU0NSSVBUSU9OCi1cZkJAQ0FQVE9JTkZPQFxmUiBsb29rcyBpbiBcZklmaWxlXGZSIGZvciBcZkJ0ZXJtY2FwXGZSIGRlc2NyaXB0aW9ucy4gIEZvciBlYWNoCitcZkJAQ0FQVE9JTkZPQFxmUiBsb29rcyBpbiBlYWNoIGdpdmVuIHRleHQKK1xmSWZpbGVcZlIgZm9yIFxmQnRlcm1jYXBcZlIgZGVzY3JpcHRpb25zLgorRm9yIGVhY2gKIG9uZSBmb3VuZCwgYW4gZXF1aXZhbGVudCBcZkJ0ZXJtaW5mb1xmUiBkZXNjcmlwdGlvbiBpcyB3cml0dGVuIHRvIHN0YW5kYXJkCi1vdXRwdXQuICBUZXJtY2FwIFxmQnRjXGZSIGNhcGFiaWxpdGllcyBhcmUgdHJhbnNsYXRlZCBkaXJlY3RseSB0byB0ZXJtaW5mbworb3V0cHV0LgorVGVybWNhcCBcZkJ0Y1xmUiBjYXBhYmlsaXRpZXMgYXJlIHRyYW5zbGF0ZWQgZGlyZWN0bHkgdG8gdGVybWluZm8KIFxmQnVzZVxmUiBjYXBhYmlsaXRpZXMuCiAuUFAKIElmIG5vIFxmSWZpbGVcZlIgaXMgZ2l2ZW4sIHRoZW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFxmQlRFUk1DQVBcZlIgaXMgdXNlZAotZm9yIHRoZSBmaWxlbmFtZSBvciBlbnRyeS4gIElmIFxmQlRFUk1DQVBcZlIgaXMgYSBmdWxsIHBhdGhuYW1lIHRvIGEgZmlsZSwgb25seQorZm9yIHRoZSBmaWxlbmFtZSBvciBlbnRyeS4KK0lmIFxmQlRFUk1DQVBcZlIgaXMgYSBmdWxsIHBhdGhuYW1lIHRvIGEgZmlsZSwgb25seQogdGhlIHRlcm1pbmFsIHdob3NlIG5hbWUgaXMgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcZkJURVJNXGZSIGlzCi1leHRyYWN0ZWQgZnJvbSB0aGF0IGZpbGUuICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgXGZCVEVSTUNBUFxmUiBpcyBub3QKK2V4dHJhY3RlZCBmcm9tIHRoYXQgZmlsZS4KK0lmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcZkJURVJNQ0FQXGZSIGlzIG5vdAogc2V0LCB0aGVuIHRoZSBmaWxlIFxmQlwqZFxmUiBpcyByZWFkLgogLlRQIDUKLVxmQi12XGZSCitcZkJcLXZcZlIKIHByaW50IG91dCB0cmFjaW5nIGluZm9ybWF0aW9uIG9uIHN0YW5kYXJkIGVycm9yIGFzIHRoZSBwcm9ncmFtIHJ1bnMuCiAuVFAgNQotXGZCLVZcZlIKK1xmQlwtVlxmUgogcHJpbnQgb3V0IHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9ncmFtIGluIHVzZSBvbiBzdGFuZGFyZCBlcnJvciBhbmQgZXhpdC4KIC5UUCA1Ci1cZkItMVxmUgotY2F1c2UgdGhlIGZpZWxkcyB0byBwcmludCBvdXQgb25lIHRvIGEgbGluZS4gIE90aGVyd2lzZSwgdGhlIGZpZWxkcworXGZCXC0xXGZSCitjYXVzZSB0aGUgZmllbGRzIHRvIHByaW50IG91dCBvbmUgdG8gYSBsaW5lLgorT3RoZXJ3aXNlLCB0aGUgZmllbGRzCiB3aWxsIGJlIHByaW50ZWQgc2V2ZXJhbCB0byBhIGxpbmUgdG8gYSBtYXhpbXVtIHdpZHRoIG9mIDYwCiBjaGFyYWN0ZXJzLgogLlRQIDUKLVxmQi13XGZSCitcZkJcLXdcZlIKIGNoYW5nZSB0aGUgb3V0cHV0IHRvIFxmSXdpZHRoXGZSIGNoYXJhY3RlcnMuCiAuU0ggRklMRVMKIC5UUCAyMApAQCAtMTEyLDcgKzExOCw4IEBACiAuUFAKIFhFTklYIHRlcm1jYXAgYWxzbyB1c2VkIHRvIGhhdmUgYSBzZXQgb2YgZXh0ZW5zaW9uIGNhcGFiaWxpdGllcwogZm9yIGZvcm1zIGRyYXdpbmcsIGRlc2lnbmVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBJQk0gUEMKLWhpZ2gtaGFsZiBncmFwaGljcy4gIFRoZXkgd2VyZSBhcyBmb2xsb3dzOgoraGlnaC1oYWxmIGdyYXBoaWNzLgorVGhleSB3ZXJlIGFzIGZvbGxvd3M6CiAuUFAKIC5UUyBICiBjIGMKQEAgLTE0NSwxMSArMTUyLDEzIEBACiAuVEUKIC5QUAogSWYgdGhlIHNpbmdsZS1saW5lIGNhcGFiaWxpdGllcyBvY2N1ciBpbiBhbiBlbnRyeSwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkKLWJlIGNvbXBvc2VkIGludG8gYW4gXGZJYWNzY1xmUiBzdHJpbmcuICBUaGUgZG91YmxlLWxpbmUgY2FwYWJpbGl0aWVzIGFuZAorYmUgY29tcG9zZWQgaW50byBhbiBcZklhY3NjXGZSIHN0cmluZy4KK1RoZSBkb3VibGUtbGluZSBjYXBhYmlsaXRpZXMgYW5kCiBcZkJHR1xmUiBhcmUgZGlzY2FyZGVkIHdpdGggYSB3YXJuaW5nIG1lc3NhZ2UuCiAuUFAKIElCTSdzIEFJWCBoYXMgYSB0ZXJtaW5mbyBmYWNpbGl0eSBkZXNjZW5kZWQgZnJvbSBTVnIxIHRlcm1pbmZvIGJ1dCBpbmNvbXBhdGlibGUKLXdpdGggdGhlIFNWcjQgZm9ybWF0LiBUaGUgZm9sbG93aW5nIEFJWCBleHRlbnNpb25zIGFyZSBhdXRvbWF0aWNhbGx5Cit3aXRoIHRoZSBTVnI0IGZvcm1hdC4KK1RoZSBmb2xsb3dpbmcgQUlYIGV4dGVuc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkKIHRyYW5zbGF0ZWQ6CiAuVFMKIGMgYwpAQCAtMTcxLDExICsxODAsMTIgQEAKIGNhcGFiaWxpdGllcyBcZkltZW1sXGZSIChtZW1vcnkgbG9jaykgYW5kIFxmSW1lbXVcZlIgKG1lbW9yeSB1bmxvY2spLgogVGhlc2Ugd2lsbCBiZSBkaXNjYXJkZWQgd2l0aCBhIHdhcm5pbmcgbWVzc2FnZS4KIC5TSCBOT1RFUwotVGhpcyB1dGlsaXR5IGlzIGFjdHVhbGx5IGEgbGluayB0byBcZkJAVElDQFxmUigxTSksIHJ1bm5pbmcgaW4gXGZJLUlcZlIgbW9kZS4KLVlvdSBjYW4gdXNlIG90aGVyIFxmQkBUSUNAXGZSIG9wdGlvbnMgc3VjaCBhcyBcZkItZlxmUiBhbmQgIFxmQi14XGZSLgorVGhpcyB1dGlsaXR5IGlzIGFjdHVhbGx5IGEgbGluayB0byBcZkJAVElDQFxmUigxTSksIHJ1bm5pbmcgaW4gXGZJXC1JXGZSIG1vZGUuCitZb3UgY2FuIHVzZSBvdGhlciBcZkJAVElDQFxmUiBvcHRpb25zIHN1Y2ggYXMgXGZCXC1mXGZSIGFuZCAgXGZCXC14XGZSLgogLlBQCi1UaGUgdHJhY2Ugb3B0aW9uIGlzIG5vdCBpZGVudGljYWwgdG8gU1ZyNCdzLiAgVW5kZXIgU1ZyNCwgaW5zdGVhZCBvZiBmb2xsb3dpbmcKLXRoZSBcZkItdlxmUiB3aXRoIGEgdHJhY2UgbGV2ZWwgbiwgeW91IHJlcGVhdCBpdCBuIHRpbWVzLgorVGhlIHRyYWNlIG9wdGlvbiBpcyBub3QgaWRlbnRpY2FsIHRvIFNWcjQncy4KK1VuZGVyIFNWcjQsIGluc3RlYWQgb2YgZm9sbG93aW5nCit0aGUgXGZCXC12XGZSIHdpdGggYSB0cmFjZSBsZXZlbCBuLCB5b3UgcmVwZWF0IGl0IG4gdGltZXMuCiAuU0ggU0VFIEFMU08KIFxmQkBJTkZPQ01QQFxmUigxTSksCiBcZkJjdXJzZXNcZlIoM1gpLApAQCAtMTg1LDkgKzE5NSw2IEBACiB2ZXJzaW9uIEBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAgKHBhdGNoIEBOQ1VSU0VTX1BBVENIQCkuCiAuU0ggQVVUSE9SCiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorYW5kCisuYnIKK1Rob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KZGlmZiAtLWdpdCBhL21hbi9jbGVhci4xIGIvbWFuL2NsZWFyLjEKaW5kZXggMzFkMGY5My4uZDhlMjRlNSAxMDA2NDQKLS0tIGEvbWFuL2NsZWFyLjEKKysrIGIvbWFuL2NsZWFyLjEKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxOCArMjYsMTkgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGNsZWFyLjEsdiAxLjYgMjAwNi8xMi8yNCAxODowNzo1MyB0b20gRXhwICQKKy5cIiAkSWQ6IGNsZWFyLjEsdiAxLjEwIDIwMTMvMDYvMjIgMjI6MjI6MTEgdG9tIEV4cCAkCiAuVEggQENMRUFSQCAxICIiCiAuZHMgbiA1CiAuU0ggTkFNRQotXGZCQENMRUFSQFxmUiAtIGNsZWFyIHRoZSB0ZXJtaW5hbCBzY3JlZW4KK1xmQkBDTEVBUkBcZlIgXC0gY2xlYXIgdGhlIHRlcm1pbmFsIHNjcmVlbgogLlNIIFNZTk9QU0lTCiBcZkJAQ0xFQVJAXGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgotXGZCQENMRUFSQFxmUiBjbGVhcnMgeW91ciBzY3JlZW4gaWYgdGhpcyBpcyBwb3NzaWJsZS4gIEl0IGxvb2tzIGluIHRoZQotZW52aXJvbm1lbnQgZm9yIHRoZSB0ZXJtaW5hbCB0eXBlIGFuZCB0aGVuIGluIHRoZSBcZkJ0ZXJtaW5mb1xmUiBkYXRhYmFzZSB0bwotZmlndXJlIG91dCBob3cgdG8gY2xlYXIgdGhlIHNjcmVlbi4KK1xmQkBDTEVBUkBcZlIgY2xlYXJzIHlvdXIgc2NyZWVuIGlmIHRoaXMgaXMgcG9zc2libGUsCitpbmNsdWRpbmcgaXRzIHNjcm9sbGJhY2sgYnVmZmVyIChpZiB0aGUgZXh0ZW5kZWQgIkUzIiBjYXBhYmlsaXR5IGlzIGRlZmluZWQpLgorXGZCQENMRUFSQFxmUiBsb29rcyBpbiB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSB0ZXJtaW5hbCB0eXBlIGFuZCB0aGVuIGluIHRoZQorXGZCdGVybWluZm9cZlIgZGF0YWJhc2UgdG8gZGV0ZXJtaW5lIGhvdyB0byBjbGVhciB0aGUgc2NyZWVuLgogLlBQCiBcZkJAQ0xFQVJAXGZSIGlnbm9yZXMgYW55IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXJzIHRoYXQgbWF5IGJlIHByZXNlbnQuCiAuU0ggU0VFIEFMU08KQEAgLTQ1LDkgKzQ2LDMgQEAKIC5QUAogVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgogdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19hZGRfd2NoLjN4IGIvbWFuL2N1cnNfYWRkX3djaC4zeAppbmRleCA1MWFjMWE0Li41Yjc0NGRiIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19hZGRfd2NoLjN4CisrKyBiL21hbi9jdXJzX2FkZF93Y2guM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMS0yMDEyLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxNSArMjYsMTggQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfYWRkX3djaC4zeCx2IDEuNiAyMDA2LzEyLzI0IDE1OjIyOjIyIHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19hZGRfd2NoLjN4LHYgMS4xNiAyMDE1LzA3LzIwIDIzOjQ0OjU2IHRvbSBFeHAgJAogLlRIIGN1cnNfYWRkX3djaCAzWCAiIgorLmRlIGJQCisuSVAgXChidSA0CisuLgogLlNIIE5BTUUKIFxmQmFkZF93Y2hcZlAsCiBcZkJ3YWRkX3djaFxmUCwKIFxmQm12YWRkX3djaFxmUCwKIFxmQm12d2FkZF93Y2hcZlAsCiBcZkJlY2hvX3djaGFyXGZQLAotXGZCd2VjaG9fd2NoYXJcZlAgLSBhZGQgYSBjb21wbGV4IGNoYXJhY3RlciBhbmQgcmVuZGl0aW9uIHRvIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdywgdGhlbiBhZHZhbmNlIHRoZSBjdXJzb3IKK1xmQndlY2hvX3djaGFyXGZQIFwtIGFkZCBhIGNvbXBsZXggY2hhcmFjdGVyIGFuZCByZW5kaXRpb24gdG8gYSBcZkJjdXJzZXNcZlIgd2luZG93LCB0aGVuIGFkdmFuY2UgdGhlIGN1cnNvcgogLlNIIFNZTk9QU0lTCiAuUFAKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlAKQEAgLTUyLDYgKzU1LDcgQEAKIC5CICJpbnQgd2VjaG9fd2NoYXIoIFdJTkRPVyAqXGZJd2luXGZQLCBjb25zdCBjY2hhcl90ICpcZkl3Y2hcZkIgKTsiCiAuYnIKIC5TSCBERVNDUklQVElPTgorLlNTIGFkZF93Y2gKIC5QUAogVGhlCiBcZkJhZGRfd2NoXGZQLApAQCAtNjMsMjYgKzY3LDI0IEBACiB3aGljaCBpcyB0aGVuIGFkdmFuY2VkLgogVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0KIHdyYXBwaW5nIGFuZCBzcGVjaWFsLWNoYXJhY3RlciBwcm9jZXNzaW5nIGFzIGZvbGxvd3M6Ci0uVFAgNQotLQorLmJQCiBJZiBcZkl3Y2hcZlAgcmVmZXJzIHRvIGEgc3BhY2luZyBjaGFyYWN0ZXIsCiB0aGVuIGFueSBwcmV2aW91cyBjaGFyYWN0ZXIgYXQgdGhhdCBsb2NhdGlvbiBpcyByZW1vdmVkLgogQSBuZXcgY2hhcmFjdGVyIHNwZWNpZmllZCBieSBcZkl3Y2hcZlAgaXMKIHBsYWNlZCBhdCB0aGF0IGxvY2F0aW9uIHdpdGggcmVuZGl0aW9uIHNwZWNpZmllZCBieSBcZkl3Y2hcZlAuCiBUaGUgY3Vyc29yIHRoZW4gYWR2YW5jZXMgdG8KIHRoZSBuZXh0IHNwYWNpbmcgY2hhcmFjdGVyIG9uIHRoZSBzY3JlZW4uCi0uVFAgNQotLQorLmJQCiBJZiBcZkl3Y2hcZlAgcmVmZXJzIHRvIGEgbm9uLXNwYWNpbmcgY2hhcmFjdGVyLAogYWxsIHByZXZpb3VzIGNoYXJhY3RlcnMgYXQgdGhhdCBsb2NhdGlvbiBhcmUgcHJlc2VydmVkLgogVGhlIG5vbi1zcGFjaW5nIGNoYXJhY3RlcnMgb2YgXGZJd2NoXGZQCiBhcmUgYWRkZWQgdG8gdGhlIHNwYWNpbmcgY29tcGxleCBjaGFyYWN0ZXIsCiBhbmQgdGhlIHJlbmRpdGlvbiBzcGVjaWZpZWQgYnkgXGZJd2NoXGZQIGlzIGlnbm9yZWQuCi0uVFAgNQotLQorLmJQCiBJZiB0aGUgY2hhcmFjdGVyIHBhcnQgb2YgXGZJd2NoXGZQIGlzCiBhIHRhYiwgbmV3bGluZSwgYmFja3NwYWNlIG9yIG90aGVyIGNvbnRyb2wgY2hhcmFjdGVyLAogdGhlIHdpbmRvdyBpcyB1cGRhdGVkIGFuZCB0aGUgY3Vyc29yIG1vdmVzIGFzIGlmIFxmQmFkZGNoXGZSIHdlcmUgY2FsbGVkLgorLlNTIGVjaG9fd2NoYXIKIC5QUAogVGhlIFxmQmVjaG9fd2NoYXJcZlAKIGZ1bmN0aW9uIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEgY2FsbCB0bwpAQCAtOTksOSArMTAxLDkwIEBACiB0aGF0IG9ubHkgYSBzaW5nbGUgY2hhcmFjdGVyIGlzIGJlaW5nIG91dHB1dCBpcyB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24gYW5kLAogZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMsIGEgY29uc2lkZXJhYmxlIHBlcmZvcm1hbmNlIGdhaW4gbWlnaHQgYmUgc2VlbgogYnkgdXNpbmcgdGhlICpcZkJlY2hvXGZQKiBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGVpciBlcXVpdmFsZW50cy4KLS5TSCBSRVRVUk4gVkFMVUVTCisuU1MgTGluZSBHcmFwaGljcworTGlrZSBcZkJhZGRjaFxmUCgzWCksCitcZkJhZGRjaF93Y2hcZlAgYWNjZXB0cyBzeW1ib2xzIHdoaWNoIG1ha2UgaXQgc2ltcGxlIHRvIGRyYXcgbGluZXMgYW5kIG90aGVyCitmcmVxdWVudGx5IHVzZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLgorVGhlc2Ugc3ltYm9scyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIFZUMTAwIGxpbmUtZHJhd2luZyBzZXQgYXMKK1xmQmFkZGNoXGZQKDNYKS4KKy5QUAorLlRTCitsIGwgbCBsCitfIF8gXyBfCitsdygxLjVpKSBsdzcgbHc3IGx3MjAuCitcZklOYW1lXGZSCVxmSVVuaWNvZGVcZlAJXGZJRGVmYXVsdFxmUglcZklEZXNjcmlwdGlvblxmUgorV0FDU19CTE9DSwkweDI1YWUgCSMJc29saWQgc3F1YXJlIGJsb2NrCitXQUNTX0JPQVJECTB4MjU5MiAJIwlib2FyZCBvZiBzcXVhcmVzCitXQUNTX0JURUUJMHgyNTM0IAkrCWJvdHRvbSB0ZWUKK1dBQ1NfQlVMTEVUCTB4MDBiNyAJbwlidWxsZXQKK1dBQ1NfQ0tCT0FSRAkweDI1OTIgCToJY2hlY2tlciBib2FyZCAoc3RpcHBsZSkKK1dBQ1NfREFSUk9XCTB4MjE5MyAJdglhcnJvdyBwb2ludGluZyBkb3duCitXQUNTX0RFR1JFRQkweDAwYjAgCScJZGVncmVlIHN5bWJvbAorV0FDU19ESUFNT05ECTB4MjVjNiAJKwlkaWFtb25kCitXQUNTX0dFUVVBTAkweDIyNjUgCT4JZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvCitXQUNTX0hMSU5FCTB4MjUwMCAJXC0JaG9yaXpvbnRhbCBsaW5lCitXQUNTX0xBTlRFUk4JMHgyNjAzIAkjCWxhbnRlcm4gc3ltYm9sCitXQUNTX0xBUlJPVwkweDIxOTAgCTwJYXJyb3cgcG9pbnRpbmcgbGVmdAorV0FDU19MRVFVQUwJMHgyMjY0IAk8CWxlc3MtdGhhbi1vci1lcXVhbC10bworV0FDU19MTENPUk5FUgkweDI1MTQgCSsJbG93ZXIgbGVmdC1oYW5kIGNvcm5lcgorV0FDU19MUkNPUk5FUgkweDI1MTggCSsJbG93ZXIgcmlnaHQtaGFuZCBjb3JuZXIKK1dBQ1NfTFRFRQkweDI1MjQgCSsJbGVmdCB0ZWUKK1dBQ1NfTkVRVUFMCTB4MjI2MCAJIQlub3QtZXF1YWwKK1dBQ1NfUEkJMHgwM2MwIAkqCWdyZWVrIHBpCitXQUNTX1BMTUlOVVMJMHgwMGIxIAkjCXBsdXMvbWludXMKK1dBQ1NfUExVUwkweDI1M2MgCSsJcGx1cworV0FDU19SQVJST1cJMHgyMTkyIAk+CWFycm93IHBvaW50aW5nIHJpZ2h0CitXQUNTX1JURUUJMHgyNTFjIAkrCXJpZ2h0IHRlZQorV0FDU19TMQkweDIzYmEgCVwtCXNjYW4gbGluZSAxCitXQUNTX1MzCTB4MjNiYiAJXC0Jc2NhbiBsaW5lIDMKK1dBQ1NfUzcJMHgyM2JjIAlcLQlzY2FuIGxpbmUgNworV0FDU19TOQkweDIzYmQgCVwmXwlzY2FuIGxpbmUgOQorV0FDU19TVEVSTElORwkweDAwYTMgCWYJcG91bmQtc3Rlcmxpbmcgc3ltYm9sCitXQUNTX1RURUUJMHgyNTJjIAkrCXRvcCB0ZWUKK1dBQ1NfVUFSUk9XCTB4MjE5MSAgCV4JYXJyb3cgcG9pbnRpbmcgdXAKK1dBQ1NfVUxDT1JORVIJMHgyNTBjIAkrCXVwcGVyIGxlZnQtaGFuZCBjb3JuZXIKK1dBQ1NfVVJDT1JORVIJMHgyNTEwIAkrCXVwcGVyIHJpZ2h0LWhhbmQgY29ybmVyCitXQUNTX1ZMSU5FCTB4MjUwMiAJfAl2ZXJ0aWNhbCBsaW5lCisuVEUKKy5QUAorVGhlIHdpZGUtY2hhcmFjdGVyIGNvbmZpZ3VyYXRpb24gb2YgbmN1cnNlcyBhbHNvIGRlZmluZXMgc3ltYm9scworZm9yIHRoaWNrLSBhbmQgZG91YmxlLWxpbmVzOgorLlBQCisuVFMKK2wgbCBsIGwKK18gXyBfIF8KK2x3KDEuNWkpIGx3NyBsdzcgbHcyMC4KK1xmSU5hbWVcZlIJXGZJVW5pY29kZVxmUAlcZklEZWZhdWx0XGZSCVxmSURlc2NyaXB0aW9uXGZSCitXQUNTX1RfVUxDT1JORVIJMHgyNTBmCSsJdGhpY2sgdXBwZXIgbGVmdCBjb3JuZXIKK1dBQ1NfVF9MTENPUk5FUgkweDI1MTcJKwl0aGljayBsb3dlciBsZWZ0IGNvcm5lcgorV0FDU19UX1VSQ09STkVSCTB4MjUxMwkrCXRoaWNrIHVwcGVyIHJpZ2h0IGNvcm5lcgorV0FDU19UX0xSQ09STkVSCTB4MjUxYgkrCXRoaWNrIGxvd2VyIHJpZ2h0IGNvcm5lcgorV0FDU19UX0xURUUJMHgyNTJiCSsJdGhpY2sgdGVlIHBvaW50aW5nIHJpZ2h0CitXQUNTX1RfUlRFRQkweDI1MjMJKwl0aGljayB0ZWUgcG9pbnRpbmcgbGVmdAorV0FDU19UX0JURUUJMHgyNTNiCSsJdGhpY2sgdGVlIHBvaW50aW5nIHVwCitXQUNTX1RfVFRFRQkweDI1MzMJKwl0aGljayB0ZWUgcG9pbnRpbmcgZG93bgorV0FDU19UX0hMSU5FCTB4MjUwMQktCXRoaWNrIGhvcml6b250YWwgbGluZQorV0FDU19UX1ZMSU5FCTB4MjUwMwl8CXRoaWNrIHZlcnRpY2FsIGxpbmUKK1dBQ1NfVF9QTFVTCTB4MjU0YgkrCXRoaWNrIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyCitXQUNTX0RfVUxDT1JORVIJMHgyNTU0CSsJZG91YmxlIHVwcGVyIGxlZnQgY29ybmVyCitXQUNTX0RfTExDT1JORVIJMHgyNTVhCSsJZG91YmxlIGxvd2VyIGxlZnQgY29ybmVyCitXQUNTX0RfVVJDT1JORVIJMHgyNTU3CSsJZG91YmxlIHVwcGVyIHJpZ2h0IGNvcm5lcgorV0FDU19EX0xSQ09STkVSCTB4MjU1ZAkrCWRvdWJsZSBsb3dlciByaWdodCBjb3JuZXIKK1dBQ1NfRF9SVEVFCTB4MjU2MwkrCWRvdWJsZSB0ZWUgcG9pbnRpbmcgbGVmdAorV0FDU19EX0xURUUJMHgyNTYwCSsJZG91YmxlIHRlZSBwb2ludGluZyByaWdodAorV0FDU19EX0JURUUJMHgyNTY5CSsJZG91YmxlIHRlZSBwb2ludGluZyB1cAorV0FDU19EX1RURUUJMHgyNTY2CSsJZG91YmxlIHRlZSBwb2ludGluZyBkb3duCitXQUNTX0RfSExJTkUJMHgyNTUwCS0JZG91YmxlIGhvcml6b250YWwgbGluZQorV0FDU19EX1ZMSU5FCTB4MjU1MQl8CWRvdWJsZSB2ZXJ0aWNhbCBsaW5lCitXQUNTX0RfUExVUwkweDI1NmMJKwlkb3VibGUgbGFyZ2UgcGx1cyBvciBjcm9zc292ZXIKKy5URQorLlNIIFJFVFVSTiBWQUxVRQogLlBQCiBBbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIFxmQkVSUlxmUiB1cG9uIGZhaWx1cmUgYW5kIFxmQk9LXGZSIG9uIHN1Y2Nlc3MuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIE5PVEVTCiAuUFAKIE5vdGUgdGhhdApAQCAtMTEyLDEzICsxOTUsMjggQEAKIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKIC5QUAotQWxsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LgotVGhlIGRlZmF1bHRzIHNwZWNpZmllZCBmb3IgZm9ybXMtZHJhd2luZyBjaGFyYWN0ZXJzIGFwcGx5IGluIHRoZSBQT1NJWCBsb2NhbGUuCitBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCitUaGUgZGVmYXVsdHMgc3BlY2lmaWVkIGZvciBsaW5lLWRyYXdpbmcgY2hhcmFjdGVycyBhcHBseSBpbiB0aGUgUE9TSVggbG9jYWxlLgogLlBQCi1YU0kgZG9jdW1lbnRzIGNvbnN0YW50cyBiZWdpbm5pbmcgd2l0aCBcZkJXQUNTX1xmUCB3aGljaCBhcmUgdXNlZCBmb3IKLWxpbmUtZHJhd2luZy4KLVRob3NlIGFyZSBub3QgY3VycmVudGx5IGltcGxlbWVudGVkIGluIFxmQm5jdXJzZXNcZlAuCitYL09wZW4gQ3Vyc2VzIG1ha2VzIGl0IGNsZWFyIHRoYXQgdGhlIFdBQ1NfIHN5bWJvbHMgc2hvdWxkIGJlIGRlZmluZWQgYXMKK2EgcG9pbnRlciB0byBcZkJjY2hhcl90XGZQIGRhdGEsIGUuZy4sIGluIHRoZSBkaXNjdXNzaW9uIG9mIFxmQmJvcmRlcl9zZXRcZlIuCitBIGZldyBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb2JsZW1hdGljOgorLmJQCitOZXRCU0QgY3Vyc2VzIGRlZmluZXMgdGhlIHN5bWJvbHMgYXMgYSBcZkJ3Y2hhcl90XGZQIHdpdGhpbiBhIFxmQmNjaGFyX3RcZlAuCisuYlAKK0hQVVggY3Vyc2VzIGVxdWF0ZXMgc29tZSBvZiB0aGUgXGZJQUNTX1xmUCBzeW1ib2xzCit0byB0aGUgYW5hbG9nb3VzIFxmSVdBQ1NfXGZQIHN5bWJvbHMgYXMgaWYgdGhlIFxmSUFDU19cZlAgc3ltYm9scyB3ZXJlCit3aWRlIGNoYXJhY3RlcnMuCitUaGUgbWlzZGVmaW5lZCBzeW1ib2xzIGFyZSB0aGUgYXJyb3dzCithbmQgb3RoZXIgc3ltYm9scyB3aGljaCBhcmUgbm90IHVzZWQgZm9yIGxpbmUtZHJhd2luZy4KKy5QUAorWC9PcGVuIEN1cnNlcyBkb2VzIG5vdCBkZWZpbmUgc3ltYm9scyBmb3IgdGhpY2stIG9yIGRvdWJsZS1saW5lcy4KK1NWcjQgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyBkZWZpbmVkIHRoZWlyIGxpbmUtZHJhd2luZyBzeW1ib2xzIGluCit0ZXJtcyBvZiBpbnRlcm1lZGlhdGUgc3ltYm9scy4KK1RoaXMgaW1wbGVtZW50YXRpb24gZXh0ZW5kcyB0aG9zZSBzeW1ib2xzLCBwcm92aWRpbmcgbmV3IGRlZmluaXRpb25zCit3aGljaCBhcmUgbm90IGluIHRoZSBTVnI0IGltcGxlbWVudGF0aW9ucy4KIC5TSCBTRUUgQUxTTworLm5hCiAuUFAKIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2FkZGNoXGZSKDNYKSwKQEAgLTEyNyw5ICsyMjUsMyBAQAogXGZCY3Vyc19vdXRvcHRzXGZSKDNYKSwKIFxmQmN1cnNfcmVmcmVzaFxmUigzWCksCiBcZkJwdXR3Y1xmUigzKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19hZGRfd2Noc3RyLjN4IGIvbWFuL2N1cnNfYWRkX3djaHN0ci4zeAppbmRleCBmODRjMmNiLi4zN2UzZGY2IDEwMDY0NAotLS0gYS9tYW4vY3Vyc19hZGRfd2Noc3RyLjN4CisrKyBiL21hbi9jdXJzX2FkZF93Y2hzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxMyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19hZGRfd2Noc3RyLjN4LHYgMS42IDIwMDUvMDEvMDIgMDE6Mjg6NDkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2FkZF93Y2hzdHIuM3gsdiAxLjEwIDIwMTIvMTEvMDMgMjI6NTQ6NDMgdG9tIEV4cCAkCiAuVEggY3Vyc19hZGRfd2Noc3RyIDNYICIiCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCisubmEKKy5oeSAwCiAuU0ggTkFNRQogXGZCYWRkX3djaHN0clxmUiwKIFxmQmFkZF93Y2huc3RyXGZSLApAQCAtMzcsMTAgKzQyLDEyIEBACiBcZkJtdmFkZF93Y2huc3RyXGZSLAogXGZCbXZ3YWRkX3djaHN0clxmUiwKIFxmQm12d2FkZF93Y2huc3RyXGZSIFwtIGFkZCBhbiBhcnJheSBvZiBjb21wbGV4IGNoYXJhY3RlcnMgKGFuZCBhdHRyaWJ1dGVzKSB0byBhIGN1cnNlcyB3aW5kb3cKKy5hZAorLmh5CiAuU0ggU1lOT1BTSVMKLS5CICNpbmNsdWRlIDxjdXJzZXMuaD4KLS5QUAogLm5mCitcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCisuUFAKIFxmQmludCBhZGRfd2Noc3RyKGNvbnN0IGNjaGFyX3QgKlxmUlxmSXdjaHN0clxmUlxmQik7XGZSCiAuYnIKIFxmQmludCBhZGRfd2NobnN0cihjb25zdCBjY2hhcl90ICpcZlJcZkl3Y2hzdHJcZlJcZkIsIGludCBcZlJcZkluXGZSXGZCKTtcZlIKQEAgLTU4LDQwICs2NSw1MyBAQAogXGZCaW50IG12d2FkZF93Y2huc3RyKFdJTkRPVyAqXGZSXGZJd2luXGZSXGZCLCBpbnQgXGZSXGZJeVxmUlxmQiwgaW50IFxmUlxmSXhcZlJcZkIsIGNvbnN0IGNjaGFyX3QgKlxmUlxmSXdjaHN0clxmUlxmQiwgaW50IFxmUlxmSW5cZlJcZkIpO1xmUgogLmZpCiAuU0ggREVTQ1JJUFRJT04KLVRoZXNlIHJvdXRpbmVzIGNvcHkgdGhlIGFycmF5IG9mIGNvbXBsZXggY2hhcmFjdGVycyBcZkl3Y2hzdHJcZlIKLWludG8gdGhlIHdpbmRvdyBpbWFnZSBzdHJ1Y3R1cmUgYXQgYW5kIGFmdGVyIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4KLVRoZSBmb3VyIHJvdXRpbmVzIHdpdGggXGZJblxmUiBhcyB0aGUgbGFzdAotYXJndW1lbnQgY29weSBhdCBtb3N0IFxmSW5cZlIgZWxlbWVudHMsIGJ1dCBubyBtb3JlIHRoYW4gd2lsbCBmaXQgb24gdGhlIGxpbmUuCi1JZiBcZkJuXGZSPVxmQi0xXGZSIHRoZW4gdGhlIHdob2xlIGFycmF5IGlzIGNvcGllZCwKK1RoZXNlIGZ1bmN0aW9ucyBjb3B5IHRoZSAobnVsbC10ZXJtaW5hdGVkKQorYXJyYXkgb2YgY29tcGxleCBjaGFyYWN0ZXJzIFxmSXdjaHN0clxmUgoraW50byB0aGUgd2luZG93IGltYWdlIHN0cnVjdHVyZQorc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorVGhlIGZvdXIgZnVuY3Rpb25zIHdpdGggXGZJblxmUiBhcyB0aGUgbGFzdAorYXJndW1lbnQgY29weSBhdCBtb3N0IFxmSW5cZlIgZWxlbWVudHMsCitidXQgbm8gbW9yZSB0aGFuIHdpbGwgZml0IG9uIHRoZSBsaW5lLgorSWYgXGZCblxmUj1cZkJcLTFcZlIgdGhlbiB0aGUgd2hvbGUgYXJyYXkgaXMgY29waWVkLAogdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGZpdCBvbiB0aGUgbGluZS4KIC5QUAogVGhlIHdpbmRvdyBjdXJzb3IgaXMgXGZJbm90XGZSIGFkdmFuY2VkLgotVGhlc2Ugcm91dGluZXMgd29yayBmYXN0ZXIgdGhhbiBcZkJ3YWRkbnN0clxmUi4KLU9uIHRoZSBvdGhlciBoYW5kLCB0aGV5IGRvIG5vdCBwZXJmb3JtIGNoZWNraW5nCitUaGVzZSBmdW5jdGlvbnMgd29yayBmYXN0ZXIgdGhhbiBcZkJ3YWRkbnN0clxmUi4KK09uIHRoZSBvdGhlciBoYW5kOgorLmJQCit0aGV5IGRvIG5vdCBwZXJmb3JtIGNoZWNraW5nCiAoc3VjaCBhcyBmb3IgdGhlIG5ld2xpbmUsIGJhY2tzcGFjZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMpLAorLmJQCiB0aGV5IGRvIG5vdCBhZHZhbmNlIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiwKLXRoZXkgZG8gbm90IGV4cGFuZCBvdGhlciBjb250cm9sIGNoYXJhY3RlcnMgdG8gXi1lc2NhcGVzLAotYW5kIHRoZXkgdHJ1bmNhdGUgdGhlIHN0cmluZyBpZiBpdCBjcm9zc2VzIHRoZSByaWdodCBtYXJnaW4sCisuYlAKK3RoZXkgZG8gbm90IGV4cGFuZCBvdGhlciBjb250cm9sIGNoYXJhY3RlcnMgdG8gXi1lc2NhcGVzLCBhbmQKKy5iUAordGhleSB0cnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0IGNyb3NzZXMgdGhlIHJpZ2h0IG1hcmdpbiwKIHJhdGhlciB0aGFuIHdyYXBwaW5nIGl0IGFyb3VuZCB0byB0aGUgbmV3IGxpbmUuCiAuUFAKLVRoZXNlIHJvdXRpbmVzIGVuZCBzdWNjZXNzZnVsbHkKK1RoZXNlIGZ1bmN0aW9ucyBlbmQgc3VjY2Vzc2Z1bGx5CiBvbiBlbmNvdW50ZXJpbmcgYSBudWxsIFxmSWNjaGFyX3RcZlIsIG9yCiB3aGVuIHRoZXkgaGF2ZSBmaWxsZWQgdGhlIGN1cnJlbnQgbGluZS4KIElmIGEgY29tcGxleCBjaGFyYWN0ZXIgY2Fubm90IGNvbXBsZXRlbHkgZml0IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZSwKIHRoZSByZW1haW5pbmcgY29sdW1ucyBhcmUgZmlsbGVkIHdpdGggdGhlIGJhY2tncm91bmQgY2hhcmFjdGVyIGFuZCByZW5kaXRpb24uCisuU0ggUkVUVVJOIFZBTFVFCitBbGwgZnVuY3Rpb25zIHJldHVybiB0aGUgaW50ZWdlciBcZkJFUlJcZlIgdXBvbiBmYWlsdXJlIGFuZCBcZkJPS1xmUiBvbiBzdWNjZXNzLgorLlBQCitYL09wZW4gZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLgorVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGFuIGVycm9yCitpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIEFsbCBmdW5jdGlvbnMgZXhjZXB0IFxmQndhZGRfd2NobnN0clxmUiBtYXkgYmUgbWFjcm9zLgotLlNIIFJFVFVSTiBWQUxVRVMKLUFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIgb24gc3VjY2Vzcy4KIC5TSCBQT1JUQUJJTElUWQotQWxsIHRoZXNlIGVudHJ5IHBvaW50cyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LgorVGhlc2UgZW50cnkgcG9pbnRzIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksCi1cZkJjdXJzX2FkZGNoc3RyXGZSKDNYKSwKLVxmQmN1cnNfYWRkd3N0clxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc19hZGR3c3RyXGZSKDNYKSwKK1xmQmN1cnNlc1xmUigzWCkuCisuUFAKK0NvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSBuYXJyb3ctY2hhcmFjdGVyIChuY3Vyc2VzKSBsaWJyYXJ5IGFyZQorZGVzY3JpYmVkIGluCitcZkJjdXJzX2FkZGNoc3RyXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX2FkZGNoLjN4IGIvbWFuL2N1cnNfYWRkY2guM3gKaW5kZXggNzM5MThiOC4uMTVkODU5YiAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfYWRkY2guM3gKKysrIGIvbWFuL2N1cnNfYWRkY2guM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTIgKzI3LDE4IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2FkZGNoLjN4LHYgMS4yNyAyMDA3LzA2LzAyIDIwOjQwOjA3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19hZGRjaC4zeCx2IDEuMzYgMjAxNS8wNy8xNiAwOToxNDo0NCB0b20gRXhwICQKIC5USCBjdXJzX2FkZGNoIDNYICIiCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuU0ggTkFNRQotXGZCYWRkY2hcZlIsIFxmQndhZGRjaFxmUiwgXGZCbXZhZGRjaFxmUiwgXGZCbXZ3YWRkY2hcZlIsCitcZkJhZGRjaFxmUiwKK1xmQndhZGRjaFxmUiwKK1xmQm12YWRkY2hcZlIsCitcZkJtdndhZGRjaFxmUiwKIFxmQmVjaG9jaGFyXGZSLAotXGZCd2VjaG9jaGFyXGZSIC0gYWRkIGEgY2hhcmFjdGVyICh3aXRoIGF0dHJpYnV0ZXMpIHRvIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdywgdGhlbiBhZHZhbmNlIHRoZSBjdXJzb3IKK1xmQndlY2hvY2hhclxmUiBcLSBhZGQgYSBjaGFyYWN0ZXIgKHdpdGggYXR0cmlidXRlcykgdG8gYSBcZkJjdXJzZXNcZlIgd2luZG93LCB0aGVuIGFkdmFuY2UgdGhlIGN1cnNvcgogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuUFAKQEAgLTQ5LDI0ICs1NSwzOSBAQAogXGZCaW50IHdlY2hvY2hhcihXSU5ET1cgKndpbiwgY29uc3QgY2h0eXBlIGNoKTtcZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCisuU1MgQWRkaW5nIGNoYXJhY3RlcnMKIFRoZSBcZkJhZGRjaFxmUiwgXGZCd2FkZGNoXGZSLCBcZkJtdmFkZGNoXGZSIGFuZCBcZkJtdndhZGRjaFxmUiByb3V0aW5lcyBwdXQKIHRoZSBjaGFyYWN0ZXIgXGZJY2hcZlIgaW50byB0aGUgZ2l2ZW4gd2luZG93IGF0IGl0cyBjdXJyZW50IHdpbmRvdyBwb3NpdGlvbiwKIHdoaWNoIGlzIHRoZW4gYWR2YW5jZWQuICBUaGV5IGFyZSBhbmFsb2dvdXMgdG8gXGZCcHV0Y2hhclxmUiBpbiBcZkJzdGRpb1xmUigzKS4KLUlmIHRoZSBhZHZhbmNlIGlzIGF0IHRoZSByaWdodCBtYXJnaW4sIHRoZSBjdXJzb3IgYXV0b21hdGljYWxseSB3cmFwcyB0byB0aGUKLWJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lLiAgQXQgdGhlIGJvdHRvbSBvZiB0aGUgY3VycmVudCBzY3JvbGxpbmcgcmVnaW9uLCBpZgotXGZCc2Nyb2xsb2tcZlIgaXMgZW5hYmxlZCwgdGhlIHNjcm9sbGluZyByZWdpb24gaXMgc2Nyb2xsZWQgdXAgb25lIGxpbmUuCitJZiB0aGUgYWR2YW5jZSBpcyBhdCB0aGUgcmlnaHQgbWFyZ2luOgorLmJQCitUaGUgY3Vyc29yIGF1dG9tYXRpY2FsbHkgd3JhcHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lLgorLmJQCitBdCB0aGUgYm90dG9tIG9mIHRoZSBjdXJyZW50IHNjcm9sbGluZyByZWdpb24sCithbmQgaWYgXGZCc2Nyb2xsb2tcZlIgaXMgZW5hYmxlZCwKK3RoZSBzY3JvbGxpbmcgcmVnaW9uIGlzIHNjcm9sbGVkIHVwIG9uZSBsaW5lLgorLmJQCitJZiBcZkJzY3JvbGxva1xmUiBpcyBub3QgZW5hYmxlZCwKK3dyaXRpbmcgYSBjaGFyYWN0ZXIgYXQgdGhlIGxvd2VyIHJpZ2h0IG1hcmdpbiBzdWNjZWVkcy4KK0hvd2V2ZXIsIGFuIGVycm9yIGlzIHJldHVybmVkIGJlY2F1c2UKK2l0IGlzIG5vdCBwb3NzaWJsZSB0byB3cmFwIHRvIGEgbmV3IGxpbmUKIC5QUAotSWYgXGZJY2hcZlIgaXMgYSB0YWIsIG5ld2xpbmUsIG9yIGJhY2tzcGFjZSwKLXRoZSBjdXJzb3IgaXMgbW92ZWQgYXBwcm9wcmlhdGVseSB3aXRoaW4gdGhlIHdpbmRvdy4KK0lmIFxmSWNoXGZSIGlzIGEgdGFiLCBuZXdsaW5lLCBjYXJyaWFnZSByZXR1cm4gb3IgYmFja3NwYWNlLAordGhlIGN1cnNvciBpcyBtb3ZlZCBhcHByb3ByaWF0ZWx5IHdpdGhpbiB0aGUgd2luZG93OgorLmJQCiBCYWNrc3BhY2UgbW92ZXMgdGhlIGN1cnNvciBvbmUgY2hhcmFjdGVyIGxlZnQ7IGF0IHRoZSBsZWZ0CiBlZGdlIG9mIGEgd2luZG93IGl0IGRvZXMgbm90aGluZy4KKy5iUAorQ2FycmlhZ2UgcmV0dXJuIG1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIHdpbmRvdyBsZWZ0IG1hcmdpbiBvbiB0aGUgY3VycmVudCBsaW5lLgorLmJQCiBOZXdsaW5lIGRvZXMgYSBcZkJjbHJ0b2VvbFxmUiwKIHRoZW4gbW92ZXMgdGhlIGN1cnNvciB0byB0aGUgd2luZG93IGxlZnQgbWFyZ2luIG9uIHRoZSBuZXh0IGxpbmUsCiBzY3JvbGxpbmcgdGhlIHdpbmRvdyBpZiBvbiB0aGUgbGFzdCBsaW5lLgorLmJQCiBUYWJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGF0IGV2ZXJ5IGVpZ2h0aCBjb2x1bW4uCiBUaGUgdGFiIGludGVydmFsIG1heSBiZSBhbHRlcmVkIGJ5IHNldHRpbmcgdGhlIFxmQlRBQlNJWkVcZlIgdmFyaWFibGUuCiAuUFAKLUlmIFxmSWNoXGZSIGlzIGFueSBjb250cm9sIGNoYXJhY3RlciBvdGhlciB0aGFuIHRhYiwgbmV3bGluZSwgb3IgYmFja3NwYWNlLCBpdAorSWYgXGZJY2hcZlIgaXMgYW55IG90aGVyIGNvbnRyb2wgY2hhcmFjdGVyLCBpdAogaXMgZHJhd24gaW4gXGZCXlxmUlxmSVhcZlIgbm90YXRpb24uICBDYWxsaW5nIFxmQndpbmNoXGZSIGFmdGVyIGFkZGluZyBhCiBjb250cm9sIGNoYXJhY3RlciBkb2VzIG5vdCByZXR1cm4gdGhlIGNoYXJhY3RlciBpdHNlbGYsIGJ1dCBpbnN0ZWFkIHJldHVybnMKIHRoZSBeLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250cm9sIGNoYXJhY3Rlci4KQEAgLTc3LDYgKzk4LDcgQEAKIHVzaW5nIFxmQmluY2hcZlIgYW5kIFxmQmFkZGNoXGZSLikgIFNlZSB0aGUgXGZCY3Vyc19hdHRyXGZSKDNYKSBwYWdlIGZvcgogdmFsdWVzIG9mIHByZWRlZmluZWQgdmlkZW8gYXR0cmlidXRlIGNvbnN0YW50cyB0aGF0IGNhbiBiZSB1c2VmdWxseSBPUidlZAogaW50byBjaGFyYWN0ZXJzLgorLlNTIEVjaG9pbmcgY2hhcmFjdGVycwogLlBQCiBUaGUgXGZCZWNob2NoYXJcZlIgYW5kIFxmQndlY2hvY2hhclxmUiByb3V0aW5lcyBhcmUgZXF1aXZhbGVudCB0byBhIGNhbGwgdG8KIFxmQmFkZGNoXGZSIGZvbGxvd2VkIGJ5IGEgY2FsbCB0byBcZkJyZWZyZXNoXGZSLCBvciBhIGNhbGwgdG8gXGZCd2FkZGNoXGZSCkBAIC0xMDUsNyArMTI3LDcgQEAKIEFDU19ERUdSRUUJJwlkZWdyZWUgc3ltYm9sCiBBQ1NfRElBTU9ORAkrCWRpYW1vbmQKIEFDU19HRVFVQUwJPglncmVhdGVyLXRoYW4tb3ItZXF1YWwtdG8KLUFDU19ITElORQktCWhvcml6b250YWwgbGluZQorQUNTX0hMSU5FCVwtCWhvcml6b250YWwgbGluZQogQUNTX0xBTlRFUk4JIwlsYW50ZXJuIHN5bWJvbAogQUNTX0xBUlJPVwk8CWFycm93IHBvaW50aW5nIGxlZnQKIEFDU19MRVFVQUwJPAlsZXNzLXRoYW4tb3ItZXF1YWwtdG8KQEAgLTExOCw5ICsxNDAsOSBAQAogQUNTX1BMVVMJKwlwbHVzCiBBQ1NfUkFSUk9XCT4JYXJyb3cgcG9pbnRpbmcgcmlnaHQKIEFDU19SVEVFCSsJcmlnaHQgdGVlCi1BQ1NfUzEJLQlzY2FuIGxpbmUgMQotQUNTX1MzCS0Jc2NhbiBsaW5lIDMKLUFDU19TNwktCXNjYW4gbGluZSA3CitBQ1NfUzEJXC0Jc2NhbiBsaW5lIDEKK0FDU19TMwlcLQlzY2FuIGxpbmUgMworQUNTX1M3CVwtCXNjYW4gbGluZSA3CiBBQ1NfUzkJXCZfCXNjYW4gbGluZSA5CiBBQ1NfU1RFUkxJTkcJZglwb3VuZC1zdGVybGluZyBzeW1ib2wKIEFDU19UVEVFCSsJdG9wIHRlZQpAQCAtMTM0LDYgKzE1NiwxMCBAQAogKHRoZSBTVnI0IG1hbnVhbHMgc3BlY2lmeSBvbmx5ICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIikgdXBvbgogc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkIGluIHRoZSBwcmVjZWRpbmcgcm91dGluZQogZGVzY3JpcHRpb25zLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBOT1RFUwogTm90ZSB0aGF0IFxmQmFkZGNoXGZSLCBcZkJtdmFkZGNoXGZSLCBcZkJtdndhZGRjaFxmUiwgYW5kCiBcZkJlY2hvY2hhclxmUiBtYXkgYmUgbWFjcm9zLgpAQCAtMTQxLDYgKzE2NywxMCBAQAogQWxsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LgogVGhlIGRlZmF1bHRzIHNwZWNpZmllZCBmb3IgZm9ybXMtZHJhd2luZyBjaGFyYWN0ZXJzIGFwcGx5IGluIHRoZSBQT1NJWCBsb2NhbGUuCiAuTFAKK1gvT3BlbiBDdXJzZXMgc3RhdGVzIHRoYXQgdGhlIFxmSUFDU19cZlAgZGVmaW5pdGlvbnMgYXJlIFxmQmNoYXJcZlAgY29uc3RhbnRzLgorRm9yIHRoZSB3aWRlLWNoYXJhY3RlciBpbXBsZW1lbnRhdGlvbiAoc2VlIFxmQmN1cnNfYWRkX3djaFxmUCksCit0aGVyZSBhcmUgYW5hbG9nb3VzIFxmSVdBQ1NfXGZQIGRlZmluaXRpb25zIHdoaWNoIGFyZSBcZkJjY2hhcl90XGZQIGNvbnN0YW50cy4KKy5MUAogU29tZSBBQ1Mgc3ltYm9scwogKEFDU19TMywKIEFDU19TNywKQEAgLTE2OCwxNCArMTk4LDkgQEAKIFxmQmN1cnNfaW5jaFxmUigzWCksCiBcZkJjdXJzX291dG9wdHNcZlIoM1gpLAogXGZCY3Vyc19yZWZyZXNoXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKSwKIFxmQnB1dGNcZlIoMykuCiAuUFAKIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGxpYnJhcnkgYXJlCiBkZXNjcmliZWQgaW4KIFxmQmN1cnNfYWRkX3djaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2FkZGNoc3RyLjN4IGIvbWFuL2N1cnNfYWRkY2hzdHIuM3gKaW5kZXggYWMxYjA0MC4uMDg1MzZlMyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfYWRkY2hzdHIuM3gKKysrIGIvbWFuL2N1cnNfYWRkY2hzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxMSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19hZGRjaHN0ci4zeCx2IDEuMTIgMjAwNi8xMi8wMiAxNzowMjo0NSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfYWRkY2hzdHIuM3gsdiAxLjE2IDIwMTIvMTEvMDMgMjI6NTQ6NDMgdG9tIEV4cCAkCiAuVEggY3Vyc19hZGRjaHN0ciAzWCAiIgorLmRlIGJQCisuSVAgXChidSA0CisuLgogLm5hCiAuaHkgMAogLlNIIE5BTUUKQEAgLTM4LDEwICs0MSwxMSBAQAogXGZCbXZhZGRjaHN0clxmUiwKIFxmQm12YWRkY2huc3RyXGZSLAogXGZCbXZ3YWRkY2hzdHJcZlIsCi1cZkJtdndhZGRjaG5zdHJcZlIgLSBhZGQgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyAoYW5kIGF0dHJpYnV0ZXMpIHRvIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCbXZ3YWRkY2huc3RyXGZSIFwtIGFkZCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIChhbmQgYXR0cmlidXRlcykgdG8gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCisubmYKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5QUAogXGZCaW50IGFkZGNoc3RyKGNvbnN0IGNodHlwZSAqY2hzdHIpO1xmUgpAQCAtNTksNDEgKzYzLDQ5IEBACiBcZkJpbnQgbXZ3YWRkY2hzdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgY29uc3QgY2h0eXBlICpjaHN0cik7XGZSCiAuYnIKIFxmQmludCBtdndhZGRjaG5zdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgY29uc3QgY2h0eXBlICpjaHN0ciwgaW50IG4pO1xmUgorLmZpCiAuU0ggREVTQ1JJUFRJT04KLVRoZXNlIHJvdXRpbmVzIGNvcHkgXGZJY2hzdHJcZlIgaW50byB0aGUgd2luZG93IGltYWdlIHN0cnVjdHVyZSBhdCBhbmQgYWZ0ZXIKLXRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gIFRoZSBmb3VyIHJvdXRpbmVzIHdpdGggXGZJblxmUiBhcyB0aGUgbGFzdAotYXJndW1lbnQgY29weSBhdCBtb3N0IFxmSW5cZlIgZWxlbWVudHMsIGJ1dCBubyBtb3JlIHRoYW4gd2lsbCBmaXQgb24gdGhlIGxpbmUuCi1JZiBcZkJuXGZSPVxmQi0xXGZSIHRoZW4gdGhlIHdob2xlIHN0cmluZyBpcyBjb3BpZWQsIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZgotY2hhcmFjdGVycyB0aGF0IHdpbGwgZml0IG9uIHRoZSBsaW5lLgorVGhlc2UgZnVuY3Rpb25zIGNvcHkgdGhlIChudWxsLXRlcm1pbmF0ZWQpCitcZkljaHN0clxmUiBhcnJheQoraW50byB0aGUgd2luZG93IGltYWdlIHN0cnVjdHVyZQorc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorVGhlIGZvdXIgZnVuY3Rpb25zIHdpdGggXGZJblxmUiBhcyB0aGUgbGFzdAorYXJndW1lbnQgY29weSBhdCBtb3N0IFxmSW5cZlIgZWxlbWVudHMsCitidXQgbm8gbW9yZSB0aGFuIHdpbGwgZml0IG9uIHRoZSBsaW5lLgorSWYgXGZCblxmUj1cZkJcLTFcZlIgdGhlbiB0aGUgd2hvbGUgYXJyYXkgaXMgY29waWVkLAordG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGZpdCBvbiB0aGUgbGluZS4KIC5QUAotVGhlIHdpbmRvdyBjdXJzb3IgaXMgXGZJbm90XGZSIGFkdmFuY2VkLCBhbmQgdGhlc2Ugcm91dGluZXMgd29yayBmYXN0ZXIgdGhhbgotXGZCd2FkZG5zdHJcZlIuICBPbiB0aGUgb3RoZXIgaGFuZCwgdGhleSBkbyBub3QgcGVyZm9ybSBhbnkga2luZCBvZiBjaGVja2luZwotKHN1Y2ggYXMgZm9yIHRoZSBuZXdsaW5lLCBiYWNrc3BhY2UsIG9yIGNhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXJzKSwgdGhleSBkbyBub3QKLWFkdmFuY2UgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLCB0aGV5IGRvIG5vdCBleHBhbmQgb3RoZXIgY29udHJvbCBjaGFyYWN0ZXJzCi10byBeLWVzY2FwZXMsIGFuZCB0aGV5IHRydW5jYXRlIHRoZSBzdHJpbmcgaWYgaXQgY3Jvc3NlcyB0aGUgcmlnaHQgbWFyZ2luLAorVGhlIHdpbmRvdyBjdXJzb3IgaXMgXGZJbm90XGZSIGFkdmFuY2VkLgorVGhlc2UgZnVuY3Rpb25zIHdvcmsgZmFzdGVyIHRoYW4gXGZCd2FkZG5zdHJcZlIuCitPbiB0aGUgb3RoZXIgaGFuZDoKKy5iUAordGhleSBkbyBub3QgcGVyZm9ybSBjaGVja2luZworKHN1Y2ggYXMgZm9yIHRoZSBuZXdsaW5lLCBiYWNrc3BhY2UsIG9yIGNhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXJzKSwKKy5iUAordGhleSBkbyBub3QgYWR2YW5jZSB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24sCisuYlAKK3RoZXkgZG8gbm90IGV4cGFuZCBvdGhlciBjb250cm9sIGNoYXJhY3RlcnMgdG8gXi1lc2NhcGVzLCBhbmQKKy5iUAordGhleSB0cnVuY2F0ZSB0aGUgc3RyaW5nIGlmIGl0IGNyb3NzZXMgdGhlIHJpZ2h0IG1hcmdpbiwKIHJhdGhlciB0aGFuIHdyYXBwaW5nIGl0IGFyb3VuZCB0byB0aGUgbmV3IGxpbmUuCi0uU0ggUkVUVVJOIFZBTFVFUwotQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciBcZkJFUlJcZlIgdXBvbiBmYWlsdXJlIGFuZCBcZkJPS1xmUiBvbiBzdWNjZXNzCi0odGhlIFNWcjQgbWFudWFscyBzcGVjaWZ5IG9ubHkgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiBcZkJFUlJcZlIiKSB1cG9uCi1zdWNjZXNzZnVsIGNvbXBsZXRpb24sIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQgaW4gdGhlIHByZWNlZGluZyByb3V0aW5lCi1kZXNjcmlwdGlvbnMuCisuU0ggUkVUVVJOIFZBTFVFCitBbGwgZnVuY3Rpb25zIHJldHVybiB0aGUgaW50ZWdlciBcZkJFUlJcZlIgdXBvbiBmYWlsdXJlIGFuZCBcZkJPS1xmUiBvbiBzdWNjZXNzLgogLlBQCiBYL09wZW4gZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLgogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGFuIGVycm9yCiBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKLU5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IFxmQndhZGRjaG5zdHJcZlIgbWF5IGJlIG1hY3Jvcy4KK0FsbCBmdW5jdGlvbnMgZXhjZXB0IFxmQndhZGRjaG5zdHJcZlIgbWF5IGJlIG1hY3Jvcy4KIC5TSCBQT1JUQUJJTElUWQogVGhlc2UgZW50cnkgcG9pbnRzIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCiAuU0ggU0VFIEFMU08KK1xmQmN1cnNfYWRkc3RyXGZSKDNYKSwKIFxmQmN1cnNlc1xmUigzWCkuCiAuUFAKIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGxpYnJhcnkgYXJlCiBkZXNjcmliZWQgaW4KIFxmQmN1cnNfYWRkX3djaHN0clxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2FkZHN0ci4zeCBiL21hbi9jdXJzX2FkZHN0ci4zeAppbmRleCA0ODhiOWRkLi5iMWNiMWNjIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19hZGRzdHIuM3gKKysrIGIvbWFuL2N1cnNfYWRkc3RyLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsOCArMjYsMTEgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfYWRkc3RyLjN4LHYgMS4xMyAyMDA1LzA1LzE1IDE2OjE3OjE0IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19hZGRzdHIuM3gsdiAxLjE3IDIwMTIvMTEvMDMgMjI6NTc6MzEgdG9tIEV4cCAkCiAuVEggY3Vyc19hZGRzdHIgM1ggIiIKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KIC5uYQogLmh5IDAKIC5TSCBOQU1FCkBAIC0zOCw3ICs0MSw3IEBACiBcZkJtdmFkZHN0clxmUiwKIFxmQm12YWRkbnN0clxmUiwKIFxmQm12d2FkZHN0clxmUiwKLVxmQm12d2FkZG5zdHJcZlIgLSBhZGQgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyB0byBhIFxmQmN1cnNlc1xmUiB3aW5kb3cgYW5kIGFkdmFuY2UgY3Vyc29yCitcZkJtdndhZGRuc3RyXGZSIFwtIGFkZCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHRvIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdyBhbmQgYWR2YW5jZSBjdXJzb3IKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKQEAgLTYyLDM2ICs2NSwzNyBAQAogXGZCaW50IG12d2FkZG5zdHIoV0lORE9XICpcZlJcZkl3aW5cZlJcZkIsIGludCBcZlJcZkl5XGZSXGZCLCBpbnQgXGZSXGZJeFxmUlxmQiwgY29uc3QgY2hhciAqXGZSXGZJc3RyLCBpbnQgXGZSXGZJblxmUlxmQik7XGZSCiAuZmkKIC5TSCBERVNDUklQVElPTgotVGhlc2Ugcm91dGluZXMgd3JpdGUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIChudWxsLXRlcm1pbmF0ZWQpIGNoYXJhY3RlciBzdHJpbmcKK1RoZXNlIGZ1bmN0aW9ucyB3cml0ZSB0aGUgKG51bGwtdGVybWluYXRlZCkgY2hhcmFjdGVyIHN0cmluZwogXGZJc3RyXGZSIG9uIHRoZSBnaXZlbiB3aW5kb3cuCiBJdCBpcyBzaW1pbGFyIHRvIGNhbGxpbmcgXGZCd2FkZGNoXGZSIG9uY2UgZm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuCi1UaGUgZm91ciByb3V0aW5lcyB3aXRoIFxmSW5cZlIgYXMgdGhlIGxhc3QgYXJndW1lbnQKLXdyaXRlIGF0IG1vc3QgXGZJblxmUiBjaGFyYWN0ZXJzLgotSWYgXGZJblxmUiBpcyAtMSwgdGhlbiB0aGUgZW50aXJlIHN0cmluZyB3aWxsIGJlIGFkZGVkLAotdXAgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGZpdCBvbiB0aGUgbGluZSwKKy5QUAorVGhlIFxmSW12XGZSIGZ1bmN0aW9ucyBwZXJmb3JtIGN1cnNvciBtb3ZlbWVudCBvbmNlLCBiZWZvcmUgd3JpdGluZyBhbnkKK2NoYXJhY3RlcnMuCitUaGVyZWFmdGVyLCB0aGUgY3Vyc29yIGlzIGFkdmFuY2VkIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygd3JpdGluZyB0byB0aGUgd2luZG93LgorLlBQCitUaGUgZm91ciBmdW5jdGlvbnMgd2l0aCBcZkluXGZSIGFzIHRoZSBsYXN0IGFyZ3VtZW50Cit3cml0ZSBhdCBtb3N0IFxmSW5cZlIgY2hhcmFjdGVycywKIG9yIHVudGlsIGEgdGVybWluYXRpbmcgbnVsbCBpcyByZWFjaGVkLgorSWYgXGZJblxmUiBpcyBcLTEsIHRoZW4gdGhlIGVudGlyZSBzdHJpbmcgd2lsbCBiZSBhZGRlZC4KIC5TSCBSRVRVUk4gVkFMVUUKLUFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIgb24gc3VjY2VzcwotKHRoZSBTVnI0IG1hbnVhbHMgc3BlY2lmeSBvbmx5ICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIikgdXBvbgotc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgorQWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIgb24gc3VjY2Vzcy4KIC5QUAogWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvcgorLmJQCiBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbCBvcgorLmJQCiBpZiB0aGUgc3RyaW5nIHBvaW50ZXIgaXMgbnVsbCBvcgorLmJQCiBpZiB0aGUgY29ycmVzcG9uZGluZyBjYWxscyB0byBcZkJ3YWRkY2hcZlAgcmV0dXJuIGFuIGVycm9yLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBOT1RFUwotTm90ZSB0aGF0IGFsbCBvZiB0aGVzZSByb3V0aW5lcyBleGNlcHQgXGZCd2FkZHN0clxmUiBhbmQgXGZCd2FkZG5zdHJcZlIgbWF5IGJlCi1tYWNyb3MuCitBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGV4Y2VwdCBcZkJ3YWRkbnN0clxmUiBtYXkgYmUgbWFjcm9zLgogLlNIIFBPUlRBQklMSVRZCi1BbGwgdGhlc2UgZW50cnkgcG9pbnRzIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuICBUaGUKLVhTSSBlcnJvcnMgRUlMU0VRIGFuZCBFT1ZFUkZMT1csIGFzc29jaWF0ZWQgd2l0aCBleHRlbmRlZC1sZXZlbCBjb25mb3JtYW5jZSwKLWFyZSBub3QgeWV0IGRldGVjdGVkLgorVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfYWRkY2hcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CitcZkJjdXJzZXNcZlIoM1gpLAorXGZCY3Vyc19hZGRjaFxmUigzWCkuCmRpZmYgLS1naXQgYS9tYW4vY3Vyc19hZGR3c3RyLjN4IGIvbWFuL2N1cnNfYWRkd3N0ci4zeAppbmRleCA2M2QyNzQ2Li44MzVjYjM0IDEwMDY0NAotLS0gYS9tYW4vY3Vyc19hZGR3c3RyLjN4CisrKyBiL21hbi9jdXJzX2FkZHdzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxMSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19hZGR3c3RyLjN4LHYgMS43IDIwMDYvMDIvMjUgMjA6NTk6MDggdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2FkZHdzdHIuM3gsdiAxLjExIDIwMTIvMTEvMDMgMjI6NTc6MzEgdG9tIEV4cCAkCiAuVEggY3Vyc19hZGR3c3RyIDNYICIiCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAubmEKIC5oeSAwCiAuU0ggTkFNRQpAQCAtNjIsMzMgKzY1LDM5IEBACiBcZkJpbnQgbXZ3YWRkbndzdHIoV0lORE9XICpcZlJcZkl3aW5cZlJcZkIsIGludCBcZlJcZkl5XGZSXGZCLCBpbnQgXGZSXGZJeFxmUlxmQiwgY29uc3Qgd2NoYXJfdCAqXGZSXGZJd3N0clxmUlxmQiwgaW50IFxmUlxmSW5cZlJcZkIpO1xmUgogLmZpCiAuU0ggREVTQ1JJUFRJT04KLVRoZXNlIHJvdXRpbmVzIHdyaXRlIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZQorVGhlc2UgZnVuY3Rpb25zIHdyaXRlIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZQogKG51bGwtdGVybWluYXRlZCkgXGZCd2NoYXJfdFxmUiBjaGFyYWN0ZXIgc3RyaW5nCiBcZkl3c3RyXGZSIG9uIHRoZSBnaXZlbiB3aW5kb3cuCiBJdCBpcyBzaW1pbGFyIHRvIGNvbnN0cnVjdGluZyBhIFxmQmNjaGFyX3RcZlIgZm9yIGVhY2ggd2NoYXJfdCBpbiB0aGUgc3RyaW5nLAogdGhlbiBjYWxsaW5nIFxmQndhZGRfd2NoXGZSIGZvciB0aGUgcmVzdWx0aW5nIFxmQmNjaGFyX3RcZlIuCiAuUFAKLVRoZSBcZkltdlxmUiByb3V0aW5lcyBwZXJmb3JtIGN1cnNvciBtb3ZlbWVudCBvbmNlLCBiZWZvcmUgd3JpdGluZyBhbnkKK1RoZSBcZkltdlxmUiBmdW5jdGlvbnMgcGVyZm9ybSBjdXJzb3IgbW92ZW1lbnQgb25jZSwgYmVmb3JlIHdyaXRpbmcgYW55CiBjaGFyYWN0ZXJzLgogVGhlcmVhZnRlciwgdGhlIGN1cnNvciBpcyBhZHZhbmNlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHdyaXRpbmcgdG8gdGhlIHdpbmRvdy4KIC5QUAotVGhlIGZvdXIgcm91dGluZXMgd2l0aCBcZkluXGZSIGFzIHRoZSBsYXN0IGFyZ3VtZW50Ci13cml0ZSBhdCBtb3N0IFxmSW5cZlIgXGZCd2NoYXJfdFxmUiBjaGFyYWN0ZXJzLgotSWYgXGZJblxmUiBpcyAtMSwgdGhlbiB0aGUgZW50aXJlIHN0cmluZyB3aWxsIGJlIGFkZGVkLAotdXAgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGZpdCBvbiB0aGUgbGluZSwKK1RoZSBmb3VyIGZ1bmN0aW9ucyB3aXRoIFxmSW5cZlIgYXMgdGhlIGxhc3QgYXJndW1lbnQKK3dyaXRlIGF0IG1vc3QgXGZJblxmUiBcZkJ3Y2hhcl90XGZSIGNoYXJhY3RlcnMsCiBvciB1bnRpbCBhIHRlcm1pbmF0aW5nIG51bGwgaXMgcmVhY2hlZC4KLS5TSCBSRVRVUk4gVkFMVUVTCi1BbGwgcm91dGluZXMgcmV0dXJuIHRoZSBpbnRlZ2VyIFxmQkVSUlxmUiB1cG9uIGZhaWx1cmUgYW5kIFxmQk9LXGZSIG9uIHN1Y2Nlc3MuCitJZiBcZkluXGZSIGlzIFwtMSwgdGhlbiB0aGUgZW50aXJlIHN0cmluZyB3aWxsIGJlIGFkZGVkLgorLlNIIFJFVFVSTiBWQUxVRQorQWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIgb24gc3VjY2Vzcy4KKy5QUAorWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KK1RoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvcgorLmJQCitpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbCBvcgorLmJQCitpZiB0aGUgc3RyaW5nIHBvaW50ZXIgaXMgbnVsbCBvcgorLmJQCitpZiB0aGUgY29ycmVzcG9uZGluZyBjYWxscyB0byBcZkJ3YWRkX3djaFxmUCByZXR1cm4gYW4gZXJyb3IuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIE5PVEVTCi1Ob3RlIHRoYXQgYWxsIG9mIHRoZXNlIHJvdXRpbmVzIGV4Y2VwdCBcZkJ3YWRkbndzdHJcZlIgbWF5IGJlIG1hY3Jvcy4KK0FsbCBvZiB0aGVzZSBmdW5jdGlvbnMgZXhjZXB0IFxmQndhZGRud3N0clxmUiBtYXkgYmUgbWFjcm9zLgogLlNIIFBPUlRBQklMSVRZCi1BbGwgdGhlc2UgZW50cnkgcG9pbnRzIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCitUaGVzZSBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwgSXNzdWUgNC4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQmN1cnNfYWRkX3djaFxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfYXR0ci4zeCBiL21hbi9jdXJzX2F0dHIuM3gKaW5kZXggY2Y1OGFmZi4uNzE4NDE3ZiAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfYXR0ci4zeAorKysgYi9tYW4vY3Vyc19hdHRyLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDcgKzI3LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfYXR0ci4zeCx2IDEuMzEgMjAwNy8wMy8xNyAyMDozMDozMyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfYXR0ci4zeCx2IDEuNDAgMjAxNS8wNy8yMCAyMzozNTozOCB0b20gRXhwICQKIC5USCBjdXJzX2F0dHIgM1ggIiIKIC5uYQogLmh5IDAKQEAgLTU2LDgwICs1Niw4OCBAQAogXGZCd2NoZ2F0XGZSLAogXGZCbXZjaGdhdFxmUiwKIFxmQm12d2NoZ2F0XGZSLAotXGZCUEFJUl9OVU1CRVJcZlIgLSBcZkJjdXJzZXNcZlIgY2hhcmFjdGVyIGFuZCB3aW5kb3cgYXR0cmlidXRlIGNvbnRyb2wgcm91dGluZXMKK1xmQlBBSVJfTlVNQkVSXGZSIFwtIFxmQmN1cnNlc1xmUiBjaGFyYWN0ZXIgYW5kIHdpbmRvdyBhdHRyaWJ1dGUgY29udHJvbCByb3V0aW5lcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLmJyCi1cZkJpbnQgYXR0cm9mZihpbnQgYXR0cnMpO1xmUgorXGZCaW50IGF0dHJvZmYoaW50IFxmUFxmSWF0dHJzKTtcZlIKIC5icgotXGZCaW50IHdhdHRyb2ZmKFdJTkRPVyAqd2luLCBpbnQgYXR0cnMpO1xmUgorXGZCaW50IHdhdHRyb2ZmKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCLCBpbnQgXGZQXGZJYXR0cnNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgYXR0cm9uKGludCBhdHRycyk7XGZSCitcZkJpbnQgYXR0cm9uKGludCBcZlBcZklhdHRyc1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCB3YXR0cm9uKFdJTkRPVyAqd2luLCBpbnQgYXR0cnMpO1xmUgorXGZCaW50IHdhdHRyb24oV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGludCBcZlBcZklhdHRyc1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCBhdHRyc2V0KGludCBhdHRycyk7XGZSCitcZkJpbnQgYXR0cnNldChpbnQgXGZQXGZJYXR0cnNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgd2F0dHJzZXQoV0lORE9XICp3aW4sIGludCBhdHRycyk7XGZSCitcZkJpbnQgd2F0dHJzZXQoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGludCBcZlBcZklhdHRyc1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCBjb2xvcl9zZXQoc2hvcnQgY29sb3JfcGFpcl9udW1iZXIsIHZvaWQqIG9wdHMpO1xmUgorXGZCaW50IGNvbG9yX3NldChzaG9ydCBcZlBcZkljb2xvcl9wYWlyX251bWJlclxmUFxmQiwgdm9pZCogXGZQXGZJb3B0c1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCB3Y29sb3Jfc2V0KFdJTkRPVyAqd2luLCBzaG9ydCBjb2xvcl9wYWlyX251bWJlcixcZlIKLSAgICAgIFxmQnZvaWQqIG9wdHMpO1xmUgorXGZCaW50IHdjb2xvcl9zZXQoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIHNob3J0IFxmUFxmSWNvbG9yX3BhaXJfbnVtYmVyXGZQXGZCLFxmUgorICAgICAgXGZCdm9pZCogXGZQXGZJb3B0cyk7XGZSCiAuYnIKIFxmQmludCBzdGFuZGVuZCh2b2lkKTtcZlIKIC5icgotXGZCaW50IHdzdGFuZGVuZChXSU5ET1cgKndpbik7XGZSCitcZkJpbnQgd3N0YW5kZW5kKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCKTtcZlIKIC5icgogXGZCaW50IHN0YW5kb3V0KHZvaWQpO1xmUgogLmJyCi1cZkJpbnQgd3N0YW5kb3V0KFdJTkRPVyAqd2luKTtcZlIKK1xmQmludCB3c3RhbmRvdXQoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgYXR0cl9nZXQoYXR0cl90ICphdHRycywgc2hvcnQgKnBhaXIsIHZvaWQgKm9wdHMpO1xmUgorXGZCaW50IGF0dHJfZ2V0KGF0dHJfdCAqXGZQXGZJYXR0cnNcZlBcZkIsIHNob3J0ICpcZlBcZklwYWlyXGZQXGZCLCB2b2lkICpcZlBcZklvcHRzXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IHdhdHRyX2dldChXSU5ET1cgKndpbiwgYXR0cl90ICphdHRycywgc2hvcnQgKnBhaXIsXGZSCi0gICAgICAgXGZCdm9pZCAqb3B0cyk7XGZSCitcZkJpbnQgd2F0dHJfZ2V0KFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCLCBhdHRyX3QgKlxmUFxmSWF0dHJzXGZQXGZCLCBzaG9ydCAqXGZQXGZJcGFpclxmUFxmQixcZlIKKyAgICAgICBcZkJ2b2lkICpcZlBcZklvcHRzXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IGF0dHJfb2ZmKGF0dHJfdCBhdHRycywgdm9pZCAqb3B0cyk7XGZSCitcZkJpbnQgYXR0cl9vZmYoYXR0cl90IFxmUFxmSWF0dHJzXGZQXGZCLCB2b2lkICpcZlBcZklvcHRzXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IHdhdHRyX29mZihXSU5ET1cgKndpbiwgYXR0cl90IGF0dHJzLCB2b2lkICpvcHRzKTtcZlIKK1xmQmludCB3YXR0cl9vZmYoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGF0dHJfdCBcZlBcZklhdHRyc1xmUFxmQiwgdm9pZCAqXGZQXGZJb3B0c1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCBhdHRyX29uKGF0dHJfdCBhdHRycywgdm9pZCAqb3B0cyk7XGZSCitcZkJpbnQgYXR0cl9vbihhdHRyX3QgXGZQXGZJYXR0cnNcZlBcZkIsIHZvaWQgKlxmUFxmSW9wdHNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgd2F0dHJfb24oV0lORE9XICp3aW4sIGF0dHJfdCBhdHRycywgdm9pZCAqb3B0cyk7XGZSCitcZkJpbnQgd2F0dHJfb24oV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGF0dHJfdCBcZlBcZklhdHRyc1xmUFxmQiwgdm9pZCAqXGZQXGZJb3B0c1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCBhdHRyX3NldChhdHRyX3QgYXR0cnMsIHNob3J0IHBhaXIsIHZvaWQgKm9wdHMpO1xmUgorXGZCaW50IGF0dHJfc2V0KGF0dHJfdCBcZlBcZklhdHRyc1xmUFxmQiwgc2hvcnQgXGZQXGZJcGFpclxmUFxmQiwgdm9pZCAqXGZQXGZJb3B0c1xmUFxmQik7XGZSCiAuYnIKLVxmQmludCB3YXR0cl9zZXQoV0lORE9XICp3aW4sIGF0dHJfdCBhdHRycywgc2hvcnQgcGFpciwgdm9pZCAqb3B0cyk7XGZSCitcZkJpbnQgd2F0dHJfc2V0KFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCLCBhdHRyX3QgXGZQXGZJYXR0cnNcZlBcZkIsIHNob3J0IFxmUFxmSXBhaXJcZlBcZkIsIHZvaWQgKlxmUFxmSW9wdHNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgY2hnYXQoaW50IG4sIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvcixcZlIKLSAgICAgIFxmQmNvbnN0IHZvaWQgKm9wdHMpXGZSCitcZkJpbnQgY2hnYXQoaW50IFxmUFxmSW5cZlBcZkIsIGF0dHJfdCBcZlBcZklhdHRyXGZQXGZCLCBzaG9ydCBcZlBcZkljb2xvclxmUFxmQixcZlIKKyAgICAgIFxmQmNvbnN0IHZvaWQgKlxmUFxmSW9wdHNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgd2NoZ2F0KFdJTkRPVyAqd2luLCBpbnQgbiwgYXR0cl90IGF0dHIsXGZSCi0gICAgICBcZkJzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cylcZlIKK1xmQmludCB3Y2hnYXQoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGludCBcZlBcZkluXGZQXGZCLCBhdHRyX3QgXGZQXGZJYXR0clxmUFxmQixcZlIKKyAgICAgIFxmQnNob3J0IFxmUFxmSWNvbG9yXGZQXGZCLCBjb25zdCB2b2lkICpcZlBcZklvcHRzXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IG12Y2hnYXQoaW50IHksIGludCB4LCBpbnQgbiwgYXR0cl90IGF0dHIsXGZSCi0gICAgICBcZkJzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cylcZlIKK1xmQmludCBtdmNoZ2F0KGludCBcZlBcZkl5XGZQXGZCLCBpbnQgXGZQXGZJeFxmUFxmQiwgaW50IFxmUFxmSW5cZlBcZkIsIGF0dHJfdCBcZlBcZklhdHRyXGZQXGZCLFxmUgorICAgICAgXGZCc2hvcnQgXGZQXGZJY29sb3JcZlBcZkIsIGNvbnN0IHZvaWQgKlxmUFxmSW9wdHNcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgbXZ3Y2hnYXQoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgaW50IG4sXGZSCi0gICAgICBcZkJhdHRyX3QgYXR0ciwgc2hvcnQgY29sb3IsIGNvbnN0IHZvaWQgKm9wdHMpXGZSCitcZkJpbnQgbXZ3Y2hnYXQoV0lORE9XICpcZlBcZkl3aW4sIGludCBcZlBcZkl5LCBpbnQgXGZQXGZJeCwgaW50IFxmUFxmSW4sXGZSCisgICAgICBcZkJhdHRyX3QgXGZQXGZJYXR0clxmUFxmQiwgc2hvcnQgXGZQXGZJY29sb3JcZlBcZkIsIGNvbnN0IHZvaWQgKlxmUFxmSW9wdHNcZlBcZkIpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KLVRoZXNlIHJvdXRpbmVzIG1hbmlwdWxhdGUgdGhlIGN1cnJlbnQgYXR0cmlidXRlcyBvZiB0aGUgbmFtZWQgd2luZG93LiAgVGhlCitUaGVzZSByb3V0aW5lcyBtYW5pcHVsYXRlIHRoZSBjdXJyZW50IGF0dHJpYnV0ZXMgb2YgdGhlIG5hbWVkIHdpbmRvdy4KK1RoZQogY3VycmVudCBhdHRyaWJ1dGVzIG9mIGEgd2luZG93IGFwcGx5IHRvIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIHdyaXR0ZW4gaW50bwotdGhlIHdpbmRvdyB3aXRoIFxmQndhZGRjaFxmUiwgXGZCd2FkZHN0clxmUiBhbmQgXGZCd3ByaW50d1xmUi4gIEF0dHJpYnV0ZXMgYXJlCit0aGUgd2luZG93IHdpdGggXGZCd2FkZGNoXGZSLCBcZkJ3YWRkc3RyXGZSIGFuZCBcZkJ3cHJpbnR3XGZSLgorQXR0cmlidXRlcyBhcmUKIGEgcHJvcGVydHkgb2YgdGhlIGNoYXJhY3RlciwgYW5kIG1vdmUgd2l0aCB0aGUgY2hhcmFjdGVyIHRocm91Z2ggYW55IHNjcm9sbGluZwotYW5kIGluc2VydC9kZWxldGUgbGluZS9jaGFyYWN0ZXIgb3BlcmF0aW9ucy4gIFRvIHRoZSBleHRlbnQgcG9zc2libGUsIHRoZXkgYXJlCithbmQgaW5zZXJ0L2RlbGV0ZSBsaW5lL2NoYXJhY3RlciBvcGVyYXRpb25zLgorVG8gdGhlIGV4dGVudCBwb3NzaWJsZSwgdGhleSBhcmUKIGRpc3BsYXllZCBhcyBhcHByb3ByaWF0ZSBtb2RpZmljYXRpb25zIHRvIHRoZSBncmFwaGljIHJlbmRpdGlvbiBvZiBjaGFyYWN0ZXJzCiBwdXQgb24gdGhlIHNjcmVlbi4KKy5TUyBhdHRyc2V0CiAuUFAKIFRoZSByb3V0aW5lIFxmQmF0dHJzZXRcZlIgc2V0cyB0aGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIHRoZSBnaXZlbiB3aW5kb3cgdG8KLVxmSWF0dHJzXGZSLiAgVGhlIHJvdXRpbmUgXGZCYXR0cm9mZlxmUiB0dXJucyBvZmYgdGhlIG5hbWVkIGF0dHJpYnV0ZXMgd2l0aG91dAotdHVybmluZyBhbnkgb3RoZXIgYXR0cmlidXRlcyBvbiBvciBvZmYuICBUaGUgcm91dGluZSBcZkJhdHRyb25cZlIgdHVybnMgb24gdGhlCi1uYW1lZCBhdHRyaWJ1dGVzIHdpdGhvdXQgYWZmZWN0aW5nIGFueSBvdGhlcnMuICBUaGUgcm91dGluZSBcZkJzdGFuZG91dFxmUiBpcwotdGhlIHNhbWUgYXMgXGZCYXR0cm9uKEFfU1RBTkRPVVQpXGZSLiAgVGhlIHJvdXRpbmUgXGZCc3RhbmRlbmRcZlIgaXMgdGhlIHNhbWUKK1xmSWF0dHJzXGZSLgorVGhlIHJvdXRpbmUgXGZCYXR0cm9mZlxmUiB0dXJucyBvZmYgdGhlIG5hbWVkIGF0dHJpYnV0ZXMgd2l0aG91dAordHVybmluZyBhbnkgb3RoZXIgYXR0cmlidXRlcyBvbiBvciBvZmYuCitUaGUgcm91dGluZSBcZkJhdHRyb25cZlIgdHVybnMgb24gdGhlCituYW1lZCBhdHRyaWJ1dGVzIHdpdGhvdXQgYWZmZWN0aW5nIGFueSBvdGhlcnMuCitUaGUgcm91dGluZSBcZkJzdGFuZG91dFxmUiBpcwordGhlIHNhbWUgYXMgXGZCYXR0cm9uKEFfU1RBTkRPVVQpXGZSLgorVGhlIHJvdXRpbmUgXGZCc3RhbmRlbmRcZlIgaXMgdGhlIHNhbWUKIGFzIFxmQmF0dHJzZXQoQV9OT1JNQUwpXGZSIG9yIFxmQmF0dHJzZXQoMClcZlIsIHRoYXQgaXMsIGl0IHR1cm5zIG9mZiBhbGwKIGF0dHJpYnV0ZXMuCiAuUFAKQEAgLTEzNywzNiArMTQ1LDU3IEBACiB3aGVuIGVyYXNpbmcgcG9ydGlvbnMgb2YgdGhlIHdpbmRvdy4KIFNlZSBcZkJjdXJzX2JrZ2RcZlIoM1gpIGZvciBmdW5jdGlvbnMgd2hpY2ggbW9kaWZ5IHRoZSBhdHRyaWJ1dGVzIHVzZWQgZm9yCiBlcmFzaW5nIGFuZCBjbGVhcmluZy4KKy5TUyBhdHRyX3NldAorVGhlIFxmQmF0dHJzZXRcZlAgcm91dGluZSBpcyBhY3R1YWxseSBhIGxlZ2FjeSBmZWF0dXJlIHByZWRhdGluZyBTVnI0IGN1cnNlcworYnV0IGtlcHQgaW4gWC9PcGVuIEN1cnNlcyBmb3IgdGhlIHNhbWUgcmVhc29uIHRoYXQgU1ZyNCBjdXJzZXMga2VwdCBpdDoKK2NvbXBhdGJpbGl0eS4KK1RoZSByb3V0aW5lIFxmQmF0dHJfc2V0XGZQIHByb3ZpZGVzIGZvciBwYXNzaW5nIGEgY29sb3ItcGFpciBwYXJhbWV0ZXIuCisuUFAKK1RoZSByZW1haW5pbmcgXGZCYXR0cl9cZlIqIGZ1bmN0aW9ucyBvcGVyYXRlIGV4YWN0bHkgbGlrZSB0aGUgY29ycmVzcG9uZGluZworXGZCYXR0clxmUiogZnVuY3Rpb25zLCBleGNlcHQgdGhhdCB0aGV5IHRha2UgYXJndW1lbnRzIG9mIHR5cGUgXGZCYXR0cl90XGZSCityYXRoZXIgdGhhbiBcZkJpbnRcZlIuCisuU1MgY29sb3Jfc2V0CiAuUFAKIFRoZSByb3V0aW5lIFxmQmNvbG9yX3NldFxmUiBzZXRzIHRoZSBjdXJyZW50IGNvbG9yIG9mIHRoZSBnaXZlbiB3aW5kb3cgdG8gdGhlCi1mb3JlZ3JvdW5kL2JhY2tncm91bmQgY29tYmluYXRpb24gZGVzY3JpYmVkIGJ5IHRoZSBjb2xvcl9wYWlyX251bWJlci4gVGhlCitmb3JlZ3JvdW5kL2JhY2tncm91bmQgY29tYmluYXRpb24gZGVzY3JpYmVkIGJ5IHRoZSBjb2xvcl9wYWlyX251bWJlci4KK1RoZQogcGFyYW1ldGVyIG9wdHMgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UsIGFwcGxpY2F0aW9ucyBtdXN0IHN1cHBseSBhIG51bGwKIHBvaW50ZXIuCisuU1MgYXR0cl9nZXQKIC5QUAogVGhlIHJvdXRpbmUgXGZCd2F0dHJfZ2V0XGZSIHJldHVybnMgdGhlIGN1cnJlbnQgYXR0cmlidXRlIGFuZCBjb2xvciBwYWlyIGZvcgogdGhlIGdpdmVuIHdpbmRvdzsgXGZCYXR0cl9nZXRcZlIgcmV0dXJucyB0aGUgY3VycmVudCBhdHRyaWJ1dGUgYW5kIGNvbG9yIHBhaXIKIGZvciBcZkJzdGRzY3JcZlIuCi1UaGUgcmVtYWluaW5nIFxmQmF0dHJfXGZSKiBmdW5jdGlvbnMgb3BlcmF0ZSBleGFjdGx5IGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcKLVxmQmF0dHJcZlIqIGZ1bmN0aW9ucywgZXhjZXB0IHRoYXQgdGhleSB0YWtlIGFyZ3VtZW50cyBvZiB0eXBlIFxmQmF0dHJfdFxmUgotcmF0aGVyIHRoYW4gXGZCaW50XGZSLgorLlBQCitUaGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIFxmQmF0dHJnZXRcZlAgZnVuY3Rpb24gYXMgc3VjaCBpbiBYL09wZW4gQ3Vyc2VzLAorYWx0aG91Z2ggbmN1cnNlcyBwcm92aWRlcyBcZkJnZXRhdHRyc1xmUCAoc2VlIGN1cnNfbGVnYWN5KDN4KSkuCisuU1MgY2hnYXQKIC5QUAogVGhlIHJvdXRpbmUgXGZCY2hnYXRcZlIgY2hhbmdlcyB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzCi1zdGFydGluZyBhdCB0aGUgY3VycmVudCBjdXJzb3IgbG9jYXRpb24gb2YgXGZCc3Rkc2NyXGZSLiAgSXQgZG9lcyBub3QgdXBkYXRlCi10aGUgY3Vyc29yIGFuZCBkb2VzIG5vdCBwZXJmb3JtIHdyYXBwaW5nLiAgQSBjaGFyYWN0ZXIgY291bnQgb2YgLTEgb3IgZ3JlYXRlcgorc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIGxvY2F0aW9uIG9mIFxmQnN0ZHNjclxmUi4KK0l0IGRvZXMgbm90IHVwZGF0ZQordGhlIGN1cnNvciBhbmQgZG9lcyBub3QgcGVyZm9ybSB3cmFwcGluZy4KK0EgY2hhcmFjdGVyIGNvdW50IG9mIFwtMSBvciBncmVhdGVyCiB0aGFuIHRoZSByZW1haW5pbmcgd2luZG93IHdpZHRoIG1lYW5zIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIGFsbCB0aGUgd2F5IHRvIHRoZQotZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUuICBUaGUgXGZCd2NoZ2F0XGZSIGZ1bmN0aW9uIGdlbmVyYWxpemVzIHRoaXMgdG8gYW55Ci13aW5kb3c7IHRoZSBcZkJtdndjaGdhdFxmUiBmdW5jdGlvbiBkb2VzIGEgY3Vyc29yIG1vdmUgYmVmb3JlIGFjdGluZy4gIEluIHRoZXNlCitlbmQgb2YgdGhlIGN1cnJlbnQgbGluZS4KK1RoZSBcZkJ3Y2hnYXRcZlIgZnVuY3Rpb24gZ2VuZXJhbGl6ZXMgdGhpcyB0byBhbnkKK3dpbmRvdzsgdGhlIFxmQm12d2NoZ2F0XGZSIGZ1bmN0aW9uIGRvZXMgYSBjdXJzb3IgbW92ZSBiZWZvcmUgYWN0aW5nLgorSW4gdGhlc2UKIGZ1bmN0aW9ucywgdGhlIGNvbG9yIGFyZ3VtZW50IGlzIGEgY29sb3ItcGFpciBpbmRleCAoYXMgaW4gdGhlIGZpcnN0IGFyZ3VtZW50Ci1vZiBcZklpbml0X3BhaXJcZlIsIHNlZSBcZkJjdXJzX2NvbG9yXGZSKDNYKSkuICBUaGUgXGZCb3B0c1xmUiBhcmd1bWVudCBpcyBub3QKK29mIFxmSWluaXRfcGFpclxmUiwgc2VlIFxmQmN1cnNfY29sb3JcZlIoM1gpKS4KK1RoZSBcZkJvcHRzXGZSIGFyZ3VtZW50IGlzIG5vdAogcHJlc2VudGx5IHVzZWQsIGJ1dCBpcyByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSAobGVhdmUgaXQgXGZCTlVMTFxmUikuCiAuU1MgQXR0cmlidXRlcwogVGhlIGZvbGxvd2luZyB2aWRlbyBhdHRyaWJ1dGVzLCBkZWZpbmVkIGluIFxmQjxjdXJzZXMuaD5cZlIsIGNhbiBiZSBwYXNzZWQgdG8KIHRoZSByb3V0aW5lcyBcZkJhdHRyb25cZlIsIFxmQmF0dHJvZmZcZlIsIGFuZCBcZkJhdHRyc2V0XGZSLCBvciBPUidkIHdpdGggdGhlCi1jaGFyYWN0ZXJzIHBhc3NlZCB0byBcZkJhZGRjaFxmUi4KK2NoYXJhY3RlcnMgcGFzc2VkIHRvIFxmQmFkZGNoXGZSIChzZWUgY3Vyc19hZGRjaCgzeCkpLgogLlBQCisuUlMKIC5UUwotY2VudGVyIDsKK2wgbAorXyBfIF8KIGwgbCAuCitcZklOYW1lXGZSCVxmSURlc2NyaXB0aW9uXGZSCiBcZkJBX05PUk1BTFxmUglOb3JtYWwgZGlzcGxheSAobm8gaGlnaGxpZ2h0KQogXGZCQV9TVEFORE9VVFxmUglCZXN0IGhpZ2hsaWdodGluZyBtb2RlIG9mIHRoZSB0ZXJtaW5hbC4KIFxmQkFfVU5ERVJMSU5FXGZSCVVuZGVybGluaW5nCkBAIC0xNzcsOSArMjA2LDMwIEBACiBcZkJBX1BST1RFQ1RcZlIJUHJvdGVjdGVkIG1vZGUKIFxmQkFfSU5WSVNcZlIJSW52aXNpYmxlIG9yIGJsYW5rIG1vZGUKIFxmQkFfQUxUQ0hBUlNFVFxmUglBbHRlcm5hdGUgY2hhcmFjdGVyIHNldAorXGZCQV9JVEFMSUNcZlIJSXRhbGljcyAobm9uLVgvT3BlbiBleHRlbnNpb24pCiBcZkJBX0NIQVJURVhUXGZSCUJpdC1tYXNrIHRvIGV4dHJhY3QgYSBjaGFyYWN0ZXIKIFxmQkNPTE9SX1BBSVIoXGZSXGZJblxmUlxmQilcZlIJQ29sb3ItcGFpciBudW1iZXIgXGZJblxmUgogLlRFCisuUkUKKy5QUAorVGhlc2UgdmlkZW8gYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkIGJ5IFxmQmF0dHJfb25cZlAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zCisod2hpY2ggYWxzbyBzdXBwb3J0IHRoZSBhdHRyaWJ1dGVzIHJlY29nbml6ZWQgYnkgXGZCYXR0cm9uXGZQLCBldGMuKToKKy5SUworLlRTCitsIGwKK18gXyBfCitsIGwgLgorXGZJTmFtZVxmUglcZklEZXNjcmlwdGlvblxmUgorXGZCV0FfSE9SSVpPTlRBTFxmUglIb3Jpem9udGFsIGhpZ2hsaWdodAorXGZCV0FfTEVGVFxmUglMZWZ0IGhpZ2hsaWdodAorXGZCV0FfTE9XXGZSCUxvdyBoaWdobGlnaHQKK1xmQldBX1JJR0hUXGZSCVJpZ2h0IGhpZ2hsaWdodAorXGZCV0FfVE9QXGZSCVRvcCBoaWdobGlnaHQKK1xmQldBX1ZFUlRJQ0FMXGZSCVZlcnRpY2FsIGhpZ2hsaWdodAorLlRFCisuUkUKKy5QUAorRm9yIGNvbnNpc3RlbmN5CiAuUFAKIFRoZSBmb2xsb3dpbmcgbWFjcm8gaXMgdGhlIHJldmVyc2Ugb2YgXGZCQ09MT1JfUEFJUihcZlJcZkluXGZSXGZCKVxmUjoKIC5QUApAQCAtMjAyLDMwICsyNTIsNDMgQEAKIEhvd2V2ZXIsIG5jdXJzZXMgQUJJIDQgYW5kIDUgc2ltcGx5IE9SIHRoaXMgdmFsdWUgd2l0aGluIHRoZSBhbHRlcm5hdGUgZnVuY3Rpb25zLgogWW91IG11c3QgdXNlIG5jdXJzZXMgQUJJIDYgdG8gc3VwcG9ydCBtb3JlIHRoYW4gMjU2IGNvbG9yIHBhaXJzLgogLlNIIFBPUlRBQklMSVRZCi1UaGVzZSBmdW5jdGlvbnMgYXJlIHN1cHBvcnRlZCBpbiB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwgSXNzdWUgNC4gIFRoZQorVGhlc2UgZnVuY3Rpb25zIGFyZSBzdXBwb3J0ZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCitUaGUKIHN0YW5kYXJkIGRlZmluZWQgdGhlIGRlZGljYXRlZCB0eXBlIGZvciBoaWdobGlnaHRzLCBcZkJhdHRyX3RcZlIsIHdoaWNoIGlzIG5vdAotZGVmaW5lZCBpbiBTVnI0IGN1cnNlcy4gVGhlIGZ1bmN0aW9ucyB0YWtpbmcgXGZCYXR0cl90XGZSIGFyZ3VtZW50cyBhcmUKK2RlZmluZWQgaW4gU1ZyNCBjdXJzZXMuCitUaGUgZnVuY3Rpb25zIHRha2luZyBcZkJhdHRyX3RcZlIgYXJndW1lbnRzIGFyZQogbm90IHN1cHBvcnRlZCB1bmRlciBTVnI0LgogLlBQCiBUaGUgWFNJIEN1cnNlcyBzdGFuZGFyZCBzdGF0ZXMgdGhhdCB3aGV0aGVyIHRoZSB0cmFkaXRpb25hbCBmdW5jdGlvbnMKIFxmQmF0dHJvblxmUi9cZkJhdHRyb2ZmXGZSL1xmQmF0dHJzZXRcZlIgY2FuIG1hbmlwdWxhdGUgYXR0cmlidXRlcyBvdGhlciB0aGFuCiBcZkJBX0JMSU5LXGZSLCBcZkJBX0JPTERcZlIsIFxmQkFfRElNXGZSLCBcZkJBX1JFVkVSU0VcZlIsIFxmQkFfU1RBTkRPVVRcZlIsIG9yCi1cZkJBX1VOREVSTElORVxmUiBpcyAidW5zcGVjaWZpZWQiLiAgVW5kZXIgdGhpcyBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsIGFzCitcZkJBX1VOREVSTElORVxmUiBpcyAidW5zcGVjaWZpZWQiLgorVW5kZXIgdGhpcyBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsIGFzCiBTVnI0IGN1cnNlcywgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseSBtYW5pcHVsYXRlIGFsbCBvdGhlciBoaWdobGlnaHRzCiAoc3BlY2lmaWNhbGx5LCBcZkJBX0FMVENIQVJTRVRcZlIsIFxmQkFfUFJPVEVDVFxmUiwgYW5kIFxmQkFfSU5WSVNcZlIpLgogLlBQCitUaGlzIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIHRoZSBcZkJBX0lUQUxJQ1xmUCBhdHRyaWJ1dGUgZm9yIHRlcm1pbmFscword2hpY2ggaGF2ZSB0aGUgXGZJZW50ZXJfaXRhbGljc19tb2RlXGZQIChzaXRtKSBhbmQgXGZJZXhpdF9pdGFsaWNzX21vZGVcZlAgKHJpdG0pIGNhcGFiaWxpdGllcy4KK0l0YWxpY3MgYXJlIG5vdCBtZW50aW9uZWQgaW4gWC9PcGVuIEN1cnNlcy4KK1VubGlrZSB0aGUgb3RoZXIgdmlkZW8gYXR0cmlidXRlcywgXGZCSV9JVEFMSUNcZlAgaXMgdW5yZWxhdGVkCit0byB0aGUgXGZJc2V0X2F0dHJpYnV0ZXNcZlAgY2FwYWJpbGl0aWVzLgorVGhpcyBpbXBsZW1lbnRhdGlvbiBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0CitcZklleGl0X2F0dHJpYnV0ZV9tb2RlXGZQIG1heSBhbHNvIHJlc2V0IGl0YWxpY3MuCisuUFAKIFhTSSBDdXJzZXMgYWRkZWQgdGhlIG5ldyBlbnRyeSBwb2ludHMsIFxmQmF0dHJfZ2V0XGZSLCBcZkJhdHRyX29uXGZSLAogXGZCYXR0cl9vZmZcZlIsIFxmQmF0dHJfc2V0XGZSLCBcZkJ3YXR0cl9vblxmUiwgXGZCd2F0dHJfb2ZmXGZSLAotXGZCd2F0dHJfZ2V0XGZSLCBcZkJ3YXR0cl9zZXRcZlIuICBUaGVzZSBhcmUgaW50ZW5kZWQgdG8gd29yayB3aXRoCitcZkJ3YXR0cl9nZXRcZlIsIFxmQndhdHRyX3NldFxmUi4KK1RoZXNlIGFyZSBpbnRlbmRlZCB0byB3b3JrIHdpdGgKIGEgbmV3IHNlcmllcyBvZiBoaWdobGlnaHQgbWFjcm9zIHByZWZpeGVkIHdpdGggXGZCV0FfXGZSLgorVGhlIG9sZGVyIG1hY3JvcyBoYXZlIGRpcmVjdCBjb3VudGVycGFydHMgaW4gdGhlIG5ld2VyIHNldCBvZiBuYW1lczoKIC5QUAotT2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBsaWJyYXJ5IGRpZCBub3QgZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBzY3JlZW4KLXdoZW4gY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMuCi1Vc2UgXGZCdG91Y2h3aW5cZlIgdG8gZm9yY2UgdGhlIHNjcmVlbiB0byBtYXRjaCB0aGUgdXBkYXRlZCBhdHRyaWJ1dGVzLgotLlBQCisuUlMKKy5uZSA5CiAuVFMKLWNlbnRlciA7CitsIGwKK18gXyBfCiBsIGwgLgorXGZJTmFtZVxmUglcZklEZXNjcmlwdGlvblxmUgogXGZCV0FfTk9STUFMXGZSCU5vcm1hbCBkaXNwbGF5IChubyBoaWdobGlnaHQpCiBcZkJXQV9TVEFORE9VVFxmUglCZXN0IGhpZ2hsaWdodGluZyBtb2RlIG9mIHRoZSB0ZXJtaW5hbC4KIFxmQldBX1VOREVSTElORVxmUglVbmRlcmxpbmluZwpAQCAtMjM1LDYgKzI5OCwxMSBAQAogXGZCV0FfQk9MRFxmUglFeHRyYSBicmlnaHQgb3IgYm9sZAogXGZCV0FfQUxUQ0hBUlNFVFxmUglBbHRlcm5hdGUgY2hhcmFjdGVyIHNldAogLlRFCisuUkUKKy5QUAorVmVyeSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBsaWJyYXJ5IGRpZCBub3QgZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBzY3JlZW4KK3doZW4gY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMuCitVc2UgXGZCdG91Y2h3aW5cZlIgdG8gZm9yY2UgdGhlIHNjcmVlbiB0byBtYXRjaCB0aGUgdXBkYXRlZCBhdHRyaWJ1dGVzLgogLlBQCiBUaGUgWFNJIGN1cnNlcyBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBcZkJBX1xmUgogYW5kIFxmQldBX1xmUi11c2luZyBmdW5jdGlvbnMgb3BlcmF0ZXMgb24gdGhlIHNhbWUgY3VycmVudC1oaWdobGlnaHQKQEAgLTI0Miw4ICszMTAsMTAgQEAKIC5QUAogVGhlIFhTSSBzdGFuZGFyZCBleHRlbmRlZCBjb25mb3JtYW5jZSBsZXZlbCBhZGRzIG5ldyBoaWdobGlnaHRzCiBcZkJBX0hPUklaT05UQUxcZlIsIFxmQkFfTEVGVFxmUiwgXGZCQV9MT1dcZlIsIFxmQkFfUklHSFRcZlIsIFxmQkFfVE9QXGZSLAotXGZCQV9WRVJUSUNBTFxmUiAoYW5kIGNvcnJlc3BvbmRpbmcgXGZCV0FfXGZSIG1hY3JvcyBmb3IgZWFjaCkgd2hpY2ggdGhpcwotaW1wbGVtZW50YXRpb24gZG9lcyBub3QgeWV0IHN1cHBvcnQuCitcZkJBX1ZFUlRJQ0FMXGZSIChhbmQgY29ycmVzcG9uZGluZyBcZkJXQV9cZlIgbWFjcm9zIGZvciBlYWNoKS4KK0FzIG9mIEF1Z3VzdCAyMDEzLAorbm8ga25vd24gdGVybWluYWwgcHJvdmlkZXMgdGhlc2UgaGlnaGxpZ2h0cworKGkuZS4sIHZpYSB0aGUgXGZCc2dyMVxmUCBjYXBhYmlsaXR5KS4KIC5TSCBSRVRVUk4gVkFMVUUKIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgXGZCT0tcZlIgb24gc3VjY2Vzcywgb3IgXGZCRVJSXGZQIG9uIGZhaWx1cmUuCiAuUFAKQEAgLTI1MiwxOSArMzIyLDE5IEBACiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgYW4gZXJyb3IKIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogVGhlIFxmQndjb2xvcl9zZXRcZlAgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgY29sb3IgcGFpciBwYXJhbWV0ZXIKLWlzIG91dHNpZGUgdGhlIHJhbmdlIDAuLkNPTE9SX1BBSVJTLTEuCitpcyBvdXRzaWRlIHRoZSByYW5nZSAwLi5DT0xPUl9QQUlSU1wtMS4KIFRoaXMgaW1wbGVtZW50YXRpb24gYWxzbyBwcm92aWRlcwogXGZCZ2V0YXR0cnNcZlIKIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgY3Vyc2VzLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBTRUUgQUxTTworLm5hCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19hZGRjaFxmUigzWCksCiBcZkJjdXJzX2FkZHN0clxmUigzWCksCiBcZkJjdXJzX2JrZ2RcZlIoM1gpLAotXGZCY3Vyc19wcmludHdcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNfcHJpbnR3XGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKQpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfYmVlcC4zeCBiL21hbi9jdXJzX2JlZXAuM3gKaW5kZXggNDllNTc2MS4uYzZhZjZmMCAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfYmVlcC4zeAorKysgYi9tYW4vY3Vyc19iZWVwLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTAgKzI2LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2JlZXAuM3gsdiAxLjEwIDIwMDUvMDEvMDggMTc6NTU6NTEgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2JlZXAuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCAkCiAuVEggY3Vyc19iZWVwIDNYICIiCiAuU0ggTkFNRQotXGZCYmVlcFxmUiwgXGZCZmxhc2hcZlIgLSBcZkJjdXJzZXNcZlIgYmVsbCBhbmQgc2NyZWVuIGZsYXNoIHJvdXRpbmVzCitcZkJiZWVwXGZSLCBcZkJmbGFzaFxmUiBcLSBcZkJjdXJzZXNcZlIgYmVsbCBhbmQgc2NyZWVuIGZsYXNoIHJvdXRpbmVzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5QUApAQCAtNTUsOSArNTUsMyBAQAogTGlrZSBTVnI0LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGV5IGFsd2F5cyByZXR1cm4gXGZCT0tcZlIuCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfYmtnZC4zeCBiL21hbi9jdXJzX2JrZ2QuM3gKaW5kZXggYjJkNzY4YS4uNTBjM2IzMCAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfYmtnZC4zeAorKysgYi9tYW4vY3Vyc19ia2dkLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMjYgKzI2LDMwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2JrZ2QuM3gsdiAxLjE5IDIwMDMvMTIvMjcgMTg6NTA6NDAgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2JrZ2QuM3gsdiAxLjIzIDIwMTUvMDcvMjEgMDA6MTE6MDUgdG9tIEV4cCAkCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuVEggY3Vyc19ia2dkIDNYICIiCiAuU0ggTkFNRQogXGZCYmtnZHNldFxmUiwgXGZCd2JrZ2RzZXRcZlIsCiBcZkJia2dkXGZSLCBcZkJ3YmtnZFxmUiwKLVxmQmdldGJrZ2RcZlIgLSBcZkJjdXJzZXNcZlIgd2luZG93IGJhY2tncm91bmQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzCitcZkJnZXRia2dkXGZSIFwtIFxmQmN1cnNlc1xmUiB3aW5kb3cgYmFja2dyb3VuZCBtYW5pcHVsYXRpb24gcm91dGluZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLlBQCi1cZkJ2b2lkIGJrZ2RzZXQoY2h0eXBlIGNoKTtcZlIKK1xmQnZvaWQgYmtnZHNldChjaHR5cGUgXGZQXGZJY2hcZlBcZkIpO1xmUgogLmJyCi1cZkJ2b2lkIHdia2dkc2V0KFdJTkRPVyAqd2luLCBjaHR5cGUgY2gpO1xmUgorXGZCdm9pZCB3YmtnZHNldChXSU5ET1cgKlxmUFxmSXdpbiwgY2h0eXBlIFxmUFxmSWNoXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IGJrZ2QoY2h0eXBlIGNoKTtcZlIKK1xmQmludCBia2dkKGNodHlwZSBcZlBcZkljaFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCB3YmtnZChXSU5ET1cgKndpbiwgY2h0eXBlIGNoKTtcZlIKK1xmQmludCB3YmtnZChXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgY2h0eXBlIFxmUFxmSWNoXGZQXGZCKTtcZlIKIC5icgotXGZCY2h0eXBlIGdldGJrZ2QoV0lORE9XICp3aW4pO1xmUgorXGZCY2h0eXBlIGdldGJrZ2QoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KKy5TUyBia2dkc2V0CiBUaGUgXGZCYmtnZHNldFxmUiBhbmQgXGZCd2JrZ2RzZXRcZlIgcm91dGluZXMgbWFuaXB1bGF0ZSB0aGUKIGJhY2tncm91bmQgb2YgdGhlIG5hbWVkIHdpbmRvdy4KIFRoZSB3aW5kb3cgYmFja2dyb3VuZCBpcyBhIFxmQmNodHlwZVxmUiBjb25zaXN0aW5nIG9mCkBAIC02MCwzOSArNjQsNDAgQEAKIFRvIHRoZSBleHRlbnQgcG9zc2libGUgb24gYSBwYXJ0aWN1bGFyIHRlcm1pbmFsLAogdGhlIGF0dHJpYnV0ZSBwYXJ0IG9mIHRoZSBiYWNrZ3JvdW5kIGlzIGRpc3BsYXllZAogYXMgdGhlIGdyYXBoaWMgcmVuZGl0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgcHV0IG9uIHRoZSBzY3JlZW4uCisuU1MgYmtnZAogLlBQCiBUaGUgXGZCYmtnZFxmUiBhbmQgXGZCd2JrZ2RcZlIgZnVuY3Rpb25zCiBzZXQgdGhlIGJhY2tncm91bmQgcHJvcGVydHkgb2YgdGhlIGN1cnJlbnQgb3Igc3BlY2lmaWVkIHdpbmRvdwogYW5kIHRoZW4gYXBwbHkgdGhpcyBzZXR0aW5nIHRvIGV2ZXJ5IGNoYXJhY3RlciBwb3NpdGlvbiBpbiB0aGF0IHdpbmRvdzoKIC5QUAotLlJTCisuYlAKIFRoZSByZW5kaXRpb24gb2YgZXZlcnkgY2hhcmFjdGVyIG9uIHRoZSBzY3JlZW4gaXMgY2hhbmdlZCB0bwogdGhlIG5ldyBiYWNrZ3JvdW5kIHJlbmRpdGlvbi4KLS5QUAorLmJQCiBXaGVyZXZlciB0aGUgZm9ybWVyIGJhY2tncm91bmQgY2hhcmFjdGVyCiBhcHBlYXJzLCBpdCBpcyBjaGFuZ2VkIHRvIHRoZSBuZXcgYmFja2dyb3VuZCBjaGFyYWN0ZXIuCiAuUkUKKy5TUyBnZXRia2dkCiAuUFAKIFRoZSBcZkJnZXRia2dkXGZSIGZ1bmN0aW9uIHJldHVybnMgdGhlIGdpdmVuIHdpbmRvdydzIGN1cnJlbnQgYmFja2dyb3VuZAogY2hhcmFjdGVyL2F0dHJpYnV0ZSBwYWlyLgogLlNIIFJFVFVSTiBWQUxVRQorLlBQCiBUaGUgcm91dGluZXMgXGZCYmtnZFxmUiBhbmQgXGZCd2JrZ2RcZlIgcmV0dXJuIHRoZSBpbnRlZ2VyIFxmQk9LXGZSLgogVGhlIFNWcjQuMCBtYW51YWwgc2F5cyAib3IgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpZiBcZkJpbW1lZG9rXGZSIGlzIHNldCIsCiBidXQgdGhpcyBhcHBlYXJzIHRvIGJlIGFuIGVycm9yLgogLlNIIE5PVEVTCisuUFAKIE5vdGUgdGhhdCBcZkJia2dkc2V0XGZSIGFuZCBcZkJia2dkXGZSIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKKy5QUAogVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCi1JdCBzcGVjaWZpZXMgdGhhdCBcZkJia2dkXGZSIGFuZCBcZkJ3YmtnZFxmUiByZXR1cm4gXGZCRVJSXGZSIG9uIGZhaWx1cmUuCitJdCBzcGVjaWZpZXMgdGhhdCBcZkJia2dkXGZSIGFuZCBcZkJ3YmtnZFxmUiByZXR1cm4gXGZCRVJSXGZSIG9uIGZhaWx1cmUsCiBidXQgZ2l2ZXMgbm8gZmFpbHVyZSBjb25kaXRpb25zLgogLlNIIFNFRSBBTFNPCisubmEKKy5QUAogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQmN1cnNfYWRkY2hcZlIoM1gpLAogXGZCY3Vyc19hdHRyXGZSKDNYKSwKIFxmQmN1cnNfb3V0b3B0c1xmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfYmtncm5kLjN4IGIvbWFuL2N1cnNfYmtncm5kLjN4CmluZGV4IDhjNmY2YWYuLjJiYmI0ZmMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2JrZ3JuZC4zeAorKysgYi9tYW4vY3Vyc19ia2dybmQuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEyLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiwxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19ia2dybmQuM3gsdiAxLjMgMjAwNi8wMi8yNSAyMTo0OToxOSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfYmtncm5kLjN4LHYgMS42IDIwMTUvMDcvMjEgMDA6MTg6NDIgdG9tIEV4cCAkCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuVEggY3Vyc19ia2dybmQgM1ggIiIKIC5TSCBOQU1FCiBcZkJia2dybmRcZlIsCkBAIC01Miw2ICs1NSw4IEBACiBcZkJpbnQgd2dldGJrZ3JuZChXSU5ET1cgKlxmUlxmSXdpblxmUlxmQiwgY2NoYXJfdCAqXGZSXGZJd2NoXGZSXGZCKTtcZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCisuU1MgYmtncm5kc2V0CisuUFAKIFRoZSBcZkJia2dybmRzZXRcZlIgYW5kIFxmQndia2dybmRzZXRcZlIgcm91dGluZXMgbWFuaXB1bGF0ZSB0aGUKIGJhY2tncm91bmQgb2YgdGhlIG5hbWVkIHdpbmRvdy4KIFRoZSB3aW5kb3cgYmFja2dyb3VuZCBpcyBhIFxmQmNjaGFyX3RcZlIgY29uc2lzdGluZyBvZgpAQCAtNjcsMjkgKzcyLDI5IEBACiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIG9uIGEKIHBhcnRpY3VsYXIgdGVybWluYWwsIHRoZSBhdHRyaWJ1dGUgcGFydCBvZiB0aGUgYmFja2dyb3VuZCBpcyBkaXNwbGF5ZWQKIGFzIHRoZSBncmFwaGljIHJlbmRpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHB1dCBvbiB0aGUgc2NyZWVuLgorLlNTIGJrZ3JuZAogLlBQCiBUaGUgXGZCYmtncm5kXGZSIGFuZCBcZkJ3Ymtncm5kXGZSIGZ1bmN0aW9ucwogc2V0IHRoZSBiYWNrZ3JvdW5kIHByb3BlcnR5IG9mIHRoZSBjdXJyZW50IG9yIHNwZWNpZmllZCB3aW5kb3cKIGFuZCB0aGVuIGFwcGx5IHRoaXMgc2V0dGluZyB0byBldmVyeSBjaGFyYWN0ZXIgcG9zaXRpb24gaW4gdGhhdCB3aW5kb3c6Ci0uUlMKLS5QUAorLmJQCiBUaGUgcmVuZGl0aW9uIG9mIGV2ZXJ5IGNoYXJhY3RlciBvbiB0aGUgc2NyZWVuIGlzIGNoYW5nZWQgdG8KIHRoZSBuZXcgYmFja2dyb3VuZCByZW5kaXRpb24uCi0uUFAKKy5iUAogV2hlcmV2ZXIgdGhlIGZvcm1lciBiYWNrZ3JvdW5kIGNoYXJhY3RlcgogYXBwZWFycywgaXQgaXMgY2hhbmdlZCB0byB0aGUgbmV3IGJhY2tncm91bmQgY2hhcmFjdGVyLgotLlJFCisuU1MgZ2V0Ymtncm5kCiAuUFAKIFRoZSBcZkJnZXRia2dybmRcZlIgZnVuY3Rpb24gcmV0dXJucyB0aGUgZ2l2ZW4gd2luZG93J3MgY3VycmVudCBiYWNrZ3JvdW5kCiBjaGFyYWN0ZXIvYXR0cmlidXRlIHBhaXIgdmlhIHRoZSBcZkJ3Y2hcZlIgcG9pbnRlci4KLS4KIC5TSCBOT1RFUwogTm90ZSB0aGF0CiBcZkJia2dybmRcZlIsCiBcZkJia2dybmRzZXRcZlIsIGFuZAogXGZCZ2V0Ymtncm5kXGZSCiBtYXkgYmUgbWFjcm9zLgotLlNIIFJFVFVSTiBWQUxVRVMKKy5TSCBSRVRVUk4gVkFMVUUKKy5QUAogVGhlIFxmQmJrZ3JuZHNldFxmUiBhbmQgXGZCd2JrZ3JuZHNldFxmUiByb3V0aW5lcyBkbyBub3QgcmV0dXJuIGEgdmFsdWUuCiAuUFAKIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB0aGUgb3RoZXIgZnVuY3Rpb25zIHJldHVybiBcZkJPS1xmUi4KQEAgLTk4LDkgKzEwMywzIEBACiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2JrZ2RcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2JvcmRlci4zeCBiL21hbi9jdXJzX2JvcmRlci4zeAppbmRleCAwOWY5YTRjLi41YTU4ZTlkIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19ib3JkZXIuM3gKKysrIGIvbWFuL2N1cnNfYm9yZGVyLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19ib3JkZXIuM3gsdiAxLjE5IDIwMDcvMDIvMjQgMTY6MTU6MzggdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2JvcmRlci4zeCx2IDEuMjIgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwICQKIC5USCBjdXJzX2JvcmRlciAzWCAiIgogLm5hCiAuaHkgMApAQCAtNDEsNyArNDEsNyBAQAogXGZCbXZobGluZVxmUiwKIFxmQm12d2hsaW5lXGZSLAogXGZCbXZ2bGluZVxmUiwKLVxmQm12d3ZsaW5lXGZSIC0gY3JlYXRlIFxmQmN1cnNlc1xmUiBib3JkZXJzLCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBsaW5lcworXGZCbXZ3dmxpbmVcZlIgXC0gY3JlYXRlIFxmQmN1cnNlc1xmUiBib3JkZXJzLCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBsaW5lcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtNzgsMjEgKzc4LDIxIEBACiBPdGhlciB0aGFuIHRoZSB3aW5kb3csIGVhY2ggYXJndW1lbnQgaXMgYSBjaGFyYWN0ZXIgd2l0aCBhdHRyaWJ1dGVzOgogLnNwCiAuUlMKLVxmSWxzXGZSIC0gbGVmdCBzaWRlLAorXGZJbHNcZlIgXC0gbGVmdCBzaWRlLAogLmJyCi1cZklyc1xmUiAtIHJpZ2h0IHNpZGUsCitcZklyc1xmUiBcLSByaWdodCBzaWRlLAogLmJyCi1cZkl0c1xmUiAtIHRvcCBzaWRlLAorXGZJdHNcZlIgXC0gdG9wIHNpZGUsCiAuYnIKLVxmSWJzXGZSIC0gYm90dG9tIHNpZGUsCitcZklic1xmUiBcLSBib3R0b20gc2lkZSwKIC5icgotXGZJdGxcZlIgLSB0b3AgbGVmdC1oYW5kIGNvcm5lciwKK1xmSXRsXGZSIFwtIHRvcCBsZWZ0LWhhbmQgY29ybmVyLAogLmJyCi1cZkl0clxmUiAtIHRvcCByaWdodC1oYW5kIGNvcm5lciwKK1xmSXRyXGZSIFwtIHRvcCByaWdodC1oYW5kIGNvcm5lciwKIC5icgotXGZJYmxcZlIgLSBib3R0b20gbGVmdC1oYW5kIGNvcm5lciwgYW5kCitcZklibFxmUiBcLSBib3R0b20gbGVmdC1oYW5kIGNvcm5lciwgYW5kCiAuYnIKLVxmSWJyXGZSIC0gYm90dG9tIHJpZ2h0LWhhbmQgY29ybmVyLgorXGZJYnJcZlIgXC0gYm90dG9tIHJpZ2h0LWhhbmQgY29ybmVyLgogLlJFCiAuUFAKIElmIGFueSBvZiB0aGVzZSBhcmd1bWVudHMgaXMgemVybywgdGhlbiB0aGUgY29ycmVzcG9uZGluZwpAQCAtMTM2LDYgKzEzNiwxMCBAQAogWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhbiBlcnJvcgogaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIE5PVEVTCiBUaGUgYm9yZGVycyBnZW5lcmF0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGFyZSBcZklpbnNpZGVcZlIgYm9yZGVycyAodGhpcwogaXMgYWxzbyB0cnVlIG9mIFNWcjQgY3Vyc2VzLCB0aG91Z2ggdGhlIGZhY3QgaXMgbm90IGRvY3VtZW50ZWQpLgpAQCAtMTQ3LDkgKzE1MSwzIEBACiBidXQgc3BlY2lmaWVzIG5vIGVycm9yIGNvbmRpdGlvbnMuCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfb3V0b3B0c1xmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2JvcmRlcl9zZXQuM3ggYi9tYW4vY3Vyc19ib3JkZXJfc2V0LjN4CmluZGV4IGRiZjg2NTMuLmM5NjIxYWMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2JvcmRlcl9zZXQuM3gKKysrIGIvbWFuL2N1cnNfYm9yZGVyX3NldC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfYm9yZGVyX3NldC4zeCx2IDEuNiAyMDA1LzA1LzE1IDE2OjE3OjM3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19ib3JkZXJfc2V0LjN4LHYgMS4xMSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgJAogLlRIIGN1cnNfYm9yZGVyX3NldCAzWCAiIgogLm5hCiAuaHkgMApAQCAtMTEwLDIxICsxMTAsMjEgQEAKIC5QUAogT3RoZXIgdGhhbiB0aGUgd2luZG93LCBlYWNoIGFyZ3VtZW50IGlzIGEgY29tcGxleCBjaGFyYWN0ZXIgd2l0aCBhdHRyaWJ1dGVzOgogLlJTCi1cZklsc1xmUiAtIGxlZnQgc2lkZSwKK1xmSWxzXGZSIFwtIGxlZnQgc2lkZSwKIC5icgotXGZJcnNcZlIgLSByaWdodCBzaWRlLAorXGZJcnNcZlIgXC0gcmlnaHQgc2lkZSwKIC5icgotXGZJdHNcZlIgLSB0b3Agc2lkZSwKK1xmSXRzXGZSIFwtIHRvcCBzaWRlLAogLmJyCi1cZklic1xmUiAtIGJvdHRvbSBzaWRlLAorXGZJYnNcZlIgXC0gYm90dG9tIHNpZGUsCiAuYnIKLVxmSXRsXGZSIC0gdG9wIGxlZnQtaGFuZCBjb3JuZXIsCitcZkl0bFxmUiBcLSB0b3AgbGVmdC1oYW5kIGNvcm5lciwKIC5icgotXGZJdHJcZlIgLSB0b3AgcmlnaHQtaGFuZCBjb3JuZXIsCitcZkl0clxmUiBcLSB0b3AgcmlnaHQtaGFuZCBjb3JuZXIsCiAuYnIKLVxmSWJsXGZSIC0gYm90dG9tIGxlZnQtaGFuZCBjb3JuZXIsIGFuZAorXGZJYmxcZlIgXC0gYm90dG9tIGxlZnQtaGFuZCBjb3JuZXIsIGFuZAogLmJyCi1cZkliclxmUiAtIGJvdHRvbSByaWdodC1oYW5kIGNvcm5lci4KK1xmSWJyXGZSIFwtIGJvdHRvbSByaWdodC1oYW5kIGNvcm5lci4KIC5SRQogLlBQCiBJZiBhbnkgb2YgdGhlc2UgYXJndW1lbnRzIGlzIHplcm8sIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcKQEAgLTE4Nyw3ICsxODcsNyBAQAogXGZCdmxpbmVfc2V0XGZSCiBtYXkgYmUgbWFjcm9zLgogLmJyCi0uU0ggUkVUVVJOIFZBTFVFUworLlNIIFJFVFVSTiBWQUxVRQogLlBQCiBVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgdGhlc2UgZnVuY3Rpb25zIHJldHVybgogXGZCT0tcZlIuCkBAIC0xOTUsMTMgKzE5NSwxMiBAQAogXGZCRVJSXGZSLgogLlBQCiBGdW5jdGlvbnMgdXNpbmcgYSB3aW5kb3cgcGFyYW1ldGVyIHJldHVybiBhbiBlcnJvciBpZiBpdCBpcyBudWxsLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBTRUUgQUxTTwogXGZCbmN1cnNlc1xmUigzWCksCitcZkJjdXJzX2FkZF93Y2hcZlIoM1gpLAogXGZCY3Vyc19ib3JkZXJcZlIoM1gpLAogXGZCY3Vyc19vdXRvcHRzXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19jbGVhci4zeCBiL21hbi9jdXJzX2NsZWFyLjN4CmluZGV4IGFkYmZkMmMuLjMwNWM2MDggMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2NsZWFyLjN4CisrKyBiL21hbi9jdXJzX2NsZWFyLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19jbGVhci4zeCx2IDEuMTEgMjAwNy8xMi8yOSAxNTo1ODozOCB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfY2xlYXIuM3gsdiAxLjE0IDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCAkCiAuVEggY3Vyc19jbGVhciAzWCAiIgogLm5hCiAuaHkgMApAQCAtMzgsNyArMzgsNyBAQAogXGZCY2xydG9ib3RcZlIsCiBcZkJ3Y2xydG9ib3RcZlIsCiBcZkJjbHJ0b2VvbFxmUiwKLVxmQndjbHJ0b2VvbFxmUiAtIGNsZWFyIGFsbCBvciBwYXJ0IG9mIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCd2NscnRvZW9sXGZSIFwtIGNsZWFyIGFsbCBvciBwYXJ0IG9mIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtMTEyLDEwICsxMTIsNyBAQAogSWYgeW91IGRvIG5vdCB3YW50IHRvIGNsZWFyIHRoZSBzY3JlZW4gZHVyaW5nIHRoZSBuZXh0IFxmQndyZWZyZXNoXGZQLAogdXNlIFxmQndlcmFzZVxmUCBpbnN0ZWFkLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX291dG9wdHNcZlIoM1gpLCBcZkJjdXJzX3JlZnJlc2hcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX291dG9wdHNcZlIoM1gpLAorXGZCY3Vyc19yZWZyZXNoXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKQpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfY29sb3IuM3ggYi9tYW4vY3Vyc19jb2xvci4zeAppbmRleCA5OWU2M2VmLi40NmFmODQ0IDEwMDY0NAotLS0gYS9tYW4vY3Vyc19jb2xvci4zeAorKysgYi9tYW4vY3Vyc19jb2xvci4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDggKzI2LDE2IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2NvbG9yLjN4LHYgMS4yOCAyMDA1LzEyLzE4IDAwOjAwOjM3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19jb2xvci4zeCx2IDEuMzkgMjAxNS8wNi8wNiAyMzoyOTowMiB0b20gRXhwICQKIC5USCBjdXJzX2NvbG9yIDNYICIiCisuaWUgXG4oLmcgLmRzIGBgIFwobHEKKy5lbCAgICAgICAuZHMgYGAgYGAKKy5pZSBcbiguZyAuZHMgJycgXChycQorLmVsICAgICAgIC5kcyAnJyAnJworLmRlIGJQCisuSVAgXChidSA0CisuLgorLmRzIG4gNQogLm5hCiAuaHkgMAogLlNIIE5BTUUKQEAgLTM4LDEyICs0NiwxMiBAQAogXGZCY2FuX2NoYW5nZV9jb2xvclxmUiwKIFxmQmNvbG9yX2NvbnRlbnRcZlIsCiBcZkJwYWlyX2NvbnRlbnRcZlIsCi1cZkJDT0xPUl9QQUlSXGZSIC0gXGZCY3Vyc2VzXGZSIGNvbG9yIG1hbmlwdWxhdGlvbiByb3V0aW5lcworXGZCQ09MT1JfUEFJUlxmUiBcLSBcZkJjdXJzZXNcZlIgY29sb3IgbWFuaXB1bGF0aW9uIHJvdXRpbmVzCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCiBcZkIjIGluY2x1ZGUgPGN1cnNlcy5oPlxmUgotLmJyCisuc3AKIFxmQmludCBzdGFydF9jb2xvcih2b2lkKTtcZlIKIC5icgogXGZCaW50IGluaXRfcGFpcihzaG9ydCBwYWlyLCBzaG9ydCBmLCBzaG9ydCBiKTtcZlIKQEAgLTYwLDk4ICs2OCwyMDMgQEAKIC5icgogLlNIIERFU0NSSVBUSU9OCiAuU1MgT3ZlcnZpZXcKLVxmQmN1cnNlc1xmUiBzdXBwb3J0IGNvbG9yIGF0dHJpYnV0ZXMgb24gdGVybWluYWxzIHdpdGggdGhhdCBjYXBhYmlsaXR5LiAgVG8KLXVzZSB0aGVzZSByb3V0aW5lcyBcZkJzdGFydF9jb2xvclxmUiBtdXN0IGJlIGNhbGxlZCwgdXN1YWxseSByaWdodCBhZnRlcgotXGZCaW5pdHNjclxmUi4gIENvbG9ycyBhcmUgYWx3YXlzIHVzZWQgaW4gcGFpcnMgKHJlZmVycmVkIHRvIGFzIGNvbG9yLXBhaXJzKS4KK1xmQmN1cnNlc1xmUiBzdXBwb3J0cyBjb2xvciBhdHRyaWJ1dGVzIG9uIHRlcm1pbmFscyB3aXRoIHRoYXQgY2FwYWJpbGl0eS4KK1RvIHVzZSB0aGVzZSByb3V0aW5lcyBcZkJzdGFydF9jb2xvclxmUiBtdXN0IGJlIGNhbGxlZCwgdXN1YWxseSByaWdodCBhZnRlcgorXGZCaW5pdHNjclxmUi4KK0NvbG9ycyBhcmUgYWx3YXlzIHVzZWQgaW4gcGFpcnMgKHJlZmVycmVkIHRvIGFzIGNvbG9yLXBhaXJzKS4KIEEgY29sb3ItcGFpciBjb25zaXN0cyBvZiBhIGZvcmVncm91bmQgY29sb3IgKGZvciBjaGFyYWN0ZXJzKSBhbmQgYSBiYWNrZ3JvdW5kCi1jb2xvciAoZm9yIHRoZSBibGFuayBmaWVsZCBvbiB3aGljaCB0aGUgY2hhcmFjdGVycyBhcmUgZGlzcGxheWVkKS4gIEEKLXByb2dyYW1tZXIgaW5pdGlhbGl6ZXMgYSBjb2xvci1wYWlyIHdpdGggdGhlIHJvdXRpbmUgXGZCaW5pdF9wYWlyXGZSLiAgQWZ0ZXIgaXQKLWhhcyBiZWVuIGluaXRpYWxpemVkLCBcZkJDT0xPUl9QQUlSXGZSKFxmSW5cZlIpLCBhIG1hY3JvIGRlZmluZWQgaW4KK2NvbG9yIChmb3IgdGhlIGJsYW5rIGZpZWxkIG9uIHdoaWNoIHRoZSBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQpLgorQSBwcm9ncmFtbWVyIGluaXRpYWxpemVzIGEgY29sb3ItcGFpciB3aXRoIHRoZSByb3V0aW5lIFxmQmluaXRfcGFpclxmUi4KK0FmdGVyIGl0IGhhcyBiZWVuIGluaXRpYWxpemVkLCBcZkJDT0xPUl9QQUlSXGZSKFxmSW5cZlIpLCBhIG1hY3JvIGRlZmluZWQgaW4KIFxmQjxjdXJzZXMuaD5cZlIsIGNhbiBiZSB1c2VkIGFzIGEgbmV3IHZpZGVvIGF0dHJpYnV0ZS4KIC5QUAogSWYgYSB0ZXJtaW5hbCBpcyBjYXBhYmxlIG9mIHJlZGVmaW5pbmcgY29sb3JzLCB0aGUgcHJvZ3JhbW1lciBjYW4gdXNlIHRoZQotcm91dGluZSBcZkJpbml0X2NvbG9yXGZSIHRvIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLiAgVGhlIHJvdXRpbmVzCi1cZkJoYXNfY29sb3JzXGZSIGFuZCBcZkJjYW5fY2hhbmdlX2NvbG9yXGZSIHJldHVybiBcZkJUUlVFXGZSIG9yIFxmQkZBTFNFXGZSLAorcm91dGluZSBcZkJpbml0X2NvbG9yXGZSIHRvIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLgorVGhlIHJvdXRpbmVzIFxmQmhhc19jb2xvcnNcZlIgYW5kIFxmQmNhbl9jaGFuZ2VfY29sb3JcZlIKK3JldHVybiBcZkJUUlVFXGZSIG9yIFxmQkZBTFNFXGZSLAogZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHRlcm1pbmFsIGhhcyBjb2xvciBjYXBhYmlsaXRpZXMgYW5kIHdoZXRoZXIgdGhlCi1wcm9ncmFtbWVyIGNhbiBjaGFuZ2UgdGhlIGNvbG9ycy4gIFRoZSByb3V0aW5lIFxmQmNvbG9yX2NvbnRlbnRcZlIgYWxsb3dzIGEKK3Byb2dyYW1tZXIgY2FuIGNoYW5nZSB0aGUgY29sb3JzLgorVGhlIHJvdXRpbmUgXGZCY29sb3JfY29udGVudFxmUiBhbGxvd3MgYQogcHJvZ3JhbW1lciB0byBleHRyYWN0IHRoZSBhbW91bnRzIG9mIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gYW4KLWluaXRpYWxpemVkIGNvbG9yLiAgVGhlIHJvdXRpbmUgXGZCcGFpcl9jb250ZW50XGZSIGFsbG93cyBhIHByb2dyYW1tZXIgdG8gZmluZAoraW5pdGlhbGl6ZWQgY29sb3IuCitUaGUgcm91dGluZSBcZkJwYWlyX2NvbnRlbnRcZlIgYWxsb3dzIGEgcHJvZ3JhbW1lciB0byBmaW5kCiBvdXQgaG93IGEgZ2l2ZW4gY29sb3ItcGFpciBpcyBjdXJyZW50bHkgZGVmaW5lZC4KLS5TUyBSb3V0aW5lIERlc2NyaXB0aW9ucwotVGhlIFxmQnN0YXJ0X2NvbG9yXGZSIHJvdXRpbmUgcmVxdWlyZXMgbm8gYXJndW1lbnRzLiAgSXQgbXVzdCBiZQotY2FsbGVkIGlmIHRoZSBwcm9ncmFtbWVyIHdhbnRzIHRvIHVzZSBjb2xvcnMsIGFuZCBiZWZvcmUgYW55IG90aGVyCi1jb2xvciBtYW5pcHVsYXRpb24gcm91dGluZSBpcyBjYWxsZWQuICBJdCBpcyBnb29kIHByYWN0aWNlIHRvIGNhbGwKLXRoaXMgcm91dGluZSByaWdodCBhZnRlciBcZkJpbml0c2NyXGZSLiAgXGZCc3RhcnRfY29sb3JcZlIgaW5pdGlhbGl6ZXMKLWVpZ2h0IGJhc2ljIGNvbG9ycyAoYmxhY2ssIHJlZCwgZ3JlZW4sIHllbGxvdywgYmx1ZSwgbWFnZW50YSwgY3lhbiwKLWFuZCB3aGl0ZSksIGFuZCB0d28gZ2xvYmFsIHZhcmlhYmxlcywgXGZCQ09MT1JTXGZSIGFuZAotXGZCQ09MT1JfUEFJUlNcZlIgKHJlc3BlY3RpdmVseSBkZWZpbmluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sb3JzCi1hbmQgY29sb3ItcGFpcnMgdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0KS4gIEl0IGFsc28gcmVzdG9yZXMgdGhlCi1jb2xvcnMgb24gdGhlIHRlcm1pbmFsIHRvIHRoZSB2YWx1ZXMgdGhleSBoYWQgd2hlbiB0aGUgdGVybWluYWwgd2FzCi1qdXN0IHR1cm5lZCBvbi4KKy5TUyBDb2xvciBSZW5kZXJpbmcKK1RoZSBcZkJjdXJzZXNcZlAgbGlicmFyeSBjb21iaW5lcyB0aGVzZSBpbnB1dHMgdG8gcHJvZHVjZSB0aGUKK2FjdHVhbCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG93biBvbiB0aGUgc2NyZWVuOgorLmJQCitwZXItY2hhcmFjdGVyIHZpZGVvIGF0dHJpYnV0ZXMgKGUuZy4sIHZpYSBcZkJ3YWRkY2hcZlApLAorLmJQCit0aGUgd2luZG93IGF0dHJpYnV0ZSAoZS5nLiwgYnkgXGZCd2F0dHJzZXRcZlApLCBhbmQKKy5iUAordGhlIGJhY2tncm91bmQgY2hhcmFjdGVyIChlLmcuLCBcZkJ3YmtnZHNldFxmUCkuCiAuUFAKLVRoZSBcZkJpbml0X3BhaXJcZlIgcm91dGluZSBjaGFuZ2VzIHRoZSBkZWZpbml0aW9uIG9mIGEgY29sb3ItcGFpci4gIEl0IHRha2VzCi10aHJlZSBhcmd1bWVudHM6IHRoZSBudW1iZXIgb2YgdGhlIGNvbG9yLXBhaXIgdG8gYmUgY2hhbmdlZCwgdGhlIGZvcmVncm91bmQKLWNvbG9yIG51bWJlciwgYW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG51bWJlci4KLUZvciBwb3J0YWJsZSBhcHBsaWNhdGlvbnM6Ci0uVFAgNQotLQotVGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudAotbXVzdCBiZSBiZXR3ZWVuIFxmQjFcZlIgYW5kIFxmQkNPTE9SX1BBSVJTLTFcZlIuCi0uVFAgNQotLQotVGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQgYW5kCi10aGlyZCBhcmd1bWVudHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIFxmQkNPTE9SU1xmUi4KLUNvbG9yIHBhaXIgMCBpcyBhc3N1bWVkIHRvIGJlIHdoaXRlIG9uIGJsYWNrLAorUGVyLWNoYXJhY3RlciBhbmQgd2luZG93IGF0dHJpYnV0ZXMgYXJlIHVzdWFsbHkgc2V0IGJ5IGEgcGFyYW1ldGVyIGNvbnRhaW5pbmcKK3ZpZGVvIGF0dHJpYnV0ZXMgaW5jbHVkaW5nIGEgXGZCQ09MT1JfUEFJUlxmUCB2YWx1ZS4KK1NvbWUgZnVuY3Rpb25zIHN1Y2ggYXMgXGZCd2F0dHJfc2V0XGZQIHVzZSBhIHNlcGFyYXRlIHBhcmFtZXRlciB3aGljaAoraXMgdGhlIGNvbG9yIHBhaXIgbnVtYmVyLgorLlBQCitUaGUgYmFja2dyb3VuZCBjaGFyYWN0ZXIgaXMgYSBzcGVjaWFsIGNhc2U6IGl0IGluY2x1ZGVzIGEgY2hhcmFjdGVyIHZhbHVlLAoranVzdCBhcyBpZiBpdCB3ZXJlIHBhc3NlZCB0byBcZkJ3YWRkY2hcZlAuCisuUFAKK1RoZSBcZkJjdXJzZXNcZlAgbGlicmFyeSBkb2VzIHRoZSBhY3R1YWwgd29yayBvZiBjb21iaW5pbmcgdGhlc2UgY29sb3IKK3BhaXJzIGluIGFuIGludGVybmFsIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIFxmQndhZGRjaFxmUDoKKy5iUAorSWYgdGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gXGZCd2FkZGNoXGZQIGlzIFxmSWJsYW5rXGZQLAorYW5kIGl0IHVzZXMgdGhlIHNwZWNpYWwgY29sb3IgcGFpciAwLAorLlJTCisuYlAKK1xmQmN1cnNlc1xmUCBuZXh0IGNoZWNrcyB0aGUgd2luZG93IGF0dHJpYnV0ZS4KKy5iUAorSWYgdGhlIHdpbmRvdyBhdHRyaWJ1dGUgZG9lcyBub3QgdXNlIGNvbG9yIHBhaXIgMCwKK1xmQmN1cnNlc1xmUCB1c2VzIHRoZSBjb2xvciBwYWlyIGZyb20gdGhlIHdpbmRvdyBhdHRyaWJ1dGUuCisuYlAKK090aGVyd2lzZSwgXGZCY3Vyc2VzXGZQIHVzZXMgdGhlIGJhY2tncm91bmQgY2hhcmFjdGVyLgorLlJFCisuYlAKK0lmIHRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIFxmQndhZGRjaFxmUCBpcyBcZklub3QgYmxhbmtcZlAsCitvciBpdCBkb2VzIG5vdCB1c2UgdGhlIHNwZWNpYWwgY29sb3IgcGFpciAwLAorXGZCY3Vyc2VzXGZQIHByZWZlcnMgdGhlIGNvbG9yIHBhaXIgZnJvbSB0aGUgcGFyYW1ldGVyLAoraWYgaXQgaXMgbm9uemVyby4KK090aGVyd2lzZSwgaXQgdHJpZXMgdGhlIHdpbmRvdyBhdHRyaWJ1dGUgbmV4dCwgYW5kIGZpbmFsbHkgdGhlCitiYWNrZ3JvdW5kIGNoYXJhY3Rlci4KKy5QUAorU29tZSBcZkJjdXJzZXNcZlAgZnVuY3Rpb25zIHN1Y2ggYXMgXGZCd3ByaW50d1xmUCBjYWxsIFxmQndhZGRjaFxmUC4KK1Rob3NlIGRvIG5vdCBjb21iaW5lIGl0cyBwYXJhbWV0ZXIgd2l0aCBhIGNvbG9yIHBhaXIuCitDb25zZXF1ZW50bHkgdGhvc2UgY2FsbHMgdXNlIG9ubHkgdGhlIHdpbmRvdyBhdHRyaWJ1dGUgb3IKK3RoZSBiYWNrZ3JvdW5kIGNoYXJhY3Rlci4KKy5TUyBSb3V0aW5lIERlc2NyaXB0aW9ucworVGhlIFxmQnN0YXJ0X2NvbG9yXGZSIHJvdXRpbmUgcmVxdWlyZXMgbm8gYXJndW1lbnRzLgorSXQgbXVzdCBiZSBjYWxsZWQgaWYgdGhlIHByb2dyYW1tZXIgd2FudHMgdG8gdXNlIGNvbG9ycywgYW5kIGJlZm9yZSBhbnkgb3RoZXIKK2NvbG9yIG1hbmlwdWxhdGlvbiByb3V0aW5lIGlzIGNhbGxlZC4KK0l0IGlzIGdvb2QgcHJhY3RpY2UgdG8gY2FsbCB0aGlzIHJvdXRpbmUgcmlnaHQgYWZ0ZXIgXGZCaW5pdHNjclxmUi4KK1xmQnN0YXJ0X2NvbG9yXGZSIGRvZXMgdGhpczoKKy5iUAorSXQgaW5pdGlhbGl6ZXMgdHdvIGdsb2JhbCB2YXJpYWJsZXMsIFxmQkNPTE9SU1xmUiBhbmQKK1xmQkNPTE9SX1BBSVJTXGZSIChyZXNwZWN0aXZlbHkgZGVmaW5pbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbG9ycworYW5kIGNvbG9yLXBhaXJzIHRoZSB0ZXJtaW5hbCBjYW4gc3VwcG9ydCkuCisuYlAKK0l0IGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIGNvbG9yIHBhaXIgXGZCMFxmUCB0byB0aGUgZGVmYXVsdCBmb3JlZ3JvdW5kCithbmQgYmFja2dyb3VuZCBjb2xvcnMuCitObyBvdGhlciBjb2xvciBwYWlycyBhcmUgaW5pdGlhbGl6ZWQuCisuYlAKK0l0IHJlc3RvcmVzIHRoZSBjb2xvcnMgb24gdGhlIHRlcm1pbmFsIHRvIHRoZSB2YWx1ZXMKK3RoZXkgaGFkIHdoZW4gdGhlIHRlcm1pbmFsIHdhcyBqdXN0IHR1cm5lZCBvbi4KKy5iUAorSWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIHRoZSBcZkJpbml0Y1xmUCAoXGZCaW5pdGlhbGl6ZV9jb2xvclxmUCkgY2FwYWJpbGl0eSwKK1xmQnN0YXJ0X2NvbG9yXGZQCitpbml0aWFsaXplcyBpdHMgaW50ZXJuYWwgdGFibGUgcmVwcmVzZW50aW5nIHRoZQorcmVkLCBncmVlbiBhbmQgYmx1ZSBjb21wb25lbnRzIG9mIHRoZSBjb2xvciBwYWxldHRlLgorLklQCitUaGUgY29tcG9uZW50cyBkZXBlbmQgb24gd2hldGhlciB0aGUgdGVybWluYWwgdXNlcworQ0dBIChha2EgIkFOU0kiKSBvcgorSExTIChpLmUuLCB0aGUgXGZCaGxzXGZQIChcZkJodWVfbGlnaHRuZXNzX3NhdHVyYXRpb25cZlApIGNhcGFiaWxpdHkgaXMgc2V0KS4KK1RoZSB0YWJsZSBpcyBpbml0aWFsaXplZCBmaXJzdCBmb3IgZWlnaHQgYmFzaWMgY29sb3JzCisoYmxhY2ssIHJlZCwgZ3JlZW4sIHllbGxvdywgYmx1ZSwgbWFnZW50YSwgY3lhbiwgYW5kIHdoaXRlKSwKK2FuZCBhZnRlciB0aGF0IChpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgbW9yZSB0aGFuIGVpZ2h0IGNvbG9ycykKK3RoZSBjb21wb25lbnRzIGFyZSBpbml0aWFsaXplZCB0byBcZkIxMDAwXGZQLgorLklQCitcZkJzdGFydF9jb2xvclxmUCBkb2VzIG5vdCBhdHRlbXB0IHRvIHNldCB0aGUgdGVybWluYWwncyBjb2xvciBwYWxldHRlCit0byBtYXRjaCBpdHMgYnVpbHQtaW4gdGFibGUuCitBbiBhcHBsaWNhdGlvbiBtYXkgdXNlIFxmQmluaXRfY29sb3JcZlAgdG8gYWx0ZXIgdGhlIGludGVybmFsIHRhYmxlCithbG9uZyB3aXRoIHRoZSB0ZXJtaW5hbCdzIGNvbG9yLgorLlBQCitUaGVzZSBsaW1pdHMgYXBwbHkgdG8gY29sb3IgdmFsdWVzIGFuZCBjb2xvciBwYWlycy4KK1ZhbHVlcyBvdXRzaWRlIHRoZXNlIGxpbWl0cyBhcmUgbm90IGxlZ2FsLCBhbmQgbWF5IHJlc3VsdCBpbiBhIHJ1bnRpbWUgZXJyb3I6CisuYlAKK1xmQkNPTE9SU1xmUCBjb3JyZXNwb25kcyB0byB0aGUgdGVybWluYWwgZGF0YWJhc2UncyBcZkJtYXhfY29sb3JzXGZQIGNhcGFiaWxpdHksCit3aGljaCBpcyB0eXBpY2FsbHkgYSBzaWduZWQgMTYtYml0IGludGVnZXIgKHNlZSBcZkJ0ZXJtaW5mb1xmUihcKm4pKS4KKy5iUAorY29sb3IgdmFsdWVzIGFyZSBleHBlY3RlZCB0byBiZSBpbiB0aGUgcmFuZ2UgXGZCMFxmUCB0byBcZkJDT0xPUlNcLTFcZlAsCitpbmNsdXNpdmUgKGluY2x1ZGluZyBcZkIwXGZQIGFuZCBcZkJDT0xPUlNcLTFcZlApLgorLmJQCithIHNwZWNpYWwgY29sb3IgdmFsdWUgXGZCXC0xXGZQIGlzIHVzZWQgaW4gY2VydGFpbiBleHRlbmRlZCBmdW5jdGlvbnMKK3RvIGRlbm90ZSB0aGUgXGZJZGVmYXVsdCBjb2xvclxmUCAoc2VlIFxmQnVzZV9kZWZhdWx0X2NvbG9yc1xmUCkuCisuYlAKK1xmQkNPTE9SX1BBSVJTXGZQIGNvcnJlc3BvbmRzIHRvIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZSdzIFxmQm1heF9wYWlyc1xmUCBjYXBhYmlsaXR5LAord2hpY2ggaXMgdHlwaWNhbGx5IGEgc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIChzZWUgXGZCdGVybWluZm9cZlIoXCpuKSkuCisuYlAKK2xlZ2FsIGNvbG9yIHBhaXIgdmFsdWVzIGFyZSBpbiB0aGUgcmFuZ2UgXGZCMVxmUCB0byBcZkJDT0xPUl9QQUlSU1wtMVxmUCwKK2luY2x1c2l2ZS4KKy5iUAorY29sb3IgcGFpciBcZkIwXGZQIGlzIHNwZWNpYWw7IGl0IGRlbm90ZXMgXCooYGBubyBjb2xvclwqKCcnLgorLklQCitDb2xvciBwYWlyIFxmQjBcZlAgaXMgYXNzdW1lZCB0byBiZSB3aGl0ZSBvbiBibGFjaywKIGJ1dCBpcyBhY3R1YWxseSB3aGF0ZXZlciB0aGUgdGVybWluYWwgaW1wbGVtZW50cyBiZWZvcmUgY29sb3IgaXMgaW5pdGlhbGl6ZWQuCiBJdCBjYW5ub3QgYmUgbW9kaWZpZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgogLlBQCi1JZiB0aGUgY29sb3ItcGFpciB3YXMgcHJldmlvdXNseQotaW5pdGlhbGl6ZWQsIHRoZSBzY3JlZW4gaXMgcmVmcmVzaGVkIGFuZCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhhdCBjb2xvci1wYWlyCitUaGUgXGZCaW5pdF9wYWlyXGZSIHJvdXRpbmUgY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLXBhaXIuCitJdCB0YWtlcyB0aHJlZSBhcmd1bWVudHM6IHRoZSBudW1iZXIgb2YgdGhlIGNvbG9yLXBhaXIgdG8gYmUgY2hhbmdlZCwgdGhlIGZvcmVncm91bmQKK2NvbG9yIG51bWJlciwgYW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG51bWJlci4KK0ZvciBwb3J0YWJsZSBhcHBsaWNhdGlvbnM6CisuYlAKK1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgbGVnYWwgY29sb3IgcGFpciB2YWx1ZS4KK0lmIGRlZmF1bHQgY29sb3JzIGFyZSB1c2VkIChzZWUgXGZCdXNlX2RlZmF1bHRfY29sb3JzXGZQKQordGhlIHVwcGVyIGxpbWl0IGlzIGFkanVzdGVkIHRvIGFsbG93IGZvciBleHRyYSBwYWlycyB3aGljaCB1c2UKK2EgZGVmYXVsdCBjb2xvciBpbiBmb3JlZ3JvdW5kIGFuZC9vciBiYWNrZ3JvdW5kLgorLmJQCitUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgbXVzdCBiZSBsZWdhbCBjb2xvciB2YWx1ZXMuCisuUFAKK0lmIHRoZSBjb2xvci1wYWlyIHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkLAordGhlIHNjcmVlbiBpcyByZWZyZXNoZWQgYW5kIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGF0IGNvbG9yLXBhaXIKIGFyZSBjaGFuZ2VkIHRvIHRoZSBuZXcgZGVmaW5pdGlvbi4KIC5QUAotQXMgYW4gZXh0ZW5zaW9uLCBuY3Vyc2VzIGFsbG93cyB5b3UgdG8gc2V0IGNvbG9yIHBhaXIgMCB2aWEKK0FzIGFuIGV4dGVuc2lvbiwgbmN1cnNlcyBhbGxvd3MgeW91IHRvIHNldCBjb2xvciBwYWlyIFxmQjBcZlAgdmlhCiB0aGUgXGZCYXNzdW1lX2RlZmF1bHRfY29sb3JzXGZSIHJvdXRpbmUsIG9yIHRvIHNwZWNpZnkgdGhlIHVzZSBvZgotZGVmYXVsdCBjb2xvcnMgKGNvbG9yIG51bWJlciBcZkItMVxmUikgaWYgeW91IGZpcnN0IGludm9rZSB0aGUKK2RlZmF1bHQgY29sb3JzIChjb2xvciBudW1iZXIgXGZCXC0xXGZSKSBpZiB5b3UgZmlyc3QgaW52b2tlIHRoZQogXGZCdXNlX2RlZmF1bHRfY29sb3JzXGZSIHJvdXRpbmUuCiAuUFAKLVRoZSBcZkJpbml0X2NvbG9yXGZSIHJvdXRpbmUgY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLiAgSXQgdGFrZXMgZm91cgotYXJndW1lbnRzOiB0aGUgbnVtYmVyIG9mIHRoZSBjb2xvciB0byBiZSBjaGFuZ2VkIGZvbGxvd2VkIGJ5IHRocmVlIFJHQiB2YWx1ZXMKLShmb3IgdGhlIGFtb3VudHMgb2YgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cykuICBUaGUgdmFsdWUgb2YgdGhlIGZpcnN0Ci1hcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gXGZCMFxmUiBhbmQgXGZCQ09MT1JTXGZSLiAgKFNlZSB0aGUgc2VjdGlvbgotXGZCQ29sb3JzXGZSIGZvciB0aGUgZGVmYXVsdCBjb2xvciBpbmRleC4pICBFYWNoIG9mIHRoZSBsYXN0IHRocmVlIGFyZ3VtZW50cwotbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMTAwMC4gIFdoZW4gXGZCaW5pdF9jb2xvclxmUiBpcyB1c2VkLCBhbGwKK1RoZSBcZkJpbml0X2NvbG9yXGZSIHJvdXRpbmUgY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbG9yLgorSXQgdGFrZXMgZm91ciBhcmd1bWVudHM6IHRoZSBudW1iZXIgb2YgdGhlIGNvbG9yIHRvIGJlIGNoYW5nZWQgZm9sbG93ZWQgYnkgdGhyZWUgUkdCIHZhbHVlcworKGZvciB0aGUgYW1vdW50cyBvZiByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzKS4KK1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgbGVnYWwgY29sb3IgdmFsdWU7CitkZWZhdWx0IGNvbG9ycyBhcmUgbm90IGFsbG93ZWQgaGVyZS4KKyhTZWUgdGhlIHNlY3Rpb24gXGZCQ29sb3JzXGZSIGZvciB0aGUgZGVmYXVsdCBjb2xvciBpbmRleC4pCitFYWNoIG9mIHRoZSBsYXN0IHRocmVlIGFyZ3VtZW50cworbXVzdCBiZSBhIHZhbHVlIGluIHRoZSByYW5nZSBcZkIwXGZQIHRocm91Z2ggXGZCMTAwMFxmUC4KK1doZW4gXGZCaW5pdF9jb2xvclxmUiBpcyB1c2VkLCBhbGwKIG9jY3VycmVuY2VzIG9mIHRoYXQgY29sb3Igb24gdGhlIHNjcmVlbiBpbW1lZGlhdGVseSBjaGFuZ2UgdG8gdGhlIG5ldwogZGVmaW5pdGlvbi4KIC5QUAotVGhlIFxmQmhhc19jb2xvcnNcZlIgcm91dGluZSByZXF1aXJlcyBubyBhcmd1bWVudHMuICBJdCByZXR1cm5zIFxmQlRSVUVcZlIgaWYKLXRoZSB0ZXJtaW5hbCBjYW4gbWFuaXB1bGF0ZSBjb2xvcnM7IG90aGVyd2lzZSwgaXQgcmV0dXJucyBcZkJGQUxTRVxmUi4gIFRoaXMKLXJvdXRpbmUgZmFjaWxpdGF0ZXMgd3JpdGluZyB0ZXJtaW5hbC1pbmRlcGVuZGVudCBwcm9ncmFtcy4gIEZvciBleGFtcGxlLCBhCi1wcm9ncmFtbWVyIGNhbiB1c2UgaXQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIGNvbG9yIG9yIHNvbWUgb3RoZXIgdmlkZW8KLWF0dHJpYnV0ZS4KK1RoZSBcZkJoYXNfY29sb3JzXGZSIHJvdXRpbmUgcmVxdWlyZXMgbm8gYXJndW1lbnRzLgorSXQgcmV0dXJucyBcZkJUUlVFXGZSIGlmCit0aGUgdGVybWluYWwgY2FuIG1hbmlwdWxhdGUgY29sb3JzOyBvdGhlcndpc2UsIGl0IHJldHVybnMgXGZCRkFMU0VcZlIuCitUaGlzIHJvdXRpbmUgZmFjaWxpdGF0ZXMgd3JpdGluZyB0ZXJtaW5hbC1pbmRlcGVuZGVudCBwcm9ncmFtcy4KK0ZvciBleGFtcGxlLCBhIHByb2dyYW1tZXIgY2FuIHVzZSBpdCB0byBkZWNpZGUKK3doZXRoZXIgdG8gdXNlIGNvbG9yIG9yIHNvbWUgb3RoZXIgdmlkZW8gYXR0cmlidXRlLgogLlBQCi1UaGUgXGZCY2FuX2NoYW5nZV9jb2xvclxmUiByb3V0aW5lIHJlcXVpcmVzIG5vIGFyZ3VtZW50cy4gIEl0IHJldHVybnMKLVxmQlRSVUVcZlIgaWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIGNvbG9ycyBhbmQgY2FuIGNoYW5nZSB0aGVpciBkZWZpbml0aW9uczsKLW90aGVyLCBpdCByZXR1cm5zIFxmQkZBTFNFXGZSLiAgVGhpcyByb3V0aW5lIGZhY2lsaXRhdGVzIHdyaXRpbmcKLXRlcm1pbmFsLWluZGVwZW5kZW50IHByb2dyYW1zLgorVGhlIFxmQmNhbl9jaGFuZ2VfY29sb3JcZlIgcm91dGluZSByZXF1aXJlcyBubyBhcmd1bWVudHMuCitJdCByZXR1cm5zIFxmQlRSVUVcZlIgaWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIGNvbG9ycworYW5kIGNhbiBjaGFuZ2UgdGhlaXIgZGVmaW5pdGlvbnM7CitvdGhlciwgaXQgcmV0dXJucyBcZkJGQUxTRVxmUi4KK1RoaXMgcm91dGluZSBmYWNpbGl0YXRlcyB3cml0aW5nIHRlcm1pbmFsLWluZGVwZW5kZW50IHByb2dyYW1zLgogLlBQCiBUaGUgXGZCY29sb3JfY29udGVudFxmUiByb3V0aW5lIGdpdmVzIHByb2dyYW1tZXJzIGEgd2F5IHRvIGZpbmQgdGhlIGludGVuc2l0eQotb2YgdGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIChSR0IpIGNvbXBvbmVudHMgaW4gYSBjb2xvci4gIEl0IHJlcXVpcmVzIGZvdXIKLWFyZ3VtZW50czogdGhlIGNvbG9yIG51bWJlciwgYW5kIHRocmVlIGFkZHJlc3NlcyBvZiBcZkJzaG9ydFxmUnMgZm9yIHN0b3JpbmcKK29mIHRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSAoUkdCKSBjb21wb25lbnRzIGluIGEgY29sb3IuCitJdCByZXF1aXJlcyBmb3VyIGFyZ3VtZW50czogdGhlIGNvbG9yIG51bWJlciwgYW5kIHRocmVlIGFkZHJlc3Nlcworb2YgXGZCc2hvcnRcZlJzIGZvciBzdG9yaW5nCiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFtb3VudHMgb2YgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBpbiB0aGUKLWdpdmVuIGNvbG9yLiAgVGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQKLVxmQkNPTE9SU1xmUi4gIFRoZSB2YWx1ZXMgdGhhdCBhcmUgc3RvcmVkIGF0IHRoZSBhZGRyZXNzZXMgcG9pbnRlZCB0byBieSB0aGUKLWxhc3QgdGhyZWUgYXJndW1lbnRzIGFyZSBiZXR3ZWVuIDAgKG5vIGNvbXBvbmVudCkgYW5kIDEwMDAgKG1heGltdW0gYW1vdW50IG9mCi1jb21wb25lbnQpLgorZ2l2ZW4gY29sb3IuCitUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGxlZ2FsIGNvbG9yIHZhbHVlLCBpLmUuLAorXGZCMFxmUCB0aHJvdWdoIFxmQkNPTE9SU1wtMVxmUCwgaW5jbHVzaXZlLgorVGhlIHZhbHVlcyB0aGF0IGFyZSBzdG9yZWQgYXQgdGhlIGFkZHJlc3NlcyBwb2ludGVkIHRvIGJ5IHRoZQorbGFzdCB0aHJlZSBhcmd1bWVudHMgYXJlIGluIHRoZSByYW5nZQorXGZCMFxmUCAobm8gY29tcG9uZW50KSB0aHJvdWdoIFxmQjEwMDBcZlAgKG1heGltdW0gYW1vdW50IG9mIGNvbXBvbmVudCksIGluY2x1c2l2ZS4KIC5QUAogVGhlIFxmQnBhaXJfY29udGVudFxmUiByb3V0aW5lIGFsbG93cyBwcm9ncmFtbWVycyB0byBmaW5kIG91dCB3aGF0IGNvbG9ycyBhCi1naXZlbiBjb2xvci1wYWlyIGNvbnNpc3RzIG9mLiAgSXQgcmVxdWlyZXMgdGhyZWUgYXJndW1lbnRzOiB0aGUgY29sb3ItcGFpcgorZ2l2ZW4gY29sb3ItcGFpciBjb25zaXN0cyBvZi4KK0l0IHJlcXVpcmVzIHRocmVlIGFyZ3VtZW50czogdGhlIGNvbG9yLXBhaXIKIG51bWJlciwgYW5kIHR3byBhZGRyZXNzZXMgb2YgXGZCc2hvcnRcZlJzIGZvciBzdG9yaW5nIHRoZSBmb3JlZ3JvdW5kIGFuZCB0aGUKLWJhY2tncm91bmQgY29sb3IgbnVtYmVycy4gIFRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEKLWFuZCBcZkJDT0xPUl9QQUlSUy0xXGZSLiAgVGhlIHZhbHVlcyB0aGF0IGFyZSBzdG9yZWQgYXQgdGhlIGFkZHJlc3NlcyBwb2ludGVkCi10byBieSB0aGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgYXJlIGJldHdlZW4gMCBhbmQgXGZCQ09MT1JTXGZSLgorYmFja2dyb3VuZCBjb2xvciBudW1iZXJzLgorVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBsZWdhbCBjb2xvciB2YWx1ZSwKK2kuZS4sIGluIHRoZSByYW5nZSBcZkIxXGZQIHRocm91Z2ggXGZCQ09MT1JfUEFJUlNcLTFcZlIsIGluY2x1c2l2ZS4KK1RoZSB2YWx1ZXMgdGhhdCBhcmUgc3RvcmVkIGF0IHRoZSBhZGRyZXNzZXMgcG9pbnRlZAordG8gYnkgdGhlIHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzIGFyZSBpbiB0aGUKK3JhbmdlIFxmQjBcZlAgdGhyb3VnaCBcZkJDT0xPUlNcZlIsIGluY2x1c2l2ZS4KIC5TUyBDb2xvcnMKLUluIFxmQjxjdXJzZXMuaD5cZlIgdGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIGRlZmluZWQuICBUaGVzZSBhcmUgdGhlIGRlZmF1bHQKLWNvbG9ycy4gIFxmQmN1cnNlc1xmUiBhbHNvIGFzc3VtZXMgdGhhdCBcZkJDT0xPUl9CTEFDS1xmUiBpcyB0aGUgZGVmYXVsdAorSW4gXGZCPGN1cnNlcy5oPlxmUiB0aGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZGVmaW5lZC4KK1RoZXNlIGFyZSB0aGUgc3RhbmRhcmQgY29sb3JzIChJU08tNjQyOSkuCitcZkJjdXJzZXNcZlIgYWxzbyBhc3N1bWVzIHRoYXQgXGZCQ09MT1JfQkxBQ0tcZlIgaXMgdGhlIGRlZmF1bHQKIGJhY2tncm91bmQgY29sb3IgZm9yIGFsbCB0ZXJtaW5hbHMuCiAuUFAKIC5uZgpAQCAtMTc0LDE1ICsyODcsMTUgQEAKIC5QUAogWC9PcGVuIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIFRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCByZXR1cm4gXGZCRVJSXGZSIG9uIGF0dGVtcHRzIHRvCi11c2UgY29sb3IgdmFsdWVzIG91dHNpZGUgdGhlIHJhbmdlIDAgdG8gQ09MT1JTLTEKK3VzZSBjb2xvciB2YWx1ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgXGZCMFxmUCB0byBDT0xPUlNcLTEKIChleGNlcHQgZm9yIHRoZSBkZWZhdWx0IGNvbG9ycyBleHRlbnNpb24pLAotb3IgdXNlIGNvbG9yIHBhaXJzIG91dHNpZGUgdGhlIHJhbmdlIDAgdG8gQ09MT1JfUEFJUi0xLgotQ29sb3IgdmFsdWVzIHVzZWQgaW4gXGZCaW5pdF9jb2xvclxmUCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIHRvIDEwMDAuCitvciB1c2UgY29sb3IgcGFpcnMgb3V0c2lkZSB0aGUgcmFuZ2UgXGZCMFxmUCB0byBcZkJDT0xPUl9QQUlSU1wtMVxmUC4KK0NvbG9yIHZhbHVlcyB1c2VkIGluIFxmQmluaXRfY29sb3JcZlAgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgXGZCMFxmUCB0byBcZkIxMDAwXGZQLgogQW4gZXJyb3IgaXMgcmV0dXJuZWQgZnJvbSBhbGwgZnVuY3Rpb25zCiBpZiB0aGUgdGVybWluYWwgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgogQW4gZXJyb3IgaXMgcmV0dXJuZWQgZnJvbSBzZWNvbmRhcnkgZnVuY3Rpb25zIHN1Y2ggYXMgXGZCaW5pdF9wYWlyXGZQCiBpZiBcZkJzdGFydF9jb2xvclxmUCB3YXMgbm90IGNhbGxlZC4KLS5SUworLlJTIDMKIC5UUCA1CiBcZkJpbml0X2NvbG9yXGZQCiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCBzdXBwb3J0CkBAIC0xOTAsMzQgKzMwMywzMyBAQAogZnJvbSB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCiAuVFAgNQogXGZCc3RhcnRfY29sb3JcZlAKLXJldHVybnMgYW4gZXJyb3IKLUlmIHRoZSBjb2xvciB0YWJsZSBjYW5ub3QgYmUgYWxsb2NhdGVkLgorcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgY29sb3IgdGFibGUgY2Fubm90IGJlIGFsbG9jYXRlZC4KIC5SRQogLlNIIE5PVEVTCiBJbiB0aGUgXGZJbmN1cnNlc1xmUiBpbXBsZW1lbnRhdGlvbiwgdGhlcmUgaXMgYSBzZXBhcmF0ZSBjb2xvciBhY3RpdmF0aW9uIGZsYWcsCiBjb2xvciBwYWxldHRlLCBjb2xvciBwYWlycyB0YWJsZSwgYW5kIGFzc29jaWF0ZWQgQ09MT1JTIGFuZCBDT0xPUl9QQUlSUyBjb3VudHMKIGZvciBlYWNoIHNjcmVlbjsgdGhlIFxmQnN0YXJ0X2NvbG9yXGZSIGZ1bmN0aW9uIG9ubHkgYWZmZWN0cyB0aGUgY3VycmVudAotc2NyZWVuLiAgVGhlIFNWcjQvWFNJIGludGVyZmFjZSBpcyBub3QgcmVhbGx5IGRlc2lnbmVkIHdpdGggdGhpcyBpbiBtaW5kLCBhbmQKK3NjcmVlbi4KK1RoZSBTVnI0L1hTSSBpbnRlcmZhY2UgaXMgbm90IHJlYWxseSBkZXNpZ25lZCB3aXRoIHRoaXMgaW4gbWluZCwgYW5kCiBoaXN0b3JpY2FsIGltcGxlbWVudGF0aW9ucyBtYXkgdXNlIGEgc2luZ2xlIHNoYXJlZCBjb2xvciBwYWxldHRlLgogLlBQCiBOb3RlIHRoYXQgc2V0dGluZyBhbiBpbXBsaWNpdCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSBhIGNvbG9yIHBhaXIgYWZmZWN0cyBvbmx5Ci1jaGFyYWN0ZXIgY2VsbHMgdGhhdCBhIGNoYXJhY3RlciB3cml0ZSBvcGVyYXRpb24gZXhwbGljaXRseSB0b3VjaGVzLiAgVG8gY2hhbmdlCitjaGFyYWN0ZXIgY2VsbHMgdGhhdCBhIGNoYXJhY3RlciB3cml0ZSBvcGVyYXRpb24gZXhwbGljaXRseSB0b3VjaGVzLgorVG8gY2hhbmdlCiB0aGUgYmFja2dyb3VuZCBjb2xvciB1c2VkIHdoZW4gcGFydHMgb2YgYSB3aW5kb3cgYXJlIGJsYW5rZWQgYnkgZXJhc2luZyBvcgogc2Nyb2xsaW5nIG9wZXJhdGlvbnMsIHNlZSBcZkJjdXJzX2JrZ2RcZlIoM1gpLgogLlBQCiBTZXZlcmFsIGNhdmVhdHMgYXBwbHkgb24gMzg2IGFuZCA0ODYgbWFjaGluZXMgd2l0aCBWR0EtY29tcGF0aWJsZSBncmFwaGljczoKLS5UUCA1Ci0tCi1DT0xPUl9ZRUxMT1cgaXMgYWN0dWFsbHkgYnJvd24uICBUbyBnZXQgeWVsbG93LCB1c2UgQ09MT1JfWUVMTE9XIGNvbWJpbmVkIHdpdGgKLXRoZSBcZkJBX0JPTERcZlIgYXR0cmlidXRlLgotLlRQIDUKLS0KLVRoZSBBX0JMSU5LIGF0dHJpYnV0ZSBzaG91bGQgaW4gdGhlb3J5IGNhdXNlIHRoZSBiYWNrZ3JvdW5kIHRvIGdvIGJyaWdodC4gIFRoaXMKLW9mdGVuIGZhaWxzIHRvIHdvcmssIGFuZCBldmVuIHNvbWUgY2FyZHMgZm9yIHdoaWNoIGl0IG1vc3RseSB3b3JrcyAoc3VjaCBhcyB0aGUKKy5iUAorQ09MT1JfWUVMTE9XIGlzIGFjdHVhbGx5IGJyb3duLgorVG8gZ2V0IHllbGxvdywgdXNlIENPTE9SX1lFTExPVyBjb21iaW5lZCB3aXRoIHRoZSBcZkJBX0JPTERcZlIgYXR0cmlidXRlLgorLmJQCitUaGUgQV9CTElOSyBhdHRyaWJ1dGUgc2hvdWxkIGluIHRoZW9yeSBjYXVzZSB0aGUgYmFja2dyb3VuZCB0byBnbyBicmlnaHQuCitUaGlzIG9mdGVuIGZhaWxzIHRvIHdvcmssIGFuZCBldmVuIHNvbWUgY2FyZHMgZm9yIHdoaWNoIGl0IG1vc3RseSB3b3JrcworKHN1Y2ggYXMgdGhlCiBQYXJhZGlzZSBhbmQgY29tcGF0aWJsZXMpIGRvIHRoZSB3cm9uZyB0aGluZyB3aGVuIHlvdSB0cnkgdG8gc2V0IGEgYnJpZ2h0CiAieWVsbG93IiBiYWNrZ3JvdW5kICh5b3UgZ2V0IGEgYmxpbmtpbmcgeWVsbG93IGZvcmVncm91bmQgaW5zdGVhZCkuCi0uVFAgNQotLQorLmJQCiBDb2xvciBSR0IgdmFsdWVzIGFyZSBub3Qgc2V0dGFibGUuCiAuU0ggUE9SVEFCSUxJVFkKIFRoaXMgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIFhTSSBDdXJzZXMncyBtaW5pbXVtIG1heGltdW1zCkBAIC0yMzksMTAgKzM1MSw1IEBACiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwKIFxmQmN1cnNfYXR0clxmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCksCiBcZkJkZWZhdWx0X2NvbG9yc1xmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfZGVsY2guM3ggYi9tYW4vY3Vyc19kZWxjaC4zeAppbmRleCA3MDI2NjY3Li42ZGZjMGEwIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19kZWxjaC4zeAorKysgYi9tYW4vY3Vyc19kZWxjaC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDEzICsyNiwxMyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19kZWxjaC4zeCx2IDEuOCAyMDA2LzAyLzI1IDIxOjQyOjU3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19kZWxjaC4zeCx2IDEuMTEgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwICQKIC5USCBjdXJzX2RlbGNoIDNYICIiCiAuU0ggTkFNRQogXGZCZGVsY2hcZlIsCiBcZkJ3ZGVsY2hcZlIsCiBcZkJtdmRlbGNoXGZSLAotXGZCbXZ3ZGVsY2hcZlIgLSBkZWxldGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgaW4gYSBcZkJjdXJzZXNcZlIgd2luZG93CitcZkJtdndkZWxjaFxmUiBcLSBkZWxldGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgaW4gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcApAQCAtNTQsNiArNTQsMTAgQEAKIEFsbCByb3V0aW5lcyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgYW4gXGZCT0tcZlIgKFNWcjQKIHNwZWNpZmllcyBvbmx5ICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIikgdXBvbiBzdWNjZXNzZnVsCiBjb21wbGV0aW9uLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBOT1RFUwogTm90ZSB0aGF0IFxmQmRlbGNoXGZSLCBcZkJtdmRlbGNoXGZSLCBhbmQgXGZCbXZ3ZGVsY2hcZlIgbWF5IGJlIG1hY3Jvcy4KIC5TSCBQT1JUQUJJTElUWQpAQCAtNjIsOSArNjYsMyBAQAogZXJyb3IgY29uZGl0aW9ucy4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19kZWxldGVsbi4zeCBiL21hbi9jdXJzX2RlbGV0ZWxuLjN4CmluZGV4IGZjN2IxNmEuLjgzY2JkZWMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2RlbGV0ZWxuLjN4CisrKyBiL21hbi9jdXJzX2RlbGV0ZWxuLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19kZWxldGVsbi4zeCx2IDEuMTEgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfZGVsZXRlbG4uM3gsdiAxLjEzIDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCAkCiAuVEggY3Vyc19kZWxldGVsbiAzWCAiIgogLlNIIE5BTUUKIFxmQmRlbGV0ZWxuXGZSLApAQCAtMzQsNyArMzQsNyBAQAogXGZCaW5zZGVsbG5cZlIsCiBcZkJ3aW5zZGVsbG5cZlIsCiBcZkJpbnNlcnRsblxmUiwKLVxmQndpbnNlcnRsblxmUiAtIGRlbGV0ZSBhbmQgaW5zZXJ0IGxpbmVzIGluIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCd2luc2VydGxuXGZSIFwtIGRlbGV0ZSBhbmQgaW5zZXJ0IGxpbmVzIGluIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKQEAgLTgzLDkgKzgzLDMgQEAKIFxmQmlkbG9rKC4uLiwgVFJVRSlcZlIgaGFzIGJlZW4gc2V0IG9uIHRoZSBjdXJyZW50IHdpbmRvdy4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19leHRlbmQuM3ggYi9tYW4vY3Vyc19leHRlbmQuM3gKaW5kZXggMzA5MjI1My4uOWE1MmY5MyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfZXh0ZW5kLjN4CisrKyBiL21hbi9jdXJzX2V4dGVuZC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OS0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDcgKzI4LDcgQEAKIC5cIgogLlwiIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk5LW9uCiAuXCIKLS5cIiAkSWQ6IGN1cnNfZXh0ZW5kLjN4LHYgMS4xNyAyMDA2LzEyLzI0IDE4OjAxOjQ4IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19leHRlbmQuM3gsdiAxLjE5IDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCAkCiAuVEggY3Vyc19leHRlbmQgM1ggIiIKIC5TSCBOQU1FCiBcZkJjdXJzZXNfdmVyc2lvblxmUCwKQEAgLTU2LDcgKzU2LDcgQEAKIHdoaWNoIG1heSBiZSBjb21waWxlZCBpbnRvIHRoZSB0ZXJtaW5mbwogZGVzY3JpcHRpb24sIGkuZS4sIHZpYSB0aGUgdGVybWluZm8gb3IgdGVybWNhcCBpbnRlcmZhY2VzLgogTm9ybWFsbHkgdGhlc2UgbmFtZXMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLCBzaW5jZSB0aGUgZXNzZW50aWFsIGRlY2lzaW9uCi1pcyBtYWRlIGJ5IHVzaW5nIHRoZSBcZkIteFxmUCBvcHRpb24gb2YgXGZCQFRJQ0BcZlAgdG8gY29tcGlsZQoraXMgbWFkZSBieSB1c2luZyB0aGUgXGZCXC14XGZQIG9wdGlvbiBvZiBcZkJAVElDQFxmUCB0byBjb21waWxlCiBleHRlbmRlZCB0ZXJtaW5hbCBkZWZpbml0aW9ucy4KIEhvd2V2ZXIgeW91IGNhbiBkaXNhYmxlIHRoaXMgZmVhdHVyZQogdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgY3Vyc2VzLgpAQCAtNzcsOSArNzcsMyBAQAogXGZCd3Jlc2l6ZVxmUigzWCkuCiAuU0ggQVVUSE9SCiBUaG9tYXMgRGlja2V5LgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19nZXRfd2NoLjN4IGIvbWFuL2N1cnNfZ2V0X3djaC4zeAppbmRleCA2ZWNmZjc5Li5kZjliYzZhIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19nZXRfd2NoLjN4CisrKyBiL21hbi9jdXJzX2dldF93Y2guM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2dldF93Y2guM3gsdiAxLjYgMjAwNi8wMi8yNSAyMTo0NzowNiB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfZ2V0X3djaC4zeCx2IDEuOCAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgJAogLlRIIGN1cnNfZ2V0X3djaCAzWCAiIgogLlNIIE5BTUUKIFxmQmdldF93Y2hcZlIsCkBAIC0xMzIsNyArMTMyLDcgQEAKIC5QUAogQWxsIGZ1bmN0aW9ucyBleGNlcHQgXGZCd2dldF93Y2hcZlIgYW5kIFxmQnVuZ2V0X3djaFxmUgogbWF5IGJlIG1hY3Jvcy4KLS5TSCBSRVRVUk4gVkFMVUVTCisuU0ggUkVUVVJOIFZBTFVFCiBXaGVuCiBcZkJnZXRfd2NoXGZSLAogXGZCd2dldF93Y2hcZlIsCkBAIC0xNTIsNiArMTUyLDEwIEBACiBcZkJPS1xmUi4KIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKIFxmQkVSUlxmUi4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2dldGNoXGZSKDNYKSwKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2dldF93c3RyLjN4IGIvbWFuL2N1cnNfZ2V0X3dzdHIuM3gKaW5kZXggNDI4NmM3OC4uMmEzZmIzYyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfZ2V0X3dzdHIuM3gKKysrIGIvbWFuL2N1cnNfZ2V0X3dzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2dldF93c3RyLjN4LHYgMS42IDIwMDYvMDIvMjUgMjE6NDk6MTkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2dldF93c3RyLjN4LHYgMS45IDIwMTIvMTEvMDMgMjM6MDM6NTkgdG9tIEV4cCAkCiAuVEggY3Vyc19nZXRfd3N0ciAzWCAiIgogLm5hCiAuaHkgMApAQCAtMTQ0LDcgKzE0NCw3IEBACiBpcyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggYSBcZkJLRVlfXGZSIHZhbHVlIGZyb20gYSB2YWxpZCBcZkJ3Y2hhcl90XGZSIHZhbHVlLgogLlBQCiBBbGwgb2YgdGhlc2Ugcm91dGluZXMgZXhjZXB0IFxmQndnZXRuX3dzdHJcZlIgbWF5IGJlIG1hY3Jvcy4KLS5TSCBSRVRVUk4gVkFMVUVTCisuU0ggUkVUVVJOIFZBTFVFCiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIHJldHVybiBcZkJPS1xmUiB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4KIE90aGVyd2lzZSwgdGhleSByZXR1cm4gXGZCRVJSXGZSLgogLlBQCkBAIC0xNTQsNiArMTU0LDEwIEBACiBcZkJ3Z2V0bl93c3RyXGZQCiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBhc3NvY2lhdGVkIGNhbGwgdG8gXGZCd2dldF93Y2hcZlAgZmFpbGVkLgogLlJFCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIFBPUlRBQklMSVRZCiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiBUaGUgU2luZ2xlIFVuaXggU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiAyLgogTm8gZXJyb3IgY29uZGl0aW9ucyBhcmUgZGVmaW5lZC4KQEAgLTE3MCw5ICsxNzQsMyBAQAogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQmN1cnNfZ2V0X3djaFxmUigzWCksCiBcZkJjdXJzX2dldHN0clxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2dldGNjaGFyLjN4IGIvbWFuL2N1cnNfZ2V0Y2NoYXIuM3gKaW5kZXggY2IwMmY1ZC4uNGM1YjIyOSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfZ2V0Y2NoYXIuM3gKKysrIGIvbWFuL2N1cnNfZ2V0Y2NoYXIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMS0yMDEyLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxMSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19nZXRjY2hhci4zeCx2IDEuMTEgMjAwOC8wNS8xNyAxOTozNzowNSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfZ2V0Y2NoYXIuM3gsdiAxLjE3IDIwMTUvMDcvMjEgMDk6MzA6MzggdG9tIEV4cCAkCiAuVEggY3Vyc19nZXRjY2hhciAzWCAiIgorLmRlIGJQCisuSVAgXChidSA0CisuLgogLlNIIE5BTUUKIFxmQmdldGNjaGFyXGZQLAogXGZCc2V0Y2NoYXJcZlAgXC0gR2V0IGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIGFuZCByZW5kaXRpb24gZnJvbSBhIFxmQmNjaGFyX3RcZlAgb3Igc2V0IGEgXGZCY2NoYXJfdFxmUCBmcm9tIGEgd2lkZS1jaGFyYWN0ZXIgc3RyaW5nCkBAIC01OCwyMiArNjEsMTkgQEAKIC5icgogLkIgIiAgICAgICAgdm9pZCAqXGZJb3B0c1xmUCApOyIKIC5TSCBERVNDUklQVElPTgorLlNTIGdldGNjaGFyCiAuUFAKIFRoZSBcZkJnZXRjY2hhclxmUCBmdW5jdGlvbiBnZXRzIGEgd2lkZS1jaGFyYWN0ZXIgc3RyaW5nCiBhbmQgcmVuZGl0aW9uIGZyb20gYSBcZkJjY2hhcl90XGZQIGFyZ3VtZW50LgogV2hlbiBcZkl3Y2hcZlAgaXMgbm90IGEgbnVsbCBwb2ludGVyLAogdGhlIFxmQmdldGNjaGFyXGZQIGZ1bmN0aW9uIGRvZXMgdGhlIGZvbGxvd2luZzoKLS5UUCA1Ci0tCisuYlAKIEV4dHJhY3RzIGluZm9ybWF0aW9uIGZyb20gYSBcZkJjY2hhcl90XGZQIHZhbHVlIFxmSXdjdmFsXGZQCi0uVFAgNQotLQorLmJQCiBTdG9yZXMgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVzIGluIHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxmSWF0dHJzXGZQCi0uVFAgNQotLQorLmJQCiBTdG9yZXMgdGhlIGNvbG9yLXBhaXIgaW4gdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGZJY29sb3JfcGFpclxmUAotLlRQIDUKLS0KKy5iUAogU3RvcmVzIHRoZSB3aWRlLWNoYXJhY3RlciBzdHJpbmcsCiBjaGFyYWN0ZXJzIHJlZmVyZW5jZWQgYnkgXGZJd2N2YWxcZlAsIGludG8gdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgXGZJd2NoXGZQLgogLlBQCkBAIC04MiwzNCArODIsMzAgQEAKIGlzIGEgbnVsbCBwb2ludGVyLCB0aGUKIFxmQmdldGNjaGFyXGZQCiBmdW5jdGlvbiBkb2VzIHRoZSBmb2xsb3dpbmc6Ci0uVFAgNQotLQorLmJQCiBPYnRhaW5zIHRoZSBudW1iZXIgb2Ygd2lkZSBjaGFyYWN0ZXJzIHBvaW50ZWQgdG8gYnkgXGZJd2N2YWxcZlAKLS5UUCA1Ci0tCisuYlAKIERvZXMgbm90IGNoYW5nZSB0aGUgZGF0YSByZWZlcmVuY2VkIGJ5CiBcZklhdHRyc1xmUAogb3IKIFxmSWNvbG9yX3BhaXJcZlAKKy5TUyBzZXRjY2hhcgogLlBQCiBUaGUgXGZCc2V0Y2NoYXJcZlAgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGZJd2N2YWxcZlAKIGJ5IHVzaW5nOgotLlRQIDUKLS0KKy5iUAogVGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVzIGluCiBcZklhdHRyc1xmUAotLlRQIDUKLS0KKy5iUAogVGhlIGNvbG9yIHBhaXIgaW4KIFxmSWNvbG9yX3BhaXJcZlAKLS5UUCA1Ci0tCisuYlAKIFRoZSB3aWRlLWNoYXJhY3RlciBzdHJpbmcgcG9pbnRlZCB0byBieSBcZkl3Y2hcZlAuCiBUaGUgc3RyaW5nIG11c3QgYmUgTCdcXDAnIHRlcm1pbmF0ZWQsCiBjb250YWluIGF0IG1vc3Qgb25lIHNwYWNpbmcgY2hhcmFjdGVyLAogd2hpY2ggbXVzdCBiZSB0aGUgZmlyc3QuCiAuSVAKLVVwIHRvIFxmQkNDSEFSV19NQVhcZlAtMSBub25zcGFjaW5nIGNoYXJhY3RlcnMgbWF5IGZvbGxvdy4KK1VwIHRvIFxmQkNDSEFSV19NQVhcZlBcLTEgbm9uc3BhY2luZyBjaGFyYWN0ZXJzIG1heSBmb2xsb3cuCiBBZGRpdGlvbmFsIG5vbnNwYWNpbmcgY2hhcmFjdGVycyBhcmUgaWdub3JlZC4KIC5JUAogVGhlIHN0cmluZyBtYXkgY29udGFpbiBhIHNpbmdsZSBjb250cm9sIGNoYXJhY3RlciBpbnN0ZWFkLgpAQCAtMTIyLDExICsxMTgsMTIgQEAKIFRoZSBcZkl3Y3ZhbFxmUCBhcmd1bWVudCBtYXkgYmUgYSB2YWx1ZSBnZW5lcmF0ZWQgYnkgYSBjYWxsIHRvCiBcZkJzZXRjY2hhclxmUCBvciBieSBhIGZ1bmN0aW9uIHRoYXQgaGFzIGEgXGZCY2NoYXJfdFxmUCBvdXRwdXQgYXJndW1lbnQuCiBJZiBcZkl3Y3ZhbFxmUCBpcyBjb25zdHJ1Y3RlZCBieSBhbnkgb3RoZXIgbWVhbnMsIHRoZSBlZmZlY3QgaXMgdW5zcGVjaWZpZWQuCi0uU0ggUkVUVVJOIFZBTFVFUworLlNIIFJFVFVSTiBWQUxVRQogLlBQCiBXaGVuIFxmSXdjaFxmUCBpcyBhIG51bGwgcG9pbnRlciwKIFxmQmdldGNjaGFyXGZQIHJldHVybnMgdGhlIG51bWJlciBvZiB3aWRlIGNoYXJhY3RlcnMgcmVmZXJlbmNlZCBieQotXGZJd2N2YWxcZlAuCitcZkl3Y3ZhbFxmUCwKK2luY2x1ZGluZyBvbmUgZm9yIGEgdHJhaWxpbmcgbnVsbC4KIC5QUAogV2hlbiBcZkl3Y2hcZlAgaXMgbm90IGEgbnVsbCBwb2ludGVyLAogXGZCZ2V0Y2NoYXJcZlAgcmV0dXJucyBcZkJPS1xmUCB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwKQEAgLTE0MSw5ICsxMzgsMyBAQAogXGZCY3Vyc19jb2xvclxmUigzWCksCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCd2N3aWR0aFxmUigzKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfZ2V0Y2guM3ggYi9tYW4vY3Vyc19nZXRjaC4zeAppbmRleCA3MWZlZDVmLi44ZDk0ZTBhIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19nZXRjaC4zeAorKysgYi9tYW4vY3Vyc19nZXRjaC4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTMgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfZ2V0Y2guM3gsdiAxLjMwIDIwMDYvMTIvMDIgMTc6MDI6NTMgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2dldGNoLjN4LHYgMS40MiAyMDE1LzA3LzIxIDA4OjQ0OjA0IHRvbSBFeHAgJAogLlRIIGN1cnNfZ2V0Y2ggM1ggIiIKIC5uYQogLmh5IDAKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KIC5TSCBOQU1FCiBcZkJnZXRjaFxmUiwKIFxmQndnZXRjaFxmUiwKQEAgLTQ1LDE3ICs0OCwxOCBAQAogLlBQCiBcZkJpbnQgZ2V0Y2godm9pZCk7XGZSCiAuYnIKLVxmQmludCB3Z2V0Y2goV0lORE9XICp3aW4pO1xmUgorXGZCaW50IHdnZXRjaChXSU5ET1cgKlxmUFxmSXdpbik7XGZSCiAuYnIKLVxmQmludCBtdmdldGNoKGludCB5LCBpbnQgeCk7XGZSCitcZkJpbnQgbXZnZXRjaChpbnQgXGZQXGZJeVxmUFxmQiwgaW50IFxmUFxmSXhcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgbXZ3Z2V0Y2goV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCk7XGZSCitcZkJpbnQgbXZ3Z2V0Y2goV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGludCBcZlBcZkl5XGZQXGZCLCBpbnQgXGZQXGZJeFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCB1bmdldGNoKGludCBjaCk7XGZSCitcZkJpbnQgdW5nZXRjaChpbnQgXGZQXGZJY2hcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgaGFzX2tleShpbnQgY2gpO1xmUgorXGZCaW50IGhhc19rZXkoaW50IFxmUFxmSWNoXGZQXGZCKTtcZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCisuU1MgUmVhZGluZyBjaGFyYWN0ZXJzCiBUaGUgXGZCZ2V0Y2hcZlIsIFxmQndnZXRjaFxmUiwgXGZCbXZnZXRjaFxmUiBhbmQgXGZCbXZ3Z2V0Y2hcZlIsIHJvdXRpbmVzIHJlYWQKIGEgY2hhcmFjdGVyIGZyb20gdGhlIHdpbmRvdy4KIEluIG5vLWRlbGF5IG1vZGUsIGlmIG5vIGlucHV0IGlzIHdhaXRpbmcsIHRoZSB2YWx1ZSBcZkJFUlJcZlIgaXMgcmV0dXJuZWQuCkBAIC02OCwyNSArNzIsMzQgQEAKIHRoZSBwcm9ncmFtIHdhaXRzIHVudGlsIGEgY2hhcmFjdGVyIGlzIHR5cGVkIG9yIHRoZQogc3BlY2lmaWVkIHRpbWVvdXQgaGFzIGJlZW4gcmVhY2hlZC4KIC5QUAotVW5sZXNzIFxmQm5vZWNob1xmUiBoYXMgYmVlbiBzZXQsCitJZiBcZkJlY2hvXGZSIGlzIGVuYWJsZWQsIGFuZCB0aGUgd2luZG93IGlzIG5vdCBhIHBhZCwKIHRoZW4gdGhlIGNoYXJhY3RlciB3aWxsIGFsc28gYmUgZWNob2VkIGludG8gdGhlCiBkZXNpZ25hdGVkIHdpbmRvdyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlczoKKy5iUAogSWYgdGhlIGNoYXJhY3RlciBpcyB0aGUgY3VycmVudCBlcmFzZSBjaGFyYWN0ZXIsIGxlZnQgYXJyb3csIG9yIGJhY2tzcGFjZSwKIHRoZSBjdXJzb3IgaXMgbW92ZWQgb25lIHNwYWNlIHRvIHRoZSBsZWZ0IGFuZCB0aGF0IHNjcmVlbiBwb3NpdGlvbiBpcyBlcmFzZWQKIGFzIGlmIFxmQmRlbGNoXGZSIGhhZCBiZWVuIGNhbGxlZC4KKy5iUAogSWYgdGhlIGNoYXJhY3RlciB2YWx1ZSBpcyBhbnkgb3RoZXIgXGZCS0VZX1xmUiBkZWZpbmUsIHRoZSB1c2VyIGlzIGFsZXJ0ZWQKIHdpdGggYSBcZkJiZWVwXGZSIGNhbGwuCisuYlAKK0lmIHRoZSBjaGFyYWN0ZXIgaXMgYSBjYXJyaWFnZS1yZXR1cm4sCithbmQgaWYgXGZCbmxcZlAgaXMgZW5hYmxlZCwKK2l0IGlzIHRyYW5zbGF0ZWQgdG8gYSBsaW5lLWZlZWQgYWZ0ZXIgZWNob2luZy4KKy5iUAogT3RoZXJ3aXNlIHRoZSBjaGFyYWN0ZXIgaXMgc2ltcGx5IG91dHB1dCB0byB0aGUgc2NyZWVuLgogLlBQCiBJZiB0aGUgd2luZG93IGlzIG5vdCBhIHBhZCwgYW5kIGl0IGhhcyBiZWVuIG1vdmVkIG9yIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0CiBjYWxsIHRvIFxmQndyZWZyZXNoXGZSLCBcZkJ3cmVmcmVzaFxmUiB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciBjaGFyYWN0ZXIKIGlzIHJlYWQuCisuU1MgS2V5cGFkIG1vZGUKIC5QUAogSWYgXGZCa2V5cGFkXGZSIGlzIFxmQlRSVUVcZlIsIGFuZCBhIGZ1bmN0aW9uIGtleSBpcyBwcmVzc2VkLCB0aGUgdG9rZW4gZm9yCiB0aGF0IGZ1bmN0aW9uIGtleSBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIHRoZSByYXcgY2hhcmFjdGVycy4KIFBvc3NpYmxlIGZ1bmN0aW9uCiBrZXlzIGFyZSBkZWZpbmVkIGluIFxmQjxjdXJzZXMuaD5cZlIgYXMgbWFjcm9zIHdpdGggdmFsdWVzIG91dHNpZGUgdGhlIHJhbmdlCi1vZiA4LWJpdCBjaGFyYWN0ZXJzIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggXGZCS0VZX1xmUi4gVGh1cywgYSB2YXJpYWJsZQorb2YgOC1iaXQgY2hhcmFjdGVycyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoIFxmQktFWV9cZlIuCitUaHVzLCBhIHZhcmlhYmxlCiBpbnRlbmRlZCB0byBob2xkIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBrZXkgbXVzdCBiZSBvZiBzaG9ydCBzaXplIG9yCiBsYXJnZXIuCiAuUFAKQEAgLTk4LDIyICsxMTEsMjIgQEAKIG90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGtleSB2YWx1ZSBpcyByZXR1cm5lZC4KIEZvciB0aGlzIHJlYXNvbiwgbWFueSB0ZXJtaW5hbHMgZXhwZXJpZW5jZSBhIGRlbGF5IGJldHdlZW4gdGhlIHRpbWUKIGEgdXNlciBwcmVzc2VzIHRoZSBlc2NhcGUga2V5IGFuZCB0aGUgZXNjYXBlIGlzIHJldHVybmVkIHRvIHRoZSBwcm9ncmFtLgorLlNTIFVuZ2V0dGluZyBjaGFyYWN0ZXJzCiAuUFAKIFRoZSBcZkJ1bmdldGNoXGZSIHJvdXRpbmUgcGxhY2VzIFxmSWNoXGZSIGJhY2sgb250byB0aGUgaW5wdXQgcXVldWUgdG8gYmUKIHJldHVybmVkIGJ5IHRoZSBuZXh0IGNhbGwgdG8gXGZCd2dldGNoXGZSLgogVGhlcmUgaXMganVzdCBvbmUgaW5wdXQgcXVldWUgZm9yIGFsbCB3aW5kb3dzLgogLlBQCi0uU1MgRnVuY3Rpb24gS2V5cwotVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBrZXlzLCBkZWZpbmVkIGluIFxmQjxjdXJzZXMuaD5cZlIsIG1pZ2h0IGJlIHJldHVybmVkIGJ5CisuU1MgUHJlZGVmaW5lZCBrZXktY29kZXMKK1RoZSBmb2xsb3dpbmcgc3BlY2lhbCBrZXlzLCBkZWZpbmVkIGluIFxmQjxjdXJzZXMuaD5cZlIsIG1heSBiZSByZXR1cm5lZCBieQogXGZCZ2V0Y2hcZlIgaWYgXGZCa2V5cGFkXGZSIGhhcyBiZWVuIGVuYWJsZWQuCi1Ob3RlIHRoYXQgbm90IGFsbCBvZiB0aGVzZSBhcmUKLW5lY2Vzc2FyaWx5IHN1cHBvcnRlZCBvbiBhbnkgcGFydGljdWxhciB0ZXJtaW5hbC4KLS5zcAorTm90IGFsbCBvZiB0aGVzZSBhcmUgbmVjZXNzYXJpbHkgc3VwcG9ydGVkIG9uIGFueSBwYXJ0aWN1bGFyIHRlcm1pbmFsLgorLlBQCiAuVFMKIGNlbnRlciB0YWIoLykgOwotbCBsCiBsIGwgLgogXGZJTmFtZVxmUi9cZklLZXlcZlIgXGZJbmFtZVxmUgorXwogS0VZX0JSRUFLL0JyZWFrIGtleQogS0VZX0RPV04vVGhlIGZvdXIgYXJyb3cga2V5cyAuLi4KIEtFWV9VUApAQCAtMjEzLDcgKzIyNiw3IEBACiAuVEUKIC5QUAogS2V5cGFkIGlzIGFycmFuZ2VkIGxpa2UgdGhpczoKLS5zcAorLmJyCiAuVFMKIGNlbnRlciBhbGxib3ggdGFiKC8pIDsKIGMgYyBjIC4KQEAgLTIyMiwzNSArMjM1LDU2IEBACiBcZkJDMVxmUi9cZkJkb3duXGZSL1xmQkMzXGZSCiAuVEUKIC5zcAotVGhlIFxmQmhhc19rZXlcZlIgcm91dGluZSB0YWtlcyBhIGtleSB2YWx1ZSBmcm9tIHRoZSBhYm92ZSBsaXN0LCBhbmQKLXJldHVybnMgVFJVRSBvciBGQUxTRSBhY2NvcmRpbmcgdG8gd2hldGhlcgorQSBmZXcgb2YgdGhlc2UgcHJlZGVmaW5lZCB2YWx1ZXMgZG8gXGZJbm90XGZQIGNvcnJlc3BvbmQgdG8gYSByZWFsIGtleToKKy5iUAorLkIgS0VZX1JFU0laRQoraXMgcmV0dXJuZWQgd2hlbiB0aGUgXGZCU0lHV0lOQ0hcZlAgc2lnbmFsIGhhcyBiZWVuIGRldGVjdGVkCisoc2VlIFxmQmluaXRzY3JcZlAoM1gpIGFuZCBcZkJyZXNpemV0ZXJtXGZSKDNYKSkuCisuYlAKKy5CIEtFWV9NT1VTRQoraXMgcmV0dXJuZWQgZm9yIG1vdXNlLWV2ZW50cyAoc2VlIFxmQmN1cnNfbW91c2VcZlIoM1gpKS4KKy5TUyBUZXN0aW5nIGtleS1jb2RlcworLlBQCitUaGUgXGZCaGFzX2tleVxmUiByb3V0aW5lIHRha2VzIGEga2V5LWNvZGUgdmFsdWUgZnJvbSB0aGUgYWJvdmUgbGlzdCwgYW5kCityZXR1cm5zIFxmQlRSVUVcZlAgb3IgXGZCRkFMU0VcZlAgYWNjb3JkaW5nIHRvIHdoZXRoZXIKIHRoZSBjdXJyZW50IHRlcm1pbmFsIHR5cGUgcmVjb2duaXplcyBhIGtleSB3aXRoIHRoYXQgdmFsdWUuCi1Ob3RlIHRoYXQgYSBmZXcgdmFsdWVzIGRvIG5vdCBjb3JyZXNwb25kIHRvIGEgcmVhbCBrZXksCi1lLmcuLCBcZkJLRVlfUkVTSVpFXGZQIGFuZCBcZkJLRVlfTU9VU0VcZlAuCi1TZWUgXGZCcmVzaXpldGVybVxmUigzWCkgZm9yIG1vcmUgZGV0YWlscyBhYm91dCBcZkJLRVlfUkVTSVpFXGZQLCBhbmQKLVxmQmN1cnNfbW91c2VcZlIoM1gpIGZvciBhIGRpc2N1c3Npb24gb2YgXGZCS0VZX01PVVNFXGZQLgorLlBQCitUaGUgbGlicmFyeSBhbHNvIHN1cHBvcnRzIHRoZXNlIGV4dGVuc2lvbnM6CisuUlMgMworLlRQIDUKKy5CIGRlZmluZV9rZXkKK2RlZmluZXMgYSBrZXktY29kZSBmb3IgYSBnaXZlbiBzdHJpbmcgKHNlZSBcZkJkZWZpbmVfa2V5XGZQKDNYKSkuCisuVFAgNQorLkIga2V5X2RlZmluZWQKK2NoZWNrcyBpZiB0aGVyZSBpcyBhIGtleS1jb2RlIGRlZmluZWQgZm9yIGEgZ2l2ZW4KK3N0cmluZyAoc2VlIFxmQmtleV9kZWZpbmVkXGZQKDNYKSkuCisuUkUKIC5QUAogLlNIIFJFVFVSTiBWQUxVRQogQWxsIHJvdXRpbmVzIHJldHVybiB0aGUgaW50ZWdlciBcZkJFUlJcZlIgdXBvbiBmYWlsdXJlIGFuZCBhbiBpbnRlZ2VyIHZhbHVlCiBvdGhlciB0aGFuIFxmQkVSUlxmUiAoXGZCT0tcZlIgaW4gdGhlIGNhc2Ugb2YgdW5nZXRjaCgpKSB1cG9uIHN1Y2Nlc3NmdWwKIGNvbXBsZXRpb24uCi0uUlMKKy5SUyAzCiAuVFAgNQogXGZCdW5nZXRjaFxmUAotcmV0dXJucyBhbiBlcnJvcgorcmV0dXJucyBFUlIKIGlmIHRoZXJlIGlzIG5vIG1vcmUgcm9vbSBpbiB0aGUgRklGTy4KLS5UUCA1CisuVFAKIFxmQndnZXRjaFxmUAotcmV0dXJucyBhbiBlcnJvcgorcmV0dXJucyBFUlIKIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCBvcgogaWYgaXRzIHRpbWVvdXQgZXhwaXJlcyB3aXRob3V0IGhhdmluZyBhbnkgZGF0YS4KIC5SRQorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBOT1RFUwogVXNlIG9mIHRoZSBlc2NhcGUga2V5IGJ5IGEgcHJvZ3JhbW1lciBmb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZ1bmN0aW9uIGlzCiBkaXNjb3VyYWdlZCwgYXMgaXQgd2lsbCBjYXVzZSBhIGRlbGF5IG9mIHVwIHRvIG9uZSBzZWNvbmQgd2hpbGUgdGhlCiBrZXlwYWQgY29kZSBsb29rcyBmb3IgYSBmb2xsb3dpbmcgZnVuY3Rpb24ta2V5IHNlcXVlbmNlLgogLlBQCi1Ob3RlIHRoYXQgc29tZSBrZXlzIG1heSBiZSB0aGUgc2FtZSBhcyBjb21tb25seSB1c2VkIGNvbnRyb2wKK1NvbWUga2V5cyBtYXkgYmUgdGhlIHNhbWUgYXMgY29tbW9ubHkgdXNlZCBjb250cm9sCiBrZXlzLCBlLmcuLCBcZkJLRVlfRU5URVJcZlAgdmVyc3VzIGNvbnRyb2wvTSwgXGZCS0VZX0JBQ0tTUEFDRVxmUCB2ZXJzdXMgY29udHJvbC9ILgogU29tZSBjdXJzZXMgaW1wbGVtZW50YXRpb25zIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhleQogdHJlYXQgdGhlc2UgY29udHJvbCBrZXlzIHNwZWNpYWxseSAoYW5kIGlnbm9yZSB0aGUgdGVybWluZm8pLCBvcgpAQCAtMjYwLDYgKzI5NCwyMCBAQAogXGZCZ2V0Y2hcZlIgd2lsbCByZXR1cm4gXGZCS0VZX0VOVEVSXGZQCiB3aGVuIHlvdSBwcmVzcyBjb250cm9sL00uCiAuUFAKK0dlbmVyYWxseSwgXGZCS0VZX0VOVEVSXGZQIGRlbm90ZXMgdGhlIGNoYXJhY3RlcihzKSBzZW50IGJ5IHRoZSBcZklFbnRlclxmUAora2V5IG9uIHRoZSBudW1lcmljIGtleXBhZDoKKy5iUAordGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGxpc3RzIHRoZSBtb3N0IHVzZWZ1bCBrZXlzLAorLmJQCit0aGUgXGZJRW50ZXJcZlAga2V5IG9uIHRoZSByZWd1bGFyIGtleWJvYXJkIGlzIGFscmVhZHkgaGFuZGxlZCBieQordGhlIHN0YW5kYXJkIEFTQ0lJIGNoYXJhY3RlcnMgZm9yIGNhcnJpYWdlLXJldHVybiBhbmQgbGluZS1mZWVkLAorLmJQCitkZXBlbmRpbmcgb24gd2hldGhlciBcZkJubFxmUCBvciBcZkJub25sXGZQIHdhcyBjYWxsZWQsCitwcmVzc2luZyAiRW50ZXIiIG9uIHRoZSByZWd1bGFyIGtleWJvYXJkIG1heSByZXR1cm4gZWl0aGVyIGEgY2FycmlhZ2UtcmV0dXJuCitvciBsaW5lLWZlZWQsIGFuZCBmaW5hbGx5CisuYlAKKyJFbnRlciBvciBzZW5kIiBpcyB0aGUgc3RhbmRhcmQgZGVzY3JpcHRpb24gZm9yIHRoaXMga2V5LgorLlBQCiBXaGVuIHVzaW5nIFxmQmdldGNoXGZSLCBcZkJ3Z2V0Y2hcZlIsIFxmQm12Z2V0Y2hcZlIsIG9yCiBcZkJtdndnZXRjaFxmUiwgbm9jYnJlYWsgbW9kZSAoXGZCbm9jYnJlYWtcZlIpIGFuZCBlY2hvIG1vZGUKIChcZkJlY2hvXGZSKSBzaG91bGQgbm90IGJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZS4KQEAgLTMxMiw2ICszNjAsNyBAQAogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19pbm9wdHNcZlIoM1gpLAorXGZCY3Vyc19vdXRvcHRzXGZSKDNYKSwKIFxmQmN1cnNfbW91c2VcZlIoM1gpLAogXGZCY3Vyc19tb3ZlXGZSKDNYKSwKIFxmQmN1cnNfcmVmcmVzaFxmUigzWCksCkBAIC0zMjAsOSArMzY5LDMgQEAKIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGxpYnJhcnkgYXJlCiBkZXNjcmliZWQgaW4KIFxmQmN1cnNfZ2V0X3djaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2dldHN0ci4zeCBiL21hbi9jdXJzX2dldHN0ci4zeAppbmRleCBmMTMxNzY1Li5lNTQ4Y2YxIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19nZXRzdHIuM3gKKysrIGIvbWFuL2N1cnNfZ2V0c3RyLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19nZXRzdHIuM3gsdiAxLjE1IDIwMDYvMDEvMTIgMDA6MzA6NTggdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2dldHN0ci4zeCx2IDEuMTkgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwICQKIC5USCBjdXJzX2dldHN0ciAzWCAiIgogLm5hCiAuaHkgMApAQCAtMzgsNyArMzgsNyBAQAogXGZCbXZnZXRzdHJcZlIsCiBcZkJtdmdldG5zdHJcZlIsCiBcZkJtdndnZXRzdHJcZlIsCi1cZkJtdndnZXRuc3RyXGZSIC0gYWNjZXB0IGNoYXJhY3RlciBzdHJpbmdzIGZyb20gXGZCY3Vyc2VzXGZSIHRlcm1pbmFsIGtleWJvYXJkCitcZkJtdndnZXRuc3RyXGZSIFwtIGFjY2VwdCBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFxmQmN1cnNlc1xmUiB0ZXJtaW5hbCBrZXlib2FyZAogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtOTQsNiArOTQsMTAgQEAKIFRoaXMgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgYW4gZXh0ZW5zaW9uIGFzIHdlbGwuCiBJZiBhIFNJR1dJTkNIIGludGVycnVwdHMgdGhlIGZ1bmN0aW9uLCBpdCB3aWxsIHJldHVybiBcZkJLRVlfUkVTSVpFXGZQCiByYXRoZXIgdGhhbiBcZkJPS1xmUCBvciBcZkJFUlJcZlAuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIE5PVEVTCiBOb3RlIHRoYXQgXGZCZ2V0c3RyXGZSLCBcZkJtdmdldHN0clxmUiwgYW5kIFxmQm12d2dldHN0clxmUiBtYXkgYmUgbWFjcm9zLgogLlNIIFBPUlRBQklMSVRZCkBAIC0xMTMsMTAgKzExNyw2IEBACiBUaGUgZnVuY3Rpb25zIFxmQmdldG5zdHJcZlIsIFxmQm12Z2V0bnN0clxmUiwgYW5kIFxmQm12d2dldG5zdHJcZlIgd2VyZQogcHJlc2VudCBidXQgbm90IGRvY3VtZW50ZWQgaW4gU1ZyNC4KIC5TSCBTRUUgQUxTTwotXGZCY3Vyc2VzXGZSKDNYKSwgXGZCY3Vyc19nZXRjaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX2dldGNoXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX2dldHl4LjN4IGIvbWFuL2N1cnNfZ2V0eXguM3gKaW5kZXggMjU4MTI1My4uOTgwOTY4ZSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfZ2V0eXguM3gKKysrIGIvbWFuL2N1cnNfZ2V0eXguM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxMyArMjYsMTMgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfZ2V0eXguM3gsdiAxLjE2IDIwMDcvMDUvMTIgMTY6MzQ6NDkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2dldHl4LjN4LHYgMS4xOCAyMDEwLzEyLzA0IDE4OjM2OjQ0IHRvbSBFeHAgJAogLlRIIGN1cnNfZ2V0eXggM1ggIiIKIC5TSCBOQU1FCiBcZkJnZXR5eFxmUiwKIFxmQmdldHBhcnl4XGZSLAogXGZCZ2V0YmVneXhcZlIsCi1cZkJnZXRtYXh5eFxmUiAtIGdldCBcZkJjdXJzZXNcZlIgY3Vyc29yIGFuZCB3aW5kb3cgY29vcmRpbmF0ZXMKK1xmQmdldG1heHl4XGZSIFwtIGdldCBcZkJjdXJzZXNcZlIgY3Vyc29yIGFuZCB3aW5kb3cgY29vcmRpbmF0ZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCkBAIC01MSw3ICs1MSw3IEBACiBJZiBcZkl3aW5cZlIgaXMgYSBzdWJ3aW5kb3csIHRoZSBcZkJnZXRwYXJ5eFxmUiBtYWNybyBwbGFjZXMgdGhlIGJlZ2lubmluZwogY29vcmRpbmF0ZXMgb2YgdGhlIHN1YndpbmRvdyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IHdpbmRvdyBpbnRvIHR3byBpbnRlZ2VyCiB2YXJpYWJsZXMgXGZJeVxmUiBhbmQgXGZJeFxmUi4KLU90aGVyd2lzZSwgXGZCLTFcZlIgaXMgcGxhY2VkIGludG8gXGZJeVxmUiBhbmQgXGZJeFxmUi4KK090aGVyd2lzZSwgXGZCXC0xXGZSIGlzIHBsYWNlZCBpbnRvIFxmSXlcZlIgYW5kIFxmSXhcZlIuCiAuUFAKIExpa2UgXGZCZ2V0eXhcZlIsIHRoZSBcZkJnZXRiZWd5eFxmUiBhbmQgXGZCZ2V0bWF4eXhcZlIgbWFjcm9zIHN0b3JlCiB0aGUgY3VycmVudCBiZWdpbm5pbmcgY29vcmRpbmF0ZXMgYW5kIHNpemUgb2YgdGhlIHNwZWNpZmllZCB3aW5kb3cuCkBAIC05OCw5ICs5OCwzIEBACiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19sZWdhY3lcZlIoM1gpLAogXGZCY3Vyc19vcGFxdWVcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2luX3djaC4zeCBiL21hbi9jdXJzX2luX3djaC4zeAppbmRleCA4NzA5ZDEzLi41ZjUwZTVhIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19pbl93Y2guM3gKKysrIGIvbWFuL2N1cnNfaW5fd2NoLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTMgKzI2LDEzIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luX3djaC4zeCx2IDEuMiAyMDA2LzAyLzI1IDIxOjQyOjIyIHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19pbl93Y2guM3gsdiAxLjUgMjAxMC8xMi8wNCAxODozNjo0NCB0b20gRXhwICQKIC5USCBjdXJzX2luX3djaCAzWCAiIgogLlNIIE5BTUUKIFxmQmluX3djaFxmUiwKIFxmQm12aW5fd2NoXGZSLAogXGZCbXZ3aW5fd2NoXGZSLAotXGZCd2luX3djaFxmUiAtIGV4dHJhY3QgYSBjb21wbGV4IGNoYXJhY3RlciBhbmQgcmVuZGl0aW9uIGZyb20gYSB3aW5kb3cKK1xmQndpbl93Y2hcZlIgXC0gZXh0cmFjdCBhIGNvbXBsZXggY2hhcmFjdGVyIGFuZCByZW5kaXRpb24gZnJvbSBhIHdpbmRvdwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKQEAgLTUzLDYgKzUzLDEwIEBACiBBbHNvLCB0aGUgXGZJbXZcZlIgcm91dGluZXMgY2hlY2sgZm9yIGVycm9yIG1vdmluZyB0aGUgY3Vyc29yLCByZXR1cm5pbmcgRVJSCiBpbiB0aGF0IGNhc2UuCiBPdGhlcndpc2UgdGhleSByZXR1cm4gT0sKKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIE5vdGUgdGhhdCBhbGwgb2YgdGhlc2Ugcm91dGluZXMgbWF5IGJlIG1hY3Jvcy4KIC5TSCBQT1JUQUJJTElUWQpAQCAtNjAsOSArNjQsMyBAQAogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19pbmNoXGZSKDNYKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfaW5fd2Noc3RyLjN4IGIvbWFuL2N1cnNfaW5fd2Noc3RyLjN4CmluZGV4IGIwNGExZjUuLmY5Mjk2ODcgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2luX3djaHN0ci4zeAorKysgYi9tYW4vY3Vyc19pbl93Y2hzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luX3djaHN0ci4zeCx2IDEuNiAyMDA2LzEyLzAyIDE3OjAzOjA3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19pbl93Y2hzdHIuM3gsdiAxLjkgMjAxMi8xMS8wMyAyMzowMzo1OSB0b20gRXhwICQKIC5USCBjdXJzX2luX3djaHN0ciAzWCAiIgogLm5hCiAuaHkgMApAQCAtOTgsMTEgKzk4LDE1IEBACiBcZkJtdndpbl93Y2huc3RyXGZSLCBvcgogXGZCd2luX3djaG5zdHJcZlIKIGlzIHJlY29tbWVuZGVkLgotLlNIIFJFVFVSTiBWQUxVRVMKKy5TSCBSRVRVUk4gVkFMVUUKIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuCiBcZkJPS1xmUi4KIE90aGVyd2lzZSwgdGhleSByZXR1cm4KIFxmQkVSUlxmUi4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggUE9SVEFCSUxJVFkKIFRoZSBYU0kgQ3Vyc2VzIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIFRoaXMgaW1wbGVtZW50YXRpb24gY2hlY2tzIGZvciBudWxsIHBvaW50ZXJzLApAQCAtMTE0LDkgKzExOCwzIEBACiBcZkJjdXJzX2luc3RyXGZSKDNYKSwKIFxmQmN1cnNfaW53c3RyXGZSKDNYKQogXGZCY3Vyc19pbmNoc3RyXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19pbmNoLjN4IGIvbWFuL2N1cnNfaW5jaC4zeAppbmRleCAzMDkxYjljLi43ZTFlM2I0IDEwMDY0NAotLS0gYS9tYW4vY3Vyc19pbmNoLjN4CisrKyBiL21hbi9jdXJzX2luY2guM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTEgKzI3LDEzIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luY2guM3gsdiAxLjEzIDIwMDYvMTIvMDIgMTY6NTg6NTUgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2luY2guM3gsdiAxLjE3IDIwMTAvMTIvMDQgMTg6MzY6NDQgdG9tIEV4cCAkCiAuVEggY3Vyc19pbmNoIDNYICIiCiAuU0ggTkFNRQotXGZCaW5jaFxmUiwgXGZCd2luY2hcZlIsIFxmQm12aW5jaFxmUiwgXGZCbXZ3aW5jaFxmUgotLSBnZXQgYSBjaGFyYWN0ZXIgYW5kIGF0dHJpYnV0ZXMgZnJvbSBhIFxmQmN1cnNlc1xmUiB3aW5kb3cKK1xmQmluY2hcZlIsCitcZkJ3aW5jaFxmUiwKK1xmQm12aW5jaFxmUiwKK1xmQm12d2luY2hcZlIgXC0gZ2V0IGEgY2hhcmFjdGVyIGFuZCBhdHRyaWJ1dGVzIGZyb20gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcApAQCAtNTksNiArNjEsMTAgQEAKIFxmQkFfQVRUUklCVVRFU1xmUglCaXQtbWFzayB0byBleHRyYWN0IGF0dHJpYnV0ZXMKIFxmQkFfQ09MT1JcZlIJQml0LW1hc2sgdG8gZXh0cmFjdCBjb2xvci1wYWlyIGZpZWxkIGluZm9ybWF0aW9uCiAuVEUKKy5TSCBSRVRVUk4gVkFMVUUKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIE5PVEVTCiBOb3RlIHRoYXQgYWxsIG9mIHRoZXNlIHJvdXRpbmVzIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKQEAgLTY5LDkgKzc1LDMgQEAKIENvbXBhcmFibGUgZnVuY3Rpb25zIGluIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGxpYnJhcnkgYXJlCiBkZXNjcmliZWQgaW4KIFxmQmN1cnNfaW5fd2NoXGZSKDNYKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfaW5jaHN0ci4zeCBiL21hbi9jdXJzX2luY2hzdHIuM3gKaW5kZXggMThjMjFkYy4uMmRjNzY3MyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5jaHN0ci4zeAorKysgYi9tYW4vY3Vyc19pbmNoc3RyLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19pbmNoc3RyLjN4LHYgMS4xMiAyMDA2LzEyLzAyIDE3OjAwOjU4IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19pbmNoc3RyLjN4LHYgMS4xNSAyMDEwLzEyLzA0IDE4OjM2OjQ0IHRvbSBFeHAgJAogLlRIIGN1cnNfaW5jaHN0ciAzWCAiIgogLm5hCiAuaHkgMApAQCAtMzgsNyArMzgsNyBAQAogXGZCbXZpbmNoc3RyXGZSLAogXGZCbXZpbmNobnN0clxmUiwKIFxmQm12d2luY2hzdHJcZlIsCi1cZkJtdndpbmNobnN0clxmUiAtIGdldCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIChhbmQgYXR0cmlidXRlcykgZnJvbSBhIFxmQmN1cnNlc1xmUiB3aW5kb3cKK1xmQm12d2luY2huc3RyXGZSIFwtIGdldCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIChhbmQgYXR0cmlidXRlcykgZnJvbSBhIFxmQmN1cnNlc1xmUiB3aW5kb3cKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKQEAgLTc4LDkgKzc4LDEzIEBACiBJZiB0aGUgXGZJY2hzdHJcZlAgcGFyYW1ldGVyIGlzIG51bGwsCiBubyBkYXRhIGlzIHJldHVybmVkLAogYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgemVyby4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IFxmQndpbmNobnN0clxmUiBtYXkgYmUgbWFjcm9zLiAgU1ZyNCBkb2VzIG5vdAotZG9jdW1lbnQgd2hldGhlciB0aGUgcmVzdWx0IHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQ7IGl0IGRvZXMgbm90IGRvY3VtZW50Citkb2N1bWVudCB3aGV0aGVyIHRoZSByZXN1bHQgc3RyaW5nIGlzIHplcm8tdGVybWluYXRlZDsgaXQgZG9lcyBub3QgZG9jdW1lbnQKIHdoZXRoZXIgYSBsZW5ndGggbGltaXQgYXJndW1lbnQgaW5jbHVkZXMgYW55IHRyYWlsaW5nIDA7IGFuZCBpdCBkb2VzIG5vdAogZG9jdW1lbnQgdGhlIG1lYW5pbmcgb2YgdGhlIHJldHVybiB2YWx1ZS4KIC5TSCBQT1JUQUJJTElUWQpAQCAtOTMsOSArOTcsMyBAQAogQ29tcGFyYWJsZSBmdW5jdGlvbnMgaW4gdGhlIHdpZGUtY2hhcmFjdGVyIChuY3Vyc2VzdykgbGlicmFyeSBhcmUKIGRlc2NyaWJlZCBpbgogXGZCY3Vyc19pbl93Y2hzdHJcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19pbml0c2NyLjN4IGIvbWFuL2N1cnNfaW5pdHNjci4zeAppbmRleCAxYTg2NWY5Li5kYzE1ZWNiIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19pbml0c2NyLjN4CisrKyBiL21hbi9jdXJzX2luaXRzY3IuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxNSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19pbml0c2NyLjN4LHYgMS4xNCAyMDA1LzA1LzE1IDE2OjE4OjAxIHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19pbml0c2NyLjN4LHYgMS4yNCAyMDE1LzA3LzIxIDIzOjAxOjM4IHRvbSBFeHAgJAogLlRIIGN1cnNfaW5pdHNjciAzWCAiIgorLmRlIGJQCisuSVAgXChidSA0CisuLgorLmllIFxuKC5nIC5kcyBgYCBcKGxxCisuZWwgICAgICAgLmRzIGBgIGBgCisuaWUgXG4oLmcgLmRzICcnIFwocnEKKy5lbCAgICAgICAuZHMgJycgJycKIC5uYQogLmh5IDAKIC5TSCBOQU1FCkBAIC0zNiw3ICs0Myw3IEBACiBcZkJlbmR3aW5cZlIsCiBcZkJpc2VuZHdpblxmUiwKIFxmQnNldF90ZXJtXGZSLAotXGZCZGVsc2NyZWVuXGZSIC0gXGZCY3Vyc2VzXGZSIHNjcmVlbiBpbml0aWFsaXphdGlvbiBhbmQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzCitcZkJkZWxzY3JlZW5cZlIgXC0gXGZCY3Vyc2VzXGZSIHNjcmVlbiBpbml0aWFsaXphdGlvbiBhbmQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCkBAIC00OCw1NyArNTUsODUgQEAKIC5icgogXGZCYm9vbCBpc2VuZHdpbih2b2lkKTtcZlIKIC5icgotXGZCU0NSRUVOICpuZXd0ZXJtKGNoYXIgKnR5cGUsIEZJTEUgKm91dGZkLCBGSUxFICppbmZkKTtcZlIKK1xmQlNDUkVFTiAqbmV3dGVybShjaGFyICpcZlBcZkl0eXBlXGZQXGZCLCBGSUxFICpcZlBcZklvdXRmZFxmUFxmQiwgRklMRSAqXGZQXGZJaW5mZFxmUFxmQik7XGZSCiAuYnIKLVxmQlNDUkVFTiAqc2V0X3Rlcm0oU0NSRUVOICpuZXcpO1xmUgorXGZCU0NSRUVOICpzZXRfdGVybShTQ1JFRU4gKlxmUFxmSW5ld1xmUFxmQik7XGZSCiAuYnIKLVxmQnZvaWQgZGVsc2NyZWVuKFNDUkVFTiogc3ApO1xmUgorXGZCdm9pZCBkZWxzY3JlZW4oU0NSRUVOKiBcZlBcZklzcFxmUFxmQik7XGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgorLlNTIGluaXRzY3IKIFxmQmluaXRzY3JcZlIgaXMgbm9ybWFsbHkgdGhlIGZpcnN0IFxmQmN1cnNlc1xmUiByb3V0aW5lIHRvIGNhbGwgd2hlbgotaW5pdGlhbGl6aW5nIGEgcHJvZ3JhbS4gIEEgZmV3IHNwZWNpYWwgcm91dGluZXMgc29tZXRpbWVzIG5lZWQgdG8gYmUKLWNhbGxlZCBiZWZvcmUgaXQ7IHRoZXNlIGFyZSBcZkJzbGtfaW5pdFxmUiwgXGZCZmlsdGVyXGZSLCBcZkJyaXBvZmZsaW5lXGZSLAotXGZCdXNlX2VudlxmUi4gIEZvciBtdWx0aXBsZS10ZXJtaW5hbCBhcHBsaWNhdGlvbnMsIFxmQm5ld3Rlcm1cZlIgbWF5IGJlCi1jYWxsZWQgYmVmb3JlIFxmQmluaXRzY3JcZlIuCitpbml0aWFsaXppbmcgYSBwcm9ncmFtLgorQSBmZXcgc3BlY2lhbCByb3V0aW5lcyBzb21ldGltZXMgbmVlZCB0byBiZSBjYWxsZWQgYmVmb3JlIGl0OwordGhlc2UgYXJlIFxmQnNsa19pbml0XGZSLCBcZkJmaWx0ZXJcZlIsIFxmQnJpcG9mZmxpbmVcZlIsCitcZkJ1c2VfZW52XGZSLgorRm9yIG11bHRpcGxlLXRlcm1pbmFsIGFwcGxpY2F0aW9ucywKK1xmQm5ld3Rlcm1cZlIgbWF5IGJlIGNhbGxlZCBiZWZvcmUgXGZCaW5pdHNjclxmUi4KIC5QUAogVGhlIGluaXRzY3IgY29kZSBkZXRlcm1pbmVzIHRoZSB0ZXJtaW5hbCB0eXBlIGFuZCBpbml0aWFsaXplcyBhbGwgXGZCY3Vyc2VzXGZSCi1kYXRhIHN0cnVjdHVyZXMuICBcZkJpbml0c2NyXGZSIGFsc28gY2F1c2VzIHRoZSBmaXJzdCBjYWxsIHRvIFxmQnJlZnJlc2hcZlIgdG8KLWNsZWFyIHRoZSBzY3JlZW4uICBJZiBlcnJvcnMgb2NjdXIsIFxmQmluaXRzY3JcZlIgd3JpdGVzIGFuIGFwcHJvcHJpYXRlIGVycm9yCi1tZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yIGFuZCBleGl0czsgb3RoZXJ3aXNlLCBhIHBvaW50ZXIgaXMgcmV0dXJuZWQgdG8KLVxmQnN0ZHNjclxmUi4KK2RhdGEgc3RydWN0dXJlcy4KK1xmQmluaXRzY3JcZlIgYWxzbyBjYXVzZXMgdGhlIGZpcnN0IGNhbGwgdG8gXGZCcmVmcmVzaFxmUiB0byBjbGVhciB0aGUgc2NyZWVuLgorSWYgZXJyb3JzIG9jY3VyLCBcZkJpbml0c2NyXGZSIHdyaXRlcyBhbiBhcHByb3ByaWF0ZSBlcnJvcgorbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciBhbmQgZXhpdHM7CitvdGhlcndpc2UsIGEgcG9pbnRlciBpcyByZXR1cm5lZCB0byBcZkJzdGRzY3JcZlIuCisuU1MgbmV3dGVybQogLlBQCiBBIHByb2dyYW0gdGhhdCBvdXRwdXRzIHRvIG1vcmUgdGhhbiBvbmUgdGVybWluYWwgc2hvdWxkIHVzZSB0aGUgXGZCbmV3dGVybVxmUgotcm91dGluZSBmb3IgZWFjaCB0ZXJtaW5hbCBpbnN0ZWFkIG9mIFxmQmluaXRzY3JcZlIuICBBIHByb2dyYW0gdGhhdCBuZWVkcyB0bwotaW5zcGVjdCBjYXBhYmlsaXRpZXMsIHNvIGl0IGNhbiBjb250aW51ZSB0byBydW4gaW4gYSBsaW5lLW9yaWVudGVkIG1vZGUgaWYgdGhlCityb3V0aW5lIGZvciBlYWNoIHRlcm1pbmFsIGluc3RlYWQgb2YgXGZCaW5pdHNjclxmUi4KK0EgcHJvZ3JhbSB0aGF0IG5lZWRzIHRvIGluc3BlY3QgY2FwYWJpbGl0aWVzLAorc28gaXQgY2FuIGNvbnRpbnVlIHRvIHJ1biBpbiBhIGxpbmUtb3JpZW50ZWQgbW9kZSBpZiB0aGUKIHRlcm1pbmFsIGNhbm5vdCBzdXBwb3J0IGEgc2NyZWVuLW9yaWVudGVkIHByb2dyYW0sIHdvdWxkIGFsc28gdXNlCi1cZkJuZXd0ZXJtXGZSLiAgVGhlIHJvdXRpbmUgXGZCbmV3dGVybVxmUiBzaG91bGQgYmUgY2FsbGVkIG9uY2UgZm9yIGVhY2gKLXRlcm1pbmFsLiAgSXQgcmV0dXJucyBhIHZhcmlhYmxlIG9mIHR5cGUgXGZCU0NSRUVOICpcZlIgd2hpY2ggc2hvdWxkIGJlIHNhdmVkCi1hcyBhIHJlZmVyZW5jZSB0byB0aGF0IHRlcm1pbmFsLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIFxmSXR5cGVcZlIgb2YgdGhlCi10ZXJtaW5hbCB0byBiZSB1c2VkIGluIHBsYWNlIG9mIFxmQiRURVJNXGZSLCBhIGZpbGUgcG9pbnRlciBmb3Igb3V0cHV0IHRvIHRoZQotdGVybWluYWwsIGFuZCBhbm90aGVyIGZpbGUgcG9pbnRlciBmb3IgaW5wdXQgZnJvbSB0aGUgdGVybWluYWwgKGlmIFxmSXR5cGVcZlIKLWlzIFxmQk5VTExcZlIsIFxmQiRURVJNXGZSIHdpbGwgYmUgdXNlZCkuICBUaGUgcHJvZ3JhbSBtdXN0IGFsc28gY2FsbAorXGZCbmV3dGVybVxmUi4KK1RoZSByb3V0aW5lIFxmQm5ld3Rlcm1cZlIgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIHRlcm1pbmFsLgorSXQgcmV0dXJucyBhIHZhcmlhYmxlIG9mIHR5cGUgXGZCU0NSRUVOICpcZlIgd2hpY2ggc2hvdWxkIGJlIHNhdmVkCithcyBhIHJlZmVyZW5jZSB0byB0aGF0IHRlcm1pbmFsLgorXGZCbmV3dGVybVxmUCdzIGFyZ3VtZW50cyBhcmUKKy5iUAordGhlIFxmSXR5cGVcZlIgb2YgdGhlIHRlcm1pbmFsIHRvIGJlIHVzZWQgaW4gcGxhY2Ugb2YgXGZCJFRFUk1cZlIsCisuYlAKK2EgZmlsZSBwb2ludGVyIGZvciBvdXRwdXQgdG8gdGhlIHRlcm1pbmFsLCBhbmQKKy5iUAorYW5vdGhlciBmaWxlIHBvaW50ZXIgZm9yIGlucHV0IGZyb20gdGhlIHRlcm1pbmFsCisuUFAKK0lmIHRoZSBcZkl0eXBlXGZSIHBhcmFtZXRlciBpcyBcZkJOVUxMXGZSLCBcZkIkVEVSTVxmUiB3aWxsIGJlIHVzZWQuCisuU1MgZW5kd2luCisuUFAKK1RoZSBwcm9ncmFtIG11c3QgYWxzbyBjYWxsCiBcZkJlbmR3aW5cZlIgZm9yIGVhY2ggdGVybWluYWwgYmVpbmcgdXNlZCBiZWZvcmUgZXhpdGluZyBmcm9tIFxmQmN1cnNlc1xmUi4KIElmIFxmQm5ld3Rlcm1cZlIgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGZvciB0aGUgc2FtZSB0ZXJtaW5hbCwgdGhlIGZpcnN0CiB0ZXJtaW5hbCByZWZlcnJlZCB0byBtdXN0IGJlIHRoZSBsYXN0IG9uZSBmb3Igd2hpY2ggXGZCZW5kd2luXGZSIGlzIGNhbGxlZC4KIC5QUAogQSBwcm9ncmFtIHNob3VsZCBhbHdheXMgY2FsbCBcZkJlbmR3aW5cZlIgYmVmb3JlIGV4aXRpbmcgb3IgZXNjYXBpbmcgZnJvbQotXGZCY3Vyc2VzXGZSIG1vZGUgdGVtcG9yYXJpbHkuICBUaGlzIHJvdXRpbmUgcmVzdG9yZXMgdHR5IG1vZGVzLCBtb3ZlcyB0aGUKLWN1cnNvciB0byB0aGUgbG93ZXIgbGVmdC1oYW5kIGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCByZXNldHMgdGhlIHRlcm1pbmFsIGludG8KLXRoZSBwcm9wZXIgbm9uLXZpc3VhbCBtb2RlLiAgQ2FsbGluZyBcZkJyZWZyZXNoXGZSIG9yIFxmQmRvdXBkYXRlXGZSIGFmdGVyIGEKK1xmQmN1cnNlc1xmUiBtb2RlIHRlbXBvcmFyaWx5LgorVGhpcyByb3V0aW5lCisuYlAKK3Jlc3RvcmVzIHR0eSBtb2RlcywKKy5iUAorbW92ZXMgdGhlIGN1cnNvciB0byB0aGUgbG93ZXIgbGVmdC1oYW5kIGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZAorLmJQCityZXNldHMgdGhlIHRlcm1pbmFsIGludG8KK3RoZSBwcm9wZXIgbm9uLXZpc3VhbCBtb2RlLgorLlBQCitDYWxsaW5nIFxmQnJlZnJlc2hcZlIgb3IgXGZCZG91cGRhdGVcZlIgYWZ0ZXIgYQogdGVtcG9yYXJ5IGVzY2FwZSBjYXVzZXMgdGhlIHByb2dyYW0gdG8gcmVzdW1lIHZpc3VhbCBtb2RlLgorLlNTIGlzZW5kd2luCiAuUFAKIFRoZSBcZkJpc2VuZHdpblxmUiByb3V0aW5lIHJldHVybnMgXGZCVFJVRVxmUiBpZiBcZkJlbmR3aW5cZlIgaGFzIGJlZW4KLWNhbGxlZCB3aXRob3V0IGFueSBzdWJzZXF1ZW50IGNhbGxzIHRvIFxmQndyZWZyZXNoXGZSLCBhbmQgXGZCRkFMU0VcZlIKLW90aGVyd2lzZS4KK2NhbGxlZCB3aXRob3V0IGFueSBzdWJzZXF1ZW50IGNhbGxzIHRvIFxmQndyZWZyZXNoXGZSLAorYW5kIFxmQkZBTFNFXGZSIG90aGVyd2lzZS4KKy5TUyBzZXRfdGVybQogLlBQCi1UaGUgXGZCc2V0X3Rlcm1cZlIgcm91dGluZSBpcyB1c2VkIHRvIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudAotdGVybWluYWxzLiAgVGhlIHNjcmVlbiByZWZlcmVuY2UgXGZCbmV3XGZSIGJlY29tZXMgdGhlIG5ldyBjdXJyZW50Ci10ZXJtaW5hbC4gIFRoZSBwcmV2aW91cyB0ZXJtaW5hbCBpcyByZXR1cm5lZCBieSB0aGUgcm91dGluZS4gIFRoaXMgaXMKLXRoZSBvbmx5IHJvdXRpbmUgd2hpY2ggbWFuaXB1bGF0ZXMgXGZCU0NSRUVOXGZSIHBvaW50ZXJzOyBhbGwgb3RoZXIKLXJvdXRpbmVzIGFmZmVjdCBvbmx5IHRoZSBjdXJyZW50IHRlcm1pbmFsLgorVGhlIFxmQnNldF90ZXJtXGZSIHJvdXRpbmUgaXMgdXNlZCB0byBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgdGVybWluYWxzLgorVGhlIHNjcmVlbiByZWZlcmVuY2UgXGZCbmV3XGZSIGJlY29tZXMgdGhlIG5ldyBjdXJyZW50IHRlcm1pbmFsLgorVGhlIHByZXZpb3VzIHRlcm1pbmFsIGlzIHJldHVybmVkIGJ5IHRoZSByb3V0aW5lLgorVGhpcyBpcyB0aGUgb25seSByb3V0aW5lIHdoaWNoIG1hbmlwdWxhdGVzIFxmQlNDUkVFTlxmUiBwb2ludGVyczsKK2FsbCBvdGhlciByb3V0aW5lcyBhZmZlY3Qgb25seSB0aGUgY3VycmVudCB0ZXJtaW5hbC4KKy5TUyBkZWxzY3JlZW4KIC5QUAogVGhlIFxmQmRlbHNjcmVlblxmUiByb3V0aW5lIGZyZWVzIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZQotXGZCU0NSRUVOXGZSIGRhdGEgc3RydWN0dXJlLiAgVGhlIFxmQmVuZHdpblxmUiByb3V0aW5lIGRvZXMgbm90IGRvCitcZkJTQ1JFRU5cZlIgZGF0YSBzdHJ1Y3R1cmUuCitUaGUgXGZCZW5kd2luXGZSIHJvdXRpbmUgZG9lcyBub3QgZG8KIHRoaXMsIHNvIFxmQmRlbHNjcmVlblxmUiBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIFxmQmVuZHdpblxmUiBpZiBhCiBwYXJ0aWN1bGFyIFxmQlNDUkVFTlxmUiBpcyBubyBsb25nZXIgbmVlZGVkLgogLlNIIFJFVFVSTiBWQUxVRQpAQCAtMTA5LDI0ICsxNDQsMTA3IEBACiAuUFAKIFgvT3BlbiBkZWZpbmVzIG5vIGVycm9yIGNvbmRpdGlvbnMuCiBJbiB0aGlzIGltcGxlbWVudGF0aW9uCisuYlAKIFxmQmVuZHdpblxmUCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0ZXJtaW5hbCB3YXMgbm90IGluaXRpYWxpemVkLgorLmJQCitcZkJuZXd0ZXJtXGZQCityZXR1cm5zIGFuIGVycm9yIGlmIGl0IGNhbm5vdCBhbGxvY2F0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGUgc2NyZWVuLAorb3IgZm9yIHRoZSB0b3AtbGV2ZWwgd2luZG93cyB3aXRoaW4gdGhlIHNjcmVlbiwKK2kuZS4sCitcZkJjdXJzY3JcZlAsIFxmQm5ld3NjclxmUCwgb3IgXGZCc3Rkc2NyXGZQLgorLmJQCitcZkJzZXRfdGVybVxmUAorcmV0dXJucyBubyBlcnJvci4KIC5TSCBOT1RFUwogTm90ZSB0aGF0IFxmQmluaXRzY3JcZlIgYW5kIFxmQm5ld3Rlcm1cZlIgbWF5IGJlIG1hY3Jvcy4KIC5TSCBQT1JUQUJJTElUWQotVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuICBJdAotc3BlY2lmaWVzIHRoYXQgcG9ydGFibGUgYXBwbGljYXRpb25zIG11c3Qgbm90IGNhbGwgXGZCaW5pdHNjclxmUiBtb3JlIHRoYW4KLW9uY2UuCitUaGVzZSBmdW5jdGlvbnMgd2VyZSBkZXNjcmliZWQgaW4gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQuCitBcyBvZiAyMDE1LCB0aGUgY3VycmVudCBkb2N1bWVudCBpcyBYL09wZW4gQ3Vyc2VzLCBJc3N1ZSA3LgorLlNTIERpZmZlcmVuY2VzCitYL09wZW4gc3BlY2lmaWVzIHRoYXQgcG9ydGFibGUgYXBwbGljYXRpb25zIG11c3Qgbm90CitjYWxsIFxmQmluaXRzY3JcZlIgbW9yZSB0aGFuIG9uY2U6CisuYlAKK1RoZSBwb3J0YWJsZSB3YXkgdG8gdXNlIFxmQmluaXRzY3JcZlAgaXMgb25jZSBvbmx5LAordXNpbmcgXGZCcmVmcmVzaFxmUCAoc2VlIGN1cnNfcmVmcmVzaCgzWCkpIHRvIHJlc3RvcmUgdGhlIHNjcmVlbiBhZnRlciBcZkJlbmR3aW5cZlAuCisuYlAKK1RoaXMgaW1wbGVtZW50YXRpb24gYWxsb3dzIHVzaW5nIFxmQmluaXRzY3JcZlAgYWZ0ZXIgXGZCZW5kd2luXGZQLgogLlBQCiBPbGQgdmVyc2lvbnMgb2YgY3Vyc2VzLCBlLmcuLCBCU0QgNC40LCBtYXkgaGF2ZSByZXR1cm5lZCBhIG51bGwgcG9pbnRlcgogZnJvbSBcZkJpbml0c2NyXGZSIHdoZW4gYW4gZXJyb3IgaXMgZGV0ZWN0ZWQsIHJhdGhlciB0aGFuIGV4aXRpbmcuCiBJdCBpcyBzYWZlIGJ1dCByZWR1bmRhbnQgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBcZkJpbml0c2NyXGZSCiBpbiBYU0kgQ3Vyc2VzLgorLlNTIFVuc2V0IFRFUk0gVmFyaWFibGUKKy5QUAorSWYgdGhlIFRFUk0gdmFyaWFibGUgaXMgbWlzc2luZyBvciBlbXB0eSwgXGZCaW5pdHNjclxmUCB1c2VzIHRoZQordmFsdWUgXCooYGB1bmtub3duXCooJycsCit3aGljaCBub3JtYWxseSBjb3JyZXNwb25kcyB0byBhIHRlcm1pbmFsIGVudHJ5IHdpdGggdGhlIFxmSWdlbmVyaWNcZlAKKyhcZklnblxmUCkgY2FwYWJpbGl0eS4KK0dlbmVyaWMgZW50cmllcyBhcmUgZGV0ZWN0ZWQgYnkgXGZCc2V0dXB0ZXJtXGZQIChzZWUgY3Vyc190ZXJtaW5mbygzWCkpIGFuZCBjYW5ub3QgYmUKK3VzZWQgZm9yIGZ1bGwtc2NyZWVuIG9wZXJhdGlvbi4KK090aGVyIGltcGxlbWVudGF0aW9ucyBtYXkgaGFuZGxlIGEgbWlzc2luZy9lbXB0eSBURVJNIHZhcmlhYmxlIGRpZmZlcmVudGx5LgorLlNTIFNpZ25hbCBIYW5kbGVycworLlBQCitRdW90aW5nIGZyb20gWC9PcGVuIEN1cnNlcywgc2VjdGlvbiAzLjEuMToKKy5SUyA1CisuUFAKK1xmSUN1cnNlcyBpbXBsZW1lbnRhdGlvbnMgbWF5IHByb3ZpZGUgZm9yIHNwZWNpYWwgaGFuZGxpbmcgb2YgdGhlIFNJR0lOVCwKK1NJR1FVSVQgYW5kIFNJR1RTVFAgc2lnbmFscyBpZiB0aGVpciBkaXNwb3NpdGlvbiBpcyBTSUdfREZMIGF0IHRoZSB0aW1lCitcZkJpbml0c2NyKClcZlAgaXMgY2FsbGVkIFxmUC4uLgorLlBQCitcZklBbnkgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlc2Ugc2lnbmFscyBtYXkgcmVtYWluIGluIGVmZmVjdCBmb3IgdGhlCitsaWZlIG9mIHRoZSBwcm9jZXNzIG9yIHVudGlsIHRoZSBwcm9jZXNzIGNoYW5nZXMgdGhlIGRpc3Bvc2l0aW9uIG9mCit0aGUgc2lnbmFsLlxmUAorLlBQCitcZklOb25lIG9mIHRoZSBDdXJzZXMgZnVuY3Rpb25zIGFyZSByZXF1aXJlZCB0byBiZSBzYWZlIHdpdGggcmVzcGVjdCB0byBzaWduYWxzIFxmUC4uLgorLlJFCisuUFAKK1RoaXMgaW1wbGVtZW50YXRpb24gZXN0YWJsaXNoZXMgc2lnbmFsIGhhbmRsZXJzIGR1cmluZyBpbml0aWFsaXphdGlvbiwKK2UuZy4sIFxmQmluaXRzY3JcZlAgb3IgXGZCbmV3dGVybVxmUC4KK0FwcGxpY2F0aW9ucyB3aGljaCBtdXN0IGhhbmRsZSB0aGVzZSBzaWduYWxzIHNob3VsZCBzZXQgdXAgdGhlIGNvcnJlc3BvbmRpbmcKK2hhbmRsZXJzIFxmSWFmdGVyXGZQIGluaXRpYWxpemluZyB0aGUgbGlicmFyeToKKy5UUCA1CisuQiBTSUdJTlQKK1RoZSBoYW5kbGVyIFxmSWF0dGVtcHRzXGZQIHRvIGNsZWFudXAgdGhlIHNjcmVlbiBvbiBleGl0LgorQWx0aG91Z2ggaXQgXGZJdXN1YWxseVxmUCB3b3JrcyBhcyBleHBlY3RlZCwgdGhlcmUgYXJlIGxpbWl0YXRpb25zOgorLlJTIDUKKy5iUAorV2Fsa2luZyB0aGUgXGZCU0NSRUVOXGZQIGxpc3QgaXMgdW5zYWZlLCBzaW5jZSBhbGwgbGlzdCBtYW5hZ2VtZW50CitpcyBkb25lIHdpdGhvdXQgYW55IHNpZ25hbCBibG9ja2luZy4KKy5iUAorT24gc3lzdGVtcyB3aGljaCBoYXZlIFxmQlJFRU5UUkFOVFxmUCB0dXJuZWQgb24sIFxmQnNldF90ZXJtXGZQIHVzZXMKK2Z1bmN0aW9ucyB3aGljaCBjb3VsZCBkZWFkbG9jayBvciBtaXNiZWhhdmUgaW4gb3RoZXIgd2F5cy4KKy5iUAorXGZCZW5kd2luXGZQIGNhbGxzIG90aGVyIGZ1bmN0aW9ucywgbWFueSBvZiB3aGljaCB1c2Ugc3RkaW8gb3IKK290aGVyIGxpYnJhcnkgZnVuY3Rpb25zIHdoaWNoIGFyZSBjbGVhcmx5IHVuc2FmZS4KKy5SRQorLlRQIDUKKy5CIFNJR1RFUk0KK1RoaXMgdXNlcyB0aGUgc2FtZSBoYW5kbGVyIGFzIFxmQlNJR0lOVFxmUCwgd2l0aCB0aGUgc2FtZSBsaW1pdGF0aW9ucy4KK0l0IGlzIG5vdCBtZW50aW9uZWQgaW4gWC9PcGVuIEN1cnNlcywgYnV0IGlzIG1vcmUgc3VpdGFibGUgZm9yIHRoaXMKK3B1cnBvc2UgdGhhbiBcZkJTSUdRVUlUXGZQICh3aGljaCBpcyB1c2VkIGluIGRlYnVnZ2luZykuCisuVFAgNQorLkIgU0lHVFNUUAorVGhpcyBoYW5kbGVzIHRoZSBcZklzdG9wXGZQIHNpZ25hbCwgdXNlZCBpbiBqb2IgY29udHJvbC4KK1doZW4gcmVzdW1pbmcgdGhlIHByb2Nlc3MsIHRoaXMgaW1wbGVtZW50YXRpb24gZGlzY2FyZHMgcGVuZGluZworaW5wdXQgd2l0aCBcZkJmbHVzaGlucHV0XGZQIChzZWUgY3Vyc191dGlsKDNYKSksIGFuZCByZXBhaW50cyB0aGUgc2NyZWVuCithc3N1bWluZyB0aGF0IGl0IGhhcyBiZWVuIGNvbXBsZXRlbHkgYWx0ZXJlZC4KK0l0IGFsc28gdXBkYXRlcyB0aGUgc2F2ZWQgdGVybWluYWwgbW9kZXMgd2l0aCBcZkJkZWZfc2hlbGxfbW9kZVxmUCAoc2VlIGN1cnNfa2VybmVsKDNYKSkuCisuVFAgNQorLkIgU0lHV0lOQ0gKK1RoaXMgaGFuZGxlcyB0aGUgd2luZG93LXNpemUgY2hhbmdlcyB3aGljaCB3ZXJlIGluaXRpYWxseSBpZ25vcmVkIGluCit0aGUgc3RhbmRhcmRpemF0aW9uIGVmZm9ydHMuCitUaGUgaGFuZGxlciBzZXRzIGEgKHNpZ25hbC1zYWZlKSB2YXJpYWJsZQord2hpY2ggaXMgbGF0ZXIgdGVzdGVkIGluIFxmQndnZXRjaFxmUCAoc2VlIGN1cnNfZ2V0Y2goM1gpKS4KK0lmIFxmQmtleXBhZFxmUCBoYXMgYmVlbiBlbmFibGVkIGZvciB0aGUgY29ycmVzcG9uZGluZyB3aW5kb3csCitcZkJ3Z2V0Y2hcZlAgcmV0dXJucyB0aGUga2V5IHN5bWJvbCBcZkJLRVlfUkVTSVpFXGZQLgorQXQgdGhlIHNhbWUgdGltZSwgXGZCd2dldGNoXGZQIGNhbGxzIFxmQnJlc2l6ZXRlcm1cZlAgdG8gYWRqdXN0IHRoZQorc3RhbmRhcmQgc2NyZWVuIFxmQnN0ZHNjclxmUCwKK2FuZCB1cGRhdGUgb3RoZXIgZGF0YSBzdWNoIGFzIFxmQkxJTkVTXGZQIGFuZCBcZkJDT0xTXGZQLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX2tlcm5lbFxmUigzWCksIFxmQmN1cnNfcmVmcmVzaFxmUigzWCksCi1cZkJjdXJzX3Nsa1xmUigzWCksIFxmQmN1cnNfdXRpbFxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmN1cnNfa2VybmVsXGZSKDNYKSwKK1xmQmN1cnNfcmVmcmVzaFxmUigzWCksCitcZkJjdXJzX3Nsa1xmUigzWCksCitcZkJjdXJzX3Rlcm1pbmZvXGZSKDNYKSwKK1xmQmN1cnNfdXRpbFxmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCkuCmRpZmYgLS1naXQgYS9tYW4vY3Vyc19pbm9wdHMuM3ggYi9tYW4vY3Vyc19pbm9wdHMuM3gKaW5kZXggN2I1YTE3Yi4uN2I5YTFiZSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5vcHRzLjN4CisrKyBiL21hbi9jdXJzX2lub3B0cy4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDggKzI2LDEyIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2lub3B0cy4zeCx2IDEuMTMgMjAwNS8wNS8xNSAxNjoxODowNyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfaW5vcHRzLjN4LHYgMS4xOSAyMDE1LzA0LzExIDEwOjIxOjM4IHRvbSBFeHAgJAogLlRIIGN1cnNfaW5vcHRzIDNYICIiCisuaWUgXG4oLmcgLmRzIGBgIFwobHEKKy5lbCAgICAgICAuZHMgYGAgYGAKKy5pZSBcbiguZyAuZHMgJycgXChycQorLmVsICAgICAgIC5kcyAnJyAnJwogLm5hCiAuaHkgMAogLlNIIE5BTUUKQEAgLTQ3LDcgKzUxLDcgQEAKIFxmQnFpZmx1c2hcZlIsCiBcZkJ0aW1lb3V0XGZSLAogXGZCd3RpbWVvdXRcZlIsCi1cZkJ0eXBlYWhlYWRcZlIgLSBcZkJjdXJzZXNcZlIgaW5wdXQgb3B0aW9ucworXGZCdHlwZWFoZWFkXGZSIFwtIFxmQmN1cnNlc1xmUiBpbnB1dCBvcHRpb25zCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCkBAIC04OCwxMTYgKzkyLDE3OSBAQAogXGZCaW50IHR5cGVhaGVhZChpbnQgZmQpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KK1RoZSBcZkJuY3Vyc2VzXGZQIGxpYnJhcnkgcHJvdmlkZXMgc2V2ZXJhbCBmdW5jdGlvbnMgd2hpY2ggbGV0IGFuIGFwcGxpY2F0aW9uCitjaGFuZ2Ugd2F5IGlucHV0IGZyb20gdGhlIHRlcm1pbmFsIGlzIGhhbmRsZWQuCitTb21lIGFyZSBnbG9iYWwsIGFwcGx5aW5nIHRvIGFsbCB3aW5kb3dzLgorT3RoZXJzIGFwcGx5IG9ubHkgdG8gYSBzcGVjaWZpYyB3aW5kb3cuCitXaW5kb3ctc3BlY2lmaWMgc2V0dGluZ3MgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gbmV3IG9yIGRlcml2ZWQKK3dpbmRvd3MuCitBbiBhcHBsaWNhdGlvbiBtdXN0IGFwcGx5IHRoZXNlIHRvIGVhY2ggd2luZG93LCBpZiB0aGUgc2FtZSBiZWhhdmlvcgoraXMgbmVlZGVkLgorLlwiCisuU1MgY2JyZWFrCiBOb3JtYWxseSwgdGhlIHR0eSBkcml2ZXIgYnVmZmVycyB0eXBlZCBjaGFyYWN0ZXJzIHVudGlsIGEgbmV3bGluZSBvciBjYXJyaWFnZQotcmV0dXJuIGlzIHR5cGVkLiAgVGhlIFxmQmNicmVha1xmUiByb3V0aW5lIGRpc2FibGVzIGxpbmUgYnVmZmVyaW5nIGFuZAorcmV0dXJuIGlzIHR5cGVkLgorVGhlIFxmQmNicmVha1xmUiByb3V0aW5lIGRpc2FibGVzIGxpbmUgYnVmZmVyaW5nIGFuZAogZXJhc2Uva2lsbCBjaGFyYWN0ZXItcHJvY2Vzc2luZyAoaW50ZXJydXB0IGFuZCBmbG93IGNvbnRyb2wgY2hhcmFjdGVycyBhcmUKIHVuYWZmZWN0ZWQpLCBtYWtpbmcgY2hhcmFjdGVycyB0eXBlZCBieSB0aGUgdXNlciBpbW1lZGlhdGVseSBhdmFpbGFibGUgdG8gdGhlCi1wcm9ncmFtLiAgVGhlIFxmQm5vY2JyZWFrXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgdGVybWluYWwgdG8gbm9ybWFsIChjb29rZWQpCitwcm9ncmFtLgorVGhlIFxmQm5vY2JyZWFrXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgdGVybWluYWwgdG8gbm9ybWFsIChjb29rZWQpCiBtb2RlLgogLlBQCiBJbml0aWFsbHkgdGhlIHRlcm1pbmFsIG1heSBvciBtYXkgbm90IGJlIGluIFxmQmNicmVha1xmUiBtb2RlLCBhcyB0aGUgbW9kZSBpcwogaW5oZXJpdGVkOyB0aGVyZWZvcmUsIGEgcHJvZ3JhbSBzaG91bGQgY2FsbCBcZkJjYnJlYWtcZlIgb3IgXGZCbm9jYnJlYWtcZlIKLWV4cGxpY2l0bHkuICBNb3N0IGludGVyYWN0aXZlIHByb2dyYW1zIHVzaW5nIFxmQmN1cnNlc1xmUiBzZXQgdGhlIFxmQmNicmVha1xmUgotbW9kZS4gIE5vdGUgdGhhdCBcZkJjYnJlYWtcZlIgb3ZlcnJpZGVzIFxmQnJhd1xmUi4KK2V4cGxpY2l0bHkuCitNb3N0IGludGVyYWN0aXZlIHByb2dyYW1zIHVzaW5nIFxmQmN1cnNlc1xmUiBzZXQgdGhlIFxmQmNicmVha1xmUgorbW9kZS4KK05vdGUgdGhhdCBcZkJjYnJlYWtcZlIgb3ZlcnJpZGVzIFxmQnJhd1xmUi4KIFtTZWUgXGZCY3Vyc19nZXRjaFxmUigzWCkgZm9yIGEKIGRpc2N1c3Npb24gb2YgaG93IHRoZXNlIHJvdXRpbmVzIGludGVyYWN0IHdpdGggXGZCZWNob1xmUiBhbmQgXGZCbm9lY2hvXGZSLl0KKy5cIgorLlNTIGVjaG8vbm9lY2hvCiAuUFAKIFRoZSBcZkJlY2hvXGZSIGFuZCBcZkJub2VjaG9cZlIgcm91dGluZXMgY29udHJvbCB3aGV0aGVyIGNoYXJhY3RlcnMgdHlwZWQgYnkKLXRoZSB1c2VyIGFyZSBlY2hvZWQgYnkgXGZCZ2V0Y2hcZlIgYXMgdGhleSBhcmUgdHlwZWQuICBFY2hvaW5nIGJ5IHRoZSB0dHkKK3RoZSB1c2VyIGFyZSBlY2hvZWQgYnkgXGZCZ2V0Y2hcZlIgYXMgdGhleSBhcmUgdHlwZWQuCitFY2hvaW5nIGJ5IHRoZSB0dHkKIGRyaXZlciBpcyBhbHdheXMgZGlzYWJsZWQsIGJ1dCBpbml0aWFsbHkgXGZCZ2V0Y2hcZlIgaXMgaW4gZWNobyBtb2RlLCBzbwotY2hhcmFjdGVycyB0eXBlZCBhcmUgZWNob2VkLiAgQXV0aG9ycyBvZiBtb3N0IGludGVyYWN0aXZlIHByb2dyYW1zIHByZWZlciB0byBkbworY2hhcmFjdGVycyB0eXBlZCBhcmUgZWNob2VkLgorQXV0aG9ycyBvZiBtb3N0IGludGVyYWN0aXZlIHByb2dyYW1zIHByZWZlciB0byBkbwogdGhlaXIgb3duIGVjaG9pbmcgaW4gYSBjb250cm9sbGVkIGFyZWEgb2YgdGhlIHNjcmVlbiwgb3Igbm90IHRvIGVjaG8gYXQgYWxsLCBzbwogdGhleSBkaXNhYmxlIGVjaG9pbmcgYnkgY2FsbGluZyBcZkJub2VjaG9cZlIuCiBbU2VlIFxmQmN1cnNfZ2V0Y2hcZlIoM1gpIGZvciBhCiBkaXNjdXNzaW9uIG9mIGhvdyB0aGVzZSByb3V0aW5lcyBpbnRlcmFjdCB3aXRoIFxmQmNicmVha1xmUiBhbmQKIFxmQm5vY2JyZWFrXGZSLl0KKy5cIgorLlNTIGhhbGZkZWxheQogLlBQCiBUaGUgXGZCaGFsZmRlbGF5XGZSIHJvdXRpbmUgaXMgdXNlZCBmb3IgaGFsZi1kZWxheSBtb2RlLCB3aGljaCBpcyBzaW1pbGFyIHRvCiBcZkJjYnJlYWtcZlIgbW9kZSBpbiB0aGF0IGNoYXJhY3RlcnMgdHlwZWQgYnkgdGhlIHVzZXIgYXJlIGltbWVkaWF0ZWx5Ci1hdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uICBIb3dldmVyLCBhZnRlciBibG9ja2luZyBmb3IgXGZJdGVudGhzXGZSIHRlbnRocyBvZgotc2Vjb25kcywgRVJSIGlzIHJldHVybmVkIGlmIG5vdGhpbmcgaGFzIGJlZW4gdHlwZWQuICBUaGUgdmFsdWUgb2YgXGZCdGVudGhzXGZSCi1tdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMjU1LiAgVXNlIFxmQm5vY2JyZWFrXGZSIHRvIGxlYXZlIGhhbGYtZGVsYXkKK2F2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4KK0hvd2V2ZXIsIGFmdGVyIGJsb2NraW5nIGZvciBcZkl0ZW50aHNcZlIgdGVudGhzIG9mCitzZWNvbmRzLCBFUlIgaXMgcmV0dXJuZWQgaWYgbm90aGluZyBoYXMgYmVlbiB0eXBlZC4KK1RoZSB2YWx1ZSBvZiBcZkJ0ZW50aHNcZlIKK211c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAyNTUuCitVc2UgXGZCbm9jYnJlYWtcZlIgdG8gbGVhdmUgaGFsZi1kZWxheQogbW9kZS4KKy5cIgorLlNTIGludHJmbHVzaAogLlBQCiBJZiB0aGUgXGZCaW50cmZsdXNoXGZSIG9wdGlvbiBpcyBlbmFibGVkLCAoXGZJYmZcZlIgaXMgXGZCVFJVRVxmUiksIHdoZW4gYW4KIGludGVycnVwdCBrZXkgaXMgcHJlc3NlZCBvbiB0aGUga2V5Ym9hcmQgKGludGVycnVwdCwgYnJlYWssIHF1aXQpIGFsbCBvdXRwdXQgaW4KIHRoZSB0dHkgZHJpdmVyIHF1ZXVlIHdpbGwgYmUgZmx1c2hlZCwgZ2l2aW5nIHRoZSBlZmZlY3Qgb2YgZmFzdGVyIHJlc3BvbnNlIHRvCiB0aGUgaW50ZXJydXB0LCBidXQgY2F1c2luZyBcZkJjdXJzZXNcZlIgdG8gaGF2ZSB0aGUgd3JvbmcgaWRlYSBvZiB3aGF0IGlzIG9uCi10aGUgc2NyZWVuLiAgRGlzYWJsaW5nIChcZkliZlxmUiBpcyBcZkJGQUxTRVxmUiksIHRoZSBvcHRpb24gcHJldmVudHMgdGhlCi1mbHVzaC4gIFRoZSBkZWZhdWx0IGZvciB0aGUgb3B0aW9uIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB0dHkgZHJpdmVyIHNldHRpbmdzLgordGhlIHNjcmVlbi4KK0Rpc2FibGluZyAoXGZJYmZcZlIgaXMgXGZCRkFMU0VcZlIpLCB0aGUgb3B0aW9uIHByZXZlbnRzIHRoZQorZmx1c2guCitUaGUgZGVmYXVsdCBmb3IgdGhlIG9wdGlvbiBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgdHR5IGRyaXZlciBzZXR0aW5ncy4KIFRoZSB3aW5kb3cgYXJndW1lbnQgaXMgaWdub3JlZC4KKy5cIgorLlNTIGtleXBhZAogLlBQCi1UaGUgXGZCa2V5cGFkXGZSIG9wdGlvbiBlbmFibGVzIHRoZSBrZXlwYWQgb2YgdGhlIHVzZXIncyB0ZXJtaW5hbC4gIElmCitUaGUgXGZCa2V5cGFkXGZSIG9wdGlvbiBlbmFibGVzIHRoZSBrZXlwYWQgb2YgdGhlIHVzZXIncyB0ZXJtaW5hbC4KK0lmCiBlbmFibGVkIChcZkliZlxmUiBpcyBcZkJUUlVFXGZSKSwgdGhlIHVzZXIgY2FuIHByZXNzIGEgZnVuY3Rpb24ga2V5CiAoc3VjaCBhcyBhbiBhcnJvdyBrZXkpIGFuZCBcZkJ3Z2V0Y2hcZlIgcmV0dXJucyBhIHNpbmdsZSB2YWx1ZQotcmVwcmVzZW50aW5nIHRoZSBmdW5jdGlvbiBrZXksIGFzIGluIFxmQktFWV9MRUZUXGZSLiAgSWYgZGlzYWJsZWQKK3JlcHJlc2VudGluZyB0aGUgZnVuY3Rpb24ga2V5LCBhcyBpbiBcZkJLRVlfTEVGVFxmUi4KK0lmIGRpc2FibGVkCiAoXGZJYmZcZlIgaXMgXGZCRkFMU0VcZlIpLCBcZkJjdXJzZXNcZlIgZG9lcyBub3QgdHJlYXQgZnVuY3Rpb24ga2V5cwogc3BlY2lhbGx5IGFuZCB0aGUgcHJvZ3JhbSBoYXMgdG8gaW50ZXJwcmV0IHRoZSBlc2NhcGUgc2VxdWVuY2VzCi1pdHNlbGYuICBJZiB0aGUga2V5cGFkIGluIHRoZSB0ZXJtaW5hbCBjYW4gYmUgdHVybmVkIG9uIChtYWRlIHRvCitpdHNlbGYuCitJZiB0aGUga2V5cGFkIGluIHRoZSB0ZXJtaW5hbCBjYW4gYmUgdHVybmVkIG9uIChtYWRlIHRvCiB0cmFuc21pdCkgYW5kIG9mZiAobWFkZSB0byB3b3JrIGxvY2FsbHkpLCB0dXJuaW5nIG9uIHRoaXMgb3B0aW9uCiBjYXVzZXMgdGhlIHRlcm1pbmFsIGtleXBhZCB0byBiZSB0dXJuZWQgb24gd2hlbiBcZkJ3Z2V0Y2hcZlIgaXMKLWNhbGxlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBrZXlwYWQgaXMgZmFsc2UuCitjYWxsZWQuCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3Iga2V5cGFkIGlzIFxmQkZBTFNFXGZQLgorLlwiCisuU1MgbWV0YQogLlBQCiBJbml0aWFsbHksIHdoZXRoZXIgdGhlIHRlcm1pbmFsIHJldHVybnMgNyBvciA4IHNpZ25pZmljYW50IGJpdHMgb24KIGlucHV0IGRlcGVuZHMgb24gdGhlIGNvbnRyb2wgbW9kZSBvZiB0aGUgdHR5IGRyaXZlciBbc2VlIHRlcm1pbyg3KV0uCiBUbyBmb3JjZSA4IGJpdHMgdG8gYmUgcmV0dXJuZWQsIGludm9rZSBcZkJtZXRhXGZSKFxmSXdpblxmUiwKIFxmQlRSVUVcZlIpOyB0aGlzIGlzIGVxdWl2YWxlbnQsIHVuZGVyIFBPU0lYLCB0byBzZXR0aW5nIHRoZSBDUzggZmxhZwotb24gdGhlIHRlcm1pbmFsLiAgVG8gZm9yY2UgNyBiaXRzIHRvIGJlIHJldHVybmVkLCBpbnZva2UKK29uIHRoZSB0ZXJtaW5hbC4KK1RvIGZvcmNlIDcgYml0cyB0byBiZSByZXR1cm5lZCwgaW52b2tlCiBcZkJtZXRhXGZSKFxmSXdpblxmUiwgXGZCRkFMU0VcZlIpOyB0aGlzIGlzIGVxdWl2YWxlbnQsIHVuZGVyIFBPU0lYLAotdG8gc2V0dGluZyB0aGUgQ1M3IGZsYWcgb24gdGhlIHRlcm1pbmFsLiAgVGhlIHdpbmRvdyBhcmd1bWVudCwKLVxmSXdpblxmUiwgaXMgYWx3YXlzIGlnbm9yZWQuICBJZiB0aGUgdGVybWluZm8gY2FwYWJpbGl0aWVzIFxmQnNtbVxmUgordG8gc2V0dGluZyB0aGUgQ1M3IGZsYWcgb24gdGhlIHRlcm1pbmFsLgorVGhlIHdpbmRvdyBhcmd1bWVudCwKK1xmSXdpblxmUiwgaXMgYWx3YXlzIGlnbm9yZWQuCitJZiB0aGUgdGVybWluZm8gY2FwYWJpbGl0aWVzIFxmQnNtbVxmUgogKG1ldGFfb24pIGFuZCBcZkJybW1cZlIgKG1ldGFfb2ZmKSBhcmUgZGVmaW5lZCBmb3IgdGhlIHRlcm1pbmFsLAogXGZCc21tXGZSIGlzIHNlbnQgdG8gdGhlIHRlcm1pbmFsIHdoZW4gXGZCbWV0YVxmUihcZkl3aW5cZlIsCiBcZkJUUlVFXGZSKSBpcyBjYWxsZWQgYW5kIFxmQnJtbVxmUiBpcyBzZW50IHdoZW4gXGZCbWV0YVxmUihcZkl3aW5cZlIsCiBcZkJGQUxTRVxmUikgaXMgY2FsbGVkLgorLlwiCisuU1Mgbm9kZWxheQogLlBQCiBUaGUgXGZCbm9kZWxheVxmUiBvcHRpb24gY2F1c2VzIFxmQmdldGNoXGZSIHRvIGJlIGEgbm9uLWJsb2NraW5nIGNhbGwuCi1JZiBubyBpbnB1dCBpcyByZWFkeSwgXGZCZ2V0Y2hcZlIgcmV0dXJucyBcZkJFUlJcZlIuICBJZiBkaXNhYmxlZAorSWYgbm8gaW5wdXQgaXMgcmVhZHksIFxmQmdldGNoXGZSIHJldHVybnMgXGZCRVJSXGZSLgorSWYgZGlzYWJsZWQKIChcZkliZlxmUiBpcyBcZkJGQUxTRVxmUiksIFxmQmdldGNoXGZSIHdhaXRzIHVudGlsIGEga2V5IGlzIHByZXNzZWQuCiAuUFAKIFdoaWxlIGludGVycHJldGluZyBhbiBpbnB1dCBlc2NhcGUgc2VxdWVuY2UsIFxmQndnZXRjaFxmUiBzZXRzIGEgdGltZXIKLXdoaWxlIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGNoYXJhY3Rlci4gIElmIFxmQm5vdGltZW91dChcZlJcZkl3aW5cZlIsCi1cZkJUUlVFXGZSKSBpcyBjYWxsZWQsIHRoZW4gXGZCd2dldGNoXGZSIGRvZXMgbm90IHNldCBhIHRpbWVyLiAgVGhlCit3aGlsZSB3YWl0aW5nIGZvciB0aGUgbmV4dCBjaGFyYWN0ZXIuCitJZiBcZkJub3RpbWVvdXQoXGZSXGZJd2luXGZSLAorXGZCVFJVRVxmUikgaXMgY2FsbGVkLCB0aGVuIFxmQndnZXRjaFxmUiBkb2VzIG5vdCBzZXQgYSB0aW1lci4KK1RoZQogcHVycG9zZSBvZiB0aGUgdGltZW91dCBpcyB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gc2VxdWVuY2VzIHJlY2VpdmVkCiBmcm9tIGEgZnVuY3Rpb24ga2V5IGFuZCB0aG9zZSB0eXBlZCBieSBhIHVzZXIuCisuXCIKKy5TUyByYXcvbm9yYXcKIC5QUAogVGhlIFxmQnJhd1xmUiBhbmQgXGZCbm9yYXdcZlIgcm91dGluZXMgcGxhY2UgdGhlIHRlcm1pbmFsIGludG8gb3Igb3V0IG9mIHJhdwotbW9kZS4gIFJhdyBtb2RlIGlzIHNpbWlsYXIgdG8gXGZCY2JyZWFrXGZSIG1vZGUsIGluIHRoYXQgY2hhcmFjdGVycyB0eXBlZCBhcmUKLWltbWVkaWF0ZWx5IHBhc3NlZCB0aHJvdWdoIHRvIHRoZSB1c2VyIHByb2dyYW0uICBUaGUgZGlmZmVyZW5jZXMgYXJlIHRoYXQgaW4KK21vZGUuCitSYXcgbW9kZSBpcyBzaW1pbGFyIHRvIFxmQmNicmVha1xmUiBtb2RlLCBpbiB0aGF0IGNoYXJhY3RlcnMgdHlwZWQgYXJlCitpbW1lZGlhdGVseSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdXNlciBwcm9ncmFtLgorVGhlIGRpZmZlcmVuY2VzIGFyZSB0aGF0IGluCiByYXcgbW9kZSwgdGhlIGludGVycnVwdCwgcXVpdCwgc3VzcGVuZCwgYW5kIGZsb3cgY29udHJvbCBjaGFyYWN0ZXJzIGFyZSBhbGwKLXBhc3NlZCB0aHJvdWdoIHVuaW50ZXJwcmV0ZWQsIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHNpZ25hbC4gIFRoZSBiZWhhdmlvciBvZgorcGFzc2VkIHRocm91Z2ggdW5pbnRlcnByZXRlZCwgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgc2lnbmFsLgorVGhlIGJlaGF2aW9yIG9mCiB0aGUgQlJFQUsga2V5IGRlcGVuZHMgb24gb3RoZXIgYml0cyBpbiB0aGUgdHR5IGRyaXZlciB0aGF0IGFyZSBub3Qgc2V0IGJ5CiBcZkJjdXJzZXNcZlIuCisuXCIKKy5TUyBub3FpZmx1c2gKIC5QUAogV2hlbiB0aGUgXGZCbm9xaWZsdXNoXGZSIHJvdXRpbmUgaXMgdXNlZCwgbm9ybWFsIGZsdXNoIG9mIGlucHV0IGFuZAogb3V0cHV0IHF1ZXVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIFxmQklOVFJcZlIsIFxmQlFVSVRcZlIgYW5kCi1cZkJTVVNQXGZSIGNoYXJhY3RlcnMgd2lsbCBub3QgYmUgZG9uZSBbc2VlIHRlcm1pbyg3KV0uICBXaGVuCitcZkJTVVNQXGZSIGNoYXJhY3RlcnMgd2lsbCBub3QgYmUgZG9uZSBbc2VlIHRlcm1pbyg3KV0uCitXaGVuCiBcZkJxaWZsdXNoXGZSIGlzIGNhbGxlZCwgdGhlIHF1ZXVlcyB3aWxsIGJlIGZsdXNoZWQgd2hlbiB0aGVzZSBjb250cm9sCi1jaGFyYWN0ZXJzIGFyZSByZWFkLiAgWW91IG1heSB3YW50IHRvIGNhbGwgXGZCbm9xaWZsdXNoKClcZlIgaW4gYSBzaWduYWwKK2NoYXJhY3RlcnMgYXJlIHJlYWQuCitZb3UgbWF5IHdhbnQgdG8gY2FsbCBcZkJub3FpZmx1c2goKVxmUiBpbiBhIHNpZ25hbAogaGFuZGxlciBpZiB5b3Ugd2FudCBvdXRwdXQgdG8gY29udGludWUgYXMgdGhvdWdoIHRoZSBpbnRlcnJ1cHQKIGhhZCBub3Qgb2NjdXJyZWQsIGFmdGVyIHRoZSBoYW5kbGVyIGV4aXRzLgorLlwiCisuU1MgdGltZW91dC93dGltZW91dAogLlBQCiBUaGUgXGZCdGltZW91dFxmUiBhbmQgXGZCd3RpbWVvdXRcZlIgcm91dGluZXMgc2V0IGJsb2NraW5nIG9yCi1ub24tYmxvY2tpbmcgcmVhZCBmb3IgYSBnaXZlbiB3aW5kb3cuICBJZiBcZklkZWxheVxmUiBpcyBuZWdhdGl2ZSwKK25vbi1ibG9ja2luZyByZWFkIGZvciBhIGdpdmVuIHdpbmRvdy4KK0lmIFxmSWRlbGF5XGZSIGlzIG5lZ2F0aXZlLAogYmxvY2tpbmcgcmVhZCBpcyB1c2VkIChpLmUuLCB3YWl0cyBpbmRlZmluaXRlbHkgZm9yCi1pbnB1dCkuICBJZiBcZklkZWxheVxmUiBpcyB6ZXJvLCB0aGVuIG5vbi1ibG9ja2luZyByZWFkIGlzIHVzZWQKLShpLmUuLCByZWFkIHJldHVybnMgXGZCRVJSXGZSIGlmIG5vIGlucHV0IGlzIHdhaXRpbmcpLiAgSWYKK2lucHV0KS4KK0lmIFxmSWRlbGF5XGZSIGlzIHplcm8sIHRoZW4gbm9uLWJsb2NraW5nIHJlYWQgaXMgdXNlZAorKGkuZS4sIHJlYWQgcmV0dXJucyBcZkJFUlJcZlIgaWYgbm8gaW5wdXQgaXMgd2FpdGluZykuCitJZgogXGZJZGVsYXlcZlIgaXMgcG9zaXRpdmUsIHRoZW4gcmVhZCBibG9ja3MgZm9yIFxmSWRlbGF5XGZSCiBtaWxsaXNlY29uZHMsIGFuZCByZXR1cm5zIFxmQkVSUlxmUiBpZiB0aGVyZSBpcyBzdGlsbCBubyBpbnB1dC4KIEhlbmNlLCB0aGVzZSByb3V0aW5lcyBwcm92aWRlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgXGZCbm9kZWxheVxmUiwKIHBsdXMgdGhlIGFkZGl0aW9uYWwgY2FwYWJpbGl0eSBvZiBiZWluZyBhYmxlIHRvIGJsb2NrIGZvciBvbmx5CiBcZklkZWxheVxmUiBtaWxsaXNlY29uZHMgKHdoZXJlIFxmSWRlbGF5XGZSIGlzIHBvc2l0aXZlKS4KKy5cIgorLlNTIHR5cGVhaGVhZAogLlBQCi1UaGUgXGZCY3Vyc2VzXGZSIGxpYnJhcnkgZG9lcyBgYGxpbmUtYnJlYWtvdXQgb3B0aW1pemF0aW9uJycgYnkgbG9va2luZyBmb3IKLXR5cGVhaGVhZCBwZXJpb2RpY2FsbHkgd2hpbGUgdXBkYXRpbmcgdGhlIHNjcmVlbi4gIElmIGlucHV0IGlzIGZvdW5kLAotYW5kIGl0IGlzIGNvbWluZyBmcm9tIGEgdHR5LCB0aGUgY3VycmVudCB1cGRhdGUgaXMgcG9zdHBvbmVkIHVudGlsCi1cZkJyZWZyZXNoXGZSIG9yIFxmQmRvdXBkYXRlXGZSIGlzIGNhbGxlZCBhZ2Fpbi4gIFRoaXMgYWxsb3dzIGZhc3RlcgotcmVzcG9uc2UgdG8gY29tbWFuZHMgdHlwZWQgaW4gYWR2YW5jZS4gIE5vcm1hbGx5LCB0aGUgaW5wdXQgRklMRQorVGhlIFxmQmN1cnNlc1xmUiBsaWJyYXJ5IGRvZXMgXCooYGBsaW5lLWJyZWFrb3V0IG9wdGltaXphdGlvblwqKCcnCitieSBsb29raW5nIGZvciB0eXBlYWhlYWQgcGVyaW9kaWNhbGx5IHdoaWxlIHVwZGF0aW5nIHRoZSBzY3JlZW4uCitJZiBpbnB1dCBpcyBmb3VuZCwgYW5kIGl0IGlzIGNvbWluZyBmcm9tIGEgdHR5LAordGhlIGN1cnJlbnQgdXBkYXRlIGlzIHBvc3Rwb25lZCB1bnRpbAorXGZCcmVmcmVzaFxmUiBvciBcZkJkb3VwZGF0ZVxmUiBpcyBjYWxsZWQgYWdhaW4uCitUaGlzIGFsbG93cyBmYXN0ZXIgcmVzcG9uc2UgdG8gY29tbWFuZHMgdHlwZWQgaW4gYWR2YW5jZS4KK05vcm1hbGx5LCB0aGUgaW5wdXQgRklMRQogcG9pbnRlciBwYXNzZWQgdG8gXGZCbmV3dGVybVxmUiwgb3IgXGZCc3RkaW5cZlIgaW4gdGhlIGNhc2UgdGhhdAogXGZCaW5pdHNjclxmUiB3YXMgdXNlZCwgd2lsbCBiZSB1c2VkIHRvIGRvIHRoaXMgdHlwZWFoZWFkIGNoZWNraW5nLgogVGhlIFxmQnR5cGVhaGVhZFxmUiByb3V0aW5lIHNwZWNpZmllcyB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3IKLVxmSWZkXGZSIGlzIHRvIGJlIHVzZWQgdG8gY2hlY2sgZm9yIHR5cGVhaGVhZCBpbnN0ZWFkLiAgSWYgXGZJZmRcZlIgaXMKLS0xLCB0aGVuIG5vIHR5cGVhaGVhZCBjaGVja2luZyBpcyBkb25lLgorXGZJZmRcZlIgaXMgdG8gYmUgdXNlZCB0byBjaGVjayBmb3IgdHlwZWFoZWFkIGluc3RlYWQuCitJZiBcZklmZFxmUiBpcworXC0xLCB0aGVuIG5vIHR5cGVhaGVhZCBjaGVja2luZyBpcyBkb25lLgorLlwiCiAuU0ggUkVUVVJOIFZBTFVFCiBBbGwgcm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgT0sgKFNWcjQKIHNwZWNpZmllcyBvbmx5ICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIikgdXBvbiBzdWNjZXNzZnVsCkBAIC0yMTksMTAgKzI4Niw0OCBAQAogLlBQCiBUaGUgbmN1cnNlcyBsaWJyYXJ5IG9iZXlzIHRoZSBYUEc0IHN0YW5kYXJkIGFuZCB0aGUgaGlzdG9yaWNhbCBwcmFjdGljZSBvZiB0aGUKIEFUJlQgY3Vyc2VzIGltcGxlbWVudGF0aW9ucywgaW4gdGhhdCB0aGUgZWNobyBiaXQgaXMgY2xlYXJlZCB3aGVuIGN1cnNlcwotaW5pdGlhbGl6ZXMgdGhlIHRlcm1pbmFsIHN0YXRlLiAgQlNEIGN1cnNlcyBkaWZmZXJlZCBmcm9tIHRoaXMgc2xpZ2h0bHk7IGl0Citpbml0aWFsaXplcyB0aGUgdGVybWluYWwgc3RhdGUuCitCU0QgY3Vyc2VzIGRpZmZlcmVkIGZyb20gdGhpcyBzbGlnaHRseTsgaXQKIGxlZnQgdGhlIGVjaG8gYml0IG9uIGF0IGluaXRpYWxpemF0aW9uLCBidXQgdGhlIEJTRCBcZkJyYXdcZlIgY2FsbCB0dXJuZWQgaXQKLW9mZiBhcyBhIHNpZGUtZWZmZWN0LiAgRm9yIGJlc3QgcG9ydGFiaWxpdHksIHNldCBlY2hvIG9yIG5vZWNobyBleHBsaWNpdGx5CitvZmYgYXMgYSBzaWRlLWVmZmVjdC4KK0ZvciBiZXN0IHBvcnRhYmlsaXR5LCBzZXQgZWNobyBvciBub2VjaG8gZXhwbGljaXRseQoganVzdCBhZnRlciBpbml0aWFsaXphdGlvbiwgZXZlbiBpZiB5b3VyIHByb2dyYW0gcmVtYWlucyBpbiBjb29rZWQgbW9kZS4KKy5QUAorV2hlbiBcZkJrZXlwYWRcZlAgaXMgZmlyc3QgZW5hYmxlZCwKK25jdXJzZXMgbG9hZHMgdGhlIGtleS1kZWZpbml0aW9ucyBmb3IgdGhlIGN1cnJlbnQgdGVybWluYWwgZGVzY3JpcHRpb24uCitJZiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24gaW5jbHVkZXMgZXh0ZW5kZWQgc3RyaW5nIGNhcGFiaWxpdGllcywKK2UuZy4sIGZyb20gdXNpbmcgdGhlIFxmQlwteFxmUCBvcHRpb24gb2YgQFRJQ0AsCit0aGVuIG5jdXJzZXMgYWxzbyBkZWZpbmVzIGtleXMgZm9yIHRoZSBjYXBhYmlsaXRpZXMgd2hvc2UgbmFtZXMKK2JlZ2luIHdpdGggImsiLgorVGhlIGNvcnJlc3BvbmRpbmcga2V5Y29kZXMgYXJlIGdlbmVyYXRlZCBhbmQgKGRlcGVuZGluZyBvbiBwcmV2aW91cworbG9hZHMgb2YgdGVybWluYWwgZGVzY3JpcHRpb25zKSBtYXkgZGlmZmVyIGZyb20gb25lIGV4ZWN1dGlvbiBvZiBhCitwcm9ncmFtIHRvIHRoZSBuZXh0LgorVGhlIGdlbmVyYXRlZCBrZXljb2RlcyBhcmUgcmVjb2duaXplZCBieSB0aGUgXGZCa2V5bmFtZVxmUCBmdW5jdGlvbgorKHdoaWNoIHdpbGwgdGhlbiByZXR1cm4gYSBuYW1lIGJlZ2lubmluZyB3aXRoICJrIiBkZW5vdGluZyB0aGUKK3Rlcm1pbmZvIGNhcGFiaWxpdHkgbmFtZSByYXRoZXIgdGhhbiAiSyIsIHVzZWQgZm9yIGN1cnNlcyBrZXktbmFtZXMpLgorT24gdGhlIG90aGVyIGhhbmQsIGFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgXGZCZGVmaW5lX2tleVxmUCB0byBlc3RhYmxpc2gKK2Egc3BlY2lmaWMga2V5Y29kZSBmb3IgYSBnaXZlbiBzdHJpbmcuCitUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhbiBhcHBsaWNhdGlvbiB0byBjaGVjayBmb3IgYW4gZXh0ZW5kZWQKK2NhcGFiaWxpdHkncyBwcmVzZW5jZSB3aXRoIFxmSXRpZ2V0c3RyXGZQLAorYW5kIHJlYXNzaWduIHRoZSBrZXljb2RlIHRvIG1hdGNoIGl0cyBvd24gbmVlZHMuCisuUFAKK0xvdy1sZXZlbCBhcHBsaWNhdGlvbnMgY2FuIHVzZSBcZkJ0aWdldHN0clxmUCB0byBvYnRhaW4gdGhlIGRlZmluaXRpb24KK29mIGFueSBwYXJ0aWN1bGFyIHN0cmluZyBjYXBhYmlsaXR5LgorSGlnaGVyLWxldmVsIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgdGhlIGN1cnNlcyBcZkJ3Z2V0Y2hcZlAKK2FuZCBzaW1pbGFyIGZ1bmN0aW9ucyB0byByZXR1cm4ga2V5Y29kZXMgcmVseSB1cG9uIHRoZSBvcmRlciBpbiB3aGljaAordGhlIHN0cmluZ3MgYXJlIGxvYWRlZC4KK0lmIG1vcmUgdGhhbiBvbmUga2V5IGRlZmluaXRpb24gaGFzIHRoZSBzYW1lIHN0cmluZyB2YWx1ZSwKK3RoZW4gXGZCd2dldGNoXGZQIGNhbiByZXR1cm4gb25seSBvbmUga2V5Y29kZS4KK01vc3QgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyAoaW5jbHVkaW5nIG5jdXJzZXMpCitsb2FkIGtleSBkZWZpbml0aW9ucyBpbiB0aGUgb3JkZXIKK2RlZmluZWQgYnkgdGhlIGFycmF5IG9mIHN0cmluZyBjYXBhYmlsaXR5IG5hbWVzLgorVGhlIGxhc3Qga2V5IHRvIGJlIGxvYWRlZCBkZXRlcm1pbmVzIHRoZSBrZXljb2RlIHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQuCitJbiBuY3Vyc2VzLCB5b3UgbWF5IGFsc28gaGF2ZSBleHRlbmRlZCBjYXBhYmlsaXRpZXMgaW50ZXJwcmV0ZWQgYXMKK2tleSBkZWZpbml0aW9ucy4KK1RoZXNlIGFyZSBsb2FkZWQgYWZ0ZXIgdGhlIHByZWRlZmluZWQga2V5cywKK2FuZCBpZiBhIGNhcGFiaWxpdHkncyB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBhIHByZXZpb3VzbHktbG9hZGVkCitrZXkgZGVmaW5pdGlvbiwKK3RoZSBsYXRlciBkZWZpbml0aW9uIGlzIHRoZSBvbmUgdXNlZC4KIC5TSCBOT1RFUwogTm90ZSB0aGF0IFxmQmVjaG9cZlIsIFxmQm5vZWNob1xmUiwgXGZCaGFsZmRlbGF5XGZSLCBcZkJpbnRyZmx1c2hcZlIsCiBcZkJtZXRhXGZSLCBcZkJub2RlbGF5XGZSLCBcZkJub3RpbWVvdXRcZlIsIFxmQm5vcWlmbHVzaFxmUiwKQEAgLTIzMCwxMyArMzM1LDEzIEBACiAuUFAKIFRoZSBcZkJub3Jhd1xmUiBhbmQgXGZCbm9jYnJlYWtcZlIgY2FsbHMgZm9sbG93IGhpc3RvcmljYWwgcHJhY3RpY2UgaW4gdGhhdAogdGhleSBhdHRlbXB0IHRvIHJlc3RvcmUgdG8gbm9ybWFsIChgY29va2VkJykgbW9kZSBmcm9tIHJhdyBhbmQgY2JyZWFrIG1vZGVzCi1yZXNwZWN0aXZlbHkuICBNaXhpbmcgcmF3L25vcmF3IGFuZCBjYnJlYWsvbm9jYnJlYWsgY2FsbHMgbGVhZHMgdG8gdHR5IGRyaXZlcgorcmVzcGVjdGl2ZWx5LgorTWl4aW5nIHJhdy9ub3JhdyBhbmQgY2JyZWFrL25vY2JyZWFrIGNhbGxzIGxlYWRzIHRvIHR0eSBkcml2ZXIKIGNvbnRyb2wgc3RhdGVzIHRoYXQgYXJlIGhhcmQgdG8gcHJlZGljdCBvciB1bmRlcnN0YW5kOyBpdCBpcyBub3QgcmVjb21tZW5kZWQuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfZ2V0Y2hcZlIoM1gpLCBcZkJjdXJzX2luaXRzY3JcZlIoM1gpLCBcZkJ0ZXJtaW9cZlIoNykKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmN1cnNfZ2V0Y2hcZlIoM1gpLAorXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwKK1xmQmN1cnNfdXRpbFxmUigzWCksCitcZkJkZWZpbmVfa2V5XGZSKDNYKSwKK1xmQnRlcm1pb1xmUig3KQpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfaW5zX3djaC4zeCBiL21hbi9jdXJzX2luc193Y2guM3gKaW5kZXggYmI4YTlhMy4uNGM2YTkyNSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5zX3djaC4zeAorKysgYi9tYW4vY3Vyc19pbnNfd2NoLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19pbnNfd2NoLjN4LHYgMS4zIDIwMDYvMDIvMjUgMjE6NDI6MjIgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2luc193Y2guM3gsdiAxLjUgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwICQKIC5USCBjdXJzX2luc193Y2ggM1ggIiIKIC5TSCBOQU1FCiBcZkJpbnNfd2NoXGZSLApAQCAtNTIsMTQgKzUyLDEyIEBACiAuU0ggUkVUVVJOIFZBTFVFCiBJZiBzdWNjZXNzZnVsLCB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIE9LLgogSWYgbm90LCB0aGV5IHJldHVybiBFUlIuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIEVSUk9SUwogTm8gZXJyb3JzIGFyZSBkZWZpbmVkLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19pbnNjaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2luc193c3RyLjN4IGIvbWFuL2N1cnNfaW5zX3dzdHIuM3gKaW5kZXggMGMxNTNjNC4uMTI0NzliMCAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5zX3dzdHIuM3gKKysrIGIvbWFuL2N1cnNfaW5zX3dzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDIwMDIsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luc193c3RyLjN4LHYgMS40IDIwMDUvMDUvMTUgMTc6MDI6NTQgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2luc193c3RyLjN4LHYgMS43IDIwMTIvMTEvMDMgMjM6MDM6NTkgdG9tIEV4cCAkCiAuVEggY3Vyc19pbnNfd3N0ciAzWCAiIgogLm5hCiAuaHkgMApAQCAtOTIsMTcgKzkyLDE1IEBACiBmdW5jdGlvbnMgd2lsbCBmYWlsLgogWFNJIGRvZXMgbm90IGRlZmluZSB3aGF0IHdpbGwgaGFwcGVuIGlmIGEgbm9uc3BhY2luZyBjaGFyYWN0ZXIgZm9sbG93cwogYSBjb250cm9sIGNoYXJhY3Rlci4KLS5TSCBSRVRVUk4gVkFMVUVTCisuU0ggUkVUVVJOIFZBTFVFCiBVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgdGhlc2UgZnVuY3Rpb25zIHJldHVybiBPSy4KIE90aGVyd2lzZSwgdGhleSByZXR1cm4gRVJSLgorLlBQCitGdW5jdGlvbnMgd2l0aCBhICJtdiIgcHJlZml4IGZpcnN0IHBlcmZvcm0gYSBjdXJzb3IgbW92ZW1lbnQgdXNpbmcKK1xmQndtb3ZlXGZQLCBhbmQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB3aW5kb3csCitvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQmN1cnNfaW5zc3RyXGZSKDNYKSwKIFxmQmN1cnNfaW5fd2NoXGZSKDNYKSwKIFxmQmN1cnNfaW5zX3djaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2luc2NoLjN4IGIvbWFuL2N1cnNfaW5zY2guM3gKaW5kZXggNzhhYjVhNS4uNzdlOTJlYyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5zY2guM3gKKysrIGIvbWFuL2N1cnNfaW5zY2guM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxMyArMjYsMTMgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfaW5zY2guM3gsdiAxLjEwIDIwMDYvMTIvMDIgMTc6MDE6NTAgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2luc2NoLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIGN1cnNfaW5zY2ggM1ggIiIKIC5TSCBOQU1FCiBcZkJpbnNjaFxmUiwKIFxmQndpbnNjaFxmUiwKIFxmQm12aW5zY2hcZlIsCi1cZkJtdndpbnNjaFxmUiAtIGluc2VydCBhIGNoYXJhY3RlciBiZWZvcmUgY3Vyc29yIGluIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCbXZ3aW5zY2hcZlIgXC0gaW5zZXJ0IGEgY2hhcmFjdGVyIGJlZm9yZSBjdXJzb3IgaW4gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcApAQCAtNTMsNiArNTMsMTAgQEAKIEFsbCByb3V0aW5lcyB0aGF0IHJldHVybiBhbiBpbnRlZ2VyIHJldHVybiBcZkJFUlJcZlIgdXBvbiBmYWlsdXJlIGFuZCBPSyAoU1ZyNAogc3BlY2lmaWVzIG9ubHkgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiBcZkJFUlJcZlIiKSB1cG9uIHN1Y2Nlc3NmdWwKIGNvbXBsZXRpb24sIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQgaW4gdGhlIHByZWNlZGluZyByb3V0aW5lIGRlc2NyaXB0aW9ucy4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIFRoZXNlIHJvdXRpbmVzIGRvIG5vdCBuZWNlc3NhcmlseSBpbXBseSB1c2Ugb2YgYSBoYXJkd2FyZSBpbnNlcnQgY2hhcmFjdGVyCiBmZWF0dXJlLgpAQCAtNjYsOSArNzAsMyBAQAogQ29tcGFyYWJsZSBmdW5jdGlvbnMgaW4gdGhlIHdpZGUtY2hhcmFjdGVyIChuY3Vyc2VzdykgbGlicmFyeSBhcmUKIGRlc2NyaWJlZCBpbgogXGZCY3Vyc19pbnNfd2NoXGZSKDNYKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfaW5zc3RyLjN4IGIvbWFuL2N1cnNfaW5zc3RyLjN4CmluZGV4IDE1MzZlYTIuLjNlMzhhNTMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX2luc3N0ci4zeAorKysgYi9tYW4vY3Vyc19pbnNzdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luc3N0ci4zeCx2IDEuMTggMjAwNi8xMi8yNCAxNDo1OTozMCB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfaW5zc3RyLjN4LHYgMS4yMSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIGN1cnNfaW5zc3RyIDNYICIiCiAuU0ggTkFNRQogXGZCaW5zc3RyXGZSLApAQCAtMzYsNyArMzYsNyBAQAogXGZCbXZpbnNzdHJcZlIsCiBcZkJtdmluc25zdHJcZlIsCiBcZkJtdndpbnNzdHJcZlIsCi1cZkJtdndpbnNuc3RyXGZSIC0gaW5zZXJ0IHN0cmluZyBiZWZvcmUgY3Vyc29yIGluIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCbXZ3aW5zbnN0clxmUiBcLSBpbnNlcnQgc3RyaW5nIGJlZm9yZSBjdXJzb3IgaW4gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5icgpAQCAtNzgsNiArNzgsMTAgQEAKIEluIHRoaXMgaW1wbGVtZW50YXRpb24sCiBpZiB0aGUgd2luZG93IHBhcmFtZXRlciBpcyBudWxsIG9yIHRoZSBzdHIgcGFyYW1ldGVyIGlzIG51bGwsCiBhbiBlcnJvciBpcyByZXR1cm5lZC4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIE5vdGUgdGhhdCBhbGwgYnV0IFxmQndpbnNuc3RyXGZSIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKQEAgLTkzLDkgKzk3LDMgQEAKIFxmQmN1cnNfdXRpbFxmUigzWCksCiBcZkJjdXJzX2NsZWFyXGZSKDNYKSwKIFxmQmN1cnNfaW5jaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX2luc3RyLjN4IGIvbWFuL2N1cnNfaW5zdHIuM3gKaW5kZXggYTkzZGUyNy4uMWIxN2RiOSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW5zdHIuM3gKKysrIGIvbWFuL2N1cnNfaW5zdHIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX2luc3RyLjN4LHYgMS4xMyAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19pbnN0ci4zeCx2IDEuMTYgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwICQKIC5USCBjdXJzX2luc3RyIDNYICIiCiAuU0ggTkFNRQogXGZCaW5zdHJcZlIsCkBAIC0zNiw3ICszNiw3IEBACiBcZkJtdmluc3RyXGZSLAogXGZCbXZpbm5zdHJcZlIsCiBcZkJtdndpbnN0clxmUiwKLVxmQm12d2lubnN0clxmUiAtIGdldCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGZyb20gYSBcZkJjdXJzZXNcZlIgd2luZG93CitcZkJtdndpbm5zdHJcZlIgXC0gZ2V0IGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgZnJvbSBhIFxmQmN1cnNlc1xmUiB3aW5kb3cKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCkBAIC03MCw2ICs3MCwxMCBAQAogSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwKIGlmIHRoZSB3aW5kb3cgcGFyYW1ldGVyIGlzIG51bGwgb3IgdGhlIHN0ciBwYXJhbWV0ZXIgaXMgbnVsbCwKIGEgemVybyBpcyByZXR1cm5lZC4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggTk9URVMKIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IFxmQndpbm5zdHJcZlIgbWF5IGJlIG1hY3Jvcy4KIC5TSCBQT1JUQUJJTElUWQpAQCAtODEsOSArODUsMyBAQAogSW4gdGhpcyBjYXNlLCB0aGUgZnVuY3Rpb25zIHJldHVybiB0aGUgc3RyaW5nIGVuZGluZyBhdCB0aGUgcmlnaHQgbWFyZ2luLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19pbndzdHIuM3ggYi9tYW4vY3Vyc19pbndzdHIuM3gKaW5kZXggOTkwNzg5Yy4uMGNkZjRkOCAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfaW53c3RyLjN4CisrKyBiL21hbi9jdXJzX2lud3N0ci4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMjAwMi0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfaW53c3RyLjN4LHYgMS41IDIwMDYvMDIvMjUgMjE6MjA6MjAgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX2lud3N0ci4zeCx2IDEuOCAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgJAogLlRIIGN1cnNfaW53c3RyIDNYICIiCiAuU0ggTkFNRQogXGZCaW53c3RyXGZSLApAQCAtNzIsNyArNzIsNyBAQAogTm90ZSB0aGF0IGFsbCByb3V0aW5lcyBleGNlcHQKIFxmQndpbm53c3RyXGZSCiBtYXkgYmUgbWFjcm9zLgotLlNIIFJFVFVSTiBWQUxVRVMKKy5TSCBSRVRVUk4gVkFMVUUKIEFsbCByb3V0aW5lcyByZXR1cm4KIFxmQkVSUlxmUgogdXBvbiBmYWlsdXJlLiBVcG9uCkBAIC04MSwxMyArODEsMTEgQEAKIFxmQk9LXGZSLCBhbmQgdGhlICpcZkJpbm53c3RyXGZSCiByb3V0aW5lcyByZXR1cm4gdGhlCiBudW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGludG8gdGhlIHN0cmluZy4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2luc3RyXGZSKDNYKSwKIFxmQmN1cnNfaW5fd2Noc3RyXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19rZXJuZWwuM3ggYi9tYW4vY3Vyc19rZXJuZWwuM3gKaW5kZXggOTQwMzk3My4uNjY0ZDE1ZCAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfa2VybmVsLjN4CisrKyBiL21hbi9jdXJzX2tlcm5lbC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfa2VybmVsLjN4LHYgMS4xNSAyMDA1LzA1LzE1IDE2OjE4OjEzIHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19rZXJuZWwuM3gsdiAxLjIwIDIwMTUvMDcvMjEgMDE6MTA6MTEgdG9tIEV4cCAkCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuVEggY3Vyc19rZXJuZWwgM1ggIiIKIC5uYQogLmh5IDAKQEAgLTQxLDcgKzQ0LDcgQEAKIFxmQnNldHN5eFxmUiwKIFxmQnJpcG9mZmxpbmVcZlIsCiBcZkJjdXJzX3NldFxmUiwKLVxmQm5hcG1zXGZSIC0gbG93LWxldmVsIFxmQmN1cnNlc1xmUiByb3V0aW5lcworXGZCbmFwbXNcZlIgXC0gbG93LWxldmVsIFxmQmN1cnNlc1xmUiByb3V0aW5lcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtNTksMjAgKzYyLDIxIEBACiAuYnIKIFxmQmludCBzYXZldHR5KHZvaWQpO1xmUgogLmJyCi1cZkJ2b2lkIGdldHN5eChpbnQgeSwgaW50IHgpO1xmUgorXGZCdm9pZCBnZXRzeXgoaW50IFxmUFxmSXlcZlBcZkIsIGludCBcZlBcZkl4XGZQXGZCKTtcZlIKIC5icgotXGZCdm9pZCBzZXRzeXgoaW50IHksIGludCB4KTtcZlIKK1xmQnZvaWQgc2V0c3l4KGludCBcZlBcZkl5XGZQXGZCLCBpbnQgXGZQXGZJeFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCByaXBvZmZsaW5lKGludCBsaW5lLCBpbnQgKCppbml0KShXSU5ET1cgKiwgaW50KSk7XGZSCitcZkJpbnQgcmlwb2ZmbGluZShpbnQgXGZQXGZJbGluZVxmUFxmQiwgaW50ICgqXGZQXGZJaW5pdFxmUFxmQikoV0lORE9XICosIGludCkpO1xmUgogLmJyCi1cZkJpbnQgY3Vyc19zZXQoaW50IHZpc2liaWxpdHkpO1xmUgorXGZCaW50IGN1cnNfc2V0KGludCBcZlBcZkl2aXNpYmlsaXR5XGZQXGZCKTtcZlIKIC5icgotXGZCaW50IG5hcG1zKGludCBtcyk7XGZSCitcZkJpbnQgbmFwbXMoaW50IFxmUFxmSW1zXGZQXGZCKTtcZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCiBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdpdmUgbG93LWxldmVsIGFjY2VzcyB0byB2YXJpb3VzIFxmQmN1cnNlc1xmUgotY2FwYWJpbGl0aWVzLiAgVGhlc2VzIHJvdXRpbmVzIHR5cGljYWxseSBhcmUgdXNlZCBpbnNpZGUgbGlicmFyeQorY2FwYWJpbGl0aWVzLiAgVGhlc2Ugcm91dGluZXMgdHlwaWNhbGx5IGFyZSB1c2VkIGluc2lkZSBsaWJyYXJ5CiByb3V0aW5lcy4KKy5TUyBkZWZfcHJvZ19tb2RlLCBkZWZfc2hlbGxfbW9kZQogLlBQCiBUaGUgXGZCZGVmX3Byb2dfbW9kZVxmUiBhbmQgXGZCZGVmX3NoZWxsX21vZGVcZlIgcm91dGluZXMgc2F2ZSB0aGUKIGN1cnJlbnQgdGVybWluYWwgbW9kZXMgYXMgdGhlICJwcm9ncmFtIiAoaW4gXGZCY3Vyc2VzXGZSKSBvciAic2hlbGwiCkBAIC04MCwyNyArODQsMzEgQEAKIFxmQnJlc2V0X3NoZWxsX21vZGVcZlIgcm91dGluZXMuICBUaGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBieQogXGZCaW5pdHNjclxmUi4gIFRoZXJlIGlzIG9uZSBzdWNoIHNhdmUgYXJlYSBmb3IgZWFjaCBzY3JlZW4gY29udGV4dAogYWxsb2NhdGVkIGJ5IFxmQm5ld3Rlcm0oKVxmUi4KKy5TUyByZXNldF9wcm9nX21vZGUsIHJlc2V0X3NoZWxsX21vZGUKIC5QUAogVGhlIFxmQnJlc2V0X3Byb2dfbW9kZVxmUiBhbmQgXGZCcmVzZXRfc2hlbGxfbW9kZVxmUiByb3V0aW5lcyByZXN0b3JlCiB0aGUgdGVybWluYWwgdG8gInByb2dyYW0iIChpbiBcZkJjdXJzZXNcZlIpIG9yICJzaGVsbCIgKG91dCBvZgogXGZCY3Vyc2VzXGZSKSBzdGF0ZS4gIFRoZXNlIGFyZSBkb25lIGF1dG9tYXRpY2FsbHkgYnkgXGZCZW5kd2luXGZSCiBhbmQsIGFmdGVyIGFuIFxmQmVuZHdpblxmUiwgYnkgXGZCZG91cGRhdGVcZlIsIHNvIHRoZXkgbm9ybWFsbHkgYXJlCiBub3QgY2FsbGVkLgorLlNTIHJlc2V0dHksIHNhdmV0dHkKIC5QUAogVGhlIFxmQnJlc2V0dHlcZlIgYW5kIFxmQnNhdmV0dHlcZlIgcm91dGluZXMgc2F2ZSBhbmQgcmVzdG9yZSB0aGUKIHN0YXRlIG9mIHRoZSB0ZXJtaW5hbCBtb2Rlcy4gIFxmQnNhdmV0dHlcZlIgc2F2ZXMgdGhlIGN1cnJlbnQgc3RhdGUgaW4KIGEgYnVmZmVyIGFuZCBcZkJyZXNldHR5XGZSIHJlc3RvcmVzIHRoZSBzdGF0ZSB0byB3aGF0IGl0IHdhcyBhdCB0aGUKIGxhc3QgY2FsbCB0byBcZkJzYXZldHR5XGZSLgorLlNTIGdldHN5eAogLlBQCiBUaGUgXGZCZ2V0c3l4XGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgY3VycmVudCBjb29yZGluYXRlcyBvZiB0aGUgdmlydHVhbCBzY3JlZW4KIGN1cnNvciBpbiBcZkl5XGZSIGFuZCBcZkl4XGZSLiAgSWYgXGZCbGVhdmVva1xmUiBpcyBjdXJyZW50bHkgXGZCVFJVRVxmUiwgdGhlbgotXGZCLTFcZlIsXGZCLTFcZlIgaXMgcmV0dXJuZWQuICBJZiBsaW5lcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSB0b3Agb2YgdGhlCitcZkJcLTFcZlIsXGZCXC0xXGZSIGlzIHJldHVybmVkLiAgSWYgbGluZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgdG9wIG9mIHRoZQogc2NyZWVuLCB1c2luZyBcZkJyaXBvZmZsaW5lXGZSLCBcZkl5XGZSIGFuZCBcZkl4XGZSIGluY2x1ZGUgdGhlc2UgbGluZXM7CiB0aGVyZWZvcmUsIFxmSXlcZlIgYW5kIFxmSXhcZlIgc2hvdWxkIGJlIHVzZWQgb25seSBhcyBhcmd1bWVudHMgZm9yCiBcZkJzZXRzeXhcZlIuCisuU1Mgc2V0c3l4CiAuUFAKIFRoZSBcZkJzZXRzeXhcZlIgcm91dGluZSBzZXRzIHRoZSB2aXJ0dWFsIHNjcmVlbiBjdXJzb3IgdG8KLVxmSXlcZlIsIFxmSXhcZlIuICBJZiBcZkl5XGZSIGFuZCBcZkl4XGZSIGFyZSBib3RoIFxmQi0xXGZSLCB0aGVuCitcZkl5XGZSLCBcZkl4XGZSLiAgSWYgXGZJeVxmUiBhbmQgXGZJeFxmUiBhcmUgYm90aCBcZkJcLTFcZlIsIHRoZW4KIFxmQmxlYXZlb2tcZlIgaXMgc2V0LiAgVGhlIHR3byByb3V0aW5lcyBcZkJnZXRzeXhcZlIgYW5kIFxmQnNldHN5eFxmUgogYXJlIGRlc2lnbmVkIHRvIGJlIHVzZWQgYnkgYSBsaWJyYXJ5IHJvdXRpbmUsIHdoaWNoIG1hbmlwdWxhdGVzCiBcZkJjdXJzZXNcZlIgd2luZG93cyBidXQgZG9lcyBub3Qgd2FudCB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgcG9zaXRpb24KQEAgLTEwOCwxNiArMTE2LDI2IEBACiBhdCB0aGUgYmVnaW5uaW5nLCBkbyBpdHMgbWFuaXB1bGF0aW9uIG9mIGl0cyBvd24gd2luZG93cywgZG8gYQogXGZCd25vdXRyZWZyZXNoXGZSIG9uIGl0cyB3aW5kb3dzLCBjYWxsIFxmQnNldHN5eFxmUiwgYW5kIHRoZW4gY2FsbAogXGZCZG91cGRhdGVcZlIuCisuU1Mgcmlwb2ZmbGluZQogLlBQCiBUaGUgXGZCcmlwb2ZmbGluZVxmUiByb3V0aW5lIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgc2FtZSBmYWNpbGl0eSB0aGF0CiBcZkJzbGtfaW5pdFxmUiBbc2VlIFxmQmN1cnNfc2xrXGZSKDNYKV0gdXNlcyB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlCiBzY3JlZW4uICBcZkJyaXBvZmZsaW5lXGZSIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBcZkJpbml0c2NyXGZSIG9yCi1cZkJuZXd0ZXJtXGZSIGlzIGNhbGxlZC4gIElmIFxmSWxpbmVcZlIgaXMgcG9zaXRpdmUsIGEgbGluZSBpcyByZW1vdmVkCi1mcm9tIHRoZSB0b3Agb2YgXGZCc3Rkc2NyXGZSOyBpZiBcZklsaW5lXGZSIGlzIG5lZ2F0aXZlLCBhIGxpbmUgaXMKLXJlbW92ZWQgZnJvbSB0aGUgYm90dG9tLiAgV2hlbiB0aGlzIGlzIGRvbmUgaW5zaWRlIFxmQmluaXRzY3JcZlIsIHRoZQorXGZCbmV3dGVybVxmUiBpcyBjYWxsZWQsIHRvIHByZXBhcmUgdGhlc2UgaW5pdGlhbCBhY3Rpb25zOgorLmJQCitJZiBcZklsaW5lXGZSIGlzIHBvc2l0aXZlLCBhIGxpbmUgaXMgcmVtb3ZlZCBmcm9tIHRoZSB0b3Agb2YgXGZCc3Rkc2NyXGZSLgorLmJQCitpZiBcZklsaW5lXGZSIGlzIG5lZ2F0aXZlLCBhIGxpbmUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBib3R0b20uCisuUFAKK1doZW4gdGhlIHJlc3VsdGluZyBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluc2lkZSBcZkJpbml0c2NyXGZSLCB0aGUKIHJvdXRpbmUgXGZCaW5pdFxmUiAoc3VwcGxpZWQgYnkgdGhlIHVzZXIpIGlzIGNhbGxlZCB3aXRoIHR3bwotYXJndW1lbnRzOiBhIHdpbmRvdyBwb2ludGVyIHRvIHRoZSBvbmUtbGluZSB3aW5kb3cgdGhhdCBoYXMgYmVlbgotYWxsb2NhdGVkIGFuZCBhbiBpbnRlZ2VyIHdpdGggdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSB3aW5kb3cuCithcmd1bWVudHM6CisuYlAKK2Egd2luZG93IHBvaW50ZXIgdG8gdGhlIG9uZS1saW5lIHdpbmRvdyB0aGF0IGhhcyBiZWVuCithbGxvY2F0ZWQgYW5kCisuYlAKK2FuIGludGVnZXIgd2l0aCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHdpbmRvdy4KKy5QUAogSW5zaWRlIHRoaXMgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgdGhlIGludGVnZXIgdmFyaWFibGVzIFxmQkxJTkVTXGZSCiBhbmQgXGZCQ09MU1xmUiAoZGVmaW5lZCBpbiBcZkI8Y3Vyc2VzLmg+XGZSKSBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUKIGFjY3VyYXRlIGFuZCBcZkJ3cmVmcmVzaFxmUiBvciBcZkJkb3VwZGF0ZVxmUiBtdXN0IG5vdCBiZSBjYWxsZWQuICBJdApAQCAtMTI2LDEyICsxNDQsMTQgQEAKIC5QUAogXGZCcmlwb2ZmbGluZVxmUiBjYW4gYmUgY2FsbGVkIHVwIHRvIGZpdmUgdGltZXMgYmVmb3JlIGNhbGxpbmcgXGZCaW5pdHNjclxmUiBvcgogXGZCbmV3dGVybVxmUi4KKy5TUyBjdXJzX3NldAogLlBQCi1UaGUgXGZCY3Vyc19zZXRcZlIgcm91dGluZSBzZXRzIHRoZSBjdXJzb3Igc3RhdGUgaXMgc2V0IHRvIGludmlzaWJsZSwKK1RoZSBcZkJjdXJzX3NldFxmUiByb3V0aW5lIHNldHMgdGhlIGN1cnNvciBzdGF0ZSB0byBpbnZpc2libGUsCiBub3JtYWwsIG9yIHZlcnkgdmlzaWJsZSBmb3IgXGZCdmlzaWJpbGl0eVxmUiBlcXVhbCB0byBcZkIwXGZSLAogXGZCMVxmUiwgb3IgXGZCMlxmUiByZXNwZWN0aXZlbHkuICBJZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgdGhlCiBcZkl2aXNpYmlsaXR5XGZSIHJlcXVlc3RlZCwgdGhlIHByZXZpb3VzIFxmSWN1cnNvclxmUiBzdGF0ZSBpcwogcmV0dXJuZWQ7IG90aGVyd2lzZSwgXGZCRVJSXGZSIGlzIHJldHVybmVkLgorLlNTIG5hcG1zCiAuUFAKIFRoZSBcZkJuYXBtc1xmUiByb3V0aW5lIGlzIHVzZWQgdG8gc2xlZXAgZm9yIFxmSW1zXGZSIG1pbGxpc2Vjb25kcy4KIC5TSCBSRVRVUk4gVkFMVUUKQEAgLTE0Myw5ICsxNjMsMTIgQEAKIC5QUAogWC9PcGVuIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIEluIHRoaXMgaW1wbGVtZW50YXRpb24KLS5SUwogLlRQIDUKKy5uYQorLmh5IDAKIFxmQmRlZl9wcm9nX21vZGVcZlIsIFxmQmRlZl9zaGVsbF9tb2RlXGZSLCBcZkJyZXNldF9wcm9nX21vZGVcZlIsIFxmQnJlc2V0X3NoZWxsX21vZGVcZlIKKy5oeQorLmFkCiByZXR1cm4gYW4gZXJyb3IKIGlmIHRoZSB0ZXJtaW5hbCB3YXMgbm90IGluaXRpYWxpemVkLCBvcgogaWYgdGhlIEkvTyBjYWxsIHRvIG9idGFpbiB0aGUgdGVybWluYWwgc2V0dGluZ3MgZmFpbHMuCkBAIC0xNTMsNyArMTc2LDYgQEAKIFxmQnJpcG9mZmxpbmVcZlAKIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJpcHBlZC1vZmYgbGluZXMKIGV4Y2VlZHMgdGhlIG1heGltdW0gKE5SSVBTID0gNSkuCi0uUkUKIC5TSCBOT1RFUwogTm90ZSB0aGF0IFxmQmdldHN5eFxmUiBpcyBhIG1hY3JvLCBzbyBcZkImXGZSIGlzIG5vdCBuZWNlc3NhcnkgYmVmb3JlCiB0aGUgdmFyaWFibGVzIFxmSXlcZlIgYW5kIFxmSXhcZlIuCkBAIC0xNzYsMTEgKzE5OCwxMCBAQAogdHlwZSBpbnQuIFRoaXMgaXMgbWlzbGVhZGluZywgYXMgdGhleSBhcmUgbWFjcm9zIHdpdGggbm8gZG9jdW1lbnRlZCBzZW1hbnRpY3MKIGZvciB0aGUgcmV0dXJuIHZhbHVlLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX2luaXRzY3JcZlIoM1gpLCBcZkJjdXJzX291dG9wdHNcZlIoM1gpLCBcZkJjdXJzX3JlZnJlc2hcZlIoM1gpLAotXGZCY3Vyc19zY3JfZHVtcFxmUigzWCksIFxmQmN1cnNfc2xrXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CitcZkJjdXJzZXNcZlIoM1gpLAorXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwKK1xmQmN1cnNfb3V0b3B0c1xmUigzWCksCitcZkJjdXJzX3JlZnJlc2hcZlIoM1gpLAorXGZCY3Vyc19zY3JfZHVtcFxmUigzWCksCitcZkJjdXJzX3Nsa1xmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCkuCmRpZmYgLS1naXQgYS9tYW4vY3Vyc19sZWdhY3kuM3ggYi9tYW4vY3Vyc19sZWdhY3kuM3gKaW5kZXggMjUxYWU0OS4uZmViYWYyOSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfbGVnYWN5LjN4CisrKyBiL21hbi9jdXJzX2xlZ2FjeS4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAyMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDIwICsyNiwxNSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19sZWdhY3kuM3gsdiAxLjEgMjAwNy8wNC8wNyAyMzo1NDoyOSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfbGVnYWN5LjN4LHYgMS41IDIwMTAvMTIvMDQgMTg6Mzg6NTUgdG9tIEV4cCAkCiAuVEggY3Vyc19sZWdhY3kgM1ggIiIKIC5TSCBOQU1FCi1cZkJnZXRiZWd4XGZSLAotXGZCZ2V0YmVneVxmUiwKLVxmQmdldGN1cnhcZlIsCi1cZkJnZXRjdXJ5XGZSLAotXGZCZ2V0bWF4eFxmUiwKLVxmQmdldG1heHlcZlIsCi1cZkJnZXRwYXJ4XGZSLAotXGZCZ2V0cGFyeVxmUiAtIGdldCBcZkJjdXJzZXNcZlIgY3Vyc29yIGFuZCB3aW5kb3cgY29vcmRpbmF0ZXMKK2dldGF0dHJzIFwtIGdldCBcZkJjdXJzZXNcZlIgY3Vyc29yIGFuZCB3aW5kb3cgY29vcmRpbmF0ZXMsIGF0dHJpYnV0ZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCitcZkJpbnQgZ2V0YXR0cnMoV0lORE9XICp3aW4pO1xmUgorLmJyCiBcZkJpbnQgZ2V0YmVneChXSU5ET1cgKndpbik7XGZSCiAuYnIKIFxmQmludCBnZXRiZWd5KFdJTkRPVyAqd2luKTtcZlIKQEAgLTg1LDkgKzgwLDMgQEAKIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2dldHl4XGZSKDNYKSwKIFxmQmN1cnNfb3BhcXVlXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19tZW1sZWFrcy4zeCBiL21hbi9jdXJzX21lbWxlYWtzLjN4CmluZGV4IGE4YTQ1NTIuLjVlYmMwZDAgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX21lbWxlYWtzLjN4CisrKyBiL21hbi9jdXJzX21lbWxlYWtzLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTMgKzI2LDEzIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX21lbWxlYWtzLjN4LHYgMS4xIDIwMDgvMTAvMjUgMjM6Mzg6MTMgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX21lbWxlYWtzLjN4LHYgMS4zIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggY3Vyc19tZW1sZWFrcyAzWCAiIgogLm5hCiAuaHkgMAogLlNIIE5BTUUKIFxmQl9uY19mcmVlYWxsXGZQCi1cZkJfbmNfZnJlZV9hbmRfZXhpdFxmUCAtIFxmQmN1cnNlc1xmUiBtZW1vcnktbGVhayBjaGVja2luZworXGZCX25jX2ZyZWVfYW5kX2V4aXRcZlAgXC0gXGZCY3Vyc2VzXGZSIG1lbW9yeS1sZWFrIGNoZWNraW5nCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCkBAIC00NSw3ICs0NSw3IEBACiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc2ltcGxpZnkgYW5hbHlzaXMgb2YgbWVtb3J5IGxlYWtzIGluIHRoZSBuY3Vyc2VzCiBsaWJyYXJ5LgogVGhleSBhcmUgbm9ybWFsbHkgbm90IGF2YWlsYWJsZTsgdGhleSBtdXN0IGJlIGNvbmZpZ3VyZWQgaW50byB0aGUgbGlicmFyeQotYXQgYnVpbGQgdGltZSB1c2luZyB0aGUgXGZCLS1kaXNhYmxlLWxlYWtzXGZQIG9wdGlvbi4KK2F0IGJ1aWxkIHRpbWUgdXNpbmcgdGhlIFxmQlwtXC1kaXNhYmxlLWxlYWtzXGZQIG9wdGlvbi4KIFRoYXQgY29tcGlsZXMtaW4gY29kZSB0aGF0IGZyZWVzIG1lbW9yeSB0aGF0IG5vcm1hbGx5IHdvdWxkIG5vdCBiZSBmcmVlZC4KIC5QUAogQW55IGltcGxlbWVudGF0aW9uIG9mIGN1cnNlcyBtdXN0IG5vdCBmcmVlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoCkBAIC02Nyw5ICs2NywzIEBACiBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBYU0kgaW50ZXJmYWNlLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19tb3VzZS4zeCBiL21hbi9jdXJzX21vdXNlLjN4CmluZGV4IDIzZjlmOWMuLmI3Y2Y0YzYgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX21vdXNlLjN4CisrKyBiL21hbi9jdXJzX21vdXNlLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDUzICsyNyw1OCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19tb3VzZS4zeCx2IDEuMzAgMjAwNi8xMi8zMCAyMzo0MzozNCB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfbW91c2UuM3gsdiAxLjQyIDIwMTUvMDcvMjEgMDk6Mjc6MzkgdG9tIEV4cCAkCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuVEggY3Vyc19tb3VzZSAzWCAiIgogLm5hCiAuaHkgMAogLlNIIE5BTUUKK1xmQmhhc19tb3VzZVxmUiwKIFxmQmdldG1vdXNlXGZSLCBcZkJ1bmdldG1vdXNlXGZSLAogXGZCbW91c2VtYXNrXGZSLCBcZkJ3ZW5jbG9zZVxmUiwKIFxmQm1vdXNlX3RyYWZvXGZSLCBcZkJ3bW91c2VfdHJhZm9cZlIsCi1cZkJtb3VzZWludGVydmFsXGZSIC0gbW91c2UgaW50ZXJmYWNlIHRocm91Z2ggY3Vyc2VzCitcZkJtb3VzZWludGVydmFsXGZSIFwtIG1vdXNlIGludGVyZmFjZSB0aHJvdWdoIGN1cnNlcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUworXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgorLlBQCitcZkJ0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1hc2tfdDtcZlIKKy5QUAogLm5mCi1cZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+Ci0uUFAKLVxmQnR5cGVkZWYgdW5zaWduZWQgbG9uZyBtbWFza190OwotLlBQCi10eXBlZGVmIHN0cnVjdAotewotICAgIHNob3J0IGlkOyAgICAgICAgIFxmSS8qIElEIHRvIGRpc3Rpbmd1aXNoIG11bHRpcGxlIGRldmljZXMgKi9cZkIKLSAgICBpbnQgeCwgeSwgejsgICAgICBcZkkvKiBldmVudCBjb29yZGluYXRlcyAqL1xmQgotICAgIG1tYXNrX3QgYnN0YXRlOyAgIFxmSS8qIGJ1dHRvbiBzdGF0ZSBiaXRzICovXGZCCi19Ci1NRVZFTlQ7XGZSCitcZkJ0eXBlZGVmIHN0cnVjdCB7XGZSCitcZkIgICAgc2hvcnQgaWQ7ICAgICAgICAgXGZSXGZJLyogSUQgdG8gZGlzdGluZ3Vpc2ggbXVsdGlwbGUgZGV2aWNlcyAqL1xmUgorXGZCICAgIGludCB4LCB5LCB6OyAgICAgIFxmUlxmSS8qIGV2ZW50IGNvb3JkaW5hdGVzICovXGZSCitcZkIgICAgbW1hc2tfdCBic3RhdGU7ICAgXGZSXGZJLyogYnV0dG9uIHN0YXRlIGJpdHMgKi9cZlIKK1xmQn0gTUVWRU5UO1xmUgogLmZpCisuUFAKK1xmQmJvb2wgaGFzX21vdXNlKHZvaWQpO1xmUgogLmJyCi1cZkJpbnQgZ2V0bW91c2UoTUVWRU5UICpldmVudCk7XGZSCitcZkJpbnQgZ2V0bW91c2UoTUVWRU5UICpcZlBcZklldmVudFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCB1bmdldG1vdXNlKE1FVkVOVCAqZXZlbnQpO1xmUgorXGZCaW50IHVuZ2V0bW91c2UoTUVWRU5UICpcZlBcZklldmVudFxmUFxmQik7XGZSCiAuYnIKLVxmQm1tYXNrX3QgbW91c2VtYXNrKG1tYXNrX3QgbmV3bWFzaywgbW1hc2tfdCAqb2xkbWFzayk7XGZSCitcZkJtbWFza190IG1vdXNlbWFzayhtbWFza190IFxmUFxmSW5ld21hc2tcZlBcZkIsIG1tYXNrX3QgKlxmUFxmSW9sZG1hc2tcZlBcZkIpO1xmUgogLmJyCi1cZkJib29sIHdlbmNsb3NlKGNvbnN0IFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgpO1xmUgorXGZCYm9vbCB3ZW5jbG9zZShjb25zdCBXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgaW50IFxmUFxmSXlcZlBcZkIsIGludCBcZlBcZkl4XGZQXGZCKTtcZlIKIC5icgotXGZCYm9vbCBtb3VzZV90cmFmbyhpbnQqIHBZLCBpbnQqIHBYLCBib29sIHRvX3NjcmVlbik7XGZSCitcZkJib29sIG1vdXNlX3RyYWZvKGludCogXGZQXGZJcFlcZlBcZkIsIGludCogXGZQXGZJcFhcZlBcZkIsIGJvb2wgXGZQXGZJdG9fc2NyZWVuXGZQXGZCKTtcZlIKIC5icgotXGZCYm9vbCB3bW91c2VfdHJhZm8oY29uc3QgV0lORE9XKiB3aW4sIGludCogcFksIGludCogcFgsXGZSCitcZkJib29sIHdtb3VzZV90cmFmbyhjb25zdCBXSU5ET1cqIFxmUFxmSXdpblxmUFxmQiwgaW50KiBcZlBcZklwWVxmUFxmQiwgaW50KiBcZlBcZklwWFxmUFxmQixcZlIKIC5icgotCVxmQmJvb2wgdG9fc2NyZWVuKTtcZlIKKwlcZkJib29sIFxmUFxmSXRvX3NjcmVlblxmUFxmQik7XGZSCiAuYnIKLVxmQmludCBtb3VzZWludGVydmFsKGludCBlcnZhbCk7XGZSCitcZkJpbnQgbW91c2VpbnRlcnZhbChpbnQgXGZQXGZJZXJ2YWxcZlBcZkIpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KIFRoZXNlIGZ1bmN0aW9ucyBwcm92aWRlIGFuIGludGVyZmFjZSB0byBtb3VzZSBldmVudHMgZnJvbQogXGZCbmN1cnNlc1xmUigzWCkuCiBNb3VzZSBldmVudHMgYXJlIHJlcHJlc2VudGVkIGJ5IFxmQktFWV9NT1VTRVxmUgogcHNldWRvLWtleSB2YWx1ZXMgaW4gdGhlIFxmQndnZXRjaFxmUiBpbnB1dCBzdHJlYW0uCisuU1MgbW91c2VtYXNrCiAuUFAKIFRvIG1ha2UgbW91c2UgZXZlbnRzIHZpc2libGUsIHVzZSB0aGUgXGZCbW91c2VtYXNrXGZSIGZ1bmN0aW9uLgogVGhpcyB3aWxsIHNldApAQCAtODgsNiArOTMsNyBAQAogQXMgYSBzaWRlIGVmZmVjdCwgc2V0dGluZyBhIHplcm8gbW91c2VtYXNrIG1heSB0dXJuIG9mZiB0aGUgbW91c2UgcG9pbnRlcjsKIHNldHRpbmcgYSBub256ZXJvIG1hc2sgbWF5IHR1cm4gaXQgb24uCiBXaGV0aGVyIHRoaXMgaGFwcGVucyBpcyBkZXZpY2UtZGVwZW5kZW50LgorLlNTIE1vdXNlIGV2ZW50cwogLlBQCiBIZXJlIGFyZSB0aGUgbW91c2UgZXZlbnQgdHlwZSBtYXNrcyB3aGljaCBtYXkgYmUgZGVmaW5lZDoKIC5QUApAQCAtMTMzLDggKzEzOSw5IEBACiBSRVBPUlRfTU9VU0VfUE9TSVRJT04JcmVwb3J0IG1vdXNlIG1vdmVtZW50CiBfCiAuVEUKKy5TUyBnZXRtb3VzZQogLlBQCi1PbmNlIGEgY2xhc3Mgb2YgbW91c2UgZXZlbnRzIGhhdmUgYmVlbiBtYWRlIHZpc2libGUgaW4gYSB3aW5kb3csCitPbmNlIGEgY2xhc3Mgb2YgbW91c2UgZXZlbnRzIGhhcyBiZWVuIG1hZGUgdmlzaWJsZSBpbiBhIHdpbmRvdywKIGNhbGxpbmcgdGhlIFxmQndnZXRjaFxmUiBmdW5jdGlvbiBvbiB0aGF0IHdpbmRvdyBtYXkgcmV0dXJuCiBcZkJLRVlfTU9VU0VcZlIgYXMgYW4gaW5kaWNhdG9yIHRoYXQgYSBtb3VzZSBldmVudCBoYXMgYmVlbiBxdWV1ZWQuCiBUbyByZWFkIHRoZSBldmVudCBkYXRhIGFuZCBwb3AgdGhlIGV2ZW50IG9mZiB0aGUgcXVldWUsIGNhbGwKQEAgLTE0Niw1NiArMTUzLDcyIEBACiBjb29yZGluYXRlcy4KIFRoZSByZXR1cm5lZCBzdGF0ZSBtYXNrIHdpbGwgaGF2ZSBleGFjdGx5IG9uZSBiaXQgc2V0IHRvCiBpbmRpY2F0ZSB0aGUgZXZlbnQgdHlwZS4KK1RoZSBjb3JyZXNwb25kaW5nIGRhdGEgaW4gdGhlIHF1ZXVlIGlzIG1hcmtlZCBpbnZhbGlkLgorQSBzdWJzZXF1ZW50IGNhbGwgdG8gXGZCZ2V0bW91c2VcZlAgd2lsbCByZXRyaWV2ZSB0aGUgbmV4dCBvbGRlcgoraXRlbSBmcm9tIHRoZSBxdWV1ZS4KKy5TUyB1bmdldG1vdXNlCiAuUFAKIFRoZSBcZkJ1bmdldG1vdXNlXGZSIGZ1bmN0aW9uIGJlaGF2ZXMgYW5hbG9nb3VzbHkgdG8gXGZCdW5nZXRjaFxmUi4KIEl0IHB1c2hlcwogYSBcZkJLRVlfTU9VU0VcZlIgZXZlbnQgb250byB0aGUgaW5wdXQgcXVldWUsIGFuZCBhc3NvY2lhdGVzIHdpdGggdGhhdCBldmVudAogdGhlIGdpdmVuIHN0YXRlIGRhdGEgYW5kIHNjcmVlbi1yZWxhdGl2ZSBjaGFyYWN0ZXItY2VsbCBjb29yZGluYXRlcy4KKy5TUyB3ZW5jbG9zZQogLlBQCiBUaGUgXGZCd2VuY2xvc2VcZlIgZnVuY3Rpb24gdGVzdHMgd2hldGhlciBhIGdpdmVuIHBhaXIgb2Ygc2NyZWVuLXJlbGF0aXZlCi1jaGFyYWN0ZXItY2VsbCBjb29yZGluYXRlcyBpcyBlbmNsb3NlZCBieSBhIGdpdmVuIHdpbmRvdywgcmV0dXJuaW5nIFRSVUUKLWlmIGl0IGlzIGFuZCBGQUxTRSBvdGhlcndpc2UuCitjaGFyYWN0ZXItY2VsbCBjb29yZGluYXRlcyBpcyBlbmNsb3NlZCBieSBhIGdpdmVuIHdpbmRvdywgcmV0dXJuaW5nIFxmQlRSVUVcZlAKK2lmIGl0IGlzIGFuZCBcZkJGQUxTRVxmUCBvdGhlcndpc2UuCiBJdCBpcyB1c2VmdWwgZm9yIGRldGVybWluaW5nIHdoYXQgc3Vic2V0IG9mCiB0aGUgc2NyZWVuIHdpbmRvd3MgZW5jbG9zZSB0aGUgbG9jYXRpb24gb2YgYSBtb3VzZSBldmVudC4KKy5TUyB3bW91c2VfdHJhZm8KIC5QUAogVGhlIFxmQndtb3VzZV90cmFmb1xmUiBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgZ2l2ZW4gcGFpciBvZiBjb29yZGluYXRlcwogZnJvbSBzdGRzY3ItcmVsYXRpdmUgY29vcmRpbmF0ZXMKIHRvIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiB3aW5kb3cgb3IgdmljZSB2ZXJzYS4KLVBsZWFzZSByZW1lbWJlciwgdGhhdCBzdGRzY3ItcmVsYXRpdmUgY29vcmRpbmF0ZXMgYXJlIG5vdCBhbHdheXMgaWRlbnRpY2FsCitUaGUgcmVzdWx0aW5nIHN0ZHNjci1yZWxhdGl2ZSBjb29yZGluYXRlcyBhcmUgbm90IGFsd2F5cyBpZGVudGljYWwKIHRvIHdpbmRvdy1yZWxhdGl2ZSBjb29yZGluYXRlcyBkdWUgdG8gdGhlIG1lY2hhbmlzbSB0byByZXNlcnZlIGxpbmVzIG9uIHRvcAogb3IgYm90dG9tIG9mIHRoZSBzY3JlZW4gZm9yIG90aGVyIHB1cnBvc2VzCi0oc2VlIHRoZSBcZkJyaXBvZmZsaW5lKClcZlAgYW5kIFxmQnNsa19pbml0XGZSIGNhbGxzLCBmb3IgZXhhbXBsZSkuCisoc2VlIHRoZSBcZkJyaXBvZmZsaW5lXGZQIGFuZCBcZkJzbGtfaW5pdFxmUiBjYWxscywgZm9yIGV4YW1wbGUpLgorLmJQCiBJZiB0aGUgcGFyYW1ldGVyIFxmQnRvX3NjcmVlblxmUiBpcyBcZkJUUlVFXGZSLCB0aGUgcG9pbnRlcnMKIFxmQnBZLCBwWFxmUiBtdXN0IHJlZmVyZW5jZSB0aGUgY29vcmRpbmF0ZXMgb2YgYSBsb2NhdGlvbgogaW5zaWRlIHRoZSB3aW5kb3cgXGZCd2luXGZSLgogVGhleSBhcmUgY29udmVydGVkIHRvIHdpbmRvdy1yZWxhdGl2ZSBjb29yZGluYXRlcyBhbmQgcmV0dXJuZWQKIHRocm91Z2ggdGhlIHBvaW50ZXJzLgogSWYgdGhlIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIFxmQlRSVUVcZlIuCisuYlAKIElmIG9uZSBvZiB0aGUgcGFyYW1ldGVycyB3YXMgTlVMTCBvciB0aGUgbG9jYXRpb24gaXMKIG5vdCBpbnNpZGUgdGhlIHdpbmRvdywgXGZCRkFMU0VcZlIgaXMgcmV0dXJuZWQuCisuYlAKIElmIFxmQnRvX3NjcmVlblxmUiBpcwogXGZCRkFMU0VcZlIsIHRoZSBwb2ludGVycyBcZkJwWSwgcFhcZlIgbXVzdCByZWZlcmVuY2Ugd2luZG93LXJlbGF0aXZlCiBjb29yZGluYXRlcy4KIFRoZXkgYXJlIGNvbnZlcnRlZCB0byBzdGRzY3ItcmVsYXRpdmUgY29vcmRpbmF0ZXMgaWYgdGhlCiB3aW5kb3cgXGZCd2luXGZSIGVuY2xvc2VzIHRoaXMgcG9pbnQuCiBJbiB0aGlzIGNhc2UgdGhlIGZ1bmN0aW9uIHJldHVybnMgXGZCVFJVRVxmUi4KKy5iUAogSWYgb25lIG9mIHRoZSBwYXJhbWV0ZXJzIGlzIE5VTEwgb3IgdGhlIHBvaW50IGlzIG5vdCBpbnNpZGUgdGhlCiB3aW5kb3csIFxmQkZBTFNFXGZSIGlzIHJldHVybmVkLgotUGxlYXNlIG5vdGljZSwgdGhhdCB0aGUgcmVmZXJlbmNlZCBjb29yZGluYXRlcworVGhlIHJlZmVyZW5jZWQgY29vcmRpbmF0ZXMKIGFyZSBvbmx5IHJlcGxhY2VkIGJ5IHRoZSBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIHdhcwogc3VjY2Vzc2Z1bC4KKy5TUyBtb3VzZV90cmFmbwogLlBQCiBUaGUgXGZCbW91c2VfdHJhZm9cZlIgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIHNhbWUgdHJhbnNsYXRpb24KIGFzIFxmQndtb3VzZV90cmFmb1xmUiwKIHVzaW5nIHN0ZHNjciBmb3IgXGZCd2luXGZSLgorLlNTIG1vdXNlaW50ZXJ2YWwKIC5QUAogVGhlIFxmQm1vdXNlaW50ZXJ2YWxcZlIgZnVuY3Rpb24gc2V0cyB0aGUgbWF4aW11bSB0aW1lIChpbiB0aG91c2FuZHMgb2YgYQogc2Vjb25kKSB0aGF0IGNhbiBlbGFwc2UgYmV0d2VlbiBwcmVzcyBhbmQgcmVsZWFzZSBldmVudHMgZm9yIHRoZW0gdG8KIGJlIHJlY29nbml6ZWQgYXMgYSBjbGljay4KIFVzZSBcZkJtb3VzZWludGVydmFsKDApXGZSIHRvIGRpc2FibGUgY2xpY2sgcmVzb2x1dGlvbi4KIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcHJldmlvdXMgaW50ZXJ2YWwgdmFsdWUuCi1Vc2UgXGZCbW91c2VpbnRlcnZhbCgtMSlcZlIgdG8gb2J0YWluIHRoZSBpbnRlcnZhbCB3aXRob3V0IGFsdGVyaW5nIGl0LgorVXNlIFxmQm1vdXNlaW50ZXJ2YWwoXC0xKVxmUiB0byBvYnRhaW4gdGhlIGludGVydmFsIHdpdGhvdXQgYWx0ZXJpbmcgaXQuCiBUaGUgZGVmYXVsdCBpcyBvbmUgc2l4dGggb2YgYSBzZWNvbmQuCisuU1MgaGFzX21vdXNlCisuUFAKK1RoZSBcZkJoYXNfbW91c2VcZlAgZnVuY3Rpb24gcmV0dXJucyBcZkJUUlVFXGZQIGlmIHRoZSBtb3VzZSBkcml2ZXIgaGFzIGJlZW4KK3N1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KIC5QUAogTm90ZSB0aGF0IG1vdXNlIGV2ZW50cyB3aWxsIGJlIGlnbm9yZWQgd2hlbiBpbnB1dCBpcyBpbiBjb29rZWQgbW9kZSwgYW5kIHdpbGwKIGNhdXNlIGFuIGVycm9yIGJlZXAgd2hlbiBjb29rZWQgbW9kZSBpcyBiZWluZyBzaW11bGF0ZWQgaW4gYSB3aW5kb3cgYnkgYQpAQCAtMjA0LDEzICsyMjcsMTYgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFxmQmdldG1vdXNlXGZSIGFuZCBcZkJ1bmdldG1vdXNlXGZSCiByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBvciBcZkJPS1xmUgotdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uCi0uUlMKK3Vwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uOgorLlJTIDMKIC5UUCA1CiBcZkJnZXRtb3VzZVxmUAogcmV0dXJucyBhbiBlcnJvci4KKy5iUAogSWYgbm8gbW91c2UgZHJpdmVyIHdhcyBpbml0aWFsaXplZCwgb3IKIGlmIHRoZSBtYXNrIHBhcmFtZXRlciBpcyB6ZXJvLAorLmJQCitJdCBhbHNvIHJldHVybnMgYW4gZXJyb3IgaWYgbm8gbW9yZSBldmVudHMgcmVtYWluIGluIHRoZSBxdWV1ZS4KIC5UUCA1CiBcZkJ1bmdldG1vdXNlXGZQCiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBGSUZPIGlzIGZ1bGwuCkBAIC0yMzcsNyArMjYzLDcgQEAKIGluY3JlbWVudGVkLgogVGhlc2UgdmFsdWVzIGZvciBcZkJOQ1VSU0VTX01PVVNFX1ZFUlNJT05cZlIgbWF5IGJlCiBzcGVjaWZpZWQgd2hlbiBjb25maWd1cmluZyBuY3Vyc2VzOgotLlJTCisuUlMgMwogLlRQIDMKIDEKIGhhcyBkZWZpbml0aW9ucyBmb3IgcmVzZXJ2ZWQgZXZlbnRzLgpAQCAtMjU1LDEzICsyODEsMTUgQEAKIFVuZGVyIFxmQm5jdXJzZXNcZlIoM1gpLCB0aGVzZSBjYWxscyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgZWl0aGVyCiB4dGVybSdzIGJ1aWx0LWluIG1vdXNlLXRyYWNraW5nIEFQSSBvcgogcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVycyBpbmNsdWRpbmcKLS5SUwotQWxlc3NhbmRybyBSdWJpbmkncyBncG0gc2VydmVyLgotLmJyCisuUlMgMworLmJQCitBbGVzc2FuZHJvIFJ1YmluaSdzIGdwbSBzZXJ2ZXIKKy5iUAogRnJlZUJTRCBzeXNtb3VzZQotLmJyCisuYlAKIE9TLzIgRU1YCiAuUkUKKy5QUAogSWYgeW91IGFyZSB1c2luZyBhbiB1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uLAogbW91c2UgZXZlbnRzIHdpbGwgbm90IGJlIHZpc2libGUgdG8KIFxmQm5jdXJzZXNcZlIoM1gpIChhbmQgdGhlIFxmQm1vdXNlbWFza1xmUiBmdW5jdGlvbiB3aWxsIGFsd2F5cwpAQCAtMjcyLDEzICszMDAsMjEgQEAKIHdheSB0aGUgdGVybWluYWwgaXMgaW5pdGlhbGl6ZWQgZm9yIG1vdXNlIG9wZXJhdGlvbi4KIFRoZSBkZWZhdWx0LCBpZiBcZkJYTVxmUiBpcyBub3QgZm91bmQsCiBjb3JyZXNwb25kcyB0byBwcml2YXRlIG1vZGUgMTAwMCBvZiB4dGVybToKLS5SUworLlBQCisuUlMgMwogXFxFWz8xMDAwJT8lcDElezF9JT0ldGglZWwlOwogLlJFCi1UaGUgeiBtZW1iZXIgaW4gdGhlIGV2ZW50IHN0cnVjdHVyZSBpcyBub3QgcHJlc2VudGx5IHVzZWQuCisuUFAKK1RoZSBcZkl6XGZQIG1lbWJlciBpbiB0aGUgZXZlbnQgc3RydWN0dXJlIGlzIG5vdCBwcmVzZW50bHkgdXNlZC4KIEl0IGlzIGludGVuZGVkCiBmb3IgdXNlIHdpdGggdG91Y2ggc2NyZWVucyAod2hpY2ggbWF5IGJlIHByZXNzdXJlLXNlbnNpdGl2ZSkgb3Igd2l0aAogM0QtbWljZS90cmFja2JhbGxzL3Bvd2VyIGdsb3Zlcy4KKy5QUAorVGhlIFxmQkFMTF9NT1VTRV9FVkVOVFNcZlAgY2xhc3MgZG9lcyBub3QgaW5jbHVkZSBcZkJSRVBPUlRfTU9VU0VfUE9TSVRJT05cZlAuCitUaGV5IGFyZSBkaXN0aW5jdC4KK0ZvciBleGFtcGxlLCBpbiB4dGVybSwKK3doZWVsL3Njcm9sbGluZyBtaWNlIHNlbmQgcG9zaXRpb24gcmVwb3J0cyBhcyBhIHNlcXVlbmNlIG9mCitwcmVzc2VzIG9mIGJ1dHRvbnMgNCBvciA1IHdpdGhvdXQgbWF0Y2hpbmcgYnV0dG9uLXJlbGVhc2VzLgogLlNIIEJVR1MKIE1vdXNlIGV2ZW50cyB1bmRlciB4dGVybSB3aWxsIG5vdCBpbiBmYWN0IGJlIGlnbm9yZWQgZHVyaW5nIGNvb2tlZCBtb2RlLAogaWYgdGhleSBoYXZlIGJlZW4gZW5hYmxlZCBieSBcZkJtb3VzZW1hc2tcZlIuCkBAIC0zMDEsMTAgKzMzNyw1IEBACiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksCiBcZkJjdXJzX2tlcm5lbFxmUigzWCksCi1cZkJjdXJzX3Nsa1xmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNfc2xrXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX21vdmUuM3ggYi9tYW4vY3Vyc19tb3ZlLjN4CmluZGV4IDgwNDYzNzcuLjIyNjU5NWMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX21vdmUuM3gKKysrIGIvbWFuL2N1cnNfbW92ZS4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDEzICsyNiwxMyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19tb3ZlLjN4LHYgMS4xMiAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19tb3ZlLjN4LHYgMS4xNCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGN1cnNfbW92ZSAzWCAiIgogLm5hCiAuaHkgMAogLlNIIE5BTUUKIFxmQm1vdmVcZlIsCi1cZkJ3bW92ZVxmUiAtIG1vdmUgXGZCY3Vyc2VzXGZSIHdpbmRvdyBjdXJzb3IKK1xmQndtb3ZlXGZSIFwtIG1vdmUgXGZCY3Vyc2VzXGZSIHdpbmRvdyBjdXJzb3IKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKQEAgLTYxLDkgKzYxLDMgQEAKIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX3JlZnJlc2hcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX29wYXF1ZS4zeCBiL21hbi9jdXJzX29wYXF1ZS4zeAppbmRleCA2YzljZmFhLi5iMzk1OTUwIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19vcGFxdWUuM3gKKysrIGIvbWFuL2N1cnNfb3BhcXVlLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsOCArMjYsMTIgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfb3BhcXVlLjN4LHYgMS42IDIwMDcvMDkvMDggMTg6NDk6MTMgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX29wYXF1ZS4zeCx2IDEuMTIgMjAxNS8wNC8xMSAxMDoyMzo0OSB0b20gRXhwICQKIC5USCBjdXJzX29wYXF1ZSAzWCAiIgorLmllIFxuKC5nIC5kcyBgYCBcKGxxCisuZWwgICAgICAgLmRzIGBgIGBgCisuaWUgXG4oLmcgLmRzICcnIFwocnEKKy5lbCAgICAgICAuZHMgJycgJycKIC5uYQogLmh5IDAKIC5TSCBOQU1FCkBAIC0zOCw5ICs0MiwxMSBAQAogXGZCaXNfa2V5cGFkXGZSLAogXGZCaXNfbGVhdmVva1xmUiwKIFxmQmlzX25vZGVsYXlcZlIsCi1cZkJpc190aW1lb3V0XGZSLAorXGZCaXNfbm90aW1lb3V0XGZSLAorXGZCaXNfcGFkXGZSLAogXGZCaXNfc2Nyb2xsb2tcZlIsCi1cZkJpc19zeW5jb2tcZlIgLSBcZkJjdXJzZXNcZlIgd2luZG93IHByb3BlcnRpZXMKK1xmQmlzX3N1YndpblxmUiwKK1xmQmlzX3N5bmNva1xmUiBcLSBcZkJjdXJzZXNcZlIgd2luZG93IHByb3BlcnRpZXMKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKQEAgLTYyLDE3ICs2OCwyMyBAQAogLmJyCiBcZkJib29sIGlzX25vdGltZW91dChjb25zdCBXSU5ET1cgKndpbik7XGZSCiAuYnIKK1xmQmJvb2wgaXNfcGFkKGNvbnN0IFdJTkRPVyAqd2luKTtcZlIKKy5icgogXGZCYm9vbCBpc19zY3JvbGxvayhjb25zdCBXSU5ET1cgKndpbik7XGZSCiAuYnIKK1xmQmJvb2wgaXNfc3Vid2luKGNvbnN0IFdJTkRPVyAqd2luKTtcZlIKKy5icgogXGZCYm9vbCBpc19zeW5jb2soY29uc3QgV0lORE9XICp3aW4pO1xmUgogLmJyCiBcZkJXSU5ET1cgKiB3Z2V0cGFyZW50KGNvbnN0IFdJTkRPVyAqd2luKTtcZlIKIC5icgorXGZCaW50IHdnZXRkZWxheShjb25zdCBXSU5ET1cgKndpbik7XGZSCisuYnIKIFxmQmludCB3Z2V0c2NycmVnKGNvbnN0IFdJTkRPVyAqd2luLCBpbnQgKnRvcCwgaW50ICpib3R0b20pO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KIFRoaXMgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgZnVuY3Rpb25zIHdoaWNoIHJldHVybiBwcm9wZXJ0aWVzCi1zZXQgaW4gdGhlIFdJTkRPVyBzdHJ1Y3R1cmUsIGFsbG93aW5nIGl0IHRvIGJlIGBgb3BhcXVlJycgaWYKK3NldCBpbiB0aGUgV0lORE9XIHN0cnVjdHVyZSwgYWxsb3dpbmcgaXQgdG8gYmUgXCooYGBvcGFxdWVcKignJyBpZgogdGhlIHN5bWJvbCBcZkJOQ1VSU0VTX09QQVFVRVxmUiBpcyBkZWZpbmVkOgogLlRQIDUKIFxmQmlzX2NsZWFyZWRcZlIKQEAgLTk5LDIwICsxMTEsMzIgQEAKIFxmQmlzX25vdGltZW91dFxmUgogcmV0dXJucyB0aGUgdmFsdWUgc2V0IGluIFxmQm5vdGltZW91dFxmUgogLlRQIDUKK1xmQmlzX3BhZFxmUgorcmV0dXJucyBcZkJUUlVFXGZQIGlmIHRoZSB3aW5kb3cgaXMgYSBwYWQKK2kuZS4sIGNyZWF0ZWQgYnkgXGZCbmV3cGFkXGZQCisuVFAgNQogXGZCaXNfc2Nyb2xsb2tcZlIKIHJldHVybnMgdGhlIHZhbHVlIHNldCBpbiBcZkJzY3JvbGxva1xmUgogLlRQIDUKK1xmQmlzX3N1YndpblxmUgorcmV0dXJucyBcZkJUUlVFXGZQIGlmIHRoZSB3aW5kb3cgaXMgYSBzdWJ3aW5kb3csCitpLmUuLCBjcmVhdGVkIGJ5IFxmQnN1YndpblxmUCBvciBcZkJkZXJ3aW5cZlAKKy5UUCA1CiBcZkJpc19zeW5jb2tcZlIKIHJldHVybnMgdGhlIHZhbHVlIHNldCBpbiBcZkJzeW5jb2tcZlIKIC5UUCA1CitcZkJ3Z2V0ZGVsYXlcZlIKK3JldHVybnMgdGhlIGRlbGF5IHRpbWVvdXQgYXMgc2V0IGluIFxmQnd0aW1lb3V0XGZQLgorLlRQIDUKIFxmQndnZXRwYXJlbnRcZlIKIHJldHVybnMgdGhlIHBhcmVudCBXSU5ET1cgcG9pbnRlciBmb3Igc3Vid2luZG93cywKIG9yIE5VTEwgZm9yIHdpbmRvd3MgaGF2aW5nIG5vIHBhcmVudC4KIC5UUCA1CiBcZkJ3Z2V0c2NycmVnXGZSCi1yZXR1cm5zIHRoZSB0b3AgYW5kIGJvdHRvbSByb3dzIGZvciB0aGUgc2Nyb2xsaW5nIG1hcmdpbiBhcyBzZXQgaW4gXGZCd3NldHNjcnJlZ1xmUC4KK3JldHVybnMgdGhlIHRvcCBhbmQgYm90dG9tIHJvd3MgZm9yIHRoZSBzY3JvbGxpbmcgbWFyZ2luCithcyBzZXQgaW4gXGZCd3NldHNjcnJlZ1xmUC4KIC5TSCBSRVRVUk4gVkFMVUUKLVRoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFRSVUUgb3IgRkFMU0UsIGV4Y2VwdCBhcyBub3RlZC4KK1RoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFxmQlRSVUVcZlAgb3IgXGZCRkFMU0VcZlAsIGV4Y2VwdCBhcyBub3RlZC4KIC5TSCBOT1RFUwogQm90aCBhIG1hY3JvIGFuZCBhIGZ1bmN0aW9uIGFyZSBwcm92aWRlZCBmb3IgZWFjaCBuYW1lLgogLlNIIFBPUlRBQklMSVRZCkBAIC0xMjUsOSArMTQ5LDMgQEAKIFxmQmN1cnNfaW5vcHRzXGZSKDNYKSwKIFxmQmN1cnNfb3V0b3B0c1xmUigzWCksCiBcZkJjdXJzX3dpbmRvd1xmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfb3V0b3B0cy4zeCBiL21hbi9jdXJzX291dG9wdHMuM3gKaW5kZXggM2ZkNDM3YS4uZjZkNDI1YiAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfb3V0b3B0cy4zeAorKysgYi9tYW4vY3Vyc19vdXRvcHRzLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19vdXRvcHRzLjN4LHYgMS4yMSAyMDA3LzA2LzAyIDIwOjQwOjA3IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19vdXRvcHRzLjN4LHYgMS4yNiAyMDE1LzA3LzIxIDAwOjIzOjQzIHRvbSBFeHAgJAogLlRIIGN1cnNfb3V0b3B0cyAzWCAiIgogLm5hCiAuaHkgMApAQCAtNDAsMjcgKzQwLDI3IEBACiBcZkJ3c2V0c2NycmVnXGZSLAogXGZCc2Nyb2xsb2tcZlIsCiBcZkJubFxmUiwKLVxmQm5vbmxcZlIgLSBcZkJjdXJzZXNcZlIgb3V0cHV0IG9wdGlvbnMKK1xmQm5vbmxcZlIgXC0gXGZCY3Vyc2VzXGZSIG91dHB1dCBvcHRpb25zCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKLVxmQmludCBjbGVhcm9rKFdJTkRPVyAqd2luLCBib29sIGJmKTtcZlIKK1xmQmludCBjbGVhcm9rKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCLCBib29sIFxmUFxmSWJmXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IGlkbG9rKFdJTkRPVyAqd2luLCBib29sIGJmKTtcZlIKK1xmQmludCBpZGxvayhXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgYm9vbCBcZlBcZkliZlxmUFxmQik7XGZSCiAuYnIKLVxmQnZvaWQgaWRjb2soV0lORE9XICp3aW4sIGJvb2wgYmYpO1xmUgorXGZCdm9pZCBpZGNvayhXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgYm9vbCBcZlBcZkliZlxmUFxmQik7XGZSCiAuYnIKLVxmQnZvaWQgaW1tZWRvayhXSU5ET1cgKndpbiwgYm9vbCBiZik7XGZSCitcZkJ2b2lkIGltbWVkb2soV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGJvb2wgXGZQXGZJYmZcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgbGVhdmVvayhXSU5ET1cgKndpbiwgYm9vbCBiZik7XGZSCitcZkJpbnQgbGVhdmVvayhXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgYm9vbCBcZlBcZkliZlxmUFxmQik7XGZSCiAuYnIKLVxmQmludCBzZXRzY3JyZWcoaW50IHRvcCwgaW50IGJvdCk7XGZSCitcZkJpbnQgc2V0c2NycmVnKGludCBcZlBcZkl0b3BcZlBcZkIsIGludCBcZlBcZklib3RcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgd3NldHNjcnJlZyhXSU5ET1cgKndpbiwgaW50IHRvcCwgaW50IGJvdCk7XGZSCitcZkJpbnQgd3NldHNjcnJlZyhXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgaW50IFxmUFxmSXRvcFxmUFxmQiwgaW50IFxmUFxmSWJvdFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCBzY3JvbGxvayhXSU5ET1cgKndpbiwgYm9vbCBiZik7XGZSCitcZkJpbnQgc2Nyb2xsb2soV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGJvb2wgXGZQXGZJYmZcZlBcZkIpO1xmUgogLmJyCiBcZkJpbnQgbmwodm9pZCk7XGZSCiAuYnIKQEAgLTcxLDYgKzcxLDcgQEAKIFxmQmN1cnNlc1xmUi4KIEFsbCBvcHRpb25zIGFyZSBpbml0aWFsbHkgXGZCRkFMU0VcZlIsIHVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLgogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byB0dXJuIHRoZXNlIG9wdGlvbnMgb2ZmIGJlZm9yZSBjYWxsaW5nIFxmQmVuZHdpblxmUi4KKy5TUyBjbGVhcm9rCiAuUFAKIElmIFxmQmNsZWFyb2tcZlIgaXMgY2FsbGVkIHdpdGggXGZCVFJVRVxmUiBhcyBhcmd1bWVudCwgdGhlIG5leHQKIGNhbGwgdG8gXGZCd3JlZnJlc2hcZlIgd2l0aCB0aGlzIHdpbmRvdyB3aWxsIGNsZWFyIHRoZSBzY3JlZW4gY29tcGxldGVseSBhbmQKQEAgLTgxLDYgKzgyLDcgQEAKIHRoZSBcZkl3aW5cZlIgYXJndW1lbnQgdG8gXGZCY2xlYXJva1xmUiBpcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIFxmQmN1cnNjclxmUiwKIHRoZSBuZXh0IGNhbGwgdG8gXGZCd3JlZnJlc2hcZlIgd2l0aCBhbnkgd2luZG93IGNhdXNlcyB0aGUgc2NyZWVuIHRvIGJlIGNsZWFyZWQKIGFuZCByZXBhaW50ZWQgZnJvbSBzY3JhdGNoLgorLlNTIGlkbG9rCiAuUFAKIElmIFxmQmlkbG9rXGZSIGlzIGNhbGxlZCB3aXRoIFxmQlRSVUVcZlIgYXMgc2Vjb25kIGFyZ3VtZW50LCBcZkJjdXJzZXNcZlIKIGNvbnNpZGVycyB1c2luZyB0aGUgaGFyZHdhcmUgaW5zZXJ0L2RlbGV0ZSBsaW5lIGZlYXR1cmUgb2YgdGVybWluYWxzIHNvCkBAIC05NCw2ICs5Niw3IEBACiB3aGVuIHVzZWQgaW4gYXBwbGljYXRpb25zIHdoZXJlIGl0IGlzIG5vdCByZWFsbHkgbmVlZGVkLgogSWYgaW5zZXJ0L2RlbGV0ZSBsaW5lCiBjYW5ub3QgYmUgdXNlZCwgXGZCY3Vyc2VzXGZSIHJlZHJhd3MgdGhlIGNoYW5nZWQgcG9ydGlvbnMgb2YgYWxsIGxpbmVzLgorLlNTIGlkY29rCiAuUFAKIElmIFxmQmlkY29rXGZSIGlzIGNhbGxlZCB3aXRoIFxmQkZBTFNFXGZSIGFzIHNlY29uZCBhcmd1bWVudCwgXGZCY3Vyc2VzXGZSCiBubyBsb25nZXIgY29uc2lkZXJzIHVzaW5nIHRoZSBoYXJkd2FyZSBpbnNlcnQvZGVsZXRlIGNoYXJhY3RlciBmZWF0dXJlIG9mCkBAIC0xMDEsNiArMTA0LDcgQEAKIFVzZSBvZiBjaGFyYWN0ZXIgaW5zZXJ0L2RlbGV0ZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCiBDYWxsaW5nIFxmQmlkY29rXGZSIHdpdGggXGZCVFJVRVxmUiBhcyBzZWNvbmQgYXJndW1lbnQgcmUtZW5hYmxlcyB1c2UKIG9mIGNoYXJhY3RlciBpbnNlcnRpb24gYW5kIGRlbGV0aW9uLgorLlNTIGltbWVkb2sKIC5QUAogSWYgXGZCaW1tZWRva1xmUiBpcyBjYWxsZWQgd2l0aCBcZkJUUlVFIGFzIGFyZ3VtZW50XGZSLCBhbnkgY2hhbmdlCiBpbiB0aGUgd2luZG93IGltYWdlLCBzdWNoIGFzIHRoZSBvbmVzIGNhdXNlZCBieSBcZkJ3YWRkY2gsIHdjbHJ0b2JvdCwgd3NjcmxcZlIsCkBAIC0xMDgsNiArMTEyLDcgQEAKIEhvd2V2ZXIsIGl0IG1heQogZGVncmFkZSBwZXJmb3JtYW5jZSBjb25zaWRlcmFibHksIGR1ZSB0byByZXBlYXRlZCBjYWxscyB0byBcZkJ3cmVmcmVzaFxmUi4KIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisuU1MgbGVhdmVvawogLlBQCiBOb3JtYWxseSwgdGhlIGhhcmR3YXJlIGN1cnNvciBpcyBsZWZ0IGF0IHRoZSBsb2NhdGlvbiBvZiB0aGUgd2luZG93IGN1cnNvcgogYmVpbmcgcmVmcmVzaGVkLgpAQCAtMTE1LDExICsxMjAsMTMgQEAKIHdoZXJldmVyIHRoZSB1cGRhdGUgaGFwcGVucyB0byBsZWF2ZSBpdC4KIEl0IGlzIHVzZWZ1bCBmb3IgYXBwbGljYXRpb25zIHdoZXJlCiB0aGUgY3Vyc29yIGlzIG5vdCB1c2VkLCBzaW5jZSBpdCByZWR1Y2VzIHRoZSBuZWVkIGZvciBjdXJzb3IgbW90aW9ucy4KKy5TUyBzZXRzY3JyZWcKIC5QUAogVGhlIFxmQnNldHNjcnJlZ1xmUiBhbmQgXGZCd3NldHNjcnJlZ1xmUiByb3V0aW5lcyBhbGxvdyB0aGUgYXBwbGljYXRpb24KIHByb2dyYW1tZXIgdG8gc2V0IGEgc29mdHdhcmUgc2Nyb2xsaW5nIHJlZ2lvbiBpbiBhIHdpbmRvdy4KLVxmSXRvcFxmUiBhbmQKLVxmSWJvdFxmUiBhcmUgdGhlIGxpbmUgbnVtYmVycyBvZiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luIG9mIHRoZSBzY3JvbGxpbmcKK1RoZSBcZkl0b3BcZlIgYW5kCitcZklib3RcZlIgcGFyYW1ldGVycworYXJlIHRoZSBsaW5lIG51bWJlcnMgb2YgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbiBvZiB0aGUgc2Nyb2xsaW5nCiByZWdpb24uCiAoTGluZSAwIGlzIHRoZSB0b3AgbGluZSBvZiB0aGUgd2luZG93LikgIElmIHRoaXMgb3B0aW9uIGFuZAogXGZCc2Nyb2xsb2tcZlIgYXJlIGVuYWJsZWQsIGFuIGF0dGVtcHQgdG8gbW92ZSBvZmYgdGhlIGJvdHRvbSBtYXJnaW4gbGluZQpAQCAtMTMyLDYgKzEzOSw3IEBACiBJZiBcZkJpZGxva1xmUiBpcyBlbmFibGVkIGFuZCB0aGUgdGVybWluYWwKIGhhcyBlaXRoZXIgYSBzY3JvbGxpbmcgcmVnaW9uIG9yIGluc2VydC9kZWxldGUgbGluZSBjYXBhYmlsaXR5LCB0aGV5IHdpbGwKIHByb2JhYmx5IGJlIHVzZWQgYnkgdGhlIG91dHB1dCByb3V0aW5lcy4pCisuU1Mgc2Nyb2xsb2sKIC5QUAogVGhlIFxmQnNjcm9sbG9rXGZSIG9wdGlvbiBjb250cm9scyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgY3Vyc29yIG9mIGEgd2luZG93IGlzCiBtb3ZlZCBvZmYgdGhlIGVkZ2Ugb2YgdGhlIHdpbmRvdyBvciBzY3JvbGxpbmcgcmVnaW9uLCBlaXRoZXIgYXMgYSByZXN1bHQgb2YgYQpAQCAtMTQyLDYgKzE1MCw3IEBACiBJZiBlbmFibGVkLCAoXGZJYmZcZlIgaXMgXGZCVFJVRVxmUiksIHRoZSB3aW5kb3cgaXMgc2Nyb2xsZWQgdXAgb25lIGxpbmUKIChOb3RlIHRoYXQgdG8gZ2V0IHRoZSBwaHlzaWNhbCBzY3JvbGxpbmcgZWZmZWN0IG9uIHRoZSB0ZXJtaW5hbCwgaXQgaXMKIGFsc28gbmVjZXNzYXJ5IHRvIGNhbGwgXGZCaWRsb2tcZlIpLgorLlNTIG5sLCBub25sCiAuUFAKIFRoZSBcZkJubFxmUiBhbmQgXGZCbm9ubFxmUiByb3V0aW5lcyBjb250cm9sIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgZGlzcGxheQogZGV2aWNlIHRyYW5zbGF0ZXMgdGhlIHJldHVybiBrZXkgaW50byBuZXdsaW5lIG9uIGlucHV0LCBhbmQgd2hldGhlciBpdApAQCAtMTYwLDcgKzE2OSw3IEBACiBBbGwgb3RoZXIgcm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciBhbHdheXMKIHJldHVybiBcZkJPS1xmUi4KIC5QUAotWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KK1gvT3BlbiBDdXJzZXMgZG9lcyBub3QgZGVmaW5lIGFueSBlcnJvciBjb25kaXRpb25zLgogLlBQCiBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCB0aG9zZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgd2luZG93IHBvaW50ZXIKIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgpAQCAtMjEyLDExICsyMjEsMTEgQEAKIFRoZSBcZkJpbW1lZG9rXGZSIHJvdXRpbmUgaXMgdXNlZnVsIGZvciB3aW5kb3dzIHRoYXQgYXJlIHVzZWQgYXMgdGVybWluYWwKIGVtdWxhdG9ycy4KIC5TSCBTRUUgQUxTTwotXGZCY3Vyc2VzXGZSKDNYKSwgXGZCY3Vyc19hZGRjaFxmUigzWCksIFxmQmN1cnNfY2xlYXJcZlIoM1gpLAotXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwgXGZCY3Vyc19zY3JvbGxcZlIoM1gpLCBcZkJjdXJzX3JlZnJlc2hcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKKy5uYQorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmN1cnNfYWRkY2hcZlIoM1gpLAorXGZCY3Vyc19jbGVhclxmUigzWCksCitcZkJjdXJzX2luaXRzY3JcZlIoM1gpLAorXGZCY3Vyc19zY3JvbGxcZlIoM1gpLAorXGZCY3Vyc19yZWZyZXNoXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX292ZXJsYXkuM3ggYi9tYW4vY3Vyc19vdmVybGF5LjN4CmluZGV4IDA2NmMzYTQuLmUzZWQ2M2YgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX292ZXJsYXkuM3gKKysrIGIvbWFuL2N1cnNfb3ZlcmxheS4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDQwICsyNiw0NSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19vdmVybGF5LjN4LHYgMS4xNCAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19vdmVybGF5LjN4LHYgMS4xOCAyMDE1LzA3LzIxIDAwOjUxOjMxIHRvbSBFeHAgJAogLlRIIGN1cnNfb3ZlcmxheSAzWCAiIgogLm5hCiAuaHkgMAogLlNIIE5BTUUKIFxmQm92ZXJsYXlcZlIsCiBcZkJvdmVyd3JpdGVcZlIsCi1cZkJjb3B5d2luXGZSIC0gb3ZlcmxheSBhbmQgbWFuaXB1bGF0ZSBvdmVybGFwcGVkIFxmQmN1cnNlc1xmUiB3aW5kb3dzCitcZkJjb3B5d2luXGZSIFwtIG92ZXJsYXkgYW5kIG1hbmlwdWxhdGUgb3ZlcmxhcHBlZCBcZkJjdXJzZXNcZlIgd2luZG93cwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCi1cZkJpbnQgb3ZlcmxheShjb25zdCBXSU5ET1cgKnNyY3dpbiwgV0lORE9XICpkc3R3aW4pO1xmUgorXGZCaW50IG92ZXJsYXkoY29uc3QgV0lORE9XICpcZlBcZklzcmN3aW5cZlBcZkIsIFdJTkRPVyAqXGZQXGZJZHN0d2luXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IG92ZXJ3cml0ZShjb25zdCBXSU5ET1cgKnNyY3dpbiwgV0lORE9XICpkc3R3aW4pO1xmUgorXGZCaW50IG92ZXJ3cml0ZShjb25zdCBXSU5ET1cgKlxmUFxmSXNyY3dpblxmUFxmQiwgV0lORE9XICpcZlBcZklkc3R3aW5cZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgY29weXdpbihjb25zdCBXSU5ET1cgKnNyY3dpbiwgV0lORE9XICpkc3R3aW4sIGludCBzbWlucm93LFxmUgotICAgICAgXGZCaW50IHNtaW5jb2wsIGludCBkbWlucm93LCBpbnQgZG1pbmNvbCwgaW50IGRtYXhyb3csXGZSCi0gICAgICBcZkJpbnQgZG1heGNvbCwgaW50IG92ZXJsYXkpO1xmUgorXGZCaW50IGNvcHl3aW4oY29uc3QgV0lORE9XICpcZlBcZklzcmN3aW5cZlBcZkIsIFdJTkRPVyAqXGZQXGZJZHN0d2luXGZQXGZCLCBpbnQgXGZQXGZJc21pbnJvd1xmUFxmQixcZlIKKyAgICAgIFxmQmludCBcZlBcZklzbWluY29sXGZQXGZCLCBpbnQgXGZQXGZJZG1pbnJvd1xmUFxmQiwgaW50IFxmUFxmSWRtaW5jb2xcZlBcZkIsIGludCBcZlBcZklkbWF4cm93XGZQXGZCLFxmUgorICAgICAgXGZCaW50IFxmUFxmSWRtYXhjb2xcZlBcZkIsIGludCBcZlBcZklvdmVybGF5XGZQXGZCKTtcZlIKIC5TSCBERVNDUklQVElPTgorLlNTIG92ZXJsYXksIG92ZXJ3cml0ZQogVGhlIFxmQm92ZXJsYXlcZlIgYW5kIFxmQm92ZXJ3cml0ZVxmUiByb3V0aW5lcyBvdmVybGF5IFxmSXNyY3dpblxmUiBvbgotdG9wIG9mIFxmSWRzdHdpblxmUi4gIFxmSXNjcndpblxmUiBhbmQgXGZJZHN0d2luXGZSIGFyZSBub3QgcmVxdWlyZWQKLXRvIGJlIHRoZSBzYW1lIHNpemU7IG9ubHkgdGV4dCB3aGVyZSB0aGUgdHdvIHdpbmRvd3Mgb3ZlcmxhcCBpcwotY29waWVkLiAgVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBcZkJvdmVybGF5XGZSIGlzIG5vbi1kZXN0cnVjdGl2ZQordG9wIG9mIFxmSWRzdHdpblxmUi4KK1xmSXNjcndpblxmUiBhbmQgXGZJZHN0d2luXGZSIGFyZSBub3QgcmVxdWlyZWQKK3RvIGJlIHRoZSBzYW1lIHNpemU7IG9ubHkgdGV4dCB3aGVyZSB0aGUgdHdvIHdpbmRvd3Mgb3ZlcmxhcCBpcyBjb3BpZWQuCitUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IFxmQm92ZXJsYXlcZlIgaXMgbm9uLWRlc3RydWN0aXZlCiAoYmxhbmtzIGFyZSBub3QgY29waWVkKSB3aGVyZWFzIFxmQm92ZXJ3cml0ZVxmUiBpcyBkZXN0cnVjdGl2ZS4KKy5TUyBjb3B5d2luCiAuUFAKIFRoZSBcZkJjb3B5d2luXGZSIHJvdXRpbmUgcHJvdmlkZXMgYSBmaW5lciBncmFudWxhcml0eSBvZiBjb250cm9sIG92ZXIgdGhlCi1cZkJvdmVybGF5XGZSIGFuZCBcZkJvdmVyd3JpdGVcZlIgcm91dGluZXMuICBMaWtlIGluIHRoZSBcZkJwcmVmcmVzaFxmUgotcm91dGluZSwgYSByZWN0YW5nbGUgaXMgc3BlY2lmaWVkIGluIHRoZSBkZXN0aW5hdGlvbiB3aW5kb3csIChcZklkbWlucm93XGZSLAorXGZCb3ZlcmxheVxmUiBhbmQgXGZCb3ZlcndyaXRlXGZSIHJvdXRpbmVzLgorQXMgaW4gdGhlIFxmQnByZWZyZXNoXGZSIHJvdXRpbmUsCithIHJlY3RhbmdsZSBpcyBzcGVjaWZpZWQgaW4gdGhlIGRlc3RpbmF0aW9uIHdpbmRvdywgKFxmSWRtaW5yb3dcZlIsCiBcZklkbWluY29sXGZSKSBhbmQgKFxmSWRtYXhyb3dcZlIsIFxmSWRtYXhjb2xcZlIpLCBhbmQgdGhlIHVwcGVyLWxlZnQtY29ybmVyCi1jb29yZGluYXRlcyBvZiB0aGUgc291cmNlIHdpbmRvdywgKFxmSXNtaW5yb3dcZlIsIFxmSXNtaW5jb2xcZlIpLiAgSWYgdGhlCi1hcmd1bWVudCBcZklvdmVybGF5XGZSIGlzIFxmQnRydWVcZlIsIHRoZW4gY29weWluZyBpcyBub24tZGVzdHJ1Y3RpdmUsIGFzIGluCi1cZkJvdmVybGF5XGZSLgorY29vcmRpbmF0ZXMgb2YgdGhlIHNvdXJjZSB3aW5kb3csIChcZklzbWlucm93XGZSLCBcZklzbWluY29sXGZSKS4KK0lmIHRoZSBhcmd1bWVudCBcZklvdmVybGF5XGZSIGlzIFxmQnRydWVcZlIsCit0aGVuIGNvcHlpbmcgaXMgbm9uLWRlc3RydWN0aXZlLAorYXMgaW4gXGZCb3ZlcmxheVxmUi4KIC5TSCBSRVRVUk4gVkFMVUUKIFJvdXRpbmVzIHRoYXQgcmV0dXJuIGFuIGludGVnZXIgcmV0dXJuIFxmQkVSUlxmUiB1cG9uIGZhaWx1cmUsIGFuZCBcZkJPS1xmUgogKFNWcjQgb25seSBzcGVjaWZpZXMgImFuIGludGVnZXIgdmFsdWUgb3RoZXIgdGhhbiBcZkJFUlJcZlIiKSB1cG9uIHN1Y2Nlc3NmdWwKQEAgLTc1LDEzICs4MCw4IEBACiBOb3RlIHRoYXQgXGZCb3ZlcmxheVxmUiBhbmQgXGZCb3ZlcndyaXRlXGZSIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMgKGFkZGluZyB0aGUgY29uc3QKLXF1YWxpZmllcnMpLiAgSXQgZnVydGhlciBzcGVjaWZpZXMgdGhlaXIgYmVoYXZpb3IgaW4gdGhlIHByZXNlbmNlIG9mIGNoYXJhY3RlcnMKK3F1YWxpZmllcnMpLgorSXQgZnVydGhlciBzcGVjaWZpZXMgdGhlaXIgYmVoYXZpb3IgaW4gdGhlIHByZXNlbmNlIG9mIGNoYXJhY3RlcnMKIHdpdGggbXVsdGlieXRlIHJlbmRpdGlvbnMgKG5vdCB5ZXQgc3VwcG9ydGVkIGluIHRoaXMgaW1wbGVtZW50YXRpb24pLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX3BhZFxmUigzWCksIFxmQmN1cnNfcmVmcmVzaFxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfcGFkLjN4IGIvbWFuL2N1cnNfcGFkLjN4CmluZGV4IGM3MjIyMDcuLjUyZmU1MWMgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX3BhZC4zeAorKysgYi9tYW4vY3Vyc19wYWQuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3BhZC4zeCx2IDEuMTQgMjAwNS8wNS8xNSAxNjoxODo0MyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfcGFkLjN4LHYgMS4xOCAyMDE1LzA3LzIxIDA4OjU4OjQ0IHRvbSBFeHAgJAogLlRIIGN1cnNfcGFkIDNYICIiCiAubmEKIC5oeSAwCkBAIC0zNiwyNyArMzYsMjggQEAKIFxmQnByZWZyZXNoXGZSLAogXGZCcG5vdXRyZWZyZXNoXGZSLAogXGZCcGVjaG9jaGFyXGZSLAotXGZCcGVjaG9fd2NoYXJcZlIgLSBjcmVhdGUgYW5kIGRpc3BsYXkgXGZCY3Vyc2VzXGZSIHBhZHMKK1xmQnBlY2hvX3djaGFyXGZSIFwtIGNyZWF0ZSBhbmQgZGlzcGxheSBcZkJjdXJzZXNcZlIgcGFkcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCi1cZkJXSU5ET1cgKm5ld3BhZChpbnQgbmxpbmVzLCBpbnQgbmNvbHMpO1xmUgorXGZCV0lORE9XICpuZXdwYWQoaW50IFxmUFxmSW5saW5lc1xmUFxmQiwgaW50IFxmUFxmSW5jb2xzXGZQXGZCKTtcZlIKIC5icgotXGZCV0lORE9XICpzdWJwYWQoV0lORE9XICpvcmlnLCBpbnQgbmxpbmVzLCBpbnQgbmNvbHMsXGZSCi0gICAgICBcZkJpbnQgYmVnaW5feSwgaW50IGJlZ2luX3gpO1xmUgorXGZCV0lORE9XICpzdWJwYWQoV0lORE9XICpcZlBcZklvcmlnXGZQXGZCLCBpbnQgXGZQXGZJbmxpbmVzXGZQXGZCLCBpbnQgXGZQXGZJbmNvbHNcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJYmVnaW5feVxmUFxmQiwgaW50IFxmUFxmSWJlZ2luX3hcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgcHJlZnJlc2goV0lORE9XICpwYWQsIGludCBwbWlucm93LCBpbnQgcG1pbmNvbCxcZlIKLSAgICAgIFxmQmludCBzbWlucm93LCBpbnQgc21pbmNvbCwgaW50IHNtYXhyb3csIGludCBzbWF4Y29sKTtcZlIKK1xmQmludCBwcmVmcmVzaChXSU5ET1cgKlxmUFxmSXBhZFxmUFxmQiwgaW50IFxmUFxmSXBtaW5yb3dcZlBcZkIsIGludCBcZlBcZklwbWluY29sXGZQXGZCLFxmUgorICAgICAgXGZCaW50IFxmUFxmSXNtaW5yb3dcZlBcZkIsIGludCBcZlBcZklzbWluY29sXGZQXGZCLCBpbnQgXGZQXGZJc21heHJvd1xmUFxmQiwgaW50IFxmUFxmSXNtYXhjb2xcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgcG5vdXRyZWZyZXNoKFdJTkRPVyAqcGFkLCBpbnQgcG1pbnJvdywgaW50IHBtaW5jb2wsXGZSCi0gICAgICBcZkJpbnQgc21pbnJvdywgaW50IHNtaW5jb2wsIGludCBzbWF4cm93LCBpbnQgc21heGNvbCk7XGZSCitcZkJpbnQgcG5vdXRyZWZyZXNoKFdJTkRPVyAqXGZQXGZJcGFkXGZQXGZCLCBpbnQgXGZQXGZJcG1pbnJvd1xmUFxmQiwgaW50IFxmUFxmSXBtaW5jb2xcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJc21pbnJvd1xmUFxmQiwgaW50IFxmUFxmSXNtaW5jb2xcZlBcZkIsIGludCBcZlBcZklzbWF4cm93XGZQXGZCLCBpbnQgXGZQXGZJc21heGNvbFxmUFxmQik7XGZSCiAuYnIKLVxmQmludCBwZWNob2NoYXIoV0lORE9XICpwYWQsIGNodHlwZSBjaCk7XGZSCitcZkJpbnQgcGVjaG9jaGFyKFdJTkRPVyAqXGZQXGZJcGFkXGZQXGZCLCBjaHR5cGUgXGZQXGZJY2hcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgcGVjaG9fd2NoYXIoV0lORE9XICpwYWQsIGNvbnN0IGNjaGFyX3QgKndjaCk7XGZSCitcZkJpbnQgcGVjaG9fd2NoYXIoV0lORE9XICpcZlBcZklwYWRcZlBcZkIsIGNvbnN0IGNjaGFyX3QgKlxmUFxmSXdjaFxmUFxmQik7XGZSCiAuU0ggREVTQ1JJUFRJT04KKy5TUyBuZXdwYWQKIFRoZSBcZkJuZXdwYWRcZlIgcm91dGluZSBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBhIG5ldyBwYWQgZGF0YQogc3RydWN0dXJlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBsaW5lcywgXGZJbmxpbmVzXGZSLCBhbmQgY29sdW1ucywKIFxmSW5jb2xzXGZSLgpAQCAtNzMsNiArNzQsNyBAQAogTm90ZSB0aGF0IHRoZXNlCiByb3V0aW5lcyByZXF1aXJlIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byBzcGVjaWZ5IHRoZSBwYXJ0IG9mIHRoZSBwYWQgdG8gYmUKIGRpc3BsYXllZCBhbmQgdGhlIGxvY2F0aW9uIG9uIHRoZSBzY3JlZW4gdG8gYmUgdXNlZCBmb3IgdGhlIGRpc3BsYXkuCisuU1Mgc3VicGFkCiAuUFAKIFRoZSBcZkJzdWJwYWRcZlIgcm91dGluZSBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBhIHN1YndpbmRvdyB3aXRoaW4gYQogcGFkIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBsaW5lcywgXGZJbmxpbmVzXGZSLCBhbmQgY29sdW1ucywgXGZJbmNvbHNcZlIuCkBAIC04NCwxNiArODYsMTggQEAKIER1cmluZyB0aGUgdXNlIG9mIHRoaXMgcm91dGluZSwgaXQgd2lsbCBvZnRlbiBiZQogbmVjZXNzYXJ5IHRvIGNhbGwgXGZCdG91Y2h3aW5cZlIgb3IgXGZCdG91Y2hsaW5lXGZSIG9uIFxmSW9yaWdcZlIgYmVmb3JlCiBjYWxsaW5nIFxmQnByZWZyZXNoXGZSLgorLlNTIHByZWZyZXNoLCBwbm91dHJlZnJlc2gKIC5QUAogVGhlIFxmQnByZWZyZXNoXGZSIGFuZCBcZkJwbm91dHJlZnJlc2hcZlIgcm91dGluZXMgYXJlIGFuYWxvZ291cyB0bwogXGZCd3JlZnJlc2hcZlIgYW5kIFxmQndub3V0cmVmcmVzaFxmUiBleGNlcHQgdGhhdCB0aGV5IHJlbGF0ZSB0byBwYWRzIGluc3RlYWQKIG9mIHdpbmRvd3MuCiBUaGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZSBuZWVkZWQgdG8gaW5kaWNhdGUgd2hhdCBwYXJ0IG9mIHRoZQogcGFkIGFuZCBzY3JlZW4gYXJlIGludm9sdmVkLgotXGZJcG1pbnJvd1xmUiBhbmQgXGZJcG1pbmNvbFxmUiBzcGVjaWZ5IHRoZSB1cHBlcgorVGhlIFxmSXBtaW5yb3dcZlIgYW5kIFxmSXBtaW5jb2xcZlIgcGFyYW1ldGVycyBzcGVjaWZ5IHRoZSB1cHBlcgogbGVmdC1oYW5kIGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcGFkLgotXGZJc21pbnJvd1xmUiwKLVxmSXNtaW5jb2xcZlIsIFxmSXNtYXhyb3dcZlIsIGFuZCBcZklzbWF4Y29sXGZSIHNwZWNpZnkgdGhlIGVkZ2VzIG9mIHRoZQorVGhlIFxmSXNtaW5yb3dcZlIsCitcZklzbWluY29sXGZSLCBcZklzbWF4cm93XGZSLCBhbmQgXGZJc21heGNvbFxmUgorcGFyYW1ldGVycyBzcGVjaWZ5IHRoZSBlZGdlcyBvZiB0aGUKIHJlY3RhbmdsZSB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIHNjcmVlbi4KIFRoZSBsb3dlciByaWdodC1oYW5kIGNvcm5lciBvZiB0aGUKIHJlY3RhbmdsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHBhZCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHNjcmVlbiBjb29yZGluYXRlcywKQEAgLTEwMyw2ICsxMDcsNyBAQAogTmVnYXRpdmUgdmFsdWVzIG9mCiBcZklwbWlucm93XGZSLCBcZklwbWluY29sXGZSLCBcZklzbWlucm93XGZSLCBvciBcZklzbWluY29sXGZSIGFyZSB0cmVhdGVkIGFzIGlmCiB0aGV5IHdlcmUgemVyby4KKy5TUyBwZWNob2NoYXIKIC5QUAogVGhlIFxmQnBlY2hvY2hhclxmUiByb3V0aW5lIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEgY2FsbCB0byBcZkJhZGRjaFxmUgogZm9sbG93ZWQgYnkgYSBjYWxsIHRvIFxmQnJlZnJlc2hcZlIsIGEgY2FsbCB0byBcZkJ3YWRkY2hcZlIgZm9sbG93ZWQgYnkgYSBjYWxsCkBAIC0xMTQsNiArMTE5LDcgQEAKIGVxdWl2YWxlbnRzLgogSW4gdGhlIGNhc2Ugb2YgXGZCcGVjaG9jaGFyXGZSLCB0aGUgbGFzdCBsb2NhdGlvbiBvZiB0aGUgcGFkIG9uCiB0aGUgc2NyZWVuIGlzIHJldXNlZCBmb3IgdGhlIGFyZ3VtZW50cyB0byBcZkJwcmVmcmVzaFxmUi4KKy5TUyBwZWNob193Y2hhcgogLlBQCiBUaGUgXGZCcGVjaG9fd2NoYXJcZlIgZnVuY3Rpb24gaXMgdGhlIGFuYWxvZ291cyB3aWRlLWNoYXJhY3RlcgogZm9ybSBvZiBcZkJwZWNob2NoYXJcZlIuCkBAIC0xMjksNyArMTM1LDcgQEAKIC5QUAogWC9PcGVuIGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIEluIHRoaXMgaW1wbGVtZW50YXRpb24KLS5SUworLlJTIDMKIC5UUCA1CiBcZkJwcmVmcmVzaFxmUCBhbmQgXGZCcG5vdXRyZWZyZXNoXGZQCiByZXR1cm4gYW4gZXJyb3IKQEAgLTE1NCw5ICsxNjAsMyBAQAogVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQgZGVzY3JpYmVzIHRoZXNlIGZ1bmN0aW9ucy4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwgXGZCY3Vyc19yZWZyZXNoXGZSKDNYKSwgXGZCY3Vyc190b3VjaFxmUigzWCksIFxmQmN1cnNfYWRkY2hcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19wcmludC4zeCBiL21hbi9jdXJzX3ByaW50LjN4CmluZGV4IDkyYjljYTIuLjMxYTQ1MzUgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX3ByaW50LjN4CisrKyBiL21hbi9jdXJzX3ByaW50LjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTAgKzI2LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3ByaW50LjN4LHYgMS44IDIwMDYvMDIvMjUgMjE6NDk6MTkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3ByaW50LjN4LHYgMS4xMCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGN1cnNfcHJpbnQgM1ggIiIKIC5TSCBOQU1FCi1cZkJtY3ByaW50XGZSIC0gc2hpcCBiaW5hcnkgZGF0YSB0byBwcmludGVyCitcZkJtY3ByaW50XGZSIFwtIHNoaXAgYmluYXJ5IGRhdGEgdG8gcHJpbnRlcgogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKQEAgLTY2LDkgKzY2LDMgQEAKIGludGVycHJldGVkLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpXGZSCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX3ByaW50dy4zeCBiL21hbi9jdXJzX3ByaW50dy4zeAppbmRleCBlYWQwZjE4Li45OTE4ZjlkIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19wcmludHcuM3gKKysrIGIvbWFuL2N1cnNfcHJpbnR3LjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19wcmludHcuM3gsdiAxLjE3IDIwMDYvMTIvMjQgMTY6MDU6MTcgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3ByaW50dy4zeCx2IDEuMjAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBjdXJzX3ByaW50dyAzWCAiIgogLm5hCiAuaHkgMApAQCAtMzUsNyArMzUsNyBAQAogXGZCd3ByaW50d1xmUiwKIFxmQm12cHJpbnR3XGZSLAogXGZCbXZ3cHJpbnR3XGZSLAotXGZCdndwcmludHdcZlIsIFxmQnZ3X3ByaW50d1xmUiAtIHByaW50IGZvcm1hdHRlZCBvdXRwdXQgaW4gXGZCY3Vyc2VzXGZSIHdpbmRvd3MKK1xmQnZ3cHJpbnR3XGZSLCBcZkJ2d19wcmludHdcZlIgXC0gcHJpbnQgZm9ybWF0dGVkIG91dHB1dCBpbiBcZkJjdXJzZXNcZlIgd2luZG93cwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtNzQsNiArNzQsMTAgQEAKIGFuIGVycm9yIG1heSBiZSByZXR1cm5lZCBpZiBpdCBjYW5ub3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhlCiBidWZmZXIgdXNlZCB0byBmb3JtYXQgdGhlIHJlc3VsdHMuCiBJdCB3aWxsIHJldHVybiBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KKy5QUAorRnVuY3Rpb25zIHdpdGggYSAibXYiIHByZWZpeCBmaXJzdCBwZXJmb3JtIGEgY3Vyc29yIG1vdmVtZW50IHVzaW5nCitcZkJ3bW92ZVxmUCwgYW5kIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9zaXRpb24gaXMgb3V0c2lkZSB0aGUgd2luZG93LAorb3IgaWYgdGhlIHdpbmRvdyBwb2ludGVyIGlzIG51bGwuCiAuU0ggUE9SVEFCSUxJVFkKIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMuICBUaGUgZnVuY3Rpb24KIFxmQnZ3cHJpbnR3XGZSIGlzIG1hcmtlZCBUTyBCRSBXSVRIRFJBV04sIGFuZCBpcyB0byBiZSByZXBsYWNlZCBieSBhIGZ1bmN0aW9uCkBAIC04Niw5ICs5MCwzIEBACiBpcyBpbmNsdWRlZCBpbiBcZkI8Y3Vyc2VzLmhcZlI+LgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLCBcZkJwcmludGZcZlIoMyksIFxmQnZwcmludGYoMylcZlIKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfcmVmcmVzaC4zeCBiL21hbi9jdXJzX3JlZnJlc2guM3gKaW5kZXggNWNlMDY5MC4uZTE1NTJjMyAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfcmVmcmVzaC4zeAorKysgYi9tYW4vY3Vyc19yZWZyZXNoLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19yZWZyZXNoLjN4LHYgMS4xMiAyMDA1LzA1LzE1IDE2OjE4OjQ5IHRvbSBFeHAgJAorLlwiICRJZDogY3Vyc19yZWZyZXNoLjN4LHYgMS4xNSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIGN1cnNfcmVmcmVzaCAzWCAiIgogLm5hCiAuaHkgMApAQCAtMzYsNyArMzYsNyBAQAogXGZCcmVmcmVzaFxmUiwKIFxmQndub3V0cmVmcmVzaFxmUiwKIFxmQndyZWRyYXdsblxmUiwKLVxmQndyZWZyZXNoXGZSIC0gcmVmcmVzaCBcZkJjdXJzZXNcZlIgd2luZG93cyBhbmQgbGluZXMKK1xmQndyZWZyZXNoXGZSIFwtIHJlZnJlc2ggXGZCY3Vyc2VzXGZSIHdpbmRvd3MgYW5kIGxpbmVzCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCkBAIC0xMzUsMTAgKzEzNSw2IEBACiBJbnN0ZWFkLCB5b3UgY2FuIGRvIGFuIGV4cGxpY2l0IFxmQnRvdWNod2luKClcZlIgYmVmb3JlIHRoZQogXGZCd25vdXRyZWZyZXNoKClcZlIgY2FsbCB0byBndWFyYW50ZWUgYW4gZW50aXJlLWNvbnRlbnRzIGNvcHkgYW55d2hlcmUuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfb3V0b3B0c1xmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmN1cnNfb3V0b3B0c1xmUigzWCkKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX3NjYW53LjN4IGIvbWFuL2N1cnNfc2NhbncuM3gKaW5kZXggNzFiYTllZS4uYTMyMDhmNSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfc2NhbncuM3gKKysrIGIvbWFuL2N1cnNfc2NhbncuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxNCArMjYsMTQgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfc2NhbncuM3gsdiAxLjE0IDIwMDYvMTIvMjQgMTY6MDU6NDkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3NjYW53LjN4LHYgMS4xNyAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGN1cnNfc2NhbncgM1ggIiIKIC5TSCBOQU1FCiBcZkJzY2Fud1xmUiwKIFxmQndzY2Fud1xmUiwKIFxmQm12c2NhbndcZlIsCiBcZkJtdndzY2Fud1xmUiwKLVxmQnZ3c2NhbndcZlIsIFxmQnZ3X3NjYW53XGZSIC0gY29udmVydCBmb3JtYXR0ZWQgaW5wdXQgZnJvbSBhIFxmQmN1cnNlc1xmUiB3aW5kb3cKK1xmQnZ3c2NhbndcZlIsIFxmQnZ3X3NjYW53XGZSIFwtIGNvbnZlcnQgZm9ybWF0dGVkIGlucHV0IGZyb20gYSBcZkJjdXJzZXNcZlIgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcApAQCAtNjYsNiArNjYsMTAgQEAKIEFwcGxpY2F0aW9ucyBtYXkgdXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgXGZCc2NhbndcZlIsIFxmQndzY2Fud1xmUiwKIFxmQm12c2NhbndcZlIgYW5kIFxmQm12d3NjYW53XGZSIHJvdXRpbmVzIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGZpZWxkcwogd2hpY2ggd2VyZSBtYXBwZWQgaW4gdGhlIGNhbGwuCisuUFAKK0Z1bmN0aW9ucyB3aXRoIGEgIm12IiBwcmVmaXggZmlyc3QgcGVyZm9ybSBhIGN1cnNvciBtb3ZlbWVudCB1c2luZworXGZCd21vdmVcZlAsIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHBvc2l0aW9uIGlzIG91dHNpZGUgdGhlIHdpbmRvdywKK29yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLlNIIFBPUlRBQklMSVRZCiBUaGUgWFNJIEN1cnNlcyBzdGFuZGFyZCwgSXNzdWUgNCBkZXNjcmliZXMgdGhlc2UgZnVuY3Rpb25zLiAgVGhlIGZ1bmN0aW9uCiBcZkJ2d3NjYW53XGZSIGlzIG1hcmtlZCBUTyBCRSBXSVRIRFJBV04sIGFuZCBpcyB0byBiZSByZXBsYWNlZCBieSBhIGZ1bmN0aW9uCkBAIC04OSw5ICs5MywzIEBACiBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHRvIGVuc3VyZSB0aGF0IHNvbWV0aGluZyB3YXMgcHJvY2Vzc2VkLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX2dldHN0clxmUigzWCksIFxmQmN1cnNfcHJpbnR3XGZSKDNYKSwgXGZCc2NhbmZcZlIoMykKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfc2NyX2R1bXAuM3ggYi9tYW4vY3Vyc19zY3JfZHVtcC4zeAppbmRleCA3ODg0ZjZhLi5kZjNlNzljIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19zY3JfZHVtcC4zeAorKysgYi9tYW4vY3Vyc19zY3JfZHVtcC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfc2NyX2R1bXAuM3gsdiAxLjcgMjAwNi8xMi8yNCAxNjowNTo0OSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfc2NyX2R1bXAuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBjdXJzX3Njcl9kdW1wIDNYICIiCiAubmEKIC5oeSAwCkBAIC0zNCw3ICszNCw3IEBACiBcZkJzY3JfZHVtcFxmUiwKIFxmQnNjcl9yZXN0b3JlXGZSLAogXGZCc2NyX2luaXRcZlIsCi1cZkJzY3Jfc2V0XGZSIC0gcmVhZCAod3JpdGUpIGEgXGZCY3Vyc2VzXGZSIHNjcmVlbiBmcm9tICh0bykgYSBmaWxlCitcZkJzY3Jfc2V0XGZSIFwtIHJlYWQgKHdyaXRlKSBhIFxmQmN1cnNlc1xmUiBzY3JlZW4gZnJvbSAodG8pIGEgZmlsZQogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtOTQsOSArOTQsMyBAQAogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLCBcZkJjdXJzX2luaXRzY3JcZlIoM1gpLCBcZkJjdXJzX3JlZnJlc2hcZlIoM1gpLAogXGZCY3Vyc191dGlsXGZSKDNYKSwgXGZCc3lzdGVtXGZSKDMpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX3Njcm9sbC4zeCBiL21hbi9jdXJzX3Njcm9sbC4zeAppbmRleCA3NTRiNzE0Li4yY2IxNTJkIDEwMDY0NAotLS0gYS9tYW4vY3Vyc19zY3JvbGwuM3gKKysrIGIvbWFuL2N1cnNfc2Nyb2xsLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTQgKzI2LDE0IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3Njcm9sbC4zeCx2IDEuMTMgMjAwNi8wMi8yNSAyMTo0OToxOSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfc2Nyb2xsLjN4LHYgMS4xNSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGN1cnNfc2Nyb2xsIDNYICIiCiAubmEKIC5oeSAwCiAuU0ggTkFNRQogXGZCc2Nyb2xsXGZSLAogXGZCc2NybFxmUiwKLVxmQndzY3JsXGZSIC0gc2Nyb2xsIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdworXGZCd3NjcmxcZlIgXC0gc2Nyb2xsIGEgXGZCY3Vyc2VzXGZSIHdpbmRvdwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtODgsOSArODgsMyBAQAogVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQsIElzc3VlIDQgZGVzY3JpYmVzIHRoZXNlIGZ1bmN0aW9ucy4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwgXGZCY3Vyc19vdXRvcHRzXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc19zbGsuM3ggYi9tYW4vY3Vyc19zbGsuM3gKaW5kZXggNjM2MTI2OC4uZThmN2FmYiAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfc2xrLjN4CisrKyBiL21hbi9jdXJzX3Nsay4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDEzICsyNiwxNCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc19zbGsuM3gsdiAxLjE2IDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3Nsay4zeCx2IDEuMjIgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwICQKIC5USCBjdXJzX3NsayAzWCAiIgogLm5hCiAuaHkgMAogLlNIIE5BTUUKIFxmQnNsa19pbml0XGZSLAogXGZCc2xrX3NldFxmUiwKK1xmQnNsa193c2V0XGZSLAogXGZCc2xrX3JlZnJlc2hcZlIsCiBcZkJzbGtfbm91dHJlZnJlc2hcZlIsCiBcZkJzbGtfbGFiZWxcZlIsCkBAIC00Niw3ICs0Nyw3IEBACiBcZkJzbGtfYXR0cl9zZXRcZlIsCiBcZkJzbGtfYXR0cl9vZmZcZlIsCiBcZkJzbGtfYXR0clxmUiwKLVxmQnNsa19jb2xvclxmUiAtIFxmQmN1cnNlc1xmUiBzb2Z0IGxhYmVsIHJvdXRpbmVzCitcZkJzbGtfY29sb3JcZlIgXC0gXGZCY3Vyc2VzXGZSIHNvZnQgbGFiZWwgcm91dGluZXMKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKQEAgLTc4LDQyICs3OSw3NiBAQAogLmJyCiBcZkJpbnQgc2xrX2F0dHJfb2ZmKGNvbnN0IGF0dHJfdCBhdHRycywgdm9pZCAqIG9wdHMpO1xmUgogLmJyCi1cZkJpbnQgc2xrX2F0dHJfc2V0KGNvbnN0IGF0dHJfdCBhdHRycyxcZlIKLS5icgotCVxmQnNob3J0IGNvbG9yX3BhaXJfbnVtYmVyLCB2b2lkKiBvcHRzKTtcZlIKK1xmQmludCBzbGtfYXR0cl9zZXQoY29uc3QgYXR0cl90IGF0dHJzLCBzaG9ydCBjb2xvcl9wYWlyLCB2b2lkKiBvcHRzKTtcZlIKIC5icgogXGZCYXR0cl90IHNsa19hdHRyKHZvaWQpO1xmUgogLmJyCi1cZkJpbnQgc2xrX2NvbG9yKHNob3J0IGNvbG9yX3BhaXJfbnVtYmVyKTtcZlIKK1xmQmludCBzbGtfY29sb3Ioc2hvcnQgY29sb3JfcGFpcik7XGZSCisuYnIKK1xmQmludCBzbGtfd3NldChpbnQgbGFibnVtLCBjb25zdCB3Y2hhcl90ICpsYWJlbCwgaW50IGZtdCk7XGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgogVGhlIHNsayogZnVuY3Rpb25zIG1hbmlwdWxhdGUgdGhlIHNldCBvZiBzb2Z0IGZ1bmN0aW9uLWtleSBsYWJlbHMgdGhhdCBleGlzdCBvbgotbWFueSB0ZXJtaW5hbHMuICBGb3IgdGhvc2UgdGVybWluYWxzIHRoYXQgZG8gbm90IGhhdmUgc29mdCBsYWJlbHMsCittYW55IHRlcm1pbmFscy4KK0ZvciB0aG9zZSB0ZXJtaW5hbHMgdGhhdCBkbyBub3QgaGF2ZSBzb2Z0IGxhYmVscywKIFxmQmN1cnNlc1xmUiB0YWtlcyBvdmVyIHRoZSBib3R0b20gbGluZSBvZiBcZkJzdGRzY3JcZlIsIHJlZHVjaW5nIHRoZSBzaXplIG9mCi1cZkJzdGRzY3JcZlIgYW5kIHRoZSB2YXJpYWJsZSBcZkJMSU5FU1xmUi4gIFxmQmN1cnNlc1xmUiBzdGFuZGFyZGl6ZXMgb24gZWlnaHQKLWxhYmVscyBvZiB1cCB0byBlaWdodCBjaGFyYWN0ZXJzIGVhY2guIEluIGFkZGl0aW9uIHRvIHRoaXMsIHRoZSBuY3Vyc2VzCitcZkJzdGRzY3JcZlIgYW5kIHRoZSB2YXJpYWJsZSBcZkJMSU5FU1xmUi4KK1xmQmN1cnNlc1xmUiBzdGFuZGFyZGl6ZXMgb24gZWlnaHQKK2xhYmVscyBvZiB1cCB0byBlaWdodCBjaGFyYWN0ZXJzIGVhY2guCitJbiBhZGRpdGlvbiB0byB0aGlzLCB0aGUgbmN1cnNlcwogaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgYSBtb2RlIHdoZXJlIGl0IHNpbXVsYXRlcyAxMiBsYWJlbHMgb2YgdXAgdG8gZml2ZQotY2hhcmFjdGVycyBlYWNoLiBUaGlzIGlzIG1vc3QgY29tbW9uIGZvciB0b2RheXMgUEMgbGlrZSBlbmR1c2VyIGRldmljZXMuCi1QbGVhc2Ugbm90ZSB0aGF0IG5jdXJzZXMgc2ltdWxhdGVzIHRoaXMgbW9kZSBieSB0YWtpbmcgb3ZlciB1cCB0byB0d28gbGluZXMgYXQKLXRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiwgaXQgZG9lcyBub3QgdHJ5IHRvIHVzZSBhbnkgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhpcworY2hhcmFjdGVycyBlYWNoLgorVGhpcyBpcyB1c2VmdWwgZm9yIHRvZGF5J3MgUEMtbGlrZSBlbmR1c2VyIGRldmljZXMuCituY3Vyc2VzIHNpbXVsYXRlcyB0aGlzIG1vZGUgYnkgdGFraW5nIG92ZXIgdXAgdG8gdHdvIGxpbmVzIGF0Cit0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW47CitpdCBkb2VzIG5vdCB0cnkgdG8gdXNlIGFueSBoYXJkd2FyZSBzdXBwb3J0IGZvciB0aGlzCiBtb2RlLgogLlBQCiBUaGUgXGZCc2xrX2luaXRcZlIgcm91dGluZSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgXGZCaW5pdHNjclxmUiBvciBcZkJuZXd0ZXJtXGZSCi1pcyBjYWxsZWQuICBJZiBcZkJpbml0c2NyXGZSIGV2ZW50dWFsbHkgdXNlcyBhIGxpbmUgZnJvbSBcZkJzdGRzY3JcZlIgdG8KLWVtdWxhdGUgdGhlIHNvZnQgbGFiZWxzLCB0aGVuIFxmSWZtdFxmUiBkZXRlcm1pbmVzIGhvdyB0aGUgbGFiZWxzIGFyZSBhcnJhbmdlZAotb24gdGhlIHNjcmVlbi4gIFNldHRpbmcgXGZJZm10XGZSIHRvIFxmQjBcZlIgaW5kaWNhdGVzIGEgMy0yLTMgYXJyYW5nZW1lbnQgb2YKLXRoZSBsYWJlbHMsIFxmQjFcZlIgaW5kaWNhdGVzIGEgNC00IGFycmFuZ2VtZW50IGFuZCBcZkIyXGZSIGluZGljYXRlcyB0aGUKLVBDIGxpa2UgNC00LTQgbW9kZS4gSWYgXGZCZm10XGZSIGlzIHNldCB0byBcZkIzXGZSLCBpdCBpcyBhZ2FpbiB0aGUgUEMgbGlrZQotNC00LTQgbW9kZSwgYnV0IGluIGFkZGl0aW9uIGFuIGluZGV4IGxpbmUgaXMgZ2VuZXJhdGVkLCBoZWxwaW5nIHRoZSB1c2VyIHRvCitpcyBjYWxsZWQuCitJZiBcZkJpbml0c2NyXGZSIGV2ZW50dWFsbHkgdXNlcyBhIGxpbmUgZnJvbSBcZkJzdGRzY3JcZlIgdG8KK2VtdWxhdGUgdGhlIHNvZnQgbGFiZWxzLAordGhlbiBcZklmbXRcZlIgZGV0ZXJtaW5lcyBob3cgdGhlIGxhYmVscyBhcmUgYXJyYW5nZWQgb24gdGhlIHNjcmVlbjoKKy5SUworLlRQIDMKKy5CIDAKK2luZGljYXRlcyBhIDNcLTJcLTMgYXJyYW5nZW1lbnQgb2YKK3RoZSBsYWJlbHMuCisuVFAgMworLkIgMQoraW5kaWNhdGVzIGEgNFwtNCBhcnJhbmdlbWVudAorLlRQIDMKKy5CIDIKK2luZGljYXRlcyB0aGUgUEMtbGlrZSA0XC00XC00IG1vZGUuCisuVFAgMworLkIgMworaXMgYWdhaW4gdGhlIFBDLWxpa2UgNFwtNFwtNCBtb2RlLAorYnV0IGluIGFkZGl0aW9uIGFuIGluZGV4IGxpbmUgaXMgZ2VuZXJhdGVkLCBoZWxwaW5nIHRoZSB1c2VyIHRvCiBpZGVudGlmeSB0aGUga2V5IG51bWJlcnMgZWFzaWx5LgorLlJFCiAuUFAKLVRoZSBcZkJzbGtfc2V0XGZSIHJvdXRpbmUgcmVxdWlyZXMgXGZJbGFibnVtXGZSIHRvIGJlIGEgbGFiZWwgbnVtYmVyLAotZnJvbSBcZkIxXGZSIHRvIFxmQjhcZlIgKHJlc3AuIFxmQjEyXGZSKTsgXGZJbGFiZWxcZlIgbXVzdCBiZSB0aGUgc3RyaW5nCi10byBiZSBwdXQgb24gdGhlIGxhYmVsLCB1cCB0byBlaWdodCAocmVzcC4gZml2ZSkgY2hhcmFjdGVycyBpbiBsZW5ndGguCi1BIG51bGwgc3RyaW5nIG9yIGEgbnVsbCBwb2ludGVyIHNldHMgdXAgYSBibGFuayBsYWJlbC4gXGZJZm10XGZSIGlzIGVpdGhlcgotXGZCMFxmUiwgXGZCMVxmUiwgb3IgXGZCMlxmUiwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBsYWJlbCBpcyAgdG8gYmUKK1RoZSBcZkJzbGtfc2V0XGZSIHJvdXRpbmUKKyhhbmQgdGhlIFxmQnNsa193c2V0XGZSIHJvdXRpbmUgZm9yIHRoZSB3aWRlLWNoYXJhY3RlciBsaWJyYXJ5KQoraGFzIHRocmVlIHBhcmFtZXRlcnM6CisuUlMKKy5UUCA1CisuSSBsYWJudW0KK2lzIHRoZSBsYWJlbCBudW1iZXIsIGZyb20gXGZCMVxmUiB0byBcZkI4XGZSCisoMTIgZm9yIFxmSWZtdFxmUCBpbiBcZkJzbGtfaW5pdFxmUCBpcyBcZkIyXGZQIG9yIFxmQjNcZlApOworLlRQCisuSSBsYWJlbAoraXMgYmUgdGhlIHN0cmluZyB0byBwdXQgb24gdGhlIGxhYmVsLAordXAgdG8gZWlnaHQKKyhmaXZlIGZvciBcZklmbXRcZlAgaW4gXGZCc2xrX2luaXRcZlAgaXMgXGZCMlxmUCBvciBcZkIzXGZQKQorY2hhcmFjdGVycyBpbiBsZW5ndGguCitBIG51bGwgc3RyaW5nIG9yIGEgbnVsbCBwb2ludGVyIHNldHMgdXAgYSBibGFuayBsYWJlbC4KKy5UUAorLkkgZm10CitpcyBlaXRoZXIKK1xmQjBcZlIsIFxmQjFcZlIsIG9yIFxmQjJcZlIsIGluZGljYXRpbmcgd2hldGhlciB0aGUgbGFiZWwgaXMgdG8gYmUKIGxlZnQtanVzdGlmaWVkLCBjZW50ZXJlZCwgb3IgcmlnaHQtanVzdGlmaWVkLCByZXNwZWN0aXZlbHksIHdpdGhpbiB0aGUKIGxhYmVsLgorLlJFCiAuUFAKIFRoZSBcZkJzbGtfcmVmcmVzaFxmUiBhbmQgXGZCc2xrX25vdXRyZWZyZXNoXGZSIHJvdXRpbmVzIGNvcnJlc3BvbmQgdG8KIHRoZSBcZkJ3cmVmcmVzaFxmUiBhbmQgXGZCd25vdXRyZWZyZXNoXGZSIHJvdXRpbmVzLgpAQCAtMTMyLDEwICsxNjcsMTIgQEAKIFRoZSBcZkJzbGtfYXR0cm9uXGZSLCBcZkJzbGtfYXR0cnNldFxmUiwgXGZCc2xrX2F0dHJvZmZcZlIgYW5kIFxmQnNsa19hdHRyXGZSCiByb3V0aW5lcyBjb3JyZXNwb25kIHRvIFxmQmF0dHJvblxmUiwgXGZCYXR0cnNldFxmUiwgXGZCYXR0cm9mZlxmUiBhbmQgXGZCYXR0cl9nZXRcZlIuCiBUaGV5IGhhdmUgYW4gZWZmZWN0IG9ubHkgaWYgc29mdCBsYWJlbHMgYXJlIHNpbXVsYXRlZCBvbiB0aGUgYm90dG9tIGxpbmUgb2YKLXRoZSBzY3JlZW4uICBUaGUgZGVmYXVsdCBoaWdobGlnaHQgZm9yIHNvZnQga2V5cyBpcyBBX1NUQU5ET1VUIChhcyBpbgordGhlIHNjcmVlbi4KK1RoZSBkZWZhdWx0IGhpZ2hsaWdodCBmb3Igc29mdCBrZXlzIGlzIEFfU1RBTkRPVVQgKGFzIGluCiBTeXN0ZW0gViBjdXJzZXMsIHdoaWNoIGRvZXMgbm90IGRvY3VtZW50IHRoaXMgZmFjdCkuCiAuUFAKLVRoZSBcZkJzbGtfY29sb3JcZlIgcm91dGluZSBjb3JyZXNwb25kcyB0byBcZkJjb2xvcl9zZXRcZlIuIEl0IGhhcyBhbiBlZmZlY3Qgb25seQorVGhlIFxmQnNsa19jb2xvclxmUiByb3V0aW5lIGNvcnJlc3BvbmRzIHRvIFxmQmNvbG9yX3NldFxmUi4KK0l0IGhhcyBhbiBlZmZlY3Qgb25seQogaWYgc29mdCBsYWJlbHMgYXJlIHNpbXVsYXRlZCBvbiB0aGUgYm90dG9tIGxpbmUgb2YgdGhlIHNjcmVlbi4KIC4KIC5TSCBSRVRVUk4gVkFMVUUKQEAgLTE2NCwxMyArMjAxLDEzIEBACiBcZkJzbGtfYXR0cl9zZXRcZlAKIHJldHVybnMgYW4gZXJyb3IKIGlmIHRoZSB0ZXJtaW5hbCBvciB0aGUgc29mdGtleXMgd2VyZSBub3QgaW5pdGlhbGl6ZWQsIG9yCi10aGUgY29sb3IgcGFpciBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLi5DT0xPUl9QQUlSUy0xLAordGhlIGNvbG9yIHBhaXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgMC4uQ09MT1JfUEFJUlNcLTEsCiBvciBvcHRzIGlzIG5vdCBudWxsLgogLlRQIDUKIFxmQnNsa19jb2xvclxmUAogcmV0dXJucyBhbiBlcnJvcgogaWYgdGhlIHRlcm1pbmFsIG9yIHRoZSBzb2Z0a2V5cyB3ZXJlIG5vdCBpbml0aWFsaXplZCwgb3IKLXRoZSBjb2xvciBwYWlyIGlzIG91dHNpZGUgdGhlIHJhbmdlIDAuLkNPTE9SX1BBSVJTLTEuCit0aGUgY29sb3IgcGFpciBpcyBvdXRzaWRlIHRoZSByYW5nZSAwLi5DT0xPUl9QQUlSU1wtMS4KIC5UUCA1CiBcZkJzbGtfaW5pdFxmUgogcmV0dXJucyBhbiBlcnJvcgpAQCAtMTkwLDE2ICsyMjcsMTYgQEAKIE1vc3QgYXBwbGljYXRpb25zIHdvdWxkIHVzZSBcZkJzbGtfbm91dHJlZnJlc2hcZlIgYmVjYXVzZSBhCiBcZkJ3cmVmcmVzaFxmUiBpcyBsaWtlbHkgdG8gZm9sbG93IHNvb24uCiAuU0ggUE9SVEFCSUxJVFkKLVRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LCBkZXNjcmliZXMgdGhlc2UgZnVuY3Rpb25zLiAgSXQgY2hhbmdlcyB0aGUKK1RoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0LCBkZXNjcmliZXMgdGhlc2UgZnVuY3Rpb25zLgorSXQgY2hhbmdlcyB0aGUKIGFyZ3VtZW50IHR5cGUgb2YgdGhlIGF0dHJpYnV0ZS1tYW5pcHVsYXRpb24gZnVuY3Rpb25zIFxmQnNsa19hdHRyb25cZlIsCiBcZkJzbGtfYXR0cm9mZlxmUiwgXGZCc2xrX2F0dHJzZXRcZlIgdG8gYmUgXGZCYXR0cl90XGZSLCBhbmQgYWRkcyBcZkJjb25zdFxmUgotcXVhbGlmaWVycy4gVGhlIGZvcm1hdCBjb2RlcyBcZkIyXGZSIGFuZCBcZkIzXGZSIGZvciBcZkJzbGtfaW5pdCgpXGZSIGFuZCB0aGUKK3F1YWxpZmllcnMuCitUaGUgZm9ybWF0IGNvZGVzIFxmQjJcZlIgYW5kIFxmQjNcZlIgZm9yIFxmQnNsa19pbml0KClcZlIgYW5kIHRoZQogZnVuY3Rpb24gXGZCc2xrX2F0dHJcZlIgYXJlIHNwZWNpZmljIHRvIG5jdXJzZXMuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfYXR0clxmUigzWCksIFxmQmN1cnNfaW5pdHNjclxmUigzWCksIFxmQmN1cnNfcmVmcmVzaFxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmN1cnNfYXR0clxmUigzWCksCitcZkJjdXJzX2luaXRzY3JcZlIoM1gpLAorXGZCY3Vyc19yZWZyZXNoXGZSKDNYKSwKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX3NwX2Z1bmNzLjN4IGIvbWFuL2N1cnNfc3BfZnVuY3MuM3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjNTVkZAotLS0gL2Rldi9udWxsCisrKyBiL21hbi9jdXJzX3NwX2Z1bmNzLjN4CkBAIC0wLDAgKzEsMzUzIEBACisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKy5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorLlwiICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisuXCIgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKy5cIiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorLlwiIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisuXCIgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisuXCIgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisuXCIgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKy5cIiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorLlwiIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisuXCIgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKy5cIiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorLlwiIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorLlwiIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisuXCIgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKy5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5cIiAkSWQ6IGN1cnNfc3BfZnVuY3MuM3gsdiAxLjYgMjAxMy8wNi8yMiAxNzo1Mzo1OSB0b20gRXhwICQKKy5USCBjdXJzX3NwX2Z1bmNzIDNYICIiCisubmEKKy5oeSAwCisuU0ggTkFNRQorbmV3X3ByZXNjciBcLSBcZkJjdXJzZXNcZlIgc2NyZWVuLXBvaW50ZXIgZXh0ZW5zaW9uCisuYWQKKy5oeQorLlNIIFNZTk9QU0lTCitcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCisubmYKKy5zcAorXGZCaW50IGFzc3VtZV9kZWZhdWx0X2NvbG9yc19zcChTQ1JFRU4qLCBpbnQsIGludCk7XGZSCisuYnIKK1xmQmludCBiYXVkcmF0ZV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGJlZXBfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmJvb2wgY2FuX2NoYW5nZV9jb2xvcl9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGNicmVha19zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGNvbG9yX2NvbnRlbnRfc3AoU0NSRUVOKiwgc2hvcnQsIHNob3J0Kiwgc2hvcnQqLCBzaG9ydCopO1xmUgorLmJyCitcZkJpbnQgY3Vyc19zZXRfc3AoU0NSRUVOKiwgaW50KTtcZlIKKy5icgorXGZCaW50IGRlZmluZV9rZXlfc3AoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBpbnQpO1xmUgorLmJyCitcZkJpbnQgZGVmX3Byb2dfbW9kZV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGRlZl9zaGVsbF9tb2RlX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgZGVsYXlfb3V0cHV0X3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQmludCBkb3VwZGF0ZV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGVjaG9fc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBlbmR3aW5fc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBlcmFzZWNoYXJfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBmaWx0ZXJfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBmbGFzaF9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IGZsdXNoaW5wX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgZ2V0X2VzY2RlbGF5X3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgZ2V0bW91c2Vfc3AoU0NSRUVOKiwgTUVWRU5UKik7XGZSCisuYnIKK1xmQldJTkRPVyogZ2V0d2luX3NwKFNDUkVFTiosIEZJTEUqKTtcZlIKKy5icgorXGZCaW50IGhhbGZkZWxheV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCYm9vbCBoYXNfY29sb3JzX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJib29sIGhhc19pY19zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCYm9vbCBoYXNfaWxfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBoYXNfa2V5X3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQmJvb2wgaGFzX21vdXNlX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgaW5pdF9jb2xvcl9zcChTQ1JFRU4qLCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCk7XGZSCisuYnIKK1xmQmludCBpbml0X3BhaXJfc3AoU0NSRUVOKiwgc2hvcnQsIHNob3J0LCBzaG9ydCk7XGZSCisuYnIKK1xmQmludCBpbnRyZmx1c2hfc3AoU0NSRUVOKiwgV0lORE9XKiwgYm9vbCk7XGZSCisuYnIKK1xmQmJvb2wgaXNlbmR3aW5fc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmJvb2wgaXNfdGVybV9yZXNpemVkX3NwKFNDUkVFTiosIGludCwgaW50KTtcZlIKKy5icgorXGZCY2hhcioga2V5Ym91bmRfc3AoU0NSRUVOKiwgaW50LCBpbnQpO1xmUgorLmJyCitcZkJpbnQga2V5X2RlZmluZWRfc3AoU0NSRUVOKiwgY29uc3QgY2hhciAqKTtcZlIKKy5icgorXGZCTkNVUlNFU19DT05TVCBjaGFyICoga2V5bmFtZV9zcChTQ1JFRU4qLCBpbnQpO1xmUgorLmJyCitcZkJpbnQga2V5b2tfc3AoU0NSRUVOKiwgaW50LCBib29sKTtcZlIKKy5icgorXGZCY2hhciBraWxsY2hhcl9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IG1jcHJpbnRfc3AoU0NSRUVOKiwgY2hhciAqLCBpbnQpO1xmUgorLmJyCitcZkJpbnQgbW91c2VpbnRlcnZhbF9zcChTQ1JFRU4qLCBpbnQpO1xmUgorLmJyCitcZkJtbWFza190IG1vdXNlbWFza19zcChTQ1JFRU4qLCBtbWFza190LCBtbWFza190ICopO1xmUgorLmJyCitcZkJpbnQgbXZjdXJfc3AoU0NSRUVOKiwgaW50LCBpbnQsIGludCwgaW50KTtcZlIKKy5icgorXGZCaW50IG5hcG1zX3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQldJTkRPVyogbmV3cGFkX3NwKFNDUkVFTiosIGludCwgaW50KTtcZlIKKy5icgorXGZCU0NSRUVOKiBuZXdfcHJlc2NyKHZvaWQpO1xmUgorLmJyCitcZkJTQ1JFRU4qIG5ld3Rlcm1fc3AoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICosIEZJTEUgKiwgRklMRSAqKTtcZlIKKy5icgorXGZCV0lORE9XKiBuZXd3aW5fc3AoU0NSRUVOKiwgaW50LCBpbnQsIGludCwgaW50KTtcZlIKKy5icgorXGZCaW50IG5sX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgbm9jYnJlYWtfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBub2VjaG9fc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBub2ZpbHRlcl9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IG5vbmxfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQnZvaWQgbm9xaWZsdXNoX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgbm9yYXdfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBwYWlyX2NvbnRlbnRfc3AoU0NSRUVOKiwgc2hvcnQsIHNob3J0Kiwgc2hvcnQqKTtcZlIKKy5icgorXGZCdm9pZCBxaWZsdXNoX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgcmF3X3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgcmVzZXRfcHJvZ19tb2RlX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgcmVzZXRfc2hlbGxfbW9kZV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IHJlc2V0dHlfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCByZXNpemVfdGVybV9zcChTQ1JFRU4qLCBpbnQsIGludCk7XGZSCisuYnIKK1xmQmludCByZXNpemV0ZXJtX3NwKFNDUkVFTiosIGludCwgaW50KTtcZlIKKy5icgorXGZCaW50IHJlc3RhcnR0ZXJtX3NwKFNDUkVFTiosIE5DVVJTRVNfQ09OU1QgY2hhciosIGludCwgaW50ICopO1xmUgorLmJyCitcZkJpbnQgcmlwb2ZmbGluZV9zcChTQ1JFRU4qLCBpbnQsIGludCAoKikoV0lORE9XKiwgaW50KSk7XGZSCisuYnIKK1xmQmludCBzYXZldHR5X3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgc2NyX2luaXRfc3AoU0NSRUVOKiwgY29uc3QgY2hhciAqKTtcZlIKKy5icgorXGZCaW50IHNjcl9yZXN0b3JlX3NwKFNDUkVFTiosIGNvbnN0IGNoYXIgKik7XGZSCisuYnIKK1xmQmludCBzY3Jfc2V0X3NwKFNDUkVFTiosIGNvbnN0IGNoYXIgKik7XGZSCisuYnIKK1xmQlRFUk1JTkFMKiBzZXRfY3VydGVybV9zcChTQ1JFRU4qLCBURVJNSU5BTCopO1xmUgorLmJyCitcZkJpbnQgc2V0X2VzY2RlbGF5X3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQmludCBzZXRfdGFic2l6ZV9zcChTQ1JFRU4qLCBpbnQpO1xmUgorLmJyCitcZkJpbnQgc2xrX2F0dHJvZmZfc3AoU0NSRUVOKiwgY29uc3QgY2h0eXBlKTtcZlIKKy5icgorXGZCaW50IHNsa19hdHRyb25fc3AoU0NSRUVOKiwgY29uc3QgY2h0eXBlKTtcZlIKKy5icgorXGZCaW50IHNsa19hdHRyX3NldF9zcChTQ1JFRU4qLCBjb25zdCBhdHRyX3QsIHNob3J0LCB2b2lkKik7XGZSCisuYnIKK1xmQmludCBzbGtfYXR0cnNldF9zcChTQ1JFRU4qLCBjb25zdCBjaHR5cGUpO1xmUgorLmJyCitcZkJpbnQgc2xrX2F0dHJfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBzbGtfY2xlYXJfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBzbGtfY29sb3Jfc3AoU0NSRUVOKiwgc2hvcnQpO1xmUgorLmJyCitcZkJpbnQgc2xrX2luaXRfc3AoU0NSRUVOKiwgaW50KTtcZlIKKy5icgorXGZCaW50IHNsa19sYWJlbF9zcChTQ1JFRU4qLCBpbnQpO1xmUgorLmJyCitcZkJpbnQgc2xrX25vdXRyZWZyZXNoX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgc2xrX3JlZnJlc2hfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBzbGtfcmVzdG9yZV9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCaW50IHNsa19zZXRfc3AoU0NSRUVOKiwgaW50LCBjb25zdCBjaGFyICosIGludCk7XGZSCisuYnIKK1xmQmludCBzbGtfdG91Y2hfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmludCBzdGFydF9jb2xvcl9zcChTQ1JFRU4qKTtcZlIKKy5icgorXGZCYXR0cl90IHRlcm1fYXR0cnNfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmNodHlwZSB0ZXJtYXR0cnNfc3AoU0NSRUVOKik7XGZSCisuYnIKK1xmQmNoYXIqIHRlcm1uYW1lX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgdHlwZWFoZWFkX3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQk5DVVJTRVNfQ09OU1QgY2hhciogdW5jdHJsX3NwKFNDUkVFTiosIGNodHlwZSk7XGZSCisuYnIKK1xmQmludCB1bmdldGNoX3NwKFNDUkVFTiosIGludCk7XGZSCisuYnIKK1xmQmludCB1bmdldG1vdXNlX3NwKFNDUkVFTiosTUVWRU5UICopO1xmUgorLmJyCitcZkJpbnQgdW5nZXRfd2NoX3NwKFNDUkVFTiosIGNvbnN0IHdjaGFyX3QpO1xmUgorLmJyCitcZkJpbnQgdXNlX2RlZmF1bHRfY29sb3JzX3NwKFNDUkVFTiopO1xmUgorLmJyCitcZkJ2b2lkIHVzZV9lbnZfc3AoU0NSRUVOKiwgYm9vbCk7XGZSCisuYnIKK1xmQmludCB1c2VfbGVnYWN5X2NvZGluZ19zcChTQ1JFRU4qLCBpbnQpO1xmUgorLmJyCitcZkJpbnQgdmlkX2F0dHJfc3AoU0NSRUVOKiwgYXR0cl90LCBzaG9ydCwgdm9pZCAqKTtcZlIKKy5icgorXGZCaW50IHZpZGF0dHJfc3AoU0NSRUVOKiwgY2h0eXBlKTtcZlIKKy5icgorXGZCaW50IHZpZF9wdXRzX3NwKFNDUkVFTiosIGF0dHJfdCwgc2hvcnQsIHZvaWQgKiwgTkNVUlNFU19TUF9PVVRDKTtcZlIKKy5icgorXGZCaW50IHZpZHB1dHNfc3AoU0NSRUVOKiwgY2h0eXBlLCBOQ1VSU0VTX1NQX09VVEMpO1xmUgorLmJyCitcZkJ3Y2hhcl90KiB3dW5jdHJsX3NwKFNDUkVFTiosIGNjaGFyX3QgKik7XGZSCisuc3AKK1xmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCisuc3AKK1xmQmludCBuZXdfZm9ybV9zcChTQ1JFRU4qLCBGSUVMRCAqKik7XGZSCisuc3AKK1xmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCisuc3AKK1xmQmludCBuZXdfbWVudV9zcChTQ1JFRU4qLCBJVEVNICoqKTtcZlIKKy5zcAorXGZCI2luY2x1ZGUgPHBhbmVsLmg+XGZSCisuc3AKK1xmQmludCBjZWlsaW5nX3BhbmVsKFNDUkVFTiopO1xmUgorLmJyCitcZkJQQU5FTCogZ3JvdW5kX3BhbmVsKFNDUkVFTiopO1xmUgorLmJyCitcZkJpbnQgdXBkYXRlX3BhbmVsc19zcChTQ1JFRU4qKTtcZlIKKy5zcAorXGZCI2luY2x1ZGUgPHRlcm0uaD5cZlIKKy5zcAorXGZCaW50IGRlbF9jdXJ0ZXJtX3NwKFNDUkVFTiosIFRFUk1JTkFMICopO1xmUgorLmJyCitcZkJpbnQgcHV0cF9zcChTQ1JFRU4qLCBjb25zdCBjaGFyICopO1xmUgorLmJyCitcZkJpbnQgdGdldGZsYWdfc3AoU0NSRUVOKiwgY2hhciAqLCBjb25zdCBjaGFyICopO1xmUgorLmJyCitcZkJpbnQgdGdldGVudF9zcChTQ1JFRU4qLCBjaGFyICosIGNvbnN0IGNoYXIgKik7XGZSCisuYnIKK1xmQmludCB0Z2V0bnVtX3NwKFNDUkVFTiosIE5DVVJTRVNfQ09OU1QgY2hhciAqKTtcZlIKKy5icgorXGZCY2hhciogdGdldHN0cl9zcChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgY2hhciAqKik7XGZSCisuYnIKK1xmQmludCB0aWdldGZsYWdfc3AoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICopO1xmUgorLmJyCitcZkJpbnQgdGlnZXRudW1fc3AoU0NSRUVOKiwgTkNVUlNFU19DT05TVCBjaGFyICopO1xmUgorLmJyCitcZkJjaGFyKiB0aWdldHN0cl9zcChTQ1JFRU4qLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKik7XGZSCisuYnIKK1xmQmludCB0cHV0c19zcChTQ1JFRU4qLCBjb25zdCBjaGFyICosIGludCwgTkNVUlNFU19TUF9PVVRDKTtcZlIKKy5hZAorLmJyCisuU0ggREVTQ1JJUFRJT04KK1RoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBmdW5jdGlvbnMgd2hpY2gKK2ltcHJvdmUgdGhlIGFiaWxpdHkgdG8gbWFuYWdlIG11bHRpcGxlIHNjcmVlbnMuCitUaGlzIGZlYXR1cmUgY2FuIGJlIGFkZGVkIHRvIGFueSBvZiB0aGUgY29uZmlndXJhdGlvbnMgc3VwcG9ydGVkIGJ5IG5jdXJzZXM7CitpdCBhZGRzIG5ldyBlbnRyeXBvaW50cword2l0aG91dCBjaGFuZ2luZyB0aGUgbWVhbmluZyBvZiBhbnkgb2YgdGhlIGV4aXN0aW5nIG9uZXMuCisuUFAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5TUyBJTVBST1ZFRCBGVU5DVElPTlMKK01vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBhcmUgbmV3IHZlcnNpb25zIG9mIGV4aXN0aW5nIGZ1bmN0aW9ucy4KK0EgcGFyYW1ldGVyIGlzIGFkZGVkIGF0IHRoZSBmcm9udCBvZiB0aGUgcGFyYW1ldGVyIGxpc3QuCitJdCBpcyBhIFNDUkVFTiBwb2ludGVyLgorLlBQCitUaGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFsbCB1c2UgdGhlIGN1cnJlbnQgc2NyZWVuLAord2hpY2ggaXMgYSBzdGF0aWMgdmFyaWFibGUuCitUaGUgZXh0ZW5kZWQgZnVuY3Rpb25zIHVzZSB0aGUgc3BlY2lmaWVkIHNjcmVlbiwKK3RoZXJlYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgd2hpY2ggbXVzdCBiZSBtb2RpZmllZAordG8gdXBkYXRlIG11bHRpcGxlIHNjcmVlbnMuCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuU1MgTkVXIEZVTkNUSU9OUworSGVyZSBhcmUgdGhlIG5ldyBmdW5jdGlvbnM6CisuVFAgNQorY2VpbGluZ19wYW5lbAordGhpcyByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdG9wbW9zdCBwYW5lbCBpbiB0aGUgZ2l2ZW4gc2NyZWVuLgorLlRQIDUKK2dyb3VuZF9wYW5lbAordGhpcyByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbG93ZXN0IHBhbmVsIGluIHRoZSBnaXZlbiBzY3JlZW4uCisuVFAgNQorbmV3X3ByZXNjcgord2hlbiBjcmVhdGluZyBhIG5ldyBzY3JlZW4sIHRoZSBsaWJyYXJ5IHVzZXMgc3RhdGljIHZhcmlhYmxlcyB3aGljaAoraGF2ZSBiZWVuIHByZXNldCwgZS5nLiwgYnkgXGZCdXNlX2VudlxmUCgzWCksIFxmQmZpbHRlclxmUCgzWCksIGV0Yy4KK1dpdGggdGhlIHNjcmVlbi1wb2ludGVyIGV4dGVuc2lvbiwKK3RoZXJlIGFyZSBzaXR1YXRpb25zIHdoZXJlIGl0IG11c3QgY3JlYXRlIGEgY3VycmVudCBzY3JlZW4gYmVmb3JlCit0aGUgdW5leHRlbmRlZCBsaWJyYXJ5IGRvZXMuCitUaGUgXGZCbmV3X3ByZXNjclxmUCBmdW5jdGlvbiBpcyB1c2VkIGludGVybmFsbHkgdG8gaGFuZGxlIHRoZXNlIGNhc2VzLgorSXQgaXMgYWxzbyBwcm92aWRlZCBhcyBhbiBlbnRyeXBvaW50IHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBjdXN0b21pemUKK3RoZSBsaWJyYXJ5IGluaXRpYWxpemF0aW9uLgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlNIIE5PVEVTCitUaGlzIGV4dGVuc2lvbiBpbnRyb2R1Y2VzIHNvbWUgbmV3IG5hbWVzOgorLlRQIDUKK05DVVJTRVNfU1BfRlVOQ1MKK1RoaXMgaXMgc2V0IHRvIHRoZSBsaWJyYXJ5IHBhdGNoLWxldmVsIG51bWJlci4KK0luIHRoZSB1bmV4dGVuZGVkIGxpYnJhcnksIHRoaXMgaXMgemVybyAoMCksCit0byBtYWtlIGl0IHVzZWZ1bCBmb3IgY2hlY2tpbmcgaWYgdGhlIGV4dGVuc2lvbiBpcyBwcm92aWRlZC4KKy5UUCA1CitOQ1VSU0VTX1NQX05BTUUKK1RoZSBuZXcgZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgbWFjcm8gXGZJTkNVUlNFU19TUF9OQU1FXGZQLAord2hpY2ggaGlkZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4KK0N1cnJlbnRseSB0aGlzIGFkZHMgYSAiX3NwIiBzdWZmaXggdG8gdGhlIG5hbWUgb2YgdGhlIHVuZXh0ZW5kZWQgZnVuY3Rpb24uCitUaGlzIG1hbnVhbCBwYWdlIGluZGV4ZXMgdGhlIGV4dGVuc2lvbnMgc2hvd2luZyB0aGUgZnVsbCBuYW1lLgorSG93ZXZlciB0aGUgcHJvcGVyIHVzYWdlIG9mIHRoZXNlIGZ1bmN0aW9ucyB1c2VzIHRoZSBtYWNybywKK3RvIHByb3ZpZGUgZm9yIHRoZSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24KK2ZvciBzcGVjaWZpYyBsaWJyYXJ5IGNvbmZpZ3VyYXRpb25zLgorLlRQIDUKK05DVVJTRVNfU1BfT1VUQworVGhpcyBpcyBhIG5ldyBmdW5jdGlvbi1wb2ludGVyIHR5cGUgdG8gdXNlIGluIHRoZSBzY3JlZW4tcG9pbnRlciBmdW5jdGlvbnMKK3doZXJlIGFuIFxmSU5DVVJTRVNfT1VUQ1xmUCBpcyB1c2VkIGluIHRoZSB1bmV4dGVuZGVkIGxpYnJhcnkuCisuVFAgNQorTkNVUlNFU19PVVRDCitUaGlzIGlzIGEgZnVuY3Rpb24tcG9pbnRlciB0eXBlIHVzZWQgZm9yIHRoZSBjYXNlcyB3aGVyZSBhIGZ1bmN0aW9uIHBhc3NlcworY2hhcmFjdGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbSwgZS5nLiwgXGZCdmlkcHV0c1xmUCgzWCkuCisuUFAKKy5TSCBQT1JUQUJJTElUWQorVGhlc2Ugcm91dGluZXMgYXJlIHNwZWNpZmljIHRvIG5jdXJzZXMuCitUaGV5IHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCitJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiBuY3Vyc2VzIGV4dGVuc2lvbnMKK2JlIGNvbmRpdGlvbmVkIHVzaW5nIFxmSU5DVVJTRVNfU1BfRlVOQ1NcZlAuCisuU0ggU0VFIEFMU08KK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX29wYXF1ZVxmUigzWCksCitcZkJjdXJzX3RocmVhZHNcZlIoM1gpLgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfdGVybWF0dHJzLjN4IGIvbWFuL2N1cnNfdGVybWF0dHJzLjN4CmluZGV4IDFlMDczMDcuLmUxOTQ1OWYgMTAwNjQ0Ci0tLSBhL21hbi9jdXJzX3Rlcm1hdHRycy4zeAorKysgYi9tYW4vY3Vyc190ZXJtYXR0cnMuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3Rlcm1hdHRycy4zeCx2IDEuMTAgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfdGVybWF0dHJzLjN4LHYgMS4xMyAyMDE1LzA3LzIxIDAwOjAzOjM0IHRvbSBFeHAgJAogLlRIIGN1cnNfdGVybWF0dHJzIDNYICIiCiAuU0ggTkFNRQogXGZCYmF1ZHJhdGVcZlIsCkBAIC0zOSw3ICszOSw3IEBACiBcZkJsb25nbmFtZVxmUiwKIFxmQnRlcm1fYXR0cnNcZlIsCiBcZkJ0ZXJtYXR0cnNcZlIsCi1cZkJ0ZXJtbmFtZVxmUiAtIFxmQmN1cnNlc1xmUiBlbnZpcm9ubWVudCBxdWVyeSByb3V0aW5lcworXGZCdGVybW5hbWVcZlIgXC0gXGZCY3Vyc2VzXGZSIGVudmlyb25tZW50IHF1ZXJ5IHJvdXRpbmVzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5QUApAQCAtNjYsOSArNjYsMTEgQEAKIFxmQmNoYXIgKnRlcm1uYW1lKHZvaWQpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KKy5TUyBiYXVkcmF0ZQogVGhlIFxmQmJhdWRyYXRlXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgb3V0cHV0IHNwZWVkIG9mIHRoZSB0ZXJtaW5hbC4gIFRoZQogbnVtYmVyIHJldHVybmVkIGlzIGluIGJpdHMgcGVyIHNlY29uZCwgZm9yIGV4YW1wbGUgXGZCOTYwMFxmUiwgYW5kIGlzIGFuCiBpbnRlZ2VyLgorLlNTIGVyYXNlY2hhciwgZXJhc2V3Y2hhcgogLlBQCiBUaGUgXGZCZXJhc2VjaGFyXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgdXNlcidzIGN1cnJlbnQgZXJhc2UgY2hhcmFjdGVyLgogLlBQCkBAIC03Niw2ICs3OCw3IEBACiBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBcZkljaFxmUi4KIElmIG5vIGVyYXNlIGNoYXJhY3RlciBoYXMgYmVlbiBkZWZpbmVkLCB0aGUgcm91dGluZSBmYWlscwogYW5kIHRoZSBsb2NhdGlvbiByZWZlcmVuY2VkIGJ5IFxmSWNoXGZSIGlzIG5vdCBjaGFuZ2VkLgorLlNTIGhhc19pcywgaGFzX2lsCiAuUFAKIFRoZSBcZkJoYXNfaWNcZlIgcm91dGluZSBpcyB0cnVlIGlmIHRoZSB0ZXJtaW5hbCBoYXMgaW5zZXJ0LSBhbmQgZGVsZXRlLQogY2hhcmFjdGVyIGNhcGFiaWxpdGllcy4KQEAgLTg0LDYgKzg3LDcgQEAKIGNhcGFiaWxpdGllcywgb3IgY2FuIHNpbXVsYXRlIHRoZW0gdXNpbmcgc2Nyb2xsaW5nIHJlZ2lvbnMuICBUaGlzIG1pZ2h0CiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBpdCB3b3VsZCBiZSBhcHByb3ByaWF0ZSB0byB0dXJuIG9uIHBoeXNpY2FsCiBzY3JvbGxpbmcgdXNpbmcgXGZCc2Nyb2xsb2tcZlIuCisuU1Mga2lsbGNoYXIsIGtpbGx3Y2hhcgogLlBQCiBUaGUgXGZCa2lsbGNoYXJcZlIgcm91dGluZSByZXR1cm5zIHRoZSB1c2VyJ3MgY3VycmVudCBsaW5lIGtpbGwgY2hhcmFjdGVyLgogLlBQCkBAIC05MSw2ICs5NSw3IEBACiBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBcZkljaFxmUi4KIElmIG5vIGxpbmUta2lsbCBjaGFyYWN0ZXIgaGFzIGJlZW4gZGVmaW5lZCwKIHRoZSByb3V0aW5lIGZhaWxzIGFuZCB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBcZkljaFxmUiBpcyBub3QgY2hhbmdlZC4KKy5TUyBsb25nbmFtZQogLlBQCiBUaGUgXGZCbG9uZ25hbWVcZlIgcm91dGluZSByZXR1cm5zIGEgcG9pbnRlciB0byBhIHN0YXRpYyBhcmVhCiBjb250YWluaW5nIGEgdmVyYm9zZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudCB0ZXJtaW5hbC4gIFRoZSBtYXhpbXVtCkBAIC0xMDAsNiArMTA1LDcgQEAKIFxmQnNldF90ZXJtXGZSLCBzbyB0aGUgdmFsdWUgc2hvdWxkIGJlIHNhdmVkIGJldHdlZW4gY2FsbHMgdG8KIFxmQm5ld3Rlcm1cZlIgaWYgXGZCbG9uZ25hbWVcZlIgaXMgZ29pbmcgdG8gYmUgdXNlZCB3aXRoIG11bHRpcGxlCiB0ZXJtaW5hbHMuCisuU1MgdGVybWF0dHJzLCB0ZXJtX2F0dHJzCiAuUFAKIElmIGEgZ2l2ZW4gdGVybWluYWwgZG9lcyBub3Qgc3VwcG9ydCBhIHZpZGVvIGF0dHJpYnV0ZSB0aGF0IGFuCiBhcHBsaWNhdGlvbiBwcm9ncmFtIGlzIHRyeWluZyB0byB1c2UsIFxmQmN1cnNlc1xmUiBtYXkgc3Vic3RpdHV0ZSBhCkBAIC0xMDksNiArMTE1LDcgQEAKIHRlcm1pbmFsIHVzaW5nIFxmSUFfXGZSIGFuZCBcZklXQV9cZlIgY29uc3RhbnRzIHJlc3BlY3RpdmVseS4KIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZnVsIHdoZW4gYSBcZkJjdXJzZXNcZlIgcHJvZ3JhbQogbmVlZHMgY29tcGxldGUgY29udHJvbCBvdmVyIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBzY3JlZW4uCisuU1MgdGVybW5hbWUKIC5QUAogVGhlIFxmQnRlcm1uYW1lXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgdGVybWluYWwgbmFtZSB1c2VkIGJ5IFxmQnNldHVwdGVybVxmUi4KIC5TSCBSRVRVUk4gVkFMVUUKQEAgLTEyNiw5ICsxMzMsMyBAQAogMTQgY2hhcmFjdGVycy4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwgXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwgXGZCY3Vyc19vdXRvcHRzXGZSKDNYKQotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc190ZXJtY2FwLjN4IGIvbWFuL2N1cnNfdGVybWNhcC4zeAppbmRleCA5M2FjMmZiLi4yZjBlZWE4IDEwMDY0NAotLS0gYS9tYW4vY3Vyc190ZXJtY2FwLjN4CisrKyBiL21hbi9jdXJzX3Rlcm1jYXAuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxNiArMjYsMjcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfdGVybWNhcC4zeCx2IDEuMjIgMjAwNy8wNi8wMiAyMDo0MDowNyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfdGVybWNhcC4zeCx2IDEuMzEgMjAxNS8wNC8yNiAwMDo0OToxMCB0b20gRXhwICQKIC5USCBjdXJzX3Rlcm1jYXAgM1ggIiIKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KKy5uYQorLmh5IDAKIC5kcyBuIDUKIC5TSCBOQU1FCitcZkJQQ1xmUiwKK1xmQlVQXGZSLAorXGZCQkNcZlIsCitcZkJvc3BlZWRcZlIsCiBcZkJ0Z2V0ZW50XGZSLAogXGZCdGdldGZsYWdcZlIsCiBcZkJ0Z2V0bnVtXGZSLAogXGZCdGdldHN0clxmUiwKIFxmQnRnb3RvXGZSLAotXGZCdHB1dHNcZlIgLSBkaXJlY3QgXGZCY3Vyc2VzXGZSIGludGVyZmFjZSB0byB0aGUgdGVybWluZm8gY2FwYWJpbGl0eSBkYXRhYmFzZQorXGZCdHB1dHNcZlIgXC0gZGlyZWN0IFxmQmN1cnNlc1xmUiBpbnRlcmZhY2UgdG8gdGhlIHRlcm1pbmZvIGNhcGFiaWxpdHkgZGF0YWJhc2UKKy5hZAorLmh5CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5icgpAQCAtNjcsMzUgKzc4LDgwIEBACiByb3V0aW5lcyBhcmUgZW11bGF0ZWQgdXNpbmcgdGhlIFxmSXRlcm1pbmZvXGZSIGRhdGFiYXNlLiAgVGh1cywgdGhleQogY2FuIG9ubHkgYmUgdXNlZCB0byBxdWVyeSB0aGUgY2FwYWJpbGl0aWVzIG9mIGVudHJpZXMgZm9yIHdoaWNoIGEKIHRlcm1pbmZvIGVudHJ5IGhhcyBiZWVuIGNvbXBpbGVkLgorLlNTIElOSVRJQUxJWkFUSU9OCiAuUFAKIFRoZSBcZkJ0Z2V0ZW50XGZSIHJvdXRpbmUgbG9hZHMgdGhlIGVudHJ5IGZvciBcZkluYW1lXGZSLgotSXQgcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgaWYgdGhlcmUgaXMgbm8gc3VjaCBlbnRyeSwgYW5kIC0xIGlmIHRoZQotdGVybWluZm8gZGF0YWJhc2UgY291bGQgbm90IGJlIGZvdW5kLgorSXQgcmV0dXJuczoKKy5SUyAzCisuVFAgMworMQorb24gc3VjY2VzcywKKy5UUCAzCiswCitpZiB0aGVyZSBpcyBubyBzdWNoIGVudHJ5Cisob3IgdGhhdCBpdCBpcyBhIGdlbmVyaWMgdHlwZSwgaGF2aW5nIHRvbyBsaXR0bGUgaW5mb3JtYXRpb24gZm9yIGN1cnNlcworYXBwbGljYXRpb25zIHRvIHJ1biksIGFuZAorLlRQIDMKK1wtMQoraWYgdGhlIHRlcm1pbmZvIGRhdGFiYXNlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKy5SRQorLlBQCitUaGlzIGRpZmZlcnMgZnJvbSB0aGUgXGZJdGVybWNhcFxmUCBsaWJyYXJ5IGluIHR3byB3YXlzOgorLlJTIDMKKy5iUAogVGhlIGVtdWxhdGlvbiBpZ25vcmVzIHRoZSBidWZmZXIgcG9pbnRlciBcZklicFxmUi4KK1RoZSBcZkl0ZXJtY2FwXGZQIGxpYnJhcnkgd291bGQgc3RvcmUgYSBjb3B5IG9mIHRoZSB0ZXJtaW5hbAorZGVzY3JpcHRpb24gaW4gdGhlIGFyZWEgcmVmZXJlbmNlZCBieSB0aGlzIHBvaW50ZXIuCitIb3dldmVyLCBuY3Vyc2VzIHN0b3JlcyBpdHMgdGVybWluYWwgZGVzY3JpcHRpb25zIGluIGNvbXBpbGVkCitiaW5hcnkgZm9ybSwgd2hpY2ggaXMgbm90IHRoZSBzYW1lIHRoaW5nLgorLmJQCitUaGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gcmV0dXJuIGNvZGVzLgorVGhlIFxmSXRlcm1jYXBcZlAgbGlicmFyeSBkb2VzIG5vdCBjaGVjayBpZiB0aGUgdGVybWluYWwKK2Rlc2NyaXB0aW9uIGlzIG1hcmtlZCB3aXRoIHRoZSBcZklnZW5lcmljXGZQIGNhcGFiaWxpdHksCitvciBpZiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24gaGFzIGN1cnNvci1hZGRyZXNzaW5nLgorLlJFCisuU1MgQ0FQQUJJTElUWSBWQUxVRVMKIC5QUAogVGhlIFxmQnRnZXRmbGFnXGZSIHJvdXRpbmUgZ2V0cyB0aGUgYm9vbGVhbiBlbnRyeSBmb3IgXGZJaWRcZlIsCiBvciB6ZXJvIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCiAuUFAKIFRoZSBcZkJ0Z2V0bnVtXGZSIHJvdXRpbmUgZ2V0cyB0aGUgbnVtZXJpYyBlbnRyeSBmb3IgXGZJaWRcZlIsCi1vciAtMSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLgorb3IgXC0xIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCiAuUFAKIFRoZSBcZkJ0Z2V0c3RyXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgc3RyaW5nIGVudHJ5IGZvciBcZklpZFxmUiwKIG9yIHplcm8gaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KIFVzZSBcZkJ0cHV0c1xmUiB0byBvdXRwdXQgdGhlIHJldHVybmVkIHN0cmluZy4KLVRoZSByZXR1cm4gdmFsdWUgd2lsbCBhbHNvIGJlIGNvcGllZCB0byB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgXGZJYXJlYVxmUiwKK1RoZSBcZklhcmVhXGZQIHBhcmFtZXRlciBpcyB1c2VkIGFzIGZvbGxvd3M6CisuUlMgMworLmJQCitJdCBpcyBhc3N1bWVkIHRvIGJlIHRoZSBhZGRyZXNzIG9mIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBtYW5hZ2VkIGJ5IHRoZQorY2FsbGluZyBhcHBsaWNhdGlvbi4KKy5iUAorSG93ZXZlciwgbmN1cnNlcyBjaGVja3MgdG8gZW5zdXJlIHRoYXQgXGZCYXJlYVxmUCBpcyBub3QgTlVMTCwKK2FuZCBhbHNvIHRoYXQgdGhlIHJlc3VsdGluZyBidWZmZXIgcG9pbnRlciBpcyBub3QgTlVMTC4KK0lmIGVpdGhlciBjaGVjayBmYWlscywgdGhlIFxmSWFyZWFcZlAgcGFyYW1ldGVyIGlzIGlnbm9yZWQuCisuYlAKK0lmIHRoZSBjaGVja3Mgc3VjY2VlZCwgbmN1cnNlcyBhbHNvIGNvcGllcyB0aGUgcmV0dXJuIHZhbHVlIHRvCit0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgXGZJYXJlYVxmUiwKIGFuZCB0aGUgXGZJYXJlYVxmUiB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQgdG8gcG9pbnQgcGFzdCB0aGUgbnVsbCBlbmRpbmcKIHRoaXMgdmFsdWUuCisuYlAKK1RoZSByZXR1cm4gdmFsdWUgaXRzZWxmIGlzIGFuIGFkZHJlc3MgaW4gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uIHdoaWNoCitpcyBsb2FkZWQgaW50byBtZW1vcnkuCisuUkUKIC5QUAogT25seSB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIFxmQmlkXGZSIHBhcmFtZXRlciBvZgogXGZCdGdldGZsYWdcZlIsCiBcZkJ0Z2V0bnVtXGZSIGFuZAogXGZCdGdldHN0clxmUiBhcmUgY29tcGFyZWQgaW4gbG9va3Vwcy4KKy5TUyBGT1JNQVRUSU5HIENBUEFCSUxJVElFUwogLlBQCiBUaGUgXGZCdGdvdG9cZlIgcm91dGluZSBpbnN0YW50aWF0ZXMgdGhlIHBhcmFtZXRlcnMgaW50byB0aGUgZ2l2ZW4gY2FwYWJpbGl0eS4KIFRoZSBvdXRwdXQgZnJvbSB0aGlzIHJvdXRpbmUgaXMgdG8gYmUgcGFzc2VkIHRvIFxmQnRwdXRzXGZSLgogLlBQCiBUaGUgXGZCdHB1dHNcZlIgcm91dGluZSBpcyBkZXNjcmliZWQgb24gdGhlIFxmQmN1cnNfdGVybWluZm9cZlIoM1gpIG1hbnVhbAogcGFnZS4gIEl0IGNhbiByZXRyaWV2ZSBjYXBhYmlsaXRpZXMgYnkgZWl0aGVyIHRlcm1jYXAgb3IgdGVybWluZm8gbmFtZS4KKy5TUyBHTE9CQUwgVkFSSUFCTEVTCiAuUFAKIFRoZSB2YXJpYWJsZXMKIFxmQlBDXGZSLApAQCAtMTU3LDExICsyMTMsMjggQEAKIGUuZy4sIG5vdCBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGlucHV0IGFuZCBvdXRwdXQuCiBJbiBwYXJ0aWN1bGFyLCBzb21lIGFwcGxpY2F0aW9ucyBhcmUgcmVwb3J0ZWQgdG8gZGVjbGFyZSBhbmQvb3IKIG1vZGlmeSBcZkJvc3BlZWRcZlIuCisuUFAKK1RoZSBjb21tZW50IHRoYXQgb25seSB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIFxmQmlkXGZSIHBhcmFtZXRlcgorYXJlIHVzZWQgZXNjYXBlcyBtYW55IGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuCitUaGUgb3JpZ2luYWwgQlNEIDQuMiB0ZXJtY2FwIGxpYnJhcnkgKGFuZCBoaXN0b3JpY2FsIHJlbGljcyB0aGVyZW9mKQorZGlkIG5vdCByZXF1aXJlIGEgdHJhaWxpbmcgbnVsbCBOVUwgb24gdGhlIHBhcmFtZXRlciBuYW1lIHBhc3NlZAordG8gXGZCdGdldHN0clxmUCwgXGZCdGdldG51bVxmUCBhbmQgXGZCdGdldGZsYWdcZlAuCitTb21lIGFwcGxpY2F0aW9ucyBhc3N1bWUgdGhhdCB0aGUgdGVybWNhcCBpbnRlcmZhY2UgZG9lcyBub3QgcmVxdWlyZQordGhlIHRyYWlsaW5nIE5VTCBmb3IgdGhlIHBhcmFtZXRlciBuYW1lLgorVGFraW5nIGludG8gYWNjb3VudCB0aGVzZSBpc3N1ZXM6CisuYlAKK0FzIGEgc3BlY2lhbCBjYXNlLAorXGZCdGdldGZsYWdcZlAgbWF0Y2hlZCBhZ2FpbnN0IGEgc2luZ2xlLWNoYXJhY3RlciBpZGVudGlmaWVyCitwcm92aWRlZCB0aGF0IHdhcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4KK1lvdSBzaG91bGQgbm90IHJlbHkgdXBvbiB0aGlzIGJlaGF2aW9yIGluIHBvcnRhYmxlIHByb2dyYW1zLgorVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXNhbGxvd3MgbWF0Y2hlcyBhZ2FpbnN0IHNpbmdsZS1jaGFyYWN0ZXIgY2FwYWJpbGl0eSBuYW1lcy4KKy5iUAorVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXNhbGxvd3MgbWF0Y2hlcyBieSB0aGUgdGVybWNhcCBpbnRlcmZhY2UgYWdhaW5zdAorZXh0ZW5kZWQgY2FwYWJpbGl0eSBuYW1lcyB3aGljaCBhcmUgbG9uZ2VyIHRoYW4gdHdvIGNoYXJhY3RlcnMuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQnRlcm1pbmZvXGZSKFwqbiksIFxmQnB1dGNcZlIoMykuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNlc1xmUigzWCksCitcZkJ0ZXJtaW5mb1xmUihcKm4pLAorXGZCdGVybV92YXJpYWJsZXNcZlIoM1gpLAorXGZCcHV0Y1xmUigzKS4KKy5zcAoraHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKZGlmZiAtLWdpdCBhL21hbi9jdXJzX3Rlcm1pbmZvLjN4IGIvbWFuL2N1cnNfdGVybWluZm8uM3gKaW5kZXggNDQxMmE2YS4uN2Q0NDBiZiAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfdGVybWluZm8uM3gKKysrIGIvbWFuL2N1cnNfdGVybWluZm8uM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OS0yMDExLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw4ICsyNiwxNSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc190ZXJtaW5mby4zeCx2IDEuMzAgMjAwOC8wOC8xNiAyMDo1MzoyNyB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfdGVybWluZm8uM3gsdiAxLjQzIDIwMTMvMDcvMjAgMTk6Mjk6NTkgdG9tIEV4cCAkCiAuVEggY3Vyc190ZXJtaW5mbyAzWCAiIgorLmllIFxuKC5nIC5kcyBgYCBcKGxxCisuZWwgICAgICAgLmRzIGBgIGBgCisuaWUgXG4oLmcgLmRzICcnIFwocnEKKy5lbCAgICAgICAuZHMgJycgJycKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KIC5kcyBuIDUKIC5uYQogLmh5IDAKQEAgLTQyLDEyICs0OSwxMyBAQAogXGZCdGlnZXRmbGFnXGZSLAogXGZCdGlnZXRudW1cZlIsCiBcZkJ0aWdldHN0clxmUiwKK1xmQnRpcGFybVxmUiwKIFxmQnRwYXJtXGZSLAogXGZCdHB1dHNcZlIsCiBcZkJ2aWRfYXR0clxmUiwKIFxmQnZpZF9wdXRzXGZSLAogXGZCdmlkYXR0clxmUiwKLVxmQnZpZHB1dHNcZlIgLSBcZkJjdXJzZXNcZlIgaW50ZXJmYWNlcyB0byB0ZXJtaW5mbyBkYXRhYmFzZQorXGZCdmlkcHV0c1xmUiBcLSBcZkJjdXJzZXNcZlIgaW50ZXJmYWNlcyB0byB0ZXJtaW5mbyBkYXRhYmFzZQogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtNzYsNyArODQsNyBAQAogLmJyCiBcZkJpbnQgdmlkYXR0cihjaHR5cGUgXGZSXGZJYXR0cnNcZlJcZkIpO1xmUgogLmJyCi1cZkJpbnQgdmlkX3B1dHMoYXR0cl90IFxmUlxmSWF0dHJzXGZSXGZCLCBzaG9ydCBcZlJcZklwYWlyXGZSXGZCLCB2b2lkICpcZlJcZklvcHRzXGZSXGZCLCBpbnQgKCpcZlJcZklwdXRjXGZSXGZCKShjaGFyKSk7XGZSCitcZkJpbnQgdmlkX3B1dHMoYXR0cl90IFxmUlxmSWF0dHJzXGZSXGZCLCBzaG9ydCBcZlJcZklwYWlyXGZSXGZCLCB2b2lkICpcZlJcZklvcHRzXGZSXGZCLCBpbnQgKCpcZlJcZklwdXRjXGZSXGZCKShpbnQpKTtcZlIKIC5icgogXGZCaW50IHZpZF9hdHRyKGF0dHJfdCBcZlJcZklhdHRyc1xmUlxmQiwgc2hvcnQgXGZSXGZJcGFpclxmUlxmQiwgdm9pZCAqXGZSXGZJb3B0c1xmUlxmQik7XGZSCiAuYnIKQEAgLTg4LDYgKzk2LDggQEAKIC5icgogXGZCY2hhciAqdGlnZXRzdHIoY2hhciAqXGZSXGZJY2FwbmFtZVxmUlxmQik7XGZSCiAuYnIKK1xmQmNoYXIgKnRpcGFybShjb25zdCBjaGFyICpcZlJcZklzdHJcZlJcZkIsIC4uLik7XGZSCisuYnIKIC5maQogLlNIIERFU0NSSVBUSU9OCiBUaGVzZSBsb3ctbGV2ZWwgcm91dGluZXMgbXVzdCBiZSBjYWxsZWQgYnkgcHJvZ3JhbXMgdGhhdCBoYXZlIHRvIGRlYWwKQEAgLTk1LDQwICsxMDUsNTQgQEAKIGNhcGFiaWxpdGllcywgc3VjaCBhcyBwcm9ncmFtbWluZyBmdW5jdGlvbiBrZXlzLiAgRm9yIGFsbCBvdGhlcgogZnVuY3Rpb25hbGl0eSwgXGZCY3Vyc2VzXGZSIHJvdXRpbmVzIGFyZSBtb3JlIHN1aXRhYmxlIGFuZCB0aGVpciB1c2UgaXMKIHJlY29tbWVuZGVkLgorLlNTIEluaXRpYWxpemF0aW9uCiAuUFAKIEluaXRpYWxseSwgXGZCc2V0dXB0ZXJtXGZSIHNob3VsZCBiZSBjYWxsZWQuICBOb3RlIHRoYXQKIFxmQnNldHVwdGVybVxmUiBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBieSBcZkJpbml0c2NyXGZSIGFuZAogXGZCbmV3dGVybVxmUi4gIFRoaXMgZGVmaW5lcyB0aGUgc2V0IG9mIHRlcm1pbmFsLWRlcGVuZGVudCB2YXJpYWJsZXMKIFtsaXN0ZWQgaW4gXGZCdGVybWluZm9cZlIoXCpuKV0uCisuUFAKK0VhY2ggaW5pdGlhbGl6YXRpb24gcm91dGluZSBwcm92aWRlcyBhcHBsaWNhdGlvbnMgd2l0aCB0aGUKK3Rlcm1pbmFsIGNhcGFiaWxpdGllcyBlaXRoZXIgZGlyZWN0bHkgKHZpYSBoZWFkZXIgZGVmaW5pdGlvbnMpLAorb3IgYnkgc3BlY2lhbCBmdW5jdGlvbnMuCitUaGUgaGVhZGVyIGZpbGVzIFxmQmN1cnNlcy5oXGZSIGFuZCBcZkJ0ZXJtLmhcZlIgc2hvdWxkIGJlIGluY2x1ZGVkIChpbiB0aGlzCitvcmRlcikgdG8gZ2V0IHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlc2Ugc3RyaW5ncywgbnVtYmVycywgYW5kIGZsYWdzLgorLlBQCiBUaGUgXGZCdGVybWluZm9cZlIgdmFyaWFibGVzCiBcZkJsaW5lc1xmUiBhbmQgXGZCY29sdW1uc1xmUiBhcmUgaW5pdGlhbGl6ZWQgYnkgXGZCc2V0dXB0ZXJtXGZSIGFzCiBmb2xsb3dzOgotLlJTCi0uUFAKKy5iUAogSWYgXGZCdXNlX2VudihGQUxTRSlcZlIgaGFzIGJlZW4gY2FsbGVkLCB2YWx1ZXMgZm9yCiBcZkJsaW5lc1xmUiBhbmQgXGZCY29sdW1uc1xmUiBzcGVjaWZpZWQgaW4gXGZCdGVybWluZm9cZlIgYXJlIHVzZWQuCi0uUFAKKy5iUAogT3RoZXJ3aXNlLCBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIFxmQkxJTkVTXGZSIGFuZCBcZkJDT0xVTU5TXGZSCiBleGlzdCwgdGhlaXIgdmFsdWVzIGFyZSB1c2VkLiAgSWYgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRvIG5vdAogZXhpc3QgYW5kIHRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcgaW4gYSB3aW5kb3csIHRoZSBjdXJyZW50IHdpbmRvdyBzaXplCiBpcyB1c2VkLiAgT3RoZXJ3aXNlLCBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRvIG5vdCBleGlzdCwgdGhlCiB2YWx1ZXMgZm9yIFxmQmxpbmVzXGZSIGFuZCBcZkJjb2x1bW5zXGZSIHNwZWNpZmllZCBpbiB0aGUKIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlIGFyZSB1c2VkLgotLlJFCiAuUFAKLVRoZSBoZWFkZXIgZmlsZXMgXGZCY3Vyc2VzLmhcZlIgYW5kIFxmQnRlcm0uaFxmUiBzaG91bGQgYmUgaW5jbHVkZWQgKGluIHRoaXMKLW9yZGVyKSB0byBnZXQgdGhlIGRlZmluaXRpb25zIGZvciB0aGVzZSBzdHJpbmdzLCBudW1iZXJzLCBhbmQgZmxhZ3MuCiBQYXJhbWV0ZXJpemVkIHN0cmluZ3Mgc2hvdWxkIGJlIHBhc3NlZCB0aHJvdWdoIFxmQnRwYXJtXGZSIHRvIGluc3RhbnRpYXRlIHRoZW0uIAogQWxsIFxmQnRlcm1pbmZvXGZSIHN0cmluZ3MgW2luY2x1ZGluZyB0aGUgb3V0cHV0IG9mIFxmQnRwYXJtXGZSXSBzaG91bGQgYmUgcHJpbnRlZAotd2l0aCBcZkJ0cHV0c1xmUiBvciBcZkJwdXRwXGZSLiAgQ2FsbCB0aGUgXGZCcmVzZXRfc2hlbGxfbW9kZVxmUiB0byByZXN0b3JlIHRoZQotdHR5IG1vZGVzIGJlZm9yZSBleGl0aW5nIFtzZWUgXGZCY3Vyc19rZXJuZWxcZlIoM1gpXS4gIFByb2dyYW1zIHdoaWNoIHVzZQotY3Vyc29yIGFkZHJlc3Npbmcgc2hvdWxkIG91dHB1dCBcZkJlbnRlcl9jYV9tb2RlXGZSIHVwb24gc3RhcnR1cCBhbmQgc2hvdWxkCi1vdXRwdXQgXGZCZXhpdF9jYV9tb2RlXGZSIGJlZm9yZSBleGl0aW5nLiAgUHJvZ3JhbXMgZGVzaXJpbmcgc2hlbGwgZXNjYXBlcwotc2hvdWxkIGNhbGwKK3dpdGggXGZCdHB1dHNcZlIgb3IgXGZCcHV0cFxmUi4KK0NhbGwgXGZCcmVzZXRfc2hlbGxfbW9kZVxmUiB0byByZXN0b3JlIHRoZQordHR5IG1vZGVzIGJlZm9yZSBleGl0aW5nIFtzZWUgXGZCY3Vyc19rZXJuZWxcZlIoM1gpXS4KIC5QUAotXGZCcmVzZXRfc2hlbGxfbW9kZVxmUiBhbmQgb3V0cHV0IFxmQmV4aXRfY2FfbW9kZVxmUiBiZWZvcmUgdGhlIHNoZWxsCi1pcyBjYWxsZWQgYW5kIHNob3VsZCBvdXRwdXQgXGZCZW50ZXJfY2FfbW9kZVxmUiBhbmQgY2FsbAotXGZCcmVzZXRfcHJvZ19tb2RlXGZSIGFmdGVyIHJldHVybmluZyBmcm9tIHRoZSBzaGVsbC4KK1Byb2dyYW1zIHdoaWNoIHVzZQorY3Vyc29yIGFkZHJlc3Npbmcgc2hvdWxkCisuYlAKK291dHB1dCBcZkJlbnRlcl9jYV9tb2RlXGZSIHVwb24gc3RhcnR1cCBhbmQKKy5iUAorb3V0cHV0IFxmQmV4aXRfY2FfbW9kZVxmUiBiZWZvcmUgZXhpdGluZy4KKy5QUAorUHJvZ3JhbXMgd2hpY2ggZXhlY3V0ZSBzaGVsbCBzdWJwcm9jZXNzZXMgc2hvdWxkCisuYlAKK2NhbGwgXGZCcmVzZXRfc2hlbGxfbW9kZVxmUiBhbmQKK291dHB1dCBcZkJleGl0X2NhX21vZGVcZlIgYmVmb3JlIHRoZSBzaGVsbAoraXMgY2FsbGVkIGFuZAorLmJQCitvdXRwdXQgXGZCZW50ZXJfY2FfbW9kZVxmUiBhbmQKK2NhbGwgXGZCcmVzZXRfcHJvZ19tb2RlXGZSIGFmdGVyIHJldHVybmluZyBmcm9tIHRoZSBzaGVsbC4KIC5QUAogVGhlIFxmQnNldHVwdGVybVxmUiByb3V0aW5lIHJlYWRzIGluIHRoZSBcZkJ0ZXJtaW5mb1xmUiBkYXRhYmFzZSwKIGluaXRpYWxpemluZyB0aGUgXGZCdGVybWluZm9cZlIgc3RydWN0dXJlcywgYnV0IGRvZXMgbm90IHNldCB1cCB0aGUKQEAgLTE0MywxOSArMTY3LDIzIEBACiBBIHJldHVybiB2YWx1ZSBvZiBcZkJPS1xmUiBjb21iaW5lZCB3aXRoIHN0YXR1cyBvZiBcZkIxXGZSIGluIFxmSWVycnJldFxmUgogaXMgbm9ybWFsLgogSWYgXGZCRVJSXGZSIGlzIHJldHVybmVkLCBleGFtaW5lIFxmSWVycnJldFxmUjoKLS5SUwogLlRQIDUKIC5CIDEKIG1lYW5zIHRoYXQgdGhlIHRlcm1pbmFsIGlzIGhhcmRjb3B5LCBjYW5ub3QgYmUgdXNlZCBmb3IgY3Vyc2VzIGFwcGxpY2F0aW9ucy4KKy5JUAorXGZCc2V0dXB0ZXJtXGZQIGRldGVybWluZXMgaWYgdGhlIGVudHJ5IGlzIGEgaGFyZGNvcHkgdHlwZSBieQorY2hlY2tpbmcgdGhlIFxmSWhjXGZQIChcZkloYXJkY29weVxmUCkgY2FwYWJpbGl0eS4KIC5UUCA1CiAuQiAwCiBtZWFucyB0aGF0IHRoZSB0ZXJtaW5hbCBjb3VsZCBub3QgYmUgZm91bmQsCiBvciB0aGF0IGl0IGlzIGEgZ2VuZXJpYyB0eXBlLAogaGF2aW5nIHRvbyBsaXR0bGUgaW5mb3JtYXRpb24gZm9yIGN1cnNlcyBhcHBsaWNhdGlvbnMgdG8gcnVuLgorLklQCitcZkJzZXR1cHRlcm1cZlAgZGV0ZXJtaW5lcyBpZiB0aGUgZW50cnkgaXMgYSBnZW5lcmljIHR5cGUgYnkKK2NoZWNraW5nIHRoZSBcZklnblxmUCAoXGZJZ2VuZXJpY1xmUCkgY2FwYWJpbGl0eS4KIC5UUCA1Ci0uQiAtMQorLkIgXC0xCiBtZWFucyB0aGF0IHRoZSBcZkJ0ZXJtaW5mb1xmUiBkYXRhYmFzZSBjb3VsZCBub3QgYmUgZm91bmQuCi0uUkUKIC5QUAogSWYgXGZJZXJycmV0XGZSIGlzCiBudWxsLCBcZkJzZXR1cHRlcm1cZlIgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgdXBvbiBmaW5kaW5nIGFuIGVycm9yCkBAIC0xNjUsMTggKzE5MywzMyBAQAogLnNwCiB3aGljaCB1c2VzIGFsbCB0aGUgZGVmYXVsdHMgYW5kIHNlbmRzIHRoZSBvdXRwdXQgdG8gXGZCc3Rkb3V0XGZSLgogLlBQCi1UaGUgXGZCc2V0dGVybVxmUiByb3V0aW5lIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IFxmQnNldHVwdGVybVxmUi4gIFRoZSBjYWxsOgorVGhlIFxmQnNldHRlcm1cZlIgcm91dGluZSB3YXMgcmVwbGFjZWQgYnkgXGZCc2V0dXB0ZXJtXGZSLiAgVGhlIGNhbGw6CiAuc3AKICAgICAgIFxmQnNldHVwdGVybShcZlJcZkl0ZXJtXGZSXGZCLCAxLCAoaW50ICopMClcZlIKIC5zcAogcHJvdmlkZXMgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBhcyBcZkJzZXR0ZXJtKFxmUlxmSXRlcm1cZlJcZkIpXGZSLgotVGhlIFxmQnNldHRlcm1cZlIgcm91dGluZSBpcyBpbmNsdWRlZCBoZXJlIGZvciBCU0QgY29tcGF0aWJpbGl0eSwgYW5kCitUaGUgXGZCc2V0dGVybVxmUiByb3V0aW5lIGlzIHByb3ZpZGVkIGZvciBCU0QgY29tcGF0aWJpbGl0eSwgYW5kCiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG5ldyBwcm9ncmFtcy4KKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5TUyBUaGUgVGVybWluYWwgU3RhdGUKIC5QUAotVGhlIFxmQnNldF9jdXJ0ZXJtXGZSIHJvdXRpbmUgc2V0cyB0aGUgdmFyaWFibGUgXGZCY3VyX3Rlcm1cZlIgdG8KK1RoZSBcZkJzZXR1cHRlcm1cZlIgcm91dGluZSBzdG9yZXMgaXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZXJtaW5hbAoraW4gYSBcZkJURVJNSU5BTFxmUCBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSB0aGUgZ2xvYmFsIHZhcmlhYmxlIFxmQmN1cl90ZXJtXGZQLgorSWYgaXQgZGV0ZWN0cyBhbiBlcnJvciwKK29yIGRlY2lkZXMgdGhhdCB0aGUgdGVybWluYWwgaXMgdW5zdWl0YWJsZSAoaGFyZGNvcHkgb3IgZ2VuZXJpYyksCitpdCBkaXNjYXJkcyB0aGlzIGluZm9ybWF0aW9uLAorbWFraW5nIGl0IG5vdCBhdmFpbGFibGUgdG8gYXBwbGljYXRpb25zLgorLlBQCitJZiBcZkJzZXR1cHRlcm1cZlAgaXMgY2FsbGVkIHJlcGVhdGVkbHkgZm9yIHRoZSBzYW1lIHRlcm1pbmFsIHR5cGUsCitpdCB3aWxsIHJldXNlIHRoZSBpbmZvcm1hdGlvbi4KK0l0IG1haW50YWlucyBvbmx5IG9uZSBjb3B5IG9mIGEgZ2l2ZW4gdGVybWluYWwncyBjYXBhYmlsaXRpZXMgaW4gbWVtb3J5LgorSWYgaXQgaXMgY2FsbGVkIGZvciBkaWZmZXJlbnQgdGVybWluYWwgdHlwZXMsCitcZkJzZXR1cHRlcm1cZlAgYWxsb2NhdGVzIG5ldyBzdG9yYWdlIGZvciBlYWNoIHNldCBvZiB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMuCisuUFAKK1RoZSBcZkJzZXRfY3VydGVybVxmUiByb3V0aW5lIHNldHMgXGZCY3VyX3Rlcm1cZlIgdG8KIFxmSW50ZXJtXGZSLCBhbmQgbWFrZXMgYWxsIG9mIHRoZSBcZkJ0ZXJtaW5mb1xmUiBib29sZWFuLCBudW1lcmljLCBhbmQKLXN0cmluZyB2YXJpYWJsZXMgdXNlIHRoZSB2YWx1ZXMgZnJvbSBcZkludGVybVxmUi4gIEl0IHJldHVybnMgdGhlIG9sZCB2YWx1ZQotb2YgXGZCY3VyX3Rlcm1cZlIuCitzdHJpbmcgdmFyaWFibGVzIHVzZSB0aGUgdmFsdWVzIGZyb20gXGZJbnRlcm1cZlIuCitJdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUgb2YgXGZCY3VyX3Rlcm1cZlIuCiAuUFAKIFRoZSBcZkJkZWxfY3VydGVybVxmUiByb3V0aW5lIGZyZWVzIHRoZSBzcGFjZSBwb2ludGVkIHRvIGJ5CiBcZklvdGVybVxmUiBhbmQgbWFrZXMgaXQgYXZhaWxhYmxlIGZvciBmdXJ0aGVyIHVzZS4gIElmIFxmSW90ZXJtXGZSIGlzCkBAIC0xODYsMTYgKzIyOSwyNSBAQAogLlBQCiBUaGUgXGZCcmVzdGFydHRlcm1cZlIgcm91dGluZSBpcyBzaW1pbGFyIHRvIFxmQnNldHVwdGVybVxmUiBhbmQgXGZCaW5pdHNjclxmUiwKIGV4Y2VwdCB0aGF0IGl0IGlzIGNhbGxlZCBhZnRlciByZXN0b3JpbmcgbWVtb3J5IHRvIGEgcHJldmlvdXMgc3RhdGUgKGZvcgotZXhhbXBsZSwgd2hlbiByZWxvYWRpbmcgYSBnYW1lIHNhdmVkIGFzIGEgY29yZSBpbWFnZSBkdW1wKS4gIEl0IGFzc3VtZXMgdGhhdAotdGhlIHdpbmRvd3MgYW5kIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG9wdGlvbnMgYXJlIHRoZSBzYW1lIGFzIHdoZW4gbWVtb3J5IHdhcwotc2F2ZWQsIGJ1dCB0aGUgdGVybWluYWwgdHlwZSBhbmQgYmF1ZCByYXRlIG1heSBiZSBkaWZmZXJlbnQuICBBY2NvcmRpbmdseSwKLWl0IHNhdmVzIHZhcmlvdXMgdHR5IHN0YXRlIGJpdHMsIGNhbGxzIFxmQnNldHVwdGVybVxmUCwKLWFuZCB0aGVuIHJlc3RvcmVzIHRoZSBiaXRzLgorZXhhbXBsZSwgd2hlbiByZWxvYWRpbmcgYSBnYW1lIHNhdmVkIGFzIGEgY29yZSBpbWFnZSBkdW1wKS4KK1xmQnJlc3RhcnR0ZXJtXGZQIGFzc3VtZXMgdGhhdCB0aGUgd2luZG93cyBhbmQgdGhlIGlucHV0IGFuZCBvdXRwdXQgb3B0aW9ucworYXJlIHRoZSBzYW1lIGFzIHdoZW4gbWVtb3J5IHdhcyBzYXZlZCwKK2J1dCB0aGUgdGVybWluYWwgdHlwZSBhbmQgYmF1ZCByYXRlIG1heSBiZSBkaWZmZXJlbnQuCitBY2NvcmRpbmdseSwgXGZCcmVzdGFydHRlcm1cZlAgc2F2ZXMgdmFyaW91cyB0dHkgc3RhdGUgYml0cywKK2NhbGxzIFxmQnNldHVwdGVybVxmUCwgYW5kIHRoZW4gcmVzdG9yZXMgdGhlIGJpdHMuCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuU1MgRm9ybWF0dGluZyBPdXRwdXQKIC5QUAogVGhlIFxmQnRwYXJtXGZSIHJvdXRpbmUgaW5zdGFudGlhdGVzIHRoZSBzdHJpbmcgXGZJc3RyXGZSIHdpdGgKIHBhcmFtZXRlcnMgXGZJcGlcZlIuICBBIHBvaW50ZXIgaXMgcmV0dXJuZWQgdG8gdGhlIHJlc3VsdCBvZiBcZklzdHJcZlIKIHdpdGggdGhlIHBhcmFtZXRlcnMgYXBwbGllZC4KIC5QUAorXGZCdGlwYXJtXGZQIGlzIGEgbmV3ZXIgZm9ybSBvZiBcZkJ0cGFybVxmUCB3aGljaCB1c2VzIFxmSTxzdGRhcmcuaD5cZlAKK3JhdGhlciB0aGFuIGEgZml4ZWQtcGFyYW1ldGVyIGxpc3QuCitJdHMgbnVtZXJpYyBwYXJhbWV0ZXJzIGFyZSBpbnRlZ2VycyAoaW50KSByYXRoZXIgdGhhbiBsb25ncy4KKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5TUyBPdXRwdXQgRnVuY3Rpb25zCisuUFAKIFRoZSBcZkJ0cHV0c1xmUiByb3V0aW5lIGFwcGxpZXMgcGFkZGluZyBpbmZvcm1hdGlvbiB0byB0aGUgc3RyaW5nCiBcZklzdHJcZlIgYW5kIG91dHB1dHMgaXQuICBUaGUgXGZJc3RyXGZSIG11c3QgYmUgYSB0ZXJtaW5mbyBzdHJpbmcKIHZhcmlhYmxlIG9yIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBcZkJ0cGFybVxmUiwgXGZCdGdldHN0clxmUiwgb3IKQEAgLTIyOCwyNiArMjgwLDQ4IEBACiAuUFAKIFRoZSBcZkJtdmN1clxmUiByb3V0aW5lIHByb3ZpZGVzIGxvdy1sZXZlbCBjdXJzb3IgbW90aW9uLiAgSXQgdGFrZXMKIGVmZmVjdCBpbW1lZGlhdGVseSAocmF0aGVyIHRoYW4gYXQgdGhlIG5leHQgcmVmcmVzaCkuCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuU1MgVGVybWluYWwgQ2FwYWJpbGl0eSBGdW5jdGlvbnMKIC5QUAogVGhlIFxmQnRpZ2V0ZmxhZ1xmUiwgXGZCdGlnZXRudW1cZlIgYW5kIFxmQnRpZ2V0c3RyXGZSIHJvdXRpbmVzIHJldHVybgogdGhlIHZhbHVlIG9mIHRoZSBjYXBhYmlsaXR5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFxmQnRlcm1pbmZvXGZSCiBcZkljYXBuYW1lXGZSIHBhc3NlZCB0byB0aGVtLCBzdWNoIGFzIFxmQnhlbmxcZlIuCi0uUFAKLVRoZSBcZkJ0aWdldGZsYWdcZlIgcm91dGluZSByZXR1cm5zIHRoZSB2YWx1ZSBcZkItMVxmUiBpZgotXGZJY2FwbmFtZVxmUiBpcyBub3QgYSBib29sZWFuIGNhcGFiaWxpdHksCi1vciBcZkIwXGZSIGlmIGl0IGlzIGNhbmNlbGVkIG9yIGFic2VudCBmcm9tIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4KLS5QUAotVGhlIFxmQnRpZ2V0bnVtXGZSIHJvdXRpbmUgcmV0dXJucyB0aGUgdmFsdWUgXGZCLTJcZlIgaWYKLVxmSWNhcG5hbWVcZlIgaXMgbm90IGEgbnVtZXJpYyBjYXBhYmlsaXR5LAotb3IgXGZCLTFcZlIgaWYgaXQgaXMgY2FuY2VsZWQgb3IgYWJzZW50IGZyb20gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgotLlBQCi1UaGUgXGZCdGlnZXRzdHJcZlIgcm91dGluZSByZXR1cm5zIHRoZSB2YWx1ZSBcZkIoY2hhciAqKS0xXGZSCi1pZiBcZkljYXBuYW1lXGZSIGlzIG5vdCBhIHN0cmluZyBjYXBhYmlsaXR5LAotb3IgXGZCMFxmUiBpZiBpdCBpcyBjYW5jZWxlZCBvciBhYnNlbnQgZnJvbSB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCi0uUFAKIFRoZSBcZkljYXBuYW1lXGZSIGZvciBlYWNoIGNhcGFiaWxpdHkgaXMgZ2l2ZW4gaW4gdGhlIHRhYmxlIGNvbHVtbiBlbnRpdGxlZAogXGZJY2FwbmFtZVxmUiBjb2RlIGluIHRoZSBjYXBhYmlsaXRpZXMgc2VjdGlvbiBvZiBcZkJ0ZXJtaW5mb1xmUihcKm4pLgotLnNwCisuUFAKK1RoZXNlIHJvdXRpbmVzIHJldHVybiBzcGVjaWFsIHZhbHVlcyB0byBkZW5vdGUgZXJyb3JzLgorLlBQCitUaGUgXGZCdGlnZXRmbGFnXGZSIHJvdXRpbmUgcmV0dXJucworLlRQCitcZkJcLTFcZlIKK2lmIFxmSWNhcG5hbWVcZlIgaXMgbm90IGEgYm9vbGVhbiBjYXBhYmlsaXR5LAorb3IKKy5UUAorXGZCMFxmUgoraWYgaXQgaXMgY2FuY2VsZWQgb3IgYWJzZW50IGZyb20gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgorLlBQCitUaGUgXGZCdGlnZXRudW1cZlIgcm91dGluZSByZXR1cm5zCisuVFAKK1xmQlwtMlxmUgoraWYgXGZJY2FwbmFtZVxmUiBpcyBub3QgYSBudW1lcmljIGNhcGFiaWxpdHksIG9yCisuVFAKK1xmQlwtMVxmUgoraWYgaXQgaXMgY2FuY2VsZWQgb3IgYWJzZW50IGZyb20gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgorLlBQCitUaGUgXGZCdGlnZXRzdHJcZlIgcm91dGluZSByZXR1cm5zCisuVFAKK1xmQihjaGFyICopXC0xXGZSCitpZiBcZkljYXBuYW1lXGZSIGlzIG5vdCBhIHN0cmluZyBjYXBhYmlsaXR5LAorb3IKKy5UUAorXGZCMFxmUgoraWYgaXQgaXMgY2FuY2VsZWQgb3IgYWJzZW50IGZyb20gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlNTIFRlcm1pbmFsIENhcGFiaWxpdHkgTmFtZXMKK1RoZXNlIG51bGwtdGVybWluYXRlZCBhcnJheXMgY29udGFpbgordGhlIHNob3J0IHRlcm1pbmZvIG5hbWVzICgiY29kZXMiKSwKK3RoZSBcZkJ0ZXJtY2FwXGZSIG5hbWVzLCBhbmQgdGhlIGxvbmcgdGVybWluZm8gbmFtZXMgKCJmbmFtZXMiKQorZm9yIGVhY2ggb2YgdGhlIHByZWRlZmluZWQgXGZCdGVybWluZm9cZlIgdmFyaWFibGVzOgogLlJTCiBcZkJjaGFyICpib29sbmFtZXNbXVxmUiwgXGZCKmJvb2xjb2Rlc1tdXGZSLCBcZkIqYm9vbGZuYW1lc1tdXGZSCiAuc3AKQEAgLTI1NSwxMCArMzI5LDYgQEAKIC5zcAogXGZCY2hhciAqc3RybmFtZXNbXVxmUiwgXGZCKnN0cmNvZGVzW11cZlIsIFxmQipzdHJmbmFtZXNbXVxmUgogLlJFCi0uUFAKLVRoZXNlIG51bGwtdGVybWluYXRlZCBhcnJheXMgY29udGFpbiB0aGUgXGZJY2FwbmFtZXNcZlIsIHRoZQotXGZCdGVybWNhcFxmUiBjb2RlcywgYW5kIHRoZSBmdWxsIEMgbmFtZXMsIGZvciBlYWNoIG9mIHRoZQotXGZCdGVybWluZm9cZlIgdmFyaWFibGVzLgogLlNIIFJFVFVSTiBWQUxVRQogUm91dGluZXMgdGhhdCByZXR1cm4gYW4gaW50ZWdlciByZXR1cm4gXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIKIChTVnI0IG9ubHkgc3BlY2lmaWVzICJhbiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIikgdXBvbiBzdWNjZXNzZnVsCkBAIC0yNjgsNyArMzM4LDcgQEAKIC5QUAogWC9PcGVuIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIEluIHRoaXMgaW1wbGVtZW50YXRpb24KLS5SUworLlJTIDUKIC5UUCA1CiBcZkJkZWxfY3VydGVybVxmUAogcmV0dXJucyBhbiBlcnJvcgpAQCAtMjkzLDE5ICszNjMsNDEgQEAKIFgvT3BlbiBzdGF0ZXMgdGhhdCBcZkJ0cHV0c1xmUCBpZ25vcmVzIHRoZSByZXR1cm4gdmFsdWUKIG9mIHRoZSBvdXRwdXQgZnVuY3Rpb24gXGZJcHV0Y1xmUC4KIC5SRQotLlNIIE5PVEVTCi1UaGUgXGZCc2V0dXB0ZXJtXGZSIHJvdXRpbmUgc2hvdWxkIGJlIHVzZWQgaW4gcGxhY2Ugb2YgXGZCc2V0dGVybVxmUi4KLUl0IG1heSBiZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byB0ZXN0IGZvciB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgd2l0aG91dAotY29tbWl0dGluZyB0byB0aGUgYWxsb2NhdGlvbiBvZiBzdG9yYWdlIGludm9sdmVkIGluIFxmQmluaXRzY3JcZlIuCi0uUFAKLU5vdGUgdGhhdCBcZkJ2aWRhdHRyXGZSIGFuZCBcZkJ2aWRwdXRzXGZSIG1heSBiZSBtYWNyb3MuCiAuU0ggUE9SVEFCSUxJVFkKK1gvT3BlbiBub3RlcyB0aGF0IFxmQnZpZGF0dHJcZlIgYW5kIFxmQnZpZHB1dHNcZlIgbWF5IGJlIG1hY3Jvcy4KKy5QUAogVGhlIGZ1bmN0aW9uIFxmQnNldHRlcm1cZlIgaXMgbm90IGRlc2NyaWJlZCBieSBYL09wZW4gYW5kIG11c3QKLWJlIGNvbnNpZGVyZWQgbm9uLXBvcnRhYmxlLiAgQWxsIG90aGVyIGZ1bmN0aW9ucyBhcmUgYXMgZGVzY3JpYmVkIGJ5IFgvT3Blbi4KK2JlIGNvbnNpZGVyZWQgbm9uLXBvcnRhYmxlLgorQWxsIG90aGVyIGZ1bmN0aW9ucyBhcmUgYXMgZGVzY3JpYmVkIGJ5IFgvT3Blbi4KIC5QUAogXGZCc2V0dXB0ZXJtXGZQIGNvcGllcyB0aGUgdGVybWluYWwgbmFtZSB0byB0aGUgYXJyYXkgXGZCdHR5dHlwZVxmUC4KIFRoaXMgaXMgbm90IHBhcnQgb2YgWC9PcGVuIEN1cnNlcywgYnV0IGlzIGFzc3VtZWQgYnkgc29tZSBhcHBsaWNhdGlvbnMuCiAuUFAKK0lmIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSB0ZXJtaW5hbC1kcml2ZXIsCitlLmcuLCBmb3IgdGhlIE1pbkdXIHBvcnQsCisuYlAKK1xmQnNldHVwdGVybVxmUCBpbnRlcnByZXRzIGEgbWlzc2luZy9lbXB0eSBURVJNIHZhcmlhYmxlIGFzIHRoZQorc3BlY2lhbCB2YWx1ZSBcKihgYHVua25vd25cKignJy4KKy5iUAorXGZCc2V0dXB0ZXJtXGZQIGFsbG93cyBleHBsaWNpdCB1c2Ugb2YgdGhlCit0aGUgd2luZG93cyBjb25zb2xlIGRyaXZlciBieSBjaGVja2luZyBpZiAkVEVSTSBpcyBzZXQgdG8KK1wqKGBgI3dpbjMyY29uXCooJycgb3IgYW4gYWJicmV2aWF0aW9uIG9mIHRoYXQgc3RyaW5nLgorLlBQCitPbGRlciB2ZXJzaW9ucyBvZiBcZkJuY3Vyc2VzXGZQIGFzc3VtZWQgdGhhdCB0aGUgZmlsZSBkZXNjcmlwdG9yIHBhc3NlZCB0bworXGZCc2V0dXB0ZXJtXGZQIGZyb20gXGZCaW5pdHNjclxmUCBvciBcZkJuZXd0ZXJtXGZQIHVzZXMgYnVmZmVyZWQgSS9PLAorYW5kIHdvdWxkIHdyaXRlIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbS4KK0luIGFkZGl0aW9uIHRvIHRoZSBsaW1pdGF0aW9uIHRoYXQgdGhlIHRlcm1pbmFsIHdhcyBsZWZ0IGluIGJsb2NrLWJ1ZmZlcmVkCittb2RlIG9uIGV4aXQgKGxpa2UgU3lzdGVtViBjdXJzZXMpLAoraXQgd2FzIHByb2JsZW1hdGljIGJlY2F1c2UgXGZCbmN1cnNlc1xmUAorZGlkIG5vdCBhbGxvdyBhIHJlbGlhYmxlIHdheSB0byBjbGVhbnVwIG9uIHJlY2VpdmluZyBTSUdUU1RQLgorVGhlIGN1cnJlbnQgdmVyc2lvbiB1c2VzIG91dHB1dCBidWZmZXJzIG1hbmFnZWQgZGlyZWN0bHkgYnkgXGZCbmN1cnNlc1xmUC4KK1NvbWUgb2YgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoaXMgbWFudWFsIHBhZ2Ugd3JpdGUKK3RvIHRoZSBzdGFuZGFyZCBvdXRwdXQuCitUaGV5IGFyZSBub3Qgc2lnbmFsLXNhZmUuCitUaGUgaGlnaC1sZXZlbCBmdW5jdGlvbnMgaW4gXGZCbmN1cnNlc1xmUCB1c2UKK2FsdGVybmF0ZSB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMKK3VzaW5nIHRoZSBtb3JlIHJlbGlhYmxlIGJ1ZmZlcmluZyBzY2hlbWUuCisuUFAKIEluIFN5c3RlbSBWIFJlbGVhc2UgNCwgXGZCc2V0X2N1cnRlcm1cZlIgaGFzIGFuIFxmQmludFxmUiByZXR1cm4gdHlwZSBhbmQKIHJldHVybnMgXGZCT0tcZlIgb3IgXGZCRVJSXGZSLiAgV2UgaGF2ZSBjaG9zZW4gdG8gaW1wbGVtZW50IHRoZSBYL09wZW4gQ3Vyc2VzCiBzZW1hbnRpY3MuCkBAIC0zMTksMzQgKzQxMSwzOCBAQAogLlBQCiBYL09wZW4gQ3Vyc2VzIHByb3RvdHlwZXMgXGZCdHBhcm1cZlIgd2l0aCBhIGZpeGVkIG51bWJlciBvZiBwYXJhbWV0ZXJzLAogcmF0aGVyIHRoYW4gYSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LgotVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4KK1RoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBhIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QsIGJ1dCBjYW4gYmUKK2NvbmZpZ3VyZWQgdG8gdXNlIHRoZSBmaXhlZC1wYXJhbWV0ZXIgbGlzdC4KIFBvcnRhYmxlIGFwcGxpY2F0aW9ucyBzaG91bGQgcHJvdmlkZSA5IHBhcmFtZXRlcnMgYWZ0ZXIgdGhlIGZvcm1hdDsKIHplcm9lcyBhcmUgZmluZSBmb3IgdGhpcyBwdXJwb3NlLgogLlBQCitJbiByZXNwb25zZSB0byBjb21tZW50cyBieSBUaG9tYXMgRS4gRGlja2V5LAorWC9PcGVuIEN1cnNlcyBJc3N1ZSA3IHByb3Bvc2VkIHRoZSBcZkJ0aXBhcm1cZlAgZnVuY3Rpb24gaW4gbWlkLTIwMDkuCisuUFAKIFgvT3BlbiBub3RlcyB0aGF0IGFmdGVyIGNhbGxpbmcgXGZCbXZjdXJcZlIsIHRoZSBjdXJzZXMgc3RhdGUgbWF5IG5vdCBtYXRjaCB0aGUKIGFjdHVhbCB0ZXJtaW5hbCBzdGF0ZSwgYW5kIHRoYXQgYW4gYXBwbGljYXRpb24gc2hvdWxkIHRvdWNoIGFuZCByZWZyZXNoCiB0aGUgd2luZG93IGJlZm9yZSByZXN1bWluZyBub3JtYWwgY3Vyc2VzIGNhbGxzLgotQm90aCBuY3Vyc2VzIGFuZCBTeXN0ZW0gViBSZWxlYXNlIDQgY3Vyc2VzIGltcGxlbWVudCBcZkJtdmN1clxmUiB1c2luZworQm90aCBcZkJuY3Vyc2VzXGZQIGFuZCBTeXN0ZW0gViBSZWxlYXNlIDQgY3Vyc2VzIGltcGxlbWVudCBcZkJtdmN1clxmUiB1c2luZwogdGhlIFNDUkVFTiBkYXRhIGFsbG9jYXRlZCBpbiBlaXRoZXIgXGZCaW5pdHNjclxmUiBvciBcZkJuZXd0ZXJtXGZSLgogU28gdGhvdWdoIGl0IGlzIGRvY3VtZW50ZWQgYXMgYSB0ZXJtaW5mbyBmdW5jdGlvbiwKIFxmQm12Y3VyXGZSIGlzIHJlYWxseSBhIGN1cnNlcyBmdW5jdGlvbiB3aGljaCBpcyBub3Qgd2VsbCBzcGVjaWZpZWQuCiAuUFAKIFgvT3BlbiBzdGF0ZXMgdGhhdCB0aGUgb2xkIGxvY2F0aW9uIG11c3QgYmUgZ2l2ZW4gZm9yIFxmQm12Y3VyXGZQLgotVGhpcyBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byB1c2UgLTEncyBmb3IgdGhlIG9sZCBvcmRpbmF0ZXMuCitUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyB0aGUgY2FsbGVyIHRvIHVzZSBcLTEncyBmb3IgdGhlIG9sZCBvcmRpbmF0ZXMuCiBJbiB0aGF0IGNhc2UsIHRoZSBvbGQgbG9jYXRpb24gaXMgdW5rbm93bi4KIC5QUAotRXh0ZW5kZWQgdGVybWluYWwgY2FwYWJpbGl0eSBuYW1lcywgZS5nLiwgYXMgZGVmaW5lZCBieSBcZkJ0aWNcIC14XGZQLAotYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGFycmF5cyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uLgorT3RoZXIgaW1wbGVtZW50aW9ucyBtYXkgbm90IGRlY2xhcmUgdGhlIGNhcGFiaWxpdHkgbmFtZSBhcnJheXMuCitTb21lIHByb3ZpZGUgdGhlbSB3aXRob3V0IGRlY2xhcmluZyB0aGVtLgorWC9PcGVuIGRvZXMgbm90IHNwZWNpZnkgdGhlbS4KKy5QUAorRXh0ZW5kZWQgdGVybWluYWwgY2FwYWJpbGl0eSBuYW1lcywgZS5nLiwgYXMgZGVmaW5lZCBieSBcZkJAVElDQFwgXC14XGZQLAorYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGFycmF5cyBkZXNjcmliZWQgaGVyZS4KIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQmN1cnNfaW5pdHNjclxmUigzWCksCiBcZkJjdXJzX2tlcm5lbFxmUigzWCksCiBcZkJjdXJzX3Rlcm1jYXBcZlIoM1gpLAorXGZCY3Vyc192YXJpYWJsZXNcZlIoM1gpLAorXGZCdGVybV92YXJpYWJsZXNcZlIoM1gpLAogXGZCcHV0Y1xmUigzKSwKIFxmQnRlcm1pbmZvXGZSKFwqbikKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfdGhyZWFkcy4zeCBiL21hbi9jdXJzX3RocmVhZHMuM3gKaW5kZXggMTdkYWJkYi4uNzc3NjQ1OSAxMDA2NDQKLS0tIGEvbWFuL2N1cnNfdGhyZWFkcy4zeAorKysgYi9tYW4vY3Vyc190aHJlYWRzLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMjggKzI2LDM0IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3RocmVhZHMuM3gsdiAxLjEyIDIwMDgvMDQvMTIgMTg6MjI6NTEgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3RocmVhZHMuM3gsdiAxLjIxIDIwMTUvMDQvMTEgMTA6MjM6NDkgdG9tIEV4cCAkCiAuVEggY3Vyc190aHJlYWRzIDNYICIiCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAubmEKIC5oeSAwCiAuU0ggTkFNRQogXGZCdXNlX3NjcmVlblxmUiwKLVxmQnVzZV93aW5kb3dcZlIgLSBcZkJjdXJzZXNcZlIgdGhyZWFkIHN1cHBvcnQKK1xmQnVzZV93aW5kb3dcZlIgXC0gXGZCY3Vyc2VzXGZSIHRocmVhZCBzdXBwb3J0CiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKIFxmQnR5cGVkZWYgaW50ICgqTkNVUlNFU19XSU5ET1dfQ0IpKFdJTkRPVyAqLCB2b2lkICopO1xmUgorLmJyCiBcZkJ0eXBlZGVmIGludCAoKk5DVVJTRVNfU0NSRUVOX0NCKShTQ1JFRU4gKiwgdm9pZCAqKTtcZlIKIC5icgorXGZCaW50IGdldF9lc2NkZWxheSh2b2lkKTtcZlIKKy5icgogXGZCaW50IHNldF9lc2NkZWxheShpbnQgc2l6ZSk7XGZSCiAuYnIKIFxmQmludCBzZXRfdGFic2l6ZShpbnQgc2l6ZSk7XGZSCiAuYnIKLVxmQmludCB1c2Vfc2NyZWVuKFNDUkVFTiAqc2NyLCBOQ1VSU0VTX1dJTkRPV19DQiBmdW5jLCB2b2lkICpkYXRhKTtcZlIKK1xmQmludCB1c2Vfc2NyZWVuKFNDUkVFTiAqc2NyLCBOQ1VSU0VTX1NDUkVFTl9DQiBmdW5jLCB2b2lkICpkYXRhKTtcZlIKIC5icgotXGZCaW50IHVzZV93aW5kb3coV0lORE9XICp3aW4sIE5DVVJTRVNfU0NSRUVOX0NCIGZ1bmMsIHZvaWQgKmRhdGEpO1xmUgorXGZCaW50IHVzZV93aW5kb3coV0lORE9XICp3aW4sIE5DVVJTRVNfV0lORE9XX0NCIGZ1bmMsIHZvaWQgKmRhdGEpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KIFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSBydWRpbWVudGFyeSBzdXBwb3J0CkBAIC04OSw2ICs5NSw4IEBACiB1c2UgdGhlIFxmQnNldF9lc2NkZWxheVxmUCBvciBcZkJzZXRfdGFic2l6ZVxmUCBmdW5jdGlvbnMuCiBPdGhlciBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3QgbW9kaWZpYWJsZS4KIC5QUAorVGhlIFxmQmdldF9lc2NkZWxheVxmUCBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgRVNDREVMQVkuCisuUFAKIFRoZSBcZkJ1c2Vfd2luZG93XGZQIGFuZCBcZkJ1c2Vfc2NyZWVuXGZQIGZ1bmN0aW9ucyBwcm92aWRlIGNvYXJzZQogZ3JhbnVsYXJpdHkgbXV0ZXhlcyBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBcZkJXSU5ET1dcZlAgYW5kIFxmQlNDUkVFTlxmUAogcGFyYW1ldGVycywgYW5kIGNhbGwgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uLApAQCAtMTAwLDI2ICsxMDgsMjEgQEAKIGFsdGVyZWQgZHVyaW5nIG9wZXJhdGlvbi4KIEluIGFkZGl0aW9uLAogdGhleSB1c2UgZGF0YSB3aGljaCBpcyBtYWludGFpbmVkIHdpdGhpbiBhIGhpZXJhcmNoeSBvZiBzY29wZXMuCi0uUlMKLS5UUCAzCi0tCisuUlMgMworLmJQCiBnbG9iYWwgZGF0YSwgZS5nLiwgdXNlZCBpbiB0aGUgbG93LWxldmVsIHRlcm1pbmZvIG9yIHRlcm1jYXAgaW50ZXJmYWNlcy4KLS5UUCAzCi0tCisuYlAKIHRlcm1pbmFsIGRhdGEsIGUuZy4sIGFzc29jaWF0ZWQgd2l0aCBhIGNhbGwgdG8gXGZJc2V0X2N1cnRlcm1cZlAuCiBUaGUgdGVybWluYWwgZGF0YSBhcmUgaW5pdGlhbGl6ZWQgd2hlbiBzY3JlZW5zIGFyZSBjcmVhdGVkLgotLlRQIDMKLS0KKy5iUAogc2NyZWVuIGRhdGEsIGUuZy4sIGFzc29jaWF0ZWQgd2l0aCBhIGNhbGwgdG8gXGZJbmV3dGVybVxmUCBvciBcZklpbml0c2NyXGZQLgotLlRQIDMKLS0KKy5iUAogd2luZG93IGRhdGEsIGUuZy4sIGFzc29jaWF0ZWQgd2l0aCBhIGNhbGwgdG8gXGZJbmV3d2luXGZQIG9yIFxmSXN1YndpblxmUC4KIFdpbmRvd3MgYXJlIGFzc29jaWF0ZWQgd2l0aCBzY3JlZW5zLgogUGFkcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgc2NyZWVuLgogLklQCiBNb3N0IGN1cnNlcyBhcHBsaWNhdGlvbnMgb3BlcmF0ZSBvbiBvbmUgb3IgbW9yZSB3aW5kb3dzIHdpdGhpbiBhIHNpbmdsZSBzY3JlZW4uCi0uVFAgMwotLQorLmJQCiByZWVudHJhbnQsIGkuZS4sIGl0IHVzZXMgb25seSB0aGUgZGF0YSBwYXNzZWQgYXMgcGFyYW1ldGVycy4KIC5SRQogLlBQCkBAIC01MzcsNiArNTQwLDcgQEAKIHdnZXRfd3N0ci9zY3JlZW4gKGlucHV0LW9wZXJhdGlvbikKIHdnZXRia2dybmQvd2luZG93CiB3Z2V0Y2gvc2NyZWVuIChpbnB1dC1vcGVyYXRpb24pCit3Z2V0ZGVsYXkvd2luZG93CiB3Z2V0bl93c3RyL3NjcmVlbiAoaW5wdXQtb3BlcmF0aW9uKQogd2dldG5zdHIvc2NyZWVuIChpbnB1dC1vcGVyYXRpb24pCiB3Z2V0cGFyZW50L3dpbmRvdwpAQCAtNTg0LDcgKzU4OCw3IEBACiAuVEUKIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5TSCBSRVRVUk4gVkFMVUUKLVRoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFRSVUUgb3IgRkFMU0UsIGV4Y2VwdCBhcyBub3RlZC4KK1RoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFxmQlRSVUVcZlAgb3IgXGZCRkFMU0VcZlAsIGV4Y2VwdCBhcyBub3RlZC4KIC5TSCBOT1RFUwogQm90aCBhIG1hY3JvIGFuZCBhIGZ1bmN0aW9uIGFyZSBwcm92aWRlZCBmb3IgZWFjaCBuYW1lLgogLlNIIFBPUlRBQklMSVRZCkBAIC01OTQsMTAgKzU5OCw1IEBACiBiZSBjb25kaXRpb25lZCB1c2luZyBOQ1VSU0VTX1ZFUlNJT04uCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksCi1cZkJjdXJzX29wYXF1ZVxmUigzWCkKLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorXGZCY3Vyc19vcGFxdWVcZlIoM1gpLAorXGZCY3Vyc192YXJpYWJsZXNcZlIoM1gpLgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfdG91Y2guM3ggYi9tYW4vY3Vyc190b3VjaC4zeAppbmRleCBhN2QwN2JjLi5mNjVkMmY5IDEwMDY0NAotLS0gYS9tYW4vY3Vyc190b3VjaC4zeAorKysgYi9tYW4vY3Vyc190b3VjaC4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMjAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfdG91Y2guM3gsdiAxLjExIDIwMDYvMDIvMjUgMjE6NDk6MTkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3RvdWNoLjN4LHYgMS4xNSAyMDE1LzA0LzExIDEwOjIzOjQ5IHRvbSBFeHAgJAogLlRIIGN1cnNfdG91Y2ggM1ggIiIKIC5uYQogLmh5IDAKQEAgLTM2LDcgKzM2LDcgQEAKIFxmQnVudG91Y2h3aW5cZlIsCiBcZkJ3dG91Y2hsblxmUiwKIFxmQmlzX2xpbmV0b3VjaGVkXGZSLAotXGZCaXNfd2ludG91Y2hlZFxmUiAtIFxmQmN1cnNlc1xmUiByZWZyZXNoIGNvbnRyb2wgcm91dGluZXMKK1xmQmlzX3dpbnRvdWNoZWRcZlIgXC0gXGZCY3Vyc2VzXGZSIHJlZnJlc2ggY29udHJvbCByb3V0aW5lcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwpAQCAtOTAsNyArOTAsNyBAQAogcmV0dXJucyBhbiBlcnJvciAKIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCBvcgogaWYgdGhlIGxpbmUgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHdpbmRvdy4KLU5vdGUgdGhhdCBFUlIgaXMgZGlzdGluY3QgZnJvbSBUUlVFIGFuZCBGQUxTRSwgd2hpY2ggYXJlIHRoZSBub3JtYWwgcmV0dXJuIHZhbHVlcyBvZiB0aGlzIGZ1bmN0aW9uLgorTm90ZSB0aGF0IEVSUiBpcyBkaXN0aW5jdCBmcm9tIFxmQlRSVUVcZlAgYW5kIFxmQkZBTFNFXGZQLCB3aGljaCBhcmUgdGhlIG5vcm1hbCByZXR1cm4gdmFsdWVzIG9mIHRoaXMgZnVuY3Rpb24uCiAuVFAgNQogXGZCd3RvdWNobG5cZlAKIHJldHVybnMgYW4gZXJyb3IgCkBAIC0xMDcsMTAgKzEwNyw2IEBACiAuU0ggTk9URVMKIE5vdGUgdGhhdCBhbGwgcm91dGluZXMgZXhjZXB0IFxmQnd0b3VjaGxuXGZSIG1heSBiZSBtYWNyb3MuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfcmVmcmVzaFxmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3JlZnJlc2hcZlIoM1gpLAorXGZCY3Vyc192YXJpYWJsZXNcZlIoM1gpLgpkaWZmIC0tZ2l0IGEvbWFuL2N1cnNfdHJhY2UuM3ggYi9tYW4vY3Vyc190cmFjZS4zeAppbmRleCBjYTc0OTUyLi4wMGU3YmQ2IDEwMDY0NAotLS0gYS9tYW4vY3Vyc190cmFjZS4zeAorKysgYi9tYW4vY3Vyc190cmFjZS4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMjAwMC0yMDA1LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBjdXJzX3RyYWNlLjN4LHYgMS44IDIwMDcvMDIvMjQgMTc6MzM6NDkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3RyYWNlLjN4LHYgMS4xMyAyMDE1LzA3LzIwIDIyOjU0OjQ0IHRvbSBFeHAgJAorLmRlIGJQCisuSVAgXChidSA0CisuLgogLlRIIGN1cnNfdHJhY2UgM1ggIiIKIC5uYQogLmh5IDAKQEAgLTM2LDEwNSArMzksMTQ4IEBACiBcZkJfdHJhY2VhdHRyXGZSLAogXGZCX3RyYWNlYXR0cjJcZlIsCiBcZkJfbmNfdHJhY2ViaXRzXGZSLAorXGZCX3RyYWNlY2NoYXJfdFxmUiwKK1xmQl90cmFjZWNjaGFyX3QyXGZSLAogXGZCX3RyYWNlY2hhclxmUiwKIFxmQl90cmFjZWNodHlwZVxmUiwKIFxmQl90cmFjZWNodHlwZTJcZlIsCiBcZkJfdHJhY2Vtb3VzZVxmUiwKLVxmQnRyYWNlXGZSIC0gXGZCY3Vyc2VzXGZSIGRlYnVnZ2luZyByb3V0aW5lcworXGZCdHJhY2VcZlIgXC0gXGZCY3Vyc2VzXGZSIGRlYnVnZ2luZyByb3V0aW5lcwogLmFkCiAuaHkKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgogLnNwCi1cZkJ2b2lkIF90cmFjZWYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pO1xmUgorXGZCdm9pZCBfdHJhY2VmKGNvbnN0IGNoYXIgKlxmUFxmSWZvcm1hdFxmUFxmQiwgLi4uKTtcZlIKIC5icgotXGZCdm9pZCBfdHJhY2VkdW1wKGNvbnN0IGNoYXIgKmxhYmVsLCBXSU5ET1cgKndpbik7XGZSCitcZkJ2b2lkIF90cmFjZWR1bXAoY29uc3QgY2hhciAqXGZQXGZJbGFiZWxcZlBcZkIsIFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCKTtcZlIKIC5icgotXGZCY2hhciAqX3RyYWNlYXR0cihhdHRyX3QgYXR0cik7XGZSCitcZkJjaGFyICpfdHJhY2VhdHRyKGF0dHJfdCBcZlBcZklhdHRyXGZQXGZCKTtcZlIKIC5icgotXGZCY2hhciAqX3RyYWNlYXR0cjIoaW50IGJ1ZmZlciwgY2h0eXBlIGNoKTtcZlIKK1xmQmNoYXIgKl90cmFjZWF0dHIyKGludCBcZlBcZklidWZmZXJcZlBcZkIsIGNodHlwZSBcZlBcZkljaFxmUFxmQik7XGZSCiAuYnIKIFxmQmNoYXIgKl9uY190cmFjZWJpdHModm9pZCk7XGZSCiAuYnIKLVxmQmNoYXIgKl90cmFjZWNoYXIoaW50KTtcZlIKK1xmQmNoYXIgKiBfdHJhY2VjY2hhcl90KGNvbnN0IGNjaGFyX3QgKlxmUFxmSXN0cmluZ1xmUFxmQik7XGZSCiAuYnIKLVxmQmNoYXIgKl90cmFjZWNodHlwZShjaHR5cGUgY2gpO1xmUgorXGZCY2hhciAqIF90cmFjZWNjaGFyX3QyKGludCBcZlBcZklidWZmZXJcZlBcZkIsIGNvbnN0IGNjaGFyX3QgKlxmUFxmSXN0cmluZ1xmUFxmQik7XGZSCiAuYnIKLVxmQmNoYXIgKl90cmFjZWNodHlwZTIoaW50IGJ1ZmZlciwgY2h0eXBlIGNoKTtcZlIKK1xmQmNoYXIgKl90cmFjZWNoYXIoaW50IFxmUFxmSWNoXGZQXGZCKTtcZlIKIC5icgotXGZCY2hhciAqX3RyYWNlbW91c2UoY29uc3QgTUVWRU5UICpldmVudCk7XGZSCitcZkJjaGFyICpfdHJhY2VjaHR5cGUoY2h0eXBlIFxmUFxmSWNoXGZQXGZCKTtcZlIKIC5icgotXGZCdm9pZCB0cmFjZShjb25zdCB1bnNpZ25lZCBpbnQgcGFyYW0pO1xmUgorXGZCY2hhciAqX3RyYWNlY2h0eXBlMihpbnQgXGZQXGZJYnVmZmVyXGZQXGZCLCBjaHR5cGUgXGZQXGZJY2hcZlBcZkIpO1xmUgorLmJyCitcZkJjaGFyICpfdHJhY2Vtb3VzZShjb25zdCBNRVZFTlQgKlxmUFxmSWV2ZW50XGZQXGZCKTtcZlIKKy5icgorXGZCdm9pZCB0cmFjZShjb25zdCB1bnNpZ25lZCBpbnQgXGZQXGZJcGFyYW1cZlBcZkIpO1xmUgogLlNIIERFU0NSSVBUSU9OCiBUaGUgXGZCdHJhY2VcZlIgcm91dGluZXMgYXJlIHVzZWQgZm9yIGRlYnVnZ2luZyB0aGUgbmN1cnNlcyBsaWJyYXJpZXMsCiBhcyB3ZWxsIGFzIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UgdGhlIG5jdXJzZXMgbGlicmFyaWVzLgogVGhlc2UgZnVuY3Rpb25zIGFyZSBub3JtYWxseSBhdmFpbGFibGUgb25seSB3aXRoIHRoZSBkZWJ1Z2dpbmcgbGlicmFyeQotXGZJbGlibmN1cnNlc19nLmFcZlIsIGJ1dCBtYXkgYmUgY29tcGlsZWQgaW50byBhbnkgbW9kZWwgKHNoYXJlZCwgc3RhdGljLAorZS5nLiwgXGZJbGlibmN1cnNlc19nLmFcZlIsIGJ1dCBtYXkgYmUgY29tcGlsZWQgaW50byBhbnkgbW9kZWwgKHNoYXJlZCwgc3RhdGljLAogcHJvZmlsZSkgYnkgZGVmaW5pbmcgdGhlIHN5bWJvbCBcZkJUUkFDRVxmUi4KK0FkZGl0aW9uYWxseSwgc29tZSBmdW5jdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIHdpdGggdGhlIHdpZGUtY2hhcmFjdGVyCitjb25maWd1cmF0aW9uIG9mIHRoZSBsaWJyYXJpZXMuCiAuUFAKLVRoZSBwcmluY2lwYWwgcGFydHMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIHRoZSBcZkJ0cmFjZVxmUiByb3V0aW5lIHdoaWNoCi1zZWxlY3RpdmVseSBlbmFibGVzIGRpZmZlcmVudCB0cmFjaW5nIGZlYXR1cmVzLCBhbmQgdGhlIFxmQl90cmFjZWZcZlIKLXJvdXRpbmUgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBkYXRhIHRvIHRoZSBcZkl0cmFjZVxmUiBmaWxlLgorVGhlIHByaW5jaXBhbCBwYXJ0cyBvZiB0aGlzIGludGVyZmFjZSBhcmUKKy5iUAorXGZCdHJhY2VcZlIsIHdoaWNoIHNlbGVjdGl2ZWx5IGVuYWJsZXMgZGlmZmVyZW50IHRyYWNpbmcgZmVhdHVyZXMsIGFuZAorLmJQCitcZkJfdHJhY2VmXGZSLCB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGRhdGEgdG8gdGhlIFxmSXRyYWNlXGZSIGZpbGUuCiAuUFAKIENhbGxpbmcgXGZCdHJhY2VcZlIgd2l0aCBhIG5vbnplcm8gcGFyYW1ldGVyIG9wZW5zIHRoZSBmaWxlIFxmQnRyYWNlXGZSCi1pbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgZm9yIG91dHB1dC4gIFRoZSBwYXJhbWV0ZXIgaXMgZm9ybWVkIGJ5IE9SJ2luZworaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZvciBvdXRwdXQuCitUaGUgcGFyYW1ldGVyIGlzIGZvcm1lZCBieSBPUidpbmcKIHZhbHVlcyBmcm9tIHRoZSBsaXN0IG9mIFxmQlRSQUNFX1xmUFxmSXh4eFxmUiBkZWZpbml0aW9ucyBpbiBcZkI8Y3Vyc2VzLmg+XGZSLgogVGhlc2UgaW5jbHVkZToKIC5UUCA1Ci1UUkFDRV9ESVNBQkxFCisuQiBUUkFDRV9ESVNBQkxFCiB0dXJuIG9mZiB0cmFjaW5nLgogLlRQIDUKLVRSQUNFX1RJTUVTCisuQiBUUkFDRV9USU1FUwogdHJhY2UgdXNlciBhbmQgc3lzdGVtIHRpbWVzIG9mIHVwZGF0ZXMuCiAuVFAgNQotVFJBQ0VfVFBVVFMKKy5CIFRSQUNFX1RQVVRTCiB0cmFjZSB0cHV0cyBjYWxscy4KIC5UUCA1Ci1UUkFDRV9VUERBVEUKKy5CIFRSQUNFX1VQREFURQogdHJhY2UgdXBkYXRlIGFjdGlvbnMsIG9sZCAmIG5ldyBzY3JlZW5zLgogLlRQIDUKLVRSQUNFX01PVkUKKy5CIFRSQUNFX01PVkUKIHRyYWNlIGN1cnNvciBtb3ZlbWVudCBhbmQgc2Nyb2xsaW5nLgogLlRQIDUKLVRSQUNFX0NIQVJQVVQKKy5CIFRSQUNFX0NIQVJQVVQKIHRyYWNlIGFsbCBjaGFyYWN0ZXIgb3V0cHV0cy4KIC5UUCA1Ci1UUkFDRV9PUkRJTkFSWQorLkIgVFJBQ0VfT1JESU5BUlkKIHRyYWNlIGFsbCB1cGRhdGUgYWN0aW9ucy4KIFRoZSBvbGQgYW5kIG5ldyBzY3JlZW4gY29udGVudHMgYXJlIHdyaXR0ZW4gdG8gdGhlIHRyYWNlIGZpbGUKIGZvciBlYWNoIHJlZnJlc2guCiAuVFAgNQotVFJBQ0VfQ0FMTFMKKy5CIFRSQUNFX0NBTExTCiB0cmFjZSBhbGwgY3Vyc2VzIGNhbGxzLgogVGhlIHBhcmFtZXRlcnMgZm9yIGVhY2ggY2FsbCBhcmUgdHJhY2VkLCBhcyB3ZWxsIGFzIHJldHVybiB2YWx1ZXMuCiAuVFAgNQotVFJBQ0VfVklSVFBVVAorLkIgVFJBQ0VfVklSVFBVVAogdHJhY2UgdmlydHVhbCBjaGFyYWN0ZXIgcHV0cywgaS5lLiwgY2FsbHMgdG8gXGZCYWRkY2hcZlIuCiAuVFAgNQotVFJBQ0VfSUVWRU5UCisuQiBUUkFDRV9JRVZFTlQKIHRyYWNlIGxvdy1sZXZlbCBpbnB1dCBwcm9jZXNzaW5nLCBpbmNsdWRpbmcgdGltZW91dHMuCiAuVFAgNQotVFJBQ0VfQklUUworLkIgVFJBQ0VfQklUUwogdHJhY2Ugc3RhdGUgb2YgVFRZIGNvbnRyb2wgYml0cy4KIC5UUCA1Ci1UUkFDRV9JQ0FMTFMKKy5CIFRSQUNFX0lDQUxMUwogdHJhY2UgaW50ZXJuYWwvbmVzdGVkIGNhbGxzLgogLlRQIDUKLVRSQUNFX0NDQUxMUworLkIgVFJBQ0VfQ0NBTExTCiB0cmFjZSBwZXItY2hhcmFjdGVyIGNhbGxzLgogLlRQIDUKLVRSQUNFX0RBVEFCQVNFCisuQiBUUkFDRV9EQVRBQkFTRQogdHJhY2UgcmVhZC93cml0ZSBvZiB0ZXJtaW5mby90ZXJtY2FwIGRhdGEuCiAuVFAgNQotVFJBQ0VfQVRUUlMKKy5CIFRSQUNFX0FUVFJTCiB0cmFjZSBjaGFuZ2VzIHRvIHZpZGVvIGF0dHJpYnV0ZXMgYW5kIGNvbG9ycy4KIC5UUCA1Ci1UUkFDRV9NQVhJTVVNCisuQiBUUkFDRV9NQVhJTVVNCiBtYXhpbXVtIHRyYWNlIGxldmVsLCBlbmFibGVzIGFsbCBvZiB0aGUgc2VwYXJhdGUgdHJhY2UgZmVhdHVyZXMuCiAuUFAKIFNvbWUgdHJhY2luZyBmZWF0dXJlcyBhcmUgZW5hYmxlZCB3aGVuZXZlciB0aGUgXGZCdHJhY2VcZlIgcGFyYW1ldGVyCi1pcyBub256ZXJvLiAgU29tZSBmZWF0dXJlcyBvdmVybGFwLgoraXMgbm9uemVyby4KK1NvbWUgZmVhdHVyZXMgb3ZlcmxhcC4KIFRoZSBzcGVjaWZpYyBuYW1lcyBhcmUgdXNlZCBhcyBhIGd1aWRlbGluZS4KKy5QUAorVGhlIG90aGVyIGZ1bmN0aW9ucyBlaXRoZXIgcmV0dXJuIGEgcG9pbnRlciB0byBhIHN0cmluZy1hcmVhCisoYWxsb2NhdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uKSwKK29yIHJldHVybiBubyB2YWx1ZSAoc3VjaCBhcyBcZkJfdHJhY2VkdW1wXGZQLCB3aGljaCBpbXBsZW1lbnRzIHRoZQorc2NyZWVuIGR1bXAgZm9yIFxmQlRSQUNFX1VQREFURVxmUCkuCitUaGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSB0aGVzZQorc3RyaW5ncywgc2luY2UgdGhlIGFsbG9jYXRpb24gaXMgcmV1c2VkIG9uIHN1Y2Nlc3NpdmUgY2FsbHMuCitUbyB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbSBvZiBhIHNpbmdsZSBzdHJpbmctYXJlYSBwZXIgZnVuY3Rpb24sCitzb21lIHVzZSBhIGJ1ZmZlci1udW1iZXIgcGFyYW1ldGVyLCB0ZWxsaW5nIHRoZSBsaWJyYXJ5IHRvIGFsbG9jYXRlCithZGRpdGlvbmFsIHN0cmluZy1hcmVhcy4KKy5QUAorVGhlc2UgZnVuY3Rpb25zIGNoZWNrIHRoZSBcZkJOQ1VSU0VTX1RSQUNFXGZQIGVudmlyb25tZW50IHZhcmlhYmxlLAordG8gc2V0IHRoZSB0cmFjaW5nIGZlYXR1cmUgYXMgaWYgXGZCdHJhY2VcZlAgd2FzIGNhbGxlZDoKKy5SUworLlBQCisubmEKK2ZpbHRlciwKK2luaXRzY3IsCituZXdfcHJlc2NyLAorbmV3dGVybSwKK25vZmlsdGVyLAorcmVzdGFydHRlcm0sCityaXBvZmZsaW5lLAorc2V0dXB0ZXJtLAorc2xrX2luaXQsCit0Z2V0ZW50LAordXNlX2VudiwKK3VzZV9leHRlbmRlZF9uYW1lcywKK3VzZV90aW9jdGwKKy5hZAorLlJFCiAuU0ggUkVUVVJOIFZBTFVFCiBSb3V0aW5lcyB3aGljaCByZXR1cm4gYSB2YWx1ZSBhcmUgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBwYXJhbWV0ZXJzCiB0byB0aGUgXGZCX3RyYWNlZlxmUiByb3V0aW5lLgpAQCAtMTQ1LDkgKzE5MSwzIEBACiBidXQgdGhleSBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBuY3Vyc2VzLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vY3Vyc191dGlsLjN4IGIvbWFuL2N1cnNfdXRpbC4zeAppbmRleCAxOGUyYjMyLi40ZDAyN2RiIDEwMDY0NAotLS0gYS9tYW4vY3Vyc191dGlsLjN4CisrKyBiL21hbi9jdXJzX3V0aWwuM3gKQEAgLTEsNSArMSw2IEBACisnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsOCArMjcsMTUgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGN1cnNfdXRpbC4zeCx2IDEuMjcgMjAwOC8xMC8yNSAyMzo0NTo0MSB0b20gRXhwICQKKy5cIiAkSWQ6IGN1cnNfdXRpbC4zeCx2IDEuNDMgMjAxNS8wNi8wNiAyMzozNjoyNyB0b20gRXhwICQKIC5USCBjdXJzX3V0aWwgM1ggIiIKKy5pZSBcbiguZyAuZHMgYGAgXChscQorLmVsICAgICAgIC5kcyBgYCBgYAorLmllIFxuKC5nIC5kcyAnJyBcKHJxCisuZWwgICAgICAgLmRzICcnICcnCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAubmEKIC5oeSAwCiAuU0ggTkFNRQpAQCAtNDEsNyArNDksOCBAQAogXGZCcHV0d2luXGZSLAogXGZCdW5jdHJsXGZSLAogXGZCdXNlX2VudlxmUiwKLVxmQnd1bmN0cmxcZlIgLSBtaXNjZWxsYW5lb3VzIFxmQmN1cnNlc1xmUiB1dGlsaXR5IHJvdXRpbmVzCitcZkJ1c2VfdGlvY3RsXGZSLAorXGZCd3VuY3RybFxmUiBcLSBtaXNjZWxsYW5lb3VzIFxmQmN1cnNlc1xmUiB1dGlsaXR5IHJvdXRpbmVzCiAuYWQKIC5oeQogLlNIIFNZTk9QU0lTCkBAIC02MSw2ICs3MCw4IEBACiAuYnIKIFxmQnZvaWQgdXNlX2Vudihib29sIGYpO1xmUgogLmJyCitcZkJ2b2lkIHVzZV90aW9jdGwoYm9vbCBmKTtcZlIKKy5icgogXGZCaW50IHB1dHdpbihXSU5ET1cgKndpbiwgRklMRSAqZmlsZXApO1xmUgogLmJyCiBcZkJXSU5ET1cgKmdldHdpbihGSUxFICpmaWxlcCk7XGZSCkBAIC03MCw1MSArODEsNTAgQEAKIFxmQmludCBmbHVzaGlucCh2b2lkKTtcZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCisuU1MgdW5jdHJsCisuUFAKIFRoZSBcZkJ1bmN0cmxcZlIgcm91dGluZSByZXR1cm5zIGEgY2hhcmFjdGVyIHN0cmluZyB3aGljaCBpcyBhIHByaW50YWJsZQogcmVwcmVzZW50YXRpb24gb2YgdGhlIGNoYXJhY3RlciBcZkljXGZSLCBpZ25vcmluZyBhdHRyaWJ1dGVzLgogQ29udHJvbCBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIFxmQl5cZlJcZklYXGZSIG5vdGF0aW9uLgogUHJpbnRpbmcgY2hhcmFjdGVycyBhcmUgZGlzcGxheWVkIGFzIGlzLgogVGhlIGNvcnJlc3BvbmRpbmcgXGZCd3VuY3RybFxmUiByZXR1cm5zIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mCi1hIHdpZGUtY2hhcmFjdGVyLgorYSB3aWRlIGNoYXJhY3Rlci4KKy5TUyBrZXluYW1lL2tleV9uYW1lCiAuUFAKLVRoZSBcZkJrZXluYW1lXGZSIHJvdXRpbmUgcmV0dXJucyBhIGNoYXJhY3RlciBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUga2V5IFxmSWNcZlI6Ci0uUlMgMwotLlRQIDMKLS0KLVByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgYXMgdGhlbXNlbHZlcywgZS5nLiwgYSBvbmUtY2hhcmFjdGVyIHN0cmluZyBjb250YWluaW5nIHRoZSBrZXkuCi0uVFAgMwotLQorVGhlIFxmQmtleW5hbWVcZlIgcm91dGluZSByZXR1cm5zIGEgY2hhcmFjdGVyIHN0cmluZworY29ycmVzcG9uZGluZyB0byB0aGUga2V5IFxmSWNcZlI6CisuYlAKK1ByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBkaXNwbGF5ZWQgYXMgdGhlbXNlbHZlcywKK2UuZy4sIGEgb25lLWNoYXJhY3RlciBzdHJpbmcgY29udGFpbmluZyB0aGUga2V5LgorLmJQCiBDb250cm9sIGNoYXJhY3RlcnMgYXJlIGRpc3BsYXllZCBpbiB0aGUgXGZCXlxmUlxmSVhcZlIgbm90YXRpb24uCi0uVFAgMwotLQorLmJQCiBERUwgKGNoYXJhY3RlciAxMjcpIGlzIGRpc3BsYXllZCBhcyBcZkJeP1xmUC4KLS5UUCAzCi0tCisuYlAKIFZhbHVlcyBhYm92ZSAxMjggYXJlIGVpdGhlciBtZXRhIGNoYXJhY3RlcnMKIChpZiB0aGUgc2NyZWVuIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCwKLW9yIGlmIFxmQm1ldGFcZlAgaGFzIGJlZW4gY2FsbGVkIHdpdGggYSBUUlVFIHBhcmFtZXRlciksCi1zaG93biBpbiB0aGUgXGZCTS1cZlJcZklYXGZSIG5vdGF0aW9uLAorb3IgaWYgXGZCbWV0YVxmUCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBhIFxmQlRSVUVcZlAgcGFyYW1ldGVyKSwKK3Nob3duIGluIHRoZSBcZkJNXC1cZlJcZklYXGZSIG5vdGF0aW9uLAogb3IgYXJlIGRpc3BsYXllZCBhcyB0aGVtc2VsdmVzLgogSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgdmFsdWVzIG1heSBub3QgYmUgcHJpbnRhYmxlOwogdGhpcyBmb2xsb3dzIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi4KLS5UUCAzCi0tCisuYlAKIFZhbHVlcyBhYm92ZSAyNTYgbWF5IGJlIHRoZSBuYW1lcyBvZiB0aGUgbmFtZXMgb2YgZnVuY3Rpb24ga2V5cy4KLS5UUCAzCi0tCisuYlAKIE90aGVyd2lzZSAoaWYgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBuYW1lKSB0aGUgZnVuY3Rpb24gcmV0dXJucyBudWxsLAogdG8gZGVub3RlIGFuIGVycm9yLgogWC9PcGVuIGFsc28gbGlzdHMgYW4gIlVOS05PV04gS0VZIiByZXR1cm4gdmFsdWUsIHdoaWNoIHNvbWUgaW1wbGVtZW50YXRpb25zCiByZXR1cm4gcmF0aGVyIHRoYW4gbnVsbC4KLS5SRQogLkxQCiBUaGUgY29ycmVzcG9uZGluZyBcZkJrZXlfbmFtZVxmUiByZXR1cm5zIGEgY2hhcmFjdGVyIHN0cmluZyBjb3JyZXNwb25kaW5nCiB0byB0aGUgd2lkZS1jaGFyYWN0ZXIgdmFsdWUgXGZJd1xmUi4KIFRoZSB0d28gZnVuY3Rpb25zIGRvIG5vdCByZXR1cm4gdGhlIHNhbWUgc2V0IG9mIHN0cmluZ3M7CiB0aGUgbGF0dGVyIHJldHVybnMgbnVsbCB3aGVyZSB0aGUgZm9ybWVyIHdvdWxkIGRpc3BsYXkgYSBtZXRhIGNoYXJhY3Rlci4KKy5TUyBmaWx0ZXIvbm9maWx0ZXIKIC5QUAogVGhlIFxmQmZpbHRlclxmUiByb3V0aW5lLCBpZiB1c2VkLCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgXGZCaW5pdHNjclxmUiBvcgotXGZCbmV3dGVybVxmUiBhcmUgY2FsbGVkLiAgVGhlIGVmZmVjdCBpcyB0aGF0LCBkdXJpbmcgdGhvc2UgY2FsbHMsIFxmQkxJTkVTXGZSCitcZkJuZXd0ZXJtXGZSIGFyZSBjYWxsZWQuCitUaGUgZWZmZWN0IGlzIHRoYXQsIGR1cmluZyB0aG9zZSBjYWxscywgXGZCTElORVNcZlIKIGlzIHNldCB0byAxOyB0aGUgY2FwYWJpbGl0aWVzIFxmQmNsZWFyXGZSLCBcZkJjdXBcZlIsIFxmQmN1ZFxmUiwgXGZCY3VkMVxmUiwKIFxmQmN1dTFcZlIsIFxmQmN1dVxmUiwgXGZCdnBhXGZSIGFyZSBkaXNhYmxlZDsgYW5kIHRoZSBcZkJob21lXGZSIHN0cmluZyBpcwogc2V0IHRvIHRoZSB2YWx1ZSBvZiBcZkJjclxmUi4KQEAgLTEyNSwzMCArMTM1LDExMSBAQAogdXNpbmcgYSBkaWZmZXJlbnQgdmFsdWUgb2YgXGZCJFRFUk1cZlAuCiBUaGUgbGltaXRhdGlvbiBhcmlzZXMgYmVjYXVzZSB0aGUgXGZCZmlsdGVyXGZQIHJvdXRpbmUgbW9kaWZpZXMgdGhlCiBpbi1tZW1vcnkgY29weSBvZiB0aGUgdGVybWluYWwgaW5mb3JtYXRpb24uCisuU1MgdXNlX2VudgogLlBQCi1UaGUgXGZCdXNlX2VudlxmUiByb3V0aW5lLCBpZiB1c2VkLCBpcyBjYWxsZWQgYmVmb3JlIFxmQmluaXRzY3JcZlIgb3IKLVxmQm5ld3Rlcm1cZlIgYXJlIGNhbGxlZC4gIFdoZW4gY2FsbGVkIHdpdGggXGZCRkFMU0VcZlIgYXMgYW4KLWFyZ3VtZW50LCB0aGUgdmFsdWVzIG9mIFxmQmxpbmVzXGZSIGFuZCBcZkJjb2x1bW5zXGZSIHNwZWNpZmllZCBpbiB0aGUKLVxmSXRlcm1pbmZvXGZSIGRhdGFiYXNlIHdpbGwgYmUgdXNlZCwgZXZlbiBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLVxmQkxJTkVTXGZSIGFuZCBcZkJDT0xVTU5TXGZSICh1c2VkIGJ5IGRlZmF1bHQpIGFyZSBzZXQsIG9yIGlmCi1cZkJjdXJzZXNcZlIgaXMgcnVubmluZyBpbiBhIHdpbmRvdyAoaW4gd2hpY2ggY2FzZSBkZWZhdWx0IGJlaGF2aW9yCi13b3VsZCBiZSB0byB1c2UgdGhlIHdpbmRvdyBzaXplIGlmIFxmQkxJTkVTXGZSIGFuZCBcZkJDT0xVTU5TXGZSIGFyZQotbm90IHNldCkuCi1Ob3RlIHRoYXQgc2V0dGluZyBcZkJMSU5FU1xmUiBvciBcZkJDT0xVTU5TXGZSIG92ZXJyaWRlcyB0aGUKLWNvcnJlc3BvbmRpbmcgc2l6ZSB3aGljaCBtYXkgYmUgb2J0YWluZWQgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KK1RoZSBcZkJ1c2VfZW52XGZSIHJvdXRpbmUsIGlmIHVzZWQsCitzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBcZkJpbml0c2NyXGZSIG9yCitcZkJuZXd0ZXJtXGZSIGFyZSBjYWxsZWQKKyhiZWNhdXNlIHRob3NlIGNvbXB1dGUgdGhlIHNjcmVlbiBzaXplKS4KK0l0IG1vZGlmaWVzIHRoZSB3YXkgXGZCbmN1cnNlc1xmUCB0cmVhdHMgZW52aXJvbm1lbnQgdmFyaWFibGVzCit3aGVuIGRldGVybWluaW5nIHRoZSBzY3JlZW4gc2l6ZS4KKy5iUAorTm9ybWFsbHkgbmN1cnNlcyBsb29rcyBmaXJzdCBhdCB0aGUgdGVybWluYWwgZGF0YWJhc2UgZm9yIHRoZSBzY3JlZW4gc2l6ZS4KKy5JUAorSWYgXGZCdXNlX2VudlxmUCB3YXMgY2FsbGVkIHdpdGggXGZCRkFMU0VcZlAgZm9yIHBhcmFtZXRlciwKK2l0IHN0b3BzIGhlcmUgdW5sZXNzCitJZiBcZkJ1c2VfdGlvY3RsXGZQIHdhcyBhbHNvIGNhbGxlZCB3aXRoIFxmQlRSVUVcZlAgZm9yIHBhcmFtZXRlci4KKy5iUAorVGhlbiBpdCBhc2tzIGZvciB0aGUgc2NyZWVuIHNpemUgdmlhIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMuCitJZiBzdWNjZXNzZnVsLAoraXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgdGVybWluYWwgZGF0YWJhc2UuCisuYlAKK0ZpbmFsbHkgKHVubGVzcyBcZkJ1c2VfZW52XGZQIHdhcyBjYWxsZWQgd2l0aCBcZkJGQUxTRVxmUCBwYXJhbWV0ZXIpLAorbmN1cnNlcyBleGFtaW5lcyB0aGUgXGZCTElORVNcZlIgb3IgXGZCQ09MVU1OU1xmUiBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCit1c2luZyBhIHZhbHVlIGluIHRob3NlIHRvIG92ZXJyaWRlIHRoZSByZXN1bHRzCitmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRlcm1pbmFsIGRhdGFiYXNlLgorLklQCitOY3Vyc2VzIGFsc28gdXBkYXRlcyB0aGUgc2NyZWVuIHNpemUgaW4gcmVzcG9uc2UgdG8gU0lHV0lOQ0gsCit1bmxlc3Mgb3ZlcnJpZGRlbiBieSB0aGUgXGZCTElORVNcZlIgb3IgXGZCQ09MVU1OU1xmUiBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCisuU1MgdXNlX3Rpb2N0bAogLlBQCi1UaGUgXGZCcHV0d2luXGZSIHJvdXRpbmUgd3JpdGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB3aW5kb3cgXGZJd2luXGZSIGludG8KLXRoZSBmaWxlIHRvIHdoaWNoIFxmSWZpbGVwXGZSIHBvaW50cy4gIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIGxhdGVyIHJldHJpZXZlZAorVGhlIFxmQnVzZV90aW9jdGxcZlIgcm91dGluZSwgaWYgdXNlZCwKK3Nob3VsZCBiZSBjYWxsZWQgYmVmb3JlIFxmQmluaXRzY3JcZlIgb3IgXGZCbmV3dGVybVxmUiBhcmUgY2FsbGVkCisoYmVjYXVzZSB0aG9zZSBjb21wdXRlIHRoZSBzY3JlZW4gc2l6ZSkuCitBZnRlciBcZkJ1c2VfdGlvY3RsXGZSIGlzIGNhbGxlZCB3aXRoIFxmQlRSVUVcZlIgYXMgYW4gYXJndW1lbnQsCituY3Vyc2VzIG1vZGlmaWVzIHRoZSBsYXN0IHN0ZXAgaW4gaXRzIGNvbXB1dGF0aW9uIG9mIHNjcmVlbiBzaXplIGFzIGZvbGxvd3M6CisuYlAKK2NoZWNrcyBpZiB0aGUgXGZCTElORVNcZlIgYW5kIFxmQkNPTFVNTlNcZlIgZW52aXJvbm1lbnQgdmFyaWFibGVzCithcmUgc2V0IHRvIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiB6ZXJvLgorLmJQCitmb3IgZWFjaCwgbmN1cnNlcyB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlCit3aXRoIHRoZSB2YWx1ZSB0aGF0IGl0IGhhcyBvYnRhaW5lZCB2aWEgb3BlcmF0aW5nIHN5c3RlbSBjYWxsCitvciBmcm9tIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZS4KKy5iUAorbmN1cnNlcyByZS1mZXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNvIHRoYXQKK2l0IGlzIHN0aWxsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggc2V0IHRoZSBzY3JlZW4gc2l6ZS4KKy5QUAorVGhlIFxmQnVzZV9lbnZcZlAgYW5kIFxmQnVzZV90aW9jdGxcZlAgcm91dGluZXMgY29tYmluZSBhcworc3VtbWFyaXplZCBoZXJlOgorLlRTCitjZW50ZXIgdGFiKC8pOworbCBsIGwKK18gXyBfCitsdzcgbHc3IGx3NDAuCitcZkl1c2VfZW52XGZSL1xmSXVzZV90aW9jdGxcZlIvXGZJU3VtbWFyeVxmUgorVFJVRS9GQUxTRS9UeworVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KK25jdXJzZXMgdXNlcyBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzCit1bmxlc3Mgb3ZlcnJpZGRlbiBieSAkTElORVMgb3IgJENPTFVNTlMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorVH0KK1RSVUUvVFJVRS9UeworbmN1cnNlcyB1cGRhdGVzICRMSU5FUyBhbmQgJENPTFVNTlMgYmFzZWQgb24gb3BlcmF0aW5nIHN5c3RlbSBjYWxscy4KK1R9CitGQUxTRS9UUlVFL1R7CituY3Vyc2VzIGlnbm9yZXMgJExJTkVTIGFuZCAkQ09MVU1OUywgdXNlcyBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzIHRvIG9idGFpbiBzaXplLgorVH0KK0ZBTFNFL0ZBTFNFL1R7CituY3Vyc2VzIHJlbGllcyBvbiB0aGUgdGVybWluYWwgZGF0YWJhc2UgdG8gZGV0ZXJtaW5lIHNpemUuCitUfQorLlRFCisuU1MgcHV0d2luL2dldHdpbgorLlBQCitUaGUgXGZCcHV0d2luXGZSIHJvdXRpbmUgd3JpdGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQKK3dpdGggd2luZG93IChvciBwYWQpIFxmSXdpblxmUiBpbnRvCit0aGUgZmlsZSB0byB3aGljaCBcZklmaWxlcFxmUiBwb2ludHMuCitUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSBsYXRlciByZXRyaWV2ZWQKIHVzaW5nIHRoZSBcZkJnZXR3aW5cZlIgZnVuY3Rpb24uCiAuUFAKIFRoZSBcZkJnZXR3aW5cZlIgcm91dGluZSByZWFkcyB3aW5kb3cgcmVsYXRlZCBkYXRhIHN0b3JlZCBpbiB0aGUgZmlsZSBieQotXGZCcHV0d2luXGZSLiAgVGhlIHJvdXRpbmUgdGhlbiBjcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIG5ldyB3aW5kb3cgdXNpbmcgdGhhdAotZGF0YS4gIEl0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgd2luZG93LgorXGZCcHV0d2luXGZSLgorVGhlIHJvdXRpbmUgdGhlbiBjcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIG5ldyB3aW5kb3cgdXNpbmcgdGhhdAorZGF0YS4KK0l0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgd2luZG93LgorVGhlcmUgYXJlIGEgZmV3IGNhdmVhdHM6CisuYlAKK3RoZSBkYXRhIHdyaXR0ZW4gaXMgYSBjb3B5IG9mIHRoZSBcZkJXSU5ET1dcZlAgc3RydWN0dXJlLAorYW5kIGl0cyBhc3NvY2lhdGVkIGNoYXJhY3RlciBjZWxscy4KK1RoZSBmb3JtYXQgZGlmZmVycyBiZXR3ZWVuIHRoZSB3aWRlLWNoYXJhY3RlciAobmN1cnNlc3cpIGFuZAorbm9uLXdpZGUgKG5jdXJzZXMpIGxpYnJhcmllcy4KK1lvdSBjYW4gdHJhbnNmZXIgZGF0YSBiZXR3ZWVuIHRoZSB0d28sIGhvd2V2ZXIuCisuYlAKK3RoZSByZXRyaWV2ZWQgd2luZG93IGlzIGFsd2F5cyBjcmVhdGVkIGFzIGEgdG9wLWxldmVsIHdpbmRvdyAob3IgcGFkKSwKK3JhdGhlciB0aGFuIGEgc3Vid2luZG93LgorLmJQCit0aGUgd2luZG93J3MgY2hhcmFjdGVyIGNlbGxzIGNvbnRhaW4gdGhlIGNvbG9yIHBhaXIgXGZJdmFsdWVcZlAsCitidXQgbm90IHRoZSBhY3R1YWwgY29sb3IgXGZJbnVtYmVyc1xmUC4KK0lmIGNlbGxzIGluIHRoZSByZXRyaWV2ZWQgd2luZG93IHVzZSBjb2xvciBwYWlycyB3aGljaCBoYXZlIG5vdCBiZWVuCitjcmVhdGVkIGluIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBcZkJpbml0X3BhaXJcZlAsCit0aGV5IHdpbGwgbm90IGJlIGNvbG9yZWQgd2hlbiB0aGUgd2luZG93IGlzIHJlZnJlc2hlZC4KKy5TUyBkZWxheV9vdXRwdXQKIC5QUAogVGhlIFxmQmRlbGF5X291dHB1dFxmUiByb3V0aW5lIGluc2VydHMgYW4gXGZJbXNcZlIgbWlsbGlzZWNvbmQgcGF1c2UKLWluIG91dHB1dC4gIFRoaXMgcm91dGluZSBzaG91bGQgbm90IGJlIHVzZWQgZXh0ZW5zaXZlbHkgYmVjYXVzZQoraW4gb3V0cHV0LgorVGhpcyByb3V0aW5lIHNob3VsZCBub3QgYmUgdXNlZCBleHRlbnNpdmVseSBiZWNhdXNlCiBwYWRkaW5nIGNoYXJhY3RlcnMgYXJlIHVzZWQgcmF0aGVyIHRoYW4gYSBDUFUgcGF1c2UuCi1JZiBubyBwYWRkaW5nIGNoYXJhY3RlciBpcyBzcGVjaWZpZWQsIHRoaXMgdXNlcyBcZkJuYXBtc1xmUiB0byBwZXJmb3JtIHRoZSBkZWxheS4KK0lmIG5vIHBhZGRpbmcgY2hhcmFjdGVyIGlzIHNwZWNpZmllZCwKK3RoaXMgdXNlcyBcZkJuYXBtc1xmUiB0byBwZXJmb3JtIHRoZSBkZWxheS4KKy5TUyBmbHVzaGlucAogLlBQCiBUaGUgXGZCZmx1c2hpbnBcZlIgcm91dGluZSB0aHJvd3MgYXdheSBhbnkgdHlwZWFoZWFkIHRoYXQgaGFzIGJlZW4gdHlwZWQgYnkgdGhlCiB1c2VyIGFuZCBoYXMgbm90IHlldCBiZWVuIHJlYWQgYnkgdGhlIHByb2dyYW0uCkBAIC0xNzMsMzYgKzI2NCw4MyBAQAogcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgYXNzb2NpYXRlZCBcZkJmd3JpdGVcZlAgY2FsbHMgcmV0dXJuIGFuIGVycm9yLgogLlJFCiAuU0ggUE9SVEFCSUxJVFkKKy5TUyBmaWx0ZXIKKy5QUAorVGhlIFNWcjQgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgdGhlIGFjdGlvbiBvZiBcZkJmaWx0ZXJcZlIgb25seSBpbiB0aGUgdmFndWVzdAordGVybXMuCitUaGUgZGVzY3JpcHRpb24gaGVyZSBpcyBhZGFwdGVkIGZyb20gdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgKHdoaWNoCitlcnJvbmVvdXNseSBmYWlscyB0byBkZXNjcmliZSB0aGUgZGlzYWJsaW5nIG9mIFxmQmN1dVxmUikuCisuU1Mga2V5bmFtZQorLlBQCitUaGUgXGZCa2V5bmFtZVxmUCBmdW5jdGlvbiBtYXkgcmV0dXJuIHRoZSBuYW1lcyBvZiB1c2VyLWRlZmluZWQKK3N0cmluZyBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIHRlcm1pbmZvIGVudHJ5IHZpYSB0aGUgXGZCXC14XGZQCitvcHRpb24gb2YgXGZCQFRJQ0BcZlAuCitUaGlzIGltcGxlbWVudGF0aW9uIGF1dG9tYXRpY2FsbHkgYXNzaWducyBhdCBydW4tdGltZSBrZXljb2RlcyB0bwordXNlci1kZWZpbmVkIHN0cmluZ3Mgd2hpY2ggYmVnaW4gd2l0aCAiayIuCitUaGUga2V5Y29kZXMgc3RhcnQgYXQgS0VZX01BWCwgYnV0IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZQordGhlIHNhbWUgdmFsdWUgZm9yIGRpZmZlcmVudCBydW5zIGJlY2F1c2UgdXNlci1kZWZpbmVkIGNvZGVzIGFyZQorbWVyZ2VkIGZyb20gYWxsIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyB3aGljaCBoYXZlIGJlZW4gbG9hZGVkLgorVGhlIFxmQnVzZV9leHRlbmRlZF9uYW1lc1xmUCBmdW5jdGlvbiBjb250cm9scyB3aGV0aGVyIHRoaXMgZGF0YSBpcworbG9hZGVkIHdoZW4gdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGlzIHJlYWQgYnkgdGhlIGxpYnJhcnkuCisuU1Mgbm9maWx0ZXIvdXNlX3Rpb2N0bAorLlBQCitUaGUgXGZCbm9maWx0ZXJcZlAgYW5kIFxmQnVzZV90aW9jdGxcZlAgcm91dGluZXMgYXJlIHNwZWNpZmljIHRvIG5jdXJzZXMuCitUaGV5IHdlcmUgbm90IHN1cHBvcnRlZCBvbiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCitJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFueSBjb2RlIGRlcGVuZGluZyBvbiBuY3Vyc2VzIGV4dGVuc2lvbnMKK2JlIGNvbmRpdGlvbmVkIHVzaW5nIE5DVVJTRVNfVkVSU0lPTi4KKy5TUyBwdXR3aW4vZ2V0d2luCisuUFAKK1RoZSBcZkJwdXR3aW5cZlAgYW5kIFxmQmdldHdpblxmUCBmdW5jdGlvbnMgaGF2ZSBzZXZlcmFsIGlzc3VlcyB3aXRoCitwb3J0YWJpbGl0eToKKy5iUAorVGhlIGZpbGVzIHdyaXR0ZW4gYW5kIHJlYWQgYnkgdGhlc2UgZnVuY3Rpb25zCit1c2UgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZm9ybWF0LgorQWx0aG91Z2ggdGhlIGZvcm1hdCBpcyBhbiBvYnZpb3VzIHRhcmdldCBmb3Igc3RhbmRhcmRpemF0aW9uLAoraXQgaGFzIGJlZW4gb3Zlcmxvb2tlZC4KKy5JUAorSW50ZXJlc3RpbmdseSBlbm91Z2gsIGFjY29yZGluZyB0byB0aGUgY29weXJpZ2h0IGRhdGVzIGluIFNvbGFyaXMgc291cmNlLAordGhlIGZ1bmN0aW9ucyAoYWxvbmcgd2l0aCBcZkJzY3JfaW5pdFxmUCwgZXRjLikgb3JpZ2luYXRlZCB3aXRoCit0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSAoaW4gMTk4MikKK2FuZCB3ZXJlIGxhdGVyIChpbiAxOTg4KSBpbmNvcnBvcmF0ZWQgaW50byBTVnI0LgorT2RkbHksIHRoZXJlIGFyZSBubyBzdWNoIGZ1bmN0aW9ucyBpbiB0aGUgNC4zQlNEIGN1cnNlcyBzb3VyY2VzLgorLmJQCitNb3N0IGltcGxlbWVudGF0aW9ucyBzaW1wbHkgZHVtcCB0aGUgYmluYXJ5IFxmQldJTkRPV1xmUCBzdHJ1Y3R1cmUgdG8gdGhlIGZpbGUuCitUaGVzZSBpbmNsdWRlIFNWcjQgY3Vyc2VzLCBOZXRCU0QgYW5kIFBEQ3Vyc2VzLCBhcyB3ZWxsIGFzIG9sZGVyIG5jdXJzZXMgdmVyc2lvbnMuCitUaGlzIGltcGxlbWVudGF0aW9uIChhcyB3ZWxsIGFzIHRoZSBYL09wZW4gdmFyaWFudCBvZiBTb2xhcmlzIGN1cnNlcywgZGF0ZWQgMTk5NSkKK3VzZXMgdGV4dHVhbCBkdW1wcy4KKy5JUAorVGhlIGltcGxlbWVudGF0aW9ucyB3aGljaCB1c2UgYmluYXJ5IGR1bXBzIHVzZSBibG9jay1JL08KKyh0aGUgXGZCZndyaXRlXGZQIGFuZCBcZkJmcmVhZFxmUCBmdW5jdGlvbnMpLgorVGhvc2UgdGhhdCB1c2UgdGV4dHVhbCBkdW1wcyB1c2UgYnVmZmVyZWQtSS9PLgorQSBmZXcgYXBwbGljYXRpb25zIG1heSBoYXBwZW4gdG8gd3JpdGUgZXh0cmEgZGF0YSBpbiB0aGUgZmlsZSB1c2luZwordGhlc2UgZnVuY3Rpb25zLgorRG9pbmcgdGhhdCBjYW4gcnVuIGludG8gcHJvYmxlbXMgbWl4aW5nIGJsb2NrLSBhbmQgYnVmZmVyZWQtSS9PLgorVGhpcyBpbXBsZW1lbnRhdGlvbiByZWR1Y2VzIHRoZSBwcm9ibGVtIG9uIHdyaXRlcyBieSBmbHVzaGluZyB0aGUgb3V0cHV0LgorSG93ZXZlciwgcmVhZGluZyBmcm9tIGEgZmlsZSB3cml0dGVuIHVzaW5nIG1peGVkIHNjaGVtZXMgbWF5IG5vdCBiZSBzdWNjZXNzZnVsLgorLlNTIHVuY3RybC93dW5jdHJsCisuUFAKIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMuCiBJdCBzdGF0ZXMgdGhhdCBcZkJ1bmN0cmxcZlIgYW5kIFxmQnd1bmN0cmxcZlIgd2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgaWYKIHVuc3VjY2Vzc2Z1bCwgYnV0IGRvZXMgbm90IGRlZmluZSBhbnkgZXJyb3IgY29uZGl0aW9ucy4KIFRoaXMgaW1wbGVtZW50YXRpb24gY2hlY2tzIGZvciB0aHJlZSBjYXNlczoKLS5SUwotLlRQIDUKLS0KLXRoZSBwYXJhbWV0ZXIgaXMgYSA3LWJpdCBVUy1BU0NJSSBjb2RlLgorLmJQCit0aGUgcGFyYW1ldGVyIGlzIGEgNy1iaXQgVVNcLUFTQ0lJIGNvZGUuCiBUaGlzIGlzIHRoZSBjYXNlIHRoYXQgWC9PcGVuIEN1cnNlcyBkb2N1bWVudGVkLgotLlRQIDUKLS0KLXRoZSBwYXJhbWV0ZXIgaXMgaW4gdGhlIHJhbmdlIDEyOC0xNTksIGkuZS4sIGEgQzEgY29udHJvbCBjb2RlLgorLmJQCit0aGUgcGFyYW1ldGVyIGlzIGluIHRoZSByYW5nZSAxMjhcLTE1OSwgaS5lLiwgYSBDMSBjb250cm9sIGNvZGUuCiBJZiBcZkJ1c2VfbGVnYWN5X2NvZGluZ1xmUCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBhIFxmQjJcZlAgcGFyYW1ldGVyLAogXGZCdW5jdHJsXGZQIHJldHVybnMgdGhlIHBhcmFtZXRlciwgaS5lLiwgYSBvbmUtY2hhcmFjdGVyIHN0cmluZyB3aXRoCiB0aGUgcGFyYW1ldGVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIuCi1PdGhlcndpc2UsIGl0IHJldHVybnMgYGB+QCcnLCBgYH5BJycsIGV0Yy4sIGFuYWxvZ291cyB0byBgYF5AJycsIGBgXkEnJywgQzAgY29udHJvbHMuCitPdGhlcndpc2UsIGl0IHJldHVybnMgXCooYGB+QFwqKCcnLCBcKihgYH5BXCooJycsIGV0Yy4sCithbmFsb2dvdXMgdG8gXCooYGBeQFwqKCcnLCBcKihgYF5BXCooJycsIEMwIGNvbnRyb2xzLgogLklQCiBYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IGRvY3VtZW50IHdoZXRoZXIgXGZCdW5jdHJsXGZQIGNhbiBiZSBjYWxsZWQgYmVmb3JlCiBpbml0aWFsaXppbmcgY3Vyc2VzLgogVGhpcyBpbXBsZW1lbnRhdGlvbiBwZXJtaXRzIHRoYXQsCi1hbmQgcmV0dXJucyB0aGUgYGB+QCcnLCBldGMuLCB2YWx1ZXMgaW4gdGhhdCBjYXNlLgotLlRQIDUKLS0KK2FuZCByZXR1cm5zIHRoZSBcKihgYH5AXCooJycsIGV0Yy4sIHZhbHVlcyBpbiB0aGF0IGNhc2UuCisuYlAKIHBhcmFtZXRlciB2YWx1ZXMgb3V0c2lkZSB0aGUgMCB0byAyNTUgcmFuZ2UuCiBcZkJ1bmN0cmxcZlAgcmV0dXJucyBhIG51bGwgcG9pbnRlci4KLS5SRQotLlBQCi1UaGUgU1ZyNCBkb2N1bWVudGF0aW9uIGRlc2NyaWJlcyB0aGUgYWN0aW9uIG9mIFxmQmZpbHRlclxmUiBvbmx5IGluIHRoZSB2YWd1ZXN0Ci10ZXJtcy4gIFRoZSBkZXNjcmlwdGlvbiBoZXJlIGlzIGFkYXB0ZWQgZnJvbSB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCAod2hpY2gKLWVycm9uZW91c2x5IGZhaWxzIHRvIGRlc2NyaWJlIHRoZSBkaXNhYmxpbmcgb2YgXGZCY3V1XGZSKS4KIC5QUAogVGhlIHN0cmluZ3MgcmV0dXJuZWQgYnkgXGZCdW5jdHJsXGZSIGluIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlIGRldGVybWluZWQKIGF0IGNvbXBpbGUgdGltZSwKQEAgLTIxOSw0MCArMzU3LDE5IEBACiAuUFAKIExpa2V3aXNlLCB0aGUgXGZCbWV0YVxmUCBmdW5jdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byBjaGFuZ2UgdGhlCiBvdXRwdXQgb2YgXGZCa2V5bmFtZVxmUCwgaS5lLiwKLWl0IGRldGVybWluZXMgd2hldGhlciB0byB1c2UgdGhlIGBNLScgcHJlZml4Ci1mb3IgYGBtZXRhJycga2V5cyAoY29kZXMgaW4gdGhlIHJhbmdlIDEyOCB0byAyNTUpLgoraXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSB0aGUgYE1cLScgcHJlZml4Citmb3IgXCooYGBtZXRhXCooJycga2V5cyAoY29kZXMgaW4gdGhlIHJhbmdlIDEyOCB0byAyNTUpLgogQm90aCBcZkJ1c2VfbGVnYWN5X2NvZGluZ1xmUCBhbmQgXGZCbWV0YVxmUCBzdWNjZWVkIG9ubHkgYWZ0ZXIKLWN1cnNlcyBpcyBpbml0aWFsaXplZC4gCitjdXJzZXMgaXMgaW5pdGlhbGl6ZWQuCiBYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IGRvY3VtZW50IHRoZSB0cmVhdG1lbnQgb2YgY29kZXMgMTI4IHRvIDE1OS4KLVdoZW4gdHJlYXRpbmcgdGhlbSBhcyBgYG1ldGEnJyBrZXlzCitXaGVuIHRyZWF0aW5nIHRoZW0gYXMgXCooYGBtZXRhXCooJycga2V5cwogKG9yIGlmIFxmQmtleW5hbWVcZlAgaXMgY2FsbGVkIGJlZm9yZSBpbml0aWFsaXppbmcgY3Vyc2VzKSwKLXRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBzdHJpbmdzIGBgTS1eQCcnLCBgYE0tXkEnJywgZXRjLgotLlBQCi1UaGUgXGZCa2V5bmFtZVxmUCBmdW5jdGlvbiBtYXkgcmV0dXJuIHRoZSBuYW1lcyBvZiB1c2VyLWRlZmluZWQKLXN0cmluZyBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIHRlcm1pbmZvIGVudHJ5IHZpYSB0aGUgXGZCLXhcZlAKLW9wdGlvbiBvZiBcZkJ0aWNcZlAuCi1UaGlzIGltcGxlbWVudGF0aW9uIGF1dG9tYXRpY2FsbHkgYXNzaWducyBhdCBydW4tdGltZSBrZXljb2RlcyB0byAKLXVzZXItZGVmaW5lZCBzdHJpbmdzIHdoaWNoIGJlZ2luIHdpdGggImsiLgotVGhlIGtleWNvZGVzIHN0YXJ0IGF0IEtFWV9NQVgsIGJ1dCBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgCi10aGUgc2FtZSB2YWx1ZSBmb3IgZGlmZmVyZW50IHJ1bnMgYmVjYXVzZSB1c2VyLWRlZmluZWQgY29kZXMgYXJlCi1tZXJnZWQgZnJvbSBhbGwgdGVybWluYWwgZGVzY3JpcHRpb25zIHdoaWNoIGhhdmUgYmVlbiBsb2FkZWQuCi1UaGUgXGZCdXNlX2V4dGVuZGVkX25hbWVzXGZQIGZ1bmN0aW9uIGNvbnRyb2xzIHdoZXRoZXIgdGhpcyBkYXRhIGlzCi1sb2FkZWQgd2hlbiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24gaXMgcmVhZCBieSB0aGUgbGlicmFyeS4KLS5QUAotVGhlIFxmQm5vZmlsdGVyXGZQIHJvdXRpbmUgaXMgc3BlY2lmaWMgdG8gbmN1cnNlcy4KLUl0IHdhcyBub3Qgc3VwcG9ydGVkIG9uIFZlcnNpb24gNywgQlNEIG9yIFN5c3RlbSBWIGltcGxlbWVudGF0aW9ucy4KLUl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYW55IGNvZGUgZGVwZW5kaW5nIG9uIG5jdXJzZXMgZXh0ZW5zaW9ucwotYmUgY29uZGl0aW9uZWQgdXNpbmcgTkNVUlNFU19WRVJTSU9OLgordGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHN0cmluZ3MgXCooYGBNXC1eQFwqKCcnLCBcKihgYE1cLV5BXCooJycsIGV0Yy4KIC5TSCBTRUUgQUxTTwogXGZCbGVnYWN5X2NvZGluZ1xmUigzWCksCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCY3Vyc19pbml0c2NyXGZSKDNYKSwKIFxmQmN1cnNfa2VybmVsXGZSKDNYKSwKIFxmQmN1cnNfc2NyX2R1bXBcZlIoM1gpLAorXGZCY3Vyc192YXJpYWJsZXNcZlIoM1gpLAogXGZCbGVnYWN5X2NvZGluZ1xmUigzWCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9jdXJzX3ZhcmlhYmxlcy4zeCBiL21hbi9jdXJzX3ZhcmlhYmxlcy4zeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmJlMTkyCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL2N1cnNfdmFyaWFibGVzLjN4CkBAIC0wLDAgKzEsMTM2IEBACisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKy5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorLlwiICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisuXCIgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKy5cIiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorLlwiIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisuXCIgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisuXCIgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisuXCIgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKy5cIiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorLlwiIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisuXCIgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKy5cIiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorLlwiIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorLlwiIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisuXCIgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKy5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5cIiAkSWQ6IGN1cnNfdmFyaWFibGVzLjN4LHYgMS42IDIwMTMvMTIvMjEgMTg6NDE6MzIgdG9tIEV4cCAkCisuVEggY3Vyc192YXJpYWJsZXMgM1ggIiIKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KKy5kcyBuIDUKKy5uYQorLmh5IDAKKy5TSCBOQU1FCitcZkJDT0xPUlNcZlIsCitcZkJDT0xPUl9QQUlSU1xmUiwKK1xmQkNPTFNcZlIsCitcZkJFU0NERUxBWVxmUiwKK1xmQkxJTkVTXGZSLAorXGZCVEFCU0laRVxmUiwKK1xmQmN1cnNjclxmUiwKK1xmQm5ld3NjclxmUiwKK1xmQnN0ZHNjclxmUgorXC0gXGZCY3Vyc2VzXGZSIGdsb2JhbCB2YXJpYWJsZXMKKy5hZAorLmh5CisuU0ggU1lOT1BTSVMKKy5uZgorXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgorLlBQCitcZkJpbnQgQ09MT1JfUEFJUlM7XGZSCisuYnIKK1xmQmludCBDT0xPUlM7XGZSCisuYnIKK1xmQmludCBDT0xTO1xmUgorLmJyCitcZkJpbnQgRVNDREVMQVk7XGZSCisuYnIKK1xmQmludCBMSU5FUztcZlIKKy5icgorXGZCaW50IFRBQlNJWkU7XGZSCisuYnIKK1xmQldJTkRPVyAqIGN1cnNjcjtcZlIKKy5icgorXGZCV0lORE9XICogbmV3c2NyO1xmUgorLmJyCitcZkJXSU5ET1cgKiBzdGRzY3I7XGZSCisuZmkKKy5TSCBERVNDUklQVElPTgorVGhpcyBwYWdlIHN1bW1hcml6ZXMgdmFyaWFibGVzIHByb3ZpZGVkIGJ5IHRoZSBcZkJjdXJzZXNcZlAgbGlicmFyeS4KK0EgbW9yZSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBpcyBnaXZlbiBpbiB0aGUgXGZCY3Vyc2VzXGZQKDNYKSBtYW51YWwgcGFnZS4KKy5QUAorRGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLCB0aGVzZSBtYXkgYmUgYWN0dWFsIHZhcmlhYmxlcywKK29yIG1hY3JvcyAoc2VlIFxmQmN1cnNfdGhyZWFkc1xmUigzWCkgYW5kIFxmQmN1cnNfb3BhcXVlXGZSKDNYKSkKK3doaWNoIHByb3ZpZGUgcmVhZC1vbmx5IGFjY2VzcyB0byBcZkljdXJzZXNcZlAncyBzdGF0ZS4KK0luIGVpdGhlciBjYXNlLCBhcHBsaWNhdGlvbnMgc2hvdWxkIHRyZWF0IHRoZW0gYXMgcmVhZC1vbmx5IHRvIGF2b2lkCitjb25mdXNpbmcgdGhlIGxpYnJhcnkuCisuU1MgQ09MT1JfUEFJUlMKK0FmdGVyIGluaXRpYWxpemluZyBjdXJzZXMsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgdGhlIG51bWJlciBvZiBjb2xvciBwYWlycword2hpY2ggdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0LgorVXN1YWxseSB0aGUgbnVtYmVyIG9mIGNvbG9yIHBhaXJzIHdpbGwgYmUgdGhlIHByb2R1Y3QgXGZCQ09MT1JTXGZQKlxmQkNPTE9SU1xmUCwKK2hvd2V2ZXIgdGhpcyBpcyBub3QgYWx3YXlzIHRydWU6CisuYlAKK2EgZmV3IHRlcm1pbmFscyB1c2UgSExTIGNvbG9ycywgd2hpY2ggZG8gbm90IGZvbGxvdyB0aGlzIHJ1bGUKKy5iUAordGVybWluYWxzIHN1cHBvcnRpbmcgYSBsYXJnZSBudW1iZXIgb2YgY29sb3JzIGFyZSBsaW1pdGVkIGJ5IHRoZSBudW1iZXIKK29mIGNvbG9yIHBhaXJzIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgXGZJc2lnbmVkIHNob3J0XGZQIHZhbHVlLgorLlNTIENPTE9SUworQWZ0ZXIgaW5pdGlhbGl6aW5nIGN1cnNlcywgdGhpcyB2YXJpYWJsZSBjb250YWlucyB0aGUgbnVtYmVyIG9mIGNvbG9ycword2hpY2ggdGhlIHRlcm1pbmFsIGNhbiBzdXBwb3J0LgorLlNTIENPTFMKK0FmdGVyIGluaXRpYWxpemluZyBjdXJzZXMsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4sCitpLmUuLCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuCisuU1MgRVNDREVMQVkKK1RoaXMgdmFyaWFibGUgaG9sZHMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBhZnRlciByZWFkaW5nIGFuCitlc2NhcGUgY2hhcmFjdGVyLAordG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBpbmRpdmlkdWFsIGVzY2FwZSBjaGFyYWN0ZXIgZW50ZXJlZCBvbiB0aGUKK2tleWJvYXJkIGZyb20gZXNjYXBlIHNlcXVlbmNlcyBzZW50IGJ5IGN1cnNvci0gYW5kIGZ1bmN0aW9uLWtleXMKKyhzZWUgY3Vyc2VzKDNYKS4KKy5TUyBMSU5FUworQWZ0ZXIgaW5pdGlhbGl6aW5nIGN1cnNlcywgdGhpcyB2YXJpYWJsZSBjb250YWlucyB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4sCitpLmUuLCB0aGUgbnVtYmVyIG9mIGxpbmVzLgorLlNTIFRBQlNJWkUKK1RoaXMgdmFyaWFibGUgaG9sZHMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHVzZWQgYnkgdGhlIFxmSWN1cnNlc1xmUCBsaWJyYXJ5Cit3aGVuIGNvbnZlcnRpbmcgYSB0YWIgY2hhcmFjdGVyIHRvIHNwYWNlcyBhcyBpdCBhZGRzIHRoZSB0YWIgdG8gYSB3aW5kb3cKKyhzZWUgY3Vyc19hZGRjaCgzWCkuCisuU1MgVGhlIEN1cnJlbnQgU2NyZWVuCitUaGlzIGltcGxlbWVudGF0aW9uIG9mIGN1cnNlcyB1c2VzIGEgc3BlY2lhbCB3aW5kb3cgXGZCY3Vyc2NyXGZQIHRvCityZWNvcmQgaXRzIHVwZGF0ZXMgdG8gdGhlIHRlcm1pbmFsIHNjcmVlbi4KKy5TUyBUaGUgTmV3IFNjcmVlbgorVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBjdXJzZXMgdXNlcyBhIHNwZWNpYWwgd2luZG93IFxmQm5ld3NjclxmUCB0bworaG9sZCB1cGRhdGVzIHRvIHRoZSB0ZXJtaW5hbCBzY3JlZW4gYmVmb3JlIGFwcGx5aW5nIHRoZW0gdG8gXGZCY3Vyc2NyXGZQLgorLlNTIFRoZSBTdGFuZGFyZCBTY3JlZW4KK1Vwb24gaW5pdGlhbGl6aW5nIGN1cnNlcywKK2EgZGVmYXVsdCB3aW5kb3cgY2FsbGVkIFxmQnN0ZHNjclxmUCwKK3doaWNoIGlzIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCBzY3JlZW4sIGlzIGNyZWF0ZWQuCitNYW55IGN1cnNlcyBmdW5jdGlvbnMgdXNlIHRoaXMgd2luZG93LgorLlNIIE5PVEVTCitUaGUgY3Vyc2VzIGxpYnJhcnkgaXMgaW5pdGlhbGl6ZWQgdXNpbmcgZWl0aGVyIFxmQmluaXRzY3JcZlIoM1gpLAorb3IgXGZCbmV3dGVybVxmUigzWCkuCisuUFAKK0lmIFxmQmN1cnNlc1xmUCBpcyBjb25maWd1cmVkIHRvIHVzZSBzZXBhcmF0ZSBjdXJzZXMvdGVybWluZm8gbGlicmFyaWVzLAorbW9zdCBvZiB0aGVzZSB2YXJpYWJsZXMgcmVzaWRlIGluIHRoZSBjdXJzZXMgbGlicmFyeS4KKy5TSCBQT1JUQUJJTElUWQorRVNDREVMQVkgYW5kIFRBQlNJWkUgYXJlIGV4dGVuc2lvbnMsCitub3QgcHJvdmlkZWQgaW4gbW9zdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgY3Vyc2VzLgorLlNIIFNFRSBBTFNPCitcZkJjdXJzZXNcZlIoM1gpLAorXGZCY3Vyc19vcGFxdWVcZlIoM1gpLAorXGZCY3Vyc190ZXJtaW5mb1xmUigzWCksCitcZkJjdXJzX3RocmVhZHNcZlIoM1gpLAorXGZCdGVybV92YXJpYWJsZXNcZlIoM1gpLAorXGZCdGVybWluZm9cZlIoXCpuKS4KZGlmZiAtLWdpdCBhL21hbi9jdXJzX3dpbmRvdy4zeCBiL21hbi9jdXJzX3dpbmRvdy4zeAppbmRleCA1NTI4NjJlLi5iYTlkMjkzIDEwMDY0NAotLS0gYS9tYW4vY3Vyc193aW5kb3cuM3gKKysrIGIvbWFuL2N1cnNfd2luZG93LjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsNyArMjYsNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogY3Vyc193aW5kb3cuM3gsdiAxLjE0IDIwMDYvMDIvMjUgMjE6NDk6MTkgdG9tIEV4cCAkCisuXCIgJElkOiBjdXJzX3dpbmRvdy4zeCx2IDEuMTkgMjAxNS8wNy8yMSAwODoyNToyMyB0b20gRXhwICQKIC5USCBjdXJzX3dpbmRvdyAzWCAiIgogLm5hCiAuaHkgMApAQCAtNDEsODcgKzQxLDExNiBAQAogXGZCd3N5bmN1cFxmUiwKIFxmQnN5bmNva1xmUiwKIFxmQndjdXJzeW5jdXBcZlIsCi1cZkJ3c3luY2Rvd25cZlIgLSBjcmVhdGUgXGZCY3Vyc2VzXGZSIHdpbmRvd3MKK1xmQndzeW5jZG93blxmUiBcLSBjcmVhdGUgXGZCY3Vyc2VzXGZSIHdpbmRvd3MKIC5hZAogLmh5CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcAotXGZCV0lORE9XICpuZXd3aW4oaW50IG5saW5lcywgaW50IG5jb2xzLCBpbnQgYmVnaW5feSxcZlIKLSAgICAgIFxmQmludCBiZWdpbl94KTtcZlIKK1xmQldJTkRPVyAqbmV3d2luKFxmUgorICAgICAgXGZCaW50IFxmUFxmSW5saW5lc1xmUFxmQiwgaW50IFxmUFxmSW5jb2xzXGZQXGZCLFxmUgorICAgICAgXGZCaW50IFxmUFxmSWJlZ2luX3lcZlBcZkIsIGludCBcZlBcZkliZWdpbl94XGZQXGZCKTtcZlIKIC5icgotXGZCaW50IGRlbHdpbihXSU5ET1cgKndpbik7XGZSCitcZkJpbnQgZGVsd2luKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCKTtcZlIKIC5icgotXGZCaW50IG12d2luKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgpO1xmUgorXGZCaW50IG12d2luKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCLCBpbnQgXGZQXGZJeVxmUFxmQiwgaW50IFxmUFxmSXhcZlBcZkIpO1xmUgogLmJyCi1cZkJXSU5ET1cgKnN1YndpbihXSU5ET1cgKm9yaWcsIGludCBubGluZXMsIGludCBuY29scyxcZlIKLSAgICAgIFxmQmludCBiZWdpbl95LCBpbnQgYmVnaW5feCk7XGZSCitcZkJXSU5ET1cgKnN1YndpbihXSU5ET1cgKlxmUFxmSW9yaWdcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJbmxpbmVzXGZQXGZCLCBpbnQgXGZQXGZJbmNvbHNcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJYmVnaW5feVxmUFxmQiwgaW50IFxmUFxmSWJlZ2luX3hcZlBcZkIpO1xmUgogLmJyCi1cZkJXSU5ET1cgKmRlcndpbihXSU5ET1cgKm9yaWcsIGludCBubGluZXMsIGludCBuY29scyxcZlIKLSAgICAgIFxmQmludCBiZWdpbl95LCBpbnQgYmVnaW5feCk7XGZSCitcZkJXSU5ET1cgKmRlcndpbihXSU5ET1cgKlxmUFxmSW9yaWdcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJbmxpbmVzXGZQXGZCLCBpbnQgXGZQXGZJbmNvbHNcZlBcZkIsXGZSCisgICAgICBcZkJpbnQgXGZQXGZJYmVnaW5feVxmUFxmQiwgaW50IFxmUFxmSWJlZ2luX3hcZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgbXZkZXJ3aW4oV0lORE9XICp3aW4sIGludCBwYXJfeSwgaW50IHBhcl94KTtcZlIKK1xmQmludCBtdmRlcndpbihXSU5ET1cgKlxmUFxmSXdpblxmUFxmQiwgaW50IFxmUFxmSXBhcl95XGZQXGZCLCBpbnQgXGZQXGZJcGFyX3hcZlBcZkIpO1xmUgogLmJyCi1cZkJXSU5ET1cgKmR1cHdpbihXSU5ET1cgKndpbik7XGZSCitcZkJXSU5ET1cgKmR1cHdpbihXSU5ET1cgKlxmUFxmSXdpblxmUFxmQik7XGZSCiAuYnIKLVxmQnZvaWQgd3N5bmN1cChXSU5ET1cgKndpbik7XGZSCitcZkJ2b2lkIHdzeW5jdXAoV0lORE9XICpcZlBcZkl3aW5cZlBcZkIpO1xmUgogLmJyCi1cZkJpbnQgc3luY29rKFdJTkRPVyAqd2luLCBib29sIGJmKTtcZlIKK1xmQmludCBzeW5jb2soV0lORE9XICpcZlBcZkl3aW5cZlBcZkIsIGJvb2wgXGZQXGZJYmZcZlBcZkIpO1xmUgogLmJyCi1cZkJ2b2lkIHdjdXJzeW5jdXAoV0lORE9XICp3aW4pO1xmUgorXGZCdm9pZCB3Y3Vyc3luY3VwKFdJTkRPVyAqXGZQXGZJd2luXGZQXGZCKTtcZlIKIC5icgotXGZCdm9pZCB3c3luY2Rvd24oV0lORE9XICp3aW4pO1xmUgorXGZCdm9pZCB3c3luY2Rvd24oV0lORE9XICpcZlBcZkl3aW5cZlBcZkIpO1xmUgogLmJyCiAuU0ggREVTQ1JJUFRJT04KKy5TUyBuZXd3aW4KIENhbGxpbmcgXGZCbmV3d2luXGZSIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgbmV3IHdpbmRvdyB3aXRoIHRoZQotZ2l2ZW4gbnVtYmVyIG9mIGxpbmVzIGFuZCBjb2x1bW5zLiAgVGhlIHVwcGVyIGxlZnQtaGFuZCBjb3JuZXIgb2YgdGhlIHdpbmRvdyBpcwotYXQgbGluZSBcZkliZWdpblxmUl9cZkl5XGZSLCBjb2x1bW4gXGZJYmVnaW5cZlJfXGZJeFxmUi4gIElmIGVpdGhlcgotXGZJbmxpbmVzXGZSIG9yIFxmSW5jb2xzXGZSIGlzIHplcm8sIHRoZXkgZGVmYXVsdCB0byBcZkJMSU5FUyAtXGZSCi1cZkliZWdpblxmUl9cZkl5XGZSIGFuZCBcZkJDT0xTIC1cZlIgXGZJYmVnaW5cZlJfXGZJeFxmUi4gIEEgbmV3IGZ1bGwtc2NyZWVuCi13aW5kb3cgaXMgY3JlYXRlZCBieSBjYWxsaW5nIFxmQm5ld3dpbigwLDAsMCwwKVxmUi4KK2dpdmVuIG51bWJlciBvZiBsaW5lcyBhbmQgY29sdW1ucy4KK1RoZSB1cHBlciBsZWZ0LWhhbmQgY29ybmVyIG9mIHRoZSB3aW5kb3cgaXMKK2F0CisuUlMKK2xpbmUgXGZJYmVnaW5cZlJfXGZJeVxmUiwKKy5icgorY29sdW1uIFxmSWJlZ2luXGZSX1xmSXhcZlIKKy5SRQorLlBQCitJZiBlaXRoZXIKK1xmSW5saW5lc1xmUiBvciBcZkluY29sc1xmUiBpcyB6ZXJvLCB0aGV5IGRlZmF1bHQgdG8KKy5SUworXGZCTElORVMgXC1cZlIgXGZJYmVnaW5cZlJfXGZJeVxmUiBhbmQKKy5icgorXGZCQ09MUyBcLVxmUiBcZkliZWdpblxmUl9cZkl4XGZSLgorLlJFCisuUFAKK0EgbmV3IGZ1bGwtc2NyZWVuIHdpbmRvdyBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgXGZCbmV3d2luKDAsMCwwLDApXGZSLgorLlNTIGRlbHdpbgogLlBQCiBDYWxsaW5nIFxmQmRlbHdpblxmUiBkZWxldGVzIHRoZSBuYW1lZCB3aW5kb3csIGZyZWVpbmcgYWxsIG1lbW9yeQogYXNzb2NpYXRlZCB3aXRoIGl0IChpdCBkb2VzIG5vdCBhY3R1YWxseSBlcmFzZSB0aGUgd2luZG93J3Mgc2NyZWVuCi1pbWFnZSkuICBTdWJ3aW5kb3dzIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIG1haW4gd2luZG93IGNhbiBiZQotZGVsZXRlZC4KK2ltYWdlKS4KK1N1YndpbmRvd3MgbXVzdCBiZSBkZWxldGVkIGJlZm9yZSB0aGUgbWFpbiB3aW5kb3cgY2FuIGJlIGRlbGV0ZWQuCisuU1MgbXZ3aW4KIC5QUAogQ2FsbGluZyBcZkJtdndpblxmUiBtb3ZlcyB0aGUgd2luZG93IHNvIHRoYXQgdGhlIHVwcGVyIGxlZnQtaGFuZAotY29ybmVyIGlzIGF0IHBvc2l0aW9uIChcZkl4XGZSLCBcZkl5XGZSKS4gIElmIHRoZSBtb3ZlIHdvdWxkIGNhdXNlIHRoZQotd2luZG93IHRvIGJlIG9mZiB0aGUgc2NyZWVuLCBpdCBpcyBhbiBlcnJvciBhbmQgdGhlIHdpbmRvdyBpcyBub3QKLW1vdmVkLiAgTW92aW5nIHN1YndpbmRvd3MgaXMgYWxsb3dlZCwgYnV0IHNob3VsZCBiZSBhdm9pZGVkLgorY29ybmVyIGlzIGF0IHBvc2l0aW9uIChcZkl4XGZSLCBcZkl5XGZSKS4KK0lmIHRoZSBtb3ZlIHdvdWxkIGNhdXNlIHRoZSB3aW5kb3cgdG8gYmUgb2ZmIHRoZSBzY3JlZW4sCitpdCBpcyBhbiBlcnJvciBhbmQgdGhlIHdpbmRvdyBpcyBub3QgbW92ZWQuCitNb3Zpbmcgc3Vid2luZG93cyBpcyBhbGxvd2VkLCBidXQgc2hvdWxkIGJlIGF2b2lkZWQuCisuU1Mgc3Vid2luCiAuUFAKIENhbGxpbmcgXGZCc3Vid2luXGZSIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgbmV3IHdpbmRvdwotd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGxpbmVzLCBcZklubGluZXNcZlIsIGFuZCBjb2x1bW5zLAotXGZJbmNvbHNcZlIuICBUaGUgd2luZG93IGlzIGF0IHBvc2l0aW9uIChcZkliZWdpblxmUl9cZkl5XGZSLAotXGZJYmVnaW5cZlJfXGZJeFxmUikgb24gdGhlIHNjcmVlbi4gIChUaGlzIHBvc2l0aW9uIGlzIHJlbGF0aXZlIHRvIHRoZQotc2NyZWVuLCBhbmQgbm90IHRvIHRoZSB3aW5kb3cgXGZJb3JpZ1xmUi4pICBUaGUgd2luZG93IGlzIG1hZGUgaW4gdGhlCi1taWRkbGUgb2YgdGhlIHdpbmRvdyBcZklvcmlnXGZSLCBzbyB0aGF0IGNoYW5nZXMgbWFkZSB0byBvbmUgd2luZG93Ci13aWxsIGFmZmVjdCBib3RoIHdpbmRvd3MuICBUaGUgc3Vid2luZG93IHNoYXJlcyBtZW1vcnkgd2l0aCB0aGUgd2luZG93Ci1cZklvcmlnXGZSLiAgV2hlbiB1c2luZyB0aGlzIHJvdXRpbmUsIGl0IGlzIG5lY2Vzc2FyeSB0byBjYWxsCit3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgbGluZXMsIFxmSW5saW5lc1xmUiwgYW5kIGNvbHVtbnMsIFxmSW5jb2xzXGZSLgorVGhlIHdpbmRvdyBpcyBhdCBwb3NpdGlvbiAoXGZJYmVnaW5cZlJfXGZJeVxmUiwKK1xmSWJlZ2luXGZSX1xmSXhcZlIpIG9uIHRoZSBzY3JlZW4uCitUaGUgc3Vid2luZG93IHNoYXJlcyBtZW1vcnkgd2l0aCB0aGUgd2luZG93IFxmSW9yaWdcZlIsCitzbyB0aGF0IGNoYW5nZXMgbWFkZSB0byBvbmUgd2luZG93Cit3aWxsIGFmZmVjdCBib3RoIHdpbmRvd3MuCitXaGVuIHVzaW5nIHRoaXMgcm91dGluZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNhbGwKIFxmQnRvdWNod2luXGZSIG9yIFxmQnRvdWNobGluZVxmUiBvbiBcZklvcmlnXGZSIGJlZm9yZSBjYWxsaW5nCiBcZkJ3cmVmcmVzaFxmUiBvbiB0aGUgc3Vid2luZG93LgorLlNTIGRlcndpbgogLlBQCiBDYWxsaW5nIFxmQmRlcndpblxmUiBpcyB0aGUgc2FtZSBhcyBjYWxsaW5nIFxmQnN1YndpbixcZlIgZXhjZXB0IHRoYXQKIFxmSWJlZ2luXGZSX1xmSXlcZlIgYW5kIFxmSWJlZ2luXGZSX1xmSXhcZlIgYXJlIHJlbGF0aXZlIHRvIHRoZSBvcmlnaW4KLW9mIHRoZSB3aW5kb3cgXGZJb3JpZ1xmUiByYXRoZXIgdGhhbiB0aGUgc2NyZWVuLiAgVGhlcmUgaXMgbm8KLWRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3Vid2luZG93cyBhbmQgdGhlIGRlcml2ZWQgd2luZG93cy4KK29mIHRoZSB3aW5kb3cgXGZJb3JpZ1xmUiByYXRoZXIgdGhhbiB0aGUgc2NyZWVuLgorVGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzdWJ3aW5kb3dzIGFuZCB0aGUgZGVyaXZlZCB3aW5kb3dzLgogLlBQCiBDYWxsaW5nIFxmQm12ZGVyd2luXGZSIG1vdmVzIGEgZGVyaXZlZCB3aW5kb3cgKG9yIHN1YndpbmRvdykKLWluc2lkZSBpdHMgcGFyZW50IHdpbmRvdy4gIFRoZSBzY3JlZW4tcmVsYXRpdmUgcGFyYW1ldGVycyBvZiB0aGUKLXdpbmRvdyBhcmUgbm90IGNoYW5nZWQuICBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBkaXNwbGF5IGRpZmZlcmVudAoraW5zaWRlIGl0cyBwYXJlbnQgd2luZG93LgorVGhlIHNjcmVlbi1yZWxhdGl2ZSBwYXJhbWV0ZXJzIG9mIHRoZSB3aW5kb3cgYXJlIG5vdCBjaGFuZ2VkLgorVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gZGlzcGxheSBkaWZmZXJlbnQKIHBhcnRzIG9mIHRoZSBwYXJlbnQgd2luZG93IGF0IHRoZSBzYW1lIHBoeXNpY2FsIHBvc2l0aW9uIG9uIHRoZQogc2NyZWVuLgorLlNTIGR1cHdpbgogLlBQCiBDYWxsaW5nIFxmQmR1cHdpblxmUiBjcmVhdGVzIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiB0aGUgd2luZG93IFxmSXdpblxmUi4KKy5TUyB3c3luY3VwCiAuUFAKIENhbGxpbmcgXGZCd3N5bmN1cFxmUiB0b3VjaGVzIGFsbCBsb2NhdGlvbnMgaW4gYW5jZXN0b3JzIG9mIFxmSXdpblxmUiB0aGF0IGFyZQotY2hhbmdlZCBpbiBcZkl3aW5cZlIuICBJZiBcZkJzeW5jb2tcZlIgaXMgY2FsbGVkIHdpdGggc2Vjb25kIGFyZ3VtZW50CitjaGFuZ2VkIGluIFxmSXdpblxmUi4KK0lmIFxmQnN5bmNva1xmUiBpcyBjYWxsZWQgd2l0aCBzZWNvbmQgYXJndW1lbnQKIFxmQlRSVUVcZlIgdGhlbiBcZkJ3c3luY3VwXGZSIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW5ldmVyIHRoZXJlIGlzIGEKIGNoYW5nZSBpbiB0aGUgd2luZG93LgorLlNTIHdzeW5jZG93bgogLlBQCiBUaGUgXGZCd3N5bmNkb3duXGZSIHJvdXRpbmUgdG91Y2hlcyBlYWNoIGxvY2F0aW9uIGluIFxmSXdpblxmUiB0aGF0IGhhcyBiZWVuCi10b3VjaGVkIGluIGFueSBvZiBpdHMgYW5jZXN0b3Igd2luZG93cy4gIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgYnkKK3RvdWNoZWQgaW4gYW55IG9mIGl0cyBhbmNlc3RvciB3aW5kb3dzLgorVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBieQogXGZCd3JlZnJlc2hcZlIsIHNvIGl0IHNob3VsZCBhbG1vc3QgbmV2ZXIgYmUgbmVjZXNzYXJ5IHRvIGNhbGwgaXQgbWFudWFsbHkuCisuU1Mgd2N1cnN5bmN1cAogLlBQCiBUaGUgcm91dGluZSBcZkJ3Y3Vyc3luY3VwXGZSIHVwZGF0ZXMgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIG9mIGFsbCB0aGUKIGFuY2VzdG9ycyBvZiB0aGUgd2luZG93IHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZQpAQCAtMTM1LDExICsxNjQsMTggQEAKIC5QUAogWC9PcGVuIGRlZmluZXMgbm8gZXJyb3IgY29uZGl0aW9ucy4KIEluIHRoaXMgaW1wbGVtZW50YXRpb24KLS5SUwogLlRQIDUKIFxmQmRlbHdpblxmUgogcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbCwgb3IKIGlmIHRoZSB3aW5kb3cgaXMgdGhlIHBhcmVudCBvZiBhbm90aGVyIHdpbmRvdy4KKy5UUCA1CitcZkJkZXJ3aW5cZlAKK3JldHVybnMgYW4gZXJyb3IgaWYgdGhlIHBhcmVudCB3aW5kb3cgcG9pbnRlciBpcyBudWxsLCBvcgoraWYgYW55IG9mIGl0cyBvcmRpbmF0ZXMgb3IgZGltZW5zaW9ucyBpcyBuZWdhdGl2ZSwgb3IKK2lmIHRoZSByZXN1bHRpbmcgd2luZG93IGRvZXMgbm90IGZpdCBpbnNpZGUgdGhlIHBhcmVudCB3aW5kb3cuCisuVFAgNQorXGZCZHVwd2luXGZQCityZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgcG9pbnRlciBpcyBudWxsLgogLklQCiBUaGlzIGltcGxlbWVudGF0aW9uIGFsc28gbWFpbnRhaW5zIGEgbGlzdCBvZiB3aW5kb3dzLAogYW5kIGNoZWNrcyB0aGF0IHRoZSBwb2ludGVyIHBhc3NlZCB0byBcZkJkZWx3aW5cZlAgaXMgb25lIHRoYXQKQEAgLTE1NiwxMCArMTkyLDIzIEBACiBpZiB0aGUgd2luZG93IGlzIHJlYWxseSBhIHBhZCwgb3IKIGlmIHNvbWUgcGFydCBvZiB0aGUgd2luZG93IHdvdWxkIGJlIHBsYWNlZCBvZmYtc2NyZWVuLgogLlRQIDUKK1xmQm5ld3dpblxmUAord2lsbCBmYWlsIGlmIGVpdGhlciBvZiBpdHMgYmVnaW5uaW5nIG9yZGluYXRlcyBpcyBuZWdhdGl2ZSwgb3IKK2lmIGVpdGhlciB0aGUgbnVtYmVyIG9mIGxpbmVzIG9yIGNvbHVtbnMgaXMgbmVnYXRpdmUuCisuVFAgNQogXGZCc3luY29rXGZQCiByZXR1cm5zIGFuIGVycm9yCiBpZiB0aGUgd2luZG93IHBvaW50ZXIgaXMgbnVsbC4KLS5SRQorLlRQIDUKK1xmQnN1YndpblxmUAorcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgcGFyZW50IHdpbmRvdyBwb2ludGVyIGlzIG51bGwsIG9yCitpZiBhbnkgb2YgaXRzIG9yZGluYXRlcyBvciBkaW1lbnNpb25zIGlzIG5lZ2F0aXZlLCBvcgoraWYgdGhlIHJlc3VsdGluZyB3aW5kb3cgZG9lcyBub3QgZml0IGluc2lkZSB0aGUgcGFyZW50IHdpbmRvdy4KKy5QUAorVGhlIGZ1bmN0aW9ucyB3aGljaCByZXR1cm4gYSB3aW5kb3cgcG9pbnRlcgorbWF5IGFsc28gZmFpbCBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbWVtb3J5IGZvciBpdHMgZGF0YSBzdHJ1Y3R1cmVzLgorQW55IG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGZhaWwgaWYgdGhlIHNjcmVlbiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQsCitpLmUuLCB3aXRoIFxmQmluaXRzY3JcZlAgb3IgXGZCbmV3dGVybVxmUC4KIC5TSCBOT1RFUwogSWYgbWFueSBzbWFsbCBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZSB3aW5kb3csIHRoZSBcZkJ3c3luY3VwXGZSIG9wdGlvbiBjb3VsZAogZGVncmFkZSBwZXJmb3JtYW5jZS4KQEAgLTE3MSwxOCArMjIwLDE2IEBACiBpbmNvbXBsZXRlbHkgaW1wbGVtZW50ZWQsIGFuZCBub3Qgd2VsbCB0ZXN0ZWQuCiAuUFAKIFRoZSBTeXN0ZW0gViBjdXJzZXMgZG9jdW1lbnRhdGlvbiBpcyB2ZXJ5IHVuY2xlYXIgYWJvdXQgd2hhdCBcZkJ3c3luY3VwXGZSCi1hbmQgXGZCd3N5bmNkb3duXGZSIGFjdHVhbGx5IGRvLiAgSXQgc2VlbXMgdG8gaW1wbHkgdGhhdCB0aGV5IGFyZSBvbmx5CithbmQgXGZCd3N5bmNkb3duXGZSIGFjdHVhbGx5IGRvLgorSXQgc2VlbXMgdG8gaW1wbHkgdGhhdCB0aGV5IGFyZSBvbmx5CiBzdXBwb3NlZCB0byB0b3VjaCBleGFjdGx5IHRob3NlIGxpbmVzIHRoYXQgYXJlIGFmZmVjdGVkIGJ5IGFuY2VzdG9yIGNoYW5nZXMuCiBUaGUgbGFuZ3VhZ2UgaGVyZSwgYW5kIHRoZSBiZWhhdmlvciBvZiB0aGUgXGZCY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9uLAotaXMgcGF0dGVybmVkIG9uIHRoZSBYUEc0IGN1cnNlcyBzdGFuZGFyZC4gIFRoZSB3ZWFrZXIgWFBHNCBzcGVjIG1heSByZXN1bHQKLWluIHNsb3dlciB1cGRhdGVzLgoraXMgcGF0dGVybmVkIG9uIHRoZSBYUEc0IGN1cnNlcyBzdGFuZGFyZC4KK1RoZSB3ZWFrZXIgWFBHNCBzcGVjIG1heSByZXN1bHQgaW4gc2xvd2VyIHVwZGF0ZXMuCiAuU0ggUE9SVEFCSUxJVFkKIFRoZSBYU0kgQ3Vyc2VzIHN0YW5kYXJkLCBJc3N1ZSA0IGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmN1cnNfcmVmcmVzaFxmUigzWCksIFxmQmN1cnNfdG91Y2hcZlIoM1gpCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3JlZnJlc2hcZlIoM1gpLAorXGZCY3Vyc190b3VjaFxmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCkKZGlmZiAtLWdpdCBhL21hbi9kZWZhdWx0X2NvbG9ycy4zeCBiL21hbi9kZWZhdWx0X2NvbG9ycy4zeAppbmRleCAzMjUxOGJhLi4wYjg1NTk4IDEwMDY0NAotLS0gYS9tYW4vZGVmYXVsdF9jb2xvcnMuM3gKKysrIGIvbWFuL2RlZmF1bHRfY29sb3JzLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNyArMjgsNyBAQAogLlwiCiAuXCIgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTcsMTk5OSwyMDAwLDIwMDUKIC5cIgotLlwiICRJZDogZGVmYXVsdF9jb2xvcnMuM3gsdiAxLjIwIDIwMDYvMTIvMjQgMTU6MDI6NTMgdG9tIEV4cCAkCisuXCIgJElkOiBkZWZhdWx0X2NvbG9ycy4zeCx2IDEuMjMgMjAxMS8wMS8wMyAyMTo1MjoyNyBUaW0udmFuLmRlci5Nb2xlbiBFeHAgJAogLlRIIGRlZmF1bHRfY29sb3JzIDNYICIiCiAuU0ggTkFNRQogXGZCdXNlX2RlZmF1bHRfY29sb3JzXGZSLApAQCAtNjQsMTQgKzY0LDE0IEBACiBUaGUgZmlyc3QgZnVuY3Rpb24sCiAuSSB1c2VfZGVmYXVsdF9jb2xvcnMoKQogdGVsbHMgdGhlIGN1cnNlcyBsaWJyYXJ5IHRvIGFzc2lnbiB0ZXJtaW5hbCBkZWZhdWx0Ci1mb3JlZ3JvdW5kL2JhY2tncm91bmQgY29sb3JzIHRvIGNvbG9yIG51bWJlciAtMS4gU28gaW5pdF9wYWlyKHgsQ09MT1JfUkVELC0xKQotd2lsbCBpbml0aWFsaXplIHBhaXIgeCBhcyByZWQgb24gZGVmYXVsdCBiYWNrZ3JvdW5kIGFuZCBpbml0X3BhaXIoeCwtMSxDT0xPUl9CTFVFKSB3aWxsCitmb3JlZ3JvdW5kL2JhY2tncm91bmQgY29sb3JzIHRvIGNvbG9yIG51bWJlciBcLTEuIFNvIGluaXRfcGFpcih4LENPTE9SX1JFRCxcLTEpCit3aWxsIGluaXRpYWxpemUgcGFpciB4IGFzIHJlZCBvbiBkZWZhdWx0IGJhY2tncm91bmQgYW5kIGluaXRfcGFpcih4LFwtMSxDT0xPUl9CTFVFKSB3aWxsCiBpbml0aWFsaXplIHBhaXIgeCBhcyBkZWZhdWx0IGZvcmVncm91bmQgb24gYmx1ZS4KIC5QUAogVGhlIG90aGVyLAogLkkgYXNzdW1lX2RlZmF1bHRfY29sb3JzKCkKIGlzIGEgcmVmaW5lbWVudCB3aGljaCB0ZWxscyB3aGljaCBjb2xvcnMgdG8gcGFpbnQgZm9yIGNvbG9yIHBhaXIgMC4KLVRoaXMgZnVuY3Rpb24gcmVjb2duaXplcyBhIHNwZWNpYWwgY29sb3IgbnVtYmVyIC0xLAorVGhpcyBmdW5jdGlvbiByZWNvZ25pemVzIGEgc3BlY2lhbCBjb2xvciBudW1iZXIgXC0xLAogd2hpY2ggZGVub3RlcyB0aGUgZGVmYXVsdCB0ZXJtaW5hbCBjb2xvci4KIC5QUAogVGhlIGZvbGxvd2luZyBhcmUgZXF1aXZhbGVudDoKQEAgLTc5LDEyICs3OSwxMiBAQAogLmJyCiAuSSB1c2VfZGVmYXVsdF9jb2xvcnMoKTsKIC5icgotLkkgYXNzdW1lX2RlZmF1bHRfY29sb3JzKC0xLC0xKTsKKy5JIGFzc3VtZV9kZWZhdWx0X2NvbG9ycyhcLTEsXC0xKTsKIC5SRQogLlBQCiBUaGVzZSBhcmUgbmN1cnNlcyBleHRlbnNpb25zLgogRm9yIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMsIGNvbG9yCi1udW1iZXIgLTEgZG9lcyBub3QgbWVhbiBhbnl0aGluZywganVzdCBhcyBmb3IgbmN1cnNlcyBiZWZvcmUgYQorbnVtYmVyIFwtMSBkb2VzIG5vdCBtZWFuIGFueXRoaW5nLCBqdXN0IGFzIGZvciBuY3Vyc2VzIGJlZm9yZSBhCiBzdWNjZXNzZnVsIGNhbGwgb2YgXGZJdXNlX2RlZmF1bHRfY29sb3JzKClcZlAgb3IgXGZJYXNzdW1lX2RlZmF1bHRfY29sb3JzKClcZlAuCiAuUFAKIE90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMgZG8gbm90IGFsbG93IGFuIGFwcGxpY2F0aW9uIHRvIG1vZGlmeSBjb2xvciBwYWlyIDAuCkBAIC0xMDEsNyArMTAxLDcgQEAKIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGludGVnZXIgXGZCRVJSXGZQIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlAgb24gc3VjY2Vzcy4KIFRoZXkgd2lsbCBmYWlsIGlmIGVpdGhlciB0aGUgdGVybWluYWwgZG9lcyBub3Qgc3VwcG9ydAogdGhlIFxmSW9yaWdfcGFpclxmUCBvciBcZklvcmlnX2NvbG9yc1xmUCBjYXBhYmlsaXR5LgotSWYgdGhlIFxmSWluaXRpYWxpemVfcGFpclxmUCBjYXBhYmlsaXR5IGlzIGZvdW5kLCB0aGlzIGNhdXNlcyBhbgorSWYgdGhlIFxmSWluaXRpYWxpemVfcGFpclxmUCBjYXBhYmlsaXR5IGlzIG5vdCBmb3VuZCwgdGhpcyBjYXVzZXMgYW4KIGVycm9yIGFzIHdlbGwuCiAuU0ggTk9URVMKIEFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiwgdGhlIFxmQmluaXRfcGFpclxmUiBmdW5jdGlvbiBhY2NlcHRzCkBAIC0xMzYsOSArMTM2LDMgQEAKIC5TSCBBVVRIT1IKIFRob21hcyBEaWNrZXkgKGZyb20gYW4gYW5hbHlzaXMgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgY29sb3IgeHRlcm0KIGZvciBYRnJlZTg2IDMuMS4yQywgRmVicnVhcnkgMTk5NikuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9kZWZpbmVfa2V5LjN4IGIvbWFuL2RlZmluZV9rZXkuM3gKaW5kZXggMjE2YTNjYi4uMThlYWZmOCAxMDA2NDQKLS0tIGEvbWFuL2RlZmluZV9rZXkuM3gKKysrIGIvbWFuL2RlZmluZV9rZXkuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw3ICsyOCw3IEBACiAuXCIKIC5cIiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NwogLlwiCi0uXCIgJElkOiBkZWZpbmVfa2V5LjN4LHYgMS4xMiAyMDA2LzAyLzI1IDIxOjQ5OjE5IHRvbSBFeHAgJAorLlwiICRJZDogZGVmaW5lX2tleS4zeCx2IDEuMTQgMjAxMC8xMi8wNCAxODo0OToyMCB0b20gRXhwICQKIC5USCBkZWZpbmVfa2V5IDNYICIiCiAuU0ggTkFNRQogXGZCZGVmaW5lX2tleVxmUCBcLSBkZWZpbmUgYSBrZXljb2RlCkBAIC00Nyw3ICs0NywxMSBAQAogU2ltaWxhcmx5LCBpZiB0aGUgZ2l2ZW4ga2V5Y29kZSBpcyBuZWdhdGl2ZSBvciB6ZXJvLCBhbnkgZXhpc3Rpbmcgc3RyaW5nCiBmb3IgdGhlIGdpdmVuIGRlZmluaXRpb24gaXMgcmVtb3ZlZC4KIC5TSCBSRVRVUk4gVkFMVUUKLVRoZSBrZXljb2RlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgRVJSIGlzIHJldHVybmVkLgorVGhlIGtleWNvZGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybywgYW5kIHRoZSBzdHJpbmcgbm9uLW51bGwsCitvdGhlcndpc2UgRVJSIGlzIHJldHVybmVkLgorRVJSIG1heSBhbHNvIGJlIHJldHVybmVkIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlCitkYXRhIHRvIHN0b3JlIHRoZSBkZWZpbml0aW9uLgorSWYgbm8gZXJyb3IgaXMgZGV0ZWN0ZWQsIE9LIGlzIHJldHVybmVkLgogLlNIIFBPUlRBQklMSVRZCiBUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3Qgc3VwcG9ydGVkIG9uCiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0CkBAIC01Nyw5ICs2MSwzIEBACiBcZkJrZXlfZGVmaW5lZFxmUigzWCkuCiAuU0ggQVVUSE9SCiBUaG9tYXMgRGlja2V5LgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybS4zeCBiL21hbi9mb3JtLjN4CmluZGV4IGRjYmExOWIuLmMzNzlhNGQgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtLjN4CisrKyBiL21hbi9mb3JtLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybS4zeCx2IDEuMjIgMjAwOC8xMC8xMSAyMDo0ODoxMSB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm0uM3gsdiAxLjI2IDIwMTUvMDgvMDIgMTg6MTQ6NTAgdG9tIEV4cCAkCiAuVEggZm9ybSAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1cZlIgLSBjdXJzZXMgZXh0ZW5zaW9uIGZvciBwcm9ncmFtbWluZyBmb3JtcworXGZCZm9ybVxmUiBcLSBjdXJzZXMgZXh0ZW5zaW9uIGZvciBwcm9ncmFtbWluZyBmb3JtcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC00Myw3ICs0Myw3IEBACiAuUFAKIFRoZSBcZkJmb3JtXGZSIGxpYnJhcnkgdXNlcyB0aGUgXGZCY3Vyc2VzXGZSIGxpYnJhcmllcy4KIFRvIHVzZSB0aGUgXGZCZm9ybVxmUiBsaWJyYXJ5LCBsaW5rIHdpdGggdGhlIG9wdGlvbnMKLVxmQi1sZm9ybSAtbGN1cnNlc1xmUi4KK1xmQlwtbGZvcm0gXC1sY3Vyc2VzXGZSLgogLlBQCiBZb3VyIHByb2dyYW0gc2hvdWxkIHNldCB1cCB0aGUgbG9jYWxlLCBlLmcuLAogLnNwCkBAIC05Niw2ICs5Niw3IEBACiBmaWVsZF90eXBlCVxmQmZvcm1fZmllbGRfdmFsaWRhdGlvblxmUigzWCkKIGZpZWxkX3VzZXJwdHIJXGZCZm9ybV9maWVsZF91c2VycHRyXGZSKDNYKQogZm9ybV9kcml2ZXIJXGZCZm9ybV9kcml2ZXJcZlIoM1gpCitmb3JtX2RyaXZlcl93CVxmQmZvcm1fZHJpdmVyXGZSKDNYKSoKIGZvcm1fZmllbGRzCVxmQmZvcm1fZmllbGRcZlIoM1gpCiBmb3JtX2luaXQJXGZCZm9ybV9ob29rXGZSKDNYKQogZm9ybV9vcHRzCVxmQmZvcm1fb3B0c1xmUigzWCkKQEAgLTE4OSwxNSArMTkwLDEyIEBACiAuVFAgNQogLkIgRV9VTktOT1dOX0NPTU1BTkQKIFRoZSBmb3JtIGRyaXZlciBjb2RlIHNhdyBhbiB1bmtub3duIHJlcXVlc3QgY29kZS4KLS5TSCBTRUUgQUxTTwotXGZCY3Vyc2VzXGZSKDNYKSBhbmQgcmVsYXRlZCBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbiAiZm9ybV8iIGZvciBkZXRhaWxlZAotZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCiAuU0ggTk9URVMKIFRoZSBoZWFkZXIgZmlsZSBcZkI8Zm9ybS5oPlxmUiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIgZmlsZXMKIFxmQjxjdXJzZXMuaD5cZlIgYW5kIFxmQjxldGkuaD5cZlIuCiAuUFAKIEluIHlvdXIgbGlicmFyeSBsaXN0LCBsaWJmb3JtLmEgc2hvdWxkIGJlIGJlZm9yZSBsaWJuY3Vyc2VzLmE7IHRoYXQgaXMsCi15b3Ugd2FudCB0byBzYXkgYC1sZm9ybSAtbG5jdXJzZXMnLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQgKHdoaWNoIHdvdWxkCit5b3Ugd2FudCB0byBzYXkgYFwtbGZvcm0gXC1sbmN1cnNlcycsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCAod2hpY2ggd291bGQKIGdpdmUgeW91IGEgbGluayBlcnJvciB1c2luZyBtb3N0IGxpbmtlcnMpLgogLlNIIFBPUlRBQklMSVRZCiBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBmb3JtcyBsaWJyYXJ5LiAgVGhleSB3ZXJlIG5vdCBzdXBwb3J0ZWQgb24KQEAgLTIwNiwxMSArMjA0LDggQEAKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgogLlNIIFNFRSBBTFNPCitcZkJjdXJzZXNcZlIoM1gpIGFuZCByZWxhdGVkIHBhZ2VzIHdob3NlIG5hbWVzIGJlZ2luICJmb3JtXyIgZm9yIGRldGFpbGVkCitkZXNjcmlwdGlvbnMgb2YgdGhlIGVudHJ5IHBvaW50cy4KKy5QUAogVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgogdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybV9jdXJzb3IuM3ggYi9tYW4vZm9ybV9jdXJzb3IuM3gKaW5kZXggYmY5ZjI4ZC4uZWQ0YjQyMCAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fY3Vyc29yLjN4CisrKyBiL21hbi9mb3JtX2N1cnNvci4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1fY3Vyc29yLjN4LHYgMS42IDIwMDYvMTEvMDQgMTg6NTA6MjQgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2N1cnNvci4zeCx2IDEuOCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fY3Vyc29yIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9jdXJzb3JcZlIgLSBwb3NpdGlvbiBhIGZvcm0gd2luZG93IGN1cnNvcgorXGZCZm9ybV9jdXJzb3JcZlIgXC0gcG9zaXRpb24gYSBmb3JtIHdpbmRvdyBjdXJzb3IKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtNjcsOSArNjcsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybV9kYXRhLjN4IGIvbWFuL2Zvcm1fZGF0YS4zeAppbmRleCAyYmEwMDRjLi5lZDM5YmY1IDEwMDY0NAotLS0gYS9tYW4vZm9ybV9kYXRhLjN4CisrKyBiL21hbi9mb3JtX2RhdGEuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX2RhdGEuM3gsdiAxLjggMjAwNi8wMi8yNSAyMTozODoyNiB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fZGF0YS4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBmb3JtX2RhdGEgM1ggIiIKIC5TSCBOQU1FCi1cZkJmb3JtX2RhdGFcZlIgLSB0ZXN0IGZvciBvZmYtc2NyZWVuIGRhdGEgaW4gZ2l2ZW4gZm9ybXMKK1xmQmZvcm1fZGF0YVxmUiBcLSB0ZXN0IGZvciBvZmYtc2NyZWVuIGRhdGEgaW4gZ2l2ZW4gZm9ybXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtNTUsOSArNTUsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybV9kcml2ZXIuM3ggYi9tYW4vZm9ybV9kcml2ZXIuM3gKaW5kZXggNGIwNTc2Zi4uNDA4NGVhYyAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fZHJpdmVyLjN4CisrKyBiL21hbi9mb3JtX2RyaXZlci4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDIyMyArMjYsMTIyIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX2RyaXZlci4zeCx2IDEuMTYgMjAwOC8wNi8yMSAyMTo1NTozOSB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fZHJpdmVyLjN4LHYgMS4yNCAyMDE1LzA4LzAyIDE4OjIxOjExIHRvbSBFeHAgJAogLlRIIGZvcm1fZHJpdmVyIDNYICIiCisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuU0ggTkFNRQotXGZCZm9ybV9kcml2ZXJcZlIgLSBjb21tYW5kLXByb2Nlc3NpbmcgbG9vcCBvZiB0aGUgZm9ybSBzeXN0ZW0KK1xmQmZvcm1fZHJpdmVyXGZSIFwtIGNvbW1hbmQtcHJvY2Vzc2luZyBsb29wIG9mIHRoZSBmb3JtIHN5c3RlbQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCi1pbnQgZm9ybV9kcml2ZXIoRk9STSAqZm9ybSwgaW50IGMpOworXGZCaW50IGZvcm1fZHJpdmVyKEZPUk0gKlxmUFxmSWZvcm1cZlBcZkIsIGludCBcZlBcZkljXGZQXGZCKTtcZlAKKy5icgorXGZCaW50IGZvcm1fZHJpdmVyX3coRk9STSAqXGZQXGZJZm9ybVxmUFxmQiwgaW50IFxmUFxmSWNcZlBcZkIsIHdjaGFyX3QgXGZQXGZJd2NoXGZQXGZCKTtcZlAKIC5icgogLlNIIERFU0NSSVBUSU9OCisuU1MgZm9ybV9kcml2ZXIKIE9uY2UgYSBmb3JtIGhhcyBiZWVuIHBvc3RlZCAoZGlzcGxheWVkKSwgeW91IHNob3VsZCBmdW5uZWwgaW5wdXQgZXZlbnRzIHRvIGl0CiB0aHJvdWdoIFxmQmZvcm1fZHJpdmVyXGZSLiAgVGhpcyByb3V0aW5lIGhhcyB0aHJlZSBtYWpvciBpbnB1dCBjYXNlczoKLS5UUCAzCi0tCisuYlAKIFRoZSBpbnB1dCBpcyBhIGZvcm0gbmF2aWdhdGlvbiByZXF1ZXN0LgogTmF2aWdhdGlvbiByZXF1ZXN0IGNvZGVzIGFyZSBjb25zdGFudHMgZGVmaW5lZCBpbiBcZkI8Zm9ybS5oPlxmUCwKLXdoaWNoIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBrZXktIGFuZCBjaGFyYWN0ZXIgY29kZXMgcmV0dXJuZWQgYnkgXGZCd2dldGNoXGZQLgotLlRQIDMKLS0KK3doaWNoIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBrZXktIGFuZCBjaGFyYWN0ZXIgY29kZXMgcmV0dXJuZWQgYnkgXGZCd2dldGNoXGZQKDNYKS4KKy5iUAogVGhlIGlucHV0IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4KIFByaW50YWJsZSBjaGFyYWN0ZXJzICh3aGljaCBtdXN0IGJlIHBvc2l0aXZlLCBsZXNzIHRoYW4gMjU2KSBhcmUKIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9ncmFtJ3MgbG9jYWxlIHNldHRpbmdzLgotLlRQIDMKLS0KKy5iUAogVGhlIGlucHV0IGlzIHRoZSBLRVlfTU9VU0Ugc3BlY2lhbCBrZXkgYXNzb2NpYXRlZCB3aXRoIGFuIG1vdXNlIGV2ZW50LgorLlNTIGZvcm1fZHJpdmVyX3cKKy5QUAorVGhpcyBleHRlbnNpb24gc2ltcGxpZmllcyB0aGUgdXNlIG9mIHRoZSBmb3JtcyBsaWJyYXJ5IHVzaW5nIHdpZGUgY2hhcmFjdGVycy4KK1RoZSBpbnB1dCBpcyBlaXRoZXIgYSBrZXkgY29kZSAoYSByZXF1ZXN0KSBvciBhIHdpZGUgY2hhcmFjdGVyCityZXR1cm5lZCBieSBcZkJnZXRfd2NoXGZQKDNYKS4KK1RoZSB0eXBlIG11c3QgYmUgcGFzc2VkIGFzIHdlbGwsCit0byBlbmFibGUgdGhlIGxpYnJhcnkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHBhcmFtZXRlcgoraXMgYSB3aWRlIGNoYXJhY3RlciBvciBhIHJlcXVlc3QuCisuU1MgRm9ybS1kcml2ZXIgcmVxdWVzdHMKIC5QUAogVGhlIGZvcm0gZHJpdmVyIHJlcXVlc3RzIGFyZSBhcyBmb2xsb3dzOgotLlRQIDUKLVJFUV9ORVhUX1BBR0UKLU1vdmUgdG8gdGhlIG5leHQgcGFnZS4KLS5UUCA1Ci1SRVFfUFJFVl9QQUdFCi1Nb3ZlIHRvIHRoZSBwcmV2aW91cyBwYWdlLgotLlRQIDUKLVJFUV9GSVJTVF9QQUdFCi1Nb3ZlIHRvIHRoZSBmaXJzdCBwYWdlLgotLlRQIDUKLVJFUV9MQVNUX1BBR0UKLU1vdmUgdG8gdGhlIGxhc3QgZmllbGQuCi0uc3AKLS5UUCA1Ci1SRVFfTkVYVF9GSUVMRAotTW92ZSB0byB0aGUgbmV4dCBmaWVsZC4KLS5UUCA1Ci1SRVFfUFJFVl9GSUVMRAotTW92ZSB0byB0aGUgcHJldmlvdXMgZmllbGQuCi0uVFAgNQotUkVRX0ZJUlNUX0ZJRUxECi1Nb3ZlIHRvIHRoZSBmaXJzdCBmaWVsZC4KLS5UUCA1Ci1SRVFfTEFTVF9GSUVMRAotTW92ZSB0byB0aGUgbGFzdCBmaWVsZC4KLS5UUCA1Ci1SRVFfU05FWFRfRklFTEQKLU1vdmUgdG8gdGhlIHNvcnRlZCBuZXh0IGZpZWxkLgotLlRQIDUKLVJFUV9TUFJFVl9GSUVMRAotTW92ZSB0byB0aGUgc29ydGVkIHByZXZpb3VzIGZpZWxkLgotLlRQIDUKLVJFUV9TRklSU1RfRklFTEQKLU1vdmUgdG8gdGhlIHNvcnRlZCBmaXJzdCBmaWVsZC4KLS5UUCA1Ci1SRVFfU0xBU1RfRklFTEQKLU1vdmUgdG8gdGhlIHNvcnRlZCBsYXN0IGZpZWxkLgotLlRQIDUKLVJFUV9MRUZUX0ZJRUxECi1Nb3ZlIGxlZnQgdG8gYSBmaWVsZC4KLS5UUCA1Ci1SRVFfUklHSFRfRklFTEQKLU1vdmUgcmlnaHQgdG8gYSBmaWVsZC4KLS5UUCA1Ci1SRVFfVVBfRklFTEQKLU1vdmUgdXAgdG8gYSBmaWVsZC4KLS5UUCA1Ci1SRVFfRE9XTl9GSUVMRAotTW92ZSBkb3duIHRvIGEgZmllbGQuCi0uc3AKLS5UUCA1Ci1SRVFfTkVYVF9DSEFSCi1Nb3ZlIHRvIHRoZSBuZXh0IGNoYXIuCi0uVFAgNQotUkVRX1BSRVZfQ0hBUgotTW92ZSB0byB0aGUgcHJldmlvdXMgY2hhci4KLS5UUCA1Ci1SRVFfTkVYVF9MSU5FCi1Nb3ZlIHRvIHRoZSBuZXh0IGxpbmUuCi0uVFAgNQotUkVRX1BSRVZfTElORQotTW92ZSB0byB0aGUgcHJldmlvdXMgbGluZS4KLS5UUCA1Ci1SRVFfTkVYVF9XT1JECi1Nb3ZlIHRvIHRoZSBuZXh0IHdvcmQuCi0uVFAgNQotUkVRX1BSRVZfV09SRAotTW92ZSB0byB0aGUgcHJldmlvdXMgd29yZC4KLS5UUCA1Ci1SRVFfQkVHX0ZJRUxECi1Nb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpZWxkLgotLlRQIDUKLVJFUV9FTkRfRklFTEQKLU1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQuCi0uVFAgNQotUkVRX0JFR19MSU5FCi1Nb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuCi0uVFAgNQotUkVRX0VORF9MSU5FCi1Nb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0uVFAgNQotUkVRX0xFRlRfQ0hBUgotTW92ZSBsZWZ0IGluIHRoZSBmaWVsZC4KLS5UUCA1Ci1SRVFfUklHSFRfQ0hBUgotTW92ZSByaWdodCBpbiB0aGUgZmllbGQuCi0uVFAgNQotUkVRX1VQX0NIQVIKLU1vdmUgdXAgaW4gdGhlIGZpZWxkLgotLlRQIDUKLVJFUV9ET1dOX0NIQVIKLU1vdmUgZG93biBpbiB0aGUgZmllbGQuCi0uc3AKLS5UUCA1Ci1SRVFfTkVXX0xJTkUKLUluc2VydCBvciBvdmVybGF5IGEgbmV3IGxpbmUuCi0uVFAgNQotUkVRX0lOU19DSEFSCi1JbnNlcnQgYSBibGFuayBhdCB0aGUgY3Vyc29yLgotLlRQIDUKLVJFUV9JTlNfTElORQotSW5zZXJ0IGEgYmxhbmsgbGluZSBhdCB0aGUgY3Vyc29yLgotLlRQIDUKLVJFUV9ERUxfQ0hBUgotRGVsZXRlIGNoYXJhY3RlciBhdCB0aGUgY3Vyc29yLgotLlRQIDUKLVJFUV9ERUxfUFJFVgotRGVsZXRlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGN1cnNvci4KLS5UUCA1Ci1SRVFfREVMX0xJTkUKLURlbGV0ZSBsaW5lIGF0IHRoZSBjdXJzb3IuCi0uVFAgNQotUkVRX0RFTF9XT1JECi1EZWxldGUgYmxhbmstZGVsaW1pdGVkIHdvcmQgYXQgdGhlIGN1cnNvci4KLS5UUCA1Ci1SRVFfQ0xSX0VPTAotQ2xlYXIgdG8gZW5kIG9mIGxpbmUgZnJvbSBjdXJzb3IuCi0uVFAgNQotUkVRX0NMUl9FT0YKLUNsZWFyIHRvIGVuZCBvZiBmaWVsZCBmcm9tIGN1cnNvci4KLS5UUCA1Ci1SRVFfQ0xSX0ZJRUxECi1DbGVhciB0aGUgZW50aXJlIGZpZWxkLgotLlRQIDUKLVJFUV9PVkxfTU9ERQotRW50ZXIgb3ZlcmxheSBtb2RlLgotLlRQIDUKLVJFUV9JTlNfTU9ERQotRW50ZXIgaW5zZXJ0IG1vZGUuCi0uc3AKLS5UUCA1Ci1SRVFfU0NSX0ZMSU5FCi1TY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBsaW5lLgotLlRQIDUKLVJFUV9TQ1JfQkxJTkUKLVNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgYSBsaW5lLgotLlRQIDUKLVJFUV9TQ1JfRlBBR0UKLVNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBhIHBhZ2UuCi0uVFAgNQotUkVRX1NDUl9CUEFHRQotU2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBhIHBhZ2UuCi0uVFAgNQotUkVRX1NDUl9GSFBBR0UKLVNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBoYWxmIGEgcGFnZS4KLS5UUCA1Ci1SRVFfU0NSX0JIUEFHRQotU2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBoYWxmIGEgcGFnZS4KLS5zcAotLlRQIDUKLVJFUV9TQ1JfRkNIQVIKLVNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBhIGNoYXJhY3Rlci4KLS5UUCA1Ci1SRVFfU0NSX0JDSEFSCi1TY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgY2hhcmFjdGVyLgotLlRQIDUKLVJFUV9TQ1JfSEZMSU5FCi1Ib3Jpem9udGFsIHNjcm9sbCB0aGUgZmllbGQgZm9yd2FyZCBhIGxpbmUuCi0uVFAgNQotUkVRX1NDUl9IQkxJTkUKLUhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBhIGxpbmUuCi0uVFAgNQotUkVRX1NDUl9IRkhBTEYKLUhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBsaW5lLgotLlRQIDUKLVJFUV9TQ1JfSEJIQUxGCi1Ib3Jpem9udGFsIHNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgaGFsZiBhIGxpbmUuCi0uc3AKLS5UUAotUkVRX1ZBTElEQVRJT04KLVZhbGlkYXRlIGZpZWxkLgotLlRQCi1SRVFfTkVYVF9DSE9JQ0UKLURpc3BsYXkgbmV4dCBmaWVsZCBjaG9pY2UuCi0uVFAKLVJFUV9QUkVWX0NIT0lDRQotRGlzcGxheSBwcmV2aW91cyBmaWVsZCBjaG9pY2UuCisuVFMKK2wgbAorXyBfIF8KK2wgbC4KK1xmSU5hbWVcZlIJXGZJRGVzY3JpcHRpb25cZlIKK1JFUV9CRUdfRklFTEQJTW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWVsZC4KK1JFUV9CRUdfTElORQlNb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuCitSRVFfQ0xSX0VPRglDbGVhciB0byBlbmQgb2YgZmllbGQgZnJvbSBjdXJzb3IuCitSRVFfQ0xSX0VPTAlDbGVhciB0byBlbmQgb2YgbGluZSBmcm9tIGN1cnNvci4KK1JFUV9DTFJfRklFTEQJQ2xlYXIgdGhlIGVudGlyZSBmaWVsZC4KK1JFUV9ERUxfQ0hBUglEZWxldGUgY2hhcmFjdGVyIGF0IHRoZSBjdXJzb3IuCitSRVFfREVMX0xJTkUJRGVsZXRlIGxpbmUgYXQgdGhlIGN1cnNvci4KK1JFUV9ERUxfUFJFVglEZWxldGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY3Vyc29yLgorUkVRX0RFTF9XT1JECURlbGV0ZSBibGFuay1kZWxpbWl0ZWQgd29yZCBhdCB0aGUgY3Vyc29yLgorUkVRX0RPV05fQ0hBUglNb3ZlIGRvd24gaW4gdGhlIGZpZWxkLgorUkVRX0RPV05fRklFTEQJTW92ZSBkb3duIHRvIGEgZmllbGQuCitSRVFfRU5EX0ZJRUxECU1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQuCitSRVFfRU5EX0xJTkUJTW92ZSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorUkVRX0ZJUlNUX0ZJRUxECU1vdmUgdG8gdGhlIGZpcnN0IGZpZWxkLgorUkVRX0ZJUlNUX1BBR0UJTW92ZSB0byB0aGUgZmlyc3QgcGFnZS4KK1JFUV9JTlNfQ0hBUglJbnNlcnQgYSBibGFuayBhdCB0aGUgY3Vyc29yLgorUkVRX0lOU19MSU5FCUluc2VydCBhIGJsYW5rIGxpbmUgYXQgdGhlIGN1cnNvci4KK1JFUV9JTlNfTU9ERQlFbnRlciBpbnNlcnQgbW9kZS4KK1JFUV9MQVNUX0ZJRUxECU1vdmUgdG8gdGhlIGxhc3QgZmllbGQuCitSRVFfTEFTVF9QQUdFCU1vdmUgdG8gdGhlIGxhc3QgZmllbGQuCitSRVFfTEVGVF9DSEFSCU1vdmUgbGVmdCBpbiB0aGUgZmllbGQuCitSRVFfTEVGVF9GSUVMRAlNb3ZlIGxlZnQgdG8gYSBmaWVsZC4KK1JFUV9ORVdfTElORQlJbnNlcnQgb3Igb3ZlcmxheSBhIG5ldyBsaW5lLgorUkVRX05FWFRfQ0hBUglNb3ZlIHRvIHRoZSBuZXh0IGNoYXIuCitSRVFfTkVYVF9DSE9JQ0UJRGlzcGxheSBuZXh0IGZpZWxkIGNob2ljZS4KK1JFUV9ORVhUX0ZJRUxECU1vdmUgdG8gdGhlIG5leHQgZmllbGQuCitSRVFfTkVYVF9MSU5FCU1vdmUgdG8gdGhlIG5leHQgbGluZS4KK1JFUV9ORVhUX1BBR0UJTW92ZSB0byB0aGUgbmV4dCBwYWdlLgorUkVRX05FWFRfUEFHRQlNb3ZlIHRvIHRoZSBuZXh0IHBhZ2UuCitSRVFfTkVYVF9XT1JECU1vdmUgdG8gdGhlIG5leHQgd29yZC4KK1JFUV9PVkxfTU9ERQlFbnRlciBvdmVybGF5IG1vZGUuCitSRVFfUFJFVl9DSEFSCU1vdmUgdG8gdGhlIHByZXZpb3VzIGNoYXIuCitSRVFfUFJFVl9DSE9JQ0UJRGlzcGxheSBwcmV2aW91cyBmaWVsZCBjaG9pY2UuCitSRVFfUFJFVl9GSUVMRAlNb3ZlIHRvIHRoZSBwcmV2aW91cyBmaWVsZC4KK1JFUV9QUkVWX0xJTkUJTW92ZSB0byB0aGUgcHJldmlvdXMgbGluZS4KK1JFUV9QUkVWX1BBR0UJTW92ZSB0byB0aGUgcHJldmlvdXMgcGFnZS4KK1JFUV9QUkVWX1dPUkQJTW92ZSB0byB0aGUgcHJldmlvdXMgd29yZC4KK1JFUV9SSUdIVF9DSEFSCU1vdmUgcmlnaHQgaW4gdGhlIGZpZWxkLgorUkVRX1JJR0hUX0ZJRUxECU1vdmUgcmlnaHQgdG8gYSBmaWVsZC4KK1JFUV9TQ1JfQkNIQVIJU2Nyb2xsIHRoZSBmaWVsZCBiYWNrd2FyZCBhIGNoYXJhY3Rlci4KK1JFUV9TQ1JfQkhQQUdFCVNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgaGFsZiBhIHBhZ2UuCitSRVFfU0NSX0JMSU5FCVNjcm9sbCB0aGUgZmllbGQgYmFja3dhcmQgYSBsaW5lLgorUkVRX1NDUl9CUEFHRQlTY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgcGFnZS4KK1JFUV9TQ1JfRkNIQVIJU2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGEgY2hhcmFjdGVyLgorUkVRX1NDUl9GSFBBR0UJU2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBwYWdlLgorUkVRX1NDUl9GTElORQlTY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBsaW5lLgorUkVRX1NDUl9GUEFHRQlTY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBwYWdlLgorUkVRX1NDUl9IQkhBTEYJSG9yaXpvbnRhbCBzY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGhhbGYgYSBsaW5lLgorUkVRX1NDUl9IQkxJTkUJSG9yaXpvbnRhbCBzY3JvbGwgdGhlIGZpZWxkIGJhY2t3YXJkIGEgbGluZS4KK1JFUV9TQ1JfSEZIQUxGCUhvcml6b250YWwgc2Nyb2xsIHRoZSBmaWVsZCBmb3J3YXJkIGhhbGYgYSBsaW5lLgorUkVRX1NDUl9IRkxJTkUJSG9yaXpvbnRhbCBzY3JvbGwgdGhlIGZpZWxkIGZvcndhcmQgYSBsaW5lLgorUkVRX1NGSVJTVF9GSUVMRAlNb3ZlIHRvIHRoZSBzb3J0ZWQgZmlyc3QgZmllbGQuCitSRVFfU0xBU1RfRklFTEQJTW92ZSB0byB0aGUgc29ydGVkIGxhc3QgZmllbGQuCitSRVFfU05FWFRfRklFTEQJTW92ZSB0byB0aGUgc29ydGVkIG5leHQgZmllbGQuCitSRVFfU1BSRVZfRklFTEQJTW92ZSB0byB0aGUgc29ydGVkIHByZXZpb3VzIGZpZWxkLgorUkVRX1VQX0NIQVIJTW92ZSB1cCBpbiB0aGUgZmllbGQuCitSRVFfVVBfRklFTEQJTW92ZSB1cCB0byBhIGZpZWxkLgorUkVRX1ZBTElEQVRJT04JVmFsaWRhdGUgZmllbGQuCisuVEUKIC5QUAogSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIsIHRoZSBkcml2ZXIgcGxhY2VzIGl0CiBpbiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgY3VycmVudCBmaWVsZC4gIElmIGl0IGlzIG9uZSBvZiB0aGUgZm9ybXMKIHJlcXVlc3RzIGxpc3RlZCBhYm92ZSwgdGhhdCByZXF1ZXN0IGlzIGV4ZWN1dGVkLgotLlNTIE1PVVNFIEhBTkRMSU5HCisuU1MgTW91c2UgaGFuZGxpbmcKIC5QUAogSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5LCB0aGUgYXNzb2NpYXRlZAogbW91c2UgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIG9uZSBvZiB0aGUgYWJvdmUgcHJlLWRlZmluZWQgcmVxdWVzdHMuCi1DdXJyZW50bHkgb25seSBjbGlja3MgaW4gdGhlIHVzZXIgd2luZG93IChlLmcuIGluc2lkZSB0aGUgZm9ybSBkaXNwbGF5CitDdXJyZW50bHkgb25seSBjbGlja3MgaW4gdGhlIHVzZXIgd2luZG93IChlLmcuLCBpbnNpZGUgdGhlIGZvcm0gZGlzcGxheQogYXJlYSBvciB0aGUgZGVjb3JhdGlvbiB3aW5kb3cpIGFyZSBoYW5kbGVkLgogLlBQCiBJZiB5b3UgY2xpY2sgYWJvdmUgdGhlIGRpc3BsYXkgcmVnaW9uIG9mIHRoZSBmb3JtOgotLlJTCisuUlMgMwogLlRQCiBhIFJFUV9QUkVWX0ZJRUxEIGlzIGdlbmVyYXRlZCBmb3IgYSBzaW5nbGUgY2xpY2ssCiAuVFAKQEAgLTI1Miw3ICsxNTEsNyBAQAogLlJFCiAuUFAKIElmIHlvdSBjbGljayBiZWxvdyB0aGUgZGlzcGxheSByZWdpb24gb2YgdGhlIGZvcm06Ci0uUlMKKy5SUyAzCiAuVFAKIGEgUkVRX05FWFRfRklFTEQgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKIC5UUApAQCAtMjYyLDEyICsxNjEsMTAgQEAKIC5SRQogLlBQCiBJZiB5b3UgY2xpY2sgYXQgYW4gZmllbGQgaW5zaWRlIHRoZSBkaXNwbGF5IGFyZWEgb2YgdGhlIGZvcm06Ci0uUlMKLS5UUCAzCi0tCisuUlMgMworLmJQCiB0aGUgZm9ybSBjdXJzb3IgaXMgcG9zaXRpb25lZCB0byB0aGF0IGZpZWxkLgotLlRQIDMKLS0KKy5iUAogSWYgeW91IGRvdWJsZS1jbGljayBhIGZpZWxkLAogdGhlIGZvcm0gY3Vyc29yIGlzIHBvc2l0aW9uZWQgdG8gdGhhdCBmaWVsZAogYW5kIFxmQkVfVU5LTk9XTl9DT01NQU5EXGZSIGlzIHJldHVybmVkLgpAQCAtMjc2LDE1ICsxNzMsMTQgQEAKIGJlIHJldHVybmVkLgogSXQgaXMgZXhhY3RseSB0aGUgcHVycG9zZSBvZiB0aGlzIHJldHVybiB2YWx1ZSB0byBzaWduYWwgdGhhdCBhbgogYXBwbGljYXRpb24gc3BlY2lmaWMgY29tbWFuZCBzaG91bGQgYmUgZXhlY3V0ZWQuCi0uVFAgMwotLQorLmJQCiBJZiBhIHRyYW5zbGF0aW9uCiBpbnRvIGEgcmVxdWVzdCB3YXMgZG9uZSwgXGZCZm9ybV9kcml2ZXJcZlIgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoaXMgcmVxdWVzdC4KIC5SRQogLlBQCiBJZiB5b3UgY2xpY2tlZCBvdXRzaWRlIHRoZSB1c2VyIHdpbmRvdyBvciB0aGUgbW91c2UgZXZlbnQgY291bGQgbm90IGJlIHRyYW5zbGF0ZWQKIGludG8gYSBmb3JtIHJlcXVlc3QgYW4gXGZCRV9SRVFVRVNUX0RFTklFRFxmUiBpcyByZXR1cm5lZC4KLS5TUyBBUFBMSUNBVElPTi1ERUZJTkVEIENPTU1BTkRTCisuU1MgQXBwbGljYXRpb24tZGVmaW5lZCBjb21tYW5kcwogLlBQCiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5laXRoZXIgcHJpbnRhYmxlIG5vciBvbmUgb2YgdGhlIGFib3ZlCiBwcmUtZGVmaW5lZCBmb3JtIHJlcXVlc3RzLCB0aGUgZHJpdmVyIGFzc3VtZXMgaXQgaXMgYW4gYXBwbGljYXRpb24tc3BlY2lmaWMKQEAgLTMyMSw3ICsyMTcsOCBAQAogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCZm9ybVxmUigzWCksCi1cZkJ3Z2V0Y2hcZlIoM1gpLgorXGZCZm9ybV92YXJpYWJsZXNcZlIoM1gpLAorXGZCZ2V0Y2hcZlIoM1gpLgogLlNIIE5PVEVTCiBUaGUgaGVhZGVyIGZpbGUgXGZCPGZvcm0uaD5cZlIgYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyIGZpbGVzCiBcZkI8Y3Vyc2VzLmg+XGZSLgpAQCAtMzMxLDkgKzIyOCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkLjN4IGIvbWFuL2Zvcm1fZmllbGQuM3gKaW5kZXggZjNhMjZjNS4uMTlhOGI4OCAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fZmllbGQuM3gKKysrIGIvbWFuL2Zvcm1fZmllbGQuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX2ZpZWxkLjN4LHYgMS44IDIwMDYvMTEvMDQgMTg6MDE6MzggdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2ZpZWxkLjN4LHYgMS4xMSAyMDEyLzExLzAzIDIzOjAzOjU5IHRvbSBFeHAgJAogLlRIIGZvcm1fZmllbGQgM1ggIiIKIC5TSCBOQU1FCi1cZkJmb3JtX2ZpZWxkXGZSIC0gbWFrZSBhbmQgYnJlYWsgY29ubmVjdGlvbnMgYmV0d2VlbiBmaWVsZHMgYW5kIGZvcm1zCitcZkJmb3JtX2ZpZWxkXGZSIFwtIG1ha2UgYW5kIGJyZWFrIGNvbm5lY3Rpb25zIGJldHdlZW4gZmllbGRzIGFuZCBmb3JtcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC01Miw3ICs1Miw3IEBACiAuUFAKIFRoZSBmdW5jdGlvbiBcZkJtb3ZlX2ZpZWxkXGZSIG1vdmVzIHRoZSBnaXZlbiBmaWVsZCAod2hpY2ggbXVzdCBiZSBkaXNjb25uZWN0ZWQpCiB0byBhIHNwZWNpZmllZCBsb2NhdGlvbiBvbiB0aGUgc2NyZWVuLgotLlNIIFJFVFVSTiBWQUxVRVMKKy5TSCBSRVRVUk4gVkFMVUUKIFRoZSBmdW5jdGlvbiBcZkJmb3JtX2ZpZWxkc1xmUiByZXR1cm5zIGEgcG9pbnRlciAod2hpY2ggbWF5IGJlIFxmQk5VTExcZlIpLgogSXQgZG9lcyBub3Qgc2V0IGVycm5vLgogLlBQCkBAIC04NiwxMyArODYsNyBAQAogVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIC5QUAogVGhlIFNWcjQgZm9ybXMgbGlicmFyeSBkb2N1bWVudGF0aW9uIHNwZWNpZmllcyB0aGUgXGZCZmllbGRfY291bnRcZlIgZXJyb3IgdmFsdWUKLWFzIC0xICh3aGljaCBpcyB0aGUgdmFsdWUgb2YgXGZCRVJSXGZSKS4KK2FzIFwtMSAod2hpY2ggaXMgdGhlIHZhbHVlIG9mIFxmQkVSUlxmUikuCiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3ggYi9tYW4vZm9ybV9maWVsZF9hdHRyaWJ1dGVzLjN4CmluZGV4IDkwZGMwZjMuLmRhM2FkNzkgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX2ZpZWxkX2F0dHJpYnV0ZXMuM3gKKysrIGIvbWFuL2Zvcm1fZmllbGRfYXR0cmlidXRlcy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1fZmllbGRfYXR0cmlidXRlcy4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxODo1MToyNiB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fZmllbGRfYXR0cmlidXRlcy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBmb3JtX2ZpZWxkX2F0dHJpYnV0ZXMgM1ggIiIKIC5TSCBOQU1FCi1cZkJmb3JtX2ZpZWxkX2F0dHJpYnV0ZXNcZlIgLSBjb2xvciBhbmQgYXR0cmlidXRlIGNvbnRyb2wgZm9yIGZvcm0gZmllbGRzCitcZkJmb3JtX2ZpZWxkX2F0dHJpYnV0ZXNcZlIgXC0gY29sb3IgYW5kIGF0dHJpYnV0ZSBjb250cm9sIGZvciBmb3JtIGZpZWxkcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC04NCw5ICs4NCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeCBiL21hbi9mb3JtX2ZpZWxkX2J1ZmZlci4zeAppbmRleCA1NjYwNzJmLi5iNGZmOGNiIDEwMDY0NAotLS0gYS9tYW4vZm9ybV9maWVsZF9idWZmZXIuM3gKKysrIGIvbWFuL2Zvcm1fZmllbGRfYnVmZmVyLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEzICsyNywxNiBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9maWVsZF9idWZmZXIuM3gsdiAxLjE1IDIwMDgvMTAvMTggMTg6MzU6MTcgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2ZpZWxkX2J1ZmZlci4zeCx2IDEuMTkgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwICQKIC5USCBmb3JtX2ZpZWxkX2J1ZmZlciAzWCAiIgorLmRlIGJQCisuSVAgXChidSA0CisuLgogLlNIIE5BTUUKLVxmQmZvcm1fZmllbGRfYnVmZmVyXGZSIC0gZmllbGQgYnVmZmVyIGNvbnRyb2wKK1xmQmZvcm1fZmllbGRfYnVmZmVyXGZSIFwtIGZpZWxkIGJ1ZmZlciBjb250cm9sCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCi0uYnIKKy5zcAogaW50IHNldF9maWVsZF9idWZmZXIoRklFTEQgKmZpZWxkLCBpbnQgYnVmLCBjb25zdCBjaGFyICp2YWx1ZSk7CiAuYnIKIGNoYXIgKmZpZWxkX2J1ZmZlcihjb25zdCBGSUVMRCAqZmllbGQsIGludCBidWZmZXIpOwpAQCAtNDgsMTEgKzUxLDkgQEAKIFRoZSBmdW5jdGlvbiBcZkJzZXRfZmllbGRfYnVmZmVyXGZSIHNldHMgdGhlIG51bWJlcmVkIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gZmllbGQKIHRvIGNvbnRhaW4gYSBnaXZlbiBzdHJpbmc6CiAuUlMgMwotLlRQIDMKLS0KKy5iUAogQnVmZmVyIDAgaXMgdGhlIGRpc3BsYXllZCB2YWx1ZSBvZiB0aGUgZmllbGQuCi0uVFAgMwotLQorLmJQCiBPdGhlciBudW1iZXJlZCBidWZmZXJzIG1heSBiZSBhbGxvY2F0ZWQgYnkgYXBwbGljYXRpb25zIHRocm91Z2ggdGhlIFxmQm5idWZcZlIKIGFyZ3VtZW50IG9mIChzZWUgXGZCZm9ybV9maWVsZF9uZXdcZlIoM1gpKQogYnV0IGFyZSBub3QgbWFuaXB1bGF0ZWQgYnkgdGhlIGZvcm1zIGxpYnJhcnkuCkBAIC02MSwyOCArNjIsMjMgQEAKIFRoZSBmdW5jdGlvbiBcZkJmaWVsZF9idWZmZXJcZlIgcmV0dXJucyBhIHBvaW50ZXIgdG8KIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gbnVtYmVyZWQgYnVmZmVyOgogLlJTIDMKLS5UUCAzCi0tCisuYlAKIFRoZSBidWZmZXIgY29udGVudHMgYWx3YXlzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLAogYW5kIGFyZSBwYWRkZWQgd2l0aCB0cmFpbGluZyBzcGFjZXMKIGFzIG5lZWRlZCB0byBlbnN1cmUgdGhpcyBsZW5ndGggaXMgdGhlIHNhbWUuCi0uVFAgMwotLQorLmJQCiBUaGUgYnVmZmVyIG1heSBjb250YWluIGxlYWRpbmcgc3BhY2VzLCBkZXBlbmRpbmcgb24gaG93IGl0IHdhcyBzZXQuCi0uVFAgMwotLQorLmJQCiBUaGUgYnVmZmVyIGNvbnRlbnRzIGFyZSBzZXQgd2l0aCBcZkJzZXRfZmllbGRfYnVmZmVyXGZQLAogb3IgYXMgYSBzaWRlIGVmZmVjdCBvZiBhbnkgZWRpdGluZyBvcGVyYXRpb25zIG9uIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkLgotLlRQIDMKLS0KKy5iUAogRWRpdGluZyBvcGVyYXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgXGZJd2luZG93XGZQIHdoaWNoIGRpc3BsYXlzIHRoZSBmaWVsZCwKIHJhdGhlciB0aGFuIGEgXGZJc3RyaW5nXGZQLgogVGhlIHdpbmRvdyBjb250YWlucyBvbmx5IHByaW50YWJsZSBjaGFyYWN0ZXJzLCBhbmQgaXMgZmlsbGVkIHdpdGggYmxhbmtzLgogSWYgeW91IHdhbnQgdGhlIHJhdyBkYXRhLCB5b3UgbXVzdCB3cml0ZSB5b3VyCiBvd24gcm91dGluZSB0aGF0IGNvcGllcyB0aGUgdmFsdWUgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJlbW92ZXMgdGhlIGxlYWRpbmcKIGFuZCB0cmFpbGluZyBzcGFjZXMuCi0uVFAgMwotLQorLmJQCiBCZWNhdXNlIGVkaXRpbmcgb3BlcmF0aW9ucyBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlciB0bwogY29ycmVzcG9uZCB0byB0aGUgd2luZG93LCB5b3Ugc2hvdWxkIG5vdCByZWx5IG9uIHVzaW5nIGJ1ZmZlcnMKIGZvciBsb25nLXRlcm0gc3RvcmFnZSBvZiBmb3JtIGRhdGEuCkBAIC0xMjIsNyArMTE4LDcgQEAKIC5TSCBOT1RFUwogVGhlIGhlYWRlciBmaWxlIFxmQjxmb3JtLmg+XGZSIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlciBmaWxlCiAuUFAKLVdoZW4gY29uZmlndXJlZCBmb3Igd2lkZS1jaGFyYWN0ZXJzLCBcZkJmaWVsZF9idWZmZXJcZlAgcmV0dXJucyBhIHBvaW50ZXIKK1doZW4gY29uZmlndXJlZCBmb3Igd2lkZSBjaGFyYWN0ZXJzLCBcZkJmaWVsZF9idWZmZXJcZlAgcmV0dXJucyBhIHBvaW50ZXIKIHRvIHRlbXBvcmFyeSBzdG9yYWdlIChhbGxvY2F0ZWQgYW5kIGZyZWVkIGJ5IHRoZSBsaWJyYXJ5KS4KIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBkYXRhLgogSXQgd2lsbCBiZSBmcmVlZCBvbiB0aGUgbmV4dCBjYWxsIHRvIFxmQmZpZWxkX2J1ZmZlclxmUCB0byByZXR1cm4gdGhlCkBAIC0xMzQsOSArMTMwLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fZmllbGRfaW5mby4zeCBiL21hbi9mb3JtX2ZpZWxkX2luZm8uM3gKaW5kZXggYmRlMzEyOC4uNmExYWY2YyAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fZmllbGRfaW5mby4zeAorKysgYi9tYW4vZm9ybV9maWVsZF9pbmZvLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9maWVsZF9pbmZvLjN4LHYgMS4xMCAyMDA2LzExLzA0IDE3OjE0OjMxIHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV9maWVsZF9pbmZvLjN4LHYgMS4xMiAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fZmllbGRfaW5mbyAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fZmllbGRfaW5mb1xmUiAtIHJldHJpZXZlIGZpZWxkIGNoYXJhY3RlcmlzdGljcworXGZCZm9ybV9maWVsZF9pbmZvXGZSIFwtIHJldHJpZXZlIGZpZWxkIGNoYXJhY3RlcmlzdGljcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC03Nyw5ICs3NywzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3ggYi9tYW4vZm9ybV9maWVsZF9qdXN0LjN4CmluZGV4IDE1ZDZjYjIuLjJmMjIzZTkgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX2ZpZWxkX2p1c3QuM3gKKysrIGIvbWFuL2Zvcm1fZmllbGRfanVzdC4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1fZmllbGRfanVzdC4zeCx2IDEuOSAyMDA2LzExLzA0IDE3OjEyOjAwIHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV9maWVsZF9qdXN0LjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fZmllbGRfanVzdCAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fZmllbGRfanVzdFxmUiAtIHJldHJpZXZlIGZpZWxkIGNoYXJhY3RlcmlzdGljcworXGZCZm9ybV9maWVsZF9qdXN0XGZSIFwtIHJldHJpZXZlIGZpZWxkIGNoYXJhY3RlcmlzdGljcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC03MCw5ICs3MCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkX25ldy4zeCBiL21hbi9mb3JtX2ZpZWxkX25ldy4zeAppbmRleCA2MDk1ZGUxLi4yM2EzNTE2IDEwMDY0NAotLS0gYS9tYW4vZm9ybV9maWVsZF9uZXcuM3gKKysrIGIvbWFuL2Zvcm1fZmllbGRfbmV3LjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9maWVsZF9uZXcuM3gsdiAxLjE2IDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2ZpZWxkX25ldy4zeCx2IDEuMTggMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBmb3JtX2ZpZWxkX25ldyAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fZmllbGRfbmV3XGZSIC0gY3JlYXRlIGFuZCBkZXN0cm95IGZvcm0gZmllbGRzCitcZkJmb3JtX2ZpZWxkX25ld1xmUiBcLSBjcmVhdGUgYW5kIGRlc3Ryb3kgZm9ybSBmaWVsZHMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtOTgsOSArOTgsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybV9maWVsZF9vcHRzLjN4IGIvbWFuL2Zvcm1fZmllbGRfb3B0cy4zeAppbmRleCBkNTA1Mjc5Li5mZjI3ZmUxIDEwMDY0NAotLS0gYS9tYW4vZm9ybV9maWVsZF9vcHRzLjN4CisrKyBiL21hbi9mb3JtX2ZpZWxkX29wdHMuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX2ZpZWxkX29wdHMuM3gsdiAxLjEzIDIwMDcvMDIvMjQgMTc6MzQ6MjcgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2ZpZWxkX29wdHMuM3gsdiAxLjE3IDIwMTQvMDcvMjYgMjE6MjE6NTcgdG9tIEV4cCAkCiAuVEggZm9ybV9maWVsZF9vcHRzIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9maWVsZF9vcHRzXGZSIC0gc2V0IGFuZCBnZXQgZmllbGQgb3B0aW9ucworXGZCZm9ybV9maWVsZF9vcHRzXGZSIFwtIHNldCBhbmQgZ2V0IGZpZWxkIG9wdGlvbnMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtNTQsNDIgKzU0LDQ3IEBACiAuUFAKIFRoZSBmdW5jdGlvbiBcZkJmaWVsZF9vcHRzXGZSIHJldHVybnMgdGhlIGZpZWxkJ3MgY3VycmVudCBvcHRpb24gYml0cy4KIC5QUAotVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBkZWZpbmVkIChhbGwgYXJlIG9uIGJ5IGRlZmF1bHQpOgotLlRQIDUKLU9fVklTSUJMRQotVGhlIGZpZWxkIGlzIGRpc3BsYXllZC4gIElmIHRoaXMgb3B0aW9uIGlzIG9mZiwgZGlzcGxheSBvZiB0aGUgZmllbGQgaXMKLXN1cHByZXNzZWQuCitUaGUgZm9sbG93aW5nIHN0YW5kYXJkIG9wdGlvbnMgYXJlIGRlZmluZWQgKGFsbCBhcmUgb24gYnkgZGVmYXVsdCk6CiAuVFAgNQogT19BQ1RJVkUKIFRoZSBmaWVsZCBpcyB2aXNpdGVkIGR1cmluZyBwcm9jZXNzaW5nLiAgSWYgdGhpcyBvcHRpb24gaXMgb2ZmLCB0aGUgZmllbGQgd2lsbAogbm90IGJlIHJlYWNoYWJsZSBieSBuYXZpZ2F0aW9uIGtleXMuIFBsZWFzZSBub3RpY2UgdGhhdCBhbiBpbnZpc2libGUgZmllbGQKIGFwcGVhcnMgdG8gYmUgaW5hY3RpdmUgYWxzby4KIC5UUCA1Ci1PX1BVQkxJQwotVGhlIGZpZWxkIGNvbnRlbnRzIGFyZSBkaXNwbGF5ZWQgYXMgZGF0YSBpcyBlbnRlcmVkLgotLlRQIDUKLU9fRURJVAotVGhlIGZpZWxkIGNhbiBiZSBlZGl0ZWQuCi0uVFAgNQotT19XUkFQCi1Xb3JkcyB0aGF0IGRvIG5vdCBmaXQgb24gYSBsaW5lIGFyZSB3cmFwcGVkIHRvIHRoZSBuZXh0IGxpbmUuICBXb3JkcyBhcmUKLWJsYW5rLXNlcGFyYXRlZC4KK09fQVVUT1NLSVAKK1NraXAgdG8gdGhlIG5leHQgZmllbGQgd2hlbiB0aGlzIG9uZSBmaWxscy4KIC5UUCA1CiBPX0JMQU5LCiBUaGUgZmllbGQgaXMgY2xlYXJlZCB3aGVuZXZlciBhIGNoYXJhY3RlciBpcyBlbnRlcmVkIGF0IHRoZSBmaXJzdCBwb3NpdGlvbi4KIC5UUCA1Ci1PX0FVVE9TS0lQCi1Ta2lwIHRvIHRoZSBuZXh0IGZpZWxkIHdoZW4gdGhpcyBvbmUgZmlsbHMuCitPX0VESVQKK1RoZSBmaWVsZCBjYW4gYmUgZWRpdGVkLgogLlRQIDUKIE9fTlVMTE9LCiBBbGxvdyBhIGJsYW5rIGZpZWxkLgogLlRQIDUKK09fUEFTU09LCitWYWxpZGF0ZSBmaWVsZCBvbmx5IGlmIG1vZGlmaWVkIGJ5IHVzZXIuCisuVFAgNQorT19QVUJMSUMKK1RoZSBmaWVsZCBjb250ZW50cyBhcmUgZGlzcGxheWVkIGFzIGRhdGEgaXMgZW50ZXJlZC4KKy5UUCA1CiBPX1NUQVRJQwogRmllbGQgYnVmZmVycyBhcmUgZml4ZWQgdG8gZmllbGQncyBvcmlnaW5hbCBzaXplLgogVHVybiB0aGlzIG9wdGlvbiBvZmYgdG8gY3JlYXRlIGEgZHluYW1pYyBmaWVsZC4KIC5UUCA1Ci1PX1BBU1NPSwotVmFsaWRhdGUgZmllbGQgb25seSBpZiBtb2RpZmllZCBieSB1c2VyLgorT19WSVNJQkxFCitUaGUgZmllbGQgaXMgZGlzcGxheWVkLiAgSWYgdGhpcyBvcHRpb24gaXMgb2ZmLCBkaXNwbGF5IG9mIHRoZSBmaWVsZCBpcworc3VwcHJlc3NlZC4KKy5UUCA1CitPX1dSQVAKK1dvcmRzIHRoYXQgZG8gbm90IGZpdCBvbiBhIGxpbmUgYXJlIHdyYXBwZWQgdG8gdGhlIG5leHQgbGluZS4gIFdvcmRzIGFyZQorYmxhbmstc2VwYXJhdGVkLgorLlBQCitPbmUgZXh0ZW5zaW9uIG9wdGlvbiBpcyBkZWZpbmVkIChleHRlbnNpb25zIGFyZSBvZmYgYnkgZGVmYXVsdCk6CisuVFAgNQorT19EWU5BTUlDX0pVU1RJRlkKK1Blcm1pdCBkeW5hbWljIGZpZWxkcyB0byBiZSBqdXN0aWZpZWQsIGxpa2Ugc3RhdGljIGZpZWxkcy4KIC5TSCBSRVRVUk4gVkFMVUUKIEV4Y2VwdCBmb3IgXGZCZmllbGRfb3B0c1xmUiwgZWFjaCByb3V0aW5lIHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAuVFAgNQpAQCAtMTA1LDggKzExMCw5IEBACiAuQiBFX1NZU1RFTV9FUlJPUgogU3lzdGVtIGVycm9yIG9jY3VycmVkIChzZWUgXGZCZXJybm9cZlIpLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJmb3JtXGZSKDNYKS4KLS5UUCA1CitcZkJjdXJzZXNcZlIoM1gpLAorXGZCZm9ybVxmUigzWCkuCitcZkJmb3JtX2ZpZWxkX2p1c3RcZlIoM1gpLgogLlNIIE5PVEVTCiBUaGUgaGVhZGVyIGZpbGUgXGZCPGZvcm0uaD5cZlIgYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyIGZpbGUKIFxmQjxjdXJzZXMuaD5cZlIuCkBAIC0xMTYsOSArMTIyLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fZmllbGRfdXNlcnB0ci4zeCBiL21hbi9mb3JtX2ZpZWxkX3VzZXJwdHIuM3gKaW5kZXggNDdiOWVkNC4uODk4ZGE5NyAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fZmllbGRfdXNlcnB0ci4zeAorKysgYi9tYW4vZm9ybV9maWVsZF91c2VycHRyLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9maWVsZF91c2VycHRyLjN4LHYgMS44IDIwMDYvMTEvMDQgMTg6MDQ6MzcgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX2ZpZWxkX3VzZXJwdHIuM3gsdiAxLjEwIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggZm9ybV9maWVsZF91c2VycHRyIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9maWVsZF91c2VycHRyXGZSIC0gYXNzb2NpYXRlIGFwcGxpY2F0aW9uIGRhdGEgd2l0aCBhIGZvcm0gZmllbGQKK1xmQmZvcm1fZmllbGRfdXNlcnB0clxmUiBcLSBhc3NvY2lhdGUgYXBwbGljYXRpb24gZGF0YSB3aXRoIGEgZm9ybSBmaWVsZAogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC02MSw5ICs2MSwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2ZpZWxkX3ZhbGlkYXRpb24uM3ggYi9tYW4vZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4CmluZGV4IDJkYTUyZWYuLjM1MDVmZGIgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX2ZpZWxkX3ZhbGlkYXRpb24uM3gKKysrIGIvbWFuL2Zvcm1fZmllbGRfdmFsaWRhdGlvbi4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDEwICsyNiwxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4LHYgMS4xNiAyMDA2LzEyLzI0IDE2OjA4OjA4IHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV9maWVsZF92YWxpZGF0aW9uLjN4LHYgMS4yMCAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIGZvcm1fZmllbGRfdmFsaWRhdGlvbiAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fZmllbGRfdmFsaWRhdGlvblxmUiAtIGRhdGEgdHlwZSB2YWxpZGF0aW9uIGZvciBmaWVsZHMKK1xmQmZvcm1fZmllbGRfdmFsaWRhdGlvblxmUiBcLSBkYXRhIHR5cGUgdmFsaWRhdGlvbiBmb3IgZmllbGRzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTcwLDkgKzcwLDcgQEAKIGNhc2Utc2Vuc2l0aXZpdHk7IGFuZCBhIGZpZnRoIFxmQmludFxmUiBmbGFnIGFyZ3VtZW50IHNwZWNpZnlpbmcgd2hldGhlciBhIHBhcnRpYWwKIG1hdGNoIG11c3QgYmUgYSB1bmlxdWUgb25lIChpZiB0aGlzIGZsYWcgaXMgb2ZmLCBhIHByZWZpeCBtYXRjaGVzIHRoZSBmaXJzdAogb2YgYW55IHNldCBvZiBtb3JlIHRoYW4gb25lIGxpc3QgZWxlbWVudHMgd2l0aCB0aGF0IHByZWZpeCkuIFBsZWFzZSBub3RpY2UKLXRoYXQgdGhlIHN0cmluZyBsaXN0IGlzIG5vdCBjb3BpZWQsIG9ubHkgYSByZWZlcmVuY2UgdG8gaXQgaXMgc3RvcmVkIGluIHRoZQotZmllbGQuIFNvIHlvdSBzaG91bGQgYXZvaWQgdXNpbmcgYSBsaXN0IHRoYXQgbGl2ZXMgaW4gYXV0b21hdGljIHZhcmlhYmxlcwotb24gdGhlIHN0YWNrLgordGhhdCB0aGUgc3RyaW5nIGxpc3QgaXMgY29waWVkLiBTbyB5b3UgbWF5IHVzZSBhIGxpc3QgdGhhdCBsaXZlcyBpbiBhdXRvbWF0aWMgdmFyaWFibGVzIG9uIHRoZSBzdGFjay4KIC5UUCA1CiBUWVBFX0lOVEVHRVIKIEludGVnZXIgZGF0YSwgcGFyc2FibGUgdG8gYW4gaW50ZWdlciBieSBcZkJhdG9pKDMpXGZSLiAgUmVxdWlyZXMgYSB0aGlyZApAQCAtMTAxLDEwICs5OSwxMCBAQAogdGhlIGRhdGEgaXMgdmFsaWQgaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIGl0LiAgUmVndWxhciBleHByZXNzaW9ucwogYXJlIGluIHRoZSBmb3JtYXQgb2YgXGZCcmVnY29tcFxmUiBhbmQgXGZCcmVnZXhlY1xmUi4gUGxlYXNlIG5vdGljZQogdGhhdCB0aGUgcmVndWxhciBleHByZXNzaW9uIG11c3QgbWF0Y2ggdGhlIHdob2xlIGZpZWxkLiBJZiB5b3UgaGF2ZSBmb3IKLWV4YW1wbGUgYW4gZWlnaHQgY2hhcmFjdGVyIHdpZGUgZmllbGQsIGEgcmVndWxhciBleHByZXNzaW9uICJeWzAtOV0qJCIgYWx3YXlzCitleGFtcGxlIGFuIGVpZ2h0IGNoYXJhY3RlciB3aWRlIGZpZWxkLCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiAiXlswXC05XSokIiBhbHdheXMKIG1lYW5zIHRoYXQgeW91IGhhdmUgdG8gZmlsbCBhbGwgZWlnaHQgcG9zaXRpb25zIHdpdGggZGlnaXRzLiBJZiB5b3Ugd2FudCB0bwotYWxsb3cgZmV3ZXIgZGlnaXRzLCB5b3UgbWF5IHVzZSBmb3IgZXhhbXBsZSAiXlswLTldKiAqJCIgd2hpY2ggaXMgZ29vZCBmb3IKLXRyYWlsaW5nIHNwYWNlcyAodXAgdG8gYW4gZW1wdHkgZmllbGQpLCBvciAiXiAqWzAtOV0qICokIiB3aGljaCBpcyBnb29kIGZvcgorYWxsb3cgZmV3ZXIgZGlnaXRzLCB5b3UgbWF5IHVzZSBmb3IgZXhhbXBsZSAiXlswXC05XSogKiQiIHdoaWNoIGlzIGdvb2QgZm9yCit0cmFpbGluZyBzcGFjZXMgKHVwIHRvIGFuIGVtcHR5IGZpZWxkKSwgb3IgIl4gKlswXC05XSogKiQiIHdoaWNoIGlzIGdvb2QgZm9yCiBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgYXJvdW5kIHRoZSBkaWdpdHMuCiAuVFAgNQogVFlQRV9JUFY0CkBAIC0xMjYsNyArMTI0LDkgQEAKIC5CIEVfU1lTVEVNX0VSUk9SCiBTeXN0ZW0gZXJyb3Igb2NjdXJyZWQgKHNlZSBcZkJlcnJub1xmUikuCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCksIFxmQmZvcm1cZlIoM1gpLgorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQmZvcm1cZlIoM1gpLAorXGZCZm9ybV92YXJpYWJsZXNcZlIoM1gpLgogLlNIIE5PVEVTCiBUaGUgaGVhZGVyIGZpbGUgXGZCPGZvcm0uaD5cZlIgYXV0b21hdGljYWxseSBpbmNsdWRlcyB0aGUgaGVhZGVyIGZpbGUKIFxmQjxjdXJzZXMuaD5cZlIuCkBAIC0xMzYsOSArMTM2LDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fZmllbGR0eXBlLjN4IGIvbWFuL2Zvcm1fZmllbGR0eXBlLjN4CmluZGV4IDBkNDJmYWUuLjAyOGU5YjAgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX2ZpZWxkdHlwZS4zeAorKysgYi9tYW4vZm9ybV9maWVsZHR5cGUuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX2ZpZWxkdHlwZS4zeCx2IDEuMTQgMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fZmllbGR0eXBlLjN4LHYgMS4xNiAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fZmllbGR0eXBlIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9maWVsZHR5cGVcZlIgLSBkZWZpbmUgdmFsaWRhdGlvbi1maWVsZCB0eXBlcworXGZCZm9ybV9maWVsZHR5cGVcZlIgXC0gZGVmaW5lIHZhbGlkYXRpb24tZmllbGQgdHlwZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtMTQwLDkgKzE0MCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX2hvb2suM3ggYi9tYW4vZm9ybV9ob29rLjN4CmluZGV4IGNkNDdhMjQuLjI5NDNiODggMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX2hvb2suM3gKKysrIGIvbWFuL2Zvcm1faG9vay4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1faG9vay4zeCx2IDEuOSAyMDA3LzAyLzI0IDE3OjM0OjE4IHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV9ob29rLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1faG9vayAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1faG9va1xmUiAtIHNldCBob29rcyBmb3IgYXV0b21hdGljIGludm9jYXRpb24gYnkgYXBwbGljYXRpb25zCitcZkJmb3JtX2hvb2tcZlIgXC0gc2V0IGhvb2tzIGZvciBhdXRvbWF0aWMgaW52b2NhdGlvbiBieSBhcHBsaWNhdGlvbnMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtOTIsOSArOTIsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vZm9ybV9uZXcuM3ggYi9tYW4vZm9ybV9uZXcuM3gKaW5kZXggY2FjNGY1MC4uYjY5ZjY0MiAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fbmV3LjN4CisrKyBiL21hbi9mb3JtX25ldy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1fbmV3LjN4LHYgMS43IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX25ldy4zeCx2IDEuOSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fbmV3IDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9uZXdcZlIgLSBjcmVhdGUgYW5kIGRlc3Ryb3kgZm9ybXMKK1xmQmZvcm1fbmV3XGZSIFwtIGNyZWF0ZSBhbmQgZGVzdHJveSBmb3JtcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgogLmJyCkBAIC04MSw5ICs4MSwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9mb3JtX25ld19wYWdlLjN4IGIvbWFuL2Zvcm1fbmV3X3BhZ2UuM3gKaW5kZXggNWI3ZjU4ZC4uNjM1ODIyZCAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fbmV3X3BhZ2UuM3gKKysrIGIvbWFuL2Zvcm1fbmV3X3BhZ2UuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX25ld19wYWdlLjN4LHYgMS44IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX25ld19wYWdlLjN4LHYgMS4xMCAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fbmV3X3BhZ2UgM1ggIiIKIC5TSCBOQU1FCi1cZkJmb3JtX25ld19wYWdlXGZSIC0gZm9ybSBwYWdpbmF0aW9uIGZ1bmN0aW9ucworXGZCZm9ybV9uZXdfcGFnZVxmUiBcLSBmb3JtIHBhZ2luYXRpb24gZnVuY3Rpb25zCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTY5LDkgKzY5LDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fb3B0cy4zeCBiL21hbi9mb3JtX29wdHMuM3gKaW5kZXggMGNhYWFlNy4uZjAyY2VjNiAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fb3B0cy4zeAorKysgYi9tYW4vZm9ybV9vcHRzLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9vcHRzLjN4LHYgMS45IDIwMDcvMDIvMjQgMTc6MzQ6MzYgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX29wdHMuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggZm9ybV9vcHRzIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9vcHRzXGZSIC0gc2V0IGFuZCBnZXQgZm9ybSBvcHRpb25zCitcZkJmb3JtX29wdHNcZlIgXC0gc2V0IGFuZCBnZXQgZm9ybSBvcHRpb25zCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTgyLDkgKzgyLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fcGFnZS4zeCBiL21hbi9mb3JtX3BhZ2UuM3gKaW5kZXggNTBlZDU0ZC4uMjIxMTIxNiAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fcGFnZS4zeAorKysgYi9tYW4vZm9ybV9wYWdlLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9wYWdlLjN4LHYgMS4xMCAyMDA2LzExLzA0IDE4OjUyOjMyIHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV9wYWdlLjN4LHYgMS4xMiAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fcGFnZSAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fcGFnZVxmUiAtIHNldCBhbmQgZ2V0IGZvcm0gcGFnZSBudW1iZXIKK1xmQmZvcm1fcGFnZVxmUiBcLSBzZXQgYW5kIGdldCBmb3JtIHBhZ2UgbnVtYmVyCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTg4LDkgKzg4LDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fcG9zdC4zeCBiL21hbi9mb3JtX3Bvc3QuM3gKaW5kZXggNmJmMTYwNy4uNDc5OWQ5ZCAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fcG9zdC4zeAorKysgYi9tYW4vZm9ybV9wb3N0LjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV9wb3N0LjN4LHYgMS43IDIwMDYvMTEvMDQgMTg6NTM6MjAgdG9tIEV4cCAkCisuXCIgJElkOiBmb3JtX3Bvc3QuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBmb3JtX3Bvc3QgM1ggIiIKIC5TSCBOQU1FCi1cZkJmb3JtX3Bvc3RcZlIgLSB3cml0ZSBvciBlcmFzZSBmb3JtcyBmcm9tIGFzc29jaWF0ZWQgc3Vid2luZG93cworXGZCZm9ybV9wb3N0XGZSIFwtIHdyaXRlIG9yIGVyYXNlIGZvcm1zIGZyb20gYXNzb2NpYXRlZCBzdWJ3aW5kb3dzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTgzLDkgKzgzLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fcmVxdWVzdG5hbWUuM3ggYi9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeAppbmRleCBhMTcyZjg1Li40YTRlN2ViIDEwMDY0NAotLS0gYS9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeAorKysgYi9tYW4vZm9ybV9yZXF1ZXN0bmFtZS4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IGZvcm1fcmVxdWVzdG5hbWUuM3gsdiAxLjcgMjAwNi8xMS8wNCAxNzo1Nzo0OSB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fcmVxdWVzdG5hbWUuM3gsdiAxLjkgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBmb3JtX3JlcXVlc3RuYW1lIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV9yZXF1ZXN0bmFtZVxmUiAtIGhhbmRsZSBwcmludGFibGUgZm9ybSByZXF1ZXN0IG5hbWVzCitcZkJmb3JtX3JlcXVlc3RuYW1lXGZSIFwtIGhhbmRsZSBwcmludGFibGUgZm9ybSByZXF1ZXN0IG5hbWVzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTYyLDkgKzYyLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fdXNlcnB0ci4zeCBiL21hbi9mb3JtX3VzZXJwdHIuM3gKaW5kZXggN2JlMGJmOC4uYmQyOWI1NCAxMDA2NDQKLS0tIGEvbWFuL2Zvcm1fdXNlcnB0ci4zeAorKysgYi9tYW4vZm9ybV91c2VycHRyLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogZm9ybV91c2VycHRyLjN4LHYgMS4xMSAyMDA2LzExLzA0IDE4OjQzOjI0IHRvbSBFeHAgJAorLlwiICRJZDogZm9ybV91c2VycHRyLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIGZvcm1fdXNlcnB0ciAzWCAiIgogLlNIIE5BTUUKLVxmQmZvcm1fdXNlcnB0clxmUiAtIGFzc29jaWF0ZSBhcHBsaWNhdGlvbiBkYXRhIHdpdGggYSBmb3JtIGl0ZW0KK1xmQmZvcm1fdXNlcnB0clxmUiBcLSBhc3NvY2lhdGUgYXBwbGljYXRpb24gZGF0YSB3aXRoIGEgZm9ybSBpdGVtCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxmb3JtLmg+XGZSCiAuYnIKQEAgLTYxLDkgKzYxLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fdmFyaWFibGVzLjN4IGIvbWFuL2Zvcm1fdmFyaWFibGVzLjN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YWYzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vZm9ybV92YXJpYWJsZXMuM3gKQEAgLTAsMCArMSw4MCBAQAorLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgQ29weXJpZ2h0IChjKSAyMDEwLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKy5cIiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorLlwiIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisuXCIgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKy5cIiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorLlwiIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorLlwiIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorLlwiIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisuXCIgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKy5cIiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorLlwiIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisuXCIgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKy5cIiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKy5cIiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorLlwiIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuXCIgJElkOiBmb3JtX3ZhcmlhYmxlcy4zeCx2IDEuNCAyMDEzLzA2LzIyIDE3OjU4OjMyIHRvbSBFeHAgJAorLlRIIGZvcm1fdmFyaWFibGVzIDNYICIiCisuZHMgbiA1CisubmEKKy5oeSAwCisuU0ggTkFNRQorXGZCVFlQRV9BTE5VTVxmUiwKK1xmQlRZUEVfQUxQSEFcZlIsCitcZkJUWVBFX0VOVU1cZlIsCitcZkJUWVBFX0lOVEVHRVJcZlIsCitcZkJUWVBFX0lQVjRcZlIsCitcZkJUWVBFX05VTUVSSUNcZlIsCitcZkJUWVBFX1JFR0VYUFxmUgorXC0gZm9ybSBzeXN0ZW0gZ2xvYmFsIHZhcmlhYmxlcworLmFkCisuaHkKKy5TSCBTWU5PUFNJUworLm5mCitcZkIjaW5jbHVkZSA8Zm9ybS5oPlxmUgorLlBQCitcZkJGSUVMRFRZUEUgKiBUWVBFX0FMTlVNO1xmUgorXGZCRklFTERUWVBFICogVFlQRV9BTFBIQTtcZlIKK1xmQkZJRUxEVFlQRSAqIFRZUEVfRU5VTTtcZlIKK1xmQkZJRUxEVFlQRSAqIFRZUEVfSU5URUdFUjtcZlIKK1xmQkZJRUxEVFlQRSAqIFRZUEVfSVBWNDtcZlIKK1xmQkZJRUxEVFlQRSAqIFRZUEVfTlVNRVJJQztcZlIKK1xmQkZJRUxEVFlQRSAqIFRZUEVfUkVHRVhQO1xmUgorLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZXNlIGFyZSBidWlsZGluZyBibG9ja3MgZm9yIHRoZSBmb3JtIGxpYnJhcnksCitkZWZpbmluZyBmaWVsZHMgdGhhdCBjYW4gYmUgY3JlYXRlZCB1c2luZyBcZkJzZXRfZmllbGR0eXBlXGZQKDNYKS4KK0VhY2ggcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBmaWVsZC0gYW5kIGNoYXJhY3Rlci12YWxpZGF0aW9uLAorYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBkYXRhdHlwZS4KKy5TUyBUWVBFX0FMTlVNCitUaGlzIGhvbGRzIGFscGhhbnVtZXJpYyBkYXRhLgorLlNTIFRZUEVfQUxQSEEKK1RoaXMgaG9sZHMgYWxwaGFiZXRpYyBkYXRhLgorLlNTIFRZUEVfRU5VTQorVGhpcyBob2xkcyBhbiBlbnVtZXJhdGVkIHR5cGUuCisuU1MgVFlQRV9JTlRFR0VSCitUaGlzIGhvbGRzIGEgZGVjaW1hbCBpbnRlZ2VyLgorLlNTIFRZUEVfSVBWNAorVGhpcyBob2xkcyBhbiBJUHY0IGludGVybmV0IGFkZHJlc3MsIGUuZy4sICIxMjcuMC4wLjEiLgorLlNTIFRZUEVfTlVNRVJJQworVGhpcyBob2xkcyBhIGRlY2ltYWwgbnVtYmVyLCB3aXRoIG9wdGlvbmFsIHNpZ24gYW5kIGRlY2ltYWwgcG9pbnQuCisuU1MgVFlQRV9SRUdFWFAKK1RoaXMgaG9sZHMgYSByZWd1bGFyIGV4cHJlc3Npb24uCisuU0ggUE9SVEFCSUxJVFkKK1RoZSBcZkJUWVBFX0lQVjRcZlAgdmFyaWFibGUgaXMgYW4gZXh0ZW5zaW9uIG5vdCBwcm92aWRlZCBieSBvbGRlcgoraW1wbGVtZW50YXRpb25zIG9mIHRoZSBmb3JtIGxpYnJhcnkuCisuU0ggU0VFIEFMU08KK1xmQmZvcm1cZlIoM1gpLgpkaWZmIC0tZ2l0IGEvbWFuL2Zvcm1fd2luLjN4IGIvbWFuL2Zvcm1fd2luLjN4CmluZGV4IGM4ZjY0ZjIuLjMyYWY0OWIgMTAwNjQ0Ci0tLSBhL21hbi9mb3JtX3dpbi4zeAorKysgYi9tYW4vZm9ybV93aW4uM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBmb3JtX3dpbi4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwICQKKy5cIiAkSWQ6IGZvcm1fd2luLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIGZvcm1fd2luIDNYICIiCiAuU0ggTkFNRQotXGZCZm9ybV93aW5cZlIgLSBtYWtlIGFuZCBicmVhayBmb3JtIHdpbmRvdyBhbmQgc3Vid2luZG93IGFzc29jaWF0aW9ucworXGZCZm9ybV93aW5cZlIgXC0gbWFrZSBhbmQgYnJlYWsgZm9ybSB3aW5kb3cgYW5kIHN1YndpbmRvdyBhc3NvY2lhdGlvbnMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPGZvcm0uaD5cZlIKIC5icgpAQCAtNzcsNyArNzcsOSBAQAogLkIgRV9OT1RfQ09OTkVDVEVECiBObyBpdGVtcyBhcmUgY29ubmVjdGVkIHRvIHRoZSBmb3JtLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJmb3JtXGZSKDNYKS4KK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCksCitcZkJmb3JtXGZSKDNYKS4KIC5TSCBOT1RFUwogVGhlIGhlYWRlciBmaWxlIFxmQjxmb3JtLmg+XGZSIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlciBmaWxlCiBcZkI8Y3Vyc2VzLmg+XGZSLgpAQCAtODcsOSArODksMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vaW5mb2NtcC4xbSBiL21hbi9pbmZvY21wLjFtCmluZGV4IGIxYTg4ZTcuLjhhM2ZlZjIgMTAwNjQ0Ci0tLSBhL21hbi9pbmZvY21wLjFtCisrKyBiL21hbi9pbmZvY21wLjFtCkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDIwICsyNywyNSBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogaW5mb2NtcC4xbSx2IDEuNDQgMjAwNi8xMi8yNCAxODoxNjozMSB0b20gRXhwICQKKy5cIiAkSWQ6IGluZm9jbXAuMW0sdiAxLjU2IDIwMTUvMDUvMjMgMjA6NTA6MDAgdG9tIEV4cCAkCiAuVEggQElORk9DTVBAIDFNICIiCiAuZHMgbiA1CisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuZHMgZCBAVEVSTUlORk9ACiAuU0ggTkFNRQotXGZCQElORk9DTVBAXGZSIC0gY29tcGFyZSBvciBwcmludCBvdXQgXGZJdGVybWluZm9cZlIgZGVzY3JpcHRpb25zCitcZkJASU5GT0NNUEBcZlIgXC0gY29tcGFyZSBvciBwcmludCBvdXQgXGZJdGVybWluZm9cZlIgZGVzY3JpcHRpb25zCiAuU0ggU1lOT1BTSVMKLVxmQkBJTkZPQ01QQFxmUiBbXGZCLVwKK1xmQkBJTkZPQ01QQFxmUiBbXGZCXC1cCiAxXAogQ1wKK0RcCiBFXAogRlwKIEdcCiBJXAorS1wKIExcCiBUXAogVVwKQEAgLTYwLDgwICs2NSwxMTEgQEAKIHhcCiBcZlJdCiAuYnIKLSAgICAgIFtcZkItdlxmUiBcZkluXGZSXSBbXGZCLXMgZFxmUnwgXGZCaVxmUnwgXGZCbFxmUnwgXGZCY1xmUl0gW1xmQi1SIFxmUlxmQnN1YnNldFxmUl0KKyAgICAgIFtcZkJcLXZcZlIgXGZJblxmUl0gW1xmQlwtcyBkXGZSfCBcZkJpXGZSfCBcZkJsXGZSfCBcZkJjXGZSXSBbXGZCXC1SIFxmUlxmQnN1YnNldFxmUl0KIC5icgotICAgICAgW1xmQi13XGZSXCBcZkl3aWR0aFxmUl0gW1xmQi1BXGZSXCBcZklkaXJlY3RvcnlcZlJdIFtcZkItQlxmUlwgXGZJZGlyZWN0b3J5XGZSXQorICAgICAgW1xmQlwtd1xmUlwgXGZJd2lkdGhcZlJdIFtcZkJcLUFcZlJcIFxmSWRpcmVjdG9yeVxmUl0gW1xmQlwtQlxmUlwgXGZJZGlyZWN0b3J5XGZSXQogLmJyCiAgICAgICBbXGZJdGVybW5hbWVcZlIuLi5dCiAuU0ggREVTQ1JJUFRJT04KIFxmQkBJTkZPQ01QQFxmUiBjYW4gYmUgdXNlZCB0byBjb21wYXJlIGEgYmluYXJ5IFxmQnRlcm1pbmZvXGZSIGVudHJ5IHdpdGggb3RoZXIKIHRlcm1pbmZvIGVudHJpZXMsIHJld3JpdGUgYSBcZkJ0ZXJtaW5mb1xmUiBkZXNjcmlwdGlvbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUKIFxmQnVzZT1cZlIgdGVybWluZm8gZmllbGQsIG9yIHByaW50IG91dCBhIFxmQnRlcm1pbmZvXGZSIGRlc2NyaXB0aW9uIGZyb20gdGhlCi1iaW5hcnkgZmlsZSAoXGZCdGVybVxmUikgaW4gYSB2YXJpZXR5IG9mIGZvcm1hdHMuICBJbiBhbGwgY2FzZXMsIHRoZSBib29sZWFuCitiaW5hcnkgZmlsZSAoXGZCdGVybVxmUikgaW4gYSB2YXJpZXR5IG9mIGZvcm1hdHMuCitJbiBhbGwgY2FzZXMsIHRoZSBib29sZWFuCiBmaWVsZHMgd2lsbCBiZSBwcmludGVkIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgbnVtZXJpYyBmaWVsZHMsIGZvbGxvd2VkIGJ5IHRoZQogc3RyaW5nIGZpZWxkcy4KIC5TUyBEZWZhdWx0IE9wdGlvbnMKIElmIG5vIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBhbmQgemVybyBvciBvbmUgXGZJdGVybW5hbWVzXGZSIGFyZSBzcGVjaWZpZWQsIHRoZQotXGZCLUlcZlIgb3B0aW9uIHdpbGwgYmUgYXNzdW1lZC4gIElmIG1vcmUgdGhhbiBvbmUgXGZJdGVybW5hbWVcZlIgaXMgc3BlY2lmaWVkLAotdGhlIFxmQi1kXGZSIG9wdGlvbiB3aWxsIGJlIGFzc3VtZWQuCi0uU1MgQ29tcGFyaXNvbiBPcHRpb25zIFstZF0gWy1jXSBbLW5dCitcZkJcLUlcZlIgb3B0aW9uIHdpbGwgYmUgYXNzdW1lZC4KK0lmIG1vcmUgdGhhbiBvbmUgXGZJdGVybW5hbWVcZlIgaXMgc3BlY2lmaWVkLAordGhlIFxmQlwtZFxmUiBvcHRpb24gd2lsbCBiZSBhc3N1bWVkLgorLlNTIENvbXBhcmlzb24gT3B0aW9ucyBbXC1kXSBbXC1jXSBbXC1uXQogXGZCQElORk9DTVBAXGZSIGNvbXBhcmVzIHRoZSBcZkJ0ZXJtaW5mb1xmUiBkZXNjcmlwdGlvbiBvZiB0aGUgZmlyc3QgdGVybWluYWwKIFxmSXRlcm1uYW1lXGZSIHdpdGggZWFjaCBvZiB0aGUgZGVzY3JpcHRpb25zIGdpdmVuIGJ5IHRoZSBlbnRyaWVzIGZvciB0aGUgb3RoZXIKLXRlcm1pbmFsJ3MgXGZJdGVybW5hbWVzXGZSLiAgSWYgYSBjYXBhYmlsaXR5IGlzIGRlZmluZWQgZm9yIG9ubHkgb25lIG9mIHRoZQordGVybWluYWwncyBcZkl0ZXJtbmFtZXNcZlIuCitJZiBhIGNhcGFiaWxpdHkgaXMgZGVmaW5lZCBmb3Igb25seSBvbmUgb2YgdGhlCiB0ZXJtaW5hbHMsIHRoZSB2YWx1ZSByZXR1cm5lZCB3aWxsIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB0aGUgY2FwYWJpbGl0eToKLVxmQkZcZlIgZm9yIGJvb2xlYW4gdmFyaWFibGVzLCBcZkItMVxmUiBmb3IgaW50ZWdlciB2YXJpYWJsZXMsIGFuZCBcZkJOVUxMXGZSCitcZkJGXGZSIGZvciBib29sZWFuIHZhcmlhYmxlcywgXGZCXC0xXGZSIGZvciBpbnRlZ2VyIHZhcmlhYmxlcywgYW5kIFxmQk5VTExcZlIKIGZvciBzdHJpbmcgdmFyaWFibGVzLgogLlBQCi1UaGUgXGZCLWRcZlIgb3B0aW9uIHByb2R1Y2VzIGEgbGlzdCBvZiBlYWNoIGNhcGFiaWxpdHkgdGhhdCBpcyBkaWZmZXJlbnQKLWJldHdlZW4gdHdvIGVudHJpZXMuICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgdG8gc2hvdyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3bworVGhlIFxmQlwtZFxmUiBvcHRpb24gcHJvZHVjZXMgYSBsaXN0IG9mIGVhY2ggY2FwYWJpbGl0eSB0aGF0IGlzIGRpZmZlcmVudAorYmV0d2VlbiB0d28gZW50cmllcy4KK1RoaXMgb3B0aW9uIGlzIHVzZWZ1bCB0byBzaG93IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvCiBlbnRyaWVzLCBjcmVhdGVkIGJ5IGRpZmZlcmVudCBwZW9wbGUsIGZvciB0aGUgc2FtZSBvciBzaW1pbGFyIHRlcm1pbmFscy4KIC5QUAotVGhlIFxmQi1jXGZSIG9wdGlvbiBwcm9kdWNlcyBhIGxpc3Qgb2YgZWFjaCBjYXBhYmlsaXR5IHRoYXQgaXMgY29tbW9uIGJldHdlZW4KLXR3byBlbnRyaWVzLiAgQ2FwYWJpbGl0aWVzIHRoYXQgYXJlIG5vdCBzZXQgYXJlIGlnbm9yZWQuICBUaGlzIG9wdGlvbiBjYW4gYmUKLXVzZWQgYXMgYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhlIFxmQi11XGZSIG9wdGlvbiBpcyB3b3J0aCB1c2luZy4KK1RoZSBcZkJcLWNcZlIgb3B0aW9uIHByb2R1Y2VzIGEgbGlzdCBvZiBlYWNoIGNhcGFiaWxpdHkgdGhhdCBpcyBjb21tb24gYmV0d2VlbgordHdvIG9yIG1vcmUgZW50cmllcy4KK0NhcGFiaWxpdGllcyB0aGF0IGFyZSBub3Qgc2V0IGFyZSBpZ25vcmVkLgorVGhpcyBvcHRpb24gY2FuIGJlCit1c2VkIGFzIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZSBcZkJcLXVcZlIgb3B0aW9uIGlzIHdvcnRoIHVzaW5nLgogLlBQCi1UaGUgXGZCLW5cZlIgb3B0aW9uIHByb2R1Y2VzIGEgbGlzdCBvZiBlYWNoIGNhcGFiaWxpdHkgdGhhdCBpcyBpbiBuZWl0aGVyCi1lbnRyeS4gIElmIG5vIFxmSXRlcm1uYW1lc1xmUiBhcmUgZ2l2ZW4sIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcZkJURVJNXGZSCi13aWxsIGJlIHVzZWQgZm9yIGJvdGggb2YgdGhlIFxmSXRlcm1uYW1lc1xmUi4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBxdWljaworVGhlIFxmQlwtblxmUiBvcHRpb24gcHJvZHVjZXMgYSBsaXN0IG9mIGVhY2ggY2FwYWJpbGl0eSB0aGF0IGlzIGluIG5vbmUgb2YKK3RoZSBnaXZlbiBlbnRyaWVzLgorSWYgbm8gXGZJdGVybW5hbWVzXGZSIGFyZSBnaXZlbiwgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFxmQlRFUk1cZlIKK3dpbGwgYmUgdXNlZCBmb3IgYm90aCBvZiB0aGUgXGZJdGVybW5hbWVzXGZSLgorVGhpcyBjYW4gYmUgdXNlZCBhcyBhIHF1aWNrCiBjaGVjayB0byBzZWUgaWYgYW55dGhpbmcgd2FzIGxlZnQgb3V0IG9mIGEgZGVzY3JpcHRpb24uCi0uU1MgU291cmNlIExpc3RpbmcgT3B0aW9ucyBbLUldIFstTF0gWy1DXSBbLXJdCi1UaGUgXGZCLUlcZlIsIFxmQi1MXGZSLCBhbmQgXGZCLUNcZlIgb3B0aW9ucyB3aWxsIHByb2R1Y2UgYSBzb3VyY2UgbGlzdGluZyBmb3IKKy5TUyBTb3VyY2UgTGlzdGluZyBPcHRpb25zIFtcLUldIFtcLUxdIFtcLUNdIFtcLXJdCitUaGUgXGZCXC1JXGZSLCBcZkJcLUxcZlIsIGFuZCBcZkJcLUNcZlIgb3B0aW9ucyB3aWxsIHByb2R1Y2UgYSBzb3VyY2UgbGlzdGluZyBmb3IKIGVhY2ggdGVybWluYWwgbmFtZWQuCiAuCiAuVFMKIGNlbnRlciB0YWIoLykgOwogbCBsIC4KLVxmQi1JXGZSL3VzZSB0aGUgXGZCdGVybWluZm9cZlIgbmFtZXMKLVxmQi1MXGZSL3VzZSB0aGUgbG9uZyBDIHZhcmlhYmxlIG5hbWUgbGlzdGVkIGluIDxcZkJ0ZXJtLmhcZlI+Ci1cZkItQ1xmUi91c2UgdGhlIFxmQnRlcm1jYXBcZlIgbmFtZXMKLVxmQi1yXGZSL3doZW4gdXNpbmcgXGZCLUNcZlIsIHB1dCBvdXQgYWxsIGNhcGFiaWxpdGllcyBpbiBcZkJ0ZXJtY2FwXGZSIGZvcm0KK1xmQlwtSVxmUi91c2UgdGhlIFxmQnRlcm1pbmZvXGZSIG5hbWVzCitcZkJcLUxcZlIvdXNlIHRoZSBsb25nIEMgdmFyaWFibGUgbmFtZSBsaXN0ZWQgaW4gPFxmQnRlcm0uaFxmUj4KK1xmQlwtQ1xmUi91c2UgdGhlIFxmQnRlcm1jYXBcZlIgbmFtZXMKK1xmQlwtclxmUi93aGVuIHVzaW5nIFxmQlwtQ1xmUiwgcHV0IG91dCBhbGwgY2FwYWJpbGl0aWVzIGluIFxmQnRlcm1jYXBcZlIgZm9ybQorXGZCXC1LXGZSL21vZGlmaWVzIHRoZSBcZkJcLUNcZlAgb3B0aW9uLCBpbXByb3ZpbmcgQlNELWNvbXBhdGliaWxpdHkuCiAuVEUKIC5QUAogSWYgbm8gXGZJdGVybW5hbWVzXGZSIGFyZSBnaXZlbiwgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFxmQlRFUk1cZlIgd2lsbCBiZQogdXNlZCBmb3IgdGhlIHRlcm1pbmFsIG5hbWUuCiAuUFAKLVRoZSBzb3VyY2UgcHJvZHVjZWQgYnkgdGhlIFxmQi1DXGZSIG9wdGlvbiBtYXkgYmUgdXNlZCBkaXJlY3RseSBhcyBhCitUaGUgc291cmNlIHByb2R1Y2VkIGJ5IHRoZSBcZkJcLUNcZlIgb3B0aW9uIG1heSBiZSB1c2VkIGRpcmVjdGx5IGFzIGEKIFxmQnRlcm1jYXBcZlIgZW50cnksIGJ1dCBub3QgYWxsIHBhcmFtZXRlcml6ZWQgc3RyaW5ncyBjYW4gYmUgY2hhbmdlZCB0bwotdGhlIFxmQnRlcm1jYXBcZlIgZm9ybWF0LiAgXGZCQElORk9DTVBAXGZSIHdpbGwgYXR0ZW1wdCB0byBjb252ZXJ0IG1vc3Qgb2YgdGhlCit0aGUgXGZCdGVybWNhcFxmUiBmb3JtYXQuCitcZkJASU5GT0NNUEBcZlIgd2lsbCBhdHRlbXB0IHRvIGNvbnZlcnQgbW9zdCBvZiB0aGUKIHBhcmFtZXRlcml6ZWQgaW5mb3JtYXRpb24sIGFuZCBhbnl0aGluZyBub3QgY29udmVydGVkIHdpbGwgYmUgcGxhaW5seSBtYXJrZWQgaW4KLXRoZSBvdXRwdXQgYW5kIGNvbW1lbnRlZCBvdXQuICBUaGVzZSBzaG91bGQgYmUgZWRpdGVkIGJ5IGhhbmQuCit0aGUgb3V0cHV0IGFuZCBjb21tZW50ZWQgb3V0LgorVGhlc2Ugc2hvdWxkIGJlIGVkaXRlZCBieSBoYW5kLgorLlBQCitGb3IgYmVzdCByZXN1bHRzIHdoZW4gY29udmVydGluZyB0byBcZkJ0ZXJtY2FwXGZQIGZvcm1hdCwKK3lvdSBzaG91bGQgdXNlIGJvdGggXGZCXC1DXGZQIGFuZCBcZkJcLXJcZlAuCitOb3JtYWxseSBhIHRlcm1jYXAgZGVzY3JpcHRpb24gaXMgbGltaXRlZCB0byAxMDIzIGJ5dGVzLgorQElORk9DTVBAIHRyaW1zIGF3YXkgbGVzcyBlc3NlbnRpYWwgcGFydHMgdG8gbWFrZSBpdCBmaXQuCitJZiB5b3UgYXJlIGNvbnZlcnRpbmcgdG8gb25lIG9mIHRoZSAocmFyZSkgdGVybWNhcCBpbXBsZW1lbnRhdGlvbnMKK3doaWNoIGFjY2VwdCBhbiB1bmxpbWl0ZWQgc2l6ZSBvZiB0ZXJtY2FwLAoreW91IG1heSB3YW50IHRvIGFkZCB0aGUgXGZCXC1UXGZQIG9wdGlvbi4KK01vcmUgb2Z0ZW4gaG93ZXZlciwgeW91IG11c3QgaGVscCB0aGUgdGVybWNhcCBpbXBsZW1lbnRhdGlvbiwKK2FuZCB0cmltIGV4Y2VzcyB3aGl0ZXNwYWNlICh1c2UgdGhlIFxmQlwtMFxmUCBvcHRpb24gZm9yIHRoYXQpLgogLlBQCiBBbGwgcGFkZGluZyBpbmZvcm1hdGlvbiBmb3Igc3RyaW5ncyB3aWxsIGJlIGNvbGxlY3RlZCB0b2dldGhlciBhbmQgcGxhY2VkCi1hdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgd2hlcmUgXGZCdGVybWNhcFxmUiBleHBlY3RzIGl0LiAgTWFuZGF0b3J5CithdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgd2hlcmUgXGZCdGVybWNhcFxmUiBleHBlY3RzIGl0LgorTWFuZGF0b3J5CiBwYWRkaW5nIChwYWRkaW5nIGluZm9ybWF0aW9uIHdpdGggYSB0cmFpbGluZyAnLycpIHdpbGwgYmVjb21lIG9wdGlvbmFsLgogLlBQCiBBbGwgXGZCdGVybWNhcFxmUiB2YXJpYWJsZXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBcZkJ0ZXJtaW5mb1xmUiwgYnV0IHdoaWNoCi1hcmUgZGVyaXZhYmxlIGZyb20gb3RoZXIgXGZCdGVybWluZm9cZlIgdmFyaWFibGVzLCB3aWxsIGJlIG91dHB1dC4gIE5vdCBhbGwKK2FyZSBkZXJpdmFibGUgZnJvbSBvdGhlciBcZkJ0ZXJtaW5mb1xmUiB2YXJpYWJsZXMsIHdpbGwgYmUgb3V0cHV0LgorTm90IGFsbAogXGZCdGVybWluZm9cZlIgY2FwYWJpbGl0aWVzIHdpbGwgYmUgdHJhbnNsYXRlZDsgb25seSB0aG9zZSB2YXJpYWJsZXMgd2hpY2ggd2VyZQotcGFydCBvZiBcZkJ0ZXJtY2FwXGZSIHdpbGwgbm9ybWFsbHkgYmUgb3V0cHV0LiAgU3BlY2lmeWluZyB0aGUgXGZCLXJcZlIgb3B0aW9uCitwYXJ0IG9mIFxmQnRlcm1jYXBcZlIgd2lsbCBub3JtYWxseSBiZSBvdXRwdXQuCitTcGVjaWZ5aW5nIHRoZSBcZkJcLXJcZlIgb3B0aW9uCiB3aWxsIHRha2Ugb2ZmIHRoaXMgcmVzdHJpY3Rpb24sIGFsbG93aW5nIGFsbCBjYXBhYmlsaXRpZXMgdG8gYmUgb3V0cHV0IGluCiBcZkl0ZXJtY2FwXGZSIGZvcm0uCitOb3JtYWxseSB5b3Ugd291bGQgdXNlIGJvdGggdGhlIFxmQlwtQ1xmUCBhbmQgXGZCXC1yXGZQIG9wdGlvbnMuCitUaGUgYWN0dWFsIGZvcm1hdCB1c2VkIGluY29ycG9yYXRlcyBzb21lIGltcHJvdmVtZW50cyBmb3IgZXNjYXBlZCBjaGFyYWN0ZXJzCitmcm9tIHRlcm1pbmZvIGZvcm1hdC4KK0ZvciBhIHN0cmljdGVyIEJTRC1jb21wYXRpYmxlIHRyYW5zbGF0aW9uLCB1c2UgdGhlIFxmQlwtS1xmUiBvcHRpb24KK3JhdGhlciB0aGFuIFxmQlwtQ1xmUC4KIC5QUAogTm90ZSB0aGF0IGJlY2F1c2UgcGFkZGluZyBpcyBjb2xsZWN0ZWQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY2FwYWJpbGl0eSwgbm90Ci1hbGwgY2FwYWJpbGl0aWVzIGFyZSBvdXRwdXQuICBNYW5kYXRvcnkgcGFkZGluZyBpcyBub3Qgc3VwcG9ydGVkLiAgQmVjYXVzZQorYWxsIGNhcGFiaWxpdGllcyBhcmUgb3V0cHV0LgorTWFuZGF0b3J5IHBhZGRpbmcgaXMgbm90IHN1cHBvcnRlZC4KK0JlY2F1c2UKIFxmQnRlcm1jYXBcZlIgc3RyaW5ncyBhcmUgbm90IGFzIGZsZXhpYmxlLCBpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGNvbnZlcnQKLWEgXGZCdGVybWluZm9cZlIgc3RyaW5nIGNhcGFiaWxpdHkgaW50byBhbiBlcXVpdmFsZW50IFxmQnRlcm1jYXBcZlIgZm9ybWF0LiAgQQotc3Vic2VxdWVudCBjb252ZXJzaW9uIG9mIHRoZSBcZkJ0ZXJtY2FwXGZSIGZpbGUgYmFjayBpbnRvIFxmQnRlcm1pbmZvXGZSIGZvcm1hdAorYSBcZkJ0ZXJtaW5mb1xmUiBzdHJpbmcgY2FwYWJpbGl0eSBpbnRvIGFuIGVxdWl2YWxlbnQgXGZCdGVybWNhcFxmUiBmb3JtYXQuCitBIHN1YnNlcXVlbnQgY29udmVyc2lvbiBvZiB0aGUgXGZCdGVybWNhcFxmUiBmaWxlIGJhY2sgaW50byBcZkJ0ZXJtaW5mb1xmUiBmb3JtYXQKIHdpbGwgbm90IG5lY2Vzc2FyaWx5IHJlcHJvZHVjZSB0aGUgb3JpZ2luYWwgXGZCdGVybWluZm9cZlIKIHNvdXJjZS4KIC5QUApAQCAtMTUzLDMwICsxODksMzYgQEAKIFxmQiVwMSU/JSd4JyU+JXQlcDElJ3knJSslOy8lPnh5XGZSL2NvbmNlcHQKIFxmQiVwMlxmUiBpcyBwcmludGVkIGJlZm9yZSBcZkIlcDEvJXJcZlIvaHAKIC5URQotLlNTIFVzZT0gT3B0aW9uIFstdV0KLVRoZSBcZkItdVxmUiBvcHRpb24gcHJvZHVjZXMgYSBcZkJ0ZXJtaW5mb1xmUiBzb3VyY2UgZGVzY3JpcHRpb24gb2YgdGhlIGZpcnN0CisuU1MgVXNlPSBPcHRpb24gW1wtdV0KK1RoZSBcZkJcLXVcZlIgb3B0aW9uIHByb2R1Y2VzIGEgXGZCdGVybWluZm9cZlIgc291cmNlIGRlc2NyaXB0aW9uIG9mIHRoZSBmaXJzdAogdGVybWluYWwgXGZJdGVybW5hbWVcZlIgd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHN1bSBvZiB0aGUgZGVzY3JpcHRpb25zIGdpdmVuCi1ieSB0aGUgZW50cmllcyBmb3IgdGhlIG90aGVyIHRlcm1pbmFscyBcZkl0ZXJtbmFtZXNcZlIuICBJdCBkb2VzIHRoaXMgYnkKK2J5IHRoZSBlbnRyaWVzIGZvciB0aGUgb3RoZXIgdGVybWluYWxzIFxmSXRlcm1uYW1lc1xmUi4KK0l0IGRvZXMgdGhpcyBieQogYW5hbHl6aW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmaXJzdCBcZkl0ZXJtbmFtZVxmUiBhbmQgdGhlIG90aGVyCiBcZkl0ZXJtbmFtZXNcZlIgYW5kIHByb2R1Y2luZyBhIGRlc2NyaXB0aW9uIHdpdGggXGZCdXNlPVxmUiBmaWVsZHMgZm9yIHRoZQotb3RoZXIgdGVybWluYWxzLiAgSW4gdGhpcyBtYW5uZXIsIGl0IGlzIHBvc3NpYmxlIHRvIHJldHJvZml0IGdlbmVyaWMgdGVybWluZm8KLWVudHJpZXMgaW50byBhIHRlcm1pbmFsJ3MgZGVzY3JpcHRpb24uICBPciwgaWYgdHdvIHNpbWlsYXIgdGVybWluYWxzIGV4aXN0LCBidXQKK290aGVyIHRlcm1pbmFscy4KK0luIHRoaXMgbWFubmVyLCBpdCBpcyBwb3NzaWJsZSB0byByZXRyb2ZpdCBnZW5lcmljIHRlcm1pbmZvCitlbnRyaWVzIGludG8gYSB0ZXJtaW5hbCdzIGRlc2NyaXB0aW9uLgorT3IsIGlmIHR3byBzaW1pbGFyIHRlcm1pbmFscyBleGlzdCwgYnV0CiB3ZXJlIGNvZGVkIGF0IGRpZmZlcmVudCB0aW1lcyBvciBieSBkaWZmZXJlbnQgcGVvcGxlIHNvIHRoYXQgZWFjaCBkZXNjcmlwdGlvbgogaXMgYSBmdWxsIGRlc2NyaXB0aW9uLCB1c2luZyBcZkJASU5GT0NNUEBcZlIgd2lsbCBzaG93IHdoYXQgY2FuIGJlIGRvbmUgdG8gY2hhbmdlCiBvbmUgZGVzY3JpcHRpb24gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIG90aGVyLgogLlBQCiBBIGNhcGFiaWxpdHkgd2lsbCBnZXQgcHJpbnRlZCB3aXRoIGFuIGF0LXNpZ24gKEApIGlmIGl0IG5vIGxvbmdlciBleGlzdHMgaW4gdGhlCiBmaXJzdCBcZkl0ZXJtbmFtZVxmUiwgYnV0IG9uZSBvZiB0aGUgb3RoZXIgXGZJdGVybW5hbWVcZlIgZW50cmllcyBjb250YWlucyBhCi12YWx1ZSBmb3IgaXQuICBBIGNhcGFiaWxpdHkncyB2YWx1ZSBnZXRzIHByaW50ZWQgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdAordmFsdWUgZm9yIGl0LgorQSBjYXBhYmlsaXR5J3MgdmFsdWUgZ2V0cyBwcmludGVkIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QKIFxmSXRlcm1uYW1lXGZSIGlzIG5vdCBmb3VuZCBpbiBhbnkgb2YgdGhlIG90aGVyIFxmSXRlcm1uYW1lXGZSIGVudHJpZXMsIG9yIGlmCiB0aGUgZmlyc3Qgb2YgdGhlIG90aGVyIFxmSXRlcm1uYW1lXGZSIGVudHJpZXMgdGhhdCBoYXMgdGhpcyBjYXBhYmlsaXR5IGdpdmVzIGEKIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGNhcGFiaWxpdHkgdGhhbiB0aGF0IGluIHRoZSBmaXJzdCBcZkl0ZXJtbmFtZVxmUi4KIC5QUAotVGhlIG9yZGVyIG9mIHRoZSBvdGhlciBcZkl0ZXJtbmFtZVxmUiBlbnRyaWVzIGlzIHNpZ25pZmljYW50LiAgU2luY2UgdGhlCi10ZXJtaW5mbyBjb21waWxlciBcZkJ0aWNcZlIgZG9lcyBhIGxlZnQtdG8tcmlnaHQgc2NhbiBvZiB0aGUgY2FwYWJpbGl0aWVzLAorVGhlIG9yZGVyIG9mIHRoZSBvdGhlciBcZkl0ZXJtbmFtZVxmUiBlbnRyaWVzIGlzIHNpZ25pZmljYW50LgorU2luY2UgdGhlCit0ZXJtaW5mbyBjb21waWxlciBcZkJAVElDQFxmUiBkb2VzIGEgbGVmdC10by1yaWdodCBzY2FuIG9mIHRoZSBjYXBhYmlsaXRpZXMsCiBzcGVjaWZ5aW5nIHR3byBcZkJ1c2U9XGZSIGVudHJpZXMgdGhhdCBjb250YWluIGRpZmZlcmluZyBlbnRyaWVzIGZvciB0aGUgc2FtZQogY2FwYWJpbGl0aWVzIHdpbGwgcHJvZHVjZSBkaWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gdGhlIG9yZGVyIHRoYXQgdGhlCi1lbnRyaWVzIGFyZSBnaXZlbiBpbi4gIFxmQkBJTkZPQ01QQFxmUiB3aWxsIGZsYWcgYW55IHN1Y2ggaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4KK2VudHJpZXMgYXJlIGdpdmVuIGluLgorXGZCQElORk9DTVBAXGZSIHdpbGwgZmxhZyBhbnkgc3VjaCBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbgogdGhlIG90aGVyIFxmSXRlcm1uYW1lXGZSIGVudHJpZXMgYXMgdGhleSBhcmUgZm91bmQuCiAuUFAKIEFsdGVybmF0aXZlbHksIHNwZWNpZnlpbmcgYSBjYXBhYmlsaXR5IFxmSWFmdGVyXGZSIGEgXGZCdXNlPVxmUiBlbnRyeSB0aGF0CkBAIC0xODcsMzEgKzIyOSw1MCBAQAogLlBQCiBBbm90aGVyIGVycm9yIHRoYXQgZG9lcyBub3QgY2F1c2UgaW5jb3JyZWN0IGNvbXBpbGVkIGZpbGVzLCBidXQgd2lsbCBzbG93IGRvd24KIHRoZSBjb21waWxhdGlvbiB0aW1lLCBpcyBzcGVjaWZ5aW5nIGV4dHJhIFxmQnVzZT1cZlIgZmllbGRzIHRoYXQgYXJlCi1zdXBlcmZsdW91cy4gIFxmQkBJTkZPQ01QQFxmUiB3aWxsIGZsYWcgYW55IG90aGVyIFxmSXRlcm1uYW1lIHVzZT1cZlIgZmllbGRzIHRoYXQKK3N1cGVyZmx1b3VzLgorXGZCQElORk9DTVBAXGZSIHdpbGwgZmxhZyBhbnkgb3RoZXIgXGZJdGVybW5hbWUgdXNlPVxmUiBmaWVsZHMgdGhhdAogd2VyZSBub3QgbmVlZGVkLgotLlNTIENoYW5naW5nIERhdGFiYXNlcyBbLUEgXGZJZGlyZWN0b3J5XGZSXSBbLUIgXGZJZGlyZWN0b3J5XGZSXQotVGhlIGxvY2F0aW9uIG9mIHRoZSBjb21waWxlZCBcZkJ0ZXJtaW5mb1xmUiBkYXRhYmFzZSBpcyB0YWtlbiBmcm9tIHRoZQotZW52aXJvbm1lbnQgdmFyaWFibGUgXGZCVEVSTUlORk9cZlIgLiAgSWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkLCBvciB0aGUKLXRlcm1pbmFsIGlzIG5vdCBmb3VuZCBpbiB0aGF0IGxvY2F0aW9uLCB0aGUgc3lzdGVtIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlLAotaW4gXGZCQFRFUk1JTkZPQFxmUiwgd2lsbCBiZSB1c2VkLiAgVGhlIG9wdGlvbnMgXGZCLUFcZlIKLWFuZCBcZkItQlxmUiBtYXkgYmUgdXNlZCB0byBvdmVycmlkZSB0aGlzIGxvY2F0aW9uLiAgVGhlIFxmQi1BXGZSIG9wdGlvbiB3aWxsCi1zZXQgXGZCVEVSTUlORk9cZlIgZm9yIHRoZSBmaXJzdCBcZkl0ZXJtbmFtZVxmUiBhbmQgdGhlIFxmQi1CXGZSIG9wdGlvbiB3aWxsCi1zZXQgXGZCVEVSTUlORk9cZlIgZm9yIHRoZSBvdGhlciBcZkl0ZXJtbmFtZXNcZlIuICBXaXRoIHRoaXMsIGl0IGlzIHBvc3NpYmxlIHRvCisuU1MgQ2hhbmdpbmcgRGF0YWJhc2VzIFtcLUEgXGZJZGlyZWN0b3J5XGZSXSBbXC1CIFxmSWRpcmVjdG9yeVxmUl0KK0xpa2Ugb3RoZXIgXGZCbmN1cnNlc1xmUCB1dGlsaXRpZXMsCitASU5GT0NNUEAgbG9va3MgZm9yIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgaW4gc2V2ZXJhbCBwbGFjZXMuCitZb3UgY2FuIHVzZSB0aGUgXGZCVEVSTUlORk9cZlAgYW5kIFxmQlRFUk1JTkZPX0RJUlNcZlAgZW52aXJvbm1lbnQgdmFyaWFibGVzCit0byBvdmVycmlkZSB0aGUgY29tcGlsZWQtaW4gZGVmYXVsdCBsaXN0IG9mIHBsYWNlcyB0byBzZWFyY2gKKyhzZWUgXGZCY3Vyc2VzXGZQKDNYKSBmb3IgZGV0YWlscykuCisuUFAKK1lvdSBjYW4gYWxzbyB1c2UgdGhlIG9wdGlvbnMgXGZCXC1BXGZSCithbmQgXGZCXC1CXGZSIHRvIG92ZXJyaWRlIHRoZSBsaXN0IG9mIHBsYWNlcyB0byBzZWFyY2gKK3doZW4gY29tcGFyaW5nIHRlcm1pbmFsIGRlc2NyaXB0aW9uczoKKy5iUAorVGhlIFxmQlwtQVxmUiBvcHRpb24gc2V0cyB0aGUgbG9jYXRpb24gZm9yIHRoZSBmaXJzdCBcZkl0ZXJtbmFtZVxmUgorLmJQCitUaGUgXGZCXC1CXGZSIG9wdGlvbiBzZXRzIHRoZSBsb2NhdGlvbiBmb3IgdGhlIG90aGVyIFxmSXRlcm1uYW1lc1xmUi4KKy5QUAorVXNpbmcgdGhlc2Ugb3B0aW9ucywgaXQgaXMgcG9zc2libGUgdG8KIGNvbXBhcmUgZGVzY3JpcHRpb25zIGZvciBhIHRlcm1pbmFsIHdpdGggdGhlIHNhbWUgbmFtZSBsb2NhdGVkIGluIHR3byBkaWZmZXJlbnQKLWRhdGFiYXNlcy4gIFRoaXMgaXMgdXNlZnVsIGZvciBjb21wYXJpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgc2FtZSB0ZXJtaW5hbAorZGF0YWJhc2VzLgorRm9yIGluc3RhbmNlLAoreW91IGNhbiB1c2UgdGhpcyBmZWF0dXJlIGZvciBjb21wYXJpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgc2FtZSB0ZXJtaW5hbAogY3JlYXRlZCBieSBkaWZmZXJlbnQgcGVvcGxlLgogLlNTIE90aGVyIE9wdGlvbnMKIC5UUCA1Ci1cZkItMVxmUgotY2F1c2VzIHRoZSBmaWVsZHMgdG8gYmUgcHJpbnRlZCBvdXQgb25lIHRvIGEgbGluZS4gIE90aGVyd2lzZSwKK1xmQlwtMFxmUgorY2F1c2VzIHRoZSBmaWVsZHMgdG8gYmUgcHJpbnRlZCBvbiBvbmUgbGluZSwgd2l0aG91dCB3cmFwcGluZy4KKy5UUCA1CitcZkJcLTFcZlIKK2NhdXNlcyB0aGUgZmllbGRzIHRvIGJlIHByaW50ZWQgb3V0IG9uZSB0byBhIGxpbmUuCitPdGhlcndpc2UsCiB0aGUgZmllbGRzIHdpbGwgYmUgcHJpbnRlZCBzZXZlcmFsIHRvIGEgbGluZSB0byBhIG1heGltdW0gd2lkdGgKIG9mIDYwIGNoYXJhY3RlcnMuCiAuVFAKLVxmQi1hXGZSCitcZkJcLWFcZlIKIHRlbGxzIFxmQkBJTkZPQ01QQFxmUCB0byByZXRhaW4gY29tbWVudGVkLW91dCBjYXBhYmlsaXRpZXMgcmF0aGVyIHRoYW4gZGlzY2FyZGluZwotdGhlbS4gIENhcGFiaWxpdGllcyBhcmUgY29tbWVudGVkIGJ5IHByZWZpeGluZyB0aGVtIHdpdGggYSBwZXJpb2QuCit0aGVtLgorQ2FwYWJpbGl0aWVzIGFyZSBjb21tZW50ZWQgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCBhIHBlcmlvZC4KKy5UUAorXGZCXC1EXGZSCit0ZWxscyBcZkJASU5GT0NNUEBcZlAgdG8gcHJpbnQgdGhlIGRhdGFiYXNlIGxvY2F0aW9ucyB0aGF0IGl0IGtub3dzIGFib3V0LCBhbmQgZXhpdC4KIC5UUCA1Ci1cZkItRVxmUgorXGZCXC1FXGZSCiBEdW1wIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGdpdmVuIHRlcm1pbmFsIGFzIHRhYmxlcywgbmVlZGVkIGluCiB0aGUgQyBpbml0aWFsaXplciBmb3IgYQogVEVSTVRZUEUgc3RydWN0dXJlICh0aGUgdGVybWluYWwgY2FwYWJpbGl0eSBzdHJ1Y3R1cmUgaW4gdGhlIFxmQjx0ZXJtLmg+XGZSKS4KQEAgLTIyMCw1MSArMjgxLDYxIEBACiBUaGUgdGFibGVzIGFyZSBhbGwgZGVjbGFyZWQgc3RhdGljLCBhbmQgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgdHlwZQogYW5kIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRlcm1pbmFsIGVudHJ5LgogLnNwCi1CZWZvcmUgbmN1cnNlcyA1LjAsIHRoZSBzcGxpdCBiZXR3ZWVuIHRoZSBcZkItZVxmUCBhbmQgXGZCLUVcZlAKK0JlZm9yZSBuY3Vyc2VzIDUuMCwgdGhlIHNwbGl0IGJldHdlZW4gdGhlIFxmQlwtZVxmUCBhbmQgXGZCXC1FXGZQCiBvcHRpb25zIHdhcyBub3QgbmVlZGVkOyBidXQgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgbmFtZXMgcmVxdWlyZWQgbWFraW5nCiB0aGUgYXJyYXlzIG9mIHRlcm1pbmFsIGNhcGFiaWxpdGllcyBzZXBhcmF0ZSBmcm9tIHRoZSBURVJNVFlQRSBzdHJ1Y3R1cmUuCiAuVFAgNQotXGZCLWVcZlIKK1xmQlwtZVxmUgogRHVtcCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBnaXZlbiB0ZXJtaW5hbCBhcyBhIEMgaW5pdGlhbGl6ZXIgZm9yIGEKIFRFUk1UWVBFIHN0cnVjdHVyZSAodGhlIHRlcm1pbmFsIGNhcGFiaWxpdHkgc3RydWN0dXJlIGluIHRoZSBcZkI8dGVybS5oPlxmUikuCiBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgZm9yIHByZXBhcmluZyB2ZXJzaW9ucyBvZiB0aGUgY3Vyc2VzIGxpYnJhcnkgaGFyZHdpcmVkCiBmb3IgYSBnaXZlbiB0ZXJtaW5hbCB0eXBlLgogLlRQIDUKLVxmQi1GXGZSCi1jb21wYXJlIHRlcm1pbmZvIGZpbGVzLiAgVGhpcyBhc3N1bWVzIHRoYXQgdHdvIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlCi1maWxlbmFtZXMuICBUaGUgZmlsZXMgYXJlIHNlYXJjaGVkIGZvciBwYWlyd2lzZSBtYXRjaGVzIGJldHdlZW4KK1xmQlwtRlxmUgorY29tcGFyZSB0ZXJtaW5mbyBmaWxlcy4KK1RoaXMgYXNzdW1lcyB0aGF0IHR3byBmb2xsb3dpbmcgYXJndW1lbnRzIGFyZSBmaWxlbmFtZXMuCitUaGUgZmlsZXMgYXJlIHNlYXJjaGVkIGZvciBwYWlyd2lzZSBtYXRjaGVzIGJldHdlZW4KIGVudHJpZXMsIHdpdGggdHdvIGVudHJpZXMgY29uc2lkZXJlZCB0byBtYXRjaCBpZiBhbnkgb2YgdGhlaXIgbmFtZXMgZG8uCiBUaGUgcmVwb3J0IHByaW50ZWQgdG8gc3RhbmRhcmQgb3V0cHV0IGxpc3RzIGVudHJpZXMgd2l0aCBubyBtYXRjaGVzIGluCi10aGUgb3RoZXIgZmlsZSwgYW5kIGVudHJpZXMgd2l0aCBtb3JlIHRoYW4gb25lIG1hdGNoLiAgRm9yIGVudHJpZXMKLXdpdGggZXhhY3RseSBvbmUgbWF0Y2ggaXQgaW5jbHVkZXMgYSBkaWZmZXJlbmNlIHJlcG9ydC4gIE5vcm1hbGx5LAordGhlIG90aGVyIGZpbGUsIGFuZCBlbnRyaWVzIHdpdGggbW9yZSB0aGFuIG9uZSBtYXRjaC4KK0ZvciBlbnRyaWVzCit3aXRoIGV4YWN0bHkgb25lIG1hdGNoIGl0IGluY2x1ZGVzIGEgZGlmZmVyZW5jZSByZXBvcnQuCitOb3JtYWxseSwKIHRvIHJlZHVjZSB0aGUgdm9sdW1lIG9mIHRoZSByZXBvcnQsIHVzZSByZWZlcmVuY2VzIGFyZQogbm90IHJlc29sdmVkIGJlZm9yZSBsb29raW5nIGZvciBkaWZmZXJlbmNlcywgYnV0IHJlc29sdXRpb24gY2FuIGJlIGZvcmNlZAotYnkgYWxzbyBzcGVjaWZ5aW5nIFxmQi1yXGZSLgorYnkgYWxzbyBzcGVjaWZ5aW5nIFxmQlwtclxmUi4KIC5UUCA1Ci1cZkItZlxmUgorXGZCXC1mXGZSCiBEaXNwbGF5IGNvbXBsZXggdGVybWluZm8gc3RyaW5ncyB3aGljaCBjb250YWluIGlmL3RoZW4vZWxzZS9lbmRpZiBleHByZXNzaW9ucwogaW5kZW50ZWQgZm9yIHJlYWRhYmlsaXR5LgogLlRQIDUKLVxmQi1HXGZSCitcZkJcLUdcZlIKIERpc3BsYXkgY29uc3RhbnQgbGl0ZXJhbHMgaW4gZGVjaW1hbCBmb3JtCiByYXRoZXIgdGhhbiB0aGVpciBjaGFyYWN0ZXIgZXF1aXZhbGVudHMuCiAuVFAgNQotXGZCLWdcZlIKK1xmQlwtZ1xmUgogRGlzcGxheSBjb25zdGFudCBjaGFyYWN0ZXIgbGl0ZXJhbHMgaW4gcXVvdGVkIGZvcm0KIHJhdGhlciB0aGFuIHRoZWlyIGRlY2ltYWwgZXF1aXZhbGVudHMuCiAuVFAgNQotXGZCLWlcZlIKK1xmQlwtaVxmUgogQW5hbHl6ZSB0aGUgaW5pdGlhbGl6YXRpb24gKFxmQmlzMVxmUiwgXGZCaXMyXGZSLCBcZkJpczNcZlIpLCBhbmQgcmVzZXQKLShcZkJyczFcZlIsIFxmQnJzMlxmUiwgXGZCcnMzXGZSKSwgc3RyaW5ncyBpbiB0aGUgZW50cnkuICBGb3IgZWFjaCBzdHJpbmcsIHRoZQorKFxmQnJzMVxmUiwgXGZCcnMyXGZSLCBcZkJyczNcZlIpLCBzdHJpbmdzIGluIHRoZSBlbnRyeSwKK2FzIHdlbGwgYXMgdGhvc2UgdXNlZCBmb3Igc3RhcnRpbmcvc3RvcHBpbmcgY3Vyc29yLXBvc2l0aW9uaW5nIG1vZGUKKyhcZkJzbWN1cFxmUCwgXGZCcm1jdXBcZlApIGFzIHdlbGwgYXMgc3RhcnRpbmcvc3RvcHBpbmcga2V5bWFwIG1vZGUKKyhcZkJzbWt4XGZQLCBcZkJybWt4XGZQKS4KKy5JUAorRm9yIGVhY2ggc3RyaW5nLCB0aGUKIGNvZGUgdHJpZXMgdG8gYW5hbHl6ZSBpdCBpbnRvIGFjdGlvbnMgaW4gdGVybXMgb2YgdGhlIG90aGVyIGNhcGFiaWxpdGllcyBpbiB0aGUKLWVudHJ5LCBjZXJ0YWluIFgzLjY0L0lTTyA2NDI5L0VDTUEtNDggY2FwYWJpbGl0aWVzLCBhbmQgY2VydGFpbiBERUMgVlQtc2VyaWVzCitlbnRyeSwgY2VydGFpbiBYMy42NC9JU08gNjQyOS9FQ01BXC00OCBjYXBhYmlsaXRpZXMsIGFuZCBjZXJ0YWluIERFQyBWVC1zZXJpZXMKIHByaXZhdGUgbW9kZXMgKHRoZSBzZXQgb2YgcmVjb2duaXplZCBzcGVjaWFsIHNlcXVlbmNlcyBoYXMgYmVlbiBzZWxlY3RlZCBmb3IKLWNvbXBsZXRlbmVzcyBvdmVyIHRoZSBleGlzdGluZyB0ZXJtaW5mbyBkYXRhYmFzZSkuICBFYWNoIHJlcG9ydCBsaW5lIGNvbnNpc3RzCitjb21wbGV0ZW5lc3Mgb3ZlciB0aGUgZXhpc3RpbmcgdGVybWluZm8gZGF0YWJhc2UpLgorRWFjaCByZXBvcnQgbGluZSBjb25zaXN0cwogb2YgdGhlIGNhcGFiaWxpdHkgbmFtZSwgZm9sbG93ZWQgYnkgYSBjb2xvbiBhbmQgc3BhY2UsIGZvbGxvd2VkIGJ5IGEgcHJpbnRhYmxlCiBleHBhbnNpb24gb2YgdGhlIGNhcGFiaWxpdHkgc3RyaW5nIHdpdGggc2VjdGlvbnMgbWF0Y2hpbmcgcmVjb2duaXplZCBhY3Rpb25zCi10cmFuc2xhdGVkIGludG8ge30tYnJhY2tldGVkIGRlc2NyaXB0aW9ucy4gIEhlcmUgaXMgYSBsaXN0IG9mIHRoZSBERUMvQU5TSQordHJhbnNsYXRlZCBpbnRvIHt9LWJyYWNrZXRlZCBkZXNjcmlwdGlvbnMuCisuSVAKK0hlcmUgaXMgYSBsaXN0IG9mIHRoZSBERUMvQU5TSQogc3BlY2lhbCBzZXF1ZW5jZXMgcmVjb2duaXplZDoKLWkuCiAuVFMKIGNlbnRlciB0YWIoLykgOwogbCBsCkBAIC0yOTEsNDggKzM2Miw1MyBAQAogREVDUE5NL25vcm1hbCBrZXlwYWQgbW9kZQogREVDQU5TSS9lbnRlciBBTlNJIG1vZGUKID0KLUVDTUFbKy1dQU0va2V5Ym9hcmQgYWN0aW9uIG1vZGUKLUVDTUFbKy1dSVJNL2luc2VydCByZXBsYWNlIG1vZGUKLUVDTUFbKy1dU1JNL3NlbmQgcmVjZWl2ZSBtb2RlCi1FQ01BWystXUxOTS9saW5lZmVlZCBtb2RlCitFQ01BWytcLV1BTS9rZXlib2FyZCBhY3Rpb24gbW9kZQorRUNNQVsrXC1dSVJNL2luc2VydCByZXBsYWNlIG1vZGUKK0VDTUFbK1wtXVNSTS9zZW5kIHJlY2VpdmUgbW9kZQorRUNNQVsrXC1dTE5NL2xpbmVmZWVkIG1vZGUKID0KLURFQ1srLV1DS00vYXBwbGljYXRpb24gY3Vyc29yIGtleXMKLURFQ1srLV1BTk0vc2V0IFZUNTIgbW9kZQotREVDWystXUNPTE0vMTMyLWNvbHVtbiBtb2RlCi1ERUNbKy1dU0NMTS9zbW9vdGggc2Nyb2xsCi1ERUNbKy1dU0NOTS9yZXZlcnNlIHZpZGVvIG1vZGUKLURFQ1srLV1PTS9vcmlnaW4gbW9kZQotREVDWystXUFXTS93cmFwYXJvdW5kIG1vZGUKLURFQ1srLV1BUk0vYXV0by1yZXBlYXQgbW9kZQorREVDWytcLV1DS00vYXBwbGljYXRpb24gY3Vyc29yIGtleXMKK0RFQ1srXC1dQU5NL3NldCBWVDUyIG1vZGUKK0RFQ1srXC1dQ09MTS8xMzItY29sdW1uIG1vZGUKK0RFQ1srXC1dU0NMTS9zbW9vdGggc2Nyb2xsCitERUNbK1wtXVNDTk0vcmV2ZXJzZSB2aWRlbyBtb2RlCitERUNbK1wtXU9NL29yaWdpbiBtb2RlCitERUNbK1wtXUFXTS93cmFwYXJvdW5kIG1vZGUKK0RFQ1srXC1dQVJNL2F1dG8tcmVwZWF0IG1vZGUKIC5URQogLnNwCiBJdCBhbHNvIHJlY29nbml6ZXMgYSBTR1IgYWN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gQU5TSS9JU08gNjQyOS9FQ01BIFNldAogR3JhcGhpY3MgUmVuZGl0aW9uLCB3aXRoIHRoZSB2YWx1ZXMgTk9STUFMLCBCT0xELCBVTkRFUkxJTkUsIEJMSU5LLCBhbmQKLVJFVkVSU0UuICBBbGwgYnV0IE5PUk1BTCBtYXkgYmUgcHJlZml4ZWQgd2l0aCBgKycgKHR1cm4gb24pIG9yIGAtJyAodHVybiBvZmYpLgotLlBQCitSRVZFUlNFLgorQWxsIGJ1dCBOT1JNQUwgbWF5IGJlIHByZWZpeGVkIHdpdGggYCsnICh0dXJuIG9uKSBvciBgXC0nICh0dXJuIG9mZikuCisuSVAKIEFuIFNHUjAgZGVzaWduYXRlcyBhbiBlbXB0eSBoaWdobGlnaHQgc2VxdWVuY2UgKGVxdWl2YWxlbnQgdG8ge1NHUjpOT1JNQUx9KS4KIC5UUCA1Ci1cZkItbFxmUgorXGZCXC1sXGZSCiBTZXQgb3V0cHV0IGZvcm1hdCB0byB0ZXJtaW5mby4KIC5UUCA1Ci1cZkItcFxmUgorXGZCXC1wXGZSCiBJZ25vcmUgcGFkZGluZyBzcGVjaWZpY2F0aW9ucyB3aGVuIGNvbXBhcmluZyBzdHJpbmdzLgogLlRQIDUKLVxmQi1xXGZSCitcZkJcLXFcZlIKIE1ha2UgdGhlIGNvbXBhcmlzb24gbGlzdGluZyBzaG9ydGVyIGJ5IG9taXR0aW5nIHN1YmhlYWRpbmdzLCBhbmQgdXNpbmcKLSItIiBmb3IgYWJzZW50IGNhcGFiaWxpdGllcywgIkAiIGZvciBjYW5jZWxlZCByYXRoZXIgdGhhbiAiTlVMTCIuCisiXC0iIGZvciBhYnNlbnQgY2FwYWJpbGl0aWVzLCAiQCIgZm9yIGNhbmNlbGVkIHJhdGhlciB0aGFuICJOVUxMIi4KIC5UUCA1Ci1cZkItUlxmUlxmSXN1YnNldFxmUgotUmVzdHJpY3Qgb3V0cHV0IHRvIGEgZ2l2ZW4gc3Vic2V0LiAgVGhpcyBvcHRpb24gaXMgZm9yIHVzZSB3aXRoIGFyY2hhaWMKK1xmQlwtUlxmUlxmSXN1YnNldFxmUgorUmVzdHJpY3Qgb3V0cHV0IHRvIGEgZ2l2ZW4gc3Vic2V0LgorVGhpcyBvcHRpb24gaXMgZm9yIHVzZSB3aXRoIGFyY2hhaWMKIHZlcnNpb25zIG9mIHRlcm1pbmZvIGxpa2UgdGhvc2Ugb24gU1ZyMSwgVWx0cml4LCBvciBIUC9VWCB0aGF0IGRvIG5vdCBzdXBwb3J0CiB0aGUgZnVsbCBzZXQgb2YgU1ZSNC9YU0kgQ3Vyc2VzIHRlcm1pbmZvOyBhbmQgdmFyaWFudHMgc3VjaCBhcyBBSVgKLXRoYXQgaGF2ZSB0aGVpciBvd24gZXh0ZW5zaW9ucyBpbmNvbXBhdGlibGUgd2l0aCBTVnI0L1hTSS4gIEF2YWlsYWJsZSB0ZXJtaW5mbwordGhhdCBoYXZlIHRoZWlyIG93biBleHRlbnNpb25zIGluY29tcGF0aWJsZSB3aXRoIFNWcjQvWFNJLgorLklQCitBdmFpbGFibGUgdGVybWluZm8KIHN1YnNldHMgYXJlICJTVnIxIiwgIlVsdHJpeCIsICJIUCIsIGFuZCAiQUlYIjsgc2VlIFxmQnRlcm1pbmZvXGZSKFwqbikgZm9yCi1kZXRhaWxzLiAgWW91IGNhbiBhbHNvIGNob29zZSB0aGUgc3Vic2V0ICJCU0QiIHdoaWNoIHNlbGVjdHMgb25seSBjYXBhYmlsaXRpZXMKK2RldGFpbHMuCitZb3UgY2FuIGFsc28gY2hvb3NlIHRoZSBzdWJzZXQgIkJTRCIgd2hpY2ggc2VsZWN0cyBvbmx5IGNhcGFiaWxpdGllcwogd2l0aCB0ZXJtY2FwIGVxdWl2YWxlbnRzIHJlY29nbml6ZWQgYnkgNC40QlNELgogLlRQCi1cZkItcyBcZlJcZklbZHxpfGx8Y11cZlIKLVRoZSBcZkItc1xmUiBvcHRpb24gc29ydHMgdGhlIGZpZWxkcyB3aXRoaW4gZWFjaCB0eXBlIGFjY29yZGluZyB0byB0aGUgYXJndW1lbnQKK1xmQlwtcyBcZlJcZklbZHxpfGx8Y11cZlIKK1RoZSBcZkJcLXNcZlIgb3B0aW9uIHNvcnRzIHRoZSBmaWVsZHMgd2l0aGluIGVhY2ggdHlwZSBhY2NvcmRpbmcgdG8gdGhlIGFyZ3VtZW50CiBiZWxvdzoKIC5icgogLlJTIDUKQEAgLTM1MCw3MCArNDI2LDczIEBACiBzb3J0IGJ5IHRoZSBcZkl0ZXJtY2FwXGZSIG5hbWUuCiAuUkUKIC5JUAotSWYgdGhlIFxmQi1zXGZSIG9wdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZSBmaWVsZHMgcHJpbnRlZCBvdXQgd2lsbCBiZQorSWYgdGhlIFxmQlwtc1xmUiBvcHRpb24gaXMgbm90IGdpdmVuLCB0aGUgZmllbGRzIHByaW50ZWQgb3V0IHdpbGwgYmUKIHNvcnRlZCBhbHBoYWJldGljYWxseSBieSB0aGUgXGZCdGVybWluZm9cZlIgbmFtZSB3aXRoaW4gZWFjaCB0eXBlLAotZXhjZXB0IGluIHRoZSBjYXNlIG9mIHRoZSBcZkItQ1xmUiBvciB0aGUgXGZCLUxcZlIgb3B0aW9ucywgd2hpY2ggY2F1c2UgdGhlCitleGNlcHQgaW4gdGhlIGNhc2Ugb2YgdGhlIFxmQlwtQ1xmUiBvciB0aGUgXGZCXC1MXGZSIG9wdGlvbnMsIHdoaWNoIGNhdXNlIHRoZQogc29ydGluZyB0byBiZSBkb25lIGJ5IHRoZSBcZkJ0ZXJtY2FwXGZSIG5hbWUgb3IgdGhlIGxvbmcgQyB2YXJpYWJsZQogbmFtZSwgcmVzcGVjdGl2ZWx5LgogLlRQIDUKLVxmQi1UXGZSCitcZkJcLVRcZlIKIGVsaW1pbmF0ZXMgc2l6ZS1yZXN0cmljdGlvbnMgb24gdGhlIGdlbmVyYXRlZCB0ZXh0LgogVGhpcyBpcyBtYWlubHkgdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBhbmFseXNpcywgc2luY2UgdGhlIGNvbXBpbGVkCiBkZXNjcmlwdGlvbnMgYXJlIGxpbWl0ZWQgKGUuZy4sIDEwMjMgZm9yIHRlcm1jYXAsIDQwOTYgZm9yIHRlcm1pbmZvKS4KIC5UUAotXGZCLXRcZlIKLXRlbGxzIFxmQnRpY1xmUCB0byBkaXNjYXJkIGNvbW1lbnRlZC1vdXQgY2FwYWJpbGl0aWVzLgorXGZCXC10XGZSCit0ZWxscyBcZkJAVElDQFxmUCB0byBkaXNjYXJkIGNvbW1lbnRlZC1vdXQgY2FwYWJpbGl0aWVzLgogTm9ybWFsbHkgd2hlbiB0cmFuc2xhdGluZyBmcm9tIHRlcm1pbmZvIHRvIHRlcm1jYXAsCiB1bnRyYW5zbGF0YWJsZSBjYXBhYmlsaXRpZXMgYXJlIGNvbW1lbnRlZC1vdXQuCiAuVFAgNQotXGZCLVVcZlIKK1xmQlwtVVxmUgogdGVsbHMgXGZCQElORk9DTVBAXGZQIHRvIG5vdCBwb3N0LXByb2Nlc3MgdGhlIGRhdGEgYWZ0ZXIgcGFyc2luZyB0aGUgc291cmNlIGZpbGUuCiBUaGlzIGZlYXR1cmUgaGVscHMgd2hlbiBjb21wYXJpbmcgdGhlIGFjdHVhbCBjb250ZW50cyBvZiB0d28gc291cmNlIGZpbGVzLAogc2luY2UgaXQgZXhjbHVkZXMgdGhlIGluZmVyZW5jZXMgdGhhdCBcZkJASU5GT0NNUEBcZlAgbWFrZXMgdG8gZmlsbCBpbiBtaXNzaW5nCiBkYXRhLgogLlRQIDUKLVxmQi1WXGZSCitcZkJcLVZcZlIKIHJlcG9ydHMgdGhlIHZlcnNpb24gb2YgbmN1cnNlcyB3aGljaCB3YXMgdXNlZCBpbiB0aGlzIHByb2dyYW0sIGFuZCBleGl0cy4KIC5UUCA1Ci1cZkItdlxmUiBcZkluXGZSCitcZkJcLXZcZlIgXGZJblxmUgogcHJpbnRzIG91dCB0cmFjaW5nIGluZm9ybWF0aW9uIG9uIHN0YW5kYXJkIGVycm9yIGFzIHRoZSBwcm9ncmFtIHJ1bnMuCiBIaWdoZXIgdmFsdWVzIG9mIG4gaW5kdWNlIGdyZWF0ZXIgdmVyYm9zaXR5LgogLlRQIDUKLVxmQi13XGZSIFxmSXdpZHRoXGZSCitcZkJcLXdcZlIgXGZJd2lkdGhcZlIKIGNoYW5nZXMgdGhlIG91dHB1dCB0byBcZkl3aWR0aFxmUiBjaGFyYWN0ZXJzLgogLlRQCi1cZkIteFxmUgorXGZCXC14XGZSCiBwcmludCBpbmZvcm1hdGlvbiBmb3IgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcy4KIFRoZXNlIGFyZSBleHRlbnNpb25zIHRvIHRoZSB0ZXJtaW5mbyByZXBlcnRvaXJlIHdoaWNoIGNhbiBiZSBsb2FkZWQKLXVzaW5nIHRoZSBcZkIteFxmUiBvcHRpb24gb2YgXGZCdGljXGZQLgordXNpbmcgdGhlIFxmQlwteFxmUiBvcHRpb24gb2YgXGZCQFRJQ0BcZlAuCiAuU0ggRklMRVMKIC5UUCAyMAogXCpkCiBDb21waWxlZCB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBkYXRhYmFzZS4KIC5TSCBFWFRFTlNJT05TCiBUaGUKLVxmQi1FXGZSLAotXGZCLUZcZlIsCi1cZkItR1xmUiwKLVxmQi1SXGZSLAotXGZCLVRcZlIsCi1cZkItVlxmUiwKLVxmQi1hXGZSLAotXGZCLWVcZlIsCi1cZkItZlxmUiwKLVxmQi1nXGZSLAotXGZCLWlcZlIsCi1cZkItbFxmUiwKLVxmQi1wXGZSLAotXGZCLXFcZlIgYW5kCi1cZkItdFxmUgorXGZCXC0wXGZSLAorXGZCXC0xXGZSLAorXGZCXC1FXGZSLAorXGZCXC1GXGZSLAorXGZCXC1HXGZSLAorXGZCXC1SXGZSLAorXGZCXC1UXGZSLAorXGZCXC1WXGZSLAorXGZCXC1hXGZSLAorXGZCXC1lXGZSLAorXGZCXC1mXGZSLAorXGZCXC1nXGZSLAorXGZCXC1pXGZSLAorXGZCXC1sXGZSLAorXGZCXC1wXGZSLAorXGZCXC1xXGZSIGFuZAorXGZCXC10XGZSCiBvcHRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGluIFNWcjQgY3Vyc2VzLgogLlBQCi1UaGUgXGZCLXJcZlIgb3B0aW9uJ3Mgbm90aW9uIG9mIGB0ZXJtY2FwJyBjYXBhYmlsaXRpZXMgaXMgU3lzdGVtIFYgUmVsZWFzZSA0J3MuCi1BY3R1YWwgQlNEIGN1cnNlcyB2ZXJzaW9ucyB3aWxsIGhhdmUgYSBtb3JlIHJlc3RyaWN0ZWQgc2V0LiAgVG8gc2VlIG9ubHkgdGhlCi00LjRCU0Qgc2V0LCB1c2UgXGZCLXJcZlIgXGZCLVJCU0RcZlIuCitUaGUgXGZCXC1yXGZSIG9wdGlvbidzIG5vdGlvbiBvZiBgdGVybWNhcCcgY2FwYWJpbGl0aWVzIGlzIFN5c3RlbSBWIFJlbGVhc2UgNCdzLgorQWN0dWFsIEJTRCBjdXJzZXMgdmVyc2lvbnMgd2lsbCBoYXZlIGEgbW9yZSByZXN0cmljdGVkIHNldC4KK1RvIHNlZSBvbmx5IHRoZQorNC40QlNEIHNldCwgdXNlIFxmQlwtclxmUiBcZkJcLVJCU0RcZlIuCiAuU0ggQlVHUwotVGhlIFxmQi1GXGZSIG9wdGlvbiBvZiBcZkJASU5GT0NNUEBcZlIoMU0pIHNob3VsZCBiZSBhIFxmQkBUT0VAXGZSKDFNKSBtb2RlLgorVGhlIFxmQlwtRlxmUiBvcHRpb24gb2YgXGZCQElORk9DTVBAXGZSKDFNKSBzaG91bGQgYmUgYSBcZkJAVE9FQFxmUigxTSkgbW9kZS4KIC5TSCBTRUUgQUxTTwogXGZCQENBUFRPSU5GT0BcZlIoMU0pLAogXGZCQElORk9UT0NBUEBcZlIoMU0pLApAQCAtNDIxLDYgKzUwMCw4IEBACiBcZkJAVE9FQFxmUigxTSksCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCdGVybWluZm9cZlIoXCpuKS4KKy5zcAoraHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKIC5QUAogVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgogdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgpAQCAtNDI5LDkgKzUxMCwzIEBACiBhbmQKIC5icgogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vaW5mb3RvY2FwLjFtIGIvbWFuL2luZm90b2NhcC4xbQppbmRleCAxOTE2MGI0Li5kOWI0NGYwIDEwMDY0NAotLS0gYS9tYW4vaW5mb3RvY2FwLjFtCisrKyBiL21hbi9pbmZvdG9jYXAuMW0KQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNDAgKzI3LDQyIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBpbmZvdG9jYXAuMW0sdiAxLjggMjAwNi8xMi8yNCAyMDoxMzo1NiB0b20gRXhwICQKKy5cIiAkSWQ6IGluZm90b2NhcC4xbSx2IDEuMTEgMjAxMC8xMi8wNCAxODozODo1NSB0b20gRXhwICQKIC5USCBASU5GT1RPQ0FQQCAxTSAiIgogLmRzIG4gNQogLmRzIGQgQFRFUk1JTkZPQAogLlNIIE5BTUUKLVxmQkBJTkZPVE9DQVBAXGZSIC0gY29udmVydCBhIFxmSXRlcm1pbmZvXGZSIGRlc2NyaXB0aW9uIGludG8gYSBcZkl0ZXJtY2FwXGZSIGRlc2NyaXB0aW9uCitcZkJASU5GT1RPQ0FQQFxmUiBcLSBjb252ZXJ0IGEgXGZJdGVybWluZm9cZlIgZGVzY3JpcHRpb24gaW50byBhIFxmSXRlcm1jYXBcZlIgZGVzY3JpcHRpb24KIC5TSCBTWU5PUFNJUwotXGZCQElORk9UT0NBUEBcZlIgW1xmQi12XGZSXGZJblxmUiBcZkl3aWR0aFxmUl0gIFtcZkItVlxmUl0gW1xmQi0xXGZSXSBbXGZCLXdcZlIgXGZJd2lkdGhcZlJdIFxmSWZpbGVcZlIgLiAuIC4KK1xmQkBJTkZPVE9DQVBAXGZSIFtcZkJcLXZcZlJcZkluXGZSIFxmSXdpZHRoXGZSXSAgW1xmQlwtVlxmUl0gW1xmQlwtMVxmUl0gW1xmQlwtd1xmUiBcZkl3aWR0aFxmUl0gXGZJZmlsZVxmUiAuIC4gLgogLlNIIERFU0NSSVBUSU9OCi1cZkJASU5GT1RPQ0FQQFxmUiBsb29rcyBpbiBcZklmaWxlXGZSIGZvciBcZkJ0ZXJtaW5mb1xmUiBkZXNjcmlwdGlvbnMuICBGb3IgZWFjaAotb25lIGZvdW5kLCBhbiBlcXVpdmFsZW50IFxmQnRlcm1jYXBcZlIgZGVzY3JpcHRpb24gaXMgd3JpdHRlbiB0byBzdGFuZGFyZAotb3V0cHV0LiAgVGVybWluZm8gXGZCdXNlXGZSIGNhcGFiaWxpdGllcyBhcmUgdHJhbnNsYXRlZCBkaXJlY3RseSB0byB0ZXJtY2FwCitcZkJASU5GT1RPQ0FQQFxmUiBsb29rcyBpbiBlYWNoIGdpdmVuIHRleHQKK1xmSWZpbGVcZlIgZm9yIFxmQnRlcm1pbmZvXGZSIGRlc2NyaXB0aW9ucy4KK0ZvciBlYWNoIHRlcm1pbmZvIGRlc2NyaXB0aW9uIGZvdW5kLAorYW4gZXF1aXZhbGVudCBcZkJ0ZXJtY2FwXGZSIGRlc2NyaXB0aW9uIGlzIHdyaXR0ZW4gdG8gc3RhbmRhcmQgb3V0cHV0LgorVGVybWluZm8gXGZCdXNlXGZSIGNhcGFiaWxpdGllcyBhcmUgdHJhbnNsYXRlZCBkaXJlY3RseSB0byB0ZXJtY2FwCiBcZkJ0Y1xmUiBjYXBhYmlsaXRpZXMuCiAuVFAgNQotXGZCLXZcZlIKK1xmQlwtdlxmUgogcHJpbnQgb3V0IHRyYWNpbmcgaW5mb3JtYXRpb24gb24gc3RhbmRhcmQgZXJyb3IgYXMgdGhlIHByb2dyYW0gcnVucy4KIC5UUCA1Ci1cZkItVlxmUgorXGZCXC1WXGZSCiBwcmludCBvdXQgdGhlIHZlcnNpb24gb2YgdGhlIHByb2dyYW0gaW4gdXNlIG9uIHN0YW5kYXJkIGVycm9yIGFuZCBleGl0LgogLlRQIDUKLVxmQi0xXGZSCi1jYXVzZSB0aGUgZmllbGRzIHRvIHByaW50IG91dCBvbmUgdG8gYSBsaW5lLiAgT3RoZXJ3aXNlLCB0aGUgZmllbGRzCi13aWxsIGJlIHByaW50ZWQgc2V2ZXJhbCB0byBhIGxpbmUgdG8gYSBtYXhpbXVtIHdpZHRoIG9mIDYwCi1jaGFyYWN0ZXJzLgorXGZCXC0xXGZSCitjYXVzZSB0aGUgZmllbGRzIHRvIHByaW50IG91dCBvbmUgdG8gYSBsaW5lLgorT3RoZXJ3aXNlLCB0aGUgZmllbGRzCit3aWxsIGJlIHByaW50ZWQgc2V2ZXJhbCB0byBhIGxpbmUgdG8gYSBtYXhpbXVtIHdpZHRoIG9mIDYwIGNoYXJhY3RlcnMuCiAuVFAgNQotXGZCLXdcZlIKK1xmQlwtd1xmUgogY2hhbmdlIHRoZSBvdXRwdXQgdG8gXGZJd2lkdGhcZlIgY2hhcmFjdGVycy4KIC5TSCBGSUxFUwogLlRQIDIwCiBcKmQKIENvbXBpbGVkIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGRhdGFiYXNlLgogLlNIIE5PVEVTCi1UaGlzIHV0aWxpdHkgaXMgYWN0dWFsbHkgYSBsaW5rIHRvIFxmSUBUSUNAXGZSLCBydW5uaW5nIGluIFxmSS1DXGZSIG1vZGUuCi1Zb3UgY2FuIHVzZSBvdGhlciBcZklAVElDQFxmUiBvcHRpb25zIHN1Y2ggYXMgXGZCLWZcZlIgYW5kICBcZkIteFxmUi4KK1RoaXMgdXRpbGl0eSBpcyBhY3R1YWxseSBhIGxpbmsgdG8gXGZJQFRJQ0BcZlIsIHJ1bm5pbmcgaW4gXGZJXC1DXGZSIG1vZGUuCitZb3UgY2FuIHVzZSBvdGhlciBcZklAVElDQFxmUiBvcHRpb25zIHN1Y2ggYXMgXGZCXC1mXGZSIGFuZCAgXGZCXC14XGZSLgogLlNIIFNFRSBBTFNPCiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCQFRJQ0BcZlIoMU0pLApAQCAtNjksOSArNzEsOCBAQAogLlBQCiBUaGlzIGRlc2NyaWJlcyBcZkJuY3Vyc2VzXGZSCiB2ZXJzaW9uIEBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAgKHBhdGNoIEBOQ1VSU0VTX1BBVENIQCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKKy5TSCBBVVRIT1IKK0VyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPgorYW5kCisuYnIKK1Rob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KZGlmZiAtLWdpdCBhL21hbi9rZXlfZGVmaW5lZC4zeCBiL21hbi9rZXlfZGVmaW5lZC4zeAppbmRleCBkNzQxM2RhLi5kYjZjNTMxIDEwMDY0NAotLS0gYS9tYW4va2V5X2RlZmluZWQuM3gKKysrIGIvbWFuL2tleV9kZWZpbmVkLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNyArMjgsNyBAQAogLlwiCiAuXCIgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDIwMDMKIC5cIgotLlwiICRJZDoga2V5X2RlZmluZWQuM3gsdiAxLjQgMjAwNi8wMi8yNSAyMTo1MDowMSB0b20gRXhwICQKKy5cIiAkSWQ6IGtleV9kZWZpbmVkLjN4LHYgMS42IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEgga2V5X2RlZmluZWQgM1ggIiIKIC5TSCBOQU1FCiBcZkJrZXlfZGVmaW5lZFxmUCBcLSBjaGVjayBpZiBhIGtleWNvZGUgaXMgZGVmaW5lZApAQCAtNDMsNyArNDMsNyBAQAogLlNIIFJFVFVSTiBWQUxVRQogSWYgdGhlIHN0cmluZyBpcyBib3VuZCB0byBhIGtleWNvZGUsIGl0cyB2YWx1ZSAoZ3JlYXRlciB0aGFuIHplcm8pIGlzIHJldHVybmVkLgogSWYgbm8ga2V5Y29kZSBpcyBib3VuZCwgemVybyBpcyByZXR1cm5lZC4KLUlmIHRoZSBzdHJpbmcgY29uZmxpY3RzIHdpdGggbG9uZ2VyIHN0cmluZ3Mgd2hpY2ggYXJlIGJvdW5kIHRvIGtleXMsIC0xIGlzIHJldHVybmVkLgorSWYgdGhlIHN0cmluZyBjb25mbGljdHMgd2l0aCBsb25nZXIgc3RyaW5ncyB3aGljaCBhcmUgYm91bmQgdG8ga2V5cywgXC0xIGlzIHJldHVybmVkLgogLlNIIFBPUlRBQklMSVRZCiBUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3Qgc3VwcG9ydGVkIG9uCiBWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0CkBAIC01Miw5ICs1MiwzIEBACiBcZkJkZWZpbmVfa2V5XGZSKDNYKS4KIC5TSCBBVVRIT1IKIFRob21hcyBEaWNrZXkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9rZXlib3VuZC4zeCBiL21hbi9rZXlib3VuZC4zeAppbmRleCA5M2UxNzk0Li41ZGQwODNhIDEwMDY0NAotLS0gYS9tYW4va2V5Ym91bmQuM3gKKysrIGIvbWFuL2tleWJvdW5kLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsOCArMjgsOCBAQAogLlwiCiAuXCIgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTkKIC5cIgotLlwiICRJZDoga2V5Ym91bmQuM3gsdiAxLjYgMjAwNi8wMi8yNSAyMTo0NzowNiB0b20gRXhwICQKLS5USCBrZXlvayAzWCAiIgorLlwiICRJZDoga2V5Ym91bmQuM3gsdiAxLjggMjAxMC8xMi8wNCAxODo0OToyMCB0b20gRXhwICQKKy5USCBrZXlib3VuZCAzWCAiIgogLlNIIE5BTUUKIFxmQmtleWJvdW5kXGZQIFwtIHJldHVybiBkZWZpbml0aW9uIG9mIGtleWNvZGUKIC5TSCBTWU5PUFNJUwpAQCAtNTYsOSArNTYsMyBAQAogXGZCa2V5b2tcZlIoM1gpLgogLlNIIEFVVEhPUgogVGhvbWFzIERpY2tleS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2tleW9rLjN4IGIvbWFuL2tleW9rLjN4CmluZGV4IDA4YzJhMjcuLjhlYWY5YTMgMTAwNjQ0Ci0tLSBhL21hbi9rZXlvay4zeAorKysgYi9tYW4va2V5b2suM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw3ICsyOCw3IEBACiAuXCIKIC5cIiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NwogLlwiCi0uXCIgJElkOiBrZXlvay4zeCx2IDEuOSAyMDA2LzAyLzI1IDIxOjQ3OjA2IHRvbSBFeHAgJAorLlwiICRJZDoga2V5b2suM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEgga2V5b2sgM1ggIiIKIC5TSCBOQU1FCiBcZkJrZXlva1xmUCBcLSBlbmFibGUgb3IgZGlzYWJsZSBhIGtleWNvZGUKQEAgLTQwLDcgKzQwLDcgQEAKIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBjdXJzZXMgbGlicmFyeS4KIEl0IHBlcm1pdHMgYW4gYXBwbGljYXRpb24gdG8gZGlzYWJsZSBzcGVjaWZpYyBrZXljb2RlcywgcmF0aGVyIHRoYW4KIHVzZSB0aGUgXGZJa2V5cGFkXGZQIGZ1bmN0aW9uIHRvIGRpc2FibGUgYWxsIGtleWNvZGVzLgotS2V5cyB0aGF0IGhhdmUgYmVlbiBkaXNhYmxlZCBjYW4gYmUgcmVlbmFibGVkLgorS2V5cyB0aGF0IGhhdmUgYmVlbiBkaXNhYmxlZCBjYW4gYmUgcmUtZW5hYmxlZC4KIC5TSCBSRVRVUk4gVkFMVUUKIFRoZSBrZXljb2RlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8sIGVsc2UgRVJSIGlzIHJldHVybmVkLgogSWYgaXQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQga2V5LCB0aGVuIEVSUiBpcyByZXR1cm5lZC4KQEAgLTU1LDkgKzU1LDMgQEAKIFxmQmRlZmluZV9rZXlcZlIoM1gpLgogLlNIIEFVVEhPUgogVGhvbWFzIERpY2tleS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL2xlZ2FjeV9jb2RpbmcuM3ggYi9tYW4vbGVnYWN5X2NvZGluZy4zeAppbmRleCA0MmM0OWZlLi5mYWJiNjA3IDEwMDY0NAotLS0gYS9tYW4vbGVnYWN5X2NvZGluZy4zeAorKysgYi9tYW4vbGVnYWN5X2NvZGluZy4zeApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAyMDA1LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI4LDcgKzI4LDcgQEAKIC5cIgogLlwiIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQogLlwiCi0uXCIgJElkOiBsZWdhY3lfY29kaW5nLjN4LHYgMS4zIDIwMDYvMTIvMjQgMTU6MTI6NTUgdG9tIEV4cCAkCisuXCIgJElkOiBsZWdhY3lfY29kaW5nLjN4LHYgMS40IDIwMTAvMTIvMDQgMTg6NDk6MjAgdG9tIEV4cCAkCiAuVEggbGVnYWN5X2NvZGluZyAzWCAiIgogLlNIIE5BTUUKIFxmQnVzZV9sZWdhY3lfY29kaW5nXGZSIFwtIHVzZSB0ZXJtaW5hbCdzIGRlZmF1bHQgY29sb3JzCkBAIC03NCw5ICs3NCwzIEBACiBcZkJ1bmN0cmxcZlIuCiAuU0ggQVVUSE9SCiBUaG9tYXMgRGlja2V5ICh0byBzdXBwb3J0IGx5bngncyBmb250LXN3aXRjaGluZyBmZWF0dXJlKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21hbl9kYi5yZW5hbWVzIGIvbWFuL21hbl9kYi5yZW5hbWVzCmluZGV4IGZmOTFlZWMuLjI3NmQ3YmEgMTAwNjQ0Ci0tLSBhL21hbi9tYW5fZGIucmVuYW1lcworKysgYi9tYW4vbWFuX2RiLnJlbmFtZXMKQEAgLTEsNSArMSw1IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yNSw3ICsyNSw3IEBACiAjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKICMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jICRJZDogbWFuX2RiLnJlbmFtZXMsdiAwLjQxIDIwMDgvMTAvMjUgMjM6MjQ6MDMgdG9tIEV4cCAkCisjICRJZDogbWFuX2RiLnJlbmFtZXMsdiAxLjQ4IDIwMTUvMDQvMTggMTY6NDc6NTUgdG9tIEV4cCAkCiAjIE1hbnVhbC1wYWdlIHJlbmFtaW5ncyBmb3IgdGhlIG1hbl9kYiBwcm9ncmFtCiAjCiAjIEZpbGVzOgpAQCAtODIsNiArODIsNyBAQAogY3Vyc19zY3JfZHVtcC4zeAkJc2NyX2R1bXAuM25jdXJzZXMKIGN1cnNfc2Nyb2xsLjN4CQkJc2Nyb2xsLjNuY3Vyc2VzCiBjdXJzX3Nsay4zeAkJCXNsay4zbmN1cnNlcworY3Vyc19zcF9mdW5jcy4zeAkJc3BfZnVuY3MuM25jdXJzZXMKIGN1cnNfdGVybWF0dHJzLjN4CQl0ZXJtYXR0cnMuM25jdXJzZXMKIGN1cnNfdGVybWNhcC4zeAkJCXRlcm1jYXAuM25jdXJzZXMKIGN1cnNfdGVybWluZm8uM3gJCXRlcm1pbmZvLjNuY3Vyc2VzCkBAIC04OSw2ICs5MCw3IEBACiBjdXJzX3RvdWNoLjN4CQkJdG91Y2guM25jdXJzZXMKIGN1cnNfdHJhY2UuM3gJCQl0cmFjZS4zbmN1cnNlcwogY3Vyc191dGlsLjN4CQkJdXRpbC4zbmN1cnNlcworY3Vyc192YXJpYWJsZXMuM3gJCWN1cnNlc192YXJpYWJsZXMuM25jdXJzZXMKIGN1cnNfd2luZG93LjN4CQkJd2luZG93LjNuY3Vyc2VzCiBjdXJzZXMuM3gJCQluY3Vyc2VzLjNuY3Vyc2VzCiBkZWZhdWx0X2NvbG9ycy4zeAkJZGVmYXVsdF9jb2xvcnMuM25jdXJzZXMKQEAgLTExNSw2ICsxMTcsNyBAQAogZm9ybV9wb3N0LjN4CQkJcG9zdC4zZm9ybQogZm9ybV9yZXF1ZXN0bmFtZS4zeAkJcmVxdWVzdG5hbWUuM2Zvcm0KIGZvcm1fdXNlcnB0ci4zeAkJCXVzZXJwdHIuM2Zvcm0KK2Zvcm1fdmFyaWFibGVzLjN4CQlmb3JtX3ZhcmlhYmxlcy4zZm9ybQogZm9ybV93aW4uM3gJCQl3aW4uM2Zvcm0KIGluZm9jbXAuMW0JCQlpbmZvY21wLjEKIGluZm90b2NhcC4xbQkJCWluZm90b2NhcC4xCkBAIC0xNTIsOCArMTU1LDEwIEBACiByZXNpemV0ZXJtLjN4CQkJcmVzaXpldGVybS4zbmN1cnNlcwogc2NhbmYuM3MJCQlzY2FuZi4zCiBzeXN0ZW0uM3MJCQlzeXN0ZW0uMwordGFicy4xCQkJCXRhYnMuMQogdGVybS41CQkJCXRlcm0uNQogdGVybS43CQkJCXRlcm0uNwordGVybV92YXJpYWJsZXMuM3gJCXRlcm1pbmZvX3ZhcmlhYmxlcy4zbmN1cnNlcwogdGVybWluZm8uNQkJCXRlcm1pbmZvLjUKIHRlcm1pbmZvLlxcXCpuCQkJdGVybWluZm8uNQogdGljLjFtCQkJCXRpYy4xCkBAIC0xNzQsNCArMTc5LDE5IEBACiByZWdjb21wLjN4CQkJcmVnY29tcC4zCiByZWdleGVjLjN4CQkJcmVnZXhlYy4zCiAjCisjIFRoZSBmb2xsb3dpbmcgYXJlIHBhZ2VzIHdoaWNoIG1heSBiZSBnZW5lcmF0ZWQgZGVwZW5kaW5nIG9uIGNvbmZpZ3VyYXRpb246CithZGFjdXJzZXMtY29uZmlnLjEJCWFkYWN1cnNlcy1jb25maWcuMQorYWRhY3Vyc2VzNS1jb25maWcuMQkJYWRhY3Vyc2VzNS1jb25maWcuMQorYWRhY3Vyc2VzNi1jb25maWcuMQkJYWRhY3Vyc2VzNi1jb25maWcuMQorIworbmN1cnNlczUtY29uZmlnLjEJCW5jdXJzZXM1LWNvbmZpZy4xCituY3Vyc2VzdzUtY29uZmlnLjEJCW5jdXJzZXN3NS1jb25maWcuMQorbmN1cnNlc3Q1LWNvbmZpZy4xCQluY3Vyc2VzdDUtY29uZmlnLjEKK25jdXJzZXN0dzUtY29uZmlnLjEJCW5jdXJzZXN0dzUtY29uZmlnLjEKKyMKK25jdXJzZXM2LWNvbmZpZy4xCQluY3Vyc2VzNi1jb25maWcuMQorbmN1cnNlc3c2LWNvbmZpZy4xCQluY3Vyc2VzdzYtY29uZmlnLjEKK25jdXJzZXN0Ni1jb25maWcuMQkJbmN1cnNlc3Q2LWNvbmZpZy4xCituY3Vyc2VzdHc2LWNvbmZpZy4xCQluY3Vyc2VzdHc2LWNvbmZpZy4xCisjCiAjIHZpbGU6Y2ZnbW9kZQpkaWZmIC0tZ2l0IGEvbWFuL21hbmh0bWwuYWxpYXNlcyBiL21hbi9tYW5odG1sLmFsaWFzZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRhZTA0NwotLS0gL2Rldi9udWxsCisrKyBiL21hbi9tYW5odG1sLmFsaWFzZXMKQEAgLTAsMCArMSwxNiBAQAorIyAkSWQ6IG1hbmh0bWwuYWxpYXNlcyx2IDEuMSAyMDEzLzEyLzIxIDIxOjQ0OjUyIHRvbSBFeHAgJAorIyBJdGVtcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBsaW5rZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbWFucGFnZXMgYnkgbWFuMmh0bWwKK2FkZGNoKDNYKQkJY3Vyc19hZGRjaCgzWCkKK2RlbHNjcmVlbigzWCkJCWN1cnNfaW5pdHNjcigzWCkKK2ZpbHRlcigzWCkJCWN1cnNfdXRpbCgzWCkKK2Zvcm1fZmllbGR0eXBlKDNYKQlmb3JtX2ZpZWxkdHlwZSgzWCkKK2dldGNoKDNYKQkJY3Vyc19nZXRjaCgzWCkKK2luZm9jbXAoMSkJCWluZm9jbXAoMU0pCitpbml0c2NyKDNYKQkJY3Vyc19pbml0c2NyKDNYKQorbmV3dGVybSgzWCkJCWN1cnNfaW5pdHNjcigzWCkKK3NldF9maWVsZHR5cGUoM1gpCWZvcm1fZmllbGR0eXBlKDNYKQorc2V0X3Rlcm0oM1gpCQljdXJzX2luaXRzY3IoM1gpCitzZXR1cHRlcm0oM1gpCQljdXJzX3Rlcm1pbmZvKDNYKQordGljKDEpCQkJdGljKDFNKQordXNlX2VudigzWCkJCWN1cnNfdXRpbCgzWCkKK3ZpZHB1dHMoM1gpCQljdXJzX3Rlcm1pbmZvKDNYKQpkaWZmIC0tZ2l0IGEvbWFuL21hbmh0bWwuZXh0ZXJucyBiL21hbi9tYW5odG1sLmV4dGVybnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2YjYxMgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9tYW5odG1sLmV4dGVybnMKQEAgLTAsMCArMSwyNCBAQAorIyAkSWQ6IG1hbmh0bWwuZXh0ZXJucyx2IDEuMyAyMDEzLzEyLzIxIDIyOjExOjI5IHRvbSBFeHAgJAorIyBJdGVtcyBpbiB0aGlzIGxpc3Qgd2lsbCBub3QgYmUgbGlua2VkIGJ5IG1hbjJodG1sCitjb25mbGljdCgxKQorY3NoKDEpCitkZWQoMSkKK2Vudmlyb24oNykKK2dldHR5KDEpCitudmkoMSkKK3ByaW50ZigzKQorcHJvZmlsZSg1KQorcHV0YygzKQorcHV0d2MoMykKK3JlYWQoMikKK3JvZ3VlKDEpCitzY2FuZigzKQorc2goMSkKK3NzY2FuZigzKQorc3RkaW8oMykKK3N0dHkoMSkKK3N5c3RlbSgzKQordGVybWlvKDcpCit0dHkoNCkKK3R0eXMoNSkKK3djd2lkdGgoMykKZGlmZiAtLWdpdCBhL21hbi9tZW51LjN4IGIvbWFuL21lbnUuM3gKaW5kZXggMTdkNmZjMS4uYzBiZTQ2OSAxMDA2NDQKLS0tIGEvbWFuL21lbnUuM3gKKysrIGIvbWFuL21lbnUuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtZW51LjN4LHYgMS4xOSAyMDA2LzExLzA0IDE4OjM4OjI5IHRvbSBFeHAgJAorLlwiICRJZDogbWVudS4zeCx2IDEuMjIgMjAxNC8wOC8xNiAyMDozMjowOCB0b20gRXhwICQKIC5USCBtZW51IDNYICIiCiAuU0ggTkFNRQotXGZCbWVudVxmUiAtIGN1cnNlcyBleHRlbnNpb24gZm9yIHByb2dyYW1taW5nIG1lbnVzCitcZkJtZW51XGZSIFwtIGN1cnNlcyBleHRlbnNpb24gZm9yIHByb2dyYW1taW5nIG1lbnVzCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTQzLDcgKzQzLDcgQEAKIFRoZSBcZkJtZW51XGZSIGxpYnJhcnkgdXNlcyB0aGUgXGZCY3Vyc2VzXGZSIGxpYnJhcmllcywgYW5kIGEgY3Vyc2VzCiBpbml0aWFsaXphdGlvbiByb3V0aW5lIHN1Y2ggYXMgXGZCaW5pdHNjclxmUiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG9mCiB0aGVzZSBmdW5jdGlvbnMuICBUbyB1c2UgdGhlIFxmQm1lbnVcZlIgbGlicmFyeSwgbGluayB3aXRoIHRoZSBvcHRpb25zCi1cZkItbG1lbnUgLWxjdXJzZXNcZlIuCitcZkJcLWxtZW51IFwtbGN1cnNlc1xmUi4KIC4KIC5TUyBDdXJyZW50IERlZmF1bHQgVmFsdWVzIGZvciBJdGVtIEF0dHJpYnV0ZXMKIC4KQEAgLTE2NiwxNSArMTY2LDEyIEBACiAuVFAgNQogLkIgRV9VTktOT1dOX0NPTU1BTkQKIFRoZSBtZW51IGRyaXZlciBjb2RlIHNhdyBhbiB1bmtub3duIHJlcXVlc3QgY29kZS4KLS5TSCBTRUUgQUxTTwotXGZCY3Vyc2VzXGZSKDNYKSBhbmQgcmVsYXRlZCBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbiAibWVudV8iIGZvciBkZXRhaWxlZAotZGVzY3JpcHRpb25zIG9mIHRoZSBlbnRyeSBwb2ludHMuCiAuU0ggTk9URVMKIFRoZSBoZWFkZXIgZmlsZSBcZkI8bWVudS5oPlxmUiBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIHRoZSBoZWFkZXIgZmlsZXMKIFxmQjxjdXJzZXMuaD5cZlIgYW5kIFxmQjxldGkuaD5cZlIuCiAuUFAKIEluIHlvdXIgbGlicmFyeSBsaXN0LCBsaWJtZW51LmEgc2hvdWxkIGJlIGJlZm9yZSBsaWJuY3Vyc2VzLmE7IHRoYXQgaXMsCi15b3Ugd2FudCB0byBzYXkgYC1sbWVudSAtbG5jdXJzZXMnLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQgKHdoaWNoIHdvdWxkCit5b3Ugd2FudCB0byBzYXkgYFwtbG1lbnUgXC1sbmN1cnNlcycsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCAod2hpY2ggd291bGQKIHVzdWFsbHkgZ2l2ZSBhIGxpbmstZXJyb3IpLgogLlNIIFBPUlRBQklMSVRZCiBUaGVzZSByb3V0aW5lcyBlbXVsYXRlIHRoZSBTeXN0ZW0gViBtZW51IGxpYnJhcnkuICBUaGV5IHdlcmUgbm90IHN1cHBvcnRlZCBvbgpAQCAtMTgzLDExICsxODAsOCBAQAogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCiAuU0ggU0VFIEFMU08KK1xmQmN1cnNlc1xmUigzWCkgYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gIm1lbnVfIiBmb3IgZGV0YWlsZWQKK2Rlc2NyaXB0aW9ucyBvZiB0aGUgZW50cnkgcG9pbnRzLgorLlBQCiBUaGlzIGRlc2NyaWJlcyBcZkJuY3Vyc2VzXGZSCiB2ZXJzaW9uIEBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAgKHBhdGNoIEBOQ1VSU0VTX1BBVENIQCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X2F0dHJpYnV0ZXMuM3ggYi9tYW4vbWVudV9hdHRyaWJ1dGVzLjN4CmluZGV4IDUwNWVkYmMuLmMzMzA1OWIgMTAwNjQ0Ci0tLSBhL21hbi9tZW51X2F0dHJpYnV0ZXMuM3gKKysrIGIvbWFuL21lbnVfYXR0cmlidXRlcy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfYXR0cmlidXRlcy4zeCx2IDEuMTAgMjAwOC8wOC8yMyAxODoyNDoyMyB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfYXR0cmlidXRlcy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtZW51X2F0dHJpYnV0ZXMgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X2F0dHJpYnV0ZXNcZlIgLSBjb2xvciBhbmQgYXR0cmlidXRlIGNvbnRyb2wgZm9yIG1lbnVzCitcZkJtZW51X2F0dHJpYnV0ZXNcZlIgXC0gY29sb3IgYW5kIGF0dHJpYnV0ZSBjb250cm9sIGZvciBtZW51cwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC05Miw5ICs5MiwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X2N1cnNvci4zeCBiL21hbi9tZW51X2N1cnNvci4zeAppbmRleCA0YWRlMGJmLi42NmE4MzViIDEwMDY0NAotLS0gYS9tYW4vbWVudV9jdXJzb3IuM3gKKysrIGIvbWFuL21lbnVfY3Vyc29yLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbWVudV9jdXJzb3IuM3gsdiAxLjYgMjAwNi8xMS8wNCAxNzoxMzo1NyB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfY3Vyc29yLjN4LHYgMS44IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWVudV9jdXJzb3IgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X2N1cnNvclxmUiAtIHBvc2l0aW9uIGEgbWVudSdzIGN1cnNvcgorXGZCbWVudV9jdXJzb3JcZlIgXC0gcG9zaXRpb24gYSBtZW51J3MgY3Vyc29yCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTY1LDkgKzY1LDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21lbnVfZHJpdmVyLjN4IGIvbWFuL21lbnVfZHJpdmVyLjN4CmluZGV4IDUzNjYwNDAuLjFmZTUwMDEgMTAwNjQ0Ci0tLSBhL21hbi9tZW51X2RyaXZlci4zeAorKysgYi9tYW4vbWVudV9kcml2ZXIuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxMCArMjYsMTMgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfZHJpdmVyLjN4LHYgMS4xNSAyMDA4LzA2LzIxIDIxOjU1OjMwIHRvbSBFeHAgJAorLlwiICRJZDogbWVudV9kcml2ZXIuM3gsdiAxLjIwIDIwMTAvMTIvMDQgMTg6Mzg6NTUgdG9tIEV4cCAkCiAuVEggbWVudV9kcml2ZXIgM1ggIiIKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KIC5TSCBOQU1FCi1cZkJtZW51X2RyaXZlclxmUiAtIGNvbW1hbmQtcHJvY2Vzc2luZyBsb29wIG9mIHRoZSBtZW51IHN5c3RlbQorXGZCbWVudV9kcml2ZXJcZlIgXC0gY29tbWFuZC1wcm9jZXNzaW5nIGxvb3Agb2YgdGhlIG1lbnUgc3lzdGVtCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTM4LDE4ICs0MSwxNSBAQAogLlNIIERFU0NSSVBUSU9OCiBPbmNlIGEgbWVudSBoYXMgYmVlbiBwb3N0ZWQgKGRpc3BsYXllZCksIHlvdSBzaG91bGQgZnVubmVsIGlucHV0IGV2ZW50cyB0byBpdAogdGhyb3VnaCBcZkJtZW51X2RyaXZlclxmUi4gIFRoaXMgcm91dGluZSBoYXMgdGhyZWUgbWFqb3IgaW5wdXQgY2FzZXM6Ci0uVFAgMwotLQorLmJQCiBUaGUgaW5wdXQgaXMgYSBmb3JtIG5hdmlnYXRpb24gcmVxdWVzdC4KIE5hdmlnYXRpb24gcmVxdWVzdCBjb2RlcyBhcmUgY29uc3RhbnRzIGRlZmluZWQgaW4gXGZCPGZvcm0uaD5cZlAsCiB3aGljaCBhcmUgZGlzdGluY3QgZnJvbSB0aGUga2V5LSBhbmQgY2hhcmFjdGVyIGNvZGVzIHJldHVybmVkIGJ5IFxmQndnZXRjaFxmUC4KLS5UUCAzCi0tCisuYlAKIFRoZSBpbnB1dCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIuCiBQcmludGFibGUgY2hhcmFjdGVycyAod2hpY2ggbXVzdCBiZSBwb3NpdGl2ZSwgbGVzcyB0aGFuIDI1NikgYXJlCiBjaGVja2VkIGFjY29yZGluZyB0byB0aGUgcHJvZ3JhbSdzIGxvY2FsZSBzZXR0aW5ncy4KLS5UUCAzCi0tCisuYlAKIFRoZSBpbnB1dCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5IGFzc29jaWF0ZWQgd2l0aCBhbiBtb3VzZSBldmVudC4KIC5QUAogVGhlIG1lbnUgZHJpdmVyIHJlcXVlc3RzIGFyZSBhcyBmb2xsb3dzOgpAQCAtMTE2LDM2ICsxMTYsMjkgQEAKIC5QUAogSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgS0VZX01PVVNFIHNwZWNpYWwga2V5LCB0aGUgYXNzb2NpYXRlZAogbW91c2UgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIG9uZSBvZiB0aGUgYWJvdmUgcHJlLWRlZmluZWQgcmVxdWVzdHMuCi1DdXJyZW50bHkgb25seSBjbGlja3MgaW4gdGhlIHVzZXIgd2luZG93IChlLmcuIGluc2lkZSB0aGUgbWVudSBkaXNwbGF5CitDdXJyZW50bHkgb25seSBjbGlja3MgaW4gdGhlIHVzZXIgd2luZG93IChlLmcuLCBpbnNpZGUgdGhlIG1lbnUgZGlzcGxheQogYXJlYSBvciB0aGUgZGVjb3JhdGlvbiB3aW5kb3cpIGFyZSBoYW5kbGVkLgogLlBQCiBJZiB5b3UgY2xpY2sgYWJvdmUgdGhlIGRpc3BsYXkgcmVnaW9uIG9mIHRoZSBtZW51OgotLlJTCi0uVFAKKy5iUAogYSBSRVFfU0NSX1VMSU5FIGlzIGdlbmVyYXRlZCBmb3IgYSBzaW5nbGUgY2xpY2ssCi0uVFAKKy5iUAogYSBSRVFfU0NSX1VQQUdFIGlzIGdlbmVyYXRlZCBmb3IgYSBkb3VibGUtY2xpY2sgYW5kCi0uVFAKKy5iUAogYSBSRVFfRklSU1RfSVRFTSBpcyBnZW5lcmF0ZWQgZm9yIGEgdHJpcGxlLWNsaWNrLgotLlJFCiAuUFAKIElmIHlvdSBjbGljayBiZWxvdyB0aGUgZGlzcGxheSByZWdpb24gb2YgdGhlIG1lbnU6Ci0uUlMKLS5UUAorLmJQCiBhIFJFUV9TQ1JfRExJTkUgaXMgZ2VuZXJhdGVkIGZvciBhIHNpbmdsZSBjbGljaywKLS5UUAorLmJQCiBhIFJFUV9TQ1JfRFBBR0UgaXMgZ2VuZXJhdGVkIGZvciBhIGRvdWJsZS1jbGljayBhbmQKLS5UUAorLmJQCiBhIFJFUV9MQVNUX0lURU0gaXMgZ2VuZXJhdGVkIGZvciBhIHRyaXBsZS1jbGljay4KLS5SRQogLlBQCiBJZiB5b3UgY2xpY2sgYXQgYW4gaXRlbSBpbnNpZGUgdGhlIGRpc3BsYXkgYXJlYSBvZiB0aGUgbWVudToKLS5SUwotLlRQIDMKLS0KKy5iUAogdGhlIG1lbnUgY3Vyc29yIGlzIHBvc2l0aW9uZWQgdG8gdGhhdCBpdGVtLgotLlRQIDMKLS0KKy5iUAogSWYgeW91IGRvdWJsZS1jbGljayBhbiBpdGVtIGEgUkVRX1RPR0dMRV9JVEVNCiBpcyBnZW5lcmF0ZWQgYW5kIFxmQkVfVU5LTk9XTl9DT01NQU5EXGZSIGlzIHJldHVybmVkLgogVGhpcyByZXR1cm4gdmFsdWUgbWFrZXMgc2Vuc2UsCkBAIC0xNTMsMTEgKzE0Niw5IEBACiBiZSByZXR1cm5lZC4KIEl0IGlzIGV4YWN0bHkgdGhlIHB1cnBvc2Ugb2YgdGhpcyByZXR1cm4gdmFsdWUgdG8gc2lnbmFsIHRoYXQgYW4KIGFwcGxpY2F0aW9uIHNwZWNpZmljIGNvbW1hbmQgc2hvdWxkIGJlIGV4ZWN1dGVkLgotLlRQIDMKLS0KKy5iUAogSWYgYSB0cmFuc2xhdGlvbgogaW50byBhIHJlcXVlc3Qgd2FzIGRvbmUsIFxmQm1lbnVfZHJpdmVyXGZSIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuCi0uUkUKIC5QUAogSWYgeW91IGNsaWNrZWQgb3V0c2lkZSB0aGUgdXNlciB3aW5kb3cgb3IgdGhlIG1vdXNlIGV2ZW50IGNvdWxkIG5vdCBiZSB0cmFuc2xhdGVkCiBpbnRvIGEgbWVudSByZXF1ZXN0IGFuIFxmQkVfUkVRVUVTVF9ERU5JRURcZlIgaXMgcmV0dXJuZWQuCkBAIC0xOTcsNyArMTg4LDcgQEAKIC5TSCBTRUUgQUxTTwogXGZCY3Vyc2VzXGZSKDNYKSwKIFxmQm1lbnVcZlIoM1gpLAotXGZCd2dldGNoXGZSKDNYKS4KK1xmQmdldGNoXGZSKDNYKS4KIC5TSCBOT1RFUwogVGhlIGhlYWRlciBmaWxlIFxmQjxtZW51Lmg+XGZSIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlciBmaWxlcwogXGZCPGN1cnNlcy5oPlxmUi4KQEAgLTIwNyw5ICsxOTgsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbWVudV9mb3JtYXQuM3ggYi9tYW4vbWVudV9mb3JtYXQuM3gKaW5kZXggZjRkNDU2Zi4uYjlhNTcyYiAxMDA2NDQKLS0tIGEvbWFuL21lbnVfZm9ybWF0LjN4CisrKyBiL21hbi9tZW51X2Zvcm1hdC4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfZm9ybWF0LjN4LHYgMS4xMCAyMDA2LzExLzA0IDE3OjEyOjAwIHRvbSBFeHAgJAorLlwiICRJZDogbWVudV9mb3JtYXQuM3gsdiAxLjEyIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWVudV9mb3JtYXQgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X2Zvcm1hdFxmUiAtIHNldCBhbmQgZ2V0IG1lbnUgc2l6ZXMKK1xmQm1lbnVfZm9ybWF0XGZSIFwtIHNldCBhbmQgZ2V0IG1lbnUgc2l6ZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtNzksOSArNzksMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbWVudV9ob29rLjN4IGIvbWFuL21lbnVfaG9vay4zeAppbmRleCAyMDRlMWVjLi4xZmQ3NGRlIDEwMDY0NAotLS0gYS9tYW4vbWVudV9ob29rLjN4CisrKyBiL21hbi9tZW51X2hvb2suM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtZW51X2hvb2suM3gsdiAxLjkgMjAwNy8wMi8yNCAxNzozNDowOCB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfaG9vay4zeCx2IDEuMTEgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtZW51X2hvb2sgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X2hvb2tcZlIgLSBzZXQgaG9va3MgZm9yIGF1dG9tYXRpYyBpbnZvY2F0aW9uIGJ5IGFwcGxpY2F0aW9ucworXGZCbWVudV9ob29rXGZSIFwtIHNldCBob29rcyBmb3IgYXV0b21hdGljIGludm9jYXRpb24gYnkgYXBwbGljYXRpb25zCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTkzLDkgKzkzLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21lbnVfaXRlbXMuM3ggYi9tYW4vbWVudV9pdGVtcy4zeAppbmRleCAwOTE1MzQzLi4wNGIwMGFkIDEwMDY0NAotLS0gYS9tYW4vbWVudV9pdGVtcy4zeAorKysgYi9tYW4vbWVudV9pdGVtcy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfaXRlbXMuM3gsdiAxLjcgMjAwNi8xMS8wNCAxODozNTozMSB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfaXRlbXMuM3gsdiAxLjEwIDIwMTIvMTEvMDMgMjM6MDM6NTkgdG9tIEV4cCAkCiAuVEggbWVudV9pdGVtcyAzWCAiIgogLlNIIE5BTUUKLVxmQm1lbnVfaXRlbXNcZlIgLSBtYWtlIGFuZCBicmVhayBjb25uZWN0aW9ucyBiZXR3ZWVuIGl0ZW1zIGFuZCBtZW51cworXGZCbWVudV9pdGVtc1xmUiBcLSBtYWtlIGFuZCBicmVhayBjb25uZWN0aW9ucyBiZXR3ZWVuIGl0ZW1zIGFuZCBtZW51cwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC00Nyw3ICs0Nyw3IEBACiBUaGUgZnVuY3Rpb24gXGZCbWVudV9pdGVtc1xmUiByZXR1cm5zIHRoZSBpdGVtIGFycmF5IG9mIHRoZSBnaXZlbiBtZW51LgogLlBQCiBUaGUgZnVuY3Rpb24gXGZCaXRlbV9jb3VudFxmUiByZXR1cm5zIHRoZSBjb3VudCBvZiBpdGVtcyBpbiBcZkltZW51XGZSLgotLlNIIFJFVFVSTiBWQUxVRVMKKy5TSCBSRVRVUk4gVkFMVUUKIFRoZSBmdW5jdGlvbiBcZkJtZW51X2l0ZW1zXGZSIHJldHVybnMgYSBwb2ludGVyICh3aGljaCBtYXkgYmUgXGZCTlVMTFxmUikuCiBJdCBkb2VzIG5vdCBzZXQgZXJybm8uCiAuUFAKQEAgLTgxLDEzICs4MSw3IEBACiBWZXJzaW9uIDcgb3IgQlNEIHZlcnNpb25zLgogLlBQCiBUaGUgU1ZyNCBtZW51IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBzcGVjaWZpZXMgdGhlIFxmQml0ZW1fY291bnRcZlIgZXJyb3IgdmFsdWUKLWFzIC0xICh3aGljaCBpcyB0aGUgdmFsdWUgb2YgXGZCRVJSXGZSKS4KK2FzIFwtMSAod2hpY2ggaXMgdGhlIHZhbHVlIG9mIFxmQkVSUlxmUikuCiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X21hcmsuM3ggYi9tYW4vbWVudV9tYXJrLjN4CmluZGV4IDFkYjJiM2UuLjE0MjUxNTQgMTAwNjQ0Ci0tLSBhL21hbi9tZW51X21hcmsuM3gKKysrIGIvbWFuL21lbnVfbWFyay4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfbWFyay4zeCx2IDEuOSAyMDA2LzExLzA0IDE4OjMzOjE4IHRvbSBFeHAgJAorLlwiICRJZDogbWVudV9tYXJrLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIG1lbnVfbWFyayAzWCAiIgogLlNIIE5BTUUKLVxmQm1lbnVfbWFya1xmUiAtIGdldCBhbmQgc2V0IHRoZSBtZW51IG1hcmsgc3RyaW5nCitcZkJtZW51X21hcmtcZlIgXC0gZ2V0IGFuZCBzZXQgdGhlIG1lbnUgbWFyayBzdHJpbmcKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtNDgsNyArNDgsNyBAQAogTm90ZSB0aGF0IGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIG1hcmsgc3RyaW5nIGZvciBhIG1lbnUgd2hpbGUgdGhlCiBtZW51IGlzIHBvc3RlZCBpcyBsaWtlbHkgdG8gcHJvZHVjZSB1bmhlbHBmdWwgYmVoYXZpb3IuCiAuUFAKLVRoZSBkZWZhdWx0IHN0cmluZyBpcyAiLSIgKGEgZGFzaCkuIENhbGxpbmcgXGZCc2V0X21lbnVfbWFya1xmUiB3aXRoCitUaGUgZGVmYXVsdCBzdHJpbmcgaXMgIlwtIiAoYSBkYXNoKS4gQ2FsbGluZyBcZkJzZXRfbWVudV9tYXJrXGZSIHdpdGgKIGEgbm9uLVxmQk5VTExcZlIgbWVudSBhcmd1bWVudCB3aWxsIGNoYW5nZSB0aGlzIGRlZmF1bHQuCiAuUFAKIFRoZSBmdW5jdGlvbiBcZkJtZW51X21hcmtcZlIgcmV0dXJucyB0aGUgbWVudSdzIG1hcmsgc3RyaW5nIChvciBcZkJOVUxMXGZSIGlmCkBAIC03OCw5ICs3OCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X25ldy4zeCBiL21hbi9tZW51X25ldy4zeAppbmRleCBjMmI5OGU0Li4xMTk3NjU0IDEwMDY0NAotLS0gYS9tYW4vbWVudV9uZXcuM3gKKysrIGIvbWFuL21lbnVfbmV3LjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbWVudV9uZXcuM3gsdiAxLjkgMjAwNi8xMS8wNCAxODozMTozNyB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfbmV3LjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIG1lbnVfbmV3IDNYICIiCiAuU0ggTkFNRQotXGZCbWVudV9uZXdcZlIgLSBjcmVhdGUgYW5kIGRlc3Ryb3kgbWVudXMKK1xmQm1lbnVfbmV3XGZSIFwtIGNyZWF0ZSBhbmQgZGVzdHJveSBtZW51cwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC03OCw5ICs3OCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X29wdHMuM3ggYi9tYW4vbWVudV9vcHRzLjN4CmluZGV4IGRjOTI3YzQuLjVmNGNiMDggMTAwNjQ0Ci0tLSBhL21hbi9tZW51X29wdHMuM3gKKysrIGIvbWFuL21lbnVfb3B0cy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfb3B0cy4zeCx2IDEuMTAgMjAwNy8wMi8yNCAxNzozMzo1OSB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfb3B0cy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtZW51X29wdHMgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X29wdHNcZlIgLSBzZXQgYW5kIGdldCBtZW51IG9wdGlvbnMKK1xmQm1lbnVfb3B0c1xmUiBcLSBzZXQgYW5kIGdldCBtZW51IG9wdGlvbnMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtOTYsOSArOTYsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbWVudV9wYXR0ZXJuLjN4IGIvbWFuL21lbnVfcGF0dGVybi4zeAppbmRleCAzY2RlMTY1Li5lNjNhOWY3IDEwMDY0NAotLS0gYS9tYW4vbWVudV9wYXR0ZXJuLjN4CisrKyBiL21hbi9tZW51X3BhdHRlcm4uM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxMCArMjYsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfcGF0dGVybi4zeCx2IDEuMTEgMjAwOC8wNi8yMSAyMTo1ODoyMCB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfcGF0dGVybi4zeCx2IDEuMTMgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtZW51X3BhdHRlcm4gM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X3BhdHRlcm5cZlIgLSBnZXQgYW5kIHNldCBhIG1lbnUncyBwYXR0ZXJuIGJ1ZmZlcgorXGZCbWVudV9wYXR0ZXJuXGZSIFwtIGdldCBhbmQgc2V0IGEgbWVudSdzIHBhdHRlcm4gYnVmZmVyCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTgzLDkgKzgzLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21lbnVfcG9zdC4zeCBiL21hbi9tZW51X3Bvc3QuM3gKaW5kZXggZTQ3ZmFjYy4uZDA5ZDBjYSAxMDA2NDQKLS0tIGEvbWFuL21lbnVfcG9zdC4zeAorKysgYi9tYW4vbWVudV9wb3N0LjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbWVudV9wb3N0LjN4LHYgMS45IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCAkCisuXCIgJElkOiBtZW51X3Bvc3QuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWVudV9wb3N0IDNYICIiCiAuU0ggTkFNRQotXGZCbWVudV9wb3N0XGZSIC0gd3JpdGUgb3IgZXJhc2UgbWVudXMgZnJvbSBhc3NvY2lhdGVkIHN1YndpbmRvd3MKK1xmQm1lbnVfcG9zdFxmUiBcLSB3cml0ZSBvciBlcmFzZSBtZW51cyBmcm9tIGFzc29jaWF0ZWQgc3Vid2luZG93cwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC04Myw5ICs4MywzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X3JlcXVlc3RuYW1lLjN4IGIvbWFuL21lbnVfcmVxdWVzdG5hbWUuM3gKaW5kZXggMTM0NWFhNy4uZDE5NTdhMiAxMDA2NDQKLS0tIGEvbWFuL21lbnVfcmVxdWVzdG5hbWUuM3gKKysrIGIvbWFuL21lbnVfcmVxdWVzdG5hbWUuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtZW51X3JlcXVlc3RuYW1lLjN4LHYgMS43IDIwMDYvMTEvMDQgMTc6NTY6MDkgdG9tIEV4cCAkCisuXCIgJElkOiBtZW51X3JlcXVlc3RuYW1lLjN4LHYgMS45IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWVudV9yZXF1ZXN0bmFtZSAzWCAiIgogLlNIIE5BTUUKLVxmQm1lbnVfcmVxdWVzdG5hbWVcZlIgLSBoYW5kbGUgcHJpbnRhYmxlIG1lbnUgcmVxdWVzdCBuYW1lcworXGZCbWVudV9yZXF1ZXN0bmFtZVxmUiBcLSBoYW5kbGUgcHJpbnRhYmxlIG1lbnUgcmVxdWVzdCBuYW1lcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC02Myw5ICs2MywzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X3NwYWNpbmcuM3ggYi9tYW4vbWVudV9zcGFjaW5nLjN4CmluZGV4IGRmZTAzYTguLjllN2MzZWEgMTAwNjQ0Ci0tLSBhL21hbi9tZW51X3NwYWNpbmcuM3gKKysrIGIvbWFuL21lbnVfc3BhY2luZy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1lbnVfc3BhY2luZy4zeCx2IDEuOCAyMDA0LzEyLzExIDIzOjM5OjA3IHRvbSBFeHAgJAorLlwiICRJZDogbWVudV9zcGFjaW5nLjN4LHYgMS4xMiAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIG1lbnVfc3BhY2luZyAzWCAiIgogLlNIIE5BTUUKLVxmQm1lbnVfc3BhY2luZ1xmUiAtIENvbnRyb2wgc3BhY2luZyBiZXR3ZWVuIG1lbnUgaXRlbXMuCitcZkJtZW51X3NwYWNpbmdcZlIgXC0gQ29udHJvbCBzcGFjaW5nIGJldHdlZW4gbWVudSBpdGVtcy4KIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtNDUsNDAgKzQ1LDQ0IEBACiAgICAgICAgICAgICAgICAgIGludCogc3BjX2NvbHVtbnMpOwogLmJyCiAuU0ggREVTQ1JJUFRJT04KLVRoZSBmdW5jdGlvbiBcZkJzZXRfbWVudV9zcGFjaW5nXGZSIHNldHMgdGhlIHNwYWNpbmcgaW5mb3JtYXRpb25zIGZvciB0aGUgbWVudS4KLVxmQnNwY19kZXNjcmlwdGlvblxmUiBjb250cm9scyB0aGUgbnVtYmVyIG9mIHNwYWNlcyBiZXR3ZWVuIGFuIGl0ZW0gbmFtZSBhbmQgYW4gaXRlbQotZGVzY3JpcHRpb24uIEl0IG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIFxmQlRBQlNJWkVcZlIuIFRoZSBtZW51IHN5c3RlbSBwdXRzIGluIHRoZQotbWlkZGxlIG9mIHRoaXMgc3BhY2luZyBhcmVhIHRoZSBwYWQgY2hhcmFjdGVyLiBUaGUgcmVtYWluaW5nIHBhcnRzIGFyZSBmaWxsZWQgd2l0aAorVGhlIGZ1bmN0aW9uIFxmQnNldF9tZW51X3NwYWNpbmdcZlIgc2V0cyB0aGUgc3BhY2luZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG1lbnUuCitJdHMgcGFyYW1ldGVyIFxmQnNwY19kZXNjcmlwdGlvblxmUiBjb250cm9scyB0aGUgbnVtYmVyIG9mIHNwYWNlcyBiZXR3ZWVuIGFuIGl0ZW0gbmFtZSBhbmQgYW4gaXRlbQorZGVzY3JpcHRpb24uCitJdCBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiBcZkJUQUJTSVpFXGZSLgorVGhlIG1lbnUgc3lzdGVtIHB1dHMgaW4gdGhlCittaWRkbGUgb2YgdGhpcyBzcGFjaW5nIGFyZWEgdGhlIHBhZCBjaGFyYWN0ZXIuCitUaGUgcmVtYWluaW5nIHBhcnRzIGFyZSBmaWxsZWQgd2l0aAogc3BhY2VzLgotXGZCc3BjX3Jvd3NcZlIgY29udHJvbHMgdGhlIG51bWJlciBvZiByb3dzIHRoYXQgYXJlIHVzZWQgZm9yIGFuIGl0ZW0uIEl0IG11c3Qgbm90IGJlCi1sYXJnZXIgdGhhbiAzLiBUaGUgbWVudSBzeXN0ZW0gaW5zZXJ0cyB0aGUgYmxhbmsgbGluZXMgYmV0d2VlbiBpdGVtIHJvd3MsIHRoZXNlIGxpbmVzCitUaGUgXGZCc3BjX3Jvd3NcZlIgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygcm93cyB0aGF0IGFyZSB1c2VkIGZvciBhbiBpdGVtLgorSXQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gMy4KK1RoZSBtZW51IHN5c3RlbSBpbnNlcnRzIHRoZSBibGFuayBsaW5lcyBiZXR3ZWVuIGl0ZW0gcm93cywgdGhlc2UgbGluZXMKIHdpbGwgY29udGFpbiB0aGUgcGFkIGNoYXJhY3RlciBpbiB0aGUgYXBwcm9wcmlhdGUgcG9zaXRpb25zLgotXGZCc3BjX2NvbHVtbnNcZlIgY29udHJvbHMgdGhlIG51bWJlciBvZiBibGFua3MgYmV0d2VlbiBjb2x1bW5zIG9mIGl0ZW1zLiBJdCBtdXN0IG5vdAotYmUgbGFyZ2VyIHRoYW4gVEFCU0laRS4KK1RoZSBcZkJzcGNfY29sdW1uc1xmUiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIG51bWJlciBvZiBibGFua3MgYmV0d2VlbiBjb2x1bW5zIG9mIGl0ZW1zLgorSXQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gVEFCU0laRS4KIEEgdmFsdWUgb2YgMCBmb3IgYWxsIHRoZSBzcGFjaW5nIHZhbHVlcyByZXNldHMgdGhlbSB0byB0aGUgZGVmYXVsdCwgd2hpY2ggaXMgMSBmb3IgYWxsCiBvZiB0aGVtLgogLmJyCi1UaGUgZnVuY3Rpb24gXGZCbWVudV9zcGFjaW5nXGZSIHBhc3NlcyBiYWNrIHRoZSBzcGFjaW5nIGluZm8gZm9yIHRoZSBtZW51LiBJZiBhCitUaGUgZnVuY3Rpb24gXGZCbWVudV9zcGFjaW5nXGZSIHBhc3NlcyBiYWNrIHRoZSBzcGFjaW5nIGluZm8gZm9yIHRoZSBtZW51LgorSWYgYQogcG9pbnRlciBpcyBOVUxMLCB0aGlzIHNwZWNpZmljIGluZm8gaXMgc2ltcGx5IG5vdCByZXR1cm5lZC4KIC5TSCBSRVRVUk4gVkFMVUUKLUJvdGggcm91dGluZXMgcmV0dXJuIFxmQkVfT0tcZlIgb24gc3VjY2Vzcy4gXGZCc2V0X21lbnVfc3BhY2luZ1xmUiBtYXkgcmV0dXJuCitCb3RoIHJvdXRpbmVzIHJldHVybiBcZkJFX09LXGZSIG9uIHN1Y2Nlc3MuCitcZkJzZXRfbWVudV9zcGFjaW5nXGZSIG1heSByZXR1cm4KIFxmQkVfUE9TVEVEXGZSIGlmIHRoZSBtZW51IGlzIHBvc3RlZCwgb3IgXGZCRV9CQURfQVJHVU1FTlRcZlIgaWYgb25lIG9mIHRoZQogc3BhY2luZyB2YWx1ZXMgaXMgb3V0IG9mIHJhbmdlLgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJtZW51XGZSKDNYKS4KK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCksCitcZkJtZW51XGZSKDNYKS4KIC5TSCBOT1RFUwogVGhlIGhlYWRlciBmaWxlIFxmQjxtZW51Lmg+XGZSIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlciBmaWxlCiBcZkI8Y3Vyc2VzLmg+XGZSLgogLlNIIFBPUlRBQklMSVRZCi1UaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gbmN1cnNlcy4gIFRoZXkgd2VyZSBub3Qgc3VwcG9ydGVkIG9uCi1WZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0CitUaGVzZSByb3V0aW5lcyBhcmUgc3BlY2lmaWMgdG8gbmN1cnNlcy4KK1RoZXkgd2VyZSBub3Qgc3VwcG9ydGVkIG9uCitWZXJzaW9uIDcsIEJTRCBvciBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMuCitJdCBpcyByZWNvbW1lbmRlZCB0aGF0CiBhbnkgY29kZSBkZXBlbmRpbmcgb24gdGhlbSBiZSBjb25kaXRpb25lZCB1c2luZyBOQ1VSU0VTX1ZFUlNJT04uCiAuU0ggQVVUSE9SUwotSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKLVMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKK0p1ZXJnZW4gUGZlaWZlci4KK01hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljIFMuIFJheW1vbmQuCmRpZmYgLS1naXQgYS9tYW4vbWVudV91c2VycHRyLjN4IGIvbWFuL21lbnVfdXNlcnB0ci4zeAppbmRleCBiN2JlMmFkLi4wNDU1ZmUzIDEwMDY0NAotLS0gYS9tYW4vbWVudV91c2VycHRyLjN4CisrKyBiL21hbi9tZW51X3VzZXJwdHIuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtZW51X3VzZXJwdHIuM3gsdiAxLjggMjAwNi8xMS8wNCAxODoyMTowMyB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfdXNlcnB0ci4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtZW51X3VzZXJwdHIgM1ggIiIKIC5TSCBOQU1FCi1cZkJtZW51X3VzZXJwdHJcZlIgLSBhc3NvY2lhdGUgYXBwbGljYXRpb24gZGF0YSB3aXRoIGEgbWVudSBpdGVtCitcZkJtZW51X3VzZXJwdHJcZlIgXC0gYXNzb2NpYXRlIGFwcGxpY2F0aW9uIGRhdGEgd2l0aCBhIG1lbnUgaXRlbQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC02MSw5ICs2MSwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9tZW51X3dpbi4zeCBiL21hbi9tZW51X3dpbi4zeAppbmRleCBhYTM1NmUxLi43NzRlYWZhIDEwMDY0NAotLS0gYS9tYW4vbWVudV93aW4uM3gKKysrIGIvbWFuL21lbnVfd2luLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbWVudV93aW4uM3gsdiAxLjggMjAwNi8xMS8wNCAxNzoxMjowMCB0b20gRXhwICQKKy5cIiAkSWQ6IG1lbnVfd2luLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjM4OjU1IHRvbSBFeHAgJAogLlRIIG1lbnVfd2luIDNYICIiCiAuU0ggTkFNRQotXGZCbWVudV93aW5cZlIgLSBtYWtlIGFuZCBicmVhayBtZW51IHdpbmRvdyBhbmQgc3Vid2luZG93IGFzc29jaWF0aW9ucworXGZCbWVudV93aW5cZlIgXC0gbWFrZSBhbmQgYnJlYWsgbWVudSB3aW5kb3cgYW5kIHN1YndpbmRvdyBhc3NvY2lhdGlvbnMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtNzcsNyArNzcsOSBAQAogLkIgRV9OT1RfQ09OTkVDVEVECiBObyBpdGVtcyBhcmUgY29ubmVjdGVkIHRvIHRoZSBtZW51LgogLlNIIFNFRSBBTFNPCi1cZkJjdXJzZXNcZlIoM1gpLCBcZkJtZW51XGZSKDNYKS4KK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCksCitcZkJtZW51XGZSKDNYKS4KIC5TSCBOT1RFUwogVGhlIGhlYWRlciBmaWxlIFxmQjxtZW51Lmg+XGZSIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgdGhlIGhlYWRlciBmaWxlCiBcZkI8Y3Vyc2VzLmg+XGZSLgpAQCAtODcsOSArODksMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbWl0ZW1fY3VycmVudC4zeCBiL21hbi9taXRlbV9jdXJyZW50LjN4CmluZGV4IDk3OWY0MDEuLjg2YzliNDcgMTAwNjQ0Ci0tLSBhL21hbi9taXRlbV9jdXJyZW50LjN4CisrKyBiL21hbi9taXRlbV9jdXJyZW50LjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEwICsyNywxMCBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbWl0ZW1fY3VycmVudC4zeCx2IDEuMTEgMjAwNi8xMS8wNCAxODoxODoxOSB0b20gRXhwICQKKy5cIiAkSWQ6IG1pdGVtX2N1cnJlbnQuM3gsdiAxLjEzIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWl0ZW1fY3VycmVudCAzWCAiIgogLlNIIE5BTUUKLVxmQm1pdGVtX2N1cnJlbnRcZlIgLSBzZXQgYW5kIGdldCBjdXJyZW50X21lbnVfaXRlbQorXGZCbWl0ZW1fY3VycmVudFxmUiBcLSBzZXQgYW5kIGdldCBjdXJyZW50X21lbnVfaXRlbQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC05MCwxMyArOTAsNyBAQAogVmVyc2lvbiA3IG9yIEJTRCB2ZXJzaW9ucy4KIC5QUAogVGhlIFNWcjQgbWVudSBsaWJyYXJ5IGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRoZSBcZkJ0b3Bfcm93XGZSIGFuZAotXGZCaW5kZXhfaXRlbVxmUiBlcnJvciB2YWx1ZSBhcyAtMSAod2hpY2ggaXMgdGhlIHZhbHVlIG9mIFxmQkVSUlxmUikuCitcZkJpbmRleF9pdGVtXGZSIGVycm9yIHZhbHVlIGFzIFwtMSAod2hpY2ggaXMgdGhlIHZhbHVlIG9mIFxmQkVSUlxmUikuCiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9taXRlbV9uYW1lLjN4IGIvbWFuL21pdGVtX25hbWUuM3gKaW5kZXggMTIwMDllZC4uZmY4NzllNiAxMDA2NDQKLS0tIGEvbWFuL21pdGVtX25hbWUuM3gKKysrIGIvbWFuL21pdGVtX25hbWUuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtaXRlbV9uYW1lLjN4LHYgMS42IDIwMDYvMTEvMDQgMTc6NTM6NDAgdG9tIEV4cCAkCisuXCIgJElkOiBtaXRlbV9uYW1lLjN4LHYgMS44IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWl0ZW1fbmFtZSAzWCAiIgogLlNIIE5BTUUKLVxmQm1pdGVtX25hbWVcZlIgLSBnZXQgbWVudSBpdGVtIG5hbWUgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcworXGZCbWl0ZW1fbmFtZVxmUiBcLSBnZXQgbWVudSBpdGVtIG5hbWUgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC01Nyw5ICs1NywzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9taXRlbV9uZXcuM3ggYi9tYW4vbWl0ZW1fbmV3LjN4CmluZGV4IGMwZmE2ZWQuLjhlMjQ0OWUgMTAwNjQ0Ci0tLSBhL21hbi9taXRlbV9uZXcuM3gKKysrIGIvbWFuL21pdGVtX25ldy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1pdGVtX25ldy4zeCx2IDEuMTAgMjAwNi8xMS8wNCAxODoxNjozNiB0b20gRXhwICQKKy5cIiAkSWQ6IG1pdGVtX25ldy4zeCx2IDEuMTIgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtaXRlbV9uZXcgM1ggIiIKIC5TSCBOQU1FCi1cZkJtaXRlbV9uZXdcZlIgLSBjcmVhdGUgYW5kIGRlc3Ryb3kgbWVudSBpdGVtcworXGZCbWl0ZW1fbmV3XGZSIFwtIGNyZWF0ZSBhbmQgZGVzdHJveSBtZW51IGl0ZW1zCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTgyLDkgKzgyLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21pdGVtX29wdHMuM3ggYi9tYW4vbWl0ZW1fb3B0cy4zeAppbmRleCAyNDU5ZGFiLi4zN2VhNTUyIDEwMDY0NAotLS0gYS9tYW4vbWl0ZW1fb3B0cy4zeAorKysgYi9tYW4vbWl0ZW1fb3B0cy4zeApAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMCArMjcsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1pdGVtX29wdHMuM3gsdiAxLjkgMjAwNy8wMi8yNCAxNzozMzozMiB0b20gRXhwICQKKy5cIiAkSWQ6IG1pdGVtX29wdHMuM3gsdiAxLjExIDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWl0ZW1fb3B0cyAzWCAiIgogLlNIIE5BTUUKLVxmQm1pdGVtX29wdHNcZlIgLSBzZXQgYW5kIGdldCBtZW51IGl0ZW0gb3B0aW9ucworXGZCbWl0ZW1fb3B0c1xmUiBcLSBzZXQgYW5kIGdldCBtZW51IGl0ZW0gb3B0aW9ucwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC03Niw5ICs3NiwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9taXRlbV91c2VycHRyLjN4IGIvbWFuL21pdGVtX3VzZXJwdHIuM3gKaW5kZXggNTg5NTE5My4uN2I1MWVjNSAxMDA2NDQKLS0tIGEvbWFuL21pdGVtX3VzZXJwdHIuM3gKKysrIGIvbWFuL21pdGVtX3VzZXJwdHIuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtaXRlbV91c2VycHRyLjN4LHYgMS45IDIwMDYvMTEvMDQgMTg6MjE6MDMgdG9tIEV4cCAkCisuXCIgJElkOiBtaXRlbV91c2VycHRyLjN4LHYgMS4xMSAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIG1pdGVtX3VzZXJwdHIgM1ggIiIKIC5TSCBOQU1FCi1cZkJtaXRlbV91c2VycHRyXGZSIC0gYXNzb2NpYXRlIGFwcGxpY2F0aW9uIGRhdGEgd2l0aCBhIG1lbnUgaXRlbQorXGZCbWl0ZW1fdXNlcnB0clxmUiBcLSBhc3NvY2lhdGUgYXBwbGljYXRpb24gZGF0YSB3aXRoIGEgbWVudSBpdGVtCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxtZW51Lmg+XGZSCiAuYnIKQEAgLTYyLDkgKzYyLDMgQEAKIC5TSCBBVVRIT1JTCiBKdWVyZ2VuIFBmZWlmZXIuICBNYW51YWwgcGFnZXMgYW5kIGFkYXB0YXRpb24gZm9yIG5ldyBjdXJzZXMgYnkgRXJpYwogUy4gUmF5bW9uZC4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21pdGVtX3ZhbHVlLjN4IGIvbWFuL21pdGVtX3ZhbHVlLjN4CmluZGV4IDc0OGZkNTIuLjU3Y2ZjNTMgMTAwNjQ0Ci0tLSBhL21hbi9taXRlbV92YWx1ZS4zeAorKysgYi9tYW4vbWl0ZW1fdmFsdWUuM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxMCArMjYsMTAgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IG1pdGVtX3ZhbHVlLjN4LHYgMS44IDIwMDYvMTEvMDQgMTc6MTI6MDAgdG9tIEV4cCAkCisuXCIgJElkOiBtaXRlbV92YWx1ZS4zeCx2IDEuMTAgMjAxMC8xMi8wNCAxODo0MDo0NSB0b20gRXhwICQKIC5USCBtaXRlbV92YWx1ZSAzWCAiIgogLlNIIE5BTUUKLVxmQm1pdGVtX3ZhbHVlXGZSIC0gc2V0IGFuZCBnZXQgbWVudSBpdGVtIHZhbHVlcworXGZCbWl0ZW1fdmFsdWVcZlIgXC0gc2V0IGFuZCBnZXQgbWVudSBpdGVtIHZhbHVlcwogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8bWVudS5oPlxmUgogLmJyCkBAIC02OCw5ICs2OCwzIEBACiAuU0ggQVVUSE9SUwogSnVlcmdlbiBQZmVpZmVyLiAgTWFudWFsIHBhZ2VzIGFuZCBhZGFwdGF0aW9uIGZvciBuZXcgY3Vyc2VzIGJ5IEVyaWMKIFMuIFJheW1vbmQuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9taXRlbV92aXNpYmxlLjN4IGIvbWFuL21pdGVtX3Zpc2libGUuM3gKaW5kZXggOGY5MDM5Yy4uNGZmOTQwNSAxMDA2NDQKLS0tIGEvbWFuL21pdGVtX3Zpc2libGUuM3gKKysrIGIvbWFuL21pdGVtX3Zpc2libGUuM3gKQEAgLTEsNiArMSw2IEBACiAnXCIgdAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTAgKzI3LDEwIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBtaXRlbV92aXNpYmxlLjN4LHYgMS41IDE5OTgvMTEvMjkgMDE6MTI6NTUgUmljay5PaG5lbXVzIEV4cCAkCisuXCIgJElkOiBtaXRlbV92aXNpYmxlLjN4LHYgMS43IDIwMTAvMTIvMDQgMTg6NDA6NDUgdG9tIEV4cCAkCiAuVEggbWl0ZW1fdmlzaWJsZSAzWCAiIgogLlNIIE5BTUUKLVxmQm1pdGVtX3Zpc2libGVcZlIgLSBjaGVjayB2aXNpYmlsaXR5IG9mIGEgbWVudSBpdGVtCitcZkJtaXRlbV92aXNpYmxlXGZSIFwtIGNoZWNrIHZpc2liaWxpdHkgb2YgYSBtZW51IGl0ZW0KIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPG1lbnUuaD5cZlIKIC5icgpAQCAtNTEsOSArNTEsMyBAQAogLlNIIEFVVEhPUlMKIEp1ZXJnZW4gUGZlaWZlci4gIE1hbnVhbCBwYWdlcyBhbmQgYWRhcHRhdGlvbiBmb3IgbmV3IGN1cnNlcyBieSBFcmljCiBTLiBSYXltb25kLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbmN1cnNlcy4zeCBiL21hbi9uY3Vyc2VzLjN4CmluZGV4IDcwM2EyMzkuLjc2ZDU1YzAgMTAwNjQ0Ci0tLSBhL21hbi9uY3Vyc2VzLjN4CisrKyBiL21hbi9uY3Vyc2VzLjN4CkBAIC0xLDYgKzEsNiBAQAogJ1wiIHQKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDQzICsyNyw1MiBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogbmN1cnNlcy4zeCx2IDEuOTIgMjAwOC8xMC8yNSAyMzozMTo0NSB0b20gRXhwICQKKy5cIiAkSWQ6IG5jdXJzZXMuM3gsdiAxLjEyNCAyMDE1LzA4LzA4IDE0OjU3OjUxIHRvbSBFeHAgJAogLmh5IDAKIC5USCBuY3Vyc2VzIDNYICIiCisuaWUgXG4oLmcgLmRzIGBgIFwobHEKKy5lbCAgICAgICAuZHMgYGAgYGAKKy5pZSBcbiguZyAuZHMgJycgXChycQorLmVsICAgICAgIC5kcyAnJyAnJworLmRlIGJQCisuSVAgXChidSA0CisuLgogLmRzIG4gNQogLmRzIGQgQFRFUk1JTkZPQAogLlNIIE5BTUUKLVxmQm5jdXJzZXNcZlIgLSBDUlQgc2NyZWVuIGhhbmRsaW5nIGFuZCBvcHRpbWl6YXRpb24gcGFja2FnZQorXGZCbmN1cnNlc1xmUiBcLSBDUlQgc2NyZWVuIGhhbmRsaW5nIGFuZCBvcHRpbWl6YXRpb24gcGFja2FnZQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgogVGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeSByb3V0aW5lcyBnaXZlIHRoZSB1c2VyIGEgdGVybWluYWwtaW5kZXBlbmRlbnQgbWV0aG9kCiBvZiB1cGRhdGluZyBjaGFyYWN0ZXIgc2NyZWVucyB3aXRoIHJlYXNvbmFibGUgb3B0aW1pemF0aW9uLgotVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBgYG5ldyBjdXJzZXMnJyAobmN1cnNlcykgYW5kCitUaGlzIGltcGxlbWVudGF0aW9uIGlzIFwqKGBgbmV3IGN1cnNlc1wqKCcnIChuY3Vyc2VzKSBhbmQKIGlzIHRoZSBhcHByb3ZlZCByZXBsYWNlbWVudCBmb3IKIDQuNEJTRCBjbGFzc2ljIGN1cnNlcywgd2hpY2ggaGFzIGJlZW4gZGlzY29udGludWVkLgogVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgogdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgogLlBQCi1UaGUgXGZCbmN1cnNlc1xmUiBsaWJyYXJ5IGVtdWxhdGVzIHRoZSBcZkJjdXJzZXNcZlIoM1gpIGxpYnJhcnkgb2YKK1RoZSBcZkJuY3Vyc2VzXGZSIGxpYnJhcnkgZW11bGF0ZXMgdGhlIGN1cnNlcyBsaWJyYXJ5IG9mCiBTeXN0ZW0gViBSZWxlYXNlIDQgVU5JWCwKIGFuZCBYUEc0IChYL09wZW4gUG9ydGFiaWxpdHkgR3VpZGUpIGN1cnNlcyAoYWxzbyBrbm93biBhcyBYU0kgY3Vyc2VzKS4KIFhTSSBzdGFuZHMgZm9yIFgvT3BlbiBTeXN0ZW0gSW50ZXJmYWNlcyBFeHRlbnNpb24uCiBUaGUgXGZCbmN1cnNlc1xmUiBsaWJyYXJ5IGlzIGZyZWVseSByZWRpc3RyaWJ1dGFibGUgaW4gc291cmNlIGZvcm0uCiBEaWZmZXJlbmNlcyBmcm9tIHRoZSBTVnI0Ci1jdXJzZXMgYXJlIHN1bW1hcml6ZWQgdW5kZXIgdGhlIFxmQkVYVEVOU0lPTlNcZlAgYW5kIFxmQlBPUlRBQklMSVRZXGZQIHNlY3Rpb25zIGJlbG93IGFuZAotZGVzY3JpYmVkIGluIGRldGFpbCBpbiB0aGUgcmVzcGVjdGl2ZSBcZkJFWFRFTlNJT05TXGZQLCBcZkJQT1JUQUJJTElUWVxmUCBhbmQgXGZCQlVHU1xmUCBzZWN0aW9ucworY3Vyc2VzIGFyZSBzdW1tYXJpemVkIHVuZGVyIHRoZQorXGZCRVhURU5TSU9OU1xmUCBhbmQgXGZCUE9SVEFCSUxJVFlcZlAgc2VjdGlvbnMgYmVsb3cgYW5kCitkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSByZXNwZWN0aXZlCitcZkJFWFRFTlNJT05TXGZQLCBcZkJQT1JUQUJJTElUWVxmUCBhbmQgXGZCQlVHU1xmUCBzZWN0aW9ucwogb2YgaW5kaXZpZHVhbCBtYW4gcGFnZXMuCiAuUFAKIFRoZSBcZkJuY3Vyc2VzXGZSIGxpYnJhcnkgYWxzbyBwcm92aWRlcyBtYW55IHVzZWZ1bCBleHRlbnNpb25zLAogaS5lLiwgZmVhdHVyZXMgd2hpY2ggY2Fubm90IGJlIGltcGxlbWVudGVkIGJ5IGEgc2ltcGxlIGFkZC1vbiBsaWJyYXJ5CiBidXQgd2hpY2ggcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIGludGVybmFscyBvZiB0aGUgbGlicmFyeS4KIC5QUAotQSBwcm9ncmFtIHVzaW5nIHRoZXNlIHJvdXRpbmVzIG11c3QgYmUgbGlua2VkIHdpdGggdGhlIFxmQi1sbmN1cnNlc1xmUiBvcHRpb24sCi1vciAoaWYgaXQgaGFzIGJlZW4gZ2VuZXJhdGVkKSB3aXRoIHRoZSBkZWJ1Z2dpbmcgbGlicmFyeSBcZkItbG5jdXJzZXNfZ1xmUi4KK0EgcHJvZ3JhbSB1c2luZyB0aGVzZSByb3V0aW5lcyBtdXN0IGJlIGxpbmtlZCB3aXRoIHRoZSBcZkJcLWxuY3Vyc2VzXGZSIG9wdGlvbiwKK29yIChpZiBpdCBoYXMgYmVlbiBnZW5lcmF0ZWQpIHdpdGggdGhlIGRlYnVnZ2luZyBsaWJyYXJ5IFxmQlwtbG5jdXJzZXNfZ1xmUi4KIChZb3VyIHN5c3RlbSBpbnRlZ3JhdG9yIG1heSBhbHNvIGhhdmUgaW5zdGFsbGVkIHRoZXNlIGxpYnJhcmllcyB1bmRlcgotdGhlIG5hbWVzIFxmQi1sY3Vyc2VzXGZSIGFuZCBcZkItbGN1cnNlc19nXGZSLikKK3RoZSBuYW1lcyBcZkJcLWxjdXJzZXNcZlIgYW5kIFxmQlwtbGN1cnNlc19nXGZSLikKIFRoZSBuY3Vyc2VzX2cgbGlicmFyeSBnZW5lcmF0ZXMgdHJhY2UgbG9ncyAoaW4gYSBmaWxlIGNhbGxlZCAndHJhY2UnIGluIHRoZQogY3VycmVudCBkaXJlY3RvcnkpIHRoYXQgZGVzY3JpYmUgY3Vyc2VzIGFjdGlvbnMuCiBTZWUgYWxzbyB0aGUgc2VjdGlvbiBvbiBcZkJBTFRFUk5BVEUgQ09ORklHVVJBVElPTlNcZlAuCkBAIC03Myw2ICs4Miw3IEBACiB0ZXJtaW5hbCBhbmQgXGZCY3Vyc2VzXGZSIGlucHV0IGFuZCBvdXRwdXQgb3B0aW9uczsgZW52aXJvbm1lbnQgcXVlcnkKIHJvdXRpbmVzOyBjb2xvciBtYW5pcHVsYXRpb247IHVzZSBvZiBzb2Z0IGxhYmVsIGtleXM7IHRlcm1pbmZvIGNhcGFiaWxpdGllczsKIGFuZCBhY2Nlc3MgdG8gbG93LWxldmVsIHRlcm1pbmFsLW1hbmlwdWxhdGlvbiByb3V0aW5lcy4KKy5TUyBJbml0aWFsaXphdGlvbgogLlBQCiBUaGUgbGlicmFyeSB1c2VzIHRoZSBsb2NhbGUgd2hpY2ggdGhlIGNhbGxpbmcgcHJvZ3JhbSBoYXMgaW5pdGlhbGl6ZWQuCiBUaGF0IGlzIG5vcm1hbGx5IGRvbmUgd2l0aCBcZkJzZXRsb2NhbGVcZlA6CkBAIC04MCw3ICs5MCw3IEBACiAgICAgICBcZkJzZXRsb2NhbGUoTENfQUxMLCAiIik7XGZQCiAuc3AKIElmIHRoZSBsb2NhbGUgaXMgbm90IGluaXRpYWxpemVkLAotdGhlIGxpYnJhcnkgYXNzdW1lcyB0aGF0IGNoYXJhY3RlcnMgYXJlIHByaW50YWJsZSBhcyBpbiBJU08tODg1OS0xLAordGhlIGxpYnJhcnkgYXNzdW1lcyB0aGF0IGNoYXJhY3RlcnMgYXJlIHByaW50YWJsZSBhcyBpbiBJU09cLTg4NTlcLTEsCiB0byB3b3JrIHdpdGggY2VydGFpbiBsZWdhY3kgcHJvZ3JhbXMuCiBZb3Ugc2hvdWxkIGluaXRpYWxpemUgdGhlIGxvY2FsZSBhbmQgbm90IHJlbHkgb24gc3BlY2lmaWMgZGV0YWlscyBvZgogdGhlIGxpYnJhcnkgd2hlbiB0aGUgbG9jYWxlIGhhcyBub3QgYmVlbiBzZXR1cC4KQEAgLTEwNSwxMCArMTE1LDExIEBACiAuc3AKIEJlZm9yZSBhIFxmQmN1cnNlc1xmUiBwcm9ncmFtIGlzIHJ1biwgdGhlIHRhYiBzdG9wcyBvZiB0aGUgdGVybWluYWwKIHNob3VsZCBiZSBzZXQgYW5kIGl0cyBpbml0aWFsaXphdGlvbiBzdHJpbmdzLCBpZiBkZWZpbmVkLCBtdXN0IGJlIG91dHB1dC4KLVRoaXMgY2FuIGJlIGRvbmUgYnkgZXhlY3V0aW5nIHRoZSBcZkJ0cHV0IGluaXRcZlIgY29tbWFuZAorVGhpcyBjYW4gYmUgZG9uZSBieSBleGVjdXRpbmcgdGhlIFxmQkBUUFVUQCBpbml0XGZSIGNvbW1hbmQKIGFmdGVyIHRoZSBzaGVsbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBcZkJURVJNXGZSIGhhcyBiZWVuIGV4cG9ydGVkLgotXGZCdHNldCgxKVxmUiBpcyB1c3VhbGx5IHJlc3BvbnNpYmxlIGZvciBkb2luZyB0aGlzLgorXGZCQFRTRVRAKDEpXGZSIGlzIHVzdWFsbHkgcmVzcG9uc2libGUgZm9yIGRvaW5nIHRoaXMuCiBbU2VlIFxmQnRlcm1pbmZvXGZSKFwqbikgZm9yIGZ1cnRoZXIgZGV0YWlscy5dCisuU1MgRGF0YXR5cGVzCiAuUFAKIFRoZSBcZkJuY3Vyc2VzXGZSIGxpYnJhcnkgcGVybWl0cyBtYW5pcHVsYXRpb24gb2YgZGF0YSBzdHJ1Y3R1cmVzLAogY2FsbGVkIFxmSXdpbmRvd3NcZlIsIHdoaWNoIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHR3by1kaW1lbnNpb25hbApAQCAtMTU4LDYgKzE2OSw3IEBACiBUaGUgdmlkZW8gYXR0cmlidXRlcywgbGluZQogZHJhd2luZyBjaGFyYWN0ZXJzLCBhbmQgaW5wdXQgdmFsdWVzIHVzZSBuYW1lcywgZGVmaW5lZCBpbiBcZkI8Y3Vyc2VzLmg+XGZSLAogc3VjaCBhcyBcZkJBX1JFVkVSU0VcZlIsIFxmQkFDU19ITElORVxmUiwgYW5kIFxmQktFWV9MRUZUXGZSLgorLlNTIEVudmlyb25tZW50IHZhcmlhYmxlcwogLlBQCiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIFxmQkxJTkVTXGZSIGFuZCBcZkJDT0xVTU5TXGZSIGFyZSBzZXQsIG9yIGlmIHRoZQogcHJvZ3JhbSBpcyBleGVjdXRpbmcgaW4gYSB3aW5kb3cgZW52aXJvbm1lbnQsIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBpbgpAQCAtMjMxLDkgKzI0Myw5IEBACiBUaGlzIG1hbnVhbCBwYWdlIGRlc2NyaWJlcyBmdW5jdGlvbnMgd2hpY2ggbWF5IGFwcGVhciBpbiBhbnkgY29uZmlndXJhdGlvbgogb2YgdGhlIGxpYnJhcnkuCiBUaGVyZSBhcmUgdHdvIGNvbW1vbiBjb25maWd1cmF0aW9ucyBvZiB0aGUgbGlicmFyeToKLS5SUworLlJTIDMKIC5UUCA1Ci1uY3Vyc2VzCisuSSBuY3Vyc2VzCiB0aGUgIm5vcm1hbCIgbGlicmFyeSwgd2hpY2ggaGFuZGxlcyA4LWJpdCBjaGFyYWN0ZXJzLgogVGhlIG5vcm1hbCAoOC1iaXQpIGxpYnJhcnkgc3RvcmVzIGNoYXJhY3RlcnMgY29tYmluZWQgd2l0aCBhdHRyaWJ1dGVzCiBpbiBcZkJjaHR5cGVcZlAgZGF0YS4KQEAgLTI0NCwxOSArMjU2LDE5IEBACiAuSVAKIEVhY2ggY2VsbCAocm93IGFuZCBjb2x1bW4pIGluIGEgXGZCV0lORE9XXGZQIGlzIHN0b3JlZCBhcyBhIFxmQmNodHlwZVxmUC4KIC5UUCA1Ci1uY3Vyc2VzdworLkkgbmN1cnNlc3cKIHRoZSBzby1jYWxsZWQgIndpZGUiIGxpYnJhcnksIHdoaWNoIGhhbmRsZXMgbXVsdGlieXRlIGNoYXJhY3RlcnMKLShTZWUgdGhlIHNlY3Rpb24gb24gXGZCQUxURVJOQVRFIENPTkZJR1VSQVRJT05TXGZQKS4KKyhzZWUgdGhlIHNlY3Rpb24gb24gXGZCQUxURVJOQVRFIENPTkZJR1VSQVRJT05TXGZQKS4KIFRoZSAid2lkZSIgbGlicmFyeSBpbmNsdWRlcyBhbGwgb2YgdGhlIGNhbGxzIGZyb20gdGhlICJub3JtYWwiIGxpYnJhcnkuCiBJdCBhZGRzIGFib3V0IG9uZSB0aGlyZCBtb3JlIGNhbGxzIHVzaW5nIGRhdGEgdHlwZXMgd2hpY2ggc3RvcmUKIG11bHRpYnl0ZSBjaGFyYWN0ZXJzOgotLlJTCisuUlMgNQogLlRQIDUKIC5CIGNjaGFyX3QKIGNvcnJlc3BvbmRzIHRvIFxmQmNodHlwZVxmUC4KIEhvd2V2ZXIgaXQgaXMgYSBzdHJ1Y3R1cmUsIGJlY2F1c2UgbW9yZSBkYXRhIGlzIHN0b3JlZCB0aGFuIGNhbiBmaXQgaW50bwogYW4gaW50ZWdlci4KLVRoZSBjaGFyYWN0ZXJzIGFyZSBsYXJnZSBlbm91Z2ggdG8gcmVxdWlyZSBhIGZ1bGwgaW50ZWdlciB2YWx1ZSAtIGFuZCB0aGVyZQorVGhlIGNoYXJhY3RlcnMgYXJlIGxhcmdlIGVub3VnaCB0byByZXF1aXJlIGEgZnVsbCBpbnRlZ2VyIHZhbHVlIFwtIGFuZCB0aGVyZQogbWF5IGJlIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyIHBlciBjZWxsLgogVGhlIHZpZGVvIGF0dHJpYnV0ZXMgYW5kIGNvbG9yIGFyZSBzdG9yZWQgaW4gc2VwYXJhdGUgZmllbGRzIG9mIHRoZSBzdHJ1Y3R1cmUuCiAuSVAKQEAgLTI2Nyw3ICsyNzksNyBAQAogTGlrZSBcZkJjaHR5cGVcZlAsIHRoaXMgbWF5IGJlIGFuIGludGVnZXIuCiAuVFAgNQogLkIgd2ludF90Ci1zdG9yZXMgYSBcZkJ3Y2hhcl90XGZQIG9yIFxmQldFT0ZcZlAgLSBub3QgdGhlIHNhbWUsIHRob3VnaCBib3RoIG1heSBoYXZlCitzdG9yZXMgYSBcZkJ3Y2hhcl90XGZQIG9yIFxmQldFT0ZcZlAgXC0gbm90IHRoZSBzYW1lLCB0aG91Z2ggYm90aCBtYXkgaGF2ZQogdGhlIHNhbWUgc2l6ZS4KIC5SRQogLklQCkBAIC00MzIsNyArNDQ0LDkgQEAKIGlzX2xpbmV0b3VjaGVkL1xmQmN1cnNfdG91Y2hcZlIoM1gpCiBpc19ub2RlbGF5L1xmQmN1cnNfb3BhcXVlXGZSKDNYKSoKIGlzX25vdGltZW91dC9cZkJjdXJzX29wYXF1ZVxmUigzWCkqCitpc19wYWQvXGZCY3Vyc19vcGFxdWVcZlIoM1gpKgogaXNfc2Nyb2xsb2svXGZCY3Vyc19vcGFxdWVcZlIoM1gpKgoraXNfc3Vid2luL1xmQmN1cnNfb3BhcXVlXGZSKDNYKSoKIGlzX3N5bmNvay9cZkJjdXJzX29wYXF1ZVxmUigzWCkqCiBpc190ZXJtX3Jlc2l6ZWQvXGZCcmVzaXpldGVybVxmUigzWCkqCiBpc193aW50b3VjaGVkL1xmQmN1cnNfdG91Y2hcZlIoM1gpCkBAIC01NjUsNiArNTc5LDcgQEAKIHJlc2V0X3Byb2dfbW9kZS9cZkJjdXJzX2tlcm5lbFxmUigzWCkKIHJlc2V0X3NoZWxsX21vZGUvXGZCY3Vyc19rZXJuZWxcZlIoM1gpCiByZXNldHR5L1xmQmN1cnNfa2VybmVsXGZSKDNYKQorcmVzaXplX3Rlcm0vXGZCcmVzaXpldGVybVxmUigzWCkqCiByZXNpemV0ZXJtL1xmQnJlc2l6ZXRlcm1cZlIoM1gpKgogcmVzdGFydHRlcm0vXGZCY3Vyc190ZXJtaW5mb1xmUigzWCkKIHJpcG9mZmxpbmUvXGZCY3Vyc19rZXJuZWxcZlIoM1gpCkBAIC02MTcsNiArNjMyLDcgQEAKIHRpZ2V0ZmxhZy9cZkJjdXJzX3Rlcm1pbmZvXGZSKDNYKQogdGlnZXRudW0vXGZCY3Vyc190ZXJtaW5mb1xmUigzWCkKIHRpZ2V0c3RyL1xmQmN1cnNfdGVybWluZm9cZlIoM1gpCit0aXBhcm0vXGZCY3Vyc190ZXJtaW5mb1xmUigzWCkqCiB0aW1lb3V0L1xmQmN1cnNfaW5vcHRzXGZSKDNYKQogdG91Y2hsaW5lL1xmQmN1cnNfdG91Y2hcZlIoM1gpCiB0b3VjaHdpbi9cZkJjdXJzX3RvdWNoXGZSKDNYKQpAQCAtNjM0LDYgKzY1MCw3IEBACiB1c2VfZW52L1xmQmN1cnNfdXRpbFxmUigzWCkKIHVzZV9leHRlbmRlZF9uYW1lcy9cZkJjdXJzX2V4dGVuZFxmUigzWCkqCiB1c2VfbGVnYWN5X2NvZGluZy9cZkJsZWdhY3lfY29kaW5nXGZSKDNYKSoKK3VzZV90aW9jdGwvXGZCY3Vyc191dGlsXGZSKDNYKQogdmlkX2F0dHIvXGZCY3Vyc190ZXJtaW5mb1xmUigzWCkKIHZpZF9wdXRzL1xmQmN1cnNfdGVybWluZm9cZlIoM1gpCiB2aWRhdHRyL1xmQmN1cnNfdGVybWluZm9cZlIoM1gpCkBAIC02ODMsOCArNzAwLDExIEBACiB3Z2V0X3dzdHIvXGZCY3Vyc19nZXRfd3N0clxmUigzWCkKIHdnZXRia2dybmQvXGZCY3Vyc19ia2dybmRcZlIoM1gpCiB3Z2V0Y2gvXGZCY3Vyc19nZXRjaFxmUigzWCkKK3dnZXRkZWxheS9cZkJjdXJzX29wYXF1ZVxmUigzWCkqCiB3Z2V0bl93c3RyL1xmQmN1cnNfZ2V0X3dzdHJcZlIoM1gpCiB3Z2V0bnN0ci9cZkJjdXJzX2dldHN0clxmUigzWCkKK3dnZXRwYXJlbnQvXGZCY3Vyc19vcGFxdWVcZlIoM1gpKgord2dldHNjcnJlZy9cZkJjdXJzX29wYXF1ZVxmUigzWCkqCiB3Z2V0c3RyL1xmQmN1cnNfZ2V0c3RyXGZSKDNYKQogd2hsaW5lL1xmQmN1cnNfYm9yZGVyXGZSKDNYKQogd2hsaW5lX3NldC9cZkJjdXJzX2JvcmRlcl9zZXRcZlIoM1gpCkBAIC03MzEsOSArNzUxLDE2IEBACiBpbnRlZ2VyIHZhbHVlIG90aGVyIHRoYW4gXGZCRVJSXGZSIHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCB1bmxlc3MKIG90aGVyd2lzZSBub3RlZCBpbiB0aGUgcm91dGluZSBkZXNjcmlwdGlvbnMuCiAuUFAKK0FzIGEgZ2VuZXJhbCBydWxlLCByb3V0aW5lcyBjaGVjayBmb3IgbnVsbCBwb2ludGVycyBwYXNzZWQgYXMgcGFyYW1ldGVycywKK2FuZCBoYW5kbGUgdGhpcyBhcyBhbiBlcnJvci4KKy5QUAogQWxsIG1hY3JvcyByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBcZkJ3XGZSIHZlcnNpb24sIGV4Y2VwdCBcZkJzZXRzY3JyZWdcZlIsCiBcZkJ3c2V0c2NycmVnXGZSLCBcZkJnZXR5eFxmUiwgXGZCZ2V0YmVneXhcZlIsIGFuZCBcZkJnZXRtYXh5eFxmUi4KLVRoZSByZXR1cm4gdmFsdWVzIG9mIFxmQnNldHNjcnJlZ1xmUiwgXGZCd3NldHNjcnJlZ1xmUiwgXGZCZ2V0eXhcZlIsIFxmQmdldGJlZ3l4XGZSLCBhbmQKK1RoZSByZXR1cm4gdmFsdWVzIG9mCitcZkJzZXRzY3JyZWdcZlIsCitcZkJ3c2V0c2NycmVnXGZSLAorXGZCZ2V0eXhcZlIsCitcZkJnZXRiZWd5eFxmUiwgYW5kCiBcZkJnZXRtYXh5eFxmUiBhcmUgdW5kZWZpbmVkIChpLmUuLCB0aGVzZSBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlCiByaWdodC1oYW5kIHNpZGUgb2YgYXNzaWdubWVudCBzdGF0ZW1lbnRzKS4KIC5QUApAQCAtNzQyLDgzICs3NjksODIgQEAKIFRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgc3ltYm9scyBhcmUgdXNlZnVsIGZvciBjdXN0b21pemluZyB0aGUKIHJ1bnRpbWUgYmVoYXZpb3Igb2YgdGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeS4KIFRoZSBtb3N0IGltcG9ydGFudCBvbmVzIGhhdmUgYmVlbiBhbHJlYWR5IGRpc2N1c3NlZCBpbiBkZXRhaWwuCi0uVFAgNQotQkFVRFJBVEUKLVRoZSBkZWJ1Z2dpbmcgbGlicmFyeSBjaGVja3MgdGhpcyBlbnZpcm9ubWVudCBzeW1ib2wgd2hlbiB0aGUgYXBwbGljYXRpb24KKy5TUyBDQworV2hlbiBzZXQsIGNoYW5nZSBvY2N1cnJlbmNlcyBvZiB0aGUgY29tbWFuZF9jaGFyYWN0ZXIKKyhpLmUuLCB0aGUgXGZCY21kY2hcZlAgY2FwYWJpbGl0eSkKK29mIHRoZSBsb2FkZWQgdGVybWluZm8gZW50cmllcyB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZS4KK1ZlcnkgZmV3IHRlcm1pbmZvIGVudHJpZXMgcHJvdmlkZSB0aGlzIGZlYXR1cmUuCisuUFAKK0JlY2F1c2UgdGhpcyBuYW1lIGlzIGFsc28gdXNlZCBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgdG8gcmVwcmVzZW50Cit0aGUgQyBjb21waWxlcidzIG5hbWUsIFxmQm5jdXJzZXNcZlIgaWdub3JlcyBpdCBpZiBpdCBkb2VzIG5vdCBoYXBwZW4gdG8KK2JlIGEgc2luZ2xlIGNoYXJhY3Rlci4KKy5TUyBCQVVEUkFURQorVGhlIGRlYnVnZ2luZyBsaWJyYXJ5IGNoZWNrcyB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gdGhlIGFwcGxpY2F0aW9uCiBoYXMgcmVkaXJlY3RlZCBvdXRwdXQgdG8gYSBmaWxlLgotVGhlIHN5bWJvbCdzIG51bWVyaWMgdmFsdWUgaXMgdXNlZCBmb3IgdGhlIGJhdWRyYXRlLgorVGhlIHZhcmlhYmxlJ3MgbnVtZXJpYyB2YWx1ZSBpcyB1c2VkIGZvciB0aGUgYmF1ZHJhdGUuCiBJZiBubyB2YWx1ZSBpcyBmb3VuZCwgXGZCbmN1cnNlc1xmUiB1c2VzIDk2MDAuCiBUaGlzIGFsbG93cyB0ZXN0ZXJzIHRvIGNvbnN0cnVjdCByZXBlYXRhYmxlIHRlc3QtY2FzZXMKIHRoYXQgdGFrZSBpbnRvIGFjY291bnQgY29zdHMgdGhhdCBkZXBlbmQgb24gYmF1ZHJhdGUuCi0uVFAgNQotQ0MKLVdoZW4gc2V0LCBjaGFuZ2Ugb2NjdXJyZW5jZXMgb2YgdGhlIGNvbW1hbmRfY2hhcmFjdGVyCi0oaS5lLiwgdGhlIFxmQmNtZGNoXGZQIGNhcGFiaWxpdHkpCi1vZiB0aGUgbG9hZGVkIHRlcm1pbmZvIGVudHJpZXMgdG8gdGhlIHZhbHVlIG9mIHRoaXMgc3ltYm9sLgotVmVyeSBmZXcgdGVybWluZm8gZW50cmllcyBwcm92aWRlIHRoaXMgZmVhdHVyZS4KLS5UUCA1Ci1DT0xVTU5TCisuU1MgQ09MVU1OUwogU3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIHNjcmVlbiBpbiBjaGFyYWN0ZXJzLgogQXBwbGljYXRpb25zIHJ1bm5pbmcgaW4gYSB3aW5kb3dpbmcgZW52aXJvbm1lbnQgdXN1YWxseSBhcmUgYWJsZSB0bwogb2J0YWluIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93IGluIHdoaWNoIHRoZXkgYXJlIGV4ZWN1dGluZy4KIElmIG5laXRoZXIgdGhlIFxmQkNPTFVNTlNcZlAgdmFsdWUgbm9yIHRoZSB0ZXJtaW5hbCdzIHNjcmVlbiBzaXplIGlzIGF2YWlsYWJsZSwKIFxmQm5jdXJzZXNcZlIgdXNlcyB0aGUgc2l6ZSB3aGljaCBtYXkgYmUgc3BlY2lmaWVkIGluIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZQogKGkuZS4sIHRoZSBcZkJjb2xzXGZSIGNhcGFiaWxpdHkpLgotLklQCisuUFAKIEl0IGlzIGltcG9ydGFudCB0aGF0IHlvdXIgYXBwbGljYXRpb24gdXNlIGEgY29ycmVjdCBzaXplIGZvciB0aGUgc2NyZWVuLgogVGhpcyBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIGJlY2F1c2UgeW91ciBhcHBsaWNhdGlvbiBtYXkgYmUKIHJ1bm5pbmcgb24gYSBob3N0IHdoaWNoIGRvZXMgbm90IGhvbm9yIE5BV1MgKE5lZ290aWF0aW9ucyBBYm91dCBXaW5kb3cKIFNpemUpLCBvciBiZWNhdXNlIHlvdSBhcmUgdGVtcG9yYXJpbHkgcnVubmluZyBhcyBhbm90aGVyIHVzZXIuCiBIb3dldmVyLCBzZXR0aW5nIFxmQkNPTFVNTlNcZlAgYW5kL29yIFxmQkxJTkVTXGZQIG92ZXJyaWRlcyB0aGUgbGlicmFyeSdzCiB1c2Ugb2YgdGhlIHNjcmVlbiBzaXplIG9idGFpbmVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uCi0uSVAKKy5QUAogRWl0aGVyIFxmQkNPTFVNTlNcZlAgb3IgXGZCTElORVNcZlAgc3ltYm9scyBtYXkgYmUgc3BlY2lmaWVkIGluZGVwZW5kZW50bHkuCiBUaGlzIGlzIG1haW5seSB1c2VmdWwgdG8gY2lyY3VtdmVudCBsZWdhY3kgbWlzZmVhdHVyZXMgb2YgdGVybWluYWwgZGVzY3JpcHRpb25zLAogZS5nLiwgeHRlcm0gd2hpY2ggY29tbW9ubHkgc3BlY2lmaWVzIGEgNjUgbGluZSBzY3JlZW4uCiBGb3IgYmVzdCByZXN1bHRzLCBcZkJsaW5lc1xmUiBhbmQgXGZCY29sc1xmUiBzaG91bGQgbm90IGJlIHNwZWNpZmllZCBpbgogYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBmb3IgdGVybWluYWxzIHdoaWNoIGFyZSBydW4gYXMgZW11bGF0aW9ucy4KLS5JUAorLlBQCiBVc2UgdGhlIFxmQnVzZV9lbnZcZlIgZnVuY3Rpb24gdG8gZGlzYWJsZSBhbGwgdXNlIG9mIGV4dGVybmFsIGVudmlyb25tZW50Ci0oaW5jbHVkaW5nIHN5c3RlbSBjYWxscykgdG8gZGV0ZXJtaW5lIHRoZSBzY3JlZW4gc2l6ZS4KLS5UUCA1Ci1FU0NERUxBWQorKGJ1dCBub3QgaW5jbHVkaW5nIHN5c3RlbSBjYWxscykgdG8gZGV0ZXJtaW5lIHRoZSBzY3JlZW4gc2l6ZS4KK1VzZSB0aGUgXGZCdXNlX3Rpb2N0bFxmUiBmdW5jdGlvbiB0byB1cGRhdGUgXGZCQ09MVU1OU1xmUCBvciBcZkJMSU5FU1xmUAordG8gbWF0Y2ggdGhlIHNjcmVlbiBzaXplIG9idGFpbmVkIGZyb20gc3lzdGVtIGNhbGxzIG9yIHRoZSB0ZXJtaW5hbCBkYXRhYmFzZS4KKy5TUyBFU0NERUxBWQogU3BlY2lmaWVzIHRoZSB0b3RhbCB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGZvciB3aGljaCBuY3Vyc2VzIHdpbGwKIGF3YWl0IGEgY2hhcmFjdGVyIHNlcXVlbmNlLCBlLmcuLCBhIGZ1bmN0aW9uIGtleS4KIFRoZSBkZWZhdWx0IHZhbHVlLCAxMDAwIG1pbGxpc2Vjb25kcywgaXMgZW5vdWdoIGZvciBtb3N0IHVzZXMuCiBIb3dldmVyLCBpdCBpcyBtYWRlIGEgdmFyaWFibGUgdG8gYWNjb21tb2RhdGUgdW51c3VhbCBhcHBsaWNhdGlvbnMuCi0uSVAKKy5QUAogVGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIHdoZXJlIHlvdSBtYXkgd2lzaCB0byBjaGFuZ2UgdGhpcyB2YWx1ZQogaXMgdG8gd29yayB3aXRoIHNsb3cgaG9zdHMsIGUuZy4sIHJ1bm5pbmcgb24gYSBuZXR3b3JrLgogSWYgdGhlIGhvc3QgY2Fubm90IHJlYWQgY2hhcmFjdGVycyByYXBpZGx5IGVub3VnaCwgaXQgd2lsbCBoYXZlIHRoZSBzYW1lCiBlZmZlY3QgYXMgaWYgdGhlIHRlcm1pbmFsIGRpZCBub3Qgc2VuZCBjaGFyYWN0ZXJzIHJhcGlkbHkgZW5vdWdoLgogVGhlIGxpYnJhcnkgd2lsbCBzdGlsbCBzZWUgYSB0aW1lb3V0LgotLklQCisuUFAKIE5vdGUgdGhhdCB4dGVybSBtb3VzZSBldmVudHMgYXJlIGJ1aWx0IHVwIGZyb20gY2hhcmFjdGVyIHNlcXVlbmNlcwogcmVjZWl2ZWQgZnJvbSB0aGUgeHRlcm0uCiBJZiB5b3VyIGFwcGxpY2F0aW9uIG1ha2VzIGhlYXZ5IHVzZSBvZiBtdWx0aXBsZS1jbGlja2luZywgeW91IG1heQogd2lzaCB0byBsZW5ndGhlbiB0aGlzIGRlZmF1bHQgdmFsdWUgYmVjYXVzZSB0aGUgdGltZW91dCBhcHBsaWVzCiB0byB0aGUgY29tcG9zZWQgbXVsdGktY2xpY2sgZXZlbnQgYXMgd2VsbCBhcyB0aGUgaW5kaXZpZHVhbCBjbGlja3MuCi0uSVAKKy5QUAogSW4gYWRkaXRpb24gdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLAogdGhpcyBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBhIGdsb2JhbCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIG5hbWUuCiBQb3J0YWJsZSBhcHBsaWNhdGlvbnMgc2hvdWxkIG5vdCByZWx5IHVwb24gdGhlIHByZXNlbmNlIG9mIEVTQ0RFTEFZCiBpbiBlaXRoZXIgZm9ybSwKIGJ1dCBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsIHZhcmlhYmxlCiBkb2VzIG5vdCBjcmVhdGUgcHJvYmxlbXMgd2hlbiBjb21waWxpbmcgYW4gYXBwbGljYXRpb24uCi0uVFAgNQotSE9NRQorLlNTIEhPTUUKIFRlbGxzIFxmQm5jdXJzZXNcZlIgd2hlcmUgeW91ciBob21lIGRpcmVjdG9yeSBpcy4KIFRoYXQgaXMgd2hlcmUgaXQgbWF5IHJlYWQgYW5kIHdyaXRlIGF1eGlsaWFyeSB0ZXJtaW5hbCBkZXNjcmlwdGlvbnM6Ci0uSVAKKy5QUAogJEhPTUUvLnRlcm1jYXAKIC5icgogJEhPTUUvLnRlcm1pbmZvCi0uVFAgNQotTElORVMKKy5TUyBMSU5FUwogTGlrZSBDT0xVTU5TLCBzcGVjaWZ5IHRoZSBoZWlnaHQgb2YgdGhlIHNjcmVlbiBpbiBjaGFyYWN0ZXJzLgogU2VlIENPTFVNTlMgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24uCi0uVFAgNQotTU9VU0VfQlVUVE9OU18xMjMKKy5TUyBNT1VTRV9CVVRUT05TXzEyMwogVGhpcyBhcHBsaWVzIG9ubHkgdG8gdGhlIE9TLzIgRU1YIHBvcnQuCiBJdCBzcGVjaWZpZXMgdGhlIG9yZGVyIG9mIGJ1dHRvbnMgb24gdGhlIG1vdXNlLgogT1MvMiBudW1iZXJzIGEgMy1idXR0b24gbW91c2UgaW5jb25zaXN0ZW50bHkgZnJvbSBvdGhlcgpAQCAtODMwLDQ3ICs4NTYsNTIgQEAKIC5icgogMyA9IG1pZGRsZS4KIC5zcAotVGhpcyBzeW1ib2wgbGV0cyB5b3UgY3VzdG9taXplIHRoZSBtb3VzZS4KLVRoZSBzeW1ib2wgbXVzdCBiZSB0aHJlZSBudW1lcmljIGRpZ2l0cyAxLTMgaW4gYW55IG9yZGVyLCBlLmcuLCAxMjMgb3IgMzIxLgorVGhpcyB2YXJpYWJsZSBsZXRzIHlvdSBjdXN0b21pemUgdGhlIG1vdXNlLgorVGhlIHZhcmlhYmxlIG11c3QgYmUgdGhyZWUgbnVtZXJpYyBkaWdpdHMgMVwtMyBpbiBhbnkgb3JkZXIsIGUuZy4sIDEyMyBvciAzMjEuCiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCBcZkJuY3Vyc2VzXGZSIHVzZXMgMTMyLgotLlRQIDUKLU5DVVJTRVNfQVNTVU1FRF9DT0xPUlMKKy5TUyBOQ1VSU0VTX0FTU1VNRURfQ09MT1JTCiBPdmVycmlkZSB0aGUgY29tcGlsZWQtaW4gYXNzdW1wdGlvbiB0aGF0IHRoZQogdGVybWluYWwncyBkZWZhdWx0IGNvbG9ycyBhcmUgd2hpdGUtb24tYmxhY2sKIChzZWUgXGZCZGVmYXVsdF9jb2xvcnNcZlIoM1gpKS4KIFlvdSBtYXkgc2V0IHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9yIHZhbHVlcyB3aXRoIHRoaXMgZW52aXJvbm1lbnQKIHZhcmlhYmxlIGJ5IHByb3ZpbmcgYSAyLWVsZW1lbnQgbGlzdDogZm9yZWdyb3VuZCxiYWNrZ3JvdW5kLgogRm9yIGV4YW1wbGUsIHRvIHRlbGwgbmN1cnNlcyB0byBub3QgYXNzdW1lIGFueXRoaW5nCi1hYm91dCB0aGUgY29sb3JzLCBzZXQgdGhpcyB0byAiLTEsLTEiLgorYWJvdXQgdGhlIGNvbG9ycywgc2V0IHRoaXMgdG8gIlwtMSxcLTEiLgogVG8gbWFrZSBpdCBncmVlbi1vbi1ibGFjaywgc2V0IGl0IHRvICIyLDAiLgogQW55IHBvc2l0aXZlIHZhbHVlIGZyb20gemVybyB0byB0aGUgdGVybWluZm8gXGZCbWF4X2NvbG9yc1xmUiB2YWx1ZSBpcyBhbGxvd2VkLgotLlRQIDUKLU5DVVJTRVNfR1BNX1RFUk1TCisuU1MgTkNVUlNFU19DT05TT0xFMgorVGhpcyBhcHBsaWVzIG9ubHkgdG8gdGhlIE1pbkdXIHBvcnQgb2YgbmN1cnNlcy4KKy5QUAorVGhlIFxmQkNvbnNvbGUyXGZQIHByb2dyYW0ncyBoYW5kbGluZyBvZiB0aGUgTWljcm9zb2Z0IENvbnNvbGUgQVBJIGNhbGwKK1xmQkNyZWF0ZUNvbnNvbGVTY3JlZW5CdWZmZXJcZlAgaXMgZGVmZWN0aXZlLgorQXBwbGljYXRpb25zIHdoaWNoIHVzZSB0aGlzIHdpbGwgaGFuZy4KK0hvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIHNpbXVsYXRlIHRoZSBhY3Rpb24gb2YgdGhpcyBjYWxsIGJ5CittYXBwaW5nIGNvb3JkaW5hdGVzLAorZXhwbGljaXRseSBzYXZpbmcgYW5kIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgc2NyZWVuIGNvbnRlbnRzLgorU2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgXGZCTkNHREJcZlAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KKy5TUyBOQ1VSU0VTX0dQTV9URVJNUwogVGhpcyBhcHBsaWVzIG9ubHkgdG8gbmN1cnNlcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgR1BNIGludGVyZmFjZS4KLS5JUAorLlBQCiBJZiBwcmVzZW50LAogdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGEgbGlzdCBvZiBvbmUgb3IgbW9yZSB0ZXJtaW5hbCBuYW1lcwogYWdhaW5zdCB3aGljaCB0aGUgVEVSTSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtYXRjaGVkLgogU2V0dGluZyBpdCB0byBhbiBlbXB0eSB2YWx1ZSBkaXNhYmxlcyB0aGUgR1BNIGludGVyZmFjZTsKIHVzaW5nIHRoZSBidWlsdC1pbiBzdXBwb3J0IGZvciB4dGVybSwgZXRjLgotLklQCisuUFAKIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBhYnNlbnQsCiBuY3Vyc2VzIHdpbGwgYXR0ZW1wdCB0byBvcGVuIEdQTSBpZiBURVJNIGNvbnRhaW5zICJsaW51eCIuCi0uVFAgNQotTkNVUlNFU19OT19IQVJEX1RBQlMKKy5TUyBOQ1VSU0VTX05PX0hBUkRfVEFCUwogXGZCTmN1cnNlc1xmUCBtYXkgdXNlIHRhYnMgYXMgcGFydCBvZiB0aGUgY3Vyc29yIG1vdmVtZW50IG9wdGltaXphdGlvbi4KIEluIHNvbWUgY2FzZXMsCiB5b3VyIHRlcm1pbmFsIGRyaXZlciBtYXkgbm90IGhhbmRsZSB0aGVzZSBwcm9wZXJseS4KIFNldCB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRpc2FibGUgdGhlIGZlYXR1cmUuCiBZb3UgY2FuIGFsc28gYWRqdXN0IHlvdXIgXGZCc3R0eVxmUCBzZXR0aW5ncyB0byBhdm9pZCB0aGUgcHJvYmxlbS4KLS5UUCA1Ci1OQ1VSU0VTX05PX01BR0lDX0NPT0tJRVMKK05DVVJTRVNfTk9fTUFHSUNfQ09PS0lFCiBTb21lIHRlcm1pbmFscyB1c2UgYSBtYWdpYy1jb29raWUgZmVhdHVyZSB3aGljaCByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nCiB0byBtYWtlIGhpZ2hsaWdodGluZyBhbmQgb3RoZXIgdmlkZW8gYXR0cmlidXRlcyBkaXNwbGF5IHByb3Blcmx5LgogWW91IGNhbiBzdXBwcmVzcyB0aGUgaGlnaGxpZ2h0aW5nIGVudGlyZWx5IGZvciB0aGVzZSB0ZXJtaW5hbHMgYnkKIHNldHRpbmcgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLS5UUCA1Ci1OQ1VSU0VTX05PX1BBRERJTkcKKy5TUyBOQ1VSU0VTX05PX1BBRERJTkcKIE1vc3Qgb2YgdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyBpbiB0aGUgdGVybWluZm8gZGF0YWJhc2UgYXJlIHdyaXR0ZW4KIGZvciByZWFsICJoYXJkd2FyZSIgdGVybWluYWxzLgogTWFueSBwZW9wbGUgdXNlIHRlcm1pbmFsIGVtdWxhdG9ycwpAQCAtODg2LDMyICs5MTcsNTUgQEAKIFRoZSBjaGVhcGVzdCBzb2x1dGlvbiAobm8gaGFyZHdhcmUgY29zdCkKIGlzIGZvciB5b3VyIHByb2dyYW0gdG8gZG8gdGhpcyBieSBwYXVzaW5nIGFmdGVyCiBvcGVyYXRpb25zIHRoYXQgdGhlIHRlcm1pbmFsIGRvZXMgc2xvd2x5LCBzdWNoIGFzIGNsZWFyaW5nIHRoZSBkaXNwbGF5LgotLklQCisuUFAKIEFzIGEgcmVzdWx0LCBtYW55IHRlcm1pbmFsIGRlc2NyaXB0aW9ucyAoaW5jbHVkaW5nIHRoZSB2dDEwMCkKIGhhdmUgZGVsYXkgdGltZXMgZW1iZWRkZWQuCiBZb3UgbWF5IHdpc2ggdG8gdXNlIHRoZXNlIGRlc2NyaXB0aW9ucywKIGJ1dCBub3Qgd2FudCB0byBwYXkgdGhlIHBlcmZvcm1hbmNlIHBlbmFsdHkuCi0uSVAKLVNldCB0aGUgTkNVUlNFU19OT19QQURESU5HIHN5bWJvbCB0byBkaXNhYmxlIGFsbCBidXQgbWFuZGF0b3J5CisuUFAKK1NldCB0aGUgTkNVUlNFU19OT19QQURESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRpc2FibGUgYWxsIGJ1dCBtYW5kYXRvcnkKIHBhZGRpbmcuCiBNYW5kYXRvcnkgcGFkZGluZyBpcyB1c2VkIGFzIGEgcGFydCBvZiBzcGVjaWFsIGNvbnRyb2wKIHNlcXVlbmNlcyBzdWNoIGFzIFxmSWZsYXNoXGZSLgotLlRQIDUKLU5DVVJTRVNfTk9fU0VUQlVGCi1Ob3JtYWxseSBcZkJuY3Vyc2VzXGZSIGVuYWJsZXMgYnVmZmVyZWQgb3V0cHV0IGR1cmluZyB0ZXJtaW5hbCBpbml0aWFsaXphdGlvbi4KLVRoaXMgaXMgZG9uZSAoYXMgaW4gU1ZyNCBjdXJzZXMpIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorLlNTIE5DVVJTRVNfTk9fU0VUQlVGCitUaGlzIHNldHRpbmcgaXMgb2Jzb2xldGUuCitCZWZvcmUgY2hhbmdlcworLlJTIDMKKy5iUAorc3RhcnRlZCB3aXRoIDUuOSBwYXRjaCAyMDEyMDgyNQorYW5kCisuYlAKK2NvbnRpbnVlZAordGhvdWdoIDUuOSBwYXRjaCAyMDEzMDEyNgorLlJFCisuUFAKK1xmQm5jdXJzZXNcZlIgZW5hYmxlZCBidWZmZXJlZCBvdXRwdXQgZHVyaW5nIHRlcm1pbmFsIGluaXRpYWxpemF0aW9uLgorVGhpcyB3YXMgZG9uZSAoYXMgaW4gU1ZyNCBjdXJzZXMpIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgogRm9yIHRlc3RpbmcgcHVycG9zZXMsIGJvdGggb2YgXGZCbmN1cnNlc1xmUiBhbmQgY2VydGFpbiBhcHBsaWNhdGlvbnMsCi10aGlzIGZlYXR1cmUgaXMgbWFkZSBvcHRpb25hbC4KK3RoaXMgZmVhdHVyZSB3YXMgbWFkZSBvcHRpb25hbC4KIFNldHRpbmcgdGhlIE5DVVJTRVNfTk9fU0VUQlVGIHZhcmlhYmxlCi1kaXNhYmxlcyBvdXRwdXQgYnVmZmVyaW5nLCBsZWF2aW5nIHRoZSBvdXRwdXQgaW4gdGhlIG9yaWdpbmFsICh1c3VhbGx5CitkaXNhYmxlZCBvdXRwdXQgYnVmZmVyaW5nLCBsZWF2aW5nIHRoZSBvdXRwdXQgaW4gdGhlIG9yaWdpbmFsICh1c3VhbGx5CiBsaW5lIGJ1ZmZlcmVkKSBtb2RlLgotLlRQIDUKLU5DVVJTRVNfTk9fVVRGOF9BQ1MKKy5QUAorSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sCituY3Vyc2VzIHBlcmZvcm1zIGl0cyBvd24gYnVmZmVyaW5nIGFuZCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgd29ya2Fyb3VuZC4KK0l0IGRvZXMgbm90IG1vZGlmeSB0aGUgYnVmZmVyaW5nIG9mIHRoZSBzdGFuZGFyZCBvdXRwdXQuCisuUFAKK1RoZSByZWFzb24gZm9yIHRoZSBjaGFuZ2Ugd2FzIHRvIG1ha2UgdGhlIGJlaGF2aW9yIGZvciBpbnRlcnJ1cHRzIGFuZAorb3RoZXIgc2lnbmFscyBtb3JlIHJvYnVzdC4KK09uZSBkcmF3YmFjayBpcyB0aGF0IGNlcnRhaW4gbm9uY29udmVudGlvbmFsIHByb2dyYW1zIHdvdWxkIG1peAorb3JkaW5hcnkgc3RkaW8gY2FsbHMgd2l0aCBuY3Vyc2VzIGNhbGxzIGFuZCAodXN1YWxseSkgd29yay4KK1RoaXMgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHNpbmNlIG5jdXJzZXMgaXMgbm90IHVzaW5nCit0aGUgYnVmZmVyZWQgc3RhbmRhcmQgb3V0cHV0IGJ1dCBpdHMgb3duIG91dHB1dCAodG8gdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yKS4KK0FzIGEgc3BlY2lhbCBjYXNlLCB0aGUgbG93LWxldmVsIGNhbGxzIHN1Y2ggYXMgXGZCcHV0cFxmUCBzdGlsbCB1c2UgdGhlCitzdGFuZGFyZCBvdXRwdXQuCitCdXQgaGlnaC1sZXZlbCBjdXJzZXMgY2FsbHMgZG8gbm90LgorLlNTIE5DVVJTRVNfTk9fVVRGOF9BQ1MKIER1cmluZyBpbml0aWFsaXphdGlvbiwgdGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeQogY2hlY2tzIGZvciBzcGVjaWFsIGNhc2VzIHdoZXJlIFZUMTAwIGxpbmUtZHJhd2luZyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nCiBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCBjYXBhYmlsaXRpZXMpIGRlc2NyaWJlZCBpbiB0aGUgdGVybWluZm8gYXJlIGtub3duCiB0byBiZSBtaXNzaW5nLgotU3BlY2lmaWNhbGx5LCB3aGVuIHJ1bm5pbmcgaW4gYSBVVEYtOCBsb2NhbGUsCitTcGVjaWZpY2FsbHksIHdoZW4gcnVubmluZyBpbiBhIFVURlwtOCBsb2NhbGUsCiB0aGUgTGludXggY29uc29sZSBlbXVsYXRvciBhbmQgdGhlIEdOVSBzY3JlZW4gcHJvZ3JhbSBpZ25vcmUgdGhlc2UuCiBOY3Vyc2VzIGNoZWNrcyB0aGUgVEVSTSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlc2UuCiBGb3Igb3RoZXIgc3BlY2lhbCBjYXNlcywgeW91IHNob3VsZCBzZXQgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KQEAgLTkxOSw3OCArOTczLDEyNyBAQAogdGhlIFZUMTAwIGxpbmUtZHJhd2luZyBnbHlwaHMuCiBUaGF0IHdvcmtzIGZvciB0aGUgc3BlY2lhbCBjYXNlcyBjaXRlZCwKIGFuZCBpcyBsaWtlbHkgdG8gd29yayBmb3IgdGVybWluYWwgZW11bGF0b3JzLgotLklQCisuUFAKIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHNldCBpdCB0byBhIG5vbnplcm8gdmFsdWUuCiBTZXR0aW5nIGl0IHRvIHplcm8gKG9yIHRvIGEgbm9ubnVtYmVyKQotZGlzYWJsZXMgdGhlIHNwZWNpYWwgY2hlY2sgZm9yIExpbnV4IGFuZCBzY3JlZW4uCi0uVFAgNQotTkNVUlNFU19UUkFDRQorZGlzYWJsZXMgdGhlIHNwZWNpYWwgY2hlY2sgZm9yICJsaW51eCIgYW5kICJzY3JlZW4iLgorLlBQCitBcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsCituY3Vyc2VzIGNoZWNrcyBmb3IgYW4gZXh0ZW5kZWQgdGVybWluZm8gY2FwYWJpbGl0eSBcZkJVOFxmUC4KK1RoaXMgaXMgYSBudW1lcmljIGNhcGFiaWxpdHkgd2hpY2ggY2FuIGJlIGNvbXBpbGVkIHVzaW5nIFxmQkBUSUNAXCBcLXhcZlAuCitGb3IgZXhhbXBsZQorLlJTIDMKKy5mdCBDVworLnNwCisubmYKKyMgbGludXggY29uc29sZSwgaWYgcGF0Y2hlZCB0byBwcm92aWRlIHdvcmtpbmcKKyMgVlQxMDAgc2hpZnQtaW4vc2hpZnQtb3V0LCB3aXRoIGNvcnJlc3BvbmRpbmcgZm9udC4KK2xpbnV4LXZ0MTAwfGxpbnV4IGNvbnNvbGUgd2l0aCBWVDEwMCBsaW5lLWdyYXBoaWNzLAorICAgICAgICBVOCMwLCB1c2U9bGludXgsCisuc3AKKyMgdXh0ZXJtIHdpdGggdnQxMDBHcmFwaGljcyByZXNvdXJjZSBzZXQgdG8gZmFsc2UKK3h0ZXJtLXV0Zjh8eHRlcm0gcmVseWluZyBvbiBVVEYtOCBsaW5lLWdyYXBoaWNzLAorICAgICAgICBVOCMxLCB1c2U9eHRlcm0sCisuZmkKKy5mdAorLlJFCisuUFAKK1RoZSBuYW1lICJVOCIgaXMgY2hvc2VuIHRvIGJlIHR3byBjaGFyYWN0ZXJzLAordG8gcGVybWl0IGl0IHRvIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIHRoYXQgdXNlIG5jdXJzZXMnCit0ZXJtY2FwIGludGVyZmFjZS4KKy5TUyBOQ1VSU0VTX1RSQUNFCiBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRoZSBcZkJuY3Vyc2VzXGZSIGRlYnVnZ2luZyBsaWJyYXJ5Ci1jaGVja3MgdGhlIE5DVVJTRVNfVFJBQ0Ugc3ltYm9sLgorY2hlY2tzIHRoZSBOQ1VSU0VTX1RSQUNFIGVudmlyb25tZW50IHZhcmlhYmxlLgogSWYgaXQgaXMgZGVmaW5lZCwgdG8gYSBudW1lcmljIHZhbHVlLCBcZkJuY3Vyc2VzXGZSIGNhbGxzIHRoZSBcZkJ0cmFjZVxmUgogZnVuY3Rpb24sIHVzaW5nIHRoYXQgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotLklQCisuUFAKIFRoZSBhcmd1bWVudCB2YWx1ZXMsIHdoaWNoIGFyZSBkZWZpbmVkIGluIFxmQmN1cnNlcy5oXGZSLCBwcm92aWRlIHNldmVyYWwKIHR5cGVzIG9mIGluZm9ybWF0aW9uLgogV2hlbiBydW5uaW5nIHdpdGggdHJhY2VzIGVuYWJsZWQsIHlvdXIgYXBwbGljYXRpb24gd2lsbCB3cml0ZSB0aGUKIGZpbGUgXGZCdHJhY2VcZlIgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotLlRQIDUKLVRFUk0KKy5QUAorU2VlIFxmQmN1cnNfdHJhY2VcZlAoM1gpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorLlNTIFRFUk0KIERlbm90ZXMgeW91ciB0ZXJtaW5hbCB0eXBlLgogRWFjaCB0ZXJtaW5hbCB0eXBlIGlzIGRpc3RpbmN0LCB0aG91Z2ggbWFueSBhcmUgc2ltaWxhci4KLS5UUCA1Ci1URVJNQ0FQCisuUFAKK1xmQlRFUk1cZlAgaXMgY29tbW9ubHkgc2V0IGJ5IHRlcm1pbmFsIGVtdWxhdG9ycyB0byBoZWxwCithcHBsaWNhdGlvbnMgZmluZCBhIHdvcmthYmxlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgorU29tZSBvZiB0aG9zZSBjaG9vc2UgYSBwb3B1bGFyIGFwcHJveGltYXRpb24sIGUuZy4sCitcKihgYGFuc2lcKignJywgXCooYGB2dDEwMFwqKCcnLCBcKihgYHh0ZXJtXCooJycgcmF0aGVyIHRoYW4gYW4gZXhhY3QgZml0LgorTm90IGluZnJlcXVlbnRseSwgeW91ciBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgcHJvYmxlbXMgd2l0aCB0aGF0IGFwcHJvYWNoLAorZS5nLiwgaW5jb3JyZWN0IGZ1bmN0aW9uLWtleSBkZWZpbml0aW9ucy4KKy5QUAorSWYgeW91IHNldCBcZkJURVJNXGZQIGluIHlvdXIgZW52aXJvbm1lbnQsCitpdCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBvcGVyYXRpb24gb2YgdGhlIHRlcm1pbmFsIGVtdWxhdG9yLgorSXQgb25seSBhZmZlY3RzIHRoZSB3YXkgYXBwbGljYXRpb25zIHdvcmsgd2l0aGluIHRoZSB0ZXJtaW5hbC4KK0xpa2V3aXNlLCBhcyBhIGdlbmVyYWwgcnVsZSAoXGZCeHRlcm1cZlAgYmVpbmcgYSByYXJlIGV4Y2VwdGlvbiksCit0ZXJtaW5hbCBlbXVsYXRvcnMgd2hpY2ggYWxsb3cgeW91IHRvCitzcGVjaWZ5IFxmQlRFUk1cZlAgYXMgYSBwYXJhbWV0ZXIgb3IgY29uZmlndXJhdGlvbiB2YWx1ZSBkbworbm90IGNoYW5nZSB0aGVpciBiZWhhdmlvciB0byBtYXRjaCB0aGF0IHNldHRpbmcuCisuU1MgVEVSTUNBUAogSWYgdGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggXGZJdGVybWNhcFxmUgogc3VwcG9ydCwgXGZCbmN1cnNlc1xmUiB3aWxsIGNoZWNrIGZvciBhIHRlcm1pbmFsJ3MgZGVzY3JpcHRpb24gaW4KIHRlcm1jYXAgZm9ybSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4KLS5JUAotVGhlIFRFUk1DQVAgc3ltYm9sIGNvbnRhaW5zIGVpdGhlciBhIHRlcm1pbmFsIGRlc2NyaXB0aW9uICh3aXRoCisuUFAKK1RoZSBURVJNQ0FQIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zIGVpdGhlciBhIHRlcm1pbmFsIGRlc2NyaXB0aW9uICh3aXRoCiBuZXdsaW5lcyBzdHJpcHBlZCBvdXQpLAotb3IgYSBmaWxlIG5hbWUgdGVsbGluZyB3aGVyZSB0aGUgaW5mb3JtYXRpb24gZGVub3RlZCBieSB0aGUgVEVSTSBzeW1ib2wgZXhpc3RzLgorb3IgYSBmaWxlIG5hbWUgdGVsbGluZyB3aGVyZSB0aGUgaW5mb3JtYXRpb24gZGVub3RlZCBieQordGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgZXhpc3RzLgogSW4gZWl0aGVyIGNhc2UsIHNldHRpbmcgaXQgZGlyZWN0cyBcZkJuY3Vyc2VzXGZSIHRvIGlnbm9yZQogdGhlIHVzdWFsIHBsYWNlIGZvciB0aGlzIGluZm9ybWF0aW9uLCBlLmcuLCAvZXRjL3Rlcm1jYXAuCi0uVFAgNQotVEVSTUlORk8KKy5TUyBURVJNSU5GTwogT3ZlcnJpZGVzIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggXGZCbmN1cnNlc1xmUiBzZWFyY2hlcyBmb3IgeW91ciB0ZXJtaW5hbAogZGVzY3JpcHRpb24uCiBUaGlzIGlzIHRoZSBzaW1wbGVzdCwgYnV0IG5vdCB0aGUgb25seSB3YXkgdG8gY2hhbmdlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzLgogVGhlIGNvbXBsZXRlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgaW4gb3JkZXIgZm9sbG93czoKLS5SUwotLlRQIDMKLS0KKy5SUyAzCisuYlAKIHRoZSBsYXN0IGRpcmVjdG9yeSB0byB3aGljaCBcZkJuY3Vyc2VzXGZSIHdyb3RlLCBpZiBhbnksIGlzIHNlYXJjaGVkIGZpcnN0Ci0uVFAgMwotLQotdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgdGhlIFRFUk1JTkZPIHN5bWJvbAotLlRQIDMKLS0KKy5iUAordGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgdGhlIFRFUk1JTkZPIGVudmlyb25tZW50IHZhcmlhYmxlCisuYlAKICRIT01FLy50ZXJtaW5mbwotLlRQIDMKLS0KLWRpcmVjdG9yaWVzIGxpc3RlZCBpbiB0aGUgVEVSTUlORk9fRElSUyBzeW1ib2wKLS5UUCAzCi0tCisuYlAKK2RpcmVjdG9yaWVzIGxpc3RlZCBpbiB0aGUgVEVSTUlORk9fRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorLmJQCiBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB3aG9zZSBuYW1lcyBhcmUgY29uZmlndXJlZCBhbmQgY29tcGlsZWQgaW50byB0aGUKLW5jdXJzZXMgbGlicmFyeSwgZS5nLiwKLUBURVJNSU5GT0AKK25jdXJzZXMgbGlicmFyeSwgaS5lLiwKKy5SUyAzCisuYlAKK0BURVJNSU5GT19ESVJTQCAoY29ycmVzcG9uZGluZyB0byB0aGUgVEVSTUlORk9fRElSUyB2YXJpYWJsZSkKKy5iUAorQFRFUk1JTkZPQCAoY29ycmVzcG9uZGluZyB0byB0aGUgVEVSTUlORk8gdmFyaWFibGUpCiAuUkUKLS5UUCA1Ci1URVJNSU5GT19ESVJTCisuUkUKKy5TUyBURVJNSU5GT19ESVJTCiBTcGVjaWZpZXMgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgdGVybWluYWwgZGVzY3JpcHRpb25zLgogVGhlIGxpc3QgaXMgc2VwYXJhdGVkIGJ5IGNvbG9ucyAoaS5lLiwgIjoiKSBvbiBVbml4LCBzZW1pY29sb25zIG9uIE9TLzIgRU1YLgotQWxsIG9mIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgYXJlIGluIHRlcm1pbmZvIGZvcm0sIHdoaWNoIG1ha2VzCi1hIHN1YmRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgdGVybWluYWwgbmFtZXMgdGhlcmVpbi4KLS5UUCA1Ci1URVJNUEFUSAorLlBQCitBbGwgb2YgdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyBhcmUgaW4gdGVybWluZm8gZm9ybS4KK05vcm1hbGx5IHRoZXNlIGFyZSBzdG9yZWQgaW4gYSBkaXJlY3RvcnkgdHJlZSwKK3VzaW5nIHN1YmRpcmVjdG9yaWVzIG5hbWVkIGJ5IHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHRlcm1pbmFsIG5hbWVzIHRoZXJlaW4uCisuUFAKK0lmIFxmQm5jdXJzZXNcZlAgaXMgYnVpbHQgd2l0aCBhIGhhc2hlZCBkYXRhYmFzZSwKK3RoZW4gZWFjaCBlbnRyeSBpbiB0aGlzIGxpc3QgY2FuIGFsc28gYmUgdGhlIHBhdGggb2YgdGhlIGNvcnJlc3BvbmRpbmcKK2RhdGFiYXNlIGZpbGUuCisuUFAKK0lmIFxmQm5jdXJzZXNcZlAgaXMgYnVpbHQgd2l0aCBhIHN1cHBvcnQgZm9yIHJlYWRpbmcgdGVybWNhcCBmaWxlcworZGlyZWN0bHksIHRoZW4gYW4gZW50cnkgaW4gdGhpcyBsaXN0IG1heSBiZSB0aGUgcGF0aCBvZiBhIHRlcm1jYXAgZmlsZS4KKy5TUyBURVJNUEFUSAogSWYgVEVSTUNBUCBkb2VzIG5vdCBob2xkIGEgZmlsZSBuYW1lIHRoZW4gXGZCbmN1cnNlc1xmUiBjaGVja3MKLXRoZSBURVJNUEFUSCBzeW1ib2wuCi1UaGlzIGlzIGEgbGlzdCBvZiBmaWxlbmFtZXMgc2VwYXJhdGVkIGJ5IHNwYWNlcyBvciBjb2xvbnMgKGkuZS4sICI6Iikgb24gVW5peCwgc2VtaWNvbG9ucyBvbiBPUy8yIEVNWC4KLUlmIHRoZSBURVJNUEFUSCBzeW1ib2wgaXMgbm90IHNldCwgXGZCbmN1cnNlc1xmUiBsb29rcyBpbiB0aGUgZmlsZXMKK3RoZSBURVJNUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KK1RoaXMgaXMgYSBsaXN0IG9mIGZpbGVuYW1lcyBzZXBhcmF0ZWQgYnkgc3BhY2VzIG9yIGNvbG9ucyAoaS5lLiwgIjoiKSBvbiBVbml4LAorc2VtaWNvbG9ucyBvbiBPUy8yIEVNWC4KKy5QUAorSWYgdGhlIFRFUk1QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQsCitcZkJuY3Vyc2VzXGZSIGxvb2tzIGluIHRoZSBmaWxlcwogL2V0Yy90ZXJtY2FwLCAvdXNyL3NoYXJlL21pc2MvdGVybWNhcCBhbmQgJEhPTUUvLnRlcm1jYXAsIGluIHRoYXQgb3JkZXIuCiAuUFAKIFRoZSBsaWJyYXJ5IG1heSBiZSBjb25maWd1cmVkIHRvIGRpc3JlZ2FyZCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3aGVuIHRoZQogY3VycmVudCB1c2VyIGlzIHRoZSBzdXBlcnVzZXIgKHJvb3QpLCBvciBpZiB0aGUgYXBwbGljYXRpb24gdXNlcyBzZXR1aWQgb3IKIHNldGdpZCBwZXJtaXNzaW9uczoKKy5QUAogJFRFUk1JTkZPLCAkVEVSTUlORk9fRElSUywgJFRFUk1QQVRILCBhcyB3ZWxsIGFzICRIT01FLgogLlNIIEFMVEVSTkFURSBDT05GSUdVUkFUSU9OUwogU2V2ZXJhbCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYXJlIHBvc3NpYmxlLApAQCAtOTk4LDkgKzExMDEsOSBAQAogVGhlcmUgYXJlIGEgZmV3IG1haW4gb3B0aW9ucyB3aG9zZSBlZmZlY3RzIGFyZSB2aXNpYmxlIHRvIHRoZSBhcHBsaWNhdGlvbnMKIGRldmVsb3BlciB1c2luZyBcZkJuY3Vyc2VzXGZQOgogLlRQIDUKLS0tZGlzYWJsZS1vdmVyd3JpdGUKK1wtXC1kaXNhYmxlXC1vdmVyd3JpdGUKIFRoZSBzdGFuZGFyZCBpbmNsdWRlIGZvciBcZkJuY3Vyc2VzXGZQIGlzIGFzIG5vdGVkIGluIFxmQlNZTk9QU0lTXGZQOgotLlJTCisuUlMgMwogLnNwCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuUkUKQEAgLTEwMDksMjggKzExMTIsMjkgQEAKIGlzIG5vdCB0aGUgbWFpbiBpbXBsZW1lbnRhdGlvbiBvZiBjdXJzZXMgb2YgdGhlIGNvbXB1dGVyLgogSWYgXGZCbmN1cnNlc1xmUCBpcyBpbnN0YWxsZWQgZGlzYWJsaW5nIG92ZXJ3cml0ZSwgaXQgcHV0cyBpdHMgaGVhZGVycyBpbgogYSBzdWJkaXJlY3RvcnksIGUuZy4sCi0uUlMKKy5SUyAzCiAuc3AKIFxmQiNpbmNsdWRlIDxuY3Vyc2VzL2N1cnNlcy5oPlxmUgogLlJFCiAuSVAKLUl0IGFsc28gb21pdHMgYSBzeW1ib2xpYyBsaW5rIHdoaWNoIHdvdWxkIGFsbG93IHlvdSB0byB1c2UgXGZCLWxjdXJzZXNcZlAKK0l0IGFsc28gb21pdHMgYSBzeW1ib2xpYyBsaW5rIHdoaWNoIHdvdWxkIGFsbG93IHlvdSB0byB1c2UgXGZCXC1sY3Vyc2VzXGZQCiB0byBidWlsZCBleGVjdXRhYmxlcy4KIC5UUCA1Ci0tLWVuYWJsZS13aWRlYwotVGhlIGNvbmZpZ3VyZSBzY3JpcHQgcmVuYW1lcyB0aGUgbGlicmFyeSBhbmQgKGlmIHRoZSBcZkItLWRpc2FibGUtb3ZlcndyaXRlXGZQCi1vcHRpb24gaXMgdXNlZCkgcHV0cyB0aGUgaGVhZGVyIGZpbGVzIGluIGEgZGlmZmVyZW50IHN1YmRpcmVjdG9yeS4KK1wtXC1lbmFibGVcLXdpZGVjCitUaGUgY29uZmlndXJlIHNjcmlwdCByZW5hbWVzIHRoZSBsaWJyYXJ5IGFuZAorKGlmIHRoZSBcZkJcLVwtZGlzYWJsZVwtb3ZlcndyaXRlXGZQIG9wdGlvbiBpcyB1c2VkKQorcHV0cyB0aGUgaGVhZGVyIGZpbGVzIGluIGEgZGlmZmVyZW50IHN1YmRpcmVjdG9yeS4KIEFsbCBvZiB0aGUgbGlicmFyeSBuYW1lcyBoYXZlIGEgInciIGFwcGVuZGVkIHRvIHRoZW0sCiBpLmUuLCBpbnN0ZWFkIG9mCi0uUlMKKy5SUyAzCiAuc3AKLVxmQi1sbmN1cnNlc1xmUgorXGZCXC1sbmN1cnNlc1xmUgogLlJFCiAuSVAKIHlvdSBsaW5rIHdpdGgKLS5SUworLlJTIDMKIC5zcAotXGZCLWxuY3Vyc2Vzd1xmUgorXGZCXC1sbmN1cnNlc3dcZlIKIC5SRQogLklQCiBZb3UgbXVzdCBhbHNvIGRlZmluZSBcZkJfWE9QRU5fU09VUkNFX0VYVEVOREVEXGZQIHdoZW4gY29tcGlsaW5nIGZvciB0aGUKQEAgLTEwNDQsMjAgKzExNDgsMzAgQEAKIHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBiZSBidWlsdCB1c2luZyBlaXRoZXIgbGlicmFyeQogZnJvbSB0aGUgc2FtZSBzZXQgb2YgaGVhZGVycy4KIC5UUCA1Ci0tLXdpdGgtc2hhcmVkCitcLVwtd2l0aFwtcHRocmVhZAorVGhlIGNvbmZpZ3VyZSBzY3JpcHQgcmVuYW1lcyB0aGUgbGlicmFyeS4KK0FsbCBvZiB0aGUgbGlicmFyeSBuYW1lcyBoYXZlIGEgInQiIGFwcGVuZGVkIHRvIHRoZW0KKyhiZWZvcmUgYW55ICJ3IiBhZGRlZCBieSBcZkJcLVwtZW5hYmxlXC13aWRlY1xmUCkuCisuSVAKK1RoZSBnbG9iYWwgdmFyaWFibGVzIHN1Y2ggYXMgXGZCTElORVNcZlAgYXJlIHJlcGxhY2VkIGJ5IG1hY3JvcyB0bworYWxsb3cgcmVhZC1vbmx5IGFjY2Vzcy4KK0F0IHRoZSBzYW1lIHRpbWUsIHNldHRlci1mdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHNldCB0aGVzZSB2YWx1ZXMuCitTb21lIGFwcGxpY2F0aW9ucyAodmVyeSBmZXcpIG1heSByZXF1aXJlIGNoYW5nZXMgdG8gd29yayB3aXRoIHRoaXMgY29udmVudGlvbi4KKy5UUCA1CitcLVwtd2l0aFwtc2hhcmVkCiAuVFAKLS0td2l0aC1ub3JtYWwKK1wtXC13aXRoXC1ub3JtYWwKIC5UUAotLS13aXRoLWRlYnVnCitcLVwtd2l0aFwtZGVidWcKIC5UUAotLS13aXRoLXByb2ZpbGUKK1wtXC13aXRoXC1wcm9maWxlCiBUaGUgc2hhcmVkIGFuZCBub3JtYWwgKHN0YXRpYykgbGlicmFyeSBuYW1lcyBkaWZmZXIgYnkgdGhlaXIgc3VmZml4ZXMsCiBlLmcuLCBcZkJsaWJuY3Vyc2VzLnNvXGZQIGFuZCBcZkJsaWJuY3Vyc2VzLmFcZlAuCiBUaGUgZGVidWcgYW5kIHByb2ZpbGluZyBsaWJyYXJpZXMgYWRkIGEgIl9nIiBhbmQgYSAiX3AiIHRvIHRoZSByb290CiBuYW1lcyByZXNwZWN0aXZlbHksCiBlLmcuLCBcZkJsaWJuY3Vyc2VzX2cuYVxmUCBhbmQgXGZCbGlibmN1cnNlc19wLmFcZlAuCiAuVFAgNQotLS13aXRoLXRyYWNlCitcLVwtd2l0aFwtdHJhY2UKIFRoZSBcZkJ0cmFjZVxmUCBmdW5jdGlvbiBub3JtYWxseSByZXNpZGVzIGluIHRoZSBkZWJ1ZyBsaWJyYXJ5LAogYnV0IGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gY29uZmlndXJlIHRoaXMgaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LgogQ29uZmlndXJlIHNjcmlwdHMgc2hvdWxkIGNoZWNrIGZvciB0aGUgZnVuY3Rpb24ncyBleGlzdGVuY2UgcmF0aGVyCkBAIC0xMDY5LDEwICsxMTgzLDEyIEBACiBAVEVSTUlORk9ACiB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGFiYXNlCiAuU0ggU0VFIEFMU08KLVxmQnRlcm1pbmZvXGZSKFwqbikgYW5kIHJlbGF0ZWQgcGFnZXMgd2hvc2UgbmFtZXMgYmVnaW4gImN1cnNfIiBmb3IgZGV0YWlsZWQgcm91dGluZQotZGVzY3JpcHRpb25zLgorXGZCdGVybWluZm9cZlIoXCpuKSBhbmQgcmVsYXRlZCBwYWdlcyB3aG9zZSBuYW1lcyBiZWdpbgorImN1cnNfIiBmb3IgZGV0YWlsZWQgcm91dGluZSBkZXNjcmlwdGlvbnMuCisuYnIKK1xmQmN1cnNfdmFyaWFibGVzXGZSKDNYKQogLlNIIEVYVEVOU0lPTlMKLVRoZSBcZkJuY3Vyc2VzXGZSIGxpYnJhcnkgY2FuIGJlIGNvbXBpbGVkIHdpdGggYW4gb3B0aW9uIChcZkItRFVTRV9HRVRDQVBcZlIpCitUaGUgXGZCbmN1cnNlc1xmUiBsaWJyYXJ5IGNhbiBiZSBjb21waWxlZCB3aXRoIGFuIG9wdGlvbiAoXGZCXC1EVVNFX0dFVENBUFxmUikKIHRoYXQgZmFsbHMgYmFjayB0byB0aGUgb2xkLXN0eWxlIC9ldGMvdGVybWNhcCBmaWxlIGlmIHRoZSB0ZXJtaW5hbCBzZXR1cCBjb2RlCiBjYW5ub3QgZmluZCBhIHRlcm1pbmZvIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gXGZCVEVSTVxmUi4KIFVzZSBvZiB0aGlzIGZlYXR1cmUKQEAgLTEwOTgsNyArMTIxNCw3IEBACiBhbmQgXGZCa2V5b2tcZlIoM1gpIG1hbnVhbCBwYWdlcyBmb3IgZGV0YWlscy4KIC5QUAogVGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeSBjYW4gZXhwbG9pdCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRlcm1pbmFscyB3aGljaAotaW1wbGVtZW50IHRoZSBJU08tNjQyOSBTR1IgMzkgYW5kIFNHUiA0OSBjb250cm9scywgd2hpY2ggYWxsb3cgYW4gYXBwbGljYXRpb24KK2ltcGxlbWVudCB0aGUgSVNPXC02NDI5IFNHUiAzOSBhbmQgU0dSIDQ5IGNvbnRyb2xzLCB3aGljaCBhbGxvdyBhbiBhcHBsaWNhdGlvbgogdG8gcmVzZXQgdGhlIHRlcm1pbmFsIHRvIGl0cyBvcmlnaW5hbCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIEZyb20gdGhlIHVzZXJzJyBwZXJzcGVjdGl2ZSwgdGhlIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8gZHJhdyBjb2xvcmVkCiB0ZXh0IG9uIGEgYmFja2dyb3VuZCB3aG9zZSBjb2xvciBpcyBzZXQgaW5kZXBlbmRlbnRseSwgcHJvdmlkaW5nIGJldHRlcgpAQCAtMTExOCwzMCArMTIzNCw0NSBAQAogdGhlIFhTSSBDdXJzZXMgYW5kIFxmQm5jdXJzZXNcZlIgY2FsbHMpIGFyZSBkZXNjcmliZWQgaW4gXGZCUE9SVEFCSUxJVFlcZlIKIHNlY3Rpb25zIG9mIHRoZSBsaWJyYXJ5IG1hbiBwYWdlcy4KIC5QUAotVGhpcyBpbXBsZW1lbnRhdGlvbiBhbHNvIGNvbnRhaW5zIHNldmVyYWwgZXh0ZW5zaW9uczoKLS5SUyA1CitVbmxpa2Ugb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGlzIG9uZSBjaGVja3MgcGFyYW1ldGVycyBzdWNoIGFzIHBvaW50ZXJzCit0byBXSU5ET1cgc3RydWN0dXJlcyB0byBlbnN1cmUgdGhleSBhcmUgbm90IG51bGwuCitUaGUgbWFpbiByZWFzb24gZm9yIHByb3ZpZGluZyB0aGlzIGJlaGF2aW9yIGlzIHRvIGd1YXJkIGFnYWluc3QgcHJvZ3JhbW1lcgorZXJyb3IuCitUaGUgc3RhbmRhcmQgaW50ZXJmYWNlIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgZm9yIHRoZSBsaWJyYXJ5Cit0byB0ZWxsIGFuIGFwcGxpY2F0aW9uIHdoaWNoIG9mIHNldmVyYWwgcG9zc2libGUgZXJyb3JzIHdlcmUgZGV0ZWN0ZWQuCitSZWx5aW5nIG9uIHRoaXMgKG9yIHNvbWUgb3RoZXIpIGV4dGVuc2lvbiB3aWxsIGFkdmVyc2VseSBhZmZlY3QgdGhlCitwb3J0YWJpbGl0eSBvZiBjdXJzZXMgYXBwbGljYXRpb25zLgogLlBQCitUaGlzIGltcGxlbWVudGF0aW9uIGFsc28gY29udGFpbnMgc2V2ZXJhbCBleHRlbnNpb25zOgorLmJQCiBUaGUgcm91dGluZSBcZkJoYXNfa2V5XGZSIGlzIG5vdCBwYXJ0IG9mIFhQRzQsIG5vciBpcyBpdCBwcmVzZW50IGluIFNWcjQuCiBTZWUgdGhlIFxmQmN1cnNfZ2V0Y2hcZlIoM1gpIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgotLlBQCisuYlAKIFRoZSByb3V0aW5lIFxmQnNsa19hdHRyXGZSIGlzIG5vdCBwYXJ0IG9mIFhQRzQsIG5vciBpcyBpdCBwcmVzZW50IGluIFNWcjQuCiBTZWUgdGhlIFxmQmN1cnNfc2xrXGZSKDNYKSBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KLS5QUAorLmJQCiBUaGUgcm91dGluZXMgXGZCZ2V0bW91c2VcZlIsIFxmQm1vdXNlbWFza1xmUiwgXGZCdW5nZXRtb3VzZVxmUiwKIFxmQm1vdXNlaW50ZXJ2YWxcZlIsIGFuZCBcZkJ3ZW5jbG9zZVxmUiByZWxhdGluZyB0byBtb3VzZSBpbnRlcmZhY2luZyBhcmUgbm90CiBwYXJ0IG9mIFhQRzQsIG5vciBhcmUgdGhleSBwcmVzZW50IGluIFNWcjQuCiBTZWUgdGhlIFxmQmN1cnNfbW91c2VcZlIoM1gpIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgotLlBQCisuYlAKIFRoZSByb3V0aW5lIFxmQm1jcHJpbnRcZlIgd2FzIG5vdCBwcmVzZW50IGluIGFueSBwcmV2aW91cyBjdXJzZXMgaW1wbGVtZW50YXRpb24uCiBTZWUgdGhlIFxmQmN1cnNfcHJpbnRcZlIoM1gpIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgotLlBQCisuYlAKIFRoZSByb3V0aW5lIFxmQndyZXNpemVcZlIgaXMgbm90IHBhcnQgb2YgWFBHNCwgbm9yIGlzIGl0IHByZXNlbnQgaW4gU1ZyNC4KIFNlZSB0aGUgXGZCd3Jlc2l6ZVxmUigzWCkgbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi0uUFAKKy5iUAogVGhlIFdJTkRPVyBzdHJ1Y3R1cmUncyBpbnRlcm5hbCBkZXRhaWxzIGNhbiBiZSBoaWRkZW4gZnJvbSBhcHBsaWNhdGlvbgogcHJvZ3JhbXMuCiBTZWUgXGZCY3Vyc19vcGFxdWVcZlIoM1gpIGZvciB0aGUgZGlzY3Vzc2lvbiBvZiBcZkJpc19zY3JvbGxva1xmUiwgZXRjLgotLlJFCisuYlAKK1RoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZSBydWRpbWVudGFyeSBzdXBwb3J0Citmb3IgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLgorU2VlIFxmQmN1cnNfdGhyZWFkc1xmUigzWCkgZm9yIGRldGFpbHMuCisuYlAKK1RoaXMgaW1wbGVtZW50YXRpb24gY2FuIGFsc28gYmUgY29uZmlndXJlZCB0byBwcm92aWRlIGEgc2V0IG9mIGZ1bmN0aW9ucyB3aGljaAoraW1wcm92ZSB0aGUgYWJpbGl0eSB0byBtYW5hZ2UgbXVsdGlwbGUgc2NyZWVucy4KK1NlZSBcZkJjdXJzX3NwX2Z1bmNzXGZSKDNYKSBmb3IgZGV0YWlscy4KIC5QUAogSW4gaGlzdG9yaWMgY3Vyc2VzIHZlcnNpb25zLCBkZWxheXMgZW1iZWRkZWQgaW4gdGhlIGNhcGFiaWxpdGllcyBcZkJjclxmUiwKIFxmQmluZFxmUiwgXGZCY3ViMVxmUiwgXGZCZmZcZlIgYW5kIFxmQnRhYlxmUiBhY3RpdmF0ZWQgY29ycmVzcG9uZGluZyBkZWxheQpAQCAtMTE2MCw5ICsxMjkxLDMgQEAKIC5TSCBBVVRIT1JTCiBaZXlkIE0uIEJlbi1IYWxpbSwgRXJpYyBTLiBSYXltb25kLCBUaG9tYXMgRS4gRGlja2V5LgogQmFzZWQgb24gcGN1cnNlcyBieSBQYXZlbCBDdXJ0aXMuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9wYW5lbC4zeCBiL21hbi9wYW5lbC4zeAppbmRleCA3MTlhOWU2Li5jYzM2ZDIyIDEwMDY0NAotLS0gYS9tYW4vcGFuZWwuM3gKKysrIGIvbWFuL3BhbmVsLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAyMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTYgKzI2LDE2IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiBwYW5lbC4zeCx2IDEuMTQgMjAwNy8wNS8xMiAyMDo0NToyMCB0b20gRXhwICQKKy5cIiAkSWQ6IHBhbmVsLjN4LHYgMS4xOCAyMDE1LzA0LzExIDEwOjIzOjQ5IHRvbSBFeHAgJAogLlRIIHBhbmVsIDNYICIiCiAuZHMgbiA1CiAuZHMgZCBAVEVSTUlORk9ACiAuU0ggTkFNRQotcGFuZWwgLSBwYW5lbCBzdGFjayBleHRlbnNpb24gZm9yIGN1cnNlcworcGFuZWwgXC0gcGFuZWwgc3RhY2sgZXh0ZW5zaW9uIGZvciBjdXJzZXMKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPHBhbmVsLmg+XGZSCiAuUAotXGZCY2MgW2ZsYWdzXSBzb3VyY2VmaWxlcyAtbHBhbmVsIC1sbmN1cnNlc1xmUgorXGZCY2MgW2ZsYWdzXSBzb3VyY2VmaWxlcyBcLWxwYW5lbCBcLWxuY3Vyc2VzXGZSCiAuUAogXGZCUEFORUwgKm5ld19wYW5lbChXSU5ET1cgKndpbilcZlIKIC5icgpAQCAtOTMsOCArOTMsMTAgQEAKIC5CIHVwZGF0ZV9wYW5lbHMoKQogcmVmcmVzaGVzIHRoZSB2aXJ0dWFsIHNjcmVlbiB0byByZWZsZWN0IHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0aGUKIHBhbmVscyBpbiB0aGUgc3RhY2ssIGJ1dCBkb2VzIG5vdCBjYWxsIGRvdXBkYXRlKCkgdG8gcmVmcmVzaCB0aGUKLXBoeXNpY2FsIHNjcmVlbi4gIFVzZSB0aGlzIGZ1bmN0aW9uIGFuZCBub3Qgd3JlZnJlc2ggb3Igd25vdXRyZWZyZXNoLgotdXBkYXRlX3BhbmVscygpIG1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgYmVmb3JlIGEgY2FsbCB0bworcGh5c2ljYWwgc2NyZWVuLgorVXNlIHRoaXMgZnVuY3Rpb24gYW5kIG5vdCBcZkJ3cmVmcmVzaFxmUCBvciBcZkJ3bm91dHJlZnJlc2hcZlAuCisuQiB1cGRhdGVfcGFuZWxzCittYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGJlZm9yZSBhIGNhbGwgdG8KIGRvdXBkYXRlKCksIGJ1dCBkb3VwZGF0ZSgpIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcKIHRoZSBwaHlzaWNhbCBzY3JlZW4uCiAuVFAKQEAgLTEwNyw4ICsxMDksOCBAQAogdmlldy4gVGhlIFxmQlBBTkVMXGZSIHN0cnVjdHVyZSBpcyBub3QgbG9zdCwgbWVyZWx5IHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suCiAuVFAKIC5CIHBhbmVsX2hpZGRlbihwYW4pCi1yZXR1cm5zIFRSVUUgaWYgdGhlIHBhbmVsIGlzIGluIHRoZSBwYW5lbCBzdGFjaywKLUZBTFNFIGlmIGl0IGlzIG5vdC4KK3JldHVybnMgXGZCVFJVRVxmUCBpZiB0aGUgcGFuZWwgaXMgaW4gdGhlIHBhbmVsIHN0YWNrLAorXGZCRkFMU0VcZlAgaWYgaXQgaXMgbm90LgogSWYgdGhlIHBhbmVsIGlzIGEgbnVsbCBwb2ludGVyLCByZXR1cm4gRVJSLgogLlRQCiAuQiBzaG93X3BhbmVsKHBhbikKQEAgLTE3MCw3ICsxNzIsNyBAQAogZnVuY3Rpb24gdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBuYXRpdmUgcGFuZWwgbGlicmFyaWVzLgogLlNIIE5PVEUKIEluIHlvdXIgbGlicmFyeSBsaXN0LCBsaWJwYW5lbC5hIHNob3VsZCBiZSBiZWZvcmUgbGlibmN1cnNlcy5hOyB0aGF0IGlzLAoteW91IHdhbnQgdG8gc2F5IGAtbHBhbmVsIC1sbmN1cnNlcycsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCAod2hpY2ggd291bGQKK3lvdSB3YW50IHRvIHNheSBgXC1scGFuZWwgXC1sbmN1cnNlcycsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCAod2hpY2ggd291bGQKIHVzdWFsbHkgZ2l2ZSBhIGxpbmstZXJyb3IpLgogLlNIIEZJTEVTCiAuUApAQCAtMTgwLDcgKzE4Miw4IEBACiBsaWJwYW5lbC5hCiB0aGUgcGFuZWxzIGxpYnJhcnkgaXRzZWxmCiAuU0ggU0VFIEFMU08KLVxmQmN1cnNlc1xmUigzWCkKK1xmQmN1cnNlc1xmUigzWCksCitcZkJjdXJzX3ZhcmlhYmxlc1xmUigzWCksCiAuUFAKIFRoaXMgZGVzY3JpYmVzIFxmQm5jdXJzZXNcZlIKIHZlcnNpb24gQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCAocGF0Y2ggQE5DVVJTRVNfUEFUQ0hAKS4KZGlmZiAtLWdpdCBhL21hbi9yZXNpemV0ZXJtLjN4IGIvbWFuL3Jlc2l6ZXRlcm0uM3gKaW5kZXggODg4ZWFhZi4uMTc3ZTcwNSAxMDA2NDQKLS0tIGEvbWFuL3Jlc2l6ZXRlcm0uM3gKKysrIGIvbWFuL3Jlc2l6ZXRlcm0uM3gKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiwxNCArMjYsMTQgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni0yMDA1CisuXCIgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KIC5cIgotLlwiICRJZDogcmVzaXpldGVybS4zeCx2IDEuMTEgMjAwNS8wNi8yNSAyMjoxOTo0MiB0b20gRXhwICQKKy5cIiAkSWQ6IHJlc2l6ZXRlcm0uM3gsdiAxLjE5IDIwMTUvMDYvMDYgMjM6Mzg6MTggdG9tIEV4cCAkCiAuVEggcmVzaXpldGVybSAzWCAiIgogLlNIIE5BTUUKIFxmQmlzX3Rlcm1fcmVzaXplZFxmUiwKIFxmQnJlc2l6ZV90ZXJtXGZSLAotXGZCcmVzaXpldGVybVxmUiAtIGNoYW5nZSB0aGUgY3Vyc2VzIHRlcm1pbmFsIHNpemUKK1xmQnJlc2l6ZXRlcm1cZlIgXC0gY2hhbmdlIHRoZSBjdXJzZXMgdGVybWluYWwgc2l6ZQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8Y3Vyc2VzLmg+XGZSCiAuc3AKQEAgLTQzLDEzICs0MywxOCBAQAogLmJyCiBcZkJpbnQgcmVzaXpldGVybShpbnQgbGluZXMsIGludCBjb2x1bW5zKTtcZlIKIC5TSCBERVNDUklQVElPTgorLlBQCiBUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuCiBJdCBwcm92aWRlcyBjYWxsZXJzIHdpdGggYSBob29rIGludG8gdGhlIFxmQm5jdXJzZXNcZlIgZGF0YSB0byByZXNpemUgd2luZG93cywKIHByaW1hcmlseSBmb3IgdXNlIGJ5IHByb2dyYW1zIHJ1bm5pbmcgaW4gYW4gWCBXaW5kb3cgdGVybWluYWwgKGUuZy4sIHh0ZXJtKS4KKy5TUyByZXNpemV0ZXJtCisuUFAKIFRoZSBmdW5jdGlvbiBcZkJyZXNpemV0ZXJtXGZSIHJlc2l6ZXMgdGhlIHN0YW5kYXJkIGFuZCBjdXJyZW50IHdpbmRvd3MKIHRvIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucywgYW5kIGFkanVzdHMgb3RoZXIgYm9va2tlZXBpbmcgZGF0YSB1c2VkIGJ5Ci10aGUgXGZCbmN1cnNlc1xmUiBsaWJyYXJ5IHRoYXQgcmVjb3JkIHRoZSB3aW5kb3cgZGltZW5zaW9ucy4KLS5MUAordGhlIFxmQm5jdXJzZXNcZlIgbGlicmFyeSB0aGF0IHJlY29yZCB0aGUgd2luZG93IGRpbWVuc2lvbnMKK3N1Y2ggYXMgdGhlIFxmQkxJTkVTXGZQIGFuZCBcZkJDT0xTXGZQIHZhcmlhYmxlcy4KKy5TUyByZXNpemVfdGVybQorLlBQCiBNb3N0IG9mIHRoZSB3b3JrIGlzIGRvbmUgYnkgdGhlIGlubmVyIGZ1bmN0aW9uIFxmQnJlc2l6ZV90ZXJtXGZSLgogVGhlIG91dGVyIGZ1bmN0aW9uIFxmQnJlc2l6ZXRlcm1cZlIgYWRkcyBib29ra2VlcGluZyBmb3IgdGhlIFNJR1dJTkNIIGhhbmRsZXIuCiBXaGVuIHJlc2l6aW5nIHRoZSB3aW5kb3dzLApAQCAtNTksMTIgKzY0LDEzIEBACiBIb3dldmVyLCBkdWUgdG8gdGhlIGNhbGxpbmcgY29udmVudGlvbiBvZiBwYWRzLAogaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGVzZQogd2l0aG91dCBhZGRpdGlvbmFsIGludGVyYWN0aW9uIHdpdGggdGhlIGFwcGxpY2F0aW9uLgotLkxQCisuU1MgaXNfdGVybV9yZXNpemVkCisuUFAKIEEgc3VwcG9ydCBmdW5jdGlvbiBcZkJpc190ZXJtX3Jlc2l6ZWRcZlIgaXMgcHJvdmlkZWQgc28gdGhhdCBhcHBsaWNhdGlvbnMKIGNhbiBjaGVjayBpZiB0aGUgXGZCcmVzaXplX3Rlcm1cZlIgZnVuY3Rpb24gd291bGQgbW9kaWZ5IHRoZSB3aW5kb3cgc3RydWN0dXJlcy4KLUl0IHJldHVybnMgVFJVRSBpZiB0aGUgd2luZG93cyB3b3VsZCBiZSBtb2RpZmllZCwgYW5kIEZBTFNFIG90aGVyd2lzZS4KK0l0IHJldHVybnMgXGZCVFJVRVxmUCBpZiB0aGUgd2luZG93cyB3b3VsZCBiZSBtb2RpZmllZCwgYW5kIFxmQkZBTFNFXGZQIG90aGVyd2lzZS4KIC5TSCBSRVRVUk4gVkFMVUUKLUV4Y2VwdCBhcyBub3RlcywgdGhlc2UgZnVuY3Rpb24gcmV0dXJuCitFeGNlcHQgYXMgbm90ZWQsIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4KIHRoZSBpbnRlZ2VyIFxmQkVSUlxmUiB1cG9uIGZhaWx1cmUgYW5kIFxmQk9LXGZSIG9uIHN1Y2Nlc3MuCiBUaGV5IHdpbGwgZmFpbCBpZiBlaXRoZXIgb2YgdGhlIGRpbWVuc2lvbnMgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLAogb3IgaWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIChyZSlhbGxvY2F0aW5nIG1lbW9yeSBmb3IgdGhlIHdpbmRvd3MuCkBAIC03NSw3ICs4MSw3IEBACiBzaW5jZSBpdCB1c2VzIHRob3NlIGZ1bmN0aW9ucy4KIC5QUAogSWYgbmN1cnNlcyBpcyBjb25maWd1cmVkIHRvIHN1cHBseSBpdHMgb3duIFNJR1dJTkNIIGhhbmRsZXIsCi10aGUgXGZCcmVzaXpldGVybVxmUiBmdW5jdGlvbiB1bmdldGNoJ3MgYSBcZkJLRVlfUkVTSVpFXGZSIHdoaWNoCit0aGUgXGZCcmVzaXpldGVybVxmUiBmdW5jdGlvbiBcZkJ1bmdldGNoXGZQJ3MgYSBcZkJLRVlfUkVTSVpFXGZSIHdoaWNoCiB3aWxsIGJlIHJlYWQgb24gdGhlIG5leHQgY2FsbCB0byBcZkJnZXRjaFxmUi4KIFRoaXMgaXMgdXNlZCB0byBhbGVydCBhbiBhcHBsaWNhdGlvbiB0aGF0IHRoZSBzY3JlZW4gc2l6ZSBoYXMgY2hhbmdlZCwKIGFuZCB0aGF0IGl0IHNob3VsZCByZXBhaW50IHNwZWNpYWwgZmVhdHVyZXMgc3VjaCBhcyBwYWRzIHRoYXQgY2Fubm90CkBAIC04NiwxNSArOTIsOSBAQAogdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiBUaHVzLCBldmVuIGlmIGEgU0lHV0lOQ0ggaXMgcmVjZWl2ZWQsCiBubyBzY3JlZW4gc2l6ZSBjaGFuZ2UgbWF5IGJlIHJlY29yZGVkLgotSW4gdGhhdCBjYXNlLCBubyBcZkJLRVlfUkVTSVpFXGZQIGlzIHF1ZXVlZCBmb3IgdGhlIG5leHQgY2FsbCB0byBcZkJnZXRjaFxmUDsKLWFuIFxmQkVSUlxmUCB3aWxsIGJlIHJldHVybmVkIGluc3RlYWQuCiAuU0ggU0VFIEFMU08KK1xmQmN1cnNfZ2V0Y2hcZlIoM1gpLAorXGZCY3Vyc192YXJpYWJsZXNcZlIoM1gpLAogXGZCd3Jlc2l6ZVxmUigzWCkuCiAuU0ggQVVUSE9SCiBUaG9tYXMgRGlja2V5IChmcm9tIGFuIGVxdWl2YWxlbnQgZnVuY3Rpb24gd3JpdHRlbiBpbiAxOTg4IGZvciBCU0QgY3Vyc2VzKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL3RhYnMuMSBiL21hbi90YWJzLjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZiNzk3ZAotLS0gL2Rldi9udWxsCisrKyBiL21hbi90YWJzLjEKQEAgLTAsMCArMSwxNDMgQEAKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiIENvcHlyaWdodCAoYykgMjAwOC0yMDExLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisuXCIgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKy5cIiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorLlwiIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisuXCIgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKy5cIiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKy5cIiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKy5cIiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorLlwiIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisuXCIgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKy5cIiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorLlwiIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisuXCIgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisuXCIgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKy5cIiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlwiICRJZDogdGFicy4xLHYgMS4xMSAyMDEzLzA2LzIyIDE4OjExOjU3IHRvbSBFeHAgJAorLlRIIEBUQUJTQCAxICIiCisuZHMgbiA1CisuU0ggTkFNRQorXGZCQFRBQlNAXGZSIFwtIHNldCB0YWJzIG9uIGEgdGVybWluYWwKKy5TSCBTWU5PUFNJUworXGZCQFRBQlNAXGZSIFtcZklvcHRpb25zXGZSXV0gXGZJW3RhYnN0b3AtbGlzdF1cZlIKKy5TSCBERVNDUklQVElPTgorLlBQCitUaGUgXGZCQFRBQlNAXGZQIHByb2dyYW0gY2xlYXJzIGFuZCBzZXRzIHRhYi1zdG9wcyBvbiB0aGUgdGVybWluYWwuCitUaGlzIHVzZXMgdGhlIHRlcm1pbmZvIFxmSWNsZWFyX2FsbF90YWJzXGZQIGFuZCBcZklzZXRfdGFiXGZQIGNhcGFiaWxpdGllcy4KK0lmIGVpdGhlciBpcyBhYnNlbnQsIFxmQkBUQUJTQFxmUCBpcyB1bmFibGUgdG8gY2xlYXIvc2V0IHRhYi1zdG9wcy4KK1RoZSB0ZXJtaW5hbCBzaG91bGQgYmUgY29uZmlndXJlZCB0byB1c2UgaGFyZCB0YWJzLCBlLmcuLAorLnNwCisuUlMKK3N0dHkgdGFiMAorLlJFCisuU0ggT1BUSU9OUworLlNTIEdlbmVyYWwgT3B0aW9ucworLlRQIDUKKy5CSSBcLVQgIm5hbWUiCitUZWxsIFxmQkBUQUJTQFxmUCB3aGljaCB0ZXJtaW5hbCB0eXBlIHRvIHVzZS4KK0lmIHRoaXMgb3B0aW9uIGlzIG5vdCBnaXZlbiwgXGZCQFRBQlNAXGZQIHdpbGwgdXNlIHRoZSBcZkIkVEVSTVxmUAorZW52aXJvbm1lbnQgdmFyaWFibGUuCitJZiB0aGF0IGlzIG5vdCBzZXQsIGl0IHdpbGwgdXNlIHRoZSBcZklhbnNpK3RhYnNcZlAgZW50cnkuCisuVFAgNQorLkIgXC1kCitUaGUgZGVidWdnaW5nIG9wdGlvbiBzaG93cyBhIHJ1bGVyIGxpbmUsIGZvbGxvd2VkIGJ5IHR3byBkYXRhIGxpbmVzLgorVGhlIGZpcnN0IGRhdGEgbGluZSBzaG93cyB0aGUgZXhwZWN0ZWQgdGFiLXN0b3BzIG1hcmtlZCB3aXRoIGFzdGVyaXNrcy4KK1RoZSBzZWNvbmQgZGF0YSBsaW5lIHNob3dzIHRoZSBhY3R1YWwgdGFiLXN0b3BzLCBtYXJrZWQgd2l0aCBhc3Rlcmlza3MuCisuVFAgNQorLkIgXC1uCitUaGlzIG9wdGlvbiB0ZWxscyBcZkJAVEFCU0BcZlAgdG8gY2hlY2sgdGhlIG9wdGlvbnMgYW5kIHJ1biBhbnkgZGVidWdnaW5nCitvcHRpb24sIGJ1dCBub3QgdG8gbW9kaWZ5IHRoZSB0ZXJtaW5hbCBzZXR0aW5ncy4KKy5UUAorXGZCXC1WXGZSCityZXBvcnRzIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMgd2hpY2ggd2FzIHVzZWQgaW4gdGhpcyBwcm9ncmFtLCBhbmQgZXhpdHMuCisuUFAKK1RoZSBcZkJAVEFCU0BcZlAgcHJvZ3JhbSBwcm9jZXNzZXMgYSBzaW5nbGUgbGlzdCBvZiB0YWIgc3RvcHMuCitUaGUgbGFzdCBvcHRpb24gdG8gYmUgcHJvY2Vzc2VkIHdoaWNoIGRlZmluZXMgYSBsaXN0IGlzIHRoZSBvbmUgdGhhdAorZGV0ZXJtaW5lcyB0aGUgbGlzdCB0byBiZSBwcm9jZXNzZWQuCisuU1MgSW1wbGljaXQgTGlzdHMKK1VzZSBhIHNpbmdsZSBudW1iZXIgYXMgYW4gb3B0aW9uLCBlLmcuLCAiXGZCXC01XGZQIiB0byBzZXQgdGFicyBhdCB0aGUgZ2l2ZW4KK2ludGVydmFsIChpbiB0aGlzIGNhc2UgMSwgNiwgMTEsIDE2LCAyMSwgZXRjLikuICBUYWJzIGFyZSByZXBlYXRlZCB1cCB0bwordGhlIHJpZ2h0IG1hcmdpbiBvZiB0aGUgc2NyZWVuLgorLlBQCitVc2UgIlxmQlwtMFxmUCIgdG8gY2xlYXIgYWxsIHRhYnMuCisuUFAKK1VzZSAiXGZCXC04XGZQIiB0byBzZXQgdGFicyB0byB0aGUgc3RhbmRhcmQgaW50ZXJ2YWwuCisuU1MgRXhwbGljaXQgTGlzdHMKK0FuIGV4cGxpY2l0IGxpc3QgY2FuIGJlIGRlZmluZWQgYWZ0ZXIgdGhlIG9wdGlvbnMgKHRoaXMgZG9lcyBub3QgdXNlIGEgIlwtIikuCitUaGUgdmFsdWVzIGluIHRoZSBsaXN0IG11c3QgYmUgaW4gaW5jcmVhc2luZyBudW1lcmljIG9yZGVyLCBhbmQgZ3JlYXRlciB0aGFuCit6ZXJvLiAgVGhleSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29tbWEgb3IgYSBibGFuaywgZm9yIGV4YW1wbGUsCisuc3AKKy5SUwordGFicyAxLDYsMTEsMTYsMjEKKy5icgordGFicyAxIDYgMTEgMTYgMjEKKy5SRQorVXNlIGEgJysnIHRvIHRyZWF0IGEgbnVtYmVyIGFzIGFuIGluY3JlbWVudCByZWxhdGl2ZSB0byB0aGUgcHJldmlvdXMgdmFsdWUsCitlLmcuLAorLnNwCisuUlMKK3RhYnMgMSwrNSwrNSwrNSwrNQorLlJFCit3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSAxLDYsMTEsMTYsMjEgZXhhbXBsZS4KKy5TUyBQcmVkZWZpbmVkIFRhYi1TdG9wcworWC9PcGVuIGRlZmluZXMgc2V2ZXJhbCBwcmVkZWZpbmVkIGxpc3RzIG9mIHRhYiBzdG9wcy4KKy5UUCA1CisuQiBcLWEKK0Fzc2VtYmxlciwgSUJNIFMvMzcwLCBmaXJzdCBmb3JtYXQKKy5UUCA1CisuQiBcLWEyCitBc3NlbWJsZXIsIElCTSBTLzM3MCwgc2Vjb25kIGZvcm1hdAorLlRQIDUKKy5CIFwtYworQ09CT0wsIG5vcm1hbCBmb3JtYXQKKy5UUCA1CisuQiBcLWMyCitDT0JPTCBjb21wYWN0IGZvcm1hdAorLlRQIDUKKy5CIFwtYzMKK0NPQk9MIGNvbXBhY3QgZm9ybWF0IGV4dGVuZGVkCisuVFAgNQorLkIgXC1mCitGT1JUUkFOCisuVFAgNQorLkIgXC1wCitQTC9JCisuVFAgNQorLkIgXC1zCitTTk9CT0wKKy5UUCA1CisuQiBcLXUKK1VOSVZBQyAxMTAwIEFzc2VtYmxlcgorLlNIIFBPUlRBQklMSVRZCisuUFAKK1gvT3BlbiBkZXNjcmliZXMgYSBcZkIrbVxmUCBvcHRpb24sIHRvIHNldCBhIHRlcm1pbmFsJ3MgbGVmdC1tYXJnaW4uCitWZXJ5IGZldyBvZiB0aGUgZW50cmllcyBpbiB0aGUgdGVybWluYWwgZGF0YWJhc2UgcHJvdmlkZSB0aGlzIGNhcGFiaWxpdHkuCisuUFAKK1RoZSBcZkJcLWRcZlAgKGRlYnVnKSBhbmQgXGZCXC1uXGZQIChuby1vcCkgb3B0aW9ucyBhcmUgZXh0ZW5zaW9ucyBub3QgcHJvdmlkZWQKK2J5IG90aGVyIGltcGxlbWVudGF0aW9ucy4KKy5QUAorRG9jdW1lbnRhdGlvbiBmb3Igb3RoZXIgaW1wbGVtZW50YXRpb25zIHN0YXRlcyB0aGF0IHRoZXJlIGlzIGEgbGltaXQgb24gdGhlCitudW1iZXIgb2YgdGFiIHN0b3BzLiAgV2hpbGUgc29tZSB0ZXJtaW5hbHMgbWF5IG5vdCBhY2NlcHQgYW4gYXJiaXRyYXJ5IG51bWJlcgorb2YgdGFiIHN0b3BzLCB0aGlzIGltcGxlbWVudGF0aW9uIHdpbGwgYXR0ZW1wdCB0byBzZXQgdGFiIHN0b3BzIHVwIHRvIHRoZQorcmlnaHQgbWFyZ2luIG9mIHRoZSBzY3JlZW4sIGlmIHRoZSBnaXZlbiBsaXN0IGhhcHBlbnMgdG8gYmUgdGhhdCBsb25nLgorLlNIIFNFRSBBTFNPCitcZkJAVFNFVEBcZlIoMSksCitcZkJASU5GT0NNUEBcZlIoMU0pLAorXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQnRlcm1pbmZvXGZSKFwqbikuCisuUFAKK1RoaXMgZGVzY3JpYmVzIFxmQm5jdXJzZXNcZlIKK3ZlcnNpb24gQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCAocGF0Y2ggQE5DVVJTRVNfUEFUQ0hAKS4KZGlmZiAtLWdpdCBhL21hbi90ZXJtLjUgYi9tYW4vdGVybS41CmluZGV4IDE5YWY2MmEuLmE0Y2NhOWMgMTAwNjQ0Ci0tLSBhL21hbi90ZXJtLjUKKysrIGIvbWFuL3Rlcm0uNQpAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDcgKzI2LDcgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IHRlcm0uNSx2IDEuMTkgMjAwNi8xMi8yNCAxODoxMjozOCB0b20gRXhwICQKKy5cIiAkSWQ6IHRlcm0uNSx2IDEuMjIgMjAxNS8wNC8yNiAxNDo1MDoyMyB0b20gRXhwICQKIC5USCB0ZXJtIDUKIC5kcyBuIDUKIC5kcyBkIEBURVJNSU5GT0AKQEAgLTEwOSw3ICsxMDksNyBAQAogVGhlIGZpcnN0IGJ5dGUgY29udGFpbnMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDggYml0cyBvZiB0aGUgdmFsdWUsCiBhbmQgdGhlIHNlY29uZCBieXRlIGNvbnRhaW5zIHRoZSBtb3N0IHNpZ25pZmljYW50IDggYml0cy4KIChUaHVzLCB0aGUgdmFsdWUgcmVwcmVzZW50ZWQgaXMgMjU2KnNlY29uZCtmaXJzdC4pCi1UaGUgdmFsdWUgLTEgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIHR3byBieXRlcyAwMzc3LCAwMzc3OyBvdGhlciBuZWdhdGl2ZQorVGhlIHZhbHVlIFwtMSBpcyByZXByZXNlbnRlZCBieSB0aGUgdHdvIGJ5dGVzIDAzNzcsIDAzNzc7IG90aGVyIG5lZ2F0aXZlCiB2YWx1ZXMgYXJlIGlsbGVnYWwuIFRoaXMgdmFsdWUgZ2VuZXJhbGx5CiBtZWFucyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGNhcGFiaWxpdHkgaXMgbWlzc2luZyBmcm9tIHRoaXMgdGVybWluYWwuCiBOb3RlIHRoYXQgdGhpcyBmb3JtYXQgY29ycmVzcG9uZHMgdG8gdGhlIGhhcmR3YXJlIG9mIHRoZSBccy0xVkFYXHMrMQpAQCAtMTMwLDcgKzEzMCw3IEBACiBCZXR3ZWVuIHRoZSBib29sZWFuIHNlY3Rpb24gYW5kIHRoZSBudW1iZXIgc2VjdGlvbiwKIGEgbnVsbCBieXRlIHdpbGwgYmUgaW5zZXJ0ZWQsIGlmIG5lY2Vzc2FyeSwKIHRvIGVuc3VyZSB0aGF0IHRoZSBudW1iZXIgc2VjdGlvbiBiZWdpbnMgb24gYW4gZXZlbiBieXRlICh0aGlzIGlzIGEKLXJlbGljIG9mIHRoZSBQRFAtMTEncyB3b3JkLWFkZHJlc3NlZCBhcmNoaXRlY3R1cmUsIG9yaWdpbmFsbHkKK3JlbGljIG9mIHRoZSBQRFBcLTExJ3Mgd29yZC1hZGRyZXNzZWQgYXJjaGl0ZWN0dXJlLCBvcmlnaW5hbGx5CiBkZXNpZ25lZCBpbiB0byBhdm9pZCBJT1QgdHJhcHMgaW5kdWNlZCBieSBhZGRyZXNzaW5nIGEgd29yZCBvbiBhbgogb2RkIGJ5dGUgYm91bmRhcnkpLgogQWxsIHNob3J0IGludGVnZXJzIGFyZSBhbGlnbmVkIG9uIGEgc2hvcnQgd29yZCBib3VuZGFyeS4KQEAgLTEzOCwxMSArMTM4LDExIEBACiBUaGUgbnVtYmVycyBzZWN0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGZsYWdzIHNlY3Rpb24uCiBFYWNoIGNhcGFiaWxpdHkgdGFrZXMgdXAgdHdvIGJ5dGVzLAogYW5kIGlzIHN0b3JlZCBhcyBhIGxpdHRsZS1lbmRpYW4gc2hvcnQgaW50ZWdlci4KLUlmIHRoZSB2YWx1ZSByZXByZXNlbnRlZCBpcyAtMSwgdGhlIGNhcGFiaWxpdHkgaXMgdGFrZW4gdG8gYmUgbWlzc2luZy4KK0lmIHRoZSB2YWx1ZSByZXByZXNlbnRlZCBpcyBcLTEsIHRoZSBjYXBhYmlsaXR5IGlzIHRha2VuIHRvIGJlIG1pc3NpbmcuCiAuUFAKIFRoZSBzdHJpbmdzIHNlY3Rpb24gaXMgYWxzbyBzaW1pbGFyLgogRWFjaCBjYXBhYmlsaXR5IGlzIHN0b3JlZCBhcyBhIHNob3J0IGludGVnZXIsIGluIHRoZSBmb3JtYXQgYWJvdmUuCi1BIHZhbHVlIG9mIC0xIG1lYW5zIHRoZSBjYXBhYmlsaXR5IGlzIG1pc3NpbmcuCitBIHZhbHVlIG9mIFwtMSBtZWFucyB0aGUgY2FwYWJpbGl0eSBpcyBtaXNzaW5nLgogT3RoZXJ3aXNlLCB0aGUgdmFsdWUgaXMgdGFrZW4gYXMgYW4gb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZwogb2YgdGhlIHN0cmluZyB0YWJsZS4KIFNwZWNpYWwgY2hhcmFjdGVycyBpbiBeWCBvciBcZWMgbm90YXRpb24gYXJlIHN0b3JlZCBpbiB0aGVpcgpAQCAtMTg4LDcgKzE4OCw3IEBACiAuUkUKIC5QUAogVXNpbmcgdGhlIGNvdW50cyBhbmQgc2l6ZXMsIG5jdXJzZXMgYWxsb2NhdGVzIGFycmF5cyBhbmQgcmVhZHMgZGF0YQotZm9yIHRoZSBleHRlbmRlZCBjYXBhYmlsdGllcyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgaGVhZGVyIGluZm9ybWF0aW9uLgorZm9yIHRoZSBleHRlbmRlZCBjYXBhYmlsaXRpZXMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGhlYWRlciBpbmZvcm1hdGlvbi4KIC5QUAogVGhlIGV4dGVuZGVkIHN0cmluZyB0YWJsZSBjb250YWlucyB2YWx1ZXMgZm9yIHN0cmluZyBjYXBhYmlsaXRpZXMuCiBBZnRlciB0aGUgZW5kIG9mIHRoZXNlIHZhbHVlcywgaXQgY29udGFpbnMgdGhlIG5hbWVzIGZvciBlYWNoIG9mCkBAIC0yMTcsMTQgKzIxNywxNCBAQAogRGVzcGl0ZSB0aGUgY29uc2lzdGVudCB1c2Ugb2YgbGl0dGxlLWVuZGlhbiBmb3IgbnVtYmVycyBhbmQgdGhlIG90aGVyd2lzZQogc2VsZi1kZXNjcmliaW5nIGZvcm1hdCwgaXQgaXMgbm90IHdpc2UgdG8gY291bnQgb24gcG9ydGFiaWxpdHkgb2YgYmluYXJ5CiB0ZXJtaW5mbyBlbnRyaWVzIGJldHdlZW4gY29tbWVyY2lhbCBVTklYIHZlcnNpb25zLiAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGVyZQotYXJlIGF0IGxlYXN0IHRocmVlIHZlcnNpb25zIG9mIHRlcm1pbmZvICh1bmRlciBIUC1VWCwgQUlYLCBhbmQgT1NGLzEpIHdoaWNoCithcmUgYXQgbGVhc3QgdGhyZWUgdmVyc2lvbnMgb2YgdGVybWluZm8gKHVuZGVyIEhQXC1VWCwgQUlYLCBhbmQgT1NGLzEpIHdoaWNoCiBkaXZlcmdlZCBmcm9tIFN5c3RlbSBWIHRlcm1pbmZvIGFmdGVyIFNWcjEsIGFuZCBoYXZlIGFkZGVkIGV4dGVuc2lvbgogY2FwYWJpbGl0aWVzIHRvIHRoZSBzdHJpbmcgdGFibGUgdGhhdCAoaW4gdGhlIGJpbmFyeSBmb3JtYXQpIGNvbGxpZGUgd2l0aAogU3lzdGVtIFYgYW5kIFhTSSBDdXJzZXMgZXh0ZW5zaW9ucy4gIFNlZSBcZkJ0ZXJtaW5mb1xmUihcKm4pIGZvciBkZXRhaWxlZAogZGlzY3Vzc2lvbiBvZiB0ZXJtaW5mbyBzb3VyY2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCiAuU0ggRVhBTVBMRQogQXMgYW4gZXhhbXBsZSwgaGVyZSBpcyBhIGhleCBkdW1wIG9mIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIExlYXItU2llZ2xlcgotQURNLTMsIGEgcG9wdWxhciB0aG91Z2ggcmF0aGVyIHN0dXBpZCBlYXJseSB0ZXJtaW5hbDoKK0FETVwtMywgYSBwb3B1bGFyIHRob3VnaCByYXRoZXIgc3R1cGlkIGVhcmx5IHRlcm1pbmFsOgogLm5mCiAuc3AKIGFkbTNhfGxzaSBhZG0zYSwKQEAgLTI3NSw5ICsyNzUsMyBAQAogaGFzaGVkIGRhdGFiYXNlIHN1cHBvcnQgZm9yIG5jdXJzZXMgNS42CiAuc3AKIEVyaWMgUy4gUmF5bW9uZAotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vdGVybS43IGIvbWFuL3Rlcm0uNwppbmRleCA3ZWRhNmZiLi5jZWU4YTAxIDEwMDY0NAotLS0gYS9tYW4vdGVybS43CisrKyBiL21hbi90ZXJtLjcKQEAgLTEsNSArMSw1IEBACiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNiw3ICsyNiw3IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiB0ZXJtLjcsdiAxLjE4IDIwMDcvMDYvMDIgMjA6NDA6MDcgdG9tIEV4cCAkCisuXCIgJElkOiB0ZXJtLjcsdiAxLjIzIDIwMTEvMTIvMTcgMjM6MzI6MTcgdG9tIEV4cCAkCiAuVEggdGVybSA3CiAuZHMgbiA1CiAuZHMgZCBAVEVSTUlORk9ACkBAIC0zOSw5ICszOSw5IEBACiBpcyBjcml0aWNhbCBmb3IgYWxsIHNjcmVlbi1vcmllbnRlZCBwcm9ncmFtcywgaW5jbHVkaW5nIHlvdXIgZWRpdG9yIGFuZCBtYWlsZXIuCiAuUFAKIEEgZGVmYXVsdCBcZkJURVJNXGZSIHZhbHVlIHdpbGwgYmUgc2V0IG9uIGEgcGVyLWxpbmUgYmFzaXMgYnkgZWl0aGVyCi1cZkIvZXRjL2luaXR0YWJcZlIgKExpbnV4IGFuZCBTeXN0ZW0tVi1saWtlIFVOSVhlcykgb3IgXGZCL2V0Yy90dHlzXGZSIChCU0QKLVVOSVhlcykuICBUaGlzIHdpbGwgbmVhcmx5IGFsd2F5cyBzdWZmaWNlIGZvciB3b3Jrc3RhdGlvbiBhbmQgbWljcm9jb21wdXRlcgotY29uc29sZXMuCitcZkIvZXRjL2luaXR0YWJcZlIgKGUuZy4sIFN5c3RlbVwtVi1saWtlIFVOSVhlcykKK29yIFxmQi9ldGMvdHR5c1xmUiAoQlNEIFVOSVhlcykuCitUaGlzIHdpbGwgbmVhcmx5IGFsd2F5cyBzdWZmaWNlIGZvciB3b3Jrc3RhdGlvbiBhbmQgbWljcm9jb21wdXRlciBjb25zb2xlcy4KIC5QUAogSWYgeW91IHVzZSBhIGRpYWx1cCBsaW5lLCB0aGUgdHlwZSBvZiBkZXZpY2UgYXR0YWNoZWQgdG8gaXQgbWF5IHZhcnkuICBPbGRlcgogVU5JWCBzeXN0ZW1zIHByZS1zZXQgYSB2ZXJ5IGR1bWIgdGVybWluYWwgdHlwZSBsaWtlIGBkdW1iJyBvciBgZGlhbHVwJyBvbgpAQCAtNTUsNyArNTUsNyBAQAogYXJlIGluIGZhY3QgdXNpbmcgYSBWVDEwMC1zdXBlcnNldCBjb25zb2xlLCB0ZXJtaW5hbCwgb3IgdGVybWluYWwgZW11bGF0b3IuKQogLlBQCiBJbiBhbnkgY2FzZSwgeW91IGFyZSBmcmVlIHRvIG92ZXJyaWRlIHRoZSBzeXN0ZW0gXGZCVEVSTVxmUiBzZXR0aW5nIHRvIHlvdXIKLXRhc3RlIGluIHlvdXIgc2hlbGwgcHJvZmlsZS4gIFRoZSBcZkJ0c2V0XGZQKDEpIHV0aWxpdHkgbWF5IGJlIG9mIGFzc2lzdGFuY2U7Cit0YXN0ZSBpbiB5b3VyIHNoZWxsIHByb2ZpbGUuICBUaGUgXGZCQFRTRVRAXGZQKDEpIHV0aWxpdHkgbWF5IGJlIG9mIGFzc2lzdGFuY2U7CiB5b3UgY2FuIGdpdmUgaXQgYSBzZXQgb2YgcnVsZXMgZm9yIGRlZHVjaW5nIG9yIHJlcXVlc3RpbmcgYSB0ZXJtaW5hbCB0eXBlIGJhc2VkCiBvbiB0aGUgdHR5IGRldmljZSBhbmQgYmF1ZCByYXRlLgogLlBQCkBAIC03Myw5ICs3Myw5IEBACiB0byBleGFtaW5lIGFuIGVudHJ5LCB5b3UgbXVzdCB1c2UgdGhlIFxmQkBJTkZPQ01QQFxmUigxTSkgY29tbWFuZC4KIEludm9rZSBpdCBhcyBmb2xsb3dzOgogLnNwCi0JQElORk9DTVBAIFxmSWVudHJ5LW5hbWVcZlIKKwlASU5GT0NNUEAgXGZJZW50cnlfbmFtZVxmUgogLnNwCi13aGVyZSBcZkllbnRyeS1uYW1lXGZSIGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIHlvdSB3aXNoIHRvIGV4YW1pbmUgKGFuZCB0aGUKK3doZXJlIFxmSWVudHJ5X25hbWVcZlIgaXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUgeW91IHdpc2ggdG8gZXhhbWluZSAoYW5kIHRoZQogbmFtZSBvZiBpdHMgY2FwYWJpbGl0eSBmaWxlIHRoZSBzdWJkaXJlY3Rvcnkgb2YgXCpkIG5hbWVkIGZvciBpdHMgZmlyc3QKIGxldHRlcikuICBUaGlzIGNvbW1hbmQgZHVtcHMgYSBjYXBhYmlsaXR5IGZpbGUgaW4gdGhlIHRleHQgZm9ybWF0IGRlc2NyaWJlZCBieQogXGZCdGVybWluZm9cZlIoXCpuKS4KQEAgLTExNCwxNCArMTE0LDE0IEBACiB0aHVzIFxmQnZ0MTAwXGZSLCBcZkJocDI2MjFcZlIsIFxmQnd5NTBcZlIuCiAuUFAKIFRoZSByb290IG5hbWUgZm9yIGEgUEMtVW5peCBjb25zb2xlIHR5cGUgc2hvdWxkIGJlIHRoZSBPUyBuYW1lLAotaS5lLiBcZkJsaW51eFxmUiwgXGZCYnNkb3NcZlIsIFxmQmZyZWVic2RcZlIsIFxmQm5ldGJzZFxmUi4gIEl0IHNob3VsZAoraS5lLiwgXGZCbGludXhcZlIsIFxmQmJzZG9zXGZSLCBcZkJmcmVlYnNkXGZSLCBcZkJuZXRic2RcZlIuICBJdCBzaG91bGQKIFxmSW5vdFxmUiBiZSBcZkJjb25zb2xlXGZSIG9yIGFueSBvdGhlciBnZW5lcmljIHRoYXQgbWlnaHQgY2F1c2UgY29uZnVzaW9uIGluIGEKIG11bHRpLXBsYXRmb3JtIGVudmlyb25tZW50ISAgSWYgYSBtb2RlbCBudW1iZXIgZm9sbG93cywgaXQgc2hvdWxkIGluZGljYXRlCiBlaXRoZXIgdGhlIE9TIHJlbGVhc2UgbGV2ZWwgb3IgdGhlIGNvbnNvbGUgZHJpdmVyIHJlbGVhc2UgbGV2ZWwuCiAuUFAKIFRoZSByb290IG5hbWUgZm9yIGEgdGVybWluYWwgZW11bGF0b3IgKGFzc3VtaW5nIGl0IGRvZXMgbm90IGZpdCBvbmUgb2YgdGhlCiBzdGFuZGFyZCBBTlNJIG9yIHZ0MTAwIHR5cGVzKSBzaG91bGQgYmUgdGhlIHByb2dyYW0gbmFtZSBvciBhIHJlYWRpbHkKLXJlY29nbml6YWJsZSBhYmJyZXZpYXRpb24gb2YgaXQgKGkuZS4gXGZCdmVyc2F0ZXJtXGZSLCBcZkJjdHJtXGZSKS4KK3JlY29nbml6YWJsZSBhYmJyZXZpYXRpb24gb2YgaXQgKGkuZS4sIFxmQnZlcnNhdGVybVxmUiwgXGZCY3RybVxmUikuCiAuUFAKIEZvbGxvd2luZyB0aGUgcm9vdCBuYW1lLCB5b3UgbWF5IGFkZCBhbnkgcmVhc29uYWJsZSBudW1iZXIgb2YgaHlwaGVuLXNlcGFyYXRlZAogZmVhdHVyZSBzdWZmaXhlcy4KQEAgLTEzNSw1MiArMTM1LDUyIEBACiB3aXRoIGFub3RoZXIgdGhhdCBoYXMgdGhpcyBzdWZmaXggYW5kIHVzZXMgbWFnaWMgY29va2llcyB0byBzdXBwb3J0IG11bHRpcGxlCiBhdHRyaWJ1dGVzLgogLlRQIDUKLS1hbQorXC1hbQogRW5hYmxlIGF1dG8tbWFyZ2luIChyaWdodC1tYXJnaW4gd3JhcGFyb3VuZCkuCiAuVFAgNQotLW0KLU1vbm8gbW9kZSAtIHN1cHByZXNzIGNvbG9yIHN1cHBvcnQuCitcLW0KK01vbm8gbW9kZSBcLSBzdXBwcmVzcyBjb2xvciBzdXBwb3J0LgogLlRQIDUKLS1uYQotTm8gYXJyb3cga2V5cyAtIHRlcm1jYXAgaWdub3JlcyBhcnJvdyBrZXlzIHdoaWNoIGFyZSBhY3R1YWxseSB0aGVyZSBvbiB0aGUKK1wtbmEKK05vIGFycm93IGtleXMgXC0gdGVybWNhcCBpZ25vcmVzIGFycm93IGtleXMgd2hpY2ggYXJlIGFjdHVhbGx5IHRoZXJlIG9uIHRoZQogdGVybWluYWwsIHNvIHRoZSB1c2VyIGNhbiB1c2UgdGhlIGFycm93IGtleXMgbG9jYWxseS4KIC5UUCA1Ci0tbmFtCi1ObyBhdXRvLW1hcmdpbiAtIHN1cHByZXNzIGFtIGNhcGFiaWxpdHkuCitcLW5hbQorTm8gYXV0by1tYXJnaW4gXC0gc3VwcHJlc3MgYW0gY2FwYWJpbGl0eS4KIC5UUCA1Ci0tbmwKLU5vIGxhYmVscyAtIHN1cHByZXNzIHNvZnQgbGFiZWxzLgorXC1ubAorTm8gbGFiZWxzIFwtIHN1cHByZXNzIHNvZnQgbGFiZWxzLgogLlRQIDUKLS1uc2wKLU5vIHN0YXR1cyBsaW5lIC0gc3VwcHJlc3Mgc3RhdHVzIGxpbmUuCitcLW5zbAorTm8gc3RhdHVzIGxpbmUgXC0gc3VwcHJlc3Mgc3RhdHVzIGxpbmUuCiAuVFAgNQotLXBwCitcLXBwCiBIYXMgYSBwcmludGVyIHBvcnQgd2hpY2ggaXMgdXNlZC4KIC5UUCA1Ci0tcnYKK1wtcnYKIFRlcm1pbmFsIGluIHJldmVyc2UgdmlkZW8gbW9kZSAoYmxhY2sgb24gd2hpdGUpLgogLlRQIDUKLS1zCitcLXMKIEVuYWJsZSBzdGF0dXMgbGluZS4KIC5UUCA1Ci0tdmIKK1wtdmIKIFVzZSB2aXNpYmxlIGJlbGwgKGZsYXNoKSByYXRoZXIgdGhhbiBiZWVwLgogLlRQIDUKLS13CitcLXcKIFdpZGU7IHRlcm1pbmFsIGlzIGluIDEzMiBjb2x1bW4gbW9kZS4KIC5QUAogQ29udmVudGlvbmFsbHksIGlmIHlvdXIgdGVybWluYWwgdHlwZSBpcyBhIHZhcmlhbnQgaW50ZW5kZWQgdG8gc3BlY2lmeSBhCiBsaW5lIGhlaWdodCwgdGhhdCBzdWZmaXggc2hvdWxkIGdvIGZpcnN0LiAgU28sIGZvciBhIGh5cG90aGV0aWNhbCBGdUJhckNvCiBtb2RlbCAyMzE3IHRlcm1pbmFsIGluIDMwLWxpbmUgbW9kZSB3aXRoIHJldmVyc2UgdmlkZW8sIGJlc3QgZm9ybSB3b3VsZCBiZQotXGZCZnViYXItMzAtcnZcZlIgKHJhdGhlciB0aGFuLCBzYXksIGBmdWJhci1ydi0zMCcpLgorXGZCZnViYXJcLTMwXC1ydlxmUiAocmF0aGVyIHRoYW4sIHNheSwgYGZ1YmFyXC1ydlwtMzAnKS4KIC5QUAogVGVybWluYWwgdHlwZXMgdGhhdCBhcmUgd3JpdHRlbiBub3QgYXMgc3RhbmRhbG9uZSBlbnRyaWVzLCBidXQgcmF0aGVyIGFzCiBjb21wb25lbnRzIHRvIGJlIHBsdWdnZWQgaW50byBvdGhlciBlbnRyaWVzIHZpYSBcZkJ1c2VcZlAgY2FwYWJpbGl0aWVzLAogYXJlIGRpc3Rpbmd1aXNoZWQgYnkgdXNpbmcgZW1iZWRkZWQgcGx1cyBzaWducyByYXRoZXIgdGhhbiBkYXNoZXMuCiAuUFAKLUNvbW1hbmRzIHdoaWNoIHVzZSBhIHRlcm1pbmFsIHR5cGUgdG8gY29udHJvbCBkaXNwbGF5IG9mdGVuIGFjY2VwdCBhIC1UCitDb21tYW5kcyB3aGljaCB1c2UgYSB0ZXJtaW5hbCB0eXBlIHRvIGNvbnRyb2wgZGlzcGxheSBvZnRlbiBhY2NlcHQgYSBcLVQKIG9wdGlvbiB0aGF0IGFjY2VwdHMgYSB0ZXJtaW5hbCBuYW1lIGFyZ3VtZW50LiAgU3VjaCBwcm9ncmFtcyBzaG91bGQgZmFsbCBiYWNrCi1vbiB0aGUgXGZCVEVSTVxmUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIG5vIC1UIG9wdGlvbiBpcyBzcGVjaWZpZWQuCitvbiB0aGUgXGZCVEVSTVxmUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIG5vIFwtVCBvcHRpb24gaXMgc3BlY2lmaWVkLgogLlNIIFBPUlRBQklMSVRZCiBGb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgU3lzdGVtIFYgVU5JWGVzLCBuYW1lcyBhbmQgYWxpYXNlcwogc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGZpcnN0IDE0IGNoYXJhY3RlcnMuCkBAIC0xOTYsOSArMTk2LDMgQEAKIHR0eSBsaW5lIGluaXRpYWxpemF0aW9uIChCU0QtbGlrZSBVTklYZXMpCiAuU0ggU0VFIEFMU08KIFxmQmN1cnNlc1xmUigzWCksIFxmQnRlcm1pbmZvXGZSKFwqbiksIFxmQnRlcm1cZlIoXCpuKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL3Rlcm1fdmFyaWFibGVzLjN4IGIvbWFuL3Rlcm1fdmFyaWFibGVzLjN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjQ3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vdGVybV92YXJpYWJsZXMuM3gKQEAgLTAsMCArMSwxODEgQEAKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiIENvcHlyaWdodCAoYykgMjAxMS0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisuXCIgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKy5cIiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorLlwiIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisuXCIgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKy5cIiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKy5cIiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKy5cIiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorLlwiIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisuXCIgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKy5cIiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorLlwiIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisuXCIgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisuXCIgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKy5cIiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlwiICRJZDogdGVybV92YXJpYWJsZXMuM3gsdiAxLjYgMjAxNS8wNC8yMiAwMDozNDo0OSB0b20gRXhwICQKKy5USCB0ZXJtX3ZhcmlhYmxlcyAzWCAiIgorLmRzIG4gNQorLm5hCisuaHkgMAorLlNIIE5BTUUKK1xmQlNQXGZQLAorXGZCYWNzX21hcFxmUCwKK1xmQmJvb2xjb2Rlc1xmUCwKK1xmQmJvb2xmbmFtZXNcZlAsCitcZkJib29sbmFtZXNcZlAsCitcZkJjdXJfdGVybVxmUCwKK1xmQm51bWNvZGVzXGZQLAorXGZCbnVtZm5hbWVzXGZQLAorXGZCbnVtbmFtZXNcZlAsCitcZkJzdHJjb2Rlc1xmUCwKK1xmQnN0cmZuYW1lc1xmUCwKK1xmQnN0cm5hbWVzXGZQLAorXGZCdHR5dHlwZVxmUAorXC0gXGZCY3Vyc2VzXGZSIHRlcm1pbmZvIGdsb2JhbCB2YXJpYWJsZXMKKy5hZAorLmh5CisuU0ggU1lOT1BTSVMKKy5uZgorXGZCI2luY2x1ZGUgPGN1cnNlcy5oPlxmUgorLmJyCitcZkIjaW5jbHVkZSA8dGVybS5oPlxmUgorLlBQCitcZkJjaHR5cGUgYWNzX21hcFtdO1xmUgorLnNwCitcZkJURVJNSU5BTCAqIGN1cl90ZXJtO1xmUgorLnNwCitcZkJjaGFyIHR0eXR5cGVbXTtcZlIKKy5zcAorXGZCTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiBib29sY29kZXM7XGZSCisuYnIKK1xmQk5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICogYm9vbGZuYW1lcztcZlIKKy5icgorXGZCTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiBib29sbmFtZXM7XGZSCisuc3AKK1xmQk5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICogbnVtY29kZXM7XGZSCisuYnIKK1xmQk5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICogbnVtZm5hbWVzO1xmUgorLmJyCitcZkJOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqIG51bW5hbWVzO1xmUgorLnNwCitcZkJOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqIHN0cmNvZGVzO1xmUgorLmJyCitcZkJOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCAqIHN0cmZuYW1lcztcZlIKKy5icgorXGZCTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKiBzdHJuYW1lcztcZlIKKy5icgorLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoaXMgcGFnZSBzdW1tYXJpemVzIHZhcmlhYmxlcyBwcm92aWRlZCBieSB0aGUgXGZCY3Vyc2VzXGZQIGxpYnJhcnkncworbG93LWxldmVsIHRlcm1pbmZvIGludGVyZmFjZS4KK0EgbW9yZSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBpcyBnaXZlbiBpbiB0aGUgXGZCY3Vyc190ZXJtaW5mb1xmUCgzWCkgbWFudWFsIHBhZ2UuCisuUFAKK0RlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbiwgdGhlc2UgbWF5IGJlIGFjdHVhbCB2YXJpYWJsZXMsCitvciBtYWNyb3MgKHNlZSBcZkJjdXJzX3RocmVhZHNcZlIoM1gpKQord2hpY2ggcHJvdmlkZSByZWFkLW9ubHkgYWNjZXNzIHRvIFxmSWN1cnNlc1xmUCdzIHN0YXRlLgorSW4gZWl0aGVyIGNhc2UsIGFwcGxpY2F0aW9ucyBzaG91bGQgdHJlYXQgdGhlbSBhcyByZWFkLW9ubHkgdG8gYXZvaWQKK2NvbmZ1c2luZyB0aGUgbGlicmFyeS4KKy5TUyBBbHRlcm5hdGUgQ2hhcmFjdGVyIFNldCBNYXBwaW5nCitBZnRlciBpbml0aWFsaXppbmcgdGhlIGN1cnNlcyBvciB0ZXJtaW5mbyBpbnRlcmZhY2VzLAordGhlIFxmQmFjc19tYXBcZlAgYXJyYXkgaG9sZHMgaW5mb3JtYXRpb24gdXNlZCB0byB0cmFuc2xhdGUgY2VsbHMKK3dpdGggdGhlIFxmQkFfQUxUQ0hBUlNFVFxmUCB2aWRlbyBhdHRyaWJ1dGUgaW50byBsaW5lLWRyYXdpbmcgY2hhcmFjdGVycy4KKy5QUAorVGhlIGVuY29kaW5nIG9mIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIGFycmF5IGhhcyBjaGFuZ2VkIHBlcmlvZGljYWxseS4KK0FwcGxpY2F0aW9uIGRldmVsb3BlcnMgbmVlZCBvbmx5IGtub3cgdGhhdCBpdCBpcyB1c2VkIGZvciB0aGUgIkFDU18iCitjb25zdGFudHMgaW4gPGN1cnNlcy5oPi4KKy5QUAorVGhlIGNvbXBhcmFibGUgZGF0YSBmb3IgdGhlIHdpZGUtY2hhcmFjdGVyIGxpYnJhcnkgaXMgYSBwcml2YXRlIHZhcmlhYmxlLgorLlNTIEN1cnJlbnQgVGVybWluYWwgRGF0YQorQWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBjdXJzZXMgb3IgdGVybWluZm8gaW50ZXJmYWNlcywKK3RoZSBcZkJjdXJfdGVybVxmUCBjb250YWlucyBkYXRhIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgdGVybWluYWwuCitUaGlzIHZhcmlhYmxlIGlzIGFsc28gc2V0IGFzIGEgc2lkZS1lZmZlY3Qgb2YgXGZCc2V0X3Rlcm1cZlAoM1gpCithbmQgXGZCZGVsc2NyZWVuXGZQKDNYKS4KKy5QUAorSXQgaXMgcG9zc2libGUgdG8gc2F2ZSBhIHZhbHVlIG9mIFxmQmN1cl90ZXJtXGZQIGZvciBzdWJzZXF1ZW50Cit1c2UgYXMgYSBwYXJhbWV0ZXIgdG8gXGZCc2V0X3Rlcm1cZlAsIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBzY3JlZW5zLgorQWx0ZXJuYXRpdmVseSwgb25lIGNhbiBzYXZlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBcZkJuZXd0ZXJtXGZQCitvciBcZkJzZXR1cHRlcm1cZlAgdG8gcmV1c2UgaW4gXGZCc2V0X3Rlcm1cZlAuCisuU1MgVGVybWluZm8gTmFtZXMKK1RoZSBcZkJAVElDQFxmUCgxKSBhbmQgXGZCQElORk9DTVBAXGZQKDEpIHByb2dyYW1zIHVzZSBsb29rdXAgdGFibGVzIGZvcgordGhlIGxvbmcgYW5kIHNob3J0IG5hbWVzIG9mIHRlcm1pbmZvIGNhcGFiaWxpdGllcywKK2FzIHdlbGwgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXMgZm9yIHRlcm1jYXAgY2FwYWJpbGl0aWVzLgorVGhlc2UgYXJlIGF2YWlsYWJsZSB0byBvdGhlciBhcHBsaWNhdGlvbnMsCithbHRob3VnaCB0aGUgaGFzaC10YWJsZXMgdXNlZCBieQordGhlIHRlcm1pbmZvIGFuZCB0ZXJtY2FwIGZ1bmN0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KKy5QUAorVGhlIGxvbmcgdGVybWluZm8gY2FwYWJpbGl0eSBuYW1lcyB1c2UgYSAibCIgKGVsbCkgaW4gdGhlaXIgbmFtZXM6CitcZkJib29sZm5hbWVzXGZQLAorXGZCbnVtZm5hbWVzXGZQLCBhbmQKK1xmQnN0cmZuYW1lc1xmUC4KKy5QUAorVGhlc2UgYXJlIHRoZSBzaG9ydCBuYW1lcyBmb3IgdGVybWluZm8gY2FwYWJpbGl0aWVzOgorXGZCYm9vbG5hbWVzXGZQLAorXGZCbnVtbmFtZXNcZlAsIGFuZAorXGZCc3RybmFtZXNcZlAuCisuUFAKK1RoZXNlIGFyZSB0aGUgY29ycmVzcG9uZGluZyBuYW1lcyB1c2VkIGZvciB0ZXJtY2FwIGRlc2NyaXB0aW9uczoKK1xmQmJvb2xjb2Rlc1xmUCwKK1xmQm51bWNvZGVzXGZQLCBhbmQKK1xmQnN0cmNvZGVzXGZQLgorLlwiCisuU1MgVGVybWluYWwgVHlwZQorT24gaW5pdGlhbGl6YXRpb24gb2YgdGhlIGN1cnNlcyBvciB0ZXJtaW5mbyBpbnRlcmZhY2VzLAorXGZCc2V0dXB0ZXJtXGZQIGNvcGllcyB0aGUgdGVybWluYWwgbmFtZSB0byB0aGUgYXJyYXkgXGZCdHR5dHlwZVxmUC4KKy5cIgorLlNTIFRlcm1pbmZvIE5hbWVzCisuUFAKK0luIGFkZGl0aW9uIHRvIHRoZSB2YXJpYWJsZXMsIFxmQjx0ZXJtLmg+XGZQIGFsc28gZGVmaW5lcyBhIHN5bWJvbCBmb3IgZWFjaAordGVybWluZm8gY2FwYWJpbGl0eSBcZklsb25nIG5hbWVcZlAuCitUaGVzZSBhcmUgaW4gdGVybXMgb2YgdGhlIHN5bWJvbCBcZkJDVVJcZlAsCit3aGljaCBpcyBkZWZpbmVkCisuUFAKKy5uZgorLmZ0IENXCisjZGVmaW5lIENVUiBjdXJfdGVybS0+dHlwZS4KKy5maQorLmZ0IFIKKy5QUAorVGhlc2Ugc3ltYm9scyBwcm92aWRlIGEgZmFzdGVyIG1ldGhvZCBvZiBhY2Nlc3NpbmcgdGVybWluZm8gY2FwYWJpbGl0aWVzCit0aGFuIHVzaW5nIFxmQnRpZ2V0c3RyXGZSKDNYKSwgZXRjLgorLlwiCisuU0ggTk9URVMKK1RoZSBsb3ctbGV2ZWwgdGVybWluZm8gaW50ZXJmYWNlIGlzIGluaXRpYWxpemVkIHVzaW5nCisuaHkgMAorXGZCc2V0dXB0ZXJtXGZSKDNYKS4KKy5oeQorVGhlIHVwcGVyLWxldmVsIGN1cnNlcyBpbnRlcmZhY2UgdXNlcyB0aGUgbG93LWxldmVsIHRlcm1pbmZvIGludGVyZmFjZSwKK2ludGVybmFsbHkuCisuXCIKKy5TSCBQT1JUQUJJTElUWQorWC9PcGVuIEN1cnNlcyBkb2VzIG5vdCBkZXNjcmliZSBhbnkgb2YgdGhlc2UgZXhjZXB0IGZvciBcZkJjdXJfdGVybVxmUC4KKyhUaGUgaW5jbHVzaW9uIG9mIFxmQmN1cl90ZXJtXGZQIGFwcGVhcnMgdG8gYmUgYW4gb3ZlcnNpZ2h0LAorc2luY2Ugb3RoZXIgY29tcGFyYWJsZSBsb3ctbGV2ZWwgaW5mb3JtYXRpb24gaXMgb21pdHRlZCBieSBYL09wZW4pLgorLlBQCitPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhdmUgY29tcGFyYWJsZSB2YXJpYWJsZXMuCitTb21lIGltcGxlbWVudGF0aW9ucyBwcm92aWRlIHRoZSB2YXJpYWJsZXMgaW4gdGhlaXIgbGlicmFyaWVzLAorYnV0IG9taXQgdGhlbSBmcm9tIHRoZSBoZWFkZXIgZmlsZXMuCisuUFAKK0FsbCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggcHJvdmlkZSB0ZXJtaW5mbyBpbnRlcmZhY2VzIGFkZCBkZWZpbml0aW9ucworYXMgZGVzY3JpYmVkIGluIHRoZSBcZkJUZXJtaW5mbyBOYW1lc1xmUCBzZWN0aW9uLgorTW9zdCwgYnV0IG5vdCBhbGwsIGJhc2UgdGhlIGRlZmluaXRpb24gdXBvbiB0aGUgXGZCY3VyX3Rlcm1cZlAgdmFyaWFibGUuCisuU0ggU0VFIEFMU08KKy5oeSAwCitcZkJjdXJzZXNcZlIoM1gpLAorXGZCY3Vyc190ZXJtaW5mb1xmUigzWCksCitcZkJjdXJzX3RocmVhZHNcZlIoM1gpLAorXGZCdGVybWluZm9cZlIoXCpuKS4KKy5oeQpkaWZmIC0tZ2l0IGEvbWFuL3Rlcm1pbmZvLjUgYi9tYW4vdGVybWluZm8uNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkzM2M5Ni4uMDAwMDAwMAotLS0gYS9tYW4vdGVybWluZm8uNQorKysgL2Rldi9udWxsCkBAIC0xLDMzMzcgKzAsMCBAQAotJ1wiIHQKLS5cIiBETyBOT1QgRURJVCBUSElTIEZJTEUgQlkgSEFORCEKLS5cIiBJdCBpcyBnZW5lcmF0ZWQgZnJvbSB0ZXJtaW5mby5oZWFkLCBDYXBzLCBhbmQgdGVybWluZm8udGFpbC4KLS5cIgotLlwiIE5vdGU6IHRoaXMgbXVzdCBiZSBydW4gdGhyb3VnaCB0YmwgYmVmb3JlIG5yb2ZmLgotLlwiIFRoZSBtYWdpYyBjb29raWUgb24gdGhlIGZpcnN0IGxpbmUgdHJpZ2dlcnMgdGhpcyB1bmRlciBzb21lIG1hbiBwcm9ncmFtcy4KLS5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0uXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLS5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0uXCIgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKLS5cIiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotLlwiIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0uXCIgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKLS5cIiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0uXCIgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKLS5cIiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0uXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKLS5cIiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotLlwiIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0uXCIgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKLS5cIiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotLlwiIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0uXCIgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLS5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotLlwiIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0uXCIgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKLS5cIiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0uXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIgotLlwiICRJZDogdGVybWluZm8uaGVhZCx2IDEuMTYgMjAwNy8wMy8wNCAwMDowOTo0NiB0b20gRXhwICQKLS5USCB0ZXJtaW5mbyA1ICIiICIiICJGaWxlIEZvcm1hdHMiCi0uZHMgbiA1Ci0uZHMgZCBAVEVSTUlORk9ACi0uU0ggTkFNRQotdGVybWluZm8gXC0gdGVybWluYWwgY2FwYWJpbGl0eSBkYXRhIGJhc2UKLS5TSCBTWU5PUFNJUwotXCpkLyovKgotLlNIIERFU0NSSVBUSU9OCi0uSSBUZXJtaW5mbwotaXMgYSBkYXRhIGJhc2UgZGVzY3JpYmluZyB0ZXJtaW5hbHMsIHVzZWQgYnkgc2NyZWVuLW9yaWVudGVkIHByb2dyYW1zIHN1Y2ggYXMKLVxmQm52aVxmUigxKSwKLVxmQnJvZ3VlXGZSKDEpCi1hbmQgbGlicmFyaWVzIHN1Y2ggYXMKLVxmQmN1cnNlc1xmUigzWCkuCi0uSSBUZXJtaW5mbwotZGVzY3JpYmVzIHRlcm1pbmFscyBieSBnaXZpbmcgYSBzZXQgb2YgY2FwYWJpbGl0aWVzIHdoaWNoIHRoZXkKLWhhdmUsIGJ5IHNwZWNpZnlpbmcgaG93IHRvIHBlcmZvcm0gc2NyZWVuIG9wZXJhdGlvbnMsIGFuZCBieQotc3BlY2lmeWluZyBwYWRkaW5nIHJlcXVpcmVtZW50cyBhbmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLgotVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgotdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgotLlBQCi1FbnRyaWVzIGluCi0uSSB0ZXJtaW5mbwotY29uc2lzdCBvZiBhIHNlcXVlbmNlIG9mIGAsJyBzZXBhcmF0ZWQgZmllbGRzIChlbWJlZGRlZCBjb21tYXMgbWF5IGJlCi1lc2NhcGVkIHdpdGggYSBiYWNrc2xhc2ggb3Igbm90YXRlZCBhcyBcXDA1NCkuCi1XaGl0ZSBzcGFjZSBhZnRlciB0aGUgYCwnIHNlcGFyYXRvciBpcyBpZ25vcmVkLgotVGhlIGZpcnN0IGVudHJ5IGZvciBlYWNoIHRlcm1pbmFsIGdpdmVzIHRoZSBuYW1lcyB3aGljaCBhcmUga25vd24gZm9yIHRoZQotdGVybWluYWwsIHNlcGFyYXRlZCBieSBgfCcgY2hhcmFjdGVycy4KLVRoZSBmaXJzdCBuYW1lIGdpdmVuIGlzIHRoZSBtb3N0IGNvbW1vbiBhYmJyZXZpYXRpb24gZm9yIHRoZSB0ZXJtaW5hbCwKLXRoZSBsYXN0IG5hbWUgZ2l2ZW4gc2hvdWxkIGJlIGEgbG9uZyBuYW1lIGZ1bGx5IGlkZW50aWZ5aW5nIHRoZSB0ZXJtaW5hbCwKLWFuZCBhbGwgb3RoZXJzIGFyZSB1bmRlcnN0b29kIGFzIHN5bm9ueW1zIGZvciB0aGUgdGVybWluYWwgbmFtZS4KLUFsbCBuYW1lcyBidXQgdGhlIGxhc3Qgc2hvdWxkIGJlIGluIGxvd2VyIGNhc2UgYW5kIGNvbnRhaW4gbm8gYmxhbmtzOwotdGhlIGxhc3QgbmFtZSBtYXkgd2VsbCBjb250YWluIHVwcGVyIGNhc2UgYW5kIGJsYW5rcyBmb3IgcmVhZGFiaWxpdHkuCi0uUFAKLUxpbmVzIGJlZ2lubmluZyB3aXRoIGEgYCMnIGluIHRoZSBmaXJzdCBjb2x1bW4gYXJlIHRyZWF0ZWQgYXMgY29tbWVudHMuCi1XaGlsZSBjb21tZW50IGxpbmVzIGFyZSBsZWdhbCBhdCBhbnkgcG9pbnQsIHRoZSBvdXRwdXQgb2YgXGZCQENBUFRPSU5GT0BcZlAKLWFuZCBcZkJASU5GT1RPQ0FQQFxmUCAoYWxpYXNlcyBmb3IgXGZCQFRJQ0BcZlApCi13aWxsIG1vdmUgY29tbWVudHMgc28gdGhleSBvY2N1ciBvbmx5IGJldHdlZW4gZW50cmllcy4KLS5QUAotTmV3bGluZXMgYW5kIGxlYWRpbmcgdGFicyBtYXkgYmUgdXNlZCBmb3IgZm9ybWF0dGluZyBlbnRyaWVzIGZvciByZWFkYWJpbGl0eS4KLVRoZXNlIGFyZSByZW1vdmVkIGZyb20gcGFyc2VkIGVudHJpZXMuCi1UaGUgXGZCQElORk9DTVBAXCAtZlxmUCBvcHRpb24gcmVsaWVzIG9uIHRoaXMgdG8gZm9ybWF0IGlmLXRoZW4tZWxzZSBleHByZXNzaW9uczoKLXRoZSByZXN1bHQgY2FuIGJlIHJlYWQgYnkgXGZCQFRJQ0BcZlAuCi0uUFAKLVRlcm1pbmFsIG5hbWVzIChleGNlcHQgZm9yIHRoZSBsYXN0LCB2ZXJib3NlIGVudHJ5KSBzaG91bGQKLWJlIGNob3NlbiB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zLgotVGhlIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUgbWFraW5nIHVwIHRoZSB0ZXJtaW5hbCBzaG91bGQKLWhhdmUgYSByb290IG5hbWUsIHRodXMgYGBocDI2MjEnJy4KLVRoaXMgbmFtZSBzaG91bGQgbm90IGNvbnRhaW4gaHlwaGVucy4KLU1vZGVzIHRoYXQgdGhlIGhhcmR3YXJlIGNhbiBiZSBpbiwgb3IgdXNlciBwcmVmZXJlbmNlcywgc2hvdWxkCi1iZSBpbmRpY2F0ZWQgYnkgYXBwZW5kaW5nIGEgaHlwaGVuIGFuZCBhIG1vZGUgc3VmZml4LgotVGh1cywgYSB2dDEwMCBpbiAxMzIgY29sdW1uIG1vZGUgd291bGQgYmUgdnQxMDAtdy4KLVRoZSBmb2xsb3dpbmcgc3VmZml4ZXMgc2hvdWxkIGJlIHVzZWQgd2hlcmUgcG9zc2libGU6Ci0uUFAKLS5UUwotY2VudGVyIDsKLWwgYyBsCi1sIGwgbC4KLVxmQlN1ZmZpeAlNZWFuaW5nCUV4YW1wbGVcZlAKLS1cZklublxmUAlOdW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbglhYWEtNjAKLS1cZkluXGZQcAlOdW1iZXIgb2YgcGFnZXMgb2YgbWVtb3J5CWMxMDAtNHAKLS1hbQlXaXRoIGF1dG9tYXJnaW5zICh1c3VhbGx5IHRoZSBkZWZhdWx0KQl2dDEwMC1hbQotLW0JTW9ubyBtb2RlOyBzdXBwcmVzcyBjb2xvciAgICAgICAJYW5zaS1tCi0tbWMJTWFnaWMgY29va2llOyBzcGFjZXMgd2hlbiBoaWdobGlnaHRpbmcJd3kzMC1tYwotLW5hCU5vIGFycm93IGtleXMgKGxlYXZlIHRoZW0gaW4gbG9jYWwpCWMxMDAtbmEKLS1uYW0JV2l0aG91dCBhdXRvbWF0aWMgbWFyZ2lucyAgICAgICAJdnQxMDAtbmFtCi0tbmwJTm8gc3RhdHVzIGxpbmUgICAgICAgICAgICAgICAgICAJYXR0NDQxNS1ubAotLW5zCU5vIHN0YXR1cyBsaW5lICAgICAgICAgICAgICAgICAgCWhwMjYyNi1ucwotLXJ2CVJldmVyc2UgdmlkZW8gICAgICAgICAgICAgICAgICAgCWMxMDAtcnYKLS1zCUVuYWJsZSBzdGF0dXMgbGluZSAgICAgICAgICAgICAgCXZ0MTAwLXMKLS12YglVc2UgdmlzaWJsZSBiZWxsIGluc3RlYWQgb2YgYmVlcAl3eTM3MC12YgotLXcJV2lkZSBtb2RlICg+IDgwIGNvbHVtbnMsIHVzdWFsbHkgMTMyKQl2dDEwMC13Ci0uVEUKLS5QUAotRm9yIG1vcmUgb24gdGVybWluYWwgbmFtaW5nIGNvbnZlbnRpb25zLCBzZWUgdGhlIFxmQnRlcm0oNylcZlIgbWFudWFsIHBhZ2UuCi0uU1MgQ2FwYWJpbGl0aWVzCi0uXCIgSGVhZCBvZiB0ZXJtaW5mbyBtYW4gcGFnZSBlbmRzIGhlcmUKLS5wcyAtMQotVGhlIGZvbGxvd2luZyBpcyBhIGNvbXBsZXRlIHRhYmxlIG9mIHRoZSBjYXBhYmlsaXRpZXMgaW5jbHVkZWQgaW4gYQotdGVybWluZm8gZGVzY3JpcHRpb24gYmxvY2sgYW5kIGF2YWlsYWJsZSB0byB0ZXJtaW5mby11c2luZyBjb2RlLiAgSW4gZWFjaAotbGluZSBvZiB0aGUgdGFibGUsCi0KLVRoZSBcZkJ2YXJpYWJsZVxmUiBpcyB0aGUgbmFtZSBieSB3aGljaCB0aGUgcHJvZ3JhbW1lciAoYXQgdGhlIHRlcm1pbmZvIGxldmVsKQotYWNjZXNzZXMgdGhlIGNhcGFiaWxpdHkuCi0KLVRoZSBcZkJjYXBuYW1lXGZSIGlzIHRoZSBzaG9ydCBuYW1lIHVzZWQgaW4gdGhlIHRleHQgb2YgdGhlIGRhdGFiYXNlLAotYW5kIGlzIHVzZWQgYnkgYSBwZXJzb24gdXBkYXRpbmcgdGhlIGRhdGFiYXNlLgotV2hlbmV2ZXIgcG9zc2libGUsIGNhcG5hbWVzIGFyZSBjaG9zZW4gdG8gYmUgdGhlIHNhbWUgYXMgb3Igc2ltaWxhciB0bwotdGhlIEFOU0kgWDMuNjQtMTk3OSBzdGFuZGFyZCAobm93IHN1cGVyc2VkZWQgYnkgRUNNQS00OCwgd2hpY2ggdXNlcwotaWRlbnRpY2FsIG9yIHZlcnkgc2ltaWxhciBuYW1lcykuICBTZW1hbnRpY3MgYXJlIGFsc28gaW50ZW5kZWQgdG8gbWF0Y2gKLXRob3NlIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgotCi1UaGUgdGVybWNhcCBjb2RlIGlzIHRoZSBvbGQKLS5CIHRlcm1jYXAKLWNhcGFiaWxpdHkgbmFtZSAoc29tZSBjYXBhYmlsaXRpZXMgYXJlIG5ldywgYW5kIGhhdmUgbmFtZXMgd2hpY2ggdGVybWNhcAotZGlkIG5vdCBvcmlnaW5hdGUpLgotLlAKLUNhcGFiaWxpdHkgbmFtZXMgaGF2ZSBubyBoYXJkIGxlbmd0aCBsaW1pdCwgYnV0IGFuIGluZm9ybWFsIGxpbWl0IG9mIDUKLWNoYXJhY3RlcnMgaGFzIGJlZW4gYWRvcHRlZCB0byBrZWVwIHRoZW0gc2hvcnQgYW5kIHRvIGFsbG93IHRoZSB0YWJzIGluCi10aGUgc291cmNlIGZpbGUKLS5CIENhcHMKLXRvIGxpbmUgdXAgbmljZWx5LgotCi1GaW5hbGx5LCB0aGUgZGVzY3JpcHRpb24gZmllbGQgYXR0ZW1wdHMgdG8gY29udmV5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlCi1jYXBhYmlsaXR5LiAgWW91IG1heSBmaW5kIHNvbWUgY29kZXMgaW4gdGhlIGRlc2NyaXB0aW9uIGZpZWxkOgotLlRQCi0oUCkKLWluZGljYXRlcyB0aGF0IHBhZGRpbmcgbWF5IGJlIHNwZWNpZmllZAotLlRQCi0jWzEtOV0KLWluIHRoZSBkZXNjcmlwdGlvbiBmaWVsZCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RyaW5nIGlzIHBhc3NlZCB0aHJvdWdoIHRwYXJtIHdpdGgKLXBhcm1zIGFzIGdpdmVuICgjXGZJaVxmUCkuCi0uVFAKLShQKikKLWluZGljYXRlcyB0aGF0IHBhZGRpbmcgbWF5IHZhcnkgaW4gcHJvcG9ydGlvbiB0byB0aGUgbnVtYmVyIG9mCi1saW5lcyBhZmZlY3RlZAotLlRQCi0oI1xkXGZJaVxmUFx1KQotaW5kaWNhdGVzIHRoZSBcZklpXGZQXHV0aFxkIHBhcmFtZXRlci4KLQotLlBQCi1UaGVzZSBhcmUgdGhlIGJvb2xlYW4gY2FwYWJpbGl0aWVzOgotCi0ubmEKLS5UUyBICi1jZW50ZXIgZXhwYW5kOwotYyBsIGwgYwotYyBsIGwgYwotbHcyNSBsdzYgbHcyIGx3MjAuCi1cZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKLVxmQkJvb2xlYW5zCW5hbWUJQ29kZVxmUgotYXV0b19sZWZ0X21hcmdpbglidwlidwlUewotY3ViMSB3cmFwcyBmcm9tIGNvbHVtbiAwIHRvIGxhc3QgY29sdW1uCi1UfQotYXV0b19yaWdodF9tYXJnaW4JYW0JYW0JVHsKLXRlcm1pbmFsIGhhcyBhdXRvbWF0aWMgbWFyZ2lucwotVH0KLWJhY2tfY29sb3JfZXJhc2UJYmNlCXV0CVR7Ci1zY3JlZW4gZXJhc2VkIHdpdGggYmFja2dyb3VuZCBjb2xvcgotVH0KLWNhbl9jaGFuZ2UJY2NjCWNjCVR7Ci10ZXJtaW5hbCBjYW4gcmUtZGVmaW5lIGV4aXN0aW5nIGNvbG9ycwotVH0KLWNlb2xfc3RhbmRvdXRfZ2xpdGNoCXhocAl4cwlUewotc3RhbmRvdXQgbm90IGVyYXNlZCBieSBvdmVyd3JpdGluZyAoaHApCi1UfQotY29sX2FkZHJfZ2xpdGNoCXhocGEJWUEJVHsKLW9ubHkgcG9zaXRpdmUgbW90aW9uIGZvciBocGEvbWhwYSBjYXBzCi1UfQotY3BpX2NoYW5nZXNfcmVzCWNwaXgJWUYJVHsKLWNoYW5naW5nIGNoYXJhY3RlciBwaXRjaCBjaGFuZ2VzIHJlc29sdXRpb24KLVR9Ci1jcl9jYW5jZWxzX21pY3JvX21vZGUJY3J4bQlZQglUewotdXNpbmcgY3IgdHVybnMgb2ZmIG1pY3JvIG1vZGUKLVR9Ci1kZXN0X3RhYnNfbWFnaWNfc21zbwl4dAl4dAlUewotdGFicyBkZXN0cnVjdGl2ZSwgbWFnaWMgc28gY2hhciAodDEwNjEpCi1UfQotZWF0X25ld2xpbmVfZ2xpdGNoCXhlbmwJeG4JVHsKLW5ld2xpbmUgaWdub3JlZCBhZnRlciA4MCBjb2xzIChjb25jZXB0KQotVH0KLWVyYXNlX292ZXJzdHJpa2UJZW8JZW8JVHsKLWNhbiBlcmFzZSBvdmVyc3RyaWtlcyB3aXRoIGEgYmxhbmsKLVR9Ci1nZW5lcmljX3R5cGUJZ24JZ24JVHsKLWdlbmVyaWMgbGluZSB0eXBlCi1UfQotaGFyZF9jb3B5CWhjCWhjCVR7Ci1oYXJkY29weSB0ZXJtaW5hbAotVH0KLWhhcmRfY3Vyc29yCWNodHMJSEMJVHsKLWN1cnNvciBpcyBoYXJkIHRvIHNlZQotVH0KLWhhc19tZXRhX2tleQlrbQlrbQlUewotSGFzIGEgbWV0YSBrZXkgKGkuZS4sIHNldHMgOHRoLWJpdCkKLVR9Ci1oYXNfcHJpbnRfd2hlZWwJZGFpc3kJWUMJVHsKLXByaW50ZXIgbmVlZHMgb3BlcmF0b3IgdG8gY2hhbmdlIGNoYXJhY3RlciBzZXQKLVR9Ci1oYXNfc3RhdHVzX2xpbmUJaHMJaHMJVHsKLWhhcyBleHRyYSBzdGF0dXMgbGluZQotVH0KLWh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbglobHMJaGwJVHsKLXRlcm1pbmFsIHVzZXMgb25seSBITFMgY29sb3Igbm90YXRpb24gKFRla3Ryb25peCkKLVR9Ci1pbnNlcnRfbnVsbF9nbGl0Y2gJaW4JaW4JVHsKLWluc2VydCBtb2RlIGRpc3Rpbmd1aXNoZXMgbnVsbHMKLVR9Ci1scGlfY2hhbmdlc19yZXMJbHBpeAlZRwlUewotY2hhbmdpbmcgbGluZSBwaXRjaCBjaGFuZ2VzIHJlc29sdXRpb24KLVR9Ci1tZW1vcnlfYWJvdmUJZGEJZGEJVHsKLWRpc3BsYXkgbWF5IGJlIHJldGFpbmVkIGFib3ZlIHRoZSBzY3JlZW4KLVR9Ci1tZW1vcnlfYmVsb3cJZGIJZGIJVHsKLWRpc3BsYXkgbWF5IGJlIHJldGFpbmVkIGJlbG93IHRoZSBzY3JlZW4KLVR9Ci1tb3ZlX2luc2VydF9tb2RlCW1pcgltaQlUewotc2FmZSB0byBtb3ZlIHdoaWxlIGluIGluc2VydCBtb2RlCi1UfQotbW92ZV9zdGFuZG91dF9tb2RlCW1zZ3IJbXMJVHsKLXNhZmUgdG8gbW92ZSB3aGlsZSBpbiBzdGFuZG91dCBtb2RlCi1UfQotbmVlZHNfeG9uX3hvZmYJbnhvbglueAlUewotcGFkZGluZyB3aWxsIG5vdCB3b3JrLCB4b24veG9mZiByZXF1aXJlZAotVH0KLW5vX2VzY19jdGxjCXhzYgl4YglUewotYmVlaGl2ZSAoZjE9ZXNjYXBlLCBmMj1jdHJsIEMpCi1UfQotbm9fcGFkX2NoYXIJbnBjCU5QCVR7Ci1wYWQgY2hhcmFjdGVyIGRvZXMgbm90IGV4aXN0Ci1UfQotbm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvbgluZHNjcglORAlUewotc2Nyb2xsaW5nIHJlZ2lvbiBpcyBub24tZGVzdHJ1Y3RpdmUKLVR9Ci1ub25fcmV2X3JtY3VwCW5ycm1jCU5SCVR7Ci1zbWN1cCBkb2VzIG5vdCByZXZlcnNlIHJtY3VwCi1UfQotb3Zlcl9zdHJpa2UJb3MJb3MJVHsKLXRlcm1pbmFsIGNhbiBvdmVyc3RyaWtlCi1UfQotcHJ0cl9zaWxlbnQJbWM1aQk1aQlUewotcHJpbnRlciB3aWxsIG5vdCBlY2hvIG9uIHNjcmVlbgotVH0KLXJvd19hZGRyX2dsaXRjaAl4dnBhCVlECVR7Ci1vbmx5IHBvc2l0aXZlIG1vdGlvbiBmb3IgdnBhL212cGEgY2FwcwotVH0KLXNlbWlfYXV0b19yaWdodF9tYXJnaW4Jc2FtCVlFCVR7Ci1wcmludGluZyBpbiBsYXN0IGNvbHVtbiBjYXVzZXMgY3IKLVR9Ci1zdGF0dXNfbGluZV9lc2Nfb2sJZXNsb2sJZXMJVHsKLWVzY2FwZSBjYW4gYmUgdXNlZCBvbiB0aGUgc3RhdHVzIGxpbmUKLVR9Ci10aWxkZV9nbGl0Y2gJaHoJaHoJVHsKLWNhbm5vdCBwcmludCB+J3MgKGhhemVsdGluZSkKLVR9Ci10cmFuc3BhcmVudF91bmRlcmxpbmUJdWwJdWwJVHsKLXVuZGVybGluZSBjaGFyYWN0ZXIgb3ZlcnN0cmlrZXMKLVR9Ci14b25feG9mZgl4b24JeG8JVHsKLXRlcm1pbmFsIHVzZXMgeG9uL3hvZmYgaGFuZHNoYWtpbmcKLVR9Ci0uVEUKLS5hZAotCi1UaGVzZSBhcmUgdGhlIG51bWVyaWMgY2FwYWJpbGl0aWVzOgotCi0ubmEKLS5UUyBICi1jZW50ZXIgZXhwYW5kOwotYyBsIGwgYwotYyBsIGwgYwotbHcyNSBsdzYgbHcyIGx3MjAuCi1cZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKLVxmQk51bWVyaWMJbmFtZQlDb2RlXGZSCi1jb2x1bW5zCWNvbHMJY28JVHsKLW51bWJlciBvZiBjb2x1bW5zIGluIGEgbGluZQotVH0KLWluaXRfdGFicwlpdAlpdAlUewotdGFicyBpbml0aWFsbHkgZXZlcnkgIyBzcGFjZXMKLVR9Ci1sYWJlbF9oZWlnaHQJbGgJbGgJVHsKLXJvd3MgaW4gZWFjaCBsYWJlbAotVH0KLWxhYmVsX3dpZHRoCWx3CWx3CVR7Ci1jb2x1bW5zIGluIGVhY2ggbGFiZWwKLVR9Ci1saW5lcwlsaW5lcwlsaQlUewotbnVtYmVyIG9mIGxpbmVzIG9uIHNjcmVlbiBvciBwYWdlCi1UfQotbGluZXNfb2ZfbWVtb3J5CWxtCWxtCVR7Ci1saW5lcyBvZiBtZW1vcnkgaWYgPiBsaW5lLiAwIG1lYW5zIHZhcmllcwotVH0KLW1hZ2ljX2Nvb2tpZV9nbGl0Y2gJeG1jCXNnCVR7Ci1udW1iZXIgb2YgYmxhbmsgY2hhcmFjdGVycyBsZWZ0IGJ5IHNtc28gb3Igcm1zbwotVH0KLW1heF9hdHRyaWJ1dGVzCW1hCW1hCVR7Ci1tYXhpbXVtIGNvbWJpbmVkIGF0dHJpYnV0ZXMgdGVybWluYWwgY2FuIGhhbmRsZQotVH0KLW1heF9jb2xvcnMJY29sb3JzCUNvCVR7Ci1tYXhpbXVtIG51bWJlciBvZiBjb2xvcnMgb24gc2NyZWVuCi1UfQotbWF4X3BhaXJzCXBhaXJzCXBhCVR7Ci1tYXhpbXVtIG51bWJlciBvZiBjb2xvci1wYWlycyBvbiB0aGUgc2NyZWVuCi1UfQotbWF4aW11bV93aW5kb3dzCXdudW0JTVcJVHsKLW1heGltdW0gbnVtYmVyIG9mIGRlZmluZWFibGUgd2luZG93cwotVH0KLW5vX2NvbG9yX3ZpZGVvCW5jdglOQwlUewotdmlkZW8gYXR0cmlidXRlcyB0aGF0IGNhbm5vdCBiZSB1c2VkIHdpdGggY29sb3JzCi1UfQotbnVtX2xhYmVscwlubGFiCU5sCVR7Ci1udW1iZXIgb2YgbGFiZWxzIG9uIHNjcmVlbgotVH0KLXBhZGRpbmdfYmF1ZF9yYXRlCXBiCXBiCVR7Ci1sb3dlc3QgYmF1ZCByYXRlIHdoZXJlIHBhZGRpbmcgbmVlZGVkCi1UfQotdmlydHVhbF90ZXJtaW5hbAl2dAl2dAlUewotdmlydHVhbCB0ZXJtaW5hbCBudW1iZXIgKENCL3VuaXgpCi1UfQotd2lkdGhfc3RhdHVzX2xpbmUJd3NsCXdzCVR7Ci1udW1iZXIgb2YgY29sdW1ucyBpbiBzdGF0dXMgbGluZQotVH0KLS5URQotLmFkCi0KLVRoZSBmb2xsb3dpbmcgbnVtZXJpYyBjYXBhYmlsaXRpZXMgYXJlIHByZXNlbnQgaW4gdGhlIFNWcjQuMCB0ZXJtIHN0cnVjdHVyZSwKLWJ1dCBhcmUgbm90IHlldCBkb2N1bWVudGVkIGluIHRoZSBtYW4gcGFnZS4gIFRoZXkgY2FtZSBpbiB3aXRoIFNWcjQncwotcHJpbnRlciBzdXBwb3J0LgotCi0ubmEKLS5UUyBICi1jZW50ZXIgZXhwYW5kOwotYyBsIGwgYwotYyBsIGwgYwotbHcyNSBsdzYgbHcyIGx3MjAuCi1cZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKLVxmQk51bWVyaWMJbmFtZQlDb2RlXGZSCi1iaXRfaW1hZ2VfZW50d2luaW5nCWJpdHdpbglZbwlUewotbnVtYmVyIG9mIHBhc3NlcyBmb3IgZWFjaCBiaXQtaW1hZ2Ugcm93Ci1UfQotYml0X2ltYWdlX3R5cGUJYml0eXBlCVlwCVR7Ci10eXBlIG9mIGJpdC1pbWFnZSBkZXZpY2UKLVR9Ci1idWZmZXJfY2FwYWNpdHkJYnVmc3oJWWEJVHsKLW51bWJlcnMgb2YgYnl0ZXMgYnVmZmVyZWQgYmVmb3JlIHByaW50aW5nCi1UfQotYnV0dG9ucwlidG5zCUJUCVR7Ci1udW1iZXIgb2YgYnV0dG9ucyBvbiBtb3VzZQotVH0KLWRvdF9ob3J6X3NwYWNpbmcJc3BpbmgJWWMJVHsKLXNwYWNpbmcgb2YgZG90cyBob3Jpem9udGFsbHkgaW4gZG90cyBwZXIgaW5jaAotVH0KLWRvdF92ZXJ0X3NwYWNpbmcJc3BpbnYJWWIJVHsKLXNwYWNpbmcgb2YgcGlucyB2ZXJ0aWNhbGx5IGluIHBpbnMgcGVyIGluY2gKLVR9Ci1tYXhfbWljcm9fYWRkcmVzcwltYWRkcglZZAlUewotbWF4aW11bSB2YWx1ZSBpbiBtaWNyb18uLi5fYWRkcmVzcwotVH0KLW1heF9taWNyb19qdW1wCW1qdW1wCVllCVR7Ci1tYXhpbXVtIHZhbHVlIGluIHBhcm1fLi4uX21pY3JvCi1UfQotbWljcm9fY29sX3NpemUJbWNzCVlmCVR7Ci1jaGFyYWN0ZXIgc3RlcCBzaXplIHdoZW4gaW4gbWljcm8gbW9kZQotVH0KLW1pY3JvX2xpbmVfc2l6ZQltbHMJWWcJVHsKLWxpbmUgc3RlcCBzaXplIHdoZW4gaW4gbWljcm8gbW9kZQotVH0KLW51bWJlcl9vZl9waW5zCW5waW5zCVloCVR7Ci1udW1iZXJzIG9mIHBpbnMgaW4gcHJpbnQtaGVhZAotVH0KLW91dHB1dF9yZXNfY2hhcglvcmMJWWkJVHsKLWhvcml6b250YWwgcmVzb2x1dGlvbiBpbiB1bml0cyBwZXIgbGluZQotVH0KLW91dHB1dF9yZXNfaG9yel9pbmNoCW9yaGkJWWsJVHsKLWhvcml6b250YWwgcmVzb2x1dGlvbiBpbiB1bml0cyBwZXIgaW5jaAotVH0KLW91dHB1dF9yZXNfbGluZQlvcmwJWWoJVHsKLXZlcnRpY2FsIHJlc29sdXRpb24gaW4gdW5pdHMgcGVyIGxpbmUKLVR9Ci1vdXRwdXRfcmVzX3ZlcnRfaW5jaAlvcnZpCVlsCVR7Ci12ZXJ0aWNhbCByZXNvbHV0aW9uIGluIHVuaXRzIHBlciBpbmNoCi1UfQotcHJpbnRfcmF0ZQljcHMJWW0JVHsKLXByaW50IHJhdGUgaW4gY2hhcmFjdGVycyBwZXIgc2Vjb25kCi1UfQotd2lkZV9jaGFyX3NpemUJd2lkY3MJWW4JVHsKLWNoYXJhY3RlciBzdGVwIHNpemUgd2hlbiBpbiBkb3VibGUgd2lkZSBtb2RlCi1UfQotLlRFCi0uYWQKLQotVGhlc2UgYXJlIHRoZSBzdHJpbmcgY2FwYWJpbGl0aWVzOgotCi0ubmEKLS5UUyBICi1jZW50ZXIgZXhwYW5kOwotYyBsIGwgYwotYyBsIGwgYwotbHcyNSBsdzYgbHcyIGx3MjAuCi1cZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKLVxmQlN0cmluZwluYW1lCUNvZGVcZlIKLWFjc19jaGFycwlhY3NjCWFjCVR7Ci1ncmFwaGljcyBjaGFyc2V0IHBhaXJzLCBiYXNlZCBvbiB2dDEwMAotVH0KLWJhY2tfdGFiCWNidAlidAlUewotYmFjayB0YWIgKFApCi1UfQotYmVsbAliZWwJYmwJVHsKLWF1ZGlibGUgc2lnbmFsIChiZWxsKSAoUCkKLVR9Ci1jYXJyaWFnZV9yZXR1cm4JY3IJY3IJVHsKLWNhcnJpYWdlIHJldHVybiAoUCopIChQKikKLVR9Ci1jaGFuZ2VfY2hhcl9waXRjaAljcGkJWkEJVHsKLUNoYW5nZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwZXIgaW5jaCB0byAjMQotVH0KLWNoYW5nZV9saW5lX3BpdGNoCWxwaQlaQglUewotQ2hhbmdlIG51bWJlciBvZiBsaW5lcyBwZXIgaW5jaCB0byAjMQotVH0KLWNoYW5nZV9yZXNfaG9yegljaHIJWkMJVHsKLUNoYW5nZSBob3Jpem9udGFsIHJlc29sdXRpb24gdG8gIzEKLVR9Ci1jaGFuZ2VfcmVzX3ZlcnQJY3ZyCVpECVR7Ci1DaGFuZ2UgdmVydGljYWwgcmVzb2x1dGlvbiB0byAjMQotVH0KLWNoYW5nZV9zY3JvbGxfcmVnaW9uCWNzcgljcwlUewotY2hhbmdlIHJlZ2lvbiB0byBsaW5lICMxIHRvIGxpbmUgIzIgKFApCi1UfQotY2hhcl9wYWRkaW5nCXJtcAlyUAlUewotbGlrZSBpcCBidXQgd2hlbiBpbiBpbnNlcnQgbW9kZQotVH0KLWNsZWFyX2FsbF90YWJzCXRiYwljdAlUewotY2xlYXIgYWxsIHRhYiBzdG9wcyAoUCkKLVR9Ci1jbGVhcl9tYXJnaW5zCW1nYwlNQwlUewotY2xlYXIgcmlnaHQgYW5kIGxlZnQgc29mdCBtYXJnaW5zCi1UfQotY2xlYXJfc2NyZWVuCWNsZWFyCWNsCVR7Ci1jbGVhciBzY3JlZW4gYW5kIGhvbWUgY3Vyc29yIChQKikKLVR9Ci1jbHJfYm9sCWVsMQljYglUewotQ2xlYXIgdG8gYmVnaW5uaW5nIG9mIGxpbmUKLVR9Ci1jbHJfZW9sCWVsCWNlCVR7Ci1jbGVhciB0byBlbmQgb2YgbGluZSAoUCkKLVR9Ci1jbHJfZW9zCWVkCWNkCVR7Ci1jbGVhciB0byBlbmQgb2Ygc2NyZWVuIChQKikKLVR9Ci1jb2x1bW5fYWRkcmVzcwlocGEJY2gJVHsKLWhvcml6b250YWwgcG9zaXRpb24gIzEsIGFic29sdXRlIChQKQotVH0KLWNvbW1hbmRfY2hhcmFjdGVyCWNtZGNoCUNDCVR7Ci10ZXJtaW5hbCBzZXR0YWJsZSBjbWQgY2hhcmFjdGVyIGluIHByb3RvdHlwZSAhPwotVH0KLWNyZWF0ZV93aW5kb3cJY3dpbglDVwlUewotZGVmaW5lIGEgd2luZG93ICMxIGZyb20gIzIsIzMgdG8gIzQsIzUKLVR9Ci1jdXJzb3JfYWRkcmVzcwljdXAJY20JVHsKLW1vdmUgdG8gcm93ICMxIGNvbHVtbnMgIzIKLVR9Ci1jdXJzb3JfZG93bgljdWQxCWRvCVR7Ci1kb3duIG9uZSBsaW5lCi1UfQotY3Vyc29yX2hvbWUJaG9tZQlobwlUewotaG9tZSBjdXJzb3IgKGlmIG5vIGN1cCkKLVR9Ci1jdXJzb3JfaW52aXNpYmxlCWNpdmlzCXZpCVR7Ci1tYWtlIGN1cnNvciBpbnZpc2libGUKLVR9Ci1jdXJzb3JfbGVmdAljdWIxCWxlCVR7Ci1tb3ZlIGxlZnQgb25lIHNwYWNlCi1UfQotY3Vyc29yX21lbV9hZGRyZXNzCW1yY3VwCUNNCVR7Ci1tZW1vcnkgcmVsYXRpdmUgY3Vyc29yIGFkZHJlc3NpbmcsIG1vdmUgdG8gcm93ICMxIGNvbHVtbnMgIzIKLVR9Ci1jdXJzb3Jfbm9ybWFsCWNub3JtCXZlCVR7Ci1tYWtlIGN1cnNvciBhcHBlYXIgbm9ybWFsICh1bmRvIGNpdmlzL2N2dmlzKQotVH0KLWN1cnNvcl9yaWdodAljdWYxCW5kCVR7Ci1ub24tZGVzdHJ1Y3RpdmUgc3BhY2UgKG1vdmUgcmlnaHQgb25lIHNwYWNlKQotVH0KLWN1cnNvcl90b19sbAlsbAlsbAlUewotbGFzdCBsaW5lLCBmaXJzdCBjb2x1bW4gKGlmIG5vIGN1cCkKLVR9Ci1jdXJzb3JfdXAJY3V1MQl1cAlUewotdXAgb25lIGxpbmUKLVR9Ci1jdXJzb3JfdmlzaWJsZQljdnZpcwl2cwlUewotbWFrZSBjdXJzb3IgdmVyeSB2aXNpYmxlCi1UfQotZGVmaW5lX2NoYXIJZGVmYwlaRQlUewotRGVmaW5lIGEgY2hhcmFjdGVyICMxLCAjMiBkb3RzIHdpZGUsIGRlc2NlbmRlciAjMwotVH0KLWRlbGV0ZV9jaGFyYWN0ZXIJZGNoMQlkYwlUewotZGVsZXRlIGNoYXJhY3RlciAoUCopCi1UfQotZGVsZXRlX2xpbmUJZGwxCWRsCVR7Ci1kZWxldGUgbGluZSAoUCopCi1UfQotZGlhbF9waG9uZQlkaWFsCURJCVR7Ci1kaWFsIG51bWJlciAjMQotVH0KLWRpc19zdGF0dXNfbGluZQlkc2wJZHMJVHsKLWRpc2FibGUgc3RhdHVzIGxpbmUKLVR9Ci1kaXNwbGF5X2Nsb2NrCWRjbGsJREsJVHsKLWRpc3BsYXkgY2xvY2sKLVR9Ci1kb3duX2hhbGZfbGluZQloZAloZAlUewotaGFsZiBhIGxpbmUgZG93bgotVH0KLWVuYV9hY3MJZW5hY3MJZUEJVHsKLWVuYWJsZSBhbHRlcm5hdGUgY2hhciBzZXQKLVR9Ci1lbnRlcl9hbHRfY2hhcnNldF9tb2RlCXNtYWNzCWFzCVR7Ci1zdGFydCBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCAoUCkKLVR9Ci1lbnRlcl9hbV9tb2RlCXNtYW0JU0EJVHsKLXR1cm4gb24gYXV0b21hdGljIG1hcmdpbnMKLVR9Ci1lbnRlcl9ibGlua19tb2RlCWJsaW5rCW1iCVR7Ci10dXJuIG9uIGJsaW5raW5nCi1UfQotZW50ZXJfYm9sZF9tb2RlCWJvbGQJbWQJVHsKLXR1cm4gb24gYm9sZCAoZXh0cmEgYnJpZ2h0KSBtb2RlCi1UfQotZW50ZXJfY2FfbW9kZQlzbWN1cAl0aQlUewotc3RyaW5nIHRvIHN0YXJ0IHByb2dyYW1zIHVzaW5nIGN1cAotVH0KLWVudGVyX2RlbGV0ZV9tb2RlCXNtZGMJZG0JVHsKLWVudGVyIGRlbGV0ZSBtb2RlCi1UfQotZW50ZXJfZGltX21vZGUJZGltCW1oCVR7Ci10dXJuIG9uIGhhbGYtYnJpZ2h0IG1vZGUKLVR9Ci1lbnRlcl9kb3VibGV3aWRlX21vZGUJc3dpZG0JWkYJVHsKLUVudGVyIGRvdWJsZS13aWRlIG1vZGUKLVR9Ci1lbnRlcl9kcmFmdF9xdWFsaXR5CXNkcmZxCVpHCVR7Ci1FbnRlciBkcmFmdC1xdWFsaXR5IG1vZGUKLVR9Ci1lbnRlcl9pbnNlcnRfbW9kZQlzbWlyCWltCVR7Ci1lbnRlciBpbnNlcnQgbW9kZQotVH0KLWVudGVyX2l0YWxpY3NfbW9kZQlzaXRtCVpICVR7Ci1FbnRlciBpdGFsaWMgbW9kZQotVH0KLWVudGVyX2xlZnR3YXJkX21vZGUJc2xtCVpJCVR7Ci1TdGFydCBsZWZ0d2FyZCBjYXJyaWFnZSBtb3Rpb24KLVR9Ci1lbnRlcl9taWNyb19tb2RlCXNtaWNtCVpKCVR7Ci1TdGFydCBtaWNyby1tb3Rpb24gbW9kZQotVH0KLWVudGVyX25lYXJfbGV0dGVyX3F1YWxpdHkJc25scQlaSwlUewotRW50ZXIgTkxRIG1vZGUKLVR9Ci1lbnRlcl9ub3JtYWxfcXVhbGl0eQlzbnJtcQlaTAlUewotRW50ZXIgbm9ybWFsLXF1YWxpdHkgbW9kZQotVH0KLWVudGVyX3Byb3RlY3RlZF9tb2RlCXByb3QJbXAJVHsKLXR1cm4gb24gcHJvdGVjdGVkIG1vZGUKLVR9Ci1lbnRlcl9yZXZlcnNlX21vZGUJcmV2CW1yCVR7Ci10dXJuIG9uIHJldmVyc2UgdmlkZW8gbW9kZQotVH0KLWVudGVyX3NlY3VyZV9tb2RlCWludmlzCW1rCVR7Ci10dXJuIG9uIGJsYW5rIG1vZGUgKGNoYXJhY3RlcnMgaW52aXNpYmxlKQotVH0KLWVudGVyX3NoYWRvd19tb2RlCXNzaG0JWk0JVHsKLUVudGVyIHNoYWRvdy1wcmludCBtb2RlCi1UfQotZW50ZXJfc3RhbmRvdXRfbW9kZQlzbXNvCXNvCVR7Ci1iZWdpbiBzdGFuZG91dCBtb2RlCi1UfQotZW50ZXJfc3Vic2NyaXB0X21vZGUJc3N1Ym0JWk4JVHsKLUVudGVyIHN1YnNjcmlwdCBtb2RlCi1UfQotZW50ZXJfc3VwZXJzY3JpcHRfbW9kZQlzc3VwbQlaTwlUewotRW50ZXIgc3VwZXJzY3JpcHQgbW9kZQotVH0KLWVudGVyX3VuZGVybGluZV9tb2RlCXNtdWwJdXMJVHsKLWJlZ2luIHVuZGVybGluZSBtb2RlCi1UfQotZW50ZXJfdXB3YXJkX21vZGUJc3VtCVpQCVR7Ci1TdGFydCB1cHdhcmQgY2FycmlhZ2UgbW90aW9uCi1UfQotZW50ZXJfeG9uX21vZGUJc214b24JU1gJVHsKLXR1cm4gb24geG9uL3hvZmYgaGFuZHNoYWtpbmcKLVR9Ci1lcmFzZV9jaGFycwllY2gJZWMJVHsKLWVyYXNlICMxIGNoYXJhY3RlcnMgKFApCi1UfQotZXhpdF9hbHRfY2hhcnNldF9tb2RlCXJtYWNzCWFlCVR7Ci1lbmQgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgKFApCi1UfQotZXhpdF9hbV9tb2RlCXJtYW0JUkEJVHsKLXR1cm4gb2ZmIGF1dG9tYXRpYyBtYXJnaW5zCi1UfQotZXhpdF9hdHRyaWJ1dGVfbW9kZQlzZ3IwCW1lCVR7Ci10dXJuIG9mZiBhbGwgYXR0cmlidXRlcwotVH0KLWV4aXRfY2FfbW9kZQlybWN1cAl0ZQlUewotc3RyaW5ncyB0byBlbmQgcHJvZ3JhbXMgdXNpbmcgY3VwCi1UfQotZXhpdF9kZWxldGVfbW9kZQlybWRjCWVkCVR7Ci1lbmQgZGVsZXRlIG1vZGUKLVR9Ci1leGl0X2RvdWJsZXdpZGVfbW9kZQlyd2lkbQlaUQlUewotRW5kIGRvdWJsZS13aWRlIG1vZGUKLVR9Ci1leGl0X2luc2VydF9tb2RlCXJtaXIJZWkJVHsKLWV4aXQgaW5zZXJ0IG1vZGUKLVR9Ci1leGl0X2l0YWxpY3NfbW9kZQlyaXRtCVpSCVR7Ci1FbmQgaXRhbGljIG1vZGUKLVR9Ci1leGl0X2xlZnR3YXJkX21vZGUJcmxtCVpTCVR7Ci1FbmQgbGVmdC1tb3Rpb24gbW9kZQotVH0KLWV4aXRfbWljcm9fbW9kZQlybWljbQlaVAlUewotRW5kIG1pY3JvLW1vdGlvbiBtb2RlCi1UfQotZXhpdF9zaGFkb3dfbW9kZQlyc2htCVpVCVR7Ci1FbmQgc2hhZG93LXByaW50IG1vZGUKLVR9Ci1leGl0X3N0YW5kb3V0X21vZGUJcm1zbwlzZQlUewotZXhpdCBzdGFuZG91dCBtb2RlCi1UfQotZXhpdF9zdWJzY3JpcHRfbW9kZQlyc3VibQlaVglUewotRW5kIHN1YnNjcmlwdCBtb2RlCi1UfQotZXhpdF9zdXBlcnNjcmlwdF9tb2RlCXJzdXBtCVpXCVR7Ci1FbmQgc3VwZXJzY3JpcHQgbW9kZQotVH0KLWV4aXRfdW5kZXJsaW5lX21vZGUJcm11bAl1ZQlUewotZXhpdCB1bmRlcmxpbmUgbW9kZQotVH0KLWV4aXRfdXB3YXJkX21vZGUJcnVtCVpYCVR7Ci1FbmQgcmV2ZXJzZSBjaGFyYWN0ZXIgbW90aW9uCi1UfQotZXhpdF94b25fbW9kZQlybXhvbglSWAlUewotdHVybiBvZmYgeG9uL3hvZmYgaGFuZHNoYWtpbmcKLVR9Ci1maXhlZF9wYXVzZQlwYXVzZQlQQQlUewotcGF1c2UgZm9yIDItMyBzZWNvbmRzCi1UfQotZmxhc2hfaG9vawlob29rCWZoCVR7Ci1mbGFzaCBzd2l0Y2ggaG9vawotVH0KLWZsYXNoX3NjcmVlbglmbGFzaAl2YglUewotdmlzaWJsZSBiZWxsIChtYXkgbm90IG1vdmUgY3Vyc29yKQotVH0KLWZvcm1fZmVlZAlmZglmZglUewotaGFyZGNvcHkgdGVybWluYWwgcGFnZSBlamVjdCAoUCopCi1UfQotZnJvbV9zdGF0dXNfbGluZQlmc2wJZnMJVHsKLXJldHVybiBmcm9tIHN0YXR1cyBsaW5lCi1UfQotZ290b193aW5kb3cJd2luZ28JV0cJVHsKLWdvIHRvIHdpbmRvdyAjMQotVH0KLWhhbmd1cAlodXAJSFUJVHsKLWhhbmctdXAgcGhvbmUKLVR9Ci1pbml0XzFzdHJpbmcJaXMxCWkxCVR7Ci1pbml0aWFsaXphdGlvbiBzdHJpbmcKLVR9Ci1pbml0XzJzdHJpbmcJaXMyCWlzCVR7Ci1pbml0aWFsaXphdGlvbiBzdHJpbmcKLVR9Ci1pbml0XzNzdHJpbmcJaXMzCWkzCVR7Ci1pbml0aWFsaXphdGlvbiBzdHJpbmcKLVR9Ci1pbml0X2ZpbGUJaWYJaWYJVHsKLW5hbWUgb2YgaW5pdGlhbGl6YXRpb24gZmlsZQotVH0KLWluaXRfcHJvZwlpcHJvZwlpUAlUewotcGF0aCBuYW1lIG9mIHByb2dyYW0gZm9yIGluaXRpYWxpemF0aW9uCi1UfQotaW5pdGlhbGl6ZV9jb2xvcglpbml0YwlJYwlUewotaW5pdGlhbGl6ZSBjb2xvciAjMSB0byAoIzIsIzMsIzQpCi1UfQotaW5pdGlhbGl6ZV9wYWlyCWluaXRwCUlwCVR7Ci1Jbml0aWFsaXplIGNvbG9yIHBhaXIgIzEgdG8gZmc9KCMyLCMzLCM0KSwgYmc9KCM1LCM2LCM3KQotVH0KLWluc2VydF9jaGFyYWN0ZXIJaWNoMQlpYwlUewotaW5zZXJ0IGNoYXJhY3RlciAoUCkKLVR9Ci1pbnNlcnRfbGluZQlpbDEJYWwJVHsKLWluc2VydCBsaW5lIChQKikKLVR9Ci1pbnNlcnRfcGFkZGluZwlpcAlpcAlUewotaW5zZXJ0IHBhZGRpbmcgYWZ0ZXIgaW5zZXJ0ZWQgY2hhcmFjdGVyCi1UfQota2V5X2ExCWthMQlLMQlUewotdXBwZXIgbGVmdCBvZiBrZXlwYWQKLVR9Ci1rZXlfYTMJa2EzCUszCVR7Ci11cHBlciByaWdodCBvZiBrZXlwYWQKLVR9Ci1rZXlfYjIJa2IyCUsyCVR7Ci1jZW50ZXIgb2Yga2V5cGFkCi1UfQota2V5X2JhY2tzcGFjZQlrYnMJa2IJVHsKLWJhY2tzcGFjZSBrZXkKLVR9Ci1rZXlfYmVnCWtiZWcJQDEJVHsKLWJlZ2luIGtleQotVH0KLWtleV9idGFiCWtjYnQJa0IJVHsKLWJhY2stdGFiIGtleQotVH0KLWtleV9jMQlrYzEJSzQJVHsKLWxvd2VyIGxlZnQgb2Yga2V5cGFkCi1UfQota2V5X2MzCWtjMwlLNQlUewotbG93ZXIgcmlnaHQgb2Yga2V5cGFkCi1UfQota2V5X2NhbmNlbAlrY2FuCUAyCVR7Ci1jYW5jZWwga2V5Ci1UfQota2V5X2NhdGFiCWt0YmMJa2EJVHsKLWNsZWFyLWFsbC10YWJzIGtleQotVH0KLWtleV9jbGVhcglrY2xyCWtDCVR7Ci1jbGVhci1zY3JlZW4gb3IgZXJhc2Uga2V5Ci1UfQota2V5X2Nsb3NlCWtjbG8JQDMJVHsKLWNsb3NlIGtleQotVH0KLWtleV9jb21tYW5kCWtjbWQJQDQJVHsKLWNvbW1hbmQga2V5Ci1UfQota2V5X2NvcHkJa2NweQlANQlUewotY29weSBrZXkKLVR9Ci1rZXlfY3JlYXRlCWtjcnQJQDYJVHsKLWNyZWF0ZSBrZXkKLVR9Ci1rZXlfY3RhYglrY3RhYglrdAlUewotY2xlYXItdGFiIGtleQotVH0KLWtleV9kYwlrZGNoMQlrRAlUewotZGVsZXRlLWNoYXJhY3RlciBrZXkKLVR9Ci1rZXlfZGwJa2RsMQlrTAlUewotZGVsZXRlLWxpbmUga2V5Ci1UfQota2V5X2Rvd24Ja2N1ZDEJa2QJVHsKLWRvd24tYXJyb3cga2V5Ci1UfQota2V5X2VpYwlrcm1pcglrTQlUewotc2VudCBieSBybWlyIG9yIHNtaXIgaW4gaW5zZXJ0IG1vZGUKLVR9Ci1rZXlfZW5kCWtlbmQJQDcJVHsKLWVuZCBrZXkKLVR9Ci1rZXlfZW50ZXIJa2VudAlAOAlUewotZW50ZXIvc2VuZCBrZXkKLVR9Ci1rZXlfZW9sCWtlbAlrRQlUewotY2xlYXItdG8tZW5kLW9mLWxpbmUga2V5Ci1UfQota2V5X2VvcwlrZWQJa1MJVHsKLWNsZWFyLXRvLWVuZC1vZi1zY3JlZW4ga2V5Ci1UfQota2V5X2V4aXQJa2V4dAlAOQlUewotZXhpdCBrZXkKLVR9Ci1rZXlfZjAJa2YwCWswCVR7Ci1GMCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjEJa2YxCWsxCVR7Ci1GMSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjEwCWtmMTAJazsJVHsKLUYxMCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjExCWtmMTEJRjEJVHsKLUYxMSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjEyCWtmMTIJRjIJVHsKLUYxMiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjEzCWtmMTMJRjMJVHsKLUYxMyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE0CWtmMTQJRjQJVHsKLUYxNCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE1CWtmMTUJRjUJVHsKLUYxNSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE2CWtmMTYJRjYJVHsKLUYxNiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE3CWtmMTcJRjcJVHsKLUYxNyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE4CWtmMTgJRjgJVHsKLUYxOCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjE5CWtmMTkJRjkJVHsKLUYxOSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjIJa2YyCWsyCVR7Ci1GMiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjIwCWtmMjAJRkEJVHsKLUYyMCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjIxCWtmMjEJRkIJVHsKLUYyMSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjIyCWtmMjIJRkMJVHsKLUYyMiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjIzCWtmMjMJRkQJVHsKLUYyMyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI0CWtmMjQJRkUJVHsKLUYyNCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI1CWtmMjUJRkYJVHsKLUYyNSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI2CWtmMjYJRkcJVHsKLUYyNiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI3CWtmMjcJRkgJVHsKLUYyNyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI4CWtmMjgJRkkJVHsKLUYyOCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjI5CWtmMjkJRkoJVHsKLUYyOSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjMJa2YzCWszCVR7Ci1GMyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjMwCWtmMzAJRksJVHsKLUYzMCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjMxCWtmMzEJRkwJVHsKLUYzMSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjMyCWtmMzIJRk0JVHsKLUYzMiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjMzCWtmMzMJRk4JVHsKLUYzMyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM0CWtmMzQJRk8JVHsKLUYzNCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM1CWtmMzUJRlAJVHsKLUYzNSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM2CWtmMzYJRlEJVHsKLUYzNiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM3CWtmMzcJRlIJVHsKLUYzNyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM4CWtmMzgJRlMJVHsKLUYzOCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjM5CWtmMzkJRlQJVHsKLUYzOSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQJa2Y0CWs0CVR7Ci1GNCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQwCWtmNDAJRlUJVHsKLUY0MCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQxCWtmNDEJRlYJVHsKLUY0MSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQyCWtmNDIJRlcJVHsKLUY0MiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQzCWtmNDMJRlgJVHsKLUY0MyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ0CWtmNDQJRlkJVHsKLUY0NCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ1CWtmNDUJRloJVHsKLUY0NSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ2CWtmNDYJRmEJVHsKLUY0NiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ3CWtmNDcJRmIJVHsKLUY0NyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ4CWtmNDgJRmMJVHsKLUY0OCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjQ5CWtmNDkJRmQJVHsKLUY0OSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjUJa2Y1CWs1CVR7Ci1GNSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjUwCWtmNTAJRmUJVHsKLUY1MCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjUxCWtmNTEJRmYJVHsKLUY1MSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjUyCWtmNTIJRmcJVHsKLUY1MiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjUzCWtmNTMJRmgJVHsKLUY1MyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU0CWtmNTQJRmkJVHsKLUY1NCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU1CWtmNTUJRmoJVHsKLUY1NSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU2CWtmNTYJRmsJVHsKLUY1NiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU3CWtmNTcJRmwJVHsKLUY1NyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU4CWtmNTgJRm0JVHsKLUY1OCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjU5CWtmNTkJRm4JVHsKLUY1OSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjYJa2Y2CWs2CVR7Ci1GNiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjYwCWtmNjAJRm8JVHsKLUY2MCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjYxCWtmNjEJRnAJVHsKLUY2MSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjYyCWtmNjIJRnEJVHsKLUY2MiBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjYzCWtmNjMJRnIJVHsKLUY2MyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjcJa2Y3CWs3CVR7Ci1GNyBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjgJa2Y4CWs4CVR7Ci1GOCBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZjkJa2Y5CWs5CVR7Ci1GOSBmdW5jdGlvbiBrZXkKLVR9Ci1rZXlfZmluZAlrZm5kCUAwCVR7Ci1maW5kIGtleQotVH0KLWtleV9oZWxwCWtobHAJJTEJVHsKLWhlbHAga2V5Ci1UfQota2V5X2hvbWUJa2hvbWUJa2gJVHsKLWhvbWUga2V5Ci1UfQota2V5X2ljCWtpY2gxCWtJCVR7Ci1pbnNlcnQtY2hhcmFjdGVyIGtleQotVH0KLWtleV9pbAlraWwxCWtBCVR7Ci1pbnNlcnQtbGluZSBrZXkKLVR9Ci1rZXlfbGVmdAlrY3ViMQlrbAlUewotbGVmdC1hcnJvdyBrZXkKLVR9Ci1rZXlfbGwJa2xsCWtICVR7Ci1sb3dlci1sZWZ0IGtleSAoaG9tZSBkb3duKQotVH0KLWtleV9tYXJrCWttcmsJJTIJVHsKLW1hcmsga2V5Ci1UfQota2V5X21lc3NhZ2UJa21zZwklMwlUewotbWVzc2FnZSBrZXkKLVR9Ci1rZXlfbW92ZQlrbW92CSU0CVR7Ci1tb3ZlIGtleQotVH0KLWtleV9uZXh0CWtueHQJJTUJVHsKLW5leHQga2V5Ci1UfQota2V5X25wYWdlCWtucAlrTglUewotbmV4dC1wYWdlIGtleQotVH0KLWtleV9vcGVuCWtvcG4JJTYJVHsKLW9wZW4ga2V5Ci1UfQota2V5X29wdGlvbnMJa29wdAklNwlUewotb3B0aW9ucyBrZXkKLVR9Ci1rZXlfcHBhZ2UJa3BwCWtQCVR7Ci1wcmV2aW91cy1wYWdlIGtleQotVH0KLWtleV9wcmV2aW91cwlrcHJ2CSU4CVR7Ci1wcmV2aW91cyBrZXkKLVR9Ci1rZXlfcHJpbnQJa3BydAklOQlUewotcHJpbnQga2V5Ci1UfQota2V5X3JlZG8Ja3JkbwklMAlUewotcmVkbyBrZXkKLVR9Ci1rZXlfcmVmZXJlbmNlCWtyZWYJJjEJVHsKLXJlZmVyZW5jZSBrZXkKLVR9Ci1rZXlfcmVmcmVzaAlrcmZyCSYyCVR7Ci1yZWZyZXNoIGtleQotVH0KLWtleV9yZXBsYWNlCWtycGwJJjMJVHsKLXJlcGxhY2Uga2V5Ci1UfQota2V5X3Jlc3RhcnQJa3JzdAkmNAlUewotcmVzdGFydCBrZXkKLVR9Ci1rZXlfcmVzdW1lCWtyZXMJJjUJVHsKLXJlc3VtZSBrZXkKLVR9Ci1rZXlfcmlnaHQJa2N1ZjEJa3IJVHsKLXJpZ2h0LWFycm93IGtleQotVH0KLWtleV9zYXZlCWtzYXYJJjYJVHsKLXNhdmUga2V5Ci1UfQota2V5X3NiZWcJa0JFRwkmOQlUewotc2hpZnRlZCBiZWdpbiBrZXkKLVR9Ci1rZXlfc2NhbmNlbAlrQ0FOCSYwCVR7Ci1zaGlmdGVkIGNhbmNlbCBrZXkKLVR9Ci1rZXlfc2NvbW1hbmQJa0NNRAkqMQlUewotc2hpZnRlZCBjb21tYW5kIGtleQotVH0KLWtleV9zY29weQlrQ1BZCSoyCVR7Ci1zaGlmdGVkIGNvcHkga2V5Ci1UfQota2V5X3NjcmVhdGUJa0NSVAkqMwlUewotc2hpZnRlZCBjcmVhdGUga2V5Ci1UfQota2V5X3NkYwlrREMJKjQJVHsKLXNoaWZ0ZWQgZGVsZXRlLWNoYXJhY3RlciBrZXkKLVR9Ci1rZXlfc2RsCWtETAkqNQlUewotc2hpZnRlZCBkZWxldGUtbGluZSBrZXkKLVR9Ci1rZXlfc2VsZWN0CWtzbHQJKjYJVHsKLXNlbGVjdCBrZXkKLVR9Ci1rZXlfc2VuZAlrRU5ECSo3CVR7Ci1zaGlmdGVkIGVuZCBrZXkKLVR9Ci1rZXlfc2VvbAlrRU9MCSo4CVR7Ci1zaGlmdGVkIGNsZWFyLXRvLWVuZC1vZi1saW5lIGtleQotVH0KLWtleV9zZXhpdAlrRVhUCSo5CVR7Ci1zaGlmdGVkIGV4aXQga2V5Ci1UfQota2V5X3NmCWtpbmQJa0YJVHsKLXNjcm9sbC1mb3J3YXJkIGtleQotVH0KLWtleV9zZmluZAlrRk5ECSowCVR7Ci1zaGlmdGVkIGZpbmQga2V5Ci1UfQota2V5X3NoZWxwCWtITFAJIzEJVHsKLXNoaWZ0ZWQgaGVscCBrZXkKLVR9Ci1rZXlfc2hvbWUJa0hPTQkjMglUewotc2hpZnRlZCBob21lIGtleQotVH0KLWtleV9zaWMJa0lDCSMzCVR7Ci1zaGlmdGVkIGluc2VydC1jaGFyYWN0ZXIga2V5Ci1UfQota2V5X3NsZWZ0CWtMRlQJIzQJVHsKLXNoaWZ0ZWQgbGVmdC1hcnJvdyBrZXkKLVR9Ci1rZXlfc21lc3NhZ2UJa01TRwklYQlUewotc2hpZnRlZCBtZXNzYWdlIGtleQotVH0KLWtleV9zbW92ZQlrTU9WCSViCVR7Ci1zaGlmdGVkIG1vdmUga2V5Ci1UfQota2V5X3NuZXh0CWtOWFQJJWMJVHsKLXNoaWZ0ZWQgbmV4dCBrZXkKLVR9Ci1rZXlfc29wdGlvbnMJa09QVAklZAlUewotc2hpZnRlZCBvcHRpb25zIGtleQotVH0KLWtleV9zcHJldmlvdXMJa1BSVgklZQlUewotc2hpZnRlZCBwcmV2aW91cyBrZXkKLVR9Ci1rZXlfc3ByaW50CWtQUlQJJWYJVHsKLXNoaWZ0ZWQgcHJpbnQga2V5Ci1UfQota2V5X3NyCWtyaQlrUglUewotc2Nyb2xsLWJhY2t3YXJkIGtleQotVH0KLWtleV9zcmVkbwlrUkRPCSVnCVR7Ci1zaGlmdGVkIHJlZG8ga2V5Ci1UfQota2V5X3NyZXBsYWNlCWtSUEwJJWgJVHsKLXNoaWZ0ZWQgcmVwbGFjZSBrZXkKLVR9Ci1rZXlfc3JpZ2h0CWtSSVQJJWkJVHsKLXNoaWZ0ZWQgcmlnaHQtYXJyb3cga2V5Ci1UfQota2V5X3Nyc3VtZQlrUkVTCSVqCVR7Ci1zaGlmdGVkIHJlc3VtZSBrZXkKLVR9Ci1rZXlfc3NhdmUJa1NBVgkhMQlUewotc2hpZnRlZCBzYXZlIGtleQotVH0KLWtleV9zc3VzcGVuZAlrU1BECSEyCVR7Ci1zaGlmdGVkIHN1c3BlbmQga2V5Ci1UfQota2V5X3N0YWIJa2h0cwlrVAlUewotc2V0LXRhYiBrZXkKLVR9Ci1rZXlfc3VuZG8Ja1VORAkhMwlUewotc2hpZnRlZCB1bmRvIGtleQotVH0KLWtleV9zdXNwZW5kCWtzcGQJJjcJVHsKLXN1c3BlbmQga2V5Ci1UfQota2V5X3VuZG8Ja3VuZAkmOAlUewotdW5kbyBrZXkKLVR9Ci1rZXlfdXAJa2N1dTEJa3UJVHsKLXVwLWFycm93IGtleQotVH0KLWtleXBhZF9sb2NhbAlybWt4CWtlCVR7Ci1sZWF2ZSAna2V5Ym9hcmRfdHJhbnNtaXQnIG1vZGUKLVR9Ci1rZXlwYWRfeG1pdAlzbWt4CWtzCVR7Ci1lbnRlciAna2V5Ym9hcmRfdHJhbnNtaXQnIG1vZGUKLVR9Ci1sYWJfZjAJbGYwCWwwCVR7Ci1sYWJlbCBvbiBmdW5jdGlvbiBrZXkgZjAgaWYgbm90IGYwCi1UfQotbGFiX2YxCWxmMQlsMQlUewotbGFiZWwgb24gZnVuY3Rpb24ga2V5IGYxIGlmIG5vdCBmMQotVH0KLWxhYl9mMTAJbGYxMAlsYQlUewotbGFiZWwgb24gZnVuY3Rpb24ga2V5IGYxMCBpZiBub3QgZjEwCi1UfQotbGFiX2YyCWxmMglsMglUewotbGFiZWwgb24gZnVuY3Rpb24ga2V5IGYyIGlmIG5vdCBmMgotVH0KLWxhYl9mMwlsZjMJbDMJVHsKLWxhYmVsIG9uIGZ1bmN0aW9uIGtleSBmMyBpZiBub3QgZjMKLVR9Ci1sYWJfZjQJbGY0CWw0CVR7Ci1sYWJlbCBvbiBmdW5jdGlvbiBrZXkgZjQgaWYgbm90IGY0Ci1UfQotbGFiX2Y1CWxmNQlsNQlUewotbGFiZWwgb24gZnVuY3Rpb24ga2V5IGY1IGlmIG5vdCBmNQotVH0KLWxhYl9mNglsZjYJbDYJVHsKLWxhYmVsIG9uIGZ1bmN0aW9uIGtleSBmNiBpZiBub3QgZjYKLVR9Ci1sYWJfZjcJbGY3CWw3CVR7Ci1sYWJlbCBvbiBmdW5jdGlvbiBrZXkgZjcgaWYgbm90IGY3Ci1UfQotbGFiX2Y4CWxmOAlsOAlUewotbGFiZWwgb24gZnVuY3Rpb24ga2V5IGY4IGlmIG5vdCBmOAotVH0KLWxhYl9mOQlsZjkJbDkJVHsKLWxhYmVsIG9uIGZ1bmN0aW9uIGtleSBmOSBpZiBub3QgZjkKLVR9Ci1sYWJlbF9mb3JtYXQJZmxuCUxmCVR7Ci1sYWJlbCBmb3JtYXQKLVR9Ci1sYWJlbF9vZmYJcm1sbglMRglUewotdHVybiBvZmYgc29mdCBsYWJlbHMKLVR9Ci1sYWJlbF9vbglzbWxuCUxPCVR7Ci10dXJuIG9uIHNvZnQgbGFiZWxzCi1UfQotbWV0YV9vZmYJcm1tCW1vCVR7Ci10dXJuIG9mZiBtZXRhIG1vZGUKLVR9Ci1tZXRhX29uCXNtbQltbQlUewotdHVybiBvbiBtZXRhIG1vZGUgKDh0aC1iaXQgb24pCi1UfQotbWljcm9fY29sdW1uX2FkZHJlc3MJbWhwYQlaWQlUewotTGlrZSBjb2x1bW5fYWRkcmVzcyBpbiBtaWNybyBtb2RlCi1UfQotbWljcm9fZG93bgltY3VkMQlaWglUewotTGlrZSBjdXJzb3JfZG93biBpbiBtaWNybyBtb2RlCi1UfQotbWljcm9fbGVmdAltY3ViMQlaYQlUewotTGlrZSBjdXJzb3JfbGVmdCBpbiBtaWNybyBtb2RlCi1UfQotbWljcm9fcmlnaHQJbWN1ZjEJWmIJVHsKLUxpa2UgY3Vyc29yX3JpZ2h0IGluIG1pY3JvIG1vZGUKLVR9Ci1taWNyb19yb3dfYWRkcmVzcwltdnBhCVpjCVR7Ci1MaWtlIHJvd19hZGRyZXNzICMxIGluIG1pY3JvIG1vZGUKLVR9Ci1taWNyb191cAltY3V1MQlaZAlUewotTGlrZSBjdXJzb3JfdXAgaW4gbWljcm8gbW9kZQotVH0KLW5ld2xpbmUJbmVsCW53CVR7Ci1uZXdsaW5lIChiZWhhdmUgbGlrZSBjciBmb2xsb3dlZCBieSBsZikKLVR9Ci1vcmRlcl9vZl9waW5zCXBvcmRlcglaZQlUewotTWF0Y2ggc29mdHdhcmUgYml0cyB0byBwcmludC1oZWFkIHBpbnMKLVR9Ci1vcmlnX2NvbG9ycwlvYwlvYwlUewotU2V0IGFsbCBjb2xvciBwYWlycyB0byB0aGUgb3JpZ2luYWwgb25lcwotVH0KLW9yaWdfcGFpcglvcAlvcAlUewotU2V0IGRlZmF1bHQgcGFpciB0byBpdHMgb3JpZ2luYWwgdmFsdWUKLVR9Ci1wYWRfY2hhcglwYWQJcGMJVHsKLXBhZGRpbmcgY2hhciAoaW5zdGVhZCBvZiBudWxsKQotVH0KLXBhcm1fZGNoCWRjaAlEQwlUewotZGVsZXRlICMxIGNoYXJhY3RlcnMgKFAqKQotVH0KLXBhcm1fZGVsZXRlX2xpbmUJZGwJREwJVHsKLWRlbGV0ZSAjMSBsaW5lcyAoUCopCi1UfQotcGFybV9kb3duX2N1cnNvcgljdWQJRE8JVHsKLWRvd24gIzEgbGluZXMgKFAqKQotVH0KLXBhcm1fZG93bl9taWNybwltY3VkCVpmCVR7Ci1MaWtlIHBhcm1fZG93bl9jdXJzb3IgaW4gbWljcm8gbW9kZQotVH0KLXBhcm1faWNoCWljaAlJQwlUewotaW5zZXJ0ICMxIGNoYXJhY3RlcnMgKFAqKQotVH0KLXBhcm1faW5kZXgJaW5kbglTRglUewotc2Nyb2xsIGZvcndhcmQgIzEgbGluZXMgKFApCi1UfQotcGFybV9pbnNlcnRfbGluZQlpbAlBTAlUewotaW5zZXJ0ICMxIGxpbmVzIChQKikKLVR9Ci1wYXJtX2xlZnRfY3Vyc29yCWN1YglMRQlUewotbW92ZSAjMSBjaGFyYWN0ZXJzIHRvIHRoZSBsZWZ0IChQKQotVH0KLXBhcm1fbGVmdF9taWNybwltY3ViCVpnCVR7Ci1MaWtlIHBhcm1fbGVmdF9jdXJzb3IgaW4gbWljcm8gbW9kZQotVH0KLXBhcm1fcmlnaHRfY3Vyc29yCWN1ZglSSQlUewotbW92ZSAjMSBjaGFyYWN0ZXJzIHRvIHRoZSByaWdodCAoUCopCi1UfQotcGFybV9yaWdodF9taWNybwltY3VmCVpoCVR7Ci1MaWtlIHBhcm1fcmlnaHRfY3Vyc29yIGluIG1pY3JvIG1vZGUKLVR9Ci1wYXJtX3JpbmRleAlyaW4JU1IJVHsKLXNjcm9sbCBiYWNrICMxIGxpbmVzIChQKQotVH0KLXBhcm1fdXBfY3Vyc29yCWN1dQlVUAlUewotdXAgIzEgbGluZXMgKFAqKQotVH0KLXBhcm1fdXBfbWljcm8JbWN1dQlaaQlUewotTGlrZSBwYXJtX3VwX2N1cnNvciBpbiBtaWNybyBtb2RlCi1UfQotcGtleV9rZXkJcGZrZXkJcGsJVHsKLXByb2dyYW0gZnVuY3Rpb24ga2V5ICMxIHRvIHR5cGUgc3RyaW5nICMyCi1UfQotcGtleV9sb2NhbAlwZmxvYwlwbAlUewotcHJvZ3JhbSBmdW5jdGlvbiBrZXkgIzEgdG8gZXhlY3V0ZSBzdHJpbmcgIzIKLVR9Ci1wa2V5X3htaXQJcGZ4CXB4CVR7Ci1wcm9ncmFtIGZ1bmN0aW9uIGtleSAjMSB0byB0cmFuc21pdCBzdHJpbmcgIzIKLVR9Ci1wbGFiX25vcm0JcGxuCXBuCVR7Ci1wcm9ncmFtIGxhYmVsICMxIHRvIHNob3cgc3RyaW5nICMyCi1UfQotcHJpbnRfc2NyZWVuCW1jMAlwcwlUewotcHJpbnQgY29udGVudHMgb2Ygc2NyZWVuCi1UfQotcHJ0cl9ub24JbWM1cAlwTwlUewotdHVybiBvbiBwcmludGVyIGZvciAjMSBieXRlcwotVH0KLXBydHJfb2ZmCW1jNAlwZglUewotdHVybiBvZmYgcHJpbnRlcgotVH0KLXBydHJfb24JbWM1CXBvCVR7Ci10dXJuIG9uIHByaW50ZXIKLVR9Ci1wdWxzZQlwdWxzZQlQVQlUewotc2VsZWN0IHB1bHNlIGRpYWxpbmcKLVR9Ci1xdWlja19kaWFsCXFkaWFsCVFECVR7Ci1kaWFsIG51bWJlciAjMSB3aXRob3V0IGNoZWNraW5nCi1UfQotcmVtb3ZlX2Nsb2NrCXJtY2xrCVJDCVR7Ci1yZW1vdmUgY2xvY2sKLVR9Ci1yZXBlYXRfY2hhcglyZXAJcnAJVHsKLXJlcGVhdCBjaGFyICMxICMyIHRpbWVzIChQKikKLVR9Ci1yZXFfZm9yX2lucHV0CXJmaQlSRglUewotc2VuZCBuZXh0IGlucHV0IGNoYXIgKGZvciBwdHlzKQotVH0KLXJlc2V0XzFzdHJpbmcJcnMxCXIxCVR7Ci1yZXNldCBzdHJpbmcKLVR9Ci1yZXNldF8yc3RyaW5nCXJzMglyMglUewotcmVzZXQgc3RyaW5nCi1UfQotcmVzZXRfM3N0cmluZwlyczMJcjMJVHsKLXJlc2V0IHN0cmluZwotVH0KLXJlc2V0X2ZpbGUJcmYJcmYJVHsKLW5hbWUgb2YgcmVzZXQgZmlsZQotVH0KLXJlc3RvcmVfY3Vyc29yCXJjCXJjCVR7Ci1yZXN0b3JlIGN1cnNvciB0byBwb3NpdGlvbiBvZiBsYXN0IHNhdmVfY3Vyc29yCi1UfQotcm93X2FkZHJlc3MJdnBhCWN2CVR7Ci12ZXJ0aWNhbCBwb3NpdGlvbiAjMSBhYnNvbHV0ZSAoUCkKLVR9Ci1zYXZlX2N1cnNvcglzYwlzYwlUewotc2F2ZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAoUCkKLVR9Ci1zY3JvbGxfZm9yd2FyZAlpbmQJc2YJVHsKLXNjcm9sbCB0ZXh0IHVwIChQKQotVH0KLXNjcm9sbF9yZXZlcnNlCXJpCXNyCVR7Ci1zY3JvbGwgdGV4dCBkb3duIChQKQotVH0KLXNlbGVjdF9jaGFyX3NldAlzY3MJWmoJVHsKLVNlbGVjdCBjaGFyYWN0ZXIgc2V0LCAjMQotVH0KLXNldF9hdHRyaWJ1dGVzCXNncglzYQlUewotZGVmaW5lIHZpZGVvIGF0dHJpYnV0ZXMgIzEtIzkgKFBHOSkKLVR9Ci1zZXRfYmFja2dyb3VuZAlzZXRiCVNiCVR7Ci1TZXQgYmFja2dyb3VuZCBjb2xvciAjMQotVH0KLXNldF9ib3R0b21fbWFyZ2luCXNtZ2IJWmsJVHsKLVNldCBib3R0b20gbWFyZ2luIGF0IGN1cnJlbnQgbGluZQotVH0KLXNldF9ib3R0b21fbWFyZ2luX3Bhcm0Jc21nYnAJWmwJVHsKLVNldCBib3R0b20gbWFyZ2luIGF0IGxpbmUgIzEgb3IgKGlmIHNtZ3RwIGlzIG5vdCBnaXZlbikgIzIgbGluZXMgZnJvbSBib3R0b20KLVR9Ci1zZXRfY2xvY2sJc2NsawlTQwlUewotc2V0IGNsb2NrLCAjMSBocnMgIzIgbWlucyAjMyBzZWNzCi1UfQotc2V0X2NvbG9yX3BhaXIJc2NwCXNwCVR7Ci1TZXQgY3VycmVudCBjb2xvciBwYWlyIHRvICMxCi1UfQotc2V0X2ZvcmVncm91bmQJc2V0ZglTZglUewotU2V0IGZvcmVncm91bmQgY29sb3IgIzEKLVR9Ci1zZXRfbGVmdF9tYXJnaW4Jc21nbAlNTAlUewotc2V0IGxlZnQgc29mdCBtYXJnaW4gYXQgY3VycmVudCBjb2x1bW4uCSBTZWUgc21nbC4gKE1MIGlzIG5vdCBpbiBCU0QgdGVybWNhcCkuCi1UfQotc2V0X2xlZnRfbWFyZ2luX3Bhcm0Jc21nbHAJWm0JVHsKLVNldCBsZWZ0IChyaWdodCkgbWFyZ2luIGF0IGNvbHVtbiAjMQotVH0KLXNldF9yaWdodF9tYXJnaW4Jc21ncglNUglUewotc2V0IHJpZ2h0IHNvZnQgbWFyZ2luIGF0IGN1cnJlbnQgY29sdW1uCi1UfQotc2V0X3JpZ2h0X21hcmdpbl9wYXJtCXNtZ3JwCVpuCVR7Ci1TZXQgcmlnaHQgbWFyZ2luIGF0IGNvbHVtbiAjMQotVH0KLXNldF90YWIJaHRzCXN0CVR7Ci1zZXQgYSB0YWIgaW4gZXZlcnkgcm93LCBjdXJyZW50IGNvbHVtbnMKLVR9Ci1zZXRfdG9wX21hcmdpbglzbWd0CVpvCVR7Ci1TZXQgdG9wIG1hcmdpbiBhdCBjdXJyZW50IGxpbmUKLVR9Ci1zZXRfdG9wX21hcmdpbl9wYXJtCXNtZ3RwCVpwCVR7Ci1TZXQgdG9wIChib3R0b20pIG1hcmdpbiBhdCByb3cgIzEKLVR9Ci1zZXRfd2luZG93CXdpbmQJd2kJVHsKLWN1cnJlbnQgd2luZG93IGlzIGxpbmVzICMxLSMyIGNvbHMgIzMtIzQKLVR9Ci1zdGFydF9iaXRfaW1hZ2UJc2JpbQlacQlUewotU3RhcnQgcHJpbnRpbmcgYml0IGltYWdlIGdyYXBoaWNzCi1UfQotc3RhcnRfY2hhcl9zZXRfZGVmCXNjc2QJWnIJVHsKLVN0YXJ0IGNoYXJhY3RlciBzZXQgZGVmaW5pdGlvbiAjMSwgd2l0aCAjMiBjaGFyYWN0ZXJzIGluIHRoZSBzZXQKLVR9Ci1zdG9wX2JpdF9pbWFnZQlyYmltCVpzCVR7Ci1TdG9wIHByaW50aW5nIGJpdCBpbWFnZSBncmFwaGljcwotVH0KLXN0b3BfY2hhcl9zZXRfZGVmCXJjc2QJWnQJVHsKLUVuZCBkZWZpbml0aW9uIG9mIGNoYXJhY3RlciBzZXQgIzEKLVR9Ci1zdWJzY3JpcHRfY2hhcmFjdGVycwlzdWJjcwladQlUewotTGlzdCBvZiBzdWJzY3JpcHRhYmxlIGNoYXJhY3RlcnMKLVR9Ci1zdXBlcnNjcmlwdF9jaGFyYWN0ZXJzCXN1cGNzCVp2CVR7Ci1MaXN0IG9mIHN1cGVyc2NyaXB0YWJsZSBjaGFyYWN0ZXJzCi1UfQotdGFiCWh0CXRhCVR7Ci10YWIgdG8gbmV4dCA4LXNwYWNlIGhhcmR3YXJlIHRhYiBzdG9wCi1UfQotdGhlc2VfY2F1c2VfY3IJZG9jcgladwlUewotUHJpbnRpbmcgYW55IG9mIHRoZXNlIGNoYXJhY3RlcnMgY2F1c2VzIENSCi1UfQotdG9fc3RhdHVzX2xpbmUJdHNsCXRzCVR7Ci1tb3ZlIHRvIHN0YXR1cyBsaW5lLCBjb2x1bW4gIzEKLVR9Ci10b25lCXRvbmUJVE8JVHsKLXNlbGVjdCB0b3VjaCB0b25lIGRpYWxpbmcKLVR9Ci11bmRlcmxpbmVfY2hhcgl1Ywl1YwlUewotdW5kZXJsaW5lIGNoYXIgYW5kIG1vdmUgcGFzdCBpdAotVH0KLXVwX2hhbGZfbGluZQlodQlodQlUewotaGFsZiBhIGxpbmUgdXAKLVR9Ci11c2VyMAl1MAl1MAlUewotVXNlciBzdHJpbmcgIzAKLVR9Ci11c2VyMQl1MQl1MQlUewotVXNlciBzdHJpbmcgIzEKLVR9Ci11c2VyMgl1Mgl1MglUewotVXNlciBzdHJpbmcgIzIKLVR9Ci11c2VyMwl1Mwl1MwlUewotVXNlciBzdHJpbmcgIzMKLVR9Ci11c2VyNAl1NAl1NAlUewotVXNlciBzdHJpbmcgIzQKLVR9Ci11c2VyNQl1NQl1NQlUewotVXNlciBzdHJpbmcgIzUKLVR9Ci11c2VyNgl1Ngl1NglUewotVXNlciBzdHJpbmcgIzYKLVR9Ci11c2VyNwl1Nwl1NwlUewotVXNlciBzdHJpbmcgIzcKLVR9Ci11c2VyOAl1OAl1OAlUewotVXNlciBzdHJpbmcgIzgKLVR9Ci11c2VyOQl1OQl1OQlUewotVXNlciBzdHJpbmcgIzkKLVR9Ci13YWl0X3RvbmUJd2FpdAlXQQlUewotd2FpdCBmb3IgZGlhbC10b25lCi1UfQoteG9mZl9jaGFyYWN0ZXIJeG9mZmMJWEYJVHsKLVhPRkYgY2hhcmFjdGVyCi1UfQoteG9uX2NoYXJhY3Rlcgl4b25jCVhOCVR7Ci1YT04gY2hhcmFjdGVyCi1UfQotemVyb19tb3Rpb24JemVyb20JWngJVHsKLU5vIG1vdGlvbiBmb3Igc3Vic2VxdWVudCBjaGFyYWN0ZXIKLVR9Ci0uVEUKLS5hZAotCi1UaGUgZm9sbG93aW5nIHN0cmluZyBjYXBhYmlsaXRpZXMgYXJlIHByZXNlbnQgaW4gdGhlIFNWcjQuMCB0ZXJtIHN0cnVjdHVyZSwKLWJ1dCB3ZXJlIG9yaWdpbmFsbHkgbm90IGRvY3VtZW50ZWQgaW4gdGhlIG1hbiBwYWdlLgotCi0ubmEKLS5UUyBICi1jZW50ZXIgZXhwYW5kOwotYyBsIGwgYwotYyBsIGwgYwotbHcyNSBsdzYgbHcyIGx3MTguCi1cZkJWYXJpYWJsZQlDYXAtCVRDYXAJRGVzY3JpcHRpb25cZlIKLVxmQlN0cmluZwluYW1lCUNvZGVcZlIKLWFsdF9zY2FuY29kZV9lc2MJc2Nlc2EJUzgJVHsKLUFsdGVybmF0ZSBlc2NhcGUgZm9yIHNjYW5jb2RlIGVtdWxhdGlvbgotVH0KLWJpdF9pbWFnZV9jYXJyaWFnZV9yZXR1cm4JYmljcglZdglUewotTW92ZSB0byBiZWdpbm5pbmcgb2Ygc2FtZSByb3cKLVR9Ci1iaXRfaW1hZ2VfbmV3bGluZQliaW5lbAlaeglUewotTW92ZSB0byBuZXh0IHJvdyBvZiB0aGUgYml0IGltYWdlCi1UfQotYml0X2ltYWdlX3JlcGVhdAliaXJlcAlYeQlUewotUmVwZWF0IGJpdCBpbWFnZSBjZWxsICMxICMyIHRpbWVzCi1UfQotY2hhcl9zZXRfbmFtZXMJY3NubQlaeQlUewotUHJvZHVjZSAjMSd0aCBpdGVtIGZyb20gbGlzdCBvZiBjaGFyYWN0ZXIgc2V0IG5hbWVzCi1UfQotY29kZV9zZXRfaW5pdAljc2luCWNpCVR7Ci1Jbml0IHNlcXVlbmNlIGZvciBtdWx0aXBsZSBjb2Rlc2V0cwotVH0KLWNvbG9yX25hbWVzCWNvbG9ybm0JWXcJVHsKLUdpdmUgbmFtZSBmb3IgY29sb3IgIzEKLVR9Ci1kZWZpbmVfYml0X2ltYWdlX3JlZ2lvbglkZWZiaQlZeAlUewotRGVmaW5lIHJlY3Rhbmd1YWxhciBiaXQgaW1hZ2UgcmVnaW9uCi1UfQotZGV2aWNlX3R5cGUJZGV2dAlkdglUewotSW5kaWNhdGUgbGFuZ3VhZ2UvY29kZXNldCBzdXBwb3J0Ci1UfQotZGlzcGxheV9wY19jaGFyCWRpc3BjCVMxCVR7Ci1EaXNwbGF5IFBDIGNoYXJhY3RlciAjMQotVH0KLWVuZF9iaXRfaW1hZ2VfcmVnaW9uCWVuZGJpCVl5CVR7Ci1FbmQgYSBiaXQtaW1hZ2UgcmVnaW9uCi1UfQotZW50ZXJfcGNfY2hhcnNldF9tb2RlCXNtcGNoCVMyCVR7Ci1FbnRlciBQQyBjaGFyYWN0ZXIgZGlzcGxheSBtb2RlCi1UfQotZW50ZXJfc2NhbmNvZGVfbW9kZQlzbXNjCVM0CVR7Ci1FbnRlciBQQyBzY2FuY29kZSBtb2RlCi1UfQotZXhpdF9wY19jaGFyc2V0X21vZGUJcm1wY2gJUzMJVHsKLUV4aXQgUEMgY2hhcmFjdGVyIGRpc3BsYXkgbW9kZQotVH0KLWV4aXRfc2NhbmNvZGVfbW9kZQlybXNjCVM1CVR7Ci1FeGl0IFBDIHNjYW5jb2RlIG1vZGUKLVR9Ci1nZXRfbW91c2UJZ2V0bQlHbQlUewotQ3Vyc2VzIHNob3VsZCBnZXQgYnV0dG9uIGV2ZW50cywgcGFyYW1ldGVyICMxIG5vdCBkb2N1bWVudGVkLgotVH0KLWtleV9tb3VzZQlrbW91cwlLbQlUewotTW91c2UgZXZlbnQgaGFzIG9jY3VycmVkCi1UfQotbW91c2VfaW5mbwltaW5mbwlNaQlUewotTW91c2Ugc3RhdHVzIGluZm9ybWF0aW9uCi1UfQotcGNfdGVybV9vcHRpb25zCXBjdHJtCVM2CVR7Ci1QQyB0ZXJtaW5hbCBvcHRpb25zCi1UfQotcGtleV9wbGFiCXBmeGwJeGwJVHsKLVByb2dyYW0gZnVuY3Rpb24ga2V5ICMxIHRvIHR5cGUgc3RyaW5nICMyIGFuZCBzaG93IHN0cmluZyAjMwotVH0KLXJlcV9tb3VzZV9wb3MJcmVxbXAJUlEJVHsKLVJlcXVlc3QgbW91c2UgcG9zaXRpb24KLVR9Ci1zY2FuY29kZV9lc2NhcGUJc2Nlc2MJUzcJVHsKLUVzY2FwZSBmb3Igc2NhbmNvZGUgZW11bGF0aW9uCi1UfQotc2V0MF9kZXNfc2VxCXMwZHMJczAJVHsKLVNoaWZ0IHRvIGNvZGVzZXQgMCAoRVVDIHNldCAwLCBBU0NJSSkKLVR9Ci1zZXQxX2Rlc19zZXEJczFkcwlzMQlUewotU2hpZnQgdG8gY29kZXNldCAxCi1UfQotc2V0Ml9kZXNfc2VxCXMyZHMJczIJVHsKLVNoaWZ0IHRvIGNvZGVzZXQgMgotVH0KLXNldDNfZGVzX3NlcQlzM2RzCXMzCVR7Ci1TaGlmdCB0byBjb2Rlc2V0IDMKLVR9Ci1zZXRfYV9iYWNrZ3JvdW5kCXNldGFiCUFCCVR7Ci1TZXQgYmFja2dyb3VuZCBjb2xvciB0byAjMSwgdXNpbmcgQU5TSSBlc2NhcGUKLVR9Ci1zZXRfYV9mb3JlZ3JvdW5kCXNldGFmCUFGCVR7Ci1TZXQgZm9yZWdyb3VuZCBjb2xvciB0byAjMSwgdXNpbmcgQU5TSSBlc2NhcGUKLVR9Ci1zZXRfY29sb3JfYmFuZAlzZXRjb2xvcglZeglUewotQ2hhbmdlIHRvIHJpYmJvbiBjb2xvciAjMQotVH0KLXNldF9scl9tYXJnaW4Jc21nbHIJTUwJVHsKLVNldCBib3RoIGxlZnQgYW5kIHJpZ2h0IG1hcmdpbnMgdG8gIzEsICMyLiAgKE1MIGlzIG5vdCBpbiBCU0QgdGVybWNhcCkuCi1UfQotc2V0X3BhZ2VfbGVuZ3RoCXNsaW5lcwlZWglUewotU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGxpbmVzCi1UfQotc2V0X3RiX21hcmdpbglzbWd0YglNVAlUewotU2V0cyBib3RoIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgdG8gIzEsICMyCi1UfQotLlRFCi0uYWQKLQotLmluIC44aQotVGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYWRkZWQgdGhlc2UuICBUaGV5IGFyZSBzb21lIHBvc3QtNC4xCi12ZXJzaW9ucyBvZiBTeXN0ZW0gViBjdXJzZXMsIGUuZy4sIFNvbGFyaXMgMi41IGFuZCBJUklYIDYueC4KLVRoZSBcZkJuY3Vyc2VzXGZSIHRlcm1jYXAgbmFtZXMgZm9yIHRoZW0gYXJlIGludmVudGVkOyBhY2NvcmRpbmcgdG8gdGhlCi1YU0kgQ3Vyc2VzIHN0YW5kYXJkLCB0aGV5IGhhdmUgbm8gdGVybWNhcCBuYW1lcy4gIElmIHlvdXIgY29tcGlsZWQgdGVybWluZm8KLWVudHJpZXMgdXNlIHRoZXNlLCB0aGV5IG1heSBub3QgYmUgYmluYXJ5LWNvbXBhdGlibGUgd2l0aCBTeXN0ZW0gViB0ZXJtaW5mbwotZW50cmllcyBhZnRlciBTVnI0LjE7IGJld2FyZSEKLQotLm5hCi0uVFMgSAotY2VudGVyIGV4cGFuZDsKLWMgbCBsIGMKLWMgbCBsIGMKLWx3MjUgbHc2IGx3MiBsdzIwLgotXGZCVmFyaWFibGUJQ2FwLQlUQ2FwCURlc2NyaXB0aW9uXGZSCi1cZkJTdHJpbmcJbmFtZQlDb2RlXGZSCi1lbnRlcl9ob3Jpem9udGFsX2hsX21vZGUJZWhobG0JWGgJVHsKLUVudGVyIGhvcml6b250YWwgaGlnaGxpZ2h0IG1vZGUKLVR9Ci1lbnRlcl9sZWZ0X2hsX21vZGUJZWxobG0JWGwJVHsKLUVudGVyIGxlZnQgaGlnaGxpZ2h0IG1vZGUKLVR9Ci1lbnRlcl9sb3dfaGxfbW9kZQllbG9obG0JWG8JVHsKLUVudGVyIGxvdyBoaWdobGlnaHQgbW9kZQotVH0KLWVudGVyX3JpZ2h0X2hsX21vZGUJZXJobG0JWHIJVHsKLUVudGVyIHJpZ2h0IGhpZ2hsaWdodCBtb2RlCi1UfQotZW50ZXJfdG9wX2hsX21vZGUJZXRobG0JWHQJVHsKLUVudGVyIHRvcCBoaWdobGlnaHQgbW9kZQotVH0KLWVudGVyX3ZlcnRpY2FsX2hsX21vZGUJZXZobG0JWHYJVHsKLUVudGVyIHZlcnRpY2FsIGhpZ2hsaWdodCBtb2RlCi1UfQotc2V0X2FfYXR0cmlidXRlcwlzZ3IxCXNBCVR7Ci1EZWZpbmUgc2Vjb25kIHNldCBvZiB2aWRlbyBhdHRyaWJ1dGVzICMxLSM2Ci1UfQotc2V0X3BnbGVuX2luY2gJc2xlbmd0aAlzTAlUewotWUkgU2V0IHBhZ2UgbGVuZ3RoIHRvICMxIGh1bmRyZWR0aCBvZiBhbiBpbmNoCi1UfQotLlRFCi0uYWQKLS5cIiAkSWQ6IHRlcm1pbmZvLnRhaWwsdiAxLjQ5IDIwMDgvMDIvMTYgMjA6NTc6NDMgdG9tIEV4cCAkCi0uXCIgQmVnaW5uaW5nIG9mIHRlcm1pbmZvLnRhaWwgZmlsZQotLlwiIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIG5jdXJzZXMuCi0uXCIgU2VlICJ0ZXJtaW5mby5oZWFkIiBmb3IgY29weXJpZ2h0LgotLnBzICsxCi0uCi0uU1MgQSBTYW1wbGUgRW50cnkKLS4KLVRoZSBmb2xsb3dpbmcgZW50cnksIGRlc2NyaWJpbmcgYW4gQU5TSS1zdGFuZGFyZCB0ZXJtaW5hbCwgaXMgcmVwcmVzZW50YXRpdmUKLW9mIHdoYXQgYSBcZkJ0ZXJtaW5mb1xmUiBlbnRyeSBmb3IgYSBtb2Rlcm4gdGVybWluYWwgdHlwaWNhbGx5IGxvb2tzIGxpa2UuCi0uUFAKLS5uZgotLmluIC0yCi0udGEgLjNpCi0uZnQgQ1cKLVxzLTJhbnNpfGFuc2kvcGMtdGVybSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0gICAgICAgIG1jNWksCi0gICAgICAgIGNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0gICAgICAgIGN1Yj1cXEVbJXAxJWRELCBjdWQ9XFxFWyVwMSVkQiwgY3VmPVxcRVslcDElZEMsCi0gICAgICAgIGN1dT1cXEVbJXAxJWRBLCBkY2g9XFxFWyVwMSVkUCwgZGw9XFxFWyVwMSVkTSwKLSAgICAgICAgZWNoPVxcRVslcDElZFgsIGVsMT1cXEVbMUssIGhwYT1cXEVbJXAxJWRHLCBodD1cXEVbSSwKLSAgICAgICAgaWNoPVxcRVslcDElZEAsIGlsPVxcRVslcDElZEwsIGluZG49XFxFWyVwMSVkUywgLmluZG49XFxFWyVwMSVkVCwKLSAgICAgICAga2JzPV5ILCBrY2J0PVxcRVtaLCBrY3ViMT1cXEVbRCwga2N1ZDE9XFxFW0IsCi0gICAgICAgIGtjdWYxPVxcRVtDLCBrY3V1MT1cXEVbQSwga2YxPVxcRVtNLCBrZjEwPVxcRVtWLAotICAgICAgICBrZjExPVxcRVtXLCBrZjEyPVxcRVtYLCBrZjI9XFxFW04sIGtmMz1cXEVbTywga2Y0PVxcRVtQLAotICAgICAgICBrZjU9XFxFW1EsIGtmNj1cXEVbUiwga2Y3PVxcRVtTLCBrZjg9XFxFW1QsIGtmOT1cXEVbVSwKLSAgICAgICAga2ljaDE9XFxFW0wsIG1jND1cXEVbNGksIG1jNT1cXEVbNWksIG5lbD1cXHJcXEVbUywKLSAgICAgICAgb3A9XFxFWzM3OzQwbSwgcmVwPSVwMSVjXFxFWyVwMiV7MX0lLSVkYiwKLSAgICAgICAgcmluPVxcRVslcDElZFQsIHMwZHM9XFxFKEIsIHMxZHM9XFxFKUIsIHMyZHM9XFxFKkIsCi0gICAgICAgIHMzZHM9XFxFK0IsIHNldGFiPVxcRVs0JXAxJWRtLCBzZXRhZj1cXEVbMyVwMSVkbSwKLSAgICAgICAgc2V0Yj1cXEVbNCU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLSAgICAgICAgc2V0Zj1cXEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLSAgICAgICAgc2dyPVxcRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDgldDsxMSU7JT8lcDkldDsxMiU7bSwKLSAgICAgICAgc2dyMD1cXEVbMDsxMG0sIHRiYz1cXEVbMmcsIHU2PVxcRVslZDslZFIsIHU3PVxcRVs2biwKLSAgICAgICAgdTg9XFxFWz8lWzswMTIzNDU2Nzg5XWMsIHU5PVxcRVtjLCB2cGE9XFxFWyVwMSVkZCxccysyCi0uaW4gKzIKLS5maQotLmZ0IFIKLS5QUAotRW50cmllcyBtYXkgY29udGludWUgb250byBtdWx0aXBsZSBsaW5lcyBieSBwbGFjaW5nIHdoaXRlIHNwYWNlIGF0Ci10aGUgYmVnaW5uaW5nIG9mIGVhY2ggbGluZSBleGNlcHQgdGhlIGZpcnN0LgotQ29tbWVudHMgbWF5IGJlIGluY2x1ZGVkIG9uIGxpbmVzIGJlZ2lubmluZyB3aXRoIGBgIycnLgotQ2FwYWJpbGl0aWVzIGluCi0uSSB0ZXJtaW5mbwotYXJlIG9mIHRocmVlIHR5cGVzOgotQm9vbGVhbiBjYXBhYmlsaXRpZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCB0aGUgdGVybWluYWwgaGFzCi1zb21lIHBhcnRpY3VsYXIgZmVhdHVyZSwgbnVtZXJpYyBjYXBhYmlsaXRpZXMgZ2l2aW5nIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbAotb3IgdGhlIHNpemUgb2YgcGFydGljdWxhciBkZWxheXMsIGFuZCBzdHJpbmcKLWNhcGFiaWxpdGllcywgd2hpY2ggZ2l2ZSBhIHNlcXVlbmNlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gcGFydGljdWxhcgotdGVybWluYWwgb3BlcmF0aW9ucy4KLS5QUAotLlNTIFR5cGVzIG9mIENhcGFiaWxpdGllcwotLlBQCi1BbGwgY2FwYWJpbGl0aWVzIGhhdmUgbmFtZXMuCi1Gb3IgaW5zdGFuY2UsIHRoZSBmYWN0IHRoYXQKLUFOU0ktc3RhbmRhcmQgdGVybWluYWxzIGhhdmUKLS5JICJhdXRvbWF0aWMgbWFyZ2lucyIKLShpLmUuLCBhbiBhdXRvbWF0aWMgcmV0dXJuIGFuZCBsaW5lLWZlZWQKLXdoZW4gdGhlIGVuZCBvZiBhIGxpbmUgaXMgcmVhY2hlZCkgaXMgaW5kaWNhdGVkIGJ5IHRoZSBjYXBhYmlsaXR5IFxmQmFtXGZSLgotSGVuY2UgdGhlIGRlc2NyaXB0aW9uIG9mIGFuc2kgaW5jbHVkZXMgXGZCYW1cZlIuCi1OdW1lcmljIGNhcGFiaWxpdGllcyBhcmUgZm9sbG93ZWQgYnkgdGhlIGNoYXJhY3RlciBgIycgYW5kIHRoZW4gYSBwb3NpdGl2ZSB2YWx1ZS4KLVRodXMgXGZCY29sc1xmUiwgd2hpY2ggaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgdGVybWluYWwgaGFzLAotZ2l2ZXMgdGhlIHZhbHVlIGA4MCcgZm9yIGFuc2kuCi1WYWx1ZXMgZm9yIG51bWVyaWMgY2FwYWJpbGl0aWVzIG1heSBiZSBzcGVjaWZpZWQgaW4gZGVjaW1hbCwgb2N0YWwgb3IgaGV4YWRlY2ltYWwsCi11c2luZyB0aGUgQyBwcm9ncmFtbWluZyBsYW5ndWFnZSBjb252ZW50aW9ucyAoZS5nLiwgMjU1LCAwMzc3IGFuZCAweGZmIG9yIDB4RkYpLgotLlBQCi1GaW5hbGx5LCBzdHJpbmcgdmFsdWVkIGNhcGFiaWxpdGllcywgc3VjaCBhcyBcZkJlbFxmUiAoY2xlYXIgdG8gZW5kIG9mIGxpbmUKLXNlcXVlbmNlKSBhcmUgZ2l2ZW4gYnkgdGhlIHR3by1jaGFyYWN0ZXIgY29kZSwgYW4gYD0nLCBhbmQgdGhlbiBhIHN0cmluZwotZW5kaW5nIGF0IHRoZSBuZXh0IGZvbGxvd2luZyBgLCcuCi0uUFAKLUEgbnVtYmVyIG9mIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIHByb3ZpZGVkIGluIHRoZSBzdHJpbmcgdmFsdWVkIGNhcGFiaWxpdGllcwotZm9yIGVhc3kgZW5jb2Rpbmcgb2YgY2hhcmFjdGVycyB0aGVyZS4KLUJvdGggXGZCXGVFXGZSIGFuZCBcZkJcZWVcZlIKLW1hcCB0byBhbiBccy0xRVNDQVBFXHMwIGNoYXJhY3RlciwKLVxmQl54XGZSIG1hcHMgdG8gYSBjb250cm9sLXggZm9yIGFueSBhcHByb3ByaWF0ZSB4LCBhbmQgdGhlIHNlcXVlbmNlcwotXGZCXGVuIFxlbCBcZXIgXGV0IFxlYiBcZWYgXGVzXGZSIGdpdmUKLWEgbmV3bGluZSwgbGluZS1mZWVkLCByZXR1cm4sIHRhYiwgYmFja3NwYWNlLCBmb3JtLWZlZWQsIGFuZCBzcGFjZS4KLU90aGVyIGVzY2FwZXMgaW5jbHVkZSBcZkJcZV5cZlIgZm9yIFxmQl5cZlIsCi1cZkJcZVxlXGZSIGZvciBcZkJcZVxmUiwKLVxmQlxlXGZSLCBmb3IgY29tbWEsCi1cZkJcZTpcZlIgZm9yIFxmQjpcZlIsCi1hbmQgXGZCXGUwXGZSIGZvciBudWxsLgotKFxmQlxlMFxmUiB3aWxsIHByb2R1Y2UgXGUyMDAsIHdoaWNoIGRvZXMgbm90IHRlcm1pbmF0ZSBhIHN0cmluZyBidXQgYmVoYXZlcwotYXMgYSBudWxsIGNoYXJhY3RlciBvbiBtb3N0IHRlcm1pbmFscywgcHJvdmlkaW5nIENTNyBpcyBzcGVjaWZpZWQuCi1TZWUgc3R0eSgxKS4pCi1GaW5hbGx5LCBjaGFyYWN0ZXJzIG1heSBiZSBnaXZlbiBhcyB0aHJlZSBvY3RhbCBkaWdpdHMgYWZ0ZXIgYSBcZkJcZVxmUi4KLS5QUAotQSBkZWxheSBpbiBtaWxsaXNlY29uZHMgbWF5IGFwcGVhciBhbnl3aGVyZSBpbiBhIHN0cmluZyBjYXBhYmlsaXR5LCBlbmNsb3NlZCBpbgotJDwuLj4gYnJhY2tldHMsIGFzIGluIFxmQmVsXGZQPVxlRUskPDU+LCBhbmQgcGFkZGluZyBjaGFyYWN0ZXJzIGFyZSBzdXBwbGllZCBieQotLkkgdHB1dHMKLXRvIHByb3ZpZGUgdGhpcyBkZWxheS4KLVRoZSBkZWxheSBtdXN0IGJlIGEgbnVtYmVyIHdpdGggYXQgbW9zdCBvbmUgZGVjaW1hbAotcGxhY2Ugb2YgcHJlY2lzaW9uOyBpdCBtYXkgYmUgZm9sbG93ZWQgYnkgc3VmZml4ZXMgYConIG9yICcvJyBvciBib3RoLgotQSBgKicKLWluZGljYXRlcyB0aGF0IHRoZSBwYWRkaW5nIHJlcXVpcmVkIGlzIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIGxpbmVzCi1hZmZlY3RlZCBieSB0aGUgb3BlcmF0aW9uLCBhbmQgdGhlIGFtb3VudCBnaXZlbiBpcyB0aGUgcGVyLWFmZmVjdGVkLXVuaXQKLXBhZGRpbmcgcmVxdWlyZWQuCi0oSW4gdGhlIGNhc2Ugb2YgaW5zZXJ0IGNoYXJhY3RlciwgdGhlIGZhY3RvciBpcyBzdGlsbCB0aGUKLW51bWJlciBvZgotLklSIGxpbmVzCi1hZmZlY3RlZC4pICBOb3JtYWxseSwgcGFkZGluZyBpcyBhZHZpc29yeSBpZiB0aGUgZGV2aWNlIGhhcyB0aGUgXGZCeG9uXGZSCi1jYXBhYmlsaXR5OyBpdCBpcyB1c2VkIGZvciBjb3N0IGNvbXB1dGF0aW9uIGJ1dCBkb2VzIG5vdCB0cmlnZ2VyIGRlbGF5cy4KLUEgYC8nCi1zdWZmaXggaW5kaWNhdGVzIHRoYXQgdGhlIHBhZGRpbmcgaXMgbWFuZGF0b3J5IGFuZCBmb3JjZXMgYSBkZWxheSBvZiB0aGUgZ2l2ZW4KLW51bWJlciBvZiBtaWxsaXNlY29uZHMgZXZlbiBvbiBkZXZpY2VzIGZvciB3aGljaCBcZkJ4b25cZlIgaXMgcHJlc2VudCB0bwotaW5kaWNhdGUgZmxvdyBjb250cm9sLgotLlBQCi1Tb21ldGltZXMgaW5kaXZpZHVhbCBjYXBhYmlsaXRpZXMgbXVzdCBiZSBjb21tZW50ZWQgb3V0LgotVG8gZG8gdGhpcywgcHV0IGEgcGVyaW9kIGJlZm9yZSB0aGUgY2FwYWJpbGl0eSBuYW1lLgotRm9yIGV4YW1wbGUsIHNlZSB0aGUgc2Vjb25kCi0uQiBpbmQKLWluIHRoZSBleGFtcGxlIGFib3ZlLgotLmJyCi0ubmUgNQotLlBQCi0uU1MgRmV0Y2hpbmcgQ29tcGlsZWQgRGVzY3JpcHRpb25zCi0uUFAKLUlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBURVJNSU5GTyBpcyBzZXQsIGl0IGlzIGludGVycHJldGVkIGFzIHRoZSBwYXRobmFtZQotb2YgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgY29tcGlsZWQgZGVzY3JpcHRpb24geW91IGFyZSB3b3JraW5nIG9uLgotT25seQotdGhhdCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCi0uUFAKLUlmIFRFUk1JTkZPIGlzIG5vdCBzZXQsIHRoZSBcZkJuY3Vyc2VzXGZSIHZlcnNpb24gb2YgdGhlIHRlcm1pbmZvIHJlYWRlciBjb2RlCi13aWxsIGluc3RlYWQgbG9vayBpbiB0aGUgZGlyZWN0b3J5IFxmQiRIT01FLy50ZXJtaW5mb1xmUgotZm9yIGEgY29tcGlsZWQgZGVzY3JpcHRpb24uCi1JZiBpdCBmYWlscyB0byBmaW5kIG9uZSB0aGVyZSwgYW5kIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBURVJNSU5GT19ESVJTIGlzCi1zZXQsIGl0IHdpbGwgaW50ZXJwcmV0IHRoZSBjb250ZW50cyBvZiB0aGF0IHZhcmlhYmxlIGFzIGEgbGlzdCBvZiBjb2xvbi0KLXNlcGFyYXRlZCBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCAoYW4gZW1wdHkgZW50cnkgaXMgaW50ZXJwcmV0ZWQgYXMgYQotY29tbWFuZCB0byBzZWFyY2ggXGZJXCpkXGZSKS4KLUlmIG5vIGRlc2NyaXB0aW9uIGlzIGZvdW5kIGluIGFueSBvZiB0aGUKLVRFUk1JTkZPX0RJUlMgZGlyZWN0b3JpZXMsIHRoZSBmZXRjaCBmYWlscy4KLS5QUAotSWYgbmVpdGhlciBURVJNSU5GTyBub3IgVEVSTUlORk9fRElSUyBpcyBzZXQsIHRoZSBsYXN0IHBsYWNlIHRyaWVkIHdpbGwgYmUgdGhlCi1zeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5LCBcZklcKmRcZlIuCi0uUFAKLShOZWl0aGVyIHRoZSBcZkIkSE9NRS8udGVybWluZm9cZlIgbG9va3VwcyBub3IgVEVSTUlORk9fRElSUyBleHRlbnNpb25zIGFyZQotc3VwcG9ydGVkIHVuZGVyIHN0b2NrIFN5c3RlbSBWIHRlcm1pbmZvL2N1cnNlcy4pCi0uUFAKLS5TUyBQcmVwYXJpbmcgRGVzY3JpcHRpb25zCi0uUFAKLVdlIG5vdyBvdXRsaW5lIGhvdyB0byBwcmVwYXJlIGRlc2NyaXB0aW9ucyBvZiB0ZXJtaW5hbHMuCi1UaGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHByZXBhcmUgYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBpcyBieSBpbWl0YXRpbmcKLXRoZSBkZXNjcmlwdGlvbiBvZiBhIHNpbWlsYXIgdGVybWluYWwgaW4KLS5JIHRlcm1pbmZvCi1hbmQgdG8gYnVpbGQgdXAgYSBkZXNjcmlwdGlvbiBncmFkdWFsbHksIHVzaW5nIHBhcnRpYWwgZGVzY3JpcHRpb25zCi13aXRoCi0uSSB2aQotb3Igc29tZSBvdGhlciBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbSB0byBjaGVjayB0aGF0IHRoZXkgYXJlIGNvcnJlY3QuCi1CZSBhd2FyZSB0aGF0IGEgdmVyeSB1bnVzdWFsIHRlcm1pbmFsIG1heSBleHBvc2UgZGVmaWNpZW5jaWVzIGluCi10aGUgYWJpbGl0eSBvZiB0aGUKLS5JIHRlcm1pbmZvCi1maWxlIHRvIGRlc2NyaWJlIGl0Ci1vciBidWdzIGluIHRoZSBzY3JlZW4taGFuZGxpbmcgY29kZSBvZiB0aGUgdGVzdCBwcm9ncmFtLgotLlBQCi1UbyBnZXQgdGhlIHBhZGRpbmcgZm9yIGluc2VydCBsaW5lIHJpZ2h0IChpZiB0aGUgdGVybWluYWwgbWFudWZhY3R1cmVyCi1kaWQgbm90IGRvY3VtZW50IGl0KSBhIHNldmVyZSB0ZXN0IGlzIHRvIGVkaXQgYSBsYXJnZSBmaWxlIGF0IDk2MDAgYmF1ZCwKLWRlbGV0ZSAxNiBvciBzbyBsaW5lcyBmcm9tIHRoZSBtaWRkbGUgb2YgdGhlIHNjcmVlbiwgdGhlbiBoaXQgdGhlIGB1Jwota2V5IHNldmVyYWwgdGltZXMgcXVpY2tseS4KLUlmIHRoZSB0ZXJtaW5hbCBtZXNzZXMgdXAsIG1vcmUgcGFkZGluZyBpcyB1c3VhbGx5IG5lZWRlZC4KLUEgc2ltaWxhciB0ZXN0IGNhbiBiZSB1c2VkIGZvciBpbnNlcnQgY2hhcmFjdGVyLgotLlBQCi0uU1MgQmFzaWMgQ2FwYWJpbGl0aWVzCi0uUFAKLVRoZSBudW1iZXIgb2YgY29sdW1ucyBvbiBlYWNoIGxpbmUgZm9yIHRoZSB0ZXJtaW5hbCBpcyBnaXZlbiBieSB0aGUKLVxmQmNvbHNcZlIgbnVtZXJpYyBjYXBhYmlsaXR5LgotSWYgdGhlIHRlcm1pbmFsIGlzIGEgXHMtMUNSVFxzMCwgdGhlbiB0aGUKLW51bWJlciBvZiBsaW5lcyBvbiB0aGUgc2NyZWVuIGlzIGdpdmVuIGJ5IHRoZSBcZkJsaW5lc1xmUiBjYXBhYmlsaXR5LgotSWYgdGhlIHRlcm1pbmFsIHdyYXBzIGFyb3VuZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUgd2hlbgotaXQgcmVhY2hlcyB0aGUgcmlnaHQgbWFyZ2luLCB0aGVuIGl0IHNob3VsZCBoYXZlIHRoZSBcZkJhbVxmUiBjYXBhYmlsaXR5LgotSWYgdGhlIHRlcm1pbmFsIGNhbiBjbGVhciBpdHMgc2NyZWVuLCBsZWF2aW5nIHRoZSBjdXJzb3IgaW4gdGhlIGhvbWUKLXBvc2l0aW9uLCB0aGVuIHRoaXMgaXMgZ2l2ZW4gYnkgdGhlIFxmQmNsZWFyXGZSIHN0cmluZyBjYXBhYmlsaXR5LgotSWYgdGhlIHRlcm1pbmFsIG92ZXJzdHJpa2VzCi0ocmF0aGVyIHRoYW4gY2xlYXJpbmcgYSBwb3NpdGlvbiB3aGVuIGEgY2hhcmFjdGVyIGlzIHN0cnVjayBvdmVyKQotdGhlbiBpdCBzaG91bGQgaGF2ZSB0aGUgXGZCb3NcZlIgY2FwYWJpbGl0eS4KLUlmIHRoZSB0ZXJtaW5hbCBpcyBhIHByaW50aW5nIHRlcm1pbmFsLCB3aXRoIG5vIHNvZnQgY29weSB1bml0LAotZ2l2ZSBpdCBib3RoCi0uQiBoYwotYW5kCi0uQlIgb3MgLgotLlJCICggb3MKLWFwcGxpZXMgdG8gc3RvcmFnZSBzY29wZSB0ZXJtaW5hbHMsIHN1Y2ggYXMgXHMtMVRFS1RST05JWFxzKzEgNDAxMAotc2VyaWVzLCBhcyB3ZWxsIGFzIGhhcmQgY29weSBhbmQgQVBMIHRlcm1pbmFscy4pCi1JZiB0aGVyZSBpcyBhIGNvZGUgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGN1cnJlbnQKLXJvdywgZ2l2ZSB0aGlzIGFzCi0uQlIgY3IgLgotKE5vcm1hbGx5IHRoaXMgd2lsbCBiZSBjYXJyaWFnZSByZXR1cm4sIGNvbnRyb2wgTS4pCi1JZiB0aGVyZSBpcyBhIGNvZGUgdG8gcHJvZHVjZSBhbiBhdWRpYmxlIHNpZ25hbCAoYmVsbCwgYmVlcCwgZXRjKQotZ2l2ZSB0aGlzIGFzCi0uQlIgYmVsIC4KLS5QUAotSWYgdGhlcmUgaXMgYSBjb2RlIHRvIG1vdmUgdGhlIGN1cnNvciBvbmUgcG9zaXRpb24gdG8gdGhlIGxlZnQKLShzdWNoIGFzIGJhY2tzcGFjZSkgdGhhdCBjYXBhYmlsaXR5IHNob3VsZCBiZSBnaXZlbiBhcwotLkJSIGN1YjEgLgotU2ltaWxhcmx5LCBjb2RlcyB0byBtb3ZlIHRvIHRoZSByaWdodCwgdXAsIGFuZCBkb3duIHNob3VsZCBiZQotZ2l2ZW4gYXMKLS5CUiBjdWYxICwKLS5CUiBjdXUxICwKLWFuZAotLkJSIGN1ZDEgLgotVGhlc2UgbG9jYWwgY3Vyc29yIG1vdGlvbnMgc2hvdWxkIG5vdCBhbHRlciB0aGUgdGV4dCB0aGV5IHBhc3Mgb3ZlciwKLWZvciBleGFtcGxlLCB5b3Ugd291bGQgbm90IG5vcm1hbGx5IHVzZSBgXGZCY3VmMVxmUD1cICcgYmVjYXVzZSB0aGUKLXNwYWNlIHdvdWxkIGVyYXNlIHRoZSBjaGFyYWN0ZXIgbW92ZWQgb3Zlci4KLS5QUAotQSB2ZXJ5IGltcG9ydGFudCBwb2ludCBoZXJlIGlzIHRoYXQgdGhlIGxvY2FsIGN1cnNvciBtb3Rpb25zIGVuY29kZWQKLWluCi0uSSB0ZXJtaW5mbwotYXJlIHVuZGVmaW5lZCBhdCB0aGUgbGVmdCBhbmQgdG9wIGVkZ2VzIG9mIGEgXHMtMUNSVFxzMCB0ZXJtaW5hbC4KLVByb2dyYW1zIHNob3VsZCBuZXZlciBhdHRlbXB0IHRvIGJhY2tzcGFjZSBhcm91bmQgdGhlIGxlZnQgZWRnZSwKLXVubGVzcwotLkIgYncKLWlzIGdpdmVuLAotYW5kIG5ldmVyIGF0dGVtcHQgdG8gZ28gdXAgbG9jYWxseSBvZmYgdGhlIHRvcC4KLUluIG9yZGVyIHRvIHNjcm9sbCB0ZXh0IHVwLCBhIHByb2dyYW0gd2lsbCBnbyB0byB0aGUgYm90dG9tIGxlZnQgY29ybmVyCi1vZiB0aGUgc2NyZWVuIGFuZCBzZW5kIHRoZQotLkIgaW5kCi0oaW5kZXgpIHN0cmluZy4KLS5QUAotVG8gc2Nyb2xsIHRleHQgZG93biwgYSBwcm9ncmFtIGdvZXMgdG8gdGhlIHRvcCBsZWZ0IGNvcm5lcgotb2YgdGhlIHNjcmVlbiBhbmQgc2VuZHMgdGhlCi0uQiByaQotKHJldmVyc2UgaW5kZXgpIHN0cmluZy4KLVRoZSBzdHJpbmdzCi0uQiBpbmQKLWFuZAotLkIgcmkKLWFyZSB1bmRlZmluZWQgd2hlbiBub3Qgb24gdGhlaXIgcmVzcGVjdGl2ZSBjb3JuZXJzIG9mIHRoZSBzY3JlZW4uCi0uUFAKLVBhcmFtZXRlcml6ZWQgdmVyc2lvbnMgb2YgdGhlIHNjcm9sbGluZyBzZXF1ZW5jZXMgYXJlCi0uQiBpbmRuCi1hbmQKLS5CIHJpbgotd2hpY2ggaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKLS5CIGluZAotYW5kCi0uQiByaQotZXhjZXB0IHRoYXQgdGhleSB0YWtlIG9uZSBwYXJhbWV0ZXIsIGFuZCBzY3JvbGwgdGhhdCBtYW55IGxpbmVzLgotVGhleSBhcmUgYWxzbyB1bmRlZmluZWQgZXhjZXB0IGF0IHRoZSBhcHByb3ByaWF0ZSBlZGdlIG9mIHRoZSBzY3JlZW4uCi0uUFAKLVRoZSBcZkJhbVxmUiBjYXBhYmlsaXR5IHRlbGxzIHdoZXRoZXIgdGhlIGN1cnNvciBzdGlja3MgYXQgdGhlIHJpZ2h0Ci1lZGdlIG9mIHRoZSBzY3JlZW4gd2hlbiB0ZXh0IGlzIG91dHB1dCwgYnV0IHRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkKLWFwcGx5IHRvIGEKLS5CIGN1ZjEKLWZyb20gdGhlIGxhc3QgY29sdW1uLgotVGhlIG9ubHkgbG9jYWwgbW90aW9uIHdoaWNoIGlzIGRlZmluZWQgZnJvbSB0aGUgbGVmdCBlZGdlIGlzIGlmCi0uQiBidwotaXMgZ2l2ZW4sIHRoZW4gYQotLkIgY3ViMQotZnJvbSB0aGUgbGVmdCBlZGdlIHdpbGwgbW92ZSB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgcHJldmlvdXMgcm93LgotSWYKLS5CIGJ3Ci1pcyBub3QgZ2l2ZW4sIHRoZSBlZmZlY3QgaXMgdW5kZWZpbmVkLgotVGhpcyBpcyB1c2VmdWwgZm9yIGRyYXdpbmcgYSBib3ggYXJvdW5kIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4sIGZvciBleGFtcGxlLgotSWYgdGhlIHRlcm1pbmFsIGhhcyBzd2l0Y2ggc2VsZWN0YWJsZSBhdXRvbWF0aWMgbWFyZ2lucywKLXRoZQotLkkgdGVybWluZm8KLWZpbGUgdXN1YWxseSBhc3N1bWVzIHRoYXQgdGhpcyBpcyBvbjsgaS5lLiwgXGZCYW1cZlIuCi1JZiB0aGUgdGVybWluYWwgaGFzIGEgY29tbWFuZCB3aGljaCBtb3ZlcyB0byB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBuZXh0Ci1saW5lLCB0aGF0IGNvbW1hbmQgY2FuIGJlIGdpdmVuIGFzCi0uQiBuZWwKLShuZXdsaW5lKS4KLUl0IGRvZXMgbm90IG1hdHRlciBpZiB0aGUgY29tbWFuZCBjbGVhcnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgY3VycmVudCBsaW5lLAotc28gaWYgdGhlIHRlcm1pbmFsIGhhcyBubwotLkIgY3IKLWFuZAotLkIgbGYKLWl0IG1heSBzdGlsbCBiZSBwb3NzaWJsZSB0byBjcmFmdCBhIHdvcmtpbmcKLS5CIG5lbAotb3V0IG9mIG9uZSBvciBib3RoIG9mIHRoZW0uCi0uUFAKLVRoZXNlIGNhcGFiaWxpdGllcyBzdWZmaWNlIHRvIGRlc2NyaWJlIGhhcmQtY29weSBhbmQgXCoobHFnbGFzcy10dHlcKihycSB0ZXJtaW5hbHMuCi1UaHVzIHRoZSBtb2RlbCAzMyB0ZWxldHlwZSBpcyBkZXNjcmliZWQgYXMKLS5QUAotLkRUCi0ubmYKLS5mdCBDVwotLlwiLmluIC0yCi1ccy0xMzNcfHxcfHR0eTMzXHx8XHx0dHlcfHxcfG1vZGVsIDMzIHRlbGV0eXBlLAotCWJlbD1eRywgY29scyM3MiwgY3I9Xk0sIGN1ZDE9XkosIGhjLCBpbmQ9XkosIG9zLFxzKzEKLS5cIi5pbiArMgotLmZ0IFIKLS5QUAotd2hpbGUgdGhlIExlYXIgU2llZ2xlciBccy0xQURNLTNcczAgaXMgZGVzY3JpYmVkIGFzCi0uUFAKLS5EVAotLm5mCi0uZnQgQ1cKLS5cIi5pbiAtMgotXHMtMWFkbTNcfHxcfDNcfHxcfGxzaSBhZG0zLAotCWFtLCBiZWw9XkcsIGNsZWFyPV5aLCBjb2xzIzgwLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQlpbmQ9XkosIGxpbmVzIzI0LFxzKzEKLS5cIi5pbiArMgotLmZ0IFIKLS5maQotLlBQCi0uU1MgUGFyYW1ldGVyaXplZCBTdHJpbmdzCi0uUFAKLUN1cnNvciBhZGRyZXNzaW5nIGFuZCBvdGhlciBzdHJpbmdzIHJlcXVpcmluZyBwYXJhbWV0ZXJzCi1pbiB0aGUgdGVybWluYWwgYXJlIGRlc2NyaWJlZCBieSBhCi1wYXJhbWV0ZXJpemVkIHN0cmluZyBjYXBhYmlsaXR5LCB3aXRoCi0uSVIgcHJpbnRmICgzKQotbGlrZSBlc2NhcGVzIFxmQiV4XGZSIGluIGl0LgotRm9yIGV4YW1wbGUsIHRvIGFkZHJlc3MgdGhlIGN1cnNvciwgdGhlCi0uQiBjdXAKLWNhcGFiaWxpdHkgaXMgZ2l2ZW4sIHVzaW5nIHR3byBwYXJhbWV0ZXJzOgotdGhlIHJvdyBhbmQgY29sdW1uIHRvIGFkZHJlc3MgdG8uCi0oUm93cyBhbmQgY29sdW1ucyBhcmUgbnVtYmVyZWQgZnJvbSB6ZXJvIGFuZCByZWZlciB0byB0aGUKLXBoeXNpY2FsIHNjcmVlbiB2aXNpYmxlIHRvIHRoZSB1c2VyLCBub3QgdG8gYW55IHVuc2VlbiBtZW1vcnkuKQotSWYgdGhlIHRlcm1pbmFsIGhhcyBtZW1vcnkgcmVsYXRpdmUgY3Vyc29yIGFkZHJlc3NpbmcsCi10aGF0IGNhbiBiZSBpbmRpY2F0ZWQgYnkKLS5CUiBtcmN1cCAuCi0uUFAKLVRoZSBwYXJhbWV0ZXIgbWVjaGFuaXNtIHVzZXMgYSBzdGFjayBhbmQgc3BlY2lhbCBcZkIlXGZQIGNvZGVzCi10byBtYW5pcHVsYXRlIGl0LgotVHlwaWNhbGx5IGEgc2VxdWVuY2Ugd2lsbCBwdXNoIG9uZSBvZiB0aGUKLXBhcmFtZXRlcnMgb250byB0aGUgc3RhY2sgYW5kIHRoZW4gcHJpbnQgaXQgaW4gc29tZSBmb3JtYXQuCi1QcmludCAoZS5nLiwgIiVkIikgaXMgYSBzcGVjaWFsIGNhc2UuCi1PdGhlciBvcGVyYXRpb25zLCBpbmNsdWRpbmcgIiV0IiBwb3AgdGhlaXIgb3BlcmFuZCBmcm9tIHRoZSBzdGFjay4KLUl0IGlzIG5vdGVkIHRoYXQgbW9yZSBjb21wbGV4IG9wZXJhdGlvbnMgYXJlIG9mdGVuIG5lY2Vzc2FyeSwKLWUuZy4sIGluIHRoZSBcZkJzZ3JcZlAgc3RyaW5nLgotLlBQCi1UaGUgXGZCJVxmUiBlbmNvZGluZ3MgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmdzOgotLlBQCi0uVFAgNQotXHMtMSUlCi1vdXRwdXRzIGAlJwotLlRQCi0lXGZJW1tcZlA6XGZJXWZsYWdzXVt3aWR0aFsucHJlY2lzaW9uXV1bXGZQZG94WHNcZkldXGZQCi1hcyBpbiBcZkJwcmludGZcZlAsIGZsYWdzIGFyZSBbLSsjXSBhbmQgc3BhY2UuCi1Vc2UgYSBgOicgdG8gYWxsb3cgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGEgYC0nIGZsYWcsCi1hdm9pZGluZyBpbnRlcnByZXRpbmcgIiUtIiBhcyBhbiBvcGVyYXRvci4KLS5UUAotJWMKLXByaW50IHBvcCgpIGxpa2UgJWMgaW4gXGZCcHJpbnRmXGZQCi0uVFAKLSVzCi1wcmludCBwb3AoKSBsaWtlICVzIGluIFxmQnByaW50ZlxmUAotLlRQCi0lcFsxLTldCi1wdXNoIFxmSWlcZlAndGggcGFyYW1ldGVyCi0uVFAKLSVQW2Etel0KLXNldCBkeW5hbWljIHZhcmlhYmxlIFthLXpdIHRvIHBvcCgpCi0uVFAKLSVnW2Etel0KLWdldCBkeW5hbWljIHZhcmlhYmxlIFthLXpdIGFuZCBwdXNoIGl0Ci0uVFAKLSVQW0EtWl0KLXNldCBzdGF0aWMgdmFyaWFibGUgW2Etel0gdG8gcG9wKCkKLS5UUAotJWdbQS1aXQotZ2V0IHN0YXRpYyB2YXJpYWJsZSBbYS16XSBhbmQgcHVzaCBpdAotLklQCi1UaGUgdGVybXMgInN0YXRpYyIgYW5kICJkeW5hbWljIiBhcmUgbWlzbGVhZGluZy4KLUhpc3RvcmljYWxseSwgdGhlc2UgYXJlIHNpbXBseSB0d28gZGlmZmVyZW50IHNldHMgb2YgdmFyaWFibGVzLAotd2hvc2UgdmFsdWVzIGFyZSBub3QgcmVzZXQgYmV0d2VlbiBjYWxscyB0byBcZkJ0cGFybVxmUC4KLUhvd2V2ZXIsIHRoYXQgZmFjdCBpcyBub3QgZG9jdW1lbnRlZCBpbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCi1SZWx5aW5nIG9uIGl0IHdpbGwgYWR2ZXJzZWx5IGltcGFjdCBwb3J0YWJpbGl0eSB0byBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCi0uVFAKLSUnXGZJY1xmUCcKLWNoYXIgY29uc3RhbnQgXGZJY1xmUAotLlRQCi0le1xmSW5uXGZQfQotaW50ZWdlciBjb25zdGFudCBcZklublxmUAotLlRQCi0lbAotcHVzaCBzdHJsZW4ocG9wKQotLlRQCi0lKyAlLSAlKiAlLyAlbQotYXJpdGhtZXRpYyAoJW0gaXMgbW9kKTogcHVzaChwb3AoKSBvcCBwb3AoKSkKLS5UUAotJSYgJXwgJV4KLWJpdCBvcGVyYXRpb25zIChBTkQsIE9SIGFuZCBleGNsdXNpdmUtT1IpOiBwdXNoKHBvcCgpIG9wIHBvcCgpKQotLlRQCi0lPSAlPiAlPAotbG9naWNhbCBvcGVyYXRpb25zOiBwdXNoKHBvcCgpIG9wIHBvcCgpKQotLlRQCi0lQSwgJU8KLWxvZ2ljYWwgQU5EIGFuZCBPUiBvcGVyYXRpb25zIChmb3IgY29uZGl0aW9uYWxzKQotLlRQCi0lISAlfgotdW5hcnkgb3BlcmF0aW9ucyAobG9naWNhbCBhbmQgYml0IGNvbXBsZW1lbnQpOiBwdXNoKG9wIHBvcCgpKQotLlRQCi0laQotYWRkIDEgdG8gZmlyc3QgdHdvIHBhcmFtZXRlcnMgKGZvciBBTlNJIHRlcm1pbmFscykKLS5UUAotJT8gXGZJZXhwclxmUCAldCBcZkl0aGVucGFydFxmUCAlZSBcZkllbHNlcGFydFxmUCAlOwotVGhpcyBmb3JtcyBhbiBpZi10aGVuLWVsc2UuCi1UaGUgJWUgXGZJZWxzZXBhcnRcZlAgaXMgb3B0aW9uYWwuCi1Vc3VhbGx5IHRoZSAlPyBcZklleHByXGZQIHBhcnQgcHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2ssCi1hbmQgJXQgcG9wcyBpdCBmcm9tIHRoZSBzdGFjaywgdGVzdGluZyBpZiBpdCBpcyBub256ZXJvICh0cnVlKS4KLUlmIGl0IGlzIHplcm8gKGZhbHNlKSwgY29udHJvbCBwYXNzZXMgdG8gdGhlICVlIChlbHNlKSBwYXJ0LgotLklQCi1JdCBpcyBwb3NzaWJsZSB0byBmb3JtIGVsc2UtaWYncyBhIGxhIEFsZ29sIDY4OgotLlJTCi0lPyBjXGQxXHUgJXQgYlxkMVx1ICVlIGNcZDJcdSAldCBiXGQyXHUgJWUgY1xkM1x1ICV0IGJcZDNcdSAlZSBjXGQ0XHUgJXQgYlxkNFx1ICVlICU7Ci0uUkUKLS5JUAotd2hlcmUgY1xkaVx1IGFyZSBjb25kaXRpb25zLCBiXGRpXHUgYXJlIGJvZGllcy4KLS5JUAotVXNlIHRoZSBcZkItZlxmUCBvcHRpb24gb2YgXGZCdGljXGZQIG9yIFxmQkBJTkZPQ01QQFxmUCB0byBzZWUKLXRoZSBzdHJ1Y3R1cmUgb2YgaWYtdGhlLWVsc2Uncy4KLVNvbWUgc3RyaW5ncywgZS5nLiwgXGZCc2dyXGZQIGNhbiBiZSB2ZXJ5IGNvbXBsaWNhdGVkIHdoZW4gd3JpdHRlbgotb24gb25lIGxpbmUuCi1UaGUgXGZCLWZcZlAgb3B0aW9uIHNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMgd2l0aCB0aGUgcGFydHMgaW5kZW50ZWQuCi0uUFAKLUJpbmFyeSBvcGVyYXRpb25zIGFyZSBpbiBwb3N0Zml4IGZvcm0gd2l0aCB0aGUgb3BlcmFuZHMgaW4gdGhlIHVzdWFsIG9yZGVyLgotVGhhdCBpcywgdG8gZ2V0IHgtNSBvbmUgd291bGQgdXNlICIlZ3glezV9JS0iLgotJVAgYW5kICVnIHZhcmlhYmxlcyBhcmUKLXBlcnNpc3RlbnQgYWNyb3NzIGVzY2FwZS1zdHJpbmcgZXZhbHVhdGlvbnMuCi0uUFAKLUNvbnNpZGVyIHRoZSBIUDI2NDUsIHdoaWNoLCB0byBnZXQgdG8gcm93IDMgYW5kIGNvbHVtbiAxMiwgbmVlZHMKLXRvIGJlIHNlbnQgXGVFJmExMmMwM1kgcGFkZGVkIGZvciA2IG1pbGxpc2Vjb25kcy4KLU5vdGUgdGhhdCB0aGUgb3JkZXIKLW9mIHRoZSByb3dzIGFuZCBjb2x1bW5zIGlzIGludmVydGVkIGhlcmUsIGFuZCB0aGF0IHRoZSByb3cgYW5kIGNvbHVtbgotYXJlIHByaW50ZWQgYXMgdHdvIGRpZ2l0cy4KLVRodXMgaXRzIFxmQmN1cFxmUiBjYXBhYmlsaXR5IGlzIFwqKGxxY3VwPTZcZUUmJXAyJTJkYyVwMSUyZFlcKihycS4KLS5QUAotVGhlIE1pY3JvdGVybSBccy0xQUNULUlWXHMwIG5lZWRzIHRoZSBjdXJyZW50IHJvdyBhbmQgY29sdW1uIHNlbnQKLXByZWNlZGVkIGJ5IGEgXGZCXlRcZlIsIHdpdGggdGhlIHJvdyBhbmQgY29sdW1uIHNpbXBseSBlbmNvZGVkIGluIGJpbmFyeSwKLVwqKGxxY3VwPV5UJXAxJWMlcDIlY1wqKHJxLgotVGVybWluYWxzIHdoaWNoIHVzZSBcKihscSVjXCoocnEgbmVlZCB0byBiZSBhYmxlIHRvCi1iYWNrc3BhY2UgdGhlIGN1cnNvciAoXGZCY3ViMVxmUiksCi1hbmQgdG8gbW92ZSB0aGUgY3Vyc29yIHVwIG9uZSBsaW5lIG9uIHRoZSBzY3JlZW4gKFxmQmN1dTFcZlIpLgotVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBpcyBub3QgYWx3YXlzIHNhZmUgdG8gdHJhbnNtaXQgXGZCXGVuXGZSCi1cZkJeRFxmUiBhbmQgXGZCXGVyXGZSLCBhcyB0aGUgc3lzdGVtIG1heSBjaGFuZ2Ugb3IgZGlzY2FyZCB0aGVtLgotKFRoZSBsaWJyYXJ5IHJvdXRpbmVzIGRlYWxpbmcgd2l0aCB0ZXJtaW5mbyBzZXQgdHR5IG1vZGVzIHNvIHRoYXQKLXRhYnMgYXJlIG5ldmVyIGV4cGFuZGVkLCBzbyBcZXQgaXMgc2FmZSB0byBzZW5kLgotVGhpcyB0dXJucyBvdXQgdG8gYmUgZXNzZW50aWFsIGZvciB0aGUgQW5uIEFyYm9yIDQwODAuKQotLlBQCi1BIGZpbmFsIGV4YW1wbGUgaXMgdGhlIFxzLTFMU0kgQURNXHMwLTNhLCB3aGljaCB1c2VzIHJvdyBhbmQgY29sdW1uCi1vZmZzZXQgYnkgYSBibGFuayBjaGFyYWN0ZXIsIHRodXMgXCoobHFjdXA9XGVFPSVwMSUnICclKyVjJXAyJScgJyUrJWNcKihycS4KLUFmdGVyIHNlbmRpbmcgYFxlRT0nLCB0aGlzIHB1c2hlcyB0aGUgZmlyc3QgcGFyYW1ldGVyLCBwdXNoZXMgdGhlCi1BU0NJSSB2YWx1ZSBmb3IgYSBzcGFjZSAoMzIpLCBhZGRzIHRoZW0gKHB1c2hpbmcgdGhlIHN1bSBvbiB0aGUgc3RhY2sKLWluIHBsYWNlIG9mIHRoZSB0d28gcHJldmlvdXMgdmFsdWVzKSBhbmQgb3V0cHV0cyB0aGF0IHZhbHVlIGFzIGEgY2hhcmFjdGVyLgotVGhlbiB0aGUgc2FtZSBpcyBkb25lIGZvciB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLU1vcmUgY29tcGxleCBhcml0aG1ldGljIGlzIHBvc3NpYmxlIHVzaW5nIHRoZSBzdGFjay4KLS5QUAotLlNTIEN1cnNvciBNb3Rpb25zCi0uUFAKLUlmIHRoZSB0ZXJtaW5hbCBoYXMgYSBmYXN0IHdheSB0byBob21lIHRoZSBjdXJzb3IKLSh0byB2ZXJ5IHVwcGVyIGxlZnQgY29ybmVyIG9mIHNjcmVlbikgdGhlbiB0aGlzIGNhbiBiZSBnaXZlbiBhcwotXGZCaG9tZVxmUjsgc2ltaWxhcmx5IGEgZmFzdCB3YXkgb2YgZ2V0dGluZyB0byB0aGUgbG93ZXIgbGVmdC1oYW5kIGNvcm5lcgotY2FuIGJlIGdpdmVuIGFzIFxmQmxsXGZSOyB0aGlzIG1heSBpbnZvbHZlIGdvaW5nIHVwIHdpdGggXGZCY3V1MVxmUgotZnJvbSB0aGUgaG9tZSBwb3NpdGlvbiwKLWJ1dCBhIHByb2dyYW0gc2hvdWxkIG5ldmVyIGRvIHRoaXMgaXRzZWxmICh1bmxlc3MgXGZCbGxcZlIgZG9lcykgYmVjYXVzZSBpdAotY2FuIG1ha2Ugbm8gYXNzdW1wdGlvbiBhYm91dCB0aGUgZWZmZWN0IG9mIG1vdmluZyB1cCBmcm9tIHRoZSBob21lIHBvc2l0aW9uLgotTm90ZSB0aGF0IHRoZSBob21lIHBvc2l0aW9uIGlzIHRoZSBzYW1lIGFzIGFkZHJlc3NpbmcgdG8gKDAsMCk6Ci10byB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JlZW4sIG5vdCBvZiBtZW1vcnkuCi0oVGh1cywgdGhlIFxlRUggc2VxdWVuY2Ugb24gSFAgdGVybWluYWxzIGNhbm5vdCBiZSB1c2VkIGZvcgotLkJSIGhvbWUgLikKLS5QUAotSWYgdGhlIHRlcm1pbmFsIGhhcyByb3cgb3IgY29sdW1uIGFic29sdXRlIGN1cnNvciBhZGRyZXNzaW5nLAotdGhlc2UgY2FuIGJlIGdpdmVuIGFzIHNpbmdsZSBwYXJhbWV0ZXIgY2FwYWJpbGl0aWVzCi0uQiBocGEKLShob3Jpem9udGFsIHBvc2l0aW9uIGFic29sdXRlKQotYW5kCi0uQiB2cGEKLSh2ZXJ0aWNhbCBwb3NpdGlvbiBhYnNvbHV0ZSkuCi1Tb21ldGltZXMgdGhlc2UgYXJlIHNob3J0ZXIgdGhhbiB0aGUgbW9yZSBnZW5lcmFsIHR3byBwYXJhbWV0ZXIKLXNlcXVlbmNlIChhcyB3aXRoIHRoZSBocDI2NDUpIGFuZCBjYW4gYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvCi0uQlIgY3VwIC4KLUlmIHRoZXJlIGFyZSBwYXJhbWV0ZXJpemVkIGxvY2FsIG1vdGlvbnMgKGUuZy4sIG1vdmUKLS5JIG4KLXNwYWNlcyB0byB0aGUgcmlnaHQpIHRoZXNlIGNhbiBiZSBnaXZlbiBhcwotLkJSIGN1ZCAsCi0uQlIgY3ViICwKLS5CUiBjdWYgLAotYW5kCi0uQlIgY3V1Ci13aXRoIGEgc2luZ2xlIHBhcmFtZXRlciBpbmRpY2F0aW5nIGhvdyBtYW55IHNwYWNlcyB0byBtb3ZlLgotVGhlc2UgYXJlIHByaW1hcmlseSB1c2VmdWwgaWYgdGhlIHRlcm1pbmFsIGRvZXMgbm90IGhhdmUKLS5CUiBjdXAgLAotc3VjaCBhcyB0aGUgXHMtMVRFS1RST05JWFxzKzEgNDAyNS4KLS5QUAotSWYgdGhlIHRlcm1pbmFsIG5lZWRzIHRvIGJlIGluIGEgc3BlY2lhbCBtb2RlIHdoZW4gcnVubmluZwotYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGVzZSBjYXBhYmlsaXRpZXMsCi10aGUgY29kZXMgdG8gZW50ZXIgYW5kIGV4aXQgdGhpcyBtb2RlIGNhbiBiZSBnaXZlbiBhcyBcZkJzbWN1cFxmUiBhbmQgXGZCcm1jdXBcZlIuCi1UaGlzIGFyaXNlcywgZm9yIGV4YW1wbGUsIGZyb20gdGVybWluYWxzIGxpa2UgdGhlIENvbmNlcHQgd2l0aCBtb3JlIHRoYW4KLW9uZSBwYWdlIG9mIG1lbW9yeS4KLUlmIHRoZSB0ZXJtaW5hbCBoYXMgb25seSBtZW1vcnkgcmVsYXRpdmUgY3Vyc29yIGFkZHJlc3NpbmcgYW5kIG5vdCBzY3JlZW4KLXJlbGF0aXZlIGN1cnNvciBhZGRyZXNzaW5nLCBhIG9uZSBzY3JlZW4tc2l6ZWQgd2luZG93IG11c3QgYmUgZml4ZWQgaW50bwotdGhlIHRlcm1pbmFsIGZvciBjdXJzb3IgYWRkcmVzc2luZyB0byB3b3JrIHByb3Blcmx5LgotVGhpcyBpcyBhbHNvIHVzZWQgZm9yIHRoZSBccy0xVEVLVFJPTklYXHMrMSA0MDI1LAotd2hlcmUKLS5CIHNtY3VwCi1zZXRzIHRoZSBjb21tYW5kIGNoYXJhY3RlciB0byBiZSB0aGUgb25lIHVzZWQgYnkgdGVybWluZm8uCi1JZiB0aGUgXGZCc21jdXBcZlAgc2VxdWVuY2Ugd2lsbCBub3QgcmVzdG9yZSB0aGUgc2NyZWVuIGFmdGVyIGFuCi1cZkJybWN1cFxmUCBzZXF1ZW5jZSBpcyBvdXRwdXQgKHRvIHRoZSBzdGF0ZSBwcmlvciB0byBvdXRwdXR0aW5nCi1cZkJybWN1cFxmUCksIHNwZWNpZnkgXGZCbnJybWNcZlAuCi0uUFAKLS5TUyBBcmVhIENsZWFycwotLlBQCi1JZiB0aGUgdGVybWluYWwgY2FuIGNsZWFyIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKLWxpbmUsIGxlYXZpbmcgdGhlIGN1cnNvciB3aGVyZSBpdCBpcywgdGhpcyBzaG91bGQgYmUgZ2l2ZW4gYXMgXGZCZWxcZlIuCi1JZiB0aGUgdGVybWluYWwgY2FuIGNsZWFyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSB0byB0aGUgY3VycmVudAotcG9zaXRpb24gaW5jbHVzaXZlLCBsZWF2aW5nCi10aGUgY3Vyc29yIHdoZXJlIGl0IGlzLCB0aGlzIHNob3VsZCBiZSBnaXZlbiBhcyBcZkJlbDFcZlAuCi1JZiB0aGUgdGVybWluYWwgY2FuIGNsZWFyIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKLWRpc3BsYXksIHRoZW4gdGhpcyBzaG91bGQgYmUgZ2l2ZW4gYXMgXGZCZWRcZlIuCi1cZkJFZFxmUiBpcyBvbmx5IGRlZmluZWQgZnJvbSB0aGUgZmlyc3QgY29sdW1uIG9mIGEgbGluZS4KLShUaHVzLCBpdCBjYW4gYmUgc2ltdWxhdGVkIGJ5IGEgcmVxdWVzdCB0byBkZWxldGUgYSBsYXJnZSBudW1iZXIgb2YgbGluZXMsCi1pZiBhIHRydWUKLS5CIGVkCi1pcyBub3QgYXZhaWxhYmxlLikKLS5QUAotLlNTIEluc2VydC9kZWxldGUgbGluZSBhbmQgdmVydGljYWwgbW90aW9ucwotLlBQCi1JZiB0aGUgdGVybWluYWwgY2FuIG9wZW4gYSBuZXcgYmxhbmsgbGluZSBiZWZvcmUgdGhlIGxpbmUgd2hlcmUgdGhlIGN1cnNvcgotaXMsIHRoaXMgc2hvdWxkIGJlIGdpdmVuIGFzIFxmQmlsMVxmUjsgdGhpcyBpcyBkb25lIG9ubHkgZnJvbSB0aGUgZmlyc3QKLXBvc2l0aW9uIG9mIGEgbGluZS4KLVRoZSBjdXJzb3IgbXVzdCB0aGVuIGFwcGVhciBvbiB0aGUgbmV3bHkgYmxhbmsgbGluZS4KLUlmIHRoZSB0ZXJtaW5hbCBjYW4gZGVsZXRlIHRoZSBsaW5lIHdoaWNoIHRoZSBjdXJzb3IgaXMgb24sIHRoZW4gdGhpcwotc2hvdWxkIGJlIGdpdmVuIGFzIFxmQmRsMVxmUjsgdGhpcyBpcyBkb25lIG9ubHkgZnJvbSB0aGUgZmlyc3QgcG9zaXRpb24gb24KLXRoZSBsaW5lIHRvIGJlIGRlbGV0ZWQuCi1WZXJzaW9ucyBvZgotLkIgaWwxCi1hbmQKLS5CIGRsMQotd2hpY2ggdGFrZSBhIHNpbmdsZSBwYXJhbWV0ZXIgYW5kIGluc2VydCBvciBkZWxldGUgdGhhdCBtYW55IGxpbmVzIGNhbgotYmUgZ2l2ZW4gYXMKLS5CIGlsCi1hbmQKLS5CUiBkbCAuCi0uUFAKLUlmIHRoZSB0ZXJtaW5hbCBoYXMgYSBzZXR0YWJsZSBzY3JvbGxpbmcgcmVnaW9uIChsaWtlIHRoZSB2dDEwMCkKLXRoZSBjb21tYW5kIHRvIHNldCB0aGlzIGNhbiBiZSBkZXNjcmliZWQgd2l0aCB0aGUKLS5CIGNzcgotY2FwYWJpbGl0eSwgd2hpY2ggdGFrZXMgdHdvIHBhcmFtZXRlcnM6Ci10aGUgdG9wIGFuZCBib3R0b20gbGluZXMgb2YgdGhlIHNjcm9sbGluZyByZWdpb24uCi1UaGUgY3Vyc29yIHBvc2l0aW9uIGlzLCBhbGFzLCB1bmRlZmluZWQgYWZ0ZXIgdXNpbmcgdGhpcyBjb21tYW5kLgotLlBQCi1JdCBpcyBwb3NzaWJsZSB0byBnZXQgdGhlIGVmZmVjdCBvZiBpbnNlcnQgb3IgZGVsZXRlIGxpbmUgdXNpbmcKLS5CIGNzcgotb24gYSBwcm9wZXJseSBjaG9zZW4gcmVnaW9uOyB0aGUKLS5CIHNjCi1hbmQKLS5CIHJjCi0oc2F2ZSBhbmQgcmVzdG9yZSBjdXJzb3IpIGNvbW1hbmRzIG1heSBiZSB1c2VmdWwgZm9yIGVuc3VyaW5nIHRoYXQKLXlvdXIgc3ludGhlc2l6ZWQgaW5zZXJ0L2RlbGV0ZSBzdHJpbmcgZG9lcyBub3QgbW92ZSB0aGUgY3Vyc29yLgotKE5vdGUgdGhhdCB0aGUgXGZCbmN1cnNlc1xmUigzWCkgbGlicmFyeSBkb2VzIHRoaXMgc3ludGhlc2lzCi1hdXRvbWF0aWNhbGx5LCBzbyB5b3UgbmVlZCBub3QgY29tcG9zZSBpbnNlcnQvZGVsZXRlIHN0cmluZ3MgZm9yCi1hbiBlbnRyeSB3aXRoIFxmQmNzclxmUikuCi0uUFAKLVlldCBhbm90aGVyIHdheSB0byBjb25zdHJ1Y3QgaW5zZXJ0IGFuZCBkZWxldGUgbWlnaHQgYmUgdG8gdXNlIGEgY29tYmluYXRpb24gb2YKLWluZGV4IHdpdGggdGhlIG1lbW9yeS1sb2NrIGZlYXR1cmUgZm91bmQgb24gc29tZSB0ZXJtaW5hbHMgKGxpa2UgdGhlIEhQLTcwMC85MAotc2VyaWVzLCB3aGljaCBob3dldmVyIGFsc28gaGFzIGluc2VydC9kZWxldGUpLgotLlBQCi1JbnNlcnRpbmcgbGluZXMgYXQgdGhlIHRvcCBvciBib3R0b20gb2YgdGhlIHNjcmVlbiBjYW4gYWxzbyBiZQotZG9uZSB1c2luZwotLkIgcmkKLW9yCi0uQiBpbmQKLW9uIG1hbnkgdGVybWluYWxzIHdpdGhvdXQgYSB0cnVlIGluc2VydC9kZWxldGUgbGluZSwKLWFuZCBpcyBvZnRlbiBmYXN0ZXIgZXZlbiBvbiB0ZXJtaW5hbHMgd2l0aCB0aG9zZSBmZWF0dXJlcy4KLS5QUAotVGhlIGJvb2xlYW4gXGZCbm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvblxmUiBzaG91bGQgYmUgc2V0IGlmIGVhY2ggc2Nyb2xsaW5nCi13aW5kb3cgaXMgZWZmZWN0aXZlbHkgYSB2aWV3IHBvcnQgb24gYSBzY3JlZW4tc2l6ZWQgY2FudmFzLgotVG8gdGVzdCBmb3IKLXRoaXMgY2FwYWJpbGl0eSwgY3JlYXRlIGEgc2Nyb2xsaW5nIHJlZ2lvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4sCi13cml0ZSBzb21ldGhpbmcgdG8gdGhlIGJvdHRvbSBsaW5lLCBtb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIHRvcCBvZiB0aGUgcmVnaW9uLAotYW5kIGRvIFxmQnJpXGZSIGZvbGxvd2VkIGJ5IFxmQmRsMVxmUiBvciBcZkJpbmRcZlIuCi1JZiB0aGUgZGF0YSBzY3JvbGxlZAotb2ZmIHRoZSBib3R0b20gb2YgdGhlIHJlZ2lvbiBieSB0aGUgXGZCcmlcZlIgcmUtYXBwZWFycywgdGhlbiBzY3JvbGxpbmcKLWlzIG5vbi1kZXN0cnVjdGl2ZS4KLVN5c3RlbSBWIGFuZCBYU0kgQ3Vyc2VzIGV4cGVjdCB0aGF0IFxmQmluZFxmUiwgXGZCcmlcZlIsCi1cZkJpbmRuXGZSLCBhbmQgXGZCcmluXGZSIHdpbGwgc2ltdWxhdGUgZGVzdHJ1Y3RpdmUgc2Nyb2xsaW5nOyB0aGVpcgotZG9jdW1lbnRhdGlvbiBjYXV0aW9ucyB5b3Ugbm90IHRvIGRlZmluZSBcZkJjc3JcZlIgdW5sZXNzIHRoaXMgaXMgdHJ1ZS4KLVRoaXMgXGZCY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9uIGlzIG1vcmUgbGliZXJhbCBhbmQgd2lsbCBkbyBleHBsaWNpdCBlcmFzZXMKLWFmdGVyIHNjcm9sbGluZyBpZiBcZkJuZHN0clxmUiBpcyBkZWZpbmVkLgotLlBQCi1JZiB0aGUgdGVybWluYWwgaGFzIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBhIHdpbmRvdyBhcyBwYXJ0IG9mCi1tZW1vcnksIHdoaWNoIGFsbCBjb21tYW5kcyBhZmZlY3QsCi1pdCBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlcml6ZWQgc3RyaW5nCi0uQlIgd2luZCAuCi1UaGUgZm91ciBwYXJhbWV0ZXJzIGFyZSB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBsaW5lcyBpbiBtZW1vcnkKLWFuZCB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBjb2x1bW5zIGluIG1lbW9yeSwgaW4gdGhhdCBvcmRlci4KLS5QUAotSWYgdGhlIHRlcm1pbmFsIGNhbiByZXRhaW4gZGlzcGxheSBtZW1vcnkgYWJvdmUsIHRoZW4gdGhlCi1cZkJkYVxmUiBjYXBhYmlsaXR5IHNob3VsZCBiZSBnaXZlbjsgaWYgZGlzcGxheSBtZW1vcnkgY2FuIGJlIHJldGFpbmVkCi1iZWxvdywgdGhlbiBcZkJkYlxmUiBzaG91bGQgYmUgZ2l2ZW4uCi1UaGVzZSBpbmRpY2F0ZQotdGhhdCBkZWxldGluZyBhIGxpbmUgb3Igc2Nyb2xsaW5nIG1heSBicmluZyBub24tYmxhbmsgbGluZXMgdXAgZnJvbSBiZWxvdwotb3IgdGhhdCBzY3JvbGxpbmcgYmFjayB3aXRoIFxmQnJpXGZSIG1heSBicmluZyBkb3duIG5vbi1ibGFuayBsaW5lcy4KLS5QUAotLlNTIEluc2VydC9EZWxldGUgQ2hhcmFjdGVyCi0uUFAKLVRoZXJlIGFyZSB0d28gYmFzaWMga2luZHMgb2YgaW50ZWxsaWdlbnQgdGVybWluYWxzIHdpdGggcmVzcGVjdCB0bwotaW5zZXJ0L2RlbGV0ZSBjaGFyYWN0ZXIgd2hpY2ggY2FuIGJlIGRlc2NyaWJlZCB1c2luZwotLkkgdGVybWluZm8uCi1UaGUgbW9zdCBjb21tb24gaW5zZXJ0L2RlbGV0ZSBjaGFyYWN0ZXIgb3BlcmF0aW9ucyBhZmZlY3Qgb25seSB0aGUgY2hhcmFjdGVycwotb24gdGhlIGN1cnJlbnQgbGluZSBhbmQgc2hpZnQgY2hhcmFjdGVycyBvZmYgdGhlIGVuZCBvZiB0aGUgbGluZSByaWdpZGx5LgotT3RoZXIgdGVybWluYWxzLCBzdWNoIGFzIHRoZSBDb25jZXB0IDEwMCBhbmQgdGhlIFBlcmtpbiBFbG1lciBPd2wsIG1ha2UKLWEgZGlzdGluY3Rpb24gYmV0d2VlbiB0eXBlZCBhbmQgdW50eXBlZCBibGFua3Mgb24gdGhlIHNjcmVlbiwgc2hpZnRpbmcKLXVwb24gYW4gaW5zZXJ0IG9yIGRlbGV0ZSBvbmx5IHRvIGFuIHVudHlwZWQgYmxhbmsgb24gdGhlIHNjcmVlbiB3aGljaCBpcwotZWl0aGVyIGVsaW1pbmF0ZWQsIG9yIGV4cGFuZGVkIHRvIHR3byB1bnR5cGVkIGJsYW5rcy4KLVlvdSBjYW4gZGV0ZXJtaW5lIHRoZQota2luZCBvZiB0ZXJtaW5hbCB5b3UgaGF2ZSBieSBjbGVhcmluZyB0aGUgc2NyZWVuIGFuZCB0aGVuIHR5cGluZwotdGV4dCBzZXBhcmF0ZWQgYnkgY3Vyc29yIG1vdGlvbnMuCi1UeXBlIFwqKGxxYWJjXCBcIFwgXCBkZWZcKihycSB1c2luZyBsb2NhbAotY3Vyc29yIG1vdGlvbnMgKG5vdCBzcGFjZXMpIGJldHdlZW4gdGhlIFwqKGxxYWJjXCoocnEgYW5kIHRoZSBcKihscWRlZlwqKHJxLgotVGhlbiBwb3NpdGlvbiB0aGUgY3Vyc29yIGJlZm9yZSB0aGUgXCoobHFhYmNcKihycSBhbmQgcHV0IHRoZSB0ZXJtaW5hbCBpbiBpbnNlcnQKLW1vZGUuCi1JZiB0eXBpbmcgY2hhcmFjdGVycyBjYXVzZXMgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgdG8gc2hpZnQKLXJpZ2lkbHkgYW5kIGNoYXJhY3RlcnMgdG8gZmFsbCBvZmYgdGhlIGVuZCwgdGhlbiB5b3VyIHRlcm1pbmFsIGRvZXMKLW5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGJsYW5rcyBhbmQgdW50eXBlZCBwb3NpdGlvbnMuCi1JZiB0aGUgXCoobHFhYmNcKihycQotc2hpZnRzIG92ZXIgdG8gdGhlIFwqKGxxZGVmXCoocnEgd2hpY2ggdGhlbiBtb3ZlIHRvZ2V0aGVyIGFyb3VuZCB0aGUgZW5kIG9mIHRoZQotY3VycmVudCBsaW5lIGFuZCBvbnRvIHRoZSBuZXh0IGFzIHlvdSBpbnNlcnQsIHlvdSBoYXZlIHRoZSBzZWNvbmQgdHlwZSBvZgotdGVybWluYWwsIGFuZCBzaG91bGQgZ2l2ZSB0aGUgY2FwYWJpbGl0eSBcZkJpblxmUiwgd2hpY2ggc3RhbmRzIGZvcgotXCoobHFpbnNlcnQgbnVsbFwqKHJxLgotV2hpbGUgdGhlc2UgYXJlIHR3byBsb2dpY2FsbHkgc2VwYXJhdGUgYXR0cmlidXRlcyAob25lIGxpbmUgdmVyc3VzIG11bHRpLWxpbmUKLWluc2VydCBtb2RlLCBhbmQgc3BlY2lhbCB0cmVhdG1lbnQgb2YgdW50eXBlZCBzcGFjZXMpIHdlIGhhdmUgc2VlbiBubwotdGVybWluYWxzIHdob3NlIGluc2VydCBtb2RlIGNhbm5vdCBiZSBkZXNjcmliZWQgd2l0aCB0aGUgc2luZ2xlIGF0dHJpYnV0ZS4KLS5QUAotVGVybWluZm8gY2FuIGRlc2NyaWJlIGJvdGggdGVybWluYWxzIHdoaWNoIGhhdmUgYW4gaW5zZXJ0IG1vZGUsIGFuZCB0ZXJtaW5hbHMKLXdoaWNoIHNlbmQgYSBzaW1wbGUgc2VxdWVuY2UgdG8gb3BlbiBhIGJsYW5rIHBvc2l0aW9uIG9uIHRoZSBjdXJyZW50IGxpbmUuCi1HaXZlIGFzIFxmQnNtaXJcZlIgdGhlIHNlcXVlbmNlIHRvIGdldCBpbnRvIGluc2VydCBtb2RlLgotR2l2ZSBhcyBcZkJybWlyXGZSIHRoZSBzZXF1ZW5jZSB0byBsZWF2ZSBpbnNlcnQgbW9kZS4KLU5vdyBnaXZlIGFzIFxmQmljaDFcZlIgYW55IHNlcXVlbmNlIG5lZWRlZCB0byBiZSBzZW50IGp1c3QgYmVmb3JlIHNlbmRpbmcKLXRoZSBjaGFyYWN0ZXIgdG8gYmUgaW5zZXJ0ZWQuCi1Nb3N0IHRlcm1pbmFscyB3aXRoIGEgdHJ1ZSBpbnNlcnQgbW9kZQotd2lsbCBub3QgZ2l2ZSBcZkJpY2gxXGZSOyB0ZXJtaW5hbHMgd2hpY2ggc2VuZCBhIHNlcXVlbmNlIHRvIG9wZW4gYSBzY3JlZW4KLXBvc2l0aW9uIHNob3VsZCBnaXZlIGl0IGhlcmUuCi0uUFAKLUlmIHlvdXIgdGVybWluYWwgaGFzIGJvdGgsIGluc2VydCBtb2RlIGlzIHVzdWFsbHkgcHJlZmVyYWJsZSB0byBcZkJpY2gxXGZSLgotVGVjaG5pY2FsbHksIHlvdSBzaG91bGQgbm90IGdpdmUgYm90aCB1bmxlc3MgdGhlIHRlcm1pbmFsIGFjdHVhbGx5IHJlcXVpcmVzCi1ib3RoIHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24uCi1BY2NvcmRpbmdseSwgc29tZSBub24tY3Vyc2VzIGFwcGxpY2F0aW9ucyBnZXQKLWNvbmZ1c2VkIGlmIGJvdGggYXJlIHByZXNlbnQ7IHRoZSBzeW1wdG9tIGlzIGRvdWJsZWQgY2hhcmFjdGVycyBpbiBhbiB1cGRhdGUKLXVzaW5nIGluc2VydC4KLVRoaXMgcmVxdWlyZW1lbnQgaXMgbm93IHJhcmU7IG1vc3QgXGZCaWNoXGZSIHNlcXVlbmNlcyBkbyBub3QKLXJlcXVpcmUgcHJldmlvdXMgc21pciwgYW5kIG1vc3Qgc21pciBpbnNlcnQgbW9kZXMgZG8gbm90IHJlcXVpcmUgXGZCaWNoMVxmUgotYmVmb3JlIGVhY2ggY2hhcmFjdGVyLgotVGhlcmVmb3JlLCB0aGUgbmV3IFxmQmN1cnNlc1xmUiBhY3R1YWxseSBhc3N1bWVzIHRoaXMKLWlzIHRoZSBjYXNlIGFuZCB1c2VzIGVpdGhlciBcZkJybWlyXGZSL1xmQnNtaXJcZlIgb3IgXGZCaWNoXGZSL1xmQmljaDFcZlIgYXMKLWFwcHJvcHJpYXRlIChidXQgbm90IGJvdGgpLgotSWYgeW91IGhhdmUgdG8gd3JpdGUgYW4gZW50cnkgdG8gYmUgdXNlZCB1bmRlcgotbmV3IGN1cnNlcyBmb3IgYSB0ZXJtaW5hbCBvbGQgZW5vdWdoIHRvIG5lZWQgYm90aCwgaW5jbHVkZSB0aGUKLVxmQnJtaXJcZlIvXGZCc21pclxmUiBzZXF1ZW5jZXMgaW4gXGZCaWNoMVxmUi4KLS5QUAotSWYgcG9zdCBpbnNlcnQgcGFkZGluZyBpcyBuZWVkZWQsIGdpdmUgdGhpcyBhcyBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMKLWluIFxmQmlwXGZSIChhIHN0cmluZyBvcHRpb24pLgotQW55IG90aGVyIHNlcXVlbmNlIHdoaWNoIG1heSBuZWVkIHRvIGJlCi1zZW50IGFmdGVyIGFuIGluc2VydCBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgbWF5IGFsc28gYmUgZ2l2ZW4gaW4gXGZCaXBcZlIuCi1JZiB5b3VyIHRlcm1pbmFsIG5lZWRzIGJvdGggdG8gYmUgcGxhY2VkIGludG8gYW4gYGluc2VydCBtb2RlJyBhbmQKLWEgc3BlY2lhbCBjb2RlIHRvIHByZWNlZGUgZWFjaCBpbnNlcnRlZCBjaGFyYWN0ZXIsIHRoZW4gYm90aAotLkJSIHNtaXIgLyBybWlyCi1hbmQKLS5CIGljaDEKLWNhbiBiZSBnaXZlbiwgYW5kIGJvdGggd2lsbCBiZSB1c2VkLgotVGhlCi0uQiBpY2gKLWNhcGFiaWxpdHksIHdpdGggb25lIHBhcmFtZXRlciwKLS5JUiBuICwKLXdpbGwgcmVwZWF0IHRoZSBlZmZlY3RzIG9mCi0uQiBpY2gxCi0uSSBuCi10aW1lcy4KLS5QUAotSWYgcGFkZGluZyBpcyBuZWNlc3NhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzIHR5cGVkIHdoaWxlIG5vdAotaW4gaW5zZXJ0IG1vZGUsIGdpdmUgdGhpcyBhcyBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgcGFkZGluZyBpbiBcZkJybXBcZlAuCi0uUFAKLUl0IGlzIG9jY2FzaW9uYWxseSBuZWNlc3NhcnkgdG8gbW92ZSBhcm91bmQgd2hpbGUgaW4gaW5zZXJ0IG1vZGUKLXRvIGRlbGV0ZSBjaGFyYWN0ZXJzIG9uIHRoZSBzYW1lIGxpbmUgKGUuZy4sIGlmIHRoZXJlIGlzIGEgdGFiIGFmdGVyCi10aGUgaW5zZXJ0aW9uIHBvc2l0aW9uKS4KLUlmIHlvdXIgdGVybWluYWwgYWxsb3dzIG1vdGlvbiB3aGlsZSBpbgotaW5zZXJ0IG1vZGUgeW91IGNhbiBnaXZlIHRoZSBjYXBhYmlsaXR5IFxmQm1pclxmUiB0byBzcGVlZCB1cCBpbnNlcnRpbmcKLWluIHRoaXMgY2FzZS4KLU9taXR0aW5nIFxmQm1pclxmUiB3aWxsIGFmZmVjdCBvbmx5IHNwZWVkLgotU29tZSB0ZXJtaW5hbHMKLShub3RhYmx5IERhdGFtZWRpYSdzKSBtdXN0IG5vdCBoYXZlIFxmQm1pclxmUiBiZWNhdXNlIG9mIHRoZSB3YXkgdGhlaXIKLWluc2VydCBtb2RlIHdvcmtzLgotLlBQCi1GaW5hbGx5LCB5b3UgY2FuIHNwZWNpZnkKLS5CIGRjaDEKLXRvIGRlbGV0ZSBhIHNpbmdsZSBjaGFyYWN0ZXIsCi0uQiBkY2gKLXdpdGggb25lIHBhcmFtZXRlciwKLS5JUiBuICwKLXRvIGRlbGV0ZQotLkkgbiBjaGFyYWN0ZXJzLAotYW5kIGRlbGV0ZSBtb2RlIGJ5IGdpdmluZyBcZkJzbWRjXGZSIGFuZCBcZkJybWRjXGZSCi10byBlbnRlciBhbmQgZXhpdCBkZWxldGUgbW9kZSAoYW55IG1vZGUgdGhlIHRlcm1pbmFsIG5lZWRzIHRvIGJlIHBsYWNlZAotaW4gZm9yCi0uQiBkY2gxCi10byB3b3JrKS4KLS5QUAotQSBjb21tYW5kIHRvIGVyYXNlCi0uSSBuCi1jaGFyYWN0ZXJzIChlcXVpdmFsZW50IHRvIG91dHB1dHRpbmcKLS5JIG4KLWJsYW5rcyB3aXRob3V0IG1vdmluZyB0aGUgY3Vyc29yKQotY2FuIGJlIGdpdmVuIGFzCi0uQiBlY2gKLXdpdGggb25lIHBhcmFtZXRlci4KLS5QUAotLlNTICJIaWdobGlnaHRpbmcsIFVuZGVybGluaW5nLCBhbmQgVmlzaWJsZSBCZWxscyIKLS5QUAotSWYgeW91ciB0ZXJtaW5hbCBoYXMgb25lIG9yIG1vcmUga2luZHMgb2YgZGlzcGxheSBhdHRyaWJ1dGVzLAotdGhlc2UgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgbnVtYmVyIG9mIGRpZmZlcmVudCB3YXlzLgotWW91IHNob3VsZCBjaG9vc2Ugb25lIGRpc3BsYXkgZm9ybSBhcwotXGYyc3RhbmRvdXQgbW9kZVxmUiwKLXJlcHJlc2VudGluZyBhIGdvb2QsIGhpZ2ggY29udHJhc3QsIGVhc3ktb24tdGhlLWV5ZXMsCi1mb3JtYXQgZm9yIGhpZ2hsaWdodGluZyBlcnJvciBtZXNzYWdlcyBhbmQgb3RoZXIgYXR0ZW50aW9uIGdldHRlcnMuCi0oSWYgeW91IGhhdmUgYSBjaG9pY2UsIHJldmVyc2UgdmlkZW8gcGx1cyBoYWxmLWJyaWdodCBpcyBnb29kLAotb3IgcmV2ZXJzZSB2aWRlbyBhbG9uZS4pCi1UaGUgc2VxdWVuY2VzIHRvIGVudGVyIGFuZCBleGl0IHN0YW5kb3V0IG1vZGUKLWFyZSBnaXZlbiBhcyBcZkJzbXNvXGZSIGFuZCBcZkJybXNvXGZSLCByZXNwZWN0aXZlbHkuCi1JZiB0aGUgY29kZSB0byBjaGFuZ2UgaW50byBvciBvdXQgb2Ygc3RhbmRvdXQKLW1vZGUgbGVhdmVzIG9uZSBvciBldmVuIHR3byBibGFuayBzcGFjZXMgb24gdGhlIHNjcmVlbiwKLWFzIHRoZSBUVkkgOTEyIGFuZCBUZWxlcmF5IDEwNjEgZG8sCi10aGVuIFxmQnhtY1xmUiBzaG91bGQgYmUgZ2l2ZW4gdG8gdGVsbCBob3cgbWFueSBzcGFjZXMgYXJlIGxlZnQuCi0uUFAKLUNvZGVzIHRvIGJlZ2luIHVuZGVybGluaW5nIGFuZCBlbmQgdW5kZXJsaW5pbmcgY2FuIGJlIGdpdmVuIGFzIFxmQnNtdWxcZlIKLWFuZCBcZkJybXVsXGZSIHJlc3BlY3RpdmVseS4KLUlmIHRoZSB0ZXJtaW5hbCBoYXMgYSBjb2RlIHRvIHVuZGVybGluZSB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kIG1vdmUKLXRoZSBjdXJzb3Igb25lIHNwYWNlIHRvIHRoZSByaWdodCwKLXN1Y2ggYXMgdGhlIE1pY3JvdGVybSBNaW1lLAotdGhpcyBjYW4gYmUgZ2l2ZW4gYXMgXGZCdWNcZlIuCi0uUFAKLU90aGVyIGNhcGFiaWxpdGllcyB0byBlbnRlciB2YXJpb3VzIGhpZ2hsaWdodGluZyBtb2RlcyBpbmNsdWRlCi0uQiBibGluawotKGJsaW5raW5nKQotLkIgYm9sZAotKGJvbGQgb3IgZXh0cmEgYnJpZ2h0KQotLkIgZGltCi0oZGltIG9yIGhhbGYtYnJpZ2h0KQotLkIgaW52aXMKLShibGFua2luZyBvciBpbnZpc2libGUgdGV4dCkKLS5CIHByb3QKLShwcm90ZWN0ZWQpCi0uQiByZXYKLShyZXZlcnNlIHZpZGVvKQotLkIgc2dyMAotKHR1cm4gb2ZmCi0uSSBhbGwKLWF0dHJpYnV0ZSBtb2RlcykKLS5CIHNtYWNzCi0oZW50ZXIgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgbW9kZSkKLWFuZAotLkIgcm1hY3MKLShleGl0IGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IG1vZGUpLgotVHVybmluZyBvbiBhbnkgb2YgdGhlc2UgbW9kZXMgc2luZ2x5IG1heSBvciBtYXkgbm90IHR1cm4gb2ZmIG90aGVyIG1vZGVzLgotLlBQCi1JZiB0aGVyZSBpcyBhIHNlcXVlbmNlIHRvIHNldCBhcmJpdHJhcnkgY29tYmluYXRpb25zIG9mIG1vZGVzLAotdGhpcyBzaG91bGQgYmUgZ2l2ZW4gYXMKLS5CIHNncgotKHNldCBhdHRyaWJ1dGVzKSwKLXRha2luZyA5IHBhcmFtZXRlcnMuCi1FYWNoIHBhcmFtZXRlciBpcyBlaXRoZXIgMCBvciBub256ZXJvLCBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgaXMgb24gb3Igb2ZmLgotVGhlIDkgcGFyYW1ldGVycyBhcmUsIGluIG9yZGVyOgotc3RhbmRvdXQsIHVuZGVybGluZSwgcmV2ZXJzZSwgYmxpbmssIGRpbSwgYm9sZCwgYmxhbmssIHByb3RlY3QsIGFsdGVybmF0ZQotY2hhcmFjdGVyIHNldC4KLU5vdCBhbGwgbW9kZXMgbmVlZCBiZSBzdXBwb3J0ZWQgYnkKLS5CUiBzZ3IgLAotb25seSB0aG9zZSBmb3Igd2hpY2ggY29ycmVzcG9uZGluZyBzZXBhcmF0ZSBhdHRyaWJ1dGUgY29tbWFuZHMgZXhpc3QuCi0uUFAKLUZvciBleGFtcGxlLCB0aGUgREVDIHZ0MjIwIHN1cHBvcnRzIG1vc3Qgb2YgdGhlIG1vZGVzOgotLlBQCi0uVFMKLWNlbnRlcjsKLWwgYyBjCi1sIGMgYwotbHcyOCBsdzYgbHcyIGx3MjAuCi1cZkJ0cGFybSBwYXJhbWV0ZXIJYXR0cmlidXRlCWVzY2FwZSBzZXF1ZW5jZVxmUAotCi1ub25lCW5vbmUJXFxFWzBtCi1wMQlzdGFuZG91dAlcXEVbMDsxOzdtCi1wMgl1bmRlcmxpbmUJXFxFWzA7NG0KLXAzCXJldmVyc2UJXFxFWzA7N20KLXA0CWJsaW5rCVxcRVswOzVtCi1wNQlkaW0Jbm90IGF2YWlsYWJsZQotcDYJYm9sZAlcXEVbMDsxbQotcDcJaW52aXMJXFxFWzA7OG0KLXA4CXByb3RlY3QJbm90IHVzZWQKLXA5CWFsdGNoYXJzZXQJXk8gKG9mZikgXk4gKG9uKQotLlRFCi0uUFAKLVdlIGJlZ2luIGVhY2ggZXNjYXBlIHNlcXVlbmNlIGJ5IHR1cm5pbmcgb2ZmIGFueSBleGlzdGluZyBtb2Rlcywgc2luY2UKLXRoZXJlIGlzIG5vIHF1aWNrIHdheSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5IGFyZSBhY3RpdmUuCi1TdGFuZG91dCBpcyBzZXQgdXAgdG8gYmUgdGhlIGNvbWJpbmF0aW9uIG9mIHJldmVyc2UgYW5kIGJvbGQuCi1UaGUgdnQyMjAgdGVybWluYWwgaGFzIGEgcHJvdGVjdCBtb2RlLAotdGhvdWdoIGl0IGlzIG5vdCBjb21tb25seSB1c2VkIGluIHNncgotYmVjYXVzZSBpdCBwcm90ZWN0cyBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4gZnJvbSB0aGUgaG9zdCdzIGVyYXN1cmVzLgotVGhlIGFsdGNoYXJzZXQgbW9kZSBhbHNvIGlzIGRpZmZlcmVudCBpbiB0aGF0IGl0IGlzIGVpdGhlciBeTyBvciBeTiwKLWRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIG9mZiBvciBvbi4KLUlmIGFsbCBtb2RlcyBhcmUgdHVybmVkIG9uLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIFxcRVswOzE7NDs1Ozc7OG1eTi4KLS5QUAotU29tZSBzZXF1ZW5jZXMgYXJlIGNvbW1vbiB0byBkaWZmZXJlbnQgbW9kZXMuCi1Gb3IgZXhhbXBsZSwgOzcgaXMgb3V0cHV0IHdoZW4gZWl0aGVyIHAxIG9yIHAzIGlzIHRydWUsIHRoYXQgaXMsIGlmCi1laXRoZXIgc3RhbmRvdXQgb3IgcmV2ZXJzZSBtb2RlcyBhcmUgdHVybmVkIG9uLgotLlBQCi1Xcml0aW5nIG91dCB0aGUgYWJvdmUgc2VxdWVuY2VzLCBhbG9uZyB3aXRoIHRoZWlyIGRlcGVuZGVuY2llcyB5aWVsZHMKLS5QUAotLlRTCi1jZW50ZXI7Ci1sIGMgYwotbCBjIGMKLWx3MjggbHc2IGx3MiBsdzIwLgotXGZCc2VxdWVuY2UJd2hlbiB0byBvdXRwdXQJdGVybWluZm8gdHJhbnNsYXRpb25cZlAKLQotXFxFWzAJYWx3YXlzCVxcRVswCi07MQlpZiBwMSBvciBwNgklPyVwMSVwNiV8JXQ7MSU7Ci07NAlpZiBwMgklPyVwMiV8JXQ7NCU7Ci07NQlpZiBwNAklPyVwNCV8JXQ7NSU7Ci07NwlpZiBwMSBvciBwMwklPyVwMSVwMyV8JXQ7NyU7Ci07OAlpZiBwNwklPyVwNyV8JXQ7OCU7Ci1tCWFsd2F5cwltCi1eTiBvciBeTwlpZiBwOSBeTiwgZWxzZSBeTwklPyVwOSV0Xk4lZV5PJTsKLS5URQotLlBQCi1QdXR0aW5nIHRoaXMgYWxsIHRvZ2V0aGVyIGludG8gdGhlIHNnciBzZXF1ZW5jZSBnaXZlczoKLS5QUAotLm5mCi0gICAgc2dyPVxcRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOwotICAgICAgICAlPyVwNCV0OzUlOyU/JXA3JXQ7OCU7bSU/JXA5JXRcXDAxNiVlXFwwMTclOywKLS5maQotLlBQCi1SZW1lbWJlciB0aGF0IGlmIHlvdSBzcGVjaWZ5IHNnciwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHNncjAuCi1BbHNvLCBzb21lIGltcGxlbWVudGF0aW9ucyByZWx5IG9uIHNnciBiZWluZyBnaXZlbiBpZiBzZ3IwIGlzLAotTm90IGFsbCB0ZXJtaW5mbyBlbnRyaWVzIG5lY2Vzc2FyaWx5IGhhdmUgYW4gc2dyIHN0cmluZywgaG93ZXZlci4KLU1hbnkgdGVybWluZm8gZW50cmllcyBhcmUgZGVyaXZlZCBmcm9tIHRlcm1jYXAgZW50cmllcwotd2hpY2ggaGF2ZSBubyBzZ3Igc3RyaW5nLgotVGhlIG9ubHkgZHJhd2JhY2sgdG8gYWRkaW5nIGFuIHNnciBzdHJpbmcgaXMgdGhhdCB0ZXJtY2FwIGFsc28KLWFzc3VtZXMgdGhhdCBzZ3IwIGRvZXMgbm90IGV4aXQgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgbW9kZS4KLS5QUAotVGVybWluYWxzIHdpdGggdGhlIGBgbWFnaWMgY29va2llJycgZ2xpdGNoCi0uUkIgKCB4bWMgKQotZGVwb3NpdCBzcGVjaWFsIGBgY29va2llcycnIHdoZW4gdGhleSByZWNlaXZlIG1vZGUtc2V0dGluZyBzZXF1ZW5jZXMsCi13aGljaCBhZmZlY3QgdGhlIGRpc3BsYXkgYWxnb3JpdGhtIHJhdGhlciB0aGFuIGhhdmluZyBleHRyYSBiaXRzIGZvcgotZWFjaCBjaGFyYWN0ZXIuCi1Tb21lIHRlcm1pbmFscywgc3VjaCBhcyB0aGUgSFAgMjYyMSwgYXV0b21hdGljYWxseSBsZWF2ZSBzdGFuZG91dAotbW9kZSB3aGVuIHRoZXkgbW92ZSB0byBhIG5ldyBsaW5lIG9yIHRoZSBjdXJzb3IgaXMgYWRkcmVzc2VkLgotUHJvZ3JhbXMgdXNpbmcgc3RhbmRvdXQgbW9kZSBzaG91bGQgZXhpdCBzdGFuZG91dCBtb2RlIGJlZm9yZQotbW92aW5nIHRoZSBjdXJzb3Igb3Igc2VuZGluZyBhIG5ld2xpbmUsCi11bmxlc3MgdGhlCi0uQiBtc2dyCi1jYXBhYmlsaXR5LCBhc3NlcnRpbmcgdGhhdCBpdCBpcyBzYWZlIHRvIG1vdmUgaW4gc3RhbmRvdXQgbW9kZSwgaXMgcHJlc2VudC4KLS5QUAotSWYgdGhlIHRlcm1pbmFsIGhhcwotYSB3YXkgb2YgZmxhc2hpbmcgdGhlIHNjcmVlbiB0byBpbmRpY2F0ZSBhbiBlcnJvciBxdWlldGx5IChhIGJlbGwgcmVwbGFjZW1lbnQpCi10aGVuIHRoaXMgY2FuIGJlIGdpdmVuIGFzIFxmQmZsYXNoXGZSOyBpdCBtdXN0IG5vdCBtb3ZlIHRoZSBjdXJzb3IuCi0uUFAKLUlmIHRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgbWFkZSBtb3JlIHZpc2libGUgdGhhbiBub3JtYWwgd2hlbiBpdCBpcwotbm90IG9uIHRoZSBib3R0b20gbGluZSAodG8gbWFrZSwgZm9yIGV4YW1wbGUsIGEgbm9uLWJsaW5raW5nIHVuZGVybGluZSBpbnRvIGFuCi1lYXNpZXIgdG8gZmluZCBibG9jayBvciBibGlua2luZyB1bmRlcmxpbmUpCi1naXZlIHRoaXMgc2VxdWVuY2UgYXMKLS5CUiBjdnZpcyAuCi1JZiB0aGVyZSBpcyBhIHdheSB0byBtYWtlIHRoZSBjdXJzb3IgY29tcGxldGVseSBpbnZpc2libGUsIGdpdmUgdGhhdCBhcwotLkJSIGNpdmlzIC4KLVRoZSBjYXBhYmlsaXR5Ci0uQlIgY25vcm0KLXNob3VsZCBiZSBnaXZlbiB3aGljaCB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgYm90aCBvZiB0aGVzZSBtb2Rlcy4KLS5QUAotSWYgeW91ciB0ZXJtaW5hbCBjb3JyZWN0bHkgZ2VuZXJhdGVzIHVuZGVybGluZWQgY2hhcmFjdGVycwotKHdpdGggbm8gc3BlY2lhbCBjb2RlcyBuZWVkZWQpCi1ldmVuIHRob3VnaCBpdCBkb2VzIG5vdCBvdmVyc3RyaWtlLAotdGhlbiB5b3Ugc2hvdWxkIGdpdmUgdGhlIGNhcGFiaWxpdHkgXGZCdWxcZlIuCi1JZiBhIGNoYXJhY3RlciBvdmVyc3RyaWtpbmcgYW5vdGhlciBsZWF2ZXMgYm90aCBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sCi1zcGVjaWZ5IHRoZSBjYXBhYmlsaXR5IFxmQm9zXGZQLgotSWYgb3ZlcnN0cmlrZXMgYXJlIGVyYXNhYmxlIHdpdGggYSBibGFuaywKLXRoZW4gdGhpcyBzaG91bGQgYmUgaW5kaWNhdGVkIGJ5IGdpdmluZyBcZkJlb1xmUi4KLS5QUAotLlNTIEtleXBhZCBhbmQgRnVuY3Rpb24gS2V5cwotLlBQCi1JZiB0aGUgdGVybWluYWwgaGFzIGEga2V5cGFkIHRoYXQgdHJhbnNtaXRzIGNvZGVzIHdoZW4gdGhlIGtleXMgYXJlIHByZXNzZWQsCi10aGlzIGluZm9ybWF0aW9uIGNhbiBiZSBnaXZlbi4KLU5vdGUgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlCi10ZXJtaW5hbHMgd2hlcmUgdGhlIGtleXBhZCBvbmx5IHdvcmtzIGluIGxvY2FsICh0aGlzIGFwcGxpZXMsIGZvciBleGFtcGxlLAotdG8gdGhlIHVuc2hpZnRlZCBIUCAyNjIxIGtleXMpLgotSWYgdGhlIGtleXBhZCBjYW4gYmUgc2V0IHRvIHRyYW5zbWl0IG9yIG5vdCB0cmFuc21pdCwKLWdpdmUgdGhlc2UgY29kZXMgYXMgXGZCc21reFxmUiBhbmQgXGZCcm1reFxmUi4KLU90aGVyd2lzZSB0aGUga2V5cGFkIGlzIGFzc3VtZWQgdG8gYWx3YXlzIHRyYW5zbWl0LgotVGhlIGNvZGVzIHNlbnQgYnkgdGhlIGxlZnQgYXJyb3csIHJpZ2h0IGFycm93LCB1cCBhcnJvdywgZG93biBhcnJvdywKLWFuZCBob21lIGtleXMgY2FuIGJlIGdpdmVuIGFzCi1cZkJrY3ViMSwga2N1ZjEsIGtjdXUxLCBrY3VkMSwgXGZSYW5kXGZCIGtob21lXGZSIHJlc3BlY3RpdmVseS4KLUlmIHRoZXJlIGFyZSBmdW5jdGlvbiBrZXlzIHN1Y2ggYXMgZjAsIGYxLCAuLi4sIGYxMCwgdGhlIGNvZGVzIHRoZXkgc2VuZAotY2FuIGJlIGdpdmVuIGFzIFxmQmtmMCwga2YxLCAuLi4sIGtmMTBcZlIuCi1JZiB0aGVzZSBrZXlzIGhhdmUgbGFiZWxzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgZjAgdGhyb3VnaCBmMTAsIHRoZSBsYWJlbHMKLWNhbiBiZSBnaXZlbiBhcyBcZkJsZjAsIGxmMSwgLi4uLCBsZjEwXGZSLgotVGhlIGNvZGVzIHRyYW5zbWl0dGVkIGJ5IGNlcnRhaW4gb3RoZXIgc3BlY2lhbCBrZXlzIGNhbiBiZSBnaXZlbjoKLS5CIGtsbAotKGhvbWUgZG93biksCi0uQiBrYnMKLShiYWNrc3BhY2UpLAotLkIga3RiYwotKGNsZWFyIGFsbCB0YWJzKSwKLS5CIGtjdGFiCi0oY2xlYXIgdGhlIHRhYiBzdG9wIGluIHRoaXMgY29sdW1uKSwKLS5CIGtjbHIKLShjbGVhciBzY3JlZW4gb3IgZXJhc2Uga2V5KSwKLS5CIGtkY2gxCi0oZGVsZXRlIGNoYXJhY3RlciksCi0uQiBrZGwxCi0oZGVsZXRlIGxpbmUpLAotLkIga3JtaXIKLShleGl0IGluc2VydCBtb2RlKSwKLS5CIGtlbAotKGNsZWFyIHRvIGVuZCBvZiBsaW5lKSwKLS5CIGtlZAotKGNsZWFyIHRvIGVuZCBvZiBzY3JlZW4pLAotLkIga2ljaDEKLShpbnNlcnQgY2hhcmFjdGVyIG9yIGVudGVyIGluc2VydCBtb2RlKSwKLS5CIGtpbDEKLShpbnNlcnQgbGluZSksCi0uQiBrbnAKLShuZXh0IHBhZ2UpLAotLkIga3BwCi0ocHJldmlvdXMgcGFnZSksCi0uQiBraW5kCi0oc2Nyb2xsIGZvcndhcmQvZG93biksCi0uQiBrcmkKLShzY3JvbGwgYmFja3dhcmQvdXApLAotLkIga2h0cwotKHNldCBhIHRhYiBzdG9wIGluIHRoaXMgY29sdW1uKS4KLUluIGFkZGl0aW9uLCBpZiB0aGUga2V5cGFkIGhhcyBhIDMgYnkgMyBhcnJheSBvZiBrZXlzIGluY2x1ZGluZyB0aGUgZm91cgotYXJyb3cga2V5cywgdGhlIG90aGVyIGZpdmUga2V5cyBjYW4gYmUgZ2l2ZW4gYXMKLS5CUiBrYTEgLAotLkJSIGthMyAsCi0uQlIga2IyICwKLS5CUiBrYzEgLAotYW5kCi0uQlIga2MzIC4KLVRoZXNlIGtleXMgYXJlIHVzZWZ1bCB3aGVuIHRoZSBlZmZlY3RzIG9mIGEgMyBieSAzIGRpcmVjdGlvbmFsIHBhZCBhcmUgbmVlZGVkLgotLlBQCi1TdHJpbmdzIHRvIHByb2dyYW0gZnVuY3Rpb24ga2V5cyBjYW4gYmUgZ2l2ZW4gYXMKLS5CUiBwZmtleSAsCi0uQlIgcGZsb2MgLAotYW5kCi0uQlIgcGZ4IC4KLUEgc3RyaW5nIHRvIHByb2dyYW0gc2NyZWVuIGxhYmVscyBzaG91bGQgYmUgc3BlY2lmaWVkIGFzIFxmQnBsblxmUC4KLUVhY2ggb2YgdGhlc2Ugc3RyaW5ncyB0YWtlcyB0d28gcGFyYW1ldGVyczogdGhlIGZ1bmN0aW9uIGtleSBudW1iZXIgdG8KLXByb2dyYW0gKGZyb20gMCB0byAxMCkgYW5kIHRoZSBzdHJpbmcgdG8gcHJvZ3JhbSBpdCB3aXRoLgotRnVuY3Rpb24ga2V5IG51bWJlcnMgb3V0IG9mIHRoaXMgcmFuZ2UgbWF5IHByb2dyYW0gdW5kZWZpbmVkIGtleXMgaW4KLWEgdGVybWluYWwgZGVwZW5kZW50IG1hbm5lci4KLVRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGNhcGFiaWxpdGllcyBpcyB0aGF0Ci0uQiBwZmtleQotY2F1c2VzIHByZXNzaW5nIHRoZSBnaXZlbiBrZXkgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHVzZXIgdHlwaW5nIHRoZQotZ2l2ZW4gc3RyaW5nOwotLkIgcGZsb2MKLWNhdXNlcyB0aGUgc3RyaW5nIHRvIGJlIGV4ZWN1dGVkIGJ5IHRoZSB0ZXJtaW5hbCBpbiBsb2NhbDsgYW5kCi0uQiBwZngKLWNhdXNlcyB0aGUgc3RyaW5nIHRvIGJlIHRyYW5zbWl0dGVkIHRvIHRoZSBjb21wdXRlci4KLS5QUAotVGhlIGNhcGFiaWxpdGllcyBcZkJubGFiXGZQLCBcZkJsd1xmUCBhbmQgXGZCbGhcZlAKLWRlZmluZSB0aGUgbnVtYmVyIG9mIHByb2dyYW1tYWJsZQotc2NyZWVuIGxhYmVscyBhbmQgdGhlaXIgd2lkdGggYW5kIGhlaWdodC4KLUlmIHRoZXJlIGFyZSBjb21tYW5kcyB0byB0dXJuIHRoZSBsYWJlbHMgb24gYW5kIG9mZiwKLWdpdmUgdGhlbSBpbiBcZkJzbWxuXGZQIGFuZCBcZkJybWxuXGZQLgotXGZCc21sblxmUCBpcyBub3JtYWxseSBvdXRwdXQgYWZ0ZXIgb25lIG9yIG1vcmUgcGxuCi1zZXF1ZW5jZXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNoYW5nZSBiZWNvbWVzIHZpc2libGUuCi0uUFAKLS5TUyBUYWJzIGFuZCBJbml0aWFsaXphdGlvbgotLlBQCi1JZiB0aGUgdGVybWluYWwgaGFzIGhhcmR3YXJlIHRhYnMsIHRoZSBjb21tYW5kIHRvIGFkdmFuY2UgdG8gdGhlIG5leHQKLXRhYiBzdG9wIGNhbiBiZSBnaXZlbiBhcwotLkIgaHQKLSh1c3VhbGx5IGNvbnRyb2wgSSkuCi1BIGBgYmFjay10YWInJyBjb21tYW5kIHdoaWNoIG1vdmVzIGxlZnR3YXJkIHRvIHRoZSBwcmVjZWRpbmcgdGFiIHN0b3AgY2FuCi1iZSBnaXZlbiBhcwotLkJSIGNidCAuCi1CeSBjb252ZW50aW9uLCBpZiB0aGUgdGVsZXR5cGUgbW9kZXMgaW5kaWNhdGUgdGhhdCB0YWJzIGFyZSBiZWluZwotZXhwYW5kZWQgYnkgdGhlIGNvbXB1dGVyIHJhdGhlciB0aGFuIGJlaW5nIHNlbnQgdG8gdGhlIHRlcm1pbmFsLAotcHJvZ3JhbXMgc2hvdWxkIG5vdCB1c2UKLS5CIGh0Ci1vcgotLkIgY2J0Ci1ldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQsIHNpbmNlIHRoZSB1c2VyIG1heSBub3QgaGF2ZSB0aGUgdGFiIHN0b3BzCi1wcm9wZXJseSBzZXQuCi1JZiB0aGUgdGVybWluYWwgaGFzIGhhcmR3YXJlIHRhYnMgd2hpY2ggYXJlIGluaXRpYWxseSBzZXQgZXZlcnkKLS5JIG4KLXNwYWNlcyB3aGVuIHRoZSB0ZXJtaW5hbCBpcyBwb3dlcmVkIHVwLAotdGhlIG51bWVyaWMgcGFyYW1ldGVyCi0uQiBpdAotaXMgZ2l2ZW4sIHNob3dpbmcgdGhlIG51bWJlciBvZiBzcGFjZXMgdGhlIHRhYnMgYXJlIHNldCB0by4KLVRoaXMgaXMgbm9ybWFsbHkgdXNlZCBieSB0aGUKLS5JUiB0c2V0Ci1jb21tYW5kIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHNldCB0aGUgbW9kZSBmb3IgaGFyZHdhcmUgdGFiIGV4cGFuc2lvbiwKLWFuZCB3aGV0aGVyIHRvIHNldCB0aGUgdGFiIHN0b3BzLgotSWYgdGhlIHRlcm1pbmFsIGhhcyB0YWIgc3RvcHMgdGhhdCBjYW4gYmUgc2F2ZWQgaW4gbm9uLXZvbGF0aWxlIG1lbW9yeSwKLXRoZSB0ZXJtaW5mbyBkZXNjcmlwdGlvbiBjYW4gYXNzdW1lIHRoYXQgdGhleSBhcmUgcHJvcGVybHkgc2V0LgotLlBQCi1PdGhlciBjYXBhYmlsaXRpZXMKLWluY2x1ZGUKLS5CUiBpczEgLAotLkJSIGlzMiAsCi1hbmQKLS5CUiBpczMgLAotaW5pdGlhbGl6YXRpb24gc3RyaW5ncyBmb3IgdGhlIHRlcm1pbmFsLAotLkJSIGlwcm9nICwKLXRoZSBwYXRoIG5hbWUgb2YgYSBwcm9ncmFtIHRvIGJlIHJ1biB0byBpbml0aWFsaXplIHRoZSB0ZXJtaW5hbCwKLWFuZCBcZkJpZlxmUiwgdGhlIG5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgbG9uZyBpbml0aWFsaXphdGlvbiBzdHJpbmdzLgotVGhlc2Ugc3RyaW5ncyBhcmUgZXhwZWN0ZWQgdG8gc2V0IHRoZSB0ZXJtaW5hbCBpbnRvIG1vZGVzIGNvbnNpc3RlbnQKLXdpdGggdGhlIHJlc3Qgb2YgdGhlIHRlcm1pbmZvIGRlc2NyaXB0aW9uLgotVGhleSBhcmUgbm9ybWFsbHkgc2VudCB0byB0aGUgdGVybWluYWwsIGJ5IHRoZQotLkkgaW5pdAotb3B0aW9uIG9mIHRoZQotLklSIEBUUFVUQAotcHJvZ3JhbSwgZWFjaCB0aW1lIHRoZSB1c2VyIGxvZ3MgaW4uCi1UaGV5IHdpbGwgYmUgcHJpbnRlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotLlJTCi0uVFAKLXJ1biB0aGUgcHJvZ3JhbQotLkJSIGlwcm9nCi0uVFAKLW91dHB1dAotLkJSIGlzMQotLkJSIGlzMgotLlRQCi1zZXQgdGhlIG1hcmdpbnMgdXNpbmcKLS5CUiBtZ2MgLAotLkJSIHNtZ2wKLWFuZAotLkJSIHNtZ3IKLS5UUAotc2V0IHRhYnMgdXNpbmcKLS5CIHRiYwotYW5kCi0uQlIgaHRzCi0uVFAKLXByaW50IHRoZSBmaWxlCi0uQlIgaWYKLS5UUAotYW5kIGZpbmFsbHkKLW91dHB1dAotLkJSIGlzMyAuCi0uUkUKLS5QUAotTW9zdCBpbml0aWFsaXphdGlvbiBpcyBkb25lIHdpdGgKLS5CUiBpczIgLgotU3BlY2lhbCB0ZXJtaW5hbCBtb2RlcyBjYW4gYmUgc2V0IHVwIHdpdGhvdXQgZHVwbGljYXRpbmcgc3RyaW5ncwotYnkgcHV0dGluZyB0aGUgY29tbW9uIHNlcXVlbmNlcyBpbgotLkIgaXMyCi1hbmQgc3BlY2lhbCBjYXNlcyBpbgotLkIgaXMxCi1hbmQKLS5CUiBpczMgLgotLlBQCi1BIHNldCBvZiBzZXF1ZW5jZXMgdGhhdCBkb2VzIGEgaGFyZGVyIHJlc2V0IGZyb20gYSB0b3RhbGx5IHVua25vd24gc3RhdGUKLWNhbiBiZSBnaXZlbiBhcwotLkJSIHJzMSAsCi0uQlIgcnMyICwKLS5CUiByZgotYW5kCi0uQlIgcnMzICwKLWFuYWxvZ291cyB0bwotLkIgaXMxICwKLS5CIGlzMiAsCi0uQiBpZgotYW5kCi0uQlIgaXMzCi1yZXNwZWN0aXZlbHkuCi1UaGVzZSBzdHJpbmdzIGFyZSBvdXRwdXQgYnkgdGhlCi0uSVIgcmVzZXQKLXByb2dyYW0sIHdoaWNoIGlzIHVzZWQgd2hlbiB0aGUgdGVybWluYWwgZ2V0cyBpbnRvIGEgd2VkZ2VkIHN0YXRlLgotQ29tbWFuZHMgYXJlIG5vcm1hbGx5IHBsYWNlZCBpbgotLkJSIHJzMSAsCi0uQlIgcnMyCi0uQiByczMKLWFuZAotLkIgcmYKLW9ubHkgaWYgdGhleSBwcm9kdWNlIGFubm95aW5nIGVmZmVjdHMgb24gdGhlIHNjcmVlbiBhbmQgYXJlIG5vdAotbmVjZXNzYXJ5IHdoZW4gbG9nZ2luZyBpbi4KLUZvciBleGFtcGxlLCB0aGUgY29tbWFuZCB0byBzZXQgdGhlIHZ0MTAwIGludG8gODAtY29sdW1uIG1vZGUgd291bGQKLW5vcm1hbGx5IGJlIHBhcnQgb2YKLS5CUiBpczIgLAotYnV0IGl0IGNhdXNlcyBhbiBhbm5veWluZyBnbGl0Y2ggb2YgdGhlIHNjcmVlbiBhbmQgaXMgbm90IG5vcm1hbGx5Ci1uZWVkZWQgc2luY2UgdGhlIHRlcm1pbmFsIGlzIHVzdWFsbHkgYWxyZWFkeSBpbiA4MCBjb2x1bW4gbW9kZS4KLS5QUAotVGhlCi0uSVIgcmVzZXQKLXByb2dyYW0gd3JpdGVzIHN0cmluZ3MKLWluY2x1ZGluZwotLkJSIGlwcm9nICwKLWV0Yy4sIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQotLklSIGluaXQKLXByb2dyYW0sIHVzaW5nIAotLkJSIHJzMSAsCi1ldGMuLCBpbnN0ZWFkIG9mCi0uQlIgaXMxICwKLWV0Yy4KLUlmIGFueSBvZgotLkJSIHJzMSAsCi0uQlIgcnMyICwKLS5CUiByczMgLAotb3IKLS5CUiByZgotcmVzZXQgY2FwYWJpbGl0eSBzdHJpbmdzIGFyZSBtaXNzaW5nLCB0aGUKLS5JUiByZXNldAotcHJvZ3JhbSBmYWxscyBiYWNrIHVwb24gdGhlIGNvcnJlc3BvbmRpbmcgaW5pdGlhbGl6YXRpb24gY2FwYWJpbGl0eSBzdHJpbmcuCi0uUFAKLUlmIHRoZXJlIGFyZSBjb21tYW5kcyB0byBzZXQgYW5kIGNsZWFyIHRhYiBzdG9wcywgdGhleSBjYW4gYmUgZ2l2ZW4gYXMKLS5CIHRiYwotKGNsZWFyIGFsbCB0YWIgc3RvcHMpCi1hbmQKLS5CIGh0cwotKHNldCBhIHRhYiBzdG9wIGluIHRoZSBjdXJyZW50IGNvbHVtbiBvZiBldmVyeSByb3cpLgotSWYgYSBtb3JlIGNvbXBsZXggc2VxdWVuY2UgaXMgbmVlZGVkIHRvIHNldCB0aGUgdGFicyB0aGFuIGNhbiBiZQotZGVzY3JpYmVkIGJ5IHRoaXMsIHRoZSBzZXF1ZW5jZSBjYW4gYmUgcGxhY2VkIGluCi0uQiBpczIKLW9yCi0uQlIgaWYgLgotLlNTIERlbGF5cyBhbmQgUGFkZGluZwotLlBQCi1NYW55IG9sZGVyIGFuZCBzbG93ZXIgdGVybWluYWxzIGRvIG5vdCBzdXBwb3J0IGVpdGhlciBYT04vWE9GRiBvciBEVFIKLWhhbmRzaGFraW5nLCBpbmNsdWRpbmcgaGFyZCBjb3B5IHRlcm1pbmFscyBhbmQgc29tZSB2ZXJ5IGFyY2hhaWMgQ1JUcwotKGluY2x1ZGluZywgZm9yIGV4YW1wbGUsIERFQyBWVDEwMHMpLgotVGhlc2UgbWF5IHJlcXVpcmUgcGFkZGluZyBjaGFyYWN0ZXJzCi1hZnRlciBjZXJ0YWluIGN1cnNvciBtb3Rpb25zIGFuZCBzY3JlZW4gY2hhbmdlcy4KLS5QUAotSWYgdGhlIHRlcm1pbmFsIHVzZXMgeG9uL3hvZmYgaGFuZHNoYWtpbmcgZm9yIGZsb3cgY29udHJvbCAodGhhdCBpcywKLWl0IGF1dG9tYXRpY2FsbHkgZW1pdHMgXlMgYmFjayB0byB0aGUgaG9zdCB3aGVuIGl0cyBpbnB1dCBidWZmZXJzIGFyZQotY2xvc2UgdG8gZnVsbCksIHNldAotLkJSIHhvbiAuCi1UaGlzIGNhcGFiaWxpdHkgc3VwcHJlc3NlcyB0aGUgZW1pc3Npb24gb2YgcGFkZGluZy4KLVlvdSBjYW4gYWxzbyBzZXQgaXQKLWZvciBtZW1vcnktbWFwcGVkIGNvbnNvbGUgZGV2aWNlcyBlZmZlY3RpdmVseSB0aGF0IGRvIG5vdCBoYXZlIGEgc3BlZWQgbGltaXQuCi1QYWRkaW5nIGluZm9ybWF0aW9uIHNob3VsZCBzdGlsbCBiZSBpbmNsdWRlZCBzbyB0aGF0IHJvdXRpbmVzIGNhbgotbWFrZSBiZXR0ZXIgZGVjaXNpb25zIGFib3V0IHJlbGF0aXZlIGNvc3RzLCBidXQgYWN0dWFsIHBhZCBjaGFyYWN0ZXJzIHdpbGwKLW5vdCBiZSB0cmFuc21pdHRlZC4KLS5QUAotSWYgXGZCcGJcZlIgKHBhZGRpbmcgYmF1ZCByYXRlKSBpcyBnaXZlbiwgcGFkZGluZyBpcyBzdXBwcmVzc2VkIGF0IGJhdWQgcmF0ZXMKLWJlbG93IHRoZSB2YWx1ZSBvZiBcZkJwYlxmUi4KLUlmIHRoZSBlbnRyeSBoYXMgbm8gcGFkZGluZyBiYXVkIHJhdGUsIHRoZW4KLXdoZXRoZXIgcGFkZGluZyBpcyBlbWl0dGVkIG9yIG5vdCBpcyBjb21wbGV0ZWx5IGNvbnRyb2xsZWQgYnkgXGZCeG9uXGZSLgotLlBQCi1JZiB0aGUgdGVybWluYWwgcmVxdWlyZXMgb3RoZXIgdGhhbiBhIG51bGwgKHplcm8pIGNoYXJhY3RlciBhcyBhIHBhZCwKLXRoZW4gdGhpcyBjYW4gYmUgZ2l2ZW4gYXMgXGZCcGFkXGZSLgotT25seSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZQotLkIgcGFkCi1zdHJpbmcgaXMgdXNlZC4KLS5QUAotLlNTIFN0YXR1cyBMaW5lcwotU29tZSB0ZXJtaW5hbHMgaGF2ZSBhbiBleHRyYSBgc3RhdHVzIGxpbmUnIHdoaWNoIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5Ci1zb2Z0d2FyZSAoYW5kIHRodXMgbm90IGNvdW50ZWQgaW4gdGhlIHRlcm1pbmFsJ3MgXGZCbGluZXNcZlIgY2FwYWJpbGl0eSkuCi0uUFAKLVRoZSBzaW1wbGVzdCBjYXNlIGlzIGEgc3RhdHVzIGxpbmUgd2hpY2ggaXMgY3Vyc29yLWFkZHJlc3NhYmxlIGJ1dCBub3QKLXBhcnQgb2YgdGhlIG1haW4gc2Nyb2xsaW5nIHJlZ2lvbiBvbiB0aGUgc2NyZWVuOyB0aGUgSGVhdGhraXQgSDE5IGhhcwotYSBzdGF0dXMgbGluZSBvZiB0aGlzIGtpbmQsIGFzIHdvdWxkIGEgMjQtbGluZSBWVDEwMCB3aXRoIGEgMjMtbGluZQotc2Nyb2xsaW5nIHJlZ2lvbiBzZXQgdXAgb24gaW5pdGlhbGl6YXRpb24uCi1UaGlzIHNpdHVhdGlvbiBpcyBpbmRpY2F0ZWQKLWJ5IHRoZSBcZkJoc1xmUiBjYXBhYmlsaXR5LgotLlBQCi1Tb21lIHRlcm1pbmFscyB3aXRoIHN0YXR1cyBsaW5lcyBuZWVkIHNwZWNpYWwgc2VxdWVuY2VzIHRvIGFjY2VzcyB0aGUKLXN0YXR1cyBsaW5lLgotVGhlc2UgbWF5IGJlIGV4cHJlc3NlZCBhcyBhIHN0cmluZyB3aXRoIHNpbmdsZSBwYXJhbWV0ZXIKLVxmQnRzbFxmUiB3aGljaCB0YWtlcyB0aGUgY3Vyc29yIHRvIGEgZ2l2ZW4gemVyby1vcmlnaW4gY29sdW1uIG9uIHRoZQotc3RhdHVzIGxpbmUuCi1UaGUgY2FwYWJpbGl0eSBcZkJmc2xcZlIgbXVzdCByZXR1cm4gdG8gdGhlIG1haW4tc2NyZWVuCi1jdXJzb3IgcG9zaXRpb25zIGJlZm9yZSB0aGUgbGFzdCBcZkJ0c2xcZlIuCi1Zb3UgbWF5IG5lZWQgdG8gZW1iZWQgdGhlCi1zdHJpbmcgdmFsdWVzIG9mIFxmQnNjXGZSIChzYXZlIGN1cnNvcikgYW5kIFxmQnJjXGZSIChyZXN0b3JlIGN1cnNvcikKLWluIFxmQnRzbFxmUiBhbmQgXGZCZnNsXGZSIHRvIGFjY29tcGxpc2ggdGhpcy4KLS5QUAotVGhlIHN0YXR1cyBsaW5lIGlzIG5vcm1hbGx5IGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHdpZHRoCi1vZiB0aGUgdGVybWluYWwuCi1JZiB0aGlzIGlzIHVudHJ1ZSwgeW91IGNhbiBzcGVjaWZ5IGl0IHdpdGggdGhlIG51bWVyaWMKLWNhcGFiaWxpdHkgXGZCd3NsXGZSLgotLlBQCi1BIGNvbW1hbmQgdG8gZXJhc2Ugb3IgYmxhbmsgdGhlIHN0YXR1cyBsaW5lIG1heSBiZSBzcGVjaWZpZWQgYXMgXGZCZHNsXGZSLgotLlBQCi1UaGUgYm9vbGVhbiBjYXBhYmlsaXR5IFxmQmVzbG9rXGZSIHNwZWNpZmllcyB0aGF0IGVzY2FwZSBzZXF1ZW5jZXMsIHRhYnMsCi1ldGMuLCB3b3JrIG9yZGluYXJpbHkgaW4gdGhlIHN0YXR1cyBsaW5lLgotLlBQCi1UaGUgXGZCbmN1cnNlc1xmUiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB5ZXQgdXNlIGFueSBvZiB0aGVzZSBjYXBhYmlsaXRpZXMuCi1UaGV5IGFyZSBkb2N1bWVudGVkIGhlcmUgaW4gY2FzZSB0aGV5IGV2ZXIgYmVjb21lIGltcG9ydGFudC4KLS5QUAotLlNTIExpbmUgR3JhcGhpY3MKLS5QUAotTWFueSB0ZXJtaW5hbHMgaGF2ZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldHMgdXNlZnVsIGZvciBmb3Jtcy1kcmF3aW5nLgotVGVybWluZm8gYW5kIFxmQmN1cnNlc1xmUiBidWlsZCBpbiBzdXBwb3J0IGZvciB0aGUgZHJhd2luZyBjaGFyYWN0ZXJzCi1zdXBwb3J0ZWQgYnkgdGhlIFZUMTAwLCB3aXRoIHNvbWUgY2hhcmFjdGVycyBmcm9tIHRoZSBBVCZUIDQ0MTB2MSBhZGRlZC4KLVRoaXMgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgbWF5IGJlIHNwZWNpZmllZCBieSB0aGUgXGZCYWNzY1xmUiBjYXBhYmlsaXR5LgotLlBQCi0uVFMgSAotY2VudGVyIGV4cGFuZDsKLWMgbCBsIGMKLWMgbCBsIGMKLWx3MjggbHc2IGx3MiBsdzIwLgotLlwiLlRICi1cZkJHbHlwaAlBQ1MJQXNjaWkJVlQxMDBcZlIKLVxmQk5hbWUJTmFtZQlEZWZhdWx0CU5hbWVcZlIKLVVLIHBvdW5kIHNpZ24gICAgICAgIAlBQ1NfU1RFUkxJTkcJZgl9Ci1hcnJvdyBwb2ludGluZyBkb3duCUFDU19EQVJST1cJdgkuCi1hcnJvdyBwb2ludGluZyBsZWZ0CUFDU19MQVJST1cJPAksCi1hcnJvdyBwb2ludGluZyByaWdodAlBQ1NfUkFSUk9XCT4JKwotYXJyb3cgcG9pbnRpbmcgdXAJQUNTX1VBUlJPVwleCS0KLWJvYXJkIG9mIHNxdWFyZXMJQUNTX0JPQVJECSMJaAotYnVsbGV0ICAgICAgICAgIAlBQ1NfQlVMTEVUCW8JfgotY2hlY2tlciBib2FyZCAoc3RpcHBsZSkJQUNTX0NLQk9BUkQJOglhCi1kZWdyZWUgc3ltYm9sICAgCUFDU19ERUdSRUUJXGUJZgotZGlhbW9uZCAgICAgICAgIAlBQ1NfRElBTU9ORAkrCWAKLWdyZWF0ZXItdGhhbi1vci1lcXVhbC10bwlBQ1NfR0VRVUFMCT4JegotZ3JlZWsgcGkgICAgICAgIAlBQ1NfUEkJKgl7Ci1ob3Jpem9udGFsIGxpbmUgCUFDU19ITElORQktCXEKLWxhbnRlcm4gc3ltYm9sICAJQUNTX0xBTlRFUk4JIwlpCi1sYXJnZSBwbHVzIG9yIGNyb3Nzb3ZlcglBQ1NfUExVUwkrCW4KLWxlc3MtdGhhbi1vci1lcXVhbC10bwlBQ1NfTEVRVUFMCTwJeQotbG93ZXIgbGVmdCBjb3JuZXIJQUNTX0xMQ09STkVSCSsJbQotbG93ZXIgcmlnaHQgY29ybmVyCUFDU19MUkNPUk5FUgkrCWoKLW5vdC1lcXVhbCAgICAgICAJQUNTX05FUVVBTAkhCXwKLXBsdXMvbWludXMgICAgICAJQUNTX1BMTUlOVVMJIwlnCi1zY2FuIGxpbmUgMSAgICAgCUFDU19TMSAgCX4Jbwotc2NhbiBsaW5lIDMgICAgIAlBQ1NfUzMgIAktCXAKLXNjYW4gbGluZSA3ICAgICAJQUNTX1M3ICAJLQlyCi1zY2FuIGxpbmUgOSAgICAgCUFDU19TOSAgCVwmXwlzCi1zb2xpZCBzcXVhcmUgYmxvY2sJQUNTX0JMT0NLCSMJMAotdGVlIHBvaW50aW5nIGRvd24JQUNTX1RURUUJKwl3Ci10ZWUgcG9pbnRpbmcgbGVmdAlBQ1NfUlRFRQkrCXUKLXRlZSBwb2ludGluZyByaWdodAlBQ1NfTFRFRQkrCXQKLXRlZSBwb2ludGluZyB1cCAJQUNTX0JURUUJKwl2Ci11cHBlciBsZWZ0IGNvcm5lcglBQ1NfVUxDT1JORVIJKwlsCi11cHBlciByaWdodCBjb3JuZXIJQUNTX1VSQ09STkVSCSsJawotdmVydGljYWwgbGluZSAgIAlBQ1NfVkxJTkUJfAl4Ci0uVEUKLS5QUAotVGhlIGJlc3Qgd2F5IHRvIGRlZmluZSBhIG5ldyBkZXZpY2UncyBncmFwaGljcyBzZXQgaXMgdG8gYWRkIGEgY29sdW1uCi10byBhIGNvcHkgb2YgdGhpcyB0YWJsZSBmb3IgeW91ciB0ZXJtaW5hbCwgZ2l2aW5nIHRoZSBjaGFyYWN0ZXIgd2hpY2gKLSh3aGVuIGVtaXR0ZWQgYmV0d2VlbiBcZkJzbWFjc1xmUi9cZkJybWFjc1xmUiBzd2l0Y2hlcykgd2lsbCBiZSByZW5kZXJlZAotYXMgdGhlIGNvcnJlc3BvbmRpbmcgZ3JhcGhpYy4KLVRoZW4gcmVhZCBvZmYgdGhlIFZUMTAwL3lvdXIgdGVybWluYWwKLWNoYXJhY3RlciBwYWlycyByaWdodCB0byBsZWZ0IGluIHNlcXVlbmNlOyB0aGVzZSBiZWNvbWUgdGhlIEFDU0Mgc3RyaW5nLgotLlBQCi0uU1MgQ29sb3IgSGFuZGxpbmcKLS5QUAotTW9zdCBjb2xvciB0ZXJtaW5hbHMgYXJlIGVpdGhlciBgVGVrdHJvbml4LWxpa2UnIG9yIGBIUC1saWtlJy4KLVRla3Ryb25peC1saWtlCi10ZXJtaW5hbHMgaGF2ZSBhIHByZWRlZmluZWQgc2V0IG9mIE4gY29sb3JzICh3aGVyZSBOIHVzdWFsbHkgOCksIGFuZCBjYW4gc2V0Ci1jaGFyYWN0ZXItY2VsbCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNoYXJhY3RlcnMgaW5kZXBlbmRlbnRseSwgbWl4aW5nIHRoZW0KLWludG8gTiAqIE4gY29sb3ItcGFpcnMuCi1PbiBIUC1saWtlIHRlcm1pbmFscywgdGhlIHVzZSBtdXN0IHNldCBlYWNoIGNvbG9yCi1wYWlyIHVwIHNlcGFyYXRlbHkgKGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgYXJlIG5vdCBpbmRlcGVuZGVudGx5IHNldHRhYmxlKS4KLVVwIHRvIE0gY29sb3ItcGFpcnMgbWF5IGJlIHNldCB1cCBmcm9tIDIqTSBkaWZmZXJlbnQgY29sb3JzLgotQU5TSS1jb21wYXRpYmxlCi10ZXJtaW5hbHMgYXJlIFRla3Ryb25peC1saWtlLgotLlBQCi1Tb21lIGJhc2ljIGNvbG9yIGNhcGFiaWxpdGllcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbG9yIG1ldGhvZC4KLVRoZSBudW1lcmljCi1jYXBhYmlsaXRpZXMgXGZCY29sb3JzXGZSIGFuZCBcZkJwYWlyc1xmUiBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlcnMgb2YgY29sb3JzCi1hbmQgY29sb3ItcGFpcnMgdGhhdCBjYW4gYmUgZGlzcGxheWVkIHNpbXVsdGFuZW91c2x5LgotVGhlIFxmQm9wXGZSIChvcmlnaW5hbAotcGFpcikgc3RyaW5nIHJlc2V0cyBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyB0byB0aGVpciBkZWZhdWx0IHZhbHVlcwotZm9yIHRoZSB0ZXJtaW5hbC4KLVRoZSBcZkJvY1xmUiBzdHJpbmcgcmVzZXRzIGFsbCBjb2xvcnMgb3IgY29sb3ItcGFpcnMgdG8KLXRoZWlyIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgdGVybWluYWwuCi1Tb21lIHRlcm1pbmFscyAoaW5jbHVkaW5nIG1hbnkgUEMKLXRlcm1pbmFsIGVtdWxhdG9ycykgZXJhc2Ugc2NyZWVuIGFyZWFzIHdpdGggdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvciByYXRoZXIKLXRoYW4gdGhlIHBvd2VyLXVwIGRlZmF1bHQgYmFja2dyb3VuZDsgdGhlc2Ugc2hvdWxkIGhhdmUgdGhlIGJvb2xlYW4gY2FwYWJpbGl0eQotXGZCYmNlXGZSLgotLlBQCi1UbyBjaGFuZ2UgdGhlIGN1cnJlbnQgZm9yZWdyb3VuZCBvciBiYWNrZ3JvdW5kIGNvbG9yIG9uIGEgVGVrdHJvbml4LXR5cGUKLXRlcm1pbmFsLCB1c2UgXGZCc2V0YWZcZlIgKHNldCBBTlNJIGZvcmVncm91bmQpIGFuZCBcZkJzZXRhYlxmUiAoc2V0IEFOU0kKLWJhY2tncm91bmQpIG9yIFxmQnNldGZcZlIgKHNldCBmb3JlZ3JvdW5kKSBhbmQgXGZCc2V0YlxmUiAoc2V0IGJhY2tncm91bmQpLgotVGhlc2UgdGFrZSBvbmUgcGFyYW1ldGVyLCB0aGUgY29sb3IgbnVtYmVyLgotVGhlIFNWcjQgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMKLW9ubHkgXGZCc2V0YWZcZlIvXGZCc2V0YWJcZlI7IHRoZSBYUEc0IGRyYWZ0IHNheXMgdGhhdCAiSWYgdGhlIHRlcm1pbmFsCi1zdXBwb3J0cyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgdG8gc2V0IGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQsIHRoZXkgc2hvdWxkCi1iZSBjb2RlZCBhcyBcZkJzZXRhZlxmUiBhbmQgXGZCc2V0YWJcZlIsIHJlc3BlY3RpdmVseS4KLUlmIHRoZSB0ZXJtaW5hbAotc3VwcG9ydHMgb3RoZXIgZXNjYXBlIHNlcXVlbmNlcyB0byBzZXQgYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZCwgdGhleSBzaG91bGQKLWJlIGNvZGVkIGFzIFxmQnNldGZcZlIgYW5kIFxmQnNldGJcZlIsIHJlc3BlY3RpdmVseS4KLVRoZSBcZkl2aWRwdXRzKClcZlIKLWZ1bmN0aW9uIGFuZCB0aGUgcmVmcmVzaCBmdW5jdGlvbnMgdXNlIFxmQnNldGFmXGZSIGFuZCBcZkJzZXRhYlxmUiBpZiB0aGV5IGFyZQotZGVmaW5lZC4iCi0uUFAKLVRoZSBcZkJzZXRhZlxmUi9cZkJzZXRhYlxmUiBhbmQgXGZCc2V0ZlxmUi9cZkJzZXRiXGZSIGNhcGFiaWxpdGllcyB0YWtlIGEKLXNpbmdsZSBudW1lcmljIGFyZ3VtZW50IGVhY2guCi1Bcmd1bWVudCB2YWx1ZXMgMC03IG9mIFxmQnNldGFmXGZSL1xmQnNldGFiXGZSIGFyZSBwb3J0YWJseSBkZWZpbmVkIGFzCi1mb2xsb3dzICh0aGUgbWlkZGxlIGNvbHVtbiBpcyB0aGUgc3ltYm9saWMgI2RlZmluZSBhdmFpbGFibGUgaW4gdGhlIGhlYWRlciBmb3IKLXRoZSBcZkJjdXJzZXNcZlIgb3IgXGZCbmN1cnNlc1xmUiBsaWJyYXJpZXMpLgotVGhlIHRlcm1pbmFsIGhhcmR3YXJlIGlzIGZyZWUgdG8KLW1hcCB0aGVzZSBhcyBpdCBsaWtlcywgYnV0IHRoZSBSR0IgdmFsdWVzIGluZGljYXRlIG5vcm1hbCBsb2NhdGlvbnMgaW4gY29sb3IKLXNwYWNlLgotLlBQCi0uVFMgSAotY2VudGVyOwotbCBjIGMgYwotbCBsIG4gbC4KLVxmQkNvbG9yCSNkZWZpbmUgCVZhbHVlCVJHQlxmUgotYmxhY2sJXGZCQ09MT1JfQkxBQ0tcZlIJMAkwLCAwLCAwCi1yZWQJXGZCQ09MT1JfUkVEXCBcZlIJMQltYXgsMCwwCi1ncmVlbglcZkJDT0xPUl9HUkVFTlxmUgkyCTAsbWF4LDAKLXllbGxvdwlcZkJDT0xPUl9ZRUxMT1dcZlIJMwltYXgsbWF4LDAKLWJsdWUJXGZCQ09MT1JfQkxVRVxmUgk0CTAsMCxtYXgKLW1hZ2VudGEJXGZCQ09MT1JfTUFHRU5UQVxmUgk1CW1heCwwLG1heAotY3lhbglcZkJDT0xPUl9DWUFOXGZSCTYJMCxtYXgsbWF4Ci13aGl0ZQlcZkJDT0xPUl9XSElURVxmUgk3CW1heCxtYXgsbWF4Ci0uVEUKLS5QUAotVGhlIGFyZ3VtZW50IHZhbHVlcyBvZiBcZkJzZXRmXGZSL1xmQnNldGJcZlIgaGlzdG9yaWNhbGx5IGNvcnJlc3BvbmQgdG8KLWEgZGlmZmVyZW50IG1hcHBpbmcsIGkuZS4sCi0uVFMgSAotY2VudGVyOwotbCBjIGMgYwotbCBsIG4gbC4KLVxmQkNvbG9yCSNkZWZpbmUgCVZhbHVlCVJHQlxmUgotYmxhY2sJXGZCQ09MT1JfQkxBQ0tcZlIJMAkwLCAwLCAwCi1ibHVlCVxmQkNPTE9SX0JMVUVcZlIJMQkwLDAsbWF4Ci1ncmVlbglcZkJDT0xPUl9HUkVFTlxmUgkyCTAsbWF4LDAKLWN5YW4JXGZCQ09MT1JfQ1lBTlxmUgkzCTAsbWF4LG1heAotcmVkCVxmQkNPTE9SX1JFRFwgXGZSCTQJbWF4LDAsMAotbWFnZW50YQlcZkJDT0xPUl9NQUdFTlRBXGZSCTUJbWF4LDAsbWF4Ci15ZWxsb3cJXGZCQ09MT1JfWUVMTE9XXGZSCTYJbWF4LG1heCwwCi13aGl0ZQlcZkJDT0xPUl9XSElURVxmUgk3CW1heCxtYXgsbWF4Ci0uVEUKLUl0IGlzIGltcG9ydGFudCB0byBub3QgY29uZnVzZSB0aGUgdHdvIHNldHMgb2YgY29sb3IgY2FwYWJpbGl0aWVzOwotb3RoZXJ3aXNlIHJlZC9ibHVlIHdpbGwgYmUgaW50ZXJjaGFuZ2VkIG9uIHRoZSBkaXNwbGF5LgotLlBQCi1PbiBhbiBIUC1saWtlIHRlcm1pbmFsLCB1c2UgXGZCc2NwXGZSIHdpdGggYSBjb2xvci1wYWlyIG51bWJlciBwYXJhbWV0ZXIgdG8gc2V0Ci13aGljaCBjb2xvciBwYWlyIGlzIGN1cnJlbnQuCi0uUFAKLU9uIGEgVGVrdHJvbml4LWxpa2UgdGVybWluYWwsIHRoZSBjYXBhYmlsaXR5IFxmQmNjY1xmUiBtYXkgYmUgcHJlc2VudCB0bwotaW5kaWNhdGUgdGhhdCBjb2xvcnMgY2FuIGJlIG1vZGlmaWVkLgotSWYgc28sIHRoZSBcZkJpbml0Y1xmUiBjYXBhYmlsaXR5IHdpbGwKLXRha2UgYSBjb2xvciBudW1iZXIgKDAgdG8gXGZCY29sb3JzXGZSIC0gMSlhbmQgdGhyZWUgbW9yZSBwYXJhbWV0ZXJzIHdoaWNoCi1kZXNjcmliZSB0aGUgY29sb3IuCi1UaGVzZSB0aHJlZSBwYXJhbWV0ZXJzIGRlZmF1bHQgdG8gYmVpbmcgaW50ZXJwcmV0ZWQgYXMgUkdCCi0oUmVkLCBHcmVlbiwgQmx1ZSkgdmFsdWVzLgotSWYgdGhlIGJvb2xlYW4gY2FwYWJpbGl0eSBcZkJobHNcZlIgaXMgcHJlc2VudCwKLXRoZXkgYXJlIGluc3RlYWQgYXMgSExTIChIdWUsIExpZ2h0bmVzcywgU2F0dXJhdGlvbikgaW5kaWNlcy4KLVRoZSByYW5nZXMgYXJlCi10ZXJtaW5hbC1kZXBlbmRlbnQuCi0uUFAKLU9uIGFuIEhQLWxpa2UgdGVybWluYWwsIFxmQmluaXRwXGZSIG1heSBnaXZlIGEgY2FwYWJpbGl0eSBmb3IgY2hhbmdpbmcgYQotY29sb3ItcGFpciB2YWx1ZS4KLUl0IHdpbGwgdGFrZSBzZXZlbiBwYXJhbWV0ZXJzOyBhIGNvbG9yLXBhaXIgbnVtYmVyICgwIHRvCi1cZkJtYXhfcGFpcnNcZlIgLSAxKSwgYW5kIHR3byB0cmlwbGVzIGRlc2NyaWJpbmcgZmlyc3QgYmFja2dyb3VuZCBhbmQgdGhlbgotZm9yZWdyb3VuZCBjb2xvcnMuCi1UaGVzZSBwYXJhbWV0ZXJzIG11c3QgYmUgKFJlZCwgR3JlZW4sIEJsdWUpIG9yCi0oSHVlLCBMaWdodG5lc3MsIFNhdHVyYXRpb24pIGRlcGVuZGluZyBvbiBcZkJobHNcZlIuCi0uUFAKLU9uIHNvbWUgY29sb3IgdGVybWluYWxzLCBjb2xvcnMgY29sbGlkZSB3aXRoIGhpZ2hsaWdodHMuCi1Zb3UgY2FuIHJlZ2lzdGVyCi10aGVzZSBjb2xsaXNpb25zIHdpdGggdGhlIFxmQm5jdlxmUiBjYXBhYmlsaXR5LgotVGhpcyBpcyBhIGJpdC1tYXNrIG9mCi1hdHRyaWJ1dGVzIG5vdCB0byBiZSB1c2VkIHdoZW4gY29sb3JzIGFyZSBlbmFibGVkLgotVGhlIGNvcnJlc3BvbmRlbmNlIHdpdGggdGhlCi1hdHRyaWJ1dGVzIHVuZGVyc3Rvb2QgYnkgXGZCY3Vyc2VzXGZSIGlzIGFzIGZvbGxvd3M6Ci0uUFAKLS5UUwotY2VudGVyOwotbCBjIGMKLWx3MjUgbHcyIGx3MTAuCi1cZkJBdHRyaWJ1dGUJQml0CURlY2ltYWxcZlIKLUFfU1RBTkRPVVQJMAkxCi1BX1VOREVSTElORQkxCTIKLUFfUkVWRVJTRQkyCTQKLUFfQkxJTksgICAJMwk4Ci1BX0RJTSAgICAgIAk0CTE2Ci1BX0JPTEQgICAgCTUJMzIKLUFfSU5WSVMgICAJNgk2NAotQV9QUk9URUNUCTcJMTI4Ci1BX0FMVENIQVJTRVQJOAkyNTYKLS5URQotLlBQCi1Gb3IgZXhhbXBsZSwgb24gbWFueSBJQk0gUEMgY29uc29sZXMsIHRoZSB1bmRlcmxpbmUgYXR0cmlidXRlIGNvbGxpZGVzIHdpdGggdGhlCi1mb3JlZ3JvdW5kIGNvbG9yIGJsdWUgYW5kIGlzIG5vdCBhdmFpbGFibGUgaW4gY29sb3IgbW9kZS4KLVRoZXNlIHNob3VsZCBoYXZlCi1hbiBcZkJuY3ZcZlIgY2FwYWJpbGl0eSBvZiAyLgotLlBQCi1TVnI0IGN1cnNlcyBkb2VzIG5vdGhpbmcgd2l0aCBcZkJuY3ZcZlIsIG5jdXJzZXMgcmVjb2duaXplcyBpdCBhbmQgb3B0aW1pemVzCi10aGUgb3V0cHV0IGluIGZhdm9yIG9mIGNvbG9ycy4KLS5QUAotLlNTIE1pc2NlbGxhbmVvdXMKLUlmIHRoZSB0ZXJtaW5hbCByZXF1aXJlcyBvdGhlciB0aGFuIGEgbnVsbCAoemVybykgY2hhcmFjdGVyIGFzIGEgcGFkLCB0aGVuIHRoaXMKLWNhbiBiZSBnaXZlbiBhcyBwYWQuCi1Pbmx5IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHBhZCBzdHJpbmcgaXMgdXNlZC4KLUlmIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCBoYXZlIGEgcGFkIGNoYXJhY3Rlciwgc3BlY2lmeSBucGMuCi1Ob3RlIHRoYXQgbmN1cnNlcyBpbXBsZW1lbnRzIHRoZSB0ZXJtY2FwLWNvbXBhdGlibGUgXGZCUENcZlIgdmFyaWFibGU7Ci10aG91Z2ggdGhlIGFwcGxpY2F0aW9uIG1heSBzZXQgdGhpcyB2YWx1ZSB0byBzb21ldGhpbmcgb3RoZXIgdGhhbgotYSBudWxsLCBuY3Vyc2VzIHdpbGwgdGVzdCBcZkJucGNcZlIgZmlyc3QgYW5kIHVzZSBuYXBtcyBpZiB0aGUgdGVybWluYWwKLWhhcyBubyBwYWQgY2hhcmFjdGVyLgotLlBQCi1JZiB0aGUgdGVybWluYWwgY2FuIG1vdmUgdXAgb3IgZG93biBoYWxmIGEgbGluZSwKLXRoaXMgY2FuIGJlIGluZGljYXRlZCB3aXRoCi0uQiBodQotKGhhbGYtbGluZSB1cCkKLWFuZAotLkIgaGQKLShoYWxmLWxpbmUgZG93bikuCi1UaGlzIGlzIHByaW1hcmlseSB1c2VmdWwgZm9yIHN1cGVyc2NyaXB0cyBhbmQgc3Vic2NyaXB0cyBvbiBoYXJkLWNvcHkgdGVybWluYWxzLgotSWYgYSBoYXJkLWNvcHkgdGVybWluYWwgY2FuIGVqZWN0IHRvIHRoZSBuZXh0IHBhZ2UgKGZvcm0gZmVlZCksIGdpdmUgdGhpcyBhcwotLkIgZmYKLSh1c3VhbGx5IGNvbnRyb2wgTCkuCi0uUFAKLUlmIHRoZXJlIGlzIGEgY29tbWFuZCB0byByZXBlYXQgYSBnaXZlbiBjaGFyYWN0ZXIgYSBnaXZlbiBudW1iZXIgb2YKLXRpbWVzICh0byBzYXZlIHRpbWUgdHJhbnNtaXR0aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGlkZW50aWNhbCBjaGFyYWN0ZXJzKQotdGhpcyBjYW4gYmUgaW5kaWNhdGVkIHdpdGggdGhlIHBhcmFtZXRlcml6ZWQgc3RyaW5nCi0uQlIgcmVwIC4KLVRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIGNoYXJhY3RlciB0byBiZSByZXBlYXRlZCBhbmQgdGhlIHNlY29uZAotaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgaXQuCi1UaHVzLCB0cGFybShyZXBlYXRfY2hhciwgJ3gnLCAxMCkgaXMgdGhlIHNhbWUgYXMgYHh4eHh4eHh4eHgnLgotLlBQCi1JZiB0aGUgdGVybWluYWwgaGFzIGEgc2V0dGFibGUgY29tbWFuZCBjaGFyYWN0ZXIsIHN1Y2ggYXMgdGhlIFxzLTFURUtUUk9OSVhccysxIDQwMjUsCi10aGlzIGNhbiBiZSBpbmRpY2F0ZWQgd2l0aAotLkJSIGNtZGNoIC4KLUEgcHJvdG90eXBlIGNvbW1hbmQgY2hhcmFjdGVyIGlzIGNob3NlbiB3aGljaCBpcyB1c2VkIGluIGFsbCBjYXBhYmlsaXRpZXMuCi1UaGlzIGNoYXJhY3RlciBpcyBnaXZlbiBpbiB0aGUKLS5CIGNtZGNoCi1jYXBhYmlsaXR5IHRvIGlkZW50aWZ5IGl0LgotVGhlIGZvbGxvd2luZyBjb252ZW50aW9uIGlzIHN1cHBvcnRlZCBvbiBzb21lIFVOSVggc3lzdGVtczoKLVRoZSBlbnZpcm9ubWVudCBpcyB0byBiZSBzZWFyY2hlZCBmb3IgYQotLkIgQ0MKLXZhcmlhYmxlLCBhbmQgaWYgZm91bmQsIGFsbAotb2NjdXJyZW5jZXMgb2YgdGhlIHByb3RvdHlwZSBjaGFyYWN0ZXIgYXJlIHJlcGxhY2VkIHdpdGggdGhlIGNoYXJhY3RlcgotaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgotLlBQCi1UZXJtaW5hbCBkZXNjcmlwdGlvbnMgdGhhdCBkbyBub3QgcmVwcmVzZW50IGEgc3BlY2lmaWMga2luZCBvZiBrbm93bgotdGVybWluYWwsIHN1Y2ggYXMKLS5JUiBzd2l0Y2ggLAotLklSIGRpYWx1cCAsCi0uSVIgcGF0Y2ggLAotYW5kCi0uSVIgbmV0d29yayAsCi1zaG91bGQgaW5jbHVkZSB0aGUKLS5CIGduCi0oZ2VuZXJpYykgY2FwYWJpbGl0eSBzbyB0aGF0IHByb2dyYW1zIGNhbiBjb21wbGFpbiB0aGF0IHRoZXkgZG8gbm90IGtub3cKLWhvdyB0byB0YWxrIHRvIHRoZSB0ZXJtaW5hbC4KLShUaGlzIGNhcGFiaWxpdHkgZG9lcyBub3QgYXBwbHkgdG8KLS5JIHZpcnR1YWwKLXRlcm1pbmFsIGRlc2NyaXB0aW9ucyBmb3Igd2hpY2ggdGhlIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGtub3duLikKLS5QUAotSWYgdGhlIHRlcm1pbmFsIGhhcyBhIGBgbWV0YSBrZXknJyB3aGljaCBhY3RzIGFzIGEgc2hpZnQga2V5LAotc2V0dGluZyB0aGUgOHRoIGJpdCBvZiBhbnkgY2hhcmFjdGVyIHRyYW5zbWl0dGVkLCB0aGlzIGZhY3QgY2FuCi1iZSBpbmRpY2F0ZWQgd2l0aAotLkJSIGttIC4KLU90aGVyd2lzZSwgc29mdHdhcmUgd2lsbCBhc3N1bWUgdGhhdCB0aGUgOHRoIGJpdCBpcyBwYXJpdHkgYW5kIGl0Ci13aWxsIHVzdWFsbHkgYmUgY2xlYXJlZC4KLUlmIHN0cmluZ3MgZXhpc3QgdG8gdHVybiB0aGlzIGBgbWV0YSBtb2RlJycgb24gYW5kIG9mZiwgdGhleQotY2FuIGJlIGdpdmVuIGFzCi0uQiBzbW0KLWFuZAotLkJSIHJtbSAuCi0uUFAKLUlmIHRoZSB0ZXJtaW5hbCBoYXMgbW9yZSBsaW5lcyBvZiBtZW1vcnkgdGhhbiB3aWxsIGZpdCBvbiB0aGUgc2NyZWVuCi1hdCBvbmNlLCB0aGUgbnVtYmVyIG9mIGxpbmVzIG9mIG1lbW9yeSBjYW4gYmUgaW5kaWNhdGVkIHdpdGgKLS5CUiBsbSAuCi1BIHZhbHVlIG9mCi0uQlIgbG0gIzAKLWluZGljYXRlcyB0aGF0IHRoZSBudW1iZXIgb2YgbGluZXMgaXMgbm90IGZpeGVkLAotYnV0IHRoYXQgdGhlcmUgaXMgc3RpbGwgbW9yZSBtZW1vcnkgdGhhbiBmaXRzIG9uIHRoZSBzY3JlZW4uCi0uUFAKLUlmIHRoZSB0ZXJtaW5hbCBpcyBvbmUgb2YgdGhvc2Ugc3VwcG9ydGVkIGJ5IHRoZSBccy0xVU5JWFxzKzEgdmlydHVhbAotdGVybWluYWwgcHJvdG9jb2wsIHRoZSB0ZXJtaW5hbCBudW1iZXIgY2FuIGJlIGdpdmVuIGFzCi0uQlIgdnQgLgotLlBQCi1NZWRpYSBjb3B5Ci1zdHJpbmdzIHdoaWNoIGNvbnRyb2wgYW4gYXV4aWxpYXJ5IHByaW50ZXIgY29ubmVjdGVkIHRvIHRoZSB0ZXJtaW5hbAotY2FuIGJlIGdpdmVuIGFzCi0uQlIgbWMwIDoKLXByaW50IHRoZSBjb250ZW50cyBvZiB0aGUgc2NyZWVuLAotLkJSIG1jNCA6Ci10dXJuIG9mZiB0aGUgcHJpbnRlciwgYW5kCi0uQlIgbWM1IDoKLXR1cm4gb24gdGhlIHByaW50ZXIuCi1XaGVuIHRoZSBwcmludGVyIGlzIG9uLCBhbGwgdGV4dCBzZW50IHRvIHRoZSB0ZXJtaW5hbCB3aWxsIGJlIHNlbnQKLXRvIHRoZSBwcmludGVyLgotSXQgaXMgdW5kZWZpbmVkIHdoZXRoZXIgdGhlIHRleHQgaXMgYWxzbyBkaXNwbGF5ZWQgb24gdGhlIHRlcm1pbmFsIHNjcmVlbgotd2hlbiB0aGUgcHJpbnRlciBpcyBvbi4KLUEgdmFyaWF0aW9uCi0uQiBtYzVwCi10YWtlcyBvbmUgcGFyYW1ldGVyLCBhbmQgbGVhdmVzIHRoZSBwcmludGVyIG9uIGZvciBhcyBtYW55IGNoYXJhY3RlcnMKLWFzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLCB0aGVuIHR1cm5zIHRoZSBwcmludGVyIG9mZi4KLVRoZSBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBleGNlZWQgMjU1LgotQWxsIHRleHQsIGluY2x1ZGluZwotLkJSIG1jNCAsCi1pcyB0cmFuc3BhcmVudGx5IHBhc3NlZCB0byB0aGUgcHJpbnRlciB3aGlsZSBhbgotLkIgbWM1cAotaXMgaW4gZWZmZWN0LgotLlBQCi0uU1MgR2xpdGNoZXMgYW5kIEJyYWluZGFtYWdlCi0uUFAKLUhhemVsdGluZSB0ZXJtaW5hbHMsIHdoaWNoIGRvIG5vdCBhbGxvdyBgficgY2hhcmFjdGVycyB0byBiZSBkaXNwbGF5ZWQgc2hvdWxkCi1pbmRpY2F0ZSBcZkJoelxmUi4KLS5QUAotVGVybWluYWxzIHdoaWNoIGlnbm9yZSBhIGxpbmUtZmVlZCBpbW1lZGlhdGVseSBhZnRlciBhbiBcZkJhbVxmUiB3cmFwLAotc3VjaCBhcyB0aGUgQ29uY2VwdCBhbmQgdnQxMDAsCi1zaG91bGQgaW5kaWNhdGUgXGZCeGVubFxmUi4KLS5QUAotSWYKLS5CIGVsCi1pcyByZXF1aXJlZCB0byBnZXQgcmlkIG9mIHN0YW5kb3V0Ci0oaW5zdGVhZCBvZiBtZXJlbHkgd3JpdGluZyBub3JtYWwgdGV4dCBvbiB0b3Agb2YgaXQpLAotXGZCeGhwXGZQIHNob3VsZCBiZSBnaXZlbi4KLS5QUAotVGVsZXJheSB0ZXJtaW5hbHMsIHdoZXJlIHRhYnMgdHVybiBhbGwgY2hhcmFjdGVycyBtb3ZlZCBvdmVyIHRvIGJsYW5rcywKLXNob3VsZCBpbmRpY2F0ZSBcZkJ4dFxmUiAoZGVzdHJ1Y3RpdmUgdGFicykuCi1Ob3RlOiB0aGUgdmFyaWFibGUgaW5kaWNhdGluZyB0aGlzIGlzIG5vdyBgZGVzdF90YWJzX21hZ2ljX3Ntc28nOyBpbgotb2xkZXIgdmVyc2lvbnMsIGl0IHdhcyB0ZWxlcmF5X2dsaXRjaC4KLVRoaXMgZ2xpdGNoIGlzIGFsc28gdGFrZW4gdG8gbWVhbiB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBwb3NpdGlvbgotdGhlIGN1cnNvciBvbiB0b3Agb2YgYSBgYG1hZ2ljIGNvb2tpZScnLAotdGhhdCB0byBlcmFzZSBzdGFuZG91dCBtb2RlIGl0IGlzIGluc3RlYWQgbmVjZXNzYXJ5IHRvIHVzZQotZGVsZXRlIGFuZCBpbnNlcnQgbGluZS4KLVRoZSBuY3Vyc2VzIGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhpcyBnbGl0Y2guCi0uUFAKLVRoZSBCZWVoaXZlIFN1cGVyYmVlLCB3aGljaCBpcyB1bmFibGUgdG8gY29ycmVjdGx5IHRyYW5zbWl0IHRoZSBlc2NhcGUKLW9yIGNvbnRyb2wgQyBjaGFyYWN0ZXJzLCBoYXMKLS5CUiB4c2IgLAotaW5kaWNhdGluZyB0aGF0IHRoZSBmMSBrZXkgaXMgdXNlZCBmb3IgZXNjYXBlIGFuZCBmMiBmb3IgY29udHJvbCBDLgotKE9ubHkgY2VydGFpbiBTdXBlcmJlZXMgaGF2ZSB0aGlzIHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgUk9NLikKLU5vdGUgdGhhdCBpbiBvbGRlciB0ZXJtaW5mbyB2ZXJzaW9ucywgdGhpcyBjYXBhYmlsaXR5IHdhcyBjYWxsZWQKLWBiZWVoaXZlX2dsaXRjaCc7IGl0IGlzIG5vdyBgbm9fZXNjX2N0bF9jJy4KLS5QUAotT3RoZXIgc3BlY2lmaWMgdGVybWluYWwgcHJvYmxlbXMgbWF5IGJlIGNvcnJlY3RlZCBieSBhZGRpbmcgbW9yZQotY2FwYWJpbGl0aWVzIG9mIHRoZSBmb3JtIFxmQnhcZlJcZkl4XGZSLgotLlBQCi0uU1MgU2ltaWxhciBUZXJtaW5hbHMKLS5QUAotSWYgdGhlcmUgYXJlIHR3byB2ZXJ5IHNpbWlsYXIgdGVybWluYWxzLCBvbmUgKHRoZSB2YXJpYW50KSBjYW4gYmUgZGVmaW5lZCBhcwotYmVpbmcganVzdCBsaWtlIHRoZSBvdGhlciAodGhlIGJhc2UpIHdpdGggY2VydGFpbiBleGNlcHRpb25zLgotSW4gdGhlCi1kZWZpbml0aW9uIG9mIHRoZSB2YXJpYW50LCB0aGUgc3RyaW5nIGNhcGFiaWxpdHkgXGZCdXNlXGZSIGNhbiBiZSBnaXZlbiB3aXRoCi10aGUgbmFtZSBvZiB0aGUgYmFzZSB0ZXJtaW5hbC4KLVRoZSBjYXBhYmlsaXRpZXMgZ2l2ZW4gYmVmb3JlCi0uQiB1c2UKLW92ZXJyaWRlIHRob3NlIGluIHRoZSBiYXNlIHR5cGUgbmFtZWQgYnkKLS5CUiB1c2UgLgotSWYgdGhlcmUgYXJlIG11bHRpcGxlIFxmQnVzZVxmUiBjYXBhYmlsaXRpZXMsIHRoZXkgYXJlIG1lcmdlZCBpbiByZXZlcnNlIG9yZGVyLgotVGhhdCBpcywgdGhlIHJpZ2h0bW9zdCBcZkJ1c2VcZlIgcmVmZXJlbmNlIGlzIHByb2Nlc3NlZCBmaXJzdCwgdGhlbiB0aGUgb25lIHRvCi1pdHMgbGVmdCwgYW5kIHNvIGZvcnRoLgotQ2FwYWJpbGl0aWVzIGdpdmVuIGV4cGxpY2l0bHkgaW4gdGhlIGVudHJ5IG92ZXJyaWRlCi10aG9zZSBicm91Z2h0IGluIGJ5IFxmQnVzZVxmUiByZWZlcmVuY2VzLgotLlBQCi1BIGNhcGFiaWxpdHkgY2FuIGJlIGNhbmNlbGVkIGJ5IHBsYWNpbmcgXGZCeHhAXGZSIHRvIHRoZSBsZWZ0IG9mIHRoZQotdXNlIHJlZmVyZW5jZSB0aGF0IGltcG9ydHMgaXQsIHdoZXJlIFxmSXh4XGZQIGlzIHRoZSBjYXBhYmlsaXR5LgotRm9yIGV4YW1wbGUsIHRoZSBlbnRyeQotLlBQCi0JMjYyMS1ubCwgc21reEAsIHJta3hALCB1c2U9MjYyMSwKLS5QUAotZGVmaW5lcyBhIDI2MjEtbmwgdGhhdCBkb2VzIG5vdCBoYXZlIHRoZSBcZkJzbWt4XGZSIG9yIFxmQnJta3hcZlIgY2FwYWJpbGl0aWVzLAotYW5kIGhlbmNlIGRvZXMgbm90IHR1cm4gb24gdGhlIGZ1bmN0aW9uIGtleSBsYWJlbHMgd2hlbiBpbiB2aXN1YWwgbW9kZS4KLVRoaXMgaXMgdXNlZnVsIGZvciBkaWZmZXJlbnQgbW9kZXMgZm9yIGEgdGVybWluYWwsIG9yIGZvciBkaWZmZXJlbnQKLXVzZXIgcHJlZmVyZW5jZXMuCi0uUFAKLS5TUyBQaXRmYWxscyBvZiBMb25nIEVudHJpZXMKLS5QUAotTG9uZyB0ZXJtaW5mbyBlbnRyaWVzIGFyZSB1bmxpa2VseSB0byBiZSBhIHByb2JsZW07IHRvIGRhdGUsIG5vIGVudHJ5IGhhcyBldmVuCi1hcHByb2FjaGVkIHRlcm1pbmZvJ3MgNDA5Ni1ieXRlIHN0cmluZy10YWJsZSBtYXhpbXVtLgotVW5mb3J0dW5hdGVseSwgdGhlIHRlcm1jYXAKLXRyYW5zbGF0aW9ucyBhcmUgbXVjaCBtb3JlIHN0cmljdGx5IGxpbWl0ZWQgKHRvIDEwMjMgYnl0ZXMpLCB0aHVzIHRlcm1jYXAgdHJhbnNsYXRpb25zCi1vZiBsb25nIHRlcm1pbmZvIGVudHJpZXMgY2FuIGNhdXNlIHByb2JsZW1zLgotLlBQCi1UaGUgbWFuIHBhZ2VzIGZvciA0LjNCU0QgYW5kIG9sZGVyIHZlcnNpb25zIG9mIFxmQnRnZXRlbnQoKVxmUCBpbnN0cnVjdCB0aGUgdXNlciB0bwotYWxsb2NhdGUgYSAxMDI0LWJ5dGUgYnVmZmVyIGZvciB0aGUgdGVybWNhcCBlbnRyeS4KLVRoZSBlbnRyeSBnZXRzIG51bGwtdGVybWluYXRlZCBieQotdGhlIHRlcm1jYXAgbGlicmFyeSwgc28gdGhhdCBtYWtlcyB0aGUgbWF4aW11bSBzYWZlIGxlbmd0aCBmb3IgYSB0ZXJtY2FwIGVudHJ5Ci0xay0xICgxMDIzKSBieXRlcy4KLURlcGVuZGluZyBvbiB3aGF0IHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIHRlcm1jYXAgbGlicmFyeQotYmVpbmcgdXNlZCBkb2VzLCBhbmQgd2hlcmUgaW4gdGhlIHRlcm1jYXAgZmlsZSB0aGUgdGVybWluYWwgdHlwZSB0aGF0IFxmQnRnZXRlbnQoKVxmUAotaXMgc2VhcmNoaW5nIGZvciBpcywgc2V2ZXJhbCBiYWQgdGhpbmdzIGNhbiBoYXBwZW4uCi0uUFAKLVNvbWUgdGVybWNhcCBsaWJyYXJpZXMgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2Ugb3IgZXhpdCBpZiB0aGV5IGZpbmQgYW4KLWVudHJ5IHRoYXQncyBsb25nZXIgdGhhbiAxMDIzIGJ5dGVzOyBvdGhlcnMgZG8gbm90OyBvdGhlcnMgdHJ1bmNhdGUgdGhlCi1lbnRyaWVzIHRvIDEwMjMgYnl0ZXMuCi1Tb21lIGFwcGxpY2F0aW9uIHByb2dyYW1zIGFsbG9jYXRlIG1vcmUgdGhhbgotdGhlIHJlY29tbWVuZGVkIDFLIGZvciB0aGUgdGVybWNhcCBlbnRyeTsgb3RoZXJzIGRvIG5vdC4KLS5QUAotRWFjaCB0ZXJtY2FwIGVudHJ5IGhhcyB0d28gaW1wb3J0YW50IHNpemVzIGFzc29jaWF0ZWQgd2l0aCBpdDogYmVmb3JlCi0idGMiIGV4cGFuc2lvbiwgYW5kIGFmdGVyICJ0YyIgZXhwYW5zaW9uLgotInRjIiBpcyB0aGUgY2FwYWJpbGl0eSB0aGF0Ci10YWNrcyBvbiBhbm90aGVyIHRlcm1jYXAgZW50cnkgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBvbmUsIHRvIGFkZAotb24gaXRzIGNhcGFiaWxpdGllcy4KLUlmIGEgdGVybWNhcCBlbnRyeSBkb2VzIG5vdCB1c2UgdGhlICJ0YyIKLWNhcGFiaWxpdHksIHRoZW4gb2YgY291cnNlIHRoZSB0d28gbGVuZ3RocyBhcmUgdGhlIHNhbWUuCi0uUFAKLVRoZSAiYmVmb3JlIHRjIGV4cGFuc2lvbiIgbGVuZ3RoIGlzIHRoZSBtb3N0IGltcG9ydGFudCBvbmUsIGJlY2F1c2UgaXQKLWFmZmVjdHMgbW9yZSB0aGFuIGp1c3QgdXNlcnMgb2YgdGhhdCBwYXJ0aWN1bGFyIHRlcm1pbmFsLgotVGhpcyBpcyB0aGUKLWxlbmd0aCBvZiB0aGUgZW50cnkgYXMgaXQgZXhpc3RzIGluIC9ldGMvdGVybWNhcCwgbWludXMgdGhlCi1iYWNrc2xhc2gtbmV3bGluZSBwYWlycywgd2hpY2ggXGZCdGdldGVudCgpXGZQIHN0cmlwcyBvdXQgd2hpbGUgcmVhZGluZyBpdC4KLVNvbWUgdGVybWNhcCBsaWJyYXJpZXMgc3RyaXAgb2ZmIHRoZSBmaW5hbCBuZXdsaW5lLCB0b28gKEdOVSB0ZXJtY2FwIGRvZXMgbm90KS4KLU5vdyBzdXBwb3NlOgotLlRQIDUKLSoKLWEgdGVybWNhcCBlbnRyeSBiZWZvcmUgZXhwYW5zaW9uIGlzIG1vcmUgdGhhbiAxMDIzIGJ5dGVzIGxvbmcsCi0uVFAgNQotKgotYW5kIHRoZSBhcHBsaWNhdGlvbiBoYXMgb25seSBhbGxvY2F0ZWQgYSAxayBidWZmZXIsCi0uVFAgNQotKgotYW5kIHRoZSB0ZXJtY2FwIGxpYnJhcnkgKGxpa2UgdGhlIG9uZSBpbiBCU0QvT1MgMS4xIGFuZCBHTlUpIHJlYWRzCi10aGUgd2hvbGUgZW50cnkgaW50byB0aGUgYnVmZmVyLCBubyBtYXR0ZXIgd2hhdCBpdHMgbGVuZ3RoLCB0byBzZWUKLWlmIGl0IGlzIHRoZSBlbnRyeSBpdCB3YW50cywKLS5UUCA1Ci0qCi1hbmQgXGZCdGdldGVudCgpXGZQIGlzIHNlYXJjaGluZyBmb3IgYSB0ZXJtaW5hbCB0eXBlIHRoYXQgZWl0aGVyIGlzIHRoZQotbG9uZyBlbnRyeSwgYXBwZWFycyBpbiB0aGUgdGVybWNhcCBmaWxlIGFmdGVyIHRoZSBsb25nIGVudHJ5LCBvcgotZG9lcyBub3QgYXBwZWFyIGluIHRoZSBmaWxlIGF0IGFsbCAoc28gdGhhdCBcZkJ0Z2V0ZW50KClcZlAgaGFzIHRvIHNlYXJjaAotdGhlIHdob2xlIHRlcm1jYXAgZmlsZSkuCi0uUFAKLVRoZW4gXGZCdGdldGVudCgpXGZQIHdpbGwgb3ZlcndyaXRlIG1lbW9yeSwgcGVyaGFwcyBpdHMgc3RhY2ssIGFuZCBwcm9iYWJseSBjb3JlIGR1bXAKLXRoZSBwcm9ncmFtLgotUHJvZ3JhbXMgbGlrZSB0ZWxuZXQgYXJlIHBhcnRpY3VsYXJseSB2dWxuZXJhYmxlOyBtb2Rlcm4gdGVsbmV0cwotcGFzcyBhbG9uZyB2YWx1ZXMgbGlrZSB0aGUgdGVybWluYWwgdHlwZSBhdXRvbWF0aWNhbGx5LgotVGhlIHJlc3VsdHMgYXJlIGFsbW9zdAotYXMgdW5kZXNpcmFibGUgd2l0aCBhIHRlcm1jYXAgbGlicmFyeSwgbGlrZSBTdW5PUyA0LjEuMyBhbmQgVWx0cml4IDQuNCwgdGhhdAotcHJpbnRzIHdhcm5pbmcgbWVzc2FnZXMgd2hlbiBpdCByZWFkcyBhbiBvdmVybHkgbG9uZyB0ZXJtY2FwIGVudHJ5LgotSWYgYQotdGVybWNhcCBsaWJyYXJ5IHRydW5jYXRlcyBsb25nIGVudHJpZXMsIGxpa2UgT1NGLzEgMy4wLCBpdCBpcyBpbW11bmUgdG8gZHlpbmcKLWhlcmUgYnV0IHdpbGwgcmV0dXJuIGluY29ycmVjdCBkYXRhIGZvciB0aGUgdGVybWluYWwuCi0uUFAKLVRoZSAiYWZ0ZXIgdGMgZXhwYW5zaW9uIiBsZW5ndGggd2lsbCBoYXZlIGEgc2ltaWxhciBlZmZlY3QgdG8gdGhlCi1hYm92ZSwgYnV0IG9ubHkgZm9yIHBlb3BsZSB3aG8gYWN0dWFsbHkgc2V0IFRFUk0gdG8gdGhhdCB0ZXJtaW5hbAotdHlwZSwgc2luY2UgXGZCdGdldGVudCgpXGZQIG9ubHkgZG9lcyAidGMiIGV4cGFuc2lvbiBvbmNlIGl0IGlzIGZvdW5kIHRoZQotdGVybWluYWwgdHlwZSBpdCB3YXMgbG9va2luZyBmb3IsIG5vdCB3aGlsZSBzZWFyY2hpbmcuCi0uUFAKLUluIHN1bW1hcnksIGEgdGVybWNhcCBlbnRyeSB0aGF0IGlzIGxvbmdlciB0aGFuIDEwMjMgYnl0ZXMgY2FuIGNhdXNlLAotb24gdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgdGVybWNhcCBsaWJyYXJpZXMgYW5kIGFwcGxpY2F0aW9ucywgYSBjb3JlCi1kdW1wLCB3YXJuaW5ncywgb3IgaW5jb3JyZWN0IG9wZXJhdGlvbi4KLUlmIGl0IGlzIHRvbyBsb25nIGV2ZW4gYmVmb3JlCi0idGMiIGV4cGFuc2lvbiwgaXQgd2lsbCBoYXZlIHRoaXMgZWZmZWN0IGV2ZW4gZm9yIHVzZXJzIG9mIHNvbWUgb3RoZXIKLXRlcm1pbmFsIHR5cGVzIGFuZCB1c2VycyB3aG9zZSBURVJNIHZhcmlhYmxlIGRvZXMgbm90IGhhdmUgYSB0ZXJtY2FwCi1lbnRyeS4KLS5QUAotV2hlbiBpbiAtQyAodHJhbnNsYXRlIHRvIHRlcm1jYXApIG1vZGUsIHRoZSBcZkJuY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9uIG9mCi1cZkJAVElDQFxmUigxTSkgaXNzdWVzIHdhcm5pbmcgbWVzc2FnZXMgd2hlbiB0aGUgcHJlLXRjIGxlbmd0aCBvZiBhIHRlcm1jYXAKLXRyYW5zbGF0aW9uIGlzIHRvbyBsb25nLgotVGhlIC1jIChjaGVjaykgb3B0aW9uIGFsc28gY2hlY2tzIHJlc29sdmVkIChhZnRlciB0YwotZXhwYW5zaW9uKSBsZW5ndGhzLgotLlNTIEJpbmFyeSBDb21wYXRpYmlsaXR5Ci1JdCBpcyBub3Qgd2lzZSB0byBjb3VudCBvbiBwb3J0YWJpbGl0eSBvZiBiaW5hcnkgdGVybWluZm8gZW50cmllcyBiZXR3ZWVuCi1jb21tZXJjaWFsIFVOSVggdmVyc2lvbnMuCi1UaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gdmVyc2lvbnMKLW9mIHRlcm1pbmZvICh1bmRlciBIUC1VWCBhbmQgQUlYKSB3aGljaCBkaXZlcmdlZCBmcm9tIFN5c3RlbSBWIHRlcm1pbmZvIGFmdGVyCi1TVnIxLCBhbmQgaGF2ZSBhZGRlZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzIHRvIHRoZSBzdHJpbmcgdGFibGUgdGhhdCAoaW4gdGhlCi1iaW5hcnkgZm9ybWF0KSBjb2xsaWRlIHdpdGggU3lzdGVtIFYgYW5kIFhTSSBDdXJzZXMgZXh0ZW5zaW9ucy4KLS5TSCBFWFRFTlNJT05TCi1Tb21lIFNWcjQgXGZCY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9ucywgYW5kIGFsbCBwcmV2aW91cyB0byBTVnI0LCBkbyBub3QKLWludGVycHJldCB0aGUgJUEgYW5kICVPIG9wZXJhdG9ycyBpbiBwYXJhbWV0ZXIgc3RyaW5ncy4KLS5QUAotU1ZyNC9YUEc0IGRvIG5vdCBzcGVjaWZ5IHdoZXRoZXIgXGZCbXNnclxmUiBsaWNlbnNlcyBtb3ZlbWVudCB3aGlsZSBpbgotYW4gYWx0ZXJuYXRlLWNoYXJhY3Rlci1zZXQgbW9kZSAoc3VjaCBtb2RlcyBtYXksIGFtb25nIG90aGVyIHRoaW5ncywgbWFwCi1DUiBhbmQgTkwgdG8gY2hhcmFjdGVycyB0aGF0IGRvIG5vdCB0cmlnZ2VyIGxvY2FsIG1vdGlvbnMpLgotVGhlIFxmQm5jdXJzZXNcZlIgaW1wbGVtZW50YXRpb24gaWdub3JlcyBcZkJtc2dyXGZSIGluIFxmQkFMVENIQVJTRVRcZlIKLW1vZGUuCi1UaGlzIHJhaXNlcyB0aGUgcG9zc2liaWxpdHkgdGhhdCBhbiBYUEc0Ci1pbXBsZW1lbnRhdGlvbiBtYWtpbmcgdGhlIG9wcG9zaXRlIGludGVycHJldGF0aW9uIG1heSBuZWVkIHRlcm1pbmZvCi1lbnRyaWVzIG1hZGUgZm9yIFxmQm5jdXJzZXNcZlIgdG8gaGF2ZSBcZkJtc2dyXGZSIHR1cm5lZCBvZmYuCi0uUFAKLVRoZSBcZkJuY3Vyc2VzXGZSIGxpYnJhcnkgaGFuZGxlcyBpbnNlcnQtY2hhcmFjdGVyIGFuZCBpbnNlcnQtY2hhcmFjdGVyIG1vZGVzCi1pbiBhIHNsaWdodGx5IG5vbi1zdGFuZGFyZCB3YXkgdG8gZ2V0IGJldHRlciB1cGRhdGUgZWZmaWNpZW5jeS4KLVNlZQotdGhlIFxmQkluc2VydC9EZWxldGUgQ2hhcmFjdGVyXGZSIHN1YnNlY3Rpb24gYWJvdmUuCi0uUFAKLVRoZSBwYXJhbWV0ZXIgc3Vic3RpdHV0aW9ucyBmb3IgXGZCc2V0X2Nsb2NrXGZSIGFuZCBcZkJkaXNwbGF5X2Nsb2NrXGZSIGFyZQotbm90IGRvY3VtZW50ZWQgaW4gU1ZyNCBvciB0aGUgWFNJIEN1cnNlcyBzdGFuZGFyZC4KLVRoZXkgYXJlIGRlZHVjZWQgZnJvbSB0aGUKLWRvY3VtZW50YXRpb24gZm9yIHRoZSBBVCZUIDUwNSB0ZXJtaW5hbC4KLS5QUAotQmUgY2FyZWZ1bCBhc3NpZ25pbmcgdGhlIFxmQmttb3VzXGZSIGNhcGFiaWxpdHkuCi1UaGUgXGZCbmN1cnNlc1xmUiB3YW50cyB0bwotaW50ZXJwcmV0IGl0IGFzIFxmQktFWV9NT1VTRVxmUiwgZm9yIHVzZSBieSB0ZXJtaW5hbHMgYW5kIGVtdWxhdG9ycyBsaWtlIHh0ZXJtCi10aGF0IGNhbiByZXR1cm4gbW91c2UtdHJhY2tpbmcgaW5mb3JtYXRpb24gaW4gdGhlIGtleWJvYXJkLWlucHV0IHN0cmVhbS4KLS5QUAotRGlmZmVyZW50IGNvbW1lcmNpYWwgcG9ydHMgb2YgdGVybWluZm8gYW5kIGN1cnNlcyBzdXBwb3J0IGRpZmZlcmVudCBzdWJzZXRzIG9mCi10aGUgWFNJIEN1cnNlcyBzdGFuZGFyZCBhbmQgKGluIHNvbWUgY2FzZXMpIGRpZmZlcmVudCBleHRlbnNpb24gc2V0cy4KLUhlcmUKLWlzIGEgc3VtbWFyeSwgYWNjdXJhdGUgYXMgb2YgT2N0b2JlciAxOTk1OgotLlBQCi1cZkJTVlI0LCBTb2xhcmlzLCBuY3Vyc2VzXGZSIC0tCi1UaGVzZSBzdXBwb3J0IGFsbCBTVnI0IGNhcGFiaWxpdGllcy4KLS5QUAotXGZCU0dJXGZSIC0tCi1TdXBwb3J0cyB0aGUgU1ZyNCBzZXQsIGFkZHMgb25lIHVuZG9jdW1lbnRlZCBleHRlbmRlZCBzdHJpbmcKLWNhcGFiaWxpdHkgKFxmQnNldF9wZ2xlblxmUikuCi0uUFAKLVxmQlNWcjEsIFVsdHJpeFxmUiAtLQotVGhlc2Ugc3VwcG9ydCBhIHJlc3RyaWN0ZWQgc3Vic2V0IG9mIHRlcm1pbmZvIGNhcGFiaWxpdGllcy4KLVRoZSBib29sZWFucwotZW5kIHdpdGggXGZCeG9uX3hvZmZcZlI7IHRoZSBudW1lcmljcyB3aXRoIFxmQndpZHRoX3N0YXR1c19saW5lXGZSOyBhbmQgdGhlCi1zdHJpbmdzIHdpdGggXGZCcHJ0cl9ub25cZlIuCi0uUFAKLVxmQkhQL1VYXGZSIC0tCi1TdXBwb3J0cyB0aGUgU1ZyMSBzdWJzZXQsIHBsdXMgdGhlIFNWclsyMzRdIG51bWVyaWNzIFxmQm51bV9sYWJlbHNcZlIsCi1cZkJsYWJlbF9oZWlnaHRcZlIsIFxmQmxhYmVsX3dpZHRoXGZSLCBwbHVzIGZ1bmN0aW9uIGtleXMgMTEgdGhyb3VnaCA2MywgcGx1cwotXGZCcGxhYl9ub3JtXGZSLCBcZkJsYWJlbF9vblxmUiwgYW5kIFxmQmxhYmVsX29mZlxmUiwgcGx1cyBzb21lIGluY29tcGF0aWJsZQotZXh0ZW5zaW9ucyBpbiB0aGUgc3RyaW5nIHRhYmxlLgotLlBQCi1cZkJBSVhcZlIgLS0KLVN1cHBvcnRzIHRoZSBTVnIxIHN1YnNldCwgcGx1cyBmdW5jdGlvbiBrZXlzIDExIHRocm91Z2ggNjMsIHBsdXMgYSBudW1iZXIKLW9mIGluY29tcGF0aWJsZSBzdHJpbmcgdGFibGUgZXh0ZW5zaW9ucy4KLS5QUAotXGZCT1NGXGZSIC0tCi1TdXBwb3J0cyBib3RoIHRoZSBTVnI0IHNldCBhbmQgdGhlIEFJWCBleHRlbnNpb25zLgotLlNIIEZJTEVTCi0uVFAgMjUKLVwqZC8/LyoKLWZpbGVzIGNvbnRhaW5pbmcgdGVybWluYWwgZGVzY3JpcHRpb25zCi0uU0ggU0VFIEFMU08KLVxmQkBUSUNAXGZSKDFNKSwKLVxmQkBJTkZPQ01QQFxmUigxTSksCi1cZkJjdXJzZXNcZlIoM1gpLAotXGZCcHJpbnRmXGZSKDMpLAotXGZCdGVybVxmUihcKm4pLgotLlNIIEFVVEhPUlMKLVpleWQgTS4gQmVuLUhhbGltLCBFcmljIFMuIFJheW1vbmQsIFRob21hcyBFLiBEaWNrZXkuCi1CYXNlZCBvbiBwY3Vyc2VzIGJ5IFBhdmVsIEN1cnRpcy4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL3Rlcm1pbmZvLmhlYWQgYi9tYW4vdGVybWluZm8uaGVhZAppbmRleCA3NDU1Njc1Li5jNGNjMDcyIDEwMDY0NAotLS0gYS9tYW4vdGVybWluZm8uaGVhZAorKysgYi9tYW4vdGVybWluZm8uaGVhZApAQCAtMSw1ICsxLDUgQEAKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKIC5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI2LDEwICsyNiwxNyBAQAogLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlwiICRJZDogdGVybWluZm8uaGVhZCx2IDEuMTYgMjAwNy8wMy8wNCAwMDowOTo0NiB0b20gRXhwICQKKy5cIiAkSWQ6IHRlcm1pbmZvLmhlYWQsdiAxLjIxIDIwMTMvMDMvMDkgMjI6MTE6MzYgdG9tIEV4cCAkCiAuVEggdGVybWluZm8gNSAiIiAiIiAiRmlsZSBGb3JtYXRzIgogLmRzIG4gNQogLmRzIGQgQFRFUk1JTkZPQAorLmllIFxuKC5nIC5kcyBgYCBcKGxxCisuZWwgICAgICAgLmRzIGBgIGBgCisuaWUgXG4oLmcgLmRzICcnIFwocnEKKy5lbCAgICAgICAuZHMgJycgJycKKy5kZSBiUAorLklQIFwoYnUgNAorLi4KIC5TSCBOQU1FCiB0ZXJtaW5mbyBcLSB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGEgYmFzZQogLlNIIFNZTk9QU0lTCkBAIC02OCwxNyArNzUsMTcgQEAKIC5QUAogTmV3bGluZXMgYW5kIGxlYWRpbmcgdGFicyBtYXkgYmUgdXNlZCBmb3IgZm9ybWF0dGluZyBlbnRyaWVzIGZvciByZWFkYWJpbGl0eS4KIFRoZXNlIGFyZSByZW1vdmVkIGZyb20gcGFyc2VkIGVudHJpZXMuCi1UaGUgXGZCQElORk9DTVBAXCAtZlxmUCBvcHRpb24gcmVsaWVzIG9uIHRoaXMgdG8gZm9ybWF0IGlmLXRoZW4tZWxzZSBleHByZXNzaW9uczoKK1RoZSBcZkJASU5GT0NNUEBcIFwtZlxmUCBvcHRpb24gcmVsaWVzIG9uIHRoaXMgdG8gZm9ybWF0IGlmLXRoZW4tZWxzZSBleHByZXNzaW9uczoKIHRoZSByZXN1bHQgY2FuIGJlIHJlYWQgYnkgXGZCQFRJQ0BcZlAuCiAuUFAKIFRlcm1pbmFsIG5hbWVzIChleGNlcHQgZm9yIHRoZSBsYXN0LCB2ZXJib3NlIGVudHJ5KSBzaG91bGQKIGJlIGNob3NlbiB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zLgogVGhlIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUgbWFraW5nIHVwIHRoZSB0ZXJtaW5hbCBzaG91bGQKLWhhdmUgYSByb290IG5hbWUsIHRodXMgYGBocDI2MjEnJy4KK2hhdmUgYSByb290IG5hbWUsIHRodXMgXCooYGBocDI2MjFcKignJy4KIFRoaXMgbmFtZSBzaG91bGQgbm90IGNvbnRhaW4gaHlwaGVucy4KIE1vZGVzIHRoYXQgdGhlIGhhcmR3YXJlIGNhbiBiZSBpbiwgb3IgdXNlciBwcmVmZXJlbmNlcywgc2hvdWxkCiBiZSBpbmRpY2F0ZWQgYnkgYXBwZW5kaW5nIGEgaHlwaGVuIGFuZCBhIG1vZGUgc3VmZml4LgotVGh1cywgYSB2dDEwMCBpbiAxMzIgY29sdW1uIG1vZGUgd291bGQgYmUgdnQxMDAtdy4KK1RodXMsIGEgdnQxMDAgaW4gMTMyIGNvbHVtbiBtb2RlIHdvdWxkIGJlIHZ0MTAwXC13LgogVGhlIGZvbGxvd2luZyBzdWZmaXhlcyBzaG91bGQgYmUgdXNlZCB3aGVyZSBwb3NzaWJsZToKIC5QUAogLlRTCkBAIC04NiwyMiArOTMsMjIgQEAKIGwgYyBsCiBsIGwgbC4KIFxmQlN1ZmZpeAlNZWFuaW5nCUV4YW1wbGVcZlAKLS1cZklublxmUAlOdW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbglhYWEtNjAKLS1cZkluXGZQcAlOdW1iZXIgb2YgcGFnZXMgb2YgbWVtb3J5CWMxMDAtNHAKLS1hbQlXaXRoIGF1dG9tYXJnaW5zICh1c3VhbGx5IHRoZSBkZWZhdWx0KQl2dDEwMC1hbQotLW0JTW9ubyBtb2RlOyBzdXBwcmVzcyBjb2xvciAgICAgICAJYW5zaS1tCi0tbWMJTWFnaWMgY29va2llOyBzcGFjZXMgd2hlbiBoaWdobGlnaHRpbmcJd3kzMC1tYwotLW5hCU5vIGFycm93IGtleXMgKGxlYXZlIHRoZW0gaW4gbG9jYWwpCWMxMDAtbmEKLS1uYW0JV2l0aG91dCBhdXRvbWF0aWMgbWFyZ2lucyAgICAgICAJdnQxMDAtbmFtCi0tbmwJTm8gc3RhdHVzIGxpbmUgICAgICAgICAgICAgICAgICAJYXR0NDQxNS1ubAotLW5zCU5vIHN0YXR1cyBsaW5lICAgICAgICAgICAgICAgICAgCWhwMjYyNi1ucwotLXJ2CVJldmVyc2UgdmlkZW8gICAgICAgICAgICAgICAgICAgCWMxMDAtcnYKLS1zCUVuYWJsZSBzdGF0dXMgbGluZSAgICAgICAgICAgICAgCXZ0MTAwLXMKLS12YglVc2UgdmlzaWJsZSBiZWxsIGluc3RlYWQgb2YgYmVlcAl3eTM3MC12YgotLXcJV2lkZSBtb2RlICg+IDgwIGNvbHVtbnMsIHVzdWFsbHkgMTMyKQl2dDEwMC13CitcLVxmSW5uXGZQCU51bWJlciBvZiBsaW5lcyBvbiB0aGUgc2NyZWVuCWFhYVwtNjAKK1wtXGZJblxmUHAJTnVtYmVyIG9mIHBhZ2VzIG9mIG1lbW9yeQljMTAwXC00cAorXC1hbQlXaXRoIGF1dG9tYXJnaW5zICh1c3VhbGx5IHRoZSBkZWZhdWx0KQl2dDEwMFwtYW0KK1wtbQlNb25vIG1vZGU7IHN1cHByZXNzIGNvbG9yICAgICAgIAlhbnNpXC1tCitcLW1jCU1hZ2ljIGNvb2tpZTsgc3BhY2VzIHdoZW4gaGlnaGxpZ2h0aW5nCXd5MzBcLW1jCitcLW5hCU5vIGFycm93IGtleXMgKGxlYXZlIHRoZW0gaW4gbG9jYWwpCWMxMDBcLW5hCitcLW5hbQlXaXRob3V0IGF1dG9tYXRpYyBtYXJnaW5zICAgICAgIAl2dDEwMFwtbmFtCitcLW5sCU5vIHN0YXR1cyBsaW5lICAgICAgICAgICAgICAgICAgCWF0dDQ0MTVcLW5sCitcLW5zCU5vIHN0YXR1cyBsaW5lICAgICAgICAgICAgICAgICAgCWhwMjYyNlwtbnMKK1wtcnYJUmV2ZXJzZSB2aWRlbyAgICAgICAgICAgICAgICAgICAJYzEwMFwtcnYKK1wtcwlFbmFibGUgc3RhdHVzIGxpbmUgICAgICAgICAgICAgIAl2dDEwMFwtcworXC12YglVc2UgdmlzaWJsZSBiZWxsIGluc3RlYWQgb2YgYmVlcAl3eTM3MFwtdmIKK1wtdwlXaWRlIG1vZGUgKD4gODAgY29sdW1ucywgdXN1YWxseSAxMzIpCXZ0MTAwXC13CiAuVEUKIC5QUAogRm9yIG1vcmUgb24gdGVybWluYWwgbmFtaW5nIGNvbnZlbnRpb25zLCBzZWUgdGhlIFxmQnRlcm0oNylcZlIgbWFudWFsIHBhZ2UuCi0uU1MgQ2FwYWJpbGl0aWVzCisuU1MgUHJlZGVmaW5lZCBDYXBhYmlsaXRpZXMKIC5cIiBIZWFkIG9mIHRlcm1pbmZvIG1hbiBwYWdlIGVuZHMgaGVyZQogLnBzIC0xCmRpZmYgLS1naXQgYS9tYW4vdGVybWluZm8udGFpbCBiL21hbi90ZXJtaW5mby50YWlsCmluZGV4IGQwNmQzYTkuLmJkODU2OGYgMTAwNjQ0Ci0tLSBhL21hbi90ZXJtaW5mby50YWlsCisrKyBiL21hbi90ZXJtaW5mby50YWlsCkBAIC0xLDggKzEsNTEgQEAKLS5cIiAkSWQ6IHRlcm1pbmZvLnRhaWwsdiAxLjQ5IDIwMDgvMDIvMTYgMjA6NTc6NDMgdG9tIEV4cCAkCisuXCIgJElkOiB0ZXJtaW5mby50YWlsLHYgMS42OSAyMDE1LzA0LzI2IDE0OjQ3OjIzIHRvbSBFeHAgJAogLlwiIEJlZ2lubmluZyBvZiB0ZXJtaW5mby50YWlsIGZpbGUKIC5cIiBUaGlzIGZpbGUgaXMgcGFydCBvZiBuY3Vyc2VzLgogLlwiIFNlZSAidGVybWluZm8uaGVhZCIgZm9yIGNvcHlyaWdodC4KIC5wcyArMQorLlNTIFVzZXItRGVmaW5lZCBDYXBhYmlsaXRpZXMKKy4KK1RoZSBwcmVjZWRpbmcgc2VjdGlvbiBsaXN0ZWQgdGhlIFxmSXByZWRlZmluZWRcZlAgY2FwYWJpbGl0aWVzLgorVGhleSBkZWFsIHdpdGggc29tZSBzcGVjaWFsIGZlYXR1cmVzIGZvciB0ZXJtaW5hbHMgbm8gbG9uZ2VyCisob3IgcG9zc2libHkgbmV2ZXIpIHByb2R1Y2VkLgorT2NjYXNpb25hbGx5IHRoZXJlIGFyZSBzcGVjaWFsIGZlYXR1cmVzIG9mIG5ld2VyIHRlcm1pbmFscyB3aGljaAorYXJlIGF3a3dhcmQgb3IgaW1wb3NzaWJsZSB0byByZXByZXNlbnQgYnkgcmV1c2luZyB0aGUgcHJlZGVmaW5lZAorY2FwYWJpbGl0aWVzLgorLlBQCitcZkJuY3Vyc2VzXGZQIGFkZHJlc3NlcyB0aGlzIGxpbWl0YXRpb24gYnkgYWxsb3dpbmcgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcy4KK1RoZSBcZkJAVElDQFxmUCBhbmQgXGZCQElORk9DTVBAXGZQIHByb2dyYW1zIHByb3ZpZGUKK3RoZSBcZkJcLXhcZlAgb3B0aW9uIGZvciB0aGlzIHB1cnBvc2UuCitXaGVuIFxmQlwteFxmUCBpcyBzZXQsCitcZkJAVElDQFxmUCB0cmVhdHMgdW5rbm93biBjYXBhYmlsaXRpZXMgYXMgdXNlci1kZWZpbmVkLgorVGhhdCBpcywgaWYgXGZCQFRJQ0BcZlAgZW5jb3VudGVycyBhIGNhcGFiaWxpdHkgbmFtZQord2hpY2ggaXQgZG9lcyBub3QgcmVjb2duaXplLAoraXQgaW5mZXJzIGl0cyB0eXBlIChib29sZWFuLCBudW1iZXIgb3Igc3RyaW5nKSBmcm9tIHRoZSBzeW50YXgKK2FuZCBtYWtlcyBhbiBleHRlbmRlZCB0YWJsZSBlbnRyeSBmb3IgdGhhdCBjYXBhYmlsaXR5LgorVGhlIFxmQnVzZV9leHRlbmRlZF9uYW1lc1xmUCBmdW5jdGlvbiBtYWtlcyB0aGlzIGluZm9ybWF0aW9uCitjb25kaXRpb25hbGx5IGF2YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMuCitUaGUgbmN1cnNlcyBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBkYXRhIGxlYXZpbmcgbW9zdCBvZiB0aGUgYmVoYXZpb3IKK3RvIGFwcGxpY2F0aW9uczoKKy5iUAorVXNlci1kZWZpbmVkIGNhcGFiaWxpdHkgc3RyaW5ncyB3aG9zZSBuYW1lIGJlZ2lucword2l0aCBcKihgYGtcKignJyBhcmUgdHJlYXRlZCBhcyBmdW5jdGlvbiBrZXlzLgorLmJQCitUaGUgdHlwZXMgKGJvb2xlYW4sIG51bWJlciwgc3RyaW5nKSBkZXRlcm1pbmVkIGJ5IFxmQkBUSUNAXGZQCitjYW4gYmUgaW5mZXJyZWQgYnkgc3VjY2Vzc2Z1bCBjYWxscyBvbiBcZkJ0aWdldGZsYWdcZlAsIGV0Yy4KKy5iUAorSWYgdGhlIGNhcGFiaWxpdHkgbmFtZSBoYXBwZW5zIHRvIGJlIHR3byBjaGFyYWN0ZXJzLAordGhlIGNhcGFiaWxpdHkgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgdGVybWNhcCBpbnRlcmZhY2UuCisuUFAKK1doaWxlIHRlcm1jYXAgaXMgc2FpZCB0byBiZSBleHRlbnNpYmxlIGJlY2F1c2UgaXQgZG9lcyBub3QgdXNlIGEgcHJlZGVmaW5lZCBzZXQKK29mIGNhcGFiaWxpdGllcywKK2luIHByYWN0aWNlIGl0IGhhcyBiZWVuIGxpbWl0ZWQgdG8gdGhlIGNhcGFiaWxpdGllcyBkZWZpbmVkIGJ5Cit0ZXJtaW5mbyBpbXBsZW1lbnRhdGlvbnMuCitBcyBhIHJ1bGUsCit1c2VyLWRlZmluZWQgY2FwYWJpbGl0aWVzIGludGVuZGVkIGZvciB1c2UgYnkgdGVybWNhcCBhcHBsaWNhdGlvbnMgc2hvdWxkCitiZSBsaW1pdGVkIHRvIGJvb2xlYW5zIGFuZCBudW1iZXJzIHRvIGF2b2lkIHJ1bm5pbmcgcGFzdCB0aGUgMTAyMyBieXRlCitsaW1pdCBhc3N1bWVkIGJ5IHRlcm1jYXAgaW1wbGVtZW50YXRpb25zIGFuZCB0aGVpciBhcHBsaWNhdGlvbnMuCitJbiBwYXJ0aWN1bGFyLCBwcm92aWRpbmcgZXh0ZW5kZWQgc2V0cyBvZiBmdW5jdGlvbiBrZXlzIChwYXN0IHRoZSA2MAorbnVtYmVyZWQga2V5cyBhbmQgdGhlIGhhbmRmdWwgb2Ygc3BlY2lhbCBuYW1lZCBrZXlzKSBpcyBiZXN0IGRvbmUgdXNpbmcKK3RoZSBsb25nZXIgbmFtZXMgYXZhaWxhYmxlIHVzaW5nIHRlcm1pbmZvLgogLgogLlNTIEEgU2FtcGxlIEVudHJ5CiAuCkBAIC0xMCw0MiArNTMsNTQgQEAKIG9mIHdoYXQgYSBcZkJ0ZXJtaW5mb1xmUiBlbnRyeSBmb3IgYSBtb2Rlcm4gdGVybWluYWwgdHlwaWNhbGx5IGxvb2tzIGxpa2UuCiAuUFAKIC5uZgotLmluIC0yCi0udGEgLjNpCiAuZnQgQ1cKIFxzLTJhbnNpfGFuc2kvcGMtdGVybSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0gICAgICAgIG1jNWksCi0gICAgICAgIGNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0gICAgICAgIGN1Yj1cXEVbJXAxJWRELCBjdWQ9XFxFWyVwMSVkQiwgY3VmPVxcRVslcDElZEMsCi0gICAgICAgIGN1dT1cXEVbJXAxJWRBLCBkY2g9XFxFWyVwMSVkUCwgZGw9XFxFWyVwMSVkTSwKLSAgICAgICAgZWNoPVxcRVslcDElZFgsIGVsMT1cXEVbMUssIGhwYT1cXEVbJXAxJWRHLCBodD1cXEVbSSwKLSAgICAgICAgaWNoPVxcRVslcDElZEAsIGlsPVxcRVslcDElZEwsIGluZG49XFxFWyVwMSVkUywgLmluZG49XFxFWyVwMSVkVCwKLSAgICAgICAga2JzPV5ILCBrY2J0PVxcRVtaLCBrY3ViMT1cXEVbRCwga2N1ZDE9XFxFW0IsCi0gICAgICAgIGtjdWYxPVxcRVtDLCBrY3V1MT1cXEVbQSwga2YxPVxcRVtNLCBrZjEwPVxcRVtWLAotICAgICAgICBrZjExPVxcRVtXLCBrZjEyPVxcRVtYLCBrZjI9XFxFW04sIGtmMz1cXEVbTywga2Y0PVxcRVtQLAotICAgICAgICBrZjU9XFxFW1EsIGtmNj1cXEVbUiwga2Y3PVxcRVtTLCBrZjg9XFxFW1QsIGtmOT1cXEVbVSwKLSAgICAgICAga2ljaDE9XFxFW0wsIG1jND1cXEVbNGksIG1jNT1cXEVbNWksIG5lbD1cXHJcXEVbUywKLSAgICAgICAgb3A9XFxFWzM3OzQwbSwgcmVwPSVwMSVjXFxFWyVwMiV7MX0lLSVkYiwKLSAgICAgICAgcmluPVxcRVslcDElZFQsIHMwZHM9XFxFKEIsIHMxZHM9XFxFKUIsIHMyZHM9XFxFKkIsCi0gICAgICAgIHMzZHM9XFxFK0IsIHNldGFiPVxcRVs0JXAxJWRtLCBzZXRhZj1cXEVbMyVwMSVkbSwKLSAgICAgICAgc2V0Yj1cXEVbNCU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLSAgICAgICAgc2V0Zj1cXEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLSAgICAgICAgc2dyPVxcRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDgldDsxMSU7JT8lcDkldDsxMiU7bSwKLSAgICAgICAgc2dyMD1cXEVbMDsxMG0sIHRiYz1cXEVbMmcsIHU2PVxcRVslZDslZFIsIHU3PVxcRVs2biwKLSAgICAgICAgdTg9XFxFWz8lWzswMTIzNDU2Nzg5XWMsIHU5PVxcRVtjLCB2cGE9XFxFWyVwMSVkZCxccysyCi0uaW4gKzIKKyAgICAgICAgYW0sIG1jNWksIG1pciwgbXNnciwKKyAgICAgICAgY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3YjMywgcGFpcnMjNjQsCisgICAgICAgIGFjc2M9K1xcMDIwXFwsXFwwMjEtXFwwMzAuXlkwXFwzMzNgXFwwMDRhXFwyNjFmXFwzNzBnXFwzNjFoXFwyNjAKKyAgICAgICAgICAgICBqXFwzMzFrXFwyNzdsXFwzMzJtXFwzMDBuXFwzMDVvfnBcXDMwNHFcXDMwNHJcXDMwNHNfdFxcMzAzCisgICAgICAgICAgICAgdVxcMjY0dlxcMzAxd1xcMzAyeFxcMjYzeVxcMzYzelxcMzYye1xcMzQzfFxcMzMwfVxcMjM0flxcMzc2LAorICAgICAgICBiZWw9XkcsIGJsaW5rPVxcRVs1bSwgYm9sZD1cXEVbMW0sIGNidD1cXEVbWiwgY2xlYXI9XFxFW0hcXEVbSiwKKyAgICAgICAgY3I9Xk0sIGN1Yj1cXEVbJXAxJWRELCBjdWIxPVxcRVtELCBjdWQ9XFxFWyVwMSVkQiwgY3VkMT1cXEVbQiwKKyAgICAgICAgY3VmPVxcRVslcDElZEMsIGN1ZjE9XFxFW0MsIGN1cD1cXEVbJWklcDElZDslcDIlZEgsCisgICAgICAgIGN1dT1cXEVbJXAxJWRBLCBjdXUxPVxcRVtBLCBkY2g9XFxFWyVwMSVkUCwgZGNoMT1cXEVbUCwKKyAgICAgICAgZGw9XFxFWyVwMSVkTSwgZGwxPVxcRVtNLCBlY2g9XFxFWyVwMSVkWCwgZWQ9XFxFW0osIGVsPVxcRVtLLAorICAgICAgICBlbDE9XFxFWzFLLCBob21lPVxcRVtILCBocGE9XFxFWyVpJXAxJWRHLCBodD1cXEVbSSwgaHRzPVxcRUgsCisgICAgICAgIGljaD1cXEVbJXAxJWRALCBpbD1cXEVbJXAxJWRMLCBpbDE9XFxFW0wsIGluZD1eSiwKKyAgICAgICAgaW5kbj1cXEVbJXAxJWRTLCBpbnZpcz1cXEVbOG0sIGticz1eSCwga2NidD1cXEVbWiwga2N1YjE9XFxFW0QsCisgICAgICAgIGtjdWQxPVxcRVtCLCBrY3VmMT1cXEVbQywga2N1dTE9XFxFW0EsIGtob21lPVxcRVtILCBraWNoMT1cXEVbTCwKKyAgICAgICAgbWM0PVxcRVs0aSwgbWM1PVxcRVs1aSwgbmVsPVxcclxcRVtTLCBvcD1cXEVbMzk7NDltLAorICAgICAgICByZXA9JXAxJWNcXEVbJXAyJXsxfSUtJWRiLCByZXY9XFxFWzdtLCByaW49XFxFWyVwMSVkVCwKKyAgICAgICAgcm1hY3M9XFxFWzEwbSwgcm1wY2g9XFxFWzEwbSwgcm1zbz1cXEVbbSwgcm11bD1cXEVbbSwKKyAgICAgICAgczBkcz1cXEUoQiwgczFkcz1cXEUpQiwgczJkcz1cXEUqQiwgczNkcz1cXEUrQiwKKyAgICAgICAgc2V0YWI9XFxFWzQlcDElZG0sIHNldGFmPVxcRVszJXAxJWRtLAorICAgICAgICBzZ3I9XFxFWzA7MTAlPyVwMSV0OzclOworICAgICAgICAgICAgICAgICAgICU/JXAyJXQ7NCU7CisgICAgICAgICAgICAgICAgICAgJT8lcDMldDs3JTsKKyAgICAgICAgICAgICAgICAgICAlPyVwNCV0OzUlOworICAgICAgICAgICAgICAgICAgICU/JXA2JXQ7MSU7CisgICAgICAgICAgICAgICAgICAgJT8lcDcldDs4JTsKKyAgICAgICAgICAgICAgICAgICAlPyVwOSV0OzExJTttLAorICAgICAgICBzZ3IwPVxcRVswOzEwbSwgc21hY3M9XFxFWzExbSwgc21wY2g9XFxFWzExbSwgc21zbz1cXEVbN20sCisgICAgICAgIHNtdWw9XFxFWzRtLCB0YmM9XFxFWzNnLCB1Nj1cXEVbJWklZDslZFIsIHU3PVxcRVs2biwKKyAgICAgICAgdTg9XFxFWz8lWzswMTIzNDU2Nzg5XWMsIHU5PVxcRVtjLCB2cGE9XFxFWyVpJXAxJWRkLAogLmZpCiAuZnQgUgogLlBQCiBFbnRyaWVzIG1heSBjb250aW51ZSBvbnRvIG11bHRpcGxlIGxpbmVzIGJ5IHBsYWNpbmcgd2hpdGUgc3BhY2UgYXQKIHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBsaW5lIGV4Y2VwdCB0aGUgZmlyc3QuCi1Db21tZW50cyBtYXkgYmUgaW5jbHVkZWQgb24gbGluZXMgYmVnaW5uaW5nIHdpdGggYGAjJycuCitDb21tZW50cyBtYXkgYmUgaW5jbHVkZWQgb24gbGluZXMgYmVnaW5uaW5nIHdpdGggXCooYGAjXCooJycuCiBDYXBhYmlsaXRpZXMgaW4KIC5JIHRlcm1pbmZvCiBhcmUgb2YgdGhyZWUgdHlwZXM6CisuYlAKIEJvb2xlYW4gY2FwYWJpbGl0aWVzIHdoaWNoIGluZGljYXRlIHRoYXQgdGhlIHRlcm1pbmFsIGhhcwotc29tZSBwYXJ0aWN1bGFyIGZlYXR1cmUsIG51bWVyaWMgY2FwYWJpbGl0aWVzIGdpdmluZyB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwKLW9yIHRoZSBzaXplIG9mIHBhcnRpY3VsYXIgZGVsYXlzLCBhbmQgc3RyaW5nCitzb21lIHBhcnRpY3VsYXIgZmVhdHVyZSwKKy5iUAorbnVtZXJpYyBjYXBhYmlsaXRpZXMgZ2l2aW5nIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbAorb3IgdGhlIHNpemUgb2YgcGFydGljdWxhciBkZWxheXMsIGFuZAorLmJQCitzdHJpbmcKIGNhcGFiaWxpdGllcywgd2hpY2ggZ2l2ZSBhIHNlcXVlbmNlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gcGFydGljdWxhcgogdGVybWluYWwgb3BlcmF0aW9ucy4KIC5QUApAQCAtNTgsMTUgKzExMywxNSBAQAogKGkuZS4sIGFuIGF1dG9tYXRpYyByZXR1cm4gYW5kIGxpbmUtZmVlZAogd2hlbiB0aGUgZW5kIG9mIGEgbGluZSBpcyByZWFjaGVkKSBpcyBpbmRpY2F0ZWQgYnkgdGhlIGNhcGFiaWxpdHkgXGZCYW1cZlIuCiBIZW5jZSB0aGUgZGVzY3JpcHRpb24gb2YgYW5zaSBpbmNsdWRlcyBcZkJhbVxmUi4KLU51bWVyaWMgY2FwYWJpbGl0aWVzIGFyZSBmb2xsb3dlZCBieSB0aGUgY2hhcmFjdGVyIGAjJyBhbmQgdGhlbiBhIHBvc2l0aXZlIHZhbHVlLgorTnVtZXJpYyBjYXBhYmlsaXRpZXMgYXJlIGZvbGxvd2VkIGJ5IHRoZSBjaGFyYWN0ZXIgXCooYGAjXCooJycgYW5kIHRoZW4gYSBwb3NpdGl2ZSB2YWx1ZS4KIFRodXMgXGZCY29sc1xmUiwgd2hpY2ggaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgdGVybWluYWwgaGFzLAotZ2l2ZXMgdGhlIHZhbHVlIGA4MCcgZm9yIGFuc2kuCitnaXZlcyB0aGUgdmFsdWUgXCooYGA4MFwqKCcnIGZvciBhbnNpLgogVmFsdWVzIGZvciBudW1lcmljIGNhcGFiaWxpdGllcyBtYXkgYmUgc3BlY2lmaWVkIGluIGRlY2ltYWwsIG9jdGFsIG9yIGhleGFkZWNpbWFsLAogdXNpbmcgdGhlIEMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgY29udmVudGlvbnMgKGUuZy4sIDI1NSwgMDM3NyBhbmQgMHhmZiBvciAweEZGKS4KIC5QUAogRmluYWxseSwgc3RyaW5nIHZhbHVlZCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgXGZCZWxcZlIgKGNsZWFyIHRvIGVuZCBvZiBsaW5lCi1zZXF1ZW5jZSkgYXJlIGdpdmVuIGJ5IHRoZSB0d28tY2hhcmFjdGVyIGNvZGUsIGFuIGA9JywgYW5kIHRoZW4gYSBzdHJpbmcKLWVuZGluZyBhdCB0aGUgbmV4dCBmb2xsb3dpbmcgYCwnLgorc2VxdWVuY2UpIGFyZSBnaXZlbiBieSB0aGUgdHdvLWNoYXJhY3RlciBjb2RlLCBhbiBcKihgYD1cKignJywgYW5kIHRoZW4gYSBzdHJpbmcKK2VuZGluZyBhdCB0aGUgbmV4dCBmb2xsb3dpbmcgXCooYGAsXCooJycuCiAuUFAKIEEgbnVtYmVyIG9mIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIHByb3ZpZGVkIGluIHRoZSBzdHJpbmcgdmFsdWVkIGNhcGFiaWxpdGllcwogZm9yIGVhc3kgZW5jb2Rpbmcgb2YgY2hhcmFjdGVycyB0aGVyZS4KQEAgLTc1LDE0ICsxMzAsMjkgQEAKIFxmQl54XGZSIG1hcHMgdG8gYSBjb250cm9sLXggZm9yIGFueSBhcHByb3ByaWF0ZSB4LCBhbmQgdGhlIHNlcXVlbmNlcwogXGZCXGVuIFxlbCBcZXIgXGV0IFxlYiBcZWYgXGVzXGZSIGdpdmUKIGEgbmV3bGluZSwgbGluZS1mZWVkLCByZXR1cm4sIHRhYiwgYmFja3NwYWNlLCBmb3JtLWZlZWQsIGFuZCBzcGFjZS4KLU90aGVyIGVzY2FwZXMgaW5jbHVkZSBcZkJcZV5cZlIgZm9yIFxmQl5cZlIsCitPdGhlciBlc2NhcGVzIGluY2x1ZGUKKy5iUAorXGZCXGVeXGZSIGZvciBcZkJeXGZSLAorLmJQCiBcZkJcZVxlXGZSIGZvciBcZkJcZVxmUiwKKy5iUAogXGZCXGVcZlIsIGZvciBjb21tYSwKKy5iUAogXGZCXGU6XGZSIGZvciBcZkI6XGZSLAorLmJQCiBhbmQgXGZCXGUwXGZSIGZvciBudWxsLgotKFxmQlxlMFxmUiB3aWxsIHByb2R1Y2UgXGUyMDAsIHdoaWNoIGRvZXMgbm90IHRlcm1pbmF0ZSBhIHN0cmluZyBidXQgYmVoYXZlcworLklQCitcZkJcZTBcZlIgd2lsbCBwcm9kdWNlIFxlMjAwLCB3aGljaCBkb2VzIG5vdCB0ZXJtaW5hdGUgYSBzdHJpbmcgYnV0IGJlaGF2ZXMKIGFzIGEgbnVsbCBjaGFyYWN0ZXIgb24gbW9zdCB0ZXJtaW5hbHMsIHByb3ZpZGluZyBDUzcgaXMgc3BlY2lmaWVkLgotU2VlIHN0dHkoMSkuKQorU2VlIHN0dHkoMSkuCisuSVAKK1RoZSByZWFzb24gZm9yIHRoaXMgcXVpcmsgaXMgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgdGhlCitjb21waWxlZCB0ZXJtaW5mbyBmaWxlcyB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucywKK2UuZy4sIHRoZSBTVnI0IHN5c3RlbXMsIHdoaWNoIGRvY3VtZW50IHRoaXMuCitDb21waWxlZCB0ZXJtaW5mbyBmaWxlcyB1c2UgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIHdpdGggbm8gbGVuZ3Rocy4KK01vZGlmeWluZyB0aGlzIHdvdWxkIHJlcXVpcmUgYSBuZXcgYmluYXJ5IGZvcm1hdCwgCit3aGljaCB3b3VsZCBub3Qgd29yayB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4KKy5QUAogRmluYWxseSwgY2hhcmFjdGVycyBtYXkgYmUgZ2l2ZW4gYXMgdGhyZWUgb2N0YWwgZGlnaXRzIGFmdGVyIGEgXGZCXGVcZlIuCiAuUFAKIEEgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIG1heSBhcHBlYXIgYW55d2hlcmUgaW4gYSBzdHJpbmcgY2FwYWJpbGl0eSwgZW5jbG9zZWQgaW4KQEAgLTkwLDggKzE2MCw4IEBACiAuSSB0cHV0cwogdG8gcHJvdmlkZSB0aGlzIGRlbGF5LgogVGhlIGRlbGF5IG11c3QgYmUgYSBudW1iZXIgd2l0aCBhdCBtb3N0IG9uZSBkZWNpbWFsCi1wbGFjZSBvZiBwcmVjaXNpb247IGl0IG1heSBiZSBmb2xsb3dlZCBieSBzdWZmaXhlcyBgKicgb3IgJy8nIG9yIGJvdGguCi1BIGAqJworcGxhY2Ugb2YgcHJlY2lzaW9uOyBpdCBtYXkgYmUgZm9sbG93ZWQgYnkgc3VmZml4ZXMgXCooYGAqXCooJycgb3IgXCooYGAvXCooJycgb3IgYm90aC4KK0EgXCooYGAqXCooJycKIGluZGljYXRlcyB0aGF0IHRoZSBwYWRkaW5nIHJlcXVpcmVkIGlzIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIGxpbmVzCiBhZmZlY3RlZCBieSB0aGUgb3BlcmF0aW9uLCBhbmQgdGhlIGFtb3VudCBnaXZlbiBpcyB0aGUgcGVyLWFmZmVjdGVkLXVuaXQKIHBhZGRpbmcgcmVxdWlyZWQuCkBAIC0xMDAsNyArMTcwLDcgQEAKIC5JUiBsaW5lcwogYWZmZWN0ZWQuKSAgTm9ybWFsbHksIHBhZGRpbmcgaXMgYWR2aXNvcnkgaWYgdGhlIGRldmljZSBoYXMgdGhlIFxmQnhvblxmUgogY2FwYWJpbGl0eTsgaXQgaXMgdXNlZCBmb3IgY29zdCBjb21wdXRhdGlvbiBidXQgZG9lcyBub3QgdHJpZ2dlciBkZWxheXMuCi1BIGAvJworQSBcKihgYC9cKignJwogc3VmZml4IGluZGljYXRlcyB0aGF0IHRoZSBwYWRkaW5nIGlzIG1hbmRhdG9yeSBhbmQgZm9yY2VzIGEgZGVsYXkgb2YgdGhlIGdpdmVuCiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGV2ZW4gb24gZGV2aWNlcyBmb3Igd2hpY2ggXGZCeG9uXGZSIGlzIHByZXNlbnQgdG8KIGluZGljYXRlIGZsb3cgY29udHJvbC4KQEAgLTExNSwyNyArMTg1LDM2IEBACiAuUFAKIC5TUyBGZXRjaGluZyBDb21waWxlZCBEZXNjcmlwdGlvbnMKIC5QUAorVGhlIFxmQm5jdXJzZXNcZlAgbGlicmFyeSBzZWFyY2hlcyBmb3IgdGVybWluYWwgZGVzY3JpcHRpb25zIGluIHNldmVyYWwgcGxhY2VzLgorSXQgdXNlcyBvbmx5IHRoZSBmaXJzdCBkZXNjcmlwdGlvbiBmb3VuZC4KK1RoZSBsaWJyYXJ5IGhhcyBhIGNvbXBpbGVkLWluIGxpc3Qgb2YgcGxhY2VzIHRvIHNlYXJjaAord2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gYnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorQmVmb3JlIHN0YXJ0aW5nIHRvIHNlYXJjaCwKK1xmQm5jdXJzZXNcZlAgZWxpbWluYXRlcyBkdXBsaWNhdGVzIGluIGl0cyBzZWFyY2ggbGlzdC4KKy5iUAogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFRFUk1JTkZPIGlzIHNldCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdGhlIHBhdGhuYW1lCiBvZiBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjb21waWxlZCBkZXNjcmlwdGlvbiB5b3UgYXJlIHdvcmtpbmcgb24uCi1Pbmx5Ci10aGF0IGRpcmVjdG9yeSBpcyBzZWFyY2hlZC4KLS5QUAotSWYgVEVSTUlORk8gaXMgbm90IHNldCwgdGhlIFxmQm5jdXJzZXNcZlIgdmVyc2lvbiBvZiB0aGUgdGVybWluZm8gcmVhZGVyIGNvZGUKLXdpbGwgaW5zdGVhZCBsb29rIGluIHRoZSBkaXJlY3RvcnkgXGZCJEhPTUUvLnRlcm1pbmZvXGZSCitPbmx5IHRoYXQgZGlyZWN0b3J5IGlzIHNlYXJjaGVkLgorLmJQCitJZiBURVJNSU5GTyBpcyBub3Qgc2V0LAorXGZCbmN1cnNlc1xmUiB3aWxsIGluc3RlYWQgbG9vayBpbiB0aGUgZGlyZWN0b3J5IFxmQiRIT01FLy50ZXJtaW5mb1xmUgogZm9yIGEgY29tcGlsZWQgZGVzY3JpcHRpb24uCi1JZiBpdCBmYWlscyB0byBmaW5kIG9uZSB0aGVyZSwgYW5kIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBURVJNSU5GT19ESVJTIGlzCi1zZXQsIGl0IHdpbGwgaW50ZXJwcmV0IHRoZSBjb250ZW50cyBvZiB0aGF0IHZhcmlhYmxlIGFzIGEgbGlzdCBvZiBjb2xvbi0KLXNlcGFyYXRlZCBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCAoYW4gZW1wdHkgZW50cnkgaXMgaW50ZXJwcmV0ZWQgYXMgYQotY29tbWFuZCB0byBzZWFyY2ggXGZJXCpkXGZSKS4KLUlmIG5vIGRlc2NyaXB0aW9uIGlzIGZvdW5kIGluIGFueSBvZiB0aGUKLVRFUk1JTkZPX0RJUlMgZGlyZWN0b3JpZXMsIHRoZSBmZXRjaCBmYWlscy4KLS5QUAotSWYgbmVpdGhlciBURVJNSU5GTyBub3IgVEVSTUlORk9fRElSUyBpcyBzZXQsIHRoZSBsYXN0IHBsYWNlIHRyaWVkIHdpbGwgYmUgdGhlCi1zeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5LCBcZklcKmRcZlIuCi0uUFAKLShOZWl0aGVyIHRoZSBcZkIkSE9NRS8udGVybWluZm9cZlIgbG9va3VwcyBub3IgVEVSTUlORk9fRElSUyBleHRlbnNpb25zIGFyZQotc3VwcG9ydGVkIHVuZGVyIHN0b2NrIFN5c3RlbSBWIHRlcm1pbmZvL2N1cnNlcy4pCi0uUFAKKy5iUAorTmV4dCwgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFRFUk1JTkZPX0RJUlMgaXMgc2V0LAorXGZCbmN1cnNlc1xmUiB3aWxsIGludGVycHJldCB0aGUgY29udGVudHMgb2YgdGhhdCB2YXJpYWJsZQorYXMgYSBsaXN0IG9mIGNvbG9uLXNlcGFyYXRlZCBkaXJlY3RvcmllcyAob3IgZGF0YWJhc2UgZmlsZXMpIHRvIGJlIHNlYXJjaGVkLgorLklQCitBbiBlbXB0eSBkaXJlY3RvcnkgbmFtZSAoaS5lLiwgaWYgdGhlIHZhcmlhYmxlIGJlZ2lucyBvciBlbmRzCit3aXRoIGEgY29sb24sIG9yIGNvbnRhaW5zIGFkamFjZW50IGNvbG9ucykKK2lzIGludGVycHJldGVkIGFzIHRoZSBzeXN0ZW0gbG9jYXRpb24gXGZJXCpkXGZSLgorLmJQCitGaW5hbGx5LCBcZkJuY3Vyc2VzXGZQIHNlYXJjaGVzIHRoZXNlIGNvbXBpbGVkLWluIGxvY2F0aW9uczoKKy5SUworLmJQCithIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKEBURVJNSU5GT19ESVJTQCksIGFuZAorLmJQCit0aGUgc3lzdGVtIHRlcm1pbmZvIGRpcmVjdG9yeSwgXGZJXCpkXGZSICh0aGUgY29tcGlsZWQtaW4gZGVmYXVsdCkuCisuUkUKIC5TUyBQcmVwYXJpbmcgRGVzY3JpcHRpb25zCiAuUFAKIFdlIG5vdyBvdXRsaW5lIGhvdyB0byBwcmVwYXJlIGRlc2NyaXB0aW9ucyBvZiB0ZXJtaW5hbHMuCkBAIC0xNTQsNyArMjMzLDcgQEAKIC5QUAogVG8gZ2V0IHRoZSBwYWRkaW5nIGZvciBpbnNlcnQgbGluZSByaWdodCAoaWYgdGhlIHRlcm1pbmFsIG1hbnVmYWN0dXJlcgogZGlkIG5vdCBkb2N1bWVudCBpdCkgYSBzZXZlcmUgdGVzdCBpcyB0byBlZGl0IGEgbGFyZ2UgZmlsZSBhdCA5NjAwIGJhdWQsCi1kZWxldGUgMTYgb3Igc28gbGluZXMgZnJvbSB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4sIHRoZW4gaGl0IHRoZSBgdScKK2RlbGV0ZSAxNiBvciBzbyBsaW5lcyBmcm9tIHRoZSBtaWRkbGUgb2YgdGhlIHNjcmVlbiwgdGhlbiBoaXQgdGhlIFwqKGBgdVwqKCcnCiBrZXkgc2V2ZXJhbCB0aW1lcyBxdWlja2x5LgogSWYgdGhlIHRlcm1pbmFsIG1lc3NlcyB1cCwgbW9yZSBwYWRkaW5nIGlzIHVzdWFsbHkgbmVlZGVkLgogQSBzaW1pbGFyIHRlc3QgY2FuIGJlIHVzZWQgZm9yIGluc2VydCBjaGFyYWN0ZXIuCkBAIC0xOTgsNyArMjc3LDcgQEAKIGFuZAogLkJSIGN1ZDEgLgogVGhlc2UgbG9jYWwgY3Vyc29yIG1vdGlvbnMgc2hvdWxkIG5vdCBhbHRlciB0aGUgdGV4dCB0aGV5IHBhc3Mgb3ZlciwKLWZvciBleGFtcGxlLCB5b3Ugd291bGQgbm90IG5vcm1hbGx5IHVzZSBgXGZCY3VmMVxmUD1cICcgYmVjYXVzZSB0aGUKK2ZvciBleGFtcGxlLCB5b3Ugd291bGQgbm90IG5vcm1hbGx5IHVzZSBcKihgYFxmQmN1ZjFcZlA9XCBcKignJyBiZWNhdXNlIHRoZQogc3BhY2Ugd291bGQgZXJhc2UgdGhlIGNoYXJhY3RlciBtb3ZlZCBvdmVyLgogLlBQCiBBIHZlcnkgaW1wb3J0YW50IHBvaW50IGhlcmUgaXMgdGhhdCB0aGUgbG9jYWwgY3Vyc29yIG1vdGlvbnMgZW5jb2RlZApAQCAtMjc1LDkgKzM1NCwxMCBAQAogLmZ0IENXCiAuXCIuaW4gLTIKIFxzLTEzM1x8fFx8dHR5MzNcfHxcfHR0eVx8fFx8bW9kZWwgMzMgdGVsZXR5cGUsCi0JYmVsPV5HLCBjb2xzIzcyLCBjcj1eTSwgY3VkMT1eSiwgaGMsIGluZD1eSiwgb3MsXHMrMQorICAgICAgICBiZWw9XkcsIGNvbHMjNzIsIGNyPV5NLCBjdWQxPV5KLCBoYywgaW5kPV5KLCBvcyxccysxCiAuXCIuaW4gKzIKIC5mdCBSCisuZmkKIC5QUAogd2hpbGUgdGhlIExlYXIgU2llZ2xlciBccy0xQURNLTNcczAgaXMgZGVzY3JpYmVkIGFzCiAuUFAKQEAgLTI4Niw4ICszNjYsOCBAQAogLmZ0IENXCiAuXCIuaW4gLTIKIFxzLTFhZG0zXHx8XHwzXHx8XHxsc2kgYWRtMywKLQlhbSwgYmVsPV5HLCBjbGVhcj1eWiwgY29scyM4MCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JaW5kPV5KLCBsaW5lcyMyNCxccysxCisgICAgICAgIGFtLCBiZWw9XkcsIGNsZWFyPV5aLCBjb2xzIzgwLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKKyAgICAgICAgaW5kPV5KLCBsaW5lcyMyNCxccysxCiAuXCIuaW4gKzIKIC5mdCBSCiAuZmkKQEAgLTI5Niw5ICszNzYsOCBAQAogLlBQCiBDdXJzb3IgYWRkcmVzc2luZyBhbmQgb3RoZXIgc3RyaW5ncyByZXF1aXJpbmcgcGFyYW1ldGVycwogaW4gdGhlIHRlcm1pbmFsIGFyZSBkZXNjcmliZWQgYnkgYQotcGFyYW1ldGVyaXplZCBzdHJpbmcgY2FwYWJpbGl0eSwgd2l0aAotLklSIHByaW50ZiAoMykKLWxpa2UgZXNjYXBlcyBcZkIleFxmUiBpbiBpdC4KK3BhcmFtZXRlcml6ZWQgc3RyaW5nIGNhcGFiaWxpdHksCit3aXRoIFxmSXByaW50ZlxmUC1saWtlIGVzY2FwZXMgc3VjaCBhcyBcZkkleFxmUiBpbiBpdC4KIEZvciBleGFtcGxlLCB0byBhZGRyZXNzIHRoZSBjdXJzb3IsIHRoZQogLkIgY3VwCiBjYXBhYmlsaXR5IGlzIGdpdmVuLCB1c2luZyB0d28gcGFyYW1ldGVyczoKQEAgLTMyMSwzNCArNDAwLDM0IEBACiBUaGUgXGZCJVxmUiBlbmNvZGluZ3MgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmdzOgogLlBQCiAuVFAgNQotXHMtMSUlCi1vdXRwdXRzIGAlJworXGZCJSVcZlAKK291dHB1dHMgXCooYGAlXCooJycKIC5UUAotJVxmSVtbXGZQOlxmSV1mbGFnc11bd2lkdGhbLnByZWNpc2lvbl1dW1xmUGRveFhzXGZJXVxmUAotYXMgaW4gXGZCcHJpbnRmXGZQLCBmbGFncyBhcmUgWy0rI10gYW5kIHNwYWNlLgotVXNlIGEgYDonIHRvIGFsbG93IHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBhIGAtJyBmbGFnLAotYXZvaWRpbmcgaW50ZXJwcmV0aW5nICIlLSIgYXMgYW4gb3BlcmF0b3IuCitcZkIlXGZQXGZJW1tcZlA6XGZJXWZsYWdzXVt3aWR0aFsucHJlY2lzaW9uXV1bXGZQXGZCZG94WHNcZlBcZkldXGZQCithcyBpbiBcZkJwcmludGZcZlAsIGZsYWdzIGFyZSBcZklbXC0rI11cZlAgYW5kIFxmSXNwYWNlXGZQLgorVXNlIGEgXCooYGA6XCooJycgdG8gYWxsb3cgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGEgXCooYGBcLVwqKCcnIGZsYWcsCithdm9pZGluZyBpbnRlcnByZXRpbmcgIiVcLSIgYXMgYW4gb3BlcmF0b3IuCiAuVFAKLSVjCitcZihDVyVjXGZQCiBwcmludCBwb3AoKSBsaWtlICVjIGluIFxmQnByaW50ZlxmUAogLlRQCi0lcworXGZCJXNcZlAKIHByaW50IHBvcCgpIGxpa2UgJXMgaW4gXGZCcHJpbnRmXGZQCiAuVFAKLSVwWzEtOV0KK1xmQiVwXGZQXGZJWzFcLTldXGZQCiBwdXNoIFxmSWlcZlAndGggcGFyYW1ldGVyCiAuVFAKLSVQW2Etel0KLXNldCBkeW5hbWljIHZhcmlhYmxlIFthLXpdIHRvIHBvcCgpCitcZkIlUFxmUFxmSVthXC16XVxmUAorc2V0IGR5bmFtaWMgdmFyaWFibGUgXGZJW2FcLXpdXGZQIHRvIHBvcCgpCiAuVFAKLSVnW2Etel0KLWdldCBkeW5hbWljIHZhcmlhYmxlIFthLXpdIGFuZCBwdXNoIGl0CitcZkIlZ1xmUFxmSVthXC16XS9cZlAKK2dldCBkeW5hbWljIHZhcmlhYmxlIFxmSVthXC16XVxmUCBhbmQgcHVzaCBpdAogLlRQCi0lUFtBLVpdCi1zZXQgc3RhdGljIHZhcmlhYmxlIFthLXpdIHRvIHBvcCgpCitcZkIlUFxmUFxmSVtBXC1aXVxmUAorc2V0IHN0YXRpYyB2YXJpYWJsZSBcZklbYVwtel1cZlAgdG8gXGZJcG9wKClcZlAKIC5UUAotJWdbQS1aXQotZ2V0IHN0YXRpYyB2YXJpYWJsZSBbYS16XSBhbmQgcHVzaCBpdAorXGZCJWdcZlBcZklbQVwtWl1cZlAKK2dldCBzdGF0aWMgdmFyaWFibGUgXGZJW2FcLXpdXGZQIGFuZCBwdXNoIGl0CiAuSVAKIFRoZSB0ZXJtcyAic3RhdGljIiBhbmQgImR5bmFtaWMiIGFyZSBtaXNsZWFkaW5nLgogSGlzdG9yaWNhbGx5LCB0aGVzZSBhcmUgc2ltcGx5IHR3byBkaWZmZXJlbnQgc2V0cyBvZiB2YXJpYWJsZXMsCkBAIC0zNTYsNTYgKzQzNSw1NiBAQAogSG93ZXZlciwgdGhhdCBmYWN0IGlzIG5vdCBkb2N1bWVudGVkIGluIG90aGVyIGltcGxlbWVudGF0aW9ucy4KIFJlbHlpbmcgb24gaXQgd2lsbCBhZHZlcnNlbHkgaW1wYWN0IHBvcnRhYmlsaXR5IHRvIG90aGVyIGltcGxlbWVudGF0aW9ucy4KIC5UUAotJSdcZkljXGZQJworXGZCJSdcZlBcZkljXGZQXGZCJ1xmUAogY2hhciBjb25zdGFudCBcZkljXGZQCiAuVFAKLSV7XGZJbm5cZlB9CitcZkIle1xmUFxmSW5uXGZQXGZCfVxmUAogaW50ZWdlciBjb25zdGFudCBcZklublxmUAogLlRQCi0lbAorXGZCJWxcZlAKIHB1c2ggc3RybGVuKHBvcCkKIC5UUAotJSsgJS0gJSogJS8gJW0KLWFyaXRobWV0aWMgKCVtIGlzIG1vZCk6IHB1c2gocG9wKCkgb3AgcG9wKCkpCitcZkIlK1xmUCwgXGZCJVwtXGZQLCBcZkIlKlxmUCwgXGZCJS9cZlAsIFxmQiVtXGZQCithcml0aG1ldGljICglbSBpcyBtb2QpOiBcZklwdXNoKHBvcCgpIG9wIHBvcCgpKVxmUAogLlRQCi0lJiAlfCAlXgotYml0IG9wZXJhdGlvbnMgKEFORCwgT1IgYW5kIGV4Y2x1c2l2ZS1PUik6IHB1c2gocG9wKCkgb3AgcG9wKCkpCitcZkIlJlxmUCwgXGZCJXxcZlAsIFxmQiVeXGZQCitiaXQgb3BlcmF0aW9ucyAoQU5ELCBPUiBhbmQgZXhjbHVzaXZlLU9SKTogXGZJcHVzaChwb3AoKSBvcCBwb3AoKSlcZlAKIC5UUAotJT0gJT4gJTwKLWxvZ2ljYWwgb3BlcmF0aW9uczogcHVzaChwb3AoKSBvcCBwb3AoKSkKK1xmQiU9XGZQLCBcZkIlPlxmUCwgXGZCJTxcZlAKK2xvZ2ljYWwgb3BlcmF0aW9uczogXGZJcHVzaChwb3AoKSBvcCBwb3AoKSlcZlAKIC5UUAotJUEsICVPCitcZkIlQVxmUCwgXGZCJU9cZlAKIGxvZ2ljYWwgQU5EIGFuZCBPUiBvcGVyYXRpb25zIChmb3IgY29uZGl0aW9uYWxzKQogLlRQCi0lISAlfgorXGZCJSFcZlAsIFxmQiV+XGZQCiB1bmFyeSBvcGVyYXRpb25zIChsb2dpY2FsIGFuZCBiaXQgY29tcGxlbWVudCk6IHB1c2gob3AgcG9wKCkpCiAuVFAKLSVpCitcZkIlaVxmUAogYWRkIDEgdG8gZmlyc3QgdHdvIHBhcmFtZXRlcnMgKGZvciBBTlNJIHRlcm1pbmFscykKIC5UUAotJT8gXGZJZXhwclxmUCAldCBcZkl0aGVucGFydFxmUCAlZSBcZkllbHNlcGFydFxmUCAlOworXGZCJT9cZlAgXGZJZXhwclxmUCBcZkIldFxmUCBcZkl0aGVucGFydFxmUCBcZkIlZVxmUCBcZkllbHNlcGFydFxmUCBcZkIlO1xmUAogVGhpcyBmb3JtcyBhbiBpZi10aGVuLWVsc2UuCi1UaGUgJWUgXGZJZWxzZXBhcnRcZlAgaXMgb3B0aW9uYWwuCi1Vc3VhbGx5IHRoZSAlPyBcZklleHByXGZQIHBhcnQgcHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2ssCi1hbmQgJXQgcG9wcyBpdCBmcm9tIHRoZSBzdGFjaywgdGVzdGluZyBpZiBpdCBpcyBub256ZXJvICh0cnVlKS4KLUlmIGl0IGlzIHplcm8gKGZhbHNlKSwgY29udHJvbCBwYXNzZXMgdG8gdGhlICVlIChlbHNlKSBwYXJ0LgorVGhlIFxmQiVlXGZQIFxmSWVsc2VwYXJ0XGZQIGlzIG9wdGlvbmFsLgorVXN1YWxseSB0aGUgXGZCJT9cZlAgXGZJZXhwclxmUCBwYXJ0IHB1c2hlcyBhIHZhbHVlIG9udG8gdGhlIHN0YWNrLAorYW5kIFxmQiV0XGZQIHBvcHMgaXQgZnJvbSB0aGUgc3RhY2ssIHRlc3RpbmcgaWYgaXQgaXMgbm9uemVybyAodHJ1ZSkuCitJZiBpdCBpcyB6ZXJvIChmYWxzZSksIGNvbnRyb2wgcGFzc2VzIHRvIHRoZSBcZkIlZVxmUCAoZWxzZSkgcGFydC4KIC5JUAogSXQgaXMgcG9zc2libGUgdG8gZm9ybSBlbHNlLWlmJ3MgYSBsYSBBbGdvbCA2ODoKIC5SUwotJT8gY1xkMVx1ICV0IGJcZDFcdSAlZSBjXGQyXHUgJXQgYlxkMlx1ICVlIGNcZDNcdSAldCBiXGQzXHUgJWUgY1xkNFx1ICV0IGJcZDRcdSAlZSAlOworXGZCJT9cZlAgY1xkMVx1IFxmQiV0XGZQIGJcZDFcdSBcZkIlZVxmUCBjXGQyXHUgXGZCJXRcZlAgYlxkMlx1IFxmQiVlXGZQIGNcZDNcdSBcZkIldFxmUCBiXGQzXHUgXGZCJWVcZlAgY1xkNFx1IFxmQiV0XGZQIGJcZDRcdSBcZkIlZVxmUCBcZkIlO1xmUAogLlJFCiAuSVAKIHdoZXJlIGNcZGlcdSBhcmUgY29uZGl0aW9ucywgYlxkaVx1IGFyZSBib2RpZXMuCiAuSVAKLVVzZSB0aGUgXGZCLWZcZlAgb3B0aW9uIG9mIFxmQnRpY1xmUCBvciBcZkJASU5GT0NNUEBcZlAgdG8gc2VlCi10aGUgc3RydWN0dXJlIG9mIGlmLXRoZS1lbHNlJ3MuCitVc2UgdGhlIFxmQlwtZlxmUCBvcHRpb24gb2YgXGZCQFRJQ0BcZlAgb3IgXGZCQElORk9DTVBAXGZQIHRvIHNlZQordGhlIHN0cnVjdHVyZSBvZiBpZi10aGVuLWVsc2Uncy4KIFNvbWUgc3RyaW5ncywgZS5nLiwgXGZCc2dyXGZQIGNhbiBiZSB2ZXJ5IGNvbXBsaWNhdGVkIHdoZW4gd3JpdHRlbgogb24gb25lIGxpbmUuCi1UaGUgXGZCLWZcZlAgb3B0aW9uIHNwbGl0cyB0aGUgc3RyaW5nIGludG8gbGluZXMgd2l0aCB0aGUgcGFydHMgaW5kZW50ZWQuCitUaGUgXGZCXC1mXGZQIG9wdGlvbiBzcGxpdHMgdGhlIHN0cmluZyBpbnRvIGxpbmVzIHdpdGggdGhlIHBhcnRzIGluZGVudGVkLgogLlBQCiBCaW5hcnkgb3BlcmF0aW9ucyBhcmUgaW4gcG9zdGZpeCBmb3JtIHdpdGggdGhlIG9wZXJhbmRzIGluIHRoZSB1c3VhbCBvcmRlci4KLVRoYXQgaXMsIHRvIGdldCB4LTUgb25lIHdvdWxkIHVzZSAiJWd4JXs1fSUtIi4KLSVQIGFuZCAlZyB2YXJpYWJsZXMgYXJlCitUaGF0IGlzLCB0byBnZXQgeFwtNSBvbmUgd291bGQgdXNlICIlZ3glezV9JS0iLgorXGZCJVBcZlAgYW5kIFxmQiVnXGZQIHZhcmlhYmxlcyBhcmUKIHBlcnNpc3RlbnQgYWNyb3NzIGVzY2FwZS1zdHJpbmcgZXZhbHVhdGlvbnMuCiAuUFAKIENvbnNpZGVyIHRoZSBIUDI2NDUsIHdoaWNoLCB0byBnZXQgdG8gcm93IDMgYW5kIGNvbHVtbiAxMiwgbmVlZHMKQEAgLTQyOSw3ICs1MDgsNyBAQAogLlBQCiBBIGZpbmFsIGV4YW1wbGUgaXMgdGhlIFxzLTFMU0kgQURNXHMwLTNhLCB3aGljaCB1c2VzIHJvdyBhbmQgY29sdW1uCiBvZmZzZXQgYnkgYSBibGFuayBjaGFyYWN0ZXIsIHRodXMgXCoobHFjdXA9XGVFPSVwMSUnICclKyVjJXAyJScgJyUrJWNcKihycS4KLUFmdGVyIHNlbmRpbmcgYFxlRT0nLCB0aGlzIHB1c2hlcyB0aGUgZmlyc3QgcGFyYW1ldGVyLCBwdXNoZXMgdGhlCitBZnRlciBzZW5kaW5nIFwqKGBgXGVFPVwqKCcnLCB0aGlzIHB1c2hlcyB0aGUgZmlyc3QgcGFyYW1ldGVyLCBwdXNoZXMgdGhlCiBBU0NJSSB2YWx1ZSBmb3IgYSBzcGFjZSAoMzIpLCBhZGRzIHRoZW0gKHB1c2hpbmcgdGhlIHN1bSBvbiB0aGUgc3RhY2sKIGluIHBsYWNlIG9mIHRoZSB0d28gcHJldmlvdXMgdmFsdWVzKSBhbmQgb3V0cHV0cyB0aGF0IHZhbHVlIGFzIGEgY2hhcmFjdGVyLgogVGhlbiB0aGUgc2FtZSBpcyBkb25lIGZvciB0aGUgc2Vjb25kIHBhcmFtZXRlci4KQEAgLTU0Miw3ICs2MjEsNyBAQAogYW4gZW50cnkgd2l0aCBcZkJjc3JcZlIpLgogLlBQCiBZZXQgYW5vdGhlciB3YXkgdG8gY29uc3RydWN0IGluc2VydCBhbmQgZGVsZXRlIG1pZ2h0IGJlIHRvIHVzZSBhIGNvbWJpbmF0aW9uIG9mCi1pbmRleCB3aXRoIHRoZSBtZW1vcnktbG9jayBmZWF0dXJlIGZvdW5kIG9uIHNvbWUgdGVybWluYWxzIChsaWtlIHRoZSBIUC03MDAvOTAKK2luZGV4IHdpdGggdGhlIG1lbW9yeS1sb2NrIGZlYXR1cmUgZm91bmQgb24gc29tZSB0ZXJtaW5hbHMgKGxpa2UgdGhlIEhQXC03MDAvOTAKIHNlcmllcywgd2hpY2ggaG93ZXZlciBhbHNvIGhhcyBpbnNlcnQvZGVsZXRlKS4KIC5QUAogSW5zZXJ0aW5nIGxpbmVzIGF0IHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBzY3JlZW4gY2FuIGFsc28gYmUKQEAgLTU5Myw2ICs2NzIsNyBAQAogYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHR5cGVkIGFuZCB1bnR5cGVkIGJsYW5rcyBvbiB0aGUgc2NyZWVuLCBzaGlmdGluZwogdXBvbiBhbiBpbnNlcnQgb3IgZGVsZXRlIG9ubHkgdG8gYW4gdW50eXBlZCBibGFuayBvbiB0aGUgc2NyZWVuIHdoaWNoIGlzCiBlaXRoZXIgZWxpbWluYXRlZCwgb3IgZXhwYW5kZWQgdG8gdHdvIHVudHlwZWQgYmxhbmtzLgorLlBQCiBZb3UgY2FuIGRldGVybWluZSB0aGUKIGtpbmQgb2YgdGVybWluYWwgeW91IGhhdmUgYnkgY2xlYXJpbmcgdGhlIHNjcmVlbiBhbmQgdGhlbiB0eXBpbmcKIHRleHQgc2VwYXJhdGVkIGJ5IGN1cnNvciBtb3Rpb25zLgpAQCAtNjA4LDYgKzY4OCw3IEBACiBjdXJyZW50IGxpbmUgYW5kIG9udG8gdGhlIG5leHQgYXMgeW91IGluc2VydCwgeW91IGhhdmUgdGhlIHNlY29uZCB0eXBlIG9mCiB0ZXJtaW5hbCwgYW5kIHNob3VsZCBnaXZlIHRoZSBjYXBhYmlsaXR5IFxmQmluXGZSLCB3aGljaCBzdGFuZHMgZm9yCiBcKihscWluc2VydCBudWxsXCoocnEuCisuUFAKIFdoaWxlIHRoZXNlIGFyZSB0d28gbG9naWNhbGx5IHNlcGFyYXRlIGF0dHJpYnV0ZXMgKG9uZSBsaW5lIHZlcnN1cyBtdWx0aS1saW5lCiBpbnNlcnQgbW9kZSwgYW5kIHNwZWNpYWwgdHJlYXRtZW50IG9mIHVudHlwZWQgc3BhY2VzKSB3ZSBoYXZlIHNlZW4gbm8KIHRlcm1pbmFscyB3aG9zZSBpbnNlcnQgbW9kZSBjYW5ub3QgYmUgZGVzY3JpYmVkIHdpdGggdGhlIHNpbmdsZSBhdHRyaWJ1dGUuCkBAIC02NDIsNyArNzIzLDcgQEAKIGluIFxmQmlwXGZSIChhIHN0cmluZyBvcHRpb24pLgogQW55IG90aGVyIHNlcXVlbmNlIHdoaWNoIG1heSBuZWVkIHRvIGJlCiBzZW50IGFmdGVyIGFuIGluc2VydCBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgbWF5IGFsc28gYmUgZ2l2ZW4gaW4gXGZCaXBcZlIuCi1JZiB5b3VyIHRlcm1pbmFsIG5lZWRzIGJvdGggdG8gYmUgcGxhY2VkIGludG8gYW4gYGluc2VydCBtb2RlJyBhbmQKK0lmIHlvdXIgdGVybWluYWwgbmVlZHMgYm90aCB0byBiZSBwbGFjZWQgaW50byBhbiBcKihgYGluc2VydCBtb2RlXCooJycgYW5kCiBhIHNwZWNpYWwgY29kZSB0byBwcmVjZWRlIGVhY2ggaW5zZXJ0ZWQgY2hhcmFjdGVyLCB0aGVuIGJvdGgKIC5CUiBzbWlyIC8gcm1pcgogYW5kCkBAIC03NTksOSArODQwLDkgQEAKIC5QUAogLlRTCiBjZW50ZXI7Ci1sIGMgYwotbCBjIGMKLWx3MjggbHc2IGx3MiBsdzIwLgorbCBsIGwKK2wgbCBsCitsdzE4IGx3MTQgbHcxOC4KIFxmQnRwYXJtIHBhcmFtZXRlcglhdHRyaWJ1dGUJZXNjYXBlIHNlcXVlbmNlXGZQCiAKIG5vbmUJbm9uZQlcXEVbMG0KQEAgLTc5MiwxMyArODczLDE1IEBACiAuUFAKIFdyaXRpbmcgb3V0IHRoZSBhYm92ZSBzZXF1ZW5jZXMsIGFsb25nIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzIHlpZWxkcwogLlBQCisubmUgMTEKIC5UUwogY2VudGVyOwotbCBjIGMKLWwgYyBjCi1sdzI4IGx3NiBsdzIgbHcyMC4KK2wgbCBsCitsIGwgbAorbHcxOCBsdzE0IGx3MTguCiBcZkJzZXF1ZW5jZQl3aGVuIHRvIG91dHB1dAl0ZXJtaW5mbyB0cmFuc2xhdGlvblxmUAogCisuZnQgQ1cKIFxcRVswCWFsd2F5cwlcXEVbMAogOzEJaWYgcDEgb3IgcDYJJT8lcDElcDYlfCV0OzElOwogOzQJaWYgcDIJJT8lcDIlfCV0OzQlOwpAQCAtODA3LDE0ICs4OTAsMTcgQEAKIDs4CWlmIHA3CSU/JXA3JXwldDs4JTsKIG0JYWx3YXlzCW0KIF5OIG9yIF5PCWlmIHA5IF5OLCBlbHNlIF5PCSU/JXA5JXReTiVlXk8lOworLmZ0IFIKIC5URQogLlBQCiBQdXR0aW5nIHRoaXMgYWxsIHRvZ2V0aGVyIGludG8gdGhlIHNnciBzZXF1ZW5jZSBnaXZlczoKIC5QUAorLmZ0IENXCiAubmYKLSAgICBzZ3I9XFxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7Ci0gICAgICAgICU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFxcMDE2JWVcXDAxNyU7LAorICAgIHNncj1cXEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7CisgICAgICAgICU/JXAxJXAzJXwldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XFwwMTYlZVxcMDE3JTssCiAuZmkKKy5mdCBSCiAuUFAKIFJlbWVtYmVyIHRoYXQgaWYgeW91IHNwZWNpZnkgc2dyLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgc2dyMC4KIEFsc28sIHNvbWUgaW1wbGVtZW50YXRpb25zIHJlbHkgb24gc2dyIGJlaW5nIGdpdmVuIGlmIHNncjAgaXMsCkBAIC04MjQsOSArOTEwLDkgQEAKIFRoZSBvbmx5IGRyYXdiYWNrIHRvIGFkZGluZyBhbiBzZ3Igc3RyaW5nIGlzIHRoYXQgdGVybWNhcCBhbHNvCiBhc3N1bWVzIHRoYXQgc2dyMCBkb2VzIG5vdCBleGl0IGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IG1vZGUuCiAuUFAKLVRlcm1pbmFscyB3aXRoIHRoZSBgYG1hZ2ljIGNvb2tpZScnIGdsaXRjaAorVGVybWluYWxzIHdpdGggdGhlIFwqKGBgbWFnaWMgY29va2llXCooJycgZ2xpdGNoCiAuUkIgKCB4bWMgKQotZGVwb3NpdCBzcGVjaWFsIGBgY29va2llcycnIHdoZW4gdGhleSByZWNlaXZlIG1vZGUtc2V0dGluZyBzZXF1ZW5jZXMsCitkZXBvc2l0IHNwZWNpYWwgXCooYGBjb29raWVzXCooJycgd2hlbiB0aGV5IHJlY2VpdmUgbW9kZS1zZXR0aW5nIHNlcXVlbmNlcywKIHdoaWNoIGFmZmVjdCB0aGUgZGlzcGxheSBhbGdvcml0aG0gcmF0aGVyIHRoYW4gaGF2aW5nIGV4dHJhIGJpdHMgZm9yCiBlYWNoIGNoYXJhY3Rlci4KIFNvbWUgdGVybWluYWxzLCBzdWNoIGFzIHRoZSBIUCAyNjIxLCBhdXRvbWF0aWNhbGx5IGxlYXZlIHN0YW5kb3V0CkBAIC04NzEsNiArOTU3LDcgQEAKIElmIHRoZSBrZXlwYWQgY2FuIGJlIHNldCB0byB0cmFuc21pdCBvciBub3QgdHJhbnNtaXQsCiBnaXZlIHRoZXNlIGNvZGVzIGFzIFxmQnNta3hcZlIgYW5kIFxmQnJta3hcZlIuCiBPdGhlcndpc2UgdGhlIGtleXBhZCBpcyBhc3N1bWVkIHRvIGFsd2F5cyB0cmFuc21pdC4KKy5QUAogVGhlIGNvZGVzIHNlbnQgYnkgdGhlIGxlZnQgYXJyb3csIHJpZ2h0IGFycm93LCB1cCBhcnJvdywgZG93biBhcnJvdywKIGFuZCBob21lIGtleXMgY2FuIGJlIGdpdmVuIGFzCiBcZkJrY3ViMSwga2N1ZjEsIGtjdXUxLCBrY3VkMSwgXGZSYW5kXGZCIGtob21lXGZSIHJlc3BlY3RpdmVseS4KQEAgLTg3OCw0MSArOTY1LDYwIEBACiBjYW4gYmUgZ2l2ZW4gYXMgXGZCa2YwLCBrZjEsIC4uLiwga2YxMFxmUi4KIElmIHRoZXNlIGtleXMgaGF2ZSBsYWJlbHMgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBmMCB0aHJvdWdoIGYxMCwgdGhlIGxhYmVscwogY2FuIGJlIGdpdmVuIGFzIFxmQmxmMCwgbGYxLCAuLi4sIGxmMTBcZlIuCisuUFAKIFRoZSBjb2RlcyB0cmFuc21pdHRlZCBieSBjZXJ0YWluIG90aGVyIHNwZWNpYWwga2V5cyBjYW4gYmUgZ2l2ZW46CisuYlAKIC5CIGtsbAogKGhvbWUgZG93biksCisuYlAKIC5CIGticwogKGJhY2tzcGFjZSksCisuYlAKIC5CIGt0YmMKIChjbGVhciBhbGwgdGFicyksCisuYlAKIC5CIGtjdGFiCiAoY2xlYXIgdGhlIHRhYiBzdG9wIGluIHRoaXMgY29sdW1uKSwKKy5iUAogLkIga2NscgogKGNsZWFyIHNjcmVlbiBvciBlcmFzZSBrZXkpLAorLmJQCiAuQiBrZGNoMQogKGRlbGV0ZSBjaGFyYWN0ZXIpLAorLmJQCiAuQiBrZGwxCiAoZGVsZXRlIGxpbmUpLAorLmJQCiAuQiBrcm1pcgogKGV4aXQgaW5zZXJ0IG1vZGUpLAorLmJQCiAuQiBrZWwKIChjbGVhciB0byBlbmQgb2YgbGluZSksCisuYlAKIC5CIGtlZAogKGNsZWFyIHRvIGVuZCBvZiBzY3JlZW4pLAorLmJQCiAuQiBraWNoMQogKGluc2VydCBjaGFyYWN0ZXIgb3IgZW50ZXIgaW5zZXJ0IG1vZGUpLAorLmJQCiAuQiBraWwxCiAoaW5zZXJ0IGxpbmUpLAorLmJQCiAuQiBrbnAKIChuZXh0IHBhZ2UpLAorLmJQCiAuQiBrcHAKIChwcmV2aW91cyBwYWdlKSwKKy5iUAogLkIga2luZAogKHNjcm9sbCBmb3J3YXJkL2Rvd24pLAorLmJQCiAuQiBrcmkKIChzY3JvbGwgYmFja3dhcmQvdXApLAorLmJQCiAuQiBraHRzCiAoc2V0IGEgdGFiIHN0b3AgaW4gdGhpcyBjb2x1bW4pLgorLlBQCiBJbiBhZGRpdGlvbiwgaWYgdGhlIGtleXBhZCBoYXMgYSAzIGJ5IDMgYXJyYXkgb2Yga2V5cyBpbmNsdWRpbmcgdGhlIGZvdXIKIGFycm93IGtleXMsIHRoZSBvdGhlciBmaXZlIGtleXMgY2FuIGJlIGdpdmVuIGFzCiAuQlIga2ExICwKQEAgLTk1Niw3ICsxMDYyLDcgQEAKIHRhYiBzdG9wIGNhbiBiZSBnaXZlbiBhcwogLkIgaHQKICh1c3VhbGx5IGNvbnRyb2wgSSkuCi1BIGBgYmFjay10YWInJyBjb21tYW5kIHdoaWNoIG1vdmVzIGxlZnR3YXJkIHRvIHRoZSBwcmVjZWRpbmcgdGFiIHN0b3AgY2FuCitBIFwqKGBgYmFjay10YWJcKignJyBjb21tYW5kIHdoaWNoIG1vdmVzIGxlZnR3YXJkIHRvIHRoZSBwcmVjZWRpbmcgdGFiIHN0b3AgY2FuCiBiZSBnaXZlbiBhcwogLkJSIGNidCAuCiBCeSBjb252ZW50aW9uLCBpZiB0aGUgdGVsZXR5cGUgbW9kZXMgaW5kaWNhdGUgdGhhdCB0YWJzIGFyZSBiZWluZwpAQCAtOTc0LDcgKzEwODAsNyBAQAogLkIgaXQKIGlzIGdpdmVuLCBzaG93aW5nIHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRoZSB0YWJzIGFyZSBzZXQgdG8uCiBUaGlzIGlzIG5vcm1hbGx5IHVzZWQgYnkgdGhlCi0uSVIgdHNldAorLklSIEBUU0VUQAogY29tbWFuZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBzZXQgdGhlIG1vZGUgZm9yIGhhcmR3YXJlIHRhYiBleHBhbnNpb24sCiBhbmQgd2hldGhlciB0byBzZXQgdGhlIHRhYiBzdG9wcy4KIElmIHRoZSB0ZXJtaW5hbCBoYXMgdGFiIHN0b3BzIHRoYXQgY2FuIGJlIHNhdmVkIGluIG5vbi12b2xhdGlsZSBtZW1vcnksCkBAIC0xMTMxLDcgKzEyMzcsNyBAQAogc3RyaW5nIGlzIHVzZWQuCiAuUFAKIC5TUyBTdGF0dXMgTGluZXMKLVNvbWUgdGVybWluYWxzIGhhdmUgYW4gZXh0cmEgYHN0YXR1cyBsaW5lJyB3aGljaCBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieQorU29tZSB0ZXJtaW5hbHMgaGF2ZSBhbiBleHRyYSBcKihgYHN0YXR1cyBsaW5lXCooJycgd2hpY2ggaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkKIHNvZnR3YXJlIChhbmQgdGh1cyBub3QgY291bnRlZCBpbiB0aGUgdGVybWluYWwncyBcZkJsaW5lc1xmUiBjYXBhYmlsaXR5KS4KIC5QUAogVGhlIHNpbXBsZXN0IGNhc2UgaXMgYSBzdGF0dXMgbGluZSB3aGljaCBpcyBjdXJzb3ItYWRkcmVzc2FibGUgYnV0IG5vdApAQCAtMTE3NCw5ICsxMjgwLDkgQEAKIC5QUAogLlRTIEgKIGNlbnRlciBleHBhbmQ7Ci1jIGwgbCBjCi1jIGwgbCBjCi1sdzI4IGx3NiBsdzIgbHcyMC4KK2wgbCBsIGwKK2wgbCBsIGwKK2x3MjUgbHcxMCBsdzYgbHc2LgogLlwiLlRICiBcZkJHbHlwaAlBQ1MJQXNjaWkJVlQxMDBcZlIKIFxmQk5hbWUJTmFtZQlEZWZhdWx0CU5hbWVcZlIKQEAgLTExODQsNyArMTI5MCw3IEBACiBhcnJvdyBwb2ludGluZyBkb3duCUFDU19EQVJST1cJdgkuCiBhcnJvdyBwb2ludGluZyBsZWZ0CUFDU19MQVJST1cJPAksCiBhcnJvdyBwb2ludGluZyByaWdodAlBQ1NfUkFSUk9XCT4JKwotYXJyb3cgcG9pbnRpbmcgdXAJQUNTX1VBUlJPVwleCS0KK2Fycm93IHBvaW50aW5nIHVwCUFDU19VQVJST1cJXglcLQogYm9hcmQgb2Ygc3F1YXJlcwlBQ1NfQk9BUkQJIwloCiBidWxsZXQgICAgICAgICAgCUFDU19CVUxMRVQJbwl+CiBjaGVja2VyIGJvYXJkIChzdGlwcGxlKQlBQ1NfQ0tCT0FSRAk6CWEKQEAgLTExOTIsNyArMTI5OCw3IEBACiBkaWFtb25kICAgICAgICAgCUFDU19ESUFNT05ECSsJYAogZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvCUFDU19HRVFVQUwJPgl6CiBncmVlayBwaSAgICAgICAgCUFDU19QSQkqCXsKLWhvcml6b250YWwgbGluZSAJQUNTX0hMSU5FCS0JcQoraG9yaXpvbnRhbCBsaW5lIAlBQ1NfSExJTkUJXC0JcQogbGFudGVybiBzeW1ib2wgIAlBQ1NfTEFOVEVSTgkjCWkKIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyCUFDU19QTFVTCSsJbgogbGVzcy10aGFuLW9yLWVxdWFsLXRvCUFDU19MRVFVQUwJPAl5CkBAIC0xMjAxLDggKzEzMDcsOCBAQAogbm90LWVxdWFsICAgICAgIAlBQ1NfTkVRVUFMCSEJfAogcGx1cy9taW51cyAgICAgIAlBQ1NfUExNSU5VUwkjCWcKIHNjYW4gbGluZSAxICAgICAJQUNTX1MxICAJfglvCi1zY2FuIGxpbmUgMyAgICAgCUFDU19TMyAgCS0JcAotc2NhbiBsaW5lIDcgICAgIAlBQ1NfUzcgIAktCXIKK3NjYW4gbGluZSAzICAgICAJQUNTX1MzICAJXC0JcAorc2NhbiBsaW5lIDcgICAgIAlBQ1NfUzcgIAlcLQlyCiBzY2FuIGxpbmUgOSAgICAgCUFDU19TOSAgCVwmXwlzCiBzb2xpZCBzcXVhcmUgYmxvY2sJQUNTX0JMT0NLCSMJMAogdGVlIHBvaW50aW5nIGRvd24JQUNTX1RURUUJKwl3CkBAIC0xMjIzLDExICsxMzI5LDExIEBACiAuUFAKIC5TUyBDb2xvciBIYW5kbGluZwogLlBQCi1Nb3N0IGNvbG9yIHRlcm1pbmFscyBhcmUgZWl0aGVyIGBUZWt0cm9uaXgtbGlrZScgb3IgYEhQLWxpa2UnLgorTW9zdCBjb2xvciB0ZXJtaW5hbHMgYXJlIGVpdGhlciBcKihgYFRla3Ryb25peC1saWtlXCooJycgb3IgXCooYGBIUC1saWtlXCooJycuCiBUZWt0cm9uaXgtbGlrZQogdGVybWluYWxzIGhhdmUgYSBwcmVkZWZpbmVkIHNldCBvZiBOIGNvbG9ycyAod2hlcmUgTiB1c3VhbGx5IDgpLCBhbmQgY2FuIHNldAogY2hhcmFjdGVyLWNlbGwgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjaGFyYWN0ZXJzIGluZGVwZW5kZW50bHksIG1peGluZyB0aGVtCi1pbnRvIE4gKiBOIGNvbG9yLXBhaXJzLgoraW50byBOXCAqXCBOIGNvbG9yLXBhaXJzLgogT24gSFAtbGlrZSB0ZXJtaW5hbHMsIHRoZSB1c2UgbXVzdCBzZXQgZWFjaCBjb2xvcgogcGFpciB1cCBzZXBhcmF0ZWx5IChmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGFyZSBub3QgaW5kZXBlbmRlbnRseSBzZXR0YWJsZSkuCiBVcCB0byBNIGNvbG9yLXBhaXJzIG1heSBiZSBzZXQgdXAgZnJvbSAyKk0gZGlmZmVyZW50IGNvbG9ycy4KQEAgLTEzMDMsNiArMTQwOSw3IEBACiB5ZWxsb3cJXGZCQ09MT1JfWUVMTE9XXGZSCTYJbWF4LG1heCwwCiB3aGl0ZQlcZkJDT0xPUl9XSElURVxmUgk3CW1heCxtYXgsbWF4CiAuVEUKKy5QUAogSXQgaXMgaW1wb3J0YW50IHRvIG5vdCBjb25mdXNlIHRoZSB0d28gc2V0cyBvZiBjb2xvciBjYXBhYmlsaXRpZXM7CiBvdGhlcndpc2UgcmVkL2JsdWUgd2lsbCBiZSBpbnRlcmNoYW5nZWQgb24gdGhlIGRpc3BsYXkuCiAuUFAKQEAgLTEzMTIsNyArMTQxOSw3IEBACiBPbiBhIFRla3Ryb25peC1saWtlIHRlcm1pbmFsLCB0aGUgY2FwYWJpbGl0eSBcZkJjY2NcZlIgbWF5IGJlIHByZXNlbnQgdG8KIGluZGljYXRlIHRoYXQgY29sb3JzIGNhbiBiZSBtb2RpZmllZC4KIElmIHNvLCB0aGUgXGZCaW5pdGNcZlIgY2FwYWJpbGl0eSB3aWxsCi10YWtlIGEgY29sb3IgbnVtYmVyICgwIHRvIFxmQmNvbG9yc1xmUiAtIDEpYW5kIHRocmVlIG1vcmUgcGFyYW1ldGVycyB3aGljaAordGFrZSBhIGNvbG9yIG51bWJlciAoMCB0byBcZkJjb2xvcnNcZlIgXC0gMSlhbmQgdGhyZWUgbW9yZSBwYXJhbWV0ZXJzIHdoaWNoCiBkZXNjcmliZSB0aGUgY29sb3IuCiBUaGVzZSB0aHJlZSBwYXJhbWV0ZXJzIGRlZmF1bHQgdG8gYmVpbmcgaW50ZXJwcmV0ZWQgYXMgUkdCCiAoUmVkLCBHcmVlbiwgQmx1ZSkgdmFsdWVzLgpAQCAtMTMyNCw3ICsxNDMxLDcgQEAKIE9uIGFuIEhQLWxpa2UgdGVybWluYWwsIFxmQmluaXRwXGZSIG1heSBnaXZlIGEgY2FwYWJpbGl0eSBmb3IgY2hhbmdpbmcgYQogY29sb3ItcGFpciB2YWx1ZS4KIEl0IHdpbGwgdGFrZSBzZXZlbiBwYXJhbWV0ZXJzOyBhIGNvbG9yLXBhaXIgbnVtYmVyICgwIHRvCi1cZkJtYXhfcGFpcnNcZlIgLSAxKSwgYW5kIHR3byB0cmlwbGVzIGRlc2NyaWJpbmcgZmlyc3QgYmFja2dyb3VuZCBhbmQgdGhlbgorXGZCbWF4X3BhaXJzXGZSIFwtIDEpLCBhbmQgdHdvIHRyaXBsZXMgZGVzY3JpYmluZyBmaXJzdCBiYWNrZ3JvdW5kIGFuZCB0aGVuCiBmb3JlZ3JvdW5kIGNvbG9ycy4KIFRoZXNlIHBhcmFtZXRlcnMgbXVzdCBiZSAoUmVkLCBHcmVlbiwgQmx1ZSkgb3IKIChIdWUsIExpZ2h0bmVzcywgU2F0dXJhdGlvbikgZGVwZW5kaW5nIG9uIFxmQmhsc1xmUi4KQEAgLTEzMzksMTggKzE0NDYsMjUgQEAKIC5QUAogLlRTCiBjZW50ZXI7Ci1sIGMgYwotbHcyNSBsdzIgbHcxMC4KLVxmQkF0dHJpYnV0ZQlCaXQJRGVjaW1hbFxmUgotQV9TVEFORE9VVAkwCTEKLUFfVU5ERVJMSU5FCTEJMgotQV9SRVZFUlNFCTIJNAotQV9CTElOSyAgIAkzCTgKLUFfRElNICAgICAgCTQJMTYKLUFfQk9MRCAgICAJNQkzMgotQV9JTlZJUyAgIAk2CTY0Ci1BX1BST1RFQ1QJNwkxMjgKLUFfQUxUQ0hBUlNFVAk4CTI1NgorbCBsIGwgbAorbHcyMCBsdzIgbHcxMCBsdzEwLgorXGZCQXR0cmlidXRlCUJpdAlEZWNpbWFsCVNldCBieVxmUgorQV9TVEFORE9VVAkwCTEJc2dyCitBX1VOREVSTElORQkxCTIJc2dyCitBX1JFVkVSU0UJMgk0CXNncgorQV9CTElOSyAgIAkzCTgJc2dyCitBX0RJTSAgICAgIAk0CTE2CXNncgorQV9CT0xEICAgIAk1CTMyCXNncgorQV9JTlZJUyAgIAk2CTY0CXNncgorQV9QUk9URUNUCTcJMTI4CXNncgorQV9BTFRDSEFSU0VUCTgJMjU2CXNncgorQV9IT1JJWk9OVEFMCTkJNTEyCXNncjEKK0FfTEVGVAkxMAkxMDI0CXNncjEKK0FfTE9XCTExCTIwNDgJc2dyMQorQV9SSUdIVAkxMgk0MDk2CXNncjEKK0FfVE9QCTEzCTgxOTIJc2dyMQorQV9WRVJUSUNBTAkxNAkxNjM4NAlzZ3IxCitBX0lUQUxJQwkxNQkzMjc2OAlzaXRtCiAuVEUKIC5QUAogRm9yIGV4YW1wbGUsIG9uIG1hbnkgSUJNIFBDIGNvbnNvbGVzLCB0aGUgdW5kZXJsaW5lIGF0dHJpYnV0ZSBjb2xsaWRlcyB3aXRoIHRoZQpAQCAtMTM4OSw3ICsxNTAzLDcgQEAKIC5CUiByZXAgLgogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgY2hhcmFjdGVyIHRvIGJlIHJlcGVhdGVkIGFuZCB0aGUgc2Vjb25kCiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCBpdC4KLVRodXMsIHRwYXJtKHJlcGVhdF9jaGFyLCAneCcsIDEwKSBpcyB0aGUgc2FtZSBhcyBgeHh4eHh4eHh4eCcuCitUaHVzLCB0cGFybShyZXBlYXRfY2hhciwgJ3gnLCAxMCkgaXMgdGhlIHNhbWUgYXMgXCooYGB4eHh4eHh4eHh4XCooJycuCiAuUFAKIElmIHRoZSB0ZXJtaW5hbCBoYXMgYSBzZXR0YWJsZSBjb21tYW5kIGNoYXJhY3Rlciwgc3VjaCBhcyB0aGUgXHMtMVRFS1RST05JWFxzKzEgNDAyNSwKIHRoaXMgY2FuIGJlIGluZGljYXRlZCB3aXRoCkBAIC0xNDIwLDEzICsxNTM0LDEzIEBACiAuSSB2aXJ0dWFsCiB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgZm9yIHdoaWNoIHRoZSBlc2NhcGUgc2VxdWVuY2VzIGFyZSBrbm93bi4pCiAuUFAKLUlmIHRoZSB0ZXJtaW5hbCBoYXMgYSBgYG1ldGEga2V5Jycgd2hpY2ggYWN0cyBhcyBhIHNoaWZ0IGtleSwKK0lmIHRoZSB0ZXJtaW5hbCBoYXMgYSBcKihgYG1ldGEga2V5XCooJycgd2hpY2ggYWN0cyBhcyBhIHNoaWZ0IGtleSwKIHNldHRpbmcgdGhlIDh0aCBiaXQgb2YgYW55IGNoYXJhY3RlciB0cmFuc21pdHRlZCwgdGhpcyBmYWN0IGNhbgogYmUgaW5kaWNhdGVkIHdpdGgKIC5CUiBrbSAuCiBPdGhlcndpc2UsIHNvZnR3YXJlIHdpbGwgYXNzdW1lIHRoYXQgdGhlIDh0aCBiaXQgaXMgcGFyaXR5IGFuZCBpdAogd2lsbCB1c3VhbGx5IGJlIGNsZWFyZWQuCi1JZiBzdHJpbmdzIGV4aXN0IHRvIHR1cm4gdGhpcyBgYG1ldGEgbW9kZScnIG9uIGFuZCBvZmYsIHRoZXkKK0lmIHN0cmluZ3MgZXhpc3QgdG8gdHVybiB0aGlzIFwqKGBgbWV0YSBtb2RlXCooJycgb24gYW5kIG9mZiwgdGhleQogY2FuIGJlIGdpdmVuIGFzCiAuQiBzbW0KIGFuZApAQCAtMTQ3MCw3ICsxNTg0LDcgQEAKIC5QUAogLlNTIEdsaXRjaGVzIGFuZCBCcmFpbmRhbWFnZQogLlBQCi1IYXplbHRpbmUgdGVybWluYWxzLCB3aGljaCBkbyBub3QgYWxsb3cgYH4nIGNoYXJhY3RlcnMgdG8gYmUgZGlzcGxheWVkIHNob3VsZAorSGF6ZWx0aW5lIHRlcm1pbmFscywgd2hpY2ggZG8gbm90IGFsbG93IFwqKGBgflwqKCcnIGNoYXJhY3RlcnMgdG8gYmUgZGlzcGxheWVkIHNob3VsZAogaW5kaWNhdGUgXGZCaHpcZlIuCiAuUFAKIFRlcm1pbmFscyB3aGljaCBpZ25vcmUgYSBsaW5lLWZlZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYW4gXGZCYW1cZlIgd3JhcCwKQEAgLTE0ODUsMTAgKzE1OTksMTAgQEAKIC5QUAogVGVsZXJheSB0ZXJtaW5hbHMsIHdoZXJlIHRhYnMgdHVybiBhbGwgY2hhcmFjdGVycyBtb3ZlZCBvdmVyIHRvIGJsYW5rcywKIHNob3VsZCBpbmRpY2F0ZSBcZkJ4dFxmUiAoZGVzdHJ1Y3RpdmUgdGFicykuCi1Ob3RlOiB0aGUgdmFyaWFibGUgaW5kaWNhdGluZyB0aGlzIGlzIG5vdyBgZGVzdF90YWJzX21hZ2ljX3Ntc28nOyBpbgorTm90ZTogdGhlIHZhcmlhYmxlIGluZGljYXRpbmcgdGhpcyBpcyBub3cgXCooYGBkZXN0X3RhYnNfbWFnaWNfc21zb1wqKCcnOyBpbgogb2xkZXIgdmVyc2lvbnMsIGl0IHdhcyB0ZWxlcmF5X2dsaXRjaC4KIFRoaXMgZ2xpdGNoIGlzIGFsc28gdGFrZW4gdG8gbWVhbiB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBwb3NpdGlvbgotdGhlIGN1cnNvciBvbiB0b3Agb2YgYSBgYG1hZ2ljIGNvb2tpZScnLAordGhlIGN1cnNvciBvbiB0b3Agb2YgYSBcKihgYG1hZ2ljIGNvb2tpZVwqKCcnLAogdGhhdCB0byBlcmFzZSBzdGFuZG91dCBtb2RlIGl0IGlzIGluc3RlYWQgbmVjZXNzYXJ5IHRvIHVzZQogZGVsZXRlIGFuZCBpbnNlcnQgbGluZS4KIFRoZSBuY3Vyc2VzIGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhpcyBnbGl0Y2guCkBAIC0xNDk5LDcgKzE2MTMsNyBAQAogaW5kaWNhdGluZyB0aGF0IHRoZSBmMSBrZXkgaXMgdXNlZCBmb3IgZXNjYXBlIGFuZCBmMiBmb3IgY29udHJvbCBDLgogKE9ubHkgY2VydGFpbiBTdXBlcmJlZXMgaGF2ZSB0aGlzIHByb2JsZW0sIGRlcGVuZGluZyBvbiB0aGUgUk9NLikKIE5vdGUgdGhhdCBpbiBvbGRlciB0ZXJtaW5mbyB2ZXJzaW9ucywgdGhpcyBjYXBhYmlsaXR5IHdhcyBjYWxsZWQKLWBiZWVoaXZlX2dsaXRjaCc7IGl0IGlzIG5vdyBgbm9fZXNjX2N0bF9jJy4KK1wqKGBgYmVlaGl2ZV9nbGl0Y2hcKignJzsgaXQgaXMgbm93IFwqKGBgbm9fZXNjX2N0bF9jXCooJycuCiAuUFAKIE90aGVyIHNwZWNpZmljIHRlcm1pbmFsIHByb2JsZW1zIG1heSBiZSBjb3JyZWN0ZWQgYnkgYWRkaW5nIG1vcmUKIGNhcGFiaWxpdGllcyBvZiB0aGUgZm9ybSBcZkJ4XGZSXGZJeFxmUi4KQEAgLTE1MjQsMTAgKzE2MzgsMTIgQEAKIEEgY2FwYWJpbGl0eSBjYW4gYmUgY2FuY2VsZWQgYnkgcGxhY2luZyBcZkJ4eEBcZlIgdG8gdGhlIGxlZnQgb2YgdGhlCiB1c2UgcmVmZXJlbmNlIHRoYXQgaW1wb3J0cyBpdCwgd2hlcmUgXGZJeHhcZlAgaXMgdGhlIGNhcGFiaWxpdHkuCiBGb3IgZXhhbXBsZSwgdGhlIGVudHJ5CisuUlMKIC5QUAotCTI2MjEtbmwsIHNta3hALCBybWt4QCwgdXNlPTI2MjEsCisyNjIxXC1ubCwgc21reEAsIHJta3hALCB1c2U9MjYyMSwKKy5SRQogLlBQCi1kZWZpbmVzIGEgMjYyMS1ubCB0aGF0IGRvZXMgbm90IGhhdmUgdGhlIFxmQnNta3hcZlIgb3IgXGZCcm1reFxmUiBjYXBhYmlsaXRpZXMsCitkZWZpbmVzIGEgMjYyMVwtbmwgdGhhdCBkb2VzIG5vdCBoYXZlIHRoZSBcZkJzbWt4XGZSIG9yIFxmQnJta3hcZlIgY2FwYWJpbGl0aWVzLAogYW5kIGhlbmNlIGRvZXMgbm90IHR1cm4gb24gdGhlIGZ1bmN0aW9uIGtleSBsYWJlbHMgd2hlbiBpbiB2aXN1YWwgbW9kZS4KIFRoaXMgaXMgdXNlZnVsIGZvciBkaWZmZXJlbnQgbW9kZXMgZm9yIGEgdGVybWluYWwsIG9yIGZvciBkaWZmZXJlbnQKIHVzZXIgcHJlZmVyZW5jZXMuCkBAIC0xNTQ0LDcgKzE2NjAsNyBAQAogYWxsb2NhdGUgYSAxMDI0LWJ5dGUgYnVmZmVyIGZvciB0aGUgdGVybWNhcCBlbnRyeS4KIFRoZSBlbnRyeSBnZXRzIG51bGwtdGVybWluYXRlZCBieQogdGhlIHRlcm1jYXAgbGlicmFyeSwgc28gdGhhdCBtYWtlcyB0aGUgbWF4aW11bSBzYWZlIGxlbmd0aCBmb3IgYSB0ZXJtY2FwIGVudHJ5Ci0xay0xICgxMDIzKSBieXRlcy4KKzFrXC0xICgxMDIzKSBieXRlcy4KIERlcGVuZGluZyBvbiB3aGF0IHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIHRlcm1jYXAgbGlicmFyeQogYmVpbmcgdXNlZCBkb2VzLCBhbmQgd2hlcmUgaW4gdGhlIHRlcm1jYXAgZmlsZSB0aGUgdGVybWluYWwgdHlwZSB0aGF0IFxmQnRnZXRlbnQoKVxmUAogaXMgc2VhcmNoaW5nIGZvciBpcywgc2V2ZXJhbCBiYWQgdGhpbmdzIGNhbiBoYXBwZW4uCkBAIC0xNTcwLDE5ICsxNjg2LDE1IEBACiBiYWNrc2xhc2gtbmV3bGluZSBwYWlycywgd2hpY2ggXGZCdGdldGVudCgpXGZQIHN0cmlwcyBvdXQgd2hpbGUgcmVhZGluZyBpdC4KIFNvbWUgdGVybWNhcCBsaWJyYXJpZXMgc3RyaXAgb2ZmIHRoZSBmaW5hbCBuZXdsaW5lLCB0b28gKEdOVSB0ZXJtY2FwIGRvZXMgbm90KS4KIE5vdyBzdXBwb3NlOgotLlRQIDUKLSoKKy5iUAogYSB0ZXJtY2FwIGVudHJ5IGJlZm9yZSBleHBhbnNpb24gaXMgbW9yZSB0aGFuIDEwMjMgYnl0ZXMgbG9uZywKLS5UUCA1Ci0qCisuYlAKIGFuZCB0aGUgYXBwbGljYXRpb24gaGFzIG9ubHkgYWxsb2NhdGVkIGEgMWsgYnVmZmVyLAotLlRQIDUKLSoKKy5iUAogYW5kIHRoZSB0ZXJtY2FwIGxpYnJhcnkgKGxpa2UgdGhlIG9uZSBpbiBCU0QvT1MgMS4xIGFuZCBHTlUpIHJlYWRzCiB0aGUgd2hvbGUgZW50cnkgaW50byB0aGUgYnVmZmVyLCBubyBtYXR0ZXIgd2hhdCBpdHMgbGVuZ3RoLCB0byBzZWUKIGlmIGl0IGlzIHRoZSBlbnRyeSBpdCB3YW50cywKLS5UUCA1Ci0qCisuYlAKIGFuZCBcZkJ0Z2V0ZW50KClcZlAgaXMgc2VhcmNoaW5nIGZvciBhIHRlcm1pbmFsIHR5cGUgdGhhdCBlaXRoZXIgaXMgdGhlCiBsb25nIGVudHJ5LCBhcHBlYXJzIGluIHRoZSB0ZXJtY2FwIGZpbGUgYWZ0ZXIgdGhlIGxvbmcgZW50cnksIG9yCiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGZpbGUgYXQgYWxsIChzbyB0aGF0IFxmQnRnZXRlbnQoKVxmUCBoYXMgdG8gc2VhcmNoCkBAIC0xNjEyLDE5ICsxNzI0LDI0IEBACiB0ZXJtaW5hbCB0eXBlcyBhbmQgdXNlcnMgd2hvc2UgVEVSTSB2YXJpYWJsZSBkb2VzIG5vdCBoYXZlIGEgdGVybWNhcAogZW50cnkuCiAuUFAKLVdoZW4gaW4gLUMgKHRyYW5zbGF0ZSB0byB0ZXJtY2FwKSBtb2RlLCB0aGUgXGZCbmN1cnNlc1xmUiBpbXBsZW1lbnRhdGlvbiBvZgorV2hlbiBpbiBcLUMgKHRyYW5zbGF0ZSB0byB0ZXJtY2FwKSBtb2RlLCB0aGUgXGZCbmN1cnNlc1xmUiBpbXBsZW1lbnRhdGlvbiBvZgogXGZCQFRJQ0BcZlIoMU0pIGlzc3VlcyB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gdGhlIHByZS10YyBsZW5ndGggb2YgYSB0ZXJtY2FwCiB0cmFuc2xhdGlvbiBpcyB0b28gbG9uZy4KLVRoZSAtYyAoY2hlY2spIG9wdGlvbiBhbHNvIGNoZWNrcyByZXNvbHZlZCAoYWZ0ZXIgdGMKK1RoZSBcLWMgKGNoZWNrKSBvcHRpb24gYWxzbyBjaGVja3MgcmVzb2x2ZWQgKGFmdGVyIHRjCiBleHBhbnNpb24pIGxlbmd0aHMuCiAuU1MgQmluYXJ5IENvbXBhdGliaWxpdHkKIEl0IGlzIG5vdCB3aXNlIHRvIGNvdW50IG9uIHBvcnRhYmlsaXR5IG9mIGJpbmFyeSB0ZXJtaW5mbyBlbnRyaWVzIGJldHdlZW4KIGNvbW1lcmNpYWwgVU5JWCB2ZXJzaW9ucy4KIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byB2ZXJzaW9ucwotb2YgdGVybWluZm8gKHVuZGVyIEhQLVVYIGFuZCBBSVgpIHdoaWNoIGRpdmVyZ2VkIGZyb20gU3lzdGVtIFYgdGVybWluZm8gYWZ0ZXIKK29mIHRlcm1pbmZvICh1bmRlciBIUFwtVVggYW5kIEFJWCkgd2hpY2ggZGl2ZXJnZWQgZnJvbSBTeXN0ZW0gViB0ZXJtaW5mbyBhZnRlcgogU1ZyMSwgYW5kIGhhdmUgYWRkZWQgZXh0ZW5zaW9uIGNhcGFiaWxpdGllcyB0byB0aGUgc3RyaW5nIHRhYmxlIHRoYXQgKGluIHRoZQogYmluYXJ5IGZvcm1hdCkgY29sbGlkZSB3aXRoIFN5c3RlbSBWIGFuZCBYU0kgQ3Vyc2VzIGV4dGVuc2lvbnMuCiAuU0ggRVhURU5TSU9OUworLlBQCitTZWFyY2hpbmcgZm9yIHRlcm1pbmFsIGRlc2NyaXB0aW9ucyBpbgorXGZCJEhPTUUvLnRlcm1pbmZvXGZSIGFuZCBURVJNSU5GT19ESVJTIAoraXMgbm90IHN1cHBvcnRlZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMuCisuUFAKIFNvbWUgU1ZyNCBcZkJjdXJzZXNcZlIgaW1wbGVtZW50YXRpb25zLCBhbmQgYWxsIHByZXZpb3VzIHRvIFNWcjQsIGRvIG5vdAogaW50ZXJwcmV0IHRoZSAlQSBhbmQgJU8gb3BlcmF0b3JzIGluIHBhcmFtZXRlciBzdHJpbmdzLgogLlBQCkBAIC0xNjUyLDM1ICsxNzY5LDQ0IEBACiBpbnRlcnByZXQgaXQgYXMgXGZCS0VZX01PVVNFXGZSLCBmb3IgdXNlIGJ5IHRlcm1pbmFscyBhbmQgZW11bGF0b3JzIGxpa2UgeHRlcm0KIHRoYXQgY2FuIHJldHVybiBtb3VzZS10cmFja2luZyBpbmZvcm1hdGlvbiBpbiB0aGUga2V5Ym9hcmQtaW5wdXQgc3RyZWFtLgogLlBQCitYL09wZW4gQ3Vyc2VzIGRvZXMgbm90IG1lbnRpb24gaXRhbGljcy4KK1BvcnRhYmxlIGFwcGxpY2F0aW9ucyBtdXN0IGFzc3VtZSB0aGF0IG51bWVyaWMgY2FwYWJpbGl0aWVzIGFyZQorc2lnbmVkIDE2LWJpdCB2YWx1ZXMuCitUaGlzIGluY2x1ZGVzIHRoZSBcZklub19jb2xvcl92aWRlb1xmUCAobmN2KSBjYXBhYmlsaXR5LgorVGhlIDMyNzY4IG1hc2sgdmFsdWUgdXNlZCBmb3IgaXRhbGljcyB3aXRoIG5jdiBjYW4gYmUgY29uZnVzZWQgd2l0aAorYW4gYWJzZW50IG9yIGNhbmNlbGxlZCBuY3YuCitJZiBpdGFsaWNzIHNob3VsZCB3b3JrIHdpdGggY29sb3JzLAordGhlbiB0aGUgbmN2IHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkLCBldmVuIGlmIGl0IGlzIHplcm8uCisuUFAKIERpZmZlcmVudCBjb21tZXJjaWFsIHBvcnRzIG9mIHRlcm1pbmZvIGFuZCBjdXJzZXMgc3VwcG9ydCBkaWZmZXJlbnQgc3Vic2V0cyBvZgogdGhlIFhTSSBDdXJzZXMgc3RhbmRhcmQgYW5kIChpbiBzb21lIGNhc2VzKSBkaWZmZXJlbnQgZXh0ZW5zaW9uIHNldHMuCiBIZXJlCiBpcyBhIHN1bW1hcnksIGFjY3VyYXRlIGFzIG9mIE9jdG9iZXIgMTk5NToKIC5QUAotXGZCU1ZSNCwgU29sYXJpcywgbmN1cnNlc1xmUiAtLQorXGZCU1ZSNCwgU29sYXJpcywgbmN1cnNlc1xmUiBcLVwtCiBUaGVzZSBzdXBwb3J0IGFsbCBTVnI0IGNhcGFiaWxpdGllcy4KIC5QUAotXGZCU0dJXGZSIC0tCitcZkJTR0lcZlIgXC1cLQogU3VwcG9ydHMgdGhlIFNWcjQgc2V0LCBhZGRzIG9uZSB1bmRvY3VtZW50ZWQgZXh0ZW5kZWQgc3RyaW5nCiBjYXBhYmlsaXR5IChcZkJzZXRfcGdsZW5cZlIpLgogLlBQCi1cZkJTVnIxLCBVbHRyaXhcZlIgLS0KK1xmQlNWcjEsIFVsdHJpeFxmUiBcLVwtCiBUaGVzZSBzdXBwb3J0IGEgcmVzdHJpY3RlZCBzdWJzZXQgb2YgdGVybWluZm8gY2FwYWJpbGl0aWVzLgotVGhlIGJvb2xlYW5zCi1lbmQgd2l0aCBcZkJ4b25feG9mZlxmUjsgdGhlIG51bWVyaWNzIHdpdGggXGZCd2lkdGhfc3RhdHVzX2xpbmVcZlI7IGFuZCB0aGUKLXN0cmluZ3Mgd2l0aCBcZkJwcnRyX25vblxmUi4KK1RoZSBib29sZWFucyBlbmQgd2l0aCBcZkJ4b25feG9mZlxmUjsKK3RoZSBudW1lcmljcyB3aXRoIFxmQndpZHRoX3N0YXR1c19saW5lXGZSOworYW5kIHRoZSBzdHJpbmdzIHdpdGggXGZCcHJ0cl9ub25cZlIuCiAuUFAKLVxmQkhQL1VYXGZSIC0tCitcZkJIUC9VWFxmUiBcLVwtCiBTdXBwb3J0cyB0aGUgU1ZyMSBzdWJzZXQsIHBsdXMgdGhlIFNWclsyMzRdIG51bWVyaWNzIFxmQm51bV9sYWJlbHNcZlIsCiBcZkJsYWJlbF9oZWlnaHRcZlIsIFxmQmxhYmVsX3dpZHRoXGZSLCBwbHVzIGZ1bmN0aW9uIGtleXMgMTEgdGhyb3VnaCA2MywgcGx1cwogXGZCcGxhYl9ub3JtXGZSLCBcZkJsYWJlbF9vblxmUiwgYW5kIFxmQmxhYmVsX29mZlxmUiwgcGx1cyBzb21lIGluY29tcGF0aWJsZQogZXh0ZW5zaW9ucyBpbiB0aGUgc3RyaW5nIHRhYmxlLgogLlBQCi1cZkJBSVhcZlIgLS0KK1xmQkFJWFxmUiBcLVwtCiBTdXBwb3J0cyB0aGUgU1ZyMSBzdWJzZXQsIHBsdXMgZnVuY3Rpb24ga2V5cyAxMSB0aHJvdWdoIDYzLCBwbHVzIGEgbnVtYmVyCiBvZiBpbmNvbXBhdGlibGUgc3RyaW5nIHRhYmxlIGV4dGVuc2lvbnMuCiAuUFAKLVxmQk9TRlxmUiAtLQorXGZCT1NGXGZSIFwtXC0KIFN1cHBvcnRzIGJvdGggdGhlIFNWcjQgc2V0IGFuZCB0aGUgQUlYIGV4dGVuc2lvbnMuCiAuU0ggRklMRVMKIC5UUCAyNQpAQCAtMTY5MiwxMiArMTgxOCw3IEBACiBcZkJjdXJzZXNcZlIoM1gpLAogXGZCcHJpbnRmXGZSKDMpLAogXGZCdGVybVxmUihcKm4pLgorXGZCdGVybV92YXJpYWJsZXNcZlIoM1gpLgogLlNIIEFVVEhPUlMKIFpleWQgTS4gQmVuLUhhbGltLCBFcmljIFMuIFJheW1vbmQsIFRob21hcyBFLiBEaWNrZXkuCiBCYXNlZCBvbiBwY3Vyc2VzIGJ5IFBhdmVsIEN1cnRpcy4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL3RpYy4xbSBiL21hbi90aWMuMW0KaW5kZXggMzQzZWMzMi4uODc4ZTIxMyAxMDA2NDQKLS0tIGEvbWFuL3RpYy4xbQorKysgYi9tYW4vdGljLjFtCkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTkgKzI2LDI5IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiB0aWMuMW0sdiAxLjQ0IDIwMDYvMTIvMjQgMTc6NTk6MTEgdG9tIEV4cCAkCisuXCIgJElkOiB0aWMuMW0sdiAxLjYwIDIwMTQvMDUvMjQgMjI6MDA6MTEgdG9tIEV4cCAkCiAuVEggQFRJQ0AgMU0gIiIKKy5pZSBcbiguZyAuZHMgYGAgXChscQorLmVsICAgICAgIC5kcyBgYCBgYAorLmllIFxuKC5nIC5kcyAnJyBcKHJxCisuZWwgICAgICAgLmRzICcnICcnCiAuZHMgbiA1CiAuZHMgZCBAVEVSTUlORk9ACisuZGUgYlAKKy5JUCBcKGJ1IDQKKy4uCiAuU0ggTkFNRQotXGZCdGljXGZSIC0gdGhlIFxmSXRlcm1pbmZvXGZSIGVudHJ5LWRlc2NyaXB0aW9uIGNvbXBpbGVyCitcZkJAVElDQFxmUiBcLSB0aGUgXGZJdGVybWluZm9cZlIgZW50cnktZGVzY3JpcHRpb24gY29tcGlsZXIKIC5TSCBTWU5PUFNJUwotXGZCdGljXGZSCi1bXGZCLVwKK1xmQkBUSUNAXGZSCitbXGZCXC1cCiswXAogMVwKIENcCitEXAogR1wKIElcCitLXAogTFwKIE5cCiBUXApAQCAtNTMsNTkgKzYzLDEzNyBAQAogdFwKIHhcCiBcZlJdCi1bXGZCLWVcZlIgXGZJbmFtZXNcZlJdCi1bXGZCLW9cZlIgXGZJZGlyXGZSXQotW1xmQi1SXGZSIFxmSXN1YnNldFxmUl0KLVtcZkItdlxmUltcZkluXGZSXV0KLVtcZkItd1xmUltcZkluXGZSXV0KK1tcZkJcLWVcZlIgXGZJbmFtZXNcZlJdCitbXGZCXC1vXGZSIFxmSWRpclxmUl0KK1tcZkJcLVJcZlIgXGZJc3Vic2V0XGZSXQorW1xmQlwtdlxmUltcZkluXGZSXV0KK1tcZkJcLXdcZlJbXGZJblxmUl1dCiBcZklmaWxlXGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgotVGhlIGNvbW1hbmQgXGZCdGljXGZSIHRyYW5zbGF0ZXMgYSBcZkJ0ZXJtaW5mb1xmUiBmaWxlIGZyb20gc291cmNlCi1mb3JtYXQgaW50byBjb21waWxlZCBmb3JtYXQuICBUaGUgY29tcGlsZWQgZm9ybWF0IGlzIG5lY2Vzc2FyeSBmb3IgdXNlIHdpdGgKK1RoZSBcZkJAVElDQFxmUiBjb21tYW5kIHRyYW5zbGF0ZXMgYSBcZkJ0ZXJtaW5mb1xmUiBmaWxlIGZyb20gc291cmNlCitmb3JtYXQgaW50byBjb21waWxlZCBmb3JtYXQuCitUaGUgY29tcGlsZWQgZm9ybWF0IGlzIG5lY2Vzc2FyeSBmb3IgdXNlIHdpdGgKIHRoZSBsaWJyYXJ5IHJvdXRpbmVzIGluIFxmQm5jdXJzZXNcZlIoM1gpLgogLlBQCi1UaGUgcmVzdWx0cyBhcmUgbm9ybWFsbHkgcGxhY2VkIGluIHRoZSBzeXN0ZW0gdGVybWluZm8KLWRpcmVjdG9yeSBcZkJcKmRcZlIuICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3IuCitBcyBkZXNjcmliZWQgaW4gXGZCdGVybVxmUihcKm4pLCB0aGUgZGF0YWJhc2UgbWF5IGJlIGVpdGhlciBhIGRpcmVjdG9yeQordHJlZSAob25lIGZpbGUgcGVyIHRlcm1pbmFsIGVudHJ5KSBvciBhIGhhc2hlZCBkYXRhYmFzZSAob25lIHJlY29yZCBwZXIgZW50cnkpLgorVGhlIFxmQkBUSUNAXGZSIGNvbW1hbmQgd3JpdGVzIG9ubHkgb25lIHR5cGUgb2YgZW50cnksCitkZXBlbmRpbmcgb24gaG93IGl0IHdhcyBidWlsdDoKKy5iUAorRm9yIGRpcmVjdG9yeSB0cmVlcywgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnksIGUuZy4sIC91c3Ivc2hhcmUvdGVybWluZm8sCitzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBkYXRhYmFzZS4KKy5iUAorRm9yIGhhc2hlZCBkYXRhYmFzZXMsIGEgZmlsZW5hbWUgaXMgbmVlZGVkLgorSWYgdGhlIGdpdmVuIGZpbGUgaXMgbm90IGZvdW5kIGJ5IHRoYXQgbmFtZSwKK2J1dCBjYW4gYmUgZm91bmQgYnkgYWRkaW5nIHRoZSBzdWZmaXggIi5kYiIsCit0aGVuIHRoYXQgaXMgdXNlZC4KKy5JUAorVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGhhc2hlZCBkYXRhYmFzZSBpcyB0aGUgc2FtZSBhcyB0aGUKK2RlZmF1bHQgZGlyZWN0b3J5IG5hbWUgKG9ubHkgYWRkaW5nIGEgIi5kYiIgc3VmZml4KS4KIC5QUAotRmlyc3QsIHlvdSBtYXkgb3ZlcnJpZGUgdGhlIHN5c3RlbSBkZWZhdWx0IGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlCi1cZkJURVJNSU5GT1xmUiBpbiB5b3VyIHNoZWxsIGVudmlyb25tZW50IHRvIGEgdmFsaWQgKGV4aXN0aW5nKSBkaXJlY3RvcnkgbmFtZS4KK0luIGVpdGhlciBjYXNlIChkaXJlY3Rvcnkgb3IgaGFzaGVkIGRhdGFiYXNlKSwKK1xmQkBUSUNAXGZQIHdpbGwgY3JlYXRlIHRoZSBjb250YWluZXIgaWYgaXQgZG9lcyBub3QgZXhpc3QuCitGb3IgYSBkaXJlY3RvcnksIHRoaXMgd291bGQgYmUgdGhlICJ0ZXJtaW5mbyIgbGVhZiwKK3ZlcnN1cyBhICJ0ZXJtaW5mby5kYiIgZmlsZS4KIC5QUAotU2Vjb25kbHksIGlmIFxmQnRpY1xmUiBjYW5ub3QgZ2V0IGFjY2VzcyB0byBcZklcKmRcZlIgb3IgeW91ciBURVJNSU5GTwotZGlyZWN0b3J5LCBpdCBsb29rcyBmb3IgdGhlIGRpcmVjdG9yeSBcZkkkSE9NRS8udGVybWluZm9cZlI7IGlmIHRoYXQgZGlyZWN0b3J5Ci1leGlzdHMsIHRoZSBlbnRyeSBpcyBwbGFjZWQgdGhlcmUuCitUaGUgcmVzdWx0cyBhcmUgbm9ybWFsbHkgcGxhY2VkIGluIHRoZSBzeXN0ZW0gdGVybWluZm8gZGF0YWJhc2UgXGZCXCpkXGZSLgorVGhlIGNvbXBpbGVkIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGNhbiBiZSBwbGFjZWQKK2luIGEgZGlmZmVyZW50IHRlcm1pbmZvIGRhdGFiYXNlLgorVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFjaGlldmUgdGhpczoKKy5iUAorRmlyc3QsIHlvdSBtYXkgb3ZlcnJpZGUgdGhlIHN5c3RlbSBkZWZhdWx0IGVpdGhlciBieQordXNpbmcgdGhlIFxmQlwtb1xmUCBvcHRpb24sCitvciBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBcZkJURVJNSU5GT1xmUgoraW4geW91ciBzaGVsbCBlbnZpcm9ubWVudCB0byBhIHZhbGlkIGRhdGFiYXNlIGxvY2F0aW9uLgorLmJQCitTZWNvbmRseSwgaWYgXGZCQFRJQ0BcZlIgY2Fubm90IHdyaXRlIGluIFxmSVwqZFxmUgorb3IgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCB1c2luZyB5b3VyIFRFUk1JTkZPIHZhcmlhYmxlLAoraXQgbG9va3MgZm9yIHRoZSBkaXJlY3RvcnkgXGZJJEhPTUUvLnRlcm1pbmZvXGZSCisob3IgaGFzaGVkIGRhdGFiYXNlIFxmSSRIT01FLy50ZXJtaW5mby5kYilcZlI7CitpZiB0aGF0IGxvY2F0aW9uIGV4aXN0cywgdGhlIGVudHJ5IGlzIHBsYWNlZCB0aGVyZS4KIC5QUAotTGlicmFyaWVzIHRoYXQgcmVhZCB0ZXJtaW5mbyBlbnRyaWVzIGFyZSBleHBlY3RlZCB0byBjaGVjayBmb3IgYSBURVJNSU5GTwotZGlyZWN0b3J5IGZpcnN0LCBsb29rIGF0IFxmSSRIT01FLy50ZXJtaW5mb1xmUiBpZiBURVJNSU5GTyBpcyBub3Qgc2V0LCBhbmQKLWZpbmFsbHkgbG9vayBpbiBcZklcKmRcZlIuCitMaWJyYXJpZXMgdGhhdCByZWFkIHRlcm1pbmZvIGVudHJpZXMgYXJlIGV4cGVjdGVkIHRvIGNoZWNrIGluIHN1Y2Nlc3Npb24KKy5iUAorYSBsb2NhdGlvbiBzcGVjaWZpZWQgd2l0aCB0aGUgVEVSTUlORk8gZW52aXJvbm1lbnQgdmFyaWFibGUsCisuYlAKK1xmSSRIT01FLy50ZXJtaW5mb1xmUiwKKy5iUAorZGlyZWN0b3JpZXMgbGlzdGVkIGluIHRoZSBURVJNSU5GT19ESVJTIGVudmlyb25tZW50IHZhcmlhYmxlLAorLmJQCithIGNvbXBpbGVkLWluIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKEBURVJNSU5GT19ESVJTQCksIGFuZAorLmJQCit0aGUgc3lzdGVtIHRlcm1pbmZvIGRhdGFiYXNlIChcZklcKmRcZlIpLgorLlNTIE9QVElPTlMKIC5UUAotXGZCLTFcZlIKK1xmQlwtMFxmUgorcmVzdHJpY3RzIHRoZSBvdXRwdXQgdG8gYSBzaW5nbGUgbGluZQorLlRQCitcZkJcLTFcZlIKIHJlc3RyaWN0cyB0aGUgb3V0cHV0IHRvIGEgc2luZ2xlIGNvbHVtbgogLlRQCi1cZkItYVxmUgotdGVsbHMgXGZCdGljXGZQIHRvIHJldGFpbiBjb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcyByYXRoZXIgdGhhbiBkaXNjYXJkaW5nCi10aGVtLiAgQ2FwYWJpbGl0aWVzIGFyZSBjb21tZW50ZWQgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCBhIHBlcmlvZC4KLVRoaXMgc2V0cyB0aGUgXGZCLXhcZlIgb3B0aW9uLCBiZWNhdXNlIGl0IHRyZWF0cyB0aGUgY29tbWVudGVkLW91dAorXGZCXC1hXGZSCit0ZWxscyBcZkJAVElDQFxmUCB0byByZXRhaW4gY29tbWVudGVkLW91dCBjYXBhYmlsaXRpZXMgcmF0aGVyIHRoYW4gZGlzY2FyZGluZwordGhlbS4KK0NhcGFiaWxpdGllcyBhcmUgY29tbWVudGVkIGJ5IHByZWZpeGluZyB0aGVtIHdpdGggYSBwZXJpb2QuCitUaGlzIHNldHMgdGhlIFxmQlwteFxmUiBvcHRpb24sIGJlY2F1c2UgaXQgdHJlYXRzIHRoZSBjb21tZW50ZWQtb3V0CiBlbnRyaWVzIGFzIHVzZXItZGVmaW5lZCBuYW1lcy4KIElmIHRoZSBzb3VyY2UgaXMgdGVybWNhcCwgYWNjZXB0IHRoZSAyLWNoYXJhY3RlciBuYW1lcyByZXF1aXJlZCBieSB2ZXJzaW9uIDYuCiBPdGhlcndpc2UgdGhlc2UgYXJlIGlnbm9yZWQuCiAuVFAKLVxmQi1DXGZSCi1Gb3JjZSBzb3VyY2UgdHJhbnNsYXRpb24gdG8gdGVybWNhcCBmb3JtYXQuICBOb3RlOiB0aGlzIGRpZmZlcnMgZnJvbSB0aGUgXGZCLUNcZlIKK1xmQlwtQ1xmUgorRm9yY2Ugc291cmNlIHRyYW5zbGF0aW9uIHRvIHRlcm1jYXAgZm9ybWF0LgorTm90ZTogdGhpcyBkaWZmZXJzIGZyb20gdGhlIFxmQlwtQ1xmUgogb3B0aW9uIG9mIFxmQkBJTkZPQ01QQFxmUigxTSkgaW4gdGhhdCBpdCBkb2VzIG5vdCBtZXJlbHkgdHJhbnNsYXRlIGNhcGFiaWxpdHkKLW5hbWVzLCBidXQgYWxzbyB0cmFuc2xhdGVzIHRlcm1pbmZvIHN0cmluZ3MgdG8gdGVybWNhcCBmb3JtYXQuICBDYXBhYmlsaXRpZXMKK25hbWVzLCBidXQgYWxzbyB0cmFuc2xhdGVzIHRlcm1pbmZvIHN0cmluZ3MgdG8gdGVybWNhcCBmb3JtYXQuCitDYXBhYmlsaXRpZXMKIHRoYXQgYXJlIG5vdCB0cmFuc2xhdGFibGUgYXJlIGxlZnQgaW4gdGhlIGVudHJ5IHVuZGVyIHRoZWlyIHRlcm1pbmZvIG5hbWVzCiBidXQgY29tbWVudGVkIG91dCB3aXRoIHR3byBwcmVjZWRpbmcgZG90cy4KK1RoZSBhY3R1YWwgZm9ybWF0IHVzZWQgaW5jb3Jwb3JhdGVzIHNvbWUgaW1wcm92ZW1lbnRzIGZvciBlc2NhcGVkIGNoYXJhY3RlcnMKK2Zyb20gdGVybWluZm8gZm9ybWF0LgorRm9yIGEgc3RyaWN0ZXIgQlNELWNvbXBhdGlibGUgdHJhbnNsYXRpb24sIGFkZCB0aGUgXGZCXC1LXGZSIG9wdGlvbi4KKy5JUAorSWYgdGhpcyBpcyBjb21iaW5lZCB3aXRoIFxmQlwtY1xmUiwgXGZCQFRJQ0BcZlIgbWFrZXMgYWRkaXRpb25hbCBjaGVja3MKK3RvIHJlcG9ydCBjYXNlcyB3aGVyZSB0aGUgdGVybWluZm8gdmFsdWVzIGRvIG5vdCBoYXZlIGFuIGV4YWN0IGVxdWl2YWxlbnQKK2luIHRlcm1jYXAgZm9ybS4KK0ZvciBleGFtcGxlOgorLlJTCisuYlAKK1xmQnNnclxmUCB1c3VhbGx5IHdpbGwgbm90IGNvbnZlcnQsIGJlY2F1c2UgdGVybWNhcCBsYWNrcyB0aGUgYWJpbGl0eSB0bword29yayB3aXRoIG1vcmUgdGhhbiB0d28gcGFyYW1ldGVycywgYW5kIGJlY2F1c2UgdGVybWNhcCBsYWNrcyBtYW55IG9mCit0aGUgYXJpdGhtZXRpYy9sb2dpY2FsIG9wZXJhdG9ycyB1c2VkIGluIHRlcm1pbmZvLgorLmJQCitjYXBhYmlsaXRpZXMgd2l0aCBtb3JlIHRoYW4gb25lIGRlbGF5IG9yIHdpdGggZGVsYXlzIGJlZm9yZSB0aGUgZW5kIG9mCit0aGUgc3RyaW5nIHdpbGwgbm90IGNvbnZlcnQgY29tcGxldGVseS4KKy5SRQogLlRQCi1cZkItY1xmUgotdGVsbHMgXGZCdGljXGZQIHRvIG9ubHkgY2hlY2sgXGZJZmlsZVxmUiBmb3IgZXJyb3JzLCBpbmNsdWRpbmcgc3ludGF4IHByb2JsZW1zIGFuZAotYmFkIHVzZSBsaW5rcy4gIElmIHlvdSBzcGVjaWZ5IFxmQi1DXGZSIChcZkItSVxmUikgd2l0aCB0aGlzIG9wdGlvbiwgdGhlIGNvZGUKK1xmQlwtY1xmUgordGVsbHMgXGZCQFRJQ0BcZlAgdG8gb25seSBjaGVjayBcZklmaWxlXGZSIGZvciBlcnJvcnMsIGluY2x1ZGluZyBzeW50YXggcHJvYmxlbXMgYW5kCitiYWQgdXNlIGxpbmtzLgorSWYgeW91IHNwZWNpZnkgXGZCXC1DXGZSIChcZkJcLUlcZlIpIHdpdGggdGhpcyBvcHRpb24sIHRoZSBjb2RlCiB3aWxsIHByaW50IHdhcm5pbmdzIGFib3V0IGVudHJpZXMgd2hpY2gsIGFmdGVyIHVzZSByZXNvbHV0aW9uLCBhcmUgbW9yZSB0aGFuCi0xMDIzICg0MDk2KSBieXRlcyBsb25nLiAgRHVlIHRvIGEgZml4ZWQgYnVmZmVyIGxlbmd0aCBpbiBvbGRlciB0ZXJtY2FwCi1saWJyYXJpZXMgKGFuZCBhIGRvY3VtZW50ZWQgbGltaXQgaW4gdGVybWluZm8pLCB0aGVzZSBlbnRyaWVzIG1heSBjYXVzZSBjb3JlCi1kdW1wcy4KKzEwMjMgKDQwOTYpIGJ5dGVzIGxvbmcuCitEdWUgdG8gYSBmaXhlZCBidWZmZXIgbGVuZ3RoIGluIG9sZGVyIHRlcm1jYXAgbGlicmFyaWVzLAorYXMgd2VsbCBhcyBidWdneSBjaGVja2luZyBmb3IgdGhlIGJ1ZmZlciBsZW5ndGgKKyhhbmQgYSBkb2N1bWVudGVkIGxpbWl0IGluIHRlcm1pbmZvKSwKK3RoZXNlIGVudHJpZXMgbWF5IGNhdXNlIGNvcmUKK2R1bXBzIHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgorLklQCitcZkJAVElDQFxmUCBjaGVja3Mgc3RyaW5nIGNhcGFiaWxpdGllcyB0byBlbnN1cmUgdGhhdCB0aG9zZSB3aXRoIHBhcmFtZXRlcnMKK3dpbGwgYmUgdmFsaWQgZXhwcmVzc2lvbnMuCitJdCBkb2VzIHRoaXMgY2hlY2sgb25seSBmb3IgdGhlIHByZWRlZmluZWQgc3RyaW5nIGNhcGFiaWxpdGllczsKK3Rob3NlIHdoaWNoIGFyZSBkZWZpbmVkIHdpdGggdGhlIFxmQlwteFxmUCBvcHRpb24gYXJlIGlnbm9yZWQuCiAuVFAKLVxmQi1lIFxmUlxmSW5hbWVzXGZSCitcZkJcLURcZlIKK3RlbGxzIFxmQkBUSUNAXGZQIHRvIHByaW50IHRoZSBkYXRhYmFzZSBsb2NhdGlvbnMgdGhhdCBpdCBrbm93cyBhYm91dCwgYW5kIGV4aXQuCitUaGUgZmlyc3QgbG9jYXRpb24gc2hvd24gaXMgdGhlIG9uZSB0byB3aGljaCBpdCB3b3VsZCB3cml0ZSBjb21waWxlZAordGVybWluYWwgZGVzY3JpcHRpb25zLgorSWYgXGZCQFRJQ0BcZlAgaXMgbm90IGFibGUgdG8gZmluZCBhIHdyaXRhYmxlIGRhdGFiYXNlIGxvY2F0aW9uCithY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIHN1bW1hcml6ZWQgYWJvdmUsCitpdCB3aWxsIHByaW50IGEgZGlhZ25vc3RpYyBhbmQgZXhpdCB3aXRoIGFuIGVycm9yIHJhdGhlciB0aGFuCitwcmludGluZyBhIGxpc3Qgb2YgZGF0YWJhc2UgbG9jYXRpb25zLgorLlRQCitcZkJcLWUgXGZSXGZJbmFtZXNcZlIKIExpbWl0IHdyaXRlcyBhbmQgdHJhbnNsYXRpb25zIHRvIHRoZSBmb2xsb3dpbmcgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKIHRlcm1pbmFscy4KIElmIGFueSBuYW1lIG9yIGFsaWFzIG9mIGEgdGVybWluYWwgbWF0Y2hlcyBvbmUgb2YgdGhlIG5hbWVzIGluCkBAIC0xMTMsMTA1ICsyMDEsOTYgQEAKIE90aGVyd2lzZSBubyBvdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGl0LgogVGhlIG9wdGlvbiB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhcyBhIGZpbGUgY29udGFpbmluZyB0aGUgbGlzdCBpZiBpdAogY29udGFpbnMgYSAnLycuCi0oTm90ZTogZGVwZW5kaW5nIG9uIGhvdyB0aWMgd2FzIGNvbXBpbGVkLCB0aGlzIG9wdGlvbiBtYXkgcmVxdWlyZSBcZkItSVxmUiBvciBcZkItQ1xmUi4pCisoTm90ZTogZGVwZW5kaW5nIG9uIGhvdyB0aWMgd2FzIGNvbXBpbGVkLCB0aGlzIG9wdGlvbiBtYXkgcmVxdWlyZSBcZkJcLUlcZlIgb3IgXGZCXC1DXGZSLikKIC5UUAotXGZCLWZcZlIKK1xmQlwtZlxmUgogRGlzcGxheSBjb21wbGV4IHRlcm1pbmZvIHN0cmluZ3Mgd2hpY2ggY29udGFpbiBpZi90aGVuL2Vsc2UvZW5kaWYgZXhwcmVzc2lvbnMKIGluZGVudGVkIGZvciByZWFkYWJpbGl0eS4KIC5UUAotXGZCLUdcZlIKK1xmQlwtR1xmUgogRGlzcGxheSBjb25zdGFudCBsaXRlcmFscyBpbiBkZWNpbWFsIGZvcm0KIHJhdGhlciB0aGFuIHRoZWlyIGNoYXJhY3RlciBlcXVpdmFsZW50cy4KIC5UUAotXGZCLWdcZlIKK1xmQlwtZ1xmUgogRGlzcGxheSBjb25zdGFudCBjaGFyYWN0ZXIgbGl0ZXJhbHMgaW4gcXVvdGVkIGZvcm0KIHJhdGhlciB0aGFuIHRoZWlyIGRlY2ltYWwgZXF1aXZhbGVudHMuCiAuVFAKLVxmQi1JXGZSCitcZkJcLUlcZlIKIEZvcmNlIHNvdXJjZSB0cmFuc2xhdGlvbiB0byB0ZXJtaW5mbyBmb3JtYXQuCiAuVFAKLVxmQi1MXGZSCitcZkJcLUtcZlIKK1N1cHByZXNzIHNvbWUgbG9uZ3N0YW5kaW5nIG5jdXJzZXMgZXh0ZW5zaW9ucyB0byB0ZXJtY2FwIGZvcm1hdCwKK2UuZy4sICJcXHMiIGZvciBzcGFjZS4KKy5UUAorXGZCXC1MXGZSCiBGb3JjZSBzb3VyY2UgdHJhbnNsYXRpb24gdG8gdGVybWluZm8gZm9ybWF0CiB1c2luZyB0aGUgbG9uZyBDIHZhcmlhYmxlIG5hbWVzIGxpc3RlZCBpbiA8XGZCdGVybS5oXGZSPgogLlRQCi1cZkItTlxmUgotRGlzYWJsZSBzbWFydCBkZWZhdWx0cy4gCitcZkJcLU5cZlIKK0Rpc2FibGUgc21hcnQgZGVmYXVsdHMuCiBOb3JtYWxseSwgd2hlbiB0cmFuc2xhdGluZyBmcm9tIHRlcm1jYXAgdG8gdGVybWluZm8sIHRoZSBjb21waWxlciBtYWtlcwogYSBudW1iZXIgb2YgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlZmF1bHRzIG9mIHN0cmluZyBjYXBhYmlsaXRpZXMKIFxmQnJlc2V0MV9zdHJpbmdcZlIsIFxmQmNhcnJpYWdlX3JldHVyblxmUiwgXGZCY3Vyc29yX2xlZnRcZlIsCiBcZkJjdXJzb3JfZG93blxmUiwgXGZCc2Nyb2xsX2ZvcndhcmRcZlIsIFxmQnRhYlxmUiwgXGZCbmV3bGluZVxmUiwKIFxmQmtleV9iYWNrc3BhY2VcZlIsIFxmQmtleV9sZWZ0XGZSLCBhbmQgXGZCa2V5X2Rvd25cZlIsIHRoZW4gYXR0ZW1wdHMKLXRvIHVzZSBvYnNvbGV0ZSB0ZXJtY2FwIGNhcGFiaWxpdGllcyB0byBkZWR1Y2UgY29ycmVjdCB2YWx1ZXMuICBJdCBhbHNvCit0byB1c2Ugb2Jzb2xldGUgdGVybWNhcCBjYXBhYmlsaXRpZXMgdG8gZGVkdWNlIGNvcnJlY3QgdmFsdWVzLgorSXQgYWxzbwogbm9ybWFsbHkgc3VwcHJlc3NlcyBvdXRwdXQgb2Ygb2Jzb2xldGUgdGVybWNhcCBjYXBhYmlsaXRpZXMgc3VjaCBhcyBcZkJic1xmUi4KIFRoaXMgb3B0aW9uIGZvcmNlcyBhIG1vcmUgbGl0ZXJhbCB0cmFuc2xhdGlvbiB0aGF0IGFsc28gcHJlc2VydmVzIHRoZQogb2Jzb2xldGUgY2FwYWJpbGl0aWVzLgogLlRQCi1cZkItb1xmUlxmSWRpclxmUgotV3JpdGUgY29tcGlsZWQgZW50cmllcyB0byBnaXZlbiBkaXJlY3RvcnkuICBPdmVycmlkZXMgdGhlIFRFUk1JTkZPIGVudmlyb25tZW50Ci12YXJpYWJsZS4KK1xmQlwtb1xmUlxmSWRpclxmUgorV3JpdGUgY29tcGlsZWQgZW50cmllcyB0byBnaXZlbiBkYXRhYmFzZSBsb2NhdGlvbi4KK092ZXJyaWRlcyB0aGUgVEVSTUlORk8gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAuVFAKLVxmQi1SXGZSXGZJc3Vic2V0XGZSCi1SZXN0cmljdCBvdXRwdXQgdG8gYSBnaXZlbiBzdWJzZXQuICBUaGlzIG9wdGlvbiBpcyBmb3IgdXNlIHdpdGggYXJjaGFpYworXGZCXC1SXGZSXGZJc3Vic2V0XGZSCitSZXN0cmljdCBvdXRwdXQgdG8gYSBnaXZlbiBzdWJzZXQuCitUaGlzIG9wdGlvbiBpcyBmb3IgdXNlIHdpdGggYXJjaGFpYwogdmVyc2lvbnMgb2YgdGVybWluZm8gbGlrZSB0aG9zZSBvbiBTVnIxLCBVbHRyaXgsIG9yIEhQL1VYIHRoYXQgZG8gbm90IHN1cHBvcnQKIHRoZSBmdWxsIHNldCBvZiBTVlI0L1hTSSBDdXJzZXMgdGVybWluZm87IGFuZCBvdXRyaWdodCBicm9rZW4gcG9ydHMgbGlrZSBBSVggMy54Ci10aGF0IGhhdmUgdGhlaXIgb3duIGV4dGVuc2lvbnMgaW5jb21wYXRpYmxlIHdpdGggU1ZyNC9YU0kuICBBdmFpbGFibGUgc3Vic2V0cwordGhhdCBoYXZlIHRoZWlyIG93biBleHRlbnNpb25zIGluY29tcGF0aWJsZSB3aXRoIFNWcjQvWFNJLgorQXZhaWxhYmxlIHN1YnNldHMKIGFyZSAiU1ZyMSIsICJVbHRyaXgiLCAiSFAiLCAiQlNEIiBhbmQgIkFJWCI7IHNlZSBcZkJ0ZXJtaW5mb1xmUihcKm4pIGZvciBkZXRhaWxzLgogLlRQCi1cZkItclxmUgorXGZCXC1yXGZSCiBGb3JjZSBlbnRyeSByZXNvbHV0aW9uIChzbyB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHRjIGNhcGFiaWxpdGllcykgZXZlbgotd2hlbiBkb2luZyB0cmFuc2xhdGlvbiB0byB0ZXJtY2FwIGZvcm1hdC4gIFRoaXMgbWF5IGJlIG5lZWRlZCBpZiB5b3UgYXJlCit3aGVuIGRvaW5nIHRyYW5zbGF0aW9uIHRvIHRlcm1jYXAgZm9ybWF0LgorVGhpcyBtYXkgYmUgbmVlZGVkIGlmIHlvdSBhcmUKIHByZXBhcmluZyBhIHRlcm1jYXAgZmlsZSBmb3IgYSB0ZXJtY2FwIGxpYnJhcnkgKHN1Y2ggYXMgR05VIHRlcm1jYXAgdGhyb3VnaAogdmVyc2lvbiAxLjMgb3IgQlNEIHRlcm1jYXAgdGhyb3VnaCA0LjNCU0QpIHRoYXQgZG9lcyBub3QgaGFuZGxlIG11bHRpcGxlCiB0YyBjYXBhYmlsaXRpZXMgcGVyIGVudHJ5LgogLlRQCi1cZkItc1xmUgotU3VtbWFyaXplIHRoZSBjb21waWxlIGJ5IHNob3dpbmcgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIGVudHJpZXMKK1xmQlwtc1xmUgorU3VtbWFyaXplIHRoZSBjb21waWxlIGJ5IHNob3dpbmcgdGhlIGRhdGFiYXNlIGxvY2F0aW9uIGludG8gd2hpY2ggZW50cmllcwogYXJlIHdyaXR0ZW4sIGFuZCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgd2hpY2ggYXJlIGNvbXBpbGVkLgogLlRQCi1cZkItVFxmUgorXGZCXC1UXGZSCiBlbGltaW5hdGVzIHNpemUtcmVzdHJpY3Rpb25zIG9uIHRoZSBnZW5lcmF0ZWQgdGV4dC4KIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgYW5hbHlzaXMsIHNpbmNlIHRoZSBjb21waWxlZAogZGVzY3JpcHRpb25zIGFyZSBsaW1pdGVkIChlLmcuLCAxMDIzIGZvciB0ZXJtY2FwLCA0MDk2IGZvciB0ZXJtaW5mbykuCiAuVFAKLVxmQi10XGZSCi10ZWxscyBcZkJ0aWNcZlAgdG8gZGlzY2FyZCBjb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcy4KK1xmQlwtdFxmUgordGVsbHMgXGZCQFRJQ0BcZlAgdG8gZGlzY2FyZCBjb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcy4KIE5vcm1hbGx5IHdoZW4gdHJhbnNsYXRpbmcgZnJvbSB0ZXJtaW5mbyB0byB0ZXJtY2FwLAogdW50cmFuc2xhdGFibGUgY2FwYWJpbGl0aWVzIGFyZSBjb21tZW50ZWQtb3V0LgogLlRQIDUKLVxmQi1VXGZSCi10ZWxscyBcZkJ0aWNcZlAgdG8gbm90IHBvc3QtcHJvY2VzcyB0aGUgZGF0YSBhZnRlciBwYXJzaW5nIHRoZSBzb3VyY2UgZmlsZS4KK1xmQlwtVVxmUgordGVsbHMgXGZCQFRJQ0BcZlAgdG8gbm90IHBvc3QtcHJvY2VzcyB0aGUgZGF0YSBhZnRlciBwYXJzaW5nIHRoZSBzb3VyY2UgZmlsZS4KIE5vcm1hbGx5LCBpdCBpbmZlcnMgZGF0YSB3aGljaCBpcyBjb21tb25seSBtaXNzaW5nIGluIG9sZGVyIHRlcm1pbmZvIGRhdGEsCiBvciBpbiB0ZXJtY2Fwcy4KIC5UUAotXGZCLVZcZlIKK1xmQlwtVlxmUgogcmVwb3J0cyB0aGUgdmVyc2lvbiBvZiBuY3Vyc2VzIHdoaWNoIHdhcyB1c2VkIGluIHRoaXMgcHJvZ3JhbSwgYW5kIGV4aXRzLgogLlRQCi1cZkItdlxmUlxmSW5cZlIKK1xmQlwtdlxmUlxmSW5cZlIKIHNwZWNpZmllcyB0aGF0ICh2ZXJib3NlKSBvdXRwdXQgYmUgd3JpdHRlbiB0byBzdGFuZGFyZCBlcnJvciB0cmFjZQotaW5mb3JtYXRpb24gc2hvd2luZyBcZkJ0aWNcZlIncyBwcm9ncmVzcy4KK2luZm9ybWF0aW9uIHNob3dpbmcgXGZCQFRJQ0BcZlIncyBwcm9ncmVzcy4KIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgXGZJblxmUiBpcyBhIG51bWJlciBmcm9tIDEgdG8gMTAsIGluY2x1c2l2ZSwKIGluZGljYXRpbmcgdGhlIGRlc2lyZWQgbGV2ZWwgb2YgZGV0YWlsIG9mIGluZm9ybWF0aW9uLgogSWYgXGZJblxmUiBpcyBvbWl0dGVkLCB0aGUgZGVmYXVsdCBsZXZlbCBpcyAxLgogSWYgXGZJblxmUiBpcyBzcGVjaWZpZWQgYW5kIGdyZWF0ZXIgdGhhbiAxLCB0aGUgbGV2ZWwgb2YKIGRldGFpbCBpcyBpbmNyZWFzZWQuCi0uVFAKLVxmQi13XGZSXGZJblxmUgotc3BlY2lmaWVzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0LgotVGhlIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KLUlmIGl0IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIDYwLgotLlRQCi1cZkIteFxmUgotVHJlYXQgdW5rbm93biBjYXBhYmlsaXRpZXMgYXMgdXNlci1kZWZpbmVkLgotVGhhdCBpcywgaWYgeW91IHN1cHBseSBhIGNhcGFiaWxpdHkgbmFtZSB3aGljaCBcZkJ0aWNcZlAgZG9lcyBub3QgcmVjb2duaXplLAotaXQgd2lsbCBpbmZlciBpdHMgdHlwZSAoYm9vbGVhbiwgbnVtYmVyIG9yIHN0cmluZykgZnJvbSB0aGUgc3ludGF4IGFuZAotbWFrZSBhbiBleHRlbmRlZCB0YWJsZSBlbnRyeSBmb3IgdGhhdC4KLVVzZXItZGVmaW5lZCBjYXBhYmlsaXR5IHN0cmluZ3MKLXdob3NlIG5hbWUgYmVnaW5zIHdpdGggYGBrJycgYXJlIHRyZWF0ZWQgYXMgZnVuY3Rpb24ga2V5cy4KLS5UUAotXGZJZmlsZVxmUgotY29udGFpbnMgb25lIG9yIG1vcmUgXGZCdGVybWluZm9cZlIgdGVybWluYWwgZGVzY3JpcHRpb25zIGluIHNvdXJjZQotZm9ybWF0IFtzZWUgXGZCdGVybWluZm9cZlIoXCpuKV0uICBFYWNoIGRlc2NyaXB0aW9uIGluIHRoZSBmaWxlCi1kZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHBhcnRpY3VsYXIgdGVybWluYWwuCisuUlMKIC5QUAogVGhlIGRlYnVnIGZsYWcgbGV2ZWxzIGFyZSBhcyBmb2xsb3dzOgogLlRQCkBAIC0yMTksNyArMjk4LDcgQEAKIE5hbWVzIG9mIGZpbGVzIGNyZWF0ZWQgYW5kIGxpbmtlZAogLlRQCiAyCi1JbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBgYHVzZScnIGZhY2lsaXR5CitJbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBcKihgYHVzZVwqKCcnIGZhY2lsaXR5CiAuVFAKIDMKIFN0YXRpc3RpY3MgZnJvbSB0aGUgaGFzaGluZyBhbGdvcml0aG0KQEAgLTIzNywxNyArMzE2LDQzIEBACiBBbGwgdmFsdWVzIGNvbXB1dGVkIGluIGNvbnN0cnVjdGlvbiBvZiB0aGUgaGFzaCB0YWJsZQogLkxQCiBJZiB0aGUgZGVidWcgbGV2ZWwgXGZJblxmUiBpcyBub3QgZ2l2ZW4sIGl0IGlzIHRha2VuIHRvIGJlIG9uZS4KKy5SRQorLlRQCitcZkJcLXdcZlJcZkluXGZSCitzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBvdXRwdXQuCitUaGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgorSWYgaXQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gNjAuCisuVFAKK1xmQlwteFxmUgorVHJlYXQgdW5rbm93biBjYXBhYmlsaXRpZXMgYXMgdXNlci1kZWZpbmVkLgorVGhhdCBpcywgaWYgeW91IHN1cHBseSBhIGNhcGFiaWxpdHkgbmFtZSB3aGljaCBcZkJAVElDQFxmUCBkb2VzIG5vdCByZWNvZ25pemUsCitpdCB3aWxsIGluZmVyIGl0cyB0eXBlIChib29sZWFuLCBudW1iZXIgb3Igc3RyaW5nKSBmcm9tIHRoZSBzeW50YXggYW5kCittYWtlIGFuIGV4dGVuZGVkIHRhYmxlIGVudHJ5IGZvciB0aGF0LgorVXNlci1kZWZpbmVkIGNhcGFiaWxpdHkgc3RyaW5ncword2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBcKihgYGtcKignJyBhcmUgdHJlYXRlZCBhcyBmdW5jdGlvbiBrZXlzLgorLlNTIFBBUkFNRVRFUlMKKy5UUAorXGZJZmlsZVxmUgorY29udGFpbnMgb25lIG9yIG1vcmUgXGZCdGVybWluZm9cZlIgdGVybWluYWwgZGVzY3JpcHRpb25zIGluIHNvdXJjZQorZm9ybWF0IFtzZWUgXGZCdGVybWluZm9cZlIoXCpuKV0uCitFYWNoIGRlc2NyaXB0aW9uIGluIHRoZSBmaWxlCitkZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHBhcnRpY3VsYXIgdGVybWluYWwuCisuSVAKK0lmIFxmSWZpbGVcZlIgaXMgXCooYGAtXCooJycsIHRoZW4gdGhlIGRhdGEgaXMgcmVhZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dC4KK1RoZSBcZklmaWxlXGZSIHBhcmFtZXRlciBtYXkgYWxzbyBiZSB0aGUgcGF0aCBvZiBhIGNoYXJhY3Rlci1kZXZpY2UuCisuU1MgUFJPQ0VTU0lORwogLlBQCi1BbGwgYnV0IG9uZSBvZiB0aGUgY2FwYWJpbGl0aWVzIHJlY29nbml6ZWQgYnkgXGZCdGljXGZSIGFyZSBkb2N1bWVudGVkCi1pbiBcZkJ0ZXJtaW5mb1xmUihcKm4pLiAgVGhlIGV4Y2VwdGlvbiBpcyB0aGUgXGZCdXNlXGZSIGNhcGFiaWxpdHkuCitBbGwgYnV0IG9uZSBvZiB0aGUgY2FwYWJpbGl0aWVzIHJlY29nbml6ZWQgYnkgXGZCQFRJQ0BcZlIgYXJlIGRvY3VtZW50ZWQKK2luIFxmQnRlcm1pbmZvXGZSKFwqbikuCitUaGUgZXhjZXB0aW9uIGlzIHRoZSBcZkJ1c2VcZlIgY2FwYWJpbGl0eS4KIC5QUAotV2hlbiBhIFxmQnVzZVxmUj1cZkllbnRyeVxmUi1cZkluYW1lXGZSIGZpZWxkIGlzIGRpc2NvdmVyZWQgaW4gYQotdGVybWluYWwgZW50cnkgY3VycmVudGx5IGJlaW5nIGNvbXBpbGVkLCBcZkJ0aWNcZlIgcmVhZHMgaW4gdGhlIGJpbmFyeQotZnJvbSBcZkJcKmRcZlIgdG8gY29tcGxldGUgdGhlIGVudHJ5LiAgKEVudHJpZXMgY3JlYXRlZCBmcm9tCi1cZklmaWxlXGZSIHdpbGwgYmUgdXNlZCBmaXJzdC4gIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotXGZCVEVSTUlORk9cZlIgaXMgc2V0LCB0aGF0IGRpcmVjdG9yeSBpcyBzZWFyY2hlZCBpbnN0ZWFkIG9mCi1cZkJcKmRcZlIuKSAgXGZCdGljXGZSIGR1cGxpY2F0ZXMgdGhlIGNhcGFiaWxpdGllcyBpbgotXGZJZW50cnlcZlItXGZJbmFtZVxmUiBmb3IgdGhlIGN1cnJlbnQgZW50cnksIHdpdGggdGhlIGV4Y2VwdGlvbiBvZgorV2hlbiBhIFxmQnVzZVxmUj1cZkllbnRyeVxmUlwtXGZJbmFtZVxmUiBmaWVsZCBpcyBkaXNjb3ZlcmVkIGluIGEKK3Rlcm1pbmFsIGVudHJ5IGN1cnJlbnRseSBiZWluZyBjb21waWxlZCwgXGZCQFRJQ0BcZlIgcmVhZHMgaW4gdGhlIGJpbmFyeQorZnJvbSBcZkJcKmRcZlIgdG8gY29tcGxldGUgdGhlIGVudHJ5LgorKEVudHJpZXMgY3JlYXRlZCBmcm9tCitcZklmaWxlXGZSIHdpbGwgYmUgdXNlZCBmaXJzdC4KK1xmQkBUSUNAXGZSIGR1cGxpY2F0ZXMgdGhlIGNhcGFiaWxpdGllcyBpbgorXGZJZW50cnlcZlJcLVxmSW5hbWVcZlIgZm9yIHRoZSBjdXJyZW50IGVudHJ5LCB3aXRoIHRoZSBleGNlcHRpb24gb2YKIHRob3NlIGNhcGFiaWxpdGllcyB0aGF0IGV4cGxpY2l0bHkgYXJlIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgZW50cnkuCiAuUFAKIFdoZW4gYW4gZW50cnksIGUuZy4sIFxmQmVudHJ5X25hbWVfMVxmUiwgY29udGFpbnMgYQpAQCAtMjU2LDU5ICszNjEsNjUgQEAKIFxmQmVudHJ5X25hbWVfMVxmUiBiZWZvcmUgXGZCdXNlPVxmUiBmb3IgdGhlc2UgY2FwYWJpbGl0aWVzIHRvIGJlCiBjYW5jZWxlZCBpbiBcZkJlbnRyeV9uYW1lXzFcZlIuCiAuUFAKLUlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBcZkJURVJNSU5GT1xmUiBpcyBzZXQsIHRoZSBjb21waWxlZAotcmVzdWx0cyBhcmUgcGxhY2VkIHRoZXJlIGluc3RlYWQgb2YgXGZCXCpkXGZSLgotLlBQCi1Ub3RhbCBjb21waWxlZCBlbnRyaWVzIGNhbm5vdCBleGNlZWQgNDA5NiBieXRlcy4gIFRoZSBuYW1lIGZpZWxkIGNhbm5vdAotZXhjZWVkIDUxMiBieXRlcy4gIFRlcm1pbmFsIG5hbWVzIGV4Y2VlZGluZyB0aGUgbWF4aW11bSBhbGlhcyBsZW5ndGgKK1RvdGFsIGNvbXBpbGVkIGVudHJpZXMgY2Fubm90IGV4Y2VlZCA0MDk2IGJ5dGVzLgorVGhlIG5hbWUgZmllbGQgY2Fubm90CitleGNlZWQgNTEyIGJ5dGVzLgorVGVybWluYWwgbmFtZXMgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIGFsaWFzIGxlbmd0aAogKDMyIGNoYXJhY3RlcnMgb24gc3lzdGVtcyB3aXRoIGxvbmcgZmlsZW5hbWVzLCAxNCBjaGFyYWN0ZXJzIG90aGVyd2lzZSkKIHdpbGwgYmUgdHJ1bmNhdGVkIHRvIHRoZSBtYXhpbXVtIGFsaWFzIGxlbmd0aCBhbmQgYSB3YXJuaW5nIG1lc3NhZ2Ugd2lsbCBiZSBwcmludGVkLgogLlNIIENPTVBBVElCSUxJVFkKLVRoZXJlIGlzIHNvbWUgZXZpZGVuY2UgdGhhdCBoaXN0b3JpYyBcZkJ0aWNcZlIgaW1wbGVtZW50YXRpb25zIHRyZWF0ZWQKK1RoZXJlIGlzIHNvbWUgZXZpZGVuY2UgdGhhdCBoaXN0b3JpYyBcZkJAVElDQFxmUiBpbXBsZW1lbnRhdGlvbnMgdHJlYXRlZAogZGVzY3JpcHRpb24gZmllbGRzIHdpdGggbm8gd2hpdGVzcGFjZSBpbiB0aGVtIGFzIGFkZGl0aW9uYWwgYWxpYXNlcyBvcgotc2hvcnQgbmFtZXMuICBUaGlzIFxmQnRpY1xmUiBkb2VzIG5vdCBkbyB0aGF0LCBidXQgaXQgZG9lcyB3YXJuIHdoZW4KK3Nob3J0IG5hbWVzLgorVGhpcyBcZkJAVElDQFxmUiBkb2VzIG5vdCBkbyB0aGF0LCBidXQgaXQgZG9lcyB3YXJuIHdoZW4KIGRlc2NyaXB0aW9uIGZpZWxkcyBtYXkgYmUgdHJlYXRlZCB0aGF0IHdheSBhbmQgY2hlY2sgdGhlbSBmb3IgZGFuZ2Vyb3VzCiBjaGFyYWN0ZXJzLgogLlNIIEVYVEVOU0lPTlMKLVVubGlrZSB0aGUgc3RvY2sgU1ZyNCBcZkJ0aWNcZlIgY29tbWFuZCwgdGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gYWN0dWFsbHkKLWNvbXBpbGUgdGVybWNhcCBzb3VyY2VzLiAgSW4gZmFjdCwgZW50cmllcyBpbiB0ZXJtaW5mbyBhbmQgdGVybWNhcCBzeW50YXggY2FuCi1iZSBtaXhlZCBpbiBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gIFNlZSBcZkJ0ZXJtaW5mb1xmUihcKm4pIGZvciB0aGUgbGlzdCBvZgorVW5saWtlIHRoZSBTVnI0IFxmQkBUSUNAXGZSIGNvbW1hbmQsIHRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGFjdHVhbGx5Citjb21waWxlIHRlcm1jYXAgc291cmNlcy4KK0luIGZhY3QsIGVudHJpZXMgaW4gdGVybWluZm8gYW5kIHRlcm1jYXAgc3ludGF4IGNhbgorYmUgbWl4ZWQgaW4gYSBzaW5nbGUgc291cmNlIGZpbGUuCitTZWUgXGZCdGVybWluZm9cZlIoXCpuKSBmb3IgdGhlIGxpc3Qgb2YKIHRlcm1jYXAgbmFtZXMgdGFrZW4gdG8gYmUgZXF1aXZhbGVudCB0byB0ZXJtaW5mbyBuYW1lcy4KIC5QUAogVGhlIFNWcjQgbWFudWFsIHBhZ2VzIGFyZSBub3QgY2xlYXIgb24gdGhlIHJlc29sdXRpb24gcnVsZXMgZm9yIFxmQnVzZVxmUgogY2FwYWJpbGl0aWVzLgotVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBcZkJ0aWNcZlIgd2lsbCBmaW5kIFxmQnVzZVxmUiB0YXJnZXRzIGFueXdoZXJlCitUaGlzIGltcGxlbWVudGF0aW9uIG9mIFxmQkBUSUNAXGZSIHdpbGwgZmluZCBcZkJ1c2VcZlIgdGFyZ2V0cyBhbnl3aGVyZQogaW4gdGhlIHNvdXJjZSBmaWxlLCBvciBhbnl3aGVyZSBpbiB0aGUgZmlsZSB0cmVlIHJvb3RlZCBhdCBcZkJURVJNSU5GT1xmUiAoaWYKLVxmQlRFUk1JTkZPXGZSIGlzIGRlZmluZWQpLCBvciBpbiB0aGUgdXNlcidzIFxmSSRIT01FLy50ZXJtaW5mb1xmUiBkaXJlY3RvcnkKLShpZiBpdCBleGlzdHMpLCBvciAoZmluYWxseSkgYW55d2hlcmUgaW4gdGhlIHN5c3RlbSdzIGZpbGUgdHJlZSBvZgorXGZCVEVSTUlORk9cZlIgaXMgZGVmaW5lZCksCitvciBpbiB0aGUgdXNlcidzIFxmSSRIT01FLy50ZXJtaW5mb1xmUiBkYXRhYmFzZQorKGlmIGl0IGV4aXN0cyksCitvciAoZmluYWxseSkgYW55d2hlcmUgaW4gdGhlIHN5c3RlbSdzIGZpbGUgdHJlZSBvZgogY29tcGlsZWQgZW50cmllcy4KIC5QUAotVGhlIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhpcyBcZkJ0aWNcZlIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQgYXMgR05VIEMKK1RoZSBlcnJvciBtZXNzYWdlcyBmcm9tIHRoaXMgXGZCQFRJQ0BcZlIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQgYXMgR05VIEMKIGVycm9yIG1lc3NhZ2VzLCBhbmQgY2FuIGJlIHBhcnNlZCBieSBHTlUgRW1hY3MncyBjb21waWxlIGZhY2lsaXR5LgogLlBQCiBUaGUKLVxmQi1DXGZSLAotXGZCLUdcZlIsCi1cZkItSVxmUiwKLVxmQi1OXGZSLAotXGZCLVJcZlIsCi1cZkItVFxmUiwKLVxmQi1WXGZSLAotXGZCLWFcZlIsCi1cZkItZVxmUiwKLVxmQi1mXGZSLAotXGZCLWdcZlIsCi1cZkItb1xmUiwKLVxmQi1yXGZSLAotXGZCLXNcZlIsCi1cZkItdFxmUiBhbmQKLVxmQi14XGZSCitcZkJcLTBcZlIsCitcZkJcLTFcZlIsCitcZkJcLUNcZlIsCitcZkJcLUdcZlIsCitcZkJcLUlcZlIsCitcZkJcLU5cZlIsCitcZkJcLVJcZlIsCitcZkJcLVRcZlIsCitcZkJcLVZcZlIsCitcZkJcLWFcZlIsCitcZkJcLWVcZlIsCitcZkJcLWZcZlIsCitcZkJcLWdcZlIsCitcZkJcLW9cZlIsCitcZkJcLXJcZlIsCitcZkJcLXNcZlIsCitcZkJcLXRcZlIgYW5kCitcZkJcLXhcZlIKIG9wdGlvbnMKIGFyZSBub3Qgc3VwcG9ydGVkIHVuZGVyIFNWcjQuCi1UaGUgU1ZyNCBcZkItY1xmUiBtb2RlIGRvZXMgbm90IHJlcG9ydCBiYWQgdXNlIGxpbmtzLgorVGhlIFNWcjQgXGZCXC1jXGZSIG1vZGUgZG9lcyBub3QgcmVwb3J0IGJhZCB1c2UgbGlua3MuCiAuUFAKIFN5c3RlbSBWIGRvZXMgbm90IGNvbXBpbGUgZW50cmllcyB0byBvciByZWFkIGVudHJpZXMgZnJvbSB5b3VyCi1cZkkkSE9NRS8udGVybWluZm9cZlIgZGlyZWN0b3J5IHVubGVzcyBURVJNSU5GTyBpcyBleHBsaWNpdGx5IHNldCB0byBpdC4KK1xmSSRIT01FLy50ZXJtaW5mb1xmUiBkYXRhYmFzZSB1bmxlc3MgVEVSTUlORk8gaXMgZXhwbGljaXRseSBzZXQgdG8gaXQuCiAuU0ggRklMRVMKIC5UUCA1CiBcZkJcKmQvPy8qXGZSCkBAIC0zMTksMTMgKzQzMCwxMyBAQAogXGZCQElORk9UT0NBUEBcZlIoMU0pLAogXGZCQFRPRUBcZlIoMU0pLAogXGZCY3Vyc2VzXGZSKDNYKSwKK1xmQnRlcm1cZlIoXCpuKS4KIFxmQnRlcm1pbmZvXGZSKFwqbikuCiAuUFAKIFRoaXMgZGVzY3JpYmVzIFxmQm5jdXJzZXNcZlIKIHZlcnNpb24gQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCAocGF0Y2ggQE5DVVJTRVNfUEFUQ0hAKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgorLlNIIEFVVEhPUgorRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+CithbmQKKy5icgorVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgpkaWZmIC0tZ2l0IGEvbWFuL3RvZS4xbSBiL21hbi90b2UuMW0KaW5kZXggMTUzMDM1NC4uMjZhZjMxOSAxMDA2NDQKLS0tIGEvbWFuL3RvZS4xbQorKysgYi9tYW4vdG9lLjFtCkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMzQgKzI2LDQzIEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiB0b2UuMW0sdiAxLjIxIDIwMDgvMDEvMDUgMjA6NTc6MTYgdG9tIEV4cCAkCisuXCIgJElkOiB0b2UuMW0sdiAxLjI2IDIwMTIvMDEvMDEgMDA6NDA6NTEgdG9tIEV4cCAkCiAuVEggQFRPRUAgMU0gIiIKIC5kcyBuIDUKIC5kcyBkIEBURVJNSU5GT0AKIC5TSCBOQU1FCi1cZkJ0b2VcZlIgLSB0YWJsZSBvZiAodGVybWluZm8pIGVudHJpZXMKK1xmQkBUT0VAXGZSIFwtIHRhYmxlIG9mICh0ZXJtaW5mbykgZW50cmllcwogLlNIIFNZTk9QU0lTCi1cZkJ0b2VcZlIgW1xmQi12XGZSW1xmSW5cZlJdXSBbXGZCLWFodVVWXGZSXSBcZklmaWxlLi4uXGZSCitcZkJAVE9FQFxmUiBbXGZCXC12XGZSW1xmSW5cZlJdXSBbXGZCXC1haHN1VVZcZlJdIFxmSWZpbGUuLi5cZlIKIC5icgogLlNIIERFU0NSSVBUSU9OCiAuUFAKIFdpdGggbm8gb3B0aW9ucywKLVxmQnRvZVxmUiBsaXN0cyBhbGwgYXZhaWxhYmxlIHRlcm1pbmFsIHR5cGVzIGJ5IHByaW1hcnkgbmFtZQorXGZCQFRPRUBcZlIgbGlzdHMgYWxsIGF2YWlsYWJsZSB0ZXJtaW5hbCB0eXBlcyBieSBwcmltYXJ5IG5hbWUKIHdpdGggZGVzY3JpcHRpb25zLgogRmlsZSBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZGlyZWN0b3JpZXMgdG8gYmUgc2Nhbm5lZDsgaWYgbm8KIHN1Y2ggYXJndW1lbnRzIGFyZSBnaXZlbiwKIHlvdXIgZGVmYXVsdCB0ZXJtaW5mbyBkaXJlY3RvcnkgaXMgc2Nhbm5lZC4KLUlmIHlvdSBhbHNvIHNwZWNpZnkgdGhlIFxmQi1oXGZSIG9wdGlvbiwKK0lmIHlvdSBhbHNvIHNwZWNpZnkgdGhlIFxmQlwtaFxmUiBvcHRpb24sCiBhIGRpcmVjdG9yeSBoZWFkZXIgd2lsbCBiZSBpc3N1ZWQgYXMgZWFjaAogZGlyZWN0b3J5IGlzIGVudGVyZWQuCiAuUFAKIFRoZXJlIGFyZSBvdGhlciBvcHRpb25zIGludGVuZGVkIGZvciB1c2UgYnkgdGVybWluZm8gZmlsZSBtYWludGFpbmVyczoKIC5UUAotXGZCLWFcZlIKK1xmQlwtYVxmUgogcmVwb3J0IG9uIGFsbCBvZiB0aGUgdGVybWluYWwgZGF0YWJhc2VzIHdoaWNoIG5jdXJzZXMgd291bGQgc2VhcmNoLAogcmF0aGVyIHRoYW4gb25seSB0aGUgZmlyc3Qgb25lIHRoYXQgaXQgZmluZHMuCisuSVAKK0lmIHRoZSBcZkJcLXNcZlIgaXMgYWxzbyBnaXZlbiwgXGZCQFRPRUBcZlIKK2FkZHMgYSBjb2x1bW4gdG8gdGhlIHJlcG9ydCwKK3Nob3dpbmcgKGxpa2UgXGZCY29uZmxpY3RcZlAoMSkpIHdoaWNoIGVudHJpZXMgd2hpY2ggCitiZWxvbmcgdG8gYSBnaXZlbiB0ZXJtaW5hbCBkYXRhYmFzZS4KK0FuICIqIiBtYXJrcyBlbnRyaWVzIHdoaWNoIGRpZmZlciwgYW5kICIrIiBtYXJrcyBlcXVpdmFsZW50IGVudHJpZXMuCiAuVFAKLVxmQi11XGZSIFxmSWZpbGVcZlIKK1xmQlwtc1xmUgorc29ydCB0aGUgb3V0cHV0IGJ5IHRoZSBlbnRyeSBuYW1lcy4KKy5UUAorXGZCXC11XGZSIFxmSWZpbGVcZlIKIHNheXMgdG8gd3JpdGUgYSByZXBvcnQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCwKIGxpc3RpbmcgZGVwZW5kZW5jaWVzIGluIHRoZSBnaXZlbiB0ZXJtaW5mby90ZXJtY2FwIHNvdXJjZSBmaWxlLgogVGhlIHJlcG9ydCBjb25kZW5zZXMgdGhlIGB1c2UnIHJlbGF0aW9uOgpAQCAtNjUsNyArNzQsNyBAQAogY2FwYWJpbGl0aWVzLAogZm9sbG93ZWQgYnkgYSBuZXdsaW5lCiAuVFAKLVxmQi1VXGZSIFxmSWZpbGVcZlIKK1xmQlwtVVxmUiBcZklmaWxlXGZSCiBzYXlzIHRvIHdyaXRlIGEgcmVwb3J0IHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQsCiBsaXN0aW5nIHJldmVyc2UgZGVwZW5kZW5jaWVzIGluIHRoZSBnaXZlbiB0ZXJtaW5mby90ZXJtY2FwIHNvdXJjZSBmaWxlLgogVGhlIHJlcG9ydCByZXZlcnNlcyB0aGUgYHVzZScgcmVsYXRpb246CkBAIC03NiwxMyArODUsMTMgQEAKIHdoaXRlc3BhY2Utc2VwYXJhdGVkIHByaW1hcnkgbmFtZXMgb2YgYWxsIHRlcm1pbmFscyB3aGljaCBkZXBlbmQgb24gaXQsCiBmb2xsb3dlZCBieSBhIG5ld2xpbmUuCiAuVFAKLVxmQi12XGZSXGZJblxmUgorXGZCXC12XGZSXGZJblxmUgogc3BlY2lmaWVzIHRoYXQgKHZlcmJvc2UpIG91dHB1dCBiZSB3cml0dGVuIHRvIHN0YW5kYXJkIGVycm9yLAotc2hvd2luZyBcZkJ0b2VcZlIncyBwcm9ncmVzcy4KK3Nob3dpbmcgXGZCQFRPRUBcZlIncyBwcm9ncmVzcy4KIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgXGZJblxmUiBpcyBhIG51bWJlciBmcm9tIDEgdG8gMTAsCiBpbnRlcnByZXRlZCBhcyBmb3IgXGZCQFRJQ0BcZlIoMU0pLgogLlRQCi1cZkItVlxmUgorXGZCXC1WXGZSCiByZXBvcnRzIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMgd2hpY2ggd2FzIHVzZWQgaW4gdGhpcyBwcm9ncmFtLAogYW5kIGV4aXRzLgogLlNIIEZJTEVTCkBAIC05OSw5ICsxMDgsMyBAQAogLlBQCiBUaGlzIGRlc2NyaWJlcyBcZkJuY3Vyc2VzXGZSCiB2ZXJzaW9uIEBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAgKHBhdGNoIEBOQ1VSU0VTX1BBVENIQCkuCi0uXCIjCi0uXCIjIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MKLS5cIiMgTG9jYWwgVmFyaWFibGVzOgotLlwiIyBtb2RlOm5yb2ZmCi0uXCIjIGZpbGwtY29sdW1uOjc5Ci0uXCIjIEVuZDoKZGlmZiAtLWdpdCBhL21hbi90cHV0LjEgYi9tYW4vdHB1dC4xCmluZGV4IGJhZGEwYjEuLmExYjgxYmMgMTAwNjQ0Ci0tLSBhL21hbi90cHV0LjEKKysrIGIvbWFuL3RwdXQuMQpAQCAtMSw2ICsxLDYgQEAKICdcIiB0CiAuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywyNCArMjcsMjQgQEAKIC5cIiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIKLS5cIiAkSWQ6IHRwdXQuMSx2IDEuMjcgMjAwNi8xMi8yNCAxODoxMTozMSB0b20gRXhwICQKKy5cIiAkSWQ6IHRwdXQuMSx2IDEuMzIgMjAxMi8wNy8xNCAyMTowNjo0NSB0b20gRXhwICQKIC5USCBAVFBVVEAgMSAiIgogLmRzIGQgQFRFUk1JTkZPQAogLmRzIG4gMQogLlNIIE5BTUUKLVxmQkBUUFVUQFxmUiwgXGZCcmVzZXRcZlIgLSBpbml0aWFsaXplIGEgdGVybWluYWwgb3IgcXVlcnkgdGVybWluZm8gZGF0YWJhc2UKK1xmQkBUUFVUQFxmUiwgXGZCcmVzZXRcZlIgXC0gaW5pdGlhbGl6ZSBhIHRlcm1pbmFsIG9yIHF1ZXJ5IHRlcm1pbmZvIGRhdGFiYXNlCiAuU0ggU1lOT1BTSVMKLVxmQkBUUFVUQFxmUiBbXGZCLVRcZlJcZkl0eXBlXGZSXSBcZkljYXBuYW1lXGZSIFtcZklwYXJtc1xmUiAuLi4gXQorXGZCQFRQVVRAXGZSIFtcZkJcLVRcZlJcZkl0eXBlXGZSXSBcZkljYXBuYW1lXGZSIFtcZklwYXJtc1xmUiAuLi4gXQogLmJyCi1cZkJAVFBVVEBcZlIgW1xmQi1UXGZSXGZJdHlwZVxmUl0gXGZCaW5pdFxmUgorXGZCQFRQVVRAXGZSIFtcZkJcLVRcZlJcZkl0eXBlXGZSXSBcZkJpbml0XGZSCiAuYnIKLVxmQkBUUFVUQFxmUiBbXGZCLVRcZlJcZkl0eXBlXGZSXSBcZkJyZXNldFxmUgorXGZCQFRQVVRAXGZSIFtcZkJcLVRcZlJcZkl0eXBlXGZSXSBcZkJyZXNldFxmUgogLmJyCi1cZkJAVFBVVEBcZlIgW1xmQi1UXGZSXGZJdHlwZVxmUl0gXGZCbG9uZ25hbWVcZlIKK1xmQkBUUFVUQFxmUiBbXGZCXC1UXGZSXGZJdHlwZVxmUl0gXGZCbG9uZ25hbWVcZlIKIC5icgotXGZCQFRQVVRAIC1TXGZSICBcZkI8PFxmUgorXGZCQFRQVVRAIFwtU1xmUiAgXGZCPDxcZlIKIC5icgotXGZCQFRQVVRAIC1WXGZSCitcZkJAVFBVVEAgXC1WXGZSCiAuYnIKIC5TSCBERVNDUklQVElPTgogVGhlIFxmQkBUUFVUQFxmUiB1dGlsaXR5IHVzZXMgdGhlIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlIHRvIG1ha2UgdGhlCkBAIC03NiwxMiArNzYsMTMgQEAKIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgY2FwYWJpbGl0aWVzCiBhbmQgdGhlIFxmSWNhcG5hbWVcZlIgYXNzb2NpYXRlZCB3aXRoIGVhY2gsIHNlZSBcZkJ0ZXJtaW5mb1xmUig1KS4KIC5UUAotXGZCLVRcZlJcZkl0eXBlXGZSCi1pbmRpY2F0ZXMgdGhlIFxmSXR5cGVcZlIgb2YgdGVybWluYWwuICBOb3JtYWxseSB0aGlzIG9wdGlvbiBpcworXGZCXC1UXGZSXGZJdHlwZVxmUgoraW5kaWNhdGVzIHRoZSBcZkl0eXBlXGZSIG9mIHRlcm1pbmFsLgorTm9ybWFsbHkgdGhpcyBvcHRpb24gaXMKIHVubmVjZXNzYXJ5LCBiZWNhdXNlIHRoZSBkZWZhdWx0IGlzIHRha2VuIGZyb20gdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZSBcZkJURVJNXGZSLiAgSWYgXGZCLVRcZlIgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBzaGVsbAotdmFyaWFibGVzIFxmQkxJTkVTXGZSIGFuZCBcZkJDT0xVTU5TXGZSIHdpbGwgYmUgaWdub3JlZCxhbmQgdGhlCi1vcGVyYXRpbmcgc3lzdGVtIHdpbGwgbm90IGJlIHF1ZXJpZWQgZm9yIHRoZSBhY3R1YWwgc2NyZWVuIHNpemUuCit2YXJpYWJsZSBcZkJURVJNXGZSLgorSWYgXGZCXC1UXGZSIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgc2hlbGwKK3ZhcmlhYmxlcyBcZkJMSU5FU1xmUiBhbmQgXGZCQ09MVU1OU1xmUiB3aWxsIGFsc28gYmUgaWdub3JlZC4KIC5UUAogXGZJY2FwbmFtZVxmUgogaW5kaWNhdGVzIHRoZSBjYXBhYmlsaXR5IGZyb20gdGhlIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlLiAgV2hlbgpAQCAtOTksMTIgKzEwMCwxMiBAQAogSWYgbm8gcGFyYW1ldGVycyBhcmUgZ2l2ZW4gZm9yIHRoZSBjYXBhYmlsaXR5LAogXGZCQFRQVVRAXGZSIHdyaXRlcyB0aGUgc3RyaW5nIHdpdGhvdXQgcGVyZm9ybWluZyB0aGUgc3Vic3RpdHV0aW9uLgogLlRQCi1cZkItU1xmUgorXGZCXC1TXGZSCiBhbGxvd3MgbW9yZSB0aGFuIG9uZSBjYXBhYmlsaXR5IHBlciBpbnZvY2F0aW9uIG9mIFxmQkBUUFVUQFxmUi4gIFRoZQogY2FwYWJpbGl0aWVzIG11c3QgYmUgcGFzc2VkIHRvIFxmQkBUUFVUQFxmUiBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dAogaW5zdGVhZCBvZiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgKHNlZSBleGFtcGxlKS4KIE9ubHkgb25lIFxmSWNhcG5hbWVcZlIgaXMgYWxsb3dlZCBwZXIgbGluZS4KLVRoZSBcZkItU1xmUiBvcHRpb24gY2hhbmdlcyB0aGUKK1RoZSBcZkJcLVNcZlIgb3B0aW9uIGNoYW5nZXMgdGhlCiBtZWFuaW5nIG9mIHRoZSBcZkIwXGZSIGFuZCBcZkIxXGZSIGJvb2xlYW4gYW5kIHN0cmluZyBleGl0IGNvZGVzIChzZWUgdGhlCiBFWElUIENPREVTIHNlY3Rpb24pLgogLklQCkBAIC0xMTIsMTIgKzExMywxMiBAQAogdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIFxmQnRwYXJtXGZSICgzWCksCiBhbmQgaG93IHRvIGludGVycHJldCB0aGUgcGFyYW1ldGVycy4KIC5UUAotXGZCLVZcZlIKK1xmQlwtVlxmUgogcmVwb3J0cyB0aGUgdmVyc2lvbiBvZiBuY3Vyc2VzIHdoaWNoIHdhcyB1c2VkIGluIHRoaXMgcHJvZ3JhbSwgYW5kIGV4aXRzLgogLlRQCiBcZkJpbml0XGZSCiBJZiB0aGUgXGZCdGVybWluZm9cZlIgZGF0YWJhc2UgaXMgcHJlc2VudCBhbmQgYW4gZW50cnkgZm9yIHRoZSB1c2VyJ3MKLXRlcm1pbmFsIGV4aXN0cyAoc2VlIFxmQi1UXGZSXGZJdHlwZVxmUiwgYWJvdmUpLCB0aGUgZm9sbG93aW5nIHdpbGwKK3Rlcm1pbmFsIGV4aXN0cyAoc2VlIFxmQlwtVFxmUlxmSXR5cGVcZlIsIGFib3ZlKSwgdGhlIGZvbGxvd2luZyB3aWxsCiBvY2N1cjoKIC5SUwogLlRQCkBAIC0xNTIsMTQgKzE1MywxNCBAQAogLlRQCiBcZkJsb25nbmFtZVxmUgogSWYgdGhlIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlIGlzIHByZXNlbnQgYW5kIGFuIGVudHJ5IGZvciB0aGUKLXVzZXIncyB0ZXJtaW5hbCBleGlzdHMgKHNlZSBcZkItVFxmUlxmSXR5cGVcZlIgYWJvdmUpLCB0aGVuIHRoZSBsb25nIG5hbWUKK3VzZXIncyB0ZXJtaW5hbCBleGlzdHMgKHNlZSBcZkJcLVRcZlJcZkl0eXBlXGZSIGFib3ZlKSwgdGhlbiB0aGUgbG9uZyBuYW1lCiBvZiB0aGUgdGVybWluYWwgd2lsbCBiZSBwdXQgb3V0LiAgVGhlIGxvbmcgbmFtZSBpcyB0aGUgbGFzdAogbmFtZSBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdGVybWluYWwncyBkZXNjcmlwdGlvbiBpbiB0aGUKIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlIFtzZWUgXGZCdGVybVxmUig1KV0uCiAuUFAKIElmIFxmQkBUUFVUQFxmUiBpcyBpbnZva2VkIGJ5IGEgbGluayBuYW1lZCBcZkJyZXNldFxmUiwgdGhpcyBoYXMgdGhlCiBzYW1lIGVmZmVjdCBhcyBcZkJAVFBVVEAgcmVzZXRcZlIuCi1TZWUgXGZCdHNldFxmUiBmb3IgY29tcGFyaXNvbiwgd2hpY2ggaGFzIHNpbWlsYXIgYmVoYXZpb3IuCitTZWUgXGZCQFRTRVRAXGZSIGZvciBjb21wYXJpc29uLCB3aGljaCBoYXMgc2ltaWxhciBiZWhhdmlvci4KIC5TSCBFWEFNUExFUwogLlRQIDUKIFxmQkBUUFVUQCBpbml0XGZSCkBAIC0xNjksNyArMTcwLDcgQEAKIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIFxmQlRFUk1cZlIgaGFzIGJlZW4gZXhwb3J0ZWQsIGFzCiBpbGx1c3RyYXRlZCBvbiB0aGUgXGZCcHJvZmlsZVxmUig1KSBtYW51YWwgcGFnZS4KIC5UUCA1Ci1cZkJAVFBVVEAgLVQ1NjIwIHJlc2V0XGZSCitcZkJAVFBVVEAgXC1UNTYyMCByZXNldFxmUgogUmVzZXQgYW4gQVQmVCA1NjIwIHRlcm1pbmFsLCBvdmVycmlkaW5nIHRoZSB0eXBlIG9mCiB0ZXJtaW5hbCBpbiB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBcZkJURVJNXGZSLgogLlRQIDUKQEAgLTE4NCw3ICsxODUsNyBAQAogXGZCQFRQVVRAIGNvbHNcZlIKIFByaW50IHRoZSBudW1iZXIgb2YgY29sdW1ucyBmb3IgdGhlIGN1cnJlbnQgdGVybWluYWwuCiAuVFAgNQotXGZCQFRQVVRAIC1UNDUwIGNvbHNcZlIKK1xmQkBUUFVUQCBcLVQ0NTAgY29sc1xmUgogUHJpbnQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGZvciB0aGUgNDUwIHRlcm1pbmFsLgogLlRQIDUKIFxmQmJvbGQ9YEBUUFVUQCBzbXNvYCBvZmZib2xkPWBAVFBVVEAgcm1zb2BcZlIKQEAgLTIwOCw3ICsyMDksNyBAQAogdmFyaWFibGUgXGZCVEVSTVxmUi4KIC5QUAogLlJTIDUKLVxmQkBUUFVUQCAtUyA8PCFcZlIKK1xmQkBUUFVUQCBcLVMgPDwhXGZSCiAuYnIKIFxmQj4gY2xlYXJcZlIKIC5icgpAQCAtMjM3LDcgKzIzOCw3IEBACiBpbmZvcm1hdGlvbiwgc2VlIHRoZSAiVGFicyBhbmQgSW5pdGlhbGl6YXRpb24iCiBzZWN0aW9uIG9mIFxmQnRlcm1pbmZvXGZSKDUpCiAuU0ggRVhJVCBDT0RFUwotSWYgdGhlIFxmQi1TXGZSIG9wdGlvbiBpcyB1c2VkLAorSWYgdGhlIFxmQlwtU1xmUiBvcHRpb24gaXMgdXNlZCwKIFxmQkBUUFVUQFxmUiBjaGVja3MgZm9yIGVycm9ycyBmcm9tIGVhY2ggbGluZSwKIGFuZCBpZiBhbnkgZXJyb3JzIGFyZSBmb3VuZCwgd2lsbCBzZXQgdGhlIGV4aXQgY29kZSB0byA0IHBsdXMgdGhlCiBudW1iZXIgb2YgbGluZXMgd2l0aCBlcnJvcnMuCkBAIC0yNDUsNyArMjQ2LDcgQEAKIE5vIGluZGljYXRpb24gb2Ygd2hpY2ggbGluZSBmYWlsZWQgY2FuIGJlIGdpdmVuIHNvCiBleGl0IGNvZGUgXGZCMVxmUiB3aWxsIG5ldmVyIGFwcGVhci4gIEV4aXQgY29kZXMgXGZCMlxmUiwgXGZCM1xmUiwgYW5kCiBcZkI0XGZSIHJldGFpbiB0aGVpciB1c3VhbCBpbnRlcnByZXRhdGlvbi4KLUlmIHRoZSBcZkItU1xmUiBvcHRpb24gaXMgbm90IHVzZWQsCitJZiB0aGUgXGZCXC1TXGZSIG9wdGlvbiBpcyBub3QgdXNlZCwKIHRoZSBleGl0IGNvZGUgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBcZkljYXBuYW1lXGZSOgogLlJTIDUKIC5UUApAQCAtMjY1LDcgKzI2Niw3IEBACiB3aGV0aGVyIG9yIG5vdCBcZkljYXBuYW1lXGZSIGlzIGRlZmluZWQgZm9yIHRoaXMgdGVybWluYWwgXGZJdHlwZVxmUi4KIFRvIGRldGVybWluZSBpZiBcZkljYXBuYW1lXGZSIGlzIGRlZmluZWQgZm9yIHRoaXMgdGVybWluYWwgXGZJdHlwZVxmUiwKIHRoZSB1c2VyIG11c3QgdGVzdCB0aGUgdmFsdWUgd3JpdHRlbiB0byBzdGFuZGFyZCBvdXRwdXQuCi1BIHZhbHVlIG9mIFxmQi0xXGZSCitBIHZhbHVlIG9mIFxmQlwtMVxmUgogbWVhbnMgdGhhdCBcZkljYXBuYW1lXGZSIGlzIG5vdCBkZWZpbmVkIGZvciB0aGlzIHRlcm1pbmFsIFxmSXR5cGVcZlIuCiAuVFAKIC5JIG90aGVyCkBAIC0yNzUsNyArMjc2LDcgQEAKIC5QUAogQW55IG90aGVyIGV4aXQgY29kZSBpbmRpY2F0ZXMgYW4gZXJyb3I7IHNlZSB0aGUgRElBR05PU1RJQ1Mgc2VjdGlvbi4KIC5TSCBESUFHTk9TVElDUwotXGZCdHB1dFxmUiBwcmludHMgdGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlcyBhbmQgc2V0cyB0aGUgY29ycmVzcG9uZGluZyBleGl0CitcZkJAVFBVVEBcZlIgcHJpbnRzIHRoZSBmb2xsb3dpbmcgZXJyb3IgbWVzc2FnZXMgYW5kIHNldHMgdGhlIGNvcnJlc3BvbmRpbmcgZXhpdAogY29kZXMuCiAuUFAKIC5uZSAxNQpAQCAtMjg2LDQwICsyODcsNDYgQEAKIFxmQjBcZlIJVHsKIChcZkljYXBuYW1lXGZSIGlzIGEgbnVtZXJpYyB2YXJpYWJsZSB0aGF0IGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlCiBcZkJ0ZXJtaW5mb1xmUig1KSBkYXRhYmFzZSBmb3IgdGhpcyB0ZXJtaW5hbCB0eXBlLCBlLmcuCi1cZkJAVFBVVEAgLVQ0NTAgbGluZXNcZlIgYW5kIFxmQkBUUFVUQCAtVDI2MjEgeG1jXGZSKQorXGZCQFRQVVRAIFwtVDQ1MCBsaW5lc1xmUiBhbmQgXGZCQFRQVVRAIFwtVDI2MjEgeG1jXGZSKQogVH0KIFxmQjFcZlIJbm8gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkLCBzZWUgdGhlIFxmQkVYSVQgQ09ERVNcZlIgc2VjdGlvbi4KIFxmQjJcZlIJdXNhZ2UgZXJyb3IKIFxmQjNcZlIJdW5rbm93biB0ZXJtaW5hbCBcZkl0eXBlXGZSIG9yIG5vIFxmQnRlcm1pbmZvXGZSIGRhdGFiYXNlCiBcZkI0XGZSCXVua25vd24gXGZCdGVybWluZm9cZlIgY2FwYWJpbGl0eSBcZkljYXBuYW1lXGZSCi1cZkI+NFxmUgllcnJvciBvY2N1cnJlZCBpbiAtUworXGZCPjRcZlIJZXJyb3Igb2NjdXJyZWQgaW4gXC1TCiA9CiAuVEUKIC5TSCBQT1JUQUJJTElUWQogLlBQCi1UaGUgXGZCbG9uZ25hbWVcZlIgYW5kIFxmQi1TXGZSIG9wdGlvbnMsIGFuZCB0aGUgcGFyYW1ldGVyLXN1YnN0aXR1dGlvbgorVGhlIFxmQmxvbmduYW1lXGZSIGFuZCBcZkJcLVNcZlIgb3B0aW9ucywgYW5kIHRoZSBwYXJhbWV0ZXItc3Vic3RpdHV0aW9uCiBmZWF0dXJlcyB1c2VkIGluIHRoZSBcZkJjdXBcZlIgZXhhbXBsZSwgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gQlNEIGN1cnNlcyBvciBpbgogQVQmVC9VU0wgY3Vyc2VzIGJlZm9yZSBTVnI0LgogLlBQCiBYL09wZW4gZG9jdW1lbnRzIG9ubHkgdGhlIG9wZXJhbmRzIGZvciBcZkJjbGVhclxmUCwgXGZCaW5pdFxmUCBhbmQgXGZCcmVzZXRcZlAuCiBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCBcZkJjbGVhclxmUCBpcyBwYXJ0IG9mIHRoZSBcZkljYXBuYW1lXGZSIHN1cHBvcnQuCi1PdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgXGZCdHB1dFxmUCBvbgorT3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIFxmQkBUUFVUQFxmUCBvbgogU1ZyNC1iYXNlZCBzeXN0ZW1zIHN1Y2ggYXMgU29sYXJpcywgSVJJWDY0IGFuZCBIUFVYCiBhcyB3ZWxsIGFzIG90aGVycyBzdWNoIGFzIEFJWCBhbmQgVHJ1NjQKIHByb3ZpZGUgc3VwcG9ydCBmb3IgXGZJY2FwbmFtZVxmUiBvcGVyYW5kcy4KKy5QUAogQSBmZXcgcGxhdGZvcm1zIHN1Y2ggYXMgRnJlZUJTRCBhbmQgTmV0QlNEIHJlY29nbml6ZSB0ZXJtY2FwIG5hbWVzIHJhdGhlcgotdGhhbiB0ZXJtaW5mbyBjYXBhYmlsaXR5IG5hbWVzIGluIHRoZWlyIHJlc3BlY3RpdmUgXGZCdHB1dFxmUCBjb21tYW5kcy4KK3RoYW4gdGVybWluZm8gY2FwYWJpbGl0eSBuYW1lcyBpbiB0aGVpciByZXNwZWN0aXZlIFxmQkBUUFVUQFxmUCBjb21tYW5kcy4KKy5QUAorTW9zdCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggcHJvdmlkZSBzdXBwb3J0IGZvciBcZkljYXBuYW1lXGZSIG9wZXJhbmRzCit1c2UgdGhlIFxmSXRwYXJtXGZQIGZ1bmN0aW9uIHRvIGV4cGFuZCBwYXJhbWV0ZXJzIGluIGl0LgorVGhhdCBmdW5jdGlvbiBleHBlY3RzIGEgbWl4dHVyZSBvZiBudW1lcmljIGFuZCBzdHJpbmcgcGFyYW1ldGVycywKK3JlcXVpcmluZyBcZkJAVFBVVEBcZlAgdG8ga25vdyB3aGljaCB0eXBlIHRvIHVzZS4KK1RoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBhIHRhYmxlIHRvIGRldGVybWluZSB0aGF0IGZvcgordGhlIHN0YW5kYXJkIFxmSWNhcG5hbWVcZlIgb3BlcmFuZHMsIGFuZCBhbiBpbnRlcm5hbCBsaWJyYXJ5CitmdW5jdGlvbiB0byBhbmFseXplIG5vbnN0YW5kYXJkIFxmSWNhcG5hbWVcZlIgb3BlcmFuZHMuCitPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IHNpbXBseSBndWVzcyB0aGF0IGFuIG9wZXJhbmQgY29udGFpbmluZyBvbmx5IGRpZ2l0cworaXMgaW50ZW5kZWQgdG8gYmUgYSBudW1iZXIuCiAuU0ggU0VFIEFMU08KIFxmQkBDTEVBUkBcZlIoMSksCiBcZkJzdHR5XGZSKDEpLAogXGZCdGFic1xmUihcKm4pLAotXGZCdGVybWluZm9cZlIoNSkuCitcZkJ0ZXJtaW5mb1xmUig1KSwKK1xmQmN1cnNfdGVybWNhcFxmUigzWCkuCiAuUFAKIFRoaXMgZGVzY3JpYmVzIFxmQm5jdXJzZXNcZlIKIHZlcnNpb24gQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCAocGF0Y2ggQE5DVVJTRVNfUEFUQ0hAKS4KLS5cIiMKLS5cIiMgVGhlIGZvbGxvd2luZyBzZXRzIGVkaXQgbW9kZXMgZm9yIEdOVSBFTUFDUwotLlwiIyBMb2NhbCBWYXJpYWJsZXM6Ci0uXCIjIG1vZGU6bnJvZmYKLS5cIiMgZmlsbC1jb2x1bW46NzkKLS5cIiMgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL3RzZXQuMSBiL21hbi90c2V0LjEKaW5kZXggZTAyMzA2NC4uZTE1MWU3NSAxMDA2NDQKLS0tIGEvbWFuL3RzZXQuMQorKysgYi9tYW4vdHNldC4xCkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTQgKzI2LDE4IEBACiAuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKIC5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiCi0uXCIgJElkOiB0c2V0LjEsdiAxLjE5IDIwMDYvMTIvMjQgMTU6MDA6MzAgdG9tIEV4cCAkCi0uVEggdHNldCAxICIiCisuXCIgJElkOiB0c2V0LjEsdiAxLjI5IDIwMTMvMTIvMjEgMjI6MTU6NTMgdG9tIEV4cCAkCisuVEggQFRTRVRAIDEgIiIKKy5pZSBcbiguZyAuZHMgYGAgXChscQorLmVsICAgICAgIC5kcyBgYCBgYAorLmllIFxuKC5nIC5kcyAnJyBcKHJxCisuZWwgICAgICAgLmRzICcnICcnCiAuU0ggTkFNRQotXGZCdHNldFxmUiwgXGZCcmVzZXRcZlIgLSB0ZXJtaW5hbCBpbml0aWFsaXphdGlvbgorXGZCQFRTRVRAXGZSLCBcZkJyZXNldFxmUiBcLSB0ZXJtaW5hbCBpbml0aWFsaXphdGlvbgogLlNIIFNZTk9QU0lTCi1cZkJ0c2V0XGZSIFtcZkItSVFWY3Fyc3dcZlJdIFtcZkItXGZSXSBbXGZCLWVcZlIgXGZJY2hcZlJdIFtcZkItaVxmUiBcZkljaFxmUl0gW1xmQi1rXGZSIFxmSWNoXGZSXSBbXGZCLW1cZlIgXGZJbWFwcGluZ1xmUl0gW1xmSXRlcm1pbmFsXGZSXQorXGZCQFRTRVRAXGZSIFtcZkJcLUlRVmNxcnN3XGZSXSBbXGZCXC1cZlJdIFtcZkJcLWVcZlIgXGZJY2hcZlJdIFtcZkJcLWlcZlIgXGZJY2hcZlJdIFtcZkJcLWtcZlIgXGZJY2hcZlJdIFtcZkJcLW1cZlIgXGZJbWFwcGluZ1xmUl0gW1xmSXRlcm1pbmFsXGZSXQogLmJyCi1cZkJyZXNldFxmUiBbXGZCLUlRVmNxcnN3XGZSXSBbXGZCLVxmUl0gW1xmQi1lXGZSIFxmSWNoXGZSXSBbXGZCLWlcZlIgXGZJY2hcZlJdIFtcZkIta1xmUiBcZkljaFxmUl0gW1xmQi1tXGZSIFxmSW1hcHBpbmdcZlJdIFtcZkl0ZXJtaW5hbFxmUl0KK1xmQnJlc2V0XGZSIFtcZkJcLUlRVmNxcnN3XGZSXSBbXGZCXC1cZlJdIFtcZkJcLWVcZlIgXGZJY2hcZlJdIFtcZkJcLWlcZlIgXGZJY2hcZlJdIFtcZkJcLWtcZlIgXGZJY2hcZlJdIFtcZkJcLW1cZlIgXGZJbWFwcGluZ1xmUl0gW1xmSXRlcm1pbmFsXGZSXQogLlNIIERFU0NSSVBUSU9OCiBcJlxmQlRzZXRcZlIgaW5pdGlhbGl6ZXMgdGVybWluYWxzLgogXGZCVHNldFxmUiBmaXJzdCBkZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHRlcm1pbmFsIHRoYXQgeW91IGFyZSB1c2luZy4KQEAgLTQ0LDE3ICs0OCwxOCBAQAogMi4gVGhlIHZhbHVlIG9mIHRoZSBcZkJURVJNXGZSIGVudmlyb25tZW50YWwgdmFyaWFibGUuCiAuUFAKIDMuIChCU0Qgc3lzdGVtcyBvbmx5LikgVGhlIHRlcm1pbmFsIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFuZGFyZAotZXJyb3Igb3V0cHV0IGRldmljZSBpbiB0aGUgXGZJL2V0Yy90dHlzXGZSIGZpbGUuICAoT24gTGludXggYW5kCi1TeXN0ZW0tVi1saWtlIFVOSVhlcywgXGZJZ2V0dHlcZlIgZG9lcyB0aGlzIGpvYiBieSBzZXR0aW5nCitlcnJvciBvdXRwdXQgZGV2aWNlIGluIHRoZSBcZkkvZXRjL3R0eXNcZlIgZmlsZS4KKyhPbiBTeXN0ZW1cLVYtbGlrZSBVTklYZXMgYW5kIHN5c3RlbXMgdXNpbmcgdGhhdCBjb252ZW50aW9uLAorXGZJZ2V0dHlcZlIgZG9lcyB0aGlzIGpvYiBieSBzZXR0aW5nCiBcZkJURVJNXGZSIGFjY29yZGluZyB0byB0aGUgdHlwZSBwYXNzZWQgdG8gaXQgYnkgXGZJL2V0Yy9pbml0dGFiXGZSLikKIC5QUAotNC4gVGhlIGRlZmF1bHQgdGVybWluYWwgdHlwZSwgYGB1bmtub3duJycuCis0LiBUaGUgZGVmYXVsdCB0ZXJtaW5hbCB0eXBlLCBcKihgYHVua25vd25cKignJy4KIC5QUAotSWYgdGhlIHRlcm1pbmFsIHR5cGUgd2FzIG5vdCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIFxmQi1tXGZSCitJZiB0aGUgdGVybWluYWwgdHlwZSB3YXMgbm90IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC1saW5lLCB0aGUgXGZCXC1tXGZSCiBvcHRpb24gbWFwcGluZ3MgYXJlIHRoZW4gYXBwbGllZCAoc2VlIHRoZSBzZWN0aW9uCiAuQiBURVJNSU5BTCBUWVBFIE1BUFBJTkcKIGZvciBtb3JlIGluZm9ybWF0aW9uKS4KLVRoZW4sIGlmIHRoZSB0ZXJtaW5hbCB0eXBlIGJlZ2lucyB3aXRoIGEgcXVlc3Rpb24gbWFyayAoYGA/JycpLCB0aGUKK1RoZW4sIGlmIHRoZSB0ZXJtaW5hbCB0eXBlIGJlZ2lucyB3aXRoIGEgcXVlc3Rpb24gbWFyayAoXCooYGA/XCooJycpLCB0aGUKIHVzZXIgaXMgcHJvbXB0ZWQgZm9yIGNvbmZpcm1hdGlvbiBvZiB0aGUgdGVybWluYWwgdHlwZS4gIEFuIGVtcHR5CiByZXNwb25zZSBjb25maXJtcyB0aGUgdHlwZSwgb3IsIGFub3RoZXIgdHlwZSBjYW4gYmUgZW50ZXJlZCB0byBzcGVjaWZ5CiBhIG5ldyB0eXBlLiAgT25jZSB0aGUgdGVybWluYWwgdHlwZSBoYXMgYmVlbiBkZXRlcm1pbmVkLCB0aGUgdGVybWluZm8KQEAgLTY3LDExICs3MiwxMSBAQAogRmluYWxseSwgaWYgdGhlIGVyYXNlLCBpbnRlcnJ1cHQgYW5kIGxpbmUga2lsbCBjaGFyYWN0ZXJzIGhhdmUgY2hhbmdlZCwKIG9yIGFyZSBub3Qgc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCB0aGVpciB2YWx1ZXMgYXJlIGRpc3BsYXllZCB0byB0aGUKIHN0YW5kYXJkIGVycm9yIG91dHB1dC4KLVVzZSB0aGUgXGZCLWNcZlAgb3IgXGZCLXdcZlAgb3B0aW9uIHRvIHNlbGVjdCBvbmx5IHRoZSB3aW5kb3cgc2l6aW5nCitVc2UgdGhlIFxmQlwtY1xmUCBvciBcZkJcLXdcZlAgb3B0aW9uIHRvIHNlbGVjdCBvbmx5IHRoZSB3aW5kb3cgc2l6aW5nCiB2ZXJzdXMgdGhlIG90aGVyIGluaXRpYWxpemF0aW9uLgogSWYgbmVpdGhlciBvcHRpb24gaXMgZ2l2ZW4sIGJvdGggYXJlIGFzc3VtZWQuCiAuUFAKLVdoZW4gaW52b2tlZCBhcyBcZkJyZXNldFxmUiwgXGZCdHNldFxmUiBzZXRzIGNvb2tlZCBhbmQgZWNobyBtb2RlcywKK1doZW4gaW52b2tlZCBhcyBcZkJyZXNldFxmUiwgXGZCQFRTRVRAXGZSIHNldHMgY29va2VkIGFuZCBlY2hvIG1vZGVzLAogdHVybnMgb2ZmIGNicmVhayBhbmQgcmF3IG1vZGVzLCB0dXJucyBvbiBuZXdsaW5lIHRyYW5zbGF0aW9uIGFuZAogcmVzZXRzIGFueSB1bnNldCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMgYmVmb3JlCiBkb2luZyB0aGUgdGVybWluYWwgaW5pdGlhbGl6YXRpb24gZGVzY3JpYmVkIGFib3ZlLiAgVGhpcyBpcyB1c2VmdWwKQEAgLTg2LDk5ICs5MSwxMDYgQEAKIC5QUAogVGhlIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6CiAuVFAgNQotLkIgLWMKKy5CIFwtYwogU2V0IGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgbW9kZXMuCi0uQiAtZQorLlRQIDUKKy5CIFwtZQogU2V0IHRoZSBlcmFzZSBjaGFyYWN0ZXIgdG8gXGZJY2hcZlIuCiAuVFAKLS5CIC1JCisuQiBcLUkKIERvIG5vdCBzZW5kIHRoZSB0ZXJtaW5hbCBvciB0YWIgaW5pdGlhbGl6YXRpb24gc3RyaW5ncyB0byB0aGUgdGVybWluYWwuCiAuVFAKLS5CIC1pCisuQiBcLWkKIFNldCB0aGUgaW50ZXJydXB0IGNoYXJhY3RlciB0byBcZkljaFxmUi4KIC5UUAotLkIgLWsKKy5CIFwtawogU2V0IHRoZSBsaW5lIGtpbGwgY2hhcmFjdGVyIHRvIFxmSWNoXGZSLgogLlRQCi0uQiAtbQorLkIgXC1tCiBTcGVjaWZ5IGEgbWFwcGluZyBmcm9tIGEgcG9ydCB0eXBlIHRvIGEgdGVybWluYWwuCiBTZWUgdGhlIHNlY3Rpb24KIC5CIFRFUk1JTkFMIFRZUEUgTUFQUElORwogZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAuVFAKLS5CIC1RCisuQiBcLVEKIERvIG5vdCBkaXNwbGF5IGFueSB2YWx1ZXMgZm9yIHRoZSBlcmFzZSwgaW50ZXJydXB0IGFuZCBsaW5lIGtpbGwgY2hhcmFjdGVycy4KLU5vcm1hbGx5IFxmQnRzZXRcZlIgZGlzcGxheXMgdGhlIHZhbHVlcyBmb3IgY29udHJvbCBjaGFyYWN0ZXJzIHdoaWNoCitOb3JtYWxseSBcZkJAVFNFVEBcZlIgZGlzcGxheXMgdGhlIHZhbHVlcyBmb3IgY29udHJvbCBjaGFyYWN0ZXJzIHdoaWNoCiBkaWZmZXIgZnJvbSB0aGUgc3lzdGVtJ3MgZGVmYXVsdCB2YWx1ZXMuCiAuVFAKLS5CIC1xCisuQiBcLXEKIFRoZSB0ZXJtaW5hbCB0eXBlIGlzIGRpc3BsYXllZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LCBhbmQgdGhlIHRlcm1pbmFsIGlzCi1ub3QgaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4gIFRoZSBvcHRpb24gYC0nIGJ5IGl0c2VsZiBpcyBlcXVpdmFsZW50IGJ1dAorbm90IGluaXRpYWxpemVkIGluIGFueSB3YXkuICBUaGUgb3B0aW9uIGBcLScgYnkgaXRzZWxmIGlzIGVxdWl2YWxlbnQgYnV0CiBhcmNoYWljLgogLlRQCi0uQiAtcgorLkIgXC1yCiBQcmludCB0aGUgdGVybWluYWwgdHlwZSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0LgogLlRQCi0uQiAtcworLkIgXC1zCiBQcmludCB0aGUgc2VxdWVuY2Ugb2Ygc2hlbGwgY29tbWFuZHMgdG8gaW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKIFxmQlRFUk1cZlIgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KIFNlZSB0aGUgc2VjdGlvbgogLkIgU0VUVElORyBUSEUgRU5WSVJPTk1FTlQKIGZvciBkZXRhaWxzLgogLlRQCi0uQiAtVgorLkIgXC1WCiByZXBvcnRzIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMgd2hpY2ggd2FzIHVzZWQgaW4gdGhpcyBwcm9ncmFtLCBhbmQgZXhpdHMuCiAuVFAKLS5CIC13CisuQiBcLXcKIFJlc2l6ZSB0aGUgd2luZG93IHRvIG1hdGNoIHRoZSBzaXplIGRlZHVjZWQgdmlhIFxmQnNldHVwdGVybVxmUC4KIE5vcm1hbGx5IHRoaXMgaGFzIG5vIGVmZmVjdCwKIHVubGVzcyBcZkJzZXR1cHRlcm1cZlAgaXMgbm90IGFibGUgdG8gZGV0ZWN0IHRoZSB3aW5kb3cgc2l6ZS4KIC5QUAotVGhlIGFyZ3VtZW50cyBmb3IgdGhlIFxmQi1lXGZSLCBcZkItaVxmUiwgYW5kIFxmQi1rXGZSCitUaGUgYXJndW1lbnRzIGZvciB0aGUgXGZCXC1lXGZSLCBcZkJcLWlcZlIsIGFuZCBcZkJcLWtcZlIKIG9wdGlvbnMgbWF5IGVpdGhlciBiZSBlbnRlcmVkIGFzIGFjdHVhbCBjaGFyYWN0ZXJzIG9yIGJ5IHVzaW5nIHRoZSBgaGF0Jwotbm90YXRpb24sIGkuZS4gY29udHJvbC1oIG1heSBiZSBzcGVjaWZpZWQgYXMgYGBeSCcnIG9yIGBgXmgnJy4KK25vdGF0aW9uLCBpLmUuLCBjb250cm9sLWggbWF5IGJlIHNwZWNpZmllZCBhcyBcKihgYF5IXCooJycgb3IgXCooYGBeaFwqKCcnLgogLgogLlNIIFNFVFRJTkcgVEhFIEVOVklST05NRU5UCiBJdCBpcyBvZnRlbiBkZXNpcmFibGUgdG8gZW50ZXIgdGhlIHRlcm1pbmFsIHR5cGUgYW5kIGluZm9ybWF0aW9uIGFib3V0CiB0aGUgdGVybWluYWwncyBjYXBhYmlsaXRpZXMgaW50byB0aGUgc2hlbGwncyBlbnZpcm9ubWVudC4KLVRoaXMgaXMgZG9uZSB1c2luZyB0aGUgXGZCLXNcZlIgb3B0aW9uLgorVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBcZkJcLXNcZlIgb3B0aW9uLgogLlBQCi1XaGVuIHRoZSBcZkItc1xmUiBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGUgY29tbWFuZHMgdG8gZW50ZXIgdGhlIGluZm9ybWF0aW9uCitXaGVuIHRoZSBcZkJcLXNcZlIgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGNvbW1hbmRzIHRvIGVudGVyIHRoZSBpbmZvcm1hdGlvbgogaW50byB0aGUgc2hlbGwncyBlbnZpcm9ubWVudCBhcmUgd3JpdHRlbiB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgSWYKLXRoZSBcZkJTSEVMTFxmUiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGVuZHMgaW4gYGBjc2gnJywgdGhlIGNvbW1hbmRzCit0aGUgXGZCU0hFTExcZlIgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBlbmRzIGluIFwqKGBgY3NoXCooJycsIHRoZSBjb21tYW5kcwogYXJlIGZvciBcZkJjc2hcZlIsIG90aGVyd2lzZSwgdGhleSBhcmUgZm9yIFxmQnNoXGZSLgogTm90ZSwgdGhlIFxmQmNzaFxmUiBjb21tYW5kcyBzZXQgYW5kIHVuc2V0IHRoZSBzaGVsbCB2YXJpYWJsZQogXGZCbm9nbG9iXGZSLCBsZWF2aW5nIGl0IHVuc2V0LiAgVGhlIGZvbGxvd2luZyBsaW5lIGluIHRoZSBcZkIubG9naW5cZlIKIG9yIFxmQi5wcm9maWxlXGZSIGZpbGVzIHdpbGwgaW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgY29ycmVjdGx5OgogLnNwCi0gICAgZXZhbCBcYHRzZXQgLXMgb3B0aW9ucyAuLi4gXGAKKyAgICBldmFsIFxgQFRTRVRAIFwtcyBvcHRpb25zIC4uLiBcYAogLgogLlNIIFRFUk1JTkFMIFRZUEUgTUFQUElORwogV2hlbiB0aGUgdGVybWluYWwgaXMgbm90IGhhcmR3aXJlZCBpbnRvIHRoZSBzeXN0ZW0gKG9yIHRoZSBjdXJyZW50CiBzeXN0ZW0gaW5mb3JtYXRpb24gaXMgaW5jb3JyZWN0KSB0aGUgdGVybWluYWwgdHlwZSBkZXJpdmVkIGZyb20gdGhlCiBcZkkvZXRjL3R0eXNcZlIgZmlsZSBvciB0aGUgXGZCVEVSTVxmUiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGlzIG9mdGVuCiBzb21ldGhpbmcgZ2VuZXJpYyBsaWtlIFxmQm5ldHdvcmtcZlIsIFxmQmRpYWx1cFxmUiwgb3IgXGZCdW5rbm93blxmUi4KLVdoZW4gXGZCdHNldFxmUiBpcyB1c2VkIGluIGEgc3RhcnR1cCBzY3JpcHQgaXQgaXMgb2Z0ZW4gZGVzaXJhYmxlIHRvCitXaGVuIFxmQkBUU0VUQFxmUiBpcyB1c2VkIGluIGEgc3RhcnR1cCBzY3JpcHQgaXQgaXMgb2Z0ZW4gZGVzaXJhYmxlIHRvCiBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0eXBlIG9mIHRlcm1pbmFsIHVzZWQgb24gc3VjaCBwb3J0cy4KIC5QUAotVGhlIHB1cnBvc2Ugb2YgdGhlIFxmQi1tXGZSIG9wdGlvbiBpcyB0byBtYXAKK1RoZSBwdXJwb3NlIG9mIHRoZSBcZkJcLW1cZlIgb3B0aW9uIGlzIHRvIG1hcAogZnJvbSBzb21lIHNldCBvZiBjb25kaXRpb25zIHRvIGEgdGVybWluYWwgdHlwZSwgdGhhdCBpcywgdG8KLXRlbGwgXGZCdHNldFxmUgotYGBJZiBJJ20gb24gdGhpcyBwb3J0IGF0IGEgcGFydGljdWxhciBzcGVlZCwgZ3Vlc3MgdGhhdCBJJ20gb24gdGhhdAota2luZCBvZiB0ZXJtaW5hbCcnLgordGVsbCBcZkJAVFNFVEBcZlIKK1wqKGBgSWYgSSdtIG9uIHRoaXMgcG9ydCBhdCBhIHBhcnRpY3VsYXIgc3BlZWQsCitndWVzcyB0aGF0IEknbSBvbiB0aGF0IGtpbmQgb2YgdGVybWluYWxcKignJy4KIC5QUAotVGhlIGFyZ3VtZW50IHRvIHRoZSBcZkItbVxmUiBvcHRpb24gY29uc2lzdHMgb2YgYW4gb3B0aW9uYWwgcG9ydCB0eXBlLCBhbgorVGhlIGFyZ3VtZW50IHRvIHRoZSBcZkJcLW1cZlIgb3B0aW9uIGNvbnNpc3RzIG9mIGFuIG9wdGlvbmFsIHBvcnQgdHlwZSwgYW4KIG9wdGlvbmFsIG9wZXJhdG9yLCBhbiBvcHRpb25hbCBiYXVkIHJhdGUgc3BlY2lmaWNhdGlvbiwgYW4gb3B0aW9uYWwKLWNvbG9uIChgYDonJykgY2hhcmFjdGVyIGFuZCBhIHRlcm1pbmFsIHR5cGUuICBUaGUgcG9ydCB0eXBlIGlzIGEKLXN0cmluZyAoZGVsaW1pdGVkIGJ5IGVpdGhlciB0aGUgb3BlcmF0b3Igb3IgdGhlIGNvbG9uIGNoYXJhY3RlcikuICBUaGUKLW9wZXJhdG9yIG1heSBiZSBhbnkgY29tYmluYXRpb24gb2YgYGA+JycsIGBgPCcnLCBgYEAnJywgYW5kIGBgIScnOyBgYD4nJwotbWVhbnMgZ3JlYXRlciB0aGFuLCBgYDwnJyBtZWFucyBsZXNzIHRoYW4sIGBgQCcnIG1lYW5zIGVxdWFsIHRvCi1hbmQgYGAhJycgaW52ZXJ0cyB0aGUgc2Vuc2Ugb2YgdGhlIHRlc3QuCitjb2xvbiAoXCooYGA6XCooJycpIGNoYXJhY3RlciBhbmQgYSB0ZXJtaW5hbCB0eXBlLiAgVGhlIHBvcnQgdHlwZSBpcyBhCitzdHJpbmcgKGRlbGltaXRlZCBieSBlaXRoZXIgdGhlIG9wZXJhdG9yIG9yIHRoZSBjb2xvbiBjaGFyYWN0ZXIpLgorVGhlIG9wZXJhdG9yIG1heSBiZSBhbnkgY29tYmluYXRpb24gb2YKK1wqKGBgPlwqKCcnLAorXCooYGA8XCooJycsCitcKihgYEBcKignJywKK2FuZCBcKihgYCFcKignJzsKK1wqKGBgPlwqKCcnIG1lYW5zIGdyZWF0ZXIgdGhhbiwKK1wqKGBgPFwqKCcnIG1lYW5zIGxlc3MgdGhhbiwKK1wqKGBgQFwqKCcnIG1lYW5zIGVxdWFsIHRvIGFuZAorXCooYGAhXCooJycgaW52ZXJ0cyB0aGUgc2Vuc2Ugb2YgdGhlIHRlc3QuCiBUaGUgYmF1ZCByYXRlIGlzIHNwZWNpZmllZCBhcyBhIG51bWJlciBhbmQgaXMgY29tcGFyZWQgd2l0aCB0aGUgc3BlZWQKIG9mIHRoZSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgKHdoaWNoIHNob3VsZCBiZSB0aGUgY29udHJvbCB0ZXJtaW5hbCkuCiBUaGUgdGVybWluYWwgdHlwZSBpcyBhIHN0cmluZy4KIC5QUAotSWYgdGhlIHRlcm1pbmFsIHR5cGUgaXMgbm90IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGUgXGZCLW1cZlIKK0lmIHRoZSB0ZXJtaW5hbCB0eXBlIGlzIG5vdCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIFxmQlwtbVxmUgogbWFwcGluZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIHRlcm1pbmFsIHR5cGUuICBJZiB0aGUgcG9ydCB0eXBlIGFuZCBiYXVkCiByYXRlIG1hdGNoIHRoZSBtYXBwaW5nLCB0aGUgdGVybWluYWwgdHlwZSBzcGVjaWZpZWQgaW4gdGhlIG1hcHBpbmcKIHJlcGxhY2VzIHRoZSBjdXJyZW50IHR5cGUuICBJZiBtb3JlIHRoYW4gb25lIG1hcHBpbmcgaXMgc3BlY2lmaWVkLCB0aGUKQEAgLTE5Myw2MyArMjA1LDY3IEBACiAuUFAKIElmIG5vIGJhdWQgcmF0ZSBpcyBzcGVjaWZpZWQsIHRoZSB0ZXJtaW5hbCB0eXBlIHdpbGwgbWF0Y2ggYW55IGJhdWQgcmF0ZS4KIElmIG5vIHBvcnQgdHlwZSBpcyBzcGVjaWZpZWQsIHRoZSB0ZXJtaW5hbCB0eXBlIHdpbGwgbWF0Y2ggYW55IHBvcnQgdHlwZS4KLUZvciBleGFtcGxlLCBcZkItbSBkaWFsdXA6dnQxMDAgLW0gOj94dGVybVxmUgorRm9yIGV4YW1wbGUsIFxmQlwtbSBkaWFsdXA6dnQxMDAgXC1tIDo/eHRlcm1cZlIKIHdpbGwgY2F1c2UgYW55IGRpYWx1cCBwb3J0LCByZWdhcmRsZXNzIG9mIGJhdWQgcmF0ZSwgdG8gbWF0Y2ggdGhlIHRlcm1pbmFsCiB0eXBlIHZ0MTAwLCBhbmQgYW55IG5vbi1kaWFsdXAgcG9ydCB0eXBlIHRvIG1hdGNoIHRoZSB0ZXJtaW5hbCB0eXBlID94dGVybS4KIE5vdGUsIGJlY2F1c2Ugb2YgdGhlIGxlYWRpbmcgcXVlc3Rpb24gbWFyaywgdGhlIHVzZXIgd2lsbCBiZQogcXVlcmllZCBvbiBhIGRlZmF1bHQgcG9ydCBhcyB0byB3aGV0aGVyIHRoZXkgYXJlIGFjdHVhbGx5IHVzaW5nIGFuIHh0ZXJtCiB0ZXJtaW5hbC4KIC5QUAotTm8gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBwZXJtaXR0ZWQgaW4gdGhlIFxmQi1tXGZSIG9wdGlvbiBhcmd1bWVudC4KK05vIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIHRoZSBcZkJcLW1cZlIgb3B0aW9uIGFyZ3VtZW50LgogQWxzbywgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBtZXRhLWNoYXJhY3RlcnMsIGl0IGlzIHN1Z2dlc3RlZCB0aGF0IHRoZQotZW50aXJlIFxmQi1tXGZSIG9wdGlvbiBhcmd1bWVudCBiZSBwbGFjZWQgd2l0aGluIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzLAotYW5kIHRoYXQgXGZCY3NoXGZSIHVzZXJzIGluc2VydCBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIgKGBgXGUnJykgYmVmb3JlCi1hbnkgZXhjbGFtYXRpb24gbWFya3MgKGBgIScnKS4KK2VudGlyZSBcZkJcLW1cZlIgb3B0aW9uIGFyZ3VtZW50IGJlIHBsYWNlZCB3aXRoaW4gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMsCithbmQgdGhhdCBcZkJjc2hcZlIgdXNlcnMgaW5zZXJ0IGEgYmFja3NsYXNoIGNoYXJhY3RlciAoXCooYGBcZVwqKCcnKSBiZWZvcmUKK2FueSBleGNsYW1hdGlvbiBtYXJrcyAoXCooYGAhXCooJycpLgogLlNIIEhJU1RPUlkKLVRoZSBcZkJ0c2V0XGZSIGNvbW1hbmQgYXBwZWFyZWQgaW4gQlNEIDMuMC4gIFRoZSBcZkJuY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9uCitUaGUgXGZCQFRTRVRAXGZSIGNvbW1hbmQgYXBwZWFyZWQgaW4gQlNEIDMuMC4gIFRoZSBcZkJuY3Vyc2VzXGZSIGltcGxlbWVudGF0aW9uCiB3YXMgbGlnaHRseSBhZGFwdGVkIGZyb20gdGhlIDQuNEJTRCBzb3VyY2VzIGZvciBhIHRlcm1pbmZvIGVudmlyb25tZW50IGJ5IEVyaWMKIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4uCiAuU0ggQ09NUEFUSUJJTElUWQotVGhlIFxmQnRzZXRcZlIgdXRpbGl0eSBoYXMgYmVlbiBwcm92aWRlZCBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSB3aXRoIEJTRAorVGhlIFxmQkBUU0VUQFxmUiB1dGlsaXR5IGhhcyBiZWVuIHByb3ZpZGVkIGZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHdpdGggQlNECiBlbnZpcm9ubWVudHMgKHVuZGVyIG1vc3QgbW9kZXJuIFVOSVhlcywgXGZCL2V0Yy9pbml0dGFiXGZSIGFuZCBcZklnZXR0eVxmUigxKQogY2FuIHNldCBcZkJURVJNXGZSIGFwcHJvcHJpYXRlbHkgZm9yIGVhY2ggZGlhbC11cCBsaW5lOyB0aGlzIG9idmlhdGVzIHdoYXQgd2FzCi1cZkJ0c2V0XGZSJ3MgbW9zdCBpbXBvcnRhbnQgdXNlKS4gIFRoaXMgaW1wbGVtZW50YXRpb24gYmVoYXZlcyBsaWtlIDQuNEJTRAorXGZCQFRTRVRAXGZSJ3MgbW9zdCBpbXBvcnRhbnQgdXNlKS4gIFRoaXMgaW1wbGVtZW50YXRpb24gYmVoYXZlcyBsaWtlIDQuNEJTRAogdHNldCwgd2l0aCBhIGZldyBleGNlcHRpb25zIHNwZWNpZmllZCBoZXJlLgogLlBQCi1UaGUgXGZCLVNcZlIgb3B0aW9uIG9mIEJTRCB0c2V0IG5vIGxvbmdlciB3b3JrczsgaXQgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgdG8gc3RkZXJyCi1hbmQgZGllcy4gIFRoZSBcZkItc1xmUiBvcHRpb24gb25seSBzZXRzIFxmQlRFUk1cZlIsIG5vdCBcZkJURVJNQ0FQXGZQLiAgQm90aCB0aGVzZQotY2hhbmdlcyBhcmUgYmVjYXVzZSB0aGUgXGZCVEVSTUNBUFxmUiB2YXJpYWJsZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIHVuZGVyCi10ZXJtaW5mby1iYXNlZCBcZkJuY3Vyc2VzXGZSLCB3aGljaCBtYWtlcyBcZkJ0c2V0IC1TXGZSIHVzZWxlc3MgKHdlIG1hZGUgaXQgZGllCi1ub2lzaWx5IHJhdGhlciB0aGFuIHNpbGVudGx5IGluZHVjZSBsb3NzYWdlKS4KK1RoZSBcZkJcLVNcZlIgb3B0aW9uIG9mIEJTRCB0c2V0IG5vIGxvbmdlciB3b3JrczsKK2l0IHByaW50cyBhbiBlcnJvciBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgZGllcy4KK1RoZSBcZkJcLXNcZlIgb3B0aW9uIG9ubHkgc2V0cyBcZkJURVJNXGZSLCBub3QgXGZCVEVSTUNBUFxmUC4KK0JvdGggb2YgdGhlc2UgY2hhbmdlcyBhcmUgYmVjYXVzZSB0aGUgXGZCVEVSTUNBUFxmUiB2YXJpYWJsZQoraXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCB1bmRlciB0ZXJtaW5mby1iYXNlZCBcZkJuY3Vyc2VzXGZSLAord2hpY2ggbWFrZXMgXGZCQFRTRVRAIFwtU1xmUiB1c2VsZXNzCisod2UgbWFkZSBpdCBkaWUgbm9pc2lseSByYXRoZXIgdGhhbiBzaWxlbnRseSBpbmR1Y2UgbG9zc2FnZSkuCiAuUFAKIFRoZXJlIHdhcyBhbiB1bmRvY3VtZW50ZWQgNC40QlNEIGZlYXR1cmUgdGhhdCBpbnZva2luZyB0c2V0IHZpYSBhIGxpbmsgbmFtZWQKIGBUU0VUYCAob3IgdmlhIGFueSBvdGhlciBuYW1lIGJlZ2lubmluZyB3aXRoIGFuIHVwcGVyLWNhc2UgbGV0dGVyKSBzZXQgdGhlCiB0ZXJtaW5hbCB0byB1c2UgdXBwZXItY2FzZSBvbmx5LiAgVGhpcyBmZWF0dXJlIGhhcyBiZWVuIG9taXR0ZWQuCiAuUFAKLVRoZSBcZkItQVxmUiwgXGZCLUVcZlIsIFxmQi1oXGZSLCBcZkItdVxmUiBhbmQgXGZCLXZcZlIKLW9wdGlvbnMgd2VyZSBkZWxldGVkIGZyb20gdGhlIFxmQnRzZXRcZlIKK1RoZSBcZkJcLUFcZlIsIFxmQlwtRVxmUiwgXGZCXC1oXGZSLCBcZkJcLXVcZlIgYW5kIFxmQlwtdlxmUgorb3B0aW9ucyB3ZXJlIGRlbGV0ZWQgZnJvbSB0aGUgXGZCQFRTRVRAXGZSCiB1dGlsaXR5IGluIDQuNEJTRC4KIE5vbmUgb2YgdGhlbSB3ZXJlIGRvY3VtZW50ZWQgaW4gNC4zQlNEIGFuZCBhbGwgYXJlCiBvZiBsaW1pdGVkIHV0aWxpdHkgYXQgYmVzdC4KLVRoZSBcZkItYVxmUiwgXGZCLWRcZlIsIGFuZCBcZkItcFxmUiBvcHRpb25zIGFyZSBzaW1pbGFybHkKK1RoZSBcZkJcLWFcZlIsIFxmQlwtZFxmUiwgYW5kIFxmQlwtcFxmUiBvcHRpb25zIGFyZSBzaW1pbGFybHkKIG5vdCBkb2N1bWVudGVkIG9yIHVzZWZ1bCwgYnV0IHdlcmUgcmV0YWluZWQgYXMgdGhleSBhcHBlYXIgdG8gYmUgaW4KIHdpZGVzcHJlYWQgdXNlLiAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCBhbnkgdXNhZ2Ugb2YgdGhlc2UKLXRocmVlIG9wdGlvbnMgYmUgY2hhbmdlZCB0byB1c2UgdGhlIFxmQi1tXGZSIG9wdGlvbiBpbnN0ZWFkLiAgVGhlCi0tbiBvcHRpb24gcmVtYWlucywgYnV0IGhhcyBubyBlZmZlY3QuICBUaGUgXGZCLWFkbnBcZlIgb3B0aW9ucyBhcmUgdGhlcmVmb3JlCi1vbWl0dGVkIGZyb20gdGhlIHVzYWdlIHN1bW1hcnkgYWJvdmUuCit0aHJlZSBvcHRpb25zIGJlIGNoYW5nZWQgdG8gdXNlIHRoZSBcZkJcLW1cZlIgb3B0aW9uIGluc3RlYWQuCitUaGUgXGZCXC1uXGZQIG9wdGlvbiByZW1haW5zLCBidXQgaGFzIG5vIGVmZmVjdC4KK1RoZSBcZkJcLWFkbnBcZlIgb3B0aW9ucyBhcmUgdGhlcmVmb3JlIG9taXR0ZWQgZnJvbSB0aGUgdXNhZ2Ugc3VtbWFyeSBhYm92ZS4KIC5QUAotSXQgaXMgc3RpbGwgcGVybWlzc2libGUgdG8gc3BlY2lmeSB0aGUgXGZCLWVcZlIsIFxmQi1pXGZSLCBhbmQgXGZCLWtcZlIgb3B0aW9ucyB3aXRob3V0Ci1hcmd1bWVudHMsIGFsdGhvdWdoIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgc3VjaCB1c2FnZSBiZSBmaXhlZCB0bworSXQgaXMgc3RpbGwgcGVybWlzc2libGUgdG8gc3BlY2lmeSB0aGUgXGZCXC1lXGZSLCBcZkJcLWlcZlIsCithbmQgXGZCXC1rXGZSIG9wdGlvbnMgd2l0aG91dCBhcmd1bWVudHMsCithbHRob3VnaCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHN1Y2ggdXNhZ2UgYmUgZml4ZWQgdG8KIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgY2hhcmFjdGVyLgogLlBQCi1BcyBvZiA0LjRCU0QsIGV4ZWN1dGluZyBcZkJ0c2V0XGZSIGFzIFxmQnJlc2V0XGZSIG5vIGxvbmdlciBpbXBsaWVzIHRoZSBcZkItUVxmUgotb3B0aW9uLiAgQWxzbywgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIC0gb3B0aW9uIGFuZCB0aGUgXGZJdGVybWluYWxcZlIKLWFyZ3VtZW50IGluIHNvbWUgaGlzdG9yaWMgaW1wbGVtZW50YXRpb25zIG9mIFxmQnRzZXRcZlIgaGFzIGJlZW4gcmVtb3ZlZC4KK0FzIG9mIDQuNEJTRCwKK2V4ZWN1dGluZyBcZkJAVFNFVEBcZlIgYXMgXGZCcmVzZXRcZlIgbm8gbG9uZ2VyIGltcGxpZXMgdGhlIFxmQlwtUVxmUiBvcHRpb24uCitBbHNvLCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgXC0gb3B0aW9uIGFuZCB0aGUgXGZJdGVybWluYWxcZlIKK2FyZ3VtZW50IGluIHNvbWUgaGlzdG9yaWMgaW1wbGVtZW50YXRpb25zIG9mIFxmQkBUU0VUQFxmUiBoYXMgYmVlbiByZW1vdmVkLgogLlNIIEVOVklST05NRU5UCi1UaGUgXGZCdHNldFxmUiBjb21tYW5kIHVzZXMgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorVGhlIFxmQkBUU0VUQFxmUiBjb21tYW5kIHVzZXMgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogLlRQIDUKIFNIRUxMCi10ZWxscyBcZkJ0c2V0XGZQIHdoZXRoZXIgdG8gaW5pdGlhbGl6ZSBcZkJURVJNXGZQIHVzaW5nIFxmQnNoXGZQIG9yCit0ZWxscyBcZkJAVFNFVEBcZlAgd2hldGhlciB0byBpbml0aWFsaXplIFxmQlRFUk1cZlAgdXNpbmcgXGZCc2hcZlAgb3IKIFxmQmNzaFxmUCBzeW50YXguCiAuVFAgNQogVEVSTQpAQCAtMjU5LDcgKzI3NSw3IEBACiBURVJNQ0FQCiBtYXkgZGVub3RlIHRoZSBsb2NhdGlvbiBvZiBhIHRlcm1jYXAgZGF0YWJhc2UuCiBJZiBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aG5hbWUsIGUuZy4sIGJlZ2lucyB3aXRoIGEgYC8nLAotXGZCdHNldFxmUCByZW1vdmVzIHRoZSB2YXJpYWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgbG9va2luZworXGZCQFRTRVRAXGZQIHJlbW92ZXMgdGhlIHZhcmlhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IGJlZm9yZSBsb29raW5nCiBmb3IgdGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgogLlNIIEZJTEVTCiAuVFAgNQpAQCAtMjY5LDYgKzI4NSw3IEBACiBAVEVSTUlORk9ACiB0ZXJtaW5hbCBjYXBhYmlsaXR5IGRhdGFiYXNlCiAuU0ggU0VFIEFMU08KKy5oeSAwCiBjc2goMSksCiBzaCgxKSwKIHN0dHkoMSksCkBAIC0yNzcsMTIgKzI5NCw3IEBACiB0ZXJtaW5mbyg1KSwKIHR0eXMoNSksCiBlbnZpcm9uKDcpCisuaHkKIC5QUAogVGhpcyBkZXNjcmliZXMgXGZCbmN1cnNlc1xmUgogdmVyc2lvbiBATkNVUlNFU19NQUpPUkAuQE5DVVJTRVNfTUlOT1JAIChwYXRjaCBATkNVUlNFU19QQVRDSEApLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vd3Jlc2l6ZS4zeCBiL21hbi93cmVzaXplLjN4CmluZGV4IDRkMDVkM2UuLjA4MzI0NTAgMTAwNjQ0Ci0tLSBhL21hbi93cmVzaXplLjN4CisrKyBiL21hbi93cmVzaXplLjN4CkBAIC0xLDUgKzEsNSBAQAogLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0uXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAuXCIgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKIC5cIiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMjAgKzI4LDIxIEBACiAuXCIKIC5cIiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5NgogLlwiCi0uXCIgJElkOiB3cmVzaXplLjN4LHYgMS45IDIwMDYvMDIvMjUgMjE6NDc6MDYgdG9tIEV4cCAkCisuXCIgJElkOiB3cmVzaXplLjN4LHYgMS4xMyAyMDEwLzEyLzA0IDE4OjQwOjQ1IHRvbSBFeHAgJAogLlRIIHdyZXNpemUgM1ggIiIKIC5TSCBOQU1FCi1cZkJ3cmVzaXplXGZSIC0gcmVzaXplIGEgY3Vyc2VzIHdpbmRvdworXGZCd3Jlc2l6ZVxmUiBcLSByZXNpemUgYSBjdXJzZXMgd2luZG93CiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxjdXJzZXMuaD5cZlIKIC5zcAogXGZCaW50IHdyZXNpemUoV0lORE9XICp3aW4sIGludCBsaW5lcywgaW50IGNvbHVtbnMpO1xmUgogLlNIIERFU0NSSVBUSU9OCi1UaGUgXGZCd3Jlc2l6ZVxmUiBmdW5jdGlvbiByZWFsbG9jYXRlcyBzdG9yYWdlIGZvciBhbiBcZkJuY3Vyc2VzXGZSCitUaGlzIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgY3Vyc2VzIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitJdCByZWFsbG9jYXRlcyBzdG9yYWdlIGZvciBhbiBcZkJuY3Vyc2VzXGZSIAogd2luZG93IHRvIGFkanVzdCBpdHMgZGltZW5zaW9ucyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy4KIElmIGVpdGhlciBkaW1lbnNpb24gaXMgbGFyZ2VyIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWVzLCB0aGUKIHdpbmRvdydzIGRhdGEgaXMgZmlsbGVkIHdpdGggYmxhbmtzIHRoYXQgaGF2ZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHJlbmRpdGlvbgotKGFzIHNldCBieSBcZkJ3YmtnbmRzZXRcZlIpIG1lcmdlZCBpbnRvIHRoZW0uCisoYXMgc2V0IGJ5IFxmQndia2dkc2V0XGZSKSBtZXJnZWQgaW50byB0aGVtLgogLlNIIFJFVFVSTiBWQUxVRQogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGludGVnZXIgXGZCRVJSXGZSIHVwb24gZmFpbHVyZSBhbmQgXGZCT0tcZlIgb24gc3VjY2Vzcy4KIEl0IHdpbGwgZmFpbCBpZiBlaXRoZXIgb2YgdGhlIGRpbWVuc2lvbnMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sCkBAIC01Niw5ICs1NywzIEBACiBcZkJyZXNpemV0ZXJtXGZSKDNYKS4KIC5TSCBBVVRIT1IKIFRob21hcyBEaWNrZXkgKGZyb20gYW4gZXF1aXZhbGVudCBmdW5jdGlvbiB3cml0dGVuIGluIDE5ODggZm9yIEJTRCBjdXJzZXMpLgotLlwiIwotLlwiIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTCi0uXCIjIExvY2FsIFZhcmlhYmxlczoKLS5cIiMgbW9kZTpucm9mZgotLlwiIyBmaWxsLWNvbHVtbjo3OQotLlwiIyBFbmQ6CmRpZmYgLS1naXQgYS9tZW51L01ha2VmaWxlIGIvbWVudS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ4YTczZi4uMDAwMDAwMAotLS0gYS9tZW51L01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsNjMwICswLDAgQEAKLSMgJElkOiBNYWtlZmlsZS5pbix2IDEuNDggMjAwNy8wNC8yOCAxNDo1NjoxMSB0b20gRXhwICQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwotIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCi0jIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKLSMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIwotIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCi0jIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKLSMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKLSMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIwotIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCi0jIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIwotIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCi0jIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCi0jIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKLSMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KLSMKLSMgTWFrZWZpbGUgZm9yIG1lbnUgc291cmNlIGNvZGUuCi0jCi0jIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZzoKLSMJbGlicmFyaWVzIChub3JtYWwvZGVidWcvcHJvZmlsZS9zaGFyZWQpCi0jCi0jIFRoZSB2YXJpYWJsZSAnc3JjZGlyJyByZWZlcnMgdG8gdGhlIHNvdXJjZS1kaXN0cmlidXRpb24sIGFuZCBjYW4gYmUgc2V0IHdpdGgKLSMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgIi0tc3JjZGlyPURJUiIuCi0jCi0jIFRoZSBydWxlcyBhcmUgb3JnYW5pemVkIHRvIHByb2R1Y2UgdGhlIGxpYnJhcmllcyBmb3IgdGhlIGNvbmZpZ3VyZWQgbW9kZWxzLAotCi0jIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgotLlNVRkZJWEVTOgotCi1TSEVMTAkJPSAvYmluL3NoCi1USElTCQk9IE1ha2VmaWxlCi0KLXgJCT0gCi1vCQk9IC5vCi0KLU1PREVMCQk9IG5vcm1hbAotREVTVERJUgkJPSAKLXNyY2RpcgkJPSAuCi1wcmVmaXgJCT0gL3Vzci9sb2NhbAotZXhlY19wcmVmaXgJPSAke3ByZWZpeH0KLWJpbmRpcgkJPSAke2V4ZWNfcHJlZml4fS9iaW4KLWxpYmRpcgkJPSAke2V4ZWNfcHJlZml4fS9saWIKLWluY2x1ZGVkaXIJPSAke3ByZWZpeH0vaW5jbHVkZS9uY3Vyc2VzCi0KLUxJQlRPT0wJCT0gCi1MSUJUT09MX0NMRUFOCT0gCi1MSUJUT09MX0NPTVBJTEUJPSAKLUxJQlRPT0xfTElOSwk9ICR7Q0N9Ci1MSUJUT09MX0lOU1RBTEwJPSAKLUxJQlRPT0xfVU5JTlNUQUxMID0gCi0KLUlOU1RBTEwJCT0gL3Vzci9iaW4vaW5zdGFsbCAtYwotSU5TVEFMTF9MSUIJPSAvdXNyL2Jpbi9pbnN0YWxsIC1jIC1tIDY0NAotSU5TVEFMTF9QUk9HCT0gJHtJTlNUQUxMfQotSU5TVEFMTF9EQVRBCT0gJHtJTlNUQUxMfSAtbSA2NDQKLQotQVIJCT0gYXJtLWVhYmktYXIKLUFSX09QVFMJCT0gcnYKLUFXSwkJPSBtYXdrCi1MRAkJPSBhcm0tZWFiaS1sZAotTE5fUwkJPSBsbiAtcwotCi1DQwkJPSBhZ2NjLnBsCi1DUFAJCT0gYWdjYy5wbCAtRQotQ0ZMQUdTCQk9IC1PMiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlPTEyMDAKLQotQ1BQRkxBR1MJPSAtSS4uL25jdXJzZXMgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uL2luY2x1ZGUgIC1VX1hPUEVOX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0U9NTAwIC1VX1BPU0lYX0NfU09VUkNFIC1EX1BPU0lYX0NfU09VUkNFPTE5OTUwNkwgLUROREVCVUcgLUkke2luY2x1ZGVkaXJ9Ci0KLUNDRkxBR1MJCT0gJChDUFBGTEFHUykgJChDRkxBR1MpCi0KLUNGTEFHU19MSUJUT09MCT0gJChDQ0ZMQUdTKQotQ0ZMQUdTX05PUk1BTAk9ICQoQ0NGTEFHUykKLUNGTEFHU19ERUJVRwk9ICQoQ0NGTEFHUykgLWcgLURUUkFDRQotQ0ZMQUdTX1BST0ZJTEUJPSAkKENDRkxBR1MpIC1wZwotQ0ZMQUdTX1NIQVJFRAk9ICQoQ0NGTEFHUykgdW5rbm93bgotCi1DRkxBR1NfREVGQVVMVAk9ICQoQ0ZMQUdTX05PUk1BTCkKLQotTElOSwkJPSAkKExJQlRPT0xfTElOSykKLUxERkxBR1MJCT0gICAKLQotU0hMSUJfRElSUwk9IC1MLi4vbGliCi1TSExJQl9MSVNUCT0gJChTSExJQl9ESVJTKSAtbG5jdXJzZXMgCi0KLU1LX1NIQVJFRF9MSUIJPSBlY2hvIHVua25vd24KLQotTkNVUlNFU19NQUpPUgk9IDUKLU5DVVJTRVNfTUlOT1IJPSA3Ci1SRUxfVkVSU0lPTgk9IDUuNwotQUJJX1ZFUlNJT04JPSA1Ci0KLVJBTkxJQgkJPSBhcm0tZWFiaS1yYW5saWIKLQotTElCUkFSSUVTCT0gIC4uL2xpYi9saWJtZW51LmEgLi4vbGliL2xpYm1lbnVfZy5hCi0KLUxJTlQJCT0gCi1MSU5UX09QVFMJPSAKLUxJTlRfTElCUwk9IC1sbWVudSAtbG5jdXJzZXMgCi0KLUFVVE9fU1JDCT0gXAotCQkuLi9pbmNsdWRlL21lbnUuaCBcCi0JCS4uL2luY2x1ZGUvZXRpLmggXAotCQkuLi9pbmNsdWRlL21mX2NvbW1vbi5oCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1hbGwgXAotbGlicyBcCi1pbnN0YWxsIDo6CSQoQVVUT19TUkMpICQoTElCUkFSSUVTKQotCi1zb3VyY2VzIDoJJChBVVRPX1NSQykKLQotJChERVNURElSKSQoYmluZGlyKSBcCi0kKERFU1RESVIpJChsaWJkaXIpIDoKLQlzaCAkKHNyY2RpcikvLi4vbWtkaXJzLnNoICRACi0KLSMgbWFrZSBjb3BpZXMgdG8gc2ltcGxpZnkgaW5jbHVkZS1wYXRocyB3aGlsZSBzdGlsbCBrZWVwaW5nIG1lbnUncyBpbmNsdWRlCi0jIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuCi0uLi9pbmNsdWRlL21lbnUuaCA6ICQoc3JjZGlyKS9tZW51LmgKLQktcm0gLWYgJEAKLQljcCAkKHNyY2RpcikvbWVudS5oICRACi0uLi9pbmNsdWRlL2V0aS5oIDogJChzcmNkaXIpL2V0aS5oCi0JLXJtIC1mICRACi0JY3AgJChzcmNkaXIpL2V0aS5oICRACi0uLi9pbmNsdWRlL21mX2NvbW1vbi5oIDogJChzcmNkaXIpL21mX2NvbW1vbi5oCi0JLXJtIC1mICRACi0JY3AgJChzcmNkaXIpL21mX2NvbW1vbi5oICRACi0KLU1FTlVfUFJJVl9IID0gXAotCSQoc3JjZGlyKS9tZW51LnByaXYuaCBcCi0JJChBVVRPX1NSQykgXAotCS4uL2luY2x1ZGUvY3Vyc2VzLmgKLQotdGFnczoKLQljdGFncyAqLltjaF0KLQotVEFHUzoKLQlldGFncyAqLltjaF0KLQotbW9zdGx5Y2xlYW4gOjoKLQktcm0gLWYgY29yZSB0YWdzIFRBR1MgKn4gKi5iYWsgKi5pICoubG4gKi5hdGFjIHRyYWNlCi0KLWNsZWFuIDo6IG1vc3RseWNsZWFuCi0JLXJtIC1mICQoQVVUT19TUkMpCi0KLWRpc3RjbGVhbiA6OiBjbGVhbgotCS1ybSAtZiBNYWtlZmlsZQotCi1yZWFsY2xlYW4gOjogZGlzdGNsZWFuCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBnZW5lcmF0ZWQgYnkgbWstMHRoLmF3awotIyAgIGxpYm5hbWU6ICAgIG1lbnUKLSMgICBzdWJzZXRzOiAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLQotLlNVRkZJWEVTOiAuYyAuY2MgLmggLmkgLmlpCi0uYy5pIDoKLQkkKENQUCkgJChDUFBGTEFHUykgJDwgPiRACi0uY2MuaWkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLS5oLmkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLQotQ19TUkMgPSBcCi0JJChzcmNkaXIpL21fYXR0cmlicy5jIFwKLQkkKHNyY2RpcikvbV9jdXJzb3IuYyBcCi0JJChzcmNkaXIpL21fZHJpdmVyLmMgXAotCSQoc3JjZGlyKS9tX2Zvcm1hdC5jIFwKLQkkKHNyY2RpcikvbV9nbG9iYWwuYyBcCi0JJChzcmNkaXIpL21faG9vay5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX2N1ci5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX25hbS5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX25ldy5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX29wdC5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX3RvcC5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX3VzZS5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX3ZhbC5jIFwKLQkkKHNyY2RpcikvbV9pdGVtX3Zpcy5jIFwKLQkkKHNyY2RpcikvbV9pdGVtcy5jIFwKLQkkKHNyY2RpcikvbV9uZXcuYyBcCi0JJChzcmNkaXIpL21fb3B0cy5jIFwKLQkkKHNyY2RpcikvbV9wYWQuYyBcCi0JJChzcmNkaXIpL21fcGF0dGVybi5jIFwKLQkkKHNyY2RpcikvbV9wb3N0LmMgXAotCSQoc3JjZGlyKS9tX3JlcV9uYW1lLmMgXAotCSQoc3JjZGlyKS9tX3NjYWxlLmMgXAotCSQoc3JjZGlyKS9tX3NwYWNpbmcuYyBcCi0JJChzcmNkaXIpL21fc3ViLmMgXAotCSQoc3JjZGlyKS9tX3RyYWNlLmMgXAotCSQoc3JjZGlyKS9tX3VzZXJwdHIuYyBcCi0JJChzcmNkaXIpL21fd2luLmMKLQotIyBQcm9kdWNpbmcgbGxpYi1sbWVudSBpcyB0aW1lLWNvbnN1bWluZywgc28gdGhlcmUncyBubyBkaXJlY3QtZGVwZW5kZW5jeSBmb3IKLSMgaXQgaW4gdGhlIGxpbnRsaWIgcnVsZS4gIFdlJ2xsIG9ubHkgcmVtb3ZlIGluIHRoZSBjbGVhbmVzdCBzZXR1cC4KLWNsZWFuIDo6Ci0Jcm0gLWYgbGxpYi1sbWVudS4qCi0KLXJlYWxjbGVhbiA6OgotCXJtIC1mIGxsaWItbG1lbnUKLQotbGxpYi1sbWVudSA6ICQoQ19TUkMpCi0JY3Byb3RvIC1hIC1sIC1ETkNVUlNFU19FTkFCTEVfU1REQk9PTF9IPTAgLURMSU5UICQoQ1BQRkxBR1MpICQoQ19TUkMpID4kQAotCi1saW50bGliIDoKLQlzaCAkKHNyY2RpcikvLi4vbWlzYy9tYWtlbGxpYiBtZW51ICQoQ1BQRkxBR1MpCi1saW50IDoKLQkkKExJTlQpICQoTElOVF9PUFRTKSAkKENQUEZMQUdTKSAkKENfU1JDKSAkKExJTlRfTElCUykKLQotIyBnZW5lcmF0ZWQgYnkgbWstMXN0LmF3ayAoc3Vic2V0PXRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcykKLSMgIG5hbWU6ICAgICAgICAgIG1lbnUKLSMgIHRyYWNlczogICAgICAgIERFQlVHCi0jICBNT0RFTDogICAgICAgICBOT1JNQUwKLSMgIG1vZGVsOiAgICAgICAgIG9iamVjdHMKLSMgIHByZWZpeDogICAgICAgIGxpYgotIyAgc3VmZml4OiAgICAgICAgLmEKLSMgIHN1YnNldDogICAgICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgU2hsaWJWZXI6ICAgICAgYXV0bwotIyAgU2hsaWJWZXJJbmZpeDogbm8KLSMgIFRlcm1saWJSb290OiAgIG5jdXJzZXMKLSMgIFRlcm1saWJTdWZmaXg6IC5hCi0jICBSZUxpbms6ICAgICAgICAKLSMgIERvTGlua3M6ICAgICAgIG5vCi0jICBybVNvTG9jczogICAgICBubwotIyAgbGRjb25maWc6ICAgICAgOgotIyAgb3ZlcndyaXRlOiAgICAgbm8KLSMgIGRlcGVuZDogICAgICAgIC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAuL21lbnUucHJpdi5oCi0jICBob3N0OiAgICAgICAgICBhcm0tdW5rbm93bi1lYWJpCi0KLU5PUk1BTF9PQkpTID0gXAotCS4uL29iamVjdHMvbV9hdHRyaWJzJG8gXAotCS4uL29iamVjdHMvbV9jdXJzb3IkbyBcCi0JLi4vb2JqZWN0cy9tX2RyaXZlciRvIFwKLQkuLi9vYmplY3RzL21fZm9ybWF0JG8gXAotCS4uL29iamVjdHMvbV9nbG9iYWwkbyBcCi0JLi4vb2JqZWN0cy9tX2hvb2skbyBcCi0JLi4vb2JqZWN0cy9tX2l0ZW1fY3VyJG8gXAotCS4uL29iamVjdHMvbV9pdGVtX25hbSRvIFwKLQkuLi9vYmplY3RzL21faXRlbV9uZXckbyBcCi0JLi4vb2JqZWN0cy9tX2l0ZW1fb3B0JG8gXAotCS4uL29iamVjdHMvbV9pdGVtX3RvcCRvIFwKLQkuLi9vYmplY3RzL21faXRlbV91c2UkbyBcCi0JLi4vb2JqZWN0cy9tX2l0ZW1fdmFsJG8gXAotCS4uL29iamVjdHMvbV9pdGVtX3ZpcyRvIFwKLQkuLi9vYmplY3RzL21faXRlbXMkbyBcCi0JLi4vb2JqZWN0cy9tX25ldyRvIFwKLQkuLi9vYmplY3RzL21fb3B0cyRvIFwKLQkuLi9vYmplY3RzL21fcGFkJG8gXAotCS4uL29iamVjdHMvbV9wYXR0ZXJuJG8gXAotCS4uL29iamVjdHMvbV9wb3N0JG8gXAotCS4uL29iamVjdHMvbV9yZXFfbmFtZSRvIFwKLQkuLi9vYmplY3RzL21fc2NhbGUkbyBcCi0JLi4vb2JqZWN0cy9tX3NwYWNpbmckbyBcCi0JLi4vb2JqZWN0cy9tX3N1YiRvIFwKLQkuLi9vYmplY3RzL21fdXNlcnB0ciRvIFwKLQkuLi9vYmplY3RzL21fd2luJG8KLQotJChOT1JNQUxfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9tZW51LnByaXYuaAotCi0uLi9saWIvbGlibWVudS5hIDogJChOT1JNQUxfT0JKUykKLQkkKEFSKSAkKEFSX09QVFMpICRAICQ/Ci0JJChSQU5MSUIpICRACi0KLWluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKLWluc3RhbGwubWVudSA6OiAkKERFU1RESVIpJChsaWJkaXIpIC4uL2xpYi9saWJtZW51LmEKLQlAZWNobyBpbnN0YWxsaW5nIC4uL2xpYi9saWJtZW51LmEgYXMgJChERVNURElSKSQobGliZGlyKS9saWJtZW51LmEKLQkkKElOU1RBTExfREFUQSkgLi4vbGliL2xpYm1lbnUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYm1lbnUuYQotCSQoUkFOTElCKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYm1lbnUuYQotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnMgXAotdW5pbnN0YWxsLm1lbnUgOjoKLQlAZWNobyB1bmluc3RhbGxpbmcgJChERVNURElSKSQobGliZGlyKS9saWJtZW51LmEKLQktQHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGlibWVudS5hCi0KLWNsZWFuIDo6Ci0JLXJtIC1mIC4uL2xpYi9saWJtZW51LmEKLQotbW9zdGx5Y2xlYW46OgotCS1ybSAtZiAkKE5PUk1BTF9PQkpTKQotCi0jIGdlbmVyYXRlZCBieSBtay0ybmQuYXdrCi0jICAgbW9kZWw6ICAgICAgb2JqZWN0cwotIyAgIE1PREVMOiAgICAgIE5PUk1BTAotIyAgIGVjaG86ICAgICAgIHllcwotIyAgIHN1YnNldDogICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgIGNyZW5hbWVzOiAgIHllcwotIyAgIGN4eHJlbmFtZXM6IG5vCi0jICAgdHJhY2VzOiAgICAgREVCVUcKLSMgICBzcmNkaXI6ICAgICAuCi0KLS4uL29iamVjdHMvbV9hdHRyaWJzJG8gOgkkKHNyY2RpcikvbV9hdHRyaWJzLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fYXR0cmlicy5jIC1vIC4uL29iamVjdHMvbV9hdHRyaWJzJG8KLQotLi4vb2JqZWN0cy9tX2N1cnNvciRvIDoJJChzcmNkaXIpL21fY3Vyc29yLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fY3Vyc29yLmMgLW8gLi4vb2JqZWN0cy9tX2N1cnNvciRvCi0KLS4uL29iamVjdHMvbV9kcml2ZXIkbyA6CSQoc3JjZGlyKS9tX2RyaXZlci5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2RyaXZlci5jIC1vIC4uL29iamVjdHMvbV9kcml2ZXIkbwotCi0uLi9vYmplY3RzL21fZm9ybWF0JG8gOgkkKHNyY2RpcikvbV9mb3JtYXQuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL21lbnUvbV9mb3JtYXQuYyAtbyAuLi9vYmplY3RzL21fZm9ybWF0JG8KLQotLi4vb2JqZWN0cy9tX2dsb2JhbCRvIDoJJChzcmNkaXIpL21fZ2xvYmFsLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fZ2xvYmFsLmMgLW8gLi4vb2JqZWN0cy9tX2dsb2JhbCRvCi0KLS4uL29iamVjdHMvbV9ob29rJG8gOgkkKHNyY2RpcikvbV9ob29rLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21faG9vay5jIC1vIC4uL29iamVjdHMvbV9ob29rJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fY3VyJG8gOgkkKHNyY2RpcikvbV9pdGVtX2N1ci5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fY3VyLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fY3VyJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fbmFtJG8gOgkkKHNyY2RpcikvbV9pdGVtX25hbS5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fbmFtLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fbmFtJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fbmV3JG8gOgkkKHNyY2RpcikvbV9pdGVtX25ldy5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fbmV3LmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fbmV3JG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fb3B0JG8gOgkkKHNyY2RpcikvbV9pdGVtX29wdC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fb3B0LmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fb3B0JG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fdG9wJG8gOgkkKHNyY2RpcikvbV9pdGVtX3RvcC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fdG9wLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fdG9wJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fdXNlJG8gOgkkKHNyY2RpcikvbV9pdGVtX3VzZS5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fdXNlLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fdXNlJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fdmFsJG8gOgkkKHNyY2RpcikvbV9pdGVtX3ZhbC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fdmFsLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fdmFsJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1fdmlzJG8gOgkkKHNyY2RpcikvbV9pdGVtX3Zpcy5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1fdmlzLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1fdmlzJG8KLQotLi4vb2JqZWN0cy9tX2l0ZW1zJG8gOgkkKHNyY2RpcikvbV9pdGVtcy5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX2l0ZW1zLmMgLW8gLi4vb2JqZWN0cy9tX2l0ZW1zJG8KLQotLi4vb2JqZWN0cy9tX25ldyRvIDoJJChzcmNkaXIpL21fbmV3LmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fbmV3LmMgLW8gLi4vb2JqZWN0cy9tX25ldyRvCi0KLS4uL29iamVjdHMvbV9vcHRzJG8gOgkkKHNyY2RpcikvbV9vcHRzLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fb3B0cy5jIC1vIC4uL29iamVjdHMvbV9vcHRzJG8KLQotLi4vb2JqZWN0cy9tX3BhZCRvIDoJJChzcmNkaXIpL21fcGFkLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fcGFkLmMgLW8gLi4vb2JqZWN0cy9tX3BhZCRvCi0KLS4uL29iamVjdHMvbV9wYXR0ZXJuJG8gOgkkKHNyY2RpcikvbV9wYXR0ZXJuLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fcGF0dGVybi5jIC1vIC4uL29iamVjdHMvbV9wYXR0ZXJuJG8KLQotLi4vb2JqZWN0cy9tX3Bvc3QkbyA6CSQoc3JjZGlyKS9tX3Bvc3QuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL21lbnUvbV9wb3N0LmMgLW8gLi4vb2JqZWN0cy9tX3Bvc3QkbwotCi0uLi9vYmplY3RzL21fcmVxX25hbWUkbyA6CSQoc3JjZGlyKS9tX3JlcV9uYW1lLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fcmVxX25hbWUuYyAtbyAuLi9vYmplY3RzL21fcmVxX25hbWUkbwotCi0uLi9vYmplY3RzL21fc2NhbGUkbyA6CSQoc3JjZGlyKS9tX3NjYWxlLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9tZW51L21fc2NhbGUuYyAtbyAuLi9vYmplY3RzL21fc2NhbGUkbwotCi0uLi9vYmplY3RzL21fc3BhY2luZyRvIDoJJChzcmNkaXIpL21fc3BhY2luZy5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX3NwYWNpbmcuYyAtbyAuLi9vYmplY3RzL21fc3BhY2luZyRvCi0KLS4uL29iamVjdHMvbV9zdWIkbyA6CSQoc3JjZGlyKS9tX3N1Yi5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX3N1Yi5jIC1vIC4uL29iamVjdHMvbV9zdWIkbwotCi0uLi9vYmplY3RzL21fdXNlcnB0ciRvIDoJJChzcmNkaXIpL21fdXNlcnB0ci5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX3VzZXJwdHIuYyAtbyAuLi9vYmplY3RzL21fdXNlcnB0ciRvCi0KLS4uL29iamVjdHMvbV93aW4kbyA6CSQoc3JjZGlyKS9tX3dpbi5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbWVudS9tX3dpbi5jIC1vIC4uL29iamVjdHMvbV93aW4kbwotCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTFzdC5hd2sgKHN1YnNldD10aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MpCi0jICBuYW1lOiAgICAgICAgICBtZW51Ci0jICB0cmFjZXM6ICAgICAgICBERUJVRwotIyAgTU9ERUw6ICAgICAgICAgREVCVUcKLSMgIG1vZGVsOiAgICAgICAgIG9ial9nCi0jICBwcmVmaXg6ICAgICAgICBsaWIKLSMgIHN1ZmZpeDogICAgICAgIF9nLmEKLSMgIHN1YnNldDogICAgICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgU2hsaWJWZXI6ICAgICAgYXV0bwotIyAgU2hsaWJWZXJJbmZpeDogbm8KLSMgIFRlcm1saWJSb290OiAgIG5jdXJzZXMKLSMgIFRlcm1saWJTdWZmaXg6IC5hCi0jICBSZUxpbms6ICAgICAgICAKLSMgIERvTGlua3M6ICAgICAgIG5vCi0jICBybVNvTG9jczogICAgICBubwotIyAgbGRjb25maWc6ICAgICAgOgotIyAgb3ZlcndyaXRlOiAgICAgbm8KLSMgIGRlcGVuZDogICAgICAgIC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAuL21lbnUucHJpdi5oCi0jICBob3N0OiAgICAgICAgICBhcm0tdW5rbm93bi1lYWJpCi0KLURFQlVHX09CSlMgPSBcCi0JLi4vb2JqX2cvbV9hdHRyaWJzJG8gXAotCS4uL29ial9nL21fY3Vyc29yJG8gXAotCS4uL29ial9nL21fZHJpdmVyJG8gXAotCS4uL29ial9nL21fZm9ybWF0JG8gXAotCS4uL29ial9nL21fZ2xvYmFsJG8gXAotCS4uL29ial9nL21faG9vayRvIFwKLQkuLi9vYmpfZy9tX2l0ZW1fY3VyJG8gXAotCS4uL29ial9nL21faXRlbV9uYW0kbyBcCi0JLi4vb2JqX2cvbV9pdGVtX25ldyRvIFwKLQkuLi9vYmpfZy9tX2l0ZW1fb3B0JG8gXAotCS4uL29ial9nL21faXRlbV90b3AkbyBcCi0JLi4vb2JqX2cvbV9pdGVtX3VzZSRvIFwKLQkuLi9vYmpfZy9tX2l0ZW1fdmFsJG8gXAotCS4uL29ial9nL21faXRlbV92aXMkbyBcCi0JLi4vb2JqX2cvbV9pdGVtcyRvIFwKLQkuLi9vYmpfZy9tX25ldyRvIFwKLQkuLi9vYmpfZy9tX29wdHMkbyBcCi0JLi4vb2JqX2cvbV9wYWQkbyBcCi0JLi4vb2JqX2cvbV9wYXR0ZXJuJG8gXAotCS4uL29ial9nL21fcG9zdCRvIFwKLQkuLi9vYmpfZy9tX3JlcV9uYW1lJG8gXAotCS4uL29ial9nL21fc2NhbGUkbyBcCi0JLi4vb2JqX2cvbV9zcGFjaW5nJG8gXAotCS4uL29ial9nL21fc3ViJG8gXAotCS4uL29ial9nL21fdHJhY2UkbyBcCi0JLi4vb2JqX2cvbV91c2VycHRyJG8gXAotCS4uL29ial9nL21fd2luJG8KLQotJChERUJVR19PQkpTKSA6IC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAuL21lbnUucHJpdi5oCi0KLS4uL2xpYi9saWJtZW51X2cuYSA6ICQoREVCVUdfT0JKUykKLQkkKEFSKSAkKEFSX09QVFMpICRAICQ/Ci0JJChSQU5MSUIpICRACi0KLWluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKLWluc3RhbGwubWVudSA6OiAkKERFU1RESVIpJChsaWJkaXIpIC4uL2xpYi9saWJtZW51X2cuYQotCUBlY2hvIGluc3RhbGxpbmcgLi4vbGliL2xpYm1lbnVfZy5hIGFzICQoREVTVERJUikkKGxpYmRpcikvbGlibWVudV9nLmEKLQkkKElOU1RBTExfREFUQSkgLi4vbGliL2xpYm1lbnVfZy5hICQoREVTVERJUikkKGxpYmRpcikvbGlibWVudV9nLmEKLQkkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS9saWJtZW51X2cuYQotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnMgXAotdW5pbnN0YWxsLm1lbnUgOjoKLQlAZWNobyB1bmluc3RhbGxpbmcgJChERVNURElSKSQobGliZGlyKS9saWJtZW51X2cuYQotCS1Acm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJtZW51X2cuYQotCi1jbGVhbiA6OgotCS1ybSAtZiAuLi9saWIvbGlibWVudV9nLmEKLQotbW9zdGx5Y2xlYW46OgotCS1ybSAtZiAkKERFQlVHX09CSlMpCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTJuZC5hd2sKLSMgICBtb2RlbDogICAgICBvYmpfZwotIyAgIE1PREVMOiAgICAgIERFQlVHCi0jICAgZWNobzogICAgICAgeWVzCi0jICAgc3Vic2V0OiAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICAgY3JlbmFtZXM6ICAgeWVzCi0jICAgY3h4cmVuYW1lczogbm8KLSMgICB0cmFjZXM6ICAgICBERUJVRwotIyAgIHNyY2RpcjogICAgIC4KLQotLi4vb2JqX2cvbV9hdHRyaWJzJG8gOgkkKHNyY2RpcikvbV9hdHRyaWJzLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9hdHRyaWJzLmMgLW8gLi4vb2JqX2cvbV9hdHRyaWJzJG8KLQotLi4vb2JqX2cvbV9jdXJzb3IkbyA6CSQoc3JjZGlyKS9tX2N1cnNvci5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21fY3Vyc29yLmMgLW8gLi4vb2JqX2cvbV9jdXJzb3IkbwotCi0uLi9vYmpfZy9tX2RyaXZlciRvIDoJJChzcmNkaXIpL21fZHJpdmVyLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9kcml2ZXIuYyAtbyAuLi9vYmpfZy9tX2RyaXZlciRvCi0KLS4uL29ial9nL21fZm9ybWF0JG8gOgkkKHNyY2RpcikvbV9mb3JtYXQuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX2Zvcm1hdC5jIC1vIC4uL29ial9nL21fZm9ybWF0JG8KLQotLi4vb2JqX2cvbV9nbG9iYWwkbyA6CSQoc3JjZGlyKS9tX2dsb2JhbC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21fZ2xvYmFsLmMgLW8gLi4vb2JqX2cvbV9nbG9iYWwkbwotCi0uLi9vYmpfZy9tX2hvb2skbyA6CSQoc3JjZGlyKS9tX2hvb2suYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX2hvb2suYyAtbyAuLi9vYmpfZy9tX2hvb2skbwotCi0uLi9vYmpfZy9tX2l0ZW1fY3VyJG8gOgkkKHNyY2RpcikvbV9pdGVtX2N1ci5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21faXRlbV9jdXIuYyAtbyAuLi9vYmpfZy9tX2l0ZW1fY3VyJG8KLQotLi4vb2JqX2cvbV9pdGVtX25hbSRvIDoJJChzcmNkaXIpL21faXRlbV9uYW0uYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX2l0ZW1fbmFtLmMgLW8gLi4vb2JqX2cvbV9pdGVtX25hbSRvCi0KLS4uL29ial9nL21faXRlbV9uZXckbyA6CSQoc3JjZGlyKS9tX2l0ZW1fbmV3LmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9pdGVtX25ldy5jIC1vIC4uL29ial9nL21faXRlbV9uZXckbwotCi0uLi9vYmpfZy9tX2l0ZW1fb3B0JG8gOgkkKHNyY2RpcikvbV9pdGVtX29wdC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21faXRlbV9vcHQuYyAtbyAuLi9vYmpfZy9tX2l0ZW1fb3B0JG8KLQotLi4vb2JqX2cvbV9pdGVtX3RvcCRvIDoJJChzcmNkaXIpL21faXRlbV90b3AuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX2l0ZW1fdG9wLmMgLW8gLi4vb2JqX2cvbV9pdGVtX3RvcCRvCi0KLS4uL29ial9nL21faXRlbV91c2UkbyA6CSQoc3JjZGlyKS9tX2l0ZW1fdXNlLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9pdGVtX3VzZS5jIC1vIC4uL29ial9nL21faXRlbV91c2UkbwotCi0uLi9vYmpfZy9tX2l0ZW1fdmFsJG8gOgkkKHNyY2RpcikvbV9pdGVtX3ZhbC5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21faXRlbV92YWwuYyAtbyAuLi9vYmpfZy9tX2l0ZW1fdmFsJG8KLQotLi4vb2JqX2cvbV9pdGVtX3ZpcyRvIDoJJChzcmNkaXIpL21faXRlbV92aXMuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX2l0ZW1fdmlzLmMgLW8gLi4vb2JqX2cvbV9pdGVtX3ZpcyRvCi0KLS4uL29ial9nL21faXRlbXMkbyA6CSQoc3JjZGlyKS9tX2l0ZW1zLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9pdGVtcy5jIC1vIC4uL29ial9nL21faXRlbXMkbwotCi0uLi9vYmpfZy9tX25ldyRvIDoJJChzcmNkaXIpL21fbmV3LmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9uZXcuYyAtbyAuLi9vYmpfZy9tX25ldyRvCi0KLS4uL29ial9nL21fb3B0cyRvIDoJJChzcmNkaXIpL21fb3B0cy5jIFwKLQkJCSQoTUVOVV9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9tZW51L21fb3B0cy5jIC1vIC4uL29ial9nL21fb3B0cyRvCi0KLS4uL29ial9nL21fcGFkJG8gOgkkKHNyY2RpcikvbV9wYWQuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX3BhZC5jIC1vIC4uL29ial9nL21fcGFkJG8KLQotLi4vb2JqX2cvbV9wYXR0ZXJuJG8gOgkkKHNyY2RpcikvbV9wYXR0ZXJuLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9wYXR0ZXJuLmMgLW8gLi4vb2JqX2cvbV9wYXR0ZXJuJG8KLQotLi4vb2JqX2cvbV9wb3N0JG8gOgkkKHNyY2RpcikvbV9wb3N0LmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9wb3N0LmMgLW8gLi4vb2JqX2cvbV9wb3N0JG8KLQotLi4vb2JqX2cvbV9yZXFfbmFtZSRvIDoJJChzcmNkaXIpL21fcmVxX25hbWUuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX3JlcV9uYW1lLmMgLW8gLi4vb2JqX2cvbV9yZXFfbmFtZSRvCi0KLS4uL29ial9nL21fc2NhbGUkbyA6CSQoc3JjZGlyKS9tX3NjYWxlLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9zY2FsZS5jIC1vIC4uL29ial9nL21fc2NhbGUkbwotCi0uLi9vYmpfZy9tX3NwYWNpbmckbyA6CSQoc3JjZGlyKS9tX3NwYWNpbmcuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX3NwYWNpbmcuYyAtbyAuLi9vYmpfZy9tX3NwYWNpbmckbwotCi0uLi9vYmpfZy9tX3N1YiRvIDoJJChzcmNkaXIpL21fc3ViLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV9zdWIuYyAtbyAuLi9vYmpfZy9tX3N1YiRvCi0KLS4uL29ial9nL21fdHJhY2UkbyA6CSQoc3JjZGlyKS9tX3RyYWNlLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV90cmFjZS5jIC1vIC4uL29ial9nL21fdHJhY2UkbwotCi0uLi9vYmpfZy9tX3VzZXJwdHIkbyA6CSQoc3JjZGlyKS9tX3VzZXJwdHIuYyBcCi0JCQkkKE1FTlVfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbWVudS9tX3VzZXJwdHIuYyAtbyAuLi9vYmpfZy9tX3VzZXJwdHIkbwotCi0uLi9vYmpfZy9tX3dpbiRvIDoJJChzcmNkaXIpL21fd2luLmMgXAotCQkJJChNRU5VX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL21lbnUvbV93aW4uYyAtbyAuLi9vYmpfZy9tX3dpbiRvCi0KLQotIyBnZW5lcmF0ZWQgYnkgbWstaGRyLmF3awotIyAgc3Vic2V0OiAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICBjb21wYXQ6ICAgICB5ZXMKLQotJHtERVNURElSfSR7aW5jbHVkZWRpcn0gOgotCXNoICR7c3JjZGlyfS8uLi9ta2RpcnMuc2ggJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5pbmNsdWRlcyA6OiAke0FVVE9fU1JDfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSBcCi0JCSQoc3JjZGlyKS9ldGkuaCBcCi0JCSQoc3JjZGlyKS9tZW51LmgKLQlAIChjZCAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAmJiBybSAtZiBldGkuaCkgOyAuLi9oZWFkZXJzLnNoICR7SU5TVEFMTF9EQVRBfSAke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSAke3NyY2Rpcn0gJChzcmNkaXIpL2V0aS5oCi0JQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbWVudS5oKSA7IC4uL2hlYWRlcnMuc2ggJHtJTlNUQUxMX0RBVEF9ICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICR7c3JjZGlyfSAkKHNyY2RpcikvbWVudS5oCi0KLXVuaW5zdGFsbCBcCi11bmluc3RhbGwubGlicyBcCi11bmluc3RhbGwuaW5jbHVkZXMgOjoKLQktQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgZXRpLmgpCi0JLUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIG1lbnUuaCkKLWRlcGVuZCA6ICR7QVVUT19TUkN9Ci0JbWFrZWRlcGVuZCAtLSAke0NQUEZMQUdTfSAtLSAke0NfU1JDfQotCi0jIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCmRpZmYgLS1naXQgYS9tZW51L01ha2VmaWxlLmluIGIvbWVudS9NYWtlZmlsZS5pbgppbmRleCBmYzMzZGM3Li45YmYxZmUzIDEwMDY0NAotLS0gYS9tZW51L01ha2VmaWxlLmluCisrKyBiL21lbnUvTWFrZWZpbGUuaW4KQEAgLTEsNiArMSw2IEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjQ4IDIwMDcvMDQvMjggMTQ6NTY6MTEgdG9tIEV4cCAkCisjICRJZDogTWFrZWZpbGUuaW4sdiAxLjY0IDIwMTUvMDgvMDUgMjM6MTU6NDEgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC00Miw3ICs0Miw4IEBACiAjIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCiB4CQk9IEBFWEVFWFRACkBAIC01MCwxOSArNTEsMjcgQEAKIAogTU9ERUwJCT0gQERGVF9MV1JfTU9ERUxACiBERVNURElSCQk9IEBERVNURElSQAordG9wX3NyY2Rpcgk9IEB0b3Bfc3JjZGlyQAogc3JjZGlyCQk9IEBzcmNkaXJACiBwcmVmaXgJCT0gQHByZWZpeEAKIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAogYmluZGlyCQk9IEBiaW5kaXJACiBsaWJkaXIJCT0gQGxpYmRpckAKIGluY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKK2luY2x1ZGVzdWJkaXIJPSBAaW5jbHVkZXN1YmRpckAKKworSU5DTFVERURJUgk9ICQoREVTVERJUikkKGluY2x1ZGVkaXIpJChpbmNsdWRlc3ViZGlyKQorCitQQUNLQUdFCQk9IEBQQUNLQUdFQAogCiBMSUJUT09MCQk9IEBMSUJUT09MQAorTElCVE9PTF9PUFRTCT0gQExJQlRPT0xfT1BUU0AgQEVYUE9SVF9TWU1TQAogTElCVE9PTF9DTEVBTgk9IEBMSUJfQ0xFQU5ACiBMSUJUT09MX0NPTVBJTEUJPSBATElCX0NPTVBJTEVACiBMSUJUT09MX0xJTksJPSBATElCX0xJTktACiBMSUJUT09MX0lOU1RBTEwJPSBATElCX0lOU1RBTExACiBMSUJUT09MX1VOSU5TVEFMTCA9IEBMSUJfVU5JTlNUQUxMQAorTFRfVU5ERUYJPSBATFRfVU5ERUZACiAKIElOU1RBTEwJCT0gQElOU1RBTExACiBJTlNUQUxMX0xJQgk9IEBJTlNUQUxMQCBASU5TVEFMTF9MSUJACkBAIC03MCwxNiArNzksMTkgQEAKIElOU1RBTExfREFUQQk9IEBJTlNUQUxMX0RBVEFACiAKIEFSCQk9IEBBUkAKLUFSX09QVFMJCT0gQEFSX09QVFNACitBUkZMQUdTCQk9IEBBUkZMQUdTQAogQVdLCQk9IEBBV0tACiBMRAkJPSBATERACiBMTl9TCQk9IEBMTl9TQAogCitDVEFHUwkJPSBAQ1RBR1NACitFVEFHUwkJPSBARVRBR1NACisKIENDCQk9IEBDQ0AKIENQUAkJPSBAQ1BQQAogQ0ZMQUdTCQk9IEBDRkxBR1NACiAKLUNQUEZMQUdTCT0gLUlAdG9wX3NyY2RpckAvbmN1cnNlcyAtREhBVkVfQ09ORklHX0ggQENQUEZMQUdTQAorQ1BQRkxBR1MJPSAtSSR7dG9wX3NyY2Rpcn0vbmN1cnNlcyAtREhBVkVfQ09ORklHX0ggQENQUEZMQUdTQAogCiBDQ0ZMQUdTCQk9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQogCkBAIC05NSw4ICsxMDcsMTEgQEAKIExERkxBR1MJCT0gQExERkxBR1NAIEBMRF9NT0RFTEAgQExJQlNACiAKIFNITElCX0RJUlMJPSAtTC4uL2xpYgotU0hMSUJfTElTVAk9ICQoU0hMSUJfRElSUykgLWxuY3Vyc2VzQExJQl9TVUZGSVhAIEBTSExJQl9MSVNUQAorU0hMSUJfTElTVAk9ICQoU0hMSUJfRElSUykgLWxuY3Vyc2VzQFVTRV9MSUJfU1VGRklYQCBAU0hMSUJfTElTVEAKIAorUlBBVEhfTElTVAk9IEBSUEFUSF9MSVNUQAorUkVTVUxUSU5HX1NZTVMJPSBAUkVTVUxUSU5HX1NZTVNACitWRVJTSU9ORURfU1lNUwk9IEBWRVJTSU9ORURfU1lNU0AKIE1LX1NIQVJFRF9MSUIJPSBATUtfU0hBUkVEX0xJQkAKIAogTkNVUlNFU19NQUpPUgk9IEBOQ1VSU0VTX01BSk9SQApAQCAtMTA2LDcgKzEyMSw3IEBACiAKIFJBTkxJQgkJPSBATElCX1BSRVBACiAKLUxJQlJBUklFUwk9IEBMSUJTX1RPX01BS0VACitMSUJSQVJJRVMJPSBATGlic19Ub19NYWtlQAogCiBMSU5UCQk9IEBMSU5UQAogTElOVF9PUFRTCT0gQExJTlRfT1BUU0AKQEAgLTEyNiw3ICsxNDEsNyBAQAogCiAkKERFU1RESVIpJChiaW5kaXIpIFwKICQoREVTVERJUikkKGxpYmRpcikgOgotCXNoICQoc3JjZGlyKS8uLi9ta2RpcnMuc2ggJEAKKwlta2RpciAtcCAkQAogCiAjIG1ha2UgY29waWVzIHRvIHNpbXBsaWZ5IGluY2x1ZGUtcGF0aHMgd2hpbGUgc3RpbGwga2VlcGluZyBtZW51J3MgaW5jbHVkZQogIyBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LgpAQCAtMTQwLDIyICsxNTUsMjMgQEAKIAktcm0gLWYgJEAKIAljcCAkKHNyY2RpcikvbWZfY29tbW9uLmggJEAKIAotTUVOVV9QUklWX0ggPSBcCitIRUFERVJfREVQUyA9IFwKIAkkKHNyY2RpcikvbWVudS5wcml2LmggXAogCSQoQVVUT19TUkMpIFwKIAkuLi9pbmNsdWRlL2N1cnNlcy5oCiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCisJJChDVEFHUykgKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgogCS1ybSAtZiAkKEFVVE9fU1JDKQorCS1ybSAtcmYgLmxpYnMgKi5kU1lNCiAKIGRpc3RjbGVhbiA6OiBjbGVhbgogCS1ybSAtZiBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvbWVudS9sbGliLWxtZW51IGIvbWVudS9sbGliLWxtZW51CmluZGV4IGZjMTdjYzMuLjEzZWNhZjggMTAwNjQ0Ci0tLSBhL21lbnUvbGxpYi1sbWVudQorKysgYi9tZW51L2xsaWItbG1lbnUKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDIsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA1LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMyArMjcsMTMgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgMTk5Ni0yMDAyLDIwMDUgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgIDE5OTYtMjAwNSwyMDEwICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIExJTlRMSUJSQVJZICovCiAKIC8qIC4vbV9hdHRyaWJzLmMgKi8KIAotI2luY2x1ZGUgIm1lbnUucHJpdi5oIgorI2luY2x1ZGUgPG1lbnUucHJpdi5oPgogCiAjdW5kZWYgc2V0X21lbnVfZm9yZQogaW50CXNldF9tZW51X2ZvcmUoCkBAIC0zNTAsNiArMzUwLDEyIEBACiAKIC8qIC4vbV9uZXcuYyAqLwogCisjdW5kZWYgbmV3X21lbnVfc3AKK01FTlUJKm5ld19tZW51X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJSVRFTQkqKml0ZW1zKQorCQl7IHJldHVybigqKE1FTlUgKiopMCk7IH0KKwogI3VuZGVmIG5ld19tZW51CiBNRU5VCSpuZXdfbWVudSgKIAkJSVRFTQkqKml0ZW1zKQpkaWZmIC0tZ2l0IGEvbWVudS9sbGliLWxtZW51dCBiL21lbnUvbGxpYi1sbWVudXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUxNzE5ZgotLS0gL2Rldi9udWxsCisrKyBiL21lbnUvbGxpYi1sbWVudXQKQEAgLTAsMCArMSw1NTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAyMDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMSU5UTElCUkFSWSAqLworCisvKiAuL21fYXR0cmlicy5jICovCisKKyNpbmNsdWRlIDxtZW51LnByaXYuaD4KKworI3VuZGVmIHNldF9tZW51X2ZvcmUKK2ludAlzZXRfbWVudV9mb3JlKAorCQlNRU5VCSptZW51LCAKKwkJY2h0eXBlCWF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfZm9yZQorY2h0eXBlCW1lbnVfZm9yZSgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisjdW5kZWYgc2V0X21lbnVfYmFjaworaW50CXNldF9tZW51X2JhY2soCisJCU1FTlUJKm1lbnUsIAorCQljaHR5cGUJYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9iYWNrCitjaHR5cGUJbWVudV9iYWNrKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKyN1bmRlZiBzZXRfbWVudV9ncmV5CitpbnQJc2V0X21lbnVfZ3JleSgKKwkJTUVOVQkqbWVudSwgCisJCWNodHlwZQlhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X2dyZXkKK2NodHlwZQltZW51X2dyZXkoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworLyogLi9tX2N1cnNvci5jICovCisKKyN1bmRlZiBfbmNfbWVudV9jdXJzb3JfcG9zCitpbnQJX25jX21lbnVfY3Vyc29yX3BvcygKKwkJY29uc3QgTUVOVSAqbWVudSwgCisJCWNvbnN0IElURU0gKml0ZW0sIAorCQlpbnQJKnBZLCAKKwkJaW50CSpwWCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcG9zX21lbnVfY3Vyc29yCitpbnQJcG9zX21lbnVfY3Vyc29yKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9kcml2ZXIuYyAqLworCisjdW5kZWYgX25jX01hdGNoX05leHRfQ2hhcmFjdGVyX0luX0l0ZW1fTmFtZQoraW50CV9uY19NYXRjaF9OZXh0X0NoYXJhY3Rlcl9Jbl9JdGVtX05hbWUoCisJCU1FTlUJKm1lbnUsIAorCQlpbnQJY2gsIAorCQlJVEVNCSoqaXRlbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9kcml2ZXIKK2ludAltZW51X2RyaXZlcigKKwkJTUVOVQkqbWVudSwgCisJCWludAljKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9mb3JtYXQuYyAqLworCisjdW5kZWYgc2V0X21lbnVfZm9ybWF0CitpbnQJc2V0X21lbnVfZm9ybWF0KAorCQlNRU5VCSptZW51LCAKKwkJaW50CXJvd3MsIAorCQlpbnQJY29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9mb3JtYXQKK3ZvaWQJbWVudV9mb3JtYXQoCisJCWNvbnN0IE1FTlUgKm1lbnUsIAorCQlpbnQJKnJvd3MsIAorCQlpbnQJKmNvbHMpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vbV9nbG9iYWwuYyAqLworCisjdW5kZWYgX25jX0RlZmF1bHRfTWVudQorTUVOVQlfbmNfRGVmYXVsdF9NZW51OworI3VuZGVmIF9uY19EZWZhdWx0X0l0ZW0KK0lURU0JX25jX0RlZmF1bHRfSXRlbTsKKworI3VuZGVmIF9uY19Db25uZWN0X0l0ZW1zCitOQ1VSU0VTX0JPT0wgX25jX0Nvbm5lY3RfSXRlbXMoCisJCU1FTlUJKm1lbnUsIAorCQlJVEVNCSoqaXRlbXMpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19EaXNjb25uZWN0X0l0ZW1zCit2b2lkCV9uY19EaXNjb25uZWN0X0l0ZW1zKAorCQlNRU5VCSptZW51KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoCitpbnQJX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoKAorCQljb25zdCBURVhUICppdGVtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aAordm9pZAlfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aCgKKwkJTUVOVQkqbWVudSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19MaW5rX0l0ZW1zCit2b2lkCV9uY19MaW5rX0l0ZW1zKAorCQlNRU5VCSptZW51KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX1Nob3dfTWVudQordm9pZAlfbmNfU2hvd19NZW51KAorCQljb25zdCBNRU5VICptZW51KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX05ld19Ub3BSb3dfYW5kX0N1cnJlbnRJdGVtCit2b2lkCV9uY19OZXdfVG9wUm93X2FuZF9DdXJyZW50SXRlbSgKKwkJTUVOVQkqbWVudSwgCisJCWludAluZXdfdG9wcm93LCAKKwkJSVRFTQkqbmV3X2N1cnJlbnRfaXRlbSkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9tX2hvb2suYyAqLworCisjdW5kZWYgc2V0X21lbnVfaW5pdAoraW50CXNldF9tZW51X2luaXQoCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X0hvb2sgZnVuYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9pbml0CitNZW51X0hvb2sgbWVudV9pbml0KAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKE1lbnVfSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfbWVudV90ZXJtCitpbnQJc2V0X21lbnVfdGVybSgKKwkJTUVOVQkqbWVudSwgCisJCU1lbnVfSG9vayBmdW5jKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X3Rlcm0KK01lbnVfSG9vayBtZW51X3Rlcm0oCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooTWVudV9Ib29rICopMCk7IH0KKworI3VuZGVmIHNldF9pdGVtX2luaXQKK2ludAlzZXRfaXRlbV9pbml0KAorCQlNRU5VCSptZW51LCAKKwkJTWVudV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGl0ZW1faW5pdAorTWVudV9Ib29rIGl0ZW1faW5pdCgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihNZW51X0hvb2sgKikwKTsgfQorCisjdW5kZWYgc2V0X2l0ZW1fdGVybQoraW50CXNldF9pdGVtX3Rlcm0oCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X0hvb2sgZnVuYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV90ZXJtCitNZW51X0hvb2sgaXRlbV90ZXJtKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKE1lbnVfSG9vayAqKTApOyB9CisKKy8qIC4vbV9pdGVtX2N1ci5jICovCisKKyN1bmRlZiBzZXRfY3VycmVudF9pdGVtCitpbnQJc2V0X2N1cnJlbnRfaXRlbSgKKwkJTUVOVQkqbWVudSwgCisJCUlURU0JKml0ZW0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGN1cnJlbnRfaXRlbQorSVRFTQkqY3VycmVudF9pdGVtKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKElURU0gKiopMCk7IH0KKworI3VuZGVmIGl0ZW1faW5kZXgKK2ludAlpdGVtX2luZGV4KAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9pdGVtX25hbS5jICovCisKKyN1bmRlZiBpdGVtX25hbWUKK2NvbnN0IGNoYXIgKml0ZW1fbmFtZSgKKwkJY29uc3QgSVRFTSAqaXRlbSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBpdGVtX2Rlc2NyaXB0aW9uCitjb25zdCBjaGFyICppdGVtX2Rlc2NyaXB0aW9uKAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9tX2l0ZW1fbmV3LmMgKi8KKworI3VuZGVmIG5ld19pdGVtCitJVEVNCSpuZXdfaXRlbSgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKQorCQl7IHJldHVybigqKElURU0gKiopMCk7IH0KKworI3VuZGVmIGZyZWVfaXRlbQoraW50CWZyZWVfaXRlbSgKKwkJSVRFTQkqaXRlbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X21lbnVfbWFyaworaW50CXNldF9tZW51X21hcmsoCisJCU1FTlUJKm1lbnUsIAorCQljb25zdCBjaGFyICptYXJrKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X21hcmsKK2NvbnN0IGNoYXIgKm1lbnVfbWFyaygKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vbV9pdGVtX29wdC5jICovCisKKyN1bmRlZiBzZXRfaXRlbV9vcHRzCitpbnQJc2V0X2l0ZW1fb3B0cygKKwkJSVRFTQkqaXRlbSwgCisJCUl0ZW1fT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpdGVtX29wdHNfb2ZmCitpbnQJaXRlbV9vcHRzX29mZigKKwkJSVRFTQkqaXRlbSwgCisJCUl0ZW1fT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpdGVtX29wdHNfb24KK2ludAlpdGVtX29wdHNfb24oCisJCUlURU0JKml0ZW0sIAorCQlJdGVtX09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV9vcHRzCitJdGVtX09wdGlvbnMgaXRlbV9vcHRzKAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKEl0ZW1fT3B0aW9ucyAqKTApOyB9CisKKy8qIC4vbV9pdGVtX3RvcC5jICovCisKKyN1bmRlZiBzZXRfdG9wX3JvdworaW50CXNldF90b3Bfcm93KAorCQlNRU5VCSptZW51LCAKKwkJaW50CXJvdykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdG9wX3JvdworaW50CXRvcF9yb3coCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX2l0ZW1fdXNlLmMgKi8KKworI3VuZGVmIHNldF9pdGVtX3VzZXJwdHIKK2ludAlzZXRfaXRlbV91c2VycHRyKAorCQlJVEVNCSppdGVtLCAKKwkJdm9pZAkqdXNlcnB0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV91c2VycHRyCit2b2lkCSppdGVtX3VzZXJwdHIoCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisvKiAuL21faXRlbV92YWwuYyAqLworCisjdW5kZWYgc2V0X2l0ZW1fdmFsdWUKK2ludAlzZXRfaXRlbV92YWx1ZSgKKwkJSVRFTQkqaXRlbSwgCisJCU5DVVJTRVNfQk9PTCB2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV92YWx1ZQorTkNVUlNFU19CT09MIGl0ZW1fdmFsdWUoCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi9tX2l0ZW1fdmlzLmMgKi8KKworI3VuZGVmIGl0ZW1fdmlzaWJsZQorTkNVUlNFU19CT09MIGl0ZW1fdmlzaWJsZSgKKwkJY29uc3QgSVRFTSAqaXRlbSkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL21faXRlbXMuYyAqLworCisjdW5kZWYgc2V0X21lbnVfaXRlbXMKK2ludAlzZXRfbWVudV9pdGVtcygKKwkJTUVOVQkqbWVudSwgCisJCUlURU0JKippdGVtcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9pdGVtcworSVRFTQkqKm1lbnVfaXRlbXMoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooSVRFTSAqKiopMCk7IH0KKworI3VuZGVmIGl0ZW1fY291bnQKK2ludAlpdGVtX2NvdW50KAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9uZXcuYyAqLworCisjdW5kZWYgbmV3X21lbnVfc3AKK01FTlUJKm5ld19tZW51X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJSVRFTQkqKml0ZW1zKQorCQl7IHJldHVybigqKE1FTlUgKiopMCk7IH0KKworI3VuZGVmIG5ld19tZW51CitNRU5VCSpuZXdfbWVudSgKKwkJSVRFTQkqKml0ZW1zKQorCQl7IHJldHVybigqKE1FTlUgKiopMCk7IH0KKworI3VuZGVmIGZyZWVfbWVudQoraW50CWZyZWVfbWVudSgKKwkJTUVOVQkqbWVudSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fb3B0cy5jICovCisKKyN1bmRlZiBzZXRfbWVudV9vcHRzCitpbnQJc2V0X21lbnVfb3B0cygKKwkJTUVOVQkqbWVudSwgCisJCU1lbnVfT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X29wdHNfb2ZmCitpbnQJbWVudV9vcHRzX29mZigKKwkJTUVOVQkqbWVudSwgCisJCU1lbnVfT3B0aW9ucyBvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X29wdHNfb24KK2ludAltZW51X29wdHNfb24oCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9vcHRzCitNZW51X09wdGlvbnMgbWVudV9vcHRzKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKE1lbnVfT3B0aW9ucyAqKTApOyB9CisKKy8qIC4vbV9wYWQuYyAqLworCisjdW5kZWYgc2V0X21lbnVfcGFkCitpbnQJc2V0X21lbnVfcGFkKAorCQlNRU5VCSptZW51LCAKKwkJaW50CXBhZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9wYWQKK2ludAltZW51X3BhZCgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fcGF0dGVybi5jICovCisKKyN1bmRlZiBtZW51X3BhdHRlcm4KK2NoYXIJKm1lbnVfcGF0dGVybigKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBzZXRfbWVudV9wYXR0ZXJuCitpbnQJc2V0X21lbnVfcGF0dGVybigKKwkJTUVOVQkqbWVudSwgCisJCWNvbnN0IGNoYXIgKnApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX3Bvc3QuYyAqLworCisjdW5kZWYgX25jX1Bvc3RfSXRlbQordm9pZAlfbmNfUG9zdF9JdGVtKAorCQljb25zdCBNRU5VICptZW51LCAKKwkJY29uc3QgSVRFTSAqaXRlbSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19EcmF3X01lbnUKK3ZvaWQJX25jX0RyYXdfTWVudSgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHBvc3RfbWVudQoraW50CXBvc3RfbWVudSgKKwkJTUVOVQkqbWVudSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdW5wb3N0X21lbnUKK2ludAl1bnBvc3RfbWVudSgKKwkJTUVOVQkqbWVudSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fcmVxX25hbWUuYyAqLworCisjdW5kZWYgbWVudV9yZXF1ZXN0X25hbWUKK2NvbnN0IGNoYXIgKm1lbnVfcmVxdWVzdF9uYW1lKAorCQlpbnQJcmVxdWVzdCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBtZW51X3JlcXVlc3RfYnlfbmFtZQoraW50CW1lbnVfcmVxdWVzdF9ieV9uYW1lKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX3NjYWxlLmMgKi8KKworI3VuZGVmIHNjYWxlX21lbnUKK2ludAlzY2FsZV9tZW51KAorCQljb25zdCBNRU5VICptZW51LCAKKwkJaW50CSpyb3dzLCAKKwkJaW50CSpjb2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9zcGFjaW5nLmMgKi8KKworI3VuZGVmIHNldF9tZW51X3NwYWNpbmcKK2ludAlzZXRfbWVudV9zcGFjaW5nKAorCQlNRU5VCSptZW51LCAKKwkJaW50CXNfZGVzYywgCisJCWludAlzX3JvdywgCisJCWludAlzX2NvbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9zcGFjaW5nCitpbnQJbWVudV9zcGFjaW5nKAorCQljb25zdCBNRU5VICptZW51LCAKKwkJaW50CSpzX2Rlc2MsIAorCQlpbnQJKnNfcm93LCAKKwkJaW50CSpzX2NvbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fc3ViLmMgKi8KKworI3VuZGVmIHNldF9tZW51X3N1YgoraW50CXNldF9tZW51X3N1YigKKwkJTUVOVQkqbWVudSwgCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X3N1YgorV0lORE9XCSptZW51X3N1YigKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi9tX3RyYWNlLmMgKi8KKworI3VuZGVmIF9uY19yZXRyYWNlX2l0ZW0KK0lURU0JKl9uY19yZXRyYWNlX2l0ZW0oCisJCUlURU0JKmNvZGUpCisJCXsgcmV0dXJuKCooSVRFTSAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfaXRlbV9wdHIKK0lURU0JKipfbmNfcmV0cmFjZV9pdGVtX3B0cigKKwkJSVRFTQkqKmNvZGUpCisJCXsgcmV0dXJuKCooSVRFTSAqKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2l0ZW1fb3B0cworSXRlbV9PcHRpb25zIF9uY19yZXRyYWNlX2l0ZW1fb3B0cygKKwkJSXRlbV9PcHRpb25zIGNvZGUpCisJCXsgcmV0dXJuKCooSXRlbV9PcHRpb25zICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX21lbnUKK01FTlUJKl9uY19yZXRyYWNlX21lbnUoCisJCU1FTlUJKmNvZGUpCisJCXsgcmV0dXJuKCooTUVOVSAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfbWVudV9ob29rCitNZW51X0hvb2sgX25jX3JldHJhY2VfbWVudV9ob29rKAorCQlNZW51X0hvb2sgY29kZSkKKwkJeyByZXR1cm4oKihNZW51X0hvb2sgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfbWVudV9vcHRzCitNZW51X09wdGlvbnMgX25jX3JldHJhY2VfbWVudV9vcHRzKAorCQlNZW51X09wdGlvbnMgY29kZSkKKwkJeyByZXR1cm4oKihNZW51X09wdGlvbnMgKikwKTsgfQorCisvKiAuL21fdXNlcnB0ci5jICovCisKKyN1bmRlZiBzZXRfbWVudV91c2VycHRyCitpbnQJc2V0X21lbnVfdXNlcnB0cigKKwkJTUVOVQkqbWVudSwgCisJCXZvaWQJKnVzZXJwdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfdXNlcnB0cgordm9pZAkqbWVudV91c2VycHRyKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KKworLyogLi9tX3dpbi5jICovCisKKyN1bmRlZiBzZXRfbWVudV93aW4KK2ludAlzZXRfbWVudV93aW4oCisJCU1FTlUJKm1lbnUsIAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV93aW4KK1dJTkRPVwkqbWVudV93aW4oCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CmRpZmYgLS1naXQgYS9tZW51L2xsaWItbG1lbnV0dyBiL21lbnUvbGxpYi1sbWVudXR3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZDU1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZW51L2xsaWItbG1lbnV0dwpAQCAtMCwwICsxLDU1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgIDIwMTAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vbV9hdHRyaWJzLmMgKi8KKworI2luY2x1ZGUgPG1lbnUucHJpdi5oPgorCisjdW5kZWYgc2V0X21lbnVfZm9yZQoraW50CXNldF9tZW51X2ZvcmUoCisJCU1FTlUJKm1lbnUsIAorCQljaHR5cGUJYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9mb3JlCitjaHR5cGUJbWVudV9mb3JlKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKyN1bmRlZiBzZXRfbWVudV9iYWNrCitpbnQJc2V0X21lbnVfYmFjaygKKwkJTUVOVQkqbWVudSwgCisJCWNodHlwZQlhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X2JhY2sKK2NodHlwZQltZW51X2JhY2soCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworI3VuZGVmIHNldF9tZW51X2dyZXkKK2ludAlzZXRfbWVudV9ncmV5KAorCQlNRU5VCSptZW51LCAKKwkJY2h0eXBlCWF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfZ3JleQorY2h0eXBlCW1lbnVfZ3JleSgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisvKiAuL21fY3Vyc29yLmMgKi8KKworI3VuZGVmIF9uY19tZW51X2N1cnNvcl9wb3MKK2ludAlfbmNfbWVudV9jdXJzb3JfcG9zKAorCQljb25zdCBNRU5VICptZW51LCAKKwkJY29uc3QgSVRFTSAqaXRlbSwgCisJCWludAkqcFksIAorCQlpbnQJKnBYKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwb3NfbWVudV9jdXJzb3IKK2ludAlwb3NfbWVudV9jdXJzb3IoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX2RyaXZlci5jICovCisKKyN1bmRlZiBfbmNfTWF0Y2hfTmV4dF9DaGFyYWN0ZXJfSW5fSXRlbV9OYW1lCitpbnQJX25jX01hdGNoX05leHRfQ2hhcmFjdGVyX0luX0l0ZW1fTmFtZSgKKwkJTUVOVQkqbWVudSwgCisJCWludAljaCwgCisJCUlURU0JKippdGVtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X2RyaXZlcgoraW50CW1lbnVfZHJpdmVyKAorCQlNRU5VCSptZW51LCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX2Zvcm1hdC5jICovCisKKyN1bmRlZiBzZXRfbWVudV9mb3JtYXQKK2ludAlzZXRfbWVudV9mb3JtYXQoCisJCU1FTlUJKm1lbnUsIAorCQlpbnQJcm93cywgCisJCWludAljb2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X2Zvcm1hdAordm9pZAltZW51X2Zvcm1hdCgKKwkJY29uc3QgTUVOVSAqbWVudSwgCisJCWludAkqcm93cywgCisJCWludAkqY29scykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9tX2dsb2JhbC5jICovCisKKyN1bmRlZiBfbmNfRGVmYXVsdF9NZW51CitNRU5VCV9uY19EZWZhdWx0X01lbnU7CisjdW5kZWYgX25jX0RlZmF1bHRfSXRlbQorSVRFTQlfbmNfRGVmYXVsdF9JdGVtOworCisjdW5kZWYgX25jX0Nvbm5lY3RfSXRlbXMKK05DVVJTRVNfQk9PTCBfbmNfQ29ubmVjdF9JdGVtcygKKwkJTUVOVQkqbWVudSwgCisJCUlURU0JKippdGVtcykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX0Rpc2Nvbm5lY3RfSXRlbXMKK3ZvaWQJX25jX0Rpc2Nvbm5lY3RfSXRlbXMoCisJCU1FTlUJKm1lbnUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGgKK2ludAlfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGgoCisJCWNvbnN0IFRFWFQgKml0ZW0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19DYWxjdWxhdGVfSXRlbV9MZW5ndGhfYW5kX1dpZHRoCit2b2lkCV9uY19DYWxjdWxhdGVfSXRlbV9MZW5ndGhfYW5kX1dpZHRoKAorCQlNRU5VCSptZW51KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX0xpbmtfSXRlbXMKK3ZvaWQJX25jX0xpbmtfSXRlbXMoCisJCU1FTlUJKm1lbnUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfU2hvd19NZW51Cit2b2lkCV9uY19TaG93X01lbnUoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfTmV3X1RvcFJvd19hbmRfQ3VycmVudEl0ZW0KK3ZvaWQJX25jX05ld19Ub3BSb3dfYW5kX0N1cnJlbnRJdGVtKAorCQlNRU5VCSptZW51LCAKKwkJaW50CW5ld190b3Byb3csIAorCQlJVEVNCSpuZXdfY3VycmVudF9pdGVtKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL21faG9vay5jICovCisKKyN1bmRlZiBzZXRfbWVudV9pbml0CitpbnQJc2V0X21lbnVfaW5pdCgKKwkJTUVOVQkqbWVudSwgCisJCU1lbnVfSG9vayBmdW5jKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X2luaXQKK01lbnVfSG9vayBtZW51X2luaXQoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooTWVudV9Ib29rICopMCk7IH0KKworI3VuZGVmIHNldF9tZW51X3Rlcm0KK2ludAlzZXRfbWVudV90ZXJtKAorCQlNRU5VCSptZW51LCAKKwkJTWVudV9Ib29rIGZ1bmMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfdGVybQorTWVudV9Ib29rIG1lbnVfdGVybSgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihNZW51X0hvb2sgKikwKTsgfQorCisjdW5kZWYgc2V0X2l0ZW1faW5pdAoraW50CXNldF9pdGVtX2luaXQoCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X0hvb2sgZnVuYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV9pbml0CitNZW51X0hvb2sgaXRlbV9pbml0KAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKE1lbnVfSG9vayAqKTApOyB9CisKKyN1bmRlZiBzZXRfaXRlbV90ZXJtCitpbnQJc2V0X2l0ZW1fdGVybSgKKwkJTUVOVQkqbWVudSwgCisJCU1lbnVfSG9vayBmdW5jKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpdGVtX3Rlcm0KK01lbnVfSG9vayBpdGVtX3Rlcm0oCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooTWVudV9Ib29rICopMCk7IH0KKworLyogLi9tX2l0ZW1fY3VyLmMgKi8KKworI3VuZGVmIHNldF9jdXJyZW50X2l0ZW0KK2ludAlzZXRfY3VycmVudF9pdGVtKAorCQlNRU5VCSptZW51LCAKKwkJSVRFTQkqaXRlbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3VycmVudF9pdGVtCitJVEVNCSpjdXJyZW50X2l0ZW0oCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooSVRFTSAqKikwKTsgfQorCisjdW5kZWYgaXRlbV9pbmRleAoraW50CWl0ZW1faW5kZXgoCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX2l0ZW1fbmFtLmMgKi8KKworI3VuZGVmIGl0ZW1fbmFtZQorY29uc3QgY2hhciAqaXRlbV9uYW1lKAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIGl0ZW1fZGVzY3JpcHRpb24KK2NvbnN0IGNoYXIgKml0ZW1fZGVzY3JpcHRpb24oCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisvKiAuL21faXRlbV9uZXcuYyAqLworCisjaW5jbHVkZSA8d2N0eXBlLmg+CisKKyN1bmRlZiBuZXdfaXRlbQorSVRFTQkqbmV3X2l0ZW0oCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQljb25zdCBjaGFyICpkZXNjcmlwdGlvbikKKwkJeyByZXR1cm4oKihJVEVNICoqKTApOyB9CisKKyN1bmRlZiBmcmVlX2l0ZW0KK2ludAlmcmVlX2l0ZW0oCisJCUlURU0JKml0ZW0pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNldF9tZW51X21hcmsKK2ludAlzZXRfbWVudV9tYXJrKAorCQlNRU5VCSptZW51LCAKKwkJY29uc3QgY2hhciAqbWFyaykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9tYXJrCitjb25zdCBjaGFyICptZW51X21hcmsoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisvKiAuL21faXRlbV9vcHQuYyAqLworCisjdW5kZWYgc2V0X2l0ZW1fb3B0cworaW50CXNldF9pdGVtX29wdHMoCisJCUlURU0JKml0ZW0sIAorCQlJdGVtX09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV9vcHRzX29mZgoraW50CWl0ZW1fb3B0c19vZmYoCisJCUlURU0JKml0ZW0sIAorCQlJdGVtX09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaXRlbV9vcHRzX29uCitpbnQJaXRlbV9vcHRzX29uKAorCQlJVEVNCSppdGVtLCAKKwkJSXRlbV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGl0ZW1fb3B0cworSXRlbV9PcHRpb25zIGl0ZW1fb3B0cygKKwkJY29uc3QgSVRFTSAqaXRlbSkKKwkJeyByZXR1cm4oKihJdGVtX09wdGlvbnMgKikwKTsgfQorCisvKiAuL21faXRlbV90b3AuYyAqLworCisjdW5kZWYgc2V0X3RvcF9yb3cKK2ludAlzZXRfdG9wX3JvdygKKwkJTUVOVQkqbWVudSwgCisJCWludAlyb3cpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRvcF9yb3cKK2ludAl0b3Bfcm93KAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9pdGVtX3VzZS5jICovCisKKyN1bmRlZiBzZXRfaXRlbV91c2VycHRyCitpbnQJc2V0X2l0ZW1fdXNlcnB0cigKKwkJSVRFTQkqaXRlbSwgCisJCXZvaWQJKnVzZXJwdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGl0ZW1fdXNlcnB0cgordm9pZAkqaXRlbV91c2VycHRyKAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KKworLyogLi9tX2l0ZW1fdmFsLmMgKi8KKworI3VuZGVmIHNldF9pdGVtX3ZhbHVlCitpbnQJc2V0X2l0ZW1fdmFsdWUoCisJCUlURU0JKml0ZW0sIAorCQlOQ1VSU0VTX0JPT0wgdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGl0ZW1fdmFsdWUKK05DVVJTRVNfQk9PTCBpdGVtX3ZhbHVlKAorCQljb25zdCBJVEVNICppdGVtKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vbV9pdGVtX3Zpcy5jICovCisKKyN1bmRlZiBpdGVtX3Zpc2libGUKK05DVVJTRVNfQk9PTCBpdGVtX3Zpc2libGUoCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi9tX2l0ZW1zLmMgKi8KKworI3VuZGVmIHNldF9tZW51X2l0ZW1zCitpbnQJc2V0X21lbnVfaXRlbXMoCisJCU1FTlUJKm1lbnUsIAorCQlJVEVNCSoqaXRlbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfaXRlbXMKK0lURU0JKiptZW51X2l0ZW1zKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKElURU0gKioqKTApOyB9CisKKyN1bmRlZiBpdGVtX2NvdW50CitpbnQJaXRlbV9jb3VudCgKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fbmV3LmMgKi8KKworI3VuZGVmIG5ld19tZW51X3NwCitNRU5VCSpuZXdfbWVudV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUlURU0JKippdGVtcykKKwkJeyByZXR1cm4oKihNRU5VICoqKTApOyB9CisKKyN1bmRlZiBuZXdfbWVudQorTUVOVQkqbmV3X21lbnUoCisJCUlURU0JKippdGVtcykKKwkJeyByZXR1cm4oKihNRU5VICoqKTApOyB9CisKKyN1bmRlZiBmcmVlX21lbnUKK2ludAlmcmVlX21lbnUoCisJCU1FTlUJKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX29wdHMuYyAqLworCisjdW5kZWYgc2V0X21lbnVfb3B0cworaW50CXNldF9tZW51X29wdHMoCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9vcHRzX29mZgoraW50CW1lbnVfb3B0c19vZmYoCisJCU1FTlUJKm1lbnUsIAorCQlNZW51X09wdGlvbnMgb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9vcHRzX29uCitpbnQJbWVudV9vcHRzX29uKAorCQlNRU5VCSptZW51LCAKKwkJTWVudV9PcHRpb25zIG9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfb3B0cworTWVudV9PcHRpb25zIG1lbnVfb3B0cygKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKihNZW51X09wdGlvbnMgKikwKTsgfQorCisvKiAuL21fcGFkLmMgKi8KKworI3VuZGVmIHNldF9tZW51X3BhZAoraW50CXNldF9tZW51X3BhZCgKKwkJTUVOVQkqbWVudSwgCisJCWludAlwYWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfcGFkCitpbnQJbWVudV9wYWQoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX3BhdHRlcm4uYyAqLworCisjdW5kZWYgbWVudV9wYXR0ZXJuCitjaGFyCSptZW51X3BhdHRlcm4oCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgc2V0X21lbnVfcGF0dGVybgoraW50CXNldF9tZW51X3BhdHRlcm4oCisJCU1FTlUJKm1lbnUsIAorCQljb25zdCBjaGFyICpwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9wb3N0LmMgKi8KKworI3VuZGVmIF9uY19Qb3N0X0l0ZW0KK3ZvaWQJX25jX1Bvc3RfSXRlbSgKKwkJY29uc3QgTUVOVSAqbWVudSwgCisJCWNvbnN0IElURU0gKml0ZW0pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfRHJhd19NZW51Cit2b2lkCV9uY19EcmF3X01lbnUoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBwb3N0X21lbnUKK2ludAlwb3N0X21lbnUoCisJCU1FTlUJKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHVucG9zdF9tZW51CitpbnQJdW5wb3N0X21lbnUoCisJCU1FTlUJKm1lbnUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX3JlcV9uYW1lLmMgKi8KKworI3VuZGVmIG1lbnVfcmVxdWVzdF9uYW1lCitjb25zdCBjaGFyICptZW51X3JlcXVlc3RfbmFtZSgKKwkJaW50CXJlcXVlc3QpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgbWVudV9yZXF1ZXN0X2J5X25hbWUKK2ludAltZW51X3JlcXVlc3RfYnlfbmFtZSgKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbV9zY2FsZS5jICovCisKKyN1bmRlZiBzY2FsZV9tZW51CitpbnQJc2NhbGVfbWVudSgKKwkJY29uc3QgTUVOVSAqbWVudSwgCisJCWludAkqcm93cywgCisJCWludAkqY29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL21fc3BhY2luZy5jICovCisKKyN1bmRlZiBzZXRfbWVudV9zcGFjaW5nCitpbnQJc2V0X21lbnVfc3BhY2luZygKKwkJTUVOVQkqbWVudSwgCisJCWludAlzX2Rlc2MsIAorCQlpbnQJc19yb3csIAorCQlpbnQJc19jb2wpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfc3BhY2luZworaW50CW1lbnVfc3BhY2luZygKKwkJY29uc3QgTUVOVSAqbWVudSwgCisJCWludAkqc19kZXNjLCAKKwkJaW50CSpzX3JvdywgCisJCWludAkqc19jb2wpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9tX3N1Yi5jICovCisKKyN1bmRlZiBzZXRfbWVudV9zdWIKK2ludAlzZXRfbWVudV9zdWIoCisJCU1FTlUJKm1lbnUsIAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWVudV9zdWIKK1dJTkRPVwkqbWVudV9zdWIoCisJCWNvbnN0IE1FTlUgKm1lbnUpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKy8qIC4vbV90cmFjZS5jICovCisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pdGVtCitJVEVNCSpfbmNfcmV0cmFjZV9pdGVtKAorCQlJVEVNCSpjb2RlKQorCQl7IHJldHVybigqKElURU0gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2l0ZW1fcHRyCitJVEVNCSoqX25jX3JldHJhY2VfaXRlbV9wdHIoCisJCUlURU0JKipjb2RlKQorCQl7IHJldHVybigqKElURU0gKioqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pdGVtX29wdHMKK0l0ZW1fT3B0aW9ucyBfbmNfcmV0cmFjZV9pdGVtX29wdHMoCisJCUl0ZW1fT3B0aW9ucyBjb2RlKQorCQl7IHJldHVybigqKEl0ZW1fT3B0aW9ucyAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9tZW51CitNRU5VCSpfbmNfcmV0cmFjZV9tZW51KAorCQlNRU5VCSpjb2RlKQorCQl7IHJldHVybigqKE1FTlUgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX21lbnVfaG9vaworTWVudV9Ib29rIF9uY19yZXRyYWNlX21lbnVfaG9vaygKKwkJTWVudV9Ib29rIGNvZGUpCisJCXsgcmV0dXJuKCooTWVudV9Ib29rICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX21lbnVfb3B0cworTWVudV9PcHRpb25zIF9uY19yZXRyYWNlX21lbnVfb3B0cygKKwkJTWVudV9PcHRpb25zIGNvZGUpCisJCXsgcmV0dXJuKCooTWVudV9PcHRpb25zICopMCk7IH0KKworLyogLi9tX3VzZXJwdHIuYyAqLworCisjdW5kZWYgc2V0X21lbnVfdXNlcnB0cgoraW50CXNldF9tZW51X3VzZXJwdHIoCisJCU1FTlUJKm1lbnUsIAorCQl2b2lkCSp1c2VycHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtZW51X3VzZXJwdHIKK3ZvaWQJKm1lbnVfdXNlcnB0cigKKwkJY29uc3QgTUVOVSAqbWVudSkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vbV93aW4uYyAqLworCisjdW5kZWYgc2V0X21lbnVfd2luCitpbnQJc2V0X21lbnVfd2luKAorCQlNRU5VCSptZW51LCAKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1lbnVfd2luCitXSU5ET1cJKm1lbnVfd2luKAorCQljb25zdCBNRU5VICptZW51KQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQpkaWZmIC0tZ2l0IGEvbWVudS9sbGliLWxtZW51dyBiL21lbnUvbGxpYi1sbWVudXcKaW5kZXggZDIxZmI5NC4uMDk5OGY5YiAxMDA2NDQKLS0tIGEvbWVudS9sbGliLWxtZW51dworKysgYi9tZW51L2xsaWItbG1lbnV3CkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTMgKzI3LDEzIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgIDIwMDIsMjAwNSAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAyMDAyLTIwMDUsMjAxMCAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBMSU5UTElCUkFSWSAqLwogCiAvKiAuL21fYXR0cmlicy5jICovCiAKLSNpbmNsdWRlICJtZW51LnByaXYuaCIKKyNpbmNsdWRlIDxtZW51LnByaXYuaD4KIAogI3VuZGVmIHNldF9tZW51X2ZvcmUKIGludAlzZXRfbWVudV9mb3JlKApAQCAtMzUyLDYgKzM1MiwxMiBAQAogCiAvKiAuL21fbmV3LmMgKi8KIAorI3VuZGVmIG5ld19tZW51X3NwCitNRU5VCSpuZXdfbWVudV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUlURU0JKippdGVtcykKKwkJeyByZXR1cm4oKihNRU5VICoqKTApOyB9CisKICN1bmRlZiBuZXdfbWVudQogTUVOVQkqbmV3X21lbnUoCiAJCUlURU0JKippdGVtcykKZGlmZiAtLWdpdCBhL21lbnUvbV9hdHRyaWJzLmMgYi9tZW51L21fYXR0cmlicy5jCmluZGV4IDExMjZmZmIuLmVmZjkwZDYgMTAwNjQ0Ci0tLSBhL21lbnUvbV9hdHRyaWJzLmMKKysrIGIvbWVudS9tX2F0dHJpYnMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV9hdHRyaWJzLmMsdiAxLjE0IDIwMDQvMTIvMTEgMjM6Mjk6MTIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2F0dHJpYnMuYyx2IDEuMTcgMjAxMi8wMy8xMCAyMzo0Mzo0MSB0b20gRXhwICQiKQogCiAvKiBNYWNybyB0byByZWRyYXcgbWVudSBpZiBpdCBpcyBwb3N0ZWQgYW5kIGNoYW5nZWQgKi8KICNkZWZpbmUgUmVmcmVzaF9NZW51KG1lbnUpIFwKQEAgLTQ5LDkgKzQ5LDkgQEAKIAogLyogIlRlbXBsYXRlIiBtYWNybyB0byBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRvIHNldCBhIG1lbnVzIGF0dHJpYnV0ZSAqLwogI2RlZmluZSBHRU5fTUVOVV9BVFRSX1NFVF9GQ1QoIG5hbWUgKSBcCi1OQ1VSU0VTX0lNUEVYUCBpbnQgTkNVUlNFU19BUEkgc2V0X21lbnVfICMjIG5hbWUgKE1FTlUgKiBtZW51LCBjaHR5cGUgYXR0cilcCitOQ1VSU0VTX0lNUEVYUCBpbnQgTkNVUlNFU19BUEkgc2V0X21lbnVfICMjIG5hbWUgKE1FTlUqIG1lbnUsIGNodHlwZSBhdHRyKSBcCiB7XAotICAgVCgoVF9DQUxMRUQoInNldF9tZW51XyIgI25hbWUgIiglcCwlcykiKSwgbWVudSwgX3RyYWNlYXR0cihhdHRyKSkpO1wKKyAgVCgoVF9DQUxMRUQoInNldF9tZW51XyIgI25hbWUgIiglcCwlcykiKSwgKHZvaWQgKikgbWVudSwgX3RyYWNlYXR0cihhdHRyKSkpOyBcCiAgICBpZiAoIShhdHRyPT1BX05PUk1BTCB8fCAoYXR0ciAmIEFfQVRUUklCVVRFUyk9PWF0dHIpKVwKICAgICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7XAogICAgaWYgKG1lbnUgJiYgKCBtZW51IC0+IG5hbWUgIT0gYXR0cikpXApAQCAtNjcsNyArNjcsNyBAQAogI2RlZmluZSBHRU5fTUVOVV9BVFRSX0dFVF9GQ1QoIG5hbWUgKSBcCiBOQ1VSU0VTX0lNUEVYUCBjaHR5cGUgTkNVUlNFU19BUEkgbWVudV8gIyMgbmFtZSAoY29uc3QgTUVOVSAqIG1lbnUpXAoge1wKLSAgIFQoKFRfQ0FMTEVEKCJtZW51XyIgI25hbWUgIiglcCkiKSwgbWVudSkpO1wKKyAgIFQoKFRfQ0FMTEVEKCJtZW51XyIgI25hbWUgIiglcCkiKSwgKGNvbnN0IHZvaWQgKikgbWVudSkpO1wKICAgIHJldHVybkF0dHIoTm9ybWFsaXplX01lbnUoIG1lbnUgKSAtPiBuYW1lKTtcCiB9CiAKQEAgLTE0MCw0ICsxNDAsNSBAQAogfCAgIFJldHVybiBWYWx1ZXMgOiAgQXR0cmlidXRlIHZhbHVlCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogR0VOX01FTlVfQVRUUl9HRVRfRkNUKGdyZXkpCisKIC8qIG1fYXR0cmlicy5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvbWVudS9tX2N1cnNvci5jIGIvbWVudS9tX2N1cnNvci5jCmluZGV4IDAyOTNmOTAuLjk4OTFkZTQgMTAwNjQ0Ci0tLSBhL21lbnUvbV9jdXJzb3IuYworKysgYi9tZW51L21fY3Vyc29yLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fY3Vyc29yLmMsdiAxLjIwIDIwMDUvMTAvMjIgMjM6MDM6MzIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2N1cnNvci5jLHYgMS4yMiAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudQpAQCAtODYsMTEgKzg2LDExIEBACiAgIGludCB4ID0gMCwgeSA9IDA7CiAgIGludCBlcnIgPSBfbmNfbWVudV9jdXJzb3JfcG9zKG1lbnUsIChJVEVNICopIDAsICZ5LCAmeCk7CiAKLSAgVCgoVF9DQUxMRUQoInBvc19tZW51X2N1cnNvciglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgicG9zX21lbnVfY3Vyc29yKCVwKSIpLCAoY29uc3Qgdm9pZCAqKW1lbnUpKTsKIAogICBpZiAoRV9PSyA9PSBlcnIpCiAgICAgewotICAgICAgd2luID0gbWVudS0+dXNlcndpbiA/IG1lbnUtPnVzZXJ3aW4gOiBzdGRzY3I7CisgICAgICB3aW4gPSBHZXRfTWVudV9Vc2VyV2luKG1lbnUpOwogICAgICAgc3ViID0gbWVudS0+dXNlcnN1YiA/IG1lbnUtPnVzZXJzdWIgOiB3aW47CiAgICAgICBhc3NlcnQod2luICYmIHN1Yik7CiAKZGlmZiAtLWdpdCBhL21lbnUvbV9kcml2ZXIuYyBiL21lbnUvbV9kcml2ZXIuYwppbmRleCBkNDE4ZTZhLi4xYTdhMzkxIDEwMDY0NAotLS0gYS9tZW51L21fZHJpdmVyLmMKKysrIGIvbWVudS9tX2RyaXZlci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX2RyaXZlci5jLHYgMS4yNyAyMDA4LzA4LzAzIDIyOjA4OjIyIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9kcml2ZXIuYyx2IDEuMzEgMjAxMi8wMy8xMCAyMzo0Mzo0MSB0b20gRXhwICQiKQogCiAvKiBNYWNyb3MgKi8KIApAQCAtNDcsNyArNDcsNyBAQAogCiAvKiBBZGQgYSBuZXcgY2hhcmFjdGVyIHRvIHRoZSBtYXRjaCBwYXR0ZXJuIGJ1ZmZlciAqLwogI2RlZmluZSBBZGRfQ2hhcmFjdGVyX1RvX1BhdHRlcm4obWVudSxjaCkgXAotICB7IChtZW51KS0+cGF0dGVyblsoKG1lbnUpLT5waW5kZXgpKytdID0gKGNoKTtcCisgIHsgKG1lbnUpLT5wYXR0ZXJuWygobWVudSktPnBpbmRleCkrK10gPSAoY2hhcikgKGNoKTtcCiAgICAgKG1lbnUpLT5wYXR0ZXJuWyhtZW51KS0+cGluZGV4XSA9ICdcMCc7IH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyMSw3ICsxMjEsOCBAQAogICBib29sIGZvdW5kID0gRkFMU0UsIHBhc3NlZCA9IEZBTFNFOwogICBpbnQgaWR4LCBsYXN0OwogCi0gIFQoKFRfQ0FMTEVEKCJfbmNfTWF0Y2hfTmV4dF9DaGFyYWN0ZXIoJXAsJWQsJXApIiksIG1lbnUsIGNoLCBpdGVtKSk7CisgIFQoKFRfQ0FMTEVEKCJfbmNfTWF0Y2hfTmV4dF9DaGFyYWN0ZXIoJXAsJWQsJXApIiksCisgICAgICh2b2lkICopbWVudSwgY2gsICh2b2lkICopaXRlbSkpOwogCiAgIGFzc2VydChtZW51ICYmIGl0ZW0gJiYgKml0ZW0pOwogICBpZHggPSAoKml0ZW0pLT5pbmRleDsKQEAgLTE5Nyw3ICsxOTgsNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUKLXwgICBGdW5jdGlvbiAgICAgIDogIGludCBtZW51X2RyaXZlcihNRU5VICptZW51LCBpbnQgYykKK3wgICBGdW5jdGlvbiAgICAgIDogIGludCBtZW51X2RyaXZlcihNRU5VKiBtZW51LCBpbnQgYykKIHwKIHwgICBEZXNjcmlwdGlvbiAgIDogIENlbnRyYWwgZGlzcGF0Y2hlciBmb3IgdGhlIG1lbnUuIFRyYW5zbGF0ZXMgdGhlIGxvZ2ljYWwKIHwgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgJ2MnIGludG8gYSBtZW51IGFjdGlvbi4KQEAgLTIyMCw3ICsyMjEsNyBAQAogICBJVEVNICppdGVtOwogICBpbnQgbXlfdG9wX3JvdywgcmRpZmY7CiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfZHJpdmVyKCVwLCVkKSIpLCBtZW51LCBjKSk7CisgIFQoKFRfQ0FMTEVEKCJtZW51X2RyaXZlciglcCwlZCkiKSwgKHZvaWQgKiltZW51LCBjKSk7CiAKICAgaWYgKCFtZW51KQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC01MzYsNyArNTM3LDExIEBACiAJcmVzdWx0ID0gRV9VTktOT1dOX0NPTU1BTkQ7CiAgICAgfQogCi0gIGlmIChFX09LID09IHJlc3VsdCkKKyAgaWYgKGl0ZW0gPT0gMCkKKyAgICB7CisgICAgICByZXN1bHQgPSBFX0JBRF9TVEFURTsKKyAgICB9CisgIGVsc2UgaWYgKEVfT0sgPT0gcmVzdWx0KQogICAgIHsKICAgICAgIC8qIEFkanVzdCB0aGUgdG9wIHJvdyBpZiBpdCB0dXJucyBvdXQgdGhhdCB0aGUgY3VycmVudCBpdGVtIHVuZm9ydHVuYXRlbHkKICAgICAgICAgIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBtZW51IHdpbmRvdyAqLwpkaWZmIC0tZ2l0IGEvbWVudS9tX2Zvcm1hdC5jIGIvbWVudS9tX2Zvcm1hdC5jCmluZGV4IDc3M2NiMjcuLjJkNjgxYTYgMTAwNjQ0Ci0tLSBhL21lbnUvbV9mb3JtYXQuYworKysgYi9tZW51L21fZm9ybWF0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fZm9ybWF0LmMsdiAxLjE1IDIwMDQvMTIvMTEgMjM6MTE6MjEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2Zvcm1hdC5jLHYgMS4xOCAyMDEyLzA2LzA5IDIzOjU0OjAyIHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgbWluaW11bShhLGIpICgoYSk8KGIpID8gKGEpOiAoYikpCiAKQEAgLTYwLDcgKzYwLDcgQEAKIHsKICAgaW50IHRvdGFsX3Jvd3MsIHRvdGFsX2NvbHM7CiAKLSAgVCgoVF9DQUxMRUQoInNldF9tZW51X2Zvcm1hdCglcCwlZCwlZCkiKSwgbWVudSwgcm93cywgY29scykpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfZm9ybWF0KCVwLCVkLCVkKSIpLCAodm9pZCAqKW1lbnUsIHJvd3MsIGNvbHMpKTsKIAogICBpZiAocm93cyA8IDAgfHwgY29scyA8IDApCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKQEAgLTgxLDggKzgxLDggQEAKICAgICAgIGlmIChtZW51LT5wYXR0ZXJuKQogCVJlc2V0X1BhdHRlcm4obWVudSk7CiAKLSAgICAgIG1lbnUtPmZyb3dzID0gcm93czsKLSAgICAgIG1lbnUtPmZjb2xzID0gY29sczsKKyAgICAgIG1lbnUtPmZyb3dzID0gKHNob3J0KXJvd3M7CisgICAgICBtZW51LT5mY29scyA9IChzaG9ydCljb2xzOwogCiAgICAgICBhc3NlcnQocm93cyA+IDAgJiYgY29scyA+IDApOwogICAgICAgdG90YWxfcm93cyA9IChtZW51LT5uaXRlbXMgLSAxKSAvIGNvbHMgKyAxOwpAQCAtOTAsMjEgKzkwLDIxIEBACiAJbWluaW11bShtZW51LT5uaXRlbXMsIGNvbHMpIDoKIAkobWVudS0+bml0ZW1zIC0gMSkgLyB0b3RhbF9yb3dzICsgMTsKIAotICAgICAgbWVudS0+cm93cyA9IHRvdGFsX3Jvd3M7Ci0gICAgICBtZW51LT5jb2xzID0gdG90YWxfY29sczsKLSAgICAgIG1lbnUtPmFyb3dzID0gbWluaW11bSh0b3RhbF9yb3dzLCByb3dzKTsKKyAgICAgIG1lbnUtPnJvd3MgPSAoc2hvcnQpdG90YWxfcm93czsKKyAgICAgIG1lbnUtPmNvbHMgPSAoc2hvcnQpdG90YWxfY29sczsKKyAgICAgIG1lbnUtPmFyb3dzID0gKHNob3J0KW1pbmltdW0odG90YWxfcm93cywgcm93cyk7CiAgICAgICBtZW51LT50b3Byb3cgPSAwOwogICAgICAgbWVudS0+Y3VyaXRlbSA9ICoobWVudS0+aXRlbXMpOwogICAgICAgYXNzZXJ0KG1lbnUtPmN1cml0ZW0pOwotICAgICAgbWVudS0+c3RhdHVzIHw9IF9MSU5LX05FRURFRDsKKyAgICAgIFNldFN0YXR1cyhtZW51LCBfTElOS19ORUVERUQpOwogICAgICAgX25jX0NhbGN1bGF0ZV9JdGVtX0xlbmd0aF9hbmRfV2lkdGgobWVudSk7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgaWYgKHJvd3MgPiAwKQotCV9uY19EZWZhdWx0X01lbnUuZnJvd3MgPSByb3dzOworCV9uY19EZWZhdWx0X01lbnUuZnJvd3MgPSAoc2hvcnQpcm93czsKICAgICAgIGlmIChjb2xzID4gMCkKLQlfbmNfRGVmYXVsdF9NZW51LmZjb2xzID0gY29sczsKKwlfbmNfRGVmYXVsdF9NZW51LmZjb2xzID0gKHNob3J0KWNvbHM7CiAgICAgfQogCiAgIFJFVFVSTihFX09LKTsKZGlmZiAtLWdpdCBhL21lbnUvbV9nbG9iYWwuYyBiL21lbnUvbV9nbG9iYWwuYwppbmRleCAyOGU4MzZkLi5mYzQxMDNjIDEwMDY0NAotLS0gYS9tZW51L21fZ2xvYmFsLmMKKysrIGIvbWVudS9tX2dsb2JhbC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX2dsb2JhbC5jLHYgMS4yMyAyMDA1LzEyLzMxIDIxOjUxOjUyIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9nbG9iYWwuYyx2IDEuMjggMjAxNC8wMy8xNSAyMDozNzoyMiB0b20gRXhwICQiKQogCiBzdGF0aWMgY2hhciBtYXJrW10gPSAiLSI7CiAvKiAqSU5ERU5ULU9GRiogKi8KQEAgLTExNywxNyArMTE3LDE3IEBACiAgIGFzc2VydChtZW51ICYmIG1lbnUtPml0ZW1zKTsKICAgZm9yIChpdGVtcyA9IG1lbnUtPml0ZW1zOyAqaXRlbXM7IGl0ZW1zKyspCiAgICAgewotICAgICAgY2hlY2sgPSBfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGgoJigoKml0ZW1zKS0+bmFtZSkpOworICAgICAgY2hlY2sgPSAodW5zaWduZWQpX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoKCYoKCppdGVtcyktPm5hbWUpKTsKICAgICAgIGlmIChjaGVjayA+IE1heGltdW1OYW1lTGVuZ3RoKQogCU1heGltdW1OYW1lTGVuZ3RoID0gY2hlY2s7CiAKLSAgICAgIGNoZWNrID0gX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoKCYoKCppdGVtcyktPmRlc2NyaXB0aW9uKSk7CisgICAgICBjaGVjayA9ICh1bnNpZ25lZClfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGgoJigoKml0ZW1zKS0+ZGVzY3JpcHRpb24pKTsKICAgICAgIGlmIChjaGVjayA+IE1heGltdW1EZXNjcmlwdGlvbkxlbmd0aCkKIAlNYXhpbXVtRGVzY3JpcHRpb25MZW5ndGggPSBjaGVjazsKICAgICB9CiAKLSAgbWVudS0+bmFtZWxlbiA9IE1heGltdW1OYW1lTGVuZ3RoOwotICBtZW51LT5kZXNjbGVuID0gTWF4aW11bURlc2NyaXB0aW9uTGVuZ3RoOworICBtZW51LT5uYW1lbGVuID0gKHNob3J0KU1heGltdW1OYW1lTGVuZ3RoOworICBtZW51LT5kZXNjbGVuID0gKHNob3J0KU1heGltdW1EZXNjcmlwdGlvbkxlbmd0aDsKICAgVCgoIkNvbXB1dGVNYXhpbXVtX05hbWVEZXNjX0xlbmd0aHMgJWQsJWQiLCBtZW51LT5uYW1lbGVuLCBtZW51LT5kZXNjbGVuKSk7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQAogCQl7CiAJCSAgKCppdGVtKS0+dmFsdWUgPSBGQUxTRTsKIAkJfQotCSAgICAgICgqaXRlbSktPmluZGV4ID0gSXRlbUNvdW50Kys7CisJICAgICAgKCppdGVtKS0+aW5kZXggPSAoc2hvcnQpSXRlbUNvdW50Kys7CiAJICAgICAgKCppdGVtKS0+aW1lbnUgPSBtZW51OwogCSAgICB9CiAJfQpAQCAtMjA2LDcgKzIwNiw3IEBACiAgIGlmIChJdGVtQ291bnQgIT0gMCkKICAgICB7CiAgICAgICBtZW51LT5pdGVtcyA9IGl0ZW1zOwotICAgICAgbWVudS0+bml0ZW1zID0gSXRlbUNvdW50OworICAgICAgbWVudS0+bml0ZW1zID0gKHNob3J0KUl0ZW1Db3VudDsKICAgICAgIENvbXB1dGVNYXhpbXVtX05hbWVEZXNjX0xlbmd0aHMobWVudSk7CiAgICAgICBpZiAoKG1lbnUtPnBhdHRlcm4gPSB0eXBlTWFsbG9jKGNoYXIsICh1bnNpZ25lZCkoMSArIG1lbnUtPm5hbWVsZW4pKSkpCiAJewpAQCAtMjUzLDEwICsyNTMsMTAgQEAKICNpZiBVU0VfV0lERUNfU1VQUE9SVAogICBpbnQgcmVzdWx0ID0gaXRlbS0+bGVuZ3RoOwogCi0gIFQoKFRfQ0FMTEVEKCJfbmNfbWVudV90ZXh0X3dpZHRoKCVwKSIpLCBpdGVtKSk7CisgIFQoKFRfQ0FMTEVEKCJfbmNfbWVudV90ZXh0X3dpZHRoKCVwKSIpLCAoY29uc3Qgdm9pZCAqKWl0ZW0pKTsKICAgaWYgKHJlc3VsdCAhPSAwICYmIGl0ZW0tPnN0ciAhPSAwKQogICAgIHsKLSAgICAgIGludCBjb3VudCA9IG1ic3Rvd2NzKDAsIGl0ZW0tPnN0ciwgMCk7CisgICAgICBpbnQgY291bnQgPSAoaW50KW1ic3Rvd2NzKDAsIGl0ZW0tPnN0ciwgMCk7CiAgICAgICB3Y2hhcl90ICp0ZW1wID0gMDsKIAogICAgICAgaWYgKGNvdW50ID4gMApAQCAtMzQzLDcgKzM0Myw3IEBACiAKICAgYXNzZXJ0KG1lbnUpOwogCi0gIG1lbnUtPmhlaWdodCA9IDEgKyBtZW51LT5zcGNfcm93cyAqIChtZW51LT5hcm93cyAtIDEpOworICBtZW51LT5oZWlnaHQgPSAoc2hvcnQpKDEgKyBtZW51LT5zcGNfcm93cyAqIChtZW51LT5hcm93cyAtIDEpKTsKIAogICBsID0gY2FsY3VsYXRlX2FjdHVhbF93aWR0aChtZW51LCBUUlVFKTsKICAgbCArPSBtZW51LT5tYXJrbGVuOwpAQCAtMzU0LDEwICszNTQsMTAgQEAKICAgICAgIGwgKz0gbWVudS0+c3BjX2Rlc2M7CiAgICAgfQogCi0gIG1lbnUtPml0ZW1sZW4gPSBsOworICBtZW51LT5pdGVtbGVuID0gKHNob3J0KWw7CiAgIGwgKj0gbWVudS0+Y29sczsKICAgbCArPSAobWVudS0+Y29scyAtIDEpICogbWVudS0+c3BjX2NvbHM7CS8qIGZvciB0aGUgcGFkZGluZyBiZXR3ZWVuIHRoZSBjb2x1bW5zICovCi0gIG1lbnUtPndpZHRoID0gbDsKKyAgbWVudS0+d2lkdGggPSAoc2hvcnQpbDsKIAogICBUKCgiX25jX0NhbGN1bGF0ZUl0ZW1fTGVuZ3RoX2FuZF9XaWR0aCBjb2x1bW5zICVkLCBpdGVtICVkLCB3aWR0aCAlZCIsCiAgICAgIG1lbnUtPmNvbHMsCkBAIC0zODgsNyArMzg4LDcgQEAKICAgICAgIGludCBMYXN0X2luX0NvbHVtbjsKICAgICAgIGJvb2wgY3ljbGUgPSAobWVudS0+b3B0ICYgT19OT05DWUNMSUMpID8gRkFMU0UgOiBUUlVFOwogCi0gICAgICBtZW51LT5zdGF0dXMgJj0gfl9MSU5LX05FRURFRDsKKyAgICAgIENsclN0YXR1cyhtZW51LCBfTElOS19ORUVERUQpOwogCiAgICAgICBpZiAobWVudS0+b3B0ICYgT19ST1dNQUpPUikKIAl7CkBAIC00MzEsOCArNDMxLDggQEAKIAkJKGN5Y2xlID8gbWVudS0+aXRlbXNbKHJvdyArIDEpIDwgbWVudS0+cm93cyA/CiAJCQkJICAgICBOdW1iZXJfT2ZfSXRlbXMgLSAxIDogY29sXSA6CiAJCSAoSVRFTSAqKSAwKTsKLQkgICAgICBpdGVtLT54ID0gY29sOwotCSAgICAgIGl0ZW0tPnkgPSByb3c7CisJICAgICAgaXRlbS0+eCA9IChzaG9ydCljb2w7CisJICAgICAgaXRlbS0+eSA9IChzaG9ydClyb3c7CiAJICAgICAgaWYgKCsrY29sID09IE51bWJlcl9PZl9Db2x1bW5zKQogCQl7CiAJCSAgcm93Kys7CkBAIC00ODIsOCArNDgyLDggQEAKIAkJIChJVEVNICopIDAKIAkJKTsKIAotCSAgICAgIGl0ZW0tPnggPSBjb2w7Ci0JICAgICAgaXRlbS0+eSA9IHJvdzsKKwkgICAgICBpdGVtLT54ID0gKHNob3J0KWNvbDsKKwkgICAgICBpdGVtLT55ID0gKHNob3J0KXJvdzsKIAkgICAgICBpZiAoKCsrcm93KSA9PSBOdW1iZXJfT2ZfUm93cykKIAkJewogCQkgIGNvbCsrOwpAQCAtNDk2LDcgKzQ5Niw3IEBACiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCi18ICAgRnVuY3Rpb24gICAgICA6ICB2b2lkIF9uY19TaG93X01lbnUoY29uc3QgTUVOVSAqbWVudSkKK3wgICBGdW5jdGlvbiAgICAgIDogIHZvaWQgX25jX1Nob3dfTWVudShjb25zdCBNRU5VKiBtZW51KQogfCAgIAogfCAgIERlc2NyaXB0aW9uICAgOiAgVXBkYXRlIHRoZSB3aW5kb3cgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbnUKIHwKQEAgLTU0Myw4ICs1NDMsMTAgQEAKIHwgICBSZXR1cm4gVmFsdWVzIDogIC0KICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotICBfbmNfTmV3X1RvcFJvd19hbmRfQ3VycmVudEl0ZW0KLSAgKE1FTlUgKiBtZW51LCBpbnQgbmV3X3RvcHJvdywgSVRFTSAqIG5ld19jdXJyZW50X2l0ZW0pCitfbmNfTmV3X1RvcFJvd19hbmRfQ3VycmVudEl0ZW0oCisJCQkJTUVOVSAqIG1lbnUsCisJCQkJaW50IG5ld190b3Byb3csCisJCQkJSVRFTSAqIG5ld19jdXJyZW50X2l0ZW0pCiB7CiAgIElURU0gKmN1cl9pdGVtOwogICBib29sIG10ZXJtX2NhbGxlZCA9IEZBTFNFOwpAQCAtNTY2LDcgKzU2OCw5IEBACiAKICAgICAgIGN1cl9pdGVtID0gbWVudS0+Y3VyaXRlbTsKICAgICAgIGFzc2VydChjdXJfaXRlbSk7Ci0gICAgICBtZW51LT50b3Byb3cgPSBuZXdfdG9wcm93OworICAgICAgbWVudS0+dG9wcm93ID0gKHNob3J0KSgoKG1lbnUtPnJvd3MgLSBtZW51LT5mcm93cykgPj0gMCkKKwkJCSAgICAgPyBtaW4obWVudS0+cm93cyAtIG1lbnUtPmZyb3dzLCBuZXdfdG9wcm93KQorCQkJICAgICA6IDApOwogICAgICAgbWVudS0+Y3VyaXRlbSA9IG5ld19jdXJyZW50X2l0ZW07CiAKICAgICAgIGlmIChtdGVybV9jYWxsZWQpCkBAIC01ODgsNyArNTkyLDkgQEAKICAgICB9CiAgIGVsc2UKICAgICB7CQkJCS8qIGlmIHdlIGFyZSBub3QgcG9zdGVkLCB0aGlzIGlzIHF1aXRlIHNpbXBsZSAqLwotICAgICAgbWVudS0+dG9wcm93ID0gbmV3X3RvcHJvdzsKKyAgICAgIG1lbnUtPnRvcHJvdyA9IChzaG9ydCkoKChtZW51LT5yb3dzIC0gbWVudS0+ZnJvd3MpID49IDApCisJCQkgICAgID8gbWluKG1lbnUtPnJvd3MgLSBtZW51LT5mcm93cywgbmV3X3RvcHJvdykKKwkJCSAgICAgOiAwKTsKICAgICAgIG1lbnUtPmN1cml0ZW0gPSBuZXdfY3VycmVudF9pdGVtOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL21lbnUvbV9ob29rLmMgYi9tZW51L21faG9vay5jCmluZGV4IDhkNzY4YTMuLjY3MWZhYjYgMTAwNjQ0Ci0tLSBhL21lbnUvbV9ob29rLmMKKysrIGIvbWVudS9tX2hvb2suYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDEzICszNywxMyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX2hvb2suYyx2IDEuMTQgMjAwNC8xMi8yNSAyMTozOTo1MiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1faG9vay5jLHYgMS4xNiAyMDEyLzAzLzEwIDIzOjQzOjQxIHRvbSBFeHAgJCIpCiAKIC8qICJUZW1wbGF0ZSIgbWFjcm8gdG8gZ2VuZXJhdGUgZnVuY3Rpb24gdG8gc2V0IGFwcGxpY2F0aW9uIHNwZWNpZmljIGhvb2sgKi8KICNkZWZpbmUgR0VOX0hPT0tfU0VUX0ZVTkNUSU9OKCB0eXAsIG5hbWUgKSBcCiBOQ1VSU0VTX0lNUEVYUCBpbnQgTkNVUlNFU19BUEkgc2V0XyAjIyB0eXAgIyMgXyAjIyBuYW1lIChNRU5VICptZW51LCBNZW51X0hvb2sgZnVuYyApXAoge1wKLSAgIFQoKFRfQ0FMTEVEKCJzZXRfIiAjdHlwICJfIiAjbmFtZSAiKCVwLCVwKSIpLCBtZW51LCBmdW5jKSk7XAorICAgVCgoVF9DQUxMRUQoInNldF8iICN0eXAgIl8iICNuYW1lICIoJXAsJXApIiksICh2b2lkICopIG1lbnUsIGZ1bmMpKTtcCiAgICAoTm9ybWFsaXplX01lbnUobWVudSkgLT4gdHlwICMjIG5hbWUgPSBmdW5jICk7XAogICAgUkVUVVJOKEVfT0spO1wKIH0KQEAgLTUyLDcgKzUyLDcgQEAKICNkZWZpbmUgR0VOX0hPT0tfR0VUX0ZVTkNUSU9OKCB0eXAsIG5hbWUgKSBcCiBOQ1VSU0VTX0lNUEVYUCBNZW51X0hvb2sgTkNVUlNFU19BUEkgdHlwICMjIF8gIyMgbmFtZSAoIGNvbnN0IE1FTlUgKm1lbnUgKVwKIHtcCi0gICBUKChUX0NBTExFRCgjdHlwICJfIiAjbmFtZSAiKCVwKSIpLCBtZW51KSk7XAorICAgVCgoVF9DQUxMRUQoI3R5cCAiXyIgI25hbWUgIiglcCkiKSwgKGNvbnN0IHZvaWQgKikgbWVudSkpO1wKICAgIHJldHVybk1lbnVIb29rKE5vcm1hbGl6ZV9NZW51KG1lbnUpIC0+IHR5cCAjIyBuYW1lKTtcCiB9CiAKZGlmZiAtLWdpdCBhL21lbnUvbV9pdGVtX2N1ci5jIGIvbWVudS9tX2l0ZW1fY3VyLmMKaW5kZXggZGFjMTJlZC4uMThiMWEyNyAxMDA2NDQKLS0tIGEvbWVudS9tX2l0ZW1fY3VyLmMKKysrIGIvbWVudS9tX2l0ZW1fY3VyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV9jdXIuYyx2IDEuMTcgMjAwNC8xMi8yNSAyMTo1NzozOCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV9jdXIuYyx2IDEuMTggMjAxMC8wMS8yMyAyMToyMDoxMCB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUgIApAQCAtNTAsNyArNTAsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X2N1cnJlbnRfaXRlbShNRU5VICogbWVudSwgSVRFTSAqIGl0ZW0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfY3VycmVudF9pdGVtKCVwLCVwKSIpLCBtZW51LCBpdGVtKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfY3VycmVudF9pdGVtKCVwLCVwKSIpLCAodm9pZCAqKW1lbnUsICh2b2lkICopaXRlbSkpOwogCiAgIGlmIChtZW51ICYmIGl0ZW0gJiYgKGl0ZW0tPmltZW51ID09IG1lbnUpKQogICAgIHsKQEAgLTkxLDcgKzkxLDcgQEAKIE5DVVJTRVNfRVhQT1JUKElURU0gKikKIGN1cnJlbnRfaXRlbShjb25zdCBNRU5VICogbWVudSkKIHsKLSAgVCgoVF9DQUxMRUQoImN1cnJlbnRfaXRlbSglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgiY3VycmVudF9pdGVtKCVwKSIpLCAoY29uc3Qgdm9pZCAqKW1lbnUpKTsKICAgcmV0dXJuSXRlbSgobWVudSAmJiBtZW51LT5pdGVtcykgPyBtZW51LT5jdXJpdGVtIDogKElURU0gKikgMCk7CiB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogaXRlbV9pbmRleChjb25zdCBJVEVNICogaXRlbSkKIHsKLSAgVCgoVF9DQUxMRUQoIml0ZW1faW5kZXgoJXApIiksIGl0ZW0pKTsKKyAgVCgoVF9DQUxMRUQoIml0ZW1faW5kZXgoJXApIiksIChjb25zdCB2b2lkICopaXRlbSkpOwogICByZXR1cm5Db2RlKChpdGVtICYmIGl0ZW0tPmltZW51KSA/IGl0ZW0tPmluZGV4IDogRVJSKTsKIH0KIApkaWZmIC0tZ2l0IGEvbWVudS9tX2l0ZW1fbmFtLmMgYi9tZW51L21faXRlbV9uYW0uYwppbmRleCAwNWExNjkzLi4zZWQxZDM3IDEwMDY0NAotLS0gYS9tZW51L21faXRlbV9uYW0uYworKysgYi9tZW51L21faXRlbV9uYW0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV9pdGVtX25hbS5jLHYgMS4xNCAyMDA0LzEyLzI1IDIxOjQxOjU0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9pdGVtX25hbS5jLHYgMS4xNSAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01MCw3ICs1MCw3IEBACiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopCiBpdGVtX25hbWUoY29uc3QgSVRFTSAqIGl0ZW0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJpdGVtX25hbWUoJXApIiksIGl0ZW0pKTsKKyAgVCgoVF9DQUxMRUQoIml0ZW1fbmFtZSglcCkiKSwgKGNvbnN0IHZvaWQgKilpdGVtKSk7CiAgIHJldHVybkNQdHIoKGl0ZW0pID8gaXRlbS0+bmFtZS5zdHIgOiAoY2hhciAqKTApOwogfQogCkBAIC02NSw3ICs2NSw3IEBACiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopCiBpdGVtX2Rlc2NyaXB0aW9uKGNvbnN0IElURU0gKiBpdGVtKQogewotICBUKChUX0NBTExFRCgiaXRlbV9kZXNjcmlwdGlvbiglcCkiKSwgaXRlbSkpOworICBUKChUX0NBTExFRCgiaXRlbV9kZXNjcmlwdGlvbiglcCkiKSwgKGNvbnN0IHZvaWQgKilpdGVtKSk7CiAgIHJldHVybkNQdHIoKGl0ZW0pID8gaXRlbS0+ZGVzY3JpcHRpb24uc3RyIDogKGNoYXIgKikwKTsKIH0KIApkaWZmIC0tZ2l0IGEvbWVudS9tX2l0ZW1fbmV3LmMgYi9tZW51L21faXRlbV9uZXcuYwppbmRleCBkN2ZlMWY4Li43MTBlZjA5IDEwMDY0NAotLS0gYS9tZW51L21faXRlbV9uZXcuYworKysgYi9tZW51L21faXRlbV9uZXcuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQ0LDcgKzQ0LDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLU1PRFVMRV9JRCgiJElkOiBtX2l0ZW1fbmV3LmMsdiAxLjI3IDIwMDYvMTIvMTcgMTk6NDc6MDkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2l0ZW1fbmV3LmMsdiAxLjMzIDIwMTIvMDYvMDkgMjM6NTU6MTUgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKQEAgLTYyLDcgKzYyLDcgQEAKICAgaW50IHJlc3VsdCA9IFRSVUU7CiAKICNpZiBVU0VfV0lERUNfU1VQUE9SVAotICBpbnQgY291bnQgPSBtYnN0b3djcygwLCBzLCAwKTsKKyAgaW50IGNvdW50ID0gKGludCltYnN0b3djcygwLCBzLCAwKTsKICAgd2NoYXJfdCAqdGVtcCA9IDA7CiAKICAgYXNzZXJ0KHMpOwpAQCAtMTIyLDE4ICsxMjIsMTggQEAKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBpdGVtID0gKElURU0gKikgY2FsbG9jKDEsIHNpemVvZihJVEVNKSk7CisgICAgICBpdGVtID0gdHlwZUNhbGxvYyhJVEVNLCAxKTsKICAgICAgIGlmIChpdGVtKQogCXsKIAkgICppdGVtID0gX25jX0RlZmF1bHRfSXRlbTsJLyogaG9wZSB3ZSBoYXZlIHN0cnVjdCBhc3NpZ25tZW50ICovCiAKLQkgIGl0ZW0tPm5hbWUubGVuZ3RoID0gc3RybGVuKG5hbWUpOworCSAgaXRlbS0+bmFtZS5sZW5ndGggPSAodW5zaWduZWQgc2hvcnQpc3RybGVuKG5hbWUpOwogCSAgaXRlbS0+bmFtZS5zdHIgPSBuYW1lOwogCiAJICBpZiAoZGVzY3JpcHRpb24gJiYgKCpkZXNjcmlwdGlvbiAhPSAnXDAnKSAmJgogCSAgICAgIElzX1ByaW50YWJsZV9TdHJpbmcoZGVzY3JpcHRpb24pKQogCSAgICB7Ci0JICAgICAgaXRlbS0+ZGVzY3JpcHRpb24ubGVuZ3RoID0gc3RybGVuKGRlc2NyaXB0aW9uKTsKKwkgICAgICBpdGVtLT5kZXNjcmlwdGlvbi5sZW5ndGggPSAodW5zaWduZWQgc2hvcnQpc3RybGVuKGRlc2NyaXB0aW9uKTsKIAkgICAgICBpdGVtLT5kZXNjcmlwdGlvbi5zdHIgPSBkZXNjcmlwdGlvbjsKIAkgICAgfQogCSAgZWxzZQpAQCAtMTYyLDcgKzE2Miw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBmcmVlX2l0ZW0oSVRFTSAqIGl0ZW0pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJmcmVlX2l0ZW0oJXApIiksIGl0ZW0pKTsKKyAgVCgoVF9DQUxMRUQoImZyZWVfaXRlbSglcCkiKSwgKHZvaWQgKilpdGVtKSk7CiAKICAgaWYgKCFpdGVtKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CkBAIC0xOTUsMTIgKzE5NSwxMiBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X21lbnVfbWFyayhNRU5VICogbWVudSwgY29uc3QgY2hhciAqbWFyaykKIHsKLSAgdW5zaWduZWQgbDsKKyAgc2hvcnQgbDsKIAotICBUKChUX0NBTExFRCgic2V0X21lbnVfbWFyayglcCwlcykiKSwgbWVudSwgX25jX3Zpc2J1ZihtYXJrKSkpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfbWFyayglcCwlcykiKSwgKHZvaWQgKiltZW51LCBfbmNfdmlzYnVmKG1hcmspKSk7CiAKICAgaWYgKG1hcmsgJiYgKCptYXJrICE9ICdcMCcpICYmIElzX1ByaW50YWJsZV9TdHJpbmcobWFyaykpCi0gICAgbCA9IHN0cmxlbihtYXJrKTsKKyAgICBsID0gKHNob3J0KXN0cmxlbihtYXJrKTsKICAgZWxzZQogICAgIGwgPSAwOwogCkBAIC0yMTMsMjIgKzIxMywyMiBAQAogCXsKIAkgIC8qIElmIHRoZSBtZW51IGlzIGFscmVhZHkgcG9zdGVkLCB0aGUgZ2VvbWV0cnkgaXMgZml4ZWQuIFRoZW4KIAkgICAgIHdlIGNhbiBvbmx5IGFjY2VwdCBhIG1hcmsgd2l0aCBleGFjdGx5IHRoZSBzYW1lIGxlbmd0aCAqLwotCSAgaWYgKG1lbnUtPm1hcmtsZW4gIT0gKGludClsKQorCSAgaWYgKG1lbnUtPm1hcmtsZW4gIT0gbCkKIAkgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKIAl9CiAgICAgICBtZW51LT5tYXJrbGVuID0gbDsKICAgICAgIGlmIChsKQogCXsKLQkgIG1lbnUtPm1hcmsgPSAoY2hhciAqKW1hbGxvYyhsICsgMSk7CisJICBtZW51LT5tYXJrID0gc3RyZHVwKG1hcmspOwogCSAgaWYgKG1lbnUtPm1hcmspCiAJICAgIHsKLQkgICAgICBzdHJjcHkobWVudS0+bWFyaywgbWFyayk7CiAJICAgICAgaWYgKG1lbnUgIT0gJl9uY19EZWZhdWx0X01lbnUpCi0JCW1lbnUtPnN0YXR1cyB8PSBfTUFSS19BTExPQ0FURUQ7CisJCVNldFN0YXR1cyhtZW51LCBfTUFSS19BTExPQ0FURUQpOwogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBtZW51LT5tYXJrID0gb2xkX21hcms7CisJICAgICAgbWVudS0+bWFya2xlbiA9IChzaG9ydCkoKG9sZF9tYXJrICE9IDApID8gc3RybGVuKG9sZF9tYXJrKSA6IDApOwogCSAgICAgIFJFVFVSTihFX1NZU1RFTV9FUlJPUik7CiAJICAgIH0KIAl9CkBAIC0yNjcsNyArMjY3LDcgQEAKIE5DVVJTRVNfRVhQT1JUKGNvbnN0IGNoYXIgKikKIG1lbnVfbWFyayhjb25zdCBNRU5VICogbWVudSkKIHsKLSAgVCgoVF9DQUxMRUQoIm1lbnVfbWFyayglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgibWVudV9tYXJrKCVwKSIpLCAoY29uc3Qgdm9pZCAqKW1lbnUpKTsKICAgcmV0dXJuUHRyKE5vcm1hbGl6ZV9NZW51KG1lbnUpLT5tYXJrKTsKIH0KIApkaWZmIC0tZ2l0IGEvbWVudS9tX2l0ZW1fb3B0LmMgYi9tZW51L21faXRlbV9vcHQuYwppbmRleCBjZmU3Yjc1Li45MTM4NWRhIDEwMDY0NAotLS0gYS9tZW51L21faXRlbV9vcHQuYworKysgYi9tZW51L21faXRlbV9vcHQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV9pdGVtX29wdC5jLHYgMS4xNyAyMDA0LzEyLzI1IDIxOjMyOjU0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9pdGVtX29wdC5jLHYgMS4xOCAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01Myw3ICs1Myw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzZXRfaXRlbV9vcHRzKElURU0gKiBpdGVtLCBJdGVtX09wdGlvbnMgb3B0cykKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9tZW51X29wdHMoJXAsJWQpIiksIGl0ZW0sIG9wdHMpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9tZW51X29wdHMoJXAsJWQpIiksICh2b2lkICopaXRlbSwgb3B0cykpOwogCiAgIG9wdHMgJj0gQUxMX0lURU1fT1BUUzsKIApAQCAtMTAwLDcgKzEwMCw3IEBACiAKIAkJCQkgICBOVUxMIGl0ZW0gaXRzZWxmIHRvIGFkanVzdCBpdHMgYmVoYXZpb3IgKi8KIAotICBUKChUX0NBTExFRCgiaXRlbV9vcHRzX29mZiglcCwlZCkiKSwgaXRlbSwgb3B0cykpOworICBUKChUX0NBTExFRCgiaXRlbV9vcHRzX29mZiglcCwlZCkiKSwgKHZvaWQgKilpdGVtLCBvcHRzKSk7CiAKICAgaWYgKG9wdHMgJiB+QUxMX0lURU1fT1BUUykKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMTI4LDcgKzEyOCw3IEBACiAKIAkJCQkgICBOVUxMIGl0ZW0gaXRzZWxmIHRvIGFkanVzdCBpdHMgYmVoYXZpb3IgKi8KIAotICBUKChUX0NBTExFRCgiaXRlbV9vcHRzX29uKCVwLCVkKSIpLCBpdGVtLCBvcHRzKSk7CisgIFQoKFRfQ0FMTEVEKCJpdGVtX29wdHNfb24oJXAsJWQpIiksICh2b2lkICopaXRlbSwgb3B0cykpOwogCiAgIG9wdHMgJj0gQUxMX0lURU1fT1BUUzsKICAgaWYgKG9wdHMgJiB+QUxMX0lURU1fT1BUUykKQEAgLTE1Miw3ICsxNTIsNyBAQAogTkNVUlNFU19FWFBPUlQoSXRlbV9PcHRpb25zKQogaXRlbV9vcHRzKGNvbnN0IElURU0gKiBpdGVtKQogewotICBUKChUX0NBTExFRCgiaXRlbV9vcHRzKCVwKSIpLCBpdGVtKSk7CisgIFQoKFRfQ0FMTEVEKCJpdGVtX29wdHMoJXApIiksIChjb25zdCB2b2lkICopaXRlbSkpOwogICByZXR1cm5JdGVtT3B0cyhBTExfSVRFTV9PUFRTICYgTm9ybWFsaXplX0l0ZW0oaXRlbSktPm9wdCk7CiB9CiAKZGlmZiAtLWdpdCBhL21lbnUvbV9pdGVtX3RvcC5jIGIvbWVudS9tX2l0ZW1fdG9wLmMKaW5kZXggNzI2OGEwZS4uNzUyZTIwZCAxMDA2NDQKLS0tIGEvbWVudS9tX2l0ZW1fdG9wLmMKKysrIGIvbWVudS9tX2l0ZW1fdG9wLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV90b3AuYyx2IDEuMTAgMjAwNC8xMi8xMSAyMzoyOTozNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV90b3AuYyx2IDEuMTEgMjAxMC8wMS8yMyAyMToyMDoxMCB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUgIApAQCAtNTQsNyArNTQsNyBAQAogewogICBJVEVNICppdGVtOwogCi0gIFQoKFRfQ0FMTEVEKCJzZXRfdG9wX3JvdyglcCwlZCkiKSwgbWVudSwgcm93KSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfdG9wX3JvdyglcCwlZCkiKSwgKHZvaWQgKiltZW51LCByb3cpKTsKIAogICBpZiAobWVudSkKICAgICB7CkBAIC05NCw3ICs5NCw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB0b3Bfcm93KGNvbnN0IE1FTlUgKiBtZW51KQogewotICBUKChUX0NBTExFRCgidG9wX3JvdyglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgidG9wX3JvdyglcCkiKSwgKGNvbnN0IHZvaWQgKiltZW51KSk7CiAgIGlmIChtZW51ICYmIG1lbnUtPml0ZW1zICYmICoobWVudS0+aXRlbXMpKQogICAgIHsKICAgICAgIGFzc2VydCgobWVudS0+dG9wcm93ID49IDApICYmIChtZW51LT50b3Byb3cgPCBtZW51LT5yb3dzKSk7CmRpZmYgLS1naXQgYS9tZW51L21faXRlbV91c2UuYyBiL21lbnUvbV9pdGVtX3VzZS5jCmluZGV4IDA2YTViYWYuLjhjZjI5NGIgMTAwNjQ0Ci0tLSBhL21lbnUvbV9pdGVtX3VzZS5jCisrKyBiL21lbnUvbV9pdGVtX3VzZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX2l0ZW1fdXNlLmMsdiAxLjE2IDIwMDQvMTIvMjUgMjE6MzM6MzEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2l0ZW1fdXNlLmMsdiAxLjE3IDIwMTAvMDEvMjMgMjE6MjA6MTAgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKQEAgLTUxLDcgKzUxLDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9pdGVtX3VzZXJwdHIoSVRFTSAqIGl0ZW0sIHZvaWQgKnVzZXJwdHIpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfaXRlbV91c2VycHRyKCVwLCVwKSIpLCBpdGVtLCB1c2VycHRyKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfaXRlbV91c2VycHRyKCVwLCVwKSIpLCAodm9pZCAqKWl0ZW0sICh2b2lkICopdXNlcnB0cikpOwogICBOb3JtYWxpemVfSXRlbShpdGVtKS0+dXNlcnB0ciA9IHVzZXJwdHI7CiAgIFJFVFVSTihFX09LKTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAKIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikKIGl0ZW1fdXNlcnB0cihjb25zdCBJVEVNICogaXRlbSkKIHsKLSAgVCgoVF9DQUxMRUQoIml0ZW1fdXNlcnB0ciglcCkiKSwgaXRlbSkpOworICBUKChUX0NBTExFRCgiaXRlbV91c2VycHRyKCVwKSIpLCAoY29uc3Qgdm9pZCAqKWl0ZW0pKTsKICAgcmV0dXJuVm9pZFB0cihOb3JtYWxpemVfSXRlbShpdGVtKS0+dXNlcnB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL21lbnUvbV9pdGVtX3ZhbC5jIGIvbWVudS9tX2l0ZW1fdmFsLmMKaW5kZXggY2ViZjY5My4uMzM3ZGJmYyAxMDA2NDQKLS0tIGEvbWVudS9tX2l0ZW1fdmFsLmMKKysrIGIvbWVudS9tX2l0ZW1fdmFsLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV92YWwuYyx2IDEuMTQgMjAwNC8xMi8xMSAyMzoyOTozNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1faXRlbV92YWwuYyx2IDEuMTUgMjAxMC8wMS8yMyAyMToyMDoxMCB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUgIApAQCAtNTcsNyArNTcsNyBAQAogewogICBNRU5VICptZW51OwogCi0gIFQoKFRfQ0FMTEVEKCJzZXRfaXRlbV92YWx1ZSglcCwlZCkiKSwgaXRlbSwgdmFsdWUpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9pdGVtX3ZhbHVlKCVwLCVkKSIpLCAodm9pZCAqKWl0ZW0sIHZhbHVlKSk7CiAgIGlmIChpdGVtKQogICAgIHsKICAgICAgIG1lbnUgPSBpdGVtLT5pbWVudTsKQEAgLTk3LDcgKzk3LDcgQEAKIE5DVVJTRVNfRVhQT1JUKGJvb2wpCiBpdGVtX3ZhbHVlKGNvbnN0IElURU0gKiBpdGVtKQogewotICBUKChUX0NBTExFRCgiaXRlbV92YWx1ZSglcCkiKSwgaXRlbSkpOworICBUKChUX0NBTExFRCgiaXRlbV92YWx1ZSglcCkiKSwgKGNvbnN0IHZvaWQgKilpdGVtKSk7CiAgIHJldHVybkJvb2woKE5vcm1hbGl6ZV9JdGVtKGl0ZW0pLT52YWx1ZSkgPyBUUlVFIDogRkFMU0UpOwogfQogCmRpZmYgLS1naXQgYS9tZW51L21faXRlbV92aXMuYyBiL21lbnUvbV9pdGVtX3Zpcy5jCmluZGV4IGY4ZmI5N2YuLmZmODQ3NDAgMTAwNjQ0Ci0tLSBhL21lbnUvbV9pdGVtX3Zpcy5jCisrKyBiL21lbnUvbV9pdGVtX3Zpcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX2l0ZW1fdmlzLmMsdiAxLjE1IDIwMDQvMTIvMjUgMjE6NDA6MDkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX2l0ZW1fdmlzLmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MjA6MTAgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKQEAgLTU0LDcgKzU0LDcgQEAKIHsKICAgTUVOVSAqbWVudTsKIAotICBUKChUX0NBTExFRCgiaXRlbV92aXNpYmxlKCVwKSIpLCBpdGVtKSk7CisgIFQoKFRfQ0FMTEVEKCJpdGVtX3Zpc2libGUoJXApIiksIChjb25zdCB2b2lkICopaXRlbSkpOwogICBpZiAoaXRlbSAmJgogICAgICAgKG1lbnUgPSBpdGVtLT5pbWVudSkgJiYKICAgICAgIChtZW51LT5zdGF0dXMgJiBfUE9TVEVEKSAmJgpkaWZmIC0tZ2l0IGEvbWVudS9tX2l0ZW1zLmMgYi9tZW51L21faXRlbXMuYwppbmRleCAzZThmNzBiLi41Mzk3Njg1IDEwMDY0NAotLS0gYS9tZW51L21faXRlbXMuYworKysgYi9tZW51L21faXRlbXMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV9pdGVtcy5jLHYgMS4xNiAyMDA1LzAxLzE2IDAxOjAyOjIzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9pdGVtcy5jLHYgMS4xNyAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01NSw3ICs1NSw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzZXRfbWVudV9pdGVtcyhNRU5VICogbWVudSwgSVRFTSAqKiBpdGVtcykKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9tZW51X2l0ZW1zKCVwLCVwKSIpLCBtZW51LCBpdGVtcykpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfaXRlbXMoJXAsJXApIiksICh2b2lkICopbWVudSwgKHZvaWQgKilpdGVtcykpOwogCiAgIGlmICghbWVudSB8fCAoaXRlbXMgJiYgISgqaXRlbXMpKSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtODcsNyArODcsNyBAQAogTkNVUlNFU19FWFBPUlQoSVRFTSAqKikKIG1lbnVfaXRlbXMoY29uc3QgTUVOVSAqIG1lbnUpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJtZW51X2l0ZW1zKCVwKSIpLCBtZW51KSk7CisgIFQoKFRfQ0FMTEVEKCJtZW51X2l0ZW1zKCVwKSIpLCAoY29uc3Qgdm9pZCAqKW1lbnUpKTsKICAgcmV0dXJuSXRlbVB0cihtZW51ID8gbWVudS0+aXRlbXMgOiAoSVRFTSAqKikgMCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogaXRlbV9jb3VudChjb25zdCBNRU5VICogbWVudSkKIHsKLSAgVCgoVF9DQUxMRUQoIml0ZW1fY291bnQoJXApIiksIG1lbnUpKTsKKyAgVCgoVF9DQUxMRUQoIml0ZW1fY291bnQoJXApIiksIChjb25zdCB2b2lkICopbWVudSkpOwogICByZXR1cm5Db2RlKG1lbnUgPyBtZW51LT5uaXRlbXMgOiAtMSk7CiB9CiAKZGlmZiAtLWdpdCBhL21lbnUvbV9uZXcuYyBiL21lbnUvbV9uZXcuYwppbmRleCBjMjBjNjY1Li43OWY5MjkyIDEwMDY0NAotLS0gYS9tZW51L21fbmV3LmMKKysrIGIvbWVudS9tX25ldy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNTcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV9uZXcuYyx2IDEuMTggMjAwNi8xMS8wNCAxOTowNDowNiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fbmV3LmMsdiAxLjIxIDIwMTAvMDEvMjMgMjE6MjA6MTEgdG9tIEV4cCAkIikKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKK3wgICBGdW5jdGlvbiAgICAgIDogIE1FTlUqIF9uY19uZXdfbWVudShTQ1JFRU4qLCBJVEVNICoqaXRlbXMpCit8ICAgCit8ICAgRGVzY3JpcHRpb24gICA6ICBDcmVhdGVzIGEgbmV3IG1lbnUgY29ubmVjdGVkIHRvIHRoZSBpdGVtIHBvaW50ZXIKK3wgICAgICAgICAgICAgICAgICAgIGFycmF5IGl0ZW1zIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG1lbnUuCit8ICAgICAgICAgICAgICAgICAgICBUaGUgbmV3IG1lbnUgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlCit8ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IG1lbnUuCit8Cit8ICAgUmV0dXJuIFZhbHVlcyA6ICBOVUxMIG9uIGVycm9yCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworTkNVUlNFU19FWFBPUlQoTUVOVSAqKQorTkNVUlNFU19TUF9OQU1FKG5ld19tZW51KSAoTkNVUlNFU19TUF9EQ0x4IElURU0gKiogaXRlbXMpCit7CisgIGludCBlcnIgPSBFX1NZU1RFTV9FUlJPUjsKKyAgTUVOVSAqbWVudSA9IHR5cGVDYWxsb2MoTUVOVSwgMSk7CisKKyAgVCgoVF9DQUxMRUQoIm5ld19tZW51KCVwLCVwKSIpLCAodm9pZCAqKVNQX1BBUk0sICh2b2lkICopaXRlbXMpKTsKKyAgaWYgKG1lbnUpCisgICAgeworICAgICAgKm1lbnUgPSBfbmNfRGVmYXVsdF9NZW51OworICAgICAgbWVudS0+c3RhdHVzID0gMDsKKyAgICAgIG1lbnUtPnJvd3MgPSBtZW51LT5mcm93czsKKyAgICAgIG1lbnUtPmNvbHMgPSBtZW51LT5mY29sczsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgICAvKiBUaGlzIGVuc3VyZXMgdXNlcndpbiBhbmQgdXNlcnN1YiBhcmUgYWx3YXlzIG5vbi1udWxsLAorICAgICAgICAgc28gd2UgY2FuIGRlcml2ZSBhbHdheXMgdGhlIFNDUkVFTiB0aGF0IHRoaXMgbWVudSBpcworICAgICAgICAgcnVubmluZyBvbi4gKi8KKyAgICAgIG1lbnUtPnVzZXJ3aW4gPSBTUF9QQVJNLT5fc3Rkc2NyOworICAgICAgbWVudS0+dXNlcnN1YiA9IFNQX1BBUk0tPl9zdGRzY3I7CisjZW5kaWYKKyAgICAgIGlmIChpdGVtcyAmJiAqaXRlbXMpCisJeworCSAgaWYgKCFfbmNfQ29ubmVjdF9JdGVtcyhtZW51LCBpdGVtcykpCisJICAgIHsKKwkgICAgICBlcnIgPSBFX05PVF9DT05ORUNURUQ7CisJICAgICAgZnJlZShtZW51KTsKKwkgICAgICBtZW51ID0gKE1FTlUgKikgMDsKKwkgICAgfQorCSAgZWxzZQorCSAgICBlcnIgPSBFX09LOworCX0KKyAgICB9CisKKyAgaWYgKCFtZW51KQorICAgIFNFVF9FUlJPUihlcnIpOworCisgIHJldHVybk1lbnUobWVudSk7Cit9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01MCwzNSArMTAwLDEzIEBACiB8CiB8ICAgUmV0dXJuIFZhbHVlcyA6ICBOVUxMIG9uIGVycm9yCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKE1FTlUgKikKIG5ld19tZW51KElURU0gKiogaXRlbXMpCiB7Ci0gIGludCBlcnIgPSBFX1NZU1RFTV9FUlJPUjsKLSAgTUVOVSAqbWVudSA9IChNRU5VICopIGNhbGxvYygxLCBzaXplb2YoTUVOVSkpOwotCi0gIFQoKFRfQ0FMTEVEKCJuZXdfbWVudSglcCkiKSwgaXRlbXMpKTsKLSAgaWYgKG1lbnUpCi0gICAgewotICAgICAgKm1lbnUgPSBfbmNfRGVmYXVsdF9NZW51OwotICAgICAgbWVudS0+c3RhdHVzID0gMDsKLSAgICAgIG1lbnUtPnJvd3MgPSBtZW51LT5mcm93czsKLSAgICAgIG1lbnUtPmNvbHMgPSBtZW51LT5mY29sczsKLSAgICAgIGlmIChpdGVtcyAmJiAqaXRlbXMpCi0JewotCSAgaWYgKCFfbmNfQ29ubmVjdF9JdGVtcyhtZW51LCBpdGVtcykpCi0JICAgIHsKLQkgICAgICBlcnIgPSBFX05PVF9DT05ORUNURUQ7Ci0JICAgICAgZnJlZShtZW51KTsKLQkgICAgICBtZW51ID0gKE1FTlUgKikgMDsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgaWYgKCFtZW51KQotICAgIFNFVF9FUlJPUihlcnIpOwotCi0gIHJldHVybk1lbnUobWVudSk7CisgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobmV3X21lbnUpIChDVVJSRU5UX1NDUkVFTiwgaXRlbXMpOwogfQorI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC05NCw3ICsxMjIsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogZnJlZV9tZW51KE1FTlUgKiBtZW51KQogewotICBUKChUX0NBTExFRCgiZnJlZV9tZW51KCVwKSIpLCBtZW51KSk7CisgIFQoKFRfQ0FMTEVEKCJmcmVlX21lbnUoJXApIiksICh2b2lkICopbWVudSkpOwogICBpZiAoIW1lbnUpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKIApkaWZmIC0tZ2l0IGEvbWVudS9tX29wdHMuYyBiL21lbnUvbV9vcHRzLmMKaW5kZXggYTczNzBiMC4uYmM2OTI0YiAxMDA2NDQKLS0tIGEvbWVudS9tX29wdHMuYworKysgYi9tZW51L21fb3B0cy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX29wdHMuYyx2IDEuMTkgMjAwNC8xMi8yNSAyMTozNjoxMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fb3B0cy5jLHYgMS4yMCAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudQpAQCAtNTUsNyArNTUsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X21lbnVfb3B0cyhNRU5VICogbWVudSwgTWVudV9PcHRpb25zIG9wdHMpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfbWVudV9vcHRzKCVwLCVkKSIpLCBtZW51LCBvcHRzKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfbWVudV9vcHRzKCVwLCVkKSIpLCAodm9pZCAqKW1lbnUsIG9wdHMpKTsKIAogICBvcHRzICY9IEFMTF9NRU5VX09QVFM7CiAKQEAgLTExOSw3ICsxMTksNyBAQAogCiAJCQkJICAgTlVMTCBtZW51IGl0c2VsZiB0byBhZGp1c3QgaXRzIGJlaGF2aW9yICovCiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfb3B0c19vZmYoJXAsJWQpIiksIG1lbnUsIG9wdHMpKTsKKyAgVCgoVF9DQUxMRUQoIm1lbnVfb3B0c19vZmYoJXAsJWQpIiksICh2b2lkICopbWVudSwgb3B0cykpOwogCiAgIG9wdHMgJj0gQUxMX01FTlVfT1BUUzsKICAgaWYgKG9wdHMgJiB+QUxMX01FTlVfT1BUUykKQEAgLTE1Miw3ICsxNTIsNyBAQAogCiAJCQkJICAgTlVMTCBtZW51IGl0c2VsZiB0byBhZGp1c3QgaXRzIGJlaGF2aW9yICovCiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfb3B0c19vbiglcCwlZCkiKSwgbWVudSwgb3B0cykpOworICBUKChUX0NBTExFRCgibWVudV9vcHRzX29uKCVwLCVkKSIpLCAodm9pZCAqKW1lbnUsIG9wdHMpKTsKIAogICBvcHRzICY9IEFMTF9NRU5VX09QVFM7CiAgIGlmIChvcHRzICYgfkFMTF9NRU5VX09QVFMpCkBAIC0xNzYsNyArMTc2LDcgQEAKIE5DVVJTRVNfRVhQT1JUKE1lbnVfT3B0aW9ucykKIG1lbnVfb3B0cyhjb25zdCBNRU5VICogbWVudSkKIHsKLSAgVCgoVF9DQUxMRUQoIm1lbnVfb3B0cyglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgibWVudV9vcHRzKCVwKSIpLCAoY29uc3Qgdm9pZCAqKW1lbnUpKTsKICAgcmV0dXJuTWVudU9wdHMoQUxMX01FTlVfT1BUUyAmIE5vcm1hbGl6ZV9NZW51KG1lbnUpLT5vcHQpOwogfQogCmRpZmYgLS1naXQgYS9tZW51L21fcGFkLmMgYi9tZW51L21fcGFkLmMKaW5kZXggNzYwODNiYS4uMGFiYWY2NyAxMDA2NDQKLS0tIGEvbWVudS9tX3BhZC5jCisrKyBiL21lbnUvbV9wYWQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDE5ICszNywxOSBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX3BhZC5jLHYgMS4xMCAyMDA0LzEyLzI1IDIxOjQwOjU4IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9wYWQuYyx2IDEuMTMgMjAxMi8wMy8xMCAyMzo0Mzo0MSB0b20gRXhwICQiKQogCiAvKiBNYWNybyB0byByZWRyYXcgbWVudSBpZiBpdCBpcyBwb3N0ZWQgYW5kIGNoYW5nZWQgKi8KICNkZWZpbmUgUmVmcmVzaF9NZW51KG1lbnUpIFwKICAgIGlmICggKG1lbnUpICYmICgobWVudSktPnN0YXR1cyAmIF9QT1NURUQpIClcCiAgICB7XAogICAgICAgX25jX0RyYXdfTWVudSggbWVudSApO1wKLSAgICAgIF9uY19TaG93X01lbnUoIG1lbnUgKTtcCisgICAgICBfbmNfU2hvd19NZW51KCBtZW51ICk7IFwKICAgIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKLXwgICBGdW5jdGlvbiAgICAgIDogIGludCBzZXRfbWVudV9wYWQoTUVOVSAqbWVudSwgaW50IHBhZCkKK3wgICBGdW5jdGlvbiAgICAgIDogIGludCBzZXRfbWVudV9wYWQoTUVOVSogbWVudSwgaW50IHBhZCkKIHwgICAKIHwgICBEZXNjcmlwdGlvbiAgIDogIFNldCB0aGUgY2hhcmFjdGVyIHRvIGJlIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGl0ZW0gbmFtZQogfCAgICAgICAgICAgICAgICAgICAgZnJvbSBpdHMgZGVzY3JpcHRpb24uIFRoaXMgbXVzdCBiZSBhIHByaW50YWJsZSAKQEAgLTYzLDEzICs2MywxMyBAQAogewogICBib29sIGRvX3JlZnJlc2ggPSAobWVudSAhPSAoTUVOVSAqKSAwKTsKIAotICBUKChUX0NBTExFRCgic2V0X21lbnVfcGFkKCVwLCVkKSIpLCBtZW51LCBwYWQpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9tZW51X3BhZCglcCwlZCkiKSwgKHZvaWQgKiltZW51LCBwYWQpKTsKIAogICBpZiAoIWlzcHJpbnQoVUNoYXIocGFkKSkpCiAgICAgUkVUVVJOKEVfQkFEX0FSR1VNRU5UKTsKIAogICBOb3JtYWxpemVfTWVudShtZW51KTsKLSAgbWVudS0+cGFkID0gcGFkOworICBtZW51LT5wYWQgPSAodW5zaWduZWQgY2hhcilwYWQ7CiAKICAgaWYgKGRvX3JlZnJlc2gpCiAgICAgUmVmcmVzaF9NZW51KG1lbnUpOwpAQCAtODgsNyArODgsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogbWVudV9wYWQoY29uc3QgTUVOVSAqIG1lbnUpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJtZW51X3BhZCglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgibWVudV9wYWQoJXApIiksIChjb25zdCB2b2lkICopbWVudSkpOwogICByZXR1cm5Db2RlKE5vcm1hbGl6ZV9NZW51KG1lbnUpLT5wYWQpOwogfQogCmRpZmYgLS1naXQgYS9tZW51L21fcGF0dGVybi5jIGIvbWVudS9tX3BhdHRlcm4uYwppbmRleCAxMTcxMzkwLi4xNzY0ZDA1IDEwMDY0NAotLS0gYS9tZW51L21fcGF0dGVybi5jCisrKyBiL21lbnUvbV9wYXR0ZXJuLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fcGF0dGVybi5jLHYgMS4xNSAyMDA2LzExLzA0IDE4OjQ2OjM5IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV9wYXR0ZXJuLmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MjA6MTAgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKQEAgLTU1LDcgKzU1LDcgQEAKIHsKICAgc3RhdGljIGNoYXIgZW1wdHlbXSA9ICIiOwogCi0gIFQoKFRfQ0FMTEVEKCJtZW51X3BhdHRlcm4oJXApIiksIG1lbnUpKTsKKyAgVCgoVF9DQUxMRUQoIm1lbnVfcGF0dGVybiglcCkiKSwgKGNvbnN0IHZvaWQgKiltZW51KSk7CiAgIHJldHVyblB0cihtZW51ID8gKG1lbnUtPnBhdHRlcm4gPyBtZW51LT5wYXR0ZXJuIDogZW1wdHkpIDogMCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAKICAgSVRFTSAqbWF0Y2hpdGVtOwogICBpbnQgbWF0Y2hwb3M7CiAKLSAgVCgoVF9DQUxMRUQoInNldF9tZW51X3BhdHRlcm4oJXAsJXMpIiksIG1lbnUsIF9uY192aXNidWYocCkpKTsKKyAgVCgoVF9DQUxMRUQoInNldF9tZW51X3BhdHRlcm4oJXAsJXMpIiksICh2b2lkICopbWVudSwgX25jX3Zpc2J1ZihwKSkpOwogCiAgIGlmICghbWVudSB8fCAhcCkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpkaWZmIC0tZ2l0IGEvbWVudS9tX3Bvc3QuYyBiL21lbnUvbV9wb3N0LmMKaW5kZXggNjU3ZDBmMS4uYTI2YmE0OSAxMDA2NDQKLS0tIGEvbWVudS9tX3Bvc3QuYworKysgYi9tZW51L21fcG9zdC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX3Bvc3QuYyx2IDEuMjYgMjAwNC8xMi8yNSAyMzo1NzowNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fcG9zdC5jLHYgMS4zMSAyMDEyLzA2LzA5IDIzOjU0OjM1IHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudQpAQCAtNjcsNyArNjcsNyBAQAogICAgICAtIGl0IGlzIGEgb25ldmFsdWVkIG1lbnUgYW5kIGl0IGlzIHRoZSBjdXJyZW50IGl0ZW0KICAgICAgLSBvciBpdCBoYXMgYSBzZWxlY3Rpb24gdmFsdWUKICAgICovCi0gIHdhdHRyb24obWVudS0+d2luLCBtZW51LT5iYWNrKTsKKyAgd2F0dHJvbihtZW51LT53aW4sIChpbnQpbWVudS0+YmFjayk7CiAgIGlmIChpdGVtLT52YWx1ZSB8fCAoaXRlbSA9PSBtZW51LT5jdXJpdGVtKSkKICAgICB7CiAgICAgICBpZiAobWVudS0+bWFya2xlbikKQEAgLTc5LDEzICs3OSwxMyBAQAogCSAgICAgaXRlbS4gKi8KIAkgIGlmICghKG1lbnUtPm9wdCAmIE9fT05FVkFMVUUpICYmIGl0ZW0tPnZhbHVlICYmIGl0ZW0gIT0gbWVudS0+Y3VyaXRlbSkKIAkgICAgewotCSAgICAgIHdhdHRyb24obWVudS0+d2luLCBtZW51LT5mb3JlKTsKKwkgICAgICB3YXR0cm9uKG1lbnUtPndpbiwgKGludCltZW51LT5mb3JlKTsKIAkgICAgICBpc2ZvcmUgPSBUUlVFOwogCSAgICB9CiAJICB3YWRkc3RyKG1lbnUtPndpbiwgbWVudS0+bWFyayk7CiAJICBpZiAoaXNmb3JlKQogCSAgICB7Ci0JICAgICAgd2F0dHJvbihtZW51LT53aW4sIG1lbnUtPmZvcmUpOworCSAgICAgIHdhdHRyb24obWVudS0+d2luLCAoaW50KW1lbnUtPmZvcmUpOwogCSAgICAgIGlzZm9yZSA9IEZBTFNFOwogCSAgICB9CiAJfQpAQCAtOTMsNyArOTMsNyBAQAogICBlbHNlCQkJCS8qIG90aGVyd2lzZSB3ZSBoYXZlIHRvIHdpcGUgb3V0IHRoZSBtYXJrZXIgYXJlYSAqLwogICAgIGZvciAoY2ggPSAnICcsIGkgPSBtZW51LT5tYXJrbGVuOyBpID4gMDsgaS0tKQogICAgICAgd2FkZGNoKG1lbnUtPndpbiwgY2gpOwotICB3YXR0cm9mZihtZW51LT53aW4sIG1lbnUtPmJhY2spOworICB3YXR0cm9mZihtZW51LT53aW4sIChpbnQpbWVudS0+YmFjayk7CiAgIGNvdW50ICs9IG1lbnUtPm1hcmtsZW47CiAKICAgLyogRmlyc3Qgd2UgaGF2ZSB0byBjYWxjdWxhdGUgdGhlIGF0dHJpYnV0ZSBkZXBlbmRpbmcgb24gc2VsZWN0YWJpbGl0eQpAQCAtMTAxLDE5ICsxMDEsMTkgQEAKICAgICovCiAgIGlmICghKGl0ZW0tPm9wdCAmIE9fU0VMRUNUQUJMRSkpCiAgICAgewotICAgICAgd2F0dHJvbihtZW51LT53aW4sIG1lbnUtPmdyZXkpOworICAgICAgd2F0dHJvbihtZW51LT53aW4sIChpbnQpbWVudS0+Z3JleSk7CiAgICAgICBpc2dyZXkgPSBUUlVFOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChpdGVtLT52YWx1ZSB8fCBpdGVtID09IG1lbnUtPmN1cml0ZW0pCiAJewotCSAgd2F0dHJvbihtZW51LT53aW4sIG1lbnUtPmZvcmUpOworCSAgd2F0dHJvbihtZW51LT53aW4sIChpbnQpbWVudS0+Zm9yZSk7CiAJICBpc2ZvcmUgPSBUUlVFOwogCX0KICAgICAgIGVsc2UKIAl7Ci0JICB3YXR0cm9uKG1lbnUtPndpbiwgbWVudS0+YmFjayk7CisJICB3YXR0cm9uKG1lbnUtPndpbiwgKGludCltZW51LT5iYWNrKTsKIAkgIGlzYmFjayA9IFRSVUU7CiAJfQogICAgIH0KQEAgLTE1OCwxMCArMTU4LDEwIEBACiAJICBhc3NlcnQoY3ggPj0gMCAmJiBjeSA+PSAwKTsKIAkgIGdldHl4KG1lbnUtPndpbiwgbmN5LCBuY3gpOwogCSAgaWYgKGlzZ3JleSkKLQkgICAgd2F0dHJvZmYobWVudS0+d2luLCBtZW51LT5ncmV5KTsKKwkgICAgd2F0dHJvZmYobWVudS0+d2luLCAoaW50KW1lbnUtPmdyZXkpOwogCSAgZWxzZSBpZiAoaXNmb3JlKQotCSAgICB3YXR0cm9mZihtZW51LT53aW4sIG1lbnUtPmZvcmUpOwotCSAgd2F0dHJvbihtZW51LT53aW4sIG1lbnUtPmJhY2spOworCSAgICB3YXR0cm9mZihtZW51LT53aW4sIChpbnQpbWVudS0+Zm9yZSk7CisJICB3YXR0cm9uKG1lbnUtPndpbiwgKGludCltZW51LT5iYWNrKTsKIAkgIGZvciAoaiA9IDE7IGogPCBtZW51LT5zcGNfcm93czsgaisrKQogCSAgICB7CiAJICAgICAgaWYgKChpdGVtX3kgKyBqKSA8IGdldG1heHkobWVudS0+d2luKSkKQEAgLTE3MSwyMSArMTcxLDIxIEBACiAJCSAgICB3YWRkY2gobWVudS0+d2luLCAnICcpOwogCQl9CiAJICAgICAgaWYgKChjeSArIGopIDwgZ2V0bWF4eShtZW51LT53aW4pKQotCQltdndhZGRjaChtZW51LT53aW4sIGN5ICsgaiwgY3ggLSAxLCBtZW51LT5wYWQpOworCQkodm9pZCltdndhZGRjaChtZW51LT53aW4sIGN5ICsgaiwgY3ggLSAxLCBtZW51LT5wYWQpOwogCSAgICB9CiAJICB3bW92ZShtZW51LT53aW4sIG5jeSwgbmN4KTsKIAkgIGlmICghaXNiYWNrKQotCSAgICB3YXR0cm9mZihtZW51LT53aW4sIG1lbnUtPmJhY2spOworCSAgICB3YXR0cm9mZihtZW51LT53aW4sIChpbnQpbWVudS0+YmFjayk7CiAJfQogICAgIH0KIAogICAvKiBSZW1vdmUgYXR0cmlidXRlcyAqLwogICBpZiAoaXNmb3JlKQotICAgIHdhdHRyb2ZmKG1lbnUtPndpbiwgbWVudS0+Zm9yZSk7CisgICAgd2F0dHJvZmYobWVudS0+d2luLCAoaW50KW1lbnUtPmZvcmUpOwogICBpZiAoaXNiYWNrKQotICAgIHdhdHRyb2ZmKG1lbnUtPndpbiwgbWVudS0+YmFjayk7CisgICAgd2F0dHJvZmYobWVudS0+d2luLCAoaW50KW1lbnUtPmJhY2spOwogICBpZiAoaXNncmV5KQotICAgIHdhdHRyb2ZmKG1lbnUtPndpbiwgbWVudS0+Z3JleSk7CisgICAgd2F0dHJvZmYobWVudS0+d2luLCAoaW50KW1lbnUtPmdyZXkpOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjI1LDcgKzIyNSw3IEBACiAJewogCSAgX25jX1Bvc3RfSXRlbShtZW51LCBoaXRlbSk7CiAKLQkgIHdhdHRyb24obWVudS0+d2luLCBtZW51LT5iYWNrKTsKKwkgIHdhdHRyb24obWVudS0+d2luLCAoaW50KW1lbnUtPmJhY2spOwogCSAgaWYgKCgoaGl0ZW0gPSBoaXRlbS0+cmlnaHQpICE9IGxhc3Rob3IpICYmIGhpdGVtKQogCSAgICB7CiAJICAgICAgaW50IGksIGosIGN5LCBjeDsKQEAgLTI0NCw3ICsyNDQsNyBAQAogCSAgICB9CiAJfQogICAgICAgd2hpbGUgKGhpdGVtICYmIChoaXRlbSAhPSBsYXN0aG9yKSk7Ci0gICAgICB3YXR0cm9mZihtZW51LT53aW4sIG1lbnUtPmJhY2spOworICAgICAgd2F0dHJvZmYobWVudS0+d2luLCAoaW50KW1lbnUtPmJhY2spOwogCiAgICAgICBpdGVtID0gaXRlbS0+ZG93bjsKICAgICAgIHkgKz0gbWVudS0+c3BjX3Jvd3M7CkBAIC0yNTUsNyArMjU1LDcgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51Ci18ICAgRnVuY3Rpb24gICAgICA6ICBpbnQgcG9zdF9tZW51KE1FTlUgKikKK3wgICBGdW5jdGlvbiAgICAgIDogIGludCBwb3N0X21lbnUoTUVOVSogbWVudSkKIHwKIHwgICBEZXNjcmlwdGlvbiAgIDogIFBvc3QgYSBtZW51IHRvIHRoZSBzY3JlZW4uIFRoaXMgbWFrZXMgaXQgdmlzaWJsZS4KIHwKQEAgLTI2OSw3ICsyNjksNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogcG9zdF9tZW51KE1FTlUgKiBtZW51KQogewotICBUKChUX0NBTExFRCgicG9zdF9tZW51KCVwKSIpLCBtZW51KSk7CisgIFQoKFRfQ0FMTEVEKCJwb3N0X21lbnUoJXApIiksICh2b2lkICopbWVudSkpOwogCiAgIGlmICghbWVudSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMzA1LDcgKzMwNSw3IEBACiAgIGVsc2UKICAgICBSRVRVUk4oRV9OT1RfQ09OTkVDVEVEKTsKIAotICBtZW51LT5zdGF0dXMgfD0gX1BPU1RFRDsKKyAgU2V0U3RhdHVzKG1lbnUsIF9QT1NURUQpOwogCiAgIGlmICghKG1lbnUtPm9wdCAmIE9fT05FVkFMVUUpKQogICAgIHsKQEAgLTMyOSw3ICszMjksNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUKLXwgICBGdW5jdGlvbiAgICAgIDogIGludCB1bnBvc3RfbWVudShNRU5VICopCit8ICAgRnVuY3Rpb24gICAgICA6ICBpbnQgdW5wb3N0X21lbnUoTUVOVSopCiB8CiB8ICAgRGVzY3JpcHRpb24gICA6ICBEZXRhY2ggbWVudSBmcm9tIHNjcmVlbgogfApAQCAtMzQzLDcgKzM0Myw3IEBACiB7CiAgIFdJTkRPVyAqd2luOwogCi0gIFQoKFRfQ0FMTEVEKCJ1bnBvc3RfbWVudSglcCkiKSwgbWVudSkpOworICBUKChUX0NBTExFRCgidW5wb3N0X21lbnUoJXApIiksICh2b2lkICopbWVudSkpOwogCiAgIGlmICghbWVudSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpAQCAtMzY5LDcgKzM2OSw3IEBACiAgIGRlbHdpbihtZW51LT53aW4pOwogICBtZW51LT53aW4gPSAoV0lORE9XICopMDsKIAotICBtZW51LT5zdGF0dXMgJj0gfl9QT1NURUQ7CisgIENsclN0YXR1cyhtZW51LCBfUE9TVEVEKTsKIAogICBSRVRVUk4oRV9PSyk7CiB9CmRpZmYgLS1naXQgYS9tZW51L21fcmVxX25hbWUuYyBiL21lbnUvbV9yZXFfbmFtZS5jCmluZGV4IDZmZDUxYjEuLmNjMDA2NmQgMTAwNjQ0Ci0tLSBhL21lbnUvbV9yZXFfbmFtZS5jCisrKyBiL21lbnUvbV9yZXFfbmFtZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsMjcgKzM3LDI5IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fcmVxX25hbWUuYyx2IDEuMjAgMjAwOC8wOS8xMyAxODo1OToxNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fcmVxX25hbWUuYyx2IDEuMjMgMjAxNS8wNC8wNCAxODowMDoyMyB0b20gRXhwICQiKQogCi1zdGF0aWMgY29uc3QgY2hhciAqcmVxdWVzdF9uYW1lc1tNQVhfTUVOVV9DT01NQU5EIC0gTUlOX01FTlVfQ09NTUFORCArIDFdID0KKyNkZWZpbmUgREFUQShzKSB7IHMgfQorCitzdGF0aWMgY29uc3QgY2hhciByZXF1ZXN0X25hbWVzW01BWF9NRU5VX0NPTU1BTkQgLSBNSU5fTUVOVV9DT01NQU5EICsgMV1bMTRdID0KIHsKLSAgIkxFRlRfSVRFTSIsCi0gICJSSUdIVF9JVEVNIiwKLSAgIlVQX0lURU0iLAotICAiRE9XTl9JVEVNIiwKLSAgIlNDUl9VTElORSIsCi0gICJTQ1JfRExJTkUiLAotICAiU0NSX0RQQUdFIiwKLSAgIlNDUl9VUEFHRSIsCi0gICJGSVJTVF9JVEVNIiwKLSAgIkxBU1RfSVRFTSIsCi0gICJORVhUX0lURU0iLAotICAiUFJFVl9JVEVNIiwKLSAgIlRPR0dMRV9JVEVNIiwKLSAgIkNMRUFSX1BBVFRFUk4iLAotICAiQkFDS19QQVRURVJOIiwKLSAgIk5FWFRfTUFUQ0giLAotICAiUFJFVl9NQVRDSCIKKyAgREFUQSgiTEVGVF9JVEVNIiksCisgIERBVEEoIlJJR0hUX0lURU0iKSwKKyAgREFUQSgiVVBfSVRFTSIpLAorICBEQVRBKCJET1dOX0lURU0iKSwKKyAgREFUQSgiU0NSX1VMSU5FIiksCisgIERBVEEoIlNDUl9ETElORSIpLAorICBEQVRBKCJTQ1JfRFBBR0UiKSwKKyAgREFUQSgiU0NSX1VQQUdFIiksCisgIERBVEEoIkZJUlNUX0lURU0iKSwKKyAgREFUQSgiTEFTVF9JVEVNIiksCisgIERBVEEoIk5FWFRfSVRFTSIpLAorICBEQVRBKCJQUkVWX0lURU0iKSwKKyAgREFUQSgiVE9HR0xFX0lURU0iKSwKKyAgREFUQSgiQ0xFQVJfUEFUVEVSTiIpLAorICBEQVRBKCJCQUNLX1BBVFRFUk4iKSwKKyAgREFUQSgiTkVYVF9NQVRDSCIpLAorICBEQVRBKCJQUkVWX01BVENIIikKIH07CiAKICNkZWZpbmUgQV9TSVpFIChzaXplb2YocmVxdWVzdF9uYW1lcykvc2l6ZW9mKHJlcXVlc3RfbmFtZXNbMF0pKQpAQCAtOTksMjMgKzEwMSwyNiBAQAogICAvKiBiZWNhdXNlIHRoZSB0YWJsZSBpcyBzbyBzbWFsbCwgaXQgZG9lc24ndCByZWFsbHkgaHVydAogICAgICB0byBydW4gc2VxdWVudGlhbGx5IHRocm91Z2ggaXQuCiAgICAqLwotICB1bnNpZ25lZCBpbnQgaSA9IDA7CisgIHNpemVfdCBpID0gMDsKICAgY2hhciBidWZbMTZdOwogCiAgIFQoKFRfQ0FMTEVEKCJtZW51X3JlcXVlc3RfYnlfbmFtZSglcykiKSwgX25jX3Zpc2J1ZihzdHIpKSk7CiAKLSAgaWYgKHN0cikKKyAgaWYgKHN0ciAhPSAwICYmIChpID0gc3RybGVuKHN0cikpICE9IDApCiAgICAgewotICAgICAgc3RybmNweShidWYsIHN0ciwgc2l6ZW9mKGJ1ZikpOwotICAgICAgd2hpbGUgKChpIDwgc2l6ZW9mKGJ1ZikpICYmIChidWZbaV0gIT0gJ1wwJykpCisgICAgICBpZiAoaSA+IHNpemVvZihidWYpIC0gMikKKwlpID0gc2l6ZW9mKGJ1ZikgLSAyOworICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBpKTsKKyAgICAgIGJ1ZltpXSA9ICdcMCc7CisKKyAgICAgIGZvciAoaSA9IDA7IGJ1ZltpXSAhPSAnXDAnOyArK2kpCiAJewotCSAgYnVmW2ldID0gdG91cHBlcihVQ2hhcihidWZbaV0pKTsKLQkgIGkrKzsKKwkgIGJ1ZltpXSA9IChjaGFyKXRvdXBwZXIoVUNoYXIoYnVmW2ldKSk7CiAJfQogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgQV9TSVpFOyBpKyspCiAJewotCSAgaWYgKHN0cm5jbXAocmVxdWVzdF9uYW1lc1tpXSwgYnVmLCBzaXplb2YoYnVmKSkgPT0gMCkKKwkgIGlmIChzdHJjbXAocmVxdWVzdF9uYW1lc1tpXSwgYnVmKSA9PSAwKQogCSAgICByZXR1cm5Db2RlKE1JTl9NRU5VX0NPTU1BTkQgKyAoaW50KWkpOwogCX0KICAgICB9CmRpZmYgLS1naXQgYS9tZW51L21fc2NhbGUuYyBiL21lbnUvbV9zY2FsZS5jCmluZGV4IDk2YzJkODQuLjA2OGExY2MgMTAwNjQ0Ci0tLSBhL21lbnUvbV9zY2FsZS5jCisrKyBiL21lbnUvbV9zY2FsZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX3NjYWxlLmMsdiAxLjkgMjAwNC8xMi8xMSAyMzoyOTozNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fc2NhbGUuYyx2IDEuMTAgMjAxMC8wMS8yMyAyMToyMDoxMCB0b20gRXhwICQiKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUgIApAQCAtNTMsNyArNTMsMTAgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNjYWxlX21lbnUoY29uc3QgTUVOVSAqIG1lbnUsIGludCAqcm93cywgaW50ICpjb2xzKQogewotICBUKChUX0NBTExFRCgic2NhbGVfbWVudSglcCwlcCwlcCkiKSwgbWVudSwgcm93cywgY29scykpOworICBUKChUX0NBTExFRCgic2NhbGVfbWVudSglcCwlcCwlcCkiKSwKKyAgICAgKGNvbnN0IHZvaWQgKiltZW51LAorICAgICAodm9pZCAqKXJvd3MsCisgICAgICh2b2lkICopY29scykpOwogCiAgIGlmICghbWVudSkKICAgICBSRVRVUk4oRV9CQURfQVJHVU1FTlQpOwpkaWZmIC0tZ2l0IGEvbWVudS9tX3NwYWNpbmcuYyBiL21lbnUvbV9zcGFjaW5nLmMKaW5kZXggMDM5YmJlNC4uMDE5NDFmNSAxMDA2NDQKLS0tIGEvbWVudS9tX3NwYWNpbmcuYworKysgYi9tZW51L21fc3BhY2luZy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX3NwYWNpbmcuYyx2IDEuMTcgMjAwNC8xMi8xMSAyMzoyOTozNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fc3BhY2luZy5jLHYgMS4xOSAyMDEyLzAzLzEwIDIzOjQzOjQxIHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgTUFYX1NQQ19ERVNDICgoVEFCU0laRSkgPyAoVEFCU0laRSkgOiA4KQogI2RlZmluZSBNQVhfU1BDX0NPTFMgKChUQUJTSVpFKSA/IChUQUJTSVpFKSA6IDgpCkBAIC01Niw3ICs1Niw4IEBACiB7CiAgIE1FTlUgKm07CQkJLyogc3BsaXQgZm9yIEFUQUMgd29ya2Fyb3VuZCAqLwogCi0gIFQoKFRfQ0FMTEVEKCJzZXRfbWVudV9zcGFjaW5nKCVwLCVkLCVkLCVkKSIpLCBtZW51LCBzX2Rlc2MsIHNfcm93LCBzX2NvbCkpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfc3BhY2luZyglcCwlZCwlZCwlZCkiKSwKKyAgICAgKHZvaWQgKiltZW51LCBzX2Rlc2MsIHNfcm93LCBzX2NvbCkpOwogCiAgIG0gPSBOb3JtYWxpemVfTWVudShtZW51KTsKIApAQCAtNjksOSArNzAsOSBAQAogICAgICAgKChzX2NvbCA8IDApIHx8IChzX2NvbCA+IE1BWF9TUENfQ09MUykpKQogICAgIFJFVFVSTihFX0JBRF9BUkdVTUVOVCk7CiAKLSAgbS0+c3BjX2Rlc2MgPSBzX2Rlc2MgPyBzX2Rlc2MgOiAxOwotICBtLT5zcGNfcm93cyA9IHNfcm93ID8gc19yb3cgOiAxOwotICBtLT5zcGNfY29scyA9IHNfY29sID8gc19jb2wgOiAxOworICBtLT5zcGNfZGVzYyA9IChzaG9ydCkoc19kZXNjID8gc19kZXNjIDogMSk7CisgIG0tPnNwY19yb3dzID0gKHNob3J0KShzX3JvdyA/IHNfcm93IDogMSk7CisgIG0tPnNwY19jb2xzID0gKHNob3J0KShzX2NvbCA/IHNfY29sIDogMSk7CiAgIF9uY19DYWxjdWxhdGVfSXRlbV9MZW5ndGhfYW5kX1dpZHRoKG0pOwogCiAgIFJFVFVSTihFX09LKTsKQEAgLTkwLDcgKzkxLDExIEBACiB7CiAgIGNvbnN0IE1FTlUgKm07CQkvKiBzcGxpdCBmb3IgQVRBQyB3b3JrYXJvdW5kICovCiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfc3BhY2luZyglcCwlcCwlcCwlcCkiKSwgbWVudSwgc19kZXNjLCBzX3Jvdywgc19jb2wpKTsKKyAgVCgoVF9DQUxMRUQoIm1lbnVfc3BhY2luZyglcCwlcCwlcCwlcCkiKSwKKyAgICAgKGNvbnN0IHZvaWQgKiltZW51LAorICAgICAodm9pZCAqKXNfZGVzYywKKyAgICAgKHZvaWQgKilzX3JvdywKKyAgICAgKHZvaWQgKilzX2NvbCkpOwogCiAgIG0gPSBOb3JtYWxpemVfTWVudShtZW51KTsKIApkaWZmIC0tZ2l0IGEvbWVudS9tX3N1Yi5jIGIvbWVudS9tX3N1Yi5jCmluZGV4IDgyNjQ5YzUuLjM3NTI5YTAgMTAwNjQ0Ci0tLSBhL21lbnUvbV9zdWIuYworKysgYi9tZW51L21fc3ViLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fc3ViLmMsdiAxLjEwIDIwMDQvMTIvMjUgMjE6Mzg6MzEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBtX3N1Yi5jLHYgMS4xMiAyMDEwLzAxLzIzIDIxOjIwOjExIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01MSwxNCArNTEsMjggQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9tZW51X3N1YihNRU5VICogbWVudSwgV0lORE9XICp3aW4pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfbWVudV9zdWIoJXAsJXApIiksIG1lbnUsIHdpbikpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfc3ViKCVwLCVwKSIpLCAodm9pZCAqKW1lbnUsICh2b2lkICopd2luKSk7CiAKICAgaWYgKG1lbnUpCiAgICAgewogICAgICAgaWYgKG1lbnUtPnN0YXR1cyAmIF9QT1NURUQpCiAJUkVUVVJOKEVfUE9TVEVEKTsKLSAgICAgIG1lbnUtPnVzZXJzdWIgPSB3aW47Ci0gICAgICBfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aChtZW51KTsKKyAgICAgIGVsc2UKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisJeworCSAgLyogV2UgZW5zdXJlIHRoYXQgdXNlcnN1YiBpcyBuZXZlciBudWxsLiBTbyBldmVuIGlmIGEgbnVsbAorCSAgICAgV0lORE9XIHBhcmFtZXRlciBpcyBwYXNzZWQsIHdlIHN0b3JlIHRoZSBTQ1JFRU5TIHN0ZHNjci4KKwkgICAgIFRoZSBvbmx5IE1FTlUgdGhhdCBjYW4gaGF2ZSBhIG51bGwgdXNlcnN1YiBpcyB0aGUgc3RhdGljCisJICAgICBfbmNfZGVmYXVsdF9NZW51LgorCSAgICovCisJICBTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZihtZW51LT51c2Vyc3ViKTsKKworCSAgbWVudS0+dXNlcnN1YiA9IHdpbiA/IHdpbiA6IHNwLT5fc3Rkc2NyOworCSAgX25jX0NhbGN1bGF0ZV9JdGVtX0xlbmd0aF9hbmRfV2lkdGgobWVudSk7CisJfQorI2Vsc2UKKwltZW51LT51c2Vyc3ViID0gd2luOworI2VuZGlmCiAgICAgfQogICBlbHNlCiAgICAgX25jX0RlZmF1bHRfTWVudS51c2Vyc3ViID0gd2luOwpAQCAtNjgsNyArODIsNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfCAgIEZhY2lsaXR5ICAgICAgOiAgbGlibm1lbnUgIAotfCAgIEZ1bmN0aW9uICAgICAgOiAgV0lORE9XICptZW51X3N1Yihjb25zdCBNRU5VICptZW51KQorfCAgIEZ1bmN0aW9uICAgICAgOiAgV0lORE9XKiBtZW51X3N1Yihjb25zdCBNRU5VICptZW51KQogfCAgIAogfCAgIERlc2NyaXB0aW9uICAgOiAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHN1YndpbmRvdyBvZiB0aGUgbWVudQogfApAQCAtNzksNyArOTMsNyBAQAogewogICBjb25zdCBNRU5VICptID0gTm9ybWFsaXplX01lbnUobWVudSk7CiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfc3ViKCVwKSIpLCBtZW51KSk7CisgIFQoKFRfQ0FMTEVEKCJtZW51X3N1YiglcCkiKSwgKGNvbnN0IHZvaWQgKiltZW51KSk7CiAgIHJldHVybldpbihHZXRfTWVudV9XaW5kb3cobSkpOwogfQogCmRpZmYgLS1naXQgYS9tZW51L21fdHJhY2UuYyBiL21lbnUvbV90cmFjZS5jCmluZGV4IDBmOWY5MDIuLjA5NGZmODYgMTAwNjQ0Ci0tLSBhL21lbnUvbV90cmFjZS5jCisrKyBiL21lbnUvbV90cmFjZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzIsMTkgKzMyLDE5IEBACiAKICNpbmNsdWRlICJtZW51LnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IG1fdHJhY2UuYyx2IDEuMyAyMDA1LzAxLzE2IDAxOjA2OjExIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbV90cmFjZS5jLHYgMS40IDIwMTAvMDEvMjMgMjE6MjA6MTAgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoSVRFTSAqKQogX25jX3JldHJhY2VfaXRlbShJVEVNICogY29kZSkKIHsKLSAgVCgoVF9SRVRVUk4oIiVwIiksIGNvZGUpKTsKKyAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopY29kZSkpOwogICByZXR1cm4gY29kZTsKIH0KIAogTkNVUlNFU19FWFBPUlQoSVRFTSAqKikKIF9uY19yZXRyYWNlX2l0ZW1fcHRyKElURU0gKiogY29kZSkKIHsKLSAgVCgoVF9SRVRVUk4oIiVwIiksIGNvZGUpKTsKKyAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopY29kZSkpOwogICByZXR1cm4gY29kZTsKIH0KIApAQCAtNTgsNyArNTgsNyBAQAogTkNVUlNFU19FWFBPUlQoTUVOVSAqKQogX25jX3JldHJhY2VfbWVudShNRU5VICogY29kZSkKIHsKLSAgVCgoVF9SRVRVUk4oIiVwIiksIGNvZGUpKTsKKyAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopY29kZSkpOwogICByZXR1cm4gY29kZTsKIH0KIApkaWZmIC0tZ2l0IGEvbWVudS9tX3VzZXJwdHIuYyBiL21lbnUvbV91c2VycHRyLmMKaW5kZXggN2IxNzhiMi4uYTczNTljOSAxMDA2NDQKLS0tIGEvbWVudS9tX3VzZXJwdHIuYworKysgYi9tZW51L21fdXNlcnB0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAibWVudS5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBtX3VzZXJwdHIuYyx2IDEuMTYgMjAwNC8xMi8yNSAyMTozODo1NSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fdXNlcnB0ci5jLHYgMS4xNyAyMDEwLzAxLzIzIDIxOjIwOjEwIHRvbSBFeHAgJCIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCkBAIC01MSw3ICs1MSw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzZXRfbWVudV91c2VycHRyKE1FTlUgKiBtZW51LCB2b2lkICp1c2VycHRyKQogewotICBUKChUX0NBTExFRCgic2V0X21lbnVfdXNlcnB0ciglcCwlcCkiKSwgbWVudSwgdXNlcnB0cikpOworICBUKChUX0NBTExFRCgic2V0X21lbnVfdXNlcnB0ciglcCwlcCkiKSwgKHZvaWQgKiltZW51LCAodm9pZCAqKXVzZXJwdHIpKTsKICAgTm9ybWFsaXplX01lbnUobWVudSktPnVzZXJwdHIgPSB1c2VycHRyOwogICBSRVRVUk4oRV9PSyk7CiB9CkBAIC02OSw3ICs2OSw3IEBACiBOQ1VSU0VTX0VYUE9SVCh2b2lkICopCiBtZW51X3VzZXJwdHIoY29uc3QgTUVOVSAqIG1lbnUpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJtZW51X3VzZXJwdHIoJXApIiksIG1lbnUpKTsKKyAgVCgoVF9DQUxMRUQoIm1lbnVfdXNlcnB0ciglcCkiKSwgKGNvbnN0IHZvaWQgKiltZW51KSk7CiAgIHJldHVyblZvaWRQdHIoTm9ybWFsaXplX01lbnUobWVudSktPnVzZXJwdHIpOwogfQogCmRpZmYgLS1naXQgYS9tZW51L21fd2luLmMgYi9tZW51L21fd2luLmMKaW5kZXggYzNmODU3Zi4uZDg4ZmE2NyAxMDA2NDQKLS0tIGEvbWVudS9tX3dpbi5jCisrKyBiL21lbnUvbV93aW4uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIm1lbnUucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogbV93aW4uYyx2IDEuMTUgMjAwNC8xMi8yNSAyMTozOToyMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1fd2luLmMsdiAxLjE3IDIwMTAvMDEvMjMgMjE6MjA6MTEgdG9tIEV4cCAkIikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgICBGYWNpbGl0eSAgICAgIDogIGxpYm5tZW51ICAKQEAgLTUxLDE0ICs1MSwyOCBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0X21lbnVfd2luKE1FTlUgKiBtZW51LCBXSU5ET1cgKndpbikKIHsKLSAgVCgoVF9DQUxMRUQoInNldF9tZW51X3dpbiglcCwlcCkiKSwgbWVudSwgd2luKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfbWVudV93aW4oJXAsJXApIiksICh2b2lkICopbWVudSwgKHZvaWQgKil3aW4pKTsKIAogICBpZiAobWVudSkKICAgICB7CiAgICAgICBpZiAobWVudS0+c3RhdHVzICYgX1BPU1RFRCkKIAlSRVRVUk4oRV9QT1NURUQpOwotICAgICAgbWVudS0+dXNlcndpbiA9IHdpbjsKLSAgICAgIF9uY19DYWxjdWxhdGVfSXRlbV9MZW5ndGhfYW5kX1dpZHRoKG1lbnUpOworICAgICAgZWxzZQorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwl7CisJICAvKiBXZSBlbnN1cmUgdGhhdCB1c2Vyd2luIGlzIG5ldmVyIG51bGwuIFNvIGV2ZW4gaWYgYSBudWxsCisJICAgICBXSU5ET1cgcGFyYW1ldGVyIGlzIHBhc3NlZCwgd2Ugc3RvcmUgdGhlIFNDUkVFTlMgc3Rkc2NyLgorCSAgICAgVGhlIG9ubHkgTUVOVSB0aGF0IGNhbiBoYXZlIGEgbnVsbCB1c2Vyd2luIGlzIHRoZSBzdGF0aWMKKwkgICAgIF9uY19kZWZhdWx0X01lbnUuCisJICAgKi8KKwkgIFNDUkVFTiAqc3AgPSBfbmNfc2NyZWVuX29mKG1lbnUtPnVzZXJ3aW4pOworCisJICBtZW51LT51c2Vyd2luID0gd2luID8gd2luIDogc3AtPl9zdGRzY3I7CisJICBfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aChtZW51KTsKKwl9CisjZWxzZQorCW1lbnUtPnVzZXJ3aW4gPSB3aW47CisjZW5kaWYKICAgICB9CiAgIGVsc2UKICAgICBfbmNfRGVmYXVsdF9NZW51LnVzZXJ3aW4gPSB3aW47CkBAIC02OCw3ICs4Miw3IEBACiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB8ICAgRmFjaWxpdHkgICAgICA6ICBsaWJubWVudSAgCi18ICAgRnVuY3Rpb24gICAgICA6ICBXSU5ET1cgKm1lbnVfd2luKGNvbnN0IE1FTlUgKikKK3wgICBGdW5jdGlvbiAgICAgIDogIFdJTkRPVyogbWVudV93aW4oY29uc3QgTUVOVSopCiB8ICAgCiB8ICAgRGVzY3JpcHRpb24gICA6ICBSZXR1cm5zIHBvaW50ZXIgdG8gdGhlIHdpbmRvdyBvZiB0aGUgbWVudQogfApAQCAtNzksOCArOTMsOCBAQAogewogICBjb25zdCBNRU5VICptID0gTm9ybWFsaXplX01lbnUobWVudSk7CiAKLSAgVCgoVF9DQUxMRUQoIm1lbnVfd2luKCVwKSIpLCBtZW51KSk7Ci0gIHJldHVybldpbihtLT51c2Vyd2luID8gbS0+dXNlcndpbiA6IHN0ZHNjcik7CisgIFQoKFRfQ0FMTEVEKCJtZW51X3dpbiglcCkiKSwgKGNvbnN0IHZvaWQgKiltZW51KSk7CisgIHJldHVybldpbihHZXRfTWVudV9Vc2VyV2luKG0pKTsKIH0KIAogLyogbV93aW4uYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL21lbnUvbWVudS5oIGIvbWVudS9tZW51LmgKaW5kZXggODQzNTJlYi4uNGVlYWMwMSAxMDA2NDQKLS0tIGEvbWVudS9tZW51LmgKKysrIGIvbWVudS9tZW51LmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw3ICszMCw3IEBACiAgKiAgIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NSwxOTk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qICRJZDogbWVudS5oLHYgMS4xOSAyMDA3LzAyLzI0IDE3OjMyOjEzIHRvbSBFeHAgJCAqLworLyogJElkOiBtZW51LmgsdiAxLjIwIDIwMDkvMDQvMDUgMDA6Mjg6MDcgdG9tIEV4cCAkICovCiAKICNpZm5kZWYgRVRJX01FTlUKICNkZWZpbmUgRVRJX01FTlUKQEAgLTI0OSw2ICsyNDksMTAgQEAKIAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpCW1lbnVfZm9ybWF0IChjb25zdCBNRU5VICosaW50ICosaW50ICopOwogCisjaWYgTkNVUlNFU19TUF9GVU5DUworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE1FTlUgKikJTkNVUlNFU19TUF9OQU1FKG5ld19tZW51KSAoU0NSRUVOKiwgSVRFTSAqKik7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVudS9tZW51LnByaXYuaCBiL21lbnUvbWVudS5wcml2LmgKaW5kZXggMTBkMzUzNy4uYjU0YjE5NSAxMDA2NDQKLS0tIGEvbWVudS9tZW51LnByaXYuaAorKysgYi9tZW51L21lbnUucHJpdi5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNyArMzAsNyBAQAogICogICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTUsMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiAkSWQ6IG1lbnUucHJpdi5oLHYgMS4yMiAyMDA1LzAxLzE2IDAxOjAyOjIzIHRvbSBFeHAgJCAqLworLyogJElkOiBtZW51LnByaXYuaCx2IDEuMjUgMjAxNC8xMS8wMSAxNDo0NzowMCB0b20gRXhwICQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBNb2R1bGUgbWVudS5wcml2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgpAQCAtMzksNiArMzksNyBAQAogCiAjaWZuZGVmIE1FTlVfUFJJVl9IX2luY2wKICNkZWZpbmUgTUVOVV9QUklWX0hfaW5jbCAxCisvKiAqSU5ERU5ULU9GRiogKi8KIAogI2luY2x1ZGUgImN1cnNlcy5wcml2LmgiCiAjaW5jbHVkZSAibWZfY29tbW9uLmgiCkBAIC01Niw4ICs1NywxMiBAQAogLyogTm9ybWFsaXplIG1lbnUgdG8gZGVmYXVsdCBpZiBub25lIHdhcyBnaXZlbiAqLwogI2RlZmluZSBOb3JtYWxpemVfTWVudSggbWVudSApICgobWVudSk9KG1lbnUpPyhtZW51KTomX25jX0RlZmF1bHRfTWVudSkKIAorI2RlZmluZSBHZXRfTWVudV9TY3JlZW4oIG1lbnUgKSAobWVudS0+dXNlcndpbiA/IFwKKwkJCQkgX25jX3NjcmVlbl9vZihtZW51LT51c2Vyd2luKSA6IENVUlJFTlRfU0NSRUVOKQorCiAvKiBHZXQgdGhlIHVzZXIgZGVmaW5lZCAoZnJhbWluZykgd2luZG93IG9mIHRoZSBtZW51ICovCi0jZGVmaW5lIEdldF9NZW51X1VzZXJXaW4obWVudSkgKChtZW51KS0+dXNlcndpbiA/IChtZW51KS0+dXNlcndpbiA6IHN0ZHNjcikKKyNkZWZpbmUgR2V0X01lbnVfVXNlcldpbihtZW51KSAoKG1lbnUpLT51c2Vyd2luID8gXAorICAgIChtZW51KS0+dXNlcndpbiA6IENVUlJFTlRfU0NSRUVOLT5fc3Rkc2NyKQogCiAvKiBOb3JtYWxpemUgbWVudSB3aW5kb3cgKi8KICNkZWZpbmUgR2V0X01lbnVfV2luZG93KCAgbWVudSApIFwKQEAgLTk1LDEwICsxMDAsMTEgQEAKICovCiAjZGVmaW5lIEFkanVzdF9DdXJyZW50X0l0ZW0obWVudSxyb3csaXRlbSkgXAogICB7IGlmICgoaXRlbSktPnkgPCByb3cpIFwKLSAgICAgIHJvdyA9IChpdGVtKS0+eTtcCi0gICAgaWYgKCAoaXRlbSktPnkgPj0gKHJvdyArIChtZW51KS0+YXJvd3MpIClcCi0gICAgICByb3cgPSAoIChpdGVtKS0+eSA8ICgobWVudSktPnJvd3MgLSByb3cpICkgPyBcCi0gICAgICAgICAgICAoaXRlbSktPnkgOiAobWVudSktPnJvd3MgLSAobWVudSktPmFyb3dzO1wKKyAgICAgIHJvdyA9IChzaG9ydCkgKGl0ZW0pLT55OyBcCisgICAgaWYgKCAoaXRlbSktPnkgPj0gKHJvdyArIChtZW51KS0+YXJvd3MpICkgXAorICAgICAgcm93ID0gKHNob3J0KSAoKCAoaXRlbSktPnkgPCAoKG1lbnUpLT5yb3dzIC0gcm93KSApIFwKKyAgICAgICAgICAgICAgICAgICAgID8gKGl0ZW0pLT55IFwKKwkJICAgICA6IChtZW51KS0+cm93cyAtIChtZW51KS0+YXJvd3MpOyBcCiAgICAgX25jX05ld19Ub3BSb3dfYW5kX0N1cnJlbnRJdGVtKG1lbnUscm93LGl0ZW0pOyB9CiAKIC8qIFJlc2V0IHRoZSBtYXRjaCBwYXR0ZXJuIGJ1ZmZlciAqLwpAQCAtMTI0LDEyICsxMzAsMTIgQEAKIAogI2lmZGVmIFRSQUNFCiAKLSNkZWZpbmUgcmV0dXJuSXRlbShjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxpdGVtKQotI2RlZmluZSByZXR1cm5JdGVtUHRyKGNvZGUpCVRSQUNFX1JFVFVSTihjb2RlLGl0ZW1fcHRyKQotI2RlZmluZSByZXR1cm5JdGVtT3B0cyhjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxpdGVtX29wdHMpCi0jZGVmaW5lIHJldHVybk1lbnUoY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsbWVudSkKLSNkZWZpbmUgcmV0dXJuTWVudUhvb2soY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsbWVudV9ob29rKQotI2RlZmluZSByZXR1cm5NZW51T3B0cyhjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxtZW51X29wdHMpCisjZGVmaW5lIHJldHVybkl0ZW0oY29kZSkJVFJBQ0VfUkVUVVJOMShjb2RlLGl0ZW0pCisjZGVmaW5lIHJldHVybkl0ZW1QdHIoY29kZSkJVFJBQ0VfUkVUVVJOMShjb2RlLGl0ZW1fcHRyKQorI2RlZmluZSByZXR1cm5JdGVtT3B0cyhjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUsaXRlbV9vcHRzKQorI2RlZmluZSByZXR1cm5NZW51KGNvZGUpCVRSQUNFX1JFVFVSTjEoY29kZSxtZW51KQorI2RlZmluZSByZXR1cm5NZW51SG9vayhjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUsbWVudV9ob29rKQorI2RlZmluZSByZXR1cm5NZW51T3B0cyhjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUsbWVudV9vcHRzKQogCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoSVRFTSAqKQkgICAgX25jX3JldHJhY2VfaXRlbSAoSVRFTSAqKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChJVEVNICoqKQkgICAgX25jX3JldHJhY2VfaXRlbV9wdHIgKElURU0gKiopOwpAQCAtMTQ4LDUgKzE1NCw2IEBACiAjZGVmaW5lIHJldHVybk1lbnVPcHRzKGNvZGUpCXJldHVybiBjb2RlCiAKICNlbmRpZiAvKiBUUkFDRS8hVFJBQ0UgKi8KKy8qICpJTkRFTlQtT04qICovCiAKICNlbmRpZiAvKiBNRU5VX1BSSVZfSF9pbmNsICovCmRpZmYgLS1naXQgYS9tZW51L21mX2NvbW1vbi5oIGIvbWVudS9tZl9jb21tb24uaAppbmRleCA2ODE2NzJkLi5jZmY2NTYzIDEwMDY0NAotLS0gYS9tZW51L21mX2NvbW1vbi5oCisrKyBiL21lbnUvbWZfY29tbW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw3ICszMCw3IEBACiAgKiAgIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5NSwxOTk3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qICRJZDogbWZfY29tbW9uLmgsdiAwLjIyIDIwMDUvMTEvMjYgMTU6MjY6NTIgdG9tIEV4cCAkICovCisvKiAkSWQ6IG1mX2NvbW1vbi5oLHYgMC4yNCAyMDEyLzA2LzEwIDAwOjA2OjU0IHRvbSBFeHAgJCAqLwogCiAvKiBDb21tb24gaW50ZXJuYWwgaGVhZGVyIGZvciBtZW51IGFuZCBmb3JtIGxpYnJhcnkgKi8KIApAQCAtNjMsMTAgKzYzLDkgQEAKICNpZiBVU0VfUkNTX0lEUwogI2RlZmluZSBNT0RVTEVfSUQoaWQpIHN0YXRpYyBjb25zdCBjaGFyIElkZW50W10gPSBpZDsKICNlbHNlCi0jZGVmaW5lIE1PRFVMRV9JRChpZCkgLypub3RoaW5nKi8KKyNkZWZpbmUgTU9EVUxFX0lEKGlkKQkJLypub3RoaW5nICovCiAjZW5kaWYKIAotCiAvKiBNYXhpbXVtIHJlZ3VsYXIgOC1iaXQgY2hhcmFjdGVyIGNvZGUgKi8KICNkZWZpbmUgTUFYX1JFR1VMQVJfQ0hBUkFDVEVSICgweGZmKQogCkBAIC04MCwxNiArNzksMTkgQEAKICNlbmRpZgogCiAvKiBUaGUgZmV3IGNvbW1vbiB2YWx1ZXMgaW4gdGhlIHN0YXR1cyBmaWVsZHMgZm9yIG1lbnVzIGFuZCBmb3JtcyAqLwotI2RlZmluZSBfUE9TVEVEICAgICAgICAgKDB4MDFVKSAgLyogbWVudSBvciBmb3JtIGlzIHBvc3RlZCAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIF9JTl9EUklWRVIgICAgICAoMHgwMlUpICAvKiBtZW51IG9yIGZvcm0gaXMgcHJvY2Vzc2luZyBob29rIHJvdXRpbmUgKi8KKyNkZWZpbmUgX1BPU1RFRCAgICAgICAgICgweDAxVSkJLyogbWVudSBvciBmb3JtIGlzIHBvc3RlZCAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9JTl9EUklWRVIgICAgICAoMHgwMlUpCS8qIG1lbnUgb3IgZm9ybSBpcyBwcm9jZXNzaW5nIGhvb2sgcm91dGluZSAqLworCisjZGVmaW5lIFNldFN0YXR1cyh0YXJnZXQsbWFzaykgKHRhcmdldCktPnN0YXR1cyB8PSAodW5zaWduZWQgc2hvcnQpIChtYXNrKQorI2RlZmluZSBDbHJTdGF0dXModGFyZ2V0LG1hc2spICh0YXJnZXQpLT5zdGF0dXMgPSAodW5zaWduZWQgc2hvcnQpICh0YXJnZXQtPnN0YXR1cyAmICh+bWFzaykpCiAKIC8qIENhbGwgb2JqZWN0IGhvb2sgKi8KICNkZWZpbmUgQ2FsbF9Ib29rKCBvYmplY3QsIGhhbmRsZXIgKSBcCiAgICBpZiAoIChvYmplY3QpICE9IDAgJiYgKChvYmplY3QpLT5oYW5kbGVyKSAhPSAodm9pZCAqKSAwIClcCiAgICB7XAotCShvYmplY3QpLT5zdGF0dXMgfD0gX0lOX0RSSVZFUjtcCisJU2V0U3RhdHVzKG9iamVjdCwgX0lOX0RSSVZFUik7XAogCShvYmplY3QpLT5oYW5kbGVyKG9iamVjdCk7XAotCShvYmplY3QpLT5zdGF0dXMgJj0gfl9JTl9EUklWRVI7XAorCUNsclN0YXR1cyhvYmplY3QsIF9JTl9EUklWRVIpO1wKICAgIH0KIAogI2VuZGlmIC8qIE1GX0NPTU1PTl9IX2luY2wgKi8KZGlmZiAtLWdpdCBhL21lbnUvbW9kdWxlcyBiL21lbnUvbW9kdWxlcwppbmRleCBhYmM0Y2YwLi5mYWM4ZmNlIDEwMDY0NAotLS0gYS9tZW51L21vZHVsZXMKKysrIGIvbWVudS9tb2R1bGVzCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IG1vZHVsZXMsdiAxLjE3IDIwMDYvMTIvMjQgMDA6NTI6MzkgdG9tIEV4cCAkCisjICRJZDogbW9kdWxlcyx2IDEuMTggMjAxMC8wMS8yMyAxNjozNjoyMyB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTMyLDMyICszMiwzMiBAQAogCiBAIGJhc2UKICMgTGlicmFyeSBvYmplY3RzCi1tX2F0dHJpYnMJbGliCQkkKHNyY2RpcikJJChNRU5VX1BSSVZfSCkKLW1fY3Vyc29yCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2RyaXZlcglsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9mb3JtYXQJbGliCQkkKHNyY2RpcikJJChNRU5VX1BSSVZfSCkKLW1fZ2xvYmFsCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2hvb2sJCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fY3VyCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fbmFtCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fbmV3CWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fb3B0CWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fdG9wCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fdXNlCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fdmFsCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1fdmlzCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX2l0ZW1zCQlsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9uZXcJCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX29wdHMJCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX3BhZAkJbGliCQkkKHNyY2RpcikJJChNRU5VX1BSSVZfSCkKLW1fcGF0dGVybglsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9wb3N0CQlsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9yZXFfbmFtZQlsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9zY2FsZQkJbGliCQkkKHNyY2RpcikJJChNRU5VX1BSSVZfSCkKLW1fc3BhY2luZwlsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV9zdWIJCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX3RyYWNlCQlsaWIJCSQoc3JjZGlyKQkkKE1FTlVfUFJJVl9IKQotbV91c2VycHRyCWxpYgkJJChzcmNkaXIpCSQoTUVOVV9QUklWX0gpCi1tX3dpbgkJbGliCQkkKHNyY2RpcikJJChNRU5VX1BSSVZfSCkKK21fYXR0cmlicwlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorbV9jdXJzb3IJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21fZHJpdmVyCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX2Zvcm1hdAlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorbV9nbG9iYWwJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faG9vawkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV9jdXIJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV9uYW0JbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV9uZXcJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV9vcHQJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV90b3AJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV91c2UJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV92YWwJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbV92aXMJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21faXRlbXMJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX25ldwkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21fb3B0cwkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21fcGFkCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorbV9wYXR0ZXJuCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX3Bvc3QJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX3JlcV9uYW1lCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX3NjYWxlCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorbV9zcGFjaW5nCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX3N1YgkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21fdHJhY2UJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittX3VzZXJwdHIJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK21fd2luCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQogCiAjIHZpbGU6bWFrZW1vZGUKZGlmZiAtLWdpdCBhL21pc2MvTWFrZWZpbGUgYi9taXNjL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRlZTY3Li4wMDAwMDAwCi0tLSBhL21pc2MvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS40MyAyMDA3LzAzLzMxIDE1OjU0OjE3IHRvbSBFeHAgJAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCi0jIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKLSMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIwotIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCi0jIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKLSMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIwotIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIwotIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIwotIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCi0jIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKLSMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIwotIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCi0jIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKLSMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKLSMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIwotIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCi0jIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni1vbgotIwotIyBNYWtlZmlsZSBmb3IgbmN1cnNlcyBtaXNjZWxsYW55IGRpcmVjdG9yeQotIwotIyBUaGlzIG1ha2VzL2luc3RhbGxzIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZQotIwotIyBUaGUgdmFyaWFibGUgJ3NyY2RpcicgcmVmZXJzIHRvIHRoZSBzb3VyY2UtZGlzdHJpYnV0aW9uLCBhbmQgY2FuIGJlIHNldCB3aXRoCi0jIHRoZSBjb25maWd1cmUgc2NyaXB0IGJ5ICItLXNyY2Rpcj1ESVIiLgotIwotIyBUaGUgcnVsZXMgYXJlIG9yZ2FuaXplZCB0byBwcm9kdWNlIHRoZSBsaWJyYXJpZXMgZm9yIHRoZSBjb25maWd1cmVkIG1vZGVscywKLSMgYW5kIHRoZSBwcm9ncmFtcyB3aXRoIHRoZSBjb25maWd1cmVkIGRlZmF1bHQgbW9kZWwuCi0KLSMgdHVybiBvZmYgX2FsbF8gc3VmZml4IHJ1bGVzOyB3ZSdsbCBnZW5lcmF0ZSBvdXIgb3duCi0uU1VGRklYRVMgOgotCi1TSEVMTAkJPSAvYmluL3NoCi1USElTCQk9IE1ha2VmaWxlCi0KLUNGX01GTEFHUyAJPSAKLQotCi1ERVNURElSCQk9IAotdG9wX3NyY2Rpcgk9IC4uCi1zcmNkaXIJCT0gLgotcHJlZml4CQk9IC91c3IvbG9jYWwKLWV4ZWNfcHJlZml4CT0gJHtwcmVmaXh9Ci1iaW5kaXIJCT0gJHtleGVjX3ByZWZpeH0vYmluCi1saWJkaXIJCT0gJHtleGVjX3ByZWZpeH0vbGliCi1kYXRhZGlyCQk9ICR7cHJlZml4fS9zaGFyZQotCi1DQwkJPSBhZ2NjLnBsCi1IT1NUQ0MJCT0gZ2NjCi0KLXRhYnNldGRpcgk9ICQoZGF0YWRpcikvdGFic2V0Ci10aWNkaXIJCT0gL3Vzci9sb2NhbC9zaGFyZS90ZXJtaW5mbwotdGljZmlsZQkJPSAkKHRpY2RpcikuZGIKLXNvdXJjZQkJPSAke3RvcF9zcmNkaXJ9L21pc2MvdGVybWluZm8uc3JjCi0KLUlOU1RBTEwJCT0gL3Vzci9iaW4vaW5zdGFsbCAtYwotSU5TVEFMTF9QUk9HCT0gJHtJTlNUQUxMfQotSU5TVEFMTF9EQVRBCT0gJHtJTlNUQUxMfSAtbSA2NDQKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWFsbCA6CXRlcm1pbmZvLnRtcAotCi1kZXBlbmQgOgotCi1zb3VyY2VzIDoKLQotaW5zdGFsbCA6IGluc3RhbGwuZGF0YSBpbnN0YWxsLmxpYnMKLQotaW5zdGFsbC5kYXRhIDoJdGVybWluZm8udG1wIFwKLQkJJChERVNURElSKSQobGliZGlyKSBcCi0JCSQoREVTVERJUikkKGRhdGFkaXIpIFwKLQkJJChERVNURElSKSQodGFic2V0ZGlyKQotCURFU1RESVI9JHtERVNURElSfSBcCi0JcHJlZml4PSR7cHJlZml4fSBcCi0JZXhlY19wcmVmaXg9JHtleGVjX3ByZWZpeH0gXAotCWJpbmRpcj0ke2JpbmRpcn0gXAotCXRvcF9zcmNkaXI9JHt0b3Bfc3JjZGlyfSBcCi0Jc3JjZGlyPSR7c3JjZGlyfSBcCi0JZGF0YWRpcj0ke2RhdGFkaXJ9IFwKLQl0aWNkaXI9JHt0aWNkaXJ9IFwKLQlzb3VyY2U9dGVybWluZm8udG1wIFwKLQlUSElTX0NDPSIkKENDKSIgXAotCVRIQVRfQ0M9IiQoSE9TVENDKSIgXAotCSQoU0hFTEwpIC4vcnVuX3RpYy5zaAotCUBjZCAkKHNyY2RpcikvdGFic2V0ICYmIFwKLQkJJChTSEVMTCkgLWMgJ2ZvciBpIGluICogOyBkbyBcCi0JCQlpZiB0ZXN0IC1mICQkaSA7IHRoZW4gXAotCQkJZWNobyBpbnN0YWxsaW5nICQkaTsgXAotCQkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJCh0YWJzZXRkaXIpLyQkaTsgXAotCQkJZmk7IGRvbmUnCi0KLU5DVVJTRVNfQ09ORklHCT0gbmN1cnNlczUtY29uZmlnCi0KLWluc3RhbGwubGlicyA6ICQoREVTVERJUikkKGJpbmRpcikgbmN1cnNlcy1jb25maWcKLQkkKElOU1RBTExfUFJPRykgbmN1cnNlcy1jb25maWcgJChERVNURElSKSQoYmluZGlyKS8kKE5DVVJTRVNfQ09ORklHKQotCi10ZXJtaW5mby50bXAgOiBydW5fdGljLnNlZCAkKHNvdXJjZSkKLQllY2hvICcqKiBhZGp1c3RpbmcgdGFic2V0IHBhdGhzJwotCXNlZCAtZiBydW5fdGljLnNlZCAkKHNvdXJjZSkgPnRlcm1pbmZvLnRtcAotCi1ydW5fdGljLnNlZCA6Ci0JV0hJQ0hfWFRFUk09eHRlcm0tbmV3IFwKLQl0aWNkaXI9JHt0aWNkaXJ9IFwKLQkkKFNIRUxMKSAkKHNyY2RpcikvZ2VuX2VkaXQuc2ggPiRACi0KLSQoREVTVERJUikkKGJpbmRpcikgXAotJChERVNURElSKSQobGliZGlyKSBcCi0kKERFU1RESVIpJChkYXRhZGlyKSBcCi0kKERFU1RESVIpJCh0YWJzZXRkaXIpIDoKLQkkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21rZGlycy5zaCAkQAotCi11bmluc3RhbGwgOiB1bmluc3RhbGwuZGF0YSB1bmluc3RhbGwubGlicwotCi11bmluc3RhbGwuZGF0YSA6Ci0JLXRlc3QgLWQgJChERVNURElSKSQodGFic2V0ZGlyKSAmJiBybSAtcmYgJChERVNURElSKSQodGFic2V0ZGlyKQotCS10ZXN0IC1kICQoREVTVERJUikkKHRpY2RpcikgJiYgcm0gLXJmICQoREVTVERJUikkKHRpY2RpcikKLQktdGVzdCAtZiAkKERFU1RESVIpJCh0aWNmaWxlKSAmJiBybSAtZiAkKERFU1RESVIpJCh0aWNmaWxlKQotCi11bmluc3RhbGwubGlicyA6Ci0JLXJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJChOQ1VSU0VTX0NPTkZJRykKLQotdGFncyA6Ci0KLVRBR1MgOgotCi1tb3N0bHljbGVhbiA6Ci0JLXJtIC1mIHRlcm1pbmZvLnRtcAotCS1ybSAtZiBydW5fdGljLnNlZAotCS1ybSAtZiBjb3JlIHRhZ3MgVEFHUyAqfiAqLmJhayAqLmxuICouYXRhYyB0cmFjZQotCi1jbGVhbiA6OiBtb3N0bHljbGVhbgotCi1kaXN0Y2xlYW4gOiBjbGVhbgotCS1ybSAtZiBNYWtlZmlsZSBydW5fdGljLnNoIG5jdXJzZXMtY29uZmlnCi0KLXJlYWxjbGVhbiA6IGRpc3RjbGVhbgotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGR1cmluZyBjb25maWd1cmF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9taXNjL01ha2VmaWxlLmluIGIvbWlzYy9NYWtlZmlsZS5pbgppbmRleCA0Y2IzOWIwLi5hNjJlYjMzIDEwMDY0NAotLS0gYS9taXNjL01ha2VmaWxlLmluCisrKyBiL21pc2MvTWFrZWZpbGUuaW4KQEAgLTEsNiArMSw2IEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjQzIDIwMDcvMDMvMzEgMTU6NTQ6MTcgdG9tIEV4cCAkCisjICRJZDogTWFrZWZpbGUuaW4sdiAxLjYzIDIwMTUvMDgvMDUgMjM6MTU6NDEgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC00Miw3ICs0Miw4IEBACiAjIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgogLlNVRkZJWEVTIDoKIAotU0hFTEwJCT0gL2Jpbi9zaAorU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKIFRISVMJCT0gTWFrZWZpbGUKIAogQ0ZfTUZMQUdTIAk9IEBjZl9jdl9tYWtlZmxhZ3NACkBAIC01NSwxMCArNTYsMTEgQEAKIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAogYmluZGlyCQk9IEBiaW5kaXJACiBsaWJkaXIJCT0gQGxpYmRpckAKK2RhdGFyb290ZGlyCT0gQGRhdGFyb290ZGlyQAogZGF0YWRpcgkJPSBAZGF0YWRpckAKK2luY2x1ZGVzdWJkaXIJPSBAaW5jbHVkZXN1YmRpckAKIAotQ0MJCT0gQENDQAotSE9TVENDCQk9IEBCVUlMRF9DQ0AKK0lOQ0xVREVESVIJPSAkKERFU1RESVIpJChpbmNsdWRlZGlyKSQoaW5jbHVkZXN1YmRpcikKIAogdGFic2V0ZGlyCT0gJChkYXRhZGlyKS90YWJzZXQKIHRpY2RpcgkJPSBAVEVSTUlORk9ACkBAIC02NiwxNyArNjgsMjAgQEAKIHNvdXJjZQkJPSBAVEVSTUlORk9fU1JDQAogCiBJTlNUQUxMCQk9IEBJTlNUQUxMQAotSU5TVEFMTF9QUk9HCT0gQElOU1RBTExfUFJPR1JBTUAKK0lOU1RBTExfUFJPR1JBTQk9IEBJTlNUQUxMX1BST0dSQU1ACitJTlNUQUxMX1NDUklQVAk9IEBJTlNUQUxMX1NDUklQVEAKIElOU1RBTExfREFUQQk9IEBJTlNUQUxMX0RBVEFACiAKK1BLR19DT05GSUdfTElCRElSID0gQFBLR19DT05GSUdfTElCRElSQAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogYWxsIDoJdGVybWluZm8udG1wCiAKIGRlcGVuZCA6CiAKLXNvdXJjZXMgOgorc291cmNlcyA6OiB0ZXJtaW5mby50bXAgCiAKLWluc3RhbGwgOiBpbnN0YWxsLmRhdGEgaW5zdGFsbC5saWJzCitpbnN0YWxsIDogQE1JU0NfSU5TVEFMTF9EQVRBQCBpbnN0YWxsLmxpYnMKIAogaW5zdGFsbC5kYXRhIDoJdGVybWluZm8udG1wIFwKIAkJJChERVNURElSKSQobGliZGlyKSBcCkBAIC05MSw4ICs5Niw3IEBACiAJZGF0YWRpcj0ke2RhdGFkaXJ9IFwKIAl0aWNkaXI9JHt0aWNkaXJ9IFwKIAlzb3VyY2U9dGVybWluZm8udG1wIFwKLQlUSElTX0NDPSIkKENDKSIgXAotCVRIQVRfQ0M9IiQoSE9TVENDKSIgXAorCWNyb3NzX2NvbXBpbGluZz1AY3Jvc3NfY29tcGlsaW5nQCBcCiAJJChTSEVMTCkgLi9ydW5fdGljLnNoCiAJQGNkICQoc3JjZGlyKS90YWJzZXQgJiYgXAogCQkkKFNIRUxMKSAtYyAnZm9yIGkgaW4gKiA7IGRvIFwKQEAgLTEwMyw4ICsxMDcsMTYgQEAKIAogTkNVUlNFU19DT05GSUcJPSBuY3Vyc2VzQERGVF9BUkdfU1VGRklYQEBjZl9jdl9hYmlfdmVyc2lvbkAtY29uZmlnCiAKLWluc3RhbGwubGlicyA6ICQoREVTVERJUikkKGJpbmRpcikgbmN1cnNlcy1jb25maWcKLQkkKElOU1RBTExfUFJPRykgbmN1cnNlcy1jb25maWcgJChERVNURElSKSQoYmluZGlyKS8kKE5DVVJTRVNfQ09ORklHKQoraW5zdGFsbC5saWJzIDo6ICQoREVTVERJUikkKGJpbmRpcikgbmN1cnNlcy1jb25maWcKKwkkKElOU1RBTExfU0NSSVBUKSBuY3Vyc2VzLWNvbmZpZyAkKERFU1RESVIpJChiaW5kaXIpLyQoTkNVUlNFU19DT05GSUcpCisKK0BNQUtFX1BDX0ZJTEVTQGluc3RhbGwubGlicyA6OiBwYy1maWxlcyAkKERFU1RESVIpJChQS0dfQ09ORklHX0xJQkRJUikKK0BNQUtFX1BDX0ZJTEVTQAkkKFNIRUxMKSAtYyAnZm9yIG5hbWUgaW4gKi5wYzsgZG8gJChJTlNUQUxMX0RBVEEpICQkbmFtZSAkKERFU1RESVIpJChQS0dfQ09ORklHX0xJQkRJUikvJCRuYW1lOyBkb25lJworCitATUFLRV9QQ19GSUxFU0Bzb3VyY2VzIDo6IHBjLWZpbGVzCitATUFLRV9QQ19GSUxFU0BwYy1maWxlcyA6CitATUFLRV9QQ19GSUxFU0AJJChTSEVMTCkgLi9nZW4tcGtnY29uZmlnCitATUFLRV9QQ19GSUxFU0AJdG91Y2ggJEAKIAogdGVybWluZm8udG1wIDogcnVuX3RpYy5zZWQgJChzb3VyY2UpCiAJZWNobyAnKiogYWRqdXN0aW5nIHRhYnNldCBwYXRocycKQEAgLTExMiwxNiArMTI0LDE4IEBACiAKIHJ1bl90aWMuc2VkIDoKIAlXSElDSF9YVEVSTT1AV0hJQ0hfWFRFUk1AIFwKLQl0aWNkaXI9JHt0aWNkaXJ9IFwKKwlYVEVSTV9LQlM9QFhURVJNX0tCU0AgXAorCWRhdGFkaXI9JHtkYXRhZGlyfSBcCiAJJChTSEVMTCkgJChzcmNkaXIpL2dlbl9lZGl0LnNoID4kQAogCiAkKERFU1RESVIpJChiaW5kaXIpIFwKICQoREVTVERJUikkKGxpYmRpcikgXAogJChERVNURElSKSQoZGF0YWRpcikgXAotJChERVNURElSKSQodGFic2V0ZGlyKSA6Ci0JJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2RpcnMuc2ggJEAKKyQoREVTVERJUikkKHRhYnNldGRpcikgXAorJChERVNURElSKSQoUEtHX0NPTkZJR19MSUJESVIpIDoKKwlta2RpciAtcCAkQAogCi11bmluc3RhbGwgOiB1bmluc3RhbGwuZGF0YSB1bmluc3RhbGwubGlicwordW5pbnN0YWxsIDogQE1JU0NfVU5JTlNUQUxMX0RBVEFAIHVuaW5zdGFsbC5saWJzCiAKIHVuaW5zdGFsbC5kYXRhIDoKIAktdGVzdCAtZCAkKERFU1RESVIpJCh0YWJzZXRkaXIpICYmIHJtIC1yZiAkKERFU1RESVIpJCh0YWJzZXRkaXIpCkBAIC0xMzAsNiArMTQ0LDcgQEAKIAogdW5pbnN0YWxsLmxpYnMgOgogCS1ybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoTkNVUlNFU19DT05GSUcpCitATUFLRV9QQ19GSUxFU0AJJChTSEVMTCkgLWMgJ2ZvciBuYW1lIGluICoucGM7IGRvIHJtIC1mICQoREVTVERJUikkKFBLR19DT05GSUdfTElCRElSKS8kJG5hbWU7IGRvbmUnCiAKIHRhZ3MgOgogCkBAIC0xMzgsMTEgKzE1MywxMyBAQAogbW9zdGx5Y2xlYW4gOgogCS1ybSAtZiB0ZXJtaW5mby50bXAKIAktcm0gLWYgcnVuX3RpYy5zZWQKK0BNQUtFX1BDX0ZJTEVTQAktcm0gLWYgKi5wYyBwYy1maWxlcwogCS1ybSAtZiBjb3JlIHRhZ3MgVEFHUyAqfiAqLmJhayAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgogCiBkaXN0Y2xlYW4gOiBjbGVhbgorQE1BS0VfUENfRklMRVNACS1ybSAtZiBnZW4tcGtnY29uZmlnCiAJLXJtIC1mIE1ha2VmaWxlIHJ1bl90aWMuc2ggbmN1cnNlcy1jb25maWcKIAogcmVhbGNsZWFuIDogZGlzdGNsZWFuCmRpZmYgLS1naXQgYS9taXNjL2dlbi1wa2djb25maWcuaW4gYi9taXNjL2dlbi1wa2djb25maWcuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkMDlmZgotLS0gL2Rldi9udWxsCisrKyBiL21pc2MvZ2VuLXBrZ2NvbmZpZy5pbgpAQCAtMCwwICsxLDE2MCBAQAorIyFAU0hFTExACisjICRJZDogZ2VuLXBrZ2NvbmZpZy5pbix2IDEuMjkgMjAxNS8wNy8wNCAyMDozNzowMSB0b20gRXhwICQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5CisjCisjIFRoZSBjb21wbGV0ZSBjb25maWd1cmUgc2NyaXB0IGZvciBuY3Vyc2VzIGlzIHRoZSBuY3Vyc2VzNS1jb25maWcgKG9yIHNpbWlsYXIKKyMgbmFtZSwgZGVwZW5kaW5nIG9uIHRoZSBmbGF2b3IsIGUuZy4sIG5jdXJzZXN3NS1jb25maWcsIG5jdXJzZXM2LWNvbmZpZywgZXRjKS4KKyMgVGhhdCBwcm92aWRlcyBtb3JlIGluZm9ybWF0aW9uIHRoYW4gcGtnLWNvbmZpZywgYW5kIGlzIHRoZSBwb3J0YWJsZSBhbmQKKyMgcmVjb21tZW5kZWQgc29sdXRpb24uCisjCisjIEZvciBlYWNoIGxpYnJhcnksIGdlbmVyYXRlIGEgIi5wYyIgZmlsZSB3aGljaCBkZXBlbmRzIG9uIHRoZSBiYXNlIG5jdXJzZXMKKyMgbGlicmFyeSwgZXhjZXB0IHRoYXQgdGhlIHRpbmZvIGxpYnJhcnkgZG9lcyBub3QgZGVwZW5kIG9uIG5jdXJzZXMuCitMSUJfTkFNRT1ATElCX05BTUVACitUSU5GT19OQU1FPUBUSU5GT19OQU1FQAorUEFORUxfTkFNRT1AUEFORUxfTkFNRUAKK01FTlVfTkFNRT1ATUVOVV9OQU1FQAorRk9STV9OQU1FPUBGT1JNX05BTUVACitDWFhfTkFNRT1AQ1hYX05BTUVACitERlRfREVQX1NVRkZJWD1AREZUX0RFUF9TVUZGSVhACitUSU5GT19BUkdfU1VGRklYPUBUSU5GT19BUkdfU1VGRklYQAorQ1hYX0xJQl9TVUZGSVg9QENYWF9MSUJfU1VGRklYQAorCitzdWZmaXg9QFBDX01PRFVMRV9TVUZGSVhACitwcmVmaXg9IkBwcmVmaXhAIgorZXhlY19wcmVmaXg9IkBleGVjX3ByZWZpeEAiCitpbmNsdWRlZGlyPSJAaW5jbHVkZWRpckBAaW5jbHVkZXN1YmRpckAiCitsaWJkaXI9IkBsaWJkaXJAIgorCitzaG93X3ByZWZpeD0nQHByZWZpeEAnCitzaG93X2V4ZWNfcHJlZml4PSdAZXhlY19wcmVmaXhAJworc2hvd19pbmNsdWRlZGlyPSdAaW5jbHVkZWRpckBAaW5jbHVkZXN1YmRpckAnCitzaG93X2xpYmRpcj0nQGxpYmRpckAnCisKK01BSU5fTElCUkFSWT0iJHtMSUJfTkFNRX1AVVNFX0FSR19TVUZGSVhAIgorU1VCX0xJQlJBUlk9IiR7VElORk9fQVJHX1NVRkZJWH0iCitQQU5FTF9MSUJSQVJZPSIke1BBTkVMX05BTUV9QFVTRV9BUkdfU1VGRklYQCIKK01FTlVfTElCUkFSWT0iJHtNRU5VX05BTUV9QFVTRV9BUkdfU1VGRklYQCIKK0ZPUk1fTElCUkFSWT0iJHtGT1JNX05BTUV9QFVTRV9BUkdfU1VGRklYQCIKKworQ0ZMQUdTPSJAUEtHX0NGTEFHU0AiCitpZiB0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgOyB0aGVuCisJaW5jbHVkZXRvcD1gZWNobyAiJGluY2x1ZGVkaXIiIHwgc2VkIC1lICdzLC9pbmNsdWRlL1teL10qJCwvaW5jbHVkZSwnYAorCXRlc3QgIiRpbmNsdWRldG9wIiA9ICIvdXNyL2luY2x1ZGUiICYmIGluY2x1ZGV0b3A9IiRpbmNsdWRlZGlyIgorCWlmIHRlc3QgIngkaW5jbHVkZXRvcCIgIT0gIngkaW5jbHVkZWRpciIKKwl0aGVuCisJCUNGTEFHUz0iJENGTEFHUyAtSSR7aW5jbHVkZXRvcH0iCisJZmkKKwlDRkxBR1M9IiRDRkxBR1MgLUlcJHtpbmNsdWRlZGlyfSIKK2ZpCisKK0xERkxBR1M9CitpZiB0ZXN0ICIkbGliZGlyIiAhPSAiL3Vzci9saWIiIDsgdGhlbgorCUxERkxBR1M9IiRMREZMQUdTIC1MXCR7bGliZGlyfSIKK2ZpCitpZiB0ZXN0ICJ4QEVYVFJBX0xERkxBR1NAIiAhPSAieCIgOyB0aGVuCisJTERGTEFHUz0iJExERkxBR1MgQEVYVFJBX0xERkxBR1NAIgorZmkKKworIyBDaGVjayBpZiB3ZSBzaG91bGQgc3BlY2lmeSB0aGUgdGluZm8gbGlicmFyeSBleHBsaWNpdGx5IHNvIHRoYXQgdGVybWluZm8KKyMgZnVuY3Rpb25zIG9yIGN1cnNlcyB2YXJpYWJsZXMgKHdoaWNoIGFsc28gcmVzaWRlIGluIHRpbmZvKSBjYW4gYmUgbGlua2VkCisjIHVzaW5nIHRoZSAtbG5jdXJzZXMgb3B0aW9uLgorTkVFRF9USU5GTz1ubworaWYgdGVzdCAieEBUSU5GT19MSUJTQCIgIT0gIngiICYmIFwKKyAgIHRlc3QgIngkVElORk9fQVJHX1NVRkZJWCIgIT0gIngkTUFJTl9MSUJSQVJZIgordGhlbgorCWNhc2UgIngkTERGTEFHUyIgaW4KKwkoKi0tYXMtbmVlZGVkKikKKwkJTkVFRF9USU5GTz15ZXMKKwkJOzsKKwllc2FjCisJY2FzZSAieCRMREZMQUdTIiBpbgorCSgqLC1ycGF0aCwqKQorCQk7OworCSgqKQorCQlORUVEX1RJTkZPPXllcworCQk7OworCWVzYWMKK2ZpCisKK2ZvciBuYW1lIGluIEBQQ19NT0RVTEVTX1RPX01BS0VACitkbworCW5hbWU9IiR7bmFtZX0iCisJTElCUz0iLWwkbmFtZSIKKworCWRlc2M9Im5jdXJzZXMgQE5DVVJTRVNfTUFKT1JALkBOQ1VSU0VTX01JTk9SQCIKKwlyZXFzPQorCisJaWYgdGVzdCAkbmFtZSA9ICRNQUlOX0xJQlJBUlkgOyB0aGVuCisJCWRlc2M9IiRkZXNjIGxpYnJhcnkiCisJCXRlc3QgJE5FRURfVElORk8gPSB5ZXMgJiYgTElCUz0iJExJQlMgLWwkVElORk9fQVJHX1NVRkZJWCIKKwllbGlmIHRlc3QgJG5hbWUgPSAkU1VCX0xJQlJBUlkgOyB0aGVuCisJCWRlc2M9IiRkZXNjIHRlcm1pbmFsIGludGVyZmFjZSBsaWJyYXJ5IgorCWVsaWYgZXhwciAkbmFtZSA6ICIuKiR7Q1hYX05BTUV9LioiID4vZGV2L251bGwgOyB0aGVuCisJCXJlcXM9IiRQQU5FTF9MSUJSQVJZJHtzdWZmaXh9LCAkTUVOVV9MSUJSQVJZJHtzdWZmaXh9LCAkRk9STV9MSUJSQVJZJHtzdWZmaXh9LCAkTUFJTl9MSUJSQVJZJHtzdWZmaXh9IgorCQlkZXNjPSIkZGVzYyBhZGQtb24gbGlicmFyeSIKKwllbHNlCisJCXJlcXM9IiRNQUlOX0xJQlJBUlkke3N1ZmZpeH0iCisJCWRlc2M9IiRkZXNjIGFkZC1vbiBsaWJyYXJ5IgorCWZpCisKKwlpZiB0ZXN0ICRuYW1lICE9ICRTVUJfTElCUkFSWSAmJiBcCisJICAgdGVzdCAkU1VCX0xJQlJBUlkgIT0gJE1BSU5fTElCUkFSWSAmJiBcCisJICAgdGVzdCAkbmFtZSAhPSAkVElORk9fTkFNRSAmJiBcCisJICAgdGVzdCAkTkVFRF9USU5GTyAhPSB5ZXMgOyB0aGVuCisJCXRlc3QgLW4gIiRyZXFzIiAmJiByZXFzPSIkcmVxcywgIgorCQlyZXFzPSIke3JlcXN9JHtTVUJfTElCUkFSWX0ke3N1ZmZpeH0iCisJZmkKKworCWVjaG8gIioqIGNyZWF0aW5nICR7bmFtZX0ke3N1ZmZpeH0ucGMiCisJY2F0ID4ke25hbWV9JHtzdWZmaXh9LnBjIDw8RU9GCisjIHBrZy1jb25maWcgZmlsZSBnZW5lcmF0ZWQgYnkgYGJhc2VuYW1lICQwYAorIyB2aWxlOm1ha2Vtb2RlCisKK3ByZWZpeD0kc2hvd19wcmVmaXgKK2V4ZWNfcHJlZml4PSRzaG93X2V4ZWNfcHJlZml4CitsaWJkaXI9JHNob3dfbGliZGlyCitpbmNsdWRlZGlyPSRzaG93X2luY2x1ZGVkaXIKK2FiaV92ZXJzaW9uPUBjZl9jdl9hYmlfdmVyc2lvbkAKK21ham9yX3ZlcnNpb249QE5DVVJTRVNfTUFKT1JACit2ZXJzaW9uPUBOQ1VSU0VTX01BSk9SQC5ATkNVUlNFU19NSU5PUkAuQE5DVVJTRVNfUEFUQ0hACisKK05hbWU6ICR7bmFtZX0ke3N1ZmZpeH0KK0Rlc2NyaXB0aW9uOiAkZGVzYworVmVyc2lvbjogXCR7dmVyc2lvbn0KK1VSTDogaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMKK1JlcXVpcmVzLnByaXZhdGU6ICRyZXFzCitMaWJzOiAkTERGTEFHUyAkTElCUworTGlicy5wcml2YXRlOiBATElCU0AKK0NmbGFnczogJENGTEFHUworRU9GCisKK2RvbmUKKyMgdmlsZTpzaG1vZGUKZGlmZiAtLWdpdCBhL21pc2MvZ2VuX2VkaXQuc2ggYi9taXNjL2dlbl9lZGl0LnNoCmluZGV4IGYwYWE3MmEuLjM0NjBhZmMgMTAwNzU1Ci0tLSBhL21pc2MvZ2VuX2VkaXQuc2gKKysrIGIvbWlzYy9nZW5fZWRpdC5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjksNyArMjksNyBAQAogIwogIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKICMKLSMgJElkOiBnZW5fZWRpdC5zaCx2IDEuMSAyMDA0LzA3LzExIDE1OjAxOjI5IHRvbSBFeHAgJAorIyAkSWQ6IGdlbl9lZGl0LnNoLHYgMS41IDIwMTIvMDQvMDEgMTU6MDQ6MzcgdG9tIEV4cCAkCiAjIEdlbmVyYXRlIGEgc2VkLXNjcmlwdCBmb3IgY29udmVydGluZyB0aGUgdGVybWluZm8uc3JjIHRvIHRoZSBmb3JtIHdoaWNoIHdpbGwKICMgYmUgaW5zdGFsbGVkLgogIwpAQCAtMzcsMjIgKzM3LDgyIEBACiAjCVRoZSBsZWFmIGRpcmVjdG9yeSBuYW1lcyAobGliLCB0YWJzZXQsIHRlcm1pbmZvKQogIwogCi06ICR7dGljZGlyPUBURVJNSU5GT0B9Ci06ICR7eHRlcm1fbmV3PUBXSElDSF9YVEVSTUB9CitsaW51eF9kZnQ9bGludXgyLjIKKworOiAke2RhdGFkaXI9L3Vzci9zaGFyZX0KKzogJHtXSElDSF9MSU5VWD0kbGludXhfZGZ0fQorOiAke1dISUNIX1hURVJNPXh0ZXJtLW5ld30KKzogJHtYVEVSTV9LQlM9QlN9CiAKICMgSWYgd2UncmUgbm90IGluc3RhbGxpbmcgaW50byAvdXNyL3NoYXJlLywgd2UnbGwgaGF2ZSB0byBhZGp1c3QgdGhlIGxvY2F0aW9uCiAjIG9mIHRoZSB0YWJzZXQgZmlsZXMgaW4gdGVybWluZm8uc3JjICh3aGljaCBhcmUgaW4gYSBwYXJhbGxlbCBkaXJlY3RvcnkpLgotVEFCU0VUPWBlY2hvICR0aWNkaXIgfCBzZWQgLWUgJ3MlL3Rlcm1pbmZvJCUvdGFic2V0JSdgCitUQUJTRVQ9JHtkYXRhZGlyfS90YWJzZXQKIGlmIHRlc3QgIngkVEFCU0VUIiAhPSAieC91c3Ivc2hhcmUvdGFic2V0IiA7IHRoZW4KIGNhdCA8PEVPRgogcyUvdXNyL3NoYXJlL3RhYnNldCUkVEFCU0VUJWcKIEVPRgogZmkKIAotaWYgdGVzdCAiJHh0ZXJtX25ldyIgIT0gInh0ZXJtLW5ldyIgOyB0aGVuCitpZiB0ZXN0ICIkV0hJQ0hfWFRFUk0iICE9ICJ4dGVybS1uZXciIDsgdGhlbgorZWNobyAiKiogdXNpbmcgJFdISUNIX1hURVJNIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZvciBYVGVybSBlbnRyeSIgPiYyCiBjYXQgPDxFT0YKIC9eIyBUaGlzIGlzIHh0ZXJtIGZvciBuY3Vyc2VzLywvXiQvewogCXMvdXNlPXh0ZXJtLW5ldywvdXNlPSRXSElDSF9YVEVSTSwvCiB9CiBFT0YKIGZpCisKK2lmIHRlc3QgIiRYVEVSTV9LQlMiICE9ICJCUyIgOyB0aGVuCitlY2hvICIqKiB1c2luZyBERUwgZm9yIFhUZXJtIGJhY2tzcGFjZS1rZXkiID4mMgorY2F0IDw8RU9GCisvXnh0ZXJtK2tic3xmcmFnbWVudCBmb3IgYmFja3NwYWNlIGtleS8sL14jL3sKKwlzL2ticz1eSCwva2JzPV4/LC8KK30KK0VPRgorZmkKKworIyBXb3JrIGFyb3VuZCBpbmNvbXBhdGliaXRpZXMgYnVpbHQgaW50byBMaW51eCBjb25zb2xlLiAgVGhlIDIuNiBzZXJpZXMgYWRkZWQKKyMgYSBwYXRjaCB0byBmaXh1cCB0aGUgU0kvU08gYmVoYXZpb3IsIHdoaWNoIGlzIGNsb3NlciB0byB2dDEwMCwgYnV0IHRoZSBvbGRlcgorIyBrZXJuZWxzIGRvIG5vdCByZWNvZ25pemUgdGhvc2UgY29udHJvbHMuICBBbGwgb2YgdGhlIGtlcm5lbHMgcmVjb2duaXplIHRoZQorIyBvbGRlciBmbGF2b3Igb2Ygcm1hY3Mvc21hY3MsIGJ1dCBiZWdpbm5pbmcgaW4gdGhlIGxhdGUgMTk5MHMsIGNoYW5nZXMgbWFkZQorIyBhcyBwYXJ0IG9mIGltcGxlbWVudGluZyBVVEYtOCBwcmV2ZW50IHVzaW5nIHRob3NlIGZvciBsaW5lLWRyYXdpbmcgd2hlbiB0aGUKKyMgY29uc29sZSBpcyBpbiBVVEYtOCBtb2RlLiAgVGFraW5nIGludG8gYWNjb3VudCB0aGUgZmFjdCB0aGF0IGl0IHRvb2sgYWJvdXQKKyMgdGVuIHllYXJzIHRvIHByb3ZpZGUgKGFuZCBkaXN0cmlidXRlKSB0aGUgMi42IHNlcmllcycgY2hhbmdlIGZvciBTSS9TTywgdGhlCisjIGRlZmF1bHQgcmVtYWlucyAibGludXgyLjIiLgorY2FzZSB4JFdISUNIX0xJTlVYIGluICModmkKK3hhdXRvKQorCXN5c3RlbT1gdW5hbWUgLXMgMj4vZGV2L251bGxgCisJaWYgdGVzdCAieCRzeXN0ZW0iID0geExpbnV4CisJdGhlbgorCQljYXNlIHhgdW5hbWUgLXJgIGluCisJCXgxLiopCisJCQlXSElDSF9MSU5VWD1saW51eC1jCisJCQk7OworCQl4Mi5bMC00XSopCisJCQlXSElDSF9MSU5VWD1saW51eDIuMgorCQkJOzsKKwkJKikKKwkJCVdISUNIX0xJTlVYPWxpbnV4My4wCisJCQk7OworCQllc2FjCisJZWxzZQorCQlXSElDSF9MSU5VWD0kbGludXhfZGZ0CisJZmkKKwk7OworeGxpbnV4KikKKwkjIGFsbG93IHNwZWNpZmljIHNldHRpbmcKKwk7OworKikKKwlXSElDSF9MSU5VWD0kbGludXhfZGZ0CisJOzsKK2VzYWMKKworaWYgdGVzdCAkV0hJQ0hfTElOVVggIT0gJGxpbnV4X2RmdAordGhlbgorZWNobyAiKiogdXNpbmcgJFdISUNIX0xJTlVYIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZvciBMaW51eCBjb25zb2xlIiA+JjIKK2NhdCA8PEVPRgorL14jIFRoaXMgaXMgTGludXggY29uc29sZSBmb3IgbmN1cnNlcy8sL14kL3sKKwlzL3VzZT0kbGludXhfZGZ0LC91c2U9JFdISUNIX0xJTlVYLC8KK30KK0VPRgorZmkKZGlmZiAtLWdpdCBhL21pc2MvanBmLWluZGVudCBiL21pc2MvanBmLWluZGVudApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2RkODI1Yy4uMDAwMDAwMAotLS0gYS9taXNjL2pwZi1pbmRlbnQKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotIyEvYmluL3NoCi0jKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDUsMjAwNiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotIyogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSMqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0jKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotIyogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSMqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0jKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0jKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0jKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotIyogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSMqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0jKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotIyogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSMqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSMqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0jKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotIyogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIyAkSWQ6IGpwZi1pbmRlbnQsdiAxLjYgMjAwNi8wMi8xOCAxNzowNzoxNSB0b20gRXhwICQKLSMgaW5kZW50IG5jdXJzZXMgc291cmNlIHdyaXR0ZW4gYnkgSnVlcmdlbiBQZmVpZmVyCi1OT09QPW5vCi1PUFRTPScKLS1ucHJvCi0tLWJsYW5rLWxpbmVzLWFmdGVyLWRlY2xhcmF0aW9ucwotLS1ibGFuay1saW5lcy1hZnRlci1wcm9jZWR1cmVzCi0tLWJyYWNlLWluZGVudDIKLS0tYnJhY2VzLWFmdGVyLWlmLWxpbmUKLS0tY29udGludWUtYXQtcGFyZW50aGVzZXMKLS0taW5kZW50LWxldmVsMgotLS1saW5lLWxlbmd0aDgwCi0tLW5vLXNwYWNlLWFmdGVyLWNhc3RzCi0tLW5vLXNwYWNlLWFmdGVyLWZ1bmN0aW9uLWNhbGwtbmFtZXMKLS0tcGFyYW1ldGVyLWluZGVudGF0aW9uNAotLS1zd2FsbG93LW9wdGlvbmFsLWJsYW5rLWxpbmVzCi0tLXRhYi1zaXplOAotCi0tVCBGSUVMRAotLVQgRklFTERUWVBFCi0tVCBGSUVMRF9DRUxMCi0tVCBGT1JNCi0tVCBOQ1VSU0VTX0lOTElORQotLVQgUmVnRXhwX0FyZyAKLS1UIFR5cGVBcmd1bWVudCAKLS1UIFdJTkRPVwotLVQgYXR0cl90Ci0tVCBib29sCi0tVCBjY2hhcl90Ci0tVCBjaHR5cGUKLS1UIGVudW1BUkcKLS1UIHZhX2xpc3QKLS1UIHdjaGFyX3QgCi0nCi1mb3IgbmFtZSBpbiAkKgotZG8KLQljYXNlICRuYW1lIGluCi0JLXZ8LW4pCi0JCU5PT1A9eWVzCi0JCU9QVFM9IiRPUFRTIC12IgotCQk7OwotCS0qKQotCQlPUFRTPSIkT1BUUyAkbmFtZSIKLQkJOzsKLQkqLltjaF0pCi0JCXNhdmU9IiR7bmFtZX0iLmEkJAotCQl0ZXN0PSIke25hbWV9Ii5iJCQKLQkJcm0gLWYgIiRzYXZlIiAiJHRlc3QiCi0JCW12ICIkbmFtZSIgIiRzYXZlIgotCQlzZWQgXAotCQkJLWUgJy9NT0RVTEVfSUQoL3MvKSQvKTsvJyBcCi0JCQktZSAncyxcPEdDQ19OT1JFVFVSTjssOy8vR0NDX05PUkVUVVJOOywnIFwKLQkJCS1lICdzLFw8R0NDX1BSSU5URkxJS0UoLDsvL0dDQ19QUklOVEZMSUtFKCwnIFwKLQkJCS1lICdzLFw8R0NDX1NDQU5GTElLRSgsOy8vR0NDX1NDQU5GTElLRSgsJyBcCi0JCQktZSAncyxcKFw8TkNVUlNFU19FWFBPUlRfVkFSXD5cKSwvL1wxLCcgXAotCQkJIiRzYXZlIiA+IiR0ZXN0IgotCQljcCAiJHRlc3QiICIkbmFtZSIKLQkJY2htb2QgdSt3ICIkbmFtZSIKLQkJIyAke0lOREVOVF9QUk9HLWluZGVudH0gLS12ZXJzaW9uCi0JCSR7SU5ERU5UX1BST0ctaW5kZW50fSAtbnBybyAkT1BUUyAiJG5hbWUiCi0JCXNlZCBcCi0JCQktZSAnL01PRFVMRV9JRCgvcy8pOyQvKS8nIFwKLQkJCS1lICdzLDtbIAldKi8vR0NDX05PUkVUVVJOOywgR0NDX05PUkVUVVJOOywnIFwKLQkJCS1lICdzLDtbIAldKi8vR0NDX1BSSU5URkxJS0UoLCBHQ0NfUFJJTlRGTElLRSgsJyBcCi0JCQktZSAncyw7WyAJXSovL0dDQ19TQ0FORkxJS0UoLCBHQ0NfU0NBTkZMSUtFKCwnIFwKLQkJCS1lICdzLC8vXChcPE5DVVJTRVNfRVhQT1JUX1ZBUlw+XCksXDEsJyBcCi0JCQkiJG5hbWUiID4iJHRlc3QiCi0JCW12ICIkdGVzdCIgIiRuYW1lIgotCQlybSAtZiAiJHtuYW1lfX4iCi0JCWlmIHRlc3QgJE5PT1AgPSB5ZXMgOyB0aGVuCi0JCQlpZiAoY21wIC1zICIkbmFtZSIgIiRzYXZlIiApIHRoZW4KLQkJCQllY2hvICIqKiBubyBjaGFuZ2U6ICRuYW1lIgotCQkJZWxzZQotCQkJCWRpZmYgLXUgIiRzYXZlIiAiJG5hbWUiCi0JCQlmaQotCQkJcm0gLWYgIiRuYW1lIgotCQkJbXYgIiRzYXZlIiAiJG5hbWUiCi0JCWVsaWYgKCBjbXAgLXMgIiRuYW1lIiAiJHNhdmUiICkgOyB0aGVuCi0JCQllY2hvICIqKiB1bmNoYW5nZWQgJG5hbWUiCi0JCQlybSAtZiAiJHtuYW1lfSIKLQkJCW12ICIkc2F2ZSIgIiRuYW1lIgotCQllbHNlCi0JCQllY2hvICIqKiB1cGRhdGVkICRuYW1lIgotCQkJcm0gLWYgIiRzYXZlIgotCQlmaQotCQk7OwotCSopCi0JCWVjaG8gIioqIGlnbm9yZWQ6ICAgJG5hbWUiCi0JCTs7Ci0JZXNhYwotZG9uZQpkaWZmIC0tZ2l0IGEvbWlzYy9tYWdpYyBiL21pc2MvbWFnaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyMGY0MwotLS0gL2Rldi9udWxsCisrKyBiL21pc2MvbWFnaWMKQEAgLTAsMCArMSwzMiBAQAorIyAkSWQ6IG1hZ2ljLHYgMS4xIDIwMTUvMDUvMDIgMTg6NDk6MzggdG9tIEV4cCAkCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGZvciByZWZlcmVuY2UsIGZyb20gZmlsZSA1LjIyOgorMAlzdHJpbmcJCVwwMzJcMDAxCUNvbXBpbGVkIHRlcm1pbmZvIGVudHJ5CisjIG5jdXJzZXMtc3BlY2lmaWMKKzAgICAgICAgc3RyaW5nICAgICAgICAgIFwyMTBcMjEwICAgICAgICBTY3JlZW4tZHVtcCAobmN1cnNlcykKZGlmZiAtLWdpdCBhL21pc2MvbmN1LWluZGVudCBiL21pc2MvbmN1LWluZGVudApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODYyYTEwOC4uMDAwMDAwMAotLS0gYS9taXNjL25jdS1pbmRlbnQKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotIyEvYmluL3NoCi0jKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDYsMjAwOCBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotIyogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSMqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0jKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotIyogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSMqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0jKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0jKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0jKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotIyogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSMqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0jKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotIyogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSMqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSMqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0jKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotIyogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIyAkSWQ6IG5jdS1pbmRlbnQsdiAxLjE3IDIwMDgvMDgvMDMgMTU6NDY6NDQgdG9tIEV4cCAkCi1OT09QPW5vCi1PUFRTPScKLS0tYmxhbmstbGluZXMtYWZ0ZXItcHJvY2VkdXJlcwotLS1icmFjZXMtb24taWYtbGluZQotLS1jb250aW51YXRpb24taW5kZW50YXRpb24wCi0tLWNvbnRpbnVlLWF0LXBhcmVudGhlc2VzCi0tLWN1ZGRsZS1lbHNlCi0tLWluZGVudC1sZXZlbDQKLS0tbGVhdmUtcHJlcHJvY2Vzc29yLXNwYWNlCi0tLW5vLWJsYW5rLWxpbmVzLWFmdGVyLWNvbW1hcwotLS1uby1ibGFuay1saW5lcy1hZnRlci1kZWNsYXJhdGlvbnMKLS0tbm8tc3BhY2UtYWZ0ZXItZnVuY3Rpb24tY2FsbC1uYW1lcwotLS1wcm9jbmFtZXMtc3RhcnQtbGluZXMKLS0tc3BhY2Utc3BlY2lhbC1zZW1pY29sb24KLS0tc3dhbGxvdy1vcHRpb25hbC1ibGFuay1saW5lcwotLS10YWItc2l6ZTgKLQotLVQgTkNVUlNFU19FWFBPUlRfVkFSCi0tVCBOQ1VSU0VTX0lOTElORQotLVQgU0NSRUVOCi0tVCBURVJNVFlQRQotLVQgYXR0cl90Ci0tVCBjY2hhcl90Ci0tVCBjaHR5cGUKLS1UIGlubGluZQotLVQgd2NoYXJfdAotLVQgd2ludF90Ci0KLS1UIEJVRkZFUgotLVQgQ0hBUlRZUEUKLS1UIEZJTEUKLS1UIEdDQ19OT1JFVFVSTgotLVQgTElORQotLVQgTUFSSwotLVQgUkVUU0lHVFlQRSAKLS1UIFRCVUZGCi0tVCBXSU5ET1cKLS1UIHNpemVfdAotLVQgdmFfbGlzdAotCi0tVCBDYXJkaW5hbAotLVQgV2lkZ2V0Ci0tVCBYdFBvaW50ZXIKLScKLWZvciBuYW1lIGluICQqCi1kbwotCWNhc2UgJG5hbWUgaW4KLQktdnwtbikKLQkJTk9PUD15ZXMKLQkJT1BUUz0iJE9QVFMgLXYiCi0JCTs7Ci0JLSopCi0JCU9QVFM9IiRPUFRTICRuYW1lIgotCQk7OwotCSouW2NoXXwqLmNjfCouY3BwKQotCQlzYXZlPSIke25hbWV9Ii5hJCQKLQkJdGVzdD0iJHtuYW1lfSIuYiQkCi0JCXJtIC1mICIkc2F2ZSIgIiR0ZXN0IgotCQltdiAiJG5hbWUiICIkc2F2ZSIKLQkJc2VkIFwKLQkJCS1lICcvRU1QVFlfTU9EVUxFKC9zLykkLyk7LycgXAotCQkJLWUgJy9NT0RVTEVfSUQoL3MvKSQvKTsvJyBcCi0JCQktZSAncyxcPEdDQ19OT1JFVFVSTjssOy8vR0NDX05PUkVUVVJOOywnIFwKLQkJCS1lICdzLFw8R0NDX1BSSU5URkxJS0UoLDsvL0dDQ19QUklOVEZMSUtFKCwnIFwKLQkJCS1lICdzLFw8R0NDX1NDQU5GTElLRSgsOy8vR0NDX1NDQU5GTElLRSgsJyBcCi0JCQktZSAncyxcKFw8TkNVUlNFU19FWFBPUlRfVkFSXD5cKSwvL1wxLCcgXAotCQkJIiRzYXZlIiA+IiR0ZXN0IgotCQljcCAiJHRlc3QiICIkbmFtZSIKLQkJY2htb2QgdSt3ICIkbmFtZSIKLQkJIyAke0lOREVOVF9QUk9HLWluZGVudH0gLS12ZXJzaW9uCi0JCSR7SU5ERU5UX1BST0ctaW5kZW50fSAtbnBybyAkT1BUUyAiJG5hbWUiCi0JCXNlZCBcCi0JCQktZSAnL0VNUFRZX01PRFVMRSgvcy8pOyQvKS8nIFwKLQkJCS1lICcvTU9EVUxFX0lEKC9zLyk7JC8pLycgXAotCQkJLWUgJ3MsO1sgCV0qLy9HQ0NfTk9SRVRVUk47LCBHQ0NfTk9SRVRVUk47LCcgXAotCQkJLWUgJ3MsO1sgCV0qLy9HQ0NfUFJJTlRGTElLRSgsIEdDQ19QUklOVEZMSUtFKCwnIFwKLQkJCS1lICdzLDtbIAldKi8vR0NDX1NDQU5GTElLRSgsIEdDQ19TQ0FORkxJS0UoLCcgXAotCQkJLWUgJ3MsLy9cKFw8TkNVUlNFU19FWFBPUlRfVkFSXD5cKSxcMSwnIFwKLQkJCSIkbmFtZSIgPiIkdGVzdCIKLQkJbXYgIiR0ZXN0IiAiJG5hbWUiCi0JCXJtIC1mICIke25hbWV9fiIKLQkJaWYgdGVzdCAkTk9PUCA9IHllcyA7IHRoZW4KLQkJCWlmIChjbXAgLXMgIiRuYW1lIiAiJHNhdmUiICkgdGhlbgotCQkJCWVjaG8gIioqIG5vIGNoYW5nZTogJG5hbWUiCi0JCQllbHNlCi0JCQkJZGlmZiAtdSAiJHNhdmUiICIkbmFtZSIKLQkJCWZpCi0JCQlybSAtZiAiJG5hbWUiCi0JCQltdiAiJHNhdmUiICIkbmFtZSIKLQkJZWxpZiAoIGNtcCAtcyAiJG5hbWUiICIkc2F2ZSIgKSA7IHRoZW4KLQkJCWVjaG8gIioqIHVuY2hhbmdlZCAkbmFtZSIKLQkJCXJtIC1mICIke25hbWV9IgotCQkJbXYgIiRzYXZlIiAiJG5hbWUiCi0JCWVsc2UKLQkJCWVjaG8gIioqIHVwZGF0ZWQgJG5hbWUiCi0JCQlybSAtZiAiJHNhdmUiCi0JCWZpCi0JCTs7Ci0JKikKLQkJZWNobyAiKiogaWdub3JlZDogICAkbmFtZSIKLQkJOzsKLQllc2FjCi1kb25lCmRpZmYgLS1naXQgYS9taXNjL25jdXJzZXMtY29uZmlnIGIvbWlzYy9uY3Vyc2VzLWNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiNTU5OC4uMDAwMDAwMAotLS0gYS9taXNjL25jdXJzZXMtY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLSMhL2Jpbi9zaAotIyAkSWQ6IG5jdXJzZXMtY29uZmlnLmluLHYgMS4xMiAyMDA3LzAzLzE3IDIwOjAyOjE5IHRvbSBFeHAgJAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCi0jIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKLSMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIwotIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCi0jIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKLSMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIwotIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIwotIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIwotIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCi0jIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKLSMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIwotIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCi0jIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKLSMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKLSMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIwotIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCi0jIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXksIDIwMDYKLQotcHJlZml4PSIvdXNyL2xvY2FsIgotZXhlY19wcmVmaXg9IiR7cHJlZml4fSIKLQotYmluZGlyPSIke2V4ZWNfcHJlZml4fS9iaW4iCi1saWJkaXI9IiR7ZXhlY19wcmVmaXh9L2xpYiIKLWRhdGFkaXI9IiR7cHJlZml4fS9zaGFyZSIKLW1hbmRpcj0iJHtwcmVmaXh9L21hbiIKLQotVEhJUz0ibmN1cnNlcyIKLQotTEFORz1DOwkJZXhwb3J0IExBTkcKLUxBTkdVQUdFPUM7CWV4cG9ydCBMQU5HVUFHRQotTENfQUxMPUM7CWV4cG9ydCBMQ19BTEwKLUxDX0NUWVBFPUM7CWV4cG9ydCBMQ19DVFlQRQotCi10ZXN0ICQjID0gMCAmJiBleGVjIC9iaW4vc2ggJDAgLS1lcnJvcgotCi13aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbwotCWNhc2UgIiQxIiBpbgotCS0qPSopCi0JCUFSRz1gZWNobyAiJDEiIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AKLQkJOzsKLQkqKQotCQlBUkc9Ci0JCTs7Ci0JZXNhYwotCi0JY2FzZSAiJDEiIGluCi0JIyBiYXNpYyBjb25maWd1cmF0aW9uCi0JLS1wcmVmaXg9KikKLQkJcHJlZml4PSIkQVJHIgotCQl0ZXN0IC16ICIkZXhlY19wcmVmaXgiICYmIGV4ZWNfcHJlZml4PSIkQVJHIgotCQk7OwotCS0tcHJlZml4KQotCQllY2hvICIkcHJlZml4IgotCQk7OwotCS0tZXhlYy1wcmVmaXg9KikKLQkJZXhlY19wcmVmaXg9IiRBUkciCi0JCTs7Ci0JLS1leGVjLXByZWZpeCkKLQkJZWNobyAiJGV4ZWNfcHJlZml4IgotCQk7OwotCSMgY29tcGlsZS9saW5rCi0JLS1jZmxhZ3MpCi0JCUlOQ1M9Ci0JCWlmIHRlc3QgIiR7cHJlZml4fS9pbmNsdWRlIiAhPSAvdXNyL2luY2x1ZGUgOyB0aGVuCi0JCQlJTkNTPSItSSR7cHJlZml4fS9pbmNsdWRlIgotCQlmaQotCQlpZiB0ZXN0ICIiICE9IG5vIDsgdGhlbgotCQkJSU5DUz0iJElOQ1MgLUkke3ByZWZpeH0vaW5jbHVkZS8ke1RISVN9IgotCQlmaQotCQlzZWQgLWUgJ3MsXlsgXSosLCcgLWUgJ3MsIFsgXSosICxnJyAtZSAncyxbIF0qJCwsJyA8PC1FTkRFQ0hPCi0JCQkkSU5DUwotRU5ERUNITwotCQk7OwotCS0tbGlicykKLQkJc2VkIC1lICdzLF5bIF0qLCwnIC1lICdzLCBbIF0qLCAsZycgLWUgJ3MsWyBdKiQsLCcgPDwtRU5ERUNITwotCQkJLUwke2V4ZWNfcHJlZml4fS9saWIgIC1sJHtUSElTfSAKLUVOREVDSE8KLQkJOzsKLQkjIGlkZW50aWZpY2F0aW9uCi0JLS12ZXJzaW9uKQotCQllY2hvICI1LjcuMjAwODExMDIiCi0JCTs7Ci0JLS1hYmktdmVyc2lvbikKLQkJZWNobyAiNSIKLQkJOzsKLQktLW1vdXNlLXZlcnNpb24pCi0JCWVjaG8gIjEiCi0JCTs7Ci0JIyBsb2NhdGlvbnMKLQktLWJpbmRpcikKLQkJZWNobyAiJHtiaW5kaXJ9IgotCQk7OwotCS0tZGF0YWRpcikKLQkJZWNobyAiJHtkYXRhZGlyfSIKLQkJOzsKLQktLWxpYmRpcikKLQkJZWNobyAiJHtsaWJkaXJ9IgotCQk7OwotCS0tbWFuZGlyKQotCQllY2hvICIke21hbmRpcn0iCi0JCTs7Ci0JLS10ZXJtaW5mbykKLQkJZWNobyAiL3Vzci9sb2NhbC9zaGFyZS90ZXJtaW5mbyIKLQkJOzsKLQktLXRlcm1pbmZvLWRpcnMpCi0JCWVjaG8gIi91c3IvbG9jYWwvc2hhcmUvdGVybWluZm8iCi0JCTs7Ci0JLS10ZXJtcGF0aCkKLQkJZWNobyAiIgotCQk7OwotCSMgZ2VuZXJhbCBpbmZvCi0JLS1oZWxwKQotCQljYXQgPDxFTkRIRUxQCi1Vc2FnZTogJHtUSElTfS1jb25maWcgW29wdGlvbnNdCi0KLU9wdGlvbnM6Ci0gIC0tcHJlZml4ICAgICAgICAgICBlY2hvcyB0aGUgcGFja2FnZS1wcmVmaXggb2YgJHtUSElTfQotICAtLXByZWZpeD1BUkcgICAgICAgc2V0cyB0aGUgcGFja2FnZS1wcmVmaXggb2YgJHtUSElTfQotICAtLWV4ZWMtcHJlZml4ICAgICAgZWNob3MgdGhlIGV4ZWN1dGFibGUtcHJlZml4IG9mICR7VEhJU30KLSAgLS1leGVjLXByZWZpeD1BUkcgIHNldHMgdGhlIGV4ZWN1dGFibGUtcHJlZml4IG9mICR7VEhJU30KLQotICAtLWNmbGFncyAgICAgICAgICAgZWNob3MgdGhlIEMgY29tcGlsZXIgZmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgd2l0aCAke1RISVN9Ci0gIC0tbGlicyAgICAgICAgICAgICBlY2hvcyB0aGUgbGlicmFyaWVzIG5lZWRlZCB0byBsaW5rIHdpdGggJHtUSElTfQotCi0gIC0tdmVyc2lvbiAgICAgICAgICBlY2hvcyB0aGUgcmVsZWFzZStwYXRjaGRhdGUgdmVyc2lvbiBvZiAke1RISVN9Ci0gIC0tYWJpLXZlcnNpb24gICAgICBlY2hvcyB0aGUgQUJJIHZlcnNpb24gb2YgJHtUSElTfQotICAtLW1vdXNlLXZlcnNpb24gICAgZWNob3MgdGhlIG1vdXNlLWludGVyZmFjZSB2ZXJzaW9uIG9mICR7VEhJU30KLQotICAtLWJpbmRpciAgICAgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nICR7VEhJU30gcHJvZ3JhbXMKLSAgLS1kYXRhZGlyICAgICAgICAgIGVjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAke1RISVN9IGRhdGEKLSAgLS1saWJkaXIgICAgICAgICAgIGVjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAke1RISVN9IGxpYnJhcmllcwotICAtLW1hbmRpciAgICAgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nICR7VEhJU30gbWFucGFnZXMKLSAgLS10ZXJtaW5mbyAgICAgICAgIGVjaG9zIHRoZSBcJFRFUk1JTkZPIHRlcm1pbmZvIGRhdGFiYXNlIHBhdGgKLSAgLS10ZXJtaW5mby1kaXJzICAgIGVjaG9zIHRoZSBcJFRFUk1JTkZPX0RJUlMgZGlyZWN0b3J5IGxpc3QKLSAgLS10ZXJtcGF0aCAgICAgICAgIGVjaG9zIHRoZSBcJFRFUk1QQVRIIHRlcm1jYXAgbGlzdAotCi0gIC0taGVscCAgICAgICAgICAgICBwcmludHMgdGhpcyBtZXNzYWdlCi1FTkRIRUxQCi0JCTs7Ci0JLS1lcnJvcnwqKQotCQkvYmluL3NoICQwIC0taGVscCAxPiYyCi0JCWV4aXQgMQotCQk7OwotCWVzYWMKLQlzaGlmdAotZG9uZQotIyB2aWxlOnNobW9kZQpkaWZmIC0tZ2l0IGEvbWlzYy9uY3Vyc2VzLWNvbmZpZy5pbiBiL21pc2MvbmN1cnNlcy1jb25maWcuaW4KaW5kZXggYTM0OTI1MC4uNzNjYmZmZiAxMDA2NDQKLS0tIGEvbWlzYy9uY3Vyc2VzLWNvbmZpZy5pbgorKysgYi9taXNjL25jdXJzZXMtY29uZmlnLmluCkBAIC0xLDcgKzEsNyBAQAogIyFAU0hFTExACi0jICRJZDogbmN1cnNlcy1jb25maWcuaW4sdiAxLjEyIDIwMDcvMDMvMTcgMjA6MDI6MTkgdG9tIEV4cCAkCisjICRJZDogbmN1cnNlcy1jb25maWcuaW4sdiAxLjM1IDIwMTUvMDQvMjIgMDA6NTQ6MTkgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yOCw2NyArMjgsMTA0IEBACiAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwotIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXksIDIwMDYKLQotcHJlZml4PSJAcHJlZml4QCIKLWV4ZWNfcHJlZml4PSJAZXhlY19wcmVmaXhAIgotCi1iaW5kaXI9IkBiaW5kaXJAIgotbGliZGlyPSJAbGliZGlyQCIKLWRhdGFkaXI9IkBkYXRhZGlyQCIKLW1hbmRpcj0iQG1hbmRpckAiCi0KLVRISVM9Im5jdXJzZXNAREZUX0FSR19TVUZGSVhAIgorIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXksIDIwMDYtb24KIAogTEFORz1DOwkJZXhwb3J0IExBTkcKIExBTkdVQUdFPUM7CWV4cG9ydCBMQU5HVUFHRQogTENfQUxMPUM7CWV4cG9ydCBMQ19BTEwKIExDX0NUWVBFPUM7CWV4cG9ydCBMQ19DVFlQRQogCitwcmVmaXg9IkBwcmVmaXhAIgorZXhlY19wcmVmaXg9IkBleGVjX3ByZWZpeEAiCisKK2JpbmRpcj0iQGJpbmRpckAiCitpbmNsdWRlZGlyPSJAaW5jbHVkZWRpckAiCitsaWJkaXI9IkBsaWJkaXJAIgorZGF0YXJvb3RkaXI9IkBkYXRhcm9vdGRpckAiCitkYXRhZGlyPSJAZGF0YWRpckAiCittYW5kaXI9IkBtYW5kaXJAIgorCitUSElTPSJATElCX05BTUVAQFVTRV9MSUJfU1VGRklYQCIKK1RJTkZPX0xJQj0iQFRJTkZPX0FSR19TVUZGSVhAIgorUlBBVEhfTElTVD0iQFJQQVRIX0xJU1RAIgorCitpbmNsdWRlc3ViZGlyPSJAaW5jbHVkZWRpckAvJHtUSElTfSIKKworIyBFbnN1cmUgdGhhdCBSUEFUSF9MSVNUIGNvbnRhaW5zIG9ubHkgYWJzb2x1dGUgcGF0aG5hbWVzLCBpZiBpdCBpcyBub25lbXB0eS4KKyMgV2UgY2Fubm90IGZpbHRlciBpdCBvdXQgd2l0aGluIHRoZSBidWlsZC1wcm9jZXNzIHNpbmNlIHRoZSB2YXJpYWJsZSBpcyB1c2VkCisjIGluIHNvbWUgc3BlY2lhbCBjYXNlcyBvZiBpbnN0YWxsYXRpb24gdXNpbmcgYSByZWxhdGl2ZSBwYXRoLgoraWYgdGVzdCAtbiAiJFJQQVRIX0xJU1QiCit0aGVuCisJc2F2ZV9JRlM9IiRJRlMiCisJSUZTPSdAUEFUSF9TRVBBUkFUT1JAJworCWZpbHRlcmVkPQorCWZvciBpdGVtIGluICRSUEFUSF9MSVNUCisJZG8KKwkJY2FzZSAiJGl0ZW0iIGluCisJCS4vKnwuLi8qfCovLi58Ki8uLi8qKQorCQkJOzsKKwkJKikKKwkJCXRlc3QgLW4gIiRmaWx0ZXJlZCIgJiYgZmlsdGVyZWQ9IiR7ZmlsdGVyZWR9QFBBVEhfU0VQQVJBVE9SQCIKKwkJCWZpbHRlcmVkPSIke2ZpbHRlcmVkfSR7aXRlbX0iCisJCQk7OworCQllc2FjCisJZG9uZQorCUlGUz0iJHNhdmVfSUZTIgorCSMgaWYgdGhlIHJlc3VsdCBpcyBlbXB0eSwgdGhlcmUgaXMgbGl0dGxlIHdlIGNhbiBkbyB0byBmaXggaXQKKwlSUEFUSF9MSVNUPSIkZmlsdGVyZWQiCitmaQorCisjIHdpdGggLS1kaXNhYmxlLW92ZXJ3cml0ZSwgd2UgaW5zdGFsbGVkIGludG8gYSBzdWJkaXJlY3RvcnksIGJ1dCB0cmFuc2Zvcm1lZAorIyB0aGUgaGVhZGVycyB0byBpbmNsdWRlIGxpa2UgdGhpczoKKyMJPG5jdXJzZXNATElCX1NVRkZJWEAvY3Vyc2VzLmg+CitpZiB0ZXN0IHhAV0lUSF9PVkVSV1JJVEVAID0geG5vIDsgdGhlbgorCWNhc2UgJGluY2x1ZGVkaXIgaW4KKwkkcHJlZml4L2luY2x1ZGUvbmN1cnNlc0BMSUJfU1VGRklYQEBFWFRSQV9TVUZGSVhAKQorCQlpbmNsdWRlZGlyPWBlY2hvICIkaW5jbHVkZWRpciIgfCBzZWQgLWUgJ3MsL1teL10qJCwsJ2AKKwkJOzsKKwllc2FjCitmaQorCiB0ZXN0ICQjID0gMCAmJiBleGVjIEBTSEVMTEAgJDAgLS1lcnJvcgogCiB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbwogCWNhc2UgIiQxIiBpbgotCS0qPSopCi0JCUFSRz1gZWNobyAiJDEiIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AKLQkJOzsKLQkqKQotCQlBUkc9Ci0JCTs7Ci0JZXNhYwotCi0JY2FzZSAiJDEiIGluCiAJIyBiYXNpYyBjb25maWd1cmF0aW9uCi0JLS1wcmVmaXg9KikKLQkJcHJlZml4PSIkQVJHIgotCQl0ZXN0IC16ICIkZXhlY19wcmVmaXgiICYmIGV4ZWNfcHJlZml4PSIkQVJHIgotCQk7OwogCS0tcHJlZml4KQogCQllY2hvICIkcHJlZml4IgogCQk7OwotCS0tZXhlYy1wcmVmaXg9KikKLQkJZXhlY19wcmVmaXg9IiRBUkciCi0JCTs7CiAJLS1leGVjLXByZWZpeCkKIAkJZWNobyAiJGV4ZWNfcHJlZml4IgogCQk7OwogCSMgY29tcGlsZS9saW5rCiAJLS1jZmxhZ3MpCi0JCUlOQ1M9Ci0JCWlmIHRlc3QgIiR7cHJlZml4fS9pbmNsdWRlIiAhPSAvdXNyL2luY2x1ZGUgOyB0aGVuCi0JCQlJTkNTPSItSSR7cHJlZml4fS9pbmNsdWRlIgorCQlJTkNTPSJAUEtHX0NGTEFHU0AiCisJCWlmIHRlc3QgInhAV0lUSF9PVkVSV1JJVEVAIiA9IHhubyA7IHRoZW4KKwkJCUlOQ1M9IiRJTkNTIC1JJHtpbmNsdWRlc3ViZGlyfSIKIAkJZmkKLQkJaWYgdGVzdCAiQFdJVEhfT1ZFUldSSVRFQCIgIT0gbm8gOyB0aGVuCi0JCQlJTkNTPSIkSU5DUyAtSSR7cHJlZml4fS9pbmNsdWRlLyR7VEhJU30iCisJCWlmIHRlc3QgIiR7aW5jbHVkZWRpcn0iICE9IC91c3IvaW5jbHVkZSA7IHRoZW4KKwkJCUlOQ1M9IiRJTkNTIC1JJHtpbmNsdWRlZGlyfSIKIAkJZmkKIAkJc2VkIC1lICdzLF5bIF0qLCwnIC1lICdzLCBbIF0qLCAsZycgLWUgJ3MsWyBdKiQsLCcgPDwtRU5ERUNITwogCQkJJElOQ1MKIEVOREVDSE8KIAkJOzsKIAktLWxpYnMpCisJCWlmIHRlc3QgIiRsaWJkaXIiID0gL3Vzci9saWIKKwkJdGhlbgorCQkJTElCRElSPQorCQllbHNlCisJCQlMSUJESVI9LUwkbGliZGlyCisJCWZpCisJCWlmIHRlc3QgQFRJTkZPX05BTUVAID0gQExJQl9OQU1FQCA7IHRoZW4KIAkJc2VkIC1lICdzLF5bIF0qLCwnIC1lICdzLCBbIF0qLCAsZycgLWUgJ3MsWyBdKiQsLCcgPDwtRU5ERUNITwotCQkJLUwke2V4ZWNfcHJlZml4fS9saWIgQEVYVFJBX0xERkxBR1NAIC1sJHtUSElTfSBATElCU0AKKwkJCSRMSUJESVIgQEVYVFJBX0xERkxBR1NAIC1sJHtUSElTfSBATElCU0AKIEVOREVDSE8KKwkJZWxzZQorCQlzZWQgLWUgJ3MsXlsgXSosLCcgLWUgJ3MsIFsgXSosICxnJyAtZSAncyxbIF0qJCwsJyA8PC1FTkRFQ0hPCisJCQkkTElCRElSIEBFWFRSQV9MREZMQUdTQCAtbCR7VEhJU30gLWwke1RJTkZPX0xJQn0gQExJQlNACitFTkRFQ0hPCisJCWZpCiAJCTs7CiAJIyBpZGVudGlmaWNhdGlvbgogCS0tdmVyc2lvbikKQEAgLTEwNyw2ICsxNDQsOSBAQAogCS0tZGF0YWRpcikKIAkJZWNobyAiJHtkYXRhZGlyfSIKIAkJOzsKKwktLWluY2x1ZGVkaXIpCisJCWVjaG8gIiR7aW5jbHVkZWRpcn0iCisJCTs7CiAJLS1saWJkaXIpCiAJCWVjaG8gIiR7bGliZGlyfSIKIAkJOzsKQEAgLTEyNSwxMyArMTY1LDExIEBACiAJIyBnZW5lcmFsIGluZm8KIAktLWhlbHApCiAJCWNhdCA8PEVOREhFTFAKLVVzYWdlOiAke1RISVN9LWNvbmZpZyBbb3B0aW9uc10KK1VzYWdlOiBgYmFzZW5hbWUgJDBgIFtvcHRpb25zXQogCiBPcHRpb25zOgogICAtLXByZWZpeCAgICAgICAgICAgZWNob3MgdGhlIHBhY2thZ2UtcHJlZml4IG9mICR7VEhJU30KLSAgLS1wcmVmaXg9QVJHICAgICAgIHNldHMgdGhlIHBhY2thZ2UtcHJlZml4IG9mICR7VEhJU30KICAgLS1leGVjLXByZWZpeCAgICAgIGVjaG9zIHRoZSBleGVjdXRhYmxlLXByZWZpeCBvZiAke1RISVN9Ci0gIC0tZXhlYy1wcmVmaXg9QVJHICBzZXRzIHRoZSBleGVjdXRhYmxlLXByZWZpeCBvZiAke1RISVN9CiAKICAgLS1jZmxhZ3MgICAgICAgICAgIGVjaG9zIHRoZSBDIGNvbXBpbGVyIGZsYWdzIG5lZWRlZCB0byBjb21waWxlIHdpdGggJHtUSElTfQogICAtLWxpYnMgICAgICAgICAgICAgZWNob3MgdGhlIGxpYnJhcmllcyBuZWVkZWQgdG8gbGluayB3aXRoICR7VEhJU30KQEAgLTE0Miw2ICsxODAsNyBAQAogCiAgIC0tYmluZGlyICAgICAgICAgICBlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgJHtUSElTfSBwcm9ncmFtcwogICAtLWRhdGFkaXIgICAgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nICR7VEhJU30gZGF0YQorICAtLWluY2x1ZGVkaXIgICAgICAgZWNob3MgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nICR7VEhJU30gaGVhZGVyIGZpbGVzCiAgIC0tbGliZGlyICAgICAgICAgICBlY2hvcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgJHtUSElTfSBsaWJyYXJpZXMKICAgLS1tYW5kaXIgICAgICAgICAgIGVjaG9zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAke1RISVN9IG1hbnBhZ2VzCiAgIC0tdGVybWluZm8gICAgICAgICBlY2hvcyB0aGUgXCRURVJNSU5GTyB0ZXJtaW5mbyBkYXRhYmFzZSBwYXRoCkBAIC0xNTgsNCArMTk3LDUgQEAKIAllc2FjCiAJc2hpZnQKIGRvbmUKKyMgdmk6dHM9NCBzdz00CiAjIHZpbGU6c2htb2RlCmRpZmYgLS1naXQgYS9taXNjL3J1bl90aWMuaW4gYi9taXNjL3J1bl90aWMuaW4KaW5kZXggMjczMjQwMy4uNzg0ZjlmNCAxMDA2NDQKLS0tIGEvbWlzYy9ydW5fdGljLmluCisrKyBiL21pc2MvcnVuX3RpYy5pbgpAQCAtMSw3ICsxLDcgQEAKICMhQFNIRUxMQAotIyAkSWQ6IHJ1bl90aWMuaW4sdiAxLjIzIDIwMDYvMTAvMjggMTk6NDM6MzAgdG9tIEV4cCAkCisjICRJZDogcnVuX3RpYy5pbix2IDEuMzQgMjAxMi8xMC8wNiAxOTowMDo1MSB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI4LDcgKzI4LDcgQEAKICMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCi0jIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk2LDIwMDAKKyMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KICMKICMgVGhpcyBzY3JpcHQgaXMgdXNlZCB0byBpbnN0YWxsIHRlcm1pbmZvLnNyYyB1c2luZyB0aWMuICBXZSB1c2UgYSBzY3JpcHQKICMgYmVjYXVzZSB0aGUgcGF0aCBjaGVja2luZyBpcyB0b28gYXdrd2FyZCB0byBkbyBpbiBhIG1ha2VmaWxlLgpAQCAtNDEsMzggKzQxLDU3IEBACiAjIFRoZSBzY3JpcHQgaXMgZGVzaWduZWQgdG8gYmUgcnVuIGZyb20gdGhlIG1pc2MvTWFrZWZpbGUgYXMKICMJbWFrZSBpbnN0YWxsLmRhdGEKIAotOiAke3N1ZmZpeD1AUFJPR19FWFRAfQotOiAke0RFU1RESVI9QERFU1RESVJAfQotOiAke3ByZWZpeD1AcHJlZml4QH0KLTogJHtleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhAfQotOiAke2JpbmRpcj1AYmluZGlyQH0KLTogJHt0b3Bfc3JjZGlyPUB0b3Bfc3JjZGlyQH0KLTogJHtzcmNkaXI9QHNyY2RpckB9Ci06ICR7ZGF0YWRpcj1AZGF0YWRpckB9Ci06ICR7dGljZGlyPUBURVJNSU5GT0B9Ci06ICR7c291cmNlPUBURVJNSU5GT19TUkNAfQotOiAke0xOX1M9IkBMTl9TQCJ9Ci06ICR7VEhBVF9DQz1jY30KLTogJHtUSElTX0NDPWNjfQotOiAke2V4dF9mdW5jcz1ATkNVUlNFU19FWFRfRlVOQ1NAfQorOiAke3N1ZmZpeDo9QEVYRUVYVEB9Cis6ICR7REVTVERJUjo9QERFU1RESVJAfQorOiAke3ByZWZpeDo9QHByZWZpeEB9Cis6ICR7ZXhlY19wcmVmaXg6PUBleGVjX3ByZWZpeEB9Cis6ICR7YmluZGlyOj1AYmluZGlyQH0KKzogJHt0b3Bfc3JjZGlyOj1AdG9wX3NyY2RpckB9Cis6ICR7c3JjZGlyOj1Ac3JjZGlyQH0KKzogJHtkYXRhcm9vdGRpcjo9QGRhdGFyb290ZGlyQH0KKzogJHtkYXRhZGlyOj1AZGF0YWRpckB9Cis6ICR7VElDX1BBVEg6PUBUSUNfUEFUSEB9Cis6ICR7dGljZGlyOj1AVEVSTUlORk9AfQorOiAke3NvdXJjZTo9QFRFUk1JTkZPX1NSQ0B9Cis6ICR7TE5fUzo9IkBMTl9TQCJ9Cis6ICR7Y3Jvc3NfY29tcGlsaW5nOj1ub30KKzogJHtleHRfZnVuY3M6PUBOQ1VSU0VTX0VYVF9GVU5DU0B9CiAKIHRlc3QgLXogIiR7REVTVERJUn0iICYmIERFU1RESVI9CiAKICMgQWxsb3cgdGljIHRvIHJ1biBlaXRoZXIgZnJvbSB0aGUgaW5zdGFsbC1wYXRoLCBvciBmcm9tIHRoZSBidWlsZC1kaXJlY3RvcnkuCiAjIERvIG5vdCBkbyB0aGlzIGlmIHdlIGFwcGVhciB0byBiZSBjcm9zcy1jb21waWxpbmcuICBJbiB0aGF0IGNhc2UsIHdlIHJlbHkKICMgb24gdGhlIGhvc3QncyBjb3B5IG9mIHRpYyB0byBjb21waWxlIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4KLWlmIHRlc3QgIiRUSEFUX0NDIiA9ICIkVEhJU19DQyIgOyB0aGVuCi1jYXNlICIkUEFUSCIgaW4KLToqKSBQQVRIPS4uL3Byb2dzOi4uL2xpYjoke0RFU1RESVJ9JGJpbmRpciRQQVRIIDs7Ci0qKSBQQVRIPS4uL3Byb2dzOi4uL2xpYjoke0RFU1RESVJ9JGJpbmRpcjokUEFUSCA7OwotZXNhYwotZXhwb3J0IFBBVEgKLVNITElCPSJzaCAkc3JjZGlyL3NobGliIgoraWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInhubyIKK3RoZW4KKwlpZiB0ZXN0IC1mIC4uL3Byb2dzL3RpYyRzdWZmaXgKKwl0aGVuCisJCWNhc2UgIiRQQVRIIiBpbgorCQlcQFBBVEhfU0VQQVJBVE9SQCopCisJCQlQQVRIPSIuLi9wcm9nc0BQQVRIX1NFUEFSQVRPUkAuLi9saWJAUEFUSF9TRVBBUkFUT1JAJHtERVNURElSfSRiaW5kaXIkUEFUSCIKKwkJCTs7CisJCSopCisJCQlQQVRIPSIuLi9wcm9nc0BQQVRIX1NFUEFSQVRPUkAuLi9saWJAUEFUSF9TRVBBUkFUT1JAJHtERVNURElSfSRiaW5kaXJAUEFUSF9TRVBBUkFUT1JAJFBBVEgiCisJCQk7OworCQllc2FjCisJCWV4cG9ydCBQQVRICisJCWlmIHRlc3QgQERGVF9MV1JfTU9ERUxAID0gc2hhcmVkCisJCXRoZW4KKwkJCVNITElCPSJzaCAkc3JjZGlyL3NobGliIgorCQkJVElDX1BBVEg9IiRTSExJQiB0aWMiCisJCWVsc2UKKwkJCVRJQ19QQVRIPSJ0aWMiCisJCWZpCisJZWxpZiB0ZXN0ICIkVElDX1BBVEgiID0gdW5rbm93bgorCXRoZW4KKwkJZWNobyAnPyBubyB0aWMgcHJvZ3JhbSBmb3VuZCcKKwkJZXhpdCAxCisJZmkKIGVsc2UKLSMgQ3Jvc3MtY29tcGlsaW5nLCBzbyBkb24ndCBzZXQgUEFUSCBvciBydW4gc2hsaWIuCi1TSExJQj0KLSMgcmVzZXQgJHN1ZmZpeCwgc2luY2UgaXQgYXBwbGllcyB0byB0aGUgdGFyZ2V0LCBub3QgdGhlIGJ1aWxkIHBsYXRmb3JtLgotc3VmZml4PQorCSMgQ3Jvc3MtY29tcGlsaW5nLCBzbyBkb24ndCBzZXQgUEFUSCBvciBydW4gc2hsaWIuCisJU0hMSUI9CisJIyByZXNldCAkc3VmZml4LCBzaW5jZSBpdCBhcHBsaWVzIHRvIHRoZSB0YXJnZXQsIG5vdCB0aGUgYnVpbGQgcGxhdGZvcm0uCisJc3VmZml4PQogZmkKIAogCkBAIC05Miw2ICsxMTEsMTQgQEAKICMgQ29uc3RydWN0IHRoZSBuYW1lIG9mIHRoZSBvbGQgKG9ic29sZXRlKSBwYXRobmFtZSwgZS5nLiwgL3Vzci9saWIvdGVybWluZm8uCiBUSUNESVI9YGVjaG8gJFRFUk1JTkZPIHwgc2VkIC1lICdzJS9zaGFyZS9cKFteL10qXCkkJS9saWIvXDElJ2AKIAorIyBQYXJlbnQgZGlyZWN0b3J5IG1heSBub3QgZXhpc3QsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdGhlIGluc3RhbGwgZm9yIGhhc2hlZAorIyBkYXRhYmFzZS4gIEZpeC4KK1BBUkVOVD1gZWNobyAiJFRFUk1JTkZPIiB8IHNlZCAtZSAncyUvW14vXSokJSUnYAoraWYgdGVzdCAtbiAiJFBBUkVOVCIKK3RoZW4KKwl0ZXN0IC1kICRQQVJFTlQgfHwgbWtkaXIgLXAgJFBBUkVOVAorZmkKKwogIyBSZW1vdmUgdGhlIG9sZCB0ZXJtaW5mbyBzdHVmZjsgd2UgZG9uJ3QgY2FyZSBpZiBpdCBleGlzdGVkIGJlZm9yZSwgYW5kIGl0CiAjIHdvdWxkIGdlbmVyYXRlIGEgbG90IG9mIGNvbmZ1c2luZyBlcnJvciBtZXNzYWdlcyBpZiB3ZSB0cmllZCB0byBvdmVyd3JpdGUgaXQuCiAjIFdlIGV4cGxpY2l0bHkgcmVtb3ZlIGl0cyBjb250ZW50cyByYXRoZXIgdGhhbiB0aGUgZGlyZWN0b3J5IGl0c2VsZiwgaW4gY2FzZQpAQCAtMTAwLDcgKzEyNyw3IEBACiAKIGlmIHRlc3QgIiRleHRfZnVuY3MiID0gMSA7IHRoZW4KIGNhdCA8PEVPRgotUnVubmluZyB0aWMgdG8gaW5zdGFsbCAkVEVSTUlORk8gLi4uCitSdW5uaW5nICRUSUNfUEFUSCB0byBpbnN0YWxsICRURVJNSU5GTyAuLi4KIAogCVlvdSBtYXkgc2VlIG1lc3NhZ2VzIHJlZ2FyZGluZyBleHRlbmRlZCBjYXBhYmlsaXRpZXMsIGUuZy4sIEFYLgogCVRoZXNlIGFyZSBleHRlbmRlZCB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGNvbXBpbGVkCkBAIC0xMTAsNyArMTM3LDcgQEAKIAlkb2N1bWVudCwgYW5kIGluc3RhbGwgdGhlIHRlcm1pbmZvIHdpdGhvdXQgdGhlIC14IG9wdGlvbi4KIAogRU9GCi1pZiAoICRTSExJQiB0aWMkc3VmZml4IC14IC1zIC1vICRURVJNSU5GTyAkc291cmNlICkKK2lmICggJFRJQ19QQVRIIC14IC1zIC1vICRURVJNSU5GTyAkc291cmNlICkKIHRoZW4KIAllY2hvICcqKiBidWlsdCBuZXcgJyRURVJNSU5GTwogZWxzZQpAQCAtMTE5LDcgKzE0Niw3IEBACiBmaQogZWxzZQogY2F0IDw8RU9GCi1SdW5uaW5nIHRpYyB0byBpbnN0YWxsICRURVJNSU5GTyAuLi4KK1J1bm5pbmcgJFRJQ19QQVRIIHRvIGluc3RhbGwgJFRFUk1JTkZPIC4uLgogCiAJWW91IG1heSBzZWUgbWVzc2FnZXMgcmVnYXJkaW5nIHVua25vd24gY2FwYWJpbGl0aWVzLCBlLmcuLCBBWC4KIAlUaGVzZSBhcmUgZXh0ZW5kZWQgdGVybWluYWwgY2FwYWJpbGl0aWVzIHdoaWNoIG1heSBiZSBjb21waWxlZApAQCAtMTI5LDcgKzE1Niw3IEBACiAJZG9jdW1lbnQsIGFuZCBpbnN0YWxsIHRoZSB0ZXJtaW5mbyB3aXRob3V0IHRoZSAteCBvcHRpb24uCiAKIEVPRgotaWYgKCAkU0hMSUIgdGljJHN1ZmZpeCAtcyAtbyAkVEVSTUlORk8gJHNvdXJjZSApCitpZiAoICRUSUNfUEFUSCAtcyAtbyAkVEVSTUlORk8gJHNvdXJjZSApCiB0aGVuCiAJZWNobyAnKiogYnVpbHQgbmV3ICckVEVSTUlORk8KIGVsc2UKZGlmZiAtLWdpdCBhL21pc2MvcnVuX3RpYy5zZWQgYi9taXNjL3J1bl90aWMuc2VkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmJkY2FjLi4wMDAwMDAwCi0tLSBhL21pc2MvcnVuX3RpYy5zZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXMlL3Vzci9zaGFyZS90YWJzZXQlL3Vzci9sb2NhbC9zaGFyZS90YWJzZXQlZwotL14jIFRoaXMgaXMgeHRlcm0gZm9yIG5jdXJzZXMvLC9eJC97Ci0Jcy91c2U9eHRlcm0tbmV3LC91c2U9eHRlcm0tbmV3LC8KLX0KZGlmZiAtLWdpdCBhL21pc2MvcnVuX3RpYy5zaCBiL21pc2MvcnVuX3RpYy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE4ZjViMy4uMDAwMDAwMAotLS0gYS9taXNjL3J1bl90aWMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotIyEvYmluL3NoCi0jICRJZDogcnVuX3RpYy5pbix2IDEuMjMgMjAwNi8xMC8yOCAxOTo0MzozMCB0b20gRXhwICQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwotIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCi0jIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKLSMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIwotIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCi0jIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKLSMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKLSMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIwotIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCi0jIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIwotIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCi0jIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCi0jIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKLSMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYsMjAwMAotIwotIyBUaGlzIHNjcmlwdCBpcyB1c2VkIHRvIGluc3RhbGwgdGVybWluZm8uc3JjIHVzaW5nIHRpYy4gIFdlIHVzZSBhIHNjcmlwdAotIyBiZWNhdXNlIHRoZSBwYXRoIGNoZWNraW5nIGlzIHRvbyBhd2t3YXJkIHRvIGRvIGluIGEgbWFrZWZpbGUuCi0jCi0jIEFzc3VtZXM6Ci0jCVRoZSBsZWFmIGRpcmVjdG9yeSBuYW1lcyAobGliLCB0YWJzZXQsIHRlcm1pbmZvKQotIwotZWNobyAnKiogQnVpbGRpbmcgdGVybWluZm8gZGF0YWJhc2UsIHBsZWFzZSB3YWl0Li4uJwotIwotIyBUaGUgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIGJlIHJ1biBmcm9tIHRoZSBtaXNjL01ha2VmaWxlIGFzCi0jCW1ha2UgaW5zdGFsbC5kYXRhCi0KLTogJHtzdWZmaXg9fQotOiAke0RFU1RESVI9fQotOiAke3ByZWZpeD0vdXNyL2xvY2FsfQotOiAke2V4ZWNfcHJlZml4PSR7cHJlZml4fX0KLTogJHtiaW5kaXI9JHtleGVjX3ByZWZpeH0vYmlufQotOiAke3RvcF9zcmNkaXI9Li59Ci06ICR7c3JjZGlyPS59Ci06ICR7ZGF0YWRpcj0ke3ByZWZpeH0vc2hhcmV9Ci06ICR7dGljZGlyPS91c3IvbG9jYWwvc2hhcmUvdGVybWluZm99Ci06ICR7c291cmNlPSR7dG9wX3NyY2Rpcn0vbWlzYy90ZXJtaW5mby5zcmN9Ci06ICR7TE5fUz0ibG4gLXMifQotOiAke1RIQVRfQ0M9Y2N9Ci06ICR7VEhJU19DQz1jY30KLTogJHtleHRfZnVuY3M9MX0KLQotdGVzdCAteiAiJHtERVNURElSfSIgJiYgREVTVERJUj0KLQotIyBBbGxvdyB0aWMgdG8gcnVuIGVpdGhlciBmcm9tIHRoZSBpbnN0YWxsLXBhdGgsIG9yIGZyb20gdGhlIGJ1aWxkLWRpcmVjdG9yeS4KLSMgRG8gbm90IGRvIHRoaXMgaWYgd2UgYXBwZWFyIHRvIGJlIGNyb3NzLWNvbXBpbGluZy4gIEluIHRoYXQgY2FzZSwgd2UgcmVseQotIyBvbiB0aGUgaG9zdCdzIGNvcHkgb2YgdGljIHRvIGNvbXBpbGUgdGhlIHRlcm1pbmZvIGRhdGFiYXNlLgotaWYgdGVzdCAiJFRIQVRfQ0MiID0gIiRUSElTX0NDIiA7IHRoZW4KLWNhc2UgIiRQQVRIIiBpbgotOiopIFBBVEg9Li4vcHJvZ3M6Li4vbGliOiR7REVTVERJUn0kYmluZGlyJFBBVEggOzsKLSopIFBBVEg9Li4vcHJvZ3M6Li4vbGliOiR7REVTVERJUn0kYmluZGlyOiRQQVRIIDs7Ci1lc2FjCi1leHBvcnQgUEFUSAotU0hMSUI9InNoICRzcmNkaXIvc2hsaWIiCi1lbHNlCi0jIENyb3NzLWNvbXBpbGluZywgc28gZG9uJ3Qgc2V0IFBBVEggb3IgcnVuIHNobGliLgotU0hMSUI9Ci0jIHJlc2V0ICRzdWZmaXgsIHNpbmNlIGl0IGFwcGxpZXMgdG8gdGhlIHRhcmdldCwgbm90IHRoZSBidWlsZCBwbGF0Zm9ybS4KLXN1ZmZpeD0KLWZpCi0KLQotIyBzZXQgYW5vdGhlciBlbnYgdmFyIHRoYXQgZG9lc24ndCBnZXQgcmVzZXQgd2hlbiBgc2hsaWInIHJ1bnMsIHNvIGBzaGxpYicgdXNlcwotIyB0aGUgUEFUSCB3ZSBqdXN0IHNldC4KLVNITElCX1BBVEg9JFBBVEgKLWV4cG9ydCBTSExJQl9QQVRICi0KLSMgc2V0IGEgdmFyaWFibGUgdG8gc2ltcGxpZnkgZW52aXJvbm1lbnQgdXBkYXRlIGluIHNobGliCi1TSExJQl9IT1NUPWVhYmkKLWV4cG9ydCBTSExJQl9IT1NUCi0KLSMgZG9uJ3QgdXNlIHVzZXIncyBURVJNSU5GTyB2YXJpYWJsZQotVEVSTUlORk89JHtERVNURElSfSR0aWNkaXIgOyBleHBvcnQgVEVSTUlORk8KLXVtYXNrIDAyMgotCi0jIENvbnN0cnVjdCB0aGUgbmFtZSBvZiB0aGUgb2xkIChvYnNvbGV0ZSkgcGF0aG5hbWUsIGUuZy4sIC91c3IvbGliL3Rlcm1pbmZvLgotVElDRElSPWBlY2hvICRURVJNSU5GTyB8IHNlZCAtZSAncyUvc2hhcmUvXChbXi9dKlwpJCUvbGliL1wxJSdgCi0KLSMgUmVtb3ZlIHRoZSBvbGQgdGVybWluZm8gc3R1ZmY7IHdlIGRvbid0IGNhcmUgaWYgaXQgZXhpc3RlZCBiZWZvcmUsIGFuZCBpdAotIyB3b3VsZCBnZW5lcmF0ZSBhIGxvdCBvZiBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZXMgaWYgd2UgdHJpZWQgdG8gb3ZlcndyaXRlIGl0LgotIyBXZSBleHBsaWNpdGx5IHJlbW92ZSBpdHMgY29udGVudHMgcmF0aGVyIHRoYW4gdGhlIGRpcmVjdG9yeSBpdHNlbGYsIGluIGNhc2UKLSMgdGhlIGRpcmVjdG9yeSBpcyBhY3R1YWxseSBhIHN5bWJvbGljIGxpbmsuCi0oIHRlc3QgLWQgIiRURVJNSU5GTyIgJiYgY2QgJFRFUk1JTkZPICYmIHJtIC1mciA/IDI+L2Rldi9udWxsICkKLQotaWYgdGVzdCAiJGV4dF9mdW5jcyIgPSAxIDsgdGhlbgotY2F0IDw8RU9GCi1SdW5uaW5nIHRpYyB0byBpbnN0YWxsICRURVJNSU5GTyAuLi4KLQotCVlvdSBtYXkgc2VlIG1lc3NhZ2VzIHJlZ2FyZGluZyBleHRlbmRlZCBjYXBhYmlsaXRpZXMsIGUuZy4sIEFYLgotCVRoZXNlIGFyZSBleHRlbmRlZCB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGNvbXBpbGVkCi0JdXNpbmcKLQkJdGljIC14Ci0JSWYgeW91IGhhdmUgbmN1cnNlcyA0LjIgYXBwbGljYXRpb25zLCB5b3Ugc2hvdWxkIHJlYWQgdGhlIElOU1RBTEwKLQlkb2N1bWVudCwgYW5kIGluc3RhbGwgdGhlIHRlcm1pbmZvIHdpdGhvdXQgdGhlIC14IG9wdGlvbi4KLQotRU9GCi1pZiAoICRTSExJQiB0aWMkc3VmZml4IC14IC1zIC1vICRURVJNSU5GTyAkc291cmNlICkKLXRoZW4KLQllY2hvICcqKiBidWlsdCBuZXcgJyRURVJNSU5GTwotZWxzZQotCWVjaG8gJz8gdGljIGNvdWxkIG5vdCBidWlsZCAnJFRFUk1JTkZPCi0JZXhpdCAxCi1maQotZWxzZQotY2F0IDw8RU9GCi1SdW5uaW5nIHRpYyB0byBpbnN0YWxsICRURVJNSU5GTyAuLi4KLQotCVlvdSBtYXkgc2VlIG1lc3NhZ2VzIHJlZ2FyZGluZyB1bmtub3duIGNhcGFiaWxpdGllcywgZS5nLiwgQVguCi0JVGhlc2UgYXJlIGV4dGVuZGVkIHRlcm1pbmFsIGNhcGFiaWxpdGllcyB3aGljaCBtYXkgYmUgY29tcGlsZWQKLQl1c2luZwotCQl0aWMgLXgKLQlJZiB5b3UgaGF2ZSBuY3Vyc2VzIDQuMiBhcHBsaWNhdGlvbnMsIHlvdSBzaG91bGQgcmVhZCB0aGUgSU5TVEFMTAotCWRvY3VtZW50LCBhbmQgaW5zdGFsbCB0aGUgdGVybWluZm8gd2l0aG91dCB0aGUgLXggb3B0aW9uLgotCi1FT0YKLWlmICggJFNITElCIHRpYyRzdWZmaXggLXMgLW8gJFRFUk1JTkZPICRzb3VyY2UgKQotdGhlbgotCWVjaG8gJyoqIGJ1aWx0IG5ldyAnJFRFUk1JTkZPCi1lbHNlCi0JZWNobyAnPyB0aWMgY291bGQgbm90IGJ1aWxkICckVEVSTUlORk8KLQlleGl0IDEKLWZpCi1maQotCi0jIE1ha2UgYSBzeW1ib2xpYyBsaW5rIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIGFwcGxpY2F0aW9ucyB0aGF0IGV4cGVjdAotIyB0byBmaW5kIHRlcm1pbmZvIHVuZGVyIC91c3IvbGliLiAgVGhhdCBpcywgd2UnbGwgX3RyeV8gdG8gZG8gdGhhdC4gIE5vdAotIyBhbGwgc3lzdGVtcyBzdXBwb3J0IHN5bWJvbGljIGxpbmtzLCBhbmQgdGhvc2UgdGhhdCBkbyBwcm92aWRlIGEgdmFyaWV0eQotIyBvZiBvcHRpb25zIGZvciAndGVzdCcuCi1pZiB0ZXN0ICIkVElDRElSIiAhPSAiJFRFUk1JTkZPIiA7IHRoZW4KLQkoIHJtIC1mICRUSUNESVIgMj4vZGV2L251bGwgKQotCWlmICggY2QgJFRJQ0RJUiAyPi9kZXYvbnVsbCApCi0JdGhlbgotCQljZCAkVElDRElSCi0JCVRJQ0RJUj1gcHdkYAotCQlpZiB0ZXN0ICRUSUNESVIgIT0gJFRFUk1JTkZPIDsgdGhlbgotCQkJIyBXZWxsLCB3ZSB0cmllZC4gIFNvbWUgc3lzdGVtcyBsaWUgdG8gdXMsIHNvIHRoZQotCQkJIyBpbnN0YWxsZXIgd2lsbCBoYXZlIHRvIGRvdWJsZS1jaGVjay4KLQkJCWVjaG8gIlZlcmlmeSBpZiAkVElDRElSIGFuZCAkVEVSTUlORk8gYXJlIHRoZSBzYW1lLiIKLQkJCWVjaG8gIlRoZSBuZXcgdGVybWluZm8gaXMgaW4gJFRFUk1JTkZPOyB0aGUgb3RoZXIgc2hvdWxkIGJlIGEgbGluayB0byBpdC4iCi0JCQllY2hvICJPdGhlcndpc2UsIHJlbW92ZSAkVElDRElSIGFuZCBsaW5rIGl0IHRvICRURVJNSU5GTy4iCi0JCWZpCi0JZWxzZQotCQljZCAke0RFU1RESVJ9JHByZWZpeAotCQkjIENvbnN0cnVjdCBhIHN5bWJvbGljIGxpbmsgdGhhdCBvbmx5IGFzc3VtZXMgJHRpY2RpciBoYXMgdGhlCi0JCSMgc2FtZSAkcHJlZml4IGFzIHRoZSBvdGhlciBpbnN0YWxsZWQgZGlyZWN0b3JpZXMuCi0JCVJFTEFUSVZFPWBlY2hvICR0aWNkaXJ8c2VkIC1lICdzJV4nJHByZWZpeCcvJSUnYAotCQlpZiB0ZXN0ICIkUkVMQVRJVkUiICE9ICIkdGljZGlyIiA7IHRoZW4KLQkJCVJFTEFUSVZFPS4uL2BlY2hvICR0aWNkaXJ8c2VkIC1lICdzJV4nJHByZWZpeCcvJSUnIC1lICdzJV4vJSUnYAotCQlmaQotCQlpZiAoIGxuIC1zICRSRUxBVElWRSAkVElDRElSICkKLQkJdGhlbgotCQkJZWNobyAnKiogc3ltLWxpbmtlZCAnJFRJQ0RJUicgZm9yIGNvbXBhdGliaWxpdHknCi0JCWVsc2UKLQkJCWVjaG8gJyoqIGNvdWxkIG5vdCBzeW0tbGluayAnJFRJQ0RJUicgZm9yIGNvbXBhdGliaWxpdHknCi0JCWZpCi0JZmkKLWZpCi0jIHZpbGU6c2htb2RlCmRpZmYgLS1naXQgYS9taXNjL3Rlcm1pbmZvLnNyYyBiL21pc2MvdGVybWluZm8uc3JjCmluZGV4IDkyYThkNjkuLmU1ZDE2ODcgMTAwNjQ0Ci0tLSBhL21pc2MvdGVybWluZm8uc3JjCisrKyBiL21pc2MvdGVybWluZm8uc3JjCkBAIC02LDggKzYsOCBAQAogIyBSZXBvcnQgYnVncyBhbmQgbmV3IHRlcm1pbmFsIGRlc2NyaXB0aW9ucyB0bwogIwlidWctbmN1cnNlc0BnbnUub3JnCiAjCi0jCSRSZXZpc2lvbjogMS4zNDEgJAotIwkkRGF0ZTogMjAwOC8xMC8xMiAyMzowMzo1NCAkCisjCSRSZXZpc2lvbjogMS41NDkgJAorIwkkRGF0ZTogMjAxNS8wNy8yNSAxOToyNzoyMCAkCiAjCiAjIFRoZSBvcmlnaW5hbCBoZWFkZXIgaXMgcHJlc2VydmVkIGJlbG93IGZvciByZWZlcmVuY2UuICBJdCBpcyBub3RlZCB0aGF0IHRoZXJlCiAjIGlzIGEgIm5ld2VyIiB2ZXJzaW9uIHdoaWNoIGRpZmZlcnMgaW4gc29tZSBjb3NtZXRpYyBkZXRhaWxzIChidXQgYWN0dWFsbHkKQEAgLTMyMSw3ICszMjEsNyBAQAogIyBERUwgYW5kIF5DIGFyZSBoYXJkY29kZWQgdG8gYWN0IGFzIGtpbGwgY2hhcmFjdGVycy4KICMgXkQgYWN0cyBhcyBhIGxpbmUgYnJlYWsgKGp1c3QgbGlrZSBuZXdsaW5lKS4KICMgSXQgYWxzbyBpbnRlcnByZXRzCi0jICAgICAgXDAzM107eHh4XDAwNyAKKyMgICAgICBcMDMzXTt4eHhcMDA3CiAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggeHRlcm0gLVRECiA5dGVybXxQbGFuOSB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgWCwKIAlhbSwKQEAgLTM0MCw3ICszNDAsNyBAQAogCWN1Yj1cRVslcDElZEQsIGN1ZD1cRVslcDElZEIsIGN1Zj1cRVslcDElZEMsCiAJY3V1PVxFWyVwMSVkQSwgdXNlPWFuc2krbG9jYWwxLAogYW5zaSt0YWJzLAotCWNidD1cRVtaLCBodD1eSSwgaHRzPVxFSCwgdGJjPVxFWzJnLAorCWNidD1cRVtaLCBodD1eSSwgaHRzPVxFSCwgdGJjPVxFWzNnLAogYW5zaStpbml0dGFicywKIAlpdCM4LCB1c2U9YW5zaSt0YWJzLAogYW5zaStlcmFzZSwKQEAgLTM3NiwxMSArMzc2LDE5IEBACiAJZGltPVxFWzJtLAogCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA1JXQyOyU7JT8lcDcldDg7JTttLAogCXVzZT1hbnNpK3NnciwgdXNlPWFuc2krc2dyc28sIHVzZT1hbnNpK3NncnVsLAotYW5zaStwcHxhbnNpIHByaW50ZXIgcG9ydCwKLQltYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAogYW5zaStjc3J8YW5zaSBzY3JvbGwtcmVnaW9uIHBsdXMgY3Vyc29yIHNhdmUgJiByZXN0b3JlLAogCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgcmM9XEU4LCBzYz1cRTcsCiAKKyMgVGhlIG5vcm1hbCAoQU5TSSkgZmxhdm9yIG9mICJtZWRpYSBjb3B5IiBidWlsZGluZyBibG9jayBhc3NlcnRzIHRoYXQKKyMgY2hhcmFjdGVycyBzZW50IHRvIHRoZSBwcmludGVyIGRvIG5vdCBlY2hvIG9uIHRoZSBzY3JlZW4uIERFQyB0ZXJtaW5hbHMKKyMgY2FuIGFsc28gYmUgcHV0IGludG8gYXV0b3ByaW50ZXIgbW9kZSwgd2hlcmUgZWFjaCBsaW5lIGlzIHNlbnQgdG8gdGhlCisjIHByaW50ZXIgYXMgeW91IG1vdmUgb2ZmIHRoYXQgbGluZSwgZS5nLiwgYnkgYSBjYXJyaWFnZSByZXR1cm4uCithbnNpK3BwfGFuc2kgcHJpbnRlciBwb3J0LAorCW1jNWksCisJbWMwPVxFW2ksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAorZGVjK3BwfERFQyBhdXRvcHJpbnRlciBtb2RlLAorCW1jMD1cRVtpLCBtYzQ9XEVbPzRpLCBtYzU9XEVbPzVpLAorCiAjIFRoZSBJQk0gUEMgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQuICBQbHVnIHRoaXMgaW50byBhbnkgSW50ZWwgY29uc29sZSBlbnRyeS4KICMgV2UgdXNlIFxFWzExbSBmb3Igcm1hY3MgcmF0aGVyIHRoYW4gXEVbMTJtIHNvIHRoZSA8YWNzYz4gc3RyaW5nIGNhbiB1c2UgdGhlCiAjIFJPTSBncmFwaGljcyBmb3IgY29udHJvbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgdGhlIGRpYW1vbmQsIHVwLSBhbmQgZG93bi1hcnJvdy4KQEAgLTQ1MiwxMiArNDYwLDE0IEBACiAjIEZvciBtb3JlIGRldGFpbCBvbiB0aGlzIHJhdGhlciBwYXRoZXRpYyBzdGFuZGFyZCwgc2VlIHRoZSBjb21tZW50cwogIyBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgogaWJjczJ8SW50ZWwgQmluYXJ5IENvbXBhdGliaWxpdHkgU3RhbmRhcmQgcHJlc2NyaXB0aW9ucywKLQljYnQ9XEVbWiwgY2xlYXI9XEVjLCBjdWI9XEVbJXAxJWRELCBjdWQ9XEVbJXAxJWRCLAotCWN1Zj1cRVslcDElZEMsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKKwljYnQ9XEVbWiwgY2xlYXI9XEVjLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFWzFELAorCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbMUIsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbMUMsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFWzFBLAogCWRjaD1cRVslcDElZFAsIGRpc3BjPVxFPSVwMSVkZywgZWNoPVxFWyVwMSVkWCwKLQlocGE9XEVbJWklcDElZEcsIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwKLQlpbmRuPVxFWyVwMSVkUywgcmM9XEU3LCByaW49XEVbJXAxJWRULCBybWFtPVxFWz83bCwgc2M9XEU3LAotCXNtYW09XEVbPzdoLCB0YmM9XEVbZywgdnBhPVxFWyVpJXAxJWRkLAorCWhwYT1cRVslaSVwMSVkRywgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALAorCWlsPVxFWyVwMSVkTCwgaW5kbj1cRVslcDElZFMsIHJjPVxFNywgcmluPVxFWyVwMSVkVCwKKwlybWFtPVxFWz83bCwgc2M9XEU3LCBzbWFtPVxFWz83aCwgdGJjPVxFW2csCisJdnBhPVxFWyVpJXAxJWRkLAogCiAjIyMjIEFOU0kvRUNNQS00OCB0ZXJtaW5hbHMgYW5kIHRlcm1pbmFsIGVtdWxhdG9ycwogIwpAQCAtNDg3LDcgKzQ5Nyw3IEBACiAjIGFuc2ktbXRhYnMgYWRkcyByZWxhdGl2ZSBhZGRyZXNzaW5nIGFuZCBtaW5pbWFsIHRhYiBzdXBwb3J0CiBhbnNpLW10YWJzfGFueSBhbnNpIHRlcm1pbmFsIHdpdGggcGVzc2ltaXN0aWMgYXNzdW1wdGlvbnMsCiAJaXQjOCwKLQlodD1eSSwgdXNlPWFuc2krbG9jYWwxLCB1c2U9YW5zaS1taW5pLAorCWh0PV5JLCB1c2U9YW5zaS1taW5pLCB1c2U9YW5zaStsb2NhbDEsCiAKICMgQU5TSSBYMy42NCBmcm9tIGVtb3J5IW1saGhoIChIdWdoIEhhbnNhcmQpIHZpYSBCUkwKICMKQEAgLTU0NSw3ICs1NTUsNyBAQAogCWN1ZDE9XEVbQiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwKIAlkY2gxPVxFW1AsIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLAogCWh0cz1cRUgsIGlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILCB0YmM9XEVbMmcsCisJa2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwgdGJjPVxFWzNnLAogCXVzZT1rbG9uZStzZ3ItZHVtYiwKIHBjYW5zaS0yNS1tfHBjYW5zaTI1bXxpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgd2l0aCAyNSBsaW5lcyAobW9ubyBtb2RlKSwKIAlsaW5lcyMyNSwgdXNlPXBjYW5zaS1tLApAQCAtNTc2LDcgKzU4Niw3IEBACiAJa2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAogCWtpY2gxPVxFW0wsIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBuZWw9XHJcRVtTLAogCXJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmluPVxFWyVwMSVkVCwgczBkcz1cRShCLAotCXMxZHM9XEUpQiwgczJkcz1cRSpCLCBzM2RzPVxFK0IsIHRiYz1cRVsyZywKKwlzMWRzPVxFKUIsIHMyZHM9XEUqQiwgczNkcz1cRStCLCB0YmM9XEVbM2csCiAJdnBhPVxFWyVpJXAxJWRkLCB1c2U9cGNhbnNpLW0sCiAKIGFuc2krZW5xfG5jdXJzZXMgZXh0ZW5zaW9uIGZvciBBTlNJIEVOUSwKQEAgLTYxNywxMSArNjI3LDQ1IEBACiAJY2xlYXI9XEVbMkosIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAogCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBlbD1cRVtrLCBob21lPVxFW0gsCiAJaXMyPVxFW21cRVs/N2gsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLAotCWtob21lPV5eLCBwZmtleT1cRVswOyVwMSV7NTh9JSslZDslcDIiJXMiLCByYz1cRVt1LAorCWtob21lPV5eLCBwZmtleT1cRVswOyVwMSV7NTh9JSslZDslcDIiJXMicCwgcmM9XEVbdSwKIAlybWFtPVxFWz83bCwgc2M9XEVbcywgc21hbT1cRVs/N2gsIHU2PVxFWyVpJWQ7JWRSLAogCXU3PVxFWzZuLCB1c2U9a2xvbmUrY29sb3IsIHVzZT1rbG9uZStzZ3I4LAorCisjIEtleXBhZDoJSG9tZT1cMEcJVXA9XDBICVByUGFnPVwwSQorIwkJa2ExLGtoCQlrY3V1MQkJa3BwLGthMworIworIwkJTGVmdD1cMEsJNT1cMEwJCVJpZ2h0PVwwTQorIwkJa2N1YjEJCWtiMgkJa2N1ZjEKKyMKKyMJCUVuZD1cME8JCURvd249XDBQCU54UGFnPVwwUQorIwkJa2MxLGtlbmQJa2N1ZDEJCWtjMyxrbnAKKyMKKyMJCUlucz1cMFIJCURlbD1cMFMKKyMJCWtpY2gxCQlrZGNoMQorIworIyBPbiBrZXlib2FyZCB3aXRoIDEyIGZ1bmN0aW9uIGtleXMsCisjCXNoaWZ0ZWQgZi1rZXlzOiBGMTMtRjI0CisjCWNvbnRyb2wgZi1rZXlzOiBGMjUtRjM2CisjCWFsdCBmLWtleXM6ICAgICBGMzctRjQ4CisjIFRoZSBzaGlmdC9jb250cm9sL2FsdCBrZXlzIGRvIG5vdCBtb2RpZnkgZWFjaCBvdGhlciwgYnV0IGFsdCBvdmVycmlkZXMgYm90aCwKKyMgYW5kIGNvbnRyb2wgb3ZlcnJpZGVzIHNoaWZ0LgorIworIyA8cGZrZXk+IGNhcGFiaWxpdHkgZm9yIEYxLUY0OCAtVEQKIGFuc2kuc3lzfEFOU0kuU1lTIDMuMSBhbmQgbGF0ZXIgdmVyc2lvbnMsCi0JZWw9XEVbSywgdXNlPWFuc2kuc3lzLW9sZCwKKwllbD1cRVtLLCBrYTE9XDBHLCBrYTM9XDBJLCBrYjI9XDBMLCBrYnM9XkgsIGtjMT1cME8sIGtjMz1cMFEsCisJa2NidD1cMF5PLCBrY3ViMT1cMEssIGtjdWQxPVwwUCwga2N1ZjE9XDBNLCBrY3V1MT1cMEgsCisJa2RjaDE9XDBTLCBrZW5kPVwwTywga2YxPVwwOywga2YxMD1cMEQsIGtmMTE9XDBcMjA1LAorCWtmMTI9XDBcMjA2LCBrZjEzPVwwVCwga2YxND1cMFUsIGtmMTU9XDBWLCBrZjE2PVwwVywKKwlrZjE3PVwwWCwga2YxOD1cMFksIGtmMTk9XDBaLCBrZjI9XDA8LCBrZjIwPVwwWywga2YyMT1cMFxcLAorCWtmMjI9XDBdLCBrZjIzPVwwXDIwNywga2YyND1cMFwyMTAsIGtmMjU9XDBcXiwga2YyNj1cMF8sCisJa2YyNz1cMGAsIGtmMjg9XDBhLCBrZjI5PVwwYiwga2YzPVwwPSwga2YzMD1cMGMsIGtmMzE9XDBkLAorCWtmMzI9XDBlLCBrZjMzPVwwZiwga2YzND1cMGcsIGtmMzU9XDBcMjExLCBrZjM2PVwwXDIxMiwKKwlrZjM3PVwwaCwga2YzOD1cMGksIGtmMzk9XDBqLCBrZjQ9XDA+LCBrZjQwPVwwaywga2Y0MT1cMGwsCisJa2Y0Mj1cMG0sIGtmNDM9XDBuLCBrZjQ0PVwwbywga2Y0NT1cMHAsIGtmNDY9XDBxLAorCWtmNDc9XDBcMjEzLCBrZjQ4PVwwXDIxNCwga2Y1PVwwPywga2Y2PVwwQCwga2Y3PVwwQSwga2Y4PVwwQiwKKwlrZjk9XDBDLCBraG9tZT1cMEcsIGtpY2gxPVwwUiwga25wPVwwUSwga3BwPVwwSSwKKwlwZmtleT1cRVswOyU/JXAxJXsxMX0lPCV0JSdcOiclZSVwMSV7MTN9JTwldCUneiclZSVwMSV7MjN9JTwldCUnRyclZSVwMSV7MjV9JTwldCUncCclZSVwMSUnIyclPCV0JSdFJyVlJXAxJSclJyU8JXQlJ2YnJWUlcDElJy8nJTwldCUnQyclZSV7OTJ9JTslcDElKyVkOyVwMiIlcyJwLAorCXVzZT1hbnNpLnN5cy1vbGQsCiAKICMKICMgRGVmaW5lIElCTSBQQyBrZXlwYWQga2V5cyBmb3IgdmkgYXMgcGVyIE1TLUtlcm1pdCB3aGlsZSB1c2luZyBBTlNJLlNZUy4KQEAgLTY1NCw4ICs2OTgsODQxIEBACiAJaXMyPVU0IFBDLURPUyBQdWJsaWMgRG9tYWluIE5BTlNJLlNZUyB3aXRoIGtleXBhZCByZWRlZmluZWQgZm9yIHZpIDktMjktODZcblxFWzs3NTs4cCwKIAl1c2U9YW5zaS5zeXNrLAogCi0jIyMjIEFOU0kgY29uc29sZSB0eXBlcworIyMjIyBBdGFyaSBTVCB0ZXJtaW5hbHMKKworIyBGcm9tIEd1aWRvIEZsb2hyIDxndWZsMDAwMEBzdHVkLnVuaS1zYi5kZT4uCiAjCit0dzUyfHR3NTItY29sb3J8VG9zd2luIHdpbmRvdyBtYW5hZ2VyIHdpdGggY29sb3IsCisJYmNlLAorCWNvbG9ycyMxNiwgcGFpcnMjMjU2LAorCW9jPVxFYj9cRWMwLCBvcD1cRWI/XEVjMCwKKwlzZXRhYj1cRWMlPyVwMSV7MH0lPSV0PyVlJXAxJXs3fSU9JXQwJWUlcDElezE1fSU9JXQ3JWUlcDElezQ4fSUrJWMsCisJc2V0YWY9XEViJT8lcDElezB9JT0ldD8lZSVwMSV7N30lPSV0MCVlJXAxJXsxNX0lPSV0NyVlJXAxJXs0OH0lKyVjLAorCXNldGI9XEVjJT8lcDElezB9JT0ldD8lZSVwMSV7N30lPSV0MCVlJXAxJXsxNX0lPSV0NyVlJXAxJXs0OH0lKyVjLAorCXNldGY9XEViJT8lcDElezB9JT0ldD8lZSVwMSV7N30lPSV0MCVlJXAxJXsxNX0lPSV0NyVlJXAxJXs0OH0lKyVjLAorCXVzZT10dzUyLW0sCit0dzUyLW18VG9zd2luIHdpbmRvdyBtYW5hZ2VyIG1vbm9jaHJvbWUsCisJdWwsCisJbWEjOTk5LAorCWJvbGQ9XEV5YSwgZGNoMT1cRWEsIGRpbT1cRXlCLAorCWlzMj1cRXZcRXFcRXpfXEVlXEVpXEViP1xFYzAsIHJldj1cRXlQLCBybXNvPVxFelEsCisJcm11bD1cRXpILCByczI9XEV2XEVxXEV6X1xFZVxFaVxFYj9cRWMwLCBzZ3IwPVxFel8sCisJc21zbz1cRXlRLCBzbXVsPVxFeUgsIHVzZT1hdC1tLAordHQ1MnxBdGFyaSBUVCBtZWRpdW0gYW5kIGhpZ2ggcmVzb2x1dGlvbiwKKwlsaW5lcyMzMCwgdXNlPWF0LWNvbG9yLAorc3Q1Mi1jb2xvcnxhdC1jb2xvcnxhdGFyaS1jb2xvcnxhdGFyaV9zdC1jb2xvcnxBdGFyaSBTVCB3aXRoIGNvbG9yLAorCWJjZSwKKwljb2xvcnMjMTYsIHBhaXJzIzI1NiwKKwlpczI9XEV2XEVxXEVlXEViMVxFYzAsIHJzMj1cRXZcRXFcRWVcRWIxXEVjMCwKKwlzZXRhYj1cRWMlPyVwMSV7MH0lPSV0MSVlJXAxJXsxfSU9JXQyJWUlcDElezJ9JT0ldDMlZSVwMSV7M30lPSV0PiVlJXAxJXs0fSU9JXQ0JWUlcDElezV9JT0ldDclZSVwMSV7Nn0lPSV0NSVlJXAxJXs3fSU9JXQwJWUlcDElezh9JT0ldDglZSVwMSV7OX0lPSV0OSVlJXAxJXsxMH0lPSV0XDolZSVwMSV7MTF9JT0ldDslZSVwMSV7MTJ9JT0ldDwlZSVwMSV7MTN9JT0ldD0lZSVwMSV7MTR9JT0ldDYlZT8sCisJc2V0YWY9XEViJT8lcDElezB9JT0ldDElZSVwMSV7MX0lPSV0MiVlJXAxJXsyfSU9JXQzJWUlcDElezN9JT0ldD4lZSVwMSV7NH0lPSV0NCVlJXAxJXs1fSU9JXQ3JWUlcDElezZ9JT0ldDUlZSVwMSV7N30lPSV0MCVlJXAxJXs4fSU9JXQ4JWUlcDElezl9JT0ldDklZSVwMSV7MTB9JT0ldFw6JWUlcDElezExfSU9JXQ7JWUlcDElezEyfSU9JXQ8JWUlcDElezEzfSU9JXQ9JWUlcDElezE0fSU9JXQ2JWU/LAorCXNldGI9XEVjJT8lcDElezB9JT0ldDElZSVwMSV7MX0lPSV0MiVlJXAxJXsyfSU9JXQzJWUlcDElezN9JT0ldD4lZSVwMSV7NH0lPSV0NCVlJXAxJXs1fSU9JXQ3JWUlcDElezZ9JT0ldDUlZSVwMSV7N30lPSV0MCVlJXAxJXs4fSU9JXQ4JWUlcDElezl9JT0ldDklZSVwMSV7MTB9JT0ldFw6JWUlcDElezExfSU9JXQ7JWUlcDElezEyfSU9JXQ8JWUlcDElezEzfSU9JXQ9JWUlcDElezE0fSU9JXQ2JWU/LAorCXNldGY9XEViJT8lcDElezB9JT0ldDElZSVwMSV7MX0lPSV0MiVlJXAxJXsyfSU9JXQzJWUlcDElezN9JT0ldD4lZSVwMSV7NH0lPSV0NCVlJXAxJXs1fSU9JXQ3JWUlcDElezZ9JT0ldDUlZSVwMSV7N30lPSV0MCVlJXAxJXs4fSU9JXQ4JWUlcDElezl9JT0ldDklZSVwMSV7MTB9JT0ldFw6JWUlcDElezExfSU9JXQ7JWUlcDElezEyfSU9JXQ8JWUlcDElezEzfSU9JXQ9JWUlcDElezE0fSU9JXQ2JWU/LAorCXVzZT1zdDUyLAorc3Q1MnxzdDUyLW18YXR8YXQtbXxhdGFyaXxhdGFyaS1tfGF0YXJpX3N0fGF0YXJpc3QtbXxBdGFyaSBTVCwKKwlhbSwgZW8sIG1pciwgbnBjLAorCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAorCWJlbD1eRywgY2l2aXM9XEVmLCBjbGVhcj1cRUUsIGNub3JtPVxFZSwgY3I9Xk0sIGN1YjE9XEVELAorCWN1ZDE9XEVCLCBjdWYxPVxFQywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKKwljdXUxPVxFQSwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGVsMT1cRW8sIGhvbWU9XEVILCBodD1eSSwKKwlpbDE9XEVMLCBpbmQ9XkosIGlzMj1cRXZcRXFcRWUsIGtMRlQ9XEVkLCBrUklUPVxFYywga2JzPV5ILAorCWtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2RjaDE9XDE3NywKKwlrZjE9XEVQLCBrZjEwPVxFWSwga2YxMT1cRXAsIGtmMTI9XEVxLCBrZjEzPVxFciwga2YxND1cRXMsCisJa2YxNT1cRXQsIGtmMTY9XEV1LCBrZjE3PVxFdiwga2YxOD1cRXcsIGtmMTk9XEV4LCBrZjI9XEVRLAorCWtmMjA9XEV5LCBrZjM9XEVSLCBrZjQ9XEVTLCBrZjU9XEVULCBrZjY9XEVVLCBrZjc9XEVWLCBrZjg9XEVXLAorCWtmOT1cRVgsIGtobHA9XEVILCBraG9tZT1cRUUsIGtpY2gxPVxFSSwga25wPVxFYiwga3BwPVxFYSwKKwlrdW5kPVxFSywgbmVsPV5NXkosIHJjPVxFaywgcmV2PVxFcCwgcmk9XEVJLCBybXNvPVxFcSwKKwlyczI9XEV2XEVxXEVlLCBzYz1cRWosIHNncjA9XEVxLCBzbXNvPVxFcCwKK3R3MTAwfHRvc3dpbiB2dDEwMCB3aW5kb3cgbWdyLAorCWVvLCBtaXIsIG1zZ3IsIHhvbiwKKwljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LCB2dCMzLAorCWFjc2M9KytcLFwsLS0uLjAwSUlgYGFhZmZnZ2hoampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAorCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFZiwKKwljbGVhcj1cRVsySlxFW0gsIGNub3JtPVxFZSwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKKwljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFQiwKKwljdWY9XEVbJXAxJWRDLCBjdWYxPVxFQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAorCWN1dT1cRVslcDElZEEsIGN1dTE9XEVBLCBkY2gxPVxFYSwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCisJZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwKKwlodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpbDE9XEVMLCBpbmQ9XkosIGlzMj1cRTxcRSkwLCBrYnM9XkgsCisJa2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2RjaDE9XDE3NywKKwlrZjE9XEVPUCwga2YxMD1cRU9ZLCBrZjExPVxFcCwga2YxMj1cRXEsIGtmMTM9XEVyLCBrZjE0PVxFcywKKwlrZjE1PVxFdCwga2YxNj1cRXUsIGtmMTc9XEV2LCBrZjE4PVxFdywga2YxOT1cRXgsIGtmMj1cRU9RLAorCWtmMjA9XEV5LCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsCisJa2Y4PVxFT1csIGtmOT1cRU9YLCBraGxwPVxFSCwga2hvbWU9XEVcRUUsIGtpY2gxPVxFSSwKKwlrbnA9XEViLCBrcHA9XEVcRWEsIGt1bmQ9XEVLLCBsbD1cRVsyNEgsIG5lbD1cRUUsCisJb2M9XEVbMzA7NDdtLCBvcD1cRVszMDs0N20sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCisJcm1hY3M9Xk8sIHJtY3VwPVxFWz83aCwgcm1pcj1cRWksIHJta3g9XEVbPzFsXEU+LAorCXJtc289XEVbbSwgcm11bD1cRVttLAorCXJzMT1cRTxcRVsyMGxcRVs/Mzs2OzlsXEVbclxFcVxFKEJcMDE3XEUpMFxFPiwKKwlzYz1cRTcsCisJc2V0Yj1cRVs0JXAxJScwJyUrJVBhJT8lZ2ElJzAnJT0ldDAlZSVnYSUnMSclPSV0NCVlJWdhJScyJyU9JXQyJWUlZ2ElJzMnJT0ldDYlZSVnYSUnNCclPSV0MSVlJWdhJSc1JyU9JXQ1JWUlZ2ElJzYnJT0ldDMlZTclO20sCisJc2V0Zj1cRVszJXAxJScwJyUrJVBhJT8lZ2ElJzAnJT0ldDAlZSVnYSUnMSclPSV0NCVlJWdhJScyJyU9JXQyJWUlZ2ElJzMnJT0ldDYlZSVnYSUnNCclPSV0MSVlJWdhJSc1JyU9JXQ1JWUlZ2ElJzYnJT0ldDMlZTclO20sCisJc2dyMD1cRVttLCBzbWFjcz1eTiwgc21jdXA9XEVbPzdsLCBzbWlyPVxFaCwKKwlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAorIyBUaGUgZW50cmllcyBmb3Igc3R2NTIgYW5kIHN0djUycGMgcHJvYmFibHkgbmVlZCBhIHJldmlzaW9uLgorc3R2NTJ8TWlOVCB2aXJ0dWFsIGNvbnNvbGUsCisJYW0sIG1zZ3IsCisJY29scyM4MCwgaXQjOCwgbGluZXMjMzAsCisJYmVsPV5HLCBibGluaz1cRXIsIGJvbGQ9XEV5QSwgY2l2aXM9XEVmLCBjbGVhcj1cRUUsCisJY25vcm09XEUuIFxFZSwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVCLCBjdWYxPVxFQywKKwljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgY3Z2aXM9XEUuIiwKKwlkaW09XEVtLCBkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBpbDE9XEVMLAorCWluZD1cbiQ8MiovPiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAorCWtjdXUxPVxFQSwga2RjaDE9XDE3Nywga2YxPVxFUCwga2YxMD1cRVksIGtmMTE9XEVwLCBrZjEyPVxFcSwKKwlrZjEzPVxFciwga2YxND1cRXMsIGtmMTU9XEV0LCBrZjE2PVxFdSwga2YxNz1cRXYsIGtmMTg9XEV3LAorCWtmMTk9XEV4LCBrZjI9XEVRLCBrZjIwPVxFeSwga2YzPVxFUiwga2Y0PVxFUywga2Y1PVxFVCwKKwlrZjY9XEVVLCBrZjc9XEVWLCBrZjg9XEVXLCBrZjk9XEVYLCBraGxwPVxFSCwga2hvbWU9XEVFLAorCWtpY2gxPVxFSSwga25wPVxFYiwga3BwPVxFYSwga3VuZD1cRUssIG5lbD1cclxuJDwyKi8+LAorCW9wPVxFYkBcRWNPLCByZXY9XEVwLCByaT1cRUkkPDIqLz4sIHJtY3VwPVxFdlxFLiBcRWVcRXpfLAorCXJtc289XEVxLCBybXVsPVxFekgsIHJzMT1cRXpfXEViQFxFY0EsIHNncjA9XEV6XywKKwlzbWN1cD1cRXZcRWVcRXpfLCBzbXNvPVxFcCwgc211bD1cRXlILAorc3R2NTJwY3xNaU5UIHZpcnR1YWwgY29uc29sZSB3aXRoIFBDIGNoYXJzZXQsCisJYW0sIG1zZ3IsCisJY29scyM4MCwgaXQjOCwgbGluZXMjMzAsCisJYWNzYz0rXDI1N1wsXDI1Ni1cXi52MFwzMzNJXDM3NGBcMTc3YVwyNjBmXDM3MGdcMzYxaFwyNjFqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b1wzNzdwLXFcMzA0ci1zX3QrdSt2K3creFwyNjN5XDM2M3pcMzYye1wzNDN8XDM2Nn1cMjM0flwzNzEsCisJYmVsPV5HLCBibGluaz1cRXIsIGJvbGQ9XEV5QSwgY2l2aXM9XEVmLCBjbGVhcj1cRUUsCisJY25vcm09XEUuIFxFZSwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVCLCBjdWYxPVxFQywKKwljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgY3Z2aXM9XEUuIiwKKwlkaW09XEVtLCBkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBpbDE9XEVMLAorCWluZD1cbiQ8MiovPiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAorCWtjdXUxPVxFQSwga2RjaDE9XDE3Nywga2YxPVxFUCwga2YxMD1cRVksIGtmMTE9XEVwLCBrZjEyPVxFcSwKKwlrZjEzPVxFciwga2YxND1cRXMsIGtmMTU9XEV0LCBrZjE2PVxFdSwga2YxNz1cRXYsIGtmMTg9XEV3LAorCWtmMTk9XEV4LCBrZjI9XEVRLCBrZjIwPVxFeSwga2YzPVxFUiwga2Y0PVxFUywga2Y1PVxFVCwKKwlrZjY9XEVVLCBrZjc9XEVWLCBrZjg9XEVXLCBrZjk9XEVYLCBraGxwPVxFSCwga2hvbWU9XEVFLAorCWtpY2gxPVxFSSwga25wPVxFYiwga3BwPVxFYSwga3VuZD1cRUssIG5lbD1cclxuJDwyKi8+LAorCXJldj1cRXAsIHJpPVxFSSQ8MiovPiwgcm1jdXA9XEV2XEUuIFxFZVxFel8sIHJtc289XEVxLAorCXJtdWw9XEV6SCwgcnMxPVxFel9cRWJAXEVjQSwgc2dyMD1cRXpfLCBzbWN1cD1cRXZcRWVcRXpfLAorCXNtc289XEVwLCBzbXVsPVxFeUgsCisKKyMgRnJvbTogU2ltc29uIEwuIEdhcmZpbmtlbCA8c2ltc29uZ0BtZWRpYS1sYWIubWl0LmVkdT4KK2F0YXJpLW9sZHxhdGFyaSBzdCwKKwlPVGJzLCBhbSwKKwljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKKwljbGVhcj1cRUhcRUosIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCisJY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRsMT1cRU0sCisJZWQ9XEVKLCBlbD1cRUssIGh0PV5JLCBpbDE9XEVMLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKKwlrY3VmMT1cRUMsIGtjdXUxPVxFQSwgcmk9XEVJLCBybXNvPVxFcSwgc2dyMD1cRXEsIHNtc289XEVwLAorIyBVbmlUZXJtIHRlcm1pbmFsIHByb2dyYW0gZm9yIHRoZSBBdGFyaSBTVDogIDQ5LWxpbmUgVlQyMjAgZW11bGF0aW9uIG1vZGUKKyMgRnJvbTogUGF1bCBNLiBBb2tpIDxhb2tpQHVjYnZheC5iZXJrZWxleS5lZHU+Cit1bml0ZXJtfHVuaXRlcm00OXxVbmlUZXJtIFZUMjIwIGVtdWxhdG9yIHdpdGggNDkgbGluZXMsCisJbGluZXMjNDksCisJaXMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aFxFWzE7NDlyXEVbNDk7MUgsCisJdXNlPXZ0MjIwLAorIyBNaU5UIFZUNTIgZW11bGF0aW9uLiA4MCBjb2x1bW5zLCAyNSByb3dzLgorIyBNaU5UIGlzIE5vdyBUT1MsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdoaWNoIGNvbWVzIHdpdGggYWxsIEF0YXJpcyBub3cKKyMgKG1haW5seSBBdGFyaSBGYWxjb24pLiBUaGlzIHRlcm1jYXAgaXMgZm9yIHRoZSBWVDUyIGVtdWxhdGlvbiB5b3UgZ2V0CisjIHVuZGVyIHRjc2gvenNoL2Jhc2gvc2gva3NoL2FzaC9jc2ggd2hlbiB5b3UgcnVuIE1pTlQgaW4gYGNvbnNvbGUnIG1vZGUKKyMgRnJvbTogUGVyIFBlcnNzb24gPHBwQGdudS5haS5taXQuZWR1PiwgMjcgRmViIDE5OTYKK3N0NTItb2xkfEF0YXJpIFNUIHdpdGggVlQ1MiBlbXVsYXRpb24sCisJYW0sIGttLAorCWNvbHMjODAsIGxpbmVzIzI1LAorCWJlbD1eRywgY2l2aXM9XEVmLCBjbGVhcj1cRUhcRUosIGNub3JtPVxFZSwgY3I9Xk0sIGN1YjE9XEVELAorCWN1ZDE9XEVCLCBjdWYxPVxFQywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKKwljdXUxPVxFQSwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWwxPVxFTCwKKwlpbmQ9XkosIGthMT1cRSM3LCBrYTM9XEUjNSwga2IyPVxFIzksIGticz1eSCwga2MxPVxFIzEsCisJa2MzPVxFIzMsIGtjbHI9XEUjNywga2N1YjE9XEUjSywga2N1ZDE9XEUjUCwga2N1ZjE9XEUjTSwKKwlrY3V1MT1cRSNILCBrZjA9XEUjRCwga2YxPVxFIzssIGtmMj1cRSM8LCBrZjM9XEUjPSwga2Y0PVxFIz4sCisJa2Y1PVxFIz8sIGtmNj1cRSNALCBrZjc9XEUjQSwga2Y4PVxFI0IsIGtmOT1cRSNDLCBraG9tZT1cRSNHLAorCWtpbDE9XEUjUiwga2luZD1cRSMyLCBrcmk9XEUjOCwgbGYwPWYxMCwgbmVsPV5NXkosIHJjPVxFaywKKwlyaT1cRUksIHJtY3VwPSwgcm1zbz1cRXEsIHJzMT1cRXpfXEViQFxFY0EsIHNjPVxFaiwgc2dyMD1cRXEsCisJc21jdXA9XEVlLCBzbXNvPVxFcCwKKworIyMjIyBBcHBsZSBUZXJtaW5hbC5hcHAKKworIyBuc3Rlcm0qfEFwcGxlX1Rlcm1pbmFsIC0gQXBwS2l0IFRlcm1pbmFsLmFwcAorIworIyBUZXJtaW5hbC5hcHAgaXMgYSBUZXJtaW5hbCBlbXVsYXRvciBidW5kbGVkIHdpdGggTmVYVCdzIE5lWFRTdGVwIGFuZAorIyBPUEVOU1RFUC9NYWNoIG9wZXJhdGluZyBzeXN0ZW1zLCBhbmQgd2l0aCBBcHBsZSdzIFJoYXBzb2R5LCBNYWMgT1MgWAorIyBTZXJ2ZXIgYW5kIE1hYyBPUyBYIG9wZXJhdGluZyBzeXN0ZW1zLiBUaGVyZSBpcyBhbHNvIGEKKyMgInRlcm1pbmFsLmFwcCIgaW4gR05VU3RlcCwgYnV0IEkgYmVsaWV2ZSBpdCB0byBiZSBhbiB1bnJlbGF0ZWQKKyMgY29kZWJhc2UgYW5kIEkgaGF2ZSBub3QgYXR0ZW1wdGVkIHRvIGRlc2NyaWJlIGl0IGhlcmUuCisjCisjIEZvciBOZVhUU3RlcCwgT1BFTlNURVAvTWFjaCwgUmhhcHNvZHkgYW5kIE1hYyBPUyBYIFNlcnZlciAxLjAsIHlvdQorIyBhcmUgcHJldHR5IG11Y2ggb24geW91ciBvd24uIFVzZSAibnN0ZXJtLTctbSIgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgorIyBZb3UgbWlnaHQgYWxzbyB0cnkgIm5zdGVybS03IiBhbmQgIm5zdGVybS1vbGQiIGlmIHlvdSBzdXNwZWN0IHlvdXIKKyMgdmVyc2lvbiBzdXBwb3J0cyBjb2xvci4KKyMKKyMgVG8gZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG9mIFRlcm1pbmFsLmFwcCB5b3UncmUgdXNpbmcgYnkgcnVubmluZzoKKyMKKyMgICAgIGVjaG8gIiRURVJNX1BST0dSQU0iICIkVEVSTV9QUk9HUkFNX1ZFUlNJT04iCisjCisjIEZvciBBcHBsZV9UZXJtaW5hbCB2MzA5KywgdXNlICJuc3Rlcm0tMjU2Y29sb3IiIChvciAibnN0ZXJtLWJjZSIpCisjCisjIEZvciBBcHBsZV9UZXJtaW5hbCB2MjAwKywgdXNlICJuc3Rlcm0tMTZjb2xvciIgKGEuay5hLiAibnN0ZXJtIikKKyMKKyMgRm9yIEFwcGxlX1Rlcm1pbmFsIHY3MSsvdjEwMCssIHVzZSAibnN0ZXJtLWJjZSIuCisjCisjIEZvciBBcHBsZV9UZXJtaW5hbCB2NTErLCB1c2UgIm5zdGVybS03LWMiIG9yICJuc3Rlcm0tNy1jLXMiLgorIworIyBGb3IgQXBwbGVfVGVybWluYWwgdjQxKywgdXNlICJuc3Rlcm0tb2xkIiwgb3IgIm5zdGVybS1zIi4KKyMKKyMgRm9yIGFsbCBlYXJsaWVyIHZlcnNpb25zIChBcHBsZV9UZXJtaW5hbCksIHRyeSAibnN0ZXJtLTctbSIKKyMgKG1vbm9jaHJvbWUpIG9yICJuc3Rlcm0tNyIgKGNvbG9yKTsgIm5zdGVybS03LW0tcyIgYW5kICJuc3Rlcm0tNy1zIgorIyBtaWdodCB3b3JrIHRvbywgYnV0IHJlYWxseSB5b3UncmUgb24geW91ciBvd24gaGVyZSBzaW5jZSB0aGVzZQorIyBzeXN0ZW1zIGFyZSB2ZXJ5IG9ic29sZXRlIGFuZCBJIGNhbid0IHRlc3QgdGhlbS4gSSBkbyB3ZWxjb21lCisjIHBhdGNoZXMsIHRob3VnaCA6KS4KKworIyBPdGhlciBUZXJtaW5hbHM6CisjCisjIEZvciBHTlVzdGVwX1Rlcm1pbmFsLCB5b3UncmUgcHJvYmFibHkgYmVzdCBvZmYgdXNpbmcgImxpbnV4IiBvcgorIyB3cml0aW5nIHlvdXIgb3duIHRlcm1pbmZvLgorCisjIEZvciBNYWNUZWxuZXQsIHlvdSdyZSBvbiB5b3VyIG93bi4gSXQncyBhIGRpZmZlcmVudCBjb2RlYmFzZSwgYW5kCisjIHNlZW1zIHRvIGJlIHNvbWV3aGVyZSBiZXR3ZWVuICJ2dDEwMiIsICJuY3NhIiBhbmQgInh0ZXJtLWNvbG9yIi4KKworIyBGb3IgaVRlcm0uYXBwLCBzZWUgIml0ZXJtIi4KKworIworIyBUaGUgQXBwS2l0IFRlcm1pbmFsLmFwcCBkZXNjcmlwdGlvbnMgYWxsIGhhdmUgbmFtZXMgYmVnaW5uaW5nIHdpdGgKKyMgIm5zdGVybSIuIE5vdGUgdGhhdCB0aGUgc3RhdHVzbGluZSAoLXMpIHZlcnNpb25zIHVzZSB0aGUgd2luZG93CisjIHRpdGxlYmFyIGFzIGEgcGhvbnkgc3RhdHVzIGxpbmUsIGFuZCBtYXkgcHJvZHVjZSB3YXJuaW5ncyBkdXJpbmcKKyMgY29tcGlsYXRpb24gYXMgYSByZXN1bHQgKCJ0c2wgdXNlcyAwIHBhcmFtZXRlcnMsIGV4cGVjdGVkIDEiLikKKyMgSWdub3JlIHRoZXNlIHdhcm5pbmdzLCBvciBldmVuIGlnbm9yZSB0aGVzZSBlbnRyaWVzIGVudGlyZWx5LiBBcHBzCisjIHdoaWNoIG5lZWQgdG8gcG9zaXRpb24gdGhlIGN1cnNvciBvciBkbyBvdGhlciBmYW5jeSBzdHVmZiBpbnNpZGUgdGhlCisjIHN0YXR1cyBsaW5lIHdvbid0IHdvcmsgd2l0aCB0aGVzZSBlbnRyaWVzLiBUaGV5J3JlIHByaW1hcmlseSB1c2VmdWwKKyMgZm9yIHByb2dyYW1zIGxpa2UgUGluZSB3aGljaCBwcm92aWRlIHNpbXBsZSBub3RpZmljYXRpb25zIGluIHRoZQorIyBzdGF0dXMgbGluZS4gUGxlYXNlIG5vdGUgdGhhdCBub24tQVNDSUkgY2hhcmFjdGVycyBkb24ndCB3b3JrIHJpZ2h0CisjIGluIHRoZSBzdGF0dXMgbGluZSwgc2luY2UgVGVybWluYWwuYXBwIGluY29ycmVjdGx5IGludGVycHJldHMgdGhlaXIKKyMgVW5pY29kZSBjb2RlcG9pbnRzIGFzIE1hY1JvbWFuIGNvZGVwb2ludHMgKGluIGVhcmxpZXIgTWFjIE9TIFgKKyMgdmVyc2lvbnMpIG9yIG9ubHkgYWNjZXB0cyBzdGF0dXMgbGluZXMgY29uc2lzdGluZyBlbnRpcmVseSBvZgorIyBjaGFyYWN0ZXJzIGZyb20gdGhlIGZpcnN0IDI1NiBVbmljb2RlIHBvc2l0aW9ucyAoaW5jbHVkaW5nIEMxIGJ1dAorIyBub3QgQzAgb3IgREVMLikKKyMKKyMgVGhlIE15dGhvbG9neSogb2YgQXBwS2l0IFRlcm1pbmFsLmFwcDoKKyMKKyMgSW4gdGhlIGRheXMgb2YgTmVYVFNUZXAgMC54IGFuZCAxLnggdGhlcmUgd2VyZSB0d28gaW5jb21wYXRpYmxlCisjIGJ1bmRsZWQgdGVybWluYWwgZW11bGF0b3JzLCBTaGVsbCBhbmQgVGVybWluYWwuIFNjb3R0IEhlc3Mgd3JvdGUgYQorIyBzaGFyZXdhcmUgcmVwbGFjZW1lbnQgZm9yIFRlcm1pbmFsIGNhbGxlZCAiU3R1YXJ0IiB3aGljaCBOZVhUIGJvdWdodAorIyBhbmQgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIHRoZSBUZXJtaW5hbC5hcHAgaW4gTmVYVHN0ZXAgMissCisjIE9QRU5TVEVQL01hY2gsIEFwcGxlIFJoYXBzb2R5LCBNYWMgT1MgWCBTZXJ2ZXIgMS4wLCBhbmQgTWFjIE9TIFguIEkKKyMgZG9uJ3Qga25vdyB0aGUgVEVSTV9QUk9HUkFNIGFuZCBURVJNX1BST0dSQU1fVkVSU0lPTiBzZXR0aW5ncyBvcgorIyBjYXBhYmlsaXRpZXMgZm9yIHRoZSBlYXJseSB2ZXJzaW9ucywgYnV0IEkgYmVsaWV2ZSB0aGF0IHRoZQorIyBURVJNX1BST0dSQU1fVkVSU0lPTiBtYXkgaGF2ZSBiZWVuIHJlc2V0IGF0IHNvbWUgcG9pbnQuCisjCisjIFRoZSBlYXJseSB2ZXJzaW9ucyB3ZXJlIHRhaWxvcmVkIHRvIHRoZSBOZVhUIGNoYXJhY3RlciBzZXQuIFNvbWV0aW1lCisjIGFmdGVyIHRoZSBBcHBsZSBhcXVpc2l0aW9uIHRoZSBlbmNvZGluZyB3YXMgc3dpY2hlZCB0byBNYWNSb21hbgorIyAoaW5pdGFsbHkgd2l0aCBzZXJpb3VzIGFsdGNoYXJzZXQgYnVncyBkdWUgdG8gaW5jb21wbGV0ZSBjb252ZXJzaW9uCisjIG9mIHRoZSBvbGQgTmVYVCBjb2RlLCkgYW5kIHRoZW4gbGF0ZXIgdG8gVVRGLTguIEFsb3Mgc29tZXRpbWUgZHVyaW5nCisjIG9yIGp1c3QgcHJpb3IgdG8gdGhlIGVhcmx5IGRheXMgb2YgTWFjIE9TIFgsIHRoZSBUZXJtaW5hbCBncmV3IEFOU0kKKyMgOC1jb2xvciBzdXBwb3J0IChpbml0aWFsbHkgYnVnZ3kgd2hlbiBjb21iaW5lZCB3aXRoIGF0dHJpYnV0ZXMsIGJ1dAorIyB0aGF0IHdhcyBsYXRlciBmaXhlZC4pIE1vcmUgcmVjZW50bHksIGFyb3VuZCBNYWMgT1MgWCB2ZXJzaW9uIDEwLjMKKyMgb3Igc28gKFRlcm1pbmFsLmFwcCB2MTAwKykgeHRlcm0tbGlrZSAxNi1jb2xvciBzdXBwb3J0IHdhcyBhZGRlZC4gSW4KKyMgc29tZSB2ZXJzaW9ucyAoZm9yIGluc3RhbmNlIDEzMy0xIHdoaWNoIHNoaXBwZWQgd2l0aCBNYWMgT1MgWAorIyB2ZXJzaW9uIDEwLjQpIHRoaXMgc3VmZmVyZWQgZnJvbSB0aGUgPGJjZT4gYnVnLCBidXQgdGhhdCBzZWVtcyB0bworIyBoYXZlIGJlZW4gZml4ZWQgaW4gTWFjIE9TIFggdmVyc2lvbiAxMC41IChUZXJtaW5hbC5hcHAgdjI0MC4yKykuCisjCisjIEluIHRoZSBlYXJseSBkYXlzIG9mIE1hYyBPUyBYIHRoZSB0ZXJtaW5hbCB3YXMgZmFpcmx5IGJ1Z2d5IGFuZAorIyB3b3VsZCByb3V0aW5lbHkgY3Jhc2ggdW5kZXIgbG9hZC4gTWFueSBvZiB0aGVzZSBidWdzIHNlZW0gdG8gaGF2ZQorIyBiZWVuIGZpeGVkIGFyb3VuZCBNYWMgT1MgWCB2ZXJzaW9uIDEwLjMgKFRlcm1pbmFsLmFwcCB2MTAwKykgYnV0CisjIHNvbWUgbWF5IHN0aWxsIHJlbWFpbi4gVGhpcyBjaGFuZ2Ugc2VlbXMgdG8gY29ycmVzcG9uZCB0bworIyBUZXJtaW5hbC5hcHAgcmVwb3J0aW5nICJ4dGVybS1jb2xvciIgYXMgJFRFUk0gcmF0aGVyIHRoYW4gInZ0MTAwIiBhcworIyBpdCBkaWQgcHJldmlvdXNseS4KKyMKKyMgKiBUaGlzIG1heSBjb3JyZXNwb25kIHdpdGggd2hhdCBhY3R1YWxseSBoYXBwZW5lZCwgYnV0IEkgZG9uJ3QKKyMgICBrbm93LiBJdCBpcyBiYXNlZCBvbiBndWVzc3dvcmssIGhlYXJzYXksIHByaXZhdGUgY29ycmVzcG9uZGVuY2UsCisjICAgbXkgZmF1bHR5IG1lbW9yeSwgYW5kIHRoZSBmb2xsb3dpbmcgb25saW5lIHNvdXJjZXMgYW5kIHJlZmVyZW5jZXM6CisjCisjIFsxXSAiVGhyZWUgU2NvdHRzIGFuZCBhIER1YW5lIiBieSBTaW1zb24gTC4gR2FyZmlua2VsCisjIGh0dHA6Ly93d3cubmV4dGNvbXB1dGVycy5vcmcvTmVYVGZpbGVzL0FydGljbGVzL05lWFRXT1JMRC85My44LzkzLjguRGVjLkNvbW11bml0eTEuaHRtbAorIworIyBbMl0gTmVYVFNURVAgZW50cnkgZnJvbSBXaWtpcGVkaWEsIHRoZSBmcmVlIGVuY3ljbG9wZWRpYQorIyBodHRwczovL3NlY3VyZS53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9lbi93aWtpL05leHRzdGVwCisjCisjICogUmVuYW1lZCB0aGUgQXBwS2l0IFRlcm1pbmFsLmFwcCBlbnRyeSBmcm9tICJBcHBsZV9UZXJtaW5hbCIgdG8KKyMgICAibnN0ZXJtIiB0byBjb21wbHkgd2l0aCB0aGUgbmFtZSBsZW5ndGggYW5kIGNhc2UgY29udmVudGlvbnMgYW5kCisjICAgbGltaXRhdGlvbnMgb2YgdmFyaW91cyBzb2Z0d2FyZSBwYWNrYWdlcyBbbm90YWJseSBTb2xhcmlzIHRlcm1pbmZvCisjICAgYW5kIFVOSVguXSBBIHNpbmdsZSBBcHBsZV9UZXJtaW5hbCBhbGlhcyBpcyByZXRhaW5lZCBmb3IKKyMgICBiYWNrd2FyZHMtY29tcGF0YmlsaXR5LgorIworIyAqIEFkZGVkIGZ1bmN0aW9uIGtleSBzdXBwb3J0IChGMS1GNCkuIFRoZXNlIG9ubHkgd29yayBpbiBUZXJtaW5hbC5hcHAKKyMgICB2ZXJzaW9uIDUxLCBob3BlZnVsbHkgdGhlIGNhcGFiaWxpdGllcyB3b24ndCBjYXVzZSBwcm9ibGVtcyBmb3IgcGVvcGxlCisjICAgdXNpbmcgdmVyc2lvbiA0MS4KKyMKKyMgKiBBZGRlZCAiZnVsbCBjb2xvciIgKC1jKSBlbnRyaWVzIHdoaWNoIHN1cHBvcnQgdGhlIDE2LWNvbG9yIG1vZGUgaW4KKyMgICB2ZXJzaW9uIDUxLgorIworIyAqIEJ5IGRlZmF1bHQsIHZlcnNpb24gNTEgdXNlcyBVVEYtOCBlbmNvZGluZyB3aXRoIGJyb2tlbiBhbHRjaGFyc2V0CisjICAgc3VwcG9ydCwgc28gIkFTQ0lJIiAoLTcpIGVudHJpZXMgd2l0aG91dCBhbHRjaGFyc2V0IHN1cHBvcnQgd2VyZQorIyAgIGFkZGVkLgorCisjIG5zdGVybSAtIEFwcEtpdCBUZXJtaW5hbC5hcHAKKyMKKyMgQXBwbGUncyBNYWMgT1MgWCBpbmNsdWRlcyBhIFRlcm1pbmFsLmFwcCBkZXJpdmVkIGZyb20gdGhlIG9sZCBOZVhUCisjIFRlcm1pbmFsLmFwcC4gSXQgaXMgYSBwYXJ0aWFsIFZUMTAwIGVtdWxhdGlvbiB3aXRoIHNvbWUgeHRlcm0tbGlrZQorIyBleHRlbnNpb25zLiBUaGlzIHRlcm1pbmZvIHdhcyB3cml0dGVuIHRvIGRlc2NyaWJlIHZlcnNpb25zIDQxCisjIChzaGlwcGVkIHdpdGggTWFjIE9TIFggdmVyc2lvbiAxMC4wKSBhbmQgNTEgKHNoaXBwZWQgd2l0aCBNYWMgT1MgWAorIyB2ZXJzaW9uIDEwLjEpIG9mIFRlcm1pbmFsLmFwcC4KKyMKKyMgVGVybWluYWwuYXBwIHJ1bnMgdW5kZXIgdGhlIE1hYyBPUyBYIFF1YXJ0eiB3aW5kb3dpbmcgc3lzdGVtIChhbmQKKyMgb3RoZXIgQXBwS2l0LXN1cHBvcnRlZCB3aW5kb3dpbmcgc3lzdGVtcy4pICBPbiB0aGUgTWFjIE9TIFggbWFjaGluZSBJCisjIHVzZSwgdGhlIGV4ZWN1dGFibGUgZm9yIFRlcm1pbmFsLmFwcCBpczoKKyMgL0FwcGxpY2F0aW9ucy9VdGlsaXRpZXMvVGVybWluYWwuYXBwL0NvbnRlbnRzL01hY09TL1Rlcm1pbmFsCisjCisjIElmIHlvdSdyZSBsb29raW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmdWxsLXNjcmVlbiBzeXN0ZW0KKyMgY29uc29sZSB3aGljaCBydW5zIHVuZGVyIEFwcGxlJ3MgRGFyd2luIG9wZXJhdGluZyBzeXN0ZW0gb24gUG93ZXJQQworIyBwbGF0Zm9ybXMsIHNlZSB0aGUgInhudXBwYyIgZW50cnkgaW5zdGVhZC4KKyMKKyMgVGhlcmUgd2VyZSBubyBmdW5jdGlvbiBrZXlzIGluIHZlcnNpb24gNDEuIEluIHZlcnNpb24gNTEsIHRoZXJlIGFyZQorIyBmb3VyIHdvcmtpbmcgZnVuY3Rpb24ga2V5cyAoRjEsIEYyLCBGMyBhbmQgRjQuKSBUaGUgZnVuY3Rpb24ga2V5cworIyBhcmUgaW5jbHVkZWQgaW4gYWxsIG9mIHRoZXNlIGVudHJpZXMuCisjCisjIEl0IGRvZXMgbm90IHN1cHBvcnQgbW91c2UgcG9pbnRlciBwb3NpdGlvbiByZXBvcnRpbmcuIFVuZGVyIHNvbWUKKyMgY2lyY3Vtc3RhbmNlcyB0aGUgY3Vyc29yIGNhbiBiZSBwb3NpdGlvbmVkIHVzaW5nIG9wdGlvbi1jbGljazsgdGhpcworIyB3b3JrcyBieSBjb21wYXJpbmcgdGhlIGN1cnNvciBwb3NpdGlvbiBhbmQgdGhlIHNlbGVjdGVkIHBvc2l0aW9uLAorIyBhbmQgc2ltdWxhdGluZyBlbm91Z2ggY3Vyc29yLWtleSBwcmVzc2VzIHRvIG1vdmUgdGhlIGN1cnNvciB0byB0aGUKKyMgc2VsZWN0ZWQgcG9zaXRpb24uIFRoaXMgdGVjaG5pcXVlIGZhaWxzIGluIGFsbCBidXQgdGhlIHNpbXBsZXN0CisjIGFwcGxpY2F0aW9ucy4KKyMKKyMgSXQgcHJvdmlkZXMgcGFydGlhbCBBTlNJIGNvbG9yIHN1cHBvcnQgKGJhY2tncm91bmQgY29sb3JzIGludGVyYWN0ZWQKKyMgYmFkbHkgd2l0aCBib2xkIGluIHZlcnNpb24gNDEsIHRob3VnaCwgYXMgcmVmbGVjdGVkIGluIDpuY3Y6LikgVGhlCisjIG1vbm9jaHJvbWUgKC1tKSBlbnRyaWVzIGFyZSB1c2VmdWwgaWYgeW91J3ZlIGRpc2FibGVkIGNvbG9yIHN1cHBvcnQKKyMgb3IgdXNlIGEgbW9ub2Nocm9tZSBtb25pdG9yLiBUaGUgZnVsbCBjb2xvciAoLWMpIGVudHJpZXMgYXJlIHVzZWZ1bAorIyBpbiB2ZXJzaW9uIDUxLCB3aGljaCBkb2Vzbid0IGV4aGliaXQgdGhlIGJhY2tncm91bmQgY29sb3IgYnVnLiBUaGV5CisjIGFsc28gZW5hYmxlIGFuIHh0ZXJtLWNvbXBhdGlibGUgMTYtY29sb3IgbW9kZS4KKyMKKyMgVGhlIGNvbmZpZ3VyYWJsZSB0aXRsZWJhciBpcyBzZXQgdXNpbmcgeHRlcm0tY29tcGF0aWJsZSBzZXF1ZW5jZXM7CisjIGl0IGlzIHVzZWQgYXMgYSBzdGF0dXMgYmFyIGluIHRoZSBzdGF0dXNsaW5lICgtcykgZW50cmllcy4gSXRzIHdpZHRoCisjIGRlcGVuZHMgb24gZm9udCBzaXplcyBhbmQgd2luZG93IHNpemVzLCBidXQgNTAgY2hhcmFjdGVycyBzZWVtcyB0bworIyBiZSB0aGUgZGVmYXVsdCBmb3IgYW4gODB4MjQgd2luZG93LgorIworIyBUaGUgTWFjUm9tYW4gY2hhcmFjdGVyIGVuY29kaW5nIGlzIHVzZWQgZm9yIHNvbWUgb2YgdGhlIGFsdGVybmF0ZQorIyBjaGFyYWN0ZXJzIGluIHRoZSAiTWFjUm9tYW4iIGVudHJpZXM7IHRoZSAiQVNDSUkiICgtNykgZW50cmllcworIyBkaXNhYmxlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IHN1cHBvcnQgZW50aXJlbHksIGFuZCB0aGUgIlZUMTAwIgorIyAoLWFjcykgZW50cmllcyByZWx5IGluc3RlYWQgb24gVGVybWluYWwuYXBwJ3Mgb3duIGJ1Z2d5IFZUMTAwCisjIGdyYXBoaWNzIGVtdWxhdGlvbiwgd2hpY2ggc2VlbXMgdG8gdGhpbmsgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpcworIyB0aGUgb2xkIE5lWFQgY2hhcnNldCBpbnN0ZWFkIG9mIE1hY1JvbWFuLiBUaGUgIkFTQ0lJIiAoLTcpIGVudHJpZXMKKyMgYXJlIHVzZWZ1bCBpbiBUZXJtaW5hbC5hcHAgdmVyc2lvbiA1MSwgd2hpY2ggc3VwcG9ydHMgVVRGLTggYW5kCisjIG90aGVyIEFTQ0lJLWNvbXBhdGlibGUgY2hhcmFjdGVyIGVuY29kaW5ncyBidXQgZG9lcyBub3QgY29ycmVjdGx5CisjIGltcGxlbWVudCBWVDEwMCBncmFwaGljczsgb25jZSBWVDEwMCBncmFwaGljcyBhcmUgY29ycmVjdGx5CisjIGltcGxlbWVudGVkIGluIFRlcm1pbmFsLmFwcCwgdGhlICJWVDEwMCIgKC1hY3MpIGVudHJpZXMgc2hvdWxkIGJlCisjIHVzYWJsZSBpbiBhbnkgQVNDSUktY29tcGF0aWJsZSBjaGFyYWN0ZXIgZW5jb2RpbmcgW2V4Y2VwdCBwZXJoYXBzCisjIGluIFVURi04LCB3aGVyZSBzb21lIGV4cGVydHMgYXJndWUgZm9yIGRpc2FsbG93aW5nIGFsdGVybmF0ZQorIyBjaGFyYWN0ZXJzIGVudGlyZWx5Ll0KKyMKKyMgVGVybWluYWwuYXBwIHJlcG9ydHMgInZ0MTAwIiBhcyB0aGUgdGVybWluYWwgdHlwZSwgYnV0IGV4cG9ydHMKKyMgc2V2ZXJhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggbWF5IGFpZCBkZXRlY3Rpb24gaW4gYSBzaGVsbAorIyBwcm9maWxlIChpLmUuIC5wcm9maWxlIG9yIC5sb2dpbik6CisjCisjIFRFUk09dnQxMDAKKyMgVEVSTV9QUk9HUkFNPUFwcGxlX1Rlcm1pbmFsCisjIFRFUk1fUFJPR1JBTV9WRVJTSU9OPTQxICAgICAgIyBpbiBUZXJtaW5hbC5hcHAgdmVyc2lvbiA0MQorIyBURVJNX1BST0dSQU1fVkVSU0lPTj01MSAgICAgICMgaW4gVGVybWluYWwuYXBwIHZlcnNpb24gNTEKKyMKKyMgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgQm91cm5lIHNoZWxsIHNjcmlwdCB3b3VsZCBkZXRlY3QgdGhlCisjIGNvcnJlY3QgdGVybWluYWwgdHlwZToKKyMKKyMgaWYgWyA6IiRURVJNIiA9IDoidnQxMDAiIC1hIDoiJFRFUk1fUFJPR1JBTSIgPSA6IkFwcGxlX1Rlcm1pbmFsIiBdCisjIHRoZW4KKyMgICAgIGV4cG9ydCBURVJNCisjICAgICBpZiBbIDoiJFRFUk1fUFJPR1JBTV9WRVJTSU9OIiA9IDo0MSBdCisjICAgICB0aGVuCisjICAgICAgICAgVEVSTT0ibnN0ZXJtLW9sZCIKKyMgICAgIGVsc2UKKyMgICAgICAgICBURVJNPSJuc3Rlcm0tYy03IgorIyAgICAgZmkKKyMgZmkKKyMKKyMgSW4gYSBDIHNoZWxsIGRlcml2YXRpdmUsIHRoaXMgd291bGQgYmUgYWNjb21wbGlzaGVkIGJ5OgorIworIyBpZiAoICQ/VEVSTSAmJiAkP1RFUk1fUFJPR1JBTSAmJiAkP1RFUk1fUFJPR1JBTV9WRVJTSU9OKSB0aGVuCisjICAgICBpZiAoIDoiJFRFUk0iID09IDoidnQxMDAiICYmIDoiJFRFUk1fUFJPR1JBTSIgPT0gOiJBcHBsZV9UZXJtaW5hbCIgKSB0aGVuCisjICAgICAgICAgIGlmICggOiIkVEVSTV9QUk9HUkFNX1ZFUlNJT04iID09IDo0MSApIHRoZW4KKyMgICAgICAgICAgICAgIHNldGVudiBURVJNICJuc3Rlcm0tb2xkIgorIyAgICAgICAgICBlbHNlCisjICAgICAgICAgICAgICBzZXRlbnYgVEVSTSAibnN0ZXJtLWMtNyIKKyMgICAgICAgICAgZW5kaWYKKyMgICAgIGVuZGlmCisjIGVuZGlmCisKKyMgVGhlICcrJyBlbnRyaWVzIGFyZSBidWlsZGluZyBibG9ja3MKK25zdGVybSs3fEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyBiYXNpYyBjYXBhYmlsaXRpZXMgdy9BU0NJSSBjaGFyc2V0LAorCWFtLCBidywgbXNnciwgeGVubCwgeG9uLAorCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAorCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKKwljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCisJY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAorCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAorCWRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKKwllbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCisJaW5kPV5KLCBpbnZpcz1cRVs4bSwga2JzPVwxNzcsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsCisJa2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2VudD1cRU9NLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAorCXJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sCisJcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAorCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDcldDs4JTttLAorCXNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAorCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPXZ0MTAwK2VucSwgdXNlPXZ0MTAwK3Bma2V5cywKKworbnN0ZXJtK2Fjc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgYmFzaWMgY2FwYWJpbGl0aWVzIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQsCisJYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKKwllbmFjcz1cRShCXEUpMCwgcm1hY3M9Xk8sCisJc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAorCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCB1c2U9bnN0ZXJtKzcsCisKK25zdGVybSttYWN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIGJhc2ljIGNhcGFiaWxpdGllcyB3L01hY1JvbWFuIGFsdGVybmF0ZS1jaGFyc2V0LAorCWFjc2M9K1wzMzVcLFwzMzQtXDM2Ni5cMzc3MCNgXDMyN2FcOmZcMjQxZ1wyNjFoI2lcMzYwampra2xsbW1ubm9cMzcwcFwzNzBxXDMyMXJyc3N0dHV1dnZ3d3h4eVwyNjJ6XDI2M3tcMjcxfFwyNTV9XDI0M35cMjQ1LAorCWVuYWNzPVxFKEJcRSkwLCBybWFjcz1eTywKKwlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCisJc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHVzZT1uc3Rlcm0rNywKKworIyBjb21wYXJlIHdpdGggeHRlcm0rc2wtdHdtCituc3Rlcm0rc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgc3RhdHVzLWxpbmUgKHdpbmRvdyB0aXRsZWJhcikgc3VwcG9ydCwKKwl3c2wjNTAsIHVzZT14dGVybStzbC10d20sCisKK25zdGVybStjfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyBmdWxsIGNvbG9yIHN1cHBvcnQgKGluY2x1ZGluZyAxNiBjb2xvcnMpLAorCW9wPVxFWzBtLCB1c2U9aWJtKzE2Y29sb3IsCisKK25zdGVybStjNDF8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDEgY29sb3Igc3VwcG9ydCwKKwljb2xvcnMjOCwgbmN2IzM3LCBwYWlycyM2NCwKKwlvcD1cRVswbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKKworIyBUaGVzZSBhcmUgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiB0aGUgYnVpbGRpbmcgYmxvY2tzCisKKyMgQVNDSUkgY2hhcnNldCAoLTcpCituc3Rlcm0tbS03fG5zdGVybS03LW18QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAobW9ub2Nocm9tZSksCisJdXNlPW5zdGVybSs3LAorCituc3Rlcm0tbS1zLTd8bnN0ZXJtLTctbS1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L0FTQ0lJIGNoYXJzZXQgKG1vbm9jaHJvbWUgdy9zdGF0dXNsaW5lKSwKKwl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rNywKKworbnN0ZXJtLTd8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAoY29sb3IpLAorCXVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtKzcsCisKK25zdGVybS03LWN8bnN0ZXJtLWMtN3xBcHBLaXQgVGVybWluYWwuYXBwIHY1MSsgdy9BU0NJSSBjaGFyc2V0IChmdWxsIGNvbG9yKSwKKwl1c2U9bnN0ZXJtK2MsIHVzZT1uc3Rlcm0rNywKKworbnN0ZXJtLXMtN3xuc3Rlcm0tNy1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L0FTQ0lJIGNoYXJzZXQgKGNvbG9yIHcvc3RhdHVzbGluZSksCisJdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK2M0MSwgdXNlPW5zdGVybSs3LAorCituc3Rlcm0tYy1zLTd8bnN0ZXJtLTctYy1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L0FTQ0lJIGNoYXJzZXQgKGZ1bGwgY29sb3Igdy9zdGF0dXNsaW5lKSwKKwl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSs3LAorCisjIFZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0ICgtYWNzKQorbnN0ZXJtLW0tYWNzfG5zdGVybS1hY3MtbXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAobW9ub2Nocm9tZSksCisJdXNlPW5zdGVybSthY3MsCisKK25zdGVybS1tLXMtYWNzfG5zdGVybS1hY3MtbS1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChtb25vY2hyb21lIHcvc3RhdHVzbGluZSksCisJdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK2FjcywKKworbnN0ZXJtLWFjc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAoY29sb3IpLAorCXVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtK2FjcywKKworbnN0ZXJtLWMtYWNzfG5zdGVybS1hY3MtY3xBcHBLaXQgVGVybWluYWwuYXBwIHY1MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAoZnVsbCBjb2xvciksCisJdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK2FjcywKKworbnN0ZXJtLXMtYWNzfG5zdGVybS1hY3Mtc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAoY29sb3Igdy9zdGF0dXNsaW5lKSwKKwl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtK2FjcywKKworbnN0ZXJtLWMtcy1hY3N8bnN0ZXJtLWFjcy1jLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQgKGZ1bGwgY29sb3Igdy9zdGF0dXNsaW5lKSwKKwl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSthY3MsCisKKyMgTWFjUm9tYW4gY2hhcnNldAorbnN0ZXJtLW18QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvTWFjUm9tYW4gY2hhcnNldCAobW9ub2Nocm9tZSksCisJdXNlPW5zdGVybSttYWMsCisKK25zdGVybS1tLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvTWFjUm9tYW4gY2hhcnNldCAobW9ub2Nocm9tZSB3L3N0YXR1c2xpbmUpLAorCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybSttYWMsCisKK25zdGVybS1vbGR8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvTWFjUm9tYW4gY2hhcnNldCAoY29sb3IpLAorCXVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtK21hYywKKworbnN0ZXJtLWN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvTWFjUm9tYW4gY2hhcnNldCAoZnVsbCBjb2xvciksCisJdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK21hYywKKworbnN0ZXJtLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvTWFjUm9tYW4gY2hhcnNldCAoY29sb3Igdy9zdGF0dXNsaW5lKSwKKwl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtK21hYywKKworbnN0ZXJtLWMtc3xBcHBLaXQgVGVybWluYWwuYXBwIHY1MSsgdy9NYWNSb21hbiBjaGFyc2V0IChmdWxsIGNvbG9yIHcvc3RhdHVzbGluZSksCisJdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK2MsIHVzZT1uc3Rlcm0rbWFjLAorCisjIEluIE1hYyBPUyBYIHZlcnNpb24gMTAuNSB0aGUgZm9ybWF0IG9mIHRoZSBwcmVmZXJlbmNlcyBoYXMgY2hhbmdlZAorIyBhbmQgYSBuZXcsIG1vcmUgY29tcGxleCB0ZWNobmlxdWUgaXMgbmVlZGVkLCBlLmcuLAorIworIyAgICAgICBweXRob24gLWMgJ2ltcG9ydCBzeXMsb2JqYztOU1VzZXJEZWZhdWx0cz1vYmpjLmxvb2tVcENsYXNzKAorIyAgICAgICAiTlNVc2VyRGVmYXVsdHMiKTt1ZD1OU1VzZXJEZWZhdWx0cy5hbGxvYygpOworIyAgICAgICB1ZC5pbml0KCk7cHJlZnM9dWQucGVyc2lzdGVudERvbWFpbkZvck5hbWVfKAorIyAgICAgICAiY29tLmFwcGxlLlRlcm1pbmFsIik7cHJlZnNbIldpbmRvdyBTZXR0aW5ncyJdWworIyAgICAgICBwcmVmc1siRGVmYXVsdCBXaW5kb3cgU2V0dGluZ3MiXV1bIlRlcm1pbmFsVHlwZSIKKyMgICAgICAgXT1zeXMuYXJndlsxXTt1ZC5zZXRQZXJzaXN0ZW50RG9tYWluX2Zvck5hbWVfKHByZWZzLAorIyAgICAgICAiY29tLmFwcGxlLlRlcm1pbmFsIiknIG5zdGVybS0xNmNvbG9yCisjCisjIGFuZCBpdCBpcyBzdGlsbCBub3Qgc2V0dGFibGUgZnJvbSB0aGUgcHJlZmVyZW5jZXMgZGlhbG9nLiBUaGlzIGlzCisjIHRyYWNrZWQgdW5kZXIgcmRhcjovL3Byb2JsZW0vNzM2NTEwOCBhbmQgcmRhcjovL3Byb2JsZW0vNzM2NTEzNAorIyBpbiBBcHBsZSdzIGJ1ZyByZXBvcnRlci4KKyMKKyMgSW4gT1MgWCAxMC43IChMZW9wYXJkKSB0aGUgVEVSTSB3aGljaCBjYW4gYmUgc2V0IGluIHRoZSBwcmVmZXJlbmNlcyBkaWFsb2cKKyMgZGVmYXVsdHMgdG8geHRlcm0tY29sb3IuICBBbHRlcm5hdGl2ZSBzZWxlY3Rpb25zIGFyZSBhbnNpLCBkdHRlcm0sIHJ4dnQsCisjIHZ0NTIsIHZ0MTAwLCB2dDEwMiBhbmQgeHRlcm0uCituc3Rlcm0tMTZjb2xvcnxBcHBLaXQgVGVybWluYWwuYXBwIHYyNDAuMisgd2l0aCBNYWMgT1MgWCB2ZXJzaW9uIDEwLjUsCisJYndALCBtaXIsIG5wYywKKwljaXZpcz1cRVs/MjVsLCBjbm9ybT1cRVs/MjVoLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCisJZmxhc2g9XEVbPzVoJDwyMDAvPlxFWz81bCwgaHBhPVxFWyVpJXAxJWRHLAorCWljaD1cRVslcDElZEAsIGljaDE9XEVbQCwga2RjaDE9XEVbM34sIGtlbmQ9XEVbRiwKKwlrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwKKwlrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwKKwlrZjE4PVxFWzIyfiwga2YxOT1cRVszM34sIGtmMjA9XEVbMzR+LCBrZjU9XEVbMTV+LAorCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFW0gsCisJa25wPVxFWzZ+LCBrcHA9XEVbNX4sIHJtY3VwPVxFWzJKXEVbPzQ3bFxFOCwgcm1pcj1cRVs0bCwKKwlzbWN1cD1cRTdcRVs/NDdoLCBzbWlyPVxFWzRoLCB2cGE9XEVbJWklcDElZGQsCisJa0xGVDU9XEVbNUQsIGtSSVQ1PVxFWzVDLCB1c2U9bnN0ZXJtLWMtcy1hY3MsCisKKyMgVGhlIHZlcnNpb25zIG9mIFRlcm1pbmFsLmFwcCBpbiBNYWMgT1MgWCB2ZXJzaW9uIDEwLjMueCBzZWVtIHRvIGhhdmUKKyMgdGhlIGJhY2tncm91bmQgY29sb3IgZXJhc2UgZmVhdHVyZS4gVGhlIG5ld2VyIHZlcnNpb24gMjQwLjIgaW4gTWFjIE9TIFgKKyMgdmVyc2lvbiAxMC41IGRvZXMgbm90LgorIworIyBUaGlzIGVudHJ5IGlzIGJhc2VkIG9uIG5ld3Nncm91cCBjb21tZW50cyBieSBBbGFpbiBCZW5jaCwgQ2hyaXN0aWFuIEViZXJ0LAorIyBhbmQgRCBQIFNjaHJlYmVyIGNvbXBhcmluZyB0byBuc3Rlcm0tYy1zLWFjcy4KKyMKKyMgSW4gTWFjIE9TIFggdmVyc2lvbiAxMC40IGFuZCBlYXJsaWVyLCBEIFAgU2NocmViZXIgbm90ZXMgdGhhdCAkVEVSTQorIyBjYW4gYmUgc2V0IGluIFRlcm1pbmFsLmFwcCwgZS5nLiwKKyMKKyMJZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLlRlcm1pbmFsIFRlcm1DYXBTdHJpbmcgbnN0ZXJtLWJjZQorIworIyBhbmQgdGhhdCBpdCBpcyBub3Qgc2V0IGluIFRlcm1pbmFsJ3MgcHJlZmVyZW5jZXMgZGlhbG9nLgorIworIyBNb2RpZmllZCBmb3IgT1MgWCAxMC44LCBvbWl0dGluZyBidyBiYXNlZCBvbiB0ZXN0aW5nIHdpdGggdGFjayAtVEQKKyMKKyMgTm90ZXM6CisjICogVGhlIHRlcm1pbmFsIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCisjICogVGhlIGtleWJvYXJkIGlzIGNvbmZpZ3VyYWJsZSB2aWEgYSBkaWFsb2cuCisjICogQnkgZGVmYXVsdCBraG9tZSwga2VuZCwga25leHQgYW5kIGtwcmV2IGFyZSBob25vcmVkIG9ubHkgd2l0aCBhCisjICAgc2hpZnQtbW9kaWZpZXIuCisjICogVGhlcmUgYXJlIGJpbmRpbmdzIGZvciBjb250cm9sIGxlZnQvcmlnaHQgYXJyb3cgKGJ1dCBub3QgdXAvZG93bikuCisjICAgQWRkZWQgdGhvc2UgdG8gbnN0ZXJtLTE2Y29sb3IsIHdoaWNoIGlzIHRoZSB2ZXJzaW9uIHVzZWQgZm9yIE9TIFggMTAuNgorIyAqICJBbGxvdyBWVDEwMCBhcHBsaWNhdGlvbiBrZXlwYWdlIG1vZGUiIGlzIGJ5IGRlZmF1bHQgZGlzYWJsZWQuCisjICAgVGhlcmUgaXMgbm8gd2F5IHRvIHByZXNzIGtleXBhZC1jb21tYSB1bmxlc3MgYXBwbGljYXRpb24gbW9kZSBpcyBlbmFibGVkCisjICAgYW5kIHVzZWQuCisjICogMTMyLWNvbHVtbiBtb2RlIHN0b3BwZWQgd29ya2luZyBkdXJpbmcgdnR0ZXN0J3MgdGVzdHMuICBDb25zaWRlciBpdCBicm9rZW4uCisjICogQ0hULCBSRVAsIFNVLCBTRCBhcmUgYnVnZ3kuCisjICogRUNIIHdvcmtzIChhbHNvIGluIExlb3BhcmQpLCBidXQgaXMgbm90IHVzZWQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eS4KKyMgKiBUaGUgdGVybWluYWwgcHJlZmVyZW5jZXMgZGlhbG9nIHJlcGxhY2VzIHh0ZXJtLWNvbG9yIGJ5IHh0ZXJtLTE2Y29sb3IgYW5kCisjICAgeHRlcm0tMjU2Y29sb3IuICBIb3dldmVyLCBpdCBhZGRzICJuc3Rlcm0iLCBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdGhlCisjICAgbnN0ZXJtIGVudHJ5IGZyb20gdGhpcyBmaWxlIHRvIG92ZXJyaWRlIHRoZSBNYWNQb3J0cyAoMjAxMTA0MDQpIG9yCisjICAgc3lzdGVtICgyMDA4MTEwMikgY29weSBvZiB0aGlzIGZpbGUuCisjICsgSW4gT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSB0aGUgVEVSTSB3aGljaCBjYW4gYmUgc2V0IGluIHRoZSBwcmVmZXJlbmNlcworIyAgIGRpYWxvZyBkZWZhdWx0cyB0byB4dGVybS0yNTZjb2xvci4gIEFsdGVybmF0aXZlIHNlbGVjdGlvbnMgYXJlIGFuc2ksCisjICAgZHR0ZXJtLCByeHZ0LCB2dDUyLCB2dDEwMCwgdnQxMDIsIHh0ZXJtIGFuZCB4dGVybS0xNmNvbG9yLiAgSG93ZXZlciwKKyMgICB0aGUgbWVudSBzYXlzICJEZWNsYXJlIHRlcm1pbmFsIGFzIiB3aXRob3V0IHByb21pc2luZyB0byBhY3R1YWxseSBlbXVsYXRlCisjICAgdGhlIGNvcnJlc3BvbmRpbmcgdGVybWluYWxzLiAgSW5kZWVkLCBjaGFuZ2luZyBURVJNIGRvZXMgbm90IGFmZmVjdCB0aGUKKyMgICBlbXVsYXRpb24gaXRzZWxmLiAgVGhpcyBtZWFucyB0aGF0CisjICAgKyB0aGUgZnVuY3Rpb24ta2V5cyBkbyBub3QgbWF0Y2ggZm9yIGR0dGVybSBmb3Iga2YxLWtmNCBhcyB3ZWxsIGFzCisjICAgICBraG9tZS9rZW5kCisjICAgKyB0aGUgY29sb3IgbW9kZWwgaXMgdGhlIHNhbWUgZm9yIGVhY2ggc2V0dGluZyBvZiBURVJNIChkb2VzIG5vdCBtYXRjaAorIyAgICAgYW5zaSBvciBkdHRlcm0pLgorIyAgICsgdGhlIHNoaWZ0L2NvbnRyb2wvbWV0YSBrZXkgbW9kaWZpZXJzIGZyb20gcnh2dCBhbmQgeHRlcm0gdmFyaWFudHMgYXJlIG5vdAorIyAgICAgcmVjb2duaXNlZCBleGNlcHQgZm9yIGEgZmV3IHNwZWNpYWwgY2FzZXMsIGkuZS4sIGtSSVQ1IGFuZCBrTEZUNS4KKyMgICArIHRoZSB2dDUyIGVtdWxhdGlvbiBkb2VzIG5vdCBnaXZlIGEgdXNhYmxlIHNoZWxsIGJlY2F1c2Ugc2NyZWVuLWNsZWFyaW5nCisjICAgICBkb2VzIG5vdCB3b3JrIGFzIGV4cGVjdGVkLgorIyAgICsgc2VsZWN0aW5nICJ4dGVybSIgb3IgInh0ZXJtLTE2Y29sb3IiIHNldHMgVEVSTSB0byAieHRlcm0tMjU2Y29sb3IiLgorIyArIE9TWCAxMC45IChZb3NlbWl0ZSkgYWRkZWQgbW9yZSBleHRlbmRlZCBrZXlzIGluIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKyMgICBhcyB3ZWxsIGFzIHVubWFza2luZyBGMTAgKHdoaWNoIGhhZCBiZWVuIHVzZWQgaW4gdGhlIHdpbmRvdyBtYW5hZ2VyKS4gVGhvc2UKKyMgICBrZXlzIGFyZSBsaXN0ZWQgaW4gdGhpcyBlbnRyeS4KK25zdGVybS1iY2V8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NzErL3YxMDAuMS44KyB3aXRoIE1hYyBPUyBYIHZlcnNpb24gMTAuMy8xMC40IChiY2UpLAorCWJjZSwgdXNlPW5zdGVybS0xNmNvbG9yLAorCisjIFRoaXMgaXMgdGVzdGVkIHdpdGggT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSwgMjAxMi8wOC8xMQorIwlURVJNX1BST0dSQU1fVkVSU0lPTj0zMDkKKyMgRWFybGllciByZXBvcnRzIHN0YXRlIHRoYXQgdGhlc2UgZGlmZmVyZW5jZXMgYWxzbyBhcHBseSB0byBPUyBYIDEwLjcgKExpb24pLAorIwlURVJNX1BST0dSQU1fVkVSU0lPTj0zMDMKK25zdGVybS0yNTZjb2xvcnxUZXJtaW5hbC5hcHAgaW4gT1MgWCAxMC44LAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPW5zdGVybS1iY2UsCisKK25zdGVybS1idWlsZDMyNnxUZXJtaW5hbC5hcHAgaW4gT1MgWCAxMC45LAorCWtEQz1cRVszOzJ+LCBrTEZUPVxFWzE7MkQsIGtSSVQ9XEVbMTsyQywga2NidD1cRVtaLAorCWtmMTg9XEVbMzJ+LCBrREM1PVxFWzM7NX4sIGtEQzc9XEVbMzs1fiwga0xGVDM9XEViLAorCWtMRlQ1PVxFWzE7NUQsIGtSSVQzPVxFZiwga1JJVDU9XEVbMTs1QywKKwl1c2U9bnN0ZXJtLTI1NmNvbG9yLAorCisjIGFjdHVhbGx5ICIzNDMuNyIKK25zdGVybS1idWlsZDM0M3xUZXJtaW5hbC5hcHAgaW4gT1MgWCAxMC4xMCwKKwlrZW5kPVxFT0YsIGtob21lPVxFT0gsIHVzZT1uc3Rlcm0tYnVpbGQzMjYsCisKKyMgVGhpcyBpcyBhbiBhbGlhcyB3aGljaCBzaG91bGQgYWx3YXlzIHBvaW50IHRvIHRoZSAiY3VycmVudCIgdmVyc2lvbgorbnN0ZXJtfEFwcGxlX1Rlcm1pbmFsfEFwcEtpdCBUZXJtaW5hbC5hcHAsCisJdXNlPW5zdGVybS1idWlsZDM0MywKKworIyBpVGVybS5hcHAgZnJvbSBodHRwOi8vaXRlcm0uc291cmNlZm9yZ2UubmV0LyBpcyBhbiBhbHRlcm5hdGl2ZSAoYW5kCisjIG1vcmUgZmVhdHVyZWZ1bCkgdGVybWluYWwgZW11bGF0b3IgZm9yIE1hYyBPUyBYLiBJdCBpcyBzaW1pbGFyCisjIGVub3VnaCBpbiBjYXBhYmlsaXRpZXMgdG8gbnN0ZXJtLTE2Y29sb3IgdGhhdCBJIGhhdmUgZGVyaXZlZCB0aGlzCisjIGRlc2NyaXB0aW9uIGZyb20gdGhhdCBvbmUsIGJ1dCBhcyBmYXIgYXMgSSBrbm93IHRoZXkgc2hhcmUgbm8gY29kZS4KKyMgTWFueSBvZiB0aGUgZmVhdHVyZXMgYXJlIHVzZXItY29uZmlndXJhYmxlLCBidXQgSSBhdHRlbXB0IG9ubHkgdG8KKyMgZGVzY3JpYmUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKyMKKyMgTk9URTogV2hlbiB0YWNrIHRlc3RzIChjc3IpICsgKG5lbCkgaVRlcm0uYXBwIGNyYXNoZXMsIHNvIChjc3IpIGlzCisjIGRpc2FibGVkLgoraVRlcm0uYXBwfGl0ZXJtfGlUZXJtLmFwcCB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgTWFjIE9TIFgsCisJYmNlLCBid0AsCisJY3NyQCwgZGltQCwga2VuZD1cRU9GLCBraG9tZT1cRU9ILAorCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCisJdXNlPXh0ZXJtKzI1NnNldGFmLCB1c2U9bnN0ZXJtLTE2Y29sb3IsCisKKyMgeG51cHBjIC0gRGFyd2luIFBvd2VyUEMgQ29uc29sZSAoYS5rLmEuICJkYXJ3aW4iKQorIworIyBPbiBQb3dlclBDIHBsYXRmb3JtcywgQXBwbGUncyBEYXJ3aW4gb3BlcmF0aW5nIHN5c3RlbSB1c2VzIGEKKyMgZnVsbC1zY3JlZW4gc3lzdGVtIGNvbnNvbGUgZGVyaXZlZCBmcm9tIGEgTmV0QlNEIGZyYW1lYnVmZmVyCisjIGNvbnNvbGUuIEl0IGlzIGFuIEFOU0ktc3R5bGUgdGVybWluYWwsIGFuZCBpcyBub3QgcmVhbGx5IFZULTEwMAorIyBjb21wYXRpYmxlLgorIworIyBVbmRlciBNYWMgT1MgWCwgdGhpcyBpcyB0aGUgc3lzdGVtIGNvbnNvbGUgZHJpdmVyIHVzZWQgd2hpbGUgaW4KKyMgc2luZ2xlLXVzZXIgbW9kZSBbcmVhY2hhYmxlIGJ5IGhvbGRpbmcgZG93biBDb21tYW5kLVMgZHVyaW5nIHRoZQorIyBib290IHByb2Nlc3NdIGFuZCB3aGVuIGxvZ2dlZCBpbiB1c2luZyBjb25zb2xlIG1vZGUgW3JlYWNoYWJsZSBieQorIyB0eXBpbmcgIj5jb25zb2xlIiBhdCB0aGUgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC5dCisjCisjIElmIHlvdSdyZSBsb29raW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBUZXJtaW5hbC5hcHAgdGVybWluYWwKKyMgZW11bGF0b3Igd2hpY2ggcnVucyB1bmRlciB0aGUgTWFjIE9TIFggUXVhcnR6IHdpbmRvd2luZyBzeXN0ZW0gKGFuZAorIyBvdGhlciBBcHBLaXQtc3VwcG9ydGVkIHdpbmRvd2luZyBzeXN0ZW1zLCkgc2VlIHRoZSAibnN0ZXJtIgorIyBlbnRyeSBpbnN0ZWFkLgorIworIyBOT1RFOiBVbmRlciBNYWMgT1MgWCB2ZXJzaW9uIDEwLjEsIHRoZSBkZWZhdWx0IGxvZ2luIHdpbmRvdyBkb2VzIG5vdAorIyBwcm9tcHQgZm9yIHVzZXIgbmFtZSwgaW5zdGVhZCByZXF1aXJpbmcgYW4gaWNvbiB0byBiZSBzZWxlY3RlZCBmcm9tCisjIGEgbGlzdCBvZiBrbm93biB1c2Vycy4gU2luY2UgdGhlIHNwZWNpYWwgIj5jb25zb2xlIiBsb2dpbiBpcyBub3QgaW4KKyMgdGhpcyBsaXN0LCB5b3UgbXVzdCBtYWtlIG9uZSBvZiB0d28gY2hhbmdlcyBpbiB0aGUgTG9naW4gV2luZG93CisjIHBhbmVsIG9mIHRoZSBMb2dpbiBzZWN0aW9uIG9mIFN5c3RlbSBQcmVmcyB0byBtYWtlIHRoZSBzcGVjaWFsCisjICI+Y29uc29sZSIgbG9naW4gYWNjZXNzaWJsZS4gVGhlIGZpcnN0IG9wdGlvbiBpcyB0byBlbmFibGUgJ1Nob3cKKyMgIk90aGVyIFVzZXIiIGluIGxpc3QgZm9yIG5ldHdvcmsgdXNlcnMnLCB3aGljaCB3aWxsIGFkZCBhIHNwZWNpYWwKKyMgIk90aGVyLi4uIiBpY29uIHRvIHRoZSBncmFwaGljYWwgbG9naW4gcGFuZWwuIFNlbGVjdGluZyAiT3RoZXIuLi4iCisjIHdpbGwgcHJlc2VudCB0aGUgcmVndWxhciBncmFwaGljYWwgbG9naW4gcHJvbXB0LiBUaGUgc2Vjb25kIG9wdGlvbgorIyBpcyB0byBjaGFuZ2UgdGhlICdEaXNwbGF5IExvZ2luIFdpbmRvdyBhczonIHNldHRpbmcgdG8gJ05hbWUgYW5kCisjIHBhc3N3b3JkIGVudHJ5IGZpZWxkcycsIHdoaWNoIHJlcGxhY2VzIHRoZSBsb2dpbiBwYW5lbCB3aXRoIGEKKyMgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC4KKyMKKyMgVGhlcmUgYXJlIG5vIGZ1bmN0aW9uIGtleXMsIGF0IGxlYXN0IG5vdCBpbiBEYXJ3aW4gMS4zLgorIworIyBJdCBoYXMgbm8gbW91c2Ugc3VwcG9ydC4KKyMKKyMgSXQgaGFzIGZ1bGwgQU5TSSBjb2xvciBzdXBwb3J0LCBhbmQgY29sb3IgY29tYmluZXMgY29ycmVjdGx5IHdpdGgKKyMgYWxsIHRocmVlIHN1cHBvcnRlZCBhdHRyaWJ1dGVzOiBib2xkLCBpbnZlcnNlLXZpZGVvIGFuZCB1bmRlcmxpbmUuCisjIEhvd2V2ZXIsIGJvbGQgY29sb3JlZCB0ZXh0IGlzIGFsbW9zdCB1bnJlYWRhYmxlIChib2xkaW5nIGlzCisjIGFjY29tcGxpc2hlZCB1c2luZyBzaGlmdGluZyBhbmQgb3ItaW5nLCBhbmQgbG9va3Mgc21lYXJlZCkgc28gYm9sZAorIyBoYXMgYmVlbiBleGNsdWRlZCBmcm9tIHRoZSBsaXN0IG9mIGNvbG9yLWNvbXBhdGlibGUgYXR0cmlidXRlcworIyBbdXNpbmcgKG5jdildLiBUaGUgbW9ub2Nocm9tZSBlbnRyeSAoLW0pIGlzIHVzZWZ1bCBpZiB5b3UgdXNlIGEKKyMgbW9ub2Nocm9tZSBtb25pdG9yLgorIworIyBUaGVyZSBpcyBvbmUgc2VyaW91cyBidWcgd2l0aCB0aGlzIHRlcm1pbmFsIGVtdWxhdGlvbidzIGNvbG9yCisjIHN1cHBvcnQ6IHJlcG9zaXRpb25pbmcgdGhlIGN1cnNvciBvbnRvIGEgY2VsbCB3aXRoIG5vbi1tYXRjaGluZworIyBjb2xvcnMgb2JsaXRlcmF0ZXMgdGhhdCBjZWxsJ3MgY29udGVudHMsIHJlcGxhY2luZyBpdCB3aXRoIGEgYmxhbmsKKyMgYW5kIGRpc3BsYXlpbmcgYSBjb2xvcmVkIGN1cnNvciBpbiB0aGUgImN1cnJlbnQiIGNvbG9ycy4gVGhlcmUgaXMKKyMgbm8gY29tcGxldGUgd29ya2Fyb3VuZCBhdCBwcmVzZW50IFtvdGhlciB0aGFuIHVzaW5nIHRoZSBtb25vY2hyb21lCisjICgtbSkgZW50cmllcyxdIGJ1dCByZW1vdmluZyB0aGUgKG1zZ3IpIGNhcGFiaWxpdHkgc2VlbWVkIHRvIGhlbHAuCisjCisjIFRoZSAic3RhbmRvdXQiIGNob3NlbiB3YXMgc2ltcGxlIHJldmVyc2UtdmlkZW8sIGFsdGhvdWdoIGEgY29sb3JmdWwKKyMgc3RhbmRvdXQgbWlnaHQgYmUgbW9yZSBhZXN0aGV0aWNhbGx5IHBsZWFzaW5nLiBTaW1pbGFybHksIHRoZSBib2xkCisjIGNob3NlbiBpcyB0aGUgdGVybWluYWwncyBvd24gc21lYXJlZCBib2xkLCBhbHRob3VnaCBhIHNpbXBsZQorIyBjb2xvci1jaGFuZ2UgbWlnaHQgYmUgbW9yZSByZWFkYWJsZS4gVGhlIGNvbG9yLWJvbGQgKC1iKSBlbnRyaWVzCisjIHVzZXMgbWFnZW50YSBjb2xvcmVkIHRleHQgZm9yIGJvbGRpbmcgaW5zdGVhZC4gVGhlIGZhbmN5IGNvbG9yICgtZgorIyBhbmQgLWYyKSBlbnRyaWVzIHVzZSBjb2xvciBmb3IgYm9sZCwgc3RhbmRvdXQgYW5kIHVuZGVybGluZWQgdGV4dAorIyAodW5kZXJsaW5lZCB0ZXh0IGlzIHN0aWxsIHVuZGVybGluZWQsIHRob3VnaC4pCisjCisjIEFwcGFyZW50bHkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGRvZXMgc3VwcG9ydCBhIFZULTEwMC1zdHlsZQorIyBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCwgYnV0IGFsbCB0aGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKKyMgcG9zaXRpb25zIGhhdmUgYmVlbiBsZWZ0IGJsYW5rIGluIHRoZSBmb250LiBGb3IgdGhpcyByZWFzb24sIG5vCisjIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW5jbHVkZWQgaW4gdGhpcworIyBkZXNjcmlwdGlvbi4gVGhlIGNvbnNvbGUgZHJpdmVyIGFwcGVhcnMgdG8gYmUgQVNDSUktb25seSwgc28gKGVuYWNzKQorIyBoYXMgYmVlbiBleGNsdWRlZCBbYWx0aG91Z2ggdGhlIFZULTEwMCBzZXF1ZW5jZSBkb2VzIHdvcmsuXQorIworIyBUaGUgZGVmYXVsdCBNYWMgT1MgWCBhbmQgRGFyd2luIGluc3RhbGxhdGlvbiByZXBvcnRzICJ2dDEwMCIgYXMgdGhlCisjIHRlcm1pbmFsIHR5cGUsIGFuZCBleHBvcnRzIG5vIGhlbHBmdWwgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUbyBmaXgKKyMgdGhpcywgY2hhbmdlIHRoZSAiY29uc29sZSIgZW50cnkgaW4gL2V0Yy90dHlzIGZyb20gInZ0MTAwIiB0bworIyAieG51cHBjLVd4SCIsIHdoZXJlIFcgYW5kIEggYXJlIHRoZSBjaGFyYWN0ZXIgZGltZW5zaW9ucyBvZiB5b3VyCisjIGNvbnNvbGUgKHNlZSBiZWxvdy4pCisjCisjIFRoZSBmb250IHVzZWQgYnkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGlzIGFwcGFyZW50bHkgb25lIG9yaWdpbmFsbHkKKyMgZHJhd24gYnkgS2EtUGluZyBZZWUsIGFuZCB1c2VzIDh4MTYtcGl4ZWwgY2hhcmFjdGVycy4gVGhpcworIyBmaWxlIGluY2x1ZGVzIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBnZW9tZXRyaWVzOgorIworIyAgICAgUGl4ZWxzICAgICAgICBDaGFyYWN0ZXJzICAgRW50cnkgTmFtZSAoYXBwZW5kIC1tIGZvciBtb25vY2hyb21lKQorIyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICA2NDB4NDAwICAgICAgIDgweDI1ICAgICAgICB4bnVwcGMtODB4MjUKKyMgICAgIDY0MHg0ODAgICAgICAgODB4MzAgICAgICAgIHhudXBwYy04MHgzMAorIyAgICAgNzIweDQ4MCAgICAgICA5MHgzMCAgICAgICAgeG51cHBjLTkweDMwCisjICAgICA4MDB4NjAwICAgICAgIDEwMHgzNyAgICAgICB4bnVwcGMtMTAweDM3CisjICAgICA4OTZ4NjAwICAgICAgIDExMngzNyAgICAgICB4bnVwcGMtMTEyeDM3CisjICAgICAxMDI0eDY0MCAgICAgIDEyOHg0MCAgICAgICB4bnVwcGMtMTI4eDQwCisjICAgICAxMDI0eDc2OCAgICAgIDEyOHg0OCAgICAgICB4bnVwcGMtMTI4eDQ4CisjICAgICAxMTUyeDc2OCAgICAgIDE0NHg0OCAgICAgICB4bnVwcGMtMTQ0eDQ4CisjICAgICAxMjgweDEwMjQgICAgIDE2MHg2NCAgICAgICB4bnVwcGMtMTYweDY0CisjICAgICAxNjAweDEwMjQgICAgIDIwMHg2NCAgICAgICB4bnVwcGMtMjAweDY0CisjICAgICAxNjAweDEyMDAgICAgIDIwMHg3NSAgICAgICB4bnVwcGMtMjAweDc1CisjICAgICAyMDQ4eDE1MzYgICAgIDI1Nng5NiAgICAgICB4bnVwcGMtMjU2eDk2CisjCisjIFRoZSBiYXNpYyAieG51cHBjIiBlbnRyeSBpbmNsdWRlcyBubyBzaXplIGluZm9ybWF0aW9uLCBhbmQgdGhlCisjIGVtdWxhdG9yIGluY2x1ZGVzIG5vIHJlcG9ydGluZyBjYXBhYmlsaXR5LCBzbyB5b3UnbGwgYmUgYXQgdGhlIG1lcmN5CisjIG9mIHRoZSBUVFkgZGV2aWNlICh3aGljaCByZXBvcnRzIGluY29ycmVjdGx5IG9uIG15IGhhcmR3YXJlLikgVGhlCisjIGNvbG9yLWJvbGQgZW50cmllcyBkbyBub3QgaW5jbHVkZSBzaXplIGluZm9ybWF0aW9uLgorCisjIFRoZSAnKycgZW50cmllcyBhcmUgYnVpbGRpbmcgYmxvY2tzCit4bnVwcGMrYmFzaWN8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBiYXNpYyBjYXBhYmlsaXRpZXMsCisJYW0sIGJjZSwgbWlyLCB4ZW5sLAorCWl0IzgsCisJYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCisJY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCisJY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCisJY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkc2w9XEVdMjtcMDA3LCBlZD1cRVtKLCBlbD1cRVtLLAorCWVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XDE3NywKKwlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCByYz1cRTgsCisJcmV2PVxFWzdtLCByaT1cRU0sIHJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLAorCXJtdWw9XEVbbSwgcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKKwlzYz1cRTcsCisJc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20sCisJc2dyMD1cRVttLCBzbWFtPVxFWz83aCwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sCisJc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1c2U9dnQxMDAra2V5cGFkLAorCit4bnVwcGMrY3xEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIEFOU0kgY29sb3Igc3VwcG9ydCwKKwljb2xvcnMjOCwgbmN2IzMyLCBwYWlycyM2NCwKKwlvcD1cRVszNzs0MG0sIHNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCisKK3hudXBwYytifERhcndpbiBQb3dlclBDIENvbnNvbGUgY29sb3ItYm9sZCBzdXBwb3J0LAorCW5jdiMzMiwKKwlib2xkPVxFWzM1bSwKKwlzZ3I9XEVbMCU/JXA2JXQ7MzUlOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20sCisJdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjK2Z8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBmYW5jeSBjb2xvciBzdXBwb3J0LAorCW5jdiMzNSwKKwlzZ3I9XEVbMCU/JXA2JXQ7MzUlOyU/JXAyJXQ7MzY7NCU7JT8lcDEldDszMzs0NCU7JT8lcDMldDs3JTttLAorCXNtc289XEVbMzM7NDRtLCBzbXVsPVxFWzM2OzRtLCB1c2U9eG51cHBjK2IsCisKK3hudXBwYytmMnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIGFsdGVybmF0ZSBmYW5jeSBjb2xvciBzdXBwb3J0LAorCW5jdiMzNSwKKwlib2xkPVxFWzMzbSwKKwlzZ3I9XEVbMCU/JXA2JXQ7MzMlOyU/JXAyJXQ7MzQlOyU/JXAxJXQ7MzE7NDclOyU/JXAzJXQ7NyU7bSwKKwlzbXNvPVxFWzMxOzQ3bSwgc211bD1cRVszNG0sIHVzZT14bnVwcGMrYmFzaWMsCisKKyMgQnVpbGRpbmcgYmxvY2tzIGZvciBzcGVjaWZpYyBzY3JlZW4gc2l6ZXMKK3hudXBwYys4MHgyNXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDgweDI1IHN1cHBvcnQgKDY0MHg0MDAgcGl4ZWxzKSwKKwljb2xzIzgwLCBsaW5lcyMyNSwKKworeG51cHBjKzgweDMwfERhcndpbiBQb3dlclBDIENvbnNvbGUgODB4MzAgc3VwcG9ydCAoNjQweDQ4MCBwaXhlbHMpLAorCWNvbHMjODAsIGxpbmVzIzMwLAorCit4bnVwcGMrOTB4MzB8RGFyd2luIFBvd2VyUEMgQ29uc29sZSA5MHgzMCBzdXBwb3J0ICg3MjB4NDgwIHBpeGVscyksCisJY29scyM5MCwgbGluZXMjMzAsCisKK3hudXBwYysxMDB4Mzd8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAxMDB4Mzcgc3VwcG9ydCAoODAweDYwMCBwaXhlbHMpLAorCWNvbHMjMTAwLCBsaW5lcyMzNywKKworeG51cHBjKzExMngzN3xEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDExMngzNyBzdXBwb3J0ICg4OTZ4NjAwIHBpeGVscyksCisJY29scyMxMTIsIGxpbmVzIzM3LAorCit4bnVwcGMrMTI4eDQwfERhcndpbiBQb3dlclBDIENvbnNvbGUgMTI4eDQwIHN1cHBvcnQgKDEwMjR4NjQwIHBpeGVscyksCisJY29scyMxMjgsIGxpbmVzIzQwLAorCit4bnVwcGMrMTI4eDQ4fERhcndpbiBQb3dlclBDIENvbnNvbGUgMTI4eDQ4IHN1cHBvcnQgKDEwMjR4NzY4IHBpeGVscyksCisJY29scyMxMjgsIGxpbmVzIzQ4LAorCit4bnVwcGMrMTQ0eDQ4fERhcndpbiBQb3dlclBDIENvbnNvbGUgMTQ0eDQ4IHN1cHBvcnQgKDExNTJ4NzY4IHBpeGVscyksCisJY29scyMxNDQsIGxpbmVzIzQ4LAorCit4bnVwcGMrMTYweDY0fERhcndpbiBQb3dlclBDIENvbnNvbGUgMTYweDY0IHN1cHBvcnQgKDEyODB4MTAyNCBwaXhlbHMpLAorCWNvbHMjMTYwLCBsaW5lcyM2NCwKKworeG51cHBjKzIwMHg2NHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDIwMHg2NCBzdXBwb3J0ICgxNjAweDEwMjQgcGl4ZWxzKSwKKwljb2xzIzIwMCwgbGluZXMjNjQsCisKK3hudXBwYysyMDB4NzV8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAyMDB4NzUgc3VwcG9ydCAoMTYwMHgxMjAwIHBpeGVscyksCisJY29scyMyMDAsIGxpbmVzIzc1LAorCit4bnVwcGMrMjU2eDk2fERhcndpbiBQb3dlclBDIENvbnNvbGUgMjU2eDk2IHN1cHBvcnQgKDIwNDh4MTUzNiBwaXhlbHMpLAorCWNvbHMjMjU2LCBsaW5lcyM5NiwKKworIyBUaGVzZSBhcmUgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiB0aGUgYnVpbGRpbmcgYmxvY2tzCisKK3hudXBwYy1tfGRhcndpbi1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpLAorCXVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwY3xkYXJ3aW58RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpLAorCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLW0tYnxkYXJ3aW4tbS1ifERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUgdy9jb2xvci1ib2xkKSwKKwl1c2U9eG51cHBjK2IsCisKK3hudXBwYy1ifGRhcndpbi1ifERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yIHcvY29sb3ItYm9sZCksCisJdXNlPXhudXBwYytiLCB1c2U9eG51cHBjK2MsCisKK3hudXBwYy1tLWZ8ZGFyd2luLW0tZnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChmYW5jeSBtb25vY2hyb21lKSwKKwl1c2U9eG51cHBjK2YsCisKK3hudXBwYy1mfGRhcndpbi1mfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGZhbmN5IGNvbG9yKSwKKwl1c2U9eG51cHBjK2YsIHVzZT14bnVwcGMrYywKKworeG51cHBjLW0tZjJ8ZGFyd2luLW0tZjJ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoYWx0ZXJuYXRlIGZhbmN5IG1vbm9jaHJvbWUpLAorCXVzZT14bnVwcGMrZjIsCisKK3hudXBwYy1mMnxkYXJ3aW4tZjJ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoYWx0ZXJuYXRlIGZhbmN5IGNvbG9yKSwKKwl1c2U9eG51cHBjK2YyLCB1c2U9eG51cHBjK2MsCisKKyMgQ29tYmluYXRpb25zIGZvciBzcGVjaWZpYyBzY3JlZW4gc2l6ZXMKK3hudXBwYy04MHgyNS1tfGRhcndpbi04MHgyNS1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDgweDI1LAorCXVzZT14bnVwcGMrODB4MjUsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy04MHgyNXxkYXJ3aW4tODB4MjV8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDgweDI1LAorCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYys4MHgyNSwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTgweDMwLW18ZGFyd2luLTgweDMwLW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgODB4MzAsCisJdXNlPXhudXBwYys4MHgzMCwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTgweDMwfGRhcndpbi04MHgzMHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgODB4MzAsCisJdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzgweDMwLCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtOTB4MzAtbXxkYXJ3aW4tOTB4MzAtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSA5MHgzMCwKKwl1c2U9eG51cHBjKzkweDMwLCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtOTB4MzB8ZGFyd2luLTkweDMwfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSA5MHgzMCwKKwl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrOTB4MzAsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0xMDB4MzctbXxkYXJ3aW4tMTAweDM3LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTAweDM3LAorCXVzZT14bnVwcGMrMTAweDM3LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMTAweDM3fGRhcndpbi0xMDB4Mzd8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDEwMHgzNywKKwl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTAweDM3LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMTEyeDM3LW18ZGFyd2luLTExMngzNy1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDExMngzNywKKwl1c2U9eG51cHBjKzExMngzNywgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTExMngzN3xkYXJ3aW4tMTEyeDM3fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxMTJ4MzcsCisJdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzExMngzNywgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTEyOHg0MC1tfGRhcndpbi0xMjh4NDAtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxMjh4NDAsCisJdXNlPXhudXBwYysxMjh4NDAsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0xMjh4NDB8ZGFyd2luLTEyOHg0MHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTI4eDQwLAorCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxMjh4NDAsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0xMjh4NDgtbXxkYXJ3aW4tMTI4eDQ4LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTI4eDQ4LAorCXVzZT14bnVwcGMrMTI4eDQ4LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMTI4eDQ4fGRhcndpbi0xMjh4NDh8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDEyOHg0OCwKKwl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTI4eDQ4LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMTQ0eDQ4LW18ZGFyd2luLTE0NHg0OC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDE0NHg0OCwKKwl1c2U9eG51cHBjKzE0NHg0OCwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTE0NHg0OHxkYXJ3aW4tMTQ0eDQ4fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxNDR4NDgsCisJdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzE0NHg0OCwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTE2MHg2NC1tfGRhcndpbi0xNjB4NjQtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxNjB4NjQsCisJdXNlPXhudXBwYysxNjB4NjQsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0xNjB4NjR8ZGFyd2luLTE2MHg2NHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTYweDY0LAorCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxNjB4NjQsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0yMDB4NjQtbXxkYXJ3aW4tMjAweDY0LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMjAweDY0LAorCXVzZT14bnVwcGMrMjAweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMjAweDY0fGRhcndpbi0yMDB4NjR8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDIwMHg2NCwKKwl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMjAweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAorCit4bnVwcGMtMjAweDc1LW18ZGFyd2luLTIwMHg3NS1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDIwMHg3NSwKKwl1c2U9eG51cHBjKzIwMHg3NSwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTIwMHg3NXxkYXJ3aW4tMjAweDc1fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAyMDB4NzUsCisJdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzIwMHg3NSwgdXNlPXhudXBwYytiYXNpYywKKworeG51cHBjLTI1Nng5Ni1tfGRhcndpbi0yNTZ4OTYtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAyNTZ4OTYsCisJdXNlPXhudXBwYysyNTZ4OTYsIHVzZT14bnVwcGMrYmFzaWMsCisKK3hudXBwYy0yNTZ4OTZ8ZGFyd2luLTI1Nng5NnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMjU2eDk2LAorCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysyNTZ4OTYsIHVzZT14bnVwcGMrYmFzaWMsCisKIAogIyMjIyBCZU9TCiAjCkBAIC03MTIsMTMgKzE1ODksMTQgQEAKICMKIGxpbnV4LWJhc2ljfGxpbnV4IGNvbnNvbGUsCiAJYW0sIGJjZSwgZW8sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWl0IzgsIG5jdiMxOCwKKwlpdCM4LCBuY3YjMTgsIFU4IzEsCiAJYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwaVwzMTZqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCiAJYmVsPV5HLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssCi0JZWwxPVxFWzFLLCBmbGFzaD1cRVs/NWhcRVs/NWwkPDIwMC8+LCBob21lPVxFW0gsCisJY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKKwljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKKwljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKKwlkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osCisJZWw9XEVbSywgZWwxPVxFWzFLLCBmbGFzaD1cRVs/NWhcRVs/NWwkPDIwMC8+LCBob21lPVxFW0gsCiAJaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALAogCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwga2IyPVxFW0csIGticz1cMTc3LAogCWtjYnQ9XEVbWiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKQEAgLTczMCw3ICsxNjA4LDcgQEAKIAlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAogCWtzcGQ9XlosIG5lbD1eTV5KLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFtPVxFWz83bCwKIAlybWlyPVxFWzRsLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHJzMT1cRWNcRV1SLCBzYz1cRTcsCi0Jc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTElO20sCisJc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwOSV0OzExJTttLAogCXNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCiAJdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLCB1c2U9a2xvbmUrc2dyLAogCXVzZT1lY21hK2NvbG9yLApAQCAtNzQ2LDI5ICsxNjI0LDQ5IEBACiAjIDEuOS45LgogbGludXgtYy1uY3xsaW51eCBjb25zb2xlIHdpdGggY29sb3ItY2hhbmdlLAogCWNjYywKLQlpbml0Yz1cRV1QJXAxJXglcDIlezI1Nn0lKiV7MTAwMH0lLyUwMnglcDMlezI1Nn0lKiV7MTAwMH0lLyUwMnglcDQlezI1Nn0lKiV7MTAwMH0lLyUwMngsCisJaW5pdGM9XEVdUCVwMSV4JXAyJXsyNTV9JSolezEwMDB9JS8lMDJ4JXAzJXsyNTV9JSolezEwMDB9JS8lMDJ4JXA0JXsyNTV9JSolezEwMDB9JS8lMDJ4LAogCW9jPVxFXVIsIHVzZT1saW51eC1iYXNpYywKICMgRnJvbTogRGVubmlzIEhlbnJpa3NlbiA8b3B1c0Bvc3JsLmRrPiwgOSBKdWx5IDE5OTYKIGxpbnV4LWN8bGludXggY29uc29sZSAxLjMuNisgZm9yIG9sZGVyIG5jdXJzZXMsCiAJY2NjLAotCWluaXRjPVxFXVAlPyVwMSV7OX0lPiV0JXAxJXsxMH0lLSUnYSclKyVjJWUlcDElZCU7JXAyJXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXAzJXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXA0JXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7LAorCWluaXRjPVxFXVAlPyVwMSV7OX0lPiV0JXAxJXsxMH0lLSUnYSclKyVjJWUlcDElZCU7JXAyJXsyNTV9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXAzJXsyNTV9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXA0JXsyNTV9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7LAogCW9jPVxFXVIsIHVzZT1saW51eC1iYXNpYywKIAogIyBUaGUgMi4yLngga2VybmVscyBhZGQgYSBwcml2YXRlIG1vZGUgdGhhdCBzZXRzIHRoZSBjdXJzb3IgdHlwZTsgdXNlIHRoYXQgdG8KICMgZ2V0IGEgYmxvY2sgY3Vyc29yIGZvciBjdnZpcy4KICMgcmVwb3J0ZWQgYnkgRnJhbmsgSGVja2VuYmFjaCA8ZnJhbmtAZy1uLXUuZGU+LgotbGludXh8bGludXggY29uc29sZSwKK2xpbnV4Mi4yfGxpbnV4IDIuMi54IGNvbnNvbGUsCiAJY2l2aXM9XEVbPzI1bFxFWz8xYywgY25vcm09XEVbPzI1aFxFWz8wYywKIAljdnZpcz1cRVs/MjVoXEVbPzhjLCB1c2U9bGludXgtYy1uYywKIAorIyBMaW51eCAyLjYueCBoYXMgYSBmaXggZm9yIFNJL1NPIHRvIHdvcmsgd2l0aCBVVEYtOCBlbmNvZGluZyBhZGRlZCBoZXJlOgorIwlodHRwOi8vbGttbC5pbmRpYW5hLmVkdS9oeXBlcm1haWwvbGludXgva2VybmVsLzA2MDIuMi8wODY4Lmh0bWwKKyMgVXNpbmcgU0kvU08gaGFzIHRoZSBkcmF3YmFjayB0aGF0IGl0IGNvbmZ1c2VzIHNjcmVlbi4gIFNDUyB3b3VsZCB3b3JrLgorIyBIb3dldmVyLCBTQ1MgaXMgYnVnZ3kgKHNlZSBjb21tZW50IGluIERlYmlhbiAjNTE1NjA5KSAtVEQKKyMgRnVydGhlciwgdGhpcyBicmVha3MgbG9uZ3N0YW5kaW5nIHdvcmthcm91bmRzIGZvciBMaW51eCBjb25zb2xlJ3MgbGluZQorIyBkcmF3aW5nIChzZWUgRGViaWFuIDY2NTk1OSkgLVRECitsaW51eDIuNnxsaW51eCAyLjYueCBjb25zb2xlLAorCXJtYWNzPV5PLAorCXNncj1cRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCisJc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHVzZT1saW51eDIuMiwKKworIyBUaGUgMy4wIGtlcm5lbCBhZGRzIHN1cHBvcnQgZm9yIGNsZWFyaW5nIHNjcm9sbGJhY2sgYnVmZmVyIChjYXBhYmlsaXR5IEUzKS4KKyMgSXQgaXMgdGhlIHNhbWUgYXMgeHRlcm0ncyBlcmFzZS1zYXZlZC1saW5lcyBmZWF0dXJlLgorbGludXgzLjB8bGludXggMy4wIGtlcm5lbHMsCisJRTM9XEVbM0osIHVzZT1saW51eDIuNiwKKworIyBUaGlzIGlzIExpbnV4IGNvbnNvbGUgZm9yIG5jdXJzZXMuCitsaW51eHxsaW51eCBjb25zb2xlLAorCXVzZT1saW51eDIuMiwKKwogIyBTdWJqZWN0OiBsaW51eCAyLjYuMjYgdnQgYmFja19jb2xvcl9lcmFzZQogIyBDaGFuZ2VzIHRvIHRoZSBMaW51eCBjb25zb2xlIGRyaXZlciBicm9rZSBiY2UgbW9kZWwgYXMgcmVwb3J0ZWQgaW4KICMJaHR0cHM6Ly9idWd6aWxsYS5ub3ZlbGwuY29tL3Nob3dfYnVnLmNnaT9pZD00MTg2MTMKICMgYXBwYXJlbnRseSBmcm9tCiAjCWh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDgvNC8yNi8zMDUKLSMJaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2ZhLmxpbnV4Lmtlcm5lbC9icm93c2VfdGhyZWFkL3RocmVhZC84N2Y5ODMzOGYwZDYzNmJiL2FhOTZlOGI4NmNlZTBkMWU/bG5rPXN0JnE9I2FhOTZlOGI4NmNlZTBkMWUKKyMJaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwOC8xMC8zLzY2CiBsaW51eDIuNi4yNnxsaW51eCBjb25zb2xlIHcvbyBiY2UsCi0JYmNlQCwgdXNlPWxpbnV4LAorCWJjZUAsIHVzZT1saW51eDIuNiwKIAogIyBTZWUgdGhlIG5vdGUgb24gSUNIL0lDSDEgVkVSU1VTIFJNSVIvU01JUiBuZWFyIHRoZSBlbmQgb2YgZmlsZQogbGludXgtbmljfGxpbnV4IHdpdGggaWNoL2ljaDEgc3VwcHJlc3NlZCBmb3Igbm9uLWN1cnNlcyBwcm9ncmFtcywKQEAgLTgxNCw2ICsxNzEyLDQxIEBACiAJaW5pdHBALCBrY2J0QCwgb2NALCBvcD1cRVszNzs0MG0sIHJzMT1cRWMsIHRzbD1cRVs/VCwKIAl1c2U9bGludXgsCiAKKyMgMTYtY29sb3IgbGludXggY29uc29sZSBlbnRyeTsgdGhpcyB3b3JrcyB3aXRoIGEgMjU2LWNoYXJhY3RlcgorIyBjb25zb2xlIGZvbnQgYnV0IGJyaWdodCBiYWNrZ3JvdW5kIGNvbG9ycyB0dXJuIGludG8gZGltIG9uZXMgd2hlbgorIyB5b3UgdXNlIGEgNTEyLWNoYXJhY3RlciBjb25zb2xlIGZvbnQuIFRoaXMgdXNlcyBib2xkIGZvciBicmlnaHQKKyMgZm9yZWdyb3VuZCBjb2xvcnMgYW5kIGJsaW5rIGZvciBicmlnaHQgYmFja2dyb3VuZCBjb2xvcnMuCitsaW51eC0xNmNvbG9yfGxpbnV4IGNvbnNvbGUgd2l0aCAxNiBjb2xvcnMsCisJY29sb3JzIzE2LCBuY3YjNjMsIHBhaXJzIzI1NiwKKwlzZXRhYj1cRVs0JXAxJXs4fSVtJWQlPyVwMSV7N30lPiV0OzUlZTsyNSU7bSwKKwlzZXRhZj1cRVszJXAxJXs4fSVtJWQlPyVwMSV7N30lPiV0OzElZTsyMSU7bSwKKwl1c2U9bGludXgsCisKKyMgYnRlcm0gKGJvZ2wgMC4xLjE4KQorIyBJbXBsZW1lbnRhdGlvbiBpcyBpbiBib2dsLXRlcm0uYworIyBLZXkgY2FwYWJpbGl0aWVzIGZyb20gbGludXggdGVybWluZm8gZW50cnkKKyMKKyMgTm90ZXM6CisjIGJ0ZXJtIG9ubHkgc3VwcG9ydHMgYWNzIHVzaW5nIHdpZGUtY2hhcmFjdGVycywgaGFzIGNhc2UgZm9yIHRoZXNlOiBxanhhbWxrdXQKKyMgYnRlcm0gZG9lcyBub3Qgc3VwcG9ydCBzZ3IsIHNpbmNlIGl0IG9ubHkgcHJvY2Vzc2VzIG9uZSBwYXJhbWV0ZXIgLVRECitidGVybXxib2dsIHZpcnR1YWwgdGVybWluYWwsCisJYW0sIGJjZSwKKwljb2xvcnMjOCwgY29scyM4MCwgbGluZXMjMjQsIHBhaXJzIzY0LAorCWFjc2M9YWFqamtrbGxtbXFxdHR1dXh4LCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAorCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGluZD1eSiwKKwlrYjI9XEVbRywga2JzPVwxNzcsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKKwlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2VuZD1cRVs0fiwga2YxPVxFW1tBLAorCWtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LAorCWtmMTQ9XEVbMjZ+LCBrZjE1PVxFWzI4fiwga2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LAorCWtmMTg9XEVbMzJ+LCBrZjE5PVxFWzMzfiwga2YyPVxFW1tCLCBrZjIwPVxFWzM0fiwKKwlrZjM9XEVbW0MsIGtmND1cRVtbRCwga2Y1PVxFW1tFLCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAorCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwKKwlrbW91cz1cRVtNLCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwga3NwZD1eWiwgbmVsPV5NXkosCisJb3A9XEVbNDltXEVbMzltLCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtc289XEVbMjdtLAorCXJtdWw9XEVbMjRtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAorCXNncjA9XEVbMG0sIHNtYWNzPV5OLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAorCiAjIyMjIE1hY2gKICMKIApAQCAtODM5LDYgKzE3NzIsMjQgQEAKIAlkaW09XEVbMm0sIGludmlzPVxFWzhtLCBvcD1cRVszNzs0MG0sIHJtc289XEVbMjdtLAogCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHVzZT1tYWNoLAogCisjIEZyb206IFNhbXVlbCBUaGliYXVsdAorIyBTb3VyY2U6IGdpdDovL2dpdC5zdi5nbnUub3JnL2h1cmQvZ251bWFjaC5naXQKKyMgRmlsZXM6IGkzODYvaTM4NmF0L2tkLmMKKyMKKyMgQWRkZWQgbmVsLCBocGEsIHNnciBhbmQgcmVtb3ZlZCBybWFjcywgc21hY3MgYmFzZWQgb24gc291cmNlIC1URAorbWFjaC1nbnV8R05VIE1hY2gsCisJYWNzYz0rPlwsPC1cXi52MFwzMzNgK2FcMjYxZlwzNzBnXDM2MWhcMjYwaSNqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCisJZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sIGVjaD1cRVslcDElZFgsCisJZWwxPVxFWzFLLCBocGE9XEVbJWklcDElZEcsIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKKwlpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOG0sIG5lbD1cRUUsIHJpbj1cRVslcDElZFQsCisJc2dyPVxFWzAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwNyV0OzglO20sCisJdXNlPW1hY2gsCisKK21hY2gtZ251LWNvbG9yfE1hY2ggQ29uc29sZSB3aXRoIEFOU0kgY29sb3IsCisJY29sb3JzIzgsIHBhaXJzIzY0LAorCW9wPVxFWzM3OzQwbSwgcm1zbz1cRVsyN20sIHNldGFiPVxFWzQlcDElZG0sCisJc2V0YWY9XEVbMyVwMSVkbSwgdXNlPW1hY2gtZ251LAorCiAjIEZyb206IE1hcmN1cyBCcmlua21hbm4KICMgaHR0cDovL3NhdmFubmFoLmdudS5vcmcvY2dpLWJpbi92aWV3Y3ZzLypjaGVja291dCovaHVyZC9odXJkL2NvbnNvbGUvCiAjCkBAIC04NjcsOSArMTgxOCw5IEBACiAjCiAjIFJlYWRpbmcgdGhlIHNvdXJjZSwgUklTIHJlc2V0cyBjbm9ybSwgYnV0IG5vdCB4bW91cy4KIGh1cmR8VGhlIEdOVSBIdXJkIGNvbnNvbGUgc2VydmVyLAotCWFtLCBiY2UsIGJ3LCBlbywga20sIG1pciwgbXNnciwgeG9uLAorCWFtLCBiY2UsIGJ3LCBlbywga20sIG1pciwgbXNnciwgeGVubCwgeG9uLAogCWNvbG9ycyM4LCBpdCM4LCBuY3YjMTgsIHBhaXJzIzY0LAotCWFjc2M9KytcLFwsLS0uLjAwaWlgYGFhZmZnZ2hoampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAorCWFjc2M9KytcLFwsLS0uLjAwYGBhYWZmZ2doaGlpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAogCWNsZWFyPVxFYywgY25vcm09XEVbPzI1aCwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKIAljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCkBAIC04OTYsMzgyICsxODQ3LDYgQEAKIAlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB2cGE9XEVbJWklcDElZGQsIGdyYm9tPVxFWz4xbCwKIAlnc2JvbT1cRVs+MWgsCiAKLSMjIyMgT1NGIFVuaXgKLSMKLQotIyBPU0YvMSAxLjEgU25hcHNob3QgMgotcG1jb25zfHBtY29uc29sZXxQTUFYIGNvbnNvbGUsCi0JYW0sCi0JY29scyMxMjgsIGxpbmVzIzU3LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdXUxPV5LLCBodD1eSSwKLQlpbmQ9XkosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0KLSMgU0NPIGNvbnNvbGUgYW5kIFNPUy1TeXNjb25zIGNvbnNvbGUgZm9yIDM4NmJzZAotIyAoc2NvYW5zaTogaGFkIHVua25vd24gY2FwYWJpbGl0aWVzCi0jCTpHYz1OOkdkPUs6R2g9TTpHbD1MOkd1PUo6R3Y9XDA3MjpcCi0jCTpHQz1FOkdEPUI6R0g9RDpHTD1cNjQ6R1U9QTpHVj1cNjM6R1I9QzoKLSMJOkcxPT86RzI9WjpHMz1AOkc0PVk6RzU9OzpHNj1JOkc3PUg6Rzg9PDpcCi0jCTpDVz1cRVtNOk5VPVxFW046UkY9XEVbTzpSQz1cRVtQOlwKLSMJOldMPVxFW1M6V1I9XEVbVDpDTD1cRVtVOkNSPVxFW1Y6XAotIyBJIHJlbmFtZWQgR1MvR0UvSE0vRU4vUFUvUEQvUlQgYW5kIGFkZGVkIGtsb25lK3Nnci1kdW1iLCBiYXNlZAotIyBvbiB0aGUgPHNtYWNzPj1cRVsxMm0gIC0tIGVzcikKLSMKLSMga2xvbmUrc2dyLWR1bWIgaXMgYW4gZXJyb3Igc2luY2UgdGhlIGFjc2MgZG9lcyBub3QgbWF0Y2ggLVRECi0jCi0jIEluIHRoaXMgZGVzY3JpcHRpb24gYmFzZWQgb24gU0NPJ3Mga2V5Ym9hcmQoSFcpIG1hbnBhZ2UgbGlzdCBvZiBkZWZhdWx0Ci0jIGZ1bmN0aW9uIGtleSB2YWx1ZXM6Ci0jCUYxMy1GMjQgYXJlIHNoaWZ0ZWQgRjEtRjEyCi0jCUYyNS1GMzYgYXJlIGNvbnRyb2wgRjEtRjEyCi0jCUYzNy1GNDggYXJlIHNoaWZ0K2NvbnRyb2wgRjEtRjEyCi0jCi0jIGhwYS92cGEgd29yayBpbiB0aGUgY29uc29sZSwgYnV0IG5vdCBpbiBzY290ZXJtOgotIwlocGE9XEVbJXAxJWRHLAotIwl2cGE9XEVbJXAxJWRkLAotIwotIyBTQ08ncyB0ZXJtaW5mbyB1c2VzCi0jCWtMRlQ9XEVbZCwKLSMJa1JJVD1cRVtjLAotIyB3aGljaCBkbyBub3Qgd29yayAoY29uc29sZSBvciBzY290ZXJtKS4KLSMKLSMgQ29uc29sZSBkb2N1bWVudHMgb25seSAzIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB3aXRoIFNHUiAoc28gd2UgZG9uJ3QgdXNlIHNncikuCi1zY29hbnNpLW9sZHxTQ08gRXh0ZW5kZWQgQU5TSSBzdGFuZGFyZCBjcnQgKDUuMC41KSwKLQlPVGJzLCBhbSwgYmNlLCBlbywgeG9uLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgcGFpcnMjNjQsCi0JYWNzYz0tXDIzMC5cMjMxXCwuKy8wWzU1NjY3Nzg4OTlcOlw6Ozs8PD09Pj5GRkdHSEhJSUpKS0tMTE1NTk5PT1BQUVFSUlNTVFRVVVZWV1dYWGBcMjA0YTBmeGdxaDJqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfVwwMzR+XDIwNywKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwKLQljaXZpcz1cRVs9MTQ7MTJDLCBjbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz0xMDsxMkMsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgY3Z2aXM9XEVbPTA7MTJDLCBkY2g9XEVbJXAxJWRQLAotCWRjaDE9XEVbUCwgZGlzcGM9XEVbPSVwMSVkZywgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllZD1cRVttXEVbSiwgZWw9XEVbbVxFW0ssIGVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwKLQlodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCi0JaW5kPVxFW1MsIGluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwga2JlZz1cRVtFLCBrYnM9XkgsCi0Ja2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVwxNzcsIGtlbmQ9XEVbRiwga2YxPVxFW00sIGtmMTA9XEVbViwga2YxMT1cRVtXLAotCWtmMTI9XEVbWCwga2YxMz1cRVtZLCBrZjE1PVxFW2EsIGtmMTY9XEVbYiwga2YxNz1cRVtjLAotCWtmMTg9XEVbZCwga2YxOT1cRVtlLCBrZjI9XEVbTiwga2YyMD1cRVtmLCBrZjIxPVxFW2csCi0Ja2YyMj1cRVtoLCBrZjIzPVxFW2ksIGtmMjQ9XEVbaiwga2YyNT1cRVtrLCBrZjI2PVxFW2wsCi0Ja2YyNz1cRVttLCBrZjI4PVxFW24sIGtmMjk9XEVbbywga2YzPVxFW08sIGtmMzA9XEVbcCwKLQlrZjMxPVxFW3EsIGtmMzI9XEVbciwga2YzMz1cRVtzLCBrZjM0PVxFW3QsIGtmMzU9XEVbdSwKLQlrZjM2PVxFW3YsIGtmMzc9XEVbdywga2YzOD1cRVt4LCBrZjM5PVxFW3ksIGtmND1cRVtQLAotCWtmNDA9XEVbeiwga2Y0MT1cRVtALCBrZjQyPVxFW1ssIGtmNDM9XEVbXFwsIGtmNDQ9XEVbXSwKLQlrZjQ1PVxFW1xeLCBrZjQ2PVxFW18sIGtmNDc9XEVbYCwga2Y0OD1cRVt7LCBrZjU9XEVbUSwKLQlrZjY9XEVbUiwga2Y3PVxFW1MsIGtmOD1cRVtULCBrZjk9XEVbVSwga2hvbWU9XEVbSCwKLQlraWNoMT1cRVtMLCBrbnA9XEVbRywga3BwPVxFW0ksIG9wPVxFWzA7Mzc7NDBtLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRVtULCByaW49XEVbJXAxJWRULCBybWFjcz1cRVsxMG0sCi0Jcm1hbT1cRVs/N2wsIHJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsCi0Jc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVswOzEwbSwKLQlzbWFjcz1cRVsxMm0sIHNtYW09XEVbPzdoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotc2NvYW5zaS1uZXd8U0NPIEV4dGVuZGVkIEFOU0kgc3RhbmRhcmQgY3J0ICg1LjAuNiksCi0Ja20sCi0JY2l2aXM9XEVbPTBjLCBjbm9ybT1cRVs9MWMsIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdnZpcz1cRVs9MmMsIG1nYz1cRVs9ciwgb2M9XEVbNTFtLCBvcD1cRVs1MG0sCi0JcmVwPVxFWyVwMSVkOyVwMiVkYiwgcm1tPVxFWz0xMUwsCi0Jc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTslPyVwOSV0OzEyJTttLAotCXNtZ2I9XEVbPTE7MG0sIHNtZ2JwPVxFWz0xOyVpJXAxJWRtLAotCXNtZ2xwPVxFWz0yOyVpJXAxJWRtLCBzbWdyPVxFWz0zOzBtLAotCXNtZ3JwPVxFWz0zOyVpJXAxJWRtLCBzbWd0PVxFWz0wOzBtLAotCXNtZ3RwPVxFWz0wOyVpJXAxJWRtLCBzbW09XEVbPTEwTCwKLQl3aW5kPVxFWyVpJXAxJWQ7JXAyJWQ7JWklcDMlZDslcDQlZHIsCi0JdXNlPXNjb2Fuc2ktb2xkLAotIyBtYWtlIHRoaXMgZWFzeSB0byBjaGFuZ2UuLi4KLXNjb2Fuc2l8U0NPIEV4dGVuZGVkIEFOU0kgc3RhbmRhcmQgY3J0LAotCXVzZT1zY29hbnNpLW9sZCwKLQotIyBUaGlzIGFjdHVhbGx5IGRlc2NyaWJlcyB0aGUgZ2VuZXJpYyBTVnI0IGRpc3BsYXkgZHJpdmVyIGZvciBJbnRlbCBib3hlcy4KLSMgVGhlIDxkaW09XEVbMm0+IGlzbid0IGRvY3VtZW50ZWQgYW5kIHRoZXJlZm9yZSBtYXkgbm90IGJlIHJlbGlhYmxlLgotIyBGcm9tOiBFcmljIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gTW9uIE5vdiAyNyAxOTowMDo1MyBFU1QgMTk5NQotYXR0NjM4NnxhdDM4NnwzODZhdHxBVCZUIFdHUyA2Mzg2IGNvbnNvbGUsCi0JYW0sIGJ3LCBlbywgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWFjc2M9YGBhMWZ4Z3FoMGpZaz9sWm1AbkVvb3BwcURycnNzdEN1NHZBd0J4M3l5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPUMsCi0JY2xlYXI9XEVbMkpcRVtILCBjbm9ybT1cRVs9MUMsIGNyPV5NLCBjdWI9XEVbJXAxJWRELAotCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbMU0sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssCi0JaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbMUAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFWzFMLCBpbmQ9XEVbUywKLQlpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOW0sIGlzMj1cRVswOzEwOzM5bSwga2JzPV5ILAotCWtjYnQ9Xl0sIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XEVbUCwga2VuZD1cRVtZLCBrZjE9XEVPUCwga2YxMD1cRU9ZLCBrZjExPVxFT1osCi0Ja2YxMj1cRU9BLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPVCwga2Y2PVxFT1UsCi0Ja2Y3PVxFT1YsIGtmOD1cRU9XLCBrZjk9XEVPWCwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwKLQlrbnA9XEVbVSwga3BwPVxFW1YsIGtybWlyPVxFMCwgbmVsPVxyXEVbUywgcmM9XEU4LCByZXY9XEVbN20sCi0Jcmk9XEVbVCwgcmluPVxFWyVwMSVkVCwgcm1hY3M9XEVbMTBtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzYz1cRTcsCi0Jc2dyPVxFWzEwbVxFWzAlPyVwMSVwMyV8JXQ7NyU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwOSV0OzEyJWU7MTAlOyU/JXA3JXQ7OSU7bSwKLQlzZ3IwPVxFWzA7MTBtLCBzbWFjcz1cRVsxMm0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0JdGJjPVxFWzJnLCB2cGE9XEVbJWklcDElZGQsIHVzZT1rbG9uZStjb2xvciwKLSMgKHBjNjMwMHBsdXM6IHJlbW92ZWQgIjpLTT0vdXNyL2xpYi91YS9rbWFwLnM1OiI7IHJlbmFtZWQgQk8vRUUvQ0kvQ1YgLS0gZXNyKQotcGM2MzAwcGx1c3xBVCZUIDYzMDAgcGx1cywKLQlPVGJzLCBhbSwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz1DLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPTFDLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwKLQlkY2gxPVxFWzFQLCBkaW09XEVbMm0sIGRsMT1cRVsxTSwgZWQ9XEVbMEosIGVsPVxFWzBLLAotCWhvbWU9XEVbSCwgaHRzPVxFSCwgaWNoMT1cRVsxQCwgaWwxPVxFWzFMLCBpbmQ9XkosCi0JaW52aXM9XEVbOW0sIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjE9XEVPYywga2YxMD1cRU91LCBrZjI9XEVPZCwga2YzPVxFT2UsCi0Ja2Y0PVxFT2YsIGtmNT1cRU9nLCBrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLCBrZjk9XEVPaywKLQluZWw9Xk1eSiwgcmV2PVxFWzdtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2dyMD1cRVttLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKLQotIyBGcm9tOiBCZW5qYW1pbiBDLiBXLiBTaXR0bGVyIDxic2l0dGxlckBubXQuZWR1PgotIwotIyBJIGhhdmUgYSBVTklYIFBDIHdoaWNoIEkgdXNlIGFzIGEgdGVybWluYWwgYXR0YWNoZWQgdG8gbXkgTGludXggUEMuCi0jIFVuZm9ydHVuYXRlbHksIHRoZSBVTklYIFBDIHRlcm1pbmZvIGVudHJ5IHRoYXQgY29tZXMgd2l0aCBuY3Vyc2VzCi0jIGlzIGJyb2tlbi4gQWxsIHRoZSBzcGVjaWFsIGtleSBzZXF1ZW5jZXMgYXJlIGJyb2tlbiwgbWFraW5nIGl0IHVudXNhYmxlCi0jIHdpdGggRW1hY3MuIFRoZSBwcm9ibGVtIHN0ZW1zIGZyb20gdGhlIGZvbGxvd2luZzoKLSMKLSMgVGhlIFVOSVggUEMgaGFzIGEgcGxldGhvcmEgb2Yga2V5cyAoMTAzIG9mIHRoZW0sIGFuZCB0aGVyZSdzIG5vIG51bWVyaWMKLSMga2V5cGFkISksIGxvYWRhYmxlIGZvbnRzLCBhbmQgc3RyYW5nZSBoaWdobGlnaHRpbmcgbW9kZXMgKCJkaXRoZXJlZCIKLSMgaGFsZi1pbnRlbnNpdHksICJzbWVhcmVkIiBib2xkLCBhbmQgcmVhbCBzdHJpa2Utb3V0LCBmb3IgZXhhbXBsZS4pIEl0IGFsc28KLSMgdXNlcyByZXNpemFibGUgdGVybWluYWwgd2luZG93cywgYnV0IHRoZSBidW5kbGVkIHRlcm1pbmFsIHByb2dyYW0gYWx3YXlzCi0jIHVzZXMgYW4gODB4MjQgd2luZG93IChhbmQgZG9lc24ndCBzdXBwb3J0IHNlZW0gdG8gc3VwcG9ydCBhIDEzMi1jb2x1bW4KLSMgbW9kZS4pCi0jCi0jIEhJU1RPUlk6IFRoZSBVTklYIFBDIHdhcyBvbmUgb2YgdGhlIGZpcnN0IG1hY2hpbmVzIHdpdGggYSBHVUksIGFuZCB1c2VkIGEKLSMgbGlicmFyeSB3aGljaCB3YXMgYSBzdXBlcnNldCBvZiBTVnIzLjUgY3Vyc2VzIChjYWxsZWQgdGFtLCBmb3IgInRlcm1pbmFsCi0jIGFjY2VzcyBtZXRob2QiLikgdGFtIGluY2x1ZGVzIHN1cHBvcnQgZm9yIHJlYWwsIG92ZXJsYXBwaW5nIHdpbmRvd3MsCi0jIG9uc2NyZWVuIGZ1bmN0aW9uIGtleSBsYWJlbHMsIGFuZCBiaXRtYXAgZ3JhcGhpY3MuIEJ1dCBzaW5jZSB0aGUgcHJpbWFyeQotIyB1c2VyIGludGVyZmFjZSBvbiB0aGUgVU5JWCBQQyB3YXMgYSBHVUkgcHJvZ3JhbSAodWEsIGZvciAidXNlcgotIyBhc3Npc3RhbnQiLCkgYW5kIHJlbW90ZSBhZG1pbmlzdHJhdGlvbiB3YXMgY29uc2lkZXJlZCBpbXBvcnRhbnQgZm9yIHRoZQotIyBtYWNoaW5lLCB0YW0gYWxzbyBzdXBwb3J0ZWQgVlQxMDAtY29tcGF0aWJsZSB0ZXJtaW5hbHMgYXR0YWNoZWQgdG8gdGhlCi0jIHNlcmlhbCBwb3J0IG9yIHVzZWQgYWNyb3NzIHRoZSBTdGFyTGFuIG5ldHdvcmsuIFRvIHNpbXVsYXRlIHRoZSBleHRyYSBrZXlzCi0jIG5vdCBwcmVzZW50IG9uIGEgVlQxMDAsIHVzZXJzIGNvdWxkIHByZXNzIEVTQyBhbmQgYSB0d28tbGV0dGVyIHNlcXVlbmNlLAotIyBzdWNoIGFzIHUgZCAoVW5kbykgb3IgVSBEIChTaGlmdC1VbmRvLikgVGhlc2UgdHdvLWxldHRlciBzZXF1ZW5jZXMsCi0jIGhvd2V2ZXIsIHdlcmUgbm90IHRoZSBzYW1lIGFzIHRob3NlIHNlbnQgYnkgdGhlIGFjdHVhbCBVbmRvIGtleS4gVGhlCi0jIGFjdHVhbCBVbmRvIGtleSBzZW5kcyBFU0MgMCBzIHVuc2hpZnRlZCwgYW5kIEVTQyAwIFMgc2hpZnRlZCwgZm9yIGV4YW1wbGUuCi0jIChJZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBhZGRpbmcgc29tZSBvZiB0aGUgdGFtIGNhbGxzIHRvIG5jdXJzZXMsIGJ0dywgSQotIyBoYXZlIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gYW5kIHNldmVyYWwgcHJvZ3JhbXMgd2hpY2ggdXNlIHRhbS4gSXQgYWxzbwotIyB1c2VkIGFuIGV4dGVuZGVkIHRlcm1pbmZvIGZvcm1hdCB0byBkZXNjcmliZSBrZXkgc2VxdWVuY2VzLCBzcGVjaWFsCi0jIGhpZ2hsaWdodGluZyBtb2RlcywgZXRjLikKLSMKLSMgS0VZUzogVGhpcyBtZWFucyB0aGF0IG5jdXJzZXMgd291bGQgcXVpdGUgcGFpbmZ1bCBvbiB0aGUgVU5JWCBQQywgc2luY2UKLSMgdGhlcmUgYXJlIHR3byBzZXF1ZW5jZXMgZm9yIGV2ZXJ5IGtleS1tb2RpZmllciBjb21iaW5hdGlvbiAobG9jYWwga2V5Ym9hcmQKLSMgc2VxdWVuY2UgYW5kIHJlbW90ZSAiVlQxMDAiIHNlcXVlbmNlLikgQnV0IEkgZG91YnQgbWFueSBwZW9wbGUgYXJlIHRyeWluZwotIyB0byB1c2UgbmN1cnNlcyBvbiB0aGUgVU5JWCBQQywgc2luY2UgbmN1cnNlcyBkb2Vzbid0IHByb3Blcmx5IGhhbmRsZSB0aGUKLSMgR1VJLiBVbmZvcnR1bmF0ZWx5LCB0aGUgdGVybWluZm8gZW50cnkgKGFuZCB0aGUgdGVybWNhcCwgdG9vLCBJIHByZXN1bWUpCi0jIHNlZW0gdG8gaGF2ZSBiZWVuIGJ1aWx0IGZyb20gdGhlIG1hbnVhbCBkZXNjcmliaW5nIHRoZSBWVDEwMCBzZXF1ZW5jZXMuCi0jIFRoaXMgbWVhbnMgaXQgZG9lc24ndCB3b3JrIGZvciBhIHJlYWwgbGl2ZSBVTklYIFBDLgotIwotIyBGT05UUzogVGhlIFVOSVggUEMgYWxzbyBoYXMgYSBzdHJhbmdlIGludGVycHJldGF0aW9uIG9mICJhbHRlcm5hdGUKLSMgY2hhcmFjdGVyIHNldCIuIFJhdGhlciB0aGFuIHRoZSBWVDEwMCBncmFwaGljcyB5b3UgbWlnaHQgZXhwZWN0LCBpdCBhbGxvd3MKLSMgdXAgdG8gOCBjdXN0b20gZm9udHMgdG8gYmUgbG9hZGVkIGF0IGFueSBnaXZlbiB0aW1lLiBUaGlzIG1lYW5zIHRoYXQKLSMgcHJvZ3JhbXMgZXhwZWN0aW5nIFZUMTAwIGdyYXBoaWNzIHdpbGwgdXN1YWxseSBiZSBkaXNhcHBvaW50ZWQuIEZvciB0aGlzCi0jIHJlYXNvbiBJIGhhdmUgZGlzYWJsZWQgdGhlIHNtYWNzL3JtYWNzIHNlcXVlbmNlcywgYnV0IHRoZXkgY291bGQgZWFzaWx5IGJlCi0jIHJlLWVuYWJsZWQuIEhlcmUgYXJlIHRoZSByZWxldmFudCBjb250cm9sIHNlcXVlbmNlcyAoZnJvbSB0aGUgRVNDQVBFKDcpCi0jIG1hbnBhZ2UpLCBzaG91bGQgeW91IHdpc2ggdG8gZG8gc286Ci0jCi0jIFNHUjEwIC0gU2VsZWN0IGZvbnQgMCAtIEVTQyBbIDEwIG0gb3IgU08KLSMgU0dSMTEgLSBTZWxlY3QgZm9udCAxIC0gRVNDIFsgMTEgbSBvciBTSQotIyBTR1IxMiAtIFNlbGVjdCBmb250IDIgLSBFU0MgWyAxMiBtCi0jIC4uLiAoZXRjLikKLSMgU0dSMTcgLSBTZWxlY3QgZm9udCA3IC0gRVNDIFsgMTcgbQotIwotIyBHcmFwaGljcyBmb3IgbGluZSBkcmF3aW5nIGFyZSBub3QgcmVsaWFibHkgZm91bmQgYXQgKmFueSogY2hhcmFjdGVyCi0jIGxvY2F0aW9uIGJlY2F1c2UgdGhlIFVOSVggUEMgaGFzIGR5bmFtaWNhbGx5IHJlbG9hZGFibGUgZm9udHMuIEkgdXNlIGZvbnQKLSMgMCBmb3IgcmVndWxhciB0ZXh0IGFuZCBmb250IDEgZm9yIGl0YWxpY3MsIGJ1dCB0aGlzIGlzIGJ5IG5vIG1lYW5zCi0jIHVuaXZlcnNhbC4gU28gQVNDSUkgbGluZSBkcmF3aW5nIGlzIGluIG9yZGVyIGlmIHNtYWNzL3JtYWNzIGFyZSBlbmFibGVkLgotIwotIyBNSVNDOiBUaGUgY3Vyc29yIHZpc2libGUvY3Vyc29yIGludmlzaWJsZSBzZXF1ZW5jZXMgd2VyZSBzd2FwcGVkIGluIHRoZQotIyBkaXN0cmlidXRlZCB0ZXJtaW5mby4KLSMKLSMgVG8gYW1lbGlvcmF0ZSB0aGVzZSBwcm9ibGVtcyAoYW5kIGZpeCBhIGZldyBoaWdobGlnaHRpbmcgYnVncykgSSByZXdyb3RlCi0jIHRoZSBVTklYIFBDIHRlcm1pbmZvIGVudHJ5LiBUaGUgbW9kaWZpZWQgdmVyc2lvbiB3b3JrcyBncmVhdCB3aXRoIEx5bngsCi0jIEVtYWNzLCBhbmQgWEVtYWNzIHJ1bm5pbmcgb24gbXkgTGludXggUEMgYW5kIGRpc3BsYXlpbmcgb24gdGhlIFVOSVggUEMKLSMgYXR0YWNoZWQgYnkgc2VyaWFsIGNhYmxlLiBJbiBFbWFjcywgZXZlbiB0aGUgVW5kbyBrZXkgd29ya3MsIGFuZCBtYW55Ci0jIGFwcGxpY2F0aW9ucyBjYW4gbm93IHVzZSB0aGUgRjEtRjgga2V5cy4KLSMKLSMgZXNyJ3Mgbm90ZXM6Ci0jCVRlcm1pbmZvIGVudHJ5IGZvciB0aGUgQVQmVCBVbml4IFBDIDczMDAKLSMJZnJvbSBlc2NhcGUoNykgaW4gVW5peCBQQyA3MzAwIE1hbnVhbC4KLSMJU29tZXdoYXQgc2ltaWxhciB0byBhIHZ0MTAwLWFtIChidXQgZGlmZmVyZW50IGVub3VnaAotIwl0byByZWRvIHRoaXMgZnJvbSBzY3JhdGNoLikKLSMKLSMJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIwkqCi0jCSogICAgICAgICAgIEZPTlQgTE9BRElORyBQUk9HUkFNIEZPUiBUSEUgVU5JWCBQQwotIwkqCi0jCSogICAgIFRoaXMgcm91dGluZSBsb2FkcyBhIGZvbnQgZGVmaW5lZCBpbiB0aGUgZmlsZSBBTFRGT05UCi0jCSogICAgIGludG8gZm9udCBtZW1vcnkgc2xvdCAjMS4gIE9uY2UgdGhlIGZvbnQgaGFzIGJlZW4gbG9hZGVkLAotIwkqICAgICBpdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgc2V0LgotIwkqCi0jCSogICAgIFRoZSBjYWxsIHRvIGlvY3RsIHdpdGggdGhlIGFyZ3VtZW50IFdJT0NMRk9OVCBpcyB0aGUga2V5Ci0jCSogICAgIHRvIHRoaXMgcm91dGluZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd2luZG93KDcpIGluCi0jCSogICAgIHRoZSBQQyA3MzAwIGRvY3VtZW50YXRpb24uCi0jCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSMJI2luY2x1ZGUgPHN0cmluZy5oPgkJLyogbmVlZGVkIGZvciBzdHJjcHkgY2FsbCAqLwotIwkjaW5jbHVkZSA8c3lzL3dpbmRvdy5oPiAgICAgICAgIC8qIG5lZWRlZCBmb3IgaW9jdGwgY2FsbCAqLwotIwkjZGVmaW5lIEZOU0laRQk2MAkJLyogZm9udCBuYW1lIHNpemUgKi8KLSMJI2RlZmluZSBBTFRGT05UICAiL3Vzci9saWIvd2ZvbnQvc3BlY2lhbC44LmZ0IiAgLyogZm9udCBmaWxlICovCi0jCS8qCi0jCSogICAgIFRoZSBmaWxlIC91c3IvbGliL3dmb250L3NwZWNpYWwuOC5mdCBjb21lcyB3aXRoIHRoZQotIwkqICAgICBzdGFuZGFyZCBQQyBzb2Z0d2FyZS4gIEl0IGRlZmluZXMgYSBncmFwaGljcyBjaGFyYWN0ZXIgc2V0Ci0jCSogICAgIHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgVGVsZXR5cGUgNTQyNSB0ZXJtaW5hbC4gIFRvIHZpZXcKLSMJKiAgICAgdGhpcyBvciBvdGhlciBmb250cyBpbiAvdXNyL2xpYi93Zm9udCwgdXNlIHRoZSBjb21tYW5kCi0jCSogICAgIGNmb250IDxmaWxlbmFtZT4uICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiBmb250cyBzZWUKLSMJKiAgICAgY2ZvbnQoMSkgaW4gdGhlIFBDIDczMDAgZG9jdW1lbnRhdGlvbi4KLSMJKi8KLSMKLSMJc3RydWN0IGFsdGZkYXRhIAkvKiBzdHJ1Y3R1cmUgZm9yIGFsdCBmb250IGRhdGEgKi8KLSMJewotIwlzaG9ydAlhbHRmX3Nsb3Q7CQkvKiBtZW1vcnkgc2xvdCBudW1iZXIgKi8KLSMJY2hhcglhbHRmX25hbWVbRk5TSVpFXTsJLyogZm9udCBuYW1lIChmaWxlIG5hbWUpICovCi0jCX07Ci0jCWxkZm9udCgpCi0jCXsKLSMJCWludCB3ZDsJCS8qIHdpbmRvdyBpbiB3aGljaCBhbHRmb250IHdpbGwgYmUgKi8KLSMJCXN0cnVjdCBhbHRmZGF0YSBhbHRmOwotIwkJYWx0Zi5hbHRmX3Nsb3Q9MTsKLSMJCXN0cmNweShhbHRmLmFsdGZfbmFtZSxBTFRGT05UKTsKLSMJCWZvciAod2QgPTE7IHdkIDwgMTI7IHdkKyspIHsKLSMJCSAgICAgaW9jdGwod2QsIFdJT0NMRk9OVCwmYWx0Zik7Ci0jCSAgICAgICAgfQotIwl9Ci0jCi0jIChhdHQ3MzAwOiBhZGRlZCA8Y2l2aXM+Lzxjbm9ybT4vPGljaDE+LzxpbnZpcz4gZnJvbSB0aGUgQlNESSBlbnRyeSwKLSMgdGhleSdyZSBjb25maXJtZWQgYnkgdGhlIG1hbiBwYWdlIGZvciB0aGUgU3lzdGVtIFYgZGlzcGxheS0tLWVzcikKLSMKLWF0dDczMDB8dW5peHBjfHBjNzMwMHwzYjF8czR8QVQmVCBVTklYIFBDIE1vZGVsIDczMDAsCi0JYW0sIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGJsaW5rPVxFWzltLCBib2xkPVxFWzFtLCBjYnQ9XEVeSSwgY2l2aXM9XEVbPTFDLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPTBDLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwKLQljdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllZD1cRVswSiwgZWw9XEVbMEssIGhvbWU9XEVbSCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOW0sIGlzMT1cMDE3XEVbPTF3LCBrQkVHPVxFTkIsCi0Ja0NBTj1cRU9XLCBrQ1BZPVxFTkQsIGtDUlQ9XEVPTiwga0RDPVxFTkYsIGtETD1cRU5FLAotCWtFTkQ9XEVOTiwga0VPTD1cRU9BLCBrRk5EPVxFT1gsIGtITFA9XEVPTSwga0hPTT1cRU5NLAotCWtJQz1cRU5KLCBrTEZUPVxFTkssIGtNT1Y9XEVOQywga05YVD1cRU5ILCBrT1BUPVxFT1IsCi0Ja1BSVj1cRU5HLCBrUkRPPVxFT1QsIGtSSVQ9XEVOTCwga1JQTD1cRU9ZLCBrU0FWPVxFT08sCi0Ja1VORD1cRU9TLCBrYmVnPVxFTmIsIGticz1eSCwga2Nhbj1cRU93LCBrY2J0PVxFW1osCi0Ja2Nsbz1cRU9WLCBrY2xyPVxFW0osIGtjbWQ9XEVPdSwga2NweT1cRU5kLCBrY3J0PVxFT24sCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVOZiwKLQlrZWQ9XEVbSiwga2VsPVxFT2EsIGtlbmQ9XEUwLCBrZXh0PVxFT2ssIGtmMT1cRU9jLCBrZjI9XEVPZCwKLQlrZjM9XEVPZSwga2Y0PVxFT2YsIGtmNT1cRU9nLCBrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLAotCWtmbmQ9XEVPeCwga2hscD1cRU9tLCBraG9tZT1cRVtILCBraWNoMT1cRU5qLCBraW5kPVxFW0IsCi0Ja21vdj1cRU5jLCBrbXJrPVxFTmksIGtucD1cRVtVLCBrbnh0PVxFTmgsIGtvcG49XEVPdiwKLQlrb3B0PVxFT3IsIGtwcD1cRVtWLCBrcHJ0PVxFT3osIGtwcnY9XEVOZywga3Jkbz1cRU90LAotCWtyZWY9XEVPYiwga3Jmcj1cRU5hLCBrcmk9XEVbQSwga3JwbD1cRU95LCBrcnN0PVxFT0IsCi0Ja3Nhdj1cRU9vLCBrc2x0PVxFTkksIGt1bmQ9XEVPcywgbmVsPVxFRSwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbMDsxMG0sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwKLQotIyBTZW50IGJ5IFN0ZWZhbiBTdGFwZWxiZXJnIDxzdGVmYW5AcmVudC1hLWd1cnUuZGU+LCAyNCBGZWIgMTk5NywgdGhpcyBpcwotIyBmcm9tIFNHSSdzIHRlcm1pbmZvIGRhdGFiYXNlLiAgU0dJJ3MgZW50cnkgc2hvd3MgRjktRjEyIHdpdGggdGhlIGNvZGVzCi0jIGZvciB0aGUgYXBwbGljYXRpb24ga2V5cGFkIG1vZGUuICBXZSBoYXZlIGFkZGVkIGlyaXMtYW5zaS1hcCByYXRoZXIgdGhhbgotIyBjaGFuZ2UgdGhlIG9yaWdpbmFsIHRvIGtleXBhZCBtb2RlLgotIwotIyAoaXJpcy1hbnNpOiBhZGRlZCBybWFtL3NtYW0gYmFzZWQgb24gaW5pdCBzdHJpbmcgLS0gZXNyKQotIwotIyBUaGlzIGVudHJ5LCBhbmQgdGhvc2UgZGVyaXZlZCBmcm9tIGl0LCBpcyB1c2VkIGluIHh3c2ggKGFsc28ga25vd24gYXMKLSMgd2ludGVybSkuICBTb21lIGNhcGFiaWxpdGllcyB0aGF0IGRvIG5vdCBmaXQgaW50byB0aGUgdGVybWluZm8gbW9kZWwKLSMgaW5jbHVkZSB0aGUgc2hpZnQtIGFuZCBjb250cm9sLWZ1bmN0aW9ua2V5czoKLSMKLSMgRjEtRjEyIGdlbmVyYXRlIGRpZmZlcmVudCBjb2RlcyB3aGVuIHNoaWZ0IG9yIGNvbnRyb2wgbW9kaWZpZXJzIGFyZSB1c2VkLgotIyBGb3IgZXhhbXBsZToKLSMJRjEgICAgICAJXEVbMDAxcQotIwlzaGlmdCBGMQlcRVswMTNxCi0jCWNvbnRyb2wtRjEJXEVbMDI1cQotIwotIyBJbiBhcHBsaWNhdGlvbiBrZXlwYWQgbW9kZSwgRjktRjEyIGdlbmVyYXRlIGNvZGVzIGxpa2UgdnQxMDAgUEYxLVBGNCwgaS5lLiwKLSMgXEVPUCB0byBcRU9TLiAgVGhlIHNoaWZ0ZWQgYW5kIGNvbnRyb2wgbW9kaWZpZXJzIHN0aWxsIGRvIHRoZSBzYW1lIHRoaW5nLgotIwotIyBUaGUgY3Vyc29yIGtleXMgYWxzbyBoYXZlIGRpZmZlcmVudCBjb2RlczoKLSMJY29udHJvbC11cAlcRVsxNjJxCi0jCWNvbnRyb2wtZG93bglcRVsxNjVxCi0jCWNvbnRyb2wtbGVmdAlcRVsxNTlxCi0jCWNvbnRyb2wtcmlnaHQJXEVbMTY4cQotIwotIwlzaGlmdC11cAlcRVsxNjFxCi0jCXNoaWZ0LWRvd24JXEVbMTY0cQotIwlzaGlmdC1sZWZ0CVxFWzE1OHEKLSMJc2hpZnQtcmlnaHQJXEVbMTY3cQotIwotIwljb250cm9sLXRhYglcWzA3MnEKLSMKLWlyaXMtYW5zaXxpcmlzLWFuc2ktbmV0fElSSVMgZW11bGF0aW5nIDQwIGxpbmUgQU5TSSB0ZXJtaW5hbCAoYWxtb3N0IFZUMTAwKSwKLQlhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyM0MCwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVsySiwKLQljbm9ybT1cRVs5L3lcRVsxMi95XEVbPTZsLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwKLQljdWIxPVxFW0QsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBLCBjdnZpcz1cRVsxMC95XEVbPTFoXEVbPTJsXEVbPTZoLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELAotCWlzMj1cRVs/MWxcRT5cRVs/N2hcRVsxMDBnXEVbMG1cRTdcRVtyXEU4LCBrREM9XEVbUCwKLQlrRU5EPVxFWzE0N3EsIGtIT009XEVbMTQzcSwga0xGVD1cRVsxNThxLCBrUFJUPVxFWzIxMHEsCi0Ja1JJVD1cRVsxNjdxLCBrU1BEPVxFWzIxOHEsIGticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVwxNzcsCi0Ja2VuZD1cRVsxNDZxLCBrZW50PV5NLCBrZjE9XEVbMDAxcSwga2YxMD1cRVswMTBxLAotCWtmMTE9XEVbMDExcSwga2YxMj1cRVswMTJxLCBrZjI9XEVbMDAycSwga2YzPVxFWzAwM3EsCi0Ja2Y0PVxFWzAwNHEsIGtmNT1cRVswMDVxLCBrZjY9XEVbMDA2cSwga2Y3PVxFWzAwN3EsCi0Ja2Y4PVxFWzAwOHEsIGtmOT1cRVswMDlxLCBraG9tZT1cRVtILCBraWNoMT1cRVsxMzlxLAotCWtucD1cRVsxNTRxLCBrcHA9XEVbMTUwcSwga3BydD1cRVsyMDlxLCBrcm1pcj1cRVsxNDZxLAotCWtzcGQ9XEVbMjE3cSwgbmVsPVxFRSwgcGZrZXk9XEVQMTAxOyVwMSVkLnklcDIlc1xFXFwsCi0JcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hbT1cRVs/N2wsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNjPVxFNywgc2dyMD1cRVttLCBzbWFtPVxFWz83aCwgc21zbz1cRVsxOzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywKLWlyaXMtYW5zaS1hcHxJUklTIEFOU0kgaW4gYXBwbGljYXRpb24ta2V5cGFkIG1vZGUsCi0JaXMyPVxFWz8xbFxFPVxFWz83aCwga2VudD1cRU9NLCBrZjEwPVxFWzAxMHEsCi0Ja2YxMT1cRVswMTFxLCBrZjEyPVxFWzAxMnEsIGtmOT1cRVswMDlxLCB1c2U9aXJpcy1hbnNpLAotCi0jIEZyb20gdGhlIG1hbi1wYWdlLCB0aGlzIGlzIGEgcXVhc2ktdnQxMDAgZW11bGF0b3IgdGhhdCBydW5zIG9uIFNHSSdzIElSSVgKLSMgKFQuRGlja2V5IDk4LzEvMjQpCi1pcmlzLWNvbG9yfHh3c2h8SVJJWCBBTlNJIHdpdGggY29sb3IsCi0JbmN2IzMzLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgZGNoPVxFWyVwMSVkUCwgZGltPVxFWzJtLAotCWVjaD1cRVslcDElZFgsIGljaD1cRVslcDElZEAsIHJjPVxFOCwgcml0bT1cRVsyM20sCi0Jcm11bD1cRVsyNG0sIHJzMT1cRWMsCi0JcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAotCXNpdG09XEVbM20sIHVzZT12dDEwMCtlbnEsIHVzZT1rbG9uZStjb2xvciwKLQl1c2U9aXJpcy1hbnNpLWFwLAotCi0jIFRoZSBmb2xsb3dpbmcgaXMgYSB2ZXJzaW9uIG9mIHRoZSBpYm0tcGMgZW50cnkgZGlzdHJpYnV0ZWQgd2l0aCBQQy9JWCwKLSMgKEludGVyYWN0aXZlIFN5c3RlbXMnIFN5c3RlbSAzIGZvciB0aGUgQmlnIEJsdWUpLCBtb2RpZmllZCBieSBSaWNoYXJkCi0jIE1jSW50b3NoIGF0IFVDQi9DU00uICBUaGUgOnB0OiBhbmQgOnVjOiBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvcmlnaW5hbCwKLSMgKHRoZSBmb3JtZXIgaXMgdW50cnVlLCBhbmQgdGhlIGxhdHRlciBmYWlsZWQgdW5kZXIgVUNCL21hbik7IHN0YW5kb3V0IGFuZAotIyB1bmRlcmxpbmUgbW9kZXMgaGF2ZSBiZWVuIGFkZGVkLiAgTm90ZTogdGhpcyBlbnRyeSBkZXNjcmliZXMgdGhlICJuYXRpdmUiCi0jIGNhcGFiaWxpdGllcyBvZiB0aGUgUEMgbW9ub2Nocm9tZSBkaXNwbGF5LCB3aXRob3V0IEFOWSBlbXVsYXRpb247IG1vc3QKLSMgY29tbXVuaWNhdGlvbnMgcGFja2FnZXMgKGJ1dCBOT1QgUEMvSVggY29ubmVjdCkgZG8gc29tZSBraW5kIG9mIGVtdWxhdGlvbi4KLXBjaXh8UEMvSVggY29uc29sZSwKLQlhbSwgYncsIGVvLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVxFYywgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIHJtc289XEVbbSwgcm11bD1cRVttLCBzZ3IwPVxFW20sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwKLQotIyAoaWJtcGN4OiB0aGlzIGVudHJ5IHVzZWQgdG8gYmUga25vd24gYXMgaWJteC4KLSMgSXQgZm9ybWVybHkgaW5jbHVkZWQgdGhlIGZvbGxvd2luZyBleHRlbnNpb24gY2FwYWJpbGl0aWVzOgotIwk6R0M9YjpHTD12OkdSPXQ6UlQ9Xko6XAotIwk6R0g9XEVbMTk2ZzpHVj1cRVsxNzlnOlwKLSMJOkdVPVxFWzE5M2c6R0Q9XEVbMTk0ZzpcCi0jCTpHMT1cRVsxOTFnOkcyPVxFWzIxOGc6RzM9XEVbMTkyZzpHND1cRVsyMTdnOlwKLSMJOkNXPVxFW0U6TlU9XEVbRjpSRj1cRVtHOlJDPVxFW0g6XAotIwk6V0w9XEVbSzpXUj1cRVtMOkNMPVxFW006Q1I9XEVbTjpcCi0jIEkgcmVuYW1lZCBHUy9HRS9XTC9XUi9DTC9DUi9QVS9QRC9ITS9FTjsgYWxzbywgcmVtb3ZlZCBhIGR1cGxpY2F0ZQotIyAiOmtoPVxFW1k6Ii4gIEFkZGVkIElCTS1QQyBmb3JtcyBjaGFyYWN0ZXJzIGFuZCBoaWdobGlnaHRzLCB0aGV5IG1hdGNoCi0jIHdoYXQgd2FzIHRoZXJlIGJlZm9yZS4gLS0gZXNyKQotaWJtcGN4fHhlbml4fGlibXh8SUJNIFBDIHhlbml4IGNvbnNvbGUgZGlzcGxheSwKLQlPVGJzLCBhbSwgbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNSwKLQljbGVhcj1eTCwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNLAotCWVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaWNoMT1cRVtALCBpbDE9XEVbTCwga2JzPV5ILAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlbmQ9XEVbZCwKLQlrZjE9XEVbSywga2YyPVxFW0wsIGtmMz1cRVtNLCBrZjQ9XEVbTiwga2hvbWU9XEVbWSwga25wPVxFW2UsCi0Ja3BwPVxFW1osIHVzZT1rbG9uZSthY3MsIHVzZT1rbG9uZStzZ3I4LAotCiAjIyMjIFFOWAogIwogCkBAIC0xMzczLDcgKzE5NDgsNyBAQAogcWFuc2ktZ3xRTlggQU5TSSwKIAlhbSwgZXNsb2ssIGhzLCB4b24sCiAJY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LCBuY3YjMTksIHBhaXJzIzY0LCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fk9hLAorCWFjc2M9T2FgYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKIAljbGVhcj1cRVsySlxFW0gsIGNub3JtPVxFWz8yNWhcRVs/MTJsLCBjcj1eTSwKIAljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwKQEAgLTE0MTYsNyArMTk5MSw3IEBACiAJc2V0Zj1cRVszJT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAogCXNncj1cRVswJT8lcDYldDsxJTslPyVwNSV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDcldDs5JTttJT8lcDkldFwwMTYlZVwwMTclOywKIAlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzJnLAorCXNtdWw9XEVbNG0sIHRiYz1cRVszZywKIAl0c2w9XEU3XEUxOzI0clxFWz82bFxFWzI1OyVpJXAxJWRILAogIwogcWFuc2l8UU5YIGFuc2kgd2l0aCBjb25zb2xlIHdyaXRlcywKQEAgLTE0MzUsNiArMjAxMCwyMDQgQEAKIHFhbnNpLXd8UU5YIGFuc2kgZm9yIHdpbmRvd3MsCiAJeHZwYSwgdXNlPXFhbnNpLW0sCiAKKyMjIyMgU0NPIGNvbnNvbGVzCisKKyMgU0NPIGNvbnNvbGUgYW5kIFNPUy1TeXNjb25zIGNvbnNvbGUgZm9yIDM4NmJzZAorIyAoc2NvYW5zaTogaGFkIHVua25vd24gY2FwYWJpbGl0aWVzCisjCTpHYz1OOkdkPUs6R2g9TTpHbD1MOkd1PUo6R3Y9XDA3MjpcCisjCTpHQz1FOkdEPUI6R0g9RDpHTD1cNjQ6R1U9QTpHVj1cNjM6R1I9QzoKKyMJOkcxPT86RzI9WjpHMz1AOkc0PVk6RzU9OzpHNj1JOkc3PUg6Rzg9PDpcCisjCTpDVz1cRVtNOk5VPVxFW046UkY9XEVbTzpSQz1cRVtQOlwKKyMJOldMPVxFW1M6V1I9XEVbVDpDTD1cRVtVOkNSPVxFW1Y6XAorIyBJIHJlbmFtZWQgR1MvR0UvSE0vRU4vUFUvUEQvUlQgYW5kIGFkZGVkIGtsb25lK3Nnci1kdW1iLCBiYXNlZAorIyBvbiB0aGUgPHNtYWNzPj1cRVsxMm0gIC0tIGVzcikKKyMKKyMga2xvbmUrc2dyLWR1bWIgaXMgYW4gZXJyb3Igc2luY2UgdGhlIGFjc2MgZG9lcyBub3QgbWF0Y2ggLVRECisjCisjIEluIHRoaXMgZGVzY3JpcHRpb24gYmFzZWQgb24gU0NPJ3Mga2V5Ym9hcmQoSFcpIG1hbnBhZ2UgbGlzdCBvZiBkZWZhdWx0CisjIGZ1bmN0aW9uIGtleSB2YWx1ZXM6CisjCUYxMy1GMjQgYXJlIHNoaWZ0ZWQgRjEtRjEyCisjCUYyNS1GMzYgYXJlIGNvbnRyb2wgRjEtRjEyCisjCUYzNy1GNDggYXJlIHNoaWZ0K2NvbnRyb2wgRjEtRjEyCisjCisjIGhwYS92cGEgd29yayBpbiB0aGUgY29uc29sZSwgYnV0IG5vdCBpbiBzY290ZXJtOgorIwlocGE9XEVbJXAxJWRHLAorIwl2cGE9XEVbJXAxJWRkLAorIworIyBTQ08ncyB0ZXJtaW5mbyB1c2VzCisjCWtMRlQ9XEVbZCwKKyMJa1JJVD1cRVtjLAorIyB3aGljaCBkbyBub3Qgd29yayAoY29uc29sZSBvciBzY290ZXJtKS4KKyMKKyMgQ29uc29sZSBkb2N1bWVudHMgb25seSAzIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB3aXRoIFNHUiAoc28gd2UgZG9uJ3QgdXNlIHNncikuCitzY29hbnNpLW9sZHxTQ08gRXh0ZW5kZWQgQU5TSSBzdGFuZGFyZCBjcnQgKDUuMC41KSwKKwlPVGJzLCBhbSwgYmNlLCBlbywgeG9uLAorCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgcGFpcnMjNjQsCisJYWNzYz0rL1wsLi1cMjMwLlwyMzEwWzU1NjY3Nzg4OTlcOlw6Ozs8PD09Pj5GRkdHSEhJSUpKS0tMTE1NTk5PT1BQUVFSUlNTVFRVVVZWV1dYWGBcMjA0YTBmeGdxaDJqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfVwwMzR+XDIwNywKKwliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwKKwljaXZpcz1cRVs9MTQ7MTJDLCBjbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz0xMDsxMkMsCisJY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAorCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAorCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgY3Z2aXM9XEVbPTA7MTJDLCBkY2g9XEVbJXAxJWRQLAorCWRjaDE9XEVbUCwgZGlzcGM9XEVbPSVwMSVkZywgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKKwllZD1cRVttXEVbSiwgZWw9XEVbbVxFW0ssIGVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwKKwlodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCisJaW5kPVxFW1MsIGluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwga2JlZz1cRVtFLCBrYnM9XkgsCisJa2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtkY2gxPVwxNzcsIGtlbmQ9XEVbRiwga2YxPVxFW00sIGtmMTA9XEVbViwga2YxMT1cRVtXLAorCWtmMTI9XEVbWCwga2YxMz1cRVtZLCBrZjE1PVxFW2EsIGtmMTY9XEVbYiwga2YxNz1cRVtjLAorCWtmMTg9XEVbZCwga2YxOT1cRVtlLCBrZjI9XEVbTiwga2YyMD1cRVtmLCBrZjIxPVxFW2csCisJa2YyMj1cRVtoLCBrZjIzPVxFW2ksIGtmMjQ9XEVbaiwga2YyNT1cRVtrLCBrZjI2PVxFW2wsCisJa2YyNz1cRVttLCBrZjI4PVxFW24sIGtmMjk9XEVbbywga2YzPVxFW08sIGtmMzA9XEVbcCwKKwlrZjMxPVxFW3EsIGtmMzI9XEVbciwga2YzMz1cRVtzLCBrZjM0PVxFW3QsIGtmMzU9XEVbdSwKKwlrZjM2PVxFW3YsIGtmMzc9XEVbdywga2YzOD1cRVt4LCBrZjM5PVxFW3ksIGtmND1cRVtQLAorCWtmNDA9XEVbeiwga2Y0MT1cRVtALCBrZjQyPVxFW1ssIGtmNDM9XEVbXFwsIGtmNDQ9XEVbXSwKKwlrZjQ1PVxFW1xeLCBrZjQ2PVxFW18sIGtmNDc9XEVbYCwga2Y0OD1cRVt7LCBrZjU9XEVbUSwKKwlrZjY9XEVbUiwga2Y3PVxFW1MsIGtmOD1cRVtULCBrZjk9XEVbVSwga2hvbWU9XEVbSCwKKwlraWNoMT1cRVtMLCBrbnA9XEVbRywga3BwPVxFW0ksIG9wPVxFWzA7Mzc7NDBtLCByYz1cRTgsCisJcmV2PVxFWzdtLCByaT1cRVtULCByaW49XEVbJXAxJWRULCBybWFjcz1cRVsxMG0sCisJcm1hbT1cRVs/N2wsIHJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsCisJc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVswOzEwbSwKKwlzbWFjcz1cRVsxMm0sIHNtYW09XEVbPzdoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAorc2NvYW5zaS1uZXd8U0NPIEV4dGVuZGVkIEFOU0kgc3RhbmRhcmQgY3J0ICg1LjAuNiksCisJa20sCisJY2l2aXM9XEVbPTBjLCBjbm9ybT1cRVs9MWMsIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKKwljdnZpcz1cRVs9MmMsIG1nYz1cRVs9ciwgb2M9XEVbNTFtLCBvcD1cRVs1MG0sCisJcmVwPVxFWyVwMSVkOyVwMiVkYiwgcm1tPVxFWz0xMUwsCisJc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTslPyVwOSV0OzEyJWU7MTAlO20sCisJc21nYj1cRVs9MTswbSwgc21nYnA9XEVbPTE7JWklcDElZG0sCisJc21nbHA9XEVbPTI7JWklcDElZG0sIHNtZ3I9XEVbPTM7MG0sCisJc21ncnA9XEVbPTM7JWklcDElZG0sIHNtZ3Q9XEVbPTA7MG0sCisJc21ndHA9XEVbPTA7JWklcDElZG0sIHNtbT1cRVs9MTBMLAorCXdpbmQ9XEVbJWklcDElZDslcDIlZDslaSVwMyVkOyVwNCVkciwKKwl1c2U9c2NvYW5zaS1vbGQsCisjIG1ha2UgdGhpcyBlYXN5IHRvIGNoYW5nZS4uLgorc2NvYW5zaXxTQ08gRXh0ZW5kZWQgQU5TSSBzdGFuZGFyZCBjcnQsCisJdXNlPXNjb2Fuc2ktb2xkLAorCisjIyMjIFNHSSBjb25zb2xlcworCisjIFNlbnQgYnkgU3RlZmFuIFN0YXBlbGJlcmcgPHN0ZWZhbkByZW50LWEtZ3VydS5kZT4sIDI0IEZlYiAxOTk3LCB0aGlzIGlzCisjIGZyb20gU0dJJ3MgdGVybWluZm8gZGF0YWJhc2UuICBTR0kncyBlbnRyeSBzaG93cyBGOS1GMTIgd2l0aCB0aGUgY29kZXMKKyMgZm9yIHRoZSBhcHBsaWNhdGlvbiBrZXlwYWQgbW9kZS4gIFdlIGhhdmUgYWRkZWQgaXJpcy1hbnNpLWFwIHJhdGhlciB0aGFuCisjIGNoYW5nZSB0aGUgb3JpZ2luYWwgdG8ga2V5cGFkIG1vZGUuCisjCisjIChpcmlzLWFuc2k6IGFkZGVkIHJtYW0vc21hbSBiYXNlZCBvbiBpbml0IHN0cmluZyAtLSBlc3IpCisjCisjIFRoaXMgZW50cnksIGFuZCB0aG9zZSBkZXJpdmVkIGZyb20gaXQsIGlzIHVzZWQgaW4geHdzaCAoYWxzbyBrbm93biBhcworIyB3aW50ZXJtKS4gIFNvbWUgY2FwYWJpbGl0aWVzIHRoYXQgZG8gbm90IGZpdCBpbnRvIHRoZSB0ZXJtaW5mbyBtb2RlbAorIyBpbmNsdWRlIHRoZSBzaGlmdC0gYW5kIGNvbnRyb2wtZnVuY3Rpb25rZXlzOgorIworIyBGMS1GMTIgZ2VuZXJhdGUgZGlmZmVyZW50IGNvZGVzIHdoZW4gc2hpZnQgb3IgY29udHJvbCBtb2RpZmllcnMgYXJlIHVzZWQuCisjIEZvciBleGFtcGxlOgorIwlGMSAgICAgIAlcRVswMDFxCisjCXNoaWZ0IEYxCVxFWzAxM3EKKyMJY29udHJvbC1GMQlcRVswMjVxCisjCisjIEluIGFwcGxpY2F0aW9uIGtleXBhZCBtb2RlLCBGOS1GMTIgZ2VuZXJhdGUgY29kZXMgbGlrZSB2dDEwMCBQRjEtUEY0LCBpLmUuLAorIyBcRU9QIHRvIFxFT1MuICBUaGUgc2hpZnRlZCBhbmQgY29udHJvbCBtb2RpZmllcnMgc3RpbGwgZG8gdGhlIHNhbWUgdGhpbmcuCisjCisjIFRoZSBjdXJzb3Iga2V5cyBhbHNvIGhhdmUgZGlmZmVyZW50IGNvZGVzOgorIwljb250cm9sLXVwCVxFWzE2MnEKKyMJY29udHJvbC1kb3duCVxFWzE2NXEKKyMJY29udHJvbC1sZWZ0CVxFWzE1OXEKKyMJY29udHJvbC1yaWdodAlcRVsxNjhxCisjCisjCXNoaWZ0LXVwCVxFWzE2MXEKKyMJc2hpZnQtZG93bglcRVsxNjRxCisjCXNoaWZ0LWxlZnQJXEVbMTU4cQorIwlzaGlmdC1yaWdodAlcRVsxNjdxCisjCisjCWNvbnRyb2wtdGFiCVxbMDcycQorIworaXJpcy1hbnNpfGlyaXMtYW5zaS1uZXR8SVJJUyBlbXVsYXRpbmcgNDAgbGluZSBBTlNJIHRlcm1pbmFsIChhbG1vc3QgVlQxMDApLAorCWFtLAorCWNvbHMjODAsIGl0IzgsIGxpbmVzIzQwLAorCWJlbD1eRywgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLAorCWNub3JtPVxFWzkveVxFWzEyL3lcRVs9NmwsIGNyPV5NLCBjdWI9XEVbJXAxJWRELAorCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywKKwljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKKwljdXUxPVxFW0EsIGN2dmlzPVxFWzEwL3lcRVs9MWhcRVs9MmxcRVs9NmgsCisJZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAorCWhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1cRUQsCisJaXMyPVxFWz8xbFxFPlxFWz83aFxFWzEwMGdcRVswbVxFN1xFW3JcRTgsIGtEQz1cRVtQLAorCWtFTkQ9XEVbMTQ3cSwga0hPTT1cRVsxNDNxLCBrTEZUPVxFWzE1OHEsIGtQUlQ9XEVbMjEwcSwKKwlrUklUPVxFWzE2N3EsIGtTUEQ9XEVbMjE4cSwga2JzPV5ILCBrY2J0PVxFW1osIGtjdWIxPVxFW0QsCisJa2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XDE3NywKKwlrZW5kPVxFWzE0NnEsIGtlbnQ9Xk0sIGtmMT1cRVswMDFxLCBrZjEwPVxFWzAxMHEsCisJa2YxMT1cRVswMTFxLCBrZjEyPVxFWzAxMnEsIGtmMj1cRVswMDJxLCBrZjM9XEVbMDAzcSwKKwlrZjQ9XEVbMDA0cSwga2Y1PVxFWzAwNXEsIGtmNj1cRVswMDZxLCBrZjc9XEVbMDA3cSwKKwlrZjg9XEVbMDA4cSwga2Y5PVxFWzAwOXEsIGtob21lPVxFW0gsIGtpY2gxPVxFWzEzOXEsCisJa25wPVxFWzE1NHEsIGtwcD1cRVsxNTBxLCBrcHJ0PVxFWzIwOXEsIGtybWlyPVxFWzE0NnEsCisJa3NwZD1cRVsyMTdxLCBuZWw9XEVFLCBwZmtleT1cRVAxMDE7JXAxJWQueSVwMiVzXEVcXCwKKwlyYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFtPVxFWz83bCwgcm1zbz1cRVttLCBybXVsPVxFW20sCisJc2M9XEU3LCBzZ3IwPVxFW20sIHNtYW09XEVbPzdoLCBzbXNvPVxFWzE7N20sIHNtdWw9XEVbNG0sCisJdGJjPVxFWzNnLAoraXJpcy1hbnNpLWFwfElSSVMgQU5TSSBpbiBhcHBsaWNhdGlvbi1rZXlwYWQgbW9kZSwKKwlpczI9XEVbPzFsXEU9XEVbPzdoLCBrZW50PVxFT00sIGtmMTA9XEVbMDEwcSwKKwlrZjExPVxFWzAxMXEsIGtmMTI9XEVbMDEycSwga2Y5PVxFWzAwOXEsIHVzZT1pcmlzLWFuc2ksCisKKyMgRnJvbSB0aGUgbWFuLXBhZ2UsIHRoaXMgaXMgYSBxdWFzaS12dDEwMCBlbXVsYXRvciB0aGF0IHJ1bnMgb24gU0dJJ3MgSVJJWAorIyAoVC5EaWNrZXkgOTgvMS8yNCkKK2lyaXMtY29sb3J8eHdzaHxJUklYIEFOU0kgd2l0aCBjb2xvciwKKwluY3YjMzMsCisJY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBkY2g9XEVbJXAxJWRQLCBkaW09XEVbMm0sCisJZWNoPVxFWyVwMSVkWCwgaWNoPVxFWyVwMSVkQCwgcmM9XEU4LCByaXRtPVxFWzIzbSwKKwlybXVsPVxFWzI0bSwgcnMxPVxFYywKKwlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCisJc2l0bT1cRVszbSwgdXNlPXZ0MTAwK2VucSwgdXNlPWtsb25lK2NvbG9yLAorCXVzZT1pcmlzLWFuc2ktYXAsCisKKyMjIyMgT3BlbkJTRCBjb25zb2xlcworIworIyBGcm9tOiBBbGV4ZWkgTWFsaW5pbiA8QWxleGVpLk1hbGluaW5AbWFpbC5ydT47IE9jdG9iZXIsIDIwMTEuCisjCisjIFRoZSBmb2xsb3dpbmcgdGVybWluYWwgZGVzY3JpcHRpb25zIGZvciB0aGUgIEFNRC9JbnRlbCBQQyBjb25zb2xlCisjIHdlcmUgcHJlcGFyZWQgIGJhc2VkIG9uIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiAgdGhlIE9wZW5CU0QtNC45CisjIHRlcm10eXBlcy5tYXN0ZXIgYW5kIHdzY29ucyg0KSAmIHZnYSg0KSBtYW51YWxzICgyMDEwLCBOb3ZlbWJlcikuCisjCisjIEFkZGVkIGJjZSBiYXNlZCBvbiB0ZXN0aW5nIHdpdGggdGFjayAtVEQKKyMgQWRkZWQgc2V2ZXJhbCBjYXBhYmlsaXRpZXMgdG8gcGNjb24rYmFzZSwgcmVhZGluZyB3c2VtdWxfdnQxMDBfc3Vici5jIC1URAorIyBDaGFuZ2VkIGticyB0byBERUwgYW5kIHJlbW92ZWQga2V5cyB0aGF0IGR1cGxpY2F0ZSBzdHR5IHNldHRpbmdzIC1URAorIworcGNjb24ra2V5c3xPcGVuQlNEIFBDIGtleWJvYXJkIGtleXMsCisJa2JzPVwxNzcsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCisJa2RjaDE9XEVbM34sIGtlbmQ9XEVbOH4sIGtlbnQ9Xk0sIGtmMT1cRVsxMX4sIGtmMTA9XEVbMjF+LAorCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YyPVxFWzEyfiwga2YzPVxFWzEzfiwKKwlrZjQ9XEVbMTR+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LAorCWtmOT1cRVsyMH4sIGtob21lPVxFWzd+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCisJa3Jmcj1eUiwKK3BjY29uK3NncithY3MwfHNnciBhbmQgc2ltcGxlIEFTQ0lJIHBzZXVkb2dyYXBoaWNzIGZvciBPcGVuQlNEIFBDIGNvbnNvbGUsCisJYWNzYz0rPlwsPC1cXi52MCNgK2FcOmZcXGgjaSNqK2srbCttK24rb35wLXEtci1zX3QrdSt2K3creHx5I3ojeyp8IX0jfm8sCisJc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7bSwgc2dyMD1cRVttLAorcGNjb24rc2dyK2Fjc3xzZ3IgYW5kIGRlZmF1bHQgQVNDSUkgcHNldWRvZ3JhcGhpY3MgZm9yIE9wZW5CU0QgUEMgY29uc29sZSwKKwlhY3NjPSsrXCxcLC0tLi4wMGBgYWFmZmdnaGhpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKKwllbmFjcz1cRSkwJDw1Piwgcm1hY3M9XEUoQiQ8NT4sCisJc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDU+LAorCXNncjA9XEVbbVxFKEIkPDU+LCBzbWFjcz1cRSgwJDw1PiwKK3BjY29uK2NvbG9yc3xBTlNJIGNvbG9ycyBmb3IgT3BlbkJTRCBQQyBjb25zb2xlLAorCWJjZSwKKwljb2xvcnMjOCwgcGFpcnMjNjQsCisJb3A9XEVbbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKK3BjY29uK2Jhc2V8YmFzZSBjYXBhYmlsaXRpZXMgZm9yIE9wZW5CU0QgUEMgY29uc29sZSwKKwlhbSwga20sIG1jNWksIG1zZ3IsIG5wYywgbnhvbiwgeGVubCwgeG9uLAorCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAorCWJlbD1eRywgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsCisJZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywKKwllbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsCisJaWwxPVxFW0wsIGluZD1cRUQsIG5lbD1cRUUsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFtPVxFWz83bCwKKwlybXNvPVxFW20sIHJzMj1cRWMkPDUwPiwgc21hbT1cRVs/N2gsIHNtc289XEVbN20sCisJdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sCitwY2NvbjAtbXxPcGVuQlNEIFBDIGNvbnNvbGUgd2l0aG91dCBjb2xvcnMgJiB3aXRoIHNpbXBsZSBBU0NJSSBwc2V1ZG9ncmFwaGljcywKKwl1c2U9cGNjb24rYmFzZSwgdXNlPXBjY29uK3NncithY3MwLCB1c2U9cGNjb24ra2V5cywKK3BjY29uMHxPcGVuQlNEIFBDIGNvbnNvbGUgd2l0aCBzaW1wbGUgQVNDSUkgcHNldWRvZ3JhcGhpY3MsCisJdXNlPXBjY29uMC1tLCB1c2U9cGNjb24rY29sb3JzLAorcGNjb24tbXxPcGVuQlNEIFBDIGNvbnNvbGUgd2l0aG91dCBjb2xvcnMsCisJdXNlPXBjY29uK2Jhc2UsIHVzZT1wY2NvbitzZ3IrYWNzLCB1c2U9cGNjb24ra2V5cywKK3BjY29ufE9wZW5CU0QgUEMgY29uc29sZSwKKwl1c2U9cGNjb24tbSwgdXNlPXBjY29uK2NvbG9ycywKKwogIyMjIyBOZXRCU0QgY29uc29sZXMKICMKICMgcGN2dCB0ZXJtY2FwIGRhdGFiYXNlIGVudHJpZXMgKGNvcnJlc3BvbmRpbmcgdG8gcmVsZWFzZSAzLjMxKQpAQCAtMTU3Miw3ICsyMzQ1LDcgQEAKIG9mY29uc3xETkFSRCBPcGVuRmlybXdhcmUgY29uc29sZSwKIAlidywKIAljb2xzIzgwLCBsaW5lcyMzMCwKLQliZWw9XkcsIGJsaW5rPVwyMzM3OzJtLCBib2xkPVwyMzMxbSwgY2xlYXI9XkwsIGNyPV5NLAorCWJlbD1eRywgYmxpbms9XDIzMzVtLCBib2xkPVwyMzMxbSwgY2xlYXI9XkwsIGNyPV5NLAogCWN1Yj1cMjMzJXAxJWRELCBjdWIxPVwyMzNELCBjdWQ9XDIzMyVwMSVkQiwgY3VkMT1cMjMzQiwKIAljdWY9XDIzMyVwMSVkQywgY3VmMT1cMjMzQywgY3VwPVwyMzMlaSVwMSVkOyVwMiVkSCwKIAljdXU9XDIzMyVwMSVkQSwgY3V1MT1cMjMzQSwgZGNoPVwyMzMlcDElZFAsIGRjaDE9XDIzM1AsCkBAIC0xNTg0LDggKzIzNTcsOCBAQAogCWtmND1cMjMzMHgsIGtmNT1cMjMzMHQsIGtmNj1cMjMzMHUsIGtmNz1cMjMzMHEsIGtmOD1cMjMzMHIsCiAJa2Y5PVwyMzMwcCwga25wPVwyMzMvLCBrcHA9XDIzMz8sIG5lbD1eTV5KLCByZXY9XDIzMzdtLAogCXJtc289XDIzMzBtLCBybXVsPVwyMzMwbSwKLQlzZ3I9XDIzMzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20sCi0Jc2dyMD1cMjMzMG0sCisJc2dyPVwyMzMwJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDUldDIlOyU/JXA3JXQ4JTslPyVwMSVwMyV8JXQ7NyU7bSwKKwlzZ3IwPVwyMzMwbSwgc21zbz1cMjMzN20sIHNtdWw9XDIzMzRtLAogCiAjIE5ldEJTRCAid3Njb25zIiBlbXVsYXRvciBpbiB2dDIyMCBtb2RlLgogIyBUaGlzIGVudHJ5IGlzIGJhc2VkIG9uIHRoZSBOZXRCU0QgdGVybWNhcCBlbnRyeSwgY29ycmVjdGluZyB0aGUgbmN2IHZhbHVlLgpAQCAtMTYwMiwxNSArMjM3NSw1MyBAQAogd3N2dDI1fE5ldEJTRCB3c2NvbnMgaW4gMjUgbGluZSBERUMgVlQyMjAgbW9kZSwKIAliY2UsIG1zZ3IsCiAJY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LCBuY3YjMiwgcGFpcnMjNjQsCi0JaXMyPVxFW3JcRVsyNTsxSCwga2VuZD1cRVs4fiwga2YxPVxFWzExfiwga2YxMD1cRVsyMX4sCisJY2l2aXM9XEVbPzI1bCwgY25vcm09XEVbPzI1aCwgaXMyPVxFW3JcRVsyNTsxSCwKKwlrZGNoMT1cRVszfiwga2VuZD1cRVs4fiwga2YxPVxFWzExfiwga2YxMD1cRVsyMX4sCiAJa2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjI9XEVbMTJ+LCBrZjM9XEVbMTN+LAogCWtmND1cRVsxNH4sIGtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sCi0Ja2Y5PVxFWzIwfiwga2hvbWU9XEVbN34sIG9wPVxFW20sIHNldGFiPVxFWzQlcDElZG0sCi0Jc2V0YWY9XEVbMyVwMSVkbSwgdXNlPXZ0MjIwLAorCWtmOT1cRVsyMH4sIGtob21lPVxFWzd+LCBvcD1cRVttLCByczE9XEVjLAorCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHVzZT12dDIyMCwKIAogd3N2dDI1bXxOZXRCU0Qgd3Njb25zIGluIDI1IGxpbmUgREVDIFZUMjIwIG1vZGUgd2l0aCBNZXRhLAogCWttLCB1c2U9d3N2dDI1LAogCisjIE5ldEJTRCA2Lnggc3RpbGwgdXNlcyB3c2NvbnMsIHdpdGggbWlub3IgY2hhbmdlcyAoMjAxNC8wMi8yMikgLVRECisjCisjIFRFUk0gaXMgYnkgZGVmYXVsdCB2dDEwMCBmb3IgdGhlIGNvbnNvbGUsIHdzdnQyNSBmb3Igb3RoZXIgdHR5cy4KKyMgSW5pdGlhbCB0ZXN0aW5nIHNldCBURVJNPXh0ZXJtLCBiYXNlZCBvbiBjb21tZW50cyBieSBkZXZlbG9wZXJzLCBmb3VuZCB0b28KKyMgbWFueSBkaWZmZXJlbmNlcyB0byBjb250aW51ZSBpbiB0aGF0IHBhdGguICBIb3dldmVyLCB0ZXN0LXJlc3VsdHMgbWF5IGJlCisjIHVzZWZ1bCB0byBwZW9wbGUgY3VyaW91cyBhYm91dCBjb21wYXRpYmlsaXR5IHdpdGggeHRlcm0uCisjCisjIFRlc3Rpbmcgd2l0aCB0YWNrOgorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBGYWlsZWQ6IGNidCwgYmVsLCBmbGFzaCwgY3Z2aXMsIHNtdWwgKGNvbG9yKSwgYmxpbmssIGludmlzCisjIFRoZXJlIGlzIGNvbG9yLWJsZWVkaW5nIGluIHRoZSBjb2xvci1wYWlycyBzY3JlZW4uCisjIEF0dHJpYnV0ZXMgZG8gbm90IHdvcmsgd2l0aCBjb2xvcgorIyBGYWlsZWQ6IHZwYS9ocGEKKyMgRmFpbGVkOiBrZjEta2Y0LCBrZjEzLWtmNDgsIGtob21lLCBrZW5kCisjIAkoZWZmZWN0aXZlbHkgeHRlcm0tcjYgZm9yIGZ1bmN0aW9uLWtleXMpCisjIE5vbmUgb2YgdGhlIGZ1bmN0aW9uIG9yIGN1cnNvciBrZXktbW9kaWZpZXJzIGFyZSBlbmNvZGVkLgorIyBDb25zb2xlIGhhbmdzIGluIHRoZSBzbW0vcm1tIHRlc3QgaWYgVEVSTT14dGVybSwgZG9lcyBub3Qgc2hvdyB0ZXN0CisjCisjIFRlc3Rpbmcgd2l0aCB2dHRlc3Q6CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWRlbnRpZmllcyBhcyB2dDIyMCB3aXRoIHNlbGVjdGl2ZSBlcmFzZQorIyAJKGhvd2V2ZXIsIHNlbGVjdGl2ZSBlcmFzZSByZWZlcnMgdG8gREVDU0NBLCBTUEEpCisjIERvZXMgbm90IGltcGxlbWVudCB2dDUyCisjIFVzZXMgc3BhY2VzIHRvIHNpbXVsYXRlIGRvdWJsZS1zaXplIGNoYXJhY3RlcnMKKyMgRG9lcyBub3Qgc3VwcG9ydCA4LWJpdCBjb250cm9scworIyBEb2VzIG5vdCBzdXBwb3J0IFZUMjIwIHJlcG9ydHMKKyMgRG9lcyBub3Qgc3VwcG9ydCBzZW5kL3JlY2VpdmUgbW9kZQorIyBTdXBwb3J0cyBFQ0ggKGxpa2Ugcnh2dCkKKyMgRG9lcyBub3Qgc3VwcG9ydCBERUNTQ0EKKyMgRG9lcyBub3Qgc3VwcG9ydCBhbnkgb2YgdGhlIElTTy02NDI5IGN1cnNvci1tb3ZlbWVudAorIyBEb2VzIG5vdCBzdXBwb3J0IGFueSBvZiB0aGUgSVNPLTY0MjkgbWlzY2VsbGFuZW91cyB0ZXN0cworIyAJKFNML1NSIGFsc28gbGVhdmUgdW5leHBlY3RlZCBjaGFyIG9uIHNjcmVlbiB0b28pCisjIEJhY2tncm91bmQgZG9lcyBub3QgY2hhbmdlIGluIG1lbnUgMTEuNi45IChTR1IgMjItMjcpCisjIE5vbmUgb2YgdGhlIHh0ZXJtIHNwZWNpYWwgZmVhdHVyZXMgdGVzdHMgd29yaworbmV0YnNkNnxOZXRCU0Qgd3Njb25zIGluIDI1IGxpbmUgREVDIFZUMTAwIG1vZGUsCisJa2JzPVwxNzcsIHVzZT13c3Z0MjUsCisKICMgYHJhc3RlcmNvbnNvbGUnIHByb3ZpZGVkIGJ5IDQuNEJTRCwgTmV0QlNEIGFuZCBPcGVuQlNEIG9uIFNQQVJDLCBhbmQKICMgREVDc3RhdGlvbi9wbWF4LgogcmNvbnN8QlNEIHJhc3RlcmNvbnNvbGUsCkBAIC0xNzA1LDYgKzI1MTYsOCBAQAogY29uczI1fGFuc2lzfGFuc2k4MHgyNXxmcmVlYnNkIGNvbnNvbGUgKDI1LWxpbmUgYW5zaSBtb2RlKSwKIAlhY3NjPS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYwZlwzNzBnXDM2MWhcMjYxaVwwMjVqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1cVwzMDR0XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2Mn5cMzcxLAogCXVzZT1jb25zMjV3LAorY29uczI1LWRlYmlhbnxmcmVlYnNkIGNvbnNvbGUgd2l0aCBkZWJpYW4gYmFja3NwYWNlICgyNS1saW5lIGFuc2kgbW9kZSksCisJa2JzPVwxNzcsIGtkY2gxPVxFWzN+LCB1c2U9Y29uczI1LAogY29uczI1LW18YW5zaXMtbW9ub3xhbnNpODB4MjUtbW9ub3xmcmVlYnNkIGNvbnNvbGUgKDI1LWxpbmUgbW9ubyBhbnNpIG1vZGUpLAogCWNvbG9yc0AsIHBhaXJzQCwKIAlib2xkQCwgZGltQCwgb3BALCBybXVsPVxFW20sIHNldGFiQCwgc2V0YWZALApAQCAtMTc2MCw2ICsyNTczLDUyIEBACiBjb25zNjBsMS1tfGNvbnM2MC1pc28tbXxmcmVlYnNkIGNvbnNvbGUgdy9pc28gODg1OS0xIGNoYXJzICg2MC1saW5lIG1vbm8pLAogCWxpbmVzIzYwLCB1c2U9Y29uczI1bDEtbSwKIAorIyBTdGFydGluZyB3aXRoIEZyZWVCU0QgOCwgYW4gYWx0ZXJuYXRpdmUgY29uZmlndXJhdGlvbiBmb3Igc3lzY29ucyBpcyBwcm92aWRlZCwKKyMgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgeHRlcm0tY29tcGF0aWJsZS4gIFNlZSBmb3IgZXhhbXBsZQorIwlodHRwOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2Uvc3RhYmxlLzgvc3lzL2Rldi9zeXNjb25zLworIyBpbiBwYXJ0aWN1bGFyIHNjdGVybS10ZWtlbi5jCisjCisjIEZvciBGcmVlQlNEIDkgYW5kIDEwOgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGUgL2V0Yy90dHlzIGVudHJpZXMgZm9yIGNvbnNvbGUgYW5kIG90aGVyIHR0eXMgYXJlIGFsbCBjb25maWd1cmVkIHRvIHNldAorIyBURVJNPXh0ZXJtLgorIworIyBUZXN0aW5nIHdpdGggdGFjazoKKyMgVGhlcmUgaXMgbm8gVlQxMDAgbGluZS1kcmF3aW5nICh1c2VzICsncyBhbmQgLSdzKQorIyBTaGlmdGVkIGYxLWYxMiBnaXZlIGNvbnMyNSBjb2RlcywgcmF0aGVyIHRoYW4geHRlcm0gZnVuY3Rpb24ta2V5cworIworIyBUZXN0aW5nIHdpdGggdnR0ZXN0OgorIyBNZW51IDIgZGlhbW9uZHMgZG9uJ3Qgd29yaywgYmxpbmsgZGl0dG8sIGxpZ2h0IGJhY2tncm91bmQgZGl0dG8KKyMgVGhlIHRlcm1pbmFsIGlkZW50aWZpZXMgaXRzZWxmIGFzIFZUMTAwIHdpdGggQVZPCisjIFRoZXJlIGlzIG5vIFZUNTIgc3VwcG9ydAorIyBUaGVyZSBpcyBubyBkb3VibGVzaXplIGNoYXJhY3RlciBzdXBwb3J0CisjIFRoZSB0ZXJtaW5hbCBzdXBwb3J0cyBFQ0ggKGxpa2Ugcnh2dCkKKyMgVGhlIHRlcm1pbmFsIGRvZXMgbm90IHN1cHBvcnQgc2VuZC9yZWNlaXZlIG1vZGUKKyMgVGhlIHRlcm1pbmFsIHN1cHBvcnRzIGFsbCBvZiB0aGUgSVNPLTY0MjkgY3Vyc29yLW1vdmVtZW50CisjIFRoZSB0ZXJtaW5hbCBzdXBwb3J0cyBzb21lIG9mIHRoZSBJU08tNjQyOSBtaXNjZWxsYW5lb3VzIHRlc3RzCisjCShTTC9TUiBhbHNvIGxlYXZlIHVuZXhwZWN0ZWQgY2hhciBvbiBzY3JlZW4gdG9vKQorIworIyBDb25zaWRlcmluZyBjb25zMjUgYXMgYSBiYXNlLCB0aGUgbGluZS1kcmF3aW5nIG1vc3RseSB3b3JrcywgYnV0IGlzIG1pc3NpbmcKKyMgdGhlIGNlbGxzIHdoaWNoIGhhcHBlbiB0byBoYXZlIEFTQ0lJIGNvbnRyb2wtY2hhcmFjdGVyIHZhbHVlczoKKyMJLSAgICBeWCAgICBhcnJvdyBwb2ludGluZyB1cAorIwkuICAgIF5ZICAgIGFycm93IHBvaW50aW5nIGRvd24KKyMJaSAgICBeWSAgICBsYW50ZXJuCisjCWAgICAgXkQgICAgZGlhbW9uZAorIworIyBUaG9zZSBhcmUgcmVtb3ZlZCBmcm9tIHRoaXMgZW50cnkncyBhY3NjIHN0cmluZyB0byBhdm9pZCBjb25mdXNpb24uCisjIFRoZSByZXN1bHRpbmcgZGVzY3JpcHRpb24gcHJvdmlkZXMgY29ycmVjdCBsaW5lLWRyYXdpbmcgYW5kIGZ1bmN0aW9uLWtleXMgLVRECit0ZWtlbnxzeXNjb25zIHdpdGggdGVrZW4sCisJYndALCBtaXIsIHhlbmwsCisJYWNzYz0wXDMzM2FcMjYwZlwzNzBnXDM2MWhcMjYxalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNXFcMzA0dFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2M3lcMzYzelwzNjJ+XDM3MSwKKwljaXZpcz1cRVs/MjVsLCBjbm9ybT1cRVs/MjVoLCBjdnZpc0AsIGhwYT1cRVslaSVwMSVkRywKKwlodHM9XEVILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtkY2gxPVxFWzN+LCBrZW5kPVxFW0YsIGtlbnQ9Xk0sIGtmMT1cRU9QLCBrZjEwPVxFWzIxfiwKKwlrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCisJa2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKKwlraG9tZT1cRVtILCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIHJtaXI9XEVbNGwsCisJc21pcj1cRVs0aCwgdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sCisJdTg9XEVbPzE7MmMsIHU5PVxFW2MsIHZwYT1cRVslaSVwMSVkZCwgdXNlPWNvbnMyNSwKKwogIyMjIyAzODZCU0QgYW5kIEJTRC9PUyBDb25zb2xlcwogIwogCkBAIC0xODI4LDYgKzI2ODcsNyBAQAogYnNkb3MtcHBjfFBvd2VyUEMgQlNEL09TIENvbnNvbGUsCiAJdXNlPWJzZG9zLXBjLAogCisKICMjIyMgREVDIFZUNTIKICMgKDxhY3NjPi88cm1hY3M+LzxzbWFjcz4gY2FwYWJpbGl0aWVzIGFyZW4ndCBpbiBERUMncyBvZmZpY2lhbCBlbnRyeSAtLSBlc3IpCiAjCkBAIC0xODQ5LDcgKzI3MDksNyBAQAogdnQ1MnxkZWMgdnQ1MiwKIAlPVGJzLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9ZmZnZ2hob21wb3Fxc3MuaywgYmVsPV5HLCBjbGVhcj1cRUhcRUosIGNyPV5NLAorCWFjc2M9K2guazBhZmZnZ29scG5xcHJyc3MsIGJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1eTSwKIAljdWIxPVxFRCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAogCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBlZD1cRUosCiAJZWw9XEVLLCBob21lPVxFSCwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKQEAgLTIxNjEsOCArMzAyMSw5IEBACiAjIHdpdGggdGhlIGtleSBtYXJrZWQgKEVTQykgb24gdGhlIHZ0MjIwLiAgU2VlIHZ0MjIwZCBmb3IgYW4gYWx0ZXJuYXRlIG1hcHBpbmcuCiAjIFBGMS0tUEY0IGFyZSB1c2VkIGFzIEYxLS1GNC4KICMKKyMgYWRkZWQgbXNnciAtVEQKIHZ0MjIwLW9sZHx2dDIwMC1vbGR8REVDIFZUMjIwIGluIHZ0MTAwIGVtdWxhdGlvbiBtb2RlLAotCU9UYnMsIE9UcHQsIGFtLCBtaXIsIHhlbmwsIHhvbiwKKwlPVGJzLCBPVHB0LCBhbSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCiAJY29scyM4MCwgbGluZXMjMjQsIHZ0IzMsCiAJT1RubD1eSiwKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LApAQCAtMjE4OCw4ICszMDQ5LDE1IEBACiAjIEEgbXVjaCBiZXR0ZXIgZGVzY3JpcHRpb24gb2YgdGhlIFZUMjAwLzIyMDsgdXNlZCB0byBiZSB2dDIyMC04CiAjIGNoYW5nZWQgcm1hY3Mvc21hY3MgZnJvbSBzaGlmdC1pbi9zaGlmdC1vdXQgdG8gdnQyMDAtb2xkJ3MgZXhwbGljaXQgRzAvRzEKICMgZGVzaWduYXRpb24gdG8gYWNjb21tb2RhdGUgYnVnIGluIHBjdnQgLVRECisjCisjIEhlcmUncyBhIHBpY3R1cmUgb2YgdGhlIFZUMjIwIGVkaXRpbmcga2V5cGFkOgorIwkrLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisjCXwgRmluZCAgIHwgSW5zZXJ0IHwgUmVtb3ZlIHwKKyMJKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKworIwl8IFNlbGVjdCB8IFByZXYgICB8IE5leHQgICB8CisjCSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKIHZ0MjIwfHZ0MjAwfGRlYyB2dDIyMCwKLQlPVGJzLCBhbSwgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCisJT1RicywgYW0sIG1pciwgbXNnciwgeGVubCwgeG9uLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLAogCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCiAJYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLApAQCAtMjIwMSwyMCArMzA2OSwyMSBAQAogCWZsYXNoPVxFWz81aCQ8MjAwLz5cRVs/NWwsIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCiAJaWNoPVxFWyVwMSVkQCwgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsCiAJaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEVbPzdoXEVbPlxFWz8xaFxFIEZcRVs/NGwsIGticz1eSCwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwga2YxMD1cRVsyMX4sCi0Ja2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sCi0Ja2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LCBrZjE5PVxFWzMzfiwga2YyPVxFT1EsCi0Ja2YyMD1cRVszNH4sIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwKLQlrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBrZm5kPVxFWzF+LCBraGxwPVxFWzI4fiwKLQlraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIGtyZG89XEVbMjl+LCBrc2x0PVxFWzR+LAotCWxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsIG1jMD1cRVtpLCBtYzQ9XEVbNGksCi0JbWM1PVxFWzVpLCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtYWNzPVxFKEIkPDQ+LCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1zbz1cRVsyN20sCi0Jcm11bD1cRVsyNG0sIHJzMT1cRVs/M2wsIHNjPVxFNywKKwlpczI9XEVbPzdoXEVbPlxFWz8xbFxFIEZcRVs/NGwsIGticz1eSCwga2N1YjE9XEVbRCwKKwlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2YxPVxFT1AsCisJa2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sCisJa2YxND1cRVsyNn4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCisJa2YyPVxFT1EsIGtmMjA9XEVbMzR+LCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sCisJa2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ZuZD1cRVsxfiwKKwlraGxwPVxFWzI4fiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAorCWtyZG89XEVbMjl+LCBrc2x0PVxFWzR+LCBsZjE9cGYxLCBsZjI9cGYyLCBsZjM9cGYzLCBsZjQ9cGY0LAorCW5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYWNzPVxFKEIkPDQ+LAorCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCisJcnMxPVxFWz8zbCwgc2M9XEU3LAogCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7JDwyPiwKIAlzZ3IwPVxFW21cRShCLCBzbWFjcz1cRSgwJDwyPiwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAorCXNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPWFuc2krcHAsCisJdXNlPWFuc2krZW5xLAogdnQyMjAtd3x2dDIwMC13fERFQyB2dDIyMCBpbiB3aWRlIG1vZGUsCiAJY29scyMxMzIsCiAJcnMzPVxFWz8zaCwgdXNlPXZ0MjIwLApAQCAtMjIzMSwxOCArMzEwMCwxOCBAQAogCWZsYXNoPVwyMzM/NWgkPDIwMC8+XDIzMz81bCwgaG9tZT1cMjMzSCwgaHQ9XkksIGh0cz1cRUgsCiAJaWNoPVwyMzMlcDElZEAsIGlmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MTAwLAogCWlsPVwyMzMlcDElZEwsIGlsMT1cMjMzTCwgaW5kPVxFRCwKLQlpczI9XDIzMz83aFwyMzM+XDIzMz8xaFxFIEZcMjMzPzRsLCBrYnM9XkgsCisJaXMyPVwyMzM/N2hcMjMzPlwyMzM/MWxcRSBGXDIzMz80bCwga2JzPV5ILAogCWtjdWIxPVwyMzNELCBrY3VkMT1cMjMzQiwga2N1ZjE9XDIzM0MsIGtjdXUxPVwyMzNBLAotCWtmMT1cRU9QLCBrZjEwPVwyMzMyMX4sIGtmMTE9XDIzMzIzfiwga2YxMj1cMjMzMjR+LAotCWtmMTM9XDIzMzI1fiwga2YxND1cMjMzMjZ+LCBrZjE3PVwyMzMzMX4sIGtmMTg9XDIzMzMyfiwKLQlrZjE5PVwyMzMzM34sIGtmMj1cRU9RLCBrZjIwPVwyMzMzNH4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKLQlrZjY9XDIzMzE3fiwga2Y3PVwyMzMxOH4sIGtmOD1cMjMzMTl+LCBrZjk9XDIzMzIwfiwKLQlrZm5kPVwyMzMxfiwga2hscD1cMjMzMjh+LCBraG9tZT1cMjMzSCwga2ljaDE9XDIzMzJ+LAotCWtucD1cMjMzNn4sIGtwcD1cMjMzNX4sIGtyZG89XDIzMzI5fiwga3NsdD1cMjMzNH4sIGxmMT1wZjEsCi0JbGYyPXBmMiwgbGYzPXBmMywgbGY0PXBmNCwgbWMwPVwyMzNpLCBtYzQ9XDIzMzRpLCBtYzU9XDIzMzVpLAotCW5lbD1cRUUsIHJjPVxFOCwgcmV2PVwyMzM3bSwgcmk9XEVNLCBybWFjcz1cRShCLAotCXJtYW09XDIzMz83bCwgcm1pcj1cMjMzNGwsIHJtc289XDIzMzI3bSwgcm11bD1cMjMzMjRtLAotCXJzMT1cMjMzPzNsLCBzYz1cRTcsCisJa2RjaDE9XDIzMzN+LCBrZjE9XEVPUCwga2YxMD1cMjMzMjF+LCBrZjExPVwyMzMyM34sCisJa2YxMj1cMjMzMjR+LCBrZjEzPVwyMzMyNX4sIGtmMTQ9XDIzMzI2fiwga2YxNz1cMjMzMzF+LAorCWtmMTg9XDIzMzMyfiwga2YxOT1cMjMzMzN+LCBrZjI9XEVPUSwga2YyMD1cMjMzMzR+LAorCWtmMz1cRU9SLCBrZjQ9XEVPUywga2Y2PVwyMzMxN34sIGtmNz1cMjMzMTh+LCBrZjg9XDIzMzE5fiwKKwlrZjk9XDIzMzIwfiwga2ZuZD1cMjMzMX4sIGtobHA9XDIzMzI4fiwga2hvbWU9XDIzM0gsCisJa2ljaDE9XDIzMzJ+LCBrbnA9XDIzMzZ+LCBrcHA9XDIzMzV+LCBrcmRvPVwyMzMyOX4sCisJa3NsdD1cMjMzNH4sIGxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsIG1jMD1cMjMzaSwKKwltYzQ9XDIzMzRpLCBtYzU9XDIzMzVpLCBuZWw9XEVFLCByYz1cRTgsIHJldj1cMjMzN20sIHJpPVxFTSwKKwlybWFjcz1cRShCLCBybWFtPVwyMzM/N2wsIHJtaXI9XDIzMzRsLCBybXNvPVwyMzMyN20sCisJcm11bD1cMjMzMjRtLCByczE9XDIzMz8zbCwgc2M9XEU3LAogCXNncj1cMjMzMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCiAJc2dyMD1cMjMzMG1cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVwyMzM/N2gsIHNtaXI9XDIzMzRoLAogCXNtc289XDIzMzdtLCBzbXVsPVwyMzM0bSwgdGJjPVwyMzMzZywKQEAgLTIyNzksMTQgKzMxNDgsMTUgQEAKICMKICMgRnJvbTogQWxleGFuZGVyIExhdHprbyA8bGF0emtvQG1hcnNlbml1cy5ydXRnZXJzLmVkdT4sIDMwIERlYyAxOTk2CiAjIChBZGRlZCB2dDEwMCA8cmM+LDxzYz4gdG8gcXVpZXQgYSB0aWMgd2FybmluZyAtLSBlc3IpCisjIGFkZGVkIG1zZ3IgLVRECiB2dDIwMC1qc3x2dDIyMC1qc3xkZWMgdnQyMDAgc2VyaWVzIHdpdGgganVtcCBzY3JvbGwsCi0JYW0sCisJYW0sIG1zZ3IsCiAJY29scyM4MCwKIAliZWw9XkcsIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XkosIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLAotCWRjaDE9XEVbUCwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzYxInBcRVtIXEVbPzNsXEVbPzRsXEVbPzFsXEVbPzVsXEVbPzZsXEVbPzdoXEVbPzhoXEVbPzI1aFxFPlxFW20sCisJY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCisJY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsCisJaHQ9XkksIGlsMT1cRVtMLCBpbmQ9XEVELAorCWlzMj1cRVs2MSJwXEVbSFxFWz8zbFxFWz80bFxFWz8xaFxFWz81bFxFWz82bFxFWz83aFxFWz84aFxFWz8yNWhcRT5cRVttLAogCWticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKIAlrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgbmVsPV5NXEVELCByYz1cRTgsCiAJcmY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsIHJpPVxFTSwgcm1kYz0sIHJtaXI9XEVbNGwsCkBAIC0yMzE4LDcgKzMxODgsNyBAQAogIyBGcm9tOiBBZGFtIFRob21wc29uIDxhdGhvbXBzb0BwYW5nZWEuY2E+IFNlcHQgMTAgMTk5NQogIyAodnQzMjA6IHVuY29tbWVudGVkIDxmc2w+IC0tZXNyKQogdnQzMjB8dnQzMDB8ZGVjIHZ0MzIwIDcgYml0IHRlcm1pbmFsLAotCWFtLCBlc2xvaywgaHMsIG1pciwgbXNnciwgeGVubCwKKwlhbSwgaHMsIG1pciwgbXNnciwgeGVubCwKIAljb2xzIzgwLCBsaW5lcyMyNCwgd3NsIzgwLAogCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCiAJYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKQEAgLTIzMjcsOSArMzE5Nyw4IEBACiAJY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAogCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAogCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGZzbD1cRVswJH0sCi0JaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XEVELAorCWVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwKKwlodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELAogCWlzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVsxOzI0clxFWzI0OzFILAogCWticz1cMTc3LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAogCWtkY2gxPVxFWzN+LCBrZWw9XEVbNH4sIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwKQEAgLTIzMzcsOCArMzIwNiw3IEBACiAJa2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCiAJa2YyMD1cRVszNH4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sCiAJa2Y5PVxFWzIwfiwga2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtueHQ9XkksCi0Ja3BwPVxFWzV+LCBrcHJ2PVxFW1osIGtzbHQ9XEVbNH4sIG1jMD1cRVtpLCBtYzQ9XEVbPzRpLAotCW1jNT1cRVs/NWksIG5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLAorCWtwcD1cRVs1fiwga3Bydj1cRVtaLCBrc2x0PVxFWzR+LCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwKIAlyZj0vdXNyL3NoYXJlL3RhYnNldC92dDMwMCwgcmk9XEVNLCBybWFjcz1cRShCLAogCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLAogCXJtdWw9XEVbbSwKQEAgLTIzNDcsNyArMzIxNSw3IEBACiAJc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDI+LAogCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAogCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdHNsPVxFWzEkfVxFW0hcRVtLLCB1c2U9dnQyMjAra2V5cGFkLAorCXVzZT1kZWMrcHAsIHVzZT12dDIyMCtrZXlwYWQsIHVzZT1kZWMrc2wsIHVzZT1hbnNpK2VucSwKIHZ0MzIwLW5hbXx2dDMwMC1uYW18ZGVjIHZ0MzIwIDcgYml0IHRlcm1pbmFsIHdpdGggbm8gYW0gdG8gbWFrZSBTQVMgaGFwcHksCiAJYW1ALAogCWlzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2xcRVs/OGhcRVsxOzI0clxFWzI0OzFILApAQCAtMjQ1NywzMyArMzMyNSwzOCBAQAogCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7JDwyPiwKIAlzZ3IwPVxFW21cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKIAlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXRzbD1cRVsyJH5cRVsxJH1cRVsxOyVkSCwKKwl0c2w9XEVbMiR+XEVbMSR9XEVbMTslZEgsIHVzZT1kZWMrc2wsCiAKICMgKHZ0NDIwOiBJIHJlbW92ZWQgPGtmMD4sIGl0IGNvbGxpZGVkIHdpdGggPGtmMTA+LiAgSSBhbHNvIHJlc3RvcmVkCiAjIGEgbWlzc2luZyA8c2M+IC0tIGVzcikKKyMgYWRkIG1zZ3IgYW5kIG90aGVyIGNhcGFiaWxpdGllcyBmcm9tIHZ0MjIwIC1URAogdnQ0MjB8REVDIFZUNDIwLAotCWFtLCBtaXIsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgdnQjMywKKwlhbSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCisJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCiAJYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtJDwyPiwgYm9sZD1cRVsxbSQ8Mj4sCi0JY2xlYXI9XEVbSFxFWzJKJDw1MD4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxMD4sIGN1dTE9XEVbQSwgZGNoMT1cRVtQLAotCWRsMT1cRVtNLCBlZD1cRVtKJDw1MD4sIGVsPVxFW0skPDM+LCBob21lPVxFW0gsIGh0PV5JLAotCWlmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MzAwLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEVbMTsyNHJcRVsyNDsxSCwgaXMzPVxFWz82N2hcRVs2NDsxInAsIGticz1eSCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFWzN+LCBrZjE9XEVPUCwga2YxMD1cRVsyOX4sIGtmMj1cRU9RLCBrZjM9XEVPUiwKLQlrZjQ9XEVPUywga2Y1PVxFWzE3fiwga2Y2PVxFWzE4fiwga2Y3PVxFWzE5fiwga2Y4PVxFWzIwfiwKLQlrZjk9XEVbMjF+LCBrZm5kPVxFWzF+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3NsdD1cRVs0fiwgcmM9XEU4LCByZXY9XEVbN20kPDI+LAotCXJmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MzAwLCByaT1cRU0sIHJtYWNzPVxFKEIkPDQ+LAotCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFPiwKKwliZWw9XkcsIGJsaW5rPVxFWzVtJDwyPiwgYm9sZD1cRVsxbSQ8Mj4sIGNpdmlzPVxFWz8yNWwsCisJY2xlYXI9XEVbSFxFWzJKJDw1MD4sIGNub3JtPVxFWz8yNWgsIGNyPV5NLAorCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKKwljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxMD4sIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKKwlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCisJZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgZWwxPVxFWzFLLAorCWVuYWNzPVxFKTAsIGZsYXNoPVxFWz81aCQ8MjAwLz5cRVs/NWwsIGhvbWU9XEVbSCwgaHQ9XkksCisJaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQzMDAsCisJaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwgaXMyPVxFWzE7MjRyXEVbMjQ7MUgsCisJaXMzPVxFWz82N2hcRVs2NDsxInAsIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKKwlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LAorCWtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sCisJa2Y3PVxFWzE5fiwga2Y4PVxFWzIwfiwga2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwKKwlraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIGtzbHQ9XEVbNH4sIG5lbD1cRUUsCisJcmM9XEU4LCByZXY9XEVbN20kPDI+LCByZj0vdXNyL3NoYXJlL3RhYnNldC92dDMwMCwKKwlyaT1cRU0sIHJtYWNzPVxFKEIkPDQ+LCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1reD1cRT4sCiAJcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKKwlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHJzMz1cRVs/NjdoXEVbNjQ7MSJwLCBzYz1cRTcsCiAJc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDI+LAotCXNncjA9XEVbbSQ8Mj4sIHNtYWNzPVxFKDAkPDI+LCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKKwlzZ3IwPVxFW21cRShCJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLAorCXNtaXI9XEVbNGgsIHNta3g9XEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCisJdXNlPWFuc2krcHAsIHVzZT1kZWMrc2wsIHVzZT1hbnNpK2VucSwKIAogIyBERUMgVlQyMjAgYW5kIHVwIHN1cHBvcnQgREVDVURLICh1c2VyLWRlZmluZWQga2V5cykuICBERUNVREsgKGkuZS4sIHBmeCkKICMgdGFrZXMgdHdvIHBhcmFtZXRlcnMsIHRoZSBrZXkgYW5kIHRoZSBzdHJpbmcuICBUcmFuc2xhdGluZyB0aGUga2V5IGlzCkBAIC0yNTU2LDU4ICszNDI5LDIyIEBACiAjIHRlcm1pbmFsIG1vZGUgaXMgYmVpbmcgdXNlZC4gIElmIFNldC1VcCBoYXMgYmVlbiBkaXNhYmxlZCBvcgogIyBhc3NpZ25lZCB0byBhbiB1bmtub3duIGtleSwgU2V0LVVwIG1heSBiZSBlbnRlcmVkIGJ5IHByZXNzaW5nCiAjIFtGM10gYXMgdGhlIGZpcnN0IGtleSBhZnRlciBwb3dlciB1cCwgcmVnYXJkbGVzcyBvZiBrZXlib2FyZCB0eXBlLgotIyAodnQ1MjA6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcsIGFsc28gPHNjPiAtLSBlc3IpCiB2dDUyMHxERUMgVlQ1MjAsCi0JYW0sIG1pciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTA+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTA+LCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlpZj0vdXNyL3NoYXJlL3RhYnNldC92dDMwMCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGlzMz1cRVs/NjdoXEVbNjQ7MSJwLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sCi0Ja2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sCi0JcGZ4PVxFUDE7MXwlPyV7MTZ9JXAxJT4ldCV7MH0lZSV7MjF9JXAxJT4ldCV7MX0lZSV7MjV9JXAxJT4ldCV7Mn0lZSV7Mjd9JXAxJT4ldCV7M30lZSV7MzB9JXAxJT4ldCV7NH0lZSV7NX0lOyVwMSUrJWQvJXAyJXNcRVxcLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmY9L3Vzci9zaGFyZS90YWJzZXQvdnQzMDAsCi0Jcmk9XEVNLCBybWFjcz1cRShCJDw0Piwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCisJdXNlPWFuc2krcmNhLCB1c2U9dnQ0MjAsIHVzZT1hbnNpK3RhYnMsCiAKLSMgKHZ0NTI1OiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nOwotIyByZW1vdmVkIDxybXNvPj1cRVttLCA8cm11bD49XEVbbSwgYWRkZWQgPHNjPiAtLSBlc3IpCiB2dDUyNXxERUMgVlQ1MjUsCi0JYW0sIG1pciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTA+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTA+LCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlpZj0vdXNyL3NoYXJlL3RhYnNldC92dDMwMCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGlzMz1cRVs/NjdoXEVbNjQ7MSJwLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sCi0Ja2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sCi0JcGZ4PVxFUDE7MXwlPyV7MTZ9JXAxJT4ldCV7MH0lZSV7MjF9JXAxJT4ldCV7MX0lZSV7MjV9JXAxJT4ldCV7Mn0lZSV7Mjd9JXAxJT4ldCV7M30lZSV7MzB9JXAxJT4ldCV7NH0lZSV7NX0lOyVwMSUrJWQvJXAyJXNcRVxcLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmY9L3Vzci9zaGFyZS90YWJzZXQvdnQzMDAsCi0Jcmk9XEVNLCBybWFjcz1cRShCJDw0Piwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCisJdXNlPXZ0NTIwLAorCisjIEkganVzdCBnb3QgYSBicmFuZCBuZXcgQm91bmRsZXNzIFZUNTIwIHdpdGggdGhhdCBjb21wYW55J3MgIkFOU0kgMjAxMSIKKyMgS2V5Ym9hcmQsIHdoaWNoIHJlcGxhY2VzIHRoZSBvbGQgTEs0MVItQUEga2V5Ym9hcmQuCisjCisjIEluIHRyeWluZyB0byBnZXQgdGhlIGZ1bmN0aW9uIGtleXMgdG8gd29yaywgSSBoYWQgdG8gY29iYmxlIG15IG93bgorIyB0ZXJtaW5mby5zcmMgZW50cnksIHNpbmNlIHRoZSBleGlzdGluZyB2dDUyMCBlbnRyeSBkb2Vzbid0IGluY2x1ZGUgbW9zdCBvZgorIyB0aGUgZnVuY3Rpb24ga2V5cy4gIElmIEkgYmxlbmQgdGhlIGVudHJpZXMgZm9yICJ2dDQyMGYiIGFuZCAidnQyMjAra2V5cGFkIgorIyBJIHNlZW0gdG8gZ2V0IHRoZW0gYWxsIC1NaWtlIEdyYW4KK3Z0NTIwYW5zaXxCb3VuZGxlc3MgVlQ1MjAgQU5TSSwKKwl1c2U9YW5zaStyY2EsIHVzZT12dDQyMGYsIHVzZT12dDIyMCtrZXlwYWQsCisJdXNlPWFuc2krdGFicywKIAogIyMjIyBWVDEwMCBlbXVsYXRpb25zCiAjCkBAIC0yNjcxLDggKzM1MDgsOCBAQAogIyB0aGUgZGVmYXVsdCBiZWhhdmlvciAtVEQKIAogcHV0dHl8UHVUVFkgdGVybWluYWwgZW11bGF0b3IsCi0JYW0sIGJjZSwgYncsIGNjYywgaHMsIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbG9ycyM4LCBpdCM4LCBuY3YjMjIsIHBhaXJzIzY0LAorCWFtLCBiY2UsIGJ3LCBjY2MsIG1pciwgbXNnciwgeGVubCwgeG9uLCBYVCwKKwljb2xvcnMjOCwgaXQjOCwgbmN2IzIyLCBwYWlycyM2NCwgVTgjMSwKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAogCWNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKQEAgLTI2ODEsMjEgKzM1MTgsMTYgQEAKIAljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAogCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKIAlkaXNwYz0lPyVwMSV7OH0lPSV0XEUlJUdcMzQyXDIyN1wyMzBcRSUlQCVlJXAxJXsxMH0lPSV0XEUlJUdcMzQyXDIyN1wyMzFcRSUlQCVlJXAxJXsxMn0lPSV0XEUlJUdcMzQyXDIzMVwwXEUlJUAlZSVwMSV7MTN9JT0ldFxFJSVHXDM0MlwyMzFcMjUyXEUlJUAlZSVwMSV7MTR9JT0ldFxFJSVHXDM0MlwyMzFcMjUzXEUlJUAlZSVwMSV7MTV9JT0ldFxFJSVHXDM0MlwyMzBcMjc0XEUlJUAlZSVwMSV7Mjd9JT0ldFxFJSVHXDM0MlwyMDZcMjIwXEUlJUAlZSVwMSV7MTU1fSU9JXRcRSUlR1wzNDBcMjAyXDI0MlxFJSVAJWUlcDElYyU7LAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGRzbD1cRV0wO1wwMDcsIGVjaD1cRVslcDElZFgsCi0JZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRShCXEUpMCwKLQlmbGFzaD1cRVs/NWhcRVs/NWwsIGZzbD1eRywgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsCi0JaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpbmRuPVxFWyVwMSVkUywKKwlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAorCWVsMT1cRVsxSywgZW5hY3M9XEUoQlxFKTAsIGZsYXNoPVxFWz81aFxFWz81bCwgaG9tZT1cRVtILAorCWhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCisJaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywKIAlpbml0Yz1cRV1QJXAxJXglcDIlezI1NX0lKiV7MTAwMH0lLyUwMnglcDMlezI1NX0lKiV7MTAwMH0lLyUwMnglcDQlezI1NX0lKiV7MTAwMH0lLyUwMngsCiAJaXMyPVxFN1xFW3JcRVttXEVbPzdoXEVbPzE7NDs2bFxFWzRsXEU4XEU+XEVdUiwKLQlrYjI9XEVbRywga2JzPVwxNzcsIGtjYW49XkMsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwKLQlrZW5kPVxFWzR+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFWzEyfiwga2YyMD1cRVszNH4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAorCWtMRlQ9XEVPRCwga1JJVD1cRU9DLCBrYjI9XEVbRywga2JzPVwxNzcsIGtjYnQ9XEVbWiwKKwlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sCisJa2luZD1cRU9CLCBrbW91cz1cRVtNLCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwga3JpPVxFT0EsCiAJa3NwZD1eWiwgbmVsPV5NXkosIG9jPVxFXVIsIG9wPVxFWzM5OzQ5bSwgcmM9XEU4LCByZXY9XEVbN20sCiAJcmk9XEVNLCByaW49XEVbJXAxJWRULCBybWFjcz1eTywgcm1hbT1cRVs/N2wsCiAJcm1jdXA9XEVbMkpcRVs/NDdsLCBybWlyPVxFWzRsLCBybXBjaD1cRVsxMG0sCkBAIC0yNzA2LDIwICszNTM4LDgyIEBACiAJc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOywKIAlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtY3VwPVxFWz80N2gsCiAJc21pcj1cRVs0aCwgc21wY2g9XEVbMTFtLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFXTA7LCB2cGE9XEVbJWklcDElZGQsIHVzZT12dDEwMitlbnEsCisJdGJjPVxFWzNnLCB2cGE9XEVbJWklcDElZGQsIEUzPVxFWzNKLCB1c2U9cHV0dHkrZm5rZXlzLAorCXVzZT12dDEwMitlbnEsIHVzZT14dGVybStzbCwKIHZ0MTAwLXB1dHR5fFJlc2V0IFB1VFRZIHRvIHB1cmUgdnQxMDAsCiAJcnMyPVxFPFxFWyJwXEVjXEVbPzNsXEVdUlxFWzQwInBcRVs2MSJwXEVbNTA7MTsyInAsCiAJdXNlPXZ0MTAwLAogIyBwYWxldHRlIGlzIGhhcmRjb2RlZC4uLgogcHV0dHktMjU2Y29sb3J8UHVUVFkgMC41OCB3aXRoIHh0ZXJtIDI1Ni1jb2xvcnMsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1wdXR0eSwKKwl1c2U9eHRlcm0rMjU2c2V0YWYsIHVzZT1wdXR0eSwKIAogIyBPbmUgb2YgdGhlIGtleWJvYXJkIHNlbGVjdGlvbnMgaXMgIlZUMTAwKyIuCiAjIHB0ZXJtICh0aGUgWDExIHBvcnQpIHVzZXMgc2hpZnRlZCBGMS1GMTAgYXMgRjExLUYyMAogcHV0dHktdnQxMDB8VlQxMDArIGtleWJvYXJkIGxheW91dCwKKwl1c2U9cHV0dHkrZm5rZXlzK3Z0MTAwLCB1c2U9cHV0dHksCisKK3B1dHR5LXNjb3xwdXR0eSB3aXRoIFNDTyBmdW5jdGlvbiBrZXlzLAorCXVzZT1wdXR0eStmbmtleXMrc2NvLCB1c2U9cHV0dHksCisKKyMgUHVUVFkgaGFzIG1vcmUgdGhhbiBvbmUgc2VjdGlvbiBpbiBpdHMgS2V5Ym9hcmQgY29uZmlndXJhdGlvbjoKKyMgYSkgYmFja3NwYWNlL2RlbGV0ZSwgd2hpY2ggd2UgaWdub3JlIHNpbmNlIHRoYXQgY2hvaWNlIGxhcmdlbHkgZGVwZW5kcyBvbgorIyAgICB3aGV0aGVyIG9uZSBtYXRjaGVzIFVuaXggYW5kIEJTRCBvciBMaW51eC4KKyMgYikgaG9tZS9lbmQga2V5cywgYWxzbyBpZ25vcmVkIGJlY2F1c2UgdGhlICJyeHZ0IiBzZXR0aW5nIHNlbmRzIGtleXMgd2hpY2gKKyMgICAgYXJlIHVucmVsYXRlZCB0byByeHZ0J3MgYWN0dWFsIHNldHRpbmdzLgorIyBjKSBmdW5jdGlvbiBrZXlzIGFuZCBrZXlwYWQgLSB0aGlzIGlzIHRoZSBpbnRlcmVzdGluZyBwYXJ0LiAgTm9uZSBvZiB0aGUKKyMgICAgc2VsZWN0aW9ucyBtYXRjaCBhbnkgb2YgdGhlaXIgcmVzcGVjdGl2ZSBuYW1lc2FrZXMsIGJ1dCB0aGV5IGFyZSBzaG93bgorIyAgICBoZXJlIHRvIGhlbHAgdXNlcnMgd2hvIGV4cGVjdCB0aGF0IHRoZSBzZWxlY3Rpb25zIGRvIHdoYXQgaXMgaW1wbGllZC4KKyMKKyMgVGhpcyBpcyB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciBQdVRUWQorcHV0dHkrZm5rZXlzfGZuLWtleXMgZm9yIFB1VFRZLAorCXVzZT1wdXR0eStmbmtleXMrZXNjLAorCitwdXR0eStmbmtleXMrZXNjfEVTQ1tufiBmbi1rZXlzIGZvciBQdVRUWSwKKwlrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LAorCWtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LAorCWtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMj1cRVsxMn4sCisJa2YyMD1cRVszNH4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sIGtmNT1cRVsxNX4sCisJa2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKKworcHV0dHkrZm5rZXlzK2xpbnV4fExpbnV4IGZuLWtleXMgZm9yIFB1VFRZLAorCWtmMT1cRVtbQSwga2YyPVxFW1tCLCBrZjM9XEVbW0MsIGtmND1cRVtbRCwga2Y1PVxFW1tFLAorCXVzZT1wdXR0eStmbmtleXMrZXNjLAorCitwdXR0eStmbmtleXMreHRlcm18WHRlcm0gUjYgZm4ta2V5cyBmb3IgUHVUVFksCisJa2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCisJdXNlPXB1dHR5K2Zua2V5cytlc2MsCisKK3B1dHR5K2Zua2V5cyt2dDQwMHxWVDQwMCBmbi1rZXlzIGZvciBQdVRUWSwKKwl1c2U9cHV0dHkrZm5rZXlzK2VzYywKKworIyBTaGlmdGVkIEYxIGlzIEYxMS4gIEYxMy1GMjAgaW5oZXJpdCBmcm9tIHRoZSBkZWZhdWx0cywgYW5kIHRoZSBsYXN0IGRpc3RpbmN0CisjIGtleSBpcyBGMjAuCitwdXR0eStmbmtleXMrdnQxMDB8VlQxMDArIGZuLWtleXMgZm9yIFB1VFRZLAogCWtmMT1cRU9QLCBrZjEwPVxFT1ksIGtmMTE9XEVPWiwga2YxMj1cRU9bLCBrZjI9XEVPUSwKIAlrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsIGtmOD1cRU9XLAotCWtmOT1cRU9YLCB1c2U9cHV0dHksCisJa2Y5PVxFT1gsIHVzZT1wdXR0eStmbmtleXMrZXNjLAorCisjIFVubGlrZSB4dGVybS1zY28sIHRoaXMgbGVhdmVzIGttb3VzIGFtYmlndW91cyB3aXRoIGtmMS4KKyMKKyMgVXNlIG1vZGlmaWVycyB0byBvYnRhaW4gZnVuY3Rpb24ga2V5cyBwYXN0IDEyOgorIyBGMS1GMTIgLSBub3JtYWwKKyMgRjEzLUYyNCAtIHNoaWZ0CisjIEYyNS1GMzYgLSBjb250cm9sL2FsdAorIyBGMzctRjQ4IC0gY29udHJvbC9zaGlmdAorIworcHV0dHkrZm5rZXlzK3Njb3xTQ08gZm4ta2V5cyBmb3IgUHVUVFksCisJa2JlZz1cRVtFLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtkY2gxPVwxNzcsIGtlbmQ9XEVbRiwga2YxPVxFW00sIGtmMTA9XEVbViwga2YxMT1cRVtXLAorCWtmMTI9XEVbWCwga2YxMz1cRVtZLCBrZjE0PVxFW1osIGtmMTU9XEVbYSwga2YxNj1cRVtiLAorCWtmMTc9XEVbYywga2YxOD1cRVtkLCBrZjE5PVxFW2UsIGtmMj1cRVtOLCBrZjIwPVxFW2YsCisJa2YyMT1cRVtnLCBrZjIyPVxFW2gsIGtmMjM9XEVbaSwga2YyND1cRVtqLCBrZjI1PVxFW2ssCisJa2YyNj1cRVtsLCBrZjI3PVxFW20sIGtmMjg9XEVbbiwga2YyOT1cRVtvLCBrZjM9XEVbTywKKwlrZjMwPVxFW3AsIGtmMzE9XEVbcSwga2YzMj1cRVtyLCBrZjMzPVxFW3MsIGtmMzQ9XEVbdCwKKwlrZjM1PVxFW3UsIGtmMzY9XEVbdiwga2YzNz1cRVt3LCBrZjM4PVxFW3gsIGtmMzk9XEVbeSwKKwlrZjQ9XEVbUCwga2Y0MD1cRVt6LCBrZjQxPVxFW0AsIGtmNDI9XEVbWywga2Y0Mz1cRVtcXCwKKwlrZjQ0PVxFW10sIGtmNDU9XEVbXF4sIGtmNDY9XEVbXywga2Y0Nz1cRVtgLCBrZjQ4PVxFW3ssCisJa2Y1PVxFW1EsIGtmNj1cRVtSLCBrZjc9XEVbUywga2Y4PVxFW1QsIGtmOT1cRVtVLCBraG9tZT1cRVtILAorCWtpY2gxPVxFW0wsIGtucD1cRVtHLCBrcHA9XEVbSSwKIAogIyBUaGlzIGVudHJ5IGlzIGZvciBUZXJhIFRlcm0gUHJvIHZlcnNpb24gMi4zLCBmb3IgTVMtV2luZG93cyA5NS9OVCB3cml0dGVuIGJ5CiAjIFQuIFRlcmFuaXNoaSBkYXRlZCBNYXIgMTAsIDE5OTguICBJdCBpcyBhIGZyZWUgc29mdHdhcmUgdGVybWluYWwgZW11bGF0b3IKQEAgLTI4NjQsMTQgKzM3NTgsMTkgQEAKIG1zLXZ0LXV0Zjh8dnQtdXRmOHxVVEYtOCBmbGF2b3Igb2YgdnQxMDArLAogCXVzZT1tcy12dDEwMCssCiAKKyMgZXhwZWN0LTUuNDQuMS4xNS9leGFtcGxlL3RrdGVybQogIyBhIG1pbmltYWwgc3Vic2V0IG9mIGEgdnQxMDAgKGNvbXBhcmUgd2l0aCAibmV3cy11bmspLgorIworIyBUaGUgbWlzc2luZyAiPSIgaW4gc21reCBpcyBub3QgYSB0eXBvIChoZXJlKSwgYnV0IGFuIGVycm9yIGluIHRrdGVybS4KIHR0fHRrdGVybXxEb24gTGliZXMnIHRrIHRleHQgd2lkZ2V0IHRlcm1pbmFsIGVtdWxhdG9yLAotCWNsZWFyPVxFW0hcRVtKLCBjcj1eTSwgY3VmMT1cRVtDLCBjdXA9XEVbJXAxJWQ7JXAyJWRILAotCWN1dTE9XEVbQSwgaW5kPV5KLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywKLQlrZjU9XEVPVCwga2Y2PVxFT1UsIGtmNz1cRU9WLCBrZjg9XEVPVywga2Y5PVxFT1gsIHJtc289XEVbbSwKKwljbGVhcj1cRVtIXEVbSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKKwljdXA9XEVbJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGluZD1eSiwga2YxPVxFT1AsIGtmMj1cRU9RLAorCWtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT1QsIGtmNj1cRU9VLCBrZjc9XEVPViwga2Y4PVxFT1csCisJa2Y5PVxFT1gsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHNta3g9XEVbPzFoXEUsCiAJc21zbz1cRVs3bSwKIAotIyMjIyBYIHRlcm1pbmFsIGVtdWxhdG9ycworIyMjIyMjIyMgWCBURVJNSU5BTCBFTVVMQVRPUlMKKyMjIyMgWFRFUk0KICMKICMgWW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIgLlhkZWZhdWx0cyB0byBjaGFuZ2UgdGhlIHRlcm1pbmFsIHR5cGUKICMgc2V0IGJ5IHRoZSB4dGVybXMgeW91IHN0YXJ0IHVwIHRvIG15LXh0ZXJtOgpAQCAtMjkzNCw3ICszODMzLDcgQEAKICMgYWRkZWQga2hvbWUva2VuZCwgaHRzIGJhc2VkIG9uIHRoZSBSNiB4dGVybSBjb2RlIC0gVEQKICMgKGtob21lL2tlbmQgZG8gbm90IGFjdHVhbGx5IHdvcmsgaW4gWDExUjUgb3IgWDExUjYsIGJ1dCBtYW55IHBlb3BsZSB1c2UgdGhpcwogIyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIGVtdWxhdG9ycykuCi14dGVybS1yNnx4dGVybS1vbGR8eHRlcm0gWDExUjYgdmVyc2lvbiwKK3h0ZXJtLXI2fHh0ZXJtIFgxMVI2IHZlcnNpb24sCiAJT1RicywgYW0sIGttLCBtaXIsIG1zZ3IsIHhlbmwsCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCiAJYWNzYz1gYGFhZmZnZ2lpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LApAQCAtMjk2MCwxMCArMzg1OSwxMiBAQAogCXNncjA9XEVbbSwgc21hY3M9Xk4sIHNtY3VwPVxFN1xFWz80N2gsIHNtaXI9XEVbNGgsCiAJc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKIAl1c2U9dnQxMDArZW5xLAoreHRlcm0tb2xkfGFudGlxdWUgeHRlcm0gdmVyc2lvbiwKKwl1c2U9eHRlcm0tcjYsCiAjIFRoaXMgaXMgdGhlIGJhc2UgeHRlcm0gZW50cnkgZm9yIHRoZSB4dGVybSBzdXBwbGllZCB3aXRoIFhGcmVlODYgMy4yICYgdXAuCiAjIFRoZSBuYW1lIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHNvbWUgYWxpYXNlcyBoYXZlIGJlZW4gcmVtb3ZlZC4KIHh0ZXJtLXhmODYtdjMyfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYRnJlZTg2IDMuMiBXaW5kb3cgU3lzdGVtKSwKLQlPVGJzLCBhbSwgYmNlLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAorCU9UYnMsIGFtLCBiY2UsIGttLCBtaXIsIG1zZ3IsIHhlbmwsIFhULAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3ZALAogCWFjc2M9YGBhYWZmZ2dpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLApAQCAtMzAwNywxMyArMzkwOCwxMyBAQAogIyB4dGVybSB0byB1c2UgdGVybWluZm8tYmFzZWQgZGVzY3JpcHRpb25zIHdpdGggdGhlIHRpdGVJbmhpYml0IHJlc291cmNlLgogIyAtLSB0aGUgZGlzdHJpYnV0aW9uIGNvbnRhaW5lZCBpbmNvcnJlY3Qga2hvbWUva2VuZCB2YWx1ZXMgLVRECiB4dGVybS14Zjg2LXYzMzN8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKFhGcmVlODYgMy4zLjMgV2luZG93IFN5c3RlbSksCi0JbWM1aSwKIAlibGluaz1cRVs1bSwgaWNoMUAsIGludmlzPVxFWzhtLAogCWlzMj1cRVshcFxFWz8zOzRsXEVbNGxcRT4sIGtkY2gxPVxFWzN+LCBrZm5kQCwga3NsdEAsCi0JbWMwPVxFW2ksIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBybWN1cD1cRVs/MTA0N2xcRVs/MTA0OGwsCi0JcnMxPVxFYywgcnMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwKKwlybWN1cD1cRVs/MTA0N2xcRVs/MTA0OGwsIHJzMT1cRWMsCisJcnMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwKIAlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc21jdXA9XEVbPzEwNDhoXEVbPzEwNDdoLCB1c2U9eHRlcm0teGY4Ni12MzMsCisJc21jdXA9XEVbPzEwNDhoXEVbPzEwNDdoLCB1c2U9YW5zaStwcCwKKwl1c2U9eHRlcm0teGY4Ni12MzMsCiAKICMgVGhpcyB2ZXJzaW9uIHdhcyByZWxlYXNlZCBpbiBYRnJlZTg2IDQuMC4KIHh0ZXJtLXhmODYtdjQwfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYRnJlZTg2IDQuMCBXaW5kb3cgU3lzdGVtKSwKQEAgLTMwNTQsMTIgKzM5NTUsMTQgQEAKICMgVGhpcyB2ZXJzaW9uIHJlZmxlY3RzIHRoZSBjdXJyZW50IHh0ZXJtIGZlYXR1cmVzLgogeHRlcm0tbmV3fG1vZGVybiB4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciwKIAlucGMsCi0JaW5kbj1cRVslcDElZFMsIGtEQz1cRVszOzJ+LCBrRU5EPVxFWzE7MkYsIGtIT009XEVbMTsySCwKLQlrSUM9XEVbMjsyfiwga05YVD1cRVs2OzJ+LCBrUFJWPVxFWzU7Mn4sIGtiMj1cRU9FLAotCWtjYnQ9XEVbWiwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlrZW5kPVxFT0YsIGtlbnQ9XEVPTSwga2hvbWU9XEVPSCwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sCi0Ja25wPVxFWzZ+LCBrcHA9XEVbNX4sIHJpbj1cRVslcDElZFQsIHVzZT14dGVybStwY2ZrZXlzLAorCWluZG49XEVbJXAxJWRTLCBrYjI9XEVPRSwga2NidD1cRVtaLCBrZW50PVxFT00sCisJcmluPVxFWyVwMSVkVCwgdXNlPXh0ZXJtK3BjZmtleXMsIHVzZT14dGVybSt0bXV4LAogCXVzZT14dGVybS1iYXNpYywKKworIyBUaGlzIGZyYWdtZW50IGlzIGZvciBwZW9wbGUgd2hvIGNhbm5vdCBhZ3JlZSBvbiB3aGF0IHRoZSBiYWNrc3BhY2Uga2V5CisjIHNob3VsZCBzZW5kLgoreHRlcm0ra2JzfGZyYWdtZW50IGZvciBiYWNrc3BhY2Uga2V5LAorCWticz1eSCwKICMKICMgVGhpcyBmcmFnbWVudCBkZXNjcmliZXMgYXMgbXVjaCBvZiBYRnJlZTg2IHh0ZXJtJ3MgInBjLXN0eWxlIiBmdW5jdGlvbgogIyBrZXlzIGFzIHdpbGwgZml0IGludG8gdGVybWluZm8ncyA2MCBmdW5jdGlvbiBrZXlzLgpAQCAtMzIyNSw3ICs0MTI4LDcgQEAKICMKICMgVGhpcyBjaHVuayBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgVlQyMjAvU3VuL1BDIGtleWJvYXJkIHZhcmlhbnRzLgogeHRlcm0tYmFzaWN8bW9kZXJuIHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIC0gY29tbW9uLAotCU9UYnMsIGFtLCBiY2UsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIEFYLAorCU9UYnMsIGFtLCBiY2UsIGttLCBtaXIsIG1zZ3IsIHhlbmwsIEFYLCBYVCwKIAljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LAogCWFjc2M9YGBhYWZmZ2dpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKQEAgLTMyMzMsMzQgKzQxMzYsNDAgQEAKIAljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCiAJY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAogCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWz8xMjsyNWgsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JZmxhc2g9XEVbPzVoJDwxMDAvPlxFWz81bCwgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsCi0JaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCi0JaW5kPV5KLCBpbnZpcz1cRVs4bSwgaXMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwga2JzPV5ILAotCWttb3VzPVxFW00sIG1jMD1cRVtpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgbWVtbD1cRWwsCisJY3Z2aXM9XEVbPzEyOzI1aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCisJZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywKKwllbDE9XEVbMUssIGZsYXNoPVxFWz81aCQ8MTAwLz5cRVs/NWwsIGhvbWU9XEVbSCwKKwlocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAorCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sCisJaXMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwga21vdXM9XEVbTSwgbWVtbD1cRWwsCiAJbWVtdT1cRW0sIG9wPVxFWzM5OzQ5bSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKLQlybWFjcz1cRShCLCBybWFtPVxFWz83bCwgcm1jdXA9XEVbPzEwNDlsLCBybWlyPVxFWzRsLAotCXJta3g9XEVbPzFsXEU+LCBybW09XEVbPzEwMzRsLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCi0JcnMxPVxFYywgcnMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwgc2M9XEU3LAorCXJpdG09XEVbMjNtLCBybWFjcz1cRShCLCBybWFtPVxFWz83bCwgcm1jdXA9XEVbPzEwNDlsLAorCXJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybW09XEVbPzEwMzRsLCBybXNvPVxFWzI3bSwKKwlybXVsPVxFWzI0bSwgcnMxPVxFYywgcnMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwgc2M9XEU3LAogCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCiAJc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAogCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQlzZ3I9JT8lcDkldFxFKDAlZVxFKEIlO1xFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttLAotCXNncjA9XEUoQlxFW20sIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWN1cD1cRVs/MTA0OWgsCi0Jc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sIHNtbT1cRVs/MTAzNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLCB2cGE9XEVbJWklcDElZGQsIHVzZT12dDEwMCtlbnEsCisJc2dyPSU/JXA5JXRcRSgwJWVcRShCJTtcRVswJT8lcDYldDsxJTslPyVwNSV0OzIlOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttLAorCXNncjA9XEUoQlxFW20sIHNpdG09XEVbM20sIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLAorCXNtY3VwPVxFWz8xMDQ5aCwgc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sCisJc21tPVxFWz8xMDM0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAorCXZwYT1cRVslaSVwMSVkZCwgRTM9XEVbM0osIHVzZT1hbnNpK3BwLCB1c2U9eHRlcm0ra2JzLAorCXVzZT12dDEwMCtlbnEsCiAKICMgRnJvbTogRGF2aWQgSi4gTWFjS2VuemllIDxkam1AdmEucHVibml4LmNvbT4sIDE0IE5vdiAxOTk3CiAjIEluIHJldHJvc3BlY3QsIHNvbWV0aGluZyBsaWtlIHh0ZXJtLXI2IHdhcyBpbnRlbmRlZCBoZXJlIC1URAogeHRlcm0teGl8eHRlcm0gb24gWEkgR3JhcGhpY3MgQWNjZWxlcmF0ZWQgWCB1bmRlciBCU0QvT1MgMy4xLAogCXJtc289XEVbbSwgcm11bD1cRVttLCB1c2U9eHRlcm0teGY4Ni12MzMsCiAKLSMgVGhpcyBpcyBvbmUgb2YgdGhlIHZhcmlhbnRzIG9mIFhGcmVlODYgMy4zIHh0ZXJtLCB1cGRhdGVkIGZvciA0LjAgKFQuRGlja2V5KQorIyAxNi1jb2xvcnMgaXMgb25lIG9mIHRoZSB2YXJpYW50cyBvZiBYRnJlZTg2IDMuMyB4dGVybSwgdXBkYXRlZCBmb3IgNC4wIChULkRpY2tleSkKKyMgSWYgY29uZmlndXJlZCB0byBzdXBwb3J0IDg4LSBvciAyNTYtY29sb3JzICh3aGljaCBpcyBmYWlybHkgY29tbW9uIGluIDIwMDkpLAorIyB4dGVybSBhbHNvIHJlY29nbml6ZXMgdGhlIGNvbnRyb2wgc2VxdWVuY2VzIGZvciBpbml0YyAtVEQKIHh0ZXJtLTE2Y29sb3J8eHRlcm0gd2l0aCAxNiBjb2xvcnMgbGlrZSBhaXh0ZXJtLAorCWNjYywKKwlpbml0Yz1cRV00OyVwMSVkO3JnYlw6JXAyJXsyNTV9JSolezEwMDB9JS8lMi4yWC8lcDMlezI1NX0lKiV7MTAwMH0lLyUyLjJYLyVwNCV7MjU1fSUqJXsxMDAwfSUvJTIuMlhcRVxcLAogCXVzZT1pYm0rMTZjb2xvciwgdXNlPXh0ZXJtLW5ldywKIAotIyBUaGlzIGlzIGEgY29tcGlsZS10aW1lIGZlYXR1cmUgb2YgWEZyZWU4NiB4dGVybSBiZWdpbm5pbmcgd2l0aAorIyAyNTYtY29sb3JzIGlzIGEgY29tcGlsZS10aW1lIGZlYXR1cmUgb2YgWEZyZWU4NiB4dGVybSBiZWdpbm5pbmcgd2l0aAogIyBwYXRjaCAjMTExICgxOTk5LzcvMTApIC1URAogeHRlcm0rMjU2Y29sb3J8eHRlcm0gMjU2LWNvbG9yIGZlYXR1cmUsCiAJY2NjLApAQCAtMzI3MCw3ICs0MTc5LDE1IEBACiAJc2V0YWY9XEVbJT8lcDElezh9JTwldDMlcDElZCVlJXAxJXsxNn0lPCV0OSVwMSV7OH0lLSVkJWUzODs1OyVwMSVkJTttLAogCXNldGJALCBzZXRmQCwKIAotIyBUaGlzIGlzIGEgY29tcGlsZS10aW1lIGZlYXR1cmUgb2YgWEZyZWU4NiB4dGVybSBiZWdpbm5pbmcgd2l0aAoreHRlcm0rMjU2c2V0YWZ8eHRlcm0gMjU2LWNvbG9yIChzZXQtb25seSksCisJY2NjQCwKKwljb2xvcnMjMjU2LCBwYWlycyMzMjc2NywKKwlpbml0Y0AsCisJc2V0YWI9XEVbJT8lcDElezh9JTwldDQlcDElZCVlJXAxJXsxNn0lPCV0MTAlcDElezh9JS0lZCVlNDg7NTslcDElZCU7bSwKKwlzZXRhZj1cRVslPyVwMSV7OH0lPCV0MyVwMSVkJWUlcDElezE2fSU8JXQ5JXAxJXs4fSUtJWQlZTM4OzU7JXAxJWQlO20sCisJc2V0YkAsIHNldGZALAorCisjIDg4LWNvbG9ycyBpcyBhIGNvbXBpbGUtdGltZSBmZWF0dXJlIG9mIFhGcmVlODYgeHRlcm0gYmVnaW5uaW5nIHdpdGgKICMgcGF0Y2ggIzExNSAoMTk5OS85LzE4KSAtVEQKICMKICMgTm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIHVzZWQgYXJlIHRoZSBzYW1lIGFzIGZvciAyNTYtY29sb3JzIC0geHRlcm0KQEAgLTMyOTUsMTMgKzQyMTIsMjcgQEAKIHh0ZXJtLTg4Y29sb3J8eHRlcm0gd2l0aCA4OCBjb2xvcnMsCiAJdXNlPXh0ZXJtKzg4Y29sb3IsIHVzZT14dGVybS0yNTZjb2xvciwKIAotIyBUaGVzZSB0d28gYXJlIHVzZWQgdG8gZGVtb25zdHJhdGUgdGhlIGFueS1ldmVudCBtb3VzZSBzdXBwb3J0LCBpLmUuLCBieQotIyB1c2luZyBhbiBleHRlbmRlZCBuYW1lICJYTSIgd2hpY2ggdGVsbHMgbmN1cnNlcyB0byBwdXQgdGhlIHRlcm1pbmFsIGludG8KLSMgYSBzcGVjaWFsIG1vZGUgd2hlbiBpbml0aWFsaXppbmcgdGhlIHh0ZXJtIG1vdXNlLgoteHRlcm0tMTAwMnx0ZXN0aW5nIHh0ZXJtLW1vdXNlLAotCVhNPVxFWz8xMDAyJT8lcDElezF9JT0ldGglZWwlOywgdXNlPXh0ZXJtLW5ldywKLXh0ZXJtLTEwMDN8dGVzdGluZyB4dGVybS1tb3VzZSwKLQlYTT1cRVs/MTAwMyU/JXAxJXsxfSU9JXRoJWVsJTssIHVzZT14dGVybS1uZXcsCisjIFRoaXMgY2h1bmsgaXMgYmFzZWQgb24gc3VnZ2VzdGlvbnMgYnkgQWlsaW4gTmVtdWkgYW5kIE5pY2hvbGFzIE1hcnJpb3R0LCB3aG8KKyMgYXNrZWQgZm9yIHNvbWUgb2YgeHRlcm0ncyBhZHZhbmNlZCBmZWF0dXJlcyB0byBiZSBhZGRlZCB0byBpdHMgdGVybWluZm8KKyMgZW50cnkuICBJdCBkZWZpbmVzIGV4dGVuZGVkIGNhcGFiaWxpdGllcyBub3QgZm91bmQgaW4gc3RhbmRhcmQgdGVybWluZm8gb3IKKyMgdGVybWNhcC4gIFRoZXNlIGFyZSB1c2VmdWwgaW4gdG11eCwgZm9yIGluc3RhbmNlLCBoZW5jZSB0aGUgbmFtZS4KKyMKKyMgT25lIGNhdmVhdCBpbiBhZGRpbmcgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIGluIG5jdXJzZXMgaXMgdGhhdCBpZiB0aGUgbmFtZXMKKyMgYXJlIGxvbmdlciB0aGFuIHR3byBjaGFyYWN0ZXJzLCB0aGVuIHRoZXkgd2lsbCBub3QgYmUgdmlzaWJsZSB0aHJvdWdoIHRoZQorIyB0ZXJtY2FwIGludGVyZmFjZS4KKyMKKyMgTXMgbW9kaWZpZXMgdGhlIHNlbGVjdGlvbi9jbGlwYm9hcmQuICBJdHMgcGFyYW1ldGVycyBhcmUKKyMJcDEgPSB0aGUgc3RvcmFnZSB1bml0IChjbGlwYm9hcmQsIHNlbGVjdGlvbiBvciBjdXQgYnVmZmVyKQorIwlwMiA9IHRoZSBiYXNlNjQtZW5jb2RlZCBjbGlwYm9hcmQgY29udGVudC4KKyMKKyMgU3MgaXMgdXNlZCB0byBzZXQgdGhlIGN1cnNvciBzdHlsZSBhcyBkZXNjcmliZWQgYnkgdGhlIERFQ1NDVVNSCisjCWZ1bmN0aW9uIHRvIGEgYmxvY2sgb3IgdW5kZXJsaW5lLgorIyBTZSByZXNldHMgdGhlIGN1cnNvciBzdHlsZSB0byB0aGUgdGVybWluYWwgcG93ZXItb24gZGVmYXVsdC4KKyMKKyMgQ3MgYW5kIENyIHNldCBhbmQgcmVzZXQgdGhlIGN1cnNvciBjb2xvdXIuCit4dGVybSt0bXV4fGFkdmFuY2VkIHh0ZXJtIGZlYXR1cmVzIHVzZWQgaW4gdG11eCwKKwlDcj1cRV0xMTJcMDA3LCBDcz1cRV0xMjslcDElc1wwMDcsCisJTXM9XEVdNTI7JXAxJXM7JXAyJXNcMDA3LCBTZT1cRVsyIHEsIFNzPVxFWyVwMSVkIHEsCiAKICMgVGhpcyBpcyBhbm90aGVyIHZhcmlhbnQsIGZvciBYRnJlZTg2IDQuMCB4dGVybSAoVC5EaWNrZXkpCiAjIFRoaXMgaXMgYW4gOC1iaXQgdmVyc2lvbiBvZiB4dGVybSwgd2hpY2ggZW11bGF0ZXMgREVDIHZ0MjIwIHdpdGggQU5TSSBjb2xvci4KQEAgLTMzMjgsOCArNDI1OSw4IEBACiAJaHBhPVwyMzMlaSVwMSVkRywgaHQ9XkksIGh0cz1cMjEwLCBpY2g9XDIzMyVwMSVkQCwKIAlpbD1cMjMzJXAxJWRMLCBpbDE9XDIzM0wsIGluZD1eSiwgaW52aXM9XDIzMzhtLAogCWlzMj1cRVs2MiJwXEUgR1wyMzNtXDIzMz83aFxFPlxFN1wyMzM/MTszOzQ7NmxcMjMzNGxcMjMzclxFOCwKLQlrYTE9XDIxN3csIGthMz1cMjE3dSwga2IyPVwyMTd5LCBrYmVnPVwyMTdFLCBrYnM9XkgsCi0Ja2MxPVwyMTdxLCBrYzM9XDIxN3MsIGtjYnQ9XDIzM1osIGtjdWIxPVwyMTdELCBrY3VkMT1cMjE3QiwKKwlrYTE9XDIxN3csIGthMz1cMjE3dSwga2IyPVwyMTd5LCBrYmVnPVwyMTdFLCBrYzE9XDIxN3EsCisJa2MzPVwyMTdzLCBrY2J0PVwyMzNaLCBrY3ViMT1cMjE3RCwga2N1ZDE9XDIxN0IsCiAJa2N1ZjE9XDIxN0MsIGtjdXUxPVwyMTdBLCBrZGNoMT1cMjMzM34sIGtlbmQ9XDIzMzR+LAogCWtlbnQ9XDIxN00sIGtmMT1cMjMzMTF+LCBrZjEwPVwyMzMyMX4sIGtmMTE9XDIzMzIzfiwKIAlrZjEyPVwyMzMyNH4sIGtmMTM9XDIzMzI1fiwga2YxND1cMjMzMjZ+LCBrZjE1PVwyMzMyOH4sCkBAIC0zMzUxLDYgKzQyODIsNyBAQAogCXNtY3VwPVwyMzM/MTA0OWgsIHNtaXI9XDIzMzRoLCBzbWt4PVwyMzM/MWhcRT0sCiAJc21zbz1cMjMzN20sIHNtdWw9XDIzMzRtLCB0YmM9XDIzMzNnLCB1Nj1cMjMzWyVpJWQ7JWRSLAogCXU3PVxFWzZuLCB1OD1cMjMzWz8xOzJjLCB1OT1cRVtjLCB2cGE9XDIzMyVpJXAxJWRkLAorCXVzZT14dGVybStrYnMsCiAKIHh0ZXJtLWhwfHh0ZXJtIHdpdGggaHB0ZXJtIGZ1bmN0aW9uIGtleXMsCiAJa2Nscj1cRUosIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwKQEAgLTMzOTcsOCArNDMyOSw5IEBACiAJYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGNsZWFyPVxFSFxFSiwgY3I9Xk0sIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCiAJY3VwPVxFWSVwMSUnICclKyVjJXAyJScgJyUrJWMsIGN1dTE9XEVBLCBlZD1cRUosIGVsPVxFSywKLQlob21lPVxFSCwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwgbmVsPV5NXkosIHJpPVxFSSwgcm1hY3M9XEVHLCBzbWFjcz1cRUYsCisJaG9tZT1cRUgsIGh0PV5JLCBpbmQ9XkosIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCisJa2N1dTE9XEVBLCBuZWw9Xk1eSiwgcmk9XEVJLCBybWFjcz1cRUcsIHNtYWNzPVxFRiwKKwl1c2U9eHRlcm0ra2JzLAogCiB4dGVybS1ub2FwcHx4dGVybSB3aXRoIGN1cnNvciBrZXlzIGluIG5vcm1hbCBtb2RlLAogCXJtY3VwQCwgcm1reD1cRT4sIHNtY3VwQCwgc21reD1cRT0sIHVzZT14dGVybStub2FwcCwKQEAgLTM0MTEsMjUgKzQzNDQsMjAyIEBACiB4dGVybXx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoWCBXaW5kb3cgU3lzdGVtKSwKIAl1c2U9eHRlcm0tbmV3LAogCi0jIFRoZXNlIGVudHJpZXMgYWxsb3cgYWNjZXNzIHRvIHRoZSBYIHRpdGxlYmFyIGFuZCBpY29uIG5hbWUgYXMgYSBzdGF0dXMgbGluZS4KLSMgTm90ZSB0aGF0IHR3bSAoYW5kIHBvc3NpYmx5IHdpbmRvdyBtYW5hZ2VycyBkZXNjZW5kZWQgZnJvbSBpdCBzdWNoIGFzIHR2dHdtLAotIyBjdHdtLCBhbmQgdnR3bSkgdHJhY2sgd2luZG93cyBieSBpY29uLW5hbWU7IHRodXMsIHlvdSBkb24ndCB3YW50IHRvIG1lc3MKLSMgd2l0aCBpdC4KKyMgVGhpcyBlbnRyeSBhc3N1bWVzIHRoYXQgeHRlcm0ncyBoYW5kbGluZyBvZiBWVDEwMCBTSS9TTyBpcyBkaXNhYmxlZCBieQorIyBzZXR0aW5nIHRoZSB2dDEwMEdyYXBoaWNzIHJlc291cmNlIHRvIGZhbHNlLgoreHRlcm0tdXRmOHx4dGVybSB3aXRoIG5vIFZUMTAwIGxpbmUtZHJhd2luZyBpbiBVVEYtOCBtb2RlLAorCVU4IzEsIHVzZT14dGVybSwKKworIyBUaGVzZSBidWlsZGluZy1ibG9ja3MgYWxsb3cgYWNjZXNzIHRvIHRoZSBYIHRpdGxlYmFyIGFuZCBpY29uIG5hbWUgYXMgYQorIyBzdGF0dXMgbGluZS4gIFRoZXJlIGFyZSBhIGZldyBwcm9ibGVtcyBpbiB1c2luZyB0aGVtIGluIGVudHJpZXM6CisjCisjIGEpIHRzbCBzaG91bGQgaGF2ZSBhIHBhcmFtZXRlciB0byBkZW5vdGUgdGhlIGNvbHVtbiBvbiB3aGljaCB0byB0cmFuc2ZlciB0bworIyAgICB0aGUgc3RhdHVzIGxpbmUuCisjIGIpIHRoZSAiMCIgY29kZSBmb3IgeHRlcm0gdXBkYXRlcyBib3RoIGljb24tdGl0bGUgYW5kIHdpbmRvdyB0aXRsZS4gIFNvbWUKKyMgICAgd2luZG93IG1hbmFnZXJzIHN1Y2ggYXMgdHdtIChhbmQgcG9zc2libHkgd2luZG93IG1hbmFnZXJzIGRlc2NlbmRlZCBmcm9tCisjICAgIGl0IHN1Y2ggYXMgdHZ0d20sIGN0d20sIGFuZCB2dHdtKSB0cmFjayB3aW5kb3dzIGJ5IGljb24tbmFtZS4gVGh1cywgeW91CisjICAgIGRvbid0IHdhbnQgdG8gbWVzcyB3aXRoIGljb24tbmFtZSB3aGVuIHVzaW5nIHRob3NlIHdpbmRvdyBtYW5hZ2Vycy4KKyMKKyMgVGhlIGV4dGVuc2lvbiAiVFMiIGlzIHByZWZlcmFibGUsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWNjZXB0IGEgcGFyYW1ldGVyLgorIyBIb3dldmVyLCBpZiB5b3UgYXJlIHVzaW5nIGEgbm9uLWV4dGVuZGVkIHRlcm1pbmZvLCAiVFMiIGlzIG5vdCB2aXNpYmxlLgogeHRlcm0rc2x8YWNjZXNzIFggdGl0bGUgbGluZSBhbmQgaWNvbiBuYW1lLAogCWhzLAotCXdzbCM0MCwKLQlkc2w9XEVdMDtcMDA3LCBmc2w9XkcsIHRzbD1cRV0wOywgdXNlPXh0ZXJtLAorCWRzbD1cRV0wO1wwMDcsIGZzbD1eRywgdHNsPVxFXTA7LCBUUz1cRV0wOywKIHh0ZXJtK3NsLXR3bXxhY2Nlc3MgWCB0aXRsZSBsaW5lIChwYWNpZnkgdHdtLWRlc2NlbmRlZCB3aW5kb3cgbWFuYWdlcnMpLAogCWhzLAotCXdzbCM0MCwKLQlkc2w9XEVdMjtcMDA3LCBmc2w9XkcsIHRzbD1cRV0yOywgdXNlPXh0ZXJtLAorCWRzbD1cRV0yO1wwMDcsIGZzbD1eRywgdHNsPVxFXTI7LCBUUz1cRV0yOywKKworIyBJbiBjb250cmFzdCwgdGhpcyBibG9jayBjYW4gYmUgdXNlZCBmb3IgYSBERUMgdnQzMjAgYW5kIHVwLiAgVGhlcmUgYXJlIHR3bworIyBjb250cm9scyB1c2VkLgorIworIyBERUNTQVNEIChzZWxlY3QgYWN0aXZlIHN0YXR1cyBkaXNwbGF5KQorIwlcRVswJH0JTWFpbiBkaXNwbGF5CisjCVxFWzEkfQlTdGF0dXMgbGluZQorIworIyBERUNTU0RUIChzZWxlY3Qgc3RhdHVzIGxpbmUgdHlwZSkKKyMJXEVbMCR+CU5vIHN0YXR1cyBsaW5lCisjCVxFWzEkfglJbmRpY2F0b3Igc3RhdHVzIGxpbmUKKyMJXEVbMiR+CUhvc3Qtd3JpdGFibGUgc3RhdHVzIGxpbmUKKyMKKyMgVGhlIGJ1aWxkaW5nIGJsb2NrIGFzc3VtZXMgdGhhdCB0aGUgdGVybWluYWwgYWx3YXlzIHNob3dzIHNvbWV0aGluZyBhdCB0aGUKKyMgc3RhdHVzIGxpbmUgKGVpdGhlciB0aGUgaW5kaWNhdG9yLCBvciBzdGF0dXMgbGluZSkuICBUaGF0IGlzIGJlY2F1c2UgaWYgbm8KKyMgc3RhdHVzIGxpbmUgaXMgdXNlZCwgdGhlbiB0aGUgdGVybWluYWwgbWFrZXMgdGhhdCBsaW5lIHBhcnQgb2YgdGhlIHVzZXIKKyMgd2luZG93LCBjaGFuZ2luZyBpdHMgc2l6ZSB3aXRob3V0IG5vdGljZS4KKyMKKyMgQmVjYXVzZSB0aGVyZSBpcyBubyAiZXNsIiAoZW5hYmxlIHN0YXR1cyBsaW5lKSBjYXBhYmlsaXR5LCB0aGUgInRzbCIKKyMgY2FwYWJpbGl0eSBlbnN1cmVzIHRoYXQgdGhlIHN0YXR1cyBsaW5lIGlzIGhvc3Qtd3JpdGFibGUuICBBIERFQyB0ZXJtaW5hbAorIyB3aWxsIGNsZWFyIHRoZSBzdGF0dXMgbGluZSB3aGVuIGNoYW5naW5nIGZyb20gaW5kaWNhdG9yIHRvIGhvc3Qtd3JpdGFibGUKKyMgbW9kZS4KKyMKKyMgT25jZSBvbiB0aGUgc3RhdHVzIGxpbmUsIHRoZSByb3cgcGFydCBvZiBjdXJzb3IgYWRkcmVzc2luZyBpcyBpZ25vcmVkLiAgU2luY2UKKyMgdHNsIGV4cGVjdHMgYSBwYXJhbWV0ZXIgKHRvIHNwZWNpZnkgdGhlIGNvbHVtbiksIHRoZSBzaG9ydGVzdCBhZGRyZXNzaW5nIHRoYXQKKyMgY2FuIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZSBpcyBIUEEsIGUuZy4sIFxFWzVkIHRvIGdvIHRvIGNvbHVtbiA1LgorIworZGVjK3NsfERFQyBWVHh4IHN0YXR1cyBsaW5lLAorCWVzbG9rLCBocywKKwlkc2w9XEVbMSR+LCBmc2w9XEVbMCR9LCB0c2w9XEVbMiR+XEVbMSR9XEVbJWklcDElZGAsCiAKICMKICMgVGhlIGZvbGxvd2luZyB4dGVybSB2YXJpYW50cyBkb24ndCBkZXBlbmQgb24geW91ciBiYXNlIHZlcnNpb24KICMKICMgeHRlcm0gd2l0aCBib2xkIGluc3RlYWQgb2YgdW5kZXJsaW5lCiB4dGVybS1ib2xkfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYMTFSNiBXaW5kb3cgU3lzdGVtKSBzdGFuZG91dCB3L2JvbGQsCisJc2dyPSU/JXA5JXRcMDE2JWVcMDE3JTtCXEVbMCU/JXA2JXQ7MSU7JT8lcDIldDsxJTslPyVwMSVwMyV8JXQ7NyU7bSwKIAlzbXNvPVxFWzdtLCBzbXVsPVxFWzFtLCB1c2U9eHRlcm0tb2xkLAorCisjIFNlZSB0aGUgbm90ZSBvbiBJQ0gvSUNIMSBWRVJTVVMgUk1JUi9TTUlSIG5lYXIgdGhlIGVuZCBvZiBmaWxlCit4dGVybS1uaWN8eHRlcm0gd2l0aCBpY2gvaWNoMSBzdXBwcmVzc2VkIGZvciBub24tY3Vyc2VzIHByb2dyYW1zLAorCWljaEAsIGljaDFALCB1c2U9eHRlcm0sCisjIEZyb206IE1hcmsgU2hlcHBhcmQgPGtpbWJsZUBtaXN0cmFsLmNvLnVrPiwgNCBNYXkgMTk5NgoreHRlcm0xfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIGlnbm9yaW5nIHRoZSBhbHRlcm5hdGUgc2NyZWVuIGJ1ZmZlciwKKwlybWN1cEAsIHNtY3VwQCwgdXNlPXh0ZXJtLAorCisjIyMjIFhURVJNIE1vdXNlCisjIFRoZSB4dGVybSBtb3VzZSBwcm90b2NvbCBpcyB1c2VkIGJ5IG90aGVyIHRlcm1pbmFsIGVtdWxhdG9ycy4KKyMgSW4gdGhpcyBzZWN0aW9uLCB0d28gZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIG1vdXNlCisjIHByb3RvY29sOiBYTSBhbmQgeG0uICBUaGUgIlhNIiBjYXBhYmlsaXR5IGlzIHJlY29nbml6ZWQgYnkgbmN1cnNlcyB0byBhbGxvdworIyBlbmFibGluZy9kaXNhYmxpbmcgb3RoZXIgbW91c2UgcHJvdG9jb2xzLiAgVGhlICJ4bSIgY2FwYWJpbGl0eSBkZXNjcmliZXMgdGhlCisjIG1vdXNlIHJlc3BvbnNlOyBjdXJyZW50bHkgdGhlcmUgaXMgbm8gaW50ZXJwcmV0ZXIgd2hpY2ggd291bGQgdXNlIHRoaXMKKyMgaW5mb3JtYXRpb24gdG8gbWFrZSB0aGUgbW91c2Ugc3VwcG9ydCBjb21wbGV0ZWx5IGRhdGEtZHJpdmVuLgorCisjIEhlcmUgaXMgdGhlICJvcmlnaW5hbCIgeHRlcm0gbW91c2UgcHJvdG9jb2wuCisjCisjIEZpcnN0IHNlZW4gaW4gWDEwLjMsIEZlYnJ1YXJ5IDE5ODYsIHRoaXMgbGlrZWx5IGRhdGVzIGZyb20gMTk4NSBiYXNlZCBvbiB0aGUKKyMgY29weXJpZ2h0IGRhdGVzIGluIHRoZSBzb3VyY2VzLiAgQSBjb21tZW50IGluIGNoYXJwcm9jLmMgbm90ZXMgIk1JVCBib2d1cworIyBzZXF1ZW5jZSIsIHJlZmVycmluZyB0byB0aGUgZmFjdCB0aGF0IGl0IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSAicmVhbCIKKyMgdGVybWluYWwuICBUaGUgbW91c2UgcmVzcG9uc2VzIGZvciB0aGUgWDEwIHByb3RvY29sIGFyZSBzZW50IG9ubHkgZm9yCisjIGJ1dHRvbi1wcmVzc2VzLgoreHRlcm0reDEwbW91c2V8WDEwIHh0ZXJtIG1vdXNlIHByb3RvY29sLAorCWttb3VzPVxFW00sIFhNPVxFWz85JT8lcDElezF9JT0ldGglZWwlOywKKwl4bT1cRVtNJXAzJScgJyUrJWMlcDIlJyEnJSslYyVwMSUnISclKyVjLAoreHRlcm0teDEwbW91c2V8WDEwIHh0ZXJtIG1vdXNlLAorCXVzZT14dGVybSt4MTBtb3VzZSwgdXNlPXh0ZXJtLAorCisjIEhlcmUgaXMgdGhlIGNvbnZlbnRpb25hbCB4dGVybSBtb3VzZSBwcm90b2NvbCwgaW50cm9kdWNlZCB3aXRoIFgxMVIxIGluCisjIFNlcHRlbWJlciAxOTg3LgorIworIyBUaGUgbW91c2UgcmVzcG9uc2VzIGZvciB0aGUgWDExIHByb3RvY29sIGNvdmVyZWQgYnV0dG9uIHJlbGVhc2VzLCBhcyB3ZWxsIGFzCisjIG1vZGlmaWVyczoKKyMgIHNoaWZ0ICAgIDQKKyMgIGFsdC9tZXRhIDggKHRlY2huaWNhbGx5IHRoZSAibW9kMSIgbWFzaywgYmVjYXVzZSBYMTEgaGFzIG5vIHN1Y2gga2V5cykKKyMgIGNvbnRyb2wgMTYKKyMKKyMgVGhlIG1vZGlmaWVycyBhcmUgbm90IHJlZmxlY3RlZCBpbiB0aGlzIGRlc2NyaXB0aW9uIGJlY2F1c2UgYXMgdXNlZCBpbiB4dGVybQorIyB0aGV5IGFyZSBub3JtYWxseSBpbmFjY2Vzc2libGUgYmVjYXVzZSB0aGUgdHJhbnNsYXRpb25zIHJlc291cmNlcyBhc3NpZ24KKyMgc2hpZnQgYW5kIGNvbnRyb2wgdG8gb3RoZXIgZmVhdHVyZXMuICBIb3dldmVyLCB0aGV5IGFyZSBpbXBvcnRhbnQgYmVjYXVzZQorIyB0aGV5IHRha2UgdXAgc3BhY2UgaW4gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiAgVGhlIG90aGVyIGJpdHMgb2YgdGhpcworIyBieXRlIGFyZSB1c2VkIHRvIGVuY29kZSB0aGUgYnV0dG9uIG51bWJlciBmb3IgYm90aCBwcmVzc2VzIGFuZCByZWxlYXNlcy4KKyMgSW4gdGhlIFgxMSBwcm90b2NvbCwgYW55IGJ1dHRvbi1yZWxlYXNlIGlzIGVuY29kZWQgd2l0aCAiMyIgKHRoZSBsb3dlc3QgMgorIyBiaXRzIGluIHRoZSBieXRlKS4gIExhdGVyIHdvcmsgb24gWEZyZWU4NiB4dGVybSB1c2VkIHRoZSByZW1haW5pbmcgMyBiaXRzIHRvCisjIHByb3ZpZGUgYWRkaXRpb25hbCBmZWF0dXJlcywgZS5nLiwgd2hlZWwgbW91c2UuCisjCisjIFgxMVIxJ3MgeHRlcm0gYWxzbyBzdXBwb3J0ZWQgYW4gImVtYWNzIiBtb3VzZSBwcm90b2NvbCwgd2l0aCBmaW5hbCBjaGFyYWN0ZXIKKyMgInQiIG9yICJUIiwgd2hpY2ggd2FzIGFjdGl2YXRlZCBieSBkb3VibGUtY2xpY2tpbmcuICBUaGUgInQiIHJlc3BvbnNlIHdhcworIyB1c2VkIHdoZW4gdGhlIHN0YXJ0aW5nL2VuZGluZyBwb3NpdGlvbnMgd2VyZSB0aGUgc2FtZS4KKyMKKyMgWDExUjMgKEZlYnJ1YXJ5IDE5ODgpIGFkZGVkIHRoZSBoaWdobGlnaHQvdHJhY2tpbmcgbW9kZS4KKyMKKyMgWDExUjQgKERlY2VtYmVyIDE5ODkpIGFkZGVkIHRoZSBjb250cm9sIHNlcXVlbmNlcyBkb2N1bWVudCwgbGlzdGluZyB0aGUKKyMgY29udHJvbCBzZXF1ZW5jZXMgZm9yIHRoZSBYMTAvWDExIHByb3RvY29scyB3aXRob3V0IGRlc2NyaXB0aW9ucy4gIEl0IGFsc28KKyMgbWVudGlvbmVkIHRoZSAiZW1hY3MiICgiVCIpIHJlc3BvbnNlLiAgQ29tbWVudHMgaW4gYnV0dG9uLmMgcmVmZXJyZWQgdG8gdGhlCisjIFgxMSBwcm90b2NvbCBhcyAiREVDIHZ0MjAwIGNvbXBhdGlibGUiLCBhbHRob3VnaCBERUMgb2ZmZXJlZCBubyBzdWNoIHRlcm1pbmFsLgorIworIyBYMTFSNSAoTm92ZW1iZXIgMTk5MykgZ2F2ZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtb3VzZSBwcm90b2NvbC4KKyMKKyMgWDExUjYgKEphbnVhcnkgMTk5NSkgbW92ZWQgdGhlIGNvbnRyb2wgc2VxdWVuY2VzIGRvY3VtZW50IG91dCBvZiB0aGUgeHRlcm0KKyMgc291cmNlLWRpcmVjdG9yeSB0byB4Yy9kb2Mvc3BlY3MveHRlcm0sIHBvbGlzaGluZyB0aGUgZm9ybWF0dGluZyBidXQgYWRkaW5nCisjIG5vIG5ldyBpbmZvcm1hdGlvbi4KK3h0ZXJtK3gxMW1vdXNlfFgxMSB4dGVybSBtb3VzZSBwcm90b2NvbCwKKwlrbW91cz1cRVtNLCBYTT1cRVs/MTAwMCU/JXAxJXsxfSU9JXRoJWVsJTssCisJeG09XEVbTSU/JXA0JXQzJWUlcDMlJyAnJSslYyU7JXAyJSchJyUrJWMlcDElJyEnJSslYywKK3h0ZXJtLXgxMW1vdXNlfFgxMSBtb3VzZSwKKwl1c2U9eHRlcm0reDExbW91c2UsIHVzZT14dGVybSwKKworIyBIZXJlIGlzIGEgc3VnZ2VzdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSB4dGVybSBoaWdobGlnaHRpbmcgcHJvdG9jb2wuCisjIEEgbW9yZSBjb21wbGljYXRlZCBleGFtcGxlIGNvdWxkIGJlIGNvbnN0cnVjdGVkIHRvIGFjY291bnQgZm9yIHRoZSAidCIKKyMgcmVzcG9uc2UuCit4dGVybSt4MTFoaWxpdGV8WDExIHh0ZXJtIG1vdXNlIHByb3RvY29sIHdpdGggaGlnaGxpZ2h0LAorCWttb3VzPVxFW00sIFhNPVxFWz8xMDAxJT8lcDElezF9JT0ldGglZWwlOywKKwl4bT1cRVslcDclJyEnJSslcDYlJyEnJSslYyVwOSUnISclKyVjJXA4JSchJyUrJWMlcDIlJyEnJSslYyVwMSUnISclKyVjVCwKK3h0ZXJtLXgxMWhpbGl0ZXxYMTEgbW91c2Ugd2l0aCBoaWdobGlnaHQsCisJdXNlPXh0ZXJtK3gxMW1vdXNlLCB1c2U9eHRlcm0sCisKKyMgVGhlIHByZWNlZGluZyB3ZXJlIHRoZSBzb3VyY2VzIGZyb20gWCBDb25zb3J0aXVtLiAgT3RoZXIgc291cmNlcyAob3IgcGF0Y2hlcykKKyMgd2VyZSBhdmFpbGFibGUuICBTdGFydGluZyBpbiBtaWQtMTk5NSwgWEZyZWU4NiBkZXZlbG9wZXJzIGNvbGxlY3RlZCBzb21lIG9mCisjIHRob3NlIGNoYW5nZXMgYW5kIGJlZ2FuIGltcHJvdmVtZW50cywgZS5nLiwgdG8gc3VwcG9ydCBjb2xvci4gIFRoaXMgd2FzLCBieQorIyB0aGUgd2F5LCBhcm91bmQgdGhlIHNhbWUgdGltZSB0aGF0IHJ4dnQgZGV2ZWxvcGVycyBiZWdhbiBpbXBsZW1lbnRpbmcgY29sb3IsCisjIHRob3VnaCBkYXRlcyAoYW5kIGF0dHJpYnV0aW9ucykgYXJlIG5vdCB3ZWxsIGRvY3VtZW50ZWQuICBJIGJlY2FtZSBpbnRlcmVzdGVkCisjIGluIHh0ZXJtIGluIGxhdGUgMTk5NSwgYW5kIGludm9sdmVkIGluIGVhcmx5IDE5OTYuICBUbyBjb21wbGV0ZSB0aGUgcGljdHVyZSwKKyMgQ0RFJ3MgZHR0ZXJtIHdhcyBpbnRyb2R1Y2VkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCB3aXRoIG5vIG1vdXNlIHByb3RvY29sIC1URAorCisjIHh0ZXJtIHBhdGNoICM4MyAoMTk5OC8xMC83KSwgYWRkZWQgSmFzb24gQmFjb24ncyBjaGFuZ2VzIHRvIHByb3ZpZGUgYW4KKyMgImFueS1ldmVudCIgbW91c2UgbW9kZS4KK3h0ZXJtK3NtKzEwMDJ8eHRlcm0gYW55LWV2ZW50IG1vdXNlLAorCWttb3VzPVxFW00sIFhNPVxFWz8xMDAyJT8lcDElezF9JT0ldGglZWwlOywKK3h0ZXJtLTEwMDJ8eHRlcm0gYW55LWV2ZW50IG1vdXNlLAorCXVzZT14dGVybStzbSsxMDAyLCB1c2U9eHRlcm0sCisKK3h0ZXJtK3NtKzEwMDN8dGVzdGluZyB4dGVybS1tb3VzZSwKKwlrbW91cz1cRVtNLCBYTT1cRVs/MTAwMyU/JXAxJXsxfSU9JXRoJWVsJTssCisKK3h0ZXJtLTEwMDN8dGVzdGluZyB4dGVybS1tb3VzZSwKKwl1c2U9eHRlcm0rc20rMTAwMywgdXNlPXh0ZXJtLAorCisjIHh0ZXJtIHBhdGNoICMxMTYgKDE5OTkvOS8yNSkgYWRkZWQgU3RlcGhlbiBQIFdhbGwncyBjaGFuZ2VzIHRvIHN1cHBvcnQgREVDCisjIGxvY2F0b3IgbW9kZS4KKworIyB4dGVybSBwYXRjaCAjMTIwICgxOTk5LzEwLzI4KSBhZGRlZCBteSBjaGFuZ2UgdG8gc3VwcG9ydCB3aGVlbCBtb3VzZSwgYnkKKyMgZHJvcHBpbmcgc3VwcG9ydCBmb3IgdGhlIFgxMSBtb3VzZSBwcm90b2NvbCdzIHNoaWZ0LW1vZGlmaWVyIGFuZCB1c2luZworIyBhdmFpbGFibGUgYml0cyBpbiB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmVzcG9uc2UgdG8gZW5jb2RlIGJ1dHRvbnMgNCBhbmQgNS4KKyMgeHRlcm0gcGF0Y2ggIzEyNiAoMjAwMC8yLzgpIGFtZW5kZWQgdGhhdCBjaGFuZ2UgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aAorIyBvbGRlciBjb25maWd1cmF0aW9ucyB3aGljaCBtaWdodCBoYXZlIHVzZWQgdGhlIG9ic29sZXRlIG1vZGlmaWVycy4KKworIyB4dGVybSBwYXRjaCAjMjYyICgyMDEwLzgvMzApIGFkZGVkIFJ5YW4gSm9obnNvbidzIGNoYW5nZXMgdG8gcHJvdmlkZSBhIG1vZGUKKyMgd2hlcmUgdGhlIGNvb3JkaW5hdGVzIGluIHRoZSBtb3VzZSByZXNwb25zZSB3b3VsZCBiZSBlbmNvZGVkIGluIFVURi04LAorIyB0aGVyZWJ5IGV4dGVuZGluZyB0aGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgcGFzdCAyMjI9KDI1NS0zMykuICBUaGlzIGlzIHRoZQorIyAiMTAwNSIgbW91c2UgbW9kZS4KK3h0ZXJtK3NtKzEwMDV8eHRlcm0gVVRGLTggbW91c2UsCisJa21vdXM9XEVbTSwgWE09XEVbPzEwMDU7MTAwMCU/JXAxJXsxfSU9JXRoJWVsJTssCisJeG09XEVbTSU/JXA0JXQzJWUlcDMlJyAnJSslYyU7JXAyJSchJyUrJXUlcDElJyEnJSsldSwKK3h0ZXJtLTEwMDV8eHRlcm0gVVRGLTggbW91c2UsCisJdXNlPXh0ZXJtK3NtKzEwMDUsIHVzZT14dGVybSwKKworIyB4dGVybSBwYXRjaCAjMjc3ICgyMDEyLzEvNykgcHJvdmlkZXMgYSBtb2RlIHdoZXJlIHRoZSBtb3VzZSByZXNwb25zZSB1c2VzCisjIFNHUi1zdHlsZSBwYXJhbWV0ZXJzLgorIworIyBTb21lb25lIHN0YXRlZCB0aGF0IHRoZSAxMDA1IG1vdXNlIG1vZGUgd291bGQgbm90IGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gbHVpdC4KKyMgKEJ5IHRoZSB3YXksIHRoaXMgaXMgYSBwcm9ibGVtIHdpdGggdGhlIFgxMSBwcm90b2NvbCkuICBBIG1vcmUgcGxhdXNpYmxlCisjIGNyaXRpY2lzbSBpcyB0aGF0IHRoZSByZXNwb25zZXMgcHJvdmlkZWQgYnkgdGhlIDEwMDUgbW9kZSBhcmUgbm90IGRpc3RpbmN0CisjIGZyb20gdGhlIG5vbi0xMDA1IHJlc3BvbnNlcy4KKyMKKyMgQXMgYW4gYWx0ZXJuYXRpdmUgKGFuZCBmaXhpbmcgdGhlIGxvbmdzdGFuZGluZyBsaW1pdGF0aW9uIG9mIFgxMSBtb3VzZQorIyBwcm90b2NvbCByZWdhcmRpbmcgYnV0dG9uLXJlbGVhc2VzKSwgSSBwcm92aWRlZCB0aGlzOgoreHRlcm0rc20rMTAwNnx4dGVybSBTR1ItbW91c2UsCisJa21vdXM9XEVbPCwgWE09XEVbPzEwMDY7MTAwMCU/JXAxJXsxfSU9JXRoJWVsJTssCisJeG09XEVbPCVwMSVkOyVwMiVkOyVwMyVkOyU/JXA0JXRNJWVtJTssCit4dGVybS0xMDA2fHh0ZXJtIFNHUi1tb3VzZSwKKwl1c2U9eHRlcm0rc20rMTAwNiwgdXNlPXh0ZXJtLAorCisjIyMjIEtURVJNCiAjIChrdGVybTogdGhpcyBoYWQgZXh0ZW5zaW9uIGNhcGFiaWxpdGllcyAiOktKOlRZPWFzY2lpOiIgLS0gZXNyKQogIyAoa3Rlcm0gc2hvdWxkIG5vdCBpbnZva2UgREVDIEdyYXBoaWNzIGFzIHRoZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldAogIyAgLS0gS2VuamkgUmlraXRha2UpCkBAIC0zNDM3LDcgKzQ1NDcsNyBAQAogIyAgLS0gTUFUU1VNT1RPIFNob2ppKQogIyBrdGVybSBpbXBsZW1lbnRzIGFjc2MgdmlhIGJ1aWx0LWluIHRhYmxlIG9mIFggRHJhd2FibGUncwoga3Rlcm18a3Rlcm0ga2FuamkgdGVybWluYWwgZW11bGF0b3IgKFggd2luZG93IHN5c3RlbSksCi0JZXNsb2ssIGhzLAorCWVzbG9rLCBocywgWFQsCiAJbmN2QCwKIAlhY3NjPWBgYWFqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh+fiwKIAljc3I9XEVbJWklcDElZDslcDIlZHIsIGRzbD1cRVs/SCwgZW5hY3M9LCBmc2w9XEVbP0YsCkBAIC0zNDQ3LDEyICs0NTU3LDUxIEBACiAJdHNsPVxFWz9FXEVbPyVpJXAxJWRULCB1c2U9eHRlcm0tcjYsIHVzZT1lY21hK2NvbG9yLAoga3Rlcm0tY29sb3J8a3Rlcm0tY298a3Rlcm0gd2l0aCBBTlNJIGNvbG9ycywKIAluY3ZALCB1c2U9a3Rlcm0sIHVzZT1lY21hK2NvbG9yLAotIyBTZWUgdGhlIG5vdGUgb24gSUNIL0lDSDEgVkVSU1VTIFJNSVIvU01JUiBuZWFyIHRoZSBlbmQgb2YgZmlsZQoteHRlcm0tbmljfHh0ZXJtIHdpdGggaWNoL2ljaDEgc3VwcHJlc3NlZCBmb3Igbm9uLWN1cnNlcyBwcm9ncmFtcywKLQlpY2hALCBpY2gxQCwgdXNlPXh0ZXJtLAotIyBGcm9tOiBNYXJrIFNoZXBwYXJkIDxraW1ibGVAbWlzdHJhbC5jby51az4sIDQgTWF5IDE5OTYKLXh0ZXJtMXx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciBpZ25vcmluZyB0aGUgYWx0ZXJuYXRlIHNjcmVlbiBidWZmZXIsCi0Jcm1jdXBALCBzbWN1cEAsIHVzZT14dGVybSwKKworIyMjIyBPdGhlciBYVEVSTQorIyBUaGVzZSAoeHRlcm1jIGFuZCB4dGVybW0pIGFyZSBkaXN0cmlidXRlZCB3aXRoIFNvbGFyaXMuICBUaGV5IHJlZmVyIHRvIGEKKyMgdmFyaWFudCBvZiB4dGVybSB3aGljaCBpcyBhcHBhcmVudGx5IG5vIGxvbmdlciBzdXBwb3J0ZWQsIGJ1dCBhcmUgaW50ZXJlc3RpbmcKKyMgYmVjYXVzZSB0aGV5IGlsbHVzdHJhdGUgU1ZyNCBjdXJzZXMgbW91c2UgY29udHJvbHMgLSBULkRpY2tleQoreHRlcm1tfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChtb25vY3JvbWUpLAorCU9UYnMsIGFtLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAorCWJ0bnMjMywgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCisJYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKKwliZWw9XkcsIGJsaW5rQCwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwKKwljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwKKwljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCisJZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLAorCWVsPVxFW0ssIGVsMT1cRVsxSyQ8Mz4sIGVuYWNzPVxFKEJcRSkwLCBnZXRtPVxFWyVwMSVkWSwKKwlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsCisJaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFT0QsCisJa2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2VuZD1cRVtZLCBrZjA9XEVPeSwKKwlrZjEwPVxFT1ksIGtmMTE9XEVPWiwga2YxMj1cRU9BLCBrZjU9XEVPVCwga2Y2PVxFT1UsCisJa2Y3PVxFT1YsIGtmOD1cRU9XLCBrZjk9XEVPWCwga2hvbWU9XEVbSCwga21vdXM9XEVbXl8sCisJa25wPVxFW1UsIGtwcD1cRVtWLCByYz1cRTgsIHJlcW1wPVxFWzQ5MlosIHJldj1cRVs3bSwgcmk9XEVNLAorCXJtYWNzPV5PLCBybWN1cD1cRUAwXEVbPzRyLCBybXNvPVxFW20sCisJcnMxPVxFPlxFWzE7Mzs0OzU7NmxcRVs/N2hcRVttXEVbclxFWzJKXEVbSCwKKwlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCisJc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOywKKwlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21jdXA9XEVAMFxFWz80c1xFWz80aFxFQDEsCisJc21zbz1cRVs3bSwgdGJjPVxFWzNnLCB1c2U9dnQxMDArZm5rZXlzLAorCit4dGVybWN8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKGNvbG9yKSwKKwljb2xvcnMjOCwgbmN2IzcsIHBhaXJzIzY0LAorCW9wPVxFWzEwMG0sIHNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCisJc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAorCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKKwl1c2U9eHRlcm1tLAorCisjIEZyb206IERhdmlkIEouIE1hY0tlbnppZSA8ZGptQHZhLnB1Ym5peC5jb20+IDIwIEFwciAxOTk1CisjIEhlcmUncyBhIHRlcm1jYXAgZW50cnkgSSd2ZSBiZWVuIHVzaW5nIGZvciB4dGVybV9jb2xvciwgd2hpY2ggY29tZXMKKyMgd2l0aCBCU0QvT1MgMi4wLCBhbmQgdGhlIFgxMVI2IGNvbnRyaWIgdGFwZSB0b28gSSB0aGluay4gIEJlc2lkZXMgdGhlCisjIGNvbG9yIHN0dWZmLCBJIGFsc28gaGF2ZSBhIHN0YXR1cyBsaW5lIGRlZmluZWQgYXMgdGhlIHdpbmRvdyBtYW5hZ2VyCisjIHRpdGxlIGJhci4gW0kgaGF2ZSB0cmFuc2xhdGVkIGl0IHRvIHRlcm1pbmZvIC0tIEVTUl0KK3h0ZXJtLXBjb2xvcnx4dGVybSB3aXRoIGNvbG9yIHVzZWQgZm9yIGhpZ2hsaWdodHMgYW5kIHN0YXR1cyBsaW5lLAorCXdzbCM0MCwKKwlib2xkPVxFWzE7NDNtLCByZXY9XEVbNzszNG0sCisJc2dyPSU/JXA5JXRcRSgwJWVcRShCJTtcRVswJT8lcDYldDsxOzQzJTslPyVwMiV0OzQ7NDIlOyU/JXAxJXQ7NzszMSU7JT8lcDMldDs3OzM0JTslPyVwNCV0OzUlOyU/JXA3JXQ7OCU7bSwKKwlzbXNvPVxFWzc7MzFtLCBzbXVsPVxFWzQ7NDJtLCB1c2U9eHRlcm0rc2wsIHVzZT14dGVybS1yNiwKIAogIyBUaGlzIGRlc2NyaWJlcyB0aGUgY2FwYWJpbGl0aWVzIG9mIGNvbG9yX3h0ZXJtLCBhbiB4dGVybSB2YXJpYW50IGZyb20KICMgYmVmb3JlIEVDTUEtNjQgY29sb3Igc3VwcG9ydCB3YXMgZm9sZGVkIGludG8gdGhlIG1haW4tbGluZSB4dGVybSByZWxlYXNlLgpAQCAtMzQ2MSw3ICs0NjEwLDcgQEAKICMgVGhlIFJFQURNRSdzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbiBhbHNvIHNheSB0aGF0IGl0IHN1cHBvcnRzIFNHUiAyMSwgMjQsIDI1CiAjIGFuZCAyNywgYnV0IHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB0ZXJtaW5mbyBvciB0ZXJtY2FwLgogY29sb3JfeHRlcm18Y3h8Y3gxMDB8Y29sb3JfeHRlcm0gY29sb3IgdGVybWluYWwgZW11bGF0b3IgZm9yIFgsCi0JT1RicywgYW0sIGttLCBtaXIsIG1zZ3IsIHhlbmwsCisJT1RicywgYW0sIGttLCBtaXIsIG1zZ3IsIHhlbmwsIFhULAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzY1LCBuY3ZALAogCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCiAJYmVsPV5HLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLApAQCAtMzUwMCw2ICs0NjQ5LDMyIEBACiAJbmN2QCwKIAlvcD1cRVttLCB1c2U9eHRlcm0tcjYsIHVzZT1rbG9uZStjb2xvciwKIAorIyBUaGlzIGVudHJ5IGRlc2NyaWJlcyBhbiB4dGVybSB3aXRoIFN1bi1zdHlsZSBmdW5jdGlvbiBrZXlzIGVuYWJsZWQKKyMgdmlhIHRoZSBYIHJlc291cmNlIHNldHRpbmcgInh0ZXJtKnN1bkZ1bmN0aW9uS2V5czp0cnVlIgorIyBUbyB1bmRlcnN0YW5kIDxrZjExPi88a2YxMj4gbm90ZSB0aGF0IEwxLEwyIGFuZCBGMTEsRjEyIGFyZSB0aGUgc2FtZS4KKyMgVGhlIDxrZjEzPi4uLjxrZjIwPiBrZXlzIGFyZSBMMy1MMTAuICBXZSBkb24ndCBzZXQgPGtmMTY9XEVbMTk3ej4KKyMgYmVjYXVzZSB3ZSB3YW50IGl0IHRvIGJlIHNlZW4gYXMgPGtjcHk+LgorIyBUaGUgPGtmMzE+Li4uPGtmNDU+IGtleXMgYXJlIFIxLVIxNS4gIFdlIHRyZWF0IHNvbWUgb2YgdGhlc2UgaW4gYWNjb3JkYW5jZQorIyB3aXRoIHRoZWlyIFN1biBrZXlib2FyZCBsYWJlbHMgaW5zdGVhZC4KKyMgRnJvbTogU2ltb24gSi4gR2VycmF0eSA8c2pnQHplbi52b2lkLm96LmF1PiAxMCBKYW4gMTk5NgoreHRlcm0tc3VufHh0ZXJtIHdpdGggc3VuRnVuY3Rpb25LZXlzIHRydWUsCisJa2IyPVxFWzIxOHosIGtjcHk9XEVbMTk3eiwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwKKwlrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZGNoMT1cRVszeiwga2VuZD1cRVsyMjB6LAorCWtlbnQ9XEVPTSwga2YxPVxFWzIyNHosIGtmMTA9XEVbMjMzeiwga2YxMT1cRVsxOTJ6LAorCWtmMTI9XEVbMTkzeiwga2YxMz1cRVsxOTR6LCBrZjE0PVxFWzE5NXosIGtmMTU9XEVbMTk2eiwKKwlrZjE3PVxFWzE5OHosIGtmMTg9XEVbMTk5eiwga2YxOT1cRVsyMDB6LCBrZjI9XEVbMjI1eiwKKwlrZjIwPVxFWzIwMXosIGtmMz1cRVsyMjZ6LCBrZjMxPVxFWzIwOHosIGtmMzI9XEVbMjA5eiwKKwlrZjMzPVxFWzIxMHosIGtmMzQ9XEVbMjExeiwga2YzNT1cRVsyMTJ6LCBrZjM2PVxFWzIxM3osCisJa2YzOD1cRVsyMTV6LCBrZjQ9XEVbMjI3eiwga2Y0MD1cRVsyMTd6LCBrZjQyPVxFWzIxOXosCisJa2Y0ND1cRVsyMjF6LCBrZjQ1PVxFWzIyMnosIGtmNDY9XEVbMjM0eiwga2Y0Nz1cRVsyMzV6LAorCWtmNT1cRVsyMjh6LCBrZjY9XEVbMjI5eiwga2Y3PVxFWzIzMHosIGtmOD1cRVsyMzF6LAorCWtmOT1cRVsyMzJ6LCBrZm5kPVxFWzIwMHosIGtobHA9XEVbMTk2eiwga2hvbWU9XEVbMjE0eiwKKwlraWNoMT1cRVsyeiwga25wPVxFWzIyMnosIGtwcD1cRVsyMTZ6LCBrdW5kPVxFWzE5NXosCisJdXNlPXh0ZXJtLWJhc2ljLAoreHRlcm1zLXN1bnxzbWFsbCAoODB4MjQpIHh0ZXJtIHdpdGggc3VuRnVuY3Rpb25LZXlzIHRydWUsCisJY29scyM4MCwgbGluZXMjMjQsIHVzZT14dGVybS1zdW4sCisKKyMjIyMgR05PTUUgKFZURSkKICMgdGhpcyBkZXNjcmliZXMgdGhlIGFscGhhLXZlcnNpb24gb2YgR25vbWUgdGVybWluYWwgc2hpcHBlZCB3aXRoIFJlZGhhdCA2LjAKIGdub21lLXJoNjJ8R25vbWUgdGVybWluYWwsCiAJYmNlLApAQCAtMzU1Myw3ICs0NzI4LDcgQEAKICMKICMgYmNlIGFuZCBtc2dyIGFyZSByZXBhaXJlZC4KIGdub21lLXJoOTB8R05PTUUgVGVybWluYWwsCi0JYmNlLCBtc2dyLAorCWJjZSwgbXNnciwgWFQsCiAJaHBhPVxFWyVpJXAxJWRHLCBrREM9XEVbMzsyfiwga0xGVD1cRU8yRCwga1JJVD1cRU8yQywKIAlrYjI9XEVbRSwga2NidD1cRVtaLCBrZW5kPVxFT0YsIGtob21lPVxFT0gsIHRiYz1cRVszZywKIAl2cGE9XEVbJWklcDElZGQsIHVzZT14dGVybStwY2YwLCB1c2U9eHRlcm0rcGNma2V5cywKQEAgLTM1NzQsOCArNDc0OSwxMCBAQAogIyBvZiB0aGUga2V5cyAod2hpY2ggbW9yZS9sZXNzIGNvcnJlc3BvbmQgdG8gdGhlIHRlcm1jYXAgdmFsdWVzKSwgYW5kIHdpbGwKICMgaW50ZXJwcmV0IHRob3NlIGFjY29yZGluZyB0byB0aGUgJFRFUk0gdmFsdWUsIGJ1dCBvdGhlcnMgbm90IGluIHRoZQogIyB0ZXJtaW5mbyBhY2NvcmRpbmcgdG8gc29tZSBjb25zdGFudGx5IGNoYW5naW5nIHNldCBvZiBoYWNrZXIgZ3VpZGVsaW5lcyAtVEQKLWdub21lLTIwMDd8R05PTUUgVGVybWluYWwgc25hcHNob3QgMi4xOC4xLAordnRlLTIwMDd8VlRFIGluIEdOT01FIFRlcm1pbmFsIHNuYXBzaG90IDIuMTguMSwKIAl1c2U9eHRlcm0rcGNjMiwgdXNlPWdub21lLWZjNSwKK2dub21lLTIwMDd8R05PTUUgVGVybWluYWwgc25hcHNob3QgMi4xOC4xLAorCXVzZT12dGUtMjAwNywKIAogIyBHTk9NRSBUZXJtaW5hbCAyLjIyLjMgKDIwMDggc25hcHNob3QpCiAjCkBAIC0zNTg0LDggKzQ3NjEsMjYgQEAKICMgdnQyMjAncyBiZWhhdmlvciwgd2hpY2ggd2lsbCBtYWtlIGl0IGxlc3MgdXNhYmxlIG9uIGEgVk1TIHN5c3RlbSAodW5jbGVhcgogIyB3aGF0IHRoZSBpbnRlbnQgb2YgdGhlIGRldmVsb3BlciBpcywgc2luY2UgdGhlIE5SQyBmZWF0dXJlIGV4cG9zZWQgaW4gdnR0ZXN0CiAjIGJ5IHRoaXMgY2hhbmdlIGRvZXMgbm90IHdvcmspLgordnRlLTIwMDh8VlRFIGluIEdOT01FIFRlcm1pbmFsIHNuYXBzaG90IDIuMjIuMywKKwl1c2U9dnRlK3BjZmtleXMsIHVzZT12dGUtMjAwNywKIGdub21lLTIwMDh8R05PTUUgVGVybWluYWwgc25hcHNob3QgMi4yMi4zLAotCXVzZT1nbm9tZStwY2ZrZXlzLCB1c2U9Z25vbWUtMjAwNywKKwl1c2U9dnRlLTIwMDgsCisKKyMgR05PTUUgVGVybWluYWwgMy42LjAgKDIwMTIpCisjIFZURSAwLjM0LjEgd2FzIG1hcmtlZCBpbiBnaXQgMjAxMi0xMC0xNSAodGhyZWUgZGF5cyBhZnRlciBwYXRjaCB3YXMgYXBwbGllZAorIyBpbiBuY3Vyc2VzKS4gIEl0IGluaGVyaXRlZCBmcm9tIGdub21lLWZjNSwgd2hpY2ggYnJva2UgdGhlIG1vZGlmaWVkIGZvcm1zCisjIG9mIGYxLWY0IC1URAorIworIyBUZXN0aW5nIHdpdGggdGFjayBzaG93cyB0aGF0IGZsYXNoIGRvZXMgbm90L2hhcyBub3Qgd29ya2VkIC1URAordnRlLTIwMTJ8VlRFIDAuMzQuMSwKKwluY3YjMTYsCisJZGltPVxFWzJtLCBmbGFzaEAsIGludmlzPVxFWzhtLCByaXRtPVxFWzIzbSwKKwlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNSV0OzIlOyU/JXA3JXQ7OCU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XDAxNiVlXDAxNyU7LAorCXNpdG09XEVbM20sIHVzZT12dGUtMjAwOCwKKyMgVmVyc2lvbiAzLjYuMSBzZXRzIFRFUk0gdG8geHRlcm0tMjU2Y29sb3IgKHN0aWxsIGhhcmRjb2RlZCksIHdoaWNoIGhhcworIyA2MSBkaWZmZXJlbmNlcyBmcm9tIGEgY29ycmVjdCBlbnRyeSBmb3IgZ25vbWUgdGVybWluYWwuCitnbm9tZS0yMDEyfEdOT01FIFRlcm1pbmFsIDMuNi4wLAorCXVzZT12dGUtMjAxMiwKIAogIyBHTk9NRSB0ZXJtaW5hbCBtYXkgYXV0b21hdGljYWxseSB1c2UgdGhlIGNvbnRlbnRzIG9mIHRoZSAieHRlcm0iIHRlcm1pbmZvIHRvCiAjIHN1cHBseSBrZXkgaW5mb3JtYXRpb24gd2hpY2ggaXMgbm90IGJ1aWx0IGludG8gdGhlIHByb2dyYW0uICBXaXRoIDIuMjIuMywKQEAgLTM2MDMsNyArNDc5OCw3IEBACiAjCiAjIFRoZSBwYXJhbWV0ZXJzIHdpdGggXEVPIChTUzMpIGFyZSB0ZWNobmljYWxseSBhbiBlcnJvciwgc2luY2UgU1MzIHNob3VsZCBoYXZlCiAjIG5vIHBhcmFtZXRlcnMuICBUaGlzIGFwcGVhcnMgdG8gYmUgcm90ZSBjb3B5aW5nIGJhc2VkIG9uIHh0ZXJtK3BjYzAuCi1nbm9tZStwY2ZrZXlzfGdub21lIHZhcmlhdGlvbiBvbiB4dGVybStwY2ZrZXlzLAordnRlK3BjZmtleXN8VlRFJ3MgdmFyaWF0aW9uIG9uIHh0ZXJtK3BjZmtleXMsCiAJa2YxPVxFT1AsIGtmMTM9XEVPMTsyUCwga2YxND1cRU8xOzJRLCBrZjE1PVxFTzE7MlIsCiAJa2YxNj1cRU8xOzJTLCBrZjI9XEVPUSwga2YyNT1cRU8xOzVQLCBrZjI2PVxFTzE7NVEsCiAJa2YyNz1cRU8xOzVSLCBrZjI4PVxFTzE7NVMsIGtmMz1cRU9SLCBrZjM3PVxFTzE7NlAsCkBAIC0zNjExLDEzICs0ODA2LDI1IEBACiAJa2Y0OT1cRU8xOzNQLCBrZjUwPVxFTzE7M1EsIGtmNTE9XEVPMTszUiwga2Y1Mj1cRU8xOzNTLAogCWtmNjE9XEVPMTs0UCwga2Y2Mj1cRU8xOzRRLCBrZjYzPVxFTzE7NFIsCiAJdXNlPXh0ZXJtK3BjZmtleXMsCitnbm9tZStwY2ZrZXlzfFZURSdzIHZhcmlhdGlvbiBvbiB4dGVybStwY2ZrZXlzLAorCXVzZT12dGUrcGNma2V5cywKIAorIyBkZXByZWNhdGVkIC0gdXNlICJ2dGUiIGZvciBuZXdlciB2ZXJzaW9ucwogZ25vbWV8R05PTUUgVGVybWluYWwsCi0JdXNlPWdub21lLTIwMDgsCisJdXNlPXZ0ZS0yMDEyLAorCisjIHJlbGV2YW50IGNoYW5nZXMgd2VyZSBtYWRlIGluIEphbnVhcnkgMjAxNAordnRlLTIwMTR8VlRFIDAuMzUuMSwKKwl1c2U9eHRlcm0rcGNma2V5cywgdXNlPXZ0ZS0yMDEyLAorCit2dGV8VlRFIGFrYSBHTk9NRSBUZXJtaW5hbCwKKwl1c2U9dnRlLTIwMTQsCiAKICMgcGFsZXR0ZSBpcyBoYXJkY29kZWQuLi4KK3Z0ZS0yNTZjb2xvcnxWVEUgd2l0aCB4dGVybSAyNTYtY29sb3JzLAorCXVzZT14dGVybSsyNTZjb2xvciwgdXNlPXZ0ZSwKIGdub21lLTI1NmNvbG9yfEdOT01FIFRlcm1pbmFsIHdpdGggeHRlcm0gMjU2LWNvbG9ycywKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPWdub21lLAorCXVzZT12dGUtMjU2Y29sb3IsCiAKICMgWEZDRSBUZXJtaW5hbCAwLjIuNS40YmV0YTIKICMKQEAgLTM2MjYsOCArNDgzMyw5IEBACiAjIFNpbmNlIG1vc3Qgb2YgdGhlIHRlcm1pbmZvLXJlbGF0ZWQgYmVoYXZpb3IgaXMgZHVlIHRvIHRoZSBWVEUgbGlicmFyeSwKICMgdGhlIHRlcm1pbmZvIGlzIHRoZSBzYW1lIGFzIGdub21lLXRlcm1pbmFsLgogeGZjZXxYZmNlIFRlcm1pbmFsLAotCXVzZT1nbm9tZSwKKwl1c2U9dnRlLTIwMDgsCiAKKyMjIyMgT3RoZXIgR05PTUUKICMgTXVsdGktR25vbWUtVGVybWluYWwgMS42LjIKICMKICMgVGhpcyBkb2VzIG5vdCB1c2UgVlRFLCBhbmQgZG9lcyBoYXZlIGRpZmZlcmVudCBiZWhhdmlvciAoY29tcGFyZSB4ZmNlIGFuZApAQCAtMzYzNSw2ICs0ODQzLDcgQEAKIG1ndHxNdWx0aSBHTk9NRSBUZXJtaW5hbCwKIAlpbmRuPVxFWyVwMSVkUywgcmluPVxFWyVwMSVkVCwgdXNlPXh0ZXJtLXhmODYtdjMzMywKIAorIyMjIyBLREUKICMgVGhpcyBpcyBrdnQgMC0xOC43LCBzaGlwcGVkIHdpdGggUmVkaGF0IDYuMCAodGhvdWdoIHdoZXRoZXIgaXQgc3VwcG9ydHMgYmNlCiAjIG9yIG5vdCBpcyBkZWJhdGFibGUpLgoga3Z0fEtERSB0ZXJtaW5hbCwKQEAgLTM2NzUsMjggKzQ4ODQsMzEgQEAKICMgVXBkYXRlZCBmb3Iga29uc29sZSAxLjYuNjoKICMgICAgYWRkIGNvbnRyb2wta2V5IG1vZGlmaWVycyBmb3IgZnVuY3Rpb24ta2V5cywgZXRjLgogIworIyBVcGRhdGVkIGZvciBrb25zb2xlIDIuMTIuNDoKKyMgICAgYWRkIHNpdG0vcml0bQorIwogIyB2dHRlc3QgbWVudSAxIHNob3dzIHRoYXQgYm90aCBrb25zb2xlIGFuZCBnbm9tZSB0ZXJtaW5hbCBkbyB3cmFwcGluZwogIyBkaWZmZXJlbnQgZnJvbSB4dGVybSAoYW5kIHZ0MTAwJ3MpLiAgVGhleSBoYXZlIHRoZSBzYW1lIGJlaGF2aW9yIGluIHRoaXMKICMgZGV0YWlsLCBidXQgaXQgaXMgdW5jbGVhciB3aGljaCBjb3BpZXMgdGhlIG90aGVyLgoga29uc29sZS1iYXNlfEtERSBjb25zb2xlIHdpbmRvdywKLQliY2UsIGttQCwgbnBjLAorCWJjZSwga21ALCBucGMsIFhULAorCW5jdkAsCiAJYmVsQCwgYmxpbms9XEVbNW0sIGNpdmlzPVxFWz8yNWwsIGNub3JtPVxFWz8yNWgsCiAJZWNoPVxFWyVwMSVkWCwgZmxhc2g9XEVbPzVoJDwxMDAvPlxFWz81bCwKLQlocGE9XEVbJWklcDElZEcsIGluZG49XEVbJXAxJWRTLCBrYnM9XDE3Nywga2RjaDFALAorCWhwYT1cRVslaSVwMSVkRywgaW5kbj1cRVslcDElZFMsIGticz1cMTc3LCBrZGNoMT1cRVszfiwKIAlrZW5kPVxFWzR+LCBrZjFALCBrZjEwQCwga2YxMUAsIGtmMTJALCBrZjEzQCwga2YxNEAsIGtmMTVALCBrZjE2QCwKIAlrZjE3QCwga2YxOEAsIGtmMTlALCBrZjJALCBrZjIwQCwga2YzQCwga2Y0QCwga2Y1QCwga2Y2QCwga2Y3QCwga2Y4QCwKLQlrZjlALCBrZm5kQCwga2hvbWU9XEVbMX4sIGtzbHRALCByaW49XEVbJXAxJWRULCBybWFtPVxFWz83bCwKLQlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCisJa2Y5QCwga2ZuZEAsIGtob21lPVxFWzF+LCBrc2x0QCwgcmluPVxFWyVwMSVkVCwgcml0bT1cRVsyM20sCisJcm1hbT1cRVs/N2wsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKIAlyczI9XEU3XEVbclxFOFxFW21cRVs/N2hcRVs/MTszOzQ7NmxcRVs0bFxFPlxFWz8xMDAwbFxFWz8yNWgsCiAJc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVswbVwwMTcsIHNtYW09XEVbPzdoLCB2cGE9XEVbJWklcDElZGQsCisJc2dyMD1cRVswbVwwMTcsIHNpdG09XEVbM20sIHNtYW09XEVbPzdoLCB2cGE9XEVbJWklcDElZGQsCiAJdXNlPWVjbWErY29sb3IsIHVzZT14dGVybS1yNiwKIGtvbnNvbGUtbGludXh8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggbGludXgga2V5Ym9hcmQsCi0Ja2RjaDE9XEVbM34sIGtmMT1cRVtbQSwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzQCwga2YxNEAsIGtmMTVALCBrZjE2QCwga2YxN0AsIGtmMThALCBrZjE5QCwKLQlrZjI9XEVbW0IsIGtmMjBALCBrZjM9XEVbW0MsIGtmND1cRVtbRCwga2Y1PVxFW1tFLAotCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0JdXNlPWtvbnNvbGUtYmFzZSwKKwlrZjE9XEVbW0EsIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMTNALAorCWtmMTRALCBrZjE1QCwga2YxNkAsIGtmMTdALCBrZjE4QCwga2YxOUAsIGtmMj1cRVtbQiwga2YyMEAsCisJa2YzPVxFW1tDLCBrZjQ9XEVbW0QsIGtmNT1cRVtbRSwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwKKwlrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCB1c2U9a29uc29sZS1iYXNlLAoga29uc29sZS1zb2xhcmlzfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIFNvbGFyaXMga2V5Ym9hcmQsCiAJa2JzPV5ILCBrZW5kPVxFWzR+LCBraG9tZT1cRVsxfiwgdXNlPWtvbnNvbGUtdnQxMDAsCiAjIEtERSdzICJYRnJlZTg2IDMueC54IiBrZXlib2FyZCBpcyBiYXNlZCBvbiByZWFkaW5nIHRoZSB4dGVybSB0ZXJtaW5mbyByYXRoZXIKQEAgLTM3MzAsNyArNDk0MiwyMSBAQAogCiAjIHBhbGV0dGUgaXMgaGFyZGNvZGVkLi4uCiBrb25zb2xlLTI1NmNvbG9yfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIHh0ZXJtIDI1Ni1jb2xvcnMsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1rb25zb2xlLAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPWtvbnNvbGUsCisKKyMjIyMgTUxURVJNCisjIGh0dHA6Ly9tbHRlcm0uc291cmNlZm9yZ2UubmV0LworCittbHRlcm18bXVsdGkgbGluZ3VhbCB0ZXJtaW5hbCBlbXVsYXRvciwKKwl1c2U9bWx0ZXJtMywKKworIyBUZXN0ZWQgbWx0ZXJtIDMuMi4yOgorIyBtbHRlcm0gMy54IGhhcyBtYWRlIGNoYW5nZXMsIGJ1dCB0aGV5IGFyZSBub3QgcmVmbGVjdGVkIGluIHRoZSBpbmNsdWRlZAorIyBtbHRlcm0udGk7IHRoaXMgZW50cnkgaXMgYmFzZWQgb24gdGVzdGluZyB3aXRoIHRhY2sgYW5kIHZ0dGVzdCAtVEQKK21sdGVybTN8bXVsdGkgbGluZ3VhbCB0ZXJtaW5hbCBlbXVsYXRvciwKKwlrZjE9XEVbMTF+LCBrZjI9XEVbMTJ+LCBrZjM9XEVbMTN+LCBrZjQ9XEVbMTR+LAorCXJpdG09XEVbMjNtLCBzaXRtPVxFWzNtLCB1c2U9eHRlcm0rYXBwLCB1c2U9eHRlcm0rcGNmMCwKKwl1c2U9eHRlcm0rcGNjMiwgdXNlPXh0ZXJtK3BjZTIsIHVzZT1tbHRlcm0yLAogCiAjIFRoaXMgaXMgbWx0ZXJtIDIuOS4zJ3MgbWx0ZXJtLnRpLCB3aXRoIHNvbWUgYWRkaXRpb25zL2NvcnJlY3Rpb25zIC1URAogIwpAQCAtMzc1MSw4ICs0OTc3LDggQEAKICMJY29udHJvbC9hbHQJCWtmMSB0byBrZjEyCVxFWzExOzd+IHRvIFxFWzI0Ozd+CiAjCWNvbnRyb2wvc2hpZnQvYWx0CWtmMSB0byBrZjEyCVxFWzExOzh+IHRvIFxFWzI0Ozh+CiAjCi1tbHRlcm18bXVsdGkgbGluZ3VhbCB0ZXJtaW5hbCBlbXVsYXRvciwKLQlhbSwgZXNsb2ssIGttLCBtYzVpLCBtaXIsIG1zZ3IsIG5wYywgeGVubCwKK21sdGVybTJ8bXVsdGkgbGluZ3VhbCB0ZXJtaW5hbCBlbXVsYXRvciwKKwlhbSwgZXNsb2ssIGttLCBtYzVpLCBtaXIsIG1zZ3IsIG5wYywgeGVubCwgWFQsCiAJY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBwYWlycyM2NCwKIAlhY3NjPTAwYGBhYWZmZ2doaGpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLApAQCAtMzc5NCw2ICs1MDIwLDEwIEBACiAJa1JJVDY9XEVPMTs2Qywga1JJVDc9XEVPMTs3Qywga1VQPVxFTzE7MkEsIGtVUDM9XEVPMTszQSwKIAlrVVA0PVxFTzE7NEEsIGtVUDU9XEVPMTs1QSwga1VQNj1cRU8xOzZBLCBrVVA3PVxFTzE7N0EsCiAKK21sdGVybS0yNTZjb2xvcnxtbHRlcm0gMy4wIHdpdGggeHRlcm0gMjU2LWNvbG9ycywKKwl1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1tbHRlcm0sCisKKyMjIyMgUlhWVAogIyBGcm9tOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAY2xhcmsubmV0PiAwNCBPY3QgMTk5NwogIyBVcGRhdGVkOiBPZXpndWVyIEtlc2ltIDxrZXNpbUBtYXRoLmZ1LWJlcmxpbi5kZT4gMDIgTm92IDE5OTcKICMgTm90ZXM6CkBAIC0zODE2LDcgKzUwNDYsNyBAQAogIyByZW1vdmVkIGRjaC9kY2gxIGJlY2F1c2UgdGhleSBhcmUgaW5jb25zaXN0ZW50IHdpdGggYmNlL2VjaCAtVEQKICMgcmVtb3ZlIGttIGFzIHBlciB0YWNrIHRlc3QgLVRECiByeHZ0LWJhc2ljfHJ4dnQgdGVybWluYWwgYmFzZSAoWCBXaW5kb3cgU3lzdGVtKSwKLQlPVGJzLCBhbSwgYmNlLCBlbywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCisJT1RicywgYW0sIGJjZSwgZW8sIG1pciwgbXNnciwgeGVubCwgeG9uLCBYVCwKIAljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCkBAIC0zOTM0LDEzICs1MTY0LDMyIEBACiAJa2YzOD1cRVsyOVxeLCBrZjM5PVxFWzMxXF4sIGtmND1cRVsxNH4sIGtmNDA9XEVbMzJcXiwKIAlrZjQxPVxFWzMzXF4sIGtmNDI9XEVbMzRcXiwga2Y0Mz1cRVsyM0AsIGtmNDQ9XEVbMjRALAogCWtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2ZuZD1cRVsxfiwga2hvbWU9XEVbN34sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKLQlrc2x0PVxFWzR+LCBrREM1PVxFWzNcXiwga0RDNj1cRVszQCwga0ROPVxFW2IsIGtETjU9XEVPYiwKLQlrRU5ENT1cRVs4XF4sIGtFTkQ2PVxFWzhALCBrSE9NNT1cRVs3XF4sIGtIT002PVxFWzdALAotCWtJQzU9XEVbMlxeLCBrSUM2PVxFWzJALCBrTEZUNT1cRU9kLCBrTlhUNT1cRVs2XF4sCi0Ja05YVDY9XEVbNkAsIGtQUlY1PVxFWzVcXiwga1BSVjY9XEVbNUAsIGtSSVQ1PVxFT2MsCi0Ja1VQPVxFW2EsIGtVUDU9XEVPYSwKKwlrZm5kPVxFWzF+LCBraG9tZT1cRVs3fiwga2ljaDE9XEVbMn4sIGtpbmQ9XEVbYSwga25wPVxFWzZ+LAorCWtwcD1cRVs1fiwga3JpPVxFW2IsIGtzbHQ9XEVbNH4sIGtEQzU9XEVbM1xeLCBrREM2PVxFWzNALAorCWtETj1cRVtiLCBrRE41PVxFT2IsIGtFTkQ1PVxFWzhcXiwga0VORDY9XEVbOEAsCisJa0hPTTU9XEVbN1xeLCBrSE9NNj1cRVs3QCwga0lDNT1cRVsyXF4sIGtJQzY9XEVbMkAsCisJa0xGVDU9XEVPZCwga05YVDU9XEVbNlxeLCBrTlhUNj1cRVs2QCwga1BSVjU9XEVbNVxeLAorCWtQUlY2PVxFWzVALCBrUklUNT1cRU9jLCBrVVA9XEVbYSwga1VQNT1cRU9hLAogCisjIHJ4dnQgd2FzIG9yaWdpbmFsbHkgInh2dCIsIGZpcnN0IGFubm91bmNlZCBpbiBBcHJpbCAxOTkzOgorIwlodHRwOi8vd3d3LmluZm9ybWF0aWNhLmNvLmNyL2xpbnV4LWRlc2t0b3BzL3Jlc2VhcmNoLzE5OTMvMDQxNi5odG1sCisjCisjIFRob3VnaCBpdHMgY2hhbmdlLWxvZyBkb2VzIG5vdCBtZW50aW9uIHRoaXMsIEpvaG4gRGF2aXMgaGFzIHN0YXRlZCB0aGF0IGhlCisjIHdhcyB0aGUgYXV0aG9yIG9mIHRoZSBjaGFuZ2VzIHRvIHVzZSB0aGUgYmNlICgibmV3IGNvbG9yIG1vZGVsIikgd2hpY2ggd2FzCisjIGluY29ycG9yYXRlZCBpbnRvIHJ4dnQgMi4xMSAoSnVuZSAxNSwgMTk5NSkuICBUaGUgY2hhbmdlLWxvZyBkb2VzIG5vdCBnaXZlCisjIGRhdGVzLCBub3IgZ2l2ZSBkZXZlbG9wZXIncyBuYW1lcy4gIEluaXRpYWwgY29sb3Igc3VwcG9ydCB3YXMgYWRkZWQgZm9yIHJ4dnQKKyMgIjIuMCIsIHdoaWNoIHdhcyBzb21ldGltZSBpbiAxOTk0LgorIworIyByeHZ0IGhhZCB1c2FibGUgY29sb3Igc3VwcG9ydCB3aXRoIDIuMTYgKEFwcmlsIDIsIDE5OTYpLCB3aXRoIHNvbWUgaGVscCBieSBteSB3b3JrIG9uCisjIHZ0dGVzdCwgYXMgd2VsbCBhcyBidWcgcmVwb3J0cyB0byBNYXJrIE9sZXNlbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZpeAorIyBtZW50aW9uZWQgaGVyZQorIwlodHRwOi8vd2ViLmFyY2hpdmVvcmFuZ2UuY29tL2FyY2hpdmUvdi82RVR2TGI1d0h0YmJ6Q2FTNFM5SgorIyB3YXMgZnJvbSBvbmUgb2YgbXkgYnVnLXJlcG9ydHMgLVRECisjCisjIFdoaWxlIHRoZSBjb2xvciBtb2RlbCBib3RoIGZvciB4dGVybSBhbmQgcnh2dCB3YXMgYmFzZWQgb24gTGludXggY29uc29sZSwKKyMgT2xlc2VuIChvciBwb3NzaWJseSBEYXZpcykgZGl2ZXJnZWQgaW4gb25lIHJlc3BlY3QgZnJvbSBMaW51eCdzIGJjZSBjb2xvcgorIyBiZWhhdmlvcjogaW5zZXJ0aW5nL2RlbGV0aW5nIGNoYXJhY3RlcnMgZG9lcyBub3QgZmlsbCB0aGUgbmV3bHkgZW1wdHkgY2VsbAorIyB3aXRoIHRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IuCiByeHZ0fHJ4dnQgdGVybWluYWwgZW11bGF0b3IgKFggV2luZG93IFN5c3RlbSksCiAJbmN2QCwKIAlocGE9XEVbJWklcDElZEcsIGtmMD1cRVsyMX4sIHNncjA9XEVbbVwwMTcsCkBAIC0zOTU0LDI0ICs1MjAzLDUzIEBACiByeHZ0LXhwbXxyeHZ0IHRlcm1pbmFsIGVtdWxhdG9yIChYIFdpbmRvdyBTeXN0ZW0pLAogCXVzZT1yeHZ0LAogcnh2dC1jeWd3aW58cnh2dCB0ZXJtaW5hbCBlbXVsYXRvciAoWCBXaW5kb3cgU3lzdGVtKSBvbiBjeWd3aW4sCi0JYWNzYz0wXDMzMytcMjU3XCxcMjU2LVxeYFwwMDRhXDI2MWZcMzcwZ1wzNjFoXDI2MGpcMzMxa1wyNzdsXDMzMm1cMzAwblwzMDVvfnBcMzA0cVwzMDRyXDMwNHNfdFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2M3lcMzYzelwzNjJ7XDM0M3xcMzMwfVwyMzR+XDM3NiwKKwlhY3NjPStcMjU3XCxcMjU2LVxeMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAogCXVzZT1yeHZ0LAogcnh2dC1jeWd3aW4tbmF0aXZlfHJ4dnQgdGVybWluYWwgZW11bGF0b3IgKG5hdGl2ZSBNUyBXaW5kb3cgU3lzdGVtIHBvcnQpIG9uIGN5Z3dpbiwKLQlhY3NjPTBcMzMzK1wyNTdcLFwyNTYtXF5gXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB+XDM3NiwKKwlhY3NjPStcMjU3XCxcMjU2LVxeMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB+XDM3NiwKIAl1c2U9cnh2dC1jeWd3aW4sCiAKICMgVGhpcyB2YXJpYW50IGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCByeHZ0IDIuNy43IHdoZW4gY29tcGlsZWQgd2l0aAogIyBOT19CUklHSFRDT0xPUiBkZWZpbmVkLiAgcnh2dCBuZWVkcyBtb3JlIHdvcmsuLi4KLXJ4dnQtMTZjb2xvcnx4dGVybSB3aXRoIDE2IGNvbG9ycyBsaWtlIGFpeHRlcm0sCityeHZ0LTE2Y29sb3J8cnh2dCB3aXRoIDE2IGNvbG9ycyBsaWtlIGFpeHRlcm0sCiAJbmN2IzMyLCB1c2U9aWJtKzE2Y29sb3IsIHVzZT1yeHZ0LAogCi0jIG1yeHZ0IDAuNS4zCisjIyMjIE1SWFZUCisjIG1yeHZ0IDAuNS40CiAjCiAjIG1yeHZ0IGlzIGJhc2VkIG9uIHJ4dnQgMi43LjExLCBidXQgaGFzIGJ5IGRlZmF1bHQgWFRFUk1fRktFWVMgZGVmaW5lZCwgd2hpY2gKICMgbWFrZXMgaXRzIGZ1bmN0aW9uLWtleXMgZGlmZmVyZW50IGZyb20gb3RoZXIgZmxhdm9ycyBvZiByeHZ0IC1URAorIworIyBUZXN0aW5nIHdpdGggdGFjazoKKyMgKwltYWRlIGN1c3RvbSBkZXNjcmlwdGlvbiAoYmVsb3cpIHRvIHdvcmssIHRob3VnaCBpdCBzZXRzIFRFUk09eHRlcm0uCisjCisjIFRlc3Rpbmcgd2l0aCB2dHRlc3Q6CisjICsJV2hpbGUgImJhc2VkIG9uIiByeHZ0LCBzb21lIG9mIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGlzIGJyb2tlbi4gIFRoZQorIwl3aW5kb3cgY29sbGFwc2VzIHRvIGEgc2luZ2xlIGxpbmUgd2hlbiBydW5uaW5nIHNldmVyYWwgb2YgdGhlIHNjcmVlbnMKKyMJaW4gdnR0ZXN0LCBlLmcuLCB0aGUgdGVzdHMgZm9yIGN1cnNvciBtb3ZlbWVudCwgc2NyZWVuIGZlYXR1cmVzLAorIwlkb3VibGUtc2l6ZWQgY2hhcmFjdGVycy4KKyMgKwlUaGUgdnQ1MiB0ZXN0IHdvcmtzIHByb3Blcmx5LCBidXQgdGhpcyBpcyBhbiBleGNlcHRpb24uICBEdWUgdG8gdGhlCisjCW90aGVyIGJ1ZyhzKSBtb3N0IG9mIHZ0dGVzdCBpcyB1bnRlc3RhYmxlLgorIyArCXRoZSBjb2xvciB0ZXN0IHVzaW5nIEVDSCBzaG93cyBhIGdhcCBpbiB0aGUgYmNlIG1vZGVsLCBsaWtlIHJ4dnQuCisjCisjIFRlc3Rpbmcgd2l0aCB4dGVybSAidnR0ZXN0IiBzY3JpcHRzOgorIyArCXJlc2l6ZS5wbCBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgbXJ4dnQgZG9lcyBpbXBsZW1lbnQgQ1NJIDE4IHQKKyMJKG5vdCBpbiByeHZ0LCBidXQgbm90IGRvY3VtZW50ZWQgYnkgbXJ4dnQpIGJ1dCBub3QgQ1NJIDE5IHQuCisjICsJbm9uZSBvZiB0aGUgImR5bmFtaWMgY29sb3JzIiAoT1NDIGNvbG9ycykgc2NyaXB0cyB3b3JrLgogbXJ4dnR8bXVsdGl0YWJiZWQgcnh2dCwKLQl1c2U9eHRlcm0rcGNjMiwgdXNlPXh0ZXJtK3I2ZjIsIHVzZT1yeHZ0LAorCVhULAorCWtFTkQ9XEVbODsyfiwga0hPTT1cRVs3OzJ+LCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAorCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlbmQ9XEVbOH4sIGtob21lPVxFWzd+LAorCWtFTkQzPVxFWzg7M34sIGtFTkQ0PVxFWzg7NH4sIGtFTkQ1PVxFWzg7NX4sCisJa0VORDY9XEVbODs2fiwga0VORDc9XEVbODs3fiwga0hPTTM9XEVbNzszfiwKKwlrSE9NND1cRVs3OzR+LCBrSE9NNT1cRVs3OzV+LCBrSE9NNj1cRVs3OzZ+LAorCWtIT003PVxFWzc7N34sIHVzZT14dGVybStyNmYyLCB1c2U9eHRlcm0rcGNma2V5cywKKwl1c2U9cnh2dCwKIAorbXJ4dnQtMjU2Y29sb3J8bXVsdGl0YWJiZWQgcnh2dCB3aXRoIDI1NiBjb2xvcnMsCisJdXNlPXh0ZXJtKzI1NmNvbG9yLCB1c2U9bXJ4dnQsCisKKyMjIyMgRVRFUk0KICMgRnJvbTogTWljaGFlbCBKZW5uaW5ncyA8bWVqQHZhbGludXguY29tPgogIwogIyBFdGVybSAwLjkuMwpAQCAtMzk4Myw3ICs1MjYxLDcgQEAKICMgcmVtb3ZlIG5vbndvcmtpbmcgZmxhc2ggLVRECiAjIHJlbW92ZSBrbSBhcyBwZXIgdGFjayB0ZXN0IC1URAogRXRlcm18RXRlcm0tY29sb3J8RXRlcm0gd2l0aCB4dGVybS1zdHlsZSBjb2xvciBzdXBwb3J0IChYIFdpbmRvdyBTeXN0ZW0pLAotCWFtLCBiY2UsIGJ3LCBlbywgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCisJYW0sIGJjZSwgYncsIGVvLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwgWFQsCiAJYnRucyM1LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbG0jMCwgbmN2QCwKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCkBAIC00MDE3LDEwICs1Mjk1LDEzIEBACiBFdGVybS04OGNvbG9yfEV0ZXJtIHdpdGggODggY29sb3JzLAogCXVzZT14dGVybSs4OGNvbG9yLCB1c2U9RXRlcm0sCiAKKyMjIyMgQVRFUk0KICMgQmFzZWQgb24gcnh2dCAyLjQuOCwgaXQgaGFzIGEgZmV3IGRpZmZlcmVuY2VzIGluIGtleSBiaW5kaW5ncwogYXRlcm18QWZ0ZXJTdGVwIHRlcm1pbmFsLAorCVhULAogCWticz1cMTc3LCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgdXNlPXJ4dnQsCiAKKyMjIyMgWElURVJNCiAjIHhpdGVybSAgMC41LTUuMgogIyBUaGlzIGlzIG5vdCBiYXNlZCBvbiB4dGVybSdzIHNvdXJjZS4uLgogIyB2dHRlc3Qgc2hvd3Mgc2V2ZXJhbCBwcm9ibGVtcyB3aXRoIGtleWJvYXJkLCBjdXJzb3ItbW92ZW1lbnRzLgpAQCAtNDAyOSw0OCArNTMxMCw4IEBACiAJa21ALAogCWticz1cMTc3LCBrZGNoMT1cRVszfiwgdXNlPWtsb25lK2NvbG9yLCB1c2U9eHRlcm0tcjYsCiAKLSMgVGhlc2UgKHh0ZXJtYyBhbmQgeHRlcm1tKSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCBTb2xhcmlzLiAgVGhleSByZWZlciB0byBhCi0jIHZhcmlhbnQgb2YgeHRlcm0gd2hpY2ggaXMgYXBwYXJlbnRseSBubyBsb25nZXIgc3VwcG9ydGVkLCBidXQgYXJlIGludGVyZXN0aW5nCi0jIGJlY2F1c2UgdGhleSBpbGx1c3RyYXRlIFNWcjQgY3Vyc2VzIG1vdXNlIGNvbnRyb2xzIC0gVC5EaWNrZXkKLXh0ZXJtbXx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAobW9ub2Nyb21lKSwKLQlPVGJzLCBhbSwga20sIG1pciwgbXNnciwgeGVubCwKLQlidG5zIzMsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGlua0AsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFWzFELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLJDwzPiwgZW5hY3M9XEUoQlxFKTAsIGdldG09XEVbJXAxJWRZLAotCWhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVPRCwKLQlrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZW5kPVxFW1ksIGtmMD1cRU95LAotCWtmMTA9XEVPWSwga2YxMT1cRU9aLCBrZjEyPVxFT0EsIGtmNT1cRU9ULCBrZjY9XEVPVSwKLQlrZjc9XEVPViwga2Y4PVxFT1csIGtmOT1cRU9YLCBraG9tZT1cRVtILCBrbW91cz1cRVteXywKLQlrbnA9XEVbVSwga3BwPVxFW1YsIHJjPVxFOCwgcmVxbXA9XEVbNDkyWiwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1hY3M9Xk8sIHJtY3VwPVxFQDBcRVs/NHIsIHJtc289XEVbbSwKLQlyczE9XEU+XEVbMTszOzQ7NTs2bFxFWz83aFxFW21cRVtyXEVbMkpcRVtILAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRUAwXEVbPzRzXEVbPzRoXEVAMSwKLQlzbXNvPVxFWzdtLCB0YmM9XEVbM2csIHVzZT12dDEwMCtmbmtleXMsCiAKLXh0ZXJtY3x4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoY29sb3IpLAotCWNvbG9ycyM4LCBuY3YjNywgcGFpcnMjNjQsCi0Jb3A9XEVbMTAwbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZXRiPVxFWzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0Jc2V0Zj1cRVszJT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXVzZT14dGVybW0sCi0KLSMgRnJvbTogRGF2aWQgSi4gTWFjS2VuemllIDxkam1AdmEucHVibml4LmNvbT4gMjAgQXByIDE5OTUKLSMgSGVyZSdzIGEgdGVybWNhcCBlbnRyeSBJJ3ZlIGJlZW4gdXNpbmcgZm9yIHh0ZXJtX2NvbG9yLCB3aGljaCBjb21lcwotIyB3aXRoIEJTRC9PUyAyLjAsIGFuZCB0aGUgWDExUjYgY29udHJpYiB0YXBlIHRvbyBJIHRoaW5rLiAgQmVzaWRlcyB0aGUKLSMgY29sb3Igc3R1ZmYsIEkgYWxzbyBoYXZlIGEgc3RhdHVzIGxpbmUgZGVmaW5lZCBhcyB0aGUgd2luZG93IG1hbmFnZXIKLSMgdGl0bGUgYmFyLiBbSSBoYXZlIHRyYW5zbGF0ZWQgaXQgdG8gdGVybWluZm8gLS0gRVNSXQoteHRlcm0tcGNvbG9yfHh0ZXJtIHdpdGggY29sb3IgdXNlZCBmb3IgaGlnaGxpZ2h0cyBhbmQgc3RhdHVzIGxpbmUsCi0JYm9sZD1cRVsxbVxFWzQzbSwgcmV2PVxFWzdtXEVbMzRtLCBzbXNvPVxFWzdtXEVbMzFtLAotCXNtdWw9XEVbNG1cRVs0Mm0sIHVzZT14dGVybStzbCwgdXNlPXh0ZXJtLXI2LAotCisjIyMjIEhQVEVSTQogIyBIUCBzaGlwcyB0aGlzIChIUFVYIDkgYW5kIDEwKSwgZXhjZXB0IGZvciB0aGUgcGIjOTYwMCB3aGljaCB3YXMgbWVyZ2VkIGluCiAjIGZyb20gQlNEIHRlcm1jYXAuICAoaHB0ZXJtOiAgYWRkZWQgZW1wdHkgPGFjc2M+LCB3ZSBoYXZlIG5vIGlkZWEgd2hhdCBBQ1MKICMgY2hhcnMgbG9vayBsaWtlIC0tZXNyKQpAQCAtNDEwMywzMSArNTM0NCw3IEBACiAJaW5pdHA9XEUmdiVwMiVkYSVwMyVkYiVwNCVkYyVwNSVkeCVwNiVkeSVwNyVkeiVwMSVkSSwKIAlvcD1cRSZ2MFMsIHNjcD1cRSZ2JXAxJWRTLCB1c2U9aHB0ZXJtLAogCi0jIFRoaXMgZW50cnkgZGVzY3JpYmVzIGFuIHh0ZXJtIHdpdGggU3VuLXN0eWxlIGZ1bmN0aW9uIGtleXMgZW5hYmxlZAotIyB2aWEgdGhlIFggcmVzb3VyY2Ugc2V0dGluZyAieHRlcm0qc3VuRnVuY3Rpb25LZXlzOnRydWUiCi0jIFRvIHVuZGVyc3RhbmQgPGtmMTE+LzxrZjEyPiBub3RlIHRoYXQgTDEsTDIgYW5kIEYxMSxGMTIgYXJlIHRoZSBzYW1lLgotIyBUaGUgPGtmMTM+Li4uPGtmMjA+IGtleXMgYXJlIEwzLUwxMC4gIFdlIGRvbid0IHNldCA8a2YxNj1cRVsxOTd6PgotIyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgc2VlbiBhcyA8a2NweT4uCi0jIFRoZSA8a2YzMT4uLi48a2Y0NT4ga2V5cyBhcmUgUjEtUjE1LiAgV2UgdHJlYXQgc29tZSBvZiB0aGVzZSBpbiBhY2NvcmRhbmNlCi0jIHdpdGggdGhlaXIgU3VuIGtleWJvYXJkIGxhYmVscyBpbnN0ZWFkLgotIyBGcm9tOiBTaW1vbiBKLiBHZXJyYXR5IDxzamdAemVuLnZvaWQub3ouYXU+IDEwIEphbiAxOTk2Ci14dGVybS1zdW58eHRlcm0gd2l0aCBzdW5GdW5jdGlvbktleXMgdHJ1ZSwKLQlrYjI9XEVbMjE4eiwga2NweT1cRVsxOTd6LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLAotCWtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtkY2gxPVxFWzN6LCBrZW5kPVxFWzIyMHosCi0Ja2VudD1cRU9NLCBrZjE9XEVbMjI0eiwga2YxMD1cRVsyMzN6LCBrZjExPVxFWzE5MnosCi0Ja2YxMj1cRVsxOTN6LCBrZjEzPVxFWzE5NHosIGtmMTQ9XEVbMTk1eiwga2YxNT1cRVsxOTZ6LAotCWtmMTc9XEVbMTk4eiwga2YxOD1cRVsxOTl6LCBrZjE5PVxFWzIwMHosIGtmMj1cRVsyMjV6LAotCWtmMjA9XEVbMjAxeiwga2YzPVxFWzIyNnosIGtmMzE9XEVbMjA4eiwga2YzMj1cRVsyMDl6LAotCWtmMzM9XEVbMjEweiwga2YzND1cRVsyMTF6LCBrZjM1PVxFWzIxMnosIGtmMzY9XEVbMjEzeiwKLQlrZjM4PVxFWzIxNXosIGtmND1cRVsyMjd6LCBrZjQwPVxFWzIxN3osIGtmNDI9XEVbMjE5eiwKLQlrZjQ0PVxFWzIyMXosIGtmNDU9XEVbMjIyeiwga2Y0Nj1cRVsyMzR6LCBrZjQ3PVxFWzIzNXosCi0Ja2Y1PVxFWzIyOHosIGtmNj1cRVsyMjl6LCBrZjc9XEVbMjMweiwga2Y4PVxFWzIzMXosCi0Ja2Y5PVxFWzIzMnosIGtmbmQ9XEVbMjAweiwga2hscD1cRVsxOTZ6LCBraG9tZT1cRVsyMTR6LAotCWtpY2gxPVxFWzJ6LCBrbnA9XEVbMjIyeiwga3BwPVxFWzIxNnosIGt1bmQ9XEVbMTk1eiwKLQl1c2U9eHRlcm0tYmFzaWMsCi14dGVybXMtc3VufHNtYWxsICg4MHgyNCkgeHRlcm0gd2l0aCBzdW5GdW5jdGlvbktleXMgdHJ1ZSwKLQljb2xzIzgwLCBsaW5lcyMyNCwgdXNlPXh0ZXJtLXN1biwKLQorIyMjIyBFTVUKICMgVGhpcyBpcyBmb3IgdGhlIGV4dGVuc2libGUgdGVybWluYWwgZW11bGF0b3Igb24gdGhlIFgxMVI2IGNvbnRyaWIgdGFwZS4KICMgSXQgY29ycmVzcG9uZHMgdG8gZW11J3MgaW50ZXJuYWwgZW11bGF0aW9uOgogIwllbXUgLXRlcm0gZW11CkBAIC00MTQwLDcgKzUzNTcsNyBAQAogCWFjc2M9NjFhXDIwMmZcMjYwZzJqXDIxM2tcMjE0bFwyMTVtXDIxNm5cMjE3b1wyMjBxXDIyMnNcMjI0dFwyMjV1XDIyNnZcMjI3d1wyMzB4XDIzMX5cMjQ0LAogCWJlbD1eRywgYmxpbms9XEVXLCBib2xkPVxFVSwgY2l2aXM9XEVaLCBjbGVhcj1cRVBcRUUwOzA7LAogCWNub3JtPVxFYSwgY3I9Xk0sIGNzcj1cRWslcDElZDslcDIlZDssIGN1Yj1cRXEtJXAxJWQ7LAotCWN1YjE9XkgsIGN1ZD1cRXAlcDElZDssIGN1ZDE9XEVCLCBjdWY9XEVxJXAxJWQ7LCBjdWYxPVxFRCwKKwljdWIxPV5ILCBjdWQ9XEVwJXAxJWQ7LCBjdWQxPVxFQiwgY3VmPVxFcSVwMSVkOywgY3VmMT1cRUMsCiAJY3VwPVxFRSVwMSVkOyVwMiVkOywgY3V1PVxFcC0lcDElZDssIGN1dTE9XEVBLAogCWRjaD1cRUklcDElZDssIGRjaDE9XEVJMTssIGRsPVxFUiVwMSVkOywgZGwxPVxFUjE7LAogCWVjaD1cRWolcDElZDssIGVkPVxFTiwgZWw9XEVLLCBlbDE9XEVMLCBob21lPVxFRTA7MDssIGh0PV5JLApAQCAtNDE4OSw2ICs1NDA2LDggQEAKIAlzZ3I9XEVbMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCiAJc2dyMD1cRVttLCBzbWFjcz1eTiwgc21jdXA9XEVbPzFsXEU9LCBzbWt4PVxFPSwKIAlzbXNvPVxFWzA7N20sIHNtdWw9XEVbMDs0bSwgdGJjPVxFWzNnLAorCisjIyMjIE1WVEVSTQogIyBBIGNvbW1lcmNpYWwgcHJvZHVjdCwgUmVwb3J0ZWRseSBhIHZlcnNpb24gb2YgWHRlcm0gd2l0aCBhbiBPUEVOIExPT0sgVUksCiAjIHByaW50IGludGVyZmFjZSwgQU5TSSBYMy42NCBjb2xvdXIgZXNjYXBlIHNlcXVlbmNlcywgZXRjLiAgTmV3c2dyb3VwIHBvc3RpbmdzCiAjIGluZGljYXRlIHRoYXQgaXQgZW11bGF0ZXMgbW9yZSB0aGFuIG9uZSB0ZXJtaW5hbCwgYnV0IGluY29tcGxldGVseS4KQEAgLTQyMjMsNyArNTQ0Miw3IEBACiAJc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKIAl0c2w9XEVbP0VcRVs/JWklcDElZFQsIHVzZT12dDEwMCtmbmtleXMsCiAKLSMjIyBNVEVSTQorIyMjIyBNVEVSTQogIwogIyBUaGlzIGFwcGxpY2F0aW9uIGlzIGF2YWlsYWJsZSBieSBlbWFpbCBmcm9tIDxtb3VzZUBSb2RlbnRzLk1vbnRyZWFsLlFDLkNBPi4KICMKQEAgLTQyODUsNiArNTUwNCwzMyBAQAogCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB1Nj1cRVslaSVkOyVkUiwKIAl1Nz1cRVs2biwgdnBhPVxFWyVpJXAxJWRkLAogCisjIyMjIFZXTQorIyBodHRwOi8vdndtLnNvdXJjZWZvcmdlLm5ldC8KKyMKKyMgVldNIDIuMC4yICgyMDA5LTA1LTAxKQorIyB2d210ZXJtIGlzIGEgdGVybWluYWwgZW11bGF0b3Igd3JpdHRlbiBmb3IgdGhlIFZXTSBjb25zb2xlIHdpbmRvdyBtYW5hZ2VyLgorIyBUaGlzIHZlcnNpb24gaXMgb2Jzb2xldGUsIHJlcGxhY2VkIGJ5IGxpYnZ0ZXJtIGluIDIuMS4wICgyMDA5LTEwLTIzKS4KK3Z3bXRlcm18KHZ3bSB0ZXJtKSwKKwlhbSwgYmNlLCBjY2MsIG1pciwgbXNnciwgbnBjLCB4ZW5sLCB4b24sCisJY29sb3JzIzgsIHBhaXJzIzY0LAorCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCisJYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKKwljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsCisJY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAorCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAorCWN1dTE9XEVbQSwgY3Z2aXM9XEVbPzI1aCwgZGltPVxFWzJtLCBlZD1cRVtKLCBlbD1cRVtLLAorCWhvbWU9XEVbSCwgaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sIGtjdWIxPVxFW0QsCisJa2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbM34sCisJa2VuZD1cRVs0fiwga2YxPVxFW1tBLCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyMn4sCisJa2YxMj1cRVsyM34sIGtmMj1cRVtbQiwga2YzPVxFW1tDLCBrZjQ9XEVbW0QsIGtmNT1cRVtbRSwKKwlrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAorCWtob21lPVxFWzF+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwgcmV2PVxFWzdtLCBybWFjcz1cRVsxMG0sCisJcm1hbT1cRVs/N2wsIHJtY3VwPVxFWz8xMDQ5bCwgcnMxPVxFW0hcRVtKXEVbbVxFYywKKwlzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAorCXNncj1cRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMSU7bSwKKwlzZ3IwPVxFWzA7MTBtLCBzbWFjcz1cRVsxMW0sIHNtYW09XEVbPzdoLAorCXNtY3VwPVxFWz8xMDQ5aCwgc21zbz1cRVszbSwgc211bD1cRVs0bSwKKwogIyMjIyBNR1IKICMKICMgTUdSIGlzIGEgQmVsbCBMYWJzIHdpbmRvdyBzeXN0ZW0gbGlnaHRlci13ZWlnaHQgdGhhbiBYLgpAQCAtNDMxOSw2ICs1NTY1LDI2NCBAQAogCWtmNT1cRVtbRSwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKIAlraG9tZT1cRVsxfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIHVzZT1tZ3IsCiAKKyMjIyMgU0lNUExFVEVSTQorIyBzdC5zdWNrbGVzcy5vcmcKKyMgc3QtMC40LjEKKyMKKyMgVGhpcyB2ZXJzaW9uIHVzZXMgYSB0YWJsZSB3aGljaCBzdXBwb3J0cyBhIHNpbmdsZSBtb2RpZmllciAoYSBzdWJzZXQgb2YKKyMgeHRlcm0ncyBrZXlzLCB1c2luZyB0aGUgc2FtZSBzY2hlbWUpLiAgQmVjYXVzZSBpdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlCisjIG1vZGlmaWVyIGluIHRoaXMgdGFibGUsIGZ1bmN0aW9uIGtleXMgZjM2LWY0OCBhcmUgbm9ybWFsbHkgdW5hdmFpbGFibGUKKyMgYmVjYXVzZSB0aGV5IGFyZSBhc3NpZ25lZCB0byBtb2RpZmllci00LgorIworIyBUaGUgcHJvZ3JhbSBhc3NpZ25zIFRFUk0gdG8gbWF0Y2ggdGhlIHByb2dyYW0gbmFtZSAodGhlIHVwc3RyZWFtIHNvdXJjZSBzYXlzCisjICJzdCIsIGJ1dCBEZWJpYW4gcmVuYW1lcyBpdCB0byAic3R0ZXJtIikuCisjCisjIFRoZSBzb3VyY2UgaW5jbHVkZXMgdHdvIGVudHJpZXMgd2hpY2ggYXJlIG5vdCB1c2VmdWwgaGVyZToKKyMJc3QtbWV0YXwgc2ltcGxldGVybSB3aXRoIG1ldGEga2V5LAorIwlzdC1tZXRhLTI1NmNvbG9yfCBzaW1wbGV0ZXJtIHdpdGggbWV0YSBrZXkgYW5kIDI1NiBjb2xvcnMsCisjIGJlY2F1c2Ugc3QncyBub3Rpb24gb2YgIm1ldGEiIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gdGhlIHRlcm1pbmZvIGRlZmluaXRpb24uCisjIFJhdGhlciwgaXQgYWN0cyBsaWtlIHh0ZXJtIC0gd2hlbiB0aGUgbWV0YSBmZWF0dXJlIGlzIGRpc2FibGVkLgorIworIyBSZW1vdmVkIGludmlzIC1URAorIyBBZGRlZCBlbywgcmVtb3ZlZCB1bCAtVEQKKyMKKyMgUmV2aWV3ZWQgc3QgMC41OgorIyBpbXBsZW1lbnRzIGNvbnRyb2wtbW9kaWZpZXIsIGJ1dCBub3QgY29udHJvbC1zaGlmdCBmb3Igc3BlY2lhbCBrZXlzCisjIGltcGxlbWVudHMgYWx0LW1vZGlmaWVyLCBidXQgbm90IGFsdC1zaGlmdCBmb3Igc3BlY2lhbCBrZXlzCitzdHxzdHRlcm18IHNpbXBsZXRlcm0gMC40LjEsCisJYW0sIGJjZSwgZW8sIGhzLCBtaXIsIG1zZ3IsIHhlbmwsCisJY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3YjMywgcGFpcnMjNjQsCisJYWNzYz1gYGFhZmZnZ2lpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAorCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAorCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzEybFxFWz8yNWgsIGNyPV5NLAorCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKKwljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCisJY3Z2aXM9XEVbPzI1aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCisJZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKKwllbmFjcz1cRSkwLCBmbGFzaD1cRVs/NWhcRVs/NWwsIGZzbD1eRywgaG9tZT1cRVtILAorCWhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsCisJaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywKKwlpczI9XEVbNGxcRT5cRVs/MTAzNGwsIGtEQz1cRVszOzJ+LCBrRU5EPVxFWzE7MkYsCisJa0hPTT1cRVsxOzJILCBrSUM9XEVbMjsyfiwga0xGVD1cRVsxOzJELCBrTlhUPVxFWzY7Mn4sCisJa1BSVj1cRVs1OzJ+LCBrUklUPVxFWzE7MkMsIGthMT1cRVsxfiwga2EzPVxFWzV+LCBrYjI9XEVPdSwKKwlrYnM9XDE3Nywga2MxPVxFWzR+LCBrYzM9XEVbNn4sIGtjYnQ9XEVbWiwga2Nscj1cRVszOzV+LAorCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCisJa2RjaDE9XEVbM34sIGtkbDE9XEVbMzsyfiwga2VkPVxFWzE7NUYsIGtlbD1cRVsxOzJGLAorCWtlbmQ9XEVbNH4sIGtlbnQ9XEVPTSwga2YxPVxFT1AsIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwKKwlrZjEyPVxFWzI0fiwga2YxMz1cRVsxOzJQLCBrZjE0PVxFWzE7MlEsIGtmMTU9XEVbMTsyUiwKKwlrZjE2PVxFWzE7MlMsIGtmMTc9XEVbMTU7Mn4sIGtmMTg9XEVbMTc7Mn4sCisJa2YxOT1cRVsxODsyfiwga2YyPVxFT1EsIGtmMjA9XEVbMTk7Mn4sIGtmMjE9XEVbMjA7Mn4sCisJa2YyMj1cRVsyMTsyfiwga2YyMz1cRVsyMzsyfiwga2YyND1cRVsyNDsyfiwKKwlrZjI1PVxFWzE7NVAsIGtmMjY9XEVbMTs1USwga2YyNz1cRVsxOzVSLCBrZjI4PVxFWzE7NVMsCisJa2YyOT1cRVsxNTs1fiwga2YzPVxFT1IsIGtmMzA9XEVbMTc7NX4sIGtmMzE9XEVbMTg7NX4sCisJa2YzMj1cRVsxOTs1fiwga2YzMz1cRVsyMDs1fiwga2YzND1cRVsyMTs1fiwKKwlrZjM1PVxFWzIzOzV+LCBrZjM2PVxFWzI0OzV+LCBrZjM3PVxFWzE7NlAsIGtmMzg9XEVbMTs2USwKKwlrZjM5PVxFWzE7NlIsIGtmND1cRU9TLCBrZjQwPVxFWzE7NlMsIGtmNDE9XEVbMTU7Nn4sCisJa2Y0Mj1cRVsxNzs2fiwga2Y0Mz1cRVsxODs2fiwga2Y0ND1cRVsxOTs2fiwKKwlrZjQ1PVxFWzIwOzZ+LCBrZjQ2PVxFWzIxOzZ+LCBrZjQ3PVxFWzIzOzZ+LAorCWtmNDg9XEVbMjQ7Nn4sIGtmNDk9XEVbMTszUCwga2Y1PVxFWzE1fiwga2Y1MD1cRVsxOzNRLAorCWtmNTE9XEVbMTszUiwga2Y1Mj1cRVsxOzNTLCBrZjUzPVxFWzE1OzN+LCBrZjU0PVxFWzE3OzN+LAorCWtmNTU9XEVbMTg7M34sIGtmNTY9XEVbMTk7M34sIGtmNTc9XEVbMjA7M34sCisJa2Y1OD1cRVsyMTszfiwga2Y1OT1cRVsyMzszfiwga2Y2PVxFWzE3fiwga2Y2MD1cRVsyNDszfiwKKwlrZjYxPVxFWzE7NFAsIGtmNjI9XEVbMTs0USwga2Y2Mz1cRVsxOzRSLCBrZjc9XEVbMTh+LAorCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwKKwlraWwxPVxFWzI7NX4sIGtpbmQ9XEVbMTsyQiwga21vdXM9XEVbTSwga25wPVxFWzZ+LAorCWtwcD1cRVs1fiwga3JpPVxFWzE7MkEsIGtybWlyPVxFWzI7Mn4sIG9wPVxFWzM5OzQ5bSwKKwlyYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCByaXRtPVxFWzIzbSwgcm1hY3M9XEUoQiwKKwlybWN1cD1cRVs/MTA0OWwsIHJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzI3bSwKKwlybXVsPVxFW20sIHJzMT1cRWMsIHJzMj1cRVs0bFxFPlxFWz8xMDM0bCwgc2M9XEU3LAorCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCisJc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAorCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKKwlzZ3I9JT8lcDkldFxFKDAlZVxFKEIlO1xFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSwKKwlzZ3IwPVxFWzBtLCBzaXRtPVxFWzNtLCBzbWFjcz1cRSgwLCBzbWN1cD1cRVs/MTA0OWgsCisJc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCisJdGJjPVxFWzNnLCB0c2w9XEVdMDssIHU2PVxFWyVpJWQ7JWRSLCB1Nz1cRVs2biwKKwl1OD1cRVs/MTsyYywgdTk9XEVbYywgdnBhPVxFWyVpJXAxJWRkLAorIworIyBzdC0wLjEuMQorIworIyBOb3RlOiAgdGhlIG9yaWdpbmFsIHRlcm1pbmZvIGRlc2NyaXB0aW9uIHVzZXMgbGVhZGluZyBibGFuayB0byBwZXJzdWFkZQorIyBuY3Vyc2VzIHRvIHVzZSAic3QiIGFzIGl0cyBuYW1lLiAgUHJvcGVyIGZpeCBmb3IgdGhhdCBpcyB0byB1c2UgInN0IiBhcyBhbgorIyBhbGlhcy4KKyMKKyMgUmVhZGluZyB0aGUgY29kZSBzaG93cyBpdCBzaG91bGQgd29yayBmb3IgYWl4dGVybSAxNi1jb2xvcnMKKyMgLSBhZGRlZCBzdC0xNmNvbG9yCisjCisjIFVzaW5nIHRhY2s6CisjIC0gc2V0IGVvIChlcmFzZS1vdmVyc3RyaWtlKQorIyAtIHNldCB4ZW5sCisjIC0gdGJjIGRvZXNuJ3Qgd29yaworIyAtIGh0cyB3b3JrcworIyAtIGNidCBkb2Vzbid0IHdvcmsKKyMgLSBzaGlmdGVkIGN1cnNvci1rZXlzIHNlbmQgc2VxdWVuY2VzIGxpa2Ugcnh2dAorIyAtIHNnciByZWZlcnJlZCB0byB1bmltcGxlbWVudGVkICJpbnZpcyIgbW9kZS4KKyMgRml4ZXM6IGFkZCBlbyBhbmQgeGVubCBwZXIgdGFjaywgcmVtb3ZlIG5vbndvcmtpbmcgY2J0LCBodHMgYW5kIHRiYywgaW52aXMKK3NpbXBsZXRlcm18b2xkLXN0fCBzaW1wbGV0ZXJtIDAuMS4xLAorCWFtLCBlbywgbWlyLCBtc2dyLCB1bCwgeGVubCwKKwljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIG5jdiMzLCBwYWlycyM2NCwKKwlhY3NjPWBgYWFmZmdnaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCisJYmVsPV5HLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLCBjbGVhcj1cRVtIXEVbMkosCisJY25vcm09XEVbPzEybFxFWz8yNWgsIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCisJY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAorCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAorCWRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKKwlob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGljaD1cRVslcDElZEAsCisJaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywga2JzPVwxNzcsCisJa2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKKwlrZGNoMT1cRVszfiwga2VuZD1cRVs0fiwga2YxPVxFT1AsIGtmMTA9XEVbMjF+LAorCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywKKwlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAorCWtob21lPVxFWzF+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwgb3A9XEVbMzc7NDBtLCByYz1cRTgsCisJcmV2PVxFWzdtLCBybWFjcz1cRShCLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LAorCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCisJc2dyPSU/JXA5JXRcRSgwJWVcRShCJTtcRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTttLAorCXNncjA9XEVbMG0sIHNtYWNzPVxFKDAsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCitzdC0xNmNvbG9yfHN0dGVybS0xNmNvbG9yfHNpbXBsZXRlcm0gd2l0aCAxNi1jb2xvcnMsCisJdXNlPWlibSsxNmNvbG9yLCB1c2U9c3QsCisjIDI1NiBjb2xvcnMgIndvcmtzIiwgYnV0IHdoZW4gcnVubmluZyB4dGVybSdzIHRlc3Qtc2NyaXB0cywgc29tZSBnYXJiYWdlIGlzCisjIHNob3duIGluIHRoZSB0aXRsZWJhci4KKyMKKyMgdGVybWluYWwgd2FudHMgdG8gdXNlIFRFUk09c3R0ZXJtLTI1NmNvbG9yLCBidXQgdGhhdCBpcyBsb25nZXIgdGhhbiAxNAorIyBjaGFyYWN0ZXJzLCBtYWtpbmcgdGhlIGNob2ljZSBub25wb3J0YWJsZS4KK3N0LTI1NmNvbG9yfHN0dGVybS0yNTZjb2xvcnxzaW1wbGV0ZXJtIHdpdGggMjU2IGNvbG9ycywKKwl1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1zdCwKKworIyMjIyBURVJNSU5BVE9SCisjIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvamVzc2llcy8KKyMgVGVzdGVkIHVzaW5nIHRoZWlyIERlYmlhbiBwYWNrYWdlIG9yZy5qZXNzaWVzLnRlcm1pbmF0b3IgNi4xMDQuMzI1NiBvbiA2NC1iaXQKKyMgRGViaWFuL2N1cnJlbnQgLVREICgyMDExLzgvMjApCisjCisjIFRoZXJlIGFyZSBzb21lIHBhY2thZ2luZyBwcm9ibGVtczoKKyMgYSkgdXNpbmcgSmF2YSwgdGhlIHByb2dyYW0gc3RhcnRzIG9mZiB1c2luZyA1ME1iLCBhbmQgY2xpbWJzIGZyb20gdGhlcmUsCisjICAgIHVwIHRvIDExNE1iIGFmdGVyIHRlc3RpbmcgKG5vIHNjcm9sbGJhY2spLgorIyBiKSBpdCBpbnNpc3RzIG9uIHJlaW5zdGFsbGluZyBpdHMgdGVybWluYWwgZGVzY3JpcHRpb24gaW4gJEhPTUUvLnRlcm1pbmZvCisjICAgICh0d28gY29waWVzLCBqdXN0IGluIGNhc2UgdGhlIGhvc3QgaGFwcGVucyB0byBiZSBNYWMgT1MgWCkuCisjICAgIEkgZGVsZXRlZCB0aGlzIGFmdGVyIHRlc3Rpbmcgd2l0aCB0YWNrLgorIworIyBJc3N1ZXMvZmVhdHVyZXMgZm91bmQgd2l0aCB0YWNrOgorIyBhKSB0YmMgZG9lcyBub3Qgd29yayAoaW1wbHlpbmcgdGhhdCBodHMgYWxzbyBpcyBicm9rZW4pLgorIyAgICBDb21wYXJpbmcgd2l0aCB0aGUgdGFicyB1dGlsaXR5IHNob3dzIGEgcHJvYmxlbSB3aXRoIHRoZSBsYXN0IHRhYnN0b3Agb24KKyMgICAgYSBsaW5lLgorIyBiKSBoYXMgeHRlcm0tc3R5bGUgc2hpZnRlZCBmdW5jdGlvbi1rZXkgc3RyaW5ncworIyAgICBtZXRhIGFsc28gaXMgdXNlZCwgYnV0IGNvbnRyb2wgaXMgaWdub3JlZC4KKyMgYykgaGFzIHh0ZXJtLXN0eWxlIG1vZGlmaWVycyBmb3IgY3Vyc29yIGtleXMgKHNoaWZ0LCBjb250cm9sLCBzaGlmdCtjb250cm9sLCBtZXRhKQorIyBkKSBzb21lIGNvbWJpbmF0aW9ucyBvZiBzaGlmdC9jb250cm9sIHNlbmQgeHRlcm0tc3R5bGUgc2VxdWVuY2VzIGZvcgorIyAgICBpbnNlcnQvZGVsZXRlL2hvbWUvZW5kLgorIyBlKSBudW1lcmljIGtleXBhZCBzZW5kcyBvbmx5IG51bWJlcnMgKGNvbXBhcmUgd2l0aCB2dHRlc3QpLgorIyBmKSBtZXRhIG1vZGUgKGttKSBpcyBub3QgaW1wbGVtZW50ZWQuCisjCisjIElzc3VlcyBmb3VuZCB3aXRoIG5jdXJzZXMgdGVzdC1wcm9ncmFtOgorIyBhKSBiY2UgaXMgaW5jb25zaXN0ZW50bHkgaW1wbGVtZW50ZWQKKyMgYikgd2lkdGhzIG9mIFVuaWNvZGUgdmFsdWVzIGFib3ZlIDI1NiBkbyBub3QgYWx3YXlzIGFncmVlIHdpdGggd2N3aWR0aC4KKyMKKyMgQ2hlY2tlZCB3aXRoIHZ0dGVzdCwgZm91bmQgbG93IGRlZ3JlZSBvZiBjb21wYXRpYmlsaXR5IHRoZXJlLgorIworIyBDaGVja2VkIHdpdGggeHRlcm0ncyBzY3JpcHRzLCBmb3VuZCB0aGF0IHRoZSAyNTYtY29sb3IgcGFsZXR0ZSBpcyBmaXhlZC4KKyMKKyMgRml4ZXM6CisjIGEpIGFkZCBzZ3Igc3RyaW5nCisjIGIpIGNvcnJlY3RlZCBzZ3IwIHRvIHJlc2V0IGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0CisjIGMpIG1vZGlmaWVkIHNtYWNzL3JtYWNzIHRvIHVzZSBTQ1MgcmF0aGVyIHRoYW4gU0kvU08KKyMgZCkgcmVtb3ZlZCBiY2UKKyMgZSkgcmVtb3ZlZCBrbQordGVybWluYXRvcnxUZXJtaW5hdG9yIG5vIGxpbmUgd3JhcCwKKwllbywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCisJY29sb3JzIzI1NiwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIGxtIzAsIHBhaXJzIzMyNzY3LAorCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCisJYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwgY2xlYXI9XEVbSFxFWzJKLAorCWNub3JtPVxFWz8yNWgsIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCisJY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKKwljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKKwljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKKwlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCisJZW5hY3M9XEUoQlxFKTAsIGZsYXNoPV5HLCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywKKwlodD1eSSwgaHRzPVxFSCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLAorCWlzMT1cRVs/NDdsXEU9XEVbPzFsLAorCWlzMj1cRVtyXEVbbVxFWzJKXEVbSFxFWz83aFxFWz8xOzM7NDs2bFxFWzRsLCBrYnM9XkgsCisJa2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKKwlrZGNoMT1cRVszfiwga2VuZD1cRVs0fiwga2YxPVxFT1AsIGtmMTA9XEVbMjF+LAorCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAorCWtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywKKwlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAorCWtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCisJb3A9XEVbMzk7NDltLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFjcz1cRShCLAorCXJtY3VwPVxFWz80N2xcRTgsIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKKwlyczE9XEU+XEVbMTszOzQ7NTs2bFxFWz83aFxFW21cRVtyXEVbMkpcRVtILAorCXJzMj1cRVtyXEVbbVxFWzJKXEVbSFxFWz83aFxFWz8xOzM7NDs2bFxFWzRsXEU+LAorCXMwZHM9XEUoQiwgczFkcz1cRSgwLCBzYz1cRTcsIHNldGFiPVxFWzQ4OzU7JXAxJWRtLAorCXNldGFmPVxFWzM4OzU7JXAxJWRtLAorCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7LAorCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAsIHNtY3VwPVxFN1xFWz80N2gsIHNtaXI9XEVbNGgsCisJc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLCB2cGE9XEVbJWklcDElZGQsCisJdXNlPXh0ZXJtK3NsLXR3bSwKKworIyMjIyBURVJNSU5PTE9HWQorIyBodHRwOi8vZW5saWdodGVubWVudC5vcmcKKyMKKyMgVGVzdGVkIHRlcm1pbm9sb2d5LTAuMy4wLCAwLjYuMSwgdXNpbmcgdGFjayBhbmQgdnR0ZXN0LiAgVGhpcyBpcyBub3QgYSB2dDEwMAorIyBlbXVsYXRvciwgbm9yIGlzIGl0IGNvbXBhdGlibGUgd2l0aCB4dGVybSwgYnV0IGl0IHVzZXMgYSBmZXcgZmVhdHVyZXMgZnJvbQorIyBib3RoIC1URAorIworIyBHZW5lcmFsIGNvbW1lbnRzOgorIwljdXJzb3IgZG9lcyBub3QgZmlsbCBvbiBmb2N1cworIwl0aGVyZSBhcmUgcGVydmFzaXZlIHByb2JsZW1zIHdpdGggY2xlYXJpbmcvZXJhc2luZyBwYXJ0cyBvZiB0aGUgc2NyZWVuCisjCXJlc2l6aW5nIHRoZSB3aW5kb3cgY2F1c2VzIGl0IHRvIHN0b3AgbGlzdGVuaW5nIHRvIHRoZSBrZXlib2FyZAorIyB0YWNrIC0KKyMJZG9lc24ndCB1bmRlcnN0YW5kIHZ0MTAwIENQUiBuZWVkZWQgZm9yIHJlc2l6ZQorIwlubyBDQlQKKyMJbm8gY3Z2aXMKKyMJaGFzIGludmlzCisjCW5vIGJsaW5rCisjCXVzZXMgYmNlIG1vZGVsIGZvciBjb2xvcnMsIGJ1dCAoc2VlIGJlbG93KSBmYWlscyB0aGUgdnR0ZXN0IHNjcmVlbnMKKyMJaGFzIHBhcnRpYWwgc3VwcG9ydCBmb3IgMjU2Y29sb3IgZmVhdHVyZS4KKyMJdGFjayBmdW5jdGlvbi1rZXlzIChhIHN1YnNldCBvZiB4dGVybStwY2YwKSwgYW5kCisjCXRhY2sgY3Vyc29yLWtleXMgKGEgc3Vic2V0IG9mIHh0ZXJtK3BjZTIpOgorIwkJCWN0cmwrc2hpZnQgKGlnbm9yZWQpCisjCQkyCXNoaWZ0CisjCQkJc2hpZnQtYWx0IG1vZGlmaWVyIC0+IHNoaWZ0ICgyKQorIwkJMwlhbHQKKyMJCTQKKyMJCTUJY3RybAorIwl0YWNrIG1vZGlmaWVycyBkaWQgbm90IHdvcmsgZm9yIGZrZXlzIGluIDAuMy4wOyBzdWJzZXQgd29ya3MgaW4gMC42LjEKKyMJY3RybCArIGtob21lL2tlbmQgd29ya3MgLSBub25lIG9mIHRoZSBvdGhlciBtb2RpZmllcnMgZG8KKyMgdnR0ZXN0IC0KKyMJc3BpdHMgbG90cyBvZiBtZXNzYWdlcyBmcm9tIHRlcm1wdHllc2MuYyBlc3BlY2lhbGx5IGluIHZ0dGVzdC4KKyMJbm8gMTMyLWNvbHVtbiBtb2RlCisjCWZhaWxzIG1lbnUgMSwgMiAoZGVmaW5pdGVseSBub3QgdnQxMDAtY29tcGF0aWJsZSkKKyMJcHJpbWFyeSAoY2xhaW1zIHZ0NDIwIHdpdGggc2V2ZXJhbCBvcHRpb25zLCBhcHBhcmVudGx5IG5vbmUgd29yaykgYW5kCisjCXNlY29uZGFyeSByZXBvcnQgc2F5cyAocGVyaGFwcy4uLiB2dDQyMCk6IFxFWz40MTsyODU7MGMKKyMJQ0hBLCBIUFIsIFZQQSwgQ05MLCBDUEwgd29yaworIwlCQ0Ugd2l0aCBFRC9FTCAtIGZhaWwKKyMJQkNFIHdpdGggRUNIL2luZGV4aW5nIC0gZmFpbAorIwlTRC9TVSB3b3JrCisjCXVubGlrZSB0ZWtlbiwgYmFja2dyb3VuZCBsaWdodC9kYXJrIHdvcmtzCisjCWNhbiBzZXQgdGl0bGUKKyMJWDEwIGFuZCBOb3JtYWwgbW91c2Ugd29yaworIwlBbnktZXZlbnQgbW91c2Ugd29ya3MKKyMJTW91c2UgYnV0dG9uLWV2ZW50IHdvcmtzCisjCisjIFRoaXMgZGVzY3JpcHRpb24gdXNlcyB4dGVybStwY2YwLCB3aGljaCBpcyBtaXNsZWFkaW5nIGJlY2F1c2UgdGhlIHByb2dyYW0KKyMgZG9lcyBub3QgaGFuZGxlIGNvbWJpbmF0aW9ucyBvZiBtb2RpZmllcnMgLSBidXQgbGlzdGluZyB0aGVtIGFsbCB3b3VsZAorIyBpbnZvbHZlIG1vcmUgZWZmb3J0IHRoYW4gaXRzIGRldmVsb3BlcnMgc3BlbnQgLVRECit0ZXJtaW5vbG9neXxFRkwtYmFzZWQgdGVybWluYWwgZW11bGF0b3IsCisJbWM1aUAsIHhvbkAsCisJYmxpbmtALCBlZEAsIGVsQCwgZWwxQCwgaW52aXM9XEVbOG0sIGtMRlQ9XEVbMTsyRCwKKwlrUklUPVxFWzE7MkMsIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sCisJa2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKKwlraW5kPVxFWzE7MkIsIGtyaT1cRVsxOzJBLAorCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTskPDI+LAorCXZwYT1cRVslaSVwMSVkZCwga0RDMz1cRVszOzN+LCBrREM0PVxFWzM7NH4sCisJa0RDNT1cRVszOzV+LCBrREM2PVxFWzM7Nn4sIGtEQzc9XEVbMzs3fiwga0ROPVxFWzE7MkIsCisJa0ROMz1cRVsxOzNCLCBrRE40PVxFWzE7NEIsIGtETjU9XEVbMTs1Qiwga0RONj1cRVsxOzZCLAorCWtETjc9XEVbMTs3Qiwga0VORDU9XEVbMTs1Riwga0hPTTU9XEVbMTs1SCwKKwlrTEZUMz1cRVsxOzNELCBrTEZUND1cRVsxOzRELCBrTEZUNT1cRVsxOzVELAorCWtMRlQ2PVxFWzE7NkQsIGtMRlQ3PVxFWzE7N0QsIGtSSVQzPVxFWzE7M0MsCisJa1JJVDQ9XEVbMTs0Qywga1JJVDU9XEVbMTs1Qywga1JJVDY9XEVbMTs2QywKKwlrUklUNz1cRVsxOzdDLCBrVVA9XEVbMTsyQSwgdXNlPXh0ZXJtK3BjZjAsIHVzZT12dDEwMCwKKwl1c2U9eHRlcm0rMjU2c2V0YWYsCisKICMjIyMjIyMjIFVOSVggVklSVFVBTCBURVJNSU5BTFMsIFZJUlRVQUwgQ09OU09MRVMsIEFORCBURUxORVQgQ0xJRU5UUwogIwogCkBAIC00MzQyLDYgKzU4NDYsOCBAQAogCWN1cD1cRUclcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIHJtc289XEViJCwgcm11bD1cRWIhLAogCXNtc289XEVhJCwgc211bD1cRWEhLCB1c2U9Y2J1bml4LAogCisjIyMjIEVtYWNzCisKICMgVGhlIGNvZGVzIHN1cHBvcnRlZCBieSB0aGUgdGVybS5lbCB0ZXJtaW5hbCBlbXVsYXRpb24gaW4gR05VIEVtYWNzIDE5LjMwCiBldGVybXxnbnUgZW1hY3MgdGVybS5lbCB0ZXJtaW5hbCBlbXVsYXRpb24sCiAJYW0sIG1pciwgeGVubCwKQEAgLTQzNTcsNiArNTg2MywyOCBAQAogCXNncjA9XEVbbSwgc21jdXA9XEU3XEVbPzQ3aCwgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwKIAlzbXVsPVxFWzRtLAogCisjIFRoZSBjb2RlcyBzdXBwb3J0ZWQgYnkgdGhlIHRlcm0uZWwgdGVybWluYWwgZW11bGF0aW9uIGluIEdOVSBFbWFjcyAyMi4yCitldGVybS1jb2xvcnxFbWFjcyB0ZXJtLmVsIHRlcm1pbmFsIGVtdWxhdG9yIHRlcm0tcHJvdG9jb2wtdmVyc2lvbiAwLjk2LAorCWFtLCBtaXIsIG1zZ3IsIHhlbmwsCisJY29sb3JzIzgsIGNvbHMjODAsIGxpbmVzIzI0LCBwYWlycyM2NCwKKwliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sCisJY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAorCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKKwljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKKwlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCisJZWw9XEVbSywgZWwxPVxFWzFLLCBob21lPVxFW0gsIGh0PV5JLCBpY2g9XEVbJXAxJWRALAorCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sIGticz1cMTc3LAorCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCisJa2RjaDE9XEVbM34sIGtlbmQ9XEVbNH4sIGtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwKKwlrbnA9XEVbNn4sIGtwcD1cRVs1fiwgb3A9XEVbMzk7NDltLCByYz1cRTgsIHJldj1cRVs3bSwKKwlyaT1cRU0sIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwgcnMxPVxFYywKKwlzYz1cRTcsIHNldGFiPVxFWyVwMSUnKCclKyVkbSwgc2V0YWY9XEVbJXAxJXszMH0lKyVkbSwKKwlzZ3I9XEVbMCU/JXAxJXAzJXwldDs3JTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglO20sCisJc2dyMD1cRVttLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAorCXU2PVxFWyVpJWQ7JWRSLCB1Nz1cRVs2biwKKworIyMjIyBTY3JlZW4KKwogIyBFbnRyaWVzIGZvciB1c2UgYnkgdGhlIGBzY3JlZW4nIHByb2dyYW0gYnkgSnVlcmdlbiBXZWlnZXJ0LAogIyBNaWNoYWVsIFNjaHJvZWRlciwgT2xpdmVyIExhdW1hbm4uICBUaGUgc2NyZWVuIGFuZAogIyBzY3JlZW4tdyBlbnRyaWVzIGNhbWUgd2l0aCB2ZXJzaW9uIDMuNy4xLiAgVGhlIHNjcmVlbjIgYW5kIHNjcmVlbjMgZW50cmllcwpAQCAtNDM3MSwzNiArNTg5OSw4NiBAQAogIyAgICAgIFMwICAgKHN0cikgICBTd2l0Y2ggY2hhcnNldCAnRzAnIHRvIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4KICMgICAgICBFMCAgIChzdHIpICAgU3dpdGNoIGNoYXJzZXQgJ0cwJyBiYWNrIHRvIHN0YW5kYXJkIGNoYXJzZXQuCiAjCi0jIHRlc3RlZCB3aXRoIHNjcmVlbiAzLjA5LjA4CisjIEluaXRpYWxseSB0ZXN0ZWQgd2l0aCBzY3JlZW4gMy4wOS4wOAorIworIyBBY2NvcmRpbmcgdG8gaXRzIG1hbnVhbCBwYWdlCisjCisjICAgICAgU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsCisjICAgICAgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIHByb2Nlc3NlcyAodHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscykuICBFYWNoCisjICAgICAgdmlydHVhbCB0ZXJtaW5hbCBwcm92aWRlcyB0aGUgZnVuY3Rpb25zIG9mIGEgREVDIFZUMTAwIHRlcm1pbmFsIGFuZCwgaW4KKyMgICAgICBhZGRpdGlvbiwgc2V2ZXJhbCBjb250cm9sIGZ1bmN0aW9ucyBmcm9tIHRoZSBJU08gNjQyOSAoRUNNQSA0OCwgQU5TSQorIyAgICAgIFgzLjY0KSBhbmQgSVNPIDIwMjIgc3RhbmRhcmRzIChlLmcuICBpbnNlcnQvZGVsZXRlIGxpbmUgYW5kIHN1cHBvcnQgZm9yCisjICAgICAgbXVsdGlwbGUgY2hhcmFjdGVyIHNldHMpLgorIworIyBIb3dldmVyLCB0aGVyZSBpcyBhIGRlc2lnbiBlcnJvciBpbiBpdHMgc3VwcG9ydCBmb3IgdmlkZW8gaGlnaGxpZ2h0cy4gIFRoZQorIyBwcm9ncmFtIHVzZXMgYSB0YWJsZSAocmVuZGxpc3QpIHdoaWNoIGVxdWF0ZXMgdGhlIFNHUiBjb2RlcyB0byB0ZXJtaW5hbAorIyBjYXBhYmlsaXRpZXMuICBUaGF0LCBhbmQgY29sb3ItZGVjb2RpbmcgYXJlIGhhcmRjb2RlZCBpbiBzY3JlZW47IGl0cyBiZWhhdmlvcgorIyBpcyBtb2RpZmllZCBvbmx5IGJ5IHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNhcGFiaWxpdGllcy4KKyMgTm90IGJ5IHRoZWlyIHZhbHVlcy4KKyMKKyMgSWYgc2NyZWVuIHNldHMgdGhlIFRFUk1DQVAgdmFyaWFibGUsIGl0IHVzZXMgaGFyZGNvZGVkIHN0cmluZ3Mgd2hpY2gKKyMgY29ycmVzcG9uZCB0byB0aGUgcmVuZGxpc3QgdGFibGUuCisjCisjIFRoZSB0YWJsZSBnaXZlcyB0aGlzIGluZm9ybWF0aW9uOgorIworIwlTR1IJY2FwYWJpbGl0eQorIwktLS0JLS0tLS0tLS0tCisjCTEJYm9sZAorIwkyCWRpbQorIwkzCXN0YW5kb3V0CisjCTQJdW5kZXJsaW5lCisjCTUJYmxpbmsKKyMJLQkodW51c2VkIDYpCisjCTcJcmV2ZXJzZQorIwktCSh1bnVzZWQgOC0yMSkKKyMJMjIJcmVzZXQgYm9sZCwgc3RhbmRvdXQgYW5kIGRpbQorIwkyMwlyZXNldCBzdGFuZG91dAorIwkyNAlyZXNldCB1bmRlcmxpbmUKKyMJMjUJcmVzZXQgYmxpbmsKKyMJLQkodW51c2VkIDI2KQorIwkyNwlyZXNldCByZXZlcnNlCisjCisjIEVDTUEtNDggZGlmZmVycyBmcm9tIHRoaXM6IDMgYW5kIDIzIHNldCBhbmQgcmVzZXQgaXRhbGljcywgcmVzcGVjdGl2ZWx5LgorIyBFQ01BLTQ4IGRvZXMgbm90IGRlZmluZSAic3RhbmRvdXQiIC0gdGhhdCBpcyBhIHRlcm1jYXAvdGVybWluZm8gYWJzdHJhY3Rpb24uCisjIFdpdGhvdXQgc29tZSByZWRlc2lnbiBvZiBzY3JlZW4sIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBleHRlbmQgdGhlIHNldCBvZgorIyBjYXBhYmlsaXRpZXMuICBTdWJzdGl0dXRpb24gd291bGQgYmUgcG9zc2libGUsIGUuZy4sIHNlbmRpbmcgaXRhbGljcyBpbgorIyBwbGFjZSBvZiB1bmRlcmxpbmUuCisjCisjIEJlY2F1c2Ugc2NyZWVuIHVzZXMgaGFyZC1jb2RlZCBwYXJzaW5nLCBpdCBkb2VzIG5vdCBjaGVjayBpZiB0d28gY2FwYWJpbGl0aWVzCisjIHVzZSB0aGUgc2FtZSB2YWx1ZS4gIEZvciBleGFtcGxlLCBjaGFuZ2luZyBzdGFuZG91dCB0byBiZSB0aGUgc2FtZSBhcyBhbnkgb2YKKyMgdGhlIG90aGVyIGNhcGFiaWxpdGllcyB3aWxsIGNvbmZ1c2Ugc2NyZWVuLiAgQ3Vyc2VzIGFwcGxpY2F0aW9ucyB3aGljaCB1c2UKKyMgc2dyIGFyZSBub3QgaW1wYWN0ZWQgKGJlY2F1c2UgdGhhdCB1c3VhbGx5IHJlc2V0cyBhbGwgY2FwYWJpbGl0aWVzIGJlZm9yZQorIyBzZXR0aW5nIGFueSksIGJ1dCB0ZXJtY2FwIGFwcGxpY2F0aW9ucyBkbyBub3QgdXNlIHNnciAtVEQKIHNjcmVlbnxWVCAxMDAvQU5TSSBYMy42NCB2aXJ0dWFsIHRlcm1pbmFsLAogCU9UYnMsIE9UcHQsIGFtLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLCBHMCwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LAorCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbmN2QCwgcGFpcnMjNjQsIFU4IzEsCiAJYWNzYz0rK1wsXCwtLS4uMDBgYGFhZmZnZ2hoaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCiAJYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCiAJY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWzM0aFxFWz8yNWgsIGNyPV5NLAogCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKIAljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCiAJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFTSwKLQljdnZpcz1cRVszNGwsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKEJcRSkwLAotCWZsYXNoPVxFZywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGlzMj1cRSkwLCBrYnM9XkgsIGtjYnQ9XEVbWiwKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjE9XEVPUCwga2YxMD1cRVsyMX4sCisJY3Z2aXM9XEVbMzRsLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwKKwlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCisJZW5hY3M9XEUoQlxFKTAsIGZsYXNoPVxFZywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwKKwlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGlzMj1cRSkwLAorCWticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAorCWtjdXUxPVxFT0EsIGtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjE9XEVPUCwga2YxMD1cRVsyMX4sCiAJa2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLAogCWtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCiAJa2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbW91cz1cRVtNLCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKIAluZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFjcz1eTywKIAlybWN1cD1cRVs/MTA0OWwsIHJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzIzbSwKIAlybXVsPVxFWzI0bSwgcnMyPVxFY1xFWz8xMDAwbFxFWz8yNWgsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDEldDszJTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOywKKwlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDEldDszJTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAogCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRVs/MTA0OWgsIHNtaXI9XEVbNGgsCiAJc21reD1cRVs/MWhcRT0sIHNtc289XEVbM20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywgRTA9XEUoQiwKIAlTMD1cRSglcDElYywgdXNlPWVjbWErY29sb3IsCiAjIFRoZSBiY2UgYW5kIHN0YXR1cy1saW5lIGVudHJpZXMgYXJlIGZyb20gc2NyZWVuIDMuOS4xMyAoYW5kIHJlcXVpcmUgc29tZQogIyBjaGFuZ2VzIHRvIC5zY3JlZW5yYykuCiBzY3JlZW4tYmNlfFZUIDEwMC9BTlNJIFgzLjY0IHZpcnR1YWwgdGVybWluYWwgd2l0aCBiY2UsCi0JYmNlLCB1c2U9c2NyZWVuLAorCWJjZSwKKwllY2hALCB1c2U9c2NyZWVuLAogc2NyZWVuLXN8VlQgMTAwL0FOU0kgWDMuNjQgdmlydHVhbCB0ZXJtaW5hbCB3aXRoIGhhcmRzdGF0dXMgbGluZSwKIAlkc2w9XEVfXEVcXCwgZnNsPVxFXFwsIHRzbD1cRV8sIHVzZT1zY3JlZW4sCiAKQEAgLTQ0MjEsMjcgKzU5OTksMzggQEAKIHNjcmVlbi0xNmNvbG9yLWJjZXxHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzIGFuZCBCQ0UsCiAJdXNlPWlibSsxNmNvbG9yLCB1c2U9c2NyZWVuLWJjZSwKIAotc2NyZWVuLTE2Y29sb3ItYmNlLXN8R05VIFNjcmVlbiB3aXRoIDE2IGNvbG9ycywgQkNFLCBhbmQgc3RhdHVzIGxpbmUsCitzY3JlZW4tMTZjb2xvci1iY2Utc3xHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzIHVzaW5nIEJDRSBhbmQgc3RhdHVzIGxpbmUsCiAJYmNlLCB1c2U9aWJtKzE2Y29sb3IsIHVzZT1zY3JlZW4tcywKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEVudHJpZXMgZm9yIEdOVSBTY3JlZW4gNC4wMiB3aXRoIC0tZW5hYmxlLWNvbG9yczI1Ni4KIAogc2NyZWVuLTI1NmNvbG9yfEdOVSBTY3JlZW4gd2l0aCAyNTYgY29sb3JzLAotCWNjY0AsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1zY3JlZW4sCisJdXNlPXh0ZXJtKzI1NnNldGFmLCB1c2U9c2NyZWVuLAogCiBzY3JlZW4tMjU2Y29sb3Itc3xHTlUgU2NyZWVuIHdpdGggMjU2IGNvbG9ycyBhbmQgc3RhdHVzIGxpbmUsCi0JY2NjQCwKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXNjcmVlbi1zLAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPXNjcmVlbi1zLAogCiBzY3JlZW4tMjU2Y29sb3ItYmNlfEdOVSBTY3JlZW4gd2l0aCAyNTYgY29sb3JzIGFuZCBCQ0UsCi0JY2NjQCwKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXNjcmVlbi1iY2UsCisJYmNlLCB1c2U9eHRlcm0rMjU2c2V0YWYsIHVzZT1zY3JlZW4tYmNlLAogCi1zY3JlZW4tMjU2Y29sb3ItYmNlLXN8R05VIFNjcmVlbiB3aXRoIDI1NiBjb2xvcnMsIEJDRSwgYW5kIHN0YXR1cyBsaW5lLAotCWJjZSwgY2NjQCwKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXNjcmVlbi1zLAorc2NyZWVuLTI1NmNvbG9yLWJjZS1zfEdOVSBTY3JlZW4gd2l0aCAyNTYgY29sb3JzIHVzaW5nIEJDRSBhbmQgc3RhdHVzIGxpbmUsCisJYmNlLCB1c2U9eHRlcm0rMjU2c2V0YWYsIHVzZT1zY3JlZW4tcywKKworc2NyZWVuLnh0ZXJtLTI1NmNvbG9yfEdOVSBTY3JlZW4gd2l0aCB4dGVybSB1c2luZyAyNTYgY29sb3JzLAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPXNjcmVlbi54dGVybS1uZXcsCisKK3NjcmVlbi5rb25zb2xlLTI1NmNvbG9yfEdOVSBTY3JlZW4gd2l0aCBrb25zb2xlIHVzaW5nIDI1NiBjb2xvcnMsCisJdXNlPXh0ZXJtKzI1NnNldGFmLCB1c2U9c2NyZWVuLmtvbnNvbGUsCisKK3NjcmVlbi52dGUtMjU2Y29sb3J8R05VIFNjcmVlbiB3aXRoIHZ0ZSB1c2luZyAyNTYgY29sb3JzLAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPXNjcmVlbi52dGUsCisKK3NjcmVlbi5wdXR0eS0yNTZjb2xvcnxHTlUgU2NyZWVuIHdpdGggcHV0dHkgdXNpbmcgMjU2IGNvbG9ycywKKwl1c2U9eHRlcm0rMjU2c2V0YWYsIHVzZT1zY3JlZW4ucHV0dHksCisKK3NjcmVlbi5tbHRlcm0tMjU2Y29sb3J8R05VIFNjcmVlbiB3aXRoIG1sdGVybSB1c2luZyAyNTYgY29sb3JzLAorCXVzZT14dGVybSsyNTZzZXRhZiwgdXNlPXNjcmVlbi5tbHRlcm0sCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC00NDU5LDYgKzYwNDgsMTIgQEAKIHNjcmVlbitma2V5c3xmdW5jdGlvbi1rZXlzIGFjY29yZGluZyB0byBzY3JlZW4sCiAJa2VuZD1cRVs0fiwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmbmRALAogCWtob21lPVxFWzF+LCBrc2x0QCwKKworIyBTZWUgZXhwbGFuYXRpb24gYmVmb3JlICJzY3JlZW4iIGVudHJ5LiAgQ2FuY2VsIGl0YWxpY3Mgc28gdGhhdCBhcHBsaWNhdGlvbnMKKyMgZG8gbm90IGFzc3VtZSBzY3JlZW4gc3VwcG9ydHMgdGhlIGZlYXR1cmUuICBBZGQgdGhpcyB0d2VhayB0byBlbnRyaWVzIHdoaWNoCisjIGV4dGVuZCBzY3JlZW4gZm9yIHRlcm1pbmFscyB3aGljaCBkbyBzdXBwb3J0IGl0YWxpY3MuCitzY3JlZW4raXRhbGljc3xzY3JlZW4gY2Fubm90IHN1cHBvcnQgaXRhbGljcywKKwlyaXRtQCwgc2l0bUAsCiAjCiAjIEhlcmUgYXJlIGEgZmV3IGN1c3RvbWl6ZWQgZW50cmllcyB3aGljaCBhcmUgdXNlZnVsIC1URAogIwpAQCAtNDQ3OSw4ICs2MDc0LDEwIEBACiBzY3JlZW4ueHRlcm0teGZyZWU4NnxzY3JlZW4ueHRlcm0tbmV3fHNjcmVlbiBjdXN0b21pemVkIGZvciBtb2Rlcm4geHRlcm0sCiAJYmNlQCwgYncsCiAJaW52aXNALCBrSUNALCBrTlhUQCwga1BSVkAsIG1lbWxALCBtZW11QCwKLQlzZ3I9JT8lcDkldFxFKDAlZVxFKEIlO1xFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSwKLQl1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9eHRlcm0tbmV3LAorCXNncj0lPyVwOSV0XEUoMCVlXEUoQiU7XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlO20sCisJRTNALCB1c2U9c2NyZWVuK2l0YWxpY3MsIHVzZT1zY3JlZW4rZmtleXMsIHVzZT14dGVybS1uZXcsCisjOnNjcmVlbi54dGVybXxzY3JlZW4gZm9yIG1vZGVybiB4dGVybSwKKyM6CXVzZT1zY3JlZW4ueHRlcm0tbmV3LAogIyB4dGVybS1yNiBkb2VzIG5vdCByZWFsbHkgc3VwcG9ydCBraG9tZS9rZW5kIHVubGVzcyBpdCBpcyBwcm9wcGVkIHVwIGJ5CiAjIHRoZSB0cmFuc2xhdGlvbnMgcmVzb3VyY2UuCiBzY3JlZW4ueHRlcm0tcjZ8c2NyZWVuIGN1c3RvbWl6ZWQgZm9yIFgxMVI2IHh0ZXJtLApAQCAtNDQ5MywxNiArNjA5MCw2MyBAQAogCXVzZT1zY3JlZW4rZmtleXMsIHVzZT1zY3JlZW4sCiAjIE90aGVyIHRlcm1pbmFscwogc2NyZWVuLnJ4dnR8c2NyZWVuIGluIHJ4dnQsCi0JYncsCisJYncsIFhULAogCWN2dmlzQCwgZmxhc2hALCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAogCWtjdXUxPVxFT0EsIHVzZT1zY3JlZW4rZmtleXMsIHVzZT12dDEwMCtlbnEsCiAJdXNlPXJ4dnQrcGNma2V5cywgdXNlPXZ0MjIwK2tleXBhZCwgdXNlPXNjcmVlbiwKK3NjcmVlbi5FdGVybXxzY3JlZW4gaW4gRXRlcm0sCisJdXNlPXNjcmVlbitma2V5cywgdXNlPUV0ZXJtLAorc2NyZWVuLm1yeHZ0fHNjcmVlbiBpbiBtcnh2dCwKKwl1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9bXJ4dnQsCitzY3JlZW4udnRlfHNjcmVlbiBpbiBhbnkgVlRFLWJhc2VkIHRlcm1pbmFsLAorCXVzZT1zY3JlZW4raXRhbGljcywgdXNlPXNjcmVlbitma2V5cywgdXNlPXZ0ZSwKK3NjcmVlbi5nbm9tZXxzY3JlZW4gaW4gR05PTUUgVGVybWluYWwsCisJdXNlPXNjcmVlbitpdGFsaWNzLCB1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9Z25vbWUsCitzY3JlZW4ua29uc29sZXxzY3JlZW4gaW4gS0RFIGNvbnNvbGUgd2luZG93LAorCXVzZT1zY3JlZW4raXRhbGljcywgdXNlPXNjcmVlbitma2V5cywgdXNlPWtvbnNvbGUsCiAjIGZpeCB0aGUgYmFja3NwYWNlIGtleQogc2NyZWVuLmxpbnV4fHNjcmVlbiBpbiBsaW51eCBjb25zb2xlLAogCWJ3LAogCWticz1cMTc3LCBrY2J0QCwgdXNlPXNjcmVlbitma2V5cywgdXNlPXNjcmVlbiwKIHNjcmVlbi5tbHRlcm18c2NyZWVuIGluIG1sdGVybSwKIAl1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9bWx0ZXJtLAorc2NyZWVuLnB1dHR5fHNjcmVlbiBpbiBwdXR0eSwKKwl1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9cHV0dHksCisKKyMgVGhlIGRlZmF1bHQgInNjcmVlbiIgZW50cnkgaXMgcmVhc29uYWJseSBwb3J0YWJsZSwgYnV0IG5vdCBvcHRpbWFsIGZvciB0aGUKKyMgbW9zdCB3aWRlbHktdXNlZCB0ZXJtaW5hbCBlbXVsYXRvcnMuICBUaGUgImJjZSIgY2FwYWJpbGl0eSBpcyBzdXBwb3J0ZWQgaW4KKyMgc2NyZWVuIHNpbmNlIDMuOS4xMywgYW5kIHdoZW4gdXNlZCwgd2lsbCByZXF1aXJlIGZld2VyIGNoYXJhY3RlcnMgdG8gYmUgc2VudAorIyB0byB0aGUgdGVybWluYWwgZm9yIHVwZGF0ZXMuCisjCisjIElmIHlvdSBhcmUgdXNpbmcgb25seSB0ZXJtaW5hbHMgd2hpY2ggc3VwcG9ydCBiY2UsIHRoZW4geW91IGNhbiB1c2UgdGhpcworIyBmZWF0dXJlIGluIHlvdXIgc2NyZWVuIGNvbmZpZ3VyYXRpb24uCisjCisjIEFkZGluZyB0aGVzZSBsaW5lcyB0byB5b3VyICIuc2NyZWVucmMiIGZpbGUgd2lsbCBhbGxvdyB1c2luZyB0aGVzZSBjdXN0b21pemVkCisjIGVudHJpZXM6CisjCXRlcm0gc2NyZWVuLWJjZQorIwliY2Ugb24KKyMJZGVmYmNlIG9uCitzY3JlZW4tYmNlLnh0ZXJtLW5ld3xzY3JlZW4gb3B0aW1pemVkIGZvciBtb2Rlcm4geHRlcm0sCisJYmNlLAorCWVjaEAsIHVzZT1zY3JlZW4raXRhbGljcywgdXNlPXNjcmVlbi54dGVybS1uZXcsCitzY3JlZW4tYmNlLnJ4dnR8c2NyZWVuIG9wdGltaXplZCBmb3Igcnh2dCwKKwliY2UsCisJZWNoQCwgdXNlPXNjcmVlbi5yeHZ0LAorc2NyZWVuLWJjZS5FdGVybXxzY3JlZW4gb3B0aW1pemVkIGZvciBFdGVybSwKKwliY2UsCisJZWNoQCwgdXNlPXNjcmVlbi5FdGVybSwKK3NjcmVlbi1iY2UubXJ4dnR8c2NyZWVuIG9wdGltaXplZCBmb3IgbXJ4dnQsCisJYmNlLAorCWVjaEAsIHVzZT1zY3JlZW4ubXJ4dnQsCitzY3JlZW4tYmNlLmdub21lfHNjcmVlbiBvcHRpbWl6ZWQgZm9yIEdOT01FLVRlcm1pbmFsLAorCWJjZSwKKwllY2hALCB1c2U9c2NyZWVuK2l0YWxpY3MsIHVzZT1zY3JlZW4uZ25vbWUsCitzY3JlZW4tYmNlLmtvbnNvbGV8c2NyZWVuIG9wdGltaXplZCBmb3IgS0RFIGNvbnNvbGUgd2luZG93LAorCWJjZSwKKwllY2hALCB1c2U9c2NyZWVuK2l0YWxpY3MsIHVzZT1zY3JlZW4ua29uc29sZSwKK3NjcmVlbi1iY2UubGludXh8c2NyZWVuIG9wdGltaXplZCBmb3IgbGludXggY29uc29sZSwKKwliY2UsCisJZWNoQCwgdXNlPXNjcmVlbi5saW51eCwKIAogc2NyZWVuLXd8VlQgMTAwL0FOU0kgWDMuNjQgdmlydHVhbCB0ZXJtaW5hbCB3aXRoIDEzMiBjb2xzLAogCWNvbHMjMTMyLCB1c2U9c2NyZWVuLApAQCAtNDUzNyw2ICs2MTgxLDE3IEBACiAJc2M9XEU3LCBzZ3IwPVxFW20sIHNtaXI9XEVbNGgsIHNta3g9XEU9LCBzbXNvPVxFWzNtLAogCXNtdWw9XEVbNG0sIHRiYz1cRVszZywKIAorIyB0bXV4IGlzIGNvbXBhdGlibGUgd2l0aCBzY3JlZW4sIGJ1dCBoYXMgc3VwcG9ydCBmb3IgaXRhbGljcywgYW5kIHNvbWUgb2YgdGhlCisjIHh0ZXJtIGN1cnNvciBiaXRzLgordG11eHx0bXV4IHRlcm1pbmFsIG11bHRpcGxleGVyLAorCXJpdG09XEVbMjNtLCBybXNvPVxFWzI3bSwgc2l0bT1cRVszbSwgc21zbz1cRVs3bSwgTXNALAorCXVzZT14dGVybStzbCwgdXNlPXh0ZXJtK3RtdXgsIHVzZT1zY3JlZW4sCisKK3RtdXgtMjU2Y29sb3J8dG11eCB3aXRoIDI1NiBjb2xvcnMsCisJdXNlPXh0ZXJtKzI1NnNldGFmLCB1c2U9dG11eCwKKworIyMjIyBOQ1NBIFRlbG5ldAorCiAjIEZyYW5jZXNjbyBQb3RvcnRpIDxGLlBvdG9ydGlAY251Y2UuY25yLml0PjoKICMgTkNTQSB0ZWxuZXQgaXMgb25lIG9mIHRoZSBtb3N0IHVzZWQgdGVsbmV0IGNsaWVudHMgZm9yIHRoZSBNYWNpbnRvc2guICBJdCBoYXMKICMgYmVlbiBtYWludGFpbmVkIHVudGlsIHJlY2VudGx5IGJ5IHRoZSBOYXRpb25hbCBDZW50ZXIgZm9yIFN1cGVyY29tcHV0ZXIKQEAgLTQ1NzIsMTggKzYyMjcsMTggQEAKICMgc2VxdWVuY2VzIGZvciBzZXR0aW5nIHRoZSB3aW5kb3ctdGl0bGUuICBTbyB5b3UgbXVzdCB1c2UgdHNsIGFuZCBmc2wgaW4KICMgcGFpcnMsIHNpbmNlIHRoZSBsYXR0ZXIgZW5kcyB0aGUgc3RyaW5nIHRoYXQgaXMgbG9hZGVkIHRvIHRoZSB3aW5kb3ctdGl0bGUuCiBuY3NhLW18bmNzYS12dDIyMC04fE5DU0EgVGVsbmV0IDIuNiBmb3IgTWFjaW50b3NoIGluIHZ0MjIwLTggbW9kZSwKLQlhbSwgaHMsIGttLCBtaXIsIG1zZ3IsIHhlbmwsCisJYW0sIGttLCBtaXIsIG1zZ3IsIHhlbmwsCiAJYWNzYz1gYGFhZmZnZ2lpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCiAJY2xlYXI9XEVbSFxFWzJKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKIAljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCiAJY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAogCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlkc2w9XEVdMDtcMDA3LCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKTAsCi0JZmxhc2g9XEVbPzVoXEVbPzVsLCBmc2w9XkcsIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCwgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxuJDwxNTAqPiwKKwlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCisJZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRSkwLCBmbGFzaD1cRVs/NWhcRVs/NWwsCisJaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKKwlpZj0vdXNyL3NoYXJlL3RhYnNldC92dDEwMCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwKKwlpbmQ9XG4kPDE1MCo+LAogCWlzMj1cRTdcRVtyXEVbbVxFWz83aFxFWz8xOzQ7NmxcRVs0bFxFOFxFPiwga2JzPV5ILAogCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCiAJa2RjaDE9XEVbNH4sIGtlbmQ9XEVbNX4sIGtmMT1cRVsxN34sIGtmMTA9XEVbMjh+LApAQCAtNDU5Nyw4ICs2MjUyLDggQEAKIAlyczI9XEU3XEVbclxFOFxFW21cRVs/N2hcRVs/MTs0OzZsXEVbNGxcRT4sIHNjPVxFNywKIAlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOywKIAlzZ3IwPVxFW21cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVxFWz83aCwgc21jdXA9XEU3LAotCXNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywgdHNsPVxFXTA7LAotCXU4PVxFWz82MjsxOzZjLCB1c2U9YW5zaStlbnEsCisJc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAorCXU4PVxFWz82MjsxOzZjLCB1c2U9eHRlcm0rc2wsIHVzZT1hbnNpK2VucSwKIG5jc2F8TkNTQSBUZWxuZXQgMi43IGZvciBNYWNpbnRvc2ggaW4gdnQyMjAtOCBtb2RlLAogCXVzZT1uY3NhLW0sIHVzZT1rbG9uZStjb2xvciwKIG5jc2EtbnN8TkNTQSBUZWxuZXQgMi43IGZvciBNYWNpbnRvc2ggaW4gdnQyMjAtOCBtb2RlLApAQCAtNDcxNiwxMCArNjM3MSwxMCBAQAogCWtmMTA9XEVbMjMzeiwga2YxMT1cRVsyMzR6LCBrZjEyPVxFWzIzNXosIGtmMj1cRVsyMjV6LAogCWtmMz1cRVsyMjZ6LCBrZjQ9XEVbMjI3eiwga2Y1PVxFWzIyOHosIGtmNj1cRVsyMjl6LAogCWtmNz1cRVsyMzB6LCBrZjg9XEVbMjMxeiwga2Y5PVxFWzIzMnosIGtob21lPVxFWzIxNHosCi0Ja25wPVxFWzIyMnosIGtvcHQ9XEVbMTk0eiwga3BwPVxFWzIxNnosIGtyZXM9XEVbMTkzeiwKLQlrdW5kPVxFWzE5NXosIHJldj1cRVs3bSwgcm1zbz1cRVttLCBybXVsQCwgcnMyPVxFW3MsCi0Jc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7bSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotCXU4PVxFWzF0LCB1OT1cRVsxMXQsCisJa2ljaDE9XEVbMjQ3eiwga25wPVxFWzIyMnosIGtvcHQ9XEVbMTk0eiwga3BwPVxFWzIxNnosCisJa3Jlcz1cRVsxOTN6LCBrdW5kPVxFWzE5NXosIHJldj1cRVs3bSwgcm1zbz1cRVttLCBybXVsQCwKKwlyczI9XEVbcywgc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7bSwgc2dyMD1cRVttLAorCXNtc289XEVbN20sIHU4PVxFWzF0LCB1OT1cRVsxMXQsCiAjIE9uIHNvbWUgdmVyc2lvbnMgb2YgQ0dTSVggZnJhbWVidWZmZXIgZmlybXdhcmUgKFNwYXJjU3RhdGlvbiA1KSwgPGlsMT4vPGlsPgogIyBmbGFrZSBvdXQgb24gdGhlIGxhc3QgbGluZS4gIFVuZm9ydHVuYXRlbHksIHdpdGhvdXQgdGhlbSB0aGUgdGVybWluYWwgaGFzIG5vCiAjIHdheSB0byBzY3JvbGwuCkBAIC00NzI5LDYgKzYzODQsMTAgQEAKIHN1bnxzdW4xfHN1bjJ8U3VuIE1pY3Jvc3lzdGVtcyBJbmMuIHdvcmtzdGF0aW9uIGNvbnNvbGUsCiAJdXNlPXN1bi1pbCwKIAorc3VuK3NsfFN1biBXb3Jrc3RhdGlvbiB3aW5kb3cgc3RhdHVzIGxpbmUsCisJaHMsCisJZHNsPVxFXWxcRVxcLCBmc2w9XEVcXCwgdHNsPVxFXWwsCisKICMgRnJvbTogPGpvaG5AdWNicmVub2lyPiAgVHVlIFNlcCAyNCAxMzoxNDo0NCAxOTg1CiBzdW4tc3xTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIHdpbmRvdyB3aXRoIHN0YXR1cyBsaW5lLAogCWhzLApAQCAtNDc2MiwxNSArNjQyMSwzMyBAQAogIyBNb3N0IG9mIHRoZSBjdXJyZW50IHJlZmVyZW5jZXMgdG8gc3VuLWNvbG9yIGFyZSBmcm9tIHVzZXJzIHdvbmRlcmluZyB3aHkgdGhpcwogIyBpcyB0aGUgZGVmYXVsdCBvbiBpbnN0YWxsLiAgRGV0YWlscyBmcm9tIHJlYWRpbmcgdGhlIHdzY29ucyBtYW5wYWdlLCBhZGRpbmcKICMgY3ViLCBldGMuLCBoZXJlIChyYXRoZXIgdGhhbiBpbiB0aGUgYmFzZSBzdW4taWwgZW50cnkpIHNpbmNlIGl0IGlzIG5vdCBjbGVhcgotIyB3aGVuIHRob3NlIHdlcmUgYWRkZWQgLVRECisjIHdoZW4gdGhvc2Ugd2VyZSBhZGRlZCAtVEQgKDIwMDUtMDUtMjgpCisjCisjIEFjY29yZGluZyB0byB3c2NvbnMgbWFucGFnZSwgY29sb3IgaXMgc3VwcG9ydGVkIG9ubHkgb24gSUEgc3lzdGVtcy4KKyMgU3VuJ3MgdGVybWluZm8gZW50cnkgZG9jdW1lbnRzIGJvbGQgYW5kIHNtdWwvcm11bCBjYXBhYmlsaXRpZXMsIGJ1dCB3c2NvbnMKKyMgZG9lcyBub3QgbGlzdCB0aGVzZS4gIEl0IGFsc28gc2V0cyBuY3YjMywgaG93ZXZlciB0aGF0IGNvcnJlc3BvbmRzIHRvCisjIHVuZGVybGluZSBhbmQgc3RhbmRvdXQuCisjCisjIFNpbmNlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXJtaW5mbyBkbyBub3QgYWdyZWUsIHNlZSBhbHNvIGN1cnJlbnQgY29kZSBhdAorIyBodHRwOi8vc3JjLm9wZW5zb2xhcmlzLm9yZy9zb3VyY2UveHJlZi9vbm52L29ubnYtZ2F0ZS91c3Ivc3JjL3V0cy9jb21tb24vaW8vdGVtX3NhZmUuYworIworIyBUaGF0IChhY3R1YWxseSBhIGRpZmZlcmVudCBkcml2ZXIgd2hpY2ggInN1cHBvcnRzIiBzdW4tY29sb3IpIGFsc28gc3VwcG9ydHMKKyMgdGhlc2UgZmVhdHVyZXM6CisjCXZwYT1cRVslaSVwMSVkZAorIwlocGE9XEVbJWklcDElZGAKKyMJY2J0PVxFW1oKKyMJZGltPVxFWzJtCisjCWJsaW5rPVxFWzVtCisjIEl0IHN1cHBvcnRzIGJvbGQsIGJ1dCBub3QgdW5kZXJsaW5lIC1URCAoMjAwOS0wOS0xOSkKIHN1bi1jb2xvcnxTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIGNvbnNvbGUgd2l0aCBjb2xvciBzdXBwb3J0IChJQSBzeXN0ZW1zKSwKLQljb2xvcnMjOCwgcGFpcnMjNjQsCi0JY3ViPVxFWyVwMSVkRCwgY3VkPVxFWyVwMSVkQiwgY3VmPVxFWyVwMSVkQywKLQljdXU9XEVbJXAxJWRBLCBob21lPVxFW0gsIG9wPVxFW21cRVtwLCBzZXRhYj1cRVs0JXAxJWRtLAotCXNldGFmPVxFWzMlcDElZG0sCisJY29sb3JzIzgsIG5jdiMzLCBwYWlycyM2NCwKKwlib2xkPVxFWzFtLCBjdWI9XEVbJXAxJWRELCBjdWQ9XEVbJXAxJWRCLCBjdWY9XEVbJXAxJWRDLAorCWN1dT1cRVslcDElZEEsIGhvbWU9XEVbSCwgb3A9XEVbMG0sIHJzMj1cRVtzLAorCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCiAJc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAogCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQl1c2U9c3VuLAorCXNncj1cRVswJT8lcDYldDsxJTslPyVwMSVwMyV8JXQ7NyU7bSwgc2dyMD1cRVttLAorCXNtc289XEVbN20sIHVzZT1zdW4sCiAKICMjIyMgSXJpcyBjb25zb2xlcwogIwpAQCAtNDg2NSw3ICs2NTQyLDcgQEAKIAljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKIAllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLAogCWlmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MTAwLCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLAotCWlzMj1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRTgsIGticz1eSCwga2N1YjE9XEVPRCwKKwlpczI9XEVbPzdoXEVbPzFoXEVbPzNsXEU3XEU4LCBrYnM9XkgsIGtjdWIxPVxFT0QsCiAJa2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YwPVxFT1ksIGtmMT1cRU9QLAogCWtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsCiAJa2Y4PVxFT1csIGtmOT1cRU9YLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLApAQCAtNDkxMyw3ICs2NTkwLDcgQEAKIAljcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCiAJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVkPVxFW0osIGVsPVxFW0ssCiAJaG9tZT1cRVtILCBodD1eSSwgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsIGticz1eSCwKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZjE9XEVPUCwKKwlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwKIAlrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAogCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKIAlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCkBAIC00OTc4LDcgKzY2NTUsNyBAQAogbndwNTExfG53cC01MTF8bndwLTUxMSB2dDEwMCwKIAlPVGJzLCBPVHB0LCBhbSwgeGVubCwKIAljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRVs7SFxFWzJKJDwyMC8+LCBjdWYxPVxFW0MsCisJY2xlYXI9XEVbO0hcRVsySiQ8MjAvPiwgY3ViMT1cRVtELCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKIAljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSQ8Mi8+LCBkbDE9XEVbTSwKIAllZD1cRVtKJDwzMC8+LCBlbD1cRVtLJDwzLz4sCiAJZmxhc2g9XEVbPzVoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcRVs/NWwsCkBAIC01MDM3LDI5ICs2NzE0LDEwIEBACiAJc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAogCXNtc289XEVbMjs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1c2U9ZWNtYStjb2xvciwKIAotIyMjIyBOb24tVW5peCBDb25zb2xlcworIyMjIyMjIyMgTm9uLVVuaXggQ29uc29sZXMKICMKIAotIyMjIEVNWCB0ZXJtY2FwLmRhdCBjb21wYXRpYmlsaXR5IG1vZGVzCi0jCi0jIEtleXBhZDoJSG9tZT1cMEcJVXA9XDBICVByUGFnPVwwSQotIwkJa2ExLGtoCQlrY3V1MQkJa3BwLGthMwotIwotIwkJTGVmdD1cMEsJNT1cMEwJCVJpZ2h0PVwwTQotIwkJa2N1YjEJCWtiMgkJa2N1ZjEKLSMKLSMJCUVuZD1cME8JCURvd249XDBQCU54UGFnPVwwUQotIwkJa2MxLGtlbmQJa2N1ZDEJCWtjMyxrbnAKLSMKLSMJCUlucz1cMFIJCURlbD1cMFMKLSMJCWtpY2gxCQlrZGNoMQotIwotIyBPbiBrZXlib2FyZCB3aXRoIDEyIGZ1bmN0aW9uIGtleXMsCi0jCXNoaWZ0ZWQgZi1rZXlzOiBGMTMtRjI0Ci0jCWNvbnRyb2wgZi1rZXlzOiBGMjUtRjM2Ci0jCWFsdCBmLWtleXM6ICAgICBGMzctRjQ4Ci0jIFRoZSBzaGlmdC9jb250cm9sL2FsdCBrZXlzIGRvIG5vdCBtb2RpZnkgZWFjaCBvdGhlciwgYnV0IGFsdCBvdmVycmlkZXMgYm90aCwKLSMgYW5kIGNvbnRyb2wgb3ZlcnJpZGVzIHNoaWZ0LgorIyMjIyBFTVggdGVybWNhcC5kYXQgY29tcGF0aWJpbGl0eSBtb2RlcwogIwogIyBBbHNvIChwb3NzaWJseSBvbmx5IEVNWCwgc28gd2UgZG9uJ3QgcHV0IGl0IGluIGFuc2kuc3lzLCBldGMpOiBzZXQgdGhlCiAjIG5vX2NvbG9yX3ZpZGVvIHRvIGluZm9ybSB0aGUgYXBwbGljYXRpb24gdGhhdCBzdGFuZG91dCgxKSwgdW5kZXJsaW5lKDIpCkBAIC01MDY3LDE5ICs2NzI1LDcgQEAKIGVteC1iYXNlfERPUyBzcGVjaWFsIGtleXMsCiAJYmNlLCBidywKIAlpdCM4LCBuY3YjNzEsCi0JYmVsPV5HLCBrYTE9XDBHLCBrYTM9XDBJLCBrYjI9XDBMLCBrYnM9XkgsIGtjMT1cME8sIGtjMz1cMFEsCi0Ja2NidD1cMF5PLCBrY3ViMT1cMEssIGtjdWQxPVwwUCwga2N1ZjE9XDBNLCBrY3V1MT1cMEgsCi0Ja2RjaDE9XDBTLCBrZW5kPVwwTywga2YxPVwwOywga2YxMD1cMEQsIGtmMTE9XDBcMjA1LAotCWtmMTI9XDBcMjA2LCBrZjEzPVwwVCwga2YxND1cMFUsIGtmMTU9XDBWLCBrZjE2PVwwVywKLQlrZjE3PVwwWCwga2YxOD1cMFksIGtmMTk9XDBaLCBrZjI9XDA8LCBrZjIwPVwwWywga2YyMT1cMFxcLAotCWtmMjI9XDBdLCBrZjIzPVwwXDIwNywga2YyND1cMFwyMTAsIGtmMjU9XDBcXiwga2YyNj1cMF8sCi0Ja2YyNz1cMGAsIGtmMjg9XDBhLCBrZjI5PVwwYiwga2YzPVwwPSwga2YzMD1cMGMsIGtmMzE9XDBkLAotCWtmMzI9XDBlLCBrZjMzPVwwZiwga2YzND1cMGcsIGtmMzU9XDBcMjExLCBrZjM2PVwwXDIxMiwKLQlrZjM3PVwwaCwga2YzOD1cMGksIGtmMzk9XDBqLCBrZjQ9XDA+LCBrZjQwPVwwaywga2Y0MT1cMGwsCi0Ja2Y0Mj1cMG0sIGtmNDM9XDBuLCBrZjQ0PVwwbywga2Y0NT1cMHAsIGtmNDY9XDBxLAotCWtmNDc9XDBcMjEzLCBrZjQ4PVwwXDIxNCwga2Y1PVwwPywga2Y2PVwwQCwga2Y3PVwwQSwga2Y4PVwwQiwKLQlrZjk9XDBDLCBraG9tZT1cMEcsIGtpY2gxPVwwUiwga25wPVwwUSwga3BwPVwwSSwKLQl1c2U9YW5zaS5zeXMsCisJYmVsPV5HLCB1c2U9YW5zaS5zeXMsCiAKICMgRXhjZXB0IGZvciB0aGUgIi1lbXgiIHN1ZmZpeGVzLCB0aGVzZSBhcmUgYXMgZGlzdHJpYnV0ZWQgd2l0aCBFTVggMC45YiwKICMgYSBVbml4LXN0eWxlIGVudmlyb25tZW50IHVzZWQgb24gT1MvMi4gIChOb3RlIHRoYXQgdGhlIHN1ZmZpeCBtYWtlcyBzb21lCkBAIC01MTI0LDYgKzY3NzAsOCBAQAogCWtpY2gxPVwwUiwga2xsPVwwTywga25wPVwwUSwga3BwPVwwSSwgbmVsPV5NXkosIHJldj1cRVs3bSwKIAlzZ3IwPVxFWzBtLAogCisjIyMjIEN5Z3dpbgorCiAjIFVzZSB0aGlzIGZvciBjeWd3aW4zMiAodGVzdGVkIHdpdGggYmV0YSAxOS4xKQogIyB1bmRlcmxpbmUgaXMgY29sb3JlZCBicmlnaHQgbWFnZW50YQogIyBzaGlmdGVkIGtmMS1rZjEyIGFyZSBrZjExLWtmMjIKQEAgLTUyMTAsNyArNjg1OCw3IEBACiAJcm1hY3M9XEVbMTBtLCBybWN1cD1cRVsySlxFWz80N2xcRTgsIHJtaXI9XEVbNGwsCiAJcm1wY2g9XEVbMTBtLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHJzMT1cRWNcRV1SLAogCXNjPVxFNywgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZ3I9XEVbMDsxMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTElO20sCisJc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMSU7bSwKIAlzZ3IwPVxFWzA7MTBtLCBzbWFjcz1cRVsxMW0sIHNtY3VwPVxFN1xFWz80N2gsCiAJc21pcj1cRVs0aCwgc21wY2g9XEVbMTFtLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0c2w9XEVdOywKIAl2cGE9XEVbJWklcDElZGQsIHVzZT12dDEwMitlbnEsCkBAIC01MjQ1LDkgKzY4OTMsMTEgQEAKIAlyYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFjcz1cRVsxMG0sIHJtaXI9XEVbNGwsCiAJcm1zbz1cRVttLCBybXVsPVxFW20sIHJzMT1cRWNcRV1SLCBzYz1cRTcsCiAJc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZ3I9XEVbMDsxMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTIlO20sCisJc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTIlO20sCiAJc2dyMD1cRVswOzEwbSwgc21hY3M9XEVbMTFtLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVsyZywgdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLAorCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLAorCisjIyMjIERKR1BQCiAKICMgS2V5IGRlZmluaXRpb25zOgogIyBUaGUgZW5jb2RpbmdzIGZvciB1bnNoaWZ0ZWQgYXJyb3cga2V5cywgRjEtRjEyLCBIb21lLCBJbnNlcnQsIGV0Yy4gIG1hdGNoIHRoZQpAQCAtNTQxNSw2ICs3MDY1LDggQEAKIAlyaT1cRVtULCByaW49XEVbJXAxJWRULCBybXNvPVxFW20sIHNldGFiPVxFWzQlcDElZG0sCiAJc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAogCisjIyMjIFUvV2luCisKICMgVGhpcyBpcyB0ZXN0ZWQgdXNpbmcgVS9XaW4ncyB0ZWxuZXQuICBTY3JvbGxpbmcgaXMgb21pdHRlZCBiZWNhdXNlIGl0IGlzCiAjIGJ1Z2d5LiAgQW5vdGhlciBvZGQgYnVnIGFwcGVhcnMgd2hlbiBkaXNwbGF5aW5nICJ+IiBpbiBhbHRlcm5hdGUgY2hhcmFjdGVyCiAjIHNldCAodGhlIGVtdWxhdG9yIHNwaXRzIG91dCBlcnJvciBtZXNzYWdlcykuICBDb21wYXJlIHdpdGggYXR0NjM4NiAtVEQKQEAgLTU0MzgsNiArNzA5MCw4IEBACiAJc21hY3M9XEVbMTFtLCBzbWlyPVxFWzRoLCBzbXBjaD1cRVsxMW0sIHNtc289XEVbN20sCiAJc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sCiAKKyMjIyMgTWljcm9zb2Z0IChtaXNjZWxsYW5lb3VzKQorCiAjIFRoaXMgZW50cnkgZml0cyB0aGUgV2luZG93cyBOVCBjb25zb2xlIHdoZW4gdGhlIF9QT1NJWF9URVJNIGVudmlyb25tZW50CiAjIHZhcmlhYmxlIGlzIHNldCB0byAnb24nLiAgV2hpbGUgdGhlIFdpbmRvd3MgTlQgUE9TSVggY29uc29sZSBpcyBzZWxkb20gdXNlZCwKICMgdGhlIFRlbG5ldCBjbGllbnQgc3VwcGxpZWQgd2l0aCBib3RoIHRoZSBXaW5kb3dzIGZvciBXb3JrR3JvdXAgMy4xMSBUQ1AvSVAKQEAgLTU0OTEsNyArNzE0NSw3IEBACiAJaHQ9XkksIGh0cz1cRUgkPDIvPiwgaW5kPVxFRCQ8NS8+LCBpczI9XEVbMTsyNHJcRVsyNDsxSCwKIAlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCiAJa2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIG5lbD1cclxFRCQ8NS8+LAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyLz4sIHJmPS91c3Ivc2hhcmUvbGliL3RhYnNldC92dDEwMCwKKwlyYz1cRTgsIHJldj1cRVs3bSQ8Mi8+LCByZj0vdXNyL3NoYXJlL3RhYnNldC92dDEwMCwKIAlyaT1cRU0kPDUvPiwgcm1zbz1cRVttJDwyLz4sIHJtdWw9XEVbbSQ8Mi8+LAogCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKIAlzZ3IwPVxFW20kPDIvPiwgc21zbz1cRVs3bSQ8Mi8+LCBzbXVsPVxFWzRtJDwyLz4sCkBAIC01NTEwLDcgKzcxNjQsNyBAQAogaW50ZXJpeHxvcGVubnR8b3Blbm50LTI1fG50Y29uc29sZXxudGNvbnNvbGUtMjV8T3Blbk5ULXRlcm0gY29tcGF0aWJsZSB3aXRoIGNvbG9yLAogCWFtLCBidywgbXNnciwKIAljb2xvcnMjOCwgY29scyM4MCwgbGluZXMjMjUsIG5jdiMzLCBwYWlycyM2NCwKLQlhY3NjPWBcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35xXDMwNHJcMzYyc190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNzF6XDM3MntcMzczfFwzNzR9XDM3NX5cMzc2LlwwMzEtXDAzMFwsXDAyMSteUDBcMzMzcFwzMDRyXDMwNHlcMzYzelwzNjJ7XDM0M3xcMzMwfVwyMzQsCisJYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAogCWJlbD1eRywgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNsZWFyPVxFWzJKLCBjdWI9XEVbJXAxJWRELAogCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywKIAljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKQEAgLTU1MzYsNyArNzE5MCw3IEBACiAJcm1jdXA9XEVbMmJcRVt1XHJcRVtLLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMxPVxFYywKIAlzYz1cRVtzLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAogCXNldGI9XEVbJXAxJXs0MH0lKyVkbSwgc2V0Zj1cRVslcDElezMwfSUrJWRtLAotCXNncjA9XEVbMG0sIHNtY3VwPVxFW3NcRVsxYiwgc21zbz1cRVsxbSwgc211bD1cRVs0bSwKKwlzZ3IwPVxFWzBtLCBzbWN1cD1cRVtzXEVbMWIsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCiAKIG9wZW5udC0zNXxudGNvbnNvbGUtMzV8T3Blbk5ULXRlcm0zNSBjb21wYXRpYmxlIHdpdGggY29sb3IsCiAJbGluZXMjMzUsIHVzZT1vcGVubnQsCkBAIC01NjM0LDcgKzcyODgsNyBAQAogIwk6Y0M9XkFsXHI6Y0Q9XkFtXHI6Y0U9XkFuXHI6Y0Y9XkFvXHI6CiAjCTpYVT1eQXFccjpYRD1eQXJccjpYUj1eQXNccjpYTD1eQXRccjpcCiAjCTpITD1eQVBccjpTUD1cRVtpOlwKLSMJOklTPVxFW0A6REU9XEVbUDpJTD1cRVtMOk5TPVxFW1M6UFM9XEVbVDpcCisjCTpJUz1cRVtAOkRFPVxFW1A6SUw9XEVbTDpOUz1cRVtTOlBTPVxFW1Q6CiBhbHRvczN8YWx0b3M1fGFsdDN8YWx0NXxhbHRvcy0zfGFsdG9zLTV8YWx0b3MgSUlJIG9yIFYsCiAJYmxpbms9XEVbNXAsIHJpPVxFTSwgc2dyMD1cRVtwLCB1c2U9YWx0b3MyLAogYWx0b3M0fGFsdDR8YWx0b3MtNHxhbHRvcyBJViwKQEAgLTU4NDksNyArNzUwMyw3IEBACiAJZGEsIGRiLAogCWxtIzAsIHBiIzE5MjAwLAogCWVkPVxFRFxFSiQ8NTAwPlxFQywgaW5kbj1cRSZyJXAxJWRELCBpcD0kPDQ+LAotCWlzMj1cRSZqQFxyLCByaW49XEUmciVwMSVkVSwgdXNlPWhwK3BmaytjciwKKwlpczI9XEUmakBcciwgcmluPVxFJnIlcDElZFUsIHVzZT1ocCtwZmstY3IsCiAJdXNlPWhwK2xhYmVscywgdXNlPXNjcmhwLAogCiAjIFRoaXMgZW50cnkgaXMgZm9yIHN5c2xpbmUuIEl0IGFsbG9jYXRlcyBhIDIzIGxpbmUgd2luZG93IHdpdGgKQEAgLTYwNTAsNyArNzcwNCw3IEBACiBocDI2MjJ8aHAyNjIyYXxocCAyNjIyLAogCWRhLCBkYiwKIAlsbSMwLCBwYiMxOTIwMCwKLQlpczI9XEUmZGpAXHIsIHVzZT1ocCtwZmsrY3IsIHVzZT1ocCtsYWJlbHMsIHVzZT1zY3JocCwKKwlpczI9XEUmZGpAXHIsIHVzZT1ocCtwZmstY3IsIHVzZT1ocCtsYWJlbHMsIHVzZT1zY3JocCwKIAogIyBUaGUgMjYyMyBpcyBhIDI2MjIgd2l0aCBleHRyYSBncmFwaGljcyBoYXJkd2FyZS4KIGhwMjYyM3xocDI2MjNhfGhwIDI2MjMsCkBAIC02MjA4LDEwICs3ODYyLDEwIEBACiBocDk4NDV8SFAgOTg0NSwKIAlPVGJzLCBhbSwgZGEsIGRiLCBlbywgbWlyLCB4aHAsCiAJY29scyM4MCwgbGluZXMjMjEsCi0JT1RiYz1cRUQsIGNsZWFyPVxFSFxFSiwgY3VmMT1cRUMsIGN1cD1cRSZhJXAyJTJkYyVwMSUyZFksCi0JY3V1MT1cRUEsIGRjaDE9XEVQLCBkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywKLQlpZj0vdXNyL3NoYXJlL3RhYnNldC9zdGQsIGlsMT1cRUwsIHJtaXI9XEVSLCBybXNvPVxFJmRALAotCXNtaXI9XEVRLCBzbXNvPVxFJmRCLAorCU9UYmM9XEVELCBjbGVhcj1cRUhcRUosIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCisJY3VwPVxFJmElcDIlMmRjJXAxJTJkWSwgY3V1MT1cRUEsIGRjaDE9XEVQLCBkbDE9XEVNLAorCWVkPVxFSiwgZWw9XEVLLCBpZj0vdXNyL3NoYXJlL3RhYnNldC9zdGQsIGlsMT1cRUwsCisJcm1pcj1cRVIsIHJtc289XEUmZEAsIHNtaXI9XEVRLCBzbXNvPVxFJmRCLAogIyBGcm9tOiBDaGFybGVzIEEuIEZpbm5lbGwgb2YgTUlUUkUgPGZpbm5lbGxAbWl0cmUub3JnPiwgZGV2ZWxvcGVkIDA3U0VQOTAKICMgKGhwOTg1NTA6IHJlcGxhY2VkIC91c3Ivc2hhcmUvdGFic2V0Lzk4Mzcgd2l0aCBzdGQgYmVjYXVzZSA8aXQjOD4sPGh0cz1cRTE+OwogIyBhZGRlZCBlbXB0eSA8YWNzYz4gdG8gYXZvaWQgd2FybmluZ3MgcmUgPHNtYWNzPi88cm1hY3M+IC0tZXNyKQpAQCAtNjQ2MywxMCArODExNywxMCBAQAogCXNncjA9XEUoLCBzbXNvPVxFKSwKIGFkbTIxfGxlYXIgc2llZ2xlciBhZG0yMSwKIAl4bWMjMSwKLQliZWw9XkcsIGNyPV5NLCBjdWQxPV5KLCBkY2gxPVxFVywgZGwxPTMwKlxFUiwgZWQ9XEVZLCBlbD1cRVQsCi0JaWNoMT1cRVEsIGlsMT0zMCpcRUUsIGluZD1eSiwgaW52aXNALCBrYnM9XkgsIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtob21lPV5eLCB1c2U9YWRtK3NnciwKLQl1c2U9YWRtM2EsCisJYmVsPV5HLCBjcj1eTSwgY3VkMT1eSiwgZGNoMT1cRVcsIGRsMT1cRVIkPDMwKj4sIGVkPVxFWSwKKwllbD1cRVQsIGljaDE9XEVRLCBpbDE9XEVFJDwzMCo+LCBpbmQ9XkosIGludmlzQCwga2JzPV5ILAorCWtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBraG9tZT1eXiwKKwl1c2U9YWRtK3NnciwgdXNlPWFkbTNhLAogIyAoYWRtMjI6ICI6ZW09OiIgd2FzIGFuIG9idmlvdXMgdHlwbyBmb3IgIjplaT06IjsgYWxzbywKICMgcmVtb3ZlZCBvYnNvbGV0ZSAiOmtuIzc6bWE9al5Ka15QXkteUGwgXlJeTF5MIDoiOwogIyByZW1vdmVkIGJvZ3VzLWxvb2tpbmcgXDIwMCBmcm9tIGJlZm9yZSA8Y3VwPi4gLS0gZXNyKQpAQCAtNjc1NCw2ICs4NDA4LDkgQEAKICMgV2hhdCBzZWVtcyB0byBiZSBnb2luZyBvbiBoZXJlIGlzIHRoYXQgdGhpcyBlbnRyeSB3YXMgZGVzaWduZWQgc28gdGhhdAogIyB0aGUgbm9ybWFsIGhpZ2hsaWdodCBpcyBib2xkIGFuZCBzdGFuZG91dCBpcyBkaW0gcGx1cyBzb21ldGhpbmcgZWxzZQogIyAocmV2ZXJzZS12aWRlbyBtYXliZT8gIEJ1dCB0aGVuLCBhcmUgdGhlcmUgdHdvIDxyZXY+IHNlcXVlbmNlcz8pCisjCisjIEFkZGVkIGtkY2gxLCBraWwxLCBrZGwxIGJhc2VkIG9uIHNjcmVlbnNob3QgLVREOgorIwlodHRwOi8vd3d3LnZpbnRhZ2Vjb21wdXRlci5uZXQvcXVtZS9xdnQtMTA4L3F1bWVfcXZ0LTEwOF9rZXlib2FyZC5qcGcKIHF2dDEwMSt8cXZ0MTAxcHxxdW1lIHF2dCAxMDEgUExVUyBwcm9kdWN0LAogCWFtLCBidywgaHMsIHVsLAogCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKQEAgLTY3NjIsMTEgKzg0MTksMTEgQEAKIAlkY2gxPVxFVywgZGwxPVxFUiwgZHNsPVxFZ1xFZlxyLCBlZD1cRVksIGVsPVxFVCwKIAlmbGFzaD1cRWIkPDIwMD5cRWQsIGZzbD1eTSwgaG9tZT1eXiwgaHQ9XkksIGh0cz1cRTEsCiAJaWNoMT1cRVEsIGlsMT1cRUUsIGluZD1eSiwgaW52aXNALCBrYnM9XkgsIGtjYnQ9XEVJLCBrY3ViMT1eSCwKLQlrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGwxPVxFUiwga2VkPVxFWSwga2VsPVxFVCwKLQlrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsCi0Ja2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsCi0Ja2hvbWU9Xl4sIGtpY2gxPVxFUSwga2lsMT1cRUUsIG1jND1cRUEsIG1jNT1cRUAsIHJtc289XEUoLAotCXNtc289XEUwUFxFKSwgdGJjPVxFMywgdHNsPVxFZ1xFZiwgdXNlPWFkbStzZ3IsCisJa2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwga2VkPVxFWSwKKwlrZWw9XEVULCBrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMj1eQUFcciwga2YzPV5BQlxyLAorCWtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLAorCWtmOT1eQUhcciwga2hvbWU9Xl4sIGtpY2gxPVxFUSwga2lsMT1cRUUsIG1jND1cRUEsIG1jNT1cRUAsCisJcm1zbz1cRSgsIHNtc289XEUwUFxFKSwgdGJjPVxFMywgdHNsPVxFZ1xFZiwgdXNlPWFkbStzZ3IsCiBxdnQxMDJ8cXVtZSBxdnQgMTAyLAogCWNub3JtPVxFLiwgdXNlPXF2dDEwMSwKICMgKHF2dDEwMzogYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiBpbml0IHN0cmluZyAtLSBlc3IpCkBAIC03ODc4LDggKzk1MzUsOCBAQAogCXJteG9uPV5OLCByczE9XEVDXEVERlxFWzA7MHZcRVs4OzF2XEVbPTY1bCwKIAlyczI9XEUuYlxFWzEwOzIwdlxFWzE0OzF2XEVbMzswdlxFWzc7MHZcRVs9MTEuaFxFWz0xMi5oXEVbPTEzLmhcRVs9MTQuaFxFWz0xNWxcRVs9MjBoXEVbPTYwbFxFWz02MWhcRVs9OWxcRVs9MTBsXEVbPTIxbFxFWz0yM2xcRVs9M2xcRV80MFxFXzUwXEVuXEV3XEVlIFxFeDBcMFwwXEV4MVwwXDBcRXgyXDBcMFxFeDNcMFwwXEV4NFwwXDBcRTEsCiAJcnMzPVxFWz0xOWhcRS4zXEU5XEUwT1wwXDBcMFwwXDBcRTBvXDBcMFwwXDBcMFxFMEpcMTc3XDBcMFwwXDAsCi0Jc2dyPVxFRzAlPyVwMSV0XEVHdCU7JT8lcDIldFxFRzglOyU/JXAzJXRcRUc0JTslPyVwNCV0XEVHMiU7JT8lcDUldFxFR3AlOyU/JXA2JXRcRUdcLCU7JT8lcDcldFxFRzElOyU/JXA5JXRcRSQlZVxFJSUlOywKLQlzZ3IwPVxFRzAsIHNtYWNzPVxFJCwgc21hbT1cRT03aCwgc21jdXA9XEUuMiwgc21kYz1cRXIsCisJc2dyPVxFRzAlPyVwMSV0XEVHdCU7JT8lcDIldFxFRzglOyU/JXAzJXRcRUc0JTslPyVwNCV0XEVHMiU7JT8lcDUldFxFR3AlOyU/JXA2JXRcRUdcLCU7JT8lcDcldFxFRzElOyU/JXA4JXRcRSYlOyU/JXA5JXRcRSQlZVxFJSUlOywKKwlzZ3IwPVxFRzBcRSUsIHNtYWNzPVxFJCwgc21hbT1cRT03aCwgc21jdXA9XEUuMiwgc21kYz1cRXIsCiAJc21pcj1cRXEsIHNtbG49XEVbNDsydiwgc21zbz1cRUd0LCBzbXVsPVxFRzgsIHNteG9uPV5PLAogCXRiYz1cRTMsIHRzbD1cRVs0OzF2XEVfMzAsIHVjPVxFRzhcRUcwLAogCkBAIC04MjUyLDcgKzk5MDksNyBAQAogd3kxMjB8d3lzZTEyMHx3eTE1MHx3eXNlMTUwfFd5c2UgMTIwLzE1MCwKIAlhbSwgYncsIGhzLCBrbSwgbWM1aSwgbWlyLCBtc2dyLCB4b24sCiAJY29scyM4MCwgaXQjOCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgcGIjOTYwMSwgd3NsIzQ1LAotCWFjc2M9Ky9cLC4wW2loYTJmeGdxaDFqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfn4sCisJYWNzYz0rL1wsLjBbYTJmeGdxaDFpaGpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKIAliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8NTA+LAogCWNub3JtPVxFYDEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAogCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXJDw3PiwKQEAgLTgzMzEsNyArOTk4OCw3IEBACiB3eTYwfHd5c2U2MHxXeXNlIDYwLAogCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsCiAJY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzQ1LAotCWFjc2M9Ky9cLC4wW2loYTJmeGdxaDFqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfn4sCisJYWNzYz0rL1wsLjBbYTJmeGdxaDFpaGpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKIAliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8MTAwPiwKIAljbm9ybT1cRWAxLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKIAljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLApAQCAtODUwMCw3ICsxMDE1Nyw3IEBACiB3eTk5Znx3eTk5Zmd0fHd5LTk5Zmd0fFd5c2UgV1ktOTlHVCAoaW50J2wgUEMga2V5Ym9hcmQpLAogCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKIAljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgd3NsIzQ2LAotCWFjc2M9J3greS53aX5fdmooaydsJm0lbilvOXEqczh0LXUudlwsdyt4PSwgYmVsPV5HLAorCWFjc2M9J3greS53X3ZpfmooaydsJm0lbilvOXEqczh0LXUudlwsdyt4PSwgYmVsPV5HLAogCWJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFJ1xFKFwwMzIsCiAJY25vcm09XEVgNFxFYDEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFaiwgY3VmMT1eTCwKIAljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLApAQCAtODU1Miw3ICsxMDIwOSw3IEBACiB3eTE2MHx3eXNlMTYwfFd5c2UgMTYwLAogCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsCiAJY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzM4LAotCWFjc2M9Ky9cLC4wW2loYTJmeGdxaDFqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfn4sCisJYWNzYz0rL1wsLjBbYTJmeGdxaDFpaGpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKIAliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8MzA+LAogCWNub3JtPVxFYDEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAogCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXJDw1PiwKQEAgLTg4NjAsNyArMTA1MTcsNyBAQAogd3kzMjV8d3lzZTMyNXxXeXNlIGVwYywKIAlhbSwgYncsIGhzLCBtYzVpLCBtaXIsCiAJY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgcGIjOTYwMSwgd3NsIzQ1LAotCWFjc2M9Ky9cLC4wW2loYTJmeGdxaDFqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfn4sCisJYWNzYz0rL1wsLjBbYTJmeGdxaDFpaGpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKIAliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8NTA+LAogCWNub3JtPVxFYDEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAogCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXJDw3PiwKQEAgLTkzMDcsNyArMTA5NjQsNyBAQAoga2VybWl0fHN0YW5kYXJkIGtlcm1pdCwKIAlPVGJzLAogCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVxFRSwgY3ViMT1eSCwgY3VmMT1cRUMsCisJY2xlYXI9XEVFLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCiAJY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGVkPVxFSiwKIAllbD1cRUssIGhvbWU9XEVILCBpczI9SzAgU3RhbmRhcmQgS2VybWl0ICA5LTI1LTg0XG4sCiAJa2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtob21lPV5eLApAQCAtOTM5Miw3ICsxMTA0OSw3IEBACiAJZmxhc2g9XEVbPzVoXEVbPzVsXEVbPzVoXEVbPzVsXEVbPzVoXEVbPzVsLAogCWZzbD1cRVswJH0sIGhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaHRzPVxFSCwKIAlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFPlxFIEZcRVs/MWxcRVs/N2hcRVtyXEVbMiR+LCBrYnM9XkgsIGtjdWIxPVxFT0QsCisJaXMyPVxFPlxFIEZcRVs/MWhcRVs/N2hcRVtyXEVbMiR+LCBrYnM9XkgsIGtjdWIxPVxFT0QsCiAJa2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2RsMT1cRVszfiwga2YwPVxFWzIxfiwKIAlrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y2PVxFWzE3fiwKIAlrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LApAQCAtOTY0Niw3ICsxMTMwMyw3IEBACiAJcGxuPVxFWyVwMSVkOzAwcSVwMiU6LTE2cywgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKIAlybWFjcz1eTywgcm1zbz1cRVttLCBybXVsPVxFW20sIHJzMj1cRWNcRVs/M2xcRVsyOzB5LAogCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA1JXwldDsyJTslPyVwMiVwNiV8JXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAorCXNncj1cRVswJT8lcDElcDUlfCVwNiV8JXQ7MiU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAzJXAxJXwlcDYlfCV0OzclOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCiAJc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCiAJdHNsPVxFN1xFWzI1OyVwMSV7MX0lKyVkSCwKIApAQCAtOTc0NCw3ICsxMTQwMSw3IEBACiAJcGxuPVxFWyVwMSVkOzA7MDswcSVwMiU6LTE2LjE2cywgcHJvdD1cRVYsCiAJcmluPVxFWyVwMSVkRiwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCiAJcm1reD1cRVsxOTswalxFWzIxOzFqXDIxMiwgcm1sbj1cRXwsCi0Jc2dyPVxFWzAlPyVwMSVwNSV8JXQ7MiU7JT8lcDIlcDYlfCV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCVwNiV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKKwlzZ3I9XEVbMCU/JXAxJXA1JXwlcDYlfCV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTslPyVwNyV0OzglO20lPyVwOCV0XEVWJTslPyVwOSV0XDAxNiVlXDAxNyU7LAogCXNncjA9XEVbbVwwMTcsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAogCXNta3g9XEVbMTk7MWpcRVsyMTs0alxFZW50LCBzbWxuPVxFfiwgdGJjPVxFWzNnLAogCXRzbD1cRTdcRVsyNTslcDElezh9JSslZEgsIHZwYT1cRVslcDElezF9JSslZGQsCkBAIC05NzkyLDE0ICsxMTQ0OSwxNCBAQAogCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCiAJYmxpbms9XEVbNW0sIGNidD1cRVsxWiwgY2xlYXI9XEVIXEVKLCBjbm9ybT1cRVsxMTswaiwKIAljcj1cRUcsIGNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQxPVxFWzFCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFWzFDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3Z2aXM9XEVbMTE7MWosCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwKLQlkbDE9XEVbTSwgZWNoPVxFWyVwMSVkc1xFWyVwMSVkRCwgZWQ9XEVbMEosIGVsPVxFWzBLLAotCWVsMT1cRVsxSywgZmxhc2g9XEVbPzVoJDwyMDA+XEVbPzVsLCBmc2w9XEU4LCBob21lPVxFW0gsCi0JaHBhPVxFWyVwMSV7MX0lKyVkRywgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsCi0JaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGluZG49XEVbJXAxJWRFLAotCWludmlzPVxFWzhtLAorCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbMUIsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbMUMsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFWzFBLAorCWN2dmlzPVxFWzExOzFqLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwKKwlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlY2g9XEVbJXAxJWRzXEVbJXAxJWRELCBlZD1cRVswSiwKKwllbD1cRVswSywgZWwxPVxFWzFLLCBmbGFzaD1cRVs/NWgkPDIwMD5cRVs/NWwsIGZzbD1cRTgsCisJaG9tZT1cRVtILCBocGE9XEVbJXAxJXsxfSUrJWRHLCBodD1eSSwgaHRzPVxFSCwKKwlpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKKwlpbmRuPVxFWyVwMSVkRSwgaW52aXM9XEVbOG0sCiAJaXMxPVxFWzA7MjNyXEV4XEV5XEVbMjswalxFWzM7M2pcRVs0OzBqXEVbNTswalxFWzY7MGpcRVs3OzBqXEVbODswalxFWzk7MWpcRVsxMDswalxFWzE1OzBqXEVbMTY7MWpcRVsxOTswalxFWzIwOzFqXEVbMjk7MGpcRVsxOzI0ciwKIAlrYmVnPVxFdCwga2JzPV5ILCBrY2J0PVxFW1osIGtjbHI9XEVbMkosIGtjdWIxPVxFW0QsCiAJa2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbUCwga2RsMT1cRVtNLApAQCAtOTk1MCw3ICsxMTYwNyw3IEBACiAJcmV2PVxFWzdtLCByaT1cRU0sIHJpbj1cRVslcDElZEYsIHJtYWNzPV5PLCBybWFtPVxFWz83bCwKIAlybWlyPVxFWzRsLCBybWt4PVxFWzIxOzBqXEVbMjU7MWpcMjEyLCBybWxuPVxFfCwKIAlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMyPVxFY1xFWz8zbFxFWzI7MHksIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA1JXwldDsyJTslPyVwMiVwNiV8JXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAorCXNncj1cRVswJT8lcDUlcDYlfCV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTslPyVwNyV0OzglO20lPyVwOCV0XEVWJTslPyVwOSV0XDAxNiVlXDAxNyU7LAogCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKIAlzbWt4PVxFWzIxOzFqXEVbMjU7NGpcRWVudFxFfiwgc21sbj1cRX4sIHNtc289XEVbN20sCiAJc211bD1cRVs0bSwgdGJjPVxFWzNnLCB0c2w9XEU3XEVbMjU7JXAxJXs4fSUrJWRILApAQCAtOTk3Miw3ICsxMTYyOSw3IEBACiAJYmVsPV5HLCBib2xkPVxFWzVtLCBjbGVhcj1cRVtIXEVbMkpcRVsxVVxFW0hcRVsySlxFWzFWLAogCWNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKIAljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVAsCisJY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFUCwKIAlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVswSywgaG9tZT1cRVtILAogCWhwYT1cRVslcDElZEcsIGh0PV5JLCBodHM9XEUxLCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFXF4sCiAJaWw9XEVbJXAxJWRMLCBpbDE9XEVMLCBpbmQ9XkosIGluZG49XEVbJXAxJWRTLApAQCAtMTAwMDAsNyArMTE2NTcsNyBAQAogCWFjc2M9K2dcLGgtZi5lYGJocmlzampra2xsbW1ubnFxdHR1dXZ2d3d4eHt7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMjs3bSwgY2J0PVxFW1osCiAJY2l2aXM9XEVbMTE7MHwsIGNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVsxMTszfCwgY3I9Xk0sCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVsxQiwKKwljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCiAJY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCiAJY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBjdnZpcz1cRVsxMTsyfCwgZGNoPVxFWyVwMSVkUCwKIAlkY2gxPVxFW1AsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbMEosCkBAIC0xMDAzMyw3ICsxMTY5MCw3IEBACiAJYWNzYz0rZ1wsaC1mLmVgYmhyaXNqamtrbGxtbW5ucXF0dHV1dnZ3d3h4e3t8fH19fn4sCiAJYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsyOzdtLCBjYnQ9XEVbWiwKIAljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbMTE7M3wsIGNyPV5NLCBjdWI9XEVbJXAxJWRELAotCWN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbMUIsIGN1Zj1cRVslcDElZEMsCisJY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAogCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAogCWN1dTE9XEVbQSwgY3Z2aXM9XEVbMTE7MnwsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKIAlkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFWzBKLCBlbD1cRVswSywKQEAgLTEwMjMwLDggKzExODg3LDggQEAKIAlrZGwxPVxFW00sIGtlbmQ9XEVbRiwga2YxPVxFW00sIGtmMTA9XEVbViwga2YyPVxFW04sCiAJa2YzPVxFW08sIGtmND1cRVtQLCBrZjU9XEVbUSwga2Y2PVxFW1IsIGtmNz1cRVtTLCBrZjg9XEVbVCwKIAlrZjk9XEVbVSwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwga25wPVxFW0csIGtwcD1cRVtJLAotCXJtc2M9NDAwXEVbNTA7MHwsIHNtc2M9MjUwXEVbPzExbFxFWzUwOzF8LCB4b2ZmYz1nLAotCXhvbmM9ZSwgdXNlPWF0dDYwNSwKKwlybXNjPVxFWzUwOzB8JDw0MDA+LCBzbXNjPVxFWz8xMWxcRVs1MDsxfCQ8MjUwPiwKKwl4b2ZmYz1nLCB4b25jPWUsIHVzZT1hdHQ2MDUsCiBhdHQ2MDUtd3xBVCZUIDYwNS13IDEzMiBjb2x1bW4gMTAyIGtleSBrZXlib2FyZCwKIAljb2xzIzEzMiwgd3NsIzEzMiwKIAlpczE9XEVbODswfFxFWz80OzU7MTM7MTVsXEVbMTM7MjBsXEVbPzM7N2hcRVsxMmhcRShCXEUpMCwKQEAgLTEwMzQ3LDcgKzEyMDA0LDcgQEAKIAlyaT1cRU0sIHJpbj1cRVslcDElZFQsIHJtYWNzPVxFKEJcMDE3LCBybWFtPVxFWz83bCwKIAlybWlyPVxFWzRsLCBybWxuPVxFWzJwLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKIAlyczI9XEVjXEVbPzNsLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKKwlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDUldDsyJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCV0OzclOyU/JXA3JXQ7OCU7bSU/JXA5JXRcRSkwXDAxNiVlXEUoQlwwMTclOywKIAlzZ3IwPVxFW21cRShCXDAxNywgc21hY3M9XEUpMFwwMTYsIHNtYW09XEVbPzdoLAogCXNtaXI9XEVbNGgsIHNtbG49XEVbcCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKIAl0c2w9XEU3XEVbMjU7JWklcDElZHgsCkBAIC0xMDQwNyw3ICsxMjA2NCw3IEBACiAJbWM1PVxFWz81aSwgbmVsPV5NXkosIHBmeD1cRVslcDElZDslcDIlbCVkcSVwMiVzLCByYz1cRTgsCiAJcmV2PVxFWzdtLCByaT1cRU0sIHJpbj1cRVslcDElZFQsIHJtaXI9XEVbNGwsIHJtc289XEVbbSwKIAlybXVsPVxFW20sIHJzMj1cRWMsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAyJXQ7NCU7JT8lcDElcDMlfCVwNCV8JXA1JXwldDs3JTttLAorCXNncj1cRVswJT8lcDUldDsyJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDElcDMlfCVwNCV8JXQ7NyU7bSwKIAlzZ3IwPVxFW20sIHNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCiBhdHQ2MzAtMjR8NTYzMC0yNHw1NjMwRE1ELTI0fDYzME1URy0yNHxBVCZUIDYzMCB3aW5kb3dpbmcgdGVybWluYWwgMjQgbGluZXMsCiAJbGluZXMjMjQsIHVzZT1hdHQ2MzAsCkBAIC0xMTA1NywyMyArMTI3MTQsMjMgQEAKIAlyZXA9JXAxJWNcRVslcDIlezF9JS0lZGIsIHJldj1cRVs3bSwKIAlybWt4PVxFUGA+eX5bW0pgOHh5fltbQWA0eHl+W1tEYDZ4eX5bW0NgMnh5fltbQlxFXFwsCiAJcm1tPVxFWz41MmwsIHJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsCi0Jc2dyPVxFWyU/JXAxJXQ3OyU7JT8lcDIldDQ7JTslPyVwMyV0NzslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTttLAorCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTttLAogCXNncjA9XEVbbSwKIAlzbWt4PVxFUGA+en5bW0pgOHh6fltbQWA0eHp+W1tEYDZ4en5bW0NgMnh6fltbQlxFXFwsCi0Jc21tPVxFWz41MmgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVsyZywKKwlzbW09XEVbPjUyaCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAogCXZwYT1cRVslcDElezF9JSslZGQsCiAKIGFhYStydnxhbm4gYXJib3IgYW1iYXNzYWRvciBpbiByZXZlcnNlIHZpZGVvLAogCWJsaW5rPVxFWzU7N20sIGJvbGQ9XEVbMTs3bSwgaW52aXM9XEVbNzs4bSwKIAlpczE9XEVbN21cRTdcRVtIXEU5XEU4LCByZXY9XEVbbSwgcm1zbz1cRVs3bSwgcm11bD1cRVs3bSwKIAlyczE9XEVbSFxFWzdtXEVbSiQ8MTU2PiwKLQlzZ3I9XEVbJT8lcDElcDMlfCUhJXQ3OyU7JT8lcDIldDQ7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTttLAorCXNncj1cRVslPyVwMiV0NDslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTslPyVwMSVwMiV8JXAzJSEldDc7JTslPyVwNyV0ODslO21cMDE2LAogCXNncjA9XEVbN21cMDE2LCBzbXNvPVxFW20sIHNtdWw9XEVbNDs3bSwKICMgQW1iYXNzYWRvciB3aXRoIHRoZSBERUMgb3B0aW9uLCBmb3IgcGFydGlhbCB2dDEwMCBjb21wYXRpYmlsaXR5LgogYWFhK2RlY3xhbm4gYXJib3IgYW1iYXNzYWRvciBpbiBkZWMgdnQxMDAgbW9kZSwKIAlhY3NjPWFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX0sCiAJY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBlbmFjcz1cRSgwLCBybWFjcz1eTiwKLQlzZ3I9XEVbJT8lcDElcDMlfCUhJXQ3OyU7JT8lcDIldDQ7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTttJT8lcDkldFwwMTclZVwwMTYlOywKKwlzZ3I9XEVbJT8lcDIldDQ7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDElcDMlfCUhJXQ3OyU7JT8lcDcldDg7JTttJT8lcDkldFwwMTclZVwwMTYlOywKIAlzbWFjcz1eTywKIGFhYS0xOHxhbm4gYXJib3IgYW1iYXNzYWRvci8xOCBsaW5lcywKIAlsaW5lcyMxOCwKQEAgLTExMjQwLDcgKzEyODk3LDcgQEAKIAlibGluaz1cRVs1OzdtLCBib2xkPVxFWzE7N20sIGhvbWU9XEVbSCwgaW52aXM9XEVbNzs4bSwKIAlpczE9XEVbN21cRTdcRVtIXEU5XEU4LCByZXY9XEVbbSwgcm1zbz1cRVs3bSwgcm11bD1cRVs3bSwKIAlyczE9XEVbSFxFWzdtXEVbSiwKLQlzZ3I9XEVbJT8lcDElISV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTttLAorCXNncj1cRVslPyVwNiV0MTslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXAxJSEldDc7JTslPyVwNyV0ODslO20sCiAJc2dyMD1cRVs3bSwgc21zbz1cRVttLCBzbXVsPVxFWzQ7N20sCiAKICMjIyMgQXBwbGllZCBEaWdpdGFsIERhdGEgU3lzdGVtcyAoYWRkcykKQEAgLTExNDMwLDcgKzEzMDg3LDcgQEAKIGNpdDgwfGNpdC04MHxjaXRvaCA4MCwKIAlPVGJzLCBhbSwKIAljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRVtIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VmMT1cRVtDLAorCWNsZWFyPVxFW0hcRUosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKIAljdXA9XEVbJWklcDElMmQ7JXAyJTJkSCwgY3V1MT1cRVtBLCBlZD1cRUosIGVsPVxFSywgZmY9XkwsCiAJaW5kPV5KLCBpczI9XEU+LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAogCWtjdXUxPVxFT0EsIHJta3g9XEVbPzFsXEU+LCBzbWt4PVxFWz8xaFxFPSwKQEAgLTExNDM5LDkgKzEzMDk2LDkgQEAKIGNpdDEwMXxjaXRjfEMuaXRvaCBmYXN0IHZ0MTAwLAogCU9UYnMsIGFtLCB4ZW5sLAogCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVbSFxFWzJKLCBjbm9ybT1cRVtWXEU4LCBjdWIxPV5ILCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGN2dmlzPVxFN1xFW1UsCi0JZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKKwliZWw9XkcsIGNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbVlxFOCwgY3ViMT1eSCwgY3VkMT1cRVtCLAorCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCisJY3Z2aXM9XEU3XEVbVSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKIAlmbGFzaD1cRVs/NWgkPDIwMC8+XEVbPzVsLCBpY2gxPVxFW0AsIGlsMT1cRVtMLAogCWlzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVszZ1xFWz41ZywKIAlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLApAQCAtMTE0NTksOSArMTMxMTYsOSBAQAogCU9UYnMsIE9UcHQsIGFtLCBtaXIsIG1zZ3IsCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCiAJYWNzYz0sIGNsZWFyPVxFW0hcRVtKLCBjbm9ybT0sIGNzcj1cRVslaSVwMSUyZDslcDIlMmRyLAotCWN1ZDE9XEVbQiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElMmQ7JXAyJTJkSCwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWz8xbFxFWz80bFxFWz83aCwgZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBpZj0vdXNyL3NoYXJlL3RhYnNldC92dDEwMCwgaWwxPVxFW0wsCisJY3ViMT1cRVtELCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsCisJY3V1MT1cRVtBLCBjdnZpcz1cRVs/MWxcRVs/NGxcRVs/N2gsIGRjaDE9XEVbUCwgZGwxPVxFW00sCisJZWQ9XEVbSiwgZWw9XEVbSywgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsIGlsMT1cRVtMLAogCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtmMD1cRU9ULAogCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPbSwga2Y2PVxFT2wsCiAJa2Y3PVxFT00sIGtmOD1cRU9uLCByYz1cRTgsIHJpPVxFTSwgcm1hY3M9Xk8sIHJtaXI9XEVbNGwsCkBAIC0xMjA4Miw3ICsxMzczOSw3IEBACiAjCSBhbmQgbWM1PSBzaG91bGQgdXNlIHRoZSBcRVs/NGkgYW5kIFxFWz81aSBzdHJpbmdzIGluc3RlYWQpLgogCiBoZHMyMDB8SHVtYW4gRGVzaWduZWQgU3lzdGVtcyBIRFMyMDAsCi0JYW0sIGJ3LCBlc2xvaywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKKwlhbSwgYncsIGVzbG9rLCBocywga20sIG1pciwgbXNnciwgeGVubCwgeG9uLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBsbSMwLAogCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29xcXNzdHR1dXZ2d3d4eH5+LCBiZWw9XkcsCiAJYmxpbms9XEVbMDs1bSwgYm9sZD1cRVswOzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbNit7LApAQCAtMTIxMTEsMTMgKzEzNzY4LDEyIEBACiAJa2Y1MT1eXDA1MVxyLCBrZjUyPV5cMDUyXHIsIGtmNTM9XlwwNTNcciwga2Y2PV5cMDA2XHIsCiAJa2Y3PV5cMDA3XHIsIGtmOD1eXDAwOFxyLCBrZjk9XlwwMDlcciwga2hvbWU9XEVbSCwKIAlraW5kPVxFW1QsIGtucD1cRVtVLCBrcHA9XEVbViwga3JpPVxFW1MsIGxsPVxFW0hcRVtBLAotCW1jMD1cRVtpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgbmVsPVxFW0UsIHJjPVxFOCwKLQlyZXY9XEVbMDs3bSwgcmk9XEVNLCBybWFjcz1eTywgcm1pcj1cRVs0bCwgcm1zbz1cRVttXDAxNywKLQlybXVsPVxFW21cMDE3LCBzYz1cRTcsCisJbmVsPVxFW0UsIHJjPVxFOCwgcmV2PVxFWzA7N20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtaXI9XEVbNGwsCisJcm1zbz1cRVttXDAxNywgcm11bD1cRVttXDAxNywgc2M9XEU3LAogCXNncj1cRVswJT8lcDElcDYlTyV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyVPJXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKIAlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21pcj1cRVs0aCwgc21zbz1cRVswOzE7N20sCiAJc211bD1cRVswOzRtLCB0YmM9XEVbM2csIHRzbD1cRVsyIXdcRVslaSVwMSVkRywKLQl2cGE9XEVbJWklcDElZGQsCisJdnBhPVxFWyVpJXAxJWRkLCB1c2U9YW5zaStwcCwKIAogIyA8aHQ+IHRocm91Z2ggPGVsPiBpbmNsdWRlZCB0byBzcGVjaWZ5IHBhZGRpbmcgbmVlZGVkIGluIHJhdyBtb2RlLgogIyAoYXZ0LW5zOiBhZGRlZCBlbXB0eSA8YWNzYz4gdG8gc3VwcHJlc3MgYSB0aWMgd2FybmluZyAtLWVzcikKQEAgLTEyMTQ0LDEwICsxMzgwMCwxMSBAQAogCXJpPVxFTSQ8ND4sIHJtYWNzPVwwMTYkPDE+LCBybWN1cD1cRVt3XEUyXHJcbiwKIAlybWlyPVxFWzRsLCBybWt4PVxFWyF6XEVbMDsydSwgcm1zbz1cRVs3IXssIHJtdWw9XEVbNCF7LAogCXNjPVxFNywKLQlzZ3I9XEVbJT8lcDEldDc7JTslPyVwMiV0NDslOyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwNiV0MTslO20sCi0Jc2dyMD1cRVttLCBzbWFjcz1cMDE3JDwxPiwgc21jdXA9XEVbPTRsXEVbMTsyNHdcRTJcciwKLQlzbWlyPVxFWzRoLCBzbWt4PVxFWzEhelxFWzA7M3UsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0JdGJjPVxFWzJnLCB2cGE9XEVbJXAxJXsxfSUrJWRkLAorCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTslPyVwOCV0OTk7JTttJT8lcDUldFxFWzEheyU7JT8lcDkldFwwMTclZVwwMTYlOyQ8MT4sCisJc2dyMD1cRVttXDAxNiQ8MT4sIHNtYWNzPVwwMTckPDE+LAorCXNtY3VwPVxFWz00bFxFWzE7MjR3XEUyXHIsIHNtaXI9XEVbNGgsCisJc21reD1cRVsxIXpcRVswOzN1LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCisJdnBhPVxFWyVwMSV7MX0lKyVkZCwKIGF2dC1ydi1uc3xjb25jZXB0IGF2dCBpbiByZXZlcnNlIHZpZGVvIG1vZGUvbm8gc3RhdHVzIGxpbmUsCiAJZmxhc2g9XEVbPTIwNWwkPDIwMD5cRVs9MjA1aCwgaXMxPVxFWz0xMDNsXEVbPTIwNWgsCiAJdXNlPWF2dC1ucywKQEAgLTEyMzU3LDcgKzE0MDE0LDcgQEAKIGRndW5peCtjY2N8Q29uZmlndXJhYmxlIGNvbG9yIGluZm8gZm9yIERHIEQ0MzBDIHRlcm1pbmFscyBpbiBERy1VTklYIG1vZGUsCiAJYmNlLCBjY2MsCiAJY29sb3JzIzUyLCBuY3YjNTMsIHBhaXJzIzI2LAotCWluaXRwPVwwMzZSRzAlcDElMDJYJXAyJXsyNTZ9JSolezEwMDF9JS8lMDJYJXAzJXsyNTZ9JSolezEwMDF9JS8lMDJYJXA0JXsyNTZ9JSolezEwMDF9JS8lMDJYJXA1JXsyNTZ9JSolezEwMDF9JS8lMDJYJXA2JXsyNTZ9JSolezEwMDF9JS8lMDJYJXA3JXsyNTZ9JSolezEwMDF9JS8lMDJYLAorCWluaXRwPVwwMzZSRzAlcDElMDJYJXAyJXsyNTV9JSolezEwMDB9JS8lMDJYJXAzJXsyNTV9JSolezEwMDB9JS8lMDJYJXA0JXsyNTV9JSolezEwMDB9JS8lMDJYJXA1JXsyNTV9JSolezEwMDB9JS8lMDJYJXA2JXsyNTV9JSolezEwMDB9JS8lMDJYJXA3JXsyNTV9JSolezEwMDB9JS8lMDJYLAogCW9jPVwwMzZSRzAxQTAwRkYwMDAwMDAwMFwwMzZSRzAxQjAwMDAwMDAwRkYwMFwwMzZSRzAxQzAwN0YwMDAwMDAwMFwwMzZSRzAxRDAwMDAwMDAwN0YwMCwKIAlvcD1cMDM2UkY0ODMxQVwwMzZSRjJFMzFCXDAzNlJGMUQzMUNcMDM2UkYzRjMxRCwKIAlzY3A9XDAzNlJHMiVwMSUwMlgsCkBAIC0xMjM2Niw3ICsxNDAyMyw3IEBACiBkZytjY2N8Q29uZmlndXJhYmxlIGNvbG9yIGluZm8gZm9yIERHIEQ0MzBDIHRlcm1pbmFscyBpbiBERyBtb2RlLAogCWJjZSwgY2NjLAogCWNvbG9ycyM1MiwgbmN2IzUzLCBwYWlycyMyNiwKLQlpbml0cD1cMDM2UkcwJXAxJXsxNn0lLyV7NDh9JSslYyVwMSV7MTZ9JW0lezQ4fSUrJWMlcDIlezI1Nn0lKiV7MTAwMX0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjJXAzJXsyNTZ9JSolezEwMDF9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwNCV7MjU2fSUqJXsxMDAxfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMlcDUlezI1Nn0lKiV7MTAwMX0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjJXA2JXsyNTZ9JSolezEwMDF9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwNyV7MjU2fSUqJXsxMDAxfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMsCisJaW5pdHA9XDAzNlJHMCVwMSV7MTZ9JS8lezQ4fSUrJWMlcDElezE2fSVtJXs0OH0lKyVjJXAyJXsyNTV9JSolezEwMDB9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwMyV7MjU1fSUqJXsxMDAwfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMlcDQlezI1NX0lKiV7MTAwMH0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjJXA1JXsyNTV9JSolezEwMDB9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwNiV7MjU1fSUqJXsxMDAwfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMlcDclezI1NX0lKiV7MTAwMH0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjLAogCW9jPVwwMzZSRzAxXDowMD8/MDAwMDAwMDBcMDM2UkcwMTswMDAwMDAwMD8/MDBcMDM2UkcwMTwwMDc/MDAwMDAwMDBcMDM2UkcwMT0wMDAwMDAwMDc/MDAsCiAJb3A9XDAzNlJGNDgzMVw6XDAzNlJGMj4zMTtcMDM2UkYxPTMxPFwwMzZSRjM/MzE9LAogCXNjcD1cMDM2UkcyJXAxJXsxNn0lLyV7NDh9JSslYyVwMSV7MTZ9JW0lezQ4fSUrJWMsCkBAIC0xMjQwMiwxMSArMTQwNTksMTEgQEAKIGRnMjEwfGRnLWFuc2l8RGF0YSBHZW5lcmFsIDIxMC8yMTEsCiAJYW0sCiAJY29scyM4MCwgbGluZXMjMjQsCi0JT1RubD1cRVtCLCBjbGVhcj1cRVsySiwgY3VkMT1cRVtCLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1MT1cRVtBLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwKLQluZWw9XHJcRVtIXEVbQVxuLCBybXNvPVxFWzA7bSwgcm11bD1cRVswO20sIHNtc289XEVbNzttLAotCXNtdWw9XEVbNDttLAorCU9Ubmw9XEVbQiwgY2xlYXI9XEVbMkosIGN1YjE9XEVbRCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVkPVxFW0osIGVsPVxFW0ssCisJaG9tZT1cRVtILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtob21lPVxFW0gsIG5lbD1cclxFW0hcRVtBXG4sIHJtc289XEVbMDttLCBybXVsPVxFWzA7bSwKKwlzbXNvPVxFWzc7bSwgc211bD1cRVs0O20sCiAjIEZyb206IFBldGVyIE4uIFdhbiA8aWhucDQhZ2F0ZWNoIWdhY3NyIXdhbj4KICMgY291cnRlc3kgb2YgQ2FybG9zIFJ1Y2FsZGUgb2YgVmFudGFnZSBTb2Z0d2FyZSwgSW5jLgogIyAoZGcyMTE6IHRoaXMgaGFkIDxjdXA9XDAyMCVyJS4lPi4sIHdoaWNoIHdhcyBhbiBhbmNpZW50IHRlcm1jYXAgaGFuZ292ZXIuCkBAIC0xMjQxNCw3ICsxNDA3MSw3IEBACiBkZzIxMXxEYXRhIEdlbmVyYWwgZDIxMSwKIAljbm9ybT1eTCwgY3Z2aXM9XkxeUiwgaHQ9XkksIGluZEAsIGticz1eWSwga2YwQCwga2YxQCwga2YyQCwga2YzQCwKIAlrZjRALCBrZjVALCBrZjZALCBrZjdALCBrZjhALCBrZjlALCBsZjBALCBuZWw9Xk1eWiwgcm1jdXA9XkwsCi0Jcm1zbz1cMDM2RSQ8XDAvPiwgc21jdXA9XkxeUiwgc21zbz1cMDM2RCQ8NS8+LCB1c2U9ZGcyMDAsCisJcm1zbz1cMDM2RSQ8MC8+LCBzbWN1cD1eTF5SLCBzbXNvPVwwMzZEJDw1Lz4sIHVzZT1kZzIwMCwKIAogIyBkZzQ1MCBmcm9tIENvcm5lbGwgKG5vdCBvZmZpY2lhbCkKIGRnNDUwfGRnNjEzNHxkYXRhIGdlbmVyYWwgNjEzNCwKQEAgLTEyNDI5LDcgKzE0MDg2LDYgQEAKICMgYmFja3NwYWNlIG9uIGFsbCB0ZXJtaW5hbHMuICBUaGlzIGlzIG5vdCBzbyBpbiBERyBtb2RlLgogIyAoZGc0NjAtYW5zaTogcmVtb3ZlZCBvYnNvbGV0ZSAiOmtuIzY6IjsgYWxzbyByZW1vdmVkICI6bXU9XEVXOiIsIG9uIHRoZQogIyBncm91bmRzIHRoYXQgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgIjptbDoiCi0jIGZpeGVkIGdhcmJsZWQgIjprOT1cRVswMFw6ejoiIGNhcGFiaWxpdHkgLS0gZXNyKQogZGc0NjAtYW5zaXxEYXRhIEdlbmVyYWwgRGFzaGVyIDQ2MCBpbiBBTlNJLW1vZGUsCiAJT1RicywgYW0sIG1zZ3IsIHVsLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LApAQCAtMTI0NDAsMTAgKzE0MDk2LDEyIEBACiAJa2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKIAlrZjA9XEVbMDAxeiwga2YxPVxFWzAwMnosIGtmMj1cRVswMDN6LCBrZjM9XEVbMDA0eiwKIAlrZjQ9XEVbMDA1eiwga2Y1PVxFWzAwNnosIGtmNj1cRVswMDd6LCBrZjc9XEVbMDA4eiwKLQlrZjg9XEVbMDA5eiwga2Y5PVxFWzAxMHosIGtob21lPVxFW0gsIGxmMD1mMSwgbGYxPWYyLCBsZjI9ZjMsCi0JbGYzPWY0LCBsZjQ9ZjUsIGxmNT1mNiwgbGY2PWY3LCBsZjc9ZjgsIGxmOT1mMTAsIHJldj1cRVs3bSwKLQlyaT1cRVtULCBybXNvPVxFW20sIHJtdWw9XEVbMDUsIHNncjA9XEVbbSwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLAorCWtmOD1cRVswMDl6LCBrZjk9XEVbMDBcOnosIGtob21lPVxFW0gsIGxmMD1mMSwgbGYxPWYyLAorCWxmMj1mMywgbGYzPWY0LCBsZjQ9ZjUsIGxmNT1mNiwgbGY2PWY3LCBsZjc9ZjgsIGxmOT1mMTAsCisJbWMwPVxFW2ksIHJldj1cRVs3bSwgcmk9XEVbVCwgcm1zbz1cRVttLCBybXVsPVxFWzA1LAorCXNncj0lPyVwOSV0XEUoMCVlXEUoQiU7XEVbMCU/JXA1JXQ7MiU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttLAorCXNncjA9XEUoQlxFW20sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHU2PVxFWyVkOyVkUiwKKwl1Nz1cRVs2biwgdTg9XEVbNW4sIHU5PVxFWzBuLAogIyBGcm9tOiBXYXluZSBUaHJvb3AgPG1jbmMhcnRpLXNlbCFydHA0NyF0aHJvb3B3PiAobm90IG9mZmljaWFsKQogIyBEYXRhIEdlbmVyYWwgNjA1eAogIyBPdWdodCB0byB3b3JrIGZvciBhIE1vZGVsIDYyNDIsIFR5cGUgRDIxMCBhcyB3ZWxsIGFzIGEgNjA1eC4KQEAgLTEyNDkwLDcgKzE0MTQ4LDcgQEAKIAljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRpbT1cRVsybSwgZWQ9XEVbSiwgZWw9XEVbSywKIAllbDE9XEVbMUssIGhvbWU9XEVbSCwgaW5kPV5KLCBpczE9XEVbPDA7PDE7PDRsLAogCWxsPVxFW0hcRVtBLCBuZWw9XkosIHJldj1cRVs3bSwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2dyPVxFWyU/JXAxJXAzJXwlcDYlfCV0NzslOyU/JXA0JXQ1OyU7JT8lcDIlcDYlfCV0NDslOyU/JXAxJXA1JXwldDI7JTttLAorCXNncj1cRVslPyVwNCV0NTslOyU/JXAyJXA2JXwldDQ7JTslPyVwMSVwNSV8JXQyOyU7JT8lcDElcDMlfCVwNiV8JXQ3OyU7bSwKIAlzZ3IwPVxFW20sIHNtc289XEVbMjs3bSwgc211bD1cRVs0bSwgdXNlPWRna2V5cys3YiwKIAogIyBEQVNIRVIgRDIxMCBzZXJpZXMgdGVybWluYWxzIGluIERHIG1vZGUuCkBAIC0xMjY5Miw3ICsxNDM1MCw3IEBACiAJaXMyPVxFWzM7MjsyOzE7MTsxdlxFKEJcRSk0XDAxNywgbWM0PVxFWzRpLCBtYzU9XEVbNWksCiAJcmk9XEVNLCBybWFjcz1cRSk0XDAxNywgcnMxPVxFY1xFWzwyaCwKIAlyczI9XEVbNDswOzI7MTsxOzF2XEUoQlxFKTQsCi0Jc2dyPVxFWyU/JXAxJXAzJXwlcDYlfCV0NzslOyU/JXA0JXQ1OyU7JT8lcDIlcDYlfCV0NDslOyU/JXAxJXA1JXwldDI7JTttXEUpJT8lcDkldDZcMDE2JWU0XDAxNyU7LAorCXNncj1cRVslPyVwMSV0Mjs3JTslPyVwMyV0NzslOyU/JXA0JXQ1OyU7JT8lcDIldDQ7JTslPyVwMSVwNSV8JXQyOyU7JT8lcDYldDQ7NzslO21cRSklPyVwOSV0NlwwMTYlZTRcMDE3JTssCiAJc2dyMD1cRVttXEUpNFwwMTcsIHNtYWNzPVxFKTZcMDE2LCB1c2U9ZDIxMSwKIAogIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMiBzZXRzOgpAQCAtMTI4NjIsMTIgKzE0NTIwLDEyIEBACiAjCiBkNDcwY3xkNDcwfERhdGEgR2VuZXJhbCBEQVNIRVIgRDQ3MEMsCiAJaXMxPVxFWzwwOzwxOzwyOzw0bFxFWzE7MTs4MHdcRVsxOzY7PDJoLAotCXNncj1cRVslPyVwMSVwMyV8JXA2JXwldDc7JXsxfSVlJXswfSU7JVBSJT8lcDQldDU7JXsxfSVlJXswfSU7JVBCJT8lcDIlcDYlfCV0NDslezF9JWUlezB9JTslUFUlPyVwMSVwNSV8JXQyOyV7MX0lZSV7MH0lOyVQRG1cRSklPyVwOSV0NlwwMTYlZTRcMDE3JTssCisJc2dyPVxFWyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwMiV0NDslOyU/JXA2JXQ0Ozc7JTslPyVwMSV0Mjs3OyU7JT8lcDUldDI7JTttXEUpJT8lcDkldDZcMDE2JWU0XDAxNyU7LAogCXVzZT1kZytjb2xvciwgdXNlPWQ0NjAsCiAKIGQ0NzBjLTdifGQ0NzAtN2J8RGF0YSBHZW5lcmFsIERBU0hFUiBENDcwQyBpbiA3IGJpdCBtb2RlLAogCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVsxOzE7ODB3XEVbMTs2OzwyaCwKLQlzZ3I9XEVbJT8lcDElcDMlfCVwNiV8JXQ3OyV7MX0lZSV7MH0lOyVQUiU/JXA0JXQ1OyV7MX0lZSV7MH0lOyVQQiU/JXAyJXA2JXwldDQ7JXsxfSVlJXswfSU7JVBVJT8lcDElcDUlfCV0MjslezF9JWUlezB9JTslUERtJT8lcDkldFwwMTYlZVwwMTclOywKKwlzZ3I9XEVbJT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXAyJXQ0OyU7JT8lcDYldDQ7NzslOyU/JXAxJXQyOzc7JTslPyVwNSV0MjslO20lPyVwOSV0XDAxNiVlXDAxNyU7LAogCXVzZT1kZytjb2xvciwgdXNlPWQ0NjAtN2IsCiAKICMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDIgc2V0czoKQEAgLTEzMjc4LDcgKzE0OTM2LDcgQEAKIGdvMTQwfGdyYXBob24gZ28tMTQwLAogCU9UYnMsCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbSFxFWzJKJDwxMC8+LCBjdWIxPV5ILCBjdWYxPVxFW0MsCisJY2xlYXI9XEVbSFxFWzJKJDwxMC8+LCBjdWIxPV5ILCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKIAljdXA9XEVbJWklcDElMmQ7JXAyJTJkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNLAogCWVkPVxFW0okPDEwLz4sIGVsPVxFW0ssIGh0PV5JLAogCWlmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MTAwLCBpbDE9XEVbTCwKQEAgLTEzMzk0LDcgKzE1MDUyLDcgQEAKIAlzbXNvPVxFXzEsIHNtdWw9XEVfMCwgdGJjPVxFMywKIHNiaXxzdXBlcmJlZXxiZWVoaXZlIHN1cGVyYmVlIGF0IEluZGlhbmEgVS4sCiAJeHNiLAotCWNyPVxyJDwxPiwgaWwxPTFcRU5cRUwkPDk+XEVRIFxFUCQ8OT4gXEVPXEVSXEVBLAorCWNyPVxyJDwxPiwgaWwxPVxFTiQ8MT5cRUwkPDk+XEVRIFxFUCQ8OT4gXEVPXEVSXEVBLAogCXVzZT1zYjEsCiAjIEFsdGVybmF0ZSAob2xkZXIpIGRlc2NyaXB0aW9uIG9mIFN1cGVyYmVlIC0gZjE9ZXNjYXBlLCBmMj1eQy4KICMgTm90ZTogdGhlcmUgYXJlIGF0IGxlYXN0IDMga2luZHMgb2Ygc3VwZXJiZWVzIGluIHRoZSB3b3JsZC4gIFRoZSBzYjEKQEAgLTEzNDIzLDcgKzE1MDgxLDcgQEAKIHNiMnxzYjN8Zml4ZWQgc3VwZXJiZWUsCiAJeHNiQCwgdXNlPXN1cGVyYmVlLAogCi0jIyMjICBCZWVoaXZlIE1lZGljYWwgRWxlY3Ryb25pY3MKKyMjIyMgQmVlaGl2ZSBNZWRpY2FsIEVsZWN0cm9uaWNzCiAjCiAjIFN0ZXZlIFNleW1vdXIgPHNyc2V5bW91ckBtaW5kc3ByaW5nLmNvbT4gd3JpdGVzIChXZWQsIDAzIEZlYiAxOTk5KToKICMgUmVnYXJkaW5nIHlvdXIgcXVlc3Rpb24gdGhvdWdoOyBCZWVoaXZlIHRlcm1pbmFscyB3ZXJlbid0IG1hZGUgYnkgSGFycmlzLgpAQCAtMTM2NjgsMzEgKzE1MzI2LDQyIEBACiAJc2dyMD1cRTRAXEU+Qiwgc21hY3M9XEU+QSwgc21jdXA9XEU+QiwgdXNlPWlibTMxNjIsCiAjIEZyb206IE1hcmsgRWFzdGVyIDxtYXJrZUBmc2ktc3NkLmNzZy5zc2QuZnNpLmNvbT4gMjkgT2N0IDE5OTIKICMgcmVtb3ZlZCBrZW5kLCBrbnAsIGtwcCAtVEQKKyMKKyMgRnJvbTogU3RlcGhlbiBQb3dlbGwgPHpsaW51eG1hbkB3b3d3YXkuY29tPiAyMyBBcHIgMjAxNQorIyBBZGRlZCBpY2gxIChraWNoMSB3aXRob3V0IGljaDEgZG9lc24ndCBtYWtlIHNlbnNlKS4KKyMgQWRkZWQgaWwxIChraWwxIHdpdGhvdXQgaWwxIGRvZXNuJ3QgbWFrZSBzZW5zZSkuCisjIEFkZGVkIHhvbiAodGVybWluYWwgdXNlcyBYT04vWE9GRiBmbG93IGNvbnRyb2wpLgorIwogaWJtMzE2MXxpYm0zMTYzfHd5NjAtMzE2WHx3eXNlNjAtMzE2WHxJQk0gMzE2MS8zMTYzIGRpc3BsYXksCi0JT1RicywgYW0sIG1pciwgbXNnciwKKwlPVGJzLCBhbSwgbWlyLCBtc2dyLCB4b24sCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCiAJYWNzYz1qXDM1MmtcMzUzbFwzNTRtXDM1NW5cMzU2cVwzNjF0XDM2NHVcMzY1dlwzNjZ3XDM2N3hcMzcwLAogCWJlbD1eRywgYmxpbms9XEU0RCwgYm9sZD1cRTRILCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPVxFRCwKIAljdWQxPVxFQiwgY3VmMT1cRUMsIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1cRUEsIGRjaDE9XEVRLCBkbDE9XEVPLCBlZD1cRUosIGVsPVxFSSwgaG9tZT1cRUgsIGluZD1eSiwKLQlpbnZpcz1cRTRQLCBrYnM9XkgsIGtjYnQ9XEUyLCBrY2xyPVxFTFxyLCBrY3RhYj1cRTEsCi0Ja2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZGNoMT1cRVEsCi0Ja2RsMT1cRU8sIGtlZD1cRUosIGtlbD1cRUksIGtmMT1cRWFcciwga2YxMD1cRWpcciwKLQlrZjExPVxFa1xyLCBrZjEyPVxFbFxyLCBrZjEzPVxFIWFcciwga2YxND1cRSFiXHIsCi0Ja2YxNT1cRSFjXHIsIGtmMTY9XEUhZFxyLCBrZjE3PVxFIWVcciwga2YxOD1cRSFmXHIsCi0Ja2YxOT1cRSFnXHIsIGtmMj1cRWJcciwga2YyMD1cRSFoXHIsIGtmMjE9XEUhaVxyLAotCWtmMjI9XEUhalxyLCBrZjIzPVxFIWtcciwga2YyND1cRSFsXHIsIGtmMz1cRWNcciwKLQlrZjQ9XEVkXHIsIGtmNT1cRWVcciwga2Y2PVxFZlxyLCBrZjc9XEVnXHIsIGtmOD1cRWhcciwKLQlrZjk9XEVpXHIsIGtob21lPVxFSCwga2h0cz1cRTAsIGtpY2gxPVxFUCBcMDEwLCBraWwxPVxFTiwKLQlrdGJjPVxFIDEsIG1jND1eUF5ULCBtYzU9XlBeUiwgcmV2PVxFNEEsIHJtY3VwPVxFPkEsCi0Jcm1zbz1cRTRALCBybXVsPVxFNEAsCisJY3V1MT1cRUEsIGRjaDE9XEVRLCBkbDE9XEVPLCBlZD1cRUosIGVsPVxFSSwgaG9tZT1cRUgsCisJaWNoMT1cRVAgXDAxMCwgaWwxPVxFTiwgaW5kPV5KLCBpbnZpcz1cRTRQLCBrYnM9XkgsIGtjYnQ9XEUyLAorCWtjbHI9XEVMXHIsIGtjdGFiPVxFMSwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKKwlrY3V1MT1cRUEsIGtkY2gxPVxFUSwga2RsMT1cRU8sIGtlZD1cRUosIGtlbD1cRUksIGtmMT1cRWFcciwKKwlrZjEwPVxFalxyLCBrZjExPVxFa1xyLCBrZjEyPVxFbFxyLCBrZjEzPVxFIWFcciwKKwlrZjE0PVxFIWJcciwga2YxNT1cRSFjXHIsIGtmMTY9XEUhZFxyLCBrZjE3PVxFIWVcciwKKwlrZjE4PVxFIWZcciwga2YxOT1cRSFnXHIsIGtmMj1cRWJcciwga2YyMD1cRSFoXHIsCisJa2YyMT1cRSFpXHIsIGtmMjI9XEUhalxyLCBrZjIzPVxFIWtcciwga2YyND1cRSFsXHIsCisJa2YzPVxFY1xyLCBrZjQ9XEVkXHIsIGtmNT1cRWVcciwga2Y2PVxFZlxyLCBrZjc9XEVnXHIsCisJa2Y4PVxFaFxyLCBrZjk9XEVpXHIsIGtob21lPVxFSCwga2h0cz1cRTAsIGtpY2gxPVxFUCBcMDEwLAorCWtpbDE9XEVOLCBrdGJjPVxFIDEsIG1jND1eUF5ULCBtYzU9XlBeUiwgcmV2PVxFNEEsCisJcm1jdXA9XEU+QSwgcm1zbz1cRTRALCBybXVsPVxFNEAsCiAJc2dyPVxFNCV7NjR9JT8lcDEldCV7NjV9JXwlOyU/JXAyJXQlezY2fSV8JTslPyVwMyV0JXs2NX0lfCU7JT8lcDQldCV7Njh9JXwlOyU/JXA1JXQlezY0fSV8JTslPyVwNiV0JXs3Mn0lfCU7JT8lcDcldCV7ODB9JXwlOyVjJT8lcDkldFxFPkElZVxFPEAlOywKIAlzZ3IwPVxFNEBcRTxALCBzbWN1cD1cRT5BLCBzbXNvPVxFNEEsIHNtdWw9XEU0QiwKIAogaWJtMzE2MS1DfElCTSAzMTYxLUMgTkxTIHRlcm1pbmFsIHVzaW5nIGNhcnRyaWRnZSwKIAlybWN1cD1cRT5CLCBzMGRzPVxFPkIsIHMxZHM9XEU+QSwgc21jdXA9XEU+QiwgdXNlPWlibTMxNjEsCisjCisjIEZyb206IFN0ZXBoZW4gUG93ZWxsIDx6bGludXhtYW5Ad293d2F5LmNvbT4gMjMgQXByIDIwMTUKKyMgRGVsZXRlZCBpbDEuICAoaWwxIHdpbGwgbm93IGJlIGluaGVyaXRlZCBmcm9tIGlibTMxNjEtQywgd2hpY2ggaW5oZXJpdHMKKyMgaXQgZnJvbSBpYm0zMTYxLgorIwogaWJtMzE2MnxJQk0gMzE2MiBkaXNwbGF5LAotCWJsaW5rPVxFNCRhLCBib2xkPVxFNChhLCBpbDE9XEVOLCBpbnZpcz1cRTQwYSwgcmV2PVxFNCFhLAorCWJsaW5rPVxFNCRhLCBib2xkPVxFNChhLCBpbnZpcz1cRTQwYSwgcmV2PVxFNCFhLAogCXJtc289XEU0PmIsIHJtdWw9XEU0PWIsIHNncjA9XEU0QCwgc21zbz1cRTQhYSwgc211bD1cRTQiYSwKIAl1c2U9aWJtMzE2MS1DLAogCkBAIC0xMzg5MCw2ICsxNTU1OSw4IEBACiAJc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglO20lPyVwOSV0XEUoMCVlXEUoQiU7LAogCXNncjA9XEVbMG0sIHNtYWNzPVxFKDAsIHNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCiAJdGJjPVxFWzNnLAorIyAiTWVnYXBlbCIgcmVmZXJzIHRvIHRoZSBkaXNwbGF5IGFkYXB0ZXIsIHdoaWNoIHdhcyB1c2VkIHdpdGggdGhlIElCTSBSVAorIyBha2EgSUJNIDYxNTAuCiBpYm01MDgxfGhmdHxJQk0gTWVnYXBlbCBDb2xvciBkaXNwbGF5LAogCWFjc2M9ampra2xsbW1ubnFxdHR1dXZ2d3d4eCwgYmxpbmtALCBib2xkQCwgczBkcz1cRShCLAogCXMxZHM9XEUoMCwgc2dyMD1cRVswbVxFKEIsIHVzZT1pYm01MTU0LApAQCAtMTQyNDQsNyArMTU5MTUsNyBAQAogCWlzMT1cRUNcRS4zXEVERlxFVjFcRWdcRVswWlosIG5lbD1eXywgcmV2PVxFWzRaWiwKIAlybWlyPVxFciwgcm1zbz1cRVslZ2glezR9JV4lUGglZ2glZFpaLAogCXJtdWw9XEVbJWdoJXs4fSVeJVBoJWdoJWRaWiwgcnMyPVxFbzEsCi0Jc2dyPVxFWyV7MH0lPyVwMSV0JXs0fSV8JTslPyVwMiV0JXs4fSV8JTslPyVwMyV0JXs0fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwNyV0JXsxfSV8JTtaWiwKKwlzZ3I9XEVbJScwJyU/JXAxJXQlJzgnJXwlOyU/JXAyJXQlJzgnJXwlOyU/JXAzJXQlJzQnJXwlOyU/JXA0JXQlJzInJXwlOyU/JXA3JXQlJzEnJXwlOyVjWlosCiAJc2dyMD1cRVswWlosIHNtaXI9XEVxLCBzbXNvPVxFWzhaWiwgc211bD1cRVs4WlosIHRiYz1cRTMsCiBpY2w2NDA0LXd8a2RzNzM3Mi13fElDTCA2NDA0IGFrYSBLb2t1c2FpIERpc3BsYXkgU3lzdGVtcyA3MzcyIDEzMiBjb2xzLAogCXJzMj1cRW8xLCB1c2U9aWNsNjQwNCwKQEAgLTE0Mjc0LDkgKzE1OTQ1LDkgQEAKIGludGV4dDJ8aW50ZXh0aWl8SU5URVJBQ1RJVkUgbW9kaWZpZWQgb3dsIDEyNTEsCiAJYW0sIGJ3LCB1bCwKIAljb2xzIzgwLCBsaW5lcyMyNCwgeG1jIzAsCi0JYmVsPV5HLCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKKwliZWw9XkcsIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWIxPVxFW0QsCisJY3VkMT1cRVtCLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLAorCWRjaDE9XEVbUCwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssCiAJZmxhc2g9XEVbOzs7Ozs7Ozs7Mjs7dSQ8MjAwLz5cRVs7Ozs7Ozs7OzsxOzt1LAogCWhwYT1cRVslcDElezF9JSslZEcsIGh0PV5JLCBpY2gxPVxFW0AsIGlsMT1cRVtMLCBpbmQ9XEVbUywKIAlrYnM9XkgsIGtjdWIxPVxFRFxyLCBrY3VkMT1cRUJcciwga2N1ZjE9XEVDXHIsIGtjdXUxPVxFQVxyLApAQCAtMTQ1NjEsNyArMTYyMzIsNyBAQAogIyAoZXNyOiBjb21tZW50ZWQgb3V0IDxzbWFjcz4vPHJtYWNzPiBiZWNhdXNlIHRoZXJlJ3Mgbm8gPGFjc2M+KQogIwogcHJpc205fHA5fFA5fE1EQyBQcmlzbS05IGluIEFOU0lJIG1vZGUsCi0JYW0sIGJ3LCBocywgbWM1aSwgbXNnciwgeGVubCwgeG9uLAorCWFtLCBidywgaHMsIG1zZ3IsIHhlbmwsIHhvbiwKIAljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgdnQjMywgd3NsIzcyLAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs8NGwsCiAJY2xlYXI9XkwsIGNub3JtPVxFWzw0aCwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkJSV2LApAQCAtMTQ1NzcsMTQgKzE2MjQ4LDE1IEBACiAJa2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sCiAJa2YxOD1cRVszMn4sIGtmMj1cRVsxMn4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sCiAJa2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVtILCBtYzA9XEVbaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksIG5lbD1eTV5KLAotCXByb3Q9XEVbMzIleywgcmM9XEVbJXosIHJlcD1cRVslcDIlZGIlcDElYywgcmV2PVxFWzdtLAotCXJpPVxFW0wsIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKKwlraG9tZT1cRVtILCBuZWw9Xk1eSiwgcHJvdD1cRVszMiV7LCByYz1cRVsleiwKKwlyZXA9XEVbJXAyJWRiJXAxJWMsIHJldj1cRVs3bSwgcmk9XEVbTCwgcm1pcj1cRVs0bCwKKwlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCiAJcnMyPVxFWyZwXEVbPDEybFxFIEZcRVszZ1xFWzk7MTc7MjU7MzM7NDE7NDk7NTc7NjU7NzMgTiwKIAlzYz1cRVsleSwKLQlzZ3I9XEVbJXswfSU/JXAxJXAzJXwldCV7N30lKyU7JT8lcDIldCV7Mn0lKyU7JT8lcDQldCV7NX0lKyU7JT8lcDYldCV7MX0lKyU7bSU/JXA4JXRcRVslezMyfSUrJWQlJXslOyU/JXA5JXRcMDE2JWVcMDE3JTssCisJc2dyPVxFWzAlPyVwMSVwMyV8JXQ7NyU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSU/JXA4JXRcRVszMiUleyU7JT8lcDkldFwwMTYlZVwwMTclOywKIAlzZ3IwPVxFWzBtXDAxNywgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbMmcsIHRzbD1cRVslaSVwMSVkJSV9LCB2cGE9XEVbJWklcDElZGQsCisJdGJjPVxFWzNnLCB0c2w9XEVbJWklcDElZCUlfSwgdnBhPVxFWyVpJXAxJWRkLAorCXVzZT1hbnNpK3BwLAogCiAjIHA5LXc6IFByaXNtLTkgaW4gMTMyIGNvbHVtbiBtb2RlCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDk0OCw3ICsxNjYyMCw3IEBACiAJcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMG0sIHJtdWw9XEVbMG0sCiAJcnMyPVxFWyFwXEVbPzc7MTk7NjdoXEVbPzE7Mzs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKIAlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOyQ8MjA+LAorCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOyQ8MjA+LAogCXNncjA9XEVbMG1cMDE3JDwyMD4sIHNtYWNzPV5OLCBzbWlyPVxFWzRoLAogCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzE7N20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKIAl0c2w9XEVbMiR+XEVbMSR9LCB2cGE9XEVbJXAxJWRkJDw0MD4sIHVzZT12dDIyMCtrZXlwYWQsCkBAIC0xNTAwNSw3ICsxNjY3Nyw3IEBACiAJcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKIAlyczI9XEVbIXBcRVs/NzsxOTs2N2hcRVs/MTszOzRsXEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAogCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyMD4sCisJc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyMD4sCiAJc2dyMD1cRVswbVwwMTckPDIwPiwgc21hY3M9XDAxNiQ8MjA+LCBzbWFtPVxFWz83aCwKIAlzbWlyPVxFWzRoLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKIAl0YmM9XEVbM2csIHRzbD1cRVsyJH5cRVsxJH0sIHZwYT1cRVslcDElZGQkPDQwPiwKQEAgLTE1MDYxLDcgKzE2NzMzLDcgQEAKIAlybXVsPVxFWzI0bSwKIAlyczI9XEVbIXBcRVs/NzsxOTs2N2hcRVs/MTszOzRsXEVbMTswJXdcRShCXEUpMFwwMTdcRVsySlxFWzE7MUhcRT4kPDIwMD4sCiAJc2M9XEU3LAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTskPDIwPiwKKwlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTskPDIwPiwKIAlzZ3IwPVxFWzBtXDAxNyQ8MjA+LCBzbWFjcz1cMDE2JDwyMD4sIHNtYW09XEVbPzdoLAogCXNtaXI9XEVbNGgsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAogCXRiYz1cRVszZywgdHNsPVxFWzIkflxFWzEkfSwgdnBhPVxFWyVwMSVkZCQ8NDA+LApAQCAtMTU0NTEsMTQgKzE3MTIzLDE0IEBACiAjIE1hbnVmYWN0dXJlZCBpbiB0aGUgZWFybHkvbWlkIGVpZ2h0aWVzLCBiZWhhdmVzIGFsbW9zdCB0aGUgc2FtZSBhcyBhCiAjIFRlbGV2aWRlbyA5NTAuICBUYWtlIGEgOTUwLCBjaGFuZ2UgaXRzIGNhYmluZXQgZm9yIGEgbW9yZSA4MHMtaXNoIG9uZSAoYnV0CiAjIGtlZXAgdGhlIHNhbWUga2V5Ym9hcmQgbGF5b3V0KSwgYWRkIGFuIG9wdGlvbmFsIDI1LWxpbmUgbW9kZSwgcmVwbGFjZSB0aGUgRElQCi0jIHN3aXRjaGVzIHdpdGggYSBtZW51IGFuZCByZW1vdmUgdGhlICJsb2NrIGxpbmUiIGZlYXR1cmUgKEVTQyAhICAxIGFuZCBFU0MgISAKKyMgc3dpdGNoZXMgd2l0aCBhIG1lbnUgYW5kIHJlbW92ZSB0aGUgImxvY2sgbGluZSIgZmVhdHVyZSAoRVNDICEgIDEgYW5kIEVTQyAhCiAjIDIpLCBoZXJlIGlzIHRoZSBORFIgOTUwMC4gIEV2ZW4gdGhlIGxpbmUtbG9jaywgYWxiZWl0IGRpc2FibGVkLCBpcwogIyByZWNvZ25pemVkOiAgaWYgeW91IHR5cGUgaW4gIkVTQyAhIiwgdGhlIG5leHQgKHRoaXJkKSBjaGFyYWN0ZXIgaXMgbm90CiAjIGVjaG9lZCwgc2hvd2luZyB0aGF0IHRoZSB0ZXJtaW5hbCB3YXMgYWN0dWFsbHkgd2FpdGluZyBmb3IgYSBwYXJhbWV0ZXIhCiBuZHI5NTAwfG5kOTUwMHxOZXdidXJ5IERhdGEgOTUwMCwKIAlhbSwgYncsIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHVsLCB4b24sCiAJY29scyM4MCwgbGluZXMjMjQsIHdzbCM3OSwKLQlhY3NjPXFLbkltQWpEd051THRNdk9sQmtDeEosIGJlbD1eRywgY2J0PVxFSSwgY2l2aXM9XEUuMCwKKwlhY3NjPWpEa0NsQm1BbklxS3RNdUx2T3dOeEosIGJlbD1eRywgY2J0PVxFSSwgY2l2aXM9XEUuMCwKIAljbGVhcj1cRTssIGNub3JtPVxFLjEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5WLCBjdWYxPV5MLAogCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAogCWRpbT1cRSksIGRsMT1cRVIsIGRzbD1cRWgsIGVkPVxFWSwgZWw9XEVULApAQCAtMTU0NzUsNyArMTcxNDcsNyBAQAogCXBmbG9jPVxFfCV7NDh9JXAxJSslYzIlcDJcMDMxLAogCXBmeD1cRXwlezQ4fSVwMSUrJWMxJXAyXDAzMSwgcHJvdD1cRSksIHJpPVxFaiwKIAlybWFjcz1cRSUlLCBybWlyPVxFciwgcm1zbz1cRSgsIHJteG9uPV5OLAotCXNncj1cRSUlXEUoJT8lcDElcDUlcDglfCV8JXRcRSklOyU/JXA5JXRcRSQlOywKKwlzZ3I9XEVHMFxFJSUlJVxFKCU/JXAxJXA1JXA4JXwlfCV0XEUpJTslPyVwOSV0XEUkJTssCiAJc2dyMD1cRUcwXEUlJVxFKCwgc21hY3M9XEUkLCBzbWlyPVxFcSwgc21zbz1cRSksIHNteG9uPV5PLAogCXRiYz1cRTMsIHRzbD1cRWdcRWZcMDExJXAxJXszMn0lKyVjLCAua2JzPV5ILAogCkBAIC0xNTU3OCw4ICsxNzI1MCw4IEBACiAJYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKIAliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVIsIGNsZWFyPV5MLAogCWNub3JtPVxFUywgY3I9Xk0sIGNzcj1cRVUlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRUIsCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRUMsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKKwljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCisJY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCiAJY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFTSwKIAlkbD1cRVslcDElZE0sIGRsMT1cRUwsIGVkPVxFW0osIGVsPVxFW0ssIGZzbD1eTSwgaG9tZT1cRVtILAogCWh0PV5JLCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFTywgaWw9XEVbJXAxJWRMLCBpbDE9XEVOLApAQCAtMTU2NTQsOCArMTczMjYsOCBAQAogCWNvbHMjODAsIGxpbmVzIzI0LAogCWFjc2M9ampra2xsbW1ubnFxdHR1dXZ2d3d4eCwgYmVsPV5HLCBjaXZpcz1cRVs/MjVsLAogCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPVxFWzBCLCBjdWYxPVxFW0MsCi0JY3VwPVwwMTBcRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVswQSwgZGNoMT1cRVswUCwKKwljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAorCWN1cD1cMDEwXEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVswUCwKIAlkbDE9XEVbME0sIGVkPVxFWzBKLCBlbD1cRVswSywgZW5hY3M9XEUoQlxFKTAsIGhvbWU9XEVbSCwKIAlodD1eSSwgaWNoMT1cRVswQCwgaWwxPVxFWzBMLCBpbmQ9XkosIGlzMj1cRVs/M2xcRSkwXEUoQiwKIAlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZW5kPVxFW0ssCkBAIC0xNTgwNiw3ICsxNzQ3OCw3IEBACiAJT1RicywgYW0sIG1pciwgbXNnciwgdWwsIHhlbmwsIHh0LAogCWNvbHMjNzksIGl0IzgsIGxpbmVzIzI5LAogCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFWz0zOzw3bSwgYm9sZD1cRVs9Nzs8NG0sIGNidD1cRVtaLAotCWNsZWFyPVxFWzJKXEVbSCwgY3I9Xk0sIGN1ZDE9XEVbMUIsIGN1ZjE9XEVbMUMsCisJY2xlYXI9XEVbMkpcRVtILCBjcj1eTSwgY3ViMT1cRVsxRCwgY3VkMT1cRVsxQiwgY3VmMT1cRVsxQywKIAljdXA9XEVbJWklcDElMmQ7JXAyJTJkSCwgY3V1MT1cRVsxQSwgZGNoMT1cRVsxUCwKIAlkaW09XEVbPTE7PDZtLCBkbDE9XEVbMU0sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCiAJaWwxPVxFWzFMLCBpbmQ9XEVbUywgaW52aXM9XEVbPTY7PDUsIGlzMT1cRSUhMVxFW20sCkBAIC0xNTkyNSw2ICsxNzU5NywxNSBAQAogCXNjPVxFNywgc2dyMD1cRVttLCBzbWFjcz1eTiwgc21jdXA9XEVbPzZsLCBzbWlyPVxFWzRoLAogCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzc7NDJtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCiAKKyMgVGVrdHJvbml4IDQxMDcvNDEwOSBpbnRlcnByZXQgNCBtb2RlcyB1c2luZyAiXEUlISIgZm9sbG93ZWQgYnkgYSBjb2RlOgorIyAwIHNlbGVjdHMgVGVrIG1vZGUsIGkuZS4sIFxFJSEwCisjIDEgc2VsZWN0cyBBTlNJIG1vZGUKKyMgMiBzZWxlY3RzIEFOU0kgZWRpdC1tb2RlCisjIDMgc2VsZWN0cyBWVDUyIG1vZGUKKyMKKyMgT25lIG9kZCB0aGluZyBhYm91dCB0aGUgZGVzY3JpcHRpb24gKHdoaWNoIGhhcyBiZWVuIHVuY2hhbmdlZCBzaW5jZSB0aGUgOTBzKQorIyBpcyB0aGF0IHRoZSBjdXJzb3IgYWRkcmVzc2luZyBpcyB1c2luZyBWVDUyIG1vZGUsIGFuZCBhIGZldyBvdGhlcnMgdXNlIHRoZQorIyBWVDUyJ3Mgbm9uLUNTSSB2ZXJzaW9ucyBvZiBBTlNJLCBlLmcuLCBcRUouCiB0ZWs0MTA3fHRlazQxMDl8dGVrdHJvbml4IHRlcm1pbmFscyA0MTA3IDQxMDksCiAJT1RicywgYW0sIG1pciwgbXNnciwgdWwsIHhlbmwsIHh0LAogCWNvbHMjNzksIGl0IzgsIGxpbmVzIzI5LApAQCAtMTU5MzQsOSArMTc2MTUsOSBAQAogCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBjdnZpcz1cRSUhMywKIAlkaW09XEUlITFcRVs8MG0kPDI+XEUlITAsIGVkPVxFSiwgZWw9XEVLLCBodD1eSSwgaW5kPV5KLAogCWticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLAotCXJldj1cRSUhMVxFWzdtJDwyPlxFJTAsIHJpPVxFSSwKKwlyZXY9XEUlITFcRVs3bSQ8Mj5cRSUhMCwgcmk9XEVJLAogCXJtc289XEUlITFcRVttJDwyPlxFJSEwLCBybXVsPVxFJSExXEVbbSQ8Mj5cRSUhMCwKLQlzZ3I9XEUlJSExXEVbJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElO20kPDI+XEUlJSEwLAorCXNncj1cRSUlITFcRVslPyVwMSV0Ozc7NSU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDwwJTslPyVwNiV0OzElO20kPDI+XEUlJSEwLAogCXNncjA9XEUlITFcRVttJDwyPlxFJSEwLCBzbXNvPVxFJSExXEVbNzs1bSQ8Mj5cRSUhMCwKIAlzbXVsPVxFJSExXEVbNG0kPDI+XEUlITAsCiAjIFRla3Ryb25peCA0MjA3IHdpdGggc3lzbGluZS4gIEluIHRoZSBhbmNlc3RyYWwgdGVybWNhcCBmaWxlIHRoaXMgd2FzIDQxMDctczsKQEAgLTE1OTcxLDkgKzE3NjUyLDkgQEAKIHRlazQxMTJ8dGVrNDExNHx0ZWt0cm9uaXggNDExMCBzZXJpZXMsCiAJT1RicywgYW0sIGRiLAogCWNvbHMjODAsIGxpbmVzIzM0LAotCWNidD1cRVtaLCBjbGVhcj1cRVsySlxFWzA7MEgsIGN1YjE9XkgsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVNLCBkY2gxPVxFW1AsIGRsMT1cRVtNLAotCWVkPVxFWzBKLCBlbD1cRVswSywgaWNoMT1cRVtALCBpbDE9XEVbTCwKKwljYnQ9XEVbWiwgY2xlYXI9XEVbMkpcRVswOzBILCBjdWIxPV5ILCBjdWQxPVxFW0IsCisJY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVNLCBkY2gxPVxFW1AsCisJZGwxPVxFW00sIGVkPVxFWzBKLCBlbD1cRVswSywgaWNoMT1cRVtALCBpbDE9XEVbTCwKIAlpbmQ9XEU3XEVbMDswSFxFW01cRTgsIGlzMj1cRTMhMSwgcmk9XEU3XEVbMDswSFxFW0xcRTgsCiAJcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKIHRlazQxMTItbmR8NDExMiBub3QgaW4gZGlhbG9nIGFyZWEsCkBAIC0xNjAzNiw4ICsxNzcxNyw4IEBACiAJa2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwKIAlyZXA9JXAxJWNcRVslcDIlezF9JS0lZGIsIHJldj1cRVs3bSwgcm1hbT1cRVs/N2wsCiAJcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2dyPVxFWyU/JXAxJXQ3OyU7JT8lcDIldDQ7JTslPyVwMyV0NzslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTttLAotCXNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVsyZywKKwlzZ3I9XEVbJT8lcDEldDc7JTslPyVwMiV0NDslOyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwNiV0MTslOyU/JXA3JXQ4OyU7bSwKKwlzZ3IwPVxFW20sIHNtYW09XEVbPzdoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCiAJdnBhPVxFWyVwMSV7MX0lKyVkZCwKICMgVGhlIHRlazQxMjUgZW11bGF0ZXMgYSB2dDEwMCBpbmNvcnJlY3RseSAtIHRoZSBzY3JvbGxpbmcgcmVnaW9uCiAjIGNvbW1hbmQgaXMgaWdub3JlZC4gIFRoZSBmb2xsb3dpbmcgZW50cnkgcmVwbGFjZXMgPGNzcj4gd2l0aCB0aGUgbmVlZGVkCkBAIC0xNjEyMyw5ICsxNzgwNCwxMCBAQAogCWNsZWFyPVxFWzJKXEVbSCwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwKIAljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKIAljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2gxPVxFWzFQLCBkaW09XEVbPTE7PDZtLCBkbDE9XEVbMU0sIGVjaD1cRSVwMSVkWCwKLQllZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKTAsIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbMUwsIGluZD1cRUQsCisJZGNoMT1cRVsxUCwgZGltPVxFWz0xOzw2bSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbMU0sCisJZWNoPVxFJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKTAsCisJaG9tZT1cRVtILCBodD1eSSwgaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbMUwsCisJaW5kPVxFRCwKIAlpbml0Yz1cRSUlITBcRVRGNCU/JXAxJXswfSU9JXQwJWUlcDElezF9JT0ldDQlZSVwMSV7Mn0lPSV0MyVlJXAxJXszfSU9JXQ1JWUlcDElezR9JT0ldDIlZSVwMSV7NX0lPSV0NiVlJXAxJXs2fSU9JXQ3JWUxJTslPyVwMiV7MTI1fSU8JXQwJWUlcDIlezI1MH0lPCV0QTIlZSVwMiV7Mzc1fSU8JXRBPyVlJXAyJXs1MDB9JTwldEM4JWUlcDIlezYyNX0lPCV0RDQlZSVwMiV7NzUwfSU8JXRFMSVlJXAyJXs4NzV9JTwldEVcOiVlRjQlOyU/JXAzJXsxMjV9JTwldDAlZSVwMyV7MjUwfSU8JXRBMiVlJXAzJXszNzV9JTwldEE/JWUlcDMlezUwMH0lPCV0QzglZSVwMyV7NjI1fSU8JXRENCVlJXAzJXs3NTB9JTwldEUxJWUlcDMlezg3NX0lPCV0RVw6JWVGNCU7JT8lcDQlezEyNX0lPCV0MCVlJXA0JXsyNTB9JTwldEEyJWUlcDQlezM3NX0lPCV0QT8lZSVwNCV7NTAwfSU8JXRDOCVlJXA0JXs2MjV9JTwldEQ0JWUlcDQlezc1MH0lPCV0RTElZSVwNCV7ODc1fSU8JXRFXDolZUY0JTtcRSUlITEsCiAJaW52aXM9XEVbPTY7PDUsIGlzMT1cRSUhMFxFVE0xXEUlITFcRVttLCBrYnM9XkgsCiAJa2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YwPVxFT0EsCkBAIC0xNjI5Niw3ICsxNzk3OCw3IEBACiAJa2Y5PVwyNTAsIGtob21lPVxFW0gsIGtpY2gxPVxFW15ILCBrbnA9XEVbVSwga3BwPVxFW1YsCiAJbGw9XEVbMjQ7MUgsIG5lbD1eTSwgcmV2PVxFWzdtLCByaT1cRVtUXEVbQSwKIAlyaW49XEVbJXAxJWRUXEVbJXAxJWRBLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3I9XEVbJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElO20sCisJc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0MzA7NDAlO20sCiAJc2dyMD1cRVttLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAogCiAjIyMjIEFwcGxlIElJCkBAIC0xNjQwOCw3ICsxODA5MCw3IEBACiAjIFRoaXMgZW50cnkgYXNzdW1lcyB0aGF0IHlvdSBhcmUgdXNpbmcgYW4gYXBwbGUgd2l0aCB0aGUgVUNTRCBQYXNjYWwKICMgbGFuZ3VhZ2UgY2FyZC4gIFNZU1RFTS5NSVNDSU5GTyBpcyBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIGFzIHRoYXQKICMgc3VwcGxpZWQgd2l0aCB0aGUgc3RhbmRhcmQgYXBwbGUgZXhjZXB0IHRoYXQgc2NyZWVud2lkdGggc2hvdWxkIGJlIHNldAotIyB1c2luZyBTRVRVUCB0byA4MCBjb2x1bW5zLiAgTm90ZSB0aGF0IHRoZSByaWdodCBhcnJvdyBpbiBub3QgbWFwcGVkIGluCisjIHVzaW5nIFNFVFVQIHRvIDgwIGNvbHVtbnMuICBOb3RlIHRoYXQgdGhlIHJpZ2h0IGFycm93IGlzIG5vdCBtYXBwZWQgaW4KICMgdGhpcyB0ZXJtY2FwIGVudHJ5LiAgVGhpcyBpcyBiZWNhdXNlIHRoYXQga2V5LCBvbiB0aGUgQXBwbGUsIHRyYW5zbWl0cwogIyBhIF5VIGFuZCB3b3VsZCB0aHVzIHByZWVtcHQgdGhlIG1vcmUgdXNlZnVsICJ1cCIgZnVuY3Rpb24gb2YgdmkuCiAjCkBAIC0xNjQ0NCwxNSArMTgxMjYsMTYgQEAKIGFwcGxlLXZpZGV4M3x2YXBwbGV8QXBwbGUgSUkgd2l0aCA4MCBjb2wgY2FyZCwKIAlPVGJzLCBhbSwKIAljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRXYsIGN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XEVBLCBlbD1cRXgsIGhvbWU9XEVILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAotCWtjdXUxPVxFQSwga2YwPVxFUCwga2YxPVxFUSwga2YyPVxFUiwga2YzPVxFXHMsIGtmND1cRSEsCi0Ja2Y1PVxFIiwga2Y2PVxFIywga2Y3PVxFJCwga2Y4PVxFJSUsIGtmOT1cRSYsIGtob21lPVxFSCwKKwljbGVhcj1cRXYsIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCisJY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGVsPVxFeCwKKwlob21lPVxFSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLAorCWtmMD1cRVAsIGtmMT1cRVEsIGtmMj1cRVIsIGtmMz1cRVxzLCBrZjQ9XEUhLCBrZjU9XEUiLCBrZjY9XEUjLAorCWtmNz1cRSQsIGtmOD1cRSUlLCBrZjk9XEUmLCBraG9tZT1cRUgsCiAjRnJvbTogZGVjdmF4IWNib3NnZCFjYmRrYzEhbXd3IE1pa2UgV2FycmVuIHZpYSBCUkwKIGFlcHJvfEFwcGxlIElJKyBydW5uaW5nIEFTQ0lJIEV4cHJlc3MgUHJvLS12dDUyLAogCU9UYnMsCiAJY29scyM4MCwgbGluZXMjMjQsCi0JY2xlYXI9XDAxNCQ8MzAwLz4sIGN1ZjE9XEVDLAorCWNsZWFyPVwwMTQkPDMwMC8+LCBjdWIxPVxFRCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAogCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBlZD1cRUosCiAJZWw9XEVLLCBob21lPVxFSCwKICMgVUNTRCBhZGRpdGlvbjogWWV0IGFub3RoZXIgdGVybWNhcCBmcm9tIEJyaWFuIEthbnRvcidzIE1pY3JvIE11bmdlciBGYWN0b3J5CkBAIC0xNjUyNCw1MDUgKzE4MjA3LDYgQEAKIG1hYy13fG1hY3Rlcm1pbmFsLXd8QXBwbGUgTWFjaW50b3NoIHdpdGggTWFjdGVybWluYWwgaW4gMTMyIGNvbHVtbiBtb2RlLAogCWNvbHMjMTMyLCB1c2U9bWFjLAogCi0jIFRoZSBBcHBLaXQgVGVybWluYWwuYXBwIGRlc2NyaXB0aW9ucyBhbGwgaGF2ZSBuYW1lcyBiZWdpbm5pbmcgd2l0aAotIyAibnN0ZXJtIi4gTm90ZSB0aGF0IHRoZSBzdGF0dXNsaW5lICgtcykgdmVyc2lvbnMgdXNlIHRoZSB3aW5kb3cKLSMgdGl0bGViYXIgYXMgYSBwaG9ueSBzdGF0dXMgbGluZSwgYW5kIG1heSBwcm9kdWNlIHdhcm5pbmdzIGR1cmluZwotIyBjb21waWxhdGlvbiBhcyBhIHJlc3VsdCAoInRzbCB1c2VzIDAgcGFyYW1ldGVycywgZXhwZWN0ZWQgMSIuKSBJZ25vcmUKLSMgdGhlc2Ugd2FybmluZ3MsIG9yIGV2ZW4gaWdub3JlIHRoZXNlIGVudHJpZXMgZW50aXJlbHkuIEFwcHMgd2hpY2gKLSMgbmVlZCB0byBwb3NpdGlvbiB0aGUgY3Vyc29yIG9yIGRvIG90aGVyIGZhbmN5IHN0dWZmIGluc2lkZSB0aGUgc3RhdHVzCi0jIGxpbmUgd29uJ3Qgd29yayB3aXRoIHRoZXNlIGVudHJpZXMuIFRoZXkncmUgcHJpbWFyaWx5IHVzZWZ1bCBmb3IKLSMgcHJvZ3JhbXMgbGlrZSBQaW5lIHdoaWNoIHByb3ZpZGUgc2ltcGxlIG5vdGlmaWNhdGlvbnMgaW4gdGhlIHN0YXR1cwotIyBsaW5lLiBQbGVhc2Ugbm90ZSB0aGF0IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGRvbid0IHdvcmsgcmlnaHQgaW4gdGhlCi0jIHN0YXR1cyBsaW5lLCBzaW5jZSBUZXJtaW5hbC5hcHAgaW5jb3JyZWN0bHkgaW50ZXJwcmV0cyB0aGVpciBVbmljb2RlCi0jIGNvZGVwb2ludHMgYXMgTWFjUm9tYW4gY29kZXBvaW50cy4KLSMKLSMgKiBSZW5hbWVkIHRoZSBBcHBLaXQgVGVybWluYWwuYXBwIGVudHJ5IGZyb20gIkFwcGxlX1Rlcm1pbmFsIiB0bwotIyAgICJuc3Rlcm0iIHRvIGNvbXBseSB3aXRoIHRoZSBuYW1lIGxlbmd0aCBhbmQgY2FzZSBjb252ZW50aW9ucyBhbmQKLSMgICBsaW1pdGF0aW9ucyBvZiB2YXJpb3VzIHNvZnR3YXJlIHBhY2thZ2VzIFtub3RhYmx5IFNvbGFyaXMgdGVybWluZm8KLSMgICBhbmQgVU5JWC5dIEEgc2luZ2xlIEFwcGxlX1Rlcm1pbmFsIGFsaWFzIGlzIHJldGFpbmVkIGZvcgotIyAgIGJhY2t3YXJkcy1jb21wYXRiaWxpdHkuCi0jCi0jICogQWRkZWQgZnVuY3Rpb24ga2V5IHN1cHBvcnQgKEYxLUY0KS4gVGhlc2Ugb25seSB3b3JrIGluIFRlcm1pbmFsLmFwcAotIyAgIHZlcnNpb24gNTEsIGhvcGVmdWxseSB0aGUgY2FwYWJpbGl0aWVzIHdvbid0IGNhdXNlIHByb2JsZW1zIGZvciBwZW9wbGUKLSMgICB1c2luZyB2ZXJzaW9uIDQxLgotIwotIyAqIEFkZGVkICJmdWxsIGNvbG9yIiAoLWMpIGVudHJpZXMgd2hpY2ggc3VwcG9ydCB0aGUgMTYtY29sb3IgbW9kZSBpbgotIyAgIHZlcnNpb24gNTEuCi0jCi0jICogQnkgZGVmYXVsdCwgdmVyc2lvbiA1MSB1c2VzIFVURi04IGVuY29kaW5nIHdpdGggYnJva2VuIGFsdGNoYXJzZXQKLSMgICBzdXBwb3J0LCBzbyAiQVNDSUkiICgtNykgZW50cmllcyB3aXRob3V0IGFsdGNoYXJzZXQgc3VwcG9ydCB3ZXJlCi0jICAgYWRkZWQuCi0KLSMgbnN0ZXJtIC0gQXBwS2l0IFRlcm1pbmFsLmFwcAotIwotIyBBcHBsZSdzIE1hYyBPUyBYIGluY2x1ZGVzIGEgVGVybWluYWwuYXBwIGRlcml2ZWQgZnJvbSB0aGUgb2xkIE5lWFQKLSMgVGVybWluYWwuYXBwLiBJdCBpcyBhIHBhcnRpYWwgVlQxMDAgZW11bGF0aW9uIHdpdGggc29tZSB4dGVybS1saWtlCi0jIGV4dGVuc2lvbnMuIFRoaXMgdGVybWluZm8gd2FzIHdyaXR0ZW4gdG8gZGVzY3JpYmUgdmVyc2lvbnMgNDEKLSMgKHNoaXBwZWQgd2l0aCBNYWMgT1MgWCB2ZXJzaW9uIDEwLjApIGFuZCA1MSAoc2hpcHBlZCB3aXRoIE1hYyBPUyBYCi0jIHZlcnNpb24gMTAuMSkgb2YgVGVybWluYWwuYXBwLgotIwotIyBUZXJtaW5hbC5hcHAgcnVucyB1bmRlciB0aGUgTWFjIE9TIFggUXVhcnR6IHdpbmRvd2luZyBzeXN0ZW0gKGFuZAotIyBvdGhlciBBcHBLaXQtc3VwcG9ydGVkIHdpbmRvd2luZyBzeXN0ZW1zLikgIE9uIHRoZSBNYWMgT1MgWCBtYWNoaW5lIEkKLSMgdXNlLCB0aGUgZXhlY3V0YWJsZSBmb3IgVGVybWluYWwuYXBwIGlzOgotIyAvQXBwbGljYXRpb25zL1V0aWxpdGllcy9UZXJtaW5hbC5hcHAvQ29udGVudHMvTWFjT1MvVGVybWluYWwKLSMKLSMgSWYgeW91J3JlIGxvb2tpbmcgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZ1bGwtc2NyZWVuIHN5c3RlbQotIyBjb25zb2xlIHdoaWNoIHJ1bnMgdW5kZXIgQXBwbGUncyBEYXJ3aW4gb3BlcmF0aW5nIHN5c3RlbSBvbiBQb3dlclBDCi0jIHBsYXRmb3Jtcywgc2VlIHRoZSAieG51cHBjIiBlbnRyeSBpbnN0ZWFkLgotIwotIyBUaGVyZSB3ZXJlIG5vIGZ1bmN0aW9uIGtleXMgaW4gdmVyc2lvbiA0MS4gSW4gdmVyc2lvbiA1MSwgdGhlcmUgYXJlCi0jIGZvdXIgd29ya2luZyBmdW5jdGlvbiBrZXlzIChGMSwgRjIsIEYzIGFuZCBGNC4pIFRoZSBmdW5jdGlvbiBrZXlzCi0jIGFyZSBpbmNsdWRlZCBpbiBhbGwgb2YgdGhlc2UgZW50cmllcy4KLSMKLSMgSXQgZG9lcyBub3Qgc3VwcG9ydCBtb3VzZSBwb2ludGVyIHBvc2l0aW9uIHJlcG9ydGluZy4gVW5kZXIgc29tZQotIyBjaXJjdW1zdGFuY2VzIHRoZSBjdXJzb3IgY2FuIGJlIHBvc2l0aW9uZWQgdXNpbmcgb3B0aW9uLWNsaWNrOyB0aGlzCi0jIHdvcmtzIGJ5IGNvbXBhcmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIGFuZCB0aGUgc2VsZWN0ZWQgcG9zaXRpb24sCi0jIGFuZCBzaW11bGF0aW5nIGVub3VnaCBjdXJzb3Ita2V5IHByZXNzZXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIHRoZQotIyBzZWxlY3RlZCBwb3NpdGlvbi4gVGhpcyB0ZWNobmlxdWUgZmFpbHMgaW4gYWxsIGJ1dCB0aGUgc2ltcGxlc3QKLSMgYXBwbGljYXRpb25zLgotIwotIyBJdCBwcm92aWRlcyBwYXJ0aWFsIEFOU0kgY29sb3Igc3VwcG9ydCAoYmFja2dyb3VuZCBjb2xvcnMgaW50ZXJhY3RlZAotIyBiYWRseSB3aXRoIGJvbGQgaW4gdmVyc2lvbiA0MSwgdGhvdWdoLCBhcyByZWZsZWN0ZWQgaW4gOm5jdjouKSBUaGUKLSMgbW9ub2Nocm9tZSAoLW0pIGVudHJpZXMgYXJlIHVzZWZ1bCBpZiB5b3UndmUgZGlzYWJsZWQgY29sb3Igc3VwcG9ydAotIyBvciB1c2UgYSBtb25vY2hyb21lIG1vbml0b3IuIFRoZSBmdWxsIGNvbG9yICgtYykgZW50cmllcyBhcmUgdXNlZnVsCi0jIGluIHZlcnNpb24gNTEsIHdoaWNoIGRvZXNuJ3QgZXhoaWJpdCB0aGUgYmFja2dyb3VuZCBjb2xvciBidWcuIFRoZXkKLSMgYWxzbyBlbmFibGUgYW4geHRlcm0tY29tcGF0aWJsZSAxNi1jb2xvciBtb2RlLgotIwotIyBUaGUgY29uZmlndXJhYmxlIHRpdGxlYmFyIGlzIHNldCB1c2luZyB4dGVybS1jb21wYXRpYmxlIHNlcXVlbmNlczsKLSMgaXQgaXMgdXNlZCBhcyBhIHN0YXR1cyBiYXIgaW4gdGhlIHN0YXR1c2xpbmUgKC1zKSBlbnRyaWVzLiBJdHMgd2lkdGgKLSMgZGVwZW5kcyBvbiBmb250IHNpemVzIGFuZCB3aW5kb3cgc2l6ZXMsIGJ1dCA1MCBjaGFyYWN0ZXJzIHNlZW1zIHRvCi0jIGJlIHRoZSBkZWZhdWx0IGZvciBhbiA4MHgyNCB3aW5kb3cuCi0jCi0jIFRoZSBNYWNSb21hbiBjaGFyYWN0ZXIgZW5jb2RpbmcgaXMgdXNlZCBmb3Igc29tZSBvZiB0aGUgYWx0ZXJuYXRlCi0jIGNoYXJhY3RlcnMgaW4gdGhlICJNYWNSb21hbiIgZW50cmllczsgdGhlICJBU0NJSSIgKC03KSBlbnRyaWVzCi0jIGRpc2FibGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgc3VwcG9ydCBlbnRpcmVseSwgYW5kIHRoZSAiVlQxMDAiCi0jICgtYWNzKSBlbnRyaWVzIHJlbHkgaW5zdGVhZCBvbiBUZXJtaW5hbC5hcHAncyBvd24gYnVnZ3kgVlQxMDAKLSMgZ3JhcGhpY3MgZW11bGF0aW9uLCB3aGljaCBzZWVtcyB0byB0aGluayB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGlzCi0jIHRoZSBvbGQgTmVYVCBjaGFyc2V0IGluc3RlYWQgb2YgTWFjUm9tYW4uIFRoZSAiQVNDSUkiICgtNykgZW50cmllcwotIyBhcmUgdXNlZnVsIGluIFRlcm1pbmFsLmFwcCB2ZXJzaW9uIDUxLCB3aGljaCBzdXBwb3J0cyBVVEYtOCBhbmQKLSMgb3RoZXIgQVNDSUktY29tcGF0aWJsZSBjaGFyYWN0ZXIgZW5jb2RpbmdzIGJ1dCBkb2VzIG5vdCBjb3JyZWN0bHkKLSMgaW1wbGVtZW50IFZUMTAwIGdyYXBoaWNzOyBvbmNlIFZUMTAwIGdyYXBoaWNzIGFyZSBjb3JyZWN0bHkKLSMgaW1wbGVtZW50ZWQgaW4gVGVybWluYWwuYXBwLCB0aGUgIlZUMTAwIiAoLWFjcykgZW50cmllcyBzaG91bGQgYmUKLSMgdXNhYmxlIGluIGFueSBBU0NJSS1jb21wYXRpYmxlIGNoYXJhY3RlciBlbmNvZGluZyBbZXhjZXB0IHBlcmhhcHMKLSMgaW4gVVRGLTgsIHdoZXJlIHNvbWUgZXhwZXJ0cyBhcmd1ZSBmb3IgZGlzYWxsb3dpbmcgYWx0ZXJuYXRlCi0jIGNoYXJhY3RlcnMgZW50aXJlbHkuXQotIwotIyBUZXJtaW5hbC5hcHAgcmVwb3J0cyAidnQxMDAiIGFzIHRoZSB0ZXJtaW5hbCB0eXBlLCBidXQgZXhwb3J0cwotIyBzZXZlcmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBtYXkgYWlkIGRldGVjdGlvbiBpbiBhIHNoZWxsCi0jIHByb2ZpbGUgKGkuZS4gLnByb2ZpbGUgb3IgLmxvZ2luKToKLSMKLSMgVEVSTT12dDEwMAotIyBURVJNX1BST0dSQU09QXBwbGVfVGVybWluYWwKLSMgVEVSTV9QUk9HUkFNX1ZFUlNJT049NDEgICAgICAjIGluIFRlcm1pbmFsLmFwcCB2ZXJzaW9uIDQxCi0jIFRFUk1fUFJPR1JBTV9WRVJTSU9OPTUxICAgICAgIyBpbiBUZXJtaW5hbC5hcHAgdmVyc2lvbiA1MQotIwotIyBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBCb3VybmUgc2hlbGwgc2NyaXB0IHdvdWxkIGRldGVjdCB0aGUKLSMgY29ycmVjdCB0ZXJtaW5hbCB0eXBlOgotIwotIyBpZiBbIDoiJFRFUk0iID0gOiJ2dDEwMCIgLWEgOiIkVEVSTV9QUk9HUkFNIiA9IDoiQXBwbGVfVGVybWluYWwiIF0KLSMgdGhlbgotIyAgICAgZXhwb3J0IFRFUk0KLSMgICAgIGlmIFsgOiIkVEVSTV9QUk9HUkFNX1ZFUlNJT04iID0gOjQxIF0KLSMgICAgIHRoZW4KLSMgICAgICAgICBURVJNPSJuc3Rlcm0iCi0jICAgICBlbHNlCi0jICAgICAgICAgVEVSTT0ibnN0ZXJtLWMtNyIKLSMgICAgIGZpCi0jIGZpCi0jCi0jIEluIGEgQyBzaGVsbCBkZXJpdmF0aXZlLCB0aGlzIHdvdWxkIGJlIGFjY29tcGxpc2hlZCBieToKLSMKLSMgaWYgKCAkP1RFUk0gJiYgJD9URVJNX1BST0dSQU0gJiYgJD9URVJNX1BST0dSQU1fVkVSU0lPTikgdGhlbgotIyAgICAgaWYgKCA6IiRURVJNIiA9PSA6InZ0MTAwIiAmJiA6IiRURVJNX1BST0dSQU0iID09IDoiQXBwbGVfVGVybWluYWwiICkgdGhlbgotIyAgICAgICAgICBpZiAoIDoiJFRFUk1fUFJPR1JBTV9WRVJTSU9OIiA9PSA6NDEgKSB0aGVuCi0jICAgICAgICAgICAgICBzZXRlbnYgVEVSTSAibnN0ZXJtIgotIyAgICAgICAgICBlbHNlCi0jICAgICAgICAgICAgICBzZXRlbnYgVEVSTSAibnN0ZXJtLWMtNyIKLSMgICAgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jIGVuZGlmCi0KLSMgVGhlICcrJyBlbnRyaWVzIGFyZSBidWlsZGluZyBibG9ja3MKLW5zdGVybSs3fEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyBiYXNpYyBjYXBhYmlsaXRpZXMgdy9BU0NJSSBjaGFyc2V0LAotCWFtLCBidywgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0Ja2JzPVwxNzcsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2VudD1cRU9NLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFtPVxFWz83bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0JcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20sCi0Jc2dyMD1cRVttXDAxNywgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPXZ0MTAwK2VucSwgdXNlPXZ0MTAwK3Bma2V5cywKLQotbnN0ZXJtK2Fjc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgYmFzaWMgY2FwYWJpbGl0aWVzIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQllbmFjcz1cRShCXEUpMCwgcm1hY3M9Xk8sCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc21hY3M9Xk4sIHVzZT1uc3Rlcm0rNywKLQotbnN0ZXJtK21hY3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgYmFzaWMgY2FwYWJpbGl0aWVzIHcvTWFjUm9tYW4gYWx0ZXJuYXRlLWNoYXJzZXQsCi0JYWNzYz0wI2BcMzI3YVw6ZlwyNDFnXDI2MWgjaVwzNjBqamtrbGxtbW5ub1wzNzBwXDM3MHFcMzIxcnJzc3R0dXV2dnd3eHh5XDI2MnpcMjYze1wyNzF8XDI1NX1cMjQzflwyNDUrXDMzNS1cMzY2XCxcMzM0LlwzNzcsCi0JZW5hY3M9XEUoQlxFKTAsIHJtYWNzPV5PLAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNtYWNzPV5OLCB1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybStzfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyBzdGF0dXMtbGluZSAod2luZG93IHRpdGxlYmFyKSBzdXBwb3J0LAotCWhzLAotCXdzbCM1MCwKLQlkc2w9XEVdMjtcMDA3LCBmc2w9XkcsIHRzbD1cRV0yOywKLQotbnN0ZXJtK2N8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIGZ1bGwgY29sb3Igc3VwcG9ydCAoaW5jbHVkaW5nIDE2IGNvbG9ycyksCi0Jb3A9XEVbMG0sIHVzZT1pYm0rMTZjb2xvciwKLQotbnN0ZXJtK2M0MXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSBjb2xvciBzdXBwb3J0LAotCWNvbG9ycyM4LCBuY3YjMzcsIHBhaXJzIzY0LAotCW9wPVxFWzBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi0jIFRoZXNlIGFyZSBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIHRoZSBidWlsZGluZyBibG9ja3MKLQotIyBBU0NJSSBjaGFyc2V0ICgtNykKLW5zdGVybS1tLTd8bnN0ZXJtLTctbXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9BU0NJSSBjaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybS1tLXMtN3xuc3Rlcm0tNy1tLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAobW9ub2Nocm9tZSB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybSs3LAotCi1uc3Rlcm0tN3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9BU0NJSSBjaGFyc2V0IChjb2xvciksCi0JdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rNywKLQotbnN0ZXJtLTctY3xuc3Rlcm0tYy03fEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L0FTQ0lJIGNoYXJzZXQgKGZ1bGwgY29sb3IpLAotCXVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSs3LAotCi1uc3Rlcm0tcy03fG5zdGVybS03LXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAoY29sb3Igdy9zdGF0dXNsaW5lKSwKLQl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybS1jLXMtN3xuc3Rlcm0tNy1jLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvQVNDSUkgY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtKzcsCi0KLSMgVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQgKC1hY3MpCi1uc3Rlcm0tbS1hY3N8bnN0ZXJtLWFjcy1tfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtK2FjcywKLQotbnN0ZXJtLW0tcy1hY3N8bnN0ZXJtLWFjcy1tLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQgKG1vbm9jaHJvbWUgdy9zdGF0dXNsaW5lKSwKLQl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYWNzfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChjb2xvciksCi0JdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYy1hY3N8bnN0ZXJtLWFjcy1jfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChmdWxsIGNvbG9yKSwKLQl1c2U9bnN0ZXJtK2MsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tcy1hY3N8bnN0ZXJtLWFjcy1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYy1zLWFjc3xuc3Rlcm0tYWNzLWMtc3xBcHBLaXQgVGVybWluYWwuYXBwIHY1MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK2FjcywKLQotIyBNYWNSb21hbiBjaGFyc2V0Ci1uc3Rlcm0tbXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9NYWNSb21hbiBjaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtK21hYywKLQotbnN0ZXJtLW0tc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9NYWNSb21hbiBjaGFyc2V0IChtb25vY2hyb21lIHcvc3RhdHVzbGluZSksCi0JdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK21hYywKLQotbnN0ZXJtfEFwcGxlX1Rlcm1pbmFsfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGNvbG9yKSwKLQl1c2U9bnN0ZXJtK2M0MSwgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1jfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGZ1bGwgY29sb3IpLAotCXVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGNvbG9yIHcvc3RhdHVzbGluZSksCi0JdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK2M0MSwgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1jLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvTWFjUm9tYW4gY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK21hYywKLQotCi0jIFRoaXMgZW50cnkgaXMgYmFzZWQgb24gbmV3c2dyb3VwIGNvbW1lbnRzIGJ5IEFsYWluIEJlbmNoLCBDaHJpc3RpYW4gRWJlcnQsCi0jIGFuZCBEIFAgU2NocmViZXIgY29tcGFyaW5nIHRvIG5zdGVybS1jLXMtYWNzLgotIwotIyBEIFAgU2NocmViZXIgbm90ZXMgdGhhdCAkVEVSTSBjYW4gYmUgc2V0IGluIFRlcm1pbmFsLmFwcCwgZS5nLiwKLSMJZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLlRlcm1pbmFsIFRlcm1DYXBTdHJpbmcgbnN0ZXJtLWMtcy1hY3MKLSMgYW5kIHRoYXQgaXQgaXMgbm90IHNldCBpbiBUZXJtaW5hbCdzIHByZWZlcmVuY2VzIGRpYWxvZy4KLW5zdGVybS0xNmNvbG9yfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjEwMC4xLjggd2l0aCBNYWNPUyBYIDEwLjMuOSwKLQlrZGNoMT1cRVszfiwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwKLQlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAotCWtucD1cRVs2fiwga3BwPVxFWzV+LCB1c2U9bnN0ZXJtLWMtcy1hY3MsCi0KLSMgeG51cHBjIC0gRGFyd2luIFBvd2VyUEMgQ29uc29sZSAoYS5rLmEuICJkYXJ3aW4iKQotIwotIyBPbiBQb3dlclBDIHBsYXRmb3JtcywgQXBwbGUncyBEYXJ3aW4gb3BlcmF0aW5nIHN5c3RlbSB1c2VzIGEKLSMgZnVsbC1zY3JlZW4gc3lzdGVtIGNvbnNvbGUgZGVyaXZlZCBmcm9tIGEgTmV0QlNEIGZyYW1lYnVmZmVyCi0jIGNvbnNvbGUuIEl0IGlzIGFuIEFOU0ktc3R5bGUgdGVybWluYWwsIGFuZCBpcyBub3QgcmVhbGx5IFZULTEwMAotIyBjb21wYXRpYmxlLgotIwotIyBVbmRlciBNYWMgT1MgWCwgdGhpcyBpcyB0aGUgc3lzdGVtIGNvbnNvbGUgZHJpdmVyIHVzZWQgd2hpbGUgaW4KLSMgc2luZ2xlLXVzZXIgbW9kZSBbcmVhY2hhYmxlIGJ5IGhvbGRpbmcgZG93biBDb21tYW5kLVMgZHVyaW5nIHRoZQotIyBib290IHByb2Nlc3NdIGFuZCB3aGVuIGxvZ2dlZCBpbiB1c2luZyBjb25zb2xlIG1vZGUgW3JlYWNoYWJsZSBieQotIyB0eXBpbmcgIj5jb25zb2xlIiBhdCB0aGUgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC5dCi0jCi0jIElmIHlvdSdyZSBsb29raW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBUZXJtaW5hbC5hcHAgdGVybWluYWwKLSMgZW11bGF0b3Igd2hpY2ggcnVucyB1bmRlciB0aGUgTWFjIE9TIFggUXVhcnR6IHdpbmRvd2luZyBzeXN0ZW0gKGFuZAotIyBvdGhlciBBcHBLaXQtc3VwcG9ydGVkIHdpbmRvd2luZyBzeXN0ZW1zLCkgc2VlIHRoZSAibnN0ZXJtIgotIyBlbnRyeSBpbnN0ZWFkLgotIwotIyBOT1RFOiBVbmRlciBNYWMgT1MgWCB2ZXJzaW9uIDEwLjEsIHRoZSBkZWZhdWx0IGxvZ2luIHdpbmRvdyBkb2VzIG5vdAotIyBwcm9tcHQgZm9yIHVzZXIgbmFtZSwgaW5zdGVhZCByZXF1aXJpbmcgYW4gaWNvbiB0byBiZSBzZWxlY3RlZCBmcm9tCi0jIGEgbGlzdCBvZiBrbm93biB1c2Vycy4gU2luY2UgdGhlIHNwZWNpYWwgIj5jb25zb2xlIiBsb2dpbiBpcyBub3QgaW4KLSMgdGhpcyBsaXN0LCB5b3UgbXVzdCBtYWtlIG9uZSBvZiB0d28gY2hhbmdlcyBpbiB0aGUgTG9naW4gV2luZG93Ci0jIHBhbmVsIG9mIHRoZSBMb2dpbiBzZWN0aW9uIG9mIFN5c3RlbSBQcmVmcyB0byBtYWtlIHRoZSBzcGVjaWFsCi0jICI+Y29uc29sZSIgbG9naW4gYWNjZXNzaWJsZS4gVGhlIGZpcnN0IG9wdGlvbiBpcyB0byBlbmFibGUgJ1Nob3cKLSMgIk90aGVyIFVzZXIiIGluIGxpc3QgZm9yIG5ldHdvcmsgdXNlcnMnLCB3aGljaCB3aWxsIGFkZCBhIHNwZWNpYWwKLSMgIk90aGVyLi4uIiBpY29uIHRvIHRoZSBncmFwaGljYWwgbG9naW4gcGFuZWwuIFNlbGVjdGluZyAiT3RoZXIuLi4iCi0jIHdpbGwgcHJlc2VudCB0aGUgcmVndWxhciBncmFwaGljYWwgbG9naW4gcHJvbXB0LiBUaGUgc2Vjb25kIG9wdGlvbgotIyBpcyB0byBjaGFuZ2UgdGhlICdEaXNwbGF5IExvZ2luIFdpbmRvdyBhczonIHNldHRpbmcgdG8gJ05hbWUgYW5kCi0jIHBhc3N3b3JkIGVudHJ5IGZpZWxkcycsIHdoaWNoIHJlcGxhY2VzIHRoZSBsb2dpbiBwYW5lbCB3aXRoIGEKLSMgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC4KLSMKLSMgVGhlcmUgYXJlIG5vIGZ1bmN0aW9uIGtleXMsIGF0IGxlYXN0IG5vdCBpbiBEYXJ3aW4gMS4zLgotIwotIyBJdCBoYXMgbm8gbW91c2Ugc3VwcG9ydC4KLSMKLSMgSXQgaGFzIGZ1bGwgQU5TSSBjb2xvciBzdXBwb3J0LCBhbmQgY29sb3IgY29tYmluZXMgY29ycmVjdGx5IHdpdGgKLSMgYWxsIHRocmVlIHN1cHBvcnRlZCBhdHRyaWJ1dGVzOiBib2xkLCBpbnZlcnNlLXZpZGVvIGFuZCB1bmRlcmxpbmUuCi0jIEhvd2V2ZXIsIGJvbGQgY29sb3JlZCB0ZXh0IGlzIGFsbW9zdCB1bnJlYWRhYmxlIChib2xkaW5nIGlzCi0jIGFjY29tcGxpc2hlZCB1c2luZyBzaGlmdGluZyBhbmQgb3ItaW5nLCBhbmQgbG9va3Mgc21lYXJlZCkgc28gYm9sZAotIyBoYXMgYmVlbiBleGNsdWRlZCBmcm9tIHRoZSBsaXN0IG9mIGNvbG9yLWNvbXBhdGlibGUgYXR0cmlidXRlcwotIyBbdXNpbmcgKG5jdildLiBUaGUgbW9ub2Nocm9tZSBlbnRyeSAoLW0pIGlzIHVzZWZ1bCBpZiB5b3UgdXNlIGEKLSMgbW9ub2Nocm9tZSBtb25pdG9yLgotIwotIyBUaGVyZSBpcyBvbmUgc2VyaW91cyBidWcgd2l0aCB0aGlzIHRlcm1pbmFsIGVtdWxhdGlvbidzIGNvbG9yCi0jIHN1cHBvcnQ6IHJlcG9zaXRpb25pbmcgdGhlIGN1cnNvciBvbnRvIGEgY2VsbCB3aXRoIG5vbi1tYXRjaGluZwotIyBjb2xvcnMgb2JsaXRlcmF0ZXMgdGhhdCBjZWxsJ3MgY29udGVudHMsIHJlcGxhY2luZyBpdCB3aXRoIGEgYmxhbmsKLSMgYW5kIGRpc3BsYXlpbmcgYSBjb2xvcmVkIGN1cnNvciBpbiB0aGUgImN1cnJlbnQiIGNvbG9ycy4gVGhlcmUgaXMKLSMgbm8gY29tcGxldGUgd29ya2Fyb3VuZCBhdCBwcmVzZW50IFtvdGhlciB0aGFuIHVzaW5nIHRoZSBtb25vY2hyb21lCi0jICgtbSkgZW50cmllcyxdIGJ1dCByZW1vdmluZyB0aGUgKG1zZ3IpIGNhcGFiaWxpdHkgc2VlbWVkIHRvIGhlbHAuCi0jCi0jIFRoZSAic3RhbmRvdXQiIGNob3NlbiB3YXMgc2ltcGxlIHJldmVyc2UtdmlkZW8sIGFsdGhvdWdoIGEgY29sb3JmdWwKLSMgc3RhbmRvdXQgbWlnaHQgYmUgbW9yZSBhZXN0aGV0aWNhbGx5IHBsZWFzaW5nLiBTaW1pbGFybHksIHRoZSBib2xkCi0jIGNob3NlbiBpcyB0aGUgdGVybWluYWwncyBvd24gc21lYXJlZCBib2xkLCBhbHRob3VnaCBhIHNpbXBsZQotIyBjb2xvci1jaGFuZ2UgbWlnaHQgYmUgbW9yZSByZWFkYWJsZS4gVGhlIGNvbG9yLWJvbGQgKC1iKSBlbnRyaWVzCi0jIHVzZXMgbWFnZW50YSBjb2xvcmVkIHRleHQgZm9yIGJvbGRpbmcgaW5zdGVhZC4gVGhlIGZhbmN5IGNvbG9yICgtZgotIyBhbmQgLWYyKSBlbnRyaWVzIHVzZSBjb2xvciBmb3IgYm9sZCwgc3RhbmRvdXQgYW5kIHVuZGVybGluZWQgdGV4dAotIyAodW5kZXJsaW5lZCB0ZXh0IGlzIHN0aWxsIHVuZGVybGluZWQsIHRob3VnaC4pCi0jCi0jIEFwcGFyZW50bHkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGRvZXMgc3VwcG9ydCBhIFZULTEwMC1zdHlsZQotIyBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCwgYnV0IGFsbCB0aGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKLSMgcG9zaXRpb25zIGhhdmUgYmVlbiBsZWZ0IGJsYW5rIGluIHRoZSBmb250LiBGb3IgdGhpcyByZWFzb24sIG5vCi0jIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW5jbHVkZWQgaW4gdGhpcwotIyBkZXNjcmlwdGlvbi4gVGhlIGNvbnNvbGUgZHJpdmVyIGFwcGVhcnMgdG8gYmUgQVNDSUktb25seSwgc28gKGVuYWNzKQotIyBoYXMgYmVlbiBleGNsdWRlZCBbYWx0aG91Z2ggdGhlIFZULTEwMCBzZXF1ZW5jZSBkb2VzIHdvcmsuXQotIwotIyBUaGUgZGVmYXVsdCBNYWMgT1MgWCBhbmQgRGFyd2luIGluc3RhbGxhdGlvbiByZXBvcnRzICJ2dDEwMCIgYXMgdGhlCi0jIHRlcm1pbmFsIHR5cGUsIGFuZCBleHBvcnRzIG5vIGhlbHBmdWwgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUbyBmaXgKLSMgdGhpcywgY2hhbmdlIHRoZSAiY29uc29sZSIgZW50cnkgaW4gL2V0Yy90dHlzIGZyb20gInZ0MTAwIiB0bwotIyAieG51cHBjLVd4SCIsIHdoZXJlIFcgYW5kIEggYXJlIHRoZSBjaGFyYWN0ZXIgZGltZW5zaW9ucyBvZiB5b3VyCi0jIGNvbnNvbGUgKHNlZSBiZWxvdy4pCi0jCi0jIFRoZSBmb250IHVzZWQgYnkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGlzIGFwcGFyZW50bHkgb25lIG9yaWdpbmFsbHkKLSMgZHJhd24gYnkgS2EtUGluZyBZZWUsIGFuZCB1c2VzIDh4MTYtcGl4ZWwgY2hhcmFjdGVycy4gVGhpcwotIyBmaWxlIGluY2x1ZGVzIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBnZW9tZXRyaWVzOgotIwotIyAgICAgUGl4ZWxzICAgICAgICBDaGFyYWN0ZXJzICAgRW50cnkgTmFtZSAoYXBwZW5kIC1tIGZvciBtb25vY2hyb21lKQotIyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICA2NDB4NDAwICAgICAgIDgweDI1ICAgICAgICB4bnVwcGMtODB4MjUKLSMgICAgIDY0MHg0ODAgICAgICAgODB4MzAgICAgICAgIHhudXBwYy04MHgzMAotIyAgICAgNzIweDQ4MCAgICAgICA5MHgzMCAgICAgICAgeG51cHBjLTkweDMwCi0jICAgICA4MDB4NjAwICAgICAgIDEwMHgzNyAgICAgICB4bnVwcGMtMTAweDM3Ci0jICAgICA4OTZ4NjAwICAgICAgIDExMngzNyAgICAgICB4bnVwcGMtMTEyeDM3Ci0jICAgICAxMDI0eDY0MCAgICAgIDEyOHg0MCAgICAgICB4bnVwcGMtMTI4eDQwCi0jICAgICAxMDI0eDc2OCAgICAgIDEyOHg0OCAgICAgICB4bnVwcGMtMTI4eDQ4Ci0jICAgICAxMTUyeDc2OCAgICAgIDE0NHg0OCAgICAgICB4bnVwcGMtMTQ0eDQ4Ci0jICAgICAxMjgweDEwMjQgICAgIDE2MHg2NCAgICAgICB4bnVwcGMtMTYweDY0Ci0jICAgICAxNjAweDEwMjQgICAgIDIwMHg2NCAgICAgICB4bnVwcGMtMjAweDY0Ci0jICAgICAxNjAweDEyMDAgICAgIDIwMHg3NSAgICAgICB4bnVwcGMtMjAweDc1Ci0jICAgICAyMDQ4eDE1MzYgICAgIDI1Nng5NiAgICAgICB4bnVwcGMtMjU2eDk2Ci0jCi0jIFRoZSBiYXNpYyAieG51cHBjIiBlbnRyeSBpbmNsdWRlcyBubyBzaXplIGluZm9ybWF0aW9uLCBhbmQgdGhlCi0jIGVtdWxhdG9yIGluY2x1ZGVzIG5vIHJlcG9ydGluZyBjYXBhYmlsaXR5LCBzbyB5b3UnbGwgYmUgYXQgdGhlIG1lcmN5Ci0jIG9mIHRoZSBUVFkgZGV2aWNlICh3aGljaCByZXBvcnRzIGluY29ycmVjdGx5IG9uIG15IGhhcmR3YXJlLikgVGhlCi0jIGNvbG9yLWJvbGQgZW50cmllcyBkbyBub3QgaW5jbHVkZSBzaXplIGluZm9ybWF0aW9uLgotCi0jIFRoZSAnKycgZW50cmllcyBhcmUgYnVpbGRpbmcgYmxvY2tzCi14bnVwcGMrYmFzaWN8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBiYXNpYyBjYXBhYmlsaXRpZXMsCi0JYW0sIGJjZSwgbWlyLCB4ZW5sLAotCWl0IzgsCi0JYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkc2w9XEVdMjtcMDA3LCBlZD1cRVtKLCBlbD1cRVtLLAotCWVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XDE3NywKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20sCi0Jc2dyMD1cRVttXDAxNywgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPXZ0MTAwK2tleXBhZCwKLQoteG51cHBjK2N8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBBTlNJIGNvbG9yIHN1cHBvcnQsCi0JY29sb3JzIzgsIG5jdiMzMiwgcGFpcnMjNjQsCi0Jb3A9XEVbMzc7NDBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi14bnVwcGMrYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIGNvbG9yLWJvbGQgc3VwcG9ydCwKLQluY3YjMzIsCi0JYm9sZD1cRVszNW0sCi0Jc2dyPVxFWzAlPyVwNiV0OzM1JTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTttLAotCXVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYytmfERhcndpbiBQb3dlclBDIENvbnNvbGUgZmFuY3kgY29sb3Igc3VwcG9ydCwKLQluY3YjMzUsCi0Jc2dyPVxFWzAlPyVwNiV0OzM1JTslPyVwMiV0OzM2OzQlOyU/JXAxJXQ7MzM7NDQlOyU/JXAzJXQ7NyU7bSwKLQlzbXNvPVxFWzMzOzQ0bSwgc211bD1cRVszNjs0bSwgdXNlPXhudXBwYytiLAotCi14bnVwcGMrZjJ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBhbHRlcm5hdGUgZmFuY3kgY29sb3Igc3VwcG9ydCwKLQluY3YjMzUsCi0JYm9sZD1cRVszM20sCi0Jc2dyPVxFWzAlPyVwNiV0OzMzJTslPyVwMiV0OzM0JTslPyVwMSV0OzMxOzQ3JTslPyVwMyV0OzclO20sCi0Jc21zbz1cRVszMTs0N20sIHNtdWw9XEVbMzRtLCB1c2U9eG51cHBjK2Jhc2ljLAotCi0jIEJ1aWxkaW5nIGJsb2NrcyBmb3Igc3BlY2lmaWMgc2NyZWVuIHNpemVzCi14bnVwcGMrODB4MjV8RGFyd2luIFBvd2VyUEMgQ29uc29sZSA4MHgyNSBzdXBwb3J0ICg2NDB4NDAwIHBpeGVscyksCi0JY29scyM4MCwgbGluZXMjMjUsCi0KLXhudXBwYys4MHgzMHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDgweDMwIHN1cHBvcnQgKDY0MHg0ODAgcGl4ZWxzKSwKLQljb2xzIzgwLCBsaW5lcyMzMCwKLQoteG51cHBjKzkweDMwfERhcndpbiBQb3dlclBDIENvbnNvbGUgOTB4MzAgc3VwcG9ydCAoNzIweDQ4MCBwaXhlbHMpLAotCWNvbHMjOTAsIGxpbmVzIzMwLAotCi14bnVwcGMrMTAweDM3fERhcndpbiBQb3dlclBDIENvbnNvbGUgMTAweDM3IHN1cHBvcnQgKDgwMHg2MDAgcGl4ZWxzKSwKLQljb2xzIzEwMCwgbGluZXMjMzcsCi0KLXhudXBwYysxMTJ4Mzd8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAxMTJ4Mzcgc3VwcG9ydCAoODk2eDYwMCBwaXhlbHMpLAotCWNvbHMjMTEyLCBsaW5lcyMzNywKLQoteG51cHBjKzEyOHg0MHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDEyOHg0MCBzdXBwb3J0ICgxMDI0eDY0MCBwaXhlbHMpLAotCWNvbHMjMTI4LCBsaW5lcyM0MCwKLQoteG51cHBjKzEyOHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDEyOHg0OCBzdXBwb3J0ICgxMDI0eDc2OCBwaXhlbHMpLAotCWNvbHMjMTI4LCBsaW5lcyM0OCwKLQoteG51cHBjKzE0NHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDE0NHg0OCBzdXBwb3J0ICgxMTUyeDc2OCBwaXhlbHMpLAotCWNvbHMjMTQ0LCBsaW5lcyM0OCwKLQoteG51cHBjKzE2MHg2NHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDE2MHg2NCBzdXBwb3J0ICgxMjgweDEwMjQgcGl4ZWxzKSwKLQljb2xzIzE2MCwgbGluZXMjNjQsCi0KLXhudXBwYysyMDB4NjR8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAyMDB4NjQgc3VwcG9ydCAoMTYwMHgxMDI0IHBpeGVscyksCi0JY29scyMyMDAsIGxpbmVzIzY0LAotCi14bnVwcGMrMjAweDc1fERhcndpbiBQb3dlclBDIENvbnNvbGUgMjAweDc1IHN1cHBvcnQgKDE2MDB4MTIwMCBwaXhlbHMpLAotCWNvbHMjMjAwLCBsaW5lcyM3NSwKLQoteG51cHBjKzI1Nng5NnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDI1Nng5NiBzdXBwb3J0ICgyMDQ4eDE1MzYgcGl4ZWxzKSwKLQljb2xzIzI1NiwgbGluZXMjOTYsCi0KLSMgVGhlc2UgYXJlIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrcwotCi14bnVwcGMtbXxkYXJ3aW4tbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSwKLQl1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGN8ZGFyd2lufERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy1tLWJ8ZGFyd2luLW0tYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lIHcvY29sb3ItYm9sZCksCi0JdXNlPXhudXBwYytiLAotCi14bnVwcGMtYnxkYXJ3aW4tYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvciB3L2NvbG9yLWJvbGQpLAotCXVzZT14bnVwcGMrYiwgdXNlPXhudXBwYytjLAotCi14bnVwcGMtbS1mfGRhcndpbi1tLWZ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoZmFuY3kgbW9ub2Nocm9tZSksCi0JdXNlPXhudXBwYytmLAotCi14bnVwcGMtZnxkYXJ3aW4tZnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChmYW5jeSBjb2xvciksCi0JdXNlPXhudXBwYytmLCB1c2U9eG51cHBjK2MsCi0KLXhudXBwYy1tLWYyfGRhcndpbi1tLWYyfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGFsdGVybmF0ZSBmYW5jeSBtb25vY2hyb21lKSwKLQl1c2U9eG51cHBjK2YyLAotCi14bnVwcGMtZjJ8ZGFyd2luLWYyfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGFsdGVybmF0ZSBmYW5jeSBjb2xvciksCi0JdXNlPXhudXBwYytmMiwgdXNlPXhudXBwYytjLAotCi0jIENvbWJpbmF0aW9ucyBmb3Igc3BlY2lmaWMgc2NyZWVuIHNpemVzCi14bnVwcGMtODB4MjUtbXxkYXJ3aW4tODB4MjUtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSA4MHgyNSwKLQl1c2U9eG51cHBjKzgweDI1LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtODB4MjV8ZGFyd2luLTgweDI1fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSA4MHgyNSwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrODB4MjUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy04MHgzMC1tfGRhcndpbi04MHgzMC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDgweDMwLAotCXVzZT14bnVwcGMrODB4MzAsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy04MHgzMHxkYXJ3aW4tODB4MzB8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDgweDMwLAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYys4MHgzMCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTkweDMwLW18ZGFyd2luLTkweDMwLW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgOTB4MzAsCi0JdXNlPXhudXBwYys5MHgzMCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTkweDMwfGRhcndpbi05MHgzMHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgOTB4MzAsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzkweDMwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTAweDM3LW18ZGFyd2luLTEwMHgzNy1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDEwMHgzNywKLQl1c2U9eG51cHBjKzEwMHgzNywgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTEwMHgzN3xkYXJ3aW4tMTAweDM3fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxMDB4MzcsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzEwMHgzNywgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTExMngzNy1tfGRhcndpbi0xMTJ4MzctbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxMTJ4MzcsCi0JdXNlPXhudXBwYysxMTJ4MzcsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xMTJ4Mzd8ZGFyd2luLTExMngzN3xEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTEyeDM3LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxMTJ4MzcsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xMjh4NDAtbXxkYXJ3aW4tMTI4eDQwLW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTI4eDQwLAotCXVzZT14bnVwcGMrMTI4eDQwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTI4eDQwfGRhcndpbi0xMjh4NDB8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDEyOHg0MCwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTI4eDQwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTI4eDQ4LW18ZGFyd2luLTEyOHg0OC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDEyOHg0OCwKLQl1c2U9eG51cHBjKzEyOHg0OCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTEyOHg0OHxkYXJ3aW4tMTI4eDQ4fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxMjh4NDgsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzEyOHg0OCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTE0NHg0OC1tfGRhcndpbi0xNDR4NDgtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxNDR4NDgsCi0JdXNlPXhudXBwYysxNDR4NDgsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xNDR4NDh8ZGFyd2luLTE0NHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTQ0eDQ4LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxNDR4NDgsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xNjB4NjQtbXxkYXJ3aW4tMTYweDY0LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTYweDY0LAotCXVzZT14bnVwcGMrMTYweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTYweDY0fGRhcndpbi0xNjB4NjR8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDE2MHg2NCwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTYweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMjAweDY0LW18ZGFyd2luLTIwMHg2NC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDIwMHg2NCwKLQl1c2U9eG51cHBjKzIwMHg2NCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTIwMHg2NHxkYXJ3aW4tMjAweDY0fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAyMDB4NjQsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzIwMHg2NCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTIwMHg3NS1tfGRhcndpbi0yMDB4NzUtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAyMDB4NzUsCi0JdXNlPXhudXBwYysyMDB4NzUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0yMDB4NzV8ZGFyd2luLTIwMHg3NXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMjAweDc1LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysyMDB4NzUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0yNTZ4OTYtbXxkYXJ3aW4tMjU2eDk2LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMjU2eDk2LAotCXVzZT14bnVwcGMrMjU2eDk2LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMjU2eDk2fGRhcndpbi0yNTZ4OTZ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDI1Nng5NiwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMjU2eDk2LCB1c2U9eG51cHBjK2Jhc2ljLAotCiAjIyMjIFJhZGlvIFNoYWNrL1RhbmR5CiAjCiAKQEAgLTE3MDY0LDQyICsxODI0OCw2IEBACiAJbGY3PWY4LCBtYzQ9XEVdKywgbWM1PVxFXT0sIHJtYWNzPVxFUmcsIHJtc289XEVSQCwgc2dyMD1cRVJALAogCXNtYWNzPVxFUkcsIHNtc289XEVSRCwKIAotIyMjIyBBdGFyaSBTVAotIwotCi0jIEZyb206IFNpbXNvbiBMLiBHYXJmaW5rZWwgPHNpbXNvbmdAbWVkaWEtbGFiLm1pdC5lZHU+Ci1hdGFyaXxhdGFyaSBzdCwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQljbGVhcj1cRUhcRUosIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRsMT1cRU0sCi0JZWQ9XEVKLCBlbD1cRUssIGh0PV5JLCBpbDE9XEVMLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwgcmk9XEVJLCBybXNvPVxFcSwgc2dyMD1cRXEsIHNtc289XEVwLAotIyBVbmlUZXJtIHRlcm1pbmFsIHByb2dyYW0gZm9yIHRoZSBBdGFyaSBTVDogIDQ5LWxpbmUgVlQyMjAgZW11bGF0aW9uIG1vZGUKLSMgRnJvbTogUGF1bCBNLiBBb2tpIDxhb2tpQHVjYnZheC5iZXJrZWxleS5lZHU+Ci11bml0ZXJtfHVuaXRlcm00OXxVbmlUZXJtIFZUMjIwIGVtdWxhdG9yIHdpdGggNDkgbGluZXMsCi0JbGluZXMjNDksCi0JaXMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aFxFWzE7NDlyXEVbNDk7MUgsCi0JdXNlPXZ0MjIwLAotIyBNaU5UIFZUNTIgZW11bGF0aW9uLiA4MCBjb2x1bW5zLCAyNSByb3dzLgotIyBNaU5UIGlzIE5vdyBUT1MsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdoaWNoIGNvbWVzIHdpdGggYWxsIEF0YXJpcyBub3cKLSMgKG1haW5seSBBdGFyaSBGYWxjb24pLiBUaGlzIHRlcm1jYXAgaXMgZm9yIHRoZSBWVDUyIGVtdWxhdGlvbiB5b3UgZ2V0Ci0jIHVuZGVyIHRjc2gvenNoL2Jhc2gvc2gva3NoL2FzaC9jc2ggd2hlbiB5b3UgcnVuIE1pTlQgaW4gYGNvbnNvbGUnIG1vZGUKLSMgRnJvbTogUGVyIFBlcnNzb24gPHBwQGdudS5haS5taXQuZWR1PiwgMjcgRmViIDE5OTYKLXN0NTJ8QXRhcmkgU1Qgd2l0aCBWVDUyIGVtdWxhdGlvbiwKLQlhbSwga20sCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYmVsPV5HLCBjaXZpcz1cRWYsIGNsZWFyPVxFSFxFSiwgY25vcm09XEVlLCBjcj1eTSwgY3ViMT1cRUQsCi0JY3VkMT1cRUIsIGN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XEVBLCBkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBpbDE9XEVMLAotCWluZD1eSiwga2ExPVxFIzcsIGthMz1cRSM1LCBrYjI9XEUjOSwga2JzPV5ILCBrYzE9XEUjMSwKLQlrYzM9XEUjMywga2Nscj1cRSM3LCBrY3ViMT1cRSNLLCBrY3VkMT1cRSNQLCBrY3VmMT1cRSNNLAotCWtjdXUxPVxFI0gsIGtmMD1cRSNELCBrZjE9XEUjOywga2YyPVxFIzwsIGtmMz1cRSM9LCBrZjQ9XEUjPiwKLQlrZjU9XEUjPywga2Y2PVxFI0AsIGtmNz1cRSNBLCBrZjg9XEUjQiwga2Y5PVxFI0MsIGtob21lPVxFI0csCi0Ja2lsMT1cRSNSLCBraW5kPVxFIzIsIGtyaT1cRSM4LCBsZjA9ZjEwLCBuZWw9Xk1eSiwgcmM9XEVrLAotCXJpPVxFSSwgcm1jdXA9LCBybXNvPVxFcSwgcnMxPVxFel9cRWJAXEVjQSwgc2M9XEVqLCBzZ3IwPVxFcSwKLQlzbWN1cD1cRWUsIHNtc289XEVwLAotCiAjIyMjIENvbW1vZG9yZSBCdXNpbmVzcyBNYWNoaW5lcwogIwogIyBGb3JtZXJseSBsb2NhdGVkIGluIFdlc3QgQ2hlc3RlciwgUEE7IHdlbnQgc3BlY3RhY3VsYXJseSBidXN0IGluIDE5OTQKQEAgLTE3MzA3LDIzICsxODQ1NSw0OCBAQAogIyBldmVuIGFzIHNpbmdsZSBwcm9jZXNzZXMgdW5kZXIgU3VuT1MgYW5kIHRoZSBNYWNpbnRvc2ggT1MuCiAjCiAKKyMgU2VlCisjCWh0dHA6Ly93d3cubWluaXgzLm9yZy9tYW5wYWdlcy9odG1sNC9jb25zb2xlLmh0bWwKK21pbml4fG1pbml4IGNvbnNvbGUgKHYzKSwKKwlhY3NjPStcMDIwXCxcMDIxLVwwMzAuXlkwXDMzM2BcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCisJa2RjaDE9XDE3Nywga2VuZD1cRVtZLCBrZjA9XEVbMjF+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwKKwlrZjExPVxFWzExOzJ+LCBrZjEyPVxFWzEyOzJ+LCBrZjEzPVxFWzEzOzJ+LAorCWtmMTQ9XEVbMTQ7Mn4sIGtmMTU9XEVbMTU7Mn4sIGtmMTY9XEVbMTc7Mn4sCisJa2YxNz1cRVsxODsyfiwga2YxOD1cRVsxOTsyfiwga2YxOT1cRVsyMDsyfiwga2YyPVxFWzEyfiwKKwlrZjIwPVxFWzIxOzJ+LCBrZjIxPVxFWzExOzV+LCBrZjIyPVxFWzEyOzV+LAorCWtmMjM9XEVbMTM7NX4sIGtmMjQ9XEVbMTQ7NX4sIGtmMjU9XEVbMTU7NX4sCisJa2YyNj1cRVsxNzs1fiwga2YyNz1cRVsxODs1fiwga2YyOD1cRVsxOTs1fiwKKwlrZjI5PVxFWzIwOzV+LCBrZjM9XEVbMTN+LCBrZjMwPVxFWzIxOzV+LCBrZjMxPVxFWzExOzZ+LAorCWtmMzI9XEVbMTI7Nn4sIGtmMzM9XEVbMTM7Nn4sIGtmMzQ9XEVbMTQ7Nn4sCisJa2YzNT1cRVsxNTs2fiwga2YzNj1cRVsxNzs2fiwga2YzNz1cRVsxODs2fiwKKwlrZjM4PVxFWzE5OzZ+LCBrZjM5PVxFWzIwOzZ+LCBrZjQ9XEVbMTR+LCBrZjQwPVxFWzIxOzZ+LAorCWtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCisJa2ljaDE9XEVbQCwga25wPVxFW1UsIGtwcD1cRVtWLCBsZjBALCBsZjFALCBsZjJALCBsZjNALCBsZjRALCBsZjVALAorCXVzZT1taW5peC0zLjAsCisKK21pbml4LTMuMHxtaW5peCBjb25zb2xlICh2My4wKSwKKwl1c2U9ZWNtYStjb2xvciwgdXNlPW1pbml4LTEuNywKKworIyBTZWUKKyMJaHR0cDovL3d3dy5taW5peC12bWQub3JnL3B1Yi9NaW5peC12bWQvMS43LjAvd3d3bWFuL21hbjQvY29uc29sZS40Lmh0bWwKICMgVGhpcyBpcyB0aGUgZW50cnkgcHJvdmlkZWQgd2l0aCBtaW5peCAxLjcuNCwgd2l0aCBib2d1cyA6cmk6IHJlbW92ZWQuCi1taW5peHxtaW5peCBjb25zb2xlICh2MS43KSwKK21pbml4LTEuN3xtaW5peCBjb25zb2xlICh2MS43KSwKIAlhbSwgeGVubCwKIAljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKIAliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMEosIGNyPV5NLAogCWN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKIAljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKIAljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVswSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwKLQlpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpczI9XEVbMG0sIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjA9XEVbWSwga2YxPVxFW1YsIGtmMj1cRVtVLCBrZjM9XEVbVCwga2Y0PVxFW1MsCi0Ja2Y1PVxFW0csIGtob21lPVxFW0gsIGxmMD1FbmQsIGxmMT1QZ1VwLCBsZjI9UGdEbiwgbGYzPU51bSArLAotCWxmND1OdW0gLSwgbGY1PU51bSA1LCBuZWw9Xk1eSiwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1zbz1cRVswbSwgcm11bD1cRVswbSwgc2dyMD1cRVswbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKKwlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVswSiwgZWw9XEVbSywgZWwxPVxFWzJLLAorCWhvbWU9XEVbSCwgaHQ9XkksIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLAorCWlsMT1cRVtMLCBpbmQ9XkosIGlzMj1cRVswbSwga2JzPV5ILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAorCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtmMD1cRVtZLCBrZjE9XEVbViwga2YyPVxFW1UsCisJa2YzPVxFW1QsIGtmND1cRVtTLCBrZjU9XEVbRywga2hvbWU9XEVbSCwgbGYwPUVuZCwgbGYxPVBnVXAsCisJbGYyPVBnRG4sIGxmMz1OdW0gKywgbGY0PU51bSAtLCBsZjU9TnVtIDUsIG5lbD1eTV5KLAorCXJldj1cRVs3bSwgcmk9XEVNLCBybXNvPVxFWzBtLCBybXVsPVxFWzBtLCBzZ3IwPVxFWzBtLAorCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCiAjIENvcnJlY3RlZCBKYW4gMTQsIDE5OTcgYnkgVmluY2VudCBCcm9tYW4gPGJyb21hbkBub3NjLm1pbD4KLW1pbml4LW9sZHxtaW5peCBjb25zb2xlICh2MS41KSwKK21pbml4LW9sZHxtaW5peC0xLjV8bWluaXggY29uc29sZSAodjEuNSksCiAJeG9uLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVswSiwgY3I9Xk0sCkBAIC0xNzM0Miw3ICsxODUxNSw3IEBACiAJYW0sIHVzZT1taW5peC1vbGQsCiAKIHBjLW1pbml4fG1pbml4IGNvbnNvbGUgb24gYW4gSW50ZWwgYm94LAotCXVzZT1rbG9uZSthY3MsIHVzZT1taW5peCwKKwl1c2U9a2xvbmUrYWNzLCB1c2U9bWluaXgtMy4wLAogCiAjIEFjY29yZGluZyB0byB0aGUgQ29oZXJlbnQgMi4zIG1hbnVhbCwgdGhlIFBDIGNvbnNvbGUgaXMgc2ltaWxhcgogIyB0byBhIHoxOS4gVGhlIGRpZmZlcmVuY2VzIHNlZW0gdG8gYmUgKDEpIDI1IGxpbmVzLCAoMikgbm8gc3RhdHVzCkBAIC0xNzQyOCw3ICsxODYwMSw3IEBACiB4ZXJveDgyMHx4ODIwfFhlcm94IDgyMCwKIAlhbSwKIAljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPTFeWiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCisJYmVsPV5HLCBjbGVhcj1cMDMyJDwxPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCiAJY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZWQ9XlEsIGVsPV5YLAogCWhvbWU9Xl4sIGluZD1eSiwKIApAQCAtMTc3MjksNyArMTg5MDIsNyBAQAogCXJtdWw9XEVbbSwgcnMyPVxFWz89aFxFYywgczBkcz1eTywgczFkcz1eTiwKIAlzZ3I9XEVbMCU/JXAxJXAzJXwldDs3JTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAogCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRVs/PmhcRVBZOTlcOjk4XEVcXCwKLQlzbWlyPVxFWzRoLCBzbXNvPVxFWzA7N20sIHNtdWw9XEVbMDs0bSwgdGJjPVxFWzJnLAorCXNtaXI9XEVbNGgsIHNtc289XEVbMDs3bSwgc211bD1cRVswOzRtLCB0YmM9XEVbM2csCiAJdHNsPVxFUFk5OVw6OThcRVxcXEVbMDs5OHZcRVsyOzdtLAogdHdzMjEwMi1zbmF8ZGt1NzEwMi1zbmF8QlVMTCBRdWVzdGFyIHR3czIxMDIgZm9yIFNOQSwKIAlkc2w9XEVbMDs5OHZcRVsySlxFW3YsIGZzbD1cRVt2LCBpczM9XEViLCB0c2w9XEVbMDs5OHYsCkBAIC0xNzc0NSw2ICsxODkxOCw3IEBACiAJdXNlPXR3cy1nZW5lcmljLAogZGt1NzIwMnxCVUxMIFF1ZXN0YXIgMjAwIERLVTcyMDIgKGNvbG91ci9jaGFyYWN0ZXIgYXR0cmlidXRlcyksCiAJYmxpbms9XEVbMDsyOzRtLCBkaW09XEVbMDs1bSwgaHQ9XkksIGlzMz1cRVs/M2hcRWIsCisJc2dyPVxFWzAlPyVwMSV0OzI7NDs1OzclOyU/JXAzJXQ7NyU7JT8lcDIldDsyJTslPyVwNCV0OzI7NCU7JT8lcDUldDs1JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAogCXNtc289XEVbMDs0OzU7N20sIHNtdWw9XEVbMDsybSwgdXNlPXR3cy1nZW5lcmljLAogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IwpAQCAtMTc4MjQsNyArMTg5OTgsNyBAQAogCiAjIFRoaXMgZW50cnkgY292ZXJzIEJRMzAzLCBCUTMwNiwgQlEzMTAsIFEzMDMsIFEzMDYsIFEzMTAKIGJxMzAwfEJ1bGwgdnQzMjAgSVNPIExhdGluIDEgODAgY29sdW1ucyB0ZXJtaW5hbCwKLQlhbSwgZW8sIGVzbG9rLCBocywga20sIG1jNWksIG1pciwgbXNnciwgeGVubCwgeG9uLAorCWFtLCBlbywgZXNsb2ssIGhzLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsIHdzbCM4MCwKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCkBAIC0xNzg0OCwxNCArMTkwMjIsMTQgQEAKIAlrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBrZm5kPVxFWzF+LAogCWtobHA9XEVbMjh+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCiAJa3Jkbz1cRVsyOX4sIGtzbHQ9XEVbNH4sIGxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsCi0JbWMwPVxFW2ksIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLCBybWN1cD1cRVs/N2gsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwgcnMxPVxFWyFwLAotCXJzMj1cRVs/M2wsIHMwZHM9XEUoQiwgczFkcz1cRSgwLCBzYz1cRTcsCisJbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9XEUoQiwgcm1hbT1cRVs/N2wsCisJcm1jdXA9XEVbPzdoLCBybWlyPVxFWzRsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVsyN20sCisJcm11bD1cRVsyNG0sIHJzMT1cRVshcCwgcnMyPVxFWz8zbCwgczBkcz1cRShCLCBzMWRzPVxFKDAsCisJc2M9XEU3LAogCXNncj1cRVslPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSU/JXA5JXRcRSgwJWVcRShCJTssCiAJc2dyMD1cRVswbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLAogCXNtY3VwPVxFWz83bFxFWz8xbFxFKEIsIHNtaXI9XEVbNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLCB0c2w9XEVbMSR9XEVbMiR+LAorCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdHNsPVxFWzEkfVxFWzIkfiwgdXNlPWFuc2krcHAsCiBicTMwMC1ydnxCdWxsIHZ0MzIwIHJldmVyc2UgODAgY29sdW1ucywKIAlmbGFzaD1cRVs/NWwkPDUwPlxFWz81aCwKIAlpczI9XEVbPzJoXEVbPzNsXEVbPzVoXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgRlxFWz80MmxcRVs/NGwsCkBAIC0xNzkzMCwxNCArMTkxMDQsMTUgQEAKIAlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAogCWJlbD1eRywgYmxpbms9XDIzMzVtLCBib2xkPVwyMzMxbSwgY2l2aXM9XDIzMz8yNWwsCiAJY2xlYXI9XDIzM0hcMjMzSiwgY25vcm09XDIzMz8yNWgsIGNyPV5NLAotCWNzcj1cMjMzJWklcDElZDslcDIlZHIsIGN1Yj1cMjMzJXAxJWRELCBjdWQ9XDIzMyVwMSVkQiwKLQljdWY9XDIzMyVwMSVkQywgY3VwPVwyMzMlaSVwMSVkOyVwMiVkSCwgY3V1PVwyMzMlcDElZEEsCi0JZGNoPVwyMzMlcDElZFAsIGRjaDE9XDIzM1AsIGRsPVwyMzMlcDElZE0sCisJY3NyPVwyMzMlaSVwMSVkOyVwMiVkciwgY3ViPVwyMzMlcDElZEQsIGN1YjE9XDIzMzFELAorCWN1ZD1cMjMzJXAxJWRCLCBjdWQxPVwyMzMxQiwgY3VmPVwyMzMlcDElZEMsIGN1ZjE9XDIzMzFDLAorCWN1cD1cMjMzJWklcDElZDslcDIlZEgsIGN1dT1cMjMzJXAxJWRBLCBjdXUxPVwyMzMxQSwKKwlkY2g9XDIzMyVwMSVkUCwgZGNoMT1cMjMzUCwgZGw9XDIzMyVwMSVkTSwgZGwxPVwyMzNNLAogCWRzbD1cMjMzMSR9XDIzMzIkflxuXDIzMzAkfSwgZWNoPVwyMzMlcDElZFgsIGVkPVwyMzNKLAogCWVsPVwyMzNLLCBlbDE9XDIzMzFLLCBlbmFjcz1cRShCXEUpMCwKIAlmbGFzaD1cMjMzPzVoJDw1MD5cMjMzPzVsLCBmc2w9XDIzMzAkfSwgaG9tZT1cMjMzSCwKLQlodD1eSSwgaHRzPVxFSCwgaWNoPVwyMzMlcDElZEAsIGlsPVwyMzMlcDElZEwsIGluZD1cRUQsCi0JaXMxPVxFWzYzOzIicFxFWzJoLAorCWh0PV5JLCBodHM9XEVILCBpY2g9XDIzMyVwMSVkQCwgaWw9XDIzMyVwMSVkTCwgaWwxPVwyMzNMLAorCWluZD1cRUQsIGlzMT1cRVs2MzsyInBcRVsyaCwKIAlpczI9XEVbPzJoXEVbPzNsXEVbPzVsXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgR1xFWz80MmxcRVs/NGwsCiAJaXMzPVwyMzMwJH1cMjMzPzI1aFwyMzMybFwyMzNIXDIzM0osIGthMT1cMjE3dywKIAlrYTM9XDIxN3ksIGtiMj1cMjE3dSwga2JzPV5ILCBrYzE9XDIxN3EsIGtjMz1cMjE3cywKQEAgLTE3OTUwLDExICsxOTEyNSwxMiBAQAogCWtobHA9XDIzMzI4fiwga2ljaDE9XDIzMzJ+LCBrbnA9XDIzMzZ+LCBrcHA9XDIzMzV+LAogCWtyZG89XDIzMzI5fiwga3NsdD1cMjMzNH4sIGxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsCiAJbGY0PXBmNCwgbWMwPVwyMzNpLCBtYzQ9XDIzMzRpLCBtYzU9XDIzMzVpLCBuZWw9XEVFLCByYz1cRTgsCi0JcmV2PVwyMzM3bSwgcmk9XEVNLCBybWFjcz1eTywgcm1hbT1cMjMzPzdsLCBybWN1cD1cMjMzPzdoLAotCXJtaXI9XDIzMzRsLCBybWt4PVwyMzM/MWxcRT4sIHJtc289XDIzMzI3bSwgcm11bD1cMjMzMjRtLAotCXJzMT1cRVshcCwgcnMyPVxFWz8zbCwgczBkcz1cRShCLCBzMWRzPVxFKDAsIHNjPVxFNywKKwlyZXY9XDIzMzdtLCByaT1cRU0sIHJtYWNzPVxFKEIsIHJtYW09XDIzMz83bCwKKwlybWN1cD1cMjMzPzdoLCBybWlyPVwyMzM0bCwgcm1reD1cMjMzPzFsXEU+LAorCXJtc289XDIzMzI3bSwgcm11bD1cMjMzMjRtLCByczE9XEVbIXAsIHJzMj1cRVs/M2wsCisJczBkcz1cRShCLCBzMWRzPVxFKDAsIHNjPVxFNywKIAlzZ3I9XDIzMyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTttJT8lcDkldFxFKDAlZVxFKEIlOywKLQlzZ3IwPVwyMzMwbVxFKEIsIHNtYWNzPV5OLCBzbWFtPVwyMzM/N2gsCisJc2dyMD1cMjMzMG1cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVwyMzM/N2gsCiAJc21jdXA9XDIzMz83bFwyMzM/MWxcRShCLCBzbWlyPVwyMzM0aCwgc21zbz1cMjMzN20sCiAJc211bD1cMjMzNG0sIHRiYz1cMjMzM2csIHRzbD1cMjMzMSR9XDIzMzIkfiwKIGJxMzAwLThydnxCdWxsIHZ0MzIwIDgtYml0IHJldmVyc2UgbW9kZSA4MCBjb2x1bW5zLApAQCAtMTg0NzIsMTEgKzE5NjQ4LDExIEBACiBoMTl8aGVhdGh8aDE5LWJ8aGVhdGhraXR8aGVhdGgtMTl8ejE5fHplbml0aHxoZWF0aGtpdCBoMTksCiAJT1RicywgYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9flxeeGBxYW5ia2NqZG1lbGZnZytoYWkua3dzdXR2dXR2b3pzeywgYmVsPV5HLAorCWFjc2M9K2gua2FpZ2dqZGtjbGZtZW5ib3pxYXN7dHZ1dHZ1d3N4YH5cXiwgYmVsPV5HLAogCWNsZWFyPVxFRSwgY25vcm09XEV5NCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVCLCBjdWYxPVxFQywKIAljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgY3Z2aXM9XEV4NCwKIAlkY2gxPVxFTiwgZWQ9XEVKLCBlbD1cRUssIGZzbD1cRWtcRXk1LCBob21lPVxFSCwgaHQ9XkksIGluZD1eSiwKLQlpcD08MS41Lz4sIGticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKKwlpcD0kPDEuNS8+LCBrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCiAJa2N1dTE9XEVBLCBrZjE9XEVTLCBrZjI9XEVULCBrZjM9XEVVLCBrZjQ9XEVWLCBrZjU9XEVXLAogCWtmNj1cRVAsIGtmNz1cRVEsIGtmOD1cRVIsIGtob21lPVxFSCwgbGY2PWJsdWUsIGxmNz1yZWQsCiAJbGY4PXdoaXRlLCByaT1cRUksIHJtYWNzPVxFRywgcm1pcj1cRU8sIHJtc289XEVxLCBzbWFjcz1cRUYsCkBAIC0xODU1OSwxNCArMTk3MzUsMTQgQEAKIAljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCiAJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCiAJZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVsxUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCi0JZHNsPVxFWz4xbCwgZWQ9XEVbSiwgZWw9XEVbSywgZnNsPVxFW3VcRVs+NWwsIGhvbWU9XEVbSCwKLQlodD1eSSwgaHRzPVxFSCwgaWY9L3Vzci9zaGFyZS90YWJzZXQvdnQxMDAsIGlsPVxFWyVwMSVkTCwKLQlpbmQ9XEVELCBrYnM9XkgsIGtjbHI9XEVbSiwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwKLQlrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZWQ9XEVbSiwga2YwPVxFW34sIGtmMT1cRU9TLAotCWtmMj1cRU9ULCBrZjM9XEVPVSwga2Y0PVxFT1YsIGtmNT1cRU9XLCBrZjY9XEVPUCwga2Y3PVxFT1EsCi0Ja2Y4PVxFT1IsIGtmOT1cRU9YLCBraG9tZT1cRVtILCBsZjA9aGVscCwgbWMwPVxFIzcsCi0JbmVsPV5NXEVELCByYz1cRVtyLCByZXY9XEVbN20sIHJpPVxFTSwgcm1jdXA9XEVbPzdoLAotCXJtc289XEVbbSwgcm11bD1cRVttLAorCWRsMT1cRVtNLCBkc2w9XEVbPjFsLCBlZD1cRVtKLCBlbD1cRVtLLCBmc2w9XEVbdVxFWz41bCwKKwlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpZj0vdXNyL3NoYXJlL3RhYnNldC92dDEwMCwKKwlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELCBrYnM9XkgsIGtjbHI9XEVbSiwKKwlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZWQ9XEVbSiwKKwlrZjA9XEVbfiwga2YxPVxFT1MsIGtmMj1cRU9ULCBrZjM9XEVPVSwga2Y0PVxFT1YsIGtmNT1cRU9XLAorCWtmNj1cRU9QLCBrZjc9XEVPUSwga2Y4PVxFT1IsIGtmOT1cRU9YLCBraG9tZT1cRVtILCBsZjA9aGVscCwKKwltYzA9XEUjNywgbmVsPV5NXEVELCByYz1cRVtyLCByZXY9XEVbN20sIHJpPVxFTSwKKwlybWN1cD1cRVs/N2gsIHJtc289XEVbbSwgcm11bD1cRVttLAogCXJzMT1cRTxcRVsxOzI0clxFWzI0OzFIXEVbPzdoXEVbPjRoXEVbPjE7MjszOzU7Njs3Ozg7OWxcRVttXEVbMTFtLAogCXNjPVxFW3MsIHNncjA9XEVbbSwgc21jdXA9XEVbPzdsLCBzbXNvPVxFWzc7Mm0sIHNtdWw9XEVbNG0sCiAJdGJjPVxFWzNnLCB0c2w9XEVbc1xFWz41OzFoXEVbMjU7JWklZEhcRVsxSywKQEAgLTE4NjEwLDcgKzE5Nzg2LDcgQEAKIHoxMDBid3xoMTAwYnd8ejExMGJ3fHotMTAwYnd8aC0xMDBid3xoZWF0aC96ZW5pdGggei0xMDAgcGMsCiAJT1RicywgT1RwdCwgbWlyLCBtc2dyLAogCU9Ua24jMTAsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9flxeeGBxYW5ia2NqZG1lbGZnZytoYWkua3dzdXR2dXR2b3pzeywKKwlhY3NjPStoLmthaWdnamRrY2xmbWVuYm96cWFze3R2dXR2dXdzeGB+XF4sCiAJY2xlYXI9XEVFJDw1Ki8+LCBjbm9ybT1cRXk0LCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCiAJY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8MSovPiwgY3V1MT1cRUEsCiAJY3Z2aXM9XEV4NCwgZGNoMT1cRU4kPDEqLz4sIGRsMT1cRU0kPDUqLz4sIGVkPVxFSiwgZWw9XEVLLApAQCAtMTg2NTgsNyArMTk4MzQsNyBAQAogaW1zLWFuc2l8dWx0aW1hMnx1bHRpbWFJSXxJTVMgVWx0aW1hIElJLAogCU9UYnMsIGFtLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPVxFW0hcRVsySiwgY3ViMT1eSCwgY3VkMT1cRUQsCisJY2xlYXI9XEVbSFxFWzJKLCBjdWIxPV5ILCBjdWQxPVxFRCwgY3VmMT1cRUMsCiAJY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVNLCBlZD1cRVswSiwgZWw9XEVbMEssCiAJaHQ9XkksIGlmPS91c3Ivc2hhcmUvdGFic2V0L3Z0MTAwLAogCWlzMj1cRVttXEVbPjE0bFxFWz8xOz81OzIwbFxFPlxFWzFtXHIsIGtjdWIxPVxFW0QsCkBAIC0xODc2OSw5ICsxOTk0NSw5IEBACiBtb2RncmFwaDJ8bW9kZ3JhcGggZ3gtMTAwMCA4MHgyNCB3aXRoIGtleXBhZCBub3QgZW5hYmxlZCwKIAlhbSwgZGEsIGRiLAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPVxFSFxFSiQ8NTAvPiwgY3ViMT1eSCwgY3VmMT1cRUMkPDIvPiwKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjJDw1Lz4sIGN1dTE9XEVBJDwyLz4sCi0JZWQ9XEVKJDw1MC8+LCBlbD1cRUskPDMvPiwgaHQ9XkksCisJY2xlYXI9XEVIXEVKJDw1MC8+LCBjdWIxPV5ILCBjdWQxPVxFQiQ8Mi8+LAorCWN1ZjE9XEVDJDwyLz4sIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDUvPiwKKwljdXUxPVxFQSQ8Mi8+LCBlZD1cRUokPDUwLz4sIGVsPVxFSyQ8My8+LCBodD1eSSwKIAlpczI9XEU8XEVcXjU7MnNcRVxeNzsxc1xFWzNnXEVcXjExOzlzXEVcXjExOzE3c1xFXF4xMTsyNXNcRVxeMTE7MzNzXEVcXjExOzQxc1xFXF4xMTs0OXNcRVxeMTE7NTdzXEVcXjExOzY1c1xFXF4xMTs3M3NcRVxeMTE7ODFzXEVcXjExOzg5c1xFXF4xMjswc1xFXF4xNDsyc1xFXF4xNTs5c1xFXF4yNTsxc1xFXF45OzFzXEVcXjI3OzEsCiAJcmk9XEVJJDw1Lz4sCiAjCkBAIC0xODg0Miw5ICsyMDAxOCw5IEBACiBleDE1NXxNb3Rvcm9sYSBFeG9ydGVybSAxNTUsCiAJT1RicywgYW0sIGJ3LAogCU9Ua24jNSwgT1R1ZyMxLCBjb2xzIzgwLCBsaW5lcyMyNCwKLQljYnQ9XEVbLCBjbGVhcj1cRVgsIGN1ZDE9XEVCLCBjdWYxPVxFRCwKLQljdXA9XEVFJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBlZD1cRVQsIGVsPVxFVSwKLQlob21lPVxFQCwgaHQ9XEVaLCBrYnM9XkgsIGtjYnQ9XEVbLCBrY2xyPVxFWCwga2N1YjE9XkgsCisJY2J0PVxFWywgY2xlYXI9XEVYLCBjdWIxPVxFRCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAorCWN1cD1cRUUlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBlZD1cRVQsCisJZWw9XEVVLCBob21lPVxFQCwgaHQ9XEVaLCBrYnM9XkgsIGtjYnQ9XEVbLCBrY2xyPVxFWCwga2N1YjE9XkgsCiAJa2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2VkPVxFVCwga2VsPVxFVSwga2hvbWU9XEVALAogCXJtc289XEVjXEVELCBybXVsPVxFZ1xFRCwgc21zbz1cRWJcRUQsIHNtdWw9XEVmXEVELAogCkBAIC0xOTE0MCw3ICsyMDMxNiw3IEBACiB0MTB8dGVsZXJheSAxMCBzcGVjaWFsLAogCU9UYnMsIGttLCB4aHAsIHh0LAogCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB4bWMjMiwKLQljbGVhcj1cRWokPDMwLz4sIGN1YjE9XkgsIGN1ZjE9XEVDLAorCWNsZWFyPVxFaiQ8MzAvPiwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAogCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBkY2gxPVxFUSwKIAlkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBpY2gxPVxFUCwgaWwxPVxFTCwKIAlpbmQ9XEVxLCBwYWQ9XDAsIHJpPVxFcCwgcm1zbz1cRVJALCBybXVsPVxFUkAsIHNtc289XEVSRCwKQEAgLTE5MjM2LDEyICsyMDQxMiwxMSBAQAogCWN1cD0laVxFWyVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBjdnZpcz1cRVs/MzFoLAogCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILAogCWlsMT1cRVtMLCBpbmQ9XEVELCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9UCQ8XDIzMz4sIGtmMT1QJDxcMjE3PiwKLQlrZjI9USQ8XDIxNz4sIGtmMz1SJDxcMjE3Piwga2Y0PVMkPFwyMTc+LCBrZjU9fiQ8XDIzMzE2PiwKLQlrZjY9fiQ8XDIzMzE3Piwga2Y3PX4kPFwyMzMxOD4sIGtmOD1+JDxcMjMzMTk+LAotCWtmOT1+JDxcMjMzMjA+LCBraWNoMT1AJDxcMjMzPiwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LCBzZ3IwPVxFW20sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLAorCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVwyMzNQLCBrZjE9XDIxN1AsIGtmMj1cMjE3USwKKwlrZjM9XDIxN1IsIGtmND1cMjE3Uywga2Y1PVwyMzMxNn4sIGtmNj1cMjMzMTd+LAorCWtmNz1cMjMzMTh+LCBrZjg9XDIzMzE5fiwga2Y5PVwyMzMyMH4sIGtpY2gxPVwyMzNALCByYz1cRTgsCisJcmV2PVxFWzdtLCByaT1cRU0sIHJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsIHNncjA9XEVbbSwKKwlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCiB0aTkyNHd8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA3IGJpdCAtIDEzMiBjb2x1bW4gbW9kZSwKIAljb2xzIzEzMiwgdXNlPXRpOTI0LAogdGk5MjQtOHd8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA4IGJpdCAtIDEzMiBjb2x1bW4gbW9kZSwKQEAgLTE5MzY3LDYgKzIwNTQyLDE5MyBAQAogYXBvbGxvX2NvbG9yfGFwb2xsbyBjb2xvciBkaXNwbGF5LAogCXJtaXJALCBzbWlyQCwgdXNlPXZ0MTMyLAogCisjIyMjIEFUJlQgY29uc29sZXMKKworIyBUaGlzIGFjdHVhbGx5IGRlc2NyaWJlcyB0aGUgZ2VuZXJpYyBTVnI0IGRpc3BsYXkgZHJpdmVyIGZvciBJbnRlbCBib3hlcy4KKyMgVGhlIDxkaW09XEVbMm0+IGlzbid0IGRvY3VtZW50ZWQgYW5kIHRoZXJlZm9yZSBtYXkgbm90IGJlIHJlbGlhYmxlLgorIyBGcm9tOiBFcmljIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gTW9uIE5vdiAyNyAxOTowMDo1MyBFU1QgMTk5NQorYXR0NjM4NnxhdDM4NnwzODZhdHxBVCZUIFdHUyA2Mzg2IGNvbnNvbGUsCisJYW0sIGJ3LCBlbywgeG9uLAorCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAorCWFjc2M9YGBhMWZ4Z3FoMGpZaz9sWm1AbkVvb3BwcURycnNzdEN1NHZBd0J4M3l5enp7e3x8fX1+fiwKKwliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPUMsCisJY2xlYXI9XEVbMkpcRVtILCBjbm9ybT1cRVs9MUMsIGNyPV5NLCBjdWI9XEVbJXAxJWRELAorCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAorCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAorCWN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCisJZGw9XEVbJXAxJWRNLCBkbDE9XEVbMU0sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssCisJaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAorCWljaDE9XEVbMUAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFWzFMLCBpbmQ9XEVbUywKKwlpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOW0sIGlzMj1cRVswOzEwOzM5bSwga2JzPV5ILAorCWtjYnQ9Xl0sIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCisJa2RjaDE9XEVbUCwga2VuZD1cRVtZLCBrZjE9XEVPUCwga2YxMD1cRU9ZLCBrZjExPVxFT1osCisJa2YxMj1cRU9BLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPVCwga2Y2PVxFT1UsCisJa2Y3PVxFT1YsIGtmOD1cRU9XLCBrZjk9XEVPWCwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwKKwlrbnA9XEVbVSwga3BwPVxFW1YsIGtybWlyPVxFMCwgbmVsPVxyXEVbUywgcmM9XEU4LCByZXY9XEVbN20sCisJcmk9XEVbVCwgcmluPVxFWyVwMSVkVCwgcm1hY3M9XEVbMTBtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKKwlzYz1cRTcsCisJc2dyPVxFWzEwbVxFWzAlPyVwMSVwMyV8JXQ7NyU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDYldDsxJTslPyVwOSV0OzEyJWU7MTAlOyU/JXA3JXQ7OSU7bSwKKwlzZ3IwPVxFWzA7MTBtLCBzbWFjcz1cRVsxMm0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCisJdGJjPVxFWzNnLCB2cGE9XEVbJWklcDElZGQsIHVzZT1rbG9uZStjb2xvciwKKyMgKHBjNjMwMHBsdXM6IHJlbW92ZWQgIjpLTT0vdXNyL2xpYi91YS9rbWFwLnM1OiI7IHJlbmFtZWQgQk8vRUUvQ0kvQ1YgLS0gZXNyKQorcGM2MzAwcGx1c3xBVCZUIDYzMDAgcGx1cywKKwlPVGJzLCBhbSwgeG9uLAorCWNvbHMjODAsIGxpbmVzIzI0LAorCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz1DLAorCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPTFDLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRVtCLAorCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwKKwlkY2gxPVxFWzFQLCBkaW09XEVbMm0sIGRsMT1cRVsxTSwgZWQ9XEVbMEosIGVsPVxFWzBLLAorCWhvbWU9XEVbSCwgaHRzPVxFSCwgaWNoMT1cRVsxQCwgaWwxPVxFWzFMLCBpbmQ9XkosCisJaW52aXM9XEVbOW0sIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKKwlrY3V1MT1cRVtBLCBrZjE9XEVPYywga2YxMD1cRU91LCBrZjI9XEVPZCwga2YzPVxFT2UsCisJa2Y0PVxFT2YsIGtmNT1cRU9nLCBrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLCBrZjk9XEVPaywKKwluZWw9Xk1eSiwgcmV2PVxFWzdtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2dyMD1cRVttLAorCXNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKKworIyBGcm9tOiBCZW5qYW1pbiBDLiBXLiBTaXR0bGVyIDxic2l0dGxlckBubXQuZWR1PgorIworIyBJIGhhdmUgYSBVTklYIFBDIHdoaWNoIEkgdXNlIGFzIGEgdGVybWluYWwgYXR0YWNoZWQgdG8gbXkgTGludXggUEMuCisjIFVuZm9ydHVuYXRlbHksIHRoZSBVTklYIFBDIHRlcm1pbmZvIGVudHJ5IHRoYXQgY29tZXMgd2l0aCBuY3Vyc2VzCisjIGlzIGJyb2tlbi4gQWxsIHRoZSBzcGVjaWFsIGtleSBzZXF1ZW5jZXMgYXJlIGJyb2tlbiwgbWFraW5nIGl0IHVudXNhYmxlCisjIHdpdGggRW1hY3MuIFRoZSBwcm9ibGVtIHN0ZW1zIGZyb20gdGhlIGZvbGxvd2luZzoKKyMKKyMgVGhlIFVOSVggUEMgaGFzIGEgcGxldGhvcmEgb2Yga2V5cyAoMTAzIG9mIHRoZW0sIGFuZCB0aGVyZSdzIG5vIG51bWVyaWMKKyMga2V5cGFkISksIGxvYWRhYmxlIGZvbnRzLCBhbmQgc3RyYW5nZSBoaWdobGlnaHRpbmcgbW9kZXMgKCJkaXRoZXJlZCIKKyMgaGFsZi1pbnRlbnNpdHksICJzbWVhcmVkIiBib2xkLCBhbmQgcmVhbCBzdHJpa2Utb3V0LCBmb3IgZXhhbXBsZS4pIEl0IGFsc28KKyMgdXNlcyByZXNpemFibGUgdGVybWluYWwgd2luZG93cywgYnV0IHRoZSBidW5kbGVkIHRlcm1pbmFsIHByb2dyYW0gYWx3YXlzCisjIHVzZXMgYW4gODB4MjQgd2luZG93IChhbmQgZG9lc24ndCBzdXBwb3J0IHNlZW0gdG8gc3VwcG9ydCBhIDEzMi1jb2x1bW4KKyMgbW9kZS4pCisjCisjIEhJU1RPUlk6IFRoZSBVTklYIFBDIHdhcyBvbmUgb2YgdGhlIGZpcnN0IG1hY2hpbmVzIHdpdGggYSBHVUksIGFuZCB1c2VkIGEKKyMgbGlicmFyeSB3aGljaCB3YXMgYSBzdXBlcnNldCBvZiBTVnIzLjUgY3Vyc2VzIChjYWxsZWQgdGFtLCBmb3IgInRlcm1pbmFsCisjIGFjY2VzcyBtZXRob2QiLikgdGFtIGluY2x1ZGVzIHN1cHBvcnQgZm9yIHJlYWwsIG92ZXJsYXBwaW5nIHdpbmRvd3MsCisjIG9uc2NyZWVuIGZ1bmN0aW9uIGtleSBsYWJlbHMsIGFuZCBiaXRtYXAgZ3JhcGhpY3MuIEJ1dCBzaW5jZSB0aGUgcHJpbWFyeQorIyB1c2VyIGludGVyZmFjZSBvbiB0aGUgVU5JWCBQQyB3YXMgYSBHVUkgcHJvZ3JhbSAodWEsIGZvciAidXNlcgorIyBhc3Npc3RhbnQiLCkgYW5kIHJlbW90ZSBhZG1pbmlzdHJhdGlvbiB3YXMgY29uc2lkZXJlZCBpbXBvcnRhbnQgZm9yIHRoZQorIyBtYWNoaW5lLCB0YW0gYWxzbyBzdXBwb3J0ZWQgVlQxMDAtY29tcGF0aWJsZSB0ZXJtaW5hbHMgYXR0YWNoZWQgdG8gdGhlCisjIHNlcmlhbCBwb3J0IG9yIHVzZWQgYWNyb3NzIHRoZSBTdGFyTGFuIG5ldHdvcmsuIFRvIHNpbXVsYXRlIHRoZSBleHRyYSBrZXlzCisjIG5vdCBwcmVzZW50IG9uIGEgVlQxMDAsIHVzZXJzIGNvdWxkIHByZXNzIEVTQyBhbmQgYSB0d28tbGV0dGVyIHNlcXVlbmNlLAorIyBzdWNoIGFzIHUgZCAoVW5kbykgb3IgVSBEIChTaGlmdC1VbmRvLikgVGhlc2UgdHdvLWxldHRlciBzZXF1ZW5jZXMsCisjIGhvd2V2ZXIsIHdlcmUgbm90IHRoZSBzYW1lIGFzIHRob3NlIHNlbnQgYnkgdGhlIGFjdHVhbCBVbmRvIGtleS4gVGhlCisjIGFjdHVhbCBVbmRvIGtleSBzZW5kcyBFU0MgMCBzIHVuc2hpZnRlZCwgYW5kIEVTQyAwIFMgc2hpZnRlZCwgZm9yIGV4YW1wbGUuCisjIChJZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBhZGRpbmcgc29tZSBvZiB0aGUgdGFtIGNhbGxzIHRvIG5jdXJzZXMsIGJ0dywgSQorIyBoYXZlIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gYW5kIHNldmVyYWwgcHJvZ3JhbXMgd2hpY2ggdXNlIHRhbS4gSXQgYWxzbworIyB1c2VkIGFuIGV4dGVuZGVkIHRlcm1pbmZvIGZvcm1hdCB0byBkZXNjcmliZSBrZXkgc2VxdWVuY2VzLCBzcGVjaWFsCisjIGhpZ2hsaWdodGluZyBtb2RlcywgZXRjLikKKyMKKyMgS0VZUzogVGhpcyBtZWFucyB0aGF0IG5jdXJzZXMgd291bGQgcXVpdGUgcGFpbmZ1bCBvbiB0aGUgVU5JWCBQQywgc2luY2UKKyMgdGhlcmUgYXJlIHR3byBzZXF1ZW5jZXMgZm9yIGV2ZXJ5IGtleS1tb2RpZmllciBjb21iaW5hdGlvbiAobG9jYWwga2V5Ym9hcmQKKyMgc2VxdWVuY2UgYW5kIHJlbW90ZSAiVlQxMDAiIHNlcXVlbmNlLikgQnV0IEkgZG91YnQgbWFueSBwZW9wbGUgYXJlIHRyeWluZworIyB0byB1c2UgbmN1cnNlcyBvbiB0aGUgVU5JWCBQQywgc2luY2UgbmN1cnNlcyBkb2Vzbid0IHByb3Blcmx5IGhhbmRsZSB0aGUKKyMgR1VJLiBVbmZvcnR1bmF0ZWx5LCB0aGUgdGVybWluZm8gZW50cnkgKGFuZCB0aGUgdGVybWNhcCwgdG9vLCBJIHByZXN1bWUpCisjIHNlZW0gdG8gaGF2ZSBiZWVuIGJ1aWx0IGZyb20gdGhlIG1hbnVhbCBkZXNjcmliaW5nIHRoZSBWVDEwMCBzZXF1ZW5jZXMuCisjIFRoaXMgbWVhbnMgaXQgZG9lc24ndCB3b3JrIGZvciBhIHJlYWwgbGl2ZSBVTklYIFBDLgorIworIyBGT05UUzogVGhlIFVOSVggUEMgYWxzbyBoYXMgYSBzdHJhbmdlIGludGVycHJldGF0aW9uIG9mICJhbHRlcm5hdGUKKyMgY2hhcmFjdGVyIHNldCIuIFJhdGhlciB0aGFuIHRoZSBWVDEwMCBncmFwaGljcyB5b3UgbWlnaHQgZXhwZWN0LCBpdCBhbGxvd3MKKyMgdXAgdG8gOCBjdXN0b20gZm9udHMgdG8gYmUgbG9hZGVkIGF0IGFueSBnaXZlbiB0aW1lLiBUaGlzIG1lYW5zIHRoYXQKKyMgcHJvZ3JhbXMgZXhwZWN0aW5nIFZUMTAwIGdyYXBoaWNzIHdpbGwgdXN1YWxseSBiZSBkaXNhcHBvaW50ZWQuIEZvciB0aGlzCisjIHJlYXNvbiBJIGhhdmUgZGlzYWJsZWQgdGhlIHNtYWNzL3JtYWNzIHNlcXVlbmNlcywgYnV0IHRoZXkgY291bGQgZWFzaWx5IGJlCisjIHJlLWVuYWJsZWQuIEhlcmUgYXJlIHRoZSByZWxldmFudCBjb250cm9sIHNlcXVlbmNlcyAoZnJvbSB0aGUgRVNDQVBFKDcpCisjIG1hbnBhZ2UpLCBzaG91bGQgeW91IHdpc2ggdG8gZG8gc286CisjCisjIFNHUjEwIC0gU2VsZWN0IGZvbnQgMCAtIEVTQyBbIDEwIG0gb3IgU08KKyMgU0dSMTEgLSBTZWxlY3QgZm9udCAxIC0gRVNDIFsgMTEgbSBvciBTSQorIyBTR1IxMiAtIFNlbGVjdCBmb250IDIgLSBFU0MgWyAxMiBtCisjIC4uLiAoZXRjLikKKyMgU0dSMTcgLSBTZWxlY3QgZm9udCA3IC0gRVNDIFsgMTcgbQorIworIyBHcmFwaGljcyBmb3IgbGluZSBkcmF3aW5nIGFyZSBub3QgcmVsaWFibHkgZm91bmQgYXQgKmFueSogY2hhcmFjdGVyCisjIGxvY2F0aW9uIGJlY2F1c2UgdGhlIFVOSVggUEMgaGFzIGR5bmFtaWNhbGx5IHJlbG9hZGFibGUgZm9udHMuIEkgdXNlIGZvbnQKKyMgMCBmb3IgcmVndWxhciB0ZXh0IGFuZCBmb250IDEgZm9yIGl0YWxpY3MsIGJ1dCB0aGlzIGlzIGJ5IG5vIG1lYW5zCisjIHVuaXZlcnNhbC4gU28gQVNDSUkgbGluZSBkcmF3aW5nIGlzIGluIG9yZGVyIGlmIHNtYWNzL3JtYWNzIGFyZSBlbmFibGVkLgorIworIyBNSVNDOiBUaGUgY3Vyc29yIHZpc2libGUvY3Vyc29yIGludmlzaWJsZSBzZXF1ZW5jZXMgd2VyZSBzd2FwcGVkIGluIHRoZQorIyBkaXN0cmlidXRlZCB0ZXJtaW5mby4KKyMKKyMgVG8gYW1lbGlvcmF0ZSB0aGVzZSBwcm9ibGVtcyAoYW5kIGZpeCBhIGZldyBoaWdobGlnaHRpbmcgYnVncykgSSByZXdyb3RlCisjIHRoZSBVTklYIFBDIHRlcm1pbmZvIGVudHJ5LiBUaGUgbW9kaWZpZWQgdmVyc2lvbiB3b3JrcyBncmVhdCB3aXRoIEx5bngsCisjIEVtYWNzLCBhbmQgWEVtYWNzIHJ1bm5pbmcgb24gbXkgTGludXggUEMgYW5kIGRpc3BsYXlpbmcgb24gdGhlIFVOSVggUEMKKyMgYXR0YWNoZWQgYnkgc2VyaWFsIGNhYmxlLiBJbiBFbWFjcywgZXZlbiB0aGUgVW5kbyBrZXkgd29ya3MsIGFuZCBtYW55CisjIGFwcGxpY2F0aW9ucyBjYW4gbm93IHVzZSB0aGUgRjEtRjgga2V5cy4KKyMKKyMgZXNyJ3Mgbm90ZXM6CisjCVRlcm1pbmZvIGVudHJ5IGZvciB0aGUgQVQmVCBVbml4IFBDIDczMDAKKyMJZnJvbSBlc2NhcGUoNykgaW4gVW5peCBQQyA3MzAwIE1hbnVhbC4KKyMJU29tZXdoYXQgc2ltaWxhciB0byBhIHZ0MTAwLWFtIChidXQgZGlmZmVyZW50IGVub3VnaAorIwl0byByZWRvIHRoaXMgZnJvbSBzY3JhdGNoLikKKyMKKyMJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIwkqCisjCSogICAgICAgICAgIEZPTlQgTE9BRElORyBQUk9HUkFNIEZPUiBUSEUgVU5JWCBQQworIwkqCisjCSogICAgIFRoaXMgcm91dGluZSBsb2FkcyBhIGZvbnQgZGVmaW5lZCBpbiB0aGUgZmlsZSBBTFRGT05UCisjCSogICAgIGludG8gZm9udCBtZW1vcnkgc2xvdCAjMS4gIE9uY2UgdGhlIGZvbnQgaGFzIGJlZW4gbG9hZGVkLAorIwkqICAgICBpdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgc2V0LgorIwkqCisjCSogICAgIFRoZSBjYWxsIHRvIGlvY3RsIHdpdGggdGhlIGFyZ3VtZW50IFdJT0NMRk9OVCBpcyB0aGUga2V5CisjCSogICAgIHRvIHRoaXMgcm91dGluZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd2luZG93KDcpIGluCisjCSogICAgIHRoZSBQQyA3MzAwIGRvY3VtZW50YXRpb24uCisjCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyMJI2luY2x1ZGUgPHN0cmluZy5oPgkJLyogbmVlZGVkIGZvciBzdHJjcHkgY2FsbCAqLworIwkjaW5jbHVkZSA8c3lzL3dpbmRvdy5oPiAgICAgICAgIC8qIG5lZWRlZCBmb3IgaW9jdGwgY2FsbCAqLworIwkjZGVmaW5lIEZOU0laRQk2MAkJLyogZm9udCBuYW1lIHNpemUgKi8KKyMJI2RlZmluZSBBTFRGT05UICAiL3Vzci9saWIvd2ZvbnQvc3BlY2lhbC44LmZ0IiAgLyogZm9udCBmaWxlICovCisjCS8qCisjCSogICAgIFRoZSBmaWxlIC91c3IvbGliL3dmb250L3NwZWNpYWwuOC5mdCBjb21lcyB3aXRoIHRoZQorIwkqICAgICBzdGFuZGFyZCBQQyBzb2Z0d2FyZS4gIEl0IGRlZmluZXMgYSBncmFwaGljcyBjaGFyYWN0ZXIgc2V0CisjCSogICAgIHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgVGVsZXR5cGUgNTQyNSB0ZXJtaW5hbC4gIFRvIHZpZXcKKyMJKiAgICAgdGhpcyBvciBvdGhlciBmb250cyBpbiAvdXNyL2xpYi93Zm9udCwgdXNlIHRoZSBjb21tYW5kCisjCSogICAgIGNmb250IDxmaWxlbmFtZT4uICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiBmb250cyBzZWUKKyMJKiAgICAgY2ZvbnQoMSkgaW4gdGhlIFBDIDczMDAgZG9jdW1lbnRhdGlvbi4KKyMJKi8KKyMKKyMJc3RydWN0IGFsdGZkYXRhIAkvKiBzdHJ1Y3R1cmUgZm9yIGFsdCBmb250IGRhdGEgKi8KKyMJeworIwlzaG9ydAlhbHRmX3Nsb3Q7CQkvKiBtZW1vcnkgc2xvdCBudW1iZXIgKi8KKyMJY2hhcglhbHRmX25hbWVbRk5TSVpFXTsJLyogZm9udCBuYW1lIChmaWxlIG5hbWUpICovCisjCX07CisjCWxkZm9udCgpCisjCXsKKyMJCWludCB3ZDsJCS8qIHdpbmRvdyBpbiB3aGljaCBhbHRmb250IHdpbGwgYmUgKi8KKyMJCXN0cnVjdCBhbHRmZGF0YSBhbHRmOworIwkJYWx0Zi5hbHRmX3Nsb3Q9MTsKKyMJCXN0cmNweShhbHRmLmFsdGZfbmFtZSxBTFRGT05UKTsKKyMJCWZvciAod2QgPTE7IHdkIDwgMTI7IHdkKyspIHsKKyMJCSAgICAgaW9jdGwod2QsIFdJT0NMRk9OVCwmYWx0Zik7CisjCSAgICAgICAgfQorIwl9CisjCisjIChhdHQ3MzAwOiBhZGRlZCA8Y2l2aXM+Lzxjbm9ybT4vPGljaDE+LzxpbnZpcz4gZnJvbSB0aGUgQlNESSBlbnRyeSwKKyMgdGhleSdyZSBjb25maXJtZWQgYnkgdGhlIG1hbiBwYWdlIGZvciB0aGUgU3lzdGVtIFYgZGlzcGxheS0tLWVzcikKKyMKK2F0dDczMDB8dW5peHBjfHBjNzMwMHwzYjF8czR8QVQmVCBVTklYIFBDIE1vZGVsIDczMDAsCisJYW0sIHhvbiwKKwljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKKwliZWw9XkcsIGJsaW5rPVxFWzltLCBib2xkPVxFWzFtLCBjYnQ9XEVeSSwgY2l2aXM9XEVbPTFDLAorCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPTBDLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwKKwljdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsCisJY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsCisJY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKKwllZD1cRVswSiwgZWw9XEVbMEssIGhvbWU9XEVbSCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsCisJaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOW0sIGlzMT1cMDE3XEVbPTF3LCBrQkVHPVxFTkIsCisJa0NBTj1cRU9XLCBrQ1BZPVxFTkQsIGtDUlQ9XEVPTiwga0RDPVxFTkYsIGtETD1cRU5FLAorCWtFTkQ9XEVOTiwga0VPTD1cRU9BLCBrRk5EPVxFT1gsIGtITFA9XEVPTSwga0hPTT1cRU5NLAorCWtJQz1cRU5KLCBrTEZUPVxFTkssIGtNT1Y9XEVOQywga05YVD1cRU5ILCBrT1BUPVxFT1IsCisJa1BSVj1cRU5HLCBrUkRPPVxFT1QsIGtSSVQ9XEVOTCwga1JQTD1cRU9ZLCBrU0FWPVxFT08sCisJa1VORD1cRU9TLCBrYmVnPVxFTmIsIGticz1eSCwga2Nhbj1cRU93LCBrY2J0PVxFW1osCisJa2Nsbz1cRU9WLCBrY2xyPVxFW0osIGtjbWQ9XEVPdSwga2NweT1cRU5kLCBrY3J0PVxFT24sCisJa2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVOZiwKKwlrZWQ9XEVbSiwga2VsPVxFT2EsIGtlbmQ9XEUwLCBrZXh0PVxFT2ssIGtmMT1cRU9jLCBrZjI9XEVPZCwKKwlrZjM9XEVPZSwga2Y0PVxFT2YsIGtmNT1cRU9nLCBrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLAorCWtmbmQ9XEVPeCwga2hscD1cRU9tLCBraG9tZT1cRVtILCBraWNoMT1cRU5qLCBraW5kPVxFW0IsCisJa21vdj1cRU5jLCBrbXJrPVxFTmksIGtucD1cRVtVLCBrbnh0PVxFTmgsIGtvcG49XEVPdiwKKwlrb3B0PVxFT3IsIGtwcD1cRVtWLCBrcHJ0PVxFT3osIGtwcnY9XEVOZywga3Jkbz1cRU90LAorCWtyZWY9XEVPYiwga3Jmcj1cRU5hLCBrcmk9XEVbQSwga3JwbD1cRU95LCBrcnN0PVxFT0IsCisJa3Nhdj1cRU9vLCBrc2x0PVxFTkksIGt1bmQ9XEVPcywgbmVsPVxFRSwgcmV2PVxFWzdtLCByaT1cRU0sCisJcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbMDsxMG0sIHNtc289XEVbN20sCisJc211bD1cRVs0bSwKKwogIyMjIyBDb252ZXJnZW50IFRlY2hub2xvZ3kKICMKICMgQnVycm91Z2hzIGJvdWdodCBDb252ZXJnZW50IHNob3J0bHkgYmVmb3JlIGl0IG1lcmdlZCB3aXRoIFVuaXZhYy4KQEAgLTE5NDcyLDYgKzIwODM0LDU0IEBACiBtYXNzY29tcDJ8bWFzc2NvbXAgbGFyZ2Ugc2NyZWVuIHZlcnNpb24gMiwKIAljb2xzIzY0LCBsaW5lcyMyMSwgdXNlPW1hc3Njb21wLAogCisjIyMjIE9TRiBVbml4CisjCisKKyMgT1NGLzEgMS4xIFNuYXBzaG90IDIKK3BtY29uc3xwbWNvbnNvbGV8UE1BWCBjb25zb2xlLAorCWFtLAorCWNvbHMjMTI4LCBsaW5lcyM1NywKKwliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3V1MT1eSywgaHQ9XkksCisJaW5kPV5KLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAorCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLAorCisjIyMjIE90aGVyIGNvbnNvbGVzCisjIFRoZSBmb2xsb3dpbmcgaXMgYSB2ZXJzaW9uIG9mIHRoZSBpYm0tcGMgZW50cnkgZGlzdHJpYnV0ZWQgd2l0aCBQQy9JWCwKKyMgKEludGVyYWN0aXZlIFN5c3RlbXMnIFN5c3RlbSAzIGZvciB0aGUgQmlnIEJsdWUpLCBtb2RpZmllZCBieSBSaWNoYXJkCisjIE1jSW50b3NoIGF0IFVDQi9DU00uICBUaGUgOnB0OiBhbmQgOnVjOiBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvcmlnaW5hbCwKKyMgKHRoZSBmb3JtZXIgaXMgdW50cnVlLCBhbmQgdGhlIGxhdHRlciBmYWlsZWQgdW5kZXIgVUNCL21hbik7IHN0YW5kb3V0IGFuZAorIyB1bmRlcmxpbmUgbW9kZXMgaGF2ZSBiZWVuIGFkZGVkLiAgTm90ZTogdGhpcyBlbnRyeSBkZXNjcmliZXMgdGhlICJuYXRpdmUiCisjIGNhcGFiaWxpdGllcyBvZiB0aGUgUEMgbW9ub2Nocm9tZSBkaXNwbGF5LCB3aXRob3V0IEFOWSBlbXVsYXRpb247IG1vc3QKKyMgY29tbXVuaWNhdGlvbnMgcGFja2FnZXMgKGJ1dCBOT1QgUEMvSVggY29ubmVjdCkgZG8gc29tZSBraW5kIG9mIGVtdWxhdGlvbi4KK3BjaXh8UEMvSVggY29uc29sZSwKKwlhbSwgYncsIGVvLAorCWNvbHMjODAsIGxpbmVzIzI0LAorCWNsZWFyPVxFYywgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwgZWw9XEVbSywKKwlob21lPVxFW0gsIHJtc289XEVbbSwgcm11bD1cRVttLCBzZ3IwPVxFW20sIHNtc289XEVbN20sCisJc211bD1cRVs0bSwKKworIyAoaWJtcGN4OiB0aGlzIGVudHJ5IHVzZWQgdG8gYmUga25vd24gYXMgaWJteC4KKyMgSXQgZm9ybWVybHkgaW5jbHVkZWQgdGhlIGZvbGxvd2luZyBleHRlbnNpb24gY2FwYWJpbGl0aWVzOgorIwk6R0M9YjpHTD12OkdSPXQ6UlQ9Xko6XAorIwk6R0g9XEVbMTk2ZzpHVj1cRVsxNzlnOlwKKyMJOkdVPVxFWzE5M2c6R0Q9XEVbMTk0ZzpcCisjCTpHMT1cRVsxOTFnOkcyPVxFWzIxOGc6RzM9XEVbMTkyZzpHND1cRVsyMTdnOlwKKyMJOkNXPVxFW0U6TlU9XEVbRjpSRj1cRVtHOlJDPVxFW0g6XAorIwk6V0w9XEVbSzpXUj1cRVtMOkNMPVxFW006Q1I9XEVbTjpcCisjIEkgcmVuYW1lZCBHUy9HRS9XTC9XUi9DTC9DUi9QVS9QRC9ITS9FTjsgYWxzbywgcmVtb3ZlZCBhIGR1cGxpY2F0ZQorIyAiOmtoPVxFW1k6Ii4gIEFkZGVkIElCTS1QQyBmb3JtcyBjaGFyYWN0ZXJzIGFuZCBoaWdobGlnaHRzLCB0aGV5IG1hdGNoCisjIHdoYXQgd2FzIHRoZXJlIGJlZm9yZS4gLS0gZXNyKQoraWJtcGN4fHhlbml4fGlibXh8SUJNIFBDIHhlbml4IGNvbnNvbGUgZGlzcGxheSwKKwlPVGJzLCBhbSwgbXNnciwKKwljb2xzIzgwLCBsaW5lcyMyNSwKKwljbGVhcj1eTCwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCisJY3VwPVxFWyVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNLAorCWVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaWNoMT1cRVtALCBpbDE9XEVbTCwga2JzPV5ILAorCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlbmQ9XEVbZCwKKwlrZjE9XEVbSywga2YyPVxFW0wsIGtmMz1cRVtNLCBrZjQ9XEVbTiwga2hvbWU9XEVbWSwga25wPVxFW2UsCisJa3BwPVxFW1osIHVzZT1rbG9uZSthY3MsIHVzZT1rbG9uZStzZ3I4LAorCiAjIyMjIyMjIyBPVEhFUiBPQlNPTEVURSBUWVBFUwogIwogIyBUaGVzZSB0ZXJtaW5hbHMgYXJlICpsb25nKiBkZWFkIC0tIHRoZXNlIGVudHJpZXMgYXJlIHJldGFpbmVkIGZvcgpAQCAtMTk2NzUsNyArMjEwODUsNyBAQAogCWNvbHMjODAsIGxpbmVzIzI0LAogCWNsZWFyPV5MLCBjdWIxPV5ILCBjdWYxPVxFWCwKIAljdXA9XEUjJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFWSwKLQlkY2gxPS4xKlxFJ0QsIGRsMT1cRSZEJDwyKi8+LCBlZD1cRSdQLCBlbD1cRSdMLCBpY2gxPSwKKwlkY2gxPVxFJ0QkPC4xKj4sIGRsMT1cRSZEJDwyKi8+LCBlZD1cRSdQLCBlbD1cRSdMLCBpY2gxPSwKIAlpbDE9XEUmSSQ8MiovPiwgaXA9JDwuMSovPiwga2N1YjE9XEVXLCBrY3VkMT1cRVosCiAJa2N1ZjE9XEVYLCBrY3V1MT1cRVksIHBhZD1cMTc3LCBybWN1cD1cRSJOLCBybWlyPVxFJ0osCiAJcm1zbz1cRSJJLCBybXVsPVxFIlUsIHNtY3VwPVxFIk4sIHNtaXI9XEUnSSwgc21zbz1cRSJJLApAQCAtMTk3NjYsOSArMjExNzYsOSBAQAogCXNncjA9XEVYLCBzbWFjcz1cRUYsIHNtc289XEVULAogZW52MjMwfGVudmlzaW9uMjMwfGVudmlzaW9uIDIzMCBncmFwaGljcyB0ZXJtaW5hbCwKIAl4ZW5sQCwKLQltYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXNncj1cRVslPyVwMSV0OzElOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSQ8Mj4sCi0JdXNlPXZ0MTAwLAorCWVuYWNzQCwgbWMwPVxFWzBpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgcm1hY3NALAorCXNncj1cRVswJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElO20kPDI+LAorCXNncjA9XEVbMG0kPDI+LCBzbWFjc0AsIHVzZT12dDEwMCwKICMgVGhlc2UgZXhlY3Vwb3J0cyB3ZXJlIGltcGFjdC1wcmludGVyIHR0eXMgd2l0aCBhIDMwLSBvciBtYXliZSAxNS1jcHMgYWNvdXN0aWMKICMgY291cGxlciBhdHRhY2hlZCwgdGhlIHdob2xlIHJpZyBmaXR0aW5nIGluIGEgc3VpdGNhc2UgYW5kIG1vcmUgb3IgbGVzcwogIyBwb3J0YWJsZS4gIEhvdCBzdHVmZiBmb3IgYy4xOTc3IDotKSAtLSBlc3IKQEAgLTE5ODIzLDcgKzIxMjMzLDcgQEAKIAlybWFjcz1cRUheQywgcm1hbT1cRWQuLCBybWN1cD0sIHJtaXI9XEVyLCBybWxuPVxFQTExLAogCXJteG9uPVxFYzIwLCByczE9XEV+IVxFfjQkPDE1MD4sIHJzMj1cRWVGJDwxNTA+LAogCXJzMz1cRXdHXEVlKCQ8MTUwPiwKLQlzZ3I9JT8lcDgldFxFKSVlXEUoJTslPyVwOSV0XEVIXDAwMiVlXEVIXDAwMyU7XEVHJXs0OH0lPyVwMiVwNiV8JXQlezh9JXwlOyU/JXAxJXAzJXwlcDYlfCV0JXs0fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwMSVwNSV8JXQlezY0fSV8JTslPyVwNyV0JXsxfSV8JTslYywKKwlzZ3I9JT8lcDgldFxFKSVlXEUoJTslPyVwOSV0XEVIXDAwMiVlXEVIXDAwMyU7XEVHJXs0OH0lPyVwMiV0JXs4fSV8JTslPyVwMSVwMyV8JXQlezR9JXwlOyU/JXA0JXQlezJ9JXwlOyU/JXAxJXA1JXwldCV7NjR9JXwlOyU/JXA3JXQlezF9JXwlOyVjLAogCXNncjA9XEUoXEVIXDAwM1xFRzBcRWNELCBzbWFjcz1cRUheQiwgc21hbT1cRWQvLAogCXNtY3VwPVxFenomXEVbQVwxNzdcRXp6J1xFW0JcMTc3XEV6eihcRVtEXDE3N1xFenopXEVbQ1wxNzdcRXp6PFxFW1FcMTc3LAogCXNtaXI9XEVxLCBzbWxuPVxFQTEwLCBzbXhvbj1cRWMyMSwgdGJjPVxFMCwgdHNsPVxFeigsCkBAIC0xOTg2Miw3ICsyMTI3Miw3IEBACiB2MzIyMHxMQU5QQVIgVmlzaW9uIElJIG1vZGVsIDMyMjAvMzIyMS8zMjIyLAogCU9UYnMsIGFtLCBtaXIsIHhlbmwsCiAJY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbSFxFW0osIGN1YjE9XkgsIGN1ZjE9XEVbQywKKwljbGVhcj1cRVtIXEVbSiwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCiAJY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwgZGwxPVxFW00sCiAJZWQ9XEVbSiwgZWw9XEVbSywgaHQ9XkksIGlsMT1cRVtMLAogCWlzMj1cRT5cRVs/M2xcRVs/N2hcRVs/OGhcRVtwLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLApAQCAtMjA0MzAsNyArMjE4NDAsNyBAQAogIyBhc3NpZ25lZCBpbiBTeXN0ZW0gViB0ZXJtaW5mby4gIFRoZXJlIGFyZSBzb21lIHZhcmlhbnQgZXh0ZW5zaW9uIHNldHMgb3V0CiAjIHRoZXJlLiAgV2UgdHJ5IHRvIGRlc2NyaWJlIHRoZW0gaGVyZS4KICMKLSMgWEVOSVggZXh0ZW5zaW9uczoKKyMjIyMgWEVOSVggZXh0ZW5zaW9uczoKICMKICMgVGhlIFhFTklYIGV4dGVuc2lvbnMgaW5jbHVkZSBhIHNldCBvZiBmdW5jdGlvbi1rZXkgY2FwYWJpbGl0aWVzIGFzIGZvbGxvd3M6CiAjCkBAIC0yMDQ5NSw3ICsyMTkwNSw3IEBACiAjIFdoZW4gdHJhbnNsYXRpbmcgYSB0ZXJtY2FwIGZpbGUsIG5jdXJzZXMgdGljIHdpbGwgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LgogIyBUaGUgZG91YmxlIGZvcm1zIGNoYXJhY3RlcnMgZG9uJ3QgZml0IHRoZSBTVnI0IHRlcm1pbmZvIG1vZGVsLgogIwotIyBBVCZUIEV4dGVuc2lvbnM6CisjIyMjIEFUJlQgRXh0ZW5zaW9uczoKICMKICMgVGhlIG9sZCBBVCZUIDU0MTAsIDU0MjAsIDU0MjUsIHBjNjMwMHBsdXMsIDYxMCwgYW5kIHM0IGVudHJpZXMgdXNlZCBhIHNldCBvZgogIyBub25zdGFuZGFyZCBjYXBhYmlsaXRpZXMuICBJdHMgc2lnbmF0dXJlIGlzIHRoZSBLTSBjYXBhYmlsaXR5LCB1c2VkIHRvIG5hbWUKQEAgLTIwNTA2LDcgKzIxOTE2LDcgQEAKICMgRkw9OkxPOiAoZW5hYmxlIHNvZnQgbGFiZWxzKSwgRkU9OkxGOiAoZGlzYWJsZSBzb2Z0IGxhYmVscyksIENJPTp2aTogKG1ha2UKICMgY3Vyc29yIGludmlzaWJsZSksIGFuZCBDVj06dmU6IChtYWtlIGN1cnNvciBub3JtYWwpLgogIwotIyBIUCBFeHRlbnNpb25zCisjIyMjIEhQIEV4dGVuc2lvbnMKICMKICMgVGhlIEhQIGxpYnJhcnkgKGFzIG9mIG1pZC0xOTk1LCB0aGVpciB0ZXJtLmggZmlsZSB2ZXJzaW9uIDcwLjEpIGFwcGVhcnMgdG8KICMgaGF2ZSB0aGUgU3lzdGVtIFYgY2FwYWJpbGl0aWVzIHVwIHRvIFNWcjEgbGV2ZWwuICBBZnRlciB0aGF0LCBpdCBzdXBwb3J0cwpAQCAtMjA1MTUsNyArMjE5MjUsNyBAQAogIyBsYWJlbF9vZmYsIGFuZCBrZXlfZjExLi5rZXlfZjYzIGNhcGFiaWxpdGllcyBsaWtlIFNWcjQncy4gIFRoaXMgbWFrZXMgdGhlCiAjIEhQIGJpbmFyeSBmb3JtYXQgaW5jb21wYXRpYmxlIHdpdGggU1ZyNCdzLgogIwotIyBJQk0gRXh0ZW5zaW9ucworIyMjIyBJQk0gRXh0ZW5zaW9ucwogIwogIyBUaGVyZSBpcyBhIHNldCBvZiBub25zdGFuZGFyZCB0ZXJtaW5mb3MgdXNlZCBieSBJQk0ncyBBSVggb3BlcmF0aW5nIHN5c3RlbS4KICMgVGhlIEFJWCB0ZXJtaW5mbyBsaWJyYXJ5IGRpdmVyZ2VkIGZyb20gU1ZyMSB0ZXJtaW5mbywgYW5kIHJlcGxhY2VzIGFsbApAQCAtMjA1NDMsNyArMjE5NTMsNyBAQAogIyBUaGUgYm94MiBjaGFyYWN0ZXJzIGFyZSB0aGUgZG91YmxlLWxpbmUgdmVyc2lvbnMgb2YgdGhlc2UgZm9ybXMgZ3JhcGhpY3MuCiAjIFRoZSBBSVggYmluYXJ5IHRlcm1pbmZvIGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBTVnI0J3MuCiAjCi0jIElyaXMgY29uc29sZSBleHRlbnNpb25zOgorIyMjIyBJcmlzIGNvbnNvbGUgZXh0ZW5zaW9uczoKICMKICMgSFMgaXMgaGFsZi1pbnRlbnNpdHkgc3RhcnQ7IEhFIGlzIGhhbGYtaW50ZW5zaXR5IGVuZAogIyBDVCBpcyBjb2xvciB0ZXJtaW5hbCB0eXBlIChmb3IgQ3Vyc2VzICYgcm9ndWUpCkBAIC0yMDU1Miw3ICsyMTk2Miw3IEBACiAjCiAjIFRoZSBuY3Vyc2VzIHRpYyB1dGlsaXR5IHJlY29nbml6ZXMgSFMgYXMgYW4gYWxpYXMgZm9yIG1oIDxkaW0+LgogIwotIyBUQyBFeHRlbnNpb25zOgorIyMjIyBUQyBFeHRlbnNpb25zOgogIwogIyBUaGVyZSBpcyBhIHNldCBvZiBleHRlbmRlZCB0ZXJtY2FwcyBhc3NvY2lhdGVkIHdpdGggc29tZXRoaW5nCiAjIGNhbGxlZCB0aGUgIlRlcm1pbmFsIENvbnRyb2wiIG9yIFRDIHBhY2thZ2UgY3JlYXRlZCBieSBNYWluU3RyZWFtIFN5c3RlbXMsCkBAIC0yMDU2MCwxMSArMjE5NzAsMTIzIEBACiAjIENGIGZvciBjaXZpcyBhbmQgQ08gZm9yIGN2dmlzLiAgRmluYWxseSwgdGhleSBkZWZpbmUgYSBib29sZWFuIDpjdDoKICMgdGhhdCBmbGFncyBjb2xvciB0ZXJtaW5hbHMuCiAjCisjIyMjIyMjIyBOQ1VSU0VTIFVTRVItREVGSU5BQkxFIENBUEFCSUxJVElFUworIworIyBFeHRlbnNpb25zIGFkZGVkIGFmdGVyIG5jdXJzZXMgNS4wIGdlbmVyYWxseSB1c2UgdGhlICIteCIgb3B0aW9uIG9mIHRpYyBhbmQKKyMgaW5mb2NtcCB0byBtYW5pcHVsYXRlIHVzZXItZGVmaW5hYmxlIGNhcGFiaWxpdGllcy4gIFRob3NlIHRoYXQgYXJlIGludGVuZGVkCisjIGZvciB1c2UgaW4gZWl0aGVyIHRlcm1pbmZvIG9yIHRlcm1jYXAgdXNlIDItY2hhcmFjdGVyIG5hbWVzLiAgRXh0ZW5kZWQKKyMgZnVuY3Rpb24ga2V5cyBkbyBub3QgdXNlIDItY2hhcmFjdGVyIG5hbWVzLCBhbmQgYXJlIGF2YWlsYWJsZSBvbmx5IHdpdGgKKyMgdGVybWluZm8uCisjCisjIEFzIG9mIG1pZC0yMDEyLCBubyBvdGhlciB0ZXJtaW5mby90ZXJtY2FwIGltcGxlbWVudGF0aW9uIHRoYW4gbmN1cnNlcworIyBzdXBwb3J0cyB0aGlzIGV4dGVuc2lvbjsgdGVybWNhcCBsaWJyYXJpZXMgY2FuIGFzIG5vdGVkIGFib3ZlIG1ha2UgbGltaXRlZAorIyB1c2Ugb2YgdGhlIGZlYXR1cmUuCisjCisjIG5jdXJzZXMgbWFrZXMgZXhwbGljaXQgY2hlY2tzIGZvciBhIGZldyB1c2VyLWRlZmluYWJsZSBjYXBhYmlsaXRpZXM6ICBBWCwgVTgsCisjIFhNLgorIworIyMjIyBTQ1JFRU4gRXh0ZW5zaW9uczoKKyMKKyMgVGhlIHNjcmVlbiBwcm9ncmFtIHVzZXMgdGhlIHRlcm1jYXAgaW50ZXJmYWNlLiAgSXQgcmVjb2duaXplcyBhIGZldyB1c2VmdWwKKyMgbm9uc3RhbmRhcmQgY2FwYWJpbGl0aWVzLiAgVGhvc2UgYXJlIHVzZWQgaW4gdGhpcyBmaWxlLgorIworIyAgICAgICBBWCAgIChib29sKSAgRG9lcyAgdW5kZXJzdGFuZCAgQU5TSSAgc2V0ICBkZWZhdWx0IGZnL2JnIGNvbG9yIChcRVszOW0gLworIyAgICAgICAgICAgICAgICAgICAgXEVbNDltKS4KKyMgICAgICAgRzAgICAoYm9vbCkgIFRlcm1pbmFsIGNhbiBkZWFsIHdpdGggSVNPIDIwMjIgIGZvbnQgIHNlbGVjdGlvbiBzZXF1ZW5jZXMuCisjICAgICAgIEUwICAgKHN0cikgICBTd2l0Y2ggY2hhcnNldCAnRzAnIGJhY2sgdG8gc3RhbmRhcmQgY2hhcnNldC4KKyMgICAgICAgUzAgICAoc3RyKSAgIFN3aXRjaCBjaGFyc2V0ICdHMCcgdG8gdGhlIHNwZWNpZmllZCBjaGFyc2V0LgorIyAgICAgICBYVCAgIChib29sKSAgVGVybWluYWwgdW5kZXJzdGFuZHMgc3BlY2lhbCB4dGVybSBzZXF1ZW5jZXMgIChPU0MsICBtb3VzZQorIyAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmcpLgorIworIyBBWCBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQgaXMgaW50ZXJwcmV0ZWQgYnkgbmN1cnNlcyB0byBzYXkgdGhhdAorIyBTR1IgMzkvNDkgcmVzZXQgdGhlIHRlcm1pbmFsJ3MgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgdG8gdGhlaXIKKyMgImRlZmF1bHQiLgorIworIyBYVCBpcyBoYXJkZXIsIHNpbmNlIHNjcmVlbidzIG1hbnBhZ2UgZG9lcyBub3QgZ2l2ZSBtb3JlIGRldGFpbHMuICBGb3IgdGhhdCwKKyMgd2UgbXVzdCByZWFkIHNjcmVlbidzIHNvdXJjZS1jb2RlLiAgV2hlbiBYVCBpcyBzZXQsIHNjcmVlbiBhc3N1bWVzCisjCisjIGEpIE9TQyAxIHNldHMgdGhlIHRpdGxlIHN0cmluZywgZS5nLiwgZm9yIHRoZSBpY29uLiAgUmVjZW50IHZlcnNpb25zIG9mCisjICAgIHNjcmVlbiBtYXkgYWxzbyBzZXQgdGhlIHRlcm1pbmFsJ3MgbmFtZSwgd2hpY2ggaXMgKGZvciB4dGVybSkgZGlzdGluY3QKKyMgICAgZnJvbSB0aGUgaWNvbiBuYW1lLgorIyBiKSBPU0MgMjAgc2V0cyB0aGUgYmFja2dyb3VuZCBwaXhtYXAuICBUaGlzIGlzIGFuIHJ4dnQgZmVhdHVyZS4KKyMgYykgT1NDIDM5IGFuZCBPU0MgNDkgc2V0IHRoZSBkZWZhdWx0IGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvcnMuICBBZ2FpbgorIyAgICB0aGlzIGlzIGFuIHJ4dnQgZmVhdHVyZS4KKyMgZCkgY2VydGFpbiBtb2RlIHNldHRpbmdzIGVuYWJsZSB0aGUgbW91c2U6IDksIDEwMDAsIDEwMDEsIDEwMDIsIDEwMDMuCisjICAgIFRoZXNlIGFyZSBmcm9tIHh0ZXJtLCBhbHRob3VnaCB4dGVybSBhY2NlcHRzIG1vdXNlIGNvZGVzIHRoYXQgbWF5IG5vdCBiZQorIyAgICByZWNvZ25pemVkIGJ5IHNjcmVlbiwgZS5nLiwgMTAwNSwgMTAwNi4KKyMgZSkgY29sb3JzIGJleW9uZCAwLi43IGFyZSBpbXBsZW1lbnRlZCBieSB4dGVybSdzIGFpeHRlcm0tbGlrZSAxNi1jb2xvcgorIyAgICBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGJlY2F1c2Ugc2NyZWVuIHVzZXMgb25seSB0ZXJtY2FwLCB0aGUgdmFsdWVzIHJldHVybmVkCisjICAgIGJ5IEFmL0FiIGFyZSBub3QgdXNhYmxlIGJlY2F1c2UgdGhleSByZWx5IG9uIGV4cHJlc3Npb25zIHRoYXQgdGVybWNhcAorIyAgICBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlcmVmb3JlLCBzY3JlZW4gdXNlcyBhIGhhcmRjb2RlZCBzdHJpbmcgdG8gd29yaworIyAgICBhcm91bmQgdGhlIGxpbWl0YXRpb24uCisjIGYpIGFsbCBlbnRyaWVzIG5hbWVkICIqeHRlcm0qIiBvciAiKnJ4dnQqIiBoYXZlIHRoZSBiY2UgZmxhZyBzZXQuCisjCisjIFRoZSBvdGhlciBJU08tMjAyMiBmZWF0dXJlcyBhcmUgcmFyZWx5IHVzZWQsIGJ1dCBwcm92aWRlZCBoZXJlIHRvIG1ha2UKKyMgc2NyZWVuJ3MgdGVybWNhcCBmZWF0dXJlcyBhdmFpbGFibGUuCisjCisjIyMjIFhURVJNIEV4dGVuc2lvbnM6CisjCisjIE1vc3Qgb2YgdGhlIHh0ZXJtIGV4dGVuc2lvbnMgYXJlIGZvciBmdW5jdGlvbi1rZXlzLiAgU2luY2UgcGF0Y2ggIzk0IChpbgorIyAxOTk5KSwgeHRlcm0gaGFzIHN1cHBvcnRlZCBzaGlmdC9jb250cm9sL2FsdC9tZXRhIG1vZGlmaWVycyB3aGljaCBwcm9kdWNlCisjIGFkZGl0aW9uYWwgZnVuY3Rpb24ta2V5IHN0cmluZ3MuICBTb21lIG90aGVyIGRldmVsb3BlcnMgY29waWVkIHRoZSBmZWF0dXJlLAorIyB0aG91Z2ggdGhleSBkaWQgbm90IGZvbGxvdyB4dGVybSdzIGxlYWQgaW4gcGF0Y2ggIzE2NyAoaW4gMjAwMiksIHRvIG1ha2UKKyMgdGhlc2Uga2V5IGRlZmluaXRpb25zIGxlc3MgYW1iaWd1b3VzLgorIworIyBBIGZldyB0ZXJtaW5hbHMgcHJvdmlkZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgKHNlbmRpbmcgZGlzdGluY3Qga2V5cyB3aGVuCisjIGEgbW9kaWZpZXIgaXMgdXNlZCksIGluY2x1ZGluZyByeHZ0LgorIworIyBUaGVzZSBhcmUgdGhlIGV4dGVuZGVkIGtleXMgZGVmaW5lZCBpbiB0aGlzIGZpbGU6CisjCisjIGtEQzMga0RDNCBrREM1IGtEQzYga0RDNyBrRE4ga0ROMyBrRE40IGtETjUga0RONiBrRE43IGtFTkQzIGtFTkQ0IGtFTkQ1IGtFTkQ2CisjIGtFTkQ3IGtIT00zIGtIT000IGtIT001IGtIT002IGtIT003IGtJQzMga0lDNCBrSUM1IGtJQzYga0lDNyBrTEZUMyBrTEZUNAorIyBrTEZUNSBrTEZUNiBrTEZUNyBrTlhUMyBrTlhUNCBrTlhUNSBrTlhUNiBrTlhUNyBrUFJWMyBrUFJWNCBrUFJWNSBrUFJWNiBrUFJWNworIyBrUklUMyBrUklUNCBrUklUNSBrUklUNiBrUklUNyBrVVAga1VQMyBrVVA0IGtVUDUga1VQNiBrVVA3IGthMiBrYjEga2IzIGtjMgorIworIyBIZXJlIGFyZSB0aGUgb3RoZXIgeHRlcm0tcmVsYXRlZCBleHRlbnNpb25zIHdoaWNoIGFyZSB1c2VkIGluIHRoaXMgZmlsZToKKyMKKyMgQ3IgaXMgYSBzdHJpbmcgY2FwYWJpbGl0eSB3aGljaCByZXNldHMgdGhlIGN1cnNvciBjb2xvcgorIyBDcyBpcyBhIHN0cmluZyBjYXBhYmlsaXR5IHdoaWNoIHNldHMgdGhlIGN1cnNvciBjb2xvciB0byBhIGdpdmVuIHZhbHVlLgorIyAgICBUaGUgc2luZ2xlIHN0cmluZyBwYXJhbWV0ZXIgaXMgdGhlIGNvbG9yIG5hbWUvbnVtYmVyLCBhY2NvcmRpbmcgdG8gdGhlCisjICAgIGltcGxlbWVudGF0aW9uLgorIyBNcyBtb2RpZmllcyB0aGUgc2VsZWN0aW9uL2NsaXBib2FyZC4gIEl0cyBwYXJhbWV0ZXJzIGFyZQorIwlwMSA9IHRoZSBzdG9yYWdlIHVuaXQgKGNsaXBib2FyZCwgc2VsZWN0aW9uIG9yIGN1dCBidWZmZXIpCisjCXAyID0gdGhlIGJhc2U2NC1lbmNvZGVkIGNsaXBib2FyZCBjb250ZW50LgorIyBTZSByZXNldHMgdGhlIGN1cnNvciBzdHlsZSB0byB0aGUgdGVybWluYWwgcG93ZXItb24gZGVmYXVsdC4KKyMgU3MgaXMgYSBzdHJpbmcgY2FwYWJpbGl0eSB3aXRoIG9uZSBudW1lcmljIHBhcmFtZXRlci4gIEl0IGlzIHVzZWQgdG8gc2V0IHRoZQorIyAgICBjdXJzb3Igc3R5bGUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBERUNTQ1VTUiBmdW5jdGlvbiB0byBhIGJsb2NrIG9yCisjICAgIHVuZGVybGluZS4KKyMgVFMgaXMgYSBzdHJpbmcgY2FwYWJpbGl0eSB3aGljaCBhY3RzIGxpa2UgInRzbCIsIGJ1dCB1c2VzIG5vIHBhcmFtZXRlciBhbmQKKyMgICAgZ29lcyB0byB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSAic3RhdHVzIGxpbmUiLgorIyBYTSBpcyBhIHN0cmluZyBjYXBhYmlsaXR5IHdoaWNoIG92ZXJyaWRlcyBuY3Vyc2VzJ3MgYnVpbHQtaW4gc3RyaW5nIHdoaWNoCisjICAgIGVuYWJsZXMvZGlzYWJsZXMgeHRlcm0gbW91c2UgbW9kZS4KKyMgeG0gc2hvd3MgdGhlIGZvcm1hdCBvZiB0aGUgbW91c2UgcmVzcG9uc2VzLiAgUGFyYW1ldGVycyBhcmUgKGZyb20gemVybyk6CisjCXAxID0geS1vcmRpbmF0ZQorIwlwMiA9IHgtb3JkaW5hdGUKKyMJcDMgPSBidXR0b24KKyMJcDQgPSBzdGF0ZSwgZS5nLiwgcHJlc3NlZCBvciByZWxlYXNlZAorIwlwNiA9IHktb3JkaW5hdGUgc3RhcnRpbmcgcmVnaW9uCisjCXA3ID0geC1vcmRpbmF0ZSBzdGFydGluZyByZWdpb24KKyMJcDggPSB5LW9yZGluYXRlIGVuZGluZyByZWdpb24KKyMJcDkgPSB4LW9yZGluYXRlIGVuZGluZyByZWdpb24KKyMgT3RoZXIgZXh0ZW5zaW9ucywgdXNlZCBpbiB4bToKKyMJJXUgPSBVVEYtOAorIworIyMjIyBNaXNjZWxsYW5lb3VzIGV4dGVuc2lvbnM6CisjCisjIGdzYm9tL2dyYm9tIGFyZSB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHJlYWwgYm9sZCAobm90IGludGVuc2l0eSBicmlnaHQpIG1vZGUuCisjICAgIFRoaXMgd2FzIGltcGxlbWVudGVkIGZvciB0aGUgSHVyZC4KKyMgRTMgY2xlYXJzIHRoZSB0ZXJtaW5hbCdzIHNjcm9sbGJhY2sgYnVmZmVyLiAgVGhpcyB3YXMgaW1wbGVtZW50ZWQgaW4gdGhlCisjICAgIExpbnV4IDMuMCBrZXJuZWwgYXMgYSBzZWN1cml0eSBmZWF0dXJlLiAgSXQgbWF0Y2hlcyBhIGZlYXR1cmUgd2hpY2ggd2FzCisjICAgIGFkZGVkIGluIHh0ZXJtIHBhdGNoICMxMDcuCisjIFU4IGlzIGEgbnVtZXJpYyBjYXBhYmlsaXR5IHdoaWNoIGRlbm90ZXMgYSB0ZXJtaW5hbCBlbXVsYXRvciB3aGljaCBkb2VzIG5vdAorIyAgICBzdXBwb3J0IFZUMTAwIFNJL1NPIHdoZW4gcHJvY2Vzc2luZyBVVEYtOCBlbmNvZGluZy4gIFNldCB0aGlzIHRvIGEgbm9uemVybworIyAgICB2YWx1ZSB0byBlbmFibGUgaXQuCisjCiAjIyMjIyMjIyBDSEFOR0UgSElTVE9SWQogIwogIyBUaGUgbGFzdCAvZXRjL3Rlcm1jYXAgdmVyc2lvbiBtYWludGFpbmVkIGJ5IEpvaG4gS3VuemUgd2FzIDguMywgZGF0ZWQgOC81Lzk0LgotIyBSZWxlYXNlcyA5IGFuZCB1cCBhcmUgbWFpbnRhaW5lZCBieSBFcmljIFMuIFJheW1vbmQgYXMgcGFydCBvZiB0aGUgbmN1cnNlcwotIyBwcm9qZWN0LgorIyBSZWxlYXNlcyA5IGFuZCAxMCAodXAgdW50aWwgdGhlIHJlbGVhc2Ugb2YgbmN1cnNlcyA0LjIgaW4gMTk5OCkgd2VyZQorIyBtYWludGFpbmVkIGJ5IEVyaWMgUy4gUmF5bW9uZCBhcyBwYXJ0IG9mIHRoZSBuY3Vyc2VzIHByb2plY3QuCiAjCiAjIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24gcHJlc2VudCBpbiBKb2huIEt1bnplJ3MKICMgbGFzdCB2ZXJzaW9uIG9mIHRoZSB0ZXJtY2FwIG1hc3RlciBmaWxlLCBleGNlcHQgYXMgbm90ZWQgaW4gdGhlIGNoYW5nZQpAQCAtMjA2NjQsNyArMjIxODYsNyBAQAogIwkqIFJlcGxhY2VkIEhQIGVudHJpZXMgdXAgdG8gaHBzdWIgd2l0aCBwdXJwb3NlLWJ1aWx0IG9uZXMuCiAjCSogQmxhbmsgcm1pci9zbWlyL3JtZGMvc21kYyBjYXBhYmlsaXRpZXMgcmVtb3ZlZC4KICMJKiBTbWFsbCBmaXhlcyBtZXJnZWQgaW4gZnJvbSBTQ08gZW50cmllcyBmb3IgbHByLCBmb3MsIHR2aTkxMCssIHR2aTkyNC4KLSMgOS40LjggKEZyaSBBcHIgIDcgMDk6MzY6MzQgRURUIDE5OSk6CisjIDkuNC44IChGcmkgQXByICA3IDA5OjM2OjM0IEVEVCAxOTk1KToKICMJKiBSZXBsYWNlZCB0aGUgQW5uIEFyYm9yIGVudHJpZXMgd2l0aCBTQ08ncywgdGhlIGluaXQgc3RyaW5ncyBhcmUKICMJICBtb3JlIGVmZmljaWVudCAoYnV0IHRoZSBlbnRyaWVzIG90aGVyd2lzZSBpZGVudGljYWwpLgogIwkqIEFkZGVkIGRnMjExIGZyb20gU2h1Zm9yZCBhcmNoaXZlLgpAQCAtMjE3NzMsNyArMjMyOTUsNyBAQAogIwkqIGFkZCBzY3JlZW4ucnh2dCAtVEQKICMKICMgMjAwOC0wNC0yOAotIwkqIGFkZCBzY3JlZW4rZmtleXMgKHByb21wdGVkIGJ5IERlYmlhbiAjIDQ3ODA5NCkgLVRECisjCSogYWRkIHNjcmVlbitma2V5cyAocHJvbXB0ZWQgYnkgRGViaWFuICM0NzgwOTQpIC1URAogIwogIyAyMDA4LTA2LTI4CiAjCSogYWRkIHNjcmVlbi5tbHRlcm0gLVRECkBAIC0yMTc5MSwxMyArMjMzMTMsMzkzIEBACiAjCSogYWRkICJhdGVybSIgLVRECiAjCSogYWRkICJsaW51eDIuNi4yNiIgLVRECiAjCi0jIFRoZSBmb2xsb3dpbmcgc2V0cyBlZGl0IG1vZGVzIGZvciBHTlUgRU1BQ1MuCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgZmlsbC1wcmVmaXg6Ilx0IgotIyBmaWxsLWNvbHVtbjo3NQotIyBjb21tZW50LWNvbHVtbjowCi0jIGNvbW1lbnQtc3RhcnQtc2tpcDoiXiMrIgotIyBjb21tZW50LXN0YXJ0OiIjICIKLSMgY29tcGlsZS1jb21tYW5kOiJ0aWMgLWMgdGVybWluZm8ubWFzdGVyIgotIyBFbmQ6CisjIDIwMDgtMTEtMTUKKyMJKiBjaGFuZ2Ugc2V2ZXJhbCBcRVsyZyAoY2xlYXIgdGFiIGF0IGN1cnJlbnQgY29sdW1uKSB0byBcRVszZworIwkgIChjbGVhciBhbGwgdGFicykgdG8gbWF0Y2ggZGVmaW5pdGlvbiBmb3IgdGJjIGNhcGFiaWxpdHkgLVRECisjCisjIDIwMDgtMTEtMjkKKyMJKiBhZGQgZXRlcm0tY29sb3IgLVRECisjCisjIDIwMDktMDEtMTAKKyMJKiBhZGQgc2NyZWVuLkV0ZXJtIC1URAorIworIyAyMDA5LTAzLTI4CisjCSogY29ycmVjdCB0eXBvIGluIHBma2V5IG9mIGFuc2kuc3lzLW9sZAorIwkgIChyZXBvcnQgYnkgS2FsbGUgT2xhdmkgTmllbWl0YWxvKQorIwkqIG1vdmUgZnVuY3Rpb24tIGFuZCBjdXJzb3Ita2V5cyBmcm9tIGVteC1iYXNlIHRvIGFuc2kuc3lzLCBhbmQgY3JlYXRlCisjCSAgYSBwZmtleSBjYXBhYmlsaXR5IHdoaWNoIGhhbmRsZXMgRjEtRjQ4IC1URAorIworIyAyMDA5LTA1LTAyCisjCSogYWRkIHZ3bXRlcm0gZW50cnkgKEJyeWFuIENocmlzdCkKKyMKKyMgMjAwOS0wOS0xOQorIwkqIGNoYW5nZSBuY3YgYW5kIG9wIGNhcGFiaWxpdGllcyBpbiBzdW4tY29sb3IgdG8gbWF0Y2ggU3VuJ3MgZW50cnkgZm9yCisjCSAgdGhpcyAocmVwb3J0IGJ5IExhc3psbyBQZXRlcikKKyMJKiBpbXByb3ZlIGludGVyaXggc21zbyBieSB1c2luZyByZXZlcnNlIHJhdGhlciB0aGFuIGJvbGQgKHJlcG9ydCBieQorIwkgIEtyaXN0b2YgWmVsZWNob3Zza2kpLgorIworIyAyMDA5LTEwLTAzCisjCSogcmVtb3ZlIHVubmVjZXNzYXJ5IGtjYW4gYXNzaWdubWVudCB0byBeQyBmcm9tIHB1dHR5IChTdmVuIEpvYWNoaW0pCisjCSogYWRkIGxpbnV4LTE2Y29sb3IgKEJlbmphbWluIFNpdHRsZXIpCisjCSogY29ycmVjdCBpbml0YyBjYXBhYmlsaXR5IG9mIGxpbnV4LWMtbmMgZW5kLW9mLXJhbmdlIChCZW5qYW1pbiBTaXR0bGVyKQorIwkqIHNpbWlsYXIgY2hhbmdlIGZvciBkZytjY2MgYW5kIGRndW5peCtjY2MgKEJlbmphbWluIFNpdHRsZXIpCisjCSogYWRkIGNjYyBhbmQgaW5pdGMgY2FwYWJpbGl0aWVzIHRvIHh0ZXJtLTE2Y29sb3IgLVRECisjCisjIDIwMDktMTAtMzEKKyMJKiB1cGRhdGVkIG5zdGVybSogZW50cmllcyAoQmVuamFtaW4gU2l0dGxlciwgcHJvbXB0ZWQgYnkgR2VuVG9vICMyMDYyMDEpCisjCisjIDIwMDktMTItMTIKKyMJKiB1cGRhdGVkIG5zdGVybSogZW50cmllcyAoQmVuamFtaW4gU2l0dGxlciwgRW1hbnVlbGUgR2lhcXVpbnRhKQorIworIyAyMDA5LTEyLTE5CisjCSogYWRkIGJ3IChhdXRvLWxlZnQtbWFyZ2luKSB0byBuc3Rlcm0qIGVudHJpZXMgKEJlbmphbWluIFNpdHRsZXIpCisjCSogcmVuYW1lIG1pbml4IHRvIG1pbml4LTEuNywgYWRkIG1pbml4IGVudHJ5IGZvciBNaW51eDMgLVRECisjCisjIDIwMDktMTItMjYKKyMJKiBhZGQgYnRlcm0gKGJvZ2wgMC4xLjE4KSAtVEQKKyMJKiBtaW5vciBmaXggdG8gcnh2dCtwY2ZrZXlzIC1URAorIworIyAyMDEwLTAyLTA2CisjCSogdXBkYXRlIG1yeHZ0IHRvIDAuNS40LCBhZGQgbXJ4dnQtMjU2Y29sb3IgLVRECisjCisjIDIwMTAtMDItMTMKKyMJKiBhZGQgc2V2ZXJhbCBzY3JlZW4tYmNlLlhYWCBlbnRyaWVzIC1URAorIworIyAyMDEwLTAyLTIzCisjCSogbW9kaWZ5IHNjcmVlbi1iY2UuWFhYIGVudHJpZXMgdG8gZXhjbHVkZSBlY2gsIHNpbmNlIHNjcmVlbidzIGNvbG9yCisjCSAgbW9kZWwgZG9lcyBub3QgY2xlYXIgd2l0aCBjb2xvciBmb3IgdGhhdCBmZWF0dXJlIC1URAorIworIyAyMDEwLTAzLTIwCisjCSogcmVuYW1lIGF0YXJpIGFuZCBzdDUyIHRvIGF0YXJpLW9sZCwgc3Q1Mi1vbGQsIHVzZSBuZXdlciBlbnRyaWVzIGZyb20KKyMJICBGcmVlTWlOVCBieSBHdWlkbyBGbG9ociAoZnJvbSBwYXRjaC9yZXBvcnQgYnkgQWxhbiBIb3VyaWhhbmUpLgorIworIyAyMDEwLTA2LTEyCisjCSogYWRkIG1sdGVybSsyNTZjb2xvciBlbnRyeSAtVEQKKyMKKyMgMjAxMC0wNy0xNworIwkqIGFkZCBoYXJkLXJlc2V0IGZvciByczIgdG8gd3N2dDI1IHRvIGhlbHAgZW5zdXJlIHRoYXQgcmVzZXQgZW5kcworIwkgIHRoZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCAocGF0Y2ggYnkgTmljaG9sYXMgTWFycmlvdHQpCisjCisjIDIwMTAtMDgtMjgKKyMJKiBpbXByb3ZlIGFjc2MgZm9yIHZ0NTIgKEJlbmphbWluIFNpdHRsZXIpCisjCSogbW9kaWZ5IG5zdGVybSBlbnRyaWVzIGZvciBjb25zaXN0ZW50IHNnci9zZ3IwIC1URAorIwkqIG1vZGlmeSB4bnVwcGMgZW50cmllcyBmb3IgY29uc2lzdGVudCBzZ3Ivc2dyMCAtVEQKKyMJKiBhZGQgaW52aXMgdG8gdGVrNDExNSBzZ3IgLVRECisjCisjIDIwMTAtMDktMTEKKyMJKiByZWZvcm1hdCBhY3NjIHN0cmluZ3MgdG8gY2Fub25pY2FsIGZvcm1hdCAtVEQKKyMKKyMgMjAxMC0wOS0yNQorIwkqIGFkZCAiWFQiIGNhcGFiaWxpdHkgdG8gZW50cmllcyBmb3IgdGVybWluYWxzIHRoYXQgc3VwcG9ydCBib3RoCisjCSAgeHRlcm0tc3R5bGUgbW91c2UtIGFuZCB0aXRsZS1jb250cm9scywgZm9yICJzY3JlZW4iIHdoaWNoCisjCSAgc3BlY2lhbC1jYXNlcyBURVJNIGJlZ2lubmluZyB3aXRoICJ4dGVybSIgb3IgInJ4dnQiIC1URAorIworIyAyMDEwLTEwLTAyCisjCSogZmlsbCBpbiBuby1wYXJhbWV0ZXIgZm9ybXMgb2YgY3Vyc29yLW1vdmVtZW50IHdoZXJlIGEgcGFyYW1ldGVyaXplZAorIwkgIGZvcm0gaXMgYXZhaWxhYmxlIC1URAorIwkqIGZpbGwgaW4gbWlzc2luZyBjdXJzb3IgY29udHJvbHMgd2hlcmUgdGhlIGZvcm0gb2YgdGhlIGNvbnRyb2xzIGlzCisjCSAgQU5TSSAtVEQKKyMJKiBhZGQgcGFyYW1ldGVyaXplZCBjdXJzb3ItY29udHJvbHMgdG8gbGludXgtYmFzaWMgKHJlcG9ydCBieSBEYWUpIC1URAorIworIyAyMDEwLTEwLTA5CisjCSogY29ycmVjdCBjb21wYXJpc29uIHVzZWQgZm9yIHNldHRpbmcgMTYtY29sb3JzIGluIGxpbnV4LTE2Y29sb3IKKyMJICBlbnRyeSAoTm92ZWxsICM2NDQ4MzEpIC1URAorIwkqIGltcHJvdmUgbGludXgtMTZjb2xvciBlbnRyeSwgdXNpbmcgImRpbSIgZm9yIGNvbG9yLTggd2hpY2ggbWFrZXMgaXQKKyMJICBncmF5IHJhdGhlciB0aGFuIGJsYWNrIGxpa2UgY29sb3ItMCAtVEQKKyMKKyMgMjAxMC0xMS0yMAorIwkqIG1ha2UgInZ0ZSIgdGhlIHByaW5jaXBhbCBlbnRyeSBkZWZpbmluZyAiZ25vbWUiLCBzaW5jZSBHTk9NRSB0ZXJtaW5hbAorIwkgIGlzIG1lcmVseSBvbmUgb2Ygc2V2ZXJhbCB0ZXJtaW5hbHMgd2hvc2UgYmVoYXZpb3IgaXMgcHJvdmlkZWQgYnkgdGhpcworIwkgIGxpYnJhcnkgLVRECisjCisjIDIwMTAtMTEtMjcKKyMJKiBmaXggdHlwbyBpbiBybXNvIGZvciB0ZWs0MTA2IC1Hb3JhbiBXZWluaG9sdAorIworIyAyMDEwLTEyLTExCisjCSogc3VwcHJlc3MgbmN2IGluIHNjcmVlbiBlbnRyeSwgYWxsb3dpbmcgdW5kZXJsaW5lIC1BbGVqYW5kcm8gUi4gU2VkZW5vCisjCSogYWxzbyBzdXBwcmVzcyBuY3YgaW4ga29uc29sZS1iYXNlIC1URAorIworIyAyMDExLTAyLTA1CisjCSogYWRkIFU4IGZlYXR1cmUgdG8gZGVub3RlIGVudHJpZXMgZm9yIHRlcm1pbmFsIGVtdWxhdG9ycyB3aGljaCBkbyBub3QKKyMJICBzdXBwb3J0IFZUMTAwIFNJL1NPIHdoZW4gcHJvY2Vzc2luZyBVVEYtOCBlbmNvZGluZyAtVEQKKyMJKiBhZGQgeHRlcm0tdXRmOCBhcyBhIGRlbW8gb2YgdGhlIFU4IGZlYXR1cmUgLVRECisjCisjIDIwMTEtMDItMjAKKyMJKiBhZGQgY29uczI1LWRlYmlhbiBlbnRyeSAoQnJpYW4gTSBDYXJsc29uLCBEZWJpYW4gIzYwNzY2MikuCisjCisjIDIwMTEtMDYtMTEKKyMJKiB1cGRhdGUgbWluaXggZW50cnkgdG8gbWluaXggMy4yIChUaG9tYXMgQ29ydCkuCisjCisjIDIwMTEtMDctMDkKKyMJKiBmaXggaW5jb25zaXN0ZW50IHRhYnNldCBwYXRoIGluIHBjbXcgKFRvZGQgQy4gTWlsbGVyKS4KKyMJKiByZW1vdmUgYSBiYWNrc2xhc2ggd2hpY2ggY29udGludWVkIGNvbW1lbnQsIG9ic2N1cmluZyBhbHRvczMKKyMJICBkZWZpbml0aW9uIHdpdGggT3BlbkJTRCB0b29sc2V0IChOaWNob2xhcyBNYXJyaW90dCkuCisjCisjIDIwMTEtMDctMTYKKyMJKiBhZGQvdXNlIHh0ZXJtK3RtdXggY2h1bmsgZnJvbSB4dGVybSAjMjcxIC1URAorIwkqIHJlc3luYyB4dGVybS1uZXcgZW50cnkgZnJvbSB4dGVybSAjMjcxIC1URAorIwkqIGFkZCBFMyBleHRlbmRlZCBjYXBhYmlsaXR5IHRvIGxpbnV4LWJhc2ljIChNaXJvc2xhdiBMaWNodmFyKQorIwkqIGFkZCBsaW51eDIuMiwgbGludXgyLjYsIGxpbnV4My4wIGVudHJpZXMgdG8gZ2l2ZSBjb250ZXh0IGZvciBFMyAtVEQKKyMJKiBhZGQgU0kvU08gY2hhbmdlIHRvIGxpbnV4Mi42IGVudHJ5IChEZWJpYW4gIzUxNTYwOSkgLVRECisjCisjIDIwMTEtMDctMjEKKyMJKiBhZGQga2ljaDEgdG8gc3VuIChZdXJpIFBhbmtvdikKKyMJKiB1c2UgYm9sZCByYXRoZXIgdGhhbiByZXZlcnNlIGZvciBzbXNvIGluIHN1bi1jb2xvciAoWXVyaSBQYW5rb3YpLgorIworIyAyMDExLTA4LTA2CisjCSogY29ycmVjdGVkIGs5IGluIGRnNDYwLWFuc2ksIGFkZCBvdGhlciBmZWF0dXJlcyBiYXNlZCBvbiBtYW51YWxzIC1URAorIworIyAyMDExLTA4LTIwCisjCSogbWlub3IgY2xlYW51cCBvZiBYLXRlcm1pbmFsIGVtdWxhdG9yIHNlY3Rpb24gLVRECisjCSogYWRkIHRlcm1pbmF0b3IgZW50cnkgLVRECisjCSogYWRkIHNpbXBsZXRlcm0gZW50cnkgLVRECisjCisjIDIwMTEtMDktMTAKKyMJKiBhZGQgeHRlcm0ra2JzIGZyYWdtZW50IGZyb20geHRlcm0gIzI3MiAtVEQKKyMKKyMgMjAxMS0xMS0xMgorIwkqIGFkZCBwY2NvbiBlbnRyaWVzIGZvciBPcGVuQlNEIGNvbnNvbGUgKEFsZXhlaSBNYWxpbmluKQorIworIyAyMDExLTEyLTE3CisjCSogY29ycmVjdGVkIG9sZCBjaGFuZ2Vsb2cgY29tbWVudHMgLVRECisjCisjIDIwMTEtMTEtMjQKKyMJKiBhZGQgcHV0dHktc2NvIC1URAorIworIyAyMDEyLTAxLTI4CisjCSogYWRkIG1hY2gtZ251IChTYW11ZWwgVGhpYmF1bHQpCisjCSogYWRkIG1hY2gtZ251LWNvbG9yLCB0d2Vha3MgdG8gbWFjaC1nbnUgLVRECisjCSogbWFrZSBzZ3IgZm9yIHN1bi1jb2xvciBhZ3JlZSB3aXRoIHNtc28gLVRECisjCSogbWFrZSBzZ3IgZm9yIHByaXNtOSBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGljbDY0MDQgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBvZmNvbnMgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBhdHQ1NDEwdjEsIGF0dDQ0MTUsIGF0dDYyMCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGFhYS11bmssIGFhYS1ydiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGF2dC1ucyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCisjIDIwMTItMDItMTEKKyMJKiBtYWtlIHNnciBmb3IgeHRlcm0tcGNvbG9yIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMJKiBtYWtlIHNnciBmb3IgYXR0NTQyNSBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGF0dDYzMCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGxpbnV4IGVudHJpZXMgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciB0dmk5MDY1IGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMJKiBtYWtlIHNnciBmb3IgbmNyMjYwdnQyMDBhbiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIG5jcjE2MHZ0MTAwcHAgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBuY3IyNjB2dDMwMGFuIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMJKiBtYWtlIHNnciBmb3IgYWFhLTYwLWRlYy1ydiwgYWFhK2RlYyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGN5Z3dpbiwgY3lnd2luREJHIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMKKyMgMjAxMi0wMy0zMQorIwkqIGNvcnJlY3Qgb3JkZXIgb2YgdXNlLWNsYXVzZXMgaW4gc3QtMjU2Y29sb3IgLVRECisjCisjIDIwMTItMDQtMDEKKyMJKiByZXZlcnQgMjAxMS0wNy0xNiBjaGFuZ2UgdG8gImxpbnV4IiBhbGlhcywgcmV0dXJuIHRvICJsaW51eDIuMiIgLVRECisjCisjIDIwMTItMDQtMTQKKyMJKiBkb2N1bWVudCBhbGwgb2YgdGhlIHVzZXItZGVmaW5lZCBjYXBhYmlsaXRpZXMgaW4gb25lIHBsYWNlIC1URAorIwkqIGFkZCBYVCB0byBzb21lIHBsYWNlcyB0byBpbXByb3ZlIHVzZWZ1bG5lc3MgZm9yIG90aGVyIGFwcGxpY2F0aW9ucworIwkgIHRoYW4gc2NyZWVuLCB3aGljaCB3b3VsZCBsaWtlIHRvIHByZXRlbmQgdGhhdCB4dGVybSdzIHRpdGxlIGlzCisjCSAgYSBzdGF0dXMtbGluZS4gLVRECisjCSogY2hhbmdlIHVzZS1jbGF1c2VzIGluIGFuc2ktbXRhYnMsIGhwMjYyNiwgYW5kIGhwMjYyMiBiYXNlZCBvbiByZXZpZXcKKyMJICBvZiBvcmRlcmluZyBhbmQgb3ZlcnJpZGVzIC1URAorIworIyAyMDEyLTA0LTIxCisjCSogYWRkIG1zZ3IgdG8gdnQ0MjAsIHNpbWlsYXIgREVDIHZ0WFhYIGVudHJpZXMgLVRECisjCSogYWRkIHNldmVyYWwgbWlzc2luZyB2dDQyMCBjYXBhYmlsaXRpZXMgZnJvbSB2dDIyMCAtVEQKKyMJKiBmYWN0b3Igb3V0IGFuc2krcHAgZnJvbSBzZXZlcmFsIGVudHJpZXMgLVRECisjCSogY2hhbmdlIHh0ZXJtK3NsIGFuZCB4dGVybStzbC10d20gdG8gaW5jbHVkZSBvbmx5IHRoZSBzdGF0dXMtbGluZQorIwkgIGNhcGFiaWxpdGllcyBhbmQgbm90ICJ1c2U9eHRlcm0iLCBtYWtpbmcgdGhlbSBtb3JlIGdlbmVyYWxseSB1c2VmdWwKKyMJICBhcyBidWlsZGluZy1ibG9ja3MgLVRECisjCSogYWRkIGRlYytzbCBidWlsZGluZyBibG9jaywgYXMgZXhhbXBsZSAtVEQKKyMKKyMgMjAxMi0wNC0yOAorIwkqIGZpeCBzb21lIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIHZ0MzIwL3Z0NDIwLCBlLmcuLCBjbm9ybS9jaXZpcyAtVEQKKyMJKiBhZGQgZXNsb2sgZmxhZyB0byBkZWMrc2wgLVRECisjCSogZGVjK3NsIGFwcGxpZXMgdG8gdnQzMjAgYW5kIHVwIC1URAorIwkqIGRyb3Agd3NsIHdpZHRoIGZyb20geHRlcm0rc2wgLVRECisjCSogcmV1c2UgeHRlcm0rc2wgaW4gcHV0dHkgYW5kIG5zY2EtbSAtVEQKKyMJKiBhZGQgYW5zaSt0YWJzIHRvIHZ0NTIwIC1URAorIwkqIGFkZCBhbnNpK2VucSB0byB2dDIyMC12dDUyMCAtVEQKKyMKKyMgMjAxMi0wNS0wNQorIwkqIHJlbW92ZSBwNiAoYm9sZCkgZnJvbSBvcHVzM24xKyBmb3IgY29uc2lzdGVuY3kgLVRECisjCSogcmVtb3ZlIGFjcyBzdHVmZiBmcm9tIGVudjIzMCBwZXIgY2x1ZXMgaW4gSW5ncmVzIHRlcm1jYXAgLVRECisjCSogbW9kaWZ5IGVudjIzMCBzZ3Ivc2dyMCB0byBtYXRjaCBvdGhlciBjYXBhYmlsaXRpZXMgLVRECisjCSogbW9kaWZ5IHNtYWNzL3JtYWNzIGluIGJxMzAwLTggdG8gbWF0Y2ggc2dyL3NncjAgLVRECisjCSogbWFrZSBzZ3IgZm9yIGRrdTcyMDIgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBpYm1wYyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIHRlazQxMDcgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBuZHI5NTAwIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMJKiBtYWtlIHNnciBmb3Igc2NvLWFuc2kgYWdyZWUgd2l0aCBvdGhlciBjYXBzIC1URAorIwkqIG1ha2Ugc2dyIGZvciBkNDEwIGFncmVlIHdpdGggb3RoZXIgY2FwcyAtVEQKKyMJKiBtYWtlIHNnciBmb3IgZDIxMCBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCSogbWFrZSBzZ3IgZm9yIGQ0NzBjLCBkNDcwYy03YiBhZ3JlZSB3aXRoIG90aGVyIGNhcHMgLVRECisjCisjIDIwMTItMDUtMTIKKyMJKiByZXdyaXRlIHZ0NTIwIGVudHJ5IGJhc2VkIG9uIHZ0NDIwIC1URAorIwkqIGNvcnJlY3RlZCAnb3AnIGZvciBidGVybSAocmVwb3J0IGJ5IFNhbXVlbCBUaGliYXVsdCkgLVRECisjCisjIDIwMTItMDYtMDIKKyMJKiBhZGQga2RjaDEgdG8gd3N2dDI1IGVudHJ5IGZyb20gTmV0QlNEIENWUyAocmVwb3J0ZWQgYnkgRGF2aWQgTG9yZCwKKyMJICBhbmFseXNpcyBieSBNYXJ0aW4gSHVzZW1hbm4pLgorIwkqIGFkZCBjbm9ybS9jaXZpcyB0byB3c3Z0MjUgZW50cnkgZnJvbSBOZXRCU0QgQ1ZTIChyZXBvcnQvYW5hbHlzaXMgYnkKKyMJICBPbm5vIHZhbiBkZXIgTGluZGVuKS4KKyMJKiBhZGQga2RjaDEgYWthICJSZW1vdmUiIHRvIHZ0MjIwIGFuZCB2dDIyMC04IGVudHJpZXMgLVRECisjCSogYWRkIGtkY2gxLCBldGMuLCB0byBxdnQxMDggLVRECisjCSogYWRkIGRsMS9pbDEgdG8gc29tZSBlbnRyaWVzIGJhc2VkIG9uIGRsL2lsIHZhbHVlcyAtVEQKKyMJKiBhZGQgZGwgdG8gc2ltcGxldGVybSAtVEQKKyMKKyMgMjAxMi0wNi0xMAorIwkqIG1vZGlmeSBzb21lIG9sZGVyIHh0ZXJtIGVudHJpZXMgdG8gYWxpZ24gd2l0aCB4dGVybSBzb3VyY2UgLVRECisjCSogc2VwYXJhdGUgInh0ZXJtLW9sZCIgYWxpYXMgZnJvbSAieHRlcm0tcjYiIC1URAorIworIyAyMDEyLTA3LTI4CisjCSogYWRkIEUzIHRvIHh0ZXJtLWJhc2ljIGFuZCBwdXR0eSAtVEQKKyMKKyMgMjAxMi0wOC0xMQorIwkqIGFkZCBuc3Rlcm0tMjU2Y29sb3IsIG1ha2UgdGhpcyB0aGUgZGVmYXVsdCBuc3Rlcm0gLVRECisjCSogcmVtb3ZlIGJ3IGZyb20gbnN0ZXJtLWJjZSwgcGVyIHRlc3Rpbmcgd2l0aCB0YWNrIC1URAorIworIyAyMDEyLTEwLTEyCisjICAgICAgICogYWRkIHZ0ZS0yMDEyLCBnbm9tZS0yMDEyLCBtYWtpbmcgdGhlc2UgdGhlIGRlZmF1bHRzIGZvciB2dGUvZ25vbWUKKyMJICAocGF0Y2ggYnkgQ2hyaXN0aWFuIFBlcnNjaCkuCisjCisjIDIwMTItMTEtMDIKKyMJKiByZXZpZXdlZCB2dGUtMjAxMiwgcmV2ZXJ0ZWQgbW9zdCBvZiB0aGUgY2hhbmdlIHNpbmNlIGl0IHdhcyBpbmNvcnJlY3QKKyMJICBiYXNlZCBvbiB0ZXN0aW5nIHdpdGggdGFjayAtVEQKKyMJKiB1bi1jYW5jZWwgdGhlIGluaXRjIGluIHZ0ZS0yNTZjb2xvciwgc2luY2UgdGhpcyB3YXMgaW1wbGVtZW50ZWQKKyMJICBzdGFydGluZyB3aXRoIHZlcnNpb24gMC4yMCBpbiAyMDA5IC1URAorIworIyAyMDEzLTAzLTE2CisjCSogY29ycmVjdCB0eXBvIGluIHNnciBzdHJpbmcgZm9yIHN1bi1jb2xvciwKKyMJICBhZGQgYm9sZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzZ3IsCisjCSAgY2hhbmdlIHNtc28gZm9yIGNvbnNpc3RlbmN5IHdpdGggc2dyIC1URAorIwkqIGNvcnJlY3QgdHlwbyBpbiBzZ3Igc3RyaW5nIGZvciB0ZXJtaW5hdG9yIC1URAorIwkqIGFkZCBibGluayB0byB0aGUgYXR0cmlidXRlcyBtYXNrZWQgYnkgbmN2IGluIGxpbnV4LTE2Y29sb3IgKHJlcG9ydAorIwkgIGJ5IEJlbmphbWluIFNpdHRsZXIpCisjCisjIDIwMTMtMDMtMjMKKyMJKiBjaGFuZ2UgaW5pdGlhbGl6YXRpb24gZm9yIHZ0MjIwLCBzaW1pbGFyIGVudHJpZXMgZm9yIGNvbnNpc3RlbmN5CisjCSAgd2l0aCBjdXJzb3Ita2V5IHN0cmluZ3MgKE5ldEJTRCAjNDc2NzQpIC1URAorIwkqIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIHRvIGxpbnV4LTE2Y29sb3IgKEJlbmphbWluIFNpdHRsZXIpCisjCisjIDIwMTMtMDUtMTEKKyMJKiBtb3ZlIG5zdGVybS1yZWxhdGVkIGVudHJpZXMgb3V0IG9mICJvYnNvbGV0ZSIgc2VjdGlvbiB0byBtb3JlCisjCSAgcGxhdXNpYmxlICJhbnNpIGNvbnNvbGVzIiAtVEQKKyMJKiBhZGRpdGlvbmFsIGNsZWFudXAgb2YgdGFibGUtb2YtY29udGVudHMgYnkgcmVvcmRlcmluZyAtVEQKKyMKKyMgMjAxMy0wNi0wNworIwkqIGFkZGVkIG5vdGUgdG8gY2xhcmlmeSBUZXJtaW5hbC5hcHAncyBub24tZW11bGF0aW9uIG9mIHRoZSB2YXJpb3VzCisjCSAgdGVybWluYWwgdHlwZXMgbGlzdGVkIGluIHRoZSBwcmVmZXJlbmNlcyBkaWFsb2cgLVRECisjCisjIDIwMTMtMTEtMDIKKyMJKiB1c2UgVFMgZXh0ZW5zaW9uIHRvIGRlc2NyaWJlIHh0ZXJtJ3MgdGl0bGUtZXNjYXBlcyAtVEQKKyMJKiBtb2RpZnkgdGVybWluYXRvciBhbmQgbnN0ZXJtLXMgdG8gdXNlIHh0ZXJtK3NsLXR3bSBidWlsZGluZyBibG9jayAtVEQKKyMJKiB1cGRhdGUgaHVyZC50aSwgYWRkIHhlbmwgdG8gcmVmbGVjdCAyMDExLTAzLTA2IGNoYW5nZSBpbgorIwkgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2h1cmQvaHVyZC5naXQvbG9nL2NvbnNvbGUvZGlzcGxheS5jCisjCSAgKERlYmlhbiAjNzI3MTE5KS4KKyMJKiBzaW1wbGlmeSBwZmtleSBleHByZXNzaW9uIGluIGFuc2kuc3lzIC1URAorIworIyAyMDEzLTExLTEwCisjCSogc3BsaXQtb3V0IGJ1aWxkaW5nIGJsb2NrcyB4dGVybStzbSsxMDAyIGFuZCB4dGVybStzbSsxMDAzIC1URAorIworIyAyMDE0LTAyLTIyCisjCSogdXBkYXRlZCBub3RlcyBmb3Igd3N2dDI1IGJhc2VkIG9uIHRhY2sgYW5kIHZ0dGVzdCAtVEQKKyMJKiBhZGQgdGVrZW4gZW50cnkgdG8gc2hvdyBhY3R1YWwgcHJvcGVydGllcyBvZiBGcmVlQlNEJ3MgInh0ZXJtIgorIwkgIGNvbnNvbGUgLVRECisjCisjIDIwMTQtMDMtMjIKKyMJKiBhZGQgdGVybWlub2xvZ3kgZW50cnkgLVRECisjCSogYWRkIG1sdGVybTMgZW50cnksIHVzZSB0aGF0IGFzICJtbHRlcm0iIC1URAorIwkqIGluaGVyaXQgbWx0ZXJtLTI1NmNvbG9yIGZyb20gbWx0ZXJtIC1URAorIworIyAyMDE0LTAzLTIzCisjCSogZml4IHR5cG8gaW4gIm1sdGVybSIgZW50cnkgKHJlcG9ydCBieSBHYWJyaWVsZSBCYWxkdWNjaSkgLVRECisjCisjIDIwMTQtMDMtMzAKKyMJKiBjYW5jZWwgY2NjIGluIHB1dHR5LTI1NmNvbG9yIGFuZCBrb25zb2xlLTI1NmNvbG9yIGZvciBjb25zaXN0ZW5jeQorIwkgIHdpdGggdGhlIGNhbmNlbGxlZCBpbml0YyBjYXBhYmlsaXR5IChwYXRjaCBieSBTdmVuIFp1aGxzZG9yZikuCisjCSogYWRkIHh0ZXJtKzI1NnNldGFmIGJ1aWxkaW5nIGJsb2NrIGZvciB2YXJpb3VzIHRlcm1pbmFscyB3aGljaCBvbmx5CisjCSAgZ2V0IHRoZSAyNTYtY29sb3IgZmVhdHVyZSBoYWxmLWltcGxlbWVudGVkIC1URAorIwkqIHVwZGF0ZWQgInN0IiBlbnRyeSAobGVhdmluZyB0aGUgMC4xLjEgdmVyc2lvbiBhcyAic2ltcGxldGVybSIpIHRvCisjCSAgMC40LjEgLVRECisjCisjIDIwMTQtMDUtMDMKKyMJKiBhZGQgdnQ1MjBhbnNpIChNaWtlIEdyYW4pCisjCisjIDIwMTQtMDUtMjQKKyMJKiBjb3JyZWN0IHNldmVyYWwgZW50cmllcyB3aGljaCBoYWQgdGVybWNhcC1zdHlsZSBwYWRkaW5nIHVzZWQgaW4KKyMJICB0ZXJtaW5mbzogYWRtMjEsIGFqNTEwLCBhbHRvLWgxOSwgYXR0NjA1LXBjLCB4ODIwIC1URAorIwkqIGNvcnJlY3Qgc3ludGF4IGZvciBwYWRkaW5nIGluIHNvbWUgZW50cmllczogZGcyMTEsIGgxOSAtVEQKKyMJKiBjb3JyZWN0IHRpOTI0LTggd2hpY2ggaGFkIGNvbmZ1c2VkIHBhZGRpbmcgdmVyc3VzIG9jdGFsIGVzY2FwZXMgLVRECisjCSogY29ycmVjdCBwYWRkaW5nIGluIHNiaSBlbnRyeSAtVEQKKyMKKyMgMjAxNC0wNi0wNworIwkqIHVwZGF0ZSB4dGVybS1uZXcgdG8gcGF0Y2ggIzMwNSAtVEQKKyMJKyBjaGFuZ2Ugc2NyZWVuJ3Mgc21zbyB0byB1c2UgU0dSIDcgKEVDTUEtODAgcmV2ZXJzZSkgcmF0aGVyIHRoYW4gU0dSIDMKKyMJICAoaXRhbGljKS4gIFRoaXMgd2FzIGEgbG9uZy1hZ28gdHlwbyBpbiBzY3JlZW4gMy4xLjEgd2hpY2ggd2FzCisjCSAgb3Zlcmxvb2tlZCB1bnRpbCBhIGZldyB0ZXJtaW5hbCBlbXVsYXRvcnMgaW1wbGVtZW50ZWQgdGhlIGZlYXR1cmUgLVRECisjCisjIDIwMTQtMDYtMDkKKyMJPiBmaXggcmVncmVzc2lvbiBpbiBzY3JlZW4gdGVybWluZm8gZW50cmllcyAocmVwb3J0cyBieSBDaHJpc3RpYW4KKyMJICBFYmVydCwgR2FicmllbGUgQmFsZHVjY2kpIC1URAorIwkrIHJldmVydCB0aGUgY2hhbmdlIHRvIHNjcmVlbjsgc2VlIG5vdGVzIGZvciB3aHkgdGhpcyBkaWQgbm90IHdvcmsgLVRECisjCSsgY2FuY2VsIHNpdG0vcml0bSBmb3IgZW50cmllcyB3aGljaCBleHRlbmQgInNjcmVlbiIsIHRvIHdvcmsgYXJvdW5kCisjCSAgc2NyZWVuJ3MgaGFyZGNvZGVkIGJlaGF2aW9yIGZvciBTR1IgMyAtVEQKKyMKKyMgMjAxNC0wNi0xNAorIwkrIG1vZGlmeSBzZ3IgZm9yIHNjcmVlbi54dGVybS1uZXcgdG8gc3VwcG9ydCBkaW0gY2FwYWJpbGl0eSAtVEQKKyMJKyBhZGQgZGltIGNhcGFiaWxpdHkgdG8gbnN0ZXJtKzcgLVRECisjCSsgY2FuY2VsIGRpbSBjYXBhYmlsaXR5IGZvciBpdGVybSAtVEQKKyMJKyBhZGQgZGltLCBpbnZpcyBjYXBhYmlsaXRpZXMgdG8gdnRlLTIwMTIgLVRECisjCSsgYWRkIHNpdG0vcml0bSB0byBrb25zb2xlLWJhc2UgYW5kIG1sdGVybTMgLVRECisjCisjIDIwMTQtMTAtMDYKKyMJKyBhZGQgeHRlcm0tMTAwNSBhbmQgeHRlcm0tMTAwNiBlbnRyaWVzLCB3aXRoIHN1Z2dlc3RlZCBleHRlbnNpb24KKyMJICBjYXBhYmlsaXR5ICJ4bSIgLVRECisjCisjIDIwMTQtMTAtMDcKKyMJKyB1cGRhdGUgdGVzdC1yZXBvcnQgZm9yIG1yeHZ0IC1URAorIworIyAyMDE0LTEwLTExCisjCSsgYWRkIHh0ZXJtLXgxMG1vdXNlLCB4dGVybS14MTFtb3VzZSwgZXRjLiAtVEQKKyMKKyMgMjAxNC0xMC0xOAorIwkrIHJldmlld2VkIHRlcm1pbm9sb2d5IDAuNi4xLCBhZGQgZnVuY3Rpb24ga2V5IGRlZmluaXRpb25zLiAgTm9uZSBvZgorIwkgIHRoZSB2dDEwMC1jb21wYXRpYmlsaXR5IGlzc3VlcyB3ZXJlIGltcHJvdmVkIC1URAorIworIyAyMDE1LTA0LTIyCisjCSsgYWRkICdkaW0nIGNhcGFiaWxpdHkgdG8gc2NyZWVuIGVudHJ5IChyZXBvcnQgYnkgTGVvbmFyZG8gQiBTY2hlbmtlbCkKKyMJKyBhZGQgc2V2ZXJhbCBrZXkgZGVmaW5pdGlvbnMgdG8gbnN0ZXJtLWJjZSB0byBtYXRjaCBwcmVjb25maWd1cmVkCisjCSAga2V5cywgZS5nLiwgd2l0aCBPU1ggMTAuOSBhbmQgMTAuMTAgKHJlcG9ydCBieSBMZW9uYXJkbyBCIFNjaGVua2VsKQorIworIyAyMDE1LTA1LTAyCisjCSsgcmVtb3ZlIHVubmVjZXNzYXJ5ICc7JyBmcm9tIEUzIGNhcGFiaWxpdGllcyAtVEQKKyMJKyBhZGQgdG11eCBlbnRyeSwgZGVyaXZlZCBmcm9tIHNjcmVlbiAocGF0Y2ggYnkgTmljaG9sYXMgTWFycmlvdHQpLgorIwkrIHNwbGl0LW91dCByZWNlbnQgY2hhbmdlIHRvIG5zdGVybS1iY2UgYXMgbnN0ZXJtLWJ1aWxkMzI2LCBhbmQgYWRkCisjCSAgbnN0ZXJtLWJ1aWxkMzQyIHRvIHJlZmxlY3QgY2hhbmdlcyB3aXRoIHN1Y2Nlc3NpdmUgcmVsZWFzZXMgb2YgT1NYCisjCSAgKGRpc2N1c3Npb24gd2l0aCBMZW9uYXJkbyBCIFNjaGVua2VsKQorIwkrIGFkZCB4b24sIGljaDEsIGlsMSB0byBpYm0zMTYxIChwYXRjaCBieSBTdGVwaGVuIFBvd2VsbCwKKyMJICBEZWJpYW4gIzc4MzgwNikKKyMKKyMgMjAxNS0wNS0xNworIwkrIHJlbW92ZSBzY3JlZW4tYmNlLm1sdGVybSwgc2luY2UgbWx0ZXJtIGRvZXMgbm90IGRvICJiY2UiIC1URAorIwkrIGFkZCBzZXZlcmFsIHNjcmVlbi5YWFggZW50cmllcyB0byBzdXBwb3J0IHRoZSByZXNwZWN0aXZlIHZhcmlhdGlvbnMKKyMJICBmb3IgMjU2IGNvbG9ycyAtVEQKKyMKKyMgMjAxNS0wNS0yMworIwkrIGFkZCBwdXR0eStmbmtleXMqIGJ1aWxkaW5nLWJsb2NrIGVudHJpZXMgLVRECisjCisjIDIwMTUtMDUtMzAKKyMJKyByZW1vdmUgc3B1cmlvdXMgIiU7IiBmcm9tIHN0IGVudHJ5IChyZXBvcnQgYnkgRGFuaWVsIFBpdHRzKSAtVEQKKyMJKyBhZGQgdnRlLTIwMTQsIHVwZGF0ZSB2dGUgdG8gdXNlIHRoYXQgLVRECisjCisjIDIwMTUtMDYtMjcKKyMJKyBjb21tZW50LW91dCAic2NyZWVuLnh0ZXJtIiBlbnRyeSwgYW5kIGluaGVyaXQgc2NyZWVuLnh0ZXJtLTI1NmNvbG9yCisjCSAgZnJvbSB4dGVybS1uZXcgKHJlcG9ydCBieSBSaWNoYXJkIEJpcmtldHQpIC1URAorIworIyAyMDE1LTA3LTI1CisjCSsgYWRkIHN0YXR1cyBsaW5lIHRvIHRtdXggdmlhIHh0ZXJtK3NsIChwYXRjaCBieSBOaWNob2xhcyBNYXJyaW90dCkuCisjCSsgZml4ZXMgZm9yIHN0IDAuNSBmcm9tIHRlc3Rpbmcgd2l0aCB0YWNrIC1URAorIwogIyMjIyMjIyMgU0hBTlRJSCEgIFNIQU5USUghICBTSEFOVElIIQpkaWZmIC0tZ2l0IGEvbWlzYy90ZXJtaW5mby50bXAgYi9taXNjL3Rlcm1pbmZvLnRtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg2MTk5ZC4uMDAwMDAwMAotLS0gYS9taXNjL3Rlcm1pbmZvLnRtcAorKysgL2Rldi9udWxsCkBAIC0xLDIxODAzICswLDAgQEAKLSMjIyMjIyMjIFRFUk1JTkFMIFRZUEUgREVTQ1JJUFRJT05TIFNPVVJDRSBGSUxFCi0jCi0jIFRoaXMgdmVyc2lvbiBvZiB0ZXJtaW5mby5zcmMgaXMgZGlzdHJpYnV0ZWQgd2l0aCBuY3Vyc2VzIGFuZCBpcyBtYWludGFpbmVkCi0jIGJ5IFRob21hcyBFLiBEaWNrZXkgKFREKS4KLSMKLSMgUmVwb3J0IGJ1Z3MgYW5kIG5ldyB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgdG8KLSMJYnVnLW5jdXJzZXNAZ251Lm9yZwotIwotIwkkUmV2aXNpb246IDEuMzQxICQKLSMJJERhdGU6IDIwMDgvMTAvMTIgMjM6MDM6NTQgJAotIwotIyBUaGUgb3JpZ2luYWwgaGVhZGVyIGlzIHByZXNlcnZlZCBiZWxvdyBmb3IgcmVmZXJlbmNlLiAgSXQgaXMgbm90ZWQgdGhhdCB0aGVyZQotIyBpcyBhICJuZXdlciIgdmVyc2lvbiB3aGljaCBkaWZmZXJzIGluIHNvbWUgY29zbWV0aWMgZGV0YWlscyAoYnV0IGFjdHVhbGx5Ci0jIHN0b3BwZWQgdXBkYXRlcyBzZXZlcmFsIHllYXJzIGFnbyk7IHdlIGhhdmUgZGVjaWRlZCB0byBub3QgY2hhbmdlIHRoZSBoZWFkZXIKLSMgdW5sZXNzIHRoZXJlIGlzIGFsc28gYSBjaGFuZ2UgaW4gY29udGVudC4KLSMKLSMgVG8gZnVydGhlciBtdWRkeSB0aGUgd2F0ZXJzLCBpdCBpcyBub3RlZCB0aGF0IGNoYW5nZXMgdG8gdGhpcyBmaWxlIGFzIHBhcnQgb2YKLSMgbWFpbnRlbmFuY2Ugb2YgbmN1cnNlcyAoc2luY2UgMTk5NikgYXJlIGdlbmVyYWxseSBjb25jZWRlZCB0byBiZSBjb3B5cmlnaHQKLSMgdW5kZXIgdGhlIG5jdXJzZXMgTUlULXN0eWxlIGxpY2Vuc2UuICBUaGF0IHdhcyB0aGUgZWZmZWN0IG9mIHRoZSBhZ3JlZW1lbnQKLSMgd2hpY2ggdGhlIHByaW5jaXBhbCBhdXRob3JzIG9mIG5jdXJzZXMgbWFkZSBpbiAxOTk4LiAgSG93ZXZlciwgc2luY2UgbXVjaCBvZgotIyB0aGUgZmlsZSBpdHNlbGYgaXMgb2YgdW5rbm93biBhdXRob3JzaGlwIChhbmQgdGhlIGRpc2NsYWltZXIgYmVsb3cgbWFrZXMgaXQKLSMgb2J2aW91cyB0aGF0IFJheW1vbmQgY2Fubm90IG9yIHdpbGwgbm90IGNvbnZleSByaWdodHMgb3ZlciB0aG9zZSBwYXJ0cyksCi0jIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvcHlyaWdodCBub3RpY2Ugb24gdGhlIGZpbGUgaXRzZWxmLgotIwotIyBJdCB3b3VsZCBhbHNvIGJlIGEgbnVpc2FuY2UgdG8gc3BsaXQgdGhlIGZpbGUgaW50byB1bmtub3duL2tub3duIGF1dGhvcnNoaXAKLSMgYW5kIG1vdmUgcGllY2VzIGFzIHRoZXkgYXJlIG1haW50YWluZWQsIHNpbmNlIG1hbnkgb2YgdGhlIG1haW50ZW5hbmNlIGNoYW5nZXMKLSMgaGF2ZSBiZWVuIHNtYWxsIGNvcnJlY3Rpb25zIHRvIFJheW1vbmQncyB0cmFuc2xhdGlvbnMgdG8vZnJvbSB0ZXJtY2FwIGZvcm1hdCwKLSMgY29ycmVjdGluZyB0aGUgZGF0YSBidXQgbm90IHRoZSBhY2NvbXBhbnlpbmcgYW5ub3RhdGlvbnMuCi0jCi0jIEluIGFueSBjYXNlLCBub3RlIHRoYXQgYWxtb3N0IGhhbGYgb2YgdGhpcyBmaWxlIGlzIG5vdCBkYXRhIGJ1dCBhbm5vdGF0aW9ucwotIyB3aGljaCByZWZsZWN0IGNyZWF0aXZlIGVmZm9ydC4gIEZ1cnRoZXJtb3JlLCB0aGUgc3RydWN0dXJlIG9mIGVudHJpZXMgdG8KLSMgcmV1c2UgY29tbW9uIGNodW5rcyBhbHNvIGlzIGNyZWF0aXZlIChhbmQgc3ViamVjdCB0byBjb3B5cmlnaHQpLiAgRmluYWxseSwKLSMgc29tZSBwb3J0aW9ucyBvZiB0aGUgZGF0YSBhcmUgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGEgY29tcGF0aWJsZSBNSVQtc3R5bGUKLSMgbGljZW5zZSBmcm9tIHh0ZXJtLgotIwotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwlWZXJzaW9uIDEwLjIuMQotIwl0ZXJtaW5mbyBzeW50YXgKLSMKLSMJRXJpYyBTLiBSYXltb25kCQkoY3VycmVudCBtYWludGFpbmVyKQotIwlKb2huIEt1bnplLCBCZXJrZWxleQotIwlDcmFpZyBMZXJlcywgQmVya2VsZXkKLSMKLSMgUGxlYXNlIGUtbWFpbCBjaGFuZ2VzIHRvIHRlcm1pbmZvQHRoeXJzdXMuY29tOyB0aGUgb2xkIHRlcm1jYXBAYmVya2VsZXkuZWR1Ci0jIGFkZHJlc3MgaXMgbm8gbG9uZ2VyIHZhbGlkLiAgVGhlIGxhdGVzdCB2ZXJzaW9uIGNhbiBhbHdheXMgYmUgZm91bmQgYXQKLSMgPGh0dHA6Ly93d3cudHV4ZWRvLm9yZy90ZXJtaW5mbz4uCi0jCi0jIFBVUlBPU0UgT0YgVEhJUyBGSUxFOgotIwotIyBUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBjYXBhYmlsaXRpZXMgb2YgdmFyaW91cyBjaGFyYWN0ZXItY2VsbCB0ZXJtaW5hbHMsCi0jIGFzIG5lZWRlZCBieSBzb2Z0d2FyZSBzdWNoIGFzIHNjcmVlbi1vcmllbnRlZCBlZGl0b3JzLgotIwotIyBPdGhlciB0ZXJtaW5mbyBhbmQgdGVybWNhcCBmaWxlcyBleGlzdCwgc3VwcG9ydGVkIGJ5IHZhcmlvdXMgT1MgdmVuZG9ycwotIyBvciBhcyByZWxpY3Mgb2YgdmFyaW91cyBvbGRlciB2ZXJzaW9ucyBvZiBVTklYLiAgVGhpcyBvbmUgaXMgdGhlIGxvbmdlc3QKLSMgYW5kIG1vc3QgY29tcHJlaGVuc2l2ZSBvbmUgaW4gZXhpc3RlbmNlLiAgSXQgc3Vic3VtZXMgbm90IG9ubHkgdGhlIGVudGlyZXR5Ci0jIG9mIHRoZSBoaXN0b3JpY2FsIDQuNEJTRCwgR05VLCBTeXN0ZW0gViBhbmQgU0NPIHRlcm1jYXAgZmlsZXMgYW5kIHRoZSBCUkwKLSMgdGVybWNhcCBmaWxlLCBidXQgYWxzbyBsYXJnZSBudW1iZXJzIG9mIHZlbmRvci1tYWludGFpbmVkIHRlcm1jYXAgYW5kCi0jIHRlcm1pbmZvIGVudHJpZXMgbW9yZSBjb21wbGV0ZSBhbmQgY2FyZWZ1bGx5IHRlc3RlZCB0aGFuIHRob3NlIGluIGhpc3RvcmljYWwKLSMgdGVybWNhcC90ZXJtaW5mbyB2ZXJzaW9ucy4KLSMKLSMgUG9pbnRlcnMgdG8gcmVsYXRlZCByZXNvdXJjZXMgKGluY2x1ZGluZyB0aGUgbmN1cnNlcyBkaXN0cmlidXRpb24pIG1heQotIyBiZSBmb3VuZCBhdCA8aHR0cDovL3d3dy50dXhlZG8ub3JnL3Rlcm1pbmZvPi4KLSMKLSMgSU5URVJOQVRJT05BTElaQVRJT046Ci0jCi0jIFRoaXMgZmlsZSB1c2VzIG9ubHkgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQgKG5vIElTTzg4NTkgY2hhcmFjdGVycykuCi0jCi0jIFRoaXMgZmlsZSBhc3N1bWVzIGEgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC4gSWYgeW91IG5lZWQgdG8gZml4IHRoaXMsIHN0YXJ0Ci0jIGJ5IGdsb2JhbC1yZXBsYWNpbmcgXEUoQiBhbmQgXEUpQiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBJU08gNjQyOSBlbmFibGVycwotIyBmb3IgeW91ciBjaGFyYWN0ZXIgc2V0LiAgXEUoQSBhbmQgXEUpQSBlbmFibGVzIHRoZSBCcml0aXNoIGNoYXJhY3RlciBzZXQKLSMgd2l0aCB0aGUgcG91bmQgc2lnbiBhdCBwb3NpdGlvbiAyLzMuCi0jCi0jIEluIGEgSmFwYW5lc2UtcHJvY2Vzc2luZyBlbnZpcm9ubWVudCB1c2luZyBFVUMvSmFwYW5lc2Ugb3IgU2hpZnQtSklTLAotIyBDMSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIHRoZSBmaXJzdC1ieXRlIHNldCBvZiB0aGUgSmFwYW5lc2UgZW5jb2RpbmdzLAotIyBzbyBcRSkwIHNob3VsZCBiZSBhdm9pZGVkIGluIDxlbmFjcz4gYW5kIGluaXRpYWxpemF0aW9uIHN0cmluZ3MuCi0jCi0jIEZJTEUgRk9STUFUOgotIwotIyBUaGUgdmVyc2lvbiB5b3UgYXJlIGxvb2tpbmcgYXQgbWF5IGJlIGluIGFueSBvZiB0aHJlZSBmb3JtYXRzOiBtYXN0ZXIKLSMgKHRlcm1pbmZvIHdpdGggT1QgY2FwYWJpbGl0aWVzKSwgc3RvY2sgdGVybWluZm8sIG9yIHRlcm1jYXAuICBZb3UgY2FuIHRlbGwKLSMgd2hpY2ggYnkgdGhlIGZvcm1hdCBnaXZlbiBpbiB0aGUgaGVhZGVyIGFib3ZlLgotIwotIyBUaGUgbWFzdGVyIGZvcm1hdCBpcyBhY2NlcHRlZCBhbmQgZ2VuZXJhdGVkIGJ5IHRoZSB0ZXJtaW5mbyB0b29scyBpbiB0aGUKLSMgbmN1cnNlcyBzdWl0ZTsgaXQgZGlmZmVycyBmcm9tIHN0b2NrIChTeXN0ZW0gVi1jb21wYXRpYmxlKSB0ZXJtaW5mbyBvbmx5Ci0jIGluIHRoYXQgaXQgYWRtaXRzIGEgZ3JvdXAgb2YgY2FwYWJpbGl0aWVzIChwcmVmaXhlZCBgT1QnKSBlcXVpdmFsZW50IHRvCi0jIHZhcmlvdXMgb2Jzb2xldGUgdGVybWNhcCBjYXBhYmlsaXRpZXMuICBZb3UgY2FuLCB0aHVzLCBjb252ZXJ0IGZyb20gbWFzdGVyCi0jIHRvIHN0b2NrIHRlcm1pbmZvIHNpbXBseSBieSBmaWx0ZXJpbmcgd2l0aCBgc2VkICIvT1RbXixdKiwvcy8vLyInOyBidXQgaWYKLSMgeW91IGhhdmUgbmN1cnNlcyBgdGljIC1JJyBpcyBuaWNlciAoYW1vbmcgb3RoZXIgdGhpbmdzLCBpdCBhdXRvbWF0aWNhbGx5Ci0jIG91dHB1dHMgZW50cmllcyBpbiBhIGNhbm9uaWNhbCBmb3JtKS4KLSMKLSMgVGhlIHRlcm1jYXAgdmVyc2lvbiBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBtYXN0ZXIgdmVyc2lvbgotIyB1c2luZyB0aWMgLUMuICBUaGlzIGZpbHRlcmluZyBsZWF2ZXMgaW4gdGhlIE9UIGNhcGFiaWxpdGllcyB1bmRlciB0aGVpcgotIyBvcmlnaW5hbCB0ZXJtY2FwIG5hbWVzLiAgQWxsIHRyYW5zbGF0ZWQgZW50cmllcyBmaXQgd2l0aGluIHRoZSAxMDIzLWJ5dGUKLSMgc3RyaW5nLXRhYmxlIGxpbWl0IG9mIGFyY2hhaWMgdGVybWNhcCBsaWJyYXJpZXMgZXhjZXB0IHdoZXJlIGV4cGxpY2l0bHkKLSMgbm90ZWQgYmVsb3cuICBOb3RlIHRoYXQgdGhlIHRlcm1jYXAgdHJhbnNsYXRpb24gYXNzdW1lcyB0aGF0IHlvdXIgdGVybWNhcAotIyBsaWJyYXJ5IGNhbiBoYW5kbGUgbXVsdGlwbGUgdGMgY2FwYWJpbGl0aWVzIGluIGFuIGVudHJ5LiA0LjRCU0QgaGFzIHRoaXMKLSMgY2FwYWJpbGl0eS4gIE9sZGVyIHZlcnNpb25zIG9mIEdOVSB0ZXJtY2FwLCB0aHJvdWdoIDEuMywgZG8gbm90LgotIwotIyBGb3IgZGV0YWlscyBvbiB0aGVzZSBmb3JtYXRzLCBzZWUgdGVybWluZm8oNSkgaW4gdGhlIG5jdXJzZXMgZGlzdHJpYnV0aW9uLAotIyBhbmQgdGVybWNhcCg1KSBpbiB0aGUgNC40QlNEIFVuaXggUHJvZ3JhbW1lcidzIE1hbnVhbC4gIEJlIGF3YXJlIHRoYXQgNC40QlNECi0jIGN1cnNlcyBoYXMgYmVlbiBkZWNsYXJlZCBvYnNvbGV0ZSBieSB0aGUgY2FyZXRha2VycyBvZiB0aGUgNC40QlNEIHNvdXJjZXMKLSMgYXMgb2YgSnVuZSAxOTk1OyB0aGV5IGFyZSBlbmNvdXJhZ2luZyBldmVyeW9uZSB0byBtaWdyYXRlIHRvIG5jdXJzZXMuCi0jCi0jIE5vdGU6IHVubGlrZSBzb21lIG90aGVyIGRpc3RyaWJ1dGVkIHRlcm1pbmZvIGZpbGVzIChOb3ZlbGwgVW5peCAmIFNDTydzKSwKLSMgbm8gZW50cnkgaW4gdGhpcyBmaWxlIGhhcyBlbWJlZGRlZCBjb21tZW50cy4gIFRoaXMgaXMgc28gc291cmNlIHRyYW5zbGF0aW9uCi0jIHRvIHRlcm1jYXAgb25seSBoYXMgdG8gY2Fycnkgb3ZlciBsZWFkaW5nIGNvbW1lbnRzLiAgQWxzbywgbm8gbmFtZSBmaWVsZAotIyBjb250YWlucyBlbWJlZGRlZCB3aGl0ZXNwYWNlIChzdWNoIHdoaXRlc3BhY2UgY29uZnVzZXMgcmRpc3QpLgotIwotIyBGdXJ0aGVyIG5vdGU6IG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgZmlsZSB3ZXJlIG9mdGVuIGluc3RhbGxlZCB3aXRoIGFuIGVkaXRvcgotIyBzY3JpcHQgKHJlb3JkZXIpIHRoYXQgbW92ZWQgdGhlIG1vc3QgY29tbW9uIHRlcm1pbmFsIHR5cGVzIHRvIHRoZSBmcm9udCBvZgotIyB0aGUgZmlsZS4gIFRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnksIGFzIHRoZSBmaWxlIGlzIG5vdyBvcmRlcmVkCi0jIHJvdWdobHkgYnkgdHlwZSBmcmVxdWVuY3kgd2l0aCBBTlNJL1ZUMTAwIGFuZCBvdGhlciBjb21tb24gdHlwZXMgdXAgZnJvbnQuCi0jCi0jIFNvbWUgaW5mb3JtYXRpb24gaGFzIGJlZW4gbWVyZ2VkIGluIGZyb20gdGVybWluZm8gZmlsZXMgZGlzdHJpYnV0ZWQgYnkKLSMgVVNMIGFuZCBTQ08gKHNlZSBDT1BZUklHSFRTIEFORCBPVEhFUiBERUxVU0lPTlMgYmVsb3cpLiAgTXVjaCBpbmZvcm1hdGlvbgotIyBjb21lcyBmcm9tIHZlbmRvcnMgd2hvIG1haW50YWluIG9mZmljaWFsIHRlcm1pbmZvcyBmb3IgdGhlaXIgaGFyZHdhcmUKLSMgKG5vdGFibHkgREVDIGFuZCBXeXNlKS4KLSMKLSMgQSBkZXRhaWxlZCBjaGFuZ2UgaGlzdG9yeSBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZS4KLSMKLSMgRklMRSBPUkdBTklaQVRJT046Ci0jCi0jIENvbW1lbnRzIGluIHRoaXMgZmlsZSBiZWdpbiB3aXRoICMgLSB0aGV5IGNhbm5vdCBhcHBlYXIgaW4gdGhlIG1pZGRsZQotIyBvZiBhIHRlcm1pbmZvL3Rlcm1jYXAgZW50cnkgKHRoaXMgZmVhdHVyZSBoYWQgdG8gYmUgc2FjcmlmaWNlZCBpbiBvcmRlcgotIyB0byBhbGxvdyBzdGFuZGFyZCB0ZXJtaW5mbyBhbmQgdGVybWNhcCBzeW50YXggdG8gYmUgZ2VuZXJhdGVkIGNsZWFubHkgZnJvbQotIyB0aGUgbWFzdGVyIGZvcm1hdCkuICBJbmRpdmlkdWFsIGNhcGFiaWxpdGllcyBhcmUgY29tbWVudGVkIG91dCBieQotIyBwbGFjaW5nIGEgcGVyaW9kIGJldHdlZW4gdGhlIGNvbG9uIGFuZCB0aGUgY2FwYWJpbGl0eSBuYW1lLgotIwotIyBUaGUgZmlsZSBpcyBkaXZpZGVkIHVwIGludG8gbWFqb3Igc2VjdGlvbnMgKGhlYWRlZCBieSBsaW5lcyBiZWdpbm5pbmcgd2l0aAotIyB0aGUgc3RyaW5nICIjIyMjIyMjIyIpIGFuZCBtaW5vciBzZWN0aW9ucyAoYmVnaW5uaW5nIHdpdGggIiMjIyMiKTsgZG8KLSMKLSMJZ3JlcCAiXiMjIyMiIDxmaWxlPiB8IG1vcmUKLSMKLSMgdG8gc2VlIGEgbGlzdGluZyBvZiBzZWN0aW9uIGhlYWRpbmdzLiAgVGhlIGludGVudCBvZiB0aGUgZGl2aXNpb25zIGlzCi0jIChhKSB0byBtYWtlIGl0IGVhc2llciB0byBmaW5kIHRoaW5ncywgYW5kIChiKSB0byBvcmRlciB0aGUgZGF0YWJhc2Ugc28KLSMgdGhhdCBpbXBvcnRhbnQgYW5kIGZyZXF1ZW50bHktZW5jb3VudGVyZWQgdGVybWluYWwgdHlwZXMgYXJlIG5lYXIgdGhlCi0jIGZyb250IChzbyB0aGF0IHlvdSdsbCBnZXQgcmVhc29uYWJsZSBzZWFyY2ggZWZmaWNpZW5jeSBmcm9tIGEgbGluZWFyCi0jIHNlYXJjaCBvZiB0aGUgdGVybWNhcCBmb3JtIGV2ZW4gaWYgeW91IGRvbid0IHVzZSByZW9yZGVyKS4gIE1pbm9yIHNlY3Rpb25zCi0jIHVzdWFsbHkgY29ycmVzcG9uZCB0byBtYW51ZmFjdHVyZXJzIG9yIHN0YW5kYXJkIHRlcm1pbmFsIGNsYXNzZXMuCi0jIFBhcmVudGhlc2l6ZWQgd29yZHMgZm9sbG93aW5nIG1hbnVmYWN0dXJlciBuYW1lcyBhcmUgdHlwZSBwcmVmaXhlcyBvcgotIyBwcm9kdWN0IGxpbmUgbmFtZXMgdXNlZCBieSB0aGF0IG1hbnVmYWN0dXJlcnMuCi0jCi0jIEhPVyBUTyBSRUFEIFRIRSBFTlRSSUVTOgotIwotIyBUaGUgZmlyc3QgbmFtZSBpbiBhbiBlbnRyeSBpcyB0aGUgY2Fub25pY2FsIG5hbWUgZm9yIHRoZSBtb2RlbCBvcgotIyB0eXBlLCBsYXN0IGVudHJ5IGlzIGEgdmVyYm9zZSBkZXNjcmlwdGlvbi4gIE90aGVycyBhcmUgbW5lbW9uaWMgc3lub255bXMgZm9yCi0jIHRoZSB0ZXJtaW5hbC4KLSMKLSMgVGVybWluYWwgbmFtZXMgbG9vayBsaWtlIDxtYW51ZmFjdHVyZXI+IDxtb2RlbD4gLSA8bW9kZXMvb3B0aW9ucz4KLSMgVGhlIHBhcnQgdG8gdGhlIGxlZnQgb2YgdGhlIGRhc2gsIGlmIGEgZGFzaCBpcyBwcmVzZW50LCBkZXNjcmliZXMgdGhlCi0jIHBhcnRpY3VsYXIgaGFyZHdhcmUgb2YgdGhlIHRlcm1pbmFsLiAgVGhlIHBhcnQgdG8gdGhlIHJpZ2h0IG1heSBiZSB1c2VkCi0jIGZvciBmbGFncyBpbmRpY2F0aW5nIHNwZWNpYWwgUk9NcywgZXh0cmEgbWVtb3J5LCBwYXJ0aWN1bGFyIHRlcm1pbmFsIG1vZGVzLAotIyBvciB1c2VyIHByZWZlcmVuY2VzLgotIwotIyBBbGwgbmFtZXMgc2hvdWxkIGJlIGluIGxvd2VyIGNhc2UsIGZvciBjb25zaXN0ZW5jeSBpbiB0eXBpbmcuCi0jCi0jIFRoZSBmb2xsb3dpbmcgYXJlIGNvbnZlbnRpb25hbGx5IHVzZWQgc3VmZml4ZXM6Ci0jCS0ycAlIYXMgdHdvIHBhZ2VzIG9mIG1lbW9yeS4gIExpa2V3aXNlIDRwLCA4cCwgZXRjLgotIwktYW0JRW5hYmxlIGF1dG8tbWFyZ2luLgotIwktbQlNb25vY2hyb21lLiAgU3VwcHJlc3MgY29sb3Igc3VwcG9ydAotIwktbWMJTWFnaWMtY29va2llLiAgU29tZSB0ZXJtaW5hbHMgKG5vdGFibHkgb2xkZXIgV3lzZXMpIGNhbgotIwkJb25seSBzdXBwb3J0IG9uZSBhdHRyaWJ1dGUgd2l0aG91dCBtYWdpYy1jb29raWUgbG9zc2FnZS4KLSMJCVRoZWlyIGJhc2UgZW50cnkgaXMgdXN1YWxseSBwYWlyZWQgd2l0aCBhbm90aGVyIHRoYXQKLSMJCXVzZXMgbWFnaWMgY29va2llcyB0byBzdXBwb3J0IG11bHRpcGxlIGF0dHJpYnV0ZXMuCi0jCS1uYW0JTm8gYXV0by1tYXJnaW4gLSBzdXBwcmVzcyA8YW0+IGNhcGFiaWxpdHkKLSMJLW5sCU5vIGxhYmVscyAtIHN1cHByZXNzIHNvZnQgbGFiZWxzCi0jCS1ucwlObyBzdGF0dXMgbGluZSAtIHN1cHByZXNzIHN0YXR1cyBsaW5lCi0jCS1ydglUZXJtaW5hbCBpbiByZXZlcnNlIHZpZGVvIG1vZGUgKGJsYWNrIG9uIHdoaXRlKQotIwktcwlFbmFibGUgc3RhdHVzIGxpbmUuCi0jCS12YglVc2UgdmlzaWJsZSBiZWxsICg8Zmxhc2g+KSByYXRoZXIgdGhhbiA8YmVsPi4KLSMJLXcJV2lkZSAtIGluIDEzMiBjb2x1bW4gbW9kZS4KLSMgSWYgYSBuYW1lIGhhcyBtdWx0aXBsZSBzdWZmaXhlcyBhbmQgb25lIGlzIGEgbGluZSBoZWlnaHQsIHRoYXQgb25lIHNob3VsZAotIyBnbyBmaXJzdC4gIFRodXMgYGFhYS0zMC1zLXJ2JyBpcyByZWNvbW1lbmRlZCBvdmVyIGBhYWEtcy1ydi0zMCcuCi0jCi0jIEVudHJpZXMgd2l0aCBlbWJlZGRlZCBwbHVzIHNpZ25zIGFyZSBkZXNpZ25lZCB0byBiZSBpbmNsdWRlZCB0aHJvdWdoIHVzZS90YwotIyBjYXBhYmlsaXRpZXMsIG5vdCB1c2VkIGFzIHN0YW5kYWxvbmUgZW50cmllcy4KLSMKLSMgVG8gYXZvaWQgc2VhcmNoIGNsYXNoZXMsIHNvbWUgb2xkZXIgYWxsLW51bWVyaWMgbmFtZXMgZm9yIHRlcm1pbmFscyBoYXZlCi0jIGJlZW4gcmVtb3ZlZCAoaS5lLiwgIjMzIiBmb3IgdGhlIE1vZGVsIDMzIFRlbGV0eXBlLCAiMjYyMSIgZm9yIHRoZSBIUDI2MjEpLgotIyBBbGwgcHJpbWFyeSBuYW1lcyBvZiB0ZXJtaW5hbHMgbm93IGhhdmUgYWxwaGFudW1lcmljIHByZWZpeGVzLgotIwotIyBDb21tZW50cyBtYXJrZWQgImVzciIgYXJlIG1vc3RseSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSB0ZXJtY2FwLWNvbXBpbGVyCi0jIGNvZGUgcGFja2FnZWQgd2l0aCBuY3Vyc2VzIGFuZCBjb250ZW1wbGF0aW5nIHRoZSByZXN1bHRpbmcgZXJyb3IgbWVzc2FnZXMuCi0jIEluIG1hbnkgY2FzZXMsIHRoZXNlIGluZGljYXRlZCBvYnZpb3VzIGZpeGVzIHRvIHN5bnRheCBnYXJibGVkIGJ5IHRoZQotIyBjb21wb3NlcnMuICBJbiBhIGZldyBjYXNlcywgSSB3YXMgYWJsZSB0byBkZWR1Y2UgY29ycmVjdGVkIGZvcm1zIGZvciBnYXJibGVkCi0jIGNhcGFiaWxpdGllcyBieSBsb29raW5nIGF0IGNvbnRleHQuICBBbGwgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvcmlnaW5hbAotIyBlbnRyaWVzIGlzIHByZXNlcnZlZCBpbiB0aGUgY29tbWVudHMuCi0jCi0jIEluIHRoZSBjb21tZW50cywgdGVybWluZm8gY2FwYWJpbGl0eSBuYW1lcyBhcmUgYnJhY2tldGVkIHdpdGggPD4gKGFuZ2xlCi0jIGJyYWNrZXRzKS4gIFRlcm1jYXAgY2FwYWJpbGl0eSBuYW1lcyBhcmUgYnJhY2tldGVkIHdpdGggOjogKGNvbG9ucykuCi0jCi0jIElOVEVSUFJFVEFUSU9OIE9GIFVTRVIgQ0FQQUJJTElUSUVTCi0jCi0jIFRoZSBTeXN0ZW0gViBSZWxlYXNlIDQgYW5kIFhQRzQgdGVybWluZm8gZm9ybWF0IGRlZmluZXMgdGVuIHN0cmluZwotIyBjYXBhYmlsaXRpZXMgZm9yIHVzZSBieSBhcHBsaWNhdGlvbnMsIDx1MD4uLi48dTk+LiAgIEluIHRoaXMgZmlsZSwgd2UgdXNlCi0jIGNlcnRhaW4gb2YgdGhlc2UgY2FwYWJpbGl0aWVzIHRvIGRlc2NyaWJlIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90IGNvdmVyZWQKLSMgYnkgdGVybWluZm8uICBUaGUgbWFwcGluZyBpcyBhcyBmb2xsb3dzOgotIwotIwl1OQl0ZXJtaW5hbCBlbnF1aXJlIHN0cmluZyAoZXF1aXYuIHRvIEFOU0kvRUNNQS00OCBEQSkKLSMJdTgJdGVybWluYWwgYW5zd2VyYmFjayBkZXNjcmlwdGlvbgotIwl1NwljdXJzb3IgcG9zaXRpb24gcmVxdWVzdCAoZXF1aXYuIHRvIFZUMTAwL0FOU0kvRUNNQS00OCBEU1IgNikKLSMJdTYJY3Vyc29yIHBvc2l0aW9uIHJlcG9ydCAoZXF1aXYuIHRvIEFOU0kvRUNNQS00OCBDUFIpCi0jCi0jIFRoZSB0ZXJtaW5hbCBlbnF1aXJlIHN0cmluZyA8dTk+IHNob3VsZCBlbGljaXQgYW4gYW5zd2VyYmFjayByZXNwb25zZQotIyBmcm9tIHRoZSB0ZXJtaW5hbC4gIENvbW1vbiB2YWx1ZXMgZm9yIDx1OT4gd2lsbCBiZSBeRSAob24gb2xkZXIgQVNDSUkKLSMgdGVybWluYWxzKSBvciBcRVtjIChvbiBuZXdlciBWVDEwMC9BTlNJL0VDTUEtNDgtY29tcGF0aWJsZSB0ZXJtaW5hbHMpLgotIwotIyBUaGUgY3Vyc29yIHBvc2l0aW9uIHJlcXVlc3QgKDx1Nz4pIHN0cmluZyBzaG91bGQgZWxpY2l0IGEgY3Vyc29yIHBvc2l0aW9uCi0jIHJlcG9ydC4gIEEgdHlwaWNhbCB2YWx1ZSAoZm9yIFZUMTAwIHRlcm1pbmFscykgaXMgXEVbNm4uCi0jCi0jIFRoZSB0ZXJtaW5hbCBhbnN3ZXJiYWNrIGRlc2NyaXB0aW9uICh1OCkgbXVzdCBjb25zaXN0IG9mIGFuIGV4cGVjdGVkCi0jIGFuc3dlcmJhY2sgc3RyaW5nLiAgVGhlIHN0cmluZyBtYXkgY29udGFpbiB0aGUgZm9sbG93aW5nIHNjYW5mKDMpLWxpa2UKLSMgZXNjYXBlczoKLSMKLSMJJWMJQWNjZXB0IGFueSBjaGFyYWN0ZXIKLSMJJVsuLi5dCUFjY2VwdCBhbnkgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHNldAotIwotIyBUaGUgY3Vyc29yIHBvc2l0aW9uIHJlcG9ydCAoPHU2Pikgc3RyaW5nIG11c3QgY29udGFpbiB0d28gc2NhbmYoMyktc3R5bGUKLSMgJWQgZm9ybWF0IGVsZW1lbnRzLiAgVGhlIGZpcnN0IG9mIHRoZXNlIG11c3QgY29ycmVzcG9uZCB0byB0aGUgWSBjb29yZGluYXRlCi0jIGFuZCB0aGUgc2Vjb25kIHRvIHRoZSAlZC4gIElmIHRoZSBzdHJpbmcgY29udGFpbnMgdGhlIHNlcXVlbmNlICVpLCBpdCBpcwotIyB0YWtlbiBhcyBhbiBpbnN0cnVjdGlvbiB0byBkZWNyZW1lbnQgZWFjaCB2YWx1ZSBhZnRlciByZWFkaW5nIGl0ICh0aGlzIGlzCi0jIHRoZSBpbnZlcnNlIHNlbnNlIGZyb20gdGhlIGN1cCBzdHJpbmcpLiAgVGhlIHR5cGljYWwgQ1BSIHZhbHVlIGlzCi0jIFxFWyVpJWQ7JWRSIChvbiBWVDEwMC9BTlNJL0VDTUEtNDgtY29tcGF0aWJsZSB0ZXJtaW5hbHMpLgotIwotIyBUaGVzZSBjYXBhYmlsaXRpZXMgYXJlIHVzZWQgYnkgdGFjaygxbSksIHRoZSB0ZXJtaW5mbyBhY3Rpb24gY2hlY2tlcgotIyAoZGlzdHJpYnV0ZWQgd2l0aCBuY3Vyc2VzIDUuMCkuCi0jCi0jIFRBQlNFVCBGSUxFUwotIwotIyBBbGwgdGhlIGVudHJpZXMgaW4gdGhpcyBmaWxlIGhhdmUgYmVlbiBlZGl0ZWQgdG8gYXNzdW1lIHRoYXQgdGhlIHRhYnNldAotIyBmaWxlcyBkaXJlY3RvcnkgaXMgL3Vzci9sb2NhbC9zaGFyZS90YWJzZXQsIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIEZpbGUgSGllcmFyY2h5Ci0jIFN0YW5kYXJkIGZvciBMaW51eCBhbmQgb3Blbi1zb3VyY2UgQlNEIHN5c3RlbXMuICBTb21lIHZlbmRvcnMgKG5vdGFibHkgU3VuKQotIyB1c2UgL3Vzci9saWIvdGFic2V0IG9yIChtb3JlIHJlY2VudGx5KSAvdXNyL3NoYXJlL2xpYi90YWJzZXQuCi0jCi0jIE5vIGN1cnNlcyBwYWNrYWdlIHdlIGtub3cgb2YgYWN0dWFsbHkgdXNlcyB0aGVzZSBmaWxlcy4gIElmIHRoZWlyIGxvY2F0aW9uCi0jIGlzIGFuIGlzc3VlLCB5b3Ugd2lsbCBoYXZlIHRvIGhhbmQtcGF0Y2ggdGhlIGZpbGUgbG9jYXRpb25zIGJlZm9yZSBjb21waWxpbmcKLSMgdGhpcyBmaWxlLgotIwotIyBSRVFVRVNUIEZPUiBDT05UQUNUIElORk9STUFUSU9OIEFORCBISVNUT1JJQ0FMIE1BVEVSSUFMCi0jCi0jIEFzIHRoZSBBTlNJL0VDTUEtNDggc3RhbmRhcmQgYW5kIHZhcmlhbnRzIHRha2UgZmlybWVyIGhvbGQsIGFuZCBhcwotIyBjaGFyYWN0ZXItY2VsbCB0ZXJtaW5hbHMgYXJlIGluY3JlYXNpbmdseSByZXBsYWNlZCBieSBYIGRpc3BsYXlzLCBtdWNoIG9mCi0jIHRoaXMgZmlsZSBpcyBiZWNvbWluZyBhIGhpc3RvcmljYWwgZG9jdW1lbnQgKHRoaXMgaXMgcGFydCBvZiB0aGUgcmVhc29uIGZvcgotIyB0aGUgbmV3IG9yZ2FuaXphdGlvbiwgd2hpY2ggcHV0cyBBTlNJIHR5cGVzLCB4dGVybSwgVW5peCBjb25zb2xlcywKLSMgYW5kIHZ0MTAwIHVwIGZyb250IGluIGNvbmZpZGVuY2UgdGhhdCB0aGlzIHdpbGwgY2F0Y2ggOTUlIG9mIG5ldyBoYXJkd2FyZSkuCi0jCi0jIEZvciB0aGUgdGVybWluYWwgdHlwZXMgc3RpbGwgYWxpdmUsIEknZCBsaWtlIHRvIGhhdmUgbWFudWZhY3R1cmVyJ3MKLSMgY29udGFjdCBkYXRhIChJbnRlcm5ldCBhZGRyZXNzIGFuZC9vciBzbmFpbC1tYWlsICsgcGhvbmUpLgotIwotIyBJJ20gYWxzbyBpbnRlcmVzdGVkIGluIGVucmljaGluZyB0aGUgY29tbWVudHMgc28gdGhhdCB0aGUgbGF0dGVyIHBvcnRpb25zIG9mCi0jIHRoZSBmaWxlIGRvIGluIGZhY3QgYmVjb21lIGEgcG90dGVkIGhpc3Rvcnkgb2YgVkRUIHRlY2hub2xvZ3kgYXMgc2VlbiBieQotIyBVTklYIGhhY2tlcnMuICBJZGVhbGx5LCBJJ2QgbGlrZSB0aGUgaGVhZGVycyBmb3IgZWFjaCBtYW51ZmFjdHVyZXIgdG8KLSMgaW5jbHVkZSBpdHMgbGl2ZS9kZWFkL291dC1vZi10aGUtYnVzaW5lc3Mgc3RhdHVzLCBhbmQgZm9yIGFzIG1hbnkKLSMgdGVybWluYWwgdHlwZXMgYXMgcG9zc2libGUgdG8gYmUgdGFnZ2VkIHdpdGggaW5mb3JtYXRpb24gbGlrZSB5ZWFycwotIyBvZiBoZWF2aWVzdCB1c2UsIHBvcHVsYXJpdHksIGFuZCBpbnRlcmVzdGluZyBmZWF0dXJlcy4KLSMKLSMgSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBpZGVudGlmeWluZyB0aGUgb2JzY3VyZSBlbnRyaWVzIGxpc3RlZCB1bmRlcgotIyBgTWlzY2VsbGFuZW91cyBvYnNvbGV0ZSB0ZXJtaW5hbHMsIG1hbnVmYWN0dXJlcnMgdW5rbm93bicgYmVmb3JlIHRoZSB0cmliYWwKLSMgd2lzZG9tIGFib3V0IHRoZW0gZ2V0cyBsb3N0LiAgSWYgeW91IGtub3cgYSBsb3QgYWJvdXQgb2JzY3VyZSBvbGQgdGVybWluYWxzLAotIyBwbGVhc2UgZ28gdG8gdGhlIHRlcm1pbmZvIHJlc291cmNlIHBhZ2UsIGdyYWIgdGhlIFVGTyBmaWxlICh1Zm8udGkpLCBhbmQKLSMgZXllYmFsbCBpdCBmb3IgdGhpbmdzIHlvdSBjYW4gaWRlbnRpZnkgYW5kIGRlc2NyaWJlLgotIwotIyBJZiB5b3UgaGF2ZSBiZWVuIGFyb3VuZCBsb25nIGVub3VnaCB0byBjb250cmlidXRlLCBwbGVhc2UgcmVhZCB0aGUgZmlsZQotIyB3aXRoIHRoaXMgaW4gbWluZCBhbmQgc2VuZCBtZSB5b3VyIGFubm90YXRpb25zLgotIwotIyBDT1BZUklHSFRTIEFORCBPVEhFUiBERUxVU0lPTlMKLSMKLSMgVGhlIEJTRCBhbmNlc3RvciBvZiB0aGlzIGZpbGUgaGFkIGEgc3RhbmRhcmQgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZgotIyBDYWxpZm9ybmlhIGNvcHlyaWdodCB3aXRoIGRhdGVzIGZyb20gMTk4MCB0byAxOTkzLgotIwotIyBTb21lIGluZm9ybWF0aW9uIGhhcyBiZWVuIG1lcmdlZCBpbiBmcm9tIGEgdGVybWluZm8gZmlsZSBTQ08gZGlzdHJpYnV0ZXMuCi0jIEl0IGhhcyBhbiBvYm5veGlvdXMgYm9pbGVycGxhdGUgY29weXJpZ2h0IHdoaWNoIEknbSBpZ25vcmluZyBiZWNhdXNlIHRoZXkKLSMgdG9vayBzbyBtdWNoIG9mIHRoZSBjb250ZW50IGZyb20gdGhlIGFuY2VzdHJhbCBCU0QgdmVyc2lvbnMgb2YgdGhpcyBmaWxlCi0jIGFuZCBkaWRuJ3QgYXR0cmlidXRlIGl0LCB0aGVyZWJ5IHZpb2xhdGluZyB0aGUgQlNEIFJlZ2VudHMnIGNvcHlyaWdodC4KLSMKLSMgTm90IHRoYXQgYW55b25lIHNob3VsZCBjYXJlLiAgSG93ZXZlciBtYW55IHZhbGlkIGZ1bmN0aW9ucyBjb3B5cmlnaHRzIG1heQotIyBzZXJ2ZSwgcHV0dGluZyBvbmUgb24gYSB0ZXJtY2FwL3Rlcm1pbmZvIGZpbGUgd2l0aCBodW5kcmVkcyBvZiBhbm9ueW1vdXMKLSMgY29udHJpYnV0b3JzIG1ha2VzIGFib3V0IGFzIG11Y2ggc2Vuc2UgYXMgY29weXJpZ2h0aW5nIGEgd2FsbC1mdWxsIG9mCi0jIGdyYWZmaXRpIC0tIGl0J3MgbGVnYWxseSBkdWJpb3VzLCBldGhpY2FsbHkgYm9ndXMsIGFuZCBwYXRlbnRseSByaWRpY3Vsb3VzLgotIwotIyBUaGlzIGZpbGUgZGVsaWJlcmF0ZWx5IGhhcyBubyBjb3B5cmlnaHQuICBJdCBiZWxvbmdzIHRvIG5vIG9uZSBhbmQgZXZlcnlvbmUuCi0jIElmIHlvdSBjbGFpbSB5b3Ugb3duIGl0LCB5b3Ugd2lsbCBtZXJlbHkgc3VjY2VlZCBpbiBsb29raW5nIGxpa2UgYSBmb29sLgotIyBVc2UgaXQgYXMgeW91IGxpa2UuICBVc2UgaXQgYXQgeW91ciBvd24gcmlzay4gIENvcHkgYW5kIHJlZGlzdHJpYnV0ZSBmcmVlbHkuCi0jIFRoZXJlIGFyZSBubyBndWFyYW50ZWVzIGFueXdoZXJlLiAgU3ZhaGEhCi0jCi0KLSMjIyMjIyMjIEFOU0ksIFVOSVggQ09OU09MRSwgQU5EIFNQRUNJQUwgVFlQRVMKLSMKLSMgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0ZXJtaW5hbCBjbGFzc2VzIGFuZCBicmFuZHMgdGhhdCBhcmUgc3RpbGwKLSMgcXVpdGUgY29tbW9uLgotIwotCi0jIyMjIFNwZWNpYWxzCi0jCi0jIFNwZWNpYWwgInRlcm1pbmFscyIuICBUaGVzZSBhcmUgdXNlZCB0byBsYWJlbCB0dHkgbGluZXMgd2hlbiB5b3UgZG9uJ3QKLSMga25vdyB3aGF0IGtpbmQgb2YgdGVybWluYWwgaXMgb24gaXQuICBUaGUgY2hhcmFjdGVyaXN0aWNzIG9mIGFuIHVua25vd24KLSMgdGVybWluYWwgYXJlIHRoZSBsb3dlc3QgY29tbW9uIGRlbm9taW5hdG9yIC0gdGhleSBsb29rIGFib3V0IGxpa2UgYSB0aSA3MDAuCi0jCi0KLWR1bWJ8ODAtY29sdW1uIGR1bWIgdHR5LAotCWFtLAotCWNvbHMjODAsCi0JYmVsPV5HLCBjcj1eTSwgY3VkMT1eSiwgaW5kPV5KLAotdW5rbm93bnx1bmtub3duIHRlcm1pbmFsIHR5cGUsCi0JZ24sIHVzZT1kdW1iLAotbHByfHByaW50ZXJ8bGluZSBwcmludGVyLAotCU9UYnMsIGhjLCBvcywKLQljb2xzIzEzMiwgbGluZXMjNjYsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgZmY9XkwsIGluZD1eSiwKLWdsYXNzdHR5fGNsYXNzaWMgZ2xhc3MgdHR5IGludGVycHJldGluZyBBU0NJSSBjb250cm9sIGNoYXJhY3RlcnMsCi0JT1RicywgYW0sCi0JY29scyM4MCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgaHQ9XkksIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBuZWw9Xk1eSiwgLmticz1eSCwKLQotdmFuaWxsYXxkdW1iIHR0eSwKLQlPVGJzLAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGluZD1eSiwKLQotIyBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyAiZHVtYiIsIGJ1dCB3aXRoIG5vIHByZXNwZWNpZmllZCB3aWR0aC4KLSMgREVMIGFuZCBeQyBhcmUgaGFyZGNvZGVkIHRvIGFjdCBhcyBraWxsIGNoYXJhY3RlcnMuCi0jIF5EIGFjdHMgYXMgYSBsaW5lIGJyZWFrIChqdXN0IGxpa2UgbmV3bGluZSkuCi0jIEl0IGFsc28gaW50ZXJwcmV0cwotIyAgICAgIFwwMzNdO3h4eFwwMDcgCi0jIGZvciBjb21wYXRpYmlsaXR5IHdpdGggeHRlcm0gLVRECi05dGVybXxQbGFuOSB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgWCwKLQlhbSwKLQlPVG5sPV5KLCBiZWw9XkcsIGN1ZDE9XkosCi0KLSMjIyMgQU5TSS5TWVMvSVNPIDY0MjkvRUNNQS00OCBDYXBhYmlsaXRpZXMKLSMKLSMgU2VlIHRoZSBlbmQtb2YtZmlsZSBjb21tZW50IGZvciBtb3JlIG9uIHRoZXNlLgotIwotCi0jIEFOU0kgY2FwYWJpbGl0aWVzIGFyZSBicm9rZW4gdXAgaW50byBwaWVjZXMsIHNvIHRoYXQgYSB0ZXJtaW5hbAotIyBpbXBsZW1lbnRpbmcgc29tZSBBTlNJIHN1YnNldCBjYW4gdXNlIG1hbnkgb2YgdGhlbS4KLWFuc2krbG9jYWwxLAotCWN1YjE9XEVbRCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsIGN1dTE9XEVbQSwKLWFuc2krbG9jYWwsCi0JY3ViPVxFWyVwMSVkRCwgY3VkPVxFWyVwMSVkQiwgY3VmPVxFWyVwMSVkQywKLQljdXU9XEVbJXAxJWRBLCB1c2U9YW5zaStsb2NhbDEsCi1hbnNpK3RhYnMsCi0JY2J0PVxFW1osIGh0PV5JLCBodHM9XEVILCB0YmM9XEVbMmcsCi1hbnNpK2luaXR0YWJzLAotCWl0IzgsIHVzZT1hbnNpK3RhYnMsCi1hbnNpK2VyYXNlLAotCWNsZWFyPVxFW0hcRVtKLCBlZD1cRVtKLCBlbD1cRVtLLAotYW5zaStyY2EsCi0JaHBhPVxFWyVwMSV7MX0lKyVkRywgdnBhPVxFWyVwMSV7MX0lKyVkZCwKLWFuc2krY3VwLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgaG9tZT1cRVtILAotYW5zaStyZXAsCi0JcmVwPSVwMSVjXEVbJXAyJXsxfSUtJWRiLAotYW5zaStpZGwxLAotCWRsMT1cRVtNLCBpbDE9XEVbTCwKLWFuc2kraWRsLAotCWRsPVxFWyVwMSVkTSwgaWw9XEVbJXAxJWRMLCB1c2U9YW5zaStpZGwxLAotYW5zaStpZGMsCi0JZGNoMT1cRVtQLCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIHJtaXI9XEU2LCBzbWlyPVxFNiwKLWFuc2krYXJyb3dzLAotCWticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlraG9tZT1cRVtILAotYW5zaStzZ3J8YW5zaSBncmFwaGljIHJlbmRpdGlvbnMsCi0JYmxpbms9XEVbNW0sIGludmlzPVxFWzhtLCByZXY9XEVbN20sCi0Jc2dyPVxFWzAlPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttLAotCXNncjA9XEVbMG0sCi1hbnNpK3NncnNvfGFuc2kgc3RhbmRvdXQgb25seSwKLQlybXNvPVxFW20sIHNtc289XEVbN20sCi1hbnNpK3NncnVsfGFuc2kgdW5kZXJsaW5lIG9ubHksCi0Jcm11bD1cRVttLCBzbXVsPVxFWzRtLAotYW5zaStzZ3Jib2xkfGFuc2kgZ3JhcGhpYyByZW5kaXRpb25zOyBhc3N1bWluZyB0ZXJtaW5hbCBoYXMgYm9sZDsgbm90IGRpbSwKLQlib2xkPVxFWzFtLAotCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7JT8lcDcldDg7JTttLAotCXVzZT1hbnNpK3NnciwgdXNlPWFuc2krc2dyc28sIHVzZT1hbnNpK3NncnVsLAotYW5zaStzZ3JkaW18YW5zaSBncmFwaGljIHJlbmRpdGlvbnM7IGFzc3VtaW5nIHRlcm1pbmFsIGhhcyBkaW07IG5vdCBib2xkLAotCWRpbT1cRVsybSwKLQlzZ3I9XEVbJT8lcDEldDc7JTslPyVwMiV0NDslOyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwNSV0MjslOyU/JXA3JXQ4OyU7bSwKLQl1c2U9YW5zaStzZ3IsIHVzZT1hbnNpK3NncnNvLCB1c2U9YW5zaStzZ3J1bCwKLWFuc2krcHB8YW5zaSBwcmludGVyIHBvcnQsCi0JbWMwPVxFWzBpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwKLWFuc2krY3NyfGFuc2kgc2Nyb2xsLXJlZ2lvbiBwbHVzIGN1cnNvciBzYXZlICYgcmVzdG9yZSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIHJjPVxFOCwgc2M9XEU3LAotCi0jIFRoZSBJQk0gUEMgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQuICBQbHVnIHRoaXMgaW50byBhbnkgSW50ZWwgY29uc29sZSBlbnRyeS4KLSMgV2UgdXNlIFxFWzExbSBmb3Igcm1hY3MgcmF0aGVyIHRoYW4gXEVbMTJtIHNvIHRoZSA8YWNzYz4gc3RyaW5nIGNhbiB1c2UgdGhlCi0jIFJPTSBncmFwaGljcyBmb3IgY29udHJvbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgdGhlIGRpYW1vbmQsIHVwLSBhbmQgZG93bi1hcnJvdy4KLSMgVGhpcyB3b3JrcyB3aXRoIHRoZSBTeXN0ZW0gViwgTGludXgsIGFuZCBCU0RJIGNvbnNvbGVzLiAgSXQncyBhIHNhZmUgYmV0IHRoaXMKLSMgd2lsbCB3b3JrIHdpdGggYW55IEludGVsIGNvbnNvbGUsIHRoZXkgYWxsIHNlZW0gdG8gaGF2ZSBpbmhlcml0ZWQgXEVbMTFtCi0jIGZyb20gdGhlIEFOU0kuU1lTIGRlLWZhY3RvIHN0YW5kYXJkLgota2xvbmUrYWNzfGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGZvciBhbnNpLnN5cyBkaXNwbGF5cywKLQlhY3NjPStcMDIwXCxcMDIxLVwwMzAuXlkwXDMzM2BcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCi0Jcm1hY3M9XEVbMTBtLCBzbWFjcz1cRVsxMW0sCi0KLSMgSGlnaGxpZ2h0IGNvbnRyb2xzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEFOU0kuU1lTIHN0YW5kYXJkLiAgTW9zdAotIyBjb25zb2xlIGRyaXZlcnMgZm9yIEludGVsIGJveGVzIG9iZXkgdGhlc2UuICBNYWtlcyB0aGUgc2FtZSBhc3N1bXB0aW9uCi0jIGFib3V0IFxFWzExbSBhcyBrbG9uZSthY3MuICBUcnVlIEFOU0kvRUNNQS00OCB3b3VsZCBoYXZlIDxybXNvPVxFWzI3bT4sCi0jIDxybXVsPVxFWzI0bT4sIGJ1dCB0aGlzIGlzbid0IGEgZG9jdW1lbnRlZCBmZWF0dXJlIG9mIEFOU0kuU1lTLgota2xvbmUrc2dyfGF0dHJpYnV0ZSBjb250cm9sIGZvciBhbnNpLnN5cyBkaXNwbGF5cywKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgcmV2PVxFWzdtLCBybXBjaD1cRVsxMG0sCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7JT8lcDkldDsxMSU7bSwKLQlzZ3IwPVxFWzA7MTBtLCBzbXBjaD1cRVsxMW0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0JdXNlPWtsb25lK2FjcywKLQotIyBNb3N0IEludGVsIGJveGVzIGRvIG5vdCB0cmVhdCAiaW52aXMiIChpbnZpc2libGUpIHRleHQuCi1rbG9uZStzZ3I4fGF0dHJpYnV0ZSBjb250cm9sIGZvciBhbnNpLnN5cyBkaXNwbGF5cywKLQlpbnZpcz1cRVs4bSwKLQlzZ3I9XEVbMDsxMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTElO20sCi0JdXNlPWtsb25lK3NnciwKLQotIyBIaWdobGlnaHQgY29udHJvbHMgY29ycmVzcG9uZGluZyB0byB0aGUgQU5TSS5TWVMgc3RhbmRhcmQuICAqQWxsKgotIyBjb25zb2xlIGRyaXZlcnMgZm9yIEludGVsIGJveGVzIG9iZXkgdGhlc2UuICBEb2VzIG5vdCBhc3N1bWUgXEVbMTFtIHdpbGwKLSMgd29yazsgdXNlcyBcRVsxMm0gaW5zdGVhZCwgd2hpY2ggaXMgcHJldHR5IGJ1bGxldHByb29mIGJ1dCBsb3NlcyB5b3UgdGhlIEFDUwotIyBkaWFtb25kIGFuZCBhcnJvdyBjaGFyYWN0ZXJzIHVuZGVyIGN1cnNlcy4KLWtsb25lK3Nnci1kdW1ifGF0dHJpYnV0ZSBjb250cm9sIGZvciBhbnNpLnN5cyBkaXNwbGF5cyAobm8gRVNDIFsgMTEgbSksCi0JYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGludmlzPVxFWzhtLCByZXY9XEVbN20sIHJtc289XEVbbSwKLQlybXVsPVxFW20sCi0Jc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTslPyVwOSV0OzEyJTttLAotCXNncjA9XEVbMDsxMG0sIHNtYWNzPVxFWzEybSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl1c2U9a2xvbmUrYWNzLAotCi0jIEtPSTgtUiAoUkZDMTQ4OSkgYWNzIChhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCkKLSMgRnJvbTogUWluZyBMb25nIDxxaW5nbG9uZ0BCb2xpem0uaWhlcC5zdT4sIDI0IEZlYiAxOTk2Lgota2xvbmUra29pOGFjc3xhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCBmb3IgYW5zaS5zeXMgZGlzcGxheXMgd2l0aCBLT0k4IGNoYXJzZXQsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDM2Ll5fMFwyMTVgXDAwNGFcMjM3ZlwyMzRnXDIzMmhcMjIyaVwyMjBqXDIwNWtcMjAzbFwyMDJtXDIwNG5cMjEyb1wyMTNwXDIxNnFcMHJcMjE3c1wyMTR0XDIwNnVcMjA3dlwyMTB3XDIxMXhcMjAxeVwyMzB6XDIzMXtcMjY3fFwyNzR9TH5cMjI1LAotCXJtYWNzPVxFWzEwbSwgc21hY3M9XEVbMTFtLAotCi0jIEFOU0kuU1lTIGNvbG9yIGNvbnRyb2wuICBUaGUgc2V0YWIvc2V0YWYgY2FwcyBkZXBlbmQgb24gdGhlIGNvaW5jaWRlbmNlCi0jIGJldHdlZW4gU1ZyNC9YUEc0J3MgY29sb3IgbnVtYmVycyBhbmQgQU5TSS5TWVMgYXR0cmlidXRlcy4gIEhlcmUgYXJlIGxvbmdlcgotIyBidXQgZXF1aXZhbGVudCBzdHJpbmdzIHRoYXQgZG9uJ3QgcmVseSBvbiB0aGF0IGNvaW5jaWRlbmNlOgotIyBzZXRiPVxFWzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0jIHNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLSMgVGhlIERPUyA1IG1hbnVhbCBhc3NlcnRzIHRoYXQgdGhlc2Ugc2VxdWVuY2VzIG1lZXQgdGhlIElTTyA2NDI5IHN0YW5kYXJkLgotIyBUaGV5IG1hdGNoIGEgc3Vic2V0IG9mIEVDTUEtNDguCi1rbG9uZStjb2xvcnxjb2xvciBjb250cm9sIGZvciBhbnNpLnN5cyBhbmQgSVNPNjQyOS1jb21wYXRpYmxlIGRpc3BsYXlzLAotCWNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0Jb3A9XEVbMzc7NDBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi0jIFRoaXMgaXMgYmV0dGVyIHRoYW4ga2xvbmUrY29sb3IsIGl0IGRvZXNuJ3QgYXNzdW1lIHdoaXRlLW9uLWJsYWNrIGFzIHRoZQotIyBkZWZhdWx0IGNvbG9yIHBhaXIsICBidXQgbWFueSBgQU5TSScgdGVybWluYWxzIGRvbid0IGdyb2sgdGhlIDxvcD4gY2FwLgotZWNtYStjb2xvcnxjb2xvciBjb250cm9sIGZvciBFQ01BLTQ4LWNvbXBhdGlibGUgdGVybWluYWxzLAotCUFYLAotCWNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0Jb3A9XEVbMzk7NDltLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi0jIEF0dHJpYnV0ZSBjb250cm9sIGZvciBFQ01BLTQ4LWNvbXBhdGlibGUgdGVybWluYWxzCi1lY21hK3NncnxhdHRyaWJ1dGUgY2FwYWJpbGl0aWVzIGZvciB0cnVlIEVDTUEtNDggdGVybWluYWxzLAotCXJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwgdXNlPWtsb25lK3NncjgsCi0KLSMgRm9yIGNvbXBhcmlzb24sIGhlcmUgYXJlIGFsbCB0aGUgY2FwYWJpbGl0aWVzIGltcGxpZWQgYnkgdGhlIEludGVsCi0jIEJpbmFyeSBDb21wYXRpYmlsaXR5IFN0YW5kYXJkIChsZXZlbCAyKSB0aGF0IGZpdCB3aXRoaW4gdGVybWluZm8uCi0jIEZvciBtb3JlIGRldGFpbCBvbiB0aGlzIHJhdGhlciBwYXRoZXRpYyBzdGFuZGFyZCwgc2VlIHRoZSBjb21tZW50cwotIyBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgotaWJjczJ8SW50ZWwgQmluYXJ5IENvbXBhdGliaWxpdHkgU3RhbmRhcmQgcHJlc2NyaXB0aW9ucywKLQljYnQ9XEVbWiwgY2xlYXI9XEVjLCBjdWI9XEVbJXAxJWRELCBjdWQ9XEVbJXAxJWRCLAotCWN1Zj1cRVslcDElZEMsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKLQlkY2g9XEVbJXAxJWRQLCBkaXNwYz1cRT0lcDElZGcsIGVjaD1cRVslcDElZFgsCi0JaHBhPVxFWyVpJXAxJWRHLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsCi0JaW5kbj1cRVslcDElZFMsIHJjPVxFNywgcmluPVxFWyVwMSVkVCwgcm1hbT1cRVs/N2wsIHNjPVxFNywKLQlzbWFtPVxFWz83aCwgdGJjPVxFW2csIHZwYT1cRVslaSVwMSVkZCwKLQotIyMjIyBBTlNJL0VDTUEtNDggdGVybWluYWxzIGFuZCB0ZXJtaW5hbCBlbXVsYXRvcnMKLSMKLSMgU2VlIG5lYXIgdGhlIGVuZCBvZiB0aGlzIGZpbGUgZm9yIGRldGFpbHMgb24gQU5TSSBjb25mb3JtYW5jZS4KLSMgRG9uJ3QgbWVzcyB3aXRoIHRoZXNlIGVudHJpZXMhICBMb3RzIG9mIG90aGVyIGVudHJpZXMgZGVwZW5kIG9uIHRoZW0hCi0jCi0jIFRoaXMgc2VjdGlvbiBsaXN0cyBlbnRyaWVzIGluIGEgbGVhc3QtY2FwYWJsZSB0byBtb3N0LWNhcGFibGUgb3JkZXIuCi0jIGlmIHlvdSdyZSBpbiBkb3VidCBhYm91dCB3aGF0IGBBTlNJJyBtYXRjaGVzIHlvdXJzLCB0cnkgdGhlbSBpbiB0aGF0Ci0jIG9yZGVyIGFuZCBiYWNrIG9mZiBmcm9tIHRoZSBmaXJzdCB0aGF0IGJyZWFrcy4KLQotIyBhbnNpLW1yIGlzIGZvciBBTlNJIHRlcm1pbmFscyB3aXRoIE9OTFkgcmVsYXRpdmUgY3Vyc29yIGFkZHJlc3NpbmcKLSMgYW5kIG1vcmUgdGhhbiBvbmUgcGFnZSBvZiBtZW1vcnkuICBJdCB1c2VzIGxvY2FsIG1vdGlvbnMgaW5zdGVhZCBvZgotIyBkaXJlY3QgY3Vyc29yIGFkZHJlc3NpbmcsIGFuZCBtYWtlcyBhbG1vc3Qgbm8gYXNzdW1wdGlvbnMuIEl0IGRvZXMKLSMgYXNzdW1lIGF1dG8gbWFyZ2lucywgbm8gcGFkZGluZyBhbmQvb3IgeG9uL3hvZmYsIGFuZCBhIDI0eDgwIHNjcmVlbi4KLWFuc2ktbXJ8bWVtIHJlbCBjdXAgYW5zaSwKLQlhbSwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB1c2U9dmFuaWxsYSwgdXNlPWFuc2krZXJhc2UsCi0JdXNlPWFuc2krbG9jYWwxLAotCi0jIGFuc2ktbWluaSBpcyBhIGJhcmUgbWluaW11bSBBTlNJIHRlcm1pbmFsLiBUaGlzIHNob3VsZCB3b3JrIG9uIGFueXRoaW5nLCBidXQKLSMgYmV3YXJlIG9mIHNjcmVlbiBzaXplIHByb2JsZW1zIGFuZCBtZW1vcnkgcmVsYXRpdmUgY3Vyc29yIGFkZHJlc3NpbmcuCi1hbnNpLW1pbml8YW55IGFuc2kgdGVybWluYWwgd2l0aCBwZXNzaW1pc3RpYyBhc3N1bXB0aW9ucywKLQlhbSwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB1c2U9dmFuaWxsYSwgdXNlPWFuc2krY3VwLAotCXVzZT1hbnNpK2VyYXNlLAotCi0jIGFuc2ktbXRhYnMgYWRkcyByZWxhdGl2ZSBhZGRyZXNzaW5nIGFuZCBtaW5pbWFsIHRhYiBzdXBwb3J0Ci1hbnNpLW10YWJzfGFueSBhbnNpIHRlcm1pbmFsIHdpdGggcGVzc2ltaXN0aWMgYXNzdW1wdGlvbnMsCi0JaXQjOCwKLQlodD1eSSwgdXNlPWFuc2krbG9jYWwxLCB1c2U9YW5zaS1taW5pLAotCi0jIEFOU0kgWDMuNjQgZnJvbSBlbW9yeSFtbGhoaCAoSHVnaCBIYW5zYXJkKSB2aWEgQlJMCi0jCi0jIFRoZSBmb2xsb3dpbmcgaXMgYW4gZW50cnkgZm9yIHRoZSBmdWxsIEFOU0kgMy42NCAoMTk3NykuICBJdCBsYWNrcwotIyBwYWRkaW5nLCBidXQgbW9zdCB0ZXJtaW5hbHMgdXNpbmcgdGhlIHN0YW5kYXJkIGFyZSAiZmFzdCIgZW5vdWdoCi0jIG5vdCB0byByZXF1aXJlIGFueSAtLSBldmVuIGF0IDk2MDAgYnBzLiAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywKLSMgdHJ5IGluY2x1ZGluZyB0aGUgcGFkZGluZyBzcGVjaWZpY2F0aW9ucy4KLSMKLSMgTm90ZTogdGhlIDphczogYW5kIDphZTogc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCBoZXJlLCBmb3IKLSMgdGhlIGF2YWlsYWJsZSB0ZXJtY2FwIGRvY3VtZW50YXRpb24gZG9lcyBub3QgbWFrZSBjbGVhciBXSElDSCBhbHRlcm5hdGUKLSMgY2hhcmFjdGVyIHNldCB0byBzcGVjaWZ5LiAgQU5TSSAzLjY0IHNlZW1zIHRvIG1ha2UgYWxsb3dhbmNlcyBmb3Igc2V2ZXJhbC4KLSMgUGxlYXNlIG1ha2UgdGhlIGFwcHJvcHJpYXRlIGFkanVzdG1lbnRzIHRvIGZpdCB5b3VyIG5lZWRzIC0tIHRoYXQgaXMKLSMgaWYgeW91IHdpbGwgYmUgdXNpbmcgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXRzLgotIwotIyBUaGVyZSBhcmUgdmVyeSBmZXcgdGVybWluYWxzIHJ1bm5pbmcgdGhlIGZ1bGwgQU5TSSAzLjY0IHN0YW5kYXJkLAotIyBzbyBJIGNvdWxkIG9ubHkgdGVzdCB0aGlzIGVudHJ5IG9uIG9uZSB2ZXJpZmllZCB0ZXJtaW5hbCAoVmlzdWFsIDEwMikuCi0jIEkgd291bGQgYXBwcmVjaWF0ZSB0aGUgcmVzdWx0cyBvbiBvdGhlciB0ZXJtaW5hbHMgc2VudCB0byBtZS4KLSMKLSMgUGxlYXNlIHJlcG9ydCBjb21tZW50cywgY2hhbmdlcywgYW5kIHByb2JsZW1zIHRvOgotIwotIyBVLlMuIE1BSUw6ICAgSHVnaCBIYW5zYXJkCi0jICAgICAgICAgICAgICBCb3g6IDIyODMwCi0jICAgICAgICAgICAgICBFbW9yeSBVbml2ZXJzaXR5Ci0jICAgICAgICAgICAgICBBdGxhbnRhLCBHQS4gMzAzMjIuCi0jCi0jIFVTRU5FVCB7YWtndWEsbXNkYyxzYjEsc2I2LGdhdGVjaH0hZW1vcnkhbWxoaGguCi0jCi0jIChBZGRlZCB2dDEwMCA8cmM+LDxzYz4gdG8gcXVpZXQgYSB0aWMgd2FybmluZyAtLWVzcikKLWFuc2k3N3xhbnNpIDMuNjQgc3RhbmRhcmQgMTk3NyB2ZXJzaW9uLAotCU9UYnMsIGFtLCBtaXIsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRVs7SFxFWzJKLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNJDw1Ki8+LCBlZD1cRVtKLCBlbD1cRVtLLAotCWhvbWU9XEVbSCwgaHQ9XkksIGlsMT1cRVtMJDw1Ki8+LCBpbmQ9XEVELCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFT1AsCi0Ja2YyPVxFT1IsIGtmND1cRU9TLCBraG9tZT1cRVtILCBuZWw9Xk1cRUQsIHJjPVxFOCwgcmk9XEVNLAotCXJtaXI9XEVbNGwsIHJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsIHNtaXI9XEVbNGgsCi0Jc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQotIyBQcm9jb21tIGFuZCBzb21lIG90aGVyIEFOU0kgZW11bGF0aW9ucyBkb24ndCByZWNvZ25pemUgYWxsIG9mIHRoZSBBTlNJLQotIyBzdGFuZGFyZCBjYXBhYmlsaXRpZXMuICBUaGlzIGVudHJ5IGRlbGV0ZXMgPGN1dT4sIDxjdWY+LCA8Y3VkPiwgPGN1Yj4sIGFuZAotIyA8dnBhPi88aHBhPiBjYXBhYmlsaXRpZXMsIGZvcmNpbmcgY3Vyc2VzIHRvIHVzZSByZXBldGl0aW9ucyBvZiA8Y3V1MT4sCi0jIDxjdWYxPiwgPGN1ZDE+IGFuZCA8Y3ViMT4uICBBbHNvIGRlbGV0ZWQgPGljaD4gYW5kIDxpY2gxPiwgYXMgUU1vZGVtIHVwIHRvCi0jIDUuMDMgZG9lc24ndCByZWNvZ25pemUgdGhlc2UuICBGaW5hbGx5LCB3ZSBkZWxldGUgPHJlcD4gYW5kIDxyaT4sIHdoaWNoIHNlZW0KLSMgdG8gY29uZnVzZSBtYW55IGVtdWxhdG9ycy4gIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW4gY291bnQgb24gdGhlc2UgcHJvZ3JhbXMKLSMgZG9pbmcgPHJtYWNzPi88c21hY3M+LzxzZ3I+LiBPbGRlciB2ZXJzaW9ucyBvZiB0aGlzIGVudHJ5IGZlYXR1cmVkCi0jIDxpbnZpcz1cRVs5bT4sIGJ1dCA8aW52aXM9XEVbOG0+IG5vdyBzZWVtcyB0byBiZSBtb3JlIGNvbW1vbiB1bmRlcgotIyBBTlNJLlNZUyBpbmZsdWVuY2UuCi0jIEZyb206IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBPY3QgMzAgMTk5NQotcGNhbnNpLW18cGNhbnNpLW1vbm98aWJtLXBjIHRlcm1pbmFsIHByb2dyYW1zIGNsYWltaW5nIHRvIGJlIGFuc2kgKG1vbm8gbW9kZSksCi0JT1RicywgYW0sIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sIGN1YjE9XEVbRCwKLQljdWQxPVxFW0IsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCi0JZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwKLQlodHM9XEVILCBpbDE9XEVbTCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwgdGJjPVxFWzJnLAotCXVzZT1rbG9uZStzZ3ItZHVtYiwKLXBjYW5zaS0yNS1tfHBjYW5zaTI1bXxpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgd2l0aCAyNSBsaW5lcyAobW9ubyBtb2RlKSwKLQlsaW5lcyMyNSwgdXNlPXBjYW5zaS1tLAotcGNhbnNpLTMzLW18cGNhbnNpMzNtfGlibS1wYyB0ZXJtaW5hbCBwcm9ncmFtcyB3aXRoIDMzIGxpbmVzIChtb25vIG1vZGUpLAotCWxpbmVzIzMzLCB1c2U9cGNhbnNpLW0sCi1wY2Fuc2ktNDMtbXxhbnNpNDNtfGlibS1wYyB0ZXJtaW5hbCBwcm9ncmFtcyB3aXRoIDQzIGxpbmVzIChtb25vIG1vZGUpLAotCWxpbmVzIzQzLCB1c2U9cGNhbnNpLW0sCi0jIFRoZSBjb2xvciB2ZXJzaW9ucy4gIEFsbCBQQyBlbXVsYXRvcnMgZG8gY29sb3IuLi4KLXBjYW5zaXxpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgY2xhaW1pbmcgdG8gYmUgYW5zaSwKLQl1c2U9a2xvbmUrY29sb3IsIHVzZT1wY2Fuc2ktbSwKLXBjYW5zaS0yNXxwY2Fuc2kyNXxpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgd2l0aCAyNSBsaW5lcywKLQlsaW5lcyMyNSwgdXNlPXBjYW5zaSwKLXBjYW5zaS0zM3xwY2Fuc2kzM3xpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgd2l0aCAzMyBsaW5lcywKLQlsaW5lcyMzMywgdXNlPXBjYW5zaSwKLXBjYW5zaS00M3xwY2Fuc2k0M3xpYm0tcGMgdGVybWluYWwgcHJvZ3JhbXMgd2l0aCA0MyBsaW5lcywKLQlsaW5lcyM0MywgdXNlPXBjYW5zaSwKLQotIyBhbnNpLW0gLS0gZnVsbCBBTlNJIFgzLjY0IHdpdGggQU5TSS5TWVMtY29tcGF0aWJsZSBhdHRyaWJ1dGVzLCBubyBjb2xvci4KLSMgSWYgeW91IHdhbnQgcG91bmQgc2lnbnMgcmF0aGVyIHRoYW4gZG9sbGFycywgcmVwbGFjZSBgQicgd2l0aCBgQScKLSMgaW4gdGhlIDxzMGRzPiwgPHMxZHM+LCA8czJkcz4sIGFuZCA8czNkcz4gY2FwYWJpbGl0aWVzLgotIyBGcm9tOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gTm92IDYgMTk5NQotYW5zaS1tfGFuc2ktbW9ub3xBTlNJIFgzLjY0LTE5NzkgdGVybWluYWwgd2l0aCBBTlNJLlNZUyBjb21wYXRpYmxlIGF0dHJpYnV0ZXMsCi0JbWM1aSwKLQljdWI9XEVbJXAxJWRELCBjdWQ9XEVbJXAxJWRCLCBjdWY9XEVbJXAxJWRDLAotCWN1dT1cRVslcDElZEEsIGRjaD1cRVslcDElZFAsIGRsPVxFWyVwMSVkTSwKLQllY2g9XEVbJXAxJWRYLCBlbDE9XEVbMUssIGhwYT1cRVslaSVwMSVkRywgaHQ9XEVbSSwKLQlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGluZG49XEVbJXAxJWRTLCBrYnM9XkgsCi0Ja2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtpY2gxPVxFW0wsIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBuZWw9XHJcRVtTLAotCXJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmluPVxFWyVwMSVkVCwgczBkcz1cRShCLAotCXMxZHM9XEUpQiwgczJkcz1cRSpCLCBzM2RzPVxFK0IsIHRiYz1cRVsyZywKLQl2cGE9XEVbJWklcDElZGQsIHVzZT1wY2Fuc2ktbSwKLQotYW5zaStlbnF8bmN1cnNlcyBleHRlbnNpb24gZm9yIEFOU0kgRU5RLAotCXU2PVxFWyVpJWQ7JWRSLCB1Nz1cRVs2biwgdTg9XEVbPyVbOzAxMjM0NTY3ODldYywKLQl1OT1cRVtjLAotCi0jIGFuc2kgLS0gdGhpcyB0ZXJtaW5mbyBleHByZXNzZXMgdGhlIGxhcmdlc3Qgc3Vic2V0IG9mIFgzLjY0IHRoYXQgd2lsbCBmaXQgaW4KLSMgc3RhbmRhcmQgdGVybWluZm8uICBBc3N1bWVzIEFOU0kuU1lTLWNvbXBhdGlibGUgYXR0cmlidXRlcyBhbmQgY29sb3IuCi0jIEZyb206IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBOb3YgNiAxOTk1Ci1hbnNpfGFuc2kvcGMtdGVybSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0JdXNlPWFuc2krZW5xLCB1c2U9ZWNtYStjb2xvciwgdXNlPWtsb25lK3NncjgsIHVzZT1hbnNpLW0sCi0KLSMgYW5zaS1nZW5lcmljIGlzIGEgdmFuaWxsYSBBTlNJIHRlcm1pbmFsLiBUaGlzIGlzIGFzc3VtZWQgdG8gaW1wbGVtZW50Ci0jIGFsbCB0aGUgbm9ybWFsIEFOU0kgc3R1ZmYgd2l0aCBubyBleHRlbnNpb25zLiBJdCBhc3N1bWVzCi0jIGluc2VydC9kZWxldGUgbGluZS9jaGFyIGlzIHRoZXJlLCBzbyBpdCB3b24ndCB3b3JrIHdpdGgKLSMgdnQxMDAgY2xvbmVzLiBJdCBhc3N1bWVzIHZpZGVvIGF0dHJpYnV0ZXMgZm9yIGJvbGQsIGJsaW5rLAotIyB1bmRlcmxpbmUsIGFuZCByZXZlcnNlLCB3aGljaCB3b24ndCBtYXR0ZXIgbXVjaCBpZiB0aGUgdGVybWluYWwKLSMgY2FuJ3QgZG8gc29tZSBvZiB0aG9zZS4gUGFkZGluZyBpcyBhc3N1bWVkIHRvIGJlIHplcm8sIHdoaWNoCi0jIHNob3VsZG4ndCBodXJ0IHNpbmNlIHhvbi94b2ZmIGlzIGFzc3VtZWQuCi1hbnNpLWdlbmVyaWN8Z2VuZXJpYyBhbnNpIHN0YW5kYXJkIHRlcm1pbmFsLAotCWFtLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsIHVzZT12YW5pbGxhLCB1c2U9YW5zaStjc3IsIHVzZT1hbnNpK2N1cCwKLQl1c2U9YW5zaStyY2EsIHVzZT1hbnNpK2VyYXNlLCB1c2U9YW5zaSt0YWJzLAotCXVzZT1hbnNpK2xvY2FsLCB1c2U9YW5zaStpZGMsIHVzZT1hbnNpK2lkbCwgdXNlPWFuc2krcmVwLAotCXVzZT1hbnNpK3NncmJvbGQsIHVzZT1hbnNpK2Fycm93cywKLQotIyMjIyBET1MgQU5TSS5TWVMgdmFyaWFudHMKLSMKLSMgVGhpcyBjb21wbGV0ZWx5IGRlc2NyaWJlcyB0aGUgc2VxdWVuY2VzIHNwZWNpZmllZCBpbiB0aGUgRE9TIDIuMSBBTlNJLlNZUwotIyBkb2N1bWVudGF0aW9uIChleGNlcHQgZm9yIHRoZSBrZXlib2FyZCBrZXkgcmVhc3NpZ25tZW50IGZlYXR1cmUsIHdoaWNoCi0jIGRvZXNuJ3QgZml0IHRoZSA8cGZrZXk+IG1vZGVsIHdlbGwpLiAgVGhlIGtsb25lK2FjcyBzZXF1ZW5jZXMgd2VyZSB2YWxpZAotIyB0aG91Z2ggdW5kb2N1bWVudGVkLiAgVGhlIDxwZmtleT4gY2FwYWJpbGl0eSBpcyB1bnRlc3RlZCBidXQgc2hvdWxkIHdvcmsgZm9yCi0jIGtleXMgRjEtRjEwICglcDEgdmFsdWVzIG91dHNpZGUgdGhpcyByYW5nZSB3aWxsIHlpZWxkIHVucHJlZGljdGFibGUgcmVzdWx0cykuCi0jIEZyb206IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBOb3YgNyAxOTk1Ci1hbnNpLnN5cy1vbGR8QU5TSS5TWVMgdW5kZXIgUEMtRE9TIDIuMSwKLQlPVGJzLCBhbSwgbWlyLCBtc2dyLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjUsCi0JY2xlYXI9XEVbMkosIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBlbD1cRVtrLCBob21lPVxFW0gsCi0JaXMyPVxFW21cRVs/N2gsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLAotCWtob21lPV5eLCBwZmtleT1cRVswOyVwMSV7NTh9JSslZDslcDIiJXMiLCByYz1cRVt1LAotCXJtYW09XEVbPzdsLCBzYz1cRVtzLCBzbWFtPVxFWz83aCwgdTY9XEVbJWklZDslZFIsCi0JdTc9XEVbNm4sIHVzZT1rbG9uZStjb2xvciwgdXNlPWtsb25lK3NncjgsCi1hbnNpLnN5c3xBTlNJLlNZUyAzLjEgYW5kIGxhdGVyIHZlcnNpb25zLAotCWVsPVxFW0ssIHVzZT1hbnNpLnN5cy1vbGQsCi0KLSMKLSMgRGVmaW5lIElCTSBQQyBrZXlwYWQga2V5cyBmb3IgdmkgYXMgcGVyIE1TLUtlcm1pdCB3aGlsZSB1c2luZyBBTlNJLlNZUy4KLSMgVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGNhbm5vdCByZWRlZmluZSB0aGUga2V5cy4KLSMgU2luY2UgcmVkZWZpbmluZyBrZXlzIHdpdGggYW5zaS5zeXMgYWxzbyBhZmZlY3RzIFBDLURPUyBwcm9ncmFtcywgdGhlIGtleQotIyBkZWZpbml0aW9ucyBtdXN0IGJlIHJlc3RvcmVkLiAgSWYgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGlzIHF1aXQgd2hpbGUgaW4gdmkKLSMgb3Igb3RoZXJzIHVzaW5nIDxzbWt4Pi88cm1reD4sIHRoZSBrZXlwYWQgd2lsbCBub3QgYmUgZGVmaW5lZCBhcyBwZXIgUEMtRE9TLgotIyBUaGUgUGdVcCBhbmQgUGdEbiBhcmUgcHJlZml4ZWQgd2l0aCBFU0Mgc28gdGhhdCB0bjMyNzAgY2FuIGJlIHVzZWQgb24gVW5peAotIyAoXlUgYW5kIF5EIGFyZSBhbHJlYWR5IGRlZmluZWQgZm9yIHRuMzI3MCkuICBUaGUgRVNDIGlzIHNhZmUgZm9yIHZpIGJ1dCBpdAotIyBkb2VzICJiZWVwIi4gIEVTQyBFU0MgaSBpcyB1c2VkIGZvciBJbnMgdG8gYXZvaWQgdG4zMjcwIEVTQyBpIGZvciBjb2x0YWIuCi0jIE5vdGUgdGhhdCA8a2N1YjE+IGlzIGFsd2F5cyBCUywgYmVjYXVzZSBQQy1kb3MgY2FuIHRvbGVyYXRlIHRoaXMgY2hhbmdlLgotIyBDYXV0aW9uOiB2aSBpcyBsaW1pdGVkIHRvIDI1NiBzdHJpbmcgYnl0ZXMsIGxvbmdlciBjcmFzaGVzIG9yIHdlaXJkcyBvdXQgdmkuCi0jIENvbnNlcXVlbnRseSB0aGUgRW5kIGtleXBhZCBrZXkgY291bGQgbm90IGJlIHNldCAoaXQgaXMgcmVsYXRpdmVseSBzYWZlIGFuZAotIyBhY3R1YWxseSB1c2VmdWwgYmVjYXVzZSBpdCBzZW5kcyBeQCBPLCB3aGljaCBiZWVwcyBhbmQgb3BlbnMgYSBsaW5lIGFib3ZlKS4KLWFuc2kuc3lza3xhbnNpc3lza3xQQy1ET1MgMy4xIEFOU0kuU1lTIHdpdGgga2V5cGFkIHJlZGVmaW5lZCBmb3IgdmksCi0JaXMyPVUyIFBDLURPUyAzLjEgQU5TSS5TWVMgd2l0aCBrZXlwYWQgcmVkZWZpbmVkIGZvciB2aSA5LTI5LTg2XG5cRVs7NzU7OHAsCi0Jcm1reD1cRVs7NzE7MDs3MXBcRVs7NzI7MDs3MnBcRVs7NzM7MDs3M3BcRVs7Nzc7MDs3N3BcRVs7ODA7MDs4MHBcRVs7ODE7MDs4MXBcRVs7ODI7MDs4MnBcRVs7ODM7MDs4M3AsCi0Jc21reD1cRVs7NzE7MzBwXEVbOzcyOzExcFxFWzs3MzsyNzsyMXBcRVs7Nzc7MTJwXEVbOzgwOzEwcFxFWzs4MTsyNzs0cFxFWzs4MjsyNzsyNzsxMDVwXEVbOzgzOzEyN3AsCi0JdXNlPWFuc2kuc3lzLAotIwotIyBBZGRzIGlucy9kZWwgbGluZS9jaGFyYWN0ZXIsIGhlbmNlIHZpIHJldmVyc2Ugc2Nyb2xscy9pbnNlcnRzL2RlbGV0ZXMgbmljZXIuCi1uYW5zaS5zeXN8bmFuc2lzeXN8UEMtRE9TIFB1YmxpYyBEb21haW4gTkFOU0kuU1lTLAotCWRjaDE9XEVbMVAsIGRsMT1cRVsxTSwgaWNoMT1cRVsxQCwgaWwxPVxFWzFMLAotCWlzMj1VMyBQQy1ET1MgUHVibGljIERvbWFpbiBOQU5TSS5TWVMgOS0yMy04NlxuLAotCXVzZT1hbnNpLnN5cywKLSMKLSMgU2VlIGFuc2kuc3lzayBhbmQgbmFuc2kuc3lzIGFib3ZlLgotbmFuc2kuc3lza3xuYW5zaXN5c2t8UEMtRE9TIFB1YmxpYyBEb21haW4gTkFOU0kuU1lTIHdpdGgga2V5cGFkIHJlZGVmaW5lZCBmb3IgdmksCi0JZGNoMT1cRVsxUCwgZGwxPVxFWzFNLCBpY2gxPVxFWzFALCBpbDE9XEVbMUwsCi0JaXMyPVU0IFBDLURPUyBQdWJsaWMgRG9tYWluIE5BTlNJLlNZUyB3aXRoIGtleXBhZCByZWRlZmluZWQgZm9yIHZpIDktMjktODZcblxFWzs3NTs4cCwKLQl1c2U9YW5zaS5zeXNrLAotCi0jIyMjIEFOU0kgY29uc29sZSB0eXBlcwotIwotCi0jIyMjIEJlT1MKLSMKLSMgQmVPUyBlbnRyeSBmb3IgVGVybWluYWwgcHJvZ3JhbSBTZWVtcyB0byBiZSBhbG1vc3QgQU5TSQotYmV0ZXJtfEJlT1MgVGVybWluYWwsCi0JYW0sIGVvLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjUsIG5jdiM1LCBwYWlycyM2NCwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGhvbWU9XEVbSCwKLQlocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbM34sCi0Ja2VuZD1cRVs0fiwga2YxPVxFWzExfiwga2YxMD1cRVsyMH4sIGtmMTE9XEVbMjF+LAotCWtmMTI9XEVbMjJ+LCBrZjI9XEVbMTJ+LCBrZjM9XEVbMTN+LCBrZjQ9XEVbMTR+LAotCWtmNT1cRVsxNX4sIGtmNj1cRVsxNn4sIGtmNz1cRVsxN34sIGtmOD1cRVsxOH4sIGtmOT1cRVsxOX4sCi0Ja2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwga3NwZD1eWiwKLQluZWw9Xk1eSiwgb3A9XEVbbSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1pcj1cRVs0bCwKLQlybWt4PVxFWz80bCwgcm1zbz1cRVttLCBybXVsPVxFWzI0bSwgcnMxPVxFYywgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCi0Jc2V0Yj1cRVslcDElezQwfSUrJWNtLCBzZXRmPVxFWyVwMSV7MzB9JSslY20sCi0Jc2dyMD1cRVswOzEwbSwgc21pcj1cRVs0aCwgc21reD1cRVs/NGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdTY9XEVbJWklcDElZDslcDIlZFIsIHU3PVxFWzZuLAotCXZwYT1cRVslaSVwMSVkZCwKLQotIyMjIyBMaW51eCBjb25zb2xlcwotIwotCi0jIFRoaXMgZW50cnkgaXMgZ29vZCBmb3IgdGhlIDEuMi4xMyBvciBsYXRlciB2ZXJzaW9uIG9mIHRoZSBMaW51eCBjb25zb2xlLgotIwotIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICogICAgICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAqIExpbnV4ZXMgY29tZSB3aXRoIGEgZGVmYXVsdCBrZXlib2FyZCBtYXBwaW5nIGtjYnQ9XkkuICBUaGlzIGVudHJ5LCBpbiAgICoKLSMgKiByZXNwb25zZSB0byB1c2VyIHJlcXVlc3RzLCBhc3N1bWVzIGtjYnQ9XEVbWiwgdGhlIEFOU0kvRUNNQSByZXZlcnNlLXRhYiAqCi0jICogY2hhcmFjdGVyLiBIZXJlIGFyZSB0aGUga2V5bWFwIHJlcGxhY2VtZW50IGxpbmVzIHRoYXQgd2lsbCBzZXQgdGhpcyB1cDogKgotIyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMJa2V5Y29kZSAgMTUgPSBUYWIgICAgICAgICAgICAgVGFiCi0jCQlhbHQgICAgIGtleWNvZGUgIDE1ID0gTWV0YV9UYWIKLSMJCXNoaWZ0CWtleWNvZGUgIDE1ID0gRjI2Ci0jCXN0cmluZyBGMjYgPSJcMDMzW1oiCi0jICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAqIFRoaXMgaGFzIHRvIHVzZSBhIGtleSBzbG90IHdoaWNoIGlzIHVuZm9ydHVuYXRlIChhbnkgdW51c2VkIG9uZSB3aWxsICAgICoKLSMgKiBkbywgRjI2IGlzIHRoZSBoaWdoZXItbnVtYmVyZWQgb25lKS4gIFRoZSBjaGFuZ2Ugb3VnaHQgdG8gYmUgYnVpbHQgICAgICAqCi0jICogaW50byB0aGUga2VybmVsIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jCi0jIEFsbCBsaW51eCBrZXJuZWxzIHNpbmNlIDEuMi4xMyAoYXQgbGVhc3QpIHNldCB0aGUgc2NyZWVuIHNpemUKLSMgdGhlbXNlbHZlczsgdGhpcyBlbnRyeSBhc3N1bWVzIHRoYXQgY2FwYWJpbGl0eS4KLSMKLWxpbnV4LWJhc2ljfGxpbnV4IGNvbnNvbGUsCi0JYW0sIGJjZSwgZW8sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWl0IzgsIG5jdiMxOCwKLQlhY3NjPStcMDIwXCxcMDIxLVwwMzAuXlkwXDMzM2BcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBpXDMxNmpcMzMxa1wyNzdsXDMzMm1cMzAwblwzMDVvfnBcMzA0cVwzMDRyXDMwNHNfdFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2M3lcMzYzelwzNjJ7XDM0M3xcMzMwfVwyMzR+XDM3NiwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywKLQllbDE9XEVbMUssIGZsYXNoPVxFWz81aFxFWz81bCQ8MjAwLz4sIGhvbWU9XEVbSCwKLQlocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBrYjI9XEVbRywga2JzPVwxNzcsCi0Ja2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjE9XEVbW0EsIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAotCWtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LAotCWtmMTk9XEVbMzN+LCBrZjI9XEVbW0IsIGtmMjA9XEVbMzR+LCBrZjM9XEVbW0MsIGtmND1cRVtbRCwKLQlrZjU9XEVbW0UsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbW91cz1cRVtNLCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKLQlrc3BkPV5aLCBuZWw9Xk1eSiwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hbT1cRVs/N2wsCi0Jcm1pcj1cRVs0bCwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLCByczE9XEVjXEVdUiwgc2M9XEU3LAotCXNncj1cRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTslPyVwOSV0OzExJTttLAotCXNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLCB1c2U9a2xvbmUrc2dyLAotCXVzZT1lY21hK2NvbG9yLAotCi1saW51eC1tfExpbnV4IGNvbnNvbGUgbm8gY29sb3IsCi0JY29sb3JzQCwgcGFpcnNALAotCXNldGFiQCwgc2V0YWZALCBzZXRiQCwgc2V0ZkAsIHVzZT1saW51eCwKLQotIyBUaGUgMS4zLngga2VybmVscyBhZGQgY29sb3ItY2hhbmdlIGNhcGFiaWxpdGllczsgaWYgeW91cnMgZG9lc24ndCBoYXZlIHRoaXMKLSMgYW5kIGl0IG1hdHRlcnMsIHR1cm4gb2ZmIDxjY2M+LiAgVGhlICUwMnggZXNjYXBlIHVzZWQgdG8gaW1wbGVtZW50IHRoaXMgaXMKLSMgbm90IHN1cHBvc2VkbHkgYmFjay1wb3J0YWJsZSB0byBvbGRlciBTViBjdXJzZXMgKGFsdGhvdWdoIGl0IGhhcyB3b3JrZWQgZmluZQotIyBvbiBTb2xhcmlzIGZvciBzZXZlcmFsIHllYXJzKSBhbmQgbm90IHN1cHBvcnRlZCBpbiBuY3Vyc2VzIHZlcnNpb25zIGJlZm9yZQotIyAxLjkuOS4KLWxpbnV4LWMtbmN8bGludXggY29uc29sZSB3aXRoIGNvbG9yLWNoYW5nZSwKLQljY2MsCi0JaW5pdGM9XEVdUCVwMSV4JXAyJXsyNTZ9JSolezEwMDB9JS8lMDJ4JXAzJXsyNTZ9JSolezEwMDB9JS8lMDJ4JXA0JXsyNTZ9JSolezEwMDB9JS8lMDJ4LAotCW9jPVxFXVIsIHVzZT1saW51eC1iYXNpYywKLSMgRnJvbTogRGVubmlzIEhlbnJpa3NlbiA8b3B1c0Bvc3JsLmRrPiwgOSBKdWx5IDE5OTYKLWxpbnV4LWN8bGludXggY29uc29sZSAxLjMuNisgZm9yIG9sZGVyIG5jdXJzZXMsCi0JY2NjLAotCWluaXRjPVxFXVAlPyVwMSV7OX0lPiV0JXAxJXsxMH0lLSUnYSclKyVjJWUlcDElZCU7JXAyJXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXAzJXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7JXA0JXsyNTZ9JSolezEwMDB9JS8lUHIlZ3IlezE2fSUvJVB4JT8lZ3glezl9JT4ldCVneCV7MTB9JS0lJ2EnJSslYyVlJWd4JWQlOyVnciV7MTV9JSYlUHglPyVneCV7OX0lPiV0JWd4JXsxMH0lLSUnYSclKyVjJWUlZ3glZCU7LAotCW9jPVxFXVIsIHVzZT1saW51eC1iYXNpYywKLQotIyBUaGUgMi4yLngga2VybmVscyBhZGQgYSBwcml2YXRlIG1vZGUgdGhhdCBzZXRzIHRoZSBjdXJzb3IgdHlwZTsgdXNlIHRoYXQgdG8KLSMgZ2V0IGEgYmxvY2sgY3Vyc29yIGZvciBjdnZpcy4KLSMgcmVwb3J0ZWQgYnkgRnJhbmsgSGVja2VuYmFjaCA8ZnJhbmtAZy1uLXUuZGU+LgotbGludXh8bGludXggY29uc29sZSwKLQljaXZpcz1cRVs/MjVsXEVbPzFjLCBjbm9ybT1cRVs/MjVoXEVbPzBjLAotCWN2dmlzPVxFWz8yNWhcRVs/OGMsIHVzZT1saW51eC1jLW5jLAotCi0jIFN1YmplY3Q6IGxpbnV4IDIuNi4yNiB2dCBiYWNrX2NvbG9yX2VyYXNlCi0jIENoYW5nZXMgdG8gdGhlIExpbnV4IGNvbnNvbGUgZHJpdmVyIGJyb2tlIGJjZSBtb2RlbCBhcyByZXBvcnRlZCBpbgotIwlodHRwczovL2J1Z3ppbGxhLm5vdmVsbC5jb20vc2hvd19idWcuY2dpP2lkPTQxODYxMwotIyBhcHBhcmVudGx5IGZyb20KLSMJaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwOC80LzI2LzMwNQotIwlodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZmEubGludXgua2VybmVsL2Jyb3dzZV90aHJlYWQvdGhyZWFkLzg3Zjk4MzM4ZjBkNjM2YmIvYWE5NmU4Yjg2Y2VlMGQxZT9sbms9c3QmcT0jYWE5NmU4Yjg2Y2VlMGQxZQotbGludXgyLjYuMjZ8bGludXggY29uc29sZSB3L28gYmNlLAotCWJjZUAsIHVzZT1saW51eCwKLQotIyBTZWUgdGhlIG5vdGUgb24gSUNIL0lDSDEgVkVSU1VTIFJNSVIvU01JUiBuZWFyIHRoZSBlbmQgb2YgZmlsZQotbGludXgtbmljfGxpbnV4IHdpdGggaWNoL2ljaDEgc3VwcHJlc3NlZCBmb3Igbm9uLWN1cnNlcyBwcm9ncmFtcywKLQlpY2hALCBpY2gxQCwgdXNlPWxpbnV4LAotCi0jIFRoaXMgYXNzdW1lcyB5b3UgaGF2ZSB1c2VkIHNldGZvbnQoOCkgdG8gbG9hZCBvbmUgb2YgdGhlIExpbnV4IGtvaTgtciBmb250cy4KLSMgYWNzYyBlbnRyeSBmcm9tIFBhdmVsIFJvc2tpbiIgPHBhdmVsQGFic29sdXRlLnNwYi5zdT4sIDI5IFNlcCAxOTk3LgotbGludXgta29pOHxsaW51eCB3aXRoIGtvaTggYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwyMTVgXDAwNGFcMjIxZlwyMzRnXDIzN2hcMjIwaVwyNzZqXDIwNWtcMjAzbFwyMDJtXDIwNG5cMjEyb35wXDBxXDByXDBzX3RcMjA2dVwyMDd2XDIxMXdcMjEweFwyMDF5XDIzMHpcMjMxe1wyNjd8XDI3NH5cMjI0LAotCXVzZT1saW51eCwgdXNlPWtsb25lK2tvaThhY3MsCi0KLSMgQW5vdGhlciBlbnRyeSBmb3IgS09JOC1yIHdpdGggUWluZyBMb25nJ3MgYWNzYy4KLSMgKHdoaWNoIG9uZSBiZXR0ZXIgY29tcGxpZXMgd2l0aCB0aGUgc3RhbmRhcmQ/KQotbGludXgta29pOHJ8bGludXggd2l0aCBrb2k4LXIgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQsCi0JdXNlPWxpbnV4LCB1c2U9a2xvbmUra29pOGFjcywKLQotIyBFbnRyeSBmb3IgdGhlIGxhdGluMSBhbmQgbGF0aW4yIGZvbnRzCi1saW51eC1sYXR8bGludXggd2l0aCBsYXRpbjEgb3IgbGF0aW4yIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0LAotCWFjc2M9K1wwMjBcLFwwMjEtXDAzMC5eWTBcMzMzYFwwMDRhXDAxM2ZcMzcwZ1wzNjFoXDI2MGlcMzE2alwyMTFrXDIxNGxcMjA2bVwyMDNuXDMwNW9+cFwzMDRxXDIxMnJcMzA0c190XDIwN3VcMjE1dlwzMDF3XDMwMnhcMjA1eVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAotCXVzZT1saW51eCwKLQotIyBUaGlzIHVzZXMgZ3JhcGhpY3MgZnJvbSBWVCBjb2Rlc2V0IGluc3RlYWQgb2YgZnJvbSBjcDQzNy4KLSMgcmVhc29uOiBjcDQzNyAoYWthICJzdHJhaWdodCB0byBmb250IikgaXMgbm90IGZ1bmN0aW9uYWwgdW5kZXIgbHVpdC4KLSMgZnJvbTogQW5kcmV5IFYgTHVreWFub3YgPGxhbmRAbG9uZy55YXIucnU+LgotbGludXgtdnR8bGludXggY29uc29sZSB1c2luZyBWVCBjb2RlcyBmb3IgZ3JhcGhpY3MsCi0JYWNzYz0rK1wsXCwtLS4uMDBgYGFhZmZnZ2hoaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6fn4sCi0Jcm1hY3M9XEUoSywgcm1wY2hALCBzZ3JALCBzZ3IwPVxFWzBtXEUoS1wwMTcsIHNtYWNzPVxFKDAsCi0Jc21wY2hALCB1c2U9bGludXgsCi0KLSMgVGhpcyBpcyBiYXNlZCBvbiB0aGUgTGludXggY29uc29sZSAocmVsaWVzIG9uIHRoZSBjb25zb2xlIHRvIHBlcmZvcm0gc29tZQotIyBvZiB0aGUgZnVuY3Rpb25hbGl0eSksIGJ1dCBkb2VzIG5vdCByZWNvZ25pemUgYXMgbWFueSBjb250cm9sIHNlcXVlbmNlcy4KLSMgVGhlIHByb2dyYW0gY29tZXMgYnVuZGxlZCB3aXRoIGFuIG9sZCAoY2lyY2EgMTk5OCkgY29weSBvZiB0aGUgTGludXgKLSMgY29uc29sZSB0ZXJtaW5mby4gIEl0IHJlY29nbml6ZXMgc29tZSBub24tQU5TSS9WVDEwMCBzZXF1ZW5jZXMgc3VjaCBhcwotIwlcRSoJbW92ZSBjdXJzb3IgdG8gaG9tZSwgYXMgYXMgXEVbSAotIwlcRSxYCXNhbWUgYXMgXEUoWAotIwlcRUUJbW92ZSBjdXJzb3IgdG8gYmVnaW5uaW5nIG9mIHJvdwotIwlcRVt5LHhmCXNhbWUgYXMgXEVbeSx4SAotIwotIyBOb3RlOiBUaGUgc3RhdHVzLWxpbmUgc3VwcG9ydCBpcyBidWdneSAoZHNsIGRvZXMgbm90IHdvcmspLgota29ufGtvbjJ8amZidGVybXxLYW5qaSBPTiBMaW51eCBjb25zb2xlLAotCWNjY0AsIGhzLAotCWNpdmlzQCwgY25vcm1ALCBjdnZpc0AsIGRzbD1cRVs/SCwgZmxhc2hALCBmc2w9XEVbP0YsIGluaXRjQCwKLQlpbml0cEAsIGtjYnRALCBvY0AsIG9wPVxFWzM3OzQwbSwgcnMxPVxFYywgdHNsPVxFWz9ULAotCXVzZT1saW51eCwKLQotIyMjIyBNYWNoCi0jCi0KLSMgRnJvbTogTWF0dGhldyBWZXJub24gPG1jdjIxQHBpY2suc2VsLmNhbS5hYy51az4KLW1hY2h8TWFjaCBDb25zb2xlLAotCWFtLCBrbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRWMsIGNyPV5NLAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XkosCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLAotCWVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlrYnM9XDE3Nywga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVs5LCBrZW5kPVxFW1ksIGtmMT1cRU9QLCBrZjEwPVxFT1ksIGtmMj1cRU9RLAotCWtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT1QsIGtmNj1cRU9VLCBrZjc9XEVPViwga2Y4PVxFT1csCi0Ja2Y5PVxFT1gsIGtob21lPVxFW0gsIGtpY2gxPVxFW0AsIGtsbD1cRVtGLCBrbnA9XEVbVSwKLQlrcHA9XEVbViwgcmV2PVxFWzdtLCBybXNvPVxFWzBtLCBybXVsPVxFWzI0bSwgc2dyMD1cRVswbSwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotbWFjaC1ib2xkfE1hY2ggQ29uc29sZSB3aXRoIGJvbGQgaW5zdGVhZCBvZiB1bmRlcmxpbmUsCi0Jcm11bD1cRVswbSwgc211bD1cRVsxbSwgdXNlPW1hY2gsCi1tYWNoLWNvbG9yfE1hY2ggQ29uc29sZSB3aXRoIEFOU0kgY29sb3IsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCWRpbT1cRVsybSwgaW52aXM9XEVbOG0sIG9wPVxFWzM3OzQwbSwgcm1zbz1cRVsyN20sCi0Jc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwgdXNlPW1hY2gsCi0KLSMgRnJvbTogTWFyY3VzIEJyaW5rbWFubgotIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9odXJkL2h1cmQvY29uc29sZS8KLSMKLSMgQ29tbWVudHMgaW4gdGhlIG9yaWdpbmFsIGFyZSBzdW1tYXJpemVkIGhlcmU6Ci0jCi0jIGh1cmQgdXNlcyA4LWJpdCBjaGFyYWN0ZXJzIChrbSkuCi0jCi0jIEFsdGhvdWdoIGl0IGRvZXNuJ3QgZG8gWE9OL1hPRkYsIHdlIGRvbid0IHdhbnQgcGFkZGluZyBjaGFyYWN0ZXJzICh4b24pLgotIwotIyBSZWdhcmRpbmcgY29tcGF0aWJpbGl0eSB0byB2dDEwMDogIGh1cmQgZG9lc24ndCBzcGVjaWZ5IDx4ZW5sPiwgYXMgd2UgZG9uJ3QKLSMgaGF2ZSB0aGUgZWF0X25ld2xpbmVfZ2xpdGNoLiAgSXQgZG9lc24ndCBzdXBwb3J0IHNldHRpbmcgb3IgcmVtb3ZpbmcgdGFiCi0jIHN0b3BzIChodHMvdGJjKS4KLSMKLSMgaHVyZCB1c2VzIF5IIGluc3RlYWQgb2YgXEVbRCBmb3IgY3ViMSwgYXMgb25seSBeSCBpbXBsZW1lbnRzIDxidz4gYW5kIGl0IGlzCi0jIG9uZSBieXRlIGluc3RlYWQgdGhyZWUuCi0jCi0jIDxpY2gxPiBpcyBub3QgaW5jbHVkZWQgYmVjYXVzZSBodXJkIGhhcyBpbnNlcnQgbW9kZS4KLSMKLSMgaHVyZCBkb2Vzbid0IHVzZSBeSiBmb3Igc2Nyb2xsaW5nLCBiZWNhdXNlIHRoaXMgY291bGQgcHV0IHRoaW5ncyBpbnRvIHRoZQotIyBzY3JvbGxiYWNrIGJ1ZmZlci4KLSMKLSMgZ3Nib20vZ3Jib20gYXJlIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgcmVhbCBib2xkIChub3QgaW50ZW5zaXR5IGJyaWdodCkgbW9kZS4KLSMgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uCi0jCi0jIFRoZSBvcmlnaW5hbCBoYXMgY29tbWVudGVkLW91dCBuY3YsIGJ1dCBpcyByZXN0b3JlZCBoZXJlLgotIwotIyBSZWFkaW5nIHRoZSBzb3VyY2UsIFJJUyByZXNldHMgY25vcm0sIGJ1dCBub3QgeG1vdXMuCi1odXJkfFRoZSBHTlUgSHVyZCBjb25zb2xlIHNlcnZlciwKLQlhbSwgYmNlLCBidywgZW8sIGttLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xvcnMjOCwgaXQjOCwgbmN2IzE4LCBwYWlycyM2NCwKLQlhY3NjPSsrXCxcLC0tLi4wMGlpYGBhYWZmZ2doaGpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRWMsIGNub3JtPVxFWz8yNWgsIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgY3Z2aXM9XEVbMzRsLCBkY2g9XEVbJXAxJWRQLAotCWRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgZmxhc2g9XEVnLAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaWNoPVxFWyVwMSVkQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVbUywgaW5kbj1cRVslcDElZFMsCi0JaW52aXM9XEVbOG0sIGtiMj1cRVtHLCBrYnM9XDE3Nywga2NidD1cRVtaLCBrY3ViMT1cRU9ELAotCWtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtkY2gxPVxFWzN+LAotCWtlbmQ9XEVbNH4sIGtmMT1cRU9QLCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFT1EsIGtmMjA9XEVbMzR+LCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRVsxNX4sCi0Ja2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzcGQ9XlosIG5lbD1eTV5KLCBvcD1cRVszOTs0OW0sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRVtULAotCXJpbj1cRVslcDElZFQsIHJpdG09XEVbMjNtLCBybWFjcz1cRVsxMG0sIHJtaXI9XEVbNGwsCi0Jcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLCByczE9XEVNXEVbPzEwMDBsLCBzYz1cRTcsCi0Jc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZ3I9XEVbMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMSU7bSwKLQlzZ3IwPVxFWzBtLCBzaXRtPVxFWzNtLCBzbWFjcz1cRVsxMW0sIHNtaXI9XEVbNGgsCi0Jc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdnBhPVxFWyVpJXAxJWRkLCBncmJvbT1cRVs+MWwsCi0JZ3Nib209XEVbPjFoLAotCi0jIyMjIE9TRiBVbml4Ci0jCi0KLSMgT1NGLzEgMS4xIFNuYXBzaG90IDIKLXBtY29uc3xwbWNvbnNvbGV8UE1BWCBjb25zb2xlLAotCWFtLAotCWNvbHMjMTI4LCBsaW5lcyM1NywKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3V1MT1eSywgaHQ9XkksCi0JaW5kPV5KLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLAotCi0jIFNDTyBjb25zb2xlIGFuZCBTT1MtU3lzY29ucyBjb25zb2xlIGZvciAzODZic2QKLSMgKHNjb2Fuc2k6IGhhZCB1bmtub3duIGNhcGFiaWxpdGllcwotIwk6R2M9TjpHZD1LOkdoPU06R2w9TDpHdT1KOkd2PVwwNzI6XAotIwk6R0M9RTpHRD1COkdIPUQ6R0w9XDY0OkdVPUE6R1Y9XDYzOkdSPUM6Ci0jCTpHMT0/OkcyPVo6RzM9QDpHND1ZOkc1PTs6RzY9STpHNz1IOkc4PTw6XAotIwk6Q1c9XEVbTTpOVT1cRVtOOlJGPVxFW086UkM9XEVbUDpcCi0jCTpXTD1cRVtTOldSPVxFW1Q6Q0w9XEVbVTpDUj1cRVtWOlwKLSMgSSByZW5hbWVkIEdTL0dFL0hNL0VOL1BVL1BEL1JUIGFuZCBhZGRlZCBrbG9uZStzZ3ItZHVtYiwgYmFzZWQKLSMgb24gdGhlIDxzbWFjcz49XEVbMTJtICAtLSBlc3IpCi0jCi0jIGtsb25lK3Nnci1kdW1iIGlzIGFuIGVycm9yIHNpbmNlIHRoZSBhY3NjIGRvZXMgbm90IG1hdGNoIC1URAotIwotIyBJbiB0aGlzIGRlc2NyaXB0aW9uIGJhc2VkIG9uIFNDTydzIGtleWJvYXJkKEhXKSBtYW5wYWdlIGxpc3Qgb2YgZGVmYXVsdAotIyBmdW5jdGlvbiBrZXkgdmFsdWVzOgotIwlGMTMtRjI0IGFyZSBzaGlmdGVkIEYxLUYxMgotIwlGMjUtRjM2IGFyZSBjb250cm9sIEYxLUYxMgotIwlGMzctRjQ4IGFyZSBzaGlmdCtjb250cm9sIEYxLUYxMgotIwotIyBocGEvdnBhIHdvcmsgaW4gdGhlIGNvbnNvbGUsIGJ1dCBub3QgaW4gc2NvdGVybToKLSMJaHBhPVxFWyVwMSVkRywKLSMJdnBhPVxFWyVwMSVkZCwKLSMKLSMgU0NPJ3MgdGVybWluZm8gdXNlcwotIwlrTEZUPVxFW2QsCi0jCWtSSVQ9XEVbYywKLSMgd2hpY2ggZG8gbm90IHdvcmsgKGNvbnNvbGUgb3Igc2NvdGVybSkuCi0jCi0jIENvbnNvbGUgZG9jdW1lbnRzIG9ubHkgMyBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgd2l0aCBTR1IgKHNvIHdlIGRvbid0IHVzZSBzZ3IpLgotc2NvYW5zaS1vbGR8U0NPIEV4dGVuZGVkIEFOU0kgc3RhbmRhcmQgY3J0ICg1LjAuNSksCi0JT1RicywgYW0sIGJjZSwgZW8sIHhvbiwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjUsIHBhaXJzIzY0LAotCWFjc2M9LVwyMzAuXDIzMVwsLisvMFs1NTY2Nzc4ODk5XDpcOjs7PDw9PT4+RkZHR0hISUlKSktLTExNTU5OT09QUFFRUlJTU1RUVVVWVldXWFhgXDIwNGEwZnhncWgyallrP2xabUBuRXFEdEN1NHZBd0J4M3lzenJ7Y31cMDM0flwyMDcsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osCi0JY2l2aXM9XEVbPTE0OzEyQywgY2xlYXI9XEVbSFxFWzJKLCBjbm9ybT1cRVs9MTA7MTJDLAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGN2dmlzPVxFWz0wOzEyQywgZGNoPVxFWyVwMSVkUCwKLQlkY2gxPVxFW1AsIGRpc3BjPVxFWz0lcDElZGcsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWQ9XEVbbVxFW0osIGVsPVxFW21cRVtLLCBlbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLAotCWluZD1cRVtTLCBpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOG0sIGtiZWc9XEVbRSwga2JzPV5ILAotCWtjYnQ9XEVbWiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cMTc3LCBrZW5kPVxFW0YsIGtmMT1cRVtNLCBrZjEwPVxFW1YsIGtmMTE9XEVbVywKLQlrZjEyPVxFW1gsIGtmMTM9XEVbWSwga2YxNT1cRVthLCBrZjE2PVxFW2IsIGtmMTc9XEVbYywKLQlrZjE4PVxFW2QsIGtmMTk9XEVbZSwga2YyPVxFW04sIGtmMjA9XEVbZiwga2YyMT1cRVtnLAotCWtmMjI9XEVbaCwga2YyMz1cRVtpLCBrZjI0PVxFW2osIGtmMjU9XEVbaywga2YyNj1cRVtsLAotCWtmMjc9XEVbbSwga2YyOD1cRVtuLCBrZjI5PVxFW28sIGtmMz1cRVtPLCBrZjMwPVxFW3AsCi0Ja2YzMT1cRVtxLCBrZjMyPVxFW3IsIGtmMzM9XEVbcywga2YzND1cRVt0LCBrZjM1PVxFW3UsCi0Ja2YzNj1cRVt2LCBrZjM3PVxFW3csIGtmMzg9XEVbeCwga2YzOT1cRVt5LCBrZjQ9XEVbUCwKLQlrZjQwPVxFW3osIGtmNDE9XEVbQCwga2Y0Mj1cRVtbLCBrZjQzPVxFW1xcLCBrZjQ0PVxFW10sCi0Ja2Y0NT1cRVtcXiwga2Y0Nj1cRVtfLCBrZjQ3PVxFW2AsIGtmNDg9XEVbeywga2Y1PVxFW1EsCi0Ja2Y2PVxFW1IsIGtmNz1cRVtTLCBrZjg9XEVbVCwga2Y5PVxFW1UsIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbTCwga25wPVxFW0csIGtwcD1cRVtJLCBvcD1cRVswOzM3OzQwbSwgcmM9XEU4LAotCXJldj1cRVs3bSwgcmk9XEVbVCwgcmluPVxFWyVwMSVkVCwgcm1hY3M9XEVbMTBtLAotCXJtYW09XEVbPzdsLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHNncjA9XEVbMDsxMG0sCi0Jc21hY3M9XEVbMTJtLCBzbWFtPVxFWz83aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLXNjb2Fuc2ktbmV3fFNDTyBFeHRlbmRlZCBBTlNJIHN0YW5kYXJkIGNydCAoNS4wLjYpLAotCWttLAotCWNpdmlzPVxFWz0wYywgY25vcm09XEVbPTFjLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3Z2aXM9XEVbPTJjLCBtZ2M9XEVbPXIsIG9jPVxFWzUxbSwgb3A9XEVbNTBtLAotCXJlcD1cRVslcDElZDslcDIlZGIsIHJtbT1cRVs9MTFMLAotCXNncj1cRVswJT8lcDElcDMlfCV0OzclOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMiU7bSwKLQlzbWdiPVxFWz0xOzBtLCBzbWdicD1cRVs9MTslaSVwMSVkbSwKLQlzbWdscD1cRVs9MjslaSVwMSVkbSwgc21ncj1cRVs9MzswbSwKLQlzbWdycD1cRVs9MzslaSVwMSVkbSwgc21ndD1cRVs9MDswbSwKLQlzbWd0cD1cRVs9MDslaSVwMSVkbSwgc21tPVxFWz0xMEwsCi0Jd2luZD1cRVslaSVwMSVkOyVwMiVkOyVpJXAzJWQ7JXA0JWRyLAotCXVzZT1zY29hbnNpLW9sZCwKLSMgbWFrZSB0aGlzIGVhc3kgdG8gY2hhbmdlLi4uCi1zY29hbnNpfFNDTyBFeHRlbmRlZCBBTlNJIHN0YW5kYXJkIGNydCwKLQl1c2U9c2NvYW5zaS1vbGQsCi0KLSMgVGhpcyBhY3R1YWxseSBkZXNjcmliZXMgdGhlIGdlbmVyaWMgU1ZyNCBkaXNwbGF5IGRyaXZlciBmb3IgSW50ZWwgYm94ZXMuCi0jIFRoZSA8ZGltPVxFWzJtPiBpc24ndCBkb2N1bWVudGVkIGFuZCB0aGVyZWZvcmUgbWF5IG5vdCBiZSByZWxpYWJsZS4KLSMgRnJvbTogRXJpYyBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+IE1vbiBOb3YgMjcgMTk6MDA6NTMgRVNUIDE5OTUKLWF0dDYzODZ8YXQzODZ8Mzg2YXR8QVQmVCBXR1MgNjM4NiBjb25zb2xlLAotCWFtLCBidywgZW8sIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQlhY3NjPWBgYTFmeGdxaDBqWWs/bFptQG5Fb29wcHFEcnJzc3RDdTR2QXdCeDN5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz1DLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPTFDLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwKLQljdWIxPVxFW0QsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywKLQljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKLQljdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFWzFNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFWzFALCBpbD1cRVslcDElZEwsIGlsMT1cRVsxTCwgaW5kPVxFW1MsCi0JaW5kbj1cRVslcDElZFMsIGludmlzPVxFWzltLCBpczI9XEVbMDsxMDszOW0sIGticz1eSCwKLQlrY2J0PV5dLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFW1AsIGtlbmQ9XEVbWSwga2YxPVxFT1AsIGtmMTA9XEVPWSwga2YxMT1cRU9aLAotCWtmMTI9XEVPQSwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT1QsIGtmNj1cRU9VLAotCWtmNz1cRU9WLCBrZjg9XEVPVywga2Y5PVxFT1gsIGtob21lPVxFW0gsIGtpY2gxPVxFW0AsCi0Ja25wPVxFW1UsIGtwcD1cRVtWLCBrcm1pcj1cRTAsIG5lbD1cclxFW1MsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJpPVxFW1QsIHJpbj1cRVslcDElZFQsIHJtYWNzPVxFWzEwbSwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2M9XEU3LAotCXNncj1cRVsxMG1cRVswJT8lcDElcDMlfCV0OzclOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7JT8lcDkldDsxMiVlOzEwJTslPyVwNyV0OzklO20sCi0Jc2dyMD1cRVswOzEwbSwgc21hY3M9XEVbMTJtLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVsyZywgdnBhPVxFWyVpJXAxJWRkLCB1c2U9a2xvbmUrY29sb3IsCi0jIChwYzYzMDBwbHVzOiByZW1vdmVkICI6S009L3Vzci9saWIvdWEva21hcC5zNToiOyByZW5hbWVkIEJPL0VFL0NJL0NWIC0tIGVzcikKLXBjNjMwMHBsdXN8QVQmVCA2MzAwIHBsdXMsCi0JT1RicywgYW0sIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs9QywKLQljbGVhcj1cRVsySlxFW0gsIGNub3JtPVxFWz0xQywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVbQiwKLQljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSUyZDslcDIlMmRILCBjdXUxPVxFW0EsCi0JZGNoMT1cRVsxUCwgZGltPVxFWzJtLCBkbDE9XEVbMU0sIGVkPVxFWzBKLCBlbD1cRVswSywKLQlob21lPVxFW0gsIGh0cz1cRUgsIGljaDE9XEVbMUAsIGlsMT1cRVsxTCwgaW5kPV5KLAotCWludmlzPVxFWzltLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2YxPVxFT2MsIGtmMTA9XEVPdSwga2YyPVxFT2QsIGtmMz1cRU9lLAotCWtmND1cRU9mLCBrZjU9XEVPZywga2Y2PVxFT2gsIGtmNz1cRU9pLCBrZjg9XEVPaiwga2Y5PVxFT2ssCi0JbmVsPV5NXkosIHJldj1cRVs3bSwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0KLSMgRnJvbTogQmVuamFtaW4gQy4gVy4gU2l0dGxlciA8YnNpdHRsZXJAbm10LmVkdT4KLSMKLSMgSSBoYXZlIGEgVU5JWCBQQyB3aGljaCBJIHVzZSBhcyBhIHRlcm1pbmFsIGF0dGFjaGVkIHRvIG15IExpbnV4IFBDLgotIyBVbmZvcnR1bmF0ZWx5LCB0aGUgVU5JWCBQQyB0ZXJtaW5mbyBlbnRyeSB0aGF0IGNvbWVzIHdpdGggbmN1cnNlcwotIyBpcyBicm9rZW4uIEFsbCB0aGUgc3BlY2lhbCBrZXkgc2VxdWVuY2VzIGFyZSBicm9rZW4sIG1ha2luZyBpdCB1bnVzYWJsZQotIyB3aXRoIEVtYWNzLiBUaGUgcHJvYmxlbSBzdGVtcyBmcm9tIHRoZSBmb2xsb3dpbmc6Ci0jCi0jIFRoZSBVTklYIFBDIGhhcyBhIHBsZXRob3JhIG9mIGtleXMgKDEwMyBvZiB0aGVtLCBhbmQgdGhlcmUncyBubyBudW1lcmljCi0jIGtleXBhZCEpLCBsb2FkYWJsZSBmb250cywgYW5kIHN0cmFuZ2UgaGlnaGxpZ2h0aW5nIG1vZGVzICgiZGl0aGVyZWQiCi0jIGhhbGYtaW50ZW5zaXR5LCAic21lYXJlZCIgYm9sZCwgYW5kIHJlYWwgc3RyaWtlLW91dCwgZm9yIGV4YW1wbGUuKSBJdCBhbHNvCi0jIHVzZXMgcmVzaXphYmxlIHRlcm1pbmFsIHdpbmRvd3MsIGJ1dCB0aGUgYnVuZGxlZCB0ZXJtaW5hbCBwcm9ncmFtIGFsd2F5cwotIyB1c2VzIGFuIDgweDI0IHdpbmRvdyAoYW5kIGRvZXNuJ3Qgc3VwcG9ydCBzZWVtIHRvIHN1cHBvcnQgYSAxMzItY29sdW1uCi0jIG1vZGUuKQotIwotIyBISVNUT1JZOiBUaGUgVU5JWCBQQyB3YXMgb25lIG9mIHRoZSBmaXJzdCBtYWNoaW5lcyB3aXRoIGEgR1VJLCBhbmQgdXNlZCBhCi0jIGxpYnJhcnkgd2hpY2ggd2FzIGEgc3VwZXJzZXQgb2YgU1ZyMy41IGN1cnNlcyAoY2FsbGVkIHRhbSwgZm9yICJ0ZXJtaW5hbAotIyBhY2Nlc3MgbWV0aG9kIi4pIHRhbSBpbmNsdWRlcyBzdXBwb3J0IGZvciByZWFsLCBvdmVybGFwcGluZyB3aW5kb3dzLAotIyBvbnNjcmVlbiBmdW5jdGlvbiBrZXkgbGFiZWxzLCBhbmQgYml0bWFwIGdyYXBoaWNzLiBCdXQgc2luY2UgdGhlIHByaW1hcnkKLSMgdXNlciBpbnRlcmZhY2Ugb24gdGhlIFVOSVggUEMgd2FzIGEgR1VJIHByb2dyYW0gKHVhLCBmb3IgInVzZXIKLSMgYXNzaXN0YW50IiwpIGFuZCByZW1vdGUgYWRtaW5pc3RyYXRpb24gd2FzIGNvbnNpZGVyZWQgaW1wb3J0YW50IGZvciB0aGUKLSMgbWFjaGluZSwgdGFtIGFsc28gc3VwcG9ydGVkIFZUMTAwLWNvbXBhdGlibGUgdGVybWluYWxzIGF0dGFjaGVkIHRvIHRoZQotIyBzZXJpYWwgcG9ydCBvciB1c2VkIGFjcm9zcyB0aGUgU3RhckxhbiBuZXR3b3JrLiBUbyBzaW11bGF0ZSB0aGUgZXh0cmEga2V5cwotIyBub3QgcHJlc2VudCBvbiBhIFZUMTAwLCB1c2VycyBjb3VsZCBwcmVzcyBFU0MgYW5kIGEgdHdvLWxldHRlciBzZXF1ZW5jZSwKLSMgc3VjaCBhcyB1IGQgKFVuZG8pIG9yIFUgRCAoU2hpZnQtVW5kby4pIFRoZXNlIHR3by1sZXR0ZXIgc2VxdWVuY2VzLAotIyBob3dldmVyLCB3ZXJlIG5vdCB0aGUgc2FtZSBhcyB0aG9zZSBzZW50IGJ5IHRoZSBhY3R1YWwgVW5kbyBrZXkuIFRoZQotIyBhY3R1YWwgVW5kbyBrZXkgc2VuZHMgRVNDIDAgcyB1bnNoaWZ0ZWQsIGFuZCBFU0MgMCBTIHNoaWZ0ZWQsIGZvciBleGFtcGxlLgotIyAoSWYgeW91J3JlIGludGVyZXN0ZWQgaW4gYWRkaW5nIHNvbWUgb2YgdGhlIHRhbSBjYWxscyB0byBuY3Vyc2VzLCBidHcsIEkKLSMgaGF2ZSB0aGUgZnVsbCBkb2N1bWVudGF0aW9uIGFuZCBzZXZlcmFsIHByb2dyYW1zIHdoaWNoIHVzZSB0YW0uIEl0IGFsc28KLSMgdXNlZCBhbiBleHRlbmRlZCB0ZXJtaW5mbyBmb3JtYXQgdG8gZGVzY3JpYmUga2V5IHNlcXVlbmNlcywgc3BlY2lhbAotIyBoaWdobGlnaHRpbmcgbW9kZXMsIGV0Yy4pCi0jCi0jIEtFWVM6IFRoaXMgbWVhbnMgdGhhdCBuY3Vyc2VzIHdvdWxkIHF1aXRlIHBhaW5mdWwgb24gdGhlIFVOSVggUEMsIHNpbmNlCi0jIHRoZXJlIGFyZSB0d28gc2VxdWVuY2VzIGZvciBldmVyeSBrZXktbW9kaWZpZXIgY29tYmluYXRpb24gKGxvY2FsIGtleWJvYXJkCi0jIHNlcXVlbmNlIGFuZCByZW1vdGUgIlZUMTAwIiBzZXF1ZW5jZS4pIEJ1dCBJIGRvdWJ0IG1hbnkgcGVvcGxlIGFyZSB0cnlpbmcKLSMgdG8gdXNlIG5jdXJzZXMgb24gdGhlIFVOSVggUEMsIHNpbmNlIG5jdXJzZXMgZG9lc24ndCBwcm9wZXJseSBoYW5kbGUgdGhlCi0jIEdVSS4gVW5mb3J0dW5hdGVseSwgdGhlIHRlcm1pbmZvIGVudHJ5IChhbmQgdGhlIHRlcm1jYXAsIHRvbywgSSBwcmVzdW1lKQotIyBzZWVtIHRvIGhhdmUgYmVlbiBidWlsdCBmcm9tIHRoZSBtYW51YWwgZGVzY3JpYmluZyB0aGUgVlQxMDAgc2VxdWVuY2VzLgotIyBUaGlzIG1lYW5zIGl0IGRvZXNuJ3Qgd29yayBmb3IgYSByZWFsIGxpdmUgVU5JWCBQQy4KLSMKLSMgRk9OVFM6IFRoZSBVTklYIFBDIGFsc28gaGFzIGEgc3RyYW5nZSBpbnRlcnByZXRhdGlvbiBvZiAiYWx0ZXJuYXRlCi0jIGNoYXJhY3RlciBzZXQiLiBSYXRoZXIgdGhhbiB0aGUgVlQxMDAgZ3JhcGhpY3MgeW91IG1pZ2h0IGV4cGVjdCwgaXQgYWxsb3dzCi0jIHVwIHRvIDggY3VzdG9tIGZvbnRzIHRvIGJlIGxvYWRlZCBhdCBhbnkgZ2l2ZW4gdGltZS4gVGhpcyBtZWFucyB0aGF0Ci0jIHByb2dyYW1zIGV4cGVjdGluZyBWVDEwMCBncmFwaGljcyB3aWxsIHVzdWFsbHkgYmUgZGlzYXBwb2ludGVkLiBGb3IgdGhpcwotIyByZWFzb24gSSBoYXZlIGRpc2FibGVkIHRoZSBzbWFjcy9ybWFjcyBzZXF1ZW5jZXMsIGJ1dCB0aGV5IGNvdWxkIGVhc2lseSBiZQotIyByZS1lbmFibGVkLiBIZXJlIGFyZSB0aGUgcmVsZXZhbnQgY29udHJvbCBzZXF1ZW5jZXMgKGZyb20gdGhlIEVTQ0FQRSg3KQotIyBtYW5wYWdlKSwgc2hvdWxkIHlvdSB3aXNoIHRvIGRvIHNvOgotIwotIyBTR1IxMCAtIFNlbGVjdCBmb250IDAgLSBFU0MgWyAxMCBtIG9yIFNPCi0jIFNHUjExIC0gU2VsZWN0IGZvbnQgMSAtIEVTQyBbIDExIG0gb3IgU0kKLSMgU0dSMTIgLSBTZWxlY3QgZm9udCAyIC0gRVNDIFsgMTIgbQotIyAuLi4gKGV0Yy4pCi0jIFNHUjE3IC0gU2VsZWN0IGZvbnQgNyAtIEVTQyBbIDE3IG0KLSMKLSMgR3JhcGhpY3MgZm9yIGxpbmUgZHJhd2luZyBhcmUgbm90IHJlbGlhYmx5IGZvdW5kIGF0ICphbnkqIGNoYXJhY3RlcgotIyBsb2NhdGlvbiBiZWNhdXNlIHRoZSBVTklYIFBDIGhhcyBkeW5hbWljYWxseSByZWxvYWRhYmxlIGZvbnRzLiBJIHVzZSBmb250Ci0jIDAgZm9yIHJlZ3VsYXIgdGV4dCBhbmQgZm9udCAxIGZvciBpdGFsaWNzLCBidXQgdGhpcyBpcyBieSBubyBtZWFucwotIyB1bml2ZXJzYWwuIFNvIEFTQ0lJIGxpbmUgZHJhd2luZyBpcyBpbiBvcmRlciBpZiBzbWFjcy9ybWFjcyBhcmUgZW5hYmxlZC4KLSMKLSMgTUlTQzogVGhlIGN1cnNvciB2aXNpYmxlL2N1cnNvciBpbnZpc2libGUgc2VxdWVuY2VzIHdlcmUgc3dhcHBlZCBpbiB0aGUKLSMgZGlzdHJpYnV0ZWQgdGVybWluZm8uCi0jCi0jIFRvIGFtZWxpb3JhdGUgdGhlc2UgcHJvYmxlbXMgKGFuZCBmaXggYSBmZXcgaGlnaGxpZ2h0aW5nIGJ1Z3MpIEkgcmV3cm90ZQotIyB0aGUgVU5JWCBQQyB0ZXJtaW5mbyBlbnRyeS4gVGhlIG1vZGlmaWVkIHZlcnNpb24gd29ya3MgZ3JlYXQgd2l0aCBMeW54LAotIyBFbWFjcywgYW5kIFhFbWFjcyBydW5uaW5nIG9uIG15IExpbnV4IFBDIGFuZCBkaXNwbGF5aW5nIG9uIHRoZSBVTklYIFBDCi0jIGF0dGFjaGVkIGJ5IHNlcmlhbCBjYWJsZS4gSW4gRW1hY3MsIGV2ZW4gdGhlIFVuZG8ga2V5IHdvcmtzLCBhbmQgbWFueQotIyBhcHBsaWNhdGlvbnMgY2FuIG5vdyB1c2UgdGhlIEYxLUY4IGtleXMuCi0jCi0jIGVzcidzIG5vdGVzOgotIwlUZXJtaW5mbyBlbnRyeSBmb3IgdGhlIEFUJlQgVW5peCBQQyA3MzAwCi0jCWZyb20gZXNjYXBlKDcpIGluIFVuaXggUEMgNzMwMCBNYW51YWwuCi0jCVNvbWV3aGF0IHNpbWlsYXIgdG8gYSB2dDEwMC1hbSAoYnV0IGRpZmZlcmVudCBlbm91Z2gKLSMJdG8gcmVkbyB0aGlzIGZyb20gc2NyYXRjaC4pCi0jCi0jCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMJKgotIwkqICAgICAgICAgICBGT05UIExPQURJTkcgUFJPR1JBTSBGT1IgVEhFIFVOSVggUEMKLSMJKgotIwkqICAgICBUaGlzIHJvdXRpbmUgbG9hZHMgYSBmb250IGRlZmluZWQgaW4gdGhlIGZpbGUgQUxURk9OVAotIwkqICAgICBpbnRvIGZvbnQgbWVtb3J5IHNsb3QgIzEuICBPbmNlIHRoZSBmb250IGhhcyBiZWVuIGxvYWRlZCwKLSMJKiAgICAgaXQgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIHNldC4KLSMJKgotIwkqICAgICBUaGUgY2FsbCB0byBpb2N0bCB3aXRoIHRoZSBhcmd1bWVudCBXSU9DTEZPTlQgaXMgdGhlIGtleQotIwkqICAgICB0byB0aGlzIHJvdXRpbmUuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHdpbmRvdyg3KSBpbgotIwkqICAgICB0aGUgUEMgNzMwMCBkb2N1bWVudGF0aW9uLgotIwkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jCSNpbmNsdWRlIDxzdHJpbmcuaD4JCS8qIG5lZWRlZCBmb3Igc3RyY3B5IGNhbGwgKi8KLSMJI2luY2x1ZGUgPHN5cy93aW5kb3cuaD4gICAgICAgICAvKiBuZWVkZWQgZm9yIGlvY3RsIGNhbGwgKi8KLSMJI2RlZmluZSBGTlNJWkUJNjAJCS8qIGZvbnQgbmFtZSBzaXplICovCi0jCSNkZWZpbmUgQUxURk9OVCAgIi91c3IvbGliL3dmb250L3NwZWNpYWwuOC5mdCIgIC8qIGZvbnQgZmlsZSAqLwotIwkvKgotIwkqICAgICBUaGUgZmlsZSAvdXNyL2xpYi93Zm9udC9zcGVjaWFsLjguZnQgY29tZXMgd2l0aCB0aGUKLSMJKiAgICAgc3RhbmRhcmQgUEMgc29mdHdhcmUuICBJdCBkZWZpbmVzIGEgZ3JhcGhpY3MgY2hhcmFjdGVyIHNldAotIwkqICAgICBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIFRlbGV0eXBlIDU0MjUgdGVybWluYWwuICBUbyB2aWV3Ci0jCSogICAgIHRoaXMgb3Igb3RoZXIgZm9udHMgaW4gL3Vzci9saWIvd2ZvbnQsIHVzZSB0aGUgY29tbWFuZAotIwkqICAgICBjZm9udCA8ZmlsZW5hbWU+LiAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gZm9udHMgc2VlCi0jCSogICAgIGNmb250KDEpIGluIHRoZSBQQyA3MzAwIGRvY3VtZW50YXRpb24uCi0jCSovCi0jCi0jCXN0cnVjdCBhbHRmZGF0YSAJLyogc3RydWN0dXJlIGZvciBhbHQgZm9udCBkYXRhICovCi0jCXsKLSMJc2hvcnQJYWx0Zl9zbG90OwkJLyogbWVtb3J5IHNsb3QgbnVtYmVyICovCi0jCWNoYXIJYWx0Zl9uYW1lW0ZOU0laRV07CS8qIGZvbnQgbmFtZSAoZmlsZSBuYW1lKSAqLwotIwl9OwotIwlsZGZvbnQoKQotIwl7Ci0jCQlpbnQgd2Q7CQkvKiB3aW5kb3cgaW4gd2hpY2ggYWx0Zm9udCB3aWxsIGJlICovCi0jCQlzdHJ1Y3QgYWx0ZmRhdGEgYWx0ZjsKLSMJCWFsdGYuYWx0Zl9zbG90PTE7Ci0jCQlzdHJjcHkoYWx0Zi5hbHRmX25hbWUsQUxURk9OVCk7Ci0jCQlmb3IgKHdkID0xOyB3ZCA8IDEyOyB3ZCsrKSB7Ci0jCQkgICAgIGlvY3RsKHdkLCBXSU9DTEZPTlQsJmFsdGYpOwotIwkgICAgICAgIH0KLSMJfQotIwotIyAoYXR0NzMwMDogYWRkZWQgPGNpdmlzPi88Y25vcm0+LzxpY2gxPi88aW52aXM+IGZyb20gdGhlIEJTREkgZW50cnksCi0jIHRoZXkncmUgY29uZmlybWVkIGJ5IHRoZSBtYW4gcGFnZSBmb3IgdGhlIFN5c3RlbSBWIGRpc3BsYXktLS1lc3IpCi0jCi1hdHQ3MzAwfHVuaXhwY3xwYzczMDB8M2IxfHM0fEFUJlQgVU5JWCBQQyBNb2RlbCA3MzAwLAotCWFtLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBibGluaz1cRVs5bSwgYm9sZD1cRVsxbSwgY2J0PVxFXkksIGNpdmlzPVxFWz0xQywKLQljbGVhcj1cRVsySlxFW0gsIGNub3JtPVxFWz0wQywgY3I9Xk0sIGN1Yj1cRVslcDElZEQsCi0JY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWQ9XEVbMEosIGVsPVxFWzBLLCBob21lPVxFW0gsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XkosIGludmlzPVxFWzltLCBpczE9XDAxN1xFWz0xdywga0JFRz1cRU5CLAotCWtDQU49XEVPVywga0NQWT1cRU5ELCBrQ1JUPVxFT04sIGtEQz1cRU5GLCBrREw9XEVORSwKLQlrRU5EPVxFTk4sIGtFT0w9XEVPQSwga0ZORD1cRU9YLCBrSExQPVxFT00sIGtIT009XEVOTSwKLQlrSUM9XEVOSiwga0xGVD1cRU5LLCBrTU9WPVxFTkMsIGtOWFQ9XEVOSCwga09QVD1cRU9SLAotCWtQUlY9XEVORywga1JETz1cRU9ULCBrUklUPVxFTkwsIGtSUEw9XEVPWSwga1NBVj1cRU9PLAotCWtVTkQ9XEVPUywga2JlZz1cRU5iLCBrYnM9XkgsIGtjYW49XEVPdywga2NidD1cRVtaLAotCWtjbG89XEVPViwga2Nscj1cRVtKLCBrY21kPVxFT3UsIGtjcHk9XEVOZCwga2NydD1cRU9uLAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFTmYsCi0Ja2VkPVxFW0osIGtlbD1cRU9hLCBrZW5kPVxFMCwga2V4dD1cRU9rLCBrZjE9XEVPYywga2YyPVxFT2QsCi0Ja2YzPVxFT2UsIGtmND1cRU9mLCBrZjU9XEVPZywga2Y2PVxFT2gsIGtmNz1cRU9pLCBrZjg9XEVPaiwKLQlrZm5kPVxFT3gsIGtobHA9XEVPbSwga2hvbWU9XEVbSCwga2ljaDE9XEVOaiwga2luZD1cRVtCLAotCWttb3Y9XEVOYywga21yaz1cRU5pLCBrbnA9XEVbVSwga254dD1cRU5oLCBrb3BuPVxFT3YsCi0Ja29wdD1cRU9yLCBrcHA9XEVbViwga3BydD1cRU96LCBrcHJ2PVxFTmcsIGtyZG89XEVPdCwKLQlrcmVmPVxFT2IsIGtyZnI9XEVOYSwga3JpPVxFW0EsIGtycGw9XEVPeSwga3JzdD1cRU9CLAotCWtzYXY9XEVPbywga3NsdD1cRU5JLCBrdW5kPVxFT3MsIG5lbD1cRUUsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtc289XEVbbSwgcm11bD1cRVttLCBzZ3IwPVxFWzA7MTBtLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sCi0KLSMgU2VudCBieSBTdGVmYW4gU3RhcGVsYmVyZyA8c3RlZmFuQHJlbnQtYS1ndXJ1LmRlPiwgMjQgRmViIDE5OTcsIHRoaXMgaXMKLSMgZnJvbSBTR0kncyB0ZXJtaW5mbyBkYXRhYmFzZS4gIFNHSSdzIGVudHJ5IHNob3dzIEY5LUYxMiB3aXRoIHRoZSBjb2RlcwotIyBmb3IgdGhlIGFwcGxpY2F0aW9uIGtleXBhZCBtb2RlLiAgV2UgaGF2ZSBhZGRlZCBpcmlzLWFuc2ktYXAgcmF0aGVyIHRoYW4KLSMgY2hhbmdlIHRoZSBvcmlnaW5hbCB0byBrZXlwYWQgbW9kZS4KLSMKLSMgKGlyaXMtYW5zaTogYWRkZWQgcm1hbS9zbWFtIGJhc2VkIG9uIGluaXQgc3RyaW5nIC0tIGVzcikKLSMKLSMgVGhpcyBlbnRyeSwgYW5kIHRob3NlIGRlcml2ZWQgZnJvbSBpdCwgaXMgdXNlZCBpbiB4d3NoIChhbHNvIGtub3duIGFzCi0jIHdpbnRlcm0pLiAgU29tZSBjYXBhYmlsaXRpZXMgdGhhdCBkbyBub3QgZml0IGludG8gdGhlIHRlcm1pbmZvIG1vZGVsCi0jIGluY2x1ZGUgdGhlIHNoaWZ0LSBhbmQgY29udHJvbC1mdW5jdGlvbmtleXM6Ci0jCi0jIEYxLUYxMiBnZW5lcmF0ZSBkaWZmZXJlbnQgY29kZXMgd2hlbiBzaGlmdCBvciBjb250cm9sIG1vZGlmaWVycyBhcmUgdXNlZC4KLSMgRm9yIGV4YW1wbGU6Ci0jCUYxICAgICAgCVxFWzAwMXEKLSMJc2hpZnQgRjEJXEVbMDEzcQotIwljb250cm9sLUYxCVxFWzAyNXEKLSMKLSMgSW4gYXBwbGljYXRpb24ga2V5cGFkIG1vZGUsIEY5LUYxMiBnZW5lcmF0ZSBjb2RlcyBsaWtlIHZ0MTAwIFBGMS1QRjQsIGkuZS4sCi0jIFxFT1AgdG8gXEVPUy4gIFRoZSBzaGlmdGVkIGFuZCBjb250cm9sIG1vZGlmaWVycyBzdGlsbCBkbyB0aGUgc2FtZSB0aGluZy4KLSMKLSMgVGhlIGN1cnNvciBrZXlzIGFsc28gaGF2ZSBkaWZmZXJlbnQgY29kZXM6Ci0jCWNvbnRyb2wtdXAJXEVbMTYycQotIwljb250cm9sLWRvd24JXEVbMTY1cQotIwljb250cm9sLWxlZnQJXEVbMTU5cQotIwljb250cm9sLXJpZ2h0CVxFWzE2OHEKLSMKLSMJc2hpZnQtdXAJXEVbMTYxcQotIwlzaGlmdC1kb3duCVxFWzE2NHEKLSMJc2hpZnQtbGVmdAlcRVsxNThxCi0jCXNoaWZ0LXJpZ2h0CVxFWzE2N3EKLSMKLSMJY29udHJvbC10YWIJXFswNzJxCi0jCi1pcmlzLWFuc2l8aXJpcy1hbnNpLW5ldHxJUklTIGVtdWxhdGluZyA0MCBsaW5lIEFOU0kgdGVybWluYWwgKGFsbW9zdCBWVDEwMCksCi0JYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjNDAsCi0JYmVsPV5HLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMkosCi0JY25vcm09XEVbOS95XEVbMTIveVxFWz02bCwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsCi0JY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgY3Z2aXM9XEVbMTAveVxFWz0xaFxFWz0ybFxFWz02aCwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEVbPzFsXEU+XEVbPzdoXEVbMTAwZ1xFWzBtXEU3XEVbclxFOCwga0RDPVxFW1AsCi0Ja0VORD1cRVsxNDdxLCBrSE9NPVxFWzE0M3EsIGtMRlQ9XEVbMTU4cSwga1BSVD1cRVsyMTBxLAotCWtSSVQ9XEVbMTY3cSwga1NQRD1cRVsyMThxLCBrYnM9XkgsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cMTc3LAotCWtlbmQ9XEVbMTQ2cSwga2VudD1eTSwga2YxPVxFWzAwMXEsIGtmMTA9XEVbMDEwcSwKLQlrZjExPVxFWzAxMXEsIGtmMTI9XEVbMDEycSwga2YyPVxFWzAwMnEsIGtmMz1cRVswMDNxLAotCWtmND1cRVswMDRxLCBrZjU9XEVbMDA1cSwga2Y2PVxFWzAwNnEsIGtmNz1cRVswMDdxLAotCWtmOD1cRVswMDhxLCBrZjk9XEVbMDA5cSwga2hvbWU9XEVbSCwga2ljaDE9XEVbMTM5cSwKLQlrbnA9XEVbMTU0cSwga3BwPVxFWzE1MHEsIGtwcnQ9XEVbMjA5cSwga3JtaXI9XEVbMTQ2cSwKLQlrc3BkPVxFWzIxN3EsIG5lbD1cRUUsIHBma2V5PVxFUDEwMTslcDElZC55JXAyJXNcRVxcLAotCXJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYW09XEVbPzdsLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzYz1cRTcsIHNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNtc289XEVbMTs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbM2csCi1pcmlzLWFuc2ktYXB8SVJJUyBBTlNJIGluIGFwcGxpY2F0aW9uLWtleXBhZCBtb2RlLAotCWlzMj1cRVs/MWxcRT1cRVs/N2gsIGtlbnQ9XEVPTSwga2YxMD1cRVswMTBxLAotCWtmMTE9XEVbMDExcSwga2YxMj1cRVswMTJxLCBrZjk9XEVbMDA5cSwgdXNlPWlyaXMtYW5zaSwKLQotIyBGcm9tIHRoZSBtYW4tcGFnZSwgdGhpcyBpcyBhIHF1YXNpLXZ0MTAwIGVtdWxhdG9yIHRoYXQgcnVucyBvbiBTR0kncyBJUklYCi0jIChULkRpY2tleSA5OC8xLzI0KQotaXJpcy1jb2xvcnx4d3NofElSSVggQU5TSSB3aXRoIGNvbG9yLAotCW5jdiMzMywKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGRjaD1cRVslcDElZFAsIGRpbT1cRVsybSwKLQllY2g9XEVbJXAxJWRYLCBpY2g9XEVbJXAxJWRALCByYz1cRTgsIHJpdG09XEVbMjNtLAotCXJtdWw9XEVbMjRtLCByczE9XEVjLAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzaXRtPVxFWzNtLCB1c2U9dnQxMDArZW5xLCB1c2U9a2xvbmUrY29sb3IsCi0JdXNlPWlyaXMtYW5zaS1hcCwKLQotIyBUaGUgZm9sbG93aW5nIGlzIGEgdmVyc2lvbiBvZiB0aGUgaWJtLXBjIGVudHJ5IGRpc3RyaWJ1dGVkIHdpdGggUEMvSVgsCi0jIChJbnRlcmFjdGl2ZSBTeXN0ZW1zJyBTeXN0ZW0gMyBmb3IgdGhlIEJpZyBCbHVlKSwgbW9kaWZpZWQgYnkgUmljaGFyZAotIyBNY0ludG9zaCBhdCBVQ0IvQ1NNLiAgVGhlIDpwdDogYW5kIDp1YzogaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb3JpZ2luYWwsCi0jICh0aGUgZm9ybWVyIGlzIHVudHJ1ZSwgYW5kIHRoZSBsYXR0ZXIgZmFpbGVkIHVuZGVyIFVDQi9tYW4pOyBzdGFuZG91dCBhbmQKLSMgdW5kZXJsaW5lIG1vZGVzIGhhdmUgYmVlbiBhZGRlZC4gIE5vdGU6IHRoaXMgZW50cnkgZGVzY3JpYmVzIHRoZSAibmF0aXZlIgotIyBjYXBhYmlsaXRpZXMgb2YgdGhlIFBDIG1vbm9jaHJvbWUgZGlzcGxheSwgd2l0aG91dCBBTlkgZW11bGF0aW9uOyBtb3N0Ci0jIGNvbW11bmljYXRpb25zIHBhY2thZ2VzIChidXQgTk9UIFBDL0lYIGNvbm5lY3QpIGRvIHNvbWUga2luZCBvZiBlbXVsYXRpb24uCi1wY2l4fFBDL0lYIGNvbnNvbGUsCi0JYW0sIGJ3LCBlbywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRWMsIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSUyZDslcDIlMmRILCBjdXUxPVxFW0EsIGVkPVxFW0osIGVsPVxFW0ssCi0JaG9tZT1cRVtILCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sCi0KLSMgKGlibXBjeDogdGhpcyBlbnRyeSB1c2VkIHRvIGJlIGtub3duIGFzIGlibXguCi0jIEl0IGZvcm1lcmx5IGluY2x1ZGVkIHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIGNhcGFiaWxpdGllczoKLSMJOkdDPWI6R0w9djpHUj10OlJUPV5KOlwKLSMJOkdIPVxFWzE5Nmc6R1Y9XEVbMTc5ZzpcCi0jCTpHVT1cRVsxOTNnOkdEPVxFWzE5NGc6XAotIwk6RzE9XEVbMTkxZzpHMj1cRVsyMThnOkczPVxFWzE5Mmc6RzQ9XEVbMjE3ZzpcCi0jCTpDVz1cRVtFOk5VPVxFW0Y6UkY9XEVbRzpSQz1cRVtIOlwKLSMJOldMPVxFW0s6V1I9XEVbTDpDTD1cRVtNOkNSPVxFW046XAotIyBJIHJlbmFtZWQgR1MvR0UvV0wvV1IvQ0wvQ1IvUFUvUEQvSE0vRU47IGFsc28sIHJlbW92ZWQgYSBkdXBsaWNhdGUKLSMgIjpraD1cRVtZOiIuICBBZGRlZCBJQk0tUEMgZm9ybXMgY2hhcmFjdGVycyBhbmQgaGlnaGxpZ2h0cywgdGhleSBtYXRjaAotIyB3aGF0IHdhcyB0aGVyZSBiZWZvcmUuIC0tIGVzcikKLWlibXBjeHx4ZW5peHxpYm14fElCTSBQQyB4ZW5peCBjb25zb2xlIGRpc3BsYXksCi0JT1RicywgYW0sIG1zZ3IsCi0JY29scyM4MCwgbGluZXMjMjUsCi0JY2xlYXI9XkwsIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGljaDE9XEVbQCwgaWwxPVxFW0wsIGticz1eSCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZW5kPVxFW2QsCi0Ja2YxPVxFW0ssIGtmMj1cRVtMLCBrZjM9XEVbTSwga2Y0PVxFW04sIGtob21lPVxFW1ksIGtucD1cRVtlLAotCWtwcD1cRVtaLCB1c2U9a2xvbmUrYWNzLCB1c2U9a2xvbmUrc2dyOCwKLQotIyMjIyBRTlgKLSMKLQotIyBRTlggNC4wIENvbnNvbGUKLSMgTWljaGFlbCdzIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBlbnRyeSBoYWQgPGFtQD4sIDxzbWN1cD1cRWk+LAotIyA8cm1jdXA9XEVoXEVSPjsgdGhpcyB3YXMgc28gdGVybWluZm8gYXBwbGljYXRpb25zIGNvdWxkIHdyaXRlIHRoZSBsb3dlcgotIyByaWdodCBjb3JuZXIgd2l0aG91dCB0cmlnZ2VyaW5nIGEgc2Nyb2xsLiAgVGhlIG5jdXJzZXMgdGVybWluZm8gbGlicmFyeSBjYW4KLSMgaGFuZGxlIHRoaXMgY2FzZSB3aXRoIHRoZSA8aWNoMT4gY2FwYWJpbGl0eSwgYW5kIHByZWZlcnMgPGFtPiBmb3IgYmV0dGVyCi0jIG9wdGltaXphdGlvbi4gIEJ1ZzogVGhlIDxvcD4gY2FwYWJpbGl0eSByZXNldHMgYXR0cmlidXRlcy4KLSMgRnJvbTogTWljaGFlbCBIdW50ZXIgPG1waHVudGVyQHFueC5jb20+IDMwIEp1bCAxOTk2Ci0jIChyZW1vdmVkOiA8c2dyPSU/JXAxJXRcRTwlOyVwMiV0XEVbJTslcDMldFxFKCU7JXA0JXRcRXslOyVwNiV0XEU8JTssPikKLXFueHxxbng0fHFueCBjb25zb2xlLAotCWRhaXN5LCBrbSwgbWlyLCBtc2dyLCB4aHBhLCB4dCwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjNCwgbGluZXMjMjUsIG5jdiMzLCBwYWlycyM4LAotCWFjc2M9T1wzMzNhXDI2MWpcMzMxa1wyNzdsXDMzMm1cMzAwblwzMDVvXDMzN3FcMzA0c1wzMzR0XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzLAotCWJlbD1eRywgYmxpbms9XEV7LCBib2xkPVxFPCwgY2l2aXM9XEV5MCwgY2xlYXI9XEVIXEVKLAotCWNub3JtPVxFeTEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgY3Z2aXM9XEV5MiwKLQlkY2gxPVxFZiwgZGwxPVxFRiwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWNoMT1cRWUsCi0JaWwxPVxFRSwgaW5kPV5KLCBrQkVHPVwzNzdcMzU2LCBrQ0FOPVwzNzdcMjYzLAotCWtDTUQ9XDM3N1wyNjcsIGtDUFk9XDM3N1wzNjMsIGtDUlQ9XDM3N1wzNjQsCi0Ja0RMPVwzNzdcMzY2LCBrRU5EPVwzNzdcMzAxLCBrRU9MPVwzNzdcMzExLAotCWtFWFQ9XDM3N1wzNjcsIGtGTkQ9XDM3N1wzNzAsIGtITFA9XDM3N1wzNzEsCi0Ja0hPTT1cMzc3XDI2MCwga0lDPVwzNzdcMzQwLCBrTEZUPVwzNzdcMjY0LAotCWtNT1Y9XDM3N1wzMDYsIGtNU0c9XDM3N1wzMDQsIGtOWFQ9XDM3N1wyNzIsCi0Ja09QVD1cMzc3XDM3Miwga1BSVD1cMzc3XDI3NSwga1BSVj1cMzc3XDI2MiwKLQlrUkRPPVwzNzdcMzE1LCBrUkVTPVwzNzdcMzc0LCBrUklUPVwzNzdcMjY2LAotCWtSUEw9XDM3N1wzNzMsIGtTQVY9XDM3N1wzMDcsIGtTUEQ9XDM3N1wzMDMsCi0Ja1VORD1cMzc3XDMzNywga2JlZz1cMzc3XDMwMCwga2Nhbj1cMzc3XDI0Mywga2NidD1cMzc3XDAsCi0Ja2Nsbz1cMzc3XDM0Mywga2Nscj1cMzc3XDM0MSwga2NtZD1cMzc3XDI0NSwKLQlrY3B5PVwzNzdcMjY1LCBrY3J0PVwzNzdcMzA1LCBrY3RhYj1cMzc3XDIzNywKLQlrY3ViMT1cMzc3XDI0NCwga2N1ZDE9XDM3N1wyNTEsIGtjdWYxPVwzNzdcMjQ2LAotCWtjdXUxPVwzNzdcMjQxLCBrZGNoMT1cMzc3XDI1NCwga2RsMT1cMzc3XDI3NCwKLQlrZWQ9XDM3N1wzMTQsIGtlbD1cMzc3XDMxMCwga2VuZD1cMzc3XDI1MCwga2VudD1cMzc3XDMyMCwKLQlrZXh0PVwzNzdcMjcwLCBrZjE9XDM3N1wyMDEsIGtmMTA9XDM3N1wyMTIsCi0Ja2YxMT1cMzc3XDI1Niwga2YxMj1cMzc3XDI1Nywga2YxMz1cMzc3XDIxMywKLQlrZjE0PVwzNzdcMjE0LCBrZjE1PVwzNzdcMjE1LCBrZjE2PVwzNzdcMjE2LAotCWtmMTc9XDM3N1wyMTcsIGtmMTg9XDM3N1wyMjAsIGtmMTk9XDM3N1wyMjEsCi0Ja2YyPVwzNzdcMjAyLCBrZjIwPVwzNzdcMjIyLCBrZjIxPVwzNzdcMjIzLAotCWtmMjI9XDM3N1wyMjQsIGtmMjM9XDM3N1wzMzMsIGtmMjQ9XDM3N1wzMzQsCi0Ja2YyNT1cMzc3XDIyNSwga2YyNj1cMzc3XDIyNiwga2YyNz1cMzc3XDIyNywKLQlrZjI4PVwzNzdcMjMwLCBrZjI5PVwzNzdcMjMxLCBrZjM9XDM3N1wyMDMsCi0Ja2YzMD1cMzc3XDIzMiwga2YzMT1cMzc3XDIzMywga2YzMj1cMzc3XDIzNCwKLQlrZjMzPVwzNzdcMjM1LCBrZjM0PVwzNzdcMjM2LCBrZjM1PVwzNzdcMjc2LAotCWtmMzY9XDM3N1wyNzcsIGtmMzc9XDM3N1wzMjEsIGtmMzg9XDM3N1wzMjIsCi0Ja2YzOT1cMzc3XDMyMywga2Y0PVwzNzdcMjA0LCBrZjQwPVwzNzdcMzI0LAotCWtmNDE9XDM3N1wzMjUsIGtmNDI9XDM3N1wzMjYsIGtmNDM9XDM3N1wzMjcsCi0Ja2Y0ND1cMzc3XDMzMCwga2Y0NT1cMzc3XDMzMSwga2Y0Nj1cMzc3XDMzMiwKLQlrZjQ3PVwzNzdcMzE2LCBrZjQ4PVwzNzdcMzE3LCBrZjU9XDM3N1wyMDUsIGtmNj1cMzc3XDIwNiwKLQlrZjc9XDM3N1wyMDcsIGtmOD1cMzc3XDIxMCwga2Y5PVwzNzdcMjExLCBrZm5kPVwzNzdcMzQ2LAotCWtobHA9XDM3N1wzNTAsIGtob21lPVwzNzdcMjQwLCBraHRzPVwzNzdcMzQyLAotCWtpY2gxPVwzNzdcMjUzLCBraWwxPVwzNzdcMjczLCBraW5kPVwzNzdcMjYxLAotCWttb3Y9XDM3N1wzNTEsIGttcms9XDM3N1wzNTUsIGttc2c9XDM3N1wzNDUsCi0Ja25wPVwzNzdcMjUyLCBrbnh0PVwzNzdcMzEyLCBrb3BuPVwzNzdcMzU3LAotCWtvcHQ9XDM3N1wzNTMsIGtwcD1cMzc3XDI0Miwga3BydD1cMzc3XDI1NSwKLQlrcHJ2PVwzNzdcMzAyLCBrcmRvPVwzNzdcMzM2LCBrcmVmPVwzNzdcMzU0LAotCWtyZXM9XDM3N1wzNjAsIGtyZnI9XDM3N1wzNDcsIGtyaT1cMzc3XDI3MSwKLQlrcm1pcj1cMzc3XDMxMywga3JwbD1cMzc3XDM2Miwga3JzdD1cMzc3XDM1MiwKLQlrc2F2PVwzNzdcMzYxLCBrc2x0PVwzNzdcMjQ3LCBrc3BkPVwzNzdcMzM1LAotCWt0YmM9XDM3N1wzNDQsIGt1bmQ9XDM3N1wzNjUsIG12cGE9XEUhJXAxJTAyZCwgb3A9XEVSLAotCXJlcD1cRWclcDIlezMyfSUrJWMlcDElYywgcmV2PVxFKCwgcmk9XEVJLCBybWN1cD1cRWhcRVIsCi0Jcm1zbz1cRSksIHJtdWw9XEVdLCByczE9XEVSLCBzZXRiPVxFQCVwMSVQYiVnYiVnZiVkJWQsCi0Jc2V0Zj1cRUAlcDElUGYlZ2IlZ2YlZCVkLCBzZ3IwPVxFfVxFXVxFPlxFKSwgc21jdXA9XEVpLAotCXNtc289XEUoLCBzbXVsPVxFWywKLSMKLSMKLXFueHR8cW54dDR8UU5YNCB0ZXJtaW5hbCwKLQljcnhtLCB1c2U9cW54NCwKLSMKLXFueG18UU5YNCB3aXRoIG1vdXNlIGV2ZW50cywKLQltYWRkciMxLAotCWNocj1cRS8sIGN2cj1cRSIsIGlzMT1cRS8wdCwgbWN1Yj1cRS8+MWgsIG1jdWIxPVxFLz43aCwKLQltY3VkPVxFLz4xaCwgbWN1ZDE9XEUvPjFsXEUvPjloLCBtY3VmPVxFLz4xaFxFLz45bCwKLQltY3VmMT1cRS8+N2wsIG1jdXU9XEUvPjZoLCBtY3V1MT1cRS8+NmwsIHJtaWNtPVxFLz4ybCwKLQlzbWljbT1cRS8+MmgsIHVzZT1xbng0LAotIwotcW54d3xRTlg0IHdpbmRvd3MsCi0JeHZwYSwgdXNlPXFueG0sCi0jCi0jCU1vbm9jaHJvbWUgUU5YNCB0ZXJtaW5hbCBvciBjb25zb2xlLiBTZXR0aW5nIHRoaXMgdGVybWluYWwgdHlwZSB3aWxsCi0jCWFsbG93IGFuIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gYSBjb2xvciBjb25zb2xlIHRvIGJlaGF2ZSBhcyBpZiBpdAotIwl3ZXJlIGEgbW9ub2Nocm9tZSB0ZXJtaW5hbC4gT3V0cHV0IHdpbGwgYmUgdGhyb3VnaCBzdGRvdXQgaW5zdGVhZCBvZgotIwljb25zb2xlIHdyaXRlcyBiZWNhdXNlIHRoZSB0ZXJtIHJvdXRpbmVzIHdpbGwgcmVjb2duaXplIHRoYXQgdGhlCi0jCXRlcm1pbmFsIG5hbWUgc3RhcnRzIHdpdGggJ3FueHQnLgotIwotcW54dG1vbm98TW9ub2Nocm9tZSBRTlg0IHRlcm1pbmFsIG9yIGNvbnNvbGUsCi0JY29sb3JzQCwgcGFpcnNALAotCXNjcEAsIHVzZT1xbng0LAotCi0jIEZyb206IEZlZGVyaWNvIEJpYW5jaGkgPGJpYW5jaGlAcGMtYXJ0ZTIuYXJ0ZS51bmlwaS5pdD4sIDEgSnVsIDE5OTgKLSMgKGVzcjogY29tbWVudGVkIG91dCA8c2NwPiBhbmQgPHJtY3VwPiB0byBhdm9pZCB3YXJuaW5ncy4pCi0jIChURDogZGVyaXZlIGZyb20gb3JpZ2luYWwgcW54NCBlbnRyeSkKLXFueHQyfHFueCAyLjE1IHNlcmlhbCB0ZXJtaW5hbCwKLQlhbSwKLQljaXZpc0AsIGNub3JtQCwgY3Z2aXNALCBkY2gxQCwgaWNoMUAsIGtSRVNALCBrUlBMQCwga1VOREAsIGtzcGRALAotCXJlcEAsIHJtY3VwQCwgcm1zbz1cRT4sIHNldGJALCBzZXRmQCwgc21jdXBALCBzbXNvPVxFPCwgdXNlPXFueDQsCi0KLSMgUU5YIEFOU0kgdGVybWluYWwgZGVmaW5pdGlvbgotcWFuc2ktZ3xRTlggQU5TSSwKLQlhbSwgZXNsb2ssIGhzLCB4b24sCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LCBuY3YjMTksIHBhaXJzIzY0LCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fk9hLAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPzI1aFxFWz8xMmwsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVs/MTI7MjVoLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVsxTSwgZHNsPVxFW3IsIGVjaD1cRVslcDElZFgsIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLXEVbWCwgZmxhc2g9XEVbPzVoJDwyMDA+XEVbPzVsLAotCWZzbD1cRVs/NmhcRTgsIGhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRALCBpY2gxPVxFWzFALCBpbD1cRVslcDElZEwsIGlsMT1cRVsxTCwKLQlpbmQ9XEVbUywgaW5kbj1cRVslcDElZFMsIGludmlzPVxFWzltLAotCWlzMj1cRT5cRVs/MWxcRVs/N2hcRVswOzEwOzM5OzQ5bSwgaXMzPVxFKEJcRSkwLAotCWtCRUc9XEVObiwga0NBTj1cRVtzLCBrQ01EPVxFW3QsIGtDUFk9XEVOcywga0NSVD1cRU50LAotCWtETD1cRU52LCBrRVhUPVxFTncsIGtGTkQ9XEVOeCwga0hMUD1cRU55LCBrSE9NPVxFW2gsCi0Ja0xGVD1cRVtkLCBrTlhUPVxFW3UsIGtPUFQ9XEVOeiwga1BSVj1cRVt2LCBrUklUPVxFW2MsCi0Ja2JzPV5ILCBrY2FuPVxFW1MsIGtjYnQ9XEVbWiwga2Nsbz1cRU5jLCBrY2xyPVxFTmEsCi0Ja2NtZD1cRVtHLCBrY3B5PVxFW2csIGtjdGFiPVxFW3osIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbUCwga2RsMT1cRVtwLCBrZW5kPVxFW1ksCi0Ja2V4dD1cRVt5LCBrZjE9XEVPUCwga2YxMD1cRU9ZLCBrZjExPVxFT1osIGtmMTI9XEVPQSwKLQlrZjEzPVxFT3AsIGtmMTQ9XEVPcSwga2YxNT1cRU9yLCBrZjE2PVxFT3MsIGtmMTc9XEVPdCwKLQlrZjE4PVxFT3UsIGtmMTk9XEVPdiwga2YyPVxFT1EsIGtmMjA9XEVPdywga2YyMT1cRU94LAotCWtmMjI9XEVPeSwga2YyMz1cRU96LCBrZjI0PVxFT2EsIGtmMjU9XEVbMX4sIGtmMjY9XEVbMn4sCi0Ja2YyNz1cRVszfiwga2YyOD1cRVs0fiwga2YyOT1cRVs1fiwga2YzPVxFT1IsIGtmMzA9XEVbNn4sCi0Ja2YzMT1cRVs3fiwga2YzMj1cRVs4fiwga2YzMz1cRVs5fiwga2YzND1cRVsxMH4sCi0Ja2YzNT1cRVsxMX4sIGtmMzY9XEVbMTJ+LCBrZjM3PVxFWzE3fiwga2YzOD1cRVsxOH4sCi0Ja2YzOT1cRVsxOX4sIGtmND1cRU9TLCBrZjQwPVxFWzIwfiwga2Y0MT1cRVsyMX4sCi0Ja2Y0Mj1cRVsyMn4sIGtmNDM9XEVbMjN+LCBrZjQ0PVxFWzI0fiwga2Y0NT1cRVsyNX4sCi0Ja2Y0Nj1cRVsyNn4sIGtmNDc9XEVbMjd+LCBrZjQ4PVxFWzI4fiwga2Y1PVxFT1QsIGtmNj1cRU9VLAotCWtmNz1cRU9WLCBrZjg9XEVPVywga2Y5PVxFT1gsIGtmbmQ9XEVOZiwga2hscD1cRU5oLAotCWtob21lPVxFW0gsIGtodHM9XEVOYiwga2ljaDE9XEVbQCwga2lsMT1cRVtgLCBraW5kPVxFW2EsCi0Ja21vdj1cRU5pLCBrbXJrPVxFTm0sIGttc2c9XEVOZSwga25wPVxFW1UsIGtvcG49XEVObywKLQlrb3B0PVxFTmssIGtwcD1cRVtWLCBrcmVmPVxFTmwsIGtyZXM9XEVOcCwga3Jmcj1cRU5nLAotCWtyaT1cRVtiLCBrcnBsPVxFTnIsIGtyc3Q9XEVOaiwga3Nhdj1cRU5xLCBrc2x0PVxFW1QsCi0Ja3RiYz1cRU5kLCBrdW5kPVxFTnUsIGxsPVxFWzk5SCwgbmVsPVxFRSwgb3A9XEVbMzk7NDltLAotCXJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmV2PVxFWzdtLCByaT1cRVtULAotCXJpbj1cRVslcDElZFQsIHJtYWNzPV5PLCBybWFtPVxFWz83bCwgcm1zbz1cRVsyN20sCi0Jcm11bD1cRVsyNG0sIHJzMT1cMDE3XEVbPzdoXEVbMDszOTs0OW0kPDI+XEU+XEVbPzFsLAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsCi0Jc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDUldDsyJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCV0OzclOyU/JXA3JXQ7OSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVsyZywKLQl0c2w9XEU3XEUxOzI0clxFWz82bFxFWzI1OyVpJXAxJWRILAotIwotcWFuc2l8UU5YIGFuc2kgd2l0aCBjb25zb2xlIHdyaXRlcywKLQlkYWlzeSwgeGhwYSwgdXNlPXFhbnNpLWcsCi0jCi1xYW5zaS10fFFOWCBhbnNpIHdpdGhvdXQgY29uc29sZSB3cml0ZXMsCi0JY3J4bSwgdXNlPXFhbnNpLAotIwotcWFuc2ktbXxRTlggYW5zaSB3aXRoIG1vdXNlLAotCW1hZGRyIzEsCi0JY2hyPVxFWywgY3ZyPVxFXSwgaXMxPVxFWzB0LCBtY3ViPVxFWz4xaCwgbWN1YjE9XEVbPjdoLAotCW1jdWQ9XEVbPjFoLCBtY3VkMT1cRVs+MWxcRVs+OWgsIG1jdWY9XEVbPjFoXEVbPjlsLAotCW1jdWYxPVxFWz43bCwgbWN1dT1cRVs+NmgsIG1jdXUxPVxFWz42bCwgcm1pY209XEVbPjJsLAotCXNtaWNtPVxFWz4yaCwgdXNlPXFhbnNpLAotIwotcWFuc2ktd3xRTlggYW5zaSBmb3Igd2luZG93cywKLQl4dnBhLCB1c2U9cWFuc2ktbSwKLQotIyMjIyBOZXRCU0QgY29uc29sZXMKLSMKLSMgcGN2dCB0ZXJtY2FwIGRhdGFiYXNlIGVudHJpZXMgKGNvcnJlc3BvbmRpbmcgdG8gcmVsZWFzZSAzLjMxKQotIyBBdXRob3IncyBsYXN0IGVkaXQtZGF0ZTogW0ZyaSBTZXAgMTUgMjA6Mjk6MTAgMTk5NV0KLSMKLSMgKEZvciB0aGUgdGVybWluZm8gbWFzdGVyIGZpbGUsIEkgdHJhbnNsYXRlZCB0aGVzZSBpbnRvIHRlcm1pbmZvIHN5bnRheC4KLSMgVGhlbiBJIGRyb3BwZWQgYWxsIHRoZSBwc2V1ZG8tSFAgZW50cmllcy4gd2UgZG9uJ3Qgd2FudCBhbmQgY2FuJ3QgdXNlCi0jIHRoZSA6WHM6IGZsYWcuIFRoZW4gSSBzcGxpdCA6aXM6IGludG8gYSBzaXplLWluZGVwZW5kZW50IDxpczE+IGFuZCBhCi0jIHNpemUtZGVwZW5kZW50IDxpczI+LiAgRmluYWxseSwgSSBhZGRlZCA8cm1hbT4vPHNtYW0+IC0tIGVzcikKLQotIyBOT1RFOiA8aWNoMT4gaGFzIGJlZW4gdGFrZW4gb3V0IG9mIHRoaXMgZW50cnkuIGZvciByZWZlcmVuY2UsIGl0IHNob3VsZAotIyBiZSA8aWNoMT1cRVtAPi4gIEZvciBkaXNjdXNzaW9uLCBzZWUgSUNIL0lDSDEgVkVSU1VTIFJNSVIvU01JUiBiZWxvdy4KLSMgKGVzcjogYWRkZWQgPGNpdmlzPiBhbmQgPGNub3JtPiB0byByZXNvbHZlIE5ldEJTRCBQcm9ibGVtIFJlcG9ydCAjNDU4MykKLXBjdnRYWHxwY3Z0IHZ0MjAwIGVtdWxhdG9yIChERUMgVlQyMjApLAotCWFtLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAotCWl0IzgsIHZ0IzMsCi0JYWNzYz0rK1wsXCwtLS4uMDBgYGFhZmZnZ2hoaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBlbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwgaW5kbj1cRVslcDElZFMsCi0JaXMxPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwga2JzPVwxNzcsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFWzE3fiwga2YyPVxFWzE4fiwga2YzPVxFWzE5fiwKLQlrZjQ9XEVbMjB+LCBrZjU9XEVbMjF+LCBrZjY9XEVbMjN+LCBrZjc9XEVbMjR+LCBrZjg9XEVbMjV+LAotCWtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwga2xsPVxFWzR+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKLQluZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwgcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsCi0Jcmk9XEVNLCByaW49XEVbJXAxJWRULCBybWFjcz1cRShCLCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRWNcRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3IwPVxFW20sIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0KLSMJTmV0QlNEL0ZyZWVCU0QgdnQyMjAgdGVybWluYWwgZW11bGF0b3IgY29uc29sZSAocGMga2V5Ym9hcmQgJiBtb25pdG9yKQotIwl0ZXJtY2FwIGVudHJpZXMgZm9yIHB1cmUgVlQyMjAtRW11bGF0aW9uIGFuZCAyNSwgMjgsIDM1LCA0MCwgNDMgYW5kCi0jCTUwIGxpbmVzIGVudHJpZXM7IDgwIGNvbHVtbnMKLXBjdnQyNXxkZWMgdnQyMjAgZW11bGF0aW9uIHdpdGggMjUgbGluZXMsCi0JY29scyM4MCwgbGluZXMjMjUsCi0JaXMyPVxFWzE7MjVyXEVbMjU7MUgsIHVzZT1wY3Z0WFgsCi1wY3Z0Mjh8ZGVjIHZ0MjIwIGVtdWxhdGlvbiB3aXRoIDI4IGxpbmVzLAotCWNvbHMjODAsIGxpbmVzIzI4LAotCWlzMj1cRVsxOzI4clxFWzI4OzFILCB1c2U9cGN2dFhYLAotcGN2dDM1fGRlYyB2dDIyMCBlbXVsYXRpb24gd2l0aCAzNSBsaW5lcywKLQljb2xzIzgwLCBsaW5lcyMzNSwKLQlpczI9XEVbMTszNXJcRVszNTsxSCwgdXNlPXBjdnRYWCwKLXBjdnQ0MHxkZWMgdnQyMjAgZW11bGF0aW9uIHdpdGggNDAgbGluZXMsCi0JY29scyM4MCwgbGluZXMjNDAsCi0JaXMyPVxFWzE7NDByXEVbNDA7MUgsIHVzZT1wY3Z0WFgsCi1wY3Z0NDN8ZGVjIHZ0MjIwIGVtdWxhdGlvbiB3aXRoIDQzIGxpbmVzLAotCWNvbHMjODAsIGxpbmVzIzQzLAotCWlzMj1cRVsxOzQzclxFWzQzOzFILCB1c2U9cGN2dFhYLAotcGN2dDUwfGRlYyB2dDIyMCBlbXVsYXRpb24gd2l0aCA1MCBsaW5lcywKLQljb2xzIzgwLCBsaW5lcyM1MCwKLQlpczI9XEVbMTs1MHJcRVs1MDsxSCwgdXNlPXBjdnRYWCwKLQotIwlOZXRCU0QvRnJlZUJTRCB2dDIyMCB0ZXJtaW5hbCBlbXVsYXRvciBjb25zb2xlIChwYyBrZXlib2FyZCAmIG1vbml0b3IpCi0jCXRlcm1jYXAgZW50cmllcyBmb3IgcHVyZSBWVDIyMC1FbXVsYXRpb24gYW5kIDI1LCAyOCwgMzUsIDQwLCA0MyBhbmQKLSMJNTAgbGluZXMgZW50cmllczsgMTMyIGNvbHVtbnMKLXBjdnQyNXd8ZGVjIHZ0MjIwIGVtdWxhdGlvbiB3aXRoIDI1IGxpbmVzIGFuZCAxMzIgY29scywKLQljb2xzIzEzMiwgbGluZXMjMjUsCi0JaXMyPVxFWzE7MjVyXEVbMjU7MUgsIHVzZT1wY3Z0WFgsCi1wY3Z0Mjh3fGRlYyB2dDIyMCBlbXVsYXRpb24gd2l0aCAyOCBsaW5lcyBhbmQgMTMyIGNvbHMsCi0JY29scyMxMzIsIGxpbmVzIzI4LAotCWlzMj1cRVsxOzI4clxFWzI4OzFILCB1c2U9cGN2dFhYLAotcGN2dDM1d3xkZWMgdnQyMjAgZW11bGF0aW9uIHdpdGggMzUgbGluZXMgYW5kIDEzMiBjb2xzLAotCWNvbHMjMTMyLCBsaW5lcyMzNSwKLQlpczI9XEVbMTszNXJcRVszNTsxSCwgdXNlPXBjdnRYWCwKLXBjdnQ0MHd8ZGVjIHZ0MjIwIGVtdWxhdGlvbiB3aXRoIDQwIGxpbmVzIGFuZCAxMzIgY29scywKLQljb2xzIzEzMiwgbGluZXMjNDAsCi0JaXMyPVxFWzE7NDByXEVbNDA7MUgsIHVzZT1wY3Z0WFgsCi1wY3Z0NDN3fGRlYyB2dDIyMCBlbXVsYXRpb24gd2l0aCA0MyBsaW5lcyBhbmQgMTMyIGNvbHMsCi0JY29scyMxMzIsIGxpbmVzIzQzLAotCWlzMj1cRVsxOzQzclxFWzQzOzFILCB1c2U9cGN2dFhYLAotcGN2dDUwd3xkZWMgdnQyMjAgZW11bGF0aW9uIHdpdGggNTAgbGluZXMgYW5kIDEzMiBjb2xzLAotCWNvbHMjMTMyLCBsaW5lcyM1MCwKLQlpczI9XEVbMTs1MHJcRVs1MDsxSCwgdXNlPXBjdnRYWCwKLQotIwlPcGVuQlNEIGltcGxlbWVudHMgYSBjb2xvciB2YXJpYXRpb24KLXBjdnQyNS1jb2xvcnxkZWMgdnQyMjAgZW11bGF0aW9uIHdpdGggMjUgbGluZXMgYW5kIGNvbG9yLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWlzMj1cRVsxOzI1clxFWzI1OzFILCBrZjE9XEVPUCwga2YxMD1cRVsyOX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LAotCWtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LAotCWtmMj1cRU9RLCBrZjIwPVxFWzM0fiwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVbMTd+LAotCWtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sIGtmOT1cRVsyMX4sIHVzZT1wY3Z0WFgsCi0JdXNlPWVjbWErY29sb3IsCi0KLSMgVGVybWluZm8gZW50cmllcyB0byBlbmFibGUgdGhlIHVzZSBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5IGluIGNvbG91ciBvbiBhCi0jIE5ldEJTRC1hcm0zMiBjb25zb2xlIChvbmx5IHRlc3RlZCBvbiBhIFJpc2NQQykuCi0jIENyZWF0ZWQgYnkgRGF2ZSBNaWxsZW4gPGRtaWxsQGdsb2JhbG5ldC5jby51az4gMjIuMDcuOTgKLSMgbW9kaWZpZWQgY29kZXMgZm9yIHNldGYvc2V0YiB0byBzZXRhZi9zZXRhYiwgdGhlbiB0byBrbG9uZStjb2xvciwgY29ycmVjdGVkCi0jIHR5cG8gaW4gaW52aXMgLSBURAotYXJtMTAwfGFybTEwMC1hbXxBcm0oUmlzY1BDKSBuY3Vyc2VzIGNvbXBhdGlibGUgKGZvciA2NDB4NDgwKSwKLQlhbSwgYmNlLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtJDwyPiwgYm9sZD1cRVsxbSQ8Mj4sCi0JY2xlYXI9XEVbSFxFW0okPDUwPiwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQyQ8Mj4sCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDw1PiwgY3V1PVxFWyVwMSVkQSwKLQljdXUxPVxFW0EkPDI+LCBlZD1cRVtKJDw1MD4sIGVsPVxFW0skPDM+LCBlbDE9XEVbMUskPDM+LAotCWVuYWNzPVxFKEJcRSkwLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpbmQ9XkosCi0JaW52aXM9XEVbOG0kPDI+LCBrYTE9XEVbcSwga2EzPVxFW3MsIGtiMj1cRVtyLCBrYnM9XkgsCi0Ja2MxPVxFW3AsIGtjMz1cRVtuLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLAotCWtjdXUxPVxFW0EsIGtlbnQ9XEVbTSwga2YwPVxFW3ksIGtmMT1cRVtQLCBrZjEwPVxFW3gsCi0Ja2YyPVxFW1EsIGtmMz1cRVtSLCBrZjQ9XEVbUywga2Y1PVxFW3QsIGtmNj1cRVt1LCBrZjc9XEVbdiwKLQlrZjg9XEVbbCwga2Y5PVxFW3csIHJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmk9XEVNJDw1PiwKLQlybWFjcz1eTywgcm1hbT1cRVs/N2wsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20kPDI+LAotCXJtdWw9XEVbbSQ8Mj4sIHJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsCi0Jc2M9XEU3LAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOyQ8Mj4sCi0Jc2dyMD1cRVttXDAxNyQ8Mj4sIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwgc21reD1cRVs/MWhcRT0sCi0Jc21zbz1cRVs3bSQ8Mj4sIHNtdWw9XEVbNG0kPDI+LCB0YmM9XEVbM2csIHVzZT1lY21hK3NnciwKLQl1c2U9a2xvbmUrY29sb3IsCi0KLWFybTEwMC13fGFybTEwMC13YW18QXJtKFJpc2NQQykgbmN1cnNlcyBjb21wYXRpYmxlIChmb3IgMTAyNHg3NjgpLAotCWNvbHMjMTMyLCBsaW5lcyM1MCwgdXNlPWFybTEwMCwKLQotIyBOZXRCU0QveDY4ayBjb25zb2xlIHZ0MjAwIGVtdWxhdG9yLiBUaGlzIHBvcnQgcnVucyBvbiBhIDY4SyBtYWNoaW5lCi0jIG1hbnVmYWN0dXJlZCBieSBTaGFycCBmb3IgdGhlIEphcGVuZXNlIG1hcmtldC4KLSMgRnJvbSBNaW5vdXJhIE1ha290byA8bWlub3VyYUBuZXRsYXB1dGEub3IuanA+LCAxMiBNYXkgMTk5NgoteDY4a3x4NjhrLWl0ZXxOZXRCU0QveDY4ayBJVEUsCi0JY29scyM5NiwgbGluZXMjMzIsCi0Ja2Nscj1cRVs5fiwga2hscD1cRVsyOH4sIHVzZT12dDIyMCwKLQotIyA8dHZAcG9ib3guY29tPjoKLSMgRW50cnkgZm9yIHRoZSBETkFSRCBPcGVuRmlybXdhcmUgY29uc29sZSwgY2xvc2UgdG8gQU5TSSBidXQgbm90IHF1aXRlLgotIwotIyAoc3RpbGwgdW5maW5pc2hlZCwgYnV0IGdvb2QgZW5vdWdoIHNvIGZhci4pCi1vZmNvbnN8RE5BUkQgT3BlbkZpcm13YXJlIGNvbnNvbGUsCi0JYncsCi0JY29scyM4MCwgbGluZXMjMzAsCi0JYmVsPV5HLCBibGluaz1cMjMzNzsybSwgYm9sZD1cMjMzMW0sIGNsZWFyPV5MLCBjcj1eTSwKLQljdWI9XDIzMyVwMSVkRCwgY3ViMT1cMjMzRCwgY3VkPVwyMzMlcDElZEIsIGN1ZDE9XDIzM0IsCi0JY3VmPVwyMzMlcDElZEMsIGN1ZjE9XDIzM0MsIGN1cD1cMjMzJWklcDElZDslcDIlZEgsCi0JY3V1PVwyMzMlcDElZEEsIGN1dTE9XDIzM0EsIGRjaD1cMjMzJXAxJWRQLCBkY2gxPVwyMzNQLAotCWRpbT1cMjMzMm0sIGRsPVwyMzMlcDElZE0sIGRsMT1cMjMzTSwgZWQ9XDIzM0osIGVsPVwyMzNLLAotCWZsYXNoPV5HLCBodD1eSSwgaWNoPVwyMzMlcDElZEAsIGljaDE9XDIzM0AsIGlsPVwyMzMlcDElZEwsCi0JaWwxPVwyMzNMLCBpbmQ9XkosIGludmlzPVwyMzM4bSwga2JzPV5ILCBrY3ViMT1cMjMzRCwKLQlrY3VkMT1cMjMzQiwga2N1ZjE9XDIzM0MsIGtjdXUxPVwyMzNBLCBrZGNoMT1cMjMzUCwKLQlrZjE9XDIzMzBQLCBrZjEwPVwyMzMwTSwga2YyPVwyMzMwUSwga2YzPVwyMzMwVywKLQlrZjQ9XDIzMzB4LCBrZjU9XDIzMzB0LCBrZjY9XDIzMzB1LCBrZjc9XDIzMzBxLCBrZjg9XDIzMzByLAotCWtmOT1cMjMzMHAsIGtucD1cMjMzLywga3BwPVwyMzM/LCBuZWw9Xk1eSiwgcmV2PVwyMzM3bSwKLQlybXNvPVwyMzMwbSwgcm11bD1cMjMzMG0sCi0Jc2dyPVwyMzMwJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTttLAotCXNncjA9XDIzMzBtLAotCi0jIE5ldEJTRCAid3Njb25zIiBlbXVsYXRvciBpbiB2dDIyMCBtb2RlLgotIyBUaGlzIGVudHJ5IGlzIGJhc2VkIG9uIHRoZSBOZXRCU0QgdGVybWNhcCBlbnRyeSwgY29ycmVjdGluZyB0aGUgbmN2IHZhbHVlLgotIyBUaGUgZW11bGF0b3IgcmVuZGVycyB1bmRlcmxpbmVkIHRleHQgaW4gcmVkLiAgQ29sb3JzIGFyZSBvdGhlcndpc2UgdXNhYmxlLgotIwotIyBUZXN0aW5nIHRoZSBlbXVsYXRvciBhbmQgcmVhZGluZyB0aGUgc291cmNlIGNvZGUgKE5ldEJTRCAyLjApLCBpdCBhcHBlYXJzCi0jIHRoYXQgInZ0MjIwIiBpcyBpbmFjY3VyYXRlLiAgVGhlcmUgYXJlIGEgZmV3IHZ0MjIwLWZlYXR1cmVzLCBidXQgbW9zdCBvZiB0aGUKLSMgdnQyMjAgc2NyZWVucyBpbiB2dHRlc3QgZG8gbm90IHdvcmsgd2l0aCB0aGlzIGVtdWxhdG9yLiAgRm9yIGluc3RhbmNlLCBpdAotIyBpZGVudGlmaWVzIGl0c2VsZiAocHJpbWFyeSBEQSByZXNwb25zZSkgYXMgYSB2dDIyMCB3aXRoIHNlbGVjdGl2ZSBlcmFzZS4gIEJ1dAotIyB0aGUgc2VsZWN0aXZlIGVyYXNlIGZlYXR1cmUgZG9lcyBub3Qgd29yay4gIFRoZSBzZWNvbmRhcnkgcmVzcG9uc2UgaXMgY29waWVkCi0jIGZyb20gS2VybWl0J3MgZW11bGF0aW9uIG9mIHZ0MjIwLCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFjdHVhbCB2dDIyMC4gIEF0Ci0jIHRoZSBsZXZlbCBvZiBkZXRhaWwgaW4gYSB0ZXJtY2FwLCBpdCBpcyBhIHBhc3NhYmxlIGVtdWxhdG9yLCBzaW5jZSBFQ0ggZG9lcwotIyB3b3JrLiAgRG9uJ3QgdXNlIGl0IG9uIGEgVk1TIHN5c3RlbSAtVEQKLXdzdnQyNXxOZXRCU0Qgd3Njb25zIGluIDI1IGxpbmUgREVDIFZUMjIwIG1vZGUsCi0JYmNlLCBtc2dyLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgbmN2IzIsIHBhaXJzIzY0LAotCWlzMj1cRVtyXEVbMjU7MUgsIGtlbmQ9XEVbOH4sIGtmMT1cRVsxMX4sIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YyPVxFWzEyfiwga2YzPVxFWzEzfiwKLQlrZjQ9XEVbMTR+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LAotCWtmOT1cRVsyMH4sIGtob21lPVxFWzd+LCBvcD1cRVttLCBzZXRhYj1cRVs0JXAxJWRtLAotCXNldGFmPVxFWzMlcDElZG0sIHVzZT12dDIyMCwKLQotd3N2dDI1bXxOZXRCU0Qgd3Njb25zIGluIDI1IGxpbmUgREVDIFZUMjIwIG1vZGUgd2l0aCBNZXRhLAotCWttLCB1c2U9d3N2dDI1LAotCi0jIGByYXN0ZXJjb25zb2xlJyBwcm92aWRlZCBieSA0LjRCU0QsIE5ldEJTRCBhbmQgT3BlbkJTRCBvbiBTUEFSQywgYW5kCi0jIERFQ3N0YXRpb24vcG1heC4KLXJjb25zfEJTRCByYXN0ZXJjb25zb2xlLAotCXVzZT1zdW4taWwsCi0jIENvbG9yIHZlcnNpb24gb2YgYWJvdmUuIENvbG9yIGN1cnJlbnRseSBvbmx5IHByb3ZpZGVkIGJ5IE5ldEJTRC4KLXJjb25zLWNvbG9yfEJTRCByYXN0ZXJjb25zb2xlIHdpdGggQU5TSSBjb2xvciwKLQliY2UsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCW9wPVxFW20sIHNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHVzZT1yY29ucywKLQotIyBtZ3Rlcm0gLS0gTUdML01HTDIsIE1vYmlsZUdlYXIgR3JhcGhpYyBMaWJyYXJ5Ci0jIGZvciBQb2NrZXRCU0QsUG9ja2V0TGludXgsTmV0QlNEL3tocGNtaXBzLG1hYzY4a30KLSMgLS0gdGhlIHNldGYvc2V0YiBhcmUgcHJvYmFibHkgaW5jb3JyZWN0LCBtb3JlIGxpa2VseSBzZXRhZi9zZXRhYiAtVEQKLSMgLS0gY29tcGFyZSB3aXRoIGNvbnMyNXcKLW1ndGVybSwKLQlPVGJzLCBPVHB0LCBhbSwgYmNlLCBidywgZW8sIGttLCBtc2dyLCBucGMsCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzE4LCBwYWlycyM2NCwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFW0osCi0JY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVszMDsxbSwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JaG9tZT1cRVtILCBocGE9XEVbJWklcDElZGAsIGh0PV5JLCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFW1MsCi0JaW5kbj1cRVslcDElZFMsIGtiMj1cRVtFLCBrYnM9XkgsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cMTc3LCBrZW5kPVxFW0YsCi0Ja2YxPVxFW00sIGtmMTA9XEVbViwga2YxMT1cRVtXLCBrZjEyPVxFW1gsIGtmMj1cRVtOLAotCWtmMz1cRVtPLCBrZjQ9XEVbUCwga2Y1PVxFW1EsIGtmNj1cRVtSLCBrZjc9XEVbUywga2Y4PVxFW1QsCi0Ja2Y5PVxFW1UsIGtob21lPVxFW0gsIGtpY2gxPVxFW0wsIGtucD1cRVtHLCBrcHA9XEVbSSwKLQluZWw9XEVbRSwgb3A9XEVbeCwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFW1QsIHJpbj1cRVslcDElZFQsCi0Jcm1zbz1cRVttLCByczI9XEVbeFxFW21cRWMsIHNjPVxFNywgc2V0Yj1cRVs0JXAxJWRtLAotCXNldGY9XEVbMyVwMSVkbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLCB2cGE9XEVbJWklcDElZGQsCi0KLSMjIyMgRnJlZUJTRCBjb25zb2xlIGVudHJpZXMKLSMKLSMgRnJvbTogQW5kcmV5IENoZXJub3YgPGFjaGVAYXN0cmFsLm1zay5zdT4gMjkgTWFyIDE5OTYKLSMgQW5kcmV5IENoZXJub3YgbWFpbnRhaW5zIHRoZSBGcmVlQlNEIHRlcm1jYXAgZGlzdHJpYnV0aW9ucy4KLSMKLSMgTm90ZTogVXNlcnMgb2YgRnJlZUJTRCAyLjEuMCBhbmQgb2xkZXIgdmVyc2lvbnMgbXVzdCBlaXRoZXIgdXBncmFkZQotIyBvciBjb21tZW50IG91dCB0aGUgOmNiOiBjYXBhYmlsaXR5IGluIHRoZSBjb25zb2xlIGVudHJ5LgotIwotIyBBbGV4YW5kZXIgTHVreWFub3YgcmVwb3J0czoKLSMgSSBoYXZlIHNlZW4gRnJlZUJTRC0yLjEuNVIuLi4gVGhlIG9sZCBlbDEgYnVnIGNoYW5nZWQsIGJ1dCBpdCBpcyBzdGlsbCB0aGVyZS4KLSMgTm93IGVsMSBjbGVhcnMgbm90IG9ubHkgdG8gdGhlIGxpbmUgYmVnaW5uaW5nLCBidXQgYWxzbyBhIGxhcmdlIGNodW5rCi0jIG9mIHByZXZpb3VzIGxpbmUuIEJ1dCB0aGVyZSBpcyBhbm90aGVyIGJ1ZyAtIGVjaCBkb2VzIG5vdCB3b3JrIGF0IGFsbC4KLSMKLQotIyBmb3Igc3lzY29ucwotIyBjb21tb24gZW50cnkgd2l0aG91dCBzZW1pZ3JhcGhpY3MKLSMgQnVnOiBUaGUgPG9wPiBjYXBhYmlsaXR5IHJlc2V0cyBhdHRyaWJ1dGVzLgotIyBCdWc/IFRoZSBlY2ggYW5kIGVsMSBhdHRyaWJ1dGVzIGFwcGVhciB0byBtb3ZlIHRoZSBjdXJzb3IgaW4gc29tZSBjYXNlczsgZm9yCi0jIGluc3RhbmNlIGVsMSBkb2VzIGlmIHRoZSBjdXJzb3IgaXMgbW92ZWQgdG8gdGhlIHJpZ2h0IG1hcmdpbiBmaXJzdC4gIFJlbW92ZWQKLSMgYnkgVC5EaWNrZXkgOTcvNS8zIChlY2g9XEVbJXAxJWRYLCBlbDE9XEVbMUspCi0jCi0jIFNldHRpbmcgY29sb3JzIHR1cm5zIG9mZiByZXZlcnNlOyB3ZSBjYW5ub3QgZ3VhcmFudGVlIG9yZGVyLCBzbyB1c2UgbmN2LgotIyBOb3RlIHRoYXQgdGhpcyBkaXNhYmxlcyBzdGFuZG91dCB3aXRoIGNvbG9yLgotIwotIyBUaGUgZW11bGF0b3Igc2VuZHMgZGlmZmVyZW5jZSBzdHJpbmdzIGJhc2VkIG9uIHNoaWZ0LSBhbmQgY29udHJvbC1rZXlzLAotIyBsaWtlIHNjb2Fuc2k6Ci0jCUYxMy1GMjQgYXJlIHNoaWZ0ZWQgRjEtRjEyCi0jCUYyNS1GMzYgYXJlIGNvbnRyb2wgRjEtRjEyCi0jCUYzNy1GNDggYXJlIHNoaWZ0K2NvbnRyb2wgRjEtRjEyCi1jb25zMjV3fGFuc2l3fGFuc2k4MHgyNS1yYXd8ZnJlZWJzZCBjb25zb2xlICgyNS1saW5lIHJhdyBtb2RlKSwKLQlhbSwgYmNlLCBidywgZW8sIG1zZ3IsIG5wYywKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjUsIG5jdiMyMSwgcGFpcnMjNjQsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNsZWFyPVxFW0hcRVtKLAotCWNub3JtPVxFWz0wQywgY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsCi0JY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPTFDLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVszMDsxbSwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRgLCBodD1eSSwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1cRVtTLAotCWluZG49XEVbJXAxJWRTLCBrYjI9XEVbRSwga2JzPV5ILCBrY2J0PVxFW1osIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XDE3Nywga2VuZD1cRVtGLAotCWtmMT1cRVtNLCBrZjEwPVxFW1YsIGtmMTE9XEVbVywga2YxMj1cRVtYLCBrZjEzPVxFW1ksCi0Ja2YxND1cRVtaLCBrZjE1PVxFW2EsIGtmMTY9XEVbYiwga2YxNz1cRVtjLCBrZjE4PVxFW2QsCi0Ja2YxOT1cRVtlLCBrZjI9XEVbTiwga2YyMD1cRVtmLCBrZjIxPVxFW2csIGtmMjI9XEVbaCwKLQlrZjIzPVxFW2ksIGtmMjQ9XEVbaiwga2YyNT1cRVtrLCBrZjI2PVxFW2wsIGtmMjc9XEVbbSwKLQlrZjI4PVxFW24sIGtmMjk9XEVbbywga2YzPVxFW08sIGtmMzA9XEVbcCwga2YzMT1cRVtxLAotCWtmMzI9XEVbciwga2YzMz1cRVtzLCBrZjM0PVxFW3QsIGtmMzU9XEVbdSwga2YzNj1cRVt2LAotCWtmMzc9XEVbdywga2YzOD1cRVt4LCBrZjM5PVxFW3ksIGtmND1cRVtQLCBrZjQwPVxFW3osCi0Ja2Y0MT1cRVtALCBrZjQyPVxFW1ssIGtmNDM9XEVbXFwsIGtmNDQ9XEVbXSwga2Y0NT1cRVtcXiwKLQlrZjQ2PVxFW18sIGtmNDc9XEVbYCwga2Y0OD1cRVt7LCBrZjU9XEVbUSwga2Y2PVxFW1IsCi0Ja2Y3PVxFW1MsIGtmOD1cRVtULCBrZjk9XEVbVSwga2hvbWU9XEVbSCwga2ljaDE9XEVbTCwKLQlrbnA9XEVbRywga3BwPVxFW0ksIG5lbD1cRVtFLCBvcD1cRVt4LCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRVtULCByaW49XEVbJXAxJWRULCBybXNvPVxFW20sIHJzMj1cRVt4XEVbbVxFYywgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCi0Jc2dyPVxFWzAlPyVwMSV0OzI7NyU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MzA7MSU7JT8lcDYldDsxJTttLAotCXNncjA9XEVbbSwgc21zbz1cRVs3bSwgdnBhPVxFWyVpJXAxJWRkLAotY29uczI1fGFuc2lzfGFuc2k4MHgyNXxmcmVlYnNkIGNvbnNvbGUgKDI1LWxpbmUgYW5zaSBtb2RlKSwKLQlhY3NjPS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYwZlwzNzBnXDM2MWhcMjYxaVwwMjVqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1cVwzMDR0XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2Mn5cMzcxLAotCXVzZT1jb25zMjV3LAotY29uczI1LW18YW5zaXMtbW9ub3xhbnNpODB4MjUtbW9ub3xmcmVlYnNkIGNvbnNvbGUgKDI1LWxpbmUgbW9ubyBhbnNpIG1vZGUpLAotCWNvbG9yc0AsIHBhaXJzQCwKLQlib2xkQCwgZGltQCwgb3BALCBybXVsPVxFW20sIHNldGFiQCwgc2V0YWZALAotCXNncj1cRVswJT8lcDEldDsyOzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlO20sCi0Jc211bD1cRVs0bSwgdXNlPWNvbnMyNSwKLWNvbnMzMHxhbnNpODB4MzB8ZnJlZWJzZCBjb25zb2xlICgzMC1saW5lIGFuc2kgbW9kZSksCi0JbGluZXMjMzAsIHVzZT1jb25zMjUsCi1jb25zMzAtbXxhbnNpODB4MzAtbW9ub3xmcmVlYnNkIGNvbnNvbGUgKDMwLWxpbmUgbW9ubyBhbnNpIG1vZGUpLAotCWxpbmVzIzMwLCB1c2U9Y29uczI1LW0sCi1jb25zNDN8YW5zaTgweDQzfGZyZWVic2QgY29uc29sZSAoNDMtbGluZSBhbnNpIG1vZGUpLAotCWxpbmVzIzQzLCB1c2U9Y29uczI1LAotY29uczQzLW18YW5zaTgweDQzLW1vbm98ZnJlZWJzZCBjb25zb2xlICg0My1saW5lIG1vbm8gYW5zaSBtb2RlKSwKLQlsaW5lcyM0MywgdXNlPWNvbnMyNS1tLAotY29uczUwfGFuc2lsfGFuc2k4MHg1MHxmcmVlYnNkIGNvbnNvbGUgKDUwLWxpbmUgYW5zaSBtb2RlKSwKLQlsaW5lcyM1MCwgdXNlPWNvbnMyNSwKLWNvbnM1MC1tfGFuc2lsLW1vbm98YW5zaTgweDUwLW1vbm98ZnJlZWJzZCBjb25zb2xlICg1MC1saW5lIG1vbm8gYW5zaSBtb2RlKSwKLQlsaW5lcyM1MCwgdXNlPWNvbnMyNS1tLAotY29uczYwfGFuc2k4MHg2MHxmcmVlYnNkIGNvbnNvbGUgKDYwLWxpbmUgYW5zaSBtb2RlKSwKLQlsaW5lcyM2MCwgdXNlPWNvbnMyNSwKLWNvbnM2MC1tfGFuc2k4MHg2MC1tb25vfGZyZWVic2QgY29uc29sZSAoNjAtbGluZSBtb25vIGFuc2kgbW9kZSksCi0JbGluZXMjNjAsIHVzZT1jb25zMjUtbSwKLWNvbnMyNXJ8cGMzcnxpYm1wYzNyfGNvbnMyNS1rb2k4LXJ8ZnJlZWJzZCBjb25zb2xlIHcva29pOC1yIGN5cmlsbGljLAotCWFjc2M9LVwwMzAuXlkwXDIxNWBcMDA0YVwyMjBmXDIzNGhcMjIxaVwwMjVqXDIwNWtcMjAzbFwyMDJtXDIwNG5cMjEycVwwdFwyMDZ1XDIwN3ZcMjExd1wyMTB4XDIwMXlcMjMwelwyMzF+XDIyNSwKLQl1c2U9Y29uczI1dywKLWNvbnMyNXItbXxwYzNyLW18aWJtcGMzci1tb25vfGNvbnMyNS1rb2k4ci1tfGZyZWVic2QgY29uc29sZSB3L2tvaTgtciBjeXJpbGxpYyAobW9ubyksCi0JY29sb3JzQCwgcGFpcnNALAotCW9wQCwgcm11bD1cRVttLCBzZXRhYkAsIHNldGFmQCwKLQlzZ3I9XEVbMCU/JXAxJXQ7Mjs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzMwOzElOyU/JXA2JXQ7MSU7bSwKLQlzbXVsPVxFWzRtLCB1c2U9Y29uczI1ciwKLWNvbnM1MHJ8Y29uczUwLWtvaThyfGZyZWVic2QgY29uc29sZSB3L2tvaTgtciBjeXJpbGxpYyAoNTAgbGluZXMpLAotCWxpbmVzIzUwLCB1c2U9Y29uczI1ciwKLWNvbnM1MHItbXxjb25zNTAta29pOHItbXxmcmVlYnNkIGNvbnNvbGUgdy9rb2k4LXIgY3lyaWxsaWMgKDUwLWxpbmUgbW9ubyksCi0JbGluZXMjNTAsIHVzZT1jb25zMjVyLW0sCi1jb25zNjByfGNvbnM2MC1rb2k4cnxmcmVlYnNkIGNvbnNvbGUgdy9rb2k4LXIgY3lyaWxsaWMgKDYwIGxpbmVzKSwKLQlsaW5lcyM2MCwgdXNlPWNvbnMyNXIsCi1jb25zNjByLW18Y29uczYwLWtvaThyLW18ZnJlZWJzZCBjb25zb2xlIHcva29pOC1yIGN5cmlsbGljICg2MC1saW5lIG1vbm8pLAotCWxpbmVzIzYwLCB1c2U9Y29uczI1ci1tLAotIyBJU08gODg1OS0xIEZyZWVCU0QgY29uc29sZQotY29uczI1bDF8Y29uczI1LWlzbzg4NTl8ZnJlZWJzZCBjb25zb2xlIHcvaXNvIDg4NTktMSBjaGFycywKLQlhY3NjPStcMjUzXCxcMjczLVwwMzAuXDAzMWBcMjAxYVwyMDJmXDIwN2dcMjEwaVwyNDdqXDIxM2tcMjE0bFwyMTVtXDIxNm5cMjE3b1wyMjBwXDIyMXFcMjIyclwyMjNzXDIyNHRcMjI1dVwyMjZ2XDIyN3dcMjMweFwyMzF5XDIzMnpcMjMzflwyMzcsCi0JdXNlPWNvbnMyNXcsCi1jb25zMjVsMS1tfGNvbnMyNS1pc28tbXxmcmVlYnNkIGNvbnNvbGUgdy9pc28gODg1OS0xIGNoYXJzIChtb25vKSwKLQljb2xvcnNALCBwYWlyc0AsCi0JYm9sZEAsIGRpbUAsIG9wQCwgcm11bD1cRVttLCBzZXRhYkAsIHNldGFmQCwKLQlzZ3I9XEVbMCU/JXAxJXQ7Mjs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTttLAotCXNtdWw9XEVbNG0sIHVzZT1jb25zMjVsMSwKLWNvbnM1MGwxfGNvbnM1MC1pc284ODU5fGZyZWVic2QgY29uc29sZSB3L2lzbyA4ODU5LTEgY2hhcnMgKDUwIGxpbmVzKSwKLQlsaW5lcyM1MCwgdXNlPWNvbnMyNWwxLAotY29uczUwbDEtbXxjb25zNTAtaXNvLW18ZnJlZWJzZCBjb25zb2xlIHcvaXNvIDg4NTktMSBjaGFycyAoNTAtbGluZSBtb25vKSwKLQlsaW5lcyM1MCwgdXNlPWNvbnMyNWwxLW0sCi1jb25zNjBsMXxjb25zNjAtaXNvfGZyZWVic2QgY29uc29sZSB3L2lzbyA4ODU5LTEgY2hhcnMgKDYwIGxpbmVzKSwKLQlsaW5lcyM2MCwgdXNlPWNvbnMyNWwxLAotY29uczYwbDEtbXxjb25zNjAtaXNvLW18ZnJlZWJzZCBjb25zb2xlIHcvaXNvIDg4NTktMSBjaGFycyAoNjAtbGluZSBtb25vKSwKLQlsaW5lcyM2MCwgdXNlPWNvbnMyNWwxLW0sCi0KLSMjIyMgMzg2QlNEIGFuZCBCU0QvT1MgQ29uc29sZXMKLSMKLQotIyBUaGlzIHdhcyB0aGUgb3JpZ2luYWwgMzg2QlNEIGNvbnNvbGUgZW50cnkgKEkgdGhpbmspLgotIyBTb21lIHBsYWNlcyBpdCdzIG5hbWVkIG9sZHBjM3xvbGRpYm1wYzMuCi0jIEZyb206IEFsZXggUi5OLiBXZXRtb3JlIDxhdzJ0QGFuZHJldy5jbXUuZWR1Pgotb3JpZ3BjM3xvcmlnaWJtcGMzfElCTSBQQyAzODZCU0QgQ29uc29sZSwKLQlPVGJzLCBhbSwgYncsIGVvLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYWNzYz1qXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1cVwzMDR0XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzLAotCWJvbGQ9XEVbN20sIGNsZWFyPVxFYywgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIGluZD1cRVtTLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLAotCWtjdXUxPVxFW0EsIGtob21lPVxFW1ksIHJpPVxFW1QsIHJtc289XEVbMTsweFxFWzI7N3gsCi0Jcm11bD1cRVsxOzB4XEVbMjs3eCwgc2dyMD1cRVttXEVbMTsweFxFWzI7N3gsCi0Jc21zbz1cRVsxOzd4XEVbMjsweCwgc211bD1cRVsxOzd4XEVbMjsweCwKLQotIyBkZXNjcmlwdGlvbiBvZiBCU0QvMzg2IGNvbnNvbGUgZW11bGF0b3IgaW4gdmVyc2lvbiAxLjAgKHN1cHBsaWVkIGJ5IEJTREkpCi1vbGRwYzN8b2xkaWJtcGMzfG9sZCBJQk0gUEMgQlNELzM4NiBDb25zb2xlLAotCU9UYnMsIGttLAotCWxpbmVzIzI1LAotCWJlbD1eRywgYm9sZD1cRVs9MTVGLCBjcj1eTSwgY3VkMT1eSiwgZGltPVxFWz04RiwgZGwxPVxFW00sCi0JaHQ9XkksIGlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILCBraWNoMT1cRVtMLCBrbGw9XEVbRiwKLQlrbnA9XEVbRywga3BwPVxFW0ksIG5lbD1eTV5KLCBzZ3IwPVxFWz1SLAotCi0jIERlc2NyaXB0aW9uIG9mIEJTRC9PUyBjb25zb2xlIGVtdWxhdG9yIGluIHZlcnNpb24gMS4xLCAyLjAsIDIuMQotIyBOb3RlLCB0aGUgZW11bGF0b3Igc3VwcG9ydHMgbWFueSBvZiB0aGUgYWRkaXRpb25hbCBjb25zb2xlIGZlYXR1cmVzCi0jIGxpc3RlZCBpbiB0aGUgaUJDUzIgKGUuZy4gY2hhcmFjdGVyLXNldCBzZWxlY3Rpb24pIHRob3VnaCBub3QgYWxsCi0jIGFyZSBkZXNjcmliZWQgaGVyZS4gIFRoaXMgZW50cnkgcmVhbGx5IG91Z2h0IHRvIGJlIHVwZ3JhZGVkLgotIyBBbHNvIG5vdGUsIHRoZSBjb25zb2xlIHdpbGwgYWxzbyB3b3JrIHdpdGggZmV3ZXIgbGluZXMgYWZ0ZXIgZG9pbmcKLSMgInN0dHkgcm93cyBOTiIsIGUuZy4gdG8gdXNlIDI0IGxpbmVzLgotIyAoQ29sb3Igc3VwcG9ydCBmcm9tIEtldmluIFJvc2VuYmVyZyA8a2V2aW5AY3liZXJwb3J0LmNvbT4sIDIgTWF5IDE5OTYpCi0jIEJ1ZzogVGhlIDxvcD4gY2FwYWJpbGl0eSByZXNldHMgYXR0cmlidXRlcy4KLWJzZG9zLXBjfElCTSBQQyBCU0QvT1MgQ29uc29sZSwKLQlzZ3I9XEVbMDsxMCU/JXAxJXQ7NyU7JT8lcDIldDsxJTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTElO20sCi0JdXNlPWJzZG9zLXBjLW5vYm9sZCwKLQotYnNkb3MtcGMtbm9ib2xkfEJTRC9PUyBQQyBjb25zb2xlIHcvbyBib2xkLAotCXVzZT1rbG9uZStjb2xvciwgdXNlPWJzZG9zLXBjLW0sCi0KLWJzZG9zLXBjLW18YnNkb3MtcGMtbW9ub3xCU0QvT1MgUEMgY29uc29sZSBtb25vLAotCU9UYnMsIGFtLCBlbywga20sIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQliZWw9XkcsIGNsZWFyPVxFYywgY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwga2ljaDE9XEVbTCwKLQlrbGw9XEVbRiwga25wPVxFW0csIGtwcD1cRVtJLCBuZWw9Xk1eSiwgcmM9XEU4LCBzYz1cRTcsCi0Jc2dyPVxFWzA7MTAlPyVwMSV0OzclOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMSU7bSU/JXA1JXRcRVs9OEYlOywKLQl1c2U9a2xvbmUrc2dyOCwKLQotIyBPbGQgbmFtZXMgZm9yIEJTRC9PUyBQQyBjb25zb2xlIHVzZWQgaW4gcmVsZWFzZXMgYmVmb3JlIDQuMS4KLXBjM3xCU0QvT1Mgb24gdGhlIFBDIENvbnNvbGUsCi0JdXNlPWJzZG9zLXBjLW5vYm9sZCwKLWlibXBjM3xwYzMtYm9sZHxCU0QvT1Mgb24gdGhlIFBDIENvbnNvbGUgd2l0aCBib2xkIGluc3RlYWQgb2YgdW5kZXJsaW5lLAotCXVzZT1ic2Rvcy1wYywKLQotIyBCU0QvT1Mgb24gdGhlIFNQQVJDCi1ic2Rvcy1zcGFyY3xTdW4gU1BBUkMgQlNEL09TIENvbnNvbGUsCi0JdXNlPXN1biwKLQotIyBCU0QvT1Mgb24gdGhlIFBvd2VyUEMKLWJzZG9zLXBwY3xQb3dlclBDIEJTRC9PUyBDb25zb2xlLAotCXVzZT1ic2Rvcy1wYywKLQotIyMjIyBERUMgVlQ1MgotIyAoPGFjc2M+LzxybWFjcz4vPHNtYWNzPiBjYXBhYmlsaXRpZXMgYXJlbid0IGluIERFQydzIG9mZmljaWFsIGVudHJ5IC0tIGVzcikKLSMKLSMgQWN0dWFsbHkgKFREIHBvaW50ZWQgdGhpcyBvdXQgYXQgdGhlIHRpbWUgdGhlIGFjc2Mgc3RyaW5nIHdhcyBhZGRlZCk6Ci0jIHZ0NTIgc2hvdWxkbid0IGRlZmluZSBmdWxsIGFjc2Mgc2luY2UgbW9zdCBvZiB0aGUgY2VsbHMgZG9uJ3QgbWF0Y2guCi0jIHNlZSB2dDEwMCBtYW51YWwgcGFnZSBBLTMxLiAgVGhpcyBpcyB0aGUgbGlzdCB0aGF0IGRvZXMgbWF0Y2g6Ci0jCWYgZGVncmVlCi0jCWcgcGx1cy9taW51cwotIwloIHJpZ2h0LWFycm93Ci0jCWsgZG93bi1hcnJvdwotIwltIHNjYW4tMQotIwlvIHNjYW4tMwotIwlxIHNjYW4tNQotIwlzIHNjYW4tNwotIyBUaGUgbGluZS1kcmF3aW5nIGhhcHBlbnMgdG8gd29yayBpbiBzZXZlcmFsIHRlcm1pbmFsIGVtdWxhdG9ycywgYnV0IHNob3VsZAotIyBub3QgYmUgdXNlZCBhcyBhIGd1aWRlIHRvIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHZ0NTIuICBOb3RlIGluIHBhcnRpY3VsYXIKLSMgdGhhdCB2dDUyIGRvZXMgbm90IHN1cHBvcnQgbGluZS1kcmF3aW5nIGNoYXJhY3RlcnMgKHRoZSBzY2FuLVggdmFsdWVzIHJlZmVyCi0jIHRvIGEgY3J1ZGUgcGxvdHRpbmcgZmVhdHVyZSkgLVRECi12dDUyfGRlYyB2dDUyLAotCU9UYnMsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYWNzYz1mZmdnaGhvbXBvcXFzcy5rLCBiZWw9XkcsIGNsZWFyPVxFSFxFSiwgY3I9Xk0sCi0JY3ViMT1cRUQsIGN1ZDE9XEVCLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZWQ9XEVKLAotCWVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsCi0Ja2N1ZjE9XEVDLCBrY3V1MT1cRUEsIG5lbD1eTV5KLCByaT1cRUksIHJtYWNzPVxFRywgc21hY3M9XEVGLAotCi0jIyMjIERFQyBWVDEwMCBhbmQgY29tcGF0aWJsZXMKLSMKLSMgREVDIHRlcm1pbmFscyBmcm9tIHRoZSB2dDEwMCBmb3J3YXJkIGFyZSBjb2xsZWN0ZWQgaGVyZS4gT2xkZXIgREVDIHRlcm1pbmFscwotIyBhbmQgbWljcm8gY29uc29sZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBgb2Jzb2xldGUnIHNlY3Rpb24uICBNb3JlIGRldGFpbHMgb24KLSMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBWVDEwMCBhbmQgQU5TSSBYMy42NC9JU08gNjQyOS9FQ01BLTQ4IG1heSBiZQotIyBmb3VuZCBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgotIwotIyBFeGNlcHQgd2hlcmUgbm90ZWQsIHRoZXNlIGVudHJpZXMgYXJlIERFQydzIG9mZmljaWFsIHRlcm1pbmZvcy4KLSMgQ29udGFjdCBCaWxsIEhlZGJlcmcgPGhlZGJlcmdAaGFubmFoLmVuZXQuZGVjLmNvbT4gb2YgVGVybWluYWwgU3VwcG9ydAotIyBFbmdpbmVlcmluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIFVwZGF0ZWQgdGVybWluZm9zIGFuZCB0ZXJtY2FwcwotIyBhcmUga2VwdCBhdmFpbGFibGUgYXQgZnRwOi8vZ2F0ZWtlZXBlci5kZWMuY29tL3B1Yi9ERUMvdGVybWNhcHMuCi0jCi0jIEluIE9jdG9iZXIgMTk5NSBERUMgc29sZCBpdHMgdGVybWluYWxzIGJ1c2luZXNzLCBpbmNsdWRpbmcgdGhlIFZUIGFuZCBEb3JpbwotIyBsaW5lIGFuZCB0cmFkZW1hcmssIHRvIFN1blJpdmVyIERhdGEgU3lzdGVtcy4gIFN1blJpdmVyIGhhcyBzaW5jZSBjaGFuZ2VkCi0jIGl0cyBuYW1lIHRvIEJvdW5kbGVzcyBUZWNobm9sb2dpZXM7IHNlZSBodHRwOi8vd3d3LmJvdW5kbGVzcy5jb20uCi0jCi0KLSMgTk9URTogIEFueSBWVDEwMCBlbXVsYXRpb24sIHdoZXRoZXIgaW4gaGFyZHdhcmUgb3Igc29mdHdhcmUsIGFsbW9zdAotIyBjZXJ0YWlubHkgaW5jbHVkZXMgd2hhdCBERUMgY2FsbGVkIHRoZSBgTGV2ZWwgMSBlZGl0aW5nIGV4dGVuc2lvbicgY29kZXM7Ci0jIG9ubHkgdGhlIHZlcnkgb2xkZXN0IFZUMTAwcyBsYWNrZWQgdGhlc2UgYW5kIHRoZXJlIHByb2JhYmx5IGFyZW4ndCBhbnkgb2YKLSMgdGhvc2UgbGVmdCBhbGl2ZS4gIFRvIGNhcHR1cmUgdGhlc2UsIHVzZSBvbmUgb2YgdGhlIFZUMTAyIGVudHJpZXMuCi0jCi0jIE5vdGUgdGhhdCB0aGUgPHhlbmw+IGdsaXRjaCBpbiB2dDEwMCBpcyBub3QgcXVpdGUgdGhlIHNhbWUgYXMgb24gdGhlIENvbmNlcHQsCi0jIHNpbmNlIHRoZSBjdXJzb3IgaXMgbGVmdCBpbiBhIGRpZmZlcmVudCBwb3NpdGlvbiB3aGlsZSBpbiB0aGUKLSMgd2VpcmQgc3RhdGUgKGNvbmNlcHQgYXQgYmVnaW5uaW5nIG9mIG5leHQgbGluZSwgdnQxMDAgYXQgZW5kCi0jIG9mIHRoaXMgbGluZSkgc28gYWxsIHZlcnNpb25zIG9mIHZpIGJlZm9yZSAzLjcgZG9uJ3QgaGFuZGxlCi0jIDx4ZW5sPiByaWdodCBvbiB2dDEwMC4gVGhlIGNvcnJlY3Qgd2F5IHRvIGhhbmRsZSA8eGVubD4gaXMgd2hlbgotIyB5b3Ugb3V0cHV0IHRoZSBjaGFyIGluIGNvbHVtbiA4MCwgaW1tZWRpYXRlbHkgb3V0cHV0IENSIExGCi0jIGFuZCB0aGVuIGFzc3VtZSB5b3UgYXJlIGluIGNvbHVtbiAxIG9mIHRoZSBuZXh0IGxpbmUuIElmIDx4ZW5sPgotIyBpcyBvbiwgYW0gc2hvdWxkIGJlIG9uIHRvby4KLSMKLSMgSSBhc3N1bWUgeW91IGhhdmUgc21vb3RoIHNjcm9sbCBvZmYgb3IgYXJlIGF0IGEgc2xvdyBlbm91Z2ggYmF1ZAotIyByYXRlIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIgKDEyMDA/IG9yIGxlc3MpLiBBbHNvIHRoaXMgYXNzdW1lcwotIyB0aGF0IHlvdSBzZXQgYXV0by1ubCB0byAib24iLCBpZiB5b3Ugc2V0IGl0IG9mZiB1c2UgdnQxMDAtbmFtCi0jIGJlbG93LgotIwotIyBUaGUgcGFkZGluZyByZXF1aXJlbWVudHMgbGlzdGVkIGhlcmUgYXJlIGd1ZXNzZXMuIEl0IGlzIHN0cm9uZ2x5Ci0jIHJlY29tbWVuZGVkIHRoYXQgeG9uL3hvZmYgYmUgZW5hYmxlZCwgYXMgdGhpcyBpcyBhc3N1bWVkIGhlcmUuCi0jCi0jIFRoZSB2dDEwMCB1c2VzIDxyczI+IGFuZCA8cmY+IHJhdGhlciB0aGFuIDxpczI+Lzx0YmM+LzxodHM+IGJlY2F1c2UgdGhlCi0jIHRhYiBzZXR0aW5ncyBhcmUgaW4gbm9uLXZvbGF0aWxlIG1lbW9yeSBhbmQgZG9uJ3QgbmVlZCB0byBiZQotIyByZXNldCB1cG9uIGxvZ2luLiBBbHNvIHNldHRpbmcgdGhlIG51bWJlciBvZiBjb2x1bW5zIGdsaXRjaGVzCi0jIHRoZSBzY3JlZW4gYW5ub3lpbmdseS4gWW91IGNhbiB0eXBlICJyZXNldCIgdG8gZ2V0IHRoZW0gc2V0LgotIwotIyBUaGUgVlQxMDAgc2VyaWVzIHRlcm1pbmFscyBoYXZlIGN1cnNvciAoImFycm93cyIpIGtleXMgd2hpY2ggY2FuIG9wZXJhdGUKLSMgaW4gdHdvIGRpZmZlcmVudCBtb2RlczogQ3Vyc29yIE1vZGUgYW5kIEFwcGxpY2F0aW9uIE1vZGUuICBDdXJzb3IgTW9kZQotIyBpcyB0aGUgcmVzZXQgc3RhdGUsIGFuZCBpcyBhc3N1bWVkIHRvIGJlIHRoZSBub3JtYWwgc3RhdGUuICBBcHBsaWNhdGlvbgotIyBNb2RlIGlzIHRoZSAic2V0IiBzdGF0ZS4gIEluIEN1cnNvciBNb2RlLCB0aGUgY3Vyc29yIGtleXMgdHJhbnNtaXQKLSMgIkVzYyBbIHtjb2RlfSIgc2VxdWVuY2VzLCBjb25mb3JtaW5nIHRvIEFOU0kgc3RhbmRhcmRzLiAgSW4gQXBwbGljYXRpb24KLSMgTW9kZSwgdGhlIGN1cnNvciBrZXlzIHRyYW5zbWl0ICJFc2MgTyA8Y29kZT4iIHNlcXVlbmNlcy4gIEFwcGxpY2F0aW9uIE1vZGUKLSMgd2FzIHByb3ZpZGVkIHByaW1hcmlseSBhcyBhbiBhaWQgdG8gdGhlIHBvcnRpbmcgb2YgVlQ1MiBhcHBsaWNhdGlvbnMuICBJdCBpcwotIyBhc3N1bWVkIHRoYXQgdGhlIGN1cnNvciBrZXlzIGFyZSBub3JtYWxseSBpbiBDdXJzb3IgTW9kZSwgYW5kIGV4cGVjdGVkIHRoYXQKLSMgYXBwbGljYXRpb25zIHN1Y2ggYXMgdmkgd2lsbCBhbHdheXMgdHJhbnNtaXQgdGhlIDxzbWt4PiBzdHJpbmcuICBUaGVyZWZvcmUsCi0jIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIGN1cnNvciBrZXlzIGFyZSBtYWRlIHRvIG1hdGNoIHdoYXQgdGhlIHRlcm1pbmFsCi0jIHRyYW5zbWl0cyBhZnRlciB0aGUgPHNta3g+IHN0cmluZyBpcyB0cmFuc21pdHRlZC4gIElmIHRoZSA8c21reD4gc3RyaW5nCi0jIGlzIGEgbnVsbCBzdHJpbmcgb3IgaXMgbm90IGRlZmluZWQsIHRoZW4gY3Vyc29yIGtleXMgYXJlIGFzc3VtZWQgdG8gYmUgaW4KLSMgIkN1cnNvciBNb2RlIiwgYW5kIHRoZSBjdXJzb3Iga2V5cyBkZWZpbml0aW9ucyBzaG91bGQgbWF0Y2ggdGhhdCBhc3N1bXB0aW9uLAotIyBlbHNlIHRoZSBhcHBsaWNhdGlvbiBtYXkgZmFpbC4gIEl0IGlzIGFsc28gZXhwZWN0ZWQgdGhhdCBhcHBsaWNhdGlvbnMgd2lsbAotIyBhbHdheXMgdHJhbnNtaXQgdGhlIDxybWt4PiBzdHJpbmcgdG8gdGhlIHRlcm1pbmFsIGJlZm9yZSB0aGV5IGV4aXQuCi0jCi0jIFRoZSBWVDEwMCBzZXJpZXMgdGVybWluYWxzIGhhdmUgYW4gYXV4aWxpYXJ5IGtleXBhZCwgY29tbW9ubHkgcmVmZXJyZWQgdG8gYXMKLSMgdGhlICJOdW1lcmljIEtleXBhZCIsIGJlY2F1c2UgaXQgaXMgYSBjbHVzdGVyIG9mIG51bWVyaWMgYW5kIGZ1bmN0aW9uIGtleXMuCi0jIFRoZSBOdW1lcmljIEtleXBhZCB3aGljaCBjYW4gb3BlcmF0ZSBpbiB0d28gZGlmZmVyZW50IG1vZGVzOiBOdW1lcmljIE1vZGUgYW5kCi0jIEFwcGxpY2F0aW9uIE1vZGUuICBOdW1lcmljIE1vZGUgaXMgdGhlIHJlc2V0IHN0YXRlLCBhbmQgaXMgYXNzdW1lZCB0byBiZQotIyB0aGUgbm9ybWFsIHN0YXRlLiAgQXBwbGljYXRpb24gTW9kZSBpcyB0aGUgInNldCIgc3RhdGUuICBJbiBOdW1lcmljIE1vZGUsCi0jIHRoZSBudW1lcmljIGFuZCBwdW5jdHVhdGlvbiBrZXlzIHRyYW5zbWl0IEFTQ0lJIDctYml0IGNoYXJhY3RlcnMsIGFuZCB0aGUKLSMgRW50ZXIga2V5IHRyYW5zbWl0cyB0aGUgc2FtZSBhcyB0aGUgUmV0dXJuIGtleSAoTm90ZTogdGhlIFJldHVybiBrZXkKLSMgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gc2VuZCBlaXRoZXIgTEYgKFwwMTUpIG9yIENSIExGKS4gIEluIEFwcGxpY2F0aW9uIE1vZGUsCi0jIGFsbCB0aGUga2V5cGFkIGtleXMgdHJhbnNtaXQgIkVzYyBPIHtjb2RlfSIgc2VxdWVuY2VzLiAgVGhlIFBGMSAtIFBGNCBrZXlzCi0jIGFsd2F5cyBzZW5kIHRoZSBzYW1lICJFc2MgTyB7Y29kZX0iIHNlcXVlbmNlcy4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUga2V5cGFkCi0jIGlzIG5vcm1hbGx5IGluIE51bWVyaWMgTW9kZS4gIElmIGFuIGFwcGxpY2F0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGtleXBhZCBiZQotIyBpbiBBcHBsaWNhdGlvbiBNb2RlIHRoZW4gaXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgdXNlciwgb3IgdGhlIGFwcGxpY2F0aW9uLAotIyB3aWxsIHNldCB0aGUgVEVSTSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwb2ludCB0byBhIHRlcm1pbmZvIGVudHJ5IHdoaWNoIGhhcwotIyBkZWZpbmVkIHRoZSA8c21reD4gc3RyaW5nIHRvIGluY2x1ZGUgdGhlIGNvZGVzIHRoYXQgc3dpdGNoIHRoZSBrZXlwYWQgaW50bwotIyBBcHBsaWNhdGlvbiBNb2RlLCBhbmQgdGhlIHRlcm1pbmZvIGVudHJ5IHdpbGwgYWxzbyBkZWZpbmUgZnVuY3Rpb24ga2V5Ci0jIGZpZWxkcyB0byBtYXRjaCB0aGUgQXBwbGljYXRpb24gTW9kZSBjb250cm9sIGNvZGVzLiAgSWYgdGhlIDxzbWt4PiBzdHJpbmcKLSMgaXMgYSBudWxsIHN0cmluZyBvciBpcyBub3QgZGVmaW5lZCwgdGhlbiB0aGUga2V5cGFkIGlzIGFzc3VtZWQgdG8gYmUgaW4KLSMgTnVtZXJpYyBNb2RlLiAgSWYgdGhlIDxzbWt4PiBzdHJpbmcgc3dpdGNoZXMgdGhlIGtleXBhZCBpbnRvIEFwcGxpY2F0aW9uCi0jIE1vZGUsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIDxybWt4PiBzdHJpbmcgd2lsbCBjb250YWluIHRoZSBjb250cm9sIGNvZGVzCi0jIG5lY2Vzc2FyeSB0byByZXNldCB0aGUga2V5cGFkIHRvICJOb3JtYWwiIG1vZGUsIGFuZCBpdCBpcyBhbHNvIGV4cGVjdGVkIHRoYXQKLSMgYXBwbGljYXRpb25zIHdoaWNoIHRyYW5zbWl0IHRoZSA8c21reD4gc3RyaW5nIHdpbGwgYWxzbyBhbHdheXMgdHJhbnNtaXQgdGhlCi0jIDxybWt4PiBzdHJpbmcgdG8gdGhlIHRlcm1pbmFsIGJlZm9yZSB0aGV5IGV4aXQuCi0jCi0jIEhlcmUncyBhIGRpYWdyYW0gb2YgdGhlIFZUMTAwIGtleXBhZCBrZXlzIHdpdGggdGhlaXIgYmluZGluZ3MuCi0jIFRoZSB0b3AgbGluZSBpcyB0aGUgbmFtZSBvZiB0aGUga2V5IChzb21lIERFQyBrZXlib2FyZHMgaGF2ZSB0aGUga2V5cwotIyBsYWJlbGxlZCBzb21ld2hhdCBkaWZmZXJlbnRseSwgbGlrZSBHT0xEIGluc3RlYWQgb2YgUEYxLCBidXQgdGhpcyBpcwotIyB0aGUgbW9zdCAib2ZmaWNpYWwiIG5hbWUpLiAgVGhlIHNlY29uZCBsaW5lIGlzIHRoZSBlc2NhcGUgc2VxdWVuY2UgaXQKLSMgZ2VuZXJhdGVzIGluIEFwcGxpY2F0aW9uIEtleXBhZCBtb2RlICh3aGVyZSAiJCIgbWVhbnMgdGhlIEVTQwotIyBjaGFyYWN0ZXIpLiAgVGhlIHRoaXJkIGxpbmUgY29udGFpbnMgdHdvIGl0ZW1zLCBmaXJzdCB0aGUgbWFwcGluZyBvZgotIyB0aGUga2V5IGluIHRlcm1pbmZvLCBhbmQgdGhlbiBpbiB0ZXJtY2FwLgotIyAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwotIyAgfCAgIFBGMSAgIHwgICBQRjIgICB8ICAgUEYzICAgfCAgIFBGNCAgIHwKLSMgIHwgICAkT1AgICB8ICAgJE9RICAgfCAgICRPUiAgIHwgICAkT1MgICB8Ci0jICB8X2tmMV9fazFffF9rZjJfX2syX3xfa2YzX19rM198X2tmNF9fazRffAotIyAgfCAgICA3ICAgICAgICAgOCAgICAgICAgIDkgICAgICAgICAtICAgIHwKLSMgIHwgICAkT3cgICB8ICAgJE94ICAgfCAgICRPeSAgIHwgICAkT20gICB8Ci0jICB8X2tmOV9fazlffF9rZjEwX2s7X3xfa2YwX19rMF98X19fX19fX19ffAotIyAgfCAgICA0ICAgIHwgICAgNSAgICB8ICAgIDYgICAgfCAgICAsICAgIHwKLSMgIHwgICAkT3QgICB8ICAgJE91ICAgfCAgICRPdiAgIHwgICAkT2wgICB8Ci0jICB8X2tmNV9fazVffF9rZjZfX2s2X3xfa2Y3X19rN198X2tmOF9fazhffAotIyAgfCAgICAxICAgIHwgICAgMiAgICB8ICAgIDMgICAgfCAgICAgICAgIHwKLSMgIHwgICAkT3EgICB8ICAgJE9yICAgfCAgICRPcyAgIHwgIGVudGVyICB8Ci0jICB8X2thMV9fSzFffF9rYjJfX0syX3xfa2EzX19LM198ICAkT00gICAgfAotIyAgfCAgICAgICAgIDAgICAgICAgICB8ICAgLiAgICAgfCAgICAgICAgIHwKLSMgIHwgICAgICAgICRPcCAgICAgICAgfCAgJE9uICAgIHwgICAgICAgICB8Ci0jICB8X19fa2MxX19fX19fX0s0X19fX3xfa2MzX19LNV98X2tlbnRfQDhffAotIwotIyBOb3RlIGhvd2V2ZXIsIHRoYXQgdGhlIGFycmFuZ2VtZW50IG9mIHRoZSA1LWtleSBrYTEta2MzIGRvIG5vdCBmb2xsb3cgdGhlCi0jIHRlcm1pbmZvIGd1aWRlbGluZXMuICBUaGF0IGlzIGEgY29tcHJvbWlzZSB1c2VkIHRvIGFzc2lnbiB0aGUgcmVtYWluaW5nCi0jIGtleXMgb24gdGhlIGtleXBhZCB0byBrZjUta2YwLCB1c2VkIG9uIG9sZGVyIHN5c3RlbXMgd2l0aCBsZWdhY3kgdGVybWNhcAotIyBzdXBwb3J0OgotdnQxMDAra2V5cGFkfGRlYyB2dDEwMCBudW1lcmljIGtleXBhZCBubyBma2V5cywKLQlrYTE9XEVPcSwga2EzPVxFT3MsIGtiMj1cRU9yLCBrYzE9XEVPcCwga2MzPVxFT24sCi12dDEwMCtwZmtleXN8ZGVjIHZ0MTAwIG51bWVyaWMga2V5cGFkLAotCWtlbnQ9XEVPTSwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0JdXNlPXZ0MTAwK2tleXBhZCwKLXZ0MTAwK2Zua2V5c3xkZWMgdnQxMDAgbnVtZXJpYyBrZXlwYWQsCi0Ja2YwPVxFT3ksIGtmMTA9XEVPeCwga2Y1PVxFT3QsIGtmNj1cRU91LCBrZjc9XEVPdiwga2Y4PVxFT2wsCi0Ja2Y5PVxFT3csIHVzZT12dDEwMCtwZmtleXMsCi0jCi0jIEEgYmV0dGVyIGFkYXB0YXRpb24gdG8gbW9kZXJuIGtleWJvYXJkcyBzdWNoIGFzIHRoZSBQQydzLCB3aGljaCBoYXZlIGEgZG96ZW4KLSMgZnVuY3Rpb24ga2V5cyBhbmQgdGhlIGtleXBhZCAyLDQsNiw4IGtleXMgYXJlIGxhYmVsZWQgd2l0aCBhcnJvd3Mga2V5cywgaXMgdG8KLSMgdXNlIHRoZSA1LWtleSBhcnJhbmdlbWVudCB0byBtb2RlbCB0aGUgYXJyb3cga2V5cyBhcyBzdWdnZXN0ZWQgaW4gdGhlCi0jIHRlcm1pbmZvIGd1aWRlbGluZXM6Ci0jICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCi0jICB8ICAgUEYxICAgfCAgIFBGMiAgIHwgICBQRjMgICB8ICAgUEY0ICAgfAotIyAgfCAgICRPUCAgIHwgICAkT1EgICB8ICAgJE9SICAgfCAgICRPUyAgIHwKLSMgIHxfa2YxX19rMV98X2tmMl9fazJffF9rZjNfX2szX3xfa2Y0X19rNF98Ci0jICB8ICAgIDcgICAgICAgICA4ICAgICAgICAgOSAgICAgICAgIC0gICAgfAotIyAgfCAgICRPdyAgIHwgICAkT3ggICB8ICAgJE95ICAgfCAgICRPbSAgIHwKLSMgIHxfa2ExX19LMV98X19fX19fX19ffF9rYTNfX0szX3xfX19fX19fX198Ci0jICB8ICAgIDQgICAgfCAgICA1ICAgIHwgICAgNiAgICB8ICAgICwgICAgfAotIyAgfCAgICRPdCAgIHwgICAkT3UgICB8ICAgJE92ICAgfCAgICRPbCAgIHwKLSMgIHxfX19fX19fX198X2tiMl9fSzJffF9fX19fX19fX3xfX19fX19fX198Ci0jICB8ICAgIDEgICAgfCAgICAyICAgIHwgICAgMyAgICB8ICAgICAgICAgfAotIyAgfCAgICRPcSAgIHwgICAkT3IgICB8ICAgJE9zICAgfCAgZW50ZXIgIHwKLSMgIHxfa2MxX19LNF98X19fX19fX19ffF9rYzNfX0s1X3wgICRPTSAgICB8Ci0jICB8ICAgICAgICAgMCAgICAgICAgIHwgICAuICAgICB8ICAgICAgICAgfAotIyAgfCAgICAgICAgJE9wICAgICAgICB8ICAkT24gICAgfCAgICAgICAgIHwKLSMgIHxfX19fX19fX19fX19fX19fX19ffF9fX19fX19fX3xfa2VudF9AOF98Ci0jCi12dDIyMCtrZXlwYWR8ZGVjIHZ0MjIwIG51bWVyaWMga2V5cGFkLAotCWthMT1cRU93LCBrYTM9XEVPeSwga2IyPVxFT3UsIGtjMT1cRU9xLCBrYzM9XEVPcywga2VudD1cRU9NLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrYTI9XEVPeCwga2IxPVxFT3QsCi0Ja2IzPVxFT3YsIGtjMj1cRU9yLAotIwotdnQxMDArZW5xfG5jdXJzZXMgZXh0ZW5zaW9uIGZvciB2dDEwMC1zdHlsZSBFTlEsCi0JdTg9XEVbPzE7MmMsIHVzZT1hbnNpK2VucSwKLXZ0MTAyK2VucXxuY3Vyc2VzIGV4dGVuc2lvbiBmb3IgdnQxMDItc3R5bGUgRU5RLAotCXU4PVxFWz82YywgdXNlPWFuc2krZW5xLAotIwotIyBBbmQgaGVyZSwgZm9yIHRob3NlIG9mIHlvdSB3aXRoIG9ycGhhbmVkIFZUMTAwcyBsYWNraW5nIGRvY3VtZW50YXRpb24sIGlzCi0jIGEgZGVzY3JpcHRpb24gb2YgdGhlIHNvZnQgc3dpdGNoZXMgaW52b2tlZCB3aGVuIHlvdSBkbyBgU2V0IFVwJy4KLSMKLSMgIFNjcm9sbCAwLUp1bXAgICAgICAgICAgICAgICBTaGlmdGVkIDMgICAwLSMKLSMgIHwgICAgICAxLVNtb290aCAgICAgICAgICAgICB8ICAgICAgICAgICAxLUJyaXRpc2ggcG91bmQgc2lnbgotIyAgfCBBdXRvcmVwZWF0IDAtT2ZmICAgICAgICAgIHwgV3JhcCBBcm91bmQgMC1PZmYKLSMgIHwgfCAgICAgICAgICAxLU9uICAgICAgICAgICB8IHwgICAgICAgICAgIDEtT24KLSMgIHwgfCBTY3JlZW4gMC1EYXJrIEJrZyAgICAgICB8IHwgTmV3IExpbmUgMC1PZmYKLSMgIHwgfCB8ICAgICAgMS1MaWdodCBCa2cgICAgICB8IHwgfCAgICAgICAgMS1PbgotIyAgfCB8IHwgQ3Vyc29yIDAtVW5kZXJsaW5lICAgIHwgfCB8IEludGVybGFjZSAwLU9mZgotIyAgfCB8IHwgfCAgICAgIDEtQmxvY2sgICAgICAgIHwgfCB8IHwgICAgICAgICAxLU9uCi0jICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgfCB8IHwgfAotIyAgMSAxIDAgMSAgICAgICAxIDEgMSAxICAgICAgIDAgMSAwIDAgICAgICAgMCAwIDEgMCAgICAgICA8LS1TdGFuZGFyZCBTZXR0aW5ncwotIyAgICAgICAgICAgICAgICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgfCB8IHwgfAotIyAgICAgICAgICAgICAgICB8IHwgfCBBdXRvIFhPTi9YT0ZGIDAtT2ZmICAgfCB8IHwgUG93ZXIgMC02MCBIegotIyAgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgIDEtT24gICAgfCB8IHwgICAgICAgMS01MCBIegotIyAgICAgICAgICAgICAgICB8IHwgQW5zaS9WVDUyIDAtVlQ1MiAgICAgICAgfCB8IEJpdHMgUGVyIENoYXIuIDAtNyBCaXRzCi0jICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgMS1BTlNJICAgICAgICB8IHwgICAgICAgICAgICAgICAgMS04IEJpdHMKLSMgICAgICAgICAgICAgICAgfCBLZXljbGljayAwLU9mZiAgICAgICAgICAgIHwgUGFyaXR5IDAtT2ZmCi0jICAgICAgICAgICAgICAgIHwgICAgICAgICAgMS1PbiAgICAgICAgICAgICB8ICAgICAgICAxLU9uCi0jICAgICAgICAgICAgICAgIE1hcmdpbiBCZWxsIDAtT2ZmICAgICAgICAgICBQYXJpdHkgU2Vuc2UgMC1PZGQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS1PbiAgICAgICAgICAgICAgICAgICAgICAgICAxLUV2ZW4KLSMKLSMgVGhlIGZvbGxvd2luZyBTRVQtVVAgbW9kZXMgYXJlIGFzc3VtZWQgZm9yIG5vcm1hbCBvcGVyYXRpb246Ci0jCUFOU0lfTU9ERQlBVVRPX1hPTi9YT0ZGX09OCU5FV0xJTkVfT0ZGCTgwX0NPTFVNTlMKLSMJV1JBUF9BUk9VTkRfT04gIEpVTVBfU0NST0xMX09GRgotIyBPdGhlciBTRVQtVVAgbW9kZXMgbWF5IGJlIHNldCBmb3Igb3BlcmF0b3IgY29udmVuaWVuY2Ugb3IgY29tbXVuaWNhdGlvbgotIyByZXF1aXJlbWVudHM7IEkgcmVjb21tZW5kCi0jCUFVVE9SRVBFQVRfT04JQkxPQ0tfQ1VSU09SCU1BUkdJTl9CRUxMX09GRiAgICBTSElGVEVEXzNfIwotIyBVbmxlc3MgeW91IGhhdmUgYSBncmFwaGljcyBhZGQtb24gc3VjaCBhcyBEaWdpdGFsIEVuZ2luZWVyaW5nJ3MgVlQ2NDAKLSMgKGFuZCBldmVuIHRoZW4sIHdoZW5ldmVyIGl0IGNhbiBiZSBhcnJhbmdlZCEpIHlvdSBzaG91bGQgc2V0Ci0jCUlOVEVSTEFDRV9PRkYKLSMKLSMgKHZ0MTAwOiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nLCBhbHNvIDxPVGJzPi4gLS0gZXNyKQotdnQxMDB8dnQxMDAtYW18ZGVjIHZ0MTAwICh3L2FkdmFuY2VkIHZpZGVvKSwKLQlPVGJzLCBhbSwgbWM1aSwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVtKJDw1MD4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBJDwyPiwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgZWwxPVxFWzFLJDwzPiwKLQllbmFjcz1cRShCXEUpMCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XkgsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwgbGYxPXBmMSwKLQlsZjI9cGYyLCBsZjM9cGYzLCBsZjQ9cGY0LCBtYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmk9XEVNJDw1Piwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20kPDI+LCBybXVsPVxFW20kPDI+LAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyPiwKLQlzZ3IwPVxFW21cMDE3JDwyPiwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzdtJDwyPiwgc211bD1cRVs0bSQ8Mj4sIHRiYz1cRVszZywKLQl1c2U9dnQxMDArZm5rZXlzLAotdnQxMDBuYW18dnQxMDAtbmFtfHZ0MTAwIG5vIGF1dG9tYXJnaW5zLAotCWFtQCwgeGVubEAsIHVzZT12dDEwMC1hbSwKLXZ0MTAwLXZifGRlYyB2dDEwMCAody9hZHZhbmNlZCB2aWRlbykgJiBubyBiZWVwLAotCWJlbEAsIGZsYXNoPVxFWz81aFxFWz81bCwgdXNlPXZ0MTAwLAotCi0jIE9yZGluYXJ5IHZ0MTAwIGluIDEzMiBjb2x1bW4gKCJ3aWRlIikgbW9kZS4KLXZ0MTAwLXd8dnQxMDAtdy1hbXxkZWMgdnQxMDAgMTMyIGNvbHMgKHcvYWR2YW5jZWQgdmlkZW8pLAotCWNvbHMjMTMyLCBsaW5lcyMyNCwKLQlyczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzhoLCB1c2U9dnQxMDAtYW0sCi12dDEwMC13LW5hbXx2dDEwMC1uYW0td3xkZWMgdnQxMDAgMTMyIGNvbHMgKHcvYWR2YW5jZWQgdmlkZW8gbm8gYXV0b21hcmdpbiksCi0JY29scyMxMzIsIGxpbmVzIzE0LCB2dEAsCi0JcnMyPVxFPlxFWz8zaFxFWz80bFxFWz81bFxFWz84aCwgdXNlPXZ0MTAwLW5hbSwKLQotIyB2dDEwMCB3aXRoIG5vIGFkdmFuY2VkIHZpZGVvLgotdnQxMDAtbmF2fHZ0MTAwIHdpdGhvdXQgYWR2YW5jZWQgdmlkZW8gb3B0aW9uLAotCXhtYyMxLAotCWJsaW5rQCwgYm9sZEAsIHJldkAsIHJtc289XEVbbSwgcm11bEAsIHNnckAsIHNncjBALCBzbXNvPVxFWzdtLAotCXNtdWxALCB1c2U9dnQxMDAsCi12dDEwMC1uYXYtd3x2dDEwMC13LW5hdnxkZWMgdnQxMDAgMTMyIGNvbHMgMTQgbGluZXMgKG5vIGFkdmFuY2VkIHZpZGVvIG9wdGlvbiksCi0JY29scyMxMzIsIGxpbmVzIzE0LCB1c2U9dnQxMDAtbmF2LAotCi0jIHZ0MTAwIHdpdGggb25lIG9mIHRoZSAyNCBsaW5lcyB1c2VkIGFzIGEgc3RhdHVzIGxpbmUuCi0jIFdlIHB1dCB0aGUgc3RhdHVzIGxpbmUgb24gdGhlIHRvcC4KLXZ0MTAwLXN8dnQxMDAtcy10b3B8dnQxMDAtdG9wLXN8dnQxMDAgZm9yIHVzZSB3aXRoIHRvcCBzeXNsaW5lLAotCWVzbG9rLCBocywKLQlsaW5lcyMyMywKLQljbGVhcj1cRVsyOzFIXEVbSiQ8NTA+LCBjc3I9XEVbJWklaSVwMSVkOyVwMiVkciwKLQljdXA9XEVbJWklcDElezF9JSslZDslcDIlZEgkPDU+LCBkc2w9XEU3XEVbMTsyNHJcRTgsCi0JZnNsPVxFOCwgaG9tZT1cRVsyOzFILCBpczI9XEU3XEVbMjsyNHJcRTgsCi0JdHNsPVxFN1xFWzE7JXAxJWRIXEVbMUssIHVzZT12dDEwMC1hbSwKLQotIyBTdGF0dXMgbGluZSBhdCBib3R0b20uCi0jIENsZWFyaW5nIHRoZSBzY3JlZW4gd2lsbCBjbG9iYmVyIHN0YXR1cyBsaW5lLgotdnQxMDAtcy1ib3R8dnQxMDAtYm90LXN8dnQxMDAgZm9yIHVzZSB3aXRoIGJvdHRvbSBzeXNsaW5lLAotCWVzbG9rLCBocywKLQlsaW5lcyMyMywKLQlkc2w9XEU3XEVbMTsyNHJcRTgsIGZzbD1cRTgsIGlzMj1cRVsxOzIzclxFWzIzOzFILAotCXRzbD1cRTdcRVsyNDslcDElZEhcRVsxSywgdXNlPXZ0MTAwLWFtLAotCi0jIE1vc3Qgb2YgdGhlIGB2dDEwMCcgZW11bGF0b3JzIG91dCB0aGVyZSBhY3R1YWxseSBlbXVsYXRlIGEgdnQxMDIKLSMgVGhpcyBlbnRyeSAob3IgdnQxMDItbnNncikgaXMgcHJvYmFibHkgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZSBmb3IKLSMgdGhlc2UuCi12dDEwMnxkZWMgdnQxMDIsCi0JZGNoMT1cRVtQLCBkbDE9XEVbTSwgaWwxPVxFW0wsIHJtaXI9XEVbNGwsIHNtaXI9XEVbNGgsCi0JdXNlPXZ0MTAwLAotdnQxMDItd3xkZWMgdnQxMDIgaW4gd2lkZSBtb2RlLAotCWNvbHMjMTMyLAotCXJzMz1cRVs/M2gsIHVzZT12dDEwMiwKLQotIyBNYW55IGJyYWluLWRlYWQgUEMgY29tbSBwcm9ncmFtcyB0aGF0IHByZXRlbmQgdG8gYmUgYHZ0MTAwLWNvbXBhdGlibGUnCi0jIGZhaWwgdG8gaW50ZXJwcmV0IHRoZSBeTyBhbmQgXk4gZXNjYXBlcyBwcm9wZXJseS4gIFN5bXB0b206IHRoZSA8c2dyMD4KLSMgc3RyaW5nIGluIHRoZSBjYW5vbmljYWwgdnQxMDAgZW50cnkgYWJvdmUgbGVhdmVzIHRoZSBzY3JlZW4gbGl0dGVyZWQKLSMgd2l0aCBsaXR0bGUgIHNub3dmbGFrZSBvciBzdGFyIGNoYXJhY3RlcnMgKElCTSBQQyBST00gY2hhcmFjdGVyIFwwMTcgPSBeTykKLSMgYWZ0ZXIgaGlnaGxpZ2h0IHR1cm5vZmZzLiAgVGhpcyBlbnRyeSBzaG91bGQgZml4IHRoYXQsIGFuZCBldmVuIGxlYXZlCi0jIEFDUyBzdXBwb3J0IHdvcmtpbmcsIGF0IHRoZSBjb3N0IG9mIG1ha2luZyBtdWx0aXBsZS1oaWdobGlnaHQgY2hhbmdlcwotIyBzbGlnaHRseSBtb3JlIGV4cGVuc2l2ZS4KLSMgRnJvbTogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+IEp1bHkgMjIgMTk5NQotdnQxMDItbnNncnx2dDEwMiBubyBzZ3IgKHVzZSBpZiB5b3Ugc2VlIHNub3dmbGFrZXMgYWZ0ZXIgaGlnaGxpZ2h0IGNoYW5nZXMpLAotCXNnckAsIHNncjA9XEVbbSwgdXNlPXZ0MTAyLAotCi0jIFZUMTI1IEdyYXBoaWNzIENSVC4gIENsZWFyIHNjcmVlbiBhbHNvIGVyYXNlcyBncmFwaGljcwotIyBTb21lIHZ0MTI1J3MgY2FtZSBjb25maWd1cmVkIHdpdGggdnQxMDIgc3VwcG9ydC4KLXZ0MTI1fHZ0MTI1IGdyYXBoaWNzIHRlcm1pbmFsLAotCW1pciwKLQljbGVhcj1cRVtIXEVbMkpcRVBwUyhFKVxFXFwkPDUwPiwgdXNlPXZ0MTAwLAotCi0jIFRoaXMgaXNuJ3QgYSBERUMgZW50cnksIGl0IGNhbWUgZnJvbSBVbml2ZXJzaXR5IG9mIFdpc2NvbnNpbi4KLSMgKHZ0MTMxOiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nLCBhbHNvIDxPVGJzPiAtLSBlc3IpCi12dDEzMXxkZWMgdnQxMzEsCi0JT1RicywgYW0sIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mi8+LCBib2xkPVxFWzFtJDwyLz4sCi0JY2xlYXI9XEVbO0hcRVsySiQ8NTAvPiwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MkPDIvPiwKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDUvPiwgY3V1MT1cRVtBJDwyLz4sCi0JZWQ9XEVbSiQ8NTAvPiwgZWw9XEVbSyQ8My8+LCBob21lPVxFW0gsIGh0PV5JLAotCWlzMj1cRVsxOzI0clxFWzI0OzFILCBrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsCi0Ja2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwKLQlrZjQ9XEVPUywgbmVsPV5NXkosIHJjPVxFOCwgcmV2PVxFWzdtJDwyLz4sIHJpPVxFTSQ8NS8+LAotCXJtYW09XEVbPzdoLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttJDwyLz4sCi0Jcm11bD1cRVttJDwyLz4sCi0JcnMxPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAotCXNncjA9XEVbbSQ8Mi8+LCBzbWFtPVxFWz83aCwgc21reD1cRVs/MWhcRT0sCi0Jc21zbz1cRVs3bSQ8Mi8+LCBzbXVsPVxFWzRtJDwyLz4sCi0KLSMgdnQxMzIgLSBsaWtlIHZ0MTAwIGJ1dCBzbG93ZXIgYW5kIGhhcyBpbnMvZGVsIGxpbmUgYW5kIHN1Y2guCi0jIEknbSB0b2xkIHRoYXQgPHNtaXI+LzxybWlyPiBhcmUgYmFja3dhcmRzIGluIHRoZSB0ZXJtaW5hbCBmcm9tIHRoZQotIyBtYW51YWwgYW5kIGZyb20gdGhlIEFOU0kgc3RhbmRhcmQsIHRoaXMgZGVzY3JpYmVzIHRoZSBhY3R1YWwKLSMgdGVybWluYWwuIEkndmUgbmV2ZXIgYWN0dWFsbHkgdXNlZCBhIHZ0MTMyIG15c2VsZiwgc28gdGhpcwotIyBpcyB1bnRlc3RlZC4KLSMKLXZ0MTMyfERFQyB2dDEzMiwKLQl4ZW5sLAotCWRjaDE9XEVbUCQ8Nz4sIGRsMT1cRVtNJDw5OT4sIGlsMT1cRVtMJDw5OT4sIGluZD1cbiQ8MzA+LAotCWlwPSQ8Nz4sIHJtaXI9XEVbNGgsIHNtaXI9XEVbNGwsIHVzZT12dDEwMCwKLQotIyBUaGlzIHZ0MjIwIGRlc2NyaXB0aW9uIG1hcHMgRjUtLUY5IHRvIHRoZSBzZWNvbmQgYmxvY2sgb2YgZnVuY3Rpb24ga2V5cwotIyBhdCB0aGUgdG9wIG9mIHRoZSBrZXlib2FyZC4gIFRoZSAiRE8iIGtleSBpcyB1c2VkIGFzIEYxMCB0byBhdm9pZCBjb25mbGljdAotIyB3aXRoIHRoZSBrZXkgbWFya2VkIChFU0MpIG9uIHRoZSB2dDIyMC4gIFNlZSB2dDIyMGQgZm9yIGFuIGFsdGVybmF0ZSBtYXBwaW5nLgotIyBQRjEtLVBGNCBhcmUgdXNlZCBhcyBGMS0tRjQuCi0jCi12dDIyMC1vbGR8dnQyMDAtb2xkfERFQyBWVDIyMCBpbiB2dDEwMCBlbXVsYXRpb24gbW9kZSwKLQlPVGJzLCBPVHB0LCBhbSwgbWlyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsIHZ0IzMsCi0JT1RubD1eSiwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0kPDI+LCBib2xkPVxFWzFtJDwyPiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbMkokPDUwPiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDEwPiwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsCi0JZGwxPVxFW00sIGVkPVxFW0okPDUwPiwgZWw9XEVbSyQ8Mz4sIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIGlsMT1cRVtMLCBpbmQ9XEVEJDwyMC8+LAotCWlzMj1cRVsxOzI0clxFWzI0OzFILCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbM34sIGtlbmQ9XEVbNH4sIGtmMT1cRU9QLAotCWtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVbMTd+LAotCWtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sIGtmOT1cRVsyMX4sCi0Ja2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwgcmM9XEU4LAotCXJldj1cRVs3bSQ8Mj4sIHJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLAotCXJpPVxFTSQ8MTQvPiwgcm1hY3M9XEUoQiQ8ND4sIHJtYW09XEVbPzdsLCBybWlyPVxFWzRsLAotCXJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDI+LAotCXNncjA9XEVbbSQ8Mj4sIHNtYWNzPVxFKDAkPDI+LCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIEEgbXVjaCBiZXR0ZXIgZGVzY3JpcHRpb24gb2YgdGhlIFZUMjAwLzIyMDsgdXNlZCB0byBiZSB2dDIyMC04Ci0jIGNoYW5nZWQgcm1hY3Mvc21hY3MgZnJvbSBzaGlmdC1pbi9zaGlmdC1vdXQgdG8gdnQyMDAtb2xkJ3MgZXhwbGljaXQgRzAvRzEKLSMgZGVzaWduYXRpb24gdG8gYWNjb21tb2RhdGUgYnVnIGluIHBjdnQgLVRECi12dDIyMHx2dDIwMHxkZWMgdnQyMjAsCi0JT1RicywgYW0sIG1jNWksIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgZW5hY3M9XEUpMCwKLQlmbGFzaD1cRVs/NWgkPDIwMC8+XEVbPzVsLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILAotCWljaD1cRVslcDElZEAsIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWz83aFxFWz5cRVs/MWhcRSBGXEVbPzRsLCBrYnM9XkgsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFT1AsIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAotCWtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMj1cRU9RLAotCWtmMjA9XEVbMzR+LCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ZuZD1cRVsxfiwga2hscD1cRVsyOH4sCi0Ja2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LCBrcmRvPVxFWzI5fiwga3NsdD1cRVs0fiwKLQlsZjE9cGYxLCBsZjI9cGYyLCBsZjM9cGYzLCBsZjQ9cGY0LCBtYzA9XEVbaSwgbWM0PVxFWzRpLAotCW1jNT1cRVs1aSwgbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKLQlybWFjcz1cRShCJDw0Piwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLAotCXJtdWw9XEVbMjRtLCByczE9XEVbPzNsLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDI+LAotCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAkPDI+LCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi12dDIyMC13fHZ0MjAwLXd8REVDIHZ0MjIwIGluIHdpZGUgbW9kZSwKLQljb2xzIzEzMiwKLQlyczM9XEVbPzNoLCB1c2U9dnQyMjAsCi12dDIyMC04Yml0fHZ0MjIwLTh8dnQyMDAtOGJpdHx2dDIwMC04fGRlYyB2dDIyMC8yMDAgaW4gOC1iaXQgbW9kZSwKLQlPVGJzLCBhbSwgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVwyMzM1bSwgYm9sZD1cMjMzMW0sIGNsZWFyPVwyMzNIXDIzM0osIGNyPV5NLAotCWNzcj1cMjMzJWklcDElZDslcDIlZHIsIGN1Yj1cMjMzJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cMjMzJXAxJWRCLCBjdWQxPV5KLCBjdWY9XDIzMyVwMSVkQywgY3VmMT1cMjMzQywKLQljdXA9XDIzMyVpJXAxJWQ7JXAyJWRILCBjdXU9XDIzMyVwMSVkQSwgY3V1MT1cMjMzQSwKLQlkY2g9XDIzMyVwMSVkUCwgZGNoMT1cMjMzUCwgZGw9XDIzMyVwMSVkTSwgZGwxPVwyMzNNLAotCWVjaD1cMjMzJXAxJWRYLCBlZD1cMjMzSiwgZWw9XDIzM0ssIGVsMT1cMjMzMUssIGVuYWNzPVxFKTAsCi0JZmxhc2g9XDIzMz81aCQ8MjAwLz5cMjMzPzVsLCBob21lPVwyMzNILCBodD1eSSwgaHRzPVxFSCwKLQlpY2g9XDIzMyVwMSVkQCwgaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsCi0JaWw9XDIzMyVwMSVkTCwgaWwxPVwyMzNMLCBpbmQ9XEVELAotCWlzMj1cMjMzPzdoXDIzMz5cMjMzPzFoXEUgRlwyMzM/NGwsIGticz1eSCwKLQlrY3ViMT1cMjMzRCwga2N1ZDE9XDIzM0IsIGtjdWYxPVwyMzNDLCBrY3V1MT1cMjMzQSwKLQlrZjE9XEVPUCwga2YxMD1cMjMzMjF+LCBrZjExPVwyMzMyM34sIGtmMTI9XDIzMzI0fiwKLQlrZjEzPVwyMzMyNX4sIGtmMTQ9XDIzMzI2fiwga2YxNz1cMjMzMzF+LCBrZjE4PVwyMzMzMn4sCi0Ja2YxOT1cMjMzMzN+LCBrZjI9XEVPUSwga2YyMD1cMjMzMzR+LCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0Ja2Y2PVwyMzMxN34sIGtmNz1cMjMzMTh+LCBrZjg9XDIzMzE5fiwga2Y5PVwyMzMyMH4sCi0Ja2ZuZD1cMjMzMX4sIGtobHA9XDIzMzI4fiwga2hvbWU9XDIzM0gsIGtpY2gxPVwyMzMyfiwKLQlrbnA9XDIzMzZ+LCBrcHA9XDIzMzV+LCBrcmRvPVwyMzMyOX4sIGtzbHQ9XDIzMzR+LCBsZjE9cGYxLAotCWxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsIG1jMD1cMjMzaSwgbWM0PVwyMzM0aSwgbWM1PVwyMzM1aSwKLQluZWw9XEVFLCByYz1cRTgsIHJldj1cMjMzN20sIHJpPVxFTSwgcm1hY3M9XEUoQiwKLQlybWFtPVwyMzM/N2wsIHJtaXI9XDIzMzRsLCBybXNvPVwyMzMyN20sIHJtdWw9XDIzMzI0bSwKLQlyczE9XDIzMz8zbCwgc2M9XEU3LAotCXNncj1cMjMzMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cMjMzMG1cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVwyMzM/N2gsIHNtaXI9XDIzMzRoLAotCXNtc289XDIzMzdtLCBzbXVsPVwyMzM0bSwgdGJjPVwyMzMzZywKLQotIyB2dDIyMGQ6Ci0jIFRoaXMgdnQyMjAgZGVzY3JpcHRpb24gcmVnYXJkcyBGNi0tRjEwIGFzIHRoZSBzZWNvbmQgYmxvY2sgb2YgZnVuY3Rpb24ga2V5cwotIyBhdCB0aGUgdG9wIG9mIHRoZSBrZXlib2FyZC4gIFRoaXMgbWFwcGluZyBmb2xsb3dzIHRoZSBkZXNjcmlwdGlvbiBnaXZlbgotIyBpbiB0aGUgVlQyMjAgUHJvZ3JhbW1lciBSZWZlcmVuY2UgTWFudWFsIGFuZCBhZ3JlZXMgd2l0aCB0aGUgbGFiZWxpbmcKLSMgb24gc29tZSB0ZXJtaW5hbHMgdGhhdCBlbXVsYXRlIHRoZSB2dDIyMC4gIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGFuIEY1LgotIyBTZWUgdnQyMjAgZm9yIGFuIGFsdGVybmF0ZSBtYXBwaW5nLgotIwotdnQyMjBkfERFQyBWVDIyMCBpbiB2dDEwMCBtb2RlIHdpdGggREVDIGZ1bmN0aW9uIGtleSBsYWJlbGluZywKLQlrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwKLQlrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwKLQlrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMjA9XEVbMzR+LCBrZjVALCBrZjY9XEVbMTd+LAotCWtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIHVzZT12dDIyMC1vbGQsCi0KLXZ0MjIwLW5hbXx2MjAwLW5hbXxWVDIyMCBpbiB2dDEwMCBtb2RlIHdpdGggbm8gYXV0byBtYXJnaW5zLAotCWFtQCwKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoLCB1c2U9dnQyMjAsCi0KLSMgdnQyMjAgdGVybWNhcCB3cml0dGVuIFR1ZSBPY3QgMjUgMjA6NDE6MTAgMTk4OCBieSBBbGV4IExhdHprbwotIyAobm90IGFuIG9mZmljaWFsIERFQyBlbnRyeSEpCi0jIFRoZSBwcm9ibGVtIHdpdGggcmVhbCB2dDIyMCB0ZXJtaW5hbHMgaXMgdGhleSBkb24ndCBzZW5kIGVzY2FwZXMgd2hlbiBpbgotIyBpbiB2dDIyMCBtb2RlLiAgVGhpcyBjYW4gYmUgZ290dGVuIGFyb3VuZCB0d28gd2F5cy4gIDE+IGRvbid0IHNlbmQKLSMgZXNjYXBlcyBvciAyPiBwdXQgdGhlIHZ0MjIwIGludG8gdnQxMDAgbW9kZSBhbmQgdXNlIGFsbCB0aGUgbmlmdHkKLSMgZmVhdHVyZXMgb2YgdnQxMDAgYWR2YW5jZWQgdmlkZW8gd2hpY2ggaXQgdGhlbiBoYXMuCi0jCi0jIFRoaXMgZW50cnkgdGFrZXMgdGhlIHZpZXcgb2YgcHV0dGluZyBhIHZ0MjIwIGludG8gdnQxMDAgbW9kZSBzbwotIyB5b3UgY2FuIHVzZSB0aGUgZXNjYXBlIGtleSBpbiBlbWFjcyBhbmQgZXZlcnl0aGluZyBlbHNlIHdoaWNoIG5lZWRzIGl0LgotIwotIyBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBvbiBhIFZNUyBtYWNoaW5lIHNpbmNlIFZNUyB3aWxsIHRoaW5rCi0jIGl0IGhhcyBhIHZ0MjIwIGFuZCB3aWxsIGdldCBmb3VsZWQgdXAgY29taW5nIG91dCBvZiBlbWFjcwotIwotIyBGcm9tOiBBbGV4YW5kZXIgTGF0emtvIDxsYXR6a29AbWFyc2VuaXVzLnJ1dGdlcnMuZWR1PiwgMzAgRGVjIDE5OTYKLSMgKEFkZGVkIHZ0MTAwIDxyYz4sPHNjPiB0byBxdWlldCBhIHRpYyB3YXJuaW5nIC0tIGVzcikKLXZ0MjAwLWpzfHZ0MjIwLWpzfGRlYyB2dDIwMCBzZXJpZXMgd2l0aCBqdW1wIHNjcm9sbCwKLQlhbSwKLQljb2xzIzgwLAotCWJlbD1eRywgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCi0JZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwKLQlpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEVbNjEicFxFW0hcRVs/M2xcRVs/NGxcRVs/MWxcRVs/NWxcRVs/NmxcRVs/N2hcRVs/OGhcRVs/MjVoXEU+XEVbbSwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIG5lbD1eTVxFRCwgcmM9XEU4LAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCByaT1cRU0sIHJtZGM9LCBybWlyPVxFWzRsLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzI3bSQ8NS8+LCBybXVsPVxFWzI0bSwKLQlyczE9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsIHNtZGM9LAotCXNtaXI9XEVbNGgsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtJDw1Lz4sIHNtdWw9XEVbNG0sCi0KLSMgVGhpcyB3YXMgREVDJ3MgdnQzMjAuICBVc2UgdGhlIHB1cnBvc2UtYnVpbHQgb25lIGJlbG93IGluc3RlYWQKLSN2dDMyMHxERUMgVlQzMjAgaW4gdnQxMDAgZW11bGF0aW9uIG1vZGUsCi0jCXVzZT12dDIyMCwKLQotIyBVc2UgdjMyMG4gZm9yIFNDTydzIExZUklYLiAgT3RoZXJ3aXNlLCB1c2UgQWRhbSBUaG9tcHNvbidzIHZ0MzIwLW5hbS4KLSMKLXZ0MzIwbmFtfHYzMjBufERFQyBWVDMyMCBpbiB2dDEwMCBlbXVsLiBtb2RlIHdpdGggTk8gQVVUTyBXUkFQIG1vZGUsCi0JYW1ALAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2xcRVs/OGgsIHVzZT12dDIyMCwKLQotIyBUaGVzZSBlbnRyaWVzIGFyZSBub3QgREVDJ3Mgb2ZmaWNpYWwgb25lcywgdGhleSB3ZXJlIHB1cnBvc2UtYnVpbHQgZm9yIHRoZQotIyBWVDMyMC4gIEhlcmUgYXJlIHRoZSBkZXNpZ25lcidzIG5vdGVzOgotIyA8a2VsPiBpcyBlbmQgb24gYSBQQyBrYmQuICBBY3R1YWxseSAnc2VsZWN0JyBvbiBhIFZULiAgTWFwcGVkIHRvCi0jICdFcmFzZSB0byBFbmQgb2YgRmllbGQnLi4uIHNpbmNlIG5vdGhpbmcgc2VlbXMgdG8gdXNlICdlbmQnIGFueXdheXMuLi4KLSMga2hvbWUgaXMgSG9tZSBvbiBhIFBDIGtiZC4gIEFjdHVhbGx5ICdGSU5EJyBvbiBhIFZULgotIyBUaGluZ3MgdGhhdCB1c2UgPGtueHQ+IHVzdWFsbHkgdXNlIHRhYiBhbnl3YXlzLi4uIGFuZCB0aGluZ3MgdGhhdCBkb24ndCB1c2UKLSMgdGFiIHVzdWFsbHkgdXNlIDxrbnh0PiBpbnN0ZWFkLi4uCi0jIGtwcnYgaXMgc2FtZSBhcyB0YWIgLSBCYWNrdGFiIGlzIHVzZWxlc3MuLi4KLSMgSSBsZWZ0IG91dCA8c2dyPiBiZWNhdXNlIG9mIGl0cyBSSURJQ1VMT1VTIGNvbXBsZXhpdHksCi0jIGFuZCB0aGUgcmVzdWx0aW5nIGZhY3QgdGhhdCBpdCBjYXVzZXMgdGhlIHRlcm1jYXAgdHJhbnNsYXRpb24gb2YgdGhlIGVudHJ5Ci0jIHRvIFNNQVNIIHRoZSAxay1iYXJyaWVyLi4uCi0jIEZyb206IEFkYW0gVGhvbXBzb24gPGF0aG9tcHNvQHBhbmdlYS5jYT4gU2VwdCAxMCAxOTk1Ci0jICh2dDMyMDogdW5jb21tZW50ZWQgPGZzbD4gLS1lc3IpCi12dDMyMHx2dDMwMHxkZWMgdnQzMjAgNyBiaXQgdGVybWluYWwsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGxpbmVzIzI0LCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBmc2w9XEVbMCR9LAotCWhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwKLQlpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlrYnM9XDE3Nywga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlrZGNoMT1cRVszfiwga2VsPVxFWzR+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyMD1cRVszNH4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sCi0Ja2Y5PVxFWzIwfiwga2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtueHQ9XkksCi0Ja3BwPVxFWzV+LCBrcHJ2PVxFW1osIGtzbHQ9XEVbNH4sIG1jMD1cRVtpLCBtYzQ9XEVbPzRpLAotCW1jNT1cRVs/NWksIG5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MzAwLCByaT1cRU0sIHJtYWNzPVxFKEIsCi0Jcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sCi0Jcm11bD1cRVttLAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVsxOzI0clxFWzI0OzFILAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttXEUoQiwgc21hY3M9XEUoMCwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKLQl0c2w9XEVbMSR9XEVbSFxFW0ssIHVzZT12dDIyMCtrZXlwYWQsCi12dDMyMC1uYW18dnQzMDAtbmFtfGRlYyB2dDMyMCA3IGJpdCB0ZXJtaW5hbCB3aXRoIG5vIGFtIHRvIG1ha2UgU0FTIGhhcHB5LAotCWFtQCwKLQlpczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQl1c2U9dnQzMjAsCi0jIFdlIGhhdmUgdG8gaW5pdCAxMzItY29sIG1vZGUsIG5vdCA4MC1jb2wgbW9kZS4KLXZ0MzIwLXd8dnQzMDAtd3xkZWMgdnQzMjAgd2lkZSA3IGJpdCB0ZXJtaW5hbCwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlpczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlyczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQl1c2U9dnQzMjAsCi12dDMyMC13LW5hbXx2dDMwMC13LW5hbXxkZWMgdnQzMjAgd2lkZSA3IGJpdCB0ZXJtaW5hbCB3aXRoIG5vIGFtLAotCWFtQCwKLQlpczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlyczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQl1c2U9dnQzMjAtdywKLQotIyBWVDMzMCBhbmQgVlQzNDAgLS0gVGhlc2UgYXJlIFJlR0lTIGFuZCBTSVhFTCBncmFwaGljcyB0ZXJtaW5hbHMKLSMgICB3aGljaCBhcmUgcHJldHR5IG11Y2ggYSBzdXBlcnNldCBvZiB0aGUgVlQzMjAuICBUaGV5IGhhdmUgdGhlCi0jICAgaG9zdCB3cml0YWJsZSBzdGF0dXMgbGluZSwgeWV0IGFub3RoZXIgZGlmZmVyZW50IERSQ1MgbWF0cml4IHNpemUsCi0jICAgYW5kIHN1Y2gsIGJ1dCB0aGV5IGFkZCB0aGUgREVDIFRlY2huaWNhbCBjaGFyYWN0ZXIgc2V0LCBNdWx0aXBsZSB0ZXh0Ci0jICAgcGFnZXMsIHNlbGVjdGFibGUgbGVuZ3RoIHBhZ2VzLCBhbmQgdGhlIGxpa2UuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuCi0jICAgdGhlIHZ0MzMwIGFuZCB2dDM0MCBpcyB0aGF0IHRoZSBsYXR0ZXIgaGFzIG9ubHkgMiBwbGFuZXMgYW5kIGEgbW9ub2Nocm9tZQotIyAgIG1vbml0b3IsIHRoZSBmb3JtZXIgaGFzIDQgcGxhbmVzIGFuZCBhIGNvbG9yIG1vbml0b3IuICBUaGVzZSB0ZXJtaW5hbHMKLSMgICBzdXBwb3J0IFZUMTMxIGFuZCBBTlNJIGJsb2NrIG1vZGUsIGJ1dCBhcyB3aXRoIG11Y2ggb2YgdGhlc2UgdGhpbmdzLAotIyAgIHRlcm1jYXAvdGVybWluZm8gZG9lc24ndCBkZWFsIHdpdGggdGhlc2UgZmVhdHVyZXMuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGVudHJ5IGlzIGFyZSBzZXQgdXAgaW4gd2hhdCB3YXMgdGhlIHN0YW5kYXJkIHdheSBmb3IgR05VCi0jIEVtYWNzIHYxOCB0ZXJtaW5hbCBtb2RlcyB0byBkZWFsIHdpdGggdGhlIGN1cnNvciBrZXlzIGluIHRoYXQgdGhlIGFycm93Ci0jIGtleXMgd2VyZSBzd2l0Y2hlZCBpbnRvIGFwcGxpY2F0aW9uIG1vZGUgYXQgdGhlIHNhbWUgdGltZSB0aGUgbnVtZXJpYyBwYWQKLSMgaXMgc3dpdGNoZWQgaW50byBhcHBsaWNhdGlvbiBtb2RlLiAgVGhpcyBjaGFuZ2VzIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUKLSMgYXJyb3cga2V5cy4gIEVtYWNzIHYxOSBpcyBzbWFydGVyIGFuZCBtaW5lcyBpdHMga2V5cyBkaXJlY3RseSBvdXQgb2YKLSMgeW91ciB0ZXJtY2FwIG9yIHRlcm1pbmZvIGVudHJ5LAotIwotIyBGcm9tOiBEYW5pZWwgR2xhc3NlciA8ZGFnQHBlcnNvZnQucGVyc29mdC5jb20+LCAxMyBPY3QgMTk5MwotIyAodnQzNDA6IHN0cmluZyBjYXBhYmlsaXR5ICJzYj1cRVtNIiBjb3JyZWN0ZWQgdG8gInNyIjsKLSMgYWxzbywgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcgLS0gZXNyKQotdnQzNDB8ZGVjLXZ0MzQwfHZ0MzMwfGRlYy12dDMzMHxkZWMgdnQzNDAgZ3JhcGhpY3MgdGVybWluYWwgd2l0aCAyNCBsaW5lIHBhZ2UsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwgY2xlYXI9XEVbSFxFW0osCi0JY25vcm09XEVbPzI1aCwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGRzbD1cRVsyJH5cclxFWzEkfVxFW0tcRVskfSwKLQllZD1cRVtKLCBlbD1cRVtLLCBmbGFzaD1cRVs/NWhcRVs/NWwkPDIwMC8+LCBmc2w9XEVbJH0sCi0JaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XEVELAotCWlzMj1cRTxcRSBGXEU+XEVbPzFoXEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sCi0Ja2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwgbGYxPXBmMSwgbGYyPXBmMiwKLQlsZjM9cGYzLCBsZjQ9cGY0LCBuZWw9Xk1cRUQsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MzAwLCByaT1cRU0sIHJtYWNzPVxFKEIsCi0Jcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzI3bSwKLQlybXVsPVxFWzI0bSwgcnMxPVxFWz8zbCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7JDwyPiwKLQlzZ3IwPVxFW21cRShCLCBzbWFjcz1cRSgwLCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXRzbD1cRVsyJH5cRVsxJH1cRVsxOyVkSCwKLQotIyBERUMgZG9lc24ndCBzdXBwbHkgYSB2dDQwMCBkZXNjcmlwdGlvbiwgc28gd2UgYWRkIERhbmllbCBHbGFzc2VyJ3MKLSMgKG9yaWdpbmFsbHkgd3JpdHRlbiB3aXRoIHZ0NDIwIGFzIGl0cyBwcmltYXJ5IG5hbWUsIGFuZCB1c2FibGUgZm9yIGl0KS4KLSMKLSMgVlQ0MDAvNDIwIC0tIFRoaXMgdGVybWluYWwgaXMgYSBzdXBlcnNldCBvZiB0aGUgdnQzMjAuICBJdCBhZGRzIHRoZSBtdWx0aXBsZQotIyAgICB0ZXh0IHBhZ2VzIGFuZCBsb25nIHRleHQgcGFnZXMgd2l0aCBzZWxlY3RhYmxlIGxlbmd0aCBvZiB0aGUgdnQzNDAsIGFsb25nCi0jICAgIHdpdGggbGVmdCBhbmQgcmlnaHQgbWFyZ2lucywgcmVjdGFuZ3VsYXIgYXJlYSB0ZXh0IGNvcHksIGZpbGwsIGFuZCBlcmFzZQotIyAgICBvcGVyYXRpb25zLCBzZWxlY3RlZCByZWdpb24gY2hhcmFjdGVyIGF0dHJpYnV0ZSBjaGFuZ2Ugb3BlcmF0aW9ucywKLSMgICAgcGFnZSBtZW1vcnkgYW5kIHJlY3RhbmdsZSBjaGVja3N1bXMsIGluc2VydC9kZWxldGUgY29sdW1uLCByZWNlcHRpb24KLSMgICAgbWFjcm9zLCBhbmQgb3RoZXIgZmVhdHVyZXMgdG9vIG51bWVyb3VzIHRvIHJlbWVtYmVyIHJpZ2h0IG5vdy4gIFRFUk1DQVAKLSMgICAgY2FuIG9ubHkgdGFrZSBhZHZhbnRhZ2Ugb2YgYSBmZXcgb2YgdGhlc2UgYWRkZWQgZmVhdHVyZXMuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGVudHJ5IGlzIGFyZSBzZXQgdXAgaW4gd2hhdCB3YXMgdGhlIHN0YW5kYXJkIHdheSBmb3IgR05VCi0jIEVtYWNzIHYxOCB0ZXJtaW5hbCBtb2RlcyB0byBkZWFsIHdpdGggdGhlIGN1cnNvciBrZXlzIGluIHRoYXQgdGhlIGFycm93Ci0jIGtleXMgd2VyZSBzd2l0Y2hlZCBpbnRvIGFwcGxpY2F0aW9uIG1vZGUgYXQgdGhlIHNhbWUgdGltZSB0aGUgbnVtZXJpYyBwYWQKLSMgaXMgc3dpdGNoZWQgaW50byBhcHBsaWNhdGlvbiBtb2RlLiAgVGhpcyBjaGFuZ2VzIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUKLSMgYXJyb3cga2V5cy4gIEVtYWNzIHYxOSBpcyBzbWFydGVyIGFuZCBtaW5lcyBpdHMga2V5cyBkaXJlY3RseSBvdXQgb2YKLSMgeW91ciB0ZXJtY2FwIGVudHJ5LAotIwotIyBGcm9tOiBEYW5pZWwgR2xhc3NlciA8ZGFnQHBlcnNvZnQucGVyc29mdC5jb20+LCAxMyBPY3QgMTk5MwotIyAodnQ0MDA6IHN0cmluZyBjYXBhYmlsaXR5ICI6c2I9XEVbTToiIGNvcnJlY3RlZCB0byAiOnNyPVxFW006IjsKLSMgYWxzbywgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcgLS0gZXNyKQotdnQ0MDB8dnQ0MDAtMjR8ZGVjLXZ0NDAwfGRlYyB2dDQwMCAyNHg4MCBjb2x1bW4gYXV0b3dyYXAsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiQ8MTAvPiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZHNsPVxFWzIkflxyXEVbMSR9XEVbS1xFWyR9LCBlZD1cRVtKJDwxMC8+LAotCWVsPVxFW0skPDQvPiwgZmxhc2g9XEVbPzVoXEVbPzVsJDwyMDAvPiwgZnNsPVxFWyR9LAotCWhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELAotCWlzMj1cRTxcRSBGXEU+XEVbPzFoXEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHJcRVsyNDsxSCwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sCi0Ja2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwgbGYxPXBmMSwgbGYyPXBmMiwKLQlsZjM9cGYzLCBsZjQ9cGY0LCBuZWw9Xk1cRUQsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MzAwLCByaT1cRU0sIHJtYWNzPVxFKEIsCi0Jcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzI3bSwKLQlybXVsPVxFWzI0bSwgcnMxPVxFPFxFWz8zbFxFWyFwXEVbPzdoLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTskPDI+LAotCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdHNsPVxFWzIkflxFWzEkfVxFWzE7JWRILAotCi0jICh2dDQyMDogSSByZW1vdmVkIDxrZjA+LCBpdCBjb2xsaWRlZCB3aXRoIDxrZjEwPi4gIEkgYWxzbyByZXN0b3JlZAotIyBhIG1pc3NpbmcgPHNjPiAtLSBlc3IpCi12dDQyMHxERUMgVlQ0MjAsCi0JYW0sIG1pciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTA+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTA+LCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDMwMCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGlzMz1cRVs/NjdoXEVbNjQ7MSJwLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sCi0Ja2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sIHJjPVxFOCwgcmV2PVxFWzdtJDwyPiwKLQlyZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDMwMCwgcmk9XEVNLCBybWFjcz1cRShCJDw0PiwKLQlybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1reD1cRT4sCi0Jcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIERFQyBWVDIyMCBhbmQgdXAgc3VwcG9ydCBERUNVREsgKHVzZXItZGVmaW5lZCBrZXlzKS4gIERFQ1VESyAoaS5lLiwgcGZ4KQotIyB0YWtlcyB0d28gcGFyYW1ldGVycywgdGhlIGtleSBhbmQgdGhlIHN0cmluZy4gIFRyYW5zbGF0aW5nIHRoZSBrZXkgaXMKLSMgc3RyYWlnaHRmb3J3YXJkIChrZXlzIDEtNSBhcmUgbm90IGRlZmluZWQgb24gcmVhbCB0ZXJtaW5hbHMsIHRob3VnaCBzb21lCi0jIGVtdWxhdG9ycyBkZWZpbmUgdGhlc2UpOgotIwotIyAgICAgICAgICAgICAgIGlmIChrZXkgPCAxNikgdGhlbiAgdmFsdWUgPSBrZXk7Ci0jICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5IDwgMjEpIHRoZW4gdmFsdWUgPSBrZXkgKyAxOwotIyAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA8IDI1KSB0aGVuIHZhbHVlID0ga2V5ICsgMjsKLSMgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPCAyNykgdGhlbiB2YWx1ZSA9IGtleSArIDM7Ci0jICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5IDwgMzApIHRoZW4gdmFsdWUgPSBrZXkgKyA0OwotIyAgICAgICAgICAgICAgIGVsc2UgdmFsdWUgPSBrZXkgKyA1OwotIwotIyBUaGUgc3RyaW5nIG11c3QgYmUgdGhlIGhleGFkZWNpbWFsIGVxdWl2YWxlbnQsIGUuZy4sICI1MDUyNDk0RSIgZm9yICJQUklOVCIuCi0jIFRoZXJlJ3Mgbm8gcHJvdmlzaW9uIGluIHRlcm1pbmZvIGZvciBlbWl0dGluZyBhIHN0cmluZyBpbiB0aGlzIGZvcm1hdCwgc28gdGhlCi0jIGFwcGxpY2F0aW9uIGhhcyB0byBrbm93IGl0LgotIwotdnQ0MjBwY3xERUMgVlQ0MjAgdy9QQyBrZXlib2FyZCwKLQlrZGNoMT1cMTc3LCBrZW5kPVxFWzR+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwKLQlrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMTM9XEVbMTE7Mn4sIGtmMTQ9XEVbMTI7Mn4sCi0Ja2YxNT1cRVsxMzsyfiwga2YxNj1cRVsxNDsyfiwga2YxNz1cRVsxNTsyfiwKLQlrZjE4PVxFWzE3OzJ+LCBrZjE5PVxFWzE4OzJ+LCBrZjI9XEVbMTJ+LCBrZjIwPVxFWzE5OzJ+LAotCWtmMjE9XEVbMjA7Mn4sIGtmMjI9XEVbMjE7Mn4sIGtmMjM9XEVbMjM7Mn4sCi0Ja2YyND1cRVsyNDsyfiwga2YyNT1cRVsyM34sIGtmMjY9XEVbMjR+LCBrZjI3PVxFWzI1fiwKLQlrZjI4PVxFWzI2fiwga2YyOT1cRVsyOH4sIGtmMz1cRVsxM34sIGtmMzA9XEVbMjl+LAotCWtmMzE9XEVbMzF+LCBrZjMyPVxFWzMyfiwga2YzMz1cRVszM34sIGtmMzQ9XEVbMzR+LAotCWtmMzU9XEVbMzV+LCBrZjM2PVxFWzM2fiwga2YzNz1cRVsyMzsyfiwga2YzOD1cRVsyNDsyfiwKLQlrZjM5PVxFWzI1OzJ+LCBrZjQ9XEVbMTR+LCBrZjQwPVxFWzI2OzJ+LCBrZjQxPVxFWzI4OzJ+LAotCWtmNDI9XEVbMjk7Mn4sIGtmNDM9XEVbMzE7Mn4sIGtmNDQ9XEVbMzI7Mn4sCi0Ja2Y0NT1cRVszMzsyfiwga2Y0Nj1cRVszNDsyfiwga2Y0Nz1cRVszNTsyfiwKLQlrZjQ4PVxFWzM2OzJ+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAotCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFW0gsCi0JcGN0cm09VVNSX1RFUk1cOnZ0NDIwcGNkb3NcOiwKLQlwZng9XEVQMTsxfCU/JXsxNn0lcDElPiV0JXswfSVlJXsyMX0lcDElPiV0JXsxfSVlJXsyNX0lcDElPiV0JXsyfSVlJXsyN30lcDElPiV0JXszfSVlJXszMH0lcDElPiV0JXs0fSVlJXs1fSU7JXAxJSslZC8lcDIlc1xFXFwsCi0JdXNlPXZ0NDIwLAotCi12dDQyMHBjZG9zfERFQyBWVDQyMCB3L1BDIGZvciBET1MgTWVyZ2UsCi0JbGluZXMjMjUsCi0JZGlzcGM9JT8lcDElezE5fSU9JXRcRVwwMjNcMDIxJWUlcDElezMyfSU8JXRcRSVwMSVjJWUlcDElezEyN30lPSV0XEVcMTc3JWUlcDElYyU7LAotCXBjdHJtQCwKLQlybXNjPVxFWz8wOzByXEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzZ3JALAotCXNncjA9XEVbbSwgc21zYz1cRVs/MTsyclxFWzM0aCwgdXNlPXZ0NDIwcGMsCi0KLXZ0NDIwZnxERUMgVlQ0MjAgd2l0aCBWVCBrYmQ7IFZUNDAwIG1vZGU7IEYxLUY1IHVzZWQgYXMgRmtleXMsCi0Ja2RjaDE9XDE3Nywga2YxPVxFWzExfiwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LAotCWtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LAotCWtmMj1cRVsxMn4sIGtmMjA9XEVbMzR+LCBrZjM9XEVbMTN+LCBrZjQ9XEVbMTR+LAotCWtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2hvbWU9XEVbSCwgbGYxPVxFT1AsIGxmMj1cRU9RLCBsZjM9XEVPUiwgbGY0PVxFT1MsCi0JdXNlPXZ0NDIwLAotCi12dDUxMHxERUMgVlQ1MTAsCi0JdXNlPXZ0NDIwLAotdnQ1MTBwY3xERUMgVlQ1MTAgdy9QQyBrZXlib2FyZCwKLQl1c2U9dnQ0MjBwYywKLXZ0NTEwcGNkb3N8REVDIFZUNTEwIHcvUEMgZm9yIERPUyBNZXJnZSwKLQl1c2U9dnQ0MjBwY2RvcywKLQotIyBWVDUyMC9WVDUyNQotIwotIyBUaGUgVlQ1MjAgaXMgYSBtb25vY2hyb21lIHRleHQgdGVybWluYWwgY2FwYWJsZSBvZiBtYW5hZ2luZyB1cCB0bwotIyBmb3VyIGluZGVwZW5kZW50IHNlc3Npb25zIGluIHRoZSB0ZXJtaW5hbC4gIEl0IGhhcyBtdWx0aXBsZSBBTlNJCi0jIGVtdWxhdGlvbnMgKFZUNTIwLCBWVDQyMCwgVlQzMjAsIFZUMjIwLCBWVDEwMCwgVlQgUENUZXJtLCBTQ08gQ29uc29sZSkKLSMgYW5kIEFTQ0lJIGVtdWxhdGlvbnMgKFdZMTYwLzYwLCBQQ1Rlcm0sIDUwLzUwKywgMTUwLzEyMCwgVFZJIDk1MCwKLSMgOTI1IDkxMCssIEFERFMgQTIpLiAgVGhpcyB0ZXJtaW5mbyBkYXRhIGlzIGZvciB0aGUgQU5TSSBlbXVsYXRpb25zIG9ubHkuCi0jCi0jIFRlcm1pbmFsIFNldC1VcCBpcyBlbnRlcmVkIGJ5IHByZXNzaW5nIFtGM10sIFtDYXBzIExvY2tdL1tGM10gb3IKLSMgW0FsdF0vW1ByaW50IFNjcmVlbl0gZGVwZW5kaW5nIHVwb24gd2hpY2gga2V5Ym9hcmQgYW5kIHdoaWNoCi0jIHRlcm1pbmFsIG1vZGUgaXMgYmVpbmcgdXNlZC4gIElmIFNldC1VcCBoYXMgYmVlbiBkaXNhYmxlZCBvcgotIyBhc3NpZ25lZCB0byBhbiB1bmtub3duIGtleSwgU2V0LVVwIG1heSBiZSBlbnRlcmVkIGJ5IHByZXNzaW5nCi0jIFtGM10gYXMgdGhlIGZpcnN0IGtleSBhZnRlciBwb3dlciB1cCwgcmVnYXJkbGVzcyBvZiBrZXlib2FyZCB0eXBlLgotIyAodnQ1MjA6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcsIGFsc28gPHNjPiAtLSBlc3IpCi12dDUyMHxERUMgVlQ1MjAsCi0JYW0sIG1pciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTA+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTA+LCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDMwMCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGlzMz1cRVs/NjdoXEVbNjQ7MSJwLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sCi0Ja2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sCi0JcGZ4PVxFUDE7MXwlPyV7MTZ9JXAxJT4ldCV7MH0lZSV7MjF9JXAxJT4ldCV7MX0lZSV7MjV9JXAxJT4ldCV7Mn0lZSV7Mjd9JXAxJT4ldCV7M30lZSV7MzB9JXAxJT4ldCV7NH0lZSV7NX0lOyVwMSUrJWQvJXAyJXNcRVxcLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQzMDAsCi0Jcmk9XEVNLCBybWFjcz1cRShCJDw0Piwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0KLSMgKHZ0NTI1OiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nOwotIyByZW1vdmVkIDxybXNvPj1cRVttLCA8cm11bD49XEVbbSwgYWRkZWQgPHNjPiAtLSBlc3IpCi12dDUyNXxERUMgVlQ1MjUsCi0JYW0sIG1pciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTA+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTA+LCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDMwMCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGlzMz1cRVs/NjdoXEVbNjQ7MSJwLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjl+LCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRVsxN34sIGtmNj1cRVsxOH4sIGtmNz1cRVsxOX4sIGtmOD1cRVsyMH4sCi0Ja2Y5PVxFWzIxfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sCi0JcGZ4PVxFUDE7MXwlPyV7MTZ9JXAxJT4ldCV7MH0lZSV7MjF9JXAxJT4ldCV7MX0lZSV7MjV9JXAxJT4ldCV7Mn0lZSV7Mjd9JXAxJT4ldCV7M30lZSV7MzB9JXAxJT4ldCV7NH0lZSV7NX0lOyVwMSUrJWQvJXAyJXNcRVxcLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQzMDAsCi0Jcmk9XEVNLCBybWFjcz1cRShCJDw0Piwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1zYz1cRVs/MDswclxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMzPVxFWz82N2hcRVs2NDsxInAsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFxFKDAlZVxFKEIlOyQ8Mj4sCi0Jc2dyMD1cRVttJDwyPiwgc21hY3M9XEUoMCQ8Mj4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0KLSMjIyMgVlQxMDAgZW11bGF0aW9ucwotIwotCi0jIEpvaG4gSGF3a2luc29uIDxqaGF3a0BNSVQuRURVPiB0ZWxscyB1cyB0aGF0IHRoZSBFV0FOIHRlbG5ldCBmb3IgV2luZG93cwotIyAodGhlIGJlc3QgV2luZG93cyB0ZWxuZXQgYXMgb2YgU2VwdGVtYmVyIDE5OTUpIHByZXNlbnRzIHRoZSBuYW1lIGBkZWMtdnQxMDAnCi0jIHRvIHRlbG5ldGQuICAgTWljaGFlbCBEZXV0c2NobWFubiA8bGRldXRzY2hAbWFpbC5uZXRzaG9wLm5ldD4gaW5mb3JtcyB1cwotIyB0aGF0IHRoaXMgd29ya3MgYmVzdCB3aXRoIGEgc3RvY2sgdnQxMDAgZW50cnkuCi1kZWMtdnQxMDB8RVdBTiB0ZWxuZXQncyB2dDEwMCBlbXVsYXRpb24sCi0JdXNlPXZ0MTAwLAotCi0jIEZyb206IEFkcmlhbiBHYXJzaWRlIDw5NGFqZzJAZW5nLmNhbS5hYy51az4sIDE5IE5vdiAxOTk2Ci1kZWMtdnQyMjB8RE9TIHRudnQyMDAgdGVybWluYWwgZW11bGF0b3IsCi0JYW1ALCB1c2U9dnQyMjAsCi0KLSMgWnN0ZW0zNDAgaXMgYW4gKElNSE8pIGV4Y2VsbGVudCBWVCBlbXVsYXRvciBmb3IgUEMncy4gIEkgcmVjb21tZW5kIGl0IHRvCi0jIGFueW9uZSB3aG8gbmVlZHMgUEMgVlQzNDAgZW11bGF0aW9uLiAob3IgYW55dGhpbmcgYmVsb3cgdGhhdCBsZXZlbCwgZm9yCi0jIHRoYXQgbWF0dGVyIC0tIERFQydzIEFMTC1pbi0xIHNlZW1zIGhhcHB5IHdpdGggaXQsIGFzIGRvZXMgSU5GT1BMVVMncwotIyBSREJNIHN5c3RlbXMsIGl0IGluY2x1ZGVzIFJlR0lTIGFuZCBTaVhlbCBzdXBwb3J0ISAgSSdtIGltcHJlc3NlZC4uLgotIyBJIGNhbiBzZW5kIHRoZSBhZGRyZXNzIGlmIHJlcXVlc3RlZC4KLSMgKHozNDA6IGNoYW5nZWQgZ2FyYmxlZCBcRVs1P2wgdG8gXEVbPzVsLCBERUMgc21vb3RoIHNjcm9sbCBvZmYgLS0gZXNyKQotIyBGcm9tOiBBZGFtIFRob21wc29uIDxhdGhvbXBzb0BwYW5nZWEuY2E+IFNlcHQgMTAgMTk5NQotejM0MHx6c3RlbSB2dDM0MCB0ZXJtaW5hbCBlbXVsYXRvciAxMzJjb2wgNDJsaW5lLAotCWxpbmVzIzQyLAotCWlzMj1cRT5cRVs/M2hcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVsxOzQyclxFWzQyOzFILAotCXJzMj1cRT5cRVs/M2hcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVsxOzQyclxFWzQyOzFILAotCXVzZT12dDMyMC13LAotejM0MC1uYW18enN0ZW0gdnQzNDAgdGVybWluYWwgZW11bGF0b3IgMTMyY29sIDQybGluZSAobm8gYXV0b21hdGljIG1hcmdpbnMpLAotCWFtQCwKLQlpczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTs0MnJcRVs0MjsxSCwKLQlyczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdsXEVbPzhoXEVbMTs0MnJcRVs0MjsxSCwKLQl1c2U9ejM0MCwKLQotIyBDUlQgaXMgc2hhcmV3YXJlLiAgSXQgaW1wbGVtZW50cyBzb21lIHh0ZXJtIGZlYXR1cmVzLCBpbmNsdWRpbmcgbW91c2UuCi1jcnR8Y3J0LXZ0MjIwfENSVCAyLjMgZW11bGF0aW5nIFZUMjIwLAotCWJjZSwgbXNnciwKLQluY3ZALAotCWh0cz1cRUgsIHVzZT12dDEwMCtlbnEsIHVzZT12dDIyMCwgdXNlPWVjbWErY29sb3IsCi0KLSMgUHVUVFkgMC41NSAocmVsZWFzZWQgMyBBdWd1c3QgMjAwNCkKLSMgaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9wdXR0eS8KLSMKLSMgQ29tcGFyaW5nIHdpdGggMC41MSwgdnR0ZXN0IGlzIG11Y2ggYmV0dGVyIChvbmx5IGEgZmV3IHByb2JsZW1zIHdpdGggdGhlCi0jIGN1cnNvciBwb3NpdGlvbiByZXBvcnRzIGFuZCB3cmFwcGluZykuCi0jCi0jIFB1VFRZIDAuNTEgKHJlbGVhc2VkIDE0IERlY2VtYmVyIDIwMDApCi0jCi0jIFRoaXMgZW11bGF0ZXMgdnQxMDAgKyB2dDUyIChwbHVzIGEgZmV3IHZ0MjIwIGZlYXR1cmVzOiAgZWNoLCBTUk0sIERFQ1RDRU0sIGFzCi0jIHdlbGwgYXMgU0NPIGFuZCBBdGFyaSwgY29sb3IgcGFsZXR0ZXMgZnJvbSBMaW51eCBjb25zb2xlKS4gIFJlYWRpbmcgdGhlIGNvZGUsCi0jIGl0IGlzIGludGVuZGVkIHRvIGJlIFZUMTAyIHBsdXMgc2VsZWN0ZWQgZmVhdHVyZXMuICBCeSBkZWZhdWx0LCBpdCBzZXRzICRURVJNCi0jIHRvIHh0ZXJtLCB3aGljaCBpcyBpbmNvcnJlY3QsIHNpbmNlIHNldmVyYWwgZmVhdHVyZXMgYXJlIG1pc2ltcGxlbWVudGVkOgotIwotIwlBbHQra2V5IGFsd2F5cyBzZW5kcyBFU0Mra2V5LCBzbyAna20nIGNhcGFiaWxpdHkgaXMgcmVtb3ZlZC4KLSMKLSMJQ29udHJvbCByZXNwb25zZXMsIHdyYXBwaW5nIGFuZCB0YWJzIGFyZSBidWdneSwgZmFpbGluZyBhIGNvdXBsZSBvZgotIwlzY3JlZW5zIGluIHZ0dGVzdC4KLSMKLSMJeHRlcm0gbW91c2Ugc3VwcG9ydCBpcyBub3QgaW1wbGVtZW50ZWQgKHVucmVsZWFzZSB2ZXJzaW9uIG1heSkuCi0jCi0jIFNldmVyYWwgZmVhdHVyZXMgc3VjaCBhcyBiYWNrc3BhY2UvZGVsZXRlIGFyZSBvcHRpb25hbDsgdGhpcyBlbnRyeSBkb2N1bWVudHMKLSMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgLVRECi0KLXB1dHR5fFB1VFRZIHRlcm1pbmFsIGVtdWxhdG9yLAotCWFtLCBiY2UsIGJ3LCBjY2MsIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xvcnMjOCwgaXQjOCwgbmN2IzIyLCBwYWlycyM2NCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRUQsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkaXNwYz0lPyVwMSV7OH0lPSV0XEUlJUdcMzQyXDIyN1wyMzBcRSUlQCVlJXAxJXsxMH0lPSV0XEUlJUdcMzQyXDIyN1wyMzFcRSUlQCVlJXAxJXsxMn0lPSV0XEUlJUdcMzQyXDIzMVwwXEUlJUAlZSVwMSV7MTN9JT0ldFxFJSVHXDM0MlwyMzFcMjUyXEUlJUAlZSVwMSV7MTR9JT0ldFxFJSVHXDM0MlwyMzFcMjUzXEUlJUAlZSVwMSV7MTV9JT0ldFxFJSVHXDM0MlwyMzBcMjc0XEUlJUAlZSVwMSV7Mjd9JT0ldFxFJSVHXDM0MlwyMDZcMjIwXEUlJUAlZSVwMSV7MTU1fSU9JXRcRSUlR1wzNDBcMjAyXDI0MlxFJSVAJWUlcDElYyU7LAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGRzbD1cRV0wO1wwMDcsIGVjaD1cRVslcDElZFgsCi0JZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRShCXEUpMCwKLQlmbGFzaD1cRVs/NWhcRVs/NWwsIGZzbD1eRywgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsCi0JaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpbmRuPVxFWyVwMSVkUywKLQlpbml0Yz1cRV1QJXAxJXglcDIlezI1NX0lKiV7MTAwMH0lLyUwMnglcDMlezI1NX0lKiV7MTAwMH0lLyUwMnglcDQlezI1NX0lKiV7MTAwMH0lLyUwMngsCi0JaXMyPVxFN1xFW3JcRVttXEVbPzdoXEVbPzE7NDs2bFxFWzRsXEU4XEU+XEVdUiwKLQlrYjI9XEVbRywga2JzPVwxNzcsIGtjYW49XkMsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwKLQlrZW5kPVxFWzR+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFWzEyfiwga2YyMD1cRVszNH4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzcGQ9XlosIG5lbD1eTV5KLCBvYz1cRV1SLCBvcD1cRVszOTs0OW0sIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJpPVxFTSwgcmluPVxFWyVwMSVkVCwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLAotCXJtY3VwPVxFWzJKXEVbPzQ3bCwgcm1pcj1cRVs0bCwgcm1wY2g9XEVbMTBtLAotCXJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEU8XEVbInBcRVs1MDs2InBcRWNcRVs/M2xcRV1SXEVbPzEwMDBsLAotCXMwZHM9XEVbMTBtLCBzMWRzPVxFWzExbSwgczJkcz1cRVsxMm0sIHNjPVxFNywKLQlzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWN1cD1cRVs/NDdoLAotCXNtaXI9XEVbNGgsIHNtcGNoPVxFWzExbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbM2csIHRzbD1cRV0wOywgdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLAotdnQxMDAtcHV0dHl8UmVzZXQgUHVUVFkgdG8gcHVyZSB2dDEwMCwKLQlyczI9XEU8XEVbInBcRWNcRVs/M2xcRV1SXEVbNDAicFxFWzYxInBcRVs1MDsxOzIicCwKLQl1c2U9dnQxMDAsCi0jIHBhbGV0dGUgaXMgaGFyZGNvZGVkLi4uCi1wdXR0eS0yNTZjb2xvcnxQdVRUWSAwLjU4IHdpdGggeHRlcm0gMjU2LWNvbG9ycywKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXB1dHR5LAotCi0jIE9uZSBvZiB0aGUga2V5Ym9hcmQgc2VsZWN0aW9ucyBpcyAiVlQxMDArIi4KLSMgcHRlcm0gKHRoZSBYMTEgcG9ydCkgdXNlcyBzaGlmdGVkIEYxLUYxMCBhcyBGMTEtRjIwCi1wdXR0eS12dDEwMHxWVDEwMCsga2V5Ym9hcmQgbGF5b3V0LAotCWtmMT1cRU9QLCBrZjEwPVxFT1ksIGtmMTE9XEVPWiwga2YxMj1cRU9bLCBrZjI9XEVPUSwKLQlrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsIGtmOD1cRU9XLAotCWtmOT1cRU9YLCB1c2U9cHV0dHksCi0KLSMgVGhpcyBlbnRyeSBpcyBmb3IgVGVyYSBUZXJtIFBybyB2ZXJzaW9uIDIuMywgZm9yIE1TLVdpbmRvd3MgOTUvTlQgd3JpdHRlbiBieQotIyBULiBUZXJhbmlzaGkgZGF0ZWQgTWFyIDEwLCAxOTk4LiAgSXQgaXMgYSBmcmVlIHNvZnR3YXJlIHRlcm1pbmFsIGVtdWxhdG9yCi0jIChjb21tdW5pY2F0aW9uIHByb2dyYW0pIHdoaWNoIHN1cHBvcnRzOgotIwotIwktIFNlcmlhbCBwb3J0IGNvbm5lY3Rpb25zLgotIwktIFRDUC9JUCAodGVsbmV0KSBjb25uZWN0aW9ucy4KLSMJLSBWVDEwMCBlbXVsYXRpb24sIGFuZCBzZWxlY3RlZCBWVDIwMC8zMDAgZW11bGF0aW9uLgotIwktIFRFSzQwMTAgZW11bGF0aW9uLgotIwktIEZpbGUgdHJhbnNmZXIgcHJvdG9jb2xzIChLZXJtaXQsIFhNT0RFTSwgWk1PREVNLCBCLVBMVVMgYW5kCi0jCSAgUXVpY2stVkFOKS4KLSMJLSBTY3JpcHRzIHVzaW5nIHRoZSAiVGVyYSBUZXJtIExhbmd1YWdlIi4KLSMJLSBKYXBhbmVzZSBhbmQgUnVzc2lhbiBjaGFyYWN0ZXIgc2V0cy4KLSMKLSMgVGhlIHByb2dyYW0gZG9lcyBub3QgY29tZSB3aXRoIHRlcm1pbmZvIG9yIHRlcm1jYXAgZW50cmllcy4gIEhvd2V2ZXIsIHRoZQotIyBlbXVsYXRpb24gKHRlc3Rpbmcgd2l0aCB2dHRlc3QgYW5kIG5jdXJzZXMpIGlzIHJlYXNvbmFibHkgY2xvc2UgdG8gdnQxMDAgKG5vCi0jIHZ0NTIgb3IgZG91Ymxlc2l6ZSBjaGFyYWN0ZXIgc3VwcG9ydDsgYmxpbmtpbmcgaXMgZG9uZSB3aXRoIGNvbG9yKS4gIEJlc2lkZXMKLSMgdGhlIEhQQSwgVlBBIGV4dGVuc2lvbnMgaXQgYWxzbyBpbXBsZW1lbnRzIENQTCBhbmQgQ05MLgotIwotIyBBbGwgb2YgdGhlIGZ1bmN0aW9uIGtleXMgY2FuIGJlIHJlbWFwcGVkLiAgVGhpcyBkZXNjcmlwdGlvbiBzaG93cyB0aGUgZGVmYXVsdAotIyBtYXBwaW5nLCBhcyBpbnN0YWxsZWQuICBCb3RoIHZ0MTAwIFBGMS1QRjQga2V5cyBhbmQgcXVhc2ktdnQyMjAgRjEtRjQga2V5cwotIyBhcmUgc3VwcG9ydGVkLiAgRjEzLUYyMCBhcmUgb2J0YWluZWQgYnkgc2hpZnRpbmcgRjMtRjEwLiAgVGhlIGVkaXRpbmcga2V5cGFkCi0jIGlzIGxhaWQgb3V0IGxpa2UgdnQyMjAsIHJhdGhlciB0aGFuIHRoZSBmYWNlIGNvZGVzIG9uIHRoZSBQQyBrZXlib2FyZCwgaS5lLAotIwlrZm5kCUluc2VydAotIwlrc2x0CURlbGV0ZQotIwlraWNoMQlIb21lCi0jCWtkY2gxCVBhZ2VVcAotIwlrcHAJRW5kCi0jCWtucAlQYWdlRG93bgotIwotIyBBTlNJIGNvbG9ycyBhcmUgaW1wbGVtZW50ZWQsIGJ1dCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB2aWRlbyBhdHRyaWJ1dGVzCi0jIGV4Y2VwdCBmb3IgcmV2ZXJzZS4KLSMKLSMgTm8gZm9udHMgYXJlIHN1cHBsaWVkIHdpdGggdGhlIHByb2dyYW0sIHNvIHRoZSBhY3NjIHN0cmluZyBpcyBjaG9zZW4gdG8KLSMgY29ycmVzcG9uZCB3aXRoIHRoZSBkZWZhdWx0IE1pY3Jvc29mdCB0ZXJtaW5hbCBmb250LgotIwotIyBUZXJhIFRlcm0gcmVjb2duaXplcyBzb21lIHh0ZXJtIHNlcXVlbmNlcywgaW5jbHVkaW5nIHRob3NlIGZvciBzZXR0aW5nIGFuZAotIyByZXRyaWV2aW5nIHRoZSB3aW5kb3cgdGl0bGUsIGFuZCBmb3Igc2V0dGluZyB0aGUgd2luZG93IHNpemUgKGkuZS4sIHVzaW5nCi0jICJyZXNpemUgLXMiKSwgdGhvdWdoIGl0IGRvZXMgbm90IHBhc3MgU0lHV0lOQ0ggdG8gdGhlIGFwcGxpY2F0aW9uIGlmIHRoZQotIyB1c2VyIHJlc2l6ZXMgdGhlIHdpbmRvdyB3aXRoIHRoZSBtb3VzZS4KLXRlcmF0ZXJtMi4zfFRlcmEgVGVybSBQcm8sCi0Ja20sIHhvbkAsCi0JbmN2IzQzLCB2dEAsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwaVwzMTZqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCi0JYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsIGNsZWFyPVxFW0hcRVtKLAotCWNub3JtPVxFWz8yNWgsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlmbGFzaD1cRVs/NWhcRVs/NWwkPDIwMC8+LCBocGE9XEVbJWklcDElZEcsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwga2RjaDE9XEVbM34sIGtmMT1cRVsxMX4sCi0Ja2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sCi0Ja2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sCi0Ja2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LCBrZjI9XEVbMTJ+LCBrZjIwPVxFWzM0fiwKLQlrZjM9XEVbMTN+LCBrZjQ9XEVbMTR+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAotCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtmbmQ9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sCi0Ja3BwPVxFWzV+LCBrc2x0PVxFWzR+LCBvcD1cRVsxMDBtLCByZXY9XEVbN20sIHJpPVxFTSwKLQlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHNncjA9XEVbMG1cMDE3LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHZwYT1cRVslaSVwMSVkZCwgdXNlPXZ0MTAwK2VucSwKLQl1c2U9a2xvbmUrY29sb3IsIHVzZT12dDEwMCwKLQotIyBWZXJzaW9uIDQuNTkgaGFzIHJlZ3VsYXIgdnQxMDAgbGluZS1kcmF3aW5nIChzbyBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5Ci0jIHRvIGNob29zZSBhIFdpbmRvd3MgT0VNIGZvbnQpLgotIwotIyBUZXN0aW5nIHdpdGggdGFjazoKLSMJLSBpdCBkb2VzIG5vdCBoYXZlIHhlbmwgKHN1cHByZXNzIHRoYXQpCi0jCS0gdW5kZXJsaW5lIHNlZW1zIHRvIHdvcmsgd2l0aCBjb2xvciAobW9kaWZ5IG5jdikuCi0jIFRlc3Rpbmcgd2l0aCB2dHRlc3Q6Ci0jCS0gd3JhcHBpbmcgZGlmZmVycyBmcm9tIHZ0MTAwIChtZW51IDEpLgotIwktIGl0IHJlY29nbml6ZXMgeHRlcm0ncyBYMTAgYW5kIG5vcm1hbCBtb3VzZSB0cmFja2luZywgYnV0IG5vbmUgb2YgdGhlCi0jCSAgb3RoZXIgZmxhdm9ycy4KLSMJLSBpdCByZWNvZ25pemVzIHRoZSBkdHRlcm0gd2luZG93IGNvbnRyb2xzIGZvciByZXBvcnRpbmcgc2l6ZSBpbgotIwkgIGNoYXJhY3RlcnMgYW5kIHBpeGVscy4KLSMJLSBpdCBwYXNzZXMgU0lHV0lOQ0guCi10ZXJhdGVybTQuNTl8VGVyYSBUZXJtIFBybywKLQliY2UsIHhlbmxALAotCW5jdiM0MSwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWttb3VzPVxFW00sIHVzZT10ZXJhdGVybTIuMywKLQotdGVyYXRlcm18VGVyYSBUZXJtLAotCXVzZT10ZXJhdGVybTQuNTksCi0KLSMgVGVzdGVkIHdpdGggV2luTlQgNC4wLCB0aGUgdGVsbmV0IGFwcGxpY2F0aW9uIGFzc3VtZXMgdGhlIHNjcmVlbnNpemUgaXMKLSMgMjV4ODAuICBUaGlzIGVudHJ5IHVzZXMgdGhlICdUZXJtaW5hbCcgZm9udCwgdG8gZ2V0IGxpbmUtZHJhd2luZyBjaGFyYWN0ZXJzLgotIwotIyBPdGhlciBub3RlczoKLSMgYSkgRmFpbHMgdGFjaydzIGN1cCAoY3Vyc29yLWFkZHJlc3NpbmcpIHRlc3QsIHRob3VnaCBjdXAgd29ya3Mgd2VsbCBlbm91Z2gKLSMgICAgZm9yIGNhc3VhbCAob2NjYXNpb25hbCkgdXNlLiAgQWxzbyBmYWlscyBzZXZlcmFsIG9mIHRoZSB2dHRlc3Qgc2NyZWVucywKLSMgICAgYnV0IHRoYXQgaXMgbm90IHVudXN1YWwgZm9yIHZ0MTAwICJlbXVsYXRvcnMiLgotIyBiKSBEb2VzIG5vdCBpbXBsZW1lbnQgdnQxMDAga2V5cGFkCi0jIGMpIFJlY29nbml6ZXMgYSBzdWJzZXQgb2YgdnQ1MiBjb250cm9scy4KLW1zLXZ0MTAwfE1TIHRlbG5ldCBpbWl0YXRpbmcgZGVjIHZ0MTAwLAotCWxpbmVzIzI1LAotCWFjc2M9K1wwMjBcLFwwMjEtXDAzMC5eWTBcMzMzYFwwMDRhXDI2MWZcMzcwZ1wzNjFoXDI2MGlcMzE2alwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAotCWthMUAsIGthM0AsIGtiMkAsIGtjMUAsIGtjM0AsIGtlbnRALCBrZjBALCBrZjFALCBrZjEwQCwga2YyQCwga2YzQCwga2Y0QCwKLQlrZjVALCBrZjZALCBrZjdALCBrZjhALCBrZjlALCB0YmNALCB1c2U9dnQxMDIrZW5xLCB1c2U9dnQxMDAsCi0KLSMgVGVzdGVkIHdpdGggV2luZG93cyAyMDAwLCB0aGUgdGVsbmV0IGFwcGxpY2F0aW9uIHJ1bnMgaW4gYSBjb25zb2xlIHdpbmRvdywKLSMgYWxzbyB1c2luZyAnVGVybWluYWwnIGZvbnQuCi0jCi0jIE90aGVyIG5vdGVzOgotIyBhKSBUaGlzIHZlcnNpb24gaGFzIG5vIGZ1bmN0aW9uIGtleXMgb3IgbnVtZXJpYyBrZXlwYWQuICBVbmxpa2UgdGhlIG9sZGVyCi0jICAgIHZlcnNpb24sIHRoZSBudW1lcmljIGtleXBhZCBpcyBlbnRpcmVseSBpZ25vcmVkLgotIyBiKSBUaGUgcHJvZ3JhbSBzZXRzICRURVJNIHRvICJhbnNpIiwgd2hpY2ggb2YgY291cnNlIGlzIGluYWNjdXJhdGUuCi1tcy12dDEwMC1jb2xvcnx2dG50fHdpbmRvd3MgMjAwMCBhbnNpIChzaWMpLAotCWJjZSwKLQlkY2g9XEVbJXAxJWRQLCBpY2g9XEVbJXAxJWRALCB1c2U9ZWNtYStjb2xvciwKLQl1c2U9bXMtdnQxMDAsCi0KLSMgQmFzZWQgb24gY29tbWVudHMgZnJvbSBGZWRlcmljbyBCaWFuY2hpOgotIwotIwl2dDEwMCsgaXMgYmFzaWNhbGx5IGEgVlQxMDItbm9TR1Igd2l0aCBBTlNJLlNZUyBjb2xvcnMgYW5kIGEgZGlmZmVyZW50Ci0jCXNjaGVtZSBmb3IgUEYga2V5cy4KLSMKLSMgYW5kIFB1VFRZIHdpc2hsaXN0OgotIwotIwlUaGUgbW9kaWZpZXJzIGFyZSByZXByZXNlbnRlZCBhcyB0aGUgY29kZXMgbGlzdGVkIGFib3ZlLCBwcmVmaXhlZCB0bwotIwl0aGUgbm9ybWFsIHNlcXVlbmNlcy4gIElmIHRoZSBtb2RpZmllciBpcyBwcmVzc2VkIGFsb25lLCBpdHMgc2VxdWVuY2UKLSMJaXMgdHJhbnNtaXR0ZWQgdHdpY2UgaW4gc3VjY2Vzc2lvbi4gIElmIG11bHRpcGxlIG1vZGlmaWVycyBhcHBseSwKLSMJdGhleSdyZSB0cmFuc21pdHRlZCBpbiB0aGUgb3JkZXIgc2hpZnQsIGNvbnRyb2wsIGFsdC4KLSMKLSMJU2hpZnQJXEVeUwotIwlBbHQJXEVeQSwKLSMJQ3RybAlcRV5DLAotbXMtdnQxMDArfHZ0MTAwK3x3aW5kb3dzIFhQIHZ0MTAwKyAoc2ljKSwKLQlrZGNoMT1cRS0sIGtlbmQ9XEVrLCBrZjE9XEUxLCBrZjEwPVxFMCwga2YxMT1cRSEsIGtmMTI9XEVALAotCWtmMTM9XEVcMDIzXEUxLCBrZjE0PVxFXDAyM1xFMiwga2YxNT1cRVwwMjNcRTMsCi0Ja2YxNj1cRVwwMjNcRTQsIGtmMTc9XEVcMDIzXEU1LCBrZjE4PVxFXDAyM1xFNiwKLQlrZjE5PVxFXDAyM1xFNywga2YyPVxFMiwga2YyMD1cRVwwMjNcRTgsIGtmMjE9XEVcMDIzXEU5LAotCWtmMjI9XEVcMDIzXEUwLCBrZjIzPVxFXDAyM1xFISwga2YyND1cRVwwMjNcRUAsCi0Ja2YyNT1cRVwwMDNcRTEsIGtmMjY9XEVcMDAzXEUyLCBrZjI3PVxFXDAwM1xFMywKLQlrZjI4PVxFXDAwM1xFNCwga2YyOT1cRVwwMDNcRTUsIGtmMz1cRTMsIGtmMzA9XEVcMDAzXEU2LAotCWtmMzE9XEVcMDAzXEU3LCBrZjMyPVxFXDAwM1xFOCwga2YzMz1cRVwwMDNcRTksCi0Ja2YzND1cRVwwMDNcRTAsIGtmMzU9XEVcMDAzXEUhLCBrZjM2PVxFXDAwM1xFQCwKLQlrZjM3PVxFXDAwMVxFMSwga2YzOD1cRVwwMDFcRTIsIGtmMzk9XEVcMDAxXEUzLCBrZjQ9XEU0LAotCWtmNDA9XEVcMDAxXEU0LCBrZjQxPVxFXDAwMVxFNSwga2Y0Mj1cRVwwMDFcRTYsCi0Ja2Y0Mz1cRVwwMDFcRTcsIGtmNDQ9XEVcMDAxXEU4LCBrZjQ1PVxFXDAwMVxFOSwKLQlrZjQ2PVxFXDAwMVxFMCwga2Y0Nz1cRVwwMDFcRSEsIGtmNDg9XEVcMDAxXEVALCBrZjU9XEU1LAotCWtmNj1cRTYsIGtmNz1cRTcsIGtmOD1cRTgsIGtmOT1cRTksIGtob21lPVxFaCwga2ljaDE9XEUrLAotCWtucD1cRS8sIGtwcD1cRT8sIHVzZT1tcy12dDEwMC1jb2xvciwKLQotbXMtdnQtdXRmOHx2dC11dGY4fFVURi04IGZsYXZvciBvZiB2dDEwMCssCi0JdXNlPW1zLXZ0MTAwKywKLQotIyBhIG1pbmltYWwgc3Vic2V0IG9mIGEgdnQxMDAgKGNvbXBhcmUgd2l0aCAibmV3cy11bmspLgotdHR8dGt0ZXJtfERvbiBMaWJlcycgdGsgdGV4dCB3aWRnZXQgdGVybWluYWwgZW11bGF0b3IsCi0JY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWYxPVxFW0MsIGN1cD1cRVslcDElZDslcDIlZEgsCi0JY3V1MT1cRVtBLCBpbmQ9XkosIGtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLAotCWtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsIGtmOD1cRU9XLCBrZjk9XEVPWCwgcm1zbz1cRVttLAotCXNtc289XEVbN20sCi0KLSMjIyMgWCB0ZXJtaW5hbCBlbXVsYXRvcnMKLSMKLSMgWW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIgLlhkZWZhdWx0cyB0byBjaGFuZ2UgdGhlIHRlcm1pbmFsIHR5cGUKLSMgc2V0IGJ5IHRoZSB4dGVybXMgeW91IHN0YXJ0IHVwIHRvIG15LXh0ZXJtOgotIwotIyAqdGVybU5hbWU6ICBteS14dGVybQotIwotIyBTeXN0ZW0gYWRtaW5pc3RyYXRvcnMgY2FuIGNoYW5nZSB0aGUgZGVmYXVsdCBlbnRyeSBmb3IgeHRlcm0gaW5zdGFuY2VzCi0jIGJ5IGFkZGluZyBhIHNpbWlsYXIgbGluZSB0byAvdXNyL1gxMS9saWIvWDExL2FwcC1kZWZhdWx0cy9YVGVybS4gIEluIGVpdGhlcgotIyBjYXNlLCB4dGVybSB3aWxsIGRldGVjdCBhbmQgcmVqZWN0IGFuIGludmFsaWQgdGVybWluYWwgdHlwZSwgZmFsbGluZyBiYWNrCi0jIHRvIHRoZSBkZWZhdWx0IG9mIHh0ZXJtLgotIwotCi0jIFgxMC82LjYJMTEvNy84NiwgbWludXMgYWx0ZXJuYXRlIHNjcmVlbiwgcGx1cyAoY3NyKQotIyAoeHRlcm06ICI6TVQ6IiBjaGFuZ2VkIHRvICI6a206IjsgYWRkZWQgPHNtYW0+LzxybWFtPiBiYXNlZCBvbiBpbml0IHN0cmluZzsKLSMgcmVtb3ZlZCAoaHMsIGVzbG9rLCB0c2w9XEVbP0VcRVs/JWklZFQsIGZzbD1cRVs/RiwgZHNsPVxFWz9FKQotIyBhcyB0aGVzZSBzZWVtIG5vdCB0byB3b3JrIC0tIGVzcikKLXgxMHRlcm18dnMxMDAteDEwfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYMTAgd2luZG93IHN5c3RlbSksCi0JT1RicywgYW0sIGttLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyM2NSwKLQlib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMkosIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaXMyPVxFXEVbbVxFWz83aFxFWz8xOzRsLCBrYnM9XkgsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YxPVxFT1AsCi0Ja2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgcmV2PVxFWzdtLCByaT1cRU0sIHJtYW09XEVbPzdsLAotCXJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3IwPVxFW20sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotIyBDb21wYXRpYmxlIHdpdGggdGhlIFI1IHh0ZXJtCi0jIChmcm9tIHRoZSBYRnJlZTg2IDMuMiBkaXN0cmlidXRpb24sIDxibGluaz1APiByZW1vdmVkKQotIyBhZGRlZCBraG9tZS9rZW5kLCBybWlyL3NtaXIsIHJtdWwvc211bCwgaHRzIGJhc2VkIG9uIHRoZSBSNSB4dGVybSBjb2RlIC0gVEQKLSMgY29ycmVjdGVkIHR5cG9zIGluIHJzMiBzdHJpbmcgLSBURAotIyBhZGRlZCB1Ni11OSAtVEQKLXh0ZXJtLXI1fHh0ZXJtIFI1IHZlcnNpb24sCi0JT1RicywgYW0sIGttLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFT0QsCi0Ja2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2RjaDE9XEVbM34sCi0Ja2RsMT1cRVszMX4sIGtlbD1cRVs4fiwga2VuZD1cRVs0fiwga2YwPVxFT3EsIGtmMT1cRVsxMX4sCi0Ja2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YyPVxFWzEyfiwKLQlrZjM9XEVbMTN+LCBrZjQ9XEVbMTR+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAotCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFWzF+LCBraWNoMT1cRVsyfiwKLQlraWwxPVxFWzMwfiwga21vdXM9XEVbTSwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIHJjPVxFOCwKLQlyZXY9XEVbN20sIHJpPVxFTSwgcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwKLQlybXVsPVxFW20sCi0JcnMyPVxFPlxFWz8xOzM7NDs1OzZsXEVbNGxcRVs/N2hcRVttXEVbclxFWzJKXEVbSCwKLQlzYz1cRTcsCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTttLAotCXNncjA9XEVbbSwgc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1c2U9dnQxMDArZW5xLAotIyBDb21wYXRpYmxlIHdpdGggdGhlIFI2IHh0ZXJtCi0jIChmcm9tIFhGcmVlODYgMy4yIGRpc3RyaWJ1dGlvbiwgPGFjc2M+IGFuZCA8aXQ+IGFkZGVkLCA8YmxpbmtAPiByZW1vdmVkKQotIyBhZGRlZCBraG9tZS9rZW5kLCBodHMgYmFzZWQgb24gdGhlIFI2IHh0ZXJtIGNvZGUgLSBURAotIyAoa2hvbWUva2VuZCBkbyBub3QgYWN0dWFsbHkgd29yayBpbiBYMTFSNSBvciBYMTFSNiwgYnV0IG1hbnkgcGVvcGxlIHVzZSB0aGlzCi0jIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgZW11bGF0b3JzKS4KLXh0ZXJtLXI2fHh0ZXJtLW9sZHx4dGVybSBYMTFSNiB2ZXJzaW9uLAotCU9UYnMsIGFtLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCi0JZWw9XEVbSywgZW5hY3M9XEUpMCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFW21cRVs/N2hcRVs0bFxFPlxFN1xFW3JcRVs/MTszOzQ7NmxcRTgsIGticz1eSCwKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtkY2gxPVxFWzN+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFWzEyfiwga2YyMD1cRVszNH4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlrZm5kPVxFWzF+LCBraWNoMT1cRVsyfiwga21vdXM9XEVbTSwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3NsdD1cRVs0fiwgbWVtbD1cRWwsIG1lbXU9XEVtLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtYWNzPV5PLCBybWN1cD1cRVsySlxFWz80N2xcRTgsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cRVttXEVbPzdoXEVbNGxcRT5cRTdcRVtyXEVbPzE7Mzs0OzZsXEU4LCBzYz1cRTcsCi0Jc2dyMD1cRVttLCBzbWFjcz1eTiwgc21jdXA9XEU3XEVbPzQ3aCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXVzZT12dDEwMCtlbnEsCi0jIFRoaXMgaXMgdGhlIGJhc2UgeHRlcm0gZW50cnkgZm9yIHRoZSB4dGVybSBzdXBwbGllZCB3aXRoIFhGcmVlODYgMy4yICYgdXAuCi0jIFRoZSBuYW1lIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHNvbWUgYWxpYXNlcyBoYXZlIGJlZW4gcmVtb3ZlZC4KLXh0ZXJtLXhmODYtdjMyfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYRnJlZTg2IDMuMiBXaW5kb3cgU3lzdGVtKSwKLQlPVGJzLCBhbSwgYmNlLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3ZALAotCWFjc2M9YGBhYWZmZ2dpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRShCXEUpMCwKLQlmbGFzaD1cRVs/NWgkPDEwMC8+XEVbPzVsLCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywKLQlodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwKLQlpczI9XEU3XEVbclxFW21cRVs/N2hcRVs/MTszOzQ7NmxcRVs0bFxFOFxFPiwKLQlrYmVnPVxFT0UsIGticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywKLQlrY3V1MT1cRU9BLCBrZGNoMT1cMTc3LCBrZW5kPVxFT0YsIGtmMT1cRVsxMX4sIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAotCWtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LAotCWtmMTk9XEVbMzN+LCBrZjI9XEVbMTJ+LCBrZjIwPVxFWzM0fiwga2YzPVxFWzEzfiwKLQlrZjQ9XEVbMTR+LCBrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LAotCWtmOT1cRVsyMH4sIGtmbmQ9XEVbMX4sIGtob21lPVxFT0gsIGtpY2gxPVxFWzJ+LAotCWttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LCBrc2x0PVxFWzR+LCBtZW1sPVxFbCwKLQltZW11PVxFbSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLAotCXJtY3VwPVxFWzJKXEVbPzQ3bFxFOCwgcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sCi0Jcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLCByczE9Xk8sCi0JcnMyPVxFN1xFW3JcRThcRVttXEVbPzdoXEVbPzE7Mzs0OzZsXEVbNGxcRT4sIHNjPVxFNywKLQlzZXRiPVxFWzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0Jc2V0Zj1cRVszJT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWN1cD1cRTdcRVs/NDdoLAotCXNtaXI9XEVbNGgsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDArZW5xLAotCXVzZT1lY21hK2NvbG9yLCB1c2U9dnQyMjAra2V5cGFkLAotCi0jIFRoaXMgaXMgdGhlIHN0b2NrIHh0ZXJtIGVudHJ5IHN1cHBsaWVkIHdpdGggWEZyZWU4NiAzLjMsIHdoaWNoIHVzZXMgVlQxMDAKLSMgY29kZXMgZm9yIEYxLUY0IGV4Y2VwdCB3aGlsZSBpbiBWVDIyMCBtb2RlLgoteHRlcm0teGY4Ni12MzN8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKFhGcmVlODYgMy4zIFdpbmRvdyBTeXN0ZW0pLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCB1c2U9eHRlcm0teGY4Ni12MzIsCi0KLSMgVGhpcyB2ZXJzaW9uIHdhcyByZWxlYXNlZCBpbiBYRnJlZTg2IDMuMy4zIChOb3ZlbWJlciAxOTk4KS4KLSMgQmVzaWRlcyBwcm92aWRpbmcgcHJpbnRlciBzdXBwb3J0LCBpdCBleHBsb2l0cyBhIG5ldyBmZWF0dXJlIHRoYXQgYWxsb3dzCi0jIHh0ZXJtIHRvIHVzZSB0ZXJtaW5mby1iYXNlZCBkZXNjcmlwdGlvbnMgd2l0aCB0aGUgdGl0ZUluaGliaXQgcmVzb3VyY2UuCi0jIC0tIHRoZSBkaXN0cmlidXRpb24gY29udGFpbmVkIGluY29ycmVjdCBraG9tZS9rZW5kIHZhbHVlcyAtVEQKLXh0ZXJtLXhmODYtdjMzM3x4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoWEZyZWU4NiAzLjMuMyBXaW5kb3cgU3lzdGVtKSwKLQltYzVpLAotCWJsaW5rPVxFWzVtLCBpY2gxQCwgaW52aXM9XEVbOG0sCi0JaXMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwga2RjaDE9XEVbM34sIGtmbmRALCBrc2x0QCwKLQltYzA9XEVbaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksIHJtY3VwPVxFWz8xMDQ3bFxFWz8xMDQ4bCwKLQlyczE9XEVjLCByczI9XEVbIXBcRVs/Mzs0bFxFWzRsXEU+LAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzbWN1cD1cRVs/MTA0OGhcRVs/MTA0N2gsIHVzZT14dGVybS14Zjg2LXYzMywKLQotIyBUaGlzIHZlcnNpb24gd2FzIHJlbGVhc2VkIGluIFhGcmVlODYgNC4wLgoteHRlcm0teGY4Ni12NDB8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKFhGcmVlODYgNC4wIFdpbmRvdyBTeXN0ZW0pLAotCW5wYywKLQlrREM9XEVbMzs1fiwga0VORD1cRU81Riwga0hPTT1cRU81SCwga0lDPVxFWzI7NX4sCi0Ja0xGVD1cRU81RCwga05YVD1cRVs2OzV+LCBrUFJWPVxFWzU7NX4sIGtSSVQ9XEVPNUMsIGthMUAsCi0Ja2EzQCwga2IyPVxFT0UsIGtjMUAsIGtjM0AsIGtjYnQ9XEVbWiwga2RjaDE9XEVbM34sIGtlbmQ9XEVPRiwKLQlrZjEzPVxFTzJQLCBrZjE0PVxFTzJRLCBrZjE1PVxFTzJSLCBrZjE2PVxFTzJTLAotCWtmMTc9XEVbMTU7Mn4sIGtmMTg9XEVbMTc7Mn4sIGtmMTk9XEVbMTg7Mn4sCi0Ja2YyMD1cRVsxOTsyfiwga2YyMT1cRVsyMDsyfiwga2YyMj1cRVsyMTsyfiwKLQlrZjIzPVxFWzIzOzJ+LCBrZjI0PVxFWzI0OzJ+LCBrZjI1PVxFTzVQLCBrZjI2PVxFTzVRLAotCWtmMjc9XEVPNVIsIGtmMjg9XEVPNVMsIGtmMjk9XEVbMTU7NX4sIGtmMzA9XEVbMTc7NX4sCi0Ja2YzMT1cRVsxODs1fiwga2YzMj1cRVsxOTs1fiwga2YzMz1cRVsyMDs1fiwKLQlrZjM0PVxFWzIxOzV+LCBrZjM1PVxFWzIzOzV+LCBrZjM2PVxFWzI0OzV+LCBrZjM3PVxFTzZQLAotCWtmMzg9XEVPNlEsIGtmMzk9XEVPNlIsIGtmNDA9XEVPNlMsIGtmNDE9XEVbMTU7Nn4sCi0Ja2Y0Mj1cRVsxNzs2fiwga2Y0Mz1cRVsxODs2fiwga2Y0ND1cRVsxOTs2fiwKLQlrZjQ1PVxFWzIwOzZ+LCBrZjQ2PVxFWzIxOzZ+LCBrZjQ3PVxFWzIzOzZ+LAotCWtmNDg9XEVbMjQ7Nn4sIGtob21lPVxFT0gsIHJtY3VwPVxFWz8xMDQ5bCwKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzbWN1cD1cRVs/MTA0OWgsIHVzZT14dGVybS14Zjg2LXYzMzMsCi0KLSMgVGhpcyB2ZXJzaW9uIHdhcyByZWxlYXNlZCBpbiBYRnJlZTg2IDQuMy4KLXh0ZXJtLXhmODYtdjQzfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYRnJlZTg2IDQuMyBXaW5kb3cgU3lzdGVtKSwKLQlrREM9XEVbMzsyfiwga0VORD1cRVsxOzJGLCBrSE9NPVxFWzE7MkgsIGtJQz1cRVsyOzJ+LAotCWtMRlQ9XEVbMTsyRCwga05YVD1cRVs2OzJ+LCBrUFJWPVxFWzU7Mn4sIGtSSVQ9XEVbMTsyQywKLQlrYmVnQCwKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXVzZT14dGVybS14Zjg2LXY0MCwKLQotIyBUaGlzIHZlcnNpb24gd2FzIHJlbGVhc2VkIGluIFhGcmVlODYgNC40LgoteHRlcm0teGY4Ni12NDR8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKFhGcmVlODYgNC40IFdpbmRvdyBTeXN0ZW0pLAotCWNub3JtPVxFWz8xMmxcRVs/MjVoLCBjdnZpcz1cRVs/MTI7MjVoLCBpbmRuPVxFWyVwMSVkUywKLQlyaW49XEVbJXAxJWRULCB1c2U9eHRlcm0teGY4Ni12NDMsCi0KLXh0ZXJtLXhmcmVlODZ8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgKFhGcmVlODYpLAotCXVzZT14dGVybS14Zjg2LXY0NCwKLQotIyBUaGlzIHZlcnNpb24gcmVmbGVjdHMgdGhlIGN1cnJlbnQgeHRlcm0gZmVhdHVyZXMuCi14dGVybS1uZXd8bW9kZXJuIHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yLAotCW5wYywKLQlpbmRuPVxFWyVwMSVkUywga0RDPVxFWzM7Mn4sIGtFTkQ9XEVbMTsyRiwga0hPTT1cRVsxOzJILAotCWtJQz1cRVsyOzJ+LCBrTlhUPVxFWzY7Mn4sIGtQUlY9XEVbNTsyfiwga2IyPVxFT0UsCi0Ja2NidD1cRVtaLCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtlbmQ9XEVPRiwga2VudD1cRU9NLCBraG9tZT1cRU9ILCBraWNoMT1cRVsyfiwga21vdXM9XEVbTSwKLQlrbnA9XEVbNn4sIGtwcD1cRVs1fiwgcmluPVxFWyVwMSVkVCwgdXNlPXh0ZXJtK3BjZmtleXMsCi0JdXNlPXh0ZXJtLWJhc2ljLAotIwotIyBUaGlzIGZyYWdtZW50IGRlc2NyaWJlcyBhcyBtdWNoIG9mIFhGcmVlODYgeHRlcm0ncyAicGMtc3R5bGUiIGZ1bmN0aW9uCi0jIGtleXMgYXMgd2lsbCBmaXQgaW50byB0ZXJtaW5mbydzIDYwIGZ1bmN0aW9uIGtleXMuCi0jIEZyb20gY3Rsc2Vxcy5tczoKLSMgICAgQ29kZSAgICAgTW9kaWZpZXJzCi0jICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgIDIgICAgICAgU2hpZnQKLSMgICAgIDMgICAgICAgQWx0Ci0jICAgICA0ICAgICAgIFNoaWZ0ICsgQWx0Ci0jICAgICA1ICAgICAgIENvbnRyb2wKLSMgICAgIDYgICAgICAgU2hpZnQgKyBDb250cm9sCi0jICAgICA3ICAgICAgIEFsdCArIENvbnRyb2wKLSMgICAgIDggICAgICAgU2hpZnQgKyBBbHQgKyBDb250cm9sCi0jICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVGhlIG1ldGEga2V5IG1heSBhbHNvIGJlIHVzZWQgYXMgYSBtb2RpZmllciBpbiB0aGlzIHNjaGVtZSwgYWRkaW5nIGFub3RoZXIKLSMgYml0IHRvIHRoZSBwYXJhbWV0ZXIuCi14dGVybStwY2ZrZXlzfGZyYWdtZW50IGZvciBQQy1zdHlsZSBma2V5cywKLQl1c2U9eHRlcm0rYXBwLCB1c2U9eHRlcm0rcGNmMiwgdXNlPXh0ZXJtK3BjYzIsCi0JdXNlPXh0ZXJtK3BjZTIsCi0jCi14dGVybStub2FwcHxmcmFnbWVudCB3aXRoIGN1cnNvciBrZXlzIGluIG5vcm1hbCBtb2RlLAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlbmQ9XEVbRiwKLQlraG9tZT1cRVtILAotCi14dGVybSthcHB8ZnJhZ21lbnQgd2l0aCBjdXJzb3Iga2V5cyBpbiBhcHBsaWNhdGlvbiBtb2RlLAotCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtlbmQ9XEVPRiwKLQlraG9tZT1cRU9ILAotIwotIyBUaGUgIlBDLXN0eWxlIiBtb2RpZmllciBzY2hlbWUgd2FzIGludHJvZHVjZWQgaW4geHRlcm0gcGF0Y2ggIzk0ICgxOTk5LzMvMjcpCi0jIGFuZCByZXZpc2VkIGluIHBhdGNoICMxNjcgKDIwMDIvOC8yNCkuICBTb21lIG90aGVyIHRlcm1pbmFsIGVtdWxhdG9ycyBjb3BpZWQKLSMgdGhlIGVhcmxpZXIgc2NoZW1lLCBhcyBub3RlZCBpbiB0aGUgInVzZT0iIGNsYXVzZXMgaW4gdGhpcyBmaWxlLgotIwotIyBUaGUgb3JpZ2luYWwgYXNzaWdubWVudHMgZnJvbSBwYXRjaCAjOTQgZm9yIGN1cnNvci1rZXlzIGhhZCBzb21lIHRlY2huaWNhbAotIyBpc3N1ZXM6Ci0jCi0jCUEgcGFyYW1ldGVyIGZvciBhIGZ1bmN0aW9uLWtleSB0byByZXByZXNlbnQgYSBtb2RpZmllciBpcyBqdXN0IG1vcmUKLSMJYml0cy4gIEJ1dCBmb3IgYSBjdXJzb3Ita2V5IGl0IG1heSBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZQotIwlhcHBsaWNhdGlvbi4gIEZvciBpbnN0YW5jZSwgZW1hY3MgZGVjb2RlcyB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGEKLSMJY3Vyc29yLWtleSBhcyBhIHJlcGVhdCBjb3VudC4KLSMKLSMJQSBwYXJhbWV0ZXJpemVkIHN0cmluZyBzaG91bGQgKHJlYWxseSkgbm90IGJlZ2luIHdpdGggU1MzIChcRU8pLgotIwlSYXRoZXIsIENTSSAoXEVbKSBzaG91bGQgYmUgdXNlZC4KLSMKLSMgRm9yIHRoZXNlIHJlYXNvbnMsIHRoZSBvcmlnaW5hbCBhc3NpZ25tZW50cyB3ZXJlIGRlcHJlY2F0ZWQuICBGb3IKLSMgY29tcGF0aWJpbGl0eSByZWFzb25zLCB0aGV5IGFyZSBzdGlsbCBhdmFpbGFibGUgYXMgYSBzZXR0aW5nIG9mIHh0ZXJtJ3MKLSMgbW9kaWZ5Q3Vyc29yS2V5cyByZXNvdXJjZS4gIFRoZXNlIGZyYWdtZW50cyBsaXN0IHRoZSBtb2RpZmllZCBjdXJzb3Ita2V5cwotIyB0aGF0IG1pZ2h0IGFwcGx5IHRvIHh0ZXJtK3BjZmtleXMgd2l0aCBkaWZmZXJlbnQgdmFsdWVzIG9mIHRoYXQgcmVzb3VyY2UuCi14dGVybStwY2MzfGZyYWdtZW50IHdpdGggbW9kaWZ5Q3Vyc29yS2V5czozLAotCWtMRlQ9XEVbPjE7MkQsIGtSSVQ9XEVbPjE7MkMsIGtpbmQ9XEVbPjE7MkIsCi0Ja3JpPVxFWz4xOzJBLCBrRE49XEVbPjE7MkIsIGtETjM9XEVbPjE7M0IsIGtETjQ9XEVbPjE7NEIsCi0Ja0RONT1cRVs+MTs1Qiwga0RONj1cRVs+MTs2Qiwga0RONz1cRVs+MTs3QiwKLQlrTEZUMz1cRVs+MTszRCwga0xGVDQ9XEVbPjE7NEQsIGtMRlQ1PVxFWz4xOzVELAotCWtMRlQ2PVxFWz4xOzZELCBrTEZUNz1cRVs+MTs3RCwga1JJVDM9XEVbPjE7M0MsCi0Ja1JJVDQ9XEVbPjE7NEMsIGtSSVQ1PVxFWz4xOzVDLCBrUklUNj1cRVs+MTs2QywKLQlrUklUNz1cRVs+MTs3Qywga1VQPVxFWz4xOzJBLCBrVVAzPVxFWz4xOzNBLAotCWtVUDQ9XEVbPjE7NEEsIGtVUDU9XEVbPjE7NUEsIGtVUDY9XEVbPjE7NkEsCi0Ja1VQNz1cRVs+MTs3QSwKLQoteHRlcm0rcGNjMnxmcmFnbWVudCB3aXRoIG1vZGlmeUN1cnNvcktleXM6MiwKLQlrTEZUPVxFWzE7MkQsIGtSSVQ9XEVbMTsyQywga2luZD1cRVsxOzJCLCBrcmk9XEVbMTsyQSwKLQlrRE49XEVbMTsyQiwga0ROMz1cRVsxOzNCLCBrRE40PVxFWzE7NEIsIGtETjU9XEVbMTs1QiwKLQlrRE42PVxFWzE7NkIsIGtETjc9XEVbMTs3Qiwga0xGVDM9XEVbMTszRCwga0xGVDQ9XEVbMTs0RCwKLQlrTEZUNT1cRVsxOzVELCBrTEZUNj1cRVsxOzZELCBrTEZUNz1cRVsxOzdELAotCWtSSVQzPVxFWzE7M0MsIGtSSVQ0PVxFWzE7NEMsIGtSSVQ1PVxFWzE7NUMsCi0Ja1JJVDY9XEVbMTs2Qywga1JJVDc9XEVbMTs3Qywga1VQPVxFWzE7MkEsIGtVUDM9XEVbMTszQSwKLQlrVVA0PVxFWzE7NEEsIGtVUDU9XEVbMTs1QSwga1VQNj1cRVsxOzZBLCBrVVA3PVxFWzE7N0EsCi0KLXh0ZXJtK3BjYzF8ZnJhZ21lbnQgd2l0aCBtb2RpZnlDdXJzb3JLZXlzOjEsCi0Ja0xGVD1cRVsyRCwga1JJVD1cRVsyQywga2luZD1cRVsyQiwga3JpPVxFWzJBLCBrRE49XEVbMkIsCi0Ja0ROMz1cRVszQiwga0ROND1cRVs0Qiwga0RONT1cRVs1Qiwga0RONj1cRVs2Qiwga0RONz1cRVs3QiwKLQlrTEZUMz1cRVszRCwga0xGVDQ9XEVbNEQsIGtMRlQ1PVxFWzVELCBrTEZUNj1cRVs2RCwKLQlrTEZUNz1cRVs3RCwga1JJVDM9XEVbM0MsIGtSSVQ0PVxFWzRDLCBrUklUNT1cRVs1QywKLQlrUklUNj1cRVs2Qywga1JJVDc9XEVbN0MsIGtVUD1cRVsyQSwga1VQMz1cRVszQSwKLQlrVVA0PVxFWzRBLCBrVVA1PVxFWzVBLCBrVVA2PVxFWzZBLCBrVVA3PVxFWzdBLAotCi14dGVybStwY2MwfGZyYWdtZW50IHdpdGggbW9kaWZ5Q3Vyc29yS2V5czowLAotCWtMRlQ9XEVPMkQsIGtSSVQ9XEVPMkMsIGtpbmQ9XEVPMkIsIGtyaT1cRU8yQSwga0ROPVxFTzJCLAotCWtETjM9XEVPM0IsIGtETjQ9XEVPNEIsIGtETjU9XEVPNUIsIGtETjY9XEVPNkIsIGtETjc9XEVPN0IsCi0Ja0xGVDM9XEVPM0QsIGtMRlQ0PVxFTzRELCBrTEZUNT1cRU81RCwga0xGVDY9XEVPNkQsCi0Ja0xGVDc9XEVPN0QsIGtSSVQzPVxFTzNDLCBrUklUND1cRU80Qywga1JJVDU9XEVPNUMsCi0Ja1JJVDY9XEVPNkMsIGtSSVQ3PVxFTzdDLCBrVVA9XEVPMkEsIGtVUDM9XEVPM0EsCi0Ja1VQND1cRU80QSwga1VQNT1cRU81QSwga1VQNj1cRU82QSwga1VQNz1cRU83QSwKLQotIwotIyBIZXJlIGFyZSBjb3JyZXNwb25kaW5nIGZyYWdtZW50cyBmcm9tIHh0ZXJtIHBhdGNoICMyMTY6Ci0jCi14dGVybStwY2YwfGZyYWdtZW50IHdpdGggbW9kaWZ5RnVuY3Rpb25LZXlzOjAsCi0Ja2YxPVxFT1AsIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sCi0Ja2YxMz1cRU8yUCwga2YxND1cRU8yUSwga2YxNT1cRU8yUiwga2YxNj1cRU8yUywKLQlrZjE3PVxFWzE1OzJ+LCBrZjE4PVxFWzE3OzJ+LCBrZjE5PVxFWzE4OzJ+LCBrZjI9XEVPUSwKLQlrZjIwPVxFWzE5OzJ+LCBrZjIxPVxFWzIwOzJ+LCBrZjIyPVxFWzIxOzJ+LAotCWtmMjM9XEVbMjM7Mn4sIGtmMjQ9XEVbMjQ7Mn4sIGtmMjU9XEVPNVAsIGtmMjY9XEVPNVEsCi0Ja2YyNz1cRU81Uiwga2YyOD1cRU81Uywga2YyOT1cRVsxNTs1fiwga2YzPVxFT1IsCi0Ja2YzMD1cRVsxNzs1fiwga2YzMT1cRVsxODs1fiwga2YzMj1cRVsxOTs1fiwKLQlrZjMzPVxFWzIwOzV+LCBrZjM0PVxFWzIxOzV+LCBrZjM1PVxFWzIzOzV+LAotCWtmMzY9XEVbMjQ7NX4sIGtmMzc9XEVPNlAsIGtmMzg9XEVPNlEsIGtmMzk9XEVPNlIsCi0Ja2Y0PVxFT1MsIGtmNDA9XEVPNlMsIGtmNDE9XEVbMTU7Nn4sIGtmNDI9XEVbMTc7Nn4sCi0Ja2Y0Mz1cRVsxODs2fiwga2Y0ND1cRVsxOTs2fiwga2Y0NT1cRVsyMDs2fiwKLQlrZjQ2PVxFWzIxOzZ+LCBrZjQ3PVxFWzIzOzZ+LCBrZjQ4PVxFWzI0OzZ+LCBrZjQ5PVxFTzNQLAotCWtmNT1cRVsxNX4sIGtmNTA9XEVPM1EsIGtmNTE9XEVPM1IsIGtmNTI9XEVPM1MsCi0Ja2Y1Mz1cRVsxNTszfiwga2Y1ND1cRVsxNzszfiwga2Y1NT1cRVsxODszfiwKLQlrZjU2PVxFWzE5OzN+LCBrZjU3PVxFWzIwOzN+LCBrZjU4PVxFWzIxOzN+LAotCWtmNTk9XEVbMjM7M34sIGtmNj1cRVsxN34sIGtmNjA9XEVbMjQ7M34sIGtmNjE9XEVPNFAsCi0Ja2Y2Mj1cRU80USwga2Y2Mz1cRU80Uiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLSMKLXh0ZXJtK3BjZjJ8ZnJhZ21lbnQgd2l0aCBtb2RpZnlGdW5jdGlvbktleXM6MiwKLQlrZjE9XEVPUCwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwKLQlrZjEzPVxFWzE7MlAsIGtmMTQ9XEVbMTsyUSwga2YxNT1cRVsxOzJSLCBrZjE2PVxFWzE7MlMsCi0Ja2YxNz1cRVsxNTsyfiwga2YxOD1cRVsxNzsyfiwga2YxOT1cRVsxODsyfiwga2YyPVxFT1EsCi0Ja2YyMD1cRVsxOTsyfiwga2YyMT1cRVsyMDsyfiwga2YyMj1cRVsyMTsyfiwKLQlrZjIzPVxFWzIzOzJ+LCBrZjI0PVxFWzI0OzJ+LCBrZjI1PVxFWzE7NVAsIGtmMjY9XEVbMTs1USwKLQlrZjI3PVxFWzE7NVIsIGtmMjg9XEVbMTs1Uywga2YyOT1cRVsxNTs1fiwga2YzPVxFT1IsCi0Ja2YzMD1cRVsxNzs1fiwga2YzMT1cRVsxODs1fiwga2YzMj1cRVsxOTs1fiwKLQlrZjMzPVxFWzIwOzV+LCBrZjM0PVxFWzIxOzV+LCBrZjM1PVxFWzIzOzV+LAotCWtmMzY9XEVbMjQ7NX4sIGtmMzc9XEVbMTs2UCwga2YzOD1cRVsxOzZRLCBrZjM5PVxFWzE7NlIsCi0Ja2Y0PVxFT1MsIGtmNDA9XEVbMTs2Uywga2Y0MT1cRVsxNTs2fiwga2Y0Mj1cRVsxNzs2fiwKLQlrZjQzPVxFWzE4OzZ+LCBrZjQ0PVxFWzE5OzZ+LCBrZjQ1PVxFWzIwOzZ+LAotCWtmNDY9XEVbMjE7Nn4sIGtmNDc9XEVbMjM7Nn4sIGtmNDg9XEVbMjQ7Nn4sCi0Ja2Y0OT1cRVsxOzNQLCBrZjU9XEVbMTV+LCBrZjUwPVxFWzE7M1EsIGtmNTE9XEVbMTszUiwKLQlrZjUyPVxFWzE7M1MsIGtmNTM9XEVbMTU7M34sIGtmNTQ9XEVbMTc7M34sCi0Ja2Y1NT1cRVsxODszfiwga2Y1Nj1cRVsxOTszfiwga2Y1Nz1cRVsyMDszfiwKLQlrZjU4PVxFWzIxOzN+LCBrZjU5PVxFWzIzOzN+LCBrZjY9XEVbMTd+LCBrZjYwPVxFWzI0OzN+LAotCWtmNjE9XEVbMTs0UCwga2Y2Mj1cRVsxOzRRLCBrZjYzPVxFWzE7NFIsIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLSMKLSMgQ2h1bmtzIGZyb20geHRlcm0gIzIzMDoKLXh0ZXJtK3BjZTJ8ZnJhZ21lbnQgd2l0aCBtb2RpZnlDdXJzb3JLZXlzOjIsCi0Ja0RDPVxFWzM7Mn4sIGtFTkQ9XEVbMTsyRiwga0hPTT1cRVsxOzJILCBrSUM9XEVbMjsyfiwKLQlrTlhUPVxFWzY7Mn4sIGtQUlY9XEVbNTsyfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwKLQlrcHA9XEVbNX4sIGtEQzM9XEVbMzszfiwga0RDND1cRVszOzR+LCBrREM1PVxFWzM7NX4sCi0Ja0RDNj1cRVszOzZ+LCBrREM3PVxFWzM7N34sIGtFTkQzPVxFWzE7M0YsIGtFTkQ0PVxFWzE7NEYsCi0Ja0VORDU9XEVbMTs1Riwga0VORDY9XEVbMTs2Riwga0VORDc9XEVbMTs3RiwKLQlrSE9NMz1cRVsxOzNILCBrSE9NND1cRVsxOzRILCBrSE9NNT1cRVsxOzVILAotCWtIT002PVxFWzE7NkgsIGtIT003PVxFWzE7N0gsIGtJQzM9XEVbMjszfiwga0lDND1cRVsyOzR+LAotCWtJQzU9XEVbMjs1fiwga0lDNj1cRVsyOzZ+LCBrSUM3PVxFWzI7N34sIGtOWFQzPVxFWzY7M34sCi0Ja05YVDQ9XEVbNjs0fiwga05YVDU9XEVbNjs1fiwga05YVDY9XEVbNjs2fiwKLQlrTlhUNz1cRVs2Ozd+LCBrUFJWMz1cRVs1OzN+LCBrUFJWND1cRVs1OzR+LAotCWtQUlY1PVxFWzU7NX4sIGtQUlY2PVxFWzU7Nn4sIGtQUlY3PVxFWzU7N34sCi0JdXNlPXh0ZXJtK2VkaXQsCi0KLXh0ZXJtK2VkaXR8ZnJhZ21lbnQgZm9yIDYta2V5IGVkaXRpbmcta2V5cGFkLAotCWtkY2gxPVxFWzN+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0JdXNlPXh0ZXJtK3BjK2VkaXQsCi0KLXh0ZXJtK3BjK2VkaXR8ZnJhZ21lbnQgZm9yIHBjLXN0eWxlIGVkaXRpbmcga2V5cGFkLAotCWtlbmQ9XEVbNH4sIGtob21lPVxFWzF+LAotCi14dGVybSt2dCtlZGl0fGZyYWdtZW50IGZvciB2dDIyMC1zdHlsZSBlZGl0aW5nIGtleXBhZCwKLQlrZm5kPVxFWzF+LCBrc2x0PVxFWzR+LAotCi0jCi0jIFRob3NlIGNodW5rcyB1c2UgdGhlIG5ldy1zdHlsZSAodGhlIHh0ZXJtIG9sZEZ1bmN0aW9uS2V5cyByZXNvdXJjZSBpcyBmYWxzZSkuCi0jIEFsdGVybmF0aXZlbHksIHRoZSBzYW1lIHNjaGVtZSB3aXRoIG9sZC1zdHlsZSBmdW5jdGlvbiBrZXlzIGFzIGluIHh0ZXJtLXI2Ci0jIGlzIHNob3duIGhlcmUgKGJlY2F1c2UgdGhhdCBpcyB1c2VkIGluIG1yeHZ0IGFuZCBtbHRlcm0pOgoteHRlcm0rcjZmMnx4dGVybSB3aXRoIG9sZEZ1bmN0aW9uS2V5cyBhbmQgbW9kaWZ5RnVuY3Rpb25LZXlzOjIsCi0Ja2YxPVxFWzExfiwga2YxMz1cRVsxMTsyfiwga2YxND1cRVsxMjsyfiwga2YxNT1cRVsxMzsyfiwKLQlrZjE2PVxFWzE0OzJ+LCBrZjI9XEVbMTJ+LCBrZjI1PVxFWzExOzV+LCBrZjI2PVxFWzEyOzV+LAotCWtmMjc9XEVbMTM7NX4sIGtmMjg9XEVbMTQ7NX4sIGtmMz1cRVsxM34sIGtmMzc9XEVbMTE7Nn4sCi0Ja2YzOD1cRVsxMjs2fiwga2YzOT1cRVsxMzs2fiwga2Y0PVxFWzE0fiwga2Y0MD1cRVsxNDs2fiwKLQlrZjQ5PVxFWzExOzN+LCBrZjUwPVxFWzEyOzN+LCBrZjUxPVxFWzEzOzN+LAotCWtmNTI9XEVbMTQ7M34sIGtmNjE9XEVbMTE7NH4sIGtmNjI9XEVbMTI7NH4sCi0Ja2Y2Mz1cRVsxMzs0fiwgdXNlPXh0ZXJtK3BjZjIsCi0jCi0jIFRoaXMgY2h1bmsgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIFZUMjIwL1N1bi9QQyBrZXlib2FyZCB2YXJpYW50cy4KLXh0ZXJtLWJhc2ljfG1vZGVybiB4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAtIGNvbW1vbiwKLQlPVGJzLCBhbSwgYmNlLCBrbSwgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCBBWCwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LAotCWFjc2M9YGBhYWZmZ2dpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz8xMmxcRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWz8xMjsyNWgsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JZmxhc2g9XEVbPzVoJDwxMDAvPlxFWz81bCwgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsCi0JaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCi0JaW5kPV5KLCBpbnZpcz1cRVs4bSwgaXMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwga2JzPV5ILAotCWttb3VzPVxFW00sIG1jMD1cRVtpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgbWVtbD1cRWwsCi0JbWVtdT1cRW0sIG9wPVxFWzM5OzQ5bSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKLQlybWFjcz1cRShCLCBybWFtPVxFWz83bCwgcm1jdXA9XEVbPzEwNDlsLCBybWlyPVxFWzRsLAotCXJta3g9XEVbPzFsXEU+LCBybW09XEVbPzEwMzRsLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCi0JcnMxPVxFYywgcnMyPVxFWyFwXEVbPzM7NGxcRVs0bFxFPiwgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCi0Jc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQlzZ3I9JT8lcDkldFxFKDAlZVxFKEIlO1xFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttLAotCXNncjA9XEUoQlxFW20sIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWN1cD1cRVs/MTA0OWgsCi0Jc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sIHNtbT1cRVs/MTAzNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLCB2cGE9XEVbJWklcDElZGQsIHVzZT12dDEwMCtlbnEsCi0KLSMgRnJvbTogRGF2aWQgSi4gTWFjS2VuemllIDxkam1AdmEucHVibml4LmNvbT4sIDE0IE5vdiAxOTk3Ci0jIEluIHJldHJvc3BlY3QsIHNvbWV0aGluZyBsaWtlIHh0ZXJtLXI2IHdhcyBpbnRlbmRlZCBoZXJlIC1URAoteHRlcm0teGl8eHRlcm0gb24gWEkgR3JhcGhpY3MgQWNjZWxlcmF0ZWQgWCB1bmRlciBCU0QvT1MgMy4xLAotCXJtc289XEVbbSwgcm11bD1cRVttLCB1c2U9eHRlcm0teGY4Ni12MzMsCi0KLSMgVGhpcyBpcyBvbmUgb2YgdGhlIHZhcmlhbnRzIG9mIFhGcmVlODYgMy4zIHh0ZXJtLCB1cGRhdGVkIGZvciA0LjAgKFQuRGlja2V5KQoteHRlcm0tMTZjb2xvcnx4dGVybSB3aXRoIDE2IGNvbG9ycyBsaWtlIGFpeHRlcm0sCi0JdXNlPWlibSsxNmNvbG9yLCB1c2U9eHRlcm0tbmV3LAotCi0jIFRoaXMgaXMgYSBjb21waWxlLXRpbWUgZmVhdHVyZSBvZiBYRnJlZTg2IHh0ZXJtIGJlZ2lubmluZyB3aXRoCi0jIHBhdGNoICMxMTEgKDE5OTkvNy8xMCkgLVRECi14dGVybSsyNTZjb2xvcnx4dGVybSAyNTYtY29sb3IgZmVhdHVyZSwKLQljY2MsCi0JY29sb3JzIzI1NiwgcGFpcnMjMzI3NjcsCi0JaW5pdGM9XEVdNDslcDElZDtyZ2JcOiVwMiV7MjU1fSUqJXsxMDAwfSUvJTIuMlgvJXAzJXsyNTV9JSolezEwMDB9JS8lMi4yWC8lcDQlezI1NX0lKiV7MTAwMH0lLyUyLjJYXEVcXCwKLQlzZXRhYj1cRVslPyVwMSV7OH0lPCV0NCVwMSVkJWUlcDElezE2fSU8JXQxMCVwMSV7OH0lLSVkJWU0ODs1OyVwMSVkJTttLAotCXNldGFmPVxFWyU/JXAxJXs4fSU8JXQzJXAxJWQlZSVwMSV7MTZ9JTwldDklcDElezh9JS0lZCVlMzg7NTslcDElZCU7bSwKLQlzZXRiQCwgc2V0ZkAsCi0KLSMgVGhpcyBpcyBhIGNvbXBpbGUtdGltZSBmZWF0dXJlIG9mIFhGcmVlODYgeHRlcm0gYmVnaW5uaW5nIHdpdGgKLSMgcGF0Y2ggIzExNSAoMTk5OS85LzE4KSAtVEQKLSMKLSMgTm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIHVzZWQgYXJlIHRoZSBzYW1lIGFzIGZvciAyNTYtY29sb3JzIC0geHRlcm0KLSMgaGFzIGEgZGlmZmVyZW50IHRhYmxlIG9mIGRlZmF1bHQgY29sb3IgcmVzb3VyY2UgdmFsdWVzLiAgSWYgYnVpbHQgZm9yCi0jIDI1Ni1jb2xvcnMsIGl0IGNhbiBzdGlsbCBoYW5kbGUgYW4gODgtY29sb3IgcGFsZXR0ZSBieSB1c2luZyB0aGUgaW5pdGMKLSMgY2FwYWJpbGl0eS4KLSMKLSMgQXQgdGhpcyB0aW1lICgyMDA3LzcvMTQpLCBleGNlcHQgZm9yIHJ4dnQgMi43LngsIG5vbmUgb2YgdGhlIG90aGVyIHRlcm1pbmFscwotIyB3aGljaCBzdXBwb3J0IHRoZSB4dGVybSsyNTZjb2xvciBmZWF0dXJlIHN1cHBvcnQgdGhlIGFzc29jaWF0ZWQgaW5pdGMKLSMgY2FwYWJpbGl0eS4gIFNvIGl0IGlzIGNhbmNlbGxlZCBpbiB0aGUgZW50cmllcyB3aGljaCB1c2UgdGhpcyBhbmQvb3IgdGhlCi0jIHh0ZXJtKzI1NmNvbG9yIGJsb2NrLgotIwotIyBUaGUgZGVmYXVsdCBjb2xvciBwYWxldHRlIGZvciB0aGUgMjU2LSBhbmQgODgtY29sb3JzIGFyZSBkaWZmZXJlbnQuICBBCi0jIGdpdmVuIGV4ZWN1dGFibGUgd2lsbCBoYXZlIG9uZSBwYWxldHRlIChwZXJoYXBzIGNvbXBpbGVkLWluKS4gIElmIHRoZSBwcm9ncmFtCi0jIHN1cHBvcnRzIHh0ZXJtJ3MgY29udHJvbCBzZXF1ZW5jZSwgaXQgY2FuIGJlIHByb2dyYW1tZWQgdXNpbmcgaW5pdGMuCi14dGVybSs4OGNvbG9yfHh0ZXJtIDg4LWNvbG9yIGZlYXR1cmUsCi0JY29sb3JzIzg4LCBwYWlycyM3NzQ0LCB1c2U9eHRlcm0rMjU2Y29sb3IsCi0KLSMgVGhlc2UgdmFyaWFudHMgb2YgWEZyZWU4NiAzLjkuMTYgeHRlcm0gYXJlIGJ1aWx0IGFzIGEgY29uZmlndXJlIG9wdGlvbi4KLXh0ZXJtLTI1NmNvbG9yfHh0ZXJtIHdpdGggMjU2IGNvbG9ycywKLQl1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT14dGVybS1uZXcsCi14dGVybS04OGNvbG9yfHh0ZXJtIHdpdGggODggY29sb3JzLAotCXVzZT14dGVybSs4OGNvbG9yLCB1c2U9eHRlcm0tMjU2Y29sb3IsCi0KLSMgVGhlc2UgdHdvIGFyZSB1c2VkIHRvIGRlbW9uc3RyYXRlIHRoZSBhbnktZXZlbnQgbW91c2Ugc3VwcG9ydCwgaS5lLiwgYnkKLSMgdXNpbmcgYW4gZXh0ZW5kZWQgbmFtZSAiWE0iIHdoaWNoIHRlbGxzIG5jdXJzZXMgdG8gcHV0IHRoZSB0ZXJtaW5hbCBpbnRvCi0jIGEgc3BlY2lhbCBtb2RlIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSB4dGVybSBtb3VzZS4KLXh0ZXJtLTEwMDJ8dGVzdGluZyB4dGVybS1tb3VzZSwKLQlYTT1cRVs/MTAwMiU/JXAxJXsxfSU9JXRoJWVsJTssIHVzZT14dGVybS1uZXcsCi14dGVybS0xMDAzfHRlc3RpbmcgeHRlcm0tbW91c2UsCi0JWE09XEVbPzEwMDMlPyVwMSV7MX0lPSV0aCVlbCU7LCB1c2U9eHRlcm0tbmV3LAotCi0jIFRoaXMgaXMgYW5vdGhlciB2YXJpYW50LCBmb3IgWEZyZWU4NiA0LjAgeHRlcm0gKFQuRGlja2V5KQotIyBUaGlzIGlzIGFuIDgtYml0IHZlcnNpb24gb2YgeHRlcm0sIHdoaWNoIGVtdWxhdGVzIERFQyB2dDIyMCB3aXRoIEFOU0kgY29sb3IuCi0jIFRvIHVzZSBpdCwgeW91ciBkZWNUZXJtaW5hbElEIHJlc291cmNlIG11c3QgYmUgc2V0IHRvIDIwMCBvciBhYm92ZS4KLSMKLSMJSFRTCVxFIEgJXDIxMAotIwlSSQlcRSBNCVwyMTUKLSMJU1MzCVxFIE8JXDIxNwotIwlDU0kJXEUgWwlcMjMzCi0jCi14dGVybS04Yml0fHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIDgtYml0IGNvbnRyb2xzIChYIFdpbmRvdyBTeXN0ZW0pLAotCU9UYnMsIGFtLCBiY2UsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIG5wYywgeGVubCwgQVgsCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBwYWlycyM2NCwKLQlhY3NjPWBgYWFmZmdnaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cMjMzNW0sIGJvbGQ9XDIzMzFtLCBjYnQ9XDIzM1osCi0JY2l2aXM9XDIzMz8yNWwsIGNsZWFyPVwyMzNIXDIzMzJKLAotCWNub3JtPVwyMzM/MjVsXDIzMz8yNWgsIGNyPV5NLCBjc3I9XDIzMyVpJXAxJWQ7JXAyJWRyLAotCWN1Yj1cMjMzJXAxJWRELCBjdWIxPV5ILCBjdWQ9XDIzMyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XDIzMyVwMSVkQywgY3VmMT1cMjMzQywgY3VwPVwyMzMlaSVwMSVkOyVwMiVkSCwKLQljdXU9XDIzMyVwMSVkQSwgY3V1MT1cMjMzQSwgY3Z2aXM9XDIzMz8xMjsyNWgsCi0JZGNoPVwyMzMlcDElZFAsIGRjaDE9XDIzM1AsIGRsPVwyMzMlcDElZE0sIGRsMT1cMjMzTSwKLQllY2g9XDIzMyVwMSVkWCwgZWQ9XDIzM0osIGVsPVwyMzNLLCBlbDE9XDIzMzFLLAotCWZsYXNoPVwyMzM/NWgkPDEwMC8+XDIzMz81bCwgaG9tZT1cMjMzSCwKLQlocGE9XDIzMyVpJXAxJWRHLCBodD1eSSwgaHRzPVwyMTAsIGljaD1cMjMzJXAxJWRALAotCWlsPVwyMzMlcDElZEwsIGlsMT1cMjMzTCwgaW5kPV5KLCBpbnZpcz1cMjMzOG0sCi0JaXMyPVxFWzYyInBcRSBHXDIzM21cMjMzPzdoXEU+XEU3XDIzMz8xOzM7NDs2bFwyMzM0bFwyMzNyXEU4LAotCWthMT1cMjE3dywga2EzPVwyMTd1LCBrYjI9XDIxN3ksIGtiZWc9XDIxN0UsIGticz1eSCwKLQlrYzE9XDIxN3EsIGtjMz1cMjE3cywga2NidD1cMjMzWiwga2N1YjE9XDIxN0QsIGtjdWQxPVwyMTdCLAotCWtjdWYxPVwyMTdDLCBrY3V1MT1cMjE3QSwga2RjaDE9XDIzMzN+LCBrZW5kPVwyMzM0fiwKLQlrZW50PVwyMTdNLCBrZjE9XDIzMzExfiwga2YxMD1cMjMzMjF+LCBrZjExPVwyMzMyM34sCi0Ja2YxMj1cMjMzMjR+LCBrZjEzPVwyMzMyNX4sIGtmMTQ9XDIzMzI2fiwga2YxNT1cMjMzMjh+LAotCWtmMTY9XDIzMzI5fiwga2YxNz1cMjMzMzF+LCBrZjE4PVwyMzMzMn4sIGtmMTk9XDIzMzMzfiwKLQlrZjI9XDIzMzEyfiwga2YyMD1cMjMzMzR+LCBrZjM9XDIzMzEzfiwga2Y0PVwyMzMxNH4sCi0Ja2Y1PVwyMzMxNX4sIGtmNj1cMjMzMTd+LCBrZjc9XDIzMzE4fiwga2Y4PVwyMzMxOX4sCi0Ja2Y5PVwyMzMyMH4sIGtob21lPVwyMzMxfiwga2ljaDE9XDIzMzJ+LCBrbW91cz1cMjMzTSwKLQlrbnA9XDIzMzZ+LCBrcHA9XDIzMzV+LCBtYzA9XDIzM2ksIG1jND1cMjMzNGksIG1jNT1cMjMzNWksCi0JbWVtbD1cRWwsIG1lbXU9XEVtLCBvcD1cMjMzMzk7NDltLCByYz1cRTgsIHJldj1cMjMzN20sCi0Jcmk9XDIxNSwgcm1hY3M9XEUoQiwgcm1hbT1cMjMzPzdsLCBybWN1cD1cMjMzPzEwNDlsLAotCXJtaXI9XDIzMzRsLCBybWt4PVwyMzM/MWxcRT4sIHJtc289XDIzMzI3bSwgcm11bD1cMjMzMjRtLAotCXJzMT1cRWMsCi0JcnMyPVxFWzYyInBcRSBHXDIzM21cMjMzPzdoXEU+XEU3XDIzMz8xOzM7NDs2bFwyMzM0bFwyMzNyXEU4LAotCXNjPVxFNywgc2V0YWI9XDIzMzQlcDElZG0sIHNldGFmPVwyMzMzJXAxJWRtLAotCXNldGI9XDIzMzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0Jc2V0Zj1cMjMzMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQlzZ3I9XDIzMzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDcldDs4JTttJT8lcDkldFxFKDAlZVxFKEIlOywKLQlzZ3IwPVwyMzMwbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XDIzMz83aCwKLQlzbWN1cD1cMjMzPzEwNDloLCBzbWlyPVwyMzM0aCwgc21reD1cMjMzPzFoXEU9LAotCXNtc289XDIzMzdtLCBzbXVsPVwyMzM0bSwgdGJjPVwyMzMzZywgdTY9XDIzM1slaSVkOyVkUiwKLQl1Nz1cRVs2biwgdTg9XDIzM1s/MTsyYywgdTk9XEVbYywgdnBhPVwyMzMlaSVwMSVkZCwKLQoteHRlcm0taHB8eHRlcm0gd2l0aCBocHRlcm0gZnVuY3Rpb24ga2V5cywKLQlrY2xyPVxFSiwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLAotCWtkY2gxPVxFUCwga2VuZD1cRUYsIGtmMT1cRXAsIGtmMj1cRXEsIGtmMz1cRXIsIGtmND1cRXMsCi0Ja2Y1PVxFdCwga2Y2PVxFdSwga2Y3PVxFdiwga2Y4PVxFdywga2hvbWU9XEVoLCBraWNoMT1cRVEsCi0Ja25wPVxFUywga3BwPVxFVCwgdXNlPXh0ZXJtLWJhc2ljLAotCi14dGVybS1zY298eHRlcm0gd2l0aCBTQ08gZnVuY3Rpb24ga2V5cywKLQlrYmVnPVxFW0UsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XDE3Nywga2VuZD1cRVtGLCBrZjE9XEVbTSwga2YxMD1cRVtWLCBrZjExPVxFW1csCi0Ja2YxMj1cRVtYLCBrZjEzPVxFW1ksIGtmMTQ9XEVbWiwga2YxNT1cRVthLCBrZjE2PVxFW2IsCi0Ja2YxNz1cRVtjLCBrZjE4PVxFW2QsIGtmMTk9XEVbZSwga2YyPVxFW04sIGtmMjA9XEVbZiwKLQlrZjIxPVxFW2csIGtmMjI9XEVbaCwga2YyMz1cRVtpLCBrZjI0PVxFW2osIGtmMjU9XEVbaywKLQlrZjI2PVxFW2wsIGtmMjc9XEVbbSwga2YyOD1cRVtuLCBrZjI5PVxFW28sIGtmMz1cRVtPLAotCWtmMzA9XEVbcCwga2YzMT1cRVtxLCBrZjMyPVxFW3IsIGtmMzM9XEVbcywga2YzND1cRVt0LAotCWtmMzU9XEVbdSwga2YzNj1cRVt2LCBrZjM3PVxFW3csIGtmMzg9XEVbeCwga2YzOT1cRVt5LAotCWtmND1cRVtQLCBrZjQwPVxFW3osIGtmNDE9XEVbQCwga2Y0Mj1cRVtbLCBrZjQzPVxFW1xcLAotCWtmNDQ9XEVbXSwga2Y0NT1cRVtcXiwga2Y0Nj1cRVtfLCBrZjQ3PVxFW2AsIGtmNDg9XEVbeywKLQlrZjU9XEVbUSwga2Y2PVxFW1IsIGtmNz1cRVtTLCBrZjg9XEVbVCwga2Y5PVxFW1UsIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbTCwga21vdXM9XEVbPk0sIGtucD1cRVtHLCBrcHA9XEVbSSwKLQl1c2U9eHRlcm0tYmFzaWMsCi0KLSMgVGhlIHh0ZXJtLW5ldyBkZXNjcmlwdGlvbiBoYXMgYWxsIG9mIHRoZSBmZWF0dXJlcywgYnV0IGlzIG5vdCBjb21wbGV0ZWx5Ci0jIGNvbXBhdGlibGUgd2l0aCB2dDIyMC4gIElmIHlvdSBhcmUgdXNpbmcgYSBTdW4gb3IgUEMga2V5Ym9hcmQsIHNldCB0aGUKLSMgc3VuS2V5Ym9hcmQgcmVzb3VyY2UgdG8gdHJ1ZToKLSMJKyBtYXBzIHRoZSBlZGl0aW5nIGtleXBhZAotIwkrIGludGVycHJldHMgY29udHJvbC1mdW5jdGlvbi1rZXkgYXMgYSBzZWNvbmQgYXJyYXkgb2Yga2V5cywgc28gYQotIwkgIDEyLWZrZXkga2V5Ym9hcmQgY2FuIHN1cHBvcnQgdnQyMjAncyAyMC1ma2V5cy4KLSMJKyBtYXBzIG51bWVyaWMga2V5cGFkICIrIiB0byAiLCIuCi0jCSsgdXNlcyBERUMtc3R5bGUgY29udHJvbCBzZXF1ZW5jZXMgZm9yIHRoZSBhcHBsaWNhdGlvbiBrZXlwYWQuCi0jCi14dGVybS12dDIyMHx4dGVybSBlbXVsYXRpbmcgdnQyMjAsCi0Ja2NidD1cRVtaLCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtlbmQ9XEVbNH4sIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sCi0Ja2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LCBrZjE1PVxFWzI4fiwga2YxNj1cRVsyOX4sCi0Ja2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LCBrZjE5PVxFWzMzfiwga2YyMD1cRVszNH4sCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCXVzZT14dGVybSthcHAsIHVzZT14dGVybStlZGl0LCB1c2U9eHRlcm0tYmFzaWMsCi0JdXNlPXZ0MjIwK2tleXBhZCwKLQoteHRlcm0tdnQ1Mnx4dGVybSBlbXVsYXRpbmcgZGVjIHZ0NTIsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGNsZWFyPVxFSFxFSiwgY3I9Xk0sIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSUnICclKyVjJXAyJScgJyUrJWMsIGN1dTE9XEVBLCBlZD1cRUosIGVsPVxFSywKLQlob21lPVxFSCwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwgbmVsPV5NXkosIHJpPVxFSSwgcm1hY3M9XEVHLCBzbWFjcz1cRUYsCi0KLXh0ZXJtLW5vYXBwfHh0ZXJtIHdpdGggY3Vyc29yIGtleXMgaW4gbm9ybWFsIG1vZGUsCi0Jcm1jdXBALCBybWt4PVxFPiwgc21jdXBALCBzbWt4PVxFPSwgdXNlPXh0ZXJtK25vYXBwLAotCXVzZT14dGVybSwKLQoteHRlcm0tMjR8dnMxMDB8eHRlcm1zfHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yIChYIFdpbmRvdyBTeXN0ZW0pLAotCWxpbmVzIzI0LCB1c2U9eHRlcm0tb2xkLAotCi0jIFRoaXMgaXMgeHRlcm0gZm9yIG5jdXJzZXMuCi14dGVybXx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoWCBXaW5kb3cgU3lzdGVtKSwKLQl1c2U9eHRlcm0tbmV3LAotCi0jIFRoZXNlIGVudHJpZXMgYWxsb3cgYWNjZXNzIHRvIHRoZSBYIHRpdGxlYmFyIGFuZCBpY29uIG5hbWUgYXMgYSBzdGF0dXMgbGluZS4KLSMgTm90ZSB0aGF0IHR3bSAoYW5kIHBvc3NpYmx5IHdpbmRvdyBtYW5hZ2VycyBkZXNjZW5kZWQgZnJvbSBpdCBzdWNoIGFzIHR2dHdtLAotIyBjdHdtLCBhbmQgdnR3bSkgdHJhY2sgd2luZG93cyBieSBpY29uLW5hbWU7IHRodXMsIHlvdSBkb24ndCB3YW50IHRvIG1lc3MKLSMgd2l0aCBpdC4KLXh0ZXJtK3NsfGFjY2VzcyBYIHRpdGxlIGxpbmUgYW5kIGljb24gbmFtZSwKLQlocywKLQl3c2wjNDAsCi0JZHNsPVxFXTA7XDAwNywgZnNsPV5HLCB0c2w9XEVdMDssIHVzZT14dGVybSwKLXh0ZXJtK3NsLXR3bXxhY2Nlc3MgWCB0aXRsZSBsaW5lIChwYWNpZnkgdHdtLWRlc2NlbmRlZCB3aW5kb3cgbWFuYWdlcnMpLAotCWhzLAotCXdzbCM0MCwKLQlkc2w9XEVdMjtcMDA3LCBmc2w9XkcsIHRzbD1cRV0yOywgdXNlPXh0ZXJtLAotCi0jCi0jIFRoZSBmb2xsb3dpbmcgeHRlcm0gdmFyaWFudHMgZG9uJ3QgZGVwZW5kIG9uIHlvdXIgYmFzZSB2ZXJzaW9uCi0jCi0jIHh0ZXJtIHdpdGggYm9sZCBpbnN0ZWFkIG9mIHVuZGVybGluZQoteHRlcm0tYm9sZHx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoWDExUjYgV2luZG93IFN5c3RlbSkgc3RhbmRvdXQgdy9ib2xkLAotCXNtc289XEVbN20sIHNtdWw9XEVbMW0sIHVzZT14dGVybS1vbGQsCi0jIChrdGVybTogdGhpcyBoYWQgZXh0ZW5zaW9uIGNhcGFiaWxpdGllcyAiOktKOlRZPWFzY2lpOiIgLS0gZXNyKQotIyAoa3Rlcm0gc2hvdWxkIG5vdCBpbnZva2UgREVDIEdyYXBoaWNzIGFzIHRoZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldAotIyAgLS0gS2VuamkgUmlraXRha2UpCi0jIChwcm9wZXIgc2V0dGluZyBvZiBlbmFjcywgc21hY3MsIHJtYWNzIG1ha2VzIGt0ZXJtIHRvIHVzZSBERUMgR3JhcGhpY3MKLSMgIC0tIE1BVFNVTU9UTyBTaG9qaSkKLSMga3Rlcm0gaW1wbGVtZW50cyBhY3NjIHZpYSBidWlsdC1pbiB0YWJsZSBvZiBYIERyYXdhYmxlJ3MKLWt0ZXJtfGt0ZXJtIGthbmppIHRlcm1pbmFsIGVtdWxhdG9yIChYIHdpbmRvdyBzeXN0ZW0pLAotCWVzbG9rLCBocywKLQluY3ZALAotCWFjc2M9YGBhYWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eH5+LAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgZHNsPVxFWz9ILCBlbmFjcz0sIGZzbD1cRVs/RiwKLQlrbW91cz1cRVtNLCByYz1cRTgsIHJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7LAotCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLAotCXRzbD1cRVs/RVxFWz8laSVwMSVkVCwgdXNlPXh0ZXJtLXI2LCB1c2U9ZWNtYStjb2xvciwKLWt0ZXJtLWNvbG9yfGt0ZXJtLWNvfGt0ZXJtIHdpdGggQU5TSSBjb2xvcnMsCi0JbmN2QCwgdXNlPWt0ZXJtLCB1c2U9ZWNtYStjb2xvciwKLSMgU2VlIHRoZSBub3RlIG9uIElDSC9JQ0gxIFZFUlNVUyBSTUlSL1NNSVIgbmVhciB0aGUgZW5kIG9mIGZpbGUKLXh0ZXJtLW5pY3x4dGVybSB3aXRoIGljaC9pY2gxIHN1cHByZXNzZWQgZm9yIG5vbi1jdXJzZXMgcHJvZ3JhbXMsCi0JaWNoQCwgaWNoMUAsIHVzZT14dGVybSwKLSMgRnJvbTogTWFyayBTaGVwcGFyZCA8a2ltYmxlQG1pc3RyYWwuY28udWs+LCA0IE1heSAxOTk2Ci14dGVybTF8eHRlcm0gdGVybWluYWwgZW11bGF0b3IgaWdub3JpbmcgdGhlIGFsdGVybmF0ZSBzY3JlZW4gYnVmZmVyLAotCXJtY3VwQCwgc21jdXBALCB1c2U9eHRlcm0sCi0KLSMgVGhpcyBkZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBjb2xvcl94dGVybSwgYW4geHRlcm0gdmFyaWFudCBmcm9tCi0jIGJlZm9yZSBFQ01BLTY0IGNvbG9yIHN1cHBvcnQgd2FzIGZvbGRlZCBpbnRvIHRoZSBtYWluLWxpbmUgeHRlcm0gcmVsZWFzZS4KLSMgVGhpcyBlbnRyeSBpcyBzdHJhaWdodCBmcm9tIGNvbG9yX3h0ZXJtJ3MgbWFpbnRhaW5lci4KLSMgRnJvbTogSmFjb2IgTWFuZGVsc29uIDxqbG1AdWdjcy5jYWx0ZWNoLmVkdT4sIDA5IE5vdiAxOTk2Ci0jIFRoZSBSRUFETUUncyB3aXRoIHRoZSBkaXN0cmlidXRpb24gYWxzbyBzYXkgdGhhdCBpdCBzdXBwb3J0cyBTR1IgMjEsIDI0LCAyNQotIyBhbmQgMjcsIGJ1dCB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgdGVybWluZm8gb3IgdGVybWNhcC4KLWNvbG9yX3h0ZXJtfGN4fGN4MTAwfGNvbG9yX3h0ZXJtIGNvbG9yIHRlcm1pbmFsIGVtdWxhdG9yIGZvciBYLAotCU9UYnMsIGFtLCBrbSwgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzY1LCBuY3ZALAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLAotCWVsPVxFW0ssIGVsMT1cRVsxSywgZW5hY3M9XEUoQlxFKTAsIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLAotCWlzMT1cRVtyXEVbbVxFWz83aFxFWz80OzZsXEVbNGwsIGticz1eSCwga2N1YjE9XEVPRCwKLQlrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZW5kPVxFWzh+LCBrZjE9XEVbMTF+LAotCWtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMj1cRVsxMn4sCi0Ja2YzPVxFWzEzfiwga2Y0PVxFWzE0fiwga2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwKLQlrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBraG9tZT1cRVs3fiwga2ljaDE9XEVbMn4sCi0Ja21vdXM9XEVbTSwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1hY3M9Xk8sIHJtYW09XEVbPzdsLCBybWN1cD1cRT5cRVs/NDE7MXIsIHJtaXI9XEVbNGwsCi0Jcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRShCXDAxN1xFW3JcRVttXEVbMkpcRVtIXEVbPzdoXEVbPzE7Mzs0OzZsXEVbNGxcRTwsCi0Jc2M9XEU3LAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVswbVwwMTcsIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwKLQlzbWN1cD1cRVs/MTs0MXNcRVs/MTs0MWhcRT0sIHNtaXI9XEVbNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdXNlPWVjbWErY29sb3IsIHVzZT12dDIyMCtrZXlwYWQsCi0KLSMgVGhlICdueHRlcm0nIGRpc3RyaWJ1dGVkIHdpdGggUmVkaGF0IExpbnV4IDUuMiBpcyBhIHNsaWdodCByZWhhY2sgb2YKLSMgeHRlcm0tc2JfcmlnaHQtYW5zaS0zZCwgd2hpY2ggaW1wbGVtZW50cyBBTlNJIGNvbG9ycywgYnV0IGRvZXMgbm90IHN1cHBvcnQKLSMgU0dSIDM5IG9yIDQ5LiAgU0dSIDAgZG9lcyByZXNldCBjb2xvcnMgKGFsb25nIHdpdGggZXZlcnl0aGluZyBlbHNlKS4gIFRoaXMKLSMgZGVzY3JpcHRpb24gaXMgImNvbXBhdGlibGUiIHdpdGggY29sb3JfeHRlcm0sIHJ4dnQgYW5kIFhGcmVlODYgeHRlcm0sIGV4Y2VwdAotIyB0aGF0IGVhY2ggb2YgdGhvc2UgaW1wbGVtZW50cyB0aGUgaG9tZSwgZW5kLCBkZWxldGUga2V5cyBkaWZmZXJlbnRseS4KLSMKLSMgUmVkaGF0IExpbnV4IDYueCBkaXN0cmlidXRlcyBYRnJlZTg2IHh0ZXJtIGFzICJueHRlcm0iLCB3aGljaCB1c2VzIGJjZQotIyBjb2xvcnM7IG5vdGUgdGhhdCB0aGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIDUuMiB2ZXJzaW9uLgotIyBjc3cgKDIwMDItMDUtMTUpOiBtYWtlIHh0ZXJtLWNvbG9yIHByaW1hcnkgaW5zdGVhZCBvZiBueHRlcm0sIHRvCi0jICAgbWF0Y2ggWEZyZWU4NidzIHh0ZXJtLnRlcm1pbmZvIHVzYWdlIGFuZCBwcmV2ZW50IGNpcmN1bGFyIGxpbmtzCi14dGVybS1jb2xvcnxueHRlcm18Z2VuZXJpYyBjb2xvciB4dGVybSwKLQluY3ZALAotCW9wPVxFW20sIHVzZT14dGVybS1yNiwgdXNlPWtsb25lK2NvbG9yLAotCi0jIHRoaXMgZGVzY3JpYmVzIHRoZSBhbHBoYS12ZXJzaW9uIG9mIEdub21lIHRlcm1pbmFsIHNoaXBwZWQgd2l0aCBSZWRoYXQgNi4wCi1nbm9tZS1yaDYyfEdub21lIHRlcm1pbmFsLAotCWJjZSwKLQlrZGNoMT1cMTc3LCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywKLQl1c2U9eHRlcm0tY29sb3IsCi0KLSMgR05PTUUgVGVybWluYWwgMS40LjAuNCAoUmVkaGF0IDcuMikKLSMKLSMgVGhpcyBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIHZ0MTAyIHdpdGggYSByYW5kb20gc2VsZWN0aW9uIG9mIGZlYXR1cmVzIGZyb20KLSMgb3RoZXIgdGVybWluYWxzIHN1Y2ggYXMgY29sb3IgYW5kIGZ1bmN0aW9uLWtleXMuCi0jCi0jIHNoaWZ0LWYxIHRvIHNoaWZ0LWYxMCBhcmUgZjExIHRvIGYyMAotIwotIyBOdW1Mb2NrIGNoYW5nZXMgdGhlIGFwcGxpY2F0aW9uIGtleXBhZCB0byBhcHByb3hpbWF0ZSB2dDEwMCBrZXlwYWQsIGV4Y2VwdAotIyB0aGF0IHRoZXJlIGlzIG5vIGVzY2FwZSBzZXF1ZW5jZSBtYXRjaGluZyBjb21tYSAoLCkuCi0jCi0jIE90aGVyIGRlZmVjdHMgb2JzZXJ2ZWQ6Ci0jCXZ0MTAwIExOTSBtb2RlIGlzIG5vdCBpbXBsZW1lbnRlZC4KLSMJdnQxMDAgODAvMTMyIGNvbHVtbiBtb2RlIGlzIG5vdCBpbXBsZW1lbnRlZC4KLSMJdnQxMDAgREVDQUxOIGlzIG5vdCBpbXBsZW1lbnRlZC4KLSMJdnQxMDAgREVDU0NOTSBtb2RlIGlzIG5vdCBpbXBsZW1lbnRlZCwgc28gZmxhc2ggZG9lcyBub3Qgd29yay4KLSMJdnQxMDAgVEJDICh0YWIgcmVzZXQpIGlzIG5vdCBpbXBsZW1lbnRlZC4KLSMJeHRlcm0gYWx0ZXJuYXRlIHNjcmVlbiBjb250cm9scyBkbyBub3QgcmVzdG9yZSBjdXJzb3IgcG9zaXRpb24gcHJvcGVybHkKLSMJaXQgaGFuZ3MgaW4gdGFjayBhZnRlciBydW5uaW5nIGZ1bmN0aW9uLWtleXMgdGVzdC4KLWdub21lLXJoNzJ8R05PTUUgVGVybWluYWwsCi0JYmNlLCBrbUAsCi0JY2l2aXM9XEVbPzI1bCwgY25vcm09XEVbPzI1aCwga2RjaDE9XEVbM34sIGtmMT1cRU9QLAotCWtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIHJtYW09XEVbPzdsLAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFWzBtXDAxNywgc21hbT1cRVs/N2gsIHRiY0AsIHVzZT14dGVybS1jb2xvciwKLQotIyBHTk9NRSBUZXJtaW5hbCAyLjAuMSAoUmVkaGF0IDguMCkKLSMKLSMgRG9jdW1lbnRhdGlvbiBub3cgY2xhaW1zIGl0IGltcGxlbWVudHMgdnQyMjAgKHdoaWNoIGlzIGRlbW9uc3RyYWJseSBmYWxzZSkuCi0jIEhvd2V2ZXIsIGl0IGRvZXMgaW1wbGVtZW50IEVDSCwgd2hpY2ggaXMgYSB2dDIyMCBmZWF0dXJlLiAgQW5kIHRoZXJlIGFyZQotIyB3b3JrYWJsZSB2dDEwMCBMTk0sIERFQ0FMTiwgREVDU05NIG1vZGVzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gZGlzcGxheQotIyBtb3JlIG9mIGl0cyBidWdzIHVzaW5nIHZ0dGVzdC4KLSMKLSMgSG93ZXZlciwgbm90ZSB0aGF0IGJjZSBhbmQgbXNnciBhcmUgYnJva2VuIGluIHRoaXMgcmVsZWFzZS4gIFRhYnMgKHRiYyBhbmQKLSMgaHRzKSBhcmUgYnJva2VuIGFzIHdlbGwuICBTb21ldGltZXMgZmxhc2ggKGFzIGluIHh0ZXJtLW5ldykgd29ya3MuCi0jCi0jIGtmMSBhbmQga2YxMCBhcmUgbm90IHRlc3RlZCBzaW5jZSB0aGV5J3JlIGFzc2lnbmVkIChoYXJkY29kZWQ/KSB0byBtZW51Ci0jIG9wZXJhdGlvbnMuICBTaGlmdC10YWIgZ2VuZXJhdGVzIGEgZGlzdGluY3Qgc2VxdWVuY2Ugc28gaXQgY2FuIGJlIGFyZ3VlZAotIyB0aGF0IGl0IGltcGxlbWVudHMga2NidC4KLWdub21lLXJoODB8R05PTUUgVGVybWluYWwsCi0JYmNlQCwgbXNnckAsCi0JZWNoPVxFWyVwMSVkWCwgZmxhc2g9XEVbPzVoJDwxMDAvPlxFWz81bCwga2JzPVwxNzcsCi0Ja2NidD1cRV5JLCBvcD1cRVszOTs0OW0sIHVzZT1nbm9tZS1yaDcyLAotCi0jIEdOT01FIFRlcm1pbmFsIDIuMi4xIChSZWRoYXQgOS4wKQotIwotIyBiY2UgYW5kIG1zZ3IgYXJlIHJlcGFpcmVkLgotZ25vbWUtcmg5MHxHTk9NRSBUZXJtaW5hbCwKLQliY2UsIG1zZ3IsCi0JaHBhPVxFWyVpJXAxJWRHLCBrREM9XEVbMzsyfiwga0xGVD1cRU8yRCwga1JJVD1cRU8yQywKLQlrYjI9XEVbRSwga2NidD1cRVtaLCBrZW5kPVxFT0YsIGtob21lPVxFT0gsIHRiYz1cRVszZywKLQl2cGE9XEVbJWklcDElZGQsIHVzZT14dGVybStwY2YwLCB1c2U9eHRlcm0rcGNma2V5cywKLQl1c2U9Z25vbWUtcmg4MCwKLQotIyBHTk9NRSBUZXJtaW5hbCAyLjE0LjIgKEZlZG9yYSBDb3JlIDUpCi0jIEVkIENhdG11ciBub3RlcyB0aGF0IGdub21lLXRlcm1pbmFsIGhhcyByZWNvZ25pemVkIHNvZnQtcmVzZXQgc2luY2UgTWF5IDIwMDIuCi1nbm9tZS1mYzV8R05PTUUgVGVybWluYWwsCi0JcnMxPVxFYywKLQlyczI9XEU3XEVbclxFOFxFW21cRVs/N2hcRVshcFxFWz8xOzM7NDs2bFxFWzRsXEU+XEVbPzEwMDBsXEVbPzI1aCwKLQl1c2U9YW5zaStlbnEsIHVzZT14dGVybStwY2MwLCB1c2U9Z25vbWUtcmg5MCwKLQotIyBHTk9NRSBUZXJtaW5hbCAyLjE4LjEgKDIwMDcgc25hcHNob3QpCi0jCi0jIEZvciBhbnkgInJlY2VudCIgdmVyc2lvbiBvZiBnbm9tZS10ZXJtaW5hbCwgaXQgaXMgZnV0aWxlIHRvIGF0dGVtcHQgdG8KLSMgc3VwcG9ydCBtb2RpZmllcnMgb24gY3Vyc29yLSBhbmQga2V5cGFkIGtleXMgYmVjYXVzZSB0aGUgcHJvZ3JhbSB1c3VhbGx5Ci0jIGlzIGhhcmRjb2RlZCB0byBzZXQgJFRFUk0gdG8gInh0ZXJtIiwgYW5kIG9uIHN0YXJ0dXAsIGl0IGJ1aWxkcyBhIHN1YnNldAotIyBvZiB0aGUga2V5cyAod2hpY2ggbW9yZS9sZXNzIGNvcnJlc3BvbmQgdG8gdGhlIHRlcm1jYXAgdmFsdWVzKSwgYW5kIHdpbGwKLSMgaW50ZXJwcmV0IHRob3NlIGFjY29yZGluZyB0byB0aGUgJFRFUk0gdmFsdWUsIGJ1dCBvdGhlcnMgbm90IGluIHRoZQotIyB0ZXJtaW5mbyBhY2NvcmRpbmcgdG8gc29tZSBjb25zdGFudGx5IGNoYW5naW5nIHNldCBvZiBoYWNrZXIgZ3VpZGVsaW5lcyAtVEQKLWdub21lLTIwMDd8R05PTUUgVGVybWluYWwgc25hcHNob3QgMi4xOC4xLAotCXVzZT14dGVybStwY2MyLCB1c2U9Z25vbWUtZmM1LAotCi0jIEdOT01FIFRlcm1pbmFsIDIuMjIuMyAoMjAwOCBzbmFwc2hvdCkKLSMKLSMgSW4gdnR0ZXN0LCBpdCBjbGFpbXMgdG8gYmUgYSB2dDIyMCB3aXRoIG5hdGlvbmFsIHJlcGxhY2VtZW50IGNoYXJhY3Rlci1zZXRzLAotIyBidXQgYXNpZGUgZnJvbSB0aGUgaWRlbnRpZmllciBzdHJpbmcsIGltcGxlbWVudHMgb25seSBhIHNtYWxsIGZyYWN0aW9uIG9mCi0jIHZ0MjIwJ3MgYmVoYXZpb3IsIHdoaWNoIHdpbGwgbWFrZSBpdCBsZXNzIHVzYWJsZSBvbiBhIFZNUyBzeXN0ZW0gKHVuY2xlYXIKLSMgd2hhdCB0aGUgaW50ZW50IG9mIHRoZSBkZXZlbG9wZXIgaXMsIHNpbmNlIHRoZSBOUkMgZmVhdHVyZSBleHBvc2VkIGluIHZ0dGVzdAotIyBieSB0aGlzIGNoYW5nZSBkb2VzIG5vdCB3b3JrKS4KLWdub21lLTIwMDh8R05PTUUgVGVybWluYWwgc25hcHNob3QgMi4yMi4zLAotCXVzZT1nbm9tZStwY2ZrZXlzLCB1c2U9Z25vbWUtMjAwNywKLQotIyBHTk9NRSB0ZXJtaW5hbCBtYXkgYXV0b21hdGljYWxseSB1c2UgdGhlIGNvbnRlbnRzIG9mIHRoZSAieHRlcm0iIHRlcm1pbmZvIHRvCi0jIHN1cHBseSBrZXkgaW5mb3JtYXRpb24gd2hpY2ggaXMgbm90IGJ1aWx0IGludG8gdGhlIHByb2dyYW0uICBXaXRoIDIuMjIuMywKLSMgdGhpcyBsaXN0IGlzIGJ1aWx0IGludG8gdGhlIHByb2dyYW0gKHdoaWNoIGFkZHJlc3NlcyB0aGUgaW5hZHZlcnRhbnQgdXNlIG9mCi0jIHJhbmRvbSB0ZXJtaW5mbyBkYXRhLCB0aG91Z2ggdXNpbmcgYSBzZXQgb2YgdmFsdWVzIHdoaWNoIGRvZXMgbm90IGNvcnJlc3BvbmQKLSMgdG8gYW55IHRoYXQgeHRlcm0gcHJvZHVjZXMgLSBzdGlsbCBub3Qgc29sdmluZyB0aGUgcHJvYmxlbSB0aGF0IEdOT01FCi0jIHRlcm1pbmFsIGhhcmRjb2RlcyB0aGUgJFRFUk0gdmFyaWFibGUgYXMgInh0ZXJtIikuCi0jCi0jCXRlcm1pbmZvCW1vZGlmaWVyCWNvZGUJa2V5cwotIwlrZjEzLWtmMjQJc2hpZnQJCTIJRjEgdG8gRjEyCi0jCWtmMjUta2YzNgljb250cm9sCQk1CUYxIHRvIEYxMgotIwlrZjM3LWtmNDgJc2hpZnQvY29udHJvbAk2CUYxIHRvIEYxMgotIwlrZjQ5LWtmNjAJYWx0CQkzCUYxIHRvIEYxMgotIwlrZjYxLWtmNjMJc2hpZnQtYWx0CTQJRjEgdG8gRjMKLSMKLSMgVGhlIHBhcmFtZXRlcnMgd2l0aCBcRU8gKFNTMykgYXJlIHRlY2huaWNhbGx5IGFuIGVycm9yLCBzaW5jZSBTUzMgc2hvdWxkIGhhdmUKLSMgbm8gcGFyYW1ldGVycy4gIFRoaXMgYXBwZWFycyB0byBiZSByb3RlIGNvcHlpbmcgYmFzZWQgb24geHRlcm0rcGNjMC4KLWdub21lK3BjZmtleXN8Z25vbWUgdmFyaWF0aW9uIG9uIHh0ZXJtK3BjZmtleXMsCi0Ja2YxPVxFT1AsIGtmMTM9XEVPMTsyUCwga2YxND1cRU8xOzJRLCBrZjE1PVxFTzE7MlIsCi0Ja2YxNj1cRU8xOzJTLCBrZjI9XEVPUSwga2YyNT1cRU8xOzVQLCBrZjI2PVxFTzE7NVEsCi0Ja2YyNz1cRU8xOzVSLCBrZjI4PVxFTzE7NVMsIGtmMz1cRU9SLCBrZjM3PVxFTzE7NlAsCi0Ja2YzOD1cRU8xOzZRLCBrZjM5PVxFTzE7NlIsIGtmND1cRU9TLCBrZjQwPVxFTzE7NlMsCi0Ja2Y0OT1cRU8xOzNQLCBrZjUwPVxFTzE7M1EsIGtmNTE9XEVPMTszUiwga2Y1Mj1cRU8xOzNTLAotCWtmNjE9XEVPMTs0UCwga2Y2Mj1cRU8xOzRRLCBrZjYzPVxFTzE7NFIsCi0JdXNlPXh0ZXJtK3BjZmtleXMsCi0KLWdub21lfEdOT01FIFRlcm1pbmFsLAotCXVzZT1nbm9tZS0yMDA4LAotCi0jIHBhbGV0dGUgaXMgaGFyZGNvZGVkLi4uCi1nbm9tZS0yNTZjb2xvcnxHTk9NRSBUZXJtaW5hbCB3aXRoIHh0ZXJtIDI1Ni1jb2xvcnMsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1nbm9tZSwKLQotIyBYRkNFIFRlcm1pbmFsIDAuMi41LjRiZXRhMgotIwotIyBUaGlzIGlzIGJhc2VkIG9uIHNvbWUgb2YgdGhlIHNhbWUgc291cmNlIGNvZGUsIGUuZy4sIHRoZSBWVEUgbGlicmFyeSwgYXMKLSMgZ25vbWUtdGVybWluYWwsIGJ1dCBoYXMgZmV3ZXIgZmVhdHVyZXMsIGZhaWxzIG1vcmUgc2NyZWVucyBpbiB2dHRlc3QuCi0jIFNpbmNlIG1vc3Qgb2YgdGhlIHRlcm1pbmZvLXJlbGF0ZWQgYmVoYXZpb3IgaXMgZHVlIHRvIHRoZSBWVEUgbGlicmFyeSwKLSMgdGhlIHRlcm1pbmZvIGlzIHRoZSBzYW1lIGFzIGdub21lLXRlcm1pbmFsLgoteGZjZXxYZmNlIFRlcm1pbmFsLAotCXVzZT1nbm9tZSwKLQotIyBNdWx0aS1Hbm9tZS1UZXJtaW5hbCAxLjYuMgotIwotIyBUaGlzIGRvZXMgbm90IHVzZSBWVEUsIGFuZCBkb2VzIGhhdmUgZGlmZmVyZW50IGJlaGF2aW9yIChjb21wYXJlIHhmY2UgYW5kCi0jIGdub21lKS4KLW1ndHxNdWx0aSBHTk9NRSBUZXJtaW5hbCwKLQlpbmRuPVxFWyVwMSVkUywgcmluPVxFWyVwMSVkVCwgdXNlPXh0ZXJtLXhmODYtdjMzMywKLQotIyBUaGlzIGlzIGt2dCAwLTE4LjcsIHNoaXBwZWQgd2l0aCBSZWRoYXQgNi4wICh0aG91Z2ggd2hldGhlciBpdCBzdXBwb3J0cyBiY2UKLSMgb3Igbm90IGlzIGRlYmF0YWJsZSkuCi1rdnR8S0RFIHRlcm1pbmFsLAotCWJjZSwga21ALAotCWtkY2gxPVwxNzcsIGtlbmQ9XEVbRiwga2hvbWU9XEVbSCwgdXNlPXh0ZXJtLWNvbG9yLAotCi0jIEtvbnNvbGUgMS4wLjEKLSMgKGZvcm1lcmx5IGtub3duIGFzIGt2dCkKLSMKLSMgVGhpcyBwcm9ncmFtIGhhcmRjb2RlcyAkVEVSTSB0byAneHRlcm0nLCB3aGljaCBpcyBub3QgYWNjdXJhdGUuICBIb3dldmVyLCB0bwotIyBzaW1wbGlmeSB0aGlzIGVudHJ5IChhbmQgcG9pbnQgb3V0IHdoeSBrb25zb2xlIGlzbid0IHh0ZXJtKSwgd2UgYmFzZSB0aGlzIG9uCi0jIHh0ZXJtLXI2LiAgVGhlIGRlZmF1bHQga2V5Ym9hcmQgYXBwZWFycyB0byBiZSAnbGludXgnLgotIwotIyBOb3RlczoKLSMgYSkga29uc29sZSBpbXBsZW1lbnRzIHNldmVyYWwgZmVhdHVyZXMgZnJvbSBYRnJlZTg2IHh0ZXJtLCB0aG91Z2ggbm9uZSBvZgotIyAgICB0aGF0IGlzIGRvY3VtZW50ZWQgLSBleGNlcHQgb2YgY291cnNlIGluIGl0cyBzb3VyY2UgY29kZSAtIGFwcGFyZW50bHkKLSMgICAgYmVjYXVzZSBpdHMgaW1wbGVtZW50b3JzIGFyZSB1bmFjY3VzdG9tZWQgdG8gcmVhZGluZyBkb2N1bWVudGF0aW9uIC0gYXMKLSMgICAgZXZpZGVuY2VkIGJ5IHRoZSBzcGFyc2UgYW5kIHBvb3JseSBlZGl0ZWQgZG9jdW1lbnRhdGlvbiBkaXN0cmlidXRlZCB3aXRoCi0jICAgIGtvbnNvbGUuICBTb21lIGZlYXR1cmVzIHN1Y2ggYXMgdGhlIDEwNDkgcHJpdmF0ZSBtb2RlIGFyZSByZWNvZ25pemVkIGJ1dAotIyAgICBpbmNvcnJlY3RseSBpbXBsZW1lbnRlZCBhcyBhIGR1cGxpY2F0ZSBvZiB0aGUgNDcgcHJpdmF0ZSBtb2RlLgotIyBiKSBldmVuIHdpdGggdGhlICJ2dDEwMCAoaGlzdG9yaWNhbCkiIGtleWJvYXJkIHNldHRpbmcsIHRoZSBudW1lcmljIGtleXBhZAotIyAgICBzZW5kcyBQQy1zdHlsZSBlc2NhcGVzIHJhdGhlciB0aGFuIHZ0MTAwLgotIyBjKSBmYWlscyB2dHRlc3QgbWVudSAzIChUZXN0IG9mIGNoYXJhY3RlciBzZXRzKSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3Blcmx5Ci0jICAgIHBhcnNlIHNvbWUgY29udHJvbCBzZXF1ZW5jZXMuICBBbHNvIGZhaWxzIHZ0dGVzdCBQcmltYXJ5IERldmljZSBBdHRyaWJ1dGVzCi0jICAgIGJ5IHNlbmRpbmcgYSBib2d1cyBjb2RlIChpbiB0aGUgc291cmNlIGl0IHNheXMgaXQncyBzdXBwb3NlZCB0byBiZSBhCi0jICAgIHZ0MjIwLCB3aGljaCBpcyBkb3VibHkgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgaW1wbGVtZW50IHZ0MjIwCi0jICAgIGNvbnRyb2wgc2VxdWVuY2VzIGV4Y2VwdCBmb3IgYSBmZXcgc3BlY2lhbCBjYXNlcykuICBUcmVhdCBpdCBhcyBhCi0jICAgIG1pbGRseS1icm9rZW4gdnQxMDIuCi0jCi0jIFVwZGF0ZSBmb3Iga29uc29sZSAxLjMuMjoKLSMgICAgVGhlIDEwNDkgcHJpdmF0ZSBtb2RlIHdvcmtzIChidXQgc2VlIHRoZSBvdGhlciB4dGVybSBzY3JlZW5zIGluIHZ0dGVzdCkuCi0jICAgIFByaW1hcnkgRGV2aWNlIEF0dHJpYnV0ZXMgbm93IHJldHVybnMgdGhlIGNvZGUgZm9yIGEgdnQxMDAgd2l0aCBhZHZhbmNlZAotIyAgICB2aWRlbyBvcHRpb24uICBQZXJoYXBzIHRoYXQncyBpbnRlbmRlZCB0byBiZSBhICJtaWxkbHktYnJva2VuIHZ0MTAyIi4KLSMKLSMgVXBkYXRlZCBmb3Iga29uc29sZSAxLjYuNDoKLSMgICAgYWRkIGtvbnNvbGUtc29sYXJpcwotIwotIyBVcGRhdGVkIGZvciBrb25zb2xlIDEuNi42OgotIyAgICBhZGQgY29udHJvbC1rZXkgbW9kaWZpZXJzIGZvciBmdW5jdGlvbi1rZXlzLCBldGMuCi0jCi0jIHZ0dGVzdCBtZW51IDEgc2hvd3MgdGhhdCBib3RoIGtvbnNvbGUgYW5kIGdub21lIHRlcm1pbmFsIGRvIHdyYXBwaW5nCi0jIGRpZmZlcmVudCBmcm9tIHh0ZXJtIChhbmQgdnQxMDAncykuICBUaGV5IGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IgaW4gdGhpcwotIyBkZXRhaWwsIGJ1dCBpdCBpcyB1bmNsZWFyIHdoaWNoIGNvcGllcyB0aGUgb3RoZXIuCi1rb25zb2xlLWJhc2V8S0RFIGNvbnNvbGUgd2luZG93LAotCWJjZSwga21ALCBucGMsCi0JYmVsQCwgYmxpbms9XEVbNW0sIGNpdmlzPVxFWz8yNWwsIGNub3JtPVxFWz8yNWgsCi0JZWNoPVxFWyVwMSVkWCwgZmxhc2g9XEVbPzVoJDwxMDAvPlxFWz81bCwKLQlocGE9XEVbJWklcDElZEcsIGluZG49XEVbJXAxJWRTLCBrYnM9XDE3Nywga2RjaDFALAotCWtlbmQ9XEVbNH4sIGtmMUAsIGtmMTBALCBrZjExQCwga2YxMkAsIGtmMTNALCBrZjE0QCwga2YxNUAsIGtmMTZALAotCWtmMTdALCBrZjE4QCwga2YxOUAsIGtmMkAsIGtmMjBALCBrZjNALCBrZjRALCBrZjVALCBrZjZALCBrZjdALCBrZjhALAotCWtmOUAsIGtmbmRALCBraG9tZT1cRVsxfiwga3NsdEAsIHJpbj1cRVslcDElZFQsIHJtYW09XEVbPzdsLAotCXJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEU3XEVbclxFOFxFW21cRVs/N2hcRVs/MTszOzQ7NmxcRVs0bFxFPlxFWz8xMDAwbFxFWz8yNWgsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVswbVwwMTcsIHNtYW09XEVbPzdoLCB2cGE9XEVbJWklcDElZGQsCi0JdXNlPWVjbWErY29sb3IsIHVzZT14dGVybS1yNiwKLWtvbnNvbGUtbGludXh8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggbGludXgga2V5Ym9hcmQsCi0Ja2RjaDE9XEVbM34sIGtmMT1cRVtbQSwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzQCwga2YxNEAsIGtmMTVALCBrZjE2QCwga2YxN0AsIGtmMThALCBrZjE5QCwKLQlrZjI9XEVbW0IsIGtmMjBALCBrZjM9XEVbW0MsIGtmND1cRVtbRCwga2Y1PVxFW1tFLAotCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0JdXNlPWtvbnNvbGUtYmFzZSwKLWtvbnNvbGUtc29sYXJpc3xLREUgY29uc29sZSB3aW5kb3cgd2l0aCBTb2xhcmlzIGtleWJvYXJkLAotCWticz1eSCwga2VuZD1cRVs0fiwga2hvbWU9XEVbMX4sIHVzZT1rb25zb2xlLXZ0MTAwLAotIyBLREUncyAiWEZyZWU4NiAzLngueCIga2V5Ym9hcmQgaXMgYmFzZWQgb24gcmVhZGluZyB0aGUgeHRlcm0gdGVybWluZm8gcmF0aGVyCi0jIHRoYW4gdGVzdGluZyB0aGUgY29kZS4KLWtvbnNvbGUteGYzeHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXlib2FyZCBmb3IgWEZyZWU4NiAzLnggeHRlcm0sCi0Ja2VuZD1cRVs0fiwga2hvbWU9XEVbMX4sIHVzZT1rb25zb2xlLXZ0MTAwLAotIyBUaGUgdmFsdWUgZm9yIGticyByZWZsZWN0cyBsb2NhbCBjdXN0b21pemF0aW9uIHJhdGhlciB0aGFuIHRoZSBzZXR0aW5ncyB1c2VkCi0jIGZvciBYRnJlZTg2IHh0ZXJtLgota29uc29sZS14ZjR4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDQueCB4dGVybSwKLQlrZW5kPVxFT0YsIGtob21lPVxFT0gsIHVzZT1rb25zb2xlK3BjZmtleXMsCi0JdXNlPWtvbnNvbGUtdnQxMDAsCi0jIEtvbnNvbGUgZG9lcyBub3QgaW1wbGVtZW50IHNoaWZ0ZWQgY3Vyc29yLWtleXMuCi1rb25zb2xlK3BjZmtleXN8a29uc29sZSBzdWJzZXQgb2YgeHRlcm0rcGNma2V5cywKLQlrTEZUQCwga1JJVEAsIGtjYnQ9XEVbWiwga2luZEAsIGtyaUAsIGtETkAsIGtVUEAsIHVzZT14dGVybStwY2MyLAotCXVzZT14dGVybStwY2YwLAotIyBLREUncyAidnQxMDAiIGtleWJvYXJkIGhhcyBubyByZWxhdGlvbnNoaXAgdG8gYW55IHRlcm1pbmFsIHRoYXQgREVDIG1hZGUsIGJ1dAotIyBpdCBpcyBzdGlsbCB1c2VmdWwgZm9yIGRlcml2aW5nIHRoZSBvdGhlciBlbnRyaWVzLgota29uc29sZS12dDEwMHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCB2dDEwMCAoc2ljKSBrZXlib2FyZCwKLQlrYnM9XDE3Nywga2RjaDE9XEVbM34sIGtlbmQ9XEVbRiwga2YxPVxFWzExfiwga2YxMD1cRVsyMX4sCi0Ja2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzQCwga2YxNEAsIGtmMTVALCBrZjE2QCwga2YxN0AsCi0Ja2YxOEAsIGtmMTlALCBrZjI9XEVbMTJ+LCBrZjIwQCwga2YzPVxFWzEzfiwga2Y0PVxFWzE0fiwKLQlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAotCWtob21lPVxFW0gsIHVzZT1rb25zb2xlLWJhc2UsCi1rb25zb2xlLXZ0NDIwcGN8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggdnQ0MjAgcGMga2V5Ym9hcmQsCi0Ja2JzPV5ILCBrZGNoMT1cMTc3LCB1c2U9a29uc29sZS12dDEwMCwKLWtvbnNvbGUtMTZjb2xvcnxrbG9uZSBvZiB4dGVybS0xNmNvbG9yLAotCW5jdiMzMiwgdXNlPWlibSsxNmNvbG9yLCB1c2U9a29uc29sZSwKLSMgbWFrZSBhIGRlZmF1bHQgZW50cnkgZm9yIGtvbnNvbGUKLWtvbnNvbGV8S0RFIGNvbnNvbGUgd2luZG93LAotCXVzZT1rb25zb2xlLXhmNHgsCi0KLSMgcGFsZXR0ZSBpcyBoYXJkY29kZWQuLi4KLWtvbnNvbGUtMjU2Y29sb3J8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggeHRlcm0gMjU2LWNvbG9ycywKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPWtvbnNvbGUsCi0KLSMgVGhpcyBpcyBtbHRlcm0gMi45LjMncyBtbHRlcm0udGksIHdpdGggc29tZSBhZGRpdGlvbnMvY29ycmVjdGlvbnMgLVRECi0jCi0jIEl0IGlzIG5vbWluYWxseSBhIHZ0MTAyIGVtdWxhdG9yLCB3aXRoIGZlYXR1cmVzIGJvcnJvd2VkIGZyb20gcnh2dCBhbmQKLSMgeHRlcm0uCi0jCi0jIFRoZSBmdW5jdGlvbiBrZXlzIGFyZSBudW1iZXJlZCBiYXNlZCBvbiBzaGlmdC9jb250cm9sL2FsdCBtb2RpZmllcnMsIGV4Y2VwdAotIyB0aGF0IHRoZSBjb250cm9sLW1vZGlmaWVyIGl0c2VsZiBpcyB1c2VkIHRvIHNwYXduIGEgbmV3IGNvcHkgb2YgbWx0ZXJtICh0aGUKLSMgIi1QIiBvcHRpb24pLiAgU28gY29udHJvbC9GMSB0byBjb250cm9sL0YxMiBtYXkgbm90IGJlIHVzYWJsZSwgZGVwZW5kaW5nIG9uCi0jIGhvdyBpdCBpcyBjb25maWd1cmVkLgotIwotIwkJCQlrZjEgdG8ga2YxMglcRVsxMX4gICB0byBcRVsyNH4KLSMJc2hpZnQJCQlrZjEgdG8ga2YxMglcRVsxMTsyfiB0byBcRVsyNDsyfgotIwlhbHQJCQlrZjEgdG8ga2YxMglcRVsxMTszfiB0byBcRVsyNDszfgotIwlzaGlmdC9hbHQJCWtmMSB0byBrZjEyCVxFWzExOzR+IHRvIFxFWzI0OzR+Ci0jCWNvbnRyb2wJCQlrZjEgdG8ga2YxMglcRVsxMTs1fiB0byBcRVsyNDs1fiAobWF5YmUpCi0jCWNvbnRyb2wvc2hpZnQJCWtmMSB0byBrZjEyCVxFWzExOzZ+IHRvIFxFWzI0OzZ+Ci0jCWNvbnRyb2wvYWx0CQlrZjEgdG8ga2YxMglcRVsxMTs3fiB0byBcRVsyNDs3fgotIwljb250cm9sL3NoaWZ0L2FsdAlrZjEgdG8ga2YxMglcRVsxMTs4fiB0byBcRVsyNDs4fgotIwotbWx0ZXJtfG11bHRpIGxpbmd1YWwgdGVybWluYWwgZW11bGF0b3IsCi0JYW0sIGVzbG9rLCBrbSwgbWM1aSwgbWlyLCBtc2dyLCBucGMsIHhlbmwsCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBwYWlycyM2NCwKLQlhY3NjPTAwYGBhYWZmZ2doaGpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz0sCi0JaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywKLQlpczI9XEU3XEVbclxFW21cRVs/N2hcRVs/MTszOzQ7NmxcRVs0bFxFOFxFPiwKLQlrYnM9XDE3Nywga2NidD1cRVtaLCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAotCWtjdXUxPVxFT0EsIGtkY2gxPVxFWzN+LCBrZW5kPVxFT0YsIGtlbnQ9XEVPTSwga2ZuZD1cRVsxfiwKLQlraG9tZT1cRU9ILCBraWNoMT1cRVsyfiwga2luZD1cRU8xOzJCLCBrbW91cz1cRVtNLAotCWtucD1cRVs2fiwga3BwPVxFWzV+LCBrcmk9XEVPMTsyQSwga3NsdD1cRVs0fiwgbWMwPVxFW2ksCi0JbmVsPVxFRSwgb3A9XEVbMzk7NDltLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJpbj1cRVslcDElZFQsIHJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLCBybWN1cD1cRVs/MTA0OWwsCi0Jcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEU3XEVbclxFOFxFW21cRVs/N2hcRVs/MTszOzQ7NmxcRVs0bFxFPlxFWz8xMDAwbCwKLQlzYz1cRTcsIHNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20lPyVwOSV0XEUoMCVlXEUoQiU7LAotCXNncjA9XEVbbVxFKEIsIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWN1cD1cRVs/MTA0OWgsCi0Jc21pcj1cRVs0aCwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0JdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sIHU4PVxFWz8xOzJjLCB1OT1cRVtjLAotCXZwYT1cRVslaSVwMSVkZCwgdXNlPW1sdGVybStwY2ZrZXlzLCB1c2U9eHRlcm0rcjZmMiwKLQotIyBUaGUgaW5zZXJ0L2RlbGV0ZS9ob21lL2VuZCBrZXlzIGRvIG5vdCByZXNwb25kIHRvIG1vZGlmaWVycyBiZWNhdXNlIG1sdGVybQotIyBsb29rcyBpbiBpdHMgdGVybWNhcCB0byBkZWNpZGUgd2hpY2ggc3RyaW5nIHRvIHNlbmQuICBJZiBpdCB1c2VkIHRlcm1pbmZvCi0jICh3aGVuIGF2YWlsYWJsZSksIGl0IGNvdWxkIHVzZSB0aGUgZXh0ZW5kZWQgbmFtZXMgaW50cm9kdWNlZCBmb3IgeHRlcm0uCi1tbHRlcm0rcGNma2V5c3xmcmFnbWVudCBmb3IgUEMtc3R5bGUgZmtleXMsCi0Ja0xGVD1cRU8xOzJELCBrTlhUPVxFWzY7Mn4sIGtQUlY9XEVbNTsyfiwga1JJVD1cRU8xOzJDLAotCWtETj1cRU8xOzJCLCBrRE4zPVxFTzE7M0IsIGtETjQ9XEVPMTs0Qiwga0RONT1cRU8xOzVCLAotCWtETjY9XEVPMTs2Qiwga0RONz1cRU8xOzdCLCBrSUM1PVxFWzI7NX4sIGtJQzY9XEVbMjs2fiwKLQlrTEZUMz1cRU8xOzNELCBrTEZUND1cRU8xOzRELCBrTEZUNT1cRU8xOzVELAotCWtMRlQ2PVxFTzE7NkQsIGtMRlQ3PVxFTzE7N0QsIGtOWFQ1PVxFWzY7NX4sCi0Ja05YVDY9XEVbNjs2fiwga1BSVjU9XEVbNTs1fiwga1BSVjY9XEVbNTs2fiwKLQlrUklUMz1cRU8xOzNDLCBrUklUND1cRU8xOzRDLCBrUklUNT1cRU8xOzVDLAotCWtSSVQ2PVxFTzE7NkMsIGtSSVQ3PVxFTzE7N0MsIGtVUD1cRU8xOzJBLCBrVVAzPVxFTzE7M0EsCi0Ja1VQND1cRU8xOzRBLCBrVVA1PVxFTzE7NUEsIGtVUDY9XEVPMTs2QSwga1VQNz1cRU8xOzdBLAotCi0jIEZyb206IFRob21hcyBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDA0IE9jdCAxOTk3Ci0jIFVwZGF0ZWQ6IE9lemd1ZXIgS2VzaW0gPGtlc2ltQG1hdGguZnUtYmVybGluLmRlPiAwMiBOb3YgMTk5NwotIyBOb3RlczoKLSMgcnh2dCAyLjIxYiB1c2VzCi0jCXNtYWNzPVxFKEJcRSlVXk4sIHJtYWNzPVxFKEJcRSkwXk8sCi0jIGJ1dCBzb21lIGFwcGxpY2F0aW9ucyBkb24ndCB3b3JrIHdpdGggdGhhdC4KLSMgSXQgYWxzbyBoYXMgYW4gQUlYIGV4dGVuc2lvbgotIwlib3gyPWxxa3hqbXd1dnRuLAotIyBhbmQKLSMJZWNoPVxFWyVwMSVkWCwKLSMgYnV0IHRoZSBsYXR0ZXIgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkuCi0jCi0jIFRoZSBkaXN0cmlidXRlZCB0ZXJtaW5mbyBzYXlzIGl0IGltcGxlbWVudHMgaHBhIGFuZCB2cGEsIGJ1dCB0aGV5IGFyZSBub3QKLSMgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCB1c2luZyByZWxhdGl2ZSByYXRoZXIgdGhhbiBhYnNvbHV0ZSBwb3NpdGlvbmluZy4KLSMKLSMgcnh2dCBpcyBub3JtYWxseSBjb25maWd1cmVkIHRvIGxvb2sgZm9yICJ4dGVybSIgb3IgInh0ZXJtLWNvbG9yIiBhcyAkVEVSTS4KLSMgU2luY2Ugcnh2dCBpcyBub3QgcmVhbGx5IGNvbXBhdGlibGUgd2l0aCB4dGVybSwgaXQgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMKLSMgInJ4dnQiIG9yICJyeHZ0LWNvbG9yIi4KLSMKLSMgcmVtb3ZlZCBkY2gvZGNoMSBiZWNhdXNlIHRoZXkgYXJlIGluY29uc2lzdGVudCB3aXRoIGJjZS9lY2ggLVRECi0jIHJlbW92ZSBrbSBhcyBwZXIgdGFjayB0ZXN0IC1URAotcnh2dC1iYXNpY3xyeHZ0IHRlcm1pbmFsIGJhc2UgKFggV2luZG93IFN5c3RlbSksCi0JT1RicywgYW0sIGJjZSwgZW8sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAotCWVuYWNzPVxFKEJcRSkwLCBmbGFzaD1cRVs/NWhcRVs/NWwsIGhvbWU9XEVbSCwgaHQ9XkksCi0JaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLAotCWluZD1eSiwgaXMxPVxFWz80N2xcRT1cRVs/MWwsCi0JaXMyPVxFW3JcRVttXEVbMkpcRVtIXEVbPzdoXEVbPzE7Mzs0OzZsXEVbNGwsIGticz1eSCwKLQlrY2J0PVxFW1osIGttb3VzPVxFW00sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYWNzPV5PLAotCXJtY3VwPVxFWzJKXEVbPzQ3bFxFOCwgcm1pcj1cRVs0bCwgcm1reD1cRT4sIHJtc289XEVbMjdtLAotCXJtdWw9XEVbMjRtLAotCXJzMT1cRT5cRVsxOzM7NDs1OzZsXEVbPzdoXEVbbVxFW3JcRVsySlxFW0gsCi0JcnMyPVxFW3JcRVttXEVbMkpcRVtIXEVbPzdoXEVbPzE7Mzs0OzZsXEVbNGxcRT5cRVs/MTAwMGxcRVs/MjVoLAotCXMwZHM9XEUoQiwgczFkcz1cRSgwLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVswbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRTdcRVs/NDdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csIHVzZT12dDEwMCtlbnEsCi0JdXNlPXJ4dnQrcGNma2V5cywgdXNlPXZ0MjIwK2tleXBhZCwKLSMgS2V5IENvZGVzIGZyb20gcnh2dCByZWZlcmVuY2U6Ci0jCi0jIE5vdGU6IFNoaWZ0ICsgRjEtRjEwIGdlbmVyYXRlcyBGMTEtRjIwCi0jCi0jIEZvciB0aGUga2V5cGFkLCB1c2UgU2hpZnQgdG8gdGVtcG9yYXJpbHkgb3ZlcnJpZGUgQXBwbGljYXRpb24tS2V5cGFkCi0jIHNldHRpbmcgdXNlIE51bV9Mb2NrIHRvIHRvZ2dsZSBBcHBsaWNhdGlvbi1LZXlwYWQgc2V0dGluZyBpZiBOdW1fTG9jawotIyBpcyBvZmYsIGVzY2FwZSBzZXF1ZW5jZXMgdG9nZ2xlIEFwcGxpY2F0aW9uLUtleXBhZCBzZXR0aW5nLgotIyBBbHNvIG5vdGUgdGhhdCB2YWx1ZXMgb2YgSG9tZSwgRW5kLCBEZWxldGUgbWF5IGhhdmUgYmVlbiBjb21waWxlZAotIyBkaWZmZXJlbnRseSBvbiB5b3VyIHN5c3RlbS4KLSMKLSMgICAgICAgICAgICAgICAgICAgTm9ybWFsICAgICAgIFNoaWZ0ICAgICAgICBDb250cm9sICAgICAgQ3RybCtTaGlmdAotIyAgVGFiICAgICAgICAgICAgICBeSSAgICAgICAgICAgRVNDIFsgWiAgICAgIF5JICAgICAgICAgICBFU0MgWyBaCi0jICBCYWNrU3BhY2UgICAgICAgIF5IICAgICAgICAgICBePyAgICAgICAgICAgXj8gICAgICAgICAgIF4/Ci0jICBGaW5kICAgICAgICAgICAgIEVTQyBbIDEgfiAgICBFU0MgWyAxICQgICAgRVNDIFsgMSBeICAgIEVTQyBbIDEgQAotIyAgSW5zZXJ0ICAgICAgICAgICBFU0MgWyAyIH4gICAgcGFzdGUgICAgICAgIEVTQyBbIDIgXiAgICBFU0MgWyAyIEAKLSMgIEV4ZWN1dGUgICAgICAgICAgRVNDIFsgMyB+ICAgIEVTQyBbIDMgJCAgICBFU0MgWyAzIF4gICAgRVNDIFsgMyBACi0jICBTZWxlY3QgICAgICAgICAgIEVTQyBbIDQgfiAgICBFU0MgWyA0ICQgICAgRVNDIFsgNCBeICAgIEVTQyBbIDQgQAotIyAgUHJpb3IgICAgICAgICAgICBFU0MgWyA1IH4gICAgc2Nyb2xsLXVwICAgIEVTQyBbIDUgXiAgICBFU0MgWyA1IEAKLSMgIE5leHQgICAgICAgICAgICAgRVNDIFsgNiB+ICAgIHNjcm9sbC1kb3duICBFU0MgWyA2IF4gICAgRVNDIFsgNiBACi0jICBIb21lICAgICAgICAgICAgIEVTQyBbIDcgfiAgICBFU0MgWyA3ICQgICAgRVNDIFsgNyBeICAgIEVTQyBbIDcgQAotIyAgRW5kICAgICAgICAgICAgICBFU0MgWyA4IH4gICAgRVNDIFsgOCAkICAgIEVTQyBbIDggXiAgICBFU0MgWyA4IEAKLSMgIERlbGV0ZSAgICAgICAgICAgRVNDIFsgMyB+ICAgIEVTQyBbIDMgJCAgICBFU0MgWyAzIF4gICAgRVNDIFsgMyBACi0jICBGMSAgICAgICAgICAgICAgIEVTQyBbIDExIH4gICBFU0MgWyAyMyB+ICAgRVNDIFsgMTEgXiAgIEVTQyBbIDIzIF4KLSMgIEYyICAgICAgICAgICAgICAgRVNDIFsgMTIgfiAgIEVTQyBbIDI0IH4gICBFU0MgWyAxMiBeICAgRVNDIFsgMjQgXgotIyAgRjMgICAgICAgICAgICAgICBFU0MgWyAxMyB+ICAgRVNDIFsgMjUgfiAgIEVTQyBbIDEzIF4gICBFU0MgWyAyNSBeCi0jICBGNCAgICAgICAgICAgICAgIEVTQyBbIDE0IH4gICBFU0MgWyAyNiB+ICAgRVNDIFsgMTQgXiAgIEVTQyBbIDI2IF4KLSMgIEY1ICAgICAgICAgICAgICAgRVNDIFsgMTUgfiAgIEVTQyBbIDI4IH4gICBFU0MgWyAxNSBeICAgRVNDIFsgMjggXgotIyAgRjYgICAgICAgICAgICAgICBFU0MgWyAxNyB+ICAgRVNDIFsgMjkgfiAgIEVTQyBbIDE3IF4gICBFU0MgWyAyOSBeCi0jICBGNyAgICAgICAgICAgICAgIEVTQyBbIDE4IH4gICBFU0MgWyAzMSB+ICAgRVNDIFsgMTggXiAgIEVTQyBbIDMxIF4KLSMgIEY4ICAgICAgICAgICAgICAgRVNDIFsgMTkgfiAgIEVTQyBbIDMyIH4gICBFU0MgWyAxOSBeICAgRVNDIFsgMzIgXgotIyAgRjkgICAgICAgICAgICAgICBFU0MgWyAyMCB+ICAgRVNDIFsgMzMgfiAgIEVTQyBbIDIwIF4gICBFU0MgWyAzMyBeCi0jICBGMTAgICAgICAgICAgICAgIEVTQyBbIDIxIH4gICBFU0MgWyAzNCB+ICAgRVNDIFsgMjEgXiAgIEVTQyBbIDM0IF4KLSMgIEYxMSAgICAgICAgICAgICAgRVNDIFsgMjMgfiAgIEVTQyBbIDIzICQgICBFU0MgWyAyMyBeICAgRVNDIFsgMjMgQAotIyAgRjEyICAgICAgICAgICAgICBFU0MgWyAyNCB+ICAgRVNDIFsgMjQgJCAgIEVTQyBbIDI0IF4gICBFU0MgWyAyNCBACi0jICBGMTMgICAgICAgICAgICAgIEVTQyBbIDI1IH4gICBFU0MgWyAyNSAkICAgRVNDIFsgMjUgXiAgIEVTQyBbIDI1IEAKLSMgIEYxNCAgICAgICAgICAgICAgRVNDIFsgMjYgfiAgIEVTQyBbIDI2ICQgICBFU0MgWyAyNiBeICAgRVNDIFsgMjYgQAotIyAgRjE1IChIZWxwKSAgICAgICBFU0MgWyAyOCB+ICAgRVNDIFsgMjggJCAgIEVTQyBbIDI4IF4gICBFU0MgWyAyOCBACi0jICBGMTYgKE1lbnUpICAgICAgIEVTQyBbIDI5IH4gICBFU0MgWyAyOSAkICAgRVNDIFsgMjkgXiAgIEVTQyBbIDI5IEAKLSMgIEYxNyAgICAgICAgICAgICAgRVNDIFsgMzEgfiAgIEVTQyBbIDMxICQgICBFU0MgWyAzMSBeICAgRVNDIFsgMzEgQAotIyAgRjE4ICAgICAgICAgICAgICBFU0MgWyAzMiB+ICAgRVNDIFsgMzIgJCAgIEVTQyBbIDMyIF4gICBFU0MgWyAzMiBACi0jICBGMTkgICAgICAgICAgICAgIEVTQyBbIDMzIH4gICBFU0MgWyAzMyAkICAgRVNDIFsgMzMgXiAgIEVTQyBbIDMzIEAKLSMgIEYyMCAgICAgICAgICAgICAgRVNDIFsgMzQgfiAgIEVTQyBbIDM0ICQgICBFU0MgWyAzNCBeICAgRVNDIFsgMzQgQAotIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbgotIyAgVXAgICAgICAgICAgICAgICBFU0MgWyBBICAgICAgRVNDIFsgYSAgICAgIEVTQyBPIGEgICAgICBFU0MgTyBBCi0jICBEb3duICAgICAgICAgICAgIEVTQyBbIEIgICAgICBFU0MgWyBiICAgICAgRVNDIE8gYiAgICAgIEVTQyBPIEIKLSMgIFJpZ2h0ICAgICAgICAgICAgRVNDIFsgQyAgICAgIEVTQyBbIGMgICAgICBFU0MgTyBjICAgICAgRVNDIE8gQwotIyAgTGVmdCAgICAgICAgICAgICBFU0MgWyBEICAgICAgRVNDIFsgZCAgICAgIEVTQyBPIGQgICAgICBFU0MgTyBECi0jICBLUF9FbnRlciAgICAgICAgIF5NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIE0KLSMgIEtQX0YxICAgICAgICAgICAgRVNDIE8gUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gUAotIyAgS1BfRjIgICAgICAgICAgICBFU0MgTyBRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyBRCi0jICBLUF9GMyAgICAgICAgICAgIEVTQyBPIFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIFIKLSMgIEtQX0Y0ICAgICAgICAgICAgRVNDIE8gUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gUwotIyAgWEtfS1BfTXVsdGlwbHkgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyBqCi0jICBYS19LUF9BZGQgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIGsKLSMgIFhLX0tQX1NlcGFyYXRvciAgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gbAotIyAgWEtfS1BfU3VidHJhY3QgICAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyBtCi0jICBYS19LUF9EZWNpbWFsICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIG4KLSMgIFhLX0tQX0RpdmlkZSAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gbwotIyAgWEtfS1BfMCAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyBwCi0jICBYS19LUF8xICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIHEKLSMgIFhLX0tQXzIgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gcgotIyAgWEtfS1BfMyAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyBzCi0jICBYS19LUF80ICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIHQKLSMgIFhLX0tQXzUgICAgICAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8gdQotIyAgWEtfS1BfNiAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyB2Ci0jICBYS19LUF83ICAgICAgICAgIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQyBPIHcKLSMgIFhLX0tQXzggICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNDIE8geAotIyAgWEtfS1BfOSAgICAgICAgICA5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0MgTyB5Ci0jCi0jIFRoZSBzb3VyY2UtY29kZSBmb3Igcnh2dCBhY3R1YWxseSBkZWZpbmVzIG1hcHBpbmdzIGZvciBGMjEtRjM1LCB1c2luZwotIyAiRVNDIFsgMzUgfiIgdG8gIkVTQyBbICA0OSB+Ii4gIEtleWJvYXJkcyB3aXRoIG1vcmUgdGhhbiAxMiBmdW5jdGlvbiBrZXlzCi0jIGFyZSByYXJlLCBzbyB0aGlzIGVudHJ5IHVzZXMgdGhlIHNoaWZ0LSBhbmQgY29udHJvbC1tb2RpZmllcnMgYXMgaW4KLSMgeHRlcm0rcGNma2V5cyB0byBkZWZpbmUga2V5cyBwYXN0IEYxMi4KLSMKLSMga0lDIGlzIG5vcm1hbGx5IG5vdCB1c2VkLCBzaW5jZSByeHZ0IHBlcmZvcm1zIGEgcGFzdGUgZm9yIHRoYXQgKHNoaWZ0ZWQKLSMgaW5zZXJ0KSwgdW5sZXNzIHByaXZhdGUgbW9kZSAzNSBpcyBzZXQuCi0jCi0jIGtETiwga0RONSwga0RONiwgZXRjIGFyZSBleHRlbnNpb25zIGJhc2VkIG9uIHRoZSBuYW1lcyBmcm9tIHh0ZXJtK3BjZmtleXMgLVRECi0jIFJlbW92ZWQga0RONiwgZXRjIChjb250cm9sK3NoaWZ0KSBzaW5jZSByeHZ0IGRvZXMgbm90IGltcGxlbWVudCB0aGlzIC1URAotcnh2dCtwY2ZrZXlzfGZyYWdtZW50IGZvciBQQy1zdHlsZSBma2V5cywKLQlrREM9XEVbMyQsIGtFTkQ9XEVbOCQsIGtIT009XEVbNyQsIGtJQz1cRVsyJCwga0xGVD1cRVtkLAotCWtOWFQ9XEVbNiQsIGtQUlY9XEVbNSQsIGtSSVQ9XEVbYywga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2VsPVxFWzhcXiwKLQlrZW5kPVxFWzh+LCBrZjE9XEVbMTF+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFWzEyfiwga2YyMD1cRVszNH4sIGtmMjE9XEVbMjMkLCBrZjIyPVxFWzI0JCwKLQlrZjIzPVxFWzExXF4sIGtmMjQ9XEVbMTJcXiwga2YyNT1cRVsxM1xeLCBrZjI2PVxFWzE0XF4sCi0Ja2YyNz1cRVsxNVxeLCBrZjI4PVxFWzE3XF4sIGtmMjk9XEVbMThcXiwga2YzPVxFWzEzfiwKLQlrZjMwPVxFWzE5XF4sIGtmMzE9XEVbMjBcXiwga2YzMj1cRVsyMVxeLCBrZjMzPVxFWzIzXF4sCi0Ja2YzND1cRVsyNFxeLCBrZjM1PVxFWzI1XF4sIGtmMzY9XEVbMjZcXiwga2YzNz1cRVsyOFxeLAotCWtmMzg9XEVbMjlcXiwga2YzOT1cRVszMVxeLCBrZjQ9XEVbMTR+LCBrZjQwPVxFWzMyXF4sCi0Ja2Y0MT1cRVszM1xeLCBrZjQyPVxFWzM0XF4sIGtmNDM9XEVbMjNALCBrZjQ0PVxFWzI0QCwKLQlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAotCWtmbmQ9XEVbMX4sIGtob21lPVxFWzd+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3NsdD1cRVs0fiwga0RDNT1cRVszXF4sIGtEQzY9XEVbM0AsIGtETj1cRVtiLCBrRE41PVxFT2IsCi0Ja0VORDU9XEVbOFxeLCBrRU5ENj1cRVs4QCwga0hPTTU9XEVbN1xeLCBrSE9NNj1cRVs3QCwKLQlrSUM1PVxFWzJcXiwga0lDNj1cRVsyQCwga0xGVDU9XEVPZCwga05YVDU9XEVbNlxeLAotCWtOWFQ2PVxFWzZALCBrUFJWNT1cRVs1XF4sIGtQUlY2PVxFWzVALCBrUklUNT1cRU9jLAotCWtVUD1cRVthLCBrVVA1PVxFT2EsCi0KLXJ4dnR8cnh2dCB0ZXJtaW5hbCBlbXVsYXRvciAoWCBXaW5kb3cgU3lzdGVtKSwKLQluY3ZALAotCWhwYT1cRVslaSVwMSVkRywga2YwPVxFWzIxfiwgc2dyMD1cRVttXDAxNywKLQl2cGE9XEVbJWklcDElZGQsIHVzZT1yeHZ0LWJhc2ljLCB1c2U9ZWNtYStjb2xvciwKLXJ4dnQtY29sb3J8cnh2dCB0ZXJtaW5hbCBlbXVsYXRvciAoWCBXaW5kb3cgU3lzdGVtKSwKLQl1c2U9cnh2dCwKLXJ4dnQtMjU2Y29sb3J8cnh2dCAyLjcuOSB3aXRoIHh0ZXJtIDI1Ni1jb2xvcnMsCi0JdXNlPXh0ZXJtKzI1NmNvbG9yLCB1c2U9cnh2dCwKLXJ4dnQtODhjb2xvcnxyeHZ0IDIuNy45IHdpdGggeHRlcm0gODgtY29sb3JzLAotCXVzZT14dGVybSs4OGNvbG9yLCB1c2U9cnh2dCwKLXJ4dnQteHBtfHJ4dnQgdGVybWluYWwgZW11bGF0b3IgKFggV2luZG93IFN5c3RlbSksCi0JdXNlPXJ4dnQsCi1yeHZ0LWN5Z3dpbnxyeHZ0IHRlcm1pbmFsIGVtdWxhdG9yIChYIFdpbmRvdyBTeXN0ZW0pIG9uIGN5Z3dpbiwKLQlhY3NjPTBcMzMzK1wyNTdcLFwyNTYtXF5gXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAotCXVzZT1yeHZ0LAotcnh2dC1jeWd3aW4tbmF0aXZlfHJ4dnQgdGVybWluYWwgZW11bGF0b3IgKG5hdGl2ZSBNUyBXaW5kb3cgU3lzdGVtIHBvcnQpIG9uIGN5Z3dpbiwKLQlhY3NjPTBcMzMzK1wyNTdcLFwyNTYtXF5gXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB+XDM3NiwKLQl1c2U9cnh2dC1jeWd3aW4sCi0KLSMgVGhpcyB2YXJpYW50IGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCByeHZ0IDIuNy43IHdoZW4gY29tcGlsZWQgd2l0aAotIyBOT19CUklHSFRDT0xPUiBkZWZpbmVkLiAgcnh2dCBuZWVkcyBtb3JlIHdvcmsuLi4KLXJ4dnQtMTZjb2xvcnx4dGVybSB3aXRoIDE2IGNvbG9ycyBsaWtlIGFpeHRlcm0sCi0JbmN2IzMyLCB1c2U9aWJtKzE2Y29sb3IsIHVzZT1yeHZ0LAotCi0jIG1yeHZ0IDAuNS4zCi0jCi0jIG1yeHZ0IGlzIGJhc2VkIG9uIHJ4dnQgMi43LjExLCBidXQgaGFzIGJ5IGRlZmF1bHQgWFRFUk1fRktFWVMgZGVmaW5lZCwgd2hpY2gKLSMgbWFrZXMgaXRzIGZ1bmN0aW9uLWtleXMgZGlmZmVyZW50IGZyb20gb3RoZXIgZmxhdm9ycyBvZiByeHZ0IC1URAotbXJ4dnR8bXVsdGl0YWJiZWQgcnh2dCwKLQl1c2U9eHRlcm0rcGNjMiwgdXNlPXh0ZXJtK3I2ZjIsIHVzZT1yeHZ0LAotCi0jIEZyb206IE1pY2hhZWwgSmVubmluZ3MgPG1lakB2YWxpbnV4LmNvbT4KLSMKLSMgRXRlcm0gMC45LjMKLSMKLSMgcmVtb3ZlZCBrZjAgd2hpY2ggY29uZmxpY3RzIHdpdGgga2YxMCAtVEQKLSMgcmVtb3ZlIGN2dmlzIHdoaWNoIGNvbmZsaWN0cyB3aXRoIGNub3JtIC1URAotIyBFdGVybSBkb2VzIG5vdCBpbXBsZW1lbnQgY29udHJvbC9zaGlmdCBjdXJzb3Iga2V5cyBzdWNoIGFzIGtETjYsIG9yIGtQUlYva05YVAotIyBidXQgZG9lcyBvdGhlcndpc2UgZm9sbG93IHRoZSByeHZ0K3BjZmtleXMgbW9kZWwgLVRECi0jIHJlbW92ZSBub253b3JraW5nIGZsYXNoIC1URAotIyByZW1vdmUga20gYXMgcGVyIHRhY2sgdGVzdCAtVEQKLUV0ZXJtfEV0ZXJtLWNvbG9yfEV0ZXJtIHdpdGggeHRlcm0tc3R5bGUgY29sb3Igc3VwcG9ydCAoWCBXaW5kb3cgU3lzdGVtKSwKLQlhbSwgYmNlLCBidywgZW8sIG1jNWksIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWJ0bnMjNSwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIGxtIzAsIG5jdkAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKTAsCi0JaG9tZT1cRVtILCBocGE9XEVbJWklcDElZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLAotCWlzMT1cRVs/NDdsXEU+XEVbPzFsLAotCWlzMj1cRVtyXEVbbVxFWzJKXEVbSFxFWz83aFxFWz8xOzM7NDs2bFxFWzRsLCBrTlhUQCwKLQlrUFJWQCwga2ExPVxFWzd+LCBrYTM9XEVbNX4sIGtiMj1cRU91LCBrYmVnPVxFT3UsIGticz1eSCwKLQlrYzE9XEVbOH4sIGtjMz1cRVs2fiwga2VudD1cRU9NLCBraGxwPVxFWzI4fiwga21vdXM9XEVbTSwKLQltYzQ9XEVbNGksIG1jNT1cRVs1aSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sCi0Jcm1hbT1cRVs/N2wsIHJtY3VwPVxFWzJKXEVbPzQ3bFxFOCwgcm1pcj1cRVs0bCwgcm1reD0sCi0Jcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRT5cRVsxOzM7NDs1OzZsXEVbPzdoXEVbbVxFW3JcRVsySlxFW0gsCi0JcnMyPVxFW3JcRVttXEVbMkpcRVtIXEVbPzdoXEVbPzE7Mzs0OzZsXEVbNGxcRT5cRVs/MTAwMGxcRVs/MjVoLAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwgc21jdXA9XEU3XEVbPzQ3aCwKLQlzbWlyPVxFWzRoLCBzbWt4PSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXZwYT1cRVslaSVwMSVkZCwgdXNlPXZ0MTAwK2VucSwgdXNlPXJ4dnQrcGNma2V5cywKLQl1c2U9ZWNtYStjb2xvciwKLQotRXRlcm0tMjU2Y29sb3J8RXRlcm0gd2l0aCB4dGVybSAyNTYtY29sb3JzLAotCXVzZT14dGVybSsyNTZjb2xvciwgdXNlPUV0ZXJtLAotCi1FdGVybS04OGNvbG9yfEV0ZXJtIHdpdGggODggY29sb3JzLAotCXVzZT14dGVybSs4OGNvbG9yLCB1c2U9RXRlcm0sCi0KLSMgQmFzZWQgb24gcnh2dCAyLjQuOCwgaXQgaGFzIGEgZmV3IGRpZmZlcmVuY2VzIGluIGtleSBiaW5kaW5ncwotYXRlcm18QWZ0ZXJTdGVwIHRlcm1pbmFsLAotCWticz1cMTc3LCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgdXNlPXJ4dnQsCi0KLSMgeGl0ZXJtICAwLjUtNS4yCi0jIFRoaXMgaXMgbm90IGJhc2VkIG9uIHh0ZXJtJ3Mgc291cmNlLi4uCi0jIHZ0dGVzdCBzaG93cyBzZXZlcmFsIHByb2JsZW1zIHdpdGgga2V5Ym9hcmQsIGN1cnNvci1tb3ZlbWVudHMuCi0jIHNlZSBhbHNvIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC94dGVybS94dGVybS5mYXEuaHRtbCNidWdfeGl0ZXJtCi14aXRlcm18aW50ZXJuYXRpb25hbGl6ZWQgdGVybWluYWwgZW11bGF0b3IgZm9yIFgsCi0Ja21ALAotCWticz1cMTc3LCBrZGNoMT1cRVszfiwgdXNlPWtsb25lK2NvbG9yLCB1c2U9eHRlcm0tcjYsCi0KLSMgVGhlc2UgKHh0ZXJtYyBhbmQgeHRlcm1tKSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCBTb2xhcmlzLiAgVGhleSByZWZlciB0byBhCi0jIHZhcmlhbnQgb2YgeHRlcm0gd2hpY2ggaXMgYXBwYXJlbnRseSBubyBsb25nZXIgc3VwcG9ydGVkLCBidXQgYXJlIGludGVyZXN0aW5nCi0jIGJlY2F1c2UgdGhleSBpbGx1c3RyYXRlIFNWcjQgY3Vyc2VzIG1vdXNlIGNvbnRyb2xzIC0gVC5EaWNrZXkKLXh0ZXJtbXx4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAobW9ub2Nyb21lKSwKLQlPVGJzLCBhbSwga20sIG1pciwgbXNnciwgeGVubCwKLQlidG5zIzMsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGlua0AsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFWzFELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLJDwzPiwgZW5hY3M9XEUoQlxFKTAsIGdldG09XEVbJXAxJWRZLAotCWhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVPRCwKLQlrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZW5kPVxFW1ksIGtmMD1cRU95LAotCWtmMTA9XEVPWSwga2YxMT1cRU9aLCBrZjEyPVxFT0EsIGtmNT1cRU9ULCBrZjY9XEVPVSwKLQlrZjc9XEVPViwga2Y4PVxFT1csIGtmOT1cRU9YLCBraG9tZT1cRVtILCBrbW91cz1cRVteXywKLQlrbnA9XEVbVSwga3BwPVxFW1YsIHJjPVxFOCwgcmVxbXA9XEVbNDkyWiwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1hY3M9Xk8sIHJtY3VwPVxFQDBcRVs/NHIsIHJtc289XEVbbSwKLQlyczE9XEU+XEVbMTszOzQ7NTs2bFxFWz83aFxFW21cRVtyXEVbMkpcRVtILAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRUAwXEVbPzRzXEVbPzRoXEVAMSwKLQlzbXNvPVxFWzdtLCB0YmM9XEVbM2csIHVzZT12dDEwMCtmbmtleXMsCi0KLXh0ZXJtY3x4dGVybSB0ZXJtaW5hbCBlbXVsYXRvciAoY29sb3IpLAotCWNvbG9ycyM4LCBuY3YjNywgcGFpcnMjNjQsCi0Jb3A9XEVbMTAwbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZXRiPVxFWzQlPyVwMSV7MX0lPSV0NCVlJXAxJXszfSU9JXQ2JWUlcDElezR9JT0ldDElZSVwMSV7Nn0lPSV0MyVlJXAxJWQlO20sCi0Jc2V0Zj1cRVszJT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXVzZT14dGVybW0sCi0KLSMgRnJvbTogRGF2aWQgSi4gTWFjS2VuemllIDxkam1AdmEucHVibml4LmNvbT4gMjAgQXByIDE5OTUKLSMgSGVyZSdzIGEgdGVybWNhcCBlbnRyeSBJJ3ZlIGJlZW4gdXNpbmcgZm9yIHh0ZXJtX2NvbG9yLCB3aGljaCBjb21lcwotIyB3aXRoIEJTRC9PUyAyLjAsIGFuZCB0aGUgWDExUjYgY29udHJpYiB0YXBlIHRvbyBJIHRoaW5rLiAgQmVzaWRlcyB0aGUKLSMgY29sb3Igc3R1ZmYsIEkgYWxzbyBoYXZlIGEgc3RhdHVzIGxpbmUgZGVmaW5lZCBhcyB0aGUgd2luZG93IG1hbmFnZXIKLSMgdGl0bGUgYmFyLiBbSSBoYXZlIHRyYW5zbGF0ZWQgaXQgdG8gdGVybWluZm8gLS0gRVNSXQoteHRlcm0tcGNvbG9yfHh0ZXJtIHdpdGggY29sb3IgdXNlZCBmb3IgaGlnaGxpZ2h0cyBhbmQgc3RhdHVzIGxpbmUsCi0JYm9sZD1cRVsxbVxFWzQzbSwgcmV2PVxFWzdtXEVbMzRtLCBzbXNvPVxFWzdtXEVbMzFtLAotCXNtdWw9XEVbNG1cRVs0Mm0sIHVzZT14dGVybStzbCwgdXNlPXh0ZXJtLXI2LAotCi0jIEhQIHNoaXBzIHRoaXMgKEhQVVggOSBhbmQgMTApLCBleGNlcHQgZm9yIHRoZSBwYiM5NjAwIHdoaWNoIHdhcyBtZXJnZWQgaW4KLSMgZnJvbSBCU0QgdGVybWNhcC4gIChocHRlcm06ICBhZGRlZCBlbXB0eSA8YWNzYz4sIHdlIGhhdmUgbm8gaWRlYSB3aGF0IEFDUwotIyBjaGFycyBsb29rIGxpa2UgLS1lc3IpCi1ocHRlcm18WC1ocHRlcm18aHAgWDExIHRlcm1pbmFsIGVtdWxhdG9yLAotCWFtLCBkYSwgZGIsIG1pciwgeGhwLAotCWNvbHMjODAsIGxoIzIsIGxpbmVzIzI0LCBsbSMwLCBsdyM4LCBubGFiIzgsIHBiIzk2MDAsIHhtYyMwLAotCWFjc2M9LCBiZWw9XkcsIGJvbGQ9XEUmZEIsIGNidD1cRWksIGNsZWFyPVxFJmEweTBDXEVKLCBjcj1eTSwKLQljdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsIGN1cD1cRSZhJXAxJWR5JXAyJWRDLAotCWN1dTE9XEVBLCBkY2gxPVxFUCwgZGltPVxFJmRILCBkbDE9XEVNLCBlZD1cRUokPDE+LCBlbD1cRUssCi0JaHBhPVxFJmElcDElZEMsIGh0PV5JLCBodHM9XEUxLCBpbDE9XEVMLCBpbmQ9XkosIGticz1eSCwKLQlrY2xyPVxFSiwga2N0YWI9XEUyLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAotCWtjdXUxPVxFQSwga2RjaDE9XEVQLCBrZGwxPVxFTSwga2VkPVxFSiwga2VsPVxFSywga2YxPVxFcCwKLQlrZjI9XEVxLCBrZjM9XEVyLCBrZjQ9XEVzLCBrZjU9XEV0LCBrZjY9XEV1LCBrZjc9XEV2LCBrZjg9XEV3LAotCWtob21lPVxFaCwga2h0cz1cRTEsIGtpY2gxPVxFUSwga2lsMT1cRUwsIGtpbmQ9XEVTLCBrbGw9XEVGLAotCWtucD1cRVUsIGtwcD1cRVYsIGtyaT1cRVQsIGtybWlyPVxFUiwga3RiYz1cRTMsIG1lbWw9XEVsLAotCW1lbXU9XEVtLCBwZmtleT1cRSZmJXAxJWRrJXAyJWwlZEwlcDIlcywKLQlwZmxvYz1cRSZmMWElcDElZGslcDIlbCVkTCVwMiVzLAotCXBmeD1cRSZmMmElcDElZGslcDIlbCVkTCVwMiVzLAotCXBsbj1cRSZmJXAxJWRrJXAyJWwlZGQwTCVwMiVzLCByZXY9XEUmZEIsIHJpPVxFVCwKLQlybWFjcz1eTywgcm1pcj1cRVIsIHJta3g9XEUmczBBLCBybWxuPVxFJmpALCBybXNvPVxFJmRALAotCXJtdWw9XEUmZEAsCi0Jc2dyPVxFJmQlPyVwNyV0JXsxMTV9JWMlOyVwMSVwMyV8JXA2JXwlezJ9JSolcDIlezR9JSolKyVwNCUrJXA1JXs4fSUqJSslezY0fSUrJWMlPyVwOSV0JSdcMDE2JyVjJWUlJ1wwMTcnJWMlOywKLQlzZ3IwPVxFJmRALCBzbWFjcz1eTiwgc21pcj1cRVEsIHNta3g9XEUmczFBLCBzbWxuPVxFJmpCLAotCXNtc289XEUmZEosIHNtdWw9XEUmZEQsIHRiYz1cRTMsIHZwYT1cRSZhJXAxJWRZLAotIyBIUFVYIDExIHByb3ZpZGVzIGEgY29sb3IgdmVyc2lvbi4KLWhwdGVybS1jb2xvcnxIUCBYMTEgdGVybWluYWwgZW11bGF0b3Igd2l0aCBjb2xvciwKLQljY2MsCi0JY29sb3JzIzY0LCBwYWlycyM4LAotCWhvbWU9XEUmYTB5MEMsCi0JaW5pdHA9XEUmdiVwMiVkYSVwMyVkYiVwNCVkYyVwNSVkeCVwNiVkeSVwNyVkeiVwMSVkSSwKLQlvcD1cRSZ2MFMsIHNjcD1cRSZ2JXAxJWRTLCB1c2U9aHB0ZXJtLAotCi0jIFRoaXMgZW50cnkgZGVzY3JpYmVzIGFuIHh0ZXJtIHdpdGggU3VuLXN0eWxlIGZ1bmN0aW9uIGtleXMgZW5hYmxlZAotIyB2aWEgdGhlIFggcmVzb3VyY2Ugc2V0dGluZyAieHRlcm0qc3VuRnVuY3Rpb25LZXlzOnRydWUiCi0jIFRvIHVuZGVyc3RhbmQgPGtmMTE+LzxrZjEyPiBub3RlIHRoYXQgTDEsTDIgYW5kIEYxMSxGMTIgYXJlIHRoZSBzYW1lLgotIyBUaGUgPGtmMTM+Li4uPGtmMjA+IGtleXMgYXJlIEwzLUwxMC4gIFdlIGRvbid0IHNldCA8a2YxNj1cRVsxOTd6PgotIyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgc2VlbiBhcyA8a2NweT4uCi0jIFRoZSA8a2YzMT4uLi48a2Y0NT4ga2V5cyBhcmUgUjEtUjE1LiAgV2UgdHJlYXQgc29tZSBvZiB0aGVzZSBpbiBhY2NvcmRhbmNlCi0jIHdpdGggdGhlaXIgU3VuIGtleWJvYXJkIGxhYmVscyBpbnN0ZWFkLgotIyBGcm9tOiBTaW1vbiBKLiBHZXJyYXR5IDxzamdAemVuLnZvaWQub3ouYXU+IDEwIEphbiAxOTk2Ci14dGVybS1zdW58eHRlcm0gd2l0aCBzdW5GdW5jdGlvbktleXMgdHJ1ZSwKLQlrYjI9XEVbMjE4eiwga2NweT1cRVsxOTd6LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLAotCWtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtkY2gxPVxFWzN6LCBrZW5kPVxFWzIyMHosCi0Ja2VudD1cRU9NLCBrZjE9XEVbMjI0eiwga2YxMD1cRVsyMzN6LCBrZjExPVxFWzE5MnosCi0Ja2YxMj1cRVsxOTN6LCBrZjEzPVxFWzE5NHosIGtmMTQ9XEVbMTk1eiwga2YxNT1cRVsxOTZ6LAotCWtmMTc9XEVbMTk4eiwga2YxOD1cRVsxOTl6LCBrZjE5PVxFWzIwMHosIGtmMj1cRVsyMjV6LAotCWtmMjA9XEVbMjAxeiwga2YzPVxFWzIyNnosIGtmMzE9XEVbMjA4eiwga2YzMj1cRVsyMDl6LAotCWtmMzM9XEVbMjEweiwga2YzND1cRVsyMTF6LCBrZjM1PVxFWzIxMnosIGtmMzY9XEVbMjEzeiwKLQlrZjM4PVxFWzIxNXosIGtmND1cRVsyMjd6LCBrZjQwPVxFWzIxN3osIGtmNDI9XEVbMjE5eiwKLQlrZjQ0PVxFWzIyMXosIGtmNDU9XEVbMjIyeiwga2Y0Nj1cRVsyMzR6LCBrZjQ3PVxFWzIzNXosCi0Ja2Y1PVxFWzIyOHosIGtmNj1cRVsyMjl6LCBrZjc9XEVbMjMweiwga2Y4PVxFWzIzMXosCi0Ja2Y5PVxFWzIzMnosIGtmbmQ9XEVbMjAweiwga2hscD1cRVsxOTZ6LCBraG9tZT1cRVsyMTR6LAotCWtpY2gxPVxFWzJ6LCBrbnA9XEVbMjIyeiwga3BwPVxFWzIxNnosIGt1bmQ9XEVbMTk1eiwKLQl1c2U9eHRlcm0tYmFzaWMsCi14dGVybXMtc3VufHNtYWxsICg4MHgyNCkgeHRlcm0gd2l0aCBzdW5GdW5jdGlvbktleXMgdHJ1ZSwKLQljb2xzIzgwLCBsaW5lcyMyNCwgdXNlPXh0ZXJtLXN1biwKLQotIyBUaGlzIGlzIGZvciB0aGUgZXh0ZW5zaWJsZSB0ZXJtaW5hbCBlbXVsYXRvciBvbiB0aGUgWDExUjYgY29udHJpYiB0YXBlLgotIyBJdCBjb3JyZXNwb25kcyB0byBlbXUncyBpbnRlcm5hbCBlbXVsYXRpb246Ci0jCWVtdSAtdGVybSBlbXUKLSMgZW11J3MgZGVmYXVsdCBzZXRzIFRFUk0gdG8gInh0ZXJtIiwgYnV0IHRoYXQgZG9lc24ndCB3b3JrIHdlbGwgLVRECi0jIGZpeGVzOiByZW1vdmUgYm9ndXMgcm1hY3Mvc21hY3MsIGNoYW5nZSBvYyB0byBvcCwgYWRkIGJjZSwgYW0gLVRECi0jIGZpeGVzOiBhZGQgY2l2aXMsIGNub3JtLCBzZ3IgLVRECi1lbXV8ZW11IG5hdGl2ZSBtb2RlLAotCWFtLCBiY2UsIG1pciwgbXNnciwgeG9uLAotCWNvbG9ycyMxNSwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LCB2dCMyMDAsCi0JYWNzYz02MWFcMjAyZlwyNjBnMmpcMjEza1wyMTRsXDIxNW1cMjE2blwyMTdvXDIyMHFcMjIyc1wyMjR0XDIyNXVcMjI2dlwyMjd3XDIzMHhcMjMxflwyNDQsCi0JYmVsPV5HLCBibGluaz1cRVcsIGJvbGQ9XEVVLCBjaXZpcz1cRVosIGNsZWFyPVxFUFxFRTA7MDssCi0JY25vcm09XEVhLCBjcj1eTSwgY3NyPVxFayVwMSVkOyVwMiVkOywgY3ViPVxFcS0lcDElZDssCi0JY3ViMT1eSCwgY3VkPVxFcCVwMSVkOywgY3VkMT1cRUIsIGN1Zj1cRXElcDElZDssIGN1ZjE9XEVELAotCWN1cD1cRUUlcDElZDslcDIlZDssIGN1dT1cRXAtJXAxJWQ7LCBjdXUxPVxFQSwKLQlkY2g9XEVJJXAxJWQ7LCBkY2gxPVxFSTE7LCBkbD1cRVIlcDElZDssIGRsMT1cRVIxOywKLQllY2g9XEVqJXAxJWQ7LCBlZD1cRU4sIGVsPVxFSywgZWwxPVxFTCwgaG9tZT1cRUUwOzA7LCBodD1eSSwKLQlodHM9XEVoLCBpbD1cRVElcDElZDssIGlsMT1cRVExOywgaW5kPVxFRywKLQlpczI9XEVTXEVyMDtcRXMwOywga2JzPV5ILCBrY3ViMT1cRUMsIGtjdWQxPVxFQiwga2N1ZjE9XEVELAotCWtjdXUxPVxFQSwga2RjaDE9XDE3Nywga2VudD1eTSwga2YwPVxFRjAwLCBrZjE9XEVGMDEsCi0Ja2YxMD1cRUYxMCwga2YxMT1cRUYxMSwga2YxMj1cRUYxMiwga2YxMz1cRUYxMywga2YxND1cRUYxNCwKLQlrZjE1PVxFRjE1LCBrZjE2PVxFRjE2LCBrZjE3PVxFRjE3LCBrZjE4PVxFRjE4LCBrZjE5PVxFRjE5LAotCWtmMj1cRUYwMiwga2YyMD1cRUYyMCwga2YzPVxFRjAzLCBrZjQ9XEVGMDQsIGtmNT1cRUYwNSwKLQlrZjY9XEVGMDYsIGtmNz1cRUYwNywga2Y4PVxFRjA4LCBrZjk9XEVGMDksIGtmbmQ9XEVmaW5kLAotCWtpY2gxPVxFaW5zLCBrbnA9XEVuZXh0LCBrcHA9XEVwcmlvciwga3NsdD1cRXNlbCwKLQlvcD1cRXMwO1xFcjA7LCByZXY9XEVULCByaT1cRUYsIHJtaXI9XEVYLCBybXNvPVxFUywgcm11bD1cRVMsCi0JcnMyPVxFU1xFczA7XEVyMDssIHNldGFiPVxFcyVpJXAxJWQ7LAotCXNldGFmPVxFciVpJXAxJWQ7LAotCXNncj1cRVMlPyVwMSV0XEVUJTslPyVwMiV0XEVWJTslPyVwMyV0XEVUJTslPyVwNCV0XEVXJTslPyVwNiV0XEVVJTssCi0Jc2dyMD1cRVMsIHNtaXI9XEVZLCBzbXNvPVxFVCwgc211bD1cRVYsIHRiYz1cRWosCi0KLSMgdnQyMjAgVGVybWluZm8gZW50cnkgZm9yIHRoZSBFbXUgZW11bGF0aW9uLCBjb3JyZXNwb25kcyB0bwotIwllbXUgLXRlcm0gdnQyMjAKLSMgd2l0aCBOdW1Mb2NrIHNldCAodG8gbWFrZSB0aGUga2V5cGFkIHRyYW5zbWl0IGtmMC1rZjkpLgotIyBmaXhlczogYWRkIGFtLCB4ZW5sLCBjb3JyZWN0ZWQgc2dyMCAtVEQKLWVtdS0yMjB8RW11LTIyMCAodnQyMDAtN2JpdCBtb2RlKSwKLQlhbSwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMyMDAsCi0JYWNzYz1hYWZmZ2dqamtrbGxtbW5ub29xcXNzdHR1dXZ2d3d4eH5+LCBiZWw9XkcsCi0JYmxpbms9XEVbMDs1bSwgYm9sZD1cRVswOzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFWzFELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbMUIsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbMUMsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFWzFBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbMVAsIGRsPVxFWyVwMSVkTSwgZGwxPVxFWzFNLAotCWVkPVxFWzBKLCBlbD1cRVswSywgZWwxPVxFWzFLLCBlbmFjcz1cRSkwLCBob21lPVxFW0gsIGh0PV5JLAotCWh0cz1cRUgsIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MzAwLCBpbD1cRVslcDElZEwsCi0JaWwxPVxFWzFMLCBpbmQ9XEVELCBpczI9XEU+XEVbPzFsXEVbPzNsXEVbNGxcRVs/N2gsCi0Ja2JzPV5ILCBrY21kPVxFWzI5fiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2VudD1cRU9NLCBrZjA9XEVPcCwga2YxPVxFT3EsCi0Ja2YxMD1cRU9sLCBrZjExPVxFT20sIGtmMTI9XEVPbiwga2YxMz1cRU9QLCBrZjE0PVxFT1EsCi0Ja2YxNT1cRU9SLCBrZjE2PVxFT1MsIGtmMj1cRU9yLCBrZjI2PVxFWzE3fiwga2YyNz1cRVsxOH4sCi0Ja2YyOD1cRVsxOX4sIGtmMjk9XEVbMjB+LCBrZjM9XEVPcywga2YzMD1cRVsyMX4sCi0Ja2YzND1cRVsyNn4sIGtmMzc9XEVbMzF+LCBrZjM4PVxFWzMyfiwga2YzOT1cRVszM34sCi0Ja2Y0PVxFT3QsIGtmNDA9XEVbMzR+LCBrZjU9XEVPdSwga2Y2PVxFT3YsIGtmNz1cRU93LAotCWtmOD1cRU94LCBrZjk9XEVPeSwga2ZuZD1cRVsxfiwga2hscD1cRVsyOH4sIGtpY2gxPVxFWzJ+LAotCWtucD1cRVs2fiwga3BwPVxFWzV+LCBrc2x0PVxFWzR+LCByYz1cRTgsIHJldj1cRVswOzdtLAotCXJpPVxFTSwgcm1hY3M9Xk8sIHJtY3VwPVxFPiwgcm1reD1cRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cRVs0bFxFWzM0bFxFWz8xbFxFWz8zbFxFWz81bFxFWz83aCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW20sIHNtYWNzPV5OLCBzbWN1cD1cRVs/MWxcRT0sIHNta3g9XEU9LAotCXNtc289XEVbMDs3bSwgc211bD1cRVswOzRtLCB0YmM9XEVbM2csCi0jIEEgY29tbWVyY2lhbCBwcm9kdWN0LCBSZXBvcnRlZGx5IGEgdmVyc2lvbiBvZiBYdGVybSB3aXRoIGFuIE9QRU4gTE9PSyBVSSwKLSMgcHJpbnQgaW50ZXJmYWNlLCBBTlNJIFgzLjY0IGNvbG91ciBlc2NhcGUgc2VxdWVuY2VzLCBldGMuICBOZXdzZ3JvdXAgcG9zdGluZ3MKLSMgaW5kaWNhdGUgdGhhdCBpdCBlbXVsYXRlcyBtb3JlIHRoYW4gb25lIHRlcm1pbmFsLCBidXQgaW5jb21wbGV0ZWx5LgotIwotIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBhIEZyZWVCU0QgYnVnLXJlcG9ydCBieSBEYW5pZWwgUnVkeSA8ZGNydWR5QHBhY2JlbGwubmV0PgotIyBJdCBpcyBiYXNlZCBvbiB2dDEwMidzIGVudHJ5LCB3aXRoIHNvbWUgc3VidGxlIGRpZmZlcmVuY2VzLCBidXQgYWxzbwotIwloYXMgc3RhdHVzIGxpbmUKLSMJc3VwcG9ydHMgQU5TSSBjb2xvcnMgKGV4Y2VwdCBmb3IgJ29wJyBzdHJpbmcpCi0jCWFwcGFyZW50bHkgaW1wbGVtZW50cyBhbHRlcm5hdGUgc2NyZWVuIGxpa2UgeHRlcm0KLSMJZG9lcyBub3QgdXNlIHBhZGRpbmcsIG9mIGNvdXJzZS4KLW12dGVybXx2djEwMHxTd2l0Y2hUZXJtIGFrYSBtdlRFUk0sCi0JYW0sIGVzbG9rLCBocywga20sIG1pciwgbXNnciwgeGVubCwKLQljb2xvcnMjOCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBhaXJzIzY0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlkc2w9XEVbP0UsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSyQ8Mz4sIGVuYWNzPVxFKEJcRSkwLAotCWZzbD1cRVs/RiwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwga2JzPV5ILAotCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtmMD1cRU95LAotCWtmMTA9XEVPeCwga2Y1PVxFT3QsIGtmNj1cRU91LCBrZjc9XEVPdiwga2Y4PVxFT2wsIGtmOT1cRU93LAotCW9wPVxFWzEwMG0sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYWNzPV5PLAotCXJtY3VwPVxFWzJKXEVbPzQ3bFxFOCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwKLQlybXVsPVxFW20sCi0JcnMyPVxFPlxFWzE7Mzs0OzU7NmxcRVs/N2hcRVsxMDBtXEVbbVxFW3JcRVsySlxFW0gsCi0Jc2M9XEU3LCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNncj1cRVswJT8lcDElcDYlfCV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtY3VwPVxFN1xFWz80N2gsCi0Jc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywKLQl0c2w9XEVbP0VcRVs/JWklcDElZFQsIHVzZT12dDEwMCtmbmtleXMsCi0KLSMjIyBNVEVSTQotIwotIyBUaGlzIGFwcGxpY2F0aW9uIGlzIGF2YWlsYWJsZSBieSBlbWFpbCBmcm9tIDxtb3VzZUBSb2RlbnRzLk1vbnRyZWFsLlFDLkNBPi4KLSMKLSMgIm10ZXJtIC10eXBlIGFuc2kiIHNldHMgJFRFUk0gdG8gImFuc2kiCi1tdGVybS1hbnNpfEFOU0kgZW11bGF0aW9uLAotCWFtLCBidywgbWlyLCBtc2dyLAotCWl0IzgsCi0JYWNzYz1gYGFhZmZnZ2lpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osCi0JZWw9XEVbSywgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZGAsIGh0PV5JLCBpY2gxPSwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVbUywgaW5kbj1cRVslcDElZFMsCi0JaW52aXM9XEVbOG0sIGlzMj1cRSkwXDAxNywga2JzPV5ILCBuZWw9XEVFLCByZXY9XEVbN20sCi0Jcmk9XEVbVCwgcmluPVxFWyVwMSVkVCwgcm1hY3M9Xk8sIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLAotCXJtdWw9XEVbMjRtLAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW20sIHNtYWNzPV5OLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXZwYT1cRVslaSVwMSVkZCwKLSMgbXRlcm0gbm9ybWFsbHkgc2V0cyAkVEVSTSB0byAibXRlcm0iCi1tdGVybXxtb3VzZS1zdW58RGVyIE1vdXNlIHRlcm0sCi0JYW0sIGJ3LCBtaXIsCi0JaXQjOCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eTiwgY3VmMT1eUywKLQljdXA9XDAwNiVwMSVkLiVwMiVkLiwgY3V1MT1eWCwgZGNoMT1eWSwgZGwxPV5LLCBlZD1eQiwgZWw9XkMsCi0JaG9tZT1eUCwgaHQ9XkksIGlsMT1eQSwgaW5kPV5VLCBrYnM9XkgsIGxsPV5SLCBuZWw9Xk1eVSwgcmk9XlcsCi0Jcm1pcj1eTywgcm1zbz1eVCwgc21pcj1eUSwgc21zbz1eViwKLSMgIm10ZXJtIC10eXBlIGRlY2Fuc2kiIHNldHMgJFRFUk0gdG8gImRlY2Fuc2kiCi0jCi0jIG5vdGU6IGtkY2gxLCBrZm5kLCBrc2x0IGFyZSBpbiB0aGUgc291cmNlIGNvZGUsIGJ1dCBkbyBub3Qgd29yayAtVEQKLWRlY2Fuc2l8QU5TSSBlbXVsYXRpb24gd2l0aCBERUMgY29tcGF0aWJpbGl0eSBoYWNrcywKLQlhbSwgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbG9ycyM4LCBpdCM4LCBwYWlycyM2NCwKLQlhY3NjPWBgYWFmZmdnaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwKLQlkbDE9XEVbTSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywgZW5hY3M9XEUoQlxFKTAsCi0JaG9tZT1cRVtILCBocGE9XEVbJWklcDElZGAsIGh0PV5JLCBpY2gxPSwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XEVbUywgaW5kbj1cRVslcDElZFMsIGludmlzPVxFWzhtLAotCWlzMj1cRSkwXEVbclwwMTcsIGticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwKLQlrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZGNoMT1cRVszfiwga2YxPVxFWzExfiwKLQlrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwKLQlrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwKLQlrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMj1cRVsxMn4sIGtmMjA9XEVbMzR+LAotCWtmMz1cRVsxM34sIGtmND1cRVsxNH4sIGtmNT1cRVsxNX4sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ZuZD1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwKLQlrcHA9XEVbNX4sIGtzbHQ9XEVbNH4sIG5lbD1cRUUsIG9wPVxFWzBtLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRVtULCByaW49XEVbJXAxJWRULCBybWFjcz1eTywgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbSwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB1Nj1cRVslaSVkOyVkUiwKLQl1Nz1cRVs2biwgdnBhPVxFWyVpJXAxJWRkLAotCi0jIyMjIE1HUgotIwotIyBNR1IgaXMgYSBCZWxsIExhYnMgd2luZG93IHN5c3RlbSBsaWdodGVyLXdlaWdodCB0aGFuIFguCi0jIFRoZXNlIGVudHJpZXMgZGVzY3JpYmUgTUdSJ3MgeHRlcm0tZXF1aXZhbGVudC4KLSMgVGhleSBhcmUgY291cnRlc3kgb2YgVmluY2VudCBCcm9tYW4gPGJyb21hbkBub3NjLm1pbD4gMTQgSmFuIDE5OTcKLSMKLQotbWdyfEJlbGxjb3JlIE1HUiAobm9uIFgpIHdpbmRvdyBzeXN0ZW0gdGVybWluYWwgZW11bGF0aW9uLAotCWFtLCBrbSwKLQliZWw9XkcsIGJvbGQ9XEUybiwgY2l2aXM9XEU5aCwgY2xlYXI9XkwsIGNub3JtPVxFaCwgY3I9Xk0sCi0JY3NyPVxFJXAxJWQ7JXAyJWR0LCBjdWIxPV5ILCBjdWQxPVxFZiwgY3VmMT1cRXIsCi0JY3VwPVxFJXAyJWQ7JXAxJWRNLCBjdXUxPVxFdSwgY3Z2aXM9XEUwaCwKLQlkY2g9XEUlcDElZEUkPDU+LCBkY2gxPVxFRSwgZGw9XEUlcDElZGQkPDMqPiwKLQlkbDE9XEVkJDwzPiwgZWQ9XEVDLCBlbD1cRWMsIGhkPVxFMTsyZiwgaHQ9XkksIGh1PVxFMTsydSwKLQlpY2g9XEUlcDElZEEkPDU+LCBpY2gxPVxFQSwgaWw9XEUlcDElZGEkPDMqPiwKLQlpbDE9XEVhJDwzPiwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwgbmVsPV5NXkosIHJldj1cRTFuLCBybWFtPVxFNVMsCi0Jcm1zbz1cRTBuLCBybXVsPVxFMG4sIHNncjA9XEUwbiwgc21hbT1cRTVzLCBzbXNvPVxFMW4sCi0Jc211bD1cRTRuLAotbWdyLXN1bnxNZ3Igd2luZG93IHdpdGggU3VuIGtleWJvYXJkLAotCWthMT1cRVsyMTR6LCBrYTM9XEVbMjE2eiwga2IyPVxFWzIxOHosIGtjMT1cRVsyMjB6LAotCWtjMz1cRVsyMjJ6LCBrY3B5PVxFWzE5N3osIGtlbmQ9XEVbMjIweiwga2VudD1cRVsyNTB6LAotCWtmMT1cRVsyMjR6LCBrZjEwPVxFWzIzM3osIGtmMTE9XEVbMjM0eiwga2YxMj1cRVsyMzV6LAotCWtmMj1cRVsyMjV6LCBrZjM9XEVbMjI2eiwga2Y0PVxFWzIyN3osIGtmNT1cRVsyMjh6LAotCWtmNj1cRVsyMjl6LCBrZjc9XEVbMjMweiwga2Y4PVxFWzIzMXosIGtmOT1cRVsyMzJ6LAotCWtmbmQ9XEVbMjAweiwga2hscD1cRVsyMDd6LCBraG9tZT1cRVsyMTR6LCBrbnA9XEVbMjIyeiwKLQlrb3BuPVxFWzE5OHosIGtwcD1cRVsyMTZ6LCBrdW5kPVxFWzE5NXosIHVzZT1tZ3IsCi1tZ3ItbGludXh8TWdyIHdpbmRvdyB3aXRoIExpbnV4IGtleWJvYXJkLAotCWthMT1cRVtILCBrYTM9XEVbNX4sIGtiMj1cRVtHLCBrYzE9XEVbWSwga2MzPVxFWzZ+LAotCWtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjA9XEVbW0osIGtmMT1cRVtbQSwga2YxMD1cRVsyMX4sCi0Ja2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjI9XEVbW0IsIGtmMz1cRVtbQywga2Y0PVxFW1tELAotCWtmNT1cRVtbRSwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIHVzZT1tZ3IsCi0KLSMjIyMjIyMjIFVOSVggVklSVFVBTCBURVJNSU5BTFMsIFZJUlRVQUwgQ09OU09MRVMsIEFORCBURUxORVQgQ0xJRU5UUwotIwotCi0jIENvbHVtYnVzIFVOSVggdmlydHVhbCB0ZXJtaW5hbC4gVGhpcyB0ZXJtaW5hbCBhbHNvIGFwcGVhcnMgaW4KLSMgVU5JWCA0LjAgYW5kIHN1Y2Nlc3NvcnMgYXMgbGluZSBkaXNjaXBsaW5lIDEgKD8pLCBidXQgaXMKLSMgdW5kb2N1bWVudGVkIGFuZCBkb2VzIG5vdCByZWFsbHkgd29yayBxdWl0ZSByaWdodC4KLWNidW5peHxjYiB1bml4IHZpcnR1YWwgdGVybWluYWwsCi0JT1RicywgYW0sIGRhLCBkYiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbG0jMCwKLQliZWw9XkcsIGNsZWFyPVxFTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRUclcDIlYyVwMSVjLCBjdXUxPVxFQSwgZGNoMT1cRU0sIGRsMT1cRU4sIGVkPVxFTCwKLQllbD1cRUssIGljaDE9XEVPLCBpbDE9XEVQLCBpbmQ9XkosIGtjdWIxPVxFRCwga2N1ZDE9XEVCLAotCWtjdWYxPVxFQywga2N1dTE9XEVBLCBraG9tZT1cRUUsIHJtc289XEViXkQsIHJtdWw9XEViXkEsCi0Jc21zbz1cRWFeRCwgc211bD1cRWFeQSwKLSMgKHZyZW1vdGU6IHJlbW92ZWQgb2Jzb2xldGUgIjpubEA6IiAtLSBlc3IpCi12cmVtb3RlfHZpcnR1YWwgcmVtb3RlIHRlcm1pbmFsLAotCWFtQCwKLQljb2xzIzc5LCB1c2U9Y2J1bml4LAotCi1wdHl8NGJzZCBwc2V1ZG8gdGVsZXR5cGUsCi0JY3VwPVxFRyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgcm1zbz1cRWIkLCBybXVsPVxFYiEsCi0Jc21zbz1cRWEkLCBzbXVsPVxFYSEsIHVzZT1jYnVuaXgsCi0KLSMgVGhlIGNvZGVzIHN1cHBvcnRlZCBieSB0aGUgdGVybS5lbCB0ZXJtaW5hbCBlbXVsYXRpb24gaW4gR05VIEVtYWNzIDE5LjMwCi1ldGVybXxnbnUgZW1hY3MgdGVybS5lbCB0ZXJtaW5hbCBlbXVsYXRpb24sCi0JYW0sIG1pciwgeGVubCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBlbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGljaD1cRVslcDElZEAsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCByZXY9XEVbN20sCi0Jcm1jdXA9XEVbMkpcRVs/NDdsXEU4LCBybWlyPVxFWzRsLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3IwPVxFW20sIHNtY3VwPVxFN1xFWz80N2gsIHNtaXI9XEVbNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwKLQotIyBFbnRyaWVzIGZvciB1c2UgYnkgdGhlIGBzY3JlZW4nIHByb2dyYW0gYnkgSnVlcmdlbiBXZWlnZXJ0LAotIyBNaWNoYWVsIFNjaHJvZWRlciwgT2xpdmVyIExhdW1hbm4uICBUaGUgc2NyZWVuIGFuZAotIyBzY3JlZW4tdyBlbnRyaWVzIGNhbWUgd2l0aCB2ZXJzaW9uIDMuNy4xLiAgVGhlIHNjcmVlbjIgYW5kIHNjcmVlbjMgZW50cmllcwotIyBjb21lIGZyb20gVW5pdmVyc2l0eSBvZiBXaXNjb25zaW4gYW5kIG1heSBiZSBvbGRlci4KLSMgKHNjcmVlbjogYWRkZWQgPGNub3JtPiBvbiBBTlNJIG1vZGVsIC0tIGVzcikKLSMKLSMgJ3NjcmVlbicgZGVmaW5lcyBleHRlbnNpb25zIHRvIHRlcm1jYXAuICBTb21lIGFyZSB1c2VkIGluIGl0cyB0ZXJtaW5hbAotIyBkZXNjcmlwdGlvbjoKLSMgICAgICBHMCAgIChib29sKSAgVGVybWluYWwgY2FuIGRlYWwgd2l0aCBJU08gMjAyMiAgZm9udCAgc2VsZWN0aW9uIHNlcXVlbmNlcy4KLSMgICAgICBBWCAgIChib29sKSAgRG9lcyAgdW5kZXJzdGFuZCBBTlNJIHNldCBkZWZhdWx0IGZnL2JnIGNvbG9yCi0jICAgICAgICAgICAgICAgICAgIChcRVszOW0gLyBcRVs0OW0pLgotIyAgICAgIFMwICAgKHN0cikgICBTd2l0Y2ggY2hhcnNldCAnRzAnIHRvIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4KLSMgICAgICBFMCAgIChzdHIpICAgU3dpdGNoIGNoYXJzZXQgJ0cwJyBiYWNrIHRvIHN0YW5kYXJkIGNoYXJzZXQuCi0jCi0jIHRlc3RlZCB3aXRoIHNjcmVlbiAzLjA5LjA4Ci1zY3JlZW58VlQgMTAwL0FOU0kgWDMuNjQgdmlydHVhbCB0ZXJtaW5hbCwKLQlPVGJzLCBPVHB0LCBhbSwga20sIG1pciwgbXNnciwgeGVubCwgRzAsCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBwYWlycyM2NCwKLQlhY3NjPSsrXCxcLC0tLi4wMGBgYWFmZmdnaGhpaWpqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbMzRoXEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAotCWN2dmlzPVxFWzM0bCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgZW5hY3M9XEUoQlxFKTAsCi0JZmxhc2g9XEVnLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaXMyPVxFKTAsIGticz1eSCwga2NidD1cRVtaLAotCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2RjaDE9XEVbM34sIGtlbmQ9XEVbNH4sIGtmMT1cRU9QLCBrZjEwPVxFWzIxfiwKLQlrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGttb3VzPVxFW00sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCW5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYWNzPV5PLAotCXJtY3VwPVxFWz8xMDQ5bCwgcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjNtLAotCXJtdWw9XEVbMjRtLCByczI9XEVjXEVbPzEwMDBsXEVbPzI1aCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMSV0OzMlOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRVs/MTA0OWgsIHNtaXI9XEVbNGgsCi0Jc21reD1cRVs/MWhcRT0sIHNtc289XEVbM20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywgRTA9XEUoQiwKLQlTMD1cRSglcDElYywgdXNlPWVjbWErY29sb3IsCi0jIFRoZSBiY2UgYW5kIHN0YXR1cy1saW5lIGVudHJpZXMgYXJlIGZyb20gc2NyZWVuIDMuOS4xMyAoYW5kIHJlcXVpcmUgc29tZQotIyBjaGFuZ2VzIHRvIC5zY3JlZW5yYykuCi1zY3JlZW4tYmNlfFZUIDEwMC9BTlNJIFgzLjY0IHZpcnR1YWwgdGVybWluYWwgd2l0aCBiY2UsCi0JYmNlLCB1c2U9c2NyZWVuLAotc2NyZWVuLXN8VlQgMTAwL0FOU0kgWDMuNjQgdmlydHVhbCB0ZXJtaW5hbCB3aXRoIGhhcmRzdGF0dXMgbGluZSwKLQlkc2w9XEVfXEVcXCwgZnNsPVxFXFwsIHRzbD1cRV8sIHVzZT1zY3JlZW4sCi0KLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBFbnRyaWVzIGZvciBHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzLgotIyBUaG9zZSB2YXJpYXRpb25zIHBlcm1pdCB0byBiZW5lZml0IGZyb20gMTYgY29sb3JzIHBhbGV0dGUsIGFuZCBmcm9tCi0jIGJvbGQgZm9udCBhbmQgYmxpbmsgYXR0cmlidXRlIHNlcGFyYXRlZCBmcm9tIGJyaWdodCBjb2xvcnMuIEJ1dCB0aGV5Ci0jIGFyZSBsZXNzIHBvcnRhYmxlIHRoYW4gdGhlIGdlbmVyaWMgInNjcmVlbiIgOCBjb2xvciBlbnRyaWVzOiBUaGVpcgotIyB1c2FnZSBtYWtlcyByZWFsIHNlbnNlIG9ubHkgaWYgdGhlIHRlcm1pbmFscyB5b3UgYXR0YWNoIGFuZCByZWF0dGFjaAotIyBkbyBhbGwgc3VwcG9ydCAxNiBjb2xvciBwYWxldHRlLgotCi1zY3JlZW4tMTZjb2xvcnxHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzLAotCXVzZT1pYm0rMTZjb2xvciwgdXNlPXNjcmVlbiwKLQotc2NyZWVuLTE2Y29sb3Itc3xHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzIGFuZCBzdGF0dXMgbGluZSwKLQl1c2U9aWJtKzE2Y29sb3IsIHVzZT1zY3JlZW4tcywKLQotc2NyZWVuLTE2Y29sb3ItYmNlfEdOVSBTY3JlZW4gd2l0aCAxNiBjb2xvcnMgYW5kIEJDRSwKLQl1c2U9aWJtKzE2Y29sb3IsIHVzZT1zY3JlZW4tYmNlLAotCi1zY3JlZW4tMTZjb2xvci1iY2Utc3xHTlUgU2NyZWVuIHdpdGggMTYgY29sb3JzLCBCQ0UsIGFuZCBzdGF0dXMgbGluZSwKLQliY2UsIHVzZT1pYm0rMTZjb2xvciwgdXNlPXNjcmVlbi1zLAotCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRW50cmllcyBmb3IgR05VIFNjcmVlbiA0LjAyIHdpdGggLS1lbmFibGUtY29sb3JzMjU2LgotCi1zY3JlZW4tMjU2Y29sb3J8R05VIFNjcmVlbiB3aXRoIDI1NiBjb2xvcnMsCi0JY2NjQCwKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXNjcmVlbiwKLQotc2NyZWVuLTI1NmNvbG9yLXN8R05VIFNjcmVlbiB3aXRoIDI1NiBjb2xvcnMgYW5kIHN0YXR1cyBsaW5lLAotCWNjY0AsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1zY3JlZW4tcywKLQotc2NyZWVuLTI1NmNvbG9yLWJjZXxHTlUgU2NyZWVuIHdpdGggMjU2IGNvbG9ycyBhbmQgQkNFLAotCWNjY0AsCi0JaW5pdGNALCB1c2U9eHRlcm0rMjU2Y29sb3IsIHVzZT1zY3JlZW4tYmNlLAotCi1zY3JlZW4tMjU2Y29sb3ItYmNlLXN8R05VIFNjcmVlbiB3aXRoIDI1NiBjb2xvcnMsIEJDRSwgYW5kIHN0YXR1cyBsaW5lLAotCWJjZSwgY2NjQCwKLQlpbml0Y0AsIHVzZT14dGVybSsyNTZjb2xvciwgdXNlPXNjcmVlbi1zLAotCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotIyBSZWFkIHRoZSBmaW5lIG1hbnBhZ2U6Ci0jICAgICAgIFdoZW4gIHNjcmVlbiAgdHJpZXMgIHRvICBmaWd1cmUgIG91dCAgYSAgdGVybWluYWwgbmFtZSBmb3IKLSMgICAgICAgaXRzZWxmLCBpdCBmaXJzdCBsb29rcyBmb3IgYW4gZW50cnkgbmFtZWQgInNjcmVlbi48dGVybT4iLAotIyAgICAgICB3aGVyZSAgPHRlcm0+ICBpcyB0aGUgY29udGVudHMgb2YgeW91ciAkVEVSTSB2YXJpYWJsZS4gIElmCi0jICAgICAgIG5vIHN1Y2ggZW50cnkgZXhpc3RzLCBzY3JlZW4gdHJpZXMgInNjcmVlbiIgKG9yICJzY3JlZW4tdyIKLSMgICAgICAgaWYgdGhlIHRlcm1pbmFsIGlzIHdpZGUgKDEzMiBjb2xzIG9yIG1vcmUpKS4gIElmIGV2ZW4gdGhpcwotIyAgICAgICBlbnRyeSBjYW5ub3QgYmUgZm91bmQsICJ2dDEwMCIgaXMgdXNlZCBhcyBhIHN1YnN0aXR1dGUuCi0jCi0jIE5vdHdpdGhzdGFuZGluZyB0aGUgbWFucGFnZSwgc2NyZWVuIHVzZXMgaXRzIG93biBub3Rpb24gb2YgdGhlIHRlcm1jYXAKLSMgYW5kIHNvbWUga2V5cyBmcm9tICJzY3JlZW4uPHRlcm0+IiBhcmUgaWdub3JlZC4gIEhlcmUgaXMgYW4gZW50cnkgd2hpY2gKLSMgY292ZXJzIHRob3NlICh0ZXN0ZWQgd2l0aCBzY3JlZW4gNC4wMC4wMikgLVRECi1zY3JlZW4rZmtleXN8ZnVuY3Rpb24ta2V5cyBhY2NvcmRpbmcgdG8gc2NyZWVuLAotCWtlbmQ9XEVbNH4sIGtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZm5kQCwKLQlraG9tZT1cRVsxfiwga3NsdEAsCi0jCi0jIEhlcmUgYXJlIGEgZmV3IGN1c3RvbWl6ZWQgZW50cmllcyB3aGljaCBhcmUgdXNlZnVsIC1URAotIwotIyBOb3RlczoKLSMgKGEpCXNjcmVlbiBkb2VzIG5vdCBzdXBwb3J0IGludmlzLgotIyAoYikJc2NyZWVuJ3MgaW1wbGVtZW50YXRpb24gb2YgYncgaXMgaW5jb3JyZWN0IGFjY29yZGluZyB0byB0YWNrLgotIyAoYykJc2NyZWVuIGFwcGVhcnMgdG8gaGFyZGNvZGUgdGhlIHN0cmluZ3MgZm9yIGtob21lL2tlbmQsIG1ha2luZyBpdAotIwluZWNlc3NhcnkgdG8gb3ZlcnJpZGUgdGhlICJ1c2U9IiBjbGF1c2UncyB2YWx1ZXMgKHNjcmVlbitma2V5cykuCi0jIChkKQlzY3JlZW4gc2V0cyAkVEVSTUNBUCB0byBhIHRlcm1jYXAtZm9ybWF0dGVkIGNvcHkgb2YgdGhlICdzY3JlZW4nIGVudHJ5LAotIwl3aGljaCBpcyBOT1QgdGhlIHNhbWUgYXMgdGhlIHRlcm1pbmZvIHNjcmVlbi48dGVybT4uCi0jIChlKQl3aGVuIHNjcmVlbiBmaW5kcyBvbmUgb2YgdGhlc2UgY3VzdG9taXplZCBlbnRyaWVzLCBpdCBzZXRzICRURVJNIHRvCi0jCW1hdGNoLiAgSGVuY2UsIG5vICJzY3JlZW4ueHRlcm0iIGVudHJ5IGlzIHByb3ZpZGVkLCBzaW5jZSB0aGF0IHdvdWxkCi0jCWNyZWF0ZSBoZWFydGJ1cm4gZm9yIHBlb3BsZSBydW5uaW5nIHJlbW90ZSB4dGVybSdzLgotIwotIwl4dGVybSAoLXhmcmVlODYgb3IgLXI2KSBkb2VzIG5vdCBub3JtYWxseSBzdXBwb3J0IGtJQywga05YVCBhbmQga1BSVgotIwlzaW5jZSB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbnMgb3ZlcnJpZGUgdGhlIGJ1aWx0LWluIGtleWNvZGUKLSMJdHJhbnNsYXRpb24uICBUaGV5IGFyZSBzdXBwcmVzc2VkIGhlcmUgdG8gc2hvdyB3aGF0IGlzIHRlc3RlZCBieSB0YWNrLgotc2NyZWVuLnh0ZXJtLXhmcmVlODZ8c2NyZWVuLnh0ZXJtLW5ld3xzY3JlZW4gY3VzdG9taXplZCBmb3IgbW9kZXJuIHh0ZXJtLAotCWJjZUAsIGJ3LAotCWludmlzQCwga0lDQCwga05YVEAsIGtQUlZALCBtZW1sQCwgbWVtdUAsCi0Jc2dyPSU/JXA5JXRcRSgwJWVcRShCJTtcRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20sCi0JdXNlPXNjcmVlbitma2V5cywgdXNlPXh0ZXJtLW5ldywKLSMgeHRlcm0tcjYgZG9lcyBub3QgcmVhbGx5IHN1cHBvcnQga2hvbWUva2VuZCB1bmxlc3MgaXQgaXMgcHJvcHBlZCB1cCBieQotIyB0aGUgdHJhbnNsYXRpb25zIHJlc291cmNlLgotc2NyZWVuLnh0ZXJtLXI2fHNjcmVlbiBjdXN0b21pemVkIGZvciBYMTFSNiB4dGVybSwKLQlidywgdXNlPXNjcmVlbitma2V5cywgdXNlPXh0ZXJtLXI2LAotIyBDb2xvciBhcHBsaWNhdGlvbnMgcnVubmluZyBpbiBzY3JlZW4gYW5kIFRlcmFUZXJtIGRvIG5vdCBwbGF5IHdlbGwgdG9nZXRoZXIKLSMgb24gU29sYXJpcyBiZWNhdXNlIFN1bidzIGN1cnNlcyBpbXBsZW1lbnRhdGlvbiBnZXRzIGNvbmZ1c2VkLgotc2NyZWVuLnRlcmF0ZXJtfGRpc2FibGUgbmN2IGluIHRlcmF0ZXJtLAotCW5jdiMxMjcsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwaVwzMTZqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCi0JdXNlPXNjcmVlbitma2V5cywgdXNlPXNjcmVlbiwKLSMgT3RoZXIgdGVybWluYWxzCi1zY3JlZW4ucnh2dHxzY3JlZW4gaW4gcnh2dCwKLQlidywKLQljdnZpc0AsIGZsYXNoQCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywKLQlrY3V1MT1cRU9BLCB1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9dnQxMDArZW5xLAotCXVzZT1yeHZ0K3BjZmtleXMsIHVzZT12dDIyMCtrZXlwYWQsIHVzZT1zY3JlZW4sCi0jIGZpeCB0aGUgYmFja3NwYWNlIGtleQotc2NyZWVuLmxpbnV4fHNjcmVlbiBpbiBsaW51eCBjb25zb2xlLAotCWJ3LAotCWticz1cMTc3LCBrY2J0QCwgdXNlPXNjcmVlbitma2V5cywgdXNlPXNjcmVlbiwKLXNjcmVlbi5tbHRlcm18c2NyZWVuIGluIG1sdGVybSwKLQl1c2U9c2NyZWVuK2ZrZXlzLCB1c2U9bWx0ZXJtLAotCi1zY3JlZW4td3xWVCAxMDAvQU5TSSBYMy42NCB2aXJ0dWFsIHRlcm1pbmFsIHdpdGggMTMyIGNvbHMsCi0JY29scyMxMzIsIHVzZT1zY3JlZW4sCi0KLXNjcmVlbjJ8b2xkIFZUIDEwMC9BTlNJIFgzLjY0IHZpcnR1YWwgdGVybWluYWwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2J0PVxFW1osIGNsZWFyPVxFWzJKXEVbSCwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLAotCWVsPVxFW0ssIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPSwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKLQlrY3V1MT1cRUEsIGtmMD1cRX4sIGtmMT1cRVMsIGtmMj1cRVQsIGtmMz1cRVUsIGtmND1cRVYsCi0Ja2Y1PVxFVywga2Y2PVxFUCwga2Y3PVxFUSwga2Y4PVxFUiwga2Y5PVxFMEksIGtob21lPVxFSCwKLQluZWw9Xk1eSiwgcmM9XEU4LCByaT1cRU0sIHJtaXI9XEVbNGwsIHJtc289XEVbMjNtLAotCXJtdWw9XEVbMjRtLCByczE9XEVjLCBzYz1cRTcsIHNncjA9XEVbbSwgc21pcj1cRVs0aCwKLQlzbXNvPVxFWzNtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0jIChzY3JlZW4zOiByZW1vdmVkIHVua25vd24gIjp4djpMUDpHMDoiIC0tIGVzcikKLXNjcmVlbjN8b2xkZXIgVlQgMTAwL0FOU0kgWDMuNjQgdmlydHVhbCB0ZXJtaW5hbCwKLQlrbSwgbWlyLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwKLQljcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaXMyPVxFKTAsIGticz1eSCwga2N1YjE9XEVPRCwKLQlrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZjE9XEVPUCwga2YyPVxFT1EsCi0Ja2YzPVxFT1IsIGtmND1cRU9TLCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtaXI9XEVbNGwsIHJta3g9XEU+LCBybXNvPVxFWzIzbSwgcm11bD1cRVsyNG0sIHJzMT1cRWMsCi0Jc2M9XEU3LCBzZ3IwPVxFW20sIHNtaXI9XEVbNGgsIHNta3g9XEU9LCBzbXNvPVxFWzNtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywKLQotIyBGcmFuY2VzY28gUG90b3J0aSA8Ri5Qb3RvcnRpQGNudWNlLmNuci5pdD46Ci0jIE5DU0EgdGVsbmV0IGlzIG9uZSBvZiB0aGUgbW9zdCB1c2VkIHRlbG5ldCBjbGllbnRzIGZvciB0aGUgTWFjaW50b3NoLiAgSXQgaGFzCi0jIGJlZW4gbWFpbnRhaW5lZCB1bnRpbCByZWNlbnRseSBieSB0aGUgTmF0aW9uYWwgQ2VudGVyIGZvciBTdXBlcmNvbXB1dGVyCi0jIEFwcGxpY2F0aW9ucywgYW5kIGl0IGlzIGZlYXR1cmUgcmljaCwgc3RhYmxlIGFuZCBmcmVlLiAgSXQgY2FuIGJlIGRvd25sb2FkZWQKLSMgZnJvbSB3d3cubmNzYS5lZHUuICBUaGlzIHRlcm1pbmZvIGRlc2NyaXB0aW9uIGZpbGUgaXMgYmFzZWQgb24geHRlcm0tdnQyMjAsCi0jIHh0ZXJtK3NsLCBhbmQgdGhlIGRvY3MgYXQgTkNTQS4gIEl0IHdvcmtzIHdlbGwuCi0jCi0jIE5DU0EgVGVsbmV0IDIuNiBmb3IgTWFjaW50b3NoIGluIHZ0MjIwIDgtYml0IGVtdWxhdGlvbiBtb2RlCi0jIFRoZSB0ZXJtaW5hbCBvcHRpb25zIHNob3VsZCBiZSBzZXQgYXMgZm9sbG93czoKLSMgICAgICAgICBYdGVybSBzZXF1ZW5jZXMgT04KLSMgICAgICAgICB1c2UgVlQgd3JhcCBtb2RlIE9OCi0jICAgICAgICAgdXNlIEVtYWNzIGFycm93IGtleXMgT0ZGCi0jICAgICAgICAgQ1RSTC1DT01ORCBpcyBFbWFjcyBtZXRhIE9OCi0jICAgICAgICAgOCBiaXQgbW9kZSBPTgotIyAgICAgICAgIGFuc3dlcmJhY2sgc3RyaW5nOiAibmNzYS12dDIyMC04IgotIyAgICAgICAgIHNldHVwIGtleXM6IGFsbCBkaXNhYmxlZAotIwotIyBBcHBsaWNhdGlvbiBtb2RlIGlzIG5vdCB1c2VkLgotIwotIyBPdGhlciBzcGVjaWFsIG1hcHBpbmdzOgotIwlBcHBsZQkJVlQyMjAKLSMJSEVMUCAJCUZpbmQKLSMJSE9NRQkJSW5zZXJ0IGhlcmUKLSMJUEFHRVVQCQlSZW1vdmUKLSMJREVMCQlTZWxlY3QKLSMJRU5ECQlQcmV2IFNjcmVlbgotIwlQQUdFRE9XTglOZXh0IFNjcmVlbgotIwotIyBUaG91Z2ggaXQgc3VwcG9ydHMgQU5TSSBjb2xvciwgTkNTQSBUZWxuZXQgdXNlcyBjb2xvciB0byByZXByZXNlbnQgYmxpbmtpbmcKLSMgdGV4dC4KLSMKLSMgVGhlIHN0YXR1cy1saW5lIG1hbmlwdWxhdGlvbiBpcyBhIG1hcHBpbmcgb2YgdGhlIHh0ZXJtLWNvbXBhdGlibGUgY29udHJvbAotIyBzZXF1ZW5jZXMgZm9yIHNldHRpbmcgdGhlIHdpbmRvdy10aXRsZS4gIFNvIHlvdSBtdXN0IHVzZSB0c2wgYW5kIGZzbCBpbgotIyBwYWlycywgc2luY2UgdGhlIGxhdHRlciBlbmRzIHRoZSBzdHJpbmcgdGhhdCBpcyBsb2FkZWQgdG8gdGhlIHdpbmRvdy10aXRsZS4KLW5jc2EtbXxuY3NhLXZ0MjIwLTh8TkNTQSBUZWxuZXQgMi42IGZvciBNYWNpbnRvc2ggaW4gdnQyMjAtOCBtb2RlLAotCWFtLCBocywga20sIG1pciwgbXNnciwgeGVubCwKLQlhY3NjPWBgYWFmZmdnaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWRzbD1cRV0wO1wwMDcsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywgZW5hY3M9XEUpMCwKLQlmbGFzaD1cRVs/NWhcRVs/NWwsIGZzbD1eRywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRALCBpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XG4kPDE1MCo+LAotCWlzMj1cRTdcRVtyXEVbbVxFWz83aFxFWz8xOzQ7NmxcRVs0bFxFOFxFPiwga2JzPV5ILAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XEVbNH4sIGtlbmQ9XEVbNX4sIGtmMT1cRVsxN34sIGtmMTA9XEVbMjh+LAotCWtmMTE9XEVbMjl+LCBrZjEyPVxFWzMxfiwga2YxMz1cRVszMn4sIGtmMTQ9XEVbMzN+LAotCWtmMTU9XEVbMzR+LCBrZjI9XEVbMTgsIGtmMz1cRVsxOX4sIGtmND1cRVsyMH4sIGtmNT1cRVsyMX4sCi0Ja2Y2PVxFWzIzfiwga2Y3PVxFWzI0fiwga2Y4PVxFWzI1fiwga2Y5PVxFWzI2fiwga2hscD1cRVsxfiwKLQlraG9tZT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbM34sIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXJjPVxFOCwgcmV2PVxFWzdtLCByZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwgcmk9XEVNLAotCXJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLCBybWN1cD1cRVsySlxFOCwgcm1pcj1cRVs0bCwKLQlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCi0JcnMyPVxFN1xFW3JcRThcRVttXEVbPzdoXEVbPzE7NDs2bFxFWzRsXEU+LCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMSVwMyV8JXQ7NyU7bSU/JXA5JXRcRSgwJWVcRShCJTssCi0Jc2dyMD1cRVttXEUoQiwgc21hY3M9XEUoMCwgc21hbT1cRVs/N2gsIHNtY3VwPVxFNywKLQlzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csIHRzbD1cRV0wOywKLQl1OD1cRVs/NjI7MTs2YywgdXNlPWFuc2krZW5xLAotbmNzYXxOQ1NBIFRlbG5ldCAyLjcgZm9yIE1hY2ludG9zaCBpbiB2dDIyMC04IG1vZGUsCi0JdXNlPW5jc2EtbSwgdXNlPWtsb25lK2NvbG9yLAotbmNzYS1uc3xOQ1NBIFRlbG5ldCAyLjcgZm9yIE1hY2ludG9zaCBpbiB2dDIyMC04IG1vZGUsCi0JaHNALAotCWRzbEAsIGZzbEAsIHRzbEAsIHVzZT1uY3NhLAotbmNzYS1tLW5zfE5DU0EgVGVsbmV0IDIuNiBmb3IgTWFjaW50b3NoIGluIHZ0MjIwLTggbW9kZSwKLQloc0AsCi0JZHNsQCwgZnNsQCwgdHNsQCwgdXNlPW5jc2EtbSwKLSMgYWx0ZXJuYXRlIC1URDoKLSMgVGhlIGRvY3VtZW50ZWQgZnVuY3Rpb24ta2V5IG1hcHBpbmcgcmVmZXJzIHRvIHRoZSBBcHBsZSBFeHRlbmRlZCBLZXlib2FyZAotIyAoZS5nLiwgTkNTQSBUZWxuZXQncyBGMSBjb3JyZXNwb25kcyB0byBhIFZUMjIwIEY2KS4gIFdlIHVzZSB0aGUgVlQyMjAtc3R5bGUKLSMgY29kZXMsIGhvd2V2ZXIsIHNpbmNlIHRoZSBudW1lcmljIGtleXBhZCAoVlQxMDApIFBGMS1QRjQgYXJlIGF2YWlsYWJsZSBvbgotIyBzb21lIGtleWJvYXJkcyBhbmQgbWFueSBhcHBsaWNhdGlvbnMgcmVxdWlyZSB0aGVzZSBhcyBGMS1GNC4KLSMKLW5jc2EtdnQyMjB8TkNTQSBUZWxuZXQgdXNpbmcgdnQyMjAtY29tcGF0aWJsZSBmdW5jdGlvbiBrZXlzLAotCWtmMT1cRU9QLCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LAotCWtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LAotCWtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMj1cRU9RLAotCWtmMjA9XEVbMzR+LCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwgdXNlPW5jc2EsCi0KLSMjIyMgUGlsb3QgUHJvIFBhbG0tVG9wCi0jCi0jIFRlcm1jYXAgZm9yIFRvcCBHdW4gVGVsbmV0IGFuZCBTU0ggb24gdGhlIFBhbG0gUGlsb3QuCi0jIGh0dHA6Ly93d3cuYWkvfmlhbmcvVEdzc2gvCi1waWxvdHx0Z3RlbG5ldHxUb3AgR3VuIFRlbG5ldCBvbiB0aGUgUGFsbSBQaWxvdCBQcm9mZXNzaW9uYWwsCi0JT1RicywgYW0sIHhlbmwsCi0JY29scyMzOSwgbGluZXMjMTYsCi0JYmVsPV5HLCBjbGVhcj1cRWMsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1cD1cRW0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGhvbWU9XEVtXHNccywgaHQ9XkksCi0JaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwga25wPV5MLCBrcHA9XkssIG5lbD1cRW1+XHMsCi0Jcm1zbz1cRUIsIHNtc289XEViLAotCi0jIEZyb206IEZlZGVyaWNvIEJpYW5jaGkgPGJpYW5jaGlAd3d3LmFydGUudW5pcGkuaXQ+Ci0jIFRoZXNlIGVudHJpZXMgYXJlIGZvciB0aGUgRW1iZWRkYWJsZSBMaW51eCBLZXJuZWwgU3lzdGVtIChFTEtTKQotIyBwcm9qZWN0IC0gYW4gaGVhdmlseSBzdHJpcHBlZCBkb3duIExpbnV4IHRvIGJlIHJ1biBvbiAxNiBiaXQKLSMgYm94ZXMgb3IsIGV2ZW50dWFsbHksIHRvIGJlIHVzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcyAtIGFuZCBoYXZlIGJlZW4KLSMgYWRhcHRlZCBmcm9tIHRoZSBzdG9jayBFTEtTIHRlcm1jYXAuIFRoZSBwcm9qZWN0IGl0c2VsZiBsb29rcyBzdGFsbGVkLAotIyBhbmQgdGhlIGxhdGVzdCBpbXByb3ZlbWVudHMgSSBrbm93IG9mIGRhdGUgYmFjayB0byBNYXJjaCAyMDAwLgotIwotIyBUbyBjb3BlIHdpdGggdGhlIEVMS1MgZHVtYiBjb25zb2xlIEkgYWRkZWQgYW4gImVsa3MtZ2xhc3N0dHkiIGVudHJ5OwotIyBhcyBhbiBhZGRlZCBib251cywgdGhpcyBkZWFscyB3aXRoIGFsbCB0aGUgY2FwYWJpbGl0aWVzIGNvbW1vbiB0bwotIyBib3RoIFZUNTIgYW5kIEFOU0kgKG9yLCBldmVudHVhbGx5LCAic3BlY2lhbCIpIG1vZGVzLgotCi1lbGtzLWdsYXNzdHR5fEVMS1MgZ2xhc3MtVFRZIGNhcGFiaWxpdGllcywKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQliZWw9XkcsIGNyPV5NLCBodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQluZWw9Xk1eSiwKLQotZWxrcy12dDUyfEVMS1MgdnQ1MiBjb25zb2xlLAotCWNsZWFyPVxFSFxFSiwgY3ViMT1cRUQsIGN1ZDE9XEVCLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZWw9XEVLLAotCWhvbWU9XEVILCB1c2U9ZWxrcy1nbGFzc3R0eSwKLQotZWxrcy1hbnNpfEVMS1MgQU5TSSBjb25zb2xlLAotCWNsZWFyPVxFW0hcRVsySiwgY3ViMT1cRVtELCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZWw9XEVbSywgaG9tZT1cRVtILAotCXJtc289XEVbbSwgc21zbz1cRVs3bSwgdXNlPWVsa3MtZ2xhc3N0dHksCi0KLSMgQXMgYSBtYXR0ZXIgb2YgZmFjdCwgRUxLUyAwLjAuODMgb24gUENzIGRlZmF1bHRzIHRvIEFOU0kgZW11bGF0aW9uCi0jIGluc3RlYWQgb2YgVlQ1MiwgYnV0IHRoZSAiZWxrcyIgZW50cnkgc3RpbGwgcmVmZXJzIHRvIHRoZSBsYXR0ZXIuCi0KLWVsa3N8ZGVmYXVsdCBFTEtTIGNvbnNvbGUsCi0JdXNlPWVsa3MtdnQ1MiwKLQotIyBQcm9qZWN0IFNJQk8gKGZvciBQc2lvbiAzIHBhbG10b3BzKSBjb25zb2xlIGlzIGlkZW50aWNhbCB0byB0aGUgRUxLUwotIyBvbmUgYnV0IGluIHNjcmVlbiBzaXplCi0KLXNpYm98RUxLUyBTSUJPIGNvbnNvbGUsCi0JY29scyM2MSwgaXQjOCwgbGluZXMjMjAsIHVzZT1lbGtzLXZ0NTIsCi0KLSMjIyMjIyMjIENPTU1FUkNJQUwgV09SS1NUQVRJT04gQ09OU09MRVMKLSMKLQotIyMjIyBBbHBoYSBjb25zb2xlcwotIwotCi0jIFRoaXMgaXMgZnJvbSB0aGUgT1NGLzEgUmVsZWFzZSAxLjAgdGVybWNhcCBmaWxlCi1wY2NvbnN8cGNjb25zb2xlfEFOU0kgKG1vc3RseSkgQWxwaGEgUEMgY29uc29sZSB0ZXJtaW5hbCBlbXVsYXRpb24sCi0JYW0sIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNSwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpY2gxPVxFW0AsIGlsMT1cRVtMLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwKLQluZWw9Xk1eSiwgcmV2PVxFWzdtLCBybXNvPVxFW20sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwKLQotIyMjIyBTdW4gY29uc29sZXMKLSMKLQotIyA6aXMxOiByZXNldHMgc2Nyb2xsaW5nIHJlZ2lvbiBpbiBjYXNlIGEgcHJldmlvdXMgdXNlciBoYWQgdXNlZCAidHNldCB2dDEwMCIKLW9sZHN1bnxTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIGNvbnNvbGUsCi0JT1RicywgYW0sIGttLCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzQsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLAotCWRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0JaXMxPVxFWzFyLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBraG9tZT1cRVtILAotCXJtc289XEVbbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotIyBGcm9tOiBBbGV4YW5kZXIgTHVreWFub3YgPGxhdkB2aWRlby55YXJzLmZyZWUubmV0PiwgMTQgTm92IDE5OTUKLSMgPGxpbmVzPiBjYXBhYmlsaXR5IGxhdGVyIGNvcnJlY3RlZCBieSBKLlQuIENvbmtsaW4gPGp0Y0BjeWdudXMuY29tPgotIyBTR1IgMSwgNCBhcmVuJ3Qgc3VwcG9ydGVkIC0gcmVtb3ZlZCBib2xkL3VuZGVybGluZSAoVC5EaWNrZXkgMTcgSmFuIDE5OTgpCi1zdW4taWx8U3VuIE1pY3Jvc3lzdGVtcyBjb25zb2xlIHdpdGggd29ya2luZyBpbnNlcnQtbGluZSwKLQlhbSwga20sIG1zZ3IsCi0JY29scyM4MCwgbGluZXMjMzQsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwKLQlkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGh0PV5JLAotCWljaD1cRVslcDElZEAsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLAotCWtiMj1cRVsyMTh6LCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2RjaDE9XDE3Nywga2VuZD1cRVsyMjB6LCBrZjE9XEVbMjI0eiwKLQlrZjEwPVxFWzIzM3osIGtmMTE9XEVbMjM0eiwga2YxMj1cRVsyMzV6LCBrZjI9XEVbMjI1eiwKLQlrZjM9XEVbMjI2eiwga2Y0PVxFWzIyN3osIGtmNT1cRVsyMjh6LCBrZjY9XEVbMjI5eiwKLQlrZjc9XEVbMjMweiwga2Y4PVxFWzIzMXosIGtmOT1cRVsyMzJ6LCBraG9tZT1cRVsyMTR6LAotCWtucD1cRVsyMjJ6LCBrb3B0PVxFWzE5NHosIGtwcD1cRVsyMTZ6LCBrcmVzPVxFWzE5M3osCi0Ja3VuZD1cRVsxOTV6LCByZXY9XEVbN20sIHJtc289XEVbbSwgcm11bEAsIHJzMj1cRVtzLAotCXNncj1cRVswJT8lcDElcDMlfCV0OzclO20sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwKLQl1OD1cRVsxdCwgdTk9XEVbMTF0LAotIyBPbiBzb21lIHZlcnNpb25zIG9mIENHU0lYIGZyYW1lYnVmZmVyIGZpcm13YXJlIChTcGFyY1N0YXRpb24gNSksIDxpbDE+LzxpbD4KLSMgZmxha2Ugb3V0IG9uIHRoZSBsYXN0IGxpbmUuICBVbmZvcnR1bmF0ZWx5LCB3aXRob3V0IHRoZW0gdGhlIHRlcm1pbmFsIGhhcyBubwotIyB3YXkgdG8gc2Nyb2xsLgotc3VuLWNnc2l4fHN1bi1zczV8U3VuIFNwYXJjU3RhdGlvbiA1IGNvbnNvbGUsCi0JaWxALCBpbDFALCB1c2U9c3VuLWlsLAotIyBJZiB5b3UgYXJlIHVzaW5nIGFuIFNTNSwgY2hhbmdlIHRoZSBzdW4gZGVmaW5pdGlvbiB0byB1c2Ugc3VuLXNzNS4KLXN1bnxzdW4xfHN1bjJ8U3VuIE1pY3Jvc3lzdGVtcyBJbmMuIHdvcmtzdGF0aW9uIGNvbnNvbGUsCi0JdXNlPXN1bi1pbCwKLQotIyBGcm9tOiA8am9obkB1Y2JyZW5vaXI+ICBUdWUgU2VwIDI0IDEzOjE0OjQ0IDE5ODUKLXN1bi1zfFN1biBNaWNyb3N5c3RlbXMgV29ya3N0YXRpb24gd2luZG93IHdpdGggc3RhdHVzIGxpbmUsCi0JaHMsCi0JZHNsPVxFXWxcRVxcLCBmc2w9XEVcXCwgdHNsPVxFXWwsIHVzZT1zdW4sCi1zdW4tZS1zfHN1bi1zLWV8U3VuIE1pY3Jvc3lzdGVtcyBXb3Jrc3RhdGlvbiB3aXRoIHN0YXR1cyBoYWNrZWQgZm9yIGVtYWNzLAotCWhzLAotCWRzbD1cRV1sXEVcXCwgZnNsPVxFXFwsIHRzbD1cRV1sLCB1c2U9c3VuLWUsCi1zdW4tNDh8U3VuIDQ4LWxpbmUgd2luZG93LAotCWNvbHMjODAsIGxpbmVzIzQ4LCB1c2U9c3VuLAotc3VuLTM0fFN1biAzNC1saW5lIHdpbmRvdywKLQljb2xzIzgwLCBsaW5lcyMzNCwgdXNlPXN1biwKLXN1bi0yNHxTdW4gMjQtbGluZSB3aW5kb3csCi0JY29scyM4MCwgbGluZXMjMjQsIHVzZT1zdW4sCi1zdW4tMTd8U3VuIDE3LWxpbmUgd2luZG93LAotCWNvbHMjODAsIGxpbmVzIzE3LCB1c2U9c3VuLAotc3VuLTEyfFN1biAxMi1saW5lIHdpbmRvdywKLQljb2xzIzgwLCBsaW5lcyMxMiwgdXNlPXN1biwKLXN1bi0xfFN1biAxLWxpbmUgd2luZG93IGZvciBzeXNsaW5lLAotCWVzbG9rLCBocywKLQljb2xzIzgwLCBsaW5lcyMxLAotCWRzbD1eTCwgZnNsPVxFW0ssIHRzbD1eTSwgdXNlPXN1biwKLXN1bi1lfHN1bi1uaWN8c3VuZXxTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIHdpdGhvdXQgaW5zZXJ0IGNoYXJhY3RlciwKLQlpY2gxQCwgcm1pckAsIHNtaXJALCB1c2U9c3VuLAotc3VuLWN8c3VuLWNtZHxTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIGNvbnNvbGUgd2l0aCBzY3JvbGxhYmxlIGhpc3RvcnksCi0JbGluZXMjMzUsCi0Jcm1jdXA9XEVbPjRoLCBzbWN1cD1cRVs+NGwsIHVzZT1zdW4sCi1zdW4tdHlwZTR8U3VuIFdvcmtzdGF0aW9uIGNvbnNvbGUgd2l0aCB0eXBlIDQga2V5Ym9hcmQsCi0Ja2N1YjE9XEVbMjE3eiwga2N1ZDE9XEVbMjIxeiwga2N1ZjE9XEVbMjE5eiwKLQlrY3V1MT1cRVsyMTV6LCB1c2U9c3VuLWlsLAotCi0jIE1vc3Qgb2YgdGhlIGN1cnJlbnQgcmVmZXJlbmNlcyB0byBzdW4tY29sb3IgYXJlIGZyb20gdXNlcnMgd29uZGVyaW5nIHdoeSB0aGlzCi0jIGlzIHRoZSBkZWZhdWx0IG9uIGluc3RhbGwuICBEZXRhaWxzIGZyb20gcmVhZGluZyB0aGUgd3Njb25zIG1hbnBhZ2UsIGFkZGluZwotIyBjdWIsIGV0Yy4sIGhlcmUgKHJhdGhlciB0aGFuIGluIHRoZSBiYXNlIHN1bi1pbCBlbnRyeSkgc2luY2UgaXQgaXMgbm90IGNsZWFyCi0jIHdoZW4gdGhvc2Ugd2VyZSBhZGRlZCAtVEQKLXN1bi1jb2xvcnxTdW4gTWljcm9zeXN0ZW1zIFdvcmtzdGF0aW9uIGNvbnNvbGUgd2l0aCBjb2xvciBzdXBwb3J0IChJQSBzeXN0ZW1zKSwKLQljb2xvcnMjOCwgcGFpcnMjNjQsCi0JY3ViPVxFWyVwMSVkRCwgY3VkPVxFWyVwMSVkQiwgY3VmPVxFWyVwMSVkQywKLQljdXU9XEVbJXAxJWRBLCBob21lPVxFW0gsIG9wPVxFW21cRVtwLCBzZXRhYj1cRVs0JXAxJWRtLAotCXNldGFmPVxFWzMlcDElZG0sCi0Jc2V0Yj1cRVs0JT8lcDElezF9JT0ldDQlZSVwMSV7M30lPSV0NiVlJXAxJXs0fSU9JXQxJWUlcDElezZ9JT0ldDMlZSVwMSVkJTttLAotCXNldGY9XEVbMyU/JXAxJXsxfSU9JXQ0JWUlcDElezN9JT0ldDYlZSVwMSV7NH0lPSV0MSVlJXAxJXs2fSU9JXQzJWUlcDElZCU7bSwKLQl1c2U9c3VuLAotCi0jIyMjIElyaXMgY29uc29sZXMKLSMKLQotIyAod3NpcmlzOiB0aGlzIGhhZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzCi0jCTpIUz1cRTdGMjpIRT1cRTdGNzpcCi0jCTpDVCMyOkNaPSpCYmxhY2sscmVkLGdyZWVuLHllbGxvdyxibHVlLG1hZ2VudGEsY3lhbiwqRndoaXRlOgotIyBTZWUgdGhlIG5vdGUgb24gSXJpcyBleHRlbnNpb25zIG5lYXIgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCi0jIEZpbmFsbHksIHJlbW92ZWQgc3Vib3B0aW1hbCA8Y2xlYXI+PVxFSFxFSiBhbmQgYWRkZWQgPGN1ZDE+ICYKLSMgPGZsYXNoPiBmcm9tIEJSTCAtLSBlc3IpCi13c2lyaXN8aXJpczQwfGlyaXMgZW11bGF0aW5nIGEgNDAgbGluZSB2aXN1YWwgNTAgKGFwcHJveGltYXRlbHkpLAotCU9UYnMsIE9UbmMsIE9UcHQsIGFtLAotCU9Ua24jMywgY29scyM4MCwgaXQjOCwgbGluZXMjNDAsCi0JT1RubD1cRUIsIGJlbD1eRywgY2xlYXI9XEV2LCBjbm9ybT1cRT4sIGN1YjE9XkgsIGN1ZDE9XEVCLAotCWN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwKLQljdnZpcz1cRTssIGRpbT1cRTdGMiwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssCi0JZmxhc2g9XEU3RjRcRTdCMVwwMTNcRTdGN1xFN0IwLCBob21lPVxFSCwgaHQ9XkksIGlsMT1cRUwsCi0JaW5kPV5KLCBpczI9XEU3QjBcRTdGN1xFN0MyXEU3UjMsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLAotCWtjdWYxPVxFQywga2N1dTE9XEVBLCBrZjA9XEUwLCBrZjE9XEUxLCBrZjI9XEUyLCBrZjM9XEUzLAotCWtmND1cRTQsIGtmNT1cRTUsIGtmNj1cRTYsIGtmNz1cRTcsIGtmOD1cRTgsIGtmOT1cRTksIHJpPVxFSSwKLQlybXNvPVxFMEAsIHJtdWw9XEU3UjNcRTBALCBzZ3IwPVxFN0Y3LCBzbXNvPVxFOVAsCi0Jc211bD1cRTdSMlxFOVAsCi0KLSMjIyMgTmVXUyBjb25zb2xlcwotIwotIyBDb25zb2xlIHRlcm1pbmFsIHdpbmRvd3MgdW5kZXIgdGhlIE5lV1MgKFN1bidzIERpc3BsYXkgUG9zdHNjcmlwdCB3aW5kb3dpbmcKLSMgZW52aXJvbm1lbnQpLiAgIE5vdGU6IHRoZXNlIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIFNvbnkncyBOZXdzIHdvcmtzdGF0aW9uCi0jIGxpbmUuCi0jCi0KLSMgRW50cnkgZm9yIE5lV1MncyBwc3Rlcm0gZnJvbSBFcmljIE1lc3NpY2sgJiBIdWdoIERhbmllbAotIyAocHN0ZXJtOiB1bmtub3duICI6c2w9XEVPbDplbD1cRU5sOiIgcmVtb3ZlZCAtLSBlc3IpCi1wc3Rlcm18cHN0ZXJtLWJhc2ljfE5lV1MgcHN0ZXJtLTgweDM0LAotCU9UYnMsIGFtLCBocywga20sIHVsLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzM0LAotCWJsaW5rPVxFT2IsIGJvbGQ9XEVPZCwgY2xlYXI9XkwsIGNzcj1cRUUlcDElZDslcDIlZDssCi0JY3ViMT1cRVQsIGN1ZDE9XEVQLCBjdWYxPVxFViwgY3VwPVxFJXAxJWQ7JXAyJWQ7LCBjdXUxPVxFWSwKLQlkY2gxPVxFRiwgZGwxPVxFSywgZWQ9XEVCLCBlbD1cRUMsIGZsYXNoPVxFWiwgZnNsPVxFTmwsCi0JaG9tZT1cRVIsIGh0PV5JLCBpbDE9XEVBLCBpbmQ9XEVXLCBpczE9XEVOKiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBsbD1cRVUsIHJjPV5cLCByZXY9XEVPciwKLQlyaT1cRVgsIHJtY3VwPVxFTnQsIHJtaXI9XEVOaSwgcm1zbz1cRU5vLCBybXVsPVxFTnUsIHNjPV5dLAotCXNncjA9XEVOKiwgc21jdXA9XEVPdCwgc21pcj1cRU9pLCBzbXNvPVxFT28sIHNtdWw9XEVPdSwKLQl0c2w9XEVPbCwKLXBzdGVybS05Nng0OHxOZVdTIHBzdGVybSA5Nng0OCwKLQljb2xzIzk2LCBsaW5lcyM0OCwgdXNlPXBzdGVybSwKLXBzdGVybS05MHgyOHxOZVdTIHBzdGVybSA5MHgyOCwKLQljb2xzIzkwLCBsaW5lcyMyOCwgdXNlPXBzdGVybSwKLXBzdGVybS04MHgyNHxOZVdTIHBzdGVybSA4MHgyNCwKLQljb2xzIzgwLCBsaW5lcyMyNCwgdXNlPXBzdGVybSwKLSMgVGhpcyBpcyBhIGZhc3RlciB0ZXJtY2FwIGZvciBwc3Rlcm0uICBXYXJuaW5nOiAgaWYgeW91IHVzZSB0aGlzIHRlcm1jYXAsCi0jIHNvbWUgY29udHJvbCBjaGFyYWN0ZXJzIHlvdSB0eXBlIHdpbGwgZG8gc3RyYW5nZSB0aGluZ3MgdG8gdGhlIHNjcmVlbi4KLSMgKHBzdGVybS1mYXN0OiB1bmtub3duICI6c2w9Xk9sOmVsPV5ObDoiIC0tIGVzcikKLXBzdGVybS1mYXN0fE5lV1MgcHN0ZXJtIGZhc3QgdmVyc2lvbiAoZmxha3kgY3RybCBjaGFycyksCi0JT1RicywgYW0sIGhzLCBrbSwgdWwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzQsCi0JYmxpbms9Xk9iLCBib2xkPV5PZCwgY2xlYXI9XkwsIGNzcj1cMDA1JXAxJWQ7JXAyJWQ7LAotCWN1YjE9XlQsIGN1ZDE9XlAsIGN1ZjE9XlYsIGN1cD1cMDA0JXAxJWQ7JXAyJWQ7LCBjdXUxPV5ZLAotCWRjaDE9XkYsIGRsMT1eSywgZWQ9XkIsIGVsPV5DLCBmbGFzaD1eWiwgZnNsPV5ObCwgaG9tZT1eUiwgaHQ9XkksCi0JaWwxPV5BLCBpbmQ9XlcsIGlzMT1eTiosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwgbGw9XlUsIHJjPV5cLCByZXY9Xk9yLCByaT1eWCwgcm1jdXA9Xk50LCBybWlyPV5OaSwKLQlybXNvPV5Obywgcm11bD1eTnUsIHNjPV5dLCBzZ3IwPV5OKiwgc21jdXA9Xk90LCBzbWlyPV5PaSwKLQlzbXNvPV5Pbywgc211bD1eT3UsIHRzbD1eT2wsCi0KLSMjIyMgTmVYVCBjb25zb2xlcwotIwotIyBVc2UgYGdsYXNzdHR5JyBmb3IgdGhlIFdvcmtzcGFjZSBhcHBsaWNhdGlvbgotIwotCi0jIEZyb206IERhdmUgV2V0emVsIDxkYXZlQHR1cmJvY2F0LnNuYWZ1LmRlPiAyMiBEZWMgMTk5NQotbmV4dHxOZVhUIGNvbnNvbGUsCi0JYW0sIHh0LAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVsPVxFW0ssIGhvbWU9XEVbSCwKLQlodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbmVsPV5NXkosCi0Jcm1zbz1cRVs0OzFtLCBzZ3IwPVxFW20sIHNtc289XEVbNDsybSwKLW5leHRzaGVsbHxOZVhUIFNoZWxsIGFwcGxpY2F0aW9uLAotCWFtLAotCWNvbHMjODAsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgaHQ9XkksIGticz1eSCwga2N1YjE9XkgsCi0Ja2N1ZDE9XkosIG5lbD1eTV5KLAotCi0jIyMjIFNvbnkgTkVXUyB3b3Jrc3RhdGlvbnMKLSMKLQotIyAobmV3cy11bms6IHRoaXMgaGFkIDpLQj1uZXdzOiAtLSBlc3IpCi1uZXdzLXVua3xTT05ZIE5FV1MgdnQxMDAgZW11bGF0b3IgY29tbW9uIGVudHJ5LAotCU9UYnMsIE9UcHQsIGFtLCB4ZW5sLAotCWNvbHMjODAsCi0JT1RubD1eSiwgYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLAotCWNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLAotCWlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLAotCWlzMj1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRTgsIGticz1eSCwga2N1YjE9XEVPRCwKLQlrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZjA9XEVPWSwga2YxPVxFT1AsCi0Ja2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT1QsIGtmNj1cRU9VLCBrZjc9XEVPViwKLQlrZjg9XEVPVywga2Y5PVxFT1gsIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVtyLCBzYz1cRTcsCi0Jc2dyMD1cRVttLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLSMKLSMgKG5ld3MtMjk6IHRoaXMgaGFkIDpUWT1hc2NpaTogLS1lc3IpCi1uZXdzLTI5LAotCWxpbmVzIzI5LCB1c2U9bmV3cy11bmssCi0jIChuZXdzLTI5LWV1YzogdGhpcyBoYWQgOlRZPWV1YzogLS1lc3IpCi1uZXdzLTI5LWV1YywKLQl1c2U9bmV3cy0yOSwKLSMgKG5ld3MtMjktc2ppczogdGhpcyBoYWQgOlRZPXNqaXM6IC0tZXNyKQotbmV3cy0yOS1zamlzLAotCXVzZT1uZXdzLTI5LAotIwotIyAobmV3cy0zMzogdGhpcyBoYWQgOlRZPWFzY2lpOiAtLWVzcikKLW5ld3MtMzMsCi0JbGluZXMjMzMsIHVzZT1uZXdzLXVuaywKLSMgKG5ld3MtMzMtZXVjOiB0aGlzIGhhZCA6VFk9ZXVjOiAtLWVzcikKLW5ld3MtMzMtZXVjLAotCXVzZT1uZXdzLTMzLAotIyAobmV3cy0zMy1zamlzOiB0aGlzIGhhZCA6VFk9c2ppczogLS1lc3IpCi1uZXdzLTMzLXNqaXMsCi0JdXNlPW5ld3MtMzMsCi0jCi0jIChuZXdzLTQyOiB0aGlzIGhhZCA6VFk9YXNjaWk6IC0tZXNyKQotbmV3cy00MiwKLQlsaW5lcyM0MiwgdXNlPW5ld3MtdW5rLAotIyAobmV3cy00Mi1ldWM6IHRoaXMgaGFkIDpUWT1ldWM6IC0tZXNyKQotbmV3cy00Mi1ldWMsCi0JdXNlPW5ld3MtNDIsCi0jIChuZXdzLTQyLXNqaXM6IHRoaXMgaGFkIDpUWT1zamlzOiAtLWVzcikKLW5ld3MtNDItc2ppcywKLQl1c2U9bmV3cy00MiwKLSMKLSMJTkVXUy1PUyBvbGQgdGVybWNhcCBlbnRyeQotIwotIyAobmV3cy1vbGQtdW5rOiB0aGlzIGhhZCA6S0I9bmV3czpUWT1zamlzOiAtLWVzcikKLW5ld3Mtb2xkLXVua3xTT05ZIE5FV1MgdnQxMDAgZW11bGF0b3IgY29tbW9uIGVudHJ5LAotCU9UYnMsIE9UcHQsIGFtLCB4ZW5sLAotCWNvbHMjODAsIHZ0IzMsCi0JT1RubD1eSiwgYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbO0hcRVsySiwKLQljcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVkPVxFW0osIGVsPVxFW0ssCi0JaG9tZT1cRVtILCBodD1eSSwgaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIGticz1eSCwKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZjE9XEVPUCwKLQlrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCi0Jc2dyMD1cRVttLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLSMKLSMgKG53cDUxMjogdGhpcyBoYWQgOkRFPV5IOiwgd2hpY2ggSSB0aGluayBtZWFucyA8T1Ricz4gLS1lc3IpCi1ud3A1MTJ8bmV3c3xud3A1MTR8bmV3czQwfHZ0MTAwLWJtfG9sZCBzb255IHZ0MTAwIGVtdWxhdG9yIDQwIGxpbmVzLAotCU9UYnMsCi0JbGluZXMjNDAsCi0JaXMyPVxFN1xFW3JcRThcRUVcRUVcRUVcRU1cRU1cRU1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRVsxOzQwclxFOCwKLQl1c2U9bmV3cy1vbGQtdW5rLAotIwotIyAobndwNTEyLWE6IHRoaXMgaGFkIDpUWT1hc2NpaTogYW5kIHRoZSBhbGlhcyB2dDEwMC1ibSAtLWVzcikKLW53cDUxMi1hfG53cDUxNC1hfG5ld3MtYXxuZXdzNDJ8bmV3czQwLWF8c29ueSB2dDEwMCBlbXVsYXRvciA0MiBsaW5lLAotCWxpbmVzIzQyLAotCWlzMj1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRVsxOzQyclxFOCwKLQl1c2U9bmV3cy1vbGQtdW5rLAotIwotIyAobndwLTUxMi1vOiB0aGlzIGhhZCA6S0I9bndwNDEwOkRFPV5IOiAgSSBpbnRlcnByZXQgdGhlIGxhdHRlciBhcyA8T1Ricz4uIC0tZXNyKQotbndwNTEyLW98bndwNTE0LW98bmV3cy1vfG5ld3M0MC1vfHZ0MTAwLWJtLW98c29ueSB2dDEwMCBlbXVsYXRvciA0MCBsaW5lcywKLQlPVGJzLAotCWxpbmVzIzQwLAotCWlzMj1cRTdcRVtyXEU4XEVFXEVFXEVFXEVNXEVNXEVNXEVbPzdoXEVbPzFsXEVbPzNsXEU3XEVbMTs0MHJcRTgsCi0JdXNlPW5ld3Mtb2xkLXVuaywKLSMKLSMgKG53cDUxMzogdGhpcyBoYWQgOkRFPV5IOiBhbmQgdGhlIGFsaWFzIHZ0MTAwLWJtIC0tZXNyKQotbndwNTEzfG53cDUxOHxud2U1MDF8bmV3c2NibXxuZXdzMzF8c29ueSB2dDEwMCBlbXVsYXRvciAzMyBsaW5lcywKLQlPVGJzLAotCWxpbmVzIzMxLAotCWlzMj1cRTdcRVtyXEU4XEVFXEVFXEVFXEVNXEVNXEVNXEVbPzdoXEVbPzFsXEVbPzNsXEU3XEVbMTszMXJcRTgsCi0JdXNlPW5ld3Mtb2xkLXVuaywKLSMKLSMgKG53cDUxMy1hOiB0aGlzIGhhZCA6VFk9YXNjaWk6IGFuZCA6REU9Xkg6LCB3aGljaCBJIGludGVycHJldCBhcyA8T1Ricz47IC0tZXNyKQotIyBhbHNvIHRoZSBhbGlhcyB2dDEwMC1ibS4KLW53cDUxMy1hfG53cDUxOC1hfG53ZTUwMS1hfG53cDI1MS1hfG5ld3NjYm0tYXxuZXdzMzEtYXxuZXdzY2JtMzN8bmV3czMzfG9sZCBzb255IHZ0MTAwIGVtdWxhdG9yIDMzIGxpbmVzLAotCU9UYnMsCi0JbGluZXMjMzMsCi0JaXMyPVxFN1xFW3JcRThcRUVcRUVcRUVcRU1cRU1cRU1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRVsxOzMzclxFOCwKLQl1c2U9bmV3cy1vbGQtdW5rLAotIwotIyAobndwNTEzLW86IGhhZCA6REU9Xkg6LCBJIHRoaW5rIHRoYXQncyA8T1Ricz47IGFsc28gdGhlIGFsaWFzIHZ0MTAwLWJtIC0tZXNyKQotbndwNTEzLW98bndwNTE4LW98bndlNTAxLW98bndwMjUxLW98bmV3c2NibS1vfG5ld3MzMS1vfG9sZCBzb255IHZ0MTAwIGVtdWxhdG9yIDMzIGxpbmVzLAotCU9UYnMsCi0JbGluZXMjMzEsCi0JaXMyPVxFN1xFW3JcRThcRUVcRUVcRUVcRU1cRU1cRU1cRVs/N2hcRVs/MWxcRVs/M2xcRTdcRVsxOzMxclxFOCwKLQl1c2U9bmV3cy1vbGQtdW5rLAotIwotIyAobmV3czI4OiB0aGlzIGhhZCA6REU9Xkg6LCBJIHRoaW5rIHRoYXQncyA8T1Ricz4sIGFuZCA6S0I9bndzMTIwMDogLS1lc3IpCi1uZXdzMjh8c29ueSB2dDEwMCBlbXVsYXRvciAyOCBsaW5lcywKLQlPVGJzLAotCWxpbmVzIzI4LAotCWlzMj1cRTdcRVtyXEU4XEVFXEVFXEVFXEVNXEVNXEVNXEVbPzdoXEVbPzFsXEVbPzNsXEU3XEVbMTsyOHJcRTgsCi0JdXNlPW5ld3Mtb2xkLXVuaywKLSMKLSMgKG5ld3MyOTogdGhpcyBoYWQgOlRZPWFzY2lpOktCPW53czEyMDA6XCAtLWVzcikKLW5ld3MyOXxuZXdzMjgtYXxzb255IHZ0MTAwIGVtdWxhdG9yIDI5IGxpbmVzLAotCWxpbmVzIzI5LAotCWlzMj1cRTdcRVtyXEU4XEVFXEVFXEVFXEVNXEVNXEVNXEVbPzdoXEVbPzFsXEVbPzNsXEU3XEVbMTsyOXJcRTgsCi0JdXNlPW5ld3Mtb2xkLXVuaywKLSMKLSMgKG5ld3M1MTE6IHRoaXMgaGFkIDpUWT1zamlzOiAtLWVzcikKLW53cDUxMXxud3AtNTExfG53cC01MTEgdnQxMDAsCi0JT1RicywgT1RwdCwgYW0sIHhlbmwsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbO0hcRVsySiQ8MjAvPiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBJDwyLz4sIGRsMT1cRVtNLAotCWVkPVxFW0okPDMwLz4sIGVsPVxFW0skPDMvPiwKLQlmbGFzaD1cRVs/NWhcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFxFWz81bCwKLQlpbDE9XEVbTCwgaXMyPVxFWz81bFxFWz8xbFxFPlxFWz83aFxFWz84aCwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwga2YyPVxFT1EsCi0Ja2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPVCwga2Y2PVxFI1csIGtob21lPVxFW0gsCi0Jcmk9XEVNJDw1Lz4sIHJtc289XEVbbSQ8Mi8+LCBybXVsPVxFW20kPDIvPiwKLQlyczI9XEU3XEVbclxFOFxFWz81bFxFWz8xbFxFPlxFWz83aFxFWz84aCwKLQlzbXNvPVxFWzdtJDwyLz4sIHNtdWw9XEVbNG0kPDIvPiwKLSMgKG5ld3M1MTc6IHRoaXMgaGFkIDpUWT1zamlzOi4gLS1lc3IpCi1ud3A1MTd8bndwLTUxN3xud3AtNTE3IHZ0MjAwIDgwIGNvbHMgMzAgcm93cywKLQllc2xvaywgaHMsCi0JY29scyM4MCwgbGluZXMjMzAsCi0JT1RpMj1cRVsyJH5cbiwgZHNsPVxFWzEkfiwgZnNsPVxFWzAkfSwKLQlpczI9XEU3XEVbclxFOFxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQl0c2w9XEVbMSR9XEVbOyVkZiwgdXNlPXZ0MjAwLAotIyAobmV3czUxNy13OiB0aGlzIGhhZCA6VFk9c2ppczouIC0tZXNyKQotbndwNTE3LXd8bndwLTUxNy13fG53cC01MTcgdnQyMDAgMTMyIGNvbHMgNTAgcm93cywKLQllc2xvaywgaHMsCi0JY29scyMxMzIsIGxpbmVzIzUwLAotCU9UaTI9XEVbMiR+XG4sIGRzbD1cRVsxJH4sIGZzbD1cRVswJH0sCi0JaXMyPVxFN1xFW3JcRThcRT5cRVs/M2hcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsCi0JcnMyPVxFPlxFWz8zaFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQl0c2w9XEVbMSR9XEVbOyVkZiwgdXNlPXZ0MjAwLAotCi0jIyMjIENvbW1vbiBEZXNrdG9wIEVudmlyb25tZW50Ci0jCi0KLSMgVGhpcyBzaGlwcyB3aXRoIFN1bidzIENERSBpbiBTb2xhcmlzIDIuNQotIyBDb3JyZWN0ZWQgU3VuIEF1ZyA5IDE5OTggYnkgQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAdmlkZW8ueWFycy5mcmVlLm5ldD4KLWR0dGVybXxDREUgZGVza3RvcCB0ZXJtaW5hbCwKLQlhbSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIGxtIzAsIG5jdkAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQllbmFjcz1cRShCXEUpMCwgZmxhc2g9XEVbPzVoJDwyMDA+XEVbPzVsLCBob21lPVxFW0gsCi0JaHQ9XkksIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsCi0JaW5kPVxFRCwgaW52aXM9XEVbOG0sIGlzMj1cRSBGXEU+XEVbPzFsXEVbPzdoXEVbPzQ1bCwKLQlrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XEVbM34sIGtmMT1cRVsxMX4sIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwKLQlrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LCBrZjE1PVxFWzI4fiwKLQlrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LCBrZjE5PVxFWzMzfiwKLQlrZjI9XEVbMTJ+LCBrZjIwPVxFWzM0fiwga2YzPVxFWzEzfiwga2Y0PVxFWzE0fiwKLQlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAotCWtmbmQ9XEVbMX4sIGtobHA9XEVbMjh+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3NsdD1cRVs0fiwgbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sCi0Jcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJtc289XEVbMjI7MjdtLCBybXVsPVxFWzI0bSwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSV0OzI7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbMjs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1c2U9ZWNtYStjb2xvciwKLQotIyMjIyBOb24tVW5peCBDb25zb2xlcwotIwotCi0jIyMgRU1YIHRlcm1jYXAuZGF0IGNvbXBhdGliaWxpdHkgbW9kZXMKLSMKLSMgS2V5cGFkOglIb21lPVwwRwlVcD1cMEgJUHJQYWc9XDBJCi0jCQlrYTEsa2gJCWtjdXUxCQlrcHAsa2EzCi0jCi0jCQlMZWZ0PVwwSwk1PVwwTAkJUmlnaHQ9XDBNCi0jCQlrY3ViMQkJa2IyCQlrY3VmMQotIwotIwkJRW5kPVwwTwkJRG93bj1cMFAJTnhQYWc9XDBRCi0jCQlrYzEsa2VuZAlrY3VkMQkJa2MzLGtucAotIwotIwkJSW5zPVwwUgkJRGVsPVwwUwotIwkJa2ljaDEJCWtkY2gxCi0jCi0jIE9uIGtleWJvYXJkIHdpdGggMTIgZnVuY3Rpb24ga2V5cywKLSMJc2hpZnRlZCBmLWtleXM6IEYxMy1GMjQKLSMJY29udHJvbCBmLWtleXM6IEYyNS1GMzYKLSMJYWx0IGYta2V5czogICAgIEYzNy1GNDgKLSMgVGhlIHNoaWZ0L2NvbnRyb2wvYWx0IGtleXMgZG8gbm90IG1vZGlmeSBlYWNoIG90aGVyLCBidXQgYWx0IG92ZXJyaWRlcyBib3RoLAotIyBhbmQgY29udHJvbCBvdmVycmlkZXMgc2hpZnQuCi0jCi0jIEFsc28gKHBvc3NpYmx5IG9ubHkgRU1YLCBzbyB3ZSBkb24ndCBwdXQgaXQgaW4gYW5zaS5zeXMsIGV0Yyk6IHNldCB0aGUKLSMgbm9fY29sb3JfdmlkZW8gdG8gaW5mb3JtIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHN0YW5kb3V0KDEpLCB1bmRlcmxpbmUoMikKLSMgcmV2ZXJzZSg0KSBhbmQgaW52aXNpYmxlKDY0KSBkb24ndCB3b3JrIHdpdGggY29sb3IuCi1lbXgtYmFzZXxET1Mgc3BlY2lhbCBrZXlzLAotCWJjZSwgYncsCi0JaXQjOCwgbmN2IzcxLAotCWJlbD1eRywga2ExPVwwRywga2EzPVwwSSwga2IyPVwwTCwga2JzPV5ILCBrYzE9XDBPLCBrYzM9XDBRLAotCWtjYnQ9XDBeTywga2N1YjE9XDBLLCBrY3VkMT1cMFAsIGtjdWYxPVwwTSwga2N1dTE9XDBILAotCWtkY2gxPVwwUywga2VuZD1cME8sIGtmMT1cMDssIGtmMTA9XDBELCBrZjExPVwwXDIwNSwKLQlrZjEyPVwwXDIwNiwga2YxMz1cMFQsIGtmMTQ9XDBVLCBrZjE1PVwwViwga2YxNj1cMFcsCi0Ja2YxNz1cMFgsIGtmMTg9XDBZLCBrZjE5PVwwWiwga2YyPVwwPCwga2YyMD1cMFssIGtmMjE9XDBcXCwKLQlrZjIyPVwwXSwga2YyMz1cMFwyMDcsIGtmMjQ9XDBcMjEwLCBrZjI1PVwwXF4sIGtmMjY9XDBfLAotCWtmMjc9XDBgLCBrZjI4PVwwYSwga2YyOT1cMGIsIGtmMz1cMD0sIGtmMzA9XDBjLCBrZjMxPVwwZCwKLQlrZjMyPVwwZSwga2YzMz1cMGYsIGtmMzQ9XDBnLCBrZjM1PVwwXDIxMSwga2YzNj1cMFwyMTIsCi0Ja2YzNz1cMGgsIGtmMzg9XDBpLCBrZjM5PVwwaiwga2Y0PVwwPiwga2Y0MD1cMGssIGtmNDE9XDBsLAotCWtmNDI9XDBtLCBrZjQzPVwwbiwga2Y0ND1cMG8sIGtmNDU9XDBwLCBrZjQ2PVwwcSwKLQlrZjQ3PVwwXDIxMywga2Y0OD1cMFwyMTQsIGtmNT1cMD8sIGtmNj1cMEAsIGtmNz1cMEEsIGtmOD1cMEIsCi0Ja2Y5PVwwQywga2hvbWU9XDBHLCBraWNoMT1cMFIsIGtucD1cMFEsIGtwcD1cMEksCi0JdXNlPWFuc2kuc3lzLAotCi0jIEV4Y2VwdCBmb3IgdGhlICItZW14IiBzdWZmaXhlcywgdGhlc2UgYXJlIGFzIGRpc3RyaWJ1dGVkIHdpdGggRU1YIDAuOWIsCi0jIGEgVW5peC1zdHlsZSBlbnZpcm9ubWVudCB1c2VkIG9uIE9TLzIuICAoTm90ZSB0aGF0IHRoZSBzdWZmaXggbWFrZXMgc29tZQotIyBuYW1lcyBsb25nZXIgdGhhbiAxNCBjaGFyYWN0ZXJzLCB0aGUgbm9taW5hbCBtYXhpbXVtKS4KLSMKLSMgUmVtb3ZlZDogcm1hY3M9XEVbMTBtLCBzbWFjcz1cRVsxMW0sIGJlY2F1c2UgT1MvMiBkb2VzIG5vdCBpbXBsZW1lbnQgYWNzLgotYW5zaS1lbXh8QU5TSS5TWVMgY29sb3IsCi0JYW0sIGJjZSwgZW8sIG1pciwgbXNnciwgeG9uLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgcGFpcnMjNjQsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVsxOzMzOzQ0bVxFW0hcRVtKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwgY3ViMT1eSCwKLQljdWQxPV5KLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZHAsIGVkPVxFW0osIGVsPVxFW0ssIGZsYXNoPVxFWz81aFxFWz81bCwKLQlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGluZD1eSiwKLQlrYjI9XEVbRywga2JzPV5ILCBrZjA9XDBELCBrbGw9XDBPLCBrc3BkPV5aLCBuZWw9Xk1eSiwKLQlyZXY9XEVbNTszNzs0MW0sIHJtaXI9XEVbNGwsIHJtcGNoPVxFWzEwbSwKLQlybXNvPVxFWzA7NDRtXEVbMTszM20sIHJtdWw9XEVbMDs0NG1cRVsxOzMzbSwgcnMxPVxFYywKLQlzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNncjA9XEVbMG1cRVsxOzMzOzQ0bSwgc21pcj1cRVs0aCwgc21wY2g9XEVbMTFtLAotCXNtc289XEVbMDszMTs0N20sIHNtdWw9XEVbMTszMTs0NG0sIHRiYz1cRVszZywgdTg9XEVbPzZjLAotCXU5PVxFW2MsIHVzZT1lbXgtYmFzZSwKLSMgbmljZSBjb2xvcnMgZm9yIEVtYWNzICh3aGl0ZSBvbiBibHVlLCBtb2RlIGxpbmUgd2hpdGUgb24gY3lhbikKLWFuc2ktY29sb3ItMi1lbXh8QU5TSS5TWVMgY29sb3IgMiwKLQljbGVhcj1cRVswOzM3OzQ0bVxFW0hcRVtKLCByZXY9XEVbMTszNzs0Nm0sCi0Jcm1zbz1cRVswOzM3OzQ0bSwgcm11bD1cRVswOzM3OzQ0bSwgcnMxPVxFYywKLQlzZXRhZj1cRVszJXAxJWRtLCBzZ3IwPVxFWzA7Mzc7NDRtLCBzbXNvPVxFWzE7Mzc7NDZtLAotCXNtdWw9XEVbMTszNjs0NG0sIHVzZT1hbnNpLWVteCwKLSMgbmljZSBjb2xvcnMgZm9yIEVtYWNzICh3aGl0ZSBvbiBibGFjaywgbW9kZSBsaW5lIGJsYWNrIG9uIGN5YW4pCi1hbnNpLWNvbG9yLTMtZW14fEFOU0kuU1lTIGNvbG9yIDMsCi0JY2xlYXI9XEVbMDszNzs0MG1cRVtIXEVbSiwgcmV2PVxFWzE7Mzc7NDZtLAotCXJtc289XEVbMDszNzs0MG0sIHJtdWw9XEVbMDszNzs0MG0sIHJzMT1cRWMsCi0Jc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVswOzEwbSwgc21zbz1cRVsxOzM3OzQ2bSwKLQlzbXVsPVxFWzA7MzY7NDBtLCB1c2U9YW5zaS1lbXgsCi1tb25vLWVteHxzdHVwaWQgbW9ub2Nocm9tZSBhbnNpIHRlcm1pbmFsIHdpdGggb25seSBvbmUga2luZCBvZiBlbXBoYXNpcywKLQlhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQljbGVhcj1cRVtIXEVbMkokPDUwPiwgY3ViMT1cRVtELCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZWw9XEVbSywgaG9tZT1cRVtILAotCWh0PV5JLCBrYjI9XEVbRywga2JzPV5ILCBrY3ViMT1cMEssIGtjdWQxPVwwUCwga2N1ZjE9XDBNLAotCWtjdXUxPVwwSCwga2YwPVwwRCwga2YxPVwwOywga2YyPVwwPCwga2YzPVwwPSwga2Y0PVwwPiwKLQlrZjU9XDA/LCBrZjY9XDBALCBrZjc9XDBBLCBrZjg9XDBCLCBrZjk9XDBDLCBraG9tZT1cMEcsCi0Ja2ljaDE9XDBSLCBrbGw9XDBPLCBrbnA9XDBRLCBrcHA9XDBJLCBuZWw9Xk1eSiwgcmV2PVxFWzdtLAotCXNncjA9XEVbMG0sCi0KLSMgVXNlIHRoaXMgZm9yIGN5Z3dpbjMyICh0ZXN0ZWQgd2l0aCBiZXRhIDE5LjEpCi0jIHVuZGVybGluZSBpcyBjb2xvcmVkIGJyaWdodCBtYWdlbnRhCi0jIHNoaWZ0ZWQga2YxLWtmMTIgYXJlIGtmMTEta2YyMgotY3lnd2luQjE5fGFuc2kgZW11bGF0aW9uIGZvciBjeWd3aW4zMiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjE9XEVbW0EsIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAotCWtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LAotCWtmMTk9XEVbMzN+LCBrZjI9XEVbW0IsIGtmMjA9XEVbMzR+LCBrZjM9XEVbW0MsIGtmND1cRVtbRCwKLQlrZjU9XEVbW0UsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwgcm1hbUAsIHNtYW1ALAotCXVzZT1hbnNpLnN5cywKLQotIyBVc2UgdGhpcyBmb3IgY3lnd2luICh0ZXN0ZWQgd2l0aCB2ZXJzaW9uIDEuMS4wKS4KLSMgSSd2ZSBjb21iaW5lZCBwY2Fuc2kgYW5kIGxpbnV4LiAgU29tZSB2YWx1ZXMgb2YgY291cnNlIHdlcmUgZGlmZmVyZW50IGFuZAotIyBJJ3ZlIGluZGljYXRlZCB3aGljaCBvZiB0aGVzZSB3ZXJlIGFuZCB3aGljaCBJIHVzZWQuCi0jIENoZWVycywgZWFybmllX2JveWRAeWFob28uY29tCi0jIHNldmVyYWwgY2hhbmdlcyBiYXNlZCBvbiBydW5uaW5nIHdpdGggdGFjayBhbmQgY29tcGFyaW5nIHdpdGggb2xkZXIgZW50cnkgLVRECi0jIG1vcmUgY2hhbmdlcyBmcm9tIGNzdzoKLSMgICBhZGQgICAgY2J0ICAgW2JhY2t0YWJdCi0jICAgcmVtb3ZlIGVvICAgIFtlcmFzZSBvdmVyc3RyaWtlIHdpdGggYmxhbmtdCi0jICAgY2hhbmdlIGNsZWFyIHdhcyBcRVtIXEVbSiAgbm93IFxFWzJKICAoZmFzdGVyPykKLSMgICByZW1vdmUgY29scwotIyAgIHJlbW92ZSBsaW5lcwotIyAgIHJlbW92ZSBuY3YjMyBbY29sb3JzIGNvbGxpZGUgd2l0aCBoaWdobGlnaHRzLCBiaXRtYXNrXSBub3QgYXBwbGljYWJsZQotIyAgICAgICAgICAgICAgICB0byBNU0RPUyBib3g/Ci0jICAgYWRkICAgIGN1YiAgIFtjdXJzb3IgYmFjayBwYXJhbV0KLSMgICBhZGQgICAgY3VmICAgW2N1cnNvciBmb3J3YXJkIHBhcmFtXQotIyAgIGFkZCAgICBjdXUgICBbY3Vyc29yIHVwIHBhcmFtXQotIyAgIGFkZCAgICBjdWQgICBbY3Vyc29yIGRvd24gcGFyYW1dCi0jICAgYWRkICAgIGhzICAgIFtoYXMgc3RhdHVzIGxpbmVdCi0jICAgYWRkICAgIGZzbCAgIFtyZXR1cm4gZnJvbSBzdGF0dXMgbGluZV0KLSMgICBhZGQgICAgdHNsICAgW2dvIHRvIHN0YXR1cyBsaW5lXQotIyAgIGFkZCAgICBzbWFjcyBbU3RhcnQgYWx0IGNoYXJzZXRdIChub3Qgc3VyZSBpZiB0aGlzIHdvcmtzKQotIyAgIGFkZCAgICBybWFjcyBbRW5kIGFsdCBjaGFyc2V0XSAgIChkaXR0bykKLSMgICBhZGQgICAgc21jdXAgW2VudGVyX2NhX21vZGVdIChzYXZlIGNvbnNvbGU7IHRoYW5rcyBDb3Jpbm5hKQotIyAgIGFkZCAgICBybWN1cCBbZXhpdF9jYV9tb2RlXSAgKHJlc3RvcmUgY29uc29sZTsgdGhhbmtzIENvcmlubmEpCi0jICAgYWRkICAgIGtiMiAgIFtjZW50ZXIgb2Yga2V5cGFkXQotIyAgIGFkZCAgICB1OCAgICBbdXNlciBzdHJpbmcgOF0gXEVbPzZjCi0jICAgYWRkICAgIGVsICAgIFtjbGVhciB0byBlbmQgb2YgbGluZV0gXEVbSwotIyBOb3RlczoKLSMgICBjbm9ybSBbbWFrZSBjdXJzb3Igbm9ybWFsXSBub3QgaW1wbGVtZW50ZWQKLSMgICBmbGFzaCBbZmxhc2hdIG5vdCBpbXBsZW1lbnRlZAotIyAgIGJsaW5rIFtibGlua10gbm90IGltcGxlbWVudGVkIHZlcnkgdXNlZnVsbHkgaW4gY3lnd2luPyBcRVs1bQotIyAgIGRpbSAgIFtkaW1dIG5vdCBpbXBsZW1lbnRlZCB2ZXJ5IHVzZWZ1bGx5IGluIGN5Z3dpbj8gXEVbMm0KLSMgICBjdWIxICBbY3Vyc29yIGJhY2sgMV0gdHlwaWNhbGx5IFxFW0QsIGJ1dCBeSCBpcyBmYXN0ZXI/Ci0jICAga05YVCAgW3NoaWZ0ZWQgbmV4dCBrZXldIG5vdCBpbXBsZW1lbnRlZAotIyAgIGtQUlYgIFtzaGlmdGVkIHByZXYga2V5XSBub3QgaW1wbGVtZW50ZWQKLSMgICBraG9tZSBbaG9tZSBrZXldIHJlYWxseSBpcyBcRVsxfiBOT1QgXEVbSAotIyAgIHRiYyAgIFtjbGVhciB0YWIgc3RvcHNdIG5vdCBpbXBsZW1lbnRlZAotIyAgIHhlbmwgIFtuZXdsaW5lIGlnbm5vcmVkIGFmdGVyIDgwIGNvbHNdIG1lc3NlcyB1cCBsYXN0IGxpbmU/IEVodWQgS2FybmkKLSMgICBzbXBjaCBbU3RhcnQgUEMgY2hhcnNldF0gaXMgXEVbMTFtLCBzYW1lIGFzIHNtYWNzCi0jICAgcm1wY2ggW0VuZCBQQyBjaGFyc2V0XSBpcyBcRVsxMG0sIHNhbWUgYXMgcm1hY3MKLSMgICBtaXIgICBbbW92ZSBpbiBpbnNlcnQgbW9kZV0gZmFpbHMgaW4gdGFjaz8KLSMgICBiY2UgICBbYmFjayBjb2xvciBlcmFzZV0gY2F1c2VzIHByb2JsZW1zIHdpdGggY2hhbmdlIGJhY2tncm91bmQgY29sb3I/Ci0jICAgY3Z2aXMgW21ha2UgY3Vyc29yIHZlcnkgdmlzaWJsZV0gY2F1c2VzIGEgc3RhY2tkdW1wIHdoZW4gdGVzdGluZyB3aXRoCi0jICAgICAgICAgdGVzdGN1cnMgdXNpbmcgdGhlIG91dHB1dCBvcHRpb24/IFxFWz8yNWhcRVs/OGMKLSMgICBjaXZpcyBbbWFrZSBjdXJzb3IgaW52aXNpYmxlXSBjYXVzZXMgZXZlcnl0aGluZyB0byBzdGFja2R1bXA/IFxFWz8yNWxcRVs/MWMKLSMgICBlY2ggICBbZXJhc2UgY2hhcmFjdGVycyBwYXJhbV0gYnJva2VuIFxFWyVwMSVkWAotIyAgIGtjYnQgIFtiYWNrLXRhYiBrZXldIG5vdCBpbXBsZW1lbnRlZCBpbiBjeWd3aW4/ICBcRVtaCi0jCi0jIDIwMDUvMTEvMTIgLVRECi0jCVJlbW92ZSBjYnQgc2luY2UgaXQgZG9lcyBub3Qgd29yayBpbiBjdXJyZW50IGN5Z3dpbgotIwlBZGQgJ21pcicgYW5kICdpbicgZmxhZ3MgYmFzZWQgb24gdGFjawotY3lnd2lufGFuc2kgZW11bGF0aW9uIGZvciBDeWd3aW4sCi0JYW0sIGhzLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xvcnMjOCwgaXQjOCwgcGFpcnMjNjQsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAotCWJlbD1eRywgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWI9XEVbJXAxJWRELAotCWN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywKLQljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKLQljdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGZzbD1eRywgaG9tZT1cRVtILAotCWhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGludmlzPVxFWzhtLCBrYjI9XEVbRywKLQlrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XEVbM34sIGtlbmQ9XEVbNH4sIGtmMT1cRVtbQSwga2YxMD1cRVsyMX4sCi0Ja2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sCi0Ja2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sCi0Ja2YxOT1cRVszM34sIGtmMj1cRVtbQiwga2YyMD1cRVszNH4sIGtmMz1cRVtbQywga2Y0PVxFW1tELAotCWtmNT1cRVtbRSwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVsxfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LCBrc3BkPV5aLAotCW5lbD1eTV5KLCBvcD1cRVszOTs0OW0sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1hY3M9XEVbMTBtLCBybWN1cD1cRVsySlxFWz80N2xcRTgsIHJtaXI9XEVbNGwsCi0Jcm1wY2g9XEVbMTBtLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHJzMT1cRWNcRV1SLAotCXNjPVxFNywgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQlzZ3I9XEVbMDsxMCU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglOyU/JXA5JXQ7MTElO20sCi0Jc2dyMD1cRVswOzEwbSwgc21hY3M9XEVbMTFtLCBzbWN1cD1cRTdcRVs/NDdoLAotCXNtaXI9XEVbNGgsIHNtcGNoPVxFWzExbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdHNsPVxFXTssCi0JdnBhPVxFWyVpJXAxJWRkLCB1c2U9dnQxMDIrZW5xLAotCi0jIEkndmUgc3VwcGxpZWQgdGhpcyBzbyB0aGF0IHlvdSBjYW4gaGVscCB0ZXN0IG5ldyB2YWx1ZXMgYW5kIGFkZCBvdGhlcgotIyBmZWF0dXJlcy4gIENoZWVycywgZWFybmllX2JveWRAeWFob28uY29tLgotIwotIyBTb21lIGZlYXR1cmVzIGFyZSBmcm9tIHBjYW5zaS4gIFRoZSBvcCB2YWx1ZSBpcyBmcm9tIGxpbnV4LiAgRnVuY3Rpb24ta2V5cwotIyBhcmUgZnJvbSBsaW51eC4gIFRoZXNlIGhhdmUgYmVlbiB0ZXN0ZWQgbm90IHRvIGNhdXNlIHByb2JsZW1zLiAgeGVubCB3YXMgaW4KLSMgdGhpcyBsaXN0LCBidXQgRE9FUyBjYXVzZSBwcm9ibGVtcyBzbyBpdCBoYXMgYmVlbiByZW1vdmVkCi1jeWd3aW5EQkd8RGVidWcgVmVyc2lvbiBmb3IgQ3lnd2luLAotCWFtLCBlbywgbWlyLCBtc2dyLCB4b24sCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCBuY3YjMywgcGFpcnMjNjQsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwalwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNW9+cFwzMDRxXDMwNHJcMzA0c190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNjN6XDM2MntcMzQzfFwzMzB9XDIzNH5cMzc2LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwKLQljbm9ybT1cRVs/MjVoLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlmbGFzaD1cRVs/NWhcRVs/NWwkPDIwMC8+LCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywKLQlodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sIGtOWFQ9XEVbNiQsIGtQUlY9XEVbNSQsCi0Ja2IyPVxFW0csIGticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFWzN+LCBrZW5kPVxFWzR+LCBrZjE9XEVbW0EsCi0Ja2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sCi0Ja2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sCi0Ja2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LCBrZjI9XEVbW0IsIGtmMjA9XEVbMzR+LAotCWtmMz1cRVtbQywga2Y0PVxFW1tELCBrZjU9XEVbW0UsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LAotCWtucD1cRVs2fiwga3BwPVxFWzV+LCBrc3BkPV5aLCBuZWw9Xk1eSiwgb3A9XEVbMzk7NDltLAotCXJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sIHJtYWNzPVxFWzEwbSwgcm1pcj1cRVs0bCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMxPVxFY1xFXVIsIHNjPVxFNywKLQlzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNncj1cRVswOzEwJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7JT8lcDkldDsxMiU7bSwKLQlzZ3IwPVxFWzA7MTBtLCBzbWFjcz1cRVsxMW0sIHNtaXI9XEVbNGgsIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzJnLCB2cGE9XEVbJWklcDElZGQsIHVzZT12dDEwMitlbnEsCi0KLSMgS2V5IGRlZmluaXRpb25zOgotIyBUaGUgZW5jb2RpbmdzIGZvciB1bnNoaWZ0ZWQgYXJyb3cga2V5cywgRjEtRjEyLCBIb21lLCBJbnNlcnQsIGV0Yy4gIG1hdGNoIHRoZQotIyBlbmNvZGluZ3MgdXNlZCBieSBvdGhlciB4ODYgZW52aXJvbm1lbnRzLiAgQWxsIG90aGVycyBhcmUgaW52ZW50ZWQgZm9yIERKR1BQLgotIyBPZGRseSBlbm91Z2gsIHdoaWxlIHNldmVyYWwgY29tYmluYXRpb25zIG9mIG1vZGlmaWVycyBhcmUgdGFidWxhdGVkLCB0aGVyZSBpcwotIyBub25lIGZvciBzaGlmdGVkIGN1cnNvciBrZXlzLgotIwotIwlGMQkJCVxFW1tBCi0jCUYyCQkJXEVbW0IKLSMJRjMJCQlcRVtbQwotIwlGNAkJCVxFW1tECi0jCUY1CQkJXEVbW0UKLSMJRjYJCQlcRVsxN34KLSMJRjcJCQlcRVsxOH4KLSMJRjgJCQlcRVsxOX4KLSMJRjkJCQlcRVsyMH4KLSMJRjEwCQkJXEVbMjF+Ci0jCUYxMQkJCVxFWzIzfgotIwlGMTIJCQlcRVsyNH4KLSMKLSMJRGVsZXRlCQkJXEVbM34KLSMJRG93biBBcnJvdwkJXEVbQgotIwlFbmQJCQlcRVs0fgotIwlIb21lCQkJXEVbMX4KLSMJSW5zZXJ0CQkJXEVbMn4KLSMJTGVmdCBBcnJvdwkJXEVbRAotIwlQYWdlIERvd24JCVxFWzZ+Ci0jCVBhZ2UgVXAJCQlcRVs1fgotIwlSaWdodCBBcnJvdwkJXEVbQwotIwlVcCBBcnJvdwkJXEVbQQotIwotIwlTaGlmdC1GMQkJXEVbMjV+Ci0jCVNoaWZ0LUYyCQlcRVsyNn4KLSMJU2hpZnQtRjMJCVxFWzI3fgotIwlTaGlmdC1GNAkJXEVbMjh+Ci0jCVNoaWZ0LUY1CQlcRVsyOX4KLSMJU2hpZnQtRjYJCVxFWzMwfgotIwlTaGlmdC1GNwkJXEVbMzF+Ci0jCVNoaWZ0LUY4CQlcRVszMn4KLSMJU2hpZnQtRjkJCVxFWzMzfgotIwlTaGlmdC1GMTAJCVxFWzM0fgotIwlTaGlmdC1GMTEJCVxFWzM1fgotIwlTaGlmdC1GMTIJCVxFWzM2fgotIwotIwlDdHJsLUYxCQkJXEVbNDd+Ci0jCUN0cmwtRjIJCQlcRVs0OH4KLSMJQ3RybC1GMwkJCVxFWzQ5fgotIwlDdHJsLUY0CQkJXEVbNTB+Ci0jCUN0cmwtRjUJCQlcRVs1MX4KLSMJQ3RybC1GNgkJCVxFWzUyfgotIwlDdHJsLUY3CQkJXEVbNTN+Ci0jCUN0cmwtRjgJCQlcRVs1NH4KLSMJQ3RybC1GOQkJCVxFWzU1fgotIwlDdHJsLUYxMAkJXEVbNTZ+Ci0jCUN0cmwtRjExCQlcRVs1N34KLSMJQ3RybC1GMTIJCVxFWzU4fgotIwotIwlDdHJsLURlbGV0ZQkJXEVbNDN+Ci0jCUN0cmwtRG93biBBcnJvdwkJXEVbMzh+Ci0jCUN0cmwtRW5kCQlcRVs0NH4KLSMJQ3RybC1Ib21lCQlcRVs0MX4KLSMJQ3RybC1JbnNlcnQJCVxFWzQyfgotIwlDdHJsLUxlZnQgQXJyb3cJCVxFWzM5fgotIwlDdHJsLVBhZ2UgRG93bgkJXEVbNDZ+Ci0jCUN0cmwtUGFnZSBVcAkJXEVbNDV+Ci0jCUN0cmwtUmlnaHQgQXJyb3cJXEVbNDB+Ci0jCUN0cmwtVXAgQXJyb3cJCVxFWzM3fgotIwotIwlBbHQtRjEJCQlcRVs1OX4KLSMJQWx0LUYyCQkJXEVbNjB+Ci0jCUFsdC1GMwkJCVxFWzYxfgotIwlBbHQtRjQJCQlcRVs2Mn4KLSMJQWx0LUY1CQkJXEVbNjN+Ci0jCUFsdC1GNgkJCVxFWzY0fgotIwlBbHQtRjcJCQlcRVs2NX4KLSMJQWx0LUY4CQkJXEVbNjZ+Ci0jCUFsdC1GOQkJCVxFWzY3fgotIwlBbHQtRjEwCQkJXEVbNjh+Ci0jCUFsdC1GMTEJCQlcRVs3OX4KLSMJQWx0LUYxMgkJCVxFWzgwfgotIwotIwlBbHQtRGVsZXRlCQlcRVs2NX4KLSMJQWx0LURvd24gQXJyb3cJCVxFWzYwfgotIwlBbHQtRW5kCQkJXEVbNjZ+Ci0jCUFsdC1Ib21lCQlcRVs0MX4KLSMJQWx0LUluc2VydAkJXEVbNjR+Ci0jCUFsdC1MZWZ0IEFycm93CQlcRVs2MX4KLSMJQWx0LVBhZ2UgRG93bgkJXEVbNjh+Ci0jCUFsdC1QYWdlIFVwCQlcRVs2N34KLSMJQWx0LVJpZ2h0IEFycm93CQlcRVs2Mn4KLSMJQWx0LVVwIEFycm93CQlcRVs1OX4KLSMKLSMgQWxzbzoKLSMJQWx0LUEJCQlcRVs4Mn4KLSMJQWx0LUIJCQlcRVs4Mn4KLSMJQWx0LUMJCQlcRVs4M34KLSMJQWx0LUQJCQlcRVs4NH4KLSMJQWx0LUUJCQlcRVs4NX4KLSMJQWx0LUYJCQlcRVs4Nn4KLSMJQWx0LUcJCQlcRVs4N34KLSMJQWx0LUgJCQlcRVs4OH4KLSMJQWx0LUkJCQlcRVs4OX4KLSMJQWx0LUoJCQlcRVs5MH4KLSMJQWx0LUsJCQlcRVs5MX4KLSMJQWx0LUwJCQlcRVs5Mn4KLSMJQWx0LU0JCQlcRVs5M34KLSMJQWx0LU4JCQlcRVs5NH4KLSMJQWx0LU8JCQlcRVs5NX4KLSMJQWx0LVAJCQlcRVs5Nn4KLSMJQWx0LVEJCQlcRVs5N34KLSMJQWx0LVIJCQlcRVs5OH4KLSMJQWx0LVMJCQlcRVs5OX4KLSMJQWx0LVQJCQlcRVsxMDB+Ci0jCUFsdC1VCQkJXEVbMTAxfgotIwlBbHQtVgkJCVxFWzEwMn4KLSMJQWx0LVcJCQlcRVsxMDN+Ci0jCUFsdC1YCQkJXEVbMTA0fgotIwlBbHQtWQkJCVxFWzEwNX4KLSMJQWx0LVoJCQlcRVsxMDZ+Ci1kamdwcHxhbnNpIGVtdWxhdGlvbiBmb3IgREpHUFAgYWxwaGEsCi0JYW0sIGJjZSwgbXNnciwgeGhwLCB4b24sIHh0LAotCWNvbG9ycyM4LCBpdCM4LCBwYWlycyM2NCwKLQlhY3NjPStcMDIwXCxcMDIxLVwwMzAuXlkwXDMzM2BcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWzF2LAotCWNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVt2LCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVsydiwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGljaD1cRVslcDElZEAsCi0JaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVbUywKLQlpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOG0sIGticz1eSCwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwKLQlrZW5kPVxFWzR+LCBrZjE9XEVbW0EsIGtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwKLQlrZjEyPVxFWzI0fiwga2YyPVxFW1tCLCBrZjM9XEVbW0MsIGtmND1cRVtbRCwga2Y1PVxFW1tFLAotCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwgbmVsPV5NXkosCi0Jb3A9XEVbMzc7NDBtLCByZXY9XEVbN20sIHJpPVxFW1QsIHJpbj1cRVslcDElZFQsIHJtc289XEVbbSwKLQlzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNncj1cRVswJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JWU7MjUlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTttLAotCXNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdnBhPVxFWyVpJXAxJWRkLAotCi1kamdwcDIwM3xFbnRyeSBmb3IgREpHUFAgMi4wMywKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBuZWw9Xk1eSiwKLQotZGpncHAyMDR8RW50cnkgZm9yIERKR1BQIDIuMDQsCi0JT1RicywgYW0sIEFYLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgbmN2IzMsIHBhaXJzIzY0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVsxdiwKLQljbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFW3YsIGNyPV5NLCBjdWI9XEVbJXAxJWRELAotCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgY3Z2aXM9XEVbMnYsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAotCWhvbWU9XEVbSCwgaHQ9XkksIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMLCBpbmQ9XEVbUywgaW5kbj1cRVslcDElZFMsIGludmlzPVxFWzhtLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVszfiwga2YwPVxFWzIxfiwga2YxPVxFW1tBLCBrZjEwPVxFWzIxfiwga2YyPVxFW1tCLAotCWtmMz1cRVtbQywga2Y0PVxFW1tELCBrZjU9XEVbW0UsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LAotCWtsbD1cRVs0fiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sIG5lbD1eTV5KLCByZXY9XEVbN20sCi0Jcmk9XEVbVCwgcmluPVxFWyVwMSVkVCwgcm1zbz1cRVttLCBzZXRhYj1cRVs0JXAxJWRtLAotCXNldGFmPVxFWzMlcDElZG0sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQotIyBUaGlzIGlzIHRlc3RlZCB1c2luZyBVL1dpbidzIHRlbG5ldC4gIFNjcm9sbGluZyBpcyBvbWl0dGVkIGJlY2F1c2UgaXQgaXMKLSMgYnVnZ3kuICBBbm90aGVyIG9kZCBidWcgYXBwZWFycyB3aGVuIGRpc3BsYXlpbmcgIn4iIGluIGFsdGVybmF0ZSBjaGFyYWN0ZXIKLSMgc2V0ICh0aGUgZW11bGF0b3Igc3BpdHMgb3V0IGVycm9yIG1lc3NhZ2VzKS4gIENvbXBhcmUgd2l0aCBhdHQ2Mzg2IC1URAotdXdpbnxVL1dpbiAzLjIgY29uc29sZSwKLQlhbSwgZW8sIGluLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29sb3JzIzgsIGl0IzgsIG5jdiM1OCwgcGFpcnMjNjQsCi0JYWNzYz0rXDAyMFwsXDAyMS1cMDMwLl5ZMFwzMzNgXDAwNGFcMjYxZlwzNzBnXDM2MWhcMjYwaVwzMTZqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35wXDMwNHFcMzA0clwzMDRzX3RcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjN5XDM2M3pcMzYye1wzNDN8XDMzMH1cMjM0flwzNzYsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwgZWNoPVxFWyVwMSVkWCwKLQllZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XDE3Nywga2VuZD1cRVtZLCBrZjE9XEVPUCwKLQlrZjEwPVxFT1ksIGtmMTE9XEVPWiwga2YxMj1cRU9BLCBrZjI9XEVPUSwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwga2Y3PVxFT1YsIGtmOD1cRU9XLCBrZjk9XEVPWCwKLQlraG9tZT1cRVtILCBraWNoMT1cRVtALCBuZWw9Xk1eSiwgb3A9XEVbMzk7NDltLCByYz1cRTgsCi0JcmV2PVxFWzdtLCBybWFjcz1cRVsxMG0sIHJtaXI9XEVbNGwsIHJtcGNoPVxFWzEwbSwKLQlybXNvPVxFWzI3bSwgcm11bD1cRVttLCByczE9XEVjXEVdUiwgc2M9XEU3LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHNncjA9XEVbMDsxMG0sCi0Jc21hY3M9XEVbMTFtLCBzbWlyPVxFWzRoLCBzbXBjaD1cRVsxMW0sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLCB1Nj1cRVslaSVkOyVkUiwgdTc9XEVbNm4sCi0KLSMgVGhpcyBlbnRyeSBmaXRzIHRoZSBXaW5kb3dzIE5UIGNvbnNvbGUgd2hlbiB0aGUgX1BPU0lYX1RFUk0gZW52aXJvbm1lbnQKLSMgdmFyaWFibGUgaXMgc2V0IHRvICdvbicuICBXaGlsZSB0aGUgV2luZG93cyBOVCBQT1NJWCBjb25zb2xlIGlzIHNlbGRvbSB1c2VkLAotIyB0aGUgVGVsbmV0IGNsaWVudCBzdXBwbGllZCB3aXRoIGJvdGggdGhlIFdpbmRvd3MgZm9yIFdvcmtHcm91cCAzLjExIFRDUC9JUAotIyBzdGFjayBhbmQgdGhlIFdpbjMyIChpLmUuLCBXaW5kb3dzIDk1IGFuZCBXaW5kb3dzIE5UIDMuMSBvciBsYXRlcikgb3BlcmF0aW5nCi0jIHN5c3RlbXMgaXMgbm90LCBhbmQgKHN1cnByaXNlISkgdGhleSBtYXRjaCB2ZXJ5IHdlbGwuCi0jCi0jIFNlZTogIE1TIEtub3dsZWRnZSBCYXNlIGl0ZW0gUTEwODU4MSwgZGF0ZWQgMTMtTUFZLTE5OTcsIHRpdGxlZCAiU2V0dGluZyBVcAotIyBWSSBQT1NJWCBFZGl0b3IgZm9yIFdpbmRvd3MgTlQgMy4xIi4gIFRydWUgdG8gTWljcm9zb2Z0IGZvcm0sIG5vdCBvbmx5Ci0jIGFyZSB0aGUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBhIHBpbGUgb2YgbWluZC1udW1iaW5nIGJ1cmVhdWNyYXRlc2UsCi0jIGJ1dCB0aGUgdGVybWNhcCBlbnRyeSBpcyBhY3R1YWxseSBicm9rZW4gYW5kIHVudXNhYmxlIGFzIGdpdmVuOyB0aGUgOmRvOgotIyBjYXBhYmlsaXR5IGlzIG1pc3NwZWxsZWQgImQiLgotIwotIyBUbyB1c2UgdGhpcywgeW91IG5lZWQgdG8gYSBidW5jaCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0jCi0jIFNFVCBfUE9TSVhfVEVSTT1vbgotIyBTRVQgVEVSTT1hbnNpCi0jIFNFVCBURVJNQ0FQPWxvY2F0aW9uIG9mIHRlcm1jYXAgZmlsZSBpbiBQT1NJWCBmaWxlIGZvcm1hdAotIyB3aGljaCBpcyBjYXNlLXNlbnNpdGl2ZS4KLSMgZS5nLiBTRVQgVEVSTUNBUD0vL0QvUkVTS0lUMzUvcG9zaXgvdGVybWNhcAotIyBTRVQgVE1QPS8vQy9URU1QCi0jCi0jIEltcG9ydGFudCBub3RlOiBzZXR0aW5nIHRoZSBUTVAgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gUE9TSVggc3R5bGUgcmVuZGVycwotIyBpdCBpbmNvbXBhdGlibGUgd2l0aCBhIGxvdCBvZiBvdGhlciBhcHBsaWNhdGlvbnMsIGluY2x1ZGluZyBWaXN1YWwgQysrLiBTbwotIyB5b3Ugc2hvdWxkIGhhdmUgYSBzZXBhcmF0ZSBjb21tYW5kIHdpbmRvdyBqdXN0IGZvciB2aS4gQWxsIHRoZSBvdGhlcgotIyB2YXJpYWJsZXMgbWF5IGJlIHBlcm1hbmVudGx5IHNldCBpbiB0aGUgQ29udHJvbCBQYW5lbFxTeXN0ZW0gYXBwbGV0LgotIwotIyBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIHJlc3RyaWN0aW9ucyBvZiB0aGlzIGZhY2lsaXR5IGF0Ci0jIDxodHRwOi8vd3d3Lm5lbnR1Zy5vcmcvdW5peC10by1udC9udHBvc2l4Lmh0bT4uCi0jCi0jIEZyb206IEZlZGVyaWNvIEJpYW5jaGkgPGJpYW5jaGlAbWFnbmEuY2lzaWQudW5pcGkuaXQ+LCAxNSBKYW4gMTk5NwotYW5zaS1udHxwc3hfYW5zaXxNaWNyb3NvZnQgV2luZG93cyBOVCBjb25zb2xlIFBPU0lYIEFOU0kgbW9kZSwKLQlhbSwgYncsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JYmVsPV5HLCBjbGVhcj1cRVsySiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIGh0PV5JLCBpbmQ9XEVbUywga2JzPV5ILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtWLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIG5lbD1cclxFW1MsIHJjPVxFW3UsIHJldj1cRVs3bSwKLQlyaT1cRVtULCBybXNvPVxFW20sIHNjPVxFW3MsIHNncjA9XEVbMG0sIHNtc289XEVbN20sCi0jIEZyb206IGpld0B2ZW51cy5zdW5xdWVzdC5jb20KLSMgRGF0ZTogMTkgRmViIDkzIDIzOjQxOjA3IEdNVAotIyBIZXJlJ3MgIGEgIGNvbWJpbmF0aW9uIG9mICBhbnNpIGFuZCAgdnQxMDAgdGVybWNhcAotIyBlbnRyaWVzICAgdGhhdCAgd29ya3MgIG5lYXJseSAgIHBlcmZlY3RseSAgZm9yICBtZQotIyAoR2F0ZXdheSAyMDAwIEhhbmRib29rIGFuZCBNaWNyb3NvZnQgV29ya3MgMy4wKToKLXBjbXd8UEMgcnVubmluZyBNaWNyb3NvZnQgV29ya3MsCi0JYW0sIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mi8+LCBib2xkPVxFWzFtJDwyLz4sCi0JY2xlYXI9XEVbO0hcRVsySiQ8NTAvPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1cRVtDJDwyLz4sIGN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NS8+LAotCWN1dTE9XEVbQSQ8Mi8+LCBlZD1cRVtKJDw1MC8+LCBlbD1cRVtLJDwzLz4sIGhvbWU9XEVbSCwKLQlodD1eSSwgaHRzPVxFSCQ8Mi8+LCBpbmQ9XEVEJDw1Lz4sIGlzMj1cRVsxOzI0clxFWzI0OzFILAotCWticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgbmVsPVxyXEVEJDw1Lz4sCi0JcmM9XEU4LCByZXY9XEVbN20kPDIvPiwgcmY9L3Vzci9zaGFyZS9saWIvdGFic2V0L3Z0MTAwLAotCXJpPVxFTSQ8NS8+LCBybXNvPVxFW20kPDIvPiwgcm11bD1cRVttJDwyLz4sCi0JcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAotCXNncjA9XEVbbSQ8Mi8+LCBzbXNvPVxFWzdtJDwyLz4sIHNtdWw9XEVbNG0kPDIvPiwKLQl0YmM9XEVbM2ckPDIvPiwKLQotIyBGcm9tOiBGZWRlcmljbyBCaWFuY2hpCi0jIFRoaXMgaXMgdGhlIGVudHJ5IGZvciB0aGUgT3Blbk5UIHRlcm1pbmFsLgotIyBUaGUgbnRjb25zb2xlIG5hbWUgaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkuCi0jIFRoaXMgaXMgZm9yIE9wZW5OVCAyLjAgYW5kIGxhdGVyLgotIyBMYXRlciBPcGVuTlQgd2FzIHJlbmFtZWQgdG8gSW50ZXJpeC4KLSMKLSMgUHJlc2VudGx5IGl0IGlzIGRpc3RyaWJ1dGVkIGJ5IE1pY3Jvc29mdCBhcyBTZXJ2aWNlcyBGb3IgVW5peCAoU0ZVKS4KLSMgVGhlIDMuNSBiZXRhIGNvbnRhaW5zIG5jdXJzZXMgNC4yICh0aGF0IGlzIGhlYWRlciBmaWxlcyBhbmQgZXhlY3V0YWJsZXMsCi0jIHRoZSBkb2N1bWVudGF0aW9uIGRhdGVzIGZyb20gMS45LjllKSAtVEQKLQotaW50ZXJpeHxvcGVubnR8b3Blbm50LTI1fG50Y29uc29sZXxudGNvbnNvbGUtMjV8T3Blbk5ULXRlcm0gY29tcGF0aWJsZSB3aXRoIGNvbG9yLAotCWFtLCBidywgbXNnciwKLQljb2xvcnMjOCwgY29scyM4MCwgbGluZXMjMjUsIG5jdiMzLCBwYWlycyM2NCwKLQlhY3NjPWBcMDA0YVwyNjFmXDM3MGdcMzYxaFwyNjBqXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1b35xXDMwNHJcMzYyc190XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzeVwzNzF6XDM3MntcMzczfFwzNzR9XDM3NX5cMzc2LlwwMzEtXDAzMFwsXDAyMSteUDBcMzMzcFwzMDRyXDMwNHlcMzYzelwzNjJ7XDM0M3xcMzMwfVwyMzQsCi0JYmVsPV5HLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2xlYXI9XEVbMkosIGN1Yj1cRVslcDElZEQsCi0JY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIGh0PV5JLCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVbUywKLQlpbmRuPVxFWyVwMSVkUywga2JzPV5ILCBrY2J0PVxFW1osIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbTSwga2VuZD1cRVtVLCBrZjA9XEVGQSwKLQlrZjE9XEVGMSwga2YxMD1cRUZBLCBrZjExPVxFRkIsIGtmMTI9XEVGQywga2YxMz1cRUZELAotCWtmMTQ9XEVGRSwga2YxNT1cRUZGLCBrZjE2PVxFRkcsIGtmMTc9XEVGSCwga2YxOD1cRUZJLAotCWtmMTk9XEVGSiwga2YyPVxFRjIsIGtmMjA9XEVGSywga2YyMT1cRUZMLCBrZjIyPVxFRk0sCi0Ja2YyMz1cRUZOLCBrZjI0PVxFRk8sIGtmMjU9XEVGUCwga2YyNj1cRUZRLCBrZjI3PVxFRlIsCi0Ja2YyOD1cRUZTLCBrZjI5PVxFRlQsIGtmMz1cRUYzLCBrZjMwPVxFRlUsIGtmMzE9XEVGViwKLQlrZjMyPVxFRlcsIGtmMzM9XEVGWCwga2YzND1cRUZZLCBrZjM1PVxFRlosIGtmMzY9XEVGYSwKLQlrZjM3PVxFRmIsIGtmMzg9XEVGYywga2YzOT1cRUZkLCBrZjQ9XEVGNCwga2Y0MD1cRUZlLAotCWtmNDE9XEVGZiwga2Y0Mj1cRUZnLCBrZjQzPVxFRmgsIGtmNDQ9XEVGaSwga2Y0NT1cRUZqLAotCWtmNDY9XEVGaywga2Y0Nz1cRUZtLCBrZjQ4PVxFRm4sIGtmNDk9XEVGbywga2Y1PVxFRjUsCi0Ja2Y1MD1cRUZwLCBrZjUxPVxFRnEsIGtmNTI9XEVGciwga2Y1Mz1cRUZzLCBrZjU0PVxFRnQsCi0Ja2Y1NT1cRUZ1LCBrZjU2PVxFRnYsIGtmNTc9XEVGdywga2Y1OD1cRUZ4LCBrZjU5PVxFRnksCi0Ja2Y2PVxFRjYsIGtmNjA9XEVGeiwga2Y2MT1cRUYrLCBrZjYyPVxFRi0sCi0Ja2Y2Mz1cRUZcMDE0IGtmNjQ9XEVGJCwga2Y3PVxFRjcsIGtmOD1cRUY4LCBrZjk9XEVGOSwKLQlraWNoMT1cRVtMLCBrbGw9XEVbVSwga25wPVxFW1QsIGtwcD1cRVtTLCBsbD1cRVtVLCBuZWw9Xk1eSiwKLQlvcD1cRVttLCByYz1cRVt1LCByZXY9XEVbN20sIHJpPVxFW1QsIHJpbj1cRVslcDElZFQsCi0Jcm1jdXA9XEVbMmJcRVt1XHJcRVtLLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMxPVxFYywKLQlzYz1cRVtzLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXNldGI9XEVbJXAxJXs0MH0lKyVkbSwgc2V0Zj1cRVslcDElezMwfSUrJWRtLAotCXNncjA9XEVbMG0sIHNtY3VwPVxFW3NcRVsxYiwgc21zbz1cRVsxbSwgc211bD1cRVs0bSwKLQotb3Blbm50LTM1fG50Y29uc29sZS0zNXxPcGVuTlQtdGVybTM1IGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyMzNSwgdXNlPW9wZW5udCwKLQotb3Blbm50LTUwfG50Y29uc29sZS01MHxPcGVuTlQtdGVybTUwIGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyM1MCwgdXNlPW9wZW5udCwKLQotb3Blbm50LTYwfG50Y29uc29sZS02MHxPcGVuTlQtdGVybTYwIGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyM2MCwgdXNlPW9wZW5udCwKLQotb3Blbm50LTEwMHxudGNvbnNvbGUtMTAwfE9wZW5OVC10ZXJtMTAwIGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyMxMDAsIHVzZT1vcGVubnQsCi0KLSMgT3Blbk5UIHdpZGUgdGVybWluYWxzCi1vcGVubnQtd3xvcGVubnQtMjUtd3xudGNvbnNvbGUtd3xudGNvbnNvbGUtMjUtd3xPcGVuTlQtdGVybS13IGNvbXBhdCB3aXRoIGNvbG9yLAotCWNvbHMjMTI1LCB1c2U9b3Blbm50LAotCi1vcGVubnQtMzUtd3xudGNvbnNvbGUtMzUtd3xPcGVuTlQtdGVybTM1LXcgY29tcGF0aWJsZSB3aXRoIGNvbG9yLAotCWxpbmVzIzM1LCB1c2U9b3Blbm50LXcsCi0KLW9wZW5udC01MC13fG50Y29uc29sZS01MC13fE9wZW5OVC10ZXJtNTAtdyBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0JbGluZXMjNTAsIHVzZT1vcGVubnQtdywKLQotb3Blbm50LTYwLXd8bnRjb25zb2xlLTYwLXd8T3Blbk5ULXRlcm02MC13IGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyM2MCwgdXNlPW9wZW5udC13LAotCi1vcGVubnQtdy12dHxvcGVubnQtMjUtdy12dHxudGNvbnNvbGUtdy12dHxudGNvbnNvbGUtMjUtdy12dHxPcGVuTlQtdGVybS13LXZ0IGNvbXBhdCB3aXRoIGNvbG9yLAotCWNvbHMjMTMyLCB1c2U9b3Blbm50LAotCi0jIE9wZW5OVCB0ZXJtaW5hbHMgd2l0aCBubyBzbWN1cC9ybWN1cCAobmFtZXMgbWF0Y2ggdGVybWNhcCBlbnRyaWVzKQotaW50ZXJpeC1udGl8b3Blbm50LW50aXxvcGVubnQtMjUtbnRpfG50Y29uc29sZS0yNS1udGl8T3Blbk5ULW50aSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0Jcm1jdXBALCBzbWN1cEAsIHVzZT1vcGVubnQsCi0KLW9wZW5udC0zNS1udGl8bnRjb25zb2xlLTM1LW50aXxPcGVuTlQtdGVybTM1LW50aSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0JbGluZXMjMzUsIHVzZT1vcGVubnQtbnRpLAotCi1vcGVubnQtNTAtbnRpfG50Y29uc29sZS01MC1udGl8T3Blbk5ULXRlcm01MC1udGkgY29tcGF0aWJsZSB3aXRoIGNvbG9yLAotCWxpbmVzIzUwLCB1c2U9b3Blbm50LW50aSwKLQotb3Blbm50LTYwLW50aXxudGNvbnNvbGUtNjAtbnRpfE9wZW5OVC10ZXJtNjAtbnRpIGNvbXBhdGlibGUgd2l0aCBjb2xvciwKLQlsaW5lcyM2MCwgdXNlPW9wZW5udC1udGksCi0KLW9wZW5udC0xMDAtbnRpfG50Y29uc29sZS0xMDAtbnRpfE9wZW5OVC10ZXJtMTAwLW50aSBjb21wYXRpYmxlIHdpdGggY29sb3IsCi0JbGluZXMjMTAwLCB1c2U9b3Blbm50LW50aSwKLQotIyMjIyMjIyMgQ09NTU9OIFRFUk1JTkFMIFRZUEVTCi0jCi0jIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGVybWluYWwgY2xhc3NlcyBhbmQgbWFrZXIgYnJhbmRzIHRoYXQgYXJlIHN0aWxsCi0jIHF1aXRlIGNvbW1vbiwgYnV0IGhhdmUgcHJvcHJpZXRhcnkgY29tbWFuZCBzZXRzIG5vdCBibGVzc2VkIGJ5IEFOU0kuCi0jCi0KLSMjIyMgQWx0b3MKLSMKLSMgQWx0b3MgbWFkZSBhIG1vZGVyYXRlbHkgc3VjY2Vzc2Z1bCBsaW5lIG9mIFVOSVggYm94ZXMuICBJbiAxOTkwIHRoZXkgd2VyZQotIyBib3VnaHQgb3V0IGJ5IEFjZXIsIGEgbWFqb3IgVGFpd2FuZXNlIG1hbnVmYWN0dXJlciBvZiBQQy1jbG9uZXMuCi0jIEFjZXIgaGFzIGEgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5hY2VyLmNvbS4KLSMKLSMgQWx0b3MgZGVzY3JpcHRpb25zIGZyb20gVGVkIE1pdHRlbHN0YWVkdCA8dGVkbUBhZ29yYS5yYWluLmNvbT4gNCBTZXAgMTk5MwotIyBIaXMgY29tbWVudHMgc3VnZ2VzdCB0aGV5IHdlcmUgc2hpcHBlZCB3aXRoIHRoZSBzeXN0ZW0uCi0jCi0KLSMgKGFsdG9zMjogaGFkIGV4dGVuc2lvbiBjYXBhYmlsaXRpZXMKLSMJOmMwPV5BYFxyOmMxPV5BYVxyOmMyPV5BYlxyOmMzPV5BY1xyOlwKLSMJOmM0PV5BZFxyOmM1PV5BZVxyOmM2PV5BZlxyOmM3PV5BZ1xyOlwKLSMJOmM4PV5BaFxyOmM5PV5BaVxyOmNBPV5BalxyOmNCPV5Ba1xyOlwKLSMJOmNDPV5BbFxyOmNEPV5BbVxyOmNFPV5BblxyOmNGPV5Bb1xyOgotIwk6WFU9XkFxXHI6WEQ9XkFyXHI6WFI9XkFzXHI6WEw9XkF0XHI6XAotIwk6WVU9XkFRXHI6WUQ9XkFSXHI6WVI9XkFTXHI6WUw9XkFUXHI6XAotIwk6SEw9XkFQXHI6U1A9XEVbaTpcCi0jCTpJUz1cRVtAOkRFPVxFW1A6SUw9XEVbTDpOUz1cRVtTOlBTPVxFW1Q6XAotIwk6TE89XEVbMHE6TEM9XEVbNXE6TEw9XEVbNnE6XAotIyBDb21wYXJpc29uIHdpdGggdGhlIGsqIGNhcGFiaWxpdGllcyBtYWtlcyBpdCBvYnZpb3VzIHRoYXQgdGhlIGMqIHRoaW5ncyBhcmUKLSMgc2hpZnQga2V5cy4gIEkgaGF2ZSByZW5hbWVkIHRoZW0gdG8ga2V5cyAzMiBhbmQgdXAgYWNjb3JkaW5nbHkuICBBbHNvLAotIyA6c3I6IHdhcyBnaXZlbiBhcyBhIGJvb2xlYW4tLSBlc3IpCi1hbHRvczJ8YWx0MnxhbHRvcy0yfGFsdG9zIElJLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB4bWMjMCwKLQljbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFWzFCLCBjdWYxPVxFWzFDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVsxQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpY2gxPVxFW0AsCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIGlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwga0RMPV5BbVxyLAotCWtFT0w9XkFuXHIsIGticz1eSCwga2NidD1eQUtcciwga2Nscj1eQUxcciwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1eQU1cciwga2VsPV5BTlxyLAotCWtmMD1eQUlcciwga2YxPV5BQFxyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwga2YzMj1eQWBcciwKLQlrZjMzPV5BYVxyLCBrZjM0PV5BYlxyLCBrZjM1PV5BY1xyLCBrZjM2PV5BZFxyLCBrZjM3PV5BZVxyLAotCWtmMzg9XkFmXHIsIGtmMzk9XkFnXHIsIGtmND1eQUNcciwga2Y0MD1eQWhcciwga2Y0MT1eQWlcciwKLQlrZjQyPV5BalxyLCBrZjQzPV5Ba1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLAotCWtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1cRVtmLCBraWwxPV5BSlxyLCBraW5kPV5BT1xyLAotCW5lbD1eTV5KLCBybWFtPVxFWz83bCwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwKLQlzbWFtPVxFWz83aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLSMgKGFsdG9zMzogaGFkIGV4dGVuc2lvbiBjYXBhYmlsaXRpZXMKLSMJOmMwPV5BYFxyOmMxPV5BYVxyOmMyPV5BYlxyOmMzPV5BY1xyOlwKLSMJOmM0PV5BZFxyOmM1PV5BZVxyOmM2PV5BZlxyOmM3PV5BZ1xyOlwKLSMJOmM4PV5BaFxyOmM5PV5BaVxyOmNBPV5BalxyOmNCPV5Ba1xyOlwKLSMJOmNDPV5BbFxyOmNEPV5BbVxyOmNFPV5BblxyOmNGPV5Bb1xyOgotIwk6WFU9XkFxXHI6WEQ9XkFyXHI6WFI9XkFzXHI6WEw9XkF0XHI6XAotIwk6SEw9XkFQXHI6U1A9XEVbaTpcCi0jCTpJUz1cRVtAOkRFPVxFW1A6SUw9XEVbTDpOUz1cRVtTOlBTPVxFW1Q6XAotYWx0b3MzfGFsdG9zNXxhbHQzfGFsdDV8YWx0b3MtM3xhbHRvcy01fGFsdG9zIElJSSBvciBWLAotCWJsaW5rPVxFWzVwLCByaT1cRU0sIHNncjA9XEVbcCwgdXNlPWFsdG9zMiwKLWFsdG9zNHxhbHQ0fGFsdG9zLTR8YWx0b3MgSVYsCi0JdXNlPXd5NTAsCi0jIChhbHRvczc6IGhhZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzOgotIwk6R0cjMDpHST1cRUg4OkdGPVxFSDc6XAotIwk6YzA9XkFgXHI6YzE9XkFhXHI6YzI9XkFiXHI6YzM9XkFjXHI6XAotIwk6YzQ9XkFkXHI6YzU9XkFlXHI6YzY9XkFmXHI6Yzc9XkFnXHI6XAotIwk6Yzg9XkFoXHI6Yzk9XkFpXHI6Y0E9XkFqXHI6Y0I9XkFrXHI6XAotIwk6Y0M9XkFsXHI6Y0Q9XkFtXHI6Y0U9XkFuXHI6Y0Y9XkFvXHI6Ci0jIENvbXBhcmlzb24gd2l0aCB0aGUgayogY2FwYWJpbGl0aWVzIG1ha2VzIGl0IG9idmlvdXMgdGhhdCB0aGUgYyogdGhpbmdzIGFyZQotIyBzaGlmdCBrZXlzLiAgSSBoYXZlIHJlbmFtZWQgdGhlbSB0byBrZXlzIDMyIGFuZCB1cCBhY2NvcmRpbmdseS4gIEkgaGF2ZQotIyBhbHNvIG1hZGUgdGhpcyBlbnRyeSByZWxhdGl2ZSB0byBhZG0xMiBpbiBvcmRlciB0byBnaXZlIGl0IGFuIDxzZ3I+LiBUaGUKLSMgPGludmlzPiBpbXBvcnRlZCBieSB1c2U9YWRtK3NnciBtYXkgd29yaywgbGV0IG1lIGtub3cuIC0tIGVzcikKLWFsdG9zN3xhbHQ3fGFsdG9zIFZJSSwKLQlhbSwgbWlyLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQlhY3NjPWo1azNsMm0xbjhxXDp0NHU5dj13MHg2LCBibGluaz1cRUcyLCBib2xkPVxFR3QsCi0JY2xlYXI9XEUrXl4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRpbT1cRUdwLCBkbDE9XEVSLCBlZD1cRVksIGVsPVxFVCwgaG9tZT1eXiwgaHQ9XkksIGlsMT1cRUUsCi0JaW5kPV5KLCBpbnZpcz1cRUcxLAotCWlzMj1cRWBcOlxFZShcRU9cRWU2XEVjNDFcRX40XEVjMjFcRXVcRX4yLCBrREw9XkFtXHIsCi0Ja0VPTD1eQW5cciwga2JzPV5ILCBrY2J0PV5BS1xyLCBrY2xyPV5BTFxyLCBrY3ViMT1eSCwKLQlrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1eQU1cciwga2VsPV5BTlxyLAotCWtmMD1eQUlcciwga2YxPV5BQFxyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwga2YzMj1eQWBcciwKLQlrZjMzPV5BYVxyLCBrZjM0PV5BYlxyLCBrZjM1PV5BY1xyLCBrZjM2PV5BZFxyLCBrZjM3PV5BZVxyLAotCWtmMzg9XkFmXHIsIGtmMzk9XkFnXHIsIGtmND1eQUNcciwga2Y0MD1eQWhcciwga2Y0MT1eQWlcciwKLQlrZjQyPV5BalxyLCBrZjQzPV5Ba1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLAotCWtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwga2lsMT1eQUpcciwga2luZD1eQU9cciwKLQlrbnA9XEVLLCBrcHA9XEVKLCBtYzQ9XEVKLCBtYzU9XEVkIywgbmVsPV5NXkosIHJpPVxFaiwKLQlybWlyPVxFciwgc21pcj1cRXEsIHVzZT1hZG0rc2dyLAotYWx0b3M3cGN8YWx0N3BjfGFsdG9zIFBDIFZJSSwKLQlrZW5kPVxFVCwgdXNlPWFsdG9zNywKLQotIyMjIyBIZXdsZXR0LVBhY2thcmQgKGhwKQotIwotIwlIZXdsZXR0LVBhY2thcmQKLSMJODAwMCBGb290aGlsbHMgQmx2ZAotIwlSb3NldmlsbGUsIENBIDk1NzQ3Ci0jCVZveDogMS0oOTE2KS03ODUtNDM2MwkoVGVjaG5pY2FsIHJlc3BvbnNlIGxpbmUgZm9yIFZEVHMpCi0jCSAgICAgMS0oODAwKS02MzMtMzYwMAkoR2VuZXJhbCBjdXN0b21lciBzdXBwb3J0KQotIwotIwotIyBBcyBvZiBNYXJjaCAxOTk4LCBIUCBubyBsb25nZXIgaGFzIGFueSB0ZXJtaW5hbHMgaW4gcHJvZHVjdGlvbi4KLSMgVGhlIDcwMCBzZXJpZXMgKDIyLCAzMiwgNDEsIDQ0LCA5MiwgOTQsIDk2LCA5OCkgaXMgc3RpbGwgYmVpbmcKLSMgc3VwcG9ydGVkICh0aGV5IHN0aWxsIGhhdmUgcGFydHMpLiBTbyBhcmUgdGhlIDIzOTJhIGFuZCAyMzk0YS4KLSMgU2VlIHRoZSBXT1JLU1RBVElPTiBDT05TT0xFUyBzZWN0aW9uIGZvciB0aGUgNzAwcy4KLSMKLQotIyBHZW5lcmljIEhQIHRlcm1pbmFsIC0gdGhpcyBzaG91bGQgKGhvcGVmdWxseSkgd29yayBvbiBhbnkgSFAgdGVybWluYWwuCi1ocGdlbmVyaWN8aHB8aGV3bGV0dC1wYWNrYXJkIGdlbmVyaWMgdGVybWluYWwsCi0JT1RicywgT1RwdCwgYW0sIGRhLCBkYiwgbWlyLCB4aHAsCi0JY29scyM4MCwgbGluZXMjMjQsIGxtIzAsIHZ0IzYsCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEUmYSVwMiVkYyVwMSVkWSQ8Nj4sIGN1dTE9XEVBLCBkY2gxPVxFUCwgZGwxPVxFTSwKLQllZD1cRUosIGVsPVxFSywgaHBhPVxFJmElcDElZEMsIGh0PV5JLCBodHM9XEUxLCBpbDE9XEVMLAotCWluZD1eSiwga2JzPV5ILCBrY2J0PVxFaSwgcm1pcj1cRVIsIHJtc289XEUmZEAsIHJtdWw9XEUmZEAsCi0Jc2dyMD1cRSZkQCwgc21pcj1cRVEsIHNtc289XEUmZEosIHNtdWw9XEUmZEQsIHRiYz1cRTMsCi0JdnBhPVxFJmElcDElZFksCi0KLWhwMTEwfGhld2xldHQtcGFja2FyZCBtb2RlbCAxMTAgcG9ydGFibGUsCi0JbGluZXMjMTYsIHVzZT1ocGdlbmVyaWMsCi0KLWhwK3BmaytjcnxocCBmdW5jdGlvbiBrZXlzIHdpdGggQ1IsCi0Ja2YxPVxFcFxyLCBrZjI9XEVxXHIsIGtmMz1cRXJcciwga2Y0PVxFc1xyLCBrZjU9XEV0XHIsCi0Ja2Y2PVxFdVxyLCBrZjc9XEV2XHIsIGtmOD1cRXdcciwKLQotaHArcGZrLWNyfGhwIGZ1bmN0aW9uIGtleXMgdy9vIENSLAotCWtmMT1cRXAsIGtmMj1cRXEsIGtmMz1cRXIsIGtmND1cRXMsIGtmNT1cRXQsIGtmNj1cRXUsIGtmNz1cRXYsCi0Ja2Y4PVxFdywKLQotIyBUaGUgaHAyNjIxcyB1c2UgdGhlIHNhbWUga2V5cyBmb3IgdGhlIGFycm93cyBhbmQgZnVuY3Rpb24ga2V5cywKLSMgYnV0IG5vdCBzZXBhcmF0ZSBlc2NhcGUgc2VxdWVuY2VzLiBUaGVzZSBkZWZpbml0aW9ucyBhbGxvdyB0aGUKLSMgdXNlciB0byB1c2UgdGhvc2Uga2V5cyBhcyBhcnJvdyBrZXlzIHJhdGhlciB0aGFuIGFzIGZ1bmN0aW9uCi0jIGtleXMuCi1ocCtwZmsrYXJyb3dzfGhwIGFsdGVybmF0ZSBhcnJvdyBkZWZpbml0aW9ucywKLQlrY3ViMT1cRXVcciwga2N1ZDE9XEV3XHIsIGtjdWYxPVxFdlxyLCBrY3V1MT1cRXRcciwga2YxQCwKLQlrZjJALCBrZjNALCBrZjRALCBrZjVALCBrZjZALCBrZjdALCBrZjhALCBraG9tZT1cRXBcciwga2luZD1cRXJcciwKLQlrbGw9XEVxXHIsIGtyaT1cRXNcciwKLQotaHArYXJyb3dzfGhwIGFycm93IGRlZmluaXRpb25zLAotCWtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2hvbWU9XEVoLAotCWtpbmQ9XEVTLCBrbGw9XEVGLCBrcmk9XEVULAotCi0jIEdlbmVyaWMgc3R1ZmYgZnJvbSB0aGUgSFAgMjYyeCBzZXJpZXMKLSMKLWhwMjYyeHxIUCAyNjJ4IHRlcm1pbmFscywKLQl4aHAsCi0JYmxpbms9XEUmZEEsIGRjaDE9XEVQJDwyPiwgZWQ9XEVKLCBodD1cMDExJDwyPiwgaW5kPVxFUywKLQlpbnZpcz1cRSZkUywgaXA9JDwyPiwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKLQlrY3V1MT1cRUEsIGtkY2gxPVxFUCwga2RsMT1cRU0sIGtlZD1cRUosIGtlbD1cRUssIGtob21lPVxFaCwKLQlraWNoMT1cRVEsIGtpbDE9XEVMLCBraW5kPVxFUywga25wPVxFVSwga3BwPVxFViwga3JpPVxFVCwKLQlrcm1pcj1cRVIsIHJldj1cRSZkQiwgcm1reD1cRSZzMEEsIHJtc289XEUmZEAsIHJtdWw9XEUmZEAsCi0Jc2dyPVxFJmQlezY0fSU/JXAxJXQlezY2fSV8JTslPyVwMiV0JXs2OH0lfCU7JT8lcDMldCV7NjZ9JXwlOyU/JXA0JXQlezY1fSV8JTslYywKLQlzZ3IwPVxFJmRALCBzbWt4PVxFJnMxQSwgc21zbz1cRSZkQiwgc211bD1cRSZkRCwKLQotIyBOb3RlOiBubyA8aG9tZT4gb24gSFBzIHNpbmNlIHRoYXQgaG9tZXMgdG8gdG9wIG9mIG1lbW9yeSwgbm90IHNjcmVlbi4KLSMgRHVlIHRvIHNldmVyZSAyNjIxIGJyYWluZGFtYWdlLCB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSBhcnJvdyBrZXlzIHRvCi0jIHRyYW5zbWl0IGFueXRoaW5nIGF0IGFsbCBpcyB0byB0dXJuIG9uIHRoZSBmdW5jdGlvbiBrZXkgbGFiZWxzCi0jIHdpdGggPHNta3g+LCBhbmQgZXZlbiB0aGVuIHRoZSB1c2VyIGhhcyB0byBob2xkIGRvd24gc2hpZnQhCi0jIFRoZSBkZWZhdWx0IDI2MjEgdHVybnMgb2ZmIHRoZSBsYWJlbHMgZXhjZXB0IHdoZW4gaXQgaGFzIHRvIHRvCi0jIGVuYWJsZSB0aGUgZnVuY3Rpb24ga2V5cy4gSWYgeW91ciBpbnN0YWxsYXRpb24gcHJlZmVycyBsYWJlbHMKLSMgb24gYWxsIHRoZSB0aW1lLCBvciBvZmYgYWxsIHRoZSB0aW1lIChhdCB0aGUgImV4cGVuc2UiIG9mIHRoZQotIyBmdW5jdGlvbiBrZXlzKSwgdXNlIDI2MjEtbmwgb3IgMjYyMS13bC4KLSMKLSMgTm90ZTogdGhlcmUgYXJlIG5ld2VyIFJPTXMgZm9yIDI2MjEncyB0aGF0IGFsbG93IHlvdSB0byBzZXQKLSMgc3RyYXAgQSBzbyB0aGUgcmVndWxhciBhcnJvdyBrZXlzIHhtaXQgXEVBLCBldGMsIGFzIHdpdGggdGhlCi0jIDI2NDUuIEhvd2V2ZXIsIGV2ZW4gd2l0aCB0aGlzIHN0cmFwIHNldCwgdGhlIHRlcm1pbmFsIHN0b3BzCi0jIHhtaXR0aW5nIGlmIHlvdSByZXNldCBpdCwgdW50aWwgeW91IHVuc2V0IGFuZCByZXNldCB0aGUgc3RyYXAhCi0jIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBzZXQvdW5zZXQgdGhlIHN0cmFwIHdpdGggYW4gZXNjYXBlCi0jIHNlcXVlbmNlLCB3ZSBkb24ndCB1c2UgaXQgaW4gdGhlIGRlZmF1bHQuCi0jIElmIHlvdSBsaWtlLCB5b3UgY2FuIHVzZSAyNjIxLWJhIChicmFpbi1kYW1hZ2VkIGFycm93IGtleXMpLgotaHAyNjIxLWJhfDI2MjEgdy9uZXcgcm9tIGFuZCBzdHJhcCBBIHNldCwKLQlybWt4QCwgc21reEAsIHVzZT1ocCthcnJvd3MsIHVzZT1ocDI2MjEsCi0KLSMgaHAyNjIxIHdpdGggZnVuY3Rpb24gbGFiZWxzLiBNb3N0IG9mIHRoZSB0aW1lIHRoZXkgYXJlIG9mZiwKLSMgYnV0IGluc2lkZSB2aSwgdGhlIGZ1bmN0aW9uIGtleSBsYWJlbHMgYXBwZWFyLiBZb3UgaGF2ZSB0bwotIyBob2xkIGRvd24gc2hpZnQgdG8gZ2V0IHRoZW0gdG8geG1pdC4KLWhwMjYyMXxocDI2MjFhfGhwMjYyMUF8MjYyMXwyNjIxYXwyNjIxQXxocDI2MjEtd2x8MjYyMS13bHxocCAyNjIxIHcvbGFiZWxzLAotCWlzMj1cRSZqQVxyLCBybWt4PVxFJmpBLCB1c2U9aHAyNjIxLWZsLAotaHAyNjIxLWZsfGhwIDI2MjEsCi0JeGhwQCwgeG9uLAotCXBiIzE5MjAwLAotCWNidD1cRWksIGN1cD1cRSZhJXAyJWRjJXAxJWRZLCBkY2gxPVxFUCQ8Mj4sIGh0PVwwMTEkPDI+LAotCWlwPSQ8Mj4sIGlzMj1cRSZqQFxyLCBybWt4PVxFJmpALCBybXNvPVxFJmRALCBybXVsPVxFJmRALAotCXNncjA9XEUmZEAsIHNta3g9XEUmakIsIHNtc289XEUmZEQsIHNtdWw9XEUmZEQsCi0JdXNlPWhwK3BmaytjciwgdXNlPWhwZ2VuZXJpYywKLQotIyBUbyB1c2UgaHAyNjIxcCBwcmludGVyLCBzZXRlbnYgVEVSTT0yNjIxcCwgUFJJTlRFUj0yNjEycAotaHAyNjIxcHxocCAyNjIxIHdpdGggcHJpbnRlciwKLQltYzQ9XEUmcDEzQywgbWM1PVxFJnAxMUMsIHVzZT1ocDI2MjEsCi0KLWhwMjYyMXAtYXxocDI2MjFwIHdpdGggZm4gYXMgYXJyb3dzLAotCXVzZT1ocCtwZmsrYXJyb3dzLCB1c2U9aHAyNjIxcCwKLQotIyBocDI2MjEgd2l0aCBrNDUga2V5Ym9hcmQKLWhwMjYyMS1rNDV8aHAyNjIxazQ1fGs0NXxocCAyNjIxIHdpdGggNDUga2V5Ym9hcmQsCi0Ja2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsCi0Ja2hvbWU9XEVoLCBybWt4PVxFJnMwQSwgc21reD1cRSZzMUEsIHVzZT1ocDI2MjEsCi0KLSMgMjYyMSB1c2luZyBhbGwgNDggbGluZXMgb2YgbWVtb3J5LCBvbmx5IDI0IHZpc2libGUgYXQgYW55IHRpbWUuCi1ocDI2MjEtNDh8NDggbGluZSAyNjIxLAotCWxpbmVzIzQ4LAotCWN1cD1cRSZhJXAyJWRjJXAxJWRSLCBob21lPVxFSCwgdnBhPVxFJmElcDElZFIsCi0JdXNlPWhwMjYyMSwKLQotIyAyNjIxIHdpdGggbm8gbGFiZWxzIGV2ZXIuIEFsc28gcHJldmVudHMgdmkgZGVsYXlzIG9uIGVzY2FwZS4KLWhwMjYyMS1ubHxocCAyNjIxIHdpdGggbm8gbGFiZWxzLAotCWtjdWIxQCwga2N1ZDFALCBrY3VmMUAsIGtjdXUxQCwga2hvbWVALCBybWt4QCwgc21reEAsCi0JdXNlPWhwMjYyMS1mbCwKLQotIyBOZWVkZWQgZm9yIFVDQiBBUlBBVkFYIGNvbnNvbGUsIHNpbmNlIGxzaS0xMSBleHBhbmRzIHRhYnMKLSMgKHdyb25nKS4KLSMKLWhwMjYyMS1udHxocCAyNjIxIHcvbm8gdGFicywKLQlodEAsIHVzZT1ocDI2MjEsCi0KLSMgSHAgMjYyNCBCIHdpdGggNCBvciAxMCBwYWdlcyBvZiBtZW1vcnkuCi0jCi0jIFNvbWUgYXNzdW1wdGlvbnMgYXJlIG1hZGUgd2l0aCB0aGlzIGVudHJ5LiBUaGVzZSBzZXR0aW5ncyBhcmUKLSMgTk9UIHNldCB1cCBieSB0aGUgaW5pdGlhbGl6YXRpb24gc3RyaW5ncy4KLSMKLSMgUG9ydCBDb25maWd1cmF0aW9uCi0jIAlSZWN2UGFjZT1Yb24vWG9mZgotIyAJWG1pdFBhY2U9WG9uL1hvZmYKLSMgCVN0cmlwTnVsRGVsPVllcwotIwotIyBUZXJtaW5hbCBDb25maWd1cmF0aW9uCi0jIAlJbmhIbmRTaGs9WWVzCi0jIAlJbmhEQzI9WWVzCi0jIAlYbWl0Rm5jdG4oQSk9Tm8KLSMgCUluaEVvbFdycD1ObwotIwotIyBOb3RlOiB0aGUgMjYyNCBET0VTIGhhdmUgYSB0cnVlIDxob21lPiwgYmVsaWV2ZSBpdCBvciBub3QhCi0jCi0jIFRoZSAyNjI0IGhhcyBhbiAiZXJyb3IgbGluZSIgdG8gd2hpY2ggbWVzc2FnZXMgY2FuIGJlIHNlbnQuCi0jIFRoaXMgaXMgQ0xPU0UgdG8gd2hhdCBpcyBleHBlY3RlZCBmb3IgYSAic3RhdHVzIGxpbmUiLiBIb3dldmVyLAotIyBhZnRlciBhIG1lc3NhZ2UgaXMgc2VudCB0byB0aGUgImVycm9yIGxpbmUiLCB0aGUgbmV4dCBjYXJyaWFnZQotIyByZXR1cm4gaXMgRUFURU4gYW5kIHRoZSAiZXJyb3IgbGluZSIgaXMgdHVybmVkIGJhY2sgb2ZmIGFnYWluIQotIyBTbyBJIGd1ZXNzIHdlIGNhbid0IGRlZmluZSA8aHM+LCA8ZXNsb2s+LCA8d3NsPiwgPGRzbD4sIDxmc2w+LCA8dHNsPi4KLSMKLSMgVGhpcyBlbnRyeSBzdXBwb3J0cyBlbWFjcyAoYW5kIGFueSBvdGhlciBwcm9ncmFtIHRoYXQgdXNlcyByYXcKLSMgbW9kZSkgYXQgNDgwMCBiYXVkIGFuZCBsZXNzLiBJIGNvdWxkbid0IGdldCB0aGUgcGFkZGluZyByaWdodAotIyBmb3IgOTYwMC4KLSMKLSMgKGhwMjYyNDogcmVwbGFjZWQgTlVMIHNlcXVlbmNlcyBpbiBmbGFzaCB3aXRoIG1hbmRhdG9yeSBwYXVzZXMgLS0gZXNyKQotaHAyNjI0fGhwMjYyNGF8aHAyNjI0YnxocDI2MjRiLTRwfEhld2xldHQgUGFja2FyZCAyNjI0IEIsCi0JZGEsIGRiLAotCWxtIzk2LAotCWZsYXNoPVxFJncxM0YkPDY2Lz5cRSZ3MTJGJDw2Ni8+XEUmdzEzRiQ8NjYvPlxFJncxMkYsCi0JdXNlPWhwK2xhYmVscywgdXNlPXNjcmhwLAotCi0jIFRoaXMgaHAyNjI2IGVudHJ5IGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGZhbmN5IHdpbmRvd2luZyBzdHVmZgotIyBvZiB0aGUgMjYyNi4KLSMKLSMgSW5kZWVkLCB0ZXJtaW5mbyBkb2VzIG5vdCB5ZXQgaGFuZGxlIHN1Y2ggc3R1ZmYuIFNpbmNlIGNoYW5naW5nCi0jIGFueSB3aW5kb3cgY2xlYXJzIG1lbW9yeSwgaXQgaXMgcHJvYmFibHkgbm90IHBvc3NpYmxlIHRvIHVzZQotIyB0aGlzIGZvciBzY3JlZW4gb3B0LgotIwotIyBlZCBpcyBpbmNyZWRpYmx5IHNsb3cgbW9zdCBvZiB0aGUgdGltZSAtIEkgYW0gZ3Vlc3NpbmcgYXQgdGhlCi0jIGV4YWN0IHBhZGRpbmcuIFNpbmNlIHRoZSB0ZXJtaW5hbCB1c2VzIHhvZmYveG9uIHRoaXMgaXMgaW50ZW5kZWQKLSMgb25seSBmb3IgY29zdCBjb21wdXRhdGlvbiwgc28gdGhhdCB0aGUgdGVybWluYWwgd2lsbCBwcmVmZXIgZWwKLSMgb3IgZXZlbiBkbDEgd2hpY2ggaXMgcHJvYmFibHkgZmFzdGVyIQotIwotIyBcRURcRUpcRUMgaGFjayBmb3IgZWQgZnJvbSBFZCBCcmFkZm9yZCAtIGFwcGFyZW50bHkgZWQgaXMgb25seQotIyBleHRyYSBzbG93IG9uIHRoZSBsYXN0IGxpbmUgb2YgdGhlIHdpbmRvdy4KLSMKLSMgVGhlIHBhZGRpbmcgcHJvYmFibHkgc2hvdWxkIGJlIGNoYW5nZWQuCi0jCi1ocDI2MjZ8aHAyNjI2YXxocDI2MjZwfGhwIDI2MjYsCi0JZGEsIGRiLAotCWxtIzAsIHBiIzE5MjAwLAotCWVkPVxFRFxFSiQ8NTAwPlxFQywgaW5kbj1cRSZyJXAxJWRELCBpcD0kPDQ+LAotCWlzMj1cRSZqQFxyLCByaW49XEUmciVwMSVkVSwgdXNlPWhwK3BmaytjciwKLQl1c2U9aHArbGFiZWxzLCB1c2U9c2NyaHAsCi0KLSMgVGhpcyBlbnRyeSBpcyBmb3Igc3lzbGluZS4gSXQgYWxsb2NhdGVzIGEgMjMgbGluZSB3aW5kb3cgd2l0aAotIyBhIDExNSBsaW5lIHdvcmtzcGFjZSBmb3IgcmVndWxhciB1c2UsIGFuZCBhIDEgbGluZSB3aW5kb3cgZm9yCi0jIHRoZSBzdGF0dXMgbGluZS4KLSMKLSMgVGhpcyBhc3N1bWVzIHBvcnQgMiBpcyBiZWluZyB1c2VkLgotIyBUdXJuIG9mZiBob3Jpem9udGFsIGxpbmUsIENyZWF0ZSB3cyAjMSB3aXRoIDExNSBsaW5lcywKLSMgQ3JlYXRlIHdzICMyIHdpdGggMSBsaW5lLCBDcmVhdGUgd2luZG93ICMxIGxpbmVzIDEtMjMsCi0jIENyZWF0ZSB3aW5kb3cgIzIgbGluZXMgMjQtMjQsIEF0dGFjaCBjdXJzb3IgdG8gd29ya3NwYWNlICMxLgotIyBOb3RlIHRoYXQgdGhpcyBjbGVhcnMgdGhlIHRhYnMgc28gaXQgbXVzdCBiZSBkb25lIGJ5IHRzZXQgYmVmb3JlCi0jIGl0IHNldHMgdGhlIHRhYnMuCi0jCi1ocDI2MjYtc3xocCAyNjI2IHVzaW5nIG9ubHkgMjMgbGluZXMsCi0JZXNsb2ssIGhzLAotCWxpbmVzIzIzLAotCWZzbD1cRSZkQFxFJnc3ZjJwMUlcRSZ3NGYxSSwKLQlpczE9XEUmcTN0MHswSCBcRSZ3MGYxMTVuMUkgXEUmdzBmMW4ySSBcRSZ3MmYxaTBkMHUyMmwwUyBcRSZ3MmYyaTBkMjN1MjNsMFMgXEUmdzdmMnAxSSBcciwKLQl0c2w9XEUmdzdmMnAySVxFJnc0ZjJJXHJcRUtcRSZhJXAxJWRDLCB1c2U9aHAyNjI2LAotIyBGb3JjZSB0ZXJtaW5hbCBiYWNrIHRvIDI0IGxpbmVzIGFmdGVyIGJlaW5nIDIzLgotaHAyNjI2LW5zfGhwIDI2MjYgdXNpbmcgYWxsIDI0IGxpbmVzLAotCWlzMT1cRSZxM3QwezBIIFxFJncwZjExOG4xSSBcRSZ3MGYxbjJJIFxFJncyZjFpMGQwdTIzbDBTIFxFJnczZjJJIFxFJnc3ZjJwMUkgXHIsCi0JdXNlPWhwMjYyNiwKLSMgVmFyaW91cyBlbnRyaWVzIHVzZWZ1bCBmb3Igc21hbGwgd2luZG93cyBvbiAyNjI2LgotaHAyNjI2LTEyfGhld2xldHQtcGFja2FyZCAyNjI2IDEyIGxpbmVzLAotCWxpbmVzIzEyLCB1c2U9aHAyNjI2LAotaHAyNjI2LTEyeDQwfGhld2xldHQtcGFja2FyZCAyNjI2IDEyIGxpbmVzIDQwIGNvbHVtbnMsCi0JY29scyM0MCwgbGluZXMjMTIsIHVzZT1ocDI2MjYsCi1ocDI2MjYteDQwfGhld2xldHQtcGFja2FyZCAyNjI2IDQwIGNvbHVtbnMsCi0JY29scyM0MCwgdXNlPWhwMjYyNiwKLWhwMjYyNi0xMi1zfGhld2xldHQtcGFja2FyZCAyNjI2IDExIGxpbmVzIHBsdXMgc3RhdHVzLAotCWxpbmVzIzExLCB1c2U9aHAyNjI2LXMsCi0KLSMKLSMgaHAyNjI3IGNvbG9yIHR1YmVzIGZyb20gVW5pdmVyc2l0eSBvZiBXaXNjb25zaW4KLSMKLWhwMjYyN2EtcmV2fGhwIDI2Mjcgd2l0aCByZXZlcnNlIHZpZGVvIGNvbG9ycywKLQljcj1eTSwgY3VkMT1eSiwgaHQ9XkksIGluZD1eSiwKLQlpczI9XEUmdjBtMWEwYjBjMXgxeTF6MWkwYTBiMWMxeDF5MXowaTBTXEUmakBcclxFM1xyLAotCWticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBuZWw9Xk1eSiwgcm11bD1cRSZ2MFNcRSZkQCwKLQlzbXVsPVxFJmREXEUmdjFTLCB1c2U9aHAyNjIxLW5sLAotaHAyNjI3YXxocCAyNjI3IGNvbG9yIHRlcm1pbmFsIHdpdGggbm8gbGFiZWxzLAotCWNyPV5NLCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLAotCWlzMj1cRSZ2MG0xYTFiMGMxaTBhMWIxYzJpMWEwYjBjMGkwU1xFJmpAXHJcRTNcciwKLQlrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbmVsPV5NXkosIHJtc289XEUmdjBTLAotCXJtdWw9XEUmdjBTXEUmZEAsIHNtc289XEUmdjJTLCBzbXVsPVxFJmREXEUmdjFTLAotCXVzZT1ocDI2MjEtbmwsCi1ocDI2MjdjfGhwIDI2MjcgY29sb3IgKGN5YW4pIHRlcm1pbmFsIHdpdGggbm8gbGFiZWxzLAotCWNyPV5NLCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLAotCWlzMj1cRSZ2MG0xYTBiMGMyaTFhMWIwYzFpMGExYjFjMGkwU1xFJmpAXHJcRTNcciwKLQlrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbmVsPV5NXkosIHVzZT1ocDI2MjdhLAotCi0jIGhwMjY0MGEgZG9lc24ndCBoYXZlIHRoZSBZIGN1cnNvciBhZGRyZXNzaW5nIGZlYXR1cmUsIGFuZCBDIGlzCi0jIG1lbW9yeSByZWxhdGl2ZSBpbnN0ZWFkIG9mIHNjcmVlbiByZWxhdGl2ZSwgYXMgd2UgbmVlZC4KLSMKLWhwMjY0MGF8aHAgMjY0MGEsCi0JY3VwQCwgcm1reEAsIHNta3hALCB1c2U9aHAyNjQ1LAotCi1ocDI2NDBifGhwMjY0NGF8aHAgMjY0eCBzZXJpZXMsCi0Jcm1reEAsIHNta3hALCB1c2U9aHAyNjQ1LAotCi0jIChocDI2NDFhOiByZW1vdmVkIHVua25vd24gOmd1OiAtLSBlc3IpCi1ocDI2NDFhfGhwMjY0NWF8aHAyNjQ3YXxIUCAyNjQ/QSBzZXJpZXMgQlJMIGVudHJ5LAotCWFtLCBkYSwgZGIsIG1pciwgeGhwLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFJmElcDIlMmRjJXAxJTJkWSwgY3V1MT1cRUEsIGRjaDE9XEVQLCBkbDE9XEVNLAotCWVkPVxFSiwgZWw9XEVLLCBocGE9XEUmYSVwMSUyZEMsIGh0PV5JLAotCWlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3N0ZCwgaWwxPVxFTCwgaW5kPV5KLAotCWlzMj1cRUUkPDUwMC8+LCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbmVsPV5NXkosCi0Jcm1pcj1cRVIsIHJtc289XEUmZEAsIHNtaXI9XEVRLCBzbXNvPVxFJmRCLAotCXZwYT1cRSZhJXAxJTJkWSwKLQotIyBUaGlzIHRlcm1pbmFsIHNob3VsZCBiZSB1c2VkIGF0IDQ4MDAgYmF1ZCBvciBsZXNzLiBJdCBuZWVkcyBwYWRkaW5nIGZvcgotIyBwbGFpbiBjaGFyYWN0ZXJzIGF0IDk2MDAsIEkgZ3Vlc3NlZCBhdCBhbiBhcHByb3ByaWF0ZSBjciBkZWxheS4gIEl0IHJlYWxseQotIyB3YW50cyBeRS9eRiBoYW5kc2hha2luZywgYnV0IHRoYXQgZG9lc24ndCB3b3JrIHdlbGwgZXZlbiBpZiB5b3Ugd3JpdGUKLSMgc29mdHdhcmUgdG8gc3VwcG9ydCBpdC4KLWhwMjY0NXxocDQ1fEhQIDI2NDUgc2VyaWVzLAotCXBiIzk2MDAsCi0JYmxpbms9XEUmZEEsIGNyPVxyJDwyMD4sIGRpbT1cRSZkSCwga2N0YWI9XEUyLCBrY3ViMT1cRUQsCi0Ja2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2RjaDE9XEVQLCBrZGwxPVxFTSwKLQlrZWQ9XEVKLCBrZWw9XEVLLCBraG9tZT1cRWgsIGtodHM9XEUxLCBraWNoMT1cRVEsIGtpbDE9XEVMLAotCWtpbmQ9XEVTLCBrbnA9XEVVLCBrcHA9XEVWLCBrcmk9XEVULCBrcm1pcj1cRVIsIHJldj1cRSZkQiwKLQlybWt4PVxFJnMwQSwKLQlzZ3I9XEUmZCV7NjR9JT8lcDEldCV7NjZ9JXwlOyU/JXAyJXQlezY4fSV8JTslPyVwMyV0JXs2Nn0lfCU7JT8lcDQldCV7NjV9JXwlOyU/JXA1JXQlezcyfSV8JTslPyVwNiV0JXs2Nn0lfCU7JWMsCi0Jc2dyMD1cRSZkQCwgc21reD1cRSZzMUEsIHNtdWw9XEUmZEQsIHVzZT1ocGdlbmVyaWMsCi0jIFlvdSBzaG91bGQgdXNlIHRoaXMgdGVybWluYWwgYXQgNDgwMCBiYXVkIG9yIGxlc3MuCi1ocDI2NDh8aHAyNjQ4YXxIUCAyNjQ4YSBncmFwaGljcyB0ZXJtaW5hbCwKLQljbGVhcj1cRUhcRUokPDUwPiwgY3VwPVxFJmElcDIlZGMlcDElZFkkPDIwPiwKLQlkY2gxPVxFUCQ8Nz4sIGlwPSQ8NT4sIHVzZT1ocDI2NDUsCi0KLSMgVGhlIEhQIDE1MCB0ZXJtaW5hbCBpcyBhIGZhaXJseSB2YW5pbGxhIEhQIHRlcm1pbmFsLCB3aXRoIHRoZQotIyBjbHJlb2wgc3RhbmRvdXQgcHJvYmxlbS4gSXQgYWxzbyBoYXMgZ3JhcGhpY3MgY2FwYWJpbGl0aWVzIGFuZAotIyBhIHRvdWNoIHNjcmVlbiwgd2hpY2ggd2UgZG9uJ3QgZGVzY3JpYmUgaGVyZS4KLWhwMTUwfGhld2xldHQgcGFja2FyZCBNb2RlbCAxNTAsCi0JT1RicywgdXNlPWhwMjYyMiwKLQotIyBIUCAyMzgyYSB0ZXJtaW5hbHMsICJ0aGUgbGl0dGxlIG9uZXMuIiBUaGV5IGRvbid0IGhhdmUgYW55Ci0jIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IHN1cHBvcnQgYW5kIHNlbmRpbmcgb3V0IF5OL15PIHdpbGwKLSMgbGVhdmUgdGhlIHNjcmVlbiBibGFuay4KLWhwMjM4MmF8aHAyMzgyfGhld2xldHQgcGFja2FyZCAyMzgyYSwKLQlkYSwgZGIsCi0JbGgjMSwgbG0jNDgsCi0JYWNzY0AsCi0JcGxuPVxFJmYwYSVwMSVkayVwMiVsJVBhJT8lZ2EldCVnYSVkJWUxJTtkMEwlPyVnYSUhJXQgJTslcDIlcywKLQlybWFjc0AsCi0Jc2dyPVxFJmQlezB9JVBhJT8lcDQldCV7MX0lZ2ElKyVQYSU7JT8lcDElcDMlfCVwNiV8JXQlezJ9JWdhJSslUGElOyU/JXAyJXA2JXwldCV7NH0lZ2ElKyVQYSU7JT8lcDElcDUlfCV0JXs4fSVnYSUrJVBhJTslPyVwNyV0JT8lZ2EldHMlZ2ElezY0fSUrJWUlezgzfSU7JWUlPyVnYSV0JWdhJXs2NH0lKyVlJXs2NH0lOyU7JWMsCi0Jc2dyMD1cRSZkQCwgc21hY3NALCB1c2U9aHArbGFiZWxzLCB1c2U9c2NyaHAsCi0KLWhwMjYyMS1hfGhwMjYyMWEtYXxocDI2MjEgd2l0aCBmbiBhcyBhcnJvd3MsCi0JdXNlPWhwK3BmaythcnJvd3MsIHVzZT1ocDI2MjEtZmwsCi0KLSMgbmV3ZXIgaGV3bGV0dCBwYWNrYXJkIHRlcm1pbmFscwotCi1uZXdocGtleWJvYXJkfGdlbmVyaWMgZW50cnkgZm9yIEhQIGV4dGVuZGVkIGtleWJvYXJkLAotCWticz1eSCwga2NidD1cRWksIGtjbHI9XEVKLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAotCWtjdXUxPVxFQSwga2RjaDE9XEVQLCBrZGwxPVxFTSwga2VkPVxFSiwga2VsPVxFSywga2hvbWU9XEVoLAotCWtpY2gxPVxFUSwga2lsMT1cRUwsIGtpbmQ9XEVULCBrbGw9XEVGLCBrbnA9XEVVLCBrcHA9XEVWLAotCWtyaT1cRVMsIGtybWlyPVxFUiwgcm1reD1cRSZzMEEsIHNta3g9XEUmczFBLAotCXVzZT1ocCtwZmstY3IsCi0KLW5ld2hwfGdlbmVyaWMgZW50cnkgZm9yIG5ldyBoZXdsZXR0IHBhY2thcmQgdGVybWluYWxzLAotCWFtLCBidywgbWlyLCB4aHAsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgcGIjNDgwMCwKLQlhY3NjPTJbM0A0PjVJOShcOidKU0tXTFFNQU8jUCRRO1IhUyJUMVUyVjRXM1hcOlkrWipkSGpHa1RsUm1Gbi9xXCx0NXU2djh3N3guLAotCWJlbD1eRywgYmxpbms9XEUmZEEsIGJvbGQ9XEUmZEYsIGNidD1cRWksIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XEVDLCBjdXUxPVxFQSwgZGNoMT1cRVAkPDI+LCBkaW09XEUmZEgsCi0JZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGh0PVwwMTEkPDI+LCBodHM9XEUxLCBpbDE9XEVMLCBpbmQ9XkosCi0JaW52aXM9XEUmZFMsIGlwPSQ8Mj4sIGlzMT1cRSZqQiQ8OD4sIG5lbD1eTV5KLAotCXBma2V5PVxFJmYwYSVwMSVkazBkJXAyJWwlZEwlcDIlcywKLQlwZmxvYz1cRSZmMWElcDElZGswZCVwMiVsJWRMJXAyJXMsCi0JcGZ4PVxFJmYyYSVwMSVkazBkJXAyJWwlZEwlcDIlcywgcmV2PVxFJmRCLCByaT1cRVQsCi0Jcm1hY3M9Xk8sIHJtaXI9XEVSLCBybXNvPVxFJmRALCBybXVsPVxFJmRALCByczE9XEVnLAotCXNncj1cRSZkJXswfSVQYSU/JXA0JXQlezF9JWdhJSslUGElOyU/JXAxJXAzJXwlcDYlfCV0JXsyfSVnYSUrJVBhJTslPyVwMiVwNiV8JXQlezR9JWdhJSslUGElOyU/JXAxJXA1JXwldCV7OH0lZ2ElKyVQYSU7JT8lcDcldCU/JWdhJXRzJWdhJXs2NH0lKyVlJXs4M30lOyVlJT8lZ2EldCVnYSV7NjR9JSslZSV7NjR9JTslOyVjJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFJmRAXDAxNywgc21hY3M9Xk4sIHNtaXI9XEVRLCBzbXNvPVxFJmRKLCBzbXVsPVxFJmRELAotCXRiYz1cRTMsIHVzZT1uZXdocGtleWJvYXJkLAotCi1tZW1ocHxtZW1vcnkgcmVsYXRpdmUgYWRkcmVzc2luZyBmb3IgbmV3IEhQIHR0eXMsCi0JdnQjNiwKLQljbGVhcj1cRUhcRUokPDQwPiwgY3ViPVxFJmEtJXAxJWRDLCBjdWQ9XEUmYSslcDElZFIsCi0JY3VmPVxFJmErJXAxJWRDLCBjdXA9XEUmYSVwMSVkciVwMiVkQywgY3V1PVxFJmEtJXAxJWRSLAotCWhvbWU9XEVILCBocGE9XEUmYSVwMSVkQywgbGw9XEUmYTIzUlxyLAotCW1yY3VwPVxFJmElcDElZHIlcDIlZEMsIHZwYT1cRSZhJXAxJWRSLCB1c2U9bmV3aHAsCi0KLXNjcmhwfHNjcmVlbiByZWxhdGl2ZSBhZGRyZXNzaW5nIGZvciBuZXcgSFAgdHR5cywKLQljbGVhcj1cRSZhMGMwWVxFSiQ8NDA+LCBjdWI9XEUmYS0lcDElZEMsCi0JY3VkPVxFJmErJXAxJWRSLCBjdWY9XEUmYSslcDElZEMsCi0JY3VwPVxFJmElcDElZHklcDIlZEMkPDEwPiwgY3V1PVxFJmEtJXAxJWRSLAotCWhvbWU9XEUmYTB5MEMsIGhwYT1cRSZhJXAxJWRDLCBsbD1cRSZhMHkwQ1xFQSwKLQltcmN1cD1cRSZhJXAxJWRyJXAyJWRDLCB2cGE9XEUmYSVwMSVkWSwgdXNlPW5ld2hwLAotCi0jIChocCtsYWJlbHM6IGFkZGVkIGxhYmVsIHZhbHVlcyBmcm9tIGEgQlJMIHRlcm1jYXAgLS0gZXNyKQotaHArbGFiZWxzfCJzdGFuZGFyZCIgbGFiZWwgaW5mbyBmb3IgbmV3IEhQIHR0eXMsCi0JbGgjMiwgbHcjOCwgbmxhYiM4LAotCWxmMD1mMSwgbGYxPWYyLCBsZjI9ZjMsIGxmMz1mNCwgbGY0PWY1LCBsZjU9ZjYsIGxmNj1mNywgbGY3PWY4LAotCXBsbj1cRSZmMmElcDElZGslcDIlbCVQYSU/JWdhJXQlZ2ElZCVlMSU7ZDBMJT8lZ2ElISV0ICU7JXAyJXMsCi0Jcm1sbj1cRSZqQCwgc21sbj1cRSZqQiwKLQotaHArcHJpbnRlcnwic3RhbmRhcmQiIHByaW50ZXIgaW5mbyBmb3IgSFAgdHR5cywKLQlmZj1cRSZwNHUwQywgbWMwPVxFSFxFJnA0ZEYsIG1jND1cRSZwMTNDLCBtYzU9XEUmcDExQywKLQotCi0jIFRoZSBuZXcgaHAyNjIxYiBpcyBraW5kIG9mIGEgY3Jvc3MgYmV0d2VlbiB0aGUgb2xkIDI2MjEgYW5kIHRoZQotIyBuZXcgMjYyeCBzZXJpZXMgb2YgbWFjaGluZXMuIEl0IGhhcyBkaXAtc3dpdGNoZWQgb3B0aW9ucy4KLSMgVGhlIGZpcm13YXJlIGhhcyBhIGJ1ZyBpbiBpdCBzdWNoIHRoYXQgaWYgeW91IGdpdmUgaXQgYSBudWxsCi0jIGxlbmd0aCBsYWJlbCwgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgaXMgZWF0ZW4hCi1ocDI2MjFifGhwIDI2MjFiIHdpdGggb2xkIHN0eWxlIGtleWJvYXJkLAotCWxoIzEsIGxtIzQ4LCBsdyM4LCBubGFiIzgsCi0Ja2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBraG9tZT1cRWgsCi0Ja2luZD1cRVQsIGtsbD1cRUYsIGtyaT1cRVMsCi0JcGxuPVxFJmYwYSVwMSVkayVwMiVsJVBhJT8lZ2EldCVnYSVkJWUxJTtkM0wlPyVnYSUhJXQlezMyfSVjJTslcDIlc1xFJXsxMTF9JXAxJSslY1xyLAotCXNtbG49XEUmakIsIHVzZT1ocDI2MjEsCi0KLWhwMjYyMWItcHxocCAyNjIxYiB3aXRoIHByaW50ZXIsCi0JdXNlPWhwK3ByaW50ZXIsIHVzZT1ocDI2MjFiLAotCi0jIGhwMjYyMWIgLSBuZXcgMjYyMWIgd2l0aCBuZXcgZXh0ZW5kZWQga2V5Ym9hcmQKLSMgdGhlc2UgYXJlIGNsb3NlciB0byB0aGUgbmV3IDI2eHggc2VyaWVzIHRoYW4gdGhlIG90aGVyIDI2MjFiCi1ocDI2MjFiLWt4fGhwIDI2MjFiIHdpdGggZXh0ZW5kZWQga2V5Ym9hcmQsCi0JdXNlPW5ld2hwa2V5Ym9hcmQsIHVzZT1ocDI2MjFiLAotCi1ocDI2MjFiLWt4LXB8aHAgMjYyMWIgd2l0aCBuZXcga2V5Ym9hcmQgJiBwcmludGVyLAotCXVzZT1ocCtwcmludGVyLCB1c2U9aHAyNjIxYi1reCwKLQotIyBTb21lIGFzc3VtcHRpb25zIGFyZSBtYWRlIGluIHRoZSBmb2xsb3dpbmcgZW50cmllcy4KLSMgVGhlc2Ugc2V0dGluZ3MgYXJlIE5PVCBzZXQgdXAgYnkgdGhlIGluaXRpYWxpemF0aW9uIHN0cmluZ3MuCi0jCi0jICAgIFBvcnQgQ29uZmlndXJhdGlvbgotIyBSZWN2UGFjZT1Yb24vWG9mZglYbWl0UGFjZT1Yb24vWG9mZglTdHJpcE51bERlbD1ZZXMKLSMKLSMgICAgVGVybWluYWwgQ29uZmlndXJhdGlvbgotIyBJbmhIbmRTaGsoRyk9WWVzCUluaERDMihIKT1ZZXMKLSMgWG1pdEZuY3RuKEEpPU5vCQlJbmhFb2xXcnA9Tm8KLSMKLSMKLSMgSHAgMjYyMmEgJiBocDI2MjNhIGRpc3BsYXkgYW5kIGdyYXBoaWNzIHRlcm1pbmFscwotIwotaHAyNjIyfGhwMjYyMmF8aHAgMjYyMiwKLQlkYSwgZGIsCi0JbG0jMCwgcGIjMTkyMDAsCi0JaXMyPVxFJmRqQFxyLCB1c2U9aHArcGZrK2NyLCB1c2U9aHArbGFiZWxzLCB1c2U9c2NyaHAsCi0KLSMgVGhlIDI2MjMgaXMgYSAyNjIyIHdpdGggZXh0cmEgZ3JhcGhpY3MgaGFyZHdhcmUuCi1ocDI2MjN8aHAyNjIzYXxocCAyNjIzLAotCXVzZT1ocDI2MjIsCi0KLWhwMjYyNGItcHxocDI2MjRiLTRwLXB8aGV3bGV0dCBwYWNrYXJkIDI2MjQgQiB3aXRoIHByaW50ZXIsCi0JdXNlPWhwK3ByaW50ZXIsIHVzZT1ocDI2MjQsCi0KLSMgVGhlIGhld2xldHQgcGFja2FyZCBCIGNhbiBoYXZlIGFuIG9wdGlvbmFsIGV4dHJhIDYgcGFnZXMgb2YgbWVtb3J5LgotaHAyNjI0LTEwcHxocDI2MjRhLTEwcHxocDI2MjRiLTEwcHxoZXdsZXR0IHBhY2thcmQgMjYyNCBCIHcvIDEwIHBhZ2VzIG9mIG1lbW9yeSwKLQlsbSMyNDAsIHVzZT1ocDI2MjQsCi0KLWhwMjYyNGItMTBwLXB8aGV3bGV0dCBwYWNrYXJkIDI2MjQgQiB3LyBleHRyYSBtZW1vcnkgJiBwcmludGVyLAotCWxtIzI0MCwgdXNlPWhwMjYyNGItcCwKLQotIyBDb2xvciBtYW5pcHVsYXRpb25zIGZvciBIUCB0ZXJtaW5hbHMKLWhwK2NvbG9yfGhwIHdpdGggY29sb3JzLAotCWNjYywKLQljb2xvcnMjMTYsIG5jdiMxNywgcGFpcnMjNywKLQlpbml0cD1cRSZ2JT8lcDIlezEwMDB9JT0ldDElZS4lcDIlZCU7YSU/JXAzJXsxMDAwfSU9JXQxJWUuJXAzJWQlO2IlPyVwNCV7MTAwMH0lPSV0MSVlLiVwNCVkJTtjJT8lcDUlezEwMDB9JT0ldDElZS4lcDUlZCU7eCU/JXA2JXsxMDAwfSU9JXQxJWUuJXA2JWQlO3klPyVwNyV7MTAwMH0lPSV0MSVlLiVwNyVkJTt6JXAxJWRJLAotCW9jPVxFJnYwbTFhMWIxYzBJXEUmdjFhMUlcRSZ2MWIySVxFJnYxYTFiM0lcRSZ2MWM0SVxFJnYxYTFjNUlcRSZ2MWIxYzZJXEUmdjF4MXk3SSwKLQlvcD1cRSZ2MFMsIHNjcD1cRSZ2JXAxJWRTLAotCi0jIDxpczI+IHNldHMgdGhlIHNjcmVlbiB0byBiZSA4MCBjb2x1bW5zIHdpZGUKLWhwMjM5N2F8aHAyMzk3fGhld2xldHQgcGFja2FyZCAyMzk3QSBjb2xvciB0ZXJtaW5hbCwKLQlpczI9XEUmdzZmODBYLCB1c2U9bWVtaHAsIHVzZT1ocCtsYWJlbHMsIHVzZT1ocCtjb2xvciwKLQotIyAgSFAgNzAwLzQ0IFNldHVwIHBhcmFtZXRlcnM6Ci0jIFRlcm1pbmFsIE1vZGUJCUhQLVBDdGVybQotIyBJbmhpYml0IEF1dG8gV3JhcAlOTwotIyBTdGF0dXMgTGluZQkJSG9zdCBXcml0YWJsZQotIyBQQyBDaGFyYWN0ZXIgU2V0CVlFUwotIyBUd2VudHktRml2ZSBMaW5lIE1vZGUJWUVTCi0jIFhPTi9YT0ZGCQlAMTI4IG9yIDY0IChzYykKLSMgS2V5Y29kZSBNb2RlIAkJTk8gICBvciBZRVMgKHNjKQotIyBCYWNrc3BhY2UgS2V5CQlCUyBvciBCUy9ERUwKLSMKLSMgPGlzMj4gCXNldHMgcGN0ZXJtOyBhdXRvd3JhcDsgMjUgbGluZXM7IHBjIGNoYXIgc2V0OyBwcm9nIERFTCBrZXk7Ci0jIFxFXFw/IGRvZXMgbm90IHR1cm4gb2ZmIGtleWNvZGUgbW9kZQotIyA8c21zYz4Jc2V0cyBhbHRlcm5hdGUgc3RhcnQvc3RvcDsga2V5Y29kZSBvbgotaHBhbnNpfGhwNzAwfGhld2xldHQgcGFja2FyZCA3MDAvNDQgaW4gSFAtUEN0ZXJtIG1vZGUsCi0JYW0sIGVvLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYWNzYz1qXDMzMWtcMjc3bFwzMzJtXDMwMG5cMzA1cVwzMDR0XDMwM3VcMjY0dlwzMDF3XDMwMnhcMjYzLAotCWJlbD1eRywgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsIGNsZWFyPVxFWzJKXEVbSCwKLQljbm9ybT1cRVs/MjVoLCBjcj1eTSwgY3ViMT1cRVtELCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpY2gxPVxFW0AsIGlsMT1cRVtMLAotCWluZD1eSiwKLQlpczI9XEVbNDQicFxFWz83aFxFWz4xMGhcRVs+MTJoXEVQMTsxfDMvN0ZcRVxcLAotCWticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLAotCWtjdXUxPVxFW0EsIGtlbmQ9XEVbNH4sIGtmMT1cRVsxN34sIGtmMTA9XEVbMjh+LAotCWtmMj1cRVsxOH4sIGtmMz1cRVsxOX4sIGtmND1cRVsyMH4sIGtmNT1cRVsyMX4sIGtmNj1cRVsyM34sCi0Ja2Y3PVxFWzI0fiwga2Y4PVxFWzI1fiwga2Y5PVxFWzI2fiwga2hvbWU9XEVbMX4sIGtucD1cRVs2fiwKLQlrcHA9XEVbNX4sIHJtYW09XEVbPzdsLAotCXJtc2M9XEVbPjExbFxFUDEqKngwLzExOzEvMTNcRVttXEVcXCwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgc2dyMD1cRVttLCBzbWFtPVxFWz83aCwKLQlzbXNjPVxFWz4xMWhcRVBPKip4MC82NTsxLzY3XEVcXCQ8MjUwPiwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLCB4b2ZmYz1nLCB4b25jPWUsCi0jCi0jIChocDIzOTI6IGNvcGllZCA8cm1pcj4gaGVyZSBmcm9tIGhwZXggLS0gZXNyKQotaHAyMzkyfDIzOXggc2VyaWVzLAotCWNvbHMjODAsCi0JY2J0PVxFaSwgY3VwPVxFJmElcDElZHklcDIlZEMsIGtmMT1cRXBcciwga2YyPVxFcVxyLAotCWtmMz1cRXJcciwga2Y0PVxFc1xyLCBrZjU9XEV0XHIsIGtmNj1cRXVcciwga2Y3PVxFdlxyLAotCWtmOD1cRXdcciwga2hvbWU9XEVoLCBraW5kPVxFVSwga25wPVxFdSwga3BwPVxFdiwga3JpPVxFViwKLQlybWlyPVxFUiwgcm11bD1cRSZkQCwgc21pcj1cRVEsIHNtdWw9XEUmZEQsIHZwYT1cRSZhJXAxJWRZLAotCXVzZT1ocHN1YiwKLQotaHBzdWJ8aHAgdGVybWluYWxzIC0tIGNhcGFiaWxpdHkgc3Vic2V0LAotCWFtLCBkYSwgZGIsIG1pciwgeGhwLCB4b24sCi0JbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3V1MT1cRUEsIGRjaDE9XEVQLCBkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaHBhPVxFJmElcDElZEMsCi0JaHQ9XkksIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3N0ZGNydCwgaWwxPVxFTCwgaW5kPV5KLAotCWlzMj1cRSZzMUFcRTxcRSZrMFxcLCBrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLAotCWtjdWYxPVxFQywga2N1dTE9XEVBLCBraG9tZT1cRWgsIHJta3g9XEUmczBBLCBybXNvPVxFJmRALAotCXNncjA9XEUmZEAsIHNta3g9XEUmczFBLCBzbXNvPVxFJmRCLAotCi0jIGhwZXg6Ci0jCU1heSBiZSB1c2VkIGZvciBtb3N0IDI0IHggODAgaHAgdGVybWluYWxzLAotIyBidXQgaGFzIG5vIHBhZGRpbmcgYWRkZWQsIHNvIG1heSBhbGxvdyBydW5vdmVyIGluIHNvbWUgdGVybWluYWxzIGF0IGhpZ2gKLSMgYmF1ZCByYXRlcy4gIFdpbGwgbm90IHdvcmsgZm9yIGhwMjY0MGEgb3IgaHAyNjQwYiB0ZXJtaW5hbHMsIGhwOTh4NiBhbmQKLSMgaHA5OHg1IHRlcm1pbmFsIGVtdWxhdG9ycyBvciBocDk4eDYgY29uc29sZXMuCi0jIAlBZGRzIHh5LWN1cnNvciBhZGRyZXNzaW5nLCB2ZXJ0aWNhbCBjdXJzb3IgYWRkcmVzc2luZywgaG9tZSwKLSMgbGFzdCBsaW5lLCBhbmQgdW5kZXJsaW5lIGNhcGFiaWxpdGllcy4KLSMKLSMgKGhwZXg6IHJlbW92ZWQgbWVtb3J5LWxvY2sgY2FwYWJpbGl0aWVzICI6bWw9XEVsOm11PVxFbToiLAotIyBtb3ZlZCA8cm1pcj4gaGVyZSBmcm9tIGhwc3ViIC0tIGVzcikKLWhwZXh8aHAgZXh0ZW5kZWQgY2FwYWJpbGl0ZXMsCi0JY3I9Xk0sIGN1ZDE9XkosIGN1cD1cRSZhJXAxJWR5JXAyJWRDLCBodD1eSSwgaW5kPV5KLCBrYnM9XkgsCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBuZWw9Xk1eSiwgcm1pcj1cRVIsIHJtdWw9XEUmZEAsIHNtaXI9XEVRLAotCXNtdWw9XEUmZEQsIHZwYT1cRSZhJXAxJWRZLCB1c2U9aHBzdWIsCi0KLSMgRnJvbTogVmlsbGUgU3Vsa28gPFZpbGxlLlN1bGtvQGJpcC5hdGsudHBvLmZpPiwgMDUgQXVnIDE5OTYKLWhwMnxocGV4MnxoZXdsZXR0LXBhY2thcmQgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIG5ld2VyIHZlcnNpb24sCi0JYW0sIGRhLCBkYiwgbWlyLCB4aHAsCi0JY29scyM4MCwgbGgjMiwgbGluZXMjMjQsIGxtIzAsIGx3IzgsIG5sYWIjOCwgeG1jIzAsCi0JYmVsPV5HLCBjbGVhcj1cRSZhMHkwQ1xFSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVCLAotCWN1ZjE9XEVDLCBjdXA9XEUmYSVwMSVkeSVwMiVkQywgY3V1MT1cRUEsIGRjaDE9XEVQLAotCWRsMT1cRU0sIGVkPVxFSiwgZWw9XEVLLCBocGE9XEUmYSVwMSVkQywgaHQ9XkksIGh0cz1cRTEsCi0JaWwxPVxFTCwgaW5kPV5KLCBrYnM9XkgsIGtjbHI9XEVKLCBrY3RhYj1cRTIsIGtjdWIxPVxFRCwKLQlrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZGNoMT1cRVAsIGtkbDE9XEVNLAotCWtlZD1cRUosIGtlbD1cRUssIGtmMT1cRXAsIGtmMj1cRXEsIGtmMz1cRXIsIGtmND1cRXMsIGtmNT1cRXQsCi0Ja2Y2PVxFdSwga2Y3PVxFdiwga2Y4PVxFdywga2hvbWU9XEVoLCBraHRzPVxFMSwga2ljaDE9XEVRLAotCWtpbDE9XEVMLCBraW5kPVxFUywga2xsPVxFRiwga25wPVxFVSwga3BwPVxFViwga3JpPVxFVCwKLQlrcm1pcj1cRVIsIGt0YmM9XEUzLCBtZW1sPVxFbCwgbWVtdT1cRW0sCi0JcGZrZXk9XEUmZiVwMSVkayVwMiVsJWRMJXAyJXMsCi0JcGZsb2M9XEUmZjFhJXAxJWRrJXAyJWwlZEwlcDIlcywKLQlwZng9XEUmZjJhJXAxJWRrJXAyJWwlZEwlcDIlcywKLQlwbG49XEUmZiVwMSVkayVwMiVsJWRkMEwlcDIlcywgcm1pcj1cRVIsIHJta3g9XEUmczBBLAotCXJtbG49XEUmakAsIHJtc289XEUmZEAsIHJtdWw9XEUmZEAsCi0Jc2dyPVxFJmQlPyVwNyV0JXsxMTV9JWMlOyVwMSVwMyV8JXA2JXwlezJ9JSolcDIlezR9JSolKyVwNCUrJXA1JXs4fSUqJSslezY0fSUrJWMlPyVwOSV0JSdcMDE2JyVjJWUlJ1wwMTcnJWMlOywKLQlzZ3IwPVxFJmRALCBzbWlyPVxFUSwgc21reD1cRSZzMUEsIHNtbG49XEUmakIsIHNtc289XEUmZEIsCi0Jc211bD1cRSZkRCwgdGJjPVxFMywgdnBhPVxFJmElcDElZFksCi0KLSMgSFAgMjM2IGNvbnNvbGUKLSMgRnJvbTogPGRkYXZpc0BpYy5iZXJrZWxleS5lZHU+Ci1ocDIzNnxocDIzNiBpbnRlcm5hbCB0ZXJtaW5hbCBlbXVsYXRvciwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRUYsIGNub3JtPVxFREUsIGN1YjE9XkgsCi0JY3VwPVxFRSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgY3Z2aXM9XEVEQiwKLQlkY2gxPVxFSiwgZGwxPVxFSCwgZWw9XEVLLCBpY2gxPVxFSSwgaWwxPVxFRywgcm1zbz1cRUNJLAotCXNncjA9XEVDSSwgc21zbz1cRUJJLAotCi0jIFRoaXMgd29ya3Mgb24gYSBocDMwMCBjb25zb2xlIHJ1bm5pbmcgVXRhaCA0LjMgQlNECi0jIEZyb206IENyYWlnIExlcmVzIDxsZXJlc0Bva2VlZmZlLmJlcmtlbGV5LmVkdT4KLWhwMzAwaHxIUCBDYXRzZXllIGNvbnNvbGUsCi0JT1RicywgYW0sIGRhLCBkYiwgbWlyLCB4aHAsCi0JY29scyMxMjgsIGxpbmVzIzUxLCBsbSMwLCB4bWMjMCwKLQliZWw9XkcsIGNidD1cRWksIGNsZWFyPVxFJmEweTBDXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRUIsCi0JY3VmMT1cRUMsIGN1cD1cRSZhJXAxJWR5JXAyJWRDLCBjdXUxPVxFQSwgZGNoMT1cRVAsCi0JZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhwYT1cRSZhJXAxJWRDLCBodD1eSSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGRjcnQsIGlsMT1cRUwsIGluZD1eSiwga2JzPV5ILAotCWtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2hvbWU9XEVoLAotCXJtaXI9XEVSLCBybWt4PVxFJnMwQSwgcm1zbz1cRSZkQCwgcm11bD1cRSZkQCwgc2dyMD1cRSZkQCwKLQlzbWlyPVxFUSwgc21reD1cRSZzMUEsIHNtc289XEUmZEIsIHNtdWw9XEUmZEQsIHRiYz1cRTMsCi0JdnBhPVxFJmElcDElZFksCi0jIEZyb206IEdyZWcgQ291Y2ggPGdyZWdjQGVybmllLmJlcmtlbGV5LmVkdT4KLWhwOTgzN3xocDk4NzIwfGhwOTg3MjF8SFAgOTAwMC8zMDAgd29ya3N0YXRpb25zLAotCU9UYnMsIGFtLCBkYSwgZGIsIG1pciwgeGhwLAotCWNvbHMjMTI4LCBpdCM4LCBsaW5lcyM0NiwgbG0jMCwKLQliZWw9XkcsIGNidD1cRWksIGNsZWFyPVxFJmEweTBDXEVKLCBjdWIxPV5ILCBjdWQxPVxFQiwKLQljdWYxPVxFQywgY3VwPVxFJmElcDElZHklcDIlZEMsIGN1dTE9XEVBLCBkY2gxPVxFUCwKLQlkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaHBhPVxFJmElcDElZEMsIGh0PV5JLCBodHM9XEUxLAotCWlsMT1cRUwsIGluZD1eSiwgaXMyPVxFJnYwbTFiMGkmakAsIGticz1eSCwga2N1YjE9XEVELAotCWtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsIGtkY2gxPVxFUCwga2RsMT1cRU0sCi0Ja2VkPVxFSiwga2VsPVxFSywga2hvbWU9XEVoLCBraWNoMT1cRVEsIGtpbDE9XEVMLCBrbnA9XEVVLAotCWtwcD1cRVYsIHJtaXI9XEVSLCBybWt4PVxFJnMwQSwgcm1zbz1cRSZ2MFMsIHJtdWw9XEUmZEAsCi0Jc2dyMD1cRSZkQCwgc21pcj1cRVEsIHNta3g9XEUmczFBLCBzbXNvPVxFJnY1Uywgc211bD1cRSZkRCwKLQl0YmM9XEUzLCB2cGE9XEUmYSVwMSVkWSwKLSMgSFAgOTg0NSBkZXNrdG9wIGNvbXB1dGVyIGZyb20gQlJMCi0jIChocDk4NDU6IHJlbW92ZWQgdW5rbm93biBjYXBhYmlsaXR5IDpndTogLS0gZXNyKQotaHA5ODQ1fEhQIDk4NDUsCi0JT1RicywgYW0sIGRhLCBkYiwgZW8sIG1pciwgeGhwLAotCWNvbHMjODAsIGxpbmVzIzIxLAotCU9UYmM9XEVELCBjbGVhcj1cRUhcRUosIGN1ZjE9XEVDLCBjdXA9XEUmYSVwMiUyZGMlcDElMmRZLAotCWN1dTE9XEVBLCBkY2gxPVxFUCwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkLCBpbDE9XEVMLCBybWlyPVxFUiwgcm1zbz1cRSZkQCwKLQlzbWlyPVxFUSwgc21zbz1cRSZkQiwKLSMgRnJvbTogQ2hhcmxlcyBBLiBGaW5uZWxsIG9mIE1JVFJFIDxmaW5uZWxsQG1pdHJlLm9yZz4sIGRldmVsb3BlZCAwN1NFUDkwCi0jIChocDk4NTUwOiByZXBsYWNlZCAvdXNyL2xvY2FsL3NoYXJlL3RhYnNldC85ODM3IHdpdGggc3RkIGJlY2F1c2UgPGl0Izg+LDxodHM9XEUxPjsKLSMgYWRkZWQgZW1wdHkgPGFjc2M+IHRvIGF2b2lkIHdhcm5pbmdzIHJlIDxzbWFjcz4vPHJtYWNzPiAtLWVzcikKLWhwOTg1NTB8aHA5ODU1MGF8SFAgOTAwMCBTZXJpZXMgMzAwIGNvbG9yIGNvbnNvbGUsCi0JT1RicywgYW0sIGRhLCBkYiwgbWlyLCB4aHAsCi0JY29scyMxMjgsIGl0IzgsIGxpbmVzIzQ5LCBsbSMwLAotCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFJmRBLCBib2xkPVxFJmRKLCBjYnQ9XEVpLCBjaXZpcz1cRSpkUiwKLQljbGVhcj1cRUhcRUosIGNub3JtPVxFKmRRLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFJmElcDElZHklcDIlZEMsIGN1dTE9XEVBLCBkY2gxPVxFUCwgZGltPVxFJmRILAotCWRsMT1cRU0sIGVkPVxFSiwgZWw9XEVLLCBocGE9XEUmYSVwMSVkQywgaHQ9XkksIGh0cz1cRTEsCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkLCBpbDE9XEVMLCBpbmQ9XkosIGludmlzPVxFJmRzLAotCWticz1eSCwga2Nscj1cRUosIGtjdGFiPVxFMiwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKLQlrY3V1MT1cRUEsIGtkY2gxPVxFUCwga2RsMT1cRU0sIGtlZD1cRUosIGtlbD1cRUssIGtmMT1cRXAsCi0Ja2YyPVxFcSwga2YzPVxFciwga2Y0PVxFcywga2Y1PVxFdCwga2Y2PVxFdSwga2Y3PVxFdiwga2Y4PVxFdywKLQlraG9tZT1cRWgsIGtodHM9XEUxLCBraWNoMT1cRVEsIGtpbDE9XEVMLCBraW5kPVxFUywga2xsPVxFRiwKLQlrbnA9XEVVLCBrcHA9XEVWLCBrcmk9XEVULCBrcm1pcj1cRVIsIGt0YmM9XEUzLCByZXY9XEUmZEosCi0Jcm1hY3M9Xk8sIHJtaXI9XEVSLCBybWt4PVxFJnMwQSwgcm1zbz1cRSZkQCwgcm11bD1cRSZkQCwKLQlzZ3IwPVxFJmRALCBzbWFjcz1eTiwgc21pcj1cRVEsIHNta3g9XEUmczFBLCBzbXNvPVxFJmRKLAotCXNtdWw9XEUmZEQsIHRiYz1cRTMsIHZwYT1cRSZhJXAxJWRZLAotIyBGcm9tOiBWaWN0b3IgRHVjaG92bmkgPHZpY0BmaW5lLnByaW5jZXRvbi5lZHU+Ci0jIChocDcwMC13eTogcmVtb3ZlZCBvYnNvbGV0ZSAiOm5sPV5KOiI7Ci0jIHJlcGxhY2VkIC91c3IvbG9jYWwvc2hhcmUvdGFic2V0L2hwNzAwLXd5IHdpdGggc3RkIGJlY2F1c2UgPGl0Izg+LDxodHM9XEUxPiAtLSBlc3IpCi1ocDcwMC13eXxIUDcwMC80MSBlbXVsYXRpbmcgd3lzZTMwLAotCU9UYnMsIGFtLCBidywgbWlyLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB4bWMjMSwKLQljYnQ9XEVJLCBjbGVhcj1eWiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XlYsIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGNoMT1cRVcsCi0JZGwxPVxFUiwgZWQ9XEVZLCBlbD1cRVQkPDEwLz4sIGhvbWU9Xl4sIGh0PV5JLCBodHM9XEUxLAotCWlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3N0ZGNydCwgaWwxPVxFRSQ8MC43Ki8+LAotCWlzMT1cRX4iXEVDXEVyXEUoXEVHMFwwMDNcRWA5XEVgMSwga2JzPVwxNzcsIGtjYnQ9XEVJLAotCWtjbHI9XlosIGtjdWIxPV5ILCBrY3VkMT1eViwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZWQ9XEVZLAotCWtlbD1cRVQsIGtob21lPV5eLCBraHRzPVxFSSwga2ljaDE9XEVxLCBrcm1pcj1cRXIsIGxsPV5eXkssCi0Jcmk9XEVqLCBybWlyPVxFciwgcm1zbz1cRUcwJDwxMC8+LCBybXVsPVxFRzAkPDEwLz4sCi0Jc2dyMD1cRUcwJDwxMC8+LCBzbWlyPVxFcSwgc21zbz1cRUc0JDwxMC8+LAotCXNtdWw9XEVHOCQ8MTAvPiwgdGJjPVxFMCwgdnBhPVxFWyVwMSV7MzJ9JSslYywKLWhwNzAwOTJ8aHA3MDA5MmF8aHA3MDA5MkF8SFAgNzAwLzkyLAotCWFtLCBkYSwgZGIsIHhocCwKLQljb2xzIzgwLCBsaCMyLCBsaW5lcyMyNCwgbG0jMCwgbHcjOCwgbmxhYiM4LAotCWFjc2M9MGNqZ2t0bHJtZm4vcVwsdDV1NnY4dzd4LiwgYmVsPV5HLCBibGluaz1cRSZkQSwKLQlib2xkPVxFJmRCLCBjYnQ9XEVpLCBjbGVhcj1cRSZhMHkwQ1xFSiwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1cRUIsIGN1ZjE9XEVDLCBjdXA9XEUmYSVwMSVkeSVwMiVkQywgY3V1MT1cRUEsCi0JZGNoMT1cRVAsIGRpbT1cRSZkSCwgZGwxPVxFTSwgZWw9XEVLLCBocGE9XEUmYSVwMSVkQywgaHQ9XkksCi0JaHRzPVxFMSwgaWwxPVxFTCwga2JzPV5ILCBrY2xyPVxFSiwga2N0YWI9XEUyLCBrY3ViMT1cRUQsCi0Ja2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2RjaDE9XEVQLCBrZGwxPVxFTSwKLQlrZWQ9XEVKLCBrZWw9XEVLLCBrZjE9XEVwLCBrZjI9XEVxLCBrZjM9XEVyLCBrZjQ9XEVzLCBrZjU9XEV0LAotCWtmNj1cRXUsIGtmNz1cRXYsIGtmOD1cRXcsIGtob21lPVxFaCwga2h0cz1cRTEsIGtpY2gxPVxFUSwKLQlraWwxPVxFTCwga2luZD1cRVMsIGtsbD1cRUYsIGtucD1cRVUsIGtwcD1cRVYsIGtyaT1cRVQsCi0Ja3JtaXI9XEVSLCBrdGJjPVxFMywgcmV2PVxFJmRCLCByaT1cRVQsIHJtYWNzPV5PLCBybWlyPVxFUiwKLQlybWt4PVxFJnMwQSwgcm1sbj1cRSZqQCwgcm1zbz1cRSZkQCwgcm11bD1cRSZkQCwKLQlzZ3IwPVxFJmRALCBzbWFjcz1eTiwgc21pcj1cRVEsIHNta3g9XEUmczFBLCBzbWxuPVxFJmpCLAotCXNtc289XEUmZEosIHNtdWw9XEUmZEQsIHRiYz1cRTMsIHZwYT1cRSZhJXAxJWRZLAotCi1ib2JjYXR8c2JvYmNhdHxIUCA5MDAwIG1vZGVsIDMwMCBjb25zb2xlLAotCWFtLCBkYSwgZGIsIG1pciwgeGhwLAotCWNvbHMjMTI4LCBpdCM4LCBsaW5lcyM0NywgeG1jIzAsCi0JY2J0PVxFaSwgY2xlYXI9XEVIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRSZhJXAxJWR5JXAyJWRDJDw2Lz4sIGN1dTE9XEVBLCBkY2gxPVxFUCwKLQlkbDE9XEVNJDwxMCovPiwgZWQ9XEVKLCBlbD1cRUssIGhwYT1cRSZhJXAxJWRDJDw2Lz4sIGh0PV5JLAotCWlsMT1cRUwkPDEwKi8+LCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsCi0Ja2N1ZjE9XEVDLCBrY3V1MT1cRUEsIGtob21lPVxFaCwgbmVsPV5NXkosIHJtaXI9XEVSLAotCXJta3g9XEUmczBBLCBybXNvPVxFJmRALCBybXVsPVxFJmRALCBzZ3IwPVxFJmRALCBzbWlyPVxFUSwKLQlzbWt4PVxFJnMxQSwgc21zbz1cRSZkQiwgc211bD1cRSZkRCwgdnBhPVxFJmElcDElZFkkPDYvPiwKLWdhdG9yLXR8SFAgOTAwMCBtb2RlbCAyMzcgZW11bGF0aW5nIGV4dHJhLXRhbGwgQUFBLAotCWxpbmVzIzk0LCB1c2U9Z2F0b3IsCi1nYXRvcnxIUCA5MDAwIG1vZGVsIDIzNyBlbXVsYXRpbmcgQUFBLAotCWJ3LCBrbSwgbWlyLCB1bCwKLQljb2xzIzEyOCwgaXQjOCwgbGluZXMjNDcsCi0JYmVsPV5HLCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFTSwKLQlkY2g9XEVbJXAxJWRQJDw0Lz4sIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNJDwxKi8+LAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkYCwKLQlodD1eSSwgaWNoPVxFWyVwMSVkQCQ8NC8+LCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCQ8MSovPiwKLQlpbDE9XEVbTCwga2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIG5lbD1eTV5KLAotCXJlcD0lcDElY1xFWyVwMiVkYiQ8MSovPiwgcmV2PVxFWzdtLCBybXNvPVxFW20sCi0Jcm11bD1cRVttLCBzZ3IwPVxFW20sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi1nYXRvci01MnxIUCA5MDAwIG1vZGVsIDIzNyBlbXVsYXRpbmcgVlQ1MiwKLQljb2xzIzEyOCwgbGluZXMjNDcsIHVzZT12dDUyLAotZ2F0b3ItNTJ0fEhQIDkwMDAgbW9kZWwgMjM3IGVtdWxhdGluZyBleHRyYS10YWxsIFZUNTIsCi0JbGluZXMjOTQsIHVzZT1nYXRvci01MiwKLQotIyMjIyBIb25leXdlbGwtQnVsbAotIwotIyBGcm9tOiBNaWNoYWVsIEhhYXJkdCA8bWljaGFlbEBnYW5kYWxmLm1vcmlhPiAxMSBKYW4gOTMKLSMKLQotIyBIb25leXdlbGwgQnVsbCB0ZXJtaW5hbC4gIEl0cyBjdXJzb3IgYW5kIGZ1bmN0aW9uIGtleXMgc2VuZCBzaW5nbGUKLSMgY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBpdCBoYXMgc3RhbmRvdXQvdW5kZXJsaW5lIGdsaXRjaC4gIE1vc3QgcHJvZ3JhbXMKLSMgZG8gbm90IGxpa2UgdGhlc2UgZmVhdHVyZXMvYnVncy4gIFZpc3VhbCBiZWxsIGlzIHJlYWxpemVkIGJ5IGZsYXNoaW5nIHRoZQotIyAia2V5Ym9hcmQgbG9ja2VkIiBMRUQuCi1ka3U3MDAzLWR1bWJ8SG9uZXl3ZWxsIEJ1bGwgREtVIDcwMDMgZHVtYiBtb2RlLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWNsZWFyPV5dXl8sIGNyPV5NLCBjdWIxPV5ZLCBjdWQxPV5LLCBjdWYxPV5YLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1eWiwgZWQ9Xl8sIGVsPVxFW0ssCi0JZmxhc2g9XEVbMmhcRVsybCwgaG9tZT1eXSwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1eWSwKLQlrY3VkMT1eSywga2N1ZjE9XlgsIGtjdXUxPV5aLCBraG9tZT1eXSwgbmVsPV5NXkosCi1ka3U3MDAzfEhvbmV5d2VsbCBCdWxsIERLVSA3MDAzIGFsbCBmZWF0dXJlcyBkZXNjcmliZWQsCi0JbXNnciwKLQl4bWMjMSwKLQlibGluaz1cRVs1bSwgYm9sZD1cRVs3bSwgZGltPVxFWzJtLCByZXY9XEVbN20sIHJtc289XEVbbSwKLQlybXVsPVxFW20sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl1c2U9ZGt1NzAwMy1kdW1iLAotCi0jIyMjIExlYXItU2llZ2xlciAoYWRtKQotIwotIyBUaGVzZSBndXlzIGFyZSBsb25nIHNpbmNlIG91dCBvZiB0aGUgdGVybWluYWxzIGJ1c2luZXNzLCBidXQKLSMgaW4gMTk5NSBtYW55IGN1cnJlbnQgdGVybWluYWxzIHN0aWxsIGhhdmUgYW4gYWRtIHR5cGUgYXMgb25lIG9mIHRoZWlyCi0jIGVtdWxhdGlvbnMgKHVzdWFsbHkgdGhlaXIgc3R1cGlkZXN0LCBhbmQgdXN1YWxseSBsYWJlbGVkIGFkbTMsIHRob3VnaAotIyB0aGVzZSBgYWRtMycgZW11bGF0aW9ucyBub3JtYWxseSBoYXZlIGFkbTNhKyBjYXBhYmlsaXRpZXMpLgotIwotIyBXQVJOSU5HOiBTb21lIGVhcmx5IEFETSB0ZXJtaW5hbHMgKGluY2x1ZGluZyB0aGUgQURNMyBhbmQgQURNNSkgaGFkIGEKLSMgYGRpYWdub3N0aWMgZmVhdHVyZScgdGhhdCBzZW5kaW5nIHRoZW0gYSBeRyB3aGlsZSBwaW4gMjIgKGBSaW5nIEluZGljYXRvcicpCi0jIHdhcyBiZWluZyBoZWxkIHRvIGdyb3VuZCB3b3VsZCB0cmlnZ2VyIGEgc2VuZCBvZiB0aGUgdG9wIGxpbmUgb24gdGhlIHNjcmVlbi4KLSMgQSBxdWljayBmaXggbWlnaHQgYmUgdG8gZHJvcCBiYWNrIHRvIGEgY2hlZXN5IDQtd2lyZSBjYWJsZSB3aXRoIHBpbiAyMgotIyBoYW5naW5nIGluIHRoZSBhaXIuIChUaGFua3MgdG8gRXJpYyBGaXNjaGVyLCA8ZXJpY0BmdWRnZS51Y2hpY2Fnby5lZHU+LAotIyBmb3IgY2xlYXJpbmcgdXAgdGhpcyBwb2ludC4pCi0KLWFkbTFhfGFkbTF8bHNpIGFkbTFhLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEU7JDwxPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgaG9tZT1eXiwKLQlpbmQ9XkosCi1hZG0yfGxzaSBhZG0yLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEU7LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVywKLQlkbDE9XEVSLCBlZD1cRVksIGVsPVxFVCwgaG9tZT1eXiwgaWNoMT1cRVEsIGlsMT1cRUUsIGluZD1eSiwKLQlrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2hvbWU9Xl4sCi0jIChhZG0zOiByZW1vdmVkIG9ic29sZXRlICI6bWE9XkteUDoiIC0tIGVzcikKLWFkbTN8bHNpIGFkbTMsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eWiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGluZD1eSiwKLSMgVGhlIGZvbGxvd2luZyBBRE0tM0Egc3dpdGNoIHNldHRpbmdzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlTUEFDRQkJVS9MX0RJU1AJQ0xSX1NDUk4JMjRfTElORQotIwlDVVJfQ1RMCQlMQ19FTgkJQVVUT19OTAkJRkRYCi0jIE90aGVyIHN3aXRjaGVzIG1heSBiZSBzZXQgZm9yIG9wZXJhdG9yIGNvbnZlbmllbmNlIG9yIGNvbW11bmljYXRpb24KLSMgcmVxdWlyZW1lbnRzLiAgSSByZWNvbW1lbmQKLSMJRElTQUJMRV9LQl9MT0NLCUxPQ0FMX09GRgkxMDMJCTIwMl9PRkYKLSMJRVRYX09GRgkJRU9UX09GRgotIyBNb3N0IG9mIHRoZXNlIHRlcm1pbmFscyByZXF1aXJlZCBhbiBvcHRpb24gUk9NIHRvIHN1cHBvcnQgbG93ZXIgY2FzZSBkaXNwbGF5LgotIyBPcGVuIHRoZSBjYXNlIGFuZCBsb29rIGF0IHRoZSBtb3RoZXJib2FyZDsgaWYgeW91IHNlZSBhbiBvcGVuIDI0LXBpbiBESVAKLSMgc29ja2V0LCB5b3UgbWF5IGJlIG91dCBvZiBsdWNrLgotIwotIyAoYWRtM2E6IHNvbWUgY2FwYWJpbGl0aWVzIG1lcmdlZCBpbiBmcm9tIEJSbCBlbnRyeSAtLSBlc3IpCi1hZG0zYXxsc2kgYWRtM2EsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JT1RtYT1eS15QLCBPVG5sPV5KLCBiZWw9XkcsIGNsZWFyPVwwMzIkPDEvPiwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1eSiwgY3VmMT1eTCwgY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdXUxPV5LLCBob21lPV5eLCBpbmQ9XkosIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIHJzMj1eTiwKLWFkbTNhK3xhZG0zYSBwbHVzLAotCWticz1eSCwgdXNlPWFkbTNhLAotIyAoYWRtNTogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5IaF5Kal5La15MbF5eSDoiICYgZHVwbGljYXRlICI6ZG89Xko6IiAtLSBlc3IpCi1hZG01fGxzaSBhZG01LAotCXhtYyMxLAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGVkPVxFWSwgZWw9XEVULCBrYnM9XkgsIGtob21lPV5eLAotCXJtc289XEVHLCBzbXNvPVxFRywgdXNlPWFkbTNhKywKLSMgQSBsb3Qgb2YgdGVybWluYWxzIG90aGVyIHRoYW4gYWRtMTFzIHVzZSB0aGVzZS4gIFdoZXJldmVyIHlvdSBzZWUKLSMgdXNlPWFkbStzZ3Igd2l0aCBzb21lIG9mIGl0cyBjYXBhYmlsaXRpZXMgZGlzYWJsZWQsIHRyeSB0aGUKLSMgZGlzYWJsZWQgb25lcy4gIFRoZXkgbWF5IHdlbGwgd29yayBidXQgbm90IGhhdmUgYmVlbiBkb2N1bWVudGVkIG9yCi0jIGV4cHJlc3NlZCBpbiB0aGUgdXNpbmcgZW50cnkuICBXZSdkIGxpa2UgdG8gY29vayB1cCBhbiA8c2dyPiBidXQgdGhlCi0jIDxybWFjcz4vPHNtYWNzPiBzZXF1ZW5jZXMgb2YgdGhlIHVzaW5nIGVudHJpZXMgdmFyeSB0b28gbXVjaC4KLWFkbStzZ3J8YWRtIHN0eWxlIGhpZ2hsaWdodCBjYXBhYmlsaXRpZXMsCi0JaW52aXM9XEVHMSwgcmV2PVxFRzQsIHJtc289XEVHMCwgcm11bD1cRUcwLCBzZ3IwPVxFRzAsCi0Jc21zbz1cRUc0LCBzbXVsPVxFRzgsCi0jIExTSSBBRE0tMTEgZnJvbSBHZW9yZ2UgV2lsbGlhbSBIYXJ0d2lnLCBKci4gPGdlb0BCUkwtVEdSLkFSUEE+IHZpYSBCUkwKLSMgU3RhdHVzIGxpbmUgYWRkaXRpb25zIGZyb20gU3RlcGhlbiBKLiBNdWlyIDxzdGVwaGVuJWNvbXAubGFuY3MuYWMudWtAdWNsLWNzPgotIyA8a2hvbWU+IGZyb20gPHN0ZXBoZW4lY29tcC5sYW5jcy5hYy51a0B1Y2wtY3MuYXJwYT4uICA8Y2xlYXI+IGNvdWxkIGFsc28KLSMgYmUgXlosIGFjY29yZGluZyB0byBoaXMgZW50cnkuCi0jIChhZG0xMTogPHNtdWw+PVxFRzQgd2FzIG9idmlvdXNseSBlcnJvbmVvdXMgYmVjYXVzZSBpdCBhbHNvIHNhaWQKLSMgPHJldj49XEVHNC4gIExvb2tpbmcgYXQgb3RoZXIgQURNcyBjb25maXJtcyB0aGlzIC0tIGVzcikKLWFkbTExfExTSSBBRE0tMTEsCi0JT1RicywgYW0sIGhzLAotCU9Ua24jOCwgY29scyM4MCwgbGluZXMjMjQsCi0JT1RubD1eSiwgYmVsPV5HLCBibGluaz1cRUcyLCBjbGVhcj1cRSosIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XkwsIGN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1eSywgZHNsPVxFaCwgZWQ9XEVZLCBlbD1cRVQsIGZzbD1cRShcciwgaG9tZT1eXiwgaHQ9XkksCi0Ja2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2YxPV5BQFxyLAotCWtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLAotCWtmNz1eQUZcciwga2Y4PV5BR1xyLCBraG9tZT1eXiwgbmVsPV5NXkosIHRzbD1cRUZcRSksCi0JdXNlPWFkbStzZ3IsCi0jIEZyb206IEFuZHJldyBTY290dCBCZWFscyA8YmFuZHlAbGxsLWNyZy5BUlBBPgotIyBDb3JyZWN0ZWQgYnkgT2xhZiBTaWViZXJ0IDxyaGlhbHRvQHBvbGRlci51YmMua3VuLm5sPiwgMTEgTWF5IDE5OTUKLSMgU3VwZXJ2aXNvciBtb2RlIGluZm8gYnkgQXJpIFd1b2xsZSwgPGF3dW9sbGVAZGVsdGEuaHV0LmZpPiwgMjcgQXVnIDE5OTYKLSMgKGFkbTEyOiByZW1vdmVkIG9ic29sZXRlICI6a246bWE9al5Ka15QXkteUGwgXlJeTF5MIDoiLiAgVGhpcyBmb3JtZXJseSBoYWQKLSMgPGlzMj49XEVxIGJ1dCB0aGF0IGxvb2tlZCB3cm9uZzsgdGhpcyA8aXMyPiBpcyBmcm9tIERhdmUgWW9zdCA8ZXNxdWlyZSF5b3N0PgotIyB2aWEgQlJMLiAgVGhhdCBlbnRyeSBhc3NlcnRlZCA8eG1jIzE+LCBidXQgSSd2ZSBsZWZ0IHRoYXQgb3V0IGJlY2F1c2UKLSMgbmVpdGhlciBlYXJsaWVyIG5vciBsYXRlciBBRE1TcyBoYXZlIGl0IC0tIGVzcikKLSMKLSMgWW91IHdpbGwgbmVlZCB0byBnZXQgaW50byB0aGUgc3VwZXJ2aXNvciBzZXR1cCBiZWZvcmUgeW91IGNhbiBzZXQKLSMgYmF1ZHJhdGUgZXRjLiBmb3IgeW91ciBBRE0tMTIrLiBQcmVzcyBTaGlmdC1DdHJsLVNldHVwIGFuZCB5b3Ugc2hvdWxkCi0jIHNlZSBhIGxvdCBtb3JlIHNldHVwIG9wdGlvbnMuCi0jCi0jIFdoaWxlIGluIHN1cGVydmlzb3Igc2V0dXAgeW91IGNhbiBhbHNvIHVzZSBmb2xsb3dpbmcgY29kZXM6Ci0jCi0jIEN0cmwtUCBQZXJzb25hbGl0eSBjaGFyYWN0ZXIgc2VsZWN0aW9ucyAoY29uZmlndXJlIGZvciBleGFtcGxlIHdoYXQKLSMgICAgICAgIGFycm93IGtleXMgc2VuZCwgaWYgSSByZWNhbGwgY29ycmVjdGx5KQotIyBDdHJsLVQgdGFicyAxLTgwICAgdXNlIGxlZnQmcmlnaHQgdG8gbW92ZSBhbmQgdXAgdG8gc2V0IGFuZAotIyBDdHJsLVYgdGFicyA4MS0xNTggZG93biB0byBjbGVhciB0YWIuIFNoaWZ0LUN0cmwtTSBzZXRzIHJpZ2h0IG1hcmdpbiBhdCBjdXJzb3IKLSMgQ3RybC1CIEJpbmFyeSBzZXR1cCAocHJvYmFibHkgbm90IG5lZWRlZC4gSSB0aGluayB0aGF0IGV2ZXJ5dGhpbmcgY2FuCi0jICAgICAgICBiZSBzZXQgdXNpbmcgbm9ybWFsIHNldHVwKQotIyBDdHJsLUEgQW5zd2VyYmFjayBtb2RlIChlbnRlciBhbnN3ZXJiYWNrIG1lc3NhZ2UpCi0jIEN0cmwtVSBVc2VyIGZyaWVuZGx5IG1vZGUgKG5vcm1hbCBzZXR1cCkKLSMgQ3RybC1EIERlZmF1bHRzIGVudGlyZSBzZXR1cCBhbmQgZnVuY3Rpb24ga2V5cyBmcm9tIEVQUk9NIHRhYmxlcwotIyBDdHJsLVMgU2F2ZSBib3RoIHNldHVwIGFuZCBmdW5jdGlvbnMga2V5cy4gVGFrZXMgZnJvbSA2IHRvIDEwIHNlY29uZHMuCi0jIEN0cmwtUiBSZWFkcyBib3RoIHNldHVwIGFuZCBmdW5jdGlvbnMga2V5cyBmcm9tIE5WTS4KLSMgU2hpZnQtQ3RybC1YIFVubG9jayBrZXlib2FyZCBhbmQgY2FuY2VsIHJlY2VpdmVkIFgtT0ZGIHN0YXR1cwotIwotIyBBRE0tMTIrIHN1cHBvcnRzIGhhcmR3YXJlIGhhbmRzaGFraW5nLCBidXQgaXQgaXMgRFRSL0NUUyBhcyBvcHBvc2VkIHRvCi0jIFJUUy9DVFMgdXNlZCBub3dhZGF5cyB3aXRoIHZpcnR1YWxseSBldmVyeSBtb2RlbSBhbmQgY29tcHV0ZXIuIDE5MjAwCi0jIGJwcyB3b3JrcyBmaW5lIHdpdGggaGFyZHdhcmUgZmxvdyBjb250cm9sLgotIwotIyBUaGUgZm9sbG93aW5nIG51bGwtbW9kZW0gY2FibGUgc2hvdWxkIGZpeCB0aGlzIGFuZCBlbmFibGUgeW91IHRvIHVzZQotIyBSVFMvQ1RTIGhhbmRzaGFraW5nICh3aGljaCBMaW51eCBzdXBwb3J0cywgdXNlIENSVFNDVFMgc2V0dGluZykuIEFsc28KLSMgc2V0IEFETS0xMisgZm9yIERUUiBoYW5kc2hha2luZyBmcm9tIHN1cGVydmlzb3Igc2V0dXAuCi0jCi0jIFBDIFNlcmlhbCAgIEFETS0xMisKLSMgIC0tLS0tLS0tICAgLS0tLS0tLQotIyAgICAgICAgIDIgLSAzCi0jICAgICAgICAgMyAtIDIKLSMgICAgICAgICA0IC0gNQotIyAgICAgICAgIDUgLSAyMAotIyAgICAgICA2LDggLSA0Ci0jICAgICAgICAgNyAtIDcKLSMgICAgICAgIDIwIC0gNiw4Ci0jCi1hZG0xMnxsc2kgYWRtMTIsCi0JT1RicywgT1RwdCwgYW0sIG1pciwKLQlPVHVnIzEsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XlosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFWSwgZWw9XEVULCBob21lPV5eLCBodHM9XEUxLCBpY2gxPVxFUSwgaWwxPVxFRSwKLQlpczI9XEUwICAgICAgICBcRTEgICAgICAgIFxFMSAgICAgICAgXEUxICAgICAgICBcRTEgICAgICAgIFxFMSAgICAgICAgXEUxICAgICAgICBcRTEgICAgICAgIFxFMSwKLQlrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2YwPV5BMFxyLCBrZjE9XkExXHIsCi0Ja2YyPV5BMlxyLCBrZjM9XkEzXHIsIGtmND1eQTRcciwga2Y1PV5BNVxyLCBrZjY9XkE2XHIsCi0Ja2Y3PV5BN1xyLCBrZjg9XkE4XHIsIGtmOT1eQTlcciwgcm1pcj1cRXIsIHNtaXI9XEVxLCB0YmM9XEUwLAotCXVzZT1hZG0rc2dyLAotIyAoYWRtMjA6IHJlbW92ZWQgb2Jzb2xldGUgIjprbiM3OiIgLS0gZXNyKQotYWRtMjB8bGVhciBzaWVnbGVyIGFkbTIwLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2J0PVxFSSwgY2xlYXI9XlosIGNyPV5NLCBjdWIxPV5ILCBjdWYxPV5MLAotCWN1cD1cRT0laSVwMiV7MzF9JSslYyVwMSV7MzF9JSslYywgY3V1MT1eSywgZGNoMT1cRVcsCi0JZGwxPVxFUiwgZWQ9XEVZLCBlbD1cRVQsIGhvbWU9Xl4sIGh0PV5JLCBpY2gxPVxFUSwgaWwxPVxFRSwKLQlrZjE9XkEsIGtmMj1eQiwga2YzPV5XLCBrZjQ9XkQsIGtmNT1eRSwga2Y2PV5YLCBrZjc9XlosIHJtc289XEUoLAotCXNncjA9XEUoLCBzbXNvPVxFKSwKLWFkbTIxfGxlYXIgc2llZ2xlciBhZG0yMSwKLQl4bWMjMSwKLQliZWw9XkcsIGNyPV5NLCBjdWQxPV5KLCBkY2gxPVxFVywgZGwxPTMwKlxFUiwgZWQ9XEVZLCBlbD1cRVQsCi0JaWNoMT1cRVEsIGlsMT0zMCpcRUUsIGluZD1eSiwgaW52aXNALCBrYnM9XkgsIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtob21lPV5eLCB1c2U9YWRtK3NnciwKLQl1c2U9YWRtM2EsCi0jIChhZG0yMjogIjplbT06IiB3YXMgYW4gb2J2aW91cyB0eXBvIGZvciAiOmVpPToiOyBhbHNvLAotIyByZW1vdmVkIG9ic29sZXRlICI6a24jNzptYT1qXkprXlBeS15QbCBeUl5MXkwgOiI7Ci0jIHJlbW92ZWQgYm9ndXMtbG9va2luZyBcMjAwIGZyb20gYmVmb3JlIDxjdXA+LiAtLSBlc3IpCi1hZG0yMnxsc2kgYWRtMjIsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjYnQ9XEVJLCBjbGVhcj1cRSssIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFeSwgZWw9XEV0LCBob21lPV5eLCBodD1cRWksIGljaDE9XEVRLCBpbDE9XEVFLAotCWlzMj1cRSVcMDE0XDAxNFwwMTRcMDE2XDAwM1wwXDAwM1wwMDJcMDAzXDAwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAsCi0Ja2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2YxPV5BQFxyLAotCWtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLAotCWtmNz1eQUZcciwga2hvbWU9Xl4sIGxmMT1GMSwgbGYyPUYyLCBsZjM9RjMsIGxmND1GNCwgbGY1PUY1LAotCWxmNj1GNiwgbGY3PUY3LCBybXNvPVxFKCwgc2dyMD1cRSgsIHNtc289XEUpLAotIyBBRE0gMzEgRElQIFN3aXRjaGVzCi0jCi0jIFRoaXMgaW5mb3JtYXRpb24gY29tZXMgZnJvbSB0d28gdmVyc2lvbnMgb2YgdGhlIG1hbnVhbCBmb3IgdGhlCi0jIExlYXItU2llZ2xlciBBRE0gMzEuCi0jCi0jIE1haW4gYm9hcmQ6Ci0jICAgICAgICAgICAgICAgICAgcmVhciBvZiBjYXNlCi0jICAgKy18fHx8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSMgICArIFMxUzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFMgICAgKwotIyAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8MyAgICArCi0jICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKLSMgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFMgICAgICAgKwotIyAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8NCAgICAgICArCi0jICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKLSMgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwotIyAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCi0jICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKLSMgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwotIyArLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLSsKLSMgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCi0jICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUzUgUzYgUzcgICAgICAgKwotIyArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09ID09ID09ICAgICAgICsKLSMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0jICAgICAgICAgICAgZnJvbnQgb2YgY2FzZSAoa2V5Ym9hcmQpCi0jCi0jICBTMSAtIERhdGEgUmF0ZSAtIE1vZGVtCi0jICBTMiAtIERhdGEgUmF0ZSAtIFByaW50ZXIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERhdGEgUmF0ZSAgIFNldHRpbmcKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA1MCAgICAgICAgICAwIDAgMCAwCi0jIDc1ICAgICAgICAgIDEgMCAwIDAKLSMgMTEwICAgICAgICAgMCAxIDAgMAotIyAxMzQuNSAgICAgICAxIDEgMCAwCi0jIDE1MCAgICAgICAgIDAgMCAxIDAKLSMgMzAwICAgICAgICAgMSAwIDEgMAotIyA2MDAgICAgICAgICAwIDEgMSAwCi0jIDEyMDAgICAgICAgIDEgMSAxIDAKLSMgMTgwMCAgICAgICAgMCAwIDAgMQotIyAyMDAwICAgICAgICAxIDAgMCAxCi0jIDI0MDAgICAgICAgIDAgMSAwIDEKLSMgMzYwMCAgICAgICAgMSAxIDAgMQotIyA0ODAwICAgICAgICAwIDAgMSAxCi0jIDcyMDAgICAgICAgIDEgMCAxIDEKLSMgOTYwMCAgICAgICAgMCAxIDEgMQotIyB4ICAgICAgICAgICAxIDEgMSAxCi0jCi0jIFMzIC0gSW50ZXJmYWNlL1ByaW50ZXIvQXR0cmlidXRlcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUHJpbnRlciBCdXN5IENvbnRyb2wKLSMgc3cxICAgc3cyICAgc3czCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBvZmYgICBvZmYgICBvZmYgICBCdXN5IG5vdCBhY3RpdmUsIENEIGRpc2FibGVkCi0jIG9mZiAgIG9mZiAgIG9uICAgIEJ1c3kgbm90IGFjdGl2ZSwgQ0QgZW5hYmxlZAotIyBvZmYgICBvbiAgICBvZmYgICBCdXN5IGFjdGl2ZSBvbiBKNS0yMCwgQ0QgZGlzYWJsZWQKLSMgb24gICAgb2ZmICAgb2ZmICAgQnVzeSBhY3RpdmUgb24gSjUtMTksIENEIGRpc2FibGVkIC0gRmFjdG9yeSBTZXQuCi0jIG9uICAgIG9mZiAgIG9uICAgIEJ1c3kgYWN0aXZlIG9uIEo1LTE5LCBDRCBlbmFibGVkCi0jCi0jIHN3NCAgIFVzZWQgaW4gY29uanVjdGlvbiB3aXRoIFM0IGZvciBjb21tIGludGVyZmFjZSBjb250cm9sIC0gRmFjdCAwCi0jCi0jIHN3NSAgIFNlY29uZGFyeSBDaGFubmVsIENvbnRyb2wgKEhhcmR3YXJlIGltcGxlbWVudGF0aW9uIG9ubHkpIC0gRmFjdCAwCi0jCi0jIHN3NiAgIE9OIGVuYWJsZXMgcHJpbnRlciBCVVNZIGFjdGl2ZSBMT1cgLSBGYWN0b3J5IFNldHRpbmcKLSMgICAgICAgT0ZGIGVuYWJsZXMgcHJpbnRlciBCVVNZIGFjdGl2ZSBISUdIIC0gSWYgc2V0IHRvIHRoaXMsIEFETTMxIHNlbnNlcwotIwotIyBzdzcgICBPTiAtIHN0ZWFkeSBjdXJzb3IgLSBGYWN0b3J5IFNldHRpbmcKLSMgICAgICAgT0ZGIC0gYmxpbmtpbmcgY3Vyc29yCi0jCi0jIHN3OCAgIE9OIGNhdXNlcyBzZWxlY3RlZCBhdHRyaWJ1dGUgY2hhcmFjdGVyIHRvIGJlIGRpc3BsYXllZAotIyAgICAgICBPRkYgY2F1c2VzIFNQQUNFIHRvIGJlIGRpc3BsYXllZCBpbnN0ZWFkIC0gRmFjdG9yeSBTZXR0aW5nCi0jCi0jIFM0IC0gSW50ZXJmYWNlCi0jIC0tLS0tLS0tLS0tLS0tCi0jIE1vZGVtIEludGVyZmFjZQotIyBTMyAgICBTNCAgICBTNCAgICBTNCAgICBTNAotIyBzdzQgICBzdzEgICBzdzIgICBzdzMgICBzdzQKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIE9GRiAgIE9OICAgIE9GRiAgIE9OICAgIE9GRiAgIEVuYWJsZSBSUy0yMzJDIGludGVyZmFjZSwgRGlyZWN0IENvbm5lY3QgYW5kCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgTG9vcCBkaXNhYmxlZCAtIEZhY3RvcnkgU2V0dGluZwotIyBPTiAgICBPTiAgICBPRkYgICBPTiAgICBPRkYgICBFbmFibGUgQ3VycmVudCBMb29wIGludGVyZmFjZSwgRGlyZWN0IENvbm5lY3QKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQKLSMgT0ZGICAgT0ZGICAgT04gICAgT0ZGICAgT04gICAgRW5hYmxlIERpcmVjdCBDb25uZWN0IGludGVyZmFjZSwgUlMtMjMyQyBhbmQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBMb29wIERpc2FibGVkCi0jCi0jIHN3NSAgIE9OIGRpc2FibGVzIGRvdCBzdHJldGNoaW5nIG1vZGUgLSBGYWN0b3J5IFNldHRpbmcKLSMgICAgICAgT0ZGIGVuYWJsZXMgZG90IHN0cmV0Y2hpbmcgbW9kZQotIyBzdzYgICBPTiBlbmFibGVzIGJsYW5raW5nIGZ1bmN0aW9uCi0jICAgICAgIE9GRiBlbmFibGVzIHVuZGVybGluZSBmdW5jdGlvbiAtIEZhY3RvcnkgU2V0dGluZwotIyBzdzcgICBPTiBjYXVzZXMgTlVMTFMgdG8gYmUgZGlzcGxheWVkIGFzIE5VTExTCi0jICAgICAgIE9GRiBjYXVzZXMgTlVMTFMgdG8gYmUgZGlzcGxheWVkIGFzIFNQQUNFUyAtIEZhY3RvcnkgU2V0dGluZwotIwotIyBTNSAtIFdvcmQgU3RydWN0dXJlCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgc3cxICAgT04gZW5hYmxlcyBCUkVBSyBrZXkgLSBGYWN0b3J5IFNldHRpbmcKLSMgICAgICAgT0ZGIGRpc2FibGVzIEJSRUFLIGtleQotIyBzdzIgICBPTiBzZWxlY3RzIDUwSHogbW9uaXRvciByZWZyZXNoIHJhdGUKLSMgICAgICAgT0ZGIHNlbGVjdHMgNjBIeiBtb25pdG9yIHJlZnJlc2ggcmF0ZSAtIEZhY3RvcnkgU2V0dGluZwotIwotIyBNb2RlbSBQb3J0IFNlbGVjdGlvbgotIyBzdzMgICBzdzQgICBzdzUKLSMgLS0tLS0tLS0tLS0tLS0tCi0jIE9OICAgIE9OICAgIE9OICAgIFNlbGVjdHMgNyBEQVRBIGJpdHMsIGV2ZW4gcGFyaXR5LCAyIFNUT1AgYml0cwotIyBPRkYgICBPTiAgICBPTiAgICBTZWxlY3RzIDcgREFUQSBiaXRzLCBvZGQgIHBhcml0eSwgMiBTVE9QIGJpdHMKLSMgT04gICAgT0ZGICAgT04gICAgU2VsZWN0cyA3IERBVEEgYml0cywgZXZlbiBwYXJpdHksIDEgU1RPUCBiaXQgLSBGYWN0b3J5IFNldC4KLSMgT0ZGICAgT0ZGICAgT04gICAgU2VsZWN0cyA3IERBVEEgYml0cywgb2RkICBwYXJpdHksIDEgU1RPUCBiaXQKLSMgT04gICAgT04gICAgT0ZGICAgU2VsZWN0cyA4IERBVEEgYml0cywgbm8gICBwYXJpdHksIDIgU1RPUCBiaXRzCi0jIE9GRiAgIE9OICAgIE9GRiAgIFNlbGVjdHMgOCBEQVRBIGJpdHMsIG5vICAgcGFyaXR5LCAxIFNUT1AgYml0Ci0jIE9OICAgIE9GRiAgIE9GRiAgIFNlbGVjdHMgOCBEQVRBIGJpdHMsIGV2ZW4gcGFyaXR5LCAxIFNUT1AgYml0Ci0jIE9GRiAgIE9GRiAgIE9GRiAgIFNlbGVjdHMgOCBEQVRBIGJpdHMsIG9kZCAgcGFyaXR5LCAxIFNUT1AgYml0Ci0jCi0jIHN3NiAgIE9OICBzZW5kcyBiaXQgOCBhIDEgKG1hcmspCi0jICAgICAgIE9GRiBzZW5kcyBiaXQgOCBhcyAwIChzcGFjZSkgLSBGYWN0b3J5IFNldHRpbmcKLSMgc3c3ICAgT04gIHNlbGVjdHMgQmxvY2sgTW9kZQotIyAgICAgICBPRkYgc2VsZWN0cyBDb252ZXJzYXRpb24gTW9kZSAtIEZhY3RvcnkgU2V0dGluZwotIyBzdzggICBPTiAgc2VsZWN0cyBGdWxsIER1cGxleCBvcGVyYXRpb24KLSMgICAgICAgT0ZGIHNlbGVjdHMgSGFsZiBEdXBsZXggb3BlcmF0aW9uIC0gRmFjdG9yeSBTZXR0aW5nCi0jCi0jIFM2IC0gUHJpbnRlcgotIyAtLS0tLS0tLS0tLS0KLSMgc3cxLCBzdzIsIHN3Niwgc3c3ICAgUmVzZXJ2ZWQgLSBGYWN0b3J5IDAKLSMKLSMgUHJpbnRlciBQb3J0IFNlbGVjdGlvbgotIyBzYW1lIGFzIE1vZGVtIGFib3ZlLCBiaXQgOCAod2hlbiA4IERBVEEgYml0cykgaXMgYWx3YXlzID0gMAotIwotIyBzdzggICBPTiAgIGVuYWJsZXMgUHJpbnRlciBQb3J0Ci0jICAgICAgIE9GRiBkaXNhYmxlcyBQcmludGVyIFBvcnQgLSBGYWN0b3J5IFNldHRpbmcKLSMKLSMgUzcgLSBQb2xsaW5nIEFkZHJlc3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgc3cxLTcgRXN0YWJsaXNoIEFTQ0lJIGNoYXJhY3RlciB3aGljaCBkZXNpZ25hdGVzIHRlcm1pbmFsIHBvbGxpbmcgYWRkcmVzcwotIyAgICAgICBPTiAgPSBsb2dpYyAwCi0jICAgICAgIE9GRiA9IGxvZ2ljIDEgLSBGYWN0b3J5IFNldHRpbmcKLSMgc3c4ICAgT04gICBlbmFibGVzIFBvbGxpbmcgT3B0aW9uCi0jICAgICAgIE9GRiBkaXNhYmxlcyBQb2xsaW5nIE9wdGlvbiAtIEZhY3RvcnkgU2V0dGluZwotIwotIwotIyBPbiBzb21lIG9sZGVyIGFkbTMxcywgUzQgZG9lcyBub3QgZXhpc3QsIGFuZCBTNS1zdzYgaXMgbm90IGRlZmluZWQuCi0jCi0jIFRoaXMgYWRtMzEgZW50cnkgdXNlcyB1bmRlcmxpbmUgYXMgdGhlIHN0YW5kb3V0IG1vZGUuCi0jIElmIHRoZSBhZG0zMSBnaXZlcyB5b3UgdHJvdWJsZSB3aXRoIHN0YW5kb3V0IG1vZGUsIGNoZWNrIHRoZSBESVAgc3dpdGNoIGluCi0jIHBvc2l0aW9uIDYsIGJhbmsgQGMxMSwgMjUlIGZyb20gYmFjayBlbmQgb2YgdGhlIGNpcmN1aXQgYm9hcmQuICBTaG91bGQgYmUKLSMgT0ZGLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCBzd2l0Y2gsIHlvdSBoYXZlIGFuIG9sZCBhZG0zMSBhbmQgbXVzdCB1c2Ugb2FkbTMxLgotIyAoYWRtMzE6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1qXkprXlBeS15QbCBeUl5MXkwgOiIgLS0gZXNyKQotYWRtMzF8bHNpIGFkbTMxIHdpdGggc3c2IHNldCBmb3IgdW5kZXJsaW5lIG1vZGUsCi0JT1RicywgYW0sIG1pciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFKiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGNoMT1cRVcsCi0JZGwxPVxFUiwgZWQ9XEVZLCBlbD1cRVQsIGhvbWU9Xl4sIGlsMT1cRUUsIGluZD1eSiwgaXMyPVxFdVxFMCwKLQlrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2YwPV5BMFxyLCBrZjE9XkExXHIsCi0Ja2YyPV5BMlxyLCBrZjM9XkEzXHIsIGtmND1eQTRcciwga2Y1PV5BNVxyLCBrZjY9XkE2XHIsCi0Ja2Y3PV5BN1xyLCBrZjg9XkE4XHIsIGtmOT1eQTlcciwgcm1pcj1cRXIsIHJtc289XEVHMCwKLQlybXVsPVxFRzAsIHNncjA9XEVHMCwgc21pcj1cRXEsIHNtc289XEVHMSwgc211bD1cRUcxLAotYWRtMzEtb2xkfG8zMXxvbGQgYWRtMzEsCi0Jcm11bEAsIHNtc289XEVHNCwgc211bEAsIHVzZT1hZG0zMSwKLSMgTFNJIEFETS0zNiBmcm9tIENvbC4gR2VvcmdlIEwuIFNpY2hlcm1hbiA8Z2xvcmlhIWNvbG9uZWw+IHZpYSBCUkwKLWFkbTM2fExTSSBBRE0zNiwKLQlPVGJzLCBPVHB0LAotCU9Ua24jNCwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwKLQlpczI9XEU8XEU+XEVbNjs/Mjs/Nzs/OGhcRVs0OzIwOz8xOz8zOz80Oz81Oz82Oz8xODs/MTlsLAotCXVzZT12dDEwMCwKLSMgKGFkbTQyOiByZW1vdmVkIG9ic29sZXRlICI6bWE9XkteUDoiIC0tIGVzcikKLWFkbTQyfGxzaSBhZG00MiwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNidD1cRUksIGNsZWFyPVxFOywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywKLQljdnZpcz1cRUNcRTMgXEUzKCwgZGNoMT1cRVcsIGRsMT1cRVIsIGVkPVxFWSwgZWw9XEVULCBodD1eSSwKLQlpbDE9XEVFJDwyNzA+LCBpbmQ9XkosIGludmlzQCwgaXA9JDw2Kj4sIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIGtob21lPV5eLCBwYWQ9XDE3Nywgcm1pcj1cRXIsIHJtdWxALAotCXNtaXI9XEVxLCBzbXVsQCwgdXNlPWFkbStzZ3IsCi0jIFRoZSBmb2xsb3dpbmcgdGVybWNhcCBmb3IgdGhlIExlYXIgU2llZ2xlciBBRE0tNDIgbGVhdmVzIHRoZQotIyAic3lzdGVtIGxpbmUiIGF0IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiBibGFuayAoZm9yIHRob3NlIHdobwotIyBmaW5kIGl0IGRpc3RyYWN0aW5nIG90aGVyd2lzZSkKLWFkbTQyLW5zfGxzaSBhZG0tNDIgd2l0aCBubyBzeXN0ZW0gbGluZSwKLQljYnQ9XEVJXEVGIFwwMTEsIGNsZWFyPVxFO1xFRiBcMDExLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDY+XEVGIFwwMTEsCi0JZGNoMT1cRVdcRUYgXDAxMSwgZGwxPVxFUlxFRiBcMDExLCBlZD1cRVlcRUYgXDAxMSwKLQllbD1cRVRcRUYgXDAxMSwgaWwxPVxFRVxFRiBcMDExLCBybWlyPVxFclxFRiBcMDExLAotCXNtaXI9XEVxXEVGIFwwMTEsIHVzZT1hZG00MiwKLSMgQURNIDExNzggdGVybWluYWwgLS0gcmF0aGVyIGxpa2UgYW4gQURNLTQyLiAgTWFudWFsIGlzIGRhdGVkIE1hcmNoIDEgMTk4NS4KLSMgVGhlIGluc2VydCBtb2RlIG9mIHRoaXMgdGVybWluYWwgaXMgY29tbWVudGVkIG91dCBiZWNhdXNlIGl0J3MgYnJva2VuIGZvciBvdXIKLSMgcHVycG9zZXMgaW4gdGhhdCBpdCB3aWxsIHNoaWZ0IHRoZSBwb3NpdGlvbiBvZiBldmVyeSBjaGFyYWN0ZXIgb24gdGhlIHBhZ2UsCi0jIG5vdCBqdXN0IHRoZSBjdXJzb3IgbGluZSEKLSMgRnJvbTogTWljaGFlbCBEcmlzY29sbCA8ZmVucmlzQGxpZ2h0c3BlZWQubmV0PiAxMCBKdWx5IDE5OTYKLWFkbTExNzh8MTE3OHxsc2kgYWRtMTE3OCwKLQlhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwgeG1jIzEsCi0JYmVsPV5HLCBib2xkPVxFKCwgY2J0PVxFSSwgY2xlYXI9XEUrLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWN2dmlzPVxFQ1xFMyBcRTMoLCBkY2gxPVxFVywgZGwxPVxFUiwgZWQ9XEVZLCBlbD1cRVQsCi0JaG9tZT1eXiwgaHQ9XkksIGlsMT1cRUUsIGluZD1eSiwgaXA9JDw2Ki8+LCBrYnM9XkgsIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBuZWw9Xk1eSiwgcGFkPVwxNzcsIHJldj1cRUc0LCBybXNvPVxFRzAsIHJtdWw9XEVHMCwKLQlzZ3IwPVxFKSwgc21zbz1cRUc0LCBzbXVsPVxFRzEsCi0KLSMjIyMgUHJpbWUKLSMKLSMgWWVzLCBQcmltZSBtYWRlIHRlcm1pbmFscy4gIFRoZXNlIGVudHJpZXMgd2VyZSBwb3N0ZWQgYnkgS2V2aW4gSi4gQ3VtbWluZ3MKLSMgPGN1bW1pbmdzQHByaW1lcmQucHJpbWUuY29tPiBvbiAxNCBEZWMgMTk5MiBhbmQgbGlnaHRseSBlZGl0ZWQgYnkgZXNyLgotIyBQcmltZSBtZXJnZWQgd2l0aCBDb21wdXRlclZpc2lvbiBpbiB0aGUgbGF0ZSAxOTgwczsgeW91IGNhbiByZWFjaCB0aGVtIGF0OgotIwotIwlDb21wdXRlclZpc2lvbiBTZXJ2aWNlcwotIwk1MDAgT2xkIENvbm5lY3RpY3V0IFBhdGgKLSMJRnJhbWluZ2hhbSwgTWFzcy4KLSMKLQotIyBTdGFuZG91dCBtb2RlIGlzIGRpbSByZXZlcnNlLXZpZGVvLgotcHQxMDB8cHQyMDB8d3JlbnxmZW5peHxwcmltZSBwdDEwMC9wdDIwMCwKLQlhbSwgYncsIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQljYnQ9XEVbWiwgY2xlYXI9XEU/LCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFRCwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRTAlcDElezMzfSUrJWMlcDIlezMzfSUrJWMsIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRU0sIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbDE9XEVbTSwKLQllZD1cRVtKXEVbciwgZWw9XEVbS1xFW3QsIGZsYXNoPVxFJCQ8MjAwLz5cRSRQLAotCWhvbWU9XEUkQiwgaHQ9XkksIGlsMT1cRVtMXEVbdCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEUkQSwgbmVsPV5NXkosCi0Jcm1jdXA9LCBybWlyPVxFWzRsLCBybWt4PVxFWz4xM2wsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwKLQlzbWN1cD1cRVs+MWxcRVs+MmxcRVs+MTZsXEVbNGxcRVs+OWxcRVsyMGxcRVs+M2xcRVs+N2hcRVs+MTJsXEVbMVEsCi0Jc21pcj1cRVs0aCwgc21reD1cRVs+MTNoLCBzbXNvPVxFWzI7N20sIHNtdWw9XEVbNG0sCi1wdDEwMHd8cHQyMDB3fHdyZW53fGZlbml4d3xwcmltZSBwdDEwMC9wdDIwMCBpbiAxMzItY29sdW1uIG1vZGUsCi0JY29scyMxMzIsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCB1c2U9cHQxMDAsCi1wdDI1MHxQcmltZSBQVDI1MCwKLQlybXNvQCwgc21zb0AsIHVzZT1wdDEwMCwKLXB0MjUwd3xQcmltZSBQVDI1MCBpbiAxMzItY29sdW1uIG1vZGUsCi0Jcm1zb0AsIHNtc29ALCB1c2U9cHQxMDB3LAotCi0jIyMjIFF1bWUgKHF2dCkKLSMKLSMJUXVtZSwgSW5jLgotIwkzNDc1LUEgTm9ydGggMXN0IFN0cmVldAotIwlTYW4gSm9zZSBDQSA5NTEzNAotIwlWb3g6ICg4MDApLTQ1Ny00NDQ3Ci0jCUZheDogKDQwOCktNDczLTE1MTAKLSMJTmV0OiBqb3NlZEB0ZWNoc3VwcC53eXNlLmNvbSAoSm9zZSBEJ09saXZlaXJhKQotIwotIyBRdW1lIHdhcyBib3VnaHQgYnkgV3lzZSwgYnV0IHN0aWxsIChhcyBvZiBlYXJseSAxOTk1KSBoYXMgaXRzIG93biBzdXBwb3J0Ci0jIGdyb3VwIGFuZCBwcm9kdWN0aW9uIGRpdmlzaW9uLgotIwotIyBEaXNjb250aW51ZWQgUXVtZSBtb2RlbHM6Ci0jCi0jIFRoZSBxdnQxMDEgYW5kIHF2dDEwMiBsaXN0ZWQgaGVyZSBhcmUgbG9uZyBvYnNvbGV0ZTsgc28gaXMgdGhlIHF2dDEwMSsKLSMgYnVpbHQgdG8gcmVwbGFjZSB0aGVtLCBhbmQgYSBxdnQxMTkrIHdoaWNoIHdhcyBhIDEwMSsgd2l0aCBhdmFpbGFibGUgd2lkZQotIyBtb2RlICgxMzIgY29sdW1ucykuICBUaGVyZSB3YXMgYSBxdnQxMDMgd2hpY2ggYWRkZWQgdnQxMDAvdnQxMzEgZW11bGF0aW9ucwotIyBhbmQgYW4gQU5TSS1jb21wYXRpYmxlIHF2dDIwMyB0aGF0IHJlcGxhY2VkIGl0LiAgUXVtZSBzdGFydGVkIHByb2R1Y2luZwotIyBBTlNJLWNvbXBhdGlibGUgdGVybWluYWxzIHdpdGggdGhlIHF2dDMyMyBhbmQgcXZ0NjEuCi0jCi0jIEN1cnJlbnQgUXVtZSBtb2RlbHMgKGFzIG9mIEZlYnJ1YXJ5IDE5OTUpOgotIwotIyBBbGwgY3VycmVudCBRdW1lIHRlcm1pbmFscyBoYXZlIEFOU0ktY29tcGF0aWJsZSBvcGVyYXRpb24gbW9kZXMuCi0jIFF1bWUgaXMgc3RpbGwgcHJvZHVjaW5nIHRoZSBxdnQ2Miwgd2hpY2ggZmVhdHVyZXMgZW11bGF0aW9ucyBmb3Igb3RoZXIKLSMgcG9wdWxhciBsaW5lcyBzdWNoIGFzIEFERFMsIGFuZCBkdWFsLWhvc3QgY2FwYWJpbGl0aWVzLiAgVGhlIHF2dDgyIGlzCi0jIGRlc2lnbmVkIGZvciB1c2UgYXMgYSBTQ08gQU5TSSB0ZXJtaW5hbC4gIFRoZSBxdnQ3MCBpcyBhIGNvbG9yIHRlcm1pbmFsCi0jIHdpdGggbWFueSBlbXVsYXRpb25zIGluY2x1ZGluZyBXeXNlMzcwLCBXeXNlIDMyNSwgZXRjLiAgVGhlaXIgbmV3ZXN0Ci0jIG1vZGVsIGlzIHRoZSBxdnQ1MjAsIHdoaWNoIGlzIHZ0NDIwLWNvbXBhdGlibGUuCi0jCi0jIFRoZXJlIGFyZSBzb21lIGFuY2llbnQgcHJpbnRpbmcgUXVtZSB0ZXJtaW5hbHMgdW5kZXIgYERhaXN5IFdoZWVsIFByaW50ZXJzJwotIwotIyBJZiB5b3UgaW5oZXJpdCBhIFF1bWUgd2l0aG91dCBkb2NzLCB0cnkgQ3RybC1TaGlmdC1TZXR1cCB0byBlbnRlciBpdHMKLSMgc2V0dXAgbW9kZS4gIFNoaWZ0LXMgc2hvdWxkIGJlIGEgY29uZmlndXJhdGlvbiBzYXZlIHRvIE5WUkFNLgotCi1xdnQxMDF8cXZ0MTA4fHF1bWUgcXZ0IDEwMSBhbmQgUVZUIDEwOCwKLQl4bWMjMSwgdXNlPXF2dDEwMSssCi0KLSMgVGhpcyB1c2VkIHRvIGhhdmUgPGN2dmlzPVxFLjI+IGJ1dCBubyA8Y25vcm0+IG9yIDxjaXZpcz4uICBUaGUgQlNEIHRlcm1jYXAKLSMgZmlsZSBoYWQgPGN2dmlzPVxFTTQgXDIwMFwyMDBcMjAwPi4gIEkndmUgZG9uZSB0aGUgc2FmZSB0aGluZyBhbmQgeWFua2VkCi0jIGJvdGguIFRoZSA8cmV2PiBpcyBmcm9tIEJTRCwgd2hpY2ggYWxzbyBjbGFpbWVkIGJvbGQ9XEUoIGFuZCBkaW09XEUpLgotIyBXaGF0IHNlZW1zIHRvIGJlIGdvaW5nIG9uIGhlcmUgaXMgdGhhdCB0aGlzIGVudHJ5IHdhcyBkZXNpZ25lZCBzbyB0aGF0Ci0jIHRoZSBub3JtYWwgaGlnaGxpZ2h0IGlzIGJvbGQgYW5kIHN0YW5kb3V0IGlzIGRpbSBwbHVzIHNvbWV0aGluZyBlbHNlCi0jIChyZXZlcnNlLXZpZGVvIG1heWJlPyAgQnV0IHRoZW4sIGFyZSB0aGVyZSB0d28gPHJldj4gc2VxdWVuY2VzPykKLXF2dDEwMSt8cXZ0MTAxcHxxdW1lIHF2dCAxMDEgUExVUyBwcm9kdWN0LAotCWFtLCBidywgaHMsIHVsLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQliZWw9XkcsIGNidD1cRUksIGNsZWFyPV5aLCBjbm9ybT1cRS40LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXLCBkbDE9XEVSLCBkc2w9XEVnXEVmXHIsIGVkPVxFWSwgZWw9XEVULAotCWZsYXNoPVxFYiQ8MjAwPlxFZCwgZnNsPV5NLCBob21lPV5eLCBodD1eSSwgaHRzPVxFMSwKLQlpY2gxPVxFUSwgaWwxPVxFRSwgaW5kPV5KLCBpbnZpc0AsIGticz1eSCwga2NidD1cRUksIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtkbDE9XEVSLCBrZWQ9XEVZLCBrZWw9XEVULAotCWtmMT1eQUBcciwga2YxMD1eQUlcciwga2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwKLQlrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwKLQlraG9tZT1eXiwga2ljaDE9XEVRLCBraWwxPVxFRSwgbWM0PVxFQSwgbWM1PVxFQCwgcm1zbz1cRSgsCi0Jc21zbz1cRTBQXEUpLCB0YmM9XEUzLCB0c2w9XEVnXEVmLCB1c2U9YWRtK3NnciwKLXF2dDEwMnxxdW1lIHF2dCAxMDIsCi0JY25vcm09XEUuLCB1c2U9cXZ0MTAxLAotIyAocXZ0MTAzOiBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIGluaXQgc3RyaW5nIC0tIGVzcikKLXF2dDEwM3xxdW1lIHF2dCAxMDMsCi0JYW0sIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgdnQjMywKLQliZWw9XkcsIGJsaW5rPVxFWzVtJDwyPiwgYm9sZD1cRVsxbSQ8Mj4sCi0JY2xlYXI9XEVbSFxFWzJKJDw1MD4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBJDwyPiwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwKLQlodHM9XEVILCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywKLQlrY3V1MT1cRU9BLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywgcmM9XEU4LAotCXJldj1cRVs3bSQ8Mj4sIHJpPVxFTSQ8NT4sIHJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwKLQlybXNvPVxFW20kPDI+LCBybXVsPVxFW20kPDI+LAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3I9XEVbJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElO20kPDI+LAotCXNncjA9XEVbbSQ8Mj4sIHNtYW09XEVbPzdoLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzdtJDwyPiwgc211bD1cRVs0bSQ8Mj4sIHRiYz1cRVszZywKLXF2dDEwMy13fHF1bWUgcXZ0MTAzIDEzMiBjb2xzLAotCWNvbHMjMTMyLCBsaW5lcyMyNCwKLQlyczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzhoLCB1c2U9cXZ0MTAzLAotcXZ0MTE5K3xxdnQxMTlwfHF2dDExOXxxdW1lIHF2dCAxMTkgYW5kIDExOVBMVVMgdGVybWluYWxzLAotCWFtLCBocywgbWlyLCBtc2dyLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQliZWw9XkcsIGNidD1cRUksIGNsZWFyPVxFKjEsIGNub3JtPVxFLjQsIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XkwsIGN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1eSywgY3Z2aXM9XEUuMiwgZGNoMT1cRVcsIGRsMT1cRVIsIGRzbD1cRWdcRWZcciwgZWQ9XEV5LAotCWVsPVxFdCwgZmxhc2g9XEVuMCQ8MjAwPlxFbjEsIGZzbD1eTSwgaG9tZT1eXiwgaHQ9XkksCi0JaHRzPVxFMSwgaWwxPVxFRSwgaW5kPV5KLCBpczI9XEVERlxFQ1xFRzBcRXJcRShcRSVFWCwKLQlrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZjA9XkFJXHIsCi0Ja2YxPV5BQFxyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsCi0Ja2Y2PV5BRVxyLCBrZjc9XkFGXHIsIGtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwKLQltYzQ9XEVBLCBtYzU9XEVALCByaT1cRUosIHJtaXI9XEVyLCBzbWlyPVxFcSwgc211bD1cRUc4LAotCXRiYz1cRTMsIHRzbD1cRWdcRWYsIHVzZT1hZG0rc2dyLAotcXZ0MTE5Ky0yNXxxdnQxMTlwLTI1fFFWVCAxMTkgUExVUyB3aXRoIDI1IGRhdGEgbGluZXMsCi0JbGluZXMjMjUsIHVzZT1xdnQxMTkrLAotcXZ0MTE5Ky13fHF2dDExOXAtd3xxdnQxMTktd3xRVlQgMTE5IGFuZCAxMTkgUExVUyBpbiAxMzIgY29sdW1uIG1vZGUsCi0JY29scyMxMzIsCi0JaXMyPVxFREZcRUNcRUcwXEVyXEUoXEUlXEVYXEVuNCwgdXNlPXF2dDExOSssCi1xdnQxMTkrLTI1LXd8cXZ0MTE5cC0yNS13fHF2dDExOS0yNS13fFFWVCAxMTkgYW5kIDExOSBQTFVTIDEzMiBieSAyNSwKLQlsaW5lcyMyNSwgdXNlPXF2dDExOSssCi1xdnQyMDN8cXZ0MjAzK3xxdW1lIHF2dCAyMDMgUGx1cywKLQlkY2gxPVxFW1AkPDc+LCBkbDE9XEVbTSQ8OTk+LCBpbDE9XEVbTCQ8OTk+LCBpbmQ9XG4kPDMwPiwKLQlpcD0kPDc+LCBrZjA9XEVbMjl+LCBrZjE9XEVbMTd+LCBrZjI9XEVbMTh+LCBrZjM9XEVbMTl+LAotCWtmND1cRVsyMH4sIGtmNT1cRVsyMX4sIGtmNj1cRVsyM34sIGtmNz1cRVsyNH4sIGtmOD1cRVsyNX4sCi0Ja2Y5PVxFWzI4fiwgcm1pcj1cRVs0bCwgc21pcj1cRVs0aCwgdXNlPXF2dDEwMywKLXF2dDIwMy13fHF2dDIwMy13LWFtfHF1bWUgcXZ0IDIwMyBQTFVTIGluIDEzMiBjb2xzICh3L2FkdmFuY2VkIHZpZGVvKSwKLQljb2xzIzEzMiwgbGluZXMjMjQsCi0JcnMyPVxFPlxFWz8zaFxFWz80bFxFWz81bFxFWz84aCwgdXNlPXF2dDIwMywKLSMKLSMJU2luY2UgYSBjb21tYW5kIGlzIHByZXNlbnQgZm9yIGVuYWJsaW5nIDI1IGRhdGEgbGluZXMsCi0jCWEgc3BlY2lmaWMgdGVybWluZm8gZW50cnkgbWF5IGJlIGdlbmVyYXRlZCBmb3IgdGhlIDIwMy4KLSMJSWYgb25lIGlzIGRlc2lyZWQgZm9yIHRoZSBRVlQgMTE5IFBMVVMgdGhlbiAyNSBsaW5lcyBtdXN0Ci0jCWJlIHNlbGVjdGVkIGluIHRoZSBzdGF0dXMgbGluZSAoc2V0dXAgbGluZSA5KS4KLSMKLXF2dDIwMy0yNXxRVlQgMjAzIFBMVVMgd2l0aCAyNSBieSA4MCBjb2x1bW4gbW9kZSwKLQljb2xzIzgwLCBsaW5lcyMyNSwKLQlpczI9XEVbPTQwaFxFWz8zbCwgdXNlPXF2dDIwMywKLXF2dDIwMy0yNS13fFFWVCAyMDMgUExVUyB3aXRoIDI1IGJ5IDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLCBsaW5lcyMyNSwKLQlyczI9XEVbPzNoXEVbPTQwaCwgdXNlPXF2dDIwMywKLQotIyMjIyBUZWxldmlkZW8gKHR2aSkKLSMKLSMJVGVsZVZpZGVvCi0jCTU1MCBFYXN0IEJyb2thdyBSb2FkCi0jCVBPIEJveCA0OTA0OCAgICA5NTE2MQotIwlTYW4gSm9zZSBDQSA5NTExMgotIwlWb3g6ICg0MDgpLTk1NC04MzMzCi0jCUZheDogKDQwOCktOTU0LTA2MjMKLSMKLSMKLSMgVGhlc2UgcmVxdWlyZSBpbmNyZWRpYmxlIGFtb3VudHMgb2YgcGFkZGluZy4KLSMKLSMgQWxsIG9mIHRoZXNlIHRlcm1pbmFscyAoOTEyIHRvIDk3MCBhbmQgdGhlIHR2aXB0KSBhcmUgZGlzY29udGludWVkLiAgTmV3ZXIKLSMgVGVsZXZpZGVvIHRlcm1pbmFscyBhcmUgQU5TSSBhbmQgUEMtQU5TSSBjb21wYXRpYmxlLgotCi10dmk4MDN8dGVsZXZpZGVvIDgwMywKLQljbGVhcj1cRSokPDEwPiwgdXNlPXR2aTk1MCwKLQotIyBWYW5pbGxhIHR2aTkxMCAtLSBXLiBHaXNoIDxjc3dhcnJlbkB2aW9sZXQ+IDEwLzI5Lzg2Ci0jIFN3aXRjaCBzZXR0aW5ncyBhcmU6Ci0jCi0jIFMxICAxIDIgMyA0Ci0jICAgICBEIEQgRCBEICA5NjAwCi0jICAgICBEIEQgRCBVICAgIDUwCi0jICAgICBEIEQgVSBEICAgIDc1Ci0jICAgICBEIEQgVSBVICAgMTEwCi0jICAgICBEIFUgRCBEICAgMTM1Ci0jICAgICBEIFUgRCBVICAgMTUwCi0jICAgICBEIFUgVSBEICAgMzAwCi0jICAgICBEIFUgVSBVICAgNjAwCi0jICAgICBVIEQgRCBEICAxMjAwCi0jICAgICBVIEQgRCBVICAxODAwCi0jICAgICBVIEQgVSBEICAyNDAwCi0jICAgICBVIEQgVSBVICAzNjAwCi0jICAgICBVIFUgRCBEICA0ODAwCi0jICAgICBVIFUgRCBVICA3MjAwCi0jICAgICBVIFUgVSBEICA5NjAwCi0jICAgICBVIFUgVSBVIDE5MjAwCi0jCi0jIFMxICA1IDYgNyA4Ci0jICAgICBVIEQgWCBEICA3TjEgKGRhdGEgYml0cywgcGFyaXR5LCBzdG9wIGJpdHMpIChYIG1lYW5zIGlnbm9yZWQpCi0jICAgICBVIEQgWCBVICA3TjIKLSMgICAgIFUgVSBEIEQgIDdPMQotIyAgICAgVSBVIEQgVSAgN08yCi0jICAgICBVIFUgVSBEICA3RTEKLSMgICAgIFUgVSBVIFUgIDdFMgotIyAgICAgRCBEIFggRCAgOE4xCi0jICAgICBEIEQgWCBVICA4TjIKLSMgICAgIEQgVSBEIEQgIDhPMQotIyAgICAgRCBVIFUgVSAgOEUyCi0jCi0jIFMxICA5ICBBdXRvd3JhcAotIyAgICAgVSAgb24KLSMgICAgIEQgIG9mZgotIwotIyBTMSAxMCAgQ1IvTEYKLSMgICAgIFUgIGRvIENSL0xGIHdoZW4gQ1IgcmVjZWl2ZWQKLSMgICAgIEQgIGRvIENSIHdoZW4gQ1IgcmVjZWl2ZWQKLSMKLSMgUzIgIDEgIE1vZGUKLSMgICAgIFUgIGJsb2NrCi0jICAgICBEICBjb252ZXJzYXRpb25hbAotIwotIyBTMiAgMiAgRHVwbGV4Ci0jICAgICBVICBoYWxmCi0jICAgICBEICBmdWxsCi0jCi0jIFMyICAzICBIZXJ0egotIyAgICAgVSAgNTAKLSMgICAgIEQgIDYwCi0jCi0jIFMyICA0ICBFZGl0IG1vZGUKLSMgICAgIFUgIGxvY2FsCi0jICAgICBEICBkdXBsZXgKLSMKLSMgUzIgIDUgIEN1cnNvciB0eXBlCi0jICAgICBVICB1bmRlcmxpbmUKLSMgICAgIEQgIGJsb2NrCi0jCi0jIFMyICA2ICBDdXJzb3IgZG93biBrZXkKLSMgICAgIFUgIHNlbmQgXkoKLSMgICAgIEQgIHNlbmQgXlYKLSMKLSMgUzIgIDcgIFNjcmVlbiBjb2xvdXIKLSMgICAgIFUgIGdyZWVuIG9uIGJsYWNrCi0jICAgICBEICBibGFjayBvbiBncmVlbgotIwotIyBTMiAgOCAgRFNSIHN0YXR1cyAocGluIDYpCi0jICAgICBVICBkaXNjb25uZWN0ZWQKLSMgICAgIEQgIGNvbm5lY3RlZAotIwotIyBTMiAgOSAgRENEIHN0YXR1cyAocGluIDgpCi0jICAgICBVICBkaXNjb25uZWN0ZWQKLSMgICAgIEQgIGR1cGxleAotIwotIyBTMiAxMCAgRFRSIHN0YXR1cyAocGluIDIwKQotIyAgICAgVSAgZGlzY29ubmVjdGVkCi0jICAgICBEICBkdXBsZXgKLSMgKHR2aTkxMDogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5La15MbF5SXkw6IjsgYWRkZWQgPGtob21lPiwgPGN1YjE+LCA8Y3VkMT4sCi0jIDxpbmQ+LCA8aHBhPiwgPHZwYT4sIDxhbT4sIDxtc2dyPiBmcm9tIFNDTyBlbnRyeSAtLSBlc3IpCi10dmk5MTB8dGVsZXZpZGVvIG1vZGVsIDkxMCwKLQlPVGJzLCBhbSwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzEsCi0JYmVsPV5HLCBjYnQ9XEVJLCBjbGVhcj1eWiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZWQ9XEVZLCBlbD1cRVQsCi0JaG9tZT1cRT1cMDAxXDAwMSwgaHBhPVxFXSVwMSV7MzJ9JSslYywgaHQ9XkksCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkY3J0LCBpbmQ9XkosIGludmlzQCwga2JzPV5ILAotCWtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZjA9XkFJXHIsIGtmMT1eQUBcciwKLQlrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwKLQlrZjc9XkFGXHIsIGtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwKLQl2cGE9XEVbJXAxJXszMn0lKyVjLCB1c2U9YWRtK3NnciwKLSMgRnJvbTogQWxhbiBSLiBSb2dlcnMgPHJvZ2VycyVhbGJhbnlAY3NuZXQtcmVsYXk+Ci0jIGFzIHN1YnNlcXVlbnRseSBoYWNrZWQgb3ZlciBieSBzb21lb25lIGF0IFNDTwotIyAodHZpOTEwKzogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5LXlBeTCA6IiAtLSBlc3IpCi0jCi0jIEhlcmUgYXJlIHRoZSA5MTArJ3MgRElQIHN3aXRjaGVzIChVID0gdXAsIEQgPSBkb3duLCBYID0gZG9uJ3QgY2FyZSk6Ci0jCi0jIFMxICAxIDIgMyA0OgotIyAgICAgRCBEIEQgRCAgOTYwMCAgICAgRCBEIEQgVSAgICA1MCAgICAgRCBEIFUgRCAgICA3NSAgICAgRCBEIFUgVSAgIDExMAotIyAgICAgRCBVIEQgRCAgIDEzNSAgICAgRCBVIEQgVSAgIDE1MCAgICAgRCBVIFUgRCAgIDMwMCAgICAgRCBVIFUgVSAgIDYwMAotIyAgICAgVSBEIEQgRCAgMTIwMCAgICAgVSBEIEQgVSAgMTgwMCAgICAgVSBEIFUgRCAgMjQwMCAgICAgVSBEIFUgVSAgMzYwMAotIyAgICAgVSBVIEQgRCAgNDgwMCAgICAgVSBVIEQgVSAgNzIwMCAgICAgVSBVIFUgRCAgOTYwMCAgICAgVSBVIFUgVSAxOTIwMAotIwotIyBTMSAgNSA2IDcgODoKLSMgICAgIFUgRCBYIEQgIDdOMSAgICAgVSBEIFggVSAgN04yICAgICBVIFUgRCBEICA3TzEgICAgIFUgVSBEIFUgIDdPMgotIyAgICAgVSBVIFUgRCAgN0UxICAgICBVIFUgVSBVICA3RTIgICAgIEQgRCBYIEQgIDhOMSAgICAgRCBEIFggVSAgOE4yCi0jICAgICBEIFUgRCBEICA4TzEgICAgIEQgVSBVIFUgIDhFMgotIwotIyBTMSAgOSAgQXV0b3dyYXAgICAgICAgICAgICAoVSA9IG9uLCBEID0gb2ZmKQotIyBTMSAxMCAgQ1IvTEYgICAgICAgICAgICAgICAoVSA9IENSL0xGIG9uIENSIHJlY2VpdmVkLCBEID0gQ1Igb24gQ1IgcmVjZWl2ZWQpCi0jIFMyICAxICBNb2RlICAgICAgICAgICAgICAgIChVID0gYmxvY2ssIEQgPSBjb252ZXJzYXRpb25hbCkKLSMgUzIgIDIgIER1cGxleCAgICAgICAgICAgICAgKFUgPSAgaGFsZiwgRCA9IGZ1bGwpCi0jIFMyICAzICBIZXJ0eiAgICAgICAgICAgICAgIChVID0gNTAsIEQgPSA2MCkKLSMgUzIgIDQgIEVkaXQgbW9kZSAgICAgICAgICAgKFUgPSBsb2NhbCwgRCA9IGR1cGxleCkKLSMgUzIgIDUgIEN1cnNvciB0eXBlICAgICAgICAgKFUgPSB1bmRlcmxpbmUsIEQgPSBibG9jaykKLSMgUzIgIDYgIEN1cnNvciBkb3duIGtleSAgICAgKFUgPSBzZW5kIF5KLCBEID0gc2VuZCBeVikKLSMgUzIgIDcgIFNjcmVlbiBjb2xvdXIgICAgICAgKFUgPSBncmVlbiBvbiBibGFjaywgRCA9IGJsYWNrIG9uIGdyZWVuKQotIyBTMiAgOCAgRFNSIHN0YXR1cyAocGluIDYpICAoVSA9IGRpc2Nvbm5lY3RlZCwgRCA9IGNvbm5lY3RlZCkKLSMgUzIgIDkgIERDRCBzdGF0dXMgKHBpbiA4KSAgKFUgPSBkaXNjb25uZWN0ZWQsIEQgPSBjb25uZWN0ZWQpCi0jIFMyIDEwICBEVFIgc3RhdHVzIChwaW4gMjApIChVID0gZGlzY29ubmVjdGVkLCBEID0gY29ubmVjdGVkKQotIwotdHZpOTEwK3x0ZWxldmlkZW8gOTEwKywKLQlkY2gxPVxFVywgZGwxPVxFUiQ8MzMqPiwgaG9tZT1eXiwgaWNoMT1cRVEsIGlsMT1cRUUkPDMzKj4sCi0Ja2YwPV5BQFxyLCBrZjE9XkFBXHIsIGtmMj1eQUJcciwga2YzPV5BQ1xyLCBrZjQ9XkFEXHIsCi0Ja2Y1PV5BRVxyLCBrZjY9XkFGXHIsIGtmNz1eQUdcciwga2Y4PV5BSFxyLCBrZjk9XkFJXHIsCi0JbGw9XEU9N1xzLCB1c2U9dHZpOTEwLAotCi0jICh0dmk5MTI6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eS15QXkwgOiIsIGFkZGVkICA8Zmxhc2g+IGFuZAotIyA8a2hvbWU+IGZyb20gQlJMIGVudHJ5IC0tIGVzcikKLXR2aTkxMnx0dmk5MTR8dHZpOTIwfG9sZCB0ZWxldmlkZW8gOTEyLzkxNC85MjAsCi0JT1RicywgT1RwdCwgYW0sIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHhtYyMxLAotCWJlbD1eRywgY2xlYXI9XlosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIkPDMzKj4sIGVkPVxFeSwgZWw9XEVULCBmbGFzaD1cRWIkPDUwLz5cRWQsIGhvbWU9Xl4sCi0JaHQ9XkksIGh0cz1cRTEsIGljaDE9XEVRLCBpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGRjcnQsCi0JaWwxPVxFRSQ8MzMqPiwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtmMD1eQUlcciwga2YxPV5BQFxyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwKLQlrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLCBrZjc9XkFGXHIsIGtmOD1eQUdcciwKLQlrZjk9XkFIXHIsIGtob21lPV5eLCBybXNvPVxFaywgcm11bD1cRW0sIHNtc289XEVqLCBzbXVsPVxFbCwKLQl0YmM9XEUzLAotIyBXZSBnb3Qgc29tZSBuZXcgdHZpOTEyYyB0ZXJtaW5hbHMgdGhhdCBhY3QgcmVhbGx5IHdlaXJkIG9uIHRoZSByZWd1bGFyCi0jIHRlcm1jYXAsIHNvIG9uZSBvZiBvdXIgZ3VydXMgd29ya2VkIHRoaXMgdXAuIFNlZW1zIHRoYXQgY3Vyc29yCi0jIGFkZHJlc3NpbmcgaXMgYnJva2VuLgotdHZpOTEyY2N8dHZpOTEyIGF0IGNvd2VsbCBjb2xsZWdlLAotCWN1cEAsIHVzZT10dmk5MTJjLAotCi0jIHR2aXs5MTIsOTIwfVtiY10gLSBUZWxlVmlkZW8gVFZJLTkxMkIvVFZJLTkyMEIgYW5kIFRWSS05MTJDL1RWSS05MjBDCi0jIEZyb206IEJlbmphbWluIEMuIFcuIFNpdHRsZXIKLSMKLSMgU29tZW9uZSBoYXMgcHV0IGEgc2Nhbm5lZCBjb3B5IG9mIHRoZSBtYW51YWwgb25saW5lIGF0OgotIyAgICAgaHR0cDovL3Z0MTAwLm5ldC90ZWxldmlkZW8vOTEyYi1vbS8KLSMKLSMgVGhlc2UgdGVybWluYWxzIHdlcmUgcHJvZHVjZWQgY2EuIDE5NzksIGFuZCBoYWQgYSAxMiIgbW9ub2Nocm9tZQotIyBzY3JlZW4sIHN1cHBvcnRlZCA3NS05NjAwIGJhdWQgKG5vIGhhbmRzaGFraW5nKSwgbW9ub2Nocm9tZSwgNy1iaXQKLSMgQVNDSUksIGFuZCB3ZXJlIGdlbmVyYWxseSBzaW1pbGFyIHRvIGFkbTNhIGJ1dCB3aXRoIGF0dHJpYnV0ZXMKLSMgKGluY2x1ZGluZyBzb21lIHdpdGggbWFnaWMgY29va2llcyksIGZhbmN5IGhhbGYtZHVwbGV4IG1vZGUsIGFuZAotIyBkaWZmZXJlbnQgYnVncy4KLSMKLSMgU29tZSBvcGVyYXRpb25zIHJlcWlyZSB0cnVseSBpbmNyZWRpYmxlIGFtb3VudHMgb2YgcGFkZGluZy4gVGhlCi0jIGluc2VydF9saW5lICg8aWwxPikgYW5kIGRlbGV0ZV9saW5lICg8ZGwxPikgb3BlcmF0aW9ucyBpbiBwYXJ0aWN1bGFyCi0jIGFyZSBzbyBzbG93IGFzIHRvIGJlIG5lYXJseSB1bnVzYWJsZS4KLSMKLSMgVGhlcmUgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIGEgc2VwYXJhdGUsIGVhcmxpZXIgc2VyaWVzIG9mIDkxMi85MjAKLSMgdGVybWluYWxzICh3aXRob3V0IHRoZSAiQiIgYW5kICJDIiBzdWZmaXgpOyBJIGhhdmUgbmV2ZXIgc2VlbiBvbmUsCi0jIGFuZCB0aGUgbWFudWFsIG9ubHkgZGVzY3JpYmVzIHRoZSAiQiIgYW5kICJDIiBzZXJpZXMuIFRoZSA5MTIgYW5kIDkyMAotIyBhcmUgcXVpdGUgZGlzdGluY3QgZnJvbSB0aGUgOTE0IGFuZCA5MjQsIHdoaWNoIHdlcmUgbXVjaCBuaWNlciBub24tCi0jIG1hZ2ljLWNvb2tpZSB0ZXJtaW5hbHMgc2ltaWxhciB0byB0aGUgOTUwLgotIwotIyBUaGlzIGlzIGEgbmV3IGRlc2NyaXB0aW9uIGZvciB0aGUgZm9sbG93aW5nIFRlbGVWaWRlbyB0ZXJtaW5hbHMsCi0jIGRpc3Rpbmd1aXNoZWQgY2hpZWZseSBieSB0aGVpciBrZXlib2FyZHM6Ci0jCi0jICAgVFZJLTkxMkIgLSB2ZXJ5IG9kZCBsYXlvdXQsIG5vIGZ1bmN0aW9uIGtleXMgKDg0IGtleXMpCi0jICAgVFZJLTkyMEIgLSB0eXBld3JpdGVyIGxheW91dCwgbm8gZnVuY3Rpb24ga2V5cyAoMTAzIGtleXMpCi0jICAgVFZJLTkxMkMgLSB2ZXJ5IG9kZCBsYXlvdXQsIGZ1bmN0aW9uIGtleXMgRjEtRjExICg4MiBrZXlzKQotIyAgIFRWSS05MjBDIC0gdHlwZXdyaXRlciBsYXlvdXQsIGZ1bmN0aW9uIGtleXMgRjEtRjExICgxMDEga2V5cykKLSMKLSMgVG8gY2hvb3NlIGEgc2V0dGluZyBmb3IgdGhlIFRFUk0gdmFyaWFibGUsIHN0YXJ0IHdpdGggdGhlIG1vZGVsOgotIwotIyAgICBNb2RlbCAgfHwgYmFzZSBuYW1lCi0jIC0tLS0tLS0tLS18fC0tLS0tLS0tLS0tCi0jICBUVkktOTEyQiB8fCB0dmk5MTJiCi0jICBUVkktOTEyQyB8fCB0dmk5MTJjCi0jICBUVkktOTIwQiB8fCB0dmk5MjBiCi0jICBUVkktOTIwQyB8fCB0dmk5MjBjCi0jCi0jIFRoZW4gYWRkIGEgc3VmZml4IGZyb20gdGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliaW5nIGluc3RhbGxlZCBvcHRpb25zCi0jIGFuZCBob3cgeW91J2QgbGlrZSB0byB1c2UgdGhlIHRlcm1pbmFsOgotIwotIyAgIFVzZSBWaWRlbyB8IFNlY29uZCB8IFZpc3VhbCB8ICBNYWdpYyAgfCAgUGFnZSB8fCBmZWF0dXJlCi0jICBBdHRyaWJ1dGVzIHwgIFBhZ2UgIHwgIEJlbGwgIHwgQ29va2llcyB8IFByaW50IHx8IHN1ZmZpeAotIyAtLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS18fC0tLS0tLS0tLQotIyAgICAgIE5vICAgICB8ICAgTm8gICB8ICBOL0EgICB8ICAgTi9BICAgfCAgIE5vICB8fCAtdW5rCi0jICAgICAgTm8gICAgIHwgICBObyAgIHwgIE4vQSAgIHwgICBOL0EgICB8ICBZZXMgIHx8IC1wCi0jICAgICAgTm8gICAgIHwgIFllcyAgIHwgICBObyAgIHwgICBOL0EgICB8ICAgTm8gIHx8IC0ycC11bmsKLSMgICAgICBObyAgICAgfCAgWWVzICAgfCAgIE5vICAgfCAgIE4vQSAgIHwgIFllcyAgfHwgLTJwLXAKLSMgICAgICBObyAgICAgfCAgWWVzICAgfCAgWWVzICAgfCAgIE4vQSAgIHwgICBObyAgfHwgLXZiLXVuawotIyAgICAgIE5vICAgICB8ICBZZXMgICB8ICBZZXMgICB8ICAgTi9BICAgfCAgWWVzICB8fCAtdmItcAotIyAgICAgWWVzICAgICB8ICAgTm8gICB8ICBOL0EgICB8ICAgIE5vICAgfCAgTi9BICB8fAotIyAgICAgWWVzICAgICB8ICAgTm8gICB8ICBOL0EgICB8ICAgWWVzICAgfCAgTi9BICB8fCAtbWMKLSMgICAgIFllcyAgICAgfCAgWWVzICAgfCAgIE5vICAgfCAgICBObyAgIHwgIE4vQSAgfHwgLTJwCi0jICAgICBZZXMgICAgIHwgIFllcyAgIHwgICBObyAgIHwgICBZZXMgICB8ICBOL0EgIHx8IC0ycC1tYwotIyAgICAgWWVzICAgICB8ICBZZXMgICB8ICBZZXMgICB8ICAgIE5vICAgfCAgTi9BICB8fCAtdmIKLSMgICAgIFllcyAgICAgfCAgWWVzICAgfCAgWWVzICAgfCAgIFllcyAgIHwgIE4vQSAgfHwgLXZiLW1jCi0jCi0jIFNvIGUuZy4gYSBtb2RlbCA5MjAgQyB3aXRoIHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24sIHZpc3VhbCBiZWxsCi0jIGFuZCBubyBtYWdpYyBjb29raWVzIHdvdWxkIGJlIHR2aTkyMGMtdmI7IGEgbW9kZWwgOTEyIEIgd2l0aG91dCB0aGUKLSMgc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbiBhbmQgdXNpbmcgbWFnaWMgY29va2llcyB3b3VsZCBiZQotIyB0dmk5MTJiLW1jCi0jCi0jIFBBRERJTkcKLSMKLSMgQXQgOTYwMCBiYXVkLCB0aGUgdGVybWluYWwgaXMgcHJvbmUgdG8gb3ZlcmZsb3cgaXRzIGlucHV0IGJ1ZmZlcgotIyBkdXJpbmcgY29tcGxleCBvcGVyYXRpb25zIChpbnNlcnQvZGVsZXRlCi0jIGNoYXJhY3Rlci9saW5lL3NjcmVlbi9wYWdlKSwgYW5kIGl0IGRvZXMgbm90IHNpZ25hbCB0aGlzIG92ZXIgdGhlCi0jIFJTMjMyIGNhYmxlLiBUaGUgdHlwaWNhbCBzeW1wdG9tIG9mIGFuIG92ZXJydW4gaXMgdGhhdCB0aGUgdGVybWluYWwKLSMgc3RhcnRzIGJlZXBpbmcsIGFuZCBvdXRwdXQgYmVjb21lcyBnYXJibGVkLgotIwotIyBUaGUgcGFkZGluZyBkZWxheXMgaW4gdGhpcyB0ZXJtaW5mbyB3ZXJlIGRlcml2ZWQgdXNpbmcgdGFjaygxKQotIyBydW5uaW5nIG9uIGEgTGludXggYm94IGNvbm5lY3RlZCB0byBhIFRWSS05MjBDIHdpdGggYSBsYXRlci1tb2RlbAotIyAoQTQ5QzEtc3R5bGUpIFJPTSBydW5uaW5nIGF0IDk2MDAgYmF1ZCwgc28geW91ciBtaWxlYWdlIG1heQotIyB2YXJ5LiBUaGUgbnVtYmVycyBiZWxvdyBzZWVtIHRvIGdpdmUgdGhlIHRlcm1pbmFsIGVub3VnaCB0aW1lIHNvCi0jIHRoYXQgaXQgZG9lc24ndCBvdmVyZmxvdyBpdHMgaW5wdXQgYnVmZmVyIGFuZCBzdGFydCBsb3NpbmcKLSMgY2hhcmFjdGVycy4KLSMKLSMgS0VZUwotIwotIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIEZVTkNUIGtleSBvbiBhIHR2aTkxMltiY10sIHVzZSB0aGUKLSMgY29ycmVzcG9uZGluZyB0dmk5MjBbYmNdIHRlcm1pbmZvIHdpdGggRlVOQ1QgKyAuLi4gZXF1aXZhbGVudHMgZnJvbQotIyB0aGUgZm9sbG93aW5nIHRhYmxlICh0aGVzZSBhbHNvIHdvcmsgb24gdGhlIDkyMCBzZXJpZXMpOgotIwotIyBVbnNoaWZ0ZWQgRnVuY3Rpb24gS2V5czoKLSMKLSMgIEtleSB8IGNhcG5hbWV8fCBFcXVpdmFsZW50Ci0jIC0tLS0tfC0tLS0tLS0tfHwtLS0tLS0tLS0tLS0KLSMgICBGMSB8ICA8a2YxPiB8fCBGVU5DVCArIEAKLSMgICBGMiB8ICA8a2YyPiB8fCBGVU5DVCArIEEKLSMgICBGMyB8ICA8a2YzPiB8fCBGVU5DVCArIEIKLSMgICBGNCB8ICA8a2Y0PiB8fCBGVU5DVCArIEMKLSMgICBGNSB8ICA8a2Y1PiB8fCBGVU5DVCArIEQKLSMgICBGNiB8ICA8a2Y2PiB8fCBGVU5DVCArIEUKLSMgICBGNyB8ICA8a2Y3PiB8fCBGVU5DVCArIEYKLSMgICBGOCB8ICA8a2Y4PiB8fCBGVU5DVCArIEcKLSMgICBGOSB8ICA8a2Y5PiB8fCBGVU5DVCArIEgKLSMgIEYxMCB8IDxrZjEwPiB8fCBGVU5DVCArIEkKLSMgIEYxMSB8IDxrZjExPiB8fCBGVU5DVCArIEoKLSMKLSMgU2hpZnRlZCBGdW5jdGlvbiBLZXlzOgotIwotIyAgU0hJRlQgKyBLZXkgfCBjYXBuYW1lfHwgRXF1aXZhbGVudAotIyAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tfHwtLS0tLS0tLS0tLS0KLSMgICBTSElGVCArIEYxIHwgPGtmMTI+IHx8IEZVTkNUICsgYAotIyAgIFNISUZUICsgRjIgfCA8a2YxMz4gfHwgRlVOQ1QgKyBhCi0jICAgU0hJRlQgKyBGMyB8IDxrZjE0PiB8fCBGVU5DVCArIGIKLSMgICBTSElGVCArIEY0IHwgPGtmMTU+IHx8IEZVTkNUICsgYwotIyAgIFNISUZUICsgRjUgfCA8a2YxNj4gfHwgRlVOQ1QgKyBkCi0jICAgU0hJRlQgKyBGNiB8IDxrZjE3PiB8fCBGVU5DVCArIGUKLSMgICBTSElGVCArIEY3IHwgPGtmMTg+IHx8IEZVTkNUICsgZgotIyAgIFNISUZUICsgRjggfCA8a2YxOT4gfHwgRlVOQ1QgKyBnCi0jICAgU0hJRlQgKyBGOSB8IDxrZjIwPiB8fCBGVU5DVCArIGgKLSMgIFNISUZUICsgRjEwIHwgPGtmMjE+IHx8IEZVTkNUICsgaQotIyAgU0hJRlQgKyBGMTEgfCA8a2YyMj4gfHwgRlVOQ1QgKyBqCi0jCi0jIFBPUlRTIEFORCBTV0lUQ0ggU0VUVElOR1MKLSMKLSMgSGVyZSBhcmUgdGhlIHN3aXRjaCBzZXR0aW5ncyBmb3IgdGhlIFRWSS05MTJCL1RWSS05MjBCIGFuZAotIyBUVkktOTEyQy9UVkktOTIwQzoKLSMKLSMgUzEgKExpbmUpLCBhbmQgUzMgKFByaW50ZXIpIGJhdWQgcmF0ZXMgLS0gcHV0IG9uZSwgYW5kIG9ubHkgb25lLCBzd2l0Y2ggZG93bjoKLSMgMjogOTYwMAkzOiA0ODAwCQk0OiAyNDAwCQk1OiAxMjAwCi0jIDY6ICA2MDAJNzogIDMwMAkJODogIDE1MAkJOTogICA3NQotIyAxMDogMTEwCi0jCi0jIFMyIFVBUlQvVGVybWluYWwgb3B0aW9uczoKLSMgCQlVcAkJCURvd24KLSMgMToJCU5vdCB1c2VkCQlOb3QgYWxsb3dlZAotIyAyOglBbHRlcm5hdGUgY2hhcmFjdGVyIHNldAkgIFN0YW5kYXJkIGNoYXJhY3RlciBzZXQKLSMgMzoJICAgIEZ1bGwgZHVwbGV4CQkgICAgSGFsZiBkdXBsZXgKLSMgNDoJICAgIDUwIEh6IHJlZnJlc2gJICAgIDYwIEh6IHJlZnJlc2gKLSMgNToJICAgICAgTm8gcGFyaXR5CQkgICAgIFNlbmQgcGFyaXR5Ci0jIDY6CSAgICAgMiBzdG9wIGJpdHMJICAgICAxIHN0b3AgYml0Ci0jIDc6CSAgICAgOCBkYXRhIGJpdHMJICAgICA3IGRhdGEgYml0cwotIyA4OgkJTm90IHVzZWQJCU5vdCBhbGxvd2VkIG9uIFJldiBFIG9yIGxvd2VyCi0jIDk6CSAgICAgRXZlbiBwYXJpdHkJICAgICBPZGQgcGFyaXR5Ci0jIDEwOgkgICAgU3RlYWR5IGN1cnNvcgkgICAgQmxpbmtpbmcgY3Vyc29yCi0jIAkoT24gUmV2IEUgb3IgbG93ZXIsIHVzZSBXMjUgaW5zdGVhZCBvZiBzd2l0Y2ggMTAuKQotIwotIyBTNSBVQVJUL1Rlcm1pbmFsIG9wdGlvbnM6Ci0jIAkJT3BlbgkJCUNsb3NlZAotIyAxOglQMy02IE5vdCBjb25uZWN0ZWQJRFNSIHJlY2VpdmVkIG9uIFAzLTYKLSMgMjoJUDMtOCBOb3QgY29ubmVjdGVkCURDRCByZWNlaXZlZCBvbiBQMy04Ci0jCi0jIDMgT3BlbiwgNCBPcGVuOgkJUDMtMjAgTm90IGNvbm5lY3RlZAotIyAzIE9wZW4sIDQgQ2xvc2VkOglEVFIgb24gd2hlbiB0ZXJtaW5hbCBpcyBvbgotIyAzIENsb3NlZCwgNCBPcGVuOglEVFIgaXMgY29ubmVjdGVkIHRvIFJUUwotIyAzIENsb3NlZCwgNCBDbG9zZWQ6CU5vdCBhbGxvd2VkCi0jCi0jIDUgQ2xvc2VkOglIRFggcHJpbnRlciAoaGFyZHdhcmUgY29udHJvbCkgUmV2LiBLIHdpdGggZXh0ZW5zaW9uIHBvcnQgb2ZmLAotIyAJCWFsbCBkYXRhIHRyYW5zbWl0dGVkIG91dCBvZiB0aGUgbW9kZW0gcG9ydCAoUDMpIHdpbGwgYWxzbyBiZQotIyAJCXRyYW5zbWl0dGVkIG91dCBvZiB0aGUgcHJpbnRlciBwb3J0IChQNCkuCi0jCi0jIDYgT3BlbiwgNyBPcGVuOgkJTm90IGFsbG93ZWQKLSMgNiBPcGVuLCA3IENsb3NlZDoJMjBtYSBjdXJyZW50IGxvb3AgaW5wdXQKLSMgNiBDbG9zZWQsIDcgT3BlbjoJUlMyMzIgaW5wdXQKLSMgNiBDbG9zZWQsIDcgQ2xvc2VkOglOb3QgYWxsb3dlZAotIwotIyBKdW1wZXIgb3B0aW9uczoKLSMgSWYgdGhlIGp1bXBlciBpcyBpbnN0YWxsZWQsIHRoZSBlZmZlY3Qgd2lsbCBvY2N1ciAodGhlIG5leHQgdGltZSB0aGUgdGVybWluYWwKLSMgaXMgc3dpdGNoZWQgb24pLgotIwotIyBTNC9XMzE6CUVuYWJsZXMgYXV0b21hdGljIExGIHVwb24gcmVjZWlwdCBvZiBDUiBmcm9tCi0jIAkJcmVtb3RlIG9yIGtleWJvYXJkLgotIyBTNC9XMzI6CUVuYWJsZXMgdHJhbnNtaXNzaW9uIG9mIEVPVCBhdCB0aGUgZW5kIG9mIFNlbmQuICBJZiBub3QKLSMgCQlpbnN0YWxsZWQsIGEgY2FycmlhZ2UgcmV0dXJuIGlzIHNlbnQuCi0jIFM0L1czMzoJRGlzYWJsZXMgYXV0b21hdGljIGNhcnJpYWdlIHJldHVybiBpbiBjb2x1bW4gODAuCi0jIFM0L1czNDoJU2VsZWN0cyBQYWdlIFByaW50IE1vZGUgYXMgaW5pdGlhbCBjb25kaXRpb24uICBJZiBub3QKLSMgCQlpbnN0YWxsZWQsIEV4dGVuc2lvbiBNb2RlIGlzIHNlbGVjdGVkLgotIwotIyBOT04tU1RBTkRBUkQgQ0FQQUJJTElUSUVTCi0jCi0jIFNlbmRpbmcgPHU5PiBvciA8dTc+IHJldHVybnMgYSBjdXJzb3IgcG9zaXRpb24gcmVwb3J0IGluIHRoZSBmb3JtYXQKLSMgWVhcciwgd2hlcmUgWSBhbmQgWCBhcmUgYXMgaW4gPGN1cD4uIFRoaXMgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbgotIyA8dTg+IGFuZCA8dTY+LCBidXQgaXQncyBub3QgY2xlYXIgaG93IG9uZSBzaG91bGQgd3JpdGUgYW4KLSMgYXBwcm9wcmlhdGUgc2NhbmYgc3RyaW5nLCBzaW5jZSB3ZSBuZWVkIHRvIHN1YnRyYWN0ICUnICcgZnJvbSB0aGUKLSMgY2hhcmFjdGVyIGFmdGVyIHJlYWRpbmcgaXQuIFRoZSA8dTk+IGNhcGFiaWxpdHkgaXMgdXNlZCBieSB0YWNrKDEpCi0jIHRvIHN5bmNocm9uaXplIGR1cmluZyBwYWRkaW5nIHRlc3RzLCBhbmQgc2VlbXMgdG8gd29yayBmb3IgdGhhdAotIyBwdXJwb3NlLgotIwotIyBUaGlzIGRlc2NyaXB0aW9uIGFsc28gaW5jbHVkZXMgdGhlIG9ic29sZXRlIHRlcm1jYXAgY2FwYWJpbGl0aWVzCi0jIGhhc19oYXJkd2FyZV90YWJzICg8T1RwdD4pIGFuZCBiYWNrc3BhY2VzX3dpdGhfYnMgKDxPVGJzPikuCi0jCi0jIEZFQVRVUkVTIE5PVCBZRVQgREVTQ1JJQkVEIElOIFRISVMgVEVSTUlORk8KLSMKLSMgVGhlIEZVTkNUIG1vZGlmaWVyIGFjdHVhbGx5IHdvcmtzIHdpdGggZXZlcnkgbm9ybWFsIGtleSBieSBzZW5kaW5nCi0jIF5BWFxyLCB3aGVyZSBYIGlzIHRoZSBzZXF1ZW5jZSBub3JtYWxseSBzZW50IGJ5IHRoYXQga2V5LiBUaGlzIGlzIGEKLSMgc29ydCBvZiBtZXRhIGtleSBub3QgY3VycmVudGx5IGRlc2NyaWJhYmxlIGluIHRlcm1pbmZvLgotIwotIyBUaGVyZSBhcmUgcXVpdGUgYSBmZXcgb3RoZXIga2V5cyAoZXNwZWNpYWxseSBvbiB0aGUgOTIwIG1vZGVscywpIGJ1dAotIyB0aGV5IGFyZSBmb3IgdGhlIG1vc3QgcGFydCBvbmx5IHVzZWZ1bCBpbiBibG9jayBtb2RlLgotIwotIyBUaGVzZSB0ZXJtaW5hbHMgaGF2ZSBsb3RzIG9mIGZvcm1zIG1hbmlwdWxhdGlvbiBmZWF0dXJlcywgbWFpbmx5Ci0jIHVzZWZ1bCBpbiBibG9jayBtb2RlLCBpbmNsdWRpbmcgImNsZWFyIFggdG8gbnVsbHMiICh2cy4gImNsZWFyIFggdG8KLSMgc3BhY2VzIjsgbnVsbHMgYXJlIHNlbnRpbmVscyBmb3IgInNlbmQgWCIgb3BlcmF0aW9ucyk7ICJzZW5kIFgiCi0jIG9wZXJhdGlvbnMgZm9yIHVwbG9hZGluZyBhbGwgb3IgcGFydCBvZiB0aGUgc2NyZWVuOyBhbmQgYmxvY2stbW9kZQotIyBlZGl0aW5nIGtleXMgKHRoZXkgZG9uJ3Qgc2VuZCBlc2NhcGUgc2VxdWVuY2VzLCBidXQgbWFuaXB1bGF0ZSB2aWRlbwotIyBtZW1vcnkgZGlyZWN0bHkpLiBCbG9jayBtb2RlIGlzIHVzZWQgZm9yIGxvY2FsIGVkaXRpbmcsIGFuZCBwcm90ZWN0Ci0jIG1vZGUgKGluIGNvbmp1bmN0aW9uIHdpdGggdGhlICJ3cml0ZSBwcm90ZWN0IiBhdHRyaWJ1dGUsCi0jIGEuay5hLiBoYWxmLWludGVuc2l0eSBvdXRzaWRlIG9mIHByb3RlY3QgbW9kZSkgaXMgdXNlZCB0byBjb250cm9sCi0jIHdoaWNoIHBhcnRzIG9mIHRoZSBzY3JlZW4gYXJlIGVkaXRlZC9zZW50L3ByaW50ZWQgKGJ5IDxtYzA+KS4KLSMKLSMgVGhlcmUgYXJlIGF0IGxlYXN0IHR3byBtYWpvciBmYW1pbGllcyBvZiBST00sICJlYXJseSIgYW5kCi0jIEE0OUIxL0E0OUMxOyB0aGUgbWFqb3IgZGlmZmVyZW5jZSBzZWVtcyB0byBiZSB0aGF0IHRoZSBsYXR0ZXIgUk9NcwotIyBzdXBwb3J0IGEgZmV3IGV4dHJhIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIG1hbmlwdWxhdGluZyB0aGUgb2ZmLXNjcmVlbgotIyBtZW1vcnkgcGFnZSwgYW5kIGZvciBzZW5kaW5nIHdob2xlIHBhZ2VzIGJhY2sgdG8gdGhlIGhvc3QgKG1haW5seQotIyB1c2VmdWwgaW4gYmxvY2sgbW9kZS4pIFRoZSBkZXNjcmlwdGlvbnMgaW4gdGhpcyBmaWxlIGRvbid0IHVzZSBhbnkKLSMgb2YgdGhvc2Ugc2VxdWVuY2VzOiBzZXQgY3Vyc29yIHBvc2l0aW9uIGluY2x1ZGluZyBwYWdlIChcRS1QWVgsCi0jIHdoZXJlIFAgaXMgXHMgZm9yIHBhZ2UgMCBhbmQgISBmb3IgcGFnZSAxIFthY3R1YWxseSBvbmx5IHRoZSBMU0Igb2YKLSMgUCBpcyB0YWtlbiBpbnRvIGFjY291bnQsIHNvIGUuZy4gMCBhbmQgMSB3b3JrIHRvbyxdIGFuZCBZIGFuZCBYIGFyZQotIyBhcyBpbiA8Y3VwPik7IHJlYWQgY3Vyc29yIHBvc2l0aW9uIChcRS8pLCB3aGljaCBpcyBhbmFsb2dvdXMgdG8gPHU5PgotIyBhbmQgcmV0dXJucyBQWVhcciwgd2hlcmUgUCBpcyBccyBmb3IgcGFnZSAwIG9yICEgZm9yIHBhZ2UgMSwgYW5kIFlYCi0jIGFyZSBhcyBpbiA8Y3VwPiwgYW5kIHNvbWUgInNlbmQgcGFnZSIgZmVhdHVyZXMgbWFpbmx5IHVzZWZ1bCBmb3IKLSMgZm9ybXMgbWFuaXB1bGF0aW9uLgotIwotIyBUaGUga2V5Ym9hcmQgZW5hYmxlIChcRSIpIGFuZCBkaXNhYmxlIChcRSMpIHNlcXVlbmNlcyBhcmUgdW51c2VkLAotIyBleGNlcHQgdGhhdCBhIHRlcm1pbmFsIHJlc2V0ICg8aXMyPikgZW5hYmxlcyB0aGUga2V5Ym9hcmQuCi0jCi0jIEF1dG8tZmxpcCBtb2RlIChcRXYpIGlzIGxpa2VseSBmYXN0ZXIgdGhhbiB0aGUgc2Nyb2xsaW5nIG1vZGUgKFxFdykKLSMgZW5hYmxlZCBpbiA8aXMyPiwgYnV0IGF1dG8tZmxpcCBpcyB2ZXJ5IGphcnJpbmcgc28gd2UgZG9uJ3QgdXNlIGl0LgotIwotIyBCVUdTCi0jCi0jIEF0IGxlYXN0IHVwIHRvIHRoZSBBNDlCMSBhbmQgQTQ5QzEgUk9NcywgdGhlcmUgYXJlIG5vIFxFYiBhbmQgXEVkCi0jIHNlcXVlbmNlcyAoSSBpbmZlciB0aGF0IGluIHNvbWUgVGVsZVZpZGVvIHRlcm1pbmFsIHRoZXkgbWF5IGludmVydAotIyBhbmQgdW5pbnZlcnQgdGhlIGRpc3BsYXkpIHNvIHRoZSA8Zmxhc2g+IHNlcXVlbmNlIGdpdmVuIGhlcmUgaXMgYQotIyBjaGVlc3kgcGFnZS1mbGlwIGluc3RlYWQuCi0jCi0jIFRoZSBiYWNrX3RhYiAoPGNidD4pIHNlcXVlbmNlIChcRUkpIGRvZXNuJ3Qgd29yayBhY2NvcmRpbmcgdG8KLSMgdGFjaygxKSwgc28gaXQgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBkZXNjcmlwdGlvbnMgYmVsb3cuCi0jCi0jIEl0J3Mgbm90IGNsZWFyIHdoZXRoZXIgYXV0b19sZWZ0X21hcmdpbiAoPGJ3PikgZmxhZyBzaG91bGQgYmUgc2V0Ci0jIGZvciB0aGVzZSB0ZXJtaW5hbHM7IHRhY2sgc2F5cyB5ZXMsIHNvIGl0IGlzIHNldCBoZXJlLCBidXQgdGhpcwotIyBkaWZmZXJzIGZyb20gb3RoZXIgZGVzY3JpcHRpb25zIEkndmUgc2Vlbi4KLSMKLSMgRXh0ZW5zaW9uIHByaW50IG1vZGUgKDxtYzU+KSBlY2hvZXMgYWxsIGNoYXJhY3RlcnMgdG8gdGhlIHByaW50ZXIKLSMgcG9ydCBbaW4gYWRkaXRpb24gdG8gZGlzcGxheWluZyB0aGVtXSBleGNlcHQgZm9yIHRoZSBwYWdlIHByaW50IG1vZGUKLSMgc2VxdWVuY2UgKDxtYzQ+KTsgdGhpcyBpcyBhIHNsaWdodCB2aW9sYXRpb24gb2YgdGhlIHRlcm1pbmZvCi0jIGRlZmluaXRpb24gZm9yIDxtYzU+IGJ1dCBJIGRvbid0IGV4cGVjdCBpdCB0byBjYXVzZSBwcm9ibGVtcy4gIFdlCi0jIHJlc2V0IHRvIHBhZ2UgcHJpbnQgbW9kZSBpbiA8cnMxPiBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIGVuYWJsZWQKLSMgYWNjaWRlbnRhbGx5LgotIwotIyBUaGUgZGVzY3JpcHRpb25zIHdpdGggcGx1cyBzaWducyAoKykgYXJlIGJ1aWxkaW5nIGJsb2Nrcy4KLQotdHZpOTEyYi11bmt8dHZpOTEyYy11bmt8VGVsZVZpZGVvIFRWSS05MTJCIG9yIFRWSS05MTJDIChubyBhdHRyaWJ1dGVzKSwKLQlPVGJzLCBPVHB0LCBhbSwgYncsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDMyJDw1MD4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElJyAnJSslYyVwMiUnICclKyVjLCBjdXUxPV5LLCBkY2gxPVxFVyQ8MzA+LAotCWRsMT1cRVIkPDEqPiQ8MTAwPiwgZWQ9XEV5JDwyKj4kPDEwPiwgZWw9XEVUJDwxNT4sCi0JaG9tZT1eXiwgaHQ9XkksIGh0cz1cRTEsIGljaDE9XEVRJDwzMD4sCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkY3J0LCBpbDE9XEVFJDwxKj4kPDEwMD4sCi0JaW5kPVxuJDwxMD4sIGlzMj1cRXdcRUFcRSdcRSJcRSgsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIGtkY2gxPVwxNzcsIGtlbnQ9Xk0sIGtob21lPV5eLCBtYzQ9XEVBLAotCW1jNT1cRUAsIHJzMT1cRWtcMDEwXEVtXDAxMFxFcVwwMzIsIHRiYz1cRTMsIHU2PSVjJWNcciwKLQl1Nz1cRT8sIHU4PSVjJWNcciwgdTk9XEU/LAotCi0jIFRoaXMgaXNuJ3QgaW5jbHVkZWQgaW4gdGhlIGJhc2ljIGNhcGFiaWxpdGllcyBiZWNhdXNlIGl0IGlzCi0jIHR5cGljYWxseSB1bnVzYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBmdWxsIHJhbmdlIG9mIHZpZGVvCi0jIGF0dHJpYnV0ZXMsIHNpbmNlIHRoZSBtYWdpYyBjb29raWUgYXR0cmlidXRlcyB0dXJuIGludG8gQVNDSUkKLSMgY29udHJvbCBjaGFyYWN0ZXJzLCBhbmQgdGhlIGhhbGYtaW50ZW5zaXR5ICgicHJvdGVjdGVkIikgYXR0cmlidXRlCi0jIGNvbnZlcnRzIGFsbCBhZmZlY3RlZCBjaGFyYWN0ZXJzIHRvIHNwYWNlcy4KLQotdHZpOTEyYitwcmludGVyfFRlbGVWaWRlbyBUVkktOTEyQi9UVkktOTIwQiBhbmQgVFZJLTkxMkMvVFZJLTkyMEMgcGFnZSBwcmludCBzdXBwb3J0LAotCW1jMD1cRVAsCi0KLSMgVGhpcyB1c2VzIGhhbGYtaW50ZW5zaXR5IG1vZGUgKDxkaW0+KSBmb3Igc3RhbmRvdXQgKDxzbXNvPiksIGFuZAotIyBleHBvc2VzIG5vIG90aGVyIGF0dHJpYnV0ZXMgKGhhbGYtaW50ZW5zaXR5IGlzIHRoZSBvbmx5IGF0dHJpYnV0ZQotIyB0aGF0IGRvZXMgbm90IGdlbmVyYXRlIGEgbWFnaWMgY29va2llLikKLQotdHZpOTEyYitkaW18VGVsZVZpZGVvIFRWSS05MTJCL1RWSS05MjBCIGFuZCBUVkktOTEyQy9UVkktOTIwQyBoYWxmLWludGVuc2l0eSBhdHRyaWJ1dGUgc3VwcG9ydCwKLQltc2dyLAotCWRpbT1cRSksIHJtc289XEUoLCBzZ3I9XEUlPyVwMSVwNSV8JXQpJWUoJTssIHNncjA9XEUoLAotCXNtc289XEUpLAotCi0jIEZ1bGwgbWFnaWMtY29va2llIGF0dHJpYnV0ZSBzdXBwb3J0LCB3aXRoIGhhbGYtaW50ZW5zaXR5IHJldmVyc2UKLSMgdmlkZW8gZm9yIHN0YW5kb3V0LiBOb3RlIHRoYXQgd2UgYWRkIGEgc3BhY2UgaW4gdGhlIDxkaW0+IHNlcXVlbmNlCi0jIHRvIGdpdmUgYSBjb25zaXN0ZW50IG1hZ2ljLWNvb2tpZSBjb3VudC4gQWxzbyBub3RlIHRoYXQgPHNncj4gdXNlcwotIyBiYWNrc3BhY2luZyAoaW4gdGhlIFRWSS1zdXBwb3J0ZWQgb3JkZXIpIHRvIGFwcGx5IGFsbCByZXF1ZXN0ZWQKLSMgYXR0cmlidXRlcyB3aXRoIG9ubHkgYSBzaW5nbGUgbWFnaWMgY29va2llLgotCi10dmk5MTJiK21jfFRlbGVWaWRlbyBUVkktOTEyQi9UVkktOTIwQiBhbmQgVFZJLTkxMkMvVFZJLTkyMEMgZnVsbCBtYWdpYy1jb29raWUgYXR0cmlidXRlIHN1cHBvcnQsCi0JeG1jIzEsCi0JYmxpbms9XEVcXiwgZGltPVxFKVxzLCBpbnZpcz1cRV8sIHJldj1cRWosIHJtc289XEUoXEVrLAotCXJtdWw9XEVtLAotCXNncj1cRSU/JXAxJXA1JXwldCklZSglOyBcMDEwXEUlPyVwMSVwMyV8JXRqJWVrJTtcMDEwXEUlPyVwMiV0bCVlbSU7XDAxMFxFJT8lcDcldF8lZSU/JXA0JXRcXiVlcSU7JTssCi0Jc2dyMD1cRShcRWtcMDEwXEVtXDAxMFxFcSwgc21zbz1cRSlcRWosIHNtdWw9XEVsLAotCi0jIFRoaXMgdXNlcyB0aGUgc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbiB0byBzYXZlICYgcmVzdG9yZSBzY3JlZW4KLSMgY29udGVudHMuIElmIHlvdXIgdGVybWluYWwgaXMgbWlzc2luZyB0aGUgb3B0aW9uLCB0aGlzIGRlc2NyaXB0aW9uCi0jIHNob3VsZCBzdGlsbCB3b3JrLCBidXQgdGhhdCBoYXMgbm90IGJlZW4gdGVzdGVkLgotCi10dmk5MTJiKzJwfFRlbGVWaWRlbyBUVkktOTEyQi9UVkktOTIwQiBhbmQgVFZJLTkxMkMvVFZJLTkyMEMgc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbiBzdXBwb3J0LAotCWZsYXNoPVxFSyQ8MTAwPlxFSywgcm1jdXA9XDAzMiQ8NTA+XEVLXEU9N1xzLAotCXNtY3VwPVxFS1wwMzIkPDUwPlxFKFxFa1wwMTBcRW1cMDEwXEVxXDAzMiQ8NTA+LAotCi0jIFRoaXMgc2ltdWxhdGVzIGZsYXNoaW5nIGJ5IGJyaWVmbHkgdG9nZ2xpbmcgdG8gdGhlIG90aGVyIHBhZ2UKLSMgKGtsdWRnZSEpCi0KLXR2aTkxMmIrdmJ8VGVsZVZpZGVvIFRWSS05MTJCL1RWSS05MjBCIGFuZCBUVkktOTEyQy9UVkktOTIwQyBzZWNvbmQgcGFnZSBtZW1vcnkgb3B0aW9uICJ2aXNpYmxlIGJlbGwiIHN1cHBvcnQsCi0JYmVsPVxFSyQ8MTAwPlxFSywgdXNlPXR2aTkxMmIrMnAsCi0KLSMgRnVuY3Rpb24ga2V5cyAoPGtmMTI+IC4uIDxrZjIyPiBhcmUgc2hpZnRlZCA8a2YxPiAuLiA8a2YxMT4pCi0KLXR2aTkyMGIrZm58VGVsZVZpZGVvIFRWSS05MjBCIGFuZCBUVkktOTIwQyBmdW5jdGlvbiBrZXkgc3VwcG9ydCwKLQlrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMTE9XkFKXHIsIGtmMTI9XkFgXHIsIGtmMTM9XkFhXHIsCi0Ja2YxND1eQWJcciwga2YxNT1eQWNcciwga2YxNj1eQWRcciwga2YxNz1eQWVcciwga2YxOD1eQWZcciwKLQlrZjE5PV5BZ1xyLCBrZjI9XkFBXHIsIGtmMjA9XkFoXHIsIGtmMjE9XkFpXHIsIGtmMjI9XkFqXHIsCi0Ja2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLCBrZjc9XkFGXHIsCi0Ja2Y4PV5BR1xyLCBrZjk9XkFIXHIsCi0KLSMgQ29tYmluYXRpb25zIG9mIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MKLQotdHZpOTEyYi0ycC11bmt8dHZpOTEyYy0ycC11bmt8dHZpOTEyYi11bmstMnB8dHZpOTEyYy11bmstMnB8VGVsZVZpZGVvIFRWSS05MTJCIG9yIFRWSS05MTJDIChzZWNvbmQgcGFnZSBtZW1vcnkgb3B0aW9uOyBubyBhdHRyaWJ1dGVzKSwKLQl1c2U9dHZpOTEyYisycCwgdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MTJiLXZiLXVua3x0dmk5MTJjLXZiLXVua3x0dmk5MTJiLXVuay12Ynx0dmk5MTJjLXVuay12YnxUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24gInZpc2libGUgYmVsbCI7IG5vIGF0dHJpYnV0ZXMpLAotCXVzZT10dmk5MTJiK3ZiLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItcHx0dmk5MTJjLXB8VGVsZVZpZGVvIFRWSS05MTJCIG9yIFRWSS05MTJDIChubyBhdHRyaWJ1dGVzOyBwYWdlIHByaW50KSwKLQl1c2U9dHZpOTEyYitwcmludGVyLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItMnAtcHx0dmk5MTJjLTJwLXB8dHZpOTEyYi1wLTJwfHR2aTkxMmMtcC0ycHxUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb247IG5vIGF0dHJpYnV0ZXM7IHBhZ2UgcHJpbnQpLAotCXVzZT10dmk5MTJiKzJwLCB1c2U9dHZpOTEyYitwcmludGVyLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItdmItcHx0dmk5MTJjLXZiLXB8dHZpOTEyYi1wLXZifHR2aTkxMmMtcC12YnxUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24gInZpc2libGUgYmVsbCI7IG5vIGF0dHJpYnV0ZXM7IHBhZ2UgcHJpbnQpLAotCXVzZT10dmk5MTJiK3ZiLCB1c2U9dHZpOTEyYitwcmludGVyLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItMnB8dHZpOTEyYy0ycHxUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb247IGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkxMmIrMnAsIHVzZT10dmk5MTJiK2RpbSwgdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MTJiLTJwLW1jfHR2aTkxMmMtMnAtbWN8dHZpOTEyYi1tYy0ycHx0dmk5MTJjLW1jLTJwfFRlbGVWaWRlbyBUVkktOTEyQiBvciBUVkktOTEyQyAoc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbjsgbWFnaWMgY29va2llcyksCi0JdXNlPXR2aTkxMmIrMnAsIHVzZT10dmk5MTJiK21jLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItdmJ8dHZpOTEyYy12YnxUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24gInZpc2libGUgYmVsbCI7IGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkxMmIrdmIsIHVzZT10dmk5MTJiK2RpbSwgdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MTJiLXZiLW1jfHR2aTkxMmMtdmItbWN8dHZpOTEyYi1tYy12Ynx0dmk5MTJjLW1jLXZifFRlbGVWaWRlbyBUVkktOTEyQiBvciBUVkktOTEyQyAoc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbiAidmlzaWJsZSBiZWxsIjsgbWFnaWMgY29va2llcyksCi0JdXNlPXR2aTkxMmIrdmIsIHVzZT10dmk5MTJiK21jLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmJ8dHZpOTEyY3xUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkxMmIrZGltLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkxMmItbWN8dHZpOTEyYy1tY3xUZWxlVmlkZW8gVFZJLTkxMkIgb3IgVFZJLTkxMkMgKG1hZ2ljIGNvb2tpZXMpLAotCXVzZT10dmk5MTJiK21jLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGItdW5rfHR2aTkyMGMtdW5rfFRlbGVWaWRlbyBUVkktOTIwQiBvciBUVkktOTIwQyAobm8gYXR0cmlidXRlcyksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiLXVuaywKLQotdHZpOTIwYi0ycC11bmt8dHZpOTIwYy0ycC11bmt8dHZpOTIwYi11bmstMnB8dHZpOTIwYy11bmstMnB8VGVsZVZpZGVvIFRWSS05MjBCIG9yIFRWSS05MjBDIChzZWNvbmQgcGFnZSBtZW1vcnkgb3B0aW9uOyBubyBhdHRyaWJ1dGVzKSwKLQl1c2U9dHZpOTIwYitmbiwgdXNlPXR2aTkxMmIrMnAsIHVzZT10dmk5MTJiLXVuaywKLQotdHZpOTIwYi12Yi11bmt8dHZpOTIwYy12Yi11bmt8dHZpOTIwYi11bmstdmJ8dHZpOTIwYy11bmstdmJ8VGVsZVZpZGVvIFRWSS05MjBCIG9yIFRWSS05MjBDIChzZWNvbmQgcGFnZSBtZW1vcnkgb3B0aW9uICJ2aXNpYmxlIGJlbGwiOyBubyBhdHRyaWJ1dGVzKSwKLQl1c2U9dHZpOTIwYitmbiwgdXNlPXR2aTkxMmIrdmIsIHVzZT10dmk5MTJiLXVuaywKLQotdHZpOTIwYi1wfHR2aTkyMGMtcHxUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKG5vIGF0dHJpYnV0ZXM7IHBhZ2UgcHJpbnQpLAotCXVzZT10dmk5MjBiK2ZuLCB1c2U9dHZpOTEyYitwcmludGVyLCB1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGItMnAtcHx0dmk5MjBjLTJwLXB8dHZpOTIwYi1wLTJwfHR2aTkyMGMtcC0ycHxUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb247IG5vIGF0dHJpYnV0ZXM7IHBhZ2UgcHJpbnQpLAotCXVzZT10dmk5MjBiK2ZuLCB1c2U9dHZpOTEyYisycCwgdXNlPXR2aTkxMmIrcHJpbnRlciwKLQl1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGItdmItcHx0dmk5MjBjLXZiLXB8dHZpOTIwYi1wLXZifHR2aTkyMGMtcC12YnxUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24gInZpc2libGUgYmVsbCI7IG5vIGF0dHJpYnV0ZXM7IHBhZ2UgcHJpbnQpLAotCXVzZT10dmk5MjBiK2ZuLCB1c2U9dHZpOTEyYit2YiwgdXNlPXR2aTkxMmIrcHJpbnRlciwKLQl1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGItMnB8dHZpOTIwYy0ycHxUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb247IGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiKzJwLCB1c2U9dHZpOTEyYitkaW0sCi0JdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MjBiLTJwLW1jfHR2aTkyMGMtMnAtbWN8dHZpOTIwYi1tYy0ycHx0dmk5MjBjLW1jLTJwfFRlbGVWaWRlbyBUVkktOTIwQiBvciBUVkktOTIwQyAoc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbjsgbWFnaWMgY29va2llcyksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiKzJwLCB1c2U9dHZpOTEyYittYywKLQl1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGItdmJ8dHZpOTIwYy12YnxUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKHNlY29uZCBwYWdlIG1lbW9yeSBvcHRpb24gInZpc2libGUgYmVsbCI7IGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiK3ZiLCB1c2U9dHZpOTEyYitkaW0sCi0JdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MjBiLXZiLW1jfHR2aTkyMGMtdmItbWN8dHZpOTIwYi1tYy12Ynx0dmk5MjBjLW1jLXZifFRlbGVWaWRlbyBUVkktOTIwQiBvciBUVkktOTIwQyAoc2Vjb25kIHBhZ2UgbWVtb3J5IG9wdGlvbiAidmlzaWJsZSBiZWxsIjsgbWFnaWMgY29va2llcyksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiK3ZiLCB1c2U9dHZpOTEyYittYywKLQl1c2U9dHZpOTEyYi11bmssCi0KLXR2aTkyMGJ8dHZpOTIwY3xUZWxlVmlkZW8gVFZJLTkyMEIgb3IgVFZJLTkyMEMgKGhhbGYtaW50ZW5zaXR5IGF0dHJpYnV0ZSksCi0JdXNlPXR2aTkyMGIrZm4sIHVzZT10dmk5MTJiK2RpbSwgdXNlPXR2aTkxMmItdW5rLAotCi10dmk5MjBiLW1jfHR2aTkyMGMtbWN8VGVsZVZpZGVvIFRWSS05MjBCIG9yIFRWSS05MjBDIChtYWdpYyBjb29raWVzKSwKLQl1c2U9dHZpOTIwYitmbiwgdXNlPXR2aTkxMmIrbWMsIHVzZT10dmk5MTJiLXVuaywKLQotIyBUZWxldmlkZW8gOTIxIGFuZCB2YXJpYW50cwotIyBGcm9tOiBUaW0gVGhlaXNlbiA8dGltQGNzLndpc2MuZWR1PiAyMiBTZXB0IDE5OTUKLSMgKHR2aTkyMTogcmVtb3ZlZCA6a289YnQ6IGJlZm9yZSB0cmFuc2xhdGlvbiwgSSBzZWUgbm8gYmFja3RhYiBjYXA7Ci0jIGFsc28gYWRkZWQgZW1wdHkgPGFjc2M+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5nIC0tIGVzcikKLXR2aTkyMXx0ZWxldmlkZW8gbW9kZWwgOTIxIHdpdGggc3lzbGluZSBzYW1lIGFzIHBhZ2UgJiByZWFsIHZpIGZ1bmN0aW9uLAotCU9UYnMsIE9UcHQsIGFtLCBocywgeGVubCwgeGhwLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQlhY3NjPSwgY2xlYXI9XlosIGNub3JtPVxFLjMsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5WLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDMvPiwgY3V1MT1eSywKLQljdnZpcz1cRS4yLCBkY2gxPVxFVywgZGwxPVxFUiQ8MSovPiwgZHNsPVxFZlxyXEVnLCBlZD1cRVksCi0JZWw9XEVULCBmc2w9XEVnLCBob21lPV5eLCBodD1eSSwgaWNoMT1cRVEsCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkY3J0LCBpbDE9XEVFLCBpbmQ9XkosIGludmlzQCwKLQlpczI9XEVsXEUiXEVGMVxFLjNcMDE3XEVBXEU8LCBrYnM9XkgsIGtjbHI9XlosIGtjdWIxPV5ILAotCWtjdWQxPV5WLCBrY3VmMT1eTCwga2N1dTE9XkssIGtkY2gxPVxFVywga2RsMT1cRVIkPDEqLz4sCi0Ja2VkPVxFWSwga2VsPVxFVCwga2ljaDE9XEVRLCBraWwxPVxFRSwgbmVsPV5NXkosIHJtYWNzPVxFJSUsCi0Jcm1pcj0sIHNtYWNzPVxFJCwgc21pcj0sIHRzbD1cRWZcRUcwLCB1c2U9YWRtK3NnciwKLSMgd2l0aG91dCB0aGUgYmVlcGVyCi0jICh0dmk5MkI6IHJlbW92ZWQgOmtvPWJ0OiBiZWZvcmUgdHJhbnNsYXRpb24sIEkgc2VlIG5vIGJhY2t0YWIgY2FwOwotIyBhbHNvIGFkZGVkIGVtcHR5IDxhY3NjPiB0byBzdXBwcmVzcyB0aWMgd2FybmluZyAtLSBlc3IpCi10dmk5MkJ8dGVsZXZpZGVvIG1vZGVsIDkyMSB3aXRoIHN5c2xpbmUgc2FtZSBhcyBwYWdlICYgcmVhbCB2aSBmdW5jdGlvbiAmIG5vIGJlZXBlciwKLQlhbSwgaHMsIHhlbmwsIHhocCwKLQljb2xzIzgwLCBsaW5lcyMyNCwgeG1jIzAsCi0JYWNzYz0sIGNsZWFyPV5aLCBjbm9ybT1cRS4zLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eViwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjJDwzLz4sIGN1dTE9XkssCi0JY3Z2aXM9XEUuMiwgZGNoMT1cRVcsIGRsMT1cRVIkPDEqLz4sIGRzbD1cRWZcclxFZywgZWQ9XEVZLAotCWVsPVxFVCwgZmxhc2g9XEViJDwyMDAvPlxFZCwgZnNsPVxFZywgaG9tZT1eXiwgaHQ9XkksCi0JaWNoMT1cRVEsIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3N0ZGNydCwgaWwxPVxFRSwgaW5kPV5KLAotCWludmlzQCwgaXMyPVxFbFxFIlxFRjFcRS4zXDAxN1xFQVxFPCwga2JzPV5ILCBrY2xyPV5aLAotCWtjdWIxPV5ILCBrY3VkMT1eViwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1cRVcsCi0Ja2RsMT1cRVIkPDEqLz4sIGtlZD1cRVksIGtlbD1cRVQsIGtpY2gxPVxFUSwga2lsMT1cRUUsCi0JbmVsPV5NXkosIHJtYWNzPVxFJSUsIHNtYWNzPVxFJCwgdHNsPVxFZlxFRzAsIHVzZT1hZG0rc2dyLAotIyAodHZpOTJEOiByZW1vdmVkIDprbz1idDogYmVmb3JlIHRyYW5zbGF0aW9uLCBJIHNlZSBubyBiYWNrdGFiIGNhcCAtLSBlc3IpCi10dmk5MkR8dHZpOTJCIHdpdGggRFRSIGluc3RlYWQgb2YgWE9OL1hPRkYgJiBiZXR0ZXIgcGFkZGluZywKLQlkbDE9XEVSJDwyKi8+LCBpbDE9XEVFJDwyKi8+LAotCWlzMj1cRWxcRSJcRUYxXEUuM1wwMTZcRUFcRTwsIGtkbDE9XEVSJDwyKi8+LAotCWtpbDE9XEVFJDwyKi8+LCB1c2U9dHZpOTJCLAotCi0jICh0dmk5MjQ6IFRoaXMgdXNlZCB0byBoYXZlIDxkc2w9XEVzMD4sIDxmc2w9XDAzMT4uICBJIHB1dCB0aGUgbmV3IHN0cmluZ3MKLSMgaW4gZnJvbSBhIEJTRCB0ZXJtY2FwIGZpbGUgYmVjYXVzZSBpdCBsb29rcyBsaWtlIHRoZXkgZG8gc29tZXRoaW5nIHRoZQotIyBvbGQgb25lcyBza2lwIC0tIGVzcikKLXR2aTkyNHx0ZWxldmlkZW8gdHZpOTI0LAotCWFtLCBidywgaHMsIGluLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLCB4bWMjMCwKLQliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFLjAsIGNsZWFyPVxFKjAsCi0JY25vcm09XEUuMywgY3I9Xk0sIGNzcj1cRV8lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3ViMT1eSCwgY3VkMT1eViwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBjdnZpcz1cRS4xLAotCWRjaDE9XEVXLCBkbDE9XEVSLCBkc2w9XEVzMFxFZlwwMzEsIGVkPVxFeSwgZWw9XEV0LAotCWZsYXNoPVxFYiQ8MjAwPlxFZCwgZnNsPVwwMzFcRXMxLCBob21lPV5eLCBodD1eSSwgaHRzPVxFMSwKLQlpY2gxPVxFUSwgaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkY3J0LCBpbDE9XEVFLCBpbmQ9XkosCi0JaW52aXNALCBpczE9XDAxN1xFJVxFJ1xFKFxFREZcRUNcRUcwXEVOMFxFczBcRXYwLAotCWticz1eSCwga2Nscj1cRSowLCBrY3ViMT1eSCwga2N1ZDE9XlYsIGtjdWYxPV5MLCBrY3V1MT1eSywKLQlrZGNoMT1cRVcsIGtkbDE9XEVSLCBrZWQ9XEV5LCBrZWw9XEV0LCBrZjA9XkFAXHIsIGtmMT1eQUFcciwKLQlrZjEwPV5BSlxyLCBrZjExPV5BS1xyLCBrZjEyPV5BTFxyLCBrZjEzPV5BTVxyLCBrZjE0PV5BTlxyLAotCWtmMTU9XkFPXHIsIGtmMj1eQUJcciwga2YzPV5BQ1xyLCBrZjQ9XkFEXHIsIGtmNT1eQUVcciwKLQlrZjY9XkFGXHIsIGtmNz1eQUdcciwga2Y4PV5BSFxyLCBrZjk9XkFJXHIsIGtob21lPV5eLAotCWtpY2gxPVxFUSwga2lsMT1cRUUsIGxmMD1GMSwgbGYxPUYyLCBsZjEwPUYxMSwgbGYyPUYzLCBsZjM9RjQsCi0JbGY0PUY1LCBsZjU9RjYsIGxmNj1GNywgbGY3PUY4LCBsZjg9RjksIGxmOT1GMTAsCi0JcGZrZXk9XEV8JXAxJXs0OX0lKyVjJXAyJXNcMDMxLCByaT1cRWosIHRiYz1cRTMsIHRzbD1cRWYsCi0JdXNlPWFkbStzZ3IsCi0KLSMgVFZJOTI1IERJUCBzd2l0Y2hlcy4gIEluIGVhY2ggb2YgdGhlc2UsIEQgPSBEb3duIGFuZCBVID0gVXAsCi0jCi0jIEhlcmUgYXJlIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGV4dGVybmFsIChiYXVkKSBzd2l0Y2hlcyAoUzEpOgotIwotIyAgICAgICAgICAgICBQb3NpdGlvbgkJQmF1ZAotIyA3CTgJOQkxMAkJW1ByaW50ZXJdCi0jIDEJMgkzCTQJCVtNYWluIFJTMjMyXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBECUQJRAlECTk2MDAKLSMgRAlECUQJVQkgIDUwCi0jIEQJRAlVCUQJICA3NQotIyBECUQJVQlVCSAxMTAKLSMgRAlVCUQJRAkgMTM1Ci0jIEQJVQlECVUJIDE1MAotIyBECVUJVQlECSAzMDAKLSMgRAlVCVUJVQkgNjAwCi0jIFUJRAlECUQJMTIwMAotIyBVCUQJRAlVCTE4MDAKLSMgVQlECVUJRAkyNDAwCi0jIFUJRAlVCVUJMzYwMAotIyBVCVUJRAlECTQ4MDAKLSMgVQlVCUQJVQk3MjAwCi0jIFUJVQlVCUQJOTYwMAotIyBVCVUJVQlVCTE5MjAwCi0jCi0jCi0jIFNldHRpbmdzIGZvciB3b3JkIGxlbmd0aCBhbmQgc3RvcC1iaXRzIChTMSkKLSMKLSMgIFBvc2l0aW9uCURlc2NyaXB0aW9uCi0jIDUJNgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVQktCTctYml0IHdvcmQKLSMgRAktCTgtYml0IHdvcmQKLSMgLQlVCTIgc3RvcCBiaXRzCi0jIC0JRAkxIHN0b3AgYml0Ci0jCi0jCi0jIFMyIChleHRlcm5hbCkgc2V0dGluZ3MKLSMKLSMgUG9zaXRpb24JVXAJRG4JRGVzY3JpcHRpb24KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMQkJWAkJTG9jYWwgZWRpdAotIyAJCQlYCUR1cGxleCBlZGl0ICh0cmFuc21pdCBlZGl0aW5nIGtleXMpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIJCVgJCTkxMi85MjAgZW11bGF0aW9uCi0jIAkJCVgJOTI1Ci0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDMJCQlYCi0jIDQJCQlYCU5vIHBhcml0eQotIyA1CQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAzCQkJWAotIyA0CQkJWAlPZGQgcGFyaXR5Ci0jIDUJCVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMwkJCVgKLSMgNAkJWAkJRXZlbiBwYXJpdHkKLSMgNQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAzCQlYCi0jIDQJCQlYCU1hcmsgcGFyaXR5Ci0jIDUJCVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMwkJWAotIyA0CQlYCQlTcGFjZSBwYXJpdHkKLSMgNQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA2CQlYCQlXaGl0ZSBvbiBibGFjayBkaXNwbGF5Ci0jIAkJCVgJQmxhY2sgb24gd2hpdGUgZGlzcGxheQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA3CQkJWAlIYWxmIER1cGxleAotIyA4CQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA3CQlYCQlGdWxsIER1cGxleAotIyA4CQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA3CQkJWAlCbG9jayBtb2RlCi0jIDgJCVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgOQkJCVgJNTAgSHoKLSMgCQlYCQk2MCBIegotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAxMAkJWAkJQ1IvTEYgKEF1dG8gTEYpCi0jIAkJCVgJQ1Igb25seQotIwotIyBTMyAoaW50ZXJuYWwgc3dpdGNoKSBzZXR0aW5nczoKLSMKLSMgUG9zaXRpb24JVXAJRG4JRGVzY3JpcHRpb24KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMQkJWAkJS2V5Y2xpY2sgb2ZmCi0jIAkJCVgJS2V5Y2xpY2sgb24KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMgkJCVgJRW5nbGlzaAotIyAzCQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyCQkJWAlHZXJtYW4KLSMgMwkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyCQlYCQlGcmVuY2gKLSMgMwkJCVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMgkJWAkJU3BhbmlzaAotIyAzCQlYCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDQJCQlYCUJsaW5raW5nIGJsb2NrIGN1cnNvcgotIyA1CQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA0CQkJWAlCbGlua2luZyB1bmRlcmxpbmUgY3Vyc29yCi0jIDUJCVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgNAkJWAkJU3RlYWR5IGJsb2NrIGN1cnNvcgotIyA1CQkJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA0CQlYCQlTdGVhZHkgdW5kZXJsaW5lIGN1cnNvcgotIyA1CQlYCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDYJCVgJCVNjcmVlbiBibGFua2luZyB0aW1lciAoT04pCi0jIAkJCVgJU2NyZWVuIGJsYW5raW5nIHRpbWVyIChPRkYpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDcJCVgJCVBhZ2UgYXR0cmlidXRlcwotIyAJCQlYCUxpbmUgYXR0cmlidXRlcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA4CQlYCQlEQ0QgZGlzY29ubmVjdGVkCi0jIAkJCVgJRENEIGNvbm5lY3RlZAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyA5CQlYCQlEU1IgZGlzY29ubmVjdGVkCi0jIAkJCVgJRFNSIGNvbm5lY3RlZAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAxMAkJWAkJRFRSIERpc2Nvbm5lY3RlZAotIyAJCQlYCURUUiBjb25uZWN0ZWQKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgKHR2aTkyNTogQlNEIGhhcyA8Y2xlYXI9XEUqPi4gIEkgZ290IDxpczI+IGFuZCA8cmk+IGZyb20gdGhlcmUgLS0gZXNyKQotdHZpOTI1fHRlbGV2aWRlbyA5MjUsCi0JT1RicywgYW0sIGJ3LCBocywgdWwsCi0JY29scyM4MCwgbGluZXMjMjQsIHhtYyMxLAotCWJlbD1eRywgY2J0PVxFSSwgY2xlYXI9XlosIGNub3JtPVxFLjQsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5WLAotCWN1ZjE9XkwsIGN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssCi0JY3Z2aXM9XEUuMiwgZGNoMT1cRVcsIGRsMT1cRVIsIGRzbD1cRWgsIGVkPVxFWSwgZWw9XEVULAotCWZsYXNoPVxFYiQ8MjAwPlxFZCwgZnNsPV5NXEVnLCBob21lPV5eLCBodD1eSSwgaHRzPVxFMSwKLQlpY2gxPVxFUSwgaWwxPVxFRSwgaW5kPV5KLCBpbnZpc0AsIGlzMj1cRWxcRSIsIGticz1eSCwga2Nscj1eWiwKLQlrY3ViMT1eSCwga2N1ZDE9XlYsIGtjdWYxPV5MLCBrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwKLQlrZWQ9XEVZLCBrZWw9XEVULCBrZjA9XkFJXHIsIGtmMT1eQUBcciwga2YyPV5BQVxyLCBrZjM9XkFCXHIsCi0Ja2Y0PV5BQ1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsCi0Ja2Y5PV5BSFxyLCBraG9tZT1eXiwga2ljaDE9XEVRLCBraWwxPVxFRSwgcmk9XEVqLCB0YmM9XEUzLAotCXRzbD1cRWhcRWYsIHVzZT1hZG0rc2dyLAotIyBUZWxlVmlkZW8gOTI1IGZyb20gTWl0Y2ggQnJhZGxleSA8c3VuIXdtYj4gdmlhIEJSTAotIyB0byBhdm9pZCAibWFnaWMgY29va2llIiBzdGFuZG91dCBnbGl0Y2g6Ci10dmk5MjUtaGl8VGVsZVZpZGVvIE1vZGVsIDkyNSB3aXRoIGhhbGYgaW50ZW5zaXR5IHN0YW5kb3V0IG1vZGUsCi0JeG1jQCwKLQlrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgcm1zbz1cRSgsIHNtc289XEUpLCB1c2U9dHZpOTI1LAotCi0jIEZyb206IFRvZGQgTGl0d2luIDxsaXR3aW5AbGl0d2luLmpwbC5uYXNhLmdvdj4gMjggTWF5IDE5OTMKLSMgT3JpZ2luYWxseSBUaW0gQ3VycnksIFVuaXYuIG9mIENlbnRyYWwgRmxhLiwgPGR1a2UhdWNmLWNzIXRpbT4gNS8yMS84MgotIyBmb3IgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMsCi0jIFRoZSBmb2xsb3dpbmcgdHZpIGRlc2NyaXB0aW9ucyBmcm9tIEI6cGpwaGFyIGFuZCB2aXJ1cyFtaWtlCi0jIGlzIGZvciBhbGwgOTUwcy4gIEl0IHNldHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgotIyBmdWxsIGR1cGxleCAoXEVERikJCXdyaXRlIHByb3RlY3Qgb2ZmIChcRSgpCi0jIGNvbnZlcnNhdGlvbiBtb2RlIChcRUMpCWdyYXBoaWNzIG1vZGUgb2ZmIChcRSUpCi0jIHdoaXRlIG9uIGJsYWNrIChcRWQpCQlhdXRvIHBhZ2UgZmxpcCBvZmYgKFxFdykKLSMgdHVybiBvZmYgc3RhdHVzIGxpbmUgKFxFZykJY2xlYXIgc3RhdHVzIGxpbmUgKFxFZlxyKQotIyBub3JtYWwgdmlkZW8gKFxFMCkJCW1vbml0b3IgbW9kZSBvZmYgKFxFWCBvciBcRXUpCi0jIGVkaXQgbW9kZSAoXEVyKQkJbG9hZCBibGFuayBjaGFyIHRvIHNwYWNlIChcRWVcMDQwKQotIyBsaW5lIGVkaXQgbW9kZSAoXEVPKQkJZW5hYmxlIGJ1ZmZlciBjb250cm9sICheTykKLSMgcHJvdGVjdCBtb2RlIG9mZiAoXEVcMDQ3KQlkdXBsZXggZWRpdCBrZXlzIChcRWwpCi0jIHByb2dyYW0gdW5zaGlmdGVkIHNlbmQga2V5IHRvIHNlbmQgbGluZSBhbGwgKFxFMDE2KQotIyBwcm9ncmFtIHNoaWZ0ZWQgc2VuZCBrZXkgdG8gc2VuZCBsaW5lIHVucHJvdGVjdGVkIChcRTAwNCkKLSMgc2V0IHRoZSBmb2xsb3dpbmcgdG8gbnVsbHM6Ci0jCWZpZWxkIGRlbGltaXRlciAoXEV4MFwyMDBcMjAwKQotIwlsaW5lIGRlbGltaXRlciAoXEV4MVwyMDBcMjAwKQotIwlzdGFydC1wcm90ZWN0ZWQgZmllbGQgZGVsaW1pdGVyIChcRXgyXDIwMFwyMDApCi0jCWVuZC1wcm90ZWN0ZWQgZmllbGQgZGVsaW1pdGVyIChcRXgzXDIwMFwyMDApCi0jIHNldCBlbmQgb2YgdGV4dCBkZWxpbWl0ZXIgdG8gY2FycmlhZ2UgcmV0dXJuL251bGwgKFxFeDRcclwyMDApCi0jCi0jICAgICAgICAgICAgICAgICAgICAgVFZJIDk1MCBTd2l0Y2ggU2V0dGluZyBSZWZlcmVuY2UgQ2hhcnRzCi0jCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFIDE6Ci0jCi0jICAgICAgUzEgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgICAgIDggICAgIDkgICAgMTAKLSMgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotIyAgICAgICAgICB8IENvbXB1dGVyIEJhdWQgUmF0ZSAgICB8RGF0YSB8U3RvcCB8IFByaW50ZXIgQmF1ZCBSYXRlICAgICB8Ci0jICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxCaXRzIHxCaXRzIHwgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgICArLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotIyAgIHwgIFVwICB8ICAgICAgICBTZWUgICAgICAgICAgICB8ICA3ICB8ICAyICB8ICAgICAgICBTZWUgICAgICAgICAgICB8Ci0jICAgKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSMgICB8IERvd24gfCAgICAgIFRBQkxFIDIgICAgICAgICAgfCAgOCAgfCAgMSAgfCAgICAgIFRBQkxFIDIgICAgICAgICAgfAotIyAgICstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0jCi0jCi0jICAgICAgUzIgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcgICAgIDggICAgIDkgICAgMTAKLSMgICAgICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKwotIyAgICAgICAgICB8RWRpdCB8Q3Vyc3J8ICAgIFBhcml0eSAgICAgICB8VmlkZW98VHJhbnNtaXNzJ258IEh6ICB8Q2xpY2t8Ci0jICAgKy0tLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLSstLS0tLSstLS0tLSsKLSMgICB8ICBVcCAgfCBEcGx4fEJsaW5rfCAgICAgIFNlZSAgICAgICAgfEdvbkJrfCAgIFNlZSAgICAgfCA2MCAgfCBPZmYgfAotIyAgICstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rCi0jICAgfCBEb3duIHxMb2NhbHxTdCdkeXwgICAgVEFCTEUgMyAgICAgIHxCa29uR3wgIENIQVJUICAgIHwgNTAgIHwgT24gIHwKLSMgICArLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKwotIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFIDI6Ci0jCi0jICAgICAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0tLSsKLSMgICAgICAgICAgICAgfCBEaXNwbGF5ICAgfCAgMSAgfCAgMiAgfCAgMyAgfCAgNCAgfCAgIEJhdWQgICAgfAotIyAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rICAgICAgICAgICB8Ci0jICAgICAgICAgICAgIHwgUHJpbnRlciAgIHwgIDcgIHwgIDggIHwgIDkgIHwgMTAgIHwgICBSYXRlICAgIHwKLSMgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tKwotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBEICB8ICBEICB8ICBEICB8ICBEICB8ICAgOTYwMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFUgIHwgIEQgIHwgIEQgIHwgIEQgIHwgICAgIDUwICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRCAgfCAgVSAgfCAgRCAgfCAgRCAgfCAgICAgNzUgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBVICB8ICBVICB8ICBEICB8ICBEICB8ICAgIDExMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgIEQgIHwgIFUgIHwgIEQgIHwgICAgMTM1ICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgVSAgfCAgRCAgfCAgVSAgfCAgRCAgfCAgICAxNTAgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBEICB8ICBVICB8ICBVICB8ICBEICB8ICAgIDMwMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFUgIHwgIFUgIHwgIFUgIHwgIEQgIHwgICAgNjAwICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRCAgfCAgRCAgfCAgRCAgfCAgVSAgfCAgIDEyMDAgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBVICB8ICBEICB8ICBEICB8ICBVICB8ICAgMTgwMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgIFUgIHwgIEQgIHwgIFUgIHwgICAyNDAwICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgVSAgfCAgVSAgfCAgRCAgfCAgVSAgfCAgIDM2MDAgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBEICB8ICBEICB8ICBVICB8ICBVICB8ICAgNDgwMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFUgIHwgIEQgIHwgIFUgIHwgIFUgIHwgICA3MjAwICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRCAgfCAgVSAgfCAgVSAgfCAgVSAgfCAgIDk2MDAgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBVICB8ICBVICB8ICBVICB8ICBVICB8ICAxOTIwMCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0tLSsKLSMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRSAzOgotIyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0rCi0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgIHwgIDQgIHwgIDUgIHwgICBQYXJpdHkgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tKwotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBYICB8ICBYICB8ICBEICB8ICAgIE5vbmUgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgIEQgIHwgIFUgIHwgICAgIE9kZCAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRCAgfCAgVSAgfCAgVSAgfCAgICBFdmVuICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBVICB8ICBEICB8ICBVICB8ICAgIE1hcmsgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFUgIHwgIFUgIHwgIFUgIHwgICBTcGFjZSAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tKwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFggPSBkb24ndCBjYXJlCi0jCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQVJUOgotIyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCi0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgIHwgIDggIHwgQ29tbXVuaWNhdGlvbiAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBEICB8ICBEICB8ICBIYWxmIER1cGxleCAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgIFUgIHwgIEZ1bGwgRHVwbGV4ICAgIHwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgVSAgfCAgRCAgfCAgICAgQmxvY2sgICAgICAgfAotIyAgICAgICAgICAgICAgICAgICAgICAgICB8ICBVICB8ICBVICB8ICAgICBMb2NhbCAgICAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKLSMKLSMgKHR2aTk1MDogZWFybHkgdmVyc2lvbnMgaGFkIG9ic29sZXRlICI6bWE9XlZqXktrXkhoXkxsXl5IOiIuCi0jIEkgYWxzbyBpbnNlcnRlZCA8aWNoMT4gYW5kIDxraWNoMT47IHRoZSA6a286IHN0cmluZyBpbmRpY2F0ZWQgdGhhdCA8aWNoPgotIyBzaG91bGQgYmUgcHJlc2VudCBhbmQgYWxsIHR2aSBuYXRpdmUgbW9kZXMgdXNlIHRoZSBzYW1lIHN0cmluZyBmb3IgdGhpcy4KLSMgRmluYWxseSwgbm90ZSB0aGF0IEJTRCBoYXMgY3VkMT1eVi4gLS0gZXNyKQotdHZpOTUwfHRlbGV2aWRlbyA5NTAsCi0JT1RicywgYW0sIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzEsCi0JYWNzYz1iXDAxMWNcMDE0ZFxyZVxuaVwwMTMsIGJlbD1eRywgY2J0PVxFSSwgY2xlYXI9XEUqLAotCWNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGRzbD1cRWdcRWZcciwgZWQ9XEV5LCBlbD1cRXQsIGZsYXNoPVxFYiQ8MjAwLz5cRWQsCi0JZnNsPV5NLCBob21lPV5eLCBodD1eSSwgaHRzPVxFMSwgaWNoMT1cRVEsIGlsMT1cRUUsIGluZD1eSiwKLQlpbnZpc0AsCi0JaXMyPVxFREZcRUNcRWRcRUcwXEVnXEVyXEVPXEUnXEUoXEUlXEV3XEVYXEVlIFwwMTdcMDExXEVsXEUwMTZcRTAwNFxFeDBcMFwwXEV4MVwwXDBcRXgyXDBcMFwwMTFcRXgzXDBcMFxFeDRcclwwXEVmXHIsCi0Ja2JzPV5ILCBrY2J0PVxFSSwga2Nscj1cRSosIGtjdWIxPV5ILCBrY3VkMT1eViwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtkY2gxPVxFVywga2RsMT1cRVIsIGtlZD1cRXksIGtlbD1cRXQsIGtmMD1eQTBcciwKLQlrZjE9XkFAXHIsIGtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwKLQlrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtob21lPV5eLAotCWtpY2gxPVxFUSwga2lsMT1cRUUsIG1jND1cRWEsIG1jNT1cRWAsIHJpPVxFaiwgcm1hY3M9XlgsCi0Jcm1pcj1cRXIsIHNtYWNzPV5VLCBzbWlyPVxFcSwgdGJjPVxFMywgdHNsPVxFZ1xFZiwKLQl1c2U9YWRtK3NnciwKLSMKLSMgaXMgZm9yIDk1MCB3aXRoIHR3byBwYWdlcyBhZGRzIHRoZSBmb2xsb3dpbmc6Ci0jCXNldCA0OCBsaW5lIHBhZ2UgKFxFXFwyKQotIwlwbGFjZSBjdXJzb3IgYXQgcGFnZSAwLCBsaW5lIDI0LCBjb2x1bW4gMSAoXEUtMDcgKQotIwlzZXQgbG9jYWwgKG5vIHNlbmQpIGVkaXQga2V5cyAoXEVrKQotIwotIyB0d28gcGFnZSA5NTAgYWRkcyB0aGUgZm9sbG93aW5nOgotIwl3aGVuIGVudGVyaW5nIGV4LCBzZXQgMjQgbGluZSBwYWdlIChcRVxcMSkKLSMJd2hlbiBleGl0aW5nIGV4LCByZXNldCA0OCBsaW5lIHBhZ2UgKFxFXFwyKQotIwkJCSBwbGFjZSBjdXJzb3IgYXQgMCwyNCwxIChcRS0wNyApCi0jCXNldCBkdXBsZXggKHNlbmQpIGVkaXQga2V5cyAoXEVsKSB3aGVuIGVudGVyaW5nIHZpCi0jCXNldCBsb2NhbCAobm8gc2VuZCkgZWRpdCBrZXlzIChcRWspIHdoZW4gZXhpdGluZyB2aQotIwotdHZpOTUwLTJwfHRlbGV2aWRlbzk1MCB3LzIgcGFnZXMsCi0JaXMyPVxFREZcRUNcRWRcRUcwXEVnXEVyXEVPXEUnXEUoXEUlXEV3XEVYXEVlIFwwMTdcMDExXEVrXEUwMTZcRTAwNFxFeDBcMFwwXEV4MVwwXDBcRXgyXDBcMFwwMTFcRXgzXDBcMFxFeDRcclwwXEVcXDJcRS0wNyBcMDExLAotCXJtY3VwPVxFXFwyXEUtMDdccywgcm1reD1cRWssIHNtY3VwPVxFXFwxXEUtMDdccywKLQlzbWt4PVxFbCwgdXNlPXR2aTk1MCwKLSMKLSMgaXMgZm9yIDk1MCB3aXRoIGZvdXIgcGFnZXMgYWRkcyB0aGUgZm9sbG93aW5nOgotIwlzZXQgOTYgbGluZSBwYWdlIChcRVxcMykKLSMJcGxhY2UgY3Vyc29yIGF0IHBhZ2UgMCwgbGluZSAyNCwgY29sdW1uIDEgKFxFLTA3ICkKLSMKLSMgZm91ciBwYWdlIDk1MCBhZGRzIHRoZSBmb2xsb3dpbmc6Ci0jCXdoZW4gZW50ZXJpbmcgZXgsIHNldCAyNCBsaW5lIHBhZ2UgKFxFXFwxKQotIwl3aGVuIGV4aXRpbmcgZXgsIHJlc2V0IDk2IGxpbmUgcGFnZSAoXEVcXDMpCi0jCQkJIHBsYWNlIGN1cnNvciBhdCAwLDI0LDEgKFxFLTA3ICkKLSMKLXR2aTk1MC00cHx0ZWxldmlkZW85NTAgdy80IHBhZ2VzLAotCWlzMj1cRURGXEVDXEVkXEVHMFxFZ1xFclxFT1xFJ1xFKFxFJVxFd1xFWFxFZSBcMDE3XDAxMVxFa1xFMDE2XEUwMDRcRXgwXDBcMFxFeDFcMFwwXEV4MlwwXDBcMDExXEV4M1wwXDBcRXg0XHJcMFxFXFwzXEUtMDcgXDAxMSwKLQlybWN1cD1cRVxcM1xFLTA3XHMsIHJta3g9XEVrLCBzbWN1cD1cRVxcMVxFLTA3XHMsCi0Jc21reD1cRWwsIHVzZT10dmk5NTAsCi0jCi0jIDxpczI+IGZvciByZXZlcnNlIHZpZGVvIDk1MCBjaGFuZ2VzIHRoZSBmb2xsb3dpbmc6Ci0jCXNldCByZXZlcnNlIHZpZGVvIChcRWQpCi0jCi0jIHNldCB2YiBhY2NvcmRpbmdseSAoXEVkIC4uLmRlbGF5Li4uIFxFYikKLSMKLXR2aTk1MC1ydnx0ZWxldmlkZW85NTAgcmV2IHZpZGVvLAotCWZsYXNoPVxFZCQ8MjAwLz5cRWIsCi0JaXMyPVxFREZcRUNcRWJcRUcwXEVnXEVyXEVPXEUnXEUoXEUlXEV3XEVYXEVlIFwwMTdcMDExXEVsXEUwMTZcRTAwNFxFeDBcMFwwXEV4MVwwXDBcRXgyXDBcMFwwMTFcRXgzXDBcMFxFeDRcclwwLAotCXVzZT10dmk5NTAsCi0KLSMgdHZpOTUwLXJ2LTJwIHVzZXMgdGhlIGFwcHJvcHJpYXRlIGVudHJpZXMgZnJvbSA5NTAtMnAgYW5kIDk1MC1ydgotdHZpOTUwLXJ2LTJwfHRlbGV2aWRlbzk1MCByZXYgdmlkZW8gdy8yIHBhZ2VzLAotCWZsYXNoPVxFZCQ8MjAwLz5cRWIsCi0JaXMyPVxFREZcRUNcRWJcRUcwXEVnXEVyXEVPXEUnXEUoXEUlXEV3XEVYXEVlIFwwMTdcMDExXEVrXEUwMTZcRTAwNFxFeDBcMFwwXEV4MVwwXDBcRXgyXDBcMFwwMTFcRXgzXDBcMFxFeDRcclwwXEVcXDJcRS0wN1xzLAotCXJtY3VwPVxFXFwyXEUtMDdccywgcm1reD1cRWssIHNtY3VwPVxFXFwxXEUtMDdccywKLQlzbWt4PVxFbCwgdXNlPXR2aTk1MCwKLQotIyB0dmk5NTAtcnYgdXNlcyB0aGUgYXBwcm9wcmlhdGUgZW50cmllcyBmcm9tIDk1MC00cCBhbmQgOTUwLXJ2Ci10dmk5NTAtcnYtNHB8dGVsZXZpZGVvOTUwIHJldiB2aWRlbyB3LzQgcGFnZXMsCi0JZmxhc2g9XEVkJDwyMDAvPlxFYiwKLQlpczI9XEVERlxFQ1xFYlxFRzBcRXJcRU9cRSdcRShcRSVcRXdcRVhcRWUgXDAxN1wwMTFcRWtcRTAxNlxFMDA0XEV4MFwwXDBcRXgxXDBcMFxFeDJcMFwwXDAxMVxFeDNcMFwwXEV4NFxyXDBcRVxcM1xFLTA3XHMsCi0Jcm1jdXA9XEVcXDNcRS0wN1xzLCBybWt4PVxFaywgc21jdXA9XEVcXDFcRS0wN1xzLAotCXNta3g9XEVsLCB1c2U9dHZpOTUwLAotIyBGcm9tOiBBbmRyZWFzIFN0b2xja2UgPHN0b2xja2VAaWNzaS5iZXJrZWxleS5lZHU+Ci0jICh0dmk5NTU6IHJlbW92ZWQgb2Jzb2xldGUgIjptYTo9XlZqXktrXkhoXkxsXl5IIjsKLSMgcmVtb3ZlZCBpbmNvcnJlY3QgKGFuZCBvdmVycmlkZGVuKSAiOmRvPV5KOiI7IGZpeGVkIGJyb2tlbiBjb250aW51YXRpb25zIGluCi0jIHRoZSA6cnM6IHN0cmluZywgaW5zZXJ0ZWQgdGhlIDxpY2g+IGltcGxpZWQgYnkgdGhlIHRlcm1jYXAgOmtvOiBzdHJpbmcuICBOb3RlCi0jIHRoZSA6a286IHN0cmluZyBoYWQgOmNsOiBpbiBpdCwgd2hpY2ggbWVhbnMgdGhhdCBvbmUgb2YgdGhlIG9yaWdpbmFsCi0jIDxjbGVhcj1cRSo+LCA8a2Nscj1cRVk+IGhhZCB0byBiZSB3cm9uZzsgc2V0IDxrY2xyPVxFKj4gYmVjYXVzZSB0aGF0J3Mgd2hhdAotIyB0aGUgOTUwIGhhcy4gICBGaW5hbGx5LCBjb3JyZWN0ZWQgdGhlIDxrZWw+IHN0cmluZyB0byBtYXRjaCB0aGUgOTUwIGFuZCB3aGF0Ci0jIGtvIGltcGxpZXMgLS0gZXNyKQotIyBJZiB0aGUgQlNEIHRlcm1jYXAgZmlsZSB3YXMgcmlnaHQsIDxjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjPiB3b3VsZAotIyBhbHNvIHdvcmsuCi10dmk5NTV8dGVsZXZpZGVvIDk1NSwKLQlPVGJzLCBtYzVpLCBtc2dyQCwKLQlpdCM4LCB4bWNALAotCWFjc2M9MF9gUmpIa0dsRm1FbklvUHFLc1F0TXVMdk93TnhKLCBibGluaz1cRUcyLAotCWNpdmlzPVxFLjAsIGNub3JtPVxFLjIsIGN1ZDE9XlYsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdnZpcz1cRS4xLCBkaW09XEVbPTVoLCBpbmRALCBpbnZpcz1cRUcxLAotCWlzMj1cRVs9M2xcRUYxXEVkXEVHMFxFWz01bFxFJVxFbCwga2N0YWI9XEUyLCBraHRzPVxFMSwKLQlrbnA9XEVLLCBrcHA9XEVKLCBrcm1pcj1cRVEsIGt0YmM9XEUzLCBtYzA9XEVQLCBybWFjcz1cRSUlLAotCXJtYW09XEVbPTdsLCBybXhvbj1eTiwKLQlyczE9XEVERlxFQ1xFZ1xFclxFT1xFJ1xFKFxFd1xFWFxFZSBcMDE3XEUwUFxFNlwwXEUwcFxFNFwwXEVmXHIsCi0Jc2dyMD1cRUcwXEVbPTVsLCBzbWFjcz1cRSQsIHNtYW09XEVbPTdoLCBzbXhvbj1eTywKLQl1c2U9dHZpOTUwLAotdHZpOTU1LXd8OTU1LXd8dGVsZXZpZGVvOTU1IHcvMTMyIGNvbHMsCi0JY29scyMxMzIsCi0JaXMyPVxFWz0zaFxFRjFcRWRcRUcwXEVbPTVsXEUlXEVsLCB1c2U9dHZpOTU1LAotIyB1c2UgaGFsZi1pbnRlbnNpdHkgYXMgbm9ybWFsIG1vZGUsIGZ1bGwgaW50ZW5zaXR5IGFzIDxib2xkPgotdHZpOTU1LWhifDk1NS1oYnx0ZWxldmlkZW85NTUgaGFsZi1icmlnaHQsCi0JYm9sZD1cRVs9NWwsIGRpbUAsIGlzMj1cRVs9M2xcRUYxXEVkXEVHMFxFWz01aFxFJVxFbCwKLQlzZ3IwPVxFRzBcRVs9NWgsIHVzZT10dmk5NTUsCi0jIEZyb206IEh1bWJlcnRvIEFwcGxldG9uIDxiZXRvQGNzLnV0ZXhhcy5lZHU+LCA4ODA1MjEgVVQgQXVzdGluCi0jICh0dmk5NzA6IHJlbW92ZWQgIjpzZyMwOiI7IHJlbW92ZWQgPHJtc28+PVxFW20sIDxybXVsPj1cRVttOwotIyBhZGRlZCA8YW0+Lzxjc3I+Lzxob21lPi88aHBhPi88dnBhPi88c21jdXA+LzxybWN1cD4gZnJvbSBCUkwuCi0jIEFjY29yZGluZyB0byBCUkwgd2UgY291bGQgaGF2ZSA8cm1reD49XEU+LCA8c21reD49XEU9IGJ1dCBJJ20gbm90IHN1cmUgd2hhdAotIyBpdCBkb2VzIHRvIHRoZSBmdW5jdGlvbiBrZXlzLiAgSSBkZWR1Y2VkIDxybWFtPi88c21hbT4uCi0jIGFsc28gYWRkZWQgZW1wdHkgPGFjc2M+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5nLCAgLS0gZXNyKQotdHZpOTcwfHRlbGV2aWRlbyA5NzAsCi0JT1RicywgT1RwdCwgYW0sIGRhLCBkYiwgbWlyLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9LCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFWzJKLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViMT1eSCwgY3VkMT1cRUQsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRmLAotCWN1dTE9XEVNLCBjdnZpcz1cRVsxUSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwgZHNsPVxFZ1xFZlxyLAotCWVkPVxFW0osIGVsPVxFW0ssIGZsYXNoPVxFWzVtJDwyMDAvPlxFW20sIGhvbWU9XEVbSCwKLQlocGE9XEVbJWklcDElZEcsIGh0PV5JLCBpbDE9XEVbTCwKLQlpczI9XEU8XEVbPzIxbFxFWzE5aFxFWzFRXEVbMTBsXEVbN2xcRVtIXEVbMkosCi0Ja2JzPV5ILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMT1cRT9hLCBrZjI9XEU/Yiwga2YzPVxFP2MsIGtmND1cRT9kLCBrZjU9XEU/ZSwga2Y2PVxFP2YsCi0Ja2Y3PVxFP2csIGtmOD1cRT9oLCBrZjk9XEU/aSwga2hvbWU9XEVbSCwgcmk9XEVNLCBybWFjcz1cRShCLAotCXJtYW09XEVbPzdoLCBybWN1cD0sIHJtaXI9XEVbNGwsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21hY3M9XEUoQiwgc21hbT1cRVs/N2wsCi0Jc21jdXA9XEVbPzIwbFxFWz83aFxFWzFRLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHZwYT1cRVslaSVwMSVkZCwKLXR2aTk3MC12Ynx0ZWxldmlkZW8gOTcwIHdpdGggdmlzdWFsIGJlbGwsCi0JZmxhc2g9XEVbPzVoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcRVs/NWwsCi0JdXNlPXR2aTk3MCwKLXR2aTk3MC0ycHx0ZWxldmlkZW8gOTcwIHdpdGggdXNpbmcgMiBwYWdlcyBvZiBtZW1vcnksCi0Jcm1jdXA9XEVbSFxFW0pcRVtWLCBzbWN1cD1cRVtVXEVbPzIwbFxFWz83aFxFWzFRLAotCXVzZT10dmk5NzAsCi0jIFdvcmtzIHdpdGggdmkgYW5kIHJvZ3VlLiAgTk9URTogRXNjIHYgc2V0cyBhdXRvd3JhcCBvbiwgRXNjIHUgc2V0cyA4MCBjaGFycwotIyBwZXIgbGluZSAocmF0aGVyIHRoYW4gNDApLCBFc2MgSyBjaG9vc2VzIHRoZSBub3JtYWwgY2hhcmFjdGVyIHNldC4gIE5vdCBzdXJlCi0jIHBhZGRpbmcgaXMgbmVlZGVkLCBidXQgYWRhcHRlZCBmcm9tIHRoZSB0dmk5MjBjIHRlcm1jYXAuICBUaGUgPHNtc28+IGFuZAotIyA8c211bD4gc3RyaW5ncyBhcmUga2x1dHp5LCBidXQgYXQgbGVhc3QgdXNlIG5vIHNjcmVlbiBzcGFjZS4KLSMgKHR2aXB0OiByZW1vdmVkIG9ic29sZXRlICI6bWE9XktrXkxsXlJeTDoiLiAgSSB3aXNoIHdlIGtuZXcgPHJtYW0+LAotIyBpdHMgYWJzZW5jZSBtZWFucyA8c21hbT49XEV2IGlzbid0IHNhZmUgdG8gdXNlLiAtLSBlc3IpCi0jIEZyb206IEdlbmUgUm9jaGxpbiA8YXJtc2lzQGFtYmVyLmJlcmtlbGV5LmVkdT4gOS8xOS84NC4KLSMgVGhlIDxlZD4vPGtmMD4vPGtmMT4vPGtob21lPi88bWM0PiwgYW5kIDxtYzU+IGNhcHMgYXJlIGZyb20gQlJMLCB3aGljaCBzYXlzOgotIyBGMSBhbmQgRjIgc2hvdWxkIGJlIHByb2dyYW1tZWQgYXMgXkEgYW5kIF5COyByZXF1aXJlZCBmb3IgVU5JRlkuCi10dmlwdHx0ZWxldmlkZW8gcGVyc29uYWwgdGVybWluYWwsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JY2J0PVxFSSwgY2xlYXI9XlosIGN1YjE9XkgsIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGwxPVxFUiQ8NSo+LAotCWVkPVxFWSwgZWw9XEVULCBob21lPV5eLCBpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGRjcnQsCi0JaWwxPVxFRSQ8NSo+LCBpczI9XEV2XEV1XEVLLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIGtmMD1eQSwga2YxPV5CLCBraG9tZT1eXiwgbWM0PV5ULCBtYzU9XlIsCi0Jcm1zbz1cRUYsIHJtdWw9XEVGLCBzbXNvPVxFRzFAQVxFSCwgc211bD1cRUcxQkBcRUgsCi0jIEZyb206IE5hdGhhbiBQZXRlcnNvbiA8bmF0aGFuQHNjby5jb20+LCAwMyBTZXAgMTk5NgotdHZpOTA2NXx0ZWxldmlkZW8gOTA2NSwKLQlhbSwgYncsIGNodHMsIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaCMxLCBsaW5lcyMyNSwgbG0jMCwgbHcjOSwgbWEjNCwgbmxhYiM4LCB2dCMwLAotCXdudW0jMCwgd3NsIzMwLAotCWFjc2M9J3IwX2poa2dsZm1lbmlvcHFrc3F0bXVsdm93bnhqLCBiZWw9XkcsCi0JYmxpbms9XEVHMiwgYm9sZD1cRUdcLCwgY2J0PVxFSSwgY2l2aXM9XEUuMCwgY2xlYXI9XlosCi0JY25vcm09XEUuMywgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwKLQljdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5WLCBjdWY9XEVbJXAxJWRDLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dT1cRVslcDElZEEsCi0JY3V1MT1eSywgY3Z2aXM9XEUuMiwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVcsIGRpbT1cRUdwLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFUiwgZHNsPVxFXzMwXHIsIGVjaD1cRVslcDElZEAsIGVkPVxFWSwKLQllbD1cRVQsIGZsYXNoPVxFYiQ8MTU+XEVkLCBmc2w9Xk0sIGhvbWU9Xl4sIGh0PV5JLCBodHM9XEUxLAotCWljaD1cRVslcDElZEAsIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3N0ZGNydCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRUUsIGluZD1eSiwgaW5kbj1cRVslcDElZFMsIGludmlzPVxFRzEsCi0JaXA9JDwzPiwKLQlpczE9XEUiXEUlXEUnXEUoXEVHQFxFT1xFWFxFWz01bFxFWz02bFxFWz03aFxFZFxFciwKLQlpczI9XEVGMlxFRzBcRVxcTCwgaXMzPVxFPFxFWz00bFxFWz04aCwga0hPTT1cRVxzXHNccywKLQlrYnM9XkgsIGtjYnQ9XEVJLCBrY3ViMT1eSCwga2N1ZDE9XlYsIGtjdWYxPV5MLCBrY3V1MT1eSywKLQlrZGNoMT1cRVcsIGtmMT1eQUBcciwga2YxMD1eQUlcciwga2YxMT1eQUpcciwga2YxMj1eQUtcciwKLQlrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwKLQlrZjc9XkFGXHIsIGtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwgbGw9XEVbMjU7MUgsCi0JbWMwPVxFWzA7MGksIG1jND1cRWEsIG1jNT1cRWAsIG5lbD1eTV5KLAotCXBma2V5PVxFfCVwMSV7NDh9JSslYzMlcDIlc1wwMzEsCi0JcGZsb2M9XEV8JXAxJXs0OH0lKyVjMiVwMiVzXDAzMSwKLQlwZng9XEV8JXAxJXs0OH0lKyVjMSVwMiVzXDAzMSwKLQlwbG49XEVfJXAxJXs2M30lKyVjJXAyJXNcciwgcHJvdD1cRSYsCi0JcmVwPVxFWyVwMiVkYiVwMSVjLCByZXY9XEVHNCwKLQlyZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGRjcnQsIHJpPVxFaiwgcmluPVxFWyVwMSVkVCwKLQlybWFjcz1cRSUlLCBybWFtPVxFWz03bCwgcm1jdXA9XEUuM1xFclxFWzE7MjVyXEVbMjU7MEgsCi0Jcm1kYz1cMCwgcm1pcj1cRXIsIHJtbG49XEVbNDsxdiwgcm1zbz1cRUcwLCBybXVsPVxFRzAsCi0Jcm14b249Xk4sIHJzMT1cRUNcRURGXEVbMDswdlxFWzg7MXZcRVs9NjVsLAotCXJzMj1cRS5iXEVbMTA7MjB2XEVbMTQ7MXZcRVszOzB2XEVbNzswdlxFWz0xMS5oXEVbPTEyLmhcRVs9MTMuaFxFWz0xNC5oXEVbPTE1bFxFWz0yMGhcRVs9NjBsXEVbPTYxaFxFWz05bFxFWz0xMGxcRVs9MjFsXEVbPTIzbFxFWz0zbFxFXzQwXEVfNTBcRW5cRXdcRWUgXEV4MFwwXDBcRXgxXDBcMFxFeDJcMFwwXEV4M1wwXDBcRXg0XDBcMFxFMSwKLQlyczM9XEVbPTE5aFxFLjNcRTlcRTBPXDBcMFwwXDBcMFxFMG9cMFwwXDBcMFwwXEUwSlwxNzdcMFwwXDBcMCwKLQlzZ3I9XEVHMCU/JXAxJXRcRUd0JTslPyVwMiV0XEVHOCU7JT8lcDMldFxFRzQlOyU/JXA0JXRcRUcyJTslPyVwNSV0XEVHcCU7JT8lcDYldFxFR1wsJTslPyVwNyV0XEVHMSU7JT8lcDkldFxFJCVlXEUlJSU7LAotCXNncjA9XEVHMCwgc21hY3M9XEUkLCBzbWFtPVxFPTdoLCBzbWN1cD1cRS4yLCBzbWRjPVxFciwKLQlzbWlyPVxFcSwgc21sbj1cRVs0OzJ2LCBzbXNvPVxFR3QsIHNtdWw9XEVHOCwgc214b249Xk8sCi0JdGJjPVxFMywgdHNsPVxFWzQ7MXZcRV8zMCwgdWM9XEVHOFxFRzAsCi0KLSMjIyMgVmlzdWFsICh2aSkKLSMKLSMgSW4gU2VwdGVtYmVyIDE5OTMsIFZpc3VhbCBUZWNobm9sb2d5IG9mIFdlc3Rib3JvLCBNYXNzYWNodXNldHRzLAotIyBtZXJnZWQgd2l0aCBXaGl0ZSBQaW5lIFNvZnR3YXJlIG9mIE5hc2h1YSwgTmV3IEhhbXBzaGlyZS4KLSMKLSMgV2hpdGUgUGluZSBTb2Z0d2FyZSBtYXkgYmUgY29udGFjdGVkIGF0ICsxIDYwMy84ODYtOTA1MC4KLSMgT3IgdmlzaXQgV2hpdGUgUGluZSBvbiB0aGUgV29ybGQgV2lkZSBXZWIgYXQgVVJMIGh0dHA6Ly93d3cud3BpbmUuY29tLgotIwotCi0jIFZpc3VhbCA1MCBmcm9tIEJlYXUgU2hla2l0YSwgQlRMLVdoaXBwYW55IDx3aHV4bGIhZWpzPgotIyBSZWNlbnRseSBJIGhhY2tlZCB0b2dldGhlciB0aGUgZm9sbG93aW5nIHRlcm1jYXAgZm9yIFZpc3VhbAotIyBUZWNobm9sb2d5J3MgVmlzdWFsIDUwIHRlcm1pbmFsLiBJdCdzIGEgc2xpZ2h0IG1vZGlmaWNhdGlvbiBvZgotIyB0aGUgdnQ1MiB0ZXJtY2FwLgotIyBJdCdzIGludGVuZGVkIHRvIHJ1biB3aGVuIHRoZSBWaXN1YWwgNTAgaXMgaW4gdnQ1MiBlbXVsYXRpb24gbW9kZQotIyAoSSBrbm93IHdoYXQgeW91J3JlIHRoaW5raW5nOyBpZiBpdCdzIGVtdWxhdGluZyBhIHZ0NTIsIHRoZW4gd2h5Ci0jIGFub3RoZXIgdGVybWNhcD8gV2VsbCwgaXQgdHVybnMgb3V0IHRoYXQgdGhlIFZpc3VhbCA1MCBjYW4gaGFuZGxlCi0jIDxkbDE+IGFuZCBkYig/KSBhbW9uZyBvdGhlciB0aGluZ3MsIHdoaWNoIHRoZSB2dDUyIGNhbid0KQotIyBUaGUgdGVybWNhcCB3b3JrcyBPSyBmb3IgdGhlIG1vc3QgcGFydC4gVGhlIG9ubHkgcHJvYmxlbSBpcyBvbgotIyBjaGFyYWN0ZXIgaW5zZXJ0cy4gVGhlIHdob2xlIGxpbmUgZ2V0cyBwYWluZnVsbHkgcmVkcmF3biBmb3IgZWFjaAotIyBjaGFyYWN0ZXIgdHlwZWQuIEFueSBzdWdnZXN0aW9ucz8KLSMgQmVhdSdzIGVudHJ5IGlzIGNvbWJpbmVkIHdpdGggdGhlIHZpNTAgZW50cnkgZnJvbSBVbml2ZXJzaXR5IG9mIFdpc2NvbnNpbi4KLSMgTm90ZSBlc3BlY2lhbGx5IHRoZSA8aWwxPiBmdW5jdGlvbi4gIDxrZjQ+LTxrZjY+IGFyZSByZWFsbHkgbDQtbDYgaW4KLSMgZGlzZ3Vpc2U7IDxrZjc+LTxrZjk+IGFyZSByZWFsbHkgbDEtbDMuCi12aTUwfHZpc3VhbCA1MCwKLQlPVGJzLCBPVHB0LCBhbSwgZGEsIGRiLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCU9Ubmw9XkosIGJlbD1eRywgY2J0PVxFeiQ8NC8+LCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XEVCLCBjdWYxPVxFQywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdXUxPVxFQSwgZGwxPVxFTSQ8MyovPiwgZWQ9XEVKLCBlbD1cRUskPDE2Lz4sIGhvbWU9XEVILAotCWh0PV5JLCBpbDE9XEVMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsCi0Ja2N1ZjE9XEVDLCBrY3V1MT1cRUEsIGtmMT1cRVAsIGtmMj1cRVEsIGtmMz1cRVIsIGtmND1cRVYsCi0Ja2Y1PVxFRSwga2Y2PVxFXSwga2Y3PVxFTCwga2Y4PVxFdiwga2Y5PVxFTSwga2hvbWU9XEVILAotCW5lbD1eTV5KLCByaT1cRUksIHJtc289XEVULCBybXVsPVxFVywgc21zbz1cRVUsIHNtdWw9XEVTLAotIyB0aGlzIG9uZSB3YXMgQlNEICYgU0NPJ3Mgdmk1MAotdmk1MGFkbXx2aXN1YWwgNTAgaW4gYWRtM2EgbW9kZSwKLQlhbSwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5aLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkbDE9XEVNLAotCWVkPVxFaywgZWw9XEVLLCBob21lPVxFSCwgaHQ9XkksIGlsMT1cRUwsIGluZD1eSiwga2JzPV5ILAotCWtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2hvbWU9XEVILAotCXJtc289XEVULCBzbXNvPVxFVSwKLSMgRnJvbTogSmVmZiBTaWVnYWwgPGpic0BxdWlvdGl4LmNvbT4KLXZpNTV8VmlzdWFsIDU1LAotCU9UYnMsIGFtLCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEV2LCBjc3I9XEVfJXAxJXs2NX0lKyVjJXAyJXs2NX0lKyVjLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XEVBLCBkY2gxPVxFdywgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwKLQlpbDE9XEVMLCBpczI9XEV2XEVfQVhcRWJcRVdcRTlQXEVULCBrYnM9XkgsIGtjdWIxPVxFRCwKLQlrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCByaT1cRUksIHJtaXI9XEViLCBybXNvPVxFVCwKLQlzbWlyPVxFYSwgc21zbz1cRVUsCi0KLSMgVmlzdWFsIDIwMCBmcm9tIEJSTAotIyBUaGUgZm9sbG93aW5nIHN3aXRjaCBzZXR0aW5ncyBhcmUgYXNzdW1lZCBmb3Igbm9ybWFsIG9wZXJhdGlvbjoKLSMJRlVMTF9EVVBMRVgJCVNDUk9MTAkJCUNSCi0jCUFVVE9fTkVXX0xJTkVfT04JVklTVUFMXzIwMF9FTVVMQVRJT05fTU9ERQotIyBPdGhlciBzd2l0Y2hlcyBtYXkgYmUgc2V0IGZvciBvcGVyYXRvciBjb252ZW5pZW5jZSBvciBjb21tdW5pY2F0aW9uCi0jIHJlcXVpcmVtZW50cy4KLSMgQ2hhcmFjdGVyIGluc2VydGlvbiBpcyBrbHVkZ2VkIGluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhlICJiZWVwIiBtaXNmZWF0dXJlLgotIyAoVGhpcyBjYXAgaXMgY29tbWVudGVkIG91dCBiZWNhdXNlIDxzbWlyPi88cm1pcj4gaXMgbW9yZSBlZmZpY2llbnQgLS0gZXNyKQotIyBTdXBwb3NlZGx5ICI0KiIgZGVsYXlzIHNob3VsZCBiZSB1c2VkIGZvciA8aWwxPiwgPGVkPiwgPGNsZWFyPiwgPGRjaDE+LAotIyBhbmQgPGRsMT4gc3RyaW5ncywgYnV0IHdlIHNlZW0gdG8gZ2V0IGFsb25nIGZpbmUgd2l0aG91dCB0aGVtLgotdmkyMDB8dmlzdWFsIDIwMCwKLQlPVGJzLCBPVHB0LCBhbSwgbWlyLCBtc2dyLAotCU9Ua24jMTAsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9LCBiZWw9XkcsIGNidD1cRXosIGNsZWFyPVxFdiwgY25vcm09XEVjLCBjcj1eTSwgY3ViMT1eSCwKLQljdWQxPV5KLCBjdWYxPVxFQywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdXUxPVxFQSwgY3Z2aXM9XEVkLCBkY2gxPVxFTywgZGltPVxFNCwgZGwxPVxFTSwgZWQ9XEV5LAotCWVsPVxFeCwgaG9tZT1cRUgsIGh0PV5JLCBodHM9XEUxLCBpbDE9XEVMLCBpbmQ9XkosIGludmlzPVxFYSwKLQlrYnM9XkgsIGtjbHI9XEV2LCBrY3RhYj1cRTIsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCi0Ja2N1dTE9XEVBLCBrZGNoMT1cRU8sIGtkbDE9XEVNLCBrZWQ9XEVKLCBrZWw9XEV0LCBrZjA9XEU/cCwKLQlrZjE9XEU/cSwga2YyPVxFP3IsIGtmMz1cRT9zLCBrZjQ9XEU/dCwga2Y1PVxFP3UsIGtmNj1cRT92LAotCWtmNz1cRT93LCBrZjg9XEU/eCwga2Y5PVxFP3ksIGtob21lPVxFSCwga2h0cz1cRTEsIGtpY2gxPVxFaSwKLQlraWwxPVxFTCwga3JtaXI9XEVqLCBtYzA9XEVIXEVdLCBtYzQ9XEVYLCBtYzU9XEVXLCByaT1cRUksCi0Jcm1hY3M9XEVHLCBybWt4PVxFPiwgcm1zbz1cRTMsCi0JcnMxPVxFM1xFYlxFalxFXEVsXEVHXEVjXEVrXEVYLCBzZ3IwPVxFM1xFYiwgc21hY3M9XEVGLAotCXNta3g9XEU9LCBzbXNvPVxFNCwgdGJjPVxFZywKLSMgVGhlIG9sZGVyIFZpc3VhbHMgZGlkbid0IGNvbWUgd2l0aCBmdW5jdGlvbiBrZXlzLiBUaGlzIGVudHJ5IHVzZXMKLSMgPHNta3g+IGFuZCA8cm1reD4gc28gdGhhdCB0aGUga2V5cGFkIGtleXMgY2FuIGJlIHVzZWQgYXMgZnVuY3Rpb24ga2V5cy4KLSMgSWYgeW91ciB2ZXJzaW9uIG9mIHZpIGRvZXNuJ3Qgc3VwcG9ydCBmdW5jdGlvbiBrZXlzIHlvdSBtYXkgd2FudAotIyB0byB1c2UgdmkyMDAtZi4KLXZpMjAwLWZ8dmlzdWFsIDIwMCBubyBmdW5jdGlvbiBrZXlzLAotCWlzMj1cRTNcRWJcRWpcRVxcXEVsXEVHXEVkXEVrLCBrZjA9XEU/cCwga2YxPVxFP3EsCi0Ja2YyPVxFP3IsIGtmMz1cRT9zLCBrZjQ9XEU/dCwga2Y1PVxFP3UsIGtmNj1cRT92LCBrZjc9XEU/dywKLQlrZjg9XEU/eCwga2Y5PVxFP3ksIHJta3g9XEU+LCBybXNvQCwgc21reD1cRT0sIHNtc29ALAotCXVzZT12aTIwMCwKLXZpMjAwLXJ2fHZpc3VhbCAyMDAgcmV2ZXJzZSB2aWRlbywKLQljbm9ybUAsIGN2dmlzQCwgcmlALCBybXNvPVxFMywgc21zbz1cRTQsIHVzZT12aTIwMCwKLQotIyB0aGUgZnVuY3Rpb24ga2V5cyBhcmUgcHJvZ3JhbW1hYmxlIGJ1dCB3ZSBkb24ndCByZXByb2dyYW0gdGhlbSB0byB0aGVpcgotIyBkZWZhdWx0IHZhbHVlcyB3aXRoIDxpczI+IGJlY2F1c2UgcHJvZ3JhbW1pbmcgdGhlbSBpcyB2ZXJ5IHZlcmJvc2UuIG1heWJlCi0jIGFuIGluaXRpYWxpemF0aW9uIGZpbGUgc2hvdWxkIGJlIG1hZGUgZm9yIHRoZSAzMDAgYW5kIHRoZXkgY291bGQgYmUgc3R1Y2sKLSMgaW4gaXQuCi0jICh2aTMwMDogYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiBpbml0IHN0cmluZyAtLSBlc3IpCi12aTMwMHx2aXN1YWwgMzAwIGFuc2kgeDMuNjQsCi0JYW0sIGJ3LCBtaXIsIHhlbmwsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCi0JZGNoMT1cRVtQJDw0MD4sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLAotCWlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFWzdzXEVbMjszOzQ7MjA7PzU7PzZsXEVbMTI7PzdoXEVbMVFcRVswOzEoRFxFWzhzLAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2YxPVxFX0FcRVxcLCBrZjI9XEVfQlxFXFwsIGtmMz1cRV9DXEVcXCwga2Y0PVxFX0RcRVxcLAotCWtmNT1cRV9FXEVcXCwga2Y2PVxFX0ZcRVxcLCBrZjc9XEVfR1xFXFwsIGtmOD1cRV9IXEVcXCwKLQlrZjk9XEVfSVxFXFwsIGtob21lPVxFW0gsIHJpPVxFTSwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21zbz1cRVsxbSwgc211bD1cRVs0bSwKLSMgc29tZSBvZiB0aGUgdmkzMDBzIGhhdmUgb2xkZXIgZmlybXdhcmUgdGhhdCBoYXMgdGhlIGNvbW1hbmQKLSMgc2VxdWVuY2UgZm9yIHNldHRpbmcgZWRpdGluZyBleHRlbnQgcmV2ZXJzZWQuCi12aTMwMC1vbGR8dmlzdWFsIDMwMCB3aXRoIG9sZCBmaXJtd2FyZSAoc2V0IGVkaXQgZXh0ZW50IHJldmVyc2VkKSwKLQlpczI9XEVbN3NcRVsyOzM7NDsyMDs/NTs/NmxcRVsxMjs/N2hcRVsyUVxFWzA7MShEXEVbOHMsCi0JdXNlPXZpMzAwLAotCi0jIFZpc3VhbCA1MDAgcHJvdG90eXBlIGVudHJ5IGZyb20gVW5pdmVyc2l0eSBvZiBXaXNjb25zaW4uCi0jIFRoZSBiZXN0IHBsYWNlIHRvIGxvb2sgZm9yIHRoZSBlc2NhcGUgc2VxdWVuY2VzIGlzIHBhZ2UgQTEtMSBvZiB0aGUKLSMgVmlzdWFsIDUwMCBtYW51YWwuICBUaGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZ2l2ZW4gaGVyZSBtYXkgYmUKLSMgb3ZlcmtpbGwsIGJ1dCBpdCBkb2VzIGxlYXZlIG91dCBzb21lIG9mIHRoZSBpbml0aWFsaXphdGlvbnMgd2hpY2ggY2FuCi0jIGJlIGRvbmUgd2l0aCB0aGUgbWVudXMgaW4gc2V0LXVwIG1vZGUuCi0jIFRoZSA6eHA6IGxpbmUgYmVsb3cgaXMgc28gdGhhdCBlbWFjcyBjYW4gdW5kZXJzdGFuZCB0aGUgcGFkZGluZyByZXF1aXJlbWVudHMKLSMgb2YgdGhpcyBzbG93IHRlcm1pbmFsLiAgOnhwOiBpcyAxMCB0aW1lIHRoZSBwYWRkaW5nIGZhY3Rvci4KLSMgKHZpNTAwOiByZW1vdmVkIHVua25vd24gOnhwIzQ6IHRlcm1jYXA7Ci0jIGFsc28gYWRkZWQgZW1wdHkgPGFjc2M+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5nIC0tIGVzcikKLXZpNTAwfHZpc3VhbCA1MDAsCi0JYW0sIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMzMywKLQlhY3NjPSwgY2J0PVxFeiQ8NC8+LCBjbGVhcj1cRXYkPDYqLz4sIGNyPV5NLAotCWNzcj1cRSglcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1YjE9XkgsIGN1ZDE9XEVCLAotCWN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwKLQlkY2gxPVxFTyQ8MyovPiwgZGwxPVxFTSQ8MyovPiwgZWQ9XEV5JDwzKi8+LAotCWVsPVxFeCQ8MTYvPiwgaG9tZT1cRUgsIGh0PVwwMTEkPDgvPiwgaWwxPVxFTFxFeCQ8MyovPiwKLQlpbmQ9XkosCi0JaXMyPVxFM1xFXDAwMVxFXDAwN1xFXDAwM1xFa1xFR1xFZFxFWFxFbFxFPlxFYlxFXFwsCi0Ja2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsCi0Ja2hvbWU9XEVILCBuZWw9Xk1eSiwgcm1hY3M9Xk8sIHJtaXI9XEVqLCBybXNvPVxFXkcsCi0Jcm11bD1cRV5DLCBzbWFjcz1eTiwgc21pcj1cRWksIHNtc289XEVeSCwgc211bD1cRV5ELAotCi0jIFRoZSB2aXN1YWwgNTUwIGlzIGEgdmlzdWFsIDMwMCB3aXRoIHRla3Ryb25peCBncmFwaGljcywKLSMgYW5kIHdpdGggMzMgbGluZXMuIGNsZWFyIHNjcmVlbiBpcyBtb2RpZmllZCBoZXJlIHRvCi0jIGFsc28gY2xlYXIgdGhlIGdyYXBoaWNzLgotdmk1NTB8dmlzdWFsIDU1MCBhbnNpIHgzLjY0LAotCWxpbmVzIzMzLAotCWNsZWFyPVwwMzBcRVtIXEVbMkosIHVzZT12aTMwMCwKLQotdmk2MDN8dmlzdWFsNjAzfHZpc3VhbCA2MDMsCi0JaHMsIG1pciwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbSiwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQlkc2w9XEVQMjsxflxFXFwsIGVkPVxFW0osIGVsPVxFW0ssIGZzbD1cRVxcLCBpbDE9XEVbTCwKLQlpbmQ9XEVELCBpczE9XEU+XEVbPzNsXEVbPzRsXEVbPzdoXEVbPzhoXEVbMTsyNHIsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlzZ3IwPVxFW20sIHNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRzbD1cRVAyfiwKLQl1c2U9dnQxMDAsCi0KLSMjIyMgV3lzZSAod3kpCi0jCi0jCVd5c2UgVGVjaG5vbG9neQotIwkzNDcxIE5vcnRoIEZpcnN0IFN0cmVldAotIwlTYW4gSm9zZSwgQ0EgOTUxMzQKLSMJVm94OiAoNDA4KS00NzMtMTIwMAotIwlGYXg6ICg0MDgpIDQ3My0xMjIyCi0jCVdlYjogaHR0cDovL3d3dy53eXNlLmNvbQotIwotIyBXeXNlIHNhbGVzIGNhbiBiZSByZWFjaGVkIGJ5IHBob25lIGF0IDEtODAwLUdFVC1XWVNFLiAgVGVjaCBzdXBwb3J0IGlzIGF0Ci0jICg4MDApLTgwMC1XWVNFIChvcHRpb24gNSBnZXRzIHlvdSBhIGh1bWFuKS4gIFRoZXJlJ3MgYSBXZWIgcGFnZSBhdCB0aGUKLSMgb2J2aW91cyBhZGRyZXNzLCA8aHR0cDovL3d3dy53eXNlLmNvbT4uICBUaGV5IGtlZXAgdGVybWluZm8gZW50cmllcyBhdAotIyA8aHR0cDovL3d3dy53eXNlLmNvLnVrL3N1cHBvcnQvYXBwbm90ZXMvaWR4YXBwbnQuaHRtPi4KLSMKLSMgV3lzZSBib3VnaHQgb3V0IExpbmsgVGVjaG5vbG9neSwgSW5jLiBpbiAxOTkwIGFuZCBjbG9zZWQgaXQgZG93biBpbiAxOTk1LgotIyBUaGV5IG5vdyBvd24gdGhlIFF1bWUgYW5kIEFtZGVrIGJyYW5kcywgdG9vLiAgU28gdGhlc2UgYXJlIHRoZSBwZW9wbGUgdG8KLSMgdGFsayB3aXRoIGFib3V0IGFsbCBMaW5rLCBRdW1lLCBhbmQgQW1kZWsgdGVybWluYWxzLgotIwotIyBUaGVzZSBlbnRyaWVzIGluY2x1ZGUgYSBmZXcgc21hbGwgZml4ZXMuCi0jIEkgY2FuY2VsZWQgdGhlIGJlbCBjYXBhY2l0aWVzIGluIHRoZSB2YiBlbnRyaWVzLgotIyBJIG1hZGUgdHdvIHRyaXZpYWwgc3ludGF4IGZpeGVzIGluIHRoZSB3eXNlMzAgZW50cnkuCi0jIEkgbWFkZSBzb21lIGVudHJpZXMgcmVsYXRpdmUgdG8gYWRtK3Nnci4KLSMKLSMKLSMgTm90ZTogVGhlIHd5c2U3NSwgd3lzZTg1LCBhbmQgd3lzZTk5IGhhdmUgYmVlbiBkaXNjb250aW51ZWQuCi0KLSMJICAgQWx0aG91Z2ggdGhlIFd5c2UgMzAgY2FuIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBhdHRyaWJ1dGUKLSMJaXQgcmVxdWlyZXMgbWFnaWMgY29va2llcyB0byBkbyBzby4gIE1hbnkgYXBwbGljYXRpb25zIGRvIG5vdAotIwlmdW5jdGlvbiB3ZWxsIHdpdGggbWFnaWMgY29va2llcy4gIFRoZSBmb2xsb3dpbmcgdGVybWluZm8gdXNlcwotIwl0aGUgcHJvdGVjdCBtb2RlIHRvIHN1cHBvcnQgb25lIGF0dHJpYnV0ZSAoZGltKSB3aXRob3V0IGNvb2tpZXMuCi0jCUlmIG1vcmUgdGhhbiBvbmUgYXR0cmlidXRlIGlzIG5lZWRlZCB0aGVuIHRoZSB3eTMwLW1jIHRlcm1pbmZvCi0jCXNob3VsZCBiZSB1c2VkLgotIwotd3kzMHx3eXNlMzB8V3lzZSAzMCwKLQlhbSwgYncsIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBsaCMxLCBsaW5lcyMyNCwgbHcjOCwgbWEjMSwgbmxhYiM4LCB3c2wjNDUsCi0JYWNzYz0wd2FfaFtqdWtzbHJtcW54cXp0dHV5dl13cHh2LCBiZWw9XkcsIGNidD1cRUksCi0JY2l2aXM9XEVgMCwgY2xlYXI9XEUrJDw4MD4sIGNub3JtPVxFYDEsIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XkwsIGN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1eSywgZGNoMT1cRVckPDEwPiwgZGltPVxFYDdcRSksIGRsMT1cRVIkPDE+LAotCWRzbD1cRUZcciwgZWQ9XEVZJDw4MD4sIGVsPVxFVCwgZmxhc2g9XEVgOCQ8MTAwLz5cRWA5LAotCWZzbD1eTSwgaG9tZT1eXiwgaHQ9XDAxMSQ8MT4sIGh0cz1cRTEsIGlsMT1cRUUkPDI+LAotCWluZD1cbiQ8Mj4sIGlwPSQ8Mj4sIGlzMj1cRSdcRShcRVxeM1xFYDlcMDE2XDAyNCwKLQlrSE9NPVxFeywga2JzPV5ILCBrY2J0PVxFSSwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwKLQlrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwga2VkPVxFWSwga2VsPVxFVCwga2VudD1cRTcsCi0Ja2YxPV5BQFxyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsCi0Ja2Y2PV5BRVxyLCBrZjc9XkFGXHIsIGtmOD1eQUdcciwga2hvbWU9Xl4sIGtpY2gxPVxFUSwKLQlraWwxPVxFRSwga25wPVxFSywga3BwPVxFSiwga3JwbD1cRXIsIGxsPV5eXkssIG1jMD1cRVAsIG1jND1eVCwKLQltYzU9XlgsIG5lbD1eTV5KLCBwZng9XEV6JXAxJXs2M30lKyVjJXAyJXNcMTc3LAotCXBsbj1cRXolcDElezQ3fSUrJWMlcDIlc1xyLCBwcm90PVxFYDdcRSksIHJpPVxFaiQ8Mz4sCi0Jcm1hY3M9XEVIXkMsIHJtaXI9XEVyLCBybWxuPVxFQTExLCBybXNvPVxFKCwKLQlzZ3I9JT8lcDElcDUlcDglfCV8JXRcRWA3XEUpJWVcRSglOyU/JXA5JXRcRUhcMDAyJWVcRUhcMDAzJTssCi0Jc2dyMD1cRShcRUhcMDAzLCBzbWFjcz1cRUheQiwgc21pcj1cRXEsIHNtbG49XEVBMTAsCi0Jc21zbz1cRWA3XEUpLCB0YmM9XEUwLCB0c2w9XEVGLAotIwotIwlUaGlzIHRlcm1pbmFsIGRlc2NyaXB0aW9uIHVzZXMgdGhlIG5vbi1oaWRkZW4gYXR0cmlidXRlIG1vZGUKLSMJKHdpdGggbWFnaWMgY29va2llKS4KLSMKLSMgKHd5MzAtbWM6IGFkZGVkIDxzbWN1cD4gdG8gc3VwcHJlc3MgdGljIHdhcm5pbmcgLS1lc3IpCi13eTMwLW1jfHd5c2UzMC1tY3x3eXNlIDMwIHdpdGggbWFnaWMgY29va2llcywKLQltc2dyQCwKLQltYUAsIHhtYyMxLAotCWJsaW5rPVxFRzIsIGRpbT1cRUdwLCBwcm90PVxFRzBcRSksIHJtYWNzPVxFRzBcRUhcMDAzLAotCXJtY3VwPVxFRzAsIHJtc289XEVHMCwKLQlzZ3I9XEVHJXs0OH0lPyVwMiVwNiV8JXQlezh9JXwlOyU/JXAxJXAzJXwlcDYlfCV0JXs0fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwMSVwNSV8JXQlezY0fSV8JTslPyVwNyV0JXsxfSV8JTslYyU/JXA4JXRcRSklZVxFKCU7JT8lcDkldFxFSFwwMDIlZVxFSFwwMDMlOywKLQlzZ3IwPVxFRzBcRShcRUhcMDAzLCBzbWFjcz1cRUcwXEVIXDAwMiwgc21jdXA9LAotCXNtc289XEVHNCwgdXNlPXd5MzAsIHVzZT1hZG0rc2dyLAotIwlUaGUgbWFuZGF0b3J5IHBhdXNlIHVzZWQgYnkgPGZsYXNoPiBkb2VzIG5vdCB3b3JrIHdpdGgKLSMJb2xkZXIgdmVyc2lvbnMgb2YgdGVybWluZm8uICBJZiB5b3Ugc2VlIHRoaXMgZWZmZWN0IHRoZW4KLSMJdW5zZXQgeG9uIGFuZCBkZWxldGUgdGhlIC8gZnJvbSB0aGUgZGVsYXkuCi0jCWkuZS4gY2hhbmdlICQ8MTAwLz4gdG8gJDwxMDA+Ci13eTMwLXZifHd5c2UzMC12Ynx3eXNlIDMwIHZpc2libGUgYmVsbCwKLQliZWxALCB1c2U9d3kzMCwKLSMKLSMJICAgVGhlIFd5c2UgNTAgY2FuIHN1cHBvcnQgb25lIGF0dHJpYnV0ZSAoZS5nLiBEaW0sIEludmVyc2UsCi0jCU5vcm1hbCkgd2l0aG91dCBtYWdpYyBjb29raWVzIGJ5IHVzaW5nIHRoZSBwcm90ZWN0IG1vZGUuCi0jCVRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gdXNlcyB0aGlzIGZlYXR1cmUsIGJ1dCB3aGVuIG1vcmUKLSMJdGhhbiBvbmUgYXR0cmlidXRlIGlzIHB1dCBvbiB0aGUgc2NyZWVuIGF0IG9uY2UsIGFsbCBhdHRyaWJ1dGVzCi0jCXdpbGwgYmUgY2hhbmdlZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdCBhdHRyaWJ1dGUgZ2l2ZW4uCi0jCSAgIFRoZSBXeXNlIDUwIGNhbiBzdXBwb3J0IG1vcmUgYXR0cmlidXRlcyB3aGVuIHVzZWQgd2l0aCBtYWdpYwotIwljb29raWVzLiAgVGhlIHd5NTAtbWMgdGVybWluYWwgZGVzY3JpcHRpb24gdXNlcyBtYWdpYyBjb29raWVzCi0jCXRvIGNvcnJlY3RseSBoYW5kbGUgbXVsdGlwbGUgYXR0cmlidXRlcyBvbiBhIHNjcmVlbi4KLSMKLXd5NTB8d3lzZTUwfFd5c2UgNTAsCi0JYW0sIGJ3LCBocywgbWM1aSwgbWlyLCBtc2dyLCB4b24sCi0JY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG1hIzEsIG5sYWIjOCwgd3NsIzQ1LAotCWFjc2M9MHdhX2hbanVrc2xybXFueHF6dHR1eXZdd3B4diwgYmVsPV5HLCBjYnQ9XEVJLAotCWNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8MjA+LCBjbm9ybT1cRWAxLCBjcj1eTSwgY3ViMT1eSCwKLQljdWQxPV5KLCBjdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XkssIGRjaDE9XEVXJDwxPiwgZGltPVxFYDdcRSksIGRsMT1cRVIsIGRzbD1cRUZcciwKLQllZD1cRVkkPDIwPiwgZWw9XEVULCBmbGFzaD1cRWA4JDwxMDAvPlxFYDksIGZzbD1eTSwKLQlob21lPV5eLCBodD1eSSwgaHRzPVxFMSwgaWwxPVxFRSwgaW5kPVxuJDwyPiwgaXA9JDwxPiwKLQlpczE9XEVgXDpcRWA5JDwzMD4sIGlzMj1cMDE2XDAyNFxFJ1xFKCwga0hPTT1cRXssIGticz1eSCwKLQlrY2J0PVxFSSwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtkY2gxPVxFVywKLQlrZGwxPVxFUiwga2VkPVxFWSwga2VsPVxFVCwga2VudD1cRTcsIGtmMT1eQUBcciwga2YxMD1eQUlcciwKLQlrZjExPV5BSlxyLCBrZjEyPV5BS1xyLCBrZjEzPV5BTFxyLCBrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLAotCWtmMTY9XkFPXHIsIGtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwKLQlrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtob21lPV5eLAotCWtpY2gxPVxFUSwga2lsMT1cRUUsIGtucD1cRUssIGtwcD1cRUosIGtwcnQ9XEVQLCBrcnBsPVxFciwKLQlsbD1eXl5LLCBtYzA9XEVQLCBtYzQ9XlQsIG1jNT1eWCwgbmVsPV5NXkosCi0JcGZ4PVxFeiVwMSV7NjN9JSslYyVwMiVzXDE3NywKLQlwbG49XEV6JXAxJXs0N30lKyVjJXAyJXNcciwgcHJvdD1cRWA3XEUpLCByZXY9XEVgNlxFKSwKLQlyaT1cRWosIHJtYWNzPVxFSF5DLCBybWlyPVxFciwgcm1sbj1cRUExMSwgcm1zbz1cRSgsCi0Jc2dyPSU/JXAxJXAzJXwldFxFYDZcRSklZSVwNSVwOCV8JXRcRWA3XEUpJWVcRSglOyU/JXA5JXRcRUhcMDAyJWVcRUhcMDAzJTssCi0Jc2dyMD1cRShcRUhcMDAzLCBzbWFjcz1cRUheQiwgc21pcj1cRXEsIHNtbG49XEVBMTAsCi0Jc21zbz1cRWA2XEUpLCB0YmM9XEUwLCB0c2w9XEVGLAotIwotIwlUaGlzIHRlcm1pbmFsIGRlc2NyaXB0aW9uIHVzZXMgdGhlIG5vbi1oaWRkZW4gYXR0cmlidXRlIG1vZGUKLSMJKHdpdGggbWFnaWMgY29va2llKS4KLSMKLSMJVGhlIG1hbmRhdG9yeSBwYXVzZSB1c2VkIGJ5IGZsYXNoIGRvZXMgbm90IHdvcmsgd2l0aCBzb21lCi0jCW9sZGVyIHZlcnNpb25zIG9mIHRlcm1pbmZvLiAgSWYgeW91IHNlZSB0aGlzIGVmZmVjdCB0aGVuCi0jCXVuc2V0IDx4b24+IGFuZCBkZWxldGUgdGhlIC8gZnJvbSB0aGUgZGVsYXkuCi0jCWkuZS4gY2hhbmdlICQ8MTAwLz4gdG8gJDwxMDA+Ci0jICh3eTUwLW1jOiBhZGRlZCA8c21jdXA+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5nIC0tZXNyKQotd3k1MC1tY3x3eXNlNTAtbWN8d3lzZSA1MCB3aXRoIG1hZ2ljIGNvb2tpZXMsCi0JbXNnckAsCi0JbWFALCB4bWMjMSwKLQlibGluaz1cRUcyLCBkaW09XEVHcCwgcHJvdD1cRUcwXEUpLCByZXY9XEVHNCwKLQlybWFjcz1cRUcwXEVIXDAwMywgcm1jdXA9XEVHMCwgcm1zbz1cRUcwLAotCXNncj1cRUclezQ4fSU/JXAyJXA2JXwldCV7OH0lfCU7JT8lcDElcDMlfCVwNiV8JXQlezR9JXwlOyU/JXA0JXQlezJ9JXwlOyU/JXAxJXA1JXwldCV7NjR9JXwlOyU/JXA3JXQlezF9JXwlOyVjJT8lcDgldFxFKSVlXEUoJTslPyVwOSV0XEVIXDAwMiVlXEVIXDAwMyU7LAotCXNncjA9XEVHMFxFKFxFSFwwMDMsIHNtYWNzPVxFRzBcRUhcMDAyLCBzbWN1cD0sCi0Jc21zbz1cRUd0LCB1c2U9d3k1MCwgdXNlPWFkbStzZ3IsCi13eTUwLXZifHd5c2U1MC12Ynx3eXNlIDUwIHZpc2libGUgYmVsbCwKLQliZWxALCB1c2U9d3k1MCwKLXd5NTAtd3x3eXNlNTAtd3x3eXNlIDUwIDEzMi1jb2x1bW4sCi0JY29scyMxMzIsIGx3IzcsIG5sYWIjMTYsIHdzbCM5NywKLQljdXA9XEVhJWklcDElZFIlcDIlZEMsIGRjaDE9XEVXJDwyPiwgaXMxPVxFYDtcRWA5JDwzMD4sCi0JdXNlPXd5NTAsCi13eTUwLXd2Ynx3eXNlNTAtd3ZifHd5c2UgNTAgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5NTAtdywKLQotIwotIwlUaGUgV3lzZSAzNTAgaXMgYSBXeXNlIDUwIHdpdGggY29sb3IuCi0jCVVuZm9ydHVuYXRlbHkgdGhpcyBtZWFucyB0aGF0IGl0IGhhcyBtYWdpYyBjb29raWVzLgotIwlUaGUgY29sb3IgYXR0cmlidXRlcyBhcmUgZGVzaWduZWQgdG8gb3ZlcmxhcCB0aGUgcmV2ZXJzZSwgZGltIGFuZAotIwl1bmRlcmxpbmUgYXR0cmlidXRlcy4gIFRoaXMgaXMgbmljZSBmb3IgbW9ub2Nocm9tZSBhcHBsaWNhdGlvbnMKLSMJYmVjYXVzZSB5b3UgY2FuIG1ha2UgdW5kZXJsaW5lIHN0dWZmIGdyZWVuIChvciBhbnkgb3RoZXIgY29sb3IpCi0jCWJ1dCBmb3IgdHJ1ZSBjb2xvciBhcHBsaWNhdGlvbnMgaXQncyBub3Qgc28gaG90IGJlY2F1c2UgeW91IGNhbm5vdAotIwltaXggY29sb3Igd2l0aCByZXZlcnNlLCBkaW0gb3IgdW5kZXJsaW5lLgotIwkgICAgVG8gZnVydGhlciBjb21wbGljYXRlIHRoaW5ncyBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgbXVzdCBiZQotIwlibGFjayAoZWl0aGVyIHRoZSBmb3JlZ3JvdW5kIG9yIHRoZSBiYWNrZ3JvdW5kKS4gIEluIHJldmVyc2UgdmlkZW8KLSMJdGhlIGJhY2tncm91bmQgY2hhbmdlcyBjb2xvciB3aXRoIGJsYWNrIGxldHRlcnMuICBJbiBub3JtYWwgdmlkZW8KLSMJdGhlIGZvcmVncm91bmQgY2hhbmdlcyBjb2xvcnMgb24gYSBibGFjayBiYWNrZ3JvdW5kLgotIwkgICAgVGhpcyB0ZXJtaW5mbyB1c2VzIHNvbWUgb2YgdGhlIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgb2YgY3Vyc2VzCi0jCXRvIGRpc3BsYXkgYm90aCBjb2xvciBhbmQgYmxpbmsuICBJbiB0aGUgZmluYWwgYW5hbHlzaXMgSSBhbSBub3QKLSMJc3VyZSB0aGF0IHRoZSB3eTM1MCBydW5zIGJldHRlciB3aXRoIHRoaXMgdGVybWluZm8gdGhhbiBpdCBkb2VzCi0jCXdpdGggdGhlIHd5NTAgdGVybWluZm8gKHdpdGggdXNlciBhZGp1c3RlZCBjb2xvcnMpLgotIwotIwlUaGUgbWFuZGF0b3J5IHBhdXNlIHVzZWQgYnkgZmxhc2ggZG9lcyBub3Qgd29yayB3aXRoCi0jCW9sZGVyIHZlcnNpb25zIG9mIHRlcm1pbmZvLiAgSWYgeW91IHNlZSB0aGlzIGVmZmVjdCB0aGVuCi0jCXVuc2V0IHhvbiBhbmQgZGVsZXRlIHRoZSAvIGZyb20gdGhlIGRlbGF5LgotIwlpLmUuIGNoYW5nZSAkPDEwMC8+IHRvICQ8MTAwPgotIwotIyBCdWc6IFRoZSA8b3A+IGNhcGFiaWxpdHkgcmVzZXRzIGF0dHJpYnV0ZXMuCi13eTM1MHx3eXNlMzUwfFd5c2UgMzUwLAotCWFtLCBidywgaHMsIG1jNWksIG1pciwgeG9uLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBsaCMxLCBsaW5lcyMyNCwgbHcjOCwgbmN2IzU1LCBubGFiIzgsIHBhaXJzIzgsCi0Jd3NsIzQ1LCB4bWMjMSwKLQlhY3NjPTB3YV9oW2p1a3Nscm1xbnhxenR0dXl2XXdweHYsIGJlbD1eRywgYmxpbms9XEVHMiwKLQljYnQ9XEVJLCBjaXZpcz1cRWAwLCBjbGVhcj1cRSskPDIwPiwgY25vcm09XEVgMSwgY3I9Xk0sCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVyQ8MT4sCi0JZGltPVxFR3AsIGRsMT1cRVIsIGRzbD1cRUZcciwgZWQ9XEVZJDwyMD4sIGVsPVxFVCwKLQlmbGFzaD1cRWA4JDwxMDAvPlxFYDksIGZzbD1eTSwgaG9tZT1eXiwgaHQ9XkksIGh0cz1cRTEsCi0JaWwxPVxFRSwgaW5kPVxuJDwyPiwgaXA9JDwxPiwgaXMxPVxFYFw6XEVgOSQ8MzA+LAotCWlzMj1cMDE2XDAyNFxFJ1xFKCwgaXMzPVxFJT8sIGtIT009XEV7LCBrYnM9XkgsIGtjYnQ9XEVJLAotCWtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1cRVcsIGtkbDE9XEVSLAotCWtlZD1cRVksIGtlbD1cRVQsIGtlbnQ9XEU3LCBrZjE9XkFAXHIsIGtmMTA9XkFJXHIsCi0Ja2YxMT1eQUpcciwga2YxMj1eQUtcciwga2YxMz1eQUxcciwga2YxND1eQU1cciwga2YxNT1eQU5cciwKLQlrZjE2PV5BT1xyLCBrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsCi0Ja2Y2PV5BRVxyLCBrZjc9XkFGXHIsIGtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwKLQlraWNoMT1cRVEsIGtpbDE9XEVFLCBrbnA9XEVLLCBrcHA9XEVKLCBrcHJ0PVxFUCwga3JwbD1cRXIsCi0JbGw9Xl5eSywgbWMwPVxFUCwgbWM0PV5ULCBtYzU9XlgsIG5lbD1eTV5KLCBvYz1cRSU/LCBvcD1cRUcwLAotCXBmeD1cRXolcDElezYzfSUrJWMlcDIlc1wxNzcsCi0JcGxuPVxFeiVwMSV7NDd9JSslYyVwMiVzXHIsIHByb3Q9XEVHMFxFKSwgcmk9XEVqLAotCXJtYWNzPVxFRzBcRUhcMDAzLCBybWlyPVxFciwgcm1sbj1cRUExMSwgc2V0Yj0sCi0Jc2V0Zj0lPyVwMSV7MH0lPSV0JXs3Nn0lZSVwMSV7MX0lPSV0JXs2NH0lZSVwMSV7Mn0lPSV0JXs4fSVlJXAxJXszfSU9JXQlezcyfSVlJXAxJXs0fSU9JXQlezR9JWUlcDElezV9JT0ldCV7Njh9JWUlcDElezZ9JT0ldCV7MTJ9JWUlcDElezd9JT0ldCV7MH0lOyVQQ1xFRyVnQyVnQSUrJXs0OH0lKyVjLAotCXNncj0lezB9JT8lcDQldCV7Mn0lfCU7JT8lcDcldCV7MX0lfCU7JVBBXEVHJT8lZ0MldCVnQyVlJXswfSU/JXAxJXQlezR9JXwlOyU/JXAyJXQlezh9JXwlOyU/JXAzJXQlezR9JXwlOyU/JXA1JXQlezY0fSV8JTslOyVnQSUrJXs0OH0lKyVjJT8lcDgldFxFKSVlXEUoJTslPyVwOSV0XEVIXDAwMiVlXEVIXDAwMyU7LAotCXNncjA9XEVHMFxFKFxFSFwwMDMlezB9JVBBJXswfSVQQywgc21hY3M9XEVHMFxFSFwwMDIsCi0Jc21pcj1cRXEsIHNtbG49XEVBMTAsIHRiYz1cRTAsIHRzbD1cRUYsIHVzZT1hZG0rc2dyLAotd3kzNTAtdmJ8d3lzZTM1MC12Ynx3eXNlIDM1MCB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MzUwLAotd3kzNTAtd3x3eXNlMzUwLXd8d3lzZSAzNTAgMTMyLWNvbHVtbiwKLQljb2xzIzEzMiwgbHcjNywgbmxhYiMxNiwgd3NsIzk3LAotCWN1cD1cRWElaSVwMSVkUiVwMiVkQywgZGNoMT1cRVckPDI+LCBpczE9XEVgO1xFYDkkPDMwPiwKLQl1c2U9d3kzNTAsCi13eTM1MC13dmJ8d3lzZTM1MC13dmJ8d3lzZSAzNTAgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MzUwLXcsCi0jCi0jCVRoaXMgdGVybWluZm8gZGVzY3JpcHRpb24gaXMgdW50ZXN0ZWQuCi0jCVRoZSB3eXNlMTAwIGVtdWxhdGVzIGFuIGFkbTMxLCBzbyB0aGUgYWRtMzEgZW50cnkgc2hvdWxkIHdvcmsuCi0jCi13eTEwMHx3eXNlIDEwMCwKLQlocywgbWlyLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMSwKLQliZWw9XkcsIGNsZWFyPVxFOywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGNoMT1cRVcsCi0JZGwxPVxFUiwgZHNsPVxFQTMxLCBlZD1cRVksIGVsPVxFVCwgZnNsPV5NLCBpbDE9XEVFLCBpbmQ9XkosCi0JaW52aXNALCBpczI9XEV1XEUwLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtmMT1eQUBcciwga2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwKLQlrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtob21lPVxFeywKLQlybWlyPVxFciwgc21pcj1cRXEsIHRzbD1cRUYsIHVzZT1hZG0rc2dyLAotIwotIwlUaGUgV3lzZSAxMjAvMTUwIGhhcyBtb3N0IG9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgV3lzZSA2MC4KLSMJVGhpcyB0ZXJtaW5hbCBkb2VzIG5vdCBuZWVkIHBhZGRpbmcgdXAgdG8gOTYwMCBiYXVkIQotIwk8bXNncj4gc2hvdWxkIGJlIHNldCBidXQgdGhlIGNsZWFyIHNjcmVlbiBmYWlscyB3aGVuIGluCi0jCWFsdC1jaGFyc2V0IG1vZGUuICBUcnkgXEVjRVxzXHNcRStccyBpZiB0aGUgc2NyZWVuIGlzIHJlYWxseSBjbGVhcgotIwl0aGVuIHNldCA8bXNncj4uCi0jCi13eTEyMHx3eXNlMTIwfHd5MTUwfHd5c2UxNTB8V3lzZSAxMjAvMTUwLAotCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaCMxLCBsaW5lcyMyNCwgbHcjOCwgbmxhYiM4LCBwYiM5NjAxLCB3c2wjNDUsCi0JYWNzYz0rL1wsLjBbaWhhMmZ4Z3FoMWpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKLQliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8NTA+LAotCWNub3JtPVxFYDEsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXJDw3PiwKLQlkaW09XEVHcCwgZGwxPVxFUiQ8Mz4sIGRzbD1cRUZcciwgZWQ9XEVZJDw1MD4sIGVsPVxFVCQ8ND4sCi0JZmxhc2g9XEVgOCQ8MTAwLz5cRWA5LCBmc2w9Xk0sIGhvbWU9Xl4sIGh0PVwwMTEkPDE+LAotCWh0cz1cRTEsIGlsMT1cRUUkPDM+LCBpbmQ9XG4kPDM+LCBpcD0kPDI+LCBpczE9XEVjQjBcRWNDMSwKLQlpczI9XEVkJFxFY0RcRSdcRXJcRUhcMDAzXEVkL1xFT1xFZTFcRWQqXEVgQFxFYDlcRWAxXDAxNlwwMjRcRWwsCi0JaXMzPVxFd0pcRXcxJDwxNTA+LCBrSE9NPVxFeywga2JzPV5ILCBrY2J0PVxFSSwga2N1YjE9XkgsCi0Ja2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwga2VkPVxFWSwKLQlrZWw9XEVULCBrZW50PVxFNywga2YxPV5BQFxyLCBrZjEwPV5BSVxyLCBrZjExPV5BSlxyLAotCWtmMTI9XkFLXHIsIGtmMTM9XkFMXHIsIGtmMTQ9XkFNXHIsIGtmMTU9XkFOXHIsIGtmMTY9XkFPXHIsCi0Ja2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsCi0Ja2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sIGtpY2gxPVxFUSwKLQlraWwxPVxFRSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsIGtycGw9XEVyLCBsbD1eXl5LLAotCW1jMD1cRVAsIG1jND1eVCwgbWM1PVxFZCMsIG5lbD1cclxuJDwzPiwKLQlwZmxvYz1cRVoyJXAxJXs2M30lKyVjJXAyJXNcMTc3LAotCXBmeD1cRVoxJXAxJXs2M30lKyVjJXAyJXNcMTc3LAotCXBsbj1cRXolcDElezQ3fSUrJWMlcDIlc1xyLCBwcm90PVxFKSwgcmk9XEVqJDwyPiwKLQlybWFjcz1cRWNELCBybWFtPVxFZC4sIHJtY3VwPVxFdzEsIHJtaXI9XEVyLCBybWxuPVxFQTExLAotCXJteG9uPVxFYzIwLCByczE9XEV+IVxFfjQkPDMwPiwgcnMyPVxFZUZcRWBcOiQ8NzA+LAotCXJzMz1cRXdHXEVlKCQ8MTAwPiwKLQlzZ3I9JT8lcDgldFxFKSVlXEUoJTslPyVwOSV0XEVjRSVlXEVjRCU7XEVHJXs0OH0lPyVwMiV0JXs4fSV8JTslPyVwMSVwMyV8JXA2JXwldCV7NH0lfCU7JT8lcDQldCV7Mn0lfCU7JT8lcDElcDUlfCV0JXs2NH0lfCU7JT8lcDcldCV7MX0lfCU7JWMsCi0Jc2dyMD1cRShcRUhcMDAzXEVHMFxFY0QsIHNtYWNzPVxFY0UsIHNtYW09XEVkLywKLQlzbWN1cD1cRXcwLCBzbWlyPVxFcSwgc21sbj1cRUExMCwgc21zbz1cRUd0LCBzbXhvbj1cRWMyMSwKLQl0YmM9XEUwLCB0c2w9XEVGLCB1c2U9YWRtK3NnciwKLSMKLXd5MTIwLXd8d3lzZTEyMC13fHd5MTUwLXd8d3lzZTE1MC13fHd5c2UgMTIwLzE1MCAxMzItY29sdW1uLAotCWNvbHMjMTMyLCBsdyM3LCBubGFiIzE2LCB3c2wjOTcsCi0JY3VwPVxFYSVpJXAxJWRSJXAyJWRDLCBkY2gxPVxFVyQ8MTI+LCBpcD0kPDQ+LAotCXJzMj1cRWA7JDw3MD4sIHVzZT13eTEyMCwKLSMKLXd5MTIwLTI1fHd5c2UxMjAtMjV8d3kxNTAtMjV8d3lzZTE1MC0yNXx3eXNlIDEyMC8xNTAgODAtY29sdW1uIDI1LWxpbmVzLAotCWxoQCwgbGluZXMjMjUsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFd0dcRWUpJDwxMDA+LCB1c2U9d3kxMjAsCi0jCi13eTEyMC0yNS13fHd5c2UxMjAtMjUtd3x3eTE1MC0yNS13fHd5c2UxNTAtMjUtd3x3eXNlIDEyMC8xNTAgMTMyLWNvbHVtbiAyNS1saW5lcywKLQlsaEAsIGxpbmVzIzI1LCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRXdHXEVlKSQ8MTAwPiwgdXNlPXd5MTIwLXcsCi0jCi13eTEyMC12Ynx3eXNlMTIwLXZifHd5MTUwLXZifHd5c2UxNTAtdmJ8V3lzZSAxMjAvMTUwIHZpc2libGUgYmVsbCwKLQliZWxALCB1c2U9d3kxMjAsCi0jCi13eTEyMC13LXZifHd5MTIwLXd2Ynx3eXNlMTIwLXd2Ynx3eTE1MC13LXZifHd5c2UxNTAtdy12YnxXeXNlIDEyMC8xNTAgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MTIwLXcsCi0jCi0jCVRoZSBXeXNlIDYwIGlzIGxpa2UgdGhlIFd5c2UgNTAgYnV0IHdpdGggbW9yZSBwYWRkaW5nLgotIwlUaGUgcmVzZXQgc3RyaW5ncyBhcmUgc2xvdyBhbmQgdGhlIHBhZCB0aW1lcyB2ZXJ5IGRlcGVuZGluZwotIwlvbiBvdGhlciBwYXJhbWV0ZXJzIHN1Y2ggYXMgZm9udCBsb2FkaW5nLiAgSSBoYXZlIHRyaWVkCi0jCXRvIGZvbGxvdyB0aGUgZm9sbG93aW5nIG91dGxpbmU6Ci0jCi0jCQk8cnMxPiAtPiBzZXQgcGVyc29uYWxpdHkKLSMJCTxyczI+IC0+IHNldCBudW1iZXIgb2YgY29sdW1ucwotIwkJPHJzMz4gLT4gc2V0IG51bWJlciBvZiBsaW5lcwotIwkJPGlzMT4gLT4gc2VsZWN0IHRoZSBwcm9wZXIgZm9udAotIwkJPGlzMj4gLT4gZG8gdGhlIGluaXRpYWxpemF0aW9uCi0jCQk8aXMzPiAtPiBzZXQgdXAgZGlzcGxheSBtZW1vcnkgKDIgcGFnZXMpCi0jCi0jCVRoZSBXeXNlIDYwJ3MgdGhhdCBoYXZlIHZ0MTAwIGVtdWxhdGlvbiBhcmUgc2xvd2VyIHRoYW4gdGhlCi0jCW9sZGVyIFd5c2UgNjAncy4gIFRoaXMgY2hhbmdlIGhhcHBlbmVkIG1pZC0xOTg3LgotIwlUaGUgY2FwYWJpbGl0aWVzIGVmZmVjdGVkIGFyZSA8ZGNoMT4gPGRsMT4gPGlsMT4gPGluZD4gPHJpPgotIwotIwlUaGUgbWV0YSBrZXkgaXMgb25seSBoYWxmIHJpZ2h0LiAgVGhpcyB0ZXJtaW5hbCB3aWxsIHJldHVybiB0aGUKLSMJaGlnaCBvcmRlciBiaXQgc2V0IHdoZW4geW91IGhpdCBDVFJMLWZ1bmN0aW9uX2tleQotIwotIwlJdCBtYXkgYmUgdXNlZnVsIHRvIGFzc2lnbiB0d28gZnVuY3Rpb24ga2V5cyB3aXRoIHRoZQotIwl2YWx1ZXMgIFxFPShccyAgbG9vayBhdCBvbGQgZGF0YSBpbiBwYWdlIDEKLSMJICAgICAgICBcRT1XLCAgIGxvb2sgYXQgYm90dG9tIG9mIHBhZ2UgMQotIwl3aGVyZSBccyBpcyBhIHNwYWNlICggKS4KLSMKLSMJTm90ZToKLSMJICAgVGhlIFd5c2UgNjAgcnVucyBmYXN0ZXIgd2hlbiB0aGUgWE9OL1hPRkYKLSMJICAgaGFuZHNoYWtlIGlzIHR1cm5lZCBvZmYuCi0jCi0jICh3eTYwOiB3ZSB1c2UgXEV7IHJhdGhlciB0aGFuIF5eIGZvciBob21lIChib3RoIGFyZSBkb2N1bWVudGVkKSB0byBhdm9pZAotIyBhIGJ1ZyByZXBvcnRlZCBieSBSb2JlcnQgRHVubiwgPHJjZGlpQGlubGluay5jb20+IC0tIGVzcikKLXd5NjB8d3lzZTYwfFd5c2UgNjAsCi0JYW0sIGJ3LCBocywga20sIG1jNWksIG1pciwgbXNnciwKLQljb2xzIzgwLCBsaCMxLCBsaW5lcyMyNCwgbHcjOCwgbmxhYiM4LCB3c2wjNDUsCi0JYWNzYz0rL1wsLjBbaWhhMmZ4Z3FoMWpZaz9sWm1AbkVxRHRDdTR2QXdCeDN5c3pye2N+fiwKLQliZWw9XkcsIGJsaW5rPVxFRzIsIGNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8MTAwPiwKLQljbm9ybT1cRWAxLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXJDwxMT4sIGRjbGs9XEVgYiwgZGltPVxFR3AsIGRsMT1cRVIkPDU+LCBkc2w9XEVGXHIsCi0JZWQ9XEVZJDwxMDA+LCBlbD1cRVQsIGZsYXNoPVxFYDgkPDEwMC8+XEVgOSwgZnNsPV5NLAotCWhvbWU9XEV7LCBodD1cMDExJDwxPiwgaHRzPVxFMSwgaWwxPVxFRSQ8ND4sIGluZD1cbiQ8NT4sCi0JaXA9JDwzPiwgaXMxPVxFY0IwXEVjQzEsCi0JaXMyPVxFZCRcRWNEXEUnXEVyXEVIXDAwM1xFZC9cRU9cRWUxXEVkKlxFYEBcRWA5XEVgMVwwMTZcMDI0XEVsLAotCWlzMz1cRXdKXEV3MSQ8MTUwPiwga0hPTT1cRXssIGticz1eSCwga2NidD1cRUksIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtkY2gxPVxFVywga2RsMT1cRVIsIGtlZD1cRVksCi0Ja2VsPVxFVCwga2VudD1cRTcsIGtmMT1eQUBcciwga2YxMD1eQUlcciwga2YxMT1eQUpcciwKLQlrZjEyPV5BS1xyLCBrZjEzPV5BTFxyLCBrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLCBrZjE2PV5BT1xyLAotCWtmMj1eQUFcciwga2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLAotCWtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtob21lPV5eLCBraWNoMT1cRVEsCi0Ja2lsMT1cRUUsIGtucD1cRUssIGtwcD1cRUosIGtwcnQ9XEVQLCBrcnBsPVxFciwgbGw9XEV7XkssCi0JbWMwPVxFUCwgbWM0PV5ULCBtYzU9XEVkIywgbmVsPVxyXG4kPDM+LAotCXBmbG9jPVxFWjIlcDElezYzfSUrJWMlcDIlc1wxNzcsCi0JcGZ4PVxFWjElcDElezYzfSUrJWMlcDIlc1wxNzcsCi0JcGxuPVxFeiVwMSV7NDd9JSslYyVwMiVzXHIsIHByb3Q9XEUpLCByaT1cRWokPDc+LAotCXJtYWNzPVxFY0QsIHJtYW09XEVkLiwgcm1jbGs9XEVgYywgcm1jdXA9XEV3MSwgcm1pcj1cRXIsCi0Jcm1sbj1cRUExMSwgcm14b249XEVjMjAsIHJzMT1cRX4hXEV+NCQ8MTUwPiwKLQlyczI9XEVlRyQ8MTUwPiwgcnMzPVxFd0dcRWUoJDwyMDA+LAotCXNncj0lPyVwOCV0XEUpJWVcRSglOyU/JXA5JXRcRWNFJWVcRWNEJTtcRUclezQ4fSU/JXAyJXQlezh9JXwlOyU/JXAxJXAzJXwlcDYlfCV0JXs0fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwMSVwNSV8JXQlezY0fSV8JTslPyVwNyV0JXsxfSV8JTslYywKLQlzZ3IwPVxFKFxFSFwwMDNcRUcwXEVjRCwgc21hY3M9XEVjRSwgc21hbT1cRWQvLAotCXNtY3VwPVxFdzAsIHNtaXI9XEVxLCBzbWxuPVxFQTEwLCBzbXNvPVxFR3QsIHNteG9uPVxFYzIxLAotCXRiYz1cRTAsIHRzbD1cRUYsIHVzZT1hZG0rc2dyLAotIwotd3k2MC13fHd5c2U2MC13fHd5c2UgNjAgMTMyLWNvbHVtbiwKLQljb2xzIzEzMiwgbHcjNywgbmxhYiMxNiwgd3NsIzk3LAotCWN1cD1cRWElaSVwMSVkUiVwMiVkQywgZGNoMT1cRVckPDE2PiwgaXA9JDw1PiwKLQlyczI9XEVlRiQ8MTUwPlxFYDskPDE1MD4sIHVzZT13eTYwLAotIwotd3k2MC0yNXx3eXNlNjAtMjV8d3lzZSA2MCA4MC1jb2x1bW4gMjUtbGluZXMsCi0JbGhALCBsaW5lcyMyNSwgbHdALCBubGFiQCwKLQlwbG5ALCByczM9XEV3R1xFZSkkPDIwMD4sIHVzZT13eTYwLAotd3k2MC0yNS13fHd5c2U2MC0yNS13fHd5c2UgNjAgMTMyLWNvbHVtbiAyNS1saW5lcywKLQlsaEAsIGxpbmVzIzI1LCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRXdHXEVlKSQ8MjAwPiwgdXNlPXd5NjAtdywKLSMKLXd5NjAtNDJ8d3lzZTYwLTQyfHd5c2UgNjAgODAtY29sdW1uIDQyLWxpbmVzLAotCWxpbmVzIzQyLAotCWNsZWFyPVxFKyQ8MjYwPiwgY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8Mj4sCi0JZGNoMT1cRVckPDE2PiwgZGwxPVxFUiQ8MTE+LCBlZD1cRXkkPDI2MD4sIGlsMT1cRUUkPDExPiwKLQlpbmQ9XG4kPDk+LCBpcD0kPDU+LCBpczE9XEVjQjJcRWNDMywgbmVsPVxyXG4kPDY+LAotCXJpPVxFaiQ8MTA+LCByczM9XEVlKiQ8MTUwPiwgdXNlPXd5NjAsCi13eTYwLTQyLXd8d3lzZTYwLTQyLXd8d3lzZSA2MCAxMzItY29sdW1uIDQyLWxpbmVzLAotCWNvbHMjMTMyLCBsdyM3LCBubGFiIzE2LCB3c2wjOTcsCi0JY2xlYXI9XEUrJDwyNjA+LCBjdXA9XEVhJWklcDElZFIlcDIlZEMkPDI+LAotCWRjaDE9XEVXJDwxOT4sIGVkPVxFeSQ8MjYwPiwgaG9tZT1cMDM2JDwyPiwgaXA9JDw2PiwKLQluZWw9XHJcbiQ8MTE+LCByczI9XEVlRiQ8MTUwPlxFYDskPDE1MD4sIHVzZT13eTYwLTQyLAotIwotd3k2MC00M3x3eXNlNjAtNDN8d3lzZSA2MCA4MC1jb2x1bW4gNDMtbGluZXMsCi0JbGhALCBsaW5lcyM0MywgbHdALCBubGFiQCwKLQlwbG5ALCByczM9XEVlKyQ8MTUwPiwgdXNlPXd5NjAtNDIsCi13eTYwLTQzLXd8d3lzZTYwLTQzLXd8d3lzZSA2MCAxMzItY29sdW1uIDQzLWxpbmVzLAotCWxoQCwgbGluZXMjNDMsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFZSskPDE1MD4sIHVzZT13eTYwLTQyLXcsCi0jCi13eTYwLXZifHd5c2U2MC12YnxXeXNlIDYwIHZpc2libGUgYmVsbCwKLQliZWxALCB1c2U9d3k2MCwKLXd5NjAtdy12Ynx3eTYwLXd2Ynx3eXNlNjAtd3ZifFd5c2UgNjAgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5NjAtdywKLQotIwlUaGUgV3lzZS05OUdUIGxvb2tzIGF0IGxvdCBsaWtlIHRoZSBXeXNlIDYwIGV4Y2VwdCB0aGF0IGl0Ci0jCWRvZXMgbm90IGhhdmUgdGhlIDQyLzQzIGxpbmUgbW9kZS4gIEluIHRoZSBXeXNlLTYwIHRoZSAibGluZXMiCi0jCXNldHVwIHBhcmFtZXRlciBjb250cm9scyB0aGUgbnVtYmVyIG9mIGxpbmVzIG9uIHRoZSBzY3JlZW4uCi0jCUZvciB0aGUgV3lzZSA5OUdUIHRoZSAibGluZXMiIHNldHVwIHBhcmFtZXRlciBjb250cm9scyB0aGUKLSMJbnVtYmVyIG9mIGxpbmVzIGluIGEgcGFnZS4gIFRoZSBzY3JlZW4gY2FuIGRpc3BsYXkgMjUgbGluZXMgbWF4LgotIwkgICAgVGhlIFd5c2UtOTlHVCBhbHNvIGhhcyBwZXJzb25hbGl0aWVzIGZvciB0aGUgVlQyMjAgYW5kCi0jCVRla3Ryb25peCA0MDE0LiAgQnV0IHRoaXMgaGFzIG5vIGJlYXJpbmcgb24gdGhlIG5hdGl2ZSBtb2RlLgotIwotIwkobXNncikgc2hvdWxkIGJlIHNldCBidXQgdGhlIGNsZWFyIHNjcmVlbiBmYWlscyB3aGVuIGluCi0jCWFsdC1jaGFyc2V0IG1vZGUuICBUcnkgXEVjRVxzXHNcRStccyBpZiB0aGUgc2NyZWVuIGlzIHJlYWxseSBjbGVhcgotIwl0aGVuIHNldCBtc2dyLCBlbHNlIHVzZSBtc2dyQC4KLSMKLSMJdTAgLT4gZW50ZXIgVGVrdHJvbml4IG1vZGUKLSMJdTEgLT4gZXhpdCBUZWt0cm9uaXggbW9kZQotIwotd3k5OWd0fHd5c2U5OWd0fFd5c2UgOTlndCwKLQltc2dyQCwKLQljbGVhcj1cRSskPDEzMD4sIGRjaDE9XEVXJDw3PiwgZGwxPVxFUiQ8ND4sIGVkPVxFeSQ8MTMwPiwKLQllbD1cRXQkPDU+LCBmbGFzaD1cRWA4JDwxMDAvPlxFYDksIGh0PVwwMTEkPDE+LAotCWlsMT1cRUUkPDQ+LCBpbmQ9XG4kPDQ+LCBpcD0kPDI+LCBpczM9XEV3MCQ8MjA+LCBuZWxALAotCXJpPVxFaiQ8Mz4sIHJtY3VwPVxFdzAsIHJzMj1cRWBcOiQ8MTUwPiwgc21jdXA9XEV3MSwKLQl1MD1cRX4+XEU4LCB1MT1cRVs0MmgsIHVzZT13eTYwLAotIwotd3k5OWd0LXd8d3lzZTk5Z3Qtd3x3eXNlIDk5Z3QgMTMyLWNvbHVtbiwKLQljb2xzIzEzMiwgbHcjNywgbmxhYiMxNiwgd3NsIzk3LAotCWNsZWFyPVxFKyQ8MTYwPiwgY3VwPVxFYSVpJXAxJWRSJXAyJWRDJDwyPiwKLQlkY2gxPVxFVyQ8OT4sIGVkPVxFeSQ8MTYwPiwgaXA9JDw0PiwgcnMyPVxFYDskPDE1MD4sCi0JdXNlPXd5OTlndCwKLSMKLXd5OTlndC0yNXx3eXNlOTlndC0yNXx3eXNlIDk5Z3QgODAtY29sdW1uIDI1LWxpbmVzLAotCWxoQCwgbGluZXMjMjUsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMyPVxFYFw6JDwxNTA+LCByczM9XEV3R1xFZSkkPDIwMD4sIHVzZT13eTk5Z3QsCi0jCi13eTk5Z3QtMjUtd3x3eXNlOTlndC0yNS13fHd5c2UgOTlndCAxMzItY29sdW1uIDI1LWxpbmVzLAotCWxoQCwgbGluZXMjMjUsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMyPVxFYDskPDE1MD4sIHVzZT13eTk5Z3QtdywKLSMKLXd5OTlndC12Ynx3eXNlOTlndC12YnxXeXNlIDk5Z3QgdmlzaWJsZSBiZWxsLAotCWJlbEAsIHVzZT13eTk5Z3QsCi0jCi13eTk5Z3Qtdy12Ynx3eTk5Z3Qtd3ZifHd5c2U5OWd0LXd2YnxXeXNlIDk5Z3QgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5OTlndC13LAotCi0jIENhbid0IHNldCB0YWJzISBPdGhlciBidWdzIChBTlNJIG1vZGUgb25seSk6Ci0jIC0gY2FuJ3QgcmVkZWZpbmUgZnVuY3Rpb24ga2V5cyAoYW55d2F5LCBrZXkgcmVkZWZpbml0aW9uIGluIEFOU0kgbW9kZQotIyAgIGlzIHRvbyBtdWNoIGNvbXBsZXggdG8gYmUgZGVzY3JpYmVkKTsKLSMgLSBtZXRhIGtleSBjYW4ndCBiZSBkZXNjcmliZWQgKHRoZSB0ZXJtaW5hbCBmb3JnZXRzIGl0IHdoZW4gcmVzZXQpOwotIyBUaGUgeG9uLXhvZmYgaGFuZHNoYWtpbmcgY2FuJ3QgYmUgZGlzYWJsZWQgd2hpbGUgaW4gYW5zaSBwZXJzb25hbGl0eSwgc28KLSMgZW1hY3MgY2FuJ3Qgd29yayBhdCBzcGVlZCBncmVhdGVyIHRoYW4gOTYwMCBiYXVkLiAgTm8gcGFkZGluZyBpcyBuZWVkZWQgYXQKLSMgdGhpcyBzcGVlZC4KLSMgICBkY2gxIGhhcyBiZWVuIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBpdCBjYXVzZXMgYW5ub3lpbmcgZ2xpdHRlcmluZyB3aGVuCi0jIHZpIGRlbGV0ZXMgb25lIGNoYXJhY3RlciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSB3aXRoIHRhYnMgaW4gaXQuCi0jICAgZGNoIG1ha2VzIHN5c2dlbigxTSkgaGF2ZSBhIGhvcnJpYmxlIGJlaGF2aW91ciB3aGVuIGRlbGV0aW5nCi0jIGEgc2NyZWVuIGFuZCBtYWtlcyBzY3JlZW4oMSkgYmVoYXZlIGJhZGx5LCBzbyBpdCBpcyBkaXNhYmxlZCB0b28uIFRoZSBuaWNlCi0jIHRoaW5nIGlzIHRoYXQgdmkgZ29lcyBjcmF6eSBpZiBzbWlyLXJtaXIgYXJlIHByZXNlbnQgYW5kIGJvdGggZGNoLWRjaDEgYXJlCi0jIG5vdCwgc28gc21pciBhbmQgcm1pciBhcmUgY29tbWVudGVkIG91dCBhcyB3ZWxsLgotIyBGcm9tOiBGcmFuY2VzY28gUG90b3J0aWAgPEYuUG90b3J0aUBjbnVjZS5jbnIuaXQ+LCAyNCBBdWcgMTk5OAotd3k5OS1hbnNpfFd5c2UgV1ktOTlHVCBpbiBhbnNpIG1vZGUgKGludCdsIFBDIGtleWJvYXJkKSwKLQlhbSwga20sIG1jNWksIG1pciwgbXNnciwgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwgdnQjMywKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcXFzc3R0dXV2dnd3eHh7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiQ8MjAwPiwgY25vcm09XEVbMzRoXEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWREJDwxPiwKLQljdWIxPVwwMTAkPDE+LCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFRCwKLQljdWY9XEVbJXAxJWRDJDwxPiwgY3VmMT1cRVtDJDwxPiwKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAotCWN2dmlzPVxFWzM0bFxFWz8yNWgsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKJDw4Kj4sIGVsPVxFW0skPDE+LCBlbDE9XEVbMUskPDE+LAotCWVuYWNzPVxFKTAsIGZsYXNoPVxFWz81aCQ8MzAvPlxFWz81bCwgaG9tZT1cRVtILAotCWhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwKLQlpbDE9XEVbTCwgaW5kPVxuJDwxPiwgaW52aXM9XEVbOG0sCi0JaXMyPVxFN1xFWzFyXEU4XEVbMjszOzQ7MTM7MjA7MzQ7Mzk7MzZsXEVbMTI7MTY7MzRoXEVbPzE7Mzs0OzU7MTA7MThsXEVbPzc7ODsyNWhcRT5cRVs/NVdcRShCXDAxN1xFWzRpLAotCWticz1eSCwga2NidD1cRVt6LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAotCWtjdXUxPVxFT0EsIGtmMT1cRU9QLCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTc9XEVbSywga2YxOD1cRVszMX4sIGtmMTk9XEVbMzJ+LCBrZjI9XEVPUSwKLQlrZjIwPVxFWzMzfiwga2YyMT1cRVszNH4sIGtmMjI9XEVbMzV+LCBrZjIzPVxFWzF+LAotCWtmMjQ9XEVbMn4sIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFW00sIGtmNj1cRVsxN34sCi0Ja2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwgbGw9XEVbMjRFLCBtYzA9XEVbPzE5aCwKLQltYzQ9XEVbNGksIG1jNT1cRVs1aSwgbmVsPVxFRSwgcHJvdD1cRVsxInEsIHJjPVxFOCwKLQlyZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLCBybWlyPVxFWzRsLAotCXJta3g9XEVbPzFsLCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCi0JcnMyPVxFWzYxInBcRVs0MGhcRVs/NmxcRVsxclxFWzI7Mzs0OzEzOzIwOzM0OzM5OzM2bFxFWzEyOzE2OzM0aFxFWz8xOzM7NDs1OzEwOzE4bFxFWz83Ozg7MjVoXEU+XEVbPzVXXEUoQlwwMTdcRVsyNEVcRVs0aSwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlTyV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNyV0OzglO21cRVslPyVwOCV0MSU7InElPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTdcRVsicSwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB2cGE9XEVbJWklcDElZGQsCi0KLSMgICBUaGlzIGlzIHRoZSBhbWVyaWNhbiB0ZXJtaW5hbC4gSGVyZSB0YWJzIHdvcmsgZmluZS4KLSMgRnJvbTogRnJhbmNlc2NvIFBvdG9ydGlgIDxGLlBvdG9ydGlAY251Y2UuY25yLml0PiwgMjQgQXVnIDE5OTgKLXd5OTlhLWFuc2l8V3lzZSBXWS05OUdUIGluIGFuc2kgbW9kZSAoVVMgUEMga2V5Ym9hcmQpLAotCWh0cz1cRUgsIGlzMz1cRVs/NWwsIHJzMz1cRVs/NWwsIHRiYz1cRVszZywgdXNlPXd5OTktYW5zaSwKLQotIyBUaGlzIHRlcm1pbmFsIChmaXJtd2FyZSB2ZXJzaW9uIDAyKSBoYXMgYSBsb3Qgb2YgYnVnczoKLSMgLSBjYW4ndCBzZXQgdGFiczsKLSMgLSBvdGhlciBidWdzIGluIEFOU0kgbW9kZXMgKHNlZSBhYm92ZSkuCi0jIFRoaXMgZGVzY3JpcHRpb24gZGlzYWJsZXMgaGFuZHNoYWtpbmcgd2hlbiB1c2luZyBjdXAuIFRoaXMgaXMgYmVjYXVzZQotIyBHTlUgZW1hY3MgZG9lc24ndCBsaWtlIFhvbi1Yb2ZmIGhhbmRzaGFraW5nLiBUaGlzIG1lYW5zIHRoZSB0ZXJtaW5hbAotIyBjYW5ub3QgYmUgdXNlZCBhdCBzcGVlZHMgZ3JlYXRlciB0aGFuIDk2MDAgYmF1ZCwgYmVjYXVzZSBhdCBncmVhdGVyCi0jIHNwZWVkcyBoYW5kc2hha2luZyBpcyBuZWVkZWQgZXZlbiBmb3IgY2hhcmFjdGVyIHNlbmRpbmcuIElmIHlvdSB1c2UKLSMgRFRSIGhhbmRzaGFraW5nLCB5b3UgY2FuIHVzZSBldmVuIGdyZWF0ZXIgc3BlZWRzLgotIyBGcm9tOiBGcmFuY2VzY28gUG90b3J0aWAgPEYuUG90b3J0aUBjbnVjZS5jbnIuaXQ+LCAyNCBBdWcgMTk5OAotd3k5OWZ8d3k5OWZndHx3eS05OWZndHxXeXNlIFdZLTk5R1QgKGludCdsIFBDIGtleWJvYXJkKSwKLQlhbSwgYncsIGhzLCBrbSwgbWM1aSwgbWlyLCBtc2dyLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsIHdzbCM0NiwKLQlhY3NjPSd4K3kud2l+X3ZqKGsnbCZtJW4pbzlxKnM4dC11LnZcLHcreD0sIGJlbD1eRywKLQlibGluaz1cRUcyLCBjYnQ9XEVJLCBjaXZpcz1cRWAwLCBjbGVhcj1cRSdcRShcMDMyLAotCWNub3JtPVxFYDRcRWAxLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRWosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywKLQljdnZpcz1cRWAyXEVgMSwgZGNoMT1cRVcsIGRpbT1cRUdwLCBkbDE9XEVSLCBkc2w9XEVGXHIsCi0JZWQ9XEVZJDw4Kj4sIGVsPVxFVCQ8OD4sIGVuYWNzPVxFY0AxSiQ8MjAwMD4sCi0JZmxhc2g9XEVcXjEkPDMwLz5cRVxeMCwgZnNsPV5NLCBob21lPV5eLCBodD1eSSwgaWwxPVxFRSwKLQlpbmQ9XkosIGludmlzPVxFRzMsCi0JaXMyPVxFdVxFZTZcRUNcRURGXEVjMjFcRWMzMVxFYzYyXEVjNzJcRWU7XDAxNlxFJ1xFZUxcRWA5XEVcXjBcRWAxXEVgNFxFZS5cRWBcOlxFZTFcRUcwXEUoXEVkL1xFZTRcRWQqXEVPXEVgSVxFclxFZSJcRWNEXDAyNCwKLQlrYTE9Xl4sIGthMz1cRUosIGticz1eSCwga2MxPVxFVCwga2MzPVxFSywga2NidD1cRUksIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtmMT1eQUBcciwga2YxMD1eQUlcciwKLQlrZjExPV5BSlxyLCBrZjEyPV5BS1xyLCBrZjEzPV5BYFxyLCBrZjE0PV5BYVxyLCBrZjE1PV5BYlxyLAotCWtmMTY9XkFjXHIsIGtmMTc9XkFkXHIsIGtmMTg9XkFlXHIsIGtmMTk9XkFmXHIsIGtmMj1eQUFcciwKLQlrZjIwPV5BZ1xyLCBrZjIxPV5BaFxyLCBrZjIyPV5BaVxyLCBrZjIzPV5BalxyLCBrZjI0PV5Ba1xyLAotCWtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwga2Y3PV5BRlxyLAotCWtmOD1eQUdcciwga2Y5PV5BSFxyLCBrcHJ0PVxFUCwgbWMwPVxFUCwgbWM0PV5ULCBtYzU9XEVkIywKLQluZWw9Xl8sIHByb3Q9XEUpLCByZXY9XEVHNCwgcmk9XEVqLCBybWFjcz1cRWNELCBybWFtPVxFZC4sCi0Jcm1jdXA9XEVjMjFcRWMzMSwgcm1pcj1cRXIsIHJtc289XEVHMCwgcm14b249XEVjMjBcRWMzMCwKLQlyczI9XEV1XEV+NFxFZTZcRUNcRURGXEVjMjFcRWMzMVxFYzYyXEVjNzJcRWU7XDAxNlxFJ1xFZUxcRWA5XEVcXjBcRWAxXEVgNFxFZS5cRWBcOlxFZSlcRXdcRXdHXEV3MFxFZTFcRUcwXEUoXEVkL1xFZTRcRWQqXEVPXEVgSVxFclxFZSJcRWNAMEJcRWNEXDAyNCwKLQlzZ3I9XEUoXEVHJXs0OH0lPyVwMSVwMyVPJXQlezR9JSslOyU/JXAyJXQlezh9JSslOyU/JXA0JXQlezJ9JSslOyU/JXA1JXQlezY0fSUrJTslPyVwNyV0JXsxfSUrJTslYyU/JXA4JXRcRSklOyU/JXA5JXRcRWNFJWVcRWNEJTssCi0Jc2dyMD1cRShcRUcwLCBzbWFjcz1cRWNFLCBzbWFtPVxFZC8sIHNtY3VwPVxFYzIwXEVjMzAsCi0Jc21pcj1cRXEsIHNtc289XEVHNCwgc214b249XEVjMjFcRWMzMSwgdHNsPVxFRiwKLQotIyBUaGlzIGlzIHRoZSBhbWVyaWNhbiB0ZXJtaW5hbC4gSGVyZSB0YWJzIHdvcmsuCi0jIEZyb206IEZyYW5jZXNjbyBQb3RvcnRpYCA8Ri5Qb3RvcnRpQGNudWNlLmNuci5pdD4sIDI0IEF1ZyAxOTk4Ci13eTk5ZmF8d3k5OWZndGF8d3ktOTlmZ3RhfFd5c2UgV1ktOTlHVCAoVVMgUEMga2V5Ym9hcmQpLAotCWh0cz1cRTEsIHRiYz1cRTAsIHVzZT13eTk5ZiwKLQotIwotIwlUaGUgV3lzZSAxNjAgaXMgY29tYmluYXRpb24gb2YgdGhlIFdZLTYwIGFuZCB0aGUgV1ktOTlndC4KLSMJVGhlIHJlc2V0IHN0cmluZ3MgYXJlIHNsb3cgYW5kIHRoZSBwYWQgdGltZXMgdmVyeSBkZXBlbmRpbmcKLSMJb24gb3RoZXIgcGFyYW1ldGVycyBzdWNoIGFzIGZvbnQgbG9hZGluZy4gIEkgaGF2ZSB0cmllZAotIwl0byBmb2xsb3cgdGhlIGZvbGxvd2luZyBvdXRsaW5lOgotIwotIwkJPHJzMT4gLT4gc2V0IHBlcnNvbmFsaXR5Ci0jCQk8cnMyPiAtPiBzZXQgbnVtYmVyIG9mIGNvbHVtbnMKLSMJCTxyczM+IC0+IHNldCBudW1iZXIgb2YgbGluZXMKLSMJCTxpczE+IC0+IHNlbGVjdCB0aGUgcHJvcGVyIGZvbnQKLSMJCTxpczI+IC0+IGRvIHRoZSBpbml0aWFsaXphdGlvbgotIwkJPGlzMz4gLT4gc2V0IHVwIGRpc3BsYXkgbWVtb3J5ICgyIHBhZ2VzKQotIwotIwlUaGUgZGlzcGxheSBtZW1vcnkgbWF5IGJlIHVzZWQgZm9yIGVpdGhlciB0ZXh0IG9yIGdyYXBoaWNzLgotIwlXaGVuICJEaXNwbGF5IE1lbW9yeSA9IFNoYXJlZCIgdGhlIHRlcm1pbmFsIHdpbGwgaGF2ZSBtb3JlIHBhZ2VzCi0jCWJ1dCBnYXJiYWdlIG1heSBiZSBsZWZ0IG9uIHRoZSBzY3JlZW4gd2hlbiB5b3Ugc3dpdGNoIGZyb20KLSMJZ3JhcGhpY3MgdG8gdGV4dC4gIElmICJEaXNwbGF5IE1lbW9yeSA9IFVuc2hhcmVkIiB0aGVuIHRoZQotIwl0ZXh0IGFyZWEgd2lsbCBiZSBvbmx5IG9uZSBwYWdlIGxvbmcuCi0jCi0jICh3eTE2MDogd2UgdXNlIFxFeyByYXRoZXIgdGhhbiBeXiBmb3IgaG9tZSAoYm90aCBhcmUgZG9jdW1lbnRlZCkgdG8gYXZvaWQKLSMgYSBidWcgcmVwb3J0ZWQgYnkgUm9iZXJ0IER1bm4sIDxyY2RpaUBpbmxpbmsuY29tPiAtLSBlc3IpCi13eTE2MHx3eXNlMTYwfFd5c2UgMTYwLAotCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzM4LAotCWFjc2M9Ky9cLC4wW2loYTJmeGdxaDFqWWs/bFptQG5FcUR0Q3U0dkF3QngzeXN6cntjfn4sCi0JYmVsPV5HLCBibGluaz1cRUcyLCBjYnQ9XEVJLCBjaXZpcz1cRWAwLCBjbGVhcj1cRSskPDMwPiwKLQljbm9ybT1cRWAxLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVyQ8NT4sCi0JZGNsaz1cRWBiLCBkaW09XEVHcCwgZGwxPVxFUiQ8MT4sIGRzbD1cRUZcciwgZWQ9XEVZJDwzMD4sCi0JZWw9XEVUJDw1PiwgZmxhc2g9XEVgOCQ8MTAwLz5cRWA5LCBmc2w9Xk0sIGhvbWU9XEV7LCBodD1eSSwKLQlodHM9XEUxLCBpbDE9XEVFJDwxPiwgaW5kPVxuJDwxPiwgaXA9JDwyPiwgaXMxPVxFY0IwXEVjQzEsCi0JaXMyPVxFZCRcRWNEXEUnXEVyXEVIXDAwM1xFZC9cRU9cRWUxXEVkKlxFYEBcRWA5XEVgMVwwMTZcMDI0XEVsLAotCWlzMz1cRXcwJDwxMDA+LCBrSE9NPVxFeywga2JzPV5ILCBrY2J0PVxFSSwga2N1YjE9XkgsCi0Ja2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwga2VkPVxFWSwKLQlrZWw9XEVULCBrZW50PVxFNywga2YxPV5BQFxyLCBrZjEwPV5BSVxyLCBrZjExPV5BSlxyLAotCWtmMTI9XkFLXHIsIGtmMTM9XkFMXHIsIGtmMTQ9XkFNXHIsIGtmMTU9XkFOXHIsIGtmMTY9XkFPXHIsCi0Ja2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsCi0Ja2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sIGtpY2gxPVxFUSwKLQlraWwxPVxFRSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsIGtycGw9XEVyLCBsbD1cRXteSywKLQltYzA9XEVQLCBtYzQ9XlQsIG1jNT1cRWQjLCBuZWw9XHJcbiQ8MT4sCi0JcGZsb2M9XEVaMiVwMSV7NjN9JSslYyVwMiVzXDE3NywKLQlwZng9XEVaMSVwMSV7NjN9JSslYyVwMiVzXDE3NywKLQlwbG49XEV6JXAxJXs0N30lKyVjJXAyJXNcciwgcHJvdD1cRSksIHJpPVxFaiQ8MT4sCi0Jcm1hY3M9XEVjRCwgcm1hbT1cRWQuLCBybWNsaz1cRWBjLCBybWN1cD1cRXcwLCBybWlyPVxFciwKLQlybWxuPVxFQTExLCBybXhvbj1cRWMyMCwgcnMxPVxFfiFcRX40JDw3MD4sCi0JcnMyPVxFYFw6JDwxMDA+LCByczM9XEV3R1xFZSgkPDE0MD4sCi0Jc2dyPSU/JXA4JXRcRSklZVxFKCU7JT8lcDkldFxFY0UlZVxFY0QlO1xFRyV7NDh9JT8lcDIldCV7OH0lfCU7JT8lcDElcDMlfCVwNiV8JXQlezR9JXwlOyU/JXA0JXQlezJ9JXwlOyU/JXAxJXA1JXwldCV7NjR9JXwlOyU/JXA3JXQlezF9JXwlOyVjLAotCXNncjA9XEUoXEVIXDAwM1xFRzBcRWNELCBzbWFjcz1cRWNFLCBzbWFtPVxFZC8sCi0Jc21jdXA9XEV3MSwgc21pcj1cRXEsIHNtbG49XEVBMTAsIHNtc289XEVHdCwgc214b249XEVjMjEsCi0JdGJjPVxFMCwgdHNsPVxFRiwgdXNlPWFkbStzZ3IsCi0jCi13eTE2MC13fHd5c2UxNjAtd3x3eXNlIDE2MCAxMzItY29sdW1uLAotCWNvbHMjMTMyLCBsdyM3LCBubGFiIzE2LCB3c2wjOTAsCi0JY3VwPVxFYSVpJXAxJWRSJXAyJWRDLCBkY2gxPVxFVyQ8OT4sCi0JcnMyPVxFZUYkPDE1MD5cRWA7JDwxNTA+LCB1c2U9d3kxNjAsCi0jCi13eTE2MC0yNXx3eXNlMTYwLTI1fHd5c2UgMTYwIDgwLWNvbHVtbiAyNS1saW5lcywKLQlsaEAsIGxpbmVzIzI1LCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRXdHXEVlKSQ8MjAwPiwgdXNlPXd5MTYwLAotd3kxNjAtMjUtd3x3eXNlMTYwLTI1LXd8d3lzZSAxNjAgMTMyLWNvbHVtbiAyNS1saW5lcywKLQlsaEAsIGxpbmVzIzI1LCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRXdHXEVlKSQ8MjAwPiwgdXNlPXd5MTYwLXcsCi0jCi13eTE2MC00Mnx3eXNlMTYwLTQyfHd5c2UgMTYwIDgwLWNvbHVtbiA0Mi1saW5lcywKLQlsaW5lcyM0MiwKLQljbGVhcj1cRSskPDUwPiwgZGwxPVxFUiQ8Mj4sIGVkPVxFeSQ8NTA+LCBpbDE9XEVFJDwyPiwKLQlpbmQ9XG4kPDI+LCBpczE9XEVjQjJcRWNDMywgbmVsPVxyXG4kPDI+LCByaT1cRWokPDI+LAotCXJzMz1cRWUqJDwxNTA+LCB1c2U9d3kxNjAsCi13eTE2MC00Mi13fHd5c2UxNjAtNDItd3x3eXNlIDE2MCAxMzItY29sdW1uIDQyLWxpbmVzLAotCWNvbHMjMTMyLCBsdyM3LCBubGFiIzE2LCB3c2wjOTAsCi0JY3VwPVxFYSVpJXAxJWRSJXAyJWRDLCBkY2gxPVxFVyQ8OD4sIGlwPSQ8Mz4sCi0JcnMyPVxFZUYkPDE1MD5cRWA7JDwxNTA+LCB1c2U9d3kxNjAtNDIsCi0jCi13eTE2MC00M3x3eXNlMTYwLTQzfHd5c2UgMTYwIDgwLWNvbHVtbiA0My1saW5lcywKLQlsaEAsIGxpbmVzIzQzLCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRWUrJDwxNTA+LCB1c2U9d3kxNjAtNDIsCi13eTE2MC00My13fHd5c2UxNjAtNDMtd3x3eXNlIDE2MCAxMzItY29sdW1uIDQzLWxpbmVzLAotCWxoQCwgbGluZXMjNDMsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFZSskPDE1MD4sIHVzZT13eTE2MC00Mi13LAotIwotd3kxNjAtdmJ8d3lzZTE2MC12YnxXeXNlIDE2MCB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MTYwLAotd3kxNjAtdy12Ynx3eTE2MC13dmJ8d3lzZTE2MC13dmJ8V3lzZSAxNjAgMTMyLWNvbHVtbiB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MTYwLXcsCi0jCi0jCVRoZSBXeXNlIDc1IGlzIGEgdnQxMDAgbG9va2FsaWtlIHdpdGhvdXQgYWR2YW5jZWQgdmlkZW8uCi0jCi0jCSAgIFRoZSBXeXNlIDc1IGNhbiBzdXBwb3J0IG9uZSBhdHRyaWJ1dGUgKGUuZy4gRGltLCBJbnZlcnNlLAotIwlVbmRlcmxpbmUpIHdpdGhvdXQgbWFnaWMgY29va2llcy4gIFRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24KLSMJdXNlcyB0aGlzIGNhcGFiaWxpdHksIGJ1dCB3aGVuIG1vcmUgdGhhbiBvbmUgYXR0cmlidXRlIGlzCi0jCXB1dCBvbiB0aGUgc2NyZWVuIGF0IG9uY2UsIGFsbCBhdHRyaWJ1dGVzIHdpbGwgYmUgY2hhbmdlZAotIwl0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdCBhdHRyaWJ1dGUgZ2l2ZW4uCi0jCSAgIFRoZSBXeXNlIDc1IGNhbiBzdXBwb3J0IG1vcmUgYXR0cmlidXRlcyB3aGVuIHVzZWQgd2l0aCBtYWdpYwotIwljb29raWVzLiAgVGhlIHd5NzUtbWMgdGVybWluYWwgZGVzY3JpcHRpb24gdXNlcyBtYWdpYyBjb29raWVzCi0jCXRvIGNvcnJlY3RseSBoYW5kbGUgbXVsdGlwbGUgYXR0cmlidXRlcyBvbiBhIHNjcmVlbi4KLSMKLXd5NzV8d3lzZTc1fHd5c2UgNzUsCi0JYW0sIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbWEjMSwgcGIjMTIwMSwgd3NsIzc4LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwgY2xlYXI9XEVbSFxFW0okPDMwPiwKLQljbm9ybT1cRVs/MjVoLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyJDwyPiwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCQ8Myo+LAotCWRjaDE9XEVbUCQ8Mz4sIGRpbT1cRVswdFxFWzJtLCBkbD1cRVslcDElZE0kPDEqPiwKLQlkbDE9XEVbTSwgZHNsPVxFWz5cLFwwMDFcMDAxXEVbPi1cMDAxXDAwMSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKJDwzMD4sIGVsPVxFW0skPDM+LCBlbDE9XEVbMUskPDM+LAotCWVuYWNzPVxFKTAsIGZsYXNoPVxFWzMwaFxFXCxcRVszMGwkPDI1MD4sIGZzbD1eQSwKLQlob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCQ8MSo+LCBpbD1cRVslcDElZEwkPDIqPiwgaWwxPVxFW0wkPDI+LAotCWluZD1cbiQ8Mj4sIGlwPSQ8MT4sCi0JaXMxPVxFWzI7NDsyMDszMGxcRVs/MTsxMGxcRVsxMmhcRVs/Nzs4OzI1aCwKLQlpczI9XEU+XEUoQlxFKTBcMDE3LCBpczM9XEVbbSwga2JzPV5ILCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkbDE9XEVbTSwga2VsPVxFW0ssCi0Ja2YxPVxFWz81aSwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwKLQlrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwKLQlrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LCBrZjI9XEVbPzNpLAotCWtmMjA9XEVbMzR+LCBrZjIxPVxFWzM1fiwga2YzPVxFWzJpLCBrZjQ9XEVbQCwga2Y1PVxFW00sCi0Ja2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ZuZD1cRVsxfiwKLQlraGxwPVxFWzI4fiwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwga2lsMT1cRVtMLCBrbnA9XEVbNn4sCi0Ja3BwPVxFWzV+LCBrcHJ0PVxFWz81aSwga3NsdD1cRVs0fiwgbWMwPVxFWzBpLCBtYzQ9XEVbNGksCi0JbWM1PVxFWzVpLCByYz1cRTgsIHJldj1cRVsxdFxFWzdtLCByaT1cRU0kPDI+LCBybWFjcz1eTywKLQlybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1reD1cRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMT1cRVsxM2xcRVszbFxFIXAsIHJzMj1cRVszNWhcRVs/M2wkPDgwPiwgcnMzPVxFWz81bCwKLQlzYz1cRTcsCi0Jc2dyPSU/JXA1JXRcRVswdCU7JT8lcDMlcDElfCV0XEVbMXQlOyU/JXAyJXRcRVsydCU7JT8lcDQldFxFWzN0JTslPyVwMSVwMiVwMyVwNCVwNSV8JXwlfCV8JXRcRVs3bSVlXEVbbSU7JT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21reD1cRVs/MWxcRVs/N2hcRT0sIHNtc289XEVbMXRcRVs3bSwgc211bD1cRVsydFxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFWz5cLFwwMDEsIHVzZT12dDIyMCtrZXlwYWQsCi0jCi0jCVRoaXMgdGVybWluYWwgZGVzY3JpcHRpb24gdXNlcyB0aGUgbm9uLWhpZGRlbiBhdHRyaWJ1dGUgbW9kZQotIwkod2l0aCBtYWdpYyBjb29raWUpLgotIwotd3k3NS1tY3x3eXNlNzUtbWN8d3lzZSA3NSB3aXRoIG1hZ2ljIGNvb2tpZXMsCi0JbXNnckAsCi0JbWFALCB4bWMjMSwKLQlibGluaz1cRVsycCwgZGltPVxFWzFwLCBpbnZpcz1cRVs0cCwgaXMzPVxFW21cRVtwLAotCXJldj1cRVsxNnAsIHJtYWNzPVxFWzBwXDAxNywgcm1zbz1cRVswcCwgcm11bD1cRVswcCwKLQlzZ3I9XEVbJXswfSU/JXAyJXA2JXwldCV7OH0lfCU7JT8lcDElcDMlfCVwNiV8JXQlezE2fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwMSVwNSV8JXQlezF9JXwlOyU/JXA3JXQlezR9JXwlOyVkcCU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVswcFwwMTcsIHNtYWNzPVxFWzBwXDAxNiwgc21zbz1cRVsxN3AsIHNtdWw9XEVbOHAsCi0JdXNlPXd5NzUsCi13eTc1LXZifHd5c2U3NS12Ynx3eXNlIDc1IHdpdGggdmlzaWJsZSBiZWxsLAotCXBiQCwKLQliZWxALCB1c2U9d3k3NSwKLXd5NzUtd3x3eXNlNzUtd3x3eXNlIDc1IGluIDEzMiBjb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgd3NsIzEzMCwKLQlyczI9XEVbMzVoXEVbPzNoJDw4MD4sIHVzZT13eTc1LAotd3k3NS13dmJ8d3lzZTc1LXd2Ynx3eXNlIDc1IHdpdGggdmlzaWJsZSBiZWxsIDEzMiBjb2x1bW5zLAotCXBiQCwKLQliZWxALCB1c2U9d3k3NS13LAotIwotIwlXeXNlIDg1IGVtdWxhdGluZyBhIHZ0MjIwIDcgYml0IG1vZGUuCi0jCQkyNCBsaW5lIHNjcmVlbiB3aXRoIHN0YXR1cyBsaW5lLgotIwotIwlUaGUgdnQyMjAgbW9kZSBwZXJtaXRzIG1vcmUgZnVuY3Rpb24ga2V5cyBidXQgaXQgd2lwZXMgb3V0Ci0jCXRoZSBlc2NhcGUga2V5LiAgSSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCA8ZjExPiBiZSBzZXQgdG8KLSMJZXNjYXBlIChlc2MpLgotIwlUaGUgdGVybWluYWwgbWF5IGhhdmUgdG8gYmUgc2V0IGZvciA4IGRhdGEgYml0cyBhbmQgMiBzdG9wCi0jCWJpdHMgZm9yIHRoZSBhcnJvdyBrZXlzIHRvIHdvcmsuCi0jCVRoZSBXeXNlIDg1IHJ1bnMgZmFzdGVyIHdpdGggWE9OL1hPRkYgZW5hYmxlZC4gIEFsc28gdGhlCi0jCTxkY2g+IGFuZCA8aWNoPiB3b3JrIGJlc3Qgd2hlbiBYT04vWE9GRiBpcyBzZXQuICA8aWNoPiBhbmQKLSMJPGRjaD4gbGVhdmUgdHJhc2ggb24gdGhlIHNjcmVlbiB3aGVuIHVzZWQgd2l0aG91dCBYT04vWE9GRi4KLSMKLXd5ODV8d3lzZTg1fHd5c2UgODUsCi0JYW0sIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0okPDExMD4sIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxPiwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAkPDMqPiwgZGNoMT1cRVtQJDwzPiwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSQ8Myo+LCBkbDE9XEVbTSQ8Mz4sIGRzbD1cRVs0MGwsCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiQ8MTEwPiwgZWw9XEVbSyQ8MT4sIGVsMT1cRVsxSywKLQllbmFjcz1cRSkwLCBmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwzMDA+LAotCWZzbD1cRVsxOzI0clxFOCwgaG9tZT1cRVtILCBodD1cMDExJDwxPiwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRAJDw0Kj4sIGlsPVxFWyVwMSVkTCQ8NSo+LCBpbDE9XEVbTCQ8NT4sCi0JaW5kPVxuJDwzPiwgaW52aXM9XEVbOG0sIGlwPSQ8Mz4sIGlzMT1cRVs2MjsxInBcRVs/NVcsCi0JaXMyPVxFWzI7NDsyMDszMGxcRVs/MTs0OzEwOzE2bFxFWzEyaFxFWz83Ozg7MjVoJDwxNj4sCi0JaXMzPVxFPlxFKEJcRSkwXDAxN1xFW20sIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2YxMD1cRVsyMX4sCi0Ja2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sCi0Ja2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sCi0Ja2YxOT1cRVszM34sIGtmMjA9XEVbMzR+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAotCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtmbmQ9XEVbMX4sIGtobHA9XEVbMjh+LAotCWtob21lPVxFWzI2fiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LAotCWtzbHQ9XEVbNH4sIGxmMT1QRjEsIGxmMj1QRjIsIGxmMz1QRjMsIGxmND1QRjQsIG1jMD1cRVswaSwKLQltYzQ9XEVbNGksIG1jNT1cRVs1aSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSQ8Mz4sCi0Jcm1hY3M9Xk8sIHJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFPiwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgcnMxPVxFWzEzbFxFWzNsXEUhcCwgcnMyPVxFWzM1aFxFWz8zbCQ8NzA+LAotCXJzMz1cRVs/NWwsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAyJXQ7NCU7JT8lcDMlcDElfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFsXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdHNsPVxFWzQwaFxFN1xFWzI1OyVpJXAxJWRILCB1c2U9dnQyMjAra2V5cGFkLAotIwotIwlXeXNlIDg1IHdpdGggdmlzdWFsIGJlbGwuCi13eTg1LXZifHd5c2U4NS12Ynx3eXNlIDg1IHdpdGggdmlzaWJsZSBiZWxsLAotCWJlbEAsIGZsYXNoPVxFWzMwaFxFXCxcRVszMGwkPDMwMD4sIHVzZT13eTg1LAotIwotIwlXeXNlIDg1IGluIDEzMi1jb2x1bW4gbW9kZS4KLXd5ODUtd3x3eXNlODUtd3x3eXNlIDg1IGluIDEzMi1jb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlyczI9XEVbMzVoXEVbPzNoJDw3MD4sIHVzZT13eTg1LAotIwotIwlXeXNlIDg1IGluIDEzMi1jb2x1bW4gbW9kZSB3aXRoIHZpc3VhbCBiZWxsLgotd3k4NS13dmJ8d3lzZTg1LXd2Ynx3eXNlIDg1IHdpdGggdmlzaWJsZSBiZWxsIDEzMi1jb2x1bW5zLAotCWJlbEAsIHVzZT13eTg1LXcsCi0KLSMgRnJvbTogS2V2aW4gVHVybmVyIDxrZXZpbnRAYXJhY25ldC5jb20+LCAxMiBKdWwgMTk5OAotIyBUaGlzIGNvcGVzIHdpdGggYW4gYXBwYXJlbnQgZmlybXdhcmUgYnVnIGluIHRoZSB3eTg1LiAgSGUgd3JpdGVzOgotIyAiV2hhdCBJIGRpZCB3YXMgY2hhbmdlIGxlYXZlIHRoZSB0ZXJtaW5hbCBjdXJzb3Iga2V5cyBzZXQgdG8gTm9ybWFsCi0jIChpbnN0ZWFkIG9mIGFwcGxpY2F0aW9uKSwgYW5kIGNoYW5nZSBcRVsgdG8gXDIzMyBmb3IgYWxsIHRoZSBrZXlzIGluCi0jIHRlcm1pbmZvLiBBdCBvbmUgcG9pbnQsIEkgZm91bmQgc29tZSByZWZlcmVuY2UgaW5kaWNhdGluZyB0aGF0IHRoaXMKLSMgdGVybWluYWwgYnVnIChub3Qgc2VuZGluZyBcRVspIHdhcyBhY2tub3dsZWRnZWQgYnkgV3lzZSAoc28gaXQncyBub3QganVzdAotIyBtZSksIGJ1dCBJIGNhbid0IGZpbmQgdGhhdCBhbmQgdGhlIHNlcnZlciB1bmRlciBteSBib29rbWFyayB0byAiV3lzZQotIyBUZWNobmljYWwiIGlzbid0IHJlc3BvbmRpbmcuICBTbyB0aGVyZSdzIHRoZSBxdWVzdGlvbiBvZiB3ZXRoZXIgdGhlIHd5ODUKLSMgdGVybWluZm8gc2hvdWxkIHJlZmxlY3QgdGhlIG1hbnVmYWN0dWVyJ3MgaW50ZW5kZWQgYmVoYXZpb3VyIG9mIHRoZSB0ZXJtaW5hbAotIyBvciB0aGUgYWN0dWFsLiIKLXd5ODUtOGJpdHx3eXNlODUtOGJpdHx3eXNlIDg1IGluIDgtYml0IG1vZGUsCi0JYW0sIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0okPDExMD4sIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxPiwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAkPDMqPiwgZGNoMT1cRVtQJDwzPiwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSQ8Myo+LCBkbDE9XEVbTSQ8Mz4sIGRzbD1cRVs0MGwsCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiQ8MTEwPiwgZWw9XEVbSyQ8MT4sIGVsMT1cRVsxSywKLQllbmFjcz1cRSkwLCBmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwzMDA+LAotCWZzbD1cRVsxOzI0clxFOCwgaG9tZT1cRVtILCBodD1cMDExJDwxPiwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRAJDw0Kj4sIGlsPVxFWyVwMSVkTCQ8NSo+LCBpbDE9XEVbTCQ8NT4sCi0JaW5kPVxuJDwzPiwgaW52aXM9XEVbOG0sIGlwPSQ8Mz4sIGlzMT1cRVs2MjsxInBcRVs/NVcsCi0JaXMyPVxFWzI7NDsyMDszMGxcRVs/MTs0OzEwOzE2bFxFWzEyaFxFWz83Ozg7MjVoJDwxNj4sCi0JaXMzPVxFPlxFKEJcRSkwXDAxN1xFW20sIGthMT1cRU93LCBrYTM9XEVPeSwga2IyPVxFT3UsCi0Ja2JzPV5ILCBrYzE9XEVPcSwga2MzPVxFT3MsIGtjdWIxPVwyMzNELCBrY3VkMT1cMjMzQiwKLQlrY3VmMT1cMjMzQywga2N1dTE9XDIzM0EsIGtkY2gxPVwyMzMzfiwga2VudD1cRU9NLAotCWtmMT1cRU9QLCBrZjEwPVwyMzMyMX4sIGtmMTE9XDIzMzIzfiwga2YxMj1cMjMzMjR+LAotCWtmMTM9XDIzMzI1fiwga2YxND1cMjMzMjZ+LCBrZjE1PVwyMzMyOH4sIGtmMTY9XDIzMzI5fiwKLQlrZjE3PVwyMzMzMX4sIGtmMTg9XDIzMzMyfiwga2YxOT1cMjMzMzN+LCBrZjI9XEVPUSwKLQlrZjIwPVwyMzMzNH4sIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y2PVwyMzMxN34sIGtmNz1cMjMzMTh+LAotCWtmOD1cMjMzMTl+LCBrZjk9XDIzMzIwfiwga2ZuZD1cMjMzMX4sIGtobHA9XDIzMzI4fiwKLQlraG9tZT1cMjMzMjZ+LCBraWNoMT1cMjMzMn4sIGtucD1cMjMzNn4sIGtwcD1cMjMzNX4sCi0Ja3NsdD1cMjMzNH4sIGxmMT1QRjEsIGxmMj1QRjIsIGxmMz1QRjMsIGxmND1QRjQsIG1jMD1cRVswaSwKLQltYzQ9XEVbNGksIG1jNT1cRVs1aSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSQ8Mz4sCi0Jcm1hY3M9Xk8sIHJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFPiwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgcnMxPVxFWzEzbFxFWzNsXEUhcCwgcnMyPVxFWzM1aFxFWz8zbCQ8NzA+LAotCXJzMz1cRVs/NWwsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAyJXQ7NCU7JT8lcDMlcDElfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7K20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFWz8xbFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXRzbD1cRVs0MGhcRTdcRVsyNTslaSVwMSVkSCwKLSMKLSMJV3lzZSAxODUgZW11bGF0aW5nIGEgdnQzMjAgNyBiaXQgbW9kZS4KLSMKLSMJVGhpcyB0ZXJtaW5hbCBhbHdheXMgZGlzcGxheXMgMjUgbGluZXMuICBUaGVzZSBsaW5lcyBtYXkgYmUgdXNlZAotIwlhcyAyNCBkYXRhIGxpbmVzIGFuZCBhIHRlcm1pbmFsIHN0YXR1cyBsaW5lICh0b3Agb3IgYm90dG9tKSBvcgotIwkyNSBkYXRhIGxpbmVzLiAgVGhlIDQ4IGFuZCA1MCBsaW5lIG1vZGVzIGNoYW5nZSB0aGUgcGFnZSBzaXplCi0jCWFuZCBub3QgdGhlIG51bWJlciBvZiBsaW5lcyBvbiB0aGUgc2NyZWVuLgotIwotIwlUaGUgQ29tcG9zZSBDaGFyYWN0ZXIga2V5IGNhbiBiZSB1c2VkIGFzIGEgbWV0YSBrZXkgaWYgY2hhbmdlZAotIwlieSBzZXQtdXAuCi0jCi13eTE4NXx3eXNlMTg1fHd5c2UgMTg1LAotCWFtLCBocywga20sIG1jNWksIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiQ8NDA+LCBjbm9ybT1cRVszNGhcRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIkPDIwPiwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzI1aFxFWzM0bCwgZGNoPVxFWyVwMSVkUCQ8Mz4sIGRjaDE9XEVbUCQ8Mz4sCi0JZGltPVxFWzJtLCBkbD1cRVslcDElZE0kPDIqPiwgZGwxPVxFW00kPDI+LAotCWRzbD1cRTdcRVs5OTswSFxFW0tcRTgsIGVjaD1cRVslcDElZFgsIGVkPVxFW0okPDQwPiwKLQllbD1cRVtLLCBlbDE9XEVbMUssIGVuYWNzPVxFKTAsCi0JZmxhc2g9XEVbMzBoXEVcLFxFWzMwbCQ8MTAwPiwgZnNsPVxFWzE7MjRyXEU4LAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRgLCBodD1eSSwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRAJDwyPiwgaWw9XEVbJXAxJWRMJDwzKj4sIGlsMT1cRVtMJDwzPiwKLQlpbmQ9XG4kPDI+LCBpbnZpcz1cRVs4bSwgaXA9JDw0PiwgaXMxPVxFWz81VywKLQlpczI9XEVbMjs0OzIwOzMwbFxFWz8xOzQ7MTA7MTZsXEVbMTJoXEVbPzc7ODsyNWgsCi0JaXMzPVxFPlxFKEJcRSkwXDAxN1xFW20sIGticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFWzN+LCBrZjE9XEVPUCwKLQlrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwKLQlrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwKLQlrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMj1cRU9RLCBrZjIwPVxFWzM0fiwga2YzPVxFT1IsCi0Ja2Y0PVxFT1MsIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2ZuZD1cRVsxfiwga2hscD1cRVsyOH4sIGtob21lPVxFWzI2fiwga2ljaDE9XEVbMn4sCi0Ja25wPVxFWzZ+LCBrcHA9XEVbNX4sIGtzbHQ9XEVbNH4sIGxmMT1QRjEsIGxmMj1QRjIsIGxmMz1QRjMsCi0JbGY0PVBGNCwgbWMwPVxFWzBpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgcmM9XEU4LCByZXY9XEVbN20sCi0Jcmk9XEVNJDwyPiwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLCBybWN1cD1cRVsgUiwgcm1pcj1cRVs0bCwKLQlybWt4PVxFPiwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRVsxM2xcRVszbFxFXFxcRVs2MzsxInBcRVshcCwgcnMyPVxFWzM1aFxFWz8zbCwKLQlyczM9XEVbPzVsXEVbNDdoXEVbNDBsXEVbciwgc2M9XEU3LAotCXNncj1cRVswJT8lcDIldDs0JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtY3VwPVxFWyBRLAotCXNtaXI9XEVbNGgsIHNta3g9XEVbPzFsXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFN1xFWzk5OyVpJXAxJWRILCB2cGE9XEVbJWklcDElZGQsCi0JdXNlPXZ0MjIwK2tleXBhZCwKLSMKLSMJV3lzZSAxODUgd2l0aCAyNCBkYXRhIGxpbmVzIGFuZCB0b3Agc3RhdHVzICh0ZXJtaW5hbCBzdGF0dXMpCi13eTE4NS0yNHx3eXNlMTg1LTI0fHd5c2UgMTg1IHdpdGggMjQgZGF0YSBsaW5lcywKLQloc0AsCi0JZHNsQCwgZnNsQCwgcnMzPVxFWz81bFxFWzQ3aFxFWzQwbFxFWzE7MjRyLCB0c2xALAotCXVzZT13eTE4NSwKLSMKLSMJV3lzZSAxODUgd2l0aCB2aXN1YWwgYmVsbC4KLXd5MTg1LXZifHd5c2UxODUtdmJ8d3lzZSAxODUrZmxhc2gsCi0JYmVsQCwgdXNlPXd5MTg1LAotIwotIwlXeXNlIDE4NSBpbiAxMzItY29sdW1uIG1vZGUuCi13eTE4NS13fHd5c2UxODUtd3x3eXNlIDE4NSBpbiAxMzItY29sdW1uIG1vZGUsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JZGNoPVxFWyVwMSVkUCQ8Nz4sIGRjaDE9XEVbUCQ8Nz4sIGljaD1cRVslcDElZEAkPDc+LAotCWlwPSQ8Nz4sIHJzMj1cRVszNWhcRVs/M2gsIHVzZT13eTE4NSwKLSMKLSMJV3lzZSAxODUgaW4gMTMyLWNvbHVtbiBtb2RlIHdpdGggdmlzdWFsIGJlbGwuCi13eTE4NS13dmJ8d3lzZTE4NS13dmJ8d3lzZSAxODUrZmxhc2grMTMyIGNvbHMsCi0JYmVsQCwgdXNlPXd5MTg1LXcsCi0KLSMgd3kzMjUgdGVybWluZm8gZW50cmllcwotIyBEb25lIGJ5IEpvZSBILiBEYXZpcyAgICAgICAgMy05LTkyCi0KLSMgbGluZXMgMjUgIGNvbHVtbnMgODAKLSMKLXd5MzI1fHd5c2UzMjV8V3lzZSBlcGMsCi0JYW0sIGJ3LCBocywgbWM1aSwgbWlyLAotCWNvbHMjODAsIGxoIzEsIGxpbmVzIzI0LCBsdyM4LCBubGFiIzgsIHBiIzk2MDEsIHdzbCM0NSwKLQlhY3NjPSsvXCwuMFtpaGEyZnhncWgxallrP2xabUBuRXFEdEN1NHZBd0J4M3lzenJ7Y35+LAotCWJlbD1eRywgYmxpbms9XEVHMiwgY2J0PVxFSSwgY2l2aXM9XEVgMCwgY2xlYXI9XEUrJDw1MD4sCi0JY25vcm09XEVgMSwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGNoMT1cRVckPDc+LAotCWRpbT1cRUdwLCBkbDE9XEVSJDwzPiwgZHNsPVxFRlxyLCBlZD1cRVkkPDUwPiwgZWw9XEVUJDw0PiwKLQlmbGFzaD1cRWA4JDwxMDAvPlxFYDksIGZzbD1eTSwgaG9tZT1eXiwgaHQ9XkksIGh0cz1cRTEsCi0JaWwxPVxFRSQ8Mz4sIGluZD1cbiQ8Mz4sIGlwPSQ8Mj4sIGlzMT1cRWNCMFxFY0MxLAotCWlzMj1cRWNEXEUnXEVyXEVIXDAwM1xFZC9cRU9cRWUxXEVkKlxFYEBcRWA5XEVgMVwwMTZcMDI0XEVsLAotCWlzMz1cRXcwJDwxNj4sIGtIT009XEV7LCBrYnM9XkgsIGtjYnQ9XEVJLCBrY3ViMT1eSCwKLQlrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1cRVcsIGtkbDE9XEVSLCBrZWQ9XEVZLAotCWtlbD1cRVQsIGtlbnQ9XEU3LCBrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMTE9XkFKXHIsCi0Ja2YxMj1eQUtcciwga2YxMz1eQUxcciwga2YxND1eQU1cciwga2YxNT1eQU5cciwga2YxNj1eQU9cciwKLQlrZjI9XkFBXHIsIGtmMz1eQUJcciwga2Y0PV5BQ1xyLCBrZjU9XkFEXHIsIGtmNj1eQUVcciwKLQlrZjc9XkFGXHIsIGtmOD1eQUdcciwga2Y5PV5BSFxyLCBraG9tZT1eXiwga2ljaDE9XEVxLAotCWtpbDE9XEVFLCBrbnA9XEVLLCBrcHA9XEVKLCBrcHJ0PVxFUCwga3JwbD1cRXIsIGxsPV5eXkssCi0JbWMwPVxFUCwgbWM0PV5ULCBtYzU9XEVkIywKLQlwZmxvYz1cRVoyJXAxJXs2M30lKyVjJXAyJXNcMTc3LAotCXBmeD1cRVoxJXAxJXs2M30lKyVjJXAyJXNcMTc3LAotCXBsbj1cRXolcDElezQ3fSUrJWMlcDIlc1xyLCBwcm90PVxFKSwgcmk9XEVqJDwyPiwKLQlybWFjcz1cRWNELCBybWFtPVxFZC4sIHJtY3VwPVxFdzAsIHJtaXI9XEVyLCBybWxuPVxFQTExLAotCXJzMT1cRX4hXEV+NCQ8MzA+LCByczI9XEVlRlxFYFw6JDw3MD4sCi0JcnMzPVxFd0dcRWUoJDwxMDA+LAotCXNncj0lPyVwOCV0XEUpJWVcRSglOyU/JXA5JXRcRWNFJWVcRWNEJTtcRUclezQ4fSU/JXAyJXQlezh9JXwlOyU/JXAxJXAzJXwlcDYlfCV0JXs0fSV8JTslPyVwNCV0JXsyfSV8JTslPyVwMSVwNSV8JXQlezY0fSV8JTslPyVwNyV0JXsxfSV8JTslYywKLQlzZ3IwPVxFKFxFSFwwMDNcRUcwXEVjRCwgc21hY3M9XEVjRSwgc21hbT1cRWQvLAotCXNtY3VwPVxFdzEsIHNtaXI9XEVxLCBzbWxuPVxFQTEwLCBzbXNvPVxFR3QsIHRiYz1cRTAsCi0JdHNsPVxFRiwgdXNlPWFkbStzZ3IsCi0KLSMKLSMgbGluZXMgMjQgIGNvbHVtbnMgODAgIHZiCi0jCi13eTMyNS12Ynx3eXNlMzI1LXZifHd5c2UtMzI1IHdpdGggdmlzdWFsIGJlbGwsCi0JYmVsQCwgdXNlPXd5MzI1LAotCi0jCi0jIGxpbmVzIDI0ICBjb2x1bW5zIDEzMgotIwotd3kzMjUtd3x3eXNlMzI1LXd8d3kzMjV3LTI0fHd5c2UtMzI1IGluIHdpZGUgbW9kZSwKLQljb2xzIzEzMiwgbHcjNywgbmxhYiMxNiwgd3NsIzk3LAotCWN1cD1cRWElaSVwMSVkUiVwMiVkQywgZGNoMT1cRVckPDEyPiwgaXA9JDw0PiwKLQlyczI9XEVgOyQ8NzA+LCB1c2U9d3kzMjUsCi0jCi0jIGxpbmVzIDI1ICBjb2x1bW5zIDgwCi0jCi13eTMyNS0yNXx3eXNlMzI1LTI1fHd5MzI1LTgwfHd5c2UtMzI1fHd5c2UtMzI1IDI1IGxpbmVzLAotCWxoQCwgbGluZXMjMjUsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFd0dcRWUpJDwxMDA+LCB1c2U9d3kzMjUsCi0jCi0jIGxpbmVzIDI1ICBjb2x1bW5zIDEzMgotIwotd3kzMjUtMjV3fHd5c2UzMjUtMjV3fHd5MzI1IDEzMiBjb2x1bW5zLAotCWxoQCwgbGluZXMjMjUsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFd0dcRWUpJDwxMDA+LCB1c2U9d3kzMjUtdywKLSMKLSMgbGluZXMgMjUgIGNvbHVtbnMgMTMyICB2YgotIwotd3kzMjUtdy12Ynx3eTMyNS13dmJ8d3lzZTMyNS13dmJ8d3lzZS0zMjUgd2lkZSBtb2RlIHJldmVyc2UgdmlkZW8sCi0JYmVsQCwgdXNlPXd5MzI1LXcsCi0KLSMKLSMgbGluZXMgNDIgIGNvbHVtbnMgODAKLSMKLXd5MzI1LTQyfHd5c2UzMjUtNDJ8d3lzZS0zMjUgNDIgbGluZXMsCi0JbGhALCBsaW5lcyM0MiwgbHdALCBubGFiQCwKLQlwbG5ALCByczM9XEV3R1xFZSkkPDEwMD4sIHVzZT13eTMyNSwKLSMKLSMgbGluZXMgNDIgIGNvbHVtbnMgMTMyCi0jCi13eTMyNS00Mnd8d3lzZTMyNS00Mnd8d3lzZS0zMjUgNDIgbGluZXMgd2lkZSBtb2RlLAotCWxoQCwgbGluZXMjNDIsIGx3QCwgbmxhYkAsCi0JcGxuQCwgcnMzPVxFd0dcRWUpJDwxMDA+LCB1c2U9d3kzMjUtdywKLSMKLSMgbGluZXMgNDIgIGNvbHVtbnMgMTMyICB2YgotIwotd3kzMjUtNDJ3LXZifHd5MzI1LTQyd3ZifHd5c2UtMzI1IDQyIGxpbmVzIHdpZGUgbW9kZSB2aXN1YWwgYmVsbCwKLQliZWxALCB1c2U9d3kzMjUtdywKLSMKLSMgbGluZXMgNDMgIGNvbHVtbnMgODAKLSMKLXd5MzI1LTQzfHd5c2UzMjUtNDN8d3lzZS0zMjUgNDMgbGluZXMsCi0JbGhALCBsaW5lcyM0MywgbHdALCBubGFiQCwKLQlwbG5ALCB1c2U9d3kzMjUsCi0jCi0jIGxpbmVzIDQzICBjb2x1bW5zIDEzMgotIwotd3kzMjUtNDN3fHd5c2UzMjUtNDN3fHd5c2UtMzI1IDQzIGxpbmVzIHdpZGUgbW9kZSwKLQlsaEAsIGxpbmVzIzQzLCBsd0AsIG5sYWJALAotCXBsbkAsIHJzMz1cRXdHXEVlKSQ8MTAwPiwgdXNlPXd5MzI1LXcsCi0jCi0jIGxpbmVzIDQzICBjb2x1bW5zIDEzMiAgdmIKLSMKLXd5MzI1LTQzdy12Ynx3eTMyNS00M3d2Ynx3eXNlLTMyNSA0MyBsaW5lcyB3aWRlIG1vZGUgdmlzdWFsIGJlbGwsCi0JYmVsQCwgdXNlPXd5MzI1LXcsCi0KLSMJV3lzZSAzNzAgLS0gMjQgbGluZSBzY3JlZW4gd2l0aCBzdGF0dXMgbGluZS4KLSMKLSMJVGhlIHRlcm1pbmFsIG1heSBoYXZlIHRvIGJlIHNldCBmb3IgOCBkYXRhIGJpdHMgYW5kIDIgc3RvcAotIwliaXRzIGZvciB0aGUgYXJyb3cga2V5cyB0byB3b3JrLgotIwotIwlJZiB5b3UgY2hhbmdlIGtleWJvYXJkcyB0aGUgdGVybWluYWwgd2lsbCBzZW5kIGRpZmZlcmVudAotIwllc2NhcGUgc2VxdWVuY2VzLgotIwlUaGUgZm9sbG93aW5nIGRlZmluaXRpb24gaXMgZm9yIHRoZSBiYXNpYyB0ZXJtaW5hbCB3aXRob3V0Ci0jCWZ1bmN0aW9uIGtleXMuCi0jCi0jCTx1MD4gLT4gZW50ZXIgVGVrdHJvbml4IDQwMTAvNDAxNCBtb2RlCi0jCTx1MT4gLT4gZXhpdCAgVGVrdHJvbml4IDQwMTAvNDAxNCBtb2RlCi0jCTx1Mj4gLT4gZW50ZXIgQVNDSUkgbW9kZSAoZnJvbSBhbnkgQU5TSSBtb2RlKQotIwk8dTM+IC0+IGV4aXQgIEFTQ0lJIG1vZGUgKGdvdG8gbmF0aXZlIEFOU0kgbW9kZSkKLSMJPHU0PiAtPiBlbnRlciBUZWsgNDIwNyBBTlNJIG1vZGUgKGZyb20gYW55IEFOU0kgbW9kZSkKLSMJPHU1PiAtPiBleGl0ICBUZWsgNDIwNyBtb2RlIChnb3RvIG5hdGl2ZSBBTlNJIG1vZGUpCi0jCi0jIEJ1ZzogVGhlIDxvcD4gY2FwYWJpbGl0eSByZXNldHMgYXR0cmlidXRlcy4KLXd5MzcwLW5rfHd5c2UgMzcwIHdpdGhvdXQgZnVuY3Rpb24ga2V5cywKLQlhbSwgY2NjLCBocywgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29sb3JzIzY0LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbmN2IzQ4LCBwYWlycyM2NCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0okPDQwPiwgY25vcm09XEVbMzRoXEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDE+LCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzI1aFxFWzM0bCwgZGNoPVxFWyVwMSVkUCQ8MSo+LCBkY2gxPVxFW1AkPDE+LAotCWRjbGs9XEVbMzFoLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSQ8Mio+LCBkbDE9XEVbTSQ8Mj4sCi0JZHNsPVxFWzQwbCwgZWNoPVxFWyVwMSVkWCQ8LjEqPiwgZWQ9XEVbSiQ8NDA+LAotCWVsPVxFW0skPDEwPiwgZWwxPVxFWzFLJDwxMj4sIGVuYWNzPVxFKTAsCi0JZmxhc2g9XEVbMzBoXEVcLFxFWzMwbCQ8MzAwPiwgZnNsPVxFWzE7MjRyXEU4LAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRgLCBodD1cMDExJDwxPiwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRAJDwxKj4sIGlsPVxFWyVwMSVkTCQ8Mio+LCBpbDE9XEVbTCQ8Mj4sCi0JaW5kPVxuJDwyPiwKLQlpbml0Yz1cRVs2NjslcDElZDslPyVwMiV7MjUwfSU8JXQlezB9JWUlcDIlezUwMH0lPCV0JXsxNn0lZSVwMiV7NzUwfSU8JXQlezMyfSVlJXs0OH0lOyU/JXAzJXsyNTB9JTwldCV7MH0lZSVwMyV7NTAwfSU8JXQlezR9JWUlcDMlezc1MH0lPCV0JXs4fSVlJXsxMn0lOyU/JXA0JXsyNTB9JTwldCV7MH0lZSVwNCV7NTAwfSU8JXQlezF9JWUlcDQlezc1MH0lPCV0JXsyfSVlJXszfSU7JXsxfSUrJSslKyVkdywKLQlpbnZpcz1cRVs4bSwgaXA9JDwxPiwgaXMxPVxFWzkwOzEicFxFWz81VyQ8Nj4sCi0JaXMyPVxFWzI7NDsyMDszMDs0MGxcRVs/MTsxMDsxNmxcRVsxMmhcRVs/Nzs4OzI1aCwKLQlpczM9XEU+XDAxN1xFKTBcRShCXEVbNjM7MHdcRVttLCBtYzA9XEVbMGksIG1jND1cRVs0aSwKLQltYzU9XEVbNWksCi0Jb2M9XEVbNjB3XEVbNjM7MHdcRVs2NjsxOzR3XEVbNjY7MjsxM3dcRVs2NjszOzE2d1xFWzY2OzQ7NDl3XEVbNjY7NTs1MXdcRVs2Njs2OzYxd1xFWzY2Ozc7NjR3LAotCW9wPVxFW20sIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0kPDI+LCBybWFjcz1eTywKLQlybWFtPVxFWz83bCwgcm1jbGs9XEVbMzFsLCBybWN1cD1cRVsgUiwgcm1pcj1cRVs0bCwKLQlybWt4PVxFPiwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRVsxM2xcRVszbFxFIXBcRVs/NGksIHJzMj1cRVszNWhcRVs/M2wkPDg+LAotCXJzMz1cRVs/NWwsIHNjPVxFNywgc2V0Yj1cRVs2MjslcDElZHcsIHNldGY9XEVbNjE7JXAxJWR3LAotCXNncj1cRVswJT8lcDIldDs0JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDQldDs1JTslPyVwNSV0OzIlOyU/JXA2JXQ7MSU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtY3VwPVxFWyBRLAotCXNtaXI9XEVbNGgsIHNta3g9XEVbPzFsXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFWzQwbFxFWzQwaFxFN1xFWzk5OyVpJXAxJWRILAotCXUwPVxFWz8zOGhcRTgsIHUxPVxFWz8zOGxcRSkwLCB1Mj1cRVs5Mjs1MiJwLCB1Mz1cRX5CLAotCXU0PVxFWzkyOzc2InAsIHU1PVxFJSExXEVbOTA7MSJwLCB2cGE9XEVbJWklcDElZGQsCi0jCi0jCUZ1bmN0aW9uIGtleSBzZXQgZm9yIHRoZSBBU0NJSSAod3ktNTAgY29tcGF0aWJsZSkga2V5Ym9hcmQKLSMJVGhpcyBpcyB0aGUgZGVmYXVsdCAzNzAuCi0jCi13eTM3MHx3eXNlMzcwfHd5MzcwLTEwMWt8V3lzZSAzNzAgd2l0aCAxMDEga2V5IGtleWJvYXJkLAotCWticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLAotCWtjdXUxPVxFW0EsIGtkY2gxPVxFT1EsIGtkbDE9XEVPUSwga2VudD1cRU9NLCBrZjE9XEVbPzRpLAotCWtmMTA9XEVbMjF+LCBrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LAotCWtmMTQ9XEVbMjZ+LCBrZjE1PVxFWzI4fiwga2YxNj1cRVsyOX4sIGtmMj1cRVs/M2ksCi0Ja2YzPVxFWzJpLCBrZjQ9XEVbQCwga2Y1PVxFW00sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2hvbWU9XEVbSCwga2ljaDE9XEVPUCwga2lsMT1cRU9QLAotCWtucD1cRVtVLCBrcHA9XEVbViwgdXNlPXd5MzcwLW5rLAotIwotIwlGdW5jdGlvbiBrZXkgc2V0IGZvciB0aGUgVlQtMzIwIChhbmQgd3k4NSkgY29tcGF0aWJsZSBrZXlib2FyZAotIwotd3kzNzAtMTA1a3xXeXNlIDM3MCB3aXRoIDEwNSBrZXkga2V5Ym9hcmQsCi0Ja2JzPV5ILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFWzN+LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sIGtmMTI9XEVbMjR+LAotCWtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sIGtmMTY9XEVbMjl+LAotCWtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sIGtmMjA9XEVbMzR+LAotCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtmbmQ9XEVbMX4sCi0Ja2hscD1cRVsyOH4sIGtob21lPVxFWzI2fiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwKLQlrcHA9XEVbNX4sIGtzbHQ9XEVbNH4sIGxmMT1QRjEsIGxmMj1QRjIsIGxmMz1QRjMsIGxmND1QRjQsCi0JdXNlPXd5MzcwLW5rLCB1c2U9dnQyMjAra2V5cGFkLAotIwotIwlGdW5jdGlvbiBrZXkgc2V0IGZvciB0aGUgUEMgY29tcGF0aWJsZSBrZXlib2FyZAotIwotd3kzNzAtRVBDfFd5c2UgMzcwIHdpdGggMTAyIGtleSBrZXlib2FyZCwKLQlrYnM9XkgsIGtjYnQ9XEVbWiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZW5kPVxFWzF+LCBrZW50PVxFT00sIGtmMT1cRU9QLCBrZjEwPVxFWzIxfiwKLQlrZjExPVxFWzIzfiwga2YxMj1cRVsyNH4sIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0Ja2Y1PVxFW00sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sCi0Ja2hvbWU9XEVbSCwga2ljaDE9XEVbMn4sIGtucD1cRVtVLCBrcHA9XEVbViwgdXNlPXd5MzcwLW5rLAotIwotIwlXeXNlIDM3MCB3aXRoIHZpc3VhbCBiZWxsLgotd3kzNzAtdmJ8V3lzZSAzNzAgd2l0aCB2aXNpYmxlIGJlbGwsCi0JYmVsQCwgdXNlPXd5MzcwLAotIwotIwlXeXNlIDM3MCBpbiAxMzItY29sdW1uIG1vZGUuCi13eTM3MC13fFd5c2UgMzcwIGluIDEzMi1jb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlyczI9XEVbMzVoXEVbPzNoJDw3MD4sIHVzZT13eTM3MCwKLSMKLSMJV3lzZSAzNzAgaW4gMTMyLWNvbHVtbiBtb2RlIHdpdGggdmlzdWFsIGJlbGwuCi13eTM3MC13dmJ8V3lzZSAzNzAgd2l0aCB2aXNpYmxlIGJlbGwgMTMyLWNvbHVtbnMsCi0JZmxhc2g9XEVbMzBoXEVcLFxFWzMwbCQ8MzAwPiwgdXNlPXd5MzcwLXcsCi13eTM3MC1ydnxXeXNlIDM3MCByZXZlcnNlIHZpZGVvLAotCXJzMz1cRVszMmhcRVs/NWgsIHVzZT13eTM3MCwKLSMKLSMJV3lzZSA5OWd0IFRla3Ryb25peCA0MDEwLzQwMTQgZW11bGF0b3IsCi0jCi13eTk5Z3QtdGVrfFd5c2UgOTlndCBUZWt0cm9uaXggNDAxMC80MDE0IGVtdWxhdG9yLAotCWFtLCBvcywKLQljb2xzIzc0LCBsaW5lcyMzNSwKLQliZWw9XkcsIGNsZWFyPVxFXkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxzLAotCWN1cD1cMDM1JXszMDQwfSV7ODl9JXAxJSolLSVQeSVwMiV7NTV9JSolUHglZ3klezEyOH0lLyV7MzF9JSYlezMyfSUrJWMlZ3klezN9JSYlezR9JSolZ3glezN9JSYlKyV7OTZ9JSslYyVneSV7MDA0fSUvJXszMX0lJiV7OTZ9JSslYyVneCV7MTI4fSUvJXszMX0lJiV7MzJ9JSslYyVneCV7MDA0fSUvJXszMX0lJiV7NjR9JSslY1wwMzcsCi0JY3V1MT1eSywgZmY9XkwsCi0JaGQ9XDAzNkhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIXDAzNywKLQlob21lPV5dN2B4IEBcMDM3LAotCWh1PVwwMzZERERERERERERERERERERERERERERERERERERERERERERERERERERERFwwMzcsCi0JaXMyPVxFOCwgbmVsPV5NXkosIHUwPVxFfj5cRTgsIHUxPVxFWzQyaCwKLSMKLSMJV3lzZSAxNjAgVGVrdHJvbml4IDQwMTAvNDAxNCBlbXVsYXRvciwKLSMKLXd5MTYwLXRla3xXeXNlIDE2MCBUZWt0cm9uaXggNDAxMC80MDE0IGVtdWxhdG9yLAotCWN1cD1cMDM1JXszMTAzfSV7OTF9JXAxJSolLSVQeSVwMiV7NTV9JSolUHglZ3klezEyOH0lLyV7MzF9JSYlezMyfSUrJWMlZ3klezN9JSYlezR9JSolZ3glezN9JSYlKyV7OTZ9JSslYyVneSV7MDA0fSUvJXszMX0lJiV7OTZ9JSslYyVneCV7MTI4fSUvJXszMX0lJiV7MzJ9JSslYyVneCV7MDA0fSUvJXszMX0lJiV7NjR9JSslY1wwMzcsCi0JaG9tZT1eXThgZyBAXDAzNywgdXNlPXd5OTlndC10ZWssCi0jCi0jCVd5c2UgMzcwIFRla3Ryb25peCA0MDEwLzQwMTQgZW11bGF0b3IsCi0jCi13eTM3MC10ZWt8V3lzZSAzNzAgVGVrdHJvbml4IDQwMTAvNDAxNCBlbXVsYXRvciwKLQlhbSwgb3MsCi0JY29scyM4MCwgbGluZXMjMzYsCi0JYmVsPV5HLCBjbGVhcj1cRV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1ccywKLQljdXA9XDAzNSV7Nzc1fSV7MTA4fSVwMSUqJXs1fSUvJS0lUHklcDIlezY0fSUqJXs0fSUrJXs1fSUvJVB4JWd5JXszMn0lLyV7MzF9JSYlezMyfSUrJWMlZ3klezMxfSUmJXs5Nn0lKyVjJWd4JXszMn0lLyV7MzF9JSYlezMyfSUrJWMlZ3glezMxfSUmJXs2NH0lKyVjXDAzNywKLQljdXUxPV5LLCBmZj1eTCwKLQloZD1cMDM2SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIXDAzNywKLQlob21lPV5dOGcgQFwwMzcsCi0JaHU9XDAzNkRERERERERERERERERERERERERERERERERERERERERERERERERERERcMDM3LAotCWlzMj1cRTgsIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eSSwga2N1dTE9XkssCi0JbmVsPV5NXkosIHUwPVxFWz8zOGhcRTgsIHUxPVxFWz8zOGxcRSkwLAotCi0jIFZlbmRvci1zdXBwbGllZCBXeXNlIGVudHJpZXMgZW5kIGhlcmUuCi0KLSMKLSNUSVRMRTogIFRFUk1JTkZPIEVOVFJZIFdZNTIwCi0jREFURTogICA4LzUvOTMKLSMgVGhlIFdZNTIwIHRlcm1pbmZvIGlzIGJhc2VkIG9uIHRoZSBXWTI4NSBlbnRyeSBwdWJsaXNoZWQgb24gdGhlIFdZU0UKLSMgQkJTIHdpdGggdGhlIGFkZGl0aW9uIG9mIG1vcmUgZnVuY3Rpb24ga2V5cyBhbmQgc3BlY2lhbCBrZXlzLgotIwotIyAgICAgICAgICAgICAgIHJzMSAtPiBzZXQgcGVyc29uYWxpdHkKLSMgICAgICAgICAgICAgICByczIgLT4gc2V0IG51bWJlciBvZiBjb2x1bW5zCi0jICAgICAgICAgICAgICAgcnMzIC0+IHNldCBudW1iZXIgb2YgbGluZXMKLSMgICAgICAgICAgICAgICBpczEgLT4gc2VsZWN0IHRoZSBwcm9wZXIgZm9udAotIyAgICAgICAgICAgICAgIGlzMiAtPiBkbyB0aGUgaW5pdGlhbGl6YXRpb24KLSMgICAgICAgICAgICAgICBpczMgLT4gSWYgdGhpcyBzdHJpbmcgaXMgZW1wdHkgdGhlbiByczMgZ2V0cyBzZW50LgotIwotIyAgICAgICBXeXNlIDUyMCBlbXVsYXRpbmcgYSB2dDQyMCA3IGJpdCBtb2RlIHdpdGggZGVmYXVsdCBBTlNJIGtleWJvYXJkCi0jICAgICAgIC0gVGhlIEJTIGtleSBpcyBwcm9ncmFtbWVkIHRvIGdlbmVyYXRlIEJTIGluIHNtY3VwIHNpbmNlCi0jICAgICAgICAgaXMyIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLgotIyAgICAgICAtIFJlbW92ZSBhbmQgc2hpZnQvUmVtb3ZlOiBkZWxldGUgYSBjaGFyYWN0ZXIKLSMgICAgICAgLSBJbnNlcnQgOiBlbnRlciBpbnNlcnQgbW9kZQotIyAgICAgICAtIEZpbmQgICA6IGRlbGV0ZSB0byBlbmQgb2YgZmlsZQotIyAgICAgICAtIFNlbGVjdCA6IGNsZWFyIGEgbGluZQotIyAgICAgICAtIEYxMSwgRjEyLCBGMTM6IHNlbmQgZGVmYXVsdCBzZXF1ZW5jZXMgKG5vdCBFU0MsIEJTLCBMRikKLSMgICAgICAgLSBGMTQgOiBIb21lIGtleQotIyAgICAgICAtIEJvdHRvbSBzdGF0dXMgbGluZSAoaG9zdCB3cml0YWJsZSBsaW5lKSBpcyB1c2VkLgotIyAgICAgICAtIHNta3gscm1reCBhcmUgcmVtb3ZlZCBiZWNhdXNlIHRoaXMgd291bGQgcHV0IHRoZSBudW1lcmljCi0jICAgICAgICAga2V5cGFkIGluIERlYyBhcHBsaWNhdGlvbiBtb2RlIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCi0jICAgICAgICAgd2l0aCBTQ08gYXBwbGljYXRpb25zLgotIwotd3k1MjB8d3lzZTUyMHx3eXNlIDUyMCwKLQlhbSwgaHMsIGttLCBtYzVpLCBtaXIsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0okPDQwPiwgY25vcm09XEVbMzRoXEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyJDwyMD4sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWz8yNWhcRVszNGwsIGRjaD1cRVslcDElZFAkPDM+LCBkY2gxPVxFW1AkPDMwPiwKLQlkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSQ8Mio+LCBkbDE9XEVbTSQ8Mj4sIGRzbD1cRVswJH4sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiQ8NDA+LCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JZW5hY3M9XEUpMCwgZnNsPVxFWzAkfSwgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZGAsIGh0PV5JLAotCWh0cz1cRUgsIGljaD1cRVslcDElZEAkPDI+LCBpbD1cRVslcDElZEwkPDMqPiwKLQlpbDE9XEVbTCQ8Mz4sIGluZD1cbiQ8Mj4sIGludmlzPVxFWzhtLCBpcD0kPDQ+LCBpczE9XEVbPzVXLAotCWlzMj1cRVsyOzQ7MjA7MzBsXEVbPzE7NDsxMDsxNmxcRVsxMmhcRVs/Nzs4OzI1OzY3aCwKLQlpczM9XEU+XEUoQlxFKTBcMDE3XEVbbSwga2JzPV5ILCBrY2J0PVxFW1osIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbM34sIGtlZD1cRVsxfiwKLQlrZWw9XEVbNH4sIGtlbnQ9XEVPTSwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LAotCWtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LAotCWtmMjA9XEVbMzR+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LAotCWtmOT1cRVsyMH4sIGtmbmQ9XEVbMX4sIGtobHA9XEVbMjh+LCBraG9tZT1cRVsyNn4sCi0Ja2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LCBrc2x0PVxFWzR+LCBsZjE9UEYxLAotCWxmMj1QRjIsIGxmMz1QRjMsIGxmND1QRjQsIG1jMD1cRVswaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksCi0JcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSQ8Mj4sIHJtYWNzPV5PLCBybWFtPVxFWz83bCwKLQlybWN1cD1cRVsgUiwgcm1pcj1cRVs0bCwgcm1zbz1cRVttLCBybXVsPVxFWzI0bSwKLQlyczE9XEVbMTNsXEVbM2xcRVxcXEVbNjM7MSJwXEVbIXAsIHJzMj1cRVszNWhcRVs/M2wsCi0JcnMzPVxFWz81bFxFWzQ3aFxFWzQwbFxFW3IsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAyJXQ7NCU7JT8lcDMlcDElfCV0OzclOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtYW09XEVbPzdoLAotCXNtY3VwPVxFWyBRXEVbPzY3OzhoLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFWzIkflxFWzEkfVxFWyVpJXAxJWRgLAotCXZwYT1cRVslaSVwMSVkZCwgdXNlPXZ0MjIwK2tleXBhZCwKLSMKLSMgICAgICAgV3lzZSA1MjAgd2l0aCAyNCBkYXRhIGxpbmVzIGFuZCBzdGF0dXMgKHRlcm1pbmFsIHN0YXR1cykKLXd5NTIwLTI0fHd5c2U1MjAtMjR8d3lzZSA1MjAgd2l0aCAyNCBkYXRhIGxpbmVzLAotCWhzQCwKLQlkc2xALCBmc2xALCByczM9XEVbPzVsXEVbNDdoXEVbNDBsXEVbMTsyNHIsIHRzbEAsCi0JdXNlPXd5NTIwLAotIwotIyAgICAgICBXeXNlIDUyMCB3aXRoIHZpc3VhbCBiZWxsLgotd3k1MjAtdmJ8d3lzZTUyMC12Ynx3eXNlIDUyMCB3aXRoIHZpc2libGUgYmVsbCwKLQlmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwxMDA+LCB1c2U9d3k1MjAsCi0jCi0jICAgICAgIFd5c2UgNTIwIGluIDEzMi1jb2x1bW4gbW9kZS4KLXd5NTIwLXd8d3lzZTUyMC13fHd5c2UgNTIwIGluIDEzMi1jb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlkY2g9XEVbJXAxJWRQJDw3PiwgZGNoMT1cRVtQJDw3PiwgaWNoPVxFWyVwMSVkQCQ8Nz4sCi0JaXA9JDw3PiwgcnMyPVxFWzM1aFxFWz8zaCwgdXNlPXd5NTIwLAotIwotIyAgICAgICBXeXNlIDUyMCBpbiAxMzItY29sdW1uIG1vZGUgd2l0aCB2aXN1YWwgYmVsbC4KLXd5NTIwLXd2Ynx3eXNlNTIwLXd2Ynx3eXNlIDUyMCB3aXRoIHZpc2libGUgYmVsbCAxMzItY29sdW1ucywKLQlmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwxMDA+LCB1c2U9d3k1MjAtdywKLSMKLSMKLSMgICAgICAgV3lzZSA1MjAgZW11bGF0aW5nIGEgdnQ0MjAgNyBiaXQgbW9kZS4KLSMgICAgICAgVGhlIERFTCBrZXkgaXMgcHJvZ3JhbW1lZCB0byBnZW5lcmF0ZSBCUyBpbiBpczIuCi0jICAgICAgIFdpdGggRVBDIGtleWJvYXJkLgotIyAgICAgICAtICdFbmQnIGtleSB3aWxsIGNsZWFyIHRpbGwgZW5kIG9mIGxpbmUgb24gRVBDIGtleWJvYXJkCi0jICAgICAgIC0gU2hpZnQvRW5kIDogaWdub3JlZC4KLSMgICAgICAgLSBJbnNlcnQgOiBlbnRlciBpbnNlcnQgbW9kZS4KLSMgICAgICAgLSBEZWxldGUgOiBkZWxldGUgYSBjaGFyYWN0ZXIgKGhhdmUgdG8gY2hhbmdlIGludGVycnVwdCBjaGFyYWN0ZXIKLSMgICAgICAgICAgICAgICAgICB0byBDVFJMLUM6IHN0dHkgaW50ciAnXmMnKSBmb3IgaXQgdG8gd29yayBzaW5jZSB0aGUKLSMgICAgICAgICAgICAgICAgICBEZWxldGUga2V5IHNlbmRzIDdGSC4KLXd5NTIwLWVwY3x3eXNlNTIwLWVwY3x3eXNlIDUyMCB3aXRoIEVQQyBrZXlib2FyZCwKLQlrZGNoMT1cMTc3LCBrZWw9XEVbNH4sIGtlbmQ9XEVbNH4sIGtmMD1cRVsyMX4sIGtmMT1cRVsxMX4sCi0Ja2YyPVxFWzEyfiwga2YzPVxFWzEzfiwga2Y0PVxFWzE0fiwga2Y1PVxFWzE1fiwga2hvbWU9XEVbSCwKLQl1c2U9d3k1MjAsCi0jCi0jICAgICAgIFd5c2UgNTIwIHdpdGggMjQgZGF0YSBsaW5lcyBhbmQgc3RhdHVzICh0ZXJtaW5hbCBzdGF0dXMpCi0jICAgICAgIHdpdGggRVBDIGtleWJvYXJkLgotd3k1MjAtZXBjLTI0fHd5c2U1MjAtcGMtMjR8d3lzZSA1MjAgd2l0aCAyNCBkYXRhIGxpbmVzIGFuZCBFUEMga2V5Ym9hcmQsCi0JaHNALAotCWRzbEAsIGZzbEAsIHJzMz1cRVs/NWxcRVs0N2hcRVs0MGxcRVsxOzI0ciwgdHNsQCwKLQl1c2U9d3k1MjAtZXBjLAotIwotIyAgICAgICBXeXNlIDUyMCB3aXRoIHZpc3VhbCBiZWxsLgotd3k1MjAtZXBjLXZifHd5c2U1MjAtcGMtdmJ8d3lzZSA1MjAgd2l0aCB2aXNpYmxlIGJlbGwgYW5kIEVQQyBrZXlib2FyZCwKLQlmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwxMDA+LCB1c2U9d3k1MjAtZXBjLAotIwotIyAgICAgICBXeXNlIDUyMCBpbiAxMzItY29sdW1uIG1vZGUuCi13eTUyMC1lcGMtd3x3eXNlNTIwLWVwYy13fHd5c2UgNTIwIGluIDEzMi1jb2x1bW4gbW9kZSB3aXRoIEVQQyBrZXlib2FyZCwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlkY2g9XEVbJXAxJWRQJDw3PiwgZGNoMT1cRVtQJDw3PiwgaWNoPVxFWyVwMSVkQCQ8Nz4sCi0JaXA9JDw3PiwgcnMyPVxFWzM1aFxFWz8zaCwgdXNlPXd5NTIwLWVwYywKLSMKLSMgICAgICAgV3lzZSA1MjAgaW4gMTMyLWNvbHVtbiBtb2RlIHdpdGggdmlzdWFsIGJlbGwuCi13eTUyMC1lcGMtd3ZifHd5c2U1MjAtcC13dmJ8d3lzZSA1MjAgd2l0aCB2aXNpYmxlIGJlbGwgMTMyLWNvbHVtbnMgYW5kIEVQQyBrZXlib2FyZCwKLQlmbGFzaD1cRVszMGhcRVwsXEVbMzBsJDwxMDA+LCB1c2U9d3k1MjAtZXBjLXcsCi0jCi0jICAgICAgIFd5c2UgNTIwIGluIDgwLWNvbHVtbiwgMzYgbGluZXMKLXd5NTIwLTM2fHd5c2U1MjAtMzZ8d3lzZSA1MjAgd2l0aCAzNiBkYXRhIGxpbmVzLAotCWhzQCwKLQlsaW5lcyMzNiwKLQlkc2xALCBmc2xALCByczM9XEVbPzVsXEVbMzYqfFxFWzM2dFxFWzQwbFxFWzE7MzZyLCB0c2xALAotCXVzZT13eTUyMCwKLSMKLSMgICAgICAgV3lzZSA1MjAgaW4gODAtY29sdW1uLCA0OCBsaW5lcwotd3k1MjAtNDh8d3lzZTUyMC00OHx3eXNlIDUyMCB3aXRoIDQ4IGRhdGEgbGluZXMsCi0JaHNALAotCWxpbmVzIzQ4LAotCWRzbEAsIGZzbEAsIHJzMz1cRVs/NWxcRVs0OCp8XEVbNDh0XEVbNDBsXEVbMTs0OHIsIHRzbEAsCi0JdXNlPXd5NTIwLAotIwotIyAgICAgICBXeXNlIDUyMCBpbiAxMzItY29sdW1uLCAzNiBsaW5lcwotd3k1MjAtMzZ3fHd5c2U1MjAtMzZ3fHd5c2UgNTIwIHdpdGggMTMyIGNvbHVtbnMgYW5kIDM2IGRhdGEgbGluZXMsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JcnMyPVxFWz8zaCwKLQlyczM9XEVbPzVsXEVbMzYqfFxFWzM2dFxFWzQwbFxFWzE7MzZyXEVbMTMyJHwsCi0JdXNlPXd5NTIwLTM2LAotIwotIyAgICAgICBXeXNlIDUyMCBpbiAxMzItY29sdW1uLCA0OCBsaW5lcwotd3k1MjAtNDh3fHd5c2U1MjAtNDh3fHd5c2UgNTIwIHdpdGggNDggZGF0YSBsaW5lcywKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlyczI9XEVbPzNoLAotCXJzMz1cRVs/NWxcRVs0OCp8XEVbNDh0XEVbNDBsXEVbMTs0OHJcRVsxMzIkfCwKLQl1c2U9d3k1MjAtNDgsCi0jCi0jCi0jICAgICAgIFd5c2UgNTIwIGluIDgwLWNvbHVtbiwgMzYgbGluZXMgd2l0aCBFUEMga2V5Ym9hcmQKLXd5NTIwLTM2cGN8d3lzZTUyMC0zNnBjfHd5c2UgNTIwIHdpdGggMzYgZGF0YSBsaW5lcyBhbmQgRVBDIGtleWJvYXJkLAotCWhzQCwKLQlsaW5lcyMzNiwKLQlkc2xALCBmc2xALCByczM9XEVbPzVsXEVbMzYqfFxFWzM2dFxFWzQwbFxFWzE7MzZyLCB0c2xALAotCXVzZT13eTUyMC1lcGMsCi0jCi0jICAgICAgIFd5c2UgNTIwIGluIDgwLWNvbHVtbiwgNDggbGluZXMgd2l0aCBFUEMga2V5Ym9hcmQKLXd5NTIwLTQ4cGN8d3lzZTUyMC00OHBjfHd5c2UgNTIwIHdpdGggNDggZGF0YSBsaW5lcyBhbmQgRVBDIGtleWJvYXJkLAotCWhzQCwKLQlsaW5lcyM0OCwKLQlkc2xALCBmc2xALCByczM9XEVbPzVsXEVbNDgqfFxFWzQ4dFxFWzQwbFxFWzE7NDhyLCB0c2xALAotCXVzZT13eTUyMC1lcGMsCi0jCi0jICAgICAgIFd5c2UgNTIwIGluIDEzMi1jb2x1bW4sIDM2IGxpbmVzIHdpdGggRVBDIGtleWJvYXJkCi13eTUyMC0zNndwY3x3eXNlNTIwLTM2d3BjfHd5c2UgNTIwIHdpdGggMzYgZGF0YSBsaW5lcyBhbmQgRVBDIGtleWJvYXJkLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCXJzMj1cRVs/M2gsCi0JcnMzPVxFWz81bFxFWzM2KnxcRVszNnRcRVs0MGxcRVsxOzM2clxFWzEzMiR8LAotCXVzZT13eTUyMC0zNnBjLAotIwotIyAgICAgICBXeXNlIDUyMCBpbiAxMzItY29sdW1uLCA0OCBsaW5lcyB3aXRoIEVQQyBrZXlib2FyZAotd3k1MjAtNDh3cGN8d3lzZTUyMC00OHdwY3x3eXNlIDUyMCB3aXRoIDQ4IGRhdGEgbGluZXMgYW5kIEVQQyBrZXlib2FyZCwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlyczI9XEVbPzNoLAotCXJzMz1cRVs/NWxcRVs0OCp8XEVbNDh0XEVbNDBsXEVbMTs0OHJcRVsxMzIkfCwKLQl1c2U9d3k1MjAtNDhwYywKLQotIyBGcm9tOiBKb2huIEdpbG1vcmUgPGhvcHRvYWQhZ251QGxsbC1jcmcuYXJwYT4KLSMgKHd5c2UtdnA6IHJlbW92ZWQgPGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3d5c2UtYWRkcz4sIHRoZXJlJ3Mgbm8gc3VjaAotIyBmaWxlIGFuZCB3ZSBkb24ndCBrbm93IHdoYXQgPGh0cz4gaXMgLS0gZXNyKQotd3lzZS12cHxXeXNlIDUwIGluIEFERFMgVmlld3BvaW50IGVtdWxhdGlvbiBtb2RlIHdpdGggImVuaGFuY2UiIG9uLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5GLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XlosIGRjaDE9XEVXLAotCWRsMT1cRWwsIGVkPVxFaywgZWw9XEVLLCBob21lPV5BLCBodD1eSSwgaWwxPVxFTSwgaW5kPV5KLAotCWlzMj1cRWBcOlxFYDlcMDE3XEVyLCBrYnM9XkgsIGtjdWIxPV5VLCBrY3VkMT1eSiwga2N1ZjE9XkYsCi0Ja2N1dTE9XlosIGtob21lPV5BLCBsbD1eQV5aLCBuZWw9Xk1eSiwgcm1pcj1cRXIsIHJtc289Xk8sCi0Jcm11bD1eTywgcnMxPVxFYFw6XEVgOVwwMTdcRXIsIHNncjA9Xk8sIHNtaXI9XEVxLCBzbXNvPV5OLAotCXNtdWw9Xk4sCi0KLXd5NzVhcHx3eXNlNzVhcHx3eS03NWFwfHd5c2UtNzVhcHxXeXNlIFdZLTc1IEFwcGxpY2F0aW9ucyBhbmQgQ3Vyc29yIGtleXBhZCwKLQlpczI9XEVbMTsyNHJcRVs/MTA7M2xcRVs/MTsyNWhcRVs0bFxFW21cRShCXEU9LAotCWticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlraG9tZT1cRU9ILCBybWt4PVxFWz8xbFxFPiQ8MTAvPiwgc21reD1cRVs/MWhcRT0kPDEwLz4sCi0JdXNlPXd5NzUsCi0KLSMgRnJvbTogRXJpYyBGcmV1ZGVudGhhbCA8ZnJldWRlbnRAZXJpYy51bHRyYS5ueXUuZWR1Pgotd3kxMDBxfFd5c2UgMTAwIGZvciBRdW90cm9uLAotCU9UYnMsCi0JY29scyM4MCwgbGluZXMjMjQsIHhtYyMxLAotCWNidD1cRUksIGNsZWFyPV5aLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFWSwgZWw9XEVULCBob21lPV5eLCBpbDE9XEVFLCBpbnZpc0AsCi0JaXMyPVxFYFw6XDBcRUNcRURGXEUwXEUnXEUoXEVBMjEsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIHJpPVxFaiwgcm1pcj1cRXIsIHNtaXI9XEVxLCB1c2U9YWRtK3NnciwKLQotIyMjIyBLZXJtaXQgdGVybWluYWwgZW11bGF0aW9ucwotIwotIyBPYnNvbGV0ZSBLZXJtaXQgdmVyc2lvbnMgbWF5IGJlIGxpc3RlZCBpbiB0aGUgc2VjdGlvbiBkZXNjcmliaW5nIG9ic29sZXRlCi0jIG5vbi1BTlNJIHRlcm1pbmFsIGVtdWxhdG9ycyBsYXRlciBpbiB0aGUgZmlsZS4KLSMKLQotIyBLRVJNSVQgc3RhbmRhcmQgYWxsIHZlcnNpb25zLgotIyBTdHJhaWdodCBhc2NpaSBrZXlib2FyZC4gOnNyPVxFSTogbm90IGF2YWlsLiBtYW55IHZlcnNpb25zICsgYnVnIHByb25lIGluIHZpLgotIyAoa2VybWl0OiByZW1vdmVkIG9ic29sZXRlICI6bWE9XkhoXkpqXktrXkxsXl5IOiIgLS0gZXNyKQotIyBGcm9tOiBncmVnIHNtYWxsIDxndHNAcG9wdWxpLmJlcmtlbGV5LmVkdT4gOS0yNS04NAota2VybWl0fHN0YW5kYXJkIGtlcm1pdCwKLQlPVGJzLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVxFRSwgY3ViMT1eSCwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGVkPVxFSiwKLQllbD1cRUssIGhvbWU9XEVILCBpczI9SzAgU3RhbmRhcmQgS2VybWl0ICA5LTI1LTg0XG4sCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtob21lPV5eLAota2VybWl0LWFtfHN0YW5kYXJkIGtlcm1pdCBwbHVzIGF1dG8tbWFyZ2luLAotCWFtLAotCWlzMj1LMSBTdGFuZGFyZCBLZXJtaXQgcGx1cyBBdXRvbWF0aWMgTWFyZ2luc1xuLAotCXVzZT1rZXJtaXQsCi0jIElCTVBDIEtlcm1pdCAxLjIuCi0jIEJ1Z3M6IDxlZD4sIDxlbD46IGRvIG5vdCB3b3JrIGV4Y2VwdCBhdCBiZWdpbm5pbmcgb2YgbGluZSEgIDxjbGVhcj4gZG9lcwotIyBub3Qgd29yaywgYnV0IGZha2Ugd2l0aCA6Y2w9XEVIXEVKIChzaW5jZSA6Y2Q9XEVKOiB3b3JrcyBhdCBiZWdpbm5pbmcgb2YKLSMgbGluZSkuCi0jIEZyb206IGdyZWcgc21hbGwgPGd0c0Bwb3B1bGkuYmVya2VsZXkuZWR1PiA4LTMwLTg0Ci1wY2tlcm1pdHxwY2tlcm1pdDEyfFVDQiBJQk1QQyBLZXJtaXQgMS4yLAotCWFtLAotCWxpbmVzIzI1LAotCWNsZWFyPVxFSFxFSiwgZWRALCBlbEAsCi0JaXMyPUsyIFVDQiBJQk1QQyBLZXJtaXQgMS4yICA4LTMwLTg0XG4sIHVzZT1rZXJtaXQsCi0jIElCTVBDIEtlcm1pdCAxLjIwCi0jIENhbm5vdCB1c2UgbGluZSAyNSwgbm93IGFjdHMgZnVubnkgbGlrZSBhbnNpIHNwZWNpYWwgc2Nyb2xsaW5nIHJlZ2lvbi4KLSMgSW5pdGlhbGl6YXRpb24gbXVzdCBlc2NhcGUgZnJvbSB0aGF0IHJlZ2lvbiBieSBjdXJzb3IgcG9zaXRpb24gdG8gbGluZSAyNC4KLSMgQ2Fubm90IHVzZSBjaGFyYWN0ZXIgaW5zZXJ0IGJlY2F1c2UgMS4yMCBnb2VzIGNyYXp5IGlmIGluc2VydCBhdCBjb2wgODAuCi0jIERvZXMgbm90IHVzZSA6YW06IGJlY2F1c2UgYXV0b3dyYXAgaXMgbG9zdCB3aGVuIGtlcm1pdCBkcm9wcGVkIGFuZCByZXN0YXJ0ZWQuCi0jIEZyb206IGdyZWcgc21hbGwgPGd0c0Bwb3B1bGkuYmVya2VsZXkuZWR1PiAxMi0xOS04NAotcGNrZXJtaXQxMjB8VUNCIElCTVBDIEtlcm1pdCAxLjIwLAotCWl0IzgsIGxpbmVzIzI0LAotCWN1ZDE9XEVCLCBjdnZpcz1cRU9cRXFcRUVLMywgZGNoMT1cRU4sIGRsMT1cRU0sIGh0PV5JLAotCWlsMT1cRUwsCi0JaXMyPVxFT1xFcVxFSlxFWTcgSzMgVUNCIElCTVBDIEtlcm1pdCAxLjIwICAxMi0xOS04NFxuLAotCXJtaXJALCBybXNvPVxFcSwgc21pckAsIHNtc289XEVwLCB1c2U9a2VybWl0LAotIyBNUy1ET1MgS2VybWl0IDIuMjcgZm9yIHRoZSBJQk1QQwotIyBTdHJhaWdodCBhc2NpaSBrZXlib2FyZC4gOnNyPVxFSTogbm90IGF2YWlsLiBtYW55IHZlcnNpb25zICsgYnVnIHByb25lIGluIHZpLgotIyBDYW5ub3QgdXNlIGxpbmUgMjUsIG5vdyBhY3RzIGZ1bm55IGxpa2UgYW5zaSBzcGVjaWFsIHNjcm9sbGluZyByZWdpb24uCi0jIEluaXRpYWxpemF0aW9uIG11c3QgZXNjYXBlIGZyb20gdGhhdCByZWdpb24gYnkgY3Vyc29yIHBvc2l0aW9uIHRvIGxpbmUgMjQuCi0jIERvZXMgbm90IHVzZSBhbTogYmVjYXVzZSBhdXRvd3JhcCBpcyBsb3N0IHdoZW4ga2VybWl0IGRyb3BwZWQgYW5kIHJlc3RhcnRlZC4KLSMgUmV2ZXJzZSB2aWRlbyBmb3Igc3RhbmRvdXQgbGlrZSBIMTkuCi0jIChtc2syMjc6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eSGheSmpeS2teTGxeXkg6IiAtLSBlc3IpCi0jIEZyb206IGdyZWcgc21hbGwgPGd0c0Bwb3B1bGkuYmVya2VsZXkuZWR1PiAzLTE3LTg1Ci1tc2syMjd8bXNrZXJtaXQyMjd8TVMtRE9TIEtlcm1pdCAyLjI3IGZvciB0aGUgSUJNUEMsCi0JT1RicywgYW1ALAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPVxFRSwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLAotCWN2dmlzPVxFT1xFcVxFR1xFd0s0LCBkY2gxPVxFTiwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssCi0JaG9tZT1cRUgsIGh0PV5JLCBpbDE9XEVMLAotCWlzMj1cRU9cRXFcRUdcRXdcRUpcRVk3IEs0IE1TIEtlcm1pdCAyLjI3IGZvciB0aGUgSUJNUEMgMy0xNy04NVxuLAotCWtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBraG9tZT1eXiwgcmM9XEVrLAotCXJtaXI9XEVPLCBybXNvPVxFcSwgc2M9XEVqLCBzbWlyPVxFQCwgc21zbz1cRXAsCi0jIE1TLURPUyBLZXJtaXQgMi4yNyB3aXRoIGF1dG9tYXRpYyBtYXJnaW5zCi0jIEZyb206CWdyZWcgc21hbGwgPGd0c0Bwb3B1bGkuYmVya2VsZXkuZWR1PiAzLTE3LTg1Ci1tc2syMjdhbXxtc2tlcm1pdDIyN2FtfFVDQiBNUy1ET1MgS2VybWl0IDIuMjcgd2l0aCBhdXRvbWF0aWMgbWFyZ2lucywKLQlhbSwKLQljdnZpcz1cRU9cRXFcRUdcRXZLNSwKLQlpczI9XEVPXEVxXEVHXEV2XEVKXEVZNyBLNSBNUyBLZXJtaXQgMi4yNyArYXV0b21hdGljIG1hcmdpbnMgMy0xNy04NVxuLAotCXVzZT1tc2syMjcsCi0jIE1TLURPUyBLZXJtaXQgMi4yNyBVQ0IgMjI3LjE0IGZvciB0aGUgSUJNIFBDCi0jIEF1dG9tYXRpYyBtYXJnaW5zIG5vdyBkZWZhdWx0LiAgVXNlIGFuc2kgPHNncj4gZm9yIGhpZ2hsaWdodHMuCi0jIERlZmluZSBmdW5jdGlvbiBrZXlzLgotIyAobXNrMjI3MTQ6IHJlbW92ZWQgb2Jzb2xldGUgIjprbiMxMDoiIC0tIGVzcikKLSMgRnJvbTogZ3JlZyBzbWFsbCA8Z3RzQHBvcHVsaS5iZXJrZWxleS5lZHU+IDMtMTctODUKLW1zazIyNzE0fG1za2VybWl0MjI3MTR8VUNCIE1TLURPUyBLZXJtaXQgMi4yNyBVQ0IgMjI3LjE0IElCTSBQQywKLQlhbSwKLQlib2xkPVxFWzFtLCBjdnZpcz1cRU9cRXFcRUdcRXZLNiwKLQlpczI9XEVPXEVxXEVHXEV2XEVKXEVZNyBLNiBNUyBLZXJtaXQgMi4yNyBVQ0IgMjI3LjE0IElCTSBQQyAzLTE3LTg1XG4sCi0Ja2YwPVxFMCwga2YxPVxFMSwga2YyPVxFMiwga2YzPVxFMywga2Y0PVxFNCwga2Y1PVxFNSwga2Y2PVxFNiwKLQlrZjc9XEU3LCBrZjg9XEU4LCBrZjk9XEU5LCByZXY9XEVbN20sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21zbz1cRVsxbSwgc211bD1cRVs0bSwgdXNlPW1za2VybWl0MjI3LAotIyBUaGlzIHdhcyBkZXNpZ25lZCBmb3IgYSBWVDMyMCBlbXVsYXRvciwgYnV0IGl0IGlzIHByb2JhYmx5IGEgZ29vZCBzdGFydAotIyBhdCBzdXBwb3J0IGZvciB0aGUgVlQzMjAgaXRzZWxmLgotIyBQbGVhc2Ugc2VuZCBjaGFuZ2VzIHdpdGggZXhwbGFuYXRpb25zIHRvIGJ1Zy1nbnUtZW1hY3NAcHJlcC5haS5taXQuZWR1LgotIyAodnQzMjAtazM6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcgLS0gZXNyKQotdnQzMjAtazN8TVMtS2VybWl0IDMuMDAncyB2dDMyMCBlbXVsYXRpb24sCi0JYW0sIGVzbG9rLCBocywga20sIG1pciwgbXNnciwgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyM0OSwgcGIjOTYwMCwgdnQjMywKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0osIGNtZGNoPVxFLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlkc2w9XEVbMCR+LCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLAotCWZsYXNoPVxFWz81aFxFWz81bFxFWz81aFxFWz81bFxFWz81aFxFWz81bCwKLQlmc2w9XEVbMCR9LCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLAotCWlzMj1cRT5cRSBGXEVbPzFsXEVbPzdoXEVbclxFWzIkfiwga2JzPV5ILCBrY3ViMT1cRU9ELAotCWtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtkbDE9XEVbM34sIGtmMD1cRVsyMX4sCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNj1cRVsxN34sCi0Ja2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ljaDE9XEVbMn4sIGtucD1cRVs2fiwKLQlrcHA9XEVbNX4sIG1jMD1cRVswaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksIG5lbD1eTV5KLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJpbj1cRVslcDElZEwsIHJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLAotCXJtaXI9XEVbNGwsIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sCi0JcnMxPVxFKEJcRSlCXEU+XEUgRlxFWzQ7MjBsXEVbMTJoXEVbPzE7NTs2OzM4OzQybFxFWz83OzI1aFxFWzRpXEVbPzRpXEVbbVxFW3JcRVsyJH4sCi0Jc2M9XEU3LCBzZ3IwPVxFW20sIHNtYWNzPVxFKDAsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdHNsPVxFWzEkfVxyXEVbSywgdnBhPVxFWyVpJXAxJWRkLAotIyBGcm9tOiBKb3NlcGggR2lsIDx5b2dpQGNzLnViYy5jYT4gMTMgRGVjIDE5OTEKLSMgQUNTIGNhcGFiaWxpdGllcyBmcm9tIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AaW5mby51Y2wuYWMuYmU+IDMwIE1heSAxOTk2Ci0jIChJIHJlbW92ZWQgYSBib2d1cyBib29sZWFuIDptbzogYW5kIGFkZGVkIDxtc2dyPiwgPHNtYW0+LCA8cm1hbT4gLS0gZXNyKQotdnQzMjAtazMxMXxkZWMgdnQzMjAgc2VyaWVzIGFzIGRlZmluZWQgYnkga2VybWl0IDMuMTEsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFWztIXEVbMkosIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWRzbD1cRVsyJH5cclxFWzEkfVxFW0tcRVskfSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlmbGFzaD1cRVs/NWhcRVs/NWwsIGZzbD1cRVskfSwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwKLQlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMJDwzLz4sIGluZD1cRUQsCi0JaXMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aFxFWzE7MjRyXEVbMjQ7MUgsCi0Ja2JzPV5ILCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjY9XEVbMTd+LAotCWtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGxmMT1wZjEsIGxmMj1wZjIsCi0JbGYzPXBmMywgbGY0PXBmNCwgbmVsPV5NXEVELCByYz1cRTgsIHJldj1cRVs3bSwKLQlyZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwgcmk9XEVNLCBybWFjcz1eTywKLQlybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLAotCXJtdWw9XEVbMjRtLCByczE9XEVbPzNsLCBzYz1cRTcsIHNncjA9XEVbbSwgc21hY3M9Xk4sCi0Jc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdHNsPVxFWzIkflxFWzEkfVxFWzE7JWRILAotCi0jIyMjIyMjIyBOT04tQU5TSSBURVJNSU5BTCBFTVVMQVRJT05TCi0jCi0KLSMjIyMgQXZhdGFyCi0jCi0jIFRoZXNlIGVudHJpZXMgYXR0ZW1wdCB0byBkZXNjcmliZSBBdmF0YXIsIGEgdGVybWluYWwgZW11bGF0aW9uIHVzZWQgd2l0aAotIyBNUy1ET1MgYnVsbGV0aW4tYm9hcmQgc3lzdGVtcy4gIEl0IHdhcyBkZXNpZ25lZCB0byBnaXZlIEFOU0ktbGlrZQotIyBjYXBhYmlsaXRpZXMsIGJ1dCB3aXRoIGNoZWFwZXIgKHNob3J0ZXIpIGNvbnRyb2wgc2VxdWVuY2VzLiAgTWVzc3kgZGVzaWduLAotIyBleGNlc3NpdmVseSBkZXBlbmRlbnQgb24gUEMgaWRpb3N5bmNyYWNpZXMsIGJ1dCBhcHBhcmVudGx5IHJhdGhlciBwb3B1bGFyCi0jIGluIHRoZSBCQlMgd29ybGQuCi0jCi0jIE5vIGNvbG9yIHN1cHBvcnQuICBBdmF0YXIgZG9lc24ndCBmaXQgZWl0aGVyIG9mIHRoZSBUZWt0cm9uaXggb3IgSFAgY29sb3IKLSMgbW9kZWxzIHRoYXQgdGVybWluZm8ga25vd3MgYWJvdXQuICBBbiBBdmF0YXIgY29sb3IgYXR0cmlidXRlIGlzIHRoZQotIyBsb3cgNyBiaXRzIG9mIHRoZSBJQk0tUEMgZGlzcGxheS1tZW1vcnkgYXR0cmlidXRlLiAgQmxldGNoLgotIwotIyBJIHdyb3RlIHRoZXNlIGVudHJpZXMgd2hpbGUgbG9va2luZyBhdCB0aGUgQXZhdGFyIHNwZWMuICBJIGRvbid0IGhhdmUKLSMgdGhlIGZhY2lsaXRpZXMgdG8gdGVzdCB0aGVtLiAgTGV0IG1lIGtub3cgaWYgdGhleSB3b3JrLCBvciBkb24ndC4KLSMKLSMgQXZhdGFyIGVzY2FwZXMgbm90IHVzZWQgYnkgdGhlc2UgZW50cmllcyAoYmVjYXVzZSBtYXliZSB5b3UncmUgc21hcnRlcgotIyBhbmQgbW9yZSBtb3RpdmF0ZWQgdGhhbiBJIGFtIGFuZCBjYW4gZmlndXJlIG91dCBob3cgdG8gd3JhcCB0ZXJtaW5mbwotIyBhcm91bmQgc29tZSBvZiB0aGVtLCBhbmQgYmVjYXVzZSB0aGV5IGFyZSB3ZWlyZCBlbm91Z2ggdG8gYmUgZnVubnkpOgotIwkJCQlsZXZlbCAwOgotIyBeTAkJLS0gY2xlYXIgd2luZG93L3Jlc2V0IGN1cnJlbnQgYXR0cmlidXRlIHRvIGRlZmF1bHQKLSMgXlZeQSVwMSVjCS0tIHNldCBjdXJyZW50IGNvbG9yIGF0dHJpYnV0ZSwgcGFyYW1ldGVyIGRlY29kZXMgYXMgZm9sbG93czoKLSMKLSMgICAgICBiaXQ6ICAgICAgICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAotIyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICB8ICAgfCAgICAgICB8Ci0jICAgICAgICAgICAgICAgICAgICstLS0rLS0tKyAgIHwgICArLS0tKy0tLSsKLSMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICB8Ci0jICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgIGZvcmVncm91bmQgY29sb3IKLSMgICAgICAgICAgICAgICAgICAgICAgIHwgIGZvcmVncm91bmQgaW50ZW5zaXR5Ci0jICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZCBjb2xvcgotIwkJCQlsZXZlbCAwKzoKLSMgXlZeSiVwMSVjJXAyJWMlcDMlYyVwNCVjJXA1JWMJLS0gc2Nyb2xsIChwMixwMykgdG8gKHA0LHA1KSB1cCBieSBwMSBsaW5lcwotIyBeVl5LJXAxJWMlcDIlYyVwMyVjJXA0JWMlcDUlYwktLSBzY3JvbGwgKHAyLHAzKSB0byAocDQscDUpIGRvd24gYnkgcDEgbGluZXMKLSMgXlZeTCVwMSVjJXAyJWMlcDMlYwkJLS0gY2xlYXIgcDIgbGluZXMgYW5kIHAzIGNvbHMgdy9hdHRyICVwMQotIyBeVl5NJXAxJWMlcDIlYyVwMyVjJXA0JWMJLS0gZmlsbCBwMyBsaW5lcyAmIHA0IGNvbHMgdy9jaGFyIHAyK2F0dHIgJXAxCi0jICheVl5MIGFuZCBeVl5NIHNldCB0aGUgY3VycmVudCBhdHRyaWJ1dGUgYXMgYSBzaWRlLWVmZmVjdC4pCi0jIF5WIF5ZIDxhPiBbLi4uXSA8Yz4JLS0gcmVwZWF0IHBhdHRlcm4uIDxhPiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBieXRlcwotIwkJCSAgIGluIHRoZSBwYXR0ZXJuLCA8Yz4gdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcGF0dGVybgotIwkJICAJICAgc2hvdWxkIGJlIHJlcGVhdGVkLiBJZiBlaXRoZXIgdmFsdWUgaXMgMCwgbm8tb3AuCi0jCQkJICAgVGhlIHBhdHRlcm4gY2FuIGNvbnRhaW4gQXZhdGFyIGNvbnNvbGUgY29kZXMsCi0jCQkJICAgaW5jbHVkaW5nIG90aGVyIF5WIF5ZIHBhdHRlcm5zLgotIwkJCQlsZXZlbCAxOgotIyBeVl5PCQktLSBjbG9ja3dpc2UgbW9kZSBvbjsgdHVybiBwcmludCBkaXJlY3Rpb24gcmlnaHQgZWFjaCB0aW1lIHlvdQotIwkJICAgaGl0IGEgd2luZG93IGVkZ2UgKHllcywgcmVhbGx5KS4gIFR1cm5lZCBvZmYgYnkgQ1IKLSMgXlZeUAkJLS0gbm8tb3AKLSMgXlZeUSVjCS0tIHF1ZXJ5IHRoZSBkcml2ZXIKLSMgXlZeUgkJLS0gZHJpdmVyIHJlc2V0Ci0jIF5WXlMJCS0tIFNvdW5kIHRvbmUgKFBDLXNwZWNpZmljKQotIyBeVl5UCQkJLS0gY2hhbmdlIGhpZ2hsaWdodCBhdCBjdXJyZW50IGN1cnNvciBwb2l0aW9uIHRvICVjCi0jIF5WXlUlcDElYyVwMiVjCS0tIGhpZ2hsaWdodCB3aW5kb3cgPGE+IHdpdGggYXR0cmlidXRlIDxiPgotIyBeVl5WJXAxJWMlcDIlYyVwMyVjJXA0JWMlcDUlYwotIwkJCS0tIGRlZmluZSB3aW5kb3cKLSMKLSMgRnJvbTogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+IDEgTm92IDE5OTUKLSMgKFRoZSA8Ymxpbms+Lzxib2xkPi88cmV2Pi88c21hY3M+LzxzbXVsPi88c21zbz4gY2FwYWJpbGl0aWVzIGV4aXN0IG9ubHkgdG8KLSMgdGVsbCBuY3Vyc2VzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgaGlnaGxpZ2h0cyBleGlzdDsgaXQgc2hvdWxkIHVzZSA8c2dyPiwKLSMgd2hpY2ggaXMgdGhlIG9ubHkgbWV0aG9kIHRoYXQgd2lsbCBhY3R1YWxseSB3b3JrIGZvciBtdWx0aXBsZSBoaWdobGlnaHRzLikKLSMKLSMgVXBkYXRlIGJ5IFREIC0gMjAwNDogaGFsZiBvZiB0aGlzIHdhcyBpbmNvbnNpc3RlbnQuICBGb3VuZCBkb2N1bWVudGF0aW9uCi0jIGFuZCByZXBhaXJlZCBtb3N0IG9mIHRoZSBkYW1hZ2UuICBzZ3IwIGlzIHByb2JhYmx5IGluY29ycmVjdCwgYnV0IHRoZQotIyBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiBnaXZlcyBubyBjbHVlcyBmb3IgYSB3b3JrYWJsZSBzdHJpbmcuCi1hdmF0YXIwfGF2YXRhciB0ZXJtaW5hbCBlbXVsYXRvciBsZXZlbCAwLAotCWFtLCBiY2UsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JYmxpbms9XlZeQiwgYm9sZD1eVl5BXlAsIGNyPV5NLCBjdWIxPV5WXkUsIGN1ZDE9XlZeRCwKLQljdWYxPV5WXkYsIGN1cD1cMDI2XDAxMCVwMSVjJXAyJWMsIGN1dTE9XlZeQywgZWw9XlZeRywKLQlpbmQ9XkosIGludmlzPV5WXkFcMCwgcmVwPVwwMzElcDElYyVwMiVjLCByZXY9XlZeQXAsCi0Jcm1hY3NALCByczI9XkwsCi0Jc2dyPSU/JXAxJXAyJXwlcDMlfCVwNiV8JXA3JXwldFwwMjZcMDAxJT8lcDcldCV7MTI4fSVlJXswfSU/JXAxJXQlezExMn0lfCU7JT8lcDIldCV7MX0lfCU7JT8lcDMldCV7MTEyfSV8JTslPyVwNiV0JXsxNn0lfCU7JTslYyU7JT8lcDQldFwwMjZcMDAyJTssCi0Jc2dyMD1eVl5BXkcsIHNtYWNzQCwgc21zbz1eVl5BcCwgc211bD1eVl5BXkEsCi0JdXNlPWtsb25lK2FjcywKLSMgRnJvbTogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+IDEgTm92IDE5OTUKLWF2YXRhcjArfGF2YXRhciB0ZXJtaW5hbCBlbXVsYXRvciBsZXZlbCAwKywKLQlkY2gxPV5WXk4sIHJtaXI9XDAyNlxuXDBcMFwwXDAsIHNtaXI9XlZeSSwgdXNlPWF2YXRhcjAsCi0jIEZyb206IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAxIE5vdiAxOTk1Ci1hdmF0YXJ8YXZhdGFyMXxhdmF0YXIgdGVybWluYWwgZW11bGF0b3IgbGV2ZWwgMSwKLQljaXZpcz1eVideQiwgY25vcm09XlYnXkEsIGN2dmlzPV5WXkMsIGRsMT1eVi0sIGlsMT1eVissCi0Jcm1hbT1eViIsIHJtaXI9XlZeUCwgc21hbT1eViQsIHVzZT1hdmF0YXIwKywKLQotIyMjIyBSQmNvbW0KLSMKLSMgUkJDb21tIGlzIGEgbGVhbiBhbmQgbWVhbiB0ZXJtaW5hbCBlbXVsYXRvciB3cml0dGVuIGJ5IHRoZSBJbnRlcnJ1cHQgTGlzdAotIyBtYWludGFpbmVyLCBSYWxmIEJyb3duLiBJdCB3YXMgZmFpcmx5IHBvcHVsYXIgaW4gdGhlIGxhdGUgRE9TIHllYXJzIChlYXJseQotIyAnOTBzKSwgZXNwZWNpYWxseSBpbiB0aGUgQkJTIHdvcmxkLCBhbmQgc3RpbGwgaGFzIHNvbWUgbG95YWwgdXNlcnMgZHVlIHRvCi0jIGl0cyB2ZXJ5IHNtYWxsIG1lbW9yeSBmb290cHJpbnQgYW5kIHRvIGEgY3V0ZSBtYWNybyBsYW5ndWFnZS4KLXJiY29tbXxJQk0gUEMgd2l0aCBSQmNvbW0gYW5kIEVNQUNTIGtleWJpbmRpbmdzLAotCWFtLCBidywgbWlyLCBtc2dyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPV5MLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XkMsIGN1ZjE9XkIsCi0JY3VwPVwwMzclcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9Xl4sIGRjaDE9XlcsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XlosIGVjaD1cRVslcDElZFgsIGVkPV5GNSwgZWw9XlBeUCwgaHQ9XkksCi0JaWw9XEVbJXAxJWRMLCBpbDE9XkssIGluZD1cRUQsIGludmlzPVxFWzhtLAotCWlzMj1cMDE3XDAzNVxFKEJcRSkwXEVbPzdoXEVbPzNsXEVbPjhnLCBrYnM9XkgsCi0Ja2N1YjE9XkIsIGtjdWQxPV5OLCBrY3VmMT1eRiwga2N1dTE9XlAsIGtob21lPV5BLCBuZWw9Xk1cRUQsCi0JcmM9XEU4LCByZXA9XDAzMCVwMSVjJXAyJWMsIHJldj1eUiwgcmk9XEVNLCBybWN1cD0sIHJtZGM9LAotCXJtaXI9Xl0sIHJta3g9XEU+LCBybXNvPV5VLCBybXVsPV5VLAotCXJzMT1cMDE3XEUoQlxFKTBcMDI1XEVbPzNsXEVbPjhnLCBzYz1cRTcsIHNncjA9XEVbbSwKLQlzbWN1cD0sIHNtZGM9LCBzbWlyPV5cLCBzbWt4PVxFPSwgc21zbz1eUiwgc211bD1eVCwKLXJiY29tbS1uYW18SUJNIFBDIHdpdGggUkJjb21tIHdpdGhvdXQgYXV0b3dyYXAsCi0JYW1ALAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGh0PV5JLCBpbmQ9XkosCi0JaXMyPVwwMTdcMDM1XEUoQlxFKTBcRVs/N2xcRVs/M2xcRVs+OGcsIGticz1eSCwKLQlrY3ViMT1eSCwga2N1ZDE9XkosIG5lbD1eTV5KLCB1c2U9cmJjb21tLAotcmJjb21tLXd8SUJNIFBDIHdpdGggUkJjb21tIGluIDEzMiBjb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwKLQliZWw9XkcsIGNyPV5NLCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLAotCWlzMj1cMDE3XDAzNVxFKEJcRSkwXEVbPzdoXEVbPzNoXEVbPjhnLCBrYnM9XkgsCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBuZWw9Xk1eSiwgdXNlPXJiY29tbSwKLQotIyMjIyMjIyMgTENEIERJU1BMQVlTCi0jCi0KLSMjIyMgTWF0cml4IE9yYml0YWwKLSMgZnJvbTogRXJpYyBaLiBBeWVycyAgKGVyaWNAYWxlLm9yZykKLSMKLSMgTWF0cml4IE9yYml0YWwgMjB4NCBMQ0QgZGlzcGxheQotIyBDb21tYW5kIENoYXJhY3RlciBpcyAweEZFIChkZWNpbWFsIDI1NCwgb2N0YWwgMzc2KQotIwotIyBPbiB0aGlzIGRldmljZSwgY3Vyc29yIGFkZHJlc3NhYmlsaXR5IGlzbid0IHBvc3NpYmxlLiAgVGhlIExDRCBleHBlY3RzOgotIyAgICAgIDB4ZmUgRyA8Y29sPiA8cm93PgotIyAgICAgIGZvciBjdXA6ICVwMSA9PSByb3cgYW5kICVwMiBpcyBjb2x1bW4KLSMKLSMgVGhpcyBsaW5lOgotIwljdXA9XDM3NkclcDIlYyVwMSVjCi0jIExPT0tTIGxpa2UgaXQgd2lsbCB3b3JrLCBidXQgc29tZXRpbWVzIG9ubHkgb25lIG9mIHRoZSB0d28gbnVtYmVycyBpcyBzZW50LgotIyBTZWUgdGhlIHRlcm1pbmZvICg1KSBtYW5wYWdlIGNvbW1lbnRlZCByZWdhcmRpbmcgJ1Rlcm1pbmFscyB3aGljaCB1c2UgIiVjIicuCi0jCi0jIEFsYXMsIHRoZXJlIGlzIG5vIGN1cnNvciB1cGxpbmUgY2FwYWJpbGl0eSBvbiB0aGlzIGRpc3BsYXkuCi0jCi0jIFRoZXNlIGVudHJpZXMgYWRkIHNvbWUgJ3Nhbml0eSBzdHVmZicgdG8gdGhlIGNsZWFyIGZ1bmN0aW9uLiAgVGhhdCBpcywgaXQKLSMgZG9lcyBhICdjbGVhcicgYW5kIGFsc28gdHVybnMgT0ZGIGF1dG8gc2Nyb2xsLCB0dXJucyBPTiBBdXRvIExpbmUgV3JhcHBpbmcsCi0jIGFuZCB0dXJucyBvZmYgdGhlIGN1cnNvciBibGlua2luZyBhbmQgc3R1ZmYgbGlrZSB0aGF0LgotIwotIyBOT1RFOiBjYWxsaW5nICdiZWVwJyB0dXJucyBvbiB0aGUgYmFja2xpZ2h0IChiZWxsKQotIyBOT1RFOiBjYWxsaW5nICdmbGFzaCcgdHVybnMgaXQgb24gYW5kIGJhY2sgb2ZmICh2aXN1YWwgYmVsbCkKLSMKLU10eE9yYnxHZW5lcmljIE1hdHJpeCBPcmJpdGFsIExDRCBkaXNwbGF5LAotCWJlbD1cMzc2Ql5BLCBjbGVhcj1cMzc2WFwzNzZDXDM3NlJcMzc2S1wzNzZULAotCWNub3JtPVwzNzZLXDM3NlQsIGN1YjE9XDM3NkwsIGN1ZjE9XDM3Nk0sCi0JZmxhc2g9XDM3NkJcMDAxJDwyMDA+XDM3NkYsIGhvbWU9XDM3NkgsCi1NdHhPcmIyMDR8MjB4NCBNYXRyaXggT3JiaXRhbCBMQ0QgZGlzcGxheSwKLQljb2xzIzIwLCBsaW5lcyM0LCB1c2U9TXR4T3JiLAotTXR4T3JiMTYyfDE2eDIgTWF0cml4IE9yYml0YWwgTENEIGRpc3BsYXksCi0JY29scyMxNiwgbGluZXMjMiwgdXNlPU10eE9yYiwKLSMgVGhlIGVuZAotCi0jIyMjIyMjIyBPTERFUiBURVJNSU5BTCBUWVBFUwotIwotIyBUaGlzIHNlY3Rpb24gaXMgZGV2b3RlZCB0byBvbGRlciBjb21tZXJjaWFsIHRlcm1pbmFsIGJyYW5kcyB0aGF0IGFyZSBub3cKLSMgZGlzY29udGludWVkLCBidXQga25vd24gdG8gYmUgc3RpbGwgaW4gdXNlIG9yIHJlcHJlc2VudGVkIGJ5IGVtdWxhdGlvbnMuCi0jCi0KLSMjIyMgQVQmVCAoYXR0LCB0dHkpCi0jCi0jIFRoaXMgc2VjdGlvbiBhbHNvIGluY2x1ZGVzIFRlbGV0eXBlLWJyYW5kZWQgVkRUcy4KLSMKLSMgVGhlIEFUJlQvVGVsZXR5cGUgdGVybWluYWxzIGdyb3VwIHdhcyBzb2xkIHRvIFN1blJpdmVyIERhdGEgU3lzdGVtcyAobm93Ci0jIEJvdW5kbGVzcyBUZWNobm9sb2dpZXMpOyBmb3IgZGV0YWlscywgc2VlIHRoZSBoZWFkZXIgY29tbWVudCBvbiB0aGUgQUREUwotIyBzZWN0aW9uLgotIwotIyBUaGVzZSBhcmUgQVQmVCdzIG9mZmljaWFsIHRlcm1pbmZvIGVudHJpZXMuICBBbGwtY2FwcyBhbGlhc2VzIGhhdmUgYmVlbgotIyByZW1vdmVkLgotIwotYXR0MjMwMHxzdjgwfEFUJlQgMjMwMCBWaWRlbyBJbmZvcm1hdGlvbiBUZXJtaW5hbCA4MCBjb2x1bW4gbW9kZSwKLQlhbSwgZW8sIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLLCBob21lPVxFW0gsIGh0PV5JLCBpY2g9XEVbJXAxJWRALAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwga2JzPV5ILCBrY2J0PVxFW1osIGtjbHI9XEVbSiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLAotCWtkbDE9XEVbTSwga2YxPVxFWzFyLCBrZjEwPVxFWzEwciwga2YxMT1cRVsxMXIsCi0Ja2YxMj1cRVsxMnIsIGtmMTM9XEVbMTNyLCBrZjE0PVxFWzE0ciwga2YxNT1cRVsxNXIsCi0Ja2YxNj1cRVsxNnIsIGtmMj1cRVsyciwga2YzPVxFWzNyLCBrZjQ9XEVbNHIsIGtmNT1cRVs1ciwKLQlrZjY9XEVbNnIsIGtmNz1cRVs3ciwga2Y4PVxFWzhyLCBrZjk9XEVbOXIsIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbQCwga2lsMT1cRVtMLCBtYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXJldj1cRVs3bSwgcm1pcj1cRVs0bCwgcm1zbz1cRVttLCBzZ3IwPVxFW20sIHNtaXI9XEVbNGgsCi0Jc21zbz1cRVs3bSwKLWF0dDIzNTB8QVQmVCAyMzUwIFZpZGVvIEluZm9ybWF0aW9uIFRlcm1pbmFsIDgwIGNvbHVtbiBtb2RlLAotCW1jMEAsIG1jNEAsIG1jNUAsIHVzZT1hdHQyMzAwLAotCi0jIE11c3Qgc2V0dXAgUkVUVVJOIEtFWSAtIENSLCBSRUMnVkQgTEYgLSBJTkRFWC4KLSMgU2VlbXMgdXB3YXJkIGNvbXBhdGlibGUgd2l0aCB2dDEwMCwgcGx1cyBpbnMvZGVsIGxpbmUvY2hhci4KLSMgT24gc2dyLCB0aGUgcHJvdGVjdGlvbiBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KLSMgTm8gY2hlY2sgaXMgbWFkZSB0byBtYWtlIHN1cmUgdGhhdCBvbmx5IDMgcGFyYW1ldGVycyBhcmUgb3V0cHV0LgotIyAJc3RhbmRvdXQ9IHJldmVyc2UgKyBoYWxmLWludGVuc2l0eSA9IDMgfCA1LgotIyAJYm9sZD0gcmV2ZXJzZSArIHVuZGVybGluZSA9IDIgfCAzLgotIyBub3RlIHRoYXQgaGFsZi1icmlnaHQgYmxpbmtpbmcgZG9lc24ndCBsb29rIGRpZmZlcmVudCBmcm9tIG5vcm1hbCBibGlua2luZy4KLSMgTk9URTp5b3UgbXVzdCBwcm9ncmFtIHRoZSBmdW5jdGlvbiBrZXlzIGZpcnN0LCBsYWJlbCBzZWNvbmQhCi0jIChhdHQ0NDEwOiBhIEJTRCBlbnRyeSBoYXMgYmVlbiBzZWVuIHdpdGggdGhlIGZvbGxvd2luZyBjYXBhYmlsaXRpZXM6Ci0jIDxpczI9XEVbPzZsPiwgPGtmMT1cRU9jPiwgPGtmMj1cRU9kPiwgPGtmMz1cRU9lPiwgPGtmND1cRU9nPiwKLSMgPGtmNj1cRU9oPiwgPGtmNz1cRU9pPiwgPGtmOD1cRU9qPiwgLS0gZXNyKQotYXR0NTQxMHYxfGF0dDQ0MTB2MXx0dHk1NDEwdjF8QVQmVCA0NDEwLzU0MTAgODAgY29sdW1ucyAtIHZlcnNpb24gMSwKLQlhbSwgaHMsIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxoIzIsIGxpbmVzIzI0LCBsdyM4LCBubGFiIzgsIHdzbCM4MCwKLQlhY3NjPSsrXCxcLC0tLi4wMGBgYWFmZmdnaGhqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsyOzdtLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPVxFW0IsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGZzbD1cRTgsIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoMT1cRVtALCBpbDE9XEVbTCwgaW5kPV5KLCBpbnZpcz1cRVs4bSwgaXMxPVxFWz8zbFxFKTAsCi0JaXMzPVxFWzE7MDNxICAgZjEgICAgICAgICAgIFxFT1BcRVsyOzAzcSAgIGYyICAgICAgICAgICBcRU9RXEVbMzswM3EgICBmMyAgICAgICAgICAgXEVPUlxFWzQ7MDNxICAgZjQgICAgICAgICAgIFxFT1NcRVs1OzAzcSAgIGY1ICAgICAgICAgICBcRU9UXEVbNjswM3EgICBmNiAgICAgICAgICAgXEVPVVxFWzc7MDNxICAgZjcgICAgICAgICAgIFxFT1ZcRVs4OzAzcSAgIGY4ICAgICAgICAgICBcRU9XLAotCWticz1eSCwga2Nscj1cRVsySiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT1QsCi0Ja2Y2PVxFT1UsIGtmNz1cRU9WLCBrZjg9XEVPVywga2hvbWU9XEVbSCwga2xsPVxFWzI0OzFILAotCWxsPVxFWzI0SCwgbmVsPV5NXkosCi0JcGZ4PVxFWyVwMSUxZDslcDIlbCUyLjJkcSAgIGYlcDElMWQgICAgICAgICAgICVwMiVzLAotCXBsbj1cRVslcDElZDswMHElcDIlOi0xNnMsIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCi0Jcm1hY3M9Xk8sIHJtc289XEVbbSwgcm11bD1cRVttLCByczI9XEVjXEVbPzNsXEVbMjsweSwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNSV8JXQ7MiU7JT8lcDIlcDYlfCV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCVwNiV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0c2w9XEU3XEVbMjU7JXAxJXsxfSUrJWRILAotCi1hdHQ0NDEwdjEtd3xhdHQ1NDEwdjEtd3x0dHk1NDEwdjEtd3xBVCZUIDQ0MTAvNTQxMCAxMzIgY29sdW1ucyAtIHZlcnNpb24gMSwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlpczE9XEVbPzNoXEUpMCwgcnMyPVxFY1xFWz8zaFxFWzI7MHksIHVzZT1hdHQ1NDEwdjEsCi0KLWF0dDQ0MTB8YXR0NTQxMHx0dHk1NDEwfEFUJlQgNDQxMC81NDEwIDgwIGNvbHVtbnMgLSB2ZXJzaW9uIDIsCi0JT1RicywKLQlwZng9XEVbJXAxJWQ7JXAyJWwlMDJkcSAgIGYlcDElZCAgICAgICAgICAgJXAyJXMsCi0JdXNlPWF0dDU0MTB2MSwKLQotYXR0NTQxMC13fGF0dDQ0MTAtd3w0NDEwLXd8dHR5NTQxMC13fDU0MTAtd3xBVCZUIDQ0MTAvNTQxMCBpbiAxMzIgY29sdW1uIG1vZGUsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JaXMxPVxFWz8zaFxFKTAsIHJzMj1cRWNcRVs/M2hcRVsyOzB5LCB1c2U9YXR0NDQxMCwKLQotIyA1NDEwIGluIHRlcm1zIG9mIGEgdnQxMDAKLSMgKHY1NDEwOiBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIGluaXQgc3RyaW5nIC0tIGVzcikKLXY1NDEwfGF0dDU0MTAgaW4gdGVybXMgb2YgYSB2dDEwMCwKLQlhbSwgbWlyLCBtc2dyLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtJDwyPiwgYm9sZD1cRVsxbSQ8Mj4sCi0JY2xlYXI9XEVbSFxFW0okPDUwPiwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dTE9XEVbQSQ8Mj4sIGRjaDE9XEVbUCwKLQlkbDE9XEVbTSwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgZWwxPVxFWzFLJDwzPiwKLQllbmFjcz1cRShCXEUpMCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoMT1cRVtALAotCWlsMT1cRVtMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywKLQlrY3V1MT1cRU9BLCByYz1cRTgsIHJldj1cRVs3bSQ8Mj4sIHJpPVxFTSQ8NT4sIHJtYWNzPV5PLAotCXJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttJDwyPiwKLQlybXVsPVxFW20kPDI+LCByczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyPiwKLQlzZ3IwPVxFW21cMDE3JDwyPiwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzE7N20kPDI+LCBzbXVsPVxFWzRtJDwyPiwgdGJjPVxFWzNnLAotCXVzZT12dDEwMCtmbmtleXMsCi0KLSMKLSMgVGVsZXR5cGUgTW9kZWwgNTQyMCAtLSBBIHNvdXBlZCB1cCA1NDEwLCB3aXRoIG11bHRpcGxlIHdpbmRvd3MsCi0jIGV2ZW4hIHRoZSA1NDIwIGhhcyB0aHJlZSBtb2Rlczogc2Nyb2xsLCB3aW5kb3cgb3IgcGFnZSBtb2RlCi0jIHRoaXMgdGVybWluZm8gc2hvdWxkIHdvcmsgaW4gc2Nyb2xsIG9yIHdpbmRvdyBtb2RlLCBidXQgZG9lc24ndAotIyB0YWtlIGFkdmFudGFnZSBvZiBhbnkgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbS4KLSMKLSMgSGFzIG1lbW9yeSBiZWxvdyAoMiBsaW5lcyEpCi0jIDMgcGFnZXMgb2YgbWVtb3J5IChwbHVzIHNvbWUgc3BhcmUpCi0jIFRoZSA1NDEwIHNlcXVlbmNlcyBmb3IgPGN1cD4sIDxjdnZpcz4sIDxkY2g+LCA8ZGw+LCA8ZWNoPiwgPGZsYXNoPiwgPGhvbWU+LAotIyA8aHBhPiwgPGh0cz4gd291bGQgd29yayBmb3IgdGhlc2UsIGJ1dCB0aGVzZSB3b3JrIGluIGJvdGggc2Nyb2xsIGFuZCB3aW5kb3cKLSMgbW9kZS4uLiBVbnNldCBpbnNlcnQgY2hhcmFjdGVyIHNvIGluc2VydCBtb2RlIHdvcmtzCi0jIDxpczE+IHNldHMgODAgY29sdW1uIG1vZGUsCi0jIDxpczI+IGVzY2FwZSBzZXF1ZW5jZToKLSMgMSkgdHVybiBvZmYgYWxsIGZvbnRzCi0jIDIpIGZ1bmN0aW9uIGtleXMgb2ZmLCBrZXlib2FyZCBsb2NrIG9mZiwgY29udHJvbCBkaXNwbGF5IG9mZiwKLSMgICAgaW5zZXJ0IG1vZGUgb2ZmLCBlcmFzdXJlIG1vZGUgb2ZmLAotIyAzKSBmdWxsIGR1cGxleCwgbW9uaXRvciBtb2RlIG9mZiwgc2VuZCBncmFwaGljcyBvZmYsIG5sIG9uIGxmIG9mZgotIyA0KSByZXNldCBvcmlnaW4gbW9kZQotIyA1KSBzZXQgbGluZSB3cmFwYXJvdW5kCi0jIDYpIGV4aXQgZXJhc3VyZSBtb2RlLCBwb3NpdGlvbmFsIGF0dHJpYnV0ZSBtb2RlLCBhbmQgZXJhc3VyZSBleHRlbnQgbW9kZQotIyA3KSBjbGVhciBtYXJnaW5zCi0jIDgpIHByb2dyYW0gRU5URVIgdG8gdHJhbnNtaXQgXkosCi0jIFdlIHVzZSBcMjEyIHRvIHByb2dyYW0gdGhlIF5KIGJlY2F1c2UgYSBiYXJlIF5KIHdpbGwgZ2V0IHRyYW5zbGF0ZWQgYnkKLSMgVU5JWCBpbnRvIGEgQ1IvTEYuIFRoZSBlbnRlciBrZXkgaXMgbmVlZGVkIGZvciBBVCZUIHVPTVMuCi0jICAgICAxICAgICAgMiAgICAgICAgICAgIDMgICAgICAgICAgICAgIDQgICAgIDUgICAgIDYgICAgNyAgOAotIyA8aXMzPiBzZXQgc2NyZWVuIGNvbG9yIHRvIGJsYWNrLAotIyBObyByZXByZXNlbnRhdGlvbiBpbiB0ZXJtaW5mbyBmb3IgdGhlIGRlbGV0ZSB3b3JkIGtleToga2R3MT1cRWQKLSMgS2V5IGNhcGFiaWxpdGllcyBhc3N1bWUgdGhlIHBvd2VyLXVwIHNlbmQgc2VxdWVuY2UuLi4KLSMgVGhpcyA8cm1jdXA+IGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBpdCBoZWxwcyBtYXhpbWl6ZQotIyBtZW1vcnkgdXNlZnVsbmVzczogPHJtY3VwPVxFej4sCi0jIEFsdGVybmF0ZSBzZ3IwOgk8c2dyMD1cRVttXEVXXk8+LAotIyBBbHRlcm5hdGUgc2dyOgk8c2dyPVxFWyU/JXAxJXQyOzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA1JXQ7MiU7JT8lcDcldDs4JTttJT8lcDgldFxFViU7JT8lcDkldF5OJWVeTyU7PiwKLSMgc21reCBwcm9ncmFtcyB0aGUgU1lTIFBGIGtleXMgdG8gc2VuZCBhIHNldCBzZXF1ZW5jZS4KLSMgSXQgYWxzbyBzZXRzIHVwIGxhYmVscyBmMSwgZjIsIC4uLiwgZjgsIGFuZCBzZW5kcyBlZGl0IGtleXMuCi0jIFRoaXMgc3RyaW5nIGNhdXNlcyB0aGVtIHRvIHNlbmQgdGhlIHN0cmluZ3MgPGtmMT4tPGtmOD4KLSMgd2hlbiBwcmVzc2VkIGluIFNZUyBQRiBtb2RlLgotIyAoYXR0NDQxNTogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1hdHQ0NDE1fHR0eTU0MjB8YXR0NTQyMHxBVCZUIDQ0MTUvNTQyMCA4MCBjb2xzLAotCU9UYnMsIGRiLCBtaXIsIHhvbiwKLQlsaCMyLCBsbSM3OCwgbHcjOCwgbmxhYiM4LCB3c2wjNTUsCi0JY2J0PVxFW1osIGNsZWFyPVxFW3hcRVtKLCBjbm9ybT1cRVsxMTswaiwgY3ViPVxFWyVwMSVkRCwKLQljdWQ9XEVbJXAxJWRCLCBjdWY9XEVbJXAxJWRDLCBjdXA9XEVbJWklcDElZDslcDIlZHgsCi0JY3V1PVxFWyVwMSVkQSwgY3Z2aXM9XEVbMTE7MWosIGRjaD1cRVslcDElZFAsCi0JZGw9XEVbJXAxJWRNLCBlY2g9XEVbJXAxJWRzXEVbJXAxJWRELAotCWZsYXNoPVxFWz81aCQ8MjAwPlxFWz81bCwgaG9tZT1cRVt4LAotCWhwYT1cRVslcDElezF9JSslZEcsIGh0cz1cRUgsIGljaD1cRVslcDElZEAsIGljaDFALAotCWlsPVxFWyVwMSVkTCwgaW5kbj1cRVslcDElZEUsIGlzMT1cRVs/M2wkPDEwMD4sCi0JaXMyPVxFW21cMDE3XEVbMTsyOzM7NDs2bFxFWzEyOzEzOzE0OzIwbFxFWz82Ozk3Ozk5bFxFWz83aFxFWzRpXEV4XEVbMjE7MWpcMjEyLAotCWlzMz1cRVs/NWwsIGtiZWc9XEV0LCBrY2J0PVxFW1osIGtkY2gxPVxFW1AsIGtkbDE9XEVbTSwKLQlrZWw9XEVbMkssIGtlbmQ9XEV6LCBrZW50PVxFZW50LCBrZjE9XEVPYywga2YyPVxFT2QsCi0Ja2YzPVxFT2UsIGtmND1cRU9mLCBrZjU9XEVPZywga2Y2PVxFT2gsIGtmNz1cRU9pLCBrZjg9XEVPaiwKLQlraWNoMT1cRVs0aCwga2lsMT1cRVtMLCBraW5kPVxFW1QsIGtsbD1cRXUsIGtucD1cRVtVLAotCWtwcD1cRVtWLCBrcmk9XEVbUywgbGYxPUYxLCBsZjI9RjIsIGxmMz1GMywgbGY0PUY0LCBsZjU9RjUsCi0JbGY2PUY2LCBsZjc9RjcsIGxmOD1GOCwgbGw9XEV3LCBtYzA9XEVbPzJpLCBtYzQ9XEVbPzlpLAotCW1jNT1cRVs/NGksIG1yY3VwPVxFWyVpJXAxJWQ7JXAyJWR0LAotCXBmeD1cRVslcDElZDslcDIlbCUwMmRxICAgRiVwMSVkICAgICAgICAgICAlcDIlcywKLQlwbG49XEVbJXAxJWQ7MDswOzBxJXAyJTotMTYuMTZzLCBwcm90PVxFViwKLQlyaW49XEVbJXAxJWRGLCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwKLQlybWt4PVxFWzE5OzBqXEVbMjE7MWpcMjEyLCBybWxuPVxFfCwKLQlzZ3I9XEVbMCU/JXAxJXA1JXwldDsyJTslPyVwMiVwNiV8JXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbMTk7MWpcRVsyMTs0alxFZW50LCBzbWxuPVxFfiwgdGJjPVxFWzNnLAotCXRzbD1cRTdcRVsyNTslcDElezh9JSslZEgsIHZwYT1cRVslcDElezF9JSslZGQsCi0JdXNlPWF0dDQ0MTAsCi0KLWF0dDQ0MTUtd3x0dHk1NDIwLXd8YXR0NTQyMC13fEFUJlQgNDQxNS81NDIwIDEzMiBjb2xzLAotCWNvbHMjMTMyLCBsbSM1NCwgd3NsIzk3LAotCWlzMT1cRVs/M2gkPDEwMD4sIHVzZT1hdHQ0NDE1LAotCi1hdHQ0NDE1LXJ2fHR0eTU0MjAtcnZ8YXR0NTQyMC1ydnxBVCZUIDQ0MTUvNTQyMCA4MCBjb2xzL3J2LAotCWZsYXNoPVxFWz81bCQ8MjAwPlxFWz81aCwgaXMzPVxFWz81aCwgdXNlPWF0dDQ0MTUsCi0KLWF0dDQ0MTUtdy1ydnx0dHk1NDIwLXctcnZ8YXR0NTQyMC13LXJ2fEFUJlQgNDQxNS81NDIwIDEzMiBjb2xzL3J2LAotCWNvbHMjMTMyLCBsbSM1NCwgd3NsIzk3LAotCWZsYXNoPVxFWz81bCQ8MjAwPlxFWz81aCwgaXMxPVxFWz8zaCQ8MTAwPiwgaXMzPVxFWz81aCwKLQl1c2U9YXR0NDQxNSwKLQotIyBOb3RlIHRoYXQgdGhpcyBtb2RlIHBlcm1pdHMgcHJvZ3JhbW1pbmcgVVNFUiBQRiBLRVlTIGFuZCBsYWJlbHMKLSMgSG93ZXZlciwgd2hlbiB5b3UgcHJvZ3JhbSB1c2VyIHBmIGxhYmVscyB5b3UgaGF2ZSB0byByZXNlbGVjdAotIyB1c2VyIHBmIGtleXMgdG8gbWFrZSB0aGVtIGFwcGVhciEKLWF0dDQ0MTUrbmx8dHR5NTQyMCtubHxhdHQ1NDIwK25sfGdlbmVyaWMgQVQmVCA0NDE1LzU0MjAgY2hhbmdlcyBmb3Igbm90IGNoYW5naW5nIGxhYmVscywKLQlrZjFALCBrZjJALCBrZjNALCBrZjRALCBrZjVALCBrZjZALCBrZjdALCBrZjhALAotCXBmeD1cRVslcDElZDslcDIlbCUwMmQ7MDsxcSAgIEYlcDElZCAgICAgICAgICAgJXAyJXMsCi0JcGxuPVxFWyVwMSVkOzA7MDsxcSVwMiU6LTE2LjE2cywKLQotYXR0NDQxNS1ubHx0dHk1NDIwLW5sfGF0dDU0MjAtbmx8QVQmVCA0NDE1LzU0MjAgd2l0aG91dCBjaGFuZ2luZyBsYWJlbHMsCi0Ja2YxQCwga2YyQCwga2YzQCwga2Y0QCwga2Y1QCwga2Y2QCwga2Y3QCwga2Y4QCwgdXNlPWF0dDQ0MTUrbmwsCi0JdXNlPWF0dDQ0MTUsCi0KLWF0dDQ0MTUtcnYtbmx8dHR5NTQyMC1ydi1ubHxhdHQ1NDIwLXJ2LW5sfEFUJlQgNDQxNS81NDIwIHJldmVyc2UgdmlkZW8gd2l0aG91dCBjaGFuZ2luZyBsYWJlbHMsCi0Ja2YxQCwga2YyQCwga2YzQCwga2Y0QCwga2Y1QCwga2Y2QCwga2Y3QCwga2Y4QCwgdXNlPWF0dDQ0MTUrbmwsCi0JdXNlPWF0dDQ0MTUtcnYsCi0KLWF0dDQ0MTUtdy1ubHx0dHk1NDIwLXctbmx8YXR0NTQyMC13LW5sfEFUJlQgNDQxNS81NDIwIDEzMiBjb2xzIHdpdGhvdXQgY2hhbmdpbmcgbGFiZWxzLAotCWtmMUAsIGtmMkAsIGtmM0AsIGtmNEAsIGtmNUAsIGtmNkAsIGtmN0AsIGtmOEAsIHVzZT1hdHQ0NDE1K25sLAotCXVzZT1hdHQ0NDE1LXcsCi0KLWF0dDQ0MTUtdy1ydi1ufHR0eTU0MjAtdy1ydi1ufGF0dDU0MjAtdy1ydi1ufEFUJlQgNDQxNS81NDIwIDEzMiBjb2xzIHJldmVyc2Ugd2l0aG91dCBjaGFuZ2luZyBsYWJlbHMsCi0Ja2YxQCwga2YyQCwga2YzQCwga2Y0QCwga2Y1QCwga2Y2QCwga2Y3QCwga2Y4QCwgdXNlPWF0dDQ0MTUrbmwsCi0JdXNlPWF0dDQ0MTUtdy1ydiwKLQotYXR0NTQyMF8yfEFUJlQgNTQyMCBtb2RlbCAyIDgwIGNvbHMsCi0JYW0sIGRiLCBocywgbWlyLCBtc2dyLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGgjMiwgbGluZXMjMjQsIGxtIzc4LCBsdyM4LCBubGFiIzgsIHdzbCM1NSwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJsaW5rPVxFWzVtLCBjYnQ9XEVbMVosIGNsZWFyPVxFSFxFSiwgY25vcm09XEVbMTE7MGosCi0JY3I9XEVHLCBjc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkMT1cRVsxQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVsxQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN2dmlzPVxFWzExOzFqLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVjaD1cRVslcDElZHNcRVslcDElZEQsIGVkPVxFWzBKLCBlbD1cRVswSywKLQllbDE9XEVbMUssIGZsYXNoPVxFWz81aCQ8MjAwPlxFWz81bCwgZnNsPVxFOCwgaG9tZT1cRVtILAotCWhwYT1cRVslcDElezF9JSslZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkRSwKLQlpbnZpcz1cRVs4bSwKLQlpczE9XEVbMDsyM3JcRXhcRXlcRVsyOzBqXEVbMzszalxFWzQ7MGpcRVs1OzBqXEVbNjswalxFWzc7MGpcRVs4OzBqXEVbOTsxalxFWzEwOzBqXEVbMTU7MGpcRVsxNjsxalxFWzE5OzBqXEVbMjA7MWpcRVsyOTswalxFWzE7MjRyLAotCWtiZWc9XEV0LCBrYnM9XkgsIGtjYnQ9XEVbWiwga2Nscj1cRVsySiwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLCBrZGwxPVxFW00sCi0Ja2VsPVxFWzJLLCBrZW5kPVxFeiwga2VudD1eSiwga2YxPVxFT2MsIGtmMj1cRU9kLCBrZjM9XEVPZSwKLQlrZjQ9XEVPZiwga2Y1PVxFT2csIGtmNj1cRU9oLCBrZjc9XEVPaSwga2Y4PVxFT2osIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbNGgsIGtpbDE9XEVbTCwga2luZD1cRVtULCBrbGw9XEV1LCBrbnA9XEVbVSwKLQlrcHA9XEVbViwga3JpPVxFW1MsIGxmMT1GMSwgbGYyPUYyLCBsZjM9RjMsIGxmND1GNCwgbGY1PUY1LAotCWxmNj1GNiwgbGY3PUY3LCBsZjg9RjgsIGxsPVxFdywgbWMwPVxFWz87MmksIG1jND1cRVs0aSwKLQltYzU9XEVbNWksIG1yY3VwPVxFWyVpJXAxJWQ7JXAyJWR0LCBuZWw9Xk1eSiwKLQlwZng9XEVbJXAxJWQ7JXAyJWwlMDJkcSAgIEYlcDElZCAgICAgICAgICAgJXAyJXNcRX4sCi0JcGxuPVxFWyVwMSVkOzA7MDswcSVwMiU6LTE2LjE2c1xFfiwgcHJvdD1cRVYsIHJjPVxFOCwKLQlyZXY9XEVbN20sIHJpPVxFTSwgcmluPVxFWyVwMSVkRiwgcm1hY3M9Xk8sIHJta3g9XEVbMTk7MGosCi0Jcm1sbj1cRXwsIHJtc289XEVbbSwgcm11bD1cRVttLCByczI9XEVjXEVbPzNsXEVbMjsweSwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNSV8JXQ7MiU7JT8lcDIlcDYlfCV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCVwNiV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21reD1cRVsxOTsxaiwgc21sbj1cRX4sCi0Jc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXRzbD1cRTdcRVsyNTslcDElezh9JSslZEgsIHZwYT1cRVslcDElezF9JSslZGQsCi1hdHQ1NDIwXzItd3xBVCZUIDU0MjAgbW9kZWwgMiBpbiAxMzIgY29sdW1uIG1vZGUsCi0JY29scyMxMzIsCi0JaXMxPVxFWzA7MjNyXEV4XEV5XEVbMjswalxFWzM7M2pcRVs0OzBqXEVbNTsxalxFWzY7MGpcRVs3OzBqXEVbODswalxFWzk7MWpcRVsxMDswalxFWzE1OzBqXEVbMTY7MWpcRVsxOTswalxFWzIwOzFqXEVbMjk7MGpcRVsxOzI0ciwKLQl1c2U9YXR0NTQyMF8yLAotCi1hdHQ0NDE4fGF0dDU0MTh8QVQmVCA1NDE4IDgwIGNvbHMsCi0JYW0sIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsCi0JY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFWzFQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbMEosIGVsPVxFWzBLLCBob21lPVxFW0gsCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVsxQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbMUwsIGluZD1eSiwKLQlpczE9XEVbPzNsLCBpczI9XEUpMFxFPzZsXEU/NWwsIGtjbHI9XEVbJSUsIGtjdWIxPVxFQCwKLQlrY3VkMT1cRVUsIGtjdWYxPVxFQSwga2N1dTE9XEVTLCBrZW50PVxFWywga2YxPVxFW2gsCi0Ja2YxMD1cRVttLCBrZjExPVxFW24sIGtmMTI9XEVbbywga2YxMz1cRVtILCBrZjE0PVxFW0ksCi0Ja2YxNT1cRVtKLCBrZjE4PVxFW0ssIGtmMTk9XEVbTCwga2YyPVxFW2ksIGtmMjA9XEVbRSwKLQlrZjIxPVxFW18sIGtmMjI9XEVbTSwga2YyMz1cRVtOLCBrZjI0PVxFW08sIGtmMz1cRVtqLAotCWtmNj1cRVtrLCBrZjc9XEVbbCwga2Y4PVxFW2YsIGtmOT1cRVt3LCBraG9tZT1cRWMsIHJjPVxFOCwKLQlyZXY9XEVbN20sIHJtYWNzPV5PLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotYXR0NDQxOC13fGF0dDU0MTgtd3xBVCZUIDU0MTggMTMyIGNvbHMsCi0JY29scyMxMzIsCi0JaXMxPVxFWz8zaCwgdXNlPWF0dDU0MTgsCi0KLWF0dDQ0MjB8dHR5NDQyMHx0ZWxldHlwZSA0NDIwLAotCU9UYnMsIGRhLCBkYiwgZW8sIG1zZ3IsIHVsLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsIGxtIzcyLAotCWJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1cRUcsIGN1YjE9XEVELCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRjaDE9XEVQLAotCWRsMT1cRU0sIGVkPVxFSiwgZWw9XEV6LCBob21lPVxFSCwgaWwxPVxFTCwgaW5kPVxFSFxFTVxFWTdccywKLQlrY2J0PVxFTywga2Nscj1cRUosIGtjdWIxPV5ILCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKLQlrY3V1MT1cRUEsIGtkY2gxPVxFUCwga2RsMT1cRU0sIGtmMD1cRVUsIGtmMz1cRUAsIGtob21lPVxFSCwKLQlraWNoMT1cRVxeLCBraWwxPVxFTCwga2luZD1cRVMsIGtyaT1cRVQsCi0JbGYwPXNlZ21lbnQgYWR2YW5jZSwgbGYzPWN1cnNvciB0YWIsIHJtZGNALCBybXNvPVxFfiwKLQlybXVsPVxFWiwgc21kY0AsIHNtc289XEV9LCBzbXVsPVxFXFwsCi0KLSMgIFRoZSBmb2xsb3dpbmcgaXMgYSB0ZXJtaW5mbyBlbnRyeSBmb3IgdGhlIFRlbGV0eXBlIDQ0MjQKLSMgIGFzeW5jaHJvbm91cyBrZXlib2FyZC1kaXNwbGF5IHRlcm1pbmFsLiAgSXQgc3VwcG9ydHMKLSMgIHRoZSB2aSBlZGl0b3IuICBUaGUgdGVybWluYWwgbXVzdCBiZSBzZXQgdXAgYXMgZm9sbG93cywKLSMKLSMgCUhJR0hMSUdIVCBERUZJTklUSU9OCTMtVE9ORQotIyAJRElTUExBWSBGVU5DVElPTglHUk9VUCBJSUkKLSMKLSMgIFRoZSBzZWNvbmQgZW50cnkgYmVsb3cgcHJvdmlkZXMgbGltaXRlZCAoYSBsYSBhZG0zYSkKLSMgIG9wZXJhdGlvbiB1bmRlciBHUk9VUCBJSS4KLSMKLSMgIFRoaXMgbXVzdCBiZSB1c2VkIHdpdGggRElTUExBWSBGVU5DVElPTiBHUk9VUCBJIG9yIElJSQotIyAJYW5kIEhJR0hMSUdIVCBERUZJTklUSU9OIDMtVE9ORQotIyBUaGUgdGVybWluYWwgaGFzIGVpdGhlciBib2xkIG9yIGJsaW5rLCBkZXBlbmRpbmcgb24gb3B0aW9ucwotIwotIyAoYXR0NDQyNDogY29tbWVudGVkIG91dCA8c21jdXA+PVxFWzFtLCB3ZSBkb24ndCBuZWVkIGJyaWdodCBsb2NrZWQgb24gLS0gZXNyKQotYXR0NDQyNHx0dHk0NDI0fHRlbGV0eXBlIDQ0MjQsCi0JT1RicywgYW0sIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEUzLCBib2xkPVxFMywgY2J0PVxFTywgY2xlYXI9XEVbSFxFWzJKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRUIsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRUEsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVAsIGRpbT1cRVcsIGRsPVxFWyVwMSVkTSwgZGwxPVxFTSwKLQllZD1cRUosIGVsPVxFeiwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFXF4sIGlsPVxFWyVwMSVkTCwgaWwxPVxFTCwgaW5kPV5KLCBpczI9XEVbMjBsXEVbPzdoLAotCWticz1eSCwga2Nscj1cRUosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsCi0Ja2hvbWU9XEVbSCwgbmVsPVxFRSwgcmV2PVxFfSwgcmk9XEVULCBybWFjcz1cRShCLCBybXNvPVxFfiwKLQlybXVsPVxFWiwKLQlzZ3I9XEVbJT8lcDEldDclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNiV0OzElOyU/JXA2JXA0JXwldDs1JTslPyVwNSV0OzAlO20sCi0Jc2dyMD1cRVhcRX5cRVpcRTRcRShCLCBzbWFjcz1cRSgwLCBzbXNvPVxFfSwgc211bD1cRVxcLAotCXRiYz1cRUYsCi0KLWF0dDQ0MjQtMXx0dHk0NDI0LTF8dGVsZXR5cGUgNDQyNCBpbiBkaXNwbGF5IGZ1bmN0aW9uIGdyb3VwIEksCi0Ja2NsckAsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2hvbWVALAotCXVzZT1hdHQ0NDI0LAotCi0jIFRoaXMgZW50cnkgaXMgbm90IG9uZSBvZiBBVCZUJ3Mgb2ZmaWNpYWwgb25lcywgaXQgd2FzIHRyYW5zbGF0ZWQgZnJvbSB0aGUKLSMgNC40QlNEIHRlcm1jYXAgZmlsZS4gIFRoZSBoaWdobGlnaHQgc3RyaW5ncyBhcmUgZGlmZmVyZW50IGZyb20gYXR0NDQyNC4KLSMgSSBoYXZlIG5vIGlkZWEgd2h5IHRoaXMgaXMgLS0gb2xkZXIgZmlybXdhcmUgdmVyc2lvbiwgbWF5YmU/Ci0jIFRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIGFyZSB0aGUgY29tbWVudCBvcmlnaW5hbGx5IGF0dGFjaGVkIHRvIHRoZSBlbnRyeToKLSMgVGhpcyBlbnRyeSBhcHBlYXJzIHRvIGF2b2lkIHRoZSB0b3AgbGluZSAtIEkgaGF2ZSBubyBpZGVhIHdoeS4KLSMgRnJvbTogandiIFdlZCBNYXIgMzEgMTM6MjU6MDkgMTk4MiByZW1vdGUgZnJvbSBpaHV4cAotYXR0NDQyNG18dHR5NDQyNG18dGVsZXR5cGUgNDQyNE0sCi0JYW0sIGRhLCBkYiwgbWlyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzIzLAotCWJlbD1eRywgY2xlYXI9XEVbMjtIXEVbSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElMmQ7JXAyJTJkSFxFW0IsIGN1dTE9XEVbQSwgZGNoMT1cRVAsCi0JZGwxPVxFTSwgZWw9XEVbSywgaHQ9XkksIGljaDE9XEVcXiwgaWwxPVxFTCwgaW5kPV5KLCBpcD0kPDIvPiwKLQlpczI9XEVbbVxFWzI7MjRyLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwKLQlrZjQ9XEVPUywga2hvbWU9XEVbSCwgbmVsPV5NXkosIHJpPVxFVCwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2dyMD1cRVttLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIFRoZSBUZWxldHlwZSA1NDI1IGlzIHJlYWxseSB2ZXJzaW9uIDIgb2YgdGhlIFRlbGV0eXBlIDU0MjAuIEl0Ci0jIGlzIHF1aXRlIHNpbWlsYXIsIGV4Y2VwdCBmb3Igc29tZSBtaW5vciBkaWZmZXJlbmNlcy4gTm8gcGFnZQotIyBtb2RlLCBmb3IgZXhhbXBsZSwgc28gYWxsIG9mIHRoZSA8Y3VwPiBzZXF1ZW5jZXMgdXNlZCBhYm92ZSBoYXZlCi0jIHRvIGNoYW5nZSBiYWNrIHRvIHdoYXQncyBiZWluZyB1c2VkIGZvciB0aGUgNTQxMC4gTWFueSBvZiB0aGUKLSMgb3B0aW9uIHNldHRpbmdzIGhhdmUgY2hhbmdlZCB0aGVpciBudW1iZXJpbmcgYXMgd2VsbC4KLSMKLSMgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgb24gYSBwcmVsaW1pbmFyeSBtb2RlbC4KLSMKLSMgKGF0dDU0MjU6IGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nIC0tIGVzcikKLWF0dDU0MjV8dHR5NTQyNXxhdHQ0NDI1fEFUJlQgNDQyNS81NDI1LAotCWFtLCBkYSwgZGIsIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaCMyLCBsaW5lcyMyNCwgbG0jNzgsIGx3IzgsIG5sYWIjOCwgd3NsIzU1LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsyOzdtLCBjYnQ9XEVbWiwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbMTI7MGosIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbMTI7MWosIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVjaD1cRVslcDElZHNcRVslcDElZEQsIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRShCXEUpMCwKLQlmbGFzaD1cRVs/NWgkPDIwMD5cRVs/NWwsIGZzbD1cRTgsIGhvbWU9XEVbSCwKLQlocGE9XEVbJXAxJXsxfSUrJWRHLCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGluZG49XEVbJXAxJWRFLAotCWludmlzPVxFWzhtLCBpczE9XEU8XEVbPzNsJDwxMDA+LAotCWlzMj1cRVttXDAxN1xFWzE7MjszOzQ7NmxcRVsxMjsxMzsxNDsyMGxcRVs/Njs5Nzs5OWxcRVs/N2hcRVs0aVxFeFxFWzI1OzFqXDIxMiwKLQlpczM9XEVbPzVsLCBrYmVnPVxFdCwga2JzPV5ILCBrY2J0PVxFW1osIGtjbHI9XEVbSiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLAotCWtkbDE9XEVbTSwga2VsPVxFWzJLLCBrZW5kPVxFeiwga2VudD1cRWVudCwga2YxPVxFT2MsCi0Ja2YyPVxFT2QsIGtmMz1cRU9lLCBrZjQ9XEVPZiwga2Y1PVxFT2csIGtmNj1cRU9oLCBrZjc9XEVPaSwKLQlrZjg9XEVPaiwga2hvbWU9XEVbSCwga2ljaDE9XEVbNGgsIGtpbDE9XEVbTCwga2luZD1cRVtULAotCWtyaT1cRVtTLCBsbD1cRVsyNEgsIG1jMD1cRVs/MmksIG1jND1cRVs/OWksIG1jNT1cRVs/NGksCi0JbmVsPV5NXkosCi0JcGZ4PVxFWyVwMSVkOyVwMiVsJTAyZHEgICBGJXAxJTFkICAgICAgICAgICAlcDIlcywKLQlwbG49XEVbJXAxJWQ7MDswOzBxJXAyJTotMTYuMTZzLCBwcm90PVxFViwgcmM9XEU4LAotCXJldj1cRVs3bSwgcmk9XEVNLCByaW49XEVbJXAxJWRGLCBybWFjcz1eTywgcm1hbT1cRVs/N2wsCi0Jcm1pcj1cRVs0bCwgcm1reD1cRVsyMTswalxFWzI1OzFqXDIxMiwgcm1sbj1cRXwsCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sIHJzMj1cRWNcRVs/M2xcRVsyOzB5LCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNSV8JXQ7MiU7JT8lcDIlcDYlfCV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCVwNiV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21reD1cRVsyMTsxalxFWzI1OzRqXEVlbnRcRX4sIHNtbG49XEV+LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdHNsPVxFN1xFWzI1OyVwMSV7OH0lKyVkSCwKLQl2cGE9XEVbJXAxJXsxfSUrJWRkLAotCi1hdHQ1NDI1LW5sfHR0eTU0MjUtbmx8YXR0NDQyNS1ubHxBVCZUIDQ0MjUvNTQyNSA4MCBjb2x1bW5zIG5vIGxhYmVscywKLQlzbWt4PVxFWzIxOzFqXEVbMjU7NGpcRWVudCwgdXNlPWF0dDQ0MjUsCi0KLWF0dDU0MjUtd3xhdHQ0NDI1LXd8dHR5NTQyNS13fHRlbGV0eXBlIDQ0MjUvNTQyNSBpbiAxMzIgY29sdW1uIG1vZGUsCi0JY29scyMxMzIsIGxtIzU0LCB3c2wjOTcsCi0JaXMxPVxFWz8zaCQ8MTAwPiwgdXNlPXR0eTU0MjUsCi0KLSMgKGF0dDQ0MjY6IGhpcyBoYWQgYm9ndXMgY2FwYWJpbGl0aWVzOiA6cmk9XEVNOiwgOnJpPVxFWzFVOi4KLSMgSSBhbHNvIGFkZGVkIDxybWFtPi88c21hbT4gLS0gZXNyKQotYXR0NDQyNnx0dHk0NDI2fHRlbGV0eXBlIDQ0MjZTLAotCWFtLCBkYSwgZGIsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbG0jNDgsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJvbGQ9XEVbNW0sIGNsZWFyPVxFW0hcRVsySlxFWzFVXEVbSFxFWzJKXEVbMVYsCi0JY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFUCwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVswSywgaG9tZT1cRVtILAotCWhwYT1cRVslcDElZEcsIGh0PV5JLCBodHM9XEUxLCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFXF4sCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVMLCBpbmQ9XkosIGluZG49XEVbJXAxJWRTLAotCWlzMT1cRWNcRVs/N2gsIGlzMj1cRVttXEVbMTsyNHIsIGticz1eSCwga2NidD1cRU8sCi0Ja2Nscj1cRVsySiwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPVCwga2Y2PVxFT1UsCi0Ja2Y3PVxFT1YsIGtmOD1cRU9XLCBraG9tZT1cRVtILCBrbGw9XEVbMjQ7MUgsIGxsPVxFWzI0SCwKLQluZWw9Xk1eSiwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFVCwgcmluPVxFWyVwMSVkVCwKLQlybWFjcz1cRShCLCBybWFtPVxFWz83bCwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0JcnMyPVxFY1xFWz8zbFxFWzI7MHksIHNjPVxFNywgc2dyMD1cRVttXEUoQiwgc21hY3M9XEUoMCwKLQlzbWFtPVxFWz83aCwgc21zbz1cRVs1bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXZwYT1cRVslcDElZGQsCi0KLSMgVGVybWluZm8gZW50cnkgZm9yIHRoZSBBVCZUIDUxMCBBIFBlcnNvbmFsIFRlcm1pbmFsCi0jIEZ1bmN0aW9uIGtleXMgOSAtIDE2IGFyZSBhdmFpbGFibGUgb25seSBhZnRlciB0aGUKLSMgc2NyZWVuIGxhYmVsZWQgKHNvZnQga2V5cy9hY3Rpb24gYmxvY2tzKSBhcmUgbGFiZWxlZC4gIEZ1bmN0aW9uIGtleQotIyA5IGNvcnJlc3BvbmRzIHRvIHRoZSBsZWZ0bW9zdCB0b3VjaCB0YXJnZXQgb24gdGhlIHNjcmVlbiwKLSMgZnVuY3Rpb24ga2V5IDE2IGNvcnJlc3BvbmRzIHRvIHRoZSByaWdodG1vc3QuCi0jCi0jIFRoaXMgZW50cnkgaXMgYmFzZWQgb24gb25lIGRvbmUgYnkgRXJuaWUgUmljZSBhdCBTdW1taXQsIE5KIGFuZAotIyBjaGFuZ2VkIGJ5IEFubmUgR2FsbHVwLCBTa29raWUsIElMLCB0dHJkYyFhbm5lCi1hdHQ1MTBhfGJjdDUxMGF8QVQmVCA1MTBBIFBlcnNvbmFsIFRlcm1pbmFsLAotCWFtLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBsaCMyLCBsaW5lcyMyNCwgbHcjNywgbmxhYiM4LAotCWFjc2M9K2dcLGgtZi5lYGJocmlzampra2xsbW1ubnFxdHR1dXZ2d3d4eHt7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMjs3bSwgY2J0PVxFW1osCi0JY2l2aXM9XEVbMTE7MHwsIGNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVsxMTszfCwgY3I9Xk0sCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVsxQiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGN2dmlzPVxFWzExOzJ8LCBkY2g9XEVbJXAxJWRQLAotCWRjaDE9XEVbUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVswSiwKLQllbD1cRVswSywgZWwxPVxFWzFLLCBlbmFjcz1cRShCXEUpMSwgZmY9XkwsIGhvbWU9XEVbSCwgaHQ9XkksCi0JaHRzPVxFSCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpczE9XEUoQlxFKTFcRVsybCwKLQlpczM9XEVbMjE7MXxcMjEyLCBrTEZUPVxFW3UsIGtSSVQ9XEVbdiwga2JzPV5ILCBrY2J0PVxFW1osCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFT20sCi0Ja2YxMD1cRU9kLCBrZjExPVxFT2UsIGtmMTI9XEVPZiwga2YxMz1cRU9nLCBrZjE0PVxFT2gsCi0Ja2YxNT1cRU9pLCBrZjE2PVxFT2osIGtmMj1cRU9WLCBrZjM9XEVPdSwga2Y0PVxFTmosIGtmNT1cRU5lLAotCWtmNj1cRU5mLCBrZjc9XEVOaCwga2Y4PVxFW0gsIGtmOT1cRU9jLCBraW5kPVxFW1MsIGtyaT1cRVtULAotCW1jMD1cRVswaSwgbWM0PVxFWz84aSwgbWM1PVxFWz80aSwgbmVsPVxFRSwKLQlwbG49XEVbJXAxJWRwJXAyJTotMTZzLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtYWNzPV5PLCBybWt4PVxFWzE5OzB8LCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LAotCXNncj1cRVswJT8lcDUlcDYlfCV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXA2JXwldDs3JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21reD1cRVsxOTsxfCwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0KLSMgVGVybWluZm8gZW50cnkgZm9yIHRoZSBBVCZUIDUxMCBEIFBlcnNvbmFsIFRlcm1pbmFsCi0jIEZ1bmN0aW9uIGtleXMgOSB0aHJvdWdoIDE2IGFyZSBhY2Nlc3NlZCBieSBicmluZ2luZyB1cCB0aGUKLSMgc3lzdGVtIGJsb2Nrcy4KLSMgRnVuY3Rpb24ga2V5IDkgY29ycmVzcG9uZHMgdG8gdGhlIGxlZnRtb3N0IHRvdWNoIHRhcmdldCBvbiB0aGUgc2NyZWVuLAotIyBmdW5jdGlvbiBrZXkgMTYgY29ycmVzcG9uZHMgdG8gdGhlIHJpZ2h0bW9zdC4KLSMKLSMgVGhlcmUgYXJlIHByb2JsZW1zIHdpdGggc29mdCBrZXkgbGFiZWxpbmcuICBUaGVzZSBhcmUgZHVlIHRvCi0jIHN0cmFuZ2VuZXNzZXMgaW4gdGhlIG5hdGl2ZSB0ZXJtaW5hbCB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvCi0jIGRlc2NyaWJlIGluIGEgdGVybWluZm8uCi1hdHQ1MTBkfGJjdDUxMGR8QVQmVCA1MTBEIFBlcnNvbmFsIFRlcm1pbmFsLAotCWFtLCBkYSwgZGIsIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxoIzIsIGxpbmVzIzI0LCBsbSM0OCwgbHcjNywgbmxhYiM4LAotCWFjc2M9K2dcLGgtZi5lYGJocmlzampra2xsbW1ubnFxdHR1dXZ2d3d4eHt7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMjs3bSwgY2J0PVxFW1osCi0JY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWzExOzN8LCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwKLQljdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFWzFCLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgY3Z2aXM9XEVbMTE7MnwsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFWzBKLCBlbD1cRVswSywKLQllbDE9XEVbMUssIGVuYWNzPVxFKEJcRSkxLCBmZj1eTCwgaG9tZT1cRVtILAotCWhwYT1cRVslcDElezF9JSslZEcsIGh0PV5JLCBodHM9XEVILCBpY2g9XEVbJXAxJWRALAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaW5kbj1cRVslcDElZFMsCi0JaW52aXM9XEVbOG0sIGlzMT1cRShCXEUpMVxFWzU7MHwsIGlzMz1cRVsyMTsxfFwyMTIsCi0Ja0xGVD1cRVt1LCBrUklUPVxFW3YsIGticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtmMT1cRU9tLCBrZjEwPVxFT2QsCi0Ja2YxMT1cRU9lLCBrZjEyPVxFT2YsIGtmMTM9XEVPZywga2YxND1cRU9oLCBrZjE1PVxFT2ksCi0Ja2YxNj1cRU9qLCBrZjI9XEVPViwga2YzPVxFT3UsIGtmND1cRU5qLCBrZjU9XEVOZSwga2Y2PVxFTmYsCi0Ja2Y3PVxFTmgsIGtmOD1cRVtILCBrZjk9XEVPYywga2luZD1cRVtTLCBrcmk9XEVbVCwgbGw9XEUjMiwKLQltYzA9XEVbMGksIG1jND1cRVs/OGksIG1jNT1cRVs/NGksIG1nYz1cRVw6LCBuZWw9XEVFLAotCXBsbj1cRVslcDElZHAlcDIlOi0xNnMsIHJjPVxFOCwKLQlyZXA9JXAxJWNcRVslcDIlezF9JS0lZGIsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJpbj1cRVslcDElZFQsIHJtYWNzPV5PLCBybWlyPVxFWzRsLCBybWt4PVxFWzE5OzB8LAotCXJtbG49XEU8LCBybXNvPVxFW20sIHJtdWw9XEVbbSwgcm14b249XEVbMjk7MXwsCi0JcnMyPVxFWzU7MHwsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA1JXA2JXwldDsyJTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDMlcDElfCVwNiV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21nbD1cRTQsIHNtZ3I9XEU1LCBzbWlyPVxFWzRoLAotCXNta3g9XEVbMTk7MXwsIHNtbG49XEU/LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXNteG9uPVxFWzI5OzB8LCB0YmM9XEVbM2csIHZwYT1cRVslcDElezF9JSslZGQsCi0KLSMgKGF0dDUwMDogSSBtZXJnZWQgdGhpcyB3aXRoIHRoZSBhdHQ1MTMgZW50cnksIGF0dDUwMCBqdXN0IHVzZWQgYXR0NTEzIC0tIGVzcikKLWF0dDUwMHxhdHQ1MTN8QVQmVCA1MTMgdXNpbmcgcGFnZSBtb2RlLAotCWFtLCBjaHRzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBsaCMyLCBsaW5lcyMyNCwgbHcjOCwgbmxhYiM4LAotCWFjc2M9K2dcLGgtZi5lYGJocmlzampra2xsbW1ubnFxdHR1dXZ2d3d4eHt7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMjs3bSwgY2J0PVxFW1osCi0JY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWzExOzB8LCBjcj1eTSwKLQljc3I9JWlcRVslcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWzExOzF8LCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AkPDE+LCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAotCWVuYWNzPVxFKEJcRSkxLCBob21lPVxFW0gsIGhwYT1cRVslcDElezF9JSslZEcsIGh0PV5JLAotCWh0cz1cRUgsIGljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpbmRuPVxFWyVwMSVkRSwgaW52aXM9XEVbOG0sCi0JaXMxPVxFP1xFWzM7M3xcRVsxMDswfFxFWzIxOzF8XDIxMlxFWzY7MXxcRVsxe1xFWz85OWwsCi0Ja0JFRz1cRU5CLCBrQ0FOPVxFT1csIGtDTUQ9XEVPVSwga0NQWT1cRU5ELCBrQ1JUPVxFT04sCi0Ja0RDPVxFTkYsIGtETD1cRU5FLCBrRU5EPVxFTk4sIGtFT0w9XEVPQSwga0VYVD1cRU9LLAotCWtGTkQ9XEVPWCwga0hMUD1cRU9NLCBrSE9NPVxFTk0sIGtJQz1cRU5KLCBrTEZUPVxFTkssCi0Ja01PVj1cRU5DLCBrTVNHPVxFT0wsIGtOWFQ9XEVOSCwga09QVD1cRU9SLCBrUFJUPVxFT1osCi0Ja1BSVj1cRU5HLCBrUkRPPVxFT1QsIGtSRVM9XEVPUSwga1JJVD1cRU5MLCBrUlBMPVxFT1ksCi0Ja1NBVj1cRU9PLCBrU1BEPVxFT1AsIGtVTkQ9XEVPUywga2JlZz1cRTksIGticz1eSCwga2Nhbj1cRU93LAotCWtjYnQ9XEVbWiwga2Nsbz1cRU9WLCBrY2xyPVxFW0osIGtjbWQ9XEVPdSwga2NweT1cRU5kLAotCWtjcnQ9XEVPbiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRU5mLCBrZGwxPVxFTmUsIGtlbD1cRU9hLCBrZW5kPVxFMCwga2VudD1cRWVudCwKLQlrZXh0PVxFT2ssIGtmMT1cRU9jLCBrZjI9XEVPZCwga2YzPVxFT2UsIGtmND1cRU9mLCBrZjU9XEVPZywKLQlrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLCBrZm5kPVxFT3gsIGtobHA9XEVPbSwKLQlraG9tZT1cRVtILCBraWNoMT1cRU5qLCBraW5kPVxFW1MsIGttb3Y9XEVOYywga21yaz1cRU5pLAotCWttc2c9XEVPbCwga25wPVxFW1UsIGtueHQ9XEVOaCwga29wbj1cRU92LCBrb3B0PVxFT3IsCi0Ja3BwPVxFW1YsIGtwcnQ9XEVPeiwga3Bydj1cRU5nLCBrcmRvPVxFT3QsIGtyZWY9XEVPYiwKLQlrcmVzPVxFT3EsIGtyZnI9XEVOYSwga3JpPVxFW1QsIGtycGw9XEVPeSwga3JzdD1cRU9CLAotCWtzYXY9XEVPbywga3NsdD1cRU5JLCBrc3BkPVxFT3AsIGt1bmQ9XEVPcywgbGw9XEUjMiwKLQltYzA9XEVbPzk4bFxFWzBpLCBtYzQ9XEVbPzk4bFxFWz84aSwgbWM1PVxFWz85OGxcRVs/NGksCi0JbmVsPVxFRSwKLQlwZmtleT1cRVslcDElZDslcDIlbCVkOzM7MHAgICBGJXAxJWQgICAgICAgICAgICVwMiVzLAotCXBmbG9jPVxFWyVwMSVkOyVwMiVsJWQ7MjswcCAgIEYlcDElZCAgICAgICAgICAgJXAyJXMsCi0JcGZ4PVxFWyVwMSVkOyVwMiVsJWQ7MTswcCAgIEYlcDElZCAgICAgICAgICAgJXAyJXMsCi0JcGxuPVxFWyVwMSVkcCVwMiU6LTE2cywgcmM9XEU4LAotCXJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmV2PVxFWzdtLCByaT1cRU0sCi0JcmluPVxFWyVwMSVkRiwgcm1hY3M9Xk8sIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVsxOTswfFxFWzIxOzF8XDIxMiwgcm1sbj1cRTwsIHJtc289XEVbbSwKLQlybXVsPVxFW20sCi0JcnMxPVxFP1xFWzM7M3xcRVsxMDswfFxFWzIxOzF8XDIxMlxFWzY7MXxcRVsxe1xFWz85OWxcRVsyOzB8XEVbNjsxfFxFWzg7MHxcRVsxOTswfFxFWzF7XEVbPzk5bCwKLQlyczI9XEVbNTswfCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDElcDUlfCV0OzIlOyU/JXAyJXA2JXwldDs0JTslPyVwNCV0OzUlOyU/JXAzJXAxJXwlcDYlfCV0OzclOyU/JXA3JXQ7OCU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHNtaXI9XEVbNGgsCi0Jc21reD1cRVsxOTsxfFxFWzIxOzR8XEVlbnQsIHNtbG49XEU/LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdnBhPVxFWyVwMSV7MX0lKyVkZCwKLQotIyAwMS0wNy04OAotIyBwcmludGVyIG11c3QgYmUgc2V0IHRvIEVNVUwgQU5TSSB0byBhY2NlcHQgRVNDIGNvZGVzCi0jIDxjdXUxPiBzdG9wcyBhdCB0b3AgbWFyZ2luCi0jIDxpczE+IHNldHMgY3BpIDEwLGxwaSA2LGZvcm0gNjYsbGVmdCAxLHJpZ2h0IDEzMix0b3AgMSxib3R0b20gNjYsZm9udAotIwlhbmQgYWx0IGZvbnQgYXNjaWksd3JhcCBvbix0YWJzIGNsZWFyZWQKLSMgPGlzMj4gZGlzYWJsZXMgbmV3bGluZSBvbiBMRixFbXBoYXNpemVkIG9mZgotIyBUaGUgPHUwPiBjYXBhYmlsaXR5IHNldHMgZm9ybSBsZW5ndGgKLWF0dDUzMTB8YXR0NTMyMHxBVCZUIE1vZGVsIDUzMjEwIG9yIDUzMjAgbWF0cml4IHByaW50ZXIsCi0JeGhwYSwgeHZwYSwKLQlidWZzeiM4MTkyLCBjb2xzIzEzMiwgY3BzIzEyMCwgaXQjOCwgbGluZXMjNjYsIG9yYyMxMCwKLQlvcmhpIzEwMCwgb3JsIzEyLCBvcnZpIzcyLAotCWNwaT0lPyVwMSV7MTB9JT0ldFxFW3clZSVwMSV7MTJ9JT0ldFxFWzJ3JWUlcDElezV9JT0ldFxFWzV3JWUlcDElezEzfSU9JXAxJXsxNH0lPSVPJXRcRVszdyVlJXAxJXsxNn0lPSVwMSV7MTd9JT0lTyV0XEVbNHclZSVwMSV7Nn0lPSV0XEVbNnclZSVwMSV7N30lPSV0XEVbN3clZSVwMSV7OH0lPSV0XEVbOHclOywKLQljcj1eTSwKLQljc25tPSU/JXAxJXswfSU9JXR1c2FzY2lpJWUlcDElezF9JT0ldGVuZ2xpc2glZSVwMSV7Mn0lPSV0ZmlubmlzaCVlJXAxJXszfSU9JXRqYXBhbmVzZSVlJXAxJXs0fSU9JXRub3J3ZWdpYW4lZSVwMSV7NX0lPSV0c3dlZGlzaCVlJXAxJXs2fSU9JXRnZXJtYW5pYyVlJXAxJXs3fSU9JXRmcmVuY2glZSVwMSV7OH0lPSV0Y2FuYWRpYW5fZnJlbmNoJWUlcDElezl9JT0ldGl0YWxpYW4lZSVwMSV7MTB9JT0ldHNwYW5pc2glZSVwMSV7MTF9JT0ldGxpbmUlZSVwMSV7MTJ9JT0ldHNlY3VyaXR5JWUlcDElezEzfSU9JXRlYmNkaWMlZSVwMSV7MTR9JT0ldGFwbCVlJXAxJXsxNX0lPSV0bW9zYWljJTssCi0JY3VkPVxFWyVwMSVkZSwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkYSwgY3VmMT1ccywgY3V1MT1cRU0sCi0JZmY9XkwsIGhwYT1cRVslcDElZGAsIGh0PV5JLCBpczE9XEVjLCBpczI9XEVbMjBsXHIsCi0JbHBpPSU/JXAxJXsyfSU9JXRcRVs0eiVlJXAxJXszfSU9JXRcRVs1eiVlJXAxJXs0fSU9JXRcRVs2eiVlJXAxJXs2fSU9JXRcRVt6JWUlcDElezh9JT0ldFxFWzJ6JWUlcDElezEyfSU9JXRcRVszeiU7LAotCXJzaG09XEVbbSwKLQlzY3M9JT8lcDElezB9JT0ldFxFKEIlZSVwMSV7MX0lPSV0XEUoQSVlJXAxJXsyfSU9JXRcRShDJWUlcDElezN9JT0ldFxFKEQlZSVwMSV7NH0lPSV0XEUoRSVlJXAxJXs1fSU9JXRcRShIJWUlcDElezZ9JT0ldFxFKEslZSVwMSV7N30lPSV0XEUoUiVlJXAxJXs4fSU9JXRcRShRJWUlcDElezl9JT0ldFxFKFklZSVwMSV7MTB9JT0ldFxFKFolZSVwMSV7MTF9JT0ldFxFKDAlZSVwMSV7MTJ9JT0ldFxFKDElZSVwMSV7MTN9JT0ldFxFKDMlZSVwMSV7MTR9JT0ldFxFKDglZSVwMSV7MTV9JT0ldFxFKH0lOywKLQlzbWdicD1cRVs7JXAxJWRyLCBzbWdscD1cRVslezF9JXAxJSslZHMsCi0Jc21ncnA9XEVbOyV7MX0lcDElKyVkcywgc21ndHA9XEVbJXAxJWRyLCBzc2htPVxFWzVtLAotCXUwPVxFWyVwMSVkdCwgdnBhPVxFWyVwMSVkZCwKLQotIyBUZWxldHlwZSA1NjIwLCBmaXJtd2FyZSB2ZXJzaW9uIDEuMSAoODs3OzMpIG9yIGVhcmxpZXIgZnJvbSBCUkwKLSMgVGhlIGZvbGxvd2luZyBTRVQtVVAgbW9kZXMgYXJlIGFzc3VtZWQgZm9yIG5vcm1hbCBvcGVyYXRpb246Ci0jCUNSX0RFRj1DUglOTF9ERUY9SU5ERVgJRFVQTEVYPUZVTEwKLSMgT3RoZXIgU0VULVVQIG1vZGVzIG1heSBiZSBzZXQgZm9yIG9wZXJhdG9yIGNvbnZlbmllbmNlIG9yIGNvbW11bmljYXRpb24KLSMgcmVxdWlyZW1lbnRzLiAgVGhpcyB0ZXJtY2FwIGRlc2NyaXB0aW9uIGlzIGZvciB0aGUgUmVzaWRlbnQgVGVybWluYWwgTW9kZS4KLSMgTm8gZGVsYXlzIHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jIFRoZSBCUkwgZW50cnkgYWxzbyBzYWlkOiBVTlNBRkUgOmxsPVxFWzcwSDoKLWF0dDU2MjAtMXx0dHk1NjIwLTF8ZG1kMXxUZWxldHlwZSA1NjIwIHdpdGggb2xkIFJPTXMsCi0JYW0sIHhvbiwKLQljb2xzIzg4LCBpdCM4LCBsaW5lcyM3MCwgdnQjMywKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLAotCWRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIGh0PV5JLCBpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwKLQlpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywga2JzPV5ILCBrY2xyPVxFWzJKLAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtob21lPVxFW0gsCi0Ja2xsPVxFWzcwOzFILCBuZWw9Xk1eSiwgcmM9XEU4LCByaT1cRVtULCByaW49XEVbJXAxJWRULAotCXJzMT1cRWMsIHNjPVxFNywKLQotIyA1NjIwIHRlcm1pbmZvICAoMi4wIG9yIGxhdGVyIFJPTVMgd2l0aCBjaGFyIGF0dHJpYnV0ZXMpCi0jIFRoZSBmb2xsb3dpbmcgU0VULVVQIG1vZGVzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlEVVBMRVg9RlVMTAlHRU5fRkxPVz1PTglORVdMSU5FPUlOREVYCVJFVFVSTj1DUgotIyBPdGhlciBTRVQtVVAgbW9kZXMgbWF5IGJlIHNldCBmb3Igb3BlcmF0b3IgY29udmVuaWVuY2Ugb3IgY29tbXVuaWNhdGlvbgotIyByZXF1aXJlbWVudHMuICBUaGlzIHRlcm1jYXAgZGVzY3JpcHRpb24gaXMgZm9yIFJlc2lkZW50IFRlcm1pbmFsIE1vZGUuICBObwotIyBkZWxheXMgYXJlIHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jIGFzc3VtcHRpb25zOiA8aW5kPiAoc2Nyb2xsIGZvcndhcmQgb25lIGxpbmUpIGlzIG9ubHkgZG9uZSBhdCBzY3JlZW4gYm90dG9tCi0jIEJlIGF3YXJlIHRoYXQgb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGRtZCBoYXZlIGEgZmlybXdhcmUgYnVnIHRoYXQgYWZmZWN0cwotIyBwYXJhbWV0ZXIgZGVmYXVsdGluZzsgZm9yIHRoaXMgdGVybWluYWwsIHRoZSAwIGluIFxFWzBtIGlzIG5vdCBvcHRpb25hbC4KLSMgPG1zZ3I+IGlzIGZyb20gYW4gb3RoZXJ3aXNlIGluZmVyaW9yIEJSTCBmb3IgdGhpcyB0ZXJtaW5hbC4gIFRoYXQgZW50cnkKLSMgYWxzbyBoYXMgPGxsPj1cRVs3MEggY29tbWVudGVkIG91dCBhbmQgbWFya2VkIHVuc2FmZS4KLSMgRm9yIG1vcmUsIHNlZSB0aGUgNTYyMCBGQVEgbWFpbnRhaW5lZCBieSBEYXZpZCBCcmVuZW1hbiA8ZGF2ZWJAZGd0bC5jb20+LgotYXR0NTYyMHxkbWR8dHR5NTYyMHx0dHlkbWR8NTYyMHw1NjIwIHRlcm1pbmFsIDg4IGNvbHVtbnMsCi0JT1RicywgYW0sIG1zZ3IsIG5wYywgeG9uLAotCWNvbHMjODgsIGl0IzgsIGxpbmVzIzcwLAotCWJlbD1eRywgYm9sZD1cRVsybSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XEVbQiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpY2g9XEVbJXAxJWRALAotCWljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFW1MsCi0JaW5kbj1cRVslcDElZFMsIGticz1eSCwga2Nscj1cRVsySiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILCBrbGw9XEVbNzA7MUgsIG5lbD1eSiwKLQlwZng9XEVbJXAxJWQ7JXAyJWwlZHElcDIlcywgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFW1QsCi0JcmluPVxFWyVwMSVkVCwgcm1zbz1cRVswbSwgcm11bD1cRVswbSwgcnMxPVxFYywgc2M9XEU3LAotCXNncjA9XEVbMG0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi1hdHQ1NjIwLTI0fHR0eTU2MjAtMjR8ZG1kLTI0fHRlbGV0eXBlIGRtZCA1NjIwIGluIGEgMjR4ODAgbGF5ZXIsCi0JbGluZXMjMjQsIHVzZT1hdHQ1NjIwLAotYXR0NTYyMC0zNHx0dHk1NjIwLTM0fGRtZC0zNHx0ZWxldHlwZSBkbWQgNTYyMCBpbiBhIDM0eDgwIGxheWVyLAotCWxpbmVzIzM0LCB1c2U9YXR0NTYyMCwKLSMgNTYyMCBsYXllciBydW5uaW5nIHRoZSAiUyIgc3lzdGVtJ3MgZG93bmxvYWRlZCBncmFwaGljcyBoYW5kbGVyOgotYXR0NTYyMC1zfHR0eTU2MjAtc3xsYXllcnx2aXR0eXw1NjIwIFMgbGF5ZXIsCi0JT1RicywgT1RwdCwgYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjNzIsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VwPVxFWSVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1eSywgZGwxPVxFRCwKLQllbD1cRUssIGZsYXNoPVxFXkcsIGh0PV5JLCBpbDE9XEVJLCBpbmQ9XkosIGticz1eSCwga2Nscj1cRVsySiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILAotCWtsbD1cRVs3MDsxSCwKLQotIyBFbnRyaWVzIGZvciA8a2YxNT4gdGhydSA8a2YyOD4gcmVmZXIgdG8gdGhlIHNoaWZ0ZWQgc3lzdGVtIHBmIGtleXMuCi0jCi0jIEVudHJpZXMgZm9yIDxrZjI5PiB0aHJ1IDxrZjQ2PiByZWZlciB0byB0aGUgYWx0ZXJuYXRlIGtleXBhZCBtb2RlCi0jIGtleXM6ICA9ICogLyArIDcgOCA5IC0gNCA1IDYgLCAxIDIgMyAwIC4gRU5URVIKLWF0dDYwNXxBVCZUIDYwNSA4MCBjb2x1bW4gMTAya2V5IGtleWJvYXJkLAotCWFtLCBlbywgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCBsdyM4LCBubGFiIzgsIHdzbCM4MCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwKLQljcj1eTSwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsCi0JZGNoMT1cRVtQLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osCi0JZWw9XEVbSywgZWwxPVxFWzFLLCBmc2w9XEU4LCBodD1eSSwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALAotCWlsMT1cRVtMLCBpbmQ9XkosIGludmlzPVxFWzhtLAotCWlzMT1cRVs4OzB8XEVbP1xFWzEzOzIwbFxFWz9cRVsxMmgsIGlzMj1cRVttXDAxNywKLQlrTEZUPVxFWyBBLCBrUklUPVxFWyBALCBrYnM9XkgsIGtjYnQ9XEVbWiwga2Nscj1cRVsySiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLAotCWtkbDE9XEVbTSwga2VuZD1cRVsyNDsxSCwga2YxPVxFT2MsIGtmMTA9XEVOcCwga2YxMT1cRU5xLAotCWtmMTI9XEVOciwga2YxMz1cRU5zLCBrZjE0PVxFTnQsIGtmMTU9XEVPQywga2YxNj1cRU9ELAotCWtmMTc9XEVPRSwga2YxOD1cRU9GLCBrZjE5PVxFT0csIGtmMj1cRU9kLCBrZjIwPVxFT0gsCi0Ja2YyMT1cRU9JLCBrZjIyPVxFT0osIGtmMjM9XEVOTywga2YyND1cRU5QLCBrZjI1PVxFTlEsCi0Ja2YyNj1cRU5SLCBrZjI3PVxFTlMsIGtmMjg9XEVOVCwga2YyOT1cRU9QLCBrZjM9XEVPZSwKLQlrZjMwPVxFT1EsIGtmMzE9XEVPUiwga2YzMj1cRU9TLCBrZjMzPVxFT3csIGtmMzQ9XEVPeCwKLQlrZjM1PVxFT3ksIGtmMzY9XEVPbSwga2YzNz1cRU90LCBrZjM4PVxFT3UsIGtmMzk9XEVPdiwKLQlrZjQ9XEVPZiwga2Y0MD1cRU9sLCBrZjQxPVxFT3EsIGtmNDI9XEVPciwga2Y0Mz1cRU9zLAotCWtmNDQ9XEVPcCwga2Y0NT1cRU9uLCBrZjQ2PVxFT00sIGtmNT1cRU9nLCBrZjY9XEVPaCwKLQlrZjc9XEVPaSwga2Y4PVxFT2osIGtmOT1cRU5vLCBraG9tZT1cRVtILCBraWNoMT1cRVtALAotCWtpbDE9XEVbTCwga2luZD1cRVtTLCBrbnA9XEVbVSwga3BwPVxFW1YsIGxsPVxFWzI0SCwKLQltYzQ9XEVbPzRpLCBtYzU9XEVbPzVpLCBuZWw9XEVFLAotCXBmeD1cRVslcDElZDslcDIlbCUwMmRxICAgRiVwMSUxZCAgICAgICAgICAgJXAyJXMsCi0JcGxuPVxFWyVwMSVkOzA7MDswcSVwMiU6LTE2LjE2cywgcmM9XEU4LCByZXY9XEVbN20sCi0Jcm1hY3M9Xk8sIHJtaXI9XEVbNGwsIHJtbG49XEVbMnAsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cRWNcRVs/M2wsIHNjPVxFNywgc2dyMD1cRVttXDAxNywgc21hY3M9XEUpMFwwMTYsCi0Jc21pcj1cRVs0aCwgc21sbj1cRVtwLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRzbD1cRTdcRVsyNTslaSVwMSVkeCwKLWF0dDYwNS1wY3xBVFQgNjA1IGluIHBjIHRlcm0gbW9kZSwKLQlhY3NjPWpcMzMxa1wyNzdsXDMzMm1cMzAwblwzMDVxXDMwNHRcMzAzdVwyNjR2XDMwMXdcMzAyeFwyNjMsCi0JY2J0PVxFW1osIGN1YjE9XEVbRCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsIGN1dTE9XEVbQSwKLQlkY2gxPVxFW1AsIGRsMT1cRVtNLCBpY2gxPVxFW0AsIGlsMT1cRVtMLCBrY2J0PVxFW1osCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbUCwKLQlrZGwxPVxFW00sIGtlbmQ9XEVbRiwga2YxPVxFW00sIGtmMTA9XEVbViwga2YyPVxFW04sCi0Ja2YzPVxFW08sIGtmND1cRVtQLCBrZjU9XEVbUSwga2Y2PVxFW1IsIGtmNz1cRVtTLCBrZjg9XEVbVCwKLQlrZjk9XEVbVSwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwga25wPVxFW0csIGtwcD1cRVtJLAotCXJtc2M9NDAwXEVbNTA7MHwsIHNtc2M9MjUwXEVbPzExbFxFWzUwOzF8LCB4b2ZmYz1nLAotCXhvbmM9ZSwgdXNlPWF0dDYwNSwKLWF0dDYwNS13fEFUJlQgNjA1LXcgMTMyIGNvbHVtbiAxMDIga2V5IGtleWJvYXJkLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWlzMT1cRVs4OzB8XEVbPzQ7NTsxMzsxNWxcRVsxMzsyMGxcRVs/Mzs3aFxFWzEyaFxFKEJcRSkwLAotCXVzZT1hdHQ2MDUsCi0jIChhdHQ2MTA6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcuICBJIGFsc28KLSMgYWRkZWQgPGluZG4+IGFuZCA8cmluPiBiZWNhdXNlIHRoZSBCU0QgZmlsZSBzYXlzIHRoZSBhdHQ2MTVzIGhhdmUgdGhlbSwKLSMgYW5kIHRoZSA2MTUgaXMgbGlrZSBhIDYxMCB3aXRoIGEgYmlnIGtleWJvYXJkLCBhbmQgbW9zdCBvZiB0aGVpciBvdGhlcgotIyBzbWFydCB0ZXJtaW5hbHMgc3VwcG9ydCB0aGUgc2FtZSBzZXF1ZW5jZSAtLSBlc3IpCi1hdHQ2MTB8QVQmVCA2MTA7IDgwIGNvbHVtbjsgOThrZXkga2V5Ym9hcmQsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGgjMiwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWz8yNWhcRVs/MTJsLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzEyOzI1aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAotCWZsYXNoPVxFWz81aCQ8MjAwPlxFWz81bCwgZnNsPVxFOCwgaG9tZT1cRVtILCBodD1eSSwKLQlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELAotCWluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwKLQlpczE9XEVbODswfFxFWz8zOzQ7NTsxMzsxNWxcRVsxMzsyMGxcRVs/N2hcRVsxMmhcRShCXEUpMCwKLQlpczI9XEVbbVwwMTcsIGlzMz1cRShCXEUpMCwga0xGVD1cRVsgQCwga1JJVD1cRVsgQSwga2JzPV5ILAotCWtjYnQ9XEVbWiwga2Nscj1cRVsySiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjE9XEVPYywga2YxMD1cRU5wLCBrZjExPVxFTnEsIGtmMTI9XEVOciwKLQlrZjEzPVxFTnMsIGtmMTQ9XEVOdCwga2YyPVxFT2QsIGtmMz1cRU9lLCBrZjQ9XEVPZiwga2Y1PVxFT2csCi0Ja2Y2PVxFT2gsIGtmNz1cRU9pLCBrZjg9XEVPaiwga2Y5PVxFTm8sIGtob21lPVxFW0gsCi0Ja2luZD1cRVtTLCBrcmk9XEVbVCwgbGw9XEVbMjRILCBtYzQ9XEVbPzRpLCBtYzU9XEVbPzVpLAotCW5lbD1cRUUsCi0JcGZ4PVxFWyVwMSVkOyVwMiVsJTAyZHEgICBGJXAxJTFkICAgICAgICAgICAlcDIlcywKLQlwbG49XEVbJXAxJWQ7MDswOzBxJXAyJTotMTYuMTZzLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJpbj1cRVslcDElZFQsIHJtYWNzPV5PLCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwKLQlybWxuPVxFWzJwLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMyPVxFY1xFWz8zbCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwNSV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21sbj1cRVtwLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0c2w9XEU3XEVbMjU7JWklcDElZHgsCi1hdHQ2MTAtd3xBVCZUIDYxMDsgMTMyIGNvbHVtbjsgOThrZXkga2V5Ym9hcmQsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JaXMxPVxFWzg7MHxcRVs/NDs1OzEzOzE1bFxFWzEzOzIwbFxFWz8zOzdoXEVbMTJoLAotCXVzZT1hdHQ2MTAsCi0KLWF0dDYxMC0xMDNrfEFUJlQgNjEwOyA4MCBjb2x1bW47IDEwM2tleSBrZXlib2FyZCwKLQlrQkVHPVxFTkIsIGtDQU49XEVPVywga0NNRD1cRU9VLCBrQ1BZPVxFTkQsIGtDUlQ9XEVPTiwKLQlrREM9XEVORiwga0RMPVxFTkUsIGtFTkQ9XEVOTiwga0VPTD1cRU9BLCBrRVhUPVxFT0ssCi0Ja0ZORD1cRU9YLCBrSExQPVxFT00sIGtNT1Y9XEVOQywga01TRz1cRU9MLCBrTlhUPVxFTkgsCi0Ja09QVD1cRU9SLCBrUFJUPVxFT1osIGtQUlY9XEVORywga1JETz1cRU9ULCBrUkVTPVxFT1EsCi0Ja1JQTD1cRU9ZLCBrU0FWPVxFT08sIGtTUEQ9XEVPUCwga1VORD1cRU9TLCBrYmVnPVxFOSwKLQlrY2FuPVxFT3csIGtjbG89XEVPViwga2NtZD1cRU91LCBrY3B5PVxFTmQsIGtjcnQ9XEVPbiwKLQlrZGNoMT1cRU5mLCBrZGwxPVxFTmUsIGtlbD1cRU9hLCBrZW5kPVxFMCwga2VudD1eTSwKLQlrZXh0PVxFT2ssIGtmMTBALCBrZjExQCwga2YxMkAsIGtmMTNALCBrZjE0QCwga2Y5QCwga2ZuZD1cRU94LAotCWtobHA9XEVPbSwga2ljaDE9XEVOaiwga21vdj1cRU5jLCBrbXJrPVxFTmksIGttc2c9XEVPbCwKLQlrbnA9XEVbVSwga254dD1cRU5oLCBrb3BuPVxFT3YsIGtvcHQ9XEVPciwga3BwPVxFW1YsCi0Ja3BydD1cRU96LCBrcHJ2PVxFTmcsIGtyZG89XEVPdCwga3JlZj1cRU9iLCBrcmVzPVxFT3EsCi0Ja3Jmcj1cRU5hLCBrcm1pcj1cRU5qLCBrcnBsPVxFT3ksIGtyc3Q9XEVPQiwga3Nhdj1cRU9vLAotCWtzbHQ9XEVOSSwga3NwZD1cRU9wLCBrdW5kPVxFT3MsIHVzZT1hdHQ2MTAsCi1hdHQ2MTAtMTAzay13fEFUJlQgNjEwOyAxMzIgY29sdW1uOyAxMDNrZXkga2V5Ym9hcmQsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JaXMxPVxFWzg7MHxcRVs/NDs1OzEzOzE1bFxFWzEzOzIwbFxFWz8zOzdoXEVbMTJoLAotCXVzZT1hdHQ2MTAtMTAzaywKLWF0dDYxNXxBVCZUIDYxNTsgODAgY29sdW1uOyA5OGtleSBrZXlib2FyZCwKLQlrTEZUPVxFWyBBLCBrUklUPVxFWyBALCBrZjE1PVxFT0MsIGtmMTY9XEVPRCwga2YxNz1cRU9FLAotCWtmMTg9XEVPRiwga2YxOT1cRU9HLCBrZjIwPVxFT0gsIGtmMjE9XEVPSSwga2YyMj1cRU9KLAotCWtmMjM9XEVOTywga2YyND1cRU5QLCBrZjI1PVxFTlEsIGtmMjY9XEVOUiwga2YyNz1cRU5TLAotCWtmMjg9XEVOVCwga2YyOT1cRU9QLCBrZjMwPVxFT1EsIGtmMzE9XEVPUiwga2YzMj1cRU9TLAotCWtmMzM9XEVPdywga2YzND1cRU94LCBrZjM1PVxFT3ksIGtmMzY9XEVPbSwga2YzNz1cRU90LAotCWtmMzg9XEVPdSwga2YzOT1cRU92LCBrZjQwPVxFT2wsIGtmNDE9XEVPcSwga2Y0Mj1cRU9yLAotCWtmNDM9XEVPcywga2Y0ND1cRU9wLCBrZjQ1PVxFT24sIGtmNDY9XEVPTSwgdXNlPWF0dDYxMCwKLWF0dDYxNS13fEFUJlQgNjE1OyAxMzIgY29sdW1uOyA5OGtleSBrZXlib2FyZCwKLQlrTEZUPVxFWyBBLCBrUklUPVxFWyBALCBrZjE1PVxFT0MsIGtmMTY9XEVPRCwga2YxNz1cRU9FLAotCWtmMTg9XEVPRiwga2YxOT1cRU9HLCBrZjIwPVxFT0gsIGtmMjE9XEVPSSwga2YyMj1cRU9KLAotCWtmMjM9XEVOTywga2YyND1cRU5QLCBrZjI1PVxFTlEsIGtmMjY9XEVOUiwga2YyNz1cRU5TLAotCWtmMjg9XEVOVCwga2YyOT1cRU9QLCBrZjMwPVxFT1EsIGtmMzE9XEVPUiwga2YzMj1cRU9TLAotCWtmMzM9XEVPdywga2YzND1cRU94LCBrZjM1PVxFT3ksIGtmMzY9XEVPbSwga2YzNz1cRU90LAotCWtmMzg9XEVPdSwga2YzOT1cRU92LCBrZjQwPVxFT2wsIGtmNDE9XEVPcSwga2Y0Mj1cRU9yLAotCWtmNDM9XEVPcywga2Y0ND1cRU9wLCBrZjQ1PVxFT24sIGtmNDY9XEVPTSwgdXNlPWF0dDYxMC13LAotYXR0NjE1LTEwM2t8QVQmVCA2MTU7IDgwIGNvbHVtbjsgMTAza2V5IGtleWJvYXJkLAotCWtMRlQ9XEVbIEEsIGtSSVQ9XEVbIEAsIHVzZT1hdHQ2MTAtMTAzaywKLWF0dDYxNS0xMDNrLXd8QVQmVCA2MTU7IDEzMiBjb2x1bW47IDEwM2tleSBrZXlib2FyZCwKLQlrTEZUPVxFWyBBLCBrUklUPVxFWyBALCB1c2U9YXR0NjEwLTEwM2stdywKLSMgKGF0dDYyMDogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyBhbmQKLSMgPHJpbj4vPGluZG4+IGZyb20gYSBCU0QgdGVybWNhcCAtLSBlc3IpCi1hdHQ2MjB8QVQmVCA2MjA7IDgwIGNvbHVtbjsgOThrZXkga2V5Ym9hcmQsCi0JYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGgjMiwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWz8yNWhcRVs/MTJsLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzEyOzI1aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAotCWZsYXNoPVxFWz81aCQ8MjAwPlxFWz81bCwgZnNsPVxFOCwgaG9tZT1cRVtILCBodD1eSSwKLQlpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELAotCWluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwKLQlpczE9XEVbODswfFxFWz8zOzQ7NTsxMzsxNWxcRVsxMzsyMGxcRVs/N2hcRVsxMmgsCi0JaXMyPVxFW21cMDE3LCBpczM9XEUoQlxFKTAsIGtMRlQ9XEVbIEEsIGtSSVQ9XEVbIEAsIGticz1eSCwKLQlrY2J0PVxFW1osIGtjbHI9XEVbMkosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2YxPVxFT2MsIGtmMTA9XEVOcCwga2YxMT1cRU5xLCBrZjEyPVxFTnIsCi0Ja2YxMz1cRU5zLCBrZjE0PVxFTnQsIGtmMTU9XEVPQywga2YxNj1cRU9ELCBrZjE3PVxFT0UsCi0Ja2YxOD1cRU9GLCBrZjE5PVxFT0csIGtmMj1cRU9kLCBrZjIwPVxFT0gsIGtmMjE9XEVPSSwKLQlrZjIyPVxFT0osIGtmMjM9XEVOTywga2YyND1cRU5QLCBrZjI1PVxFTlEsIGtmMjY9XEVOUiwKLQlrZjI3PVxFTlMsIGtmMjg9XEVOVCwga2YyOT1cRU9QLCBrZjM9XEVPZSwga2YzMD1cRU9RLAotCWtmMzE9XEVPUiwga2YzMj1cRU9TLCBrZjMzPVxFT3csIGtmMzQ9XEVPeCwga2YzNT1cRU95LAotCWtmMzY9XEVPbSwga2YzNz1cRU90LCBrZjM4PVxFT3UsIGtmMzk9XEVPdiwga2Y0PVxFT2YsCi0Ja2Y0MD1cRU9sLCBrZjQxPVxFT3EsIGtmNDI9XEVPciwga2Y0Mz1cRU9zLCBrZjQ0PVxFT3AsCi0Ja2Y0NT1cRU9uLCBrZjQ2PVxFT00sIGtmNT1cRU9nLCBrZjY9XEVPaCwga2Y3PVxFT2ksIGtmOD1cRU9qLAotCWtmOT1cRU5vLCBraG9tZT1cRVtILCBraW5kPVxFW1MsIGtyaT1cRVtULCBsbD1cRVsyNEgsCi0JbWM0PVxFWz80aSwgbWM1PVxFWz81aSwgbmVsPVxFRSwKLQlwZng9XEVbJXAxJWQ7JXAyJWwlMDJkcSAgIEYlcDElMWQgICAgICAgICAgICVwMiVzLAotCXBsbj1cRVslcDElZDswOzA7MHElcDIlOi0xNi4xNnMsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJpPVxFTSwgcmluPVxFWyVwMSVkVCwgcm1hY3M9XEUoQlwwMTcsIHJtYW09XEVbPzdsLAotCXJtaXI9XEVbNGwsIHJtbG49XEVbMnAsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cRWNcRVs/M2wsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXA2JXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAzJXAxJXwldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVxFKEJcMDE3LCBzbWFjcz1cRSkwXDAxNiwgc21hbT1cRVs/N2gsCi0Jc21pcj1cRVs0aCwgc21sbj1cRVtwLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRzbD1cRTdcRVsyNTslaSVwMSVkeCwKLWF0dDYyMC13fEFUJlQgNjIwOyAxMzIgY29sdW1uOyA5OGtleSBrZXlib2FyZCwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlpczE9XEVbODswfFxFWz80OzU7MTM7MTVsXEVbMTM7MjBsXEVbPzM7N2hcRVsxMmgsCi0JdXNlPWF0dDYyMCwKLWF0dDYyMC0xMDNrfEFUJlQgNjIwOyA4MCBjb2x1bW47IDEwM2tleSBrZXlib2FyZCwKLQlrQkVHPVxFTkIsIGtDQU49XEVPVywga0NNRD1cRU9VLCBrQ1BZPVxFTkQsIGtDUlQ9XEVPTiwKLQlrREM9XEVORiwga0RMPVxFTkUsIGtFTkQ9XEVOTiwga0VPTD1cRU9BLCBrRVhUPVxFT0ssCi0Ja0ZORD1cRU9YLCBrSExQPVxFT00sIGtNT1Y9XEVOQywga01TRz1cRU9MLCBrTlhUPVxFTkgsCi0Ja09QVD1cRU9SLCBrUFJUPVxFT1osIGtQUlY9XEVORywga1JETz1cRU9ULCBrUkVTPVxFT1EsCi0Ja1JQTD1cRU9ZLCBrU0FWPVxFT08sIGtTUEQ9XEVPUCwga1VORD1cRU9TLCBrYmVnPVxFOSwKLQlrY2FuPVxFT3csIGtjbG89XEVPViwga2NtZD1cRU91LCBrY3B5PVxFTmQsIGtjcnQ9XEVPbiwKLQlrZGNoMT1cRU5mLCBrZGwxPVxFTmUsIGtlbD1cRU9hLCBrZW5kPVxFMCwga2VudD1eTSwKLQlrZXh0PVxFT2ssIGtmMTBALCBrZjExQCwga2YxMkAsIGtmMTNALCBrZjE0QCwga2YxNUAsIGtmMTZALCBrZjE3QCwKLQlrZjE4QCwga2YxOUAsIGtmMjBALCBrZjIxQCwga2YyMkAsIGtmMjNALCBrZjI0QCwga2YyNUAsIGtmMjZALCBrZjI3QCwKLQlrZjI4QCwga2YyOUAsIGtmMzBALCBrZjMxQCwga2YzMkAsIGtmMzNALCBrZjM0QCwga2YzNUAsIGtmMzZALCBrZjM3QCwKLQlrZjM4QCwga2YzOUAsIGtmNDBALCBrZjQxQCwga2Y0MkAsIGtmNDNALCBrZjQ0QCwga2Y0NUAsIGtmNDZALCBrZjlALAotCWtmbmQ9XEVPeCwga2hscD1cRU9tLCBraWNoMT1cRU5qLCBrbW92PVxFTmMsIGttcms9XEVOaSwKLQlrbXNnPVxFT2wsIGtucD1cRVtVLCBrbnh0PVxFTmgsIGtvcG49XEVPdiwga29wdD1cRU9yLAotCWtwcD1cRVtWLCBrcHJ0PVxFT3osIGtwcnY9XEVOZywga3Jkbz1cRU90LCBrcmVmPVxFT2IsCi0Ja3Jlcz1cRU9xLCBrcmZyPVxFTmEsIGtybWlyPVxFTmosIGtycGw9XEVPeSwga3JzdD1cRU9CLAotCWtzYXY9XEVPbywga3NsdD1cRU5JLCBrc3BkPVxFT3AsIGt1bmQ9XEVPcywgdXNlPWF0dDYyMCwKLQotYXR0NjIwLTEwM2std3xBVCZUIDYyMDsgMTMyIGNvbHVtbjsgMTAza2V5IGtleWJvYXJkLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWlzMT1cRVs4OzB8XEVbPzQ7NTsxMzsxNWxcRVsxMzsyMGxcRVs/Mzs3aFxFWzEyaCwKLQl1c2U9YXR0NjIwLTEwM2ssCi0KLSMgQVQmVCAoZm9ybWVybHkgVGVsZXR5cGUpIDYzMCBNdWx0aS1UYXNraW5nIEdyYXBoaWNzIHRlcm1pbmFsCi0jIFRoZSBmb2xsb3dpbmcgU0VUVVAgbW9kZXMgYXJlIGFzc3VtZWQgZm9yIG5vcm1hbCBvcGVyYXRpb246Ci0jCUxvY2FsX0VjaG89T2ZmCUdlbl9GbG93PU9uCVJldHVybj1DUglSZWNlaXZlZF9OZXdsaW5lPUxGCi0jCUZvbnRfU2l6ZT1MYXJnZQkJTm9uLUxheWVyc19XaW5kb3dfQ29scz04MAotIwkJCQlOb24tTGF5ZXJzX1dpbmRvd19Sb3dzPTYwCi0jIE90aGVyIFNFVFVQIG1vZGVzIG1heSBiZSBzZXQgZm9yIG9wZXJhdG9yIGNvbnZlbmllbmNlIG9yIGNvbW11bmljYXRpb24KLSMgcmVxdWlyZW1lbnRzLiAgU29tZSBjYXBhYmlsaXRpZXMgYXNzdW1lIGEgcHJpbnRlciBhdHRhY2hlZCB0byB0aGUgQXV4IEVJQQotIyBwb3J0LiAgVGhpcyB0ZXJtY2FwIGRlc2NyaXB0aW9uIGlzIGZvciB0aGUgRml4ZWQgTm9uLUxheWVycyBXaW5kb3cuICBObwotIyBkZWxheXMgYXJlIHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jIChhdHQ2MzA6IGFkZGVkIDxpY2gxPiwgPGJsaW5rPiBhbmQgPGRpbT4gZnJvbSBhIEJTRCB0ZXJtY2FwIGZpbGUgLS0gZXNyKQotYXR0NjMwfEFUJlQgNjMwIHdpbmRvd2luZyB0ZXJtaW5hbCwKLQlPVGJzLCBhbSwgZGEsIGRiLCBtaXIsIG1zZ3IsIG5wYywgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzYwLCBsbSMwLAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLAotCWRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywKLQllbDE9XEVbMUssIGhvbWU9XEVbSCwgaHQ9XkksIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELCBpbmRuPVxFWyVwMSVkUywgaXMyPVxFW20sCi0Ja2JzPV5ILCBrY2J0PVxFW1osIGtjbHI9XEVbMkosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XEVbUCwga2RsMT1cRVtNLCBrZW50PV5NLAotCWtmMTA9XEVOcCwga2YxMT1cRU5xLCBrZjEyPVxFTnIsIGtmMTM9XEVOcywga2YxND1cRU50LAotCWtmMTU9XEVOdSwga2YxNj1cRU52LCBrZjE3PVxFTncsIGtmMTg9XEVOeCwga2YxOT1cRU55LAotCWtmMjA9XEVOeiwga2YyMT1cRU57LCBrZjIyPVxFTnwsIGtmMjM9XEVOfSwga2YyND1cRU5+LAotCWtmOT1cRU5vLCBraG9tZT1cRVtILCBraWNoMT1cRVtALCBraWwxPVxFW0wsIG1jND1cRVs/NGksCi0JbWM1PVxFWz81aSwgbmVsPV5NXkosIHBmeD1cRVslcDElZDslcDIlbCVkcSVwMiVzLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJpbj1cRVslcDElZFQsIHJtaXI9XEVbNGwsIHJtc289XEVbbSwKLQlybXVsPVxFW20sIHJzMj1cRWMsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAyJXQ7NCU7JT8lcDElcDMlfCVwNCV8JXA1JXwldDs3JTttLAotCXNncjA9XEVbbSwgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLWF0dDYzMC0yNHw1NjMwLTI0fDU2MzBETUQtMjR8NjMwTVRHLTI0fEFUJlQgNjMwIHdpbmRvd2luZyB0ZXJtaW5hbCAyNCBsaW5lcywKLQlsaW5lcyMyNCwgdXNlPWF0dDYzMCwKLQotIyBUaGlzIGlzIHRoZSBhdHQ3MDAgZW50cnkgZm9yIDcwMCBuYXRpdmUgZW11bGF0aW9uIG9mIHRoZSBBVCZUIDcwMAotIyB0ZXJtaW5hbC4gIENvbW1lbnRzIGFyZSByZWxhdGl2ZSB0byBjaGFuZ2VzIGZyb20gdGhlIDYwNVYyIGVudHJ5IGFuZAotIyBhdHQ3MzAgb24gd2hpY2ggdGhlIGVudHJ5IGlzIGJhc2VkLiAgQ29tbWVudHMgc2hvdyB0aGUgdGVybWluZm8KLSMgY2FwYWJpbGl0eSBuYW1lLCB0ZXJtY2FwIG5hbWUsIGFuZCBkZXNjcmlwdGlvbi4KLSMKLSMgSGVyZSBpcyB3aGF0J3MgZ29pbmcgb25tIGluIHRoZSBpbml0IHN0cmluZzoKLSMJRVNDIFsgNTA7NHwJc2V0IDcwMCBuYXRpdmUgbW9kZSAocmVhbGx5IGlzIDYwNSkKLSMgeAlFU0MgWyA1Njtwc3wgCXNldCBsaW5lcyB0byAyNDogcHM9MDsgNDA6IHBzPTEgKHBsdXMgc3RhdHVzIGxpbmUpCi0jCUVTQyBbIDUzOzB8CXNldCBHZW5GbG93IHRvIFhvbi9Yb2ZmCi0jCUVTQyBbIDggOzB8CXNldCBDUiBvbiBOTAotIyB4CUVTQyBbID8gMyBsL2gJc2V0IHdvcmtzcGFjZTogODAgY29sKGwpOyAxMzIgY29sKGgpCi0jCUVTQyBbID8gNCBsCWp1bXAgc2Nyb2xsCi0jCUVTQyBbID8gNSBsL2gJdmlkZW86IG5vcm1hbCAobCk7IHJldmVyc2UgKGgpCi0jCUVTQyBbID8xMyBsCUxhYmVscyBvbgotIwlFU0MgWyA/MTUgbAlwYXJpdHkgY2hlY2sgPSBubwotIwlFU0MgWyAxMyBsCW1vbml0b3IgbW9kZSBvZmYKLSMJRVNDIFsgMjAgbAlMRiBvbiBOTCAobm90IENSTEYgb24gTkwpCi0jCUVTQyBbID8gNyBoCWF1dG93cmFwIG9uCi0jCUVTQyBbIDEyIGgJbG9jYWwgZWNobyBvZmYKLSMJRVNDICggQgkJR08gPSBBU0NJSQotIwlFU0MgKSAwCQlHMSA9IFNwZWNpYWwgQ2hhciAmIExpbmUgRHJhd2luZwotIwlFU0MgWyA/IDMxIGwJU2V0IDcgYml0IGNvbnRyb2xzCi0jCi0jIE5vdGU6IE1vc3QgdGVybWluYWxzLCBlc3BlY2lhbGx5IHRoZSA2MDAgZmFtaWx5IHVzZSBSZXZlcnNlIFZpZGVvIGZvcgotIyBzdGFuZG91dCBtb2RlLiAgREVDIGFsc28gdXNlcyByZXZlcnNlIHZpZGVvLiAgVGhlIFZUMTAwIHVzZXMgYm9sZCBpbiBhZGRpdGlvbgotIyBBc3N1bWUgd2Ugc2hvdWxkIHN0YXkgd2l0aCByZXZlcnNlIHZpZGVvIGZvciA3MC4uICBIb3dldmVyLCB0aGUgNjA1VjIgZXhpdHMKLSMgc3RhbmRvdXQgbW9kZSB3aXRoIFxFW20gKGFsbCBub3JtYWwgYXR0cmlidXRlcykuICBUaGUgNzMwIGVudHJ5IHNpbXBseQotIyBleGl0cyByZXZlcnNlIHZpZGVvIHdoaWNoIHdvdWxkIGxlYXZlIG90aGVyIGN1cnJlbnQgYXR0cmlidXRlcyBpbnRhY3QuICBJdAotIyB3YXMgYXNzdW1lZCB0aGUgNzMwIGVudHJ5IHRvIGJlIG1vcmUgY29ycmVjdCBzbyBybXNvIGhhcyBjaGFuZ2VkLiAgVGhlCi0jIDYwNVYyIGhhcyBubyBzZXF1ZW5jZXMgdG8gdHVybiBpbmRpdmlkdWFsIGF0dHJpYnV0ZXMgb2ZmLCB0aHVzIGl0cyBzZXR0aW5nCi0jIGFuZCB0aGUgcm1zby9zbXNvIHNldHRpbmdzIGZyb20gdGhlIDczMC4KLSMKLSMgTm90ZTogRm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZSBpbiBybXNvIEkgY2hhbmdlZCBleGl0IHVuZGVyLXNjb3JlIG1vZGUKLSMgdG8gc3BlY2lmaWNhbGx5IHR1cm4gb2ZmIHVuZGVyc2NvcmUsIHJhdGhlciB0aGFuIHJldHVybiB0byBhbGwgbm9ybWFsCi0jIGF0dHJpYnV0ZXMKLSMKLSMgTm90ZTogVGhlIGZvbGxvd2luZyBwa2V5X3htaXQgaXMgdGFrZW4gZnJvbSB0aGUgNjA1VjIgd2hpY2ggY29udGFpbmVkIHRoZQotIyBjYXBhYmlsaXR5IGFzIHBmeGwuICBJdCB3YXMgY2hhbmdlZCBoZXJlIHRvIHBmeCBzaW5jZSBwZnhsCi0jIHdpbGwgb25seSBjb21waWxlIHN1Y2Nlc3NmdWxseSB3aXRoIFVuaXggNC4wIHRpYy4gIEFsc28gbm90ZSB0aGF0IHBmeCBvbmx5Ci0jIGFsbG93cyBzdHJpbmdzIHRvIGJlIHBhcmFtZXRlcnMgYW5kIGxhYmVsIHZhbHVlcyBtdXN0IGJlIHByb2dyYW1tZWQgYXMKLSMgY29uc3RhbnQgc3RyaW5ncy4gIFN1cHBvc2VkbHkgdGhlIHBmeGwgb2YgVmVyc2lvbiA0LjAgYWxsb3dzIGJvdGggbGFiZWxzCi0jIGFuZCBzdHJpbmdzIHRvIGJlIHBhcmFtZXRlcnMuICBUaGUgNjA1VjIgcGZ4IGVudHJ5IHNob3VsZCBiZSBleGFtaW5lZCBsYXRlcgotIyBpbiB0aGlzIHJlZ2FyZC4gRm9yIHJlZmVyZW5jZSB0aGUgNzMwIHBmeGwgZW50cnkgaXMgc2hvd24gaGVyZSBmb3IgY29tcGFyaXNvbgotIyA3MzAgcGZ4IGVudHJ5OgotIyAgICAgcGZ4bD1cRVslPyVwMSV7MjV9JTwldCVwMSVlJXAxJXsyNH0lLSU7JWQ7JXAyJWwlMDJkJT8lcDElezI1fSU8JXRxXHNcc1xzCi0jIFNZU1xzXHNcc1xzXHNGJXAxJTotMmRcc1xzJWU7MDszcSU7JXAyJXMsCi0jCi0jIChmb3IgNC4wIHRpYykKLSMgICAgIHBmeGw9XEVbJXAxJWQ7JXAyJWwlMDJkcSU/JXAxJXs5fSU8JXQgICBGJXAxJTFkICAgICAgICAgICAlOyVwMiVzLAotIwotIyAoZm9yIDw0LjAgdGljKQotIyAgICAgcGZ4PVxFWyVwMSVkOyVwMiVsJTAyZHElPyVwMSV7OX0lPCV0ICAgRiVwMSUxZCAgICAgICAgICAgJTslcDIlcywKLSMKLSMgRnJvbSB0aGUgQVQmVCA3MDUgTXVsdGktdGFza2luZyB0ZXJtaW5hbCB1c2VyJ3MgZ3VpZGUgUGFnZSA4LTgsOC05Ci0jCi0jIFBvcnQxIEludGVyZmFjZQotIwotIyBtb2R1bGFyIDEwIHBpbiBDb25uZWN0b3IKLSMgTGVmdCBzaWRlICAgICAgIFJpZ2h0IHNpZGUKLSMgUGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwCi0jCi0jICAgICAgICBLZXkgKG5vdGNoKSBhdCBib3R0b20KLSMKLSMgUGluICAgIDEgRFNSCi0jICAgICAgICAzIERDRAotIyAgICAgICAgNCBEVFIKLSMgICAgICAgIDUgU2lnIEdyb3VuZAotIyAgICAgICAgNiBSRAotIyAgICAgICAgNyBTRAotIyAgICAgICAgOCBDVFMKLSMgICAgICAgIDkgUlRTCi0jICAgICAgICAxMCBGcmFtZSBHcm91bmQKLSMKLSMgVGhlIG1hbnVhbCBpcyAxODkgcGFnZXMgYW5kIGlzIGxvYWRlZCB3aXRoIGRldGFpbHMgYWJvdXQgdGhlIGVzY2FwZSBjb2RlcywKLSMgZXRjLi4uLi4gQXZhaWxhYmxlIGZyb20gQVQmVCBDSUMgODAwLTQzMi02NjAwLi4uCi0jIGFzayBmb3IgRG9jdW1lbnQgbnVtYmVyIDk5OS0zMDAtNjYwLi4KLSMKLWF0dDcwMHxBVCZUIDcwMCAyNHg4MCBjb2x1bW4gZGlzcGxheSB3LzEwMmtleSBrZXlib2FyZCwKLQlhbSwgZXNsb2ssIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaCMyLCBsaW5lcyMyNCwgbHcjOCwgbmxhYiM4LCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbPzI1aFxFWz8xMmwsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVs/MTI7MjVoLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRpbT1cRVsybSwKLQlkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JZW5hY3M9XEUoQlxFKTAsIGZsYXNoPVxFWz81aCQ8MjAwPlxFWz81bCwgZmxuPTRcLDQsCi0JZnNsPVxFOCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVELCBpbnZpcz1cRVs4bSwKLQlpczI9XEVbNTA7NHxcRVs1MzswfFxFWzg7MHxcRVs/NDsxMzsxNWxcRVsxMzsyMGxcRVs/N2hcRVsxMmhcRShCXEUpMFxFWz8zMWxcRVswbVwwMTcsCi0JaXMzPVxFKEJcRSkwLCBrTEZUPVxFWyBBLCBrUklUPVxFWyBALCBrYnM9XkgsIGtjYnQ9XEVbWiwKLQlrY2xyPVxFWzJKLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVxFW1AsIGtkbDE9XEVbTSwga2VuZD1cRVsyNDsxSCwga2YxPVxFT2MsIGtmMTA9XEVOcCwKLQlrZjExPVxFTnEsIGtmMTI9XEVOciwga2YxMz1cRU5zLCBrZjE0PVxFTnQsIGtmMTU9XEVPQywKLQlrZjE2PVxFT0QsIGtmMTc9XEVPRSwga2YxOD1cRU9GLCBrZjE5PVxFT0csIGtmMj1cRU9kLAotCWtmMjA9XEVPSCwga2YyMT1cRU9JLCBrZjIyPVxFT0osIGtmMjM9XEVOTywga2YyND1cRU5QLAotCWtmMjU9XEVOUSwga2YyNj1cRU5SLCBrZjI3PVxFTlMsIGtmMjg9XEVOVCwga2YyOT1cRU9xLAotCWtmMz1cRU9lLCBrZjMwPVxFT3IsIGtmMzE9XEVPcywga2YzMj1cRU90LCBrZjMzPVxFT3UsCi0Ja2YzND1cRU92LCBrZjM1PVxFT3csIGtmMzY9XEVPeCwga2YzNz1cRU95LCBrZjM4PVxFT3UsCi0Ja2YzOT1cRU92LCBrZjQ9XEVPZiwga2Y0MD1cRU9sLCBrZjQxPVxFT3EsIGtmNDI9XEVPciwKLQlrZjQzPVxFT3MsIGtmNDQ9XEVPcCwga2Y0NT1cRU9uLCBrZjQ2PVxFT00sIGtmNT1cRU9nLAotCWtmNj1cRU9oLCBrZjc9XEVPaSwga2Y4PVxFT2osIGtmOT1cRU5vLCBraG9tZT1cRVtILAotCWtpY2gxPVxFW0AsIGtpbDE9XEVbTCwga25wPVxFW1UsIGtwcD1cRVtWLCBsbD1cRVsyNEgsCi0JbWMwPVxFW2ksIG1jND1cRVs/NGksIG1jNT1cRVs/NWksIG5lbD1cRUUsCi0JcGZ4PVxFWyVwMSVkOyVwMiVsJTAyZHElPyVwMSV7OX0lPCV0ICAgRiVwMSUxZCAgICAgICAgICAgJTslcDIlcywKLQlwbG49XEVbJXAxJWQ7MDswOzBxJXAyJTotMTYuMTZzLCByYz1cRTgsCi0JcmVwPSVwMSVjXEVbJXAyJXsxfSUtJWRiLCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sCi0Jcm1pcj1cRVs0bCwgcm1sbj1cRVsycCwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJteG9uPVxFWzUzOzN8LCByczE9XEVjXEVbPzM7NWxcRVs1NjswfCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwNSV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21pcj1cRVs0aCwgc21sbj1cRVtwLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHNteG9uPVxFWzUzOzB8LCB0YmM9XEVbM2csCi0JdHNsPVxFN1xFWzk5OyVpJXAxJWR4LAotCi0jIFRoaXMgZW50cnkgd2FzIG1vZGlmaWVkIDMvMTMvOTAgYnkgSldFLgotIyBmaXhlcyBpbmNsdWRlIGFkZGl0aW9ucyBvZiA8ZW5hY3M+LCBjb3JyZWN0aW5nIDxyZXA+LCBhbmQgbW9kaWZpY2F0aW9uCi0jIG9mIDxrSE9NPi4gIChTZWUgY29tbWVudHMgYmVsb3cpCi0jIGF0dDczMCBoYXMgc3RhdHVzIGxpbmUgb2YgODAgY2hhcnMKLSMgVGhlc2Ugd2VyZSBjb21tZW50ZWQgb3V0OiA8aW5kbj1cRVslcDElZFM+LCA8cmluPVxFWyVwMSVkVD4sCi0jIHRoZSA8a2YyNT4gYW5kIHVwIGtleXMgYXJlIHVzZWQgZm9yIHNoaWZ0ZWQgc3lzdGVtIEZrZXlzCi0jIE5PVEU6IEpXRSAzLzEzLzkwIFRoZSA5OCBrZXkga2V5Ym9hcmQgdHJhbnNsYXRpb24gZm9yIHNoaWZ0L0hPTUUgaXMKLSMgY3VycmVudGx5IHRoZSBzYW1lIGFzIDxraG9tZT4gKHVuc2hpZnRlZCBIT01FIG9yIFxFW0gpLiAgT24gdGhlIDEwMiwgMTAyKzEKLSMgYW5kIDEyMiBrZXkga2V5Ym9hcmRzLCB0aGUgNzMwJ3MgdHJhbnNsYXRpb24gaXMgXEVbMkouICBGb3IgY29uc2lzdGVuY3kKLSMgPGtIT00+IGhhcyBiZWVuIGNvbW1lbnRlZCBvdXQuICBUaGUgdXNlciBjYW4gdW5jb21tZW50IDxrSE9NPiBpZiB1c2luZyB0aGUKLSMgMTAyLCAxMDIrMSwgb3IgMTIyIGtleSBrZXlib2FyZHMKLSMgICAgICAga0hPTT1cRVsySiwKLSMgKGF0dDczMDogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1hdHQ3MzB8QVQmVCA3MzAgd2luZG93aW5nIHRlcm1pbmFsLAotCWFtLCBkYSwgZGIsIGVzbG9rLCBocywgbWlyLCBtc2dyLCBucGMsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaCMyLCBsaW5lcyM2MCwgbG0jMCwgbHcjOCwgbmxhYiMyNCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWz8yNWhcRVs/MTJsLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzEyOzI1aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLAotCWVuYWNzPVxFKEJcRSkwLCBmbGFzaD1cRVs/NWgkPDIwMD5cRVs/NWwsIGZzbD1cRTgsCi0JaG9tZT1cRVtILCBodD1eSSwgaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwKLQlpbmQ9XEVELCBpbnZpcz1cRVs4bSwKLQlpczE9XEVbODswfFxFWz8zOzQ7NTsxMzsxNWxcRVsxMzsyMGxcRVs/N2hcRVsxMmhcRShCXEUpQiwKLQlpczI9XEVbbVwwMTcsIGlzMz1cRShCXEUpMCwga0xGVD1cRVsgQCwga1JJVD1cRVsgQSwga2JzPV5ILAotCWtjYnQ9XEVbWiwga2Nscj1cRVsySiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjE9XEVPYywga2YxMD1cRU5wLCBrZjExPVxFTnEsIGtmMTI9XEVOciwKLQlrZjEzPVxFTnMsIGtmMTQ9XEVOdCwga2YxNT1cRU51LCBrZjE2PVxFTnYsIGtmMTc9XEVOdywKLQlrZjE4PVxFTngsIGtmMTk9XEVOeSwga2YyPVxFT2QsIGtmMjA9XEVOeiwga2YyMT1cRU57LAotCWtmMjI9XEVOfCwga2YyMz1cRU59LCBrZjI0PVxFTn4sIGtmMjU9XEVPQywga2YyNj1cRU9ELAotCWtmMjc9XEVPRSwga2YyOD1cRU9GLCBrZjI5PVxFT0csIGtmMz1cRU9lLCBrZjMwPVxFT0gsCi0Ja2YzMT1cRU9JLCBrZjMyPVxFT0osIGtmMzM9XEVOTywga2YzND1cRU5QLCBrZjM1PVxFTlEsCi0Ja2YzNj1cRU5SLCBrZjM3PVxFTlMsIGtmMzg9XEVOVCwga2YzOT1cRU9VLCBrZjQ9XEVPZiwKLQlrZjQwPVxFT1YsIGtmNDE9XEVPVywga2Y0Mj1cRU9YLCBrZjQzPVxFT1ksIGtmNDQ9XEVPWiwKLQlrZjQ1PVxFT1ssIGtmNDY9XEVPXHMsIGtmNDc9XEVPXSwga2Y0OD1cRU9cXiwga2Y1PVxFT2csCi0Ja2Y2PVxFT2gsIGtmNz1cRU9pLCBrZjg9XEVPaiwga2Y5PVxFTm8sIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbQCwga2lsMT1cRVtMLCBraW5kPVxFW1MsIGtyaT1cRVtULAotCW1jMD1cRVs/MTloXEVbMGksIG1jND1cRVs/NGksIG1jNT1cRVs/NWksIG5lbD1cRUUsCi0JcGZ4PVxFWyU/JXAxJXsyNX0lPCV0JXAxJWUlcDElezI0fSUtJTslZDslcDIlbCUwMmQlPyVwMSV7MjV9JTwldHEgICBTWVMgICAgIEYlcDElOi0yZCAgJWU7MDszcSU7JXAyJXMsCi0JcGZ4bD1cRVslcDElZDslcDIlbCUwMmQ7MDswcSVwMyU6LTE2LjE2cyVwMiVzLAotCXBsbj1cRVslcDElZDswOzA7MHElcDIlOi0xNi4xNnMsIHJjPVxFOCwKLQlyZXA9JXAxJWNcRVslcDIlezF9JS0lZGIsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFjcz1eTywKLQlybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1sbj1cRVs/MTNoLCBybXNvPVxFWzI3bSwKLQlybXVsPVxFWzI0bSwgcm14b249XEVbPzIxbCwgcnMyPVxFY1xFWz8zbCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwNSV0OzIlOyU/JXAyJXQ7NCU7JT8lcDQldDs1JTslPyVwMyVwMSV8JXQ7NyU7JT8lcDcldDs4JTttJT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFW21cMDE3LCBzbWFjcz1eTiwgc21hbT1cRVs/N2gsIHNtaXI9XEVbNGgsCi0Jc21sbj1cRVs/MTNsLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCBzbXhvbj1cRVs/MjFoLAotCXN3aWRtPVxFIzYsIHRzbD1cRTdcRVs7JWklcDElZHgsCi1hdHQ3MzAtNDF8NzMwTVRHLTQxfEFUJlQgNzMwLTQxIHdpbmRvd2luZyB0ZXJtaW5hbCBWZXJzaW9uLAotCWxpbmVzIzQxLCB1c2U9YXR0NzMwLAotYXR0NzMwLTI0fDczME1URy0yNHxBVCZUIDczMC0yNCB3aW5kb3dpbmcgdGVybWluYWwgVmVyc2lvbiwKLQlsaW5lcyMyNCwgdXNlPWF0dDczMCwKLWF0dDczMHJ8NzMwTVRHcnxBVCZUIDczMCByZXYgdmlkZW8gd2luZG93aW5nIHRlcm1pbmFsIFZlcnNpb24sCi0JZmxhc2g9XEVbPzVsJDwyMDA+XEVbPzVoLAotCWlzMT1cRVs4OzB8XEVbPzM7NDsxMzsxNWxcRVs/NWhcRVsxMzsyMGxcRVs/N2hcRVsxMmhcRShCXEUpQiwKLQl1c2U9YXR0NzMwLAotYXR0NzMwci00MXw3MzBNVEctNDFyfEFUJlQgNzMwci00MSByZXYgdmlkZW8gd2luZG93aW5nIHRlcm1pbmFsIFZlcnNpb24sCi0JbGluZXMjNDEsIHVzZT1hdHQ3MzByLAotYXR0NzMwci0yNHw3MzBNVEdyLTI0fEFUJlQgNzMwci0yNCByZXYgdmlkZW8gd2luZG93aW5nIHRlcm1pbmFsIFZlcnNpb24sCi0JbGluZXMjMjQsIHVzZT1hdHQ3MzByLAotCi0jIFRoZSBmb2xsb3dpbmcgcmVwcmVzZW50cyB0aGUgc2NyZWVuIGxheW91dCBhbG9uZyB3aXRoIHRoZSBhc3NvY2lhdGVkCi0jIGJlemVsIGJ1dHRvbnMgZm9yIHRoZSA1NDMwL3B0NTA1IHRlcm1pbmFsLiBUaGUgImtmIiBkZXNpZ25hdGlvbnMgZG8KLSMgbm90IGFwcGVhciBvbiB0aGUgc2NyZWVuIGJ1dCBhcmUgc2hvd24gdG8gcmVmZXJlbmNlIHRoZSBiZXplbCBidXR0b25zLgotIyBUaGUgIkNNRCIsICJNQUlMIiwgYW5kICJSRURSQVciIGJ1dHRvbnMgYXJlIHNob3duIGluIHRoZWlyIGFwcHJveGltYXRlCi0jIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzY3JlZW4uCi0jCi0jCi0jCi0jICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0jICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIFhYWFggfCBrZjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2YyNCB8IFhYWFgKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgWFhYWCB8IGtmMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZjIzIHwgWFhYWAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyBYWFhYIHwga2YyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtmMjIgfCBYWFhYCi0jICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIFhYWFggfCBrZjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2YyMSB8IFhYWFgKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgWFhYWCB8IGtmNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZjIwIHwgWFhYWAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyBYWFhYIHwga2Y1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtmMTkgfCBYWFhYCi0jICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIFhYWFggfCBrZjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2YxOCB8IFhYWFgKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgWFhYWCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYWAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotIyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotIwotIyAgICAgICAgICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYICBYWFhYCi0jCi0jIE5vdGU6IFhYWFggcmVwcmVzZW50cyB0aGUgc2NyZWVuIGJ1dHRvbnMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01EICAgUkVEUkFXCi0jCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BSUwKLSMKLSMgdmVyc2lvbiAxIG5vdGU6Ci0jCVRoZSBjaGFyYWN0ZXIgc3RyaW5nIHNlbnQgYnkga2V5ICdrZjI2JyBtYXkgYmUgdXNlciBwcm9ncmFtbWFibGUKLSMgICAgICAgdG8gc2VuZCBlaXRoZXIgXEVbMTZzLCBvciBcRVsyNnMuCi0jICAgICAgIFRoZSBjaGFyYWN0ZXIgc3RyaW5nIHNlbnQgYnkga2V5ICdrcmZyJyBtYXkgYmUgdXNlciBwcm9ncmFtbWFibGUKLSMgICAgICAgdG8gc2VuZCBlaXRoZXIgXEVbMTdzLCBvciBcRVsyN3MuCi0jCi0jIERlcHJlc3Npb24gb2YgdGhlICJDTUQiIGtleSBzZW5kcyAgICBcRSEgICAgKGtjbWQpCi0jIERlcHJlc3Npb24gb2YgdGhlICJNQUlMIiBrZXkgc2VuZHMgICBcRVsyNnMgKGtmMjYpCi0jICJSRURSQVciIHNhbWUgYXMgIlJFRlJFU0giIChrcmZyKQotIwotIyAia2YiIGZ1bmN0aW9ucyBhZGRzIGNhcnJpYWdlIHJldHVybiB0byBvdXRwdXQgc3RyaW5nIGlmIHRlcm1pbmFsIGlzIGluCi0jICduZXcgbGluZScgbW9kZS4KLSMKLSMgVGhlIGZvbGxvd2luZyBhcmUgZnVuY3Rpb25zIG5vdCBjb3ZlcmVkIGluIHRoZSB0YWJsZSBhYm92ZToKLSMKLSMgICAgICAgU2V0IGtleWJvYXJkIGNoYXJhY3RlciAoU0tDKTogXEVQbjE7UG4ydwotIyAgICAgICAgICAgICAgICAgICAgICAgUG4xPSAwIEJhY2sgU3BhY2Uga2V5Ci0jICAgICAgICAgICAgICAgICAgICAgICBQbjE9IDEgQnJlYWsga2V5Ci0jICAgICAgICAgICAgICAgICAgICAgICBQbjI9ICAgUHJvZ3JhbSBjaGFyIChoZXgpCi0jCi0jICAgICAgIFNjcmVlbiBEZWZpbml0aW9uIChTREYpOiBcRVtQbjE7UG4yO1BuMztQbjQ7UG41dAotIyAgICAgICAgICAgICAgICAgICAgICAgUG4xPSAgICAgV2luZG93IG51bWJlciAoMS0zOSkKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuMi1QbjU9IFk7WDtZO1ggY29vcmRpbmF0ZXMKLSMKLSMgICAgICAgU2NyZWVuIFNlbGVjdGlvbiAoU1NMKTogXEVbUG51Ci0jICAgICAgICAgICAgICAgICAgICAgICBQbj0gV2luZG93IG51bWJlcgotIwotIyAgICAgICBTZXQgVGVybWluYWwgTW9kZXMgKFNNKTogXEVbUG5oCi0jICAgICAgICAgICAgICAgICAgICAgICBQbj0gMyBHcmFwaGljcyBtb2RlCi0jICAgICAgICAgICAgICAgICAgICAgICBQbj0gPiBDdXJzb3IgYmxpbmsKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSA8IEVudGVyIG5ldyBsaW5lIG1vZGUKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSA9IEVudGVyIHJldmVyc2UgaW5zZXJ0L3JlcGxhY2UgbW9kZQotIyAgICAgICAgICAgICAgICAgICAgICAgUG49ID8gRW50ZXIgbm8gc2Nyb2xsIG1vZGUKLSMKLSMgICAgICAgUmVzZXQgVGVybWluYWwgTW9kZSAoUk0pOiBcRVtQbmwKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSAzIEV4aXQgZ3JhcGhpY3MgbW9kZQotIyAgICAgICAgICAgICAgICAgICAgICAgUG49ID4gRXhpdCBjdXJzb3IgYmxpbmsKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSA8IEV4aXQgbmV3IGxpbmUgbW9kZQotIyAgICAgICAgICAgICAgICAgICAgICAgUG49ID0gRXhpdCByZXZlcnNlIGluc2VydC9yZXBsYWNlIG1vZGUKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSA/IEV4aXQgbm8gc2Nyb2xsIG1vZGUKLSMKLSMgICAgICAgU2NyZWVuIFN0YXR1cyBSZXBvcnQgKFNTUik6IFxFW1BucAotIyAgICAgICAgICAgICAgICAgICAgICAgUG49IDAgUmVxdWVzdCBjdXJyZW50IHdpbmRvdyBudW1iZXIKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSAxIFJlcXVlc3QgY3VycmVudCB3aW5kb3cgZGltZW5zaW9ucwotIwotIyAgICAgICBEZXZpY2UgU3RhdHVzIFJlcG9ydCAoRFNSKTogXEVbNm4gICAgUmVxdWVzdCBjdXJzb3IgcG9zaXRpb24KLSMKLSMgICAgICAgQ2FsbCBTdGF0dXMgUmVwb3J0IChDU1IpOiBcRVtQbnYKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSAwIENhbGwgZmFpbGVkCi0jICAgICAgICAgICAgICAgICAgICAgICBQbj0gMSBDYWxsIHN1Y2Nlc3NmdWwKLSMKLSMgICAgICAgVHJhbnNwYXJlbnQgQnV0dG9uIFN0cmluZyAoVEJTKTogXEVbUG4xO1BuMjtQbjM7e3N0cmluZwotIyAgICAgICAgICAgICAgICAgICAgICAgUG4xPSBCdXR0b24gbnVtYmVyIHRvIGJlIGxvYWRlZAotIyAgICAgICAgICAgICAgICAgICAgICAgUG4yPSBDaGFyYWN0ZXIgY291bnQgb2YgInN0cmluZyIKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuMz0gS2V5IG1vZGUgYmVpbmcgbG9hZGVkOgotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwPSBVbnNoaWZ0ZWQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMT0gU2hpZnRlZAotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyPSBDb250cm9sCi0jICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc9IFRleHQgc3RyaW5nICgxNSBjaGFycyBtYXgpCi0jCi0jICAgICAgIFNjcmVlbiBOdW1iZXIgUmVwb3J0IChTTlIpOiBcRVtQbnAKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuPSBTY3JlZW4gbnVtYmVyCi0jCi0jICAgICAgIFNjcmVlbiBEaW1lbnNpb24gUmVwb3J0IChTRFIpOiBcRVtQbjE7UG4ycgotIyAgICAgICAgICAgICAgICAgICAgICAgUG4xPSBOdW1iZXIgb2Ygcm93cyBhdmFpbGFibGUgaW4gd2luZG93Ci0jICAgICAgICAgICAgICAgICAgICAgICBQbjI9IE51bWJlciBvZiBjb2x1bW5zIGF2YWlsYWJsZSBpbiB3aW5kb3cKLSMKLSMgICAgICAgQ3Vyc29yIFBvc2l0aW9uIFJlcG9ydCAoQ1BSKTogXEVbUG4xO1BuMlIKLSMgICAgICAgICAgICAgICAgICAgICAgIFBuMT0gIlkiIFBvc2l0aW9uIG9mIGN1cnNvcgotIyAgICAgICAgICAgICAgICAgICAgICAgUG4yPSAiWCIgUG9zaXRpb24gb2YgY3Vyc29yCi0jCi0jICAgICAgIFJlcXVlc3QgQW5zd2VyIEJhY2sgKFJBQik6IFxFW2MKLSMKLSMgICAgICAgQW5zd2VyIEJhY2sgUmVzcG9uc2UgKEFCUik6IFxFWz87KjszMDtWU1YKLSMgICAgICAgICAgICAgICAgICAgICAgICo9ICAwIE5vIHByaW50ZXIgYXZhaWxhYmxlCi0jICAgICAgICAgICAgICAgICAgICAgICAqPSAgMiBQcmludGVyIGF2YWlsYWJsZQotIyAgICAgICAgICAgICAgICAgICAgICAgVj0gIFNvZnR3YXJlIHZlcnNpb24gbnVtYmVyCi0jICAgICAgICAgICAgICAgICAgICAgICBTVj0gU29mdHdhcmUgc3ViIHZlcnNpb24gbnVtYmVyCi0jCShwcmludGVyLWF2YWlsYWJsZSBmaWVsZCBub3QgZG9jdW1lbnRlZCBpbiB2MSkKLSMKLSMgICAgICAgU2NyZWVuIEFsaWdubWVudCBBaWQ6IFxFbgotIwotIyAgICAgICBCZWxsIChsb3dlciBwaXRjaCk6IFxFW3gKLSMKLSMgICAgICAgRGlhbCBQaG9uZSBOdW1iZXI6IFxFUGRzdHJpbmdcCi0jICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc9IFBob25lIG51bWJlciB0byBiZSBkaWFsZWQKLSMKLSMgICAgICAgU2V0IFBob25lIExhYmVsczogXEVQcHN0cmluZ1wKLSMgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZz0gTGFiZWwgZm9yIHBob25lIGJ1dHRvbnMKLSMKLSMgICAgICAgU2V0IENsb2NrOiBcRVBjaG91cjttaW51dGU7c2Vjb25kXAotIwotIyAgICAgICBQb3NpdGlvbiBDbG9jazogXEVQc1k7WFwKLSMgICAgICAgICAgICAgICAgICAgICAgIFk9ICJZIiBjb29yZGluYXRlCi0jICAgICAgICAgICAgICAgICAgICAgICBYPSAiWCIgY29vcmRpbmF0ZQotIwotIyAgICAgICBEZWxldGUgQ2xvY2s6IFxFcHJcCi0jCi0jICAgICAgIFByb2dyYW1taW5nIFRoZSBGdW5jdGlvbiBCdXR0b25zOiBcRVBmUG47c3RyaW5nXAotIyAgICAgICAgICAgICAgICAgICAgICAgUG49IEJ1dHRvbiBudW1iZXIgKDAwLTA2LCAxOC0yNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZjAwLWtmMDYsIGtmMTgta2YyNCkKLSMgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZz0gVGV4dCB0byBzZW50IG9uIGJ1dHRvbiBkZXByZXNzaW9uCi0jCi0jIFRoZSBmb2xsb3dpbmcgaW4gdmVyc2lvbiAyIG9ubHk6Ci0jCi0jICAgICAgIFJlcXVlc3QgRm9yIExvY2FsIERpcmVjdG9yeSBEYXRhOiBcRVBwMTI7XAotIwotIyAgICAgICBMb2NhbCBEaXJlY3RvcnkgRGF0YSB0byBob3N0OiBcRVBwMTE7TE9DQUwuLi5ESVJFQ1RPUlkuLi5EQVRBXAotIwotIwlSZXF1ZXN0IGZvciBMb2NhbCBEaXJlY3RvcnkgRGF0YSBpbiBwcmludCBmb3JtYXQ6IFxFUHAxMztcCi0jCi0jCUVuYWJsZSAnUHJ0IG9uIExpbmUnIG1vZGU6IFwwMjIgKERDMikKLSMKLSMJRGlzYWJsZSAnUHJ0IG9uIExpbmUnIG1vZGU6IFwwMjQgKERDNCkKLSMKLQotIyAwNS1BdWctODY6Ci0jIFRoZSBmb2xsb3dpbmcgVGVybWluZm8gZW50cnkgZGVzY3JpYmVzIGZ1bmN0aW9ucyB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5Ci0jIHRoZSBBVCZUIDU0MzAvcHQ1MDUgdGVybWluYWwgc29mdHdhcmUgdmVyc2lvbiAyIGFuZCBsYXRlci4KLWF0dDUwNXxwdDUwNXxhdHQ1NDMwfGdzNTQzMHxBVCZUIFBlcnNvbmFsIFRlcm1pbmFsIDUwNSBvciA1NDMwIEdFVFNFVCB0ZXJtaW5hbCwKLQlhbSwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbMkpcRVtILAotCWNub3JtPVxFWz5sLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVs+aCwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVkPVxFWzBKLCBlbD1cRVswSywgZWwxPVxFWzJLLCBob21lPVxFW0gsIGh0PV5JLAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpczE9XEVQclxcRVswdVxFWzJKXEVbMDswSFxFW21cRVszbFxFWzxsXEVbNGxcRVs+bFxFWz1sXEVbP2wsCi0Ja2JzPV5ILCBrY21kPVxFISwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZjA9XEVbMDBzLCBrZjE9XEVbMDFzLCBrZjE4PVxFWzE4cywKLQlrZjE5PVxFWzE5cywga2YyPVxFWzAycywga2YyMD1cRVsyMHMsIGtmMjE9XEVbMjFzLAotCWtmMjI9XEVbMjJzLCBrZjIzPVxFWzIzcywga2YyND1cRVsyNHMsIGtmMjY9XEVbMjZzLAotCWtmMz1cRVswM3MsIGtmND1cRVswNHMsIGtmNT1cRVswNXMsIGtmNj1cRVswNnMsCi0Ja3Jmcj1cRVsyN3MsIG1jND1cRVs0aSwgbWM1PVxFWzVpLCByYz1cRTgsIHJldj1cRVs3bSwKLQlybWFjcz1cRVsxMG0sIHJtYW09XEVbMTE7MWosIHJtaXI9XEVbNGwsIHJtc289XEVbbSwKLQlybXVsPVxFW20sIHJzMT1cRWMsIHNjPVxFNywgc2dyMD1cRVttLCBzbWFjcz1cRVsxMW0sCi0Jc21hbT1cRVsxMTswaiwgc21pcj1cRVs0aCwgc21zbz1cRVsxbSwgc211bD1cRVs0bSwKLQotIyBUaGUgZm9sbG93aW5nIFRlcm1pbmZvIGVudHJ5IGRlc2NyaWJlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIHN1cHBvcnRlZCBieQotIyB0aGUgQVQmVCA1NDMwL3B0NTA1IHRlcm1pbmFsIHNvZnR3YXJlIHZlcnNpb24gMS4KLWF0dDUwNS0yNHxwdDUwNS0yNHxnczU0MzAtMjR8QVQmVCBQVDUwNSBvciA1NDMwIEdFVFNFVCB2ZXJzaW9uIDEgMjQgbGluZXMsCi0JbGluZXMjMjQsCi0JbWM0QCwgbWM1QCwgcmNALCBybWFtQCwgc2NALCBzbWFtQCwgdXNlPWF0dDUwNSwKLXR0NTA1LTIyfHB0NTA1LTIyfGdzNTQzMC0yMnxBVCZUIFBUNTA1IG9yIDU0MzAgR0VUU0VUIHZlcnNpb24gMSAyMiBsaW5lcywKLQlsaW5lcyMyMiwgdXNlPWF0dDUwNSwKLSMKLSMjIyMgLS0tLS0tLS0tLS0tLS0tLS0tIFRFUk1JTkZPIEZJTEUgQ0FOIEJFIFNQTElUIEhFUkUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFRoaXMgY3V0IG1hcmsgaGVscHMgbWFrZSBsaWZlIGxlc3MgcGFpbmZ1bCBmb3IgcGVvcGxlIHJ1bm5pbmcgbmN1cnNlcyB0aWMKLSMgb24gbWFjaGluZXMgd2l0aCByZWxhdGl2ZWx5IGxpdHRsZSBSQU0uICBUaGUgZmlsZSBjYW4gYmUgYnJva2VuIGluIGhhbGYgaGVyZQotIyBjbGVhbmx5IGFuZCBjb21waWxlZCBpbiBzZWN0aW9ucyAtLSBubyBgdXNlJyByZWZlcmVuY2VzIGNyb3NzIHRoaXMgY3V0Ci0jIGdvaW5nIGZvcndhcmQuCi0jCi0KLSMjIyMgQW1wZXggKERpYWxvZ3VlKQotIwotIyBZZXMsIHRoZXNlIGFyZSB0aGUgc2FtZSBwZW9wbGUgd2hvIGFyZSBiZXR0ZXIta25vd24gZm9yIG1ha2luZyBhdWRpby0gYW5kCi0jIHZpZGVvdGFwZS4gIEknbSB0b2xkIHRoZXkgYXJlIGxvY2F0ZWQgaW4gUmVkd29vZCBDaXR5LCBDQS4KLSMKLQotIyBGcm9tOiA8Y2Jvc2chdWNidmF4IVNSQzpnZW9yZ2U+IEZyaSBTZXAgMTEgMjI6Mzg6MzIgMTk4MQotIyAoYW1wZXg4MDogc29tZSBjYXBhYmlsaXRpZXMgbWVyZ2VkIGluIGZyb20gU0NPJ3MgZW50cnkgLS0gZXNyKQotYW1wZXg4MHxhODB8ZDgwfGRpYWxvZ3VlfGRpYWxvZ3VlODB8YW1wZXggZGlhbG9ndWUgODAsCi0JT1RicywgYW0sIGJ3LCB1bCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNidD1cRUksIGNsZWFyPVxFKiQ8NzU+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXLCBkbDE9XEVSJDw1Kj4sIGVkPVxFeSwgZWw9XEV0LCBodD1eSSwgaHRzPVxFMSwKLQlpY2gxPVxFUSwgaWwxPVxFRSQ8NSo+LCBpbmQ9XkosIGlzMj1cRUEsIHJtc289XEVrLCBybXVsPVxFbSwKLQlzbXNvPVxFaiwgc211bD1cRWwsIHRiYz1cRTMsCi0jIFRoaXMgZW50cnkgd2FzIGZyb20gc29tZWJvZHkgYW5vbnltb3VzLCBUdWUgQXVnICA5IDIwOjExOjM3IDE5ODMsIHdobyB3cm90ZToKLWFtcGV4MTc1fGFtcGV4IGQxNzUsCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRSssIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFeSwgZWw9XEV0LCBob21lPV5eLCBpY2gxPVxFUSwgaWwxPVxFRSwgaW5kPV5KLAotCWlzMj1cRVhcRUFcRUYsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLAotCWtkY2gxPVxFVywga2RsMT1cRVIsIGtob21lPV5eLCBraWNoMT1cRVEsIGtpbDE9XEVFLCBsbD1eXl5LLAotCXJtY3VwPVxFRiwgcm1zbz1cRWssIHJtdWw9XEVtLCBzbWN1cD1cRU4sIHNtc289XEVqLCBzbXVsPVxFbCwKLSMgTm8gYmFja3NwYWNlIGtleSBpbiB0aGUgbWFpbiBRV0VSVFkgY2x1c3Rlci4gRm9ydHVuYXRlbHksIGl0IGhhcyBhCi0jIE5FV0xJTkUvUEFHRSBrZXkganVzdCBhYm92ZSBSRVRVUk4gdGhhdCBzZW5kcyBhIHN0cmFuZ2Ugc2luZ2xlLWNoYXJhY3RlcgotIyBjb2RlLiAgR2l2ZW4gYSBzdWl0YWJsZSBVbml4IChvbmUgdGhhdCBsZXRzIHlvdSBzZXQgYW4gZWNoby1lcmFzZS1hcy1CUy1TUC1CUwotIyBtb2RlKSwgdGhpcyBrZXkgY2FuIGJlIHVzZWQgYXMgdGhlIGVyYXNlIGtleTsgSSBmaW5kIEkgbGlrZSB0aGlzLiBCZWNhdXNlCi0jIHNvbWUgcGVvcGxlIGFuZCBzb21lIHN5c3RlbXMgbWF5IG5vdCwgdGhlcmUgaXMgYW5vdGhlciB0ZXJtY2FwICgiYW1wZXgxNzUiKQotIyB0aGF0IHN1cHByZXNzZXMgdGhpcyBsaXR0bGUgZWNjZW50cmljaXR5IGJ5IG9taXR0aW5nIHRoZSByZWxldmFudCBjYXBhYmlsaXR5LgotYW1wZXgxNzUtYnxhbXBleCBkMTc1IHVzaW5nIGxlZnQgYXJyb3cgZm9yIGVyYXNlLAotCWticz1eXywgdXNlPWFtcGV4MTc1LAotIyBGcm9tOiBSaWNoYXJkIEJhc2NvdmUgPGF0ZCFkc2QhcmNiQHVjYnZheC5iZXJrZWxleS5lZHU+Ci0jIChhbXBleDIxMDogcmVtb3ZlZCBvYnNvbGV0ZSAiOmtuIzEwOiIgLS0gZXNyKQotYW1wZXgyMTB8YTIxMHxhbXBleCBhMjEwLAotCU9UYnMsIGFtLCBocywgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzEsCi0JY2J0PVxFSSwgY2xlYXI9XEUqLCBjdWIxPV5ILCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFeSwgZWw9XEV0LCBmbGFzaD1cRVVcRVhcRVVcRVhcRVVcRVhcRVVcRVgsCi0JZnNsPVxFLjIsIGhvbWU9Xl4sIGh0PV5JLCBpY2gxPVxFUSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGQsIGlsMT1cRUUsIGludmlzQCwKLQlpczI9XEVDXEV1XEUnXEUoXEVsXEVBXEUlXEV7XEUuMlxFRzBcRWRcRW4sIGtjdWIxPV5ILAotCWtjdWQxPV5WLCBrY3VmMT1eTCwga2N1dTE9XkssIGtmMD1eQTBcciwga2YxPV5BMVxyLAotCWtmMj1eQTJcciwga2YzPV5BM1xyLCBrZjQ9XkE0XHIsIGtmNT1eQTVcciwga2Y2PV5BNlxyLAotCWtmNz1eQTdcciwga2Y4PV5BOFxyLCBrZjk9XkE5XHIsIGtob21lPV5eLAotCXRzbD1cRS4wXEVnXEV9XEVmLCB1c2U9YWRtK3NnciwKLSMgKGFtcGV4MjE5OiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nLCBhZGRlZCA8Y3Z2aXM+Ci0jIGZyb20gYW1wZXgyMTl3LCBhZGRlZCA8Y25vcm0+PVxFWz8zbCwgaXJyZXNpc3RpYmx5IHN1Z2dlc3RlZCBieSA8Y3Z2aXM+LAotIyBhbmQgbW92ZWQgdGhlIHBhZGRpbmcgdG8gYmUgKmFmdGVyKiB0aGUgY2FwcyAtLSBlc3IpCi1hbXBleDIxOXxhbXBleC0yMTl8YW1wMjE5fEFtcGV4IHdpdGggQXV0b21hcmdpbnMsCi0JaHMsIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LCBjYnQ9XEVbWiwKLQljbGVhcj1cRVtIXEVbMkokPDUwPiwgY25vcm09XEVbPzNsLCBjcj1eTSwKLQljc3I9JWlcRVslcDElMmQ7JXAyJTJkciwgY3ViMT1eSCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQyQ8Mj4sIGN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sCi0JY3V1MT1cRVtBJDwyPiwgY3Z2aXM9XEVbPzNoLCBkaW09XEVbMW0sIGVkPVxFW0okPDUwPiwKLQllbD1cRVtLJDwzPiwgaG9tZT1cRVtILCBodD1eSSwgaW5kPV5KLAotCWlzMj1cRT5cRVs/MWxcRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YwPVxFWzIxfiwKLQlrZjE9XEVbN34sIGtmMj1cRVs4fiwga2YzPVxFWzl+LCBrZjQ9XEVbMTB+LCBrZjU9XEVbMTF+LAotCWtmNj1cRVsxN34sIGtmNz1cRVsxOH4sIGtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtob21lPVxFW0gsCi0JcmV2PVxFWzdtLCByaT1cRU0kPDU+LCBybWFtPVxFWz83bCwgcm1reD1cRT4sCi0Jcm1zbz1cRVttJDwyPiwgcm11bD1cRVttJDwyPiwgc2dyMD1cRVttJDwyPiwgc21hbT1cRVs/N2gsCi0Jc21reD1cRT0sIHNtc289XEVbN20kPDI+LCBzbXVsPVxFWzRtJDwyPiwKLWFtcGV4MjE5d3xhbXBleC0yMTl3fGFtcDIxOXd8QW1wZXggMTMyIGNvbHMsCi0JY29scyMxMzIsIGxpbmVzIzI0LAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGluZD1eSiwKLQlpczI9XEU+XEVbPzNoXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCB1c2U9YW1wZXgyMTksCi0jIChhbXBleDIzMjogcmVtb3ZlZCA8aWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvYW1wZXg+LCBubyBmaWxlIGFuZCBubyA8aHRzPiAtLWVzcikKLWFtcGV4MjMyfGFtcGV4LTIzMnxBbXBleCBNb2RlbCAyMzIsCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsIHhtYyMxLAotCWNidD1cRUksIGNpdmlzPVxFLjAsIGNsZWFyPVxFKywgY25vcm09XEUuNCwgY3ViMT1eSCwgY3VkMT1eViwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXLCBkbDE9XEVSJDw1Ki8+LCBlZD1cRVksIGVsPVxFVCwKLQlmbGFzaD1cRWIkPDIwMC8+XEVkLCBodD1eSSwgaWNoMT1cRVEsIGlsMT1cRUUkPDUqLz4sCi0JaW52aXNALCBpczI9XEVnXEVsLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eViwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtmMD1eQUBcciwga2YxPV5BQVxyLCBrZjI9XkFCXHIsIGtmMz1eQUNcciwKLQlrZjQ9XkFEXHIsIGtmNT1eQUVcciwga2Y2PV5BRlxyLCBrZjc9XkFHXHIsIGtmOD1eQUhcciwKLQlrZjk9XkFJXHIsIGtob21lPV5eLCB1c2U9YWRtK3NnciwKLSMgKGFtcGV4OiByZW1vdmVkIDxpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9hbXAtMTMyPiwgbm8gZmlsZSBhbmQgbm8gPGh0cz4gLS0gZXNyKQotYW1wZXgyMzJ3fEFtcGV4IE1vZGVsIDIzMiAvIDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLCBsaW5lcyMyNCwKLQlpczI9XEVcMDM0RWdcRWwsIHVzZT1hbXBleDIzMiwKLQotIyMjIyBBbm4gQXJib3IgKGFhKQotIwotIyBBbm4gQXJib3IgbWFkZSBkcmVhbSB0ZXJtaW5hbHMgZm9yIGhhY2tlcnMgLS0gbGFyZ2Ugc2NyZWVuIHNpemVzIGFuZCBodWdlCi0jIG51bWJlcnMgb2YgZnVuY3Rpb24ga2V5cy4gIEF0IGxlYXN0IHNvbWUgdXNlZCBtb25pdG9ycyBpbiBwb3J0cmFpdCBtb2RlLAotIyBhbGxvd2luZyB1cCB0byA3Ni1jaGFyYWN0ZXIgc2NyZWVuIGhlaWdodHMhICBUaGV5IHdlcmUgcmVhY2hhYmxlIGF0OgotIwotIwlBbm4gQXJib3IgVGVybWluYWxzCi0jCTYxNzUgSmFja3NvbiBSb2FkCi0jCUFubiBBcmJvciwgTUkgNDgxMDMKLSMJKDMxMyktNjYzLTgwMDAKLSMKLSMgQnV0IGluIDE5OTYgdGhlIHBob25lIG51bWJlciByZWFjaGVzIHNvbWUga2l0c2NoeSByZXRhaWwgc2hvcCwgYW5kIEFubiBBcmJvcgotIyBjYW4ndCBiZSBmb3VuZCBvbiB0aGUgV2ViOyBJIGZlYXIgdGhleSdyZSBsb25nIGRlYWQuICBSLkkuUC4KLSMKLQotCi0jIE9yaWdpbmFsbHkgZnJvbSBNaWtlIE8nQnJpZW5AUmFuZCBhbmQgSG93YXJkIEthdHNlZmYgYXQgQmVsbCBMYWJzLgotIyBIaWdobHkgbW9kaWZpZWQgNi8yMiBieSBNaWtlIE8nQnJpZW4uCi0jIHNwbGl0IG91dCBpbnRvIHNldmVyYWwgZm9yIHRoZSB2YXJpb3VzIHNjcmVlbiBzaXplcyBieSBkYXZlLXlvc3RAcmFuZAotIyBNb2RpZmljYXRpb25zIG1hZGUgMy84MiBieSBNYXJrIEhvcnRvbgotIyBNb2RpZmllZCBieSBUb20gUXVhcmxlcyBhdCBVQ0IgZm9yIGdyZWF0ZXIgZWZmaWNpZW5jeSBhbmQgbW9yZSBkaXZlcnNpdHkKLSMgc3RhdHVzIGxpbmUgbW92ZWQgdG8gdG9wIG9mIHNjcmVlbiwgPGZsYXNoPiByZW1vdmVkIDUvODIKLSMgU29tZSB1bmtub3duIHBlcnNvbiBhdCBTQ08gdGhlbiBoYWNrZWQgdGhlIGluaXQgc3RyaW5ncyB0byBtYWtlIHRoZW0gbW9yZQotIyBlZmZpY2llbnQuCi0jCi0jIGFzc3VtZXMgdGhlIGZvbGxvd2luZyBzZXR1cDoKLSMgICBBIG1lbnU6IDAwMDAgMTAxMCAgMDAwMSAwMDAwCi0jICAgQiBtZW51OiA5NjAwICAwMTAwIDEwMDAgIDAwMDAgMDAwMCAgMTAwMCAwMDAwICAxNyAgMTkKLSMgICBDIG1lbnU6IDU2ICAgNjYgICAwICAgIDAgICAgOTYwMCAgMDExMCAxMTAwCi0jICAgRCBtZW51OiAwMTEwIDEwMDEgICAxICAgMAotIwotIwlCcmllZmx5LCB0aGUgc2V0dGluZ3MgYXJlIGZvciB0aGUgZm9sbG93aW5nIG1vZGVzOgotIwkgICAodmFsdWVzIGFyZSBmb3IgYml0IHNldC9jbGVhciB3aXRoICogaW5kaWNhdGluZyBvdXIgcHJlZmVyZW5jZQotIwkgICAgYW5kIHRoZSB2YWx1ZSB1c2VkIHRvIHRlc3QgdGhlc2UgdGVybWNhcHMpCi0jCU5vdGUgdGhhdCBtYW55IG9mIHRoZXNlIHNldHRpbmdzIGFyZSBpcnJlbGV2ZW50IHRvIHRoZSB0ZXJtaW5mbwotIwlhbmQgYXJlIGp1c3Qgc2V0IHRvIHRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIHRlcm1pbmFsIGFzIHNoaXBwZWQKLSMJYnkgdGhlIGZhY3RvcnkuCi0jCi0jIEEgbWVudTogMDAwMCAxMDEwICAwMDAxIDAwMDAKLSMJQmxvY2svdW5kZXJsaW5lIGN1cnNvcioKLSMJYmxpbmtpbmcvbm9uYmxpbmtpbmcgY3Vyc29yKgotIwlrZXkgY2xpY2svbm8ga2V5IGNsaWNrKgotIwliZWxsL25vIGJlbGwgYXQgY29sdW1uIDcyKgotIwotIwlrZXkgcGFkIGlzIGN1cnNvciBjb250cm9sKi9rZXkgcGFkIGlzIG51bWVyaWMKLSMJcmV0dXJuIGFuZCBsaW5lIGZlZWQvcmV0dXJuIGZvciA8Y3I+IGtleSAqCi0jCXJlcGVhdCBhZnRlciAuNSBzZWMqL25vIHJlcGVhdAotIwlyZXBlYXQgYXQgMjUvMTUgY2hhcnMgcGVyIHNlYy4gKgotIwotIwlob2xkIGRhdGEgdW50aWwgcGF1c2UgcHJlc3NlZC9wcm9jZXNzIGRhdGEgdW5sZXNzIHBhdXNlIHByZXNzZWQqCi0jCXNsb3cgc2Nyb2xsL25vIHNsb3cgc2Nyb2xsKgotIwlIb2xkIGluIGFyZWEvZG9uJ3QgaG9sZCBpbiBhcmVhKgotIwlmdW5jdGlvbnMga2V5cyBoYXZlIGRlZmF1bHQqL2Z1bmN0aW9uIGtleXMgZGlzYWJsZWQgb24gcG93ZXJ1cAotIwotIwlzaG93L2Rvbid0IHNob3cgcG9zaXRpb24gb2YgY3Vyc29yIGR1cmluZyBwYWdlIHRyYW5zbWl0KgotIwl1bnVzZWQKLSMJdW51c2VkCi0jCXVudXNlZAotIwotIyBCIG1lbnU6IDk2MDAgIDAxMDAgMTAwMCAgMDAwMCAwMDAwICAxMDAwIDAwMDAgIDE3ICAxOQotIwlCYXVkIHJhdGUgKDk2MDAqKQotIwotIwkyIGJpdHMgb2YgcGFyaXR5IC0gMDA9b2RkLDAxPWV2ZW4qLDEwPXNwYWNlLDExPW1hcmsKLSMJMSBzdG9wIGJpdCovMiBzdG9wIGJpdHMKLSMJcGFyaXR5IGVycm9yIGRldGVjdGlvbiBvZmYqL29uCi0jCi0jCWtleWJvYXJkIGxvY2FsL29uIGxpbmUqCi0jCWhhbGYvZnVsbCBkdXBsZXgqCi0jCWRpc2FibGUvZG8gbm90IGRpc2FibGUga2V5Ym9hcmQgYWZ0ZXIgZGF0YSB0cmFuc21pc3Npb24qCi0jCi0jCXRyYW5zbWl0IGVudGlyZSBwYWdlL3N0b3AgdHJhbnNtaXNzaW9uIGF0IGN1cnNvcioKLSMJdHJhbnNmZXIvZG8gbm90IHRyYW5zZmVyIHByb3RlY3RlZCBjaGFyYWN0ZXJzKgotIwl0cmFuc21pdCBhbGwgY2hhcmFjdGVycy90cmFuc21pdCBvbmx5IHNlbGVjdGVkIGNoYXJhY3RlcnMqCi0jCXRyYW5zbWl0IGFsbCBzZWxlY3RlZCBhcmVhcy90cmFuc21pdCBvbmx5IDEgc2VsZWN0ZWQgYXJlYSoKLSMKLSMJdHJhbnNtaXQvZG8gbm90IHRyYW5zbWl0IGxpbmUgc2VwYXJhdG9ycyB0byBob3N0KgotIwl0cmFuc21pdC9kbyBub3QgdHJhbnNtaXQgcGFnZSB0YWIgc3RvcHMgdGFicyB0byBob3N0KgotIwl0cmFuc21pdC9kbyBub3QgdHJhbnNtaXQgY29sdW1uIHRhYiBzdG9wIHRhYnMgdG8gaG9zdCoKLSMJdHJhbnNtaXQvZG8gbm90IHRyYW5zbWl0IGdyYXBoaWNzIGNvbnRyb2wgKHVuZGVybGluZSxpbnZlcnNlLi4pKgotIwotIwllbmFibGUqL2Rpc2FibGUgYXV0byBYT04vWE9GRiBjb250cm9sCi0jCXJlcXVpcmUvZG8gbm90IHJlcXVpcmUgcmVjZWlwdCBvZiBhIERDMSBmcm9tIGhvc3QgYWZ0ZXIgZWFjaCBMRioKLSMJcGF1c2Uga2V5IGFjdHMgYXMgYSBtZXRhIGtleS9wYXVzZSBrZXkgaXMgcGF1c2UqCi0jCXVudXNlZAotIwotIwl1bnVzZWQKLSMJdW51c2VkCi0jCXVudXNlZAotIwl1bnVzZWQKLSMKLSMJWE9OIGNoYXJhY3RlciAoMTcqKQotIwlYT0ZGIGNoYXJhY3RlciAoMTkqKQotIwotIyBDIG1lbnU6IDU2ICAgNjYgICAwICAgIDAgICAgOTYwMCAgMDExMCAxMTAwCi0jCW51bWJlciBvZiBsaW5lcyB0byBwcmludCBkYXRhIG9uIChwcmludGVyKSAoNTYqKQotIwotIwludW1iZXIgb2YgbGluZXMgb24gYSBzaGVldCBvZiBwYXBlciAocHJpbnRlcikgKDY2KikKLSMKLSMJbGVmdCBtYXJnaW4gKHByaW50ZXIpICgwKikKLSMKLSMJbnVtYmVyIG9mIHBhZCBjaGFycyBvbiBuZXcgbGluZSB0byBwcmludGVyICgwKikKLSMKLSMJcHJpbnRlciBiYXVkIHJhdGUgKDk2MDAqKQotIwotIwlwcmludGVyIHBhcml0eTogMDA9b2RkLDAxPWV2ZW4qLDEwPXNwYWNlLDExPW1hcmsKLSMJcHJpbnRlciBzdG9wIGJpdHM6IDIqLzEKLSMJcHJpbnQvZG8gbm90IHByaW50IGd1YXJkZWQgYXJlYXMqCi0jCi0jCW5ldyBsaW5lIGlzOiAwMT1MRiwxMD1DUiwxMT1DUkxGKgotIwl1bnVzZWQKLSMJdW51c2VkCi0jCi0jIEQgbWVudTogMDExMCAxMDAxICAgMSAgIDAKLSMJTEYgaXMgbmV3bGluZS9MRiBpcyBkb3duIG9uZSBsaW5lLCBzYW1lIGNvbHVtbioKLSMJd3JhcCB0byBwcmVjZWRpbmcgbGluZSBpZiBtb3ZlIGxlZnQgZnJvbSBjb2wgMSovZG9uJ3Qgd3JhcAotIwl3cmFwIHRvIG5leHQgbGluZSBpZiBtb3ZlIHJpZ2h0IGZyb20gY29sIDgwKi9kb24ndCB3cmFwCi0jCWJhY2tzcGFjZSBpcy9pcyBub3QgZGVzdHJ1Y3RpdmUqCi0jCi0jCWRpc3BsYXkqL2lnbm9yZSBERUwgY2hhcmFjdGVyCi0jCWRpc3BsYXkgd2lsbCBub3Qvd2lsbCBzY3JvbGwqCi0jCXBhZ2UvY29sdW1uIHRhYiBzdG9wcyoKLSMJZXJhc2UgZXZlcnl0aGluZyovZXJhc2UgdW5wcm90ZWN0ZWQgb25seQotIwotIwllZGl0aW5nIGV4dGVudDogMD1kaXNwbGF5LDE9bGluZSosMj1maWVsZCwzPWFyZWEKLSMKLSMJdW51c2VkCi0jCi0KLWFubmFyYm9yNDA4MHxhYTQwODB8YW5uIGFyYm9yIDQwODAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjNDAsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDwyPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9Xl8sCi0JY3VwPVwwMTclcDIlezEwfSUvJXsxNn0lKiVwMiV7MTB9JW0lKyVjJXAxJT8lcDElezE5fSU+JXQlezEyfSUrJTslezY0fSUrJWMsCi0JY3V1MT1eTiwgaG9tZT1eSywgaHQ9XkksIGh0cz1eXV5QMSwgaW5kPV5KLCBrYnM9Xl4sIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eXywga2N1dTE9Xk4sIGtob21lPV5LLCB0YmM9XlxeUF5QLAotCi0jIFN0cmFuZ2UgQW5uIEFyYm9yIHRlcm1pbmFsIGZyb20gQlJMCi1hYXMxOTAxfEFubiBBcmJvciBLNDA4MCB3L1MxOTAxIG1vZCwKLQlhbSwKLQljb2xzIzgwLCBsaW5lcyM0MCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eXywgY3V1MT1eTiwKLQlob21lPV5LLCBodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbGw9Xk9cMGMsCi0JbmVsPV5NXkosCi0KLSMgSWYgeW91J3JlIHVzaW5nIHRoZSBHTlUgdGVybWNhcCBsaWJyYXJ5LCBhZGQKLSMJOmNTPVxFWyVwMSVkOyVwMiVkOyVwMyVkOyVwNCVkcDoKLSMgdG8gdGhlc2UgY2FwYWJpbGl0aWVzLiAgVGhpcyBpcyB0aGUgbm9uc3RhbmRhcmQgR05VIHRlcm1jYXAgc2Nyb2xsaW5nCi0jIGNhcGFiaWxpdHksIGFyZ3VtZW50cyBhcmU6Ci0jICAgMS4gVG90YWwgbnVtYmVyIG9mIGxpbmVzIG9uIHRoZSBzY3JlZW4uCi0jICAgMi4gTnVtYmVyIG9mIGxpbmVzIGFib3ZlIGRlc2lyZWQgc2Nyb2xsIHJlZ2lvbi4KLSMgICAzLiBOdW1iZXIgb2YgbGluZXMgYmVsb3cgKG91dHNpZGUgb2YpIGRlc2lyZWQgc2Nyb2xsIHJlZ2lvbi4KLSMgICA0LiBUb3RhbCBudW1iZXIgb2YgbGluZXMgb24gdGhlIHNjcmVlbiwgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IHBhcmFtZXRlci4KLSMgVGhlIGdlbmVyaWMgQW5uIEFyYm9yIGVudHJ5IGlzIHRoZSBvbmx5IG9uZSB0aGF0IHVzZXMgdGhpcy4KLWFhYSt1bmt8YWFhLXVua3xhbm4gYXJib3IgYW1iYXNzYWRvciAoaW50ZXJuYWwgLSBkb24ndCB1c2UgdGhpcyBkaXJlY3RseSksCi0JT1RicywgYW0sIGttLCBtYzVpLCBtaXIsIHhvbiwKLQljb2xzIzgwLCBpdCM4LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLAotCWNsZWFyPVxFW0hcRVtKJDwxNTY+LCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5LLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLCBlZD1cRVtKLAotCWVsPVxFW0skPDU+LCBob21lPVxFW0gsIGhwYT1cRVslcDElezF9JSslZEcsIGh0PV5JLAotCWh0cz1cRUgsIGljaD1cRVslcDElZEAkPDQqPiwgaWNoMT1cRVtAJDw0PiwgaWw9XEVbJXAxJWRMLAotCWlsMT1cRVtMJDwzPiwgaW5kPV5LLCBpbnZpcz1cRVs4bSwgaXMxPVxFW21cRTdcRVtIXEU5XEU4LAotCWlzMz1cRVsxUVxFWz4yMDszMGxcRVBgK3h+TVxFXFwsIGticz1eSCwga2NidD1cRVtaLAotCWtjbHI9XEVbSiwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwKLQlrZGNoMT1cRVtQLCBrZGwxPVxFW00sIGtmMT1cRU9BLCBrZjEwPVxFT0osIGtmMTE9XEVPSywKLQlrZjEyPVxFT0wsIGtmMTM9XEVPTSwga2YxND1cRU9OLCBrZjE1PVxFT08sIGtmMTY9XEVPUCwKLQlrZjE3PVxFT1EsIGtmMTg9XEVPUiwga2YxOT1cRU9TLCBrZjI9XEVPQiwga2YyMD1cRU9ULAotCWtmMjE9XEVPVSwga2YyMj1cRU9WLCBrZjIzPVxFT1csIGtmMjQ9XEVPWCwga2YzPVxFT0MsCi0Ja2Y0PVxFT0QsIGtmNT1cRU9FLCBrZjY9XEVPRiwga2Y3PVxFT0csIGtmOD1cRU9ILCBrZjk9XEVPSSwKLQlraG9tZT1cRVtILCBraWNoMT1cRVtALCBraWwxPVxFW0wsIGtybWlyPVxFNiwgbWMwPVxFWzBpLAotCW1jND1eQywgbWM1PVxFW3YsIG1jNXA9XEVbJXAxJWR2LCByYz1cRTgsCi0JcmVwPSVwMSVjXEVbJXAyJXsxfSUtJWRiLCByZXY9XEVbN20sCi0Jcm1reD1cRVBgPnl+W1tKYDh4eX5bW0FgNHh5fltbRGA2eHl+W1tDYDJ4eX5bW0JcRVxcLAotCXJtbT1cRVs+NTJsLCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LAotCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7bSwKLQlzZ3IwPVxFW20sCi0Jc21reD1cRVBgPnp+W1tKYDh4en5bW0FgNHh6fltbRGA2eHp+W1tDYDJ4en5bW0JcRVxcLAotCXNtbT1cRVs+NTJoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbMmcsCi0JdnBhPVxFWyVwMSV7MX0lKyVkZCwKLQotYWFhK3J2fGFubiBhcmJvciBhbWJhc3NhZG9yIGluIHJldmVyc2UgdmlkZW8sCi0JYmxpbms9XEVbNTs3bSwgYm9sZD1cRVsxOzdtLCBpbnZpcz1cRVs3OzhtLAotCWlzMT1cRVs3bVxFN1xFW0hcRTlcRTgsIHJldj1cRVttLCBybXNvPVxFWzdtLCBybXVsPVxFWzdtLAotCXJzMT1cRVtIXEVbN21cRVtKJDwxNTY+LAotCXNncj1cRVslPyVwMSVwMyV8JSEldDc7JTslPyVwMiV0NDslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTslPyVwNyV0ODslO20sCi0Jc2dyMD1cRVs3bVwwMTYsIHNtc289XEVbbSwgc211bD1cRVs0OzdtLAotIyBBbWJhc3NhZG9yIHdpdGggdGhlIERFQyBvcHRpb24sIGZvciBwYXJ0aWFsIHZ0MTAwIGNvbXBhdGliaWxpdHkuCi1hYWErZGVjfGFubiBhcmJvciBhbWJhc3NhZG9yIGluIGRlYyB2dDEwMCBtb2RlLAotCWFjc2M9YWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGVuYWNzPVxFKDAsIHJtYWNzPV5OLAotCXNncj1cRVslPyVwMSVwMyV8JSEldDc7JTslPyVwMiV0NDslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTslPyVwNyV0ODslO20lPyVwOSV0XDAxNyVlXDAxNiU7LAotCXNtYWNzPV5PLAotYWFhLTE4fGFubiBhcmJvciBhbWJhc3NhZG9yLzE4IGxpbmVzLAotCWxpbmVzIzE4LAotCWlzMj1cRTdcRVs2MDswOzA7MThwXEU4LAotCXJtY3VwPVxFWzYwOzA7MDsxOHBcRVs2MDsxSFxFW0ssIHNtY3VwPVxFWzE4OzA7MDsxOHAsCi0JdXNlPWFhYSt1bmssCi1hYWEtMTgtcnZ8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMTggbGluZXMrcmV2ZXJzZSB2aWRlbywKLQl1c2U9YWFhK3J2LCB1c2U9YWFhLTE4LAotYWFhLTIwfGFubiBhcmJvciBhbWJhc3NhZG9yLzIwIGxpbmVzLAotCWxpbmVzIzIwLAotCWlzMj1cRTdcRVs2MDswOzA7MjBwXEU4LAotCXJtY3VwPVxFWzYwOzA7MDsyMHBcRVs2MDsxSFxFW0ssIHNtY3VwPVxFWzIwOzA7MDsyMHAsCi0JdXNlPWFhYSt1bmssCi1hYWEtMjJ8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMjIgbGluZXMsCi0JbGluZXMjMjIsCi0JaXMyPVxFN1xFWzYwOzA7MDsyMnBcRTgsCi0Jcm1jdXA9XEVbNjA7MDswOzIycFxFWzYwOzFIXEVbSywgc21jdXA9XEVbMjI7MDswOzIycCwKLQl1c2U9YWFhK3VuaywKLWFhYS0yNHxhbm4gYXJib3IgYW1iYXNzYWRvci8yNCBsaW5lcywKLQlsaW5lcyMyNCwKLQlpczI9XEU3XEVbNjA7MDswOzI0cFxFOCwKLQlybWN1cD1cRVs2MDswOzA7MjRwXEVbNjA7MUhcRVtLLCBzbWN1cD1cRVsyNDswOzA7MjRwLAotCXVzZT1hYWErdW5rLAotYWFhLTI0LXJ2fGFubiBhcmJvciBhbWJhc3NhZG9yLzI0IGxpbmVzK3JldmVyc2UgdmlkZW8sCi0JdXNlPWFhYStydiwgdXNlPWFhYS0yNCwKLWFhYS0yNnxhbm4gYXJib3IgYW1iYXNzYWRvci8yNiBsaW5lcywKLQlsaW5lcyMyNiwKLQlpczI9XEU3XEVbNjA7MDswOzI2cFxFOCwKLQlybWN1cD1cRVs2MDswOzA7MjZwXEVbMjY7MUhcRVtLLAotCXNtY3VwPVxFW0hcRVtKJDwxNTY+XEVbMjY7MDswOzI2cCwgdXNlPWFhYSt1bmssCi1hYWEtMjh8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMjggbGluZXMsCi0JbGluZXMjMjgsCi0JaXMyPVxFN1xFWzYwOzA7MDsyOHBcRTgsCi0Jcm1jdXA9XEVbNjA7MDswOzI4cFxFWzI4OzFIXEVbSywKLQlzbWN1cD1cRVtIXEVbSiQ8MTU2PlxFWzI4OzA7MDsyOHAsIHVzZT1hYWErdW5rLAotYWFhLTMwLXN8YWFhLXN8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMzAgbGluZXMgdy9zdGF0dXMsCi0JZXNsb2ssIGhzLAotCWxpbmVzIzI5LAotCWRzbD1cRTdcRVs2MDswOzA7MzBwXEVbMTsxSFxFW0tcRVtIXEU4XHJcblxFW0ssCi0JZnNsPVxFWz41MWwsIGlzMj1cclxuXEVbQVxFN1xFWzYwOzE7MDszMHBcRTgsCi0Jcm1jdXA9XEVbNjA7MTswOzMwcFxFWzI5OzFIXEVbSywKLQlzbWN1cD1cRVtIXEVbSiQ8MTU2PlxFWzMwOzE7MDszMHBcRVszMDsxSFxFW0ssCi0JdHNsPVxFWz41MWhcRVsxOyVwMSVkSFxFWzJLLCB1c2U9YWFhK3VuaywKLWFhYS0zMC1zLXJ2fGFhYS1zLXJ2fGFubiBhcmJvciBhbWJhc3NhZG9yLzMwIGxpbmVzK3N0YXR1cytyZXZlcnNlIHZpZGVvLAotCXVzZT1hYWErcnYsIHVzZT1hYWEtMzAtcywKLWFhYS1zLWN0eHR8YWFhLTMwLXMtY3R4dHxhbm4gYXJib3IgYW1iYXNzYWRvci8zMCBsaW5lcytzdGF0dXMrc2F2ZSBjb250ZXh0LAotCXJtY3VwPVxFWzYwOzE7MDszMHBcRVs1OTsxSFxFW0ssCi0Jc21jdXA9XEVbMzA7MUhcRVtLXEVbMzA7MTswOzMwcCwgdXNlPWFhYS0zMC1zLAotYWFhLXMtcnYtY3R4dHxhYWEtMzAtcy1ydi1jdHxhbm4gYXJib3IgYW1iYXNzYWRvci8zMCBsaW5lcytzdGF0dXMrc2F2ZSBjb250ZXh0K3JldmVyc2UgdmlkZW8sCi0Jcm1jdXA9XEVbNjA7MTswOzMwcFxFWzU5OzFIXEVbSywKLQlzbWN1cD1cRVszMDsxSFxFW0tcRVszMDsxOzA7MzBwLCB1c2U9YWFhLTMwLXMtcnYsCi1hYWF8YWFhLTMwfGFtYmFzfGFtYmFzc2Fkb3J8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMzAgbGluZXMsCi0JbGluZXMjMzAsCi0JaXMyPVxFN1xFWzYwOzA7MDszMHBcRTgsCi0Jcm1jdXA9XEVbNjA7MDswOzMwcFxFWzMwOzFIXEVbSywKLQlzbWN1cD1cRVtIXEVbSiQ8MTU2PlxFWzMwOzA7MDszMHAsIHVzZT1hYWErdW5rLAotYWFhLTMwLXJ2fGFhYS1ydnxhbm4gYXJib3IgYW1iYXNzYWRvci8zMCBsaW5lcyBpbiByZXZlcnNlIHZpZGVvLAotCXVzZT1hYWErcnYsIHVzZT1hYWEtMzAsCi1hYWEtMzAtY3R4dHxhYWEtY3R4dHxhbm4gYXJib3IgYW1iYXNzYWRvci8zMCBsaW5lczsgc2F2aW5nIGNvbnRleHQsCi0Jcm1jdXA9XEVbNjA7MDswOzMwcFxFWzYwOzFIXEVbSywgc21jdXA9XEVbMzA7MDswOzMwcCwKLQl1c2U9YWFhLTMwLAotYWFhLTMwLXJ2LWN0eHR8YWFhLXJ2LWN0eHR8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvMzAgbGluZXMgcmV2ZXJzZSB2aWRlbzsgc2F2aW5nIGNvbnRleHQsCi0Jcm1jdXA9XEVbNjA7MDswOzMwcFxFWzYwOzFIXEVbSywgc21jdXA9XEVbMzA7MDswOzMwcCwKLQl1c2U9YWFhK3J2LCB1c2U9YWFhLTMwLAotYWFhLTM2fGFubiBhcmJvciBhbWJhc3NhZG9yLzM2IGxpbmVzLAotCWxpbmVzIzM2LAotCWlzMj1cRTdcRVs2MDswOzA7MzZwXEU4LAotCXJtY3VwPVxFWzYwOzA7MDszNnBcRVszNjsxSFxFW0ssCi0Jc21jdXA9XEVbSFxFW0okPDE1Nj5cRVszNjswOzA7MzZwLCB1c2U9YWFhK3VuaywKLWFhYS0zNi1ydnxhbm4gYXJib3IgYW1iYXNzYWRvci8zNiBsaW5lcytyZXZlcnNlIHZpZGVvLAotCXVzZT1hYWErcnYsIHVzZT1hYWEtMzYsCi1hYWEtNDB8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvNDAgbGluZXMsCi0JbGluZXMjNDAsCi0JaXMyPVxFN1xFWzYwOzA7MDs0MHBcRTgsCi0Jcm1jdXA9XEVbNjA7MDswOzQwcFxFWzQwOzFIXEVbSywKLQlzbWN1cD1cRVtIXEVbSiQ8MTU2PlxFWzQwOzA7MDs0MHAsIHVzZT1hYWErdW5rLAotYWFhLTQwLXJ2fGFubiBhcmJvciBhbWJhc3NhZG9yLzQwIGxpbmVzK3JldmVyc2UgdmlkZW8sCi0JdXNlPWFhYStydiwgdXNlPWFhYS00MCwKLWFhYS00OHxhbm4gYXJib3IgYW1iYXNzYWRvci80OCBsaW5lcywKLQlsaW5lcyM0OCwKLQlpczI9XEU3XEVbNjA7MDswOzQ4cFxFOCwKLQlybWN1cD1cRVs2MDswOzA7NDhwXEVbNDg7MUhcRVtLLAotCXNtY3VwPVxFW0hcRVtKJDwxNTY+XEVbNDg7MDswOzQ4cCwgdXNlPWFhYSt1bmssCi1hYWEtNDgtcnZ8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvNDggbGluZXMrcmV2ZXJzZSB2aWRlbywKLQl1c2U9YWFhK3J2LCB1c2U9YWFhLTQ4LAotYWFhLTYwLXN8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvNTkgbGluZXMrc3RhdHVzLAotCWVzbG9rLCBocywKLQlsaW5lcyM1OSwKLQlkc2w9XEU3XEVbNjA7MDswOzYwcFxFWzE7MUhcRVtLXEVbSFxFOFxyXG5cRVtLLAotCWZzbD1cRVs+NTFsLCBpczI9XHJcblxFW0FcRTdcRVs2MDsxOzA7NjBwXEU4LAotCXRzbD1cRVs+NTFoXEVbMTslcDElZEhcRVsySywgdXNlPWFhYSt1bmssCi1hYWEtNjAtcy1ydnxhbm4gYXJib3IgYW1iYXNzYWRvci81OSBsaW5lcytzdGF0dXMrcmV2ZXJzZSB2aWRlbywKLQl1c2U9YWFhK3J2LCB1c2U9YWFhLTYwLXMsCi1hYWEtNjAtZGVjLXJ2fGFubiBhcmJvciBhbWJhc3NhZG9yL2RlYyBtb2RlKzU5IGxpbmVzK3N0YXR1cytyZXYgdmlkZW8sCi0JdXNlPWFhYStkZWMsIHVzZT1hYWErcnYsIHVzZT1hYWEtNjAtcywKLWFhYS02MHxhbm4gYXJib3IgYW1iYXNzYWRvci82MCBsaW5lcywKLQlsaW5lcyM2MCwKLQlpczI9XEU3XEVbNjA7MDswOzYwcFxFWzFRXEVbbVxFWz4yMDszMGxcRTgsCi0JdXNlPWFhYSt1bmssCi1hYWEtNjAtcnZ8YW5uIGFyYm9yIGFtYmFzc2Fkb3IvNjAgbGluZXMrcmV2ZXJzZSB2aWRlbywKLQl1c2U9YWFhK3J2LCB1c2U9YWFhLTYwLAotYWFhLWRifGFubiBhcmJvciBhbWJhc3NhZG9yIDMwL2Rlc3RydWN0aXZlIGJhY2tzcGFjZSwKLQlPVGJzQCwKLQljdWIxPVxFW0QsIGlzMz1cRVsxUVxFW21cRVs+MjBsXEVbPjMwaCwgdXNlPWFhYS0zMCwKLQotZ3VydXxndXJ1LTMzfGd1cnUrdW5rfGFubiBhcmJvciBndXJ1LzMzIGxpbmVzIDgwIGNvbHMsCi0JbGluZXMjMzMsCi0JZmxhc2g9XEVbPjU5aCQ8MTAwPlxFWz41OWwsCi0JaXMyPVxFN1xFWzI1NTswOzA7MzM7ODA7ODBwXEU4XEVbSiwgaXMzPVxFWz41OWwsCi0Jcm1jdXA9XEVbMjU1cFxFWzI1NTsxSFxFW0ssIHNtY3VwPVxFWzMzcCwgdXNlPWFhYSt1bmssCi1ndXJ1K3J2fGd1cnUgY2hhbmdlcyBmb3IgcmV2ZXJzZSB2aWRlbywKLQlmbGFzaD1cRVs+NTlsJDwxMDA+XEVbPjU5aCwgaXMzPVxFWz41OWgsCi1ndXJ1LXJ2fGd1cnUtMzMtcnZ8YW5uIGFyYm9yIGd1cnUvMzMgbGluZXMrcmV2ZXJzZSB2aWRlbywKLQl1c2U9Z3VydStydiwgdXNlPWd1cnUtMzMsCi1ndXJ1K3N8Z3VydSBzdGF0dXMgbGluZSwKLQllc2xvaywgaHMsCi0JZHNsPVxFN1xFWzswcFxFWzE7MUhcRVtLXEVbSFxFOFxyXG5cRVtLLCBmc2w9XEVbPjUxbCwKLQlybWN1cD1cRVsyNTU7MXBcRVsyNTU7MUhcRVtLLCBzbWN1cD0sCi0JdHNsPVxFWz41MWhcRVsxOyVwMSVkSFxFWzJLLAotZ3VydS1uY3R4dHxndXJ1IHdpdGggbm8gc2F2ZWQgY29udGV4dCwKLQlzbWN1cD1cRVtIXEVbSiQ8MTU2PlxFWzMzcFxFWzI1NTsxSFxFW0ssIHVzZT1ndXJ1LAotZ3VydS1zfGd1cnUtMzMtc3xhbm4gYXJib3IgZ3VydS8zMyBsaW5lcytzdGF0dXMsCi0JbGluZXMjMzIsCi0JaXMyPVxyXG5cRVtBXEU3XEVbMjU1OzE7MDszMzs4MDs4MHBcRThcRVtKLAotCXNtY3VwPVxFWzMzOzFwXEVbMjU1OzFIXEVbSywgdXNlPWd1cnUrcywgdXNlPWd1cnUrdW5rLAotZ3VydS0yNHxhbm4gYXJib3IgZ3VydSAyNCBsaW5lcywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlpczI9XEU3XEVbMjU1OzA7MDsyNDs4MDs4MHBcRThcRVtKLCBzbWN1cD1cRVsyNHAsCi0JdXNlPWd1cnUrdW5rLAotZ3VydS00NHxhbm4gYXJib3IgZ3VydSA0NCBsaW5lcywKLQljb2xzIzk3LCBsaW5lcyM0NCwKLQlpczI9XEU3XEVbMjU1OzA7MDs0NDs5NzsxMDBwXEU4XEVbSiwgc21jdXA9XEVbNDRwLAotCXVzZT1ndXJ1K3VuaywKLWd1cnUtNDQtc3xhbm4gYXJib3IgZ3VydS80NCBsaW5lcytzdGF0dXMsCi0JbGluZXMjNDMsCi0JaXMyPVxyXG5cRVtBXEU3XEVbMjU1OzE7MDs0NDs4MDs4MHBcRThcRVtKLAotCXNtY3VwPVxFWzQ0OzFwXEVbMjU1OzFIXEVbSywgdXNlPWd1cnUrcywgdXNlPWd1cnUrdW5rLAotZ3VydS03NnxndXJ1IHdpdGggNzYgbGluZXMgYnkgODkgY29scywKLQljb2xzIzg5LCBsaW5lcyM3NiwKLQlpczI9XEU3XEVbMjU1OzA7MDs3Njs4OTsxMDBwXEU4XEVbSiwgc21jdXA9XEVbNzZwLAotCXVzZT1ndXJ1K3VuaywKLWd1cnUtNzYtc3xhbm4gYXJib3IgZ3VydS83NiBsaW5lcytzdGF0dXMsCi0JY29scyM4OSwgbGluZXMjNzUsCi0JaXMyPVxyXG5cRVtBXEU3XEVbMjU1OzE7MDs3Njs4OTsxMDBwXEU4XEVbSiwKLQlzbWN1cD1cRVs3NjsxcFxFWzI1NTsxSFxFW0ssIHVzZT1ndXJ1K3MsIHVzZT1ndXJ1K3VuaywKLWd1cnUtNzYtbHB8Z3VydS1scHxndXJ1IHdpdGggcGFnZSBiaWdnZXIgdGhhbiBsaW5lIHByaW50ZXIsCi0JY29scyMxMzQsIGxpbmVzIzc2LAotCWlzMj1cRTdcRVsyNTU7MDswOzc2OzEzNDsxMzRwXEU4XEVbSiwgc21jdXA9XEVbNzZwLAotCXVzZT1ndXJ1K3VuaywKLWd1cnUtNzYtd3xndXJ1IDc2IGxpbmVzIGJ5IDE3OCBjb2xzLAotCWNvbHMjMTc4LCBsaW5lcyM3NiwKLQlpczI9XEU3XEVbMjU1OzA7MDs3NjsxNzg7MTc4cFxFOFxFW0osIHNtY3VwPVxFWzc2cCwKLQl1c2U9Z3VydSt1bmssCi1ndXJ1LTc2LXctc3xhbm4gYXJib3IgZ3VydS83NiBsaW5lcytzdGF0dXMrd2lkZSwKLQljb2xzIzE3OCwgbGluZXMjNzUsCi0JaXMyPVxyXG5cRVtBXEU3XEVbMjU1OzE7MDs3NjsxNzg7MTc4cFxFOFxFW0osCi0Jc21jdXA9XEVbNzY7MXBcRVsyNTU7MUhcRVtLLCB1c2U9Z3VydStzLCB1c2U9Z3VydSt1bmssCi1ndXJ1LTc2LXdtfGd1cnUgNzYgbGluZXMgYnkgMTc4IGNvbHMgd2l0aCAyNTUgY29scyBtZW1vcnksCi0JY29scyMxNzgsIGxpbmVzIzc2LAotCWlzMj1cRTdcRVsyNTU7MDswOzc2OzE3ODsyNTVwXEU4XEVbSiwgc21jdXA9XEVbNzZwLAotCXVzZT1ndXJ1K3VuaywKLWFhYS1ydi11bmt8YW5uIGFyYm9yIHVua25vd24gdHlwZSwKLQlsaCMwLCBsdyMwLCBubGFiIzAsCi0JYmxpbms9XEVbNTs3bSwgYm9sZD1cRVsxOzdtLCBob21lPVxFW0gsIGludmlzPVxFWzc7OG0sCi0JaXMxPVxFWzdtXEU3XEVbSFxFOVxFOCwgcmV2PVxFW20sIHJtc289XEVbN20sIHJtdWw9XEVbN20sCi0JcnMxPVxFW0hcRVs3bVxFW0osCi0Jc2dyPVxFWyU/JXAxJSEldDc7JTslPyVwMiV0NDslOyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwNiV0MTslOyU/JXA3JXQ4OyU7bSwKLQlzZ3IwPVxFWzdtLCBzbXNvPVxFW20sIHNtdWw9XEVbNDs3bSwKLQotIyMjIyBBcHBsaWVkIERpZ2l0YWwgRGF0YSBTeXN0ZW1zIChhZGRzKQotIwotIyBBRERTIGl0c2VsZiBpcyBsb25nIGdvbmUuICBBRERTIHdhcyBib3VnaHQgYnkgTkNSLCBhbmQgdGhlIHNhbWUgZ3JvdXAgbWFkZQotIyBBRERTIGFuZCBOQ1IgdGVybWluYWxzLiAgV2hlbiBBVCZUIGFuZCBOQ1IgbWVyZ2VkLCB0aGUgZW5naW5lZXJpbmcgZm9yCi0jIHRlcm1pbmFscyB3YXMgbWVyZ2VkIGFnYWluLiAgVGhlbiBBVCZUIHNvbGQgdGhlIHRlcm1pbmFsIGJ1c2luZXNzIHRvCi0jIFN1blJpdmVyLCB3aGljaCBsYXRlciBjaGFuZ2VkIGl0cyAgbmFtZSB0byBCb3VuZGxlc3MgVGVjaG5vbG9naWVzLiAgVGhlCi0jIGVuZ2luZWVycyBmcm9tIFRlbGV0eXBlLCBBVCZUIHRlcm1pbmFscywgQUREUywgYW5kIE5DUiAod2hvIGFyZSBzdGlsbCB0aGVyZQotIyBhcyBvZiBlYXJseSAxOTk1KSBhcmUgYXQ6Ci0jCi0jCUJvdW5kbGVzcyBUZWNobm9sb2dpZXMKLSMJMTAwIE1hcmN1cyBCb3VsZXZhcmQKLSMJSGF1cHBhdWdlLCBOWSAxMTc4OC0zNzYyCi0jCVZveDogKDgwMCktMjMxLTU0NDUKLSMJRmF4OiAoNTE2KS0zNDItNzM3OAotIwlXZWI6IGh0dHA6Ly9ib3VuZGxlc3MuY29tCi0jCi0jIFRoZWlyIHZvaWNlIG1haWwgdXNlZCB0byBkZXNjcmliZSB0aGUgcGxhY2UgYXMgIlN1blJpdmVyIChmb3JtZXJseSBBRERTKSIuCi0jIEluIDE5OTUgQm91bmRsZXNzIGFjcXVpcmVkIERFQydzIHRlcm1pbmFscyBidXNpbmVzcy4KLSMKLQotIyBSZWdlbnQ6IGxvd2VzdCBjb21tb24gZGVub21pbmF0b3IsIHdvcmtzIG9uIGFsbCByZWdlbnRzLgotIyAocmVnZW50OiByZW5hbWVkICI6YmM6IiB0byAiOmxlOiIgLS0gZXNyKQotcmVnZW50fEFkZHMgUmVnZW50IFNlcmllcywKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eVSwgY3VkMT1eSiwgY3VmMT1eRiwgY3V1MT1eWiwKLQlob21lPVxFWVxzXHMsIGluZD1eSiwgbGw9XkEsCi0jIFJlZ2VudCAxMDAgaGFzIGEgYnVnIHdoZXJlIGlmIGNvbXB1dGVyIHNlbmRzIGVzY2FwZSB3aGVuIHVzZXIgaXMgaG9sZGluZwotIyBkb3duIHNoaWZ0IGtleSBpdCBnZXRzIGNvbmZ1c2VkLCBzbyB3ZSBhdm9pZCBlc2NhcGUuCi1yZWdlbnQxMDB8QWRkcyBSZWdlbnQgMTAwLAotCXhtYyMxLAotCWJlbD1eRywKLQljdXA9XDAxMyVwMSUnICclKyVjXDAyMCVwMiV7MTB9JS8lezE2fSUqJXAyJXsxMH0lbSUrJWMsCi0Ja2YwPV5CMVxyLCBrZjE9XkIyXHIsIGtmMj1eQjNcciwga2YzPV5CNFxyLCBrZjQ9XkI1XHIsCi0Ja2Y1PV5CNlxyLCBrZjY9XkI3XHIsIGtmNz1eQjhcciwgbGYwPUYxLCBsZjE9RjIsIGxmMj1GMywKLQlsZjM9RjQsIGxmND1GNSwgbGY1PUY2LCBsZjY9RjcsIGxmNz1GOCwgcm1zbz1cRTBALCBybXVsPVxFMEAsCi0Jc2dyMD1cRTBALCBzbXNvPVxFMFAsIHNtdWw9XEUwYCwgdXNlPXJlZ2VudCwKLXJlZ2VudDIwfEFkZHMgUmVnZW50IDIwLAotCWJlbD1eRywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgZWQ9XEVrLCBlbD1cRUssCi0JdXNlPXJlZ2VudCwKLXJlZ2VudDI1fEFkZHMgUmVnZW50IDI1LAotCWJlbD1eRywga2N1YjE9XlUsIGtjdWQxPV5KLCBrY3VmMT1eRiwga2N1dTE9XlosIGtob21lPV5BLAotCXVzZT1yZWdlbnQyMCwKLXJlZ2VudDQwfEFkZHMgUmVnZW50IDQwLAotCXhtYyMxLAotCWJlbD1eRywgZGwxPVxFbCQ8Mio+LCBpbDE9XEVNJDwyKj4sIGtmMD1eQjFcciwga2YxPV5CMlxyLAotCWtmMj1eQjNcciwga2YzPV5CNFxyLCBrZjQ9XkI1XHIsIGtmNT1eQjZcciwga2Y2PV5CN1xyLAotCWtmNz1eQjhcciwgbGYwPUYxLCBsZjE9RjIsIGxmMj1GMywgbGYzPUY0LCBsZjQ9RjUsIGxmNT1GNiwKLQlsZjY9RjcsIGxmNz1GOCwgcm1zbz1cRTBALCBybXVsPVxFMEAsIHNncjA9XEUwQCwgc21zbz1cRTBQLAotCXNtdWw9XEUwYCwgdXNlPXJlZ2VudDI1LAotcmVnZW50NDArfEFkZHMgUmVnZW50IDQwKywKLQlpczI9XEVCLCB1c2U9cmVnZW50NDAsCi1yZWdlbnQ2MHxyZWdlbnQyMDB8QWRkcyBSZWdlbnQgNjAsCi0JZGNoMT1cRUUsIGlzMj1cRVZcRUIsIGtkY2gxPVxFRSwga2ljaDE9XEVGLCBrcm1pcj1cRUYsCi0Jcm1pcj1cRUYsIHJtc289XEVSXEUwQFxFViwgc21pcj1cRUYsIHNtc289XEVSXEUwUFxFViwKLQl1c2U9cmVnZW50NDArLAotIyBGcm9tOiA8ZWR3YXJkQG9ueXguYmVya2VsZXkuZWR1PiBUaHUgSnVsICA5IDA5OjI3OjMzIDE5ODEKLSMgKHZpZXdwb2ludDogYWRkZWQgPGtjdWYxPiwgZnVuY3Rpb24ga2V5LCBhbmQgPGRsMT4gY2FwYWJpbGl0aWVzIC0tIGVzcikKLXZpZXdwb2ludHxhZGRzdmlld3BvaW50fGFkZHMgdmlld3BvaW50LAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNub3JtPVwwMTdcRTBgLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5GLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5aLAotCWN2dmlzPVwwMTdcRTBQLCBkbDE9XEVsLCBlZD1cRWskPDE2LjEqPiwgZWw9XEVLJDwxNj4sCi0JaW5kPV5KLCBpczI9XDAxN1xFMGAsIGtjdWIxPV5VLCBrY3VkMT1eSiwga2N1ZjE9XkYsIGtjdXUxPV5aLAotCWtmMD1eQjEsIGtmMj1eQjIsIGtmMz1eQiEsIGtmND1eQiIsIGtmNT1eQiMsIGtob21lPV5BLCBsbD1eQSwKLQlybXNvPV5PLCBybXVsPV5PLCBzZ3IwPV5PLCBzbXNvPV5OLCBzbXVsPV5OLAotIyBTb21lIHZpZXdwb2ludHMgaGF2ZSBiYWQgUk9NcyB0aGF0IGZvbyB1cCBvbiBeTwotc2NyZXdwb2ludHxhZGRzIHZpZXdwb2ludCB3aXRoIF5PIGJ1ZywKLQljdnZpc0AsIHJtc29ALCBybXVsQCwgc21zb0AsIHNtdWxALCB1c2U9dmlld3BvaW50LAotCi0jIEZyb206IEpheSBTLiBSb3VtYW4gPGpzckBkZXh0ZXIubWkub3JnPiA1IEp1bCA5MgotIyBUaGUgPGNpdmlzPi88Y25vcm0+LzxzZ3I+LzxzZ3IwPiBzdHJpbmdzIHdlcmUgYWRkZWQgYnkgRVNSIGZyb20gc3BlY3MuCi0jIFRoZW9yeTsgdGhlIHZwM2ErIHdhbnRzIFxFMCVjIHRvIHNldCBoaWdobGlnaHRzLCB3aGVyZSBub3JtYWw9MDEwMDAwMDAsCi0jIHVuZGVybGluZT0wMTEwMDAwMCwgcmV2PTAxMDEwMDAwLCBibGluaz0wMTAwMDAxMCxkaW09MDEwMDAwMDEsCi0jIGludmlzPTAxMDAwMTAwIGFuZCAlYyBpcyB0aGUgbG9naWNhbCBvciBvZiBkZXNpcmVkIGF0dHJpYnV0ZXMuCi0jIFRoZXJlIGlzIGFsc28gYSBgdGFnIGJpdCcgZW5hYmxpbmcgYXR0cmlidXRlcywgc2V0IGJ5IFxFKSBhbmQgdW5zZXQgYnkgXEUoLgotIwotIyBVcGRhdGUgYnkgVEQgLSAyMDA0OgotIyBBZGFwdGVkIGZyb20KLSMJaHR0cDovL3d3dy5jcy51dGsuZWR1L35zaHVmb3JkL3Rlcm1pbmFsL2FkZHNfdmlld3BvaW50X25ld3MudHh0Ci0jCi0jIENPTU1BTkRTICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkgQ09ERQotIwotIyBBZGRyZXNzLCBBYnNvbHV0ZSAgICAgICAgICAgICAgIEVTQyw9LHJvdyxjb2x1bW4KLSMgQmVlcCAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRUwKLSMgQXV4IFBvcnQgRW5hYmxlICAgICAgICAgICAgICAgICBFU0MsQAotIyBBdXggUG9ydCBEaXNhYmxlICAgICAgICAgICAgICAgIEVTQyxBCi0jIEJhY2tzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgQlMKLSMgQ3Vyc29yIGJhY2sgICAgICAgICAgICAgICAgICAgICBCUwotIyBDdXJzb3IgZG93biAgICAgICAgICAgICAgICAgICAgIExGCi0jIEN1cnNvciBmb3J3YXJkICAgICAgICAgICAgICAgICAgRkYKLSMgQ3Vyc29yIGhvbWUgICAgICAgICAgICAgICAgICAgICBSUwotIyBDdXJzb3IgdXAgICAgICAgICAgICAgICAgICAgICAgIFZUCi0jIEN1cnNvciBzdXByZXNzICAgICAgICAgICAgICAgICAgRVRCCi0jIEN1cnNvciBlbmFibGUgICAgICAgICAgICAgICAgICAgQ0FOCi0jIEVyYXNlIHRvIGVuZCBvZiBsaW5lICAgICAgICAgICAgRVNDLFQKLSMgRXJhc2UgdG8gZW5kIG9mIHBhZ2UgICAgICAgICAgICBFU0MsWQotIyBFcmFzZSBzY3JlZW4gICAgICAgICAgICAgICAgICAgIFNVQgotIyBLZXlib2FyZCBsb2NrICAgICAgICAgICAgICAgICAgIFNJCi0jIEtleWJvYXJkIHVubG9jayAgICAgICAgICAgICAgICAgU08KLSMgUmVhZCBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAgICBFU0MsPwotIyBTZXQgQXR0cmlidXRlICAgICAgICAgICAgICAgICAgIEVTQywwLHggIChzZWUgYmVsb3cgZm9yIHZhbHVlcyBvZiB4KQotIyBUYWcgYml0IHJlc2V0ICAgICAgICAgICAgICAgICAgIEVTQywoCi0jIFRhZyBiaXQgc2V0ICAgICAgICAgICAgICAgICAgICAgRVNDLCkKLSMgVHJhbnNwYXJlbnQgUHJpbnQgb24gICAgICAgICAgICBFU0MsMwotIyBUcmFuc3BhcmVudCBQcmludCBvZmYgICAgICAgICAgIEVTQyw0Ci0jCi0jCi0jIEFUVFJJQlVURVMKLSMKLSMgTm9ybWFsICAgICAgICAgICAgICAgICAgICAgICAgICBACTAxMDAKLSMgSGFsZiBJbnRlbnNpdHkgICAgICAgICAgICAgICAgICBBCTAxMDEKLSMgQmxpbmtpbmcgICAgICAgICAgICAgICAgICAgICAgICBCCTAxMDIKLSMgSGFsZiBJbnRlbnNpdHkgQmxpbmtpbmcgICAgICAgICBDCTAxMDMKLSMgUmV2ZXJzZSBWaWRlbyAgICAgICAgICAgICAgICAgICBQCTAxMjAKLSMgUmV2ZXJzZSBWaWRlbyBIYWxmIEludGVuc2l0eSAgICBRCTAxMjEKLSMgUmV2ZXJzZSBWaWRlbyBCbGlua2luZyAgICAgICAgICBSCTAxMjIKLSMgUmV2ZXJzZSBWaWRlbyBIYWxmIEludGVuc2l0eQotIyAgICBCbGlua2luZyAgICAgICAgICAgICAgICAgICAgIFMJMDEyMwotIyBVbmRlcmxpbmVkICAgICAgICAgICAgICAgICAgICAgIGAJMDE0MAotIyBVbmRlcmxpbmVkIEhhbGYgSW50ZW5zaXR5ICAgICAgIGEJMDE0MQotIyBVbmRlcmxpbmVkIEJsaW5raW5nICAgICAgICAgICAgIGIJMDE0MgotIyBVbmRlcmxpbmVkIEhhbGYgSW50ZW5zaXR5Ci0jICAgIEJsaW5raW5nICAgICAgICAgICAgICAgICAgICAgYwkwMTQzCi0jIFZpZGVvIHN1cHByZXNzICAgICAgICAgICAgICAgICAgRAkwMTA0Ci12cDNhK3x2aWV3cG9pbnQzYSt8YWRkcyB2aWV3cG9pbnQgM2ErLAotCWFtLCBidywKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQlibGluaz1cRTBCXEUpLCBjaXZpcz1eVywgY2xlYXI9XEUqJDw4MD4sIGNub3JtPV5YLCBjcj1eTSwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRpbT1cRTBBXEUpLAotCWVkPVxFWSQ8ODA+LCBlbD1cRVQsIGhvbWU9Xl4sIGh0PV5JLCBpbmQ9XkosIGludmlzPVxFMERcRSksCi0Ja2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2hvbWU9Xl4sCi0JbmVsPV5NXkosIHJldj1cRTBQXEUpLCBybXNvPVxFKCwKLQlzZ3I9JT8lcDElcDIlfCVwMyV8JXA0JXwlcDUlfCVwNyV8JXRcRTAlezY0fSU/JXAxJXQlezE3fSV8JTslPyVwMiV0JXszMn0lfCU7JT8lcDMldCV7MTZ9JXwlOyU/JXA0JXQlezJ9JXwlOyU/JXA1JXQlezF9JXwlOyVjJT8lcDcldEQlO1xFKSVlXEUoJTssCi0Jc2dyMD1cRSgsIHNtc289XEUwUVxFKSwgc211bD1cRTBgXEUpLAotdnA2MHx2aWV3cG9pbnQ2MHxhZGRzdnA2MHxhZGRzIHZpZXdwb2ludDYwLAotCXVzZT1yZWdlbnQ0MCwKLSMKLSMgYWRkcyB2aWV3cG9pbnQgOTAgLSBmcm9tIGNvcm5lbGwKLSMgTm90ZTogIGVtYWNzIHNlbmRzIGVpIG9jY2FzaW9uYWxseSB0byBpbnN1cmUgdGhlIHRlcm1pbmFsIGlzIG91dCBvZgotIyAgICAgICAgaW5zZXJ0IG1vZGUuIFRoaXMgdW5mb3J0dW5hdGVseSBwdXRzIHRoZSB2aWV3cG9pbnQ5MCBJTiBpbnNlcnQKLSMgICAgICAgIG1vZGUuICBBIGhhY2sgdG8gZ2V0IGFyb3VuZCB0aGlzIGlzIDxpY2gxPVxFRlxzXEVGXlU+LiAgKEFsc28sCi0jICAgLSAgICA6ZWk9OmltPTogbXVzdCBiZSBwcmVzZW50IGluIHRoZSB0ZXJtY2FwIHRyYW5zbGF0aW9uLikKLSMgICAtICAgIDx4aHA+IGluZGljYXRlcyBnbGl0Y2ggdGhhdCBhdHRyaWJ1dGVzIHN0aWNrIHRvIGxvY2F0aW9uCi0jICAgLSAgICA8bXNncj4gbWVhbnMgaXQncyBzYWZlIHRvIG1vdmUgaW4gc3RhbmRvdXQgbW9kZQotIyAgIC0gICAgPGNsZWFyPVxFR1xFaz46IGNsZWFycyBzY3JlZW4gYW5kIHZpc3VhbCBhdHRyaWJ1dGVzIHdpdGhvdXQgYWZmZWN0aW5nCi0jICAgICAgICAgICAgICAgdGhlIHN0YXR1cyBsaW5lCi0jIEZ1bmN0aW9uIGtleSBhbmQgbGFiZWwgY2FwYWJpbGl0aWVzIG1lcmdlZCBpbiBmcm9tIFNDTy4KLXZwOTB8dmlld3BvaW50OTB8YWRkcyB2aWV3cG9pbnQgOTAsCi0JT1RicywgYncsIG1zZ3IsIHhocCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRUdcRWssIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkYsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eWiwgZGNoMT1cRUUsCi0JZGwxPVxFbCwgZWQ9XEVrLCBlbD1cRUssIGhvbWU9XEVZXHNccywgaHQ9XkksCi0JaWNoMT1cRUYgXEVGXDAyNSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5VLCBrY3VkMT1eSiwKLQlrY3VmMT1eRiwga2N1dTE9XlosIGtmMD1eQjFcciwga2YxPV5CMlxyLCBrZjEwPV5CO1xyLAotCWtmMj1eQjNcciwga2YzPV5CNFxyLCBrZjQ9XkI1XHIsIGtmNT1eQjZcciwga2Y2PV5CN1xyLAotCWtmNz1eQjhcciwga2Y4PV5COVxyLCBrZjk9XkJcOlxyLCBraG9tZT1eQSwgbGYwPUYxLCBsZjE9RjIsCi0JbGYxMD1GMTEsIGxmMj1GMywgbGYzPUY0LCBsZjQ9RjUsIGxmNT1GNiwgbGY2PUY3LCBsZjc9RjgsIGxmOD1GOSwKLQlsZjk9RjEwLCBsbD1eQSwgcm1zbz1cRVJcRTBAXEVWLCBybXVsPVxFUlxFMEBcRVYsCi0Jc2dyMD1cRVJcRTBAXEVWLCBzbXNvPVxFUlxFMFFcRVYsIHNtdWw9XEVSXEUwYFxFViwKLSMgTm90ZTogaWYgcmV0dXJuIGFjdHMgd2VpcmQgb24gYTk4MCwgY2hlY2sgaW50ZXJuYWwgc3dpdGNoICMyCi0jIG9uIHRoZSB0b3AgY2hpcCBvbiB0aGUgQ09OVFJPTCBwYyBib2FyZC4KLWFkZHM5ODB8YTk4MHxhZGRzIGNvbnN1bCA5ODAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDwxPlwwMTNALCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPVxFXkUwMSwgY3VwPVwwMTMlcDElezY0fSUrJWNcRVwwMDUlcDIlMmQsCi0JZGwxPVxFXDAxNyQ8MTM+LCBpbDE9XEVcMDE2JDwxMz4sIGluZD1eSiwga2YwPVxFMCwga2YxPVxFMSwKLQlrZjI9XEUyLCBrZjM9XEUzLCBrZjQ9XEU0LCBrZjU9XEU1LCBrZjY9XEU2LCBrZjc9XEU3LCBrZjg9XEU4LAotCWtmOT1cRTksIHJtc289Xk8sIHNncjA9Xk8sIHNtc289XlleXl5OLAotCi0jIyMjIEMuIEl0b2ggRWxlY3Ryb25pY3MKLSMKLSMgQXMgb2YgMTk5NSB0aGVzZSBwZW9wbGUgbm8gbG9uZ2VyIG1ha2UgdGVybWluYWxzICh0aGV5J3JlIHN0aWxsIGluIHRoZQotIyBwcmludGVyIGJ1c2luZXNzKS4gIFRoZWlyIHRlcm1pbmFscyB3ZXJlIGFsbCBjbG9uZXMgb2YgdGhlIERFQyBWVCBzZXJpZXMuCi0jIFRoZXkncmUgbG9jYXRlZCBpbiBPcmFuZ2UgQ291bnR5LCBDQS4KLSMKLQotIyBDSVQgODAgIC0gdnQtNTIgZW11bGF0b3IsIHRoZSB0ZXJtY2FwIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHJlbW92ZQotIyAgICAgICAgICAgdGhlIGRlbGF5IHRpbWVzIGFuZCBkbyBhbiBhdXRvIHRhYiBzZXQgcmF0aGVyIHRoYW4gdGhlIGluZGlyZWN0Ci0jICAgICAgICAgICBmaWxlIHVzZWQgaW4gdnQxMDAuCi1jaXQ4MHxjaXQtODB8Y2l0b2ggODAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbSFxFSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElMmQ7JXAyJTJkSCwgY3V1MT1cRVtBLCBlZD1cRUosIGVsPVxFSywgZmY9XkwsCi0JaW5kPV5KLCBpczI9XEU+LCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLAotCWtjdXUxPVxFT0EsIHJta3g9XEVbPzFsXEU+LCBzbWt4PVxFWz8xaFxFPSwKLSMgRnJvbTogVGltIFdvb2QgPG10eGludSFzeWJhc2UhdGltPiBGcmkgU2VwIDI3IDA5OjM5OjEyIFBEVCAxOTg1Ci0jIChjaXQxMDE6IGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gaW5pdCBzdHJpbmcsIG1lcmdlZCB0aGlzIHdpdGggYzEwMSAtLSBlc3IpCi1jaXQxMDF8Y2l0Y3xDLml0b2ggZmFzdCB2dDEwMCwKLQlPVGJzLCBhbSwgeGVubCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbVlxFOCwgY3ViMT1eSCwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBjdnZpcz1cRTdcRVtVLAotCWRjaDE9XEVbUCwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssCi0JZmxhc2g9XEVbPzVoJDwyMDAvPlxFWz81bCwgaWNoMT1cRVtALCBpbDE9XEVbTCwKLQlpczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbM2dcRVs+NWcsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlybWFtPVxFWz83bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sCi0jIENJRSBUZXJtaW5hbHMgQ0lULTEwMWUgZnJvbSBHZW9mZiBLdWVubmluZyA8Y2FsbGFuIWdlb2ZmPiB2aWEgQlJMCi0jIFRoZSBmb2xsb3dpbmcgdGVybWNhcCBlbnRyeSB3YXMgY3JlYXRlZCBmcm9tIHRoZSBDYWxsYW4gY2QxMDAgZW50cnkuICBUaGUKLSMgbGFzdCB0d28gbGluZXMgKHdpdGggdGhlIGNhcGFiaWxpdGllcyBpbiBjYXBzKSBhcmUgdXNlZCBieSBSTS1jb2JvbCB0byBhbGxvdwotIyBmdWxsIHNlbGVjdGlvbiBvZiBjb21iaW5hdGlvbnMgb2YgcmV2ZXJzZSB2aWRlbywgdW5kZXJsaW5lLCBhbmQgYmxpbmsuCi0jIChjaXQxMDFlOiByZW1vdmVkIHVua25vd24gOmYwPVxFT3A6ZjE9XEVPcTpmMj1cRU9yOmYzPVxFT3M6ZjQ9XEVPdDpmNT1cRU91OlwKLSMgZjY9XEVPdjpmNz1cRU93OmY4PVxFT3g6Zjk9XEVPeTpBQj1cRVswOzVtOkFMPVxFW206QVI9XEVbMDs3bTpBUz1cRVswOzU7N206XAotIyA6TkI9XEVbMDsxOzVtOk5NPVxFWzA7MW06TlI9XEVbMDsxOzdtOk5TPVxFWzA7MTs1OzdtOiAtLSBlc3IpCi1jaXQxMDFlfEMuIEl0b2ggQ0lULTEwMWUsCi0JT1RicywgT1RwdCwgYW0sIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQlhY3NjPSwgY2xlYXI9XEVbSFxFW0osIGNub3JtPSwgY3NyPVxFWyVpJXAxJTJkOyVwMiUyZHIsCi0JY3VkMT1cRVtCLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSUyZDslcDIlMmRILCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEVbPzFsXEVbPzRsXEVbPzdoLCBkY2gxPVxFW1AsIGRsMT1cRVtNLCBlZD1cRVtKLAotCWVsPVxFW0ssIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCBpbDE9XEVbTCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjA9XEVPVCwKLQlrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2Y1PVxFT20sIGtmNj1cRU9sLAotCWtmNz1cRU9NLCBrZjg9XEVPbiwgcmM9XEU4LCByaT1cRU0sIHJtYWNzPV5PLCBybWlyPVxFWzRsLAotCXJta3g9XEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwgc2M9XEU3LCBzbWFjcz1eTiwgc21pcj1cRVs0aCwKLQlzbWt4PVxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLSMgRnJvbTogRGF2aWQgUy4gTGF3eWVyLCBKdW5lIDE5OTc6Ci0jIFRoZSBDSVQgMTAxLWUgd2FzIG1hZGUgaW4gSmFwYW4gaW4gMTk4My00IGFuZCBpbXBvcnRlZCBieSBDSUUKLSMgVGVybWluYWxzIGluIElydmluZSwgQ0EuICBJdCB3YXMgcGFydCBvZiBDSVRPSCBFbGVjdHJvbmljcy4gIEluIHRoZQotIyBsYXRlIDE5ODAncyBDSVQgVGVybWluYWxzIHdlbnQgb3V0IG9mIGJ1c2luZXNzLgotIyBUaGVyZSBpcyBubyBuZWVkIHRvIHVzZSB0aGUgaW5pdGlhbGl6YXRpb24gc3RyaW5nIGlzPS4uLiAoYnkgaW52b2tpbmcKLSMgdHNldCBvciBzZXR0ZXJtIGV0Yy4pIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1pbmFsIGhhcyBiZWVuIG1hbnVhbGx5IHNldAotIyB1cCAoYW5kIHRoZSBzZXR1cCBzYXZlZCB3aXRoIF5TKSB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhpcyB0ZXJtY2FwLiAgVG8gYmUKLSMgY29tcGF0aWJsZSBpdCBzaG91bGQgYmUgaW4gQU5TSSBtb2RlIChub3QgVlQ1MikuICAgQSBzZXQtdXAgdGhhdAotIyB3b3JrcyBpcyB0byBzZXQgYWxsIHRoZSBtYW51YWxseSBzZXRhYmxlIHN0dWZmIHRvIGZhY3RvcnkgZGVmYXVsdHMKLSMgYnkgcHJlc3NpbmcgXkQgaW4gc2V0LXVwIG1vZGUuICBUaGVuIGluY3Jlc2UgdGhlIGJyaWdobmVzcyB3aXRoIHRoZQotIyB1cC1hcnJvdyBrZXkgc2luY2UgdGhlIGZhY3RvcnkgZGVmYXVsdCB3aWxsIGxpa2VseSBiZSBkaW0gb24gYW4gb2xkCi0jIHRlcm1pbmFsLiAgVGhlbiBjaGFuZ2UgYW55IG9wdGlvbnMgeW91IHdhbnQgKHByb3ZpZGVkIHRoYXQgdGhleSBhcmUKLSMgY29tcGF0aWJsZSB3aXRoIHRoZSB0ZXJtY2FwKS4gIEZvciBteSB0ZXJtaW5hbCBJIHNldDogU2NyZWVuCi0jIEJhY2tncm91bmQ6IGxpZ2h0OyBLZXljbGlja3M6IHNpbGVudDsgQXV0byB3cmFwYXJvdW5kOiBvbjsgQ1JUIHNhdmVyOgotIyBvbi4gIEkgYWxzbyBzZXQgdXAgbWluZSBmb3IgcGFyaXR5IChidXQgeW91IG1heSBub3QgbmVlZCBpdCkuICBUaGVuCi0jIHNhdmUgdGhlIHNldHVwIHdpdGggXlMuCi0jIChjaXQxMDFlLXJ2OiBhZGRlZCBlbXB0eSA8cm1jdXA+IHRvIHN1cHByZXNzIGEgdGljIHdhcm5pbmcuIC0tZXNyKQotY2l0MTAxZS1ydnxDaXRvaCBDSVQtMTAxZSAoc2V0cyByZXZlcnNlIHZpZGVvKSwKLQlhbSwgZW8sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCU9Ubmw9XEVNLCBiZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwKLQljaXZpcz1cRVsxdiwgY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWzA7Mzs0diwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWzM7NXYsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBmbGFzaD1cRVs/NWxcRVs/NWgkPDIwMC8+LAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaW5kbj1cRVslcDElZFMsCi0JaXMyPVxFPFxFPlxFWz8xbFxFWz8zbFxFWz80bFxFWz81aFxFWz83aFxFWz84aFxFWzNnXEVbPjVnXEUoQlxFW21cRVsyMGxcRVsxOzI0clxFWzI0OzFILAotCWticz1cMTc3LCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBuZWw9XEVFLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJpbj1cRVslcDElZFQsIHJtY3VwPSwgcm1pcj1cRVs0bCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgcnMxPVxFY1xFWz83aFxFWz41Zywgc2M9XEU3LAotCXNncjA9XEVbbSwgc21jdXA9XEVbPjVnXEVbPzdoXEVbPzVoLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sIHRiYz1cRVszZywgdTY9XEVbJWklcDElZDslcDIlZFIsCi0JdTc9XEVbNm4sIHU4PVxFWz82YywgdTk9XEVbYywKLWNpdDEwMWUtbnxDSVQtMTAxZSB3L28gYW0sCi0JYW1ALAotCWN2dmlzPVxFWz8xbFxFWz80bFxFWz83bCwga2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosCi0JdXNlPWNpdDEwMWUsCi1jaXQxMDFlLTEzMnxDSVQtMTAxZSB3aXRoIDEzMiBjb2xzLAotCWNvbHMjMTMyLAotCWticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCB1c2U9Y2l0MTAxZSwKLWNpdDEwMWUtbjEzMnxDSVQtMTAxZSB3aXRoIDEzMiBjb2xzIHcvbyBhbSwKLQlhbUAsCi0JY29scyMxMzIsCi0JY3Z2aXM9XEVbPzFsXEVbPzRsXEVbPzdsLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQl1c2U9Y2l0MTAxZSwKLSMgQ0lFIFRlcm1pbmFscyBDSVQtNTAwIGZyb20gQlJMCi0jIFRoZSBmb2xsb3dpbmcgU0VULVVQIG1vZGVzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlHRU5FUkFURV9YT04vWE9GRjpZRVMJRFVQTEVYOkZVTEwJCU5FV0xJTkU6T0ZGCi0jCUFVVE9XUkFQOk9OCQlNT0RFOkFOU0kJCVNDUkVFTl9MRU5HVEg6NjRfTElORVMKLSMJRFNQTFlfQ05UUkxfQ09ERVM/Tk8JUEFHRV9XSURUSDo4MAkJRURJVF9NT0RFOk9GRgotIyBPdGhlciBTRVQtVVAgbW9kZXMgbWF5IGJlIHNldCBmb3Igb3BlcmF0b3IgY29udmVuaWVuY2Ugb3IgY29tbXVuaWNhdGlvbgotIyByZXF1aXJlbWVudHMuCi0jIEhhcmR3YXJlIHRhYnMgYXJlIGFzc3VtZWQgdG8gYmUgc2V0IGV2ZXJ5IDggY29sdW1uczsgdGhleSBjYW4gYmUgc2V0IHVwCi0jIGJ5IHRoZSAicmVzZXQiLCAidHNldCIsIG9yICJ0YWJzIiB1dGlsaXRpZXMuICBObyBkZWxheXMgYXJlIHNwZWNpZmllZDsgdXNlCi0jICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jIChjaXQ1MDA6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcgLS0gZXNyKQotY2l0NTAwfENJRSBUZXJtaW5hbHMgQ0lULTUwMCwKLQlPVGJzLCBPVHB0LCBtaXIsIG1zZ3IsIHhvbiwKLQlPVGtuIzEwLCBjb2xzIzgwLCBpdCM4LCBsaW5lcyM2NCwgdnQjMywKLQlhY3NjPSwgYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osCi0JY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFTSwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWVkPVxFSiwgZWw9XEVLLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaXMyPVxFPFxFKTAsIGticz1eSCwga2NidD1cRVtaLCBrY3ViMT1cRU9ELAotCWtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtkY2gxPVxFW1AsIGtkbDE9XEVbTSwKLQlrZWQ9XEVKLCBrZWw9XEVLLCBrZjA9XEVPUCwga2YxPVxFT1EsIGtmMj1cRU9SLCBrZjM9XEVPUywKLQlrZjQ9XEVPVSwga2Y1PVxFT1YsIGtmNj1cRU9XLCBrZjc9XEVPWCwga2Y4PVxFT1ksIGtmOT1cRU9aLAotCWtob21lPVxFW0gsIGtpY2gxPVxFWzRoLCBraWwxPVxFW0wsIGtybWlyPVxFWzRsLCBsZjA9UEYxLAotCWxmMT1QRjIsIGxmMj1QRjMsIGxmMz1QRjQsIGxmND1GMTUsIGxmNT1GMTYsIGxmNj1GMTcsIGxmNz1GMTgsCi0JbGY4PUYxOSwgbGY5PUYyMCwgbGw9XEVbNjRILCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJtYWNzPV5PLCBybWFtPVxFWz83bCwgcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sCi0JcnMxPVxFPFxFMlxFWzIwbFxFWz82bFxFW3JcRVttXEVbcVxFKEJcMDE3XEUpMFxFPiwKLQlzYz1cRTcsIHNncjA9XEVbbSwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0KLSMgQy4gSXRvaCBwcmludGVycyBiZWdpbiBoZXJlCi1jaXRvaHxjaTg1MTB8ODUxMHxjLml0b2ggODUxMGEsCi0JY29scyM4MCwgaXQjOCwKLQlib2xkPVxFISwgY3ViMUAsCi0JaXMyPVxFKDAwOVwsMDE3XCwwMjVcLDAzM1wsMDQxXCwwNDlcLDA1N1wsMDY1XCwwNzMuLAotCXJlcD1cRVIlcDIlMDNkJXAxJWMsIHJpPVxFciwgcm11bD1cRVksIHNncjA9XEUiXEVZLAotCXNtdWw9XEVYLCB1c2U9bHByLAotY2l0b2gtcGljYXxjaXRvaCBpbiBwaWNhLAotCWlzMT1cRU4sIHVzZT1jaXRvaCwKLWNpdG9oLWVsaXRlfGNpdG9oIGluIGVsaXRlLAotCWNvbHMjOTYsCi0JaXMxPVxFRSwKLQlpczI9XEUoMDA5XCwwMTdcLDAyNVwsMDMzXCwwNDFcLDA0OVwsMDU3XCwwNjVcLDA3M1wsMDgxXCwwODkuLAotCXVzZT1jaXRvaCwKLWNpdG9oLWNvbXB8Y2l0b2ggaW4gY29tcHJlc3NlZCwKLQljb2xzIzEzNiwKLQlpczE9XEVRLAotCWlzMj1cRSgwMDlcLDAxN1wsMDI1XCwwMzNcLDA0MVwsMDQ5XCwwNTdcLDA2NVwsMDczXCwwODFcLDA4OVwsMDk3XCwxMDVcLDExM1wsMTIxXCwxMjkuLAotCXVzZT1jaXRvaCwKLSMgY2l0b2ggaGFzIGluZmluaXRlIGNvbHMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGxwIGV2ZXIgaW5zZXJ0aW5nIFxuXHQqKi4KLWNpdG9oLXByb3B8Y2l0b2gtcHN8aXBzfGNpdG9oIGluIHByb3BvcnRpb25hbCBzcGFjaW5nIG1vZGUsCi0JY29scyMzMjc2NywKLQlpczE9XEVQLCB1c2U9Y2l0b2gsCi1jaXRvaC02bHBpfGNpdG9oIGluIDYgbGluZXMgcGVyIGluY2ggbW9kZSwKLQlpczM9XEVBLCB1c2U9Y2l0b2gsCi1jaXRvaC04bHBpfGNpdG9oIGluIDggbGluZXMgcGVyIGluY2ggbW9kZSwKLQlsaW5lcyM4OCwKLQlpczM9XEVCLCB1c2U9Y2l0b2gsCi0KLSMjIyMgQ29udHJvbCBEYXRhIChjZGMpCi0jCi0KLWNkYzQ1NnxjZGMgNDU2IHRlcm1pbmFsLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XlleWCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFMSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eWiwgZGwxPVxFSiwgZWQ9XlgsCi0JZWw9XlYsIGhvbWU9XlksIGlsMT1cRUwsIGluZD1eSiwKLQotIyBBc3NvcnRlZCBDREMgdGVybWluYWxzIGZyb20gQlJMIChpbXByb3ZlbWVudHMgYnkgREFHICYgRmVyZCBCcnVuZGljaykKLWNkYzcyMXxDREMgVmlraW5nLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPV5MLCBjdWYxPV5YLCBjdXA9XDAwMiVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywKLQljdXUxPV5XLCBlbD1eSywgaG9tZT1eWSwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eSSwKLQlrY3V1MT1eVywga2hvbWU9XlksCi1jZGM3MjFsbHxDREMgVmlraW5nbGwsCi0JT1RicywgYW0sCi0JY29scyMxMzIsIGxpbmVzIzI0LAotCWNsZWFyPV5MLCBjdWYxPV5YLCBjdXA9XDAwMiVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywKLQljdXUxPV5XLCBlbD1eSywgaG9tZT1eWSwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eSSwKLQlrY3V1MT1eVywga2hvbWU9XlksCi0jIChjZGM3NTI6IHRoZSBCUkwgZW50cnkgaGFkIDpsbD1cRTEgIF5aOiBjb21tZW50ZWQgb3V0Ci1jZGM3NTJ8Q0RDIDc1MiwKLQlPVGJzLCBhbSwgYncsIHhocCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVwwMzBcRTFcc1xzLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eVSwKLQljdXA9XEUxJXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5aLCBlbD1eViwKLQlob21lPVxFMVxzXHMsIGluZD1eSiwgbGw9XlksIHJzMT1cRTEgIFwwMzBcMDAyXDAwM1wwMTcsCi0jIENEQyA3NTYKLSMgVGhlIGZvbGxvd2luZyBzd2l0Y2gva2V5IHNldHRpbmdzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwk5NiBjaGFycwlTQ1JPTEwJCUZVTEwgZHVwbGV4CW5vdCBCTE9DSwotIyBPdGhlciBzd2l0Y2hlcyBtYXkgYmUgc2V0IGFjY29yZGluZyB0byBjb21tdW5pY2F0aW9uIHJlcXVpcmVtZW50cy4KLSMgSW5zZXJ0L2RlbGV0ZS1jaGFyYWN0ZXIgY2Fubm90IGJlIHVzZWQsIGFzIHRoZSB3aG9sZSBkaXNwbGF5IGlzIGFmZmVjdGVkLgotIyAic28iICYgInNlIiBhcmUgY29tbWVudGVkIG91dCB1bnRpbCBqb3ZlIGhhbmRsZXMgInNnIiBjb3JyZWN0bHkuCi1jZGM3NTZ8Q0RDIDc1NiwKLQlPVGJzLCBhbSwgYncsCi0JT1RrbiMxMCwgY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eWV5YLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eVSwKLQljdXA9XEUxJXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5aLAotCWRsMT1cRUokPDYqLz4sIGVkPV5YLCBlbD1eViwgaG9tZT1eWSwgaWwxPVxFTCQ8NiovPiwgaW5kPV5KLAotCWticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eVSwga2N1dTE9XlosIGtkY2gxPVxFSSwKLQlrZGwxPVxFTCwga2VkPV5YLCBrZWw9XlYsIGtmMD1cRUEsIGtmMT1cRUIsIGtmMj1cRUMsIGtmMz1cRUQsCi0Ja2Y0PVxFRSwga2Y1PVxFRiwga2Y2PVxFRywga2Y3PVxFSCwga2Y4PVxFYSwga2Y5PVxFYiwga2hvbWU9XlksCi0Ja2h0cz1eTywga2ljaDE9XEVLLCBraWwxPVxFTCwgbGYwPUYxLCBsZjE9RjIsIGxmMj1GMywgbGYzPUY0LAotCWxmND1GNSwgbGY1PUY2LCBsZjY9RjcsIGxmNz1GOCwgbGY4PUY5LCBsZjk9RjEwLCBsbD1eWV5aLAotCXJzMT1cMDMxXDAzMFwwMDJcMDAzXDAxNywKLSMKLSMgQ0RDIDcyMSBmcm9tIFJvYmVydCBWaWR1eWEsIEdhLiBUZWNoLiA8aWhucDQhZ2F0ZWNoIWdpdHB5ciFyb2JlcnQ+IHZpYSBCUkwuCi0jCi0jIFBhcnQgb2YgdGhlIGxvbmcgaW5pdGlhbGl6YXRpb24gc3RyaW5nIGRlZmluZXMgdGhlICJET1dOIiBrZXkgdG8gdGhlIGxlZnQKLSMgb2YgdGhlIHRhYiBrZXkgdG8gc2VuZCBhbiBFU0MuICBUaGUgcmVhbCBFU0Mga2V5IGlzIHBvc2l0aW9uZWQgd2F5IG91dAotIyBpbiByaWdodCBmaWVsZC4KLSMKLSMgVGhlIHRlcm1jYXAgd29uJ3Qgd29yayBpbiAxMzIgY29sdW1uIG1vZGUgZHVlIHRvIHRoZSB3YXkgaXQgaXQgbW92ZXMgdGhlCi0jIGN1cnNvci4gIFRlcm1jYXAgZG9lc24ndCBoYXZlIHRoZSBjYXBhYmlsaXR5IChhcyBmYXIgYXMgSSBjb3VsZCB0ZWxsKSB0bwotIyBoYW5kbGUgdGhlIDcyMSBpbiAxMzIgY29sdW1uIG1vZGUuCi0jCi0jIChjZGM3MjE6IGNoYW5nZWQgOnJpOiB0byA6c3I6IC0tIGVzcikKLWNkYzcyMS1lc2N8Q29udHJvbCBEYXRhIDcyMSwKLQlPVGJzLCBPVHB0LCBhbSwgYncsIG1zZ3IsIHhvbiwKLQlPVGtuIzEwLCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMzMCwKLQliZWw9XkcsIGJsaW5rPV5OLCBjYnQ9Xl5eSywgY2xlYXI9XkwsIGN1YjE9XkgsIGN1ZDE9XlosCi0JY3VmMT1eWCwgY3VwPVwwMDIlcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9XlcsCi0JZGNoMT1eXk4sIGRpbT1eXCwgZGwxPV5eUSwgZWQ9Xl5QLCBlbD1eSywgaG9tZT1eWSwgaHRzPV5eXlJXLAotCWljaDE9Xl5PLCBpbDE9Xl5SLCBpbmQ9XDAzNlcgPVwwMzZVLCBpbnZpcz1eXl5SWywKLQlpczI9XDAzNlwwMjJCXDAwM1wwMzZcMDM1XDAxN1wwMjJcMDI1XDAzNVwwMzZFXDAzNlwwMjJIXDAzNlwwMjJKXDAzNlwwMjJMXDAzNlwwMjJOXDAzNlwwMjJQXDAzNlwwMjJRXDAzNlwwMjJcMDM2XDAyMlxeXDAzNlwwMjJiXDAzNlwwMjJpXDAzNlcgPVwwMzZcMDIyWlwwMzZcMDExQzEtYCBgIWsvbywKLQlrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eWiwga2N1ZjE9XlgsIGtjdXUxPV5XLCBrZjA9Xl5xLAotCWtmMT1eXnIsIGtmMj1eXnMsIGtmMz1eXnQsIGtmND1eXnUsIGtmNT1eXnYsIGtmNj1eXncsIGtmNz1eXngsCi0Ja2Y4PV5eeSwga2Y5PV5eeiwga2hvbWU9XlksIGxsPV5CID0sIHJldj1eXkQsCi0Jcmk9XDAzNlcgPVwwMzZWLCBybWlyPSwgcm1reD1eXl5SbCwgcm1zbz1eXkUsIHJtdWw9Xl0sCi0Jc2dyMD1cMDE3XDAyNVwwMzVcMDM2RVwwMzZcMDIyXFwsIHNtaXI9LCBzbWt4PV5eXlJrLAotCXNtc289Xl5ELCBzbXVsPV5cLCB0YmM9Xl5eUlksCi0KLSMjIyMgR2V0cm9uaWNzCi0jCi0jIEdldHJvbmljcyBpcyBhIER1dGNoIGVsZWN0cm9uaWNzIGNvbXBhbnkgdGhhdCBhdCBvbmUgdGltZSB3YXMgY2FsbGVkCi0jIGBHZXZla2UnIGFuZCBtYWRlIGFzeW5jIHRlcm1pbmFsczsgYnV0IChhY2NvcmRpbmcgdG8gdGhlIGNvbXBhbnkgaXRzZWxmISkKLSMgdGhleSd2ZSBsb3N0IGFsbCB0aGVpciBkb2N1bWVudGF0aW9uIG9uIHRoZSBjb21tYW5kIHNldC4gIFRoZSBoYXJkd2FyZQotIyBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHRoZSB0ZXJtaW5hbHMgd2VyZSBhY3R1YWxseSBtYW51ZmFjdHVyZWQgYnkgYQotIyBUYWl3YW5lc2UgZWxlY3Ryb25pY3MgY29tcGFueSBuYW1lZCBDYWwtQ29tcC4gIFRoZXJlIGFyZSBrbm93bgotIyB0byBoYXZlIGJlZW4gYXQgbGVhc3QgdHdvIG1vZGVscywgdGhlIDMzIGFuZCB0aGUgNTAuCi0jCi0KLSMgVGhlIDUwIHNlZW1zIHRvIGJlIGEgdG9wIGVuZCB2dDIyMCBjbG9uZSwgd2l0aCB0aGUgYWRkaXRpb24gb2YgYSBoaWdoZXIKLSMgc2NyZWVuIHJlc29sdXRpb24sIGEgbGFyZ2VyIHNjcmVlbiwgYXQgbGVhc3QgMSBwYWdlIG9mIG1lbW9yeSBhYm92ZSBhbmQKLSMgYmVsb3cgdGhlIHNjcmVlbiwgYXBwYXJlbnRseSBwYWdlcyBvZiBtZW1vcnkgcmlnaHQgYW5kIGxlZnQgb2YgdGhlIHNjcmVlbgotIyB3aGljaCBjYW4gYmUgcGFubmVkLCBhbmQgYWJvdXQgNzUgZnVuY3Rpb24ga2V5cyAoMTUgZnVuY3Rpb24ga2V5cyB4IG5vcm1hbCwKLSMgc2hpZnQsIGNvbnRyb2wsIGZ1bmMgQSwgZnVuYyBCKS4gSXQgYWxzbyBoYXMgbW9yZSBzZXR1cCBwb3NzaWJpbGl0aWVzIHRoYW4KLSMgdGhlIHZ0MjIwLiBUaGUgbW9uaXRvciBjYXNlIGlzIGRhdGVkIE5vdmVtYmVyIDE5NzggYW5kIHRoZSBrZXlib2FyZCBjYXNlIGlzCi0jIE1heSAxOTgyLgotIwotIyBUaGUgdnQxMDAgZW11bGF0aW9uIHdvcmtzIGFzIGlzLiAgVGhlIGVudHJ5IGJlbG93IGRlc2NyaWJlcyB0aGUgcmF0aGVyCi0jIG5vbi1jb25mb3JtYW50IChidXQgbW9yZSBmZWF0dXJlZnVsKSBBTlNJIG1vZGUuCi0jCi0jIEZyb206IFN0ZXBoZW4gUGV0ZXJzb24gPHN0dkB1dHJlY2h0Lm93Lm5sPiwgMjcgTWF5IDE5OTUKLXZpc2E1MHxnZXZla2UgdmlzYSA1MCB0ZXJtaW5hbCBpbiBhbnNpIDgwIGNoYXJhY3RlciBtb2RlLAotCWJ3LCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYWNzYz0wX2FhZmZnZ2ggampra2xsbW1ubm9vcXFzc3R0dXV2dnd3eHgsIGJlbD1eRywKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNsZWFyPVxFW0hcRVsySiwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkWCwgZGNoMT1cRVtYLCBkaW09XEVbMm0sIGRsPVxFWyVwMSVkTSwKLQlkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgZmxhc2g9XEVbPzVoXEVbPzVsLCBob21lPVxFW0gsCi0JaHBhPVxFWyVpJXAxJWRHLCBodD1eSSwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALAotCWlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sCi0JaXMyPVxFMDsybVxFWzE7MjVyXEVbMjU7MUhcRVs/M2xcRVs/N2hcRVs/OGgsCi0Ja2ExPVxFW2YsIGthMz1cRU9RLCBrYjI9XEVPUCwga2JzPV5ILCBrYzE9XEVPUiwga2MzPVxFT1MsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQSwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2RjaDE9XDE3NywKLQlrZGwxPVxFT1MsIGtmMD1cRTAxMCwga2YxPVxFMDAxLCBrZjEwPVxFMDExLCBrZjI9XEUwMDIsCi0Ja2YzPVxFMDAzLCBrZjQ9XEUwMDQsIGtmNT1cRTAwNSwga2Y2PVxFMDA2LCBrZjc9XEUwMDcsCi0Ja2Y4PVxFMDA4LCBrZjk9XEUwMDksIGtob21lPVxFW2YsIGxmMj1BIGRlbGV0ZSBjaGFyLAotCWxmMz1BIGluc2VydCBsaW5lLCBsZjQ9QSBkZWxldGUgbGluZSwgbGY1PUEgY2xlYXIsCi0JbGY2PUEgY2Ugb2YvY2YgZ24sIGxmNz1BIHByaW50LCBsZjg9QSBvbi1saW5lLAotCWxmOT1BIGZ1bmNsMD1BIHNlbmQsIG5lbD1eTV5KLCByZXY9XEVbN20sIHJtYWNzPVxFWzNsLAotCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFPiwgcm1zbz1cRVswOzJtLAotCXJtdWw9XEVbMG0sIHNncjA9XEVbMDsybSwgc21hY3M9XEUzaCwgc21hbT1cRT83aCwKLQlzbWlyPVxFWzRoLCBzbWt4PVxFPSwgc21zbz1cRVsyOzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdnBhPVxFWyVpJXAxJWRkLAotCi0jIyMjIEh1bWFuIERlc2lnbmVkIFN5c3RlbXMgKENvbmNlcHQpCi0jCi0jCUh1bWFuIERlc2lnbmVkIFN5c3RlbXMKLSMJNDAwIEZlaGxleSBEcml2ZQotIwlLaW5nIG9mIFBydXNzaWEsIFBBIDE5NDA2Ci0jCVZveDogKDYxMCktMjc3LTgzMDAKLSMJRmF4OiAoNjEwKS0yNzUtNTczOQotIwlOZXQ6IHN1cHBvcnRAaGRzLmNvbQotIwotIyBKb2huIE1hcnRpbiA8am9obkBoZHMuY29tPiBpcyB0aGVpciB0ZXJtY2FwIGV4cGVydC4gIFRoZXkncmUgbW9zdGx5IG91dCBvZgotIyB0aGUgY2hhcmFjdGVyLXRlcm1pbmFsIGJ1c2luZXNzIG5vdyAoMTk5NSkgYW5kIG1ha2luZyBYIHRlcm1pbmFscy4gIEluCi0jIHBhcnRpY3VsYXIsIHRoZSB3aG9sZSBgQ29uY2VwdCcgbGluZSBkZXNjcmliZWQgaGVyZSB3YXMgZGlzY29udGludWVkIGxvbmcKLSMgYWdvLgotIwotCi0jIEZyb206IDx2YXgxMzUhaHBrPiAgU2F0IEp1biAyNyAwNzo0MToyMCAxOTgxCi0jIEV4dGVuc2l2ZSBjaGFuZ2VzIHRvIGMxMDggYnkgYXJwYXZheDplcmljIEZlYiAxOTgyCi0jIFNvbWUgdW5rbm93biBwZXJzb24gYXQgU0NPIHRoZW4gdHJhbnNsYXRlZCBpdCB0byB0ZXJtaW5mby4KLSMKLSMgVGhlcmUgc2VlbSB0byBiZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMxMDggUFJPTVMKLSMgKHdpdGggYnVnIGZpeGVzIGluIGl0cyBaLTgwIHByb2dyYW0pLgotIwotIyBUaGUgZmlyc3Qgb25lIHRoYXQgd2UgaGFkIHdvdWxkIGxvY2sgb3V0IHRoZSBrZXlib2FyZCBvZiB5b3UKLSMgc2VudCBsb3RzIG9mIHNob3J0IGxpbmVzIChsaWtlIC91c3IvZGljdC93b3JkcykgYXQgOTYwMCBiYXVkLgotIyBUcnkgdGhhdCBvbiB5b3VyIEMxMDggYW5kIHNlZSBpZiBpdCBzZW5kcyBhIF5TIHdoZW4geW91IHR5cGUgaXQuCi0jIElmIHNvLCB5b3UgaGF2ZSBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgUFJPTXMuCi0jCi0jIFlvdSBzaG91bGQgY29uZmlndXJlIHRoZSBDMTA4IHRvIHNlbmQgXlMvXlEgYmVmb3JlIHJ1bm5pbmcgdGhpcy4KLSMgSXQgaXMgbXVjaCBmYXN0ZXIgKGF0IDk2MDAgYmF1ZCkgdGhhbiB0aGUgYzEwMCBiZWNhdXNlIHRoZSBkZWxheXMKLSMgYXJlIG5vdCBmaXhlZC4KLSMgbmV3IHN0YXR1cyBsaW5lIGRpc3BsYXkgZW50cmllcyBmb3IgYzEwOC04cDoKLSMgPGlzMz4gLSBpbml0IHN0ciAjMyAtIHNldHVwIHRlcm0gZm9yIHN0YXR1cyBkaXNwbGF5IC0KLSMgc2V0IHByb2dyYW1tZXIgbW9kZSwgc2VsZWN0IHdpbmRvdyAyLCBkZWZpbmUgd2luZG93IGF0IGxhc3QKLSMgbGluZSBvZiBtZW1vcnksIHNldCBia2duZCBzdGF0IG1lc2cgdGhlcmUsIHNlbGVjdCB3aW5kb3cgMC4KLSMKLSMgPHRzbD4gLSB0byBzdGF0dXMgbGluZSAtIHNlbGVjdCB3aW5kb3cgMiwgaG9tZSBjdXJzb3IsIGVyYXNlIHRvCi0jIGVuZC1vZi13aW5kb3csIDEvMiBicmlnaHQgb24sIGdvdG8obGluZSMwLCBjb2wjPykKLSMKLSMgPGZzbD4gLSBmcm9tIHN0YXR1cyBsaW5lIC0gMS8yIGJyaWdodCBvZmYsIHNlbGVjdCB3aW5kb3cgMAotIwotIyA8ZHNsPiAtIGRpc2FibGUgc3RhdHVzIGRpc3BsYXkgLSBzZXQgYmtnbmQgc3RhdHVzIG1lc2cgd2l0aAotIyBpbGxlZ2FsIHdpbmRvdyAjCi0jCi0jIFRoZXJlIGFyZSBwcm9iYWJseSBtb3JlIGZ1bmN0aW9uIGtleXMgdGhhdCBzaG91bGQgYmUgYWRkZWQgYnV0Ci0jIEkgZG9uJ3Qga25vdyB3aGF0IHRoZXkgYXJlLgotIwotIyBObyBkZWxheXMgbmVlZGVkIG9uIGMxMDggYmVjYXVzZSBvZiBeUy9eUSBoYW5kc2hha2luZwotIwotYzEwOHxjb25jZXB0MTA4fGMxMDgtOHB8Y29uY2VwdDEwOC04cHxjb25jZXB0IDEwOCB3LzggcGFnZXMsCi0JaXMzPVxFVVxFIHoiXEV2XDAwMVwxNzcgIXBcRSA7IlxFIHogXEV2ICBcMDAxXDE3N3BcRXBcbiwKLQlybWN1cD1cRXYgIFwwMDFcMTc3cFxFcFxyXG4sIHVzZT1jMTA4LTRwLAotYzEwOC00cHxjb25jZXB0MTA4LTRwfGNvbmNlcHQgMTA4IHcvNCBwYWdlcywKLQlPVGJzLCBlc2xvaywgaHMsIHhvbiwKLQlwYkAsCi0JYWNzYz1qRWtUbFxcbU1xTHhVLCBjbm9ybT1cRXcsIGNyPV5NLAotCWN1cD1cRWElcDElPyVwMSV7OTV9JT4ldFwwMDElezk2fSUtJTslezMyfSUrJWMlcDIlPyVwMiV7OTV9JT4ldFwwMDElezk2fSUtJTslezMyfSUrJWMsCi0JY3Z2aXM9XEVXLCBkY2gxPVxFIDEkPDE2Kj4sIGRzbD1cRSA7XDE3NywgZnNsPVxFZVxFIHpccywKLQlpbmQ9XkosIGlzMT1cRUtcRSFcRSBGLAotCWlzMz1cRVVcRSB6IlxFdlwxNzcgIXBcRSA7IlxFIHogXEV2ICBcMDAxIHBcRXBcbiwKLQlybWFjcz1cRWpccywgcm1jdXA9XEV2ICBcMDAxIHBcRXBcclxuLCBzbWFjcz1cRWohLAotCXNtY3VwPVxFVVxFdiAgOHBcRXBcclxFXDAyNSwKLQl0c2w9XEUgeiJcRT9cRVwwMDVcRUVcRWEgJStccywgdXNlPWMxMDAsCi1jMTA4LXJ2fGMxMDgtcnYtOHB8Y29uY2VwdCAxMDggdy84IHBhZ2VzIGluIHJldmVyc2UgdmlkZW8sCi0Jcm1jdXA9XEV2ICBcMDAyIHBcRXBcclxuLCBzbWN1cD1cRVVcRXYgIDhwXEVwXHIsCi0JdXNlPWMxMDgtcnYtNHAsCi1jMTA4LXJ2LTRwfGNvbmNlcHQxMDhydjRwfGNvbmNlcHQgMTA4IHcvNCBwYWdlcyBpbiByZXZlcnNlIHZpZGVvLAotCWZsYXNoPVxFSyQ8MjAwPlxFaywgaXMxPVxFaywgcm1zbz1cRWUsIHNtc289XEVFLAotCXVzZT1jMTA4LTRwLAotYzEwOC13fGMxMDgtdy04cHxjb25jZXB0MTA4LXctOHxjb25jZXB0MTA4LXc4cHxjb25jZXB0IDEwOCB3LzggcGFnZXMgaW4gd2lkZSBtb2RlLAotCWNvbHMjMTMyLAotCWlzMT1cRSBGXEUiLCBybWN1cD1cRXYgIF5BMFwwMDFEXEVwXHJcbiwKLQlzbWN1cD1cRVVcRXYgIDhcMDAxRFxFcFxyLCB1c2U9YzEwOC04cCwKLQotIyBDb25jZXB0IDEwMDoKLSMgVGhlc2UgaGF2ZSBvbmx5IHdpbmRvdyByZWxhdGl2ZSBjdXJzb3IgYWRkcmVzc2luZywgbm90IHNjcmVlbgotIyByZWxhdGl2ZS4gVG8gZ2V0IGl0IHRvIHdvcmsgcmlnaHQgaGVyZSwgc21jdXAvcm1jdXAgKHdoaWNoCi0jIHdlcmUgaW52ZW50ZWQgZm9yIHRoZSBjb25jZXB0KSBsb2NrIHlvdSBpbnRvIGEgb25lIHBhZ2UKLSMgd2luZG93IGZvciBzY3JlZW4gc3R5bGUgcHJvZ3JhbXMuCi0jCi0jIFRvIGdldCBvdXQgb2YgdGhlIG9uZSBwYWdlIHdpbmRvdywgd2UgdXNlIGEgY2xldmVyIHRyaWNrOgotIyB3ZSBzZXQgdGhlIHdpbmRvdyBzaXplIHRvIHplcm8gKCJcRXYgICAgIiBpbiBybWN1cCkgd2hpY2ggdGhlCi0jIHRlcm1pbmFsIHJlY29nbml6ZXMgYXMgYW4gZXJyb3IgYW5kIHJlc2V0cyB0aGUgd2luZG93IHRvIGFsbAotIyBvZiBtZW1vcnkuCi0jCi0jIFRoaXMgdHJpY2sgd29ya3Mgb24gYzEwMCBidXQgZG9lcyBub3Qgb24gYzEwOCwgc2lnaC4KLSMKLSMgU29tZSB0dHkgZHJpdmVycyB1c2UgY3IzIGZvciBjb25jZXB0LCBvdGhlcnMgdXNlIG5sMywgaGVuY2UKLSMgdGhlIGRlbGF5cyBvbiBjciBhbmQgaW5kIGJlbG93LiBUaGlzIHBhZGRpbmcgaXMgb25seSBuZWVkZWQgYXQKLSMgOTYwMCBiYXVkIGFuZCB1cC4gIE9uZSBvciB0aGUgb3RoZXIgaXMgY29tbWVudGVkIG91dCBkZXBlbmRpbmcgb24KLSMgbG9jYWwgY29udmVudGlvbnMuCi0jCi0jIDIgbXMgcGFkZGluZyBvbiA8cm1jdXA+IGlzbid0IGFsd2F5cyBlbm91Z2guIDYgd29ya3MgZmluZS4gTWF5YmUKLSMgbGVzcyB0aGFuIDYgYnV0IG1vcmUgdGhhbiAyIHdpbGwgd29yay4KLSMKLSMgTm90ZTogY2FuJ3QgdXNlIGZ1bmN0aW9uIGtleXMgZjctZjEwIGJlY2F1c2UgdGhleSBhcmUKLSMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhcnJvdyBrZXlzICghKSwgYWxzbywgZGVsIGNoYXIgYW5kCi0jIGNsZWFyIGVvbCB1c2UgeG9uL3hvZmYgc28gdGhleSBwcm9iYWJseSB3b24ndCB3b3JrIHZlcnkgd2VsbC4KLSMKLSMgQWxzbyBub3RlIHRoYXQgd2UgZG9uJ3QgZGVmaW5lIGluc3J0L2RlbCBjaGFyL2RlbGxpbmUvZW9wL3NlbmQKLSMgYmVjYXVzZSB0aGV5IGRvbid0IHRyYW5zbWl0IHVubGVzcyB3ZSByZXNldCB0aGVtIC0gSSBmaWd1cmVkCi0jIGl0IHdhcyBhIGJhZCBpZGVhIHRvIGNsb2JiZXIgdGhlaXIgZGVmaW5pdGlvbnMuCi0jCi0jIFRoZSA8bWM1PiBzZXF1ZW5jZSBjaGFuZ2VzIHRoZSBlc2NhcGUgY2hhcmFjdGVyIHRvIF5eIHNvIHRoYXQKLSMgZXNjYXBlcyB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBwcmludGVyLiBPbmx5IHRyb3VibGUKLSMgaXMgdGhhdCBeXiB3b24ndCBiZSAtIF5eIHdhcyBjaG9zZW4gdG8gYmUgdW5saWtlbHkuCi0jIFVuZm9ydHVuYXRlbHksIGlmIHlvdSdyZSBzZW5kaW5nIHJhc3RlciBiaXRzIHRocm91Z2ggdG8gYmUKLSMgcGxvdHRlZCwgYW55IGNoYXJhY3RlciB5b3UgY2hvb3NlIHdpbGwgYmUgbGlrZWx5LCBzbyB3ZSBsb3NlLgotIwotIyBcRVEiXEVZKF5XIChzZW5kIGFueXRoaW5nIGZyb20gcHJpbnRlciB0byBob3N0LCBmb3IgeG9uL3hvZmYpCi0jIGNhbm5vdCBiZSAjIGluIGlzMiBiZWNhdXNlIGl0IHdpbGwgaGFuZyBhIGMxMDAgd2l0aCBubyBwcmludGVyCi0jIGlmIHNlbnQgdHdpY2UuCi1jMTAwfGNvbmNlcHQxMDB8Y29uY2VwdHxjMTA0fGMxMDAtNHB8aGRzIGNvbmNlcHQgMTAwLAotCU9UYnMsIGFtLCBlbywgbWlyLCB1bCwgeGVubCwKLQljb2xzIzgwLCBsaW5lcyMyNCwgcGIjOTYwMCwgdnQjOCwKLQliZWw9XkcsIGJsaW5rPVxFQywgY2xlYXI9XEU/XEVcMDA1JDwyKj4sIGNyPSQ8OT5cciwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFPSwKLQljdXA9XEVhJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFOywKLQlkY2gxPVxFXDAyMSQ8MTYqPiwgZGltPVxFRSwgZGwxPVxFXDAwMiQ8Myo+LAotCWVkPVxFXDAwNSQ8MTYqPiwgZWw9XEVcMDI1JDwxNj4sIGZsYXNoPVxFayQ8MjAwPlxFSywKLQlodD1cMDExJDw4PiwgaWwxPVxFXDAyMiQ8Myo+LCBpbmQ9XkosIGludmlzPVxFSCwgaXA9JDwxNio+LAotCWlzMT1cRUssCi0JaXMyPVxFVVxFZlxFN1xFNVxFOFxFbFxFTkhcRVwwXEVvJlwwXEVvJ1xFXEVvIVwwXEVcMDA3IVxFXDAxMEFAIFxFNCNcOiJcRVw6YVxFNCM7IlxFXDpiXEU0IzwiXEVcOmMsCi0JaXMzPVxFdiAgICAkPDY+XEVwXG4sIGticz1eSCwga2NidD1cRScsIGtjdGFiPVxFXywKLQlrY3ViMT1cRT4sIGtjdWQxPVxFPCwga2N1ZjE9XEU9LCBrY3V1MT1cRTssIGtkY2gxPVxFXlEsCi0Ja2RsMT1cRV5CLCBrZWQ9XEVeQywga2VsPVxFXlMsIGtmMT1cRTUsIGtmMj1cRTYsIGtmMz1cRTcsCi0Ja2Y0PVxFOCwga2Y1PVxFOSwga2Y2PVxFXDphLCBrZjc9XEVcOmIsIGtmOD1cRVw6Yywga2hvbWU9XEU/LAotCWtodHM9XEVdLCBraWNoMT1cRV5QLCBraWwxPVxFXlIsIGtpbmQ9XEVbLCBrbnA9XEUtLCBrcHA9XEUuLAotCWtyaT1cRVxcLCBrcm1pcj1cRVwwLCBtYzQ9XDAzNm8gXEVcRVEhXEVZUFwwMjcsCi0JbWM1PVxFUSJcRVkoXDAyN1xFWURcRW8gXDAzNiwgcHJvdD1cRUksCi0JcmVwPVxFciVwMSVjJXAyJXszMn0lKyVjJDwuMio+LCByZXY9XEVELAotCXJtY3VwPVxFdiAgICAkPDY+XEVwXHJcbiwgcm1pcj1cRVxzXHMsIHJta3g9XEV4LAotCXJtc289XEVkLCBybXVsPVxFZywgc2dyMD1cRU5ALAotCXNtY3VwPVxFVVxFdiAgOHBcRXBcclxFXDAyNSQ8MTY+LCBzbWlyPVxFXlAsIHNta3g9XEVYLAotCXNtc289XEVELCBzbXVsPVxFRywKLWMxMDAtcnZ8YzEwMC1ydi00cHxjb25jZXB0MTAwLXJ2fGMxMDAgcmV2IHZpZGVvLAotCWNub3JtQCwgY3Z2aXNALCBmbGFzaD1cRUskPDIwMD5cRWssIGlzMT1cRWssIHJtc289XEVlLAotCXNtc289XEVFLCB1c2U9YzEwMCwKLW9jMTAwfG9jb25jZXB0fGMxMDAtMXB8b2xkIDEgcGFnZSBjb25jZXB0IDEwMCwKLQlpbiwKLQlpczNALCB1c2U9YzEwMCwKLQotIyBGcm9tOiBXYWx0ZXIgU2tvcnNraSA8d2FsdEBnZW5ldGljczEuSk1QLlRKVS5FRFU+LCAxNi1vY3QtMTk5Ni4KLSMgTG90cyBvZiBub3Rlcywgb3JpZ2luYWxseSBpbmxpbmUsIGJ1dCBuY3Vyc2VzIGRvZXNuJ3QgZ3JvayB0aGF0LgotIwotIyBhbTogCW5vdCBhdmFpbGFibGUgaW4gcG93ZXIgb24gbW9kZSwgYnV0IHR1cm5lZCBvbiB3aXRoIFxFWz0xMDc7MjA3aCBpbgotIwlpczI9LiAgQWxzbywgXEU9MTI0bCBpbiBpczI9IGNvdWxkIGhhdmUgYmVlbiB1c2VkIHRvIHByZXZlbnQgbmVlZGluZwotIwl0byBzcGVjaWZ5IHhlbmw6LCBidXQgdGhhdCB3b3VsZCBoYXZlIHJlbmRlcmVkIHRoZSBsYXN0IHNwYWNlIG9uIHRoZQotIwlsYXN0IGxpbmUgdXNlbGVzcy4KLSMgYnc6CU5vdCBhdmFpbGFibGUgaW4gcG93ZXIgb24gbW9kZSwgYnV0IHR1cm5lZCBvbiB3aXRoIFxFWz0xMDc7MjA3aCBpbgotIwlpczI9LgotIyBjbGVhcjogQ291bGQgYmUgZG9uZSB3aXRoIFxFWzJKIGFsb25lLCBleGNlcHQgdGhhdCB2aSAoYW5kIHByb2JhYmx5IG1vc3QKLSMJb3RoZXIgcHJvZ3JhbXMpIGFzc3VtZSB0aGF0IHRoaXMgYWxzbyBob21lcyB0aGUgY3Vyc29yLgotIyBkc2w6CUdvIHRvIHdpbmRvdyAyLCBnbyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLCB1c2UgYSBsaW5lIGZlZWQgdG8KLSMJc2Nyb2xsIHRoZSB3aW5kb3csIGFuZCBnbyBiYWNrIHRvIHdpbmRvdyAxLgotIyBpczI6CXRoZSBzdHJpbmcgbWF5IGNhdXNlIGEgd2FybmluZyB0byBiZSBpc3N1ZWQgYnkgdGljIHRoYXQgaXQKLSMJZm91bmQgYSB2ZXJ5IGxvbmcgbGluZSBhbmQgdGhhdCBpdCBzdXNwZWN0cyB0aGF0IGEgY29tbWEgaXMgbWlzc2luZwotIwlzb21ld2hlcmUuICBUaGlzIHdhcm5pbmcgY2FuIGJlIGlnbm9yZWQgKHVubGVzcyBpdCBjb21lcyB1cCBtb3JlIHRoYW4KLSMJb25jZSkuICBUaGUgaW5pdGlhbGl6YXRpb24gc3RyaW5nIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0jCi0jCSBbU2V0dXAgbW9kZSBpdGVtcyBjaGFuZ2VkIGZyb20gZmFjdG9yeSBkZWZhdWx0czpdCi0jCQlcRSkwCQkJc2V0IGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IHRvCi0jCQkJCQkJZ3JhcGhpY3MKLSMJCV5PCQkJc2V0IGNoYXJhY3RlciBzZXQgdG8gZGVmYXVsdAotIwkgW0luIGNhc2UgaXQgd2Fzbid0XQotIwkJXEVbbQkJCXR1cm4gb2ZmIGFsbCBhdHRyaWJ1dGVzCi0jCSBbSW4gY2FzZSB0aGV5IHdlcmVuJ3Qgb2ZmXQotIwkJXEVbPTEwNzsJCWN1cnNvciB3cmFwIGFuZAotIwkJCTIwN2gJCQljaGFyYWN0ZXIgd3JhcCBvbgotIwkJXEVbOTA7M3UJCXNldCBGa2V5IGRlZmluaXRpb25zIHRvICJ0cmFuc21pdCIKLSMJCQkJCQlkZWZhdWx0cwotIwkJXEVbOTI7M3UJCXNldCBjdXJzb3Iga2V5IGRlZmluaXRpb25zIHRvCi0jCQkJCQkJInRyYW5zbWl0IiBkZWZhdWx0cwotIwkJXEVbNDM7MXUJCXNldCBzaGlmdCBGMTMgdG8gdHJhbnNtaXQuLi4KLSMJCVwxNzdcRSRQXDE3NwotIwkJXEVbNDQ7MXUJCXNldCBzaGlmdCBGMTQgdG8gdHJhbnNtaXQuLi4KLSMJCQlcMTc3XEUkUVwxNzcKLSMJCVxFWzQ1OzF1CQlzZXQgc2hpZnQgRjE1IHRvIHRyYW5zbWl0Li4uCi0jCQkJXDE3N1xFJFJcMTc3Ci0jCQlcRVs0NjsxdQkJc2V0IHNoaWZ0IEYxNiB0byB0cmFuc21pdC4uLgotIwkJCVwxNzdcRSRTXDE3NwotIwkJXEVbMjAwOzF1CQlzZXQgc2hpZnQgdXAgdG8gdHJhbnNtaXQuLi4KLSMJCQlcMTc3XEUkQVwxNzcKLSMJCVxFWzIwMTsxdQkJc2V0IHNoaWZ0IGRvd24gdG8gdHJhbnNtaXQuLi4KLSMJCQlcMTc3XEUkQlwxNzcKLSMJCVxFWzIwMjsxdQkJc2V0IHNoaWZ0IHJpZ2h0IHRvIHRyYW5zbWl0Li4uCi0jCQkJXDE3N1xFJENcMTc3Ci0jCQlcRVsyMDM7MXUJCXNldCBzaGlmdCBsZWZ0IHRvIHRyYW5zbWl0Li4uCi0jCQkJXDE3N1xFJERcMTc3Ci0jCQlcRVsyMDQ7MXUJCXNldCBzaGlmdCBob21lIHRvIHRyYW5zbWl0Li4uCi0jCQkJXDE3N1xFJEhcMTc3Ci0jCQlcRVsyMTI7MXUJCXNldCBiYWNrdGFiIHRvIHRyYW5zbWl0Li4uCi0jCQkJXDE3N1xFJElcMTc3Ci0jCQlcRVsyMTM7MXUJCXNldCBzaGlmdCBiYWNrc3BhY2UgdG8gdHJhbnNtaXQuLi4KLSMJCQlcMTc3XEUkXkhcMTc3Ci0jCQlcRVsyMTQ7MXUJCXNldCBzaGlmdCBkZWwgdG8gdHJhbnNtaXQuLi4KLSMJCQkiXEUkXDE3NyIKLSMJIFtOZWNlc3NhcnkgaXRlbXMgbm90IG1lbnRpb25lZCBpbiBzZXR1cCBtb2RlOl0KLSMJCVxFWzIhdwkJCW1vdmUgdG8gd2luZG93IDIKLSMJCVxFWzI1OzI1dwkJZGVmaW5lIHdpbmRvdyBhcyBsaW5lIDI1IG9mIG1lbW9yeQotIwkJXEVbIXcJCQltb3ZlIHRvIHdpbmRvdyAxCi0jCQlcRVsyKncJCQlzaG93IGN1cnJlbnQgbGluZSBvZiB3aW5kb3cgMiBhcwotIwkJCQkJCXN0YXR1cyBsaW5lCi0jCQlcRVsyK3gJCQlzZXQgbWV0YSBrZXkgdG8gdXNlIGhpZ2ggYml0Ci0jCQlcRVs7Myt9CQkJbW92ZSB1bmRlcmxpbmUgdG8gYm90dG9tIG9mIGNoYXJhY3RlcgotIwotIwlBbGwgRmtleXMgYXJlIHNldCB0byB0aGVpciBkZWZhdWx0IHRyYW5zbWl0IGRlZmluaXRpb25zIHdpdGggXEVbOTA7M3UKLSMJaW4gaXMyPS4gIElNUE9SVEFOVDogIHRvIHVzZSB0aGlzIHRlcm1pbmFsIGRlZmluaXRpb24sIHRoZSAicXVpdCIgc3R0eQotIwlzZXR0aW5nIE1VU1QgYmUgcmVkZWZpbmVkIG9yIGRlYWN0aXZhdGVkLCBiZWNhdXNlIHRoZSBkZWZhdWx0IGlzCi0jCWNvbnRhaW5lZCBpbiBhbG1vc3QgYWxsIG9mIHRoaXMgdGVybWluYWwncyBGa2V5IHN0cmluZ3MhICBJZiBmb3Igc29tZQotIwlyZWFzb24gInF1aXQiIGNhbm5vdCBiZSBhbHRlcmVkLCB0aGUgRmtleXMgY2FuLCBidXQgaXQgd291bGQgYmUKLSMJbmVjZXNzYXJ5IHRvIGNoYW5nZSBefCB0byBeXSBpbiBhbGwgb2YgdGhlc2UgZGVmaW5pdGlvbnMsIGFuZCBhZGQKLSMJXEVbMjswMjkhdCB0byBpczIuCi0jIGxpbmVzOiBpcyBzZXQgdG8gMjQgYmVjYXVzZSB0aGlzIHRlcm1pbmFsIHJlZnVzZXMgdG8gdHJlYXQgdGhlIDI1dGgKLSMJbGluZSBub3JtYWxseS4KLSMgbGw6CU5vdCBhdmFpbGFibGUgaW4gcG93ZXIgb24gbW9kZSwgYnV0IHR1cm5lZCBvbiB3aXRoIFxFWz0xMDc7MjA3aCBpbgotIwlpczI9LgotIyBsbToJUG9pbnRsZXNzLCBnaXZlbiB0aGF0IHRoaXMgZGVmaW5pdGlvbiBsb2NrcyBhIHNpbmdsZSBzY3JlZW4gb2YKLSMJbWVtb3J5IGludG8gdmlldywgYnV0IHdoYXQgdGhlIGhleS4uLgotIyBybXNvOiBDb3VsZCB1c2UgXEVbMTs3IXsgdG8gdHVybiBvZmYgb25seSBib2xkIGFuZCByZXZlcnNlIChsZWF2aW5nIGFueQotIwlvdGhlciBhdHRyaWJ1dGVzIGFsb25lKSwgYnV0IHNvbWUgcHJvZ3JhbXMgZXhwZWN0IHRoaXMgdG8gdHVybiBvZmYKLSMJZXZlcnl0aGluZy4KLSMgcm11bDogQ291bGQgdXNlIFxFWzQheyB0byB0dXJuIG9mZiBvbmx5IHVuZGVybGluZSAobGVhdmluZyBhbnkgb3RoZXIKLSMJYXR0cmlidXRlcyBhbG9uZSksIGJ1dCBzb21lIHByb2dyYW1zIGV4cGVjdCB0aGlzIHRvIHR1cm4gb2ZmCi0jCWV2ZXJ5dGhpbmcuCi0jIHNncjoJQXR0cmlidXRlcyBhcmUgc2V0IG9uIHRoaXMgdGVybWluYWwgd2l0aCB0aGUgc3RyaW5nIFxFWyBmb2xsb3dlZCBieQotIwlhIGxpc3Qgb2YgYXR0cmlidXRlIGNvZGUgbnVtYmVycyAoaW4gZGVjaW1hbCwgc2VwYXJhdGVkIGJ5Ci0jCXNlbWljb2xvbnMpLCBmb2xsb3dlZCBieSB0aGUgY2hhcmFjdGVyIG0uICBUaGUgYXR0cmlidXRlIGNvZGUKLSMJbnVtYmVycyBhcmU6Ci0jCQkgIDEgZm9yIGJvbGQ7Ci0jCQkgIDIgZm9yIGRpbSAod2hpY2ggaXMgaWdub3JlZCBpbiBwb3dlciBvbiBtb2RlKTsKLSMJCSAgNCBmb3IgdW5kZXJsaW5lOwotIwkJICA1IGZvciBibGlua2luZzsKLSMJCSAgNyBmb3IgaW52ZXJzZTsKLSMJCSAgOCBmb3Igbm90IGRpc3BsYXlhYmxlOyBhbmQKLSMJCT05OSBmb3IgcHJvdGVjdGVkIChleGNlcHQgdGhhdCB0aGVyZSBhcmUgc3RyYW5nZSBzaWRlCi0jCQllZmZlY3RzIHRvIHByb3RlY3RlZCBjaGFyYWN0ZXJzIHdoaWNoIG1ha2UgdGhlbSBpbmFkdmlzYWJsZSkuCi0jCSBUaGUgbWFwcGluZyBvZiB0ZXJtaW5mbyBwYXJhbWV0ZXJzIHRvIGF0dHJpYnV0ZXMgaXMgYXMgZm9sbG93czoKLSMJCSVwMSAoc3RhbmRvdXQpID0gYm9sZCBhbmQgaW52ZXJzZSB0b2dldGhlcjsKLSMJCSVwMiAodW5kZXJsaW5lKSA9IHVuZGVybGluZTsKLSMJCSVwMyAocmV2ZXJzZSkgPSBpbnZlcnNlOwotIwkJJXA0IChibGluaykgPSBibGlua2luZzsKLSMJCSVwNSAoZGltKSBpcyBpZ25vcmVkOwotIwkJJXA2IChib2xkKSA9IGJvbGQ7Ci0jCQklcDcgKGludmlzaWJsZSkgPSBub3QgZGlzcGxheWFibGU7Ci0jCQklcDggKHByb3RlY3RlZCkgaXMgaWdub3JlZDsgYW5kCi0jCQklcDkgKGFsdCBjaGFyIHNldCkgPSBhbHQgY2hhciBzZXQuCi0jCSBUaGUgY29kZSB0byBkbyB0aGlzIGlzOgotIwkJXEVbMAkJT1VUUFVUCVxFWzAKLSMJCSU/JXAxJXA2JU8JSUYJKHN0YW5kb3V0OyBib2xkKSBPUgotIwkJJXQ7MQkJVEhFTglPVVRQVVQJOzEKLSMJCSU7CQlFTkRJRgotIwkJJT8lcDIJCUlGCXVuZGVybGluZQotIwkJJXQ7NAkJVEhFTglPVVRQVVQJOzQKLSMJCSU7CQlFTkRJRgotIwkJJT8lcDQJCUlGCWJsaW5rCi0jCQkldDs1CQlUSEVOCU9VVFBVVAk7NQotIwkJJTsJCUVORElGCi0jCQklPyVwMSVwMyVPCUlGCShzdGFuZG91dDsgcmV2ZXJzZSkgT1IKLSMJCSV0OzcJCVRIRU4JT1VUUFVUCTs3Ci0jCQklOwkJRU5ESUYKLSMJCSU/JXA3CQlJRglpbnZpc2libGUKLSMJCSV0OzgJCVRIRU4JT1VUUFVUCTs4Ci0jCQklOwkJRU5ESUYKLSMJCW0JCU9VVFBVVAltCi0jCQklPyVwOQkJSUYJYWx0Y2hhcnNldAotIwkJJXReTgkJVEhFTglPVVRQVVQJXk4KLSMJCSVlXk8JCUVMU0UJT1VUUFVUCV5PCi0jCQklOwkJRU5ESUYKLSMgc2dyMDogRXZlcnl0aGluZyBpcyB0dXJuZWQgb2ZmIChpbmNsdWRpbmcgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQpLCBzaW5jZQotIwl0aGVyZSBpcyBubyB3YXkgb2Yga25vd2luZyB3aGF0IGl0IGlzIHRoYXQgdGhlIHByb2dyYW0gd2FudHMgdHVybmVkCi0jCW9mZi4KLSMgc211bDogVGhlICJ1bmRlcmxpbmUiIGF0dHJpYnV0ZSBpcyByZWNvbmZpZ3VyYWJsZSB0byBhbiBvdmVybGluZSBvcgotIwlzdHJpa2V0aHJ1LCBvciAoYXMgZG9uZSB3aXRoIFxFWzszK30gaW4gaXMyPSksIHRvIGEgbGluZSBhdCB0aGUgdHJ1ZQotIwlib3R0b20gb2YgdGhlIGNoYXJhY3RlciBjZWxsLiAgVGhpcyB3YXMgZG9uZSB0byBhbGxvdyBmb3IgbW9yZSByZWFkYWJsZQotIwl1bmRlcmxpbmVkIGNoYXJhY3RlcnMsIGFuZCB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4KLSMJdW5kZXJsaW5lZCBzcGFjZSwgYW4gdW5kZXJzY29yZSwgYW5kIGFuIHVuZGVybGluZWQgdW5kZXJzY29yZS4KLSMgeGVubDogVGVybWluYWwgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gbm90IG5lZWQgdGhpcywgYnV0IHRoaXMgImdsaXRjaCIKLSMJYmVoYXZpb3IgaXMgYWN0dWFsbHkgcHJlZmVyYWJsZSB3aXRoIGF1dG93cmFwIHRlcm1pbmFscy4KLSMKLSMgUGFyYW1ldGVycyBrZjMxPSB0aHJ1IGtmNTM9IGFjdHVhbGx5IGNvbnRhaW4gdGhlIHN0cmluZ3Mgc2VudCBieSB0aGUgc2hpZnRlZAotIyBGa2V5cy4gIFRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIGZvciBzaGlmdGVkIEZrZXlzIGluIHRlcm1pbmZvLiAgVGhlIGlzMgotIyBzdHJpbmcgbW9kaWZpZXMgdGhlICdPJyBpbiBrZjQzIHRvIGtmNDYgdG8gYSAnJCcuCi0jCi0jIGtjYnQgd2FzIG9yaWdpbmFsbHkgXkkgYnV0IHJlZGVmaW5lZCBpbiBpczI9LgotIyBrSE9NIHdhcyBcRVtIIG9yaWdpbmFsbHkgYnV0IHJlZGVmaW5lZCBpbiBpczI9LCBhcyB3ZXJlIGEgbnVtYmVyIG9mCi0jIG90aGVyIGtleXMuCi0jIGtEQyB3YXMgb3JpZ2luYWxseSBcMTc3IGJ1dCByZWRlZmluZWQgaW4gaXMyPS4KLSMKLSMga2JzOglTaGlmdCB3YXMgYWxzbyBeSCBvcmlnaW5hbGx5IGJ1dCByZWRlZmluZWQgYXMgXEUkXkggaW4gaXMyPS4KLSMgdHNsOglHbyB0byB3aW5kb3cgMiwgdGhlbiBkbyBhbiBocGE9LgotIwotIy0tLS0tLS0gZmxhc2g9XEVbODszIX1eR1xFWzM7MyF9Ci0jLS0tLS0tLSBmbGFzaD1cRVs/NWgkPDEwMD5cRVs/NWwKLSMgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGZsYXNoIHRoZSBzY3JlZW4sIGJvdGggb2Ygd2hpY2ggaGF2ZSB0aGVpciBkcmF3YmFja3MuCi0jIFRoZSBmaXJzdCBpcyB0byBzZXQgdGhlIGJlbGwgbW9kZSB0byB2aWRlbywgdHJhbnNtaXQgYSBiZWxsIGNoYXJhY3RlciwgYW5kCi0jIHNldCB0aGUgYmVsbCBtb2RlIGJhY2sgLSBidXQgdG8gd2hhdD8gIFRoZXJlIGlzIG5vIHdheSBvZiBrbm93aW5nIHdoYXQgdGhlCi0jIHVzZXIncyBvbGQgYmVsbCBzZXR0aW5nIHdhcyBiZWZvcmUgd2UgbWVzc2VkIHdpdGggaXQuICBXb3JzZSwgdGhlIGNvbW1hbmQgdG8KLSMgc2V0IHRoZSBiZWxsIG1vZGUgYWxzbyBzZXRzIHRoZSBrZXkgY2xpY2sgdm9sdW1lLCBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIHNheQotIyAibGVhdmUgdGhhdCBhbG9uZSIsIG9yIHRvIGtub3cgd2hhdCBpdCdzIHNldCB0bywgZWl0aGVyLgotIyBUaGUgc2Vjb25kIHdheSB0byBkbyBhIGZsYXNoIGlzIHRvIHNldCB0aGUgc2NyZWVuIHRvIGludmVyc2UgdmlkZW8sIHBhZCBmb3IgYQotIyB0ZW50aCBvZiBhIHNlY29uZCwgYW5kIHNldCBpdCBiYWNrIC0gYnV0IGxpa2UgYmVmb3JlLCB0aGVyZSdzIG5vIHdheSB0byBrbm93Ci0jIHRoYXQgdGhlIHNjcmVlbiB3YXNuJ3QgQUxSRUFEWSBpbiBpbnZlcnNlIHZpZGVvLCBvciB0aGF0IHRoZSB1c2VyIG1heSBwcmVmZXIKLSMgaXQgdGhhdCB3YXkuICBUaGUgcG9pbnQgaXMgbW9vdCBhbnl3YXksIHNpbmNlIHZpIChhbmQgcHJvYmFibHkgb3RoZXIKLSMgcHJvZ3JhbXMpIGFzc3VtZSB0aGF0IGJ5IGRlZmluaW5nIGZsYXNoPSwgeW91IHdhbnQgdGhlIGNvbXB1dGVyIHRvIHVzZSBpdAotIyBJTlNURUFEIG9mIGJlbD0sIHJhdGhlciB0aGFuIGFzIGEgc2Vjb25kYXJ5IHR5cGUgb2Ygc2lnbmFsLgotIwotIy0tLS0tLS0gY3Z2aXM9XEVbK3sKLSMgVGhlIGlzIHRoZSBwb3dlciBvbiBzZXR0aW5nLCB3aGljaCBpcyBhbHNvIGFzIHZpc2libGUgYXMgdGhlIGN1cnNvcgotIyBnZXRzLgotIy0tLS0tLS0gIHdpbmQ9XEVbJWklcDElZDslcDIlZDslcDMlezF9JSslZDslcDQlezF9JSslZHcKLSMgV2luZG93aW5nIGlzIHBvc3NpYmxlLCBidXQgbm90IGRlZmluZWQgaGVyZSBiZWNhdXNlIGl0IGlzIGFsc28gdXNlZCB0bwotIyBlbXVsYXRlIHN0YXR1cyBsaW5lIGZ1bmN0aW9ucy4gIEFsbG93aW5nIGEgcHJvZ3JhbSB0byBzZXQgYSB3aW5kb3cgY291bGQKLSMgY2xvYmJlciB0aGUgc3RhdHVzIGxpbmUgb3IgcmVuZGVyIGl0IHVudXNhYmxlLiAgVGhlcmUgaXMgYWRkaXRpb25hbCBtZW1vcnksCi0jIGJ1dCBzY3JlZW4gc2Nyb2xsIGZ1bmN0aW9ucyBhcmUgZGVzdHJ1Y3RpdmUgYW5kIGRvIG5vdCBtYWtlIHVzZSBvZiBpdC4KLSMKLSMtLS0tLS0tICAgZGltPQkJCU5vdCBhdmFpbGFibGUgaW4gcG93ZXIgb24gbW9kZS4KLSMgWW91IGhhdmUgYSBjaG9pY2Ugb2YgZGVmaW5pbmcgbG93IGludGVuc2l0eSBjaGFyYWN0ZXJzIGFzICJoYWxmIGJyaWdodCIgYW5kCi0jIGhpZ2ggaW50ZW5zaXR5IGFzICJub3JtYWwiLCBvciBkZWZpbmluZyBsb3cgYXMgIm5vcm1hbCIgYW5kIGhpZ2ggYXMgImJvbGQiLgotIyBObyBtYXR0ZXIgd2hpY2ggeW91IGNob29zZSwgb25seSBvbmUgb2YgZWl0aGVyICJoYWxmIGJyaWdodCIgb3IgImJvbGQiIGlzCi0jIGF2YWlsYWJsZSBhdCBhbnkgdGltZSwgc28gdGFraW5nIHRoZSB0aW1lIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGlzCi0jIHBvaW50bGVzcy4KLSMKLSMtLS0tLS0tICBwcm90PVxFWz0wOzk5bQotIyBOb3QgZGVmaW5lZCwgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGhhdmUgc29tZSBzdHJhbmdlIHNpZGUgZWZmZWN0cy4KLSMtLS0tLS0tIHBma2V5PSU/JXAxJXsyNH0lPCVwMSV7MzB9JT4lcDElezU0fSU8JUElTyV0XEVbJXAxJWR1XDE3NyVwMiVzXDE3NyU7Ci0jLS0tLS0tLSBwZmxvYz0lPyVwMSV7MjR9JTwlcDElezMwfSU+JXAxJXs1NH0lPCVBJU8ldFxFWyVwMSVkdVwxNzclcDIlc1wxNzclOwotIy0tLS0tLS0gICBwZng9JT8lcDElezI0fSU8JXAxJXszMH0lPiVwMSV7NTR9JTwlQSVPJXRcRVslcDElZDsxdVwxNzclcDIlc1wxNzclOwotIwkgQXZhaWxhYmxlLCBidXQgbWFraW5nIHRoZW0gYXZhaWxhYmxlIHRvIHByb2dyYW1zIGlzIGluYWR2aXNhYmxlLgotIwkgVGhlIGNvZGUgdG8gZG8gdGhpcyBpczoKLSMJCSU/JXAxJXsyNH0lPAlJRgkoKGtleTsgMjQpIDw7Ci0jCQklcDElezMwfSU+CQkgKChrZXk7IDMwKSA+OwotIwkJJXAxJXs1NH0lPAkJICAoa2V5OyA1NCkgPAotIwkJJUEJCQkgKSBBTkQKLSMJCSVPCQkgIAkpIE9SCi0jCSBbdGhhdCBpcywgIklGIGtleSA8IDI0IE9SIChrZXkgPiAzMCBBTkQga2V5IDwgNTQpIixdCi0jCQkldFxFWwkJVEhFTglPVVRQVVQJXEVbCi0jCQklcDElZAkJCU9VVFBVVAkoa2V5KSBhcyBkZWNpbWFsCi0jCSBbbmV4dCBsaW5lIGFwcGxpZXMgdG8gcGZ4IG9ubHldCi0jCQk7MQkJCU9VVFBVVAk7MQotIwkJdQkJCU9VVFBVVAl1Ci0jCQlcMTc3CQkJT1VUUFVUCVwxNzcKLSMJCSVwMiVzCQkJT1VUUFVUCShzdHJpbmcpIGFzIHN0cmluZwotIwkJXDE3NwkJCU9VVFBVVAlcMTc3Ci0jCSBbREVMIGNob3NlbiBhcyBkZWxpbWl0ZXIsIGJ1dCBjb3VsZCBiZSBhbnkgY2hhcmFjdGVyXQotIwkgW2ltcGxpZWQ6CQlFTFNFCWRvIG5vdGhpbmddCi0jCQklOwkJRU5ESUYKLSMKLSMtLS0tLS0tICAgcnMyPQotIyBOb3QgZGVmaW5lZCBzaW5jZSBhbnl0aGluZyBpdCBtaWdodCBkbyBjb3VsZCBiZSBkb25lIGZhc3RlciBhbmQgZWFzaWVyIHdpdGgKLSMgZWl0aGVyIE1ldGEtU2hpZnQtUmVzZXQgb3IgdGhlIG1haW4gcG93ZXIgc3dpdGNoLgotIwotIy0tLS0tLS0gIHNta3g9XEVbMSF6Ci0jLS0tLS0tLSAgcm1reD1cRVshegotIyBUaGVzZSBzZXF1ZW5jZXMgYXBwbHkgdG8gdGhlIGN1cnNvciBhbmQgc2V0dXAga2V5cyBvbmx5LCBub3QgdG8gdGhlCi0jIG51bWVyaWMga2V5cGFkLiAgQnV0IGl0IGRvZXNuJ3QgbWF0dGVyIGFueXdheSwgc2luY2UgbWFraW5nIHRoZXNlCi0jIGF2YWlsYWJsZSB0byBwcm9ncmFtcyBpcyBpbmFkdmlzYWJsZS4KLSMgRm9yIHRoZSBrZXkgZGVmaW5pdGlvbnMgYmVsb3csIGFsbCBzZXF1ZW5jZXMgYmVnaW5uaW5nIHdpdGggXEUkIGFyZQotIyBjdXN0b20gYW5kIHByb2dyYW1tZWQgaW50byB0aGUgdGVybWluYWwgdmlhIGlzMi4gIFxFJCBhbHNvIGhhcyBubwotIyBtZWFuaW5nIHRvIGFueSBvdGhlciB0ZXJtaW5hbC4KLSMKLSMtLS0tLS0tIGNtZGNoPVxFWzslcDElZCF0Ci0jIEF2YWlsYWJsZSwgYnV0IG1ha2luZyBpdCBhdmFpbGFibGUgdG8gcHJvZ3JhbXMgaXMgaW5hZHZpc2FibGUuCi0jLS0tLS0tLSBzbXhvbj1cRVsxKnEKLSMgQXZhaWxhYmxlLCBidXQgbWFraW5nIGl0IGF2YWlsYWJsZSB0byBwcm9ncmFtcyBpcyBpbmFkdmlzYWJsZS4KLSMgVGVybWluYWwgd2lsbCBzZW5kIFhPTi9YT0ZGIG9uIGJ1ZmZlciBvdmVyZmxvdy4KLSMtLS0tLS0tIHJteG9uPVxFWypxCi0jIEF2YWlsYWJsZSwgYnV0IG1ha2luZyBpdCBhdmFpbGFibGUgdG8gcHJvZ3JhbXMgaXMgaW5hZHZpc2FibGUuCi0jIFRlcm1pbmFsIHdpbGwgbm90IG5vdGlmeSBvbiBidWZmZXIgb3ZlcmZsb3cuCi0jLS0tLS0tLSAgIHNtbT1cRVsyK3gKLSMtLS0tLS0tICAgcm1tPVxFWyt4Ci0jIEF2YWlsYWJsZSwgYnV0IG1ha2luZyB0aGVtIGF2YWlsYWJsZSB0byBwcm9ncmFtcyBpcyBpbmFkdmlzYWJsZS4KLSMKLSMgUHJpbnRpbmc6Ci0jCSBJdCdzIG5vdCBtYWRlIGNsZWFyIGluIHRoZSBtYW51YWxzLCBidXQgYmFzZWQgb24gb3RoZXIgYW5zaS92dCB0eXBlCi0jCSB0ZXJtaW5hbHMsIGl0J3MgYSBnb29kIGd1ZXNzIHRoYXQgdGhpcyB0ZXJtaW5hbCBpcyBjYXBhYmxlIG9mIGJvdGgKLSMJICJ0cmFuc3BhcmVudCBwcmludCIgKHdoaWNoIGRvZXNuJ3QgY29weSBkYXRhIHRvIHRoZSBzY3JlZW4sIGFuZAotIwkgdGhlcmVmb3JlIG5lZWRzIG1jNWk6IHNwZWNpZmllZCB0byBzYXkgc28pIGFuZCAiYXV4aWxsaWFyeSBwcmludCIKLSMJICh3aGljaCBkb2VzIGR1cGxpY2F0ZSBwcmludGVkIGRhdGEgb24gdGhlIHNjcmVlbiwgaW4gd2hpY2ggY2FzZSBtYzQ9Ci0jCSBhbmQgbWM1PSBzaG91bGQgdXNlIHRoZSBcRVs/NGkgYW5kIFxFWz81aSBzdHJpbmdzIGluc3RlYWQpLgotCi1oZHMyMDB8SHVtYW4gRGVzaWduZWQgU3lzdGVtcyBIRFMyMDAsCi0JYW0sIGJ3LCBlc2xvaywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbG0jMCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcXFzc3R0dXV2dnd3eHh+fiwgYmVsPV5HLAotCWJsaW5rPVxFWzA7NW0sIGJvbGQ9XEVbMDsxbSwgY2J0PVxFW1osIGNpdmlzPVxFWzYreywKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbK3ssIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlkc2w9XEVbMiF3XHJcblxFWyF3LCBlZD1cRVtKLCBlbD1cRVtLLCBlbDE9XEVbMUssCi0JZnNsPVxFWyF3LCBob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpbnZpcz1cRVswOzhtLAotCWlzMj1cRSkwXDAxN1xFW21cRVs9MTA3OzIwN2hcRVs5MDszdVxFWzkyOzN1XEVbNDM7MXVcMTc3XEUkUFwxNzdcRVs0NDsxdVwxNzdcRSRRXDE3N1xFWzQ1OzF1XDE3N1xFJFJcMTc3XEVbNDY7MXVcMTc3XEUkU1wxNzdcRVsyMDA7MXVcMTc3XEUkQVwxNzdcRVsyMDE7MXVcMTc3XEUkQlwxNzdcRVsyMDI7MXVcMTc3XEUkQ1wxNzdcRVsyMDM7MXVcMTc3XEUkRFwxNzdcRVsyMDQ7MXVcMTc3XEUkSFwxNzdcRVsyMTI7MXVcMTc3XEUkSVwxNzdcRVsyMTM7MXVcMTc3XEUkXDAxMFwxNzdcRVsyMTQ7MXUiXEUkXDE3NyJcRVsyIXdcRVsyNTsyNXdcRVshd1xFWzIqd1xFWzIreFxFWzszK30sCi0Ja0RDPVxFJFwxNzcsIGtIT009XEUkSCwga0xGVD1cRSRELCBrUklUPVxFJEMsIGticz1eSCwKLQlrY2J0PVxFJEksIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XDE3Nywga2VudD1eTSwga2YxPV5cMDAxXHIsIGtmMTA9XlwwMTBcciwKLQlrZjExPV5cMDExXHIsIGtmMTI9XlwwMTJcciwga2YxMz1cRU9QLCBrZjE0PVxFT1EsCi0Ja2YxNT1cRU9SLCBrZjE2PVxFT1MsIGtmMTc9XlwwMTdcciwga2YxOD1eXDAxOFxyLAotCWtmMTk9XlwwMTlcciwga2YyPV5cMDAyXHIsIGtmMjA9XlwwMjBcciwga2YyMT1eXDAyMVxyLAotCWtmMjI9XlwwMjJcciwga2YyMz1eXDAyM1xyLCBrZjM9XlwwMDNcciwga2YzMT1eXDAzMVxyLAotCWtmMzI9XlwwMzJcciwga2YzMz1eXDAzM1xyLCBrZjM0PV5cMDM0XHIsIGtmMzU9XlwwMzVcciwKLQlrZjM2PV5cMDM2XHIsIGtmMzc9XlwwMzdcciwga2YzOD1eXDAzOFxyLCBrZjM5PV5cMDM5XHIsCi0Ja2Y0PV5cMDA0XHIsIGtmNDA9XlwwNDBcciwga2Y0MT1eXDA0MVxyLCBrZjQyPV5cMDQyXHIsCi0Ja2Y0Mz1cRSRQLCBrZjQ0PVxFJFEsIGtmNDU9XEUkUiwga2Y0Nj1cRSRTLCBrZjQ3PV5cMDQ3XHIsCi0Ja2Y0OD1eXDA0OFxyLCBrZjQ5PV5cMDQ5XHIsIGtmNT1eXDAwNVxyLCBrZjUwPV5cMDUwXHIsCi0Ja2Y1MT1eXDA1MVxyLCBrZjUyPV5cMDUyXHIsIGtmNTM9XlwwNTNcciwga2Y2PV5cMDA2XHIsCi0Ja2Y3PV5cMDA3XHIsIGtmOD1eXDAwOFxyLCBrZjk9XlwwMDlcciwga2hvbWU9XEVbSCwKLQlraW5kPVxFW1QsIGtucD1cRVtVLCBrcHA9XEVbViwga3JpPVxFW1MsIGxsPVxFW0hcRVtBLAotCW1jMD1cRVtpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwgbmVsPVxFW0UsIHJjPVxFOCwKLQlyZXY9XEVbMDs3bSwgcmk9XEVNLCBybWFjcz1eTywgcm1pcj1cRVs0bCwgcm1zbz1cRVttXDAxNywKLQlybXVsPVxFW21cMDE3LCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNiVPJXQ7MSU7JT8lcDIldDs0JTslPyVwNCV0OzUlOyU/JXAxJXAzJU8ldDs3JTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzA7MTs3bSwKLQlzbXVsPVxFWzA7NG0sIHRiYz1cRVszZywgdHNsPVxFWzIhd1xFWyVpJXAxJWRHLAotCXZwYT1cRVslaSVwMSVkZCwKLQotIyA8aHQ+IHRocm91Z2ggPGVsPiBpbmNsdWRlZCB0byBzcGVjaWZ5IHBhZGRpbmcgbmVlZGVkIGluIHJhdyBtb2RlLgotIyAoYXZ0LW5zOiBhZGRlZCBlbXB0eSA8YWNzYz4gdG8gc3VwcHJlc3MgYSB0aWMgd2FybmluZyAtLWVzcikKLWF2dC1uc3xjb25jZXB0IGF2dCBubyBzdGF0dXMgbGluZSwKLQlPVGJzLCBhbSwgZW8sIG1pciwgdWwsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbG0jMTkyLAotCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwKLQljbGVhcj1cRVtIXEVbSiQ8Mzg+LCBjbm9ybT1cRVs9MTE5bCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVs9MTE5aCwgZGNoMT1cRVtQLCBkaW09XEVbMSF7LCBkbD1cRVslcDElZE0kPDQqPiwKLQlkbDE9XEVbTSQ8ND4sIGVkPVxFW0okPDk2PiwgZWw9XEVbSyQ8Nj4sIGhvbWU9XEVbSCwKLQlocGE9XEVbJXAxJXsxfSUrJWRHLCBodD1cMDExJDw0PiwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCQ8NCo+LCBpbDE9XEVbTCQ8ND4sIGluZD1cbiQ8OD4sCi0JaW52aXM9XEVbOG0sIGlwPSQ8ND4sIGlzMT1cRVs9MTAzbFxFWz0yMDVsLAotCWlzMj1cRVsxKnFcRVsyIXRcRVs3IXRcRVs9NDsxMDE7MTE5OzEyMmxcRVs9MTA3OzExODsyMDdoXEUpMVxFWzFRXEVXXEVbIXlcRVshelxFPlxFWzBcOjBcOjMyIXJcRVswKndcRVt3XEUyXHJcblxFWzI7MjchdCwKLQlrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2RjaDE9XEVeQlxyLCBrZWQ9XEVeRFxyLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLAotCWtmND1cRU9TLCBraG9tZT1cRVtILCBraWNoMT1cRV5BXHIsIGtpbDE9XEVeQ1xyLCBsbD1cRVsyNEgsCi0JbWMwPVxFWzBpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwKLQlwZmxvYz1cRVslcDElZDswdSMlcDIlcyMsIHBmeD1cRVslcDElZDsxdSMlcDIlcyMsCi0JcHJvdD1cRVs5OW0sIHJjPVxFOCwgcmVwPSVwMSVjXEVbJXAyJXsxfSUtJWRiLCByZXY9XEVbN20sCi0Jcmk9XEVNJDw0Piwgcm1hY3M9XDAxNiQ8MT4sIHJtY3VwPVxFW3dcRTJcclxuLAotCXJtaXI9XEVbNGwsIHJta3g9XEVbIXpcRVswOzJ1LCBybXNvPVxFWzcheywgcm11bD1cRVs0IXssCi0Jc2M9XEU3LAotCXNncj1cRVslPyVwMSV0NzslOyU/JXAyJXQ0OyU7JT8lcDMldDc7JTslPyVwNCV0NTslOyU/JXA2JXQxOyU7bSwKLQlzZ3IwPVxFW20sIHNtYWNzPVwwMTckPDE+LCBzbWN1cD1cRVs9NGxcRVsxOzI0d1xFMlxyLAotCXNtaXI9XEVbNGgsIHNta3g9XEVbMSF6XEVbMDszdSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbMmcsIHZwYT1cRVslcDElezF9JSslZGQsCi1hdnQtcnYtbnN8Y29uY2VwdCBhdnQgaW4gcmV2ZXJzZSB2aWRlbyBtb2RlL25vIHN0YXR1cyBsaW5lLAotCWZsYXNoPVxFWz0yMDVsJDwyMDA+XEVbPTIwNWgsIGlzMT1cRVs9MTAzbFxFWz0yMDVoLAotCXVzZT1hdnQtbnMsCi1hdnQtdy1uc3xjb25jZXB0IGF2dCBpbiAxMzIgY29sdW1uIG1vZGUvbm8gc3RhdHVzIGxpbmUsCi0JaXMxPVxFWz0xMDNoXEVbPTIwNWwsIHNtY3VwPVxFW0hcRVsxOzI0OzE7MTMydywKLQl1c2U9YXZ0LW5zLAotYXZ0LXctcnYtbnN8Y29uY2VwdCBhdnQgaW4gMTMyIGNvbHVtbiBtb2RlL25vIHN0YXR1cyBsaW5lL3JldmVyc2UgdmlkZW8sCi0JZmxhc2g9XEVbPTIwNWwkPDIwMD5cRVs9MjA1aCwgaXMxPVxFWz0xMDNoXEVbPTIwNWgsCi0Jc21jdXA9XEVbSFxFWzE7MjQ7MTsxMzJ3LCB1c2U9YXZ0LW5zLAotCi0jIENvbmNlcHQgQVZUIHdpdGggc3RhdHVzIGxpbmUuIFdlIGdldCB0aGUgc3RhdHVzIGxpbmUgdXNpbmcgdGhlCi0jICJCYWNrZ3JvdW5kIHN0YXR1cyBsaW5lIiBmZWF0dXJlIG9mIHRoZSB0ZXJtaW5hbC4gV2Ugc3dpcGUgdGhlCi0jIGZpcnN0IGxpbmUgb2YgbWVtb3J5IGluIHdpbmRvdyAyIGZvciB0aGUgc3RhdHVzIGxpbmUsIGtlZXBpbmcKLSMgMTkxIGxpbmVzIG9mIG1lbW9yeSBhbmQgMjQgc2NyZWVuIGxpbmVzIGZvciByZWd1bGFyIHVzZS4KLSMgVGhlIGZpcnN0IGxpbmUgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBsYXN0IHNvIHRoYXQgdGhpcyB3b3JrcwotIyBvbiBib3RoIDQgYW5kIDggcGFnZSBBVlRzLiAoTm90ZSB0aGUgbG0jMTkxIG9yIDE5MiAtIHRoaXMKLSMgYXNzdW1lcyBhbiA4IHBhZ2UgQVZUIGJ1dCBsbSBpc24ndCBjdXJyZW50bHkgdXNlZCBhbnl3aGVyZS4pCi0jCi1hdnQrc3xjb25jZXB0IGF2dCBzdGF0dXMgbGluZSBjaGFuZ2VzLAotCWVzbG9rLCBocywKLQlsbSMxOTEsCi0JZHNsPVxFWzAqdywgZnNsPVxFWzE7MSF3LAotCWlzMz1cRVsyd1xFWzIhd1xFWzE7MTsxOzgwd1xFW0hcRVsyKndcRVsxIXdcRTJcclxuLAotCXJtY3VwPVxFWzJ3XEUyXHJcbiwgc21jdXA9XEVbMjsyNXdcRTJcciwKLQl0c2w9XEVbMjsxIXdcRVs7JXAxJWRIXEVbMkssCi1hdnR8YXZ0LXN8Y29uY2VwdC1hdnR8YXZ0IHcvODAgY29sdW1ucywKLQl1c2U9YXZ0K3MsIHVzZT1hdnQtbnMsCi1hdnQtcnZ8YXZ0LXJ2LXN8YXZ0IHJldmVyc2UgdmlkZW8gdy9zbCwKLQlmbGFzaD1cRVs9MjA1bCQ8MjAwPlxFWz0yMDVoLCBpczE9XEVbPTEwM2xcRVs9MjA1aCwKLQl1c2U9YXZ0K3MsIHVzZT1hdnQtbnMsCi1hdnQtd3xhdnQtdy1zfGNvbmNlcHQgYXZ0IDEzMiBjb2xzK3N0YXR1cywKLQlpczE9XEVbPTEwM2hcRVs9MjA1bCwgc21jdXA9XEVbSFxFWzE7MjQ7MTsxMzJ3LAotCXVzZT1hdnQrcywgdXNlPWF2dC1ucywKLWF2dC13LXJ2fGF2dC13LXJ2LXN8YXZ0IHdpZGUrc3RhdHVzK3J2LAotCWZsYXNoPVxFWz0yMDVsJDwyMDA+XEVbPTIwNWgsIGlzMT1cRVs9MTAzaFxFWz0yMDVoLAotCXNtY3VwPVxFW0hcRVsxOzI0OzE7MTMydywgdXNlPWF2dCtzLCB1c2U9YXZ0LW5zLAotCi0jIyMjIENvbnRlbCBCdXNpbmVzcyBTeXN0ZW1zLgotIwotCi0jIENvbnRlbCBjMzAwIGFuZCBjMzIwIHRlcm1pbmFscy4KLWNvbnRlbDMwMHxjb250ZWwzMjB8YzMwMHxDb250ZWwgQnVzaW5lc3MgU3lzdGVtcyBDLTMwMCBvciBDLTMyMCwKLQlhbSwgaW4sIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgeG1jIzEsCi0JYmVsPV5HLCBjbGVhcj1cRUssIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVYJXAxJXszMn0lKyVjXEVZJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwKLQlkY2gxPVxFTyQ8NS41Kj4sIGRsMT1cRU0kPDUuNSo+LCBlZD1cRUokPDUuNSo+LAotCWVsPVxFSSQ8NS41PiwgZmxhc2g9XDAyMFwwMDIkPDIwMC8+XDAyMFwwMDMsIGhvbWU9XEVILAotCWh0cz1cRTEsIGljaDE9XEVOLCBpbDE9XEVMJDw1LjUqPiwgaW5kPV5KLCBpcD0kPDUuNSo+LAotCWticz1eSCwga2YwPVxFUkosIGtmMT1cRVJBLCBrZjI9XEVSQiwga2YzPVxFUkMsIGtmND1cRVJELAotCWtmNT1cRVJFLCBrZjY9XEVSRiwga2Y3PVxFUkcsIGtmOD1cRVJILCBrZjk9XEVSSSwgbGw9XEVIXEVBLAotCXJtc289XEUhXDAsIHNncjA9XEUhXDAsIHNtc289XEUhXHIsIHRiYz1cRTMsCi0jIENvbnRlbCBjMzAxIGFuZCBjMzIxIHRlcm1pbmFscy4KLWNvbnRlbDMwMXxjb250ZWwzMjF8YzMwMXxjMzIxfENvbnRlbCBCdXNpbmVzcyBTeXN0ZW1zIEMtMzAxIG9yIEMtMzIxLAotCWZsYXNoQCwgaWNoMUAsIGlwQCwgcm1zbz1cRSFcMCQ8MjA+LCBzbXNvPVxFIVxyJDwyMD4sCi0JdXNlPWNvbnRlbDMwMCwKLQotIyMjIyBEYXRhIEdlbmVyYWwgKGRnKQotIwotIyBBY2NvcmRpbmcgdG8gSmFtZXMgQ2FybHNvbiA8Y2FybHNvbkB4eWxvZ2ljcy5jb20+IHdyaXRpbmcgaW4gSmFudWFyeSAxOTk1LAotIyB0aGUgdGVybWluYWxzIGdyb3VwIGF0IERhdGEgR2VuZXJhbCB3YXMgc2h1dCBkb3duIGluIDE5OTE7IGFsbCB0aGVzZQotIyB0ZXJtaW5hbHMgaGF2ZSB0aHVzIGJlZW4gZGlzY29udGludWVkLgotIwotIyBERyB0ZXJtaW5hbHMgaGF2ZSBmdW5jdGlvbiBrZXlzIHRoYXQgcmVzcG9uZCB0byB0aGUgU0hJRlQgYW5kIENUUkwga2V5cywKLSMgZS5nLiwgU0hJRlQtRjEgZ2VuZXJhdGVzIGEgZGlmZmVyZW50IGNvZGUgZnJvbSBGMS4gIFRvIG51bWJlciB0aGUga2V5cwotIyBzZXF1ZW50aWFsbHksIGZpcnN0IHRoZSB1bm1vZGlmaWVkIGtleSBjb2RlcyBhcmUgbGlzdGVkIGFzIEYxIHRocm91Z2ggRjE1LgotIyBUaGVuIHRoZWlyIFNISUZUIHZlcnNpb25zIGFyZSBsaXN0ZWQgYXMgRjE2IHRocm91Z2ggRjMwLCB0aGVpciBDVFJMIHZlcnNpb25zCi0jIGFyZSBsaXN0ZWQgYXMgRjMxIHRocm91Z2ggRjQ1LCBhbmQgdGhlaXIgQ1RSTC1TSElGVCB2ZXJzaW9ucyBhcmUgbGlzdGVkIGFzCi0jIEY0NiB0aHJvdWdoIEY2MC4gIFRoaXMgaXMgZG9uZSBpbiB0aGUgcHJpdmF0ZSAiaW5jbHVkZXMiIGJlbG93IHdob3NlIG5hbWVzCi0jIHN0YXJ0IHdpdGggImRna2V5cysiLgotIwotIyBERyB0ZXJtaW5hbHMgZ2VuZXJhbGx5IHN1cHBvcnQgOCBiaXQgY2hhcmFjdGVycy4gIEZvciBlYWNoIG9mIHRoZXNlIHRlcm1pbmFscwotIyB0d28gZGVzY3JpcHRpb25zIGFyZSBzdXBwbGllZDoKLSMJMSkgQSBkZWZhdWx0IGRlc2NyaXB0aW9uIGZvciA4IGJpdHMvY2hhcmFjdGVyIGNvbW11bmljYXRpb25zLCB3aGljaAotIwkgICB1c2VzIHRoZSBkZWZhdWx0IERHIGludGVybmF0aW9uYWwgY2hhcmFjdGVyIHNldCBhbmQga2V5Ym9hcmQgY29kZXMuCi0jCTIpIEEgZGVzY3JpcHRpb24gd2l0aCBzdWZmaXggIi03YiIgZm9yIDcgYml0cy9jaGFyYWN0ZXIgY29tbXVuaWNhdGlvbnMuCi0jCSAgIFRoaXMgZGVzY3JpcHRpb24gbXVzdCB1c2UgdGhlIE5PTi1ERUZBVUxUIG5hdGl2ZSBrZXlib2FyZCBsYW5ndWFnZS4KLQotIyBVbm1vZGlmaWVkIGZrZXlzIChrZjEta2YxMSksIFNoaWZ0IGZrZXlzIChrZjEyLWtmMjIpLCBDdHJsIGZrZXlzIChrZjIzLWtmMzMpLAotIyBDdHJsL1NoaWZ0IGZka2V5cyAoa2YzNC1rZjQ0KS4KLQotZGdrZXlzKzhifFByaXZhdGUgZW50cnkgZGVzY3JpYmluZyBERyB0ZXJtaW5hbCA4LWJpdCBBTlNJIG1vZGUgc3BlY2lhbCBrZXlzLAotCWthMT1cMjMzMDIweiwga2EzPVwyMzMwMjF6LCBrYzE9XDIzMzAyMnosIGtjMz1cMjMzMDIzeiwKLQlrY2xyPVwyMzMySiwga2N1YjE9XDIzM0QsIGtjdWQxPVwyMzNCLCBrY3VmMT1cMjMzQywKLQlrY3V1MT1cMjMzQSwga2VsPVwyMzNLLCBrZjE9XDIzMzAwMXosIGtmMTA9XDIzMzAxMHosCi0Ja2YxMT1cMjMzMDExeiwga2YxMj1cMjMzMDEyeiwga2YxMz1cMjMzMDEzeiwKLQlrZjE0PVwyMzMwMTR6LCBrZjE1PVwyMzMwMDB6LCBrZjE2PVwyMzMxMDF6LAotCWtmMTc9XDIzMzEwMnosIGtmMTg9XDIzMzEwM3osIGtmMTk9XDIzMzEwNHosCi0Ja2YyPVwyMzMwMDJ6LCBrZjIwPVwyMzMxMDV6LCBrZjIxPVwyMzMxMDZ6LAotCWtmMjI9XDIzMzEwN3osIGtmMjM9XDIzMzEwOHosIGtmMjQ9XDIzMzEwOXosCi0Ja2YyNT1cMjMzMTEweiwga2YyNj1cMjMzMTExeiwga2YyNz1cMjMzMTEyeiwKLQlrZjI4PVwyMzMxMTN6LCBrZjI5PVwyMzMxMTR6LCBrZjM9XDIzMzAwM3osCi0Ja2YzMD1cMjMzMTAweiwga2YzMT1cMjMzMjAxeiwga2YzMj1cMjMzMjAyeiwKLQlrZjMzPVwyMzMyMDN6LCBrZjM0PVwyMzMyMDR6LCBrZjM1PVwyMzMyMDV6LAotCWtmMzY9XDIzMzIwNnosIGtmMzc9XDIzMzIwN3osIGtmMzg9XDIzMzIwOHosCi0Ja2YzOT1cMjMzMjA5eiwga2Y0PVwyMzMwMDR6LCBrZjQwPVwyMzMyMTB6LAotCWtmNDE9XDIzMzIxMXosIGtmNDI9XDIzMzIxMnosIGtmNDM9XDIzMzIxM3osCi0Ja2Y0ND1cMjMzMjE0eiwga2Y0NT1cMjMzMjAweiwga2Y0Nj1cMjMzMzAxeiwKLQlrZjQ3PVwyMzMzMDJ6LCBrZjQ4PVwyMzMzMDN6LCBrZjQ5PVwyMzMzMDR6LAotCWtmNT1cMjMzMDA1eiwga2Y1MD1cMjMzMzA1eiwga2Y1MT1cMjMzMzA2eiwKLQlrZjUyPVwyMzMzMDd6LCBrZjUzPVwyMzMzMDh6LCBrZjU0PVwyMzMzMDl6LAotCWtmNTU9XDIzMzMxMHosIGtmNTY9XDIzMzMxMXosIGtmNTc9XDIzMzMxMnosCi0Ja2Y1OD1cMjMzMzEzeiwga2Y1OT1cMjMzMzE0eiwga2Y2PVwyMzMwMDZ6LAotCWtmNjA9XDIzMzMwMHosIGtmNz1cMjMzMDA3eiwga2Y4PVwyMzMwMDh6LCBrZjk9XDIzMzAwOXosCi0Ja2hvbWU9XDIzM0gsIGtwcnQ9XDIzM2ksCi0KLWRna2V5cys3YnxQcml2YXRlIGVudHJ5IGRlc2NyaWJpbmcgREcgdGVybWluYWwgNy1iaXQgQU5TSSBtb2RlIHNwZWNpYWwga2V5cywKLQlrYTE9XEVbMDIweiwga2EzPVxFWzAyMXosIGtjMT1cRVswMjJ6LCBrYzM9XEVbMDIzeiwKLQlrY2xyPVxFWzJKLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtlbD1cRVtLLCBrZjE9XEVbMDAxeiwga2YxMD1cRVswMTB6LCBrZjExPVxFWzAxMXosCi0Ja2YxMj1cRVswMTJ6LCBrZjEzPVxFWzAxM3osIGtmMTQ9XEVbMDE0eiwga2YxNT1cRVswMDB6LAotCWtmMTY9XEVbMTAxeiwga2YxNz1cRVsxMDJ6LCBrZjE4PVxFWzEwM3osIGtmMTk9XEVbMTA0eiwKLQlrZjI9XEVbMDAyeiwga2YyMD1cRVsxMDV6LCBrZjIxPVxFWzEwNnosIGtmMjI9XEVbMTA3eiwKLQlrZjIzPVxFWzEwOHosIGtmMjQ9XEVbMTA5eiwga2YyNT1cRVsxMTB6LCBrZjI2PVxFWzExMXosCi0Ja2YyNz1cRVsxMTJ6LCBrZjI4PVxFWzExM3osIGtmMjk9XEVbMTE0eiwga2YzPVxFWzAwM3osCi0Ja2YzMD1cRVsxMDB6LCBrZjMxPVxFWzIwMXosIGtmMzI9XEVbMjAyeiwga2YzMz1cRVsyMDN6LAotCWtmMzQ9XEVbMjA0eiwga2YzNT1cRVsyMDV6LCBrZjM2PVxFWzIwNnosIGtmMzc9XEVbMjA3eiwKLQlrZjM4PVxFWzIwOHosIGtmMzk9XEVbMjA5eiwga2Y0PVxFWzAwNHosIGtmNDA9XEVbMjEweiwKLQlrZjQxPVxFWzIxMXosIGtmNDI9XEVbMjEyeiwga2Y0Mz1cRVsyMTN6LCBrZjQ0PVxFWzIxNHosCi0Ja2Y0NT1cRVsyMDB6LCBrZjQ2PVxFWzMwMXosIGtmNDc9XEVbMzAyeiwga2Y0OD1cRVszMDN6LAotCWtmNDk9XEVbMzA0eiwga2Y1PVxFWzAwNXosIGtmNTA9XEVbMzA1eiwga2Y1MT1cRVszMDZ6LAotCWtmNTI9XEVbMzA3eiwga2Y1Mz1cRVszMDh6LCBrZjU0PVxFWzMwOXosIGtmNTU9XEVbMzEweiwKLQlrZjU2PVxFWzMxMXosIGtmNTc9XEVbMzEyeiwga2Y1OD1cRVszMTN6LCBrZjU5PVxFWzMxNHosCi0Ja2Y2PVxFWzAwNnosIGtmNjA9XEVbMzAweiwga2Y3PVxFWzAwN3osIGtmOD1cRVswMDh6LAotCWtmOT1cRVswMDl6LCBraG9tZT1cRVtILCBrcHJ0PVxFW2ksCi0KLWRna2V5cysxMXxQcml2YXRlIGVudHJ5IGRlc2NyaWJpbmcgMTEgbWluaW1hbC1zdWJzZXQgREcgbW9kZSBzcGVjaWFsIGtleXMsCi0Ja2Nscj1eTCwga2N1YjE9XlksIGtjdWQxPV5aLCBrY3VmMT1eWCwga2N1dTE9XlcsIGtlbD1eSywKLQlrZjE9Xl5xLCBrZjEwPV5eeiwga2YxMT1eXnssIGtmMTI9Xl5hLCBrZjEzPV5eYiwga2YxND1eXmMsCi0Ja2YxNT1eXmQsIGtmMTY9Xl5lLCBrZjE3PV5eZiwga2YxOD1eXmcsIGtmMTk9Xl5oLCBrZjI9Xl5yLAotCWtmMjA9Xl5pLCBrZjIxPV5eaiwga2YyMj1eXmssIGtmMjM9Xl4xLCBrZjI0PV5eMiwga2YyNT1eXjMsCi0Ja2YyNj1eXjQsIGtmMjc9Xl41LCBrZjI4PV5eNiwga2YyOT1eXjcsIGtmMz1eXnMsIGtmMzA9Xl44LAotCWtmMzE9Xl45LCBrZjMyPV5eXDosIGtmMzM9Xl47LCBrZjM0PV5eISwga2YzNT1eXiIsIGtmMzY9Xl4jLAotCWtmMzc9Xl4kLCBrZjM4PV5eJSUsIGtmMzk9Xl4mLCBrZjQ9Xl50LCBrZjQwPV5eJywga2Y0MT1eXigsCi0Ja2Y0Mj1eXiksIGtmNDM9Xl4qLCBrZjQ0PV5eKywga2Y1PV5edSwga2Y2PV5ediwga2Y3PV5edywKLQlrZjg9Xl54LCBrZjk9Xl55LCBraG9tZT1eSCwKLQotZGdrZXlzKzE1fFByaXZhdGUgZW50cnkgZGVzY3JpYmluZyAxNSBERyBtb2RlIHNwZWNpYWwga2V5cywKLQlrSE9NPV5eXkgsIGtMRlQ9Xl5eWSwga1JJVD1eXl5YLCBrYTE9Xl5cXCwga2EzPV5eXSwga2MxPV5eXF4sCi0Ja2MzPV5eXywga2YxPV5ecSwga2YxMD1eXnosIGtmMTE9Xl57LCBrZjEyPV5efCwga2YxMz1eXn0sCi0Ja2YxND1eXn4sIGtmMTU9Xl5wLCBrZjE2PV5eYSwga2YxNz1eXmIsIGtmMTg9Xl5jLCBrZjE5PV5eZCwKLQlrZjI9Xl5yLCBrZjIwPV5eZSwga2YyMT1eXmYsIGtmMjI9Xl5nLCBrZjIzPV5eaCwga2YyND1eXmksCi0Ja2YyNT1eXmosIGtmMjY9Xl5rLCBrZjI3PV5ebCwga2YyOD1eXm0sIGtmMjk9Xl5uLCBrZjM9Xl5zLAotCWtmMzA9Xl5gLCBrZjMxPV5eMSwga2YzMj1eXjIsIGtmMzM9Xl4zLCBrZjM0PV5eNCwga2YzNT1eXjUsCi0Ja2YzNj1eXjYsIGtmMzc9Xl43LCBrZjM4PV5eOCwga2YzOT1eXjksIGtmND1eXnQsIGtmNDA9Xl5cOiwKLQlrZjQxPV5eOywga2Y0Mj1eXjwsIGtmNDM9Xl49LCBrZjQ0PV5ePiwga2Y0NT1eXjAsIGtmNDY9Xl4hLAotCWtmNDc9Xl4iLCBrZjQ4PV5eIywga2Y0OT1eXiQsIGtmNT1eXnUsIGtmNTA9Xl4lJSwga2Y1MT1eXiYsCi0Ja2Y1Mj1eXicsIGtmNTM9Xl4oLCBrZjU0PV5eKSwga2Y1NT1eXiosIGtmNTY9Xl4rLCBrZjU3PV5eXCwsCi0Ja2Y1OD1eXi0sIGtmNTk9Xl4uLCBrZjY9Xl52LCBrZjYwPV5eXHMsIGtmNz1eXncsIGtmOD1eXngsCi0Ja2Y5PV5eeSwKLQotIyBEYXRhIEdlbmVyYWwgY29sb3IgdGVybWluYWxzIHVzZSB0aGUgIlRla3Ryb25peCIgY29sb3IgbW9kZWwuICBUaGUgdG90YWwKLSMgbnVtYmVyIG9mIGNvbG9ycyB2YXJpZXMgd2l0aCB0aGUgdGVybWluYWwgbW9kZWwsIGFzIGRvZXMgc3VwcG9ydCBmb3IKLSMgYXR0cmlidXRlcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY29sb3IuCi0KLSMgUmVtb3ZlZCB1NywgdTggZGVmaW5pdGlvbnMgc2luY2UgdGhleSBjb25mbGljdCB3aXRoIHRhY2s6Ci0jCQlQcmVzZXJ2ZSB1c2VyLWRlZmluZWQgY29sb3JzIGluIGF0IGxlYXN0IHNvbWUgY2FzZXMuCi0jCXU3PV5eRmgsCi0jCQlEZWZhdWx0IGlzIEFDTSBtb2RlLgotIwl1OD1eXkZ9MjBeXkZpXl5GfTIxLAotIwotZGd1bml4K2ZpeGVkfEZpeGVkIGNvbG9yIGluZm8gZm9yIERHIEQ0MzBDIHRlcm1pbmFscyBpbiBERy1VTklYIG1vZGUsCi0JYmNlLAotCWNvbG9ycyMxNiwgbmN2IzUzLCBwYWlycyMyNTYsCi0Jb3A9XDAzNkFkXDAzNkJkLAotCXNldGFiPVwwMzZCJXAxJT8lcDElezh9JTwldCV7Mn0lJiU/JXAxJXsxfSUmJXQlezR9JXwlOyU/JXAxJXs0fSUmJXQlezF9JXwlOyU7JXs0OH0lKyVjLAotCXNldGFmPVwwMzZBJXAxJT8lcDElezh9JTwldCV7Mn0lJiU/JXAxJXsxfSUmJXQlezR9JXwlOyU/JXAxJXs0fSUmJXQlezF9JXwlOyU7JXs0OH0lKyVjLAotCXNldGI9XDAzNkIlcDElezQ4fSUrJWMsIHNldGY9XDAzNkElcDElezQ4fSUrJWMsCi0KLWRnK2ZpeGVkfEZpeGVkIGNvbG9yIGluZm8gZm9yIERHIEQ0MzBDIHRlcm1pbmFscyBpbiBERyBtb2RlLAotCXVzZT1kZ3VuaXgrZml4ZWQsCi0KLSMgVmlkZW8gYXR0cmlidXRlcyBhcmUgY29vcmRpbmF0ZWQgdXNpbmcgc3RhdGljIHZhcmlhYmxlcyBzZXQgYnkgInNnciIsIHRoZW4KLSMgY2hlY2tlZCBieSAib3AiLCAic2V0YVtiZl0iLCBhbmQgInNldFtiZl0iIHRvIHJlZnJlc2ggdGhlIGF0dHJpYnV0ZSBzZXR0aW5ncy4KLSMgKEQ9ZGltLCBVPXVuZGVybGluZSwgQj1ibGluaywgUj1yZXZlcnNlLikKLWRnK2NvbG9yOHxDb2xvciBpbmZvIGZvciBEYXRhIEdlbmVyYWwgRDIyMCBhbmQgRDIzMEMgdGVybWluYWxzIGluIEFOU0kgbW9kZSwKLQliY2UsCi0JY29sb3JzIzgsIG5jdiMxNiwgcGFpcnMjNjQsCi0Jb3A9XEVbJT8lZ0QldDI7JTslPyVnVSV0NDslOyU/JWdCJXQ1OyU7JT8lZ1IldDc7JTttLAotCXNldGFiPVxFWzQlcDElZCU/JWdEJXQ7MiU7JT8lZ1UldDs0JTslPyVnQiV0OzUlOyU/JWdSJXQ7NyU7bSwKLQlzZXRhZj1cRVszJXAxJWQlPyVnRCV0OzIlOyU/JWdVJXQ7NCU7JT8lZ0IldDs1JTslPyVnUiV0OzclO20sCi0Jc2V0Yj1cRVs0JXAxJXsyfSUmJT8lcDElezF9JSYldCV7NH0lfCU7JT8lcDElezR9JSYldCV7MX0lfCU7JWQlPyVnRCV0OzIlOyU/JWdVJXQ7NCU7JT8lZ0IldDs1JTslPyVnUiV0OzclO20sCi0Jc2V0Zj1cRVszJXAxJXsyfSUmJT8lcDElezF9JSYldCV7NH0lfCU7JT8lcDElezR9JSYldCV7MX0lfCU7JWQlPyVnRCV0OzIlOyU/JWdVJXQ7NCU7JT8lZ0IldDs1JTslPyVnUiV0OzclO20sCi0KLWRnK2NvbG9yfENvbG9yIGluZm8gZm9yIERhdGEgR2VuZXJhbCBENDcwQyB0ZXJtaW5hbHMgaW4gQU5TSSBtb2RlLAotCWNvbG9ycyMxNiwgbmN2IzUzLCBwYWlycyMyNTYsCi0Jc2V0YWI9XEVbJT8lcDElezh9JTwldDQlcDElZT0lcDElezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslOyVkJT8lZ0QldDsyJTslPyVnVSV0OzQlOyU/JWdCJXQ7NSU7JT8lZ1IldDs3JTttLAotCXNldGFmPVxFWyU/JXAxJXs4fSU8JXQzJXAxJWU8JXAxJXsyfSUmJT8lcDElezF9JSYldCV7NH0lfCU7JT8lcDElezR9JSYldCV7MX0lfCU7JTslZCU/JWdEJXQ7MiU7JT8lZ1UldDs0JTslPyVnQiV0OzUlOyU/JWdSJXQ7NyU7bSwKLQlzZXRiPVxFWyU/JXAxJXs4fSU8JXQ0JWU9JTslcDElezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslZCU/JWdEJXQ7MiU7JT8lZ1UldDs0JTslPyVnQiV0OzUlOyU/JWdSJXQ7NyU7bSwKLQlzZXRmPVxFWyU/JXAxJXs4fSU8JXQzJWU8JTslcDElezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslZCU/JWdEJXQ7MiU7JT8lZ1UldDs0JTslPyVnQiV0OzUlOyU/JWdSJXQ7NyU7bSwKLQl1c2U9ZGcrY29sb3I4LAotCi1kZ21vZGUrY29sb3I4fENvbG9yIGluZm8gZm9yIERhdGEgR2VuZXJhbCBEMjIwL0QyMzBDIHRlcm1pbmFscyBpbiBERyBtb2RlLAotCWJjZSwKLQljb2xvcnMjOCwgbmN2IzE2LCBwYWlycyM2NCwKLQlvcD1cMDM2QWRcMDM2QmQsCi0Jc2V0YWI9XDAzNkIlcDElezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslezQ4fSUrJWMsCi0Jc2V0YWY9XDAzNkElcDElezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslezQ4fSUrJWMsCi0Jc2V0Yj1cMDM2QiVwMSV7NDh9JSslYywgc2V0Zj1cMDM2QSVwMSV7NDh9JSslYywKLQotZGdtb2RlK2NvbG9yfENvbG9yIGluZm8gZm9yIERhdGEgR2VuZXJhbCBENDcwQyB0ZXJtaW5hbHMgaW4gREcgbW9kZSwKLQljb2xvcnMjMTYsIHBhaXJzIzI1NiwKLQlzZXRhYj1cMDM2QiVwMSU/JXAxJXs4fSU8JXQlezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslOyV7NDh9JSslYywKLQlzZXRhZj1cMDM2QSVwMSU/JXAxJXs4fSU8JXQlezJ9JSYlPyVwMSV7MX0lJiV0JXs0fSV8JTslPyVwMSV7NH0lJiV0JXsxfSV8JTslOyV7NDh9JSslYywKLQl1c2U9ZGdtb2RlK2NvbG9yOCwKLQotZGd1bml4K2NjY3xDb25maWd1cmFibGUgY29sb3IgaW5mbyBmb3IgREcgRDQzMEMgdGVybWluYWxzIGluIERHLVVOSVggbW9kZSwKLQliY2UsIGNjYywKLQljb2xvcnMjNTIsIG5jdiM1MywgcGFpcnMjMjYsCi0JaW5pdHA9XDAzNlJHMCVwMSUwMlglcDIlezI1Nn0lKiV7MTAwMX0lLyUwMlglcDMlezI1Nn0lKiV7MTAwMX0lLyUwMlglcDQlezI1Nn0lKiV7MTAwMX0lLyUwMlglcDUlezI1Nn0lKiV7MTAwMX0lLyUwMlglcDYlezI1Nn0lKiV7MTAwMX0lLyUwMlglcDclezI1Nn0lKiV7MTAwMX0lLyUwMlgsCi0Jb2M9XDAzNlJHMDFBMDBGRjAwMDAwMDAwXDAzNlJHMDFCMDAwMDAwMDBGRjAwXDAzNlJHMDFDMDA3RjAwMDAwMDAwXDAzNlJHMDFEMDAwMDAwMDA3RjAwLAotCW9wPVwwMzZSRjQ4MzFBXDAzNlJGMkUzMUJcMDM2UkYxRDMxQ1wwMzZSRjNGMzFELAotCXNjcD1cMDM2UkcyJXAxJTAyWCwKLQotIyBDb2xvcnMgYXJlIGluIHRoZSBvcmRlcjogIG5vcm1hbCwgcmV2ZXJzZSwgZGltLCBkaW0gKyByZXZlcnNlLgotZGcrY2NjfENvbmZpZ3VyYWJsZSBjb2xvciBpbmZvIGZvciBERyBENDMwQyB0ZXJtaW5hbHMgaW4gREcgbW9kZSwKLQliY2UsIGNjYywKLQljb2xvcnMjNTIsIG5jdiM1MywgcGFpcnMjMjYsCi0JaW5pdHA9XDAzNlJHMCVwMSV7MTZ9JS8lezQ4fSUrJWMlcDElezE2fSVtJXs0OH0lKyVjJXAyJXsyNTZ9JSolezEwMDF9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwMyV7MjU2fSUqJXsxMDAxfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMlcDQlezI1Nn0lKiV7MTAwMX0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjJXA1JXsyNTZ9JSolezEwMDF9JS8lUGElZ2ElezE2fSUvJXs0OH0lKyVjJWdhJXsxNn0lbSV7NDh9JSslYyVwNiV7MjU2fSUqJXsxMDAxfSUvJVBhJWdhJXsxNn0lLyV7NDh9JSslYyVnYSV7MTZ9JW0lezQ4fSUrJWMlcDclezI1Nn0lKiV7MTAwMX0lLyVQYSVnYSV7MTZ9JS8lezQ4fSUrJWMlZ2ElezE2fSVtJXs0OH0lKyVjLAotCW9jPVwwMzZSRzAxXDowMD8/MDAwMDAwMDBcMDM2UkcwMTswMDAwMDAwMD8/MDBcMDM2UkcwMTwwMDc/MDAwMDAwMDBcMDM2UkcwMT0wMDAwMDAwMDc/MDAsCi0Jb3A9XDAzNlJGNDgzMVw6XDAzNlJGMj4zMTtcMDM2UkYxPTMxPFwwMzZSRjM/MzE9LAotCXNjcD1cMDM2UkcyJXAxJXsxNn0lLyV7NDh9JSslYyVwMSV7MTZ9JW0lezQ4fSUrJWMsCi0KLSMgVGhlIGdlbmVyaWMgREcgdGVybWluYWwgdHlwZSAoYW4gOC1iaXQtY2xlYW4gc3Vic2V0IG9mIHRoZSA2MDUzKQotIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMSBzZXRzOgotIwleUgkJLSB2ZXJ0aWNhbCBzY3JvbGxpbmcgZW5hYmxlZAotIwleQwkJLSBibGlua2luZyBlbmFibGVkCi1kZy1nZW5lcmljfEdlbmVyaWMgRGF0YSBHZW5lcmFsIHRlcm1pbmFsIGluIERHIG1vZGUsCi0JYW0sIGJ3LCBtc2dyLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBibGluaz1eTiwgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ZLCBjdWQxPV5aLCBjdWYxPV5YLAotCWN1cD1cMDIwJXAyJWMlcDElYywgY3V1MT1eVywgZGltPV5cLCBlbD1eSywgaW5kPV5KLCBpczE9XlJeQywKLQltYzA9XlEsIG5lbD1eSiwgcm1zbz1eXSwgcm11bD1eVSwgc2dyMD1eT15VXl0sIHNtc289XlwsCi0Jc211bD1eVCwgdXNlPWRna2V5cysxMSwKLQotIyBBY2NvcmRpbmcgdG8gdGhlIDQuNEJTRCB0ZXJtY2FwIGZpbGUsIHRoZSBkZzIwMCA8Y3VwPiBzaG91bGQgYmUgdGhlCi0jIHRlcm1jYXAgZXF1aXZhbGVudCBvZiBcMDIwJXAyJXsxMjh9JSslYyVwMSV7MTI4fSUrJWMgKGluIHRlcm1jYXAKLSMgbm90YXRpb24gdGhhdCdzICJeUCVyJStcMjAwJStcMjAwIikuICBUaG9zZSBcMjAwcyBhcmUgc3VzcGljaW91cywKLSMgbWF5YmUgdGhleSB3ZXJlIG9yaWdpbmFsbHkgbnVscyAod2hpY2ggd291bGQgZml0KS4KLQotZGcyMDB8ZGF0YSBnZW5lcmFsIGRhc2hlciAyMDAsCi0JT1RicywgYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ZLCBjdWQxPV5aLCBjdWYxPV5YLAotCWN1cD1cMDIwJXAyJWMlcDElYywgY3V1MT1eVywgZWw9XkssIGhvbWU9XkgsIGluZD1eSiwKLQlrY3ViMT1eWSwga2N1ZDE9XlosIGtjdWYxPV5YLCBrY3V1MT1eVywga2YwPV5eeiwga2YxPV5ecSwKLQlrZjI9Xl5yLCBrZjM9Xl5zLCBrZjQ9Xl50LCBrZjU9Xl51LCBrZjY9Xl52LCBrZjc9Xl53LCBrZjg9Xl54LAotCWtmOT1eXnksIGtob21lPV5ILCBsZjA9ZjEwLCBuZWw9XkosIHJtc289Xl5FLCBybXVsPV5VLAotCXNtc289Xl5ELCBzbXVsPV5ULAotCi0jIERhdGEgR2VuZXJhbCAyMTAvMjExIChhbmQgNDEwPykJZnJvbSBMZWUgUGVhcnNvbiAodW1pY2ghbHApIHZpYSBCUkwKLWRnMjEwfGRnLWFuc2l8RGF0YSBHZW5lcmFsIDIxMC8yMTEsCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JT1RubD1cRVtCLCBjbGVhcj1cRVsySiwgY3VkMT1cRVtCLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1MT1cRVtBLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwKLQluZWw9XHJcRVtIXEVbQVxuLCBybXNvPVxFWzA7bSwgcm11bD1cRVswO20sIHNtc289XEVbNzttLAotCXNtdWw9XEVbNDttLAotIyBGcm9tOiBQZXRlciBOLiBXYW4gPGlobnA0IWdhdGVjaCFnYWNzciF3YW4+Ci0jIGNvdXJ0ZXN5IG9mIENhcmxvcyBSdWNhbGRlIG9mIFZhbnRhZ2UgU29mdHdhcmUsIEluYy4KLSMgKGRnMjExOiB0aGlzIGhhZCA8Y3VwPVwwMjAlciUuJT4uLCB3aGljaCB3YXMgYW4gYW5jaWVudCB0ZXJtY2FwIGhhbmdvdmVyLgotIyBJIHN1c3BlY3QgdGhlIGQyMDAgZnVuY3Rpb24ga2V5cyBhY3R1YWxseSB3b3JrIG9uIHRoZSBkZzIxMSwgY2hlY2sgaXQgb3V0LikKLWRnMjExfERhdGEgR2VuZXJhbCBkMjExLAotCWNub3JtPV5MLCBjdnZpcz1eTF5SLCBodD1eSSwgaW5kQCwga2JzPV5ZLCBrZjBALCBrZjFALCBrZjJALCBrZjNALAotCWtmNEAsIGtmNUAsIGtmNkAsIGtmN0AsIGtmOEAsIGtmOUAsIGxmMEAsIG5lbD1eTV5aLCBybWN1cD1eTCwKLQlybXNvPVwwMzZFJDxcMC8+LCBzbWN1cD1eTF5SLCBzbXNvPVwwMzZEJDw1Lz4sIHVzZT1kZzIwMCwKLQotIyBkZzQ1MCBmcm9tIENvcm5lbGwgKG5vdCBvZmZpY2lhbCkKLWRnNDUwfGRnNjEzNHxkYXRhIGdlbmVyYWwgNjEzNCwKLQljdWIxQCwgY3VmMT1eWCwgdXNlPWRnMjAwLAotCi0jIE5vdCBvZmZpY2lhbC4uLgotIyBOb3RlOiBsZXNzZXIgRGFzaGVyIHRlcm1pbmFscyB3aWxsIG5vdCB3b3JrIHdpdGggdmkgYmVjYXVzZSB2aSBpbnNpc3RzIHVwb24KLSMgaGF2aW5nIGEgY29tbWFuZCB0byBtb3ZlIHN0cmFpZ2h0IGRvd24gZnJvbSBhbnkgcG9zaXRpb24gb24gdGhlIGJvdHRvbSBsaW5lCi0jIGFuZCBzY3JvbGwgdGhlIHNjcmVlbiB1cCwgb3IgYSBkaXJlY3QgdmVydGljYWwgc2Nyb2xsIGNvbW1hbmQuICBUaGUgNDYwIGFuZAotIyBhYm92ZSBoYXZlIGJvdGgsIHRoZSBEMjEwLzIxMSwgZm9yIGluc3RhbmNlLCBoYXMgbmVpdGhlci4gIFdlIG11c3QgdXNlIEFOU0kKLSMgbW9kZSByYXRoZXIgdGhhbiBERyBtb2RlIGJlY2F1c2Ugc3RhbmRhcmQgVU5JWCB0dHkgZHJpdmVycyBhc3N1bWUgdGhhdCBeSCBpcwotIyBiYWNrc3BhY2Ugb24gYWxsIHRlcm1pbmFscy4gIFRoaXMgaXMgbm90IHNvIGluIERHIG1vZGUuCi0jIChkZzQ2MC1hbnNpOiByZW1vdmVkIG9ic29sZXRlICI6a24jNjoiOyBhbHNvIHJlbW92ZWQgIjptdT1cRVc6Iiwgb24gdGhlCi0jIGdyb3VuZHMgdGhhdCB0aGVyZSBpcyBubyBtYXRjaGluZyAiOm1sOiIKLSMgZml4ZWQgZ2FyYmxlZCAiOms5PVxFWzAwXDp6OiIgY2FwYWJpbGl0eSAtLSBlc3IpCi1kZzQ2MC1hbnNpfERhdGEgR2VuZXJhbCBEYXNoZXIgNDYwIGluIEFOU0ktbW9kZSwKLQlPVGJzLCBhbSwgbXNnciwgdWwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JT1RubD1cRUQsIGJsaW5rPVxFWzVtLCBjbGVhcj1cRVsySiwgY3ViMT1eSCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLAotCWRpbT1cRVsybSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoMT1cRVtALCBpbDE9XEVbTCwgaW5kPVxFW1MsIGlzMj1eXkZALCBrYnM9XEVbRCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMD1cRVswMDF6LCBrZjE9XEVbMDAyeiwga2YyPVxFWzAwM3osIGtmMz1cRVswMDR6LAotCWtmND1cRVswMDV6LCBrZjU9XEVbMDA2eiwga2Y2PVxFWzAwN3osIGtmNz1cRVswMDh6LAotCWtmOD1cRVswMDl6LCBrZjk9XEVbMDEweiwga2hvbWU9XEVbSCwgbGYwPWYxLCBsZjE9ZjIsIGxmMj1mMywKLQlsZjM9ZjQsIGxmND1mNSwgbGY1PWY2LCBsZjY9ZjcsIGxmNz1mOCwgbGY5PWYxMCwgcmV2PVxFWzdtLAotCXJpPVxFW1QsIHJtc289XEVbbSwgcm11bD1cRVswNSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sCi0jIEZyb206IFdheW5lIFRocm9vcCA8bWNuYyFydGktc2VsIXJ0cDQ3IXRocm9vcHc+IChub3Qgb2ZmaWNpYWwpCi0jIERhdGEgR2VuZXJhbCA2MDV4Ci0jIE91Z2h0IHRvIHdvcmsgZm9yIGEgTW9kZWwgNjI0MiwgVHlwZSBEMjEwIGFzIHdlbGwgYXMgYSA2MDV4LgotIyBOb3RlIHRoYXQgdGhlIGN1cnNvci1kb3duIGtleSB0cmFuc21pdHMgXlouICBKb2IgY29udHJvbCB1c2VycywgYmV3YXJlIQotIyBUaGlzIGFsc28gbWF0Y2hlcyBhIHBvc3RlZCBkZXNjcmlwdGlvbiBvZiBzb21ldGhpbmcgY2FsbGVkIGEgYERhc2hlciAxMDAnCi0jIHNvIHRoZXJlJ3MgYSBkZzEwMCBhbGlhcyBoZXJlLgotIyAoZGc2MDUzOiB0aGUgNC40QlNEIGZpbGUgaGFkIDxjdWIxPV5IPiwgPGN1ZDE9Xko+LCA8Y3VmMT1eUz4uIC0tIGVzcikKLWRnNjA1My1vbGR8ZGcxMDB8ZGF0YSBnZW5lcmFsIDYwNTMsCi0JT1RicywgYW0sIGJ3LCB1bCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlPVGJjPV5ZLCBiZWw9XkcsIGNsZWFyPV5MLCBjbm9ybT1eTCwgY3I9Xk0sIGN1YjE9XlksIGN1ZDE9XlosCi0JY3VmMT1eWCwgY3VwPVwwMjAlcDIlYyVwMSVjLCBjdXUxPV5XLCBjdnZpcz1eTF5SLCBlbD1eSywKLQlob21lPV5ILCBodD1eSSwgaXMyPV5SLCBrYnM9XlksIGtjdWIxPV5ZLCBrY3VkMT1eWiwga2N1ZjE9XlgsCi0Ja2N1dTE9XlcsIGtmMD1eXnEsIGtmMT1eXnIsIGtmMj1eXnMsIGtmMz1eXnQsIGtmND1eXnUsIGtmNT1eXnYsCi0Ja2Y2PV5edywga2Y3PV5eeCwga2Y4PV5eeSwga2Y5PV5eeiwga2hvbWU9XkgsIHJtY3VwPV5MLAotCXJtc289XDBeXkUsIHJtdWw9XlUsIHNtY3VwPV5MXlIsIHNtc289XDBcMFwwXDBcMFwwMzZELAotCXNtdWw9XlQsCi0KLSMgKFNvbWUgcGVyZm9ybWFuY2UgY2FuIGJlIGdhaW5lZCBvdmVyIHRoZSBnZW5lcmljIERHIHRlcm1pbmFsIHR5cGUpCi1kZzYwNTN8NjA1M3w2MDUzLWRnfGRnNjA1eHw2MDV4fDYwNXgtZGd8ZDJ8ZDItZGd8RGF0YSBHZW5lcmFsIERBU0hFUiA2MDUzLAotCXhvbkAsCi0JaG9tZT1eUFwwXDAsIGxsPV5QXDBeVywgdXNlPWRnLWdlbmVyaWMsCi0KLSMgTGlrZSA2MDUzLCBidXQgYWRkcyByZXZlcnNlIHZpZGVvIGFuZCBtb3JlIGtleXBhZCBhbmQgZnVuY3Rpb24ga2V5cy4KLWQyMDB8ZDIwMC1kZ3xEYXRhIEdlbmVyYWwgREFTSEVSIEQyMDAsCi0JYm9sZD1eXkReVCwgaG9tZUAsIGxsQCwgcmV2PV5eRCwgcm1zbz1eXkVeXSwKLQlzZ3I9XDAzNiU/JXAxJXAzJXwlcDYlfCV0RCVlRSU7JT8lcDIlcDYlfCV0XDAyNCVlXDAyNSU7JT8lcDQldFwwMTYlZVwwMTclOyU/JXAxJXA1JXwldFwwMzQlZVwwMzUlOywKLQlzZ3IwPVwwMTdcMDI1XDAzNVwwMzZFLCBzbXNvPV5eRF5cLCB1c2U9ZGdrZXlzKzE1LAotCXVzZT1kZzYwNTMsCi0KLSMgREFTSEVSIEQyMTAgc2VyaWVzIHRlcm1pbmFscyBpbiBBTlNJIG1vZGUuCi0jCVJldmVyc2UgdmlkZW8sIG5vIGluc2VydC9kZWxldGUgY2hhcmFjdGVyL2xpbmUsIDcgYml0cy9jaGFyYWN0ZXIgb25seS4KLSMKLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDEgc2V0czoKLSMJPDAJCS0gc2Nyb2xsaW5nIGVuYWJsZWQKLSMJPDEJCS0gYmxpbmsgZW5hYmxlZAotIwk8NAkJLSBwcmludCBjaGFyYWN0ZXJzIHJlZ2FyZGxlc3Mgb2YgYXR0cmlidXRlcwotZDIxMHxkMjE0fERhdGEgR2VuZXJhbCBEQVNIRVIgRDIxMCBzZXJpZXMsCi0JYW0sIGJ3LCBtc2dyLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVs0OzdtLCBjbGVhcj1cRVsySiwgY3I9Xk0sCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGltPVxFWzJtLCBlZD1cRVtKLCBlbD1cRVtLLAotCWVsMT1cRVsxSywgaG9tZT1cRVtILCBpbmQ9XkosIGlzMT1cRVs8MDs8MTs8NGwsCi0JbGw9XEVbSFxFW0EsIG5lbD1eSiwgcmV2PVxFWzdtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3I9XEVbJT8lcDElcDMlfCVwNiV8JXQ3OyU7JT8lcDQldDU7JTslPyVwMiVwNiV8JXQ0OyU7JT8lcDElcDUlfCV0MjslO20sCi0Jc2dyMD1cRVttLCBzbXNvPVxFWzI7N20sIHNtdWw9XEVbNG0sIHVzZT1kZ2tleXMrN2IsCi0KLSMgREFTSEVSIEQyMTAgc2VyaWVzIHRlcm1pbmFscyBpbiBERyBtb2RlLgotIyBMaWtlIEQyMDAsIGJ1dCBhZGRzIGNsZWFyIHRvIGVuZC1vZi1zY3JlZW4gYW5kIG5lZWRzIFhPTi9YT0ZGLgotZDIxMC1kZ3xkMjE0LWRnfERhdGEgR2VuZXJhbCBEQVNIRVIgRDIxMCBzZXJpZXMgaW4gREcgbW9kZSwKLQl4b24sCi0JZWQ9Xl5GRiwgdXNlPWQyMDAtZGcsCi0KLSMgREFTSEVSIEQyMTEgc2VyaWVzIHRlcm1pbmFscyBpbiBBTlNJIG1vZGUuCi0jIExpa2UgdGhlIEQyMTAsIGJ1dCB3aXRoIDgtYml0IGNoYXJhY3RlcnMgYW5kIGxvY2FsIHByaW50ZXIgc3VwcG9ydC4KLSMKLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDIgc2V0czoKLSMJXEVbMjsxOzE7MXYKLSMJCTI7MQktIDggYml0IG9wZXJhdGlvbnMKLSMJCTE7MQktIDggYml0IChpbnRlcm5hdGlvbmFsKSBrZXlib2FyZCBsYW5ndWFnZQotIwlcRShCCQktIGRlZmF1bHQgcHJpbWFyeSBjaGFyYWN0ZXIgc2V0IChVLlMuIEFTQ0lJKQotIwlcRSk0CQktIGRlZmF1bHQgc2Vjb25kYXJ5IGNoYXJhY3RlciBzZXQgKGludGVybmF0aW9uYWwpCi0jCV5PCQktIHByaW1hcnkgY2hhcmFjdGVyIHNldAotIwotZDIxMXxkMjE1fERhdGEgR2VuZXJhbCBEQVNIRVIgRDIxMSBzZXJpZXMsCi0Ja20sCi0JaXMyPVxFWzI7MTsxOzF2XEUoQlxFKTRcMDE3LCBtYzA9XEVbaSwgdXNlPWRna2V5cys4YiwKLQl1c2U9ZDIxMCwKLQotIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMiBzZXRzOgotIwlcRVsyOzA7MTswdgotIwkJMjswCS0gNyBiaXQgb3BlcmF0aW9ucwotIwkJMTswCS0gNyBiaXQgKG5hdGl2ZSkga2V5Ym9hcmQgbGFuZ3VhZ2UKLSMJXEUoMAkJLSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgKHRoZSBrZXlib2FyZCBuYXRpdmUgbGFuZ3VhZ2UpCi0jCV5PCQktIHByaW1hcnkgY2hhcmFjdGVyIHNldAotZDIxMS03YnxkMjE1LTdifERhdGEgR2VuZXJhbCBEQVNIRVIgRDIxMSBzZXJpZXMgaW4gNyBiaXQgbW9kZSwKLQlrbUAsCi0JaXMyPVxFWzI7MDsxOzB2XEUoMFwwMTcsIHVzZT1kZ2tleXMrN2IsIHVzZT1kMjExLAotCi0jIExpa2UgdGhlIEQyMTAgc2VyaWVzLCBidXQgYWRkcyBzdXBwb3J0IGZvciA4LWJpdCBjaGFyYWN0ZXJzLgotIwotIyBSZXNldCBzdHJpbmcgMiBzZXRzOgotIwleXk4JLSBzZWNvbmRhcnkgY2hhcmFjdGVyIHNldAotIwleXkZTMD4JLSA4IGJpdCBpbnRlcm5hdGlvbmFsIGNoYXJhY3RlciBzZXQKLSMJXl5PCS0gcHJpbWFyeSBjaGFyYWN0ZXIgc2V0Ci0jCV5eRlMwMAktIGRlZmF1bHQgY2hhcmFjdGVyIHNldCAobWF0Y2hpbmcgdGhlIG5hdGl2ZSBrZXlib2FyZCBsYW5ndWFnZSkKLSMKLWQyMTEtZGd8ZDIxNS1kZ3xEYXRhIEdlbmVyYWwgREFTSEVSIEQyMTEgc2VyaWVzIGluIERHIG1vZGUsCi0Ja20sCi0JcnMyPVwwMzZOXDAzNkZTMD5cMDM2T1wwMzZGUzAwLCB1c2U9ZDIxMC1kZywKLQotZDIxNi1kZ3xkMjE2ZS1kZ3xkMjE2K2RnfGQyMTZlK2RnfGQyMTctZGd8RGF0YSBHZW5lcmFsIERBU0hFUiBEMjE2IHNlcmllcyBpbiBERyBtb2RlLAotCXVzZT1kMjExLWRnLAotCi0jIEVuaGFuY2VkIERHIG1vZGUgd2l0aCBjaGFuZ2VzIHRvIGJlIG1vcmUgVU5JWCBjb21wYXRpYmxlLgotZDIxNi11bml4fGQyMTZlLXVuaXh8ZDIxNit8ZDIxNmUrfERhdGEgR2VuZXJhbCBEQVNIRVIgRDIxNisgaW4gREctVU5JWCBtb2RlLAotCW1jNWksCi0JaXQjOCwKLQlhY3NjPWFcMTc3aiRrImwhbSNuKXErdCd1JnYodyV4KiwgYmxpbms9Xl5QSSwKLQljbGVhcj1eXlBILCBjdWIxPV5eUEQsIGN1ZDE9Xl5QQiwgY3VmMT1eXlBDLCBjdXUxPV5eUEEsCi0JZWw9Xl5QRSwgaG9tZT1eXlBGLCBocGE9XDAyMCVwMSVjXDE3NywgaHQ9XkksIGluZD1eSiwKLQlpczE9XDAyMlwwMDNcMDM2UEAxLCBpczM9XDAzNkZ6MCwga0hPTT1eXlBmLCBrTEZUPV5eUGQsCi0Ja1BSVD1eXlAxLCBrUklUPV5eUGMsIGtjbHI9Xl5QSCwga2N1YjE9Xl5QRCwga2N1ZDE9Xl5QQiwKLQlrY3VmMT1eXlBDLCBrY3V1MT1eXlBBLCBrZWw9Xl5QRSwga2hvbWU9Xl5QRiwga3BydD1eXlAwLAotCW1jMD1cMDM2Rj85LCBtYzQ9Xl5GYSwgbWM1PV5eRmAsIHJtYWNzPVwwMzZGUzAwLAotCXJzMj1cMDM2TlwwMzZGUzBFXDAzNk9cMDM2RlMwMCwKLQlzZ3I9XDAzNiU/JXAxJXAzJXwlcDYlfCV0RCVlRSU7JT8lcDIlcDYlfCV0XDAyNCVlXDAyNSU7XDAzNlAlPyVwNCV0SSVlSiU7JT8lcDElcDUlfCV0XDAzNCVlXDAzNSU7XDAzNkZTJT8lcDkldDExJWUwMCU7LAotCXNncjA9XDAzNlBKXDAyNVwwMzVcMDM2RVwwMzZGUzAwLCBzbWFjcz1cMDM2RlMxMSwKLQl2cGE9XDAyMFwxNzclcDElYywgdXNlPWRna2V5cysxNSwgdXNlPWQyMTYtZGcsCi1kMjE2LXVuaXgtMjV8ZDIxNisyNXxEYXRhIEdlbmVyYWwgREFTSEVSIEQyMTYrIGluIERHLVVOSVggbW9kZSB3aXRoIDI1IGxpbmVzLAotCWxpbmVzIzI1LAotCWlzMz1cMDM2RnoyLCB1c2U9ZDIxNissCi0KLWQyMTctdW5peHxEYXRhIEdlbmVyYWwgREFTSEVSIEQyMTcgaW4gREctVU5JWCBtb2RlLAotCXVzZT1kMjE2LXVuaXgsCi1kMjE3LXVuaXgtMjV8RGF0YSBHZW5lcmFsIERBU0hFUiBEMjE3IGluIERHLVVOSVggbW9kZSB3aXRoIDI1IGxpbmVzLAotCXVzZT1kMjE2LXVuaXgtMjUsCi0KLSMgREFTSEVSIEQyMjAgY29sb3IgdGVybWluYWwgaW4gQU5TSSBtb2RlLgotIyBMaWtlIHRoZSBENDcwQyBidXQgd2l0aCBmZXdlciBjb2xvcnMgYW5kIHNjcmVlbiBlZGl0aW5nIGZlYXR1cmVzLgotIwotIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMSBzZXRzOgotIwlcRVs8MDs8MTs8NGwKLSMJCTwwCS0gc2Nyb2xsaW5nIGVuYWJsZWQKLSMJCTwxCS0gYmxpbmsgZW5hYmxlZAotIwkJPDQJLSBwcmludCBjaGFyYWN0ZXJzIHJlZ2FyZGxlc3Mgb2YgYXR0cmlidXRlcwotIwlcRVttCQktIGFsbCBhdHRyaWJ1dGVzIG9mZgotIyBSZXNldCBzdHJpbmcgMSBzZXRzOgotIwlcRWMJCS0gaW5pdGlhbCBtb2RlIGRlZmF1bHRzIChSSVMpCi0jCi1kMjIwfERhdGEgR2VuZXJhbCBEQVNIRVIgRDIyMCwKLQltYzVpQCwKLQlkbEAsIGRsMUAsIGlsQCwgaWwxQCwgaXMxPVxFWzwwOzwxOzw0bFxFW20sIG1jNEAsIG1jNUAsIHJzMT1cRWMsCi0JdXNlPWRnK2NvbG9yOCwgdXNlPWQ0NzBjLAotCi1kMjIwLTdifERhdGEgR2VuZXJhbCBEQVNIRVIgRDIyMCBpbiA3IGJpdCBtb2RlLAotCW1jNWlALAotCWRsQCwgZGwxQCwgaWxALCBpbDFALCBpczE9XEVbPDA7PDE7PDRsXEVbbSwgbWM0QCwgbWM1QCwgcnMxPVxFYywKLQl1c2U9ZGcrY29sb3I4LCB1c2U9ZDQ3MGMtN2IsCi0KLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDMgc2V0czoKLSMJLSBkZWZhdWx0IGN1cnNvciAoc29saWQgcmVjdGFuZ2xlKQotIyBSZXNldCBzdHJpbmcgMiBzZXRzOgotIwleXk4gICAgIC0gc2Vjb25kYXJ5IGNoYXJhY3RlciBzZXQKLSMJXl5GUzA+ICAtIDggYml0IGludGVybmF0aW9uYWwgY2hhcmFjdGVyIHNldAotIwleXk8gICAgIC0gcHJpbWFyeSBjaGFyYWN0ZXIgc2V0Ci0jICAgICAgIF5eRlMwMCAgLSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgKG1hdGNoaW5nIHRoZSBuYXRpdmUga2V5Ym9hcmQgbGFuZ3VhZ2UpCi0jCi1kMjIwLWRnfERhdGEgR2VuZXJhbCBEQVNIRVIgRDIyMCBjb2xvciB0ZXJtaW5hbCBpbiBERyBtb2RlLAotCW1jNWlALAotCWRsMUAsIGhvbWVALCBpbDFALCBpczJALCBpczM9XDAzNkZRMiwgbGxALCBtYzRALCBtYzVALCByczFALAotCXJzMj1cMDM2TlwwMzZGUzA+XDAzNk9cMDM2RlMwMCwgdXNlPWRnbW9kZStjb2xvcjgsCi0JdXNlPWQ0NzBjLWRnLAotCi0jIERBU0hFUiBEMjMwQyBjb2xvciB0ZXJtaW5hbCBpbiBBTlNJIG1vZGUuCi0jIExpa2UgdGhlIEQyMjAgYnV0IHdpdGggbWlub3IgQU5TSSBjb21wYXRpYmlsaXR5IGltcHJvdmVtZW50cy4KLSMKLWQyMzBjfGQyMzB8RGF0YSBHZW5lcmFsIERBU0hFUiBEMjMwQywKLQlibGluaz1cRVs1OzUwbSwgYm9sZD1cRVs0Ozc7NTBtLCBkaW09XEVbMjs1MG0sIG5lbD1eTV5KLAotCXJldj1cRVs3OzUwbSwgcm1reD1cRVsyOzF2LCBybXNvPVxFWzUwbSwgcm11bD1cRVs1MG0sCi0Jc2dyPVxFWzUwJT8lcDElcDMlfCVwNiV8JXQ7NyV7MX0lZSV7MH0lOyVQUiU/JXA0JXQ7NSV7MX0lZSV7MH0lOyVQQiU/JXAyJXA2JXwldDs0JXsxfSVlJXswfSU7JVBVJT8lcDElcDUlfCV0OzIlezF9JWUlezB9JTslUERtXEUpJT8lcDkldDZcMDE2JWU0XDAxNyU7LAotCXNncjA9XEVbNTBtXEUpNFwwMTcsIHNta3g9XEVbMjswdiwgc21zbz1cRVsyOzc7NTBtLAotCXNtdWw9XEVbNDs1MG0sIHVzZT1kZ2tleXMrN2IsIHVzZT1kMjIwLAotCi1kMjMwYy1kZ3xkMjMwLWRnfERhdGEgR2VuZXJhbCBEQVNIRVIgRDIzMEMgaW4gREcgbW9kZSwKLQl1c2U9ZDIyMC1kZywKLQotIyBEQVNIRVIgRDQwMC9ENDUwIHNlcmllcyB0ZXJtaW5hbHMuCi0jIFRoZXNlIGFkZCBpbnRlbGxpZ2VudCBmZWF0dXJlcyBsaWtlIGluc2VydC9kZWxldGUgdG8gdGhlIEQyMDAgc2VyaWVzLgotIwotIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMiBzZXRzOgotIwleXkZRMgkJLSBkZWZhdWx0IGN1cnNvciAoc29saWQgcmVjdGFuZ2xlKQotIwleXkZXCQktIGNoYXJhY3RlciBwcm90ZWN0aW9uIGRpc2FibGVkCi0jCV5eRkoJCS0gbm9ybWFsICg4MCBjb2x1bW4pIG1vZGUKLSMJXl5GXF4JCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZW5hYmxlZCAoZm9yIGFsaWdubWVudCkKLSMJXl5GWDAwND8JLSBtYXJnaW5zIGF0IGNvbHVtbnMgMCBhbmQgNzkKLSMJXl5GXQkJLSBob3Jpem9udGFsIHNjcm9sbGluZyBkaXNhYmxlZAotIwleXk8JCS0gcHJpbWFyeSBjaGFyYWN0ZXIgc2V0Ci0jCV5eRlMwMAkJLSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgKHRoZSBrZXlib2FyZCBuYXRpdmUgbGFuZ3VhZ2UpCi0jCS0gKHNob3VsZCByZXNldCBzY3JvbGxpbmcgcmVnaW9ucywgYnV0IHRoYXQgZ2xpdGNoZXMgdGhlIHNjcmVlbikKLSMgUmVzZXQgc3RyaW5nIDEgc2V0czoKLSMJXl5GQQkJLSBhbGwgdGVybWluYWwgZGVmYXVsdHMgZXhjZXB0IHNjcm9sbCByYXRlCi0jIFJlc2V0IHN0cmluZyAyIHNldHM6Ci0jCV5eRl0JCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZGlzYWJsZWQKLSMJXl5GVDAJCS0ganVtcCBzY3JvbGxpbmcKLSMKLWQ0MDB8ZDQwMC1kZ3xkNDUwfGQ0NTAtZGd8RGF0YSBHZW5lcmFsIERBU0hFUiBENDAwL0Q0NTAgc2VyaWVzLAotCW1jNWksCi0JYWNzYz1qJGsibCFtI24pcSt0J3Umdih3JXgqLCBjaXZpcz1cMDM2RlEwLAotCWNub3JtPVwwMzZGUTIsIGRjaDE9Xl5LLCBkbDE9Xl5GSSwKLQllbmFjcz1cMDM2TlwwMzZGUzExXDAzNk8sIGhvbWU9Xl5GRywgaHBhPVwwMjAlcDElY1wxNzcsCi0JaWNoMT1eXkosIGlsMT1eXkZILAotCWlzMj1cMDM2RlEyXDAzNkZXXDAzNkZKXDAzNkZcXlwwMzZGWDAwND9cMDM2Rl1cMDM2T1wwMzZGUzAwLAotCWxsPVwwMzZGR1wwMjcsIG1jND1eXkZhLCBtYzU9Xl5GYCwgcmk9Xl5JLCBybWFjcz1eXk8sCi0JcnMxPV5eRkEsIHJzMj1cMDM2Rl1cMDM2RlQwLAotCXNncj1cMDM2JT8lcDElcDMlfCVwNiV8JXREJWVFJTslPyVwMiVwNiV8JXRcMDI0JWVcMDI1JTslPyVwNCV0XDAxNiVlXDAxNyU7JT8lcDElcDUlfCV0XDAzNCVlXDAzNSU7XDAzNiU/JXA5JXROJWVPJTssCi0Jc2dyMD1cMDE3XDAyNVwwMzVcMDM2RVwwMzZPLCBzbWFjcz1eXk4sCi0JdnBhPVwwMjBcMTc3JXAxJWMsIHVzZT1kMjEwLWRnLAotCi0jIERBU0hFUiBENDEwL0Q0NjAgc2VyaWVzIHRlcm1pbmFscyBpbiBBTlNJIG1vZGUuCi0jIFRoZXNlIGFkZCBhIGxhcmdlIG51bWJlciBvZiBpbnRlbGxpZ2VudCB0ZXJtaW5hbCBmZWF0dXJlcy4KLSMKLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDEgc2V0czoKLSMJXEVbPDA7PDE7PDI7PDRsCi0jCQk8MAktIHNjcm9sbGluZyBlbmFibGVkCi0jCQk8MQktIGJsaW5rIGVuYWJsZWQKLSMJCTwyCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZW5hYmxlZCAoZm9yIGFsaWdubWVudCkKLSMJCTw0CS0gcHJpbnQgY2hhcmFjdGVycyByZWdhcmRsZXNzIG9mIGF0dHJpYnV0ZXMKLSMJXEVbNTswdgkJLSBub3JtYWwgKDgwIGNvbHVtbikgbW9kZQotIwlcRVsxOzE7ODB3CS0gbWFyZ2lucyBhdCBjb2x1bW5zIDEgYW5kIDgwCi0jCVxFWzE7Njs8MmgKLSMJCTEJLSBwcmludCBhbGwgY2hhcmFjdGVycyBldmVuIGlmIHByb3RlY3RlZAotIwkJNgktIGNoYXJhY3RlciBwcm90ZWN0aW9uIGRpc2FibGVkCi0jCQk8MgktIGhvcml6b250YWwgc2Nyb2xsaW5nIGRpc2FibGVkCi0jCS0gKHNob3VsZCByZXNldCBzY3JvbGxpbmcgcmVnaW9ucywgYnV0IHRoYXQgZ2xpdGNoZXMgdGhlIHNjcmVlbikKLSMKLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDIgc2V0czoKLSMJXEVbMzsyOzI7MTsxOzF2Ci0jCQkzOzIJLSBkZWZhdWx0IGN1cnNvciAoc29saWQgcmVjdGFuZ2xlKQotIwkJMjsxCS0gOCBiaXQgb3BlcmF0aW9ucwotIwkJMTsxCS0gaW50ZXJuYXRpb25hbCBrZXlib2FyZCBsYW5ndWFnZQotIwlcRShCCQktIGRlZmF1bHQgcHJpbWFyeSBjaGFyYWN0ZXIgc2V0IChVLlMuIEFTQ0lJKQotIwlcRSk0CQktIGRlZmF1bHQgc2Vjb25kYXJ5IGNoYXJhY3RlciBzZXQgKGludGVybmF0aW9uYWwpCi0jCV5PCQktIHByaW1hcnkgY2hhcmFjdGVyIHNldAotIwotIwlSZXNldCBzdHJpbmcgMSBzZXRzOgotIwlcRWMJCS0gaW5pdGlhbCBtb2RlIGRlZmF1bHRzIChSSVMpCi0jCVxFWzwyaAkJLSBob3Jpem9udGFsIHNjcm9sbGluZyBkaXNhYmxlZAotIwotIyBSZXNldCBzdHJpbmcgMiBzZXRzOgotIwlcRVs0OzA7MjsxOzE7MXYKLSMJCTQ7MAktIGp1bXAgc2Nyb2xsaW5nCi0jCQkyOzEJLSA4IGJpdCBvcGVyYXRpb25zCi0jCQkxOzEJLSA4IGJpdCAoaW50ZXJuYXRpb25hbCkga2V5Ym9hcmQgbGFuZ3VhZ2UKLSMJXEUoQgkJLSBkZWZhdWx0IHByaW1hcnkgY2hhcmFjdGVyIHNldCAoVS5TLiBBU0NJSSkKLSMJXEUpNAkJLSBkZWZhdWx0IHNlY29uZGFyeSBjaGFyYWN0ZXIgc2V0IChpbnRlcm5hdGlvbmFsKQotIwotZDQxMHxkNDExfGQ0NjB8ZDQ2MXxEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTAvRDQ2MCBzZXJpZXMsCi0JbWM1aSwKLQlhY3NjPWokayJsIW0jbilxK3QndSZ2KHcleCosIGNpdmlzPVxFWzM7MHYsCi0JY25vcm09XEVbMzsydiwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGljaD1cRVslcDElZEAsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwKLQlpczE9XEVbPDA7PDE7PDI7PDRsXEVbNTswdlxFWzE7MTs4MHdcRVsxOzY7PDJoLAotCWlzMj1cRVszOzI7MjsxOzE7MXZcRShCXEUpNFwwMTcsIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXJpPVxFTSwgcm1hY3M9XEUpNFwwMTcsIHJzMT1cRWNcRVs8MmgsCi0JcnMyPVxFWzQ7MDsyOzE7MTsxdlxFKEJcRSk0LAotCXNncj1cRVslPyVwMSVwMyV8JXA2JXwldDc7JTslPyVwNCV0NTslOyU/JXAyJXA2JXwldDQ7JTslPyVwMSVwNSV8JXQyOyU7bVxFKSU/JXA5JXQ2XDAxNiVlNFwwMTclOywKLQlzZ3IwPVxFW21cRSk0XDAxNywgc21hY3M9XEUpNlwwMTYsIHVzZT1kMjExLAotCi0jIEluaXRpYWxpemF0aW9uIHN0cmluZyAyIHNldHM6Ci0jCVxFWzM7MjsyOzA7MTswdgotIwkJMzsyCS0gZGVmYXVsdCBjdXJzb3IgKHNvbGlkIHJlY3RhbmdsZSkKLSMJCTI7MAktIDcgYml0IG9wZXJhdGlvbnMKLSMJCTE7MAktIDcgYml0IChuYXRpdmUpIGtleWJvYXJkIGxhbmd1YWdlCi0jCVxFKDAJCS0gZGVmYXVsdCBjaGFyYWN0ZXIgc2V0ICh0aGUga2V5Ym9hcmQgbmF0aXZlIGxhbmd1YWdlKQotIwleTwkJLSBwcmltYXJ5IGNoYXJhY3RlciBzZXQKLSMKLSMgUmVzZXQgc3RyaW5nIDIgc2V0czoKLSMJXEVbNDswOzI7MDsxOzB2Ci0jCQk0OzAJLSBqdW1wIHNjcm9sbGluZwotIwkJMjswCS0gNyBiaXQgb3BlcmF0aW9ucwotIwkJMTswCS0gNyBiaXQgKG5hdGl2ZSkga2V5Ym9hcmQgbGFuZ3VhZ2UKLSMJXEUoMAkJLSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgKHRoZSBrZXlib2FyZCBuYXRpdmUgbGFuZ3VhZ2UpCi0jCi1kNDEwLTdifGQ0MTEtN2J8ZDQ2MC03YnxkNDYxLTdifERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMC9ENDYwIHNlcmllcyBpbiA3IGJpdCBtb2RlLAotCWttQCwKLQllbmFjcz1cRSk2LCBpczI9XEVbMzsyOzI7MDsxOzB2XEUoMFwwMTcsIHJtYWNzPV5PLAotCXJzMj1cRVs0OzA7MjswOzE7MHZcRSgwLAotCXNncj1cRVslPyVwMSVwMyV8JXA2JXwldDc7JTslPyVwNCV0NTslOyU/JXAyJXA2JXwldDQ7JTslPyVwMSVwNSV8JXQyOyU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1cRVttXDAxNywgc21hY3M9Xk4sIHVzZT1kZ2tleXMrN2IsIHVzZT1kNDEwLAotCi1kNDEwLWRnfGQ0NjAtZGd8ZDQxMS1kZ3xkNDYxLWRnfERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMC9ENDYwIHNlcmllcyBpbiBERyBtb2RlLAotCWttLAotCWVuYWNzQCwgcm1hY3M9XDAzNkZTMDAsCi0Jc2dyPVwwMzYlPyVwMSVwMyV8JXA2JXwldEQlZUUlOyU/JXAyJXA2JXwldFwwMjQlZVwwMjUlOyU/JXA0JXRcMDE2JWVcMDE3JTslPyVwMSVwNSV8JXRcMDM0JWVcMDM1JTtcMDM2RlMlPyVwOSV0MTElZTAwJTssCi0Jc2dyMD1cMDE3XDAyNVwwMzVcMDM2RVwwMzZGUzAwLCBzbWFjcz1cMDM2RlMxMSwKLQl1c2U9ZDQwMC1kZywKLQotIyBEQVNIRVIgRDQxMC9ENDYwIHNlcmllcyB0ZXJtaW5hbHMgaW4gd2lkZSAoMTI2IGNvbHVtbnMpIEFOU0kgbW9kZS4KLSMKLSMgSW5pdGlhbGl6YXRpb24gc3RyaW5nIDEgc2V0czoKLSMJXEVbPDA7PDE7PDI7PDRsCi0jCQk8MAktIHNjcm9sbGluZyBlbmFibGVkCi0jCQk8MQktIGJsaW5rIGVuYWJsZWQKLSMJCTwyCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZW5hYmxlZCAoZm9yIGFsaWdubWVudCkKLSMJCTw0CS0gcHJpbnQgY2hhcmFjdGVycyByZWdhcmRsZXNzIG9mIGF0dHJpYnV0ZXMKLSMJXEVbNTsxdgkJLSBjb21wcmVzc2VkICgxMzUgY29sdW1uKSBtb2RlCi0jCVxFWzE7MTsxMjYJLSBtYXJnaW5zIGF0IGNvbHVtbnMgMSBhbmQgMTI2Ci0jCVxFWzE7Njs8MmgKLSMJCTEJLSBwcmludCBhbGwgY2hhcmFjdGVycyBldmVuIGlmIHByb3RlY3RlZAotIwkJNgktIGNoYXJhY3RlciBwcm90ZWN0aW9uIGRpc2FibGVkCi0jCQk8MgktIGhvcml6b250YWwgc2Nyb2xsaW5nIGRpc2FibGVkCi0jCS0gKHNob3VsZCByZXNldCBzY3JvbGxpbmcgcmVnaW9ucywgYnV0IHRoYXQgZ2xpdGNoZXMgdGhlIHNjcmVlbikKLSMKLSMgUmVzZXQgc3RyaW5nIDEgc2V0czoKLSMJXEVjCQktIGluaXRpYWwgbW9kZSBkZWZhdWx0cyAoUklTKQotIwlcRVs1OzF2CQktIGNvbXByZXNzZWQgKDEzNSBjb2x1bW4pIG1vZGUKLSMJXEVbMTsxOzEyNncJLSBtYXJnaW5zIGF0IGNvbHVtbnMgMSBhbmQgMTI2Ci0jCVxFWzwyaAkJLSBob3Jpem9udGFsIHNjcm9sbGluZyBkaXNhYmxlZAotIwotZDQxMC13fGQ0MTEtd3xkNDYwLXd8ZDQ2MS13fERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMC9ENDYwIHNlcmllcyBpbiB3aWRlIG1vZGUsCi0JY29scyMxMjYsCi0JaXMxPVxFWzwwOzwxOzwyOzw0bFxFWzU7MXZcRVsxOzE7MTI2d1xFWzE7Njs8MmgsCi0JcnMxPVxFY1xFWzU7MXZcRVsxOzE7MTI2d1xFWzwyaCwgdXNlPWQ0MTAsCi0KLWQ0MTAtN2Itd3xkNDExLTdiLXd8ZDQ2MC03Yi13fGQ0NjEtN2Itd3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTAvRDQ2MCBzZXJpZXMgaW4gd2lkZSA3IGJpdCBtb2RlLAotCWNvbHMjMTI2LAotCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVs1OzF2XEVbMTsxOzEyNndcRVsxOzY7PDJoLAotCXJzMT1cRWNcRVs1OzF2XEVbMTsxOzEyNndcRVs8MmgsIHVzZT1kNDEwLTdiLAotCi1kNDEyLWRnfGQ0NjItZGd8ZDQ2MmUtZGd8ZDQxMitkZ3xkNDYyK2RnfGQ0MTMtZGd8ZDQ2My1kZ3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTIvRDQ2MiBzZXJpZXMgaW4gREcgbW9kZSwKLQl1c2U9ZDQxMC1kZywKLQotIyBUaGVzZSBhZGQgaW50ZWxsaWdlbnQgZmVhdHVyZXMgbGlrZSBzY3JvbGxpbmcgcmVnaW9ucy4KLWQ0MTItdW5peHxkNDYyLXVuaXh8ZDQxMit8ZDQ2Mit8RGF0YSBHZW5lcmFsIERBU0hFUiBENDEyKy9ENDYyKyBzZXJpZXMgaW4gVW5peCBtb2RlLAotCWNpdmlzPVwwMzZGUTAsIGNsZWFyPV5eRkUsIGNub3JtPVwwMzZGUTUsCi0JY3VwPVwwMzZGUCVwMiUyLjJYJXAxJTIuMlgsIGRjaDE9Xl5LLCBkbDE9Xl5GSSwKLQlob21lPV5eRkcsIGhwYT1cMDM2RlAlcDElMi4yWEZGLCBpY2gxPV5eSiwgaWwxPV5eRkgsCi0JaXMyPVwwMzZGUTVcMDM2RldcMDM2RkpcMDM2RlxeXDAzNkZYMDA0RlwwMzZPXDAzNkZTMDAsCi0JbGw9XDAzNkZHXDAzNlBBLCBtYzA9XkEsIHJjPVwwMzZGfTExLCByaT1eXkksCi0JcnMxPVwwMzZGQVwwMzZGVDAsIHJzMj1cMDM2UEAxLCBzYz1cMDM2Rn0xMCwKLQl2cGE9XDAzNkZQRkYlcDElMi4yWCwKLQl3aW5kPVwwMzZGQiU/JXAxJXQlcDElMi4yWDAlOyVwMiVwMSUtJXsxfSUrJTIuMlgwJT8lezIzfSVwMiU+JXQwMDAlO1wwMzZGWCVwMyUyLjJYJXA0JTIuMlgsCi0JdXNlPWQyMTYrLAotZDQxMi11bml4LXd8ZDQ2Mi11bml4LXd8ZDQxMit3fGQ0NjIrd3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTIrL0Q0NjIrIHNlcmllcyBpbiB3aWRlIFVuaXggbW9kZSwKLQljb2xzIzEzMiwKLQlpczI9XDAzNkZRNVwwMzZGV1wwMzZGS1wwMzZGXF5cMDM2RlgwMDgzXDAzNk9cMDM2RlMwMCwKLQlyczI9XDAzNlBAMVwwMzZGS1wwMzZGWDAwODMsCi0Jd2luZD1cMDM2RkIlPyVwMSV0JXAxJTIuMlgxJTslcDIlcDElLSV7MX0lKyUyLjJYMSU/JXsyM30lcDIlPiV0MDAxJTtcMDM2RlglcDMlMi4yWCVwNCUyLjJYLAotCXVzZT1kNDEyLXVuaXgsCi1kNDEyLXVuaXgtMjV8ZDQ2Mi11bml4LTI1fGQ0MTIrMjV8ZDQ2MisyNXxEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTIrL0Q0NjIrIHNlcmllcyBpbiBVbml4IG1vZGUgd2l0aCAyNSBsaW5lcywKLQlsaW5lcyMyNSwKLQlpczM9XDAzNkZ6MiwKLQl3aW5kPVwwMzZGQiU/JXAxJXQlcDElMi4yWDAlOyVwMiVwMSUtJXsxfSUrJTIuMlgwJT8lezI0fSVwMiU+JXQwMDAlO1wwMzZGWCVwMyUyLjJYJXA0JTIuMlgsCi0JdXNlPWQ0NjIrLAotZDQxMi11bml4LXN8ZDQ2Mi11bml4LXN8ZDQxMitzfGQ0NjIrc3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTIrL0Q0NjIrIGluIFVuaXggbW9kZSB3aXRoIHN0YXR1cyBsaW5lLAotCWVzbG9rLCBocywKLQljbGVhcj1cMDM2RkdcMDM2UEgsIGZzbD1cMDM2Rn0wMVwwMjIsCi0JaXMzPVwwMzZGejJcMDM2Rn0wMFwwMzZGQjE4MDAwMFwwMzZGfTAxLCBsbEAsCi0JdHNsPVwwMzZGfTAwXDAzNkZQJXAxJTIuMlgxOFwwMzZQRywKLQl3aW5kPVwwMzZGQiU/JXAxJXQlcDElMi4yWDAlOyVwMiVwMSUtJXsxfSUrJTIuMlgwJT8lezIzfSVwMiU+JXQlezIzfSVwMiUtJTIuMlgwJTswMDBcMDM2RlglcDMlMi4yWCVwNCUyLjJYLAotCXVzZT1kNDYyKywKLQotIwlSZWxhdGl2ZSBjdXJzb3IgbW90aW9ucyBhcmUgY29uZmluZWQgdG8gdGhlIGN1cnJlbnQgd2luZG93LAotIwl3aGljaCBpcyBub3Qgd2hhdCB0aGUgc2Nyb2xsaW5nIHJlZ2lvbiBzcGVjaWZpY2F0aW9uIGV4cGVjdHMuCi0jCVRodXMsIHJlbGF0aXZlIHZlcnRpY2FsIGN1cnNvciBwb3NpdGlvbmluZyBtdXN0IGJlIGRlbGV0ZWQuCi1kNDEyLXVuaXgtc3J8ZDQ2Mi11bml4LXNyfGQ0MTIrc3J8ZDQ2MitzcnxEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTIrL0Q0NjIrIGluIFVuaXggbW9kZSB3aXRoIHNjcm9sbGluZyByZWdpb24sCi0JY3NyPVwwMzZGQiU/JXAxJXQlcDElMi4yWDAlOyVwMiVwMSUtJXsxfSUrJTIuMlgwJT8lezIzfSVwMiU+JXQwMDAlOywKLQljdWQxQCwgY3V1MUAsIGxsQCwgdXNlPWQ0NjIrLAotCi1kNDEzLXVuaXh8ZDQ2My11bml4fERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMy9ENDYzIHNlcmllcyBpbiBERy1VTklYIG1vZGUsCi0JdXNlPWQ0MTItdW5peCwKLWQ0MTMtdW5peC13fGQ0NjMtdW5peC13fERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMy9ENDYzIHNlcmllcyBpbiB3aWRlIERHLVVOSVggbW9kZSwKLQl1c2U9ZDQxMi11bml4LXcsCi1kNDEzLXVuaXgtMjV8ZDQ2My11bml4LTI1fERhdGEgR2VuZXJhbCBEQVNIRVIgRDQxMy9ENDYzIHNlcmllcyBpbiBERy1VTklYIG1vZGUgd2l0aCAyNSBsaW5lcywKLQl1c2U9ZDQxMi11bml4LTI1LAotZDQxMy11bml4LXN8ZDQ2My11bml4LXN8RGF0YSBHZW5lcmFsIERBU0hFUiBENDEzL0Q0NjMgaW4gREctVU5JWCBtb2RlIHdpdGggc3RhdHVzIGxpbmUsCi0JdXNlPWQ0MTItdW5peC1zLAotZDQxMy11bml4LXNyfGQ0NjMtdW5peC1zcnxEYXRhIEdlbmVyYWwgREFTSEVSIEQ0MTMvRDQ2MyBpbiBERy1VTklYIG1vZGUgd2l0aCBzY3JvbGxpbmcgcmVnaW9uLAotCXVzZT1kNDEyLXVuaXgtc3IsCi0KLWQ0MTQtdW5peHxkNDY0LXVuaXh8RGF0YSBHZW5lcmFsIEQ0MTQvRDQ2NCBpbiBERy1VTklYIG1vZGUsCi0JdXNlPWQ0MTMtdW5peCwKLWQ0MTQtdW5peC13fGQ0NjQtdW5peC13fERhdGEgR2VuZXJhbCBENDE0L0Q0NjQgaW4gd2lkZSBERy1VTklYIG1vZGUsCi0JdXNlPWQ0MTMtdW5peC13LAotZDQxNC11bml4LTI1fGQ0NjQtdW5peC0yNXxEYXRhIEdlbmVyYWwgRDQxNC9ENDY0IGluIERHLVVOSVggbW9kZSB3aXRoIDI1IGxpbmVzLAotCXVzZT1kNDEzLXVuaXgtMjUsCi1kNDE0LXVuaXgtc3xkNDY0LXVuaXgtc3xEYXRhIEdlbmVyYWwgRDQxNC9ENDY0IGluIERHLVVOSVggbW9kZSB3aXRoIHN0YXR1cyBsaW5lLAotCXVzZT1kNDEzLXVuaXgtcywKLWQ0MTQtdW5peC1zcnxkNDY0LXVuaXgtc3J8RGF0YSBHZW5lcmFsIEQ0MTQvRDQ2NCBpbiBERy1VTklYIG1vZGUgd2l0aCBzY3JvbGxpbmcgcmVnaW9uLAotCXVzZT1kNDEzLXVuaXgtc3IsCi0KLWQ0MzBjLWRnfGQ0MzAtZGd8RGF0YSBHZW5lcmFsIEQ0MzBDIGluIERHIG1vZGUsCi0JdXNlPWQ0MTMtZGcsIHVzZT1kZytmaXhlZCwKLWQ0MzBjLWRnLWNjY3xkNDMwLWRnLWNjY3xEYXRhIEdlbmVyYWwgRDQzMEMgaW4gREcgbW9kZSB3aXRoIGNvbmZpZ3VyYWJsZSBjb2xvcnMsCi0JdXNlPWQ0MTMtZGcsIHVzZT1kZytjY2MsCi0KLWQ0MzBjLXVuaXh8ZDQzMC11bml4fERhdGEgR2VuZXJhbCBENDMwQyBpbiBERy1VTklYIG1vZGUsCi0JdXNlPWQ0MTMtdW5peCwgdXNlPWRndW5peCtmaXhlZCwKLWQ0MzBjLXVuaXgtd3xkNDMwLXVuaXgtd3xEYXRhIEdlbmVyYWwgRDQzMEMgaW4gd2lkZSBERy1VTklYIG1vZGUsCi0JdXNlPWQ0MTMtdW5peC13LCB1c2U9ZGd1bml4K2ZpeGVkLAotZDQzMGMtdW5peC0yNXxkNDMwLXVuaXgtMjV8RGF0YSBHZW5lcmFsIEQ0MzBDIGluIERHLVVOSVggbW9kZSB3aXRoIDI1IGxpbmVzLAotCXVzZT1kNDEzLXVuaXgtMjUsIHVzZT1kZ3VuaXgrZml4ZWQsCi1kNDMwYy11bml4LXN8ZDQzMC11bml4LXN8RGF0YSBHZW5lcmFsIEQ0MzBDIGluIERHLVVOSVggbW9kZSB3aXRoIHN0YXR1cyBsaW5lLAotCXVzZT1kNDEzLXVuaXgtcywgdXNlPWRndW5peCtmaXhlZCwKLWQ0MzBjLXVuaXgtc3J8ZDQzMC11bml4LXNyfERhdGEgR2VuZXJhbCBENDMwQyBpbiBERy1VTklYIG1vZGUgd2l0aCBzY3JvbGxpbmcgcmVnaW9uLAotCXVzZT1kNDEzLXVuaXgtc3IsIHVzZT1kZ3VuaXgrZml4ZWQsCi1kNDMwYy11bml4LWNjY3xkNDMwLXVuaXgtY2NjfERhdGEgR2VuZXJhbCBENDMwQyBpbiBERy1VTklYIG1vZGUgd2l0aCBjb25maWd1cmFibGUgY29sb3JzLAotCXVzZT1kNDEzLXVuaXgsIHVzZT1kZ3VuaXgrY2NjLAotZDQzMGMtdW5peC13LWNjY3xkNDMwLXVuaXgtdy1jY2N8RGF0YSBHZW5lcmFsIEQ0MzBDIGluIHdpZGUgREctVU5JWCBtb2RlIHdpdGggY29uZmlndXJhYmxlIGNvbG9ycywKLQl1c2U9ZDQxMy11bml4LXcsIHVzZT1kZ3VuaXgrY2NjLAotZDQzMGMtdW5peC0yNS1jY2N8ZDQzMC11bml4LTI1LWNjY3xEYXRhIEdlbmVyYWwgRDQzMEMgaW4gREctVU5JWCBtb2RlIHdpdGggMjUgbGluZXMgYW5kIGNvbmZpZ3VyYWJsZSBjb2xvcnMsCi0JdXNlPWQ0MTMtdW5peC0yNSwgdXNlPWRndW5peCtjY2MsCi1kNDMwYy11bml4LXMtY2NjfGQ0MzAtdW5peC1zLWNjY3xEYXRhIEdlbmVyYWwgRDQzMEMgaW4gREctVU5JWCBtb2RlIHdpdGggc3RhdHVzIGxpbmUgYW5kIGNvbmZpZ3VyYWJsZSBjb2xvcnMsCi0JdXNlPWQ0MTMtdW5peC1zLCB1c2U9ZGd1bml4K2NjYywKLWQ0MzBjLXVuaXgtc3ItY2NjfGQ0MzAtdW5peC1zci1jY2N8RGF0YSBHZW5lcmFsIEQ0MzBDIGluIERHLVVOSVggbW9kZSB3aXRoIHNjcm9sbGluZyByZWdpb24gYW5kIGNvbmZpZ3VyYWJsZSBjb2xvcnMsCi0JdXNlPWQ0MTMtdW5peC1zciwgdXNlPWRndW5peCtjY2MsCi0KLSMgREFTSEVSIEQ0NzBDIGNvbG9yIHRlcm1pbmFsIGluIEFOU0kgbW9kZS4KLSMgTGlrZSB0aGUgRDQ2MCBidXQgd2l0aCAxNiBjb2xvcnMgYW5kIHdpdGhvdXQgYSBjb21wcmVzc2VkIG1vZGUuCi0jCi0jIEluaXRpYWxpemF0aW9uIHN0cmluZyAxIHNldHM6Ci0jCVxFWzwwOzwxOzwyOzw0bAotIwkJPDAJLSBzY3JvbGxpbmcgZW5hYmxlZAotIwkJPDEJLSBibGluayBlbmFibGVkCi0jCQk8MgktIGhvcml6b250YWwgc2Nyb2xsaW5nIGVuYWJsZWQgKGZvciBhbGlnbm1lbnQpCi0jCQk8NAktIHByaW50IGNoYXJhY3RlcnMgcmVnYXJkbGVzcyBvZiBhdHRyaWJ1dGVzCi0jCVxFWzE7MTs4MHcJLSBtYXJnaW5zIGF0IGNvbHVtbnMgMSBhbmQgODAKLSMJXEVbMTs2OzwyaAotIwkJMQktIHByaW50IGFsbCBjaGFyYWN0ZXJzIGV2ZW4gaWYgcHJvdGVjdGVkCi0jCQk2CS0gY2hhcmFjdGVyIHByb3RlY3Rpb24gZGlzYWJsZWQKLSMJCTwyCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZGlzYWJsZWQKLSMJLSAoc2hvdWxkIHJlc2V0IHNjcm9sbGluZyByZWdpb25zLCBidXQgdGhhdCBnbGl0Y2hlcyB0aGUgc2NyZWVuKQotIwotZDQ3MGN8ZDQ3MHxEYXRhIEdlbmVyYWwgREFTSEVSIEQ0NzBDLAotCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVsxOzE7ODB3XEVbMTs2OzwyaCwKLQlzZ3I9XEVbJT8lcDElcDMlfCVwNiV8JXQ3OyV7MX0lZSV7MH0lOyVQUiU/JXA0JXQ1OyV7MX0lZSV7MH0lOyVQQiU/JXAyJXA2JXwldDQ7JXsxfSVlJXswfSU7JVBVJT8lcDElcDUlfCV0MjslezF9JWUlezB9JTslUERtXEUpJT8lcDkldDZcMDE2JWU0XDAxNyU7LAotCXVzZT1kZytjb2xvciwgdXNlPWQ0NjAsCi0KLWQ0NzBjLTdifGQ0NzAtN2J8RGF0YSBHZW5lcmFsIERBU0hFUiBENDcwQyBpbiA3IGJpdCBtb2RlLAotCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVsxOzE7ODB3XEVbMTs2OzwyaCwKLQlzZ3I9XEVbJT8lcDElcDMlfCVwNiV8JXQ3OyV7MX0lZSV7MH0lOyVQUiU/JXA0JXQ1OyV7MX0lZSV7MH0lOyVQQiU/JXAyJXA2JXwldDQ7JXsxfSVlJXswfSU7JVBVJT8lcDElcDUlfCV0MjslezF9JWUlezB9JTslUERtJT8lcDkldFwwMTYlZVwwMTclOywKLQl1c2U9ZGcrY29sb3IsIHVzZT1kNDYwLTdiLAotCi0jIEluaXRpYWxpemF0aW9uIHN0cmluZyAyIHNldHM6Ci0jCV5eRlEyCQktIGRlZmF1bHQgY3Vyc29yIChzb2xpZCByZWN0YW5nbGUpCi0jCV5eRlcJCS0gY2hhcmFjdGVyIHByb3RlY3Rpb24gZGlzYWJsZWQKLSMJXl5GXF4JCS0gaG9yaXpvbnRhbCBzY3JvbGxpbmcgZW5hYmxlZCAoZm9yIGFsaWdubWVudCkKLSMJXl5GWDAwND8JLSBtYXJnaW5zIGF0IGNvbHVtbnMgMCBhbmQgNzkKLSMJXl5GXQkJLSBob3Jpem9udGFsIHNjcm9sbGluZyBkaXNhYmxlZAotIwleXk8JCS0gcHJpbWFyeSBjaGFyYWN0ZXIgc2V0Ci0jCV5eRlMwMAkJLSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgKHRoZSBrZXlib2FyZCBuYXRpdmUgbGFuZ3VhZ2UpCi0jCS0gKHNob3VsZCByZXNldCBzY3JvbGxpbmcgcmVnaW9ucywgYnV0IHRoYXQgZ2xpdGNoZXMgdGhlIHNjcmVlbikKLSMKLWQ0NzBjLWRnfGQ0NzAtZGd8RGF0YSBHZW5lcmFsIERBU0hFUiBENDcwQyBpbiBERyBtb2RlLAotCWlzMj1cMDM2RlEyXDAzNkZXXDAzNkZcXlwwMzZGWDAwND9cMDM2Rl1cMDM2T1wwMzZGUzAwLAotCXVzZT1kZ21vZGUrY29sb3IsIHVzZT1kNDYwLWRnLAotCi0jIERBU0hFUiBENTU1IHRlcm1pbmFsIGluIEFOU0kgbW9kZS4KLSMgTGlrZSBhIEQ0MTEsIGJ1dCBoYXMgYW4gaW50ZWdyYXRlZCBwaG9uZS4KLWQ1NTV8RGF0YSBHZW5lcmFsIERBU0hFUiBENTU1LAotCXVzZT1kNDExLAotZDU1NS03YnxEYXRhIEdlbmVyYWwgREFTSEVSIEQ1NTUgaW4gNy1iaXQgbW9kZSwKLQl1c2U9ZDQxMS03YiwKLWQ1NTUtd3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ1NTUgaW4gd2lkZSBtb2RlLAotCXVzZT1kNDExLXcsCi1kNTU1LTdiLXd8RGF0YSBHZW5lcmFsIERBU0hFUiBENTU1IGluIHdpZGUgNy1iaXQgbW9kZSwKLQl1c2U9ZDQxMS03Yi13LAotZDU1NS1kZ3xEYXRhIEdlbmVyYWwgREFTSEVSIEQ1NTUgc2VyaWVzIGluIERHIG1vZGUsCi0JdXNlPWQ0MTEtZGcsCi0KLSMgREFTSEVSIEQ1NzcgdGVybWluYWwgaW4gQU5TSSBtb2RlLgotIyBMaWtlIGEgRDQxMSwgYnV0IGFjdHMgYXMgYSBrZXlib2FyZCBmb3Igc2VyaWFsIHByaW50ZXJzICgiS1NSIiBtb2RlcykuCi1kNTc3fERhdGEgR2VuZXJhbCBEQVNIRVIgRDU3NywKLQl1c2U9ZDQxMSwKLWQ1NzctN2J8RGF0YSBHZW5lcmFsIERBU0hFUiBENTc3IGluIDctYml0IG1vZGUsCi0JdXNlPWQ0MTEtN2IsCi1kNTc3LXd8RGF0YSBHZW5lcmFsIERBU0hFUiBENTc3IGluIHdpZGUgbW9kZSwKLQl1c2U9ZDQxMS13LAotZDU3Ny03Yi13fERhdGEgR2VuZXJhbCBEQVNIRVIgRDU3NyBpbiB3aWRlIDctYml0IG1vZGUsCi0JdXNlPWQ0MTEtN2ItdywKLQotZDU3Ny1kZ3xkNTc4LWRnfERhdGEgR2VuZXJhbCBEQVNIRVIgRDU3Ny9ENTc4IHNlcmllcyBpbiBERyBtb2RlLAotCXVzZT1kNDExLWRnLAotCi0jIERBU0hFUiBENTc4IHRlcm1pbmFsLgotIyBMaWtlIGEgRDU3NywgYnV0IHdpdGhvdXQgY29tcHJlc3NlZCBtb2RlOyBsaWtlIGEgRDQ3MEMgaW4gdGhpcyByZXNwZWN0LgotIwotIyBJbml0aWFsaXphdGlvbiBzdHJpbmcgMSBzZXRzOgotIwlcRVs8MDs8MTs8Mjs8NGwKLSMJCTwwCS0gc2Nyb2xsaW5nIGVuYWJsZWQKLSMJCTwxCS0gYmxpbmsgZW5hYmxlZAotIwkJPDIJLSBob3Jpem9udGFsIHNjcm9sbGluZyBlbmFibGVkIChmb3IgYWxpZ25tZW50KQotIwkJPDQJLSBwcmludCBjaGFyYWN0ZXJzIHJlZ2FyZGxlc3Mgb2YgYXR0cmlidXRlcwotIwlcRVsxOzE7ODB3CS0gbWFyZ2lucyBhdCBjb2x1bW5zIDEgYW5kIDgwCi0jCVxFWzE7Njs8MmgKLSMJCTEJLSBwcmludCBhbGwgY2hhcmFjdGVycyBldmVuIGlmIHByb3RlY3RlZAotIwkJNgktIGNoYXJhY3RlciBwcm90ZWN0aW9uIGRpc2FibGVkCi0jCQk8MgktIGhvcml6b250YWwgc2Nyb2xsaW5nIGRpc2FibGVkCi0jCS0gKHNob3VsZCByZXNldCBzY3JvbGxpbmcgcmVnaW9ucywgYnV0IHRoYXQgZ2xpdGNoZXMgdGhlIHNjcmVlbikKLSMKLWQ1Nzh8RGF0YSBHZW5lcmFsIERBU0hFUiBENTc4LAotCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVsxOzE7ODB3XEVbMTs2OzwyaCwgdXNlPWQ1NzcsCi1kNTc4LTdifERhdGEgR2VuZXJhbCBEQVNIRVIgRDU3OCBpbiA3LWJpdCBtb2RlLAotCWlzMT1cRVs8MDs8MTs8Mjs8NGxcRVsxOzE7ODB3XEVbMTs2OzwyaCwgdXNlPWQ1NzctN2IsCi0KLSMjIyMgRGF0YW1lZGlhIChkbSkKLSMKLSMgRGF0YW1lZGlhIHdhcyBoZWFkcXVhcnRlcmVkIGluIE5hc2h1YSwgTmV3IEhhbXBzaGlyZSB1bnRpbCBpdCB3ZW50Ci0jIG91dCBvZiBidXNpbmVzcyBpbiAxOTkzLCBidXQgdGhlIElEIHBsYXRlcyBvbiB0aGUgdGVybWluYWxzIHJlZmVycmVkCi0jIHRvIHRoZSBmYWN0b3J5IGluIFBlbm5zYXVrZW4sIE5KLiAgVGhlIGZhY3Rvcnkgd2FzIHNvbGQgdG8gYSBQQ0IgYm9hcmQKLSMgbWFudWZhY3R1cmVyIHdoaWNoIHRocmV3IG91dCBhbGwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlcm1pbmFscy4KLSMKLQotY3MxMHxjb2xvcnNjYW58RGF0YW1lZGlhIENvbG9yIFNjYW4gMTAsCi0JbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSUwMmQ7JXAyJTAyZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwgZWw9XEVbSywKLQlpbmQ9XkosIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLWNzMTAtd3xEYXRhbWVkaWEgQ29sb3IgU2NhbiAxMCB3aXRoIDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLAotCWN1cD1cRVslaSVwMSUwMmQ7JXAyJTAzZEgsIHVzZT1jczEwLAotCi0jIChkbTE1MjA6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eXCBeX15QXllIOiIgLS0gZXNyKQotZG0xNTIwfGRtMTUyMXxkYXRhbWVkaWEgMTUyMCwKLQlPVGJzLCBhbSwgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eXCwKLQljdXA9XDAzNiVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1eXywgZWQ9XkssIGVsPV5dLAotCWhvbWU9XlksIGh0PV5JLCBpbmQ9XkosIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XlwsIGtjdXUxPV5fLAotCWtob21lPV5ZLAotIyBkbTI1MDA6IHRoaXMgdGVybWluYWwgaGFzIGJvdGggPGljaD4gYW5kIDxzbWlyPi4gQXBwbGljYXRpb25zIHVzaW5nCi0jIHRlcm1jYXAvdGVybWluZm8gZGlyZWN0bHkgKHJhdGhlciB0aGFuIHRocm91Z2ggbmN1cnNlcykgbWlnaHQgYmUgY29uZnVzZWQuCi1kbTI1MDB8ZGF0YW1lZGlhMjUwMHxkYXRhbWVkaWEgMjUwMCwKLQlPVGJzLCBPVG5jLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9Xl5eXlwxNzcsIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlwsCi0JY3VwPVwwMTQlcDIlezk2fSVeJWMlcDElezk2fSVeJWMsIGN1dTE9XlosCi0JZGNoMT1cMDIwXDAxMFwwMzBcMDM1JDwxMCo+LAotCWRsMT1cMDIwXDAzMlwwMzBcMDM1JDwxMCo+LCBlbD1eVywgaG9tZT1eQiwKLQlpY2gxPVwwMjBcMDM0XDAzMFwwMzUkPDEwKj4sCi0JaWwxPVwwMjBcblwwMzBcMDM1XDAzMFwwMzUkPDE1PiwgaW5kPV5KLCBwYWQ9XDM3NywKLQlybWRjPV5YXl0sIHJtaXI9XDM3N1wzNzdcMDMwXDAzNSQ8MTA+LCBybXNvPV5YXl0sCi0Jc21kYz1eUCwgc21pcj1eUCwgc21zbz1eTiwKLSMgZG1jaGF0IGlzIGxpa2UgRE0yNTAwLCBidXQgRE9FUyBuZWVkICJhbGwgdGhhdCBwYWRkaW5nIiAoamNtIDEvMzEvODIpCi0jIGFsc28sIGhhcyBhIG1ldGEta2V5LgotIyBGcm9tOiA8Z29sZGJlcmdlckBzdS1jc2xpLmFycGE+Ci0jIChkbWNoYXQ6ICI6TVQ6IiBjaGFuZ2VkIHRvICI6a206IiAtLSBlc3IpCi1kbWNoYXR8ZG1jaGF0IHZlcnNpb24gb2YgZGF0YW1lZGlhIDI1MDAsCi0Ja20sCi0JZGwxPVwwMjBcMDMyXDAzMFwwMzUkPDIvPiwKLQlpbDE9XDAyMFxuXDAzMFwwMzVcMDMwXDAzNSQ8MSovPiwgdXNlPWRtMjUwMCwKLSMgKGRtMzAyNTogIjpNVDoiIGNoYW5nZWQgdG8gIjprbToiIC0tIGVzcikKLWRtMzAyNXxkYXRhbWVkaWEgMzAyNWEsCi0JT1Ricywga20sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRU0kPDI+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1cRUEsCi0JZGNoMT1cMDEwJDw2PiwgZGwxPVxFUFxFQVxFUSQ8MTMwPiwgZWQ9XEVKJDwyPiwgZWw9XEVLLAotCWhvbWU9XEVILCBodD1eSSwgaWwxPVxFUFxuXEVRJDwxMzA+LCBpbmQ9XkosIGlwPSQ8Nj4sCi0JaXMyPVxFUVxFVVxFViwgcm1kYz1cRVEsIHJtaXI9XEVRLCBybXNvPVxFTzAsIHNtZGM9XEVQLAotCXNtaXI9XEVQLCBzbXNvPVxFTzEsCi1kbTMwNDV8ZGF0YW1lZGlhIDMwNDVhLAotCU9UYnMsIGFtLCBlbywga21ALCB1bCwgeGVubCwKLQlkY2gxPVxFQiQ8Nj4sIGRsMUAsIGlsMUAsIGlzMj1cRVVcRVYsIGtjdWYxPVxFQywga2N1dTE9XEVBLAotCWtmMD1cRXlcciwga2YxPVxFcFxyLCBrZjI9XEVxXHIsIGtmMz1cRXJcciwga2Y0PVxFc1xyLAotCWtmNT1cRXRcciwga2Y2PVxFdVxyLCBrZjc9XEV2XHIsIGtmOD1cRXdcciwga2Y5PVxFeFxyLAotCWtob21lPVxFSCwgcGFkPVwxNzcsIHJtZGNALCBybWlyPVxFUCwgcm1zb0AsIHNtZGNALCBzbXNvQCwKLQl1c2U9ZG0zMDI1LAotIyBEYXRhbWVkaWEgRFQ4MCBzb2Z0IHN3aXRjaGVzOgotIyAxCTA9SnVtcCAgMT1TbW9vdGgKLSMgCUF1dG9yZXBlYXQgCTA9b2ZmICAxPW9uCi0jIAlTY3JlZW4JCTA9RGFyayAxPWxpZ2h0Ci0jIAlDdXJzb3IJCTA9dS9sICAxPWJsb2NrCi0jCi0jIDIJTWFyZ2luIEJlbGwJMD1vZmYgIDE9b24KLSMgCUtleWNsaWNrCTA9b2ZmICAxPW9uCi0jIAlBbnNpL1ZUNTIJMD1WVDUyIDE9QW5zaQotIyAJWG9uL1hvZmYJMD1PZmYgIDE9T24KLSMKLSMgMwlTaGlmdDMJCTA9SGFzaCAxPVVLIFBvdW5kCi0jIAlXcmFwCQkwPU9mZiAgMT1PbgotIyAJTmV3bGluZQkJMD1PZmYgIDE9T24KLSMgCUludGVybGFjZQkwPU9mZiAgMT1PbgotIwotIyA0CVBhcml0eQkJMD1PZGQgIDE9RXZlbgotIyAJUGFyaXR5CQkwPU9mZiAgMT1PbgotIyAJQml0cy9DaGFyCTA9NyAgICAxPTgKLSMgCVBvd2VyCQkwPTYwSHogMT01MEh6Ci0jCi0jIDUJTGluZSBJbnRlcmZhY2UgIDA9RUlBICAxPUxvb3AKLSMgCUF1eCBJbnRlcmZhY2UgICAwPUVJQSAgMT1Mb29wCi0jIAlMb2NhbCBDb3B5ICAgIAkwPU9mZiAgMT1PbgotIyAJU3BhcmUKLSMKLSMgNglBdXggUGFyaXR5CTA9T2RkICAxPUV2ZW4KLSMgCUF1eCBQYXJpdHkJMD1PZmYgIDE9T24KLSMgCUF1eCBCaXRzL0NoYXIgICAwPTcgICAgMT04Ci0jIAlDUlQgU2F2ZXIJMD1PZmYgIDE9T24KLSMgZG04MC8xIGlzIGEgdnQxMDAgbG9va2FsaWtlLCBidXQgaXQgZG9lc24ndCBzZWVtIHRvIG5lZWQgYW55IHBhZGRpbmcuCi1kbTgwfGRtZHQ4MHxkdDgwfGRhdGFtZWRpYSBkdDgwLzEsCi0JY2xlYXI9XEVbMkpcRVtILCBjdWQxPV5KLCBjdWYxPVxFW0MsCi0JY3VwPSVpXEVbJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVkPVxFW0osIGVsPVxFW0ssCi0JaG9tZT1cRVtILCBtYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLCByaT1cRU0sCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl1c2U9dnQxMDAsCi0jIGV4Y2VwdCBpbiAxMzIgY29sdW1uIG1vZGUsIHdoZXJlIGl0IG5lZWRzIGEgbGl0dGxlIHBhZGRpbmcuCi0jIFRoaXMgaXMgc3RpbGwgbGVzcyBwYWRkaW5nIHRoYW4gdGhlIHZ0MTAwLCBhbmQgeW91IGNhbiBhbHdheXMgdHVybiBvbgotIyB0aGUgXlMvXlEgaGFuZHNoYWtpbmcsIHNvIHlvdSBjYW4gdXNlIHZ0MTAwIGZsYXZvcnMgZm9yIHRoaW5ncyBsaWtlCi0jIHJldmVyc2UgdmlkZW8uCi1kbTgwd3xkbWR0ODB3fGR0ODB3fGRhdGFtZWRpYSBkdDgwLzEgaW4gMTMyIGNoYXIgbW9kZSwKLQljb2xzIzEzMiwKLQljbGVhcj1cRVtIXEVbMkokPDUwLz4sIGN1ZDE9XkosCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDw1Lz4sIGN1dTE9XEVbQSQ8NS8+LAotCWVkPVxFWzBKJDwyMC8+LCBlbD1cRVswSyQ8MjAvPiwgdXNlPWRtODAsCi0jIEZyb206IEFkYW0gVGhvbXBzb24gPGF0aG9tcHNvQHBhbmdlYS5jYT4gU2VwdCAxMCAxOTk1Ci1kdDgwLXNhc3xEYXRhbWVkaWEgRFQ4MDMvRFRYIGZvciBTQVMgdXNhZ2UsCi0JYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWFjc2M9YGBhMWZ4Z3FoMGpZaz9sWm1AbkVvb3BwcURycnNzdEN1NHZBd0J4M3l5enp7e3x8fX1+fiwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwKLQljc3I9XEU9JXAxJXszMn0lKyVjJXszMn0lY1xFIzFcRT0lcDIlezMyfSUrJWMlezMyfSVjXEUjMiwKLQljdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1eXCwKLQljdXA9XEU9JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5fLCBkbDE9XEVNLCBlZD1eSywKLQllbD1eXSwgZmY9XkwsIGhvbWU9XlksIGh0PV5JLCBodHM9XEUnMSwgaWwxPVxFTCwgaW5kPVxFQiwKLQlpczI9XEUpMFxFPFxFUFxFJzBcRSQyLCBrY2xyPV5MLCBrY3ViMT1eSCwga2N1ZDE9XkosCi0Ja2N1ZjE9XlwsIGtjdXUxPV5fLCBrZWQ9XkssIGtlbD1eXSwga2hvbWU9XlksIG1jND1eTywgbWM1PV5OLAotCXJldj1cRSQyXDAwNCwgcmk9XEVJLCBybWFjcz1cRUcsIHJtc289XlgsIHNncjA9XlgsIHNtYWNzPVxFRiwKLQlzbXNvPVxFJDJcMDA0LCB0YmM9XEUnMCwKLQotIyBEYXRhbWVkaWEgRXhjZWwgNjIsIDY0IGZyb20gR291bGQvU0VMIFVUWC8zMiB2aWEgQlJMCi0jIFRoZXNlIGFyZW4ndCBlbmQtYWxsIEV4Y2VsIHRlcm1jYXBzOyBidXQgZG8gaW5zZXJ0L2RlbGV0ZSBjaGFyL2xpbmUKLSMgYW5kIG5hbWUgc29tZSBvZiB0aGUgZXh0cmEgZnVuY3Rpb24ga2V5cy4gIChNaWtlIEZlbGRtYW4gY2N2YXhhIWZlbGRtYW4pCi0jIFRoZSBuYW1pbmcgY29udmVudGlvbiBoYXMgYmVlbiBiZW50IHNvbWV3aGF0LCB3aXRoIHRoZSB1c2Ugb2YgRT8gKHdoZXJlCi0jIEUgaXMgZm9yICdFeGNlbCcpIGFzICMgYSBuYW1lLiAgVGhpcyB3YXMgZG9uZSB0byBkaXN0aW5ndWlzaCB0aGUgZW50cmllcwotIyBmcm9tIHRoZSBvdGhlciBEYXRhbWVkaWFzIGluIHVzZSBoZXJlLCBhbmQgeWV0IHRvIGFzc29jaWF0ZSBhIG1vZGVsIG9mCi0jIHRoZSBFeGNlbCB0ZXJtaW5hbHMgd2l0aCB0aGUgcmVndWxhciBkYXRhbWVkaWEgdGVybWluYWxzIHRoYXQgc2hhcmUKLSMgbWFqb3IgY2hhcmFjdGVyaXN0aWNzLgotZXhjZWw2MnxleGNlbDY0fGRhdGFtZWRpYSBFeGNlbCA2MiwKLQlkY2gxPVxFW1AsIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrZjU9XEVPdSwga2Y2PVxFT3YsCi0Ja2Y3PVxFT3csIGtmOD1cRU94LCBrZjk9XEVPeSwgcm1pcj1cRVs0bCwgc21pcj1cRVs0aCwKLQl1c2U9ZHQ4MCwKLWV4Y2VsNjItd3xleGNlbDY0LXd8ZGF0YW1lZGlhIEV4Y2VsIDYyIGluIDEzMiBjaGFyIG1vZGUsCi0JZGNoMT1cRVtQLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2Y1PVxFT3UsIGtmNj1cRU92LAotCWtmNz1cRU93LCBrZjg9XEVPeCwga2Y5PVxFT3ksIHJtaXI9XEVbNGwsIHNtaXI9XEVbNGgsCi0JdXNlPWR0ODB3LAotZXhjZWw2Mi1ydnxleGNlbDY0LXJ2fGRhdGFtZWRpYSBFeGNlbCA2MiBpbiByZXZlcnNlIHZpZGVvIG1vZGUsCi0JZGNoMT1cRVtQLCBmbGFzaD1cRVs/NWxcRVs/NWgsIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLAotCWtmNT1cRU91LCBrZjY9XEVPdiwga2Y3PVxFT3csIGtmOD1cRU94LCBrZjk9XEVPeSwgcm1pcj1cRVs0bCwKLQlzbWlyPVxFWzRoLCB1c2U9ZHQ4MCwKLQotIyMjIyBGYWxjbwotIwotIwlGYWxjbyBEYXRhIFByb2R1Y3RzCi0jCTQ0MCBQb3RyZXJvIEF2ZW51ZQotIwlTdW5ueXZhbGUsIENBIDk0MDg2NC0xOTYKLSMJVm94OiAoODAwKS0zMjUtMjY0OAotIwlGYXg6ICg0MDgpLTc0NS03ODYwCi0jCU5ldDogdGVjaHN1cEBjaGFybS5zeXMuZmFsY28uY29tCi0jCi0jIEN1cnJlbnQgRmFsY28gbW9kZWxzIGFzIG9mIDE5OTUgYXJlIGdlbmVyYWxseSBBTlNJLWNvbXBhdGlibGUgYW5kIHN1cHBvcnQKLSMgZW11bGF0aW9ucyBvZiBERUMgVlQtc2VyaWVzLCBXeXNlLCBhbmQgVGVsZXZpZGVvIHR5cGVzLgotIwotCi0jIFRlc3QgdmVyc2lvbiBmb3IgRmFsY28gdHMtMS4gU2VlIDxhcnBhdmF4LmhpY2ttYW5AdWNiPiBmb3IgaW5mbwotIyBUaGlzIHRlcm1pbmFsIHdhcyByZWxlYXNlZCBhcm91bmQgMTk4MyBhbmQgd2FzIGRpc2NvbnRpbnVlZCBsb25nIGFnby4KLSMgVGhlIHN0YW5kb3V0IGFuZCB1bmRlcmxpbmUgaGlnaGxpZ2h0cyBhcmUgdGhlIHNhbWUuCi1mYWxjb3x0czF8dHMtMXxmYWxjbyB0cy0xLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEUqLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVywKLQlkbDE9XEVSLCBlZD1cRVksIGVsPVxFVFxFRzBcMDEwLCBob21lPV5eLCBodD1eSSwgaWwxPVxFRSwKLQlpbmQ9XkosIGlzMj1cRXVcRTMsIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLAotCWtmMD1eQTBcciwgcm1pcj1cRXIsIHJtc289XEVnMCwgcm11bD1cRWcwLCBzZ3IwPVxFZzAsCi0Jc21pcj1cRXEsIHNtc289XEVnMSwgc211bD1cRWcxLAotZmFsY28tcHx0czFwfHRzLTFwfGZhbGNvIHRzLTEgd2l0aCBwYWdpbmcgb3B0aW9uLAotCU9UYnMsIGFtLCBkYSwgZGIsIG1pciwgbXNnciwgdWwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjYnQ9XEVJLCBjbGVhcj1cRSosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFW0IsCi0JY3VmMT1cRVtDLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFW0EsCi0JZGNoMT1cRVcsIGRsMT1cRVIsIGVkPVxFWSwgZWw9XEVUXEVHMFwwMTBcRWcwLCBodD1eSSwKLQlpbDE9XEVFLCBpbmQ9XkosIGlzMj1cRVpcRTNcRV9jLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtob21lPVxFW0gsIHJtY3VwPVxFX2IsIHJtaXI9XEVyLAotCXJtc289XEVnMCwgcm11bD1cRWcwLCBzZ3IwPVxFZzAsIHNtY3VwPVxFX2QsIHNtaXI9XEVxLAotCXNtc289XEVnNCwgc211bD1cRWcxLAotIyAodHMxMDA6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcgLS0gZXNyKQotdHMxMDB8dHMxMDAtc3B8ZmFsY28gdHMxMDAtc3AsCi0JYW0sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVtKJDw1MD4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBJDwyPiwgZGNoMT1cRX5XLCBkbDE9XEV+UiwgZWQ9XEVbSiQ8NTA+LAotCWVsPVxFW0skPDM+LCBlbDE9XEVbMUskPDM+LCBlbmFjcz1cRShCXEUpMCwgaG9tZT1cRVtILAotCWh0PV5JLCBodHM9XEVILCBpY2gxPVxFflEsIGlsMT1cRX5FLCBpbmQ9XkosIGlzMT1cRX4pXEV+ZWEsCi0Ja2JzPV5ILCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwyPiwgcmk9XEVNJDw1Piwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20kPDI+LCBybXVsPVxFW20kPDI+LAotCXJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyPiwKLQlzZ3IwPVxFW21cMDE3JDwyPiwgc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzE7N20kPDI+LCBzbXVsPVxFWzRtJDwyPiwgdGJjPVxFWzNnLAotCXVzZT12dDEwMCtmbmtleXMsCi10czEwMC1jdHh0fGZhbGNvIHRzLTEwMCBzYXZpbmcgY29udGV4dCwKLQlybWN1cD1cRX5fYiwgc21jdXA9XEV+X2RcRVsySiwgdXNlPXRzMTAwLAotCi0jIyMjIEZsb3JpZGEgQ29tcHV0ZXIgR3JhcGhpY3MKLSMKLQotIyBGbG9yaWRhIENvbXB1dGVyIEdyYXBoaWNzIEJlYWNvbiBTeXN0ZW0sIHVzaW5nIHRlcm1pbmFsIGVtdWxhdG9yIHByb2dyYW0KLSMgImhvc3QuY29tIiwgYXMgcHJvdmlkZWQgYnkgRkNHLiAgVGhpcyBkZXNjcmlwdGlvbiBpcyBmb3IgYW4gZWFybHkgcmVsZWFzZQotIyBvZiB0aGUgImhvc3QiIHByb2dyYW0uICBLbm93biBidWc6IDxlZD4gY2xlYXJzIHRoZSB3aG9sZSBzY3JlZW4sIHNvIGl0J3MKLSMgY29tbWVudGVkIG91dC4KLQotIyBGcm9tOiBEYXZpZCBCcnlhbnQgPGNib3NnIWRqYj4gMS83LzgzCi1iZWFjb258RkNHIEJlYWNvbiBTeXN0ZW0sCi0JYW0sIGRhLCBkYiwKLQljb2xzIzgwLCBsaW5lcyMzMiwKLQliZWw9XEVTVEFSVFxyXEUzN1xyXEVFTkRcciQ8MT4sCi0JYmxpbms9XEVTVEFSVFxyXEU2MVwsMVxyXEVFTkRcciwgY2xlYXI9XEVaJDwxMD4sIGNyPV5NLAotCWN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVWLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDIwPiwgY3V1MT1cRVUsCi0JZGNoMT1cRVcsIGRsMT1cRVIsIGVsPVxFVCwgaG9tZT1cRUgkPDEwPiwgaWNoMT1cRVEsIGlsMT1cRUUsCi0JaW5kPV5KLCByZXY9XEVTVEFSVFxyXEU1OVwsMVxyXEVFTkRcciwgcm1jdXA9LAotCXJtc289XEVTVEFSVFxyXEU3MFwsMFxyXEVFTkRcciQ8MjA+LAotCXJtdWw9XEVTVEFSVFxyXEU2MFwsMFxyXEVFTkRcciwKLQlzZ3IwPVxFU1RBUlRcclxFNzhcclxFNzBcLDBcclxFRU5EXHIkPDIwPiwKLQlzbWN1cD1cRVNUQVJUXHJcRTJcLDBcclxFMTJcclxFRU5EXHIkPDEwPiwKLQlzbXNvPVxFU1RBUlRcclxFNzBcLDZcclxFRU5EXHIkPDIwPiwKLQlzbXVsPVxFU1RBUlRcclxFNjBcLDFcclxFRU5EXHIsCi0KLSMjIyMgRmx1a2UKLSMKLQotIyBUaGUgZjE3MjBhIGRpZmZlcmVuY2VzIGZyb20gQU5TSTogbm8gYXV0byBtYXJnaW4sIGRlc3RydWN0aXZlCi0jIHRhYnMsICMgb2YgbGluZXMsIGZ1bm55IGhpZ2hsaWdodGluZyBhbmQgdW5kZXJsaW5pbmcKLWYxNzIwfGYxNzIwYXxmbHVrZSAxNzIwQSwKLQl4dCwKLQljb2xzIzgwLCBsaW5lcyMxNiwgeG1jIzEsCi0JYmVsPV5HLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFW0IsCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBpbmQ9XEVELCBpczI9XEVbSFxFWzJKLCBrY3ViMT1eXywga2N1ZDE9Xl0sCi0Ja2N1ZjE9Xl4sIGtjdXUxPV5cLCByaT1cRU0sIHJtc289XEVbbSwgcm11bD1cRVttLCBzZ3IwPVxFW20sCi0Jc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQotIyMjIyBMaWJlcnR5IEVsZWN0cm9uaWNzIChGcmVlZG9tKQotIwotIwlMaWJlcnR5IEVsZWN0cm9uaWNzCi0jCTQ4MDg5IEZyZW1vbnQgQmx2ZAotIwlGcmVtb250IENBIDk0NTM4Ci0jCVZveDogKDUxMCktNjIzLTYwMDAKLSMJRmF4OiAoNTEwKS02MjMtNzAyMQotCi0jIEZyb206IDxmYWxldHRpQGJlcmtlbGV5LmVkdT4KLSMgKGYxMDA6IGFkZGVkIGVtcHR5IDxhY3NjPiB0byBzdXBwcmVzcyBhIHRpYyB3YXJuaW5nOwotIyBtYWRlIHRoaXMgcmVsYXRpdmUgdG8gYWRtK3NnciAtLSBub3RlIHRoYXQgPGludmlzPiBpc24ndAotIyBrbm93biB0byB3b3JrIGZvciBmMTAwIGJ1dCBkb2VzIG9uIHRoZSBmMTEwLiAtLWVzcikKLWYxMDB8ZnJlZWRvbXxmcmVlZG9tMTAwfGZyZWVkb20gbW9kZWwgMTAwLAotCU9UYnMsIGFtLCBidywgaHMsIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWFjc2M9LCBiZWw9XkcsIGNidD1cRUksIGNsZWFyPV5aLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXLCBkbDE9XEVSJDwxMS41Kj4sIGRzbD1cRWdcRWZcciwgZWQ9XEVZLCBlbD1cRVQsCi0JZmxhc2g9XEViJDwyMDA+XEVkLCBmc2w9Xk0sIGhvbWU9Xl4sIGhwYT1cRV0lcDElezMyfSUrJWMsCi0JaHQ9XkksIGh0cz1cRTEsIGlsMT1cRUUkPDguNSo+LCBpbmQ9XkosIGlwPSQ8Nj4sCi0JaXMyPVxFZ1xFZlxyXEVkLCBrYnM9XkgsIGtjYnQ9XEVJLCBrY3ViMT1eSCwga2N1ZDE9XlYsCi0Ja2N1ZjE9XkwsIGtjdXUxPV5LLCBrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMj1eQUFcciwKLQlrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwKLQlrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sIHJpPVxFaiwgcm1hY3M9XEUkLCBybWlyPVxFciwKLQlzbWFjcz1cRSUlLCBzbWlyPVxFcSwgdGJjPVxFMywgdHNsPVxFZ1xFZiwKLQl2cGE9XEVbJXAxJXszMn0lKyVjLCB1c2U9YWRtK3NnciwKLWYxMDAtcnZ8ZnJlZWRvbS1ydnxmcmVlZG9tIDEwMCBpbiByZXZlcnNlIHZpZGVvLAotCWZsYXNoPVxFZCQ8MjAwPlxFYiwgaXMyPVxFZ1xFZlxyXEViLCB1c2U9ZjEwMCwKLSMgVGhlIGYxMTAgYW5kIGYyMDAgaGF2ZSBwcm9ibGVtcyB3aXRoIHZpKDEpLiAgVGhleSB1c2UgdGhlIF5WCi0jIGNvZGUgZm9yIHRoZSBkb3duIGN1cnNvciBrZXkuIFdoZW4ga2N1ZDEgaXMgZGVmaW5lZCBpbiB0ZXJtaW5mbwotIyBhcyBeViwgdGhlIENvbnRyb2wgQ2hhcmFjdGVyIFF1b3RpbmcgY2FwYWJpbGl0eSAoXlYgaW4gaW5zZXJ0IG1vZGUpCi0jIGlzIGxvc3QhIEl0IGNhbm5vdCBiZSByZW1hcHBlZCBpbiB2aSBiZWNhdXNlIGl0IGlzIG5lY2Vzc2FyeSB0byBlbnRlcgotIyBhIF5WIHRvIHRvIHF1b3RlIHRoZSBeViB0aGF0IGlzIGJlaW5nIHJlbWFwcGVkISEhCi0jCi0jIGYxMTAvZjIwMCB1c2VycyB3aWxsIGhhdmUgdG8gZGVjaWRlIHdoZXRoZXIKLSMgdG8gbG9zZSB0aGUgZG93biBjdXJzb3Iga2V5IG9yIHRoZSBxdW90aW5nIGNhcGFiaWxpdHkuIFdlIHdpbGwgb3B0Ci0jIGluaXRpYWxseSBmb3IgbGVhdmluZyB0aGUgcXVvdGluZyBjYXBhYmlsaXR5IG91dCwgc2luY2UgdXNlIG9mIFZJCi0jIGlzIG5vdCBnZW5lcmFsbHkgYXBwbGljYWJsZSB0byBtb3N0IGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucwotIyAoZjExMDogYWRkZWQgPGh0PiwgPGtob21lPiAmIDxrY2J0PiBmcm9tIGYxMDAgLS0gZXNyKQotZjExMHxmcmVlZG9tMTEwfExpYmVydHkgRnJlZWRvbSAxMTAsCi0JYndALCBlc2xvaywKLQlpdCM4LCB3c2wjODAsCi0JYmxpbms9XEVHMiwgYm9sZD1cRUcwLCBjaXZpcz1cRS4xLCBjbm9ybT1cRS4yLCBjdWQxPV5WLAotCWRpbT1cRUdALCBkbDE9XEVSLCBkc2w9XEVmXHIsIGZsYXNoPVxFYiQ8MjAwLz5cRWQsIGlsMT1cRUUsCi0JaXBALCBpczJALCBrY2xyPV5eLCBrZGNoMT1cRVcsIGtkbDE9XEVSLCBrZWQ9XEVZLCBrZWw9XEVULAotCWtmMD1eQUlcciwga2YxMEAsIGtpY2gxPVxFUSwga2lsMT1cRUUsIG1jND1cRWEsIG1jNT1cRWAsCi0Jcmk9XEVKLCBybWFjcz1cRSUlLCBybWlyPVxFclxFTywgc21hY3M9XEUkLCBzbWlyPVxFT1xFcSwKLQlzbXNvPVxFRzwsIHRzbD1cRWYsIHVzZT1mMTAwLAotZjExMC0xNHxMaWJlcnR5IEZyZWVkb20gMTEwIDE0aW5jaCwKLQlkY2gxQCwgdXNlPWYxMTAsCi1mMTEwLXd8TGliZXJ0eSBGcmVlZG9tIDExMCAtIDEzMiBjb2xzLAotCWNvbHMjMTMyLCB1c2U9ZjExMCwKLWYxMTAtMTR3fExpYmVydHkgRnJlZWRvbSAxMTAgMTRpbi8xMzIgY29scywKLQljb2xzIzEzMiwKLQlkY2gxQCwgdXNlPWYxMTAsCi0jIChmMjAwOiBhZGRlZCA8YWNzYz4gdG8gc3VwcHJlc3MgdGljIHdhcm5pbmdzIHJlIDxzbWFjcz4vPHJtYWNzPiAtLWVzcikKLWYyMDB8ZnJlZWRvbTIwMHxMaWJlcnR5IEZyZWVkb20gMjAwLAotCU9UYnMsIGFtLCBlc2xvaywgaHMsIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB3c2wjODAsCi0JYWNzYz0sIGJlbD1eRywgYmxpbms9XEVHMiwgYm9sZD1cRUcwLCBjYnQ9XEVJLCBjaXZpcz1cRS4wLAotCWNsZWFyPV5aLCBjbm9ybT1cRS4xLCBjcj1eTSwKLQljc3I9XEVtMCVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3ViMT1eSCwgY3VkMT1eViwKLQljdWYxPV5MLCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLAotCWRjaDE9XEVXLCBkaW09XEVHQCwgZGwxPVxFUiwgZHNsPVxFZlxyLCBlZD1cRVksIGVsPVxFVCwKLQlmbGFzaD1cRW8kPDIwMC8+XEVuLCBmc2w9Xk0sIGhvbWU9Xl4sCi0JaHBhPVxFXSVwMSV7MzJ9JSslYywgaHRzPVxFMSwgaWwxPVxFRSwgaW5kPV5KLCBrYnM9XkgsCi0Ja2Nscj1eXiwga2N1YjE9XkgsIGtjdWQxPV5WLCBrY3VmMT1eTCwga2N1dTE9XkssIGtkY2gxPVxFVywKLQlrZGwxPVxFUiwga2VkPVxFWSwga2VsPVxFVCwga2YwPV5BSVxyLCBrZjE9XkFAXHIsIGtmMj1eQUFcciwKLQlrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwKLQlrZjg9XkFHXHIsIGtmOT1eQUhcciwga2ljaDE9XEVRLCBraWwxPVxFRSwgbWM0PVxFYSwgbWM1PVxFYCwKLQlyaT1cRUosIHJtYWNzPVxFJSUsIHJtaXI9XEVyLCBzbWFjcz1cRSQsIHNtaXI9XEVxLCBzbXNvPVxFRzwsCi0JdGJjPVxFMywgdHNsPVxFZiwgdnBhPVxFWyVwMSV7MzJ9JSslYywgdXNlPWFkbStzZ3IsCi1mMjAwLXd8TGliZXJ0eSBGcmVlZG9tIDIwMCAtIDEzMiBjb2xzLAotCWNvbHMjMTMyLCB1c2U9ZjIwMCwKLSMgVGhlIGYyMDAgaGFzIHRoZSBhYmlsaXR5IHRvIHJlcHJvZ3JhbSB0aGUgZG93biBjdXJzb3Iga2V5LiBUaGUga2V5IGlzCi0jIHJlcHJvZ3JhbW1lZCB0byBeSiAobGluZWZlZWQpLiBUaGlzIHZhbHVlIGlzIHJlbWVtYmVyZWQgaW4gbm9uLXZvbGF0aWxlIFJBTSwKLSMgc28gcG93ZXJpbmcgdGhlIHRlcm1pbmFsIG9mZiBhbmQgb24gd2lsbCBub3QgY2F1c2UgdGhlIGNoYW5nZSB0byBiZSBsb3N0LgotZjIwMHZpfExpYmVydHkgRnJlZWRvbSAyMDAgZm9yIHZpLAotCWZsYXNoPVxFYiQ8MjAwLz5cRWQsIGtjdWQxPV5KLCB1c2U9ZjIwMCwKLWYyMDB2aS13fExpYmVydHkgRnJlZWRvbSAyMDAgLSAxMzIgY29scyBmb3IgdmksCi0JY29scyMxMzIsIHVzZT1mMjAwdmksCi0KLSMjIyMgR3JhcGhPbiAoZ28pCi0jCi0jCUdyYXBob24gQ29ycG9yYXRpb24KLSMJNTQ0IERpdmlzaW9uIFN0cmVldAotIwlDYW1wYmVsbCwgQ0EgOTUwMDgKLSMJVm94OiAoNDA4KS0zNzAtNDA4MAotIwlGYXg6ICg0MDgpLTM3MC01MDQ3Ci0jCU5ldDogdHJveUBncmFwaG9uLmNvbSAoVHJveSBNb3JyaXNvbikKLSMKLSMKLSMgVGhlIGdvMTQwIGFuZCBnbzIyNSBoYXZlIGJlZW4gZGlzY29udGludWVkLiAgR3JhcGhPbiBub3cgbWFrZXMgWCB0ZXJtaW5hbHMsCi0jIGluY2x1ZGluZyBvbmUgb2RkIGh5YnJpZCB0aGF0IHN0YXJ0cyBvdXQgbGlmZSBvbiBwb3dlci11cCBhcyBhIGNoYXJhY3RlcgotIyB0ZXJtaW5hbCwgdGhhbiBjYW4gYmUgc3dpdGNoZWQgdG8gWCBncmFwaGljcyBtb2RlIChkcml2ZW4gb3ZlciB0aGUgc2VyaWFsCi0jIGxpbmUpIGJ5IGFuIGVzY2FwZSBzZXF1ZW5jZS4gIE5vIGluZm8gb24gdGhpcyBiZWFzdCB5ZXQuCi0jIChnbzE0MDogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1nbzE0MHxncmFwaG9uIGdvLTE0MCwKLQlPVGJzLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPVxFW0hcRVsySiQ8MTAvPiwgY3ViMT1eSCwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSUyZDslcDIlMmRILCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwgZGwxPVxFW00sCi0JZWQ9XEVbSiQ8MTAvPiwgZWw9XEVbSywgaHQ9XkksCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIGlsMT1cRVtMLAotCWlzMj1cRTxcRT1cRVs/M2xcRVs/N2xcRShCXEVbSlxFN1xFWztyXEU4XEVbbVxFW3EsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YxPVxFT1AsCi0Ja2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2hvbWU9XEVbSCwgcmk9XEVNLAotCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgc2dyMD1cRVttLCBzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLWdvMTQwd3xncmFwaG9uIGdvLTE0MCBpbiAxMzIgY29sdW1uIG1vZGUsCi0JYW0sCi0JY29scyMxMzIsCi0JaXMyPVxFPFxFPVxFWz8zaFxFWz83aFxFKEJcRVtKXEU3XEVbO3JcRThcRVttXEVbcSwKLQl1c2U9Z28xNDAsCi0jIEhhY2tlZCB1cCB2dDIwMCB0ZXJtY2FwIHRvIGhhbmRsZSBHTy0yMjUvVlQyMjAKLSMgRnJvbTogPGVkbUBud25leHVzLldBLkNPTT4KLSMgKGdvMjI1OiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nIC0tIGVzcikKLWdvMjI1fGdvLTIyNXxHcmFwaG9uIDIyNSwKLQlPVGJzLCBhbSwgbWlyLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LCB2dCMzLAotCWJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbSiwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFT1AsCi0Ja2YyPVxFT1EsIGtmMz1cRU9SLCBrZjQ9XEVPUywga2hvbWU9XEVbSCwgcmM9XEU4LCByZXY9XEVbN20sCi0JcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIHJpPVxFTSwgcm1hbT1cRVs/N2wsCi0Jcm1jdXA9XEVbIXBcRVs/N2hcRVsyOzE7MSN3LCBybWlyPVxFWzRsLCBybWt4PVxFPiwKLQlybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHJzMT1cRVshcFxFWz83aFxFWzI7MTsxI3csCi0Jc2M9XEU3LCBzZ3IwPVxFW20sIHNtYW09XEVbPzdoLCBzbWN1cD1cRVsyOzAjd1xFWzE7MjVyLAotCXNtaXI9XEVbNGgsIHNta3g9XEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIyMjIEhhcnJpcyAoQmVlaGl2ZSkKLSMKLSMgQmxldGNoLiAgVGhlc2UgZ3V5cyBzaGFyZWQgdGhlIFRlcm1pbmFsIEJyYWluIERhbWFnZSBsYXVyZWxzIHdpdGggSGF6ZWx0aW5lLgotIyBUaGVpciB0ZXJtaW5hbCBncm91cCBpcyBhbmNpZW50IGhpc3Rvcnkgbm93ICgxOTk1KSB0aG91Z2ggdGhlIHBhcmVudAotIyBjb21wYW55IGlzIHN0aWxsIGluIGJ1c2luZXNzLgotIwotCi0jIEJlZWhpdmUgZG9jdW1lbnRhdGlvbiBpcyB1bmRhdGVkIGFuZCBtYXJrZWQgUHJlbGltaW5hcnkgYW5kIGhhcyBubyBmaWd1cmVzCi0jIHNvIHdlIG11c3QgaGF2ZSBlYXJseSBTdXBlcmJlZTIgKE1vZGVsIDYwMCwgYWNjb3JkaW5nIHRvIHBob25lIGNvbnZlcnNhdGlvbgotIyB3aXRoIG1mci4pLiBJdCBoYXMgcHJvdmVkIHJlbGlhYmxlIGV4Y2VwdCBmb3Igc29tZSBtaXNzaW5nIHBhZGRpbmcKLSMgKG5vdGFibHkgYWZ0ZXIgXEVLIGFuZCA8bmw+IGF0IGJvdHRvbSBvZiBzY3JlZW4pLgotIwotIyBUaGUga2V5IGlkZWEgaXMgdGhhdCBBRVAgbW9kZSBpcyBwb2lzb24gZm9yIDxjdXA+ICYgdGhhdCBVUydzIGluCi0jIHRoZSBsb2NhbCBtZW1vcnkgc2hvdWxkIGJlIGF2b2lkZWQgbGlrZSB0aGUgcGxhZ3VlLiBUaGF0IG1lYW5zCi0jIHRoYXQgdGhlIDIwNDggY2hhcmFjdGVyIGxvY2FsIGJ1ZmZlciBpcyB1c2VkIGFzIDI1IGxpbmVzIG9mIDgwCi0jIGNoYXJhY3RlcnMsIHBlcmlvZC4gTm8gc2Nyb2xsaW5nIGxvY2FsIG1lbW9yeSwgZm9sa3MuIEl0IGFsc28KLSMgYXBwZWFycyB0aGF0IHdlIGNhbm5vdCB1c2UgbmFrZWQgSU5TIExJTkUgZmVhdHVyZSBzaW5jZSBpdCB1c2VzCi0jIFVTLiBUaGUgc2JpIGZha2VzIDxpbDE+IHdpdGggYW4gODAtc3BhY2UgaW5zZXJ0IHRoYXQgbWF5IGJlIHRvbwotIyBzbG93IGF0IGxvdyBzcGVlZHM7IGFsc28gc3BhY2VzIGdldCBjb252ZXJ0ZWQgdG8gXDA0MCB3aGljaCBpcwotIyB0b28gbG9uZyBmb3Igc29tZSBwcm9ncmFtcyAobm90IHZpKS4gIERFTCBMSU5FIGlzIG9rIGJ1dCBzbG93LgotIwotIyBUaGUgPG5sPiBzdHJpbmcgaXMgZGVzaWduZWQgZm9yIGxhc3QgbGluZSBvZiBzY3JlZW4gT05MWTsgY3VwIHRvCi0jIDI1dGggbGluZSBjb3JyZWN0cyB0aGUgbW90aW9uIGluaGVyZW50IGluIHNjcm9sbGluZyB0byBQYWdlIDEuCi0jCi0jIFRoZXJlIGlzIG9uZSB1bmRlcnN0b29kIGJ1Zy4gSXQgaXMgdGhhdCB0aGUgc2NyZWVuIGFwcGVhcnMgdG8KLSMgcG9wIHRvIGEgbmV3IChibGFuaykgcGFnZSBhZnRlciBhIDxuZWw+LCBvciBsZWF2ZSBhIGhhbGYtbGluZQotIyBlbGxpcHNpcyB0byBhIHF1YWQgdGhhdCBpcyB0aGUgZXh0cmEgNDggbWVtb3J5IGxvY2F0aW9ucy4gVGhlCi0jIGRhdGEgcmVjZWl2ZWQgaXMgZHVtcGVkIGludG8gbWVtb3J5IGJ1dCBub3QgZGlzcGxheWVkLiAgTm90IHRvCi0jIHdvcnJ5IGlmIDxjdXA+IGlzIGJlaW5nIHVzZWQ7IHRoZSBsaW5lcyBub3QgZGlzcGxheWVkIHdpbGwgYmUsCi0jIHdoZW5ldmVyIHRoZSBjdXJzb3IgaXMgbW92ZWQgdXAgdGhlcmUuIFNpbmNlIDxjdXA+IGlzIGFkZHJlc3NlZAotIyByZWxhdGl2ZSB0byBNRU1PUlkgb2Ygd2luZG93LCBub3RoaW5nIGlzIGxvc3Q7IGJ1dCBiZXdhcmUgb2YKLSMgcmVsYXRpdmUgY3Vyc29yIG1vdGlvbiAoPGN1dTE+LDxjdWQxPiw8Y3VmMT4sPGN1YjE+KS4gUmVjb21tZW5kZWQsCi0jIHRoZXJlZm9yZSwgaXMgc2V0ZW52IE1PUkUgLWMgLgotIwotIyBXQVJOSU5HOiBOb3QgYWxsIGZlYXR1cmVzIHRlc3RlZC4KLSMKLSMgVGltaW5ncyBhcmUgYXNzZW1ibGVkIGZyb20gMyBzb3VyY2VzLiBTb21lIHRpbWluZ3MgbWF5IHJlZmxlY3QKLSMgU0IyL01vZGVsIDMwMCB0aGF0IHdlcmUgdXNlZCBpZiBtb3JlIGNvbnNlcnZhdGl2ZS4KLSMgVGVzdGVkIG9uIGEgTW9kZWwgNjAwIGF0IDEyMDAgYW5kIDk2MDAgYmQuCi0jCi0jIFRoZSBCQUNLU1BBQ0VrYiBvcHRpb24gaXMgY3V0ZS4gVGhlIE5FV0xJTkUga2V5LCBzbyBjbGV2ZXJseQotIyBwbGFjZWQgb24gdGhlIGtleWJvYXJkIGFuZCB1c2VsZXNzIGJlY2F1c2Ugb2YgQUVQLCBpcyBtYWRlCi0jIGludG8gYSBiYWNrc3BhY2Uga2V5LiBJbiB1c2UgRVNDIG11c3QgYmUgcHJlc3NlZCB0d2ljZSAodG8gc2VuZCkKLSMgYW5kIHNlbmRpbmcgXkMgbXVzdCBiZSBwcmVmaXhlZCBieSBFU0MgdG8gYXZvaWQgdGhhdCB3ZWlyZAotIyB0cmFuc21pdCBtb2RlIGFzc29jaWF0ZWQgd2l0aCBFTlRFUiBrZXkuCi0jCi0jIElGIFRFUk1JTkFMIEVWRVIgR09FUyBDQVRBVE9OSUMgd2l0aCB0aGUgY3Vyc29yIGJ1enppbmcgYWNyb3NzCi0jIHRoZSBzY3JlZW4sIHRoZW4gaXQgaGFzIGRyb3BwZWQgaW50byBFTlRFUiBtb2RlOyBoaXQKLSMgUkVTRVQtLU9OTElORS0tIXRzZXQuCi0jCi0jIEFzIGRlbGl2ZXJlZCB0aGlzIG1hY2hpbmUgaGFzIGEgRkFUQUwgZmVhdHVyZSB0aGF0IHdpbGwgdGhyb3cKLSMgaXQgaW50byB0aGF0IHN0cmFuZ2UgdHJhbnNtaXQgc3RhdGUgKFNQT1cpIGlmIHRoZSBzcGFjZSBiYXIgaXMKLSMgaGl0IGFmdGVyIGEgQ1IgaXMgcmVjZWl2ZWQsIGJ1dCBiZWZvcmUgcmVjZWl2aW5nIGEgTEYgKG9yIGEKLSMgZmV3IG90aGVycykuCi0jCi0jIFRoZSBjaXJjdWl0cyBNVVNUIGJlIG1vZGlmaWVkIHRvIGVsaW1pbmF0ZSB0aGUgU1BPVyBsYXRjaC4KLSMgVGhpcyBpcyBkb25lIGJ5IHN0cmFwcGluZyBvbiBjaGlwIEE0NiBvZiB0aGUgSS9PIGJvYXJkOyBjdXQKLSMgdGhlIHAuYy4gY29ubmVjdGlvbiB0byBQaW4gNSBhbmQgc3RyYXAgUGluIDUgdG8gUGluIDggb2YgdGhhdAotIyBjaGlwLiBUaGlzIG1vZCBoYXMgYmVlbiBjaGVja2VkIG91dCBvbiBhIE1vZCA2MDAgb2YgU3VwZXJiZWUgSUkuCi0jIFdpdGggdGhpcyBtb2RpZmljYXRpb24gYWJzdXJkbHkgaGlnaCB0aW1pbmdzIG9uIGNyIGFyZQotIyB1bm5lY2Vzc2FyeS4KLSMKLSMgTk9URSBXRUxMIHRoYXQgdGhlIHJlYXIgcGFuZWwgc3dpdGNoIHNob3VsZCBiZSBzZXQgdG8gQ1IvTEYsCi0jIG5vdCBBRVAhCi0jCi1zYjF8YmVlaGl2ZSBzdXBlcmJlZSwKLQlPVGJzLCBhbSwgYncsIGRhLCBkYiwgbWlyLCB1bCwgeHNiLAotCWNvbHMjODAsIGxpbmVzIzI1LCB4bWMjMSwKLQliZWw9XkcsIGNidD1cRWAkPDY1MD4sIGNsZWFyPVxFSCQ8MT5cRUokPDM+LCBjcj0kPDE+XHIsCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMkPDM+LCBjdXA9XEVGJXAyJTAzZCVwMSUwM2QsCi0JY3V1MT1cRUEkPDM+LCBkY2gxPVxFUCQ8Mz4sIGRsMT1cRU0kPDEwMD4sIGVkPVxFSiQ8Mz4sCi0JZWw9XEVLJDwzPiwgaG9tZT1cRUgkPDE+LCBodD1eSSwgaHRzPVxFMSwKLQlpbDE9XEVOXEVMJDwzPlxFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXEVQJDwzPiBcRU9cRVJcRUEkPDM+LAotCWluZD1eSiwgaXMyPVxFRSQ8Mz5cRVhcRVpcRU9cRWJcRWdcRVIsIGticz1eXywga2N1YjE9XEVELAotCWtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsIGtkbDE9XEVNLCBrZWQ9XEVKLCBrZWw9XEVLLAotCWtmMD1cRTIsIGtmMT1cRXAsIGtmMj1cRXEsIGtmMz1cRXIsIGtmND1cRXMsIGtmNT1cRXQsIGtmNj1cRXUsCi0Ja2Y3PVxFdiwga2Y4PVxFdywga2Y5PVxFMSwga2hvbWU9XEVILCBraWNoMT1cRVFcRU8sCi0Ja3JtaXI9XEVSLCBsZjA9VEFCIENMRUFSLCBsZjk9VEFCIFNFVCwgcm1jdXA9LCBybWlyPVxFUiwKLQlybXNvPVxFXzMsIHJtdWw9XEVfMywgc2dyMD1cRV8zLCBzbWN1cD1cRU8sIHNtaXI9XEVRXEVPLAotCXNtc289XEVfMSwgc211bD1cRV8wLCB0YmM9XEUzLAotc2JpfHN1cGVyYmVlfGJlZWhpdmUgc3VwZXJiZWUgYXQgSW5kaWFuYSBVLiwKLQl4c2IsCi0JY3I9XHIkPDE+LCBpbDE9MVxFTlxFTCQ8OT5cRVEgXEVQJDw5PiBcRU9cRVJcRUEsCi0JdXNlPXNiMSwKLSMgQWx0ZXJuYXRlIChvbGRlcikgZGVzY3JpcHRpb24gb2YgU3VwZXJiZWUgLSBmMT1lc2NhcGUsIGYyPV5DLgotIyBOb3RlOiB0aGVyZSBhcmUgYXQgbGVhc3QgMyBraW5kcyBvZiBzdXBlcmJlZXMgaW4gdGhlIHdvcmxkLiAgVGhlIHNiMQotIyBob2xkcyBvbnRvIGVzY2FwZXMgYW5kIGJvdGNoZXMgXkMncy4gIFRoZSBzYjIgaXMgdGhlIGJlc3Qgb2YgdGhlIDMuCi0jIFRoZSBzYjMgcHV0cyBnYXJiYWdlIG9uIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB3aGVuIHlvdSBzY3JvbGwgd2l0aAotIyB0aGUgc3dpdGNoIGluIHRoZSBiYWNrIHNldCB0byBDUkxGIGluc3RlYWQgb2YgQUVQLiAgVGhpcyBkZXNjcmlwdGlvbgotIyBpcyB0ZXN0ZWQgb24gdGhlIHNiMiBidXQgc2hvdWxkIHdvcmsgb24gYWxsIHdpdGggZWl0aGVyIHN3aXRjaCBzZXR0aW5nLgotIyBUaGUgZjEvZjIgYnVzaW5lc3MgaXMgZm9yIHRoZSBzYjEgYW5kIHRoZSA8eHNiPiBjYW4gYmUgdGFrZW4gb3V0IGZvcgotIyB0aGUgb3RoZXIgdHdvIGlmIHlvdSB3YW50IHRvIHRyeSB0byBoaXQgdGhhdCB0aW55IGVzY2FwZSBrZXkuCi0jIFRoaXMgZGVzY3JpcHRpb24gaXMgdHJpY2t5OiBiZWluZyBhYmxlIHRvIHVzZSBjdXAgZGVwZW5kcyBvbiB0aGVyZSBiZWluZwotIyAyMDQ4IGJ5dGVzIG9mIG1lbW9yeSBhbmQgdGhlIGhhaXJ5IDxubD4gc3RyaW5nLgotc3VwZXJiZWUteHNifGJlZWhpdmUgc3VwZXIgYmVlLAotCWFtLCBkYSwgZGIsIHhzYiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQljbGVhcj1cRUhcRUokPDM+LCBjbm9ybT1eSiwgY3I9XHIkPDEwMDA+LCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1ZjE9XEVDLCBjdXA9XEVGJXAyJTNkJXAxJTNkLCBjdXUxPVxFQSQ8Mz4sCi0JZGNoMT1cRVAkPDM+LCBkbDE9XEVNJDwxMDA+LCBlZD1cRUokPDM+LCBlbD1cRUskPDM+LAotCWhvbWU9XEVILCBodD1eSSwgaHRzPVxFMSwKLQlpbmQ9XG5cMFwwXDBcblwwXDBcMFxFQVxFS1wwXDBcMFxFVFxFVCwgaXMyPVxFSFxFSiwKLQlrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsIGtmMT1cRXAsIGtmMj1cRXEsCi0Ja2YzPVxFciwga2Y0PVxFcywga2Y1PVxFdCwga2Y2PVxFdSwga2Y3PVxFdiwga2Y4PVxFdywKLQlraG9tZT1cRUgsIHJtc289XEVfMywgc2dyMD1cRV8zLCBzbXNvPVxFXzEsIHRiYz1cRTMsCi0jIFRoaXMgbG9zZXMgb24gbGluZXMgPiA4MCBjaGFycyBsb25nLCB1c2UgYXQgeW91ciBvd24gcmlzawotc3VwZXJiZWVpY3xzdXBlciBiZWUgd2l0aCBpbnNlcnQgY2hhciwKLQlpY2gxPSwgcm1pcj1cRVIsIHNtaXI9XEVRLCB1c2U9c3VwZXJiZWUteHNiLAotc2IyfHNiM3xmaXhlZCBzdXBlcmJlZSwKLQl4c2JALCB1c2U9c3VwZXJiZWUsCi0KLSMjIyMgIEJlZWhpdmUgTWVkaWNhbCBFbGVjdHJvbmljcwotIwotIyBTdGV2ZSBTZXltb3VyIDxzcnNleW1vdXJAbWluZHNwcmluZy5jb20+IHdyaXRlcyAoV2VkLCAwMyBGZWIgMTk5OSk6Ci0jIFJlZ2FyZGluZyB5b3VyIHF1ZXN0aW9uIHRob3VnaDsgQmVlaGl2ZSB0ZXJtaW5hbHMgd2VyZW4ndCBtYWRlIGJ5IEhhcnJpcy4KLSMgVGhleSB3ZXJlIG1hZGUgYnkgQmVlaGl2ZSBNZWRpY2FsIEVsZWN0cm9uaWNzIGluIFV0YWguIFRoZXkgd2VudCBvdXQgb2YKLSMgYnVzaW5lc3MgaW4gdGhlIGVhcmx5ICc4MHMuCi0jCi0jIChPSywgdGhlbiwgSSBkb24ndCBrbm93IHdoeSBhIGNvdXBsZSBvZiB0aGVzZSBzYXkgImhhcnJpcyBiZWVoaXZlIi4pCi0jCi0KLSMgUmVwb3J0cyBhcmUgdGhhdCBtb3N0IG9mIHRoZXNlIEJlZWhpdmUgZW50cmllcyAoZXhjZXB0IHN1cGVyYmVlKSBoYXZlIG5vdAotIyBiZWVuIHRlc3RlZCBhbmQgZG8gbm90IHdvcmsgcmlnaHQuICA8cm1zbz4gaXMgYSB0cm91YmxlIHNwb3QuICBCZSB3YXJuZWQuCi0KLSMgKGJlZTogPGljaDE+IHdhcyBlbXB0eSwgd2hpY2ggaXMgb2J2aW91c2x5IGJvZ3VzIC0tIGVzcikKLWJlZWhpdmV8YmVlfGhhcnJpcyBiZWVoaXZlLAotCU9UYnMsIGFtLCBtaXIsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JY2J0PVxFPiwgY2xlYXI9XEVFLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFRiVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRjaDE9XEVQLAotCWRsMT1cRU0sIGVkPVxFSiwgZWw9XEVLLCBob21lPVxFSCwgaWwxPVxFTCwga2JzPV5ILCBrY2J0PVxFPiwKLQlrY2xyPVxFRSwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLAotCWtkY2gxPVxFUCwga2RsMT1cRU0sIGtlbD1cRUssIGtob21lPVxFSCwga2ljaDE9XEVRLCBraWwxPVxFTCwKLQlrcm1pcj1cRUAsIHJtaXI9XEVALCBybXNvPVxFZEAsIHJtdWw9XEVkQCwgc2dyMD1cRWRALAotCXNtaXI9XEVRLCBzbXNvPVxFZFAsIHNtdWw9XEVkYCwKLSMgc2V0IHRhYiBpcyBeRiwgY2xlYXIgKG9uZSkgdGFiIGlzIF5WLCBubyB3YXkgdG8gY2xlYXIgYWxsIHRhYnMuCi0jIGdvb2QgZ3JpZWYgLSBkb2VzIHRoaXMgZW50cnkgbWFrZSA6c2c6Lzp1Zzogd2hlbiBpdCBkb2Vzbid0IGhhdmUgdG8/Ci0jIGxvb2sgYXQgdGhvc2Ugc3BhY2VzIGluIDxybXNvPi88c21zbz4uICBTZWVtcyBzdHJhbmdlIHRvIG1lLi4uCi0jIChiZWVoaXZlOiA8aWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvYmVlaGl2ZT4gcmVtb3ZlZCwgbm8gc3VjaCBmaWxlLiAgSWYgeW91Ci0jIHJlYWxseSBjYXJlLCBjb29rIHVwIG9uZSB1c2luZyBeRiAtLSBlc3IpCi1iZWVoaXZlM3xiaDNtfGJlZWhpdmVJSUltfGhhcnJpcyBiZWVoaXZlIDNtLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzIwLAotCWJlbD1eRywgY2xlYXI9XkVeUiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsIGN1dTE9XkssCi0JZGwxPVwwMjEkPDM1MD4sIGVkPV5SLCBlbD1eUCwgaG9tZT1eRSwgaHQ9XkksIGh0cz1eRiwKLQlpbDE9XDAyMyQ8MTYwPiwgaW5kPV5KLCBsbD1eRV5LLCBybXNvPVxzXl8sIHNtc289Xl1ccywKLWJlZWhpdmU0fGJoNHxiZWVoaXZlIDQsCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRUUsIGNyPV5NLCBjdWIxPVxFRCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3V1MT1cRUEsIGVkPVxFSiwgZWw9XEVLLCBob21lPVxFSCwgaW5kPV5KLAotIyBUaGVyZSB3YXMgYW4gZWFybHkgQXVzdHJhbGlhbiBraXQtYnVpbHQgY29tcHV0ZXIgY2FsbGVkIGEgIk1pY3JvYmVlIi4KLSMgSXQncyBub3QgY2xlYXIgd2hldGhlciB0aGlzIGlzIGZvciBvbmUgb2YgdGhvc2Ugb3IgZm9yIGEgcmVsYXRpdmUKLSMgb2YgdGhlIEJlZWhpdmUuCi1taWNyb2J8bWljcm9iZWV8bWljcm8gYmVlIHNlcmllcywKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFRSwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRUYlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBlZD1cRUosCi0JZWw9XEVLLCBodD1eSSwgaW5kPV5KLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAotCWtjdXUxPVxFQSwga2YxPVxFcCwga2YyPVxFcSwga2YzPVxFciwga2Y0PVxFcywga2Y1PVxFdCwKLQlrZjY9XEV1LCBrZjc9XEV2LCBrZjg9XEV3LCBrZjk9XEV4LCBraG9tZT1cRUgsIHJtc289XEVkQCwKLQlybXVsPVxFZEAsIHNncjA9XEVkQCwgc21zbz1cc1xFZFAsIHNtdWw9XEVkYCwKLQotIyA4Njc1LCA4Njg2LCBhbmQgYmVlIGZyb20gQ3lydXMgUmFobWFuCi0jICg4Njc1OiBjaGFuZ2VkIGsxMCwgazExLi4uazE2IHRvIGs7LCBGMS4uLkY2IC0tIGVzcikKLWhhODY3NXxoYXJyaXMgODY3NSwKLQlpczI9XEVTXEUjXEUqXEVoXEVtXEU/XEUxXEU5XEVAXEVYXEVVLCBrZjE9XkYsCi0Ja2YxMD1cRWQsIGtmMTE9XlcsIGtmMTI9XEVSLCBrZjEzPVxFRSwga2YxND1cRUksIGtmMTU9XEVpLAotCWtmMTY9XEVnLCBrZjI9XlAsIGtmMz1eTiwga2Y0PV5WLCBrZjU9XkosIGtmNj1eVCwga2Y3PV5ILAotCWtmOD1cMTc3LCBrZjk9XEVlLCB1c2U9YmVlLAotIyAoODY4NjogY2hhbmdlZCBrMTAsIGsxMS4uLmsxNiB0byBrOywgRjEuLi5GNjsgZml4ZWQgYnJva2VuIGNvbnRpbnVhdGlvbgotIyBpbiA6aXM6IC0tIGVzcikKLWhhODY4NnxoYXJyaXMgODY4NiwKLQlpczI9XEVTXEUjXEUqXEVoXEVtXEU/XEUxXEU5XEVAXEVYXEVVXEUiKlowMVxFIjhGMzUwMjFCN0M4MyNcRSI4RjQ1MDIxQjdEODMjXEUiOEY1NTAyMUI3RTgzI1xFIjhGNjUwMjFCN0Y4MyNcRSI4Rjc1MDIxQjczODMjXEUiOEY4NTFCRDcjXEUiOEY5NTAyMUI3MDgzI1xFIjhGQTUwMjFCNzE4MyNcRSI4RkI1MDIxQjcyODMjLAotCWtmMT1cMDAyXEVwXDAwMywga2YxMD1cRWosIGtmMTE9XEVXLCBrZjEyPVwwMDJcRXtcMDAzLAotCWtmMTM9XDAwMlxFfFwwMDMsIGtmMTQ9XDAwMlxFfVwwMDMsIGtmMTU9XDAwMlxFflwwMDMsCi0Ja2YxNj1cMDAyXEVcMTc3XDAwMywga2YyPVwwMDJcRXFcMDAzLCBrZjM9XDAwMlxFclwwMDMsCi0Ja2Y0PVwwMDJcRXNcMDAzLCBrZjU9XEUzLCBrZjY9XEVJLCBrZjc9XEVSLCBrZjg9XEVKLCBrZjk9XEUoLAotCXVzZT1iZWUsCi0KLSMjIyMgSGF6ZWx0aW5lCi0jCi0jIEhhemVsdGluZSBhcHBlYXJzIHRvIGJlIG91dCBvZiB0aGUgdGVybWluYWwgYnVzaW5lc3MgYXMgb2YgMTk5NS4gIFRoZXNlCi0jIGd1eXMgd2VyZSBjby1vd25lcnMgb2YgdGhlIFRlcm1pbmFsIEJyYWluIERhbWFnZSBIYWxsIE9mIEZhbWUgYWxvbmcgd2l0aAotIyBIYXJyaXMuIFRoZXkgaGF2ZSBhIGhhemVsdGluZS5jb20gZG9tYWluIChidXQgbm8gd2ViIHBhZ2UgdGhlcmUgKSBhbmQgY2FuCi0jIGJlIHJlYWNoZWQgYXQ6Ci0jCi0jCUhhemVsdGluZQotIwk0NTAgRWFzdCBQdWxhc2tpIFJvYWQKLSMJR3JlZW5sYXduLCBOZXcgWW9yayAxMTc0MAotIwotIyBBcyBsYXRlIGFzIDE5OTMsIG1hbnVhbHMgZm9yIHRoZSB0ZXJtaW5hbCBwcm9kdWN0IGxpbmUgY291bGQgc3RpbGwgYmUKLSMgcHVyY2hhc2VkIGZyb206Ci0jCi0jCVRSVyBDdXN0b21lciBTZXJ2aWNlIERpdmlzaW9uCi0jCTE1IExhdyBEcml2ZQotIwlQLk8uIEJveCAyMDc2Ci0jCUZhaXJmaWVsZCwgTkogMDcwMDctMjA3OAotIwotIyBUaGV5J3JlIG5vdyAoMTk5OCkgYSBzdWJzaWRpYXJ5IG9mIEdlbmVyYWwgRWxlY3RyaWMsIG9wZXJhdGluZyB1bmRlciB0aGUKLSMgbWFycXVlICJHRUMtTWFyY29uaSBIYXplbHRpbmUiIGFuZCBkb2luZyBtaWxpdGFyeSBhdmlvbmljcy4gIFdlYiBwYWdlCi0jIGF0IDxodHRwOi8vd3d3LmdlYy5jb20vY3BkLzFuY3BkLmh0bSMxLjU1Pi4KLSMKLQotIyBTaW5jZSA8Y3VmMT4gaXMgYmxhbmssIHdoZW4geW91IHdhbnQgdG8gZXJhc2Ugc29tZXRoaW5nIHlvdQotIyBhcmUgb3V0IG9mIGx1Y2suICBZb3Ugd2lsbCBoYXZlIHRvIGRvIF5MJ3MgYSBsb3QgdG8KLSMgcmVkcmF3IHRoZSBzY3JlZW4uICBoMTAwMCBpcyB1bnRlc3RlZC4gIEl0IGRvZXNuJ3Qgd29yayBpbgotIyB2aSAtIHRoaXMgdGVybWluYWwgaXMgdG9vIGR1bWIgZm9yIGV2ZW4gdmkuICAoVGhlIGNvZGUgaXMKLSMgdGhlcmUgYnV0IGl0IGlzbid0IGRlYnVnZ2VkIGZvciB0aGlzIGNhc2UuKQotaHoxMDAwfGhhemVsdGluZSAxMDAwLAotCU9UYnMsCi0JY29scyM4MCwgbGluZXMjMTIsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XHMsIGhvbWU9XkssCi0JaW5kPV5KLAotIyBGcm9tOiA8Y2Jvc2chdWNidmF4IXB1ci1lZSFjaW5jeSFjaHJpcz4gVGh1IEF1ZyAyMCAwOTowOToxOCAxOTgxCi1oejE0MjB8aGF6ZWx0aW5lIDE0MjAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRV5cLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eUCwKLQljdXA9XEVcMDIxJXAyJWMlcDElezMyfSUrJWMsIGN1dTE9XEVeTCwgZGwxPVxFXlMsCi0JZWQ9XEVeWCwgZWw9XEVeTywgaHQ9Xk4sIGlsMT1cRV5aLCBpbmQ9XkosIHJtc289XEVeWSwKLQlzbXNvPVxFXl8sCi0jIE5ldyAic2FmZSIgY3Vyc29yIG1vdmVtZW50ICgxMS84NykgZnJvbSA8Y2dzQHVtZDUudW1kLmVkdT4uICBQcmV2ZW50cwotIyBmcmVha291dCB3aXRoIG91dC1vZi1yYW5nZSBhcmdzIGFuZCB0bjMyNzAuICBObyBoeiBzaW5jZSBpdCBuZWVkcyB0bwotIyByZWNlaXZlIHRpbGRlcy4KLWh6MTUwMHxoYXplbHRpbmUgMTUwMCwKLQlPVGJzLCBhbSwgaHosCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1+XlwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPX5eSywgY3VmMT1eUCwKLQljdXA9flwwMjElcDIlcDIlPyV7MzB9JT4ldCV7MzJ9JSslOyV7OTZ9JSslYyVwMSV7OTZ9JSslYywKLQljdXUxPX5eTCwgZGwxPX5cMDIzJDw0MD4sIGVkPX5cMDMwJDwxMD4sIGVsPX5eTywgaG9tZT1+XlIsCi0JaWwxPX5cMDMyJDw0MD4sIGluZD1eSiwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eUCwKLQlrY3V1MT1+XkwsIGtob21lPX5eUiwgcm1zbz1+XlksIHNtc289fl5fLAotIyBoMTUxMCBhc3N1bWVkIHRvIGJlIGluIHNhbmUgZXNjYXBlIG1vZGUuICBFbHNlIHVzZSBoMTUwMC4KLSMgKGgxNTEwOiBlYXJseSB2ZXJzaW9ucyBvZiB0aGlzIGVudHJ5IGFwcGFyZW50bHkgaGFkICI8cm1zbz1cRV5fPiwKLSMgPHNtc289XEVeWT4sIGJ1dCB0aGVzZSBjYXBzIHdlcmUgY29tbWVudGVkIG91dCBpbiA4LjM7IGFsc28sCi0jIHJlbW92ZWQgaW5jb3JyZWN0IGFuZCBvdmVycmlkZGVuICI6ZG89Xko6IiAtLSBlc3IpCi1oejE1MTB8aGF6ZWx0aW5lIDE1MTAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRV5cLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRV5LLCBjdWYxPV5QLAotCWN1cD1cRVwwMjElcDIlYyVwMSVjLCBjdXUxPVxFXkwsIGRsMT1cRV5TLCBlZD1cRV5YLAotCWVsPVxFXk8sIGlsMT1cRV5aLCBpbmQ9XkosCi0jIEhhemVsdGluZSAxNTIwCi0jIFRoZSBmb2xsb3dpbmcgc3dpdGNoIHNldHRpbmdzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlGVUxMCQlDUgkJVS9MX0NBU0UJRVNDQVBFCi0jCUZPUk1BVF9PRkYJRU9NX0FfT0ZGCUVPTV9CX09GRglXUkFQQVJPVU5EX09OCi0jIE90aGVyIHN3aXRjaGVzIG1heSBiZSBzZXQgZm9yIG9wZXJhdG9yIGNvbnZlbmllbmNlIG9yIGNvbW11bmljYXRpb24KLSMgcmVxdWlyZW1lbnRzLgotaHoxNTIwfEhhemVsdGluZSAxNTIwLAotCU9UYnMsIGFtLCBidywgbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGJvbGQ9XEVeXywgY2xlYXI9XEVeXCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1eUCwgY3VwPVxFXDAyMSVwMiVjJXAxJWMsIGN1dTE9XEVeTCwgZGwxPVxFXlMsCi0JZWQ9XEVeWCwgZWw9XEVeTywgaG9tZT1cRV5SLCBpbDE9XEVeWiwgaW5kPV5KLCBrYnM9XkgsCi0Ja2Nscj1cRV5cLCBrY3ViMT1eSCwga2N1ZDE9XEVeSywga2N1ZjE9XlAsIGtjdXUxPVxFXkwsCi0Ja2RsMT1cRV5TLCBrZWQ9XEVeWCwga2VsPVxFXk8sIGtob21lPVxFXlIsIGtpbDE9XEVeWiwKLQlybXNvPVxFXlksIHJzMT1cRSRcRVwwMDVcRT9cRVwwMzEsIHNncjA9XEVeWSwgc21zbz1cRV5fLAotIyBUaGlzIHZlcnNpb24gd29ya3Mgd2l0aCB0aGUgZXNjYXBlIHN3aXRjaCBvZmYKLSMgKGgxNTIwOiByZW1vdmVkIGluY29ycmVjdCBhbmQgb3ZlcnJpZGRlbiAiOmRvPV5KOiIgLS0gZXNyKQotaHoxNTIwLW5vZXNjfGhhemVsdGluZSAxNTIwLAotCWFtLCBoeiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPX5eXCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9fl5LLCBjdWYxPV5QLAotCWN1cD1+XDAyMSVwMiVjJXAxJWMkPDE+LCBjdXUxPX5eTCwgZGwxPX5eUywgZWQ9fl5YLCBlbD1+Xk8sCi0JaG9tZT1+XlIsIGlsMT1+XlosIGluZD1eSiwgcm1zbz1+XlksIHNtc289fl5fLAotIyBOb3RlOiB0aGUgaDE1NTIgYXBwZWFycyB0byBiZSB0aGUgZmlyc3QgSGF6ZWx0aW5lIHRlcm1pbmFsIHdoaWNoCi0jIGlzIG5vdCBicmFpbmRhbWFnZWQuICBJdCBoYXMgdGlsZGVzIGFuZCBiYWNrcHJpbWVzIGFuZCBldmVyeXRoaW5nIQotIyBCZSBzdXJlIHRoZSBhdXRvIGxmL2NyIHN3aXRjaCBpcyBzZXQgdG8gY3IuCi1oejE1NTJ8aGF6ZWx0aW5lIDE1NTIsCi0JT1RicywKLQljdWQxPV5KLCBkbDE9XEVPLCBpbDE9XEVFLCBrZjE9XEVQLCBrZjI9XEVRLCBrZjM9XEVSLCBsZjE9Ymx1ZSwKLQlsZjI9cmVkLCBsZjM9Z3JlZW4sIHVzZT12dDUyLAotaHoxNTUyLXJ2fGhhemVsdGluZSAxNTUyIHJldmVyc2UgdmlkZW8sCi0JY3VkMT1eSiwgcm1zbz1cRVQsIHNtc289XEVTLCB1c2U9aHoxNTUyLAotIyBOb3RlOiBoMjAwMCB3b24ndCB3b3JrIHdlbGwgYmVjYXVzZSBvZiBhIGNsYXNoIGJldHdlZW4gdXBwZXIgY2FzZSBhbmQgfidzLgotaHoyMDAwfGhhemVsdGluZSAyMDAwLAotCU9UYnMsIE9UbmMsIGFtLAotCWNvbHMjNzQsIGxpbmVzIzI3LAotCWJlbD1eRywgY2xlYXI9flwwMzQkPDY+LCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1cD1+XDAyMSVwMiVjJXAxJWMsIGRsMT1+XDAyMyQ8Nj4sIGhvbWU9fl5SLAotCWlsMT1+XDAzMiQ8Nj4sIGluZD1eSiwgcGFkPVwxNzcsCi0jIERhdGU6IEZyaSBKdWwgMjMgMTA6Mjc6NTMgMTk4Mi4gIFNvbWUgdW5rbm93biBwZXJzb24gd3JvdGU6Ci0jIEkgdGVzdGVkIHRoaXMgdGVybWNhcCBlbnRyeSBmb3IgdGhlIEhhemVsdGluZSBFc3ByaXQgd2l0aCB2aS4gSXQgc2VlbXMKLSMgdG8gd29yayBvay4gVGhlcmUgaXMgb25lIHByb2JsZW0gdGhvdWdoIGlmIG9uZSB0eXBlcyBhIGxvdCBvZiBnYXJiYWdlCi0jIGNoYXJhY3RlcnMgdmVyeSBmYXN0IHZpIHNlZW1zIG5vdCBhYmxlIHRvIGtlZXAgdXAgYW5kIGhhbmdzIHdoaWxlIHRyeWluZwotIyB0byBpbnNlcnQuIFRoYXQncyBpbiBpbnNlcnQgbW9kZSB3aGlsZSB0cnlpbmcgdG8gaW5zZXJ0IGluIHRoZSBtaWRkbGUgb2YKLSMgYSBsaW5lLiBJdCBtaWdodCBiZSBiZWNhdXNlIHRoZSBFc3ByaXQgZG9lc24ndCBoYXZlIGluc2VydCBjaGFyIGFuZCBkZWxldGUKLSMgY2hhciBhcyBhIGJ1aWx0IGluIGZ1bmN0aW9uLiBWaSBoYXMgdG8gZGVsZXRlIHRvIGVuZCBvZiBsaW5lIGFuZCB0aGVuCi0jIHJlZHJhdyB0aGUgcmVzdCBvZiB0aGUgbGluZS4KLWVzcHJpdHxIYXplbHRpbmUgRXNwcml0IEksCi0JT1RicywgYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2J0PVxFXlQsIGNsZWFyPVxFXlwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFXkssCi0JY3VmMT1eUCwgY3VwPVxFXDAyMSVwMiVjJXAxJWMsIGN1dTE9XEVeTCwgZGwxPVxFXlMsCi0JZWQ9XEVeVywgZWw9XEVeTywgaG9tZT1cRV5SLCBpbDE9XEVeWiwgaW5kPV5KLCBpczI9XEU/LCBrYnM9XkgsCi0Ja2N1YjE9XkgsIGtjdWQxPVxFXkssIGtjdWYxPV5QLCBrY3V1MT1cRV5MLCBrZjA9XkIwXkosCi0Ja2YxPV5CMV5KLCBrZjI9XkIyXkosIGtmMz1eQjNeSiwga2Y0PV5CNF5KLCBrZjU9XkI1XkosCi0Ja2Y2PV5CNl5KLCBrZjc9XkI3XkosIGtmOD1eQjheSiwga2Y5PV5COV5KLCBraG9tZT1cRV5SLAotCWxmMD0wLCBsZjE9MSwgbGYyPTIsIGxmMz0zLCBsZjQ9NCwgbGY1PTUsIGxmNj02LCBsZjc9NywgbGY4PTgsIGxmOT05LAotCXJta3g9XEU+LCBybXNvPVxFXlksIHNta3g9XEU8LCBzbXNvPVxFXl8sCi1lc3ByaXQtYW18aGF6ZWx0aW5lIGVzcHJpdCBhdXRvLW1hcmdpbiwKLQlhbSwgdXNlPWVzcHJpdCwKLSMgSGF6ZWx0aW5lIE1vZHVsYXItMSBmcm9tIENsaWZmIFNoYWNrZWx0b24gPGl0dHZheCFpdHRyYWwhc2hhY2tlbHQ+IHZpYSBCUkwKLSMgVmkgaXQgc2VlbXMgYWx3YXlzIHdhbnRzIHRvIHNlbmQgYSBjb250cm9sIEogZm9yICJkbyIgYW5kIGl0IHR1cm5lZCBvdXQKLSMgdGhhdCB0aGUgdGVybWluYWwgd291bGQgd29yayBzb21ld2hhdCBpZiB0aGUgYXV0byBMRi9DUiB3YXMgdHVybmVkIG9mZi4KLSMgKGhtb2QxOiByZW1vdmVkIDpkbj1+Xks6IC0tIGVzcikKLWhtb2QxfEhhemVsdGluZSBNb2R1bGFyIDEsCi0JT1RicywgYW0sIGh6LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2J0PX5eVCwgY2xlYXI9fl5cLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1+XkssIGN1ZjE9XlAsCi0JY3VwPX5cMDIxJXAyJWMlcDElYywgY3V1MT1+XkwsIGRsMT1+XlMsIGhvbWU9fl5SLCBpbDE9fl5aLAotCWluZD1eSiwga2N1YjE9XkgsIGtjdWQxPX5eSywga2N1ZjE9XlAsIGtjdXUxPX5eTCwga2hvbWU9fl5SLAotCXJjPX5eUSwgcm1zbz1+XlksIHNjPX5eRSwgc2dyMD1+XlksIHNtc289fl5fLAotIwotIyBIYXplbHRpbmUgRXhlY3V0aXZlIDgwIE1vZGVsIDMwICgxNTU0PykKLSMJZnJvbSAgV2lsbCBNYXJ0aW4gPGNvbnRyb2xAQUxNU0EtMS5BUlBBPiB2aWEgQlJMCi0jIExpa2UgVlQxMDAsIGV4Y2VwdCBmb3IgZGlmZmVyZW50ICJhbSIgYmVoYXZpb3IuCi1oYXplbHxleGVjODB8aDgwfGhlODB8SGF6ZWx0aW5lIEV4ZWN1dGl2ZSA4MCwKLQlPVGJzLCBPVHB0LCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgdnQjMywKLQlPVG5sPV5KLCBiZWw9XkcsIGJsaW5rPVxFWzVtJDwyLz4sIGJvbGQ9XEVbMW0kPDIvPiwKLQljbGVhcj1cRVs7SFxFWzJKJDw1MC8+LCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVbQyQ8Mi8+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NS8+LCBjdXUxPVxFW0EkPDIvPiwKLQllZD1cRVtKJDw1MC8+LCBlbD1cRVtLJDwzLz4sIGhvbWU9XEVbSCwgaHQ9XkksCi0JaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwKLQlrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLAotCWtmND1cRU9TLCByYz1cRTgsIHJldj1cRVs3bSQ8Mi8+LAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCByaT1cRU0kPDUvPiwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttJDwyLz4sIHJtdWw9XEVbbSQ8Mi8+LAotCXJzMT1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsIHNjPVxFNywKLQlzZ3IwPVxFW20kPDIvPiwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20kPDIvPiwKLQlzbXVsPVxFWzRtJDwyLz4sCi0KLSMjIyMgSUJNCi0jCi0KLWlibTMyN3h8bGluZSBtb2RlIElCTSAzMjcwIHN0eWxlLAotCWduLAotCWNsZWFyPV5NXkosIGVsPV5NLCBob21lPV5NLAotCi1pYm0zMTAxfGkzMTAxfElCTSAzMTAxLTEwLAotCU9UYnMsIGFtLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRUssIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZWQ9XEVKLAotCWVsPVxFSSwgaG9tZT1cRUgsIGh0cz1cRTAsIGluZD1eSiwga2N1YjE9XEVELCBrY3VkMT1cRUIsCi0Ja2N1ZjE9XEVDLCBrY3V1MT1cRUEsIG5lbD1eTV5KLCB0YmM9XEVILAotaWJtMzE1MXxJQk0gMzE1MSBkaXNwbGF5LAotCWlzMj1cRSBTLCBybWFjcz1cRT5CLCBybWN1cD1cRT5CLCByczI9XEUgUywgczBkcz1cRT5CLAotCXNncj1cRTQlezY0fSU/JXAxJXQlezY1fSV8JTslPyVwMiV0JXs2Nn0lfCU7JT8lcDMldCV7NjV9JXwlOyU/JXA0JXQlezY4fSV8JTslPyVwNSV0JXs2NH0lfCU7JT8lcDYldCV7NzJ9JXwlOyU/JXA3JXQlezgwfSV8JTslYyU/JXA5JXRcRT5BJWVcRT5CJTssCi0Jc2dyMD1cRTRAXEU+Qiwgc21hY3M9XEU+QSwgc21jdXA9XEU+QiwgdXNlPWlibTMxNjIsCi0jIEZyb206IE1hcmsgRWFzdGVyIDxtYXJrZUBmc2ktc3NkLmNzZy5zc2QuZnNpLmNvbT4gMjkgT2N0IDE5OTIKLSMgcmVtb3ZlZCBrZW5kLCBrbnAsIGtwcCAtVEQKLWlibTMxNjF8aWJtMzE2M3x3eTYwLTMxNlh8d3lzZTYwLTMxNlh8SUJNIDMxNjEvMzE2MyBkaXNwbGF5LAotCU9UYnMsIGFtLCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYWNzYz1qXDM1MmtcMzUzbFwzNTRtXDM1NW5cMzU2cVwzNjF0XDM2NHVcMzY1dlwzNjZ3XDM2N3hcMzcwLAotCWJlbD1eRywgYmxpbms9XEU0RCwgYm9sZD1cRTRILCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPVxFRCwKLQljdWQxPVxFQiwgY3VmMT1cRUMsIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1cRUEsIGRjaDE9XEVRLCBkbDE9XEVPLCBlZD1cRUosIGVsPVxFSSwgaG9tZT1cRUgsIGluZD1eSiwKLQlpbnZpcz1cRTRQLCBrYnM9XkgsIGtjYnQ9XEUyLCBrY2xyPVxFTFxyLCBrY3RhYj1cRTEsCi0Ja2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZGNoMT1cRVEsCi0Ja2RsMT1cRU8sIGtlZD1cRUosIGtlbD1cRUksIGtmMT1cRWFcciwga2YxMD1cRWpcciwKLQlrZjExPVxFa1xyLCBrZjEyPVxFbFxyLCBrZjEzPVxFIWFcciwga2YxND1cRSFiXHIsCi0Ja2YxNT1cRSFjXHIsIGtmMTY9XEUhZFxyLCBrZjE3PVxFIWVcciwga2YxOD1cRSFmXHIsCi0Ja2YxOT1cRSFnXHIsIGtmMj1cRWJcciwga2YyMD1cRSFoXHIsIGtmMjE9XEUhaVxyLAotCWtmMjI9XEUhalxyLCBrZjIzPVxFIWtcciwga2YyND1cRSFsXHIsIGtmMz1cRWNcciwKLQlrZjQ9XEVkXHIsIGtmNT1cRWVcciwga2Y2PVxFZlxyLCBrZjc9XEVnXHIsIGtmOD1cRWhcciwKLQlrZjk9XEVpXHIsIGtob21lPVxFSCwga2h0cz1cRTAsIGtpY2gxPVxFUCBcMDEwLCBraWwxPVxFTiwKLQlrdGJjPVxFIDEsIG1jND1eUF5ULCBtYzU9XlBeUiwgcmV2PVxFNEEsIHJtY3VwPVxFPkEsCi0Jcm1zbz1cRTRALCBybXVsPVxFNEAsCi0Jc2dyPVxFNCV7NjR9JT8lcDEldCV7NjV9JXwlOyU/JXAyJXQlezY2fSV8JTslPyVwMyV0JXs2NX0lfCU7JT8lcDQldCV7Njh9JXwlOyU/JXA1JXQlezY0fSV8JTslPyVwNiV0JXs3Mn0lfCU7JT8lcDcldCV7ODB9JXwlOyVjJT8lcDkldFxFPkElZVxFPEAlOywKLQlzZ3IwPVxFNEBcRTxALCBzbWN1cD1cRT5BLCBzbXNvPVxFNEEsIHNtdWw9XEU0QiwKLQotaWJtMzE2MS1DfElCTSAzMTYxLUMgTkxTIHRlcm1pbmFsIHVzaW5nIGNhcnRyaWRnZSwKLQlybWN1cD1cRT5CLCBzMGRzPVxFPkIsIHMxZHM9XEU+QSwgc21jdXA9XEU+QiwgdXNlPWlibTMxNjEsCi1pYm0zMTYyfElCTSAzMTYyIGRpc3BsYXksCi0JYmxpbms9XEU0JGEsIGJvbGQ9XEU0KGEsIGlsMT1cRU4sIGludmlzPVxFNDBhLCByZXY9XEU0IWEsCi0Jcm1zbz1cRTQ+Yiwgcm11bD1cRTQ9Yiwgc2dyMD1cRTRALCBzbXNvPVxFNCFhLCBzbXVsPVxFNCJhLAotCXVzZT1pYm0zMTYxLUMsCi0KLSMgVGhpcyByZWFsbHkgc2hvdWxkIG5vdCB1c2Ugc2V0YWIvc2V0YWYsIGJ1dCBpdCBpcyBjbGVhciB0aGF0IHRoZQotIyBvcmlnaW5hbCB0ZXJtaW5mbyBkb2VzIG5vdCB0b2dnbGUgcmVkL2JsdWUgY29sb3JzIGFzIGluIHNldGIvc2V0Zi4KLWlibTMxNjR8aTMxNjR8SUJNIDMxNjQsCi0JbXNnciwKLQljb2xvcnMjOCwgcGFpcnMjNjQsCi0Jb3A9XEU0ICJALCBybWN1cD1cRSE5KE5cRT5CLCBzMGRzPVxFPkIsIHMxZHM9XEU+QSwKLQlzZXRhYj1cRTQgICVwMSV7NjR9JSslYywKLQlzZXRhZj1cRTQlPyVwMSV0ICVwMSV7MzJ9JSslYyVlISclO0AsCi0Jc21jdXA9XEUhOS9OXEU+QiwgdXNlPWlibTMxNjEsCi0KLWlibTUxNTF8d3k2MC1BVHx3eXNlNjAtQVR8SUJNIDUxNTEgTW9ub2Nocm9tZSBkaXNwbGF5LAotCWFtLCBidywgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWFjc2M9alwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNXFcMzA0dFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2MywKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbSiwgY3I9Xk0sCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsCi0JaHBhPVxFWyVpJXAxJWRHLCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XEVbUywKLQlpbmRuPVxFWyVwMSVkUywgaW52aXM9XEVbOG0sIGlzMj1cRWMsIGticz1eSCwga2NidD1cRVtaLAotCWtjbHI9XEVbMTQ0cSwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywKLQlrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLCBrZWQ9XEVbMTQ4cSwga2VsPVxFWzE0MnEsCi0Ja2VuZD1cRVsxNDZxLCBrZjE9XEVbMDAxcSwga2YxMD1cRVswMTBxLCBrZjExPVxFWzAxMXEsCi0Ja2YxMj1cRVswMTJxLCBrZjEzPVxFWzAxM3EsIGtmMTQ9XEVbMDE0cSwga2YxNT1cRVswMTVxLAotCWtmMTY9XEVbMDE2cSwga2YxNz1cRVswMTdxLCBrZjE4PVxFWzAxOHEsIGtmMTk9XEVbMDE5cSwKLQlrZjI9XEVbMDAycSwga2YyMD1cRVswMjBxLCBrZjIxPVxFWzAyMXEsIGtmMjI9XEVbMDIycSwKLQlrZjIzPVxFWzAyM3EsIGtmMjQ9XEVbMDI0cSwga2YyNT1cRVswMjVxLCBrZjI2PVxFWzAyNnEsCi0Ja2YyNz1cRVswMjdxLCBrZjI4PVxFWzAyOHEsIGtmMjk9XEVbMDI5cSwga2YzPVxFWzAwM3EsCi0Ja2YzMD1cRVswMzBxLCBrZjMxPVxFWzAzMXEsIGtmMzI9XEVbMDMycSwga2YzMz1cRVswMzNxLAotCWtmMzQ9XEVbMDM0cSwga2YzNT1cRVswMzVxLCBrZjM2PVxFWzAzNnEsIGtmND1cRVswMDRxLAotCWtmNT1cRVswMDVxLCBrZjY9XEVbMDA2cSwga2Y3PVxFWzAwN3EsIGtmOD1cRVswMDhxLAotCWtmOT1cRVswMDlxLCBraG9tZT1cRVtILCBraWNoMT1cRVsxMzlxLCBraWwxPVxFWzE0MHEsCi0Ja2luZD1cRVsxNTFxLCBrbnA9XEVbMTU0cSwga3BwPVxFWzE1MHEsIGtyaT1cRVsxNTVxLAotCWtybWlyPVxFWzRsLCByZXY9XEVbN20sIHJpPVxFW1QsIHJpbj1cRVslcDElZFQsIHJtaXI9XEVbNGwsCi0Jcm1zbz1cRVttLCBybXVsPVxFW20sIHJzMj1cRWMsCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglO20sCi0Jc2dyMD1cRVswbSwgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQotaWJtYWVkfElCTSBFeHBlcmltZW50YWwgZGlzcGxheSwKLQlPVGJzLCBhbSwgZW8sIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjNTIsCi0JY2xlYXI9XEVIXEVLLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRjaDE9XEVRLAotCWRsMT1cRU8sIGVkPVxFSiwgZWw9XEVJLCBmbGFzaD1cRUcsIGhvbWU9XEVILCBodD1eSSwgaWNoMT1cRVAsCi0JaWwxPVxFTiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsCi0Jcm1zbz1cRTAsIHNncjA9XEUwLCBzbXNvPVxFMCwKLWlibS1hcGx8YXBsfElCTSBhcGwgdGVybWluYWwgc2ltdWxhdG9yLAotCWxpbmVzIzI1LCB1c2U9ZG0xNTIwLAotIyAoaWJtbW9ubzogdGhpcyBoYWQgYW4gdW5rbm93biBgc2InIGJvb2xlYW4sIEkgY2hhbmdlZCBpdCB0byBgYnMnLgotIyBBbHNvIGl0IGhhZCAiOkkwPWYxMDoiIHdoaWNoIHByZXR0eSBvYnZpb3VzbHkgc2hvdWxkIGJlICJsMD1mMTAiIC0tIGVzcikKLWlibW1vbm98SUJNIHdvcmtzdGF0aW9uIG1vbm9jaHJvbWUsCi0JZXNsb2ssIGhzLAotCWJvbGQ9XEVaLCBkbDE9XEVNLCBkc2w9XEVqXEVZOCBcRUlcRWssIGZzbD1cRWssIGlsMT1cRUwsCi0JaW52aXM9XEVGXEVmMDtcRWIwOywga2JzPV5ILCBrZjA9XEU8LCBrZjE9XEVTLCBrZjI9XEVULAotCWtmMz1cRVUsIGtmND1cRVYsIGtmNT1cRVcsIGtmNj1cRVAsIGtmNz1cRVEsIGtmOD1cRVIsIGtmOT1cRVksCi0Ja2hvbWU9XEVILCBraWNoMT1cMCwga2luZD1cRUUsIGtucD1cRUUsIGtwcD1cRWcsIGtyaT1cRUcsCi0JbGYwPWYxMCwgcmV2PVxFcCwgcmk9XEVBLCBybXNvPVxFeiwgcm11bD1cRXcsCi0Jc2dyMD1cRXdcRXFcRXpcRUIsIHNtc289XEVaLCBzbXVsPVxFVywgdHNsPVxFalxFWTglKyBcRW8sCi0JdXNlPWlibTMxMDEsCi1pYm1lZ2F8SUJNIEVuaGFuY2VkIENvbG9yIERpc3BsYXksCi0JY3I9Xk0sIGN1ZDE9XkosIGh0PV5JLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLAotCW5lbD1eTV5KLCB1c2U9aWJtbW9ubywKLSMgVGhpcyBjb2xvciBzY2hlbWUgaXMgYXNzdW1lZCBpbiBzb21lIHJlY2VudCBJQk0gdGVybWluYWwgZGVzY3JpcHRpb25zCi0jIChncmVlbiBvbiBibGFjaywgZW11bGF0ZWQgb24gYSAxNi1jb2xvciB0ZXJtaW5hbCkuCi1pYm0rY29sb3J8SUJNIGNvbG9yIGRlZmluaXRpb25zLAotCWNvbG9ycyM4LCBuY3YjMywgcGFpcnMjNjQsCi0Jb3A9XEVbMzJtXEVbNDBtLAotCXNldGI9XEVbJT8lcDElezB9JT0ldDQwbSVlJXAxJXsxfSU9JXQ0MW0lZSVwMSV7Mn0lPSV0NDJtJWUlcDElezN9JT0ldDQzbSVlJXAxJXs0fSU9JXQ0NG0lZSVwMSV7NX0lPSV0NDVtJWUlcDElezZ9JT0ldDQ2bSVlJXAxJXs3fSU9JXQxMDdtJTssCi0Jc2V0Zj1cRVslPyVwMSV7MH0lPSV0MzBtJWUlcDElezF9JT0ldDMxbSVlJXAxJXsyfSU9JXQzMm0lZSVwMSV7M30lPSV0MzNtJWUlcDElezR9JT0ldDM0bSVlJXAxJXs1fSU9JXQzNW0lZSVwMSV7Nn0lPSV0MzZtJWUlcDElezd9JT0ldDk3bSU7LAotaWJtKzE2Y29sb3J8SUJNIGFpeHRlcm0gY29sb3IgZGVmaW5pdGlvbnMsCi0JY29sb3JzIzE2LCBwYWlycyMyNTYsCi0Jc2V0YWI9XEVbJT8lcDElezh9JTwldCVwMSV7NDB9JSslZSVwMSV7OTJ9JSslOyVkbSwKLQlzZXRhZj1cRVslPyVwMSV7OH0lPCV0JXAxJXszMH0lKyVlJXAxJXs4Mn0lKyU7JWRtLAotCXNldGI9JXAxJXs4fSUvJXs2fSUqJXs0fSUrXEVbJWQlcDElezh9JW0lUGElPyVnYSV7MX0lPSV0NCVlJWdhJXszfSU9JXQ2JWUlZ2ElezR9JT0ldDElZSVnYSV7Nn0lPSV0MyVlJWdhJWQlO20sCi0Jc2V0Zj0lcDElezh9JS8lezZ9JSolezN9JStcRVslZCVwMSV7OH0lbSVQYSU/JWdhJXsxfSU9JXQ0JWUlZ2ElezN9JT0ldDYlZSVnYSV7NH0lPSV0MSVlJWdhJXs2fSU9JXQzJWUlZ2ElZCU7bSwKLWlibTUxNTR8SUJNIDUxNTQgQ29sb3IgZGlzcGxheSwKLQljb2xvcnMjOCwgbmN2QCwgcGFpcnMjNjQsCi0JYm9sZEAsIHNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHVzZT1pYm01MTUxLAotCXVzZT1pYm0rY29sb3IsCi1pYm1lZ2EtY3xpYm01MTU0LWN8SUJNIEVuaGFuY2VkIENvbG9yIERpc3BsYXkgd2l0aCBzdGFuZG91dCBhbmQgdW5kZXJsaW5lLAotCXJtc289XEVCLCBybXVsPVxFQiwgc21zbz1cRUZcRWYzOywgc211bD1cRUZcRWYyOywKLQl1c2U9aWJtbW9ubywKLWlibXZnYS1jfElCTSBWR0EgZGlzcGxheSBjb2xvciB0ZXJtY2FwLAotCWNyPV5NLCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQluZWw9Xk1eSiwgdXNlPWlibWVnYS1jLAotaWJtdmdhfElCTSBWR0EgZGlzcGxheSwKLQljcj1eTSwgY3VkMT1eSiwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosCi0JbmVsPV5NXkosIHVzZT1pYm1lZ2EsCi0jIGlibWFwYSogYW5kIGlibW1vbm8gZW50cmllcyBjb21lIGZyb20gQUNJUyA0LjMgZGlzdHJpYnV0aW9uCi1ydHBjfGlibWFwYTE2fElCTSA2MTU1IEV4dGVuZGVkIE1vbm9jaHJvbWUgR3JhcGhpY3MgRGlzcGxheSwKLQlsaW5lcyMzMiwKLQlkc2w9XEVqXEVZQCBcRUlcRWssIHRzbD1cRWpcRVlAJSsgXEVvLCB1c2U9aWJtbW9ubywKLWlibTYxNTV8SUJNIDYxNTUgQmxhY2sgJiBXaGl0ZSBkaXNwbGF5LAotCWJsaW5rQCwgYm9sZEAsIHVzZT1pYm01MTUxLAotIyBBZHZhbmNlZCBNb25vY2hyb21lICg2MTUzKSBhbmQgQ29sb3IgKDYxNTQpIEdyYXBoaWNzIERpc3BsYXk6Ci1pYm1hcGE4Y3xpYm1hcGE4fElCTSA2MTU0IEFkdmFuY2VkIEdyYXBoaWNzIERpc3BsYXksCi0JbGluZXMjMzEsCi0JZHNsPVxFalxFWT8gXEVJXEVrLCB0c2w9XEVqXEVZPyUrIFxFbywgdXNlPWlibW1vbm8sCi1pYm1hcGE4Yy1jfGlibTYxNTQtY3xJQk0gNjE1NCBBZHZhbmNlZCBDb2xvciBHcmFwaGljcyBEaXNwbGF5LAotCWxpbmVzIzMxLAotCWRpbT1cRUZcRWY3OywgZHNsPVxFalxFWT8gXEVJXEVrLCB0c2w9XEVqXEVZPyUrIFxFbywKLQl1c2U9aWJtZWdhLWMsCi1pYm02MTU0fElCTSA2MTU0IENvbG9yIGRpc3BsYXlzLAotCWJsaW5rQCwgYm9sZD1cRVsxMm0sIHMwZHM9XEVbMTBtLCBzMWRzPVxFWzExbSwgczJkcz1cRVsxMm0sCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxMiU7bSwKLQlzZ3IwPVxFWzA7MTBtLCB1c2U9aWJtNTE1NCwKLWlibTYxNTN8SUJNIDYxNTMgQmxhY2sgJiBXaGl0ZSBkaXNwbGF5LAotCWJsaW5rQCwgYm9sZD1cRVsxMm0sIHMwZHM9XEVbMTBtLCBzMWRzPVxFWzExbSwgczJkcz1cRVsxMm0sCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxMiU7bSwKLQlzZ3IwPVxFWzA7MTBtLCB1c2U9aWJtNTE1MSwKLWlibTYxNTMtOTB8SUJNIDYxNTMgQmxhY2sgJiBXaGl0ZSBkaXNwbGF5LAotCWNvbHMjOTAsIGxpbmVzIzM2LAotCWJsaW5rQCwgYm9sZEAsIHVzZT1pYm01MTUxLAotaWJtNjE1My00MHxJQk0gNjE1MyBCbGFjayAmIFdoaXRlIGRpc3BsYXksCi0JY29scyM0MCwgbGluZXMjMTIsIHVzZT1pYm02MTUzLTkwLAotaWJtODUxMnxpYm04NTEzfElCTSBjb2xvciBWR0EgVGVybWluYWwsCi0JYW0sIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNSwKLQlhY3NjPWpqa2tsbG1tbm5xcXR0dXV2dnd3eHgsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLAotCWNsZWFyPVxFW0hcRVtKLCBjdWIxPVxFW0QsIGN1ZDE9XkosIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQllY2g9XEVbJXAxJWRYLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGlsPVxFWyVwMSVkTCwKLQlpbDE9XEVbTCwgaXMyPVxFYlxFW21cMDE3XEVbPzdoLCBrY3VkMT1cRVtCLCBrY3V1MT1cRVtBLAotCWtmMD1cRVswMTBxLCBrZjE9XEVbMDAxcSwga2YyPVxFWzAwMnEsIGtmMz1cRVswMDNxLAotCWtmND1cRVswMDRxLCBrZjU9XEVbMDA1cSwga2Y2PVxFWzAwNnEsIGtmNz1cRVswMDdxLAotCWtmOD1cRVswMDhxLCBrZjk9XEVbMDA5cSwga2hvbWU9XEVbSCwgcmM9XEVbdSwgcmV2PVxFWzdtLAotCXJtYWNzPV5PLCBybWFtPVxFWz83bCwgcm1jdXA9XEVbMjBoLCBybWRjPVxFWzRsLAotCXJtaXI9XEVbNGwsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMT1cRWJcRVttXDAxN1xFWz83aFxFW0hcRVtKLCBzYz1cRVtzLCBzZ3IwPVxFW20sCi0Jc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWN1cD1cRVsyMDs0bFxFWz83aFxFYiwKLQlzbWRjPVxFWzRoLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXVzZT1pYm04NTAzLAotaGZ0LWN8SEZUIHdpdGggQ29sb3IsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCWFjc2M9ampra2xsbW1ubnFxdHR1dXZ2d3d4eCwgczBkcz1cRShCLCBzMWRzPVxFKDAsCi0Jc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVswbVxFKEIsCi0JdXNlPWlibTUxNTEsIHVzZT1pYm0rY29sb3IsCi1oZnQtYy1vbGR8SEZUIHdpdGggQ29sb3IgUEM4NTAsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCXNldGFiPVxFWzQlcDElZG0sIHNldGFmPVxFWzMlcDElZG0sIHVzZT1pYm01MTUxLAotCXVzZT1pYm0rY29sb3IsCi1oZnQtb2xkfEFJV1MgSGlnaCBGdW5jdGlvbiBUZXJtaW5hbCwKLQlhbSwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXUxPVxFW0EsIGRjaDE9XEVbUCwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwKLQlodD1eSSwgaWNoMT1cRVtALCBpbDE9XEVbTCwgaW5kPV5KLCBpbnZpcz1cRVs4bSwga2JzPV5ILAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2YxPVxFWzAwMXEsIGtmMj1cRVswMDJxLCBrZjM9XEVbMDAzcSwga2Y0PVxFWzAwNHEsCi0Ja2Y1PVxFWzAwNXEsIGtmNj1cRVswMDZxLCBrZjc9XEVbMDA3cSwga2Y4PVxFWzAwOHEsCi0Ja2Y5PVxFWzAwOXEsIGtob21lPVxFW0gsIGtucD1cRVsxNTNxLCBrcHA9XEVbMTU5cSwKLQlrdGJjPVxFWzAxMHEsIHJldj1cRVs3bSwgcm1pcj1cRTYsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21pcj1cRTYsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHVzZT1pYm0rY29sb3IsCi1pYm0tc3lzdGVtMXxzeXN0ZW0xfGlibSBzeXN0ZW0vMSBjb21wdXRlciwKLQlhbSwgeHQsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eWiwgY3ViMT1eSCwgY3VmMT1eXCwKLQljdXA9XDAwNSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eXiwgaG9tZT1eSywKLQlpbmQ9XkosCi0jICAgICAgIGxmdC1wYzg1MCA6IElCTSBMb3cgRnVuY3Rpb24gVGVybWluYWwgRGV2aWNlCi0jICAgIGxmdCAic3VwcG9ydHMiIHVuZGVybGluZSwgYm9sZCwgYW5kIGJsaW5rIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBsZnQgY29kZQotIyAgICBzZXRzIGFsbCB0aGUgcmlnaHQgYml0cy4gIEhPV0VWRVIsIGRlcGVuZGluZyB1cG9uIHRoZSBhZGFwdGVyLCB0aGVzZQotIyAgICBhdHRyaWJ1dGVzIG1heSBvciBtYXkgbm90IGJlIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlIGRyaXZlci4KLWxmdHxsZnQtcGM4NTB8TEZULVBDODUwfElCTSBMRlQgUEM4NTAgRGV2aWNlLAotCWFtLCBidywgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWFjc2M9alwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNXFcMzA0dFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2MywKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2xlYXI9XEVbSFxFW0osCi0JY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XkosCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbMkosIGVsPVxFWzBLLAotCWhvbWU9XEVbSCwgaHBhPVxFWyVpJXAxJWRHLCBpY2g9XEVbJXAxJWRALCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1cRUQsIGluZG49XEVbJXAxJWRTLCBpbnZpcz1cRVs4bSwgaXMyPVxFYywKLQlrYnM9XkgsIGtjYnQ9XEVbWiwga2Nscj1cRVsxNDRxLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFW1AsIGtlZD1cRVsxNDhxLAotCWtlbD1cRVsxNDJxLCBrZW5kPVxFWzE0NnEsIGtmMT1cRVswMDFxLCBrZjEwPVxFWzAxMHEsCi0Ja2YxMT1cRVswMTFxLCBrZjEyPVxFWzAxMnEsIGtmMTM9XEVbMDEzcSwga2YxND1cRVswMTRxLAotCWtmMTU9XEVbMDE1cSwga2YxNj1cRVswMTZxLCBrZjE3PVxFWzAxN3EsIGtmMTg9XEVbMDE4cSwKLQlrZjE5PVxFWzAxOXEsIGtmMj1cRVswMDJxLCBrZjIwPVxFWzAyMHEsIGtmMjE9XEVbMDIxcSwKLQlrZjIyPVxFWzAyMnEsIGtmMjM9XEVbMDIzcSwga2YyND1cRVswMjRxLCBrZjI1PVxFWzAyNXEsCi0Ja2YyNj1cRVswMjZxLCBrZjI3PVxFWzAyN3EsIGtmMjg9XEVbMDI4cSwga2YyOT1cRVswMjlxLAotCWtmMz1cRVswMDNxLCBrZjMwPVxFWzAzMHEsIGtmMzE9XEVbMDMxcSwga2YzMj1cRVswMzJxLAotCWtmMzM9XEVbMDMzcSwga2YzND1cRVswMzRxLCBrZjM1PVxFWzAzNXEsIGtmMzY9XEVbMDM2cSwKLQlrZjQ9XEVbMDA0cSwga2Y1PVxFWzAwNXEsIGtmNj1cRVswMDZxLCBrZjc9XEVbMDA3cSwKLQlrZjg9XEVbMDA4cSwga2Y5PVxFWzAwOXEsIGtob21lPVxFW0gsIGtpY2gxPVxFWzEzOXEsCi0Ja2lsMT1cRVsxNDBxLCBraW5kPVxFWzE1MXEsIGtucD1cRVsxNTRxLCBrcHA9XEVbMTUwcSwKLQlrcmk9XEVbMTU1cSwga3JtaXI9XEVbNGwsIHJldj1cRVs3bSwgcmk9XEVMLCByaW49XEVbJXAxJWRULAotCXJtYWNzPVxFKEIsIHJtaXI9XEVbNGwsIHJtc289XEVbMG0sIHJtdWw9XEVbMG0sIHJzMj1cRWMsCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTslPyVwNyV0OzglO20lPyVwOSV0XEUoMCVlXEUoQiU7LAotCXNncjA9XEVbMG0sIHNtYWNzPVxFKDAsIHNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0JdGJjPVxFWzNnLAotaWJtNTA4MXxoZnR8SUJNIE1lZ2FwZWwgQ29sb3IgZGlzcGxheSwKLQlhY3NjPWpqa2tsbG1tbm5xcXR0dXV2dnd3eHgsIGJsaW5rQCwgYm9sZEAsIHMwZHM9XEUoQiwKLQlzMWRzPVxFKDAsIHNncjA9XEVbMG1cRShCLCB1c2U9aWJtNTE1NCwKLWlibTUwODEtY3xpYm1tcGVsLWN8SUJNIDUwODEgMTAyNHgxMDI0IDI1Ni80MDk2IE1lZ2FwZWwgZW5oYW5jZWQgY29sb3IgZGlzcGxheSwKLQllc2xvaywgaHMsCi0JbGluZXMjMzMsCi0JZHNsPVxFalxFWUEgXEVJXEVrLCBmc2w9XEVrLCB0c2w9XEVqXEVZQSUrIFxFbywKLQl1c2U9aWJtZWdhLWMsCi1pYm04NTAzfGlibTg1MDd8aWJtODYwNHxJQk0gODUwMyBCICYgVyBWR0EgZGlzcGxheSwKLQl1c2U9aGZ0LWMsCi1pYm04NTE0fElCTSA4NTE0L2EgY29sb3IgVkdBIGRpc3BsYXksCi0JZXNsb2ssIGhzLAotCWRzbD1cRWpcRVlJIFxFSVxFaywgZnNsPVxFaywgdHNsPVxFalxFWUklKyBcRW8sIHVzZT1oZnQsCi1pYm04NTE0LWN8SUJNIDg1MTQgY29sb3IgZGlzcGxheSB3aXRoIHN0YW5kb3V0IGFuZCB1bmRlcmxpbmUsCi0JZXNsb2ssIGhzLAotCWxpbmVzIzQxLAotCWNyPV5NLCBjdWQxPV5KLCBkc2w9XEVqXEVZSSBcRUlcRWssIGZzbD1cRWssIGh0PV5JLCBpbmQ9XkosCi0Ja2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIG5lbD1eTV5KLCB0c2w9XEVqXEVZSSUrIFxFbywKLQl1c2U9aWJtZWdhLWMsCi0KLSMKLSMgQUlYIGVudHJpZXMuICBJQk0gc2hpcHMgdGhlc2Ugd2l0aCBBSVggMy4yLjUuCi0jIC0tIGFkZGVkIHJjLCBzYyBiYXNlZCBvbiBtYW5wYWdlIC1URAotIyBOb3RlIHRoYXQgd2UgY291bGQgdXNlIGlibSsxNmNvbG9yLCBidXQgdGhhdCBpcyBub3QgaG93IElCTSBkZWZpbmVzIHRoaXMgb25lLgotYWl4dGVybXxJQk0gQWl4dGVybSBUZXJtaW5hbCBFbXVsYXRvciwKLQllc2xvaywgaHMsCi0JYWNzYz1qamtrbGxtbW5ucXF0dHV1dnZ3d3h4LCBib2xkPVxFWzFtLCBkc2w9XEVbP0UsCi0JZnNsPVxFWz9GLCByYz1cRTgsIHJpQCwgczBkcz1cRShCLCBzMWRzPVxFKDAsIHNjPVxFNywKLQlzZ3I9XEVbJT8lcDEldDs3JTslPyVwMiV0OzQlOyU/JXAzJXQ7NyU7JT8lcDQldDs1JTslPyVwNiV0OzElOyU/JXA3JXQ7OCU7bSU/JXA5JXRcRSgwJWVcRShCJTssCi0Jc2dyMD1cRVswOzEwbVxFKEIsIHRzbD1cRVs/JXAxJWRULCB1c2U9aWJtNjE1NCwKLWFpeHRlcm0tbXxJQk0gQUlYdGVybSBNb25vY2hyb21lIFRlcm1pbmFsIEVtdWxhdG9yLAotCWVzbG9rLCBocywKLQlhY3NjPWpqa2tsbG1tbm5xcXR0dXV2dnd3eHgsIGJvbGQ9XEVbMW0sIGRzbD1cRVs/RSwKLQlmc2w9XEVbP0YsIHJpQCwgczBkcz1cRShCLCBzMWRzPVxFKDAsCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTttLAotCXNncjA9XEVbMDsxMG1cRShCLCB0c2w9XEVbPyVwMSVkVCwgdXNlPWlibTYxNTMsCi1haXh0ZXJtLW0tb2xkfG9sZCBJQk0gQUlYdGVybSBNb25vY2hyb21lIFRlcm1pbmFsIEVtdWxhdG9yLAotCWVzbG9rLCBocywKLQlib2xkPVxFWzFtLCBkc2w9XEVbP0UsIGZzbD1cRVs/RiwgcmlALAotCXNncj1cRVslPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSwKLQl0c2w9XEVbPyVwMSVkVCwgdXNlPWlibTYxNTMsCi1qYWl4dGVybXxJQk0gS2FuamkgQWl4dGVybSBUZXJtaW5hbCBFZW11bGF0b3IsCi0JYWNzY0AsIHVzZT1haXh0ZXJtLAotamFpeHRlcm0tbXxJQk0gS2FuamkgQUlYdGVybSBNb25vY2hyb21lIFRlcm1pbmFsIEVtdWxhdG9yLAotCWFjc2NALCB1c2U9YWl4dGVybS1tLAotCi0jIFRoaXMgZmxhdm9yIGlzIGFkYXB0ZWQgZnJvbSB4dGVybSwgaW4gdHVybiBmcm9tIGFpeHRlcm0gZG9jdW1lbnRhdGlvbiAtVEQKLWFpeHRlcm0tMTZjb2xvcnxJQk0gQWl4dGVybSBUZXJtaW5hbCBFbXVsYXRvciB3aXRoIDE2IGNvbG9ycywKLQl1c2U9aWJtKzE2Y29sb3IsIHVzZT1haXh0ZXJtLAotCi0jIyMjIEluZm90b24vR2VuZXJhbCBUZXJtaW5hbCBDb3JwLgotIwotCi0jIGd0MTAwIHNvdW5kcyBsaWtlIHNvbWV0aGluZyBERUMgd291bGQgY29tZSBvdXQgd2l0aC4gIExldCdzIGhvcGUgdGhleSBkb24ndC4KLWkxMDB8Z3QxMDB8Z3QxMDBhfEdlbmVyYWwgVGVybWluYWwgMTAwQSAoZm9ybWVybHkgSW5mb3RvbiAxMDApLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVmJXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPVxFQSwgZGwxPVxFTSwKLQllZD1cRUosIGVsPVxFSywgZmxhc2g9XEViJDwyMDAvPlxFYSwgaG9tZT1cRUgsIGlsMT1cRUwsCi0JaW5kPV5KLCBybXNvPVxFYSwgc21zbz1cRWIsCi1pNDAwfGluZm90b24gNDAwLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWJlbD1eRywgY2xlYXI9XEVbMkosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJTNkOyVwMiUzZEgsIGN1dTE9XEVbQSwKLQlkY2gxPVxFWzRoXEVbMlFcRVtQXEVbNGxcRVswUSwgZGwxPVxFW00sIGVsPVxFW04sCi0JaWwxPVxFW0wsIGluZD1eSiwgcm1pcj1cRVs0bFxFWzBRLCBzbWlyPVxFWzRoXEVbMlEsCi0jIChhZGRyaW5mbzogcmVtb3ZlZCBvYnNvbGV0ZSAiOmJjPV5aOiIgLS0gZXNyKQotYWRkcmluZm8sCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XlosIGN1ZDE9XkosIGN1ZjE9XlksCi0JY3VwPVwwMzclcDElYyVwMiVjLCBjdXUxPV5cLCBlZD1eSywgaG9tZT1eSCwgaW5kPV5KLCBsbD1eSF5cLAotIyAoaW5mb3RvbjogdXNlZCB0byBoYXZlIHRoZSBuby1vcHMgPGxoIzA+LCA8bHcjMD4sIDxubGFiIzA+IC0tIGVzcikKLWluZm90b24sCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XlosIGN1ZDE9XkosIGN1ZjE9XlksIGN1dTE9XlwsCi0JZWQ9XkssIGluZD1eSiwgbGw9XkheXCwKLQotIyBUaGUgSUNMNjQwMiB3YXMgYWN0dWFsbHkgdGhlIEtva3VzYWkgRGlzcGxheSBTeXN0ZW0gNjQwMi4KLSMgVGhlIDY0MDQgd2FzIHRoZSBLRFM3MzcyIChjb2xvciB2ZXJzaW9uIG9mIHRoZSA2NDAyKS4KLSMKLSMgSUNMNjQwNCBjb250cm9sIGNvZGVzIGZvbGxvdzoKLSMKLSNjb2RlICAgICAgICAgICAgZnVuY3Rpb24KLSN+fn5+fn5+fn5+fiAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotI2N0cmwtQSAgICAgICAgICBzZXQgU09NIHBvc2l0aW9uIGF0IGN1cnNvciBwb3NpdGlvbgotI2N0cmwtRyAgICAgICAgICBCZWxsCi0jY3RybC1IICAgICAgICAgIEJhY2tzcGFjZQotI2N0cmwtSSAgICAgICAgICBIb3JpeiB0YWIKLSNjdHJsLUogICAgICAgICAgTGluZWZlZWQKLSNjdHJsLUsgICAgICAgICAgQ3Vyc29yIHVwCi0jY3RybC1MICAgICAgICAgIEN1cnNvciByaWdodAotI2N0cmwtTSAgICAgICAgICBDYXJyaWFnZSByZXR1cm4KLSNjdHJsLU4gICAgICAgICAgRGlzYWJsZSB4b24veG9mZiB0byBob3N0Ci0jY3RybC1PICAgICAgICAgIEVuYWJsZSB4b24veG9mZiB0byBob3N0Ci0jY3RybC1SICAgICAgICAgIEVuYWJsZSBiaWRpcmVjdGlvbmFsIG1vZGUKLSNjdHJsLVQgICAgICAgICAgRGlzYWJsZSBiaWRpcmVjdGlvbmFsIG1vZGUKLSNjdHJsLVYgICAgICAgICAgQ3Vyc29yIGRvd24KLSNjdHJsLVogICAgICAgICAgQ2xlYXIgdW5wcm90ZWN0ZWQgZGF0YSB0byBpbnNlcnQgY2hhcgotI2N0cmwtXiAgICAgICAgICBDdXJzb3IgaG9tZQotI2N0cmwtXyAgICAgICAgICBOZXdsaW5lCi0jCi0jRVNDICAgICAgICAgICAgIGxlYWQtaW4gY2hhciBmb3IgbXVsdGlwbGUgY2hhcmFjdGVyIGNvbW1hbmQKLSMKLSNFU0Mgc3BhY2UgUiAgICAgZXhlY3V0ZSBwb3dlciBvbiBzZXF1ZW5jZQotI0VTQyAhIHAxIHAyICAgICBkZWZpbmUgc2Nyb2xsIHJlZ2lvbjoKLSMgICAgICAgICAgICAgICAgcDEgPSBzY3JvbGwgdG9wICAgIGxpbmU6ICAyMGggLSAzN2gKLSMgICAgICAgICAgICAgICAgcDEgPSBzY3JvbGwgYm90dG9tIGxpbmU6ICAyMGggLSAzN2gKLSNFU0MgIiAgICAgICAgICAgdW5sb2NrIGtleWJvYXJkCi0jRVNDICMgICAgICAgICAgIGxvY2sga2V5Ym9hcmQKLSNFU0MgJCAgICAgICAgICAgU2VtaS1ncmFwaGljcyBtb2RlIG9uCi0jRVNDICUgICAgICAgICAgIFNlbWktZ3JhcGhpY3MgbW9kZSBvZmYKLSNFU0MgJiAgICAgICAgICAgcHJvdGVjdCBtb2RlIG9uCi0jRVNDICcgICAgICAgICAgIHByb3RlY3QgbW9kZSBvZmYKLSNFU0MgKCAgICAgICAgICAgd3JpdGUgcHJvdGVjdCBtb2RlIG9mZiAoZnVsbCBpbnRlbnNpdHkpCi0jRVNDICkgICAgICAgICAgIHdyaXRlIHByb3RlY3QgbW9kZSBvbiAoaGFsZiBpbnRlbnNpdHkpCi0jCi0jRVNDICogICAgICAgICAgIGNsZWFyIHNjcmVlbgotI0VTQyArICAgICAgICAgICBjbGVhciB1bnByb3RlY3RlZCBkYXRhIHRvIGluc2VydCBjaGFyCi0jRVNDICwgICAgICAgICAgIGNsZWFyIHVucHJvdGVjdGVkIGRhdGEgdG8gaGFsZiBpbnRlbnNpdHkgc3BhY2VzCi0jRVNDIC0gcDEgcDIgcDMgcDQgICAgIGFkZHJlc3MgY3Vyc29yIHRvIHBhZ2UsIHJvdywgY29sdW1uOgotIyAgICAgICAgICAgICAgICAgICAgICBwMSA9IHBhZ2UgbnVtYmVyICAwIC0gMwotIyAgICAgICAgICAgICAgICAgICAgICBwMiA9IHJvdyAgICAgICAgICAyMGggLSA3ZmgKLSMgICAgICAgICAgICAgICAgICAgICAgcDMgPSBjb2x1bW4gKGxvKSAgMjBoIC0gN2ZoCi0jICAgICAgICAgICAgICAgICAgICAgIHA0ID0gY29sdW1uIChoaSkgIDIwaCAtIDIxaCAob25seSAxMzIgY29sKQotI0VTQyAuIHAxICAgICAgICBzZXQgY3Vyc29yIHN0eWxlOgotIyAgICAgICAgICAgICAgICBwMSA9IDAgIGludmlzaWJsZSBjdXJzb3IKLSMgICAgICAgICAgICAgICAgcDEgPSAxICBibG9jayBibGlua2luZyBjdXJzb3IKLSMgICAgICAgICAgICAgICAgcDEgPSAyICBibG9jayBzdGVhZHkgY3Vyc29yCi0jICAgICAgICAgICAgICAgIHAxID0gMyAgdW5kZXJsaW5lIGJsaW5raW5nIGN1cnNvcgotIyAgICAgICAgICAgICAgICBwMSA9IDQgIHVuZGVybGluZSBzdGVhZHkgY3Vyc29yCi0jRVNDIC8gICAgICAgICAgIHRyYW5zbWl0IGN1cnNvciBsb2NhdGlvbiAocGFnZSwgcm93LCBjb2x1bW4pCi0jRVNDIDAgcDEgcDIgcDMgcDQgICAgIHByb2dyYW0gZWRpdCBrZXk6Ci0jICAgICAgICAgICAgICAgICAgICAgIHAxID0gZWRpdCBrZXkgY29kZTogJ0AnLSdTJywgJ2AnLSdzJwotIyAgICAgICAgICAgICAgICAgICAgICBwMiBwMyBwNCA9IHByb2dyYW0gZGF0YSAoMyBieXRlcykKLSMKLSNFU0MgMSAgICAgICAgICAgc2V0IHRhYgotI0VTQyAyICAgICAgICAgICBjbGVhciB0YWIgYXQgY3Vyc29yCi0jRVNDIDMgICAgICAgICAgIGNsZWFyIGFsbCB0YWJzCi0jRVNDIDQgICAgICAgICAgIHNlbmQgdW5wcm90ZWN0IGxpbmUgdG8gY3Vyc29yCi0jRVNDIDUgICAgICAgICAgIHNlbmQgdW5wcm90ZWN0IHBhZ2UgdG8gY3Vyc29yCi0jRVNDIDYgICAgICAgICAgIHNlbmQgbGluZSB0byBjdXJzb3IKLSNFU0MgNyAgICAgICAgICAgc2VuZCBwYWdlIHRvIGN1cnNvcgotI0VTQyA4IG4gICAgICAgICBzZXQgc2Nyb2xsIG1vZGU6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgc2V0IGp1bXAgc2Nyb2xsCi0jICAgICAgICAgICAgICAgIG4gPSAxICAgc2V0IHNtb290aCBzY3JvbGwKLSNFU0MgOSBuICAgICAgICAgY29udHJvbCBkaXNwbGF5OgotIyAgICAgICAgICAgICAgICBuID0gMCAgIGRpc3BsYXkgb2ZmCi0jICAgICAgICAgICAgICAgIG4gPSAxICAgZGlzcGxheSBvbgotI0VTQyA6ICAgICAgICAgICBjbGVhciB1bnByb3RlY3RlZCBkYXRhIHRvIG51bGwKLSNFU0MgOyAgICAgICAgICAgY2xlYXIgdW5wcm90ZWN0ZWQgZGF0YSB0byBpbnNlcnQgY2hhcgotIwotI0VTQyA8ICAgICAgICAgICBrZXljbGljayBvbgotI0VTQyA9IHAxIHAyICAgICBhZGRyZXNzIGN1cnNvciB0byByb3csIGNvbHVtbgotIyAgICAgICAgICAgICAgICBwMSA9IHJvdyAgICAgICAgICAyMGggLSA3ZmgKLSMgICAgICAgICAgICAgICAgcDIgPSBjb2x1bW4gKGxvKSAgMjBoIC0gN2ZoCi0jICAgICAgICAgICAgICAgIHAzID0gY29sdW1uIChoaSkgIDIwaCAtIDIxaCAob25seSAxMzIgY29sKQotI0VTQyA+ICAgICAgICAgICBrZXljbGljayBvZmYKLSNFU0MgPyAgICAgICAgICAgdHJhbnNtaXQgY3Vyc29yIGxvY2F0aW9uIChyb3csIGNvbHVtbikKLSMKLSNFU0MgQCAgICAgICAgICAgY29weSBwcmludCBtb2RlIG9uCi0jRVNDIEEgICAgICAgICAgIGNvcHkgcHJpbnQgbW9kZSBvZmYKLSNFU0MgQiAgICAgICAgICAgYmxvY2sgbW9kZSBvbgotI0VTQyBDICAgICAgICAgICBibG9jayBtb2RlIG9mZiAoY29udmVyc2F0aW9uIG1vZGUpCi0jRVNDIEQgRiAgICAgICAgIHNldCBmdWxsIGR1cGxleAotI0VTQyBEIEggICAgICAgICBzZXQgaGFsZiBkdXBsZXgKLSNFU0MgRSAgICAgICAgICAgbGluZSBpbnNlcnQKLSNFU0MgRiBwMSBwMiAgICAgc2V0IHBhZ2UgY29sb3VyIChwMSA9IGYvZ3JuZCwgcDIgPSBiL2dybmQpCi0jICAgICAgICAgICAgICAgIDAgPSBibGFjaywgMSA9IHJlZCwgICAgIDIgPSBncmVlbiwgMyA9IHllbGxvdwotIyAgICAgICAgICAgICAgICA0ID0gYmx1ZSwgIDUgPSBtYWdlbnRhLCA2ID0gY3lhbiwgIDcgPSB3aGl0ZQotI0VTQyBHIG4gICAgICAgICBzZXQgc2VyaWFsIGZpZWxkIGF0dHJpYnV0ZSAobiA9IDMwaCAtIDNGaCkKLSNFU0MgSCBuICAgICAgICAgZnVsbCBncmFwaGljcyBtb2RlOgotIyAgICAgICAgICAgICAgICBuID0gMCAgZXhpdCBmdWxsIGdyYXBoaWNzIG1vZGUKLSMgICAgICAgICAgICAgICAgbiA9IDEgIGVudGVyIGZ1bGwgZ3JhcGhpY3MgbW9kZQotI0VTQyBJICAgICAgICAgICBiYWNrIHRhYgotI0VTQyBKICAgICAgICAgICBiYWNrIHBhZ2UKLSNFU0MgSyAgICAgICAgICAgZm9yd2FyZCBwYWdlCi0jCi0jRVNDIEwgICAgICAgICAgIHVuZm9ybWF0dGVkIHBhZ2UgcHJpbnQKLSNFU0MgTSBMICAgICAgICAgbW92ZSB3aW5kb3cgbGVmdCAgKDEzMiBjb2wgbW9kZSBvbmx5KQotI0VTQyBNIFIgICAgICAgICBtb3ZlIHdpbmRvdyByaWdodCAoMTMyIGNvbCBtb2RlIG9ubHkpCi0jRVNDIE4gICAgICAgICAgIHNldCBwYWdlIGVkaXQgKGNsZWFyIGxpbmUgZWRpdCkKLSNFU0MgTyAgICAgICAgICAgc2V0IGxpbmUgZWRpdCAoY2xlYXIgcGFnZSBlZGl0KQotI0VTQyBQICAgICAgICAgICBmb3JtYXR0ZWQgcGFnZSBwcmludAotI0VTQyBRICAgICAgICAgICBjaGFyYWN0ZXIgaW5zZXJ0Ci0jRVNDIFIgICAgICAgICAgIGxpbmUgZGVsZXRlCi0jRVNDIFMgICAgICAgICAgIHNlbmQgbWVzc2FnZSB1bnByb3RlY3RlZCBvbmx5Ci0jRVNDIFQgICAgICAgICAgIGVyYXNlIGxpbmUgdG8gaW5zZXJ0IGNoYXIKLSNFU0MgVSAgICAgICAgICAgc2V0IG1vbml0b3IgbW9kZSAgIChzZWUgRVNDIFgsIEVTQyB1KQotIwotI0VTQyBWIG4gICAgICAgICBzZWxlY3QgdmlkZW8gYXR0cmlidXRlIG1vZGU6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgc2VyaWFsIGZpZWxkIGF0dHJpYnV0ZSBtb2RlCi0jICAgICAgICAgICAgICAgIG4gPSAxICAgcGFyYWxsZWwgY2hhcmFjdGVyIGF0dHJpYnV0ZSBtb2RlCi0jRVNDIFYgMiBuICAgICAgIGRlZmluZSBsaW5lIGF0dHJpYnV0ZToKLSMgICAgICAgICAgICAgICAgbiA9IDAgICBzaW5nbGUgd2lkdGggc2luZ2xlIGhlaWdodAotIyAgICAgICAgICAgICAgICBuID0gMSAgIHNpbmdsZSB3aWR0aCBkb3VibGUgaGVpZ2h0Ci0jICAgICAgICAgICAgICAgIG4gPSAyICAgZG91YmxlIHdpZHRoIHNpbmdsZSBoZWlnaHQKLSMgICAgICAgICAgICAgICAgbiA9IDMgICBkb3VibGUgd2lkdGggZG91YmxlIGhlaWdodAotI0VTQyBWIDMgbiAgICAgICBzZWxlY3QgY2hhcmFjdGVyIGZvbnQ6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgc3lzdGVtIGZvbnQKLSMgICAgICAgICAgICAgICAgbiA9IDEgICB1c2VyIGRlZmluZWQgZm9udAotI0VTQyBWIDQgbiAgICAgICBzZWxlY3Qgc2NyZWVuIG1vZGU6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgcGFnZSBzY3JlZW4gbW9kZQotIyAgICAgICAgICAgICAgICBuID0gMSAgIHZpcnR1YWwgc2NyZWVuIG1vZGUKLSNFU0MgViA1IG4gICAgICAgY29udHJvbCBtb3VzZSBtb2RlOgotIyAgICAgICAgICAgICAgICBuID0gMCAgIGRpc2FibGUgbW91c2UKLSMgICAgICAgICAgICAgICAgbiA9IDEgICBlbmFibGUgc2FtcGxlIG1vZGUKLSMgICAgICAgICAgICAgICAgbiA9IDIgICBzZW5kIG1vdXNlIGluZm9ybWF0aW9uCi0jICAgICAgICAgICAgICAgIG4gPSAzICAgZW5hYmxlIHJlcXVlc3QgbW9kZQotI0VTQyBXICAgICAgICAgICBjaGFyYWN0ZXIgZGVsZXRlCi0jRVNDIFggICAgICAgICAgIGNsZWFyIG1vbml0b3IgbW9kZSAoc2VlIEVTQyBVLCBFU0MgdSkKLSNFU0MgWSAgICAgICAgICAgZXJhc2UgcGFnZSB0byBpbnNlcnQgY2hhcgotIwotI0VTQyBaIG4gICAgICAgICBzZW5kIHVzZXIvc3RhdHVzIGxpbmU6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgc2VuZCB1c2VyIGxpbmUKLSMgICAgICAgICAgICAgICAgbiA9IDEgICBzZW5kIHN0YXR1cyBsaW5lCi0jICAgICAgICAgICAgICAgIG4gPSAyICAgc2VuZCB0ZXJtaW5hbCBJRAotI0VTQyBbIHAxIHAyIHAzICBzZXQgY2hhcmFjdGVyIGF0dHJpYnV0ZSAocGFyYWxsZWwgY2hhciBtb2RlKToKLSMgICAgICAgICAgICAgICAgcDE6IDAgPSBub3JtYWwKLSMgICAgICAgICAgICAgICAgICAgIDEgPSBibGFuawotIyAgICAgICAgICAgICAgICAgICAgMiA9IGJsaW5rCi0jICAgICAgICAgICAgICAgICAgICAzID0gYmxpbmsgYmxhbmsgKD0gYmxhbmspCi0jICAgICAgICAgICAgICAgICAgICA0ID0gcmV2ZXJzZQotIyAgICAgICAgICAgICAgICAgICAgNSA9IHJldmVyc2UgYmxhbmsKLSMgICAgICAgICAgICAgICAgICAgIDYgPSByZXZlcnNlIGJsaW5rCi0jICAgICAgICAgICAgICAgICAgICA3ID0gcmV2ZXJzZSBibGluayBibGFuayAoPSByZXZlcnNlIGJsYW5rKQotIyAgICAgICAgICAgICAgICAgICAgOCA9IHVuZGVybGluZQotIyAgICAgICAgICAgICAgICAgICAgOSA9IHVuZGVybGluZSBibGFuawotIyAgICAgICAgICAgICAgICAgICAgOiA9IHVuZGVybGluZSBibGluawotIyAgICAgICAgICAgICAgICAgICAgOyA9IHVuZGVybGluZSBibGluayBibGFuawotIyAgICAgICAgICAgICAgICAgICAgPCA9IHJldmVyc2UgdW5kZXJsaW5lCi0jICAgICAgICAgICAgICAgICAgICA9ID0gcmV2ZXJzZSB1bmRlcmxpbmUgYmxhbmsKLSMgICAgICAgICAgICAgICAgICAgID4gPSByZXZlcnNlIHVuZGVybGluZSBibGluawotIyAgICAgICAgICAgICAgICAgICAgPyA9IHJldmVyc2UgdW5kZXJsaW5lIGJsaW5rIGJsYW5rCi0jICAgICAgICAgICAgICAgIHAyLCBwMzogZi9ncm5kLCBiL2dybmQgY29sb3VyCi0jICAgICAgICAgICAgICAgIChzZWUgRVNDIEYgZm9yIGNvbG91cnMpCi0jICAgICAgICAgICAgICAgIHVzZSBaWiBmb3IgbW9ubywgZWcuCi0jICAgICAgICAgICAgICAgICAgICBFU0MgWyAwIFogWiBmb3Igbm9ybWFsCi0jICAgICAgICAgICAgICAgICAgICBFU0MgWyA0IFogWiBmb3IgaW52ZXJzZSBldGMuCi0jCi0jRVNDIFwgbiAgICAgICAgIHNldCBwYWdlIHNpemU6Ci0jICAgICAgICAgICAgICAgIG4gPSAxICAgMjQgbGluZXMvcGFnZQotIyAgICAgICAgICAgICAgICBuID0gMiAgIDQ4IGxpbmVzL3BhZ2UKLSMgICAgICAgICAgICAgICAgbiA9IDMgICA3MiBsaW5lcy9wYWdlCi0jICAgICAgICAgICAgICAgIG4gPSA0ICAgOTYgbGluZXMvcGFnZQotI0VTQyBdIG4gICAgICAgICBzZXQgV29yZHN0YXIgbW9kZToKLSMgICAgICAgICAgICAgICAgbiA9IDAgICBub3JtYWwgKEtEUzczNzIpIG1vZGUKLSMgICAgICAgICAgICAgICAgbiA9IDEgICBXb3Jkc3RhciBtb2RlCi0jCi0jRVNDIGIgICAgICAgICAgIHNldCBmb3JlZ3JvdW5kIGNvbG91ciBzY3JlZW4KLSMKLSNFU0MgYyBuICAgICAgICAgZW50ZXIgc2VsZi10ZXN0IG1vZGU6Ci0jICAgICAgICAgICAgICAgIG4gPSAwICAgZXhpdCBzZWxmIHRlc3QgbW9kZQotIyAgICAgICAgICAgICAgICBuID0gMSAgIFJPTSB0ZXN0Ci0jICAgICAgICAgICAgICAgIG4gPSAyICAgUkFNIHRlc3QKLSMgICAgICAgICAgICAgICAgbiA9IDMgICBOVlJBTSB0ZXN0Ci0jICAgICAgICAgICAgICAgIG4gPSA0ICAgc2NyZWVuIGRpc3BsYXkgdGVzdAotIyAgICAgICAgICAgICAgICBuID0gNSAgIG1haW4vcHJpbnRlciBwb3J0IHRlc3QKLSMgICAgICAgICAgICAgICAgbiA9IDYgICBtb3VzZSBwb3J0IHRlc3QKLSMgICAgICAgICAgICAgICAgbiA9IDcgICBncmFwaGljcyBib2FyZCB0ZXN0Ci0jICAgICAgICAgICAgICAgIG4gPSA4ICAgZ3JhcGhpY3MgbWVtb3J5IHRlc3QKLSMgICAgICAgICAgICAgICAgbiA9IDkgICBkaXNwbGF5IGFsbCAnRScKLSMgICAgICAgICAgICAgICAgbiA9IDogICBkaXNwbGF5IGFsbCAnSCcKLSNFU0MgZCAgICAgICAgICAgc2V0IGJhY2tncm91bmQgY29sb3VyIHNjcmVlbgotIwotI0VTQyBlIG4gICAgICAgICBwcm9ncmFtIGluc2VydCBjaGFyIChuID0gaW5zZXJ0IGNoYXIpCi0jRVNDIGYgdGV4dCBDUiAgIGxvYWQgdXNlciBzdGF0dXMgbGluZSB3aXRoICd0ZXh0JwotIwotI0VTQyBnICAgICAgICAgICBkaXNwbGF5IHVzZXIgc3RhdHVzIGxpbmUgb24gMjV0aCBsaW5lCi0jRVNDIGggICAgICAgICAgIGRpc3BsYXkgc3lzdGVtIHN0YXR1cyBsaW5lIG9uIDI1dGggbGluZQotI0VTQyBpICAgICAgICAgICB0YWIKLSNFU0MgaiAgICAgICAgICAgcmV2ZXJzZSBsaW5lZmVlZAotI0VTQyBrIG4gICAgICAgICBkdXBsZXgvbG9jYWwgZWRpdCBtb2RlOgotIyAgICAgICAgICAgICAgICBuID0gMCAgIGR1cGxleCBlZGl0IG1vZGUKLSMgICAgICAgICAgICAgICAgbiA9IDEgICBsb2NhbCBlZGl0IG1vZGUKLSNFU0MgbCBuICAgICAgICAgc2VsZWN0IHZpcnR1YWwgc2NyZWVuOgotIyAgICAgICAgICAgICAgICBuID0gMCAgIHNjcmVlbiAxCi0jICAgICAgICAgICAgICAgIG4gPSAxICAgc2NyZWVuIDIKLSNFU0MgbSAgICAgICAgICAgc2F2ZSBjdXJyZW50IGNvbmZpZyB0byBOVlJBTQotI0VTQyBuIHAxICAgICAgICBzZWxlY3QgZGlzcGxheSBzY3JlZW46Ci0jICAgICAgICAgICAgICAgIHAxID0gMCAgc2NyZWVuIDEKLSMgICAgICAgICAgICAgICAgcDEgPSAxICBzY3JlZW4gMgotIyAgICAgICAgICAgICAgICBwMSA9IDIgIHNjcmVlbiAzCi0jICAgICAgICAgICAgICAgIHAxID0gMyAgc2NyZWVuIDQKLSNFU0MgbyBwMSBwMiAgICAgc2V0IGNoYXJhY3RlcnMvbGluZSBhbmQgYXR0cmlidXRlOgotIyAgICAgICAgICAgICAgICBwMSA9IDAgIDgwIGNoYXJzL2xpbmUKLSMKLSNFU0MgbyBwMSBwMiAgICAgc2V0IGNoYXJhY3RlcnMvbGluZSBhbmQgYXR0cmlidXRlOgotIyAgICAgICAgICAgICAgICBwMSA9IDAgIDgwIGNoYXJzL2xpbmUKLSMgICAgICAgICAgICAgICAgcDEgPSAxICAxMzIgY2hhcnMvbGluZQotIyAgICAgICAgICAgICAgICBwMiA9IDAgIHNpbmdsZSB3aWR0aCBzaW5nbGUgaGVpZ2h0Ci0jICAgICAgICAgICAgICAgIHAyID0gMSAgc2luZ2xlIHdpZHRoIGRvdWJsZSBoZWlnaHQKLSMgICAgICAgICAgICAgICAgcDIgPSAyICBkb3VibGUgd2lkdGggc2luZ2xlIGhlaWdodAotIyAgICAgICAgICAgICAgICBwMiA9IDMgIGRvdWJsZSB3aWR0aCBkb3VibGUgaGVpZ2h0Ci0jCi0jRVNDIHEgICAgICAgICAgIGluc2VydCBtb2RlIG9uCi0jRVNDIHIgICAgICAgICAgIGVkaXQgbW9kZSBvbgotI0VTQyBzICAgICAgICAgICBzZW5kIG1lc3NhZ2UgYWxsCi0jRVNDIHQgICAgICAgICAgIGVyYXNlIGxpbmUgdG8gbnVsbAotI0VTQyB1ICAgICAgICAgICBjbGVhciBtb25pdG9yIG1vZGUgKHNlZSBFU0MgVSwgRVNDIFgpCi0jRVNDIHYgICAgICAgICAgIGF1dG9wYWdlIG1vZGUgb24KLSNFU0MgdyAgICAgICAgICAgYXV0b3BhZ2UgbW9kZSBvZmYKLSNFU0MgeCBwMSBwMiBwMyAgZGVmaW5lIGRlbGltaXRlciBjb2RlLi4uCi0jRVNDIHkgICAgICAgICAgIGVyYXNlIHBhZ2UgdG8gbnVsbAotIwotI0VTQyB6IDIgcDEgcDIgcDMgcDQgICBkcmF3IHF1YWRyYW5nbGU6Ci0jICAgICAgICAgICAgICAgICAgICAgIHAxID0gc3RhcnRpbmcgcm93Ci0jICAgICAgICAgICAgICAgICAgICAgIHAyID0gc3RhcnRpbmcgY29sdW1uCi0jICAgICAgICAgICAgICAgICAgICAgIHAzID0gZW5kIHJvdwotIyAgICAgICAgICAgICAgICAgICAgICBwNCA9IGVuZCBjb2x1bW4KLSMKLSNFU0MgeyBwMSBwMiBwMyBwNCAgICAgY29uZmlndXJlIG1haW4gcG9ydAotIyAgICAgICAgICAgICAgICAgICAgICAoYmF1ZCwgc3RvcCBiaXRzLCBwYXJpdHksIHdvcmQgbGVuZ3RoKQotIwotI0VTQyB8IHAxIHAyIHRleHQgQ3RybC1ZICAgIHByb2dyYW0gZnVuY3Rpb24ga2V5IHdpdGggJ3RleHQnOgotIyAgICAgICAgICAgICAgICAgICAgICAgIHAxID0gZnVuY3Rpb24ga2V5IGNvZGU6Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMScgLSAnOycgIG5vcm1hbCBmMS0gZjExCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCcgLSAnRicgIHNoaWZ0ZWQgZjEgLSBmMTEKLSMgICAgICAgICAgICAgICAgICAgICAgICBwMiA9IHByb2dyYW0gbW9kZToKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBGRFgKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgPSBMT0MKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgPSBIRFgKLSMgICAgICAgICAgICAgICAgICAgICAgICBDdHJsLVkgPSB0ZXJtaW5hdG9yCi0jICAgICAgICAgICAgICAgICAgICAgICAgKHVzZSBDdHJsLVAgdG8gZXNjYXBlIF5QLCBeWSApCi0jCi0jRVNDIH0gcDEgcDIgcDMgcDQgICAgIGNvbmZpZ3VyZSBwcmludGVyIHBvcnQKLSMgICAgICAgICAgICAgICAgICAgICAgKGJhdWQsIHN0b3AgYml0cywgcGFyaXR5LCB3b3JkIGxlbmd0aCkKLSNFU0MgfiAgICAgICAgICAgc2VuZCBzeXN0ZW0gc3RhdHVzCi0jCi0jIENvZGVzIGFuZCBpbmZvIGZyb20gUGV0ZXIgRGlzZGFsZSA8cGV0ZUBwZGxtYWlsLmRlbW9uLmNvLnVrPiAxMiBNYXkgMTk5NwotIwotIyBFbnRyeSBpcyBieSBlc3IgZ29pbmcgc29sZWx5IG9uIGFib3ZlIGluZm9ybWF0aW9uIGFuZCBpcyBVTlRFU1RFRC4KLSMgVGhpcyBhY3R1YWxseSBsb29rcyBhIGxvdCBsaWtlIGEgVGVsZXZpZGVvIDl4eC4KLSMgVGhpcyBlbnRyeSB1c2VzIHBhZ2UgMCBhbmQgaXMgbW9ub2Nocm9tZTsgSSdtIG5vdCBicmF2ZSBlbm91Z2ggdG8gdHJ5Ci0jIHRvIG1ha2UgY29sb3Igd29yayB3aXRob3V0IGEgdGVzdCB0ZXJtaW5hbC4gIFRoZSA8YW0+IGNhcGFiaWxpdHkgaXMgYSBndWVzcy4KLSMgVGhlIGluaXRpYWxpemF0aW9uIHN0cmluZyBzZXRzIGNvbnZlcnNhdGlvbiBtb2RlLCBibGlua2luZyB1bmRlcmxpbmUgY3Vyc29yLAotIyBmdWxsIGR1cGxleCwgcGFyYWxsZWwgYXR0cmlidXRlIG1vZGUsIGRpc3BsYXkgdXNlciBzdGF0dXMgbGluZSwgd2hpdGUKLSMgZm9yZWdyb3VuZCwgYmxhY2sgYmFja2dyb3VuZCwgbm9ybWFsIGhpZ2hsaWdodC4KLSMKLWljbDY0MDR8a2RzNzM3MnxpY2w2NDAyfGtkczY0MDJ8SUNMIDY0MDQgYWthIEtva3VzYWkgRGlzcGxheSBTeXN0ZW1zIDczNzIsCi0JT1RicywgYW0sIGhzLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbMlpaLCBjYnQ9XEVJLCBjaXZpcz1cRS4wLCBjbGVhcj1cRSosCi0JY25vcm09XEUuMywgY3I9Xk0sCi0JY3NyPVxFISUrJXAxJXszMn0lKyVwMiV7MzJ9IGN1ZDE9XDAyNiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXs4MH0lbSV7MzJ9JSslYyVwMiV7ODB9JT4lezMyfSUrJWMsCi0JY3V1MT1eSywgY3Z2aXM9XEUuMSwgZGNoMT1cRVcsIGRsMT1cRVIsIGhvbWU9Xl4sIGh0PV5JLAotCWh0cz1cRTEsIGlsMT1cRUUsIGludmlzPVxFWzFaWiwKLQlpczE9XEVDXEUuM1xFREZcRVYxXEVnXEVbMFpaLCBuZWw9Xl8sIHJldj1cRVs0WlosCi0Jcm1pcj1cRXIsIHJtc289XEVbJWdoJXs0fSVeJVBoJWdoJWRaWiwKLQlybXVsPVxFWyVnaCV7OH0lXiVQaCVnaCVkWlosIHJzMj1cRW8xLAotCXNncj1cRVslezB9JT8lcDEldCV7NH0lfCU7JT8lcDIldCV7OH0lfCU7JT8lcDMldCV7NH0lfCU7JT8lcDQldCV7Mn0lfCU7JT8lcDcldCV7MX0lfCU7WlosCi0Jc2dyMD1cRVswWlosIHNtaXI9XEVxLCBzbXNvPVxFWzhaWiwgc211bD1cRVs4WlosIHRiYz1cRTMsCi1pY2w2NDA0LXd8a2RzNzM3Mi13fElDTCA2NDA0IGFrYSBLb2t1c2FpIERpc3BsYXkgU3lzdGVtcyA3MzcyIDEzMiBjb2xzLAotCXJzMj1cRW8xLCB1c2U9aWNsNjQwNCwKLQotIyMjIyBJbnRlcmFjdGl2ZSBTeXN0ZW1zIENvcnAKLSMKLSMgSVNDIHVzZWQgdG8gc2VsbCBPRU1lZCBhbmQgY3VzdG9taXplZCBoYXJkd2FyZSB0byBzdXBwb3J0IElTQyBVTklYLgotIyBJU0MgVU5JWCBzdGlsbCBleGlzdHMgaW4gMTk5NSwgYnV0IElTQyBpdHNlbGYgaXMgbm8gbW9yZTsgdGhleSBnb3QKLSMgYm91Z2h0IG91dCBieSBTdW4uCi0jCi0KLSMgRnJvbTogPGNpdGhlcCFlcmljPiAgV2VkIFNlcCAxNiAwODowNjo0NCAxOTgxCi0jIChpbnRleHQ6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eS15QXlJeTF5MIDo6YmM9Xl86IiwgYWxzbyB0aGUKLSMgIjpsZT1eXzoiIGxhdGVyIG92ZXJyaWRkZW4gLS0gZXNyKQotaW50ZXh0fEludGVyYWN0aXZlIFN5c3RlbXMgQ29ycG9yYXRpb24gbW9kaWZpZWQgb3dsIDEyMDAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHhtYyMxLAotCWJlbD1eRywgY2J0PV5ZLCBjbGVhcj1cMDE0JDwxMzI+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5eLCBjdXA9XDAxNyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eXCwKLQlkY2gxPVwwMjIkPDUuNSo+LCBkbDE9XDAyMSQ8NS41Kj4sIGVkPVwwMjZKJDw1LjUqPiwKLQllbD1eS3BeUiwgaHQ9XkksIGlsMT1cMDIwJDw1LjUqPiwgaW5kPV5KLCBpcD0kPDUuNSo+LCBrYnM9XkgsCi0Ja2N1YjE9Xl8sIGtjdWQxPV5KLCBrY3VmMT1eXiwga2N1dTE9XlwsIGtmMD1eVkpcciwga2YxPV5WQVxyLAotCWtmMj1eVkJcciwga2YzPV5WQ1xyLCBrZjQ9XlZEXHIsIGtmNT1eVkVcciwga2Y2PV5WRlxyLAotCWtmNz1eVkdcciwga2Y4PV5WSFxyLCBrZjk9XlZJXHIsIGtob21lPV5aLCBybWlyPV5WPCwKLQlybWt4PV5WOSwgcm1zbz1eViNccywgc21pcj1eVjssIHNta3g9XDAzNlw6XDI2NFwwMjYlJSwKLQlzbXNvPV5WJFwsLAotaW50ZXh0MnxpbnRleHRpaXxJTlRFUkFDVElWRSBtb2RpZmllZCBvd2wgMTI1MSwKLQlhbSwgYncsIHVsLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQliZWw9XkcsIGNidD1cRVtaLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWQxPVxFW0IsCi0JY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLAotCWZsYXNoPVxFWzs7Ozs7Ozs7OzI7O3UkPDIwMC8+XEVbOzs7Ozs7Ozs7MTs7dSwKLQlocGE9XEVbJXAxJXsxfSUrJWRHLCBodD1eSSwgaWNoMT1cRVtALCBpbDE9XEVbTCwgaW5kPVxFW1MsCi0Ja2JzPV5ILCBrY3ViMT1cRURcciwga2N1ZDE9XEVCXHIsIGtjdWYxPVxFQ1xyLCBrY3V1MT1cRUFcciwKLQlrZjA9XEVAXHIsIGtmMT1cRVBcciwga2YyPVxFUVxyLCBrZjM9XEVTXHIsIGtmND1cRVRcciwKLQlrZjU9XEVVXHIsIGtmNj1cRVZcciwga2Y3PVxFV1xyLCBrZjg9XEVYXHIsIGtmOT1cRVlcciwKLQlraG9tZT1cRVJcciwgbGYwPVJFRlJTSCwgbGYxPURFTCBDSCwgbGYyPVRBQlNFVCwgbGYzPUdPVE8sCi0JbGY0PStQQUdFLCBsZjU9K1NSQ0gsIGxmNj0tUEFHRSwgbGY3PS1TUkNILCBsZjg9TEVGVCwKLQlsZjk9UklHSFQsIHJpPVxFW1QsIHJtc289XEVbMiBELCBybXVsPVxFWzIgRCwgc21zbz1cRVs2IEQsCi0Jc211bD1cRVsxOCBELAotCi0jIyMjIEtpbXRyb24gKGFibSwga3QpCi0jCi0jIEtpbXRyb24gc2VlbXMgdG8gYmUgaGlzdG9yeSwgYnV0IGFzIE1hcmNoIDE5OTggdGhlc2UgcGVvcGxlIGFyZSBzdGlsbAotIyBvZmZlcmluZyByZXBhaXIgc2VydmljZXMgZm9yIEtpbXRyb24gZXF1aXBtZW50OgotIwotIyAgICBDb20vUGFpciBNb25pdG9yIFNlcnZpY2UKLSMgICAgMTEwNSBOLiBDbGlmZiBBdmUuCi0jICAgIFNpb3V4IEZhbGxzLCBTb3V0aCBEYWtvdGEgNTcxMDMKLSMKLSMgICAgV0FUUyB2b2ljZTogIDEtODAwLzM5OC00OTQ2Ci0jICAgIFBPVFMgICBmYXg6ICsxIDYwNS8zMzgtODcwOQotIyAgICBQT1RTIHZvaWNlOiArMSA2MDUvMzM4LTk2NTAKLSMgICAgICAgICBFbWFpbDogPGNvbXBhaXJAc2QuY3liZXJuZXgubmV0PgotIyAgSW50ZXJuZXQvV2ViOiA8aHR0cDovL3d3dy5jb20tcGFpci5jb20+Ci0jCi0jIEtpbXRyb24gZW50cmllcyBpbmNsdWRlICh1bmRvY3VtZW50ZWQpIGNvZGVzIGZvcjogZW50ZXIgZGltIG1vZGUsCi0jIGVudGVyIGJvbGQgbW9kZSwgZW50ZXIgcmV2ZXJzZSBtb2RlLCB0dXJuIG9mZiBhbGwgYXR0cmlidXRlcy4KLSMKLQotIyBLaW10cm9uIEFCTSA4NSBhZGRlZCBieSBEdWFsIFN5c3RlbXMKLSMgKGFibTg1OiByZW1vdmVkIGR1cGxpY2F0ZWQgIjprZD1eSjoiIC0tIGVzcikKLWFibTg1fEtpbXRyb24gQUJNIDg1LAotCU9UYnMsIGFtLCBidywgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzEsCi0JY2J0PVxFSSwgY2xlYXI9XEUqLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFeSwgZWw9XEV0LCBodD1eSSwKLQlpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGRjcnQsIGlsMT1cRUUsCi0JaXMyPVxFQ1xFWFxFZ1xFblxFJVxFclxFKFxFa1xFbVxFcSwga2JzPV5ILCBrY3ViMT1eSCwKLQlrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBraG9tZT1eXiwgcm1pcj1cRXIsIHJtc289XEVrLAotCXJtdWw9XEVtLCBzbWlyPVxFUSwgc21zbz1cRWosIHNtdWw9XEVsLAotIyBLaW10cm9uIEFCTSA4NUggYWRkZWQgYnkgRHVhbCBTeXN0ZW1zLgotIyBTb21lIG5vdGVzIGFib3V0IHRoZSBhYm04NWggZW50cmllczoKLSMgMSkgdGhlcmUgYXJlIHNldmVyYWwgZmlybXdhcmUgcmV2cyBvZiA4NUggaW4gdGhlIHdvcmxkLiBVc2UgYWJtODVoLW9sZCBmb3IKLSMgICAgZmlybXdhcmUgcmV2cyBwcmlvciB0byBTUDUxCi0jIDIpIE1ha2Ugc3VyZSB0byB1c2UgYWJtODVoIGVudHJ5IGlmIHRoZSB0ZXJtaW5hbCBpcyBpbiA4NWggbW9kZSBhbmQgdGhlCi0jICAgIGFibTg1ZSBlbnRyeSBpZiBpdCBpcyBpbiB0dmk5MjAgZW11bGF0aW9uIG1vZGUuIFRoZXkgYXJlIGluY29tcGF0aWJsZQotIyAgICBpbiBzb21lIHBsYWNlcyBhbmQgTk9UIHNvZnR3YXJlIHNldHRhYmxlIGkuZS4sIDxpczI+IGNhbid0IGZpeCBpdCkKLSMgMykgSW4gODVoIG1vZGUsIHRoZSBhcnJvdyBrZXlzIGFuZCBzcGVjaWFsIGZ1bmN0aW9ucyB0cmFuc21pdCB3aGVuCi0jICAgIHRoZSB0ZXJtaW5hbCBpcyBpbiBkdXAtZWRpdCwgYW5kIHdvcmsgb25seSBsb2NhbGx5IGluIGxvY2FsLWVkaXQuCi0jICAgIFZpIHdvbid0IHN3YWxsb3cgYGRlbCBjaGFyJyBmb3IgaW5zdGFuY2UsIGJ1dCA8c21jdXA+IHR1cm5zIG9uCi0jICAgIGR1cC1lZGl0IGFueXdheSBzbyB0aGF0IHRoZSBhcnJvdyBrZXlzIHdpbGwgd29yayByaWdodC4gSWYgdGhlCi0jICAgIGFycm93IGtleXMgZG9uJ3Qgd29yayB0aGUgd2F5IHlvdSBsaWtlLCBjaGFuZ2UgPHNtY3VwPiwgPHJtY3VwPiwgYW5kCi0jICAgIDxpczI+LiAgTm90ZSB0aGF0IDkyMEUgbW9kZSBkb2VzIG5vdCBoYXZlIHNvZnR3YXJlIGNvbW1hbmRzIHRvIHRvZ2dsZQotIyAgICBiZXR3ZWVuIGR1cCBhbmQgbG9jYWwgZWRpdCwgc28geW91IGdldCB3aGF0ZXZlciB3YXMgc2V0IGxhc3Qgb24gdGhlCi0jICAgIHRlcm1pbmFsLgotIyA0KSA8Zmxhc2g+IGF0dHJpYnV0ZSBpcyBuaWNlLCBidXQgc2VlbXMgdG9vIHNsb3cgdG8gd29yayBjb3JyZWN0bHkKLSMgICAgKFxFYjxwYWQ+XEVkKQotIyA1KSBNYWtlIHN1cmUgYGhpZGRlbicgYXR0cmlidXRlcyBhcmUgc2VsZWN0ZWQuIElmIGBlbWJlZGRlZCcgYXR0cmlidXRlcwotIyAgICBhcmUgc2VsZWN0ZWQsIHRoZSA8eG1jQD4gZW50cnkgc2hvdWxkIGJlIHJlbW92ZWQuCi0jIDYpIGF1dG8gbmV3LWxpbmUgc2hvdWxkIGJlIG9uIChzZWxlY3RhYmxlIGZyb20gc2V0dXAgbW9kZSBvbmx5KQotIwotIyBGcm9tOiBFcmlrIEZhaXIgPGZhaXJAdWNiYXJwYT4gIFN1biBPY3QgMjcgMDc6MjE6MDUgMTk4NQotYWJtODVofEtpbXRyb24gQUJNIDg1SCBuYXRpdmUgbW9kZSwKLQlocywKLQl4bWNALAotCWJlbD1eRywgY25vcm09XEUuNCwgY3Z2aXM9XEUuMiwgZGltPVxFKSwgZHNsPVxFZSwgZmxhc2hALAotCWZzbD1eTSwgaW52aXNALAotCWlzMj1cRUNcRU5cRVhcMDI0XDAxNlxFQVxFYVxFJVxFOVxFZVxFclxFblxFIlxFfVxFJ1xFKFxFZlxyXEVHMFxFZFxFLjRcRWwsCi0Ja2N1ZDE9XlYsIHNncjA9XEUoXEVHMCwgc21pcj1cRVosIHRzbD1cRWdcRWYsIHVzZT1hZG0rc2dyLAotCXVzZT1hYm04NSwKLWFibTg1ZXxLaW10cm9uIEFCTSA4NUggaW4gOTIwRSBtb2RlLAotCXhtY0AsCi0JYmVsPV5HLCBkaW09XEUpLCBmbGFzaEAsCi0JaXMyPVxFQ1xFWFxFQVxFJVxFOVxFZVxFclxFblxFIlxFfVxFJ1xFKFxFZlxyXEVrXEVxXEVtLAotCXJldj1cRWosIHNncjA9XEUoXEVrLCBzbWlyPVxFWiwgdXNlPWFibTg1LAotYWJtODVoLW9sZHxvYWJtODVofG84NWh8S2ltdHJvbiBBQk0gODVIIHdpdGggb2xkIGZpcm13YXJlIHJldi4sCi0JeG1jQCwKLQliZWw9XkcsIGRpbT1cRSksCi0JaXMyPVxFfVxFQ1xFWFxFZVxFblxFJVxFclxFKFxFa1xFbVxFcVxFZFxFVFxFQ1xFOVxFRiwKLQlyZXY9XEVqLCBzZ3IwPVxFKFxFaywgc21pcj1cRVosIHVzZT1hYm04NSwKLSMgRnJvbTogPG1hbG1hbkBiYm4tdmF4LmFycGE+Ci0jIChrdDc6IHJlbW92ZWQgb2Jzb2xldGUgOm1hPV5WXkpeTCA6IiAtLSBlc3IpCi1rdDd8a2ltdHJvbiBtb2RlbCBrdC03LAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNidD1cRUksIGNsZWFyPV5aLCBjdWIxPV5ILCBjdWQxPV5WLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEVXLAotCWRsMT1cRVIsIGVkPVxFWSwgZWw9XEVULCBmc2w9XEVnLCBob21lPV5eLCBodD1eSSwgaWNoMT1cRVEsCi0JaWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvc3RkY3J0LCBpbDE9XEVFLCBpbnZpc0AsIGlzMj1cRWxcRSIsCi0Ja2JzPV5ILCBrY2J0PVxFSSwga2Nscj1eWiwga2N1YjE9XkgsIGtjdWQxPV5WLCBrY3VmMT1eTCwKLQlrY3V1MT1eSywga2RjaDE9XEVXLCBrZGwxPVxFUiwga2VkPVxFWSwga2VsPVxFVCwga2YwPV5BSVxyLAotCWtmMT1eQUBcciwga2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLAotCWtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sCi0Ja2ljaDE9XEVRLCBraWwxPVxFRSwgdHNsPVxFZiwgdXNlPWFkbStzZ3IsCi0jIFJlbmFtZWQgVEI9XkkgdG8gOnRhOiwgQkU9XkcgdG8gOmJsOiwgQlM9XkggdG8gOmtiOiwgTiB0byA6a1M6IChiYXNlZCBvbiB0aGUKLSMgb3RoZXIga3Q3IGVudHJ5IGFuZCB0aGUgYWRqYWNlbnQga2V5IGNhcGFiaWxpdGllcykuICBSZW1vdmVkIEVFIHdoaWNoIGlzCi0jIGlkZW50aWNhbCB0byA6bWg6LiAgUmVtb3ZlZCA6RVM9XEVHRDogd2hpY2ggaXMgc29tZSBraW5kIG9mIGhpZ2hsaWdodAotIyBidXQgd2UgY2FuJ3QgZmlndXJlIG91dCB3aGF0Lgota3Q3aXh8a2ltdHJvbiBtb2RlbCBrdC03IG9yIDcwIGluIElYIG1vZGUsCi0JYW0sIGJ3LAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWFjc2M9allrP2xabUBuRXFEdDR1Q3ZBd0J4MywgYmVsPV5HLCBibGluaz1cRUcyLCBjYnQ9XEVJLAotCWNpdmlzPVxFLjAsIGNsZWFyPVxFKiwgY25vcm09XEUuMywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XlYsCi0JY3VmMT1eTCwgY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywKLQlkY2gxPVxFVywgZGltPVxFR0AsIGRsMT1cRVIsIGRzbD1cRWZcciwgZWQ9XEVZLCBlbD1cRVQsIGZzbD1eTSwKLQlob21lPV5eLCBodD1eSSwgaWNoMT1cRVEsIGlsMT1cRUUsIGluZD1eSiwKLQlpczI9XEVHMFxFIHNcMDE3XEV+LCBrYnM9XkgsIGtjYnQ9XEVJLCBrY2xyPVxFKiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGwxPVxFUiwKLQlrZWQ9XEVZLCBrZWw9XEVULCBrZW5kPVxFWSwga2YwPV5BSVxyLCBrZjE9XkFAXHIsIGtmMj1eQUFcciwKLQlrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwKLQlrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sIGtpY2gxPVxFUSwga2lsMT1cRUUsIGtucD1cRUosCi0JbmVsPV5NXkosIHB1bHNlPVxFSywgcm1hY3M9XEUlJSwgcm1pcj0sIHJtc289XEVHMCwgcm11bD1cRUcwLAotCXNncjA9XEVHMCwgc21hY3M9XEUkLCBzbWlyPSwgc21zbz1cRUc0LCBzbXVsPVxFRzgsIHRzbD1cRWYsCi0KLSMjIyMgTWljcm9kYXRhL01ESVMKLSMKLSMgVGhpcyB3YXMgYSBsaW5lIG9mIHRlcm1pbmFscyBtYWRlIGJ5IE1jRG9ubmVsbC1Eb3VnbGFzIEluZm9ybWF0aW9uIFN5c3RlbXMuCi0jIFRoZXNlIGVudHJpZXMgY29tZSBkaXJlY3QgZnJvbSBNRElTIGRvY3VtZW50YXRpb24uICBJIGhhdmUgZWRpdGVkIHRoZW0gb25seQotIyB0byBtb3ZlIHByaW1hcnkgbmFtZXMgb2YgdGhlIGZvcm0gcFswLTldICogdG8gYWxpYXNlcywgYW5kIHRvIGNvbW1lbnQgb3V0Ci0jIDxybWFjcz4vPHNtYWNzPiBpbiBhIGNvdXBsZSBvZiBlbnRyaWVzIHdpdGhvdXQgPGFjc2M+IHN0cmluZ3MuICBJIGhhdmUKLSMgYWxzbyByZW1vdmVkIHRoZSBjaGFuZ2UgaGlzdG9yeTsgdGhlIGxhc3QgdmVyc2lvbiBpbmRpY2F0ZXMgdGhpcyBpcwotIyB2ZXJzaW9uIDQuMyBieSBBLkJhcmt1cywgU2VwdGVtYmVyIDE5OTAgKGVhcmxpZXN0IGVudHJ5IGlzIE9jdG9iZXIgMTk4OSkuCi0jCi0KLSMgTWNEb25uZWxsIEluZm9ybWF0aW9uIFN5c3RlbXMgVGVybWluYWwgRmFtaWx5IEhpc3RvcnkKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgUHJpc20tMSwgUHJpc20tMiBhbmQgUDk5OgotIyAgICAgICBBbmNpZW50IE1pY3JvZGF0YSBhbmQgQ01DIHRlcm1pbmFscywgdmFndWVseSBsaWtlIEFkZHMgUmVnZW50IDI1LgotIwotIyBQcmlzbS00IGFuZCBQcmlzbS01OgotIyAgICAgICBTbGlnaHRseSBsZXNzIGFuY2llbnQgcmFuZ2Ugb2YgTWljcm9kYXRhIHRlcm1pbmFscy4gRm9sbG93LW9uIGZyb20KLSMgICAgICAgUHJpc20tMiwgYnV0IHdpdGggbWFueSBlbmhhbmNlbWVudHMuIFA1IGhhcyBlaWdodCBkaXNwbGF5IHBhZ2VzLgotIwotIyBQcmlzbS02OgotIyAgICAgICBBIHNwZWNpYWwgdGVybWluYWwgZm9yIHVzZSB3aXRoIGxpYnJhcnkgc3lzdGVtcywgcHJpbWFyaWx5IGluIEdlcm1hbnkuCi0jICAgICAgIExpbWl0ZWQgbnVtYmVycy4gU2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvIFA1IChleGNlcHQgYXR0cmlidXRlcz8pLgotIwotIyBQcmlzbS03LCBQcmlzbS04IGFuZCBQcmlzbS05OgotIyAgICAgICBNb3JlIHJlY2VudCByYW5nZSBvZiBNRElTIHRlcm1pbmFscywgaW4gd2hpY2ggUDcgYW5kIFA4Ci0jICAgICAgIHJlcGxhY2UgdGhlIFA0ICYgUDUsIHdpdGggYWRkZWQgZnVuY3Rpb25hbGl0eSwgYW5kIFA5IGlzIHRoZSBmbGFnc2hpcC4KLSMgICAgICAgVGhlIFA5IGhhcyB0d28gZW11bGF0aW9uIG1vZGVzIC0gUDggYW5kIEFOU0kgLSBhbmQgaW5jbHVkZXMgYQotIyAgICAgICBsYXJnZSBudW1iZXIgb2YgdGhlIERFQyBWVDIyMCBjb250cm9sIHNlcXVlbmNlcy4gQm90aAotIyAgICAgICBQOCBhbmQgUDkgc3VwcG9ydCA4MGMvMjRsbi84cGcgYW5kIDEzMmNsLzI0bGkvNHBnIGZvcm1hdHMuCi0jCi0jIFByaXNtLTEyIGFuZCBQcmlzbS0xNDoKLSMgICAgICAgTGF0ZXN0IHJhbmdlLCBmdW5jdGlvbmFsbHkgdmVyeSBzaW1pbGFyIHRvIHRoZSBQOS4gIFRoZSBQMTQgaGFzIGEKLSMgICAgICAgYmxhY2stb24td2hpdGUgb3ZlcnNjYW5uaW5nIHNjcmVlbi4KLSMKLSMgVGhlIHRlcm1pbmZvIGRlZmluaXRpb25zIGdpdmVuIGhlcmUgYXJlOgotIwotIyBwMiAgICAgIC0gUHJpc20tMiAob3IgUHJpc20tMSBvciBQOTkpLgotIwotIyBwNCAgICAgIC0gUHJpc20tNCAoYW5kIG9sZGVyIFA3cyAmIFA4cykuCi0jIHA1ICAgICAgLSBQcmlzbS01IChvciBQcmlzbS02KS4KLSMKLSMgcDcgICAgICAtIFByaXNtLTcuCi0jIHA4ICAgICAgLSBQcmlzbS04IChpbiBuYXRpb25hbCBvciBtdWx0aW5hdGlvbmFsIG1vZGUpLgotIyBwOC13ICAgIC0gMTMyIGNvbHVtbiB2ZXJzaW9uIG9mIHA4LgotIyBwOSAgICAgIC0gUHJpc20tOSBpbiBBTlNJIG1vZGUuCi0jIHA5LXcgICAgLSAxMzIgY29sdW1uIHZlcnNpb24gb2YgcDkuCi0jIHA5LTggICAgLSBQcmlzbS05IGluIFByaXNtLTggZW11bGF0aW9uIG1vZGUuCi0jIHA5LTgtdyAgLSBBcyBwOS04LCBidXQgd2l0aCAxMzIgY29sdW1ucy4KLSMKLSMgcDEyICAgICAtIFByaXNtLTEyIGluIEFOU0kgbW9kZS4KLSMgcDEyLXcgICAtIDEzMiBjb2x1bW4gdmVyc2lvbiBvZiBwMTIuCi0jIHAxMi1tICAgLSBQcmlzbS0xMiBpbiBNREMgZW11bGF0aW9uIG1vZGUuCi0jIHAxMi1tLXcgLSBBcyBwMTItbSwgYnV0IHdpdGggMTMyIGNvbHVtbnMuCi0jIHAxNCAgICAgLSBQcmlzbS0xNCBpbiBBTlNJIG1vZGUuCi0jIHAxNC13ICAgLSAxMzIgY29sdW1uIHZlcnNpb24gb2YgcDE0LgotIyBwMTQtbSAgIC0gUHJpc20tMTQgaW4gTURDIGVtdWxhdGlvbiBtb2RlLgotIyBwMTQtbS13IC0gQXMgcDE0LW0sIGJ1dCB3aXRoIDEzMiBjb2x1bW5zLgotIwotIyBwMjogUHJpc20tMgotIyAtLS0tLS0tLS0tLQotIwotIyBJbmNsdWRlcyBQcmlzbS0xIGFuZCBiYXNpYyBQOTkgd2l0aG91dCBTUCBvciBNUCBsb2FkZWQuCi0jIFRoZSBzaW1wbGVzdCBmb3JtIG9mIFByaXNtLXR5cGUgdGVybWluYWwuCi0jIEJhc2ljIGN1cnNvciBtb3ZlbWVudCBhbmQgY2xlYXJpbmcgb3BlcmF0aW9ucyBvbmx5LgotIyBObyB2aWRlbyBhdHRyaWJ1dGVzLgotIyBOb3RlczoKLSMgIEhvcml6b250YWwgY3Vyc29yIHF1YWxpZmllcnMgb2YgTlVMLCBYT04gYW5kIFhPRkYgYXJlIG1hcHBlZCB0byB0aGUgbmV4dAotIyAgdmFsdWUgdXAsIGZvbGxvd2VkIGJ5IGJhY2tzcGFjZS4KLSMKLXByaXNtMnxNREMgUHJpc20tMiwKLQlhbSwgYncsIG1zZ3IsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDwyMD4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5GLAotCWN1cD1cMDEzJXAxJXszMn0lKyVjXDAyMCVwMiV7MTB9JS8lezE2fSUqJXAyJXsxMH0lbSUrJVBjJT8lezE3fSVnYyU9JXsxOX0lZ2MlPSV8JWdjJSElfCV0JXsxfSVnYyUrJWMlezh9JWUlZ2MlOyVjLAotCWN1dTE9XlosIGVkPVxFSiwgZWw9XEVLLCBob21lPV5BLAotCWhwYT1cMDIwJXAxJXsxMH0lLyV7MTZ9JSolcDElezEwfSVtJSslUGMlPyV7MTd9JWdjJT0lezE5fSVnYyU9JXwlZ2MlISV8JXQlezF9JWdjJSslYyV7OH0lZSVnYyU7JWMsCi0JaW5kPV5KLCBrYnM9XkgsIGtob21lPV5BLCB2cGE9XDAxMyVwMSV7MzJ9JSslYywKLQotIyBwNDogUHJpc20tNAotIyAtLS0tLS0tLS0tLQotIwotIyBJbmNsdWRlcyBlYXJseSB2ZXJzaW9ucyBvZiBQNyAmIFA4LgotIyBCYXNpYyBmYW1pbHkgZGVmaW5pdGlvbiBmb3IgbW9zdCBQcmlzbXMgKGV4Y2VwdCBQMiBhbmQgUDkgQU5TSSkuCi0jIE5vdGVzOgotIyAgSG9yaXpvbnRhbCBjdXJzb3IgcXVhbGlmaWVycyBvZiBOVUwsIFhPTiBhbmQgWE9GRiBhcmUgbWFwcGVkIHRvIHRoZSBuZXh0Ci0jICB2YWx1ZSB1cCwgZm9sbG93ZWQgYnkgYmFja3NwYWNlLgotIyAgQ3Vyc29yIGtleSBkZWZpbml0aW9ucyByZW1vdmVkIGJlY2F1c2UgdGhleSBpbnRlcmZlcmUgd2l0aCB2aSBhbmQgY3NoIGtleXMuCi0jCi1wcmlzbTR8cDR8UDR8TURDIFByaXNtLTQsCi0JYW0sIGJ3LCBocywgbWM1aSwgbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNCwgd3NsIzcyLCB4bWMjMSwKLQliZWw9XkcsIGJsaW5rPV5DQiwgY2l2aXM9Xl1cMzQ0LCBjbGVhcj1cMDE0JDwyMD4sCi0JY25vcm09Xl1cMzQyLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eRiwKLQljdXA9XDAxMyVwMSV7MzJ9JSslY1wwMjAlcDIlezEwfSUvJXsxNn0lKiVwMiV7MTB9JW0lKyVQYyU/JXsxN30lZ2MlPSV7MTl9JWdjJT0lfCVnYyUhJXwldCV7MX0lZ2MlKyVjJXs4fSVlJWdjJTslYywKLQljdXUxPV5aLCBkaW09XkNBLCBkc2w9XDAzNVwzNDNcMDM1XDM0NSwgZWQ9XEVKLCBlbD1cRUssCi0JZnNsPV5dXDM0NSwgaG9tZT1eQSwKLQlocGE9XDAyMCVwMSV7MTB9JS8lezE2fSUqJXAxJXsxMH0lbSUrJVBjJT8lezE3fSVnYyU9JXsxOX0lZ2MlPSV8JWdjJSElfCV0JXsxfSVnYyUrJWMlezh9JWUlZ2MlOyVjLAotCWluZD1eSiwgaW52aXM9XkNILCBrYnM9XkgsIGtob21lPV5BLCBtYzA9XEVVLCBtYzQ9XEVULCBtYzU9XEVSLAotCXJldj1eQ0QsIHJtc289XkNccywgcm11bD1eQ1xzLAotCXNncj1cMDAzJXs2NH0lPyVwMSVwMyV8JXQlezR9JSslOyU/JXAyJXQlezE2fSUrJTslPyVwNCV0JXsyfSUrJTslPyVwNSV0JXsxfSUrJTslPyVwNyV0JXs4fSUrJTslYyU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc2dyMD1eQ1xzLCBzbXNvPV5DRCwgc211bD1eQ1AsIHRzbD1eXVwzNDMsCi0JdnBhPVwwMTMlcDElezMyfSUrJWMsCi0KLSMgcDU6IFByaXNtLTUKLSMgLS0tLS0tLS0tLS0KLSMKLSMgU2FtZSBkZWZpbml0aW9uIGFzIHA0LiBJbmNsdWRlcyBQcmlzbS02IChub3QgdGVzdGVkISkuCi0jIERvZXMgbm90IHVzZSBhbnkgbXVsdGktcGFnZSBmZWF0dXJlcy4KLSMKLXByaXNtNXxwNXxQNXxNREMgUHJpc20tNSwKLQl1c2U9cDQsCi0KLSMgcDc6IFByaXNtLTcKLSMgLS0tLS0tLS0tLS0KLSMKLSMgU2ltaWxhciBkZWZpbml0aW9uIHRvIHA0LiBVc2VzIEFOU0kgY3Vyc29yIG1vdGlvbiB0byBhdm9pZCBuZXR3b3JrIHByb2JsZW1zLgotIyBOb3RlczoKLSMgIFVzZSBwNCBmb3IgdmVyeSBlYXJseSBtb2RlbHMgb2YgUDcuCi0jICBSZXYtaW5kZXggcmVtb3ZlZDsgY2FuJ3Qgc2VuZCBudWxscyB0byB0ZXJtaW5hbCBpbiA4LWJpdCBtb2Rlcy4KLSMKLXByaXNtN3xwN3xQN3xNREMgUHJpc20tNywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGhwYUAsIHZwYUAsIHVzZT1wNCwKLQotIyBwODogUHJpc20tOAotIyAtLS0tLS0tLS0tLQotIwotIyBTaW1pbGFyIGRlZmluaXRpb24gdG8gcDcuIFVzZXMgQU5TSSBjdXJzb3IgbW90aW9uIHRvIGF2b2lkIG5ldHdvcmsgcHJvYmxlbXMuCi0jIFN1cHBvcnRzIG5hdGlvbmFsIGFuZCBtdWx0aW5hdGlvbmFsIGNoYXJhY3RlciBzZXRzLgotIyBOb3RlczoKLSMgIEFsdGVybmF0ZSBjaGFyIHNldCBvcGVyYXRpb25zIG9ubHkgd29yayBpbiBtdWx0aW5hdGlvbmFsIG1vZGUuCi0jICBVc2UgcDQgZm9yIHZlcnkgZWFybHkgbW9kZWxzIG9mIFA4LgotIyAgUmV2LWluZGV4IHJlbW92ZWQ7IGNhbid0IHNlbmQgbnVsbHMgdG8gdGVybWluYWwgaW4gOC1iaXQgbW9kZXMuCi0jIChlc3I6IGNvbW1lbnRlZCBvdXQgPHNtYWNzPi88cm1hY3M+IGJlY2F1c2UgdGhlcmUncyBubyA8YWNzYz4pCi0jCi1wcmlzbTh8cDh8UDh8TURDIFByaXNtLTgsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBocGE9XEVbJWklcDElZGAsIGlzMj1cRVs8MTJoLAotCXZwYT1cRVslaSVwMSVkZCwgdXNlPXA0LAotCi0jIHA4LXc6IFByaXNtLTggaW4gMTMyIGNvbHVtbiBtb2RlCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jICdXaWRlJyB2ZXJzaW9uIG9mIHA4LgotIyBOb3RlczoKLSMgIFJldi1pbmRleCByZW1vdmVkOyBjYW4ndCBzZW5kIG51bGxzIHRvIHRlcm1pbmFsIGluIDgtYml0IG1vZGVzLgotIwotcHJpc204LXd8cDgtd3xQOC1XfE1EQyBQcmlzbS04IGluIDEzMiBjb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwKLQlpczI9XEVbPDEyaFxFWzwxNGgsIHVzZT1wOCwKLQotIyBwOTogUHJpc20tOSBpbiBBTlNJIG1vZGUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyBUaGUgImZsYWdzaGlwIiBtb2RlbCBvZiB0aGlzIGdlbmVyYXRpb24gb2YgdGVybWluYWxzLgotIyBBTlNJIFgzLjY0IChJU08gNjQyOSkgc3RhbmRhcmQgc2VxdWVuY2VzLCBwbHVzIG1hbnkgREVDIFZUMjIwIG9uZXMuCi0jIE5vdGVzOgotIyAgVGFicyBvbmx5IHJlc2V0IGJ5ICJyZXNldCIuIE90aGVyd2lzZSBhc3N1bWVzIGRlZmF1bHQgKDggY29scykuCi0jICBGaXhlcyB0byBkZWFsIHdpdGggdGVybWluYWwgZmlybXdhcmUgYnVnczoKLSMgIC4gJ3JpJyB1c2VzIGluc2VydC1saW5lIHNpbmNlIHJldiBpbmRleCBkb2Vzbid0IGFsd2F5cwotIyAgLiAnc2dyMCcgaGFzIGV4dHJhICcwJyBzaW5jZSBlc2NbbSBmYWlscwotIyAgLiAnZnNsJyAmICdkc2wnIHVzZSBpbGxlZ2FsIGNoYXIgc2luY2UgY3IgaXMgYWN0aW9uZWQgd3Jvbmcgb24gbGluZSAyNQotIyAgTm90IGNvdmVyZWQgaW4gdGhlIGN1cnJlbnQgZGVmaW5pdGlvbjoKLSMgIC4gTGFiZWxzCi0jICAuIFByb2dyYW1taW5nIEZuIGtleXMKLSMgIC4gR3JhcGhpYyBjaGFyYWN0ZXJzIChkZWZhdWx0cyBjb3JyZWN0bHkgdG8gdnQxMDApCi0jICAuIFBhZGRpbmcgdmFsdWVzIChzZXRzIHhvbikKLSMgKGVzcjogY29tbWVudGVkIG91dCA8c21hY3M+LzxybWFjcz4gYmVjYXVzZSB0aGVyZSdzIG5vIDxhY3NjPikKLSMKLXByaXNtOXxwOXxQOXxNREMgUHJpc20tOSBpbiBBTlNJSSBtb2RlLAotCWFtLCBidywgaHMsIG1jNWksIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgdnQjMywgd3NsIzcyLAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLCBjaXZpcz1cRVs8NGwsCi0JY2xlYXI9XkwsIGNub3JtPVxFWzw0aCwgY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkJSV2LAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XkosCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZHNsPVxFWyV9XDAyNCwgZWNoPVxFWyVwMSVkWCwKLQllZD1cRVtKJDwxMD4sIGVsPVxFW0ssIGZzbD1eVCwgaG9tZT1cRVtILCBocGE9XEVbJWklcDElZGAsCi0JaHQ9XkksIGh0cz1cRUgsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1eSiwKLQlpczI9XEVbJnBcRVs8MTJsXEUgRiwga2JzPV5ILCBrY2xyPV5MLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtmMT1cRVsxMX4sCi0Ja2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sCi0Ja2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sCi0Ja2YxOD1cRVszMn4sIGtmMj1cRVsxMn4sIGtmMz1cRVsxM34sIGtmND1cRVsxNH4sCi0Ja2Y1PVxFWzE1fiwga2Y2PVxFWzE3fiwga2Y3PVxFWzE4fiwga2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwKLQlraG9tZT1cRVtILCBtYzA9XEVbaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksIG5lbD1eTV5KLAotCXByb3Q9XEVbMzIleywgcmM9XEVbJXosIHJlcD1cRVslcDIlZGIlcDElYywgcmV2PVxFWzdtLAotCXJpPVxFW0wsIHJtaXI9XEVbNGwsIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEVbJnBcRVs8MTJsXEUgRlxFWzNnXEVbOTsxNzsyNTszMzs0MTs0OTs1Nzs2NTs3MyBOLAotCXNjPVxFWyV5LAotCXNncj1cRVslezB9JT8lcDElcDMlfCV0JXs3fSUrJTslPyVwMiV0JXsyfSUrJTslPyVwNCV0JXs1fSUrJTslPyVwNiV0JXsxfSUrJTttJT8lcDgldFxFWyV7MzJ9JSslZCUleyU7JT8lcDkldFwwMTYlZVwwMTclOywKLQlzZ3IwPVxFWzBtXDAxNywgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbMmcsIHRzbD1cRVslaSVwMSVkJSV9LCB2cGE9XEVbJWklcDElZGQsCi0KLSMgcDktdzogUHJpc20tOSBpbiAxMzIgY29sdW1uIG1vZGUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgJ1dpZGUnIHZlcnNpb24gb2YgcDkuCi0jCi1wcmlzbTktd3xwOS13fFA5LVd8TURDIFByaXNtLTkgaW4gMTMyIGNvbHVtbiBtb2RlLAotCWNvbHMjMTMyLAotCWlzMj1cRVsmcFxFWzwxMmxcRSBGXEVbPDE0aCwKLQlyczI9XEVbJnBcRVs8MTJsXEUgRlxFWzwxNGgsIHVzZT1wOSwKLQotIyBwOS04OiBQcmlzbS05IGluIFA4IG1vZGUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jIFA5IHRlcm1pbmFsIGluIFA4IGVtdWxhdGlvbiBtb2RlLgotIyBTaW1pbGFyIHRvIHA4IGRlZmluaXRpb24uCi0jIEluc2VydGlvbiBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucyBwb3NzaWJsZS4KLSMKLXByaXNtOS04fHA5LTh8UDktOHxNREMgUHJpc20tOSBpbiBQOCBtb2RlLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIHVzZT1wOCwKLQotIyBwOS04LXc6IFByaXNtLTkgaW4gUDggYW5kIDEzMiBjb2x1bW4gbW9kZXMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jIFA5IHRlcm1pbmFsIGluIFA4IGVtdWxhdGlvbiBtb2RlIGFuZCAxMzIgY29sdW1uIG1vZGUuCi0jCi1wcmlzbTktOC13fHA5LTgtd3xQOS04LVd8TURDIFByaXNtLTkgaW4gUHJpc20gOCBlbXVsYXRpb24gYW5kIDEzMiBjb2x1bW4gbW9kZSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCB1c2U9cDgtdywKLQotIyBwMTI6IFByaXNtLTEyIGluIEFOU0kgbW9kZQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgU2VlIHA5IGRlZmluaXRpb24uCi0jCi1wcmlzbTEyfHAxMnxQMTJ8TURDIFByaXNtLTEyIGluIEFOU0kgbW9kZSwKLQl1c2U9cDksCi0KLSMgcDEyLXc6IFByaXNtLTEyIGluIDEzMiBjb2x1bW4gbW9kZQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jICdXaWRlJyB2ZXJzaW9uIG9mIHAxMi4KLSMKLXByaXNtMTItd3xwMTItd3xQMTItV3xNREMgUHJpc20tMTIgaW4gMTMyIGNvbHVtbiBtb2RlLAotCXVzZT1wOS13LAotCi0jIHAxMi1tOiBQcmlzbS0xMiBpbiBNREMgZW11bGF0aW9uIG1vZGUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyBQMTIgdGVybWluYWwgaW4gTURDIGVtdWxhdGlvbiBtb2RlLgotIyBTaW1pbGFyIHRvIHA4IGRlZmluaXRpb24uCi0jIEluc2VydGlvbiBhbmQgZGVsZXRpb24gb3BlcmF0aW9ucyBwb3NzaWJsZS4KLSMKLXByaXNtMTItbXxwMTItbXxQMTItTXxNREMgUHJpc20tMTIgaW4gTURDIGVtdWxhdGlvbiBtb2RlLAotCXVzZT1wOS04LAotCi0jIHAxMi1tLXc6IFByaXNtLTEyIGluIE1EQyBlbXVsYXRpb24gYW5kIDEzMiBjb2x1bW4gbW9kZXMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyBQMTIgdGVybWluYWwgaW4gTURDIGVtdWxhdGlvbiBtb2RlIGFuZCAxMzIgY29sdW1uIG1vZGUuCi0jCi1wcmlzbTEyLW0td3xwMTItbS13fFAxMi1NLVd8TURDIFByaXNtLTEyIGluIE1EQyBlbXVsYXRpb24gYW5kIDEzMiBjb2x1bW4gbW9kZSwKLQl1c2U9cDktOC13LAotCi0jIHAxNDogUHJpc20tMTQgaW4gQU5TSUkgbW9kZQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgU2VlIHA5IGRlZmluaXRpb24uCi0jCi1wcmlzbTE0fHAxNHxQMTR8TURDIFByaXNtLTE0IGluIEFOU0lJIG1vZGUsCi0JdXNlPXA5LAotCi0jIHAxNC13OiBQcmlzbS0xNCBpbiAxMzIgY29sdW1uIG1vZGUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyAnV2lkZScgdmVyc2lvbiBvZiBwMTQuCi0jCi1wcmlzbTE0LXd8cDE0LXd8UDE0LVd8TURDIFByaXNtLTE0IGluIDEzMiBjb2x1bW4gbW9kZSwKLQl1c2U9cDktdywKLQotIyBwMTQtbTogUHJpc20tMTQgaW4gTURDIGVtdWxhdGlvbiBtb2RlCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgUDE0IHRlcm1pbmFsIGluIE1EQyBlbXVsYXRpb24gbW9kZS4KLSMgU2ltaWxhciB0byBwOCBkZWZpbml0aW9uLgotIyBJbnNlcnRpb24gYW5kIGRlbGV0aW9uIG9wZXJhdGlvbnMgcG9zc2libGUuCi0jCi1wcmlzbTE0LW18cDE0LW18UDE0LU18TURDIFByaXNtLTE0IGluIE1EQyBlbXVsYXRpb24gbW9kZSwKLQl1c2U9cDktOCwKLQotIyBwMTQtbS13OiBQcmlzbS0xNCBpbiBNREMgZW11bGF0aW9uIGFuZCAxMzIgY29sdW1uIG1vZGVzCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgUDE0IHRlcm1pbmFsIGluIE1EQyBlbXVsYXRpb24gbW9kZSBhbmQgMTMyIGNvbHVtbiBtb2RlLgotIwotcHJpc20xNC1tLXd8cDE0LW0td3xQMTQtTS1XfE1EQyBQcmlzbS0xNCBpbiBNREMgZW11bGF0aW9uIGFuZCAxMzIgY29sdW1uIG1vZGUsCi0JdXNlPXA5LTgtdywKLQotIyBFbmQgb2YgTWNEb25uZWxsIEluZm9ybWF0aW9uIFN5c3RlbXMgUHJpc20gZGVmaW5pdGlvbnMKLQotIyBUaGVzZSB0aGluZ3Mgd2VyZSBwb3B1bGFyIGluIHRoZSBQaWNrIGRhdGFiYXNlIGNvbW11bml0eSBhdCBvbmUgdGltZQotIyBGcm9tOiBHZW9yZ2UgTGFuZCA8Z2VvcmdlbGFuZEBhb2wuY29tPiAyNCBTZXAgMTk5NgotcDhnbHxwcmlzbThnbHxNY0Rvbm5lbGwtRG91Z2xhcyBQcmlzbS04IGFsdGVybmF0ZSBkZWZpbml0aW9uLAotCWFtLCBidywgaHMsIG1pciwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbWEjMSwgd3NsIzc4LCB4bWMjMSwKLQliZWw9XkcsIGJsaW5rPV5DQiwgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5VLCBjdWQxPV5KLCBjdWYxPV5GLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1eWiwgZGNoMT1cc15ILCBkaW09XkNBLCBkbDE9XlAsCi0JZWQ9XEVKLCBlbD1cRUssIGhvbWU9XkEsIGluZD1eSiwgaW52aXM9XkNILCBrYnM9XkgsIGtjdWIxPV5VLAotCWtjdWQxPV5KLCBrY3VmMT1eRiwga2N1dTE9XlosIGtkY2gxPVxzXkgsIGtkbDE9XlAsIGtlZD1cRUosCi0Ja2VsPVxFSywga2YxPV5BQFxyLCBrZjEwPV5BSVxyLCBrZjEyPV5BSlxyLCBrZjEzPV5BS1xyLAotCWtmMTQ9XkFMXHIsIGtmMTU9XkFNXHIsIGtmMTY9XkFOXHIsIGtmMTc9XkFPXHIsIGtmMj1eQUFcciwKLQlrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwKLQlrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9XkEsIGxmMT1GMSwgbGYxMD1GMTAsIGxmMj1GMiwKLQlsZjM9RjMsIGxmND1GNCwgbGY1PUY1LCBsZjY9RjYsIGxmNz1GNywgbGY4PUY4LCBsZjk9RjksIG5lbD1eSl5NLAotCXBhZD1cMCwgcmV2PV5DRCwgcm1zbz1eQ1xzLCBybXVsPV5DXHMsIHNncjA9XkNccywgc21zbz1eQ0UsCi0Jc211bD1eQzAsCi0KLSMjIyMgTWljcm90ZXJtIChhY3QsIG1pbWUpCi0jCi0jIFRoZSBtaW1lMSBlbnRyaWVzIHJlZmVyIHRvIHRoZSBNaWNyb3Rlcm0gTWltZSBJIG9yIE1pbWUgSUkuCi0jIFRoZSBkZWZhdWx0IG1pbWUgaXMgYXNzdW1lZCB0byBiZSBpbiBlbmhhbmNlZCBhY3QgaXYgbW9kZS4KLSMKLQotIyBOZXcgInNhZmUiIGN1cnNvciBtb3ZlbWVudCAoNS84NykgZnJvbSA8cmV1c3NAdW1kNS51bWQuZWR1Pi4gIFByZXZlbnRzCi0jIGZyZWFrb3V0IHdpdGggb3V0LW9mLXJhbmdlIGFyZ3Mgb24gU3l0ZWsgbXVsdGlwbGV4b3JzLiAgTm8gPHNtc289Xk4+IGFuZAotIyA8cm1zbz1eTj4gc2luY2UgIGl0IGdldHMgY29uZnVzZWQgYW5kIGl0J3MgdG9vIGRpbSBhbnl3YXkuICBObyA8aWNoMT4KLSMgc2luY2UgU3l0ZWsgaW5zaXN0cyBeUyBtZWFucyB4b2ZmLgotIyAoYWN0NDogZm91bmQgIjppYz0yXlM6ZWk9OmltPTppcD0uMSpeVjoiIGNvbW1lbnRlZCBvdXQgaW4gOC4zIC0tIGVzcikKLWFjdDR8bWljcm90ZXJtfG1pY3JvdGVybSBhY3QgaXYsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDwxMi8+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSywgY3VmMT1eWCwKLQljdXA9XDAyNCVwMSV7MjR9JSslYyVwMiVwMiU/JXs0N30lPiV0JXs0OH0lKyU7JXs4MH0lKyVjLAotCWN1dTE9XlosIGRjaDE9XDAwNCQ8LjEqLz4sIGRsMT1cMDI3JDwyLjMqLz4sCi0JZWQ9XDAzNyQ8Mi4yKi8+LCBlbD1cMDM2JDwuMSovPiwgaG9tZT1eXSwKLQlpbDE9XDAwMTwyLjMqLz4sIGluZD1eSiwga2N1YjE9XkgsIGtjdWQxPV5LLCBrY3VmMT1eWCwKLQlrY3V1MT1eWiwKLSMgVGhlIHBhZGRpbmcgb24gOnNyOiBhbmQgOnRhOiBmb3IgYWN0NSBhbmQgbWltZSBpcyBhIGd1ZXNzIGFuZCBub3QgZmluYWwuCi0jIFRoZSBhY3QgNSBoYXMgaGFyZHdhcmUgdGFicywgYnV0IHRoZXkgYXJlIGluIGNvbHVtbnMgOCwgMTYsIDI0LCAzMiwgNDEgKCEpLi4uCi0jIChtaWNyb3Rlcm01OiByZW1vdmVkIG9ic29sZXRlICI6bWE9PV5aXlBeWGxeS2o6IiAtLSBlc3IpCi1hY3Q1fG1pY3JvdGVybTV8bWljcm90ZXJtIGFjdCB2LAotCWtjdWIxPV5ILCBrY3VkMT1eSywga2N1ZjE9XlgsIGtjdXUxPV5aLCByaT1cRUgkPDM+LCB1Yz1eSFxFQSwKLQl1c2U9YWN0NCwKLSMgTWltZXMgdXNpbmcgYnJpZ2h0bmVzcyBmb3Igc3RhbmRvdXQuICBIYWxmIGJyaWdodCBpcyByZWFsbHkgZGltIHVubGVzcwotIyB5b3UgdHVybiB1cCB0aGUgYnJpZ2h0bmVzcyBzbyBmYXIgdGhhdCBsaW5lcyBzaG93IHVwIG9uIHRoZSBzY3JlZW4uCi1taW1lLWZifGZ1bGwgYnJpZ2h0IG1pbWUxLAotCWlzMj1eU1xFLCBybXNvPV5TLCBzbXNvPV5ZLCB1c2U9bWltZSwKLW1pbWUtaGJ8aGFsZiBicmlnaHQgbWltZTEsCi0JaXMyPV5ZXEUsIHJtc289XlksIHNtc289XlMsIHVzZT1taW1lLAotIyAobWltZTogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5YIF5LXkpeWl5QOiI7IHJlbW92ZWQgIjpkbz1eSzoiIHRoYXQgb3ZlcnJvZGUKLSMgdGhlIG1vcmUgcGxhdXNpYmxlICI6ZG89Xko6IiAtLSBlc3IpCi0jIHVjIHdhcyBhdCBvbmUgdGltZSBkaXNhYmxlZCB0byBnZXQgYXJvdW5kIGEgY3Vyc2VzIGJ1ZywgYmUgd2FyeSBvZiBpdAotbWltZXxtaW1lMXxtaW1lMnxtaW1laXxtaW1laWl8bWljcm90ZXJtIG1pbWUxLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCM5LAotCWJlbD1eRywgY2xlYXI9Xl1eQywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlgsCi0JY3VwPVwwMjQlcDElezI0fSUrJWMlcDIlcDIlPyV7MzJ9JT4ldCV7NDh9JSslOyV7ODB9JSslYywKLQljdXUxPV5aLCBkbDE9XDAyNyQ8ODA+LCBlZD1eXywgZWw9Xl4sIGhvbWU9Xl0sIGh0PVwwMTEkPDI+LAotCWlsMT1cMDAxJDw4MD4sIGluZD1eSiwgaXMyPV5TXEVeUSwga2N1YjE9XkgsIGtjdWQxPV5LLAotCWtjdWYxPV5YLCBrY3V1MT1eWiwgcmk9XDAyMiQ8Mz4sIHVjPV5VLAotIyBUaGVzZSB0ZXJtY2FwcyAoZm9yIG1pbWUyYSkgcHV0IHRoZSB0ZXJtaW5hbCBpbiBsb3cgaW50ZW5zaXR5IG1vZGUKLSMgc2luY2UgaGlnaCBpbnRlbnNpdHkgbW9kZSBpcyBzbyBvYm5veGlvdXMuCi1taW1lMmEtc3xtaWNyb3Rlcm0gbWltZTJhIChlbXVsYXRpbmcgYW4gZW5oYW5jZWQgc29yb2MgaXExMjApLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVMLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFSSwgZGNoMT1cRUQsCi0JZGwxPVwwMjckPDIwKj4sIGVkPVxFSiQ8MjAqPiwgZWw9XEVLLCBob21lPV5eLAotCWlsMT1cMDAxJDwyMCo+LCBpbmQ9XkosIGlwPSQ8Mj4sIGlzMj1cRSksIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIHJpPVxFSSwgcm1pcj1eWiwgcm1zbz1cRTssIHJtdWw9XEU3LAotCXNtaXI9XEVFLCBzbXNvPVxFXDosIHNtdWw9XEU2LAotIyBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgbW9kZSAoYnV0IF5YIGNhbid0IGJlIHVzZWQgYXMgYSBraWxsIGNoYXJhY3RlcikKLW1pbWUyYXxtaW1lMmEtdnxtaWNyb3Rlcm0gbWltZTJhIChlbXVsYXRpbmcgYW4gZW5oYW5jZWQgdnQ1MiksCi0JT1RicywKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBkY2gxPV5OLAotCWRsMT1cMDI3JDwyMCo+LCBlZD1cRVEkPDIwKj4sIGVsPVxFUCwgaG9tZT1cRUgsIGh0PV5JLAotCWlsMT1cMDAxJDwyMCo+LCBpbmQ9XkosIGlwPSQ8Mj4sIGlzMj1eWSwga2N1YjE9XEVELAotCWtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsIHJpPVxFQSwgcm1pcj1eWiwgcm1zbz1cRTksCi0Jcm11bD1cRTUsIHNtaXI9Xk8sIHNtc289XEU4LCBzbXVsPVxFNCwKLSMgKG1pbWUzYTogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5YIF5LXkpeWl5QOiIgLS0gZXNyKQotbWltZTNhfG1pbWUxIGVtdWxhdGluZyAzYSwKLQlhbUAsCi0Ja2N1YjE9XkgsIGtjdWQxPV5LLCBrY3VmMT1eWCwga2N1dTE9XlosIHVzZT1hZG0zYSwKLW1pbWUzYXh8bWltZS0zYXh8bWltZTEgZW11bGF0aW5nIGVuaGFuY2VkIDNhLAotCWl0IzgsCi0JZGwxPVwwMjckPDgwPiwgZWQ9Xl8sIGVsPV5YLCBodD1cMDExJDwzPiwgaWwxPVwwMDEkPDgwPiwKLQl1c2U9bWltZTNhLAotIyBXZWQgTWFyICA5IDE4OjUzOjIxIDE5ODMKLSMgV2UgcnVuIG91ciB0ZXJtaW5hbHMgYXQgMjQwMCBiYXVkLCBzbyB0aGVyZSBtaWdodCBiZSBzb21lIHRpbWluZyBwcm9ibGVtcyBhdAotIyBoaWdoZXIgc3BlZWRzLiBUaGUgbWFqb3IgaW1wcm92ZW1lbnRzIGluIHRoaXMgbW9kZWwgYXJlIHRoZSB0ZXJtaW5hbCBub3cKLSMgc2Nyb2xscyBkb3duIGFuZCBpbnNlcnQgbW9kZSB3b3JrcyB3aXRob3V0IHJlZHJhd2luZyB0aGUgcmVzdCBvZiB0aGUgbGluZQotIyB0byB0aGUgcmlnaHQgb2YgdGhlIGN1cnNvci4gVGhpcyBpcyBkb25lIHdpdGggYSBiaXQgb2YgYSBrbHVkZ2UgdXNpbmcgdGhlCi0jIGV4aXQgZ3JhcGhpY3MgbW9kZSB0byBnZXQgb3V0IG9mIGluc2VydCwgYnV0IGl0IGRvZXMgbm90IGFwcGVhciB0byBodXJ0Ci0jIGFueXRoaW5nIHdoZW4gdXNpbmcgdmkgYXQgbGVhc3QuIElmIHlvdSBoYXZlIHNvbWUgdXNlcnMgdXNpbmcgYWN0NHMgd2l0aAotIyBwcm9ncmFtcyB0aGF0IHVzZSBjdXJzZXMgYW5kIGdyYXBoaWNzIG1vZGUgdGhpcyBjb3VsZCBiZSBhIHByb2JsZW0uCi1taW1lMzE0fG1tMzE0fG1pbWUgMzE0LAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPV5MLCBjdWIxPV5ILCBjdWYxPV5YLCBjdXA9XDAyNCVwMSVjJXAyJWMsIGN1dTE9XlosCi0JZGNoMT1eRCwgZGwxPV5XLCBlZD1eXywgZWw9Xl4sIGhvbWU9Xl0sIGh0PV5JLCBpbDE9XkEsIGtjdWIxPV5ILAotCWtjdWQxPV5LLCBrY3VmMT1eWCwga2N1dTE9XlosIHJtaXI9XlYsIHNtaXI9XlMsCi0jIE1pY3JvdGVybSBtaW1lIDM0MCBmcm9tIFVuaXZlcnNpdHkgb2YgV2lzY29uc2luCi1tbTM0MHxtaW1lMzQwfG1pbWUgMzQwLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVwwMzIkPDEyLz4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssCi0JZGNoMT1cRSMkPDIuMSovPiwgZGwxPVxFViQ8NDkuNi8+LCBlZD1cMDM3JDwyKi8+LAotCWVsPVxFTCQ8Mi4xLz4sIGh0PV5JLCBpbDE9XEVVJDw0Ni8+LCBpbmQ9XkosIGlzMj1cRVwsLAotCWticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3V1MT1eSywgbmVsPV5NXkosCi0jIFRoaXMgY2FtZSBmcm9tIFVuaXZlcnNpdHkgb2YgV2lzY29uc2luIG1hcmtlZCAiYXN0cm8gdGVybWNhcCBmb3Igam9vc3MiLgotIyAobXQ0NTIwLXJ2OiByZW1vdmVkIG9ic29sZXRlICI6a24jNDoiIGFuZCBpbmNvcnJlY3QgIjpyaT1cRVtDOiI7Ci0jIGFsc28gYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCAgb24gdGhlIGluaXQgc3RyaW5nIC0tIGVzcikKLW10NDUyMC1ydnxtaWNyby10ZXJtIDQ1MjAgcmV2ZXJzZSB2aWRlbywKLQlhbSwgaHMsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLAotCWJlbD1eRywgY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWzBWXEU4LCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQljdnZpcz1cRTdcRVswVSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGZsYXNoPVxFWz81bCQ8MjAwLz5cRVs/NWgsCi0JZnNsPVxFWz81bFxFWz81aCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwKLQlpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFW0wsIGluZD1cRUQsCi0JaXMyPVxFKEJcRVsybFxFPlxFWzIwbFxFWz8zbFxFWz81aFxFWz83aFxFWzE7MjRyXEVbMjQ7MUhcRVtIXEVbSiwKLQlrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtob21lPVxFW0gsCi0JbGw9XEVbMjQ7MUgsIG5lbD1cRUUsIHJjPVxFOCwgcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsCi0Jcmk9XEVNLCBybWFtPVxFWz83bCwgcm1zbz1cRVswbSwgcm11bD1cRVsyNG0sCi0JcnMxPVxFKEJcRVsybFxFPlxFWzIwbFxFWz8zbFxFWz81aFxFWz83aFxFW0hcRVtKLAotCXNjPVxFNywgc2dyMD1cRVttLCBzbWFtPVxFWz83aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbZywgdHNsPVxFWzI1OzFILAotCi0jIEZyaSBBdWcgIDUgMDg6MTE6NTcgMTk4MwotIyBUaGlzIGVudHJ5IHdvcmtzIGZvciB0aGUgZXJnbyA0MDAwIHdpdGggdGhlIGZvbGxvd2luZyBzZXR1cHM6Ci0jIGFuc2ksd3JhcGFyb3VuZCxuZXdsaW5lIGRpc2FibGVkLCB4b24veG9mZiBkaXNhYmxlZCBpbiBib3RoCi0jIHNldHVwIGEgJiBjLgotIwotIyBXQVJOSU5HISEhIFRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBFUkdPIDQwMDAgbWljcm9jb2RlCi0jIEJlIGFkdmlzZWQgdGhhdCB2ZXJ5IGVhcmx5IHZlcnNpb25zIERPIE5PVCBXT1JLIFJJR0hUICEhCi0jIE1pY3JvdGVybSBkb2VzIGhhdmUgYSBST00gZXhjaGFuZ2UgcHJvZ3JhbS0gdXNlIGl0IG9yIGxvc2UgYmlnCi0jIChlcmdvNDAwOiBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1lcmdvNDAwMHxtaWNyb3Rlcm0gZXJnbyA0MDAwLAotCWRhLCBkYiwgbXNnciwKLQljb2xzIzgwLCBsaW5lcyM2NiwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVsySiQ8ODA+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCi0JZGNoMT1cRVsxUCQ8ODA+LCBkbDE9XEVbMU0kPDUqPiwgZWQ9XEVbMEokPDE1PiwKLQllbD1cRVswSyQ8MTM+LCBodD1eSSwgaWwxPVxFWzFMJDw1Kj4sIGluZD1cRUQkPDIwKj4sCi0JaXMyPVxFPFxFPVxFWz8xbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCQ8MzAwPiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwKLQlrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCBsZjE9cGYxLCBsZjI9cGYyLCBsZjM9cGYzLAotCWxmND1wZjQsIHJpPVxFTSQ8MjAqPiwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRT0kPDQ+LCBybXNvPVxFW20kPDIwPiwgc2dyMD1cRVttJDwyMD4sCi0Jc21hbT1cRVs/N20sIHNtaXI9XEVbNGgkPDY+LCBzbWt4PVxFPSQ8ND4sCi0Jc21zbz1cRVs3bSQ8MjA+LAotCi0jIyMjIE5DUgotIwotIyBOQ1IncyB0ZXJtaW5hbCBncm91cCB3YXMgbWVyZ2VkIHdpdGggQVQmVCdzIHdoZW4gQVQmVCBib3VnaHQgdGhlIGNvbXBhbnkuCi0jIEZvciB3aGF0IGhhcHBlbmVkIHRvIHRoYXQgZ3JvdXAsIHNlZSB0aGUgQUREUyBzZWN0aW9uLgotIwotIyBUaGVyZSBpcyBhbiBOQ1I0MTAzIHRlcm1pbmFsIHRoYXQncyBqdXN0IGEgcmUtYmFkZ2VkIFd5c2UtNTAuCi0jCi0KLSMgVGhlIGZvbGxvd2luZyB2ZW5kb3Itc3VwcGxpZWQgdGVybWNhcHMgd2VyZSBjYXB0dXJlZCBmcm9tIHRoZSBCb3VuZGxlc3MKLSMgVGVjaG5vbG9naWVzIHNpdGUsIDggTWFyY2ggMTk5OC4gIEkgcmVtb3ZlZCBhbGwtdXBwZXItY2FzZSBuYW1lcyB0aGF0IHdlcmUKLSMgaWRlbnRpY2FsLCBleGNlcHQgZm9yIGNhc2UsIHRvIGxvd2VyLWNhc2Ugb25lcy4gIEkgYWxzbyB1bmNvbW1lbnRlZCB0aGUgYWNzYwotIyBjYXBhYmlsaXRpZXMuWAotIwotIyBUaGUgSW50ZWNvbG9yIGVtdWxhdGlvbiBvZiB0aGUgTkNSIDI5MDAvMjYwQyBjb2xvciB0ZXJtaW5hbCBpcyBiYXNpY2FsbHkgYQotIyBERUMgdnQyMDAvMzAwIHdpdGggY29sb3IgY2FwYWJpbGl0aWVzIGFkZGVkLgotbmNyMjYwaW50YW58TkNSIEludGVjb2xvciBlbXVsYXRpb24gb2YgdGhlIDI5MDBfMjYwQyB3aXRoIGFuIEFOU0kga2V5Ym9hcmQsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCW9wPVxFWzBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXVzZT1uY3IyNjB2dDMwMGFuLAotIyBUaGUgSW50ZWNvbG9yIGVtdWxhdGlvbiBvZiB0aGUgTkNSIDI5MDAvMjYwQyBjb2xvciB0ZXJtaW5hbCBpcyBiYXNpY2FsbHkgYQotIyBERUMgdnQyMDAvMzAwIHdpdGggY29sb3IgY2FwYWJpbGl0aWVzIGFkZGVkLgotbmNyMjYwaW50d2FufE5DUiBJbnRlY29sb3IgZW11bGF0aW9uIG9mIHRoZSAyOTAwXzI2MEMgd2l0aCBhbiBBTlNJIGtleWJvYXJkLAotCWNvbG9ycyM4LCBwYWlycyM2NCwKLQlvcD1cRVswbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQl1c2U9bmNyMjYwdnQzMDB3YW4sCi0jIFRoZSBJbnRlY29sb3IgZW11bGF0aW9uIG9mIHRoZSBOQ1IgMjkwMC8yNjBDIGNvbG9yIHRlcm1pbmFsIGlzIGJhc2ljYWxseSBhCi0jIERFQyB2dDIwMC8zMDAgd2l0aCBjb2xvciBjYXBhYmlsaXRpZXMgYWRkZWQuCi1uY3IyNjBpbnRwcHxOQ1IgSW50ZWNvbG9yIGVtdWxhdGlvbiBvZiB0aGUgMjkwMF8yNjBDIHdpdGggYSBQQysga2V5Ym9hcmQsCi0JY29sb3JzIzgsIHBhaXJzIzY0LAotCW9wPVxFWzBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCXVzZT1uY3IyNjB2dDMwMHBwLAotIyBUaGUgSW50ZWNvbG9yIGVtdWxhdGlvbiBvZiB0aGUgTkNSIDI5MDAvMjYwQyBjb2xvciB0ZXJtaW5hbCBpcyBiYXNpY2x5IGEKLSMgREVDIHZ0MjAwLzMwMCB3aXRoIGNvbG9yIGNhcGFiaWxpdGllcyBhZGRlZC4KLW5jcjI2MGludHdwcHxOQ1IgSW50ZWNvbG9yIGVtdWxhdGlvbiBvZiB0aGUgMjkwMF8yNjBDIHdpdGggYSBQQysga2V5Ym9hcmQgaW4gMTMyIGNvbHVtbiBtb2RlLAotCWNvbG9ycyM4LCBwYWlycyM2NCwKLQlvcD1cRVswbSwgc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwKLQl1c2U9bmNyMjYwdnQzMDB3cHAsCi0jIFRoaXMgZGVmaW5pdGlvbiBmb3IgVmlld1BvaW50IHN1cHBvcnRzIHNldmVyYWwgYXR0cmlidXRlcy4gIFRoaXMgbWVhbnMKLSMgdGhhdCBpdCBoYXMgbWFnaWMgY29va2llcyAoZXh0cmEgc3BhY2VzIHdoZXJlIHRoZSBhdHRyaWJ1dGVzIGJlZ2luKS4KLSMgU29tZSBhcHBsaWNhdGlvbnMgZG8gbm90IGZ1bmN0aW9uIHdlbGwgd2l0aCBtYWdpYyBjb29raWVzLiAgVGhlIFN5c3RlbQotIyBBZG1pbmlzdHJhdG9yJ3MgU2hlbGwgaW4gTkNSIFVuaXggU1ZSNCAxLjAzIGlzIG9uZSBzdWNoIGFwcGxpY2F0aW9uLgotIyBJZiBzdXBwb3J0aW5nIHZhcmlvdXMgYXR0cmlidXRlcyBpcyBub3Qgdml0YWwsICd4bWMjMScgYW5kIHRoZSBleHRyYQotIyBhdHRyaWJ1dGVzIGNhbiBiZSByZW1vdmVkLgotIyBNYXBwaW5nIHRvIEFTQ0lJIGNoYXJhY3RlciBzZXQgKCdhY3NjJyBjYXBhYmlsaXR5KSBjYW4gYWxzbyBiZQotIyByZXN0b3JlZCBpZiBuZWVkZWQuCi1uY3IyNjB2cHBwfE5DUiAyOTAwXzI2MCB2aWV3cG9pbnQsCi0JYW0sIGJ3LCBocywga20sIG1jNWksIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCBubGFiIzMyLCB4bWMjMSwKLQlhY3NjPTA3YT9oO2o1azNsMm0xbjhxXDp0NHU5dj13MHg2LCBiZWw9XkcsIGJsaW5rPVxFRzIsCi0JY2J0PVxFSSwgY2l2aXM9XEVgMCwgY2xlYXI9XDAxNCQ8NDA+LCBjbm9ybT1cRWA1LAotCWNyPVxyJDwyPiwgY3ViMT1cMDEwJDwyPiwgY3VkMT1cbiQ8Mj4sIGN1ZjE9XDAwNiQ8Mj4sCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8NT4sIGN1dTE9XDAzMiQ8Mj4sCi0JZGNoMT1cRVckPDI+LCBkaW09XEVHcCwgZGwxPVxFbCQ8Mj4sIGRzbD1cRWBjLCBlZD1cRWskPDI+LAotCWVsPVxFSyQ8Mj4sIGZzbD1eTSwgaG9tZT1cMDM2JDwyPiwgaHQ9XkksIGh0cz1cRTEsCi0JaWwxPVxFTSQ8Mj4sIGluZD1cbiQ8Mj4sIGludmlzPVxFRzEsCi0JaXMyPVxFZTZcRX4lJDwxMDA+XEUrXEVgXDpcRWQvXEVgMVxFT1xFZTRcRWNAMEBcRWNAMUFcRWNCMFxFY0MxXEVlNyQ8MTAwPiwKLQlrREM9XEVsLCBrRU5EPVxFaywga0hPTT1eQSwga1BSVD1cRTcsIGtSSVQ9XkYsIGthMT1eQSwga2EzPVxFSiwKLQlrYnM9XkgsIGtjMT1cRVQsIGtjMz1cRUosIGtjdWIxPV5VLCBrY3VkMT1eSiwga2N1ZjE9XkYsCi0Ja2N1dTE9XlosIGtkY2gxPVxFVywga2VuZD1cRUssIGtmMT1eQjFcciwga2YxMD1eQlw6XHIsCi0Ja2YxMT1eQjtcciwga2YxMj1eQjxcciwga2YxMz1eQj1cciwga2YxND1eQj5cciwga2YxNT1eQj9cciwKLQlrZjE2PV5CQFxyLCBrZjE3PV5CIVxyLCBrZjE4PV5CIlxyLCBrZjE5PV5CI1xyLCBrZjI9XkIyXHIsCi0Ja2YyMD1eQiRcciwga2YyMT1cMDAyJV5NLCBrZjIyPV5CJlxyLCBrZjIzPV5CJ1xyLAotCWtmMjQ9XkIoXHIsIGtmMjU9XkIpXHIsIGtmMjY9XkIqXHIsIGtmMjc9XkIrXHIsCi0Ja2YyOD1eQlwsXHIsIGtmMjk9XkItXHIsIGtmMz1eQjNcciwga2YzMD1eQi5cciwga2YzMT1eQi9cciwKLQlrZjMyPV5CMFxyLCBrZjQ9XkI0XHIsIGtmNT1eQjVcciwga2Y2PV5CNlxyLCBrZjc9XkI3XHIsCi0Ja2Y4PV5COFxyLCBrZjk9XkI5XHIsIGtob21lPV5BLCBraWNoMT1cRXEsIGtucD1cRUosIGtwcD1cRUosCi0Ja3BydD1cRVAsIGxsPVwwMDEkPDU+LCBtYzA9XEVQJDwxMDA+LCBtYzQ9XlQsIG1jNT1eUiwKLQltcmN1cD1cRXdAJXAxJXs0OH0lKyVjJXAyJXszMn0lKyVjJXAzJXszMn0lKyVjJDw1PiwKLQluZWw9XDAzNyQ8Mj4sIHJldj1cRUc0LCByaT1cRWokPDI+LCBybWFjcz1cRWNCMFxFSFwwMDMsCi0Jcm1pcj1cRXIsIHJtc289XEVHMCwgcm11bD1cRUcwLCBybXhvbj1cRWMyMCwKLQlyczI9XEVlNlxFfiUkPDEwMD5cRStcRWBcOlxFZC9cRWAxXEVPXEVlNFxFY0AwQFxFY0AxQVxFY0IwXEVjQzFcRWU3JDwxMDA+LAotCXNncjA9XEVHMFxFSFwwMDMsIHNtYWNzPVxFY0IxXEVIXDAwMiwgc21pcj1cRXEsCi0Jc21zbz1cRUc0LCBzbXVsPVxFRzgsIHNteG9uPVxFYzIxLCB0c2w9XEVGLAotbmNyMjYwdnB3cHB8TkNSIDI5MDBfMjYwIHZpZXdwb2ludCB3aWRlIG1vZGUsCi0JY29scyMxMzIsCi0JY3VwPVxFYSVpJXAxJWRSJXAyJWRDJDwzMD4sCi0JaXMyPVxFZTZcRX4lJDwxMDA+XEUrXEVgO1xFZC9cRWAxXEVPXEVlNFxFY0AwQFxFY0AxQVxFY0IwXEVjQzFcRWU3JDwxMDA+LAotCXJzMj1cRWU2XEV+JSQ8MTAwPlxFK1xFYDtcRWQvXEVgMVxFT1xFZTRcRWNAMEBcRWNAMUFcRWNCMFxFY0MxXEVlNyQ8MTAwPiwKLQl1c2U9bmNyMjYwdnBwcCwKLW5jcjI2MHZ0MTAwYW58TkNSIDI5MDBfMjYwIHZ0MTAwIHdpdGggYW5zaSBreWJkLAotCWFtLCBocywgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsIG5sYWIjMzIsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3Fxc3N0dHV1dnZ3d3h4fn4sIGJlbD1eRywKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVsySlxFWzE7MUgkPDIwPiwgY25vcm09XEVbPzI1aCwgY3I9XHIkPDE+LAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCQ8NT4sCi0JY3ViMT1cRVtEJDw1PiwgY3VkPVxFWyVwMSVkQiQ8NT4sIGN1ZDE9XEVbQiQ8NT4sCi0JY3VmPVxFWyVwMSVkQyQ8NT4sIGN1ZjE9XEVbQyQ8NT4sCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxMD4sIGN1dT1cRVslcDElZEEkPDU+LAotCWN1dTE9XEVbQSQ8NT4sIGRjaD1cRVslcDElZFAkPDU+LCBkY2gxPVxFWzFQJDw1PiwKLQlkbD1cRVslcDElZE0kPDU+LCBkbDE9XEVbTSQ8NT4sIGRzbD1cRVswJH5cRVsxJH4sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbMEokPDU+LCBlbD1cRVswSyQ8Mz4sIGVsMT1cRVsxSyQ8Mz4sCi0JZnNsPVxFWzAkfSwgaG9tZT1cRVtIJDwxPiwgaHBhPVxFWyVwMSVkRyQ8NDA+LCBodD1eSSwKLQlodHM9XEVILCBpY2g9XEVbJXAxJWRAJDw1PiwgaWw9XEVbJXAxJWRMJDw1PiwKLQlpbDE9XEVbTCQ8NT4sIGluZD1cRUQkPDU+LCBpbmRuPVxFWyVwMSVkRSQ8NT4sCi0JaW52aXM9XEVbOG0sCi0JaXMyPVxFWyFwXEVbPzc7MTk7NjdoXEVbPzE7Mzs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2RjaDE9XEVbM34sIGtmbmQ9XEVbMX4sIGtobHA9XEVbMjh+LCBraWNoMT1cRVsyfiwKLQlrbnA9XEVbNn4sIGtwcD1cRVs1fiwga3Jkbz1cRVsyOX4sIGtzbHQ9XEVbNH4sIG5lbD1cRUUkPDU+LAotCXJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0kPDU+LCBybWFjcz1eTywgcm1pcj1cRVs0bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVswbSwgcm11bD1cRVswbSwKLQlyczI9XEVbIXBcRVs/NzsxOTs2N2hcRVs/MTszOzRsXEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyMD4sCi0Jc2dyMD1cRVswbVwwMTckPDIwPiwgc21hY3M9Xk4sIHNtaXI9XEVbNGgsCi0Jc21reD1cRVs/MWhcRT0sIHNtc289XEVbMTs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCXRzbD1cRVsyJH5cRVsxJH0sIHZwYT1cRVslcDElZGQkPDQwPiwgdXNlPXZ0MjIwK2tleXBhZCwKLW5jcjI2MHZ0MTAwd2FufE5DUiAyOTAwXzI2MCB2dDEwMCB3aWRlIG1vZGUgYW5zaSBreWJkLAotCWNvbHMjMTMyLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MzA+LAotCWlzMj1cRVshcFxFWz8zOzc7MTk7NjdoXEVbPzE7NGxcRShCXEUpMFwwMTdcRVsySlxFWzE7MUhcRT4kPDIwMD4sCi0JcnMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/MTs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQl1c2U9bmNyMjYwdnQxMDBhbiwKLW5jcjI2MHZ0MTAwcHB8TkNSIDI5MDBfMjYwIHZ0MTAwIHdpdGggUEMrIGt5YmQsCi0JaXMyPVxFWyFwXEVbPzc7MTk7NjdoXEVbPzE7Mzs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQlrYTE9XEVbSCwga2EzPVxFT3UsIGtiMj1cRVtWLCBrYzM9XEVbVSwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVs0fiwKLQlrZW5kPVxFWzV+LCBraG9tZT1cRVsyfiwga2ljaDE9XEVbMX4sIGtucD1cRVs2fiwga3BwPVxFWzN+LAotCWxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsIHJta3g9XEU+LAotCXJzMj1cRVshcFxFWz83OzE5OzY3aFxFWz8xOzM7NGxcRShCXEUpMFwwMTdcRVsySlxFWzE7MUhcRT4kPDIwMD4sCi0Jc21reD1cRT0sIHVzZT1uY3IyNjB2dDEwMGFuLAotbmNyMjYwdnQxMDB3cHB8TkNSIDI5MDBfMjYwIHZ0MTAwIHdpZGUgbW9kZSBwYysgIGt5YmQsCi0JY29scyMxMzIsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwzMD4sCi0JaXMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/MTs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQlyczI9XEVbIXBcRVs/Mzs3OzE5OzY3aFxFWz8xOzRsXEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXVzZT1uY3IyNjB2dDEwMHBwLAotbmNyMjYwdnQyMDBhbnxOQ1IgMjkwMF8yNjAgdnQyMDAgd2l0aCBhbnNpIGt5YmQsCi0JYW0sIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbmxhYiMzMiwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcXFzc3R0dXV2dnd3eHh+fiwgYmVsPV5HLAotCWJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFWzJKXEVbMTsxSCQ8MjA+LCBjbm9ybT1cRVs/MjVoLCBjcj1cciQ8MT4sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyJDw1PiwgY3ViPVxFWyVwMSVkRCQ8NT4sCi0JY3ViMT1cRVtEJDw1PiwgY3VkPVxFWyVwMSVkQiQ8NT4sIGN1ZDE9XEVbQiQ8NT4sCi0JY3VmPVxFWyVwMSVkQyQ8NT4sIGN1ZjE9XEVbQyQ8NT4sCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwxMD4sIGN1dT1cRVslcDElZEEkPDU+LAotCWN1dTE9XEVbQSQ8NT4sIGRjaD1cRVslcDElZFAkPDU+LCBkY2gxPVxFWzFQJDw1PiwKLQlkbD1cRVslcDElZE0kPDU+LCBkbDE9XEVbTSQ8NT4sIGRzbD1cRVswJH5cRVsxJH4sCi0JZWNoPVxFWyVwMSVkWCQ8NT4sIGVkPVxFWzBKLCBlbD1cRVswSyQ8NT4sIGVsMT1cRVsxSyQ8NT4sCi0JZnNsPVxFWzAkfSwgaG9tZT1cRVtILCBocGE9XEVbJXAxJWRHJDw0MD4sIGh0PV5JLCBodHM9XEVILAotCWljaD1cRVslcDElZEAkPDU+LCBpbD1cRVslcDElZEwkPDU+LCBpbDE9XEVbTCQ8NT4sCi0JaW5kPVxFRCQ8NT4sIGluZG49XEVbJXAxJWRFJDw1PiwgaW52aXM9XEVbOG0sCi0JaXMyPVxFWyFwXEVbPzc7MTk7NjdoXEVbPzE7Mzs0bFxFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2RjaDE9XEVbM34sIGtmMD1cRU95LCBrZjEwPVxFWzIxfiwga2YxMT1cRVsyM34sCi0Ja2YxMj1cRVsyNH4sIGtmMTM9XEVbMjV+LCBrZjE0PVxFWzI2fiwga2YxNT1cRVsyOH4sCi0Ja2YxNj1cRVsyOX4sIGtmMTc9XEVbMzF+LCBrZjE4PVxFWzMyfiwga2YxOT1cRVszM34sCi0Ja2YyPVxFT1EsIGtmMjA9XEVbMzR+LCBrZjIxPVxFWzMxfiwga2YyMj1cRVszMn4sCi0Ja2YyMz1cRVszM34sIGtmMjQ9XEVbMzR+LCBrZjI1PVxFWzM1fiwga2YyNj1cRVsxfiwKLQlrZjI3PVxFWzJ+LCBrZjI4PVxFWzN+LCBrZjI5PVxFWzR+LCBrZjM9XEVPUiwga2YzMD1cRVs1fiwKLQlrZjMxPVxFWzZ+LCBrZjMyPVxFWzd+LCBrZjMzPVxFWzh+LCBrZjM0PVxFWzl+LAotCWtmMzU9XEVbMTB+LCBrZjQ9XEVPUywga2Y1PVxFW00sIGtmNj1cRVsxN34sIGtmNz1cRVsxOH4sCi0Ja2Y4PVxFWzE5fiwga2Y5PVxFWzIwfiwga2ZuZD1cRVsxfiwga2hscD1cRVsyOH4sCi0Ja2ljaDE9XEVbMn4sIGtucD1cRVs2fiwga3BwPVxFWzV+LCBrcmRvPVxFWzI5fiwga3NsdD1cRVs0fiwKLQltYzA9XEVbaSwgbWM0PVxFWzRpLCBtYzU9XEVbNWksIG5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJpPVxFTSQ8NT4sIHJtYWNzPVwwMTckPDIwPiwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwKLQlyczI9XEVbIXBcRVs/NzsxOTs2N2hcRVs/MTszOzRsXEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyMD4sCi0Jc2dyMD1cRVswbVwwMTckPDIwPiwgc21hY3M9XDAxNiQ8MjA+LCBzbWFtPVxFWz83aCwKLQlzbWlyPVxFWzRoLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbM2csIHRzbD1cRVsyJH5cRVsxJH0sIHZwYT1cRVslcDElZGQkPDQwPiwKLQl1c2U9dnQyMjAra2V5cGFkLAotbmNyMjYwdnQyMDB3YW58TkNSIDI5MDBfMjYwIHZ0MjAwIHdpZGUgbW9kZSBhbnNpIGt5YmQsCi0JY29scyMxMzIsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwzMD4sCi0JaXMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/NGxcRShCXEUpMFwwMTdcRVsySlxFWzE7MUgkPDIwMD4sCi0JcnMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/NGxcRShCXEUpMFwwMTdcRVsySlxFWzE7MUgkPDIwMD4sCi0JdXNlPW5jcjI2MHZ0MjAwYW4sCi1uY3IyNjB2dDIwMHBwfE5DUiAyOTAwXzI2MCB2dDIwMCB3aXRoIHBjKyBreWJkLAotCWthMT1cRVtILCBrYTM9XEVPdSwga2IyPVxFW1YsIGtjMz1cRVtVLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFWzR+LAotCWtlbmQ9XEVbMX4sIGtob21lPVxFW0gsIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKLQlsZjE9cGYxLCBsZjI9cGYyLCBsZjM9cGYzLCBsZjQ9cGY0LCBybWt4PVxFPiwgc21reD1cRT0sCi0JdXNlPW5jcjI2MHZ0MjAwYW4sCi1uY3IyNjB2dDIwMHdwcHxOQ1IgMjkwMF8yNjAgdnQyMDAgd2lkZSBtb2RlIHBjKyAga3liZCwKLQljb2xzIzEzMiwKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDMwPiwKLQlpczI9XEVbIXBcRVs/Mzs3OzE5OzY3aFxFWz8xOzRsXEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXJzMj1cRVshcFxFWz8zOzc7MTk7NjdoXEVbPzE7NGxcRShCXEUpMFwwMTdcRVsySlxFWzE7MUhcRT4kPDIwMD4sCi0JdXNlPW5jcjI2MHZ0MjAwcHAsCi1uY3IyNjB2dDMwMGFufE5DUiAyOTAwXzI2MCB2dDMwMCB3aXRoIGFuc2kga3liZCwKLQlhbSwgaHMsIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCBubGFiIzMyLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29xcXNzdHR1dXZ2d3d4eH5+LCBiZWw9XkcsCi0JYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbMkpcRVsxOzFIJDwyMD4sIGNub3JtPVxFWz8yNWgsIGNyPVxyJDwxPiwKLQljc3I9XEVbJWklcDElZDslcDIlZHIkPDU+LCBjdWI9XEVbJXAxJWREJDw1PiwKLQljdWIxPVxFW0QkPDU+LCBjdWQ9XEVbJXAxJWRCJDw1PiwgY3VkMT1cRVtCJDw1PiwKLQljdWY9XEVbJXAxJWRDJDw1PiwgY3VmMT1cRVtDJDw1PiwKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDEwPiwgY3V1PVxFWyVwMSVkQSQ8NT4sCi0JY3V1MT1cRVtBJDw1PiwgZGNoPVxFWyVwMSVkUCQ8NT4sIGRjaDE9XEVbMVAkPDU+LAotCWRsPVxFWyVwMSVkTSQ8NT4sIGRsMT1cRVtNJDw1PiwgZHNsPVxFWzAkflxFWzEkfiwKLQllY2g9XEVbJXAxJWRYJDw1PiwgZWQ9XEVbMEosIGVsPVxFWzBLJDw1PiwgZWwxPVxFWzFLJDw1PiwKLQlmc2w9XEVbMCR9LCBob21lPVxFW0gsIGhwYT1cRVslcDElZEckPDQwPiwgaHQ9XkksIGh0cz1cRUgsCi0JaWNoPVxFWyVwMSVkQCQ8NT4sIGlsPVxFWyVwMSVkTCQ8NT4sIGlsMT1cRVtMJDw1PiwKLQlpbmQ9XEVEJDw1PiwgaW5kbj1cRVslcDElZEUkPDU+LCBpbnZpcz1cRVs4bSwKLQlpczI9XEVbIXBcRVs/NzsxOTs2N2hcRVs/MTszOzRsXEVbMTswJXdcRShCXEUpMFwwMTdcRVsySlxFWzE7MUhcRT4kPDIwMD4sCi0Ja2JzPV5ILCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtkY2gxPVxFWzN+LCBrZjA9XEVPeSwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LAotCWtmMTI9XEVbMjR+LCBrZjEzPVxFWzI1fiwga2YxND1cRVsyNn4sIGtmMTU9XEVbMjh+LAotCWtmMTY9XEVbMjl+LCBrZjE3PVxFWzMxfiwga2YxOD1cRVszMn4sIGtmMTk9XEVbMzN+LAotCWtmMjA9XEVbMzR+LCBrZjIxPVxFWzMxfiwga2YyMj1cRVszMn4sIGtmMjM9XEVbMzN+LAotCWtmMjQ9XEVbMzR+LCBrZjI1PVxFWzM1fiwga2YyNj1cRVsxfiwga2YyNz1cRVsyfiwKLQlrZjI4PVxFWzN+LCBrZjI5PVxFWzR+LCBrZjMwPVxFWzV+LCBrZjMxPVxFWzZ+LCBrZjMyPVxFWzd+LAotCWtmMzM9XEVbOH4sIGtmMzQ9XEVbOX4sIGtmMzU9XEVbMTB+LCBrZjU9XEVbTSwga2Y2PVxFWzE3fiwKLQlrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBrZm5kPVxFWzF+LAotCWtobHA9XEVbMjh+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3Jkbz1cRVsyOX4sIGtzbHQ9XEVbNH4sIG1jMD1cRVtpLCBtYzQ9XEVbNGksIG1jNT1cRVs1aSwKLQluZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNJDw1Piwgcm1hY3M9XDAxNyQ8MjA+LAotCXJtYW09XEVbPzdsLCBybWlyPVxFWzRsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVsyN20sCi0Jcm11bD1cRVsyNG0sCi0JcnMyPVxFWyFwXEVbPzc7MTk7NjdoXEVbPzE7Mzs0bFxFWzE7MCV3XEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwyMD4sCi0Jc2dyMD1cRVswbVwwMTckPDIwPiwgc21hY3M9XDAxNiQ8MjA+LCBzbWFtPVxFWz83aCwKLQlzbWlyPVxFWzRoLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLQl0YmM9XEVbM2csIHRzbD1cRVsyJH5cRVsxJH0sIHZwYT1cRVslcDElZGQkPDQwPiwKLQl1c2U9dnQyMjAra2V5cGFkLAotbmNyMjYwdnQzMDB3YW58TkNSIDI5MDBfMjYwIHZ0MzAwIHdpZGUgbW9kZSBhbnNpIGt5YmQsCi0JY29scyMxMzIsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwzMD4sCi0JaXMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/NGxcRVsxOzAld1xFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSCQ8MjAwPiwKLQlyczI9XEVbIXBcRVs/Mzs3OzE5OzY3aFxFWz80bFxFWzE7MCV3XEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIJDwyMDA+LAotCXVzZT1uY3IyNjB2dDMwMGFuLAotbmNyMjYwdnQzMDBwcHxOQ1IgMjkwMF8yNjAgdnQzMDAgd2l0aCBwYysga3liZCwKLQlrYTE9XEVbSCwga2EzPVxFT3UsIGtiMj1cRVtWLCBrYzM9XEVbVSwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVs0fiwKLQlrZW5kPVxFWzF+LCBraG9tZT1cRVtILCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0JbGYxPXBmMSwgbGYyPXBmMiwgbGYzPXBmMywgbGY0PXBmNCwgcm1reD1cRT4sIHNta3g9XEU9LAotCXVzZT1uY3IyNjB2dDMwMGFuLAotTkNSMjYwVlQzMDBXUFB8bmNyMjYwdnQzMDB3cHB8TkNSIDI5MDBfMjYwIHZ0MzAwIHdpZGUgbW9kZSBwYysgIGt5YmQsCi0JY29scyMxMzIsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDwzMD4sCi0JaXMyPVxFWyFwXEVbPzM7NzsxOTs2N2hcRVs/MTs0bFxFWzE7MCV3XEUoQlxFKTBcMDE3XEVbMkpcRVsxOzFIXEU+JDwyMDA+LAotCXJzMj1cRVshcFxFWz8zOzc7MTk7NjdoXEVbPzE7NGxcRVsxOzAld1xFKEJcRSkwXDAxN1xFWzJKXEVbMTsxSFxFPiQ8MjAwPiwKLQl1c2U9bmNyMjYwdnQzMDBwcCwKLSMgVGhpcyB0ZXJtaW5mbyBmaWxlIGNvbnRhaW5zIGNvbG9yIGNhcGFiaWxpdGllcyBmb3IgdGhlIFd5c2UzMjUgZW11bGF0aW9uIG9mCi0jIHRoZSBOQ1IgMjkwMC8yNjBDIGNvbG9yIHRlcm1pbmFsLiAgQmVjYXVzZSBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb21tYW5kCi0jIChlc2NhcGUgc2VxdWVuY2UpIHVzZWQgdG8gc2V0IGNvbG9yIGF0dHJpYnV0ZXMsIG9uZSBvZiB0aGUgZm9yZS9iYWNrZ3JvdW5kCi0jIGNvbG9ycyBtdXN0IGJlIHByZXNldCB0byBhIGdpdmVuIHZhbHVlLiBJIGhhdmUgc2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvCi0jIGJsYWNrLiAgVGhlIHVzZXIgY2FuIGNoYW5nZSB0aGlzIHNldHVwIGJ5IGFsdGVyaW5nIHRoZSBsYXN0IHNlY3Rpb24gb2YgdGhlCi0jICdzZXRmJyBkZWZpbml0aW9uLiAgVGhlIGVzY2FwZSBzZXF1ZW5jZSB0byBzZXQgY29sb3IgYXR0cmlidXRlcyBpcwotIwkJRVNDIGQgeSA8Zm9yZWdyb3VuZF9jb2xvcj4gPGJhY2tncm91bmRfY29sb3I+IDEKLSMgSW4gYWRkaXRpb24sIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGNhbiBiZSBjaGFuZ2VkIHRocm91Z2ggdGhlIGRlc2sgYWNjZXNzb3JpZXMuCi0jIFRoZSBjYXBhYmxpdGl5ICdvcCcgc2V0cyBjb2xvcnMgdG8gZ3JlZW4gb24gYmxhY2sgKGRlZmF1bHQgY29tYmluYXRpb24pLgotIwotIyBOT1RFOiAgVGhlIE5DUiBVbml4IFN5c3RlbSBBZG1pbmlzdHJhdG9yJ3MgU2hlbGwgd2lsbCBub3QgZnVuY3Rpb24gcHJvcGVybHkKLSMgCSAgICBpZiB0aGUgJ3BhaXJzJyBjYXBhYmlsaXR5IGlzIGRlZmluZWQuIFVuLUNvbW1lbnQgdGhlICdwYWlycycKLSMJICAgIGNhcGFiaWxpdHkgYW5kIHJlY29tcGlsZSBpZiB5b3Ugd2lzaCB0byBoYXZlIGl0IGluY2x1ZGVkLgotIwotbmNyMjYwd3kzMjVwcHxOQ1IgMjkwMF8yNjAgd3lzZSAzMjUsCi0JYW0sIGJ3LCBocywga20sIG1jNWksIG1pciwgbXNnciwgeG9uLAotCWNvbG9ycyMxNiwgY29scyM4MCwgbGluZXMjMjQsIG5jdiMzMywgbmxhYiMzMiwKLQlhY3NjPTA3YT9oO2o1azNsMm0xbjhxXDp0NHU5dj13MHg2LCBiZWw9XkcsIGJsaW5rPVxFRzIsCi0JY2J0PVxFSSwgY2l2aXM9XEVgMCwgY2xlYXI9XEUqJDwxMD4sIGNub3JtPVxFYDEsIGNyPV5NLAotCWN1YjE9XDAxMCQ8NT4sIGN1ZDE9XG4kPDU+LCBjdWYxPVwwMTQkPDU+LAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDEwPiwgY3V1MT1cMDEzJDw1PiwKLQljdnZpcz1cRWA1LCBkY2gxPVxFVyQ8NTA+LCBkbDE9XEVSJDw1PiwgZHNsPVxFYGMsCi0JZWQ9XEV5JDw1PiwgZWw9XEV0JDw1PiwgZnNsPV5NLCBob21lPVwwMzYkPDU+LCBodD1eSSwKLQlodHM9XEUxLCBpbDE9XEVFJDw1PiwgaW5kPVxuJDw1PiwgaW52aXM9XEVHMSwKLQlpczI9XEVlNlxFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWBcOlxFYEBcRX4hXEUiXEVlNFxFeEBcRWA5XEVlNyQ8MTAwPiwKLQlrREM9XEVSLCBrRU5EPVxFWSwga0hPTT1cRXssIGtOWFQ9XEVLLCBrUFJUPVxFNywga1BSVj1cRUosCi0Ja1JJVD1eTCwga2ExPV5eLCBrYjI9XEVKLCBrYnM9XkgsIGtjMT1cRVQsIGtjMz1cRUssIGtjYnQ9XEVJLAotCWtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1cRVcsIGtlbmQ9XEVULAotCWtmMT1eQUBcciwga2YxMD1eQUlcciwga2YxMT1eQUpcciwga2YxMj1eQUtcciwga2YxMz1eQUxcciwKLQlrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLCBrZjE2PV5BT1xyLCBrZjE3PV5BYFxyLCBrZjE4PV5BYVxyLAotCWtmMTk9XkFiXHIsIGtmMj1eQUFcciwga2YyMD1eQWNcciwga2YyMT1eQWRcciwga2YyMj1eQWVcciwKLQlrZjIzPV5BZlxyLCBrZjI0PV5BZ1xyLCBrZjI1PV5BaFxyLCBrZjI2PV5BaVxyLCBrZjI3PV5BalxyLAotCWtmMjg9XkFrXHIsIGtmMjk9XkFsXHIsIGtmMz1eQUJcciwga2YzMD1eQW1cciwga2YzMT1eQW5cciwKLQlrZjMyPV5Bb1xyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLCBrZjc9XkFGXHIsCi0Ja2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtob21lPV5eLCBraWNoMT1cRXEsIGtucD1cRUssIGtwcD1cRUosCi0Ja3BydD1cRVAsIG1jMD1cRVAsIG1jND1eVCwgbWM1PV5SLAotCW1yY3VwPVxFd0AlcDElezQ4fSUrJWMlcDIlezMyfSUrJWMlcDMlezMyfSUrJWMkPDEwPiwKLQluZWw9XDAzNyQ8NT4sIHJldj1cRUc0LCByaT1cRWokPDU+LCBybWFjcz1cRUhcMDAzXEVjQjAsCi0Jcm1hbT1cRWQuLCBybWlyPVxFciwgcm1zbz1cRUcwLCBybXVsPVxFRzAsIHJteG9uPVxFYzIwLAotCXJzMj1cRWU2XEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYFw6XEVgQFxFfiFcRSJcRWU0XEV4QFxFYDlcRWU3JDwxMDA+LAotCXNldGI9XHMsCi0Jc2V0Zj0lPyVwMSV7MH0lPSV0JXs0OX0lZSVwMSV7MX0lPSV0JXs1MH0lZSVwMSV7Mn0lPSV0JXs1MX0lZSVwMSV7M30lPSV0JXs1Mn0lZSVwMSV7NH0lPSV0JXs1M30lZSVwMSV7NX0lPSV0JXs1NH0lZSVwMSV7Nn0lPSV0JXs1NX0lZSVwMSV7N30lPSV0JXs2NH0lZSVwMSV7OH0lPSV0JXs1N30lZSVwMSV7OX0lPSV0JXs1OH0lZSVwMSV7MTB9JT0ldCV7NTl9JWUlcDElezExfSU9JXQlezYwfSVlJXAxJXsxMn0lPSV0JXs2MX0lZSVwMSV7MTN9JT0ldCV7NjJ9JWUlcDElezE0fSU9JXQlezYzfSVlJXAxJXsxNX0lPSV0JXs1Nn0lO1xFZHklYzExJDwxMDA+LAotCXNncjA9XEVHMFxFY0IwXEVjRCQ8MTU+LCBzbWFjcz1cRUhcMDAyXEVjQjEsIHNtYW09XEVkLywKLQlzbWlyPVxFcSwgc21zbz1cRUd0LCBzbXVsPVxFRzgsIHNteG9uPVxFYzIxLCB0YmM9XEUwLAotCXRzbD1cRUYsCi1uY3IyNjB3eTMyNXdwcHxOQ1IgMjkwMF8yNjAgd3lzZSAzMjUgd2lkZSBtb2RlLAotCWNvbHMjMTMyLAotCWN1cD1cRWElaSVwMSVkUiVwMiVkQyQ8MzA+LAotCWlzMj1cRWU2XEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYDtcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0JcnMyPVxFZTZcRWQvXEVlMVxFZCpcRXJcRU9cRWAxXEVgO1xFYEBcRX4hXEUiXEVlNFxFeEBcRWA5XEVlNyQ8MTAwPiwKLQl1c2U9bmNyMjYwd3kzMjVwcCwKLSMgVGhpcyBkZWZpbml0aW9uIGZvciBXeXNlIDM1MCBzdXBwb3J0cyBzZXZlcmFsIGF0dHJpYnV0ZXMuICBUaGlzIG1lYW5zCi0jIHRoYXQgaXQgaGFzIG1hZ2ljIGNvb2tpZXMgKGV4dHJhIHNwYWNlcyB3aGVyZSB0aGUgYXR0cmlidXRlcyBiZWdpbikuCi0jIFNvbWUgYXBwbGljYXRpb25zIGRvIG5vdCBmdW5jdGlvbiB3ZWxsIHdpdGggbWFnaWMgY29va2llcy4gIFRoZSBTeXN0ZW0KLSMgQWRtaW5pc3RyYXRvcidzIFNoZWxsIGluIE5DUiBVbml4IFNWUjQgMS4wMyBpcyBvbmUgc3VjaCBhcHBsaWNhdGlvbi4KLSMgSWYgc3VwcG9ydGluZyB2YXJpb3VzIGF0dHJpYnV0ZXMgaXMgbm90IHZpdGFsLCAneG1jIzEnIGFuZCB0aGUgZXh0cmEKLSMgYXR0cmlidXRlcyBjYW4gYmUgcmVtb3ZlZC4KLSMgTWFwcGluZyB0byBBU0NJSSBjaGFyYWN0ZXIgc2V0ICgnYWNzYycgY2FwYWJpbGl0eSkgY2FuIGFsc28gYmUKLSMgcmVzdG9yZWQgaWYgbmVlZGVkLgotIyBJbiBhZGRpdGlvbiwgY29sb3IgY2FwYWJpbGl0aWVzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGlzIGZpbGUuICBUaGUgZHJhd2JhY2ssCi0jIGhvd2V2ZXIsIGlzIHRoYXQgdGhlIGJhY2tncm91bmQgY29sb3IgaGFzIHRvIGJlIGJsYWNrLiAgVGhlIGZvcmVncm91bmQgY29sb3JzCi0jIGFyZSBudW1iZXJlZCAwIHRocm91Z2ggMTUuCi0jCi0jIE5PVEU6ICBUaGUgTkNSIFVuaXggU3lzdGVtIEFkbWluaXN0cmF0b3IncyBTaGVsbCBkb2VzIG5vdCBmdW5jdGlvbiBwcm9wZXJseQotIyAJICAgIHdpdGggdGhlICdwYWlycycgY2FwYWJpbGl0eSBkZWZpbmVkIGFzIGJlbG93LiAgSWYgeW91IHdpc2ggdG8KLSMJICAgIGhhdmUgaXQgaW5jbHVkZWQsIFVuLWNvbW1lbnQgaXQgYW5kIHJlY29tcGlsZSAodXNpbmcgJ3RpYycpLgotIwotbmNyMjYwd3kzNTBwcHxOQ1IgMjkwMF8yNjAgd3lzZSAzNTAsCi0JYW0sIGJ3LCBocywga20sIG1jNWksIG1pciwgbXNnciwgeG9uLAotCWNvbG9ycyMxNiwgY29scyM4MCwgbGluZXMjMjQsIG5jdiMzMywgbmxhYiMzMiwgcGFpcnMjMTYsIHhtYyMxLAotCWFjc2M9MDdhP2g7ajVrM2wybTFuOHFcOnQ0dTl2PXcweDYsIGJlbD1eRywgYmxpbms9XEVHMiwKLQljYnQ9XEVJLCBjaXZpcz1cRWAwLCBjbGVhcj1cRSskPDIwPiwgY25vcm09XEVgMSwgY3I9Xk0sCi0JY3ViMT1cMDEwJDw1PiwgY3VkMT1cbiQ8NT4sIGN1ZjE9XDAxNCQ8NT4sCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8NDA+LCBjdXUxPVwwMTMkPDU+LAotCWN2dmlzPVxFYDUsIGRjaDE9XEVXJDw1MD4sIGRpbT1cRUdwLCBkbDE9XEVSJDw1PiwgZHNsPVxFYGMsCi0JZWQ9XEV5JDw1PiwgZWw9XEV0JDw1PiwgZnNsPV5NLCBob21lPVwwMzYkPDEwPiwgaHQ9XkksCi0JaHRzPVxFMSwgaWwxPVxFRSQ8NT4sIGluZD1cbiQ8NT4sIGludmlzPVxFRzEsCi0JaXMyPVxFZTZcRWQvXEVlMVxFZCpcRXJcRU9cRWAxXEVgXDpcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0Ja0RDPVxFUiwga0VORD1cRVksIGtIT009XEV7LCBrUFJUPVxFNywga1JJVD1eTCwga2ExPV5eLCBrYnM9XkgsCi0Ja2MxPVxFVCwga2MzPVxFSywga2NidD1cRUksIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtkY2gxPVxFVywga2VuZD1cRVQsIGtmMT1eQUBcciwga2YxMD1eQUlcciwKLQlrZjExPV5BSlxyLCBrZjEyPV5BS1xyLCBrZjEzPV5BTFxyLCBrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLAotCWtmMTY9XkFPXHIsIGtmMTc9XkFgXHIsIGtmMTg9XkFhXHIsIGtmMTk9XkFiXHIsIGtmMj1eQUFcciwKLQlrZjIwPV5BY1xyLCBrZjIxPV5BZFxyLCBrZjIyPV5BZVxyLCBrZjIzPV5BZlxyLCBrZjI0PV5BZ1xyLAotCWtmMjU9XkFoXHIsIGtmMjY9XkFpXHIsIGtmMjc9XkFqXHIsIGtmMjg9XkFrXHIsIGtmMjk9XkFsXHIsCi0Ja2YzPV5BQlxyLCBrZjMwPV5BbVxyLCBrZjMxPV5BblxyLCBrZjMyPV5Bb1xyLCBrZjQ9XkFDXHIsCi0Ja2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsCi0Ja2hvbWU9Xl4sIGtpY2gxPVxFcSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsCi0JbWMwPVxFUCQ8MTA+LCBtYzQ9XlQsIG1jNT1eUiwKLQltcmN1cD1cRXdAJXAxJXs0OH0lKyVjJXAyJXszMn0lKyVjJXAzJXszMn0lKyVjJDwyMD4sCi0JbmVsPVwwMzckPDU+LCByZXY9XEVHNCwgcmk9XEVqJDw1Piwgcm1hY3M9XEVIXDAwM1xFY0IwLAotCXJtYW09XEVkLiwgcm1pcj1cRXIsIHJtc289XEVHMCwgcm11bD1cRUcwLCBybXhvbj1cRWMyMCwKLQlyczI9XEVlNlxFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWBcOlxFYEBcRX4hXEUiXEVlNFxFeEBcRWA5XEVlNyQ8MTAwPiwKLQlzZXRiPVxzLAotCXNldGY9JT8lcDElezB9JT0ldCV7NDl9JWUlcDElezF9JT0ldCV7NTB9JWUlcDElezJ9JT0ldCV7NTF9JWUlcDElezN9JT0ldCV7NTJ9JWUlcDElezR9JT0ldCV7NTN9JWUlcDElezV9JT0ldCV7NTR9JWUlcDElezZ9JT0ldCV7NTV9JWUlcDElezd9JT0ldCV7MTAyfSVlJXAxJXs4fSU9JXQlezk3fSVlJXAxJXs5fSU9JXQlezk4fSVlJXAxJXsxMH0lPSV0JXs5OX0lZSVwMSV7MTF9JT0ldCV7MTAxfSVlJXAxJXsxMn0lPSV0JXsxMDZ9JWUlcDElezEzfSU9JXQlezExMH0lZSVwMSV7MTR9JT0ldCV7MTExfSVlJXAxJXsxNX0lPSV0JXs1Nn0lO1xFbTAlYyQ8MTAwPiwKLQlzZ3IwPVxFRzBcRUhcMDAzXEVjRCwgc21hY3M9XEVIXDAwMlxFY0IxLCBzbWFtPVxFZC8sCi0Jc21pcj1cRXEsIHNtc289XEVHdCwgc211bD1cRUc4LCBzbXhvbj1cRWMyMSwgdGJjPVxFMCwKLQl0c2w9XEVGLAotbmNyMjYwd3kzNTB3cHB8TkNSIDI5MDBfMjYwIHd5c2UgMzUwIHdpZGUgbW9kZSwKLQljb2xzIzEzMiwKLQljdXA9XEVhJWklcDElZFIlcDIlZEMkPDMwPiwKLQlpczI9XEVlNlxFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWA7XEVgQFxFfiFcRSJcRWU0XEV4QFxFYDlcRWU3JDwyMDA+LAotCXJzMj1cRWU2XEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYDtcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDIwMD4sCi0JdXNlPW5jcjI2MHd5MzUwcHAsCi0jIFRoaXMgZGVmaW5pdGlvbiBmb3IgV3lzZSA1MCsgc3VwcG9ydHMgc2V2ZXJhbCBhdHRyaWJ1dGVzLiAgVGhpcyBtZWFucwotIyB0aGF0IGl0IGhhcyBtYWdpYyBjb29raWVzIChleHRyYSBzcGFjZXMgd2hlcmUgdGhlIGF0dHJpYnV0ZXMgYmVnaW4pLgotIyBTb21lIGFwcGxpY2F0aW9ucyBkbyBub3QgZnVuY3Rpb24gd2VsbCB3aXRoIG1hZ2ljIGNvb2tpZXMuICBUaGUgU3lzdGVtCi0jIEFkbWluaXN0cmF0b3IncyBTaGVsbCBpbiBOQ1IgVW5peCBTVlI0IDEuMDMgaXMgb25lIHN1Y2ggYXBwbGljYXRpb24uCi0jIElmIHN1cHBvcnRpbmcgdmFyaW91cyBhdHRyaWJ1dGVzIGlzIG5vdCB2aXRhbCwgJ3htYyMxJyBhbmQgdGhlIGV4dHJhCi0jIGF0dHJpYnV0ZXMgY2FuIGJlIHJlbW92ZWQuCi0jIE1hcHBpbmcgdG8gQVNDSUkgY2hhcmFjdGVyIHNldCAoJ2Fjc2MnIGNhcGFiaWxpdHkpIGNhbiBhbHNvIGJlCi0jIHJlc3RvcmVkIGlmIG5lZWRlZC4KLSMgKG5jcjI2MHd5NTArcHA6IG9yaWdpbmFsbHkgY29udGFpbmVkIGNvbW1lbnRlZC1vdXQKLSMgPGFjc2M9ajVrM2wybTFuOHE6dDR1OXY9dzB4Nj4sIGFzIHdlbGwgYXMgdGhlIGNvbW1lbnRlZC1vdXQgb25lIHRoZXJlIC0tIGVzcikKLW5jcjI2MHd5NTArcHB8TkNSIDI5MDBfMjYwIHd5c2UgNTArLAotCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbmxhYiMzMiwgeG1jIzEsCi0JYWNzYz0wd2FfaFtqdWtzbHJtcW54cXp0dHV5dl13cHh2LCBiZWw9XkcsIGJsaW5rPVxFRzIsCi0JY2J0PVxFSSQ8NT4sIGNpdmlzPVxFYDAsIGNsZWFyPVxFKyQ8MjA+LCBjbm9ybT1cRWAxLCBjcj1eTSwKLQljdWIxPVwwMTAkPDU+LCBjdWQxPVxuJDw1PiwgY3VmMT1cMDE0JDw1PiwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjJDwzMD4sIGN1dTE9XDAxMyQ8NT4sCi0JY3Z2aXM9XEVgNSwgZGNoMT1cRVckPDUwPiwgZGltPVxFR3AsIGRsMT1cRVIkPDU+LCBkc2w9XEVgYywKLQllZD1cRVkkPDU+LCBlbD1cRVQkPDU+LCBmc2w9Xk0sIGhvbWU9XDAzNiQ8MTA+LAotCWh0PVwwMTEkPDU+LCBodHM9XEUxJDw1PiwgaWwxPVxFRSQ8NT4sIGluZD1cbiQ8NT4sCi0JaW52aXM9XEVHMSwKLQlpczI9XEVlNlxFfiIkPDEwMD5cRStcRWQvXEVlMVxFZCpcRXJcRU9cRWAxXEVgXDpcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0Ja0RDPVxFUiwga0VORD1cRVksIGtIT009XEV7LCBrUFJUPVxFNywga1JJVD1eTCwga2ExPV5eLCBrYnM9XkgsCi0Ja2MxPVxFVCwga2MzPVxFSywga2NidD1cRUksIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsCi0Ja2N1dTE9XkssIGtkY2gxPVxFVywga2VuZD1cRVQsIGtmMT1eQUBcciwga2YxMD1eQUlcciwKLQlrZjExPV5BSlxyLCBrZjEyPV5BS1xyLCBrZjEzPV5BTFxyLCBrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLAotCWtmMTY9XkFPXHIsIGtmMTc9XkFgXHIsIGtmMTg9XkFhXHIsIGtmMTk9XkFiXHIsIGtmMj1eQUFcciwKLQlrZjIwPV5BY1xyLCBrZjIxPV5BZFxyLCBrZjIyPV5BZVxyLCBrZjIzPV5BZlxyLCBrZjI0PV5BZ1xyLAotCWtmMjU9XkFoXHIsIGtmMjY9XkFpXHIsIGtmMjc9XkFqXHIsIGtmMjg9XkFrXHIsIGtmMjk9XkFsXHIsCi0Ja2YzPV5BQlxyLCBrZjMwPV5BbVxyLCBrZjMxPV5BblxyLCBrZjMyPV5Bb1xyLCBrZjQ9XkFDXHIsCi0Ja2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsCi0Ja2hvbWU9Xl4sIGtpY2gxPVxFcSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsCi0JbWMwPVxFUCQ8MTA+LCBtYzQ9XlQsIG1jNT1eUiwKLQltcmN1cD1cRXdAJXAxJXs0OH0lKyVjJXAyJXszMn0lKyVjJXAzJXszMn0lKyVjJDwxMD4sCi0JbmVsPVwwMzckPDU+LCByZXY9XEVHNCwgcmk9XEVqJDw1Piwgcm1hY3M9XEVIXkMsIHJtYW09XEVkLiwKLQlybWlyPVxFciwgcm1zbz1cRUcwLCBybXVsPVxFRzAsIHJteG9uPVxFYzIwLAotCXJzMj1cRWU2XEV+IiQ8MTAwPlxFK1xFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWBcOlxFYEBcRX4hXEUiXEVlNFxFeEBcRWA5XEVlNyQ8MTAwPiwKLQlzZ3IwPVxFRzBcRUhcMDAzJDwxNT4sIHNtYWNzPVxFSF5CLCBzbWFtPVxFZC8sIHNtaXI9XEVxLAotCXNtc289XEVHdCwgc211bD1cRUc4LCBzbXhvbj1cRWMyMSwgdGJjPVxFMCQ8NT4sIHRzbD1cRUYsCi1uY3IyNjB3eTUwK3dwcHxOQ1IgMjkwMF8yNjAgd3lzZSA1MCsgd2lkZSBtb2RlLAotCWNvbHMjMTMyLAotCWN1cD1cRWElaSVwMSVkUiVwMiVkQyQ8MzA+LAotCWlzMj1cRWU2XEV+IiQ8MTAwPlxFK1xFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWA7XEVgQFxFfiFcRSJcRWU0XEV4QFxFYDlcRWU3JDwyMDA+LAotCXJzMj1cRWU2XEV+IiQ8MTAwPlxFK1xFZC9cRWUxXEVkKlxFclxFT1xFYDFcRWA7XEVgQFxFfiFcRSJcRWU0XEV4QFxFYDlcRWU3JDwyMDA+LAotCXVzZT1uY3IyNjB3eTUwK3BwLAotbmNyMjYwd3k2MHBwfE5DUiAyOTAwXzI2MCB3eXNlIDYwLAotCWFtLCBidywgaHMsIGttLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwgbmxhYiMzMiwKLQlhY3NjPTA3YT9oO2o1azNsMm0xbjhxXDp0NHU5dj13MHg2LCBiZWw9XkcsIGJsaW5rPVxFRzIsCi0JY2J0PVxFSSQ8MTU+LCBjaXZpcz1cRWAwLCBjbGVhcj1cRSokPDEwMD4sIGNub3JtPVxFYDEsCi0JY3I9Xk0sIGN1YjE9XDAxMCQ8NT4sIGN1ZDE9XG4kPDU+LCBjdWYxPVwwMTQkPDU+LAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDEwPiwgY3V1MT1cMDEzJDw1PiwKLQljdnZpcz1cRWA1LCBkY2gxPVxFVyQ8NTA+LCBkbDE9XEVSJDw1PiwgZHNsPVxFYGMsCi0JZWQ9XEV5JDw1PiwgZWw9XEV0JDw1PiwgZnNsPV5NLCBob21lPVwwMzYkPDI1PiwKLQlodD1cMDExJDwxNT4sIGh0cz1cRTEkPDE1PiwgaWwxPVxFRSQ8NT4sIGluZD1cbiQ8NT4sCi0JaW52aXM9XEVHMSwKLQlpczI9XEVlNlxFfjQkPDEwMD5cRStcRWQvXEVlMVxFZCpcRXJcRU9cRWAxXEVgXDpcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0Ja0RDPVxFUiwga0VORD1cRVksIGtIT009XEV7LCBrTlhUPVxFSywga1BSVD1cRTcsIGtQUlY9XEVKLAotCWtSSVQ9XkwsIGthMT1eXiwga2IyPVxFSiwga2JzPV5ILCBrYzE9XEVULCBrYzM9XEVLLAotCWtjYnQ9XEVJJDwxNT4sIGtjdWIxPV5ILCBrY3VkMT1eSiwga2N1ZjE9XkwsIGtjdXUxPV5LLAotCWtkY2gxPVxFVywga2VuZD1cRVQsIGtmMT1eQUBcciwga2YxMD1eQUlcciwga2YxMT1eQUpcciwKLQlrZjEyPV5BS1xyLCBrZjEzPV5BTFxyLCBrZjE0PV5BTVxyLCBrZjE1PV5BTlxyLCBrZjE2PV5BT1xyLAotCWtmMTc9XkFgXHIsIGtmMTg9XkFhXHIsIGtmMTk9XkFiXHIsIGtmMj1eQUFcciwga2YyMD1eQWNcciwKLQlrZjIxPV5BZFxyLCBrZjIyPV5BZVxyLCBrZjIzPV5BZlxyLCBrZjI0PV5BZ1xyLCBrZjI1PV5BaFxyLAotCWtmMjY9XkFpXHIsIGtmMjc9XkFqXHIsIGtmMjg9XkFrXHIsIGtmMjk9XkFsXHIsIGtmMz1eQUJcciwKLQlrZjMwPV5BbVxyLCBrZjMxPV5BblxyLCBrZjMyPV5Bb1xyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwKLQlrZjY9XkFFXHIsIGtmNz1eQUZcciwga2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtob21lPV5eLAotCWtpY2gxPVxFcSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsIG1jMD1cRVAsIG1jND1eVCwgbWM1PV5SLAotCW1yY3VwPVxFd0AlcDElezQ4fSUrJWMlcDIlezMyfSUrJWMlcDMlezMyfSUrJWMkPDMwPiwKLQluZWw9XDAzNyQ8NT4sIHJldj1cRUc0LCByaT1cRWokPDU+LCBybWFjcz1cRUheQywgcm1hbT1cRWQuLAotCXJtaXI9XEVyLCBybXNvPVxFRzAsIHJtdWw9XEVHMCwgcm14b249XEVjMjAsCi0JcnMyPVxFZTZcRX40JDwxMDA+XEUrXEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYFw6XEVgQFxFfiFcRSJcRWU0XEV4QFxFYDlcRWU3JDwxMDA+LAotCXNncjA9XEVHMFxFY0IwXEVjRCQ8MTU+LCBzbWFjcz1cRUheQiwgc21hbT1cRWQvLAotCXNtaXI9XEVxLCBzbXNvPVxFR3QsIHNtdWw9XEVHOCwgc214b249XEVjMjEsIHRiYz1cRTAkPDE1PiwKLQl0c2w9XEVGLAotbmNyMjYwd3k2MHdwcHxOQ1IgMjkwMF8yNjAgd3lzZSA2MCB3aWRlIG1vZGUsCi0JY29scyMxMzIsCi0JY3VwPVxFYSVpJXAxJWRSJXAyJWRDJDwzMD4sCi0JaXMyPVxFZTZcRX40JDwxMDA+XEUrXEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYDtcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0JcnMyPVxFZTZcRX40JDwxMDA+XEUrXEVkL1xFZTFcRWQqXEVyXEVPXEVgMVxFYDtcRWBAXEV+IVxFIlxFZTRcRXhAXEVgOVxFZTckPDEwMD4sCi0JdXNlPW5jcjI2MHd5NjBwcCwKLW5jcjE2MHZwcHB8TkNSIDI5MDBfMTYwIHZpZXdwb2ludCwKLQl1c2U9bmNyMjYwdnBwcCwKLW5jcjE2MHZwd3BwfE5DUiAyOTAwXzE2MCB2aWV3cG9pbnQgd2lkZSBtb2RlLAotCXVzZT1uY3IyNjB2cHdwcCwKLW5jcjE2MHZ0MTAwYW58TkNSIDI5MDBfMTYwIHZ0MTAwIHdpdGggYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDEwMGFuLAotbmNyMTYwdnQxMDBwcHxOQ1IgMjkwMF8xNjAgdnQxMDAgd2l0aCBQQysga3liZCwKLQl1c2U9bmNyMjYwdnQxMDBwcCwKLW5jcjE2MHZ0MTAwd2FufE5DUiAyOTAwXzE2MCB2dDEwMCB3aWRlIG1vZGUgYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDEwMHdhbiwKLW5jcjE2MHZ0MTAwd3BwfE5DUiAyOTAwXzE2MCB2dDEwMCB3aWRlIG1vZGUgcGMrICBreWJkLAotCXVzZT1uY3IyNjB2dDEwMHdwcCwKLW5jcjE2MHZ0MjAwYW58TkNSIDI5MDBfMTYwIHZ0MjAwIHdpdGggYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDIwMGFuLAotbmNyMTYwdnQyMDBwcHxOQ1IgMjkwMF8xNjAgdnQyMDAgd2l0aCBwYysga3liZCwKLQl1c2U9bmNyMjYwdnQyMDBwcCwKLW5jcjE2MHZ0MjAwd2FufE5DUiAyOTAwXzE2MCB2dDIwMCB3aWRlIG1vZGUgYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDIwMHdhbiwKLW5jcjE2MHZ0MjAwd3BwfE5DUiAyOTAwXzE2MCB2dDIwMCB3aWRlIG1vZGUgcGMrICBreWJkLAotCXVzZT1uY3IyNjB2dDIwMHdwcCwKLW5jcjE2MHZ0MzAwYW58TkNSIDI5MDBfMTYwIHZ0MzAwIHdpdGggYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDMwMGFuLAotbmNyMTYwdnQzMDBwcHxOQ1IgMjkwMF8xNjAgdnQzMDAgd2l0aCBwYysga3liZCwKLQl1c2U9bmNyMjYwdnQzMDBwcCwKLW5jcjE2MHZ0MzAwd2FufE5DUiAyOTAwXzE2MCB2dDMwMCB3aWRlIG1vZGUgYW5zaSBreWJkLAotCXVzZT1uY3IyNjB2dDMwMHdhbiwKLW5jcjE2MHZ0MzAwd3BwfE5DUiAyOTAwXzE2MCB2dDMwMCB3aWRlIG1vZGUgcGMrICBreWJkLAotCXVzZT1uY3IyNjB2dDMwMHdwcCwKLW5jcjE2MHd5NTArcHB8TkNSIDI5MDBfMTYwIHd5c2UgNTArLAotCXVzZT1uY3IyNjB3eTUwK3BwLAotbmNyMTYwd3k1MCt3cHB8TkNSIDI5MDBfMTYwIHd5c2UgNTArIHdpZGUgbW9kZSwKLQl1c2U9bmNyMjYwd3k1MCt3cHAsCi1uY3IxNjB3eTYwcHB8TkNSIDI5MDBfMTYwIHd5c2UgNjAsCi0JdXNlPW5jcjI2MHd5NjBwcCwKLW5jcjE2MHd5NjB3cHB8TkNSIDI5MDBfMTYwIHd5c2UgNjAgd2lkZSBtb2RlLAotCXVzZT1uY3IyNjB3eTYwd3BwLAotbmNydnQxMDBhbnxuY3J2dDEwMHBwfE5DUiB2dDEwMCBmb3IgdGhlIDI5MDAgdGVybWluYWwsCi0JYW0sIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgbmxhYiMzMiwKLQlhY3NjPWBgYWFmZmdnaGhpaWpqa2tsbG1tbm5xcXR0dXV2dnd3eHh5eXp6fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8MzA+LCBib2xkPVxFWzFtJDwzMD4sCi0JY2xlYXI9XEVbMkpcRVsxOzFIJDwzMDA+LCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIkPDEwMD4sIGN1Yj1cRVslcDElZEQkPDMwPiwKLQljdWIxPVxFW0QkPDI+LCBjdWQ9XEVbJXAxJWRCJDwzMD4sIGN1ZDE9XEVbQiQ8Mj4sCi0JY3VmPVxFWyVwMSVkQyQ8MzA+LCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8MTAwPiwgY3V1PVxFWyVwMSVkQSQ8MzA+LAotCWN1dTE9XEVbQSQ8Mj4sIGRjaD1cRVslcDElZFAkPDQwPiwgZGNoMT1cRVsxUCQ8MTA+LAotCWRsPVxFWyVwMSVkTSQ8NzA+LCBkbDE9XEVbTSQ8NDA+LCBkc2w9XEVbMzFsJDwyNT4sCi0JZWQ9XEVbMEokPDMwMD4sIGVsPVxFWzBLJDwzMD4sIGVsMT1cRVsxSyQ8MzA+LAotCWVuYWNzPVxFKEJcRSkwJDw0MD4sIGZzbD0xJDwxMD4sIGhvbWU9XEVbSCQ8Mj4kPDgwPiwKLQlodD1eSSwgaHRzPVxFSCwgaWw9XEVbJXAxJWRMJDw4MD4sIGlsMT1cRVtCXEVbTCQ8ODA+LAotCWluZD1cRUQsCi0JaXMyPVxFWzEyaFxFWz8xMGxcRSUvMG5cRVtQXDAzMVxFWz8zbFxFKEJcRSkwJDwyMDA+LAotCWtMRlQ9XEVbRCwga1JJVD1cRVtDLCBrYTE9XEVbSCwga2JzPV5ILCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlbnQ9Xk0sIGtmMT1cRU9QLAotCWtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIG1jMD1cRVtpJDwxMDA+LCBuZWw9XEVFLAotCXJjPVxFOCwgcmV2PVxFWzdtJDwzMD4sIHJpPVxFTSQ8NTA+LCBybWFjcz1cMDE3JDw5MD4sCi0Jcm1pcj1cRVs0bCQ8ODA+LCBybXNvPVxFWzBtJDwzMD4sIHJtdWw9XEVbMG0kPDMwPiwKLQlyczI9XEVjXEVbMTI7MzFoXEVbPzM7NDs1OzEwbFxFWz82Ozc7MTk7MjVoXEVbMzM7MzRsXEVbMG1cRShCXEUpMFxFJS8wblxFW1BcMDMxJDwyMDA+LAotCXNjPVxFNywKLQlzZ3I9XEVbMCU/JXAxJXA2JXwldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7JDwxMDA+LAotCXNncjA9XDAxN1xFWzBtJDwxMjA+LCBzbWFjcz1cMDE2JDw5MD4sIHNtaXI9XEVbNGgkPDgwPiwKLQlzbXNvPVxFWzdtJDwzMD4sIHNtdWw9XEVbNG0kPDMwPiwgdGJjPVxFWzNnJDw0MD4sCi0JdHNsPVxFWz4rMSQ8NzA+LAotbmNydnQxMDB3YW58TkNSVlQxMDBXUFB8bmNydnQxMDB3cHB8TkNSIFZUMTAwIGVtdWxhdGlvbiBvZiB0aGUgMjkwMCB0ZXJtaW5hbCwKLQljb2xzIzEzMiwKLQlpczI9XEVbMTJoXEVbPzEwbFxFJS8wblxFW1BcMDMxXEVbPzNoXEUoQlxFKTAkPDIwMD4sCi0JcnMyPVxFY1xFWzEyOzMxaFxFWz80OzU7MTBsXEU/Mzs2Ozc7MTk7MjVoXEVbMzM7MzRsXEVbMG1cRShCXEUpMFxFJS8wblxFW1BcMDMxJDwyMDA+LAotCXVzZT1uY3J2dDEwMGFuLAotIwotIyBWZW5kb3Itc3VwcGxpZWQgTkNSIHRlcm1jYXBzIGVuZCBoZXJlCi0KLSMgTkNSNzkwMCBESVAgc3dpdGNoZXM6Ci0jCi0jIFN3aXRjaCBBOgotIyAxLTQgLSBCYXVkIFJhdGUKLSMgNSAgIC0gUGFyaXR5IChPZGQvRXZlbikKLSMgNiAgIC0gRG9uJ3QgU2VuZCBvciBEbyBTZW5kIFNwYWNlcwotIyA3ICAgLSBQYXJpdHkgRW5hYmxlCi0jIDggICAtIFN0b3AgQml0cyAoT25lL1R3bykKLSMKLSMgU3dpdGNoIEI6Ci0jIDEgICAtIFVwcGVyL0xvd2VyIFNoaWZ0Ci0jIDIgICAtIFR5cGV3cml0ZXIgU2hpZnQKLSMgMyAgIC0gSGFsZiBEdXBsZXggLyBGdWxsIER1cGxleAotIyA0ICAgLSBMaWdodC9EYXJrIEJhY2tncm91bmQKLSMgNS02IC0gQ2FycmlhZ2UgUmV0dXJuIFdpdGhvdXQgLyBXaXRoIExpbmUgRmVlZAotIyA3ICAgLSBFeHRlbmRlZCBNb2RlCi0jIDggICAtIFN1cHByZXNzIEtleWJvYXJkIERpc3BsYXkKLSMKLSMgU3dpdGNoIEM6Ci0jIDEgICAtIEVuZCBvZiBsaW5lIGVudHJ5IGRpc2FibGVkL2VuYWJsZWQKLSMgMiAgIC0gQ29udmVyc2F0aW9uYWwgbW9kZSAvIChMb2NhbD8pIE1vZGUKLSMgMyAgIC0gQ29udHJvbCBjaGFyYWN0ZXJzIGRpc3BsYXllZCAvIG5vdCBkaXNwbGF5ZWQKLSMgNCAgIC0gKDItd2lyZT8pIC8gNC13aXJlIGNvbW11bmljYXRpb25zCi0jIDUgICAtIFJUUyBvbiBhbmQgb2ZmIGZvciBlYWNoIGNoYXJhY3RlcgotIyA2ICAgLSAoNTBIej8pIC8gNjAgSHoKLSMgNyAgIC0gRXhpdCBhZnRlciBsZXZlbCB6ZXJvIGRpYWdub3N0aWNzCi0jIDggICAtIFJTLTIzMiBpbnRlcmZhY2UKLSMKLSMgU3dpdGNoIEQ6Ci0jIDEgICAtIFJldmVyc2UgQ2hhbm5lbCAoeWVzIC8gbm8pCi0jIDIgICAtIE1hbnVhbCBhbnN3ZXIgKG5vIC8geWVzKQotIyAzLTQgLSBDdXJzb3IgYXBwZWFyYW5jZQotIyA1ICAgLSBDb21tdW5pY2F0aW9uIFJhdGUKLSMgNiAgIC0gRW5hYmxlIC8gRGlzYWJsZSBFWFQgdHVybm9mZgotIyA3ICAgLSBFbmFibGUgLyBEaXNhYmxlIENSIHR1cm5vZmYKLSMgOCAgIC0gRW5hYmxlIC8gRGlzYWJsZSBiYWNrc3BhY2UKLSMKLSMgU2luY2UgZWFjaCBhdHRyaWJ1dGUgcGFyYW1ldGVyIGlzIDAgb3IgMSwgd2Ugc2hpZnQgZWFjaCBhdHRyaWJ1dGUgKHN0YW5kb3V0LAotIyByZXZlcnNlLCBibGluaywgZGltLCBhbmQgdW5kZXJsaW5lKSB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGJpdHMgKGJ5Ci0jIG11bHRpcGx5aW5nIHRoZSAwIG9yIDEgYnkgYSBjb3JyZWN0IGZhY3RvciB0byBzaGlmdCkgc28gdGhlIGJpYXMgY2hhcmFjdGVyLAotIyAnQCcgaXMgKGVmZmVjdGl2ZWx5KSAib3IiZWQgd2l0aCBlYWNoIGF0dHJpYnV0ZSB0byBnZW5lcmF0ZSB0aGUgcHJvcGVyIHRoaXJkCi0jIGNoYXJhY3RlciBpbiB0aGUgPEVTQz4wIHNlcXVlbmNlLiAgVGhlIDxzZ3I+IHN0cmluZyBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcKLSMgZXF1YXRpb246Ci0jCi0jICgoKCgoJ0AnICsgUDUpIHwgKFA0IDw8IDEpKSB8IChQMyA8PCAzKSkgfCAoUDIgPDwgNCkpIHwgKHAxICogMTcpKSAgICA9PgotIyAoKCgoKCdAJyArIFA1KSArIChQNCA8PCAxKSkgKyAoUDMgPDwgMykpICsgKFAyIDw8IDQpKSArIChwMSAqIDE3KSkKLSMKLSMJV2hlcmU6ICBQMSA8PT0+IFN0YW5kb3V0IGF0dHJpYnV0ZSBwYXJhbWV0ZXIKLSMJCVAyIDw9PT4gVW5kZXJsaW5lIGF0dHJpYnV0ZSBwYXJhbWV0ZXIKLSMJCVAzIDw9PT4gUmV2ZXJzZSBhdHRyaWJ1dGUgcGFyYW1ldGVyCi0jCQlQNCA8PT0+IEJsaW5rIGF0dHJpYnV0ZSBwYXJhbWV0ZXIKLSMJCVA1IDw9PT4gRGltIGF0dHJpYnV0ZSBwYXJhbWV0ZXIKLSMgRnJvbSA8cm9vdEBnb2xpYXRoLnVuLmF0bGFudGFnYS5OQ1IuQ09NPiwgaW5pdCBzdHJpbmcgaGFja2VkIGJ5IFNDTy4KLW5jcjc5MDBpfG5jcjc5MDB8bmNyIDc5MDAgbW9kZWwgMSwKLQlhbSwgYncsIHVsLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMSwKLQliZWw9XkcsIGJsaW5rPVxFMEIsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eRiwKLQljdXA9XEUxJXAyJWMlcDElYywgY3V1MT1eWiwgZGltPVxFMEEsIGVkPVxFaywgZWw9XEVLLCBpbmQ9XkosCi0JaXMyPVxFMEBcMDEwXEUzXEU0XEU3LCBrY3ViMT1eVSwga2N1ZDE9XkosIGtjdWYxPV5GLAotCWtjdXUxPV5aLCBraG9tZT1eQSwgbGw9XkEsIG1jND1eVCwgbWM1PV5SLCByZXY9XEUwUCwgcm1zbz1cRTBALAotCXJtdWw9XEUwQCwKLQlzZ3I9XEUwJXA1JXs2NH0lKyVwNCV7Mn0lKiUrJXAzJXsxNn0lKiUrJXAyJXszMn0lKiUrJXAxJXsxN30lKiUrJWMsCi0Jc2dyMD1cRTBALCBzbXNvPVxFMFEsIHNtdWw9XEUwYCwKLW5jcjc5MDBpdnxuY3IgNzkwMCBtb2RlbCA0LAotCWFtLCBidywgZXNsb2ssIGhzLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1cD1cMDEzJXAxJXs2NH0lKyVjXEVcMDA1JXAyJTAyZCwgZGwxPVxFXk8sIGRzbD1cRXkxLAotCWZzbD1cRWtcRXk1LCBob21lPVwwMTNAXEVeRTAwLCBpbDE9XEVeTiwgaW5kPV5KLCBrYnM9XkgsCi0Ja2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZjE9XEVTLCBrZjI9XEVULAotCWtmMz1cRVUsIGtmND1cRVYsIGtmNT1cRVcsIGtmNj1cRVAsIGtmNz1cRVEsIGtmOD1cRVIsCi0Ja2hvbWU9XEVILCBsZjY9Ymx1ZSwgbGY3PXJlZCwgbGY4PXdoaXRlLCBuZWw9Xk1eSiwKLQl0c2w9XEVqXEV4NVxFeDFcRVk4JXAxJXszMn0lKyVjXEVvLAotIyBXYXJuaW5nOiBUaGlzIHRlcm1pbmFsIHdpbGwgbG9jayBvdXQgdGhlIGtleWJvYXJkIHdoZW4gaXQgcmVjZWl2ZXMgYSBDVFJMLUQuCi0jCSAgIFRoZSB1c2VyIGNhbiBlbnRlciBhIENUUkwtQiB0byBnZXQgb3V0IG9mIHRoaXMgbG9ja2VkIHN0YXRlLgotIyBJbiA8aHBhPiwgd2Ugd2FudCB0byBvdXRwdXQgdGhlIGNoYXJhY3RlciBnaXZlbiBieSB0aGUgZm9ybXVsYToKLSMJCSgoY29sIC8gMTApICogMTYpICsgKGNvbCAlIDEwKQkJd2hlcmUgImNvbCIgaXMgInAxIgotbmNyNzkwMXxuY3IgNzkwMSBtb2RlbCwKLQlhbSwgYncsIHVsLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEUwQiwgY2l2aXM9XlcsIGNsZWFyPV5MLCBjbm9ybT1eWCwgY3I9Xk0sCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eRiwKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5aLCBkaW09XEUwQSwKLQllZD1cRWssIGVsPVxFSywKLQlocGE9XDAyMCVwMSV7MTB9JS8lezE2fSUqJXAxJXsxMH0lbSUrJWMsIGluZD1eSiwKLQlpczI9XEU0Xk8sIGtjbHI9XkwsIGtjdWIxPV5VLCBrY3VkMT1eSiwga2N1ZjE9XkYsIGtjdXUxPV5aLAotCWtob21lPV5ILCBsbD1eQSwgbWM0PV5ULCBtYzU9XlIsIHJldj1cRTBQLCBybXNvPV5PLCBybXVsPV5PLAotCXNncj1cRTAlcDUlezY0fSUrJXA0JXsyfSUqJSslcDMlezE2fSUqJSslcDIlezMyfSUqJSslcDElezE3fSUqJSslY1wwMTYsCi0Jc2dyMD1eTywgc21zbz1cRTBRXDAxNiwgc211bD1cRTBgXDAxNiwKLQl2cGE9XDAxMyVwMSV7NjR9JSslYywKLQotIyBOZXdidXJ5IERhdGEgUmVjb3JkaW5nIExpbWl0ZWQgKE5ld2J1cnkgRGF0YSkKLSMKLSMgSGF2ZSBiZWVuIG1hbnVmYWN0dXJpbmcgYW5kIHJlc2VsbGluZyAgdmFyaW91cyBwZXJpcGhlcmFscyBmb3IgYSBsb25nIHRpbWUKLSMgVGhleSBkb24ndCBtYWtlIHRlcm1pbmFscyBhbnltb3JlLCBidXQgYXJlIHN0aWxsIGluIGJ1c2luZXNzIChpbiAyMDA3KS4KLSMgVGhlaXIgZS1tYWlsIGFkZHJlc3MgaXMgYXQgbmRzYWxlc0BuZXdidXJ5ZGF0YS5jby51awotIyBhbmQgdGhlaXIgcG9zdCBhZGRyZXNzIGlzOgotIwotIyBOZXdidXJ5IERhdGEgUmVjb3JkaW5nIEx0ZCwKLSMgUHJlbWllciBQYXJrLCBSb2FkIE9uZSwKLSMgV2luc2ZvcmQsIENoZXNoaXJlLCBDVzcgM1BUCi0jCi0jIFRoZWlyIHRlY2huaWNhbCBzdXBwb3J0IGlzIHN0aWxsIGdvb2QsIHRoZXkgc2VudCBtZSBmb3IgZnJlZSBhIHByaW50ZWQgY29weQotIyBvZiB0aGUgOTUwMCB1c2VyIG1hbnVhbCBhbmQgSSBnb3QgaXQganVzdCAxIHdlZWsgYWZ0ZXIgSSBmaXJzdCBjb250YWN0ZWQgdGhlbQotIyAoaW4gMjAwNSkhCi0KLSMgTkRSIDk1MDAKLSMgTWFudWZhY3R1cmVkIGluIHRoZSBlYXJseS9taWQgZWlnaHRpZXMsIGJlaGF2ZXMgYWxtb3N0IHRoZSBzYW1lIGFzIGEKLSMgVGVsZXZpZGVvIDk1MC4gIFRha2UgYSA5NTAsIGNoYW5nZSBpdHMgY2FiaW5ldCBmb3IgYSBtb3JlIDgwcy1pc2ggb25lIChidXQKLSMga2VlcCB0aGUgc2FtZSBrZXlib2FyZCBsYXlvdXQpLCBhZGQgYW4gb3B0aW9uYWwgMjUtbGluZSBtb2RlLCByZXBsYWNlIHRoZSBESVAKLSMgc3dpdGNoZXMgd2l0aCBhIG1lbnUgYW5kIHJlbW92ZSB0aGUgImxvY2sgbGluZSIgZmVhdHVyZSAoRVNDICEgIDEgYW5kIEVTQyAhIAotIyAyKSwgaGVyZSBpcyB0aGUgTkRSIDk1MDAuICBFdmVuIHRoZSBsaW5lLWxvY2ssIGFsYmVpdCBkaXNhYmxlZCwgaXMKLSMgcmVjb2duaXplZDogIGlmIHlvdSB0eXBlIGluICJFU0MgISIsIHRoZSBuZXh0ICh0aGlyZCkgY2hhcmFjdGVyIGlzIG5vdAotIyBlY2hvZWQsIHNob3dpbmcgdGhhdCB0aGUgdGVybWluYWwgd2FzIGFjdHVhbGx5IHdhaXRpbmcgZm9yIGEgcGFyYW1ldGVyIQotbmRyOTUwMHxuZDk1MDB8TmV3YnVyeSBEYXRhIDk1MDAsCi0JYW0sIGJ3LCBocywgbWM1aSwgbWlyLCBtc2dyLCB1bCwgeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB3c2wjNzksCi0JYWNzYz1xS25JbUFqRHdOdUx0TXZPbEJrQ3hKLCBiZWw9XkcsIGNidD1cRUksIGNpdmlzPVxFLjAsCi0JY2xlYXI9XEU7LCBjbm9ybT1cRS4xLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eViwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVywKLQlkaW09XEUpLCBkbDE9XEVSLCBkc2w9XEVoLCBlZD1cRVksIGVsPVxFVCwKLQlmbGFzaD1cRWIkPDUwLz5cRWQsIGZzbD1eTSwgaG9tZT1eXiwgaHQ9XkksIGh0cz1cRTEsCi0JaWNoMT1cRVEsIGlsMT1cRUUsIGluZD1eSiwgaXMyPVxFd1xFJ1xFREZcRWxcRXJcRU8sCi0Ja0RDPVxFciwga0RMPVxFTywga0VPTD1cRXQsIGtJQz1cRXEsIGtjYnQ9XEVJLCBrY2xyPV5aLAotCWtjdWIxPV5ILCBrY3VkMT1eViwga2N1ZjE9XkwsIGtjdXUxPV5LLCBrZGNoMT1cRVcsIGtkbDE9XEVSLAotCWtlZD1cRVksIGtlbD1cRVQsIGtlbnQ9Xk0sIGtmMT1eQUBcciwga2YxMD1eQUlcciwga2YxMT1eQUpcciwKLQlrZjEyPV5BYFxyLCBrZjEzPV5BYVxyLCBrZjE0PV5BYlxyLCBrZjE1PV5BY1xyLCBrZjE2PV5BZFxyLAotCWtmMTc9XkFlXHIsIGtmMTg9XkFmXHIsIGtmMTk9XkFnXHIsIGtmMj1eQUFcciwga2YyMD1eQWhcciwKLQlrZjIxPV5BaVxyLCBrZjIyPV5BalxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLAotCWtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sCi0Ja2ljaDE9XEVRLCBraWwxPVxFRSwga3BydD1cRVAsIG1jND1cRWEsIG1jNT1cRWAsIG5lbD1eXywKLQlwZmxvYz1cRXwlezQ4fSVwMSUrJWMyJXAyXDAzMSwKLQlwZng9XEV8JXs0OH0lcDElKyVjMSVwMlwwMzEsIHByb3Q9XEUpLCByaT1cRWosCi0Jcm1hY3M9XEUlJSwgcm1pcj1cRXIsIHJtc289XEUoLCBybXhvbj1eTiwKLQlzZ3I9XEUlJVxFKCU/JXAxJXA1JXA4JXwlfCV0XEUpJTslPyVwOSV0XEUkJTssCi0Jc2dyMD1cRUcwXEUlJVxFKCwgc21hY3M9XEUkLCBzbWlyPVxFcSwgc21zbz1cRSksIHNteG9uPV5PLAotCXRiYz1cRTMsIHRzbD1cRWdcRWZcMDExJXAxJXszMn0lKyVjLCAua2JzPV5ILAotCi1uZHI5NTAwLW5sfE5EUiA5NTAwIHdpdGggbm8gc3RhdHVzIGxpbmUsCi0JaHNALAotCXdzbEAsCi0JZHNsQCwgZnNsQCwgdHNsQCwgdXNlPW5kcjk1MDAsCi0KLW5kcjk1MDAtMjV8TkRSIDk1MDAgd2l0aCAyNXRoIGxpbmUgZW5hYmxlZCwKLQlsaW5lcyMyNSwgdXNlPW5kcjk1MDAsCi0KLW5kcjk1MDAtMjUtbmx8TkRSIDk1MDAgd2l0aCAyNSBsaW5lcyBhbmQgbm8gc3RhdHVzIGxpbmUsCi0JbGluZXMjMjUsIHVzZT1uZHI5NTAwLW5sLAotCi1uZHI5NTAwLW1jfE5EUiA5NTAwIHdpdGggbWFnaWMgY29va2llcyAoZW5hYmxlcyB1bmRlcmxpbmUgaW52ZXJzZSB2aWRlbyBpbnZpc2libGUgYW5kIGJsaW5rKSwKLQltc2dyQCwKLQl4bWMjMSwKLQlibGluaz1cRUcyLCBpbnZpcz1cRUcxLCByZXY9XEVHNCwgcm1zbz1cRUcwLCBybXVsPVxFRzAsCi0Jc2dyPVxFJSVcRSglPyVwNSVwOCV8JXRcRSklOyU/JXA5JXRcRSQlO1xFRyV7NDh9JT8lcDcldCV7MX0lKyU7JT8lcDQldCV7Mn0lKyU7JT8lcDMlcDElfCV0JXs0fSUrJTslPyVwMiV0JXs4fSUrJTslYywKLQlzZ3IwPVxFRzBcRSUlXEUoLCBzbXNvPVxFRzQsIHNtdWw9XEVHOCwgdXNlPW5kcjk1MDAsCi0KLW5kcjk1MDAtMjUtbWN8TkRSIDUwMCB3aXRoIDI1IGxpbmVzIGFuZCBtYWdpYyBjb29raWVzLAotCWxpbmVzIzI1LCB1c2U9bmRyOTUwMC1tYywKLQotbmRyOTUwMC1tYy1ubHxORFIgOTUwMCB3aXRoIG1hZ2ljIGNvb2tpZXMgYW5kIG5vIHN0YXR1cyBsaW5lLAotCWhzQCwKLQl3c2xALAotCWRzbEAsIGZzbEAsIHRzbEAsIHVzZT1uZHI5NTAwLW1jLAotCi1uZHI5NTAwLTI1LW1jLW5sfE5EUiA5NTAwIHdpdGggMjUgbGluZXMgYW5kIG1hZ2ljIGNvb2tpZXMgYW5kIG5vIHN0YXR1cyBsaW5lLAotCWxpbmVzIzI1LCB1c2U9bmRyOTUwMC1tYy1ubCwKLQotIyMjIyBQZXJraW4tRWxtZXIgKE93bCkKLSMKLSMgVGhlc2UgYXJlIG9mZmljaWFsIHRlcm1pbmZvIGVudHJpZXMgZnJvbSB3aXRoaW4gUGVya2luLUVsbWVyLgotIwotCi1iYW50YW18cGU1NTB8cGU2MTAwfHBlcmtpbiBlbG1lciA1NTAsCi0JT1RicywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFSyQ8MjA+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWCVwMSV7MzJ9JSslY1xFWSVwMiV7MzJ9JSslYywgY3V1MT1cRUEsCi0JZWw9XEVJJDwyMD4sIGhvbWU9XEVILCBpbmQ9XkosIGxsPVxFSFxFQSwKLWZveHxwZTExMDB8cGVya2luIGVsbWVyIDExMDAsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUokPDEzMj4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1ZjE9XEVDLCBjdXA9XEVYJXAxJXszMn0lKyVjXEVZJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwKLQllZD1cRUokPDUuNSo+LCBlbD1cRUksIGZsYXNoPVwwMjBcMDAyJDwyMDAvPlwwMjBcMDAzLAotCWhvbWU9XEVILCBodHM9XEUxLCBpbmQ9XkosIGxsPVxFSFxFQSwgdGJjPVxFMywKLW93bHxwZTEyMDB8cGVya2luIGVsbWVyIDEyMDAsCi0JT1RicywgYW0sIGluLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVIXEVKJDwxMzI+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPVxFQywgY3VwPVxFWCVwMSV7MzJ9JSslY1xFWSVwMiV7MzJ9JSslYywgY3V1MT1cRUEsCi0JZGNoMT1cRU8kPDUuNSo+LCBkbDE9XEVNJDw1LjUqPiwgZWQ9XEVKJDw1LjUqPiwKLQllbD1cRUkkPDUuNT4sIGZsYXNoPVwwMjBcMDAyJDwyMDAvPlwwMjBcMDAzLCBob21lPVxFSCwKLQlodHM9XEUxLCBpY2gxPVxFTiwgaWwxPVxFTCQ8NS41Kj4sIGluZD1eSiwgaXA9JDw1LjUqPiwKLQlrYnM9XkgsIGtmMD1cRVJKLCBrZjE9XEVSQSwga2YyPVxFUkIsIGtmMz1cRVJDLCBrZjQ9XEVSRCwKLQlrZjU9XEVSRSwga2Y2PVxFUkYsIGtmNz1cRVJHLCBrZjg9XEVSSCwga2Y5PVxFUkksIGxsPVxFSFxFQSwKLQlybXNvPVxFIVwwLCBzZ3IwPVxFIVwwLCBzbXNvPVxFIV5ILCB0YmM9XEUzLAotcGUxMjUxfHBlNjMwMHxwZTYzMTJ8cGVya2luIGVsbWVyIDEyNTEsCi0JYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHBiIzMwMCwgdnQjOCwgeG1jIzEsCi0JYmVsPV5HLCBjbGVhcj1cRUskPDMzMj4sIGNyPV5NLCBjdWIxPVxFRCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRVglcDElezMyfSUrJWNcRVklcDIlezMyfSUrJWMsIGN1dTE9XEVBLAotCWVkPVxFSiQ8MjAqPiwgZWw9XEVJJDwxMCo+LCBob21lPVxFSCwgaHRzPVxFMSwgaW5kPV5KLAotCWtmMD1cRVJBLCBrZjE9XEVSQiwga2YxMD1cRVJLLCBrZjI9XEVSQywga2YzPVxFUkQsIGtmND1cRVJFLAotCWtmNT1cRVJGLCBrZjY9XEVSRywga2Y3PVxFUkgsIGtmOD1cRVJJLCBrZjk9XEVSSiwgdGJjPVxFMywKLSMgKHBlNzAwMG06IHRoaXMgaGFkCi0jIAlybXVsPVxFIVwwLCBzbXVsPVxFIVwwNDAsCi0jIHdoaWNoIGlzIHByb2JhYmx5IHdyb25nLCBpdCBjb2xsaWRlcyB3aXRoIGtmMAotcGU3MDAwbXxwZXJraW4gZWxtZXIgNzAwMCBzZXJpZXMgbW9ub2Nocm9tZSBtb25pdG9yLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2J0PVxFIVksIGNsZWFyPVxFSywgY3I9Xk0sIGN1YjE9XEVELCBjdWQxPVxFQiwKLQljdWYxPVxFQywgY3VwPVxFUyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsCi0JZWQ9XEVKLCBlbD1cRUksIGhvbWU9XEVILCBpbmQ9XkosCi0JaXMxPVxFIVwwXEVXICA3b1xFZ2ZcRVM3XHMsIGticz1eSCwga2N1YjE9XEUhViwKLQlrY3VkMT1cRSFVLCBrY3VmMT1cRSFXLCBrY3V1MT1cRSFULCBrZjA9XEUhXDAsIGtmMT1cRSFeQSwKLQlrZjEwPVxFIV5KLCBrZjI9XEUhXkIsIGtmMz1cRSFeQywga2Y0PVxFIV5ELCBrZjU9XEUhXkUsCi0Ja2Y2PVxFIV5GLCBrZjc9XEUhXkcsIGtmOD1cRSFeSCwga2Y5PVxFIV5JLCBraG9tZT1cRSFTLAotCWxsPVxFUzdccywgcmk9XEVSLAotcGU3MDAwY3xwZXJraW4gZWxtZXIgNzAwMCBzZXJpZXMgY29sb3VyIG1vbml0b3IsCi0JaXMxPVxFIVwwXEVXICA3b1xFZ2ZcRWIwXEVjN1xFUzdccywgcm1zbz1cRWIwLAotCXJtdWw9XEUhXDAsIHNtc289XEViMiwgc211bD1cRSFccywgdXNlPXBlNzAwMG0sCi0KLSMjIyMgU3BlcnJ5IFVuaXZhYwotIwotIyBTcGVycnkgVW5pdmFjIGhhcyBtZXJnZWQgd2l0aCBCdXJyb3VnaHMgdG8gZm9ybSBVbmlzeXMuCi0jCi0KLSMgVGhpcyBlbnRyeSBpcyBmb3IgdGhlIFNwZXJyeSBVVFMzMCB0ZXJtaW5hbCBydW5uaW5nIHRoZSBUVFkKLSMgdXRpbGl0eSB1bmRlciBjb250cm9sIG9mIENQL00gUGx1cyAxUjEuIFRoZSBmdW5jdGlvbmFsaXR5Ci0jIHByb3ZpZGVkIGlzIGNvbXBhcmFibGUgdG8gdGhlIERFQyB2dDEwMC4KLSMgKHV0czMwOiBJIGFkZGVkIDxybWFtPi88c21hbT4gYmFzZWQgb24gdGhlIGluaXQgc3RyaW5nIC0tIGVzcikKLXV0czMwfHNwZXJyeSB1dHMzMCB3aXRoIGNwL21AMVIxLAotCWFtLCBidywgaHMsCi0JY29scyM4MCwgbGluZXMjMjQsIHdzbCM0MCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFUiwgY2xlYXI9XkwsCi0JY25vcm09XEVTLCBjcj1eTSwgY3NyPVxFVSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFQiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRU0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVMLCBlZD1cRVtKLCBlbD1cRVtLLCBmc2w9Xk0sIGhvbWU9XEVbSCwKLQlodD1eSSwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRU8sIGlsPVxFWyVwMSVkTCwgaWwxPVxFTiwKLQlpbmQ9XkosIGluZG49XEVbJXAxJWRCLCBpczI9XEVbVSA3XEVbMjQ7MUgsIGticz1eSCwKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCBraG9tZT1cRVtILAotCXJjPVxFWCwgcmV2PVxFWzdtLCByZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwgcmk9XEVJLAotCXJpbj1cRVslcDElZEEsIHJtYWNzPVxFZCwgcm1hbT1cRVs/N2wsIHJtc289XEVbbSwKLQlybXVsPVxFW20sIHJzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGgsCi0Jc2M9XEVXLCBzZ3IwPVxFW20sIHNtYWNzPVxFRiwgc21hbT1cRVs/N20sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdHNsPVxFXSwgdWM9XEVQQiwKLQotIyMjIyBUYW5kZW0KLSMKLSMgVGFuZGVtIGJ1aWxkcyB0aGVzZSB0aGluZ3MgZm9yIHVzZSB3aXRoIGl0cyBsaW5lIG9mIGZhdWx0LXRvbGVyYW50Ci0jIHRyYW5zYWN0aW9uLXByb2Nlc3NpbmcgY29tcHV0ZXJzLiAgVGhleSBhcmVuJ3QgZ2VuZXJhbGx5IGF2YWlsYWJsZQotIyBvbiB0aGUgbWVyY2hhbnQgbWFya2V0LCBhbmQgc28gYXJlIGZhaXJseSB1bmNvbW1vbi4KLSMKLQotdGFuZGVtNjUxMHxhZG0zYSByZXBhY2thZ2VkIGJ5IFRhbmRlbSwKLQl1c2U9YWRtM2EsCi0KLSMgQSBmdW5ueSBzZXJpZXMgb2YgdGVybWluYWwgdGhhdCBUQU5ERU0gdXNlcy4gIFRoZSBhY3R1YWwgbW9kZWwgbnVtYmVycwotIyBoYXZlIGEgZm91cnRoIGRpZ2l0IGFmdGVyIDY1MyB0aGF0IGRlc2lnbmF0ZXMgbWlub3IgdmFyaWFudHMuICBUaGVzZSBhcmUKLSMgbmF0aXZlbHkgYmxvY2stbW9kZSBhbmQgcmF0aGVyIHVnbHksIGJ1dCB0aGV5IGhhdmUgYSBjaGFyYWN0ZXIgbW9kZSB3aGljaAotIyB0aGlzIGRvdWJ0bGVzcyg/KSBleHBsb2l0cy4gIFRoZXJlIGlzIGEgNjUyMCB0aGF0IGlzIHNsaWdodGx5IGR1bWJlci4KLSMgKHRhbmRlbTY1MzogaGFkICI6c2I9XEVTOiIsIHByb2JhYmx5IHNvbWVvbmUncyBtaXN0YWtlIGZvciBzZjsgYWxzbywKLSMgcmVtb3ZlZCA8aWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdGFuZGVtNjUzPiwgbm8gc3VjaCBmaWxlIC0tIGVzcikKLXRhbmRlbTY1M3x0NjUzeHxUYW5kZW0gNjUzeCBtdWx0aXBhZ2UgdGVybWluYWwsCi0JT1RicywgYW0sIGRhLCBkYiwgaHMsCi0JY29scyM4MCwgbGluZXMjMjQsIHdzbCM2NCwgeG1jIzEsCi0JY2xlYXI9XEVJLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XDAyMyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRzbD1cRW9cciwKLQllZD1cRUosIGVsPVxFSywgZnNsPV5NLCBob21lPVxFSCwgaW5kPVxFUywgcmk9XEVULCBybXNvPVxFNlxzLAotCXJtdWw9XEU2XHMsIHNncjA9XEU2XHMsIHNtc289XEU2JCwgc211bD1cRTYwLCB0c2w9XEVvLAotCi0jIyMjIFRhbmR5L1JhZGlvIFNoYWNrCi0jCi0jIFRhbmR5IGhhcyBhIGxpbmUgb2YgVkRUcyBkaXN0aW5jdCBmcm9tIGl0cyBtaWNyb2NvbXB1dGVycy4KLSMKLQotZG10ZXJtfGRlc2ttYXRlIHRlcm1pbmFsLAotCWFtLCBidywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNpdmlzPVxFRzUsIGNsZWFyPVxFaiwgY25vcm09XEVHNiwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1cRUIsIGN1ZjE9XEVDLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XEVBLCBkY2gxPVxFUywgZGwxPVxFUiwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwKLQlpY2gxPVxFUSwgaWwxPVxFUCwgaW5kPVxFWCwgaW52aXNALCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2YwPVxFMSwga2YxPVxFMiwga2YyPVxFMywga2YzPVxFNCwKLQlrZjQ9XEU1LCBrZjU9XEU2LCBrZjY9XEU3LCBrZjc9XEU4LCBrZjg9XEU5LCBrZjk9XEUwLAotCWtob21lPVxFSCwgbGYwPWYxLCBsZjE9ZjIsIGxmMj1mMywgbGYzPWY0LCBsZjQ9ZjUsIGxmNT1mNiwKLQlsZjY9ZjcsIGxmNz1mOCwgbGY4PWY5LCBsZjk9ZjEwLCBsbD1cRUUsIHJtdWxALCBzbXVsQCwKLQl1c2U9YWRtK3NnciwKLWR0MTAwfGR0LTEwMHxUYW5keSBEVC0xMDAgdGVybWluYWwsCi0JeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMSwKLQlhY3NjPWpqa2tsbG1tbm5xcXR0dXV2dnd3eHgsIGJlbD1eRywgY2l2aXM9XEVbPzI1bCwKLQljbGVhcj1cRVtIXEVbMkosIGNub3JtPVxFWz8yNWgsIGNyPV5NLAotCWNzcj1cRVslcDElMmQ7JXAyJTJkciwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVwwMTBcRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGljaDE9XEVbQCwKLQlpbDE9XEVbTCwgaW5kPV5KLCBpczI9XEVbPzNsXEUpMFxFKEIsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YxPVxFWz8zaSwKLQlrZjEwPVxFWz81aSwga2YyPVxFWzJpLCBrZjM9XEVbQCwga2Y0PVxFW00sIGtmNT1cRVsxN34sCi0Ja2Y2PVxFWzE4fiwga2Y3PVxFWzE5fiwga2Y4PVxFWzIwfiwga2Y5PVxFWzIxfiwga2hvbWU9XEVbSCwKLQlrbnA9XEVbMjl+LCBrcHA9XEVbMjh+LCBsZjE9ZjEsIGxmMj1mMiwgbGYzPWYzLCBsZjQ9ZjQsIGxmNT1mNSwKLQlsZjY9ZjYsIGxmNz1mNywgbGY4PWY4LCByaT1cRU0sIHJtYWNzPV5PLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3IwPVxFW20sIHNtYWNzPV5OLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotZHQxMDB3fGR0LTEwMHd8VGFuZHkgRFQtMTAwIHRlcm1pbmFsICh3aWRlIG1vZGUpLAotCWNvbHMjMTMyLCB1c2U9ZHQxMDAsCi1kdDExMHxUYW5keSBEVC0xMTAgZW11bGF0aW5nIGFuc2ksCi0JeG9uLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWFjc2M9ampra2xsbW1ubnFxdHR1dXZ2d3d4eCwgYmVsPV5HLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVsySiwgY25vcm09XEVbPzI1aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPVxFWzBCLCBjdWYxPVxFW0MsCi0JY3VwPVwwMTBcRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVswQSwgZGNoMT1cRVswUCwKLQlkbDE9XEVbME0sIGVkPVxFWzBKLCBlbD1cRVswSywgZW5hY3M9XEUoQlxFKTAsIGhvbWU9XEVbSCwKLQlodD1eSSwgaWNoMT1cRVswQCwgaWwxPVxFWzBMLCBpbmQ9XkosIGlzMj1cRVs/M2xcRSkwXEUoQiwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZW5kPVxFW0ssCi0Ja2YxPVxFWzF+LCBrZjEwPVxFWzEwfiwga2YyPVxFWzJ+LCBrZjM9XEVbM34sIGtmND1cRVs0fiwKLQlrZjU9XEVbNX4sIGtmNj1cRVs2fiwga2Y3PVxFWzd+LCBrZjg9XEVbOH4sIGtmOT1cRVs5fiwKLQlraG9tZT1cRVtHLCBraWNoMT1cRVtALCBrbnA9XEVbMjZ+LCBrcHA9XEVbMjV+LCBsZjA9ZjEsCi0JbGYxPWYyLCBsZjI9ZjMsIGxmMz1mNCwgbGY0PWY1LCBsZjU9ZjYsIGxmNj1mNywgbGY3PWY4LCBsZjg9ZjksCi0JbGY5PWYxMCwgcmk9XEVNLCBybWFjcz1eTywgcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwKLQlzbWFjcz1eTiwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLXB0MjEwfFRSUy04MCBQVC0yMTAgcHJpbnRpbmcgdGVybWluYWwsCi0JaGMsIG9zLAotCWNvbHMjODAsCi0JYmVsPV5HLCBjcj1eTSwgY3VkMT1eSiwgaW5kPV5KLAotCi0jIyMjIFRla3Ryb25peCAodGVrKQotIwotIyBUZWt0cm9uaXggdHViZXMgYXJlIGdyYXBoaWNzIHRlcm1pbmFscy4gIE1vc3Qgb2YgdGhlbSB1c2UgbW9kaWZpZWQKLSMgb3NjaWxsb3Njb3BlIHRlY2hub2xvZ3kgaW5jb3Jwb3JhdGluZyBhIGxvbmctcGVyc2lzdGVuY2UgZ3JlZW4gcGhvc3Bob3IsCi0jIGFuZCBzdXBwb3J0IHZlY3RvciBncmFwaGljcyBvbiBhIG1haW4gc2NyZWVuIHdpdGggYW4gYXR0YWNoZWQgImRpYWxvZ3VlCi0jIGFyZWEiIGZvciBpbnRlcmFjdGl2ZSB0ZXh0LgotIwotCi10ZWt8dGVrNDAxMnx0ZWt0cm9uaXggNDAxMiwKLQlPVGJzLCBvcywKLQljb2xzIzc1LCBsaW5lcyMzNSwKLQliZWw9XkcsIGNsZWFyPVxFXDAxNCQ8MTAwMD4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWZmPVwwMTQkPDEwMDA+LCBpczI9XEVeTywKLSMgKHRlazQwMTM6IGFkZGVkIDxhY3NjPiB0byBzdXBwcmVzcyB0aWMgd2FybmluZ3MgcmUgPHNtYWNzPi88cm1hY3M+IC0tZXNyKQotdGVrNDAxM3x0ZWt0cm9uaXggNDAxMywKLQlhY3NjPSwgcm1hY3M9XEVeTywgc21hY3M9XEVeTiwgdXNlPXRlazQwMTIsCi10ZWs0MDE0fHRla3Ryb25peCA0MDE0LAotCWNvbHMjODEsIGxpbmVzIzM4LAotCWlzMj1cRVwwMTdcRTksIHVzZT10ZWs0MDEyLAotIyAodGVrNDAxNTogYWRkZWQgPGFjc2M+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5ncyByZSA8c21hY3M+LzxybWFjcz4gLS1lc3IpCi10ZWs0MDE1fHRla3Ryb25peCA0MDE1LAotCWFjc2M9LCBybWFjcz1cRV5PLCBzbWFjcz1cRV5OLCB1c2U9dGVrNDAxNCwKLXRlazQwMTQtc218dGVrdHJvbml4IDQwMTQgaW4gc21hbGwgZm9udCwKLQljb2xzIzEyMSwgbGluZXMjNTgsCi0JaXMyPVxFXDAxN1xFXDosIHVzZT10ZWs0MDE0LAotIyAodGVrNDAxNS1zbTogYWRkZWQgPGFjc2M+IHRvIHN1cHByZXNzIHRpYyB3YXJuaW5ncyByZSA8c21hY3M+LzxybWFjcz4gLS1lc3IpCi10ZWs0MDE1LXNtfHRla3Ryb25peCA0MDE1IGluIHNtYWxsIGZvbnQsCi0JYWNzYz0sIHJtYWNzPVxFXk8sIHNtYWNzPVxFXk4sIHVzZT10ZWs0MDE0LXNtLAotIyBUZWt0cm9uaXggNDAyMyBmcm9tIEFuZHJldyBLbG9zc25lciA8b3JjYSFhbmRyZXcudGVrdHJvbml4QGNzbmV0LXJlbGF5PgotIwotIyBZb3UgbmVlZCB0byBoYXZlICJzdHR5IG5sMiIgaW4gZWZmZWN0LiAgU29tZSB2ZXJzaW9ucyBvZiB0c2V0KDEpIGtub3cKLSMgaG93IHRvIHNldCBpdCBmb3IgeW91LgotIwotIyBJdCdzIGdvdCB0aGUgTWFnaWMgQ29va2llIHByb2JsZW0gYXJvdW5kIHN0YW5kLW91dCBtb2RlLiAgSWYgeW91IGNhbid0Ci0jIGxpdmUgd2l0aCBNYWdpYyBDb29raWUsIHJlbW92ZSB0aGUgOnNvOiBhbmQgOnNlOiBmaWVsZHMgYW5kIGRvIHdpdGhvdXQKLSMgcmV2ZXJzZSB2aWRlby4gIElmIHlvdSBsaWtlIHJldmVyc2UgdmlkZW8gc3RhbmQtb3V0IG1vZGUgYnV0IGRvbid0IHdhbnQKLSMgaXQgdG8gZmxhc2gsIGNoYW5nZSB0aGUgbGV0dGVyICdIJyB0byAnUCcgaW4gdGhlIDpzbzogZmllbGQuCi10ZWs0MDIzfHRla3Ryb25peCA0MDIzLAotCU9UYnMsIGFtLAotCU9UZE4jNCwgY29scyM4MCwgbGluZXMjMjQsIHZ0IzQsIHhtYyMxLAotCU9Ubmw9XkosIGJlbD1eRywgY2xlYXI9XEVcMDE0JDw0Lz4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1ZjE9XkksIGN1cD1cMDM0JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBrYnM9XkgsCi0Jcm1zbz1eX0AsIHNtc289Xl9QLAotIyBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBydW4gdGhlIDQwMjUgYXQgNDgwMCBiYXVkIG9yIGxlc3M7Ci0jIHZhcmlvdXMgYnVncyBpbiB0aGUgdGVybWluYWwgYXBwZWFyIGF0IDk2MDAuICBJdCB3ZWRnZXMgYXQgdGhlCi0jIGJvdHRvbSBvZiBtZW1vcnkgKHRyeSAiY2F0IC91c3IvZGljdC93b3JkcyIpOyBeUyBhbmQgXlEgdHlwZWQKLSMgb24ga2V5Ym9hcmQgZG9uJ3Qgd29yay4gIFlvdSBoYXZlIHRvIGhpdCBCUkVBSyB0d2ljZSB0byBnZXQKLSMgb25lIGJyZWFrIGF0IGFueSBzcGVlZCAtIHRoaXMgaXMgYSBkb2N1bWVudGVkIGZlYXR1cmUuCi0jIENhbid0IHVzZSBjdXJzb3IgbW90aW9uIGJlY2F1c2UgaXQncyBtZW1vcnkgcmVsYXRpdmUsIGFuZAotIyBiZWNhdXNlIGl0IG9ubHkgd29ya3MgaW4gdGhlIHdvcmtzcGFjZSwgbm90IHRoZSBtb25pdG9yLgotIyBTYW1lIGZvciBob21lLiBMaWtld2lzZSwgc3RhbmRvdXQgb25seSB3b3JrcyBpbiB0aGUgd29ya3NwYWNlLgotIwotIyA8ZWw+IHdhcyBjb21tZW50ZWQgb3V0IHNpbmNlIHZpIGFuZCByb2d1ZSBzZWVtIHRvIHdvcmsgYmV0dGVyCi0jIHNpbXVsYXRpbmcgaXQgd2l0aCBsb3RzIG9mIHNwYWNlcyEKLSMKLSMgPGlsMT4gYW5kIDxpbD4gaGFkIDE0NW1zIG9mIHBhZGRpbmcsIGJ1dCB0aGF0IHNsb3dlZCBkb3duIHZpJ3MgXlUKLSMgYW5kIGRpZG4ndCBzZWVtIG5lY2Vzc2FyeS4KLSMKLXRlazQwMjR8dGVrNDAyNXx0ZWs0MDI3fHRla3Ryb25peCA0MDI0LzQwMjUvNDAyNywKLQlPVGJzLCBhbSwgZGEsIGRiLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzM0LCBsbSMwLAotCWJlbD1eRywgY2xlYXI9XDAzN2VyYVxyXG5cbiwgY21kY2g9Xl8sIGNyPV5NLAotCWN1Yj1cMDM3bGVmICVwMSVkXHIsIGN1YjE9XkgsIGN1ZD1cMDM3ZG93ICVwMSVkXHIsCi0JY3VkMT1eRl5KLCBjdWY9XDAzN3JpZyAlcDElZFxyLCBjdWYxPVwwMzdyaWdcciwKLQljdXU9XDAzN3VwICVwMSVkXHIsIGN1dTE9XkssIGRjaDE9XDAzN2RjaFxyLAotCWRsPVwwMzdkbGkgJXAxJWRcclwwMDYsIGRsMT1cMDM3ZGxpXHJcMDA2LAotCWVkPVwwMzdkbGkgNTBcciwgaHQ9XkksIGljaDE9XDAzN2ljaFxyIFwwMTAsCi0JaWw9XDAzN3VwXHJcMDM3aWxpICVwMSVkXHIsIGlsMT1cMDM3dXBcclwwMzdpbGlcciwKLQlpbmQ9XkZeSiwKLQlpczI9IWNvbSAzMVxyXG5cMDM3c3RvIDkgMTcgMjUgMzMgNDEgNDkgNTcgNjUgNzNcciwKLQlybWt4PVwwMzdsZWEgcDJcclwwMzdsZWEgcDRcclwwMzdsZWEgcDZcclwwMzdsZWEgcDhcclwwMzdsZWEgZjVcciwKLQlzbWt4PVwwMzdsZWEgcDQgL2gvXHJcMDM3bGVhIHA4IC9rL1xyXDAzN2xlYSBwNiAvIC9cclwwMzdsZWEgcDIgL2ovXHJcMDM3bGVhIGY1IC9IL1xyLAotdGVrNDAyNS0xN3x0ZWsgNDAyNSAxNyBsaW5lIHdpbmRvdywKLQlsaW5lcyMxNywgdXNlPXRlazQwMjUsCi10ZWs0MDI1LTE3LXdzfHRlayA0MDI1IDE3IGxpbmUgd2luZG93IGluIHdvcmtzcGFjZSwKLQlpczI9IWNvbSAzMVxyXG5cMDM3c3RvIDkgMTcgMjUgMzMgNDEgNDkgNTcgNjUgNzNcclwwMzd3b3IgMTdcclwwMzdtb24gMTdcciwKLQlybWN1cD1cMDM3bW9uIGhcciwgcm1zbz1cMDM3YXR0IHNcciwgc21jdXA9XDAzN3dvciBoXHIsCi0Jc21zbz1cMDM3YXR0IGVcciwgdXNlPXRlazQwMjUtMTcsCi10ZWs0MDI1LWV4fHRlazQwMjctZXh8dGVrIDQwMjUvNDAyNyB3LyEsCi0JaXMyPVwwMzdjb20gMzNcclxuIXN0byA5IDE3IDI1IDMzIDQxIDQ5IDU3IDY1IDczXHIsCi0Jcm1jdXA9XDAzN2NvbSAzM1xyLCBzbWN1cD0hY29tIDMxXHIsIHVzZT10ZWs0MDI1LAotIyBUZWt0cm9uaXggNDAyNWEKLSMgRnJvbTogRG91ZyBHd3luIDxnd3luQGJybC1zbW9rZS5BUlBBPgotIyBUaGUgZm9sbG93aW5nIHN0YXR1cyBtb2RlcyBhcmUgYXNzdW1lZCBmb3Igbm9ybWFsIG9wZXJhdGlvbiAocmVwbGFjZSB0aGUKLSMgaW5pdGlhbCAiISIgYnkgd2hhdGV2ZXIgdGhlIGN1cnJlbnQgY29tbWFuZCBjaGFyYWN0ZXIgaXMpOgotIwkhQ09NIDI5CQkJIyBOT1RFOiBjaGFuZ2VzIGNvbW1hbmQgY2hhcmFjdGVyIHRvIEdTICheXSkKLSMJXl1EVVAKLSMJXl1FQ0ggUgotIwleXUVPTAotIwleXVJTUyBUCi0jCV5dU05PIE4KLSMJXl1TVE8gOSAxNyAyNSAzMyA0MSA0OSA1NyA2NSA3MwotIyBPdGhlciBtb2RlcyBtYXkgYmUgc2V0IGFjY29yZGluZyB0byBjb21tdW5pY2F0aW9uIHJlcXVpcmVtZW50cy4KLSMgSWYgdGhlIGNvbW1hbmQgY2hhcmFjdGVyIGlzIGluYWR2ZXJ0ZW50bHkgY2hhbmdlZCwgdGVybWNhcCBjYW4ndCByZXN0b3JlIGl0LgotIyBJbnNlcnQtY2hhcmFjdGVyIGNhbm5vdCBiZSBtYWRlIHRvIHdvcmsgb24gYm90aCB0b3AgYW5kIGJvdHRvbSByb3dzLgotIyBDbGVhci10by1lbmQtb2YtZGlzcGxheSBlbXVsYXRpb24gdmlhICFETEkgOTg4IGlzIHRvbyBncm90dHkgdG8gdXNlLCBhbGFzLgotIyBUaGVyZSBhbHNvIHNlZW1zIHRvIGJlIGEgcHJvYmxlbSB3aXRoIHZlcnRpY2FsIG1vdGlvbiwgcGVyaGFwcyBpbnZvbHZpbmcKLSMgZGVsZXRlL2luc2VydC1saW5lLCBmb2xsb3dpbmcgYSB0eXBlZCBjYXJyaWFnZSByZXR1cm4uICBUaGlzIHRlcm1pbmFsIHN1Y2tzLgotIyBEZWxheXMgbm90IHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jICh0ZWs0MDI1YTogcmVtb3ZlZCBvYnNvbGV0ZSAiOnh4OiIuIFRoaXMgbWF5IG1lYW4gdGhlIHRlazQwMjVhIGVudHJ5IHdvbid0Ci0jIHdvcmsgYW55IG1vcmUuIC0tIGVzcikKLXRlazQwMjVhfFRla3Ryb25peCA0MDI1QSwKLQlPVGJzLCBPVHB0LCBhbSwgYncsIGRhLCBkYiwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzM0LAotCWJlbD1eRywgY2J0PVwwMzViYWM7LCBjbGVhcj1cMDM1ZXJhO1xuXDAzNXJ1cDssIGNtZGNoPV5dLAotCWNyPV5NLCBjdWI9XDAzNWxlZiAlcDElZDssIGN1YjE9XkgsIGN1ZD1cMDM1ZG93ICVwMSVkOywKLQljdWQxPV5KLCBjdWY9XDAzNXJpZyAlcDElZDssIGN1ZjE9XDAzNXJpZzssCi0JY3V1PVwwMzV1cCAlcDElZDssIGN1dTE9XkssIGRjaD1cMDM1ZGNoICVwMSVkOywKLQlkY2gxPVwwMzVkY2g7LCBkbD1cMDM1ZGxpICVwMSVkOywgZGwxPVwwMzVkbGk7LAotCWVsPVwwMzVkY2ggODA7LCBocGE9XHJcMDM1cmlnICVwMSVkOywgaHQ9XkksCi0JaWwxPVwwMTNcMDM1aWxpOywgaW5kPV5KLCBpbmRuPVwwMzVkb3cgJXAxJWQ7LAotCXJzMj0hY29tIDI5XDAzNWRlbCAwXDAzNXJzcyB0XDAzNWJ1ZlwwMzVidWYgblwwMzVjbGVcMDM1ZGlzXDAzNWR1cFwwMzVlY2ggclwwMzVlb2xcMDM1ZXJhIGdcMDM1Zm9yIG5cMDM1cGFkIDIwM1wwMzVwYWQgMjA5XDAzNXNubyBuXDAzNXN0byA5IDE3IDI1IDMzIDQxIDQ5IDU3IDY1IDczXDAzNXdvciAwOywKLQl0YmM9XDAzNXN0bzssCi0jIEZyb206IGNib3NnIXRla2xhYnMhZGF2ZW0gV2VkIFNlcCAxNiAyMToxMTo0MSAxOTgxCi0jIEhlcmUncyB0aGUgY29tbWFuZCBmaWxlIHRoYXQgSSB1c2UgdG8gZ2V0IHJvZ3VlIHRvIHdvcmsgb24gdGhlIDQwMjUuCi0jIEl0IHNob3VsZCB3b3JrIHdpdGggYW55IHByb2dyYW0gdXNpbmcgdGhlIG9sZCBjdXJzZXMgKGUuZy4gaXQgYmV0dGVyCi0jIG5vdCB0cnkgdG8gc2Nyb2xsLCBvciBjdXJzb3IgYWRkcmVzc2luZyB3b24ndCB3b3JrLiAgQWxzbywgeW91IGNhbid0Ci0jIHNlZSB0aGUgY3Vyc29yLikKLSMgKFRoaXMgImxlYXJucyIgdGhlIGFycm93IGtleXMgZm9yIHJvZ3VlLiBJIGhhdmUgYWRhcHRlZCBpdCBmb3IgdGVybWNhcCAtIG1yaCkKLXRlazQwMjUtY3J8dGVrIDQwMjUgZm9yIGN1cnNlcyBhbmQgcm9ndWUsCi0JT1RicywgYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzMsCi0JY2xlYXI9XDAzN2VyYTssIGN1YjE9XkgsIGN1ZDE9XkZeSiwgY3VmMT1cMDM3cmlnOywKLQljdXA9XDAzN2p1bSVpJXAxJWRcLCVwMiVkOywgY3V1MT1eSywgaHQ9XkksIGluZD1eRl5KLAotCWlzMj0hY29tIDMxXHJcblwwMzdzdG8gOSAxNyAyNSAzMyA0MSA0OSA1NyA2NSA3M1xyLAotCXJtY3VwPVwwMzd3b3IgMCwgc21jdXA9XDAzN3dvciAzM2gsCi0jIG5leHQgdHdvIGxpbmVzIGNvbW1lbnRlZCBvdXQgc2luY2UgY3Vyc2VzIG9ubHkgYWxsb3dzIDEyOCBjaGFycywgc2lnaC4KLSMJOnRpPVwwMzdsZWEgcDEvYi9cMDM3bGVhIHAyL2ovXDAzN2xlYSBwMy9uL1wwMzdsZWEgcDQvaC9cMDM3bGVhIHA1LyAvXDAzN2xlYSBwNi9sL1wwMzdsZWEgcDcveS9cMDM3bGVhIHA4L2svXDAzN2xlYSBwOS91L1wwMzdsZWEgcC4vZi9cMDM3bGVhIHB0L2BlcmEgdy8xM1wwMzdsZWEgcDAvcy9cMDM3d29yIDMzaDpcCi0jCTp0ZT1cMDM3bGVhIHAxXDAzN2xlYSBwMlwwMzdsZWEgcDNcMDM3bGVhIHA0XDAzN2xlYSBwdFwwMzdsZWEgcDVcMDM3bGVhIHA2XDAzN2xlYSBwN1wwMzdsZWEgcDhcMDM3bGVhIHA5L2xhLzEzXDAzN2xlYSBwLlwwMzdsZWEgcDBcMDM3d29yIDA6Ci10ZWs0MDI1ZXh8NDAyNWV4fDQwMjdleHx0ZWsgNDAyNSB3LyEsCi0JaXMyPVwwMzdjb20gMzNcclxuIXN0byA5XCwxN1wsMjVcLDMzXCw0MVwsNDlcLDU3XCw2NVwsNzNcciwKLQlybWN1cD1cMDM3Y29tIDMzXHIsIHNtY3VwPSFjb20gMzFcciwgdXNlPXRlazQwMjUsCi10ZWs0MTA1fHRla3Ryb25peCA0MTA1LAotCU9UYnMsIGFtLCBtaXIsIG1zZ3IsIHVsLCB4ZW5sLCB4dCwKLQljb2xzIzc5LCBpdCM4LCBsaW5lcyMyOSwKLQlhY3NjPSwgYmVsPV5HLCBibGluaz1cRVs9Mzs8N20sIGJvbGQ9XEVbPTc7PDRtLCBjYnQ9XEVbWiwKLQljbGVhcj1cRVsySlxFW0gsIGNyPV5NLCBjdWQxPVxFWzFCLCBjdWYxPVxFWzFDLAotCWN1cD1cRVslaSVwMSUyZDslcDIlMmRILCBjdXUxPVxFWzFBLCBkY2gxPVxFWzFQLAotCWRpbT1cRVs9MTs8Nm0sIGRsMT1cRVsxTSwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwKLQlpbDE9XEVbMUwsIGluZD1cRVtTLCBpbnZpcz1cRVs9Njs8NSwgaXMxPVxFJSExXEVbbSwKLQlpczI9XEUlITFcRVs/NjE0MVxFW20sIGticz1eSCwga2N1YjE9XEVbMUQsIGtjdWQxPVxFWzFCLAotCWtjdWYxPVxFWzFDLCBrY3V1MT1cRVsxQSwgcmV2PVxFWz0xOzwzbSwgcmk9XEVbVCwKLQlybWFjcz1cRVttLCBybWN1cD0sIHJtaXI9XEVbNGwsIHJtc289XEVbPTA7PDFtLAotCXJtdWw9XEVbPTA7PDFtLCBzZ3IwPVxFWz0wOzwxbSwgc21hY3M9XEVbMW0sCi0Jc21jdXA9XEUlITFcRVs/NmxcRVsySiwgc21pcj1cRVs0aCwgc21zbz1cRVs9Mjs8M20sCi0Jc211bD1cRVs9NTs8Mm0sIHRiYz1cRVsxZywKLQotIyAodGVrNDEwNS0zMDogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi10ZWs0MTA1LTMwfDQwMTUgZW11bGF0aW5nIDMwIGxpbmUgdnQxMDAsCi0JYW0sIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzMwLCB2dCMzLAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JYmVsPV5HLCBibGluaz1cRVs1bSQ8Mj4sIGJvbGQ9XEVbMW0kPDI+LAotCWNsZWFyPVxFW0hcRVtKJDw1MD4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MkPDI+LAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCQ8NT4sIGN1dT1cRVslcDElZEEsCi0JY3V1MT1cRVtBJDwyPiwgZWQ9XEVbSiQ8NTA+LCBlbD1cRVtLJDwzPiwgZWwxPVxFWzFLJDwzPiwKLQllbmFjcz1cRShCXEUpMCwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XkgsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwgcmM9XEU4LAotCXJldj1cRVs3bSQ8Mj4sIHJpPVxFTSQ8NT4sIHJtYWNzPV5PLCBybWFtPVxFWz83bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttJDwyPiwgcm11bD1cRVttJDwyPiwKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwMSVwNiV8JXQ7MSU7JT8lcDIldDs0JTslPyVwMSVwMyV8JXQ7NyU7JT8lcDQldDs1JTttJT8lcDkldFwwMTYlZVwwMTclOyQ8Mj4sCi0Jc2dyMD1cRVttXDAxNyQ8Mj4sIHNtYWNzPV5OLCBzbWFtPVxFWz83aCwgc21reD1cRVs/MWhcRT0sCi0Jc21zbz1cRVsxOzdtJDwyPiwgc211bD1cRVs0bSQ8Mj4sIHRiYz1cRVszZywKLQl1c2U9dnQxMDArZm5rZXlzLAotCi0jIFRla3Ryb25peCA0MTA1IGZyb20gQlJMCi0jIFRoZSBmb2xsb3dpbmcgc2V0dXAgbW9kZXMgYXJlIGFzc3VtZWQgZm9yIG5vcm1hbCBvcGVyYXRpb246Ci0jCUNPREUgYW5zaQkJQ1JMRiBubwkJCURBQlVGRkVSIDE0MQotIwlEQUVOQUJMRSB5ZXMJCURBTElORVMgMzAJCURBTU9ERSByZXBsYWNlCi0jCURBVklTSUJJTElUWSB5ZXMJRUNITyBubwkJCUVESVRNQVJHSU5TIDEgMzAKLSMJRkxBR0dJTkcgaW5wdXQJCUlOU0VSVFJFUExBQ0UgcmVwbGFjZQlMRkNSIG5vCi0jCU9SSUdJTk1PREUgcmVsYXRpdmUJUFJPTVBUTU9ERSBubwkJU0VMRUNUQ0hBUlNFVCBHMCBCCi0jCVNFTEVDVENIQVJTRVQgRzEgMAlUQUJTIC0yCi0jIE90aGVyIHNldHVwIG1vZGVzIG1heSBiZSBzZXQgZm9yIG9wZXJhdG9yIGNvbnZlbmllbmNlIG9yIGNvbW11bmljYXRpb24KLSMgcmVxdWlyZW1lbnRzOyBJIHJlY29tbWVuZAotIwlBQ1VSU09SIDEgMAkJQVVUT1JFUEVBVCB5ZXMJCUFVVE9XUkFQIHllcwotIwlCWVBBU1NDQU5DRUwgPExGPglDVVJTT1JLRVlNT0RFIG5vCURBSU5ERVggMSAwIDAKLSMJRU9GU1RSSU5HICcnCQlFT0xTVFJJTkcgPENSPgkJRU9NQ0hBUlMgPENSPiA8TlU+Ci0jCUdBTU9ERSBvdmVyc3RyaWtlCUdDVVJTT1IgMCAxMDAgMAkJR1NQRUVEIDEwIDEKLSMJSUdOT1JFREVMIG5vCQlLRVlFWENIQVIgPERMPgkJTlZERUZJTkUgLTUzICI8TlU+IgotIwlQUk9NUFRTVFJJTkcgJycJCVFVRVVFU0laRSAyNDYwCQlXSU5ET1cgMCAwIDQwOTUgMzEzMgotIwlYTVRERUxBWSAwCi0jIGFuZCBmYWN0b3J5IGNvbG9yIG1hcHMuICBBZnRlciBzZXR0aW5nIHRoZXNlIG1vZGVzLCBzYXZlIHRoZW0gd2l0aCBOVlNBVkUuIE5vCi0jIGRlbGF5cyBhcmUgc3BlY2lmaWVkOyB1c2UgInN0dHkgaXhvbiAtaXhhbnkiIHRvIGVuYWJsZSBEQzMvREMxIGZsb3cgY29udHJvbCEKLSMgIklDIiBjYW5ub3QgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICJpbSIgJiAiZWkiLgotIyAidGVrNDEwNWEiIGlzIGp1c3QgYSBndWVzczoKLXRlazQxMDVhfFRla3Ryb25peCA0MTA1LAotCU9UYnMsIE9UcHQsIG1zZ3IsIHhvbiwKLQlPVGtuIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzMwLCB2dCMzLAotCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwKLQljaXZpcz1cRSUhMFxFVEQwMFxFJSExLCBjbGVhcj1cRVtIXEVbSiwKLQljbm9ybT1cRSUhMFxFVEQxMFxFJSExLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XkosCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRU0sIGN2dmlzPVxFJSEwXEVURDcwXEUlITEsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sIGRsMT1cRVtNLAotCWVjaD1cRVslcDElZFgsIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpbmRuPVxFWyVwMSVkUywgaXMyPVxFJSExLAotCWticz1eSCwga2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwKLQlrZjA9XEVPQSwga2YxPVxFT0IsIGtmMj1cRU9DLCBrZjM9XEVPRCwga2Y0PVxFT1AsIGtmNT1cRU9RLAotCWtmNj1cRU9SLCBrZjc9XEVPUywgbGYwPUYxLCBsZjE9RjIsIGxmMj1GMywgbGYzPUY0LCBsZjQ9RjUsCi0JbGY1PUY2LCBsZjY9RjgsIGxsPVxFWzMwO0gsIG5lbD1cRUUsIHJjPVxFOCwgcmV2PVxFWzdtLCByaT1cRU0sCi0JcmluPVxFWyVwMSVkVCwgcm1hY3M9Xk8sIHJtY3VwPVxFJSEwXEVMQkg9XEUlITEsCi0Jcm1pcj1cRVs0bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMj1cMDMwXEUlITBcRUtDXEVcMDE0XEVLUjBcRUtGMFxFTk0wXEVMQkg9XEVURjgwMDAwMTBGNDBcRUxJMTAwXEVMTEE+XEVMTTBcRUtFMFxFTkYxXEVLUzBcRU5EMFxFJSExXEVjXEVbPzM7NWxcRVs/Nzs4aFxFW3JcRVttXEU+LAotCXNjPVxFNywgc2dyMD1cRVttLCBzbWFjcz1eTiwgc21jdXA9XEVbPzZsLCBzbWlyPVxFWzRoLAotCXNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0KLSMKLSMgVGVrdHJvbml4IDQxMDYvNDEwNy80MTA5IGZyb20gQlJMCi0jIFRoZSBmb2xsb3dpbmcgc2V0dXAgbW9kZXMgYXJlIGFzc3VtZWQgZm9yIG5vcm1hbCBvcGVyYXRpb246Ci0jCUNPREUgYW5zaQkJQ09MVU1OTU9ERSA4MAkJQ1JMRiBubwotIwlEQUJVRkZFUiAxNDEJCURBRU5BQkxFIHllcwkJREFMSU5FUyAzMgotIwlEQU1PREUgcmVwbGFjZQkJREFWSVNJQklMSVRZIHllcwlFQ0hPIG5vCi0jCUVESVRNQVJHSU5TIDEgMzIJRkxBR0dJTkcgaW5wdXQJCUlOU0VSVFJFUExBQ0UgcmVwbGFjZQotIwlMRkNSIG5vCQkJTE9DS0tFWUJPQVJEIG5vCQlPUklHSU5NT0RFIHJlbGF0aXZlCi0jCVBST01QVE1PREUgbm8JCVNFTEVDVENIQVJTRVQgRzAgQglTRUxFQ1RDSEFSU0VUIEcxIDAKLSMJVEFCUyAtMgotIyBPdGhlciBzZXR1cCBtb2RlcyBtYXkgYmUgc2V0IGZvciBvcGVyYXRvciBjb252ZW5pZW5jZSBvciBjb21tdW5pY2F0aW9uCi0jIHJlcXVpcmVtZW50czsgSSByZWNvbW1lbmQKLSMJQUNVUlNPUiAxIDAJCUFVVE9SRVBFQVQgeWVzCQlBVVRPV1JBUCB5ZXMKLSMJQllQQVNTQ0FOQ0VMIDxMRj4JQ1VSU09SS0VZTU9ERSBubwlEQUlOREVYIDEgMCAwCi0jCUVPRlNUUklORyAnJwkJRU9MU1RSSU5HIDxDUj4JCUVPTUNIQVJTIDxDUj4gPE5VPgotIwlHQU1PREUgb3ZlcnN0cmlrZQlHQ1VSU09SIDAgMTAwIDAJCUdTUEVFRCA5IDMKLSMJSUdOT1JFREVMIG5vCQlLRVlFWENIQVIgPERMPgkJTlZERUZJTkUgLTUzICI8TlU+IgotIwlQUk9NUFRTVFJJTkcgJycJCVFVRVVFU0laRSAyNjIwCQlXSU5ET1cgMCAwIDQwOTUgMzEzMgotIwlYTVRERUxBWSAwCi0jIGFuZCBmYWN0b3J5IGNvbG9yIG1hcHMuICBBZnRlciBzZXR0aW5nIHRoZXNlIG1vZGVzLCBzYXZlIHRoZW0gd2l0aCBOVlNBVkUuICBObwotIyBkZWxheXMgYXJlIHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IiB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jICJJQyIgY2Fubm90IGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAiaW0iICYgImVpIi4KLXRlazQxMDZicmx8dGVrNDEwN2JybHx0ZWs0MTA5YnJsfFRla3Ryb25peCA0MTA2IDQxMDcgb3IgNDEwOSwKLQltc2dyLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzIsIHZ0IzMsCi0JYWNzYz0sIGJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLAotCWNpdmlzPVxFJSEwXEVURDAwXEUlITEsIGNsZWFyPVxFW0hcRVtKLAotCWNub3JtPVxFJSEwXEVURDEwXEUlITEsIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFTSwgY3Z2aXM9XEUlITBcRVRENzBcRSUhMSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwKLQlpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosIGluZG49XEVbJXAxJWRTLCBpczI9XEUlITEsCi0Ja2JzPV5ILCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtmMD1cRU9BLCBrZjE9XEVPQiwga2YyPVxFT0MsIGtmMz1cRU9ELCBrZjQ9XEVPUCwga2Y1PVxFT1EsCi0Ja2Y2PVxFT1IsIGtmNz1cRU9TLCBsZjA9RjEsIGxmMT1GMiwgbGYyPUYzLCBsZjM9RjQsIGxmND1GNSwKLQlsZjU9RjYsIGxmNj1GOCwgbGw9XEVbMzI7SCwgbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwKLQlyaW49XEVbJXAxJWRULCBybWFjcz1eTywgcm1jdXA9XEUlITBcRUxCSD1cRSUhMSwKLQlybWlyPVxFWzRsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0JcnMxPVwwMzBcRSUhMFxFS0NcRVwwMTRcRUtSMFxFS0YwXEVOTTBcRUxCSD1cRVRGODAwMDAxMEY0MFxFTEkxMDBcRUxMQjBcRUxNMFxFS0UwXEVORjFcRUtTMFxFTkQwXEVSRTBcRSUhMVxFY1xFWz8zOzVsXEVbPzc7OGhcRVtyXEVbbVxFPiwKLQlzYz1cRTcsIHNncjA9XEVbbSwgc21hY3M9Xk4sIHNtY3VwPVxFWz82bCwgc21pcj1cRVs0aCwKLQlzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3OzQybSwgc211bD1cRVs0bSwgdGJjPVxFWzNnLAotCi10ZWs0MTA3fHRlazQxMDl8dGVrdHJvbml4IHRlcm1pbmFscyA0MTA3IDQxMDksCi0JT1RicywgYW0sIG1pciwgbXNnciwgdWwsIHhlbmwsIHh0LAotCWNvbHMjNzksIGl0IzgsIGxpbmVzIzI5LAotCWJlbD1eRywgYmxpbms9XEUlITFcRVs1bSQ8Mj5cRSUhMCwKLQlib2xkPVxFJSExXEVbMW0kPDI+XEUlITAsIGNsZWFyPVxFTFosIGNub3JtPVxFJSEwLCBjcj1eTSwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgY3Z2aXM9XEUlITMsCi0JZGltPVxFJSExXEVbPDBtJDwyPlxFJSEwLCBlZD1cRUosIGVsPVxFSywgaHQ9XkksIGluZD1eSiwKLQlrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwKLQlyZXY9XEUlITFcRVs3bSQ8Mj5cRSUwLCByaT1cRUksCi0Jcm1zbz1cRSUhMVxFW20kPDI+XEUlITAsIHJtdWw9XEUlITFcRVttJDwyPlxFJSEwLAotCXNncj1cRSUlITFcRVslPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSQ8Mj5cRSUlITAsCi0Jc2dyMD1cRSUhMVxFW20kPDI+XEUlITAsIHNtc289XEUlITFcRVs3OzVtJDwyPlxFJSEwLAotCXNtdWw9XEUlITFcRVs0bSQ8Mj5cRSUhMCwKLSMgVGVrdHJvbml4IDQyMDcgd2l0aCBzeXNsaW5lLiAgSW4gdGhlIGFuY2VzdHJhbCB0ZXJtY2FwIGZpbGUgdGhpcyB3YXMgNDEwNy1zOwotIyBzZWUgdGhlIG5vdGUgYXR0YWNoZWQgdG8gdGVrNDIwNy4KLXRlazQyMDctc3xUZWt0cm9uaXggNDIwNyB3aXRoIHN5c2xpbmUgYnV0IG5vIG1lbW9yeSwKLQllc2xvaywgaHMsCi0JZHNsPVxFN1xFWz82bFxFWzJLXEVbPzZoXEU4LCBmc2w9XEVbPzZoXEU4LAotCWlzMT1cRSUhMVxFWzI7MzJyXEVbMTMyRFxFWzJnXEVIXEVbOENcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbOENcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbOENcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbSiwKLQlpczI9XEU3XEVbPzZsXEVbMktcRVs/NmhcRTgsCi0JdHNsPVxFN1xFWz82bFxFWzJLXEVbOyVpJWRmLCB1c2U9dGVrNDEwNywKLQotIyBUaGUgNDExMCBzZXJpZXMgbWF5IGJlIGEgd29uZGVyZnVsIGdyYXBoaWNzIHNlcmllcywgYnV0IHRoZXkgbWFrZSB0aGUgNDAyNQotIyBsb29rIGdvb2QgZm9yIHNjcmVlbiBlZGl0aW5nLiAgSW4gdGhlIGRpYWxvZyBhcmVhLCB5b3UgY2FuJ3QgbW92ZSB0aGUgY3Vyc29yCi0jIG9mZiB0aGUgYm90dG9tIGxpbmUuICBPdXQgb2YgdGhlIGRpYWxvZyBhcmVhLCBeSyBtb3ZlcyBpdCB1cCwgYnV0IHRoZXJlCi0jIGlzIG5vIHdheSB0byBzY3JvbGwuCi0jCi0jIE5vdGUgdGhhdCB0aGVyZSBpcyBhIGZsb3BweSBmb3IgZnJlZSBmcm9tIFRlayB0aGF0IG1ha2VzIHRoZQotIyA0MTEyIGVtdWxhdGUgdGhlIHZ0NTIgKHVzZSB0aGUgdnQ1MiB0ZXJtY2FwKS4gVGhlcmUgaXMgYWxzbwotIyBhbiBleHBlY3RlZCBlbmhhbmNlbWVudCB0aGF0IHdpbGwgdXNlIEFOU0kgc3RhbmRhcmQgc2VxdWVuY2VzLgotIwotIyA0MTEyIGluIG5vbi1kaWFsb2cgYXJlYSBwcmV0ZW5kaW5nIHRvIHNjcm9sbC4gSXQgcmVhbGx5IHdyYXBzCi0jIGJ1dCB2aSBpcyBzYWlkIHRvIHdvcmsgKG1vcmUgb3IgbGVzcykgaW4gdGhpcyBtb2RlLgotIwotIyAndmknIHdvcmtzIHJlYXNvbmFibHkgd2VsbCB3aXRoIHRoaXMgZW50cnkuCi0jCi1vdGVrNDExMnxvNDExMi1uZHxvdGVrNDExM3xvdGVrNDExNHxvbGQgdGVrdHJvbml4IDQxMTAgc2VyaWVzLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzM0LAotCWJlbD1eRywgY2xlYXI9XEVeTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1dTE9XkssIGluZD1eSiwKLQlybWN1cD1cRUtBMVxFTFYxLCBzbWN1cD1cRUtBMFxFTFYwXEVNRzAsCi0jIFRoZSA0MTEyIHdpdGggdGhlIEFOU0kgY29tcGF0aWJpbGl0eSBlbmhhbmNlbWVudAotdGVrNDExMnx0ZWs0MTE0fHRla3Ryb25peCA0MTEwIHNlcmllcywKLQlPVGJzLCBhbSwgZGIsCi0JY29scyM4MCwgbGluZXMjMzQsCi0JY2J0PVxFW1osIGNsZWFyPVxFWzJKXEVbMDswSCwgY3ViMT1eSCwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRU0sIGRjaDE9XEVbUCwgZGwxPVxFW00sCi0JZWQ9XEVbMEosIGVsPVxFWzBLLCBpY2gxPVxFW0AsIGlsMT1cRVtMLAotCWluZD1cRTdcRVswOzBIXEVbTVxFOCwgaXMyPVxFMyExLCByaT1cRTdcRVswOzBIXEVbTFxFOCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotdGVrNDExMi1uZHw0MTEyIG5vdCBpbiBkaWFsb2cgYXJlYSwKLQlPVG5zLAotCWN1dTE9XkssIHVzZT10ZWs0MTEyLAotdGVrNDExMi01fDQxMTIgaW4gNSBsaW5lIGRpYWxvZyBhcmVhLAotCWxpbmVzIzUsIHVzZT10ZWs0MTEyLAotIyAodGVrNDExMzogdGhpcyB1c2VkIHRvIGhhdmUgIjxjdWYxPVxMTTFcc1xMTTA+Iiwgc29tZW9uZSdzIG1pc3Rha2U7Ci0jIHJlbW92ZWQgIjxzbWFjcz1cRV5OPiwgPHJtYWNzPVxFXk8+Iiwgd2hpY2ggaGFkIGJlZW4gY29tbWVudGVkIG91dCBpbiA4LjMuCi0jIE5vdGUsIHRoZSAhMCBhbmQgITEgc2VxdWVuY2VzIGluIDxybWN1cD4vPHNtY3VwPi88Y25vcm0+LzxjaXZpcz4gd2VyZQotIyBwcmV2aW91c2x5IFwwNDEwIGFuZCBcMDQxMSBzZXF1ZW5jZXMuLi5JIGRvbid0ICp0aGluayogdGhleSB3ZXJlIHN1cHBvc2VkCi0jIHRvIGJlIDQtZGlnaXQgb2N0YWwgLS0gZXNyKQotdGVrNDExM3x0ZWt0cm9uaXggNDExMyBjb2xvciBncmFwaGljcyB3aXRoIDUgbGluZSBkaWFsb2cgYXJlYSwKLQlPVGJzLCBhbSwgZGEsIGVvLAotCWNvbHMjODAsIGxpbmVzIzUsCi0JY2xlYXI9XEVMWiwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUxNMSBcRUxNMCwKLQlmbGFzaD1cRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCQTRcRVJCMCwKLQlpczI9XEVLQTFcRUxMNVxFTFYwXEVMVjEsIHVjPVwwMTBcRUxNMV9cRUxNMCwKLXRlazQxMTMtMzR8dGVrdHJvbml4IDQxMTMgY29sb3IgZ3JhcGhpY3Mgd2l0aCAzNCBsaW5lIGRpYWxvZyBhcmVhLAotCWxpbmVzIzM0LAotCWlzMj1cRUtBMVxFTExCMlxFTFYwXEVMVjEsIHVzZT10ZWs0MTEzLAotIyA6bnM6IGxlZnQgb2ZmIHRvIGFsbG93IHZpIHZpc3VhbCBtb2RlLiBBUEwgZm9udCAoOmFzPVxFXk46LzphZT1cRV5POikgbm90Ci0jIHN1cHBvcnRlZCBoZXJlLiA6dWM6IGlzIHNsb3csIGJ1dCBsb29rcyBuaWNlLiBTdWdnZXN0IHNldGVudiBNT1JFIC11cCAuCi0jIDp2YjogbmVlZHMgZW5vdWdoIGRlbGF5IHRvIGxldCB5b3Ugc2VlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJlaW5nIHRvZ2dsZWQuCi10ZWs0MTEzLW5kfHRla3Ryb25peCA0MTEzIGNvbG9yIGdyYXBoaWNzIHdpdGggbm8gZGlhbG9nIGFyZWEsCi0JT1RicywgYW0sIGVvLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzM0LAotCWNsZWFyPVxFXkwsIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkksIGN1dTE9XkssCi0JY3Z2aXM9XEVMWlxFS0EwLAotCWZsYXNoPVxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkJBNFxFUkIwLAotCWhvbWU9XEVMRjdsXDE3NyBALCBodD1eSSwgaXMyPVxFTFpcRUtBMFxFTEY3bFwxNzcgQCwKLQlsbD1cRUxGIGhsIEAsIHJtc289XEVNVDEsIHNtc289XEVNVDIsIHVjPVwwMTBcRU1HMV9cRU1HMCwKLSMgVGhpcyBlbnRyeSBpcyBmcm9tIFRlay4gSW5jLiAgKEJyaWFuIEJpZWhsKQotIyAodGVrNDExNTogOmJjOiByZW5hbWVkIHRvIDpsZTosIDxybWFtPi88c21hbT4gYWRkZWQgYmFzZWQgb24gaW5pdCBzdHJpbmcgLS0gZXNyKQotb3RlazQxMTV8VGVrdHJvbml4IDQxMTUsCi0JT1RicywgYW0sIGRhLCBkYiwgZW8sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMzQsCi0JY2J0PVxFW1osIGNsZWFyPVxFW0hcRVsySiwKLQljbm9ybT1cRSUhMFxFTEJHOFxFJSExXEVbMzQ7MUgsIGN1YjE9XEVbRCwgY3VkMT1cRVtCLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEUlITBcRUxCQjJcRSUhMSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC92dDEwMCwKLQlpbDE9XEVbTCwKLQlpczI9XEUlITBcRSVcMDE0XEVMVjBcRUtBMVxFTEJCMlxFTlVAPVxFTExCMlxFTE0wXEVMVjFcRUtZQT9cRSUhMVxFWzwxbFxFWz83aFxFWz84aFxFWzM0OzFIXEVbMzRCXEVbbSwKLQlrYnM9XkgsIHJpPVxFTSwgcm1hbT1cRVs/N2wsCi0Jcm1jdXA9XEUlITBcRUxCRzhcRSUhMVxFWzM0OzFIXEVbSiwgcm1pcj1cRVs0bCwKLQlybWt4PVxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwgc21hbT1cRVs/N2gsCi0Jc21jdXA9XEUlITBcRUxCQjJcRSUhMSwgc21pcj1cRVs0aCwgc21reD1cRT0sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwKLXRlazQxMTV8bmV3ZXIgdGVrdHJvbml4IDQxMTUgZW50cnkgd2l0aCBtb3JlIEFOU0kgY2FwYWJpbGl0aWVzLAotCWFtLCB4b24sCi0JY29scyM4MCwgbGluZXMjMzQsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNsZWFyPVxFW0hcRVtKLAotCWNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHBhPVxFWyVwMSV7MX0lKyVkRywKLQlodD1eSSwgaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbOG0sIGticz1eSCwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBraG9tZT1cRVtILAotCXJlcD0lcDElY1xFWyVwMiV7MX0lLSVkYiwgcmV2PVxFWzdtLCBybWFtPVxFWz83bCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3I9XEVbJT8lcDEldDc7JTslPyVwMiV0NDslOyU/JXAzJXQ3OyU7JT8lcDQldDU7JTslPyVwNiV0MTslO20sCi0Jc2dyMD1cRVttLCBzbWFtPVxFWz83aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdGJjPVxFWzJnLAotCXZwYT1cRVslcDElezF9JSslZGQsCi0jIFRoZSB0ZWs0MTI1IGVtdWxhdGVzIGEgdnQxMDAgaW5jb3JyZWN0bHkgLSB0aGUgc2Nyb2xsaW5nIHJlZ2lvbgotIyBjb21tYW5kIGlzIGlnbm9yZWQuICBUaGUgZm9sbG93aW5nIGVudHJ5IHJlcGxhY2VzIDxjc3I+IHdpdGggdGhlIG5lZWRlZAotIyA8aWw+LCA8aWw+LCBhbmQgPHNtaXI+OyByZW1vdmVzIHNvbWUgY3Vyc29yIHBhZCBjb21tYW5kcyB0aGF0IHRoZSB0ZWs0MTI1Ci0jIGNob2tlcyBvbjsgYW5kIGFkZHMgYSBsb3Qgb2YgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB0ZWsgZGlhbG9nIGFyZWEuCi0jIE5vdGUgdGhhdCB0aGlzIGVudHJ5IHVzZXMgYWxsIDM0IGxpbmVzIGFuZCBzZXRzIHRoZSBjdXJzb3IgY29sb3IgdG8gZ3JlZW4uCi0jIFN0ZXZlIEphY29ic29uIDgvODUKLSMgKHRlazQxMjU6IHRoZXJlIHdlcmUgdHdvICJcISJzIGluIHRoZSBpcyB0aGF0IEkgcmVwbGFjZWQgd2l0aCAiXEUhIjsKLSMgY29tbWVudGVkIG91dCwgPHNtaXI+PVxFMSBiZWNhdXNlIHRoZXJlJ3Mgbm8gPHJtaXI+ICAtLSBlc3IpCi10ZWs0MTI1fHRla3Ryb25peCA0MTI1LAotCWxpbmVzIzM0LAotCWNzckAsIGRsMT1cRVsxTSwgaWwxPVxFWzFMLAotCWlzMj1cRSVcRSEwXEVRRDFcRVVYMDNcRUtBXEVMQkIyXEVMQ0UwXEVMSTEwMFxFTEoyXEVMTEIyXEVMTTBcRUxTMVxFTFgwMFxFTFYxXEUlXEUhMVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlyY0AsIHNjQCwgc21reD1cRT0sIHVzZT12dDEwMCwKLQotIyBGcm9tOiA8amNva2VyQHVjYmljPgotIyAodGVrNDIwNzogVGhpcyB3YXMgdGhlIHRlcm1jYXAgZmlsZSdzIGVudHJ5IGZvciB0aGUgNDEwNy80MjA3LCBidXQgU0NPCi0jIHN1cHBsaWVkIGFub3RoZXIsIGxlc3MgY2FwYWJsZSA0MTA3IGVudHJ5LiAgU28gd2UnbGwgdXNlIHRoYXQgZm9yIDQxMDcgYW5kCi0jIG5vdGUgdGhhdCBpZiBqY29rZXIgd2Fzbid0IGNvbmZ1c2VkIHlvdSBtYXkgYmUgYWJsZSB0byB1c2UgdGhpcyBvbmUuCi0jIEkgbWVyZ2VkIGluIDxtc2dyPiw8aW5kPiw8cmk+LDxpbnZpcz4sPHRiYz4gZnJvbSBhIEJSTCBlbnRyeSAtLSBlc3IpCi10ZWs0MjA3fFRla3Ryb25peCA0MjA3IGdyYXBoaWNzIHRlcm1pbmFsIHdpdGggbWVtb3J5LAotCWFtLCBidywgbWlyLCBtc2dyLCB1bCwgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMzMiwKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2J0PVxFW1osIGNsZWFyPVxFW0hcRVtKJDwxNTYvPiwKLQljdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXUxPVxFTSwgZGNoMT1cRVtQJDw0Lz4sIGRsMT1cRVtNJDwzLz4sIGVkPVxFW0osCi0JZWw9XEVbSyQ8NS8+LCBob21lPVxFW0gsIGh0PV5JLCBpY2gxPVxFW0AkPDQvPiwKLQlpbDE9XEVbTCQ8My8+LCBpbmQ9XEVbUywgaW52aXM9XEVbPTY7PDUsCi0JaXMyPVxFJSEwXEVMQlAwXEUlITFcRVtIXEVbMmdcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbOENcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbOENcRUhcRVs4Q1xFSFxFWzhDXEVIXEVbOENcRUhcRVtKLAotCWtjdWIxPVxFW0QsIGtjdWQxPVxFRCwga2N1ZjE9XEVbQywga2N1dTE9XEVNLCBraG9tZT1cRVtILAotCXJldj1cRVs3bSwgcmk9XEVbVCwKLQlybWN1cD1cRVs/NmhcRSUhMFxFTEJQMFxFJSExXEVbMzI7MWYsIHJtc289XEVbbSwKLQlybXVsPVxFW20sIHNncjA9XEVbbSwgc21jdXA9XEVbPzZsXEVbSFxFW0osIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzFnLAotCi0jIEZyb206IDxjYXJvbHluQGRhbGkuYmVya2VsZXkuZWR1PiAgVGh1IE9jdCAzMSAxMjo1NDoyNyAxOTg1Ci0jICh0ZWs0NDA0OiBUaGVyZSB3YXMgYSAiXCEiIGluIDxzbWN1cD4gdGhhdCBJIHJlcGxhY2VkIHdpdGggIlxFISIuCi0jIFRhYiBoYWQgYmVlbiBnaXZlbiBhcyBcRTJJLHRoYXQgbXVzdCBiZSB0aGUgdGFiLXNldCBjYXBhYmlsaXR5IC0tIGVzcikKLXRlazQ0MDR8dGVrdHJvbml4IDQ0MDQsCi0JT1RicywKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMzMiwKLQlibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzJKLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVsxTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBodHM9XEVbMkksIGlsMT1cRVsxTCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCByYz1cRTgsCi0Jcm1jdXA9XEVbMTsxSFxFWzBKXEVbPzZoXEVbPzFsLCBybWlyPVxFWzRsLAotCXJta3g9XEVbPzFoLCBybXNvPVxFWzI3bSwgcm11bD1cRVttLCBzYz1cRTcsIHNncjA9XEVbbSwKLQlzbWN1cD1cRSVcRSExXEVbMTszMnJcRVs/NmxcRT4sIHNtaXI9XEVbNGgsCi0Jc21reD1cRVs/MWwsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jIFNvbWUgdW5rbm93biBwZXJzb24gd3JvdGU6Ci0jIEkgYWRkZWQgdGhlIGlzIHN0cmluZyAtIHN0cmFpZ2h0IFVuaXggaGFzIEVTQyA7IGluIHRoZSBsb2dpbgotIyBzdHJpbmcgd2hpY2ggc2V0cyBhIGN0ODUwMCBpbnRvIG1vbml0b3IgbW9kZSAoYWthIDQwMjUgc25vb3B5Ci0jIG1vZGUpLiBUaGUgaXMgc3RyaW5nIGhlcmUgY2xlYW5zIHVwIGEgZmV3IHRoaW5ncyAoYnV0IG5vdAotIyBldmVyeXRoaW5nKS4KLWN0ODUwMHx0ZWt0cm9uaXggY3Q4NTAwLAotCWFtLCBidywgZGEsIGRiLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWJlbD1eRywgY2J0PVxFXkksIGNsZWFyPVxFXkUsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotCWN1ZjE9XEVTLCBjdXA9XEV8JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFUiwKLQlkY2gxPVxFXl0sIGRsMT1cRV5NLCBlZD1cRV5VLCBlbD1cRV5ULCBodD1eSSwgaWNoMT1cRV5cLAotCWlsMT1cRV5MLCBpbmQ9XkosIGlzMj1cMDM3XEVaXEVrLCByaT1cRV5BLCBybXNvPVxFXHMsCi0Jcm11bD1cRVxzLCBzZ3IwPVxFXHMsIHNtc289XEUkLCBzbXVsPVxFISwKLQotIyBUZWt0cm9uaXggNDIwNSB0ZXJtaW5hbC4KLSMKLSMgYW0gaXMgbm90IGRlZmluZWQgYmVjYXVzZSB0aGUgd3JhcCBhcm91bmQgb2NjdXJzIG5vdCB3aGVuIHRoZSBjaGFyLgotIyBpcyBwbGFjZWQgaW4gdGhlIDgwJ3RoIGNvbHVtbiwgYnV0IHdoZW4gd2UgYXJlIGF0dGVtcHRpbmcgdG8gdHlwZQotIyB0aGUgODEnc3QgY2hhcmFjdGVyIG9uIHRoZSBsaW5lLiAgKGVzcjogaG1tLCB0aGlzIGlzIGxpa2UgdGhlIHZ0MTAwCi0jIHZlcnNpb24gb2YgeGVubCwgcGVyaGFwcyBhbSArIHhlbmwgd291bGQgd29yayEpCi0jCi0jIEJvbGQsIGRpbSwgYW5kIHN0YW5kb3V0IGFyZSBzaW11bGF0ZWQgYnkgY29sb3JzIGFuZCB0aHVzIG5vdCBhbGxvd2VkCi0jIHdpdGggY29sb3JzLiAgVGhlIHRla3Ryb25peCBjb2xvciB0YWJsZSBpcyBtYXBwZWQgaW50byB0aGUgUkdCIGNvbG9yCi0jIHRhYmxlIGJ5IHNldGYvc2V0Yi4gQWxsIGNvbG9ycyBhcmUgcmVzZXQgdG8gZmFjdG9yeSBzcGVjaWZpY2F0aW9ucyBieSBvYy4KLSMgVGhlIDxpbml0Yz4gY2FwIHVzZXMgUkdCIG5vdGF0aW9uIHRvIGRlZmluZSBjb2xvcnMuICBmb3IgYXJndW1lbnRzIDEtMyB0aGUKLSMgaW50ZXJ2YWwgKDAtMTAwMCkgaXMgYnJva2VuIGludG8gOCBzbWFsbGVyIHN1Yi1pbnRlcnZhbHMgKDEyNSkuICBFYWNoIHN1Yi0KLSMgaW50ZXJ2YWwgdGhlbiBtYXBzIGludG8gcHJlLWRlZmluZWQgdmFsdWUuCi10ZWs0MjA1fHRla3Ryb25peCA0MjA1LAotCWNjYywgbWlyLCBtc2dyLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMzMCwgbmN2IzQ5LCBwYWlycyM2MywKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbPTc7PDRtLCBjYnQ9XEVbWiwKLQljbGVhcj1cRVsySlxFW0gsIGNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPVxFW0QsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoMT1cRVsxUCwgZGltPVxFWz0xOzw2bSwgZGwxPVxFWzFNLCBlY2g9XEUlcDElZFgsCi0JZWQ9XEVbSiwgZWw9XEVbSywgZWwxPVxFWzFLLCBlbmFjcz1cRSkwLCBob21lPVxFW0gsIGh0PV5JLAotCWljaD1cRVslcDElZEAsIGlsPVxFWyVwMSVkTCwgaWwxPVxFWzFMLCBpbmQ9XEVELAotCWluaXRjPVxFJSUhMFxFVEY0JT8lcDElezB9JT0ldDAlZSVwMSV7MX0lPSV0NCVlJXAxJXsyfSU9JXQzJWUlcDElezN9JT0ldDUlZSVwMSV7NH0lPSV0MiVlJXAxJXs1fSU9JXQ2JWUlcDElezZ9JT0ldDclZTElOyU/JXAyJXsxMjV9JTwldDAlZSVwMiV7MjUwfSU8JXRBMiVlJXAyJXszNzV9JTwldEE/JWUlcDIlezUwMH0lPCV0QzglZSVwMiV7NjI1fSU8JXRENCVlJXAyJXs3NTB9JTwldEUxJWUlcDIlezg3NX0lPCV0RVw6JWVGNCU7JT8lcDMlezEyNX0lPCV0MCVlJXAzJXsyNTB9JTwldEEyJWUlcDMlezM3NX0lPCV0QT8lZSVwMyV7NTAwfSU8JXRDOCVlJXAzJXs2MjV9JTwldEQ0JWUlcDMlezc1MH0lPCV0RTElZSVwMyV7ODc1fSU8JXRFXDolZUY0JTslPyVwNCV7MTI1fSU8JXQwJWUlcDQlezI1MH0lPCV0QTIlZSVwNCV7Mzc1fSU8JXRBPyVlJXA0JXs1MDB9JTwldEM4JWUlcDQlezYyNX0lPCV0RDQlZSVwNCV7NzUwfSU8JXRFMSVlJXA0JXs4NzV9JTwldEVcOiVlRjQlO1xFJSUhMSwKLQlpbnZpcz1cRVs9Njs8NSwgaXMxPVxFJSEwXEVUTTFcRSUhMVxFW20sIGticz1eSCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjA9XEVPQSwKLQlrZjE9XEVPQiwga2YyPVxFT0MsIGtmMz1cRU9ELCBrZjQ9XEVQLCBrZjU9XEVRLCBrZjY9XEVSLAotCWtmNz1cRVMsCi0Jb2M9XEUlITBcRVRGQjAwMDAwMUY0RjRGNDJGNDAwMzBGNDA0QTRDPEY0NTBGNEY0NkY0MEY0N0Y0RjQwXEUlITEsCi0Jb3A9XEVbMzk7NDBtLCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtY3VwPSwKLQlybWlyPVxFWzRsLCBybXNvPVxFWz0wOzwxbSwgcm11bD1cRVsyNG0sCi0Jc2V0Yj1cRVs9JT8lcDElezB9JT0ldDBtJWUlcDElezF9JT0ldDRtJWUlcDElezJ9JT0ldDNtJWUlcDElezN9JT0ldDVtJWUlcDElezR9JT0ldDJtJWUlcDElezV9JT0ldDZtJWUlcDElezZ9JT0ldDdtJWUxbSU7LAotCXNldGY9XEVbPCU/JXAxJXswfSU9JXQwbSVlJXAxJXsxfSU9JXQ0bSVlJXAxJXsyfSU9JXQzbSVlJXAxJXszfSU9JXQ1bSVlJXAxJXs0fSU9JXQybSVlJXAxJXs1fSU9JXQ2bSVlJXAxJXs2fSU9JXQ3bSVlMW0lOywKLQlzZ3IwPVxFWz0wOzwxbVxFWzI0OzI1OzI3bVwwMTcsIHNtYWNzPV5OLAotCXNtY3VwPVxFJSUhMVxFWz82bFxFWzJKLCBzbWlyPVxFWzRoLCBzbXNvPVxFWz0yOzwzbSwKLQlzbXVsPVxFWzRtLCB0YmM9XEVbMWcsCi0KLSMjIyMgVGVsZXR5cGUgKHR0eSkKLSMKLSMgVGhlc2UgYXJlIHRoZSBoYXJkY29weSBUZWxldHlwZXMgZnJvbSBiZWZvcmUgQVQmVCBib3VnaHQgdGhlIGNvbXBhbnksCi0jIGNsYXR0ZXJpbmcgZWxlY3Ryb21lY2hhbmljYWwgZGlub3NhdXJzIGluIEJha2VsaXRlIGNhc2VzIHRoYXQgcHJpbnRlZCBvbgotIyBwdWxweSB5ZWxsb3cgcm9sbCBwYXBlci4gIElmIHlvdSByZW1lbWJlciB0aGVzZSB5b3UgZ28gYmFjayBhIHdheXMuCi0jIFRlbGV0eXBlLWJyYW5kZWQgVkRUcyBhcmUgbGlzdGVkIGluIHRoZSBBVCZUIHNlY3Rpb24uCi0jCi0jIFRoZSBlYXJsaWVzdCBVTklYZXMgd2VyZSBkZXNpZ25lZCB0byB1c2UgdGhlc2UgY2x1bmtlcnM7IG5yb2ZmIGFuZCBhIGZldwotIyBvdGhlciBwcm9ncmFtcyBzdGlsbCBkZWZhdWx0IHRvIGVtaXR0aW5nIGNvZGVzIGZvciB0aGUgTW9kZWwgMzcuCi0jCi0KLXR0eTMzfHR0eTM1fG1vZGVsIDMzIG9yIDM1IHRlbGV0eXBlLAotCWhjLCBvcywgeG9uLAotCWNvbHMjNzIsCi0JYmVsPV5HLCBjcj1eTSwgY3VkMT1eSiwgaW5kPV5KLAotdHR5Mzd8bW9kZWwgMzcgdGVsZXR5cGUsCi0JT1RicywgaGMsIG9zLCB4b24sCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3V1MT1cRTcsIGhkPVxFOSwgaHU9XEU4LAotCWluZD1eSiwKLQotIyBUaGVyZSBhcmUga25vd24gdG8gYmUgYXQgbGVhc3QgdGhyZWUgZmxhdm9ycyBvZiB0aGUgdHR5NDAsIGFsbCBzZWVtIG1vcmUKLSMgbGlrZSBJQk0gaGFsZiBkdXBsZXggZm9ybXMgZmlsbGVycyB0aGFuIEFTQ0lJIHRlcm1pbmFscy4gIFRoZXkgaGF2ZSBsb3RzIG9mCi0jIGF3ZnVsIGJyYWluZGFtYWdlLCBzdWNoIGFzIHByaW50aW5nIGEgdmlzaWJsZSBuZXdsaW5lIGluZGljYXRvciBhZnRlciBlYWNoCi0jIG5ld2xpbmUuICBUaGUgNDAtMSBpcyBhIGhhbGYgZHVwbGV4IHRlcm1pbmFsIGFuZCBpcyBob3BlbGVzcy4gIFRoZSA0MC0yIGlzCi0jIGJyYWluZGFtYWdlZCBidXQgaGFzIGhvcGUgYW5kIGlzIGRlc2NyaWJlZCBoZXJlLiAgVGhlIDQwLTQgaXMgYSAzMjcwCi0jIGxvb2thbGlrZSBhbmQgYmV5b25kIGhvcGUuICBUaGUgdGVybWluYWwgaGFzIHZpc2libGUgYmVsbCBidXQgSSBkb24ndCBrbm93Ci0jIGl0IC0gaXQncyBudWxsIGhlcmUgdG8gcHJldmVudCBpdCBmcm9tIHNob3dpbmcgdGhlIEJMIGNoYXJhY3Rlci4KLSMgVGhlcmUgaXMgYW4gXEVHIGluIDxubD4gYmVjYXVzZSBvZiBhIGJ1ZyBpbiBvbGQgdmkgKGlmIHN0dHkgc2F5cyB5b3UgaGF2ZQotIyBhICJuZXdsaW5lIiBzdHlsZSB0ZXJtaW5hbCAoLWNybW9kZSkgdmkgZmlndXJlcyBhbGwgaXQgbmVlZHMgaXMgbmwKLSMgdG8gZ2V0IGNybGYsIGV2ZW4gaWYgPGNyPiBpcyBub3QgXk0uKQotIyAodHR5NDA6IHJlbW92ZWQgb2Jzb2xldGUgIjpubD1cRUdcRUI6IiwgaXQncyBqdXN0IGRvK2NyIC0tIGVzcikKLXR0eTQwfGRzNDB8ZHM0MC0yfGRhdGFzcGVlZDQwfHRlbGV0eXBlIGRhdGFzcGVlZCA0MC8yLAotCU9UYnMsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRUgkPDIwPlxFSiQ8ODA+LCBjcj1cRUcsIGN1YjE9XkgsIGN1ZDE9XEVCLAotCWN1ZjE9XEVDLCBjdXUxPVxFNywgZGNoMT1cRVAkPDUwPiwgZGwxPVxFTSQ8NTA+LAotCWVkPVxFSiQ8NzU+LCBob21lPVxFSCQ8MTA+LCBodD1cRUAkPDEwPiwgaHRzPVxFMSwKLQlpY2gxPVxFXF4kPDUwPiwgaWwxPVxFTCQ8NTA+LCBpbmQ9XEVTJDwyMD4sIGticz1eXSwKLQlrY3ViMT1eSCwgbWM0PV5ULCBtYzU9XDAyMiQ8MjAwMD4sIHJpPVxFVCQ8MTA+LCBybXNvPVxFNCwKLQlyczI9XDAyM1xFUiQ8NjA+LCBzbXNvPVxFMywgdGJjPVxFSFxFMiQ8ODA+LAotdHR5NDN8bW9kZWwgNDMgdGVsZXR5cGUsCi0JT1RicywgYW0sIGhjLCBvcywgeG9uLAotCWNvbHMjMTMyLAotCWJlbD1eRywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGluZD1eSiwga2JzPV5ILAotCi0jIyMjIFR5bXNoYXJlCi0jCi0KLSMgWW91IGNhbiBhZGQgPGlzMj1cRTw+IHRvIHB1dCB0aGlzIDQwLWNvbHVtbiBtb2RlLCB0aG91Z2ggSSBjYW4ndAotIyBmb3IgdGhlIGxpZmUgb2YgbWUgdGhpbmsgd2h5IGFueW9uZSB3b3VsZCB3YW50IHRvLgotc2NhbnNldHxzYzQxMHxzYzQxNXxUeW1zaGFyZSBTY2FuIFNldCwKLQlhbSwgYncsIG1zZ3IsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYWNzYz1qJWs0bDxtLXFcLHg1LCBiZWw9XkcsIGNsZWFyPVxFSFxFSiwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1eSiwgY3VmMT1eSSwgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdXUxPV5LLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGluZD1eSiwga2N1YjE9XEVELAotCWtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsIG1jMD1cRTszLCBtYzQ9XEU7MCwKLQltYzU9XEU7MCwgcmM9XkMsIHJtYWNzPV5PLCByczE9XEU+LCBzYz1eQiwgc21hY3M9Xk4sCi0KLSMjIyMgVm9sa2VyLUNyYWlnICh2YykKLSMKLSMgSWYgeW91IHNhdyBhIEJ5dGUgTWFnYXppbmUgY292ZXIgd2l0aCBhIHRlcm1pbmFsIG9uIGl0IGR1cmluZyB0aGUgZWFybHkKLSMgMTk4MHMsIGl0IHdhcyBwcm9iYWJseSBvbmUgb2YgdGhlc2UuICBDYXJsIEhlbG1lcnMgbGlrZWQgdGhlbSBiZWNhdXNlCi0jIHRoZXkgY291bGQgY3JhbmsgMTkuMiBhbmQgd2VyZSBjaGVhcCAodGhhdCBpcywgaGUgbGlrZWQgdGhlbSB1bnRpbCBoZSB0cmllZAotIyB0byBwcm9ncmFtIG9uZS4uLikKLSMKLQotIyBNaXNzaW5nIGluIHZjMzAzYSBhbmQgdmMzMDMgZGVzY3JpcHRpb25zOiAgdGhleSBzY3JvbGwgMiBsaW5lcyBhdCBhIHRpbWUKLSMgZXZlcnkgb3RoZXIgbGluZWZlZWQuCi12YzMwM3x2YzEwM3x2YzIwM3x2b2xrZXItY3JhaWcgMzAzLAotCU9UYnMsIE9UbnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XDAxNCQ8NDA+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eSSwKLQljdXUxPV5OLCBob21lPVwwMTMkPDQwPiwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eSSwKLQlrY3V1MT1eTiwgbGw9XDAxNyQ8MT5XLAotdmMzMDNhfHZjNDAzYXx2b2xrZXItY3JhaWcgMzAzYSwKLQljbGVhcj1cMDMwJDw0MD4sIGN1ZjE9XlUsIGN1dTE9XlosIGVsPVwwMjYkPDIwPiwKLQlob21lPVwwMzEkPDQwPiwga2N1ZjE9XlUsIGtjdXUxPV5aLCBsbD1eUCwgdXNlPXZjMzAzLAotIyAodmM0MDQ6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eWl5QXlUgOiIgLS0gZXNyKQotdmM0MDR8dm9sa2VyLWNyYWlnIDQwNCwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVwwMzAkPDQwPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlUsCi0JY3VwPVwwMjAlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XlosCi0JZWQ9XDAyNyQ8NDA+LCBlbD1cMDI2JDwyMD4sIGhvbWU9XDAzMSQ8NDA+LCBpbmQ9XkosCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eVSwga2N1dTE9XlosCi12YzQwNC1zfHZvbGtlci1jcmFpZyA0MDQgdy9zdGFuZG91dCBtb2RlLAotCWN1ZDE9XkosIHJtc289Xk8sIHNtc289Xk4sIHVzZT12YzQwNCwKLSMgRnJvbTogPHdvbGZnYW5nQGNzLnNmdS5jYT4KLSMgKHZjNDE0OiBtZXJnZWQgaW4gY3VwL2RsMS9ob21lIGZyb20gYW4gb2xkIHZjNDE0aC1ub3hvbikKLXZjNDE0fHZjNDE0aHxWb2xrZXItQ3JhaWcgNDE0SCBpbiBzYW5lIGVzY2FwZSBtb2RlLiwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRVwwMzQkPDQwPiwgY3VkMT1cRV5LLCBjdWYxPV5QLAotCWN1cD1cRVwwMjElcDIlYyVwMSVjJDw0MD4sIGN1dTE9XEVeTCwgZGNoMT1cRTMsCi0JZGwxPVxFXDAyMyQ8NDA+LCBlZD1cRV5YLCBlbD1cRVwwMTckPDEwLz4sIGhvbWU9XEVeUiwKLQlpY2gxPVxFXDosIGlsMT1cRVwwMzIkPDQwPiwga2N1YjE9XkgsIGtjdWQxPVxFXkssIGtjdWYxPV5QLAotCWtjdXUxPVxFXkwsIGtmMD1cRUEsIGtmMT1cRUIsIGtmMj1cRUMsIGtmMz1cRUQsIGtmND1cRUUsCi0Ja2Y1PVxFRiwga2Y2PVxFRywga2Y3PVxFSCwga2hvbWU9XEVeUiwgbGYwPVBGMSwgbGYxPVBGMiwKLQlsZjI9UEYzLCBsZjM9UEY0LCBsZjQ9UEY1LCBsZjU9UEY2LCBsZjY9UEY3LCBsZjc9UEY4LAotCXJtc289XEVeXywgc21zbz1cRV5ZLAotdmM0MTV8dm9sa2VyLWNyYWlnIDQxNSwKLQljbGVhcj1eTCwgdXNlPXZjNDA0LAotCi0jIyMjIyMjIyBPQlNPTEVURSBQRVJTT05BTC1NSUNSTyBDT05TT0xFUyBBTkQgRU1VTEFUSU9OUwotIwotCi0jIyMjIElCTSBQQyBhbmQgY2xvbmVzCi0jCi0KLSMgVGhlIHBjcGxvdCBJQk0tUEMgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0gaXMgcmVhbGx5IG1lc3NlZCB1cC4gSXQgaXMKLSMgc3VwcG9zZWQgdG8gZW11bGF0ZSBhIHZ0LTEwMCwgYnV0IGVtdWxhdGVzIHRoZSB3cmFwYXJvdW5kIGJ1ZyBpbmNvcnJlY3RseSwKLSMgZG9lc24ndCBzdXBwb3J0IHNjcm9sbGluZyByZWdpb25zLCBpZ25vcmVzIGFkZCBsaW5lIGNvbW1hbmRzLCBhbmQgaWdub3JlcwotIyBkZWxldGUgbGluZSBjb21tYW5kcy4gQ29uc2VxdWVudGx5LCB0aGUgcmVzdWx0aW5nIGJlaGF2aW9yIGxvb2tzIGxpa2UgYQotIyBjcnVkZSBhZG0zYS10eXBlIHRlcm1pbmFsLgotIyBTdGV2ZSBKYWNvYnNvbiA4Lzg1Ci1wY3Bsb3R8cGMtcGxvdCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSwKLQl4ZW5sQCwKLQljc3JALCBkbEAsIGRsMUAsIGlsQCwgaWwxQCwgcmNALCBzY0AsIHVzZT12dDEwMCwKLSMgS2F5UHJvIElJIGZyb20gUmljaGFyZCBHIFR1cm5lciA8cnR1cm5lciBhdCBEYXJjb20tSHEuQVJQQT4KLSMgSSd2ZSBmb3VuZCB0aGF0IG15IEtheVBybyBJSSwgcnVubmluZyBNRE03MzAsIGNvbnRpbnVlcyB0byBlbXVsYXRlIGFuCi0jIEFETS0zQSB0ZXJtaW5hbCwganVzdCBsaWtlIEkgd2FzIHJ1bm5pbmcgVEVSTS5DT00uIE9uIG91ciA0LjIgVU5JWAotIyBzeXN0ZW0gdGhlIGZvbGxvd2luZyB0ZXJtY2FwIGVudHJ5IHdvcmtzIHdlbGw6Ci0jIEkgaGF2ZSBub3RpY2VkIGEgY291cGxlIG9mIG1pbm9yIGdsaXRjaGVzLCBidXQgbm90aGluZyBJIGNhbid0IHdvcmsKLSMgYXJvdW5kLiAoSSBhZGRlZCB0d28gY2FwYWJpbGl0aWVzIGZyb20gdGhlIEJSTCBlbnRyeSAtLSBlc3IpCi1rYXlwcm98a2F5cHJvMnxrYXlwcm8gSUksCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDMyJDwxLz4sIGNyPV5NLCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRsMT1cRVIsIGVkPV5XLAotCWVsPV5YLCBob21lPV5eLCBpbDE9XEVFLCBpbmQ9XkosIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssCi0KLSMgRnJvbSBJQk0sIFRodSBNYXkgIDUgMTk6MzU6MjcgMTk4MwotIyAoaWJtcGM6IGNvbW1lbnRlZCBvdXQgPHNtaXI+PVwyMDBSIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyA8cm1pcj4gLS0gZXNyKQotaWJtLXBjfGlibTUwNTF8NTA1MXxJQk0gUGVyc29uYWwgQ29tcHV0ZXIgKG5vIEFOU0kuU1lTKSwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MXkssIGNyPV5NXl4sIGN1YjE9Xl0sIGN1ZDE9XkosIGN1ZjE9XlwsCi0JY3V1MT1eXiwgaG9tZT1eSywgaW5kPVxuJDwxMD4sIGtjdWQxPV5fLAotCi1pYm1wY3x3eTYwLVBDfHd5c2U2MC1QQ3xJQk0gUEMvWFQgcnVubmluZyBQQy9JWCwKLQlPVGJzLCBhbSwgYncsIGVvLCBocywga20sIG1zZ3IsIHVsLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9alwzMzFrXDI3N2xcMzMybVwzMDBuXDMwNXFcMzA0dFwzMDN1XDI2NHZcMzAxd1wzMDJ4XDI2MywKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRWMsIGNyPV5NLAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZWNoPVxFWyVwMSVkWCwgZWQ9XEVbSiwgZWw9XEVbSywKLQlob21lPVxFW0gsIGhwYT1cRVslaSVwMSVkRywgaW5kPVxFW1NcRVtCLAotCWluZG49XEVbJXAxJWRTXEVbJXAxJWRCLCBpbnZpcz1cRVszMDs0MG0sIGticz1eSCwKLQlrY2J0PV5dLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtkY2gxPVwxNzcsIGtlbmQ9XEVbWSwga2YxPVwyNDAsIGtmMTA9XDI1MSwga2YyPVwyNDEsCi0Ja2YzPVwyNDIsIGtmND1cMjQzLCBrZjU9XDI0NCwga2Y2PVwyNDUsIGtmNz1cMjQ2LCBrZjg9XDI0NywKLQlrZjk9XDI1MCwga2hvbWU9XEVbSCwga2ljaDE9XEVbXkgsIGtucD1cRVtVLCBrcHA9XEVbViwKLQlsbD1cRVsyNDsxSCwgbmVsPV5NLCByZXY9XEVbN20sIHJpPVxFW1RcRVtBLAotCXJpbj1cRVslcDElZFRcRVslcDElZEEsIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncj1cRVslPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSwKLQlzZ3IwPVxFW20sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0KLSMjIyMgQXBwbGUgSUkKLSMKLSMgQXBwbGUgSUkgZmlybXdhcmUgY29uc29sZSBmaXJzdCwgdGhlbiB2YXJpb3VzIDgwLWNvbHVtbiBjYXJkcyBhbmQKLSMgdGVybWluYWwgZW11bGF0b3JzLiAgRm9yIHR3byBjZW50cyBJJ2QgdG9zcyBhbGwgdGhlc2UgaW4gdGhlIFVGTyBmaWxlCi0jIGFsb25nIHdpdGggdGhlIDQwLWNvbHVtbiBhcHBsZSBlbnRyaWVzLgotIwotCi0jIEZyb206IGJyc21pdGhAdW1uLWNzLmNzLnVtbi5lZHUgKEJyaWFuIFIuIFNtaXRoKSB2aWEgQlJMCi0jCSdpdCM4JyB0ZWxscyBVTklYIHRoYXQgeW91IGhhdmUgdGFicyBldmVyeSA4IGNvbHVtbnMuICBUaGlzIGlzIGEKLSMJCWZ1bmN0aW9uIG9mIFRJQywgbm90IHRoZSBmaXJtd2FyZS4KLSMJVGhlIGNsZWFyIGtleSBvbiBhIElJZ3Mgd2lsbCBkbyBzb21ldGhpbmcgbGlrZSBjbGVhci1zY3JlZW4sCi0jCQlkZXBlbmRpbmcgb24gd2hhdCB5b3UncmUgaW4uCi1hcHBsZUlJZ3N8YXBwbGVJSWV8YXBwbGVJSWN8QXBwbGUgODAgY29sdW1uIGZpcm13YXJlIGludGVyZmFjZSwKLQlPVGJzLCBhbSwgYncsIGVvLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5cLAotCWN1cD1cMDM2JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5fLCBlZD1eSywgZWw9Xl0sCi0JaG9tZT1eWSwgaHQ9XkksIGluZD1eVywga2JzPV5ILCBrY2xyPV5YLCBrY3ViMT1eSCwga2N1ZDE9XkosCi0Ja2N1ZjE9XlUsIGtjdXUxPV5LLCBrZGNoMT1cMTc3LCBuZWw9Xk1eVywgcmk9XlYsIHJtc289Xk4sCi0Jc21zbz1eTywKLSMgQXBwbGUgLy9lIHdpdGggODAtY29sdW1uIGNhcmQsIGVudHJ5IGZyb20gQlJMCi0jIFRoZSBtb2RlbSBpbnRlcmZhY2UgaXMgcGVybWl0dGVkIHRvIGRpc2NhcmQgTEYgKG1heWJlIERDMSksIG90aGVyd2lzZQotIyBwYXNzaW5nIGNoYXJhY3RlcnMgdG8gdGhlIDgwLWNvbHVtbiBmaXJtd2FyZSB2aWEgQ09VVCAoUFIjMyBhc3N1bWVkKS4KLSMgQXV0by13cmFwIGRvZXMgbm90IHdvcmsgcmlnaHQgZHVlIHRvIG5ld2xpbmUgc2Nyb2xsaW5nIGRlbGF5LCB3aGljaCBhbHNvCi0jIHJlcXVpcmVzIHRoYXQgeW91IHNldCAic3R0eSBjcjIiLgotIyBOb3RlOiBDdXJzb3IgYWRkcmVzc2luZyBpcyBvbmx5IGF2YWlsYWJsZSB2aWEgdGhlIFBhc2NhbCBWMS4xIGVudHJ5LAotIyBub3QgdmlhIHRoZSBCQVNJQyBQUiMzIGhvb2suICBBbGwgdGhpcyBub25zZW5zZSBjYW4gYmUgYXZvaWRlZCBvbmx5IGJ5Ci0jIHVzaW5nIGEgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0gaW5zdGVhZCBvZiB0aGUgYnVpbHQtaW4gZmlybXdhcmUuCi1hcHBsZTJlfEFwcGxlIC8vZSwKLQlidywgbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVwwMTQkPDEwMC8+LCBjdWIxPV5ILCBjdWQxPV5KLCBjdXUxPV5fLAotCWVkPVwwMTMkPDQqLz4sIGVsPVwwMzUkPDQvPiwgaG9tZT1eWSwgaHQ9XkksIGluZD1eVywKLQlpczI9XlJeTiwga2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5VLCBrY3V1MT1eSywKLQluZWw9XHIkPDEwMC8+LCByZXY9Xk8sIHJpPV5WLCBybXNvPV5OLCByczE9XlJeTiwgc2dyMD1eTiwKLQlzbXNvPV5PLAotIyBtY3ZheCF2dTQ0IXZ1NDUhd2lsY2tlIHVzZXMgdGhlICJhcCIgZW50cnkgdG9nZXRoZXIgd2l0aCBBc2NpaSBFeHByZXNzIFBybwotIyA0LjIwLCB3aXRoIGluY29taW5nIGFuZCBvdXRnb2luZyB0ZXJtaW5hbHMgYm90aCBvbiAwLCBlbXVsYXRpb24gT24uCi1hcHBsZTJlLXB8QXBwbGUgLy9lIHZpYSBQYXNjYWwsCi0JY3VwPVwwMzYlcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGticz1eSCwga2N1YjE9XkgsCi0Ja2N1ZDE9XkosIHVzZT1hcHBsZTJlLAotIyAoQVNDSUkgRXhwcmVzcykgTW91c2VUYWxrICJTdGFuZGFyZCBBcHBsZSAvLyIgZW11bGF0aW9uIGZyb20gQlJMCi0jIEVuYWJsZSBEQzMvREMxIGZsb3cgY29udHJvbCB3aXRoICJzdHR5IGl4b24gLWl4YW55Ii4KLWFwcGxlLWFlfEFTQ0lJIEV4cHJlc3MsCi0JT1RicywgYW0sIGJ3LCBtc2dyLCBueG9uLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYmVsPVwwMDckPDUwMC8+LCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlUsCi0JY3VwPVwwMzYlcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9Xl8sIGVkPV5LLCBlbD1eXSwKLQlob21lPV5ZLCBpbmQ9XlcsIGlzMj1eUl5OLCBrY2xyPV5YLCBrY3ViMT1eSCwga2N1ZDE9XkosCi0Ja2N1ZjE9XlUsIGtjdXUxPV5LLCByZXY9Xk8sIHJpPV5WLCBybXNvPV5OLCByczE9XlJeTiwgc2dyMD1eTiwKLQlzbXNvPV5PLAotYXBwbGVJSXxhcHBsZSBpaSBwbHVzLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPV5MLCBjbm9ybT1eVEMyLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5cLAotCWN1cD1cMDM2JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5fLCBjdnZpcz1eVEM2LAotCWVkPV5LLCBlbD1eXSwgZmxhc2g9XDAyNEcxJDwyMDAvPlwwMjRUMSwgaG9tZT1cRV5ZLCBodD1eSSwKLQlpczI9XDAyNFQxXDAxNiwga2N1ZDE9XkosIGtjdWYxPV5VLCBybXNvPV5OLCBzZ3IwPV5OLAotCXNtc289Xk8sCi0jIE9yaWdpbmFsbHkgYnkgR2FyeSBGb3JkIDIxTk9WODMKLSMgRnJvbTogPGVlMTc4YWNpJXNkY2M3QFNEQ1NWQVguQVJQQT4gIEZyaSBPY3QgMTEgMjE6Mjc6MDAgMTk4NQotYXBwbGUtODB8YXBwbGUgSUkgd2l0aCBzbWFydGVybSA4MCBjb2wsCi0JT1RicywgYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNidD1eUiwgY2xlYXI9XDAxNCQ8MTAqLz4sIGNyPVxyJDwxMCovPiwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5cLCBjdXA9XDAzNiVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1eXywKLQllZD1cMDEzJDwxMCovPiwgZWw9XDAzNSQ8MTAvPiwgaG9tZT1eWSwKLWFwcGxlLXNvcm9jfGFwcGxlIGVtdWxhdGluZyBzb3JvYyAxMjAsCi0JYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRSokPDMwMD4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGVkPVxFWSwgZWw9XEVULAotCWhvbWU9Xl4sIGluZD1eSiwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssCi0jIEZyb20gUGV0ZXIgSGFycmlzb24sIENvbXB1dGVyIEdyYXBoaWNzIExhYiwgU2FuIEZyYW5jaXNjbwotIyAgIHVjYnZheCF1Y3NmbWlzIWhhcnJpc29uICAuLi4uLnV1Y3AKLSMgICB1Y2J2YXghdWNzZm1pcyFoYXJyaXNvbkBCRVJLRUxFWSAgIC4uLi4uLi5BUlBBCi0jICJUaGVzZSB0d28gd29yay4gIElmIHlvdSBkb24ndCBoYXZlIHRoZSBpbnZlcnNlIHZpZGVvIGNoaXAgZm9yIHRoZQotIyBBcHBsZSB3aXRoIHZpZGV4IHRoZW4gcmVtb3ZlIHRoZSA6c286IGFuZCA6c2U6IGZpZWxkcy4iCi0jIChhcHBsZS12aWRleDogdGhpcyB1c2VkIHRvIGJlIGNhbGxlZCBEYWxlQXBwbGUgLS0gZXNyKQotYXBwbGUtdmlkZXh8QXBwbGUgd2l0aCB2aWRleCB2aWRlb3Rlcm0gODAgY29sdW1uIGJvYXJkIHdpdGggaW52ZXJzZSB2aWRlbywKLQlPVGJzLCBhbSwgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQljbGVhcj1cMDE0JDwzMDAvPiwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eXCwKLQljdXA9XDAzNiVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1eXywgZWQ9XkssIGVsPV5dLAotCWhvbWU9XlksIGh0PV5JLCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5VLCBraG9tZT1eWSwKLQlybXNvPV5aMiwgc2dyMD1eWjIsIHNtc289XlozLAotIyBNeSBzeXN0ZW0gW2ZvciByZWZlcmVuY2VdIDogQXBwbGUgXVsrLCA2NEssIFVsdHJhdGVybSBkaXNwbGF5IGNhcmQsCi0jCQkJICAgICAgQXBwbGUgQ2F0IF1bIDIxMiBtb2RlbSwgKyBtb3JlIGFsbAotIwkJCSAgICAgIGNvbnRyb2xsZWQgYnkgQVNDSUkgRXhwcmVzczogUHJvLgotIyBGcm9tIERhdmUgU2hhdmVyIDxpc3VjczEhc2hhdmVyPgotYXBwbGUtdXRlcm0tdmJ8VmlkZXggVWx0cmF0ZXJtIGZvciBBcHBsZSBtaWNyb3Mgd2l0aCBWaXNpYmxlIEJlbGwsCi0JT1RicywgYW0sIGVvLCB4dCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlhY3NjPSwgY2xlYXI9XkwsIGN1ZjE9XlwsCi0JY3VwPVwwMzYlcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9Xl8sIGVkPV5LLCBlbD1eXSwKLQlmbGFzaD1eVzM1XlcwNiwgaG9tZT1eWSwKLQlpczI9XlY0XlcwNlwwMTdcclZpc2libGUgQmVsbCBJbnN0YWxsZWQuXDAxNlxyXG4sCi0Jcm1zbz1eTiwgc21zbz1eTywKLWFwcGxlLXV0ZXJtfFVsdHJhdGVybSBmb3IgQXBwbGUgbWljcm9zLAotCU9UYnMsIGFtLCBlbywgeHQsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYWNzYz0sIGNsZWFyPV5MLCBjdWYxPV5cLAotCWN1cD1cMDM2JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5fLCBlZD1eSywgZWw9Xl0sCi0JaG9tZT1eWSwgaXMyPV5WNF5XMDZcMDE2LCBybXNvPV5OLCBzbXNvPV5PLAotIyBmcm9tIHRyd3JiYSFid29uZyAoQnJhZGxleSBXLiBXb25nKToKLSMKLSMgVGhpcyBlbnRyeSBhc3N1bWVzIHRoYXQgeW91IGFyZSB1c2luZyBhbiBhcHBsZSB3aXRoIHRoZSBVQ1NEIFBhc2NhbAotIyBsYW5ndWFnZSBjYXJkLiAgU1lTVEVNLk1JU0NJTkZPIGlzIGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhhdAotIyBzdXBwbGllZCB3aXRoIHRoZSBzdGFuZGFyZCBhcHBsZSBleGNlcHQgdGhhdCBzY3JlZW53aWR0aCBzaG91bGQgYmUgc2V0Ci0jIHVzaW5nIFNFVFVQIHRvIDgwIGNvbHVtbnMuICBOb3RlIHRoYXQgdGhlIHJpZ2h0IGFycm93IGluIG5vdCBtYXBwZWQgaW4KLSMgdGhpcyB0ZXJtY2FwIGVudHJ5LiAgVGhpcyBpcyBiZWNhdXNlIHRoYXQga2V5LCBvbiB0aGUgQXBwbGUsIHRyYW5zbWl0cwotIyBhIF5VIGFuZCB3b3VsZCB0aHVzIHByZWVtcHQgdGhlIG1vcmUgdXNlZnVsICJ1cCIgZnVuY3Rpb24gb2YgdmkuCi0jCi0jIEhNSCAyLzIzLzgxCi1hcHBsZTgwcHw4MC1jb2x1bW4gYXBwbGUgd2l0aCBQYXNjYWwgY2FyZCwKLQlhbSwgYncsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JY2xlYXI9XlleTCwgY3VmMT1eXFw6LAotCWN1cD1cMDM2JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPV5fLCBlZD1eSywgZWw9Xl0sCi0JaG9tZT1eWSwga2N1YjE9XkgsCi0jCi0jIEFwcGxlIElJKyBlcXVpcHBlZCB3aXRoIFZpZGV4IDgwIGNvbHVtbiBjYXJkCi0jCi0jIFRlcm1pbmZvIGZyb20gaWhucDQhaWh1MWchZGpjMSAoRGF2ZSBDaHJpc3RlbnNlbikgdmlhIEJSTDsKLSMgbWFudWFsbHkgY29udmVydGVkIGJ5IEQgQSBHd3luCi0jCi0jIERPIE5PVCB1c2UgYW55IHRlcm1pbmFsIGVtdWxhdGlvbiB3aXRoIHRoaXMgZGF0YSBiYXNlLCBpdCB3b3JrcyBkaXJlY3RseQotIyB3aXRoIHRoZSBWaWRleCBjYXJkLiAgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCB2aSAxMjAwIGJhdWQgYW5kIHdvcmtzIGZpbmUuCi0jCi0jIFRoaXMgd29ya3MgZ3JlYXQgZm9yIHZpLCBleGNlcHQgSSd2ZSBub3RpY2VkIGluIHByZS1SMiwgXlUgd2lsbCBzY3JvbGwgYmFjawotIyAxIHNjcmVlbiwgd2hpbGUgaW4gUjIgXlUgZG9lc24ndC4KLSMgRm9yIGludmVyc2UgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgYWRkOgotIwk8c21hY3M+PV5POjxybWFjcz49Xk46Ci0jIChhcHBsZS12OiBhZGRlZCBpdCM4IC0tIGVzcikKLWFwcGxlLXZpZGV4MnxBcHBsZSBJSSsgdy8gVmlkZXggY2FyZCAoc2ltaWxhciB0byBEYXRhbWVkaWEgaDE1MjApLAotCWFtLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1cMDA3JDwxMDAvPiwgY2xlYXI9XDAxNCQ8MTYqLz4sIGNyPV5NLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XlwsIGN1cD1cMDM2JXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLAotCWN1dTE9Xl8sIGVkPVwwMTMkPDE2Ki8+LCBlbD1eXSwgaG9tZT1eWSwgaHQ9XDAxMSQ8OC8+LAotCWluZD1eSiwga2JzPV5ILCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5cLCBrY3V1MT1eXywKLQlraG9tZT1eWSwgcm1zbz1eWjIsIHNtc289XlozLAotYXBwbGUtdmlkZXgzfHZhcHBsZXxBcHBsZSBJSSB3aXRoIDgwIGNvbCBjYXJkLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVxFdiwgY3VmMT1cRUMsIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1cRUEsIGVsPVxFeCwgaG9tZT1cRUgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCi0Ja2N1dTE9XEVBLCBrZjA9XEVQLCBrZjE9XEVRLCBrZjI9XEVSLCBrZjM9XEVccywga2Y0PVxFISwKLQlrZjU9XEUiLCBrZjY9XEUjLCBrZjc9XEUkLCBrZjg9XEUlJSwga2Y5PVxFJiwga2hvbWU9XEVILAotI0Zyb206IGRlY3ZheCFjYm9zZ2QhY2Jka2MxIW13dyBNaWtlIFdhcnJlbiB2aWEgQlJMCi1hZXByb3xBcHBsZSBJSSsgcnVubmluZyBBU0NJSSBFeHByZXNzIFByby0tdnQ1MiwKLQlPVGJzLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVwwMTQkPDMwMC8+LCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZWQ9XEVKLAotCWVsPVxFSywgaG9tZT1cRUgsCi0jIFVDU0QgYWRkaXRpb246IFlldCBhbm90aGVyIHRlcm1jYXAgZnJvbSBCcmlhbiBLYW50b3IncyBNaWNybyBNdW5nZXIgRmFjdG9yeQotYXBwbGUtdm04MHxhcC12bTgwfGFwcGxlIHdpdGggdmlld21heC04MCwKLQlPVGJzLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPVwwMTQkPDMwMC8+LCBjdWYxPV5cXDosCi0JY3VwPVwwMzYlcDElezMyfSUrJWMlcDIlezMyfSUrJWMkPDEwMC8+LCBjdXUxPV5fLAotCWVkPVwwMTMkPDMwMC8+LCBlbD1eXSwgaG9tZT1cMDMxJDwyMDAvPiwKLQotIyMjIyBBcHBsZSBMaXNhICYgTWFjaW50b3NoCi0jCi0KLSMgKGxpc2E6IGNoYW5nZWQgPGN2dmlzPiB0byA8Y25vcm0+IC0tIGVzcikKLWxpc2F8YXBwbGUgbGlzYSBjb25zb2xlIGRpc3BsYXkgKGJsYWNrIG9uIHdoaXRlKSwKLQlPVGJzLCBhbSwgZW8sIG1zZ3IsCi0JY29scyM4OCwgaXQjOCwgbGluZXMjMzIsCi0JYWNzYz1qZGtjbGZtZW5icWF0dHV2dnV3c3hgLCBjaXZpcz1cRVs1aCwgY2xlYXI9XkwsCi0JY25vcm09XEVbNWwsIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsIGRsMT1cRVtNLAotCWVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGljaDE9XEVbQCwgaWwxPVxFW0wsCi0JaXMyPVxFPlxFW21cMDE0LCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwgcm1hY3M9XEVbMTBtLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlzZ3IwPVxFW20sIHNtYWNzPVxFWzExbSwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwKLWxpc3difGFwcGxlIGxpc2EgY29uc29sZSBkaXNwbGF5ICh3aGl0ZSBvbiBibGFjayksCi0JaXMyPVxFPlxFWzA7N21cMDE0LCBybXNvPVxFWzA7N20sIHJtdWw9XEVbMDs3bSwKLQlzbXNvPVxFW20sIHNtdWw9XEVbNG0sIHVzZT1saXNhLAotCi0jIGxpc2F0ZXJtIGZyb20gdWx5c3NlcyFnYW1tYSFlcHNpbG9uIW1iMmMhamVkIChKb2huIEUuIER1bmNhbiBJSUkpIHZpYSBCUkw7Ci0jIDxpczI+IHJldmlzZWQgYnkgRmVyZCBCcnVuZGljayA8ZnNicm5AQlJMLkFSUEE+Ci0jCi0jIFRoZXNlIGVudHJpZXMgYXNzdW1lIHRoYXQgdGhlICdBdXRvIFdyYXBhcm91bmQnIGlzIGVuYWJsZWQuCi0jIFhvbi1Yb2ZmIGZsb3cgY29udHJvbCBzaG91bGQgYWxzbyBiZSBlbmFibGVkLgotIwotIyBUaGUgdnQxMDAgdXNlcyA6cnMyOiBhbmQgOnJmOiByYXRoZXIgdGhhbiA6aXMyOi86dGJjOi86aHRzOiBiZWNhdXNlIHRoZSB0YWIKLSMgc2V0dGluZ3MgYXJlIGluIG5vbi12b2xhdGlsZSBtZW1vcnkgYW5kIGRvbid0IG5lZWQgdG8gYmUgcmVzZXQgdXBvbiBsb2dpbi4KLSMgQWxzbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YgY29sdW1ucyBnbGl0Y2hlcyB0aGUgc2NyZWVuIGFubm95aW5nbHkuCi0jIFlvdSBjYW4gdHlwZSAicmVzZXQiIHRvIGdldCB0aGVtIHNldC4KLSMKLWxpc2F0ZXJtfEFwcGxlIExpc2Egb3IgTGlzYS8yIHJ1bm5pbmcgTGlzYVRlcm0gdnQxMDAgZW11bGF0aW9uLAotCU9UYnMsIE9UcHQsIGFtLCB4ZW5sLCB4b24sCi0JT1RrbiM0LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgdnQjMywKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGVkPVxFW0osCi0JZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFT0QsCi0Ja2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YwPVxFT1AsIGtmMT1cRU9RLAotCWtmMj1cRU9SLCBrZjM9XEVPUywgbGYwPUYxLCBsZjE9RjIsIGxmMj1GMywgbGYzPUY0LCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczE9XEU+XEVbPzFsXEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoXEVbMTsyNHIsCi0Jc2M9XEU3LCBzZ3IwPVxFW20sIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywKLSMgTGlzYXRlcm0gaW4gMTMyIGNvbHVtbiAoIndpZGUiKSBtb2RlLgotbGlzYXRlcm0td3xBcHBsZSBMaXNhIHdpdGggTGlzYXRlcm0gaW4gMTMyIGNvbHVtbiBtb2RlLAotCWNvbHMjMTMyLAotCWticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCB1c2U9bGlzYXRlcm0sCi0jIEFsdGhvdWdoIE1hY1Rlcm1pbmFsIGhhcyBpbnNlcnQvZGVsZXRlIGxpbmUsIGl0IGlzIGNvbW1lbnRlZCBvdXQgaGVyZQotIyBzaW5jZSBpdCBpcyBtdWNoIGZhc3RlciBhbmQgY2xlYW5lciB0byB1c2UgdGhlICJsb2NrIHNjcm9sbGluZyByZWdpb24iCi0jIG1ldGhvZCBvZiBpbnNlcnRpbmcgYW5kIGRlbGV0aW5nIGxpbmVzIGR1ZSB0byB0aGUgTWFjVGVybWluYWwgaW1wbGVtZW50YXRpb24uCi0jIEFsc28sIHRoZSAiSW5zZXJ0L2RlbGV0ZSBjaCIgc3RyaW5ncyBoYXZlIGFuIGV4dHJhIGNoYXJhY3RlciBhcHBlbmRlZCB0byB0aGVtCi0jIGR1ZSB0byBhIGJ1ZyBpbiBNYWNUZXJtaW5hbCBWMS4xLiAgQmxpbmsgaXMgZGlzYWJsZWQgc2luY2UgaXQgaXMgbm90Ci0jIHN1cHBvcnRlZCBieSBNYWNUZXJtaW5hbC4KLW1hY3xtYWNpbnRvc2h8TWFjaW50b3NoIHdpdGggTWFjVGVybWluYWwsCi0JeGVubCwKLQlPVGROIzMwLAotCWJsaW5rQCwgZGNoMT1cRVtQJDw3Lz4sIGljaDE9XEVbQCQ8OS8+LCBpcD0kPDcvPiwgdXNlPWxpc2EsCi0jIExpc2F0ZXJtIGluIDEzMiBjb2x1bW4gKCJ3aWRlIikgbW9kZS4KLW1hYy13fG1hY3Rlcm1pbmFsLXd8QXBwbGUgTWFjaW50b3NoIHdpdGggTWFjdGVybWluYWwgaW4gMTMyIGNvbHVtbiBtb2RlLAotCWNvbHMjMTMyLCB1c2U9bWFjLAotCi0jIFRoZSBBcHBLaXQgVGVybWluYWwuYXBwIGRlc2NyaXB0aW9ucyBhbGwgaGF2ZSBuYW1lcyBiZWdpbm5pbmcgd2l0aAotIyAibnN0ZXJtIi4gTm90ZSB0aGF0IHRoZSBzdGF0dXNsaW5lICgtcykgdmVyc2lvbnMgdXNlIHRoZSB3aW5kb3cKLSMgdGl0bGViYXIgYXMgYSBwaG9ueSBzdGF0dXMgbGluZSwgYW5kIG1heSBwcm9kdWNlIHdhcm5pbmdzIGR1cmluZwotIyBjb21waWxhdGlvbiBhcyBhIHJlc3VsdCAoInRzbCB1c2VzIDAgcGFyYW1ldGVycywgZXhwZWN0ZWQgMSIuKSBJZ25vcmUKLSMgdGhlc2Ugd2FybmluZ3MsIG9yIGV2ZW4gaWdub3JlIHRoZXNlIGVudHJpZXMgZW50aXJlbHkuIEFwcHMgd2hpY2gKLSMgbmVlZCB0byBwb3NpdGlvbiB0aGUgY3Vyc29yIG9yIGRvIG90aGVyIGZhbmN5IHN0dWZmIGluc2lkZSB0aGUgc3RhdHVzCi0jIGxpbmUgd29uJ3Qgd29yayB3aXRoIHRoZXNlIGVudHJpZXMuIFRoZXkncmUgcHJpbWFyaWx5IHVzZWZ1bCBmb3IKLSMgcHJvZ3JhbXMgbGlrZSBQaW5lIHdoaWNoIHByb3ZpZGUgc2ltcGxlIG5vdGlmaWNhdGlvbnMgaW4gdGhlIHN0YXR1cwotIyBsaW5lLiBQbGVhc2Ugbm90ZSB0aGF0IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGRvbid0IHdvcmsgcmlnaHQgaW4gdGhlCi0jIHN0YXR1cyBsaW5lLCBzaW5jZSBUZXJtaW5hbC5hcHAgaW5jb3JyZWN0bHkgaW50ZXJwcmV0cyB0aGVpciBVbmljb2RlCi0jIGNvZGVwb2ludHMgYXMgTWFjUm9tYW4gY29kZXBvaW50cy4KLSMKLSMgKiBSZW5hbWVkIHRoZSBBcHBLaXQgVGVybWluYWwuYXBwIGVudHJ5IGZyb20gIkFwcGxlX1Rlcm1pbmFsIiB0bwotIyAgICJuc3Rlcm0iIHRvIGNvbXBseSB3aXRoIHRoZSBuYW1lIGxlbmd0aCBhbmQgY2FzZSBjb252ZW50aW9ucyBhbmQKLSMgICBsaW1pdGF0aW9ucyBvZiB2YXJpb3VzIHNvZnR3YXJlIHBhY2thZ2VzIFtub3RhYmx5IFNvbGFyaXMgdGVybWluZm8KLSMgICBhbmQgVU5JWC5dIEEgc2luZ2xlIEFwcGxlX1Rlcm1pbmFsIGFsaWFzIGlzIHJldGFpbmVkIGZvcgotIyAgIGJhY2t3YXJkcy1jb21wYXRiaWxpdHkuCi0jCi0jICogQWRkZWQgZnVuY3Rpb24ga2V5IHN1cHBvcnQgKEYxLUY0KS4gVGhlc2Ugb25seSB3b3JrIGluIFRlcm1pbmFsLmFwcAotIyAgIHZlcnNpb24gNTEsIGhvcGVmdWxseSB0aGUgY2FwYWJpbGl0aWVzIHdvbid0IGNhdXNlIHByb2JsZW1zIGZvciBwZW9wbGUKLSMgICB1c2luZyB2ZXJzaW9uIDQxLgotIwotIyAqIEFkZGVkICJmdWxsIGNvbG9yIiAoLWMpIGVudHJpZXMgd2hpY2ggc3VwcG9ydCB0aGUgMTYtY29sb3IgbW9kZSBpbgotIyAgIHZlcnNpb24gNTEuCi0jCi0jICogQnkgZGVmYXVsdCwgdmVyc2lvbiA1MSB1c2VzIFVURi04IGVuY29kaW5nIHdpdGggYnJva2VuIGFsdGNoYXJzZXQKLSMgICBzdXBwb3J0LCBzbyAiQVNDSUkiICgtNykgZW50cmllcyB3aXRob3V0IGFsdGNoYXJzZXQgc3VwcG9ydCB3ZXJlCi0jICAgYWRkZWQuCi0KLSMgbnN0ZXJtIC0gQXBwS2l0IFRlcm1pbmFsLmFwcAotIwotIyBBcHBsZSdzIE1hYyBPUyBYIGluY2x1ZGVzIGEgVGVybWluYWwuYXBwIGRlcml2ZWQgZnJvbSB0aGUgb2xkIE5lWFQKLSMgVGVybWluYWwuYXBwLiBJdCBpcyBhIHBhcnRpYWwgVlQxMDAgZW11bGF0aW9uIHdpdGggc29tZSB4dGVybS1saWtlCi0jIGV4dGVuc2lvbnMuIFRoaXMgdGVybWluZm8gd2FzIHdyaXR0ZW4gdG8gZGVzY3JpYmUgdmVyc2lvbnMgNDEKLSMgKHNoaXBwZWQgd2l0aCBNYWMgT1MgWCB2ZXJzaW9uIDEwLjApIGFuZCA1MSAoc2hpcHBlZCB3aXRoIE1hYyBPUyBYCi0jIHZlcnNpb24gMTAuMSkgb2YgVGVybWluYWwuYXBwLgotIwotIyBUZXJtaW5hbC5hcHAgcnVucyB1bmRlciB0aGUgTWFjIE9TIFggUXVhcnR6IHdpbmRvd2luZyBzeXN0ZW0gKGFuZAotIyBvdGhlciBBcHBLaXQtc3VwcG9ydGVkIHdpbmRvd2luZyBzeXN0ZW1zLikgIE9uIHRoZSBNYWMgT1MgWCBtYWNoaW5lIEkKLSMgdXNlLCB0aGUgZXhlY3V0YWJsZSBmb3IgVGVybWluYWwuYXBwIGlzOgotIyAvQXBwbGljYXRpb25zL1V0aWxpdGllcy9UZXJtaW5hbC5hcHAvQ29udGVudHMvTWFjT1MvVGVybWluYWwKLSMKLSMgSWYgeW91J3JlIGxvb2tpbmcgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZ1bGwtc2NyZWVuIHN5c3RlbQotIyBjb25zb2xlIHdoaWNoIHJ1bnMgdW5kZXIgQXBwbGUncyBEYXJ3aW4gb3BlcmF0aW5nIHN5c3RlbSBvbiBQb3dlclBDCi0jIHBsYXRmb3Jtcywgc2VlIHRoZSAieG51cHBjIiBlbnRyeSBpbnN0ZWFkLgotIwotIyBUaGVyZSB3ZXJlIG5vIGZ1bmN0aW9uIGtleXMgaW4gdmVyc2lvbiA0MS4gSW4gdmVyc2lvbiA1MSwgdGhlcmUgYXJlCi0jIGZvdXIgd29ya2luZyBmdW5jdGlvbiBrZXlzIChGMSwgRjIsIEYzIGFuZCBGNC4pIFRoZSBmdW5jdGlvbiBrZXlzCi0jIGFyZSBpbmNsdWRlZCBpbiBhbGwgb2YgdGhlc2UgZW50cmllcy4KLSMKLSMgSXQgZG9lcyBub3Qgc3VwcG9ydCBtb3VzZSBwb2ludGVyIHBvc2l0aW9uIHJlcG9ydGluZy4gVW5kZXIgc29tZQotIyBjaXJjdW1zdGFuY2VzIHRoZSBjdXJzb3IgY2FuIGJlIHBvc2l0aW9uZWQgdXNpbmcgb3B0aW9uLWNsaWNrOyB0aGlzCi0jIHdvcmtzIGJ5IGNvbXBhcmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIGFuZCB0aGUgc2VsZWN0ZWQgcG9zaXRpb24sCi0jIGFuZCBzaW11bGF0aW5nIGVub3VnaCBjdXJzb3Ita2V5IHByZXNzZXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIHRoZQotIyBzZWxlY3RlZCBwb3NpdGlvbi4gVGhpcyB0ZWNobmlxdWUgZmFpbHMgaW4gYWxsIGJ1dCB0aGUgc2ltcGxlc3QKLSMgYXBwbGljYXRpb25zLgotIwotIyBJdCBwcm92aWRlcyBwYXJ0aWFsIEFOU0kgY29sb3Igc3VwcG9ydCAoYmFja2dyb3VuZCBjb2xvcnMgaW50ZXJhY3RlZAotIyBiYWRseSB3aXRoIGJvbGQgaW4gdmVyc2lvbiA0MSwgdGhvdWdoLCBhcyByZWZsZWN0ZWQgaW4gOm5jdjouKSBUaGUKLSMgbW9ub2Nocm9tZSAoLW0pIGVudHJpZXMgYXJlIHVzZWZ1bCBpZiB5b3UndmUgZGlzYWJsZWQgY29sb3Igc3VwcG9ydAotIyBvciB1c2UgYSBtb25vY2hyb21lIG1vbml0b3IuIFRoZSBmdWxsIGNvbG9yICgtYykgZW50cmllcyBhcmUgdXNlZnVsCi0jIGluIHZlcnNpb24gNTEsIHdoaWNoIGRvZXNuJ3QgZXhoaWJpdCB0aGUgYmFja2dyb3VuZCBjb2xvciBidWcuIFRoZXkKLSMgYWxzbyBlbmFibGUgYW4geHRlcm0tY29tcGF0aWJsZSAxNi1jb2xvciBtb2RlLgotIwotIyBUaGUgY29uZmlndXJhYmxlIHRpdGxlYmFyIGlzIHNldCB1c2luZyB4dGVybS1jb21wYXRpYmxlIHNlcXVlbmNlczsKLSMgaXQgaXMgdXNlZCBhcyBhIHN0YXR1cyBiYXIgaW4gdGhlIHN0YXR1c2xpbmUgKC1zKSBlbnRyaWVzLiBJdHMgd2lkdGgKLSMgZGVwZW5kcyBvbiBmb250IHNpemVzIGFuZCB3aW5kb3cgc2l6ZXMsIGJ1dCA1MCBjaGFyYWN0ZXJzIHNlZW1zIHRvCi0jIGJlIHRoZSBkZWZhdWx0IGZvciBhbiA4MHgyNCB3aW5kb3cuCi0jCi0jIFRoZSBNYWNSb21hbiBjaGFyYWN0ZXIgZW5jb2RpbmcgaXMgdXNlZCBmb3Igc29tZSBvZiB0aGUgYWx0ZXJuYXRlCi0jIGNoYXJhY3RlcnMgaW4gdGhlICJNYWNSb21hbiIgZW50cmllczsgdGhlICJBU0NJSSIgKC03KSBlbnRyaWVzCi0jIGRpc2FibGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgc3VwcG9ydCBlbnRpcmVseSwgYW5kIHRoZSAiVlQxMDAiCi0jICgtYWNzKSBlbnRyaWVzIHJlbHkgaW5zdGVhZCBvbiBUZXJtaW5hbC5hcHAncyBvd24gYnVnZ3kgVlQxMDAKLSMgZ3JhcGhpY3MgZW11bGF0aW9uLCB3aGljaCBzZWVtcyB0byB0aGluayB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGlzCi0jIHRoZSBvbGQgTmVYVCBjaGFyc2V0IGluc3RlYWQgb2YgTWFjUm9tYW4uIFRoZSAiQVNDSUkiICgtNykgZW50cmllcwotIyBhcmUgdXNlZnVsIGluIFRlcm1pbmFsLmFwcCB2ZXJzaW9uIDUxLCB3aGljaCBzdXBwb3J0cyBVVEYtOCBhbmQKLSMgb3RoZXIgQVNDSUktY29tcGF0aWJsZSBjaGFyYWN0ZXIgZW5jb2RpbmdzIGJ1dCBkb2VzIG5vdCBjb3JyZWN0bHkKLSMgaW1wbGVtZW50IFZUMTAwIGdyYXBoaWNzOyBvbmNlIFZUMTAwIGdyYXBoaWNzIGFyZSBjb3JyZWN0bHkKLSMgaW1wbGVtZW50ZWQgaW4gVGVybWluYWwuYXBwLCB0aGUgIlZUMTAwIiAoLWFjcykgZW50cmllcyBzaG91bGQgYmUKLSMgdXNhYmxlIGluIGFueSBBU0NJSS1jb21wYXRpYmxlIGNoYXJhY3RlciBlbmNvZGluZyBbZXhjZXB0IHBlcmhhcHMKLSMgaW4gVVRGLTgsIHdoZXJlIHNvbWUgZXhwZXJ0cyBhcmd1ZSBmb3IgZGlzYWxsb3dpbmcgYWx0ZXJuYXRlCi0jIGNoYXJhY3RlcnMgZW50aXJlbHkuXQotIwotIyBUZXJtaW5hbC5hcHAgcmVwb3J0cyAidnQxMDAiIGFzIHRoZSB0ZXJtaW5hbCB0eXBlLCBidXQgZXhwb3J0cwotIyBzZXZlcmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBtYXkgYWlkIGRldGVjdGlvbiBpbiBhIHNoZWxsCi0jIHByb2ZpbGUgKGkuZS4gLnByb2ZpbGUgb3IgLmxvZ2luKToKLSMKLSMgVEVSTT12dDEwMAotIyBURVJNX1BST0dSQU09QXBwbGVfVGVybWluYWwKLSMgVEVSTV9QUk9HUkFNX1ZFUlNJT049NDEgICAgICAjIGluIFRlcm1pbmFsLmFwcCB2ZXJzaW9uIDQxCi0jIFRFUk1fUFJPR1JBTV9WRVJTSU9OPTUxICAgICAgIyBpbiBUZXJtaW5hbC5hcHAgdmVyc2lvbiA1MQotIwotIyBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBCb3VybmUgc2hlbGwgc2NyaXB0IHdvdWxkIGRldGVjdCB0aGUKLSMgY29ycmVjdCB0ZXJtaW5hbCB0eXBlOgotIwotIyBpZiBbIDoiJFRFUk0iID0gOiJ2dDEwMCIgLWEgOiIkVEVSTV9QUk9HUkFNIiA9IDoiQXBwbGVfVGVybWluYWwiIF0KLSMgdGhlbgotIyAgICAgZXhwb3J0IFRFUk0KLSMgICAgIGlmIFsgOiIkVEVSTV9QUk9HUkFNX1ZFUlNJT04iID0gOjQxIF0KLSMgICAgIHRoZW4KLSMgICAgICAgICBURVJNPSJuc3Rlcm0iCi0jICAgICBlbHNlCi0jICAgICAgICAgVEVSTT0ibnN0ZXJtLWMtNyIKLSMgICAgIGZpCi0jIGZpCi0jCi0jIEluIGEgQyBzaGVsbCBkZXJpdmF0aXZlLCB0aGlzIHdvdWxkIGJlIGFjY29tcGxpc2hlZCBieToKLSMKLSMgaWYgKCAkP1RFUk0gJiYgJD9URVJNX1BST0dSQU0gJiYgJD9URVJNX1BST0dSQU1fVkVSU0lPTikgdGhlbgotIyAgICAgaWYgKCA6IiRURVJNIiA9PSA6InZ0MTAwIiAmJiA6IiRURVJNX1BST0dSQU0iID09IDoiQXBwbGVfVGVybWluYWwiICkgdGhlbgotIyAgICAgICAgICBpZiAoIDoiJFRFUk1fUFJPR1JBTV9WRVJTSU9OIiA9PSA6NDEgKSB0aGVuCi0jICAgICAgICAgICAgICBzZXRlbnYgVEVSTSAibnN0ZXJtIgotIyAgICAgICAgICBlbHNlCi0jICAgICAgICAgICAgICBzZXRlbnYgVEVSTSAibnN0ZXJtLWMtNyIKLSMgICAgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jIGVuZGlmCi0KLSMgVGhlICcrJyBlbnRyaWVzIGFyZSBidWlsZGluZyBibG9ja3MKLW5zdGVybSs3fEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyBiYXNpYyBjYXBhYmlsaXRpZXMgdy9BU0NJSSBjaGFyc2V0LAotCWFtLCBidywgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGVsMT1cRVsxSywKLQlob21lPVxFW0gsIGh0PV5JLCBodHM9XEVILCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0Ja2JzPVwxNzcsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2VudD1cRU9NLCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLCBybWFtPVxFWz83bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0JcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwgc2M9XEU3LAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20sCi0Jc2dyMD1cRVttXDAxNywgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPXZ0MTAwK2VucSwgdXNlPXZ0MTAwK3Bma2V5cywKLQotbnN0ZXJtK2Fjc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgYmFzaWMgY2FwYWJpbGl0aWVzIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQllbmFjcz1cRShCXEUpMCwgcm1hY3M9Xk8sCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclOyU/JXA0JXQ7NSU7bSU/JXA5JXRcMDE2JWVcMDE3JTssCi0Jc21hY3M9Xk4sIHVzZT1uc3Rlcm0rNywKLQotbnN0ZXJtK21hY3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgYmFzaWMgY2FwYWJpbGl0aWVzIHcvTWFjUm9tYW4gYWx0ZXJuYXRlLWNoYXJzZXQsCi0JYWNzYz0wI2BcMzI3YVw6ZlwyNDFnXDI2MWgjaVwzNjBqamtrbGxtbW5ub1wzNzBwXDM3MHFcMzIxcnJzc3R0dXV2dnd3eHh5XDI2MnpcMjYze1wyNzF8XDI1NX1cMjQzflwyNDUrXDMzNS1cMzY2XCxcMzM0LlwzNzcsCi0JZW5hY3M9XEUoQlxFKTAsIHJtYWNzPV5PLAotCXNncj1cRVswJT8lcDYldDsxJTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTslPyVwNCV0OzUlO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNtYWNzPV5OLCB1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybStzfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyBzdGF0dXMtbGluZSAod2luZG93IHRpdGxlYmFyKSBzdXBwb3J0LAotCWhzLAotCXdzbCM1MCwKLQlkc2w9XEVdMjtcMDA3LCBmc2w9XkcsIHRzbD1cRV0yOywKLQotbnN0ZXJtK2N8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIGZ1bGwgY29sb3Igc3VwcG9ydCAoaW5jbHVkaW5nIDE2IGNvbG9ycyksCi0Jb3A9XEVbMG0sIHVzZT1pYm0rMTZjb2xvciwKLQotbnN0ZXJtK2M0MXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSBjb2xvciBzdXBwb3J0LAotCWNvbG9ycyM4LCBuY3YjMzcsIHBhaXJzIzY0LAotCW9wPVxFWzBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi0jIFRoZXNlIGFyZSBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIHRoZSBidWlsZGluZyBibG9ja3MKLQotIyBBU0NJSSBjaGFyc2V0ICgtNykKLW5zdGVybS1tLTd8bnN0ZXJtLTctbXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9BU0NJSSBjaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybS1tLXMtN3xuc3Rlcm0tNy1tLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAobW9ub2Nocm9tZSB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybSs3LAotCi1uc3Rlcm0tN3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9BU0NJSSBjaGFyc2V0IChjb2xvciksCi0JdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rNywKLQotbnN0ZXJtLTctY3xuc3Rlcm0tYy03fEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L0FTQ0lJIGNoYXJzZXQgKGZ1bGwgY29sb3IpLAotCXVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSs3LAotCi1uc3Rlcm0tcy03fG5zdGVybS03LXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvQVNDSUkgY2hhcnNldCAoY29sb3Igdy9zdGF0dXNsaW5lKSwKLQl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYzQxLCB1c2U9bnN0ZXJtKzcsCi0KLW5zdGVybS1jLXMtN3xuc3Rlcm0tNy1jLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvQVNDSUkgY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtKzcsCi0KLSMgVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQgKC1hY3MpCi1uc3Rlcm0tbS1hY3N8bnN0ZXJtLWFjcy1tfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtK2FjcywKLQotbnN0ZXJtLW0tcy1hY3N8bnN0ZXJtLWFjcy1tLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NDErIHcvVlQxMDAgYWx0ZXJuYXRlLWNoYXJzZXQgKG1vbm9jaHJvbWUgdy9zdGF0dXNsaW5lKSwKLQl1c2U9bnN0ZXJtK3MsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYWNzfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChjb2xvciksCi0JdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYy1hY3N8bnN0ZXJtLWFjcy1jfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChmdWxsIGNvbG9yKSwKLQl1c2U9bnN0ZXJtK2MsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tcy1hY3N8bnN0ZXJtLWFjcy1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L1ZUMTAwIGFsdGVybmF0ZS1jaGFyc2V0IChjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjNDEsIHVzZT1uc3Rlcm0rYWNzLAotCi1uc3Rlcm0tYy1zLWFjc3xuc3Rlcm0tYWNzLWMtc3xBcHBLaXQgVGVybWluYWwuYXBwIHY1MSsgdy9WVDEwMCBhbHRlcm5hdGUtY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK2FjcywKLQotIyBNYWNSb21hbiBjaGFyc2V0Ci1uc3Rlcm0tbXxBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9NYWNSb21hbiBjaGFyc2V0IChtb25vY2hyb21lKSwKLQl1c2U9bnN0ZXJtK21hYywKLQotbnN0ZXJtLW0tc3xBcHBLaXQgVGVybWluYWwuYXBwIHY0MSsgdy9NYWNSb21hbiBjaGFyc2V0IChtb25vY2hyb21lIHcvc3RhdHVzbGluZSksCi0JdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK21hYywKLQotbnN0ZXJtfEFwcGxlX1Rlcm1pbmFsfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGNvbG9yKSwKLQl1c2U9bnN0ZXJtK2M0MSwgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1jfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjUxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGZ1bGwgY29sb3IpLAotCXVzZT1uc3Rlcm0rYywgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1zfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjQxKyB3L01hY1JvbWFuIGNoYXJzZXQgKGNvbG9yIHcvc3RhdHVzbGluZSksCi0JdXNlPW5zdGVybStzLCB1c2U9bnN0ZXJtK2M0MSwgdXNlPW5zdGVybSttYWMsCi0KLW5zdGVybS1jLXN8QXBwS2l0IFRlcm1pbmFsLmFwcCB2NTErIHcvTWFjUm9tYW4gY2hhcnNldCAoZnVsbCBjb2xvciB3L3N0YXR1c2xpbmUpLAotCXVzZT1uc3Rlcm0rcywgdXNlPW5zdGVybStjLCB1c2U9bnN0ZXJtK21hYywKLQotCi0jIFRoaXMgZW50cnkgaXMgYmFzZWQgb24gbmV3c2dyb3VwIGNvbW1lbnRzIGJ5IEFsYWluIEJlbmNoLCBDaHJpc3RpYW4gRWJlcnQsCi0jIGFuZCBEIFAgU2NocmViZXIgY29tcGFyaW5nIHRvIG5zdGVybS1jLXMtYWNzLgotIwotIyBEIFAgU2NocmViZXIgbm90ZXMgdGhhdCAkVEVSTSBjYW4gYmUgc2V0IGluIFRlcm1pbmFsLmFwcCwgZS5nLiwKLSMJZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLlRlcm1pbmFsIFRlcm1DYXBTdHJpbmcgbnN0ZXJtLWMtcy1hY3MKLSMgYW5kIHRoYXQgaXQgaXMgbm90IHNldCBpbiBUZXJtaW5hbCdzIHByZWZlcmVuY2VzIGRpYWxvZy4KLW5zdGVybS0xNmNvbG9yfEFwcEtpdCBUZXJtaW5hbC5hcHAgdjEwMC4xLjggd2l0aCBNYWNPUyBYIDEwLjMuOSwKLQlrZGNoMT1cRVszfiwga2YxMD1cRVsyMX4sIGtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwKLQlrZjU9XEVbMTV+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LAotCWtucD1cRVs2fiwga3BwPVxFWzV+LCB1c2U9bnN0ZXJtLWMtcy1hY3MsCi0KLSMgeG51cHBjIC0gRGFyd2luIFBvd2VyUEMgQ29uc29sZSAoYS5rLmEuICJkYXJ3aW4iKQotIwotIyBPbiBQb3dlclBDIHBsYXRmb3JtcywgQXBwbGUncyBEYXJ3aW4gb3BlcmF0aW5nIHN5c3RlbSB1c2VzIGEKLSMgZnVsbC1zY3JlZW4gc3lzdGVtIGNvbnNvbGUgZGVyaXZlZCBmcm9tIGEgTmV0QlNEIGZyYW1lYnVmZmVyCi0jIGNvbnNvbGUuIEl0IGlzIGFuIEFOU0ktc3R5bGUgdGVybWluYWwsIGFuZCBpcyBub3QgcmVhbGx5IFZULTEwMAotIyBjb21wYXRpYmxlLgotIwotIyBVbmRlciBNYWMgT1MgWCwgdGhpcyBpcyB0aGUgc3lzdGVtIGNvbnNvbGUgZHJpdmVyIHVzZWQgd2hpbGUgaW4KLSMgc2luZ2xlLXVzZXIgbW9kZSBbcmVhY2hhYmxlIGJ5IGhvbGRpbmcgZG93biBDb21tYW5kLVMgZHVyaW5nIHRoZQotIyBib290IHByb2Nlc3NdIGFuZCB3aGVuIGxvZ2dlZCBpbiB1c2luZyBjb25zb2xlIG1vZGUgW3JlYWNoYWJsZSBieQotIyB0eXBpbmcgIj5jb25zb2xlIiBhdCB0aGUgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC5dCi0jCi0jIElmIHlvdSdyZSBsb29raW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBUZXJtaW5hbC5hcHAgdGVybWluYWwKLSMgZW11bGF0b3Igd2hpY2ggcnVucyB1bmRlciB0aGUgTWFjIE9TIFggUXVhcnR6IHdpbmRvd2luZyBzeXN0ZW0gKGFuZAotIyBvdGhlciBBcHBLaXQtc3VwcG9ydGVkIHdpbmRvd2luZyBzeXN0ZW1zLCkgc2VlIHRoZSAibnN0ZXJtIgotIyBlbnRyeSBpbnN0ZWFkLgotIwotIyBOT1RFOiBVbmRlciBNYWMgT1MgWCB2ZXJzaW9uIDEwLjEsIHRoZSBkZWZhdWx0IGxvZ2luIHdpbmRvdyBkb2VzIG5vdAotIyBwcm9tcHQgZm9yIHVzZXIgbmFtZSwgaW5zdGVhZCByZXF1aXJpbmcgYW4gaWNvbiB0byBiZSBzZWxlY3RlZCBmcm9tCi0jIGEgbGlzdCBvZiBrbm93biB1c2Vycy4gU2luY2UgdGhlIHNwZWNpYWwgIj5jb25zb2xlIiBsb2dpbiBpcyBub3QgaW4KLSMgdGhpcyBsaXN0LCB5b3UgbXVzdCBtYWtlIG9uZSBvZiB0d28gY2hhbmdlcyBpbiB0aGUgTG9naW4gV2luZG93Ci0jIHBhbmVsIG9mIHRoZSBMb2dpbiBzZWN0aW9uIG9mIFN5c3RlbSBQcmVmcyB0byBtYWtlIHRoZSBzcGVjaWFsCi0jICI+Y29uc29sZSIgbG9naW4gYWNjZXNzaWJsZS4gVGhlIGZpcnN0IG9wdGlvbiBpcyB0byBlbmFibGUgJ1Nob3cKLSMgIk90aGVyIFVzZXIiIGluIGxpc3QgZm9yIG5ldHdvcmsgdXNlcnMnLCB3aGljaCB3aWxsIGFkZCBhIHNwZWNpYWwKLSMgIk90aGVyLi4uIiBpY29uIHRvIHRoZSBncmFwaGljYWwgbG9naW4gcGFuZWwuIFNlbGVjdGluZyAiT3RoZXIuLi4iCi0jIHdpbGwgcHJlc2VudCB0aGUgcmVndWxhciBncmFwaGljYWwgbG9naW4gcHJvbXB0LiBUaGUgc2Vjb25kIG9wdGlvbgotIyBpcyB0byBjaGFuZ2UgdGhlICdEaXNwbGF5IExvZ2luIFdpbmRvdyBhczonIHNldHRpbmcgdG8gJ05hbWUgYW5kCi0jIHBhc3N3b3JkIGVudHJ5IGZpZWxkcycsIHdoaWNoIHJlcGxhY2VzIHRoZSBsb2dpbiBwYW5lbCB3aXRoIGEKLSMgZ3JhcGhpY2FsIGxvZ2luIHByb21wdC4KLSMKLSMgVGhlcmUgYXJlIG5vIGZ1bmN0aW9uIGtleXMsIGF0IGxlYXN0IG5vdCBpbiBEYXJ3aW4gMS4zLgotIwotIyBJdCBoYXMgbm8gbW91c2Ugc3VwcG9ydC4KLSMKLSMgSXQgaGFzIGZ1bGwgQU5TSSBjb2xvciBzdXBwb3J0LCBhbmQgY29sb3IgY29tYmluZXMgY29ycmVjdGx5IHdpdGgKLSMgYWxsIHRocmVlIHN1cHBvcnRlZCBhdHRyaWJ1dGVzOiBib2xkLCBpbnZlcnNlLXZpZGVvIGFuZCB1bmRlcmxpbmUuCi0jIEhvd2V2ZXIsIGJvbGQgY29sb3JlZCB0ZXh0IGlzIGFsbW9zdCB1bnJlYWRhYmxlIChib2xkaW5nIGlzCi0jIGFjY29tcGxpc2hlZCB1c2luZyBzaGlmdGluZyBhbmQgb3ItaW5nLCBhbmQgbG9va3Mgc21lYXJlZCkgc28gYm9sZAotIyBoYXMgYmVlbiBleGNsdWRlZCBmcm9tIHRoZSBsaXN0IG9mIGNvbG9yLWNvbXBhdGlibGUgYXR0cmlidXRlcwotIyBbdXNpbmcgKG5jdildLiBUaGUgbW9ub2Nocm9tZSBlbnRyeSAoLW0pIGlzIHVzZWZ1bCBpZiB5b3UgdXNlIGEKLSMgbW9ub2Nocm9tZSBtb25pdG9yLgotIwotIyBUaGVyZSBpcyBvbmUgc2VyaW91cyBidWcgd2l0aCB0aGlzIHRlcm1pbmFsIGVtdWxhdGlvbidzIGNvbG9yCi0jIHN1cHBvcnQ6IHJlcG9zaXRpb25pbmcgdGhlIGN1cnNvciBvbnRvIGEgY2VsbCB3aXRoIG5vbi1tYXRjaGluZwotIyBjb2xvcnMgb2JsaXRlcmF0ZXMgdGhhdCBjZWxsJ3MgY29udGVudHMsIHJlcGxhY2luZyBpdCB3aXRoIGEgYmxhbmsKLSMgYW5kIGRpc3BsYXlpbmcgYSBjb2xvcmVkIGN1cnNvciBpbiB0aGUgImN1cnJlbnQiIGNvbG9ycy4gVGhlcmUgaXMKLSMgbm8gY29tcGxldGUgd29ya2Fyb3VuZCBhdCBwcmVzZW50IFtvdGhlciB0aGFuIHVzaW5nIHRoZSBtb25vY2hyb21lCi0jICgtbSkgZW50cmllcyxdIGJ1dCByZW1vdmluZyB0aGUgKG1zZ3IpIGNhcGFiaWxpdHkgc2VlbWVkIHRvIGhlbHAuCi0jCi0jIFRoZSAic3RhbmRvdXQiIGNob3NlbiB3YXMgc2ltcGxlIHJldmVyc2UtdmlkZW8sIGFsdGhvdWdoIGEgY29sb3JmdWwKLSMgc3RhbmRvdXQgbWlnaHQgYmUgbW9yZSBhZXN0aGV0aWNhbGx5IHBsZWFzaW5nLiBTaW1pbGFybHksIHRoZSBib2xkCi0jIGNob3NlbiBpcyB0aGUgdGVybWluYWwncyBvd24gc21lYXJlZCBib2xkLCBhbHRob3VnaCBhIHNpbXBsZQotIyBjb2xvci1jaGFuZ2UgbWlnaHQgYmUgbW9yZSByZWFkYWJsZS4gVGhlIGNvbG9yLWJvbGQgKC1iKSBlbnRyaWVzCi0jIHVzZXMgbWFnZW50YSBjb2xvcmVkIHRleHQgZm9yIGJvbGRpbmcgaW5zdGVhZC4gVGhlIGZhbmN5IGNvbG9yICgtZgotIyBhbmQgLWYyKSBlbnRyaWVzIHVzZSBjb2xvciBmb3IgYm9sZCwgc3RhbmRvdXQgYW5kIHVuZGVybGluZWQgdGV4dAotIyAodW5kZXJsaW5lZCB0ZXh0IGlzIHN0aWxsIHVuZGVybGluZWQsIHRob3VnaC4pCi0jCi0jIEFwcGFyZW50bHkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGRvZXMgc3VwcG9ydCBhIFZULTEwMC1zdHlsZQotIyBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCwgYnV0IGFsbCB0aGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKLSMgcG9zaXRpb25zIGhhdmUgYmVlbiBsZWZ0IGJsYW5rIGluIHRoZSBmb250LiBGb3IgdGhpcyByZWFzb24sIG5vCi0jIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW5jbHVkZWQgaW4gdGhpcwotIyBkZXNjcmlwdGlvbi4gVGhlIGNvbnNvbGUgZHJpdmVyIGFwcGVhcnMgdG8gYmUgQVNDSUktb25seSwgc28gKGVuYWNzKQotIyBoYXMgYmVlbiBleGNsdWRlZCBbYWx0aG91Z2ggdGhlIFZULTEwMCBzZXF1ZW5jZSBkb2VzIHdvcmsuXQotIwotIyBUaGUgZGVmYXVsdCBNYWMgT1MgWCBhbmQgRGFyd2luIGluc3RhbGxhdGlvbiByZXBvcnRzICJ2dDEwMCIgYXMgdGhlCi0jIHRlcm1pbmFsIHR5cGUsIGFuZCBleHBvcnRzIG5vIGhlbHBmdWwgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUbyBmaXgKLSMgdGhpcywgY2hhbmdlIHRoZSAiY29uc29sZSIgZW50cnkgaW4gL2V0Yy90dHlzIGZyb20gInZ0MTAwIiB0bwotIyAieG51cHBjLVd4SCIsIHdoZXJlIFcgYW5kIEggYXJlIHRoZSBjaGFyYWN0ZXIgZGltZW5zaW9ucyBvZiB5b3VyCi0jIGNvbnNvbGUgKHNlZSBiZWxvdy4pCi0jCi0jIFRoZSBmb250IHVzZWQgYnkgdGhlIHRlcm1pbmFsIGVtdWxhdG9yIGlzIGFwcGFyZW50bHkgb25lIG9yaWdpbmFsbHkKLSMgZHJhd24gYnkgS2EtUGluZyBZZWUsIGFuZCB1c2VzIDh4MTYtcGl4ZWwgY2hhcmFjdGVycy4gVGhpcwotIyBmaWxlIGluY2x1ZGVzIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBnZW9tZXRyaWVzOgotIwotIyAgICAgUGl4ZWxzICAgICAgICBDaGFyYWN0ZXJzICAgRW50cnkgTmFtZSAoYXBwZW5kIC1tIGZvciBtb25vY2hyb21lKQotIyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICA2NDB4NDAwICAgICAgIDgweDI1ICAgICAgICB4bnVwcGMtODB4MjUKLSMgICAgIDY0MHg0ODAgICAgICAgODB4MzAgICAgICAgIHhudXBwYy04MHgzMAotIyAgICAgNzIweDQ4MCAgICAgICA5MHgzMCAgICAgICAgeG51cHBjLTkweDMwCi0jICAgICA4MDB4NjAwICAgICAgIDEwMHgzNyAgICAgICB4bnVwcGMtMTAweDM3Ci0jICAgICA4OTZ4NjAwICAgICAgIDExMngzNyAgICAgICB4bnVwcGMtMTEyeDM3Ci0jICAgICAxMDI0eDY0MCAgICAgIDEyOHg0MCAgICAgICB4bnVwcGMtMTI4eDQwCi0jICAgICAxMDI0eDc2OCAgICAgIDEyOHg0OCAgICAgICB4bnVwcGMtMTI4eDQ4Ci0jICAgICAxMTUyeDc2OCAgICAgIDE0NHg0OCAgICAgICB4bnVwcGMtMTQ0eDQ4Ci0jICAgICAxMjgweDEwMjQgICAgIDE2MHg2NCAgICAgICB4bnVwcGMtMTYweDY0Ci0jICAgICAxNjAweDEwMjQgICAgIDIwMHg2NCAgICAgICB4bnVwcGMtMjAweDY0Ci0jICAgICAxNjAweDEyMDAgICAgIDIwMHg3NSAgICAgICB4bnVwcGMtMjAweDc1Ci0jICAgICAyMDQ4eDE1MzYgICAgIDI1Nng5NiAgICAgICB4bnVwcGMtMjU2eDk2Ci0jCi0jIFRoZSBiYXNpYyAieG51cHBjIiBlbnRyeSBpbmNsdWRlcyBubyBzaXplIGluZm9ybWF0aW9uLCBhbmQgdGhlCi0jIGVtdWxhdG9yIGluY2x1ZGVzIG5vIHJlcG9ydGluZyBjYXBhYmlsaXR5LCBzbyB5b3UnbGwgYmUgYXQgdGhlIG1lcmN5Ci0jIG9mIHRoZSBUVFkgZGV2aWNlICh3aGljaCByZXBvcnRzIGluY29ycmVjdGx5IG9uIG15IGhhcmR3YXJlLikgVGhlCi0jIGNvbG9yLWJvbGQgZW50cmllcyBkbyBub3QgaW5jbHVkZSBzaXplIGluZm9ybWF0aW9uLgotCi0jIFRoZSAnKycgZW50cmllcyBhcmUgYnVpbGRpbmcgYmxvY2tzCi14bnVwcGMrYmFzaWN8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBiYXNpYyBjYXBhYmlsaXRpZXMsCi0JYW0sIGJjZSwgbWlyLCB4ZW5sLAotCWl0IzgsCi0JYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFW0osIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkc2w9XEVdMjtcMDA3LCBlZD1cRVtKLCBlbD1cRVtLLAotCWVsMT1cRVsxSywgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaW5kPV5KLCBrYnM9XDE3NywKLQlrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLCByYz1cRTgsCi0JcmV2PVxFWzdtLCByaT1cRU0sIHJtYW09XEVbPzdsLCBybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgcnMyPVxFPlxFWz8zbFxFWz80bFxFWz81bFxFWz83aFxFWz84aCwKLQlzYz1cRTcsCi0Jc2dyPVxFWzAlPyVwNiV0OzElOyU/JXAyJXQ7NCU7JT8lcDElcDMlfCV0OzclO20sCi0Jc2dyMD1cRVttXDAxNywgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywgdXNlPXZ0MTAwK2tleXBhZCwKLQoteG51cHBjK2N8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBBTlNJIGNvbG9yIHN1cHBvcnQsCi0JY29sb3JzIzgsIG5jdiMzMiwgcGFpcnMjNjQsCi0Jb3A9XEVbMzc7NDBtLCBzZXRhYj1cRVs0JXAxJWRtLCBzZXRhZj1cRVszJXAxJWRtLAotCi14bnVwcGMrYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIGNvbG9yLWJvbGQgc3VwcG9ydCwKLQluY3YjMzIsCi0JYm9sZD1cRVszNW0sCi0Jc2dyPVxFWzAlPyVwNiV0OzM1JTslPyVwMiV0OzQlOyU/JXAxJXAzJXwldDs3JTttLAotCXVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYytmfERhcndpbiBQb3dlclBDIENvbnNvbGUgZmFuY3kgY29sb3Igc3VwcG9ydCwKLQluY3YjMzUsCi0Jc2dyPVxFWzAlPyVwNiV0OzM1JTslPyVwMiV0OzM2OzQlOyU/JXAxJXQ7MzM7NDQlOyU/JXAzJXQ7NyU7bSwKLQlzbXNvPVxFWzMzOzQ0bSwgc211bD1cRVszNjs0bSwgdXNlPXhudXBwYytiLAotCi14bnVwcGMrZjJ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSBhbHRlcm5hdGUgZmFuY3kgY29sb3Igc3VwcG9ydCwKLQluY3YjMzUsCi0JYm9sZD1cRVszM20sCi0Jc2dyPVxFWzAlPyVwNiV0OzMzJTslPyVwMiV0OzM0JTslPyVwMSV0OzMxOzQ3JTslPyVwMyV0OzclO20sCi0Jc21zbz1cRVszMTs0N20sIHNtdWw9XEVbMzRtLCB1c2U9eG51cHBjK2Jhc2ljLAotCi0jIEJ1aWxkaW5nIGJsb2NrcyBmb3Igc3BlY2lmaWMgc2NyZWVuIHNpemVzCi14bnVwcGMrODB4MjV8RGFyd2luIFBvd2VyUEMgQ29uc29sZSA4MHgyNSBzdXBwb3J0ICg2NDB4NDAwIHBpeGVscyksCi0JY29scyM4MCwgbGluZXMjMjUsCi0KLXhudXBwYys4MHgzMHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDgweDMwIHN1cHBvcnQgKDY0MHg0ODAgcGl4ZWxzKSwKLQljb2xzIzgwLCBsaW5lcyMzMCwKLQoteG51cHBjKzkweDMwfERhcndpbiBQb3dlclBDIENvbnNvbGUgOTB4MzAgc3VwcG9ydCAoNzIweDQ4MCBwaXhlbHMpLAotCWNvbHMjOTAsIGxpbmVzIzMwLAotCi14bnVwcGMrMTAweDM3fERhcndpbiBQb3dlclBDIENvbnNvbGUgMTAweDM3IHN1cHBvcnQgKDgwMHg2MDAgcGl4ZWxzKSwKLQljb2xzIzEwMCwgbGluZXMjMzcsCi0KLXhudXBwYysxMTJ4Mzd8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAxMTJ4Mzcgc3VwcG9ydCAoODk2eDYwMCBwaXhlbHMpLAotCWNvbHMjMTEyLCBsaW5lcyMzNywKLQoteG51cHBjKzEyOHg0MHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDEyOHg0MCBzdXBwb3J0ICgxMDI0eDY0MCBwaXhlbHMpLAotCWNvbHMjMTI4LCBsaW5lcyM0MCwKLQoteG51cHBjKzEyOHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDEyOHg0OCBzdXBwb3J0ICgxMDI0eDc2OCBwaXhlbHMpLAotCWNvbHMjMTI4LCBsaW5lcyM0OCwKLQoteG51cHBjKzE0NHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDE0NHg0OCBzdXBwb3J0ICgxMTUyeDc2OCBwaXhlbHMpLAotCWNvbHMjMTQ0LCBsaW5lcyM0OCwKLQoteG51cHBjKzE2MHg2NHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDE2MHg2NCBzdXBwb3J0ICgxMjgweDEwMjQgcGl4ZWxzKSwKLQljb2xzIzE2MCwgbGluZXMjNjQsCi0KLXhudXBwYysyMDB4NjR8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAyMDB4NjQgc3VwcG9ydCAoMTYwMHgxMDI0IHBpeGVscyksCi0JY29scyMyMDAsIGxpbmVzIzY0LAotCi14bnVwcGMrMjAweDc1fERhcndpbiBQb3dlclBDIENvbnNvbGUgMjAweDc1IHN1cHBvcnQgKDE2MDB4MTIwMCBwaXhlbHMpLAotCWNvbHMjMjAwLCBsaW5lcyM3NSwKLQoteG51cHBjKzI1Nng5NnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIDI1Nng5NiBzdXBwb3J0ICgyMDQ4eDE1MzYgcGl4ZWxzKSwKLQljb2xzIzI1NiwgbGluZXMjOTYsCi0KLSMgVGhlc2UgYXJlIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrcwotCi14bnVwcGMtbXxkYXJ3aW4tbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSwKLQl1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGN8ZGFyd2lufERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy1tLWJ8ZGFyd2luLW0tYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lIHcvY29sb3ItYm9sZCksCi0JdXNlPXhudXBwYytiLAotCi14bnVwcGMtYnxkYXJ3aW4tYnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvciB3L2NvbG9yLWJvbGQpLAotCXVzZT14bnVwcGMrYiwgdXNlPXhudXBwYytjLAotCi14bnVwcGMtbS1mfGRhcndpbi1tLWZ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoZmFuY3kgbW9ub2Nocm9tZSksCi0JdXNlPXhudXBwYytmLAotCi14bnVwcGMtZnxkYXJ3aW4tZnxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChmYW5jeSBjb2xvciksCi0JdXNlPXhudXBwYytmLCB1c2U9eG51cHBjK2MsCi0KLXhudXBwYy1tLWYyfGRhcndpbi1tLWYyfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGFsdGVybmF0ZSBmYW5jeSBtb25vY2hyb21lKSwKLQl1c2U9eG51cHBjK2YyLAotCi14bnVwcGMtZjJ8ZGFyd2luLWYyfERhcndpbiBQb3dlclBDIENvbnNvbGUgKGFsdGVybmF0ZSBmYW5jeSBjb2xvciksCi0JdXNlPXhudXBwYytmMiwgdXNlPXhudXBwYytjLAotCi0jIENvbWJpbmF0aW9ucyBmb3Igc3BlY2lmaWMgc2NyZWVuIHNpemVzCi14bnVwcGMtODB4MjUtbXxkYXJ3aW4tODB4MjUtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSA4MHgyNSwKLQl1c2U9eG51cHBjKzgweDI1LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtODB4MjV8ZGFyd2luLTgweDI1fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSA4MHgyNSwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrODB4MjUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy04MHgzMC1tfGRhcndpbi04MHgzMC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDgweDMwLAotCXVzZT14bnVwcGMrODB4MzAsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy04MHgzMHxkYXJ3aW4tODB4MzB8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDgweDMwLAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYys4MHgzMCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTkweDMwLW18ZGFyd2luLTkweDMwLW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgOTB4MzAsCi0JdXNlPXhudXBwYys5MHgzMCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTkweDMwfGRhcndpbi05MHgzMHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgOTB4MzAsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzkweDMwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTAweDM3LW18ZGFyd2luLTEwMHgzNy1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDEwMHgzNywKLQl1c2U9eG51cHBjKzEwMHgzNywgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTEwMHgzN3xkYXJ3aW4tMTAweDM3fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxMDB4MzcsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzEwMHgzNywgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTExMngzNy1tfGRhcndpbi0xMTJ4MzctbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxMTJ4MzcsCi0JdXNlPXhudXBwYysxMTJ4MzcsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xMTJ4Mzd8ZGFyd2luLTExMngzN3xEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTEyeDM3LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxMTJ4MzcsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xMjh4NDAtbXxkYXJ3aW4tMTI4eDQwLW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTI4eDQwLAotCXVzZT14bnVwcGMrMTI4eDQwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTI4eDQwfGRhcndpbi0xMjh4NDB8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDEyOHg0MCwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTI4eDQwLCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTI4eDQ4LW18ZGFyd2luLTEyOHg0OC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDEyOHg0OCwKLQl1c2U9eG51cHBjKzEyOHg0OCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTEyOHg0OHxkYXJ3aW4tMTI4eDQ4fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAxMjh4NDgsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzEyOHg0OCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTE0NHg0OC1tfGRhcndpbi0xNDR4NDgtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAxNDR4NDgsCi0JdXNlPXhudXBwYysxNDR4NDgsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xNDR4NDh8ZGFyd2luLTE0NHg0OHxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMTQ0eDQ4LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysxNDR4NDgsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0xNjB4NjQtbXxkYXJ3aW4tMTYweDY0LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMTYweDY0LAotCXVzZT14bnVwcGMrMTYweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMTYweDY0fGRhcndpbi0xNjB4NjR8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDE2MHg2NCwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMTYweDY0LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMjAweDY0LW18ZGFyd2luLTIwMHg2NC1tfERhcndpbiBQb3dlclBDIENvbnNvbGUgKG1vbm9jaHJvbWUpIDIwMHg2NCwKLQl1c2U9eG51cHBjKzIwMHg2NCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTIwMHg2NHxkYXJ3aW4tMjAweDY0fERhcndpbiBQb3dlclBDIENvbnNvbGUgKGNvbG9yKSAyMDB4NjQsCi0JdXNlPXhudXBwYytjLCB1c2U9eG51cHBjKzIwMHg2NCwgdXNlPXhudXBwYytiYXNpYywKLQoteG51cHBjLTIwMHg3NS1tfGRhcndpbi0yMDB4NzUtbXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChtb25vY2hyb21lKSAyMDB4NzUsCi0JdXNlPXhudXBwYysyMDB4NzUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0yMDB4NzV8ZGFyd2luLTIwMHg3NXxEYXJ3aW4gUG93ZXJQQyBDb25zb2xlIChjb2xvcikgMjAweDc1LAotCXVzZT14bnVwcGMrYywgdXNlPXhudXBwYysyMDB4NzUsIHVzZT14bnVwcGMrYmFzaWMsCi0KLXhudXBwYy0yNTZ4OTYtbXxkYXJ3aW4tMjU2eDk2LW18RGFyd2luIFBvd2VyUEMgQ29uc29sZSAobW9ub2Nocm9tZSkgMjU2eDk2LAotCXVzZT14bnVwcGMrMjU2eDk2LCB1c2U9eG51cHBjK2Jhc2ljLAotCi14bnVwcGMtMjU2eDk2fGRhcndpbi0yNTZ4OTZ8RGFyd2luIFBvd2VyUEMgQ29uc29sZSAoY29sb3IpIDI1Nng5NiwKLQl1c2U9eG51cHBjK2MsIHVzZT14bnVwcGMrMjU2eDk2LCB1c2U9eG51cHBjK2Jhc2ljLAotCi0jIyMjIFJhZGlvIFNoYWNrL1RhbmR5Ci0jCi0KLSMgKGNvY28zOiBUaGlzIGhhZCAidGEiIHVzZWQgaW5jb3JyZWN0bHkgYXMgYSBib29sZWFuIGFuZCBibCBnaXZlbiBhcyAiYmwjNyIuCi0jIEkgcmVhZCB0aGVzZSBhcyBtaXN0YWtlcyBmb3IgIjppdCM4OiIgYW5kICI6Ymw9XDAwNzoiIHJlc3BlY3RpdmVseSAtLSBlc3IpCi0jIEZyb206IDx7cGJyb3duLGN0bH1Ab2NmLmJlcmtlbGV5LmVkdT4gMTIgTWFyIDkwCi1jb2NvM3xvczlMSUl8VGFuZHkgQ29DbzMgMjQqODAgT1M5IExldmVsIElJLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9Xl8iLCBib2xkPVxFXDpeQSwgY2l2aXM9XkVccywKLQljbGVhcj1cMDE0JDw1Ki8+LCBjbm9ybT1eRSEsIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkYsCi0JY3VwPVwwMDIlcDIlezMyfSUrJWMlcDElezMyfSUrJWMkPDIvPiwgY3V1MT1eSSwKLQlkbDE9Xl8xLCBlZD1eSywgZWw9XkQsIGhvbWU9XkEsIGlsMT1eXzAsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eSSwga2N1dTE9XkwsIHJldj1eX1xzLCBybXNvPV5fISwgcm11bD1eXyMsCi0Jc2dyMD1cMDM3IVxFXDpcMCwgc21zbz1eX1xzLCBzbXVsPV5fIiwKLSMgKHRyczI6IHJlbW92ZWQgb2Jzb2xldGUgIjpubD1eXzoiIC0tIGVzcikKLXRyczJ8dHJzSUl8dHJzODBJSXxSYWRpbyBTaGFjayBNb2RlbCBJSSB1c2luZyBQJlQgQ1AvTSwKLQlPVGJzLCBhbSwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eXywgY3VmMT1eXSwKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5eLCBkbDE9XkssIGVkPV5CLAotCWVsPV5BLCBob21lPV5GLCBodD1eSSwgaWwxPV5ELCBpbmQ9XkosIGticz1eSCwga2N1YjE9XlwsCi0Ja2N1ZDE9Xl8sIGtjdWYxPV5dLCBrY3V1MT1eXiwgcm1zbz1eTywgc2dyMD1eTywgc21zbz1eTiwKLSMgRnJvbTogS2V2aW4gQnJhdW5zZG9yZiA8a3NiQG1lbnRvci5jYy5wdXJkdWUuZWR1PgotIyAoVGhpcyBoYWQgZXh0ZW5zaW9uIGNhcGFiaWxpdGllcwotIwk6Qk49XEVbPzMzaDpCRj1cRVs/MzNsOlVDPVxFW18gcTpCQz1cRVtcMTc3IHE6XAotIwk6Q049XEVSQzpDRj1cRVJjOk5SPVxFUkQ6Tk09XEVSQDoKLSMgSSBhbHNvIGRlbGV0ZWQgdGhlIHVubmVjZXNzYXJ5ICI6a24jMjoiLCAiOnNnIzA6IiAtLSBlc3IpCi10cnMxNnx0cnMtODAgbW9kZWwgMTYgY29uc29sZSwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQlhY3NjPWpha2BsX21icXV2ZXdjeHMsIGJlbD1eRywgY2l2aXM9XEVSYywgY2xlYXI9XkwsCi0JY25vcm09XEVSQywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVCLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZGNoMT1cRVEsCi0JZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWNoMT1cRVAsIGlsMT1cRUwsCi0JaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwKLQlrZjA9XkEsIGtmMT1eQiwga2YyPV5ELCBrZjM9XkwsIGtmND1eVSwga2Y1PV5QLCBrZjY9Xk4sIGtmNz1eUywKLQlraG9tZT1eVywgbGYwPWYxLCBsZjE9ZjIsIGxmMj1mMywgbGYzPWY0LCBsZjQ9ZjUsIGxmNT1mNiwgbGY2PWY3LAotCWxmNz1mOCwgbWM0PVxFXSssIG1jNT1cRV09LCBybWFjcz1cRVJnLCBybXNvPVxFUkAsIHNncjA9XEVSQCwKLQlzbWFjcz1cRVJHLCBzbXNvPVxFUkQsCi0KLSMjIyMgQXRhcmkgU1QKLSMKLQotIyBGcm9tOiBTaW1zb24gTC4gR2FyZmlua2VsIDxzaW1zb25nQG1lZGlhLWxhYi5taXQuZWR1PgotYXRhcml8YXRhcmkgc3QsCi0JT1RicywgYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JY2xlYXI9XEVIXEVKLCBjdWIxPVxFRCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBkbDE9XEVNLAotCWVkPVxFSiwgZWw9XEVLLCBodD1eSSwgaWwxPVxFTCwga2N1YjE9XEVELCBrY3VkMT1cRUIsCi0Ja2N1ZjE9XEVDLCBrY3V1MT1cRUEsIHJpPVxFSSwgcm1zbz1cRXEsIHNncjA9XEVxLCBzbXNvPVxFcCwKLSMgVW5pVGVybSB0ZXJtaW5hbCBwcm9ncmFtIGZvciB0aGUgQXRhcmkgU1Q6ICA0OS1saW5lIFZUMjIwIGVtdWxhdGlvbiBtb2RlCi0jIEZyb206IFBhdWwgTS4gQW9raSA8YW9raUB1Y2J2YXguYmVya2VsZXkuZWR1PgotdW5pdGVybXx1bml0ZXJtNDl8VW5pVGVybSBWVDIyMCBlbXVsYXRvciB3aXRoIDQ5IGxpbmVzLAotCWxpbmVzIzQ5LAotCWlzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/N2hcRVs/OGhcRVsxOzQ5clxFWzQ5OzFILAotCXVzZT12dDIyMCwKLSMgTWlOVCBWVDUyIGVtdWxhdGlvbi4gODAgY29sdW1ucywgMjUgcm93cy4KLSMgTWlOVCBpcyBOb3cgVE9TLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aGljaCBjb21lcyB3aXRoIGFsbCBBdGFyaXMgbm93Ci0jIChtYWlubHkgQXRhcmkgRmFsY29uKS4gVGhpcyB0ZXJtY2FwIGlzIGZvciB0aGUgVlQ1MiBlbXVsYXRpb24geW91IGdldAotIyB1bmRlciB0Y3NoL3pzaC9iYXNoL3NoL2tzaC9hc2gvY3NoIHdoZW4geW91IHJ1biBNaU5UIGluIGBjb25zb2xlJyBtb2RlCi0jIEZyb206IFBlciBQZXJzc29uIDxwcEBnbnUuYWkubWl0LmVkdT4sIDI3IEZlYiAxOTk2Ci1zdDUyfEF0YXJpIFNUIHdpdGggVlQ1MiBlbXVsYXRpb24sCi0JYW0sIGttLAotCWNvbHMjODAsIGxpbmVzIzI1LAotCWJlbD1eRywgY2l2aXM9XEVmLCBjbGVhcj1cRUhcRUosIGNub3JtPVxFZSwgY3I9Xk0sIGN1YjE9XEVELAotCWN1ZDE9XEVCLCBjdWYxPVxFQywgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywKLQljdXUxPVxFQSwgZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWwxPVxFTCwKLQlpbmQ9XkosIGthMT1cRSM3LCBrYTM9XEUjNSwga2IyPVxFIzksIGticz1eSCwga2MxPVxFIzEsCi0Ja2MzPVxFIzMsIGtjbHI9XEUjNywga2N1YjE9XEUjSywga2N1ZDE9XEUjUCwga2N1ZjE9XEUjTSwKLQlrY3V1MT1cRSNILCBrZjA9XEUjRCwga2YxPVxFIzssIGtmMj1cRSM8LCBrZjM9XEUjPSwga2Y0PVxFIz4sCi0Ja2Y1PVxFIz8sIGtmNj1cRSNALCBrZjc9XEUjQSwga2Y4PVxFI0IsIGtmOT1cRSNDLCBraG9tZT1cRSNHLAotCWtpbDE9XEUjUiwga2luZD1cRSMyLCBrcmk9XEUjOCwgbGYwPWYxMCwgbmVsPV5NXkosIHJjPVxFaywKLQlyaT1cRUksIHJtY3VwPSwgcm1zbz1cRXEsIHJzMT1cRXpfXEViQFxFY0EsIHNjPVxFaiwgc2dyMD1cRXEsCi0Jc21jdXA9XEVlLCBzbXNvPVxFcCwKLQotIyMjIyBDb21tb2RvcmUgQnVzaW5lc3MgTWFjaGluZXMKLSMKLSMgRm9ybWVybHkgbG9jYXRlZCBpbiBXZXN0IENoZXN0ZXIsIFBBOyB3ZW50IHNwZWN0YWN1bGFybHkgYnVzdCBpbiAxOTk0Ci0jIGFmdGVyIHllYXJzIG9mIHNoYWt5IGVuZ2luZWVyaW5nIGFuZCBlZ3JlZ2lvdXMgbWlzbWFuYWdlbWVudC4gIE1hZGUgb25lCi0jIHJlYWxseSBuaWNlIG1hY2hpbmUgKHRoZSBBbWlnYSkgYW5kIGJvYXRsb2FkcyBvZiBuYXN0eSBvbmVzIChQRVQsIEMtNjQsCi0jIEMtMTI4LCBWSUMtMjApLiAgVGhlIEMtNjQgaXMgc2FpZCB0byBoYXZlIGJlZW4gdGhlIG1vc3QgcG9wdWxhciBtYWNoaW5lCi0jIGV2ZXIgKG1vc3QgdW5pdHMgc29sZCk7IHRoZXkgY2FuIHN0aWxsIGJlIGZvdW5kIGdhdGhlcmluZyBkdXN0IGluIGNsb3NldHMKLSMgZXZlcnl3aGVyZS4KLSMKLQotIyBGcm9tOiBLZW50IFBvbGsgPGtlbnRAc3dyaW5kZS5uZGUuc3dyaS5lZHU+LCAzMCBNYXkgOTAKLSMgQWRkZWQgYSBmZXcgbW9yZSBlbnRyaWVzLCBjb252ZXJ0ZWQgY2FyZXQtdHlwZSBjb250cm9sIHNlcXVlbmNlICheeCkgZW50cmllcwotIyB0byAnXDB4eCcgZW50cmllcyBzaW5jZSBhIGNvdXBsZSBvZiBwZW9wbGUgbWVudGlvbmVkIGxvc2luZyAnXngnIHNlcXVlbmNlcy4KLSMgQ29ycmVjdGlvbnMgYnkgVHkgU2FybmEgPHRzYXJuYUBlbmRpY29yLmNvbT4sIFNhdCBGZWIgMjggMTg6NTU6MTUgMTk5OAotIwotIyA6YXM6LCA6YWU6CQkJU3VwcG9ydCBmb3IgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXRzLgotIyA6dmU9XEVbXDA0MHA6dmk9XEVbXDA2MFwwNDBwOgljdXJzb3IgdmlzaWJsZS9pbnZpc2libGUuCi0jIDp4bjogIHZ0MTAwIGtsdWRnaW5lc3MgYXQgY29sdW1uIDgwL05FV0xJTkUgaWdub3JlIGFmdGVyIDgwIGNvbHMoQ29uY2VwdCkKLSMgICAgIFRoaXMgb25lIGFwcGVhcnMgdG8gZml4IGEgcHJvYmxlbSBJIGFsd2F5cyBoYWQgd2l0aCBhIGxpbmUgZW5kaW5nCi0jICAgICBhdCAnd2lkdGgrMScgKEkgdGhpbmspIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBpbiB2aS4gVGhlIGJsYW5rCi0jICAgICBsaW5lIHRlbmRlZCB0byBkaXNhcHBlYXIgYW5kIHJlYXBwZWFyIGRlcGVuZGluZyBvbiBob3cgdGhlIHNjcmVlbgotIyAgICAgd2FzIHJlZnJlc2hlZC4gTm90ZSB0aGF0IHRoaXMgaXMgcHJvYmFibHkgbmVlZGVkIG9ubHkgaWYgeW91IHVzZQotIyAgICAgc29tZXRoaW5nIGxpa2UgYSBEbmV0IEZ0ZXJtIHdpdGggdGhlIHdpbmRvdyBzaXplZCB0byBzb21lIHBlY3VsaWFyCi0jICAgICBkaW1lbnNpb24gbGFyZ2VyIHRoYW4gODAgY29sdW1ucy4KLSMgOmswPVxFOX46CW1hcCBGMTAgdG8gazAgLSBjb3VsZCBoYXZlIEYwLTkgLT4gazAtOSwgYnV0IC4uLiBGMTAgd2FzICdrOycKLSMgKGFtaWdhOiByZW1vdmVkIG9ic29sZXRlIDprbiMxMDosCi0jIGFsc28gYWRkZWQgZW1wdHkgPGFjc2M+IHRvIHN1cHByZXNzIGEgd2FybmluZyAtLWVzcikKLWFtaWdhfEFtaWdhIEFOU0ksCi0JT1RicywgYW0sIGJ3LCB4ZW5sLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFWzc7Mm0sIGJvbGQ9XEVbMW0sIGNidD1cRVtaLAotCWNpdmlzPVxFWzAgcCwgY2xlYXI9XEVbSFxFW0osIGNub3JtPVxFWyBwLCBjdWI9XEVbJXAxJWRELAotCWN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLAotCWN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLCBkaW09XEVbMm0sCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILAotCWljaD1cRVslcDElZEAsIGljaDE9XEVbQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFW1MsCi0JaW5kbj1cRVslcDElZFMsIGludmlzPVxFWzhtLCBpczI9XEVbMjBsLCBrYnM9XkgsCi0Ja2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YwPVxFWzl+LAotCWtmMT1cRVswfiwga2YyPVxFWzF+LCBrZjM9XEVbMn4sIGtmND1cRVszfiwga2Y1PVxFWzR+LAotCWtmNj1cRVs1fiwga2Y3PVxFWzZ+LCBrZjg9XEVbN34sIGtmOT1cRVs4fiwgcmV2PVxFWzdtLAotCXJpPVxFW1QsIHJpbj1cRVslcDElZFQsIHJtYWNzPV5PLCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczE9XEVjLCBzZ3IwPVxFW20sIHNtYWNzPV5OLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIEZyb206IEhhbnMgVmVya3VpbCA8aGFuc0B3eXN0LmhvYmJ5Lm5sPiwgNCBEZWMgMTk5NQotIyAoYW1pZ2E6IGFkZGVkIGVtcHR5IDxhY3NjPiB0byBzdXBwcmVzcyBhIHdhcm5pbmcuCi0jIEknbSB0b2xkIHRoaXMgZW50cnkgc2NyZXdzIHVwIGJhZGx5IHdpdGggQVMyMjUsIHRoZSBBbWlnYQotIyBUQ1AvSVAgcGFja2FnZSBvbmNlIGZyb20gQ29tbW9kb3JlLCBhbmQgbm93IHNvbGQgYnkgSW50ZXJXb3Jrcy4tLWVzcikKLWFtaWdhLWh8SGFucyBWZXJrdWlsJ3MgQW1pZ2EgQU5TSSwKLQlPVGJzLCBidywgbXNnciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlhY3NjPSwgYmVsPV5HLCBibGluaz1cMjMzNzsybSwgYm9sZD1cMjMzMW0sIGNidD1cMjMzWiwKLQljaXZpcz1cMjMzMCBwLCBjbGVhcj1cMjMzSFwyMzNKLCBjbm9ybT1cMjMzIHAsIGNyPV5NLAotCWN1Yj1cMjMzJXAxJWRELCBjdWIxPVwyMzNELCBjdWQ9XDIzMyVwMSVkQiwgY3VkMT1cMjMzQiwKLQljdWY9XDIzMyVwMSVkQywgY3VmMT1cMjMzQywgY3VwPVwyMzMlaSVwMSVkOyVwMiVkSCwKLQljdXU9XDIzMyVwMSVkQSwgY3V1MT1cMjMzQSwgZGNoPVwyMzMlcDElZFAsIGRjaDE9XDIzM1AsCi0JZGltPVwyMzMybSwgZWNoPVwyMzMlcDElZFAsIGVkPVwyMzNKLCBlbD1cMjMzSywgZmxhc2g9XkcsCi0JaG9tZT1cMjMzSCwgaHQ9XkksIGljaD1cMjMzJXAxJWRALCBpY2gxPVwyMzNALCBpbmQ9XDIzM1MsCi0JaW5kbj1cMjMzJXAxJWRTLCBpbnZpcz1cMjMzOG0sIGlzMj1cMjMzMjBsLCBrYnM9XkgsCi0Ja2N1YjE9XDIzM0QsIGtjdWQxPVwyMzNCLCBrY3VmMT1cMjMzQywga2N1dTE9XDIzM0EsCi0Ja2RjaDE9XDE3Nywga2YwPVwyMzM5fiwga2YxPVwyMzMwfiwga2YyPVwyMzMxfiwga2YzPVwyMzMyfiwKLQlrZjQ9XDIzMzN+LCBrZjU9XDIzMzR+LCBrZjY9XDIzMzV+LCBrZjc9XDIzMzZ+LCBrZjg9XDIzMzd+LAotCWtmOT1cMjMzOH4sIG5lbD1cMjMzQlxyLCByZXY9XDIzMzdtLCByaT1cMjMzVCwKLQlyaW49XDIzMyVwMSVkVCwgcm1hY3M9Xk8sIHJtY3VwPVwyMzM/N2gsIHJtc289XDIzMzBtLAotCXJtdWw9XDIzMzBtLCByczE9XEVjLCBzZ3IwPVwyMzMwbSwgc21hY3M9Xk4sIHNtY3VwPVwyMzM/N2wsCi0Jc21zbz1cMjMzN20sIHNtdWw9XDIzMzRtLAotCi0jIEZyb206IEhlbm5pbmcgJ0Zhcm91bCcgUGV0ZXJzIDxGYXJvdWxAYmV5b25kLmtuLWJyZW1lbi5kZT4sIDI1IFNlcCAxOTk5Ci0jCi0jIFBhdmVsIEZlZGluIGFkZGVkCi0jCUhvbWUgICAgU2hpZnQrTGVmdAotIwlFbmQgICAgIFNoaWZ0K1JpZ2h0Ci0jCVBnVXAgICAgU2hpZnQrVXAKLSMJUGdEbiAgICBTaGlmdCtEb3duCi1hbWlnYS04Yml0fEFtaWdhIEFOU0kgdXNpbmcgOC1iaXQgY29udHJvbHMsCi0JYWNzYz0sIGRsPVwyMzMlcDElZE0sIGRsMT1cMjMzTSwgaWw9XDIzMyVwMSVkTCwgaWwxPVwyMzNMLAotCWluZD1cMjA0LCBpbmRuQCwga2VuZD1cMjMzIEAsIGtob21lPVwyMzMgQSwga25wPVwyMzNTLAotCWtwcD1cMjMzVCwgcmk9XDIxNSwgcmluQCwgdXNlPWFtaWdhLWgsCi0KLSMgRnJvbTogUnVlZGlnZXIgS3VobG1hbm4gPHRlcm1pbmZvQHJ1ZWRpZ2VyLWt1aGxtYW5uLmRlPiwgMTggSnVsIDIwMDAKLSMgcmVxdWlyZXMgdXNlIG9mIGFwcHJvcHJpYXRlIHByZWZlcmVuY2VzIHNldHRpbmdzLgotYW1pZ2Etdm5jfEFtaWdhIHVzaW5nIFZOQyBjb25zb2xlIChibGFjayBvbiBsaWdodCBncmF5KSwKLQlhbSwgZGEsIGRiLCBtc2dyLCBuZHNjciwKLQlidG5zIzEsIGNvbG9ycyMxNiwgY29scyM4MCwgbGluZXMjMjQsIGxtIzAsIG5jdiMwLCBwYWlycyMyNTYsCi0JYmVsPV5HLCBibGluaz1cRVs3OzJtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVswcCwKLQljbGVhcj1cRVtIXEVbSiwgY25vcm09XEVbcFxFWz4/NmwsIGNyPV5NLAotCWNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViPVxFWyVwMSVkRCwgY3ViMT1cRVtELAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWN2dmlzPVxFWz4/NmgsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwgZGltPVxFWzJtLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFWzFNLCBlZD1cRVtKLCBlbD1cRVtLLCBmbGFzaD1eRywKLQlpY2g9XEVbJXAxJWRALCBpY2gxPVxFW0AsIGlsPVxFWyVwMSVkTCwgaWwxPVxFWzFMLCBpbmQ9XEVELAotCWluZG49XEVbJXAxJWRTLCBpbnZpcz1cRThtLAotCWlzMj1cRVs+PzI7MThsXEVbPj8yNjs/NjsyMDs+PzE1Oz83Oz4/MjI7Pj84aCwKLQlrYnM9XkgsIGtjYnQ9XDIzM1osIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2RjaDE9XDE3Nywga2YwPVxFWzl+LCBrZjE9XEVbMH4sIGtmMj1cRVsxfiwKLQlrZjM9XEVbMn4sIGtmND1cRVszfiwga2Y1PVxFWzR+LCBrZjY9XEVbNX4sIGtmNz1cRVs2fiwKLQlrZjg9XEVbN34sIGtmOT1cRVs4fiwga2hscD1cRVs/fiwga2hvbWU9XEVbNDR+LCBrbGw9XEVbNDV+LAotCWttb3VzPVxFW00sIGtucD1cRVs0Mn4sIGtwcD1cRVs0MX4sIG5lbD1cRUUsIG9jPVxFWzBtLAotCXJldj1cRVs3bSwgcmk9XEVNLCByaW49XEVbJXAxJWRULCBybWN1cD1cRVs/N2hcRVtyXEVbSiwKLQlybWt4PVxFWz8xbCwgcm1zbz1cRVsyMW0sIHJtdWw9XEVbMjRtLCByczE9XEVjLAotCXJzMj1cRVs+PzI7MThsXEVbPj8yNjs/NjsyMDs+PzE1Oz83Oz4/MjI7Pj84aCwKLQlzZXRhYj1cRVslPyVwMSV7OH0lPiV0JSdGJyVwMSUrJWQlZTQlcDElZCU7bSwKLQlzZXRhZj1cRVslPyVwMSV7OH0lPiV0JScyJyVwMSUrJWQlZTMlcDElZCU7bSwKLQlzZ3IwPVxFWzBtXDAxN1xFWzMwOzg1Oz4xNW0sIHNtY3VwPVxFWz83aCwgc21reD1cRVs/MWgsCi0Jc21zbz1cRVsxbSwgc211bD1cRVs0bSwKLQotIyBNb3JwaE9TIG9uIEdlbmVzaSBQZWdhc29zCi0jIEJ5IFBhdmVsIEZlZGluIDxzb25pY19hbWlnYUByYW1ibGVyLnJ1PgotbW9ycGhvcywKLQlhY3NjPSwgZGw9XDIzMyVwMSVkTSwgZGwxPVwyMzNNLCBpbD1cMjMzJXAxJWRMLCBpbDE9XDIzM0wsCi0JaW5kPVwyMDQsIGluZG5ALCBrZW5kPVwyMzM0NX4sIGtmMTE9XDIzMzIwfiwga2YxMj1cMjMzMjF+LAotCWtob21lPVwyMzM0NH4sIGtpY2gxPVwyMzM0MH4sIGtucD1cMjMzNDJ+LCBrcHA9XDIzMzQxfiwKLQlyaT1cMjE1LCByaW5ALCB1c2U9YW1pZ2EtaCwKLQotIyBDb21tb2RvcmUgQi0xMjggbWljcm9jb21wdXRlciBmcm9tIERvdWcgVHlyb2wgPGRldEBIRUwtQUNFLkFSUEE+Ci0jIAlJJ20gdHJ5aW5nIHRvIHdyaXRlIGEgdGVybWNhcCBmb3IgYSBjb21tb2RvcmUgYi0xMjgsIGFuZCBJJ20KLSMgaGF2aW5nIGEgbGl0dGxlIHRyb3VibGUuIEkndmUgaGFkIHRvIG1hcCBtb3N0IG9mIG15IGNvbnRyb2wgY2hhcmFjdGVycwotIyB0byBzb21ldGhpbmcgdGhhdCB1bml4IHdpbGwgYWNjZXB0IChteSBkZWxldGUtY2hhciBpcyBhIGN0cmwtdCwgZXRjKSwKLSMgYW5kIGNyZWF0ZSBzb21lIGZ1bmN0aW9ucyAobGlrZSBjbSksIGJ1dCB0aGF0cyBsaWZlLgotIyAJVGhlIHByb2JsZW0gaXMgd2l0aCB0aGUgYXJyb3cga2V5cyAtIHJpZ2h0LCBhbmQgdXAgd29yayBmaW5lLCBidXQKLSMgbGVmdCBkZWxldGVzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgYW5kIGRvd24gSSBqdXN0IGNhbid0IGZpZ3VyZSBvdXQuCi0jIEpvdmUga25vd3Mgd2hhdCBJIHdhbnQsIGJ1dCBJIGRvbid0IGtub3cgd2hhdCBpdCdzIHNlbmRpbmcgdG8gbWUgKGl0Ci0jIGlzbid0IHRoYXRzIGJvdW5kIHRvIG5leHQtbGluZSBpbiBqb3ZlKS4KLSMgCUFueWJvZHkgZ290IGFueSBpZGVhcz8gSGVyZSdzIG15IHRlcm1jYXAuCi0jIERBRyAtLSBJIGNoYW5nZWQgaGlzICJebiIgZW50cmllcyB0byAiXG4iOyBzZWUgaWYgdGhhdCB3b3Jrcy4KLSMKLWNvbW1vZG9yZXxiLTEyOHxDb21tb2RvcmUgQi0xMjggbWljcm8sCi0JYW0sIGJ3LAotCU9UZE4jMjAsIGNvbHMjODAsIGxpbmVzIzI0LCBwYiMxNTAsCi0JT1RiYz1eSCwgT1RubD1eTSwgY2xlYXI9XEVcMDA2JDwxMC8+LCBjcj1eTSwgY3VkMT1eSiwKLQljdWYxPV5GLCBjdXA9XEVcMDEzJXAxJTJkXCwlcDIlMmRcLCQ8MjAvPiwgY3V1MT1eUCwKLQlkY2gxPVwxNzckPDEwKi8+LCBkbDE9XEVkJDwxMCovPiwgZWw9XEVxJDwxMC8+LAotCWhvbWU9XEVeRSwgaHQ9XDAxMSQ8NS8+LCBpY2gxPVxFXG4kPDUvPiwgaWwxPVxFaSQ8MTAvPiwKLQlrY3ViMT1eQiwga2N1ZDE9XkosIGtjdWYxPV5GLCBrY3V1MT1eUCwga2hvbWU9XEVeRSwgcm1pcj0sCi0Jc21pcj0sCi0KLSMjIyMgTm9ydGggU3RhcgotIwotIyBOb3J0aCBTdGFyIEFkdmFudGFnZSBmcm9tIEx0LiBGaWNraWUgPGJybC1pYmQhZmlja2llPiB2aWEgQlJMCi1ub3J0aHN0YXJ8Tm9ydGggU3RhciBBZHZhbnRhZ2UsCi0JT1RicywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cMDA0JDwyMDAvPiwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjJDwxLz4sIGVkPVwwMTckPDIwMC8+LAotCWVsPVwwMTYkPDIwMC8+LCBob21lPVwwMzRcMDMyJDwyMDAvPiwKLQotIyMjIyBPc2Jvcm5lCi0jCi0jIFRodSBKdWwgIDcgMDM6NTU6MTYgMTk4MwotIwotIyBBcyBhbiBhc2lkZSwgYmUgY2FyZWZ1bDsgaXQgbWF5IHNvdW5kIGxpa2UgYW4gYW5vbWFseSBvbiB0aGUKLSMgT3Nib3JuZSwgYnV0IHdpdGggdGhlIDgwLWNvbHVtbiB1cGdyYWRlLCBpdCdzIHRvbyBlYXN5IHRvCi0jIGVudGVyIGxpbmVzID44MCBjb2x1bW5zIQotIwotIyBJJ3ZlIGFscmVhZHkgaGFkIHNldmVyYWwgY29tbWVudHMuLi4KLSMgVGhlIE9zYm9ybmUtMSB3aXRoIHRoZSA4MC1jb2wgb3B0aW9uIGlzIGNhcGFibGUgb2YgYmVpbmcKLSMgNTIsIDgwLCBvciAxMDQgY2hhcmFjdGVycyB3aWRlOyBkZWZhdWx0IHRvIDgwIGZvciBjb21wYXRpYmlsaXR5Ci0jIHdpdGggbW9zdCBzeXN0ZW1zLgotIwotIyBUaGUgdGFiIGlzIGRlc3RydWN0aXZlIG9uIHRoZSBPenppZTsgbWFrZSBzdXJlIHRvICdzdHR5IC10YWJzJy4KLW9zYm9ybmUtd3xvc2Jvcm5lMS13fG9zYm9ybmUgSSBpbiAxMDQtY29sdW1uIG1vZGUsCi0JbXNnciwgdWwsIHh0LAotCWNvbHMjMTA0LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5aLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVywKLQlkbDE9XEVSLCBlbD1cRVQsIGljaDE9XEVRLCBpbDE9XEVFLCBpbmQ9XkosIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIHJtc289XEUoLCBybXVsPVxFbSwgc21zbz1cRSksIHNtdWw9XEVsLAotIyBPc2Jvcm5lIEkJZnJvbSBwdHNmYSFyaGMgKFJvYmVydCBDb2hlbikgdmlhIEJSTAotb3Nib3JuZXxvc2Jvcm5lMXxvc2Jvcm5lIEkgaW4gODAtY29sdW1uIG1vZGUsCi0JT1RicywgYW0sIG1pciwgbXNnciwgdWwsIHhocCwKLQlPVGRCIzQsIGNvbHMjODAsIGxpbmVzIzI0LAotCWNsZWFyPV5aLCBjdWIxPVwwMTAkPDQ+LCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssCi0JZGNoMT1cRVckPDQvPiwgZGwxPVxFUiwgZWw9XEVULCBpbDE9XEVFLCBpczI9XlosIGticz1eSCwKLQlrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywgcm1pcj0sIHJtc289XEUpLAotCXJtdWw9XEVtLCBzbWlyPVxFUSwgc21zbz1cRSgsIHNtdWw9XEVsLAotIwotIyBPc2Jvcm5lIEV4ZWN1dGl2ZSBkZWZpbml0aW9uIGZyb20gQlJMCi0jIFNpbWlsYXIgdG8gdHZpOTIwCi0jIEFkZGVkIGJ5IERhdmlkIE1pbGxpZ2FuIGFuZCBUb20gU21pdGggKFNNVSkKLW9zZXhlY3xPc2Jvcm5lIGV4ZWN1dGl2ZSwKLQlPVGJzLCBhbSwKLQlPVHVnIzEsIGNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMSwKLQlPVG5sPV5KLCBiZWw9XkcsIGNsZWFyPV5aLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBkY2gxPVxFVywKLQlkbDE9XEVSLCBlZD1cRVksIGVsPVxFVCwgaG9tZT1eXiwgaHRzPVxFMSwgaWNoMT1cRVEsIGlsMT1cRUUsCi0JaXMyPVxFcVxFa1xFbVxFQVxFeDAsIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwKLQlrY3V1MT1eSywga2YwPV5BQFxyLCBrZjE9XkFBXHIsIGtmMj1eQUJcciwga2YzPV5BQ1xyLAotCWtmND1eQURcciwga2Y1PV5BRVxyLCBrZjY9XkFGXHIsIGtmNz1eQUdcciwga2Y4PV5BSFxyLAotCWtmOT1eQUlcciwgcm1pcj0sIHJtc289XEVrLCBybXVsPVxFbSwgc21pcj0sIHNtc289XEVqLAotCXNtdWw9XEVsLCB0YmM9XEUzLAotCi0jIyMjIENvbnNvbGUgdHlwZXMgZm9yIG9ic29sZXRlIFVOSVggY2xvbmVzCi0jCi0jIENvaGVyZW50LCBNaW5peCwgVmVuaXgsIGFuZCBzZXZlcmFsIGxlc3Nlci1rbm93biBraW4gd2VyZSBPU3MgZm9yIDgwODgKLSMgbWFjaGluZXMgdGhhdCB0cmllZCB0byBlbXVsYXRlIHRoZSBVTklYIGxvb2snbidmZWVsLiAgQ29oZXJlbnQgYW5kIFZlbml4Ci0jIHdlcmUgY29tbWVyY2lhbCwgTWluaXggYW4gZWR1Y2F0aW9uYWwgdG9vbCBzb2xkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBib29rLgotIyBNZW1vcnktc2VnbWVudGF0aW9uIGxpbWl0cyBhbmQgYSBzdHJvbmcgdGVuZGVuY3kgdG8gbG9vayBsaWtlIFY3IGxvbmcgYWZ0ZXIKLSMgaXQgd2FzIG9ic29sZXRlIG1hZGUgYWxsIHRocmVlIHByZXR0eSBsYW1lLiAgVmVuaXggY3JvYWtlZCBlYXJseS4gIENvaGVyZW50Ci0jIGFuZCBNaW5peCB3ZXJlIHBvcnRlZCB0byAzMi1iaXQgSW50ZWwgYm94ZXMsIG9ubHkgdG8gYmUgcnVuIG92ZXIgYnkgYQotIyBzdGVhbXJvbGxlciBuYW1lZCBgTGludXgnICh3aGljaCwgdG8gYmUgZmFpciwgdHJhY2VzIHNvbWUgbGluZWFnZSB0byBNaW5peCkuCi0jIENvaGVyZW50J3MgdmVuZG9yLCB0aGUgTWFyayBXaWxsaWFtcyBDb21wYW55LCB3ZW50IGJlbGx5LXVwIGluIDE5OTQuICBUaGVyZQotIyBhcmUgYWxzbywgSSdtIHRvbGQsIE1pbml4IHBvcnRzIHRoYXQgcmFuIG9uIEFtaWdhIGFuZCBBdGFyaSBtYWNoaW5lcyBhbmQKLSMgZXZlbiBhcyBzaW5nbGUgcHJvY2Vzc2VzIHVuZGVyIFN1bk9TIGFuZCB0aGUgTWFjaW50b3NoIE9TLgotIwotCi0jIFRoaXMgaXMgdGhlIGVudHJ5IHByb3ZpZGVkIHdpdGggbWluaXggMS43LjQsIHdpdGggYm9ndXMgOnJpOiByZW1vdmVkLgotbWluaXh8bWluaXggY29uc29sZSAodjEuNyksCi0JYW0sIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzBKLCBjcj1eTSwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbMEosIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFWzBtLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2YwPVxFW1ksIGtmMT1cRVtWLCBrZjI9XEVbVSwga2YzPVxFW1QsIGtmND1cRVtTLAotCWtmNT1cRVtHLCBraG9tZT1cRVtILCBsZjA9RW5kLCBsZjE9UGdVcCwgbGYyPVBnRG4sIGxmMz1OdW0gKywKLQlsZjQ9TnVtIC0sIGxmNT1OdW0gNSwgbmVsPV5NXkosIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtc289XEVbMG0sIHJtdWw9XEVbMG0sIHNncjA9XEVbMG0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jIENvcnJlY3RlZCBKYW4gMTQsIDE5OTcgYnkgVmluY2VudCBCcm9tYW4gPGJyb21hbkBub3NjLm1pbD4KLW1pbml4LW9sZHxtaW5peCBjb25zb2xlICh2MS41KSwKLQl4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JYmVsPV5HLCBibGluaz1cRVs1bSwgYm9sZD1cRVsxbSwgY2xlYXI9XEVbSFxFWzBKLCBjcj1eTSwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsCi0JY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsCi0JY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbMEosIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0Ja2JzPV5ILCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLAotCWtmMD1cRVtZLCBrZjE9XEVbViwga2YyPVxFW1UsIGtmMz1cRVtULCBrZjQ9XEVbUywga2Y1PVxFW0csCi0Ja2hvbWU9XEVbSCwgbmVsPV5NXkosIHJldj1cRVs3bSwgcmk9XEVNLCBybXNvPVxFWzBtLAotCXJtdWw9XEVbMG0sIHNncjA9XEVbMG0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jIFRoZSBsaW5ld3JhcCBvcHRpb24gY2FuIGJlIHNwZWNpZmllZCBieSBlZGl0aW5nIC91c3IvaW5jbHVkZS9taW5peC9jb25maWcuaAotIyBiZWZvcmUgcmVjb21waWxpbmcgdGhlIG1pbml4IDEuNSBrZXJuZWwuCi1taW5peC1vbGQtYW18bWluaXggY29uc29sZSB3aXRoIGxpbmV3cmFwLAotCWFtLCB1c2U9bWluaXgtb2xkLAotCi1wYy1taW5peHxtaW5peCBjb25zb2xlIG9uIGFuIEludGVsIGJveCwKLQl1c2U9a2xvbmUrYWNzLCB1c2U9bWluaXgsCi0KLSMgQWNjb3JkaW5nIHRvIHRoZSBDb2hlcmVudCAyLjMgbWFudWFsLCB0aGUgUEMgY29uc29sZSBpcyBzaW1pbGFyCi0jIHRvIGEgejE5LiBUaGUgZGlmZmVyZW5jZXMgc2VlbSB0byBiZSAoMSkgMjUgbGluZXMsICgyKSBubyBzdGF0dXMKLSMgbGluZSwgKDMpIHN0YW5kb3V0IGlzIGJyb2tlbiwgKDQpIGlucy9kZWwgbGluZSBpcyBicm9rZW4sICg1KQotIyBoYXMgYmxpbmtpbmcgYW5kIGJvbGQuCi1wYy1jb2hlcmVudHxwY3oxOXxjb2hlcmVudHxJQk0gUEMgY29uc29sZSBydW5uaW5nIENvaGVyZW50LAotCWFtLCBtaXIsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjUsCi0JYmVsPV5HLCBjbGVhcj1cRUUsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRjaDE9XEVOLAotCWVkPVxFSiwgZWw9XEVLLCBob21lPVxFSCwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1cRUQsCi0Ja2N1ZDE9XEVCLCBrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2hvbWU9XEVILCByaT1cRUksIHJtaXI9XEVPLAotCXJtc289XEVxLCBzZ3IwPVxFcSwgc21pcj1cRUAsIHNtc289XEVwLAotCi0jIEFjY29yZGluZyB0byB0aGUgVmVuaXggMS4xIG1hbnVhbCwgdGhlIFBDIGNvbnNvbGUgaXMgc2ltaWxhcgotIyB0byBhIERFQyB2dDUyLiAgRGlmZmVyZW5jZXMgc2VlbSB0byBiZSAoMSkgYXJyb3cga2V5cyBzZW5kCi0jIGRpZmZlcmVudCBzdHJpbmdzLCAoMikgZW5oYW5jZWQgc3RhbmRvdXQsICgzKSBhZGRlZCBpbnNlcnQvZGVsZXRlIGxpbmUuCi0jIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSBhdXRvbWF0aWMgbWFyZ2lucy4KLSMgVGhlcmUgYXJlIG90aGVyIGtleXMgKGYxLWYxMCwga3BwLCBrbnAsIGtjYnQsIGtpY2gxLCBrZGNoMSkgYnV0IHRoZXkKLSMgbm90IGRlc2NyaWJlZCBoZXJlIGJlY2F1c2UgdGhpcyBkZXJpdmVzIGZyb20gYW4gb2xkIHRlcm1jYXAgZW50cnkuCi1wYy12ZW5peHx2ZW5peHxJQk0gUEMgY29uc29sZSBydW5uaW5nIFZlbml4LAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LAotCWJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGRsMT1cRU0sCi0JZWQ9XEVKLCBlbD1cRUssIGh0PV5JLCBpbDE9XEVMLCBpbmQ9XkosIGticz1eSCwga2N1YjE9XEVLLAotCWtjdWQxPVxFUCwga2N1ZjE9XEVNLCBrY3V1MT1cRUgsIGtob21lPVxFRywgcmk9XEVJLAotCi0jIyMjIE1pc2NlbGxhbmVvdXMgbWljcm9jb21wdXRlciBjb25zb2xlcwotIwotIyBJZiB5b3Uga25vdyBhbnl0aGluZyBtb3JlIGFib3V0IGFueSBvZiB0aGVzZSwgcGxlYXNlIHRlbGwgbWUuCi0jCi0KLSMgVGhlIE1BSSBCYXNpYyBGb3VyIGNvbXB1dGVyIHdhcyBvYnNvbGV0ZSBhdCB0aGUgZW5kIG9mIHRoZSAxOTgwcy4KLSMgSXQgbWF5IGJlIHVzZWQgYXMgYSB0ZXJtaW5hbCBieSBwdXR0aW5nIGl0IGluICJsaW5lIiBtb2RlIGFzIHNlZW4gb24KLSMgb25lIG9mIHRoZSBzdGF0dXMgbGluZXMuCi0jIEluaXRpYWxpemF0aW9uIGlzIHNpbWlsYXIgdG8gQ0lUODAuIDxpczI+IHdpbGwgc2V0IEFOU0kgbW9kZSBmb3IgeW91LgotIyBIYXJkd2FyZSB0YWJzIHNldCBieSA8aWY+IGF0IDgtc3BhY2luZy4gIEF1dG8gbGluZSB3cmFwIGNhdXNlcyBnbGl0Y2hlcyBzbwotIyB3cmFwIG1vZGUgaXMgcmVzZXQgYnkgPGN2dmlzPi4gIFVzaW5nIDxpbmQ+PVxFW1MgY2F1c2VkIGVycm9ycyBzbyBJCi0jIHVzZWQgXEVEIGluc3RlYWQuCi0jIEZyb206IGJmMzQ3QGxhZm4ub3JnIChEYXZpZCBMYXd5ZXIpLCAyOCBKdW4gMTk5NwotbWFpfGJhc2ljNHxNQUkgQmFzaWMgRm91ciBpbiBhbnNpIG1vZGUsCi0JYW0sIGRhLCBkYiwgbWlyLCBtc2dyLAotCWNvbHMjODIsIGl0IzgsIGxpbmVzIzI1LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPV5dXl8sIGNub3JtPVxFWz83aCwKLQljcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5YLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1eWiwgY3Z2aXM9XEVbPzdsLCBkY2gxPVxFWzFQLAotCWRsMT1cRVtNLCBlZD1eXywgZWw9Xl4sIGhvbWU9Xl0sIGh0PV5JLAotCWlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczI9XEU+XEVbPzFoXEVbPzdoXEVbPzVsXDAxN1xFKEJcRVttXEVbMjBsXEVbMTsyNHJcRVsyNDsxSCwKLQlrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsCi0Ja2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtmNT1cRU9ULCBrZjY9XEVPVSwKLQlrZjc9XEVPViwga2Y4PVxFT1csIG5lbD1eTVxFRCwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFW1QsCi0Jcm1pcj1cRVs0bCwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNjPVxFNywgc2dyMD1cRVttLAotCXNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jIGJhc2lzIGZyb20gUGV0ZXIgSGFycmlzb24sIENvbXB1dGVyIEdyYXBoaWNzIExhYiwgU2FuIEZyYW5jaXNjbwotIyAgIHVjYnZheCF1Y3NmbWlzIWhhcnJpc29uIC4uLnV1Y3AgLyB1Y2J2YXghdWNzZm1pcyFoYXJyaXNvbkBCRVJLRUxFWSAuLi5BUlBBCi0jCi0jIE9uIFNhdCwgNyBBdWcgMTk5OSwgVG9yc3RlbiBKZXJ6ZW1iZWNrIDx0b2plQG5pZ2h0aW5nYWxlLm1zLnN1Yi5vcmc+IHdyb3RlOgotIyBUaGUgQmFzaXMgMTA4IHdhcyBhIEFwcGxlIElJIGNsb25lLCBtYW51ZmFjdHVyZWQgYnkgdGhlICJCYXNpcwotIyBNaWtyb2NvbXB1dGVyIEdtYkgiIGluIE11bnN0ZXIsIEdlcm1hbnkgKHRoZSBjb21wYW55IHN0aWxsIGV4aXN0cyB0b2RheSwKLSMgYWJvdXQgMSw1IGttIGZyb20gd2hlcmUgSSBsaXZlLCBidXQgZG9lc24ndCBidWlsZCBvd24gY29tcHV0ZXJzIGFueQotIyBtb3JlKS4gQSBCYXNpcyAxMDggZmVhdHVyZWQgYSByZWFsbHkgaGVhdnkgKGNhc3QgYWx1bWluaXVtPykgY2FzZSwgd2FzCi0jIGVxdWlwcGVkIHdpdGggb25lIG9yIHR3byA1LjI1IiBkaXNrIGRyaXZlcywgaGFkIGEgbW9ub2Nocm9tZSBhbmQgY29sb3VyCi0jIHZpZGVvIG91dHB1dCBmb3IgYSBUViBzZXQgb3IgYSBkZWRpY2F0ZWQgbW9uaXRvciBhbmQgc2V2ZXJhbCBzbG90cyBmb3IKLSMgQXBwbGUgSUkgY2FyZHMuIEJhc2lzIDEwOCB3ZXJlIHF1aXRlIHBvcHVsYXIgYXQgZ2VybWFuIHNjaG9vbHMgYmVmb3JlCi0jIHRoZSBhZHZlbnQgb2YgdGhlIElCTSBQQy4gVGhleSBydW4sIGZvciBleGFtcGxlLCB0aGUgVUNTRCBQYXNjYWwKLSMgZGV2ZWxvcG1lbnQgc3lzdGVtICh3aGljaCBJIHVzZWQgZXZlbiBpbiAxOTkzIHRvIHByb2dyYW0gdGhlIHN0ZWVyaW5nCi0jIGFuZCBkYXRhIHJlY29yZGluZyBmb3Igb3VyIHNjaG9vbCdzIGV4cGVyaW1lbnRhbCBzb2xhciBwYW5lbCA6KSwgQXBwbGUgRE9TCi0jIG9yIENQL00uCi0jIChiYXNpczogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5LXlBeUl5MXkwgOm5sPTUwMDAqXko6IiAtLSBlc3IpCi1iYXNpc3xCQVNJUzEwOCBjb21wdXRlciB3aXRoIHRlcm1pbmFsIHRyYW5zbGF0aW9uIHRhYmxlIGFjdGl2ZSwKLQljbGVhcj1cRSokPDMwMC8+LCBjdWQxPVxuJDw1MDAwLz4sIGVkPVxFWSwgZWw9XEVULCBrYnM9XkgsCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIHJtc289XEUpLCBzZ3IwPVxFKSwKLQlzbXNvPVxFKCwgdXNlPWFkbTNhLAotIyBsdW5hJ3MgQk1DIHRlcm1pbmFsIGVtdWxhdG9yCi1sdW5hfGx1bmE2OGt8TFVOQTY4SyBCaXRtYXAgY29uc29sZSwKLQljb2xzIzg4LCBsaW5lcyM0NiwgdXNlPWFuc2ktbWluaSwKLW1lZ2F0ZWt8cGVnYXN1cyB3b3Jrc3RhdGlvbiB0ZXJtaW5hbCBlbXVsYXRvciwKLQlhbSwgb3MsCi0JY29scyM4MywgbGluZXMjNjAsCi0jIFRoZSBYZXJveCA4MjAgd2FzIGEgWjgwIG1pY3JvIHdpdGggYSBzbmF6enkgWEVST1ggUEFSQy1kZXJpdmVkCi0jIGludGVyZmFjZSAocHJlLU1hY2ludG9zaCBieSBzZXZlcmFsIHllYXJzKSB0aGF0IHdlbnQgbm93aGVyZS4KLXhlcm94ODIwfHg4MjB8WGVyb3ggODIwLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9MV5aLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBlZD1eUSwgZWw9XlgsCi0JaG9tZT1eXiwgaW5kPV5KLAotCi0jIyMjIFZpZGVvdGV4IGFuZCB0ZWxldGV4dAotIwotCi0jIFxFXDoxfQlzd2l0Y2ggdG8gdGUnbGUnaW5mb3JtYXRpcXVlIG1vZGUgKGFzY2lpIHRlcm1pbmFsL0lTTyA2NDI5KQotIyBcRVs/M2wJODAgY29sdW1ucwotIyBcRVs/NGwJc2Nyb2xsaW5nIG9uCi0jIFxFWzEyaAlsb2NhbCBlY2hvIG9mZgotIyBcRWMJCXJlc2V0OiBHMCBVLlMuIGNoYXJzZXQgKHRvIGdldCAjLEAseyx9LC4uLiksIDgwIGNvbHMsIGNsZWFyIHNjcmVlbgotIyBcRSkwCQlHMSBERUMgc2V0IChsaW5lIGdyYXBoaWNzKQotIwotIyBGcm9tOiBJZ29yIFRhbWl0ZWdhbWEgPGlnb3JAcHBwMTQ5My1mdC50ZWFzZXIuZnI+LCAxOCBKYW4gMTk5NwotbTItbmFtfG1pbml0ZWx8bWluaXRlbC0yfG1pbml0ZWwtMi1uYW18RnJhbmNlIFRlbGVjb20gTWluaXRlbCAyIG1vZGUgdGUnbGUnaW5mb3JtYXRpcXVlLAotCU9UYnMsIGVzbG9rLCBocywgeGVubCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzcyLCB4bWMjMCwKLQlhY3NjPWFhZmZnZ2pqa2tsbG1tbm5vb3Fxc3N0dHV1dnZ3d3h4LCBiZWw9XkcsCi0JYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWzwxaCwgY2xlYXI9XEVbSFxFW0osCi0JY25vcm09XEVbPDFsLCBjcj1eTSwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLAotCWN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwgY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGZsYXNoPV5HLCBmc2w9XkosCi0JaG9tZT1cRVtILCBodD1eSSwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPV5KLCBpcD0kPDcvPiwKLQlpczE9XEVcOjF9XEVjXEVbPzRsXEVbMTJoLCBpczI9XEVjXEVbMTJoXEUpMCwKLQlpczM9XEVbPzNsIGticz1cMDEwLCBrY2xyPVxFWzJKLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFW1AsIGtkbDE9XEVbTSwga2YwPVxFT3AsCi0Ja2YxPVxFT3EsIGtmMTA9XEVPcCwga2YyPVxFT3IsIGtmMz1cRU9zLCBrZjQ9XEVPdCwga2Y1PVxFT3UsCi0Ja2Y2PVxFT3YsIGtmNz1cRU93LCBrZjg9XEVPeCwga2Y5PVxFT3ksIGtob21lPVxFW0gsCi0Ja2ljaDE9XEVbNGgsIGtpbDE9XEVbNGwsIGtucD1cRU9uLCBrcHA9XEVPUiwgbGw9XEVbMjQ7ODBILAotCW1jMD1cRVtpLCBuZWw9Xk1eSiwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sCi0Jcm1pcj1cRVs0bCwgcm1zbz1cRVsyN20sIHJtdWw9XEVbMjRtLAotCXJzMT1cRWNcRVs/NGxcRVsxMmgsIHJzMj1cRWNcRSkwLCBzYz1cRTcsIHNncjA9XEVbbSwKLQlzbWFjcz1eTiwgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwgc211bD1cRVs0bSwgdHNsPV5fQEEsCi0JdTY9XEVbJWklZDslZFIsIHU3PVxFWzZuLAotCi0jIEZyb206IEFsZXhhbmRyZSBNb250YXJvbiA8Y2FuYWxAbXlnYWxlLm9yZz4sIDE4IEp1biAxOTk4Ci0jCi1taW5pdGVsMXxtaW5pdGVsIDEsCi0JYW0sIGJ3LCBlc2xvaywgaHMsIGh6LCBtc2dyLAotCWNvbG9ycyM4LCBjb2xzIzQwLCBsaW5lcyMyNCwgcGFpcnMjOCwKLQlhY3NjPSsuXCxcLC4vZjBnMSwgYmVsPV5HLCBibGluaz1cRUgsIGNpdmlzPV5ULCBjbGVhcj1eTCwKLQljbm9ybT1eUSwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkksCi0JY3VwPVwwMzclcDElezY1fSUrJWMlcDIlezY1fSUrJWMsIGN1dTE9XkssIGVsPV5YLAotCWVuYWNzPV5ZLCBmc2w9XkosIGhvbWU9Xl4sIGluZD1eSiwKLQlpczI9XEU7YFpRXEVcOmlDXEVcOmlFXDAyMSwgbmVsPV5NXkosIG9wPVxFRywKLQlyZXA9JXAxJWNcMDIyJXAyJXs2M30lKyVjLCByZXY9XEVdLCByaT1eSywgcm1zbz1cRVxcLAotCXNldGY9XEUlPyVwMSV7MX0lPSV0RCVlJXAxJXszfSU9JXRGJWUlcDElezR9JT0ldEElZSVwMSV7Nn0lPSV0QyVlJXAxJXs2NH0lKyVjJTssCi0Jc2dyPSU/JXAxJXRcRV0lOyU/JXAzJXRcRV0lOyU/JXA0JXRcRUglOywKLQlzZ3IwPVxFSVxFXFwsIHNtc289XEVdLCB0c2w9XDAzN0AlcDElezY1fSUrJWMsCi0jIGlzMj1GbmN0IFRFLCBGbmN0IE1SLCBGbmN0IENNIGV0IHBvdXIgZmluaXI6IGN1cnNldXIgT04uCi1taW5pdGVsMWJ8bWluaXRlbCAxLWJpc3RhbmRhcmQgKGluIDQwY29scyBtb2RlKSwKLQltaXIsCi0JY3ViPVxFWyVwMSVkRCwgY3VkPVxFWyVwMSVkQiwgY3VmPVxFWyVwMSVkQywKLQljdXU9XEVbJXAxJWRBLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwKLQlkbDE9XEVbTSwgZWQ9XEVbSiwgZWwxPVxFWzFLLCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLAotCWlzMT1cRTtpWUFcRTtqWUMsIGtjbHI9XEVbMkosIGtjdGFiPV5JLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFW1AsIGtkbDE9XEVbTSwKLQlrZWw9XlgsIGtob21lPVxFW0gsIGtpY2gxPVxFWzRoLCBraWwxPVxFW0wsIHJtaXI9XEVbNGwsCi0Jc21pcj1cRVs0aCwgc21reD1cRTtpWUFcRTtqWUMsIHVzZT1taW5pdGVsMSwKLSMgPHJta3g+IHBvc2FpdCBkZXMgcHJvYmxlbWVzIChsb2dvdXQgZW4gc29ydGFudCBkZSB2aSkuCi1taW5pdGVsMWItODB8bWluaXRlbCAxLWJpc3RhbmRhcmQgKHN0YW5kYXJkIHRlbGVpbmZvcm1hdGlxdWUpLAotCWFtQCwgYndALCBoekAsCi0JY29sb3JzQCwgY29scyM4MCwgaXQjOCwgcGFpcnNALAotCWJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cMDM3QEFcMDI0XG4sCi0JY2xlYXI9XEVbSFxFWzJKLCBjbm9ybT1cMDM3QEFcMDIxXG4sIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZWw9XEVbSywgaG9tZT1cRVtILAotCWh0PV5JLCBpbmQ9XEVELCBpczFALCBpczJALCBrZW50PVxFT00sIGtmMD1cRU9wLCBrZjE9XEVPcSwKLQlrZjI9XEVPciwga2YzPVxFT3MsIGtmND1cRU90LCBrZjU9XEVPdSwga2Y2PVxFT3YsIGtmNz1cRU93LAotCWtmOD1cRU94LCBrZjk9XEVPeSwgbmVsPVxFRSwgb3BALCByYz1cRTgsIHJlcEAsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJta3hALCBybXNvPVxFWzI3bSwgcm11bD1cRVsyNG0sIHNjPVxFNywgc2V0ZkAsCi0Jc2dyPVxFWyU/JXAxJXQ3OyU7JT8lcDIldDQ7JTslPyVwMyV0NzslOyU/JXA0JXQ1OyU7JT8lcDYldDE7JTttLAotCXNncjA9XEVbbSwgc21reEAsIHNtc289XEVbN20sIHNtdWw9XEVbNG0sIHVzZT1taW5pdGVsMWIsCi0KLSMjIyMjIyMjIE9CU09MRVRFIFZEVCBUWVBFUwotIwotIyBUaGVzZSB0ZXJtaW5hbHMgYXJlICpsb25nKiBkZWFkIC0tIHRoZXNlIGVudHJpZXMgYXJlIHJldGFpbmVkIGZvcgotIyBoaXN0b3JpY2FsIGludGVyZXN0IG9ubHkuCi0KLSMjIyMgQW10ZWsgQnVzaW5lc3MgTWFjaGluZXMKLSMKLQotIyAoYWJtODA6IGVhcmx5IHZlcnNpb25zIG9mIHRoaXMgZW50cnkgYXBwYXJlbnRseSBoYWQgIjpzZT1cRV5fOnNvPVxFXlkiLAotIyBidXQgdGhlc2UgY2FwcyB3ZXJlIGNvbW1lbnRlZCBvdXQgaW4gOC4zOyBhbHNvLCByZW1vdmVkIG92ZXJyaWRkZW4KLSMgIjpkbz1eSjoiIC0tIGVzcikKLWFibTgwfGFtdGVrIGJ1c2luZXNzIG1hY2hpbmVzIDgwLAotCU9UYnMsIGFtLCBidywKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljYnQ9XlQsIGNsZWFyPVxFXlwsIGN1YjE9XkgsIGN1ZDE9XEVeSywgY3VmMT1eUCwKLQljdXA9XEVcMDIxJXAyJXszMn0lKyVjJXAxJXszMn0lKyVjLCBjdXUxPVxFXkwsCi0JZGwxPVxFXlMsIGVkPVxFXlgsIGVsPVxFXk8sIGhvbWU9XEVeUiwgaWwxPVxFXlosCi0KLSMjIyMgQmVsbCBMYWJzIGJsaXQgdGVybWluYWxzCi0jCi0jIFRoZXNlIHdlcmUgQVQmVCdzIG9mZmljaWFsIGVudHJpZXMuICBUaGUgNTYyMCBGQVEgbWFpbnRhaW5lZCBieQotIyBEYXZpZCBCcmVuZW1hbiA8ZGF2ZWJAZGd0bC5jb20+IGhhcyB0aGlzIHRvIHNheToKLSMKLSMgIEFjdHVhbGx5LCBpbiB0aGUgYmVnaW5uaW5nIHdhcyB0aGUgSmVycSwgYW5kIHRoZSBKZXJxIHdhcyB3aGl0ZSB3aXRoIGEKLSMgIGdyZWVuIGZhY2UsIGFuZCBMb2NhbnRoaSBhbmQgUGlrZSBsb29rZWQgdXBvbiB0aGUgSmVycSBhbmQgc2FpZCB0aGUgSmVycQotIyAgd2FzIGdvb2QuICBCdXQgbG8sIHVwb24gdGhlIGhvcml6b24gbG9vbWVkIGEgbWlnaHR5IG1hbmFnZW1lbnQtdHlwZSBwZXJzb24KLSMgIChrbm93biBub3cgb25seSBieSB0aGUgaW5pdGlhbHMgVlApIHdobyBzYWlkLCB0aGUgbWlnaHR5IEplcnEgbXVzdCBzdGF5Ci0jICBhbG9uZSwgYW5kIGNvdWxkIG5vdCBnbyBmb3J0aCBpbnRvIHRoZSB3b3JsZC4gU28gTG9jYW50aGkgYW5kIFBpa2UgcHV0IHRoZQotIyAgSmVycSB0byBzbGVlcCwgY2xvbmVkIGl0cyBwYXJ0cywgYW5kIHRoZSBCbGl0IHdhcyBicm91Z2h0IGZvcnRoIHVudG8gdGhlCi0jICB3b3JsZC4gQW5kIHRoZSBKZXJxIGxpdmVkIHRoZSByZXN0IG9mIGl0cyBkYXlzIGluIHJlc2VhcmNoLCBidXQgbmV2ZXIKLSMgIHN0cmF5ZWQgZnJvbSB0aG9zZSBwYXRocy4KLSMKLSMgIEluIGFsbCBzZXJpb3VzbmVzcywgdGhlIEJsaXQgd2FzIG9yaWdpbmFsbHkga25vd24gYXMgdGhlIEplcnEsIGJ1dCB3aGVuCi0jICBpdCBzdGFydGVkIHRvIGJlIHNob3duIG91dHNpZGUgb2YgdGhlIGhhbGxzIG9mIHRoZSBCZWxsIExhYnMgUmVzZWFyY2gKLSMgIG9yZ2FuaXphdGlvbiwgdGhlIG1hbmFnZW1lbnQgcG93ZXJzIHRoYXQgYmUgZGVjaWRlZCB0aGF0IHRoZSBuYW1lIGNvdWxkCi0jICBub3QgcmVtYWluLiBTbyBpdCB3YXMgcmVuYW1lZCB0byBiZSBCbGl0LiBUaGlzIHdhcyBpbiBsYXRlIDE5ODEuCi0jCi0jIChUaGUgQVQmVCA1NjIwIHdhcyB0aGUgY29tbWVyY2lhbGl6ZWQgQmxpdC4gIEl0cyBzdWNjZXNzb3JzIHdlcmUgdGhlIDYzMCwKLSMgNzMwLCBhbmQgNzMwKy4pCi0jCi0KLWJsaXR8amVycXxibGl0IHJ1bm5pbmcgdGVsZXR5cGUgcm9tLAotCWFtLCBlbywgdWwsIHhvbiwKLQljb2xzIzg3LCBpdCM4LCBsaW5lcyM3MiwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1cRUQsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRVklcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9XEVBLAotCWRjaD1cRWUlcDElezMyfSUrJWMsIGRjaDE9XEVlISwgZGw9XEVFJXAxJXszMn0lKyVjLAotCWRsMT1cRUUhLCBlbD1cRUssIGh0PV5JLCBpY2g9XEVmJXAxJXszMn0lKyVjLCBpY2gxPVxFZiEsCi0JaWw9XEVGJXAxJXszMn0lKyVjLCBpbDE9XEVGISwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFRCwKLQlrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZjE9XEV4LCBrZjI9XEV5LCBrZjM9XEV6LAotCi0jIChjYmJsaXQ6IGhlcmUncyBhIEJTRCB0ZXJtY2FwIHRoYXQgc2F5cyA8Y3VkMT1cRUc+IC0tIGVzcikKLWNiYmxpdHxmaXh0ZXJtfGJsaXQgcnVubmluZyBjb2x1bWJ1cyBjb2RlLAotCWNvbHMjODgsCi0JZWQ9XEVKLCBmbGFzaD1cRV5HLCBpY2gxQCwgbWM0PV5ULCBtYzU9XlIsIG1jNXA9XEVQJXAxJTAzZCwKLQlybWlyPVxFUiwgcm1zbz1cRVYhLCBybXVsPVxFViIsIHNtaXI9XEVRLCBzbXNvPVxFVSEsCi0Jc211bD1cRVUiLCB1c2U9YmxpdCwKLQotb2JsaXR8b2plcnF8Zmlyc3QgdmVyc2lvbiBvZiBibGl0IHJvbSwKLQlhbSwgZGEsIGRiLCBlbywgbWlyLCB1bCwgeG9uLAotCWNvbHMjODgsIGl0IzgsIGxpbmVzIzcyLAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPVxFRCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMiV7MzJ9JSslYyVwMSV7MzJ9JSslYywgY3V1MT1cRUEsIGRjaDE9XEVPLAotCWRsPVxFZSVwMSV7MzJ9JSslYywgZGwxPVxFRSwgZWQ9XEVKLCBlbD1cRUssIGZsYXNoPVxFXkcsCi0JaHQ9XkksIGlsPVxFZiVwMSV7MzJ9JSslYywgaWwxPVxFRiwgaW5kPV5KLCBrYnM9XkgsIHJtaXI9XEVSLAotCXNtaXI9XEVRLAotCi0jIyMjIEJvbHQsIEJlcmFuZWsgJiBOZXdtYW4gKGJibikKLSMKLSMgVGhlIEJpdEdyYXBoIHdhcyBhIHByb2R1Y3Qgb2YgdGhlIG5vdy1kZWZ1bmN0IEJCTiBDb21wdXRlciBDb3Jwb3JhdGlvbi4KLSMgVGhlIHBhcmVudCBjb21wYW55LCBiZXN0IGtub3duIGFzIHRoZSBhcmNoaXRlY3RzIG9mIHRoZSBJbnRlcm5ldCwgaXMKLSMgc3RpbGwgYXJvdW5kLgotIwotIyBKZWZmIERlbFBhcGEgPGRwQHdvcmxkLnN0ZC5jb20+IHdyaXRlczoKLSMgVGhlIGJpdGdyYXBoIHdhcyBhIGxhcmdlIHdoaXRlIGJveCB0aGF0IGNvbnRhaW5lZCBhIG1vbm9jaHJvbWUgYml0bWFwCi0jIGRpc3BsYXksIGFuZCBhIDY4MDAwIHRvIHJ1biBpdC4gIFlvdSBjb3VsZCBkb3dubG9hZCBjb2RlIGFuZCBydW4gaXQgb24KLSMgdGhlIGNwdSwgaXQgaGFkIDEyOGtiIChJIHRoaW5rKSBvZiBtZW1vcnkuICBJIHVzZWQgb25lIGluIHRoZSBsYXRlCi0jIDcwJ3MsIHN1cmUgYmVhdCBhIHZ0MTAwLiAgSXQgaGFkIG9uZSBzdHJhbmdlIGZlYXR1cmUgdGhvIC0tIGl0IHVzZWQKLSMgdGhlIGNwdSB0byBiaXRibHQgcGl4ZWxzIHRvIHNjcm9sbCwgaXQgdG9vayBsb25nZXIgdGhhbiB0aGUgcmVmcmVzaAotIyByYXRlLCBhbmQgbG9va2VkIGxpa2UgYSBydWJiZXIgc2hlZXQgc3RyZXRjaGluZywgdGhlbiBzbmFwcGluZwotIyB1cHdhcmRzLiAgSXQgaGFkIGV2ZXJ5dGhpbmcgdGhlIGVhcmx5IG1hYyBoYWQsIGV4Y2VwdCBhIGZsb3BweSBkcml2ZSBhCi0jIHNtYWxsIHNjcmVlbiAoaXQgaGFkIGEgMTciIGNyaXNwIGJlYXV0eSkgYW5kIGEgcmVhbCBPUy4gVGhleSAoQm9sdAotIyBCZXJhbmVrIGFuZCBOZXVtYW4pIHNvbGQgYXQgbW9zdCBhIGZldyBodW5kcmVkIG9mIHRoZW0gdG8gdGhlIHJlYWwKLSMgd29ybGQuICBET0QgbWF5IGhhdmUgYm91Z2h0IG1vcmUuLi4KLSMKLQotIyBFbnRyaWVzIGZvciB0aGUgQml0R3JhcGggdGVybWluYWxzLiAgVGhlIHByb2JsZW0KLSMgd2l0aCBzY3JvbGxpbmcgaW4gdmkgY2FuIG9ubHkgYmUgZml4ZWQgYnkgZ2V0dGluZyBCQk4gdG8gcHV0Ci0jIHNtYXJ0ZXIgc2Nyb2xsIGxvZ2ljIGluIHRoZSB0ZXJtaW5hbCBvciBjaGFuZ2luZyB2aSBvciBwYWRkaW5nCi0jIHNjcm9sbHMgd2l0aCBhYm91dCA1MDAgbXMgZGVsYXkuCi0jCi0jIEkgYWx3YXlzIHRob3VnaHQgdGhlIHByb2JsZW0gd2FzIHJlbGF0ZWQgdG8gdGhlIHRlcm1pbmFsCi0jIGNvdW50aW5nIG5ld2xpbmVzIGluIGl0cyBpbnB1dCBidWZmZXIgYmVmb3JlIHNjcm9sbGluZyBhbmQKLSMgdGhlbiBtb3ZpbmcgdGhlIHNjcmVlbiB0aGF0IG11Y2guIFRoZW4gdmkgY29tZXMgYWxvbmcgYW5kCi0jIHBhaW50cyBsaW5lcyBpbiBvbiB0aGUgYm90dG9tIGxpbmUgb2YgdGhlIHNjcmVlbiwgc28geW91IGdldAotIyB0aGlzIGJpZyB3aGl0ZSBnYXAuCi0KLWJpdGdyYXBofGJnMi4wbnZ8YmczLjEwbnZ8YmJuIGJpdGdyYXBoIDIuMCBvciBsYXRlciAobm9ybWFsIHZpZGVvKSwKLQlmbGFzaD1cRVs/NWgkPDIwMC8+XEVbPzVsLCBpczI9XEU+XEVbPzVsXEVbPzdoLAotCXVzZT1iZzIuMCwKLWJnMi4wcnZ8YmczLjEwcnZ8YmJuIGJpdGdyYXBoIDIuMCAocmV2ZXJzZSB2aWRlbyksCi0JZmxhc2g9XEVbPzVsJDwyMDAvPlxFWz81aCwgaXMyPVxFPlxFWz81aFxFWz83aCwKLQl1c2U9YmcyLjAsCi1iZzIuMHxiZzMuMTB8YmJuIGJpdGdyYXBoIDIuMCBvciBsYXRlciAobm8gaW5pdCksCi0JT1RicywgeGVubCwKLQljb2xzIzg1LCBsaW5lcyM2NCwKLQliZWw9XkcsIGNsZWFyPVxFW0hcRVtKJDwxNTA+LCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1YjE9XkgsIGN1ZDE9XEVbQiwgY3VmMT1cRVtDLAotCWN1cD0laVxFWyVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkbDE9XEVbTSQ8Mio+LAotCWVkPVxFW0okPDE1MD4sIGVsPVxFW0skPDI+LCBodD1eSSwgaWwxPVxFW0wkPDIqPiwKLQlpbmQ9XG4kPDI4MD4sIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsCi0Ja2N1dTE9XEVbQSwga2YxPVxFT1AsIGtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGxmMT1QRjEsCi0JbGYyPVBGMiwgbGYzPVBGMywgbGY0PVBGNCwgcmM9XEU4LCBybWt4PVxFPiwgcm1zbz1cRVttLCBzYz1cRTcsCi0Jc2dyMD1cRVttLCBzbWt4PVxFPSwgc21zbz1cRVs3bSwKLQotYmcxLjI1cnZ8YmJuIGJpdGdyYXBoIDEuMjUgKHJldmVyc2UgdmlkZW8pLAotCWZsYXNoPVxFWz81bCQ8MjAwLz5cRVs/NWgsIGlzMj1cRT5cRVs/NWhcRVs/N2gsCi0JdXNlPWJnMS4yNSwKLWJnMS4yNW52fGJibiBiaXRncmFwaCAxLjI1IChub3JtYWwgdmlkZW8pLAotCWZsYXNoPVxFWz81aCQ8MjAwLz5cRVs/NWwsIGlzMj1cRT5cRVs/NWxcRVs/N2gsCi0JdXNlPWJnMS4yNSwKLSMgKGJnMS4yNTogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1iZzEuMjV8YmJuIGJpdGdyYXBoIDEuMjUsCi0JY29scyM4NSwgbGluZXMjNjQsCi0JYmVsPV5HLCBjbGVhcj1cRVtIXEVbSiQ8MTUwPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XEVbQiwKLQljdWYxPVxFW0MsIGN1cD0laVxFWyVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLAotCWRsMT1cRVtNJDwyKj4sIGVkPVxFW0okPDE1MD4sIGVsPVxFW0skPDI+LCBodD1eSSwKLQlpbDE9XEVbTCQ8Mio+LCBpbmQ9XG4kPDI4MD4sIGtjdWIxPVxFRCwga2N1ZDE9XEVCLAotCWtjdWYxPVxFQywga2N1dTE9XEVBLCBrZjE9XEVQLCBrZjI9XEVRLCBrZjM9XEVSLCBrZjQ9XEVTLAotCWxmMT1QRjEsIGxmMj1QRjIsIGxmMz1QRjMsIGxmND1QRjQsIGxsPVxFWzY0OzFILCBybWFtPVxFWz83bCwKLQlybWt4PVxFPiwgcm1zbz1cRVttLCBzZ3IwPVxFW20sIHNtYW09XEVbPzdoLCBzbWt4PVxFPSwKLQlzbXNvPVxFWzdtLAotCi0jIyMjIEJ1bGwgKGJxLCBka3UsIHZpcCkKLSMKLSMgKEFkYXB0ZWQgZm9yIHRlcm1pbmZvOyBBSVggZXh0ZW5zaW9uIGNhcGFiaWxpdGllcyB0cmFuc2xhdGVkIC0tIGVzcikKLQotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IwotIyBCVUxMIFFVRVNUQVIgMjEwIGBTRFAnIHRlcm1pbmFscyBlbXVsYXRpb24gIwotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IwotIwotIyBEZXNjcmlwdGlvbiB3cml0dGVuIGJ5IFIuSy5TYXVuZGVycyAoQnVsbCBUcmFuc2FjKQotIwotIyBNb2RpZmljYXRpb25zIHdyaXR0ZW4gYnkgRi4gR2lyYXJkIChCdWxsIE1UUykKLSMJCTE5LTA1LTg3IFYwMi4wMC4wMQotIwkJMTctMTItODcgVjAyLjAwLjAyCi0jCQkxNS0wOS04OSBWMDIuMDAuMDUKLSMKLSMJVHlwaWNhbCB0ZWNobmljYWwgc2VsZWN0aW9ucyBGMSAobW9kZXMgU0RQL1JPTEwpOgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHwgICAwMSAgIDAyICAgMDMgICAwNCAgIDA1ICAgMDYgICAwNyAgIDA4ICAgMDkgICAxMCAgIHwKLSMgfCAgMTAxMCAwMDExIDEwMTAgMDExMCAwMTEwIDAwMDEgMDEwMCAwMDAwIDAwMDAgMDAwMCAgfAotIyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIHwgICAxMSAgIDEyICAgMTMgICAxNCAgIDE1ICAgMTYgICAxNyAgIDE4ICAgMTkgICAyMCAgIHwKLSMgfCAgMDAwMCAwMTEwIDEwMD8gMDAwMCAwMDAwIDAwMDAgMDAwMSAwMDAwIDAwMDAgMDAwMSAgfAotIyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIHwgICAyMSAgIDIyICAgMjMgICAyNCAgIDI1ICAgMjYgICAyNyAgIDI4ICAgMjkgICAzMCAgIHwKLSMgfCAgMDAxMSAwMDAwIDAwMDEgMTAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAgfAotIyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0jIHwgICAzMSAgIDMyICAgMzMgICAzNCAgIDM1ICAgMzYgICAzNyAgIDM4ICAgMzkgICA0MCAgIHwKLSMgfCAgMTAxMCAwMDExIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAgfAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCVR5cGljYWwgZmlybXdhcmUgaWRlbnRpZmljYXRpb24gRjUgImV0YXQgNiI6Ci0jICBQMjg3LjAyLjA0YgkoQVpFUlRZKQotIyAgUDI5Ny4xMS4wNAkoMjQtcGluOiAyNzMyKQlvciBQNzk4LjExLjA0CSgyOC1waW46IDI3NjQpCi0jICBQMjk4LjAzLjAzCShtb25vY2hyb21lKQlvciBQMzc0LjAzLjAyCShjb2xvdXIpCi0jCi0jCVNNIFNEUCBtb2RlIChWSVAgY29tbWFuZCk6CV5bWz89aAotIwlSSVMgKGVyYXNlcyBzY3JlZW4pOgkJXltjCi0jCURNSSBkaXNhYmxlIGtleWJvYXJkOgkJXltgCi0jCVNNIGRvdWJsZSByZW5kaXRpb24gbW9kZToJXltbPz5oCi0jCVJNIHNvbGljaXRlZCBzdGF0dXMgbW9kZToJXltbNWwKLSMJUk0gY2hhcmFjdGVyIG1vZGU6CQleW1s+bAotIwlSTSBlY2hvcGxleCBtb2RlOgkJXltbMTJsCi0jCVJNIGNvbHVtbiB0YWIgbW9kZToJCV5bWzE4bAotIwlSTSBmb3JiaWQgU1MyIGtleWJvYXJkIG1vZGU6CV5bWz88bAotIwlTTSBzY3JvbGwgbW9kZToJCQleW1s9aAotIwlGQ0YgZW5hYmxlIFhPTi9YT0ZGOgkJXltQMXNeW1wKLSMJTVRMIHNlbGVjdCBlbmQgbXNnIGNoYXJhY3RlcjoJXltbXldwCi0jCUVNSSBlbmFibGUga2V5Ym9hcmQ6CQleW2IKLSMJUklTIHJldG91ciBldGF0IGluaXRpYWw6CV5bYwotIwllbmFibGUgRkMga2V5cGFkOgkJXltbPzxoLAotIwlNUFcgbWFwIHN0YXR1cyBsaW5lIHdpbmRvdzoJXltQWTk5Ojk4XltcCi0jCVNDUCBzZWxlY3Qgc3RhdHVzIGxpbmU6CQleW1swOzk4dgotIwlFRCBlcmFzZSBlbnRpcmUgcGFydGl0aW9uOgleW1sySgotIwlTQ1Agc2VsZWN0IG1haW4gcGFydGl0aW9uOgleW1t2Ci0jCVNNIGNoYXJhY3RlciBpbnNlcnRpb24gbW9kZToJXltbNGgKLSMJUk0gY2hhcmFjdGVyIHJlcGxhY2VtZW50IG1vZGU6CV5bWzRsCi0jCUNPTyBjdXJzb3Igb246CQkJXltbcgotIwlDT08gY3Vyc29yIG9mZjoJCQleW1sxcgotIwlTR1IgZGltICh0dXJxdW9pc2UpIHJldiBhdHRyOgleW1syOzdtCi0jCVNHUiBEYXRhIG5vcm1hbCBhdHRyOgkJXltbbQotIwlTTyBMaW5lLWdyYXBoaWMgbW9kZSBPTjoJXk4KLSMJU0kgTGluZS1ncmFwaGljIG1vZGUgT0ZGOgleTwotIwlNQyBzdGFydCByb3V0aW5nIHRvIHByaW50ZXI6CV5bWzVpCi0jCU1DIHN0b3Agcm91dGluZyB0byBwcmludGVyOgleTV5bWzRpCi0jCi0KLSMgVGhpcyBlbnRyeSBjb3ZlcnMgdGhlIGZvbGxvd2luZyB0ZXJtaW5hbHM6Ci0jIGRrdTcxMDIsIHR3czIxMDIsIGFuZCB0d3MgbW9kZWxzIDIxMDUgdG8gMjExMgotdHdzLWdlbmVyaWN8ZGt1NzEwMnxCdWxsIFF1ZXN0YXIgdHdzIHRlcm1pbmFscywKLQlhbSwgZXNsb2ssIGhzLCBtaXIsIG1zZ3IsIHhlbmwsIHhocEAsIHhvbiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgd3NsIzgwLAotCWFjc2M9YGBhYWZmZ2dqKWtcLGwmbSNuL29vcHBxKnJyc3N0J3Utdit3LngleXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbMDs1bSwgY2J0PVxFW1osIGNpdmlzPVxFWzFyLCBjbGVhcj1cRVsySiwKLQljbm9ybT1cRVtyLCBjcj1eTSwgY3ViPVxFWyVwMSVkRCwgY3ViMT1eSCwgY3VkPVxFWyVwMSVkQiwKLQljdWQxPV5KLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkZiwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsIGRjaD1cRVslcDElZFAsIGRjaDE9XEVbUCwKLQlkaW09XEVbMDsybSwgZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwKLQlkc2w9XEVQWTk5XDo5OFxFXFxcRVswOzk4dlxFWzJKXEVbdiwgZWQ9XEVbSiwgZWw9XEVbSywKLQlmc2w9XEVbdiwgaG9tZT1cRVtILCBodD1cRVtJLCBodHM9XEVILCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1eSiwgaW52aXM9XEVbMDs4bSwKLQlpczE9XEVbPz1oXEVjXEVgXEVbPz5oXEVQWTk5XDo5OFxFXFwsCi0JaXMyPVxFWzU7PjsxMjsxODs/PGxcRVs9aFxFUDFzXEVcXFxFW1wwMjdwLAotCWlzMz1cRWJcRVs/PGgsIGticz1eSCwga2NidD1cRVtaLCBrY3RhYj1cRVtnLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFW1AsIGtkbDE9XEVbTSwKLQlrZWQ9XEVbSiwga2VsPVxFW0ssIGtmMT1cRVsxdVwwMjcsIGtmMj1cRVsydVwwMjcsCi0Ja2YzPVxFWzN1XDAyNywga2Y0PVxFWzR1XDAyNywga2Y1PVxFWzV1XDAyNywKLQlrZjY9XEVbNnVcMDI3LCBrZjc9XEVbN3VcMDI3LCBrZjg9XEVbOHVcMDI3LCBraG9tZT1cRVtILAotCWtodHM9XEVILCBraWwxPVxFW0wsIGtybWlyPVxFWzRsLCBsbD1cRVtIXEVbQSwgbWMwPVxFWzBpLAotCW1jND1cclxFWzRpLCBtYzU9XEVbNWksIHJldj1cRVswOzdtLCBybWFjcz1eTywKLQlybWN1cD1cRVswOzk4dlxFWzJKXEVbdiwgcm1pcj1cRVs0bCwgcm1zbz1cRVttLAotCXJtdWw9XEVbbSwgcnMyPVxFWz89aFxFYywgczBkcz1eTywgczFkcz1eTiwKLQlzZ3I9XEVbMCU/JXAxJXAzJXwldDs3JTslPyVwMiV0OzQlOyU/JXA0JXQ7NSU7JT8lcDUldDsyJTslPyVwNyV0OzglO20lPyVwOSV0XDAxNiVlXDAxNyU7LAotCXNncjA9XEVbbVwwMTcsIHNtYWNzPV5OLCBzbWN1cD1cRVs/PmhcRVBZOTlcOjk4XEVcXCwKLQlzbWlyPVxFWzRoLCBzbXNvPVxFWzA7N20sIHNtdWw9XEVbMDs0bSwgdGJjPVxFWzJnLAotCXRzbD1cRVBZOTlcOjk4XEVcXFxFWzA7OTh2XEVbMjs3bSwKLXR3czIxMDItc25hfGRrdTcxMDItc25hfEJVTEwgUXVlc3RhciB0d3MyMTAyIGZvciBTTkEsCi0JZHNsPVxFWzA7OTh2XEVbMkpcRVt2LCBmc2w9XEVbdiwgaXMzPVxFYiwgdHNsPVxFWzA7OTh2LAotCXVzZT10d3MtZ2VuZXJpYywKLXR3czIxMDN8eGRrdXxCVUxMIFF1ZXN0YXIgdHdzMjEwMywKLQlodD1eSSwgdXNlPXR3cy1nZW5lcmljLAotdHdzMjEwMy1zbmF8ZGt1NzEwMy1zbmF8QlVMTCBRdWVzdGFyIHR3czIxMDMgZm9yIFNOQSwKLQlodD1eSSwgdXNlPXR3czIxMDItc25hLAotZGt1NzEwMi1vbGR8QlVMTCBRdWVzdGFyIDIwMCBES1U3MTAyIChtaWNyb2NvZGUgdmVyc2lvbiA8IDYpLAotCWNsZWFyPVxFWzJKXEVbSCwgY3VwQCwgZGxALCBkbDFALAotCWRzbD1cRVBZOTlcOjk4XEVcXFxFWzA7OTh2XEVbMkpcRVtIXEVbdiwgZWw9XEVbS1xFW20sCi0JaWxALCBpbDFALCB0c2w9XEVQWTk5XDo5OFxFXFxcRVswOzk4dlxFW0hcRVsyOzdtLAotCXVzZT10d3MtZ2VuZXJpYywKLWRrdTcyMDJ8QlVMTCBRdWVzdGFyIDIwMCBES1U3MjAyIChjb2xvdXIvY2hhcmFjdGVyIGF0dHJpYnV0ZXMpLAotCWJsaW5rPVxFWzA7Mjs0bSwgZGltPVxFWzA7NW0sIGh0PV5JLCBpczM9XEVbPzNoXEViLAotCXNtc289XEVbMDs0OzU7N20sIHNtdWw9XEVbMDsybSwgdXNlPXR3cy1nZW5lcmljLAotCi0jPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IwotIyBCVUxMIFFVRVNUQVIgMzAzICYgMzEwIGBERUMgVlQgMzIwJyB0ZXJtaW5hbHMgZW11bGF0aW9uICMKLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jCi0jCi0jIERlc2NyaXB0aW9uIHdyaXR0ZW4gYnkgSi4gU3RhZXJjayAoQlVMTCBTQSkKLSMgICAgICAgQ29weXJpZ2h0IChjKSAxOTg5IEJVTEwgU0EKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgIFRoaXMgZW50cnkgaXMgdXNlZCBmb3IgdGVybWluYWxzIHdpdGggdnQzMjAgZW11bGF0aW9uIG1vZGUKLSMgIGFuZCBmb2xsb3dpbmcgc2V0LXVwIDoKLSMgICAgOCBiaXQgSVNPIExhdGluIENoYXJhY3RlciBTZXQgKElTTyA4ODU5LTEpLAotIyAgICA3IGJpdCBDb250cm9sIENoYXJhY3RlcnMsCi0jICAgIDgwIGNvbHVtbnMgc2NyZWVuLgotIyAgSGVyZWFmdGVyIGFyZSBzb21lIERFQyB2dCB0ZXJtaW5hbHMnIGNvbW1hbmRzLiAodmFsaWQgb24gdnQyMDAgYW5kIDMwMCkKLSMgIFRoZXkgYXJlIHVzZWQgaW4gc3RyaW5nIGNhcGFiaWxpdGllcyB3aXRoIHZ0MjIwLTMyMCBlbXVsYXRpb24gbW9kZS4KLSMgIEluIHRoZSBmb2xsb3dpbmcgREVDIGRlZmluaXRpb25zLCB0d28ga2luZHMgb2YgdGVybWluZm8gZGF0YWJhc2VzIGFyZQotIyAgICBwcm92aWRlZCA6Ci0jICAgIDEuIHRoZSBmaXJzdCB3aXRoIENvbW1hbmQgU2VxdWVuY2UgSW50cm9kdWNlciBzdGFydGluZyB3aXRoIGVzY2FwZQotIyAgICAgICBzZXF1ZW5jZSBpbiA3IGJpdHMgY2hhcmFjdGVycyBleC4gRVNDIFsgOiAyIGNoYXJzLiBpbiA3LWJpdCBtb2RlLgotIyAgICAyLiB0aGUgc2Vjb25kIHdpdGggQ29tbWFuZCBTZXF1ZW5jZSBJbnRyb2R1Y2VyIHN0YXJ0aW5nIHdpdGggZXNjYXBlCi0jICAgICAgIHNlcXVlbmNlIGluIDggYml0cyBjaGFyYWN0ZXJzIGV4LiBFU0MgWyA6IDEgY2hhci4gJ0NTSScgPXg5Qi4KLSMJU29mdCBUZXJtaW5hbCBSZXNldAkJZXNjIFsgISBwCi0jCVJJUyAoZXJhc2VzIHNjcmVlbik6CQllc2MgYwotIwlERUNLUE5NIG51bWVyaWMga2V5cGFkIG1vZGU6CWVzYyA+Ci0jCURFQ0tQQU0gYXBwbGljLiBrZXlwYWQgbW9kZToJZXNjID0KLSMJREVDU1RCTSBTY3JvbGxpbmcgcmVnaW9uOgllc2MgWyByCi0jCVNDUyBzZWxlY3QgRzAgPSBVUzoJCWVzYyAoIEIKLSMJU0NTIHNlbGVjdCBHMSA9IGxpbmUtZ3JhcGhpYzoJZXNjICkgMAotIwlTZWxlY3QgNy1iaXQgQzEgY29udHJvbHM6CWVzYyBzcCBGCi0jCVNlbGVjdCA4LWJpdCBDMSBjb250cm9sczoJZXNjIHNwIEcKLSMJU2VsZWN0IGN1cnNvciBob21lOgkJZXNjIFsgIEgKLSMJU2VsZWN0IGVyYXNlIHNjcmVlbjoJCWVzYyBbICBKCi0jCVNNIEtBTSBsb2NrIGtleWJvYXJkOgkJZXNjIFsgMiBoCi0jCVJNIEtBTSB1bmxvY2sga2V5Ym9hcmQ6CQllc2MgWyAyIGwKLSMJU00gU1JNIGxvY2FsIGVjaG8gb2ZmOgkJZXNjIFsgMSAyIGgKLSMJUk0gU1JNIGxvY2FsIGVjaG8gb246CQllc2MgWyAxIDIgbAotIwlTTSBMTk0gTmV3IGxpbmUgOgkJZXNjIFsgMiAwIGgKLSMJUk0gTE5NIHJldHVybiA9IENSIG9ubHk6CWVzYyBbIDIgMCBsCi0jCVNNIERFQ0NLTSBjdXJzb3Iga2V5cyBtb2RlOgllc2MgWyA/IDEgaAotIwlSTSBERUNDS00gYXBwbGkuIGtleXMgbW9kZToJZXNjIFsgPyAxIGwKLSMJU00gREVDQU5NIEFOU0kgbW9kZSBvbjoJCWVzYyBbID8gMiBoCi0jCVJNIERFQ0FOTSBBTlNJIG1vZGUgb2ZmOgllc2MgWyA/IDIgbAotIwlTTSBERUNDT0xNIDEzMi1jb2x1bW4gc2NyZWVuOgllc2MgWyA/IDMgaAotIwlSTSBERUNDT0xNIDgwLWNvbHVtbiBzY3JlZW46CWVzYyBbID8gMyBsCi0jCVNNIERFQ1NDTE0gU21vb3RoIHNjcm9sbDoJZXNjIFsgPyA0IGgKLSMJUk0gREVDU0NMTSBKdW1wIHNjcm9sbDoJCWVzYyBbID8gNCBsCi0jCVNNIERFQ1NDTk0gc2NyZWVuIGxpZ2h0IGJhY2tnci4JZXNjIFsgPyA1IGgKLSMJUk0gREVDU0NOTSBzY3JlZW4gZGFyayBiYWNrZ3IuCWVzYyBbID8gNSBsCi0jCVNNIERFQ09NIG1vdmUgd2l0aGluIG1hcmdpbnM6CWVzYyBbID8gNiBoCi0jCVJNIERFQ09NIG1vdmUgb3V0c2lkZSBtYXJnaW5zOgllc2MgWyA/IDYgbAotIwlTTSBERUNBV00gYXV0byByaWdodCBtYXJnaW46CWVzYyBbID8gNyBoCi0jCVJNIERFQ0FXTSBhdXRvIHJpZ2h0IG1hcmdpbjoJZXNjIFsgPyA3IGwKLSMJU00gREVDQVJNIGF1dG8gcmVwZWF0OgkJZXNjIFsgPyA4IGgKLSMJUk0gREVDQVJNIGF1dG8gcmVwZWF0OgkJZXNjIFsgPyA4IGwKLSMJREVDU0FTRCBTZWxlY3QgYWN0aXZlIG1haW46CWVzYyBbIDAgJCB9Ci0jCURFQ1NBU0QgU2VsZWN0IGFjdGl2ZSBzdGF0dXM6CWVzYyBbIDEgJCB9Ci0jCURFQ1NTRFQgU2VsZWN0IHN0YXR1cyBub25lOgllc2MgWyAwICQgfgotIwlERUNTU0RUIFNlbGVjdCBzdGF0dXMgaW5kaWMuOgllc2MgWyAxICQgfgotIwlERUNTU0RUIFNlbGVjdCBzdGF0dXMgaG9zdC13cjoJZXNjIFsgMiAkIH4KLSMJU00gREVDVENFTSBWaXNpYmxlIGN1cnNvcjoJZXNjIFsgPyAyIDUgaAotIwlSTSBERUNUQ0VNIEludmlzaWJsZSBjdXJzb3I6CWVzYyBbID8gMiA1IGwKLSMJU00gREVDTkNSTSA3IGJpdHMgTkNSIHNldDoJZXNjIFsgPyA0IDIgaAotIwlSTSBERUNOQ1JNIE11bHRpIG9yIElTTyBsYXRpbjoJZXNjIFsgPyA0IDIgbAotIwlTTSBERUNOS00gbnVtZXJpYyBrZXlwYWQgbW9kZToJZXNjIFsgPyA2IDYgaAotIwlSTSBERUNOS00gbnVtZXJpYyBrZXlwYWQgYXBwbC46CWVzYyBbID8gNiA2IGwKLSMJU00gREVDS0JVTSBjbGF2aWVyIGluZm9ybWF0aXF1ZQllc2MgWyA/IDYgOCBoCi0jCVJNIERFQ0tCVU0gY2xhdmllciBidXJlYXV0aXF1ZToJZXNjIFsgPyA2IDggbAotIwlERUNTQ0wgdnQzMDAgbW9kZSA4LWJpdCBjdHJsOgllc2MgWyA2IDMgIiBwCi0jIG9yCURFQ1NDTCB2dDMwMCBtb2RlIDgtYml0IGN0cmw6CWVzYyBbIDYgMyA7IDAgIiBwCi0jIG9yCURFQ1NDTCB2dDMwMCBtb2RlIDgtYml0IGN0cmw6CWVzYyBbIDYgMyA7IDIgIiBwCi0jCURFQ1NDTCB2dDMwMCBtb2RlIDctYml0IGN0cmw6CWVzYyBbIDYgMyA7IDEgIiBwCi0jCUNoYXIuIGFuZCBMaW5lIGF0dHJpYnV0ZXM6CWVzYyBbIFBzIC4uLiBQcyBtCi0jIHdpdGg6ICAwIEFsbCBvZmYsIDEgQm9sZCwgNCBVbmRlcmxpbmUsIDUgQmxpbmtpbmcsIDcgUmV2ZXJzZQotIyBhbmQgOiAyMiBCb2xkIG9mZiwgMjQgVW5kZXJsaW5lIG9mZiwgMjUgQmxpbmtpbmcgb2ZmLCAyNyBSZXZlcnNlIG9mZgotIwotCi0jIFRoaXMgZW50cnkgY292ZXJzIEJRMzAzLCBCUTMwNiwgQlEzMTAsIFEzMDMsIFEzMDYsIFEzMTAKLWJxMzAwfEJ1bGwgdnQzMjAgSVNPIExhdGluIDEgODAgY29sdW1ucyB0ZXJtaW5hbCwKLQlhbSwgZW8sIGVzbG9rLCBocywga20sIG1jNWksIG1pciwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLCB3c2wjODAsCi0JYWNzYz1gYGFhZmZnZ2pqa2tsbG1tbm5vb3BwcXFycnNzdHR1dXZ2d3d4eHl5enp7e3x8fX1+fiwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs/MjVsLAotCWNsZWFyPVxFW0hcRVtKLCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XEVbRCwKLQljdWQ9XEVbJXAxJWRCLCBjdWQxPVxFW0IsIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwKLQlkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwgZGwxPVxFW00sCi0JZHNsPVxFWzEkfVxFWzIkflxuXEVbMCR9LCBlY2g9XEVbJXAxJWRYLCBlZD1cRVtKLAotCWVsPVxFW0ssIGVsMT1cRVsxSywgZW5hY3M9XEUoQlxFKTAsCi0JZmxhc2g9XEVbPzVoJDw1MD5cRVs/NWwsIGZzbD1cRVswJH0sIGhvbWU9XEVbSCwgaHQ9XkksCi0JaHRzPVxFSCwgaWNoPVxFWyVwMSVkQCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbTCwgaW5kPVxFRCwKLQlpczE9XEVbNjM7MSJwXEVbMmgsCi0JaXMyPVxFWz8yaFxFWz8zbFxFWz81bFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEZcRVs/NDJsXEVbPzRsLAotCWlzMz1cRVswJH1cRVs/MjVoXEVbMmxcRVtIXEVbSiwga2ExPVxFT3csIGthMz1cRU95LAotCWtiMj1cRU91LCBrYnM9XkgsIGtjMT1cRU9xLCBrYzM9XEVPcywga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVszfiwga2YxPVxFT1AsIGtmMTA9XEVbMjF+LAotCWtmMTE9XEVbMjN+LCBrZjEyPVxFWzI0fiwga2YxMz1cRVsyNX4sIGtmMTQ9XEVbMjZ+LAotCWtmMTU9XEVbMjh+LCBrZjE2PVxFWzI5fiwga2YxNz1cRVszMX4sIGtmMTg9XEVbMzJ+LAotCWtmMTk9XEVbMzN+LCBrZjI9XEVPUSwga2YyMD1cRVszNH4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKLQlrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LCBrZjg9XEVbMTl+LCBrZjk9XEVbMjB+LCBrZm5kPVxFWzF+LAotCWtobHA9XEVbMjh+LCBraWNoMT1cRVsyfiwga25wPVxFWzZ+LCBrcHA9XEVbNX4sCi0Ja3Jkbz1cRVsyOX4sIGtzbHQ9XEVbNH4sIGxmMT1wZjEsIGxmMj1wZjIsIGxmMz1wZjMsIGxmND1wZjQsCi0JbWMwPVxFW2ksIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBuZWw9XEVFLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJtYWNzPVxFKEIsIHJtYW09XEVbPzdsLCBybWN1cD1cRVs/N2gsIHJtaXI9XEVbNGwsCi0Jcm1reD1cRVs/MWxcRT4sIHJtc289XEVbMjdtLCBybXVsPVxFWzI0bSwgcnMxPVxFWyFwLAotCXJzMj1cRVs/M2wsIHMwZHM9XEUoQiwgczFkcz1cRSgwLCBzYz1cRTcsCi0Jc2dyPVxFWyU/JXAxJXQ7NyU7JT8lcDIldDs0JTslPyVwMyV0OzclOyU/JXA0JXQ7NSU7JT8lcDYldDsxJTttJT8lcDkldFxFKDAlZVxFKEIlOywKLQlzZ3IwPVxFWzBtXEUoQiwgc21hY3M9XEUoMCwgc21hbT1cRVs/N2gsCi0Jc21jdXA9XEVbPzdsXEVbPzFsXEUoQiwgc21pcj1cRVs0aCwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLCB0YmM9XEVbM2csIHRzbD1cRVsxJH1cRVsyJH4sCi1icTMwMC1ydnxCdWxsIHZ0MzIwIHJldmVyc2UgODAgY29sdW1ucywKLQlmbGFzaD1cRVs/NWwkPDUwPlxFWz81aCwKLQlpczI9XEVbPzJoXEVbPzNsXEVbPzVoXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgRlxFWz80MmxcRVs/NGwsCi0JdXNlPWJxMzAwLAotYnEzMDAtd3xCdWxsIHZ0MzIwIDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWlzMj1cRVs/MmhcRVs/M2hcRVs/NWxcRVs/N2hcRVs/OGhcRT5cRVs/MWxcRSBGXEVbPzQybFxFWz80bCwKLQlyczI9XEVbPzNoLCB1c2U9YnEzMDAsCi1icTMwMC13LXJ2fEJ1bGwgdnQzMjAgcmV2ZXJzZSBtb2RlIDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWZsYXNoPVxFWz81bCQ8NTA+XEVbPzVoLAotCWlzMj1cRVs/MmhcRVs/M2hcRVs/NWhcRVs/N2hcRVs/OGhcRT5cRVs/MWxcRSBGXEVbPzQybFxFWz80bCwKLQlyczI9XEVbPzNoLCB1c2U9YnEzMDAsCi0KLSMgIFRoaXMgZW50cnkgaXMgdXNlZCBmb3IgdGVybWluYWxzIHdpdGggdnQzMjAgZW11bGF0aW9uIG1vZGUKLSMgIGFuZCBmb2xsb3dpbmcgc2V0LXVwIDoKLSMgICAgOCBiaXQgSVNPIExhdGluIENoYXJhY3RlciBTZXQgKElTTyA4ODU5LTEpLAotIyAgICA4IGJpdCBDb250cm9sIENoYXJhY3RlcnMsIChDU0kgY29kZWQgYXMgeDlCIGZvciBFU0MgWykKLSMgICAgODAgY29sdW1ucyBzY3JlZW4uCi0jCVNvZnQgVGVybWluYWwgUmVzZXQJCWNzaSAhIHAKLSMJUklTIChlcmFzZXMgc2NyZWVuKToJCWVzYyBjCi0jCURFQ0tQTk0gbnVtZXJpYyBrZXlwYWQgbW9kZToJZXNjID4KLSMJREVDS1BBTSBhcHBsaWMuIGtleXBhZCBtb2RlOgllc2MgPQotIwlERUNTVEJNIFNjcm9sbGluZyByZWdpb246CWVzYyBbIHIKLSMJU0NTIHNlbGVjdCBHMCA9IFVTOgkJZXNjICggQgotIwlTQ1Mgc2VsZWN0IEcxID0gbGluZS1ncmFwaGljOgllc2MgKSAwCi0jCVNlbGVjdCA3LWJpdCBDMSBjb250cm9sczoJZXNjIHNwIEYKLSMJU2VsZWN0IDgtYml0IEMxIGNvbnRyb2xzOgllc2Mgc3AgRwotIwlTZWxlY3QgY3Vyc29yIGhvbWU6CQljc2kgSAotIwlTZWxlY3QgZXJhc2Ugc2NyZWVuOgkJY3NpIEoKLSMJU00gS0FNIGxvY2sga2V5Ym9hcmQ6CQljc2kgMiBoCi0jCVJNIEtBTSB1bmxvY2sga2V5Ym9hcmQ6CQljc2kgMiBsCi0jCVNNIFNSTSBsb2NhbCBlY2hvIG9mZjoJCWNzaSAxIDIgaAotIwlSTSBTUk0gbG9jYWwgZWNobyBvbjoJCWNzaSAxIDIgbAotIwlTTSBMTk0gTmV3IGxpbmUgOgkJY3NpIDIgMCBoCi0jCVJNIExOTSByZXR1cm4gPSBDUiBvbmx5Ogljc2kgMiAwIGwKLSMJU00gREVDQ0tNIGN1cnNvciBrZXlzIG1vZGU6CWNzaSA/IDEgaAotIwlSTSBERUNDS00gYXBwbGkuIGtleXMgbW9kZToJY3NpID8gMSBsCi0jCVNNIERFQ0FOTSBBTlNJIG1vZGUgb246CQljc2kgPyAyIGgKLSMJUk0gREVDQU5NIEFOU0kgbW9kZSBvZmY6CWNzaSA/IDIgbAotIwlTTSBERUNDT0xNIDEzMi1jb2x1bW4gc2NyZWVuOgljc2kgPyAzIGgKLSMJUk0gREVDQ09MTSA4MC1jb2x1bW4gc2NyZWVuOgljc2kgPyAzIGwKLSMJU00gREVDU0NMTSBTbW9vdGggc2Nyb2xsOgljc2kgPyA0IGgKLSMJUk0gREVDU0NMTSBKdW1wIHNjcm9sbDoJCWNzaSA/IDQgbAotIwlTTSBERUNTQ05NIHNjcmVlbiBsaWdodCBiYWNrZ3IuCWNzaSA/IDUgaAotIwlSTSBERUNTQ05NIHNjcmVlbiBkYXJrIGJhY2tnci4JY3NpID8gNSBsCi0jCVNNIERFQ09NIG1vdmUgd2l0aGluIG1hcmdpbnM6CWNzaSA/IDYgaAotIwlSTSBERUNPTSBtb3ZlIG91dHNpZGUgbWFyZ2luczoJY3NpID8gNiBsCi0jCVNNIERFQ0FXTSBhdXRvIHJpZ2h0IG1hcmdpbjoJY3NpID8gNyBoCi0jCVJNIERFQ0FXTSBhdXRvIHJpZ2h0IG1hcmdpbjoJY3NpID8gNyBsCi0jCVNNIERFQ0FSTSBhdXRvIHJlcGVhdDoJCWNzaSA/IDggaAotIwlSTSBERUNBUk0gYXV0byByZXBlYXQ6CQljc2kgPyA4IGwKLSMJREVDU0FTRCBTZWxlY3QgYWN0aXZlIG1haW46CWNzaSAwICQgfQotIwlERUNTQVNEIFNlbGVjdCBhY3RpdmUgc3RhdHVzOgljc2kgMSAkIH0KLSMJREVDU1NEVCBTZWxlY3Qgc3RhdHVzIG5vbmU6CWNzaSAwICQgfgotIwlERUNTU0RUIFNlbGVjdCBzdGF0dXMgaW5kaWMuOgljc2kgMSAkIH4KLSMJREVDU1NEVCBTZWxlY3Qgc3RhdHVzIGhvc3Qtd3I6CWNzaSAyICQgfgotIwlTTSBERUNUQ0VNIFZpc2libGUgY3Vyc29yOgljc2kgPyAyIDUgaAotIwlSTSBERUNUQ0VNIEludmlzaWJsZSBjdXJzb3I6CWNzaSA/IDIgNSBsCi0jCVNNIERFQ05DUk0gNyBiaXRzIE5DUiBzZXQ6CWNzaSA/IDQgMiBoCi0jCVJNIERFQ05DUk0gTXVsdGkgb3IgSVNPIGxhdGluOgljc2kgPyA0IDIgbAotIwlERUNTQ0wgdnQzMDAgbW9kZSA4LWJpdCBjdHJsOgljc2kgNiAzICIgcAotIyBvcglERUNTQ0wgdnQzMDAgbW9kZSA4LWJpdCBjdHJsOgljc2kgNiAzIDsgMCAiIHAKLSMJREVDU0NMIHZ0MzAwIG1vZGUgNy1iaXQgY3RybDoJY3NpIDYgMyA7IDEgIiBwCi0jCUNoYXIuIGFuZCBMaW5lIGF0dHJpYnV0ZXM6CWNzaSBQcyAuLi4gUHMgbQotIyB3aXRoOiAgMCBBbGwgb2ZmLCAxIEJvbGQsIDQgVW5kZXJsaW5lLCA1IEJsaW5raW5nLCA3IFJldmVyc2UKLSMgYW5kIDogMjIgQm9sZCBvZmYsIDI0IFVuZGVybGluZSBvZmYsIDI1IEJsaW5raW5nIG9mZiwgMjcgUmV2ZXJzZSBvZmYKLSMgKGJxMzAwLTg6IDxjdWIxPiw8Y3VmMT4sPGN1dTE+LDxjdWQxPiw8ZGwxPiw8aWwxPiB0byBnZXQgdW5kZXIgMTAyNCAtLWVzcikKLWJxMzAwLTh8QnVsbCB2dDMyMCBmdWxsIDggYml0cyA4MCBjb2x1bW5zLAotCWFtLCBlbywgZXNsb2ssIGhzLCBrbSwgbWM1aSwgbWlyLCBtc2dyLCB4ZW5sLCB4b24sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsIHdzbCM4MCwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XDIzMzVtLCBib2xkPVwyMzMxbSwgY2l2aXM9XDIzMz8yNWwsCi0JY2xlYXI9XDIzM0hcMjMzSiwgY25vcm09XDIzMz8yNWgsIGNyPV5NLAotCWNzcj1cMjMzJWklcDElZDslcDIlZHIsIGN1Yj1cMjMzJXAxJWRELCBjdWQ9XDIzMyVwMSVkQiwKLQljdWY9XDIzMyVwMSVkQywgY3VwPVwyMzMlaSVwMSVkOyVwMiVkSCwgY3V1PVwyMzMlcDElZEEsCi0JZGNoPVwyMzMlcDElZFAsIGRjaDE9XDIzM1AsIGRsPVwyMzMlcDElZE0sCi0JZHNsPVwyMzMxJH1cMjMzMiR+XG5cMjMzMCR9LCBlY2g9XDIzMyVwMSVkWCwgZWQ9XDIzM0osCi0JZWw9XDIzM0ssIGVsMT1cMjMzMUssIGVuYWNzPVxFKEJcRSkwLAotCWZsYXNoPVwyMzM/NWgkPDUwPlwyMzM/NWwsIGZzbD1cMjMzMCR9LCBob21lPVwyMzNILAotCWh0PV5JLCBodHM9XEVILCBpY2g9XDIzMyVwMSVkQCwgaWw9XDIzMyVwMSVkTCwgaW5kPVxFRCwKLQlpczE9XEVbNjM7MiJwXEVbMmgsCi0JaXMyPVxFWz8yaFxFWz8zbFxFWz81bFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEdcRVs/NDJsXEVbPzRsLAotCWlzMz1cMjMzMCR9XDIzMz8yNWhcMjMzMmxcMjMzSFwyMzNKLCBrYTE9XDIxN3csCi0Ja2EzPVwyMTd5LCBrYjI9XDIxN3UsIGticz1eSCwga2MxPVwyMTdxLCBrYzM9XDIxN3MsCi0Ja2N1YjE9XDIzM0QsIGtjdWQxPVwyMzNCLCBrY3VmMT1cMjMzQywga2N1dTE9XDIzM0EsCi0Ja2RjaDE9XDIzMzN+LCBrZjE9XDIxN1AsIGtmMTA9XDIzMzIxfiwga2YxMT1cMjMzMjN+LAotCWtmMTI9XDIzMzI0fiwga2YxMz1cMjMzMjV+LCBrZjE0PVwyMzMyNn4sIGtmMTU9XDIzMzI4fiwKLQlrZjE2PVwyMzMyOX4sIGtmMTc9XDIzMzMxfiwga2YxOD1cMjMzMzJ+LCBrZjE5PVwyMzMzM34sCi0Ja2YyPVwyMTdRLCBrZjIwPVwyMzMzNH4sIGtmMz1cMjE3Uiwga2Y0PVwyMTdTLCBrZjY9XDIzMzE3fiwKLQlrZjc9XDIzMzE4fiwga2Y4PVwyMzMxOX4sIGtmOT1cMjMzMjB+LCBrZm5kPVwyMzMxfiwKLQlraGxwPVwyMzMyOH4sIGtpY2gxPVwyMzMyfiwga25wPVwyMzM2fiwga3BwPVwyMzM1fiwKLQlrcmRvPVwyMzMyOX4sIGtzbHQ9XDIzMzR+LCBsZjE9cGYxLCBsZjI9cGYyLCBsZjM9cGYzLAotCWxmND1wZjQsIG1jMD1cMjMzaSwgbWM0PVwyMzM0aSwgbWM1PVwyMzM1aSwgbmVsPVxFRSwgcmM9XEU4LAotCXJldj1cMjMzN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJtYW09XDIzMz83bCwgcm1jdXA9XDIzMz83aCwKLQlybWlyPVwyMzM0bCwgcm1reD1cMjMzPzFsXEU+LCBybXNvPVwyMzMyN20sIHJtdWw9XDIzMzI0bSwKLQlyczE9XEVbIXAsIHJzMj1cRVs/M2wsIHMwZHM9XEUoQiwgczFkcz1cRSgwLCBzYz1cRTcsCi0Jc2dyPVwyMzMlPyVwMSV0OzclOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSU/JXA5JXRcRSgwJWVcRShCJTssCi0Jc2dyMD1cMjMzMG1cRShCLCBzbWFjcz1eTiwgc21hbT1cMjMzPzdoLAotCXNtY3VwPVwyMzM/N2xcMjMzPzFsXEUoQiwgc21pcj1cMjMzNGgsIHNtc289XDIzMzdtLAotCXNtdWw9XDIzMzRtLCB0YmM9XDIzMzNnLCB0c2w9XDIzMzEkfVwyMzMyJH4sCi1icTMwMC04cnZ8QnVsbCB2dDMyMCA4LWJpdCByZXZlcnNlIG1vZGUgODAgY29sdW1ucywKLQlmbGFzaD1cMjMzPzVsJDw1MD5cMjMzPzVoLAotCWlzMj1cRVs/MmhcRVs/M2xcRVs/NWhcRVs/N2hcRVs/OGhcRT5cRVs/MWxcRSBHXEVbPzQybFxFWz80bCwKLQl1c2U9YnEzMDAtOCwKLWJxMzAwLTh3fEJ1bGwgdnQzMjAgOC1iaXQgMTMyIGNvbHVtbnMsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JaXMyPVxFWz8yaFxFWz8zaFxFWz81bFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEdcRVs/NDJsXEVbPzRsLAotCXJzMj1cMjMzPzNoLCB1c2U9YnEzMDAtOCwKLWJxMzAwLXctOHJ2fEJ1bGwgdnQzMjAgOC1iaXQgcmV2ZXJzZSBtb2RlIDEzMiBjb2x1bW5zLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWZsYXNoPVwyMzM/NWwkPDUwPlwyMzM/NWgsCi0JaXMyPVxFWz8yaFxFWz8zaFxFWz81aFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEdcRVs/NDJsXEVbPzRsLAotCXJzMj1cMjMzPzNoLCB1c2U9YnEzMDAtOCwKLQotIyAgVGhpcyBlbnRyeSBpcyB1c2VkIGZvciB0ZXJtaW5hbHMgd2l0aCB2dDMyMCBlbXVsYXRpb24gbW9kZQotIyAgYSAxMDIga2V5cyBrZXlib2FyZCAoUEMgc2NhbmNvZGUgISkgYW5kIGZvbGxvd2luZyBzZXQtdXAgOgotIyAgICA4IGJpdCBJU08gTGF0aW4gQ2hhcmFjdGVyIFNldCAoSVNPIDg4NTktMSksCi0jICAgIDcgYml0IENvbnRyb2wgQ2hhcmFjdGVycywKLSMgICAgODAgY29sdW1ucyBzY3JlZW4uCi1icTMwMC1wY3xRdWVzdGFyIDMwMyB3aXRoIFBDIGtleWJvYXJkIElTTyBMYXRpbiAxIDgwIGNvbHVtbnMsCi0Ja2JzPV5ILCBrZGNoMT1cRVszfiwga2VuZD1cRVs0fiwga2YxPVxFWzE3fiwga2YxMD1cRVsyOH4sCi0Ja2YxMT1cRVsyOX4sIGtmMTI9XEVbMzF+LCBrZjEzQCwga2YxNEAsIGtmMTVALCBrZjE2QCwga2YxN0AsCi0Ja2YxOEAsIGtmMTlALCBrZjI9XEVbMTh+LCBrZjIwQCwga2YzPVxFWzE5fiwga2Y0PVxFWzIwfiwKLQlrZjU9XEVbMjF+LCBrZjY9XEVbMjN+LCBrZjc9XEVbMjR+LCBrZjg9XEVbMjV+LCBrZjk9XEVbMjZ+LAotCWtmbmRALCBraGxwQCwga2hvbWU9XEVbMX4sIGtpY2gxPVxFWzJ+LCBrbnA9XEVbNn4sIGtwcD1cRVs1fiwKLQlrcmRvQCwga3NsdEAsIGxmMUAsIGxmMkAsIGxmM0AsIGxmNEAsIHVzZT1icTMwMCwKLWJxMzAwLXBjLXJ2fFF1ZXN0YXIgMzAzIHdpdGggUEMga2V5Ym9hcmQgcmV2ZXJzZSBtb2RlIDgwIGNvbHVtbnMsCi0JZmxhc2g9XEVbPzVsJDw1MD5cRVs/NWgsCi0JaXMyPVxFWz8yaFxFWz8zbFxFWz81aFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEZcRVs/NDJsXEVbPzRsLAotCXVzZT1icTMwMC1wYywKLWJxMzAwLXBjLXd8UXVlc3RhciAzMDMgd2l0aCBQQyBrZXlib2FyZCAxMzIgY29sdW1ucyB0ZXJtaW5hbCwKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlpczI9XEVbPzJoXEVbPzNoXEVbPzVsXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgRlxFWz80MmxcRVs/NGwsCi0JcnMyPVxFWz8zaCwgdXNlPWJxMzAwLXBjLAotYnEzMDAtcGMtdy1ydnxRdWVzdGFyIDMwMyB3aXRoIFBDIGtleWJvYXJkIHJldmVyc2UgbW9kZSAxMzIgY29sdW1ucywKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlmbGFzaD1cRVs/NWwkPDUwPlxFWz81aCwKLQlpczI9XEVbPzJoXEVbPzNoXEVbPzVoXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgRlxFWz80MmxcRVs/NGwsCi0JcnMyPVxFWz8zaCwgdXNlPWJxMzAwLXBjLAotIyAgICA4IGJpdCBJU08gTGF0aW4gQ2hhcmFjdGVyIFNldCAoSVNPIDg4NTktMSksCi0jICAgIDggYml0IENvbnRyb2wgQ2hhcmFjdGVycywKLSMgICAgODAgY29sdW1ucyBzY3JlZW4uCi1icTMwMC04LXBjfFEzMDYtOC1wY3xRdWVzdGFyIDMwMyB3aXRoIFBDIGtleWJvYXJkIGluIGZ1bGwgOCBiaXRzIDgwIGNvbHVtbnMsCi0Ja2JzPV5ILCBrZGNoMT1cMjMzM34sIGtlbmQ9XDIzMzR+LCBrZjE9XDIzMzE3fiwKLQlrZjEwPVwyMzMyOH4sIGtmMTE9XDIzMzI5fiwga2YxMj1cMjMzMzF+LCBrZjEzQCwga2YxNEAsCi0Ja2YxNUAsIGtmMTZALCBrZjE3QCwga2YxOEAsIGtmMTlALCBrZjI9XDIzMzE4fiwga2YyMEAsCi0Ja2YzPVwyMzMxOX4sIGtmND1cMjMzMjB+LCBrZjU9XDIzMzIxfiwga2Y2PVwyMzMyM34sCi0Ja2Y3PVwyMzMyNH4sIGtmOD1cMjMzMjV+LCBrZjk9XDIzMzI2fiwga2ZuZEAsIGtobHBALAotCWtob21lPVwyMzMxfiwga2ljaDE9XDIzMzJ+LCBrbnA9XDIzMzZ+LCBrcHA9XDIzMzV+LCBrcmRvQCwKLQlrc2x0QCwgbGYxQCwgbGYyQCwgbGYzQCwgbGY0QCwgdXNlPWJxMzAwLTgsCi1icTMwMC04LXBjLXJ2fFF1ZXN0YXIgMzAzIHdpdGggUEMga2V5Ym9hcmQgZnVsbCA4IGJpdHMgcmV2ZXJzZSBtb2RlIDgwIGNvbHVtbnMsCi0JZmxhc2g9XEVbPzVsJDw1MD5cRVs/NWgsCi0JaXMyPVxFWz8yaFxFWz8zbFxFWz81aFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEdcRVs/NDJsXEVbPzRsLAotCXVzZT1icTMwMC04LXBjLAotYnEzMDAtOC1wYy13fFF1ZXN0YXIgMzAzIHdpdGggUEMga2V5Ym9hcmQgZnVsbCA4IGJpdHMgMTMyIGNvbHVtbnMsCi0JY29scyMxMzIsIHdzbCMxMzIsCi0JaXMyPVxFWz8yaFxFWz8zaFxFWz81bFxFWz83aFxFWz84aFxFPlxFWz8xbFxFIEdcRVs/NDJsXEVbPzRsLAotCXJzMj1cRVs/M2gsIHVzZT1icTMwMC04LXBjLAotYnEzMDAtOC1wYy13LXJ2fFF1ZXN0YXIgMzAzIHdpdGggUEMga2V5Ym9hcmQgZnVsbCA4IGJpdHMgcmV2ZXJzZSAxMzIgY29sdW1ucywKLQljb2xzIzEzMiwgd3NsIzEzMiwKLQlmbGFzaD1cRVs/NWwkPDUwPlxFWz81aCwKLQlpczI9XEVbPzJoXEVbPzNoXEVbPzVoXEVbPzdoXEVbPzhoXEU+XEVbPzFsXEUgR1xFWz80MmxcRVs/NGwsCi0JcnMyPVxFWz8zaCwgdXNlPWJxMzAwLTgtcGMsCi0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jCi0jIEJVTEwgUVVFU1RBUiAzMTAgYFZJUCA3ODAwLzg4MDAnIHRlcm1pbmFscyBlbXVsYXRpb24gIwotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSMKLQotIyBub3JtYWwgbW9kZSwgOCBiaXRzLCA4MCBjb2x1bW5zIHRlcm1pbmFsLgotIwlSRVMgcmVzZXQgOgkJCV5bZQotIwlSSVMgcmVzZXQgaW5pdGlhbCBzdGF0ZToJXltjCi0jCUJMRSBiZWxsIGVuYWJsZQkJCV5baAotIwlCTEQgYmVsbCBkaXNhYmxlCQleW2cKLSMJQ0FNUyBjaGFyLiBhdHRyLiBtb2RlIHNldAleW1tECi0jCUNBTVIgY2hhci4gYXR0ci4gbW9kZSByZXNldAleW1tHCi0jCUNMUiBjbGVhcgkJCV5bYAotIwlLQlUga2V5Ym9hcmQgdW5sb2NrIChzZXQpCV5bW1cKLSMJS0JMIGtleWJvYXJkIGxvY2sgKHJlc2V0KQleW1tYCi0jCUNNICBjaGFyYWN0ZXIgbW9kZSAoYXN5bmMuKSAJXltrCi0jCU5FUCBub24gZWNob3BsZXggbW9kZSAoYnkgaG9zdCkJXltsCi0jCUVQICBlY2hvcGxleCBtb2RlIChieSBob3N0KSAJXlttCi0jCUlNICBpbnNlcnQgbW9kZSBzZXQJCV5bW0kKLSMJSU0gIGluc2VydCBtb2RlIHJlc2V0IAkJXltbSgotIwlSTVMgcm9sbCBtb2RlIHNldCAJCV5bcgotIwlSTVIgcm9sbCBtb2RlIHJlc2V0IAkJXltxCi0jCVNNNzggc2V0IG1vZGUgdmlwNzgwMAkgCV5bWzFxCi0jCVNEICBzY3JvbGwgdXAgIAkoNzIgbGluZXMpIAleW1swcwotIwlTRCAgc2Nyb2xsIGRvd24JKDcyIGxpbmVzKSAJXltbMXMKLSMJUkJNIGJsb2NrIG1vZGUgcmVzZXQJCV5bW0UKLSMJU0xTIHN0YXR1cyBsaW5lIHNldCAJCV5bdwotIwlTTFIgc3RhdHVzIGxpbmUgcmVzZXQgCQleW3YKLSMJU0xMIHN0YXR1cyBsaW5lIGxvY2sgCQleW08KLSMJTEdTIExpbmUtZ3JhcGhpYyBtb2RlIHNldCAJXltHCi0jCUxHUiBMaW5lLWdyYXBoaWMgbW9kZSByZXNldCAJXltGCi0jCVRCQyB0YWIgY2xlYXIgKGF0IGN1cnNvciBwb3MuKQleW1tnCi0jCVRCSSB0YWIgaW5pdGlhbGl6ZSAJCV5bW04KLSMJVEJTIHRhYiBzZXQgKGF0IGN1cnNvciBwb3MuKQleW3AKLSMJUERTICBwcmludCBkYXRhIHNwYWNlCQleW1swcAotIwlQSEQgIHByaW50IGhvc3QgZGF0YSAJCV5bWzNwCi0jCVBEVCAgcHJpbnQgZGF0YSB0ZXJtaW5hdG9yCV5bWzxwCi0jCVBSRVMgcHJpbnQgYWRhcHRlciByZXNldAleW1sycAotIwlTU1BSIG11bHRpLXBhcnQuIHJlc2V0CQleW1s8PnUKLSMJU1NQMCBwYXJ0aXRpb24gMCBzZXQJCV5bWzAwdQotIwlTU1AxIHBhcnRpdGlvbiBuIGZvcm1hdCAxIAleW1tQblBuU1RSSU5HdQotIwlTU1AyIHBhcnRpdGlvbiBuIGZvcm1hdCAyIAleW1tQblBuU1RSSU5HdQotIwlTU1AzIHBhcnRpdGlvbiBuIGZvcm1hdCAzIAleW1tQblBudQotIwlBVFIgYXR0cmlidXRlICh2aXN1YWwpCi0jCSAgICBibGluayA6CQkJXltzQgotIwkgICAgZGltIDoJCQleW3NMCi0jCSAgICBoaWRlIChibGFuaykgOgkJXltzSAotIwkgICAgcmVzdG9yZSA6CQkJXltzUgotIwkgICAgaW52ZXJzZSB2aWRlbyA6CQleW3NJCi0jCSAgICBwcm90LiA6CQkJXltzUAotIwkgICAgdW5kZXJsaW5lIDoJCQleW3NfCi0jCSAgICByZXNldCA6CQkJXnsKLSMKLSMgVGhpcyBjb3ZlcnMgdGhlIHZpcDc4MDAgYW5kIEJRMzE1NS12aXA3ODAwCi12aXB8QnVsbCBRdWVzdGFyIDMxNTUtNzgwMCwKLQlhbSwgZXNsb2ssIGhzLCBrbSwgbWM1aSwgbXNnciwgeGVubCwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLCB3c2wjODAsCi0JYWNzYz0wcGpka2JsYW1jbmtxaXRndWZ2aHdleGosIGJlbD1eRywgYmxpbms9XEVzQiwKLQljYnQ9XEVbWiwgY2xlYXI9XEVgLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWyVpJXAxJTAzZCVwMiUwM2RmLCBjdXUxPVxFQSwgZGNoMT1cRVtQLCBkaW09XEVzTCwKLQlkbDE9XEVbTSwgZHNsPVxFdiwgZWQ9XEVKLCBlbD1cRUssCi0JZmxhc2g9XDAwNyQ8ODA+XDAwNyQ8ODA+XDAwNywgZnNsPVxFTywgaG9tZT1cRUgsIGh0PV5JLAotCWh0cz1cRXAsIGljaDE9XEVbSSwgaW5kPV5KLCBpbnZpcz1cRXNILAotCWlzMj1cRVswMHVcRVs8PjAwMTAwMTAyNDA4MDAyNDA4MHVcRVswMXUsCi0JaXMzPVxFclxFW1dcRWAsIGtIT009XEVILCBrTEZUPVxFbywga1JJVD1cRXUsIGticz1eSCwKLQlrY2J0PVxFW1osIGtjbHI9XEVgLCBrY3RhYj1cRVtnLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2RjaDE9XEVbUCwga2RsMT1cRVtNLCBrZWQ9XEVKLAotCWtlbD1cRUssIGtmMT1cRTAsIGtmMTA9XEVULCBrZjExPVxFXFwsIGtmMTI9XEVcXiwga2YxM0AsIGtmMTRALAotCWtmMTVALCBrZjE2QCwga2YxN0AsIGtmMThALCBrZjE5QCwga2YyPVxFMiwga2YyMEAsIGtmMjE9XEUxLAotCWtmMjI9XEU1LCBrZjIzPVxFNywga2YyND1cRTksIGtmMjU9XEU7LCBrZjI2PVxFPSwga2YyNz1cRT8sCi0Ja2YyOD1cRVEsIGtmMjk9XEVTLCBrZjM9XEU2LCBrZjMwPVxFViwga2YzMT1cRV0sIGtmMzI9XEVfLAotCWtmND1cRTgsIGtmNT1cRVw6LCBrZjY9XEU8LCBrZjc9XEU+LCBrZjg9XEVQLCBrZjk9XEVSLAotCWtob21lPVxFSCwga2h0cz1cRXAsIGtpY2gxPVxFW0ksIGtpbDE9XEVbTCwga2luZD1cRVswcywKLQlrbGw9XEVIXEVBLCBrcmk9XEVbMXMsIGtybWlyPVxFW0osIGt0YmM9XEVbTiwgbGYxPXBmMSwKLQlsZjI9cGYyLCBsZjM9cGYzLCBsZjQ9cGY0LCBsbD1cRUhcRUEsIG1jMD1cRVswcCwgbWM0PVxFWzxwLAotCW1jNT1cRVszcCwgbmVsPV5NLCBwcm90PVxFc1AsIHJldj1cRXNJLAotCXJpPVxFQVxFSlxFSFxFW0wkPDEwPiwgcm1hY3M9XEVGLCBybWlyPVxFW0osIHJtc289XEVzUiwKLQlybXVsPVxFc1IsIHJzMT1cRWMsIHJzMj1cRVtHLCBzMGRzPVxFRiwgczFkcz1cRUcsCi0Jc2dyMD1cRXNSXEVzVVxFRiwgc21hY3M9XEVHLCBzbWlyPVxFW0ksIHNtc289XEVzSSwKLQlzbXVsPVxFc18sIHRiYz1cRVtOLCB0c2w9XEV3LAotIyBub3JtYWwgc2NyZWVuLCA4IGJpdHMsIDEzMiBjb2x1bW5zIHRlcm1pbmFsLgotdmlwLXd8dmlwNzgwMC13fFEzMTAtdmlwLXd8UTMxMC12aXAtdy1hbXxRdWVzdGFyIDMxNTUtdmlwNzgwMCB3aWRlLAotCWNvbHMjMTMyLCB3c2wjMTMyLAotCWlzMj1cRVswMHVcRVs8PjAwMTAwMTAyNDEzMjAyNDEzMnVcRVswMXUsIHVzZT12aXAsCi12aXAtSHx2aXA3ODAwLUh8UTMxMC12aXAtSHxRMzEwLXZpcC1ILWFtfFF1ZXN0YXIgMzE1NS12aXA3ODAwIDcyIGxpbmVzLAotCWxpbmVzIzcyLAotCWlzMj1cRVswMHVcRVs8PjAwMTAwMTAyNDA4MDA3MjA4MHVcRVswMXUsIHVzZT12aXAsCi12aXAtSHd8dmlwNzgwMC1Id3xRMzEwLXZpcC1Id3xRdWVzdGFyIDMxNTUtdmlwNzgwMCB3aWRlIDcyIGxpbmVzLAotCWNvbHMjMTMyLCBsaW5lcyM3Miwgd3NsIzEzMiwKLQlpczI9XEVbMDB1XEVbPD4wMDEwMDEwMjQxMzIwNzIxMzJ1XEVbMDF1LCB1c2U9dmlwLAotCi0jIyMjIENocm9tYXRpY3MKLSMKLQotIyBJIGhhdmUgcHV0IHRoZSBsb25nIHN0cmluZ3MgaW4gPHNtY3VwPi88cm1jdXA+LiBUaSBzZXRzIHVwIGEgd2luZG93Ci0jIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBzY3JlZW4sIGFuZCBwdXRzIHVwIGEgd2FybmluZyBtZXNzYWdlCi0jIG91dHNpZGUgdGhlIHdpbmRvdy4gVGUgZXJhc2VzIHRoZSB3YXJuaW5nIG1lc3NhZ2UsIHB1dHMgdGhlCi0jIHdpbmRvdyBiYWNrIHRvIGJlIHRoZSB3aG9sZSBzY3JlZW4sIGFuZCBwdXRzIHRoZSBjdXJzb3IgYXQganVzdAotIyBiZWxvdyB0aGUgc21hbGwgd2luZG93LiBJIGRlZmluZWQgPGNub3JtPiBhbmQgPGNpdmlzPiB0byByZWFsbHkgdHVybgotIyB0aGUgY3Vyc29yIG9uIGFuZCBvZmYsIGJ1dCBJIGhhdmUgdGFrZW4gdGhpcyBvdXQgc2luY2UgSSBkb24ndAotIyBsaWtlIHRoZSBjdXJzb3IgYmVpbmcgdHVybmVkIG9mZiB3aGVuIHZpIGV4aXRzLgotY2c3OTAwfGNocm9tYXRpY3N8Y2hyb21hdGljcyA3OTAwLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzQwLAotCWJlbD1eRywgY2xlYXI9XkwsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5dLAotCWN1cD1cMDAxTSVwMiVkXCwlcDElZFwsLCBjdXUxPV5LLCBkY2gxPV5BPDEsIGRsMT1eQTwyLAotCWVkPV5BbCwgZWw9XkFgLCBob21lPV5cLCBpY2gxPV5BPjEsIGlsMT1eQT4yLCBpbmQ9XkosIGxsPV5BfCwKLQlybWN1cD1cMDAxVzBcLDQwXCw4NVwsNDhcLFwwMTRcMDAxVzBcLDBcLDg1XCw0OFwsXDAwMU0wXCw0MFwsLAotCXJtc289XDAwMUMxXCxcMDAxYzJcLCwKLQlzbWN1cD1cMDAxUDBcMDAxTzFcMDAxUjFcMDAxQzRcLFwwMDFjMFwsXDAxNFwwMDFNMFwsNDJcLFdBUk5JTkcgRE9VQkxFIEVOVEVSIEVTQ0FQRSBhbmQgXDAyNVwwMDFDMVwsXDAwMWMyXCxcMDAxVzBcLDBcLDc5XCwzOVwsLAotCXNtc289XDAwMUM0XCxcMDAxYzdcLCwgdWM9XDAwMVwwMDFfXDAwMVwwLAotCi0jIyMjIENvbXB1dGVyIEF1dG9tYXRpb24KLSMKLQotY2EyMjg1MXxjb21wdXRlciBhdXRvbWF0aW9uIDIyODUxLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XDAxNCQ8OD4sIGNyPV5NLCBjdWIxPV5VLCBjdWQxPV5KLCBjdWYxPV5JLAotCWN1cD1cMDAyJWklcDElYyVwMiVjLCBjdXUxPV5WLCBlZD1eXCwgZWw9Xl0sIGhvbWU9Xl4sIGluZD1eSiwKLQlrY3ViMT1eVSwga2N1ZDE9XlcsIGtjdXUxPV5WLCBraG9tZT1eXiwKLQotIyMjIyBDeWJlcm5leAotIwotCi0jIFRoaXMgZW50cnkgaGFzIGNvcnJlY3QgcGFkZGluZyBhbmQgdGhlIHVuZG9jdW1lbnRlZCAicmkiIGNhcGFiaWxpdHkKLWN5YjgzfHhsODN8Y3liZXJuZXggeGwtODMsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDw2Mj4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5JLAotCWN1cD1cMDI3JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5OLAotCWVkPVwwMjAkPDYyPiwgZWw9XDAxNyQ8Mz4sIGhvbWU9XkssIGluZD1eSiwga2N1YjE9XkgsCi0Ja2N1ZDE9XkosIGtjdWYxPV5JLCBrY3V1MT1eTiwgcmk9Xk4sCi0jIChtZGwxMTA6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eWl5QOiIgYW5kIG92ZXJyaWRkZW4gIjpjZD0xNDVeTkFeVzoiIC0tIGVzcikKLWN5YjExMHxtZGwxMTB8Y3liZXJuZXggbWRsLTExMCwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVwwMzAkPDcwPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlUsCi0JY3VwPVwwMjAlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XlosCi0JZGNoMT1cMDE2QVwwMzYkPDMuNT4sIGRsMT1cMDE2QVwwMTZcMDM2JDw0MD4sCi0JZWQ9XDAxNkBcMDI2JDw2PiwgZWw9XDAxNkBcMDI2JDwxNDU+LCBob21lPV5ZLAotCWh0PVwwMTEkPDQzPiwgaWNoMT1cMDE2QVwwMzUkPDMuNT4sCi0JaWwxPVwwMTZBXDAxNlwwMzUkPDY1PiwgaW5kPV5KLCBybXNvPV5ORywgc21zbz1eTkYsCi0KLSMjIyMgRGF0YXBvaW50Ci0jCi0jIERhdGFwb2ludCBpcyBnb25lLiAgVGhleSB1c2VkIHRvIGJlIGhlYWRxdWFydGVyZWQgaW4gVGV4YXMuCi0jIFRoZXkgY3JlYXRlZCBBUkNuZXQsIGFuIEV0aGVybmV0IGNvbXBldGl0b3IgdGhhdCBmbG91cmlzaGVkIGZvciBhIHdoaWxlCi0jIGluIHRoZSBlYXJseSAxOTgwcyBiZWZvcmUgM0NPTSBnb3Qgd2lzZSBhbmQgY3V0IGl0cyBwcmljZXMuICBUaGUgc2VydmljZQotIyBzaWRlIG9mIERhdGFwb2ludCBzdGlsbCBsaXZlcyAoMTk5NSkgaW4gdGhlIGZvcm0gb2YgSW50ZWxvZ2ljIFRyYWNlLgotIwotCi1kcDMzNjB8ZGF0YXBvaW50fGRhdGFwb2ludCAzMzYwLAotCU9UYnMsIGFtLAotCWNvbHMjODIsIGxpbmVzIzI1LAotCWJlbD1eRywgY2xlYXI9Xl1eXywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XlgsIGN1dTE9XlosCi0JZWQ9Xl8sIGVsPV5eLCBob21lPV5dLCBpbmQ9XkosCi0KLSMgRnJvbTogSmFuIFdpbGxlbSBTdHVtcGVsIDxqdy5zdHVtcGVsQGludGVyLm5sLm5ldD4sIDExIE1heSAxOTk3Ci0jIFRoZSBEYXRhcG9pbnQgODI0MiBXb3Jrc3RhdGlvbiB3YXMgc29sZCBhdCBsZWFzdCBiZXR3ZWVuIDE5ODUKLSMgYW5kIDE5ODkuIFRvIG1ha2UgdGhlIHRlcm1pbmFsIHdvcmsgd2l0aCB0aGlzIGVudHJ5LCBwcmVzcwotIyBDT05UUk9MLUlOVC1JTlQgdG8gdGFrZSB0aGUgdGVybWluYWwgb2ZmLWxpbmUsIGFuZCB0eXBlIChvcHQpLgotIyBTZXQgdGhlIG9wdGlvbnMgQVVUTyBST0xMLCBST0xMIEROLCBhbmQgRVNDIEtCRCBvbiwgYW5kIEFVVE8KLSMgQ1IvTEYgb2ZmLiBVc2UgY29udHJvbC1zaGlmdC1bXSBhcyBlc2NhcGUga2V5LCBjb250cm9sLUkgYXMgdGFiLAotIyBzaGlmdC1GMSB0byBzaGlmdC1GNSBhcyBGNiB0byBGMTAgKHVuc2hpZnRlZCBGMSB0byBGNSBhcmUgaW4KLSMgZmFjdCB1bnVzYWJsZSBiZWNhdXNlIHRoZSBzdHJpbmdzIHNlbnQgYnkgdGhlIHRlcm1pbmFsIGNvbmZsaWN0Ci0jIHdpdGggb3RoZXIga2V5cykuCi0jIFRoZSB0ZXJtaW5hbCBpcyBjYXBhYmxlIG9mIGRpc3BsYXlpbmcgImJveCBkcmF3IiBjaGFyYWN0ZXJzLgotIyBGb3IgZWFjaCBncmFwaGljIGNoYXJhY3RlciB5b3UgbXVzdCBzZW5kIDIgRVNDJ3MgKFxFXEUpIGZvbGxvd2VkCi0jIGJ5IGEgY29udHJvbCBjaGFyYWN0ZXIgYXMgZm9sbG93czoKLSMgICAgICAgICBjaGFyYWN0ZXIgICAgICAgIG1lYW5pbmcKLSMgICAgICAgICA9PT09PT09PT0gICAgICAgID09PT09PT0KLSMgICAgICAgICBjdHJsLUUgICAgICAgICAgIHRvcCB0ZWUKLSMgICAgICAgICBjdHJsLUYgICAgICAgICAgIHJpZ2h0IHRlZQotIyAgICAgICAgIGN0cmwtRyAgICAgICAgICAgYm90dG9tIHRlZQotIyAgICAgICAgIGN0cmwtSCAgICAgICAgICAgbGVmdCB0ZWUKLSMgICAgICAgICBjdHJsLUkgICAgICAgICAgIGNyb3NzCi0jICAgICAgICAgY3RybC1KICAgICAgICAgICB0b3AgbGVmdCBjb3JuZXIKLSMgICAgICAgICBjdHJsLUsgICAgICAgICAgIHRvcCByaWdodCBjb3JuZXIKLSMgICAgICAgICBjdHJsLUwgICAgICAgICAgIGJvdHRvbSBsZWZ0IGNvcm5lcgotIyAgICAgICAgIGN0cmwtTSAgICAgICAgICAgYm90dG9tIHJpZ2h0IGNvcm5lcgotIyAgICAgICAgIGN0cmwtTiAgICAgICAgICAgaG9yaXpvbnRhbCBsaW5lCi0jICAgICAgICAgY3RybC1PICAgICAgICAgICB2ZXJ0aWNhbCBsaW5lCi0jIFVuZm9ydHVuYXRlbHkgdGhpcyBjYW5ub3QgYmUgZml0dGVkIGludG8gdGhlIHRlcm1jYXAvdGVybWluZm8KLSMgZGVzY3JpcHRpb24gc2NoZW1lLgotZHA4MjQyfGRhdGFwb2ludCA4MjQyLAotCW1zZ3IsCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYmVsPV5HLCBjaXZpcz1eWSwgY2xlYXI9XDAyNVxFXDAwNFwwMjdcMDMwLCBjbm9ybT1eWCwKLQljcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdXA9XDAxMSVwMiUnXDAnJSslYyVwMSUnXDAnJSslYywgZGwxPVxFXlosIGVkPV5XLCBlbD1eViwKLQlob21lPV5VLCBodD1eSSwgaWwxPVxFXlQsIGluZD1eQywKLQlpczE9XEVcMDE0XEVcMDE2XDBcMjMwXDBcMzE3XDAyNVwwMjdcMDMwXEVcMDA0LAotCWticz1eSCwga2N1YjE9XkQsIGtjdWQxPV5CLCBrY3VmMT1eRiwga2N1dTE9XkUsIGtmMT1eR1xFZSwKLQlrZjEwPVxFS1xFYSwga2YyPV5JXEVkLCBrZjM9XkpcRWMsIGtmND1eSlxFYiwga2Y1PV5TXEVhLAotCWtmNj1cRU9cRWUsIGtmNz1cRU5cRWQsIGtmOD1cRU1cRWMsIGtmOT1cRUxcRWIsIG5lbD1eTV5KLAotCXJlcD1cRVwwMjMlcDElYyVwMiVjLCByaT1eSywgcm1zbz1cRV5ELCBybXVsPVxFXkQsCi0JcnMxPVxFXDAxNFxFXDAxNlwwXDIzMFwwXDMxN1wwMjVcMDI3XDAzMFxFXDAwNCwKLQlzbXNvPVxFXkUsIHNtdWw9XEVeRiwKLQl3aW5kPVxFXDAxNFxFXDAxNiVwMSUnXDAnJSslYyVwMiUnXDAnJSslYyVwMyUnXDAnJSslYyVwNCUnXDAnJSslY1wwMjUsCi0KLSMjIyMgREVDIHRlcm1pbmFscyAoT2Jzb2xldGUgdHlwZXM6IERFQ3dyaXRlciBhbmQgdnQ0MC80Mi81MCkKLSMKLSMgVGhlc2UgZW50cmllcyBhcmUgREVDJ3Mgb2ZmaWNpYWwgdGVybWluZm9zIGZvciBpdHMgb2xkZXIgdGVybWluYWxzLgotIyBDb250YWN0IEJpbGwgSGVkYmVyZyA8aGVkYmVyZ0BoYW5uYWguZW5ldC5kZWMuY29tPiBvZiBUZXJtaW5hbCBTdXBwb3J0Ci0jIEVuZ2luZWVyaW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgVXBkYXRlZCB0ZXJtaW5mb3MgYW5kIHRlcm1jYXBzCi0jIGFyZSBrZXB0IGF2YWlsYWJsZSBhdCBmdHA6Ly9nYXRla2VlcGVyLmRlYy5jb20vcHViL0RFQy90ZXJtY2Fwcy4KLSMKLQotZ3Q0MHxkZWMgZ3Q0MCwKLQlPVGJzLCBvcywKLQljb2xzIzcyLCBsaW5lcyMzMCwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotZ3Q0MnxkZWMgZ3Q0MiwKLQlPVGJzLCBvcywKLQljb2xzIzcyLCBsaW5lcyM0MCwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLAotdnQ1MHxkZWMgdnQ1MCwKLQlPVGJzLAotCWNvbHMjODAsIGxpbmVzIzEyLAotCWJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3V1MT1cRUEsIGVkPVxFSiwgZWw9XEVLLCBodD1eSSwgaW5kPV5KLAotdnQ1MGh8ZGVjIHZ0NTBoLAotCU9UYnMsCi0JY29scyM4MCwgbGluZXMjMTIsCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZWQ9XEVKLAotCWVsPVxFSywgaHQ9XkksIGluZD1eSiwgcmk9XEVJLAotIyAodnQ2MTogdGhlcmUncyBhIEJTRCB0ZXJtY2FwIHRoYXQgY2xhaW1zIDxkbDE9XEVQZD4sIDxpbDE9XEVQZi4+IDxrYnM9Xkg+KQotdnQ2MXx2dC02MXx2dDYxLjV8ZGVjIHZ0NjEsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUokPDEyMD4sIGNyPVxyJDwyMD4sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1cRUMkPDIwPiwgY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8MjA+LAotCWN1dTE9XEVBJDwyMD4sIGVkPVxFSiQ8MTIwPiwgZWw9XEVLJDw3MD4sIGh0PV5JLAotCWluZD1cbiQ8MjA+LCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLCBrY3V1MT1cRUEsCi0Jcmk9XEUkPDIwPkksCi0KLSMgVGhlIGdpZ2kgZG9lcyBzdGFuZG91dCB3aXRoIHJlZCEKLSMgKGdpZ2k6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcsIGNvcnJlY3RlZCBjdWIxIC0tIGVzcikKLWdpZ2l8dmsxMDB8ZGVjIGdpZ2kgZ3JhcGhpY3MgdGVybWluYWwsCi0JT1RicywgYW0sIHhlbmwsCi0JY29scyM4NCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkosIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZWQ9XEVbSiwKLQllbD1cRVtLLCBodD1eSSwgaW5kPV5KLAotCWlzMj1cRT5cRVs/M2xcRVs/NGxcRVs/NWxcRVs/MjBsXEVbPzdoXEVbPzhoLAotCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtmMT1cRU9QLAotCWtmMj1cRU9RLCBrZjM9XEVPUiwga2Y0PVxFT1MsIGtob21lPVxFW0gsIHJpPVxFTSwKLQlybWFtPVxFWz83bCwgcm1reD1cRVs/MWxcRT4sIHJtc289XEVbbSwgcm11bD1cRVttLAotCXNncjA9XEVbbSwgc21hbT1cRVs/N2gsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzc7MzFtLAotCXNtdWw9XEVbNG0sCi0KLSMgREVDIFBSTy0zNTAgY29uc29sZSAoVlQyMjAtc3R5bGUpLiAgVGhlIDM1MCB3YXMgREVDJ3MgYXR0ZW1wdCB0byBwcm9kdWNlCi0jIGEgUEMgZGlmZmVyZW50aWF0ZWQgZnJvbSB0aGUgSUJNIGNsb25lcy4gIEl0IHdhcyBhIHRvdGFsLCBsdWRpY3JvdXMsCi0jIGdyb3NzbHktb3ZlcnByaWNlZCBmYWlsdXJlIChhbW9uZyBvdGhlciB0aGluZ3MsIERFQydzIE9TIGRpZG4ndCBpbmNsdWRlCi0jIGEgZm9ybWF0IHByb2dyYW0sIHNvIHlvdSBoYWQgdG8gYnV5IHByZS1mb3JtYXR0ZWQgZmxvcHBpZXMgZnJvbSBERUMgYXQKLSMgYSBoZWZ0eSBwcmVtaXVtISkuCi1wcm8zNTB8ZGVjcHJvfGRlYyBwcm8gY29uc29sZSwKLQlPVGJzLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhYWZmZ2dqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4sCi0JY2xlYXI9XEVIXEVKLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGVkPVxFSiwKLQllbD1cRUssIGhvbWU9XEVILCBodD1eSSwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywKLQlrY3V1MT1cRUEsIGtmMD1cRUUsIGtmMT1cRUYsIGtmMj1cRUcsIGtmMz1cRUgsIGtmND1cRUksCi0Ja2Y1PVxFSiwga2Y2PVxFaSwga2Y3PVxFaiwga2hvbWU9XEVILCByaT1cRUksIHJtYWNzPVxFRywKLQlybXNvPVxFXk4sIHJtdWw9XEVeQywgc21hY3M9XEVGLCBzbXNvPVxFXkgsIHNtdWw9XEVeRCwKLQotZHcxfGRlY3dyaXRlciBJLAotCU9UYnMsIGhjLCBvcywKLQljb2xzIzcyLAotCWJlbD1eRywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGluZD1eSiwKLWR3MnxkZWN3cml0ZXJ8ZHd8ZGVjd3JpdGVyIElJLAotCU9UYnMsIGhjLCBvcywKLQljb2xzIzEzMiwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBpbmQ9XkosIGticz1eSCwKLSMgXEUoQgkJVXNlIFUuUy4gY2hhcmFjdGVyIHNldCAob3RoZXJ3aXNlICMgPT4gYnJpdGlzaCBwb3VuZCAhKQotIyBcRVsyMGwJRGlzYWJsZSAibGluZWZlZWQgbmV3bGluZSIgbW9kZSAoZWxzZSBwdXRzIFxyIGFmdGVyIFxuLFxmLFx2KQotIyBcRVt3ICAgCTEwIGNoYXIvaW4gcGl0Y2gKLSMgXEVbMTsxMzIJZnVsbCB3aWR0aCBob3Jpem9udGFsIG1hcmdpbnMKLSMgXEVbMmcJCWNsZWFyIGFsbCB0YWIgc3RvcHMKLSMgXEVbegkJNiBsaW5lcy9pbgotIyBcRVs2NnQJNjYgbGluZXMvcGFnZSAoZm9yIFxmKQotIyBcRVsxOzY2cglmdWxsIHZlcnRpY2FsIHBhZ2UgY2FuIGJlIHByaW50ZWQKLSMgXEVbNGcJCWNsZWFyIHZlcnRpY2FsIHRhYiBzdG9wcwotIyBcRT4JCWRpc2FibGUgYWx0ZXJuYXRlIGtleXBhZCBtb2RlIChzbyBpdCB0cmFuc21pdHMgbnVtYmVycyEpCi0jIFxFWyVpJXAxJWR1CXNldCB0YWIgc3RvcCBhdCBjb2x1bW4gJWQgKG9yaWdpbiA9PSAxKQotIwkJKEZ1bGwgc3ludGF4IGlzIFxFW247bjtuO247bjsuLi47bnUgd2hlcmUgZWFjaCAnbicgaXMKLSMJCWEgdGFiIHN0b3ApCi0jCi0jICAgICAgIFRoZSBkdzMgZG9lcyBzdGFuZG91dCB3aXRoIHdpZGUgY2hhcmFjdGVycy4KLSMKLWR3M3xsYTEyMHxkZWN3cml0ZXIgSUlJLAotCU9UYnMsIGhjLCBvcywKLQljb2xzIzEzMiwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBodD1eSSwgaW5kPV5KLAotCWlzMT1cRShCXEVbMjBsXEVbd1xFWzA7MTMyc1xFWzJnXEVbelxFWzY2dFxFWzE7NjZyXEVbNGdcRT4sCi0JaXMyPVxFWzk7MTc7MjU7MzM7NDE7NDk7NTc7NjU7NzM7ODE7ODk7OTc7MTA1OzExMzsxMjE7MTI5dVxyLAotCWticz1eSCwgcm1zbz1cRVt3LCBzZ3IwPVxFW3csIHNtc289XEVbNncsCi1kdzR8ZGVjd3JpdGVyIElWLAotCU9UYnMsIGFtLCBoYywgb3MsCi0JY29scyMxMzIsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgaHQ9XkksIGluZD1eSiwgaXMyPVxFYywga2JzPV5ILAotCWtmMD1cRU9QLCBrZjE9XEVPUSwga2YyPVxFT1IsIGtmMz1cRU9TLAotCi0jIFRoZXNlIGFyZW4ndCBvZmZpY2lhbAotbG4wM3xkZWMgbG4wMyBsYXNlciBwcmludGVyLAotCWhjLAotCWNvbHMjODAsIGxpbmVzIzY2LAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGhkPVxFSywgaHQ9XkksIGh1PVxFTCwgaW5kPV5KLCBuZWw9Xk1eSiwKLQlybXNvPVxFWzIybSwgcm11bD1cRVsyNG0sIHNncjA9XEVbbSwgc21zbz1cRVsxbSwKLQlzbXVsPVxFWzRtLAotbG4wMy13fGRlYyBsbjAzIGxhc2VyIHByaW50ZXIgMTMyIGNvbHMsCi0JY29scyMxMzIsCi0JYmVsPV5HLCBjcj1eTSwgY3VkMT1eSiwgaHQ9XkksIGluZD1eSiwga2JzPV5ILCBrY3ViMT1eSCwKLQlrY3VkMT1eSiwgbmVsPV5NXkosIHVzZT1sbjAzLAotCi0jIyMjIERlbHRhIERhdGEgKGRkKQotIwotCi0jIFVudGVzdGVkLiBUaGUgY3VwIHNlcXVlbmNlIGlzIGhhaXJ5IGVub3VnaCB0aGF0IGl0IHByb2JhYmx5IG5lZWRzIHdvcmsuCi0jIFRoZSBpZGVhIGlzIGN0cmwoTyksIGRkKHJvdyksIGRkKGNvbCksIHdoZXJlIGRkKHgpIGlzIHggLSAyKih4JTE2KSArICc5Jy4KLSMgVGhlcmUgYXJlIEJTRC1kZXJpdmVkIHRlcm1jYXAgZW50cmllcyBmbG9hdGluZyBhcm91bmQgZm9yIHRoaXMgcHVwcHkKLSMgdGhhdCBhcmUgKmNlcnRhaW5seSogd3JvbmcuCi1kZWx0YXxkZDUwMDB8ZGVsdGEgZGF0YSA1MDAwLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGxpbmVzIzI3LAotCWJlbD1eRywgY2xlYXI9Xk5SLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5ZLAotCWN1cD1cMDE3JXAxJXAxJXsxNn0lbSV7Mn0lKiUtJXs1N30lKyVjJXAyJXAyJXsxNn0lbSV7Mn0lKiUtJXs1N30lKyVjLAotCWN1dTE9XlosIGRjaDE9Xk5WLCBlbD1eTlUsIGhvbWU9Xk5RLCBpbmQ9XkosCi0KLSMjIyMgRGlnaXRhbCBEYXRhIFJlc2VhcmNoIChkZHIpCi0jCi0KLSMgKGRkcjogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi1kZHJ8cmVidXMzMTgwfGRkcjMxODB8UmVidXMvRERSIDMxODAgdnQxMDAgZW11bGF0b3IsCi0JT1RicywgYW0sIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsIHZ0IzMsCi0JYmxpbms9XEVbNW0kPDIvPiwgYm9sZD1cRVsxbSQ8Mi8+LAotCWNsZWFyPVxFW0hcRVsySiQ8NTAvPiwgY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWIxPV5ILAotCWN1ZDE9XkosIGN1ZjE9XEVbQyQ8Mi8+LCBjdXA9XEVbJWklcDElZDslcDIlZEgkPDUvPiwKLQljdXUxPVxFW0EkPDIvPiwgZWQ9XEVbSiQ8NTAvPiwgZWw9XEVbSyQ8My8+LCBob21lPVxFW0gsCi0JaHQ9XkksIGluZD1cRUQkPDUvPiwgaXMyPVxFWzE7MjRyXEVbMjQ7MUgsIGticz1eSCwKLQlrY3ViMT1cRVtELCBrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwKLQlrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCByYz1cRTgsIHJldj1cRVs3bSQ8Mi8+LAotCXJmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCByaT1cRU0kPDUvPiwgcm1hbT1cRVs3bCwKLQlybWt4PVxFWz8xbFxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20kPDIvPiwKLQlyczE9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzYz1cRTcsCi0Jc2dyMD1cRVttJDwyLz4sIHNtYW09XEVbN2wsIHNta3g9XEVbPzFoXEU9LCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0kPDIvPiwKLQotIyMjIyBFdmFucyAmIFN1dGhlcmxhbmQKLSMKLQotIyBKb24gTGVlY2ggPGxlZWNoQGNzLnVuYy5lZHU+IHRlbGxzIHVzOgotIyBUaGUgcHMzMDAgd2FzIHRoZSBFdmFucyAmIFN1dGhlcmxhbmQgUGljdHVyZSBTeXN0ZW0gMzAwLCBhIGhpZ2gKLSMgcGVyZm9ybWFuY2UgM0QgdmVjdG9yIGdyYXBoaWNzIHN5c3RlbSB3aXRoIGEgYnVuY2ggb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuCi0jIEFwcHJveGltYXRlIGRhdGUgb2YgcmVsZWFzZSB3YXMgMTk4MiAoZWFybHkgODBzLCBhbnl3YXkpLCBhbmQgaXQgaGFkIHNldmVyYWwKLSMgZXZvbHV0aW9ucyBpbmNsdWRpbmcgKGxpbWl0ZWQpIGNvbG9yIHZlcnNpb25zIHN1Y2ggYXMgdGhlIFBTMzMwQy4gUFMzMDBzCi0jIHdlcmUgZWZmZWN0aXZlbHkgb2Jzb2xldGUgYnkgdGhlIGxhdGUgODBzLCByZXBsYWNlZCBieSByYXN0ZXIgZ3JhcGhpY3MKLSMgc3lzdGVtcywgYWx0aG91Z2ggc3BlY2lhbGl6ZWQgYXBwbGljYXRpb25zIGxpa2UgbW9sZWN1bGFyIG1vZGVsbGluZwotIyBodW5nIG9udG8gdGhlbSBmb3IgYSB3aGlsZSBsb25nZXIuICBBRkFJSyBhbGwgRSZTIHZlY3RvciBncmFwaGljcyBzeXN0ZW1zCi0jIGFyZSBvdXQgb2YgcHJvZHVjdGlvbiwgdGhvdWdoIG9mIGNvdXJzZSBFJlMgaXMgdmVyeSBtdWNoIGFsaXZlIChpbiAxOTk2KS4KLSMgKHBzMzAwOiBjaGFuZ2VkICI6cHRAOiIgdG8gIml0QCIgLS0gZXNyKQotIwotcHMzMDB8UGljdHVyZSBTeXN0ZW0gMzAwLAotCXh0LAotCWl0QCwKLQlybXNvQCwgcm11bEAsIHNtc29ALCBzbXVsQCwgdXNlPXZ0MTAwLAotCi0jIyMjIEdlbmVyYWwgRWxlY3RyaWMgKGdlKQotIwotCi10ZXJtaW5ldDEyMDB8dGVybWluZXQzMDB8dG4xMjAwfHRuMzAwfHRlcm1pbmV0fEdFIHRlcm1pbmV0IDEyMDAsCi0JT1RicywgaGMsIG9zLAotCWNvbHMjMTIwLAotCWJlbD1eRywgY3I9Xk0sIGN1ZDE9XkosIGluZD1eSiwKLQotIyMjIyBIZWF0aGtpdC9aZW5pdGgKLSMKLQotIyBIZXJlIGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIEgxOSBESVAgc3dpdGNoZXM6Ci0jCi0jIFM0MDEKLSMgMC0zID0gYmF1ZCByYXRlIGFzIGZvbGxvd3M6Ci0jCi0jICAgICAgICAgMyAgICAgICAyICAgICAgIDEgICAgICAgMAotIwktLS0JLS0tCS0tLQktLS0KLSMgICAgICAgICAwICAgICAgIDAgICAgICAgMSAgICAgICAxICAgICAgIDMwMCBiYXVkCi0jICAgICAgICAgMCAgICAgICAxICAgICAgIDAgICAgICAgMSAgICAgICAxMjAwIGJhdWQKLSMgICAgICAgICAxICAgICAgIDAgICAgICAgMCAgICAgICAwICAgICAgIDI0MDAgYmF1ZAotIyAgICAgICAgIDEgICAgICAgMCAgICAgICAxICAgICAgIDAgICAgICAgNDgwMCBiYXVkCi0jICAgICAgICAgMSAgICAgICAxICAgICAgIDAgICAgICAgMCAgICAgICA5NjAwIGJhdWQKLSMgICAgICAgICAxICAgICAgIDEgICAgICAgMCAgICAgICAxICAgICAgIDE5LjJLIGJhdWQKLSMKLSMgNCA9IHBhcml0eSAoMCA9IG5vIHBhcml0eSkKLSMgNSA9IGV2ZW4gcGFyaXR5ICgwID0gb2RkIHBhcml0eSkKLSMgNiA9IHN0aWNrIHBhcml0eSAoMCA9IG5vcm1hbCBwYXJpdHkpCi0jIDcgPSBmdWxsIGR1cGxleCAoMCA9IGhhbGYgZHVwbGV4KQotIwotIyBTNDAyCi0jIDAgPSBibG9jayBjdXJzb3IgKDAgPSB1bmRlcnNjb3JlIGN1cnNvcikKLSMgMSA9IG5vIGtleSBjbGljayAoMCA9IGtleWNsaWNrKQotIyAyID0gd3JhcCBhdCBlbmQgb2YgbGluZSAoMCA9IG5vIHdyYXApCi0jIDMgPSBhdXRvIExGIG9uIENSICgwID0gbm8gTEYgb24gQ1IpCi0jIDQgPSBhdXRvIENSIG9uIExGICgwID0gbm8gQ1Igb24gTEYpCi0jIDUgPSBBTlNJIG1vZGUgKDAgPSBWVDUyIG1vZGUpCi0jIDYgPSBrZXlwYWQgc2hpZnRlZCAoMCA9IGtleXBhZCB1bnNoaWZ0ZWQpCi0jIDcgPSA1MEh6IHJlZnJlc2ggKDEgPSA2MEh6IHJlZnJlc2gpCi0jCi0jIEZhY3RvcnkgRGVmYXVsdCBzZXR0aW5ncyBhcmUgYXMgZm9sbG93czoKLSMgICAgICAgICAgNyA2IDUgNCAzIDIgMSAwCi0jIFM0MDEgICAgIDEgMCAwIDAgMSAxIDAgMAotIyBTNDAyICAgICAwIDAgMCAwIDAgMCAwIDAKLSMgKGgxOTogSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZzsKLSMgYWxzbyBhZGRlZCBlbXB0eSA8YWNzYz4gdG8gc3VwcHJlc3MgYSB0aWMgd2FybmluZyAtLSBlc3IpCi1oMTktYXxoMTlhfGhlYXRoLWFuc2l8aGVhdGhraXQtYXxoZWF0aGtpdCBoMTkgYW5zaSBtb2RlLAotCU9UYnMsIGFtLCBtaXIsIG1zZ3IsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYWNzYz0sIGJlbD1eRywgY2xlYXI9XEVbMkosIGNub3JtPVxFWz40bCwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1cRVsxQiwgY3VmMT1cRVsxQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dTE9XEVbMUEsIGN2dmlzPVxFWz40aCwgZGNoMT1cRVsxUCwgZGwxPVxFWzFNJDwxKj4sCi0JZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwgaWwxPVxFWzFMJDwxKj4sIGluZD1eSiwKLQlpczI9XEU8XEVbPjE7MjszOzQ7NTs2Ozc7ODs5bFxFW21cRVsxMW1cRVs/N2gsCi0Ja2JzPV5ILCBrY3ViMT1cRVsxRCwga2N1ZDE9XEVbMUIsIGtjdWYxPVxFWzFDLCBrY3V1MT1cRVsxQSwKLQlrZjE9XEVPUywga2YyPVxFT1QsIGtmMz1cRU9VLCBrZjQ9XEVPViwga2Y1PVxFT1csIGtmNj1cRU9QLAotCWtmNz1cRU9RLCBrZjg9XEVPUiwga2hvbWU9XEVbSCwgbGY2PWJsdWUsIGxmNz1yZWQsIGxmOD13aGl0ZSwKLQlyaT1cRU0sIHJtYWNzPVxFWzExbSwgcm1hbT1cRVs/N2wsIHJtaXI9XEVbNGwsIHJtc289XEVbbSwKLQlzbWFjcz1cRVsxMG0sIHNtYW09XEVbPzdoLCBzbWlyPVxFWzRoLCBzbXNvPVxFWzdtLAotaDE5LWJzfGhlYXRoa2l0IHcva2V5cGFkIHNoaWZ0ZWQsCi0Jcm1reD1cRXUsIHNta3g9XEV0LCB1c2U9aDE5LWIsCi1oMTktdXN8aDE5dXN8aDE5LXNtdWx8aGVhdGhraXQgdy9rZXlwYWQgc2hpZnRlZC91bmRlcnNjb3JlIGN1cnNvciwKLQlybWt4PVxFdSwgc21reD1cRXQsIHVzZT1oMTktdSwKLSMgKGgxOTogbWVyZ2VkIGluIDxpcD4gZnJvbSBCU0RJIGhwMTktZSBlbnRyeT47Ci0jIGFsc28gYWRkZWQgZW1wdHkgPGFjc2M+IHRvIHN1cHByZXNzIGEgdGljIHdhcm5pbmcgLS1lc3IpCi0jIEZyb206IFRpbSBQaWVyY2UgPHR3cEBza2Vwc2lzLmNvbT4sIDIzIEZlYiAxOTk4Ci0jIFRpbSB0ZWxscyB1cyB0aGF0OgotIyBJIGhhdmUgYW4gb2xkIFplbml0aC0xOSB0ZXJtaW5hbCBhdCBob21lIHRoYXQgc3RpbGwgZ2V0cyBhIGxvdCBvZiB1c2UuCi0jIFRoaXMgdGVybWluYWwgc3VmZmVycyBmcm9tIHRoZSBzYW1lIGZhbW91cyBpbnNlcnQtbW9kZSBwYWRkaW5nIGxvc3NhZ2UKLSMgdGhhdCBoYXMgYmVlbiBhY2tub3dsZWRnZWQgZm9yIHRoZSBaMjkgdGVybWluYWwuICBFbWFjcyBpcyBuZWFybHkKLSMgdW51c2FibGUgb24gdGhpcyBib3gsIHNpbmNlIGV2ZW4gYSBoYWxmLXNjcm9sbCB1cCBvciBkb3duIHRoZSB3aW5kb3cKLSMgY2F1c2VzIGZsYW1pbmcgdGVybWluYWwgZGVhdGguCi0jCi0jIE9uIHRoZSBaMTksIHRoZSBvbmx5IHdheSBJIGhhdmUgZm91bmQgYXJvdW5kIHRoaXMgcHJvYmxlbSBpcyB0byByZW1vdmUKLSMgdGhlIDphbDogYW5kIDpkbDogZW50cmllcyBlbnRpcmVseS4gIE5vIGFtb3VudCBvZiBleHRyYSBwYWRkaW5nIHdpbGwKLSMgaGVscCAoSSBoYXZlIHRyaWVkIHVwIHRvIDIwMDAwKS4gIFJlbW92aW5nIDxpbDE9XEVMJD4gYW5kIDxkbDE9XEVNJD4KLSMgbWFrZXMgRW1hY3MgYSBsaXR0bGUgc2xvd2VyLCBidXQgaXQgcmVtYWlucyBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nLgotIyBCaWcgd2luLgotaDE5fGhlYXRofGgxOS1ifGhlYXRoa2l0fGhlYXRoLTE5fHoxOXx6ZW5pdGh8aGVhdGhraXQgaDE5LAotCU9UYnMsIGFtLCBlc2xvaywgaHMsIG1pciwgbXNnciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQlhY3NjPX5cXnhgcWFuYmtjamRtZWxmZ2craGFpLmt3c3V0dnV0dm96c3ssIGJlbD1eRywKLQljbGVhcj1cRUUsIGNub3JtPVxFeTQsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRUEsIGN2dmlzPVxFeDQsCi0JZGNoMT1cRU4sIGVkPVxFSiwgZWw9XEVLLCBmc2w9XEVrXEV5NSwgaG9tZT1cRUgsIGh0PV5JLCBpbmQ9XkosCi0JaXA9PDEuNS8+LCBrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCi0Ja2N1dTE9XEVBLCBrZjE9XEVTLCBrZjI9XEVULCBrZjM9XEVVLCBrZjQ9XEVWLCBrZjU9XEVXLAotCWtmNj1cRVAsIGtmNz1cRVEsIGtmOD1cRVIsIGtob21lPVxFSCwgbGY2PWJsdWUsIGxmNz1yZWQsCi0JbGY4PXdoaXRlLCByaT1cRUksIHJtYWNzPVxFRywgcm1pcj1cRU8sIHJtc289XEVxLCBzbWFjcz1cRUYsCi0Jc21pcj1cRUAsIHNtc289XEVwLCB0c2w9XEVqXEV4NVxFWTglcDElezMyfSUrJWNcRW9cRW8sCi1oMTktdXxoZWF0aGtpdCB3aXRoIHVuZGVyc2NvcmUgY3Vyc29yLAotCWNub3JtQCwgY3Z2aXNALCB1c2U9aDE5LWIsCi1oMTktZ3xoMTlnfGhlYXRoa2l0IHcvYmxvY2sgY3Vyc29yLAotCWNub3JtPVxFeDQsIGN2dmlzQCwgdXNlPWgxOS1iLAotYWx0by1oMTl8YWx0b2gxOXxhbHRvaGVhdGh8YWx0by1oZWF0aHxhbHRvIGVtdWxhdGluZyBoZWF0aGtpdCBoMTksCi0JbGluZXMjNjAsCi0JZGwxPVxFTSwgaWwxPVxFTCwgdXNlPWgxOSwKLQotIyBUaGUgbWFqb3IgcHJvYmxlbSB3aXRoIHRoZSBaMjkgaXMgdGhhdCBpdCByZXF1aXJlcyBtb3JlIHBhZGRpbmcgdGhhbiB0aGUgWjE5LgotIwotIyBUaGUgcHJvYmxlbSB3aXRoIGRlY2xhcmluZyBhbiBIMTkgdG8gYmUgc3lub255bW91cyB3aXRoIGEgWjI5IGlzIHRoYXQKLSMgaXQgbmVlZHMgbW9yZSBwYWRkaW5nLiBJdCBlc3BlY2lhbGx5IGxvc2VzIGlmIGEgcHJvZ3JhbSBhdHRlbXB0cwotIyB0byBwdXQgdGhlIFoyOSBpbnRvIGluc2VydCBtb2RlIGFuZCBpbnNlcnQgdGV4dCBhdCA5NjAwIGJhdWQuIEl0Ci0jIGV2ZW4gbG9zZXMgd29yc2UgaWYgdGhlIHByb2dyYW0gYXR0ZW1wdHMgdG8gaW5zZXJ0IHRhYnMgYXQgOTYwMAotIyBiYXVkLiBBZGRpbmcgcGFkZGluZyB0byB0ZXh0IHRoYXQgaXMgaW5zZXJ0ZWQgbG9zZXMgYmVjYXVzZSBpbgotIyBvcmRlciB0byBtYWtlIHRoZSBaMjkgbm90IGRpZSwgb25lIG11c3QgYWRkIHNvIG11Y2ggcGFkZGluZyB0aGF0Ci0jIHdoZW5ldmVyIHRoZSBwcm9ncmFtIHRyaWVzIHRvIHVzZSBpbnNlcnQgbW9kZSwgdGhlIGVmZmVjdGl2ZQotIyByYXRlIGlzIGFib3V0IDExMCBiYXVkLgotIwotIyBXaGF0IHByb2dyYW0gd291bGQgd2FudCB0byBwdXQgdGhlIHRlcm1pbmFsIGludG8gaW5zZXJ0IG1vZGUKLSMgYW5kIHNob3ZlIHN0dWZmIGF0IGl0IGF0IDk2MDAgYmF1ZCB5b3UgYXNrPwotIwotIyBFbWFjcy4gRW1hY3Mgc2VlbXMgdG8gd2FudCB0byBkbyB0aGUgbWF0aGVtYXRpY2FsbHkgb3B0aW1hbAotIyB0aGluZyBpbiBkb2luZyBhIHJlZGlzcGxheSByYXRoZXIgdGhhbiB0aGUgcHJhY3RpY2FsIHRoaW5nLgotIyBXaGVuIGl0IGlzIGFib3V0IHRvIG91dHB1dCBhIGxpbmUgb24gdG9wIG9mIGEgbGluZSB0aGF0IGlzCi0jIGFscmVhZHkgb24gdGhlIHNjcmVlbiwgaW5zdGVhZCBvZiBqdXN0IGtpbGxpbmcgdG8gdGhlIGVuZCBvZgotIyB0aGUgbGluZSBhbmQgb3V0cHV0dGluZyB0aGUgbmV3IGxpbmUsIGl0IGNvbXBhcmVzIHRoZSBvbGQgbGluZQotIyBhbmQgdGhlIG5ldyBsaW5lIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNpbWlsYXJpdGllcywgaXQKLSMgY29uc3RydWN0cyB0aGUgbmV3IGxpbmUgYnkgZGVsZXRpbmcgdGhlIHRleHQgb24gdGhlIG9sZCBsaW5lCi0jIG9uIHRoZSB0ZXJtaW5hbCB0aGF0IGlzIGFscmVhZHkgdGhlcmUgYW5kIHRoZW4gaW5zZXJ0aW5nIG5ldwotIyB0ZXh0IGludG8gdGhlIGxpbmUgdG8gdHJhbnNmb3JtIGl0IGludG8gdGhlIG5ldyBsaW5lIHRoYXQgaXMKLSMgdG8gYmUgZGlzcGxheWVkLiBUaGUgWjI5IGRvZXMgbm90IHJlYWN0IGtpbmRseSB0byB0aGlzLgotIwotIyBCdXQgZG9uJ3QgY3J5IGZvciB0b28gbG9uZy4uLi4gVGhlcmUgaXMgYSBzb2x1dGlvbi4gWW91IGNhbiBtYWtlCi0jIGEgdGVybWNhcCBlbnRyeSBmb3IgdGhlIFoyOSB0aGF0IHNheXMgdGhlIFoyOSBoYXMgbm8gaW5zZXJ0IG1vZGUuCi0jIFRoZW4gRW1hY3MgY2Fubm90IHVzZSBpdC4gIk9oLCBubywgYnV0IG5vdyBpbnNlcnRpbmcgaW50byBhCi0jIGxpbmUgd2lsbCBiZSByZWFsbHkgc2xvdyIsIHlvdSBzYXkuIFdlbGwgdGhlcmUgaXMgYSBzb3J0IG9mIGEKLSMgc29sdXRpb24gdG8gdGhhdCB0b28uIFRoZXJlIGlzIGFuIGluc2VydCBjaGFyYWN0ZXIgb3B0aW9uIG9uCi0jIHRoZSBaMjkgdGhhdCB3aWxsIGluc2VydCBvbmUgY2hhcmFjdGVyLiBVbmZvcnR1bmF0ZWx5LCBpdAotIyBpbnZvbHZlcyBwdXR0aW5nIHRoZSB0ZXJtaW5hbCBpbnRvIGFuc2kgbW9kZSwgaW5zZXJ0aW5nIHRoZQotIyBjaGFyYWN0ZXIsIGFuZCBjaGFuZ2luZyBpdCBiYWNrIHRvIEgxOSBtb2RlLiBBbGwgdGhpcyB0YWtlcyAxMgotIyBjaGFyYWN0ZXJzLiBQcmV0dHkgZXhwZW5zaXZlIHRvIGluc2VydCBvbmUgY2hhcmFjdGVyLCBidXQgaXQKLSMgd29ya3MuIEVpdGhlciBFbWFjcyBkb2Vzbid0IHRyeSB0byB1c2UgaXRzIGluc2VydGluZyBoYWNrIHdoZW4KLSMgaXQncyBvbmx5IGdpdmVuIGFuIGluc2VydCBjaGFyYWN0ZXIgYWJpbGl0eSBvciB0aGUgWjI5IGRvZXNuJ3QKLSMgcmVxdWlyZSBwYWRkaW5nIHdpdGggdGhpcyAodGhlIGZvcm1lciBpcyBwcm9iYWJseSBtb3JlIGxpa2VseSwKLSMgYnV0IEkgaGF2ZW4ndCBjaGVja2VkIGl0IG91dCkuCi0jICh6Mjk6IGFkZGVkIGVtcHR5IDxhY3NjPiB0byBzdXBwcmVzcyBhIHRpYyB3YXJuaW5nLCBtZXJnZWQgaW4KLSMgc3RhdHVzIGxpbmUgY2FwYWJpbGl0aWVzIGZyb20gQlJMIGVudHJ5IC0tZXNyKQotejI5fHplbml0aDI5fHoyOWJ8emVuaXRoIHoyOWIsCi0JT1RicywgT1RwdCwgYW0sIGVzbG9rLCBocywgbWlyLCBtc2dyLAotCU9Ua24jMTAsIGNvbHMjODAsIGxpbmVzIzI0LAotCU9UYmM9XEVELCBhY3NjPSwgYmVsPV5HLCBjYnQ9XEUtLCBjbGVhcj1cRUUkPDE0PiwgY25vcm09XEV5NCwKLQljcj1eTSwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEUkPDE+QSwKLQljdnZpcz1cRXg0LCBkY2gxPVxFTiQ8MC4xKj4sIGRsMT1cRU0kPDEvPiwgZHNsPVxFeTEsCi0JZWQ9XEVKJDwxND4sIGVsPVxFSyQ8MT4sIGZzbD1cRWtcRXk1LCBob21lPVxFSCwgaHQ9XkksCi0JaWNoMT1cRTxcRVsxQFxFWz8yaCQ8MT4sIGlsMT1cRUwkPDEvPiwgaW5kPVxuJDwyPiwKLQlpczI9XEU8XEVbPzJoXEV2LCBrYnM9XkgsIGtjdWIxPVxFRCwga2N1ZDE9XEVCLCBrY3VmMT1cRUMsCi0Ja2N1dTE9XEVBLCBrZjA9XEV+LCBrZjE9XEVTLCBrZjI9XEVULCBrZjM9XEVVLCBrZjQ9XEVWLAotCWtmNT1cRVcsIGtmNj1cRVAsIGtmNz1cRVEsIGtmOD1cRVIsIGtmOT1cRTBJLCBraG9tZT1cRUgsCi0JbGYwPWhvbWUsIHJpPVxFSSQ8Mi8+LCBybWFjcz1cRUYsIHJtaXI9XEVPLCBybXNvPVxFcSwKLQlybXVsPVxFczAsIHNtYWNzPVxFRywgc21pcj1cRUAsIHNtc289XEVwLCBzbXVsPVxFczgsCi0JdHNsPVxFalxFeDVcRXgxXEVZOCUrIFxFbywKLSMgejI5IGluIGFuc2kgbW9kZS4gQXNzdW1lcyB0aGF0IHRoZSBjdXJzb3IgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUsIGFuZCB0aGF0Ci0jIHRoZSB3b3JsZCBpcyBzdGFibGUuIDxyczE+IGNhdXNlcyB0aGUgdGVybWluYWwgdG8gYmUgcmVzZXQgdG8gdGhlIHN0YXRlCi0jIGluZGljYXRlZCBieSB0aGUgbmFtZS4ga2MgLT4ga2V5IGNsaWNrLCBua2MgLT4gbm8ga2V5IGNsaWNrLCB1YyAtPiB1bmRlcnNjb3JlCi0jIGN1cnNvciwgYmMgLT4gYmxvY2sgY3Vyc29yLgotIyBGcm9tOiBNaWtlIE1leWVycwotIyAoejI5YTogcmVwbGFjZWQgbm9uZXhpc3RlbnQgPGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3plbml0aDI5PiBiZWZhdXNlIDxodHM+Ci0jIGxvb2tzIHZ0MTAwLWNvbXBhdGlibGUgLS0gZXNyKQotejI5YXx6MjlhLWtjLWJjfGgyOWEta2MtYmN8aGVhdGgvemVuaXRoIDI5IGluIGFuc2kgbW9kZSwKLQlPVGJzLCBPVHB0LCBhbSwgZXNsb2ssIGhzLCBtaXIsIG1zZ3IsCi0JT1RrbiMxMCwgY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JT1RiYz1cRUQsIGJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMm0sIGNsZWFyPVxFWzJKLAotCWNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwgY3V1MT1cRVtBLAotCWRjaD1cRVslcDElZFAsIGRjaDE9XEVbMVAsIGRpbT1cRVsybSwgZGw9XEVbJXAxJWRNLAotCWRzbD1cRVs+MWwsIGVkPVxFW0osIGVsPVxFW0ssIGZzbD1cRVt1XEVbPjVsLCBob21lPVxFW0gsCi0JaHQ9XkksIGh0cz1cRUgsIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLCBpbD1cRVslcDElZEwsCi0JaW5kPVxFRCwga2JzPV5ILCBrY2xyPVxFW0osIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsCi0Ja2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2VkPVxFW0osIGtmMD1cRVt+LCBrZjE9XEVPUywKLQlrZjI9XEVPVCwga2YzPVxFT1UsIGtmND1cRU9WLCBrZjU9XEVPVywga2Y2PVxFT1AsIGtmNz1cRU9RLAotCWtmOD1cRU9SLCBrZjk9XEVPWCwga2hvbWU9XEVbSCwgbGYwPWhlbHAsIG1jMD1cRSM3LAotCW5lbD1eTVxFRCwgcmM9XEVbciwgcmV2PVxFWzdtLCByaT1cRU0sIHJtY3VwPVxFWz83aCwKLQlybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczE9XEU8XEVbMTsyNHJcRVsyNDsxSFxFWz83aFxFWz40aFxFWz4xOzI7Mzs1OzY7Nzs4OzlsXEVbbVxFWzExbSwKLQlzYz1cRVtzLCBzZ3IwPVxFW20sIHNtY3VwPVxFWz83bCwgc21zbz1cRVs3OzJtLCBzbXVsPVxFWzRtLAotCXRiYz1cRVszZywgdHNsPVxFW3NcRVs+NTsxaFxFWzI1OyVpJWRIXEVbMUssCi16MjlhLWtjLXVjfGgyOWEta2MtdWN8ejI5IGFuc2kgbW9kZSB3aXRoIGtleWNraWNrIGFuZCB1bmRlcnNjb3JlIGN1cnNvciwKLQlyczE9XEU8XEVbMTsyNHJcRVsyNDsxSFxFWz83aFxFWz4xOzI7Mzs0OzU7Njs3Ozg7OWxcRVttXEVbMTFtLAotCXVzZT16MjlhLAotejI5YS1ua2MtYmN8aDI5YS1ua2MtYmN8ejI5IGFuc2kgbW9kZSB3aXRoIGJsb2NrIGN1cnNvciBhbmQgbm8ga2V5Y2xpY2ssCi0JcnMxPVxFPFxFWzE7MjRyXEVbMjQ7MUhcRVs/N2hcRVs+Mjs0aFxFWz4xOzM7NTs2Ozc7ODs5bFxFW21cRVsxMW0sCi0JdXNlPXoyOWEsCi16MjlhLW5rYy11Y3xoMjlhLW5rYy11Y3x6MjkgYW5zaSBtb2RlIHdpdGggdW5kZXJzY29yZSBjdXJzb3IgYW5kIG5vIGtleWNsaWNrLAotCXJzMT1cRTxcRVsxOzI0clxFWzI0OzFIXEVbPzdoXEVbPjJoXEVbPjE7Mzs0OzU7Njs3Ozg7OWxcRVttXEVbMTFtLAotCXVzZT16MjlhLAotIyBGcm9tOiBKZWZmIEJhcnRpZyA8amVmZmJAZG9udC5kb2l0Lndpc2MuZWR1PiAzMSBNYXIgMTk5NQotejM5LWF8ejM5YXx6ZW5pdGgzOS1hfHplbml0aDM5LWFuc2l8WmVuaXRoIDM5IGluIEFOU0kgbW9kZSwKLQlhbSwgZXNsb2ssIGhzLCBtYzVpLCBtaXIsIG1zZ3IsIHhvbiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQlhY3NjPTBhYGBhYWZmZ2dqamtrbGxtbW5ub29xcXNzdHR1dXZ2d3d4eH5+LCBiZWw9XkcsCi0JYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNidD1cRVsxWiwgY2l2aXM9XEVbPjVoLAotCWNsZWFyPVxFWzJKXEVbSCwgY25vcm09XEVbPjVsLCBjcj1eTSwKLQljc3I9XEVbJWklcDElZDslcDIlZHIsIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1cRVtCLCBjdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVsxUCwgZGltPVxFWzJtLCBkbD1cRVslcDElZE0sCi0JZGwxPVxFWzFNLCBkc2w9XEVbPjFsLCBlZD1cRVswSiwgZWw9XEVbMEssIGVsMT1cRVsxSywKLQlmc2w9XEVbdSwgaG9tZT1cRVtILCBodD1eSSwgaHRzPVxFSCwgaWw9XEVbJXAxJWRMLCBpbDE9XEVbMUwsCi0JaW5kPV5KLCBpczI9XEU8XEVbPjE7Mzs1OzY7N2xcRVswbVxFWzJKLCBrYTE9XEVPdywKLQlrYTM9XEVPdSwga2IyPVxFT3ksIGticz1eSCwga2MxPVxFT3EsIGtjMz1cRU9zLCBrY3ViMT1cRVtELAotCWtjdWQxPVxFW0IsIGtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtlZD1cRVtKLCBrZjE9XEVPUywKLQlrZjI9XEVPVCwga2YzPVxFT1UsIGtmND1cRU9WLCBrZjU9XEVPVywga2Y2PVxFT1AsIGtmNz1cRU9RLAotCWtmOD1cRU9SLCBrZjk9XEVPWCwga2hscD1cRVt+LCBraG9tZT1cRVtILCBsbD1cRVsyNDsxSCwKLQltYzA9XEVbPzE5aFxFW2ksIG1jND1cRVs0aSwgbWM1PVxFWzVpLCByYz1cRVt1LCByZXY9XEVbN20sCi0Jcm1hY3M9XEUoQiwgcm1pcj1cRVs0bCwgcm1reD1cRVs+N2wsIHJtc289XEVbMG0sCi0Jcm11bD1cRVswbSwgcnMyPVxFPFxFY1wwLCBzYz1cRVtzLCBzZ3IwPVxFWzBtLCBzbWFjcz1cRSgwLAotCXNtaXI9XEVbNGgsIHNta3g9XEVbPjdoLCBzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0JdHNsPVxFW3NcRVs+MWhcRVsyNTslaSVwMSVkSCwKLQotIyBGcm9tOiBCcmFkIEJyYWhtcyA8QnJhaG1zQFVTQy1FQ0xDPgotejEwMHxoMTAwfHoxMTB8ei0xMDB8aC0xMDB8aGVhdGgvemVuaXRoIHotMTAwIHBjIHdpdGggY29sb3IgbW9uaXRvciwKLQljbm9ybT1cRXk0XEVtNzAsIGN2dmlzPVxFeDRcRW03MSwgdXNlPXoxMDBidywKLSMgKHoxMDBidzogcmVtb3ZlZCBvYnNvbGV0ZSAiOmtuIzEwOiIsIGFkZGVkIGVtcHR5IDxhY3NjPiAtLSBlc3IpCi16MTAwYnd8aDEwMGJ3fHoxMTBid3x6LTEwMGJ3fGgtMTAwYnd8aGVhdGgvemVuaXRoIHotMTAwIHBjLAotCU9UYnMsIE9UcHQsIG1pciwgbXNnciwKLQlPVGtuIzEwLCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQlhY3NjPX5cXnhgcWFuYmtjamRtZWxmZ2craGFpLmt3c3V0dnV0dm96c3ssCi0JY2xlYXI9XEVFJDw1Ki8+LCBjbm9ybT1cRXk0LCBjdWIxPV5ILCBjdWQxPVxFQiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8MSovPiwgY3V1MT1cRUEsCi0JY3Z2aXM9XEV4NCwgZGNoMT1cRU4kPDEqLz4sIGRsMT1cRU0kPDUqLz4sIGVkPVxFSiwgZWw9XEVLLAotCWhvbWU9XEVILCBodD1eSSwgaWwxPVxFTCQ8NSovPiwga2JzPV5ILCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwKLQlrY3VmMT1cRUMsIGtjdXUxPVxFQSwga2YwPVxFSiwga2YxPVxFUywga2YyPVxFVCwga2YzPVxFVSwKLQlrZjQ9XEVWLCBrZjU9XEVXLCBrZjY9XEVQLCBrZjc9XEVRLCBrZjg9XEVSLCBrZjk9XEVPSSwKLQlraG9tZT1cRUgsIHJpPVxFSSwgcm1hY3M9XEVHLCBybWlyPVxFTywgcm1zbz1cRXEsIHNtYWNzPVxFRiwKLQlzbWlyPVxFQCwgc21zbz1cRXAsCi1wMTl8aDE5LWIgd2l0aCBpbDEvZGwxLAotCWRsMT1cRU0kPDIqLz4sIGlsMT1cRUwkPDIqLz4sIHVzZT1oMTktYiwKLSMgRnJvbTogPHVjc2NjIUIuZmlhdGx1eEB1Y2J2YXguYmVya2VsZXkuZWR1PgotIyAoenR4OiByZW1vdmVkIGR1cGxpY2F0ZSA6c3I6IC0tIGVzcikKLXp0eHx6dHgxMXx6dC0xfGh0eDExfHp0eC0xLWF8enR4LTEwIG9yIDExLAotCU9UYnMsIGFtLCBlc2xvaywgaHMsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEVFLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZGwxPVxFTSwKLQlkc2w9XEV5MSwgZWQ9XEVKLCBlbD1cRUssIGZzbD1cRWtcRXk1LCBob21lPVxFSCwgaHQ9XkksCi0JaWwxPVxFTCwgaXMyPVxFalxFSFxFcVxFa1xFdlxFeTFcRXk1XEVHXEV5OFxFeTlcRXk+LAotCWticz1eSCwga2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZjA9XEVTLAotCWtmMT1cRUIsIGtmMj1cRVUsIGtmMz1cRVYsIGtmND1cRVcsIGtmNT1cRVAsIGtmNj1cRVEsIGtmNz1cRVIsCi0Jcmk9XEVJLCBybXNvPVxFcSwgcm11bD1cRXEsIHNtc289XEVzNSwgc211bD1cRXMyLAotCXRzbD1cRWpcRXg1XEV4MVxFWTglKyBcRW8sCi0KLSMjIyMgSU1TIEludGVybmF0aW9uYWwgKGltcykKLSMKLSMgVGhlcmUgd2FzIGEgY29tcGFueSBjYWxsZWQgSU1TIEludGVybmF0aW9uYWwgbG9jYXRlZCBpbiBDYXJzb24gQ2l0eSwKLSMgTmV2YWRhLCB0aGF0IGZsb3VyaXNoZWQgZnJvbSB0aGUgbWlkLTcwcyB0byBtaWQtODBzLiAgVGhleSBtYWRlIFMtMTAwCi0jIGJ1cy9aODAgaGFyZHdhcmUgYW5kIGEgbGluZSBvZiB0ZXJtaW5hbHMgY2FsbGVkIFVsdGltYXMuCi0jCi0KLSMgRnJvbTogRXJpayBGYWlyIDxmYWlyQHVjYmFycGEuYmVya2VsZXkuZWR1PiAgU3VuIE9jdCAyNyAwNzoyMTowNSAxOTg1Ci1pbXM5NTAtYnxiYXJlIGltczk1MCBubyBpbml0IHN0cmluZywKLQlpczJALCB1c2U9aW1zOTUwLAotIyAoaW1zOTUwOiByZW1vdmVkIG9ic29sZXRlICI6a29AOiIgLS0gZXNyKQotaW1zOTUwfGltcyB0ZWxldmlkZW8gOTUwIGVtdWxhdGlvbiwKLQl4ZW5sQCwKLQlmbGFzaEAsIGtic0AsIGtjdWIxQCwga2N1ZDFALCBrY3VmMUAsIGtjdXUxQCwga2YwQCwga2YxQCwga2YyQCwga2YzQCwKLQlrZjRALCBrZjVALCBrZjZALCBrZjdALCBrZjhALCBrZjlALCBraG9tZUAsIHVzZT10dmk5NTAsCi0jIChpbXM5NTAtcnY6IHJlbW92ZWQgb2Jzb2xldGUgIjprb0A6IiAtLSBlc3IpCi1pbXM5NTAtcnZ8aW1zIHR2aTk1MCByZXYgdmlkZW8sCi0JeGVubEAsCi0JZmxhc2hALCBrYnNALCBrY3ViMUAsIGtjdWQxQCwga2N1ZjFALCBrY3V1MUAsIGtmMEAsIGtmMUAsIGtmMkAsIGtmM0AsCi0Ja2Y0QCwga2Y1QCwga2Y2QCwga2Y3QCwga2Y4QCwga2Y5QCwga2hvbWVALCB1c2U9dHZpOTUwLXJ2LAotaW1zLWFuc2l8dWx0aW1hMnx1bHRpbWFJSXxJTVMgVWx0aW1hIElJLAotCU9UYnMsIGFtLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWNsZWFyPVxFW0hcRVsySiwgY3ViMT1eSCwgY3VkMT1cRUQsCi0JY3VwPVxFWyVpJXAxJTJkOyVwMiUyZEgsIGN1dTE9XEVNLCBlZD1cRVswSiwgZWw9XEVbMEssCi0JaHQ9XkksIGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3Z0MTAwLAotCWlzMj1cRVttXEVbPjE0bFxFWz8xOz81OzIwbFxFPlxFWzFtXHIsIGtjdWIxPVxFW0QsCi0Ja2N1ZDE9XEVbQiwga2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2hvbWU9XEVbSCwgcmk9XEVNLAotCXJtc289XEVbbVxFWzFtLCBybXVsPVxFW21cRVsxbSwgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sCi0KLSMjIyMgSW50ZXJ0ZWMgRGF0YSBTeXN0ZW1zCi0jCi0jIEkgdGhpbmsgdGhpcyBjb21wYW55IGlzIGxvbmcgZGVhZCBhcyBvZiAxOTk1LiAgVGhleSBtYWRlIGFuIGVhcmx5IENQL00KLSMgbWljcm8gY2FsbGVkIHRoZSAiSW50ZXJ0ZWMgU3VwZXJicmFpbiIgdGhhdCB3YXMgbW9kZXJhdGVseSBwb3B1bGFyLAotIyB0aGVuIHNhbmsgb3V0IG9mIHNpZ2h0LgotIwotCi1zdXBlcmJyYWlufGludGVydGVjIHN1cGVyYnJhaW4sCi0JT1RicywgYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCU9UYmM9XlUsIGJlbD1eRywgY2xlYXI9XDAxNCQ8NSo+LCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwKLQljdWYxPV5GLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjJDwyMD4sIGN1dTE9XkssCi0JZWQ9XEV+azwxMCo+LCBlbD1cRX5LJDwxNT4sIGh0PV5JLCBpbmQ9XkosIGtjdWIxPV5VLAotCWtjdWQxPV5KLCBrY3VmMT1eRiwga2N1dTE9XkssIHJtY3VwPV5MLCBzbWN1cD1eTCwKLSMgKGludGVydHViZTogYSBHb3VsZCBlbnRyeSB2aWEgQlJMIGFzc2VydGVkIHNtdWw9XEUwQCQ8MjAwLz4sCi0jIHJtdWw9XEUwQSQ8MjAwLz47IG15IGd1ZXNzIGlzIHRoZSBoaWdobGlnaHQgbGV0dGVyIGlzIGJpdC1jb2RlZCBsaWtlIGFuIEFETSwKLSMgYW5kIHRoZSByZXZlcnNlIGlzIGFjdHVhbGx5IHRydWUuICBUcnkgaXQuIC0tIGVzcikKLWludGVydHViZXxpbnRlcnRlY3xJbnRlcnRlYyBJbnRlclR1YmUsCi0JT1RicywgYW0sCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkYsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8NTA+LCBjdXUxPV5aLCBob21lPV5BLAotCWluZD1eSiwgcm1zbz1cRTBALCBzbXNvPVxFMFAsCi0jIFRoZSBpbnRlcnR1YmUgMiBoYXMgdGhlICJmdWxsIGR1cGxleCIgcHJvYmxlbSBsaWtlIHRoZSB0ZWsgNDAyNTogaWYgeW91Ci0jIGFyZSB0eXBpbmcgYW5kIGEgY29tbWFuZCBjb21lcyBpbiwgdGhlIGtleXN0cm9rZXMgeW91IHR5cGUgZ2V0IGludGVyc3BlcnNlZAotIyB3aXRoIHRoZSBjb21tYW5kIGFuZCBpdCBtZXNzZXMgdXAKLWludGVydHViZTJ8aW50ZXJ0ZWMgZGF0YSBzeXN0ZW1zIGludGVydHViZSAyLAotCU9UYnMsCi0JY3VwPVwwMTYlcDElY1wwMjAlcDIlezEwfSUvJXsxNn0lKiVwMiV7MTB9JW0lKyVjLAotCWVsPVxFSywgaHBhPVwwMjAlcDElezEwfSUvJXsxNn0lKiVwMSV7MTB9JW0lKyVjLAotCWxsPV5LXlhcciwgdnBhPVwwMTMlcDElYywgdXNlPWludGVydHViZSwKLQotIyMjIyBJdGhhY2EgSW50ZXJzeXN0ZW1zCi0jCi0jIFRoaXMgY29tcGFueSBtYWRlIFMxMDAtYnVzIHBlcnNvbmFsIGNvbXB1dGVycyBsb25nIGFnbyBpbiB0aGUgcHJlLUlCTS1QQwotIyBwYXN0LiAgVGhleSB1c2VkIHRvIGJlIHJlYWNoYWJsZSBhdDoKLSMKLSMJSXRoYWNhIEludGVyc3lzdGVtcwotIwkxNjUwIEhhbnNoYXcgUm9hZAotIwlJdGhhY2EsIE5ldyBZb3JrIDE0ODUwCi0jCi0jIEhvd2V2ZXIsIHRoZSBvdXRmaXQgd2VudCBiYW5rcnVwdCB5ZWFycyBhZ28uCi0jCi0KLSMgVGhlIEdyYXBob3MgSUlJIHdhcyBhIGNvbG9yIGdyYXBoaWNzIHRlcm1pbmFsIGZyb20gSXRoYWNhIEludGVyc3lzdGVtcy4KLSMgVGhlc2UgZW50cmllcyB3ZXJlIHdyaXR0ZW4gKG9yaWdpbmFsbHkgaW4gdGVybWNhcCBzeW50YXgpIGJ5IEJyaWFuIFlhbmRlbGwKLSMgPHlhbmRlbGxAc3RhdC53aXNjLmVkdT4gYW5kIE1pa2UgTWV5ZXIgPG1pa2VtQHN0YXQud2lzYy5lZHU+IGF0IHRoZQotIyBVbml2ZXJzaXR5IG9mIFdpc2NvbnNpbi4KLQotIyAoZ3JhcGhvczogcmVtb3ZlZCBvYnNvbGV0ZSBhbmQgc3ludGFjdGljYWxseSBpbmNvcnJlY3QgOmtuPTQ6LAotIyByZW1vdmVkIDxpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9pbml0LmdyYXBob3M+IGFuZAotIyA8cmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvaW5pdC5ncmFwaG9zPiBubyBzdWNoIGZpbGUgJiBubyA8aHRzPiAtLSBlc3IpCi1ncmFwaG9zfGdyYXBob3MgSUlJLAotCWFtLCBtaXIsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbSFxFWzJKLCBjbm9ybT1cRXo1NjsyOzA7MHpcRXo3M3pcRXo0OzE7MXosCi0JY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsIGN1ZD1cRVslcDElZEIsIGN1ZDE9XEVbQiwKLQljdWY9XEVbJXAxJWRDLCBjdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwKLQljdXU9XEVbJXAxJWRBLCBjdXUxPVxFW0EsCi0JY3Z2aXM9XEV6NDsyOzF6XEV6NTY7Mjs4MDsyNHosIGRjaDE9XEVbUCwgZGw9XEVbJXAxJWRNLAotCWRsMT1cRVtNLCBlZD1cRVtKLCBlbD1cRVtLLCBob21lPVxFW0gsIGh0PV5JLCBpbD1cRVslcDElZEwsCi0JaWwxPVxFW0wsIGluZD1cRUQsIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwga2YyPVxFT1EsIGtmMz1cRU9SLAotCWtmND1cRU9TLCBraG9tZT1cRVtILCBuZWw9Xk1cRUQsIHJjPVxFOCwgcmk9XEVNLCBybWRjPVxFWzRsLAotCXJtaXI9XEVbNGwsIHJtc289XEVbbSwgc2M9XEU3LCBzZ3IwPVxFW20sIHNtZGM9XEVbNGgsCi0Jc21pcj1cRVs0aCwgc21zbz1cRVs3bSwKLWdyYXBob3MtMzB8Z3JhcGhvcyBJSUkgd2l0aCAzMCBsaW5lcywKLQlsaW5lcyMzMCwKLQljdnZpcz1cRXo0OzI7MXpcRXo1NjsyOzgwOzMweiwgdXNlPWdyYXBob3MsCi0KLSMjIyMgTW9kZ3JhcGgKLSMKLSMgVGhlc2UgcGVvcGxlIHVzZWQgdG8gYmUgcmVhY2hhYmxlIGF0OgotIwotIwlNb2RncmFwaCwgSW5jCi0jCTEzOTMgTWFpbiBTdHJlZXQsCi0jCVdhbHRoYW0sIE1BIDAyMTU0Ci0jCVZveDogKDYxNyktODkwLTU3OTYuCi0jCi0jIEhvd2V2ZXIsIGlmIHlvdSBjYWxsIHRoYXQgbnVtYmVyIHRvZGF5IHlvdSdsbCBnZXQgYW4gaW5zdXJhbmNlIGNvbXBhbnkuCi0jIEkgaGF2ZSBtYWlsIGZyb20gIk1pY2hhZWwgQmVybWFuLCBWLlAuIFNhbGVzLCBNb2RncmFwaCIgZGF0ZWQKLSMgMjYgRmViIDE5OTcgdGhhdCBzYXlzOgotIwotIyBNb2RncmFwaCBHWC0xMDAwLCByZXBsYWNlZCBieSBHWC0yMDAwLiAgQm90aCBhcmUgb3V0IG9mIHByb2R1Y3Rpb24sIGhhdmUgYmVlbgotIyBmb3IgfjcgeWVhcnMuICBNb2RncmFwaCBzdGlsbCBpbiBidXNpbmVzcy4gIFByb2R1Y3RzIGFyZSBydWdnZWQgbGFwdG9wIGFuZAotIyBwb3J0YWJsZSBQQydzIGFuZCBzcGVjaWFsaXplZCBDUlQgYW5kIExDRCBtb25pdG9ycyAocnVnZ2VkLCByYWNrLW1vdW50Ci0jIHBhbmVsLW1vdW50IGV0YykuICBJIGNhbiBiZSBlbWFpbGVkIGF0IHNvbmZvdXJAYW9sLmNvbQotIwotIyBQZXRlciBELiBTbWl0aCA8cGRzbWl0aEBuYmJuLmNvbT4gbm90ZXMgdGhhdCBoaXMgbW9kZ3JhcGggbWFudWFsIHdhcwotIyBkYXRlZCAxOTg0LiAgQWNjb3JkaW5nIHRvIHRoZSBtYW51YWwsIGl0IGZlYXR1cmVkIFRlayA0MDEwLzQwMTQKLSMgZ3JhcGhpY3MgYW5kIERFQyBWVDEwMC9WVDUyICsgQURNLTNBIGVtdWxhdGlvbiB3aXRoIGEgVlQyMjAtc3R5bGUga2V5Ym9hcmQuCi0jCi0KLW1vZGdyYXBofG1vZDI0fG1vZGdyYXBoIHRlcm1pbmFsIGVtdWxhdGluZyB2dDEwMCwKLQl4ZW5sQCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljdnZpcz1cRVxeOTswc1xFXF43OzFzLAotCWlzMj1cRVxeOTswc1xFXF43OzFzXEVbM2dcRVxeMTE7OXNcRVxeMTE7MTdzXEVcXjExOzI1c1xFXF4xMTszM3NcRVxeMTE7NDFzXEVcXjExOzQ5c1xFXF4xMTs1N3NcRVxeMTE7NjVzXEVcXjExOzczc1xFXF4xMTs4MXNcRVxeMTE7ODlzLAotCXJmQCwgcmk9XEVNXEVbSyQ8NS8+LCB1c2U9dnQxMDAsCi0jIFRoZSBHWC0xMDAwIG1hbnVhbCBpcyBkYXRlZCAxOTg0LiAgVGhpcyBsb29rcyByYXRoZXIgbGlrZSBhIFZULTUyLgotbW9kZ3JhcGgyfG1vZGdyYXBoIGd4LTEwMDAgODB4MjQgd2l0aCBrZXlwYWQgbm90IGVuYWJsZWQsCi0JYW0sIGRhLCBkYiwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQljbGVhcj1cRUhcRUokPDUwLz4sIGN1YjE9XkgsIGN1ZjE9XEVDJDwyLz4sCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8NS8+LCBjdXUxPVxFQSQ8Mi8+LAotCWVkPVxFSiQ8NTAvPiwgZWw9XEVLJDwzLz4sIGh0PV5JLAotCWlzMj1cRTxcRVxeNTsyc1xFXF43OzFzXEVbM2dcRVxeMTE7OXNcRVxeMTE7MTdzXEVcXjExOzI1c1xFXF4xMTszM3NcRVxeMTE7NDFzXEVcXjExOzQ5c1xFXF4xMTs1N3NcRVxeMTE7NjVzXEVcXjExOzczc1xFXF4xMTs4MXNcRVxeMTE7ODlzXEVcXjEyOzBzXEVcXjE0OzJzXEVcXjE1OzlzXEVcXjI1OzFzXEVcXjk7MXNcRVxeMjc7MSwKLQlyaT1cRUkkPDUvPiwKLSMKLSMgTW9kZ3JhcGggZnJvbSBOYW5jeSBMLiBDaWRlciA8bmFuY3ljQGJybC10YmQ+Ci0jIEJVRyBOT1RFIGZyb20gQmFyYmFyYSBFLiBSaW5nZXJzIDxiYXJiQGJybC10YmQ+OgotIyBJZiB3ZSBzZXQgVEVSTT12dDEwMCwgYW5kIHNldCB0aGUgTW9kZ3JhcGggc2NyZWVuIHRvIDI0IGxpbmVzLCBzZXR0aW5nIGEKLSMgbWFyayBhbmQgdXNpbmcgZGVsZXRlLXRvLWtpbGxidWZmZXIgd29yayBjb3JyZWN0bHkuICBIb3dldmVyLCB3ZSB3b3VsZAotIyBsaWtlIG5vcm1hbCBtb2RlIG9mIG9wZXJhdGlvbiB0byBiZSB1c2luZyBhIE1vZGdyYXBoIHdpdGggNDggbGluZSBzZXR0aW5nLgotIyBJZiB3ZSBzZXQgVEVSTT1tb2QgKHdoaWNoIGlzIGEgdmFsaWQgZW50cnkgaW4gdGVybWNhcCB3aXRoIDQ4IGxpbmVzKQotIyB0aGUgc2V0dGluZyBtYXJrIGFuZCBkZWxldGUtdG8ta2lsbGJ1ZmZlciByZXN1bHRzIGluIHRoZSBkZWxldGlvbiBvZiBvbmx5Ci0jIHRoZSBsaW5lIHRoZSBtYXJrIGlzIHNldCBvbi4KLSMgV2UndmUgZGlzY292ZXJlZCB0aGF0IHRoZSBkZWxldGUtdG8ta2lsbGJ1ZmZlciB3b3JrcyBjb3JyZWN0bHkKLSMgd2l0aCBURVJNPW1vZCBhbmQgc2NyZWVuIHNldCB0byA4MHg0OCBidXQgaXQncyBub3Qgb2J2aW91cy4gIE9ubHkKLSMgdGhlIGZpcnN0IGxpbmUgZGlzYXBwZWFycyBidXQgYSBjdHJsLWwgc2hvd3MgdGhhdCBpdCBkaWQgd29yawotIyBjb3JyZWN0bHkuCi1tb2RncmFwaDQ4fG1vZHxNb2RncmFwaCB3LzQ4IGxpbmVzLAotCU9UYnMsIE9UcHQsIGFtLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzQ4LCB2dCMzLAotCU9Ubmw9XkosIGJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFWztIXEVbMkosCi0JY3I9Xk0sIGNzcj1cRVslaSVwMSVkOyVwMiVkciwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDLAotCWN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBlZD1cRVtKLCBlbD1cRVtLLAotCWZsYXNoPVxFWz81aFxFWzBxXEVbMTsycVxFWz81bFxFWzBxXEVbNDszcSwKLQlob21lPVxFW0gsIGh0PV5JLCBpczI9XEU8XEVbMTs0OHJcRVswcVxFWzM7NHFcRT1cRVs/MWgsCi0Ja2JzPV5ILCBrY3ViMT1cRU9ELCBrY3VkMT1cRU9CLCBrY3VmMT1cRU9DLCBrY3V1MT1cRU9BLAotCWtmMT1cRU9QLCBrZjI9XEVPUSwga2YzPVxFT1IsIGtmND1cRU9TLCByYz1cRTgsIHJldj1cRVs3bSwKLQlyaT1cRU0sIHJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczE9XEU9XEVbMHFcRT4sIHNjPVxFNywgc2dyMD1cRVttLCBzbWt4PVxFWz8xaFxFPSwKLQlzbXNvPVxFWzdtLCBzbXVsPVxFWzRtLAotCi0jIyMjIE1vcnJvdyBEZXNpZ25zCi0jCi0jIFRoaXMgd2FzIEdlb3JnZSBNb3Jyb3cncyBjb21wYW55LiAgVGhleSBzdGFydGVkIGluIHRoZSBsYXRlIDE5NzBzIG1ha2luZwotIyBTMTAwLWJ1cyBtYWNoaW5lcy4gIFRoZXkgdXNlZCB0byBiZSByZWFjaGFibGUgYXQ6Ci0jCi0jICAgICAgICBNb3Jyb3cKLSMgICAgICAgIDYwMCBNY0Nvcm1pY2sgU3QuCi0jICAgICAgICBTYW4gTGVhbmRybywgQ0EgOTQ1NzcKLSMKLSMgYnV0IHRoZXkncmUgbG9uZyBnb25lIG5vdyAoMTk5NSkuCi0jCi0KLSMgVGhlIG10NzAgdGVybWluYWwgd2FzIHNoaXBwZWQgd2l0aCB0aGUgTW9ycm93IE1ELTMgbWljcm9jb21wdXRlci4KLSMgSmVmZidzIHNwZWNpbWVuIHdhcyBkYXRlZCBKdW5lIDE5ODQuCi0jIEZyb206IEplZmYgV2llbGFuZCA8d2llbGFuZEBhY24ucHVyZHVlLmVkdT4gMjQgRmViIDE5OTUKLW10NzB8bXQtNzB8TW9ycm93IE1ELTcwOyBuYXRpdmUgTW9ycm93IG1vZGUsCi0JYW0sIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9K3pcLHsteC55T2lgfGpHa0ZsRW1EbkhxSnRMdUt2TndNeEksIGJlbD1eRywKLQljYnQ9XEVJLCBjaXZpcz1cRSIwLCBjbGVhcj1eWiwgY25vcm09XEUiMiwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1eSiwgY3VmMT1eTCwgY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYyQ8MT4sCi0JY3V1MT1eSywgZGNoMT1cRVcsIGRpbT1cRUcyLCBkbDE9XEVSLCBlZD1cRVksIGVsPVxFVCQ8MTA+LAotCWZsYXNoPVxFSzEkPDIwMD5cRUswLCBob21lPV5eLCBodD1eSSwgaWNoMT1cRVEsIGlsMT1cRUUsCi0JaW5kPV5KLCBpbnZpc0AsIGlzMT1cRSIyXEVHMFxFXSwga2JzPV5ILCBrY2J0PV5BXlpcciwKLQlrY2xyPV5BblxyLCBrY3ViMT1eQUxcciwga2N1ZDE9XkFLXHIsIGtjdWYxPV5BTVxyLAotCWtjdXUxPV5BSlxyLCBrZGNoMT1cMTc3LCBrZjE9XkFAXHIsIGtmMTA9XkFJXHIsIGtmMTE9XkFgXHIsCi0Ja2YxMj1eQWFcciwga2YxMz1eQWJcciwga2YxND1eQWNcciwga2YxNT1eQWRcciwga2YxNj1eQWVcciwKLQlrZjE3PV5BZlxyLCBrZjE4PV5BZ1xyLCBrZjE5PV5BaFxyLCBrZjI9XkFBXHIsIGtmMjA9XkFpXHIsCi0Ja2YzPV5BQlxyLCBrZjQ9XkFDXHIsIGtmNT1eQURcciwga2Y2PV5BRVxyLCBrZjc9XkFGXHIsCi0Ja2Y4PV5BR1xyLCBrZjk9XkFIXHIsIGtobHA9XkFPXHIsIGtob21lPV5BTlxyLCBuZWw9Xl8sCi0Jcm1hY3M9XEUlJSwgcm1jdXA9LCBzbWFjcz1cRSQsIHNtY3VwPVxFIjJcRUcwXEVdLAotCXNtdWw9XEVHMSwgdGJjPVxFMCwgdXNlPWFkbStzZ3IsCi0KLSMjIyMgTW90b3JvbGEKLSMKLQotIyBNb3Rvcm9sYSBFWE9SdGVybSAxNTUJZnJvbSB7ZGVjdmF4LCBpaG5wNH0hcGhpbGFicyFzYmNzIW1lZ2FkIXNldGggdmlhIEJSTAotIyAoU2V0aCBIIFppcmluKQotZXgxNTV8TW90b3JvbGEgRXhvcnRlcm0gMTU1LAotCU9UYnMsIGFtLCBidywKLQlPVGtuIzUsIE9UdWcjMSwgY29scyM4MCwgbGluZXMjMjQsCi0JY2J0PVxFWywgY2xlYXI9XEVYLCBjdWQxPVxFQiwgY3VmMT1cRUQsCi0JY3VwPVxFRSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgZWQ9XEVULCBlbD1cRVUsCi0JaG9tZT1cRUAsIGh0PVxFWiwga2JzPV5ILCBrY2J0PVxFWywga2Nscj1cRVgsIGtjdWIxPV5ILAotCWtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssIGtlZD1cRVQsIGtlbD1cRVUsIGtob21lPVxFQCwKLQlybXNvPVxFY1xFRCwgcm11bD1cRWdcRUQsIHNtc289XEViXEVELCBzbXVsPVxFZlxFRCwKLQotIyMjIyBPbXJvbgotIwotIyBUaGlzIGNvbXBhbnkgaXMgc3RpbGwgYXJvdW5kIGluIDE5OTUsIG1hbnVmYWN0dXJpbmcgcG9pbnQtb2Ytc2FsZSBzeXN0ZW1zLgotCi1vbXJvbnxPbXJvbiA4MDI1QUcsCi0JT1RicywgYW0sIGRhLCBkYiwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLCBjdXUxPVxFQSwKLQljdnZpcz1cRU4sIGRjaDE9XEVQLCBkbDE9XEVNLCBlZD1cRVIsIGVsPVxFSywgaG9tZT1cRUgsCi0JaWwxPVxFTCwgaW5kPVxFUywgcmk9XEVULCBybXNvPVxFNCwgc21zbz1cRWYsCi0KLSMjIyMgUmFtdGVrCi0jCi0jIFJhbXRlayB3YXMgYSB2ZW5kb3Igb2YgaGlnaC1lbmQgZ3JhcGhpY3MgdGVybWluYWxzIGFyb3VuZCAxOTc5LTE5ODM7IHRoZXkKLSMgd2VyZSBjb21wZXRpdGlvbiBmb3IgdGhpbmdzIGxpa2UgdGhlIFRla3Ryb25pY3MgNDAyNS4KLSMKLQotIyBSYW10ZWsgNjIyMSBmcm9tIEJSTCwgcHJvYmFibHkgYnkgRG91ZyBHd3luCi0jIFRoZSBmb2xsb3dpbmcgU0VULVVQIG1vZGVzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlVTkRFUkxJTkVfQ1VSU09SCUFOU0lfTU9ERQlBVVRPX1hPTi9YT0ZGX09OCi0jCU5FV0xJTkVfT0ZGCQk4MF9DT0xVTU5TCi0jIE90aGVyIFNFVC1VUCBtb2RlcyBtYXkgYmUgc2V0IGZvciBvcGVyYXRvciBjb252ZW5pZW5jZSBvciBjb21tdW5pY2F0aW9uCi0jIHJlcXVpcmVtZW50czsgSSByZWNvbW1lbmQKLSMJU01PT1RIX1NDUk9MTAlBVVRPX1JFUEVBVF9PTgkzXyNfU0hJRlRFRAlXUkFQX0FST1VORF9PTgotIyBIYXJkd2FyZSB0YWJzIGFyZSBhc3N1bWVkIHRvIGJlIGV2ZXJ5IDggY29sdW1uczsgdGhleSBjYW4gYmUgc2V0IHVwIGJ5IHRoZQotIyAicmVzZXQiLCAidHNldCIsIG9yICJ0YWJzIiB1dGlsaXRpZXMgKHVzZSBydDYyMjEtdywgMTYwIGNvbHVtbnMsIGZvciB0aGlzKS4KLSMgTm90ZSB0aGF0IHRoZSBDb250cm9sLUUga2V5IGlzIHVzZWxlc3Mgb24gdGhpcyBicmFpbi1kYW1hZ2VkIHRlcm1pbmFsLiAgTm8KLSMgZGVsYXlzIGFyZSBzcGVjaWZpZWQ7IHVzZSAic3R0eSBpeG9uIC1peGFueSIgdG8gZW5hYmxlIERDMy9EQzEgZmxvdyBjb250cm9sIQotcnQ2MjIxfFJhbXRlayA2MjIxIDgweDI0LAotCU9UYnMsIE9UcHQsIG1zZ3IsIHhvbiwKLQlPVGtuIzQsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLAotCWFjc2M9LCBiZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjaXZpcz1cRVs+NWwsCi0JY2xlYXI9XEVbMTsxSFxFW0osIGNub3JtPVxFWz41aFxFWz45aCwgY3I9Xk0sCi0JY3NyPVxFWyVpJXAxJWQ7JXAyJWRyLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILAotCWN1ZD1cRVslcDElZEIsIGN1ZDE9XkssIGN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dT1cRVslcDElZEEsIGN1dTE9XEVNLAotCWN2dmlzPVxFWz43aFxFWz45bCwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVsxOzFILCBodD1eSSwKLQlodHM9XEVILCBpbmQ9XkosIGlzMj1cRSkwLCBrYnM9XkgsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YwPVxFT1AsIGtmMT1cRU9RLCBrZjI9XEVPUiwKLQlrZjM9XEVPUywgbGYwPVBGMSwgbGYxPVBGMiwgbGYyPVBGMywgbGYzPVBGNCwgbGw9XEVbMjQ7MUgsCi0JbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJpPVxFTSwgcm1hY3M9Xk8sIHJta3g9XEU+LAotCXJtc289XEVbbSwgcm11bD1cRVttLAotCXJzMT1cRVsxd1xFWz4zN21cRVs+MzltXEVbMXZcRVsyMGxcRVs/M2xcRVs/NmxcRVs+NWhcRVs+NmhcRVs+N2hcRVs+OGxcRVs+OWhcRVs+MTBsXEVbMTsyNHJcRVttXEVbcVxFKEJcMDE3XEUpMFxFIzVcRT4sCi0Jc2M9XEU3LCBzZ3IwPVxFW20sIHNtYWNzPV5OLCBzbWt4PVxFPSwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi0jIFtUTyBETzogQ2hlY2sgb3V0OiBzaG9ydCBmb3JtcyBvZiBoby9jbCBhbmQgbGw7IHJlc2V0IChcRWMpXS4KLXJ0NjIyMS13fFJhbXRlayA2MjIxIDE2MHg0OCwKLQljb2xzIzE2MCwgbGluZXMjNDgsCi0JbGw9XEVbNDg7MUgsIHVzZT1ydDYyMjEsCi0KLSMjIyMgUkNBCi0jCi0KLSMgUkNBIFZQMzMwMSBvciBWUDM1MDEKLXJjYXxyY2EgdnAzMzAxL3ZwMzUwMSwKLQlPVGJzLAotCWNvbHMjNDAsIGxpbmVzIzI0LAotCWNsZWFyPV5MLCBjdWYxPV5VLCBjdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XkssIGhvbWU9XlosIHJtc289XEVcRVMwLCBzbXNvPVxFXEVTMSwKLQotCi0jIyMjIFNlbGFuYXIKLSMKLQotIyBTZWxhbmFyIEhpUkVaLTEwMCBmcm9tIEJSTCwgcHJvYmFibHkgYnkgRG91ZyBHd3luCi0jIFRoZSBmb2xsb3dpbmcgU0VULVVQIG1vZGVzIGFyZSBhc3N1bWVkIGZvciBub3JtYWwgb3BlcmF0aW9uOgotIwlTRVRfREVGQVVMVF9UQUJTCTQ4X0xJTkVTCQk4MF9DT0xVTU5TCi0jCU9OTElORQkJCUFOU0kJCQlDVVJTT1JfVklTSUJMRQotIwlWVDEwMl9BVVRPX1dSQVBfT04JVlQxMDJfTkVXTElORV9PRkYJVlQxMDJfTU9OSVRPUl9NT0RFX09GRgotIwlMT0NBTF9FQ0hPX09GRgkJVVNfQ0hBUl9TRVQJCVdQU19URVJNSU5BTF9ESVNBQkxFRAotIwlDUFVfQVVUT19YT04vWE9GRl9FTkFCTEVECQkJUFJJTlRfRlVMTF9TQ1JFRU4KLSMgRm9yIHVzZSB3aXRoIGdyYXBoaWNzIHNvZnR3YXJlLCBhbGwgZ3JhcGhpY3MgbW9kZXMgc2hvdWxkIGJlIHNldCB0byBmYWN0b3J5Ci0jIGRlZmF1bHQuICBPdGhlciBTRVQtVVAgbW9kZXMgbWF5IGJlIHNldCBmb3Igb3BlcmF0b3IgY29udmVuaWVuY2Ugb3IKLSMgY29tbXVuaWNhdGlvbiByZXF1aXJlbWVudHMuICBObyBkZWxheXMgYXJlIHNwZWNpZmllZDsgdXNlICJzdHR5IGl4b24gLWl4YW55IgotIyB0byBlbmFibGUgREMzL0RDMSBmbG93IGNvbnRyb2whCi0jIEkgY29tbWVudGVkIG91dCB0aGUgc2Nyb2xsaW5nIGNhcGFiaWxpdGllcyBzaW5jZSB0aGV5IGFyZSB0b28gc2xvdy4KLWhpcmV6MTAwfFNlbGFuYXIgSGlSRVotMTAwLAotCU9UYnMsIE9UcHQsIG1pciwgbXNnciwgeG9uLAotCU9Ua24jNCwgY29scyM4MCwgaXQjOCwgbGluZXMjNDgsIHZ0IzMsCi0JYWNzYz0sIGJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLAotCWNyPV5NLCBjdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVNLCBkY2g9XEVbJXAxJWRQLCBkY2gxPVxFW1AsCi0JZGw9XEVbJXAxJWRNLCBkbDE9XEVbTSwgZWQ9XEVbSiwgZWw9XEVbSywgaG9tZT1cRVtILCBodD1eSSwKLQlodHM9XEVILCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpczI9XEU8XEUpMCwga2JzPV5ILAotCWtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsIGtjdWYxPVxFT0MsIGtjdXUxPVxFT0EsIGtmMD1cRU9QLAotCWtmMT1cRU9RLCBrZjI9XEVPUiwga2YzPVxFT1MsIGxmMD1QRjEsIGxmMT1QRjIsIGxmMj1QRjMsCi0JbGYzPVBGNCwgbGw9XEVbNDhILCBtYzA9XEVbaSwgbWM0PVxFWzRpXEVbPzRpLAotCW1jNT1cRVs/NWlcRVs1aSwgbmVsPVxFRSwgcmM9XEU4LCByZXY9XEVbN20sIHJtYWNzPV5PLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW20sIHJtdWw9XEVbbSwKLQlyczE9XDAzMFxFMlxFPFxFWzRpXEVbPzRpXEVbMTJoXEVbMjs0OzIwbFxFWz8wOzdoXEVbPzE7Mzs2OzE5bFxFW3JcRVttXEUoQlwwMTdcRSkwXEU+LAotCXNjPVxFNywgc2dyMD1cRVttLCBzbWFjcz1eTiwgc21reD1cRVs/MWhcRT0sIHNtc289XEVbN20sCi0Jc211bD1cRVs0bSwgdGJjPVxFWzNnLAotaGlyZXoxMDAtd3xTZWxhbmFyIEhpUkVaLTEwMCBpbiAxMzItY29sdW1uIG1vZGUsCi0JY29scyMxMzIsIHVzZT1oaXJlejEwMCwKLQotIyMjIyBTaWduZXRpY3MKLSMKLQotIyBGcm9tIFVuaXZlcnNpdHkgb2YgV2lzY29uc2luCi12c2N8U2lnbmV0aWNzIFZzYyBWaWRlbyBkcml2ZXIgYnkgUk1DLAotCWFtLCBtc2dyLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI2LAotCWNsZWFyPVxFWztIXEVbMkokPDUwLz4sIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGVsPVxFW0ssIGhvbWU9XEVbSCwKLQlodD1eSSwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPV5ILCBrY3VkMT1eSiwgbmVsPV5NXkosIHJldj1eX1xzLAotCXJtc289Xl8hLCBybXVsPV5fIywgc2dyMD1eXyEsIHNtc289Xl9ccywgc211bD1eXyIsCi0KLSMjIyMgU29yb2MKLSMKLSMgQWxhbiBGcmlzYmllIDxmcmlzYmllQGZseWluZy1kaXNrLmNvbT4gd3JpdGVzOgotIwotIyBBcyB5b3UgbWF5IHJlY2FsbCwgdGhlIFNvcm9jIGxvZ28gY29uc2lzdGVkIG9mIHRoZWlyIG5hbWUsCi0jIHdpdGggdGhlIGxldHRlciAiUyIgc3VwZXJpbXBvc2VkIG92ZXIgYW4gb2RkIGRlc2lnbi4gICBUaGlzCi0jIGNvbnNpc3RlZCBvZiBhIGNpcmNsZSB3aXRoIGEgc2xpZ2h0bHkgc21hbGxlciAxNSBkZWdyZWUgKGFwcHJveC4pCi0jIHdlZGdlIHdpdGggcm91bmRlZCBjb3JuZXJzIGluc2lkZSBpdC4gICBUaGUgY29sb3Igd2FzIHNvcnQgb2YKLSMgYSBtZXRhbGxpYyBnb2xkL3llbGxvdy4KLSMKLSMgSWYgSSBoYWQgYmVlbiBtb3JlIG9mIGEgYmVlciBkcmlua2VyIGl0IG1pZ2h0IGhhdmUgYmVlbiBvYnZpb3VzCi0jIHRvIG1lLCBidXQgaXQgdG9vayBhIGNsdWUgZnJvbSB0aGVpciBzZXJ2aWNlIGRlcGFydG1lbnQgdG8gbWFrZQotIyBtZSBleGNsYWltLCAiT2YgY291cnNlISIgICBUaGUgY2lyY3VsYXIgb2JqZWN0IHdhcyB0aGUgdG9wIG9mCi0jIGEgYmVlciBjYW4gKHRoZSBvbGQgcmVtb3ZhYmxlIHBvcC10b3Agc3R5bGUpIGFuZCAiU29yb2MiIHdhcyBhbgotIyBhbmFncmFtIGZvciAiQ29vcnMiLgotIwotIyBJIGNhbiBqdXN0IGltYWdpbmUgdGhlIGZvdW5kZXJzIG9mIHRoZSBjb21wYW55IHNpdHRpbmcgYXJvdW5kCi0jIG9uZSBldmVuaW5nLCB0b3NzaW5nIGJhY2sgYSBmZXcgYW5kIHRyeWluZyB0byBkZWNpZGUgd2hhdCB0bwotIyBjYWxsIHRoZWlyIG5ldyBjb21wYW55IGFuZCB3aGF0IHRvIHVzZSBmb3IgYSBsb2dvLgotIwotCi0jIChzb3JvYzEyMDogcmVtb3ZlZCBvYnNvbGV0ZSAiOm1hPV5LXlBeUl5MXkwgOiIgLS0gZXNyKQotc29yb2MxMjB8aXExMjB8c29yb2N8c29yb2MgaXExMjAsCi0JY2xlYXI9XEUqJDwyPiwgY3VkMT1eSiwgZWQ9XEVZLCBlbD1cRVQsIGtjdWIxPV5ILCBrY3VkMT1eSiwKLQlrY3VmMT1eTCwga2N1dTE9XkssIHVzZT1hZG0zYSwKLXNvcm9jMTQwfGlxMTQwfHNvcm9jIGlxMTQwLAotCU9UYnMsIGFtLCBtaXIsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjYnQ9XEVJLCBjbGVhcj1cRSssIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPV5MLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGRjaDE9XEV3LAotCWRsMT1cRXIkPC43Kj4sIGVkPVxFeSwgZWw9XEV0LCBob21lPV5eLCBpbDE9XEVlJDwxKj4sIGluZD1eSiwKLQlrYnM9XkgsIGtjdWYxPV5MLCBrY3V1MT1eSywga2YwPV5BMFxyLCBrZjE9XkFAXHIsIGtmMj1eQUFcciwKLQlrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLCBrZjY9XkFFXHIsIGtmNz1eQUZcciwKLQlrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sIGxsPV5eXkssIHJtaXI9XEU4LAotCXJtc289XEVcMTc3LCBybXVsPVxFXkEsIHNtaXI9XEU5LCBzbXNvPVxFXDE3Nywgc211bD1cRV5BLAotCi0jIyMjIFNvdXRod2VzdCBUZWNobmljYWwgUHJvZHVjdHMKLSMKLSMgVGhlc2UgZ3V5cyBtYWRlIGFuIGVhcmx5IHBlcnNvbmFsIG1pY3JvIGNhbGxlZCB0aGUgTTY4MDAuCi0jIFRoZSBjdDgyIHdhcyBwcm9iYWJseSBpdHMgY29uc29sZSB0ZXJtaW5hbC4KLSMKLQotIyAoc3d0cDogcmVtb3ZlZCBvYnNvbGV0ZSAiOmJjPV5EOiIgLS0gZXNyKQotc3d0cHxjdDgyfHNvdXRod2VzdCB0ZWNobmljYWwgcHJvZHVjdHMgY3Q4MiwKLQlhbSwKLQljb2xzIzgyLCBsaW5lcyMyMCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eRCwgY3VkMT1eSiwgY3VmMT1eUywKLQljdXA9XDAxMyVwMiVjJXAxJWMsIGN1dTE9XkEsIGRjaDE9XlxeSCwgZGwxPV5aLCBlZD1eViwgZWw9XkYsCi0JaG9tZT1eUCwgaWNoMT1eXF5YLCBpbDE9XlxeWSwgaW5kPV5OLAotCWlzMj1cMDM0XDAyMlwwMzZcMDIzXDAzNlwwMDRcMDM1XDAyN1wwMTFcMDIzXDAzNlwwMzVcMDM2XDAxN1wwMzVcMDI3XDAyMlwwMTEsCi0JbGw9XkMsIHJpPV5PLCBybXNvPV5eXkYsIHNtc289Xl5eViwKLQotIyMjIyBTeW5lcnRlawotIwotIyBCb2IgTWFuc29uIDxtYW5zb25AcGF0dHlyLmFjcy5vaGlvLXN0YXRlLmVkdT4gd3JpdGVzICgyOCBBcHIgMTk5NSk6Ci0jCi0jIFN5bmVydGVrIHVzZWQgdG8gbWFrZSBJQ3MsIHZhcmlvdXMgNjUwMi1iYXNlZCBzaW5nbGUtYm9hcmQgcHJvY2VzcwotIyBjb250cm9sIGFuZCBob2JieWlzdCBjb21wdXRlcnMsIGFuZCBhc3NvcnRlZCBwZXJpcGhlcmFscyBpbmNsdWRpbmcgYQotIyBzZXJpZXMgb2Ygc21hbGwgaW5leHBlbnNpdmUgdGVybWluYWxzIChJIHRoaW5rIHRoZXkgd2VyZSBvbmUgb2YgdGhlCi0jIGZpcnN0IHRvIGhhdmUgYSAidGVybWluYWwtb24tYS1rZXlib2FyZCIsIHdoZXJlIHRoZSB0ZXJtaW5hbCBpdHNlbGYKLSMgd2FzIG9ubHkgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIGtleWJvYXJkKS4KLSMKLSMgVGhleSBhcHBhcmVudGx5IGhhZCBhIEtUTS0xIG1vZGVsLCB3aGljaCBJJ3ZlIG5ldmVyIHNlZW4uIFRoZSBLVE0tMi80MAotIyB3YXMgYSA0MHgyNCB0ZXJtaW5hbCB0aGF0IGNvdWxkIGNvbm5lY3QgdG8gYSBzdGFuZGFyZCBUViB0aHJvdWdoIGEKLSMgdmlkZW8gbW9kdWxhdG9yLiAgVGhlIEtUTS0yLzgwIHdhcyB0aGUgODAtY29sdW1uIHZlcnNpb24gKHRoZSAyLzQwCi0jIGNvdWxkIGJlIHVwZ3JhZGVkIHRvIHRoZSAyLzgwIGJ5IGFkZGluZyAyIDIxMTQgU1JBTXMgYW5kIGEgbmV3IFJPTSkuCi0jIEkgaGF2ZSBhIEtUTS0yLzgwIHN0aWxsIGluIHdvcmtpbmcgb3JkZXIuICBUaGUgS1RNLTJzIGhhZCBmdWxseQotIyBzb2NrZXRlZCBwYXJ0cywgdXNlZCAyIDY1MDdzLCBhIDY1MzIgYXMga2V5Ym9hcmQgc2Nhbm5lciwgYSBwcm9ncmFtCi0jIFJPTSBhbmQgMiBST01zIGFzIGNoYXJhY3RlciBnZW5lcmF0b3JzLiBUaGV5IHdlcmUgaW5jcmVkaWJseSBzaW1wbGUsCi0jIGFuZCBJJ3ZlIG5ldmVyIGhhZCBhbnkgcHJvYmxlbXMgd2l0aCBtaW5lICh3aXRuZXNzIHRoZSBmYWN0IHRoYXQgbWluZQotIyB3YXMgbWFkZSBpbiAxOTgxIGFuZCBpcyBzdGlsbCB3b3JraW5nIGdyZWF0Li4uIEkndmUgYmxvd24gdGhlIHZpZGVvCi0jIG91dHB1dCB0cmFuc2lzdG9yIGEgY291cGxlIG9mIHRpbWVzLCBidXQgaXQncyBhIDJOMjIyMiA6LSkKLSMKLSMgVGhlIEtUTS0zICh3aGljaCBpcyB3aGF0IGlzIGxpc3RlZCBpbiB0aGUgdGVybWluZm8gZmlsZSkgd2FzIHRoZWlyCi0jIGF0dGVtcHQgYXQgcHV0dGluZyBhIEtUTS0yIGluIGEgYm94IChhbmQgc29tZSBtb2RlbHMgY2FtZSB3aXRoIGEKLSMgQ1JUKS4gSXQgd2Fzbid0IG11Y2ggZGlmZmVyZW50IGZyb20gdGhlIEtUTS0yIGhhcmR3YXJlLXdpc2UsIGJ1dCB0aGUKLSMgY29udHJvbCBhbmQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgdmVyeSBkaWZmZXJlbnQuIFRoZSBLVE0tMyB3YXMgYWx3YXlzCi0jIHJlYWwgYnJva2VuLCBhdCBsZWFzdCBhY2NvcmRpbmcgdG8gdGhlIGZvbGtzIEkndmUgdGFsa2VkIHRvIGFib3V0IGl0LgotIwotIyBUaGUgcGFkZGluZyBpbiB0aGUgZW50cnkgaXMgcHJvYmFibHkgb2ZmLS10aGVzZSB0ZXJtaW5hbHMgd2VyZSB2ZXJ5Ci0jIHNsb3cgKGl0IHRha2VzIGxpa2UgMTAwbXMgZm9yIHRoZSBLVE0tMiB0byBjbGVhciB0aGUgc2NyZWVuLi4uKSBBbmQKLSMgYW55b25lIHdpdGggYW55IHNhbml0eSByZXBsYWNlZCB0aGUgUk9NcyB3aXRoIHNvbWV0aGluZyB0aGF0IHByb3ZpZGVkCi0jIGEgcmVhc29uYWJsZSBzdWJzZXQgb2YgVlQxMDAgZnVuY3Rpb25hbGl0eSwgc2luY2UgdGhlIHVzdWFsIFJPTXMgd2VyZQotIyBvYnZpb3VzbHkgdmVyeSBwcmltaXRpdmUuLi4gb2gsIHlvdSBjb3VsZCBnZXQgYW4gdXBncmFkZWQgUk9NIGZyb20KLSMgU3luZXJ0ZWsgZm9yIHNvbWUgaW5jcmVkaWJsZSBhbW91bnQgb2YgbW9uZXksIGJ1dCB3aGF0IGhhY2tlciB3aXRoIGFuCi0jIEVQUk9NIGJ1cm5lciB3b3VsZCBkbyB0aGF0PyA6KQotIwotIyBTb3JyeSBJIGRvbid0IGhhdmUgYW55IGNvbnRhY3QgaW5mbzsgSSBiZWxpZXZlIHRoZXkgd2VyZSBsb2NhdGVkIGluCi0jIFN1bm55dmFsZSwgYW5kIEknbSBmYWlybHkgc3VyZSB0aGV5IGFyZSBzdGlsbCBtYW51ZmFjdHVyaW5nIElDcwotIyAodGhleSd2ZSBnb25lIHRvIEFTSUNzIGFuZCBGUEdBcyksIGJ1dCBJIGRvdWJ0IHRoZXkncmUgaW4gdGhlIGNvbXB1dGVyCi0jIGJ1c2luZXNzIHRoZXNlIGRheXMuCi0jCi0KLSMgVGVzdGVkLCBzZWVtcyB0byB3b3JrIGZpbmUgd2l0aCB2aS4KLXN5bmVydGVrfGt0bXxzeW5lcnRlazM4MHxzeW5lcnRlayBrdG0gMy84MCB0dWJlbGVzcyB0ZXJtaW5hbCwKLQlhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1eWiwgY3ViMT1eSCwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPV5LLCBlZD1cRUosIGVsPVxFSywKLQotIyMjIyBUYWIgT2ZmaWNlIFByb2R1Y3RzCi0jCi0jCVRBQiBQcm9kdWN0cyBDby4gLSBQYWxvIEFsdG8sIENhbGlmb3JuaWEKLSMJRWxlY3Ryb25pYyBPZmZpY2UgUHJvZHVjdHMsCi0jCTE0NTEgQ2FsaWZvcm5pYSBBdmVudWUgOTQzMDQKLSMKLSMgSSB0aGluayB0aGV5J3JlIG91dCBvZiBidXNpbmVzcy4KLSMKLQotIyBUaGUgdGFiIDEzMiB1c2VzIHhvbi94b2ZmLCBzbyBubyBwYWRkaW5nIG5lZWRlZC4KLSMgPHNta3g+LzxybWt4PiBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCBhcnJvdyBrZXlzLgotIyA8aXMyPiBzZXRzIDgwIGNvbCBtb2RlLCBub3JtYWwgdmlkZW8sIGF1dG93cmFwIG9uIChmb3IgPGFtPikuCi0jIFNlZW1zIHRvIGJlIG5vIHdheSB0byBnZXQgcmlkIG9mIHN0YXR1cyBsaW5lLgotIyBUaGUgbWFudWFsIGZvciB0aGlzIHB1cHB5IHdhcyBkYXRlZCBKdW5lIDE5ODEuICBJdCBjbGFpbXMgdG8gYmUgVlQ1Mi0KLSMgY29tcGF0aWJsZSBidXQgbG9va3MgbW9yZSB2dDEwMC1saWtlLgotdGFiMTMyfHRhYnx0YWIxMzItMTV8dGFiIDEzMi8xNSwKLQlkYSwgZGIsCi0JT1RkTkAsIGNvbHMjODAsIGxpbmVzIzI0LCBsbSM5NiwKLQljdWQxPV5KLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGRjaDE9XEVbUCwgZGwxPVxFW00sCi0JaWwxPVxFW0wsIGlzMj1cRVs/N2hcRVs/M2xcRVs/NWwsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1dTE9XEVbQSwgcm1pcj1cRVs0bCwgcm1reEAsIHNtaXI9XEVbNGgsIHNta3hALCB1c2U9dnQxMDAsCi10YWIxMzItd3x0YWIxMzIgaW4gd2lkZSBtb2RlLAotCWNvbHMjMTMyLAotCWlzMj1cRVs/N2hcRVs/M2hcRVs/NWwsIHVzZT10YWIxMzIsCi10YWIxMzItcnZ8dGFiMTMyIGluIHJldmVyc2UtdmlkZW8gbW9kZSwKLQlpczI9XEVbPzdoXEVbPzNsXEVbPzVoLCB1c2U9dGFiMTMyLAotdGFiMTMyLXctcnZ8dGFiMTMyIGluIHJldmVyc2UtdmlkZW8vd2lkZSBtb2RlLAotCWlzMj1cRVs/N2hcRVs/M2hcRVs/NWgsIHVzZT10YWIxMzItdywKLQotCi0jIyMjIFRlbGVyYXkKLSMKLSMJUmVzZWFyY2ggSW5jb3Jwb3JhdGVkCi0jCTY0MjUgRmx5aW5nIENsb3VkIERyaXZlCi0jCUVkZW4gUHJhaXJpZSwgTU4gNTUzNDQKLSMJVm94OiAoNjEyKS05NDEtMzMwMAotIwotIyBUaGUgVGVsZXJheSB0ZXJtaW5hbHMgd2VyZSBhbGwgZGlzY29udGludWVkIGluIDE5OTItOTMuICBSSSBzdGlsbCBzZXJ2aWNlcwotIyBhbmQgcmVwYWlycyB0aGVzZSBiZWFzdHMsIGJ1dCBubyBsb25nZXIgbWFudWZhY3R1cmVzIHRoZW0uICBUaGUgVGVsZXJheQotIyBwZW9wbGUgYmVsaWV2ZSB0aGF0IGFsbCB0aGUgdHlwZXMgbGlzdGVkIGJlbG93IGFyZSB2ZXJ5IHJhcmUgbm93ICgxOTk1KS4KLSMgVGhlcmUgd2FzIGEgbmV3ZXIgbGluZSBvZiBUZWxlcmF5cyAoTW9kZWwgNywgTW9kZWwgMjAsIE1vZGVsIDMwLCBhbmQKLSMgTW9kZWwgMTAwKSB0aGF0IHdlcmUgQU5TSS1jb21wYXRpYmxlLgotIwotIyBOb3RlIHR3byB0aGluZ3MgY2FsbGVkICJ0ZWxlcmF5Ii4gIFJlb3JkZXIgc2hvdWxkIG1vdmUgdGhlIGNvbW1vbiBvbmUKLSMgdG8gdGhlIGZyb250IGlmIHlvdSBoYXZlIGVpdGhlci4gIEEgZHVtYiB0ZWxlcmF5IHdpdGggdGhlIGN1cnNvciBzdHVjawotIyBvbiB0aGUgYm90dG9tIGFuZCBubyBvYnZpb3VzIG1vZGVsIG51bWJlciBpcyBwcm9iYWJseSBhIDM3MDAuCi0jCi0KLXQzNzAwfGR1bWIgdGVsZXJheSAzNzAwLAotCU9UYnMsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1eTCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGluZD1eSiwKLXQzODAwfHRlbGVyYXkgMzgwMCBzZXJpZXMsCi0JT1RicywKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRUMsCi0JY3VwPVxFWSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZWQ9XEVKLCBlbD1cRUssCi0JaG9tZT1cRUgsIGh0PV5JLCBpbmQ9XkosIGxsPVxFWTdccywKLXQxMDYxfHRlbGVyYXl8dGVsZXJheSAxMDYxLAotCU9UYnMsIGFtLCBrbSwgeGhwLCB4dCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzEsCi0JYmVsPV5HLCBjbGVhcj1cMDE0JDwxPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBkY2gxPVxFUSwKLQlkbDE9XEVNJDwyKj4sIGVkPVxFSiQ8MT4sIGVsPVxFSywgaG9tZT1cRUgsIGh0PV5JLCBodHM9XEVGLAotCWljaDE9XEVQLCBpbDE9XEVMJDwyKj4sIGluZD1eSiwgaXA9JDwwLjQqPiwKLQlpczI9XEVlXEVVMDFeWjFcRVZcRVUwMl5aMlxFVlxFVTAzXlozXEVWXEVVMDReWjRcRVZcRVUwNV5aNVxFVlxFVTA2Xlo2XEVWXEVVMDdeWjdcRVZcRVUwOF5aOFxFVlxFZiwKLQlrZjE9XloxLCBrZjI9XloyLCBrZjM9XlozLCBrZjQ9Xlo0LCBrZjU9Xlo1LCBrZjY9Xlo2LCBrZjc9Xlo3LAotCWtmOD1eWjgsIHJtc289XEVSQCwgcm11bD1cRVJALCBzbXNvPVxzXEVSRCwgc211bD1cRVJILAotCXRiYz1cRUcsCi10MTA2MWZ8dGVsZXJheSAxMDYxIHdpdGggZmFzdCBQUk9NcywKLQlkbDE9XEVNLCBpbDE9XEVMLCBpcEAsIHVzZT10MTA2MSwKLSMgIlRlbGVyYXkgQXJwYSBTcGVjaWFsIiwgb2ZmaWNpYWxseSBkZXNpZ25hdGVkIGFzCi0jICJUZWxlcmF5IEFycGEgbmV0d29yayBtb2RlbCAxMCIgd2l0aCAiU3BlY2lhbCBmZWF0dXJlIDcyMCIuCi0jIFRoaXMgaXMgdGhlIG5ldyAoMTk4MSkgZmFzdCBtaWNyb2NvZGUgdXBkYXRpbmcgdGhlIG9sZGVyICJhcnBhIiBwcm9tcwotIyAod2hpY2ggZ2F2ZSBtZXRhLWtleSBhbmQgcHJvZ3JhbW1hYmxlLWZ4biBrZXlzKS4gIDcyMCBpcyBtdWNoIG11Y2ggZmFzdGVyLAotIyBjb252ZXJ0cyB0aGUga2V5cGFkIHRvIHByb2dyYW1tYWJsZSBmdW5jdGlvbiBrZXlzLCBhbmQgaGFzIG90aGVyIGdvb2RpZXMuCi0jIFN0YW5kb3V0IG1vZGUgaXMgc3RpbGwgYnJva2VuIChtYWdpYyBjb29raWUsIGV0Yykgc28gaXMgc3VwcHJlc3NlZCBhcyBubwotIyBwcm9ncmFtcyBoYW5kbGUgc3VjaCBsb3NzYWdlIHByb3Blcmx5LgotIyBOb3RlOiB0aGlzIGlzIE5PVCB0aGUgb2xkIHRlcm1jYXAncyAidDEwNjFmIHdpdGggZmFzdCBwcm9tcy4iCi0jIEZyb206IEouIExlcHJlYXUgPGxlcHJlYXVAdXRhaC1jcz4gVHVlIEZlYiAgMSAwNjozOTozNyAxOTgzLCBVbml2IG9mIFV0YWgKLSMgKHQxMDogcmVtb3ZlZCBvdmVycmlkZGVuICI6c29AOnNlQDp1c0A6dWVAOiIgLS0gZXNyKQotdDEwfHRlbGVyYXkgMTAgc3BlY2lhbCwKLQlPVGJzLCBrbSwgeGhwLCB4dCwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgeG1jIzIsCi0JY2xlYXI9XEVqJDwzMC8+LCBjdWIxPV5ILCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZGNoMT1cRVEsCi0JZGwxPVxFTSwgZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWNoMT1cRVAsIGlsMT1cRUwsCi0JaW5kPVxFcSwgcGFkPVwwLCByaT1cRXAsIHJtc289XEVSQCwgcm11bD1cRVJALCBzbXNvPVxFUkQsCi0Jc211bD1cRVJILAotIyB0ZWxlcmF5IDE2IC0gbWFwIHRoZSBhcnJvdyBrZXlzIGZvciB2aS9yb2d1ZSwgc2hpZnRlZCB0byB1cC9kb3duIHBhZ2UsIGFuZAotIyBiYWNrL2ZvcnRoIHdvcmRzLiBQdXQgdGhlIGZ1bmN0aW9uIGtleXMgKGYxLWYxMCkgd2hlcmUgdGhleSBjYW4gYmUKLSMgZm91bmQsIGFuZCB0dXJuIG9mZiB0aGUgb3RoZXIgbWFnaWMga2V5cyBhbG9uZyB0aGUgdG9wIHJvdywgZXhjZXB0Ci0jIGZvciBsaW5lL2xvY2FsLiBEbyB0aGUgbWFnaWMgYXBwcm9wcmlhdGUgdG8gbWFrZSB0aGUgcGFnZSBzaGlmdHMgd29yay4KLSMgQWxzbyB0b2dnbGUgXlMvXlEgZm9yIHRob3NlIG9mIHVzIHdobyB1c2UgRW1hY3MuCi10MTZ8dGVsZXJheSAxNiwKLQlhbSwgZGEsIGRiLCBtaXIsIHhocCwgeHQsCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBjbGVhcj1cRVtIXEVbMkosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPVxFW0IsCi0JY3VmMT1cRVtDLCBjdXA9JWlcRVslcDElZDslcDIlZGYsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLAotCWRsMT1cRVtNLCBlZD1cRVswSiwgZWw9XEVbMEssIGhvbWU9XEVbSCwgaHQ9XkksIGlsMT1cRVtMLAotCWluZD1eSiwga2YxPV5aMSwga2YxMD1eWjAsIGtmMj1eWjIsIGtmMz1eWjMsIGtmND1eWjQsIGtmNT1eWjUsCi0Ja2Y2PV5aNiwga2Y3PV5aNywga2Y4PV5aOCwga2Y5PV5aOSwgcmk9XEVbVCwKLQlybWN1cD1cRVtWXEVbMjQ7MWZcRVs/MzhoLCBybWlyPVxFWzRsLCBybXNvPVxFW20sCi0Jcm11bD1cRVttLCBzZ3IwPVxFW20sIHNtY3VwPVxFW1VcRVs/MzhsLCBzbWlyPVxFWzRoLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0KLSMjIyMgVGV4YXMgSW5zdHJ1bWVudHMgKHRpKQotIwotCi0jIFRoZSBTaWxlbnQgNzAwIHdhcyBzbyBjYWxsZWQgYmVjYXVzZSBpdCB3YXMgYnVpbHQgYXJvdW5kIGEgcXVpZXQgdGhlcm1hbAotIyBwcmludGVyLiAgSXQgd2FzIHBvcnRhYmxlLCBlcXVpcHBlZCB3aXRoIGFuIGFjb3VzdGljIGNvdXBsZXIsIGFuZCBwcmV0dHkKLSMgbmVhdCBmb3IgaXRzIGRheS4KLXRpNzAwfHRpNzMzfHRpNzM1fHRpNzQ1fHRpODAwfHRpIHNpbGVudCA3MDAvNzMzLzczNS83NDUgb3Igb21uaSA4MDAsCi0JT1RicywgaGMsIG9zLAotCWNvbHMjODAsCi0JYmVsPV5HLCBjcj1cciQ8MTYyPiwgY3ViMT1eSCwgY3VkMT1eSiwgaW5kPV5KLAotCi0jCi0jIFRleGFzIEluc3RydW1lbnRzIDkxNiBWRFQgNyBiaXQgY29udHJvbCBtb2RlCi0jCi10aTkxNnx0aTkxNi0yMjAtN3xUZXhhcyBJbnN0cnVtZW50cyA5MTYgVkRUIDg4NTkvMSB2dDIyMCBtb2RlIDcgYml0IENUUkwsCi0JZGEsIGRiLCBpbiwgbXNnciwKLQljYnQ9XEVbWiwgY2l2aXM9XEVbPzI1bCwgY2xlYXI9XEVbSFxFWzJKJDw2PiwKLQljbm9ybT1cRVs/MjVoLCBjdWI9XEVbJXAxJWRELCBjdWQ9XEVbJXAxJWRCLAotCWN1Zj1cRVslcDElZEMsIGN1cD1cRVslcDElaSVwMSVkOyVwMiVkSCwgY3V1PVxFWyVwMSVkQSwKLQlkY2g9XEVbJXAxJWRQJDwyNTA+LCBkY2gxPVxFW1AsIGRsPVxFWyVwMSVkTSwKLQllY2g9XEVbJXAxJWRYJDwyMD4sIGVkPVxFW0okPDY+LCBlbD1cRVswSywgZWwxPVxFWzFLLAotCWVuYWNzPVxFKEJcRSkwLCBmZj1eTCwgZmxhc2g9XEVbPzVoXEVbPzVsJDw2PiwKLQlocGE9XEVbJXAxJXsxfSUrJWRHLCBodHM9XEVbMFcsIGljaD1cRVslcDElZEAkPDI1MD4sCi0JaWw9XEVbJXAxJWRMJDwzNj4sIGlwPSQ8MTA+LCBpczI9XEVbMTsyNHJcRVsyNDsxSCwKLQlrY21kPVxFWzI5fiwga2RjaDE9XEVbUCwga2VudD1eSiwga2YxPVxFWzE3fiwga2YxMD1cRVsyOH4sCi0Ja2YxMT1cRVsyOX4sIGtmMTI9XEVbMzF+LCBrZjI9XEVbMTh+LCBrZjM9XEVbMTl+LAotCWtmND1cRVsyMH4sIGtmNT1cRVsyMX4sIGtmNj1cRVsyM34sIGtmNz1cRVsyNH4sIGtmOD1cRVsyNX4sCi0Ja2Y5PVxFWzI2fiwga2hvbWU9XEVbSCwga2ljaDE9XEVbQCwga25wPVxFW1MsIGtwcD1cRVtULAotCWtwcnQ9XlgsIHByb3Q9XEUmLCBybWFjcz1cMDE3JDwyPiwgcnMyPVxFWyFwLCBzZ3JALAotCXNtYWNzPVwwMTYkPDI+LCB0YmM9XEVbM2csIHZwYT1cRVslcDElezF9JSslZGQsCi0JdXNlPXZ0MjIwLAotIwotIyBUZXhhcyBJbnN0cnVtZW50cyA5MTYgVkRUIDggYml0IGNvbnRyb2wgbW9kZQotIwotdGk5MTYtOHx0aTkxNi0yMjAtOHxUZXhhcyBJbnN0cnVtZW50cyA5MTYgVkRUIDg4NTkvMSA4IHZ0MjIwIG1vZGUgYml0IENUUkwsCi0Ja2NtZD1cMjMzMjl+LCBrY3ViMT1cMjMzRCwga2N1ZDE9XDIzM0IsIGtjdWYxPVwyMzNDLAotCWtjdXUxPVwyMzNBLCBrZGNoMT1cMjMzUCwga2VudD1eSiwga2YxPVwyMzMxN34sCi0Ja2YxMD1cMjMzMjh+LCBrZjExPVwyMzMyOX4sIGtmMTI9XDIzMzMxfiwga2YyPVwyMzMxOH4sCi0Ja2YzPVwyMzMxOX4sIGtmND1cMjMzMjB+LCBrZjU9XDIzMzIxfiwga2Y2PVwyMzMyM34sCi0Ja2Y3PVwyMzMyNH4sIGtmOD1cMjMzMjV+LCBrZjk9XDIzMzI2fiwga2hvbWU9XDIzM0gsCi0Ja2ljaDE9XDIzM0AsIGtucD1cMjMzUywga3BwPVwyMzNULCBrcHJ0PV5YLCB1c2U9dGk5MTYsCi0jCi0jIFRleGFzIEluc3RydW1lbnRzIDkxNiBWRFQgODg1OS8xIDcgYml0IGNvbnRyb2wgMTMyIGNvbHVtbiBtb2RlCi0jCi10aTkxNi0xMzJ8VGV4YXMgSW5zdHJ1bWVudHMgOTE2IFZEVCB2dDIyMCAxMzIgY29sdW1uLAotCWNvbHMjMTMyLCB1c2U9dGk5MTYsCi0jCi0jIFRleGFzIEluc3RydW1lbnRzIDkxNiBWRFQgODg1OS8xIDggYml0IGNvbnRyb2wgMTMyIGNvbHVtbiBtb2RlCi0jCi10aTkxNi04LTEzMnxUZXhhcyBJbnN0cnVtZW50cyA5MTYgVkRUIDgtYml0IHZ0MjIwIDEzMiBjb2x1bW4sCi0JY29scyMxMzIsIHVzZT10aTkxNi04LAotdGk5MjR8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA4ODU5LzEgNyBiaXQgQ1RSTCwKLQlPVGJzLCBhbSwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbMkpcRVtILCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9JWlcRVslcDElZDslcDIlZHIsIGN1YjE9XEVbRCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPSVpXEVbJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGN2dmlzPVxFWz8zMWgsCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWwxPVxFW0wsIGluZD1cRUQsIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1cRVtQLCBrZjE9XEVPUCwga2YyPVxFT1EsCi0Ja2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVbMTZ+LCBrZjY9XEVbMTd+LCBrZjc9XEVbMTh+LAotCWtmOD1cRVsxOX4sIGtmOT1cRVsyMH4sIGtpY2gxPVxFW0AsIHJjPVxFOCwgcmV2PVxFWzdtLAotCXJpPVxFTSwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNjPVxFNywgc2dyMD1cRVttLCBzbXNvPVxFWzdtLAotCXNtdWw9XEVbNG0sIHRiYz1cRVszZywKLXRpOTI0LTh8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA4ODU5LzEgOCBiaXQgQ1RSTCwKLQlhbSwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNpdmlzPVxFWz8yNWwsCi0JY2xlYXI9XEVbMkpcRVtILCBjbm9ybT1cRVs/MjVoLCBjcj1eTSwKLQljc3I9JWlcRVslcDElZDslcDIlZHIsIGN1YjE9XEVbRCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPSVpXEVbJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGN2dmlzPVxFWz8zMWgsCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWwxPVxFW0wsIGluZD1cRUQsIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZGNoMT1QJDxcMjMzPiwga2YxPVAkPFwyMTc+LAotCWtmMj1RJDxcMjE3Piwga2YzPVIkPFwyMTc+LCBrZjQ9UyQ8XDIxNz4sIGtmNT1+JDxcMjMzMTY+LAotCWtmNj1+JDxcMjMzMTc+LCBrZjc9fiQ8XDIzMzE4Piwga2Y4PX4kPFwyMzMxOT4sCi0Ja2Y5PX4kPFwyMzMyMD4sIGtpY2gxPUAkPFwyMzM+LCByYz1cRTgsIHJldj1cRVs3bSwgcmk9XEVNLAotCXJtc289XEVbbSwgcm11bD1cRVttLCBzYz1cRTcsIHNncjA9XEVbbSwgc21zbz1cRVs3bSwKLQlzbXVsPVxFWzRtLCB0YmM9XEVbM2csCi10aTkyNHd8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA3IGJpdCAtIDEzMiBjb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgdXNlPXRpOTI0LAotdGk5MjQtOHd8VGV4YXMgSW5zdHJ1bWVudHMgOTI0IFZEVCA4IGJpdCAtIDEzMiBjb2x1bW4gbW9kZSwKLQljb2xzIzEzMiwgdXNlPXRpOTI0LTgsCi10aTkzMXxUZXhhcyBJbnN0cnVtZW50cyA5MzEgVkRULAotCU9UYnMsIGFtLCB4b24sCi0JY29scyM4MCwgbGluZXMjMjQsCi0JYmVsPV5HLCBibGluaz1cRTRQLCBjbGVhcj1cRUwsIGNub3JtPVxFNEAsIGNyPV5NLCBjdWIxPVxFRCwKLQljdWQxPVxFQiwgY3VmMT1cRUMsIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsCi0JY3V1MT1cRUEsIGRjaDE9XEVRLCBkbDE9XEVPLCBlZD1cRUosIGVsPVxFSSwgaG9tZT1cRUgsCi0JaWNoMT1cRVJcRVBcRU0sIGlsMT1cRU4sIGluZD1cRWEsIGludmlzPVxFNEgsCi0JaXMyPVxFR0JcRShAQkBAXEUpLCBrY3ViMT1cRUQsIGtjdWQxPVxFQiwga2N1ZjE9XEVDLAotCWtjdXUxPVxFQSwga2RjaDE9XEVRLCBrZGwxPVxFTywga2YxPVxFaTEsIGtmMj1cRWkyLCBrZjM9XEVpMywKLQlrZjQ9XEVpNCwga2Y1PVxFaTUsIGtmNj1cRWk2LCBrZjc9XEVpNywga2Y4PVxFaTgsIGtmOT1cRWk5LAotCWtpY2gxPVxFUCwga2lsMT1cRU4sIHJldj1cRTRCLCByaT1cRWIsIHJtc289XEU0QCwgcm11bD1cRTRALAotCXNncjA9XEU0QCwgc21zbz1cRTRBLCBzbXVsPVxFNEQsCi10aTkyNnxUZXhhcyBJbnN0cnVtZW50cyA5MjYgVkRUIDg4NTkvMSA3IGJpdCBDVFJMLAotCWNzckAsIGluZD1cRVsxUywgcmk9XEVbMVQsIHVzZT10aTkyNCwKLSMgKHRpOTI2LTg6IEkgY29ycmVjdGVkIHRoaXMgZnJvbSB0aGUgYnJva2VuIFNDTyBlbnRyeSAtLSBlc3IpCi10aTkyNi04fFRleGFzIEluc3RydW1lbnRzIDkyNiBWRFQgODg1OS8xIDggYml0IENUUkwsCi0JY3NyQCwgaW5kPVwyMzMxUywgcmk9XDIzMzFULCB1c2U9dGk5MjQtOCwKLXRpX2Fuc2l8YmFzaWMgZW50cnkgZm9yIHRpOTI4LAotCWFtLCBiY2UsIGVvLCB4ZW5sLCB4b24sCi0JY29sb3JzIzgsIGNvbHMjODAsIGl0IzgsIGxpbmVzIzI1LCBwYWlycyM2NCwKLQliZWw9XkcsIGJsaW5rPVxFWzVtLCBib2xkPVxFWzFtLCBjYnQ9XEVbWiwgY2xlYXI9XEVbMkpcRVtILAotCWNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsIGN1YjE9XkgsIGN1ZDE9XEVbQiwKLQljdWYxPVxFW0MsIGN1cD1cRVslaSVwMSVkOyVwMiVkSCwgY3V1MT1cRVtBLCBkY2gxPVxFW1AsCi0JZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksIGljaDE9XEVbQCwKLQlpbDE9XEVbTCwgaW5kPVxFW1MsIGticz1eSCwga2N1YjE9XEVbRCwga2N1ZDE9XEVbQiwKLQlrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZW5kPVxFW0YsIGtmMD1cRVtWLCBrZjE9XEVbTSwKLQlrZjI9XEVbTiwga2YzPVxFW08sIGtmND1cRVtQLCBrZjU9XEVbUSwga2Y2PVxFW1IsIGtmNz1cRVtTLAotCWtmOD1cRVtULCBrZjk9XEVbVSwga2hvbWU9XEVbSCwga25wPVxFW0csIGtwcD1cRVtJLAotCW9wPVxFWzM3OzQwbSwgcmk9XEVbVCwgcm1zbz1cRVttLCBybXVsPVxFW20sCi0Jc2V0YWI9XEVbNCVwMSVkbSwgc2V0YWY9XEVbMyVwMSVkbSwgc2dyMD1cRVttLAotCXNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jCi0jICAgICAgIDkyOCBWRFQgNyBiaXQgY29udHJvbCBtb2RlCi0jCi10aTkyOHxUZXhhcyBJbnN0cnVtZW50cyA5MjggVkRUIDg4NTkvMSA3IGJpdCBDVFJMLAotCWtkY2gxPVxFW1AsIGtlbmQ9XEVfMVxFXFwsIGtlbnQ9XEVbOH4sIGtmMT1cRVsxN34sCi0Ja2YxMD1cRVsyOH4sIGtmMTE9XEVbMjl+LCBrZjEyPVxFWzMxfiwga2YxMz1cRVszMn4sCi0Ja2YxNT1cRVszNH4sIGtmMj1cRVsxOH4sIGtmMz1cRVsxOX4sIGtmND1cRVsyMH4sCi0Ja2Y1PVxFWzIxfiwga2Y2PVxFWzIzfiwga2Y3PVxFWzI0fiwga2Y4PVxFWzI1fiwga2Y5PVxFWzI2fiwKLQlraWNoMT1cRVtALCBrbnA9XEVbUywga3BwPVxFW1QsIGtwcnQ9XEVbMzV+LCB1c2U9dGlfYW5zaSwKLSMKLSMgICAgICAgOTI4IFZEVCA4IGJpdCBjb250cm9sIG1vZGUKLSMKLXRpOTI4LTh8VGV4YXMgSW5zdHJ1bWVudHMgOTI4IFZEVCA4ODU5LzEgOCBiaXQgQ1RSTCwKLQlrZGNoMT1cMjMzUCwga2VuZD1cMjM3MVwyMzQsIGtlbnQ9XDIzMzh+LCBrZjE9XDIzMzE3fiwKLQlrZjEwPVwyMzMyOH4sIGtmMTE9XDIzMzI5fiwga2YxMj1cMjMzMzF+LCBrZjEzPVwyMzMzMn4sCi0Ja2YxNT1cMjMzMzR+LCBrZjI9XDIzMzE4fiwga2YzPVwyMzMxOX4sIGtmND1cMjMzMjB+LAotCWtmNT1cMjMzMjF+LCBrZjY9XDIzMzIzfiwga2Y3PVwyMzMyNH4sIGtmOD1cMjMzMjV+LAotCWtmOT1cMjMzMjZ+LCBraG9tZT1cMjMzSCwga2ljaDE9XDIzM0AsIGtucD1cMjMzUywKLQlrcHA9XDIzM1QsIGtwcnQ9XDIzMzM1fiwgdXNlPXRpX2Fuc2ksCi0KLSMjIyMgWmVudGVjICh6ZW4pCi0jCi0KLSMgKHplbjMwOiByZW1vdmVkIG9ic29sZXRlIDptYT1eTCBeUl5MXkteUDouICBUaGlzIGVudHJ5IG9yaWdpbmFsbHkKLSMgaGFkIGp1c3QgPHNtc28+PVxFRzYgd2hpY2ggSSB0aGluayBtZWFucyBzdGFuZG91dCB3YXMgc3VwcG9zZWQgdG8gYmUKLSMgZGltLXJldmVyc2UgdXNpbmcgQURNMTItc3R5bGUgYXR0cmlidXRlcy4gQURNMTIgPHNtdWw+LzxybXVsPiBhbmQKLSMgPGludmlzPiBtaWdodCB3b3JrLS0gZXNyKQotemVuMzB8ejMwfHplbnRlYyAzMCwKLQlPVGJzLCBhbSwgbWlyLCB1bCwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPVxFKiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVxFPSVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1eSywgZGNoMT1cRVcsCi0JZGltPVxFRzIsIGRsMT1cRVIkPDEuNSo+LCBlZD1cRVksIGVsPVxFVCQ8MS4wKj4sIGhvbWU9Xl4sCi0JaWwxPVxFRSQ8MS41Kj4sIGluZD1eSiwgcm1pcj1cRXIsIHJtdWxALCBzbWlyPVxFcSwgc21zbz1cRUc2LAotCXNtdWxALCB1c2U9YWRtK3NnciwKLSMgKHplbjUwOiB0aGlzIGhhZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzCi0jCTpCUz1eVTpDTD1eVjpDUj1eQjoKLSMgVUsvREsvUksvTEsvSE0gd2VyZSBzb21lb25lJ3MgYWxpYXNlcyBmb3Iga3Uva2Qva2wva3Iva2gsCi0jIHdoaWNoIHdlcmUgYWxzbyBpbiB0aGUgb3JpZ2luYWwgZW50cnkgLS0gZXNyKQotIyAoemVuNTA6IHJlbW92ZWQgb2Jzb2xldGUgIjptYT1eSGheTGxeSmpeS2s6IiAtLSBlc3IpCi16ZW41MHx6NTB8emVudGVjIHplcGh5ciwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwgeG1jIzEsCi0JY2xlYXI9XEUrLCBjdWIxPV5ILCBjdXA9XEU9JXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLAotCWN1dTE9XkssIGRjaDE9XEVXLCBkbDE9XEVSLCBlZD1cRVksIGVsPVxFVCwgaWNoMT1cRVEsIGlsMT1cRUUsCi0JaW52aXNALCBrY3ViMT1eSCwga2N1ZDE9XkosIGtjdWYxPV5MLCBrY3V1MT1eSywga2hvbWU9Xl4sCi0Jcm11bEAsIHNtdWxALCB1c2U9YWRtK3NnciwKLQotIyBDQ0kgNDU3NCAoT2ZmaWNlIFBvd2VyKSBmcm9tIFdpbGwgTWFydGluIDx3bWFydGluQEJSTC5BUlBBPiB2aWEgQlJMCi1jY2l8Y2NpMXx6ODAwMXx6ZW44MDAxfENDSSBDdXN0b20gWmVudGVjIDgwMDEsCi0JT1RicywgYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJsaW5rPVxFTSIsIGNsZWFyPVxFSFxFSiwgY25vcm09XEVQLAotCWNzcj1cRVIlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1cRUMsIGN1cD1cRVklcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLAotCWN2dmlzPVxFRlxFUVxFTSBcRVIgNywgZGltPVxFTSEsIGVkPVxFSiwgZWw9XEVLLCBob21lPVxFSCwKLQlpbnZpcz1cRU0oLCBpczI9XEVNIFxFRlxFVFxFUFxFUiA3LCBrYnM9XkgsIGtjdWIxPVxFRCwKLQlrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBraG9tZT1cRUgsIG1jND1eVCwgbWM1PV5SLAotCXJldj1cRU0kLCByaT1cRUksIHJtc289XEVNXHMsIHJtdWw9XEVNXHMsIHNncjA9XEVNXHMsCi0Jc21zbz1cRU0kLCBzbXVsPVxFTTAsCi0KLSMjIyMjIyMjIE9CU09MRVRFIFVOSVggQ09OU09MRVMKLSMKLQotIyMjIyBBcG9sbG8gY29uc29sZXMKLSMKLSMgQXBvbGxvIGdvdCBib3VnaHQgYnkgSGV3bGV0dC1QYWNrYXJkLiAgVGhlIEFwb2xsbyB3b3Jrc3RhdGlvbnMgYXJlCi0jIGxhYmVsZWQgSFA3MDBzIG5vdy4KLSMKLQotIyBGcm9tOiBHYXJ5IERhcmxhbmQgPGdvb2RtYW5jQGdhcm5ldC5iZXJrZWxleS5lZHU+Ci1hcG9sbG98YXBvbGxvIGNvbnNvbGUsCi0JT1RicywgYW0sIG1pciwKLQljb2xzIzg4LCBsaW5lcyM1MywKLQljbGVhcj1eTCwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRU0lcDElezMyfSUrJWMlcDIlZCksIGN1dTE9XEVBLCBkY2gxPVxFUCwgZGwxPVxFTCwKLQllZD1cRUosIGVsPVxFSywgaHBhPVxFTiVwMSVkLCBpbDE9XEVJLCBpbmQ9XEVFLCByaT1cRUQsCi0Jcm1jdXA9XEVYLCBybWlyPVxFUiwgcm1zbz1cRVQsIHJtdWw9XEVWLCBzbWN1cD1cRVcsIHNtaXI9XEVRLAotCXNtc289XEVTLCBzbXVsPVxFVSwgdnBhPVxFTytccywKLQotIyBXZSBkb24ndCBrbm93IHdoZXRoZXIgb3Igbm90IHRoZSBhcG9sbG8gZ3V5cyByZXBsaWNhdGVkIERFQydzIGZpcm13YXJlIGJ1ZwotIyBpbiB0aGUgVlQxMzIgdGhhdCByZXZlcnNlZCA8cm1pcj4vPHNtaXI+LiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgZGlzYWJsZQotIyBib3RoIHRoZXNlIGNhcGFiaWxpdGllcy4KLWFwb2xsb18xNVB8YXBvbGxvIDE1IGluY2ggZGlzcGxheSwKLQlybWlyQCwgc21pckAsIHVzZT12dDEzMiwKLWFwb2xsb18xOUx8YXBvbGxvIDE5IGluY2ggZGlzcGxheSwKLQlybWlyQCwgc21pckAsIHVzZT12dDEzMiwKLWFwb2xsb19jb2xvcnxhcG9sbG8gY29sb3IgZGlzcGxheSwKLQlybWlyQCwgc21pckAsIHVzZT12dDEzMiwKLQotIyMjIyBDb252ZXJnZW50IFRlY2hub2xvZ3kKLSMKLSMgQnVycm91Z2hzIGJvdWdodCBDb252ZXJnZW50IHNob3J0bHkgYmVmb3JlIGl0IG1lcmdlZCB3aXRoIFVuaXZhYy4KLSMgQ1RPUyBpcyAoSSBiZWxpZXZlKSBkZWFkLiAgUHJvYmFibHkgdGhlIGF3cyBpcyB0b28gKHRoaXMgZW50cnkgZGF0ZXMKLSMgZnJvbSAxOTkxIG9yIGVhcmxpZXIpLgotIwotCi0jIENvbnZlcmdlbnQgQVdTIHdvcmtzdGF0aW9uIGZyb20gR291bGQvU0VMIFVUWC8zMiB2aWEgQlJMCi0jIChhd3M6IHJlbW92ZWQgdW5rbm93biA6ZG49Xks6IC0tIGVzcikKLWF3c3xDb252ZXJnZW50IFRlY2hub2xvZ2llcyBBV1Mgd29ya3N0YXRpb24gdW5kZXIgVVRYIGFuZCBYZW5peCwKLQlhbSwKLQlPVHVnIzAsIGNvbHMjODAsIGxpbmVzIzI4LCB4bWMjMCwKLQlPVGJjPV5ILCBPVG1hPVwwMTZoXDAxM2pcMDAxa1wwMjJsXDAwMm0sIE9Ubmw9XkosIGFjc2M9LAotCWNsZWFyPV5MLCBjdWQxPV5LLCBjdWYxPV5SLCBjdXA9XEVDJXAyJWMlcDElYywgY3V1MT1eQSwKLQlkY2gxPVxFREMsIGRsMT1cRURMLCBlZD1cRUVGLCBlbD1cRUVMLCBocGE9XEVIJXAxJWMsCi0JaWNoMT1cRUlDLCBpbDE9XEVJTCwgaW5kPVxFU1UsIGticz1eSCwga2N1YjE9Xk4sIGtjdWQxPV5LLAotCWtjdWYxPV5SLCBrY3V1MT1eQSwgcmk9XEVTRCwgcm1hY3M9XEVBQUYsIHJtc289XEVBUkYsCi0Jcm11bD1cRUFVRiwgc21hY3M9XEVBQU4sIHNtc289XEVBUk4sIHNtdWw9XEVBVU4sCi0JdnBhPVxFViVwMSVjLAotYXdzY3xDb252ZXJnZW50IFRlY2hub2xvZ2llcyBBV1Mgd29ya3N0YXRpb24gdW5kZXIgQ1RPUywKLQlhbSwKLQlPVHVnIzAsIGNvbHMjODAsIGxpbmVzIzI0LCB4bWMjMCwKLQlPVGJjPV5OLCBPVG1hPVwwMTZoXDAxM2pcMDAxa1wwMjJsXDAwMm0sIGFjc2M9LCBjbGVhcj1eTCwKLQljdWQxPV5LLCBjdWYxPV5SLCBjdXA9XEVDJXAyJWMlcDElYywgY3V1MT1eQSwgZWQ9XEVFRiwKLQllbD1cRUVMLCBrYnM9XkgsIGtjdWIxPV5OLCBrY3VkMT1eSywga2N1ZjE9XlIsIGtjdXUxPV5BLAotCXJtYWNzPVxFQUFGLCBybXNvPVxFQUEsIHJtdWw9XEVBQSwgc21hY3M9XEVBQU4sIHNtc289XEVBRSwKLQlzbXVsPVxFQUMsCi0KLSMjIyMgREVDIGNvbnNvbGVzCi0jCi0KLSMgVGhlIE1pY3JvVmF4IGNvbnNvbGUuICBUaW0gVGhlaXNlbiA8dGltQGNzLndpc2MuZWR1PiB3cml0ZXM6Ci0jIFRoZSBkaWdpdGFsIHVWYXggSUkncyBoYWQgYSBncmFwaGljIGRpc3BsYXkgY2FsbGVkIGEgcWRzcy4gIEl0IHdhcwotIyBzdXBwb3NlZCB0byBiZSBhIGhpZ2ggcGVyZm9ybWFuY2UgZ3JhcGhpYyBhY2NlbGVyYXRvciwgYnV0IGl0IHdhcwotIyBsYXRlIHRvIG1hcmtldCBhbmQgYmFyZWx5IGFwcGVhcmVkIGJlZm9yZSBmYXN0ZXIgZHVtYiBmcmFtZSBidWZmZXJzCi0jIGFwcGVhcmVkLiAgSSBoYXZlIG9ubHkgdXNlZCB0aGlzIGRpc3BsYXkgd2hpbGUgcnVubmluZyBYMTEuICBIb3dldmVyLAotIyBkdXJpbmcgYm9vdHVwLCBpdCB3YXMgaW4gdGV4dCBtb2RlLCBhbmQgcHJvYmFibHkgaGFkIGEgdGVybWluYWwgZW11bGF0b3IKLSMgd2l0aGluIGl0LiAgQW5kIHRoYXQgaXMgd2hhdCB5b3VyIHRlcm1jYXAgZW50cnkgaXMgZm9yLiAgSW4gZ3JhcGhpY3MKLSMgbW9kZSB0aGUgc2NyZWVuIHNpemUgaXMgMTAyNHg4NjQgcGl4ZWxzLgotcWRzc3xxZGNvbnN8cWRzcyBnbGFzcyB0dHksCi0JT1RicywgYW0sCi0JY29scyMxMjgsIGxpbmVzIzU3LAotCWNsZWFyPVwwMzIkPDEvPiwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwKLQljdXA9XEU9JXAxJWMlcDIlYywgY3V1MT1eSywKLQotIyMjIyBGb3J0dW5lIFN5c3RlbXMgY29uc29sZXMKLSMKLSMgRm9ydHVuZSBtYWRlIGEgbGluZSBvZiA2OEstYmFzZWQgVU5JWCBib3hlcyB0aGF0IHdlcmUgcHJldHR5IG5pZnR5Ci0jIGluIHRoZWlyIGRheTsgSSAoZXNyKSB1c2VkIG9uZSBteXNlbGYgZm9yIGEgeWVhciBvciBzbyBhcm91bmQgMTk4NC4KLSMgVGhleSBoYWQgbm8gZ3JhcGhpY3MsIHRob3VnaCwgYW5kIGNvdWxkbid0IGNvbXBldGUgYWdhaW5zdCBTdW5zIGFuZAotIyB0aGUgbGlrZS4gIFIuSS5QLgotIwotCi0jIEZyb206IFJvYmVydCBOYXRoYW5zb24gPGMxNjAtM2JwQENvcmFsPiB2aWEgdHV0ICAgV2VkIE9jdCA1LCAxOTgzCi0jIChUaGlzIGhhZCBleHRlbnNpb24gY2FwYWJpbGl0aWVzCi0jCTpydj1cRUg6cmU9XEVJOnJnPTA6R0c9MDpcCi0jCTpDTz1cRVxcOldMPV5BYVxyOldSPV5BYlxyOkNMPV5BY1xyOkNSPV5BZFxyOkRMPV5BZVxyOlJGPV5BZlxyOlwKLSMJOlJDPV5BZ1xyOkNXPV5BaFxyOk5VPV5BalxyOkVOPV5Ba1xyOkhNPV5BbDpQTD1eQW1ccjpcCi0jCTpQVT1eQW5ccjpQRD1eQW9ccjpQUj1eQXBccjpIUD1eQUBccjpSVD1eQXFccjpUQj1ccjpDTj1cMTc3Ok1QPVxFK0Y6Ci0jIEl0IGhhZCBib3RoICI6YnM6IiBhbmQgIjpicz1eSDoiOyBJIHJlbW92ZWQgdGhlIGxhdHRlci4gIEFsc28sIGl0IGhhZAotIyAiOnNnPTA6IiBhbmQgIjp1Zz0wOiI7IGV2aWRlbnRseSB0aGUgY29tcG9zZXIgd2FzIHRyeWluZyAodW5uZWNlc3NhcmlseSkKLSMgdG8gZm9yY2UgYm90aCBtYWdpYyBjb29raWUgZ2xpdGNoZXMgb2ZmLiAgT25jZSB1cG9uIGEgdGltZSwgSQotIyB1c2VkIGEgRm9ydHVuZSBteXNlbGYsIHNvIEkga25vdyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBmb3JtIF5BW2Etel1cciBhcmUKLSMgZnVuY3Rpb24ga2V5czsgdGh1cyB0aGUgIkFsIiB2YWx1ZSBmb3IgSE0gd2FzIGNlcnRhaW5seSBhbiBlcnJvci4gIEkgcmVuYW1lZAotIyBFTi9QRC9QVS9DTy9DRi9SVCBhY2NvcmRpbmcgdG8gdGhlIFhFTklYL1RDIG1hcHBpbmdzLCBidXQgbm90IEhNL0RML1JGL1JDLgotIyBJIHRoaW5rIDpydjogYW5kIDpyZTogYXJlIHN0YXJ0L2VuZCByZXZlcnNlIHZpZGVvIGFuZCA6cmc6IGlzIGEgbm9uZXhpc3RlbnQKLSMgInJldmVyc2UtdmlkZW8tZ2xpdGNoIiBjYXBhYmlsaXR5OyBJIGhhdmUgcHV0IDpydjogYW5kIDpyZTogaW4gd2l0aCBzdGFuZGFyZAotIyBuYW1lcyBiZWxvdy4gIEkndmUgcmVtb3ZlZCBvYnNvbGV0ZSAiOm5sPTVeSjoiIGFzIHRoZXJlIGlzIGEgOmRvOiAtLSBlc3IpCi1mb3N8Zm9ydHVuZXxGb3J0dW5lIHN5c3RlbSwKLQlPVGJzLCBhbSwgYncsCi0JY29scyM4MCwgbGluZXMjMjUsCi0JYWNzYz1qKmsobCBtInEmdiV3I3gtLCBiZWw9XkcsIGJsaW5rPVxFTiwgY2l2aXM9XEVdLAotCWNsZWFyPVwwMTQkPDIwPiwgY25vcm09XEVcXCwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XG4kPDM+LAotCWN1cD1cMDM0QyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cMDEzJDwzPiwKLQljdnZpcz1cRVw6LCBkY2gxPVwwMzRXJDw1PiwgZGwxPVwwMzRSJDwxNT4sCi0JZWQ9XDAzNFkkPDMqPiwgZWw9XlxaLCBob21lPVwwMzYkPDEwPiwgaHQ9XlosCi0JaWNoMT1cMDM0USQ8NT4sIGlsMT1cMDM0RSQ8MTU+LCBpbmQ9XkosIGlzMj1eXy4uLCBrYnM9XkgsCi0Ja2N1YjE9XkF3XHIsIGtjdWQxPV5BeVxyLCBrY3VmMT1eQXpcciwga2N1dTE9XkF4XHIsCi0Ja2VuZD1eQWtcciwga2VudD1eQXEsIGtmMT1eQWFcciwga2YyPV5BYlxyLCBrZjM9XkFjXHIsCi0Ja2Y0PV5BZFxyLCBrZjU9XkFlXHIsIGtmNj1eQWZcciwga2Y3PV5BZ1xyLCBrZjg9XkFoXHIsCi0Ja2hvbWU9XkE/XHIsIGtucD1eQW9cciwga3BwPV5BblxyLCBuZWw9Xk1eSiwgcmV2PVxFSCwKLQlybWFjcz1eTywgcm1zbz1eXElgLCBybXVsPV5cSVAsIHNncjA9XEVJLCBzbWFjcz1cRW8sCi0Jc21zbz1eXEhgLCBzbXVsPV5cSFAsCi0KLSMjIyMgTWFzc2NvbXAgY29uc29sZXMKLSMKLSMgTWFzc2NvbXAgaGFzIGdvbmUgb3V0IG9mIGJ1c2luZXNzLiAgVGhlaXIgcHJvZHVjdCBsaW5lIHdhcyBwdXJjaGFzZWQgYnkKLSMgY29tYW55IGluIEdlb3JnaWEgKFVTKSBjYWxsZWQgIlhTIEludGVybmF0aW9uYWwiLCBwYXJ0cyBhbmQgc2VydmljZSBtYXkKLSMgc3RpbGwgYmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlbS4KLSMKLQotIyAobWFzc2NvbXA6ICI6TVQ6IiBjaGFuZ2VkIHRvICI6a206IjsgIC0tIGVzcikKLW1hc3Njb21wfG1hc3Njb21wIHdvcmtzdGF0aW9uIGNvbnNvbGUsCi0JT1Ricywga20sIG1pciwKLQljb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwKLQljbGVhcj1cRVsySiwgY3ViMT1eSCwgY3VkMT1cRVtCLCBjdWYxPVxFW0MsCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRILCBjdXUxPVxFW0EsIGRjaDE9XEVbUCwgZGwxPVxFW00sCi0JZWQ9XEVbSiwgZWw9XEVbSywgaHQ9XkksIGlsMT1cRVtMLCBpczI9XEVHY1xFR2JcRUd3LCBrYnM9XkgsCi0Ja2N1YjE9XEVPRCwga2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwgcm1pcj1cRVs0bCwKLQlybXNvPVxFW20sIHJtdWw9XEVHYXUsIHNtaXI9XEVbNGgsIHNtc289XEVbN20sIHNtdWw9XEVHdSwKLW1hc3Njb21wMXxtYXNzY29tcCBsYXJnZSBzY3JlZW4gdmVyc2lvbiAxLAotCWNvbHMjMTA0LCBsaW5lcyMzNiwgdXNlPW1hc3Njb21wLAotbWFzc2NvbXAyfG1hc3Njb21wIGxhcmdlIHNjcmVlbiB2ZXJzaW9uIDIsCi0JY29scyM2NCwgbGluZXMjMjEsIHVzZT1tYXNzY29tcCwKLQotIyMjIyMjIyMgT1RIRVIgT0JTT0xFVEUgVFlQRVMKLSMKLSMgVGhlc2UgdGVybWluYWxzIGFyZSAqbG9uZyogZGVhZCAtLSB0aGVzZSBlbnRyaWVzIGFyZSByZXRhaW5lZCBmb3IKLSMgaGlzdG9yaWNhbCBpbnRlcmVzdCBvbmx5LgotIwotCi0jIyMjIE9ic29sZXRlIG5vbi1BTlNJIHNvZnR3YXJlIGVtdWxhdGlvbnMKLSMKLQotIyBDVFJNIHRlcm1pbmFsIGVtdWxhdG9yCi0jIDEuIHVuZGVybGluaW5nIGlzIG5vdCBhbGxvd2VkIHdpdGggY29sb3JzOiBmaXJzdCwgaXMgaXMgc2ltdWxhdGVkIGJ5Ci0jIGJsYWNrIG9uIHdoaXRlLCBzZWNvbmQsIGl0IGRpc2FibGVzIGJhY2tncm91bmQgY29sb3IgbWFuaXB1bGF0aW9ucy4KLSMgMi4gQkxJTktJTkcsIFJFVkVSU0UgYW5kIEJPTEQgYXJlIGFsbG93ZWQgd2l0aCBjb2xvcnMsCi0jIHNvIHdlIGhhdmUgdG8gc2F2ZSB0aGVpciBzdGF0dXMgaW4gdGhlIHN0YXRpYyByZWdpc3RlcnMgQSwgQiBhbmQgSAotIyByZXNwZWN0aXZlbHksIHRvIGJlIGFibGUgdG8gcmVzdG9yZSB0aGVtIHdoZW4gY29sb3IgY2hhbmdlcwotIyAoYmVjYXVzZSBhbnkgY29sb3IgY2hhbmdlIHR1cm5zIG9mZiBBTEwgYXR0cmlidXRlcykKLSMgMy4gPGJvbGQ+IGFuZCA8cmV2PiBzZXF1ZW5jZXMgYWx0ZXJuYXRlIG1vZGVzLAotIyByYXRoZXIgdGhhbiBzaW1wbHkgIGVudGVyaW5nIHRoZW0uICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgdGhlCi0jIHN0YXRpYyByZWdpc3RlciBCIGFuZCBIIHRvIGRldGVybWluZSB0aGUgc3RhdHVzLCBiZWZvcmUgc2VuZGluZyB0aGUKLSMgZXNjYXBlIHNlcXVlbmNlLgotIyA0LiA8c2dyMD4gbm93IG11c3Qgc2V0IHRoZSBzdGF0dXMgb2YgYWxsIDMgcmVnaXN0ZXIgKEEsQixIKSB0byB6ZXJvCi0jIGFuZCB0aGVuIHJlc2V0IGNvbG9ycwotIyA1LiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvdGVjdCBtb2RlIHdvdWxkIGJhZGx5IHBlbmFsaXplIHRoZSBwZXJmb3JtYW5jZS4KLSMgd2Ugd291bGQgaGF2ZSB0byB1c2UgXEUmYm4gc2VxdWVuY2UgdG8gdHVybiBvZmYgY29sb3JzIChhcyB3ZWxsIGFzIGFsbAotIyBvdGhlciBhdHRyaWJ1dGVzKSwgYW5kIGtlZXAgdGhlIHN0YXR1cyBvZiBwcm90ZWN0IG1vZGUgaW4geWV0IGFub3RoZXIKLSMgc3RhdGljIHZhcmlhYmxlLiAgSWYgc29tZW9uZSByZWFsbHkgbmVlZHMgdGhpcyBtb2RlLCB0aGV5IHdvdWxkIGhhdmUgdG8KLSMgY3JlYXRlIGFub3RoZXIgdGVybWluZm8gZW50cnkuCi0jIDYuIG9yaWdpbmFsIGNvbG9yLXBhaXIgaXMgd2hpdGUgb24gYmxhY2suCi0jIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBjb2xvcnMgaW50byBzdGF0aWMgcmVnaXN0ZXJzCi0jIDcuIHNldCBmb3JlZ3JvdW5kIGNvbG9yLiAgaXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBzdGVwcy4KLSMgICAxKSB0dXJuIG9mZiBhbGwgYXR0cmlidXRlcwotIyAgIDIpIHR1cm4gb24gdGhlIGJhY2tncm91bmQgYW5kIHZpZGVvIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGJlZW4gdHVybmVkCi0jICAgICAgb24gYmVmb3JlICh0aGlzIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiBzdGF0aWMgcmVnaXN0ZXJzIFgsWSxaLEEsQixILEQpLgotIyAgIDMpIHR1cm4gb24gZm9yZWdyb3VuZCBhdHRyaWJ1dGVzCi0jICAgNCkgc3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgZm9yZWdyb3VuZCBpbnRvIFUsVixXIHN0YXRpYyByZWdpc3RlcnMKLSMgOC4gdHVybiBvbiBiYWNrZ3JvdW5kOiBzaW1pbGFyIHRvIHR1cm4gb24gZm9yZWdyb3VuZCBhYm92ZQotY3RybXxDIHRlcm1pbmFsIGVtdWxhdG9yLAotCWFtLCBiY2UsIHhvbiwKLQljb2xvcnMjOCwgY29scyM4MCwgbGgjMCwgbGluZXMjMjQsIGxtIzAsIGx3IzAsIG5jdiMyLCBubGFiIzAsCi0JcGFpcnMjNjMsIHBiIzE5MjAwLCB2dCM2LAotCWJlbD1eRywgYmxpbms9XEUmZEElezF9JVBBLAotCWJvbGQ9JT8lZ0glezB9JT0ldFxFJmRIJXsxfSVQSCU7LCBjYnQ9XEVpLAotCWNsZWFyPVxFSFxFSiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRSZhJXAyJWRjJXAxJWRZLCBjdXUxPVxFQSwgZGNoMT1cRVAkPDI+LCBkbDE9XEVNLAotCWVkPVxFSiwgZWw9XEVLLCBocGE9XEUmYSVwMSVkQywgaHQ9XDAxMSQ8Mj4sIGh0cz1cRTEsCi0JaWwxPVxFTCwgaW5kPV5KLCBpcD0kPDI+LCBpczI9XEUmakFcciwga2JzPV5ILCBrY3ViMT1cRXVcciwKLQlrY3VkMT1cRXdcciwga2N1ZjE9XEV2XHIsIGtjdXUxPVxFdFxyLCBrZjE9XEVwXHIsCi0Ja2YyPVxFcVxyLCBrZjM9XEVyXHIsIGtmND1cRXNcciwga2Y1PVxFdFxyLCBrZjY9XEV1XHIsCi0Ja2Y3PVxFdlxyLCBrZjg9XEV3XHIsIGtob21lPVxFcFxyLAotCW9wPVxFJmJuXEUmYkJcRSZiR1xFJmJSJXswfSVQWCV7MH0lUFklezB9JVBaJXsxfSVQVyV7MX0lUFYlezF9JVBVLAotCXJldj0lPyVnQiV7MH0lPSV0XEUmZEIlezF9JVBCJTssIHJtaXI9XEVSLCBybWt4PVxFJmpBLAotCXNldGI9XEUmYm4lPyVnQSV0XEUmZEElOyU/JWdCJXRcRSZkQiU7JT8lZ0gldFxFJmRIJTslPyVnVSV0XEUmYlIlOyU/JWdWJXRcRSZiRyU7JT8lZ1cldFxFJmJCJTslPyVwMSV7MX0lJiV0XEUmYmIlezF9JWUlezB9JTslUFolPyVwMSV7Mn0lJiV0XEUmYmclezF9JWUlezB9JTslUFklPyVwMSV7NH0lJiV0XEUmYnIlezF9JWUlezB9JTslUFgsCi0Jc2V0Zj1cRSZibiU/JWdBJXRcRSZkQSU7JT8lZ0IldFxFJmRCJTslPyVnSCV0XEUmZEglOyU/JWdYJXRcRSZiciU7JT8lZ1kldFxFJmJnJTslPyVnWiV0XEUmYmIlOyU/JXAxJXsxfSUmJXRcRSZiQiV7MX0lZSV7MH0lOyVQVyU/JXAxJXsyfSUmJXRcRSZiRyV7MX0lZSV7MH0lOyVQViU/JXAxJXs0fSUmJXRcRSZiUiV7MX0lZSV7MH0lOyVQVSwKLQlzZ3I9XEUmZEAlezB9JVBBJXswfSVQQiV7MH0lUEQlezB9JVBIJT8lcDElcDMlcDUlfCV8JXRcRSZkQiV7MX0lUEIlOyU/JXA0JXRcRSZkQSV7MX0lUEElOyU/JXA2JXRcRSZkSCV7MX0lUEglOyU/JXAyJXRcRSZkRCU7LAotCXNncjA9XEUmZEAlezB9JVBBJXswfSVQQiV7MH0lUEgsIHNtaXI9XEVRLCBzbWt4PVxFJmpCLAotCXNtc289XEUmZEQsIHNtdWw9XEUmZEQsIHRiYz1cRTMsIHZwYT1cRSZhJXAxJWRZLAotCi0jIGdzNjMwMCAtIGNhbid0IHVzZSBibHVlIGZvcmVncm91bmQsIGl0IGNsYXNoZXMgd2l0aCB1bmRlcmxpbmU7Ci0jIGl0J3Mgc2ltdWxhdGVkIHdpdGggY3lhbgotIyBCdWc6IFRoZSA8b3A+IGNhcGFiaWxpdHkgcHJvYmFibHkgcmVzZXRzIGF0dHJpYnV0ZXMuCi0jIChnczYzMDA6IGNvbW1lbnRlZCBvdXQgPHJtbG4+IChubyA8c21sbj4pIC0tZXNyKQotZ3M2MzAwfGVtb3RzfEFUJlQgUEM2MzAwIHdpdGggRU1PVFMgdGVybWluYWwgZW11bGF0b3IsCi0JYW0sIGJjZSwgbXNnciwgeG9uLAotCWNvbG9ycyM4LCBjb2xzIzgwLCBpdCM4LCBsaW5lcyMyNCwgcGFpcnMjNjMsCi0JYWNzYz0rK1wsXCwtLS4uYGBhYWZmZ2doaGlpampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgYmxpbms9XEVbNW0sIGJvbGQ9XEVbMW0sIGNsZWFyPVxFW0hcRVtKLCBjcj1eTSwKLQljdWI9XEVbJXAxJWRELCBjdWIxPV5ILCBjdWQ9XEVbJXAxJWRCLCBjdWQxPV5KLAotCWN1Zj1cRVslcDElZEMsIGN1ZjE9XEVbQywgY3VwPVxFWyVpJXAxJWQ7JXAyJWRILAotCWN1dT1cRVslcDElZEEsIGN1dTE9XEVbQSwgZGNoPVxFWyVwMSVkUCwgZGNoMT1cRVtQLAotCWRsPVxFWyVwMSVkTSwgZGwxPVxFW00sIGVkPVxFW0osIGVsPVxFW0ssIGhvbWU9XEVbSCwgaHQ9XkksCi0JaWNoPVxFWyVwMSVkQCwgaWNoMT1cRVtALCBpbD1cRVslcDElZEwsIGlsMT1cRVtMLCBpbmQ9XkosCi0JaXMyPVxFW20sIGticz1eSCwga2NidD1eUl5JLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtmMT1cRVswcywga2YyPVxFWzI0cywga2YzPVxFWzFzLAotCWtmND1cRVsyM3MsIGtmNT1cRVsycywga2Y2PVxFWzIycywga2Y3PVxFWzNzLCBrZjg9XEVbMjFzLAotCWtob21lPVxFW0gsIG1jND1cRVs0aSwgbWM1PVxFWzVpLCBvcD1cRVs/O20sIHJldj1cRVs3bSwKLQlyaT1cRVtMLCBybWFjcz1cRVsxMG0sIHJzMT1cRWMsIHNldGI9XEVbPzslcDElZG0sCi0Jc2V0Zj1cRVs/JT8lcDElezB9JT0ldDAlZSVwMSV7MX0lPSV0MiVlJXAxJXsxfSUtJWQlO20sCi0Jc2dyMD1cRVttXEVbMTBtLCBzbWFjcz1cRVsxMW0sIHNtc289XEVbMW0sIHNtdWw9XEVbNG0sCi0KLSMgRnJvbTogPGVhcmxlQHNtZWFnb2wuVVVDUD4gMjkgT2N0IDg1IDA1OjQwOjE4IEdNVAotIyBNUy1LZXJtaXQgd2l0aCBIZWF0aC0xOSBlbXVsYXRpb24gbW9kZSBlbmFibGVkCi0jIChoMTlrOiBjaGFuZ2VkICI6cHRAOiIgdG8gIjppdEAiCi1oMTlrfGgxOWtlcm1pdHxoZWF0aGtpdCBlbXVsYXRpb24gcHJvdmlkZWQgYnkgS2VybWl0IChubyBhdXRvIG1hcmdpbiksCi0JYW1ALCBkYSwgZGIsIHh0LAotCWl0QCwKLQlodEAsIHVzZT1oMTktdSwKLQotIyBBcHBsZSBNYWNpbnRvc2ggd2l0aCBWZXJzYXRlcm0sIGEgdGVybWluYWwgZW11bGF0b3IgZGlzdHJpYnV0ZWQgYnkgU3luZXJneQotIyBTb2Z0d2FyZSAoZm9ybWVybHkgUGVyaXBoZXJhbHMgQ29tcHV0ZXJzICYgU3VwcGxpZXMsIEluYykgb2YKLSMgMjQ1NyBQZXJraW9tZW4gQXZlLiwgUmVhZGluZywgUEEgMTk2MDYsIDEtODAwLTg3Ni04Mzc2LiAgVGhleSBjYW4KLSMgYWxzbyBiZSByZWFjaGVkIGF0IHN1cHBvcnRAc3luZXJneS5jb20uCi12ZXJzYXRlcm18dmVyc2F0ZXJtIHZ0MTAwIGVtdWxhdG9yIGZvciB0aGUgbWFjaW50b3NoLAotCWFtLCB4ZW5sLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWJlbD1eRywgYmxpbms9XEVbNW0kPDIvPiwgYm9sZD1cRVsxbSQ8Mi8+LAotCWNsZWFyPVxFWztIXEVbMkokPDUwLz4sIGNyPV5NLCBjc3I9XEVbJWklcDElZDslcDIlZHIsCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1cRVtDJDwyLz4sCi0JY3VwPVxFWyVpJXAxJWQ7JXAyJWRIJDw1Lz4sIGN1dTE9XEVbQSQ8Mi8+LAotCWRjaDE9XEVbMVAkPDcvPiwgZGwxPVxFWzFNJDw5Lz4sIGVkPVxFW0okPDUwLz4sCi0JZWw9XEVbSyQ8My8+LCBob21lPVxFW0gsIGh0PV5JLCBpY2gxPVxFWzFAJDw3Lz4sCi0JaWwxPVxFWzFMJDw5Lz4sIGlzMj1cRVsxOzI0clxFWzI0OzFILCBrYnM9XkgsIGtjdWIxPVxFT0QsCi0Ja2N1ZDE9XEVPQiwga2N1ZjE9XEVPQywga2N1dTE9XEVPQSwga2YxPVxFT1AsIGtmMj1cRU9RLAotCWtmMz1cRU9SLCBrZjQ9XEVPUywgbmVsPV5NXkosIHJjPVxFOCwgcmV2PVxFWzdtJDwyLz4sCi0JcmY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQvdnQxMDAsIHJpPVxFTSQ8NS8+LAotCXJta3g9XEU+XEVbPzFsLCBybXNvPVxFW20kPDIvPiwgcm11bD1cRVttJDwyLz4sIHJzMT1cRT4sCi0Jc2M9XEU3LCBzZ3IwPVxFW20kPDIvPiwgc21reD1cRT1cRVs/MWgsIHNtc289XEVbN20kPDIvPiwKLQlzbXVsPVxFWzRtJDwyLz4sCi0KLSMgRnJvbTogUmljayBUaG9tYXMgPGlobnA0IWJ0bHVuaXghcmJ0PgotIyAoeHRhbGs6IEkgYWRkZWQgPHJtYW0+LzxzbWFtPiBiYXNlZCBvbiB0aGUgaW5pdCBzdHJpbmcuCi14dGFsa3xJQk0gUEMgd2l0aCB4dGFsayBjb21tdW5pY2F0aW9uIHByb2dyYW0gKHZlcnNpb25zIHVwIHRvIDMuNCksCi0JYW0sIG1pciwgbXNnciwgeG9uLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LCB2dCMzLCB4bWMjMSwKLQlhY3NjPWBgYWFmZmdnampra2xsbW1ubm9vcHBxcXJyc3N0dHV1dnZ3d3h4eXl6ent7fHx9fX5+LAotCWJlbD1eRywgY2xlYXI9XEVbSFxFW0okPDUwPiwgY3I9Xk0sIGN1Yj1cRVslcDElZEQsIGN1YjE9XkgsCi0JY3VkPVxFWyVwMSVkQiwgY3VkMT1eSiwgY3VmPVxFWyVwMSVkQywgY3VmMT1cRVtDJDwyPiwKLQljdXA9XEVbJWklcDElZDslcDIlZEgkPDU+LCBjdXU9XEVbJXAxJWRBLAotCWN1dTE9XEVbQSQ8Mj4sIGRsMT1cRVtNJDw5OT4sIGVkPVxFW0okPDUwPiwgZWw9XEVbSyQ8Mz4sCi0JZWwxPVxFWzFLJDwzPiwgZW5hY3M9XEUoQlxFKTAsIGhvbWU9XEVbSCwgaHQ9XkksIGh0cz1cRUgsCi0JaWwxPVxFW0wkPDk5PiwgaW5kPV5KLCBrYnM9XkgsIGtjdWIxPVxFT0QsIGtjdWQxPVxFT0IsCi0Ja2N1ZjE9XEVPQywga2N1dTE9XEVPQSwgcmk9XEVNJDw1Piwgcm1hY3M9Xk8sIHJtYW09XEVbPzdsLAotCXJta3g9XEVbPzFsXEU+LCBybXNvPVxFW21ccywKLQlyczI9XEU+XEVbPzNsXEVbPzRsXEVbPzVsXEVbPzdoXEVbPzhoLCBzZ3IwPVxFW20sCi0Jc21hY3M9Xk4sIHNtYW09XEVbPzdoLCBzbWt4PVxFWz8xaFxFPSwgc21zbz1cRVs3bVxzLAotCXRiYz1cRVszZywgdXNlPXZ0MTAwK2Zua2V5cywKLQotIyBUaGUgb2ZmaWNpYWwgUEMgdGVybWluYWwgZW11bGF0b3IgcHJvZ3JhbSBvZiB0aGUgQVQmVCBQcm9kdWN0IENlbnRlcnMuCi0jIE5vdGUgLSBpbnNlcnQgbW9kZSBjb21tZW50ZWQgb3V0IC0gZG9lc24ndCBzZWVtIHRvIHdvcmsgb24gQVQmVCBQQy4KLXNpbXRlcm18YXR0cGMgcnVubmluZyBzaW10ZXJtLAotCWFtLAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XEVIXEVKLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1cRUIsIGN1ZjE9XEVDLAotCWN1cD1cRT0lcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XEVBLCBkY2gxPVxFUiwKLQlkbDE9XEVNLCBlZD1cRUosIGVsPVxFSywgaG9tZT1cRUgsIGlsMT1cRUwsIGluZD1eSiwgcm1jdXA9XEVWRSwKLQlybXNvPVxFJmRALCBzZ3IwPVxFJmRALCBzbWN1cD1cRVZTLCBzbXNvPVxFJmRCLAotCi0jIyMjIERhaXN5IHdoZWVsIHByaW50ZXJzCi0jCi0jIFRoaXMgc2VjdGlvbiBjb2xsZWN0cyBEaWFibG8sIERUQywgWGVyb3gsIFF1bWUsIGFuZCBvdGhlciBkYWlzeQotIyB3aGVlbCB0ZXJtaW5hbHMuICBUaGVzZSBhcmUgbm93IGxhcmdlbHkgb2Jzb2xldGUuCi0jCi0KLSMgKGRpYWJsbzE2MjA6IHJlbW92ZWQgPGlmPS91c3IvbG9jYWwvc2hhcmUvdGFic2V0L3hlcm94MTcyMD4sIG5vIHN1Y2ggZmlsZSAtLSBlc3IpCi1kaWFibG8xNjIwfGRpYWJsbzE3MjB8ZGlhYmxvNDUwfGlwc2l8ZGlhYmxvIDE2MjAsCi0JaGMsIG9zLAotCWNvbHMjMTMyLCBpdCM4LAotCWN1YjE9XkgsIGN1ZDE9XkosIGN1dTE9XEVeSiwgaGQ9XEVELCBocGE9XEVcMDExJWklcDElYywKLQlodD1eSSwgaHRzPVxFMSwgaHU9XEVVLCBrYnM9XkgsIHRiYz1cRTIsCi1kaWFibG8xNjIwLW04fGRpYWJsbzE2NDAtbTh8ZGlhYmxvIDE2MjAgdy84IGNvbHVtbiBsZWZ0IG1hcmdpbiwKLQljb2xzIzEyNCwKLQlpczI9XHIgICAgICAgIFxFOSwgdXNlPWRpYWJsbzE2MjAsCi0jIChkaWFibG8xNjQwOiByZW1vdmVkIDxpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC94ZXJveDE3MzA+LCBubyBzdWNoIGZpbGUgLS0gZXNyKQotZGlhYmxvMTY0MHxkaWFibG8xNzMwfGRpYWJsbzE3NDB8ZGlhYmxvNjMwfHgxNzAwfGRpYWJsb3x4ZXJveHxkaWFibG8gMTY0MCwKLQliZWw9XkcsIHJtc289XEUmLCBybXVsPVxFUiwgc21zbz1cRVcsIHNtdWw9XEVFLAotCXVzZT1kaWFibG8xNjIwLAotIyAoZGlhYmxvMTY0MC1sbTogcmVtb3ZlZCA8aWY9L3Vzci9sb2NhbC9zaGFyZS90YWJzZXQveGVyb3gxNzMwLWxtPiwgbm8gc3VjaAotIyBmaWxlIC0tIGVzcikKLWRpYWJsbzE2NDAtbG18ZGlhYmxvLWxtfHhlcm94LWxtfGRpYWJsbyAxNjQwIHdpdGggaW5kZW50ZWQgbGVmdCBtYXJnaW4sCi0JY29scyMxMjQsCi0Jcm1zbz1cRSYsIHJtdWw9XEVSLCBzbXNvPVxFVywgc211bD1cRUUsIHVzZT1kaWFibG8xNjIwLAotZGlhYmxvMTc0MC1sbXw2MzAtbG18MTczMC1sbXx4MTcwMC1sbXxkaWFibG8gMTc0MCBwcmludGVyLAotCXVzZT1kaWFibG8xNjQwLWxtLAotIyBEVEMgMzgyIHdpdGggVkRVLiAgSGFzIG5vIDxlZD4gc28gd2UgZmFrZSBpdCB3aXRoIDxlbD4uICBTdGFuZG91dAotIyA8c21zbz1eUFxzXDAwMl5QRj4gd29ya3MgYnV0IHdvbid0IGdvIGF3YXkgd2l0aG91dCBkeW5hbWl0ZSA8cm1zbz1eUFxzXDA+LgotIyBUaGUgdGVybWluYWwgaGFzIHRhYnMsIGJ1dCBJJ20gZ2V0dGluZyB0aXJlZCBvZiBmaWdodGluZyB0aGUgYnJhaW5kYW1hZ2UuCi0jIElmIG5vIHRhYiBpcyBzZXQgb3IgdGhlIHRlcm1pbmFsJ3MgaW4gYSBiYWQgbW9vZCwgaXQgZ2xpdGNoZXMgdGhlIHNjcmVlbgotIyBhcm91bmQgYWxsIG9mIG1lbW9yeS4gIE5vdGUgdGhhdCByZXR1cm4gcHV0cyBhIGJsYW5rICgiYSByZXR1cm4gY2hhcmFjdGVyIikKLSMgaW4gdGhlIHNwYWNlIHRoZSBjdXJzb3Igd2FzIGF0LCBzbyB3ZSB1c2UgXlAgcmV0dXJuIChhbmQgdGh1cyBeUCBuZXdsaW5lIGZvcgotIyBuZXdsaW5lKS4gIE5vdGUgYWxzbyB0aGF0IGlmIHlvdSB0dXJuIG9mZiA6cHQ6IGFuZCBsZXQgVW5peCBleHBhbmQgdGFicywKLSMgY3Vyc2VzIHdvbid0IHdvcmsgKHNvbWUgb2xkIEJTRCB2ZXJzaW9ucykgYmVjYXVzZSBpdCBkb2Vzbid0IGNsZWFyIHRoaXMgYml0LAotIyBhbmQgY3Vyc29yIGFkZHJlc3Npbmcgc2VuZHMgYSB0YWIgZm9yIHJvdy9jb2x1bW4gOS4gIFdoYXQgYSBsb3NpbmcgdGVybWluYWwhCi0jIEkgaGF2ZSBiZWVuIHVuYWJsZSB0byBnZXQgdGFicyBzZXQgaW4gYWxsIDk2IGxpbmVzIC0gaXQgYWx3YXlzIGxlYXZlcyBhdAotIyBsZWFzdCBvbmUgbGluZSB3aXRoIG5vIHRhYnMgaW4gaXQsIGFuZCBvbmNlIHlvdSB0YWIgdGhyb3VnaCB0aGF0IGxpbmUsCi0jIGl0IGNvbXBsZXRlbHkgd2VpcmRzIG91dC4KLSMgKGR0YzM4MjogY2hhbmdlIDxybWN1cD4gdG8gPHNtY3VwPiAtLSBpdCAganVzdCBkb2VzIGEgY2xlYXIgLS1lc3IpCi1kdGMzODJ8RFRDIDM4MiwKLQlhbSwgZGEsIGRiLCB4aHAsCi0JY29scyM4MCwgbGluZXMjMjQsIGxtIzk2LAotCWJlbD1eRywgY2xlYXI9XDAyMFwwMzUkPDIwPiwgY25vcm09XlBiLCBjcj1eUF5NLCBjdWIxPV5ILAotCWN1ZjE9XlBSLCBjdXA9XDAyMFwwMjElcDIlYyVwMSVjLCBjdXUxPV5QXkwsIGN2dmlzPV5QQiwKLQlkY2gxPV5YLCBkbDE9XlBeUywgZWQ9XDAyMFwwMjVcMDIwXDAyM1wwMjBcMDIzLCBlbD1eUF5VLAotCWhvbWU9XlBeUiwgaWwxPV5QXlosIGluZD1eSiwgcGFkPVwxNzcsIHJtY3VwPSwgcm1pcj1eUGksCi0Jcm11bD1eUCBcMCwgc21jdXA9XDAyMFwwMzUkPDIwPiwgc21pcj1eUEksIHNtdWw9XlAgXlAsCi1kdGMzMDBzfERUQyAzMDBzLAotCWhjLCBvcywKLQljb2xzIzEzMiwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdXUxPV5aLCBmZj1eTCwgaGQ9XEVoLCBodD1eSSwKLQlodHM9XEUxLCBodT1cRUgsIGluZD1eSiwga2JzPV5ILCB0YmM9XEUzLAotZ3NpfG15c3RlcnkgZ3NpIHRlcm1pbmFsLAotCWhjLCBvcywKLQljb2xzIzEzMiwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdXUxPV5aLCBoZD1cRWgsIGh0PV5JLCBodT1cRUgsCi0JaW5kPV5KLAotYWo4MzB8YWo4MzJ8YWp8YW5kZXJzb24gamFjb2Jzb24sCi0JaGMsIG9zLAotCWJlbD1eRywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1dTE9XEU3LCBoZD1cRTksIGh1PVxFOCwKLQlpbmQ9XkosCi0jIEZyb206IENocmlzIFRvcmVrIDxjaHJpc0BneXJlLnVtZC5lZHU+IFRodSwgNyBOb3YgODUgMTg6MjE6NTggRVNUCi1hajUxMHxBbmRlcnNvbi1KYWNvYnNvbiBtb2RlbCA1MTAsCi0JYW0sIG1pciwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1eTCwgY3ViMT1eSCwgY3VmMT1cRVgsCi0JY3VwPVxFIyVwMSV7MzJ9JSslYyVwMiV7MzJ9JSslYywgY3V1MT1cRVksCi0JZGNoMT0uMSpcRSdELCBkbDE9XEUmRCQ8MiovPiwgZWQ9XEUnUCwgZWw9XEUnTCwgaWNoMT0sCi0JaWwxPVxFJkkkPDIqLz4sIGlwPSQ8LjEqLz4sIGtjdWIxPVxFVywga2N1ZDE9XEVaLAotCWtjdWYxPVxFWCwga2N1dTE9XEVZLCBwYWQ9XDE3Nywgcm1jdXA9XEUiTiwgcm1pcj1cRSdKLAotCXJtc289XEUiSSwgcm11bD1cRSJVLCBzbWN1cD1cRSJOLCBzbWlyPVxFJ0ksIHNtc289XEUiSSwKLQlzbXVsPVxFIlUsCi0jIEZyb206IDxjYm9zZyF1Y2J2YXghcHVyLWVlIWNpbmN5IWNocmlzPiBUaHUgQXVnIDIwIDA5OjA5OjE4IDE5ODEKLSMgVGhpcyBpcyBpbmNvbXBsZXRlLCBidXQgaXQncyBhIHN0YXJ0LgotbmVjNTUyMHxuZWN8c3BpbndyaXRlcnxuZWMgNTUyMCwKLQloYywgb3MsCi0JY29scyMxMzIsIGl0IzgsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3V1MT1cRTksIGZmPV5MLAotCWhkPVxFXXNcblxFXVcsIGh0PV5JLCBodHM9XEUxLCBodT1cRV1zXEU5XEVdVywgaW5kPV5KLAotCWticz1eSCwgdGJjPVxFMywKLXF1bWU1fHF1bWV8UXVtZSBTcHJpbnQgNSwKLQloYywgb3MsCi0JY29scyM4MCwgaXQjOCwKLQliZWw9XkcsIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdXUxPV5aLCBmZj1eTCwgaGQ9XEVoLCBodD1eSSwKLQlodHM9XEUxLCBodT1cRUgsIGluZD1eSiwga2JzPV5ILCB0YmM9XEUzLAotIyBJIHN1c3BlY3QgdGhlIHhlcm94IDE3MjAgaXMgdGhlIHNhbWUgYXMgdGhlIGRpYWJsbyAxNjIwLgoteGVyb3gxNzIwfHgxNzIwfHgxNzUwfHhlcm94IDE3MjAsCi0JaGMsIG9zLAotCWNvbHMjMTMyLCBpdCM4LAotCWJlbD1eRywgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGZmPV5MLCBodD1eSSwgaHRzPVxFMSwgaW5kPV5KLAotCXRiYz1cRTIsCi0KLSMjIyMgTWlzY2VsbGFuZW91cyBvYnNvbGV0ZSB0ZXJtaW5hbHMsIG1hbnVmYWN0dXJlcnMgdW5rbm93bgotIwotIyBJZiB5b3UgaGF2ZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgKGxpa2UsIGEgbWFudWZhY3R1cmVyJ3MgbmFtZSwKLSMgYW5kIGEgZGF0ZSBvbiB0aGUgc2VyaWFsLW51bWJlciBwbGF0ZSkgcGxlYXNlIHNlbmQgaXQhCi0KLWNhZDY4LTN8Y2djM3xjYWQ2OCBiYXNpYyBtb25pdG9yIHRyYW5zcGFyZW50IG1vZGUgc2l6ZSAzIGNoYXJzLAotCU9UYnMsIGFtLAotCWNvbHMjNzMsIGxpbmVzIzM2LAotCWNsZWFyPV5aLCBjdWIxPV5ILCBjdWYxPV5MLCBjdXUxPV5LLCBob21lPV5eLAotY2FkNjgtMnxjZ2MyfGNhZDY4IGJhc2ljIG1vbml0b3IgdHJhbnNwYXJlbnQgbW9kZSBzaXplIDIgY2hhcnMsCi0JT1RicywgYW0sCi0JY29scyM4NSwgbGluZXMjMzksCi0JY2xlYXI9XlosIGN1YjE9XkgsIGN1ZjE9XkwsIGN1dTE9XkssIGhvbWU9Xl4sIGtjdWIxPVxFMywKLQlrY3VkMT1cRTIsIGtjdWYxPVxFNCwga2N1dTE9XEUxLCBrZjE9XEU1LCBrZjI9XEU2LCBrZjM9XEU3LAotCWtmND1cRTgsIHJtc289XEVtXkMsIHNtc289XEVtXkwsCi1jb3BzMTB8Y29wc3xjb3BzLTEwfGNvcHMgMTAsCi0JYW0sIGJ3LAotCWNvbHMjODAsIGxpbmVzIzI0LAotCWJlbD1eRywgY2xlYXI9XDAzMCQ8MzAvPiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XkwsCi0JY3VwPVwwMjAlcDElezMyfSUrJWMlcDIlezMyfSUrJWMsIGN1dTE9XkssIGVkPV5XLCBlbD1eViwKLQlpbmQ9XkosIGticz1eSCwga2N1YjE9XkgsIGtjdWQxPV5KLCBrY3VmMT1eTCwga2N1dTE9XkssCi0Ja2hvbWU9XlksCi0jIChkMTMyOiByZW1vdmVkIGR1cGxpY2F0ZSA6aWM9XEU1OiwKLSMgbWVyZ2VkIGluIGNhcGFiaWxpdGllcyBmcm9tIGEgQlJMIGVudHJ5IC0tIGVzcikKLWQxMzJ8ZGF0YWdyYXBoaXh8ZGF0YWdyYXBoaXggMTMyYSwKLQlkYSwgZGIsIGluLAotCWNvbHMjODAsIGxpbmVzIzMwLAotCWJlbD1eRywgY2xlYXI9XkwsIGNub3JtPVxFbVxFbiwgY3I9Xk0sIGN1YjE9XkgsIGN1ZDE9XkosCi0JY3VmMT1cRUwsIGN1cD1cRTglaSVwMSUzZCVwMiUzZCwgY3V1MT1cRUssIGN2dmlzPVxFeCwKLQlkY2gxPVxFNiwgaG9tZT1cRVQsIGh0PV5JLCBpY2gxPVxFNSwgaWwxPVxFMywgaW5kPV5KLCBrYnM9XkgsCi0Ja2N1YjE9XkgsIGtjdWQxPV5KLCBuZWw9Xk1eSiwgcmk9XEV3LAotIyBUaGUgZDgwMCB3YXMgYW4gZWFybHkgcG9ydGFibGUgdGVybWluYWwgZnJvbSBjLjE5ODQtODUgdGhhdCBsb29rZWQgYSBsb3QKLSMgbGlrZSB0aGUgb3JpZ2luYWwgQ29tcGFxIGBsdW5jaGJveCcgcG9ydGFibGUgKGJ1dCBubyBoYW5kbGUpLiAgSXQgaGFkIGEgdnQyMjAKLSMgbW9kZSAod2hpY2ggaXMgd2hhdCB0aGlzIGVudHJ5IGxvb2tzIGxpa2UpIGFuZCBzZXZlcmFsIG90aGVyIGxlc3Nlci1rbm93bgotIyBlbXVsYXRpb25zLgotZDgwMHxEaXJlY3QgODAwL0EsCi0JT1RicywgYW0sIGRhLCBkYiwgbXNnciwgeGhwLAotCWNvbHMjODAsIGl0IzgsIGxpbmVzIzI0LAotCWFjc2M9YGBhMWZ4Z3FoMGpZaz9sWm1AbkVvb3BwcURycnNzdEN1NHZBd0J4M3l5enp7e3x8fX1+fiwKLQliZWw9XkcsIGNsZWFyPVxFWzE7MUhcRVsySiwgY25vcm09XEVbPjEyaCwgY3I9Xk0sIGN1YjE9XkgsCi0JY3VkMT1eSiwgY3VmMT1cRVtDLCBjdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwKLQljdnZpcz1cRVs+MTJsLCBlZD1cRVtKLCBlbD1cRVtLLCBodD1eSSwgaW5kPVxFRCwga2N1YjE9XEVbRCwKLQlrY3VkMT1cRVtCLCBrY3VmMT1cRVtDLCBrY3V1MT1cRVtBLCBrZjE9XEVPUCwga2YyPVxFT1EsCi0Ja2YzPVxFT1IsIGtmND1cRU9TLCBrZjU9XEVPVCwga2Y2PVxFT1UsIGtmNz1cRU9WLCBrZjg9XEVPVywKLQlyaT1cRU0sIHJtYWNzPVxFW20sIHJtc289XEVbbSwgcm11bD1cRVttLCBzZ3IwPVxFW20sCi0Jc21hY3M9XEVbMW0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi1kaWdpbG9nfGRpZ2lsb2cgMzMzLAotCU9UYnMsCi0JY29scyM4MCwgbGluZXMjMTYsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eSSwgY3V1MT1eTywgZWw9XlgsCi0JaG9tZT1eTiwgaW5kPV5KLAotIyBUaGUgRFdLIHdhcyBhIHRlcm1pbmFsIG1hbnVmYWN0dXJlZCBpbiB0aGUgU292aWV0IFVuaW9uIGMuMTk4NgotZHdrfGR3ay12dHxkd2sgdGVybWluYWwsCi0JYW0sCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JYWNzYz0rXF5cLFEtUy5NMFwxNzdgK2FcOmYnZyNoI2kjalhrQ2xKbUZuTm9+cVVzX3RFdVB2XFx3S3hXfl8sCi0JYmVsPV5HLCBjbGVhcj1cRUhcRUosIGNyPV5NLCBjdWIxPV5ILCBjdWQxPV5KLCBjdWYxPVxFQywKLQljdXA9XEVZJXAxJXszMn0lKyVjJXAyJXszMn0lKyVjLCBjdXUxPVxFQSwgZGNoMT1cRVAsCi0JZWQ9XEVKLCBlbD1cRUssIGhvbWU9XEVILCBodD1eSSwgaWNoMT1cRVEsIGluZD1eSiwga2JzPVwxNzcsCi0Ja2N1YjE9XEVELCBrY3VkMT1cRUIsIGtjdWYxPVxFQywga2N1dTE9XEVBLCBrZGNoMT1cRWUsCi0Ja2YxPVxFZjEsIGtmMTA9XEVmMCwga2YyPVxFZjIsIGtmMz1cRWYzLCBrZjQ9XEVmNCwga2Y1PVxFZjUsCi0Ja2Y2PVxFZjYsIGtmNz1cRWY3LCBrZjg9XEVmOCwga2Y5PVxFZjksIGtpY2gxPVxFZCwga25wPVxFaCwKLQlrcHA9XEVnLCBuZWw9Xk1eSiwgcmV2PVxFVCwgcmk9XEVTLCBybWFjcz1cRUcsIHJtc289XEVYLAotCXNncjA9XEVYLCBzbWFjcz1cRUYsIHNtc289XEVULAotZW52MjMwfGVudmlzaW9uMjMwfGVudmlzaW9uIDIzMCBncmFwaGljcyB0ZXJtaW5hbCwKLQl4ZW5sQCwKLQltYzA9XEVbMGksIG1jND1cRVs0aSwgbWM1PVxFWzVpLAotCXNncj1cRVslPyVwMSV0OzElOyU/JXAyJXQ7NCU7JT8lcDMldDs3JTslPyVwNCV0OzUlOyU/JXA2JXQ7MSU7bSQ8Mj4sCi0JdXNlPXZ0MTAwLAotIyBUaGVzZSBleGVjdXBvcnRzIHdlcmUgaW1wYWN0LXByaW50ZXIgdHR5cyB3aXRoIGEgMzAtIG9yIG1heWJlIDE1LWNwcyBhY291c3RpYwotIyBjb3VwbGVyIGF0dGFjaGVkLCB0aGUgd2hvbGUgcmlnIGZpdHRpbmcgaW4gYSBzdWl0Y2FzZSBhbmQgbW9yZSBvciBsZXNzCi0jIHBvcnRhYmxlLiAgSG90IHN0dWZmIGZvciBjLjE5NzcgOi0pIC0tIGVzcgotZXA0OHxlcDQwODB8ZXhlY3Vwb3J0IDQwODAsCi0JT1RicywgYW0sIG9zLAotCWNvbHMjODAsCi0JYmVsPV5HLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgaGQ9XlwsIGh1PV5eLCBpbmQ9XkosCi1lcDQwfGVwNDAwMHxleGVjdXBvcnQgNDAwMCwKLQljb2xzIzEzNiwgdXNlPWVwNDA4MCwKLSMgQWRhbSBUaG9tcHNvbiA8YXRob21wc29AcGFuZ2VhLmNhPiB0ZWxscyB1czoKLSMgSW5mb3JtZXIgc2VyaWVzIC0gdGhlc2UgYXJlIGFsbCBwb3J0YWJsZSB1bml0cywgcmVzZW1ibGluZyBvbGRlcgotIyBhdXRvbWF0aWMgYnJlYWQtYmFraW5nIG1hY2hpbmVzLiAgVGhlIHRlcm1pbmFsIGxvb2tzIGxpa2UgYSBgY2xhbXNoZWxsJwotIyBkZXNpZ24sIGJ1dCBpc24ndC4gIFRoZSBzdHJ1Y3R1cmUgaXMgc2ltaWxhciB0byB0aGUgRGlyZWN0IHRlcm1pbmFscywKLSMgYnV0IG9ubHkgaGFsZiB0aGUgd2lkdGguICBUaGUgZW50aXJlIHVuaXQgaXMgb25seSBhYm91dCAxMCIgd2lkZS4KLSMgSXQgZmVhdHVyZXMgYW4gOCIgc2NyZWVuICg2IiBvciA3IiBpZiB5b3UgaGF2ZSBjb2xvciEpLCBhbmQgYW4gOSJ4NiIKLSMga2V5Ym9hcmQuICBBbGwgdGhlIGtleXMgYXJlIGNyYW1tZWQgdG9nZXRoZXIsIG11Y2ggbGlrZSBzb21lIGxhcHRvcAotIyBQQ3MgdG9kYXksIGJ1dCBwZXJoYXBzIGxlc3Mgd2VsbCBvcmdhbml6ZWQuLi5hbGwgdGhlc2UgdW5pdHMgaGF2ZSBhCi0jIGJld2lsZGVyaW5nIGFycmF5IG9mIHBsdWdzIG9uIHRoZSBiYWNrLCBpbmNsdWRpbmcgYSBidWlsdC1pbiBtb2RlbS4KLSMgVGhlIDMwNSB3YXMgYSBjb2xvciB2ZXJzaW9uIG9mIHRoZSAzMDQ7IHRoZSAzMDYgYW5kIDMwNyB3ZXJlIG1vbm8gYW5kCi0jIGNvbG9yIHRlcm1pbmFscyBidWlsdCBmb3IgSUJNIGJpc3luYyBwcm90b2NvbHMuCi0jIEZyb206IFBhdWwgTGVvbmRpcyA8dW5sbGFiQGFtYmVyLmJlcmtlbGV5LmVkdT4KLWlmbXJ8SW5mb3JtZXIgRDMwNCwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQljbGVhcj1cRVosIGN1YjE9XkgsIGN1ZDE9XkosIGN1ZjE9XEVDLAotCWN1cD1cRVklcDIlezMyfSUrJWMlcDElezMyfSUrJWMsIGN1dTE9XEVBLCBkY2gxPVxFXFwsCi0JZWQ9XEUvLCBlbD1cRVEsIGhvbWU9XEVILCBpY2gxPVxFWywgcmk9XEVuLCBybXNvPVxFSywgc2dyMD1cRUssCi0Jc21zbz1cRUosCi0jIEVudHJ5IGxhcmdlbHkgYmFzZWQgb24gd3k2MCBhbmQgaGFzIHRoZSBmZWF0dXJlcyBvZiB3eTYwYWsuCi1vcHVzM24xK3xFc3ByaXQgT3B1czNuMSsgaW4gd3k2MCBtb2RlIHdpdGggQU5TSSBhcnJvdyBrZXlzLAotCWFtLCBidywgaHMsIGttLCBtaXIsIG1zZ3IsIHVsLCB4b24sCi0JY29scyM4MCwgbGgjMSwgbGluZXMjMjQsIGx3IzgsIG5sYWIjOCwgd3NsIzgwLAotCWFjc2M9MHdhX2hbanVrc2xybXFueHF6dHR1eXZdd3B4diwgYmVsPV5HLCBibGluaz1cRUcyLAotCWNidD1cRUksIGNpdmlzPVxFYDAsIGNsZWFyPVxFKiQ8MTAwPiwgY25vcm09XEVgMSwgY3I9Xk0sCi0JY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eTCwgY3VwPVxFYSVpJXAxJWRSJXAyJWRDLCBjdXUxPV5LLAotCWRjaDE9XEVXJDwxMT4sIGRpbT1cRUdwLCBkbDE9XEVSJDw1PiwgZHNsPVxFeihcciwKLQllZD1cRVkkPDEwMD4sIGVsPVxFVCwgZnNsPV5NLCBob21lPVwwMzYkPDI+LCBodD1cMDExJDw1PiwKLQlodHM9XEUxLCBpZj0vdXNyL2xvY2FsL3NoYXJlL3RhYnNldC9zdGQsIGlsMT1cRUUkPDQ+LCBpbmQ9XkosCi0JaXA9JDwzPiwKLQlpczI9XEVgXDpcRWUoXEVPXEVlNlxFYzQxXEV+NFxFYzIxXEVkL1xFenomXEVbQVwxNzdcRXp6J1xFW0JcMTc3XEV6eihcRVtEXDE3N1xFenopXEVbQ1wxNzdcRXp6PFxFW1FcMTc3XEV6emBcRVtGXDE3N1xFQTEqXEVaSDEyLAotCWtIT009XEV7LCBrYnM9XkgsIGtjYnQ9XEVJLCBrY3ViMT1cRVtELCBrY3VkMT1cRVtCLAotCWtjdWYxPVxFW0MsIGtjdXUxPVxFW0EsIGtkY2gxPVxFVywga2RsMT1cRVIsIGtlZD1cRVksCi0Ja2VsPVxFVCwga2VuZD1cRVtGLCBrZW50PVxFNywga2YxPV5BQFxyLCBrZjEwPV5BSVxyLAotCWtmMTE9XkFKXHIsIGtmMTI9XkFLXHIsIGtmMTM9XkFMXHIsIGtmMTQ9XkFNXHIsIGtmMTU9XkFOXHIsCi0Ja2YxNj1eQU9cciwga2YyPV5BQVxyLCBrZjM9XkFCXHIsIGtmND1eQUNcciwga2Y1PV5BRFxyLAotCWtmNj1eQUVcciwga2Y3PV5BRlxyLCBrZjg9XkFHXHIsIGtmOT1eQUhcciwga2hvbWU9Xl4sCi0Ja2ljaDE9XEVRLCBraWwxPVxFRSwga25wPVxFSywga3BwPVxFSiwga3BydD1cRVAsIGtycGw9XEVyLAotCW1jMD1cRVAsIG1jND1eVCwgbWM1PV5SLCBuZWw9XHJcbiQ8Mz4sCi0JcGZsb2M9XEVaMiVwMSV7NjN9JSslYyVwMiVzXDE3NywKLQlwZng9XEVaMSVwMSV7NjN9JSslYyVwMiVzXDE3NywKLQlwbG49XEV6JXAxJXs0N30lKyVjJXAyJXNcciwgcHJvdD1cRSksIHJpPVxFaiQ8Nz4sCi0Jcm1hY3M9XEVIXkMsIHJtYW09XEVkLiwgcm1jdXA9LCBybWlyPVxFciwgcm1sbj1cRUExMSwKLQlybXhvbj1cRWMyMCwgcnMxPVxFfiFcRX40JDwxNTA+LCByczI9XEVlRiQ8MTUwPiwKLQlyczM9XEV3R1xFZSgkPDE1MD4sCi0Jc2dyPSU/JXA4JXRcRSklZVxFKCU7JT8lcDkldFxFSFwwMDIlZVxFSFwwMDMlO1xFRyV7NDh9JT8lcDIlcDYlfCV0JXs4fSV8JTslPyVwMSVwMyV8JXA2JXwldCV7NH0lfCU7JT8lcDQldCV7Mn0lfCU7JT8lcDElcDUlfCV0JXs2NH0lfCU7JT8lcDcldCV7MX0lfCU7JWMsCi0Jc2dyMD1cRShcRUhcMDAzXEVHMFxFY0QsIHNtYWNzPVxFSF5CLCBzbWFtPVxFZC8sCi0Jc21jdXA9XEV6eiZcRVtBXDE3N1xFenonXEVbQlwxNzdcRXp6KFxFW0RcMTc3XEV6eilcRVtDXDE3N1xFeno8XEVbUVwxNzcsCi0Jc21pcj1cRXEsIHNtbG49XEVBMTAsIHNteG9uPVxFYzIxLCB0YmM9XEUwLCB0c2w9XEV6KCwKLQl1Yz1cRUc4XEVHMCwgdXNlPWFkbStzZ3IsCi10ZWxldGVjfFRlbGV0ZWMgRGF0YXNjcmVlbiwKLQlPVGJzLCBhbSwKLQljb2xzIzgwLCBsaW5lcyMyNCwKLQliZWw9XkcsIGNsZWFyPV5MLCBjcj1eTSwgY3ViMT1eSCwgY3VkMT1eSiwgY3VmMT1eXywgY3V1MT1eSywKLQlob21lPV5eLCBpbmQ9XkosCi0jIEZyb206IE1hcmsgRG9ybmZlbGQgPHJvbXdhQHVjYnZheC5iZXJrZWxleS5lZHU+Ci0jIFRoaXMgZGVzY3JpcHRpb24gaXMgZm9yIHRoZSBMQU5QQVIgVGVjaG5vbG9naWVzIFZJU0lPTiAzMjIwCi0jIHRlcm1pbmFsIGZyb20gMTk4NC84NS4gIFRoZSBmdW5jdGlvbiBrZXkgZGVmaW5pdGlvbnMgazAtazUgcmVwcmVzZW50IHRoZQotIyBlZGl0IGtleXBhZDogRklORCwgSU5TRVJUIEhFUkUsIFJFTU9WRSwgU0VMRUNULCBQUkVWIFNDUkVFTiwKLSMgTkVYVCBTQ1JFRU4uIFRoZSBrZXkgZGVmaW5pdGlvbnMgazYtazkgcmVwcmVzZW50IHRoZSBQRjEgdG8gUEY0IGtleXMuCi0jCi0jIEtlbm5ldGggUmFuZGVsbCA8a2VuckBkYXRhbWV0cmljcy5jb20+IHdyaXRlcyBvbiAzMSBEZWMgMTk5ODoKLSMgSSBoYWQgYSBjb3VwbGUgb2Ygc2NvcGVzICgzMjIxKSBsaWtlIHRoaXMgb25jZSB3aGVyZSBJIHVzZWQgdG8gd29yaywgYXJvdW5kCi0jIHRoZSAxOTg3IHRpbWUgZnJhbWUgaWYgbWVtb3J5IHNlcnZlcyBtZSBjb3JyZWN0bHkuICBUaGVzZSBzY29wZXMgd2VyZSBtYWRlCi0jIGJ5IGFuIG91dGZpdCBjYWxsZWQgTEFOUEFSIFRlY2hub2xvZ2llcywgYW5kIHdlcmUgbWVhbnQgdG8gbWUgREVDIFZUIDIyMAotIyBjb21wYXRpYmxlLiAgVGhlIDMyMjAgd2FzIGEgcGxhaW4gdGV4dCB0ZXJtaW5hbCBsaWtlIHRoZSBWVC0yMjAsIHRoZSAzMjIxCi0jIHdhcyBhIGxpa2UgdGhlIFZULTI0MCAobW9ub2Nocm9tZSB3aXRoIFJlZ2lzICsgU2l4ZWwgZ3JhcGhpY3MpLCBhbmQgdGhlIDMyMjIKLSMgd2FzIGxpa2UgdGhlIFZULTI0MSAoY29sb3Igd2l0aCBSZWdpcyArIFNpeGVsIEdyYXBoaWNzKS4gIFRoZXNlIHRlcm1pbmFscwotIyAoMzIyMSkgY29zdCBhYm91dCAkMTUwMCBlYWNoLCBhbmQgb25lIHdhcyBhbHdheXMgYnJva2VuIC0tIGhhZCB0byBiZSBzZW50Ci0jIGJhY2sgdG8gdGhlIHNob3AgZm9yIHJlcGFpcnMuCi0jIFRoZSBvbmx5IHJlYWwgYWR2YW50YWdlIHRoZXNlIHNjb3BlcyBoYWQgb3ZlciB0aGUgVlQtMjQwJ3Mgd2VyZToKLSMgMSkgVGhleSB3ZXJlIGZhc3RlciBpbiB0aGUgUmVnaXMgZGlzcGxheSwgb3IgYXQgbGVhc3QgdGhlIG9uZXMgSSBkaWQKLSMgMikgVGhleSBoYWQgYSBoYW5keSBkZWJ1Z2dpbmcgZmVhdHVyZSB3aGVyZSB5b3UgY291bGQgc3BsaXQtc2NyZWVuIHRoZQotIyBzY29wZSwgdGhlIGdyYXBoaWNzIHdvdWxkIGFwcGVhciBvbiB0aGUgdG9wLCBhbmQgdGhlIFJFR0lTIGNvbW1hbmRzIHdvdWxkCi0jIGFwcGVhciBvbiB0aGUgYm90dG9tLiAgSSBkb24ndCByZW1lbWJlciB0aGUgVlQtMjQwcyBiZWluZyBhYmxlIHRvIGRvIHRoYXQuCi0jIEkgd291bGQgc3dlYXIgdGhhdCBMQU5QQVIgVGVjaG5vbG9naWVzIHdhcyBpbiBNQSBzb21lcGxhY2UsIGJ1dCBzaW5jZSBJCi0jIGRvbid0IHdvcmsgYXQgdGhlIHNhbWUgcGxhY2UgYW55bW9yZSwgYW5kIHRob3NlIHRlcm1pbmFscyBhbmQgbWFudWFscyB3ZXJlCi0jIGxvbmcgc2luY2UganVua2VkLCBJIGNhbm5vdCBiZSBhbnkgbW9yZSBzdXJlIHRoYW4gdGhhdC4KLSMKLSMgKHYzMjIwOiByZW1vdmVkIG9ic29sZXRlICI6a24jMTA6IiwKLSMgSSBhZGRlZCA8cm1hbT4vPHNtYW0+IGJhc2VkIG9uIHRoZSBpbml0IHN0cmluZyAtLSBlc3IpCi12MzIyMHxMQU5QQVIgVmlzaW9uIElJIG1vZGVsIDMyMjAvMzIyMS8zMjIyLAotCU9UYnMsIGFtLCBtaXIsIHhlbmwsCi0JY29scyM4MCwgaXQjOCwgbGluZXMjMjQsCi0JY2xlYXI9XEVbSFxFW0osIGN1YjE9XkgsIGN1ZjE9XEVbQywKLQljdXA9XEVbJWklcDElZDslcDIlZEgsIGN1dTE9XEVbQSwgZGNoMT1cRVtQLCBkbDE9XEVbTSwKLQllZD1cRVtKLCBlbD1cRVtLLCBodD1eSSwgaWwxPVxFW0wsCi0JaXMyPVxFPlxFWz8zbFxFWz83aFxFWz84aFxFW3AsIGtjdWIxPVxFW0QsIGtjdWQxPVxFW0IsCi0Ja2N1ZjE9XEVbQywga2N1dTE9XEVbQSwga2YwPVxFWzF+LCBrZjE9XEVbMn4sIGtmMj1cRVszfiwKLQlrZjM9XEVbNH4sIGtmND1cRVs1fiwga2Y1PVxFWzZ+LCBrZjY9XEVbT1AsIGtmNz1cRVtPUSwKLQlrZjg9XEVbT1IsIGtmOT1cRVtPUywga2hvbWU9XEVbSCwgcmk9XEVNLCBybWFtPVxFWz83bCwKLQlybWlyPVxFWzRsLCBybWt4PVxFPiwgcm1zbz1cRVttLCBybXVsPVxFW20sIHNncjA9XEVbbSwKLQlzbWFtPVxFWz83aCwgc21pcj1cRVs0aCwgc21reD1cRT0sIHNtc289XEVbN20sIHNtdWw9XEVbNG0sCi0jIyMjIyMjIyBJQ0gvSUNIMSBWRVJTVVMgUk1JUi9TTUlSCi0jCi0jIFNvbWUgbm9uLWN1cnNlcyBhcHBsaWNhdGlvbnMgZ2V0IGNvbmZ1c2VkIGlmIGJvdGggaWNoL2ljaDEgYW5kIHJtaXIvc21pcgotIyBhcmUgcHJlc2VudDsgdGhlIHN5bXB0b20gaXMgZG91YmxlZCBjaGFyYWN0ZXJzIGluIGFuIHVwZGF0ZSB1c2luZyBpbnNlcnQuCi0jIFRoZXNlIGFwcGxpY2F0aW9ucyBhcmUgdGVjaG5pY2FsbHkgY29ycmVjdDsgaW4gYm90aCA0LjNCU0QgdGVybWNhcCBhbmQKLSMgdGVybWluZm8sIHlvdSdyZSBub3QgYWN0dWFsbHkgc3VwcG9zZWQgdG8gc3BlY2lmeSBib3RoIGljaC9pY2gxIGFuZCBybWlyL3NtaXIKLSMgdW5sZXNzIHRoZSB0ZXJtaW5hbCBuZWVkcyBib3RoLiAgVG8gbXkga25vd2xlZGdlLCBubyB0ZXJtaW5hbCBzdGlsbCBpbiB0aGlzCi0jIGZpbGUgcmVxdWlyZXMgYm90aCBvdGhlciB0aGFuIHRoZSB2ZXJ5IG9ic29sZXRlIGRtMjUwMC4KLSMKLSMgRm9yIG5jdXJzZXMtYmFzZWQgYXBwbGljYXRpb25zIHRoaXMgaXMgbm90IGEgcHJvYmxlbSwgYXMgbmN1cnNlcyB1c2VzCi0jIG9uZSBvciB0aGUgb3RoZXIgYXMgYXBwcm9wcmlhdGUgYnV0IG5ldmVyIG1peGVzIHRoZSB0d28uICBUaGVyZWZvcmUgd2UKLSMgaGF2ZSBub3QgY29ycmVjdGVkIGVudHJpZXMgbGlrZSBgbGludXgnIGFuZCBgeHRlcm0nIHRoYXQgc3BlY2lmeSBib3RoLgotIyBJZiB5b3Ugc2VlIGRvdWJsZWQgY2hhcmFjdGVycyBmcm9tIHRoZXNlLCB1c2UgdGhlIGxpbnV4LW5pYyBhbmQgeHRlcm0tbmljCi0jIGVudHJpZXMgdGhhdCBzdXBwcmVzcyBpY2gvaWNoMS4gIEFuZCB1cGdyYWRlIHRvIG5jdXJzZXMhCi0jCi0KLSMjIyMjIyMjIFZUMTAwL0FOU0kvSVNPIDY0MjkvRUNNQS00OC9QQy1URVJNIFRFUk1JTkFMIFNUQU5EQVJEUwotIwotIyBBTlNJIFgzLjY0IGhhcyBiZWVuIHdpdGhkcmF3biBhbmQgcmVwbGFjZWQgYnkgRUNNQS00OC4gIFRoZSBJU08gNjQyOSBhbmQKLSMgRUNNQS00OCBzdGFuZGFyZHMgYXJlIHNhaWQgdG8gYmUgYWxtb3N0IGlkZW50aWNhbCwgYnV0IGFyZSBub3QgdGhlIHNhbWUKLSMgYXMgWDMuNjQgKHRob3VnaCBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzIHRoZXkgYXJlIGNsb3NlIHN1cGVyc2V0cyBvZiBpdCkuCi0jCi0jIFlvdSBjYW4gb2J0YWluIEVDTUEtNDggZm9yIGZyZWUgYnkgc2VuZGluZyBlbWFpbCB0byBoZWxwZGVza0BlY21hLmNoCi0jIHJlcXVlc3RpbmcgdGhlIHN0YW5kYXJkKHMpIHlvdSB3YW50IChpLmUuIEVDTUEtNDgsICJDb250cm9sIEZ1bmN0aW9ucyBmb3IKLSMgQ29kZWQgQ2hhcmFjdGVyIFNldHMiKSwgaW5jbHVkZSB5b3VyIHNuYWlsLW1haWwgYWRkcmVzcywgYW5kIHlvdSBzaG91bGQKLSMgcmVjZWl2ZSB0aGUgZG9jdW1lbnQgaW4gZHVlIGNvdXJzZS4gIERvbid0IGV4cGVjdCBhbiBlbWFpbCBhY2tub3dsZWRnZW1lbnQuCi0jCi0jIFJlbGF0ZWQgc3RhbmRhcmRzIGluY2x1ZGUgIlgzLjQtMTk3NzogQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQgQ29kZSBmb3IKLSMgSW5mb3JtYXRpb24gSW50ZXJjaGFuZ2UiICh0aGUgQVNDSUkgc3RhbmRhcmQpIGFuZCAiWDMuNDEuMTk3NDoKLSMgQ29kZS1FeHRlbnNpb24gVGVjaG5pcXVlcyBmb3IgVXNlIHdpdGggdGhlIDctQml0IENvZGVkIENoYXJhY3RlciBTZXQgb2YKLSMgQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQgZm9yIEluZm9ybWF0aW9uIEludGVyY2hhbmdlLiIgIEkgYmVsaWV2ZSAoYnV0Ci0jIGFtIG5vdCBjZXJ0YWluKSB0aGF0IHRoZXNlIGFyZSBlZmZlY3RpdmVseSBpZGVudGljYWwgdG8gRUNNQS02IGFuZCBFQ01BLTM1Ci0jIHJlc3BlY3RpdmVseS4KLSMKLQotIyMjIyBWVDEwMC9BTlNJL0VDTUEtNDgKLSMKLSMgQU5TSSBTdGFuZGFyZCAoWDMuNjQpIENvbnRyb2wgU2VxdWVuY2VzIGZvciBWaWRlbyBUZXJtaW5hbHMgYW5kIFBlcmlwaGVyYWxzCi0jIGFuZCBFQ01BLTQ4IENvbnRyb2wgRnVuY3Rpb25zIGZvciBDb2RlZCBDaGFyYWN0ZXIgU2V0cy4KLSMKLSMgTXVjaCBvZiB0aGUgY29udGVudCBvZiB0aGlzIGNvbW1lbnQgaXMgYWRhcHRlZCBmcm9tIGEgdGFibGUgcHJlcGFyZWQgYnkKLSMgUmljaGFyZCBTaHVmb3JkLCBiYXNlZCBvbiBhIDE5ODQgQnl0ZSBhcnRpY2xlLiAgVGVybWluZm8gY29ycmVzcG9uZGVuY2VzLAotIyBkaXNjdXNzaW9uIG9mIHNvbWUgdGVybWluZm8tcmVsYXRlZCBpc3N1ZXMsIGFuZCB1cGRhdGVzIHRvIGNhcHR1cmUgRUNNQS00OAotIyBoYXZlIGJlZW4gYWRkZWQuICBDb250cm9sIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gRUNNQS00OCBvbmx5IGFyZSB0YWdnZWQKLSMgd2l0aCAqIGFmdGVyIHRoZWlyIG5hbWVzLgotIwotIyBUaGUgdGFibGUgaXMgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSBkZWZpbmVkIEFOU0kgWDMuNjQvRUNNQS00OCBjb250cm9sCi0jIHNlcXVlbmNlcy4gIEluIHRoZSBtYWluIHRhYmxlLCBcRSBzdGFuZHMgZm9yIGFuIGVzY2FwZSAoXDAzMykgY2hhcmFjdGVyLAotIyBTUEMgZm9yIHNwYWNlLiAgUG4gc3RhbmRzIGZvciBhIHNpbmdsZSBudW1lcmljIHBhcmFtZXRlciB0byBiZSBpbnNlcnRlZAotIyBpbiBkZWNpbWFsIEFTQ0lJLiAgUHMgc3RhbmRzIGZvciBhIGxpc3Qgb2Ygc3VjaCBwYXJhbWV0ZXJzIHNlcGFyYXRlZCBieQotIyBzZW1pY29sb25zLiAgUGFyYW1ldGVyIG1lYW5pbmdzIGZvciBtb3N0IHBhcmFtZXRyaXplZCBzZXF1ZW5jZXMgYXJlCi0jIGRlY3JpYmVkIGluIHRoZSBub3Rlcy4KLSMKLSMgU2VxdWVuY2UgICAgIFNlcXVlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXIgICBvcgotIyBNbmVtb25pYyAgICAgTmFtZSAgICAgICAgICAgICAgU2VxdWVuY2UgICAgICAgICAgIFZhbHVlICAgICAgTW9kZSAgIHRlcm1pbmZvCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFQQyAgQXBwbGljYXRuIFByb2dyYW0gQ29tbWFuZCBcRSBfICAgICAgICAgICAgICAgIC0gICAgICAgICBEZWxpbSAgLQotIyBCRUwgIEJlbGwgKiAgICAgICAgICAgICAgICAgICAgXkcgICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIGJlbAotIyBCUEggIEJyZWFrIFBlcm1pdHRlZCBIZXJlICogICAgXEUgQiAgICAgICAgICAgICAgICAtICAgICAgICAgKiAgICAgIC0KLSMgQlMgICBCYWNrcGFjZSAqICAgICAgICAgICAgICAgIF5IICAgICAgICAgICAgICAgICAgLSAgICAgICAgIEVGICAgICAtCi0jIENBTiAgQ2FuY2VsICogICAgICAgICAgICAgICAgICBeWCAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLSAgIChBKQotIyBDQlQgIEN1cnNvciBCYWNrd2FyZCBUYWIgICAgICAgXEUgWyBQbiBaICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGNidAotIyBDQ0ggIENhbmNlbCBQcmV2aW91cyBDaGFyYWN0ZXIgXEUgVCAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgQ0hBICBDdXJzb3IgSG9yaXpudGFsIEFic29sdXRlIFxFIFsgUG4gRyAgICAgICAgICAgMSAgICAgICAgIGVGICAgICBocGEgKEIpCi0jIENIVCAgQ3Vyc29yIEhvcml6b250YWwgVGFiICAgICBcRSBbIFBuIEkgICAgICAgICAgIDEgICAgICAgICBlRiAgICAgdGFiIChDKQotIyBDTUQgIENvZGluZyBNZXRob2QgRGVsaW1pdGVyICogXEUKLSMgQ05MICBDdXJzb3IgTmV4dCBMaW5lICAgICAgICAgIFxFIFsgUG4gRSAgICAgICAgICAgMSAgICAgICAgIGVGICAgICBuZWwgKEQpCi0jIENQTCAgQ3Vyc29yIFByZWNlZGluZyBMaW5lICAgICBcRSBbIFBuIEYgICAgICAgICAgIDEgICAgICAgICBlRiAgICAgLQotIyBDUFIgIEN1cnNvciBQb3NpdGlvbiBSZXBvcnQgICAgXEUgWyBQbiA7IFBuIFIgICAgICAxLCAxICAgICAgLSAgICAgIC0gICAoRSkKLSMgQ1NJICBDb250cm9sIFNlcXVlbmNlIEludHJvICAgIFxFIFsgICAgICAgICAgICAgICAgLSAgICAgICAgIEludHJvICAtCi0jIENUQyAgQ3Vyc29yIFRhYnVsYXRpb24gQ29udHJvbCBcRSBbIFBzIFcgICAgICAgICAgIDAgICAgICAgICBlRiAgICAgLSAgIChGKQotIyBDVUIgIEN1cnNvciBCYWNrd2FyZCAgICAgICAgICAgXEUgWyBQbiBEICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGN1YgotIyBDVUQgIEN1cnNvciBEb3duICAgICAgICAgICAgICAgXEUgWyBQbiBCICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGN1ZAotIyBDVUYgIEN1cnNvciBGb3J3YXJkICAgICAgICAgICAgXEUgWyBQbiBDICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGN1ZgotIyBDVVAgIEN1cnNvciBQb3NpdGlvbiAgICAgICAgICAgXEUgWyBQbiA7IFBuIEggICAgICAxLCAxICAgICAgZUYgICAgIGN1cCAoRykKLSMgQ1VVICBDdXJzb3IgVXAgICAgICAgICAgICAgICAgIFxFIFsgUG4gQSAgICAgICAgICAgMSAgICAgICAgIGVGICAgICBjdXUKLSMgQ1ZUICBDdXJzb3IgVmVydGljYWwgVGFiICAgICAgIFxFIFsgUG4gWSAgICAgICAgICAgLSAgICAgICAgIGVGICAgICAtICAgKEgpCi0jIERBICAgRGV2aWNlIEF0dHJpYnV0ZXMgICAgICAgICBcRSBbIFBuIGMgICAgICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBEQVEgIERlZmluZSBBcmVhIFF1YWxpZmljYXRpb24gXEUgWyBQcyBvICAgICAgICAgICAwICAgICAgICAgLSAgICAgIC0KLSMgRENIICBEZWxldGUgQ2hhcmFjdGVyICAgICAgICAgIFxFIFsgUG4gUCAgICAgICAgICAgMSAgICAgICAgIGVGICAgICBkY2gKLSMgRENTICBEZXZpY2UgQ29udHJvbCBTdHJpbmcgICAgIFxFIFAgICAgICAgICAgICAgICAgLSAgICAgICAgIERlbGltICAtCi0jIERMICAgRGVsZXRlIExpbmUgICAgICAgICAgICAgICBcRSBbIFBuIE0gICAgICAgICAgIDEgICAgICAgICBlRiAgICAgZGwKLSMgRExFICBEYXRhIExpbmsgRXNjYXBlICogICAgICAgIF5QICAgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIERNSSAgRGlzYWJsZSBNYW51YWwgSW5wdXQgICAgICBcRSBcICAgICAgICAgICAgICAgIC0gICAgICAgICBGcyAgICAgLQotIyBEU1IgIERldmljZSBTdGF0dXMgUmVwb3J0ICAgICAgXEUgWyBQcyBuICAgICAgICAgICAwICAgICAgICAgLSAgICAgIC0gICAoSSkKLSMgRFRBICBEaW1lbnNpb24gVGV4dCBBcmVhICogICAgIFxFIFsgUG4gOyBQbiBTUEMgVCAgLSAgICAgICAgIFBDICAgICAtCi0jIEVBICAgRXJhc2UgaW4gQXJlYSAgICAgICAgICAgICBcRSBbIFBzIE8gICAgICAgICAgIDAgICAgICAgICBlRiAgICAgLSAgIChKKQotIyBFQ0ggIEVyYXNlIENoYXJhY3RlciAgICAgICAgICAgXEUgWyBQbiBYICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGVjaAotIyBFRCAgIEVyYXNlIGluIERpc3BsYXkgICAgICAgICAgXEUgWyBQcyBKICAgICAgICAgICAwICAgICAgICAgZUYgICAgIGVkICAoSikKLSMgRUYgICBFcmFzZSBpbiBGaWVsZCAgICAgICAgICAgIFxFIFsgUHMgTiAgICAgICAgICAgMCAgICAgICAgIGVGICAgICAtCi0jIEVMICAgRXJhc2UgaW4gTGluZSAgICAgICAgICAgICBcRSBbIFBzIEsgICAgICAgICAgIDAgICAgICAgICBlRiAgICAgZWwgIChKKQotIyBFTSAgIEVuZCBvZiBNZWRpdW0gKiAgICAgICAgICAgXlkgICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgRU1JICBFbmFibGUgTWFudWFsIElucHV0ICAgICAgIFxFIGIgICAgICAgICAgICAgICAgICAgICAgICAgIEZzICAgICAtCi0jIEVOUSAgRW5xdWlyZSAgICAgICAgICAgICAgICAgICBeRSAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBFT1QgIEVuZCBPZiBUcmFuc21pc3Npb24gICAgICAgXkQgICAgICAgICAgICAgICAgICAtICAgICAgICAgKiAgICAgIC0KLSMgRVBBICBFbmQgb2YgUHJvdGVjdGVkIEFyZWEgICAgIFxFIFcgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtICAgKEspCi0jIEVTQSAgRW5kIG9mIFNlbGVjdGVkIEFyZWEgICAgICBcRSBHICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBFU0MgIEVzY2FwZSAgICAgICAgICAgICAgICAgICAgXlsgICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgRVRCICBFbmQgVHJhbnNtaXNzaW9uIEJsb2NrICAgIF5XICAgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIEVUWCAgRW5kIG9mIFRleHQgICAgICAgICAgICAgICBeQyAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBGRiAgIEZvcm0gRmVlZCAgICAgICAgICAgICAgICAgXkwgICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgRk5LICBGdW5jdGlvbiBLZXkgKiAgICAgICAgICAgIFxFIFsgUG4gU1BDIFcgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIEdDQyAgR3JhcGhpYyBDaGFyIENvbWJpbmF0aW9uKiBcRSBbIFBuIDsgUG4gU1BDIEIgIC0gICAgICAgICAtICAgICAgLQotIyBGTlQgIEZvbnQgU2VsZWN0aW9uICAgICAgICAgICAgXEUgWyBQbiA7IFBuIFNQQyBEICAwLCAwICAgICAgRkUgICAgIC0KLSMgR1NNICBHcmFwaGljIFNpemUgTW9kaWZ5ICAgICAgIFxFIFsgUG4gOyBQbiBTUEMgQiAgMTAwLCAxMDAgIEZFICAgICAtICAgKEwpCi0jIEdTUyAgR3JhcGhpYyBTaXplIFNlbGVjdGlvbiAgICBcRSBbIFBuIFNQQyBDICAgICAgIG5vbmUgICAgICBGRSAgICAgLQotIyBIUEEgIEhvcnogUG9zaXRpb24gQWJzb2x1dGUgICAgXEUgWyBQbiBgICAgICAgICAgICAxICAgICAgICAgRkUgICAgIC0gICAoQikKLSMgSFBCICBDaGFyIFBvc2l0aW9uIEJhY2t3YXJkICAgIFxFIFsgaiAgICAgICAgICAgICAgMSAgICAgICAgIEZFICAgICAtCi0jIEhQUiAgSG9yeiBQb3NpdGlvbiBSZWxhdGl2ZSAgICBcRSBbIFBuIGEgICAgICAgICAgIDEgICAgICAgICBGRSAgICAgLSAgIChNKQotIyBIVCAgIEhvcml6b250YWwgVGFiICogICAgICAgICAgXkkgICAgICAgICAgICAgICAgICAtICAgICAgICAgRkUgICAgIC0gICAoTikKLSMgSFRKICBIb3J6IFRhYiB3L0p1c3RpZmljYXRpb24gIFxFIEkgICAgICAgICAgICAgICAgLSAgICAgICAgIEZFICAgICAtCi0jIEhUUyAgSG9yaXpvbnRhbCBUYWIgU2V0ICAgICAgICBcRSBIICAgICAgICAgICAgICAgIC0gICAgICAgICBGRSAgICAgaHRzCi0jIEhWUCAgSG9yeiAmIFZlcnRpY2FsIFBvc2l0aW9uICBcRSBbIFBuIDsgUG4gZiAgICAgIDEsIDEgICAgICBGRSAgICAgLSAgIChHKQotIyBJQ0ggIEluc2VydCBDaGFyYWN0ZXIgICAgICAgICAgXEUgWyBQbiBAICAgICAgICAgICAxICAgICAgICAgZUYgICAgIGljaAotIyBJRENTIElEIERldmljZSBDb250cm9sIFN0cmluZyAgXEUgWyBTUEMgTyAgICAgICAgICAtICAgICAgICAgKiAgICAgIC0KLSMgSUdTICBJRCBHcmFwaGljIFN1YnJlcGVydG9pcmUgIFxFIFsgU1BDIE0gICAgICAgICAgLSAgICAgICAgICogICAgICAtCi0jIElMICAgSW5zZXJ0IExpbmUgICAgICAgICAgICAgICBcRSBbIFBuIEwgICAgICAgICAgIDEgICAgICAgICBlRiAgICAgaWwKLSMgSU5EICBJbmRleCAgICAgICAgICAgICAgICAgICAgIFxFIEQgICAgICAgICAgICAgICAgLSAgICAgICAgIEZFICAgICAtCi0jIElOVCAgSW50ZXJydXB0ICAgICAgICAgICAgICAgICBcRSBhICAgICAgICAgICAgICAgIC0gICAgICAgICBGcyAgICAgLQotIyBKRlkgIEp1c3RpZnkgICAgICAgICAgICAgICAgICAgXEUgWyBQcyBTUEMgRiAgICAgICAwICAgICAgICAgRkUgICAgIC0KLSMgSVMxICBJbmZvIFNlcGFyYXRvciAjMSAqICAgICAgIF5fICAgICAgICAgICAgICAgICAgLSAgICAgICAgICogICAgICAtCi0jIElTMiAgSW5mbyBTZXBhcmF0b3IgIzEgKiAgICAgICBeXiAgICAgICAgICAgICAgICAgIC0gICAgICAgICAqICAgICAgLQotIyBJUzMgIEluZm8gU2VwYXJhdG9yICMxICogICAgICAgXl0gICAgICAgICAgICAgICAgICAtICAgICAgICAgKiAgICAgIC0KLSMgSVM0ICBJbmZvIFNlcGFyYXRvciAjMSAqICAgICAgIF5cICAgICAgICAgICAgICAgICAgLSAgICAgICAgICogICAgICAtCi0jIExGICAgTGluZSBGZWVkICAgICAgICAgICAgICAgICBeSiAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBMUzFSIExvY2tpbmcgU2hpZnQgUmlnaHQgMSAqICAgXEUgfiAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgTFMyICBMb2NraW5nIFNoaWZ0IDIgKiAgICAgICAgIFxFIG4gICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIExTMlIgTG9ja2luZyBTaGlmdCBSaWdodCAyICogICBcRSB9ICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBMUzMgIExvY2tpbmcgU2hpZnQgMyAqICAgICAgICAgXEUgbyAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgTFMzUiBMb2NraW5nIFNoaWZ0IFJpZ2h0IDMgKiAgIFxFIHwgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIE1DICAgTWVkaWEgQ29weSAgICAgICAgICAgICAgICBcRSBbIFBzIGkgICAgICAgICAgIDAgICAgICAgICAtICAgICAgLSAgIChTKQotIyBNVyAgIE1lc3NhZ2UgV2FpdGluZyAgICAgICAgICAgXEUgVSAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgTkFLICBOZWdhdGl2ZSBBY2tub3dsZWRnZSAqICAgIF5VICAgICAgICAgICAgICAgICAgLSAgICAgICAgICogICAgICAtCi0jIE5CSCAgTm8gQnJlYWsgSGVyZSAqICAgICAgICAgICBcRSBDICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBORUwgIE5leHQgTGluZSAgICAgICAgICAgICAgICAgXEUgRSAgICAgICAgICAgICAgICAtICAgICAgICAgRkUgICAgIG5lbCAoRCkKLSMgTlAgICBOZXh0IFBhZ2UgICAgICAgICAgICAgICAgIFxFIFsgUG4gVSAgICAgICAgICAgMSAgICAgICAgIGVGICAgICAtCi0jIE5VTCAgTnVsbCAqICAgICAgICAgICAgICAgICAgICBeQCAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBPU0MgIE9wZXJhdGluZyBTeXN0ZW0gQ29tbWFuZCAgXEUgXSAgICAgICAgICAgICAgICAtICAgICAgICAgRGVsaW0gIC0KLSMgUEVDICBQcmVzLiBFeHBhbmQvQ29udHJhY3QgKiAgIFxFIFBuIFNQQyBaICAgICAgICAgMCAgICAgICAgIC0gICAgICAtCi0jIFBGUyAgUGFnZSBGb3JtYXQgU2VsZWN0aW9uICogICBcRSBQbiBTUEMgSiAgICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBQTEQgIFBhcnRpYWwgTGluZSBEb3duICAgICAgICAgXEUgSyAgICAgICAgICAgICAgICAtICAgICAgICAgRkUgICAgIC0gICAoVCkKLSMgUExVICBQYXJ0aWFsIExpbmUgVXAgICAgICAgICAgIFxFIEwgICAgICAgICAgICAgICAgLSAgICAgICAgIEZFICAgICAtICAgKFUpCi0jIFBNICAgUHJpdmFjeSBNZXNzYWdlICAgICAgICAgICBcRSBeICAgICAgICAgICAgICAgIC0gICAgICAgICBEZWxpbSAgLQotIyBQUCAgIFByZWNlZGluZyBQYWdlICAgICAgICAgICAgXEUgWyBQbiBWICAgICAgICAgICAxICAgICAgICAgZUYgICAgIC0KLSMgUFBBICBQYWdlIFBvc2l0aW9uIEFic29sdXRlICogIFxFIFsgUG4gU1BDIFAgICAgICAgMSAgICAgICAgIEZFICAgICAtCi0jIFBQQiAgUGFnZSBQb3NpdGlvbiBCYWNrd2FyZCAqICBcRSBbIFBuIFNQQyBSICAgICAgIDEgICAgICAgICBGRSAgICAgLQotIyBQUFIgIFBhZ2UgUG9zaXRpb24gRm9yd2FyZCAqICAgXEUgWyBQbiBTUEMgUSAgICAgICAxICAgICAgICAgRkUgICAgIC0KLSMgUFRYICBQYXJhbGxlbCBUZXh0cyAqICAgICAgICAgIFxFIFsgXCAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFBVMSAgUHJpdmF0ZSBVc2UgMSAgICAgICAgICAgICBcRSBRICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBQVTIgIFByaXZhdGUgVXNlIDIgICAgICAgICAgICAgXEUgUiAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgUVVBRCBUeXBvZ3JhcGhpYyBRdWFkZGluZyAgICAgIFxFIFsgUHMgU1BDIEggICAgICAgMCAgICAgICAgIEZFICAgICAtCi0jIFJFUCAgUmVwZWF0IENoYXIgb3IgQ29udHJvbCAgICBcRSBbIFBuIGIgICAgICAgICAgIDEgICAgICAgICAtICAgICAgcmVwCi0jIFJJICAgUmV2ZXJzZSBJbmRleCAgICAgICAgICAgICBcRSBNICAgICAgICAgICAgICAgIC0gICAgICAgICBGRSAgICAgLSAgIChWKQotIyBSSVMgIFJlc2V0IHRvIEluaXRpYWwgU3RhdGUgICAgXEUgYyAgICAgICAgICAgICAgICAtICAgICAgICAgRnMgICAgIC0KLSMgUk0gICBSZXNldCBNb2RlICogICAgICAgICAgICAgIFxFIFsgUHMgbCAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtICAgKFcpCi0jIFNBQ1MgU2V0IEFkZC4gQ2hhci4gU2VwLiAqICAgICBcRSBbIFBuIFNQQyAvICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBTQVBWIFNlbC4gQWx0LiBQcmVzZW50LiBWYXIuICogXEUgWyBQcyBTUEMgXSAgICAgICAwICAgICAgICAgLSAgICAgIC0gICAoWCkKLSMgU0NJICBTaW5nbGUtQ2hhciBJbnRyb2R1Y2VyICAgIFxFIFogICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFNDTyAgU2VsLiBDaGFyLiBPcmllbnRhdGlvbiAqICBcRSBbIFBuIDsgUG4gU1BDIGsgIC0gICAgICAgICAtICAgICAgLQotIyBTQ1MgIFNldCBDaGFyLiBTcGFjaW5nICogICAgICAgXEUgWyBQbiBTUEMgZyAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgU0QgICBTY3JvbGwgRG93biAgICAgICAgICAgICAgIFxFIFsgUG4gVCAgICAgICAgICAgMSAgICAgICAgIGVGICAgICByaW4KLSMgU0RTICBTdGFydCBEaXJlY3RlZCBTdHJpbmcgKiAgIFxFIFsgUG4gXSAgICAgICAgICAgMSAgICAgICAgIC0gICAgICAtCi0jIFNFRSAgU2VsZWN0IEVkaXRpbmcgRXh0ZW50ICAgICBcRSBbIFBzIFEgICAgICAgICAgIDAgICAgICAgICAtICAgICAgLSAgIChZKQotIyBTRUYgIFNoZWV0IEVqZWN0ICYgRmVlZCAqICAgICAgXEUgWyBQcyA7IFBzIFNQQyBZICAwLDAgICAgICAgLSAgICAgIC0KLSMgU0dSICBTZWxlY3QgR3JhcGhpYyBSZW5kaXRpb24gIFxFIFsgUHMgbSAgICAgICAgICAgMCAgICAgICAgIEZFICAgICBzZ3IgKE8pCi0jIFNIUyAgU2VsZWN0IENoYXIuIFNwYWNpbmcgKiAgICBcRSBbIFBzIFNQQyBLICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBTSSAgIFNoaWZ0IEluICAgICAgICAgICAgICAgICAgXk8gICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0gICAoUCkKLSMgU0lNRCBTZWwuIEltcC4gTW92ZSBEaXJlY3QuICogIFxFIFsgUHMgXiAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFNMICAgU2Nyb2xsIExlZnQgICAgICAgICAgICAgICBcRSBbIFBuIFNQQyBAICAgICAgIDEgICAgICAgICBlRiAgICAgLQotIyBTTEggIFNldCBMaW5lIEhvbWUgKiAgICAgICAgICAgXEUgWyBQbiBTUEMgVSAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgU0xMICBTZXQgTGluZSBMaW1pdCAqICAgICAgICAgIFxFIFsgUG4gU1BDIFYgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFNMUyAgU2V0IExpbmUgU3BhY2luZyAqICAgICAgICBcRSBbIFBuIFNQQyBoICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBTTSAgIFNlbGVjdCBNb2RlICAgICAgICAgICAgICAgXEUgWyBQcyBoICAgICAgICAgICBub25lICAgICAgLSAgICAgIC0gICAoVykKLSMgU08gICBTaGlmdCBPdXQgICAgICAgICAgICAgICAgIF5OICAgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtICAgKFEpCi0jIFNPSCAgU3RhcnQgT2YgSGVhZGluZyAqICAgICAgICBeQSAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBTT1MgIFN0YXJ0IG9mIFN0cmluZyAqICAgICAgICAgXEUgWCAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgU1BBICBTdGFydCBvZiBQcm90ZWN0ZWQgQXJlYSAgIFxFIFYgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtICAgKFopCi0jIFNQRCAgU2VsZWN0IFByZXMuIERpcmVjdGlvbiAqICBcRSBbIFBzIDsgUHMgU1BDIFMgIDAsMCAgICAgICAtICAgICAgLQotIyBTUEggIFNldCBQYWdlIEhvbWUgKiAgICAgICAgICAgXEUgWyBQcyBTUEMgRyAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgU1BJICBTcGFjaW5nIEluY3JlbWVudCAgICAgICAgIFxFIFsgUG4gOyBQbiBTUEMgRyAgbm9uZSAgICAgIEZFICAgICAtCi0jIFNQTCAgU2V0IFBhZ2UgTGltaXQgKiAgICAgICAgICBcRSBbIFBzIFNQQyBqICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBTUFFSIFNldCBQci4gUXVhbC4gJiBSYXBpZC4gKiAgXEUgWyBQcyBTUEMgWCAgICAgICAwICAgICAgICAgLSAgICAgIC0KLSMgU1IgICBTY3JvbGwgUmlnaHQgICAgICAgICAgICAgIFxFIFsgUG4gU1BDIEEgICAgICAgMSAgICAgICAgIGVGICAgICAtCi0jIFNSQ1MgU2V0IFJlZHVjZWQgQ2hhci4gU2VwLiAqICBcRSBbIFBuIFNQQyBmICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBTUlMgIFN0YXJ0IFJldmVyc2VkIFN0cmluZyAqICAgXEUgWyBQcyBbICAgICAgICAgICAwICAgICAgICAgLSAgICAgIC0KLSMgU1NBICBTdGFydCBvZiBTZWxlY3RlZCBBcmVhICAgIFxFIEYgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFNTVSAgU2VsZWN0IFNpemUgVW5pdCAqICAgICAgICBcRSBbIFBuIFNQQyBJICAgICAgIDAgICAgICAgICAtICAgICAgLQotIyBTU1cgIFNldCBTcGFjZSBXaWR0aCAqICAgICAgICAgXEUgWyBQbiBTUEMgWyAgICAgICBub25lICAgICAgLSAgICAgIC0KLSMgU1MyICBTaW5nbGUgU2hpZnQgMiAoRzIgc2V0KSAgIFxFIE4gICAgICAgICAgICAgICAgLSAgICAgICAgIEludHJvICAtCi0jIFNTMyAgU2luZ2xlIFNoaWZ0IDMgKEczIHNldCkgICBcRSBPICAgICAgICAgICAgICAgIC0gICAgICAgICBJbnRybyAgLQotIyBTVCAgIFN0cmluZyBUZXJtaW5hdG9yICAgICAgICAgXEUgXCAgICAgICAgICAgICAgICAtICAgICAgICAgRGVsaW0gIC0KLSMgU1RBQiBTZWxlY3RpdmUgVGFidWxhdGlvbiAqICAgIFxFIFsgUG4gU1BDIF4gICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFNUUyAgU2V0IFRyYW5zbWl0IFN0YXRlICAgICAgICBcRSBTICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBTVFggIFN0YXJ0IHBmIFRleHQgKiAgICAgICAgICAgXkIgICAgICAgICAgICAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgU1UgICBTY3JvbGwgVXAgICAgICAgICAgICAgICAgIFxFIFsgUG4gUyAgICAgICAgICAgMSAgICAgICAgIGVGICAgICBpbmRuCi0jIFNVQiAgU3Vic3RpdHV0ZSAqICAgICAgICAgICAgICBeWiAgICAgICAgICAgICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBTVlMgIFNlbGVjdCBMaW5lIFNwYWNpbmcgKiAgICAgXEUgWyBQbiBTUEMgXCAgICAgICAxICAgICAgICAgLSAgICAgIC0KLSMgU1lOICBTeW5jaHJvbm91cyBJZGxlICogICAgICAgIF5GICAgICAgICAgICAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFRBQyAgVGFidWwuIEFsaWduZWQgQ2VudGVyZWQgKiBcRSBbIFBuIFNQQyBiICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBUQUxFIFRhYnVsLiBBbC4gTGVhZGluZyBFZGdlICogXEUgWyBQbiBTUEMgYSAgICAgICAtICAgICAgICAgLSAgICAgIC0KLSMgVEFURSBUYWJ1bC4gQWwuIFRyYWlsaW5nIEVkZ2UqIFxFIFsgUG4gU1BDIGAgICAgICAgLSAgICAgICAgIC0gICAgICAtCi0jIFRCQyAgVGFiIENsZWFyICAgICAgICAgICAgICAgICBcRSBbIFBzIGcgICAgICAgICAgIDAgICAgICAgICBGRSAgICAgdGJjCi0jIFRDQyAgVGFidWwuIENlbnRlcmVkIG9uIENoYXIgKiBcRSBbIFBuIFNQQyBjICAgICAgIC0gICAgICAgICAtICAgICAgLQotIyBUU1IgIFRhYnVsYXRpb24gU3RvcCBSZW1vdmUgICogXEUgWyBQbiBTUEMgZCAgICAgICAtICAgICAgICAgRkUgICAgIC0KLSMgVFNTICBUaGluIFNwYWNlIFNwZWNpZmljYXRpb24gIFxFIFsgUG4gU0MgRSAgICAgICAgbm9uZSAgICAgIEZFICAgICAtCi0jIFZQQSAgVmVydC4gUG9zaXRpb24gQWJzb2x1dGUgICBcRSBbIFBuIGQgICAgICAgICAgIDEgICAgICAgICBGRSAgICAgdnBhCi0jIFZQQiAgTGluZSBQb3NpdGlvbiBCYWNrd2FyZCAqICBcRSBbIFBuIGsgICAgICAgICAgIDEgICAgICAgICBGRSAgICAgLQotIyBWUFIgIFZlcnQuIFBvc2l0aW9uIFJlbGF0aXZlICAgXEUgWyBQbiBlICAgICAgICAgICAxICAgICAgICAgRkUgICAgIC0gICAoUikKLSMgVlQgICBWZXJ0aWNhbCBUYWJ1bGF0aW9uICogICAgIF5LICAgICAgICAgICAgICAgICAgLSAgICAgICAgIEZFICAgICAtCi0jIFZUUyAgVmVydGljYWwgVGFidWxhdGlvbiBTZXQgICBcRSBKICAgICAgICAgICAgICAgIC0gICAgICAgICBGRSAgICAgLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgTm90ZXM6Ci0jCi0jIFNvbWUgY29udHJvbCBjaGFyYWN0ZXJzIGFyZSBsaXN0ZWQgaW4gdGhlIEVDTUEtNDggc3RhbmRhcmQgd2l0aG91dAotIyBiZWluZyBhc3NpZ25lZCBmdW5jdGlvbnMgcmVsZXZhbnQgdG8gdGVybWluYWwgY29udHJvbCB0aGVyZSAodGhleQotIyByZWZlcnJlZCB0byBvdGhlciBzdGFuZGFyZHMgc3VjaCBhcyBJU08gMTc0NSBvciBFQ01BLTM1KS4gIFRoZXkgYXJlIGxpc3RlZAotIyBoZXJlIGFueXdheSBmb3IgY29tcGxldGVuZXNzLgotIwotIyAoQSkgRUNNQS00OCBjYWxscyB0aGlzICJDYW5jZWxDaGFyYWN0ZXIiIGJ1dCByZXRhaW5zIHRoZSBDQ0ggYWJicmV2aWF0aW9uLgotIwotIyAoQikgVGhlcmUgc2VlbXMgdG8gYmUgc29tZSBjb25mdXNpb24gYWJyb2FkIGJldHdlZW4gQ0hBIGFuZCBIUEEuICBNb3N0Ci0jIGBBTlNJJyB0ZXJtaW5hbHMgYWNjZXB0IHRoZSBDSEEgc2VxdWVuY2UsIG5vdCB0aGUgSFBBLiBidXQgdGVybWluZm8gY2FsbHMKLSMgdGhlIGNhcGFiaWxpdHkgKGhwYSkuICBFQ01BLTQ4IGNhbGxzIHRoaXMgIkN1cnNvciBDaGFyYWN0ZXIgQWJzb2x1dGUiIGJ1dAotIyBwcmVzZXJ2ZWQgdGhlIENIQSBhYmJyZXZpYXRpb24uCi0jCi0jIChDKSBDSFQgY29ycmVzcG9uZHMgdG8gdGVybWluZm8gKHRhYikuICBVc3VhbGx5IGl0IGhhcyB0aGUgdmFsdWUgXkkuCi0jIE9jY2FzaW9uYWxseSAoYXMgb24sIGZvciBleGFtcGxlLCBjZXJ0YWluIEhQIHRlcm1pbmFscykgdGhpcyBoYXMgdGhlIEhUSgotIyB2YWx1ZS4gIEVDTUEtNDggY2FsbHMgdGhpcyAiQ3Vyc29yIEZvcndhcmQgVGFidWxhdGlvbiIgYnV0IHByZXNlcnZlZCB0aGUKLSMgQ0hUIGFiYnJldmlhdGlvbi4KLSMKLSMgKEQpIHRlcm1pbmZvIChuZWwpIGlzIHVzdWFsbHkgXHJcbiByYXRoZXIgdGhhbiBBTlNJIFxFRS4KLSMKLSMgKEUpIEVDTUEtNDggY2FsbHMgdGhpcyAiQWN0aXZlIFBvc2l0aW9uIFJlcG9ydCIgYnV0IHByZXNlcnZlcyB0aGUgQ1BSCi0jIGFiYnJldmlhdGlvbi4KLSMKLSMgKEYpIENUQyBwYXJhbWV0ZXIgdmFsdWVzOiAwID0gc2V0IGNoYXIgdGFiLCAxID0gc2V0IGxpbmUgdGFiLCAyID0gY2xlYXIKLSMgY2hhciB0YWIsIDMgPSBjbGVhciBsaW5lIHRhYiwgNCA9IGNsZWFyIGFsbCBjaGFyIHRhYnMgb24gY3VycmVudCBsaW5lLAotIyA1ID0gY2xlYXIgYWxsIGNoYXIgdGFicywgNiA9IGNsZWFyIGFsbCBsaW5lIHRhYnMuCi0jCi0jIChHKSBDVVAgYW5kIEhWUCBhcmUgaWRlbnRpY2FsIGluIGVmZmVjdC4gIFNvbWUgQU5TSS5TWVMgdmVyc2lvbnMgYWNjZXB0Ci0jIEhWUCwgYnV0IGFsd2F5cyBhbGxvdyBDVVAgYXMgYW4gYWx0ZXJuYXRlLiAgRUNNQS00OCBjYWxscyBIVlAgIkNoYXJhY3RlcgotIyBQb3NpdGlvbiBBYnNvbHV0ZSIgYnV0IHJldGFpbnMgdGhlIEhWUCBhYmJyZXZpYXRpb24uCi0jCi0jIChIKSBFQ01BIGNhbGxzIHRoaXMgIkN1cnNvciBMaW5lIFRhYnVsYXRpb24iIGJ1dCBwcmVzZXJ2ZXMgdGhlIENWVAotIyBhYmJyZXZpYXRpb24uCi0jCi0jIChJKSBEU1IgcGFyYW1ldGVyIHZhbHVlczogMCA9IHJlYWR5LCAxID0gYnVzeSwgMiA9IGJ1c3ksIHdpbGwgc2VuZCBEU1IKLSMgbGF0ZXIsIDMgPSBtYWxmdW5jdGlvbiwgNCA9IG1hbGZ1bmN0aW9uLCB3aWxsIHNlbmQgRFNSIGxhdGVyLCA1ID0gcmVxdWVzdAotIyBEU1IsIDYgPSByZXF1ZXN0IENQUiByZXNwb25zZS4KLSMKLSMgKEopIEVDTUEgY2FsbHMgRUQgIkVyYXNlIEluIFBhZ2UiLiBFQS9FRC9FTCBwYXJhbWV0ZXJzOiAwID0gY2xlYXIgdG8gZW5kLAotIyAxID0gY2xlYXIgZnJvbSBiZWdpbm5pbmcsIDIgPSBjbGVhci4KLSMKLSMgKEspIEVDTUEgY2FsbHMgdGhpcyAiRW5kIG9mIEd1YXJkZWQgQXJlYSIgYnV0IHByZXNlcnZlcyB0aGUgRVBBIGFiYnJldmlhdGlvbi4KLSMKLSMgKEwpIFRoZSBHU00gcGFyYW1ldGVycyBhcmUgdmVydGljYWwgYW5kIGhvcml6b250YWwgcGFyYW1ldGVycyB0byBzY2FsZSBieS4KLSMKLSMgKE0pIFNvbWUgQU5TSS5TWVMgdmVyc2lvbnMgYWNjZXB0IEhQUiwgYnV0IG1vcmUgY29tbW9ubHkgYEFOU0knIHRlcm1pbmFscwotIyB1c2UgQ1VGIGZvciB0aGlzIGZ1bmN0aW9uIGFuZCBpZ25vcmUgSFBSLiAgRUNNQS00OCBjYWxscyB0aGlzICJDaGFyYWN0ZXIKLSMgUG9zaXRpb24gUmVsYXRpdmUiIGJ1dCByZXRhaW5zIHRoZSBIUFIgYWJicmV2aWF0aW9uLgotIwotIyAoTikgRUNNQS00OCBjYWxscyB0aGlzICJDaGFyYWN0ZXIgVGFidWxhdGlvbiIgYnV0IHJldGFpbnMgdGhlIEhUCi0jIGFiYnJldmlhdGlvbi4KLSMKLSMgKE8pIFNHUiBwYXJhbWV0ZXIgdmFsdWVzOiAwID0gZGVmYXVsdCBtb2RlIChhdHRyaWJ1dGVzIG9mZiksIDEgPSBib2xkLAotIyAyID0gZGltLCAzID0gaXRhbGljaXplZCwgNCA9IHVuZGVybGluZWQsIDUgPSBzbG93IGJsaW5rLCA2ID0gZmFzdCBibGluaywKLSMgNyA9IHJldmVyc2UgdmlkZW8sIDggPSBpbnZpc2libGUsIDkgPSBjcm9zc2VkLW91dCAobWFya2VkIGZvciBkZWxldGlvbiksCi0jIDEwID0gcHJpbWFyeSBmb250LCAxMCArIG4gKG4gaW4gMS4uOSkgPSBudGggYWx0ZXJuYXRpdmUgZm9udCwgMjAgPSBGcmFrdHVyLAotIyAyMSA9IGRvdWJsZSB1bmRlcmxpbmUsIDIyID0gdHVybiBvZmYgMiwgMjMgPSB0dXJuIG9mZiAzLCAyNCA9IHR1cm4gb2ZmIDQsCi0jIDI1ID0gdHVybiBvZmYgNSwgMjYgPSBwcm9wb3J0aW9uYWwgc3BhY2luZywgMjcgPSB0dXJuIG9mZiA3LCAyOCA9IHR1cm4gb2ZmCi0jIDgsIDI5ID0gdHVybiBvZmYgOSwgMzAgPSBibGFjayBmZywgMzEgPSByZWQgZmcsIDMyID0gZ3JlZW4gZmcsIDMzID0geWVsbG93Ci0jIGZnLCAzNCA9IGJsdWUgZmcsIDM1ID0gbWFnZW50YSBmZywgMzYgPSBjeWFuIGZnLCAzNyA9IHdoaXRlIGZnLCAzOCA9IHNldAotIyBmZyBjb2xvciBhcyBpbiBDQ0lUIFQuNDE2LCAzOSA9IHNldCBkZWZhdWx0IGZnIGNvbG9yLCA0MCA9IGJsYWNrIGJnCi0jIDQxID0gcmVkIGJnLCA0MiA9IGdyZWVuIGJnLCA0MyA9IHllbGxvdyBiZywgNDQgPSBibHVlIGJnLCA0NSA9IG1hZ2VudGEgYmcsCi0jIDQ2ID0gY3lhbiBiZywgNDcgPSB3aGl0ZSBiZywgNDggPSBzZXQgYmcgY29sb3IgYXMgaW4gQ0NJVCBULjQxNiwgMzkgPSBzZXQKLSMgZGVmYXVsdCBiZyBjb2xvciwgNTAgPSB0dXJuIG9mZiAyNiwgNTEgPSBmcmFtZWQsIDUyID0gZW5jaXJjbGVkLCA1MyA9Ci0jIG92ZXJsaW5lZCwgNTQgPSB0dXJuIG9mZiA1MSAmIDUyLCA1NSA9IG5vdCBvdmVybGluZWQsIDU2LTU5ID0gcmVzZXJ2ZWQsCi0jIDYxLTY1ID0gdmFyaWFibGUgaGlnaGxpZ2h0cyBmb3IgaWRlb2dyYW1zLgotIwotIyAoUCkgU0kgaXMgYWxzbyBjYWxsZWQgTFNPLCBMb2NraW5nIFNoaWZ0IFplcm8uCi0jCi0jIChRKSBTSSBpcyBhbHNvIGNhbGxlZCBMUzEsIExvY2tpbmcgU2hpZnQgT25lLgotIwotIyAoUikgU29tZSBBTlNJLlNZUyB2ZXJzaW9ucyBhY2NlcHQgVlBSLCBidXQgbW9yZSBjb21tb25seSBgQU5TSScgdGVybWluYWxzCi0jIHVzZSBDVUQgZm9yIHRoaXMgZnVuY3Rpb24gYW5kIGlnbm9yZSBWUFIuICBFQ01BIGNhbGxzIGl0IGBMaW5lIFBvc2l0aW9uCi0jIEFic29sdXRlJyBidXQgcmV0YWlucyB0aGUgVlBBIGFiYnJldmlhdGlvbi4KLSMKLSMgKFMpIE1DIHBhcmFtZXRlcnM6IDAgPSBzdGFydCB4ZmVyIHRvIHByaW1hcnkgYXV4IGRldmljZSwgMSA9IHN0YXJ0IHhmZXIgZnJvbQotIyBwcmltYXJ5IGF1eCBkZXZpY2UsIDIgPSBzdGFydCB4ZmVyIHRvIHNlY29uZGFyeSBhdXggZGV2aWNlLCAzID0gc3RhcnQgeGZlcgotIyBmcm9tIHNlY29uZGFyeSBhdXggZGV2aWNlLCA0ID0gc3RvcCByZWxheSB0byBwcmltYXJ5IGF1eCBkZXZpY2UsIDUgPQotIyBzdGFydCByZWxheSB0byBwcmltYXJ5IGF1eCBkZXZpY2UsIDYgPSBzdG9wIHJlbGF5IHRvIHNlY29uZGFyeSBhdXggZGV2aWNlLAotIyA3ID0gc3RhcnQgcmVsYXkgdG8gc2Vjb25kYXJ5IGF1eCBkZXZpY2UuCi0jCi0jIChUKSBFQ01BLTQ4IGNhbGxzIHRoaXMgIlBhcnRpYWwgTGluZSBGb3J3YXJkIiBidXQgcmV0YWlucyB0aGUgUExECi0jIGFiYnJldmlhdGlvbi4KLSMKLSMgKFUpIEVDTUEtNDggY2FsbHMgdGhpcyAiUGFydGlhbCBMaW5lIEJhY2t3YXJkIiBidXQgcmV0YWlucyB0aGUgUExVCi0jIGFiYnJldmlhdGlvbi4KLSMKLSMgKFYpIEVDTUEtNDggY2FsbHMgdGhpcyAiUmV2ZXJzZSBMaW5lIEZlZWQiIGJ1dCByZXRhaW5zIHRoZSBSSSBhYmJyZXZpYXRpb24uCi0jCi0jIChXKSBSTS9TTSBtb2RlcyBhcmUgYXMgZm9sbG93czogMSA9IEd1YXJkZWQgQXJlYSBUcmFuc2ZlciBNb2RlIChHQVRNKSwKLSMgMiA9IEtleWJvYXJkIEFjdGlvbiBNb2RlIChLQU0pLCAzID0gQ29udHJvbCBSZXByZXNlbnRhdGlvbiBNb2RlIChDUk0pLAotIyA0ID0gSW5zZXJ0aW9uIFJlcGxhY2VtZW50IE1vZGUsIDUgPSBTdGF0dXMgUmVwb3J0IFRyYW5zZmVyIE1vZGUgKFNSVE0pLAotIyA2ID0gRXJhc3VyZSBNb2RlIChFUk0pLCA3ID0gTGluZSBFZGl0aW5nIE1vZGUgKExFTSksIDggPSBCaS1EaXJlY3Rpb25hbAotIyBTdXBwb3J0IE1vZGUgKEJEU00pLCA5ID0gRGV2aWNlIENvbXBvbmVudCBTZWxlY3QgTW9kZSAoRENTTSksCi0jIDEwID0gQ2hhcmFjdGVyIEVkaXRpbmcgTW9kZSAoSEVNKSwgMTEgPSBQb3NpdGlvbmluZyBVbml0IE1vZGUgKFBVTSksCi0jIDEyID0gU2VuZC9SZWNlaXZlIE1vZGUsIDEzID0gRm9ybWF0IEVmZmVjdG9yIEFjdGlvbiBNb2RlIChGRUFNKSwKLSMgMTQgPSBGb3JtYXQgRWZmZWN0b3IgVHJhbnNmZXIgTW9kZSAoRkVUTSksIDE1ID0gTXVsdGlwbGUgQXJlYSBUcmFuc2ZlcgotIyBNb2RlIChNQVRNKSwgMTYgPSBUcmFuc2ZlciBUZXJtaW5hdGlvbiBNb2RlLCAxNyA9IFNlbGVjdGVkIEFyZWEgVHJhbnNmZXIKLSMgTW9kZSwgMTggPSBUYWJ1bGF0aW9uIFN0b3AgTW9kZSwgMTkgPSBFZGl0aW5nIEJvdW5kYXJ5IE1vZGUsIDIwID0gTGluZSBGZWVkCi0jIE5ldyBMaW5lIE1vZGUgKExGL05MKSwgR3JhcGhpYyBSZW5kaXRpb24gQ29tYmluYXRpb24gTW9kZSAoR1JDTSksIDIyID0KLSMgWmVybyBEZWZhdWx0IE1vZGUgKFpETSkuICBUaGUgRUJNIGFuZCBMRi9OTCBtb2RlcyBoYXZlIGFjdHVhbGx5IGJlZW4gcmVtb3ZlZAotIyBmcm9tIEVDTUEtNDgncyA1dGggZWRpdGlvbiBidXQgYXJlIGxpc3RlZCBoZXJlIGZvciByZWZlcmVuY2UuCi0jCi0jIChYKSBTZWxlY3QgQWx0ZXJuYXRlIFByZXNlbnRhdGlvbiBWYXJpYW50cyBpcyB1c2VkIG9ubHkgZm9yIG5vbi1MYXRpbgotIyBhbHBoYWJldHMuCi0jCi0jIChZKSAiU2VsZWN0IEVkaXRpbmcgRXh0ZW50IiAoU0VFKSB3YXMgQU5TSSAiU2VsZWN0IEVkaXQgRXh0ZW50IE1vZGUiIChTRU0pLgotIwotIyAoWikgRUNNQS00OCBjYWxscyB0aGlzICJTdGFydCBvZiBHdWFyZGVkIEFyZWEiIGJ1dCByZXRhaW5zIHRoZSBTUEEKLSMgYWJicmV2aWF0aW9uLgotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgQWJicmV2aWF0aW9uczoKLSMKLSMgSW50cm8gIGFuIEludHJvZHVjZXIgb2Ygc29tZSBraW5kIG9mIGRlZmluZWQgc2VxdWVuY2U7IHRoZSBub3JtYWwgNy1iaXQKLSMgICAgICAgIFgzLjY0IENvbnRyb2wgU2VxdWVuY2UgSW50cm9kdWNlciBpcyB0aGUgdHdvIGNoYXJhY3RlcnMgIkVzY2FwZSBbIgotIwotIyBEZWxpbSAgYSBEZWxpbWl0ZXIKLSMKLSMgeC95ICAgIGlkZW50aWZpZXMgYSBjaGFyYWN0ZXIgYnkgcG9zaXRpb24gaW4gdGhlIEFTQ0lJIHRhYmxlIChjb2x1bW4vcm93KQotIwotIyBlRiAgICAgZWRpdG9yIGZ1bmN0aW9uIChzZWUgZXhwbGFuYXRpb24pCi0jCi0jIEZFICAgICBmb3JtYXQgZWZmZWN0b3IgKHNlZSBleHBsYW5hdGlvbikKLSMKLSMgRiAgICAgIGlzIGEgRmluYWwgY2hhcmFjdGVyIGluCi0jICAgICAgICAgICAgIGFuIEVzY2FwZSBzZXF1ZW5jZSAoRiBmcm9tIDMvMCB0byA3LzE0IGluIHRoZSBBU0NJSSB0YWJsZSkKLSMgICAgICAgICAgICAgYSBjb250cm9sIHNlcXVlbmNlIChGIGZyb20gNC8wIHRvIDcvMTQpCi0jCi0jIEdzICAgICBpcyBhIGdyYXBoaWMgY2hhcmFjdGVyIGFwcGVhcmluZyBpbiBzdHJpbmdzIChHcyByYW5nZXMgZnJvbQotIyAgICAgICAgMi8wIHRvIDcvMTQpIGluIHRoZSBBU0NJSSB0YWJsZQotIwotIyBDZSAgICAgaXMgYSBjb250cm9sIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIGJpdCBjb21iaW5hdGlvbiBpbiB0aGUgQzEgc2V0Ci0jICAgICAgICBvZiBjb250cm9scyBpbiBhbiA4LWJpdCBjaGFyYWN0ZXIgc2V0Ci0jCi0jIEMwICAgICB0aGUgZmFtaWxpYXIgc2V0IG9mIDctYml0IEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVycwotIwotIyBDMSAgICAgcm91Z2hseSwgdGhlIHNldCBvZiBjb250cm9sIGNoYXJzIGF2YWlsYWJsZSBvbmx5IGluIDgtYml0IHN5c3RlbXMuCi0jICAgICAgICBUaGlzIGlzIHRvbyBjb21wbGljYXRlZCB0byBleHBsYWluIGZ1bGx5IGhlcmUsIHNvIHJlYWQgSmltIEZsZW1pbmcncwotIyAgICAgICAgYXJ0aWNsZSBpbiB0aGUgRmVicnVhcnkgMTk4MyBCWVRFLCBlc3BlY2lhbGx5IHBhZ2VzIDIxNCB0aHJvdWdoIDIyNC4KLSMKLSMgRmUgICAgIGlzIGEgRmluYWwgY2hhcmFjdGVyIG9mIGEgMi1jaGFyYWN0ZXIgRXNjYXBlIHNlcXVlbmNlIHRoYXQgaGFzIGFuCi0jICAgICAgICBlcXVpdmFsZW50IHJlcHJlc2VudGF0aW9uIGluIGFuIDgtYml0IGVudmlyb25tZW50IGFzIGEgQ2UtdHlwZQotIyAgICAgICAgKEZlIHJhbmdlcyBmcm9tIDQvMCB0byA1LzE1KQotIwotIyBGcyAgICAgaXMgYSBGaW5hbCBjaGFyYWN0ZXIgb2YgYSAyLWNoYXJhY3RlciBFc2NhcGUgc2VxdWVuY2UgdGhhdCBpcwotIyAgICAgICAgc3RhbmRhcmRpemVkIGludGVybmF0aW9uYWxseSB3aXRoIGlkZW50aWNhbCByZXByZXNlbnRhdGlvbiBpbiA3LWJpdAotIyAgICAgICAgYW5kIDgtYml0IGVudmlyb25tZW50cyBhbmQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnRseQotIyAgICAgICAgZGVzaWduYXRlZCBDMCBhbmQgQzEgY29udHJvbCBzZXRzIChGcyByYW5nZXMgZnJvbSA2LzAgdG8gNy8xNCkKLSMKLSMgSSAgICAgIGlzIGFuIEludGVybWVkaWF0ZSBjaGFyYWN0ZXIgZnJvbSAyLzAgdG8gMi8xNSAoaW5jbHVzaXZlKSBpbiB0aGUKLSMgICAgICAgIEFTQ0lJIHRhYmxlCi0jCi0jIFAgICAgICBpcyBhIHBhcmFtZXRlciBjaGFyYWN0ZXIgZnJvbSAzLzAgdG8gMy8xNSAoaW5jbHVzaXZlKSBpbiB0aGUgQVNDSUkKLSMgICAgICAgIHRhYmxlCi0jCi0jIFBuICAgICBpcyBhIG51bWVyaWMgcGFyYW1ldGVyIGluIGEgY29udHJvbCBzZXF1ZW5jZSwgYSBzdHJpbmcgb2YgemVybyBvcgotIyAgICAgICAgbW9yZSBjaGFyYWN0ZXJzIHJhbmdpbmcgZnJvbSAzLzAgdG8gMy85IGluIHRoZSBBU0NJSSB0YWJsZQotIwotIyBQcyAgICAgaXMgYSB2YXJpYWJsZSBudW1iZXIgb2Ygc2VsZWN0aXZlIHBhcmFtZXRlcnMgaW4gYSBjb250cm9sIHNlcXVlbmNlCi0jICAgICAgICB3aXRoIGVhY2ggc2VsZWN0aXZlIHBhcmFtZXRlciBzZXBhcmF0ZWQgZnJvbSB0aGUgb3RoZXIgYnkgdGhlIGNvZGUKLSMgICAgICAgIDMvMTEgKHdoaWNoIHVzdWFsbHkgcmVwcmVzZW50cyBhIHNlbWljb2xvbik7IFBzIHJhbmdlcyBmcm9tCi0jICAgICAgICAzLzAgdG8gMy85IGFuZCBpbmNsdWRlcyAzLzExCi0jCi0jICogICAgICBOb3QgcmVsZXZhbnQgdG8gdGVybWluYWwgY29udHJvbCwgbGlzdGVkIGZvciBjb21wbGV0ZW5lc3Mgb25seS4KLSMKLSMgRm9ybWF0IEVmZmVjdG9ycyB2ZXJzdXMgRWRpdG9yIEZ1bmN0aW9ucwotIwotIyBBIGZvcm1hdCBlZmZlY3RvciBzcGVjaWZpZXMgaG93IGZvbGxvd2luZyBvdXRwdXQgaXMgdG8gYmUgZGlzcGxheWVkLgotIyBBbiBlZGl0b3IgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBtb2RpZnkgdGhlIGRpc3BsYXkuICBJbmZvcm1hbGx5Ci0jIGZvcm1hdCBlZmZlY3RvcnMgbWF5IGJlIGRlc3RydWN0aXZlOyBmb3JtYXQgZWZmZWN0b3JzIHNob3VsZCBub3QgYmUuCi0jCi0jIEZvciBpbnN0YW5jZSwgYSBmb3JtYXQgZWZmZWN0b3IgdGhhdCBtb3ZlcyB0aGUgImFjdGl2ZSBwb3NpdGlvbiIgKHRoZQotIyBjdXJzb3Igb3IgZXF1aXZhbGVudCkgb25lIHNwYWNlIHRvIHRoZSBsZWZ0IHdvdWxkIGJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvCi0jIGNyZWF0ZSBhbiBvdmVyc3RyaWtlLCBhIGNvbXBvdW5kIGNoYXJhY3RlciBtYWRlIG9mIHR3byBzdGFuZGFyZCBjaGFyYWN0ZXJzCi0jIG92ZXJsYWlkLiBDb250cm9sLUgsIHRoZSBCYWNrc3BhY2UgY2hhcmFjdGVyLCBpcyBhY3R1YWxseSBzdXBwb3NlZCB0byBiZSBhCi0jIGZvcm1hdCBlZmZlY3Rvciwgc28geW91IGNhbiBkbyB0aGlzLiBCdXQgbWFueSBzeXN0ZW1zIHVzZSBpdCBpbiBhCi0jIG5vbnN0YW5kYXJkIGZhc2hpb24sIGFzIGFuIGVkaXRvciBmdW5jdGlvbiwgZGVsZXRpbmcgdGhlIGNoYXJhY3RlciB0byB0aGUKLSMgbGVmdCBvZiB0aGUgY3Vyc29yIGFuZCBtb3ZpbmcgdGhlIGN1cnNvciBsZWZ0LiBXaGVuIENvbnRyb2wtSCBpcyBhc3N1bWVkIHRvCi0jIGJlIGFuIGVkaXRvciBmdW5jdGlvbiwgeW91IGNhbm5vdCBwcmVkaWN0IHdoZXRoZXIgaXRzIHVzZSB3aWxsIGNyZWF0ZSBhbgotIyBvdmVyc3RyaWtlIHVubGVzcyB5b3UgYWxzbyBrbm93IHdoZXRoZXIgdGhlIG91dHB1dCBkZXZpY2UgaXMgaW4gYW4gImluc2VydAotIyBtb2RlIiBvciBhbiAib3ZlcndyaXRlIG1vZGUiLiBXaGVuIENvbnRyb2wtSCBpcyB1c2VkIGFzIGEgZm9ybWF0IGVmZmVjdG9yLAotIyBpdHMgZWZmZWN0IGNhbiBhbHdheXMgYmUgcHJlZGljdGVkLiBUaGUgZmFtaWxpYXIgY2hhcmFjdGVycyBjYXJyaWFnZQotIyByZXR1cm4sIGxpbmVmZWVkLCBmb3JtZmVlZCwgZXRjLiwgYXJlIGRlZmluZWQgYXMgZm9ybWF0IGVmZmVjdG9ycy4KLSMKLSMgTk9URVMgT04gVEhFIERFQyBWVDEwMCBJTVBMRU1FTlRBVElPTgotIwotIyBDb250cm9sIHNlcXVlbmNlcyBpbXBsZW1lbnRlZCBpbiB0aGUgVlQxMDAgYXJlIGFzIGZvbGxvd3M6Ci0jCi0jICAgICAgQ1BSLCBDVUIsIENVRCwgQ1VGLCBDVVAsIENVVSwgREEsIERTUiwgRUQsIEVMLCBIVFMsIEhWUCwgSU5ELAotIyAgICAgIExOTSwgTkVMLCBSSSwgUklTLCBSTSwgU0dSLCBTTSwgVEJDCi0jCi0jIHBsdXMgc2V2ZXJhbCBwcml2YXRlIERFQyBjb21tYW5kcy4KLSMKLSMgRXJhc2luZyBwYXJ0cyBvZiB0aGUgZGlzcGxheSAoRUwgYW5kIEVEKSBpbiB0aGUgVlQxMDAgaXMgcGVyZm9ybWVkIHRodXM6Ci0jCi0jICAgICAgRXJhc2UgZnJvbSBjdXJzb3IgdG8gZW5kIG9mIGxpbmUgICAgICAgICAgIEVzYyBbIDAgSyAgICBvciBFc2MgWyBLCi0jICAgICAgRXJhc2UgZnJvbSBiZWdpbm5pbmcgb2YgbGluZSB0byBjdXJzb3IgICAgIEVzYyBbIDEgSwotIyAgICAgIEVyYXNlIGxpbmUgY29udGFpbmluZyBjdXJzb3IgICAgICAgICAgICAgICBFc2MgWyAyIEsKLSMgICAgICBFcmFzZSBmcm9tIGN1cnNvciB0byBlbmQgb2Ygc2NyZWVuICAgICAgICAgRXNjIFsgMCBKICAgIG9yIEVzYyBbIEoKLSMgICAgICBFcmFzZSBmcm9tIGJlZ2lubmluZyBvZiBzY3JlZW4gdG8gY3Vyc29yICAgRXNjIFsgMSBKCi0jICAgICAgRXJhc2UgZW50aXJlIHNjcmVlbiAgICAgICAgICAgICAgICAgICAgICAgIEVzYyBbIDIgSgotIwotIyBTb21lIGJyYWluLWRhbWFnZWQgdGVybWluYWwvZW11bGF0b3JzIHJlc3BvbmQgdG8gRXNjIFsgSiBhcyBpZiBpdCB3ZXJlCi0jIEVzYyBbIDIgSiwgYnV0IHRoaXMgaXMgd3Jvbmc7IHRoZSBkZWZhdWx0IGlzIDAuCi0jCi0jIFRoZSBWVDEwMCByZXNwb25kcyB0byByZWNlaXZpbmcgdGhlIERBIChEZXZpY2UgQXR0cmlidXRlcykgY29udHJvbAotIwotIyAgICAgIEVzYyBbIGMgICAgKG9yIEVzYyBbIDAgYykKLSMKLSMgYnkgdHJhbnNtaXR0aW5nIHRoZSBzZXF1ZW5jZQotIwotIyAgICAgIEVzYyBbID8gbCA7IFBzIGMKLSMKLSMgd2hlcmUgUHMgaXMgYSBjaGFyYWN0ZXIgdGhhdCBkZXNjcmliZXMgaW5zdGFsbGVkIG9wdGlvbnMuCi0jCi0jIFRoZSBWVDEwMCdzIGN1cnNvciBsb2NhdGlvbiBjYW4gYmUgcmVhZCB3aXRoIHRoZSBEU1IgKERldmljZSBTdGF0dXMKLSMgUmVwb3J0KSBjb250cm9sCi0jCi0jICAgICAgRXNjIFsgNiBuCi0jCi0jIFRoZSBWVDEwMCByZXBvcnRzIGJ5IHRyYW5zbWl0dGluZyB0aGUgQ1BSIHNlcXVlbmNlCi0jCi0jICAgICAgRXNjIFsgUGwgOyBQYyBSCi0jCi0jIHdoZXJlIFBsIGlzIHRoZSBsaW5lIG51bWJlciBhbmQgUGMgaXMgdGhlIGNvbHVtbiBudW1iZXIgKGluIGRlY2ltYWwpLgotIwotIyBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIERFQyBWVDEwMCBpcyBkb2N1bWVudCBFSy1WVDEwMC1VRy0wMDMuCi0KLSMjIyMgQU5TSS5TWVMKLSMKLSMgSGVyZSBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjb2xvciBhbmQgYXR0cmlidXRlIGNvbnRyb2xzIHN1cHBvcnRlZCBpbiB0aGUKLSMgdGhlIEFOU0kuU1lTIGRyaXZlciB1bmRlciBNUy1ET1MuICBNb3N0IGNvbnNvbGUgZHJpdmVycyBhbmQgQU5TSQotIyB0ZXJtaW5hbCBlbXVsYXRvcnMgZm9yIEludGVsIGJveGVzIG9iZXkgdGhlc2UuICBUaGV5IGFyZSBhIHByb3BlciBzdWJzZXQKLSMgb2YgdGhlIEVDTUEtNDggZXNjYXBlcy4KLSMKLSMgMAlhbGwgYXR0cmlidXRlcyBvZmYKLSMgMQlmb3JlZ3JvdW5kIGJyaWdodAotIyA0CXVuZGVyc2NvcmUgb24KLSMgNQlibGluayBvbi9iYWNrZ3JvdW5kIGJyaWdodCAobm90IHJlbGlhYmxlIHdpdGggYnJvd24pCi0jIDcJcmV2ZXJzZS12aWRlbwotIyA4CXNldCBibGFuayAobm9uLWRpc3BsYXkpCi0jIDEwCXNldCBwcmltYXJ5IGZvbnQKLSMgMTEJc2V0IGZpcnN0IGFsdGVybmF0ZSBmb250IChvbiBQQ3MsIGRpc3BsYXkgUk9NIGNoYXJhY3RlcnMgMS0zMSkKLSMgMTIJc2V0IHNlY29uZCBhbHRlcm5hdGUgZm9udCAob24gUENzLCBkaXNwbGF5IElCTSBoaWdoLWhhbGYgY2hhcnMpCi0jCi0jCQkJQ29sb3IgYXR0cmlidXRlIHNldHMKLSMgM24Jc2V0IGZvcmVncm91bmQgY29sb3IgICAgICAgLyAwPWJsYWNrLCAxPXJlZCwgICAgIDI9Z3JlZW4sIDM9YnJvd24sCi0jIDRuCXNldCBiYWNrZ3JvdW5kIGNvbG9yICAgICAgIFwgND1ibHVlLCAgNT1tYWdlbnRhLCA2PWN5YW4sICA3PXdoaXRlCi0jIEJyaWdodCBibGFjayBiZWNvbWVzIGdyYXkuICBCcmlnaHQgYnJvd24gYmVjb21lcyB5ZWxsb3csCi0jIFRoZXNlIGNvaW5jaWRlIHdpdGggdGhlIHByZXNjcmlwdGlvbnMgb2YgdGhlIElTTyA2NDI5L0VDTUEtNDggc3RhbmRhcmQuCi0jCi0jICogSWYgdGhlIDUgYXR0cmlidXRlIGlzIG9uIGFuZCB5b3Ugc2V0IGEgYmFja2dyb3VuZCBjb2xvciAoNDAtNDcpIGl0IGlzCi0jICAgc3VwcG9zZWQgdG8gZW5hYmxlIGJyaWdodCBiYWNrZ3JvdW5kLgotIwotIyAqIE1hbnkgVkdBIGNhcmRzIChzdWNoIGFzIHRoZSBQYXJhZGlzZSBhbmQgY29tcGF0aWJsZXMpIGRvIHRoZSB3cm9uZyB0aGluZwotIyAgIHdoZW4geW91IHRyeSB0byBzZXQgYSAiYnJpZ2h0IGJyb3duIiAoeWVsbG93KSBiYWNrZ3JvdW5kIHdpdGggYXR0cmlidXRlCi0jICAgNSAoeW91IGdldCBhIGJsaW5raW5nIHllbGxvdyBmb3JlZ3JvdW5kIGluc3RlYWQpLiAgQSBmZXcgZGlzcGxheXMKLSMgICAoaW5jbHVkaW5nIHRoZSBTeXN0ZW0gViBjb25zb2xlKSBzdXBwb3J0IGFuIGF0dHJpYnV0ZSA2IHRoYXQgdW5kb2VzIHRoaXMKLSMgICBicmFpbmRhbWFnZSAodGhpcyBpcyByZXF1aXJlZCBieSBpQkNTMikuCi0jCi0jICogU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBBTlNJLlNZUyBoYXZlIGEgYnVnIHRoYXQgY2F1c2VzIHRoZW1zIHRvIHJlcXVpcmUKLSMgICBFU0MgWyBQbiBrIGFzIEVMIHJhdGhlciB0aGFuIHRoZSBBTlNJIEVTQyBbIFBuIEsuICAoVGhpcyBpcyBub3QgRUNNQS00OAotIyAgIGNvbXBhdGlibGUuKQotCi0jIyMjIEludGVsIEJpbmFyeSBDb21wYXRpYmlsaXR5IFN0YW5kYXJkCi0jCi0jIEZvciBjb21wYXJpc29uLCBoZXJlIGFyZSB0aGUgY2FwYWJpbGl0aWVzIGltcGxpZWQgYnkgdGhlIEludGVsIEJpbmFyeQotIyBDb21wYXRpYmlsaXR5IFN0YW5kYXJkIGZvciBVTklYIHN5c3RlbXMgKEludGVsIG9yZGVyIG51bWJlciA0NjgzNjYtMDAxKS4KLSMgVGhlc2UgcmVjb21tZW5kYXRpb25zIGFyZSBvcHRpb25hbC4gIElCQ1MyIGFsbG93cyB0aGUgbGVhZGluZyBlc2NhcGUgdG8KLSMgYmUgZWl0aGVyIHRoZSA3LWJpdCBcRVsgb3IgOC1iaXQgXDAyMzMgaW50cm9kdWNlciwgaW4gYWNjb3JkYW5jZSB3aXRoCi0jIHRoZSBBTlNJIFguMzY0L0lTTyA2NDI5L0VDTUEtNDggc3RhbmRhcmQuICBIZXJlIGFyZSB0aGUgaUJDUzIgY2FwYWJpbGl0aWVzCi0jIChhcyBkZXNjcmliZWQgaW4gZmlndXJlIDktMyBvZiB0aGUgc3RhbmRhcmQpLiAgVGhvc2UgZXhwcmVzc2VkIGluIHRoZSBpYmNzMgotIyB0ZXJtaW5mbyBlbnRyeSBhcmUgZm9sbG93ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBjYXBhYmlsaXR5IGluIHBhcmVuczoKLSMKLSMJQ1NJIDxuPmsJCWRpc2FibGUgKG49MCkgb3IgZW5hYmxlIChuPTEpIGtleWNsaWNrCi0jCUNTSSAyaCAgIAkJbG9jayBrZXlib2FyZAotIwlDU0kgMmkgIAkJc2VuZCBzY3JlZW4gYXMgaW5wdXQKLSMJQ1NJIDJsICAJCXVubG9jayBrZXlib2FyZAotIwlDU0kgNm0gIAkJZW5hYmxlIGJhY2tncm91bmQgY29sb3IgaW50ZW5zaXR5Ci0jCUNTSSA8MC0yPmMJCXJlc2VydmVkCi0jCUNTSSA8MC01OT5tCQlzZWxlY3QgZ3JhcGhpYyByZW5kaXRpb24KLSMJQ1NJIDxuPjs8bT5ICShjdXApCWN1cnNvciB0byBsaW5lIG4gYW5kIGNvbHVtbiBtCi0jCUNTSSA8bj47PG0+ZgkJY3Vyc29yIHRvIGxpbmUgbiBhbmQgY29sdW1uIG0KLSMJQ1NJIDxuPkAJKGljaCkJaW5zZXJ0IGNoYXJhY3RlcnMKLSMJQ1NJIDxuPkEJKGN1dSkJY3Vyc29yIHVwIG4gbGluZXMKLSMJQ1NJIDxuPkIJKGN1ZCkJY3Vyc29yIGRvd24gbiBsaW5lcwotIwlDU0kgPG4+QwkoY3V1KQljdXJzb3IgcmlnaHQgbiBjaGFyYWN0ZXJzCi0jCUNTSSA8bj5ECShjdWQpCWN1cnNvciBsZWZ0IG4gY2hhcmFjdGVycwotIwlDU0kgPG4+RQkJY3Vyc29yIGRvd24gbiBsaW5lcyBhbmQgaW4gZmlyc3QgY29sdW1uCi0jCUNTSSA8bj5GCQljdXJzb3IgdXAgbiBsaW5lcyBhbmQgaW4gZmlyc3QgY29sdW1uCi0jCUNTSSA8bj5HCShocGEpCXBvc2l0aW9uIGN1cnNvciBhdCBjb2x1bW4gbi0xCi0jCUNTSSA8bj5KCShlZCkJZXJhc2UgaW4gZGlzcGxheQotIwlDU0kgPG4+SwkoZWwpCWVyYXNlIGluIGxpbmUKLSMJQ1NJIDxuPkwJKGlsKQlpbnNlcnQgbGluZShzKQotIwlDU0kgPG4+UAkoZGNoKQlkZWxldGUgY2hhcmFjdGVycwotIwlDU0kgPG4+UwkoaW5kbikJc2Nyb2xsIHVwIG4gbGluZXMKLSMJQ1NJIDxuPlQJKHJpbikJc2Nyb2xsIGRvd24gbiBsaW5lcwotIwlDU0kgPG4+WAkoZWNoKQllcmFzZSBjaGFyYWN0ZXJzCi0jCUNTSSA8bj5aCShjYnQpCWJhY2sgdXAgbiB0YWIgc3RvcHMKLSMJQ1NJIDxuPmAJCWN1cnNvciB0byBjb2x1bW4gbiBvbiBsaW5lCi0jCUNTSSA8bj5hCShjdXUpCWN1cnNvciByaWdodCBuIGNoYXJhY3RlcnMKLSMJQ1NJIDxuPmQJKHZwYSkJY3Vyc29yIHRvIGxpbmUgbgotIwlDU0kgPG4+ZQkJY3Vyc29yIGRvd24gbiBsaW5lcyBhbmQgaW4gZmlyc3QgY29sdW1uCi0jCUNTSSA8bj5nCShjYnQpCWNsZWFyIGFsbCB0YWJzCi0jCUNTSSA8bj56CQltYWtlIHZpcnR1YWwgdGVybWluYWwgbiBhY3RpdmUKLSMJQ1NJID83aCAJKHNtYW0pCXR1cm4gYXV0b21hcmdpbiBvbgotIwlDU0kgPzdsIAkocm1hbSkJdHVybiBhdXRvbWFyZ2luIG9mZgotIwlDU0kgcyAgICAgCQlzYXZlIGN1cnNvciBwb3NpdGlvbgotIwlDU0kgdSAgIAkJcmVzdG9yZSBjdXJzb3IgcG9zaXRpb24gdG8gc2F2ZWQgdmFsdWUKLSMJQ1NJID08Yz5BCQlzZXQgb3ZlcnNjYW4gY29sb3IKLSMJQ1NJID08Yz5GCQlzZXQgbm9ybWFsIGZvcmVncm91bmQgY29sb3IKLSMJQ1NJID08Yz5HCQlzZXQgbm9ybWFsIGJhY2tncm91bmQgY29sb3IKLSMJQ1NJID08Yz5ICQlzZXQgcmV2ZXJzZSBmb3JlZ3JvdW5kIGNvbG9yCi0jCUNTSSA9PGM+SQkJc2V0IHJldmVyc2UgZm9yZWdyb3VuZCBjb2xvcgotIwlDU0kgPTxjPkoJCXNldCBncmFwaGljIGZvcmVncm91bmQgY29sb3IKLSMJQ1NJID08Yz5LCQlzZXQgZ3JhcGhpYyBmb3JlZ3JvdW5kIGNvbG9yCi0jCUNTSSA9PG4+ZwkoZGlzcGMpIGRpc3BsYXkgbiBmcm9tIGFsdGVybmF0ZSBncmFwaGljcyBjaGFyYWN0ZXIgc2V0Ci0jCUNTSSA9PHA+OzxkPkIJCXNldCBiZWxsIHBhcmFtZXRlcnMKLSMJQ1NJID08cz47PGU+QwkJc2V0IGN1cnNvciBwYXJhbWV0ZXJzCi0jCUNTSSA9PHg+RAkJZW5hYmxlL2Rpc2FibGUgaW50ZW5zaXR5IG9mIGJhY2tncm91bmQgY29sb3IKLSMJQ1NJID08eD5FCQlzZXQvY2xlYXIgYmxpbmsgdnMuIGJvbGQgYmFja2dyb3VuZAotIwlDU0kgNyAgICAgCShzYykJKHNjKSBzYXZlIGN1cnNvciBwb3NpdGlvbgotIwlDU0kgOCAgIAkocmMpCShyYykgcmVzdG9yZSBjdXJzb3IgcG9zaXRpb24gdG8gc2F2ZWQgdmFsdWUKLSMJQ1NJIEgJCShodHMpCShodHMpIHNldCB0YWIgc3RvcAotIwlDU0kgUTxuPjxzdHJpbmc+CWRlZmluZSBmdW5jdGlvbiBrZXkgc3RyaW5nCi0jCQkJCShzdHJpbmcgbXVzdCBiZWdpbiBhbmQgZW5kIHdpdGggZGVsaW1pdGVyIGNoYXIpCi0jCUNTSSBjICAgCShjbGVhcikgY2xlYXIgc2NyZWVuCi0jCi0jIFRoZSBsYWNrIG9mIGFueSBzcGVjaWZpY2F0aW9uIGZvciBhdHRyaWJ1dGVzIGluIFNHUiAoYW1vbmcgb3RoZXIgdGhpbmdzKQotIyBtYWtlcyB0aGlzIGEgd3JldGNoZWRseSB3ZWFrIHN0YW5kYXJkLiBUaGUgdGFibGUgYWJvdmUgaXMgbGl0ZXJhbGx5Ci0jIGV2ZXJ5dGhpbmcgaUJTQzIgaGFzIHRvIHNheSBhYm91dCB0ZXJtaW5hbCBlc2NhcGUgc2VxdWVuY2VzOyB0aGVyZSBpcwotIyBubyBmdXJ0aGVyIGRpc2N1c3Npb24gb2YgdGhlaXIgbWVhbmluZyBvciBob3cgdG8gc2V0IHRoZSBwYXJhbWV0ZXJzCi0jIGluIHRoZXNlIHNlcXVlbmNlcyBhdCBhbGwuCi0jCi0KLSMjIyMjIyMjIE5PTlNUQU5EQVJEIENBUEFCSUxJVFkgVFJBTlNMQVRJT05TIFVTRUQgSU4gVEhJUyBGSUxFCi0jCi0jIFRoZSBoaXN0b3JpY2FsIHRlcm1jYXAgZmlsZSBlbnRyaWVzIHdlcmUgd3JpdHRlbiBwcmltYXJpbHkgaW4gNC40QlNEIHRlcm1jYXAuCi0jIFRoZSA0LjRCU0QgdGVybWNhcCBzZXQgd2FzIHN1YnN0YW50aWFsbHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIDQuMUJTRCBzZXQsCi0jIHdpdGggdGhlIGV4dGVuc2lvbiBuYW1lcyBjaG9zZW4gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgdGVybWNhcCBuYW1lcwotIyBhc3NpZ25lZCBpbiBTeXN0ZW0gViB0ZXJtaW5mby4gIFRoZXJlIGFyZSBzb21lIHZhcmlhbnQgZXh0ZW5zaW9uIHNldHMgb3V0Ci0jIHRoZXJlLiAgV2UgdHJ5IHRvIGRlc2NyaWJlIHRoZW0gaGVyZS4KLSMKLSMgWEVOSVggZXh0ZW5zaW9uczoKLSMKLSMgVGhlIFhFTklYIGV4dGVuc2lvbnMgaW5jbHVkZSBhIHNldCBvZiBmdW5jdGlvbi1rZXkgY2FwYWJpbGl0aWVzIGFzIGZvbGxvd3M6Ci0jCi0jICAgICAgIGNvZGUJWEVOSVggdmFyaWFibGUgbmFtZQl0ZXJtaW5mbyBuYW1lCW5hbWUgY2xhc2hlcz8KLSMJLS0tLQktLS0tLS0tLS0tLS0tLS0tLS0tCS0tLS0tLS0tLS0tLS0JLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMJQ0wJa2V5X2NoYXJfbGVmdAotIwlDUglrZXlfY2hhcl9yaWdodAotIwlDVwlrZXlfY2hhbmdlX3dpbmRvdwkJCWNyZWF0ZV93aW5kb3cKLSMJRU4Ja2V5X2VuZCAgICAgICAgICAJa2VuZAotIwlITQlrZXlfaG9tZQkJa2hvbWUKLSMJSFAJPz8KLSMJTEQJa2V5X2RlbGV0ZV9saW5lICAJa2RsMQotIwlMRglrZXlfbGluZWZlZWQgICAgIAkJCWxhYmVsX29mZgotIwlOVQlrZXlfbmV4dF91bmxvY2tlZF9jZWxsCi0jCVBECWtleV9wYWdlX2Rvd24gICAJa25wCi0jCVBMCT8/Ci0jCVBOCXN0YXJ0X3ByaW50CQltYzUKLSMJUFIJPz8KLSMJUFMJc3RvcF9wcmludAkJbWM0Ci0jCVBVCWtleV9wYWdlX3VwICAgICAJa3BwCQlwdWxzZQotIwlSQwlrZXlfcmVjYWxjCQkJCXJlbW92ZV9jbG9jawotIwlSRglrZXlfdG9nZ2xlX3JlZgkJCQlyZXFfZm9yX2lucHV0Ci0jCVJUCWtleV9yZXR1cm4gICAgICAJa2VudAotIwlVUAlrZXlfdXBfYXJyb3cgICAgICAgICAgIAlrY3V1MSAgIAlwYXJtX3VwX2N1cnNvcgotIwlXTAlrZXlfd29yZF9sZWZ0Ci0jCVdSCWtleV93b3JkX3JpZ2h0Ci0jCi0jIFRoZSBYRU5JWCBleHRlbnNpb25zIGFsc28gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGNoYXJhY3Rlci1zZXQgYW5kIGhpZ2hsaWdodAotIyBjYXBhYmlsaXRpZXM6Ci0jCi0jCVhFTklYCXRlcm1pbmZvCWZ1bmN0aW9uCi0jCS0tLS0tCS0tLS0tLS0tCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwlHUwlzbWFjcwkJc3RhcnQgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQKLSMJR0UJcm1hY3MJCWVuZCBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldAotIwlHRwkJCTphczovOmFlOiBnbGl0Y2ggKGFuYWxvZ291cyB0byA6c2c6Lzp1ZzopCi0jCWJvCWJsaW5rCQliZWdpbiBibGluayAobm90IHVzZWQgaW4gL2V0Yy90ZXJtY2FwKQotIwliZQkJCWVuZCBibGluayAobm90IHVzZWQgaW4gL2V0Yy90ZXJtY2FwKQotIwliYgkJCWJsaW5rIGdsaXRjaCAgKG5vdCB1c2VkIGluIC9ldGMvdGVybWNhcCkKLSMJaXQJZGltCQliZWdpbiBkaW0gKG5vdCB1c2VkIGluIC9ldGMvdGVybWNhcCkKLSMJaWUJCQllbmQgZGltIChub3QgdXNlZCBpbiAvZXRjL3Rlcm1jYXApCi0jCWlnCQkJZGltIGdsaXRjaCAgKG5vdCB1c2VkIGluIC9ldGMvdGVybWNhcCkKLSMKLSMgRmluYWxseSwgWEVOSVggYWxzbyB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXMtZHJhd2luZyBjYXBhYmlsaXRpZXM6Ci0jCi0jCXNpbmdsZQlkb3VibGUgIHR5cGUgICAgICAgICAgICAgQVNDSUkgYXBwcm94aW1hdGlvbgotIwktLS0tLS0JLS0tLS0tCS0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLQotIwlHVglHdgl2ZXJ0aWNhbCBsaW5lICAgICAgICAgICAgIHwKLSMJR0gJR3YJaG9yaXpvbnRhbCBsaW5lICAgICAgIC0gICBfCi0jCUcxCUc1CXRvcCByaWdodCBjb3JuZXIgICAgICAgXyAgIHwKLSMJRzIJRzYJdG9wIGxlZnQgY29ybmVyICAgICAgIHwKLSMJRzMJRzcJYm90dG9tIGxlZnQgY29ybmVyICAgICAgICAgfF8KLSMJRzQJRzgJYm90dG9tIHJpZ2h0IGNvcm5lciAgIF98Ci0jCUdECUdkCWRvd24tdGljayBjaGFyYWN0ZXIgICAgICAgIFQKLSMJR0wJR2wJbGVmdC10aWNrIGNoYXJhY3RlciAgIC18Ci0jCUdSCUdyCXJpZ2h0LXRpY2sgY2hhcmFjdGVyICAgICAgIHwtCi0jCUdDCUdjCW1pZGRsZSBpbnRlcnNlY3Rpb24gICAtfC0KLSMJR1UJR3UJdXAtdGljayBjaGFyYWN0ZXIgICAgICAgICAgX3xfCi0jCi0jIFRoZXNlIHdlcmUgaW52ZW50ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIElCTSBQQyBST00gY2hhcmFjdGVyIHNldC4gIE9uZQotIyBjYW4gY29tcG9zZSBhbiBhY3NjIHN0cmluZyBmcm9tIHRoZSBzaW5nbGUtd2lkdGggY2hhcmFjdGVycyBhcyBmb2xsb3dzCi0jCSJqe0c0fWt7RzF9bHtHMn1te0czfXF7R0h9eHtHVn10e0dSfXV7R0x9dntHVX13e0dEfW57R0N9IgotIyBXaGVuIHRyYW5zbGF0aW5nIGEgdGVybWNhcCBmaWxlLCBuY3Vyc2VzIHRpYyB3aWxsIGRvIHRoaXMgYXV0b21hdGljYWxseS4KLSMgVGhlIGRvdWJsZSBmb3JtcyBjaGFyYWN0ZXJzIGRvbid0IGZpdCB0aGUgU1ZyNCB0ZXJtaW5mbyBtb2RlbC4KLSMKLSMgQVQmVCBFeHRlbnNpb25zOgotIwotIyBUaGUgb2xkIEFUJlQgNTQxMCwgNTQyMCwgNTQyNSwgcGM2MzAwcGx1cywgNjEwLCBhbmQgczQgZW50cmllcyB1c2VkIGEgc2V0IG9mCi0jIG5vbnN0YW5kYXJkIGNhcGFiaWxpdGllcy4gIEl0cyBzaWduYXR1cmUgaXMgdGhlIEtNIGNhcGFiaWxpdHksIHVzZWQgdG8gbmFtZQotIyBzb21lIHNvcnQgb2Yga2V5bWFwIGZpbGUuICBFRSwgQk8sIENJLCBDViwgWFMsIERTLCBGTCBhbmQgRkUgYXJlIGluIHRoaXMKLSMgc2V0LiAgQ29tbWVudHMgaW4gdGhlIG9yaWdpbmFsLCBhbmQgYSBsaXR0bGUgY3Jvc3MtY2hlY2tpbmcgd2l0aCBvdGhlciBBVCZUCi0jIGRvY3VtZW50YXRpb24sIHNlZW0gdG8gZXN0YWJsaXNoIHRoYXQgQk89Om1yOiAoc3RhcnQgcmV2ZXJzZSB2aWRlbyksIERTPTptaDoKLSMgKHN0YXJ0IGRpbSksIFhTPTptazogKHNlY3VyZS9pbnZpc2libGUgbW9kZSksIEVFPTptZTogKGVuZCBoaWdobGlnaHRzKSwKLSMgRkw9OkxPOiAoZW5hYmxlIHNvZnQgbGFiZWxzKSwgRkU9OkxGOiAoZGlzYWJsZSBzb2Z0IGxhYmVscyksIENJPTp2aTogKG1ha2UKLSMgY3Vyc29yIGludmlzaWJsZSksIGFuZCBDVj06dmU6IChtYWtlIGN1cnNvciBub3JtYWwpLgotIwotIyBIUCBFeHRlbnNpb25zCi0jCi0jIFRoZSBIUCBsaWJyYXJ5IChhcyBvZiBtaWQtMTk5NSwgdGhlaXIgdGVybS5oIGZpbGUgdmVyc2lvbiA3MC4xKSBhcHBlYXJzIHRvCi0jIGhhdmUgdGhlIFN5c3RlbSBWIGNhcGFiaWxpdGllcyB1cCB0byBTVnIxIGxldmVsLiAgQWZ0ZXIgdGhhdCwgaXQgc3VwcG9ydHMKLSMgdHdvIG5vbnN0YW5kYXJkIGNhcHMgbWVtbCBhbmQgbWVtdSBjb3JyZXNwb25kaW5nIHRvIHRoZSBvbGQgdGVybWNhcCA6bWw6LAotIyA6bXU6IGNhcGFiaWxpdGllcy4gIEFmdGVyIHRoYXQsIGl0IHN1cHBvcnRzIGNhcHMgcGxhYl9ub3JtLCBsYWJlbF9vbiwKLSMgbGFiZWxfb2ZmLCBhbmQga2V5X2YxMS4ua2V5X2Y2MyBjYXBhYmlsaXRpZXMgbGlrZSBTVnI0J3MuICBUaGlzIG1ha2VzIHRoZQotIyBIUCBiaW5hcnkgZm9ybWF0IGluY29tcGF0aWJsZSB3aXRoIFNWcjQncy4KLSMKLSMgSUJNIEV4dGVuc2lvbnMKLSMKLSMgVGhlcmUgaXMgYSBzZXQgb2Ygbm9uc3RhbmRhcmQgdGVybWluZm9zIHVzZWQgYnkgSUJNJ3MgQUlYIG9wZXJhdGluZyBzeXN0ZW0uCi0jIFRoZSBBSVggdGVybWluZm8gbGlicmFyeSBkaXZlcmdlZCBmcm9tIFNWcjEgdGVybWluZm8sIGFuZCByZXBsYWNlcyBhbGwKLSMgY2FwYWJpbGl0aWVzIGZvbGxvd2luZyBwcnRyX25vbiB3aXRoIHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBjYXBhYmlsdGllczoKLSMgYm94WzEyXSwgYmF0dFsxMl0sIGNvbGJbMDEyMzQ1Njc4OV0sIGNvbGZbMDEyMzQ1Njc4OV0sIGZbMDEyMzQ1NjddLCBrYnRhYiwKLSMga2RvLCBrY21kLCBrY3BuLCBrZW5kLCBraGxwLCBrbmwsIGtucG4sIGtwcG4sIGtwcG4sIGtxdWl0LCBrc2VsLCBrc2NsLCBrc2NyLAotIyBrdGFiLCBrbXBmWzEyMzQ1Njc4OV0sIGFwc3RyLCBrc2YxLi5rc2YxMCwga2YxMS4uLmtmNjMsIGthY3QsIHRvcGwsIGJ0bWwsCi0jIHJ2ZXJ0LCBsdmVydC4gICBTb21lIG9mIHRoZXNlIGFyZSBpZGVudGljYWwgdG8gWFBHNC9TVnI0IGVxdWl2YWxlbnRzOgotIyBrY21kLCBrZW5kLCBraGxwLCBhbmQga2YxMS4uLmtmNjMuICBUd28gb3RoZXJzIChrYnRhYiBhbmQga3NlbCkgY2FuIGJlCi0jIHJlbmFtZWQgKHRvIGtjYnQgYW5kIGtzbHQpLiAgVGhlIHBsYWNlcyBpbiB0aGUgYm94WzEyXSBjYXBhYmlsaXRpZXMKLSMgY29ycmVzcG9uZCB0byBhY3NjIGNoYXJzLCBoZXJlIGlzIHRoZSBtYXBwaW5nOgotIwotIwlib3gxWzBdICA9IEFDU19VTENPUk5FUgotIwlib3gxWzFdICA9IEFDU19ITElORQotIwlib3gxWzJdICA9IEFDU19VUkNPUk5FUgotIwlib3gxWzNdICA9IEFDU19WTElORQotIwlib3gxWzRdICA9IEFDU19MUkNPUk5FUgotIwlib3gxWzVdICA9IEFDU19MTENPUk5FUgotIwlib3gxWzZdICA9IEFDU19UVEVFCi0jCWJveDFbN10gID0gQUNTX1JURUUKLSMJYm94MVs4XSAgPSBBQ1NfQlRFRQotIwlib3gxWzldICA9IEFDU19MVEVFCi0jCWJveDFbMTBdID0gQUNTX1BMVVMKLSMKLSMgVGhlIGJveDIgY2hhcmFjdGVycyBhcmUgdGhlIGRvdWJsZS1saW5lIHZlcnNpb25zIG9mIHRoZXNlIGZvcm1zIGdyYXBoaWNzLgotIyBUaGUgQUlYIGJpbmFyeSB0ZXJtaW5mbyBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggU1ZyNCdzLgotIwotIyBJcmlzIGNvbnNvbGUgZXh0ZW5zaW9uczoKLSMKLSMgSFMgaXMgaGFsZi1pbnRlbnNpdHkgc3RhcnQ7IEhFIGlzIGhhbGYtaW50ZW5zaXR5IGVuZAotIyBDVCBpcyBjb2xvciB0ZXJtaW5hbCB0eXBlIChmb3IgQ3Vyc2VzICYgcm9ndWUpCi0jIENQIGlzIGNvbG9yIGNoYW5nZSBlc2NhcGUgc2VxdWVuY2UKLSMgQ1ogYXJlIGNvbG9yIG5hbWVzIChmb3IgQ3Vyc2VzICYgcm9ndWUpCi0jCi0jIFRoZSBuY3Vyc2VzIHRpYyB1dGlsaXR5IHJlY29nbml6ZXMgSFMgYXMgYW4gYWxpYXMgZm9yIG1oIDxkaW0+LgotIwotIyBUQyBFeHRlbnNpb25zOgotIwotIyBUaGVyZSBpcyBhIHNldCBvZiBleHRlbmRlZCB0ZXJtY2FwcyBhc3NvY2lhdGVkIHdpdGggc29tZXRoaW5nCi0jIGNhbGxlZCB0aGUgIlRlcm1pbmFsIENvbnRyb2wiIG9yIFRDIHBhY2thZ2UgY3JlYXRlZCBieSBNYWluU3RyZWFtIFN5c3RlbXMsCi0jIFdpbmZpZWxkIEthbnNhcy4gIFRoaXMgb25lIGFsc28gdXNlcyBHUy9HRSBmb3IgYXMvYWUsIGFuZCBhbHNvIHVzZXMKLSMgQ0YgZm9yIGNpdmlzIGFuZCBDTyBmb3IgY3Z2aXMuICBGaW5hbGx5LCB0aGV5IGRlZmluZSBhIGJvb2xlYW4gOmN0OgotIyB0aGF0IGZsYWdzIGNvbG9yIHRlcm1pbmFscy4KLSMKLSMjIyMjIyMjIENIQU5HRSBISVNUT1JZCi0jCi0jIFRoZSBsYXN0IC9ldGMvdGVybWNhcCB2ZXJzaW9uIG1haW50YWluZWQgYnkgSm9obiBLdW56ZSB3YXMgOC4zLCBkYXRlZCA4LzUvOTQuCi0jIFJlbGVhc2VzIDkgYW5kIHVwIGFyZSBtYWludGFpbmVkIGJ5IEVyaWMgUy4gUmF5bW9uZCBhcyBwYXJ0IG9mIHRoZSBuY3Vyc2VzCi0jIHByb2plY3QuCi0jCi0jIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24gcHJlc2VudCBpbiBKb2huIEt1bnplJ3MKLSMgbGFzdCB2ZXJzaW9uIG9mIHRoZSB0ZXJtY2FwIG1hc3RlciBmaWxlLCBleGNlcHQgYXMgbm90ZWQgaW4gdGhlIGNoYW5nZQotIyBjb21tZW50cyBhdCBlbmQgb2YgZmlsZS4gIFNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdmVyeSBhbmNpZW50IG9ic29sZXRlCi0jIGNhcGFiaWxpdGllcyBoYXMgYmVlbiBtb3ZlZCB0byBjb21tZW50cy4gIFNvbWUgYWxsLW51bWVyaWMgbmFtZXMgb2Ygb2xkZXIKLSMgdGVybWluYWxzIGhhdmUgYmVlbiByZXRpcmVkLgotIwotIyBJIGNoYW5nZWQgOk1UOiB0byA6a206ICh0aGUgNC40QlNEIG5hbWUpIGV2ZXJ5d2hlcmUuICBJIGNvbW1lbnRlZCBvdXQgc29tZQotIyBjYXBhYmlsaXRpZXMgKEVQLCBkRiwgZFQsIGRWLCBrbiwgbWEsIG1sLCBtdSwgeHIsIHh4KSB0aGF0IGFyZSBubyBsb25nZXIKLSMgdXNlZCBieSBCU0QgY3Vyc2VzLgotIwotIyBUaGUgOS4xLjAgdmVyc2lvbiBvZiB0aGlzIGZpbGUgd2FzIHRyYW5zbGF0ZWQgZnJvbSBteSBsaWdodGx5LWVkaXRlZCBjb3B5IG9mCi0jIDguMywgdGhlbiBtZWNoYW5pY2FsbHkgY2hlY2tlZCBhZ2FpbnN0IDguMyB1c2luZyBFbWFjcyBMaXNwIGNvZGUgd3JpdHRlbiBmb3IKLSMgdGhlIHB1cnBvc2UuICBVbmxlc3MgdGhlIG5jdXJzZXMgdGljIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgTGlzcCBjb2RlIHdlcmUKLSMgbWFraW5nIHBlcmZlY3RseSBzeW5jaHJvbml6ZWQgbWlzdGFrZXMgd2hpY2ggSSB0aGVuIGZhaWxlZCB0byBjYXRjaCBieQotIyBleWViYWxsLCB0aGUgdHJhbnNsYXRpb24gd2FzIGNvcnJlY3QgYW5kIHBlcmZlY3RseSBpbmZvcm1hdGlvbi1wcmVzZXJ2aW5nLgotIwotIyBNYWpvciB2ZXJzaW9uIG51bWJlciBidW1wcyBjb3JyZXNwb25kIHRvIG1ham9yIHZlcnNpb24gY2hhbmdlcyBpbiBuY3Vyc2VzLgotIwotIyBIZXJlIGlzIGEgbG9nIG9mIHRoZSBjaGFuZ2VzIHNpbmNlIHRoZW46Ci0jCi0jIDkuMS4wIChXZWQgRmViICAxIDA0OjUwOjMyIEVTVCAxOTk1KToKLSMJKiBGaXJzdCB0ZXJtaW5mbyBtYXN0ZXIgdHJhbnNsYXRlZCBmcm9tIDguMy4KLSMgOS4yLjAgKFdlZCBGZWIgIDEgMTI6MjE6NDUgRVNUIDE5OTUpOgotIwkqIFJlcGxhY2VkIFd5c2UgZW50cmllcyB3aXRoIHVwZGF0ZWQgZW50cmllcyBzdXBwbGllZCBieSB2ZW5kb3IuCi0jCi0jIDkuMy4wIChNb24gRmViICA2IDE5OjE0OjQwIEVTVCAxOTk1KToKLSMJKiBBZGRlZCBjb250YWN0ICYgc3RhdHVzIGluZm8gZnJvbSBHLiBDbGFyayBCcm93biA8Y2xhcmtAc3NzaS5jb20+LgotIyA5LjMuMSAoVHVlIEZlYiAgNyAxMjowMDoyNCBFU1QgMTk5NSk6Ci0jCSogQmV0dGVyIFhFTklYIGtleWNhcCB0cmFuc2xhdGlvbi4gIERlc2NyaWJlIFRDIHRlcm1jYXBzLgotIwkqIENvbnRhY3QgYW5kIGhpc3RvcnkgaW5mbyBzdXBwbGllZCBieSBRdW1lLgotIyA5LjMuMiAoU2F0IEZlYiAxMSAyMzo0MDowMiBFU1QgMTk5NSk6Ci0jCSogUmFpZGVkIHRoZSBTaHVmb3JkIEZUUCBzaXRlIGZvciByZWNlbnQgdGVybWNhcHMvdGVybWluZm9zLgotIwkqIEFkZGVkIGluZm9ybWF0aW9uIG9uIFgzLjY0IGFuZCBWVDEwMCBzdGFuZGFyZCBlc2NhcGUgc2VxdWVuY2VzLgotIyA5LjMuMyAoTW9uIEZlYiAxMyAxMjoyNjoxNSBFU1QgMTk5NSk6Ci0jCSogQWRkZWQgYSBjb3JyZWN0IFgxMVI2IHh0ZXJtIGVudHJ5LgotIwkqIEZpeGVkIHRlcm1pbmZvIHRyYW5zbGF0aW9ucyBvZiBwYWRkaW5nLgotIyA5LjMuNCAoV2VkIEZlYiAyMiAxOToyNzozNCBFU1QgMTk5NSk6Ci0jCSogQWRkZWQgY29ycmVjdCBhY3NjL3NtYWNzL3JtYWNzIHN0cmluZ3MgZm9yIHZ0MTAwIGFuZCB4dGVybS4KLSMJKiBBZGRlZCB1Ni91Ny91OC91OSBjYXBhYmlsaXRpZXMuCi0jCSogQWRkZWQgUENWVCBlbnRyeS4KLSMgOS4zLjUgKFRodSBGZWIgMjMgMDk6Mzc6MTIgRVNUIDE5OTUpOgotIwkqIEVtYWNzIHVzZXMgOnNvOiwgbm90IDptcjosIGZvciBpdHMgbW9kZSBsaW5lLiAgRml4IGxpbnV4IGVudHJ5Ci0jCSAgdG8gdXNlIHJldmVyc2UtdmlkZW8gc3RhbmRvdXQgc28gRW1hY3Mgd2lsbCBsb29rIHJpZ2h0LgotIwkqIEFkZGVkIGVsMSBjYXBhYmlsaXR5IHRvIGFuc2kuCi0jCSogQWRkZWQgc21hY3Mvcm1hY3MgdG8gYW5zaS5zeXMuCi0jCi0jIDkuNC4wIChTYXQgRmViIDI1IDE2OjQzOjI1IEVTVCAxOTk1KToKLSMJKiBOZXcgbXQ3MCBlbnRyeS4KLSMJKiBBZGRlZCBDT1BZUklHSFRTIEFORCBPVEhFUiBERUxVU0lPTlMuCi0jCSogQWRkZWQgQVQmVCAyM3h4ICYgNTAwLzUxMywgdnQyMjAgYW5kIHZ0NDIwLCBvcHVzM24xKywgbmV0cm9uaWNzCi0jCSAgc21hcnR2aWQgJiBzbWFydGVybSwgYW1wZXggMTc1ICYgMjE5ICYgMjMyLAotIwkgIGVudjIzMCwgZmFsY28gdHMxMDAsIGZsdWtlLCBpbnRlcnR1YmUsIHN1cGVyYnJhaW4sIG5jcjc5MDEsIHZpYzIwLAotIwkgIG96emllLCB0cnMyMDAsIHRyNjAwLCBUYW5keSAmIFRleGFzIEluc3RydW1lbnRzIFZEVHMsIGludGV4dDIsCi0jCSAgc2NyZXdwb2ludCwgZnZpZXdwb2ludCwgQ29udGVsIEJ1c2luZXNzIFN5c3RlbXMsIERhdGFtZWRpYSBDb2xvcnNjYW4sCi0jCSAgYWRtMzYsIG1pbWUzMTQsIGVyZ280MDAwLCBjYTIyODUxLiAgUmVwbGFjZWQgYXR0NzMwMCwgZXNwcml0LCBkZDU1MDAuCi0jCSogUmVwbGFjZWQgdGhlIFBlcmtpbi1FbG1lciBlbnRyaWVzIHdpdGggdmVuZG9yJ3Mgb2ZmaWNpYWwgb25lcy4KLSMJKiBSZXN0b3JlZCB0aGUgb2xkIG1pbmltYWwtYW5zaSBlbnRyeSwgbHVuYSBuZWVkcyBpdC4KLSMJKiBGaXhlZCBzb21lIGluY29ycmVjdCBpcCBhbmQgcHJvcG9ydGlvbmFsLXBhZGRpbmcgdHJhbnNsYXRpb25zLgotIyA5LjQuMSAoTW9uIEZlYiAyNyAxNDoxODozMyBFU1QgMTk5NSk6Ci0jCSogRml4IGxpbnV4ICYgQVQzODYgc2dyIHN0cmluZ3MgdG8gZG8gQV9BTFRDSEFSU0VUIHR1cm5vZmYgY29ycmVjdGx5LgotIwkqIE1ha2UgdGhlIHh0ZXJtIGVudHJ5IDY1IGxpbmVzIGFnYWluOyBjcmVhdGUgeHRlcm0yNSBhbmQgeHRlcm0yNAotIwkgIHRvIGZvcmNlIGEgcGFydGljdWxhciBoZWlnaHQuCi0jCSogQWRkZWQgYmVlaGl2ZTQgYW5kIHJlb3JnYW5pemVkIG90aGVyIEhhcnJpcyBlbnRyaWVzLgotIyA5LjQuMiAoVGh1IE1hciAgOSAwMTo0NTo0NCBFU1QgMTk5NSk6Ci0jCSogTWVyZ2VkIGluIERFQydzIG9mZmljaWFsIGVudHJpZXMgZm9yIGl0cyB0ZXJtaW5hbHMuICBUaGUgb25seSBvbGQKLSMJICBlbnRyeSBJIGtlcHQgd2FzIERvdWcgR3d5bidzIGFsdGVybmF0ZSB2dDEwMCAoYXMgdnQxMDAtYXZvKS4KLSMJKiBSZXBsYWNlZCB0aGUgdHJhbnNsYXRlZCBCQk4gQml0Z3JhcGggZW50cmllcyB3aXRoIHB1cnBvc2UtYnVpbHQKLSMJICBvbmVzIGZyb20gQVQmVCdzIFNWcjMuCi0jCSogUmVwbGFjZWQgdGhlIEFUJlQgZW50cmllcyB3aXRoIEFUJlQncyBvZmZpY2lhbCB0ZXJtaW5mb3MuCi0jCSogQWRkZWQgdGVsZXJheSAxNiwgdmM0MTUsIGNvcHMxMC4KLSMJKiBNZXJnZWQgaW4gbWFueSBpbmRpdmlkdWFsIGNhcGFiaWxpdGllcyBmcm9tIFNDTyB0ZXJtaW5mbyBmaWxlcy4KLSMgOS40LjMgKE1vbiBNYXIgMTMgMDI6Mzc6NTMgRVNUIDE5OTUpOgotIwkqIFR5cG8gZml4ZXMuCi0jCSogQ2hhbmdlIGxpbnV4IGVudHJ5IHNvIEFfUFJPVEVDVCBlbmFibGVzIElCTS1QQyBST00gY2hhcmFjdGVycy4KLSMgOS40LjQgKE1vbiBNYXIgMjcgMTI6MzI6MzUgRVNUIDE5OTUpOgotIwkqIEFkZGVkIHR0eTM1LCBBbm4gQXJib3IgR3VydSBzZXJpZXMuIHZpMzAwIGFuZCA1NTAsIGNnNzkwMCwgdHZpODAzLAotIwkgIHB0MjEwLCBpYm0zMTY0LCBJQk0gU3lzdGVtIDEsIGN0cm0sIFR5bXNoYXJlIHNjYW5zZXQsIGR0MjAwLCBhZG0yMSwKLSMJICBzaW10ZXJtLCBjaXRvaCBhbmQgdmFyaWFudHMuCi0jCSogUmVwbGFjZWQgc29sIGVudHJ5IHdpdGggc29sMSBhbmQgc29sMi4KLSMJKiBSZXBsYWNlZCBRdW1lIFFWVCBhbmQgRnJlZWRvbS1zZXJpZXMgZW50cmllcyB3aXRoIHB1cnBvc2UtYnVpbHQKLSMJICB0ZXJtaW5mbyBlbnRyaWVzLgotIwkqIEVuaGFuY2VkIHZ0MjIwLCB0dmk5MTAsIHR2aTkyNCwgaHB0ZXJtLCBocDI2NDUsIGFkbTQyLCB0ZWsKLSMJICBhbmQgZGcyMDAgZW50cmllcyB1c2luZyBjYXBzIGZyb20gZnJvbSBTQ08uCi0jCSogQWRkZWQgdGhlIHVzdWFsIHNldCBvZiBmdW5jdGlvbi1rZXkgbWFwcGluZ3MgdG8gQU5TSSBlbnRyeS4KLSMJKiBDb3JyZWN0ZWQgeHRlcm0ncyBmdW5jdGlvbi1rZXkgY2FwYWJpbGl0aWVzLgotIyA5LjQuNSAoVHVlIE1hciAyOCAxNDoyNzo0OSBFU1QgMTk5NSk6Ci0jCSogRml4IGluIHh0ZXJtIGVudHJ5LCBjdWIgYW5kIGN1ZCBhcmUgbm90IHJlbGlhYmxlIHVuZGVyIFgxMVI2LgotIyA5LjQuNiAoVGh1IE1hciAzMCAxNDo1MjoxNSBFU1QgMTk5NSk6Ci0jCSogRml4IGluIHh0ZXJtIGVudHJ5LCBnZXQgdGhlIGFycm93IGtleXMgcmlnaHQuCi0jCSogQ2hhbmdlIHNvbWUgXDAgZXNjYXBlcyB0byBcMjAwLgotIyA5LjQuNyAoVHVlIEFwciAgNCAxMToyNzoxMSBFRFQgMTk5NSkKLSMJKiBBZGRlZCBhcHBsZSAoVmlkZXggY2FyZCksIGFkbTFhLCBvYWRtMzEuCi0jCSogRml4ZWQgbWFsZm9ybWVkIGFtcGV4IGNzci4KLSMJKiBGaXhlZCBhY3Q0LCBjeWIxMTA7IHRoZXkgaGFkIG9sZC1zdHlsZSBwcmVmaXggcGFkZGluZyBsZWZ0IGluLgotIwkqIENoYW5nZWQgbWFuZGF0b3J5IHRvIGFkdmlzb3J5IHBhZGRpbmcgaW4gbWFueSBlbnRyaWVzLgotIwkqIFJlcGxhY2VkIEhQIGVudHJpZXMgdXAgdG8gaHBzdWIgd2l0aCBwdXJwb3NlLWJ1aWx0IG9uZXMuCi0jCSogQmxhbmsgcm1pci9zbWlyL3JtZGMvc21kYyBjYXBhYmlsaXRpZXMgcmVtb3ZlZC4KLSMJKiBTbWFsbCBmaXhlcyBtZXJnZWQgaW4gZnJvbSBTQ08gZW50cmllcyBmb3IgbHByLCBmb3MsIHR2aTkxMCssIHR2aTkyNC4KLSMgOS40LjggKEZyaSBBcHIgIDcgMDk6MzY6MzQgRURUIDE5OSk6Ci0jCSogUmVwbGFjZWQgdGhlIEFubiBBcmJvciBlbnRyaWVzIHdpdGggU0NPJ3MsIHRoZSBpbml0IHN0cmluZ3MgYXJlCi0jCSAgbW9yZSBlZmZpY2llbnQgKGJ1dCB0aGUgZW50cmllcyBvdGhlcndpc2UgaWRlbnRpY2FsKS4KLSMJKiBBZGRlZCBkZzIxMSBmcm9tIFNodWZvcmQgYXJjaGl2ZS4KLSMJKiBBZGRlZCBzeW5lcnRlaywgYXBwbGUtc29yb2MsIGlibXBjLCBwYy12ZW5peCwgcGMtY29oZXJlbnQsIHh0YWxrLAotIwkgIGFkbTQyLW5sLCBwYzUyLCBnczYzMDAsIHhlcm94ODIwLCB1dHMzMC4KLSMJKiBQdWxsIFNDTydzIHBhZGRpbmcgaW50byB2aTIwMCBlbnRyeS4KLSMJKiBJbXByb3ZlZCBjYXBhYmlsaXRpZXMgZm9yIHR2aTQxMDcgYW5kIG90aGVyIFRlbGV2aWRlbyBhbmQgVmlld3BvaW50Ci0jCSAgZW50cmllcyBtZXJnZWQgaW4gZnJvbSBTQ08ncyBkZXNjcmlwdGlvbnMuCi0jCSogRml4ZWQgb2xkLXN0eWxlIHByZWZpeCBwYWRkaW5nIG9uIHplbjUwLCBoMTUwMC4KLSMJKiBNb3ZlZCBvbGQgc3VwZXJiZWUgZW50cnkgdG8gc3VwZXJiZWUteHNiLCBwdWxsZWQgaW4gbmV3IHN1cGVyYmVlCi0jCSAgZW50cnkgZnJvbSBTQ08ncyBkZXNjcmlwdGlvbi4KLSMJKiBSZW9yZ2FuaXplZCB0aGUgc3BlY2lhbCBlbnRyaWVzLgotIwkqIEFkZGVkIGxtIzAgdG8gY2J1bml4IGFuZCB2aXJ0dWFsIGVudHJpZXMuCi0jCi0jIDkuNS4wIChNb24gQXByIDEwIDExOjMwOjAwIEVEVCAxOTk1KToKLSMJKiBSZXN0b3JlZCBjZGM0NTZ0c3QuCi0jCSogRml4ZWQgc2IxIGVudHJ5LCBTQ08gZXJyb25lb3VzbHkgbGVmdCBvdXQgdGhlIHhzYiBnbGl0Y2guCi0jCSogQWRkZWQgbWVnYXRlaywgYmVhY29uLCBtaWNyb2tpdC4KLSMJKiBGcmVlemUgZm9yIG5jdXJzZXMtMS45IHJlbGVhc2UuCi0jIDkuNS4xIChGcmkgQXByIDIxIDEyOjQ2OjQyIEVEVCAxOTk1KToKLSMJKiBBZGRlZCBoaXN0b3JpY2FsIGRhdGEgZm9yIFRBQi4KLSMJKiBDb21tZW50IGZpeGVzIGZyb20gRGF2aWQgTWFjS2VuemllLgotIwkqIEFkZGVkIHRoZSBuZXcgQlNESSBwYzMgZW50cnkuCi0jIDkuNS4yIChUdWUgQXByIDI1IDE3OjI3OjUyIEVEVCAxOTk1KQotIwkqIEEgY2hhbmdlIGluIHRoZSB0aWMgLUMgbG9naWMgbm93IGVuc3VyZXMgdGhhdCBhbGwgZW50cmllcyBpbgotIwkgIHRoZSB0ZXJtY2FwIHRyYW5zbGF0aW9uIHdpbGwgZml0IGluIDwgMTAyNCBieXRlcy4KLSMJKiBBZGRlZCBgYm9iY2F0JyBhbmQgYGdhdG9yJyBIUCBjb25zb2xlcyBhbmQgdGhlIE51IG1hY2hpbmUgZW50cmllcwotIwkgIGZyb20gR05VIHRlcm1jYXAgZmlsZS4gIFRoaXMgbWVyZ2VzIGluIGFsbCB0aGVpciBsb2NhbCBpbmZvcm1hdGlvbi4KLSMgOS41LjMgKFR1ZSBBcHIgMjUgMjI6Mjg6MTMgRURUIDE5OTUpCi0jCSogQ2hhbmdlZCB0aWMgLUMgbG9naWMgdG8gZHVtcCBhbGwgY2FwYWJpbGl0aWVzIHVzZWQgYnkgR05VIHRlcm1jYXAuCi0jCSogQWRkZWQgd2FybmluZ3MgYWJvdXQgZW50cmllcyB3aXRoIGxvbmcgdHJhbnNsYXRpb25zIChyZXN0b3JpbmcKLSMJICBhbGwgdGhlIEdOVSB0ZXJtY2FwcyBwdXNoZXMgYSBmZXcgb3ZlciB0aGUgZWRnZSkuCi0jIDkuNS40IChXZWQgQXByIDI2IDE1OjM1OjA5IEVEVCAxOTk1KQotIwkqIFlldCBhbm90aGVyIHRpYyBjaGFuZ2UsIGFuZCBhIGNvdXBsZSBvZiBlbnRyeSB0d2Vha3MsIHRvIHJlZHVjZSB0aGUKLSMJICBudW1iZXIgb2YgbG9uZyAoPiAxMDI0KSB0ZXJtY2FwIHRyYW5zbGF0aW9ucyBiYWNrIHRvIDAuCi0jCi0jIDkuNi4wIChNb24gTWF5ICAxIDEwOjM1OjU0IEVEVCAxOTk1KQotIwkqIEFkZGVkIGtmMTMta2YyMCB0byBMaW51eCBlbnRyeS4KLSMJKiBSZWd1bGFyaXplIFByaW1lIHRlcm1pbmFsIG5hbWVzLgotIwkqIEhpc3RvcmljYWwgZGF0YSBvbiBTeW5lcnRlay4KLSMJKiBGcmVlemUgZm9yIG5jdXJzZXMtMS45LjEuCi0jIDkuNi4xIChTYXQgTWF5ICA2IDAyOjAwOjUyIEVEVCAxOTk1KToKLSMJKiBBZGRlZCB0cnVlIHh0ZXJtLWNvbG9yIGVudHJ5LCByZW5hbWVkIGRqbSdzIHBzZXVkby1jb2xvciBlbnRyeS4KLSMJKiBFbGltaW5hdGUgd2hpdGVzcGFjZSBpbiBzaG9ydCBuYW1lIGZpZWxkcywgdGhpcyB0YW5rcyBzb21lIHNjcmlwdHMuCi0jCSogTmFtZSBmaWVsZCBjaGFuZ2VzIHRvIHNob3J0ZW4gc29tZSBsb25nIGVudHJpZXMuCi0jCSogVGVybWNhcCB0cmFuc2xhdGlvbiBub3cgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgZW1wdHkgcm1pci9zbWlyCi0jCSAgd2hlbiBpY2gxL2ljaCBpcyBwcmVzZW50IChjb3BlcyB3aXRoIGFuIGFuY2llbnQgdmkgYnVnKS4KLSMJKiBBZGRlZCBgc2NyZWVuJyBlbnRyaWVzIGZyb20gRlNGJ3Mgc2NyZWVuLTMuNi4yLgotIwkqIEFkZGVkIGxpbnV4LW5pYyBhbmQgeHRlcm0tbmljIGVudHJpZXMuCi0jIDkuNi4yIChTYXQgTWF5ICA2IDE3OjAwOjU1IEVEVCAxOTk1KToKLSMJKiBDaGFuZ2UgbGludXggZW50cnkgdG8gdXNlIHNtYWNzPVxFWzExbSBhbmQgaGF2ZSBhbiBleHBsaWNpdCBhY3NjLAotIwkgIGVsaW1pbmF0aW5nIHNvbWUgc3BlY2lhbC1jYXNlIGNvZGUgaW4gbmN1cnNlcy4KLSMKLSMgOS43LjAgKFR1ZSBNYXkgIDkgMTg6MDM6MTIgRURUIDE5OTUpOgotIwkqIEFkZGVkIHZ0MzIwLWszLCByc3ZpZHR4IGZyb20gdGhlIEVtYWNzIHRlcm1jYXAuZGF0IGZpbGUuICBJIHRoaW5rCi0jCSAgdGhhdCBjYXB0dXJlcyBldmVyeXRoaW5nIHVuaXF1ZSBmcm9tIGl0LgotIwkqIEFkZGVkIHJlb3JkZXIgc2NyaXB0IGdlbmVyYXRvci4KLSMJKiBGcmVlemUgZm9yIG5jdXJzZXMgMS45LjIgcmVsZWFzZS4KLSMgOS43LjEgKFRodSBKdW4gMjkgMDk6MzU6MjIgRURUIDE5OTUpOgotIwkqIEFkZGVkIFNlYW4gRmFybGV5J3Mga3NwZCwgZmxhc2gsIHJzMSBjYXBhYmlsaXRpZXMgZm9yIGxpbnV4LgotIwkqIEFkZGVkIE9sYWYgU2llYmVydCdzIGNvcnJlY3Rpb25zIGZvciBhZG0xMi4KLSMJKiBhbnNpLXBjLWNvbG9yIG5vdyBpbmNsdWRlcyB0aGUgY29sb3JzIGFuZCBwYWlycyBjYXBzLCBzbyB0aGF0Ci0jCSAgZW50cmllcyB3aGljaCB1c2UgaXQgd2lsbCBpbmhlcml0IHRoZW0gYXV0b21hdGljYWxseS4KLSMJKiBUaGUgbGludXggZW50cnkgY2FuIG5vdyByZWNvZ25pemUgdGhlIGNlbnRlciAoa2V5cGFkIDUpIGtleS4KLSMJKiBSZW1vdmVkIHNvbWUganVuayB0aGF0IGZvdW5kIGl0cyB3YXkgaW50byBMaW51eCBhY3NjLgotIwotIyA5LjguMCAoRnJpIEp1bCAgNyAwNDo0Njo1NyBFRFQgMTk5NSk6Ci0jCSogQWRkIDUwJSBjdXQgbWFyayBhcyBhIGRlc3BlcmF0ZSBoYWNrIHRvIHJlZHVjZSB0aWMncyBjb3JlIHVzYWdlLgotIwkqIHh0ZXJtIGRvZXNuJ3QgdHJ5IHRvIHVzZSBhcHBsaWNhdGlvbiBrZXlwYWQgbW9kZSBhbnkgbW9yZS4KLSMJKiBGcmVlemUgZm9yIG5jdXJzZXMtMS45LjMgcmVsZWFzZS4KLSMgOS44LjEgKFRodSBKdWwgMTkgMTc6MDI6MTIgRURUIDE5OTUpOgotIwkqIEFkZGVkIGNvcnJlY3RlZCBzdW4gZW50cnkgZnJvbSB2ZW5kb3IuCi0jCSogQWRkZWQgY3NyIGNhcGFiaWxpdHkgdG8gbGludXggZW50cnkuCi0jCSogUGV0ZXIgV2VtbSBzYXlzIHRoZSBhdDM4NiBocGEgc2hvdWxkIGJlIFxFWyVpJXAxJWRHLCBub3QgXEVbJXAxJWRHLgotIwkqIEFkZGVkIHZ0MTAyLW5zZ3IgdG8gY29wZSB3aXRoIHN0dXBpZCBJQk0gUEMgYFZUMTAwJyBlbXVsYXRvcnMuCi0jCSogU29tZSBjb21tZW50ZWQtb3V0IGNhcHMgaW4gbG9uZyBlbnRyaWVzIGNvbWUgYmFjayBpbiwgbXkgY29kZQotIwkgIGZvciBjb21wdXRpbmcgc3RyaW5nLXRhYmxlIGxlbmd0aHMgaGFkIGEgYnVnIGluIGl0LgotIwkqIHBjYW5zaSBzZXJpZXMgbW9kaWZpZWQgdG8gZml0IGNvbW0tcHJvZ3JhbSByZWFsaXR5IGJldHRlci4KLSMgOS44LjIgKFNhdCBTZXAgIDkgMjM6MzU6MDAgRURUIDE5OTUpOgotIwkqIEJTRC9PUyBhY3R1YWxseSBzaGlwcyB0aGUgaWJtcGMzIGJvbGQgZW50cnkgYXMgaXRzIGNvbnNvbGUuCi0jCSogQ29ycmVjdCBzb21lIGJhZCBhbGlhc2VzIGluIHRoZSBwY2Fuc2kgc2VyaWVzCi0jCSogQWRkZWQgZW50cnkgZm9yIFFOWCBjb25zb2xlLgotIwkqIENsZWFuIHVwIGR1cGxpY2F0ZSBsb25nIG5hbWVzIGZvciB1c2Ugd2l0aCA0LjQgbGlicmFyeS4KLSMJKiBDaGFuZ2UgdnQxMDAgc3RhbmRvdXQgdG8gYmUgbm9ybWFsIHJldmVyc2UgdmlkZSwgbm90IGJyaWdodCByZXZlcnNlOwotIwkgIHRoaXMgbWFrZXMgdGhlIEVtYWNzIHN0YXR1cyBsaW5lIGxvb2sgYmV0dGVyLgotIyA5LjguMyAoU3VuIFNlcCAxMCAxMzowNzozNCBFRFQgMTk5NSk6Ci0jCSogQWRkZWQgQWRhbSBUaG9tcHNvbidzIFZUMzIwIGVudHJpZXMsIGFsc28gaGlzIGR0eC1zYXMgYW5kIHozNDAuCi0jCSogTWlub3Igc3VyZ2VyeSwgbW9zdGx5IG9uIG5hbWUgc3RyaW5ncywgdG8gc2hvcnRlbiB0ZXJtY2FwIHZlcnNpb24uCi0jCi0jIDkuOS4wIChTYXQgU2VwIDE2IDIzOjAzOjQ4IEVEVCAxOTk1KToKLSMJKiBBZGRlZCBkZWMtdnQxMDAgZm9yIHVzZSB3aXRoIHRoZSBFV0FOIGVtdWxhdG9yLgotIwkqIEFkZGVkIGttb3VzIHRvIHh0ZXJtIGZvciB1c2Ugd2l0aCB4dGVybSdzIG1vdXNlLXRyYWNraW5nIGZhY2lsaXR5LgotIwkqIEZyZWV6ZSBmb3IgMS45LjUgYWxwaGEgcmVsZWFzZS4KLSMgOS45LjEgKFdlZCBTZXAgMjAgMTM6NDY6MDkgRURUIDE5OTUpOgotIwkqIENoYW5nZWQgeHRlcm0gbGluZXMgdG8gMjQsIHRoZSBYMTFSNiBkZWZhdWx0LgotIyA5LjkuMiAoU2F0IFNlcCAyMyAyMToyOToyMSBFRFQgMTk5NSk6Ci0jCSogQWRkZWQgNyBuZXdseSBkaXNjb3ZlcmVkLCB1bmRvY3VtZW50ZWQgYWNzYyBjaGFyYWN0ZXJzIHRvIGxpbnV4Ci0jCSAgZW50cnkgKHRoZSBwcnl6e3x9IGNoYXJhY3RlcnMpLgotIwkqIG5jdXJzZXMgbm8gbG9uZ2VyIHN0ZWFscyBBX1BST1RFQ1QuICBTaW1wbGlmeSBsaW51eCBzZ3IgYWNjb3JkaW5nbHkuCi0jCSogQ29ycmVjdCB0d28gdHlwb3MgaW4gdGhlIHh0ZXJtIGVudHJpZXMgaW50cm9kdWNlZCBpbiA5LjkuMS4KLSMJKiBJIGZpbmFsbHkgZmlndXJlZCBvdXQgaG93IHRvIHRyYW5zbGF0ZSBrbyBjYXBhYmlsaXRpZXMuICBEb25lLgotIwkqIEFkZGVkIHR2aTkyMSBlbnRyaWVzIGZyb20gVGltIFRoZWlzZW4uCi0jCSogQ2xlYW51cDogZGdkMjExIC0+IGRnMjExLCBhZG00Mi1ubCAtPiBhZG00Mi1uc2wuCi0jCSogUmVtb3ZlZCBteXN0ZXJ5IHRlYyBlbnRyeSwgaXQgd2FzIG5laXRoZXIgaW50ZXJlc3Rpbmcgbm9yIHVzZWZ1bC4KLSMJKiBzaG9ydGVuZWQgYWx0b3MzLCBxdnQyMDMsIHR2aTkxMCssIHR2aTkyRCwgdHZpOTIxLWcsIHR2aTk1NSwgdmkyMDAtZiwKLSMJICB2aTMwMC1zcywgYXR0NTA1LTI0LCBjb250ZWwzMDEsIGRtMzA0NSwgZjIwMHZpLCBwZTcwMDBjLCB2YzMwM2EsCi0jCSAgdHJzMjAwLCB3aW5kMjYsIHdpbmQ0MCwgd2luZDUwLCBjZGM0NTZ0c3QsIGRrdTcwMDMsIGYxMTAsIGRnMjExLAotIwkgIGJ5IG1ha2luZyB0aGVtIHJlbGF0aXZlIHRvIHVzZSBjYXBhYmlsaXRpZXMKLSMJKiBBZGRlZCBjdWYxPV5MIHRvIHR2aTkyNSBmcm9tIGRlbGV0ZWQgdmFyaWFudCB0dmk5MjVhLgotIwkqIGZpeGVkIGN1cCBpbiBhZG0yMiBlbnRyeSBhbmQgcGFyYW1ldHJpemVkIHN0cmluZ3MgaW4gdnQzMjAtazMuCi0jCSogYWRkZWQgaXQjOCB0byBlbnRyaWVzIHRoYXQgdXNlZCB0byBoYXZlIDpwdDogLS0gdHZpOTEyLCB2aTIwMCwKLSMJICBhbXBleDgwLAotIwkqIFRyYW5zbGF0ZSBhbGwgaG9tZT1cRVs7SCBjYXBhYmlsaXRpZXMgdG8gaG9tZT1cRVtILCB0aGV5J3JlCi0jCSAgZXF1aXZhbGVudC4KLSMJKiBUcmFuc2xhdGUgXEVbMG0gLT4gXEVbbSBpbiBbcnNdbXNvLCBbcnNdbXVsLCBhbmQgaW5pdCBzdHJpbmdzIG9mCi0jCSAgdnQxMDAgYW5kIEFOU0ktbGlrZSB0ZXJtaW5hbHMuCi0jIDkuOS4zIChUdWUgU2VwIDI2IDIwOjExOjE1IEVEVCAxOTk1KToKLSMJKiBBZGRlZCBpdCM4IGFuZCBodD1cdCB0byAqYWxsKiBlbnRyaWVzIHdpdGggOnB0OjsgdGhlIG5jdXJzZXMgdGljCi0jCSAgZG9lcyB0aGlzIG5vdywgdG9vLgotIwkqIGZ2aWV3cG9pbnQgaXMgZ29uZSwgaXQgZHVwbGljYXRlZCBzY3Jld3BvaW50LgotIwkqIEFkZGVkIGhwMjYyNywgZ3JhcGhvcywgZ3JhcGhvcy0zMCwgaHBleCwgaWJtZWdhLCBpYm04NTE0LCBpYm04NTE0LWMsCi0jCSAgaWJtdmdhLCBpYm12Z2EtYywgbWluaXgsIG1tMzQwLCBtdDQ1MjAtcnYsIHNjcmVlbjIsIHNjcmVlbjMsCi0jCSAgdmVyc2F0ZXJtLCB2aTUwMCwgdnNjLCB2dDEzMSwgdnQzNDAsIHZ0NDAwIGVudHJpZXMgZnJvbSBVVy4KLSMJICBUaGUgVVcgdmk1MCByZXBsYWNlcyB0aGUgb2xkIG9uZSwgd2hpY2ggYmVjb21lcyB2aTUwYWRtLAotIwkqIE5vIG1vcmUgZW1iZWRkZWQgY29tbWFzIGluIG5hbWUgZmllbGRzLgotIwotIyA5LjEwLjAgKFdlZCBPY3QgIDQgMTU6Mzk6MzcgRURUIDE5OTUpOgotIwkqIFhFTklYIGZvcm1zIGNoYXJhY3RlcnMgaW4gZm9zLCB0cnMxNiwgc2NvYW5zaSBiZWNvbWUgYWNzYyBzdHJpbmdzLAotIwkqIEludHJvZHVjZWQga2xvbmUrKiBlbnRyaWVzIGZvciBkZXNjcmliaW5nIEludGVsLWNvbnNvbGUgYmVoYXZpb3IuCi0jCSogTGludXgga2JzIGlzIGRlZmF1bHQtbWFwcGVkIHRvIGRlbGV0ZSBmb3Igc29tZSBicmFpbi1kZWFkIHJlYXNvbi4KLSMJKiAtbnNsIC0+IC1ucy4gIFRoZSAtcHAgc3ludGF4IGlzIG9ic29sZXRlLgotIwkqIEVsaW1pbmF0ZSBbQS1aXSogcHJpbWFyaWVzIGluIGFjY29yZGFuY2Ugd2l0aCBTVnI0IHRlcm1pbmZvIGRvY3MuCi0jCSogTWFrZSB4dGVybSBlbnRyeSBkbyBhcHBsaWNhdGlvbi1rZXlwYWQgbW9kZSBhZ2Fpbi4gIEkgZ290IGNvbXBsYWludHMKLSMJICB0aGF0IGl0IHdhcyBtZXNzaW5nIHVwIHNvbWVvbmUncyAzMjcwIGVtdWxhdG9yLgotIwkqIEFkZGVkIHNvbWUgbG9uZ25hbWUgZmllbGRzIGluIG9yZGVyIHRvIGF2b2lkIHdhcm5pbmcgbWVzc2FnZXMgZnJvbQotIwkgIG9sZGVyIHRpYyBpbXBsZW1lbnRhdGlvbnMuCi0jCSogQWNjb3JkaW5nIHRvIGN0bHNlcXMubXMsIHh0ZXJtIGhhcyBhIGZ1bGwgdnQxMDAgZ3JhcGhpY3Mgc2V0LiAgVXNlCi0jCSAgaXQhIChUaGlzIGdpdmVzIHVzIHBpLCBncmVhdGVyIHRoYW4sIGxlc3MgdGhhbiwgYW5kIGEgZmV3IG1vcmUuKQotIwkqIEZyZWV6ZSBmb3IgbmN1cnNlcy0xLjkuNiByZWxlYXNlLgotIyA5LjEwLjEgKFNhdCBPY3QgMjEgMjI6MTg6MDkgRURUIDE5OTUpOgotIwkqIEFkZCB4b24gdG8gYSBudW1iZXIgb2YgY29uc29sZSBlbnRyaWVzLCB0aGV5J3JlIG1lbW9yeS1tYXBwZWQgYW5kCi0jCSAgZG9uJ3QgbmVlZCBwYWRkaW5nLgotIwkqIENvcnJlY3QgdGhlIHVzZSBkZXBlbmRlbmNpZXMgaW4gdGhlIGFuc2kgc2VyaWVzLgotIwkqIEhhbmQtdHJhbnNsYXRlIG1vcmUgWEVOSVggY2FwYWJpbGl0aWVzLgotIwkqIEFkZGVkIGhwdGVybSBlbnRyeSBmb3IgSFAncyBYIHRlcm1pbmFsIGVtdWxhdG9yLgotIwkqIEFkZGVkIGFpeHRlcm0gZW50cmllcy4KLSMJKiBTaG9ydGVuZWQgZm91ciBuYW1lcyBzbyBldmVyeXRoaW5nIGZpdHMgaW4gMTQgY2hhcnMuCi0jCi0jIDkuMTEuMCAoVGh1IE5vdiAgMiAxNzoyOTozNSBFU1QgMTk5NSk6Ci0jCSogQWRkZWQgaWJjczIgZW50cnkgYW5kIGluZm8gb24gaUJDUzIgc3RhbmRhcmQuCi0jCSogQ29ycmVjdGVkIGhwYS92cGEgaW4gbGludXggZW50cnkuICBUaGV5IHN0aWxsIGZhaWwgdGhlIHdvcm0gdGVzdC4KLSMJKiBXZSBjYW4gaGFuZGxlIHRoZSBIUCBtZW1sL21lbXUgY2FwYWJpbGl0eSBub3cuCi0jCSogQWRkZWQgc21hY3MgdG8ga2xvbmUgZW50cmllcywganVzdCBhcyBkb2N1bWVudGF0aW9uLgotIwkqIENhcnJlY3RlZCBhbnNpLnN5cyBhbmQgY2l0LTUwMCBlbnRyaWVzLgotIwkqIEFkZGVkIHozOSwgdnQzMjAtazMxMSwgdjIyMGMsIGFuZCBhdmF0YXIgZW50cmllcy4KLSMJKiBNYWtlIHBjYW5zaSB1c2UgdGhlIGFuc2kuc3lzIGludmlzIGNhcGFiaWxpdHkuCi0jCSogQWRkZWQgRElQIHN3aXRjaCBkZXNjcmlwdGlvbnMgZm9yIHZ0MTAwLCBhZG0zMSwgdHZpOTEwLCB0dmk5MjBjLAotIwkgIHR2aTkyNSwgdHZpOTUwLCBkdDgwLCBuY3I3OTAwaSwgaDE5LgotIwkqIFgzLjY0IGhhcyBiZWVuIHdpdGhkcmF3biwgY2hhbmdlIHNvbWUgcmVmZXJlbmNlcy4KLSMJKiBSZW1vdmVkIGZ1bmN0aW9uIGtleXMgZnJvbSBhbnNpLW0gZW50cnkuCi0jCSogQ29ycmVjdGVkIGFuc2kuc3lzIGVudHJ5LgotIwkqIEZyZWV6ZSBmb3IgbmN1cnNlcy0xLjkuNyByZWxlYXNlLgotIyA5LjExLjEgKFR1ZSBOb3YgIDYgMTg6MTg6MzggRVNUIDE5OTUpOgotIwkqIEFkZGVkIHJtYW0vc21hbSBjYXBhYmlsaXRpZXMgdG8gbWFueSBlbnRyaWVzIGJhc2VkIG9uIGluaXQgc3RyaW5ncy4KLSMJKiBBZGRlZCBjb3JyZWN0IGhwYS92cGEgdG8gbGludXguCi0jCSogUmVkdWNlZCBzZXZlcmFsIGVudHJpZXMgcmVsYXRpdmUgdG8gdnQ1Mi4KLSMgOS4xMS4yIChUdWUgTm92ICA3IDAwOjIxOjA2IEVTVCAxOTk1KToKLSMJKiBFeGlsZWQgc29tZSB1dHRlcmx5IHVuaWRlbnRpZmlhYmxlIGN1c3RvbSBhbmQgaG9tZWJyZXcgdHlwZXMgdG8gdGhlCi0jCSAgVUZPIGZpbGU7IGFsc28sIG9ic29sZXRlIHNtYWxsLXNjcmVlbiBoYXJkd2FyZTsgYWxzbywgZW50cmllcyB3aGljaAotIwkgIGxvb2sgZmxhdC1vdXQgaW5jb3JyZWN0LCBnYXJibGVkLCBvciByZWR1bmRhbnQuICBUaGVzZSBpbmNsdWRlIHRoZQotIwkgIGZvbGxvd2luZyBlbnRyaWVzOiBjYXJsb2NrLCBjZGM0NTZ0c3QsIG1pY3Jva2l0LCBxZHNzLCByYW10ZWssIHRlYywKLSMJICB0ZWM0MDAsIHRlYzUwMCwgdWJlbGwsIHdpbmQsIHdpbmQxNiwgd2luZDQwLCB3aW5kNTAsIHBsYXNtYSwgYWdpbGUsCi0jCSAgYXBwbGUsIGJjaCwgZGFsZWJsaXQsIG51Y3Rlcm0sIHR0eXdpbGxpYW1zLCBudXRlcm1pbmFsLCBudTI0LCBibnUsCi0jCSAgZm51LCBudW5peC0zMCwgbnVuaXgtNjEsIGV4aWR5LCBleDMwMDAsIHNleGlkeSwgcGM1Miwgc2FueW81NSwKLSMJICB5dGVybTEwLCB5dGVybTExLCB5dGVybTEwbmF0LCBhZWQsIGFlZC11Y2IsIGNvbXB1Y29sb3IsIGNvbXB1Y29sb3IyLAotIwkgIHZpYzIwLCBkZzEsIGFjdDVzLCBuZXR4LCBzbWFydHZpZCwgc21hcnRlcm0sIHNvbCwgc29sMiwgZHQyMDAsCi0jCSAgdHJzODAsIHRyczEwMCwgdHJzMjAwLCB0cnM2MDAsIHhpdGV4LCByc3ZpZHR4LCB2aWQsIGF0dDIzMDAteDQwLAotIwkgIGF0dDIzNTAteDQwLCBhdHQ0NDEwLW5maywgYXR0NTQxMC1ucywgb3R0eTU0MTAsIGF0dDU0MjUtbmwtdywKLSMJICB0dHk1NDI1LWZrLCB0dHk1NDI1LXctZmssIGNpdGEsIGMxMDgtbmEsIGMxMDgtcnYtbmEsIGMxMDAtcnYtbmEsCi0jCSAgYzEwOC1uYS1hY3MsIGMxMDgtcnYtbmEtYWNzLCBpbXM5NTAtbnMsIGluZm90b25LQVMsIG5jcjc5MDBpLW5hLAotIwkgIHJlZ2VudDYwbmEsIHNjYW5zZXQtbiwgdHZpOTIxLWcsIHR2aTkyNW4sIHR2aTkyNXZibiwgdHZpOTI1dmIsCi0jCSAgdmM0MDQtbmEsIHZjNDA0LXMtbmEsIHZ0NDIwbmFtLCB2dDQyMGYtbmFtLCB2dDQyMHBjLW5hbSwgdnQ1MTBuYW0sCi0jCSAgdnQ1MTBwYy1uYW0sIHZ0NTIwbmFtLCB2dDUyNW5hbSwgeHRlcm0yNSwgeHRlcm01MCwgeHRlcm02NSwgeHRlcm1zLgotIwkqIENvcnJlY3RlZCBwY3Z0MjVoIGFzIHN1Z2dlc3RlZCBieSBCcmlhbiBDLiBHcmF5c29uCi0jCSAgPGJncmF5c29uQHBpbmUuZWNlLnV0ZXhhcy5lZHU+LgotIyA5LjExLjMgKFRodSBOb3YgIDkgMTI6MTQ6NDAgRVNUIDE5OTUpOgotIwkqIEFkZGVkIGtzcGQ9XEVbUCwga2NidD1cRVtaLCB0byBsaW51eCBlbnRyeSwgY2hhbmdlZCBrYnMgYmFjayB0byBeSC4KLSMJKiBBZGRlZCBrZW50PVxFT00gdG8geHRlcm0gZW50cnkuCi0jCi0jIDkuMTEuNCAoRnJpIE5vdiAxMCAwODozMTozNSBFU1QgMTk5NSk6Ci0jCSogQ29ycmVjdGVkIGdpZ2kgZW50cnkuCi0jCSogUmVzdG9yZWQgY3VmL2N1ZDEgdG8geHRlcm0sIHRoZWlyIGFwcGFyZW50IGJ1Z2dpbmVzcyB3YXMgZHVlIHRvCi0jCSAgYmFkIGhwYS92cGEgY2FwYWJpbGl0aWVzLgotIwkqIENvcnJlY3RlZCBmbGFzaCBzdHJpbmdzIHRvIGhhdmUgYSB1bmlmb3JtIGRlbGF5IG9mIC4yIHNlYy4gIE5vCi0jCSAgbW9yZSBzcGVlZC1kZXBlbmRlbnQgTlVMLXBhZGRpbmchCi0jCSogdGVybWluZm8gY2FwYWJpbGl0aWVzIGluIGNvbW1lbnRzIGJyYWNrZXRlZCB3aXRoIDw+LgotIyA5LjExLjUgKEZyaSBOb3YgMTAgMTU6MzU6MDIgRVNUIDE5OTUpOgotIwkqIFJlcGxhY2VkIHBjdnQgd2l0aCB0aGUgMy4zMSBwY3Z0IGVudHJpZXMuCi0jCSogRnJlZXplIGZvciAxLjkuN2EuCi0jIDkuMTEuNiAoTW9uIE5vdiAxMyAxMDoyMDoyNCBFU1QgMTk5NSk6Ci0jCSogQWRkZWQgZW11IGVudHJ5IGZyb20gdGhlIFgxMVI2IGNvbnRyaWIgdGFwZSBzb3VyY2VzLgotIwotIyA5LjEyLjAgKFdlZCBOb3YgMjkgMDQ6MjI6MjUgRVNUIDE5OTUpOgotIwkqIEltcHJvdmVkIGlyaXMtYW5zaSBhbmQgc3VuIGVudHJpZXMuCi0jCSogTW9yZSBmbGFzaCBzdHJpbmcgaW1wcm92ZW1lbnRzLgotIwkqIENvcnJlY3RlZCB3eTE2MCAmIHd5MTYwIGFzIHN1Z2dlc3RlZCBieSBSb2JlcnQgRHVubgotIwkqIEFkZGVkIGRpbSB0byBhdDM4Ni4KLSMJKiBSZWNvbmNpbGVkIHBjMyBhbmQgaWJtcGMzIHdpdGggdGhlIEJTREkgdGVybWNhcCBmaWxlLiAgS2VpdGggc2F5cwotIwkgIGhlJ3MgcmVhZHkgdG8gc3RhcnQgdXNpbmcgdGhlIHRlcm1jYXAgZ2VuZXJhdGVkIGZyb20gdGhpcyBvbmUuCi0jCSogQWRkZWQgdnQxMDItdywgdnQyMjAtdywgeHRlcm0tYm9sZCwgd3lzZS12cCwgd3k3NWFwLCBhdHQ0NDI0bSwKLSMJICBsbjAzLCBsbm8zLXcsIGgxOS1nLCB6MjlhKiwgcWRzcy4gIE1hZGUgdnQyMDAgYW4gYWxpYXMgb2YgdnQyMjAuCi0jCSogSW1wcm92ZWQgaHB0ZXJtLCBhcG9sbG8gY29uc29sZXMsIGZvcywgcXZ0MTAxLCB0dmk5MjQuIHR2aTkyNSwKLSMJICBhdHQ2MTAsIGF0dDYyMCwgYXR0NjMwLAotIwkqIENoYW5nZWQgaGF6ZWx0aW5lIG5hbWUgcHJlZml4IGZyb20gaCB0byBoei4KLSMJKiBTZW50IHQ1MDAgdG8gdGhlIFVGSSBmaWxlLgotIwkqIEkgdGhpbmsgd2UndmUgc3Vja2VkIGFsbCB0aGUganVpY2Ugb3V0IG9mIEJTREkncyB0ZXJtY2FwIGZpbGUgbm93LgotIwkqIEZyZWV6ZSBmb3IgbmN1cnNlcyAxLjkuOCByZWxlYXNlCi0jIDkuMTIuMSAoVGh1IE5vdiAzMCAwMzoxNDowNiBFU1QgMTk5NSkKLSMJKiBVbmZyZWV6ZSwgbGludXgga2JzIG5lZWRlZCB0byBiZSBmaXhlZC4KLSMJKiBUaW0gVGhlaXNlbiBwaW5uZWQgZG93biBhIGJ1ZyBpbiB0aGUgRE1EIGZpcm13YXJlLgotIyA5LjEyLjIgKFRodSBOb3YgMzAgMTk6MDg6NTUgRVNUIDE5OTUpOgotIwkqIEZpeGVzIHRvIGFuc2kgYW5kIGtsb25lIGNhcGFiaWxpdGllcyAodGhhbmsgeW91LCBBYXJvbiBVY2tvKS4KLSMJICAoVGhlIGJyb2tlbiBvbmVzIGhhZCBiZWVuIHNoYWRvd2VkIGJ5IHNnci4pCi0jIDkuMTIuMyAoVGh1IERlYyAgNyAxNzo0NzoyMiBFU1QgMTk5NSk6Ci0jCSogQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiBFQ01BLTQ4IHN0YW5kYXJkLgotIwkqIE5ldyBBbWlnYSBlbnRyeS4KLSMgOS4xMi40IChUaHUgRGVjIDE0IDA0OjE2OjM5IEVTVCAxOTk1KToKLSMJKiBNb3JlIEVDTUEtNDggc3R1ZmYKLSMJKiBDb3JyZWN0ZWQgdHlwbyBpbiBtaW5peCBlbnRyeSwgYWRkZWQgcGMtbWluaXguCi0jCSogQ29ycmVjdGVkIGtob21lL2tlbmQgaW4geHRlcm0gKHRoYW5rIHlvdSBhZ2FpbiwgQWFyb24gVWNrbykuCi0jCSogQWRkZWQgcnh2dCBlbnRyeS4KLSMJKiBBZGRlZCAxLjMueCBjb2xvci1jaGFuZ2UgY2FwYWJpbGl0aWVzIHRvIGxpbnV4IGVudHJ5LgotIyA5LjEyLjUgKFR1ZSBEZWMgMTkgMDA6MjI6MTAgRVNUIDE5OTUpOgotIwkqIENvcnJlY3RlZCByeHZ0IGVudHJ5IGtob21lL2tlbmQuCi0jCSogQ29ycmVjdGVkIGxpbnV4IGNvbG9yIGNoYW5nZSBjYXBhYmlsaXRpZXMuCi0jCSogTmVYVCBlbnRyaWVzIGZyb20gRGF2ZSBXZXR6ZWwuCi0jCSogQ2xlYW5lZCB1cCBpZiBhbmQgcmYgZmlsZSBuYW1lcyAoYWxsIGluIC91c3Ivc2hhcmUgbm93KS4KLSMJKiBDaGFuZ2VkIGxpbnV4IG9wIGNhcGFiaWxpdHkgdG8gYXZvaWQgc2NyZXdpbmcgdXAgYSBiYWNrZ3JvdW5kIGNvbG9yCi0jCSAgcGFpciBzZXQgYnkgc2V0dGVybS4KLSMgOS4xMi42IChXZWQgRmViICA3IDE2OjE0OjM1IEVTVCAxOTk2KToKLSMJKiBBZGRlZCB4dGVybS1zdW4uCi0jIDkuMTIuNyAoRnJpIEZlYiAgOSAxMzoyNzozNSBFU1QgMTk5Nik6Ci0jCSogQWRkZWQgdmlzYTUwLgotIwotIyA5LjEzLjAgKFN1biBNYXIgMTAgMDA6MTM6MDggRVNUIDE5OTYpOgotIwkqIEFub3RoZXIgc3dlZXAgdGhyb3VnaCB0aGUgU2h1Zm9yZCBhcmNoaXZlIGxvb2tpbmcgZm9yIG5ldyBpbmZvLgotIwkqIEFkZGVkIGRnMTAwIGFsaWFzIHRvIGRnNjA1MyBiYXNlZCBvbiBhIGNvbXAudGVybWluYWxzIHBvc3RpbmcuCi0jIAkqIEFkZGVkIHN0NTIgZnJvbSBQZXIgUGVyc3Nvbi4KLSMJKiBBZGRlZCBldGVybSBmcm9tIHRoZSBHTlUgRW1hY3MgMTkuMzAgZGlzdHJpYnV0aW9uLgotIwkqIEZyZWV6ZSBmb3IgMS45LjkuCi0jIDkuMTMuMSAoRnJpIE1hciAyOSAxNDowNjo0NiBFU1QgMTk5Nik6Ci0jCSogRnJlZUJTRCBjb25zb2xlIGVudHJpZXMgZnJvbSBBbmRyZXcgQ2hlcm5vdi4KLSMJKiBSZW1vdmVkIGR1cGxpY2F0ZSBBdGFyaSBzdDUyIG5hbWUuCi0jIDkuMTMuMiAoVHVlIE1heSAgNyAxNjoxMDowNiBFRFQgMTk5NikKLSMJKiB4dGVybSBkb2Vzbid0IGFjdHVhbGx5IGhhdmUgQUNTX0JMT0NLLgotIwkqIENoYW5nZSBrbG9uZStjb2xvciBzZXRmL3NldGIgdG8gc2ltcGxlciBmb3JtcyB0aGF0IGNhbiBiZQotIwkgIHRyYW5zbGF0ZWQgaW50byB0ZXJtY2FwLgotIwkqIEFkZGVkIHh0ZXJtMS4KLSMJKiBSZW1vdmVkIG1lY2hhbmljYWxseS1nZW5lcmF0ZWQganVuayBjYXBhYmlsaXRpZXMgZnJvbSBjb25zKiBlbnRyaWVzLgotIwkqIEFkZGVkIGNvbG9yIHN1cHBvcnQgdG8gYnNkb3MuCi0jIDkuMTMuMyAoVGh1IE1heSAgOSAxMDozNTo1MSBFRFQgMTk5Nik6Ci0jCSogQWRkZWQgV3lzZSA1MjAgZW50cmllcyBmcm9tIFdtLiBSYW5kb2xwaCBGcmFua2xpbiA8d3JmQGVjc2UucnBpLmVkdT4uCi0jCSogQ3JlYXRlZCBlY21hK2NvbG9yLCBsaW51eCBjYW4gdXNlIGl0LiAgQWxzbyBhZGRlZCBlY2ggdG8gbGludXguCi0jCSogVGVhY2ggeHRlcm0gYWJvdXQgbW9yZSBrZXlzLiBBZGQgVGhvbWFzIERpY2tleSdzIDMuMS4yRSB1cGRhdGVzLgotIwkqIEFkZCBkZXNjcmlwdGlvbnMgdG8gRnJlZUJTRCBjb25zb2xlIGVudHJpZXMuICBBbHNvIHNob3J0ZW4KLSMJICBzb21lIGFsaWFzZXMgdG8gPD0gMTQgY2hhcnMgZm9yIHBvcnRhYmlsaXR5LgotIwkqIEFkZGVkIHg2OGsgY29uc29sZQotIwkqIEFkZGVkIE9UYnMgdG8gc2V2ZXJhbCBWVC1zZXJpZXMgZW50cmllcy4KLSMgOS4xMy40IChXZWQgTWF5IDIyIDEwOjU0OjA5IEVEVCAxOTk2KToKLSMJKiBzY3JlZW4gZW50cnkgdXBkYXRlIGZvciAzLjcuMSBmcm9tIE1pY2hhZWwgQWxhbiBEb3JtYW4uCi0jIDkuMTMuNSAoV2VkIEp1biAgNSAxMToyMjo0MSBFRFQgMTk5Nik6Ci0jCSoga3Rlcm0gY29ycmVjdGlvbiBkdWUgdG8gS2VuamkgUmlraXRha2UuCi0jCSogQUNTIGNvcnJlY3Rpb24gaW4gdnQzMjAta2xsIGR1ZSB0byBQaGlsbGlwcGUgRGUgTXV5dGVyLgotIyA5LjEzLjYgKFN1biBKdW4gMTYgMTU6MDE6MDcgRURUIDE5OTYpOgotIwkqIFN1biBjb25zb2xlIGVudHJ5IGNvcnJlY3Rpb24gZnJvbSBKLlQuIENvbmtsaW4uCi0jCSogQ2hhbmdlZCBhbGwgREVDIFZUMzAwIGFuZCB1cCB0ZXJtaW5hbHMgdG8gdXNlIFZUMzAwIHRhYiBzZXQKLSMgOS4xMy43IChNb24gSnVsICA4IDIwOjE0OjMyIEVEVCAxOTk2KToKLSMJKiBBZGRlZCBzbXVsIHRvIGxpbnV4IGVudHJ5ICh3ZSBuZXZlciBub3RpY2VkIGl0IHdhcyBtaXNzaW5nCi0jCSAgYmVjYXVzZSBvZiBzZ3IhKS4KLSMJKiBBZGRlZCBybWxuIHRvIGhwK2xhYmVscyAoZGVkdWNlZCBmcm9tIG90aGVyIEhQIGVudHJpZXMpLgotIwkqIEFkZGVkIHZ0MTAwIGFjc2MgY2FwYWJpbGl0eSB0byB2dDIyMCwgdnQzNDAsIHZ0NDAwLCBkODAwLCBkdDgwLXNhcywKLSMJICBwcm8zNTAsIGF0dDczMDAsIDU0MjBfMiwgYXR0NDQxOCwgYXR0NDQyNCwgYXR0NDQyNiwgYXR0NTA1LCB2dDMyMC1rMy4KLSMJKiBDb3JyZWN0ZWQgdnQyMjAgYWNzYy4KLSMJKiBUaGUga2xvbmUrc2dyIGFuZCBrbG9uZStzZ3ItZHVtYiBlbnRyaWVzIG5vdyB1c2Uga2xvbmUrYWNzOwotIwkgIHRoaXMgY29ycmVzcG9uZHMgdG8gcmVhbGl0eSBhbmQgaGVscHMgcHJldmVudCBzb21lIHRpYyB3YXJuaW5ncy4KLSMJKiBBZGRlZCBzZ3IwIHRvIGMxMDEsIHBjaXgsIHZ0MTAwLW5hdiwgc2NyZWVuMiwgb2xkc3VuLCBuZXh0LCBhbHRvczIsCi0jCSAgaHBnZW5lcmljLCBocGFuc2ksIGhwc3ViLCBocDIzNiwgaHA3MDAtd3ksIGJvYmNhdCwgZGt1NzAwMywgYWRtMTEsCi0jCSAgYWRtMTIsIGFkbTIwLCBhZG0yMSwgYWRtMjIsIGFkbTMxLCBhZG0zNiwgYWRtNDIsIHB0MTAwLCBwdDIwMCwKLSMJICBxdnQxMDEsIHR2aTkxMCwgdHZpOTIxLCB0dmk5MkIsIHR2aTkyNSwgdHZpOTUwLCB0dmk5NzAsIHd5MzAtbWMsCi0jCSAgd3k1MC1tYywgd3kxMDAsIHd5c2UtdnAsIGFtcGV4MjMyLCByZWdlbnQxMDAsIHZpZXdwb2ludCwgdnA5MCwKLSMJICBhZGRzOTgwLCBjaXQxMDEsIGNpdDUwMCwgY29udGVsMzAwLCBjczEwLCBkbTgwLCBmYWxjbywgZmFsY28tcCwKLSMJICBmMTcyMGEsIGdvMTQwLCBzYjEsIHN1cGVyYmVlaWMsIG1pY3JvYiwgaWJtODUxMiwga3Q3LCBlcmdvNDAwMCwKLSMJICBvd2wsIHV0czMwLCBkbXRlcm0sIGR0MTAwLCBkdDEwMCwgZHQxMTAsIGFwcGxlSUksIGFwcGxlLXZpZGV4LAotIwkgIGxpc2EsIHRyc0lJLCBhdGFyaSwgc3Q1MiwgcGMtY29oZXJlbnQsIGJhc2lzLCBtMi1tYW4sIGJnMi4wLCBiZzEuMjUsCi0jCSAgZHczLCBsbjAzLCBpbXMtYW5zaSwgZ3JhcGhvcywgdDE2LCB6ZW4zMCwgeHRhbGssIHNpbXRlcm0sIGQ4MDAsCi0jCSAgaWZtciwgdjMyMjAsIHd5MTAwcSwgdGFuZGVtNjUzLCBpYm1hZWQuCi0jCSogQWRkZWQgRFdLIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgotIyA5LjEzLjggKFdlZCBKdWwgMTAgMTE6NDU6MjEgRURUIDE5OTYpOgotIwkqIE1hbnkgZW50cmllcyBub3cgaGF2ZSBoaWdobGlnaHRzIGluaGVyaXRlZCBmcm9tIGFkbStzZ3IuCi0jCSogeHRlcm0gZW50cnkgbm93IGNvcnJlc3BvbmRzIHRvIFhGcmVlODYgMy4xLjJFLCB3aXRoIGNvbG9yLgotIwkqIHh0aXRsZSBhbmQgeHRpdGxlLXR3bSBlbmFibGUgYWNjZXNzIHRvIHRoZSBYIHN0YXR1cyBsaW5lLgotIwkqIEFkZGVkIGxpbnV4LTEuMy42IGNvbG9yIHBhbGV0dGUgY2FwcyBpbiBjb252ZW50aW9uYWwgZm9ybWF0LgotIwkqIEFkZGVkIGFkbTExNzggdGVybWluYWwuCi0jCSogTW92ZSBmb3MgYW5kIGFwb2xsbyB0ZXJtaW5hbHMgdG8gb2Jzb2xldGUgY2F0ZWdvcnkuCi0jCSogQWhhISBUaGUgQlJMIHRlcm1pbmFscyBmaWxlIHRvbGQgdXMgd2hhdCB0aGUgSXJpcyBleHRlbnNpb25zIG1lYW4uCi0jCSogQWRkZWQsIGZyb20gdGhlIEJSTCB0ZXJtY2FwIGZpbGU6IHJ0NjIyMSwgcnQ2MjIxLXcsIG5vcnRoc3RhciwKLSMJICBjb21tb2RvcmUsIGNkYzcyMS1lc2MsIGV4Y2VsNjIsIG9zZXhlYy4gIFJlcGxhY2VkIGZyb20gdGhlIEJSTCBmaWxlOgotIwkgIGNpdDUwMCwgYWRtMTEuCi0jIDkuMTMuOSAoTW9uIEp1bCAxNSAwMDozMjo1MSBFRFQgMTk5Nik6Ci0jCSogQWRkZWQsIGZyb20gdGhlIEJSTCB0ZXJtY2FwIGZpbGU6IGNkYzcyMSwgY2RjNzIxbCwgY2RjNzUyLCBjZGM3NTYsCi0jCSAgYXdzLCBhd3NjLCB6ZW50ZWM4MDAxLCBtb2RncmFwaDQ4LCByY2EgdnAzMzAxL3ZwMzUwMSwgZXgxNTUuCi0jCSogQ29ycmVjdGVkLCBmcm9tIEJSTCB0ZXJtY2FwIGZpbGU6IHZpNTAuCi0jCSogQmV0dGVyIHJ4dnQgZW50cnkgJiBjb3JyZWN0ZWQgeHRlcm0gZW50cmllcyBmcm9tIFRob21hcyBEaWNrZXkuCi0jIDkuMTMuMTAgKE1vbiBKdWwgMTUgMTI6MjA6MTMgRURUIDE5OTYpOgotIwkqIEFkZGVkIGZyb20gQlJMOiBjaXQxMDFlICYgdmFyaWFudHMsIGhtb2QxLCB2aTIwMCwgYW5zaTc3LCBhdHQ1NjIwLTEsCi0jCSAgYXR0NTYyMC1zLCBhdHQ1NjIwLXMsIGRnMjEwLCBhYXMxOTAxLCBoejE1MjAsIGhwOTg0NSwgb3Nib3JuZQotIwkgIChvbGQgb3Nib3JuZSBtb3ZlZCB0byBvc2Jvcm5lLXcpLCB0dmk5NzAtdmIsIHR2aTk3MC0ycCwgdHZpOTI1LWhpLAotIwkgIHRlazQxMDVicmwsIHRlazQxMDZicmwsIHRlazQxMDdicmwsdGVrNDEwOWJybCwgaGF6ZWwsIGFlcHJvLAotIwkgIGFwcGxlNDBwLCBhcHBsZTgwcCwgYXBwbGVJSWdzLCBhcHBsZTJlLCBhcHBsZTJlLXAsIGFwcGxlLWFlLgotIwkqIFBhaXJlZC1hdHRyaWJ1dGUgZml4ZXMgdG8gdmFyaW91cyB0ZXJtaW5hbHMuCi0jCSogU3VuIGVudHJ5IGNvcnJlY3Rpb25zIGZyb20gQS4gTHVreWFub3YgJiBHZXJ0LUphbiBWb25zLgotIwkqIHh0ZXJtIGVudHJ5IGNvcnJlY3Rpb25zIGZyb20gVGhvbWFzIERpY2tleS4KLSMgOS4xMy4xMSAoVHVlIEp1bCAzMCAxNjo0Mjo1OCBFRFQgMTk5Nik6Ci0jCSogQWRkZWQgdDkxNiBlbnRyeSwgdHJhbnNsYXRlZCBmcm9tIGEgdGVybWNhcCBpbiBTQ08ncyBzdXBwb3J0IGFyZWEuCi0jCSogTmV3IHFueCBlbnRyeSBmcm9tIE1pY2hhZWwgSHVudGVyLgotIyA5LjEzLjEyIChNb24gQXVnICA1IDE0OjMxOjExIEVEVCAxOTk2KToKLSMJKiBBZGRlZCBocGV4MiBmcm9tIFZpbGxlIFN1bGtvLgotIwkqIEZpeGVkIGEgYnVnIHRoYXQgcmFuIHRoZSBxbnggYW5kIHBjdnRYWCB0b2dldGhlci4KLSMgOS4xMy4xMyAoRnJpIEF1ZyAgOSAwMToxNjoxNyBFRFQgMTk5Nik6Ci0jCSogQWRkZWQgZHR0ZXJtIGVudHJ5IGZyb20gU29sYXJpcyBDREUuCi0jIDkuMTMuMTQgKFR1ZSBTZXAgMTAgMTU6MzE6NTYgRURUIDE5OTYpOgotIwkqIGNvcnJlY3RlZCBwYWlycyM4IHR5cG8gaW4gZHR0ZXJtIGVudHJ5LgotIwkqIGFkZGVkIHR2aTkwNjUuCi0jIDkuMTMuMTUgKFN1biBTZXAgMTUgMDI6NDc6MDUgRURUIDE5OTYpOgotIwkqIHVwZGF0ZWQgeHRlcm0gZW50cnkgdG8gY292ZXIgMy4xLjJFJ3MgbmV3IGZlYXR1cmVzLgotIyA5LjEzLjE2IChUdWUgU2VwIDI0IDEyOjQ3OjQzIEVEVCAxOTk2KToKLSMJKiBBZGRlZCBuZXcgbWluaXggZW50cnkKLSMJKiBSZW1vdmVkIGFsaWFzZXMgb2YgdGhlIGZvcm0gXlswLTldKiBmb3Igb2Jzb2xldGUgdGVybWluYWxzLgotIwkqIENvbW1lbnRlZCBvdXQgbGludXgtb2xkLCBub2JvZHkncyB1c2luZyBwcmUtMS4yIGtlcm5lbHMgbm93LgotIyA5LjEzLjE3IChGcmkgU2VwIDI3IDEzOjI1OjM4IEVEVCAxOTk2KToKLSMJKiBBZGRlZCBQcmlzbSBlbnRyaWVzIGFuZCBrdDdpeC4KLSMJKiBDYXV0aW9uIG5vdGVzIGFib3V0IEVXQU4gYW5kIHRhYnNldCBmaWxlcy4KLSMJKiBDaGFuZ2VkIC91c3IvbGliL3RhYnNldCAtPiAvdXNyL2xvY2FsL3NoYXJlL3RhYnNldC4KLSMJKiBBZGRlZCBhY3NjL3JtYWNzL3NtYWNzIHRvIHZ0NTIuCi0jIDkuMTMuMTggKE1vbiBPY3QgMjggMTM6MjQ6NTkgRVNUIDE5OTYpOgotIwkqIE1lcmdlZCBpbiBUaG9tYXMgRGlja2V5J3MgcmVvcmdhbml6YXRpb24gb2YgdGhlIHh0ZXJtIGVudHJpZXM7Ci0jCSAgYWRkZWQgdGVjaG5pY2FsIGNvcnJlY3Rpb25zIHRvIGF2b2lkIHdhcm5pbmcgbWVzc2FnZXMuCi0jIDkuMTMuMTkgKFNhdCBOb3YgMTYgMTY6MDU6NDkgRVNUIDE5OTYpOgotIwkqIEFkZGVkIHJtc289XEVbMjdtIGluIExpbnV4IGVudHJ5LgotIwkqIEFkZGVkIGtvaTgtciBzdXBwb3J0IGZvciBMaW51eCBjb25zb2xlLgotIwkqIFJlcGxhY2UgeHRlcm0gZW50cmllcyB3aXRoIGNhbm9uaWNhbCBvbmVzIGZyb20gWEZyZWU4NiAzLjIuCi0jIDkuMTMuMjAgKFN1biBOb3YgMTcgMjM6MDI6NTEgRVNUIDE5OTYpOgotIwkqIEFkZGVkIGNvbG9yX3h0ZXJtIGZyb20gSmFjb2IgTWFuZGVsc29uCi0jIDkuMTMuMjEgKE1vbiBOb3YgMTggMTI6NDM6NDIgRVNUIDE5OTYpOgotIwkqIEJhY2sgb2ZmIHRoZSB4dGVybSBlbnRyeSB0byB1c2UgcjYgYXMgYSBiYXNlLgotIyA5LjEzLjIyIChTYXQgTm92IDMwIDExOjUxOjMxIEVTVCAxOTk2KToKLSMJKiBBZGRlZCBkZWMtdnQyMjAgYXQgQWRyaWFuIEdhcnNpZGUncyByZXF1ZXN0LgotIwotIy0ob3JpZ2luYWwtY2hhbmdlbG9nLTE5OTYvMTIvMjktdG8tMTk5OC8wMi8yOC1ieS1URCktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgMTAuMS4wIChTdW4gRGVjIDI5IDAyOjM2OjMxIEVTVCAxOTk2KTogd2l0aGRyYXduCi0jCSogTWlub3IgY29ycmVjdGlvbnMgdG8geHRlcm0gZW50cmllcy4KLSMJKiBSZXBsYWNlZCBFV0FOIHRlbG5ldCBlbnRyeS4KLSMJKiBEcm9wcGVkIHRoZSByZW9yZGVyIHNjcmlwdCBnZW5lcmF0b3IuICBJdCB3YXMgYSBmb3NzaWwuCi0jIDkuMTMuMjMgKEZyaSBGZWIgMjEgMTY6MzY6MDYgRVNUIDE5OTcpOgotIwkqIFJlcGxhY2VkIG1pbml0ZWwtMiBlbnRyeS4KLSMJKiBBZGRlZCBNR1IsIGFuc2ktbnQuCi0jIDkuMTMuMjQgKFN1biBGZWIgMjMgMjA6NTU6MjMgRVNUIDE5OTcpOgotIwkqIFRob3JzdGVuIExvY2tlcnQgYWRkZWQgdGVybWNhcCBgYnMnIHRvIGEgbG90IG9mIHR5cGVzLCB3b3JraW5nIGZyb20KLSMJICB0aGUgNC40QlNEIExpdGUyIGZpbGUuCi0jCi0jIDEwLjEuMSAoU2F0IE1heSAgMyAyMTo0MToyNyBFRFQgMTk5Nyk6Ci0jCSogVXNlIHNldGFmL3NldGFiIGNvbnNpc3RlbnRseSB3aXRoIFNWcjQuCi0jCSogUmVtb3ZlIGVjaCwgZWwxIGZyb20gY29uczI1dywgdGhleSBkbyBub3Qgd29yayBpbiBGcmVlQlNEIDIuMS41Ci0jIDEwLjEuMiAoU2F0IE1heSAyNCAyMToxMDo1NyBFRFQgMTk5NykKLSMJKiB1cGRhdGUgeHRlcm0teGY4Ni12MzIgdG8gbWF0Y2ggWEZyZWU4NiAzLjJBIChjaGFuZ2VzIEYxLUY0KQotIwkqIGFkZCB4dGVybS0xNmNvbG9yLCBmb3IgWEZyZWU4NiAzLjMKLSMgMTAuMS4zIChTYXQgTWF5IDMxIDEyOjIxOjA1IEVEVCAxOTk3KQotIwkqIGNvcnJlY3QgdHlwbyBpbiBlbXUKLSMJKiBjb3JyZWN0IHR5cG8gaW4gdnQxMDItdyAoUm9iZXJ0IFd1ZXN0KQotIwkqIG1ha2UgbmV3IGVudHJ5IHh0ZXJtLXhmODYtdjMzLCByZXN0b3JlZCB4dGVybS14Zjg2LXYzMi4KLSMgMTAuMS40IChTdW4gSnVuIDE1IDA4OjI5OjA1IEVEVCAxOTk3KQotIwkqIHJlbW92ZSBlY2ggY2FwYWJpbGl0eSBmcm9tIHJ4dnQgKGl0IGRvZXMgdGhlIHdyb25nIHRoaW5nKQotIyAxMC4xLjUgKFNhdCBKdW4gMjggMjE6MzQ6MzYgRURUIDE5OTcpCi0jCSogcmVtb3ZlIHNwdXJpb3VzIG5ld2xpbmVzIGZyb20gc2V2ZXJhbCBlbnRyaWVzIChocCtjb2xvciwgd3k1MCwKLSMJICB3eTM1MCwgd3kzNzAtbmssIHd5OTlndC10ZWssIHd5MzcwLXRlaywgaWJtMzE2MSwgdGVrNDIwNSwgY3RybSwKLSMJICBnczYzMDApCi0jIDEwLjEuNiAoU2F0IEp1bCAgNSAxNTowODoxNiBFRFQgMTk5NykKLSMJKiBjb3JyZWN0IHJtc28gY2FwYWJpbGl0eSBvZiB3eTUwLW1jCi0jIDEwLjEuNyAoU2F0IEp1bCAxMiAyMDowNTo1NSBFRFQgMTk5NykKLSMJKiBhZGQgY2J0IHRvIHh0ZXJtLXhmODYtdjMyCi0jCSogZGlzZW50YW5nbGUgc29tZSBlbnRyaWVzIGZyb20gJ3h0ZXJtJywgcHJlZmVycmluZyB4dGVybS1yNiBpbiBjYXNlCi0jCSAgJ3h0ZXJtJyBpcyBkZXJpdmVkIGZyb20geHRlcm0teGY4Ni12MzIsIHdoaWNoIGltcGxlbWVudHMgZWNoIGFuZAotIwkgIG90aGVyIGNhcGFiaWxpdGllcyBub3QgaW4geHRlcm0tcjYuCi0jCSogcmVtb3ZlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGZyb20ga3Rlcm0gZW50cnkuCi0jIDEwLjEuOCAoU2F0IEF1ZyAgMiAxODo0MzoxOCBFRFQgMTk5NykKLSMJKiBjb3JyZWN0IGFjc2MgZW50cmllcyBmb3IgQUNTX0xBTlRFUk4sIHdoaWNoIGlzICdpJywgbm90ICdJJy4KLSMgMTAuMS45IChTYXQgQXVnIDIzIDE3OjU0OjM4IEVEVCAxOTk3KQotIwkqIGFkZCB4dGVybS04Yml0IGVudHJ5LgotIyAxMC4xLjEwIChTYXQgT2N0ICA0IDE4OjE3OjEzIEVEVCAxOTk3KQotIwkqIHJlcGFpciBzZXZlcmFsIHBsYWNlcyB3aGVyZSBlYXJseSB2ZXJzaW9uIG9mIHRpYyByZXBsYWNlZCBcLCB3aXRoIFxcXCwKLSMJKiBtYWtlIGFjc2MgZW50cmllcyBjYW5vbmljYWwgZm9ybSAoc29ydGVkLCB1bmlxKS4KLSMJKiBtb2RpZnkgYWNzYyBlbnRyaWVzIGZvciBsaW51eCwgbGludXgta29pOAotIwkqIG5ldyByeHZ0IGVudHJ5LCBmcm9tIGNvcnJlY3RlZCBjb3B5IG9mIGRpc3RyaWJ1dGlvbiBpbiByeHZ0IDIuMjFiCi0jCSogYWRkIGNvbG9yLCBtb3VzZSBzdXBwb3J0IHRvIGt0ZXJtLgotIyAxMC4xLjExIChTYXQgT2N0IDExIDE0OjU3OjEwIEVEVCAxOTk3KQotIwkqIGNvcnJlY3Qgd3kxMjAgc214b24vdGJjIGNhcGFiaWxpdGllcyB3aGljaCB3ZXJlIHN0dWNrIHRvZ2V0aGVyLgotIyAxMC4xLjEyIChTYXQgT2N0IDE4IDE3OjM4OjQxIEVEVCAxOTk3KQotIwkqIGFkZCBlbnRyeSBmb3IgeHRlcm0teGY4Ni12Mzl0Ci0jIDEwLjEuMTMgKFNhdCBOb3YgIDggMTM6NDM6MzMgRVNUIDE5OTcpCi0jCSogYWRkIHU4LHU5IHRvIHN1bi1pbCBkZXNjcmlwdGlvbgotIyAxMC4xLjE0IChTYXQgTm92IDIyIDE5OjU5OjAzIEVTVCAxOTk3KQotIwkqIGFkZCB2dDIyMC1qcywgcGlsb3QsIHJiY29tbSwgZGF0YXBvaW50IGVudHJpZXMgZnJvbSBlc3IncyAyNy1qdW4tOTcKLSMJICB2ZXJzaW9uLgotIwkqIGFkZCBoZHMyMDAgZGVzY3JpcHRpb24gKFdhbHRlciBTa29yc2tpKQotIwkqIGFkZCBFTVggMC45YiBkZXNjcmlwdGlvbnMKLSMJKiBjb3JyZWN0IHJtc28vc21zbyBjYXBhYmlsaXRpZXMgaW4gd3kzMC1tYyBhbmQgd3k1MC1tYyAoRGFuaWVsIFdlYXZlcikKLSMJKiByZW5hbWUgeGhwdGVybSBiYWNrIHRvIGhwdGVybS4KLSMgMTAuMS4xNSAoU2F0IE5vdiAyOSAxOToyMTo1OSBFU1QgMTk5NykKLSMJKiBjaGFuZ2UgaW5pdGMgaW4gbGludXgtYy1uYyB0byB1c2UgMC4uMTAwMCByYW5nZS4KLSMgMTAuMS4xNiAoU2F0IERlYyAxMyAxOTo0MTo1OSBFU1QgMTk5NykKLSMJKiByZW1vdmUgaHBhL3ZwYSBmcm9tIHJ4dnQsIHdoaWNoIGltcGxlbWVudHMgdGhlbSBpbmNvcnJlY3RseS4KLSMJKiBhZGQgc2dyMCBmb3Igcnh2dC4KLSMJKiByZW1vdmUgYm9ndXMgc21hY3Mvcm1hY3MgZnJvbSBFTVggZGVzY3JpcHRpb25zLgotIyAxMC4xLjE3IChTYXQgRGVjIDIwIDE3OjU0OjEwIEVTVCAxOTk3KQotIwkqIHJldmlzZWQgZW50cnkgZm9yIGF0dDczMDAKLSMgMTAuMS4xOCAoU2F0IEphbiAgMyAxNzo1ODo0OSBFU1QgMTk5OCkKLSMJKiB1c2UgXDAgcmF0aGVyIHRoYW4gXDIwMC4KLSMJKiByZW5hbWUgcnh2dC1jb2xvciB0byByeHZ0IHRvIG1hdGNoIHJ4dnQgMi40LjUgZGlzdHJpYnV0aW9uLgotIyAxMC4xLjE5IChTYXQgSmFuIDE3IDE0OjI0OjU3IEVTVCAxOTk4KQotIwkqIGNoYW5nZSB4dGVybSAoeHRlcm0teGY4Ni12NDApLCB4dGVybS04Yml0IHJzMSB0byB1c2UgaGFyZCByZXNldC4KLSMJKiByZW5hbWUgeHRlcm0teGY4Ni12Mzl0IHRvIHh0ZXJtLXhmODYtdjQwCi0jCSogcmVtb3ZlIGJvbGQvdW5kZXJsaW5lIGZyb20gc3VuIGNvbnNvbGUgZW50cmllcyBzaW5jZSB0aGV5J3JlIG5vdAotIwkgIGltcGxlbWVudGVkLgotIyAxMC4xLjIwIChTYXQgSmFuIDI0IDExOjAyOjUxIEVTVCAxOTk4KQotIwkqIGFkZCBiZXRlcm0gZW50cnkgKEZyZWQgRmlzaCkKLSMJKiBhZGQgaXJpeC1jb2xvci94d3NoIGVudHJ5LgotIwkqIHR1cm4gbmN2IG9mZiBmb3IgbGludXguCi0jIDEwLjEuMjEgKFNhdCBKYW4gMzEgMTc6Mzk6MTYgRVNUIDE5OTgpCi0jCSogc2V0IG5jdiBmb3IgRnJlZUJTRCBjb25zb2xlICh0cmVhdCBjb2xvcnMgd2l0aCByZXZlcnNlIHNwZWNpYWxseSkuCi0jCSogcmVtb3ZlIHNnciBzdHJpbmcgZnJvbSBxbnggYmFzZWQgb24gcmVwb3J0IGJ5IFhpYW9kYW4gVGFuZwotIyAxMC4xLjIyIChXZWQgRmViIDExIDE4OjQwOjEyIEVTVCAxOTk4KQotIwkqIHJlbW92ZSBzcHVyaW91cyBjb21tYXMgZnJvbSBkZXNjcmlwdGlvbnMKLSMJKiBjb3JyZWN0IHh0ZXJtLThiaXQgdG8gbWF0Y2ggWEZyZWU4NiAzLjlBZCBGMS1GNC4KLSMgMTAuMS4yMyAoU2F0IEZlYiAyOCAxNzo0ODozOCBFU1QgMTk5OCkKLSMJKiBhZGQgbGludXgta29pOHIgdG8gcmVwbGFjZSBsaW51eC1rb2k4ICh3aGljaCB1c2VzIGEgY29ycnVwdCBhY3NjLAotIwkgIGFwcGFyZW50bHkgYmFzZWQgb24gY3AtODY2KS4KLSMKLSMtKHJlcGxhY2VkLWNoYW5nZWxvZy0xOTk4LzAyLzI4LWJ5LUVTUiktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jIDkuMTMuMjMgKEZyaSBGZWIgMjEgMTY6MzY6MDYgRVNUIDE5OTcpOgotIwkqIFJlcGxhY2VkIG1pbml0ZWwtMiBlbnRyeS4KLSMJKiBBZGRlZCBNR1IsIGFuc2ktbnQuCi0jCSogTWlub3IgY29ycmVjdGlvbnMgdG8geHRlcm0gZW50cmllcy4KLSMJKiBSZXBsYWNlZCBFV0FOIHRlbG5ldCBlbnRyeS4KLSMJKiBEcm9wcGVkIHRoZSByZW9yZGVyIHNjcmlwdCBnZW5lcmF0b3IuICBJdCB3YXMgYSBmb3NzaWwuCi0jIDkuMTMuMjQgKFN1biBGZWIgMjMgMjA6NTU6MjMgRVNUIDE5OTcpOgotIwkqIFRob3JzdGVuIExvY2tlcnQgYWRkZWQgdGVybWNhcCBgYnMnIHRvIGEgbG90IG9mIHR5cGVzLCB3b3JraW5nIGZyb20KLSMJICB0aGUgNC40QlNEIExpdGUyIGZpbGUuCi0jIDkuMTMuMjUgKEZyaSBKdW4gMjAgMTI6MzM6MzYgRURUIDE5OTcpOgotIwkqIEFkZGVkIERhdGFwb2ludCA4MjQyLCBwaWxvdCwgYW5zaV9wc3gsIHJiY29tbSwgdnQyMjBqcy4KLSMJKiBVcGRhdGVkIGlyaXMtYW5zaTsgY29ycmVjdGVkIHZ0MTAyLXcuCi0jCSogU3dpdGNoIGJhc2UgeHRlcm0gZW50cnkgdG8gMy4zIGxldmVsLgotIyA5LjEzLjI2IChNb24gSnVuIDMwIDIyOjQ1OjQ1IEVEVCAxOTk3KQotIwkqIEFkZGVkIGJhc2ljNC4KLSMJKiBSZW1vdmVkIHJtaXIvc21pciBmcm9tIHR2OTJCLgotIwotIyAxMC4yLjAgKFNhdCBGZWIgMjggMTI6NDc6MzYgRVNUIDE5OTgpOgotIwkqIGFkZCBoZHMyMDAgZGVzY3JpcHRpb24gKFdhbHRlciBTa29yc2tpKQotIwkqIGFkZCBiZXRlcm0gZW50cnkgKEZyZWQgRmlzaCkKLSMJKiBhZGQgVGhvbWFzIERpY2tleSdzIHh0ZXJtLXhmODYtdjQwLCB4dGVybS04Yml0LCB4dGVybS0xNmNvbG9yLAotIwkgIGlyaXMtY29sb3IgZW50cmllcy4KLSMJKiBhZGQgZW14IGVudHJpZXMuCi0jCSogUmVwbGFjZWQgdW5peHBjIGVudHJ5IHdpdGggQmVuamFtaW4gU2l0dGxlcidzIGNvcnJlY3RlZCB2ZXJzaW9uLgotIwkqIFJlcGxhY2VkIHh0ZXJtL3J4dnQvZW11L3N5c2NvbnMgZW50cmllcyB3aXRoIFRob21hcyBEaWNrZXkncwotIwkgIHZlcnNpb25zLgotIwkqIHJlbW92ZSBzZ3Igc3RyaW5nIGZyb20gcW54IGJhc2VkIG9uIHJlcG9ydCBieSBYaWFvZGFuIFRhbmcKLSMJKiBBZGRlZCB1OC91OSwgcmVtb3ZlZCBybXVsL3NtdWwgZnJvbSBzdW4taWwuCi0jCSogNC4yIHRpYyBkaXNwbGF5cyBcMCByYXRoZXIgdGhhbiBcMjAwLgotIwkqIGFkZCBsaW51eC1rb2k4ciB0byByZXBsYWNlIGxpbnV4LWtvaTggKHdoaWNoIHVzZXMgYSBjb3JydXB0IGFjc2MsCi0jCSAgYXBwYXJlbnRseSBiYXNlZCBvbiBjcC04NjYpLgotIwkqIE1lcmdlZCBpbiBQYXZlbCBSb3NraW4ncyBhY3NjIGZvciBsaW51eC1rb2k4Ci0jCSogQ29ycmVjdGVkIHNvbWUgZXJyb25lb3VzIFxcJ3MgdG8gXC4KLSMJKiA0LjIgbmN1cnNlcyBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSBzZXRhZi9zZXRhYiwgY29uc2lzdGVudCB3L1N5c1YuCi0jCSogSUkgLT4gaWkgaW4gcGN2dFhYLCBzY3JlZW4sIHh0ZXJtLgotIwkqIFJlbW92ZWQgXG4gY2hhcnMgZm9sbG93aW5nIEFOU0kgZXNjYXBlcyBpbiBzZ3IgJiBmcmllbmRzLgotIwkqIFVwZGF0ZWQgV3lzZSBlbnRyaWVzLgotIwkqIGgxOSBjb3JyZWN0aW9ucyBmcm9tIFRpbSBQaWVyY2UuCi0jCSogTm90ZWQgdGhhdCB0aGUgZG0yNTAwIGhhcyBib3RoIGljaCBhbmQgc21pci4KLSMJKiBhZGRlZCBwY2NvbnMgZm9yIHRoZSBBbHBoYSB1bmRlciBPU0YvMS4KLSMJKiBBZGRlZCBTb255IE5FV1Mgd29ya3N0YXRpb24gZW50cmllcyBhbmQgY2l0MTAxZS1ydi4KLSMJKiBSZXZlcnRlZCBgYW1pZ2EnOyB0byBLZW50IFBvbGsncyB2ZXJzaW9uLCBhcyBJJ20gdG9sZAotIwkgIHRoZSBWZXJrdWlsIGVudHJ5IG1lc3NlcyB1cCB3aXRoIEFtaWdhIFRlbG5ldC4KLSMgMTAuMi4xIChTdW4gTWFyICA4IDE4OjMyOjA0IEVTVCAxOTk4KToKLSMJKiBDb3JyZWN0ZWQgYXR0cmlidXRpb25zIGluIDEwLjIuMCByZWxlYXNlIG5vdGVzLgotIwkqIFNjYW5uZWQgdGhlIFNodWZvcmQgYXJjaGl2ZSBmb3IgbmV3IHRlcm1pbmZvcyBhbmQgaW5mb3JtYXRpb24uCi0jCSogUmVtb3ZlZCBzZ3IgZnJvbSBxbnggZW50cnkgKFRob21hcyBEaWNrZXkpLgotIwkqIEFkZGVkIGVudHJpZXMgZm9yIElDTCBhbmQgS29rdXNhaSBEYXRhIFN5c3RlbXMgdGVybWluYWxzLgotIwkqIEluY29ycG9yYXRlZCBOQ1IgdGVybWluZm9zIGZyb20gdGhlIEJvdW5kbGVzcyBUZWNobm9sb2d5IEZUUCBzaXRlLgotIwkqIEluY29ycG9yYXRlZCBhdHQ3MDAgZnJvbSB0aGUgQm91bmRsZXNzIFRlY2hub2xvZ3kgRlRQIHNpdGUuCi0jCSogTWlzY2VsbGFuZW91cyBjb250YWN0LWFkZHJlc3MgYW5kIFdlYi1wYWdlIHVwZGF0ZXMuCi0jCi0jLShjaGFuZ2Vsb2ctYmVnaW5uaW5nLW5jdXJzZXMtNC4yKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyAxOTk4LzUvOQotIwkqIGFkZCBueHRlcm0gYW5kIHh0ZXJtLWNvbG9yIHRlcm1pbmZvIGRlc2NyaXB0aW9uIChyZXF1ZXN0IGJ5IENyaXN0aWFuCi0jCSAgR2FmdG9uIDxnYWZ0b25AcmVkaGF0LmNvbT4pLgotIwkqIG1vZGlmeSByeHZ0IHRlcm1pbmZvIGRlc2NyaXB0aW9uIHRvIGNsZWFyIGFsdGVybmF0ZSBzY3JlZW4gYmVmb3JlCi0jCSAgc3dpdGNoaW5nIGJhY2sgdG8gbm9ybWFsIHNjcmVlbiwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhcHBsaWNhdGlvbnMKLSMJICB3aGljaCB1c2UgeHRlcm0gKHJlcG9ydGVkIGJ5IE1hbm9qIEthc2ljaGFpbnVsYSA8bWFub2prQGlvLmNvbT4pLgotIwkqIG1vZGlmeSBsaW51eCB0ZXJtaW5mbyBkZXNjcmlwdGlvbiB0byByZXNldCBjb2xvciBwYWxldHRlIChyZXBvcnRlZAotIwkgIGJ5IFRlbGZvcmQgVGVuZHlzIDx0ZWxmb3JkQGVuZy51dHMuZWR1LmF1PikuCi0jCi0jIDE5OTgvNy80Ci0jCSogbWVyZ2UgY2hhbmdlcyBmcm9tIGN1cnJlbnQgWEZyZWU4NiB4dGVybSB0ZXJtaW5mbyBkZXNjcmlwdGlvbnMuCi0jCi0jIDE5OTgvNy8yNQotIwkqIEFkZGVkIG1pbml0ZWwxIGVudHJpZXMgZnJvbSBBbGV4YW5kZXIgTW9udGFyb24uCi0jCSogQWRkZWQgcW54dDIgZnJvbSBGZWRlcmljbyBCaWFuY2hpLgotIwkqIEFkZGVkIGFybTEwMCB0ZXJtaW5mbyBlbnRyaWVzIGZyb20gRGF2ZSBNaWxsZW4uCi0jCi0jIDE5OTgvOC82Ci0jCSogQWRkZWQgbmNzYSB0ZWxuZXQgZW50cmllcyBmcm9tIEZyYW5jZXNjbyBQb3RvcnRpCi0jCi0jIDE5OTgvOC8xNQotIwkqIG1vZGlmeSBuY3NhIHRlbG5ldCBlbnRyeSB0byByZWZsZWN0IGNvbG9yLCBvdGhlciBjYXBhYmlsaXRpZXMgYmFzZWQgb24KLSMJICBleGFtaW5hdGlvbiBvZiB0aGUgc291cmNlIGNvZGUgLSBULkRpY2tleS4KLSMKLSMgMTk5OC84LzIyCi0jCSogQ29ycmVjdGVkIHNvbWUgZXJyb25lb3VzIFxcJ3MgdG8gXCAoZXRlcm0sIG9zYm9ybmUpIC0gVEQuCi0jCi0jIDE5OTgvOC8yOQotIwkqIEFkZGVkIEZyYW5jZXNjbyBQb3RvcnRpJ3MgdHVuZWQgV3lzZSA5OSBlbnRyaWVzLgotIwkqIGR0dGVybSBlbmFjcyBjb3JyZWN0aW9uIGZyb20gQWxleGFuZGVyIFYuIEx1a3lhbm92LgotIwkqIEFkZCBuY3NhLW5zLCBuY3NhLW0tbnMgYW5kIG5jc2EtbSBlbnRyaWVzIGZyb20gZXNyIHZlcnNpb24uCi0jCSogY29ycmVjdCBhIHR5cG8gaW4gaWNsNjQwNCBlbnRyeS4KLSMJKiBhZGQgeHRlcm1tIGFuZCB4dGVybWMKLSMKLSMgMTk5OC85LzI2Ci0jCSogZm9ybWF0IG1vc3QgJSdjaGFyJyBzZXF1ZW5jZXMgdG8gJXtudW1iZXJ9Ci0jCSogYWRhcHQgSUJNIEFJWCAzLjIuNSB0ZXJtaW5mbyAtIFQuRGlja2V5Ci0jCSogbWVyZ2UgRGF0YSBHZW5lcmFsIHRlcm1pbmZvIGZyb20gSGFzdWZpbiA8aGFzdWZpbkB2aWRuZXQubmV0PiAtIFRECi0jCi0jIDE5OTgvMTAvMTAKLSMJKiB1cGRhdGUgeHRlcm0teGZyZWU4NiB0byBjdXJyZW50IChwYXRjaCA4NCksIGZvciBpczIvcnMyIGNoYW5nZXMgLSBURAotIwkqIGNvcnJlY3QgaW5pdGlhbGl6YXRpb24gc3RyaW5nIGluIHh0ZXJtLXI1LCBhZGQgbWlzYyBvdGhlciBmZWF0dXJlcwotIwkgIHRvIGNvcnJlc3BvbmQgd2l0aCB4dGVybSBwYXRjaCA4NCAtIFRECi0jCi0jIDE5OTgvMTIvMTkKLSMJKiB1cGRhdGUgeHRlcm0teGZyZWU4NiB0byBjdXJyZW50IChwYXRjaCA5MCksIHNtY3VyL3JtY3VyIGNoYW5nZXMgLSBURAotIwkqIGFkZCBNYXRoZXcgVmVybm9uJ3MgbWFjaCBjb25zb2xlIGVudHJpZXMKLSMJKiBjb3JyZWN0aW9ucyBmb3IgbmNzYSBmdW5jdGlvbi1rZXlzIChyZXBvcnQgYnkgTGFycnkgVmlyZGVuKQotIwotIyAxOTk4LzEyLzE5Ci0jCSogY2hhbmdlIGxpbnV4IHRvIHVzZSBuY3YjMiwgc2luY2UgdW5kZXJsaW5lIGRvZXMgbm90IHdvcmsgd2l0aCBjb2xvciAtIFRECi0jCi0jIDE5OTkvMS85Ci0jCSogYWRkIGtidCB0byBpcmlzLWFuc2ksIGRvY3VtZW50IG90aGVyIHNoaWZ0L2NvbnRyb2wgZnVuY3Rpb25rZXlzIC0gVEQKLSMJKiBjb3JyZWN0IGlyaXMtYW5zaSBhbmQgaXJpcy1hbnNpLWFwIHdpdGggcmVzcGVjdCB0byBub3JtYWwgdnMga2V5cGFkCi0jCSAgYXBwbGljYXRpb24gbW9kZXMsIGNoYW5nZSBrZW50IHRvIHVzZSB0aGUgY29ycmVjdCBrZXlwYWQgY29kZSAtIFRECi0jCi0jIDE5OTkvMS8xMAotIwkqIGFkZCBlbnRyeSBmb3IgVGVyYSBUZXJtIC0gVEQKLSMKLSMgMTk5OS8xLzIzCi0jCSogbWlub3IgaW1wcm92ZW1lbnRzIGZvciB0ZXJhdGVybSBlbnRyeSAtIFRECi0jCSogcmVuYW1lIHNldmVyYWwgZW50cmllcyB1c2VkIGJ5IEJTREk6IGJzZG9zIHRvIGJzZG9zLXBjLW5vYm9sZCwKLSMJICBhbmQgYnNkb3MtYm9sZCB0byBic2Rvcy1wYyAoSmVmZnJleSBDIEhvbmlnKQotIwotIyAxOTk5LzIvMjAKLSMJKiByZXNvbHZlIGFtYmlndWl0eSBvZiBrZW5kL2tsbC9rc2x0IGFuZCBraG9tZS9rZm5kL2tpY2gxIHN0cmluZ3MgaW4KLSMJICB4dGVybSBhbmQgbmNzYSBlbnRyaWVzIGJ5IHJlbW92aW5nIHRoZSB1bm5lZWRlZCBvbmVzLiAgTm90ZSB0aGF0Ci0jCSAgc29tZSBlbnRyaWVzIHdpbGwgcmV0dXJuIGtlbmQgJiBraG9tZSB2ZXJzdXMga3NsdCBhbmQga2ZuZCwgZm9yCi0jCSAgUEMtc3R5bGUga2V5Ym9hcmRzIHZlcnN1cyBzdHJpY3QgdnQyMjAgY29tcGF0aWJsaXR5IC0gVEQKLSMKLSMgMTk5OS8zLzEzCi0jCSogYWRqdXN0IHh0ZXJtLXhmcmVlODYga2hvbWUva2VuZCB0byBtYXRjaCBkZWZhdWx0IFBDLXN0eWxlIGtleWJvYXJkCi0jCSAgdGFibGVzIC0gVEQKLSMJKiBhZGQgJ2NydCcgZW50cnkgLSBURAotIwkqIGNvcnJlY3QgdHlwb3MgaW4gJ2xpbnV4LWMnIGVudHJ5IC0gVEQKLSMKLSMgMTk5OS8zLzE0Ci0jCSogdXBkYXRlIGVudHJpZXMgZm9yIEJTRC9PUyBjb25zb2xlIHRvIHVzZSBrbG9uZStzZ3IgYW5kIGtsb25lK2NvbG9yCi0jCSAgKEplZmZyZXkgQyBIb25pZykKLSMKLSMgMTk5OS8zLzI3Ci0jCSogYWRqdXN0IHh0ZXJtLXhmcmVlODYgbWlzY2VsbGFuZW91cyBrZXlwYWQga2V5cywgYXMgcGVyIHBhdGNoICM5NCAtIFRELgotIwotIyAxOTk5LzQvMTAKLSMJKiBhZGQgbGludXgtbGF0LCBmcm9tIFJlZEhhdCBwYXRjaGVzIHRvIG5jdXJzZXMgNC4yCi0jCi0jIDE5OTkvNC8xNwotIwkqIGFkZCBjb21wbGV0ZSBzZXQgb2YgZGVmYXVsdCBmdW5jdGlvbi1rZXkgZGVmaW5pdGlvbnMgZm9yIHNjb2Fuc2kgLSBURC4KLSMKLSMgMTk5OS83LzMKLSMJKiBhZGQgY25vcm0sIGN2dmlzIGZvciBMaW51eCAyLjIga2VybmVscwotIwotIyAxOTk5LzcvMjQKLSMJKiBhZGQga21vdXMgdG8geHRlcm0tcjUgLVRECi0jCSogY29ycmVjdCBlbnRyaWVzIHh0ZXJtK3NsIGFuZCB4dGVybStzbC10d20sIHdoaWNoIHdlcmUgbWlzc2luZyB0aGUKLSMJICBwYXJlbnQgInVzZSIgY2xhdXNlIC1URAotIwotIyAxOTk5LzcvMzEKLSMJKiBjb3JyZWN0ZWQgY25vcm0sIGFkZGVkIGVsMSBpbiAnc2NyZWVuJyBkZXNjcmlwdGlvbiAtVEQKLSMKLSMgMTk5OS84LzE0Ci0jCSogYWRkIG1zLXZ0MTAwIC1URAotIwotIyAxOTk5LzgvMjEKLSMJKiBjb3JyZWN0aW9ucyB0byBiZXRlcm0gZW50cnkgLVRECi0jCi0jIDE5OTkvOC8yOAotIwkqIGFkZCBjeWd3aW4gZW50cnkgLVRECi0jCi0jIDE5OTkvOS80Ci0jCSogbWlub3IgY29ycmVjdGlvbnMgZm9yIGJldGVybSBlbnRyeSAtVEQKLSMKLSMgMTk5OS85LzE4Ci0jCSogYWRkIGFjc2Mgc3RyaW5nIHRvIEhQIDcwMDkyIHRlcm1pbmZvIGVudHJ5IC1Kb2VyZyBXdW5zY2gKLSMKLSMgMTk5OS85LzI1Ci0jCSogYWRkIGFtaWdhLThiaXQgZW50cnkKLSMJKiBhZGQgY29uc29sZSBlbnRyaWVzIGZyb20gTmV0QlNEOiBvZmNvbnMsIHdzdnQyNSwgd3N2dDI1bSwgcmNvbnMsCi0jCSAgcmNvbnMtY29sb3IsIGJhc2VkIG9uCi0jCSAgZnRwOi8vZnRwLm5ldGJzZC5vcmcvcHViL05ldEJTRC9OZXRCU0QtY3VycmVudC9zcmMvc2hhcmUvdGVybWNhcC90ZXJtY2FwLnNyYwotIwkqIGFkZCBhbGlhcyBmb3IgaXJpcy1hbnNpLW5ldAotIwotIyAxOTk5LzEwLzIKLSMJKiBjb3JyZWN0ZWQgc2NvYW5zaSBlbnRyeSdzIGFjc2MsIHNvbWUgZnVuY3Rpb24ga2V5cywgYWRkIGNvbG9yIC1URAotIwotIyAxOTk5LzEwLzIzCi0jCSogYWRkIGNub3JtLCBjdnZpcyB0byBjb25zMjV3LCBhbmQgbW9kaWZ5IG5jdiB0byBhZGQgJ2RpbScgLVRECi0jCSogcmVvcmRlciBuY3NhIGVudHJpZXMgdG8gbWFrZSBuY3NhLXZ0MjIwIHVzZSB0aGUgYWx0ZXJuYXRlIGZ1bmN0aW9uCi0jCSAga2V5IG1hcHBpbmcsIGxlYXZpbmcgUG90b3J0aSdzIGVudHJpZXMgbW9yZSBsaWtlIGhlIG5hbWVkIHRoZW0gLVRECi0jCSogcmVtb3ZlIGVudGVyL2V4aXQgYW0tbW9kZSBmcm9tIGN5Z3dpbiAtVEQKLSMKLSMgMTk5OS8xMC8zMAotIwkqIGNvcnJlY3QgdHlwb3MgaW4gc2V2ZXJhbCBlbnRyaWVzIChtaXNzaW5nICdbJyBmcm9tIENTSSk6Ci0jCSAgbWdyLXN1biwgbmNzYS1tLCB2dDMyMC1rMywgYXR0NTA1LCBhdnQtbnMsIGFzIHdlbGwgYXMgc21pci9ybWlyCi0jCSAgc3RyaW5ncyBmb3IgYXZ0LW5zIC1URAotIwkqIGFkZCAnZGltJyB0byBuY3YgbWFzayBmb3IgbGludXggKHJlcG9ydCBieSBLbGF1cyBXZWlkZSkuCi0jCi0jIDE5OTkvMTEvMjcKLSMJKiBjb3JyZWN0IGtmMS1rZjQgaW4geHRlcm0tcjYgd2hpY2ggd2VyZSB2dDEwMC1zdHlsZSBQRjEtUEY0IC1URAotIwkqIGFkZCBodHMgdG8geHRlcm0tcjYsIGFuZCB1Ni11OSB0byB4dGVybS1yNSAtVEQKLSMJKiBhZGQgeHRlcm0tODhjb2xvciBhbmQgeHRlcm0tMjU2Y29sb3IgLVRECi0jCi0jIDE5OTkvMTIvNAotIwkqIGFkZCAib2Jzb2xldGUiIHRlcm1jYXAgc3RyaW5ncyAtVEQKLSMJKiBhZGQga3Z0IGFuZCBnbm9tZSBlbnRyaWVzIC1URAotIwotIyAxOTk5LzEyLzExCi0jCSogY29ycmVjdCBjdXAgc3RyaW5nIGZvciByZWdlbnQxMDAgLVRECi0jCi0jIDIwMDAvMS8xCi0jCSogdXBkYXRlIG1hY2gsIGFkZCBtYWNoLWNvbG9yIGJhc2VkIG9uIERlYmlhbiBkaWZmcyBmb3IgbmN1cnNlcyA1LjAgLVRECi0jCSogYWRkIGVudHJpZXMgZm9yIHh0ZXJtLWhwLCB4dGVybS12dDIyMCwgeHRlcm0tdnQ1MiBhbmQgeHRlcm0tbm9hcHAgLVRECi0jCSogY2hhbmdlIE9UcnMgY2FwYWJpbGl0aWVzIHRvIHJzMiAtVEQKLSMJKiBhZGQgb2Jzb2xldGUgYW5kIGV4dGVuZGVkIGNhcGFiaWxpdGllcyB0byAnc2NyZWVuJyAtVEQKLSMKLSMgMjAwMC8xLzUKLSMJKiByZW1vdmUga2YwIGZyb20gcnh2dCwgdnQ1MjAsIHZ0NTI1IGFuZCBpYm01MTUxIHNpbmNlIGl0IGNvbmZsaWN0cwotIwkgIHdpdGgga2YxMCAtVEQKLSMJKiB1cGRhdGVkIHh0ZXJtLXhmODYtdjQwLCBtYWtpbmcga2RjaDEgY29ycmVzcG9uZCB0byB2dDIyMCAnUmVtb3ZlJywKLSMJICBhbmQgYWRkaW5nIGtjYnQgLVRECi0jCi0jIDIwMDAvMS8xMgotIwkqIHJlbW92ZSBpbmNvcnJlY3Qga2hvbWUva2VuZCBmcm9tIHh0ZXJtLXhmODYtdjMzMywgd2hpY2ggd2FzIGJhc2VkIG9uCi0jCSAgbm9uc3RhbmRhcmQgcmVzb3VyY2Ugc2V0dGluZ3MgLVRECi0jCi0jIDIwMDAvMi8yNgotIwkqIG1pbm9yIGZpeGVzIGZvciB4dGVybS0qLCBiYXNlZCBvbiBEZWJpYW4gIzU4NTMwIC1URAotIwotIyAyMDAwLzMvNAotIwkqIGFkZCBzZXZlcmFsIHRlcm1pbmFsIHR5cGVzIGZyb20gZXNyJ3MgIjExLjAiLCBhcyB3ZWxsIGFzIGNvbW1lbnRzLgotIwkgIGJxMzAwKiwgZGt1NzEwMi1vbGQsIGRrdTcyMDIsIGhmdCwgbGZ0LCBwY213LCBwbWNvbnMsIHR3cyosIHZpcCosCi0jCSAgdnQyMjAtOGJpdCwgdnQyMjAtb2xkLCB3eTg1LThiaXQKLSMKLSMgMjAwMC8zLzE4Ci0jCSogYWRkIHNldmVyYWwgdGVybWluYWwgdHlwZXMgZnJvbSBlc3IncyAiMTEuMC4xIiAoYW5zaS0qKS4KLSMJKiB1cGRhdGUgT1R4eCBjYXBhYmlsaXRpZXMgZm9yIGNoYW5nZXMgb24gMjAwMC8zLzQuCi0jCSogcmV2ZXJ0IHBhcnQgb2YgdnQyMjAgY2hhbmdlIChyZXF1ZXN0IGJ5IFRvZGQgQyBNaWxsZXIgZm9yIE9wZW5CU0QpCi0jCi0jIDIwMDAvMy8yNgotIwkqIG1vdmUgc2NyZWVuJ3MgQVggZXh0ZW5zaW9uIHRvIGVjbWErY29sb3IsIG1vZGlmeSBzZXZlcmFsIGVudHJpZXMgdG8KLSMJICB1c2UgdGhhdCwgYWRqdXN0aW5nIG5jdiBhcyBuZWVkZWQgLVRECi0jCi0jIDIwMDAvNC84Ci0jCSogYWRkIGJzZG9zLXBjLW0sIGJzZG9zLXBjLW1vbm8gKEplZmZyZXkgQyBIb25pZykKLSMJKiBjb3JyZWN0IHNwZWxsaW5nIGVycm9yIGluIGVudHJ5IG5hbWU6IGJxMzAwLXJ2IHdhcyBnaXZlbiBhcyBiZzMwMC1ydgotIwkgIGluIGVzcidzIHZlcnNpb24uCi0jCi0jIDIwMDAvNC8xNQotIwkqIGFkZCBjdWQsIGVjaCwgZXRjLiwgdG8gYmV0ZXJtIGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gUmljbyBUdWRvciAtVEQKLSMJKiBjb3JyZWN0IGNvbG9yIGRlZmluaXRpb24gZm9yIGlibTMxNjQsIG1ha2UgbWlub3IgY2hhbmdlcyB0byBvdGhlcgotIwkgIElCTSB0ZXJtaW5hbCBkZWZpbml0aW9ucyBiYXNlZCBvbiByZWNlbnQgdGVybWluZm8gZGVzY3JpcHRpb25zIC1URAotIwotIyAyMDAwLzQvMjIKLSMJKiBhZGQgbWd0ZXJtLCBmcm9tIE5ldEJTRCAtVEQKLSMJKiBhZGQgYWxpYXMgc3VuLWNnc2l4IGZvciBzdW4tc3M1IGFzIHBlciBOZXRCU0QKLSMJKiBjaGFuZ2UgY29uczI1dyB0byB1c2UgcnMyIGZvciByZXNldCByYXRoZXIgdGhhbiByczEgLVRECi0jCSogYWRkIHJjL3NjIHRvIGFpeHRlcm0gYmFzZWQgb24gbWFucGFnZSAtVEQKLSMKLSMgMjAwMC81LzEzCi0jCSogcmVtb3ZlIG5jdiBmcm9tIHh0ZXJtLTE2Y29sb3IsIHh0ZXJtLTI1NmNvbG9yCi0jCi0jIDIwMDAvNi8xMAotIwkqIGFkZCBrbW91cyBjYXBhYmlsaXR5IHRvIGxpbnV4IHRvIHVzZSBKb2VyZyBTY2hvZW4ncyBncG0gcGF0Y2guCi0jCi0jIDIwMDAvNy8xCi0jCSogYWRkIEV0ZXJtIChNaWNoYWVsIEplbm5pbmdzKQotIwotIyAyMDAwLTA3LTE4Ci0jICAgICAgICogYWRkIGFtaWdhLXZuYyBlbnRyeS4KLSMKLSMgMjAwMC0wOC0xMgotIwkqIGNvcnJlY3QgZGVzY3JpcHRpb24gb2YgVG9wIEd1biBUZWxuZXQuCi0jCSogYWRkIGt0ZXJtLWNvbG9yCi0jCi0jIDIwMDAtMDgtMjYKLSMJKiBhZGQgcWFuc2kqIGVudHJpZXMgZnJvbSBRTlggZnRwIHNpdGUuCi0jCi0jIDIwMDAtMDktMTYKLSMJKiBhZGQgTWF0cml4IE9yYml0YWwgZW50cmllcyBieSBFcmljIFouIEF5ZXJzKS4KLSMJKiBhZGQgeHRlcm0tYmFzaWMsIHh0ZXJtLXNjbyBlbnRyaWVzLCB1cGRhdGUgcmVsYXRlZCBlbnRyaWVzIHRvIFhGcmVlODYKLSMJICA0LjAuMWMgLVRECi0jCi0jIDIwMDAtMDktMTcKLSMJKiBhZGQgUzAsIEUwIGV4dGVuc2lvbnMgdG8gc2NyZWVuJ3MgZW50cnkgLVRECi0jCi0jIDIwMDAtMDktMjMKLSMJKiBzZXZlcmFsIGNvcnJlY3Rpb25zIGJhc2VkIG9uIHRpYydzIG5ldyBwYXJhbWV0ZXItY2hlY2tpbmcgY29kZSAtVEQKLSMJKiBtb2RpZnkgeHRlcm0tcjYgYW5kIHNpbWlsYXIgcnMyIHNlcXVlbmNlcyB3aGljaCBoYWQgXEU3Li4uXEU4Ci0jCSAgYnJhY2tldGluZyBzZXF1ZW5jZXMgdGhhdCByZXNldCB2aWRlbyBhdHRyaWJ1dGVzIChcRTggd291bGQgcmVzdG9yZQotIwkgIHRoZW0pIC1URAotIwotIyAyMDAwLTExLTExCi0jCSogcmVuYW1lIGN5Z3dpbiB0byBjeWd3aW5CMTksIGFkYXB0IG5ld2VyIGVudHJ5IGZyb20gRWFybmllIEJveWQgLVRECi0jCi0jIDIwMDAtMTItMTYKLSMJKiBpbXByb3ZlZCBzY29hbnNpLCBiYXNlZCBvbiBTQ08gbWFuLXBhZ2UsIGFuZCB0ZXN0aW5nIGNvbnNvbGUsCi0jCSAgc2NvdGVybSB3aXRoIHRhY2sgLVRECi0jCi0jIDIwMDEtMDEtMjcKLSMJKiBtb2RpZnkga3Rlcm0gdG8gdXNlIGFjc2MgdmlhIFNDUyBjb250cm9scy4KLSMKLSMgMjAwMS0wMi0xMAotIwkqIHNjcmVlbiAzLjkuOCBhbGxvd3MgeHRlcm0gbW91c2UgY29udHJvbHMgdG8gcGFzcy10aHJvdWdoCi0jCi0jIDIwMDEtMDMtMTEKLSMJKiByZW1vdmUgc3B1cmlvdXMgIiV8IiBmcm9tIHNvbWUgeHRlcm0gZW50cmllcy4KLSMKLSMgMjAwMS0wMy0zMQotIwkqIG1vZGlmeSAnc2NyZWVuJyBraG9tZS9rZW5kIHRvIG1hdGNoIHNjcmVlbiAzLjA5LjA4Ci0jCSogYWRkIGV4YW1wbGVzIG9mICdzY3JlZW4nIGN1c3RvbWl6YXRpb24gKHNjcmVlbi54dGVybS14ZnJlZTg2LAotIwkgIHNjcmVlbi54dGVybS1yNiwgc2NyZWVuLnRlcmF0ZXJtKSAtVEQKLSMKLSMgMjAwMS0wNC0xNAotIwkqIGNvcnJlY3QgZGVmaW5pdGlvbnMgb2Ygc2hpZnRlZCBlZGl0aW5nIGtleXMgZm9yIHh0ZXJtLXhmcmVlODYgLVRECi0jCSogYWRkICJBcHBsZV9UZXJtaW5hbCIgZW50cmllcyAtQmVuamFtaW4gU2l0dGxlcgotIwkqIHJlbW92ZSB0aW1lLWRlbGF5cyBmcm9tICJBcHBsZV9UZXJtaW5hbCIgZW50cmllcyAtVEQKLSMJKiBtYWtlIHNnciBlbnRyaWVzIHRpbWUtZGVsYXlzIGNvbnNpc3RlbnQgd2l0aCBpbmRpdmlkdWFsIGNhcHMgLVRECi0jCi0jIDIwMDEtMDUtMDUKLSMJKiBjb3JyZWN0ZWQvdXBkYXRlZCBzY3JlZW4ueHRlcm0teGZyZWU4NgotIwotIyAyMDAxLTA1LTE5Ci0jCSogRUxLUyBkZXNjcmlwdGlvbnMsIGZyb20gRmVkZXJpY28gQmlhbmNoaQotIwkqIGFkZCB1NiAoQ1NSKSB0byBFdGVybSAoTWljaGFlbCBKZW5uaW5ncykuCi0jCi0jIDIwMDEtMDctMjEKLSMJKiByZW5hbWVkICJBcHBsZV9UZXJtaW5hbCIgZW50cmllcyB0byAibnN0ZXJtIiB0byB3b3JrIHdpdGggU29sYXJpcydzCi0jCSAgdGljIHdoaWNoIGhhbmRsZXMgbmFtZXMgbm8gbG9uZ2VyIHRoYW4gMTQgY2hhcmFjdGVycy4gIEFkZAotIwkgIGNvcnJlc3BvbmRpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgRGFyd2luIFBvd2VyUEMgY29uc29sZSBuYW1lZAotIwkgICJ4bnVwcGMiIC1CZW5qYW1pbiBTaXR0bGVyCi0jCi0jIDIwMDEtMDktMDEKLSMJKiBjaGFuZ2Uga2JzIGluIG1hY2ggZW50cmllcyB0byBePyAoTWFyY3VzIEJyaW5rbWFubikuCi0jCi0jIDIwMDEtMTEtMTcKLSMJKiBhZGQgInB1dHR5IiBlbnRyeSAtVEQKLSMJKiB1cGRhdGVkICJBcHBsZV9UZXJtaW5hbCIgZW50cmllcyAtQmVuamFtaW4gU2l0dGxlcgotIwotIyAyMDAxLTExLTI0Ci0jCSogYWRkIG1zLXZ0MTAwLWNvbG9yIGVudHJ5IC1URAotIwkqIGFkZCAia29uc29sZSIgZW50cmllcyAtVEQKLSMKLSMgMjAwMS0xMi0wOAotIwkqIHVwZGF0ZSBnbm9tZSBlbnRyeSB0byBSZWRoYXQgNy4yIC1URAotIwotIyAyMDAyLTA1LTI1Ci0jCSogYWRkIGtmMTMta2Y0OCBzdHJpbmdzIHRvIGNvbnMyNXcgLVRECi0jCSogYWRkIHBjdnQyNS1jb2xvciBlbnRyeSAtVEQKLSMJKiBjaGFuZ2VkIGEgZmV3IC91c3IvbGliL3RhYnNldCAtPiAvdXNyL2xvY2FsL3NoYXJlL3RhYnNldC4KLSMJKiBpbXByb3ZlIHNvbWUgZmVhdHVyZXMgb2Ygc2NvYW5zaSBlbnRyeSBiYXNlZCBvbiBTQ08ncyB2ZXJzaW9uIC1URAotIwkqIGFkZCBzY29hbnNpLW5ldyBlbnRyeSBjb3JyZXNwb25kaW5nIHRvIE9wZW5TZXJ2ZXIgNS4wLjYKLSMKLSMgMjAwMi0wNi0xNQotIwkqIGFkZCBrY2J0IHRvIHNjcmVlbiBlbnRyeSAtVEQKLSMKLSMgMjAwMi0wNi0yMgotIwkqIGFkZCByeHZ0LTE2Y29sb3IsIGlibSsxNmNvbG9yLCBtdnRlcm0gZW50cmllcyAtVEQKLSMKLSMgMjAwMi0wOS0yOAotIwkqIHNwbGl0IG91dCBsaW51eC1iYXNpYyBlbnRyeSwgbWFraW5nIGxpbnV4LWMgaW5oZXJpdCBmcm9tIHRoYXQsIGFuZAotIwkgIGluIHR1cm4gbGludXggKHdpdGggY25vcm0sIGV0YykgaW5oZXJpdCBmcm9tIGxpbnV4LWMtbmMgdG8gcmVmbGVjdAotIwkgIHRoZSBoaXN0b3J5IG9mIHRoaXMgY29uc29sZSB0eXBlIC1URAotIwkqIHNjYWxlZCB0aGUgbGludXgtYyB0ZXJtaW5mbyBlbnRyeSB0byBtYXRjaCBsaW51eC1jLW5jLCBpLmUuLCB0aGUKLSMJICByL2cvYiBwYXJhbWV0ZXJzIG9mIGluaXRjIGFyZSBpbiB0aGUgcmFuZ2UgMCB0byAxMDAwIC1URAotIwotIyAyMDAyLTEwLTA1Ci0jCSogbWlub3IgZml4IGZvciBzY2FsZS1mYWN0b3Igb2YgbGludXgtYyBhbmQgbGludXgtYy1uYyAtVEQKLSMKLSMgMjAwMi0xMS0wOQotIwkqIHNwbGl0LW91dCB2dDEwMCtrZXlwYWQgYW5kIHZ0MjIwK2tleXBhZCwgZml4IGludGVyY2hhbmdlZCBrYTMva2IyCi0jCSAgaW4gdGhlIGxhdHRlciAtVEQKLSMKLSMgMjAwMi0xMS0xNgotIwkqIGFkZCBlbnRyaWVzIGZvciBtdGVybSAobXRlcm0sIG10ZXJtLWFuc2ksIGRlY2Fuc2kpIC1URAotIwkqIG5jcjI2MHd5MzUwcHAgaGFzIG9ubHkgMTYgY29sb3IgcGFpcnMgLVRECi0jCSogYWRkIHN1bi10eXBlNCBmcm9tIE5ldEJTRCAtVEQKLSMJKiB1cGRhdGUgeHRlcm0teGZyZWU4NiB0byBjdXJyZW50IChwYXRjaCAxNzApIC1URAotIwkqIGFkZCBzY3JlZW4tYmNlLCBzY3JlZW4tcyBlbnRyaWVzIC1URAotIwkqIGFkZCB4dGVybS0xMDAyLCB4dGVybS0xMDAzIGVudHJpZXMgLVRECi0jCi0jIDIwMDMtMDEtMTEKLSMJKiB1cGRhdGUgaG9tZXBhZ2UgZm9yIFRvcCBHdW4gVGVsbmV0L1NTSAotIwotIyAyMDAzLTAxLTI1Ci0jCSogcmVkdWNlIGR1cGxpY2F0aW9uIGluIGVteCBlbnRyaWVzLCBhZGRlZCBlbXgtYmFzZSAtVEQKLSMKLSMgMjAwMy0wNS0yNAotIwkqIGNvcnJlY3RlZCBhY3MgZm9yIHNjcmVlbi50ZXJhdGVybSAtVEQKLSMJKiBhZGQgdGt0ZXJtIGVudHJ5IC1URAotIwotIyAyMDAzLTA3LTE1Ci0jCSogY3lnd2luIGNoYW5nZXMgZnJvbSBDaGFybGVzIFdpbHNvbjoKLSMJICBtaXNjL3Rlcm1pbmZvLnNyYyAobnh0ZXJtfHh0ZXJtLWNvbG9yKTogbWFrZSB4dGVybS1jb2xvcgotIwkgIHByaW1hcnkgaW5zdGVhZCBvZiBueHRlcm0sIHRvIG1hdGNoIFhGcmVlODYncyB4dGVybS50ZXJtaW5mbwotIwkgIHVzYWdlIGFuZCB0byBwcmV2ZW50IGNpcmN1bGFyIGxpbmtzLgotIwkgIChyeHZ0KTogYWRkIGFkZGl0aW9uYWwgY29kZXMgZnJvbSByeHZ0Lm9yZy4KLSMJICAocnh2dC1jb2xvcik6IG5ldyBhbGlhcwotIwkgIChyeHZ0LXhwbSk6IG5ldyBhbGlhcwotIwkgIChyeHZ0LWN5Z3dpbik6IGxpa2Ugcnh2dCwgYnV0IHdpdGggc3BlY2lhbCBhY3NjIGNvZGVzLgotIwkgIChyeHZ0LWN5Z3dpbi1uYXRpdmUpOiBkaXR0by4gIHJ4dnQgbWF5IGJlIHJ1biB1bmRlciBYV2luZG93cywgb3IKLSMJICB3aXRoIGEgIm5hdGl2ZSIgTVNXaW4gR1VJLiAgRWFjaCB0YWtlcyBkaWZmZXJlbnQgYWNzYyBjb2RlcywKLSMJICB3aGljaCBhcmUgYm90aCBkaWZmZXJlbnQgZnJvbSB0aGUgIm5vcm1hbCIgcnh2dCdzIGFjc2MuCi0jCSAgKGN5Z3dpbik6IGN5Z3dpbi1pbi1jbWQuZXhlIHdpbmRvdy4gIExvdHMgb2YgZml4ZXMuCi0jCSAgKGN5Z3dpbkRCRyk6IGRpdHRvLgotIwotIyAyMDAzLTA5LTI3Ci0jCSogdXBkYXRlIGdub21lIHRlcm1pbmFsIGVudHJpZXMgLVRECi0jCi0jIDIwMDMtMTAtMDQKLSMJKiBhZGQgZW50cmllcyBmb3IgZGpncHAgMi4wMyBhbmQgMi4wNCAtVEQKLSMKLSMgMjAwMy0xMC0yNQotIwkqIGFkZCBhbGlhcyBmb3IgdnRudCAtVEQKLSMJKiB1cGRhdGUgeHRlcm0teGZyZWU4NiBmb3IgWEZyZWU4NiA0LjQgLVRECi0jCi0jIDIwMDMtMTEtMjIKLSMJKiBhZGQgbGludXgtdnQgKEFuZHJleSBWIEx1a3lhbm92KQotIwotIyAyMDAzLTEyLTIwCi0jCSogYWRkIHNjcmVlbi5saW51eCAtVEQKLSMKLSMgMjAwNC0wMS0xMAotIwkqIHJldmlzZWQvaW1wcm92ZWQgZW50cmllcyBmb3IgdHZpOTEyYiwgdHZpOTIwYiAoQmVuamFtaW4gU2l0dGxlcikKLSMKLSMgMjAwNC0wMS0xNwotIwkqIGFkZCBPcGVuTlQvSW50ZXJpeC9TRlUgZW50cmllcyAoRmVkZXJpY28gQmlhbmNoaSkKLSMJKiBhZGQgdnQxMDArIGFuZCB2dC11dGY4IGVudHJpZXMgLVRECi0jCSogYWRkIHV3aW4gZW50cnkgLVRECi0jCi0jIDIwMDQtMDMtMjcKLSMJKiBhZGQgc2dyIHN0cmluZ3MgdG8gc2V2ZXJhbCBjb21tb24gZW50cmllcyBsYWNraW5nIHRoZW0sIGUuZy4sCi0jCSAgc2NyZWVuLCB0byBtYWtlIHRoZSBlbnRyaWVzIG1vcmUgcG9ydGFibGUgLVRECi0jCSogcmVtb3ZlIGN2dmlzIGZyb20gcnh2dCBlbnRyeSwgc2luY2UgaXQgaXMgdGhlIHNhbWUgYXMgY25vcm0gLVRECi0jCSogc2ltaWxhciBmaXh1cHMgZm9yIGN2dmlzL2Nub3JtIHZhcmlvdXMgZW50cmllcyAtVEQKLSMKLSMgMjAwNC0wNS0yMgotIwkqIHJlbW92ZSAnbmN2JyBmcm9tIHh0ZXJtLTI1NmNvbG9yIChwYXRjaCAxODgpIC1URAotIwotIyAyMDA0LTA2LTI2Ci0jCSogYWRkIG1sdGVybSAtVEQKLSMJKiBhZGQgeHRlcm0teGY4Ni12NDQgLVRECi0jCSogbW9kaWZ5IHh0ZXJtLW5ldyBha2EgeHRlcm0teGZyZWU4NiB0byBhY2NvbW1vZGF0ZSBsdWl0LCB3aGljaCByZWxpZXMKLSMJICBvbiBHMSBiZWluZyB1c2VkIHZpYSBhbiBJU08tMjAyMiBlc2NhcGUgc2VxdWVuY2UgKHJlcG9ydCBieQotIwkgIEp1bGl1c3ogQ2hyb2JvY3playkgLVRECi0jCSogYWRkICdodXJkJyBlbnRyeSAtVEQKLSMKLSMgMjAwNC0wNy0wMwotIwkqIG1ha2UgeHRlcm0teGY4Ni12NDMgZGVyaXZlZCBmcm9tIHh0ZXJtLXhmODYtdjQwIHJhdGhlciB0aGFuCi0jCSAgeHRlcm0tYmFzaWMgLVRECi0jCSogYWxpZ24gd2l0aCB4dGVybSAjMTkyJ3MgdXNlIG9mIHh0ZXJtLW5ldyAtVEQKLSMJKiB1cGRhdGUgeHRlcm0tbmV3IGFuZCB4dGVybS04Yml0IGZvciBjdnZpcy9jbm9ybSBzdHJpbmdzIC1URAotIwkqIG1ha2UgeHRlcm0tbmV3IHRoZSBkZWZhdWx0ICJ4dGVybSIgLVRECi0jCi0jIDIwMDQtMDctMTAKLSMJKiBtaW5vciBmaXhlcyBmb3IgZW11IC1URAotIwkqIGFkZCBlbXUtMjIwCi0jCSogYWRkIHJtYW0vc21hbSB0byBsaW51eCAoVHJldm9yIFZhbiBCcmVtZW4pCi0jCSogY2hhbmdlIHd5c2UgYWNzYyBzdHJpbmdzIHRvIHVzZSAnaScgbWFwIHJhdGhlciB0aGFuICdJJyAtVEQKLSMJKiBmaXhlcyBmb3IgYXZhdGFyMCAtVEQKLSMJKiBmaXhlcyBmb3IgdnAzYSsgLVRECi0jCi0jIDIwMDQtMDctMTcKLSMJKiBhZGQgeHRlcm0tcGMtZmtleXMgLVRECi0jCSogcmV2aWV3L3VwZGF0ZSBnbm9tZSBhbmQgZ25vbWUtcmg5MCBlbnRyaWVzIChwcm9tcHRlZCBieQotIwkgIFJlZGhhdCBCdWd6aWxsYSAjMTIyODE1KSAtVEQKLSMJKiByZXZpZXcvdXBkYXRlIGtvbnNvbGUgZW50cmllcyAtVEQKLSMJKiBhZGQgc2dyLCBjb3JyZWN0IHNncjAgZm9yIGt0ZXJtIGFuZCBtbHRlcm0gLVRECi0jCSogY29ycmVjdCB0c2wgc3RyaW5nIGluIGt0ZXJtIC1URAotIwotIyAyMDA0LTA3LTI0Ci0jCSogbWFrZSBuY3NhLW0gcm1hY3Mvc21hY3MgY29uc2lzdGVudCB3aXRoIHNnciAtVEQKLSMJKiBhZGQgc2dyLCByYy9zYyBhbmQgZWNoIHRvIHN5c2NvbnMgZW50cmllcyAtVEQKLSMJKiBhZGQgZnVuY3Rpb24ta2V5cyB0byBkZWNhbnNpIC1URAotIwkqIGFkZCBzZ3IgdG8gbXRlcm0tYW5zaSAtVEQKLSMJKiBhZGQgc2dyLCBjaXZpcywgY25vcm0gdG8gZW11IC1URAotIwkqIGNvcnJlY3Qvc2ltcGxpZnkgY3VwIGluIGFkZHJpbmZvIC1URAotIwkqIGNvcnJlY3Rpb25zIGZvciBnbm9tZSBhbmQga29uc29sZSBlbnRyaWVzCi0jCSAgKFJlZGhhdCBCdWd6aWxsYSAjMTIyODE1KSAtSGFucyBkZSBHb2VkZQotIwkqIG1vZGlmeSBERUMgZW50cmllcyAodnQyMjAsIGV0YyksIHRvIGFkZCBzZ3Igc3RyaW5nLCBhbmQgdG8gdXNlCi0jCSAgSVNPLTIwMjIgc3RyaW5ncyBmb3Igcm1hY3Mvc21hY3MgLVRECi0jCi0jIDIwMDQtMDctMzEKLSMJKiByZW5hbWUgeHRlcm0tcGMtZmtleXMgdG8geHRlcm0rcGNma2V5cyAtVEQKLSMKLSMgMjAwNC0wOC0wNwotIwkqIGltcHJvdmVkIHB1dHR5IGVudHJ5IC1Sb2JlcnQgZGUgQmF0aAotIwotIyAyMDA0LTA4LTE0Ci0jCSogcmVtb3ZlIGRjaC9kY2gxIGZyb20gcnh2dCBiZWNhdXNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluY29uc2lzdGVudGx5Ci0jCSAgd2l0aCB0aGUgY29tbW9uIHVzYWdlIG9mIGJjZS9lY2ggLVRECi0jCSogcmVtb3ZlIGtob21lIGZyb20gdnQyMjAgKHZ0MjIwJ3MgaGF2ZSBubyBob21lIGtleSkgLVRECi0jCSogYWRkIHJ4dnQrcGNma2V5cyAtVEQKLSMKLSMgMjAwNC0wOC0yMQotIwkqIG1vZGlmeSBzZXZlcmFsIGVudHJpZXMgdG8gZW5zdXJlIHh0ZXJtIG1vdXNlIGFuZCBjdXJzb3IgdmlzaWJpbGl0eQotIwkgIGFyZSByZXNldCBpbiByczIgc3RyaW5nOiAgaHVyZCwgcHV0dHksIGdub21lLCBrb25zb2xlLWJhc2UsIG1sdGVybSwKLSMJICBFdGVybSwgc2NyZWVuLiAgKFRoZSB4dGVybSBlbnRyaWVzIGFyZSBsZWZ0IGFsb25lIC0gb2xkIG9uZXMgZm9yCi0jCSAgY29tcGF0aWJpbGl0eSwgYW5kIHRoZSBuZXcgb25lcyBkbyBub3QgcmVxdWlyZSB0aGlzIGNoYW5nZSkgLVRECi0jCi0jIDIwMDQtMDgtMjgKLSMJKiBhZGQgbW9ycGhvcyBlbnRyeSAtUGF2ZWwgRmVkaW4KLSMJKiBtb2RpZnkgYW1pZ2EtOGJpdCB0byBhZGQga2hvbWUva2VuZC9rbnAva3BwIC1QYXZlbCBGZWRpbgotIwkqIGNvcnJlY3RlZCBcRVs1P2wgdG8gXEVbPzVsIGluIHZ0MzIwIGVudHJpZXMgLVRECi0jCi0jIDIwMDQtMTEtMjAKLSMJKiB1cGRhdGUgd3N2dDI1IGVudHJ5IC1URAotIwotIyAyMDA1LTAxLTI5Ci0jCSogdXBkYXRlIHBhaXJzIGZvciB4dGVybS04OGNvbG9yIGFuZCB4dGVybS0yNTZjb2xvciB0byByZWZsZWN0IHRoZQotIwkgIG5jdXJzZXMgZXh0ZW5kZWQtY29sb3Igc3VwcG9ydCAtVEQKLSMKLSMgMjAwNS0wMi0yNgotIwkqIG1vZGlmeSBzZ3Ivc2dyMCBpbiB4dGVybS1uZXcgdG8gaW1wcm92ZSB0Z2V0ZW50J3MgZGVyaXZlZCAibWUiIC1URAotIwkqIGFkZCBhaXh0ZXJtLTE2Y29sb3IgdG8gZGVtb25zdHJhdGUgMTYtY29sb3IgY2FwYWJpbGl0eSAtVEQKLSMKLSMgMjAwNS0wNC0yMwotIwkqIGFkZCBtZWRpYS1jb3B5IHRvIHZ0MTAwIC1URAotIwkqIGNvcnJlY3RlZCBhY3NjIHN0cmluZyBmb3IgdnQ1MiAtVEQKLSMKLSMgMjAwNS0wNC0zMAotIwkqIGFkZCBrVVAsIGtETiAodXNlci1kZWZpbmVkIHNoaWZ0ZWQgdXAvZG93biBhcnJvdykgZGVmaW5pdGlvbnMgZm9yCi0jCSAgeHRlcm0tbmV3IC1URAotIwkqIGFkZCBrVVA1LCBrVVA2LCBldGMuLCBmb3IgeHRlcm0tbmV3IGFuZCByeHZ0IC1URAotIwotIyAyMDA1LTA1LTA3Ci0jCSogcmUtY29ycmVjdGVkIGFjc2Mgc3RyaW5nIGZvciB2dDUyIC1URAotIwotIyAyMDA1LTA1LTI4Ci0jCSogY29ycmVjdGVkIHN1bi1pbCBzZ3Igc3RyaW5nIHdoaWNoIHJlZmVycmVkIHRvIGJvbGQgYW5kIHVuZGVybGluZSAtVEQKLSMJKiBhZGQgc3VuLWNvbG9yIGVudHJ5IC1URAotIwotIyAyMDA1LTA3LTIzCi0jCSogbW9kaWZ5IHNncjAgaW4gc2V2ZXJhbCBlbnRyaWVzIHRvIHJlc2V0IGFsdGVybmF0ZS1jaGFyc2V0IGFzIGluIHRoZQotIwkgIHNnciBzdHJpbmcgLVRECi0jCSogbW9kaWZ5IHNnciBzdHJpbmcgb2YgcHJpc205IHRvIGJldHRlciBtYXRjaCB0aGUgaW5kaXZpZHVhbAotIwkgIGF0dHJpYnV0ZXMgLVRECi0jCi0jIDIwMDUtMTAtMTUKLSMJKiBjb3JyZWN0IG9yZGVyIG9mIHVzZT0gaW4gcnh2dC1iYXNpYyAtVEQKLSMKLSMgMjAwNS0xMC0yNgotIwkqIHVzZSBraW5kL2tyaSBhcyBzaGlmdGVkIHVwL2Rvd24gY3Vyc29yIGtleXMgZm9yIHh0ZXJtLW5ldyAtVEQKLSMKLSMgMjAwNS0xMS0xMgotIwkqIG90aGVyIG1pbm9yIGZpeGVzIHRvIGN5Z3dpbiBiYXNlZCBvbiB0YWNrIC1URAotIwkqIGNvcnJlY3Qgc21hY3MgaW4gY3lnd2luIChyZXBvcnQgYnkgQmF1cnpoYW4gSXNtYWd1bG92KS4KLSMKLSMgMjAwNi0wMi0xOAotIwkqIGFkZCBuc3Rlcm0tMTZjb2xvciBlbnRyeSAtVEQKLSMJKiByZW1vdmUgbmN2IGZsYWcgZnJvbSB4dGVybS0xNmNvbG9yIC1URAotIwkqIHJlbW92ZSBzZXRmL3NldGIgZnJvbSB4dGVybS0yNTZjb2xvciB0byBtYXRjaCB4dGVybSAjMjA5IC1URAotIwkqIHVwZGF0ZSBtbHRlcm0gZW50cnkgdG8gMi45LjIgLVRECi0jCi0jIDIwMDYtMDItMjUKLSMJKiBmaXhlcyB0byBtYWtlIG5zdGVybS0xNmNvbG9yIG1hdGNoIHJlcG9ydAotIwkgIGJ5IENocmlzdGlhbiBFYmVydCAtQWxhaW4gQmVuY2gKLSMKLSMgMjAwNi0wNC0yMgotIwkqIGFkZCB4dGVybSsyNTZjb2xvciBidWlsZGluZyBibG9jayAtVEQKLSMJKiBhZGQgZ25vbWUtMjU2Y29sb3IsIHB1dHR5LTI1NmNvbG9yLCByeHZ0LTI1NmNvbG9yIC1URAotIwotIyAyMDA2LTA1LTA2Ci0jCSogYWRkIGhwdGVybS1jb2xvciAtVEQKLSMKLSMgMjAwNi0wNi0yNAotIwkqIGFkZCB4dGVybStwY2MwLCB4dGVybStwY2MxLCB4dGVybStwY2MyLCB4dGVybStwY2MzIC1URAotIwkqIGFkZCBnbm9tZS1mYzUgKHByb21wdGVkIGJ5IEdlblRvbyAjMTIyNTY2KSAtVEQKLSMJKiByZW1vdmUgb2Jzb2xldGUvbWlzbGVhZGluZyBjb21tZW50cyBhYm91dCBrY2J0IG9uIExpbnV4IC1BbGFpbiBCZW5jaAotIwkqIGltcHJvdmUgeHRlcm0tMjU2Y29sb3IgYnkgY29tYmluaW5nIHRoZSBpYm0rMTZjb2xvciBzZXRhZi9zZXRhYgotIwkgIHN0cmluZ3Mgd2l0aCBTR1IgNDguICBUaGUgc2V0Zi9zZXRiIHN0cmluZ3MgYWxzbyBhcmUgY2FuY2VsbGVkIGhlcmUKLSMJICByYXRoZXIgdGhhbiBvbWl0dGVkIHNvIGRlcml2ZWQgZW50cmllcyB3aWxsIGNhbmNlbCB0aG9zZSBhbHNvIC1BbGFpbgotIwkgIEJlbmNoCi0jCi0jIDIwMDYtMDctMDEKLSMJKiBhZGQgc29tZSBub3RlcyByZWdhcmRpbmcgY29weXJpZ2h0IHRvIHRlcm1pbmZvLnNyYyAtVEQKLSMJKiB1c2Ugcnh2dCtwY2ZrZXlzIGluIEV0ZXJtIC1URAotIwkqIHJlbW92ZSBrbSBhbmQgZmxhc2ggZnJvbSBnbm9tZSwgRXRlcm0gYW5kIHJ4dnQgc2luY2UgdGhleSBkbyBub3Qgd29yawotIwkgIGFzIG9uZSB3b3VsZCBleHBlY3QgKGttIHNlbmRzIEVTQyByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZSA4dGggYml0Ci0jCSAgb2YgdGhlIGtleSkgLVRECi0jCSogYWRkL3VzZSBhbnNpK2VucSwgdnQxMDArZW5xIGFuZCB2dDEwMitlbnEgLVRECi0jCSogYWRkIGtvbnNvbGUtc29sYXJpcyAtVEQKLSMKLSMgMjAwNi0wNy0yMgotIwkqIHVwZGF0ZSB4dGVybS1zdW4gYW5kIHh0ZXJtLXNjbyBlbnRyaWVzIHRvIG1hdGNoIHh0ZXJtICMyMTYgLVRECi0jCSogbW9kaWZ5IGlzMi9yczIgc3RyaW5ncyBmb3IgeHRlcm0tcjYgYXMgcGVyIGZpeCBpbiB4dGVybSAjMTQ4IC1URAotIwkqIG1vZGlmeSB4dGVybS0yNCB0byBpbmhlcml0IGZyb20gInh0ZXJtIiAtVEQKLSMJKiBhZGQgeGl0ZXJtIGVudHJ5IC1URAotIwkqIGFkZCBwdXR0eS12dDEwMCBlbnRyeSAtVEQKLSMJKiBjb3JyZWN0ZWQgc3BlbGxpbmcgb2YgTWljaGFlbCBBIERvcm1hbidzIG5hbWUsIHByb21wdGVkIGJ5Ci0jCSAgaHR0cDovL3d3dy5hZHZvZ2F0by5vcmcvcGVyc29uL21kb3JtYW4vZGlhcnkuaHRtbCAtVEQKLSMKLSMgMjAwNi0wOC0wNQotIwkqIGFkZCB4dGVybStwY2YwLCB4dGVybStwY2YyIGZyb20geHRlcm0gIzIxNiAtVEQKLSMJKiB1cGRhdGUgeHRlcm0rcGNma2V5cyB0byBtYXRjaCB4dGVybSAjMjE2IC1URAotIwotIyAyMDA2LTA4LTE3Ci0jCSogbWFrZSBkZXNjcmlwdGlvbnMgb2YgeHRlcm0gZW50cmllcyBjb25zaXN0ZW50IHdpdGggaXRzIHRlcm1pbmZvIC1URAotIwotIyAyMDA2LTA4LTI2Ci0jCSogYWRkIHhmY2UsIG1ndCAtVEQKLSMKLSMgMjAwNi0wOS0wMgotIwkqIGNvcnJlY3QgYWNzYyBzdHJpbmcgaW4ga3Rlcm0gLVRECi0jCi0jIDIwMDYtMDktMDkKLSMJKiBhZGQga29uIGVudHJ5IC1URAotIwkqIHJlbW92ZSBpbnZpcyBmcm9tIGxpbnV4IGFuZCByZWxhdGVkIGVudHJpZXMsIGFkZCBrbG9uZStzZ3I4IGZvciB0aG9zZQotIwkgIHRoYXQgaW1wbGVtZW50IHRoZSBmZWF0dXJlIChvciBoYXZlIG5vdCBiZWVuIHNob3duIHRvIGxhY2sgaXQpIC1URAotIwotIyAyMDA2LTA5LTIzCi0jCSogYWRkIGthMiwga2IxLCBrYjMsIGtjMiB0byB2dDIyMC1rZXlwYWQgYXMgYW4gZXh0ZW5zaW9uIC1URAotIwkqIG1pbm9yIGltcHJvdmVtZW50cyB0byByeHZ0K3BjZmtleXMgLVRECi0jCi0jIDIwMDYtMDktMzAKLSMJKiBmaXggYSBmZXcgdHlwb3MgaW4gaWYvdGhlbi9lbHNlIGV4cHJlc3Npb25zIC1URAotIwotIyAyMDA2LTEwLTA3Ci0jCSogYWRkIHNldmVyYWwgR05VIFNjcmVlbiB2YXJpYXRpb25zIHdpdGggMTYtIGFuZCAyNTYtY29sb3JzLCBhbmQKLSMJICBzdGF0dXMgbGluZSAoQWxhaW4gQmVuY2gpLgotIwotIyAyMDA3LTAzLTAzCi0jCSogYWRkIE5ld2J1cnkgRGF0YSBlbnRyaWVzIChKZWFuLUNoYXJsZXMgQmlsbGF1ZCkuCi0jCi0jIDIwMDctMDYtMTAKLSMJKiBjb3JyZWN0ZWQgeHRlcm0rcGNmMiBtb2RpZmllcnMgZm9yIEYxLUY0LCBtYXRjaCB4dGVybSAjMjI2IC1URAotIwotIyAyMDA3LTA3LTE0Ci0jCSogcmVzdG9yZSBzZWN0aW9uIG9mIHByZS1uY3Vyc2VzLTQuMiBjaGFuZ2Vsb2cgdG8gZml4IGF0dHJpYnV0aW9uIC1URAotIwkqIGFkZCBrb25zb2xlLTI1NmNvbG9yIGVudHJ5IC1URAotIwotIyAyMDA3LTA4LTE4Ci0jCSogYWRkIDl0ZXJtIGVudHJ5IChyZXF1ZXN0IGJ5IEp1aGFwZWtrYSBUb2x2YW5lbikgLVRECi0jCi0jIDIwMDctMTAtMTMKLSMJKiBjb3JyZWN0IGtJQyBpbiByeHZ0K3BjZmtleXMgKHByb21wdGVkIGJ5IERlYmlhbiAjNDQ2NDQ0KSAtVEQKLSMJKiBhZGQgc2hpZnQtY29udHJvbC0gYW5kIGNvbnRyb2wtbW9kaWZpZWQga2V5cyBmb3Igcnh2dCBlZGl0aW5nCi0jCSAga2V5cGFkIC1URAotIwkqIHVwZGF0ZSBtbHRlcm0gZW50cnkgdG8gMi45LjMgLVRECi0jCSogYWRkIG1sdGVybStwY2ZrZXlzIC1URAotIwotIyAyMDA3LTEwLTIwCi0jCSogbW92ZSBrTEZULCBrUklULCBraW5kIGFuZCBrcmkgY2FwYWJpbGl0aWVzIGZyb20geHRlcm0tbmV3IHRvCi0jCSAgeHRlcm0rcGNjMCwgZXRjLiwgdG8gbWFrZSB0aGUgY29ycmVzcG9uZGluZyBidWlsZGluZyBibG9ja3MgcmVmbGVjdAotIwkgIHh0ZXJtJ3MgY2FwYWJpbGl0aWVzIC1URAotIwkqIGFkZCBtcnh2dCBlbnRyeSAtVEQKLSMJKiBhZGQgeHRlcm0rcjZmMiwgdXNlIGluIG1sdGVybSBhbmQgbXJ4dnQgZW50cmllcyAtVEQKLSMKLSMgMjAwNy0xMS0wMwotIwkqIGNvcnJlY3QgYWNzYyBzdHJpbmdzIGZvciBoMTkgYW5kIHoxMDAgKEJlbmphbWluIFNpdHRsZXIpCi0jCi0jIDIwMDctMTEtMTEKLSMJKiB1c2UgeHRlcm0teGY4Ni12NDQgZm9yICJ4dGVybS14ZnJlZTg2IiwgcmVmbGVjdGluZyBjaGFuZ2VzIHRvCi0jCSAgeHRlcm0gc3RhcnRpbmcgd2l0aCBwYXRjaCAjMjE2IC1URAotIwkqIG1ha2UgbGVnYWN5IHh0ZXJtIGVudHJpZXMgc3VjaCBhcyB4dGVybS0yNCBpbmhlcml0IGZyb20geHRlcm0tb2xkLAotIwkgIHRvIG1hdGNoIHh0ZXJtICMyMzAgLVRECi0jCSogZXh0ZW5kIHh0ZXJtK3BjY1ggZW50cmllcyB0byBtYXRjaCB4dGVybSAjMjMwIC1URAotIwkqIGFkZCB4dGVybSthcHAsIHh0ZXJtK25vYXBwLCBmcm9tIHh0ZXJtICMyMzAgLVRECi0jCSogYWRkL3VzZSB4dGVybStwY2UyIGZyb20geHRlcm0gIzIzMCwgaW4geHRlcm0rcGNma2V5cyAtVEQKLSMKLSMgMjAwOC0wNC0xOQotIwkqIGFkZCBzY3JlZW4ucnh2dCAtVEQKLSMKLSMgMjAwOC0wNC0yOAotIwkqIGFkZCBzY3JlZW4rZmtleXMgKHByb21wdGVkIGJ5IERlYmlhbiAjIDQ3ODA5NCkgLVRECi0jCi0jIDIwMDgtMDYtMjgKLSMJKiBhZGQgc2NyZWVuLm1sdGVybSAtVEQKLSMJKiBpbXByb3ZlIG1sdGVybSBhbmQgbWx0ZXJtK3BjZmtleXMgLVRECi0jCi0jIDIwMDgtMDgtMjMKLSMJKiBhZGQgRXRlcm0tMjU2Y29sb3IsIEV0ZXJtLTg4Y29sb3IgLVRECi0jCSogYWRkIHJ4dnQtODhjb2xvciAtVEQKLSMKLSMgMjAwOC0xMC0xMgotIwkqIGFkZCB0ZXJhdGVybTQuNTkgZW50cnksIHVzZSB0aGF0IGFzIHByaW1hcnkgdGVyYXRlcm0gZW50cnksIHJlbmFtZQotIwkgIG9yaWdpbmFsIHRvIHRlcmF0ZXJtMi4zIC1URAotIwkqIHVwZGF0ZSAiZ25vbWUiIHRvIDIuMjIuMyAtVEQKLSMJKiB1cGRhdGUgImtvbnNvbGUiIHRvIDEuNi42IC1URAotIwkqIGFkZCAiYXRlcm0iIC1URAotIwkqIGFkZCAibGludXgyLjYuMjYiIC1URAotIwotIyBUaGUgZm9sbG93aW5nIHNldHMgZWRpdCBtb2RlcyBmb3IgR05VIEVNQUNTLgotIyBMb2NhbCBWYXJpYWJsZXM6Ci0jIGZpbGwtcHJlZml4OiJcdCIKLSMgZmlsbC1jb2x1bW46NzUKLSMgY29tbWVudC1jb2x1bW46MAotIyBjb21tZW50LXN0YXJ0LXNraXA6Il4jKyIKLSMgY29tbWVudC1zdGFydDoiIyAiCi0jIGNvbXBpbGUtY29tbWFuZDoidGljIC1jIHRlcm1pbmZvLm1hc3RlciIKLSMgRW5kOgotIyMjIyMjIyMgU0hBTlRJSCEgIFNIQU5USUghICBTSEFOVElIIQpkaWZmIC0tZ2l0IGEvbWstMHRoLmF3ayBiL21rLTB0aC5hd2sKaW5kZXggZmU5MWNjYS4uNmEwMWZlZCAxMDA2NDQKLS0tIGEvbWstMHRoLmF3aworKysgYi9tay0wdGguYXdrCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IG1rLTB0aC5hd2ssdiAxLjE3IDIwMDUvMDEvMjIgMTY6MzE6NDAgdG9tIEV4cCAkCisjICRJZDogbWstMHRoLmF3ayx2IDEuMjIgMjAxMi8wNi8zMCAyMDo1NjoxMSB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI3LDE3ICsyNyw2OSBAQAogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDxkaWNrZXlAY2xhcmsubmV0PiAxOTk2LDE5OTcKKyMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KICMKICMgR2VuZXJhdGUgbGlzdCBvZiBzb3VyY2VzIGZvciBhIGxpYnJhcnksIHRvZ2V0aGVyIHdpdGggbGludC9saW50bGliIHJ1bGVzCiAjCiAjIFZhcmlhYmxlczoKICMJbGlibmFtZSAobGlicmFyeSBuYW1lLCBlLmcuLCAibmN1cnNlcyIsICJwYW5lbCIsICJmb3JtcyIsICJtZW51cyIpCiAjCXN1YnNldHMgKGlzIHVzZWQgaGVyZSB0byBkZWNpZGUgaWYgd2lkZS1jaGFyYWN0ZXIgY29kZSBpcyB1c2VkKQorIwl0aWNsaWIgKGxpYnJhcnkgbmFtZSBmb3IgbGlidGljLCBlLmcuLCAidGljIikKKyMJdGVybWxpYiAobGlicmFyeSBuYW1lIGZvciBsaWJ0aW5mbywgZS5nLiwgInRpbmZvIikKICMKK2Z1bmN0aW9uIG1ha2VfbGludGxpYihuYW1lLHNvdXJjZXMpIHsKKwlwcmludCAgIiIKKwlwcmludCAgImNsZWFuIDo6IgorCXByaW50ZiAiXHRybSAtZiBsbGliLWwlcy4qXG4iLCBuYW1lCisJcHJpbnQgICIiCisJcHJpbnQgICJyZWFsY2xlYW4gOjoiCisJcHJpbnRmICJcdHJtIC1mIGxsaWItbCVzXG4iLCBuYW1lCisJcHJpbnQgICIiCisJcHJpbnRmICJsbGliLWwlcyA6ICVzXG4iLCBuYW1lLCBzb3VyY2VzCisJcHJpbnRmICJcdGNwcm90byAtYSAtbCAtRE5DVVJTRVNfRU5BQkxFX1NUREJPT0xfSD0wIC1ETElOVCAkKENQUEZMQUdTKSAlcyA+JEBcbiIsIHNvdXJjZXMKKwlwcmludCAgIiIKKwlwcmludCAgImxpbnRsaWIgOjoiCisJcHJpbnRmICJcdHNoICQoc3JjZGlyKS8uLi9taXNjL21ha2VsbGliICVzICQoQ1BQRkxBR1MpXG4iLCBuYW1lCisJcHJpbnQgIiIKKwlwcmludCAibGludCA6OiIKKwlwcmludGYgIlx0JChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJXMgJChMSU5UX0xJQlMpXG4iLCBzb3VyY2VzCit9CisKKyMgQSBibGFuayBpbiAic3Vic2V0cyIgaW5kaWNhdGVzIGEgc3BsaXQtb2ZmIG9mIHRoZSBsaWJyYXJ5IGludG8gYSBzZXBhcmF0ZQorIyBmaWxlLCBlLmcuLCBmb3IgbGlidGljIG9yIGxpYnRpbmZvLiAgVGhleSBhcmUgYWxsIGxvZ2ljYWwgcGFydHMgb2YgdGhlIHNhbWUKKyMgbGlicmFyeS4KK2Z1bmN0aW9uIHdoaWNoX2xpYnJhcnkoKSB7CisJaWYgKCAoIHdoaWNoID09ICJ0aWNsaWIiICkgJiYgKCBzdWJzZXRzIH4gL3RpY2xpYiAvICkgKSB7CisJCXJldHVybiB0aWNsaWI7CisJfSBlbHNlIGlmICggKCB3aGljaCA9PSAidGVybWxpYiIgfHwgd2hpY2ggPT0gImV4dF90aW5mbyIgKSAmJiAoIHN1YnNldHMgfiAvW1s6c3BhY2U6XV1iYXNlLyApICkgeworCQlyZXR1cm4gdGVybWxpYjsKKwl9IGVsc2UgeworCQlyZXR1cm4gbGlibmFtZTsKKwl9Cit9CisKK2Z1bmN0aW9uIHNob3dfbGlzdChuYW1lLCBsZW4sIGxpc3QpIHsKKwlpZiAoIGxlbiA+IDAgKSB7CisJCXByaW50ZiAiXG4lc19TUkMgPSIsIHRvdXBwZXIobmFtZSk7CisJCWZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKwkJCXByaW50ZiAiIFxcXG5cdCVzIiwgbGlzdFtuXTsKKwkJcHJpbnQgIiI7CisJCW1ha2VfbGludGxpYihuYW1lLCBzcHJpbnRmKCIkKCVzX1NSQykiLCB0b3VwcGVyKG5hbWUpKSk7CisJfQorfQorCiBCRUdJTgl7CisJCXdoaWNoID0gbGlibmFtZTsKIAkJdXNpbmcgPSAwOwogCQlmb3VuZCA9IDA7CisJCWNvdW50X3RpY2xpYiA9IDA7CisJCWNvdW50X3Rlcm1saWIgPSAwOworCQljb3VudF9saWJyYXJ5ID0gMDsKKwl9CisJL15ALyB7CisJCXdoaWNoID0gJDA7CisJCXN1YigvXkBbWzpibGFuazpdXSsvLCAiIiwgd2hpY2gpOworCQlzdWIoL1tbOmJsYW5rOl1dKyQvLCAiIiwgd2hpY2gpOwogCX0KIAkhL15bQCNdLyB7CiAJCWlmICh1c2luZyA9PSAwKQpAQCAtNDYsNiArOTgsMTAgQEAKIAkJCXByaW50ICAiIyBnZW5lcmF0ZWQgYnkgbWstMHRoLmF3ayIKIAkJCXByaW50ZiAiIyAgIGxpYm5hbWU6ICAgICVzXG4iLCBsaWJuYW1lCiAJCQlwcmludGYgIiMgICBzdWJzZXRzOiAgICAlc1xuIiwgc3Vic2V0cworCQkJaWYgKCBsaWJuYW1lIH4gL25jdXJzZXMvICkgeworCQkJCXByaW50ZiAiIyAgIHRpY2xpYjogICAgICVzXG4iLCB0aWNsaWIKKwkJCQlwcmludGYgIiMgICB0ZXJtbGliOiAgICAlc1xuIiwgdGVybWxpYgorCQkJfQogCQkJcHJpbnQgICIiCiAJCQlwcmludCAgIi5TVUZGSVhFUzogLmMgLmNjIC5oIC5pIC5paSIKIAkJCXByaW50ICAiLmMuaSA6IgpAQCAtNTcsNyArMTEzLDExIEBACiAJCQlwcmludCAgIiIKIAkJCXVzaW5nID0gMTsKIAkJfQotCQlpZiAoICQwICE9ICIiICYmICQxICE9ICJsaW5rX3Rlc3QiICkKKwkJaWYgKHdoaWNoIH4gL3BvcnRfLyApCisJCXsKKwkJCSMgc2tpcCB3aW4zMiBzb3VyY2UKKwkJfQorCQllbHNlIGlmICggJDAgIT0gIiIgJiYgJDEgIT0gImxpbmtfdGVzdCIgKQogCQl7CiAJCQlpZiAoIGZvdW5kID09IDAgKQogCQkJewpAQCAtNzIsOSArMTMyLDE4IEBACiAJCQkJCWZvdW5kID0gMgogCQkJfQogCQkJaWYgKCBsaWJuYW1lID09ICJjKysiIHx8IGxpYm5hbWUgPT0gImMrK3ciICkgewotCQkJCXByaW50ZiAiIFxcXG5cdCVzLyVzLmNjIiwgJDMsICQxCisJCQkJc3JjbmFtZSA9IHNwcmludGYoIiVzLyVzLmNjIiwgJDMsICQxKTsKKwkJCQlwcmludGYgIiBcXFxuXHQlcyIsIHNyY25hbWU7CiAJCQl9IGVsc2UgaWYgKCB3aWRlY2hhciA9PSAxIHx8ICQzICE9ICIkKHdpZGUpIiApIHsKLQkJCQlwcmludGYgIiBcXFxuXHQlcy8lcy5jIiwgJDMsICQxCisJCQkJc3JjbmFtZSA9IHNwcmludGYoIiVzLyVzLmMiLCAkMywgJDEpOworCQkJCXByaW50ZiAiIFxcXG5cdCVzIiwgc3JjbmFtZTsKKwkJCQlpZiAoIHdoaWNoX2xpYnJhcnkoKSA9PSBsaWJuYW1lICkgeworCQkJCQlsaXN0X2xpYnJhcnlbY291bnRfbGlicmFyeSsrXSA9IHNyY25hbWU7CisJCQkJfSBlbHNlIGlmICggd2hpY2hfbGlicmFyeSgpID09IHRpY2xpYiApIHsKKwkJCQkJbGlzdF90aWNsaWJbY291bnRfdGljbGliKytdID0gc3JjbmFtZTsKKwkJCQl9IGVsc2UgeworCQkJCQlsaXN0X3Rlcm1saWJbY291bnRfdGVybWxpYisrXSA9IHNyY25hbWU7CisJCQkJfQogCQkJfQogCQl9CiAJfQpAQCAtODMsMjIgKzE1MiwxMSBAQAogCQlpZiAoIGZvdW5kID09IDEgKQogCQl7CiAJCQlwcmludCAgIiIKLQkJCXByaW50ZiAiIyBQcm9kdWNpbmcgbGxpYi1sJXMgaXMgdGltZS1jb25zdW1pbmcsIHNvIHRoZXJlJ3Mgbm8gZGlyZWN0LWRlcGVuZGVuY3kgZm9yXG4iLCBsaWJuYW1lCi0JCQlwcmludCAgIiMgaXQgaW4gdGhlIGxpbnRsaWIgcnVsZS4gIFdlJ2xsIG9ubHkgcmVtb3ZlIGluIHRoZSBjbGVhbmVzdCBzZXR1cC4iCi0JCQlwcmludCAgImNsZWFuIDo6IgotCQkJcHJpbnRmICJcdHJtIC1mIGxsaWItbCVzLipcbiIsIGxpYm5hbWUKLQkJCXByaW50ICAiIgotCQkJcHJpbnQgICJyZWFsY2xlYW4gOjoiCi0JCQlwcmludGYgIlx0cm0gLWYgbGxpYi1sJXNcbiIsIGxpYm5hbWUKLQkJCXByaW50ICAiIgotCQkJcHJpbnRmICJsbGliLWwlcyA6ICQoQ19TUkMpXG4iLCBsaWJuYW1lCi0JCQlwcmludGYgIlx0Y3Byb3RvIC1hIC1sIC1ETkNVUlNFU19FTkFCTEVfU1REQk9PTF9IPTAgLURMSU5UICQoQ1BQRkxBR1MpICQoQ19TUkMpID4kQFxuIgotCQkJcHJpbnQgICIiCi0JCQlwcmludCAgImxpbnRsaWIgOiIKLQkJCXByaW50ZiAiXHRzaCAkKHNyY2RpcikvLi4vbWlzYy9tYWtlbGxpYiAlcyAkKENQUEZMQUdTKSIsIGxpYm5hbWUKLQkJCXByaW50ICIiCi0JCQlwcmludCAibGludCA6IgotCQkJcHJpbnQgIlx0JChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJChDX1NSQykgJChMSU5UX0xJQlMpIgorCQkJcHJpbnRmICIjIFByb2R1Y2luZyBsbGliLWwlcyBpcyB0aW1lLWNvbnN1bWluZywgc28gdGhlcmUncyBubyBkaXJlY3QtZGVwZW5kZW5jeSBmb3JcbiIsIGxpYm5hbWU7CisJCQlwcmludCAgIiMgaXQgaW4gdGhlIGxpbnRsaWIgcnVsZS4gIFdlJ2xsIG9ubHkgcmVtb3ZlIGluIHRoZSBjbGVhbmVzdCBzZXR1cC4iOworCQkJc2hvd19saXN0KGxpYm5hbWUsIGNvdW50X2xpYnJhcnksIGxpc3RfbGlicmFyeSk7CisJCQlzaG93X2xpc3QodGljbGliLCBjb3VudF90aWNsaWIsIGxpc3RfdGljbGliKTsKKwkJCXNob3dfbGlzdCh0ZXJtbGliLCBjb3VudF90ZXJtbGliLCBsaXN0X3Rlcm1saWIpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTA3LDMgKzE2NSw0IEBACiAJCQlwcmludCAgIlx0QGVjaG8gbm8gYWN0aW9uIG5lZWRlZCIKIAkJfQogCX0KKyMgdmlsZTp0cz00IHN3PTQKZGlmZiAtLWdpdCBhL21rLTFzdC5hd2sgYi9tay0xc3QuYXdrCmluZGV4IGUyZjU0ZWEuLjFiODgxMjcgMTAwNjQ0Ci0tLSBhL21rLTFzdC5hd2sKKysrIGIvbWstMXN0LmF3awpAQCAtMSw2ICsxLDYgQEAKLSMgJElkOiBtay0xc3QuYXdrLHYgMS43OCAyMDA3LzAzLzI0IDIyOjEwOjU1IHRvbSBFeHAgJAorIyAkSWQ6IG1rLTFzdC5hd2ssdiAxLjk4IDIwMTQvMTIvMjAgMjM6NTQ6MjIgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0zNCwxNCArMzQsMTcgQEAKICMJbmFtZQkJICAobGlicmFyeSBuYW1lLCBlLmcuLCAibmN1cnNlcyIsICJwYW5lbCIsICJmb3JtcyIsICJtZW51cyIpCiAjCXRyYWNlcwkJICAoImFsbCIgb3IgIkRFQlVHIiwgdG8gY29udHJvbCB3aGV0aGVyIHRyYWNpbmcgaXMgY29tcGlsZWQgaW4pCiAjCU1PREVMCQkgIChlLmcuLCAiREVCVUciLCB1cHBlcmNhc2U7IHRvdXBwZXIgaXMgbm90IHBvcnRhYmxlKQorIwlDWFhfTU9ERUwJICAoZS5nLiwgIkRFQlVHIiwgdXBwZXJjYXNlKQogIwltb2RlbAkJICAoZGlyZWN0b3J5IGludG8gd2hpY2ggd2UgY29tcGlsZSwgZS5nLiwgIm9iaiIpCiAjCXByZWZpeAkJICAoZS5nLiwgImxpYiIsIGZvciBVbml4LXN0eWxlIGxpYnJhcmllcykKICMJc3VmZml4CQkgIChlLmcuLCAiX2cuYSIsIGZvciBkZWJ1ZyBsaWJyYXJpZXMpCiAjCXN1YnNldAkJICAoIm5vbmUiLCAiYmFzZSIsICJiYXNlK2V4dF9mdW5jcyIgb3IgInRlcm1saWIiLCBldGMuKQorIwlkcml2ZXIJCSAgKCJ5ZXMiIG9yICJubyIsIGRlcGVuZHMgb24gLS1lbmFibGUtdGVybS1kcml2ZXIpCiAjCVNobGliVmVyCSAgKCJyZWwiLCAiYWJpIiBvciAiYXV0byIsIHRvIGF1Z21lbnQgRG9MaW5rcyB2YXJpYWJsZSkKICMJU2hsaWJWZXJJbmZpeCAoInllcyIgb3IgIm5vIiwgZGV0ZXJtaW5lcyBsb2NhdGlvbiBvZiB2ZXJzaW9uICMpCi0jICAgVGVybWxpYlJvb3QgICAoInRpbmZvIiBvciBvdGhlciByb290IGZvciBsaWJ0ZXJtLnNvKQotIyAgIFRlcm1saWJTdWZmaXggKCIuc28iIG9yIG90aGVyIHN1ZmZpeCBmb3IgbGlidGVybS5zbykKKyMJU3ltTGluawkJICAoImxuIC1zIiwgZXRjKQorIwlUZXJtbGliUm9vdAkgICgidGluZm8iIG9yIG90aGVyIHJvb3QgZm9yIGxpYnRlcm0uc28pCisjCVRlcm1saWJTdWZmaXggKCIuc28iIG9yIG90aGVyIHN1ZmZpeCBmb3IgbGlidGVybS5zbykKICMJUmVMaW5rCQkgICgieWVzIiwgb3IgIm5vIiwgZmxhZyB0byByZWJ1aWxkIHNoYXJlZCBsaWJzIG9uIGluc3RhbGwpCiAjCURvTGlua3MJCSAgKCJ5ZXMiLCAicmV2ZXJzZSIgb3IgIm5vIiwgZmxhZyB0byBhZGQgc3ltYm9saWMgbGlua3MpCiAjCXJtU29Mb2NzCSAgKCJ5ZXMiIG9yICJubyIsIGZsYWcgdG8gYWRkIGV4dHJhIGNsZWFuIHRhcmdldCkKQEAgLTQ5LDYgKzUyLDcgQEAKICMJb3ZlcndyaXRlCSAgKCJ5ZXMiIG9yICJubyIsIGZsYWcgdG8gYWRkIGxpbmsgdG8gbGliY3Vyc2VzLmEKICMJZGVwZW5kCQkgIChvcHRpb25hbCBkZXBlbmRlbmNpZXMgZm9yIGFsbCBvYmplY3RzLCBlLmcsIG5jdXJzZXNfY2ZnLmgpCiAjCWhvc3QJCSAgKGNyb3NzLWNvbXBpbGUgaG9zdCwgaWYgYW55KQorIwlsaWJ0b29sX3ZlcnNpb24gKGxpYnRvb2wgIi12ZXJzaW9uLWluZm8iIG9yICItdmVyc2lvbi1udW1iZXIiKQogIwogIyBOb3RlczoKICMJQ0xJWHMgbmF3ayBkb2VzIG5vdCBsaWtlIHVuZGVyc2NvcmVzIGluIGNvbW1hbmQtbGluZSB2YXJpYWJsZSBuYW1lcy4KQEAgLTU5LDcgKzYzLDcgQEAKIAkJcmV0dXJuICggc3Vic2V0IH4gL150aWNsaWIkLyApOwogCX0KIGZ1bmN0aW9uIGlzX3Rlcm1saWIoKSB7Ci0JCXJldHVybiAoIHN1YnNldCB+IC9eKHRpY2xpYlwrKT90ZXJtbGliKFwrZXh0X3RpbmZvKT8kLyApOworCQlyZXR1cm4gKCBzdWJzZXQgfiAvXih0aWNsaWJcKyk/dGVybWxpYigoXCtbXisgXSspKlwrW2Etel9dK190aW5mbyk/JC8gKTsKIAl9CiAjIHNlZSBsaWJfbmFtZQogZnVuY3Rpb24gbGliX25hbWVfb2YoYV9uYW1lKSB7CkBAIC02Nyw3ICs3MSw3IEBACiAJfQogIyBzZWUgaW1wX25hbWUKIGZ1bmN0aW9uIGltcF9uYW1lX29mKGFfbmFtZSkgewotCQlpZiAoU2hsaWJWZXJJbmZpeCA9PSAiY3lnZGxsIikgeworCQlpZiAoU2hsaWJWZXJJbmZpeCA9PSAiY3lnZGxsIiB8fCBTaGxpYlZlckluZml4ID09ICJtc3lzZGxsIiB8fCBTaGxpYlZlckluZml4ID09ICJtaW5ndyIpIHsKIAkJCXJlc3VsdCA9IHNwcmludGYoIiVzJXMlcy5hIiwgcHJlZml4LCBhX25hbWUsIHN1ZmZpeCk7CiAJCX0gZWxzZSB7CiAJCQlyZXN1bHQgPSAiIjsKQEAgLTc4LDYgKzgyLDEwIEBACiBmdW5jdGlvbiBhYmlfbmFtZV9vZihhX25hbWUpIHsKIAkJaWYgKFNobGliVmVySW5maXggPT0gImN5Z2RsbCIpIHsKIAkJCXJlc3VsdCA9IHNwcmludGYoIiVzJXMkKEFCSV9WRVJTSU9OKSVzIiwgImN5ZyIsIGFfbmFtZSwgc3VmZml4KTsKKwkJfSBlbHNlIGlmIChTaGxpYlZlckluZml4ID09ICJtc3lzZGxsIikgeworCQkJcmVzdWx0ID0gc3ByaW50ZigiJXMlcyQoQUJJX1ZFUlNJT04pJXMiLCAibXN5cy0iLCBhX25hbWUsIHN1ZmZpeCk7CisJCX0gZWxzZSBpZiAoU2hsaWJWZXJJbmZpeCA9PSAibWluZ3ciKSB7CisJCQlyZXN1bHQgPSBzcHJpbnRmKCIlcyVzJChBQklfVkVSU0lPTiklcyIsIHByZWZpeCwgYV9uYW1lLCBzdWZmaXgpOwogCQl9IGVsc2UgaWYgKFNobGliVmVySW5maXggPT0gInllcyIpIHsKIAkJCXJlc3VsdCA9IHNwcmludGYoIiVzJXMuJChBQklfVkVSU0lPTiklcyIsIHByZWZpeCwgYV9uYW1lLCBzdWZmaXgpOwogCQl9IGVsc2UgewpAQCAtODksNiArOTcsMTAgQEAKIGZ1bmN0aW9uIHJlbF9uYW1lX29mKGFfbmFtZSkgewogCQlpZiAoU2hsaWJWZXJJbmZpeCA9PSAiY3lnZGxsIikgewogCQkJcmVzdWx0ID0gc3ByaW50ZigiJXMlcyQoUkVMX1ZFUlNJT04pJXMiLCAiY3lnIiwgYV9uYW1lLCBzdWZmaXgpOworCQl9IGVsc2UgaWYgKFNobGliVmVySW5maXggPT0gIm1zeXNkbGwiKSB7CisJCQlyZXN1bHQgPSBzcHJpbnRmKCIlcyVzJChBQklfVkVSU0lPTiklcyIsICJtc3lzLSIsIGFfbmFtZSwgc3VmZml4KTsKKwkJfSBlbHNlIGlmIChTaGxpYlZlckluZml4ID09ICJtaW5ndyIpIHsKKwkJCXJlc3VsdCA9IHNwcmludGYoIiVzJXMkKFJFTF9WRVJTSU9OKSVzIiwgcHJlZml4LCBhX25hbWUsIHN1ZmZpeCk7CiAJCX0gZWxzZSBpZiAoU2hsaWJWZXJJbmZpeCA9PSAieWVzIikgewogCQkJcmVzdWx0ID0gc3ByaW50ZigiJXMlcy4kKFJFTF9WRVJTSU9OKSVzIiwgcHJlZml4LCBhX25hbWUsIHN1ZmZpeCk7CiAJCX0gZWxzZSB7CkBAIC0xMDUsNyArMTE3LDcgQEAKIAkJfSBlbHNlIHsKIAkJCWlmICggU2hsaWJWZXIgPT0gInJlbCIgKSB7CiAJCQkJcmVzdWx0ID0gcmVsX25hbWVfb2YoYV9uYW1lKTsKLQkJCX0gZWxzZSBpZiAoIFNobGliVmVyID09ICJhYmkiIHx8IFNobGliVmVyID09ICJjeWdkbGwiICkgeworCQkJfSBlbHNlIGlmICggU2hsaWJWZXIgPT0gImFiaSIgfHwgU2hsaWJWZXIgPT0gImN5Z2RsbCIgfHwgU2hsaWJWZXIgPT0gIm1zeXNkbGwiIHx8IFNobGliVmVyID09ICJtaW5ndyIgKSB7CiAJCQkJcmVzdWx0ID0gYWJpX25hbWVfb2YoYV9uYW1lKTsKIAkJCX0gZWxzZSB7CiAJCQkJcmVzdWx0ID0gbGliX25hbWVfb2YoYV9uYW1lKTsKQEAgLTExNSwyOCArMTI3LDQ1IEBACiAJfQogZnVuY3Rpb24gc3ltbGluayhzcmMsZHN0KSB7CiAJCWlmICggc3JjICE9IGRzdCApIHsKLQkJCXByaW50ZiAicm0gLWYgJXM7ICIsIGRzdAorCQkJaWYgKCBTeW1MaW5rICF+IC8uKi1mLiovICkgeworCQkJCXByaW50ZiAicm0gLWYgJXM7ICIsIGRzdAorCQkJfQogCQkJcHJpbnRmICIkKExOX1MpICVzICVzOyAiLCBzcmMsIGRzdAogCQl9CiAJfQogZnVuY3Rpb24gcm1saW5rKGRpcmVjdG9yeSwgZHN0KSB7Ci0JCXByaW50ZiAiXHQtcm0gLWYgJXMvJXNcbiIsIGRpcmVjdG9yeSwgZHN0CisJCWlmICggZHN0ICE9ICIiICkgeworCQkJcHJpbnRmICJcdC1ybSAtZiAlcy8lc1xuIiwgZGlyZWN0b3J5LCBkc3QKKwkJfQogCX0KIGZ1bmN0aW9uIHJlbW92ZWxpbmtzKGRpcmVjdG9yeSkgewotCQlybWxpbmsoZGlyZWN0b3J5LCBlbmRfbmFtZSk7CisJCW5saW5rcyA9IDA7CisJCWxpbmtzW25saW5rcysrXSA9IGVuZF9uYW1lOwogCQlpZiAoIERvTGlua3MgPT0gInJldmVyc2UiICkgewogCQkJaWYgKCBTaGxpYlZlciA9PSAicmVsIiApIHsKLQkJCQlybWxpbmsoZGlyZWN0b3J5LCBhYmlfbmFtZSk7Ci0JCQkJcm1saW5rKGRpcmVjdG9yeSwgcmVsX25hbWUpOworCQkJCWxpbmtzW25saW5rcysrXSA9IGFiaV9uYW1lOworCQkJCWxpbmtzW25saW5rcysrXSA9IHJlbF9uYW1lOwogCQkJfSBlbHNlIGlmICggU2hsaWJWZXIgPT0gImFiaSIgKSB7Ci0JCQkJcm1saW5rKGRpcmVjdG9yeSwgYWJpX25hbWUpOworCQkJCWxpbmtzW25saW5rcysrXSA9IGFiaV9uYW1lOwogCQkJfQogCQl9IGVsc2UgewogCQkJaWYgKCBTaGxpYlZlciA9PSAicmVsIiApIHsKLQkJCQlybWxpbmsoZGlyZWN0b3J5LCBhYmlfbmFtZSk7Ci0JCQkJcm1saW5rKGRpcmVjdG9yeSwgbGliX25hbWUpOworCQkJCWxpbmtzW25saW5rcysrXSA9IGFiaV9uYW1lOworCQkJCWxpbmtzW25saW5rcysrXSA9IGxpYl9uYW1lOwogCQkJfSBlbHNlIGlmICggU2hsaWJWZXIgPT0gImFiaSIgKSB7Ci0JCQkJcm1saW5rKGRpcmVjdG9yeSwgbGliX25hbWUpOworCQkJCWxpbmtzW25saW5rcysrXSA9IGxpYl9uYW1lOworCQkJfQorCQl9CisJCWZvciAoaiA9IDA7IGogPCBubGlua3M7ICsraikgeworCQkJZm91bmQgPSAwOworCQkJZm9yIChrID0gMDsgayA8IGo7ICsrayApIHsKKwkJCQlpZiAoIGxpbmtzW2pdID09IGxpbmtzW2tdICkgeworCQkJCQlmb3VuZCA9IDE7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmICggIWZvdW5kICkgeworCQkJCXJtbGluayhkaXJlY3RvcnksIGxpbmtzW2pdKTsKIAkJCX0KIAkJfQogCX0KQEAgLTE0NCw3ICsxNzMsNyBAQAogCQlwcmludGYgIlx0JChNS19TSEFSRURfTElCKSAkKCVzX09CSlMpICQoJXMpICQoTERGTEFHUylcbiIsIG9ianMsIHNobGliX2xpc3QKIAl9CiBmdW5jdGlvbiBzaGFyZWRsaW5rcyhkaXJlY3RvcnkpIHsKLQkJaWYgKCBTaGxpYlZlciAhPSAiYXV0byIgJiYgU2hsaWJWZXIgIT0gImN5Z2RsbCIgKSB7CisJCWlmICggU2hsaWJWZXIgIT0gImF1dG8iICYmIFNobGliVmVyICE9ICJjeWdkbGwiICYmIFNobGliVmVyICE9ICJtc3lzZGxsIiAmJiBTaGxpYlZlciAhPSAibWluZ3ciICkgewogCQkJcHJpbnRmICJcdGNkICVzICYmICgiLCBkaXJlY3RvcnkKIAkJCWlmICggRG9MaW5rcyA9PSAicmV2ZXJzZSIgKSB7CiAJCQkJaWYgKCBTaGxpYlZlciA9PSAicmVsIiApIHsKQEAgLTE3Nyw2ICsyMDYsMTEgQEAKIAkJZHN0X2xpYnMgPSBzcHJpbnRmKCIlcy8lcyIsIGRpcmVjdG9yeSwgZW5kX25hbWUpOwogCQlwcmludGYgIiVzIDogXFxcbiIsIGRzdF9saWJzCiAJCXByaW50ZiAiXHRcdCVzIFxcXG4iLCBkaXJlY3RvcnkKKwkJaWYgKHN1YnNldCA9PSAidGljbGliIiAmJiBkcml2ZXIgPT0gInllcyIgKSB7CisJCQliYXNlID0gbmFtZTsKKwkJCXN1YigvXnRpYy8sICJuY3Vyc2VzIiwgYmFzZSk7ICMgd29ya2Fyb3VuZCBmb3IgInciCisJCQlwcmludGYgIlx0XHQlcy8lcyBcXFxuIiwgZGlyZWN0b3J5LCBlbmRfbmFtZV9vZihiYXNlKTsKKwkJfQogCQlpZiAoc3Vic2V0IH4gL15iYXNlLyB8fCBzdWJzZXQgPT0gInRpY2xpYiIgKSB7CiAJCQlzYXZlX3N1ZmZpeCA9IHN1ZmZpeAogCQkJc3ViKC9eW14uXVwuLywiLiIsc3VmZml4KQpAQCAtMTg2LDcgKzIyMCw3IEBACiAJCQlwcmludGYgIlx0XHQlcy8lcyBcXFxuIiwgZGlyZWN0b3J5LCB0ZXJtbGliX2VuZF9vZigpOwogCQkJc3VmZml4ID0gc2F2ZV9zdWZmaXgKIAkJfQotCQlwcmludGYgIlx0XHQkKCVzX09CSlMpXG4iLCBPQkpTCisJCXByaW50ZiAiXHRcdCQoUkVTVUxUSU5HX1NZTVMpICQoJXNfT0JKUylcbiIsIE9CSlMKIAkJcHJpbnRmICJcdEBlY2hvIGxpbmtpbmcgJEBcbiIKIAkJaWYgKCBpc190aWNsaWIoKSApIHsKIAkJCW1ha2Vfc2hsaWIoT0JKUywgIlRJQ1NfTElTVCIpCkBAIC0yMTksOCArMjUzLDkgQEAKIAkJcHJpbnRmICJcdCVzICVzICVzXG4iLCBwcm9ncmFtLCBzcmNfbmFtZSwgZHN0X25hbWUKIAl9CiBCRUdJTgl7Ci0JCWZvdW5kID0gMAotCQl1c2luZyA9IDAKKwkJVE9PTF9QUkVGSVggPSAiIjsKKwkJZm91bmQgPSAwOworCQl1c2luZyA9IDA7CiAJfQogCS9eQC8gewogCQl1c2luZyA9IDAKQEAgLTIyOSwxNyArMjY0LDI5IEBACiAJCX0gZWxzZSBpZiAoaW5kZXgoc3Vic2V0LCQyKSA+IDApIHsKIAkJCWlmICh1c2luZyA9PSAwKSB7CiAJCQkJaWYgKGZvdW5kID09IDApIHsKKwkJCQkJaWYgKCBuYW1lIH4gL14uKlwrXCsuKi8gKSB7CisJCQkJCQlpZiAoIENYWF9NT0RFTCA9PSAiTk9STUFMIiAmJiBNT0RFTCA9PSAiU0hBUkVEIiApIHsKKwkJCQkJCQlwcmludCAgIiIKKwkJCQkJCQlwcmludGYgIiMgb3ZlcnJpZGluZyBtb2RlbCBmcm9tICVzIHRvIG1hdGNoIENYWF9NT0RFTFxuIiwgTU9ERUw7CisJCQkJCQkJTU9ERUwgPSAiTk9STUFMIjsKKwkJCQkJCQlzdWZmaXggPSAiLmEiOworCQkJCQkJCURvTGlua3MgPSAibm8iOworCQkJCQkJfQorCQkJCQl9CiAJCQkJCXByaW50ICAiIgogCQkJCQlwcmludGYgIiMgZ2VuZXJhdGVkIGJ5IG1rLTFzdC5hd2sgKHN1YnNldD0lcylcbiIsIHN1YnNldAogCQkJCQlwcmludGYgIiMgIG5hbWU6ICAgICAgICAgICVzXG4iLCBuYW1lIAogCQkJCQlwcmludGYgIiMgIHRyYWNlczogICAgICAgICVzXG4iLCB0cmFjZXMgCiAJCQkJCXByaW50ZiAiIyAgTU9ERUw6ICAgICAgICAgJXNcbiIsIE1PREVMIAorCQkJCQlwcmludGYgIiMgIENYWF9NT0RFTDogICAgICVzXG4iLCBDWFhfTU9ERUwgCiAJCQkJCXByaW50ZiAiIyAgbW9kZWw6ICAgICAgICAgJXNcbiIsIG1vZGVsIAogCQkJCQlwcmludGYgIiMgIHByZWZpeDogICAgICAgICVzXG4iLCBwcmVmaXggCiAJCQkJCXByaW50ZiAiIyAgc3VmZml4OiAgICAgICAgJXNcbiIsIHN1ZmZpeCAKIAkJCQkJcHJpbnRmICIjICBzdWJzZXQ6ICAgICAgICAlc1xuIiwgc3Vic2V0IAorCQkJCQlwcmludGYgIiMgIGRyaXZlcjogICAgICAgICVzXG4iLCBkcml2ZXIgCiAJCQkJCXByaW50ZiAiIyAgU2hsaWJWZXI6ICAgICAgJXNcbiIsIFNobGliVmVyIAogCQkJCQlwcmludGYgIiMgIFNobGliVmVySW5maXg6ICVzXG4iLCBTaGxpYlZlckluZml4IAorCQkJCQlwcmludGYgIiMgIFN5bUxpbms6ICAgICAgICVzXG4iLCBTeW1MaW5rIAogCQkJCQlwcmludGYgIiMgIFRlcm1saWJSb290OiAgICVzXG4iLCBUZXJtbGliUm9vdCAKIAkJCQkJcHJpbnRmICIjICBUZXJtbGliU3VmZml4OiAlc1xuIiwgVGVybWxpYlN1ZmZpeCAKIAkJCQkJcHJpbnRmICIjICBSZUxpbms6ICAgICAgICAlc1xuIiwgUmVMaW5rIApAQCAtMjgwLDEyICszMjcsMjMgQEAKIAkJCWlmICggZm91bmQgPT0gMCApCiAJCQl7CiAJCQkJcHJpbnRmICIlc19PQkpTID0iLCBPQkpTCi0JCQkJaWYgKCAkMiA9PSAibGliIiApCi0JCQkJCWZvdW5kID0gMQotCQkJCWVsc2UKLQkJCQkJZm91bmQgPSAyCisJCQkJaWYgKCAkMiA9PSAibGliIiApIHsKKwkJCQkJZm91bmQgPSAxOworCQkJCX0gZWxzZSBpZiAoICQyID09ICJjKysiICkgeworCQkJCQlUT09MX1BSRUZJWCA9ICJDWFhfIjsKKwkJCQkJZm91bmQgPSAxOworCQkJCX0gZWxzZSB7CisJCQkJCWZvdW5kID0gMjsKKwkJCQl9CisJCQkJaWYgKCAkMiA9PSAiYysrIiApIHsKKwkJCQkJQ0NfTkFNRT0iQ1hYIgorCQkJCQlDQ19GTEFHPSJDWFhGTEFHUyIKKwkJCQl9IGVsc2UgeworCQkJCQlDQ19OQU1FPSJDQyIKKwkJCQkJQ0NfRkxBRz0iQ0ZMQUdTIgorCQkJCX0KIAkJCX0KLQkJCXByaW50ZiAiIFxcXG5cdC4uLyVzLyVzJG8iLCBtb2RlbCwgJDEKKwkJCXByaW50ZiAiIFxcXG5cdC4uLyVzLyVzJG8iLCBtb2RlbCwgJDE7CiAJCX0KIAl9CiBFTkQJewpAQCAtMzExLDcgKzM2OSw3IEBACiAJCQkJcHJpbnQgICJpbnN0YWxsIFxcIgogCQkJCXByaW50ICAiaW5zdGFsbC5saWJzIFxcIgogCi0JCQkJaWYgKCBTaGxpYlZlciA9PSAiY3lnZGxsIiApIHsKKwkJCQlpZiAoIFNobGliVmVyID09ICJjeWdkbGwiIHx8IFNobGliVmVyID09ICJtc3lzZGxsIiB8fCBTaGxpYlZlciA9PSAibWluZ3ciKSB7CiAKIAkJCQkJZHN0X2RpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSAkKERFU1RESVIpJChsaWJkaXIpIjsKIAkJCQkJcHJpbnRmICJpbnN0YWxsLiVzIDo6ICVzICQoTElCUkFSSUVTKVxuIiwgbmFtZSwgZHN0X2RpcnMKQEAgLTMzMiwxNCArMzkwLDE4IEBACiAKIAkJCQlpZiAoIG92ZXJ3cml0ZSA9PSAieWVzIiAmJiBuYW1lID09ICJuY3Vyc2VzIiApCiAJCQkJewotCQkJCQlpZiAoIFNobGliVmVyID09ICJjeWdkbGwiICkgeworCQkJCQlpZiAoIFNobGliVmVyID09ICJjeWdkbGwiIHx8IFNobGliVmVyID09ICJtc3lzZGxsIiB8fCBTaGxpYlZlciA9PSAibWluZ3ciKSB7CiAJCQkJCQlvdnJfbmFtZSA9IHNwcmludGYoImxpYmN1cnNlcyVzLmEiLCBzdWZmaXgpCiAJCQkJCQlwcmludGYgIlx0QGVjaG8gbGlua2luZyAlcyB0byAlc1xuIiwgaW1wX25hbWUsIG92cl9uYW1lCi0JCQkJCQlwcmludGYgIlx0Y2QgJChERVNURElSKSQobGliZGlyKSAmJiAocm0gLWYgJXM7ICQoTE5fUykgJXMgJXM7IClcbiIsIG92cl9uYW1lLCBpbXBfbmFtZSwgb3ZyX25hbWUKKwkJCQkJCXByaW50ZiAiXHRjZCAkKERFU1RESVIpJChsaWJkaXIpICYmICgiCisJCQkJCQlzeW1saW5rKGltcF9uYW1lLCBvdnJfbmFtZSkKKwkJCQkJCXByaW50ZiAiKVxuIgogCQkJCQl9IGVsc2UgewogCQkJCQkJb3ZyX25hbWUgPSBzcHJpbnRmKCJsaWJjdXJzZXMlcyIsIHN1ZmZpeCkKIAkJCQkJCXByaW50ZiAiXHRAZWNobyBsaW5raW5nICVzIHRvICVzXG4iLCBlbmRfbmFtZSwgb3ZyX25hbWUKLQkJCQkJCXByaW50ZiAiXHRjZCAkKERFU1RESVIpJChsaWJkaXIpICYmIChybSAtZiAlczsgJChMTl9TKSAlcyAlczsgKVxuIiwgb3ZyX25hbWUsIGVuZF9uYW1lLCBvdnJfbmFtZQorCQkJCQkJcHJpbnRmICJcdGNkICQoREVTVERJUikkKGxpYmRpcikgJiYgKCIKKwkJCQkJCXN5bWxpbmsoZW5kX25hbWUsIG92cl9uYW1lKQorCQkJCQkJcHJpbnRmICIpXG4iCiAJCQkJCX0KIAkJCQl9CiAJCQkJaWYgKCBsZGNvbmZpZyAhPSAiIiAmJiBsZGNvbmZpZyAhPSAiOiIgKSB7CkBAIC0zNDksNyArNDExLDcgQEAKIAkJCQlwcmludCAgInVuaW5zdGFsbCBcXCIKIAkJCQlwcmludCAgInVuaW5zdGFsbC5saWJzIFxcIgogCQkJCXByaW50ZiAidW5pbnN0YWxsLiVzIDo6XG4iLCBuYW1lCi0JCQkJaWYgKCBTaGxpYlZlciA9PSAiY3lnZGxsIiApIHsKKwkJCQlpZiAoIFNobGliVmVyID09ICJjeWdkbGwiIHx8IFNobGliVmVyID09ICJtc3lzZGxsIiB8fCBTaGxpYlZlciA9PSAibWluZ3ciKSB7CiAKIAkJCQkJcHJpbnRmICJcdEBlY2hvIHVuaW5zdGFsbGluZyAkKERFU1RESVIpJChiaW5kaXIpLyVzXG4iLCBlbmRfbmFtZQogCQkJCQlwcmludGYgIlx0LUBybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyVzXG4iLCBlbmRfbmFtZQpAQCAtMzYyLDExICs0MjQsNyBAQAogCQkJCQlyZW1vdmVsaW5rcygiJChERVNURElSKSQobGliZGlyKSIpCiAJCQkJCWlmICggb3ZlcndyaXRlID09ICJ5ZXMiICYmIG5hbWUgPT0gIm5jdXJzZXMiICkKIAkJCQkJewotCQkJCQkJaWYgKCBTaGxpYlZlciA9PSAiY3lnZGxsIiApIHsKLQkJCQkJCQlvdnJfbmFtZSA9IHNwcmludGYoImxpYmN1cnNlcyVzLmEiLCBzdWZmaXgpCi0JCQkJCQl9IGVsc2UgewotCQkJCQkJCW92cl9uYW1lID0gc3ByaW50ZigibGliY3Vyc2VzJXMiLCBzdWZmaXgpCi0JCQkJCQl9CisJCQkJCQlvdnJfbmFtZSA9IHNwcmludGYoImxpYmN1cnNlcyVzIiwgc3VmZml4KQogCQkJCQkJcHJpbnRmICJcdC1Acm0gLWYgJChERVNURElSKSQobGliZGlyKS8lc1xuIiwgb3ZyX25hbWUKIAkJCQkJfQogCQkJCX0KQEAgLTM3OSwxNCArNDM3LDE5IEBACiAJCQl9CiAJCQllbHNlIGlmICggTU9ERUwgPT0gIkxJQlRPT0wiICkKIAkJCXsKLQkJCQlpZiAoICQyID09ICJjKysiICkgewotCQkJCQljb21waWxlPSJDWFgiCi0JCQkJfSBlbHNlIHsKLQkJCQkJY29tcGlsZT0iQ0MiCi0JCQkJfQogCQkJCWVuZF9uYW1lID0gbGliX25hbWU7CiAJCQkJcHJpbnRmICIuLi9saWIvJXMgOiAkKCVzX09CSlMpXG4iLCBsaWJfbmFtZSwgT0JKUwotCQkJCXByaW50ZiAiXHRjZCAuLi9saWIgJiYgJChMSUJUT09MX0xJTkspICQoJXMpIC1vICVzICQoJXNfT0JKUzokbz0ubG8pIC1ycGF0aCAkKERFU1RESVIpJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChOQ1VSU0VTX01BSk9SKTokKE5DVVJTRVNfTUlOT1IpICQoU0hMSUJfTElTVClcbiIsIGNvbXBpbGUsIGxpYl9uYW1lLCBPQkpTCisJCQkJaWYgKCBpc190aWNsaWIoKSApIHsKKwkJCQkJd2hpY2hfbGlzdCA9ICJUSUNTX0xJU1QiOworCQkJCX0gZWxzZSBpZiAoIGlzX3Rlcm1saWIoKSApIHsKKwkJCQkJd2hpY2hfbGlzdCA9ICJUSU5GT19MSVNUIjsKKwkJCQl9IGVsc2UgeworCQkJCQl3aGljaF9saXN0ID0gIlNITElCX0xJU1QiOworCQkJCX0KKwkJCQlwcmludGYgIlx0Y2QgLi4vbGliICYmICQoTElCVE9PTF9MSU5LKSAkKCVzKSAkKCVzKSBcXFxuIiwgQ0NfTkFNRSwgQ0NfRkxBRzsKKwkJCQlwcmludGYgIlx0XHQtbyAlcyAkKCVzX09CSlM6JG89LmxvKSBcXFxuIiwgbGliX25hbWUsIE9CSlM7CisJCQkJcHJpbnRmICJcdFx0LXJwYXRoICQoREVTVERJUikkKGxpYmRpcikgXFxcbiI7CisJCQkJcHJpbnRmICJcdFx0JXMgJChOQ1VSU0VTX01BSk9SKTokKE5DVVJTRVNfTUlOT1IpICQoTFRfVU5ERUYpICQoJXMpICQoTERGTEFHUylcbiIsIGxpYnRvb2xfdmVyc2lvbiwgd2hpY2hfbGlzdDsKIAkJCQlwcmludCAgIiIKIAkJCQlwcmludCAgImluc3RhbGwgXFwiCiAJCQkJcHJpbnQgICJpbnN0YWxsLmxpYnMgXFwiCkBAIC00MDQsNyArNDY3LDcgQEAKIAkJCXsKIAkJCQllbmRfbmFtZSA9IGxpYl9uYW1lOwogCQkJCXByaW50ZiAiLi4vbGliLyVzIDogJCglc19PQkpTKVxuIiwgbGliX25hbWUsIE9CSlMKLQkJCQlwcmludGYgIlx0JChBUikgJChBUl9PUFRTKSAkQCAkP1xuIgorCQkJCXByaW50ZiAiXHQkKCVzQVIpICQoJXNBUkZMQUdTKSAkQCAkP1xuIiwgVE9PTF9QUkVGSVgsIFRPT0xfUFJFRklYOwogCQkJCXByaW50ZiAiXHQkKFJBTkxJQikgJEBcbiIKIAkJCQlpZiAoIGhvc3QgPT0gInZ4d29ya3MiICkKIAkJCQl7CkBAIC00MjAsNyArNDgzLDkgQEAKIAkJCQl7CiAJCQkJCXByaW50ZiAiXHRAZWNobyBsaW5raW5nIGxpYmN1cnNlcy5hIHRvIGxpYm5jdXJzZXMuYVxuIgogCQkJCQlwcmludGYgIlx0LUBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmN1cnNlcy5hXG4iCi0JCQkJCXByaW50ZiAiXHQoY2QgJChERVNURElSKSQobGliZGlyKSAmJiAkKExOX1MpIGxpYm5jdXJzZXMuYSBsaWJjdXJzZXMuYSlcbiIKKwkJCQkJcHJpbnRmICJcdChjZCAkKERFU1RESVIpJChsaWJkaXIpICYmICIKKwkJCQkJc3ltbGluaygibGlibmN1cnNlcy5hIiwgImxpYmN1cnNlcy5hIikKKwkJCQkJcHJpbnRmICIpXG4iCiAJCQkJfQogCQkJCXByaW50ZiAiXHQkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS8lc1xuIiwgbGliX25hbWUKIAkJCQlpZiAoIGhvc3QgPT0gInZ4d29ya3MiICkKZGlmZiAtLWdpdCBhL21rLWhkci5hd2sgYi9tay1oZHIuYXdrCmluZGV4IDliNmJlZTQuLmRmYjJjOWEgMTAwNjQ0Ci0tLSBhL21rLWhkci5hd2sKKysrIGIvbWstaGRyLmF3awpAQCAtMSw2ICsxLDYgQEAKLSMgJElkOiBtay1oZHIuYXdrLHYgMS4yIDIwMDcvMDMvMzEgMTU6NDg6NDUgdG9tIEV4cCAkCisjICRJZDogbWstaGRyLmF3ayx2IDEuNCAyMDEzLzA4LzAzIDIzOjA5OjQyIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtNzMsMTIgKzczLDEyIEBACiBFTkQJewogCQlpZiAoIGNvdW50ID4gMCApCiAJCXsKLQkJCXByaW50ICIke0RFU1RESVJ9JHtpbmNsdWRlZGlyfSA6IgotCQkJcHJpbnQgIglzaCAke3NyY2Rpcn0vLi4vbWtkaXJzLnNoICRAIgorCQkJcHJpbnQgIiR7SU5DTFVERURJUn0gOiIKKwkJCXByaW50ICIJbWtkaXIgLXAgJEAiCiAJCQlwcmludCAiIgogCQkJcHJpbnQgImluc3RhbGwgXFwiCiAJCQlwcmludCAiaW5zdGFsbC5saWJzIFxcIgotCQkJcHJpbnQgImluc3RhbGwuaW5jbHVkZXMgOjogJHtBVVRPX1NSQ30gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gXFwiCisJCQlwcmludCAiaW5zdGFsbC5pbmNsdWRlcyA6OiAke0FVVE9fU1JDfSAke0lOQ0xVREVESVJ9IFxcIgogCiAJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQgLSAxOyArK2kpIHsKIAkJCQlwcmludGYgIgkJJXMgXFxcbiIsIGRhdGFbaV0KQEAgLTg2LDkgKzg2LDkgQEAKIAkJCXByaW50ZiAiCQklc1xuIiwgZGF0YVtjb3VudCAtIDFdCiAKIAkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0JCQkJcHJpbnRmICIJQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgJXMpIDsgLi4vaGVhZGVycy5zaCAke0lOU1RBTExfREFUQX0gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJHtzcmNkaXJ9ICVzXG4iLCBiYXNlbmFtZShkYXRhW2ldKSwgZGF0YVtpXQorCQkJCXByaW50ZiAiCUAgKGNkICR7SU5DTFVERURJUn0gJiYgcm0gLWYgJXMpIDsgLi4vaGVhZGVycy5zaCAke0lOU1RBTExfREFUQX0gJHtJTkNMVURFRElSfSAke3NyY2Rpcn0gJXNcbiIsIGJhc2VuYW1lKGRhdGFbaV0pLCBkYXRhW2ldCiAJCQkJaWYgKGRhdGFbaV0gPT0gImN1cnNlcy5oIiAmJiBjb21wYXQgPT0gInllcyIpIHsKLQkJCQkJcHJpbnRmICIJQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbmN1cnNlcy5oICYmICR7TE5fU30gJXMgbmN1cnNlcy5oKVxuIiwgZGF0YVtpXQorCQkJCQlwcmludGYgIglAIChjZCAke0lOQ0xVREVESVJ9ICYmIHJtIC1mIG5jdXJzZXMuaCAmJiAke0xOX1N9ICVzIG5jdXJzZXMuaClcbiIsIGRhdGFbaV0KIAkJCQl9CiAJCQl9CiAJCQlwcmludCAiIgpAQCAtOTcsOSArOTcsOSBAQAogCQkJcHJpbnQgInVuaW5zdGFsbC5pbmNsdWRlcyA6OiIKIAogCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLQkJCQlwcmludGYgIgktQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgJXMpXG4iLCBiYXNlbmFtZShkYXRhW2ldKQorCQkJCXByaW50ZiAiCS1AIChjZCAke0lOQ0xVREVESVJ9ICYmIHJtIC1mICVzKVxuIiwgYmFzZW5hbWUoZGF0YVtpXSkKIAkJCQlpZiAoZGF0YVtpXSA9PSAiY3Vyc2VzLmgiICYmIGNvbXBhdCA9PSAieWVzIikgewotCQkJCQlwcmludGYgIgktQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgbmN1cnNlcy5oKVxuIgorCQkJCQlwcmludGYgIgktQCAoY2QgJHtJTkNMVURFRElSfSAmJiBybSAtZiBuY3Vyc2VzLmgpXG4iCiAJCQkJfQogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9ta2RpcnMuc2ggYi9ta2RpcnMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU5ZmMzOWMuLjAwMDAwMDAKLS0tIGEvbWtkaXJzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotIyEgL2Jpbi9zaAotIyAkSWQ6IG1rZGlycy5zaCx2IDEuNSAyMDA3LzAzLzI1IDIyOjI5OjQ2IHRvbSBFeHAgJAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBta2luc3RhbGxkaXJzIC0tLSBtYWtlIGRpcmVjdG9yeSBoaWVyYXJjaHkKLSMgQXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBwcmVwLmFpLm1pdC5lZHU+Ci0jIENyZWF0ZWQ6IDE5OTMtMDUtMTYKLSMgTGFzdCBtb2RpZmllZDogMTk5NC0wMy0yNQotIyBQdWJsaWMgZG9tYWluCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWVycnN0YXR1cz0wCi11bWFzayAwMjIKLQotZm9yIGZpbGUgaW4gJHsxKyIkQCJ9IDsgZG8KLSAgIHNldCBmbm9yZCBgZWNobyAiOiRmaWxlIiB8IHNlZCAtbmUgJ3MvXjpcLy8jLztzL146Ly87cy9cLy8gL2c7cy9eIy9cLy87cCdgCi0gICBzaGlmdAotCi0gICBwYXRoY29tcD0KLSAgIGZvciBkIGluICR7MSsiJEAifSA7IGRvCi0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAkZCIKLSAgICAgY2FzZSAiJHBhdGhjb21wIiBpbgotICAgICAgIC0qICkgcGF0aGNvbXA9Li8kcGF0aGNvbXAgOzsKLSAgICAgZXNhYwotCi0gICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotICAgICAgICBlY2hvICJta2RpciAkcGF0aGNvbXAiIDE+JjIKLSAgICAgICAgY2FzZSAiJHBhdGhjb21wIiBpbgotICAgICAgICAgIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXTogKQotICAgICAgICAgICAgOzsgICAgICAgICAgICAgICAjIERPU0lTSCBzeXN0ZW1zCi0gICAgICAgICAgKiApCi0gICAgICAgICAgICBta2RpciAiJHBhdGhjb21wIgotICAgICAgICAgICAgZXJyc3RhdHVzPSQ/Ci0gICAgICAgICAgICBpZiB0ZXN0ICRlcnJzdGF0dXMgIT0gMAotICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgIyBtYXkgaGF2ZSBmYWlsZWQgaWYgaW52b2tlZCBpbiBhIHBhcmFsbGVsICJtYWtlIC1qIyBpbnN0YWxsIgotICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJHBhdGhjb21wIgotICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgZXJyc3RhdHVzPTAKLSAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICBmaQotCi0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgotICAgZG9uZQotZG9uZQotCi1leGl0ICRlcnJzdGF0dXMKLQotIyBta2luc3RhbGxkaXJzIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9NYWtlZmlsZSBiL25jdXJzZXMvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOWJiYWIuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDIwMjIgKzAsMCBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS4xMTMgMjAwOC8xMC8xOCAxNDoxMTo1NCB0b20gRXhwICQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwotIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCi0jIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKLSMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIwotIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCi0jIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKLSMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKLSMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIwotIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCi0jIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIwotIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCi0jIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCi0jIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKLSMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24KLSMKLSMgTWFrZWZpbGUgZm9yIG5jdXJzZXMgc291cmNlIGNvZGUuCi0jCi0jIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZzoKLSMJcHJvZ3JhbXMKLSMJaW5jbHVkZXMKLSMJbGlicmFyaWVzIChub3JtYWwvZGVidWcvcHJvZmlsZS9zaGFyZWQpCi0jCi0jIFRoZSB2YXJpYWJsZSAnc3JjZGlyJyByZWZlcnMgdG8gdGhlIHNvdXJjZS1kaXN0cmlidXRpb24sIGFuZCBjYW4gYmUgc2V0IHdpdGgKLSMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgIi0tc3JjZGlyPURJUiIuCi0jCi0jIFRoZSBydWxlcyBhcmUgb3JnYW5pemVkIHRvIHByb2R1Y2UgdGhlIGxpYnJhcmllcyBmb3IgdGhlIGNvbmZpZ3VyZWQgbW9kZWxzLAotIyBhbmQgdGhlIHByb2dyYW1zIHdpdGggdGhlIGNvbmZpZ3VyZWQgZGVmYXVsdCBtb2RlbC4KLQotIyB0dXJuIG9mZiBfYWxsXyBzdWZmaXggcnVsZXM7IHdlJ2xsIGdlbmVyYXRlIG91ciBvd24KLS5TVUZGSVhFUzoKLQotU0hFTEwJCT0gL2Jpbi9zaAotVEhJUwkJPSBNYWtlZmlsZQotCi1DRl9NRkxBR1MgCT0gCi0KLQoteAkJPSAKLW8JCT0gLm8KLQotTU9ERUwJCT0gbm9ybWFsCi1ERVNURElSCQk9IAotdG9wX3NyY2Rpcgk9IC4uCi1zcmNkaXIJCT0gLgotcHJlZml4CQk9IC91c3IvbG9jYWwKLWV4ZWNfcHJlZml4CT0gJHtwcmVmaXh9Ci1iaW5kaXIJCT0gJHtleGVjX3ByZWZpeH0vYmluCi1saWJkaXIJCT0gJHtleGVjX3ByZWZpeH0vbGliCi1pbmNsdWRlZGlyCT0gJHtwcmVmaXh9L2luY2x1ZGUvbmN1cnNlcwotZGF0YWRpcgkJPSAke3ByZWZpeH0vc2hhcmUKLQotTElCVE9PTAkJPSAKLUxJQlRPT0xfQ0xFQU4JPSAKLUxJQlRPT0xfQ09NUElMRQk9IAotTElCVE9PTF9MSU5LCT0gJHtDQ30KLUxJQlRPT0xfSU5TVEFMTAk9IAotTElCVE9PTF9VTklOU1RBTEwgPSAKLQotSU5TVEFMTAkJPSAvdXNyL2Jpbi9pbnN0YWxsIC1jCi1JTlNUQUxMX0xJQgk9IC91c3IvYmluL2luc3RhbGwgLWMgLW0gNjQ0Ci1JTlNUQUxMX1BST0cJPSAke0lOU1RBTEx9Ci1JTlNUQUxMX0RBVEEJPSAke0lOU1RBTEx9IC1tIDY0NAotCi1BUgkJPSBhcm0tZWFiaS1hcgotQVJfT1BUUwkJPSBydgotQVdLCQk9IG1hd2sKLUxECQk9IGFybS1lYWJpLWxkCi1MTl9TCQk9IGxuIC1zCi0KLUNDCQk9IGFnY2MucGwKLUNQUAkJPSBhZ2NjLnBsIC1FCi1DRkxBR1MJCT0gLU8yIC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGU9MTIwMAotCi1JTkNESVIJCT0gJChzcmNkaXIpLy4uL2luY2x1ZGUKLUNQUEZMQUdTCT0gLURIQVZFX0NPTkZJR19IIC1JLi4vbmN1cnNlcyAtSSQoc3JjZGlyKSAtSS4gLUkuLi9pbmNsdWRlICAtVV9YT1BFTl9TT1VSQ0UgLURfWE9QRU5fU09VUkNFPTUwMCAtVV9QT1NJWF9DX1NPVVJDRSAtRF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMIC1ETkRFQlVHIC1JJHtpbmNsdWRlZGlyfQotCi1DQ0ZMQUdTCQk9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQotCi1CVUlMRF9DUFBGTEFHUwk9IC1JLi4vaW5jbHVkZSAKLUJVSUxEX0NDCT0gZ2NjCi1CVUlMRF9DQ0ZMQUdTCT0gLURIQVZFX0NPTkZJR19IIC1JLi4vbmN1cnNlcyAtSSQoc3JjZGlyKSAtSSQoSU5DRElSKSAkKEJVSUxEX0NQUEZMQUdTKSAKLUJVSUxEX0xERkxBR1MJPSAKLUJVSUxEX0xJQlMJPSAKLQotIyBUaGUgZXhlY3V0YWJsZXMgYnVpbHQgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgc291cmNlIHRoYXQKLSMgaXMgY29tcGlsZWQgaW50byB0aGUgYnVpbGQsIG9yIGFyZSB0ZXN0LXByb2dyYW1zIHRoYXQgYXJlIG5vdCBpbnN0YWxsZWQuCi0KLUJVSUxEX0VYRUVYVAk9IAoteAkJPSAKLQotQ0ZMQUdTX0xJQlRPT0wJPSAkKENDRkxBR1MpCi1DRkxBR1NfTk9STUFMCT0gJChDQ0ZMQUdTKQotQ0ZMQUdTX0RFQlVHCT0gJChDQ0ZMQUdTKSAtZyAtRFRSQUNFCi1DRkxBR1NfUFJPRklMRQk9ICQoQ0NGTEFHUykgLXBnCi1DRkxBR1NfU0hBUkVECT0gJChDQ0ZMQUdTKSB1bmtub3duCi0KLUNGTEFHU19ERUZBVUxUCT0gJChDRkxBR1NfTk9STUFMKQotCi1MSU5LCQk9ICQoTElCVE9PTCkKLUxERkxBR1MJCT0gICAKLQotU0hMSUJfRElSUwk9IC1MLi4vbGliCi1TSExJQl9MSVNUCT0gJChTSExJQl9ESVJTKSAKLVRJTkZPX0xJU1QJPSAkKFNITElCX0RJUlMpIAotVElDU19MSVNUCT0gJChTSExJQl9ESVJTKSAKLQotTUtfU0hBUkVEX0xJQgk9IGVjaG8gdW5rbm93bgotCi1OQ1VSU0VTX01BSk9SCT0gNQotTkNVUlNFU19NSU5PUgk9IDcKLVJFTF9WRVJTSU9OCT0gNS43Ci1BQklfVkVSU0lPTgk9IDUKLQotUkFOTElCCQk9IGFybS1lYWJpLXJhbmxpYgotCi1MSUJSQVJJRVMJPSAgLi4vbGliL2xpYm5jdXJzZXMuYSAuLi9saWIvbGlibmN1cnNlc19nLmEKLQotTElOVAkJPSAKLUxJTlRfT1BUUwk9IAotTElOVF9MSUJTCT0gLWxuY3Vyc2VzIAotCi1GQUxMQkFDS19MSVNUCT0gCi0KLVVTRV9CSUdfU1RSSU5HUwk9IDEKLVRFUk1JTkZPX0NBUFMJPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvQ2FwcwotCi1BVVRPX1NSQyA9IFwKLQkuL2NvZGVzLmMgXAotCS4vY29tcF9jYXB0YWIuYyBcCi0JLi9leHBhbmRlZC5jIFwKLQkuL2ZhbGxiYWNrLmMgXAotCS4vbGliX2dlbi5jIFwKLQkuL2xpYl9rZXluYW1lLmMgXAotCS4vbGlua190ZXN0LmMgXAotCS4vbmFtZXMuYyBcCi0JLi91bmN0cmwuYyBcCi0JaW5pdF9rZXl0cnkuaCBcCi0Ja2V5cy5saXN0Ci0KLVRFU1RfREVQUwk9IC4uL2xpYi9saWJuY3Vyc2VzLmEKLVRFU1RfQVJHUwk9IC1zdGF0aWMgLUwuLi9saWIgLWxmb3JtIC1sbWVudSAtbHBhbmVsIC1sbmN1cnNlcyAgLWR5bmFtaWMgCi1URVNUX0xERkxBR1MJPSAgJChURVNUX0FSR1MpICAgCi0KLVRFU1RfUFJPR1MgPSBcCi0JY2FwdG9pbmZvJHggXAotCWhhcmRzY3JvbGwkeCBcCi0JbGlua190ZXN0JHggXAotCWhhc2htYXAkeCBcCi0JbGliX212Y3VyJHgKLQotYmFzZQk9ICQoc3JjZGlyKS9iYXNlCi1zZXJpYWwJPSAkKHNyY2RpcikvdHR5Ci10aW5mbwk9ICQoc3JjZGlyKS90aW5mbwotdHJhY2UJPSAkKHNyY2RpcikvdHJhY2UKLXdpZGUJPSAkKHNyY2Rpcikvd2lkZWNoYXIKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWFsbCBcCi1saWJzIDo6CQkkKEFVVE9fU1JDKSAuLi9saWIgJChMSUJSQVJJRVMpCi0KLXNvdXJjZXM6CSQoQVVUT19TUkMpCi0KLSQoREVTVERJUikkKGJpbmRpcikgXAotJChERVNURElSKSQobGliZGlyKSA6Ci0Jc2ggJChzcmNkaXIpLy4uL21rZGlycy5zaCAkQAotCi0uLi9saWIgOiA7IG1rZGlyICRACi0KLS4vZmFsbGJhY2suYyA6ICQodGluZm8pL01LZmFsbGJhY2suc2gKLQlzaCAtZSAkKHRpbmZvKS9NS2ZhbGxiYWNrLnNoIC91c3IvbG9jYWwvc2hhcmUvdGVybWluZm8gJHt0b3Bfc3JjZGlyfS9taXNjL3Rlcm1pbmZvLnNyYyAkKEZBTExCQUNLX0xJU1QpID4kQAotCi0uL2xpYl9nZW4uYyA6ICQoYmFzZSkvTUtsaWJfZ2VuLnNoIC4uL2luY2x1ZGUvY3Vyc2VzLmgKLQlzaCAtZSAkKGJhc2UpL01LbGliX2dlbi5zaCAiJChDUFApICQoQ1BQRkxBR1MpIiAiJChBV0spIiBnZW5lcmF0ZWQgPC4uL2luY2x1ZGUvY3Vyc2VzLmggPiRACi0KLWluaXRfa2V5dHJ5Lmg6IG1ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKSBrZXlzLmxpc3QKLQkuL21ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKSBrZXlzLmxpc3QgPiAkQAotCi1rZXlzLmxpc3QgOgkkKHRpbmZvKS9NS2tleXNfbGlzdC5zaAotCUFXSz0kKEFXSykgc2ggJCh0aW5mbykvTUtrZXlzX2xpc3Quc2ggJChURVJNSU5GT19DQVBTKSB8IHNvcnQgPiRACi0KLW1ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKSA6IFwKLQkJJCh0aW5mbykvbWFrZV9rZXlzLmMgXAotCQluYW1lcy5jCi0JJChCVUlMRF9DQykgLW8gJEAgJChCVUlMRF9DQ0ZMQUdTKSAkKHRpbmZvKS9tYWtlX2tleXMuYyAkKEJVSUxEX0xERkxBR1MpICQoQlVJTERfTElCUykKLQotbWFrZV9oYXNoJChCVUlMRF9FWEVFWFQpIDogXAotCQkkKHRpbmZvKS9jb21wX2hhc2guYyBcCi0JCS4uL2luY2x1ZGUvaGFzaHNpemUuaAotCSQoQlVJTERfQ0MpIC1vICRAICQoQlVJTERfQ0NGTEFHUykgLURNQUlOX1BST0dSQU0gJCh0aW5mbykvY29tcF9oYXNoLmMgJChCVUlMRF9MREZMQUdTKSAkKEJVSUxEX0xJQlMpCi0KLS4vZXhwYW5kZWQuYyA6ICQoc2VyaWFsKS9NS2V4cGFuZGVkLnNoCi0Jc2ggLWUgJChzZXJpYWwpL01LZXhwYW5kZWQuc2ggIiQoQ1BQKSIgJChDUFBGTEFHUykgPiAkQAotCi0uL2NvbXBfY2FwdGFiLmM6IFwKLQkJbWFrZV9oYXNoJChCVUlMRF9FWEVFWFQpIFwKLQkJLi4vaW5jbHVkZS9oYXNoc2l6ZS5oIFwKLQkJJCh0aW5mbykvTUtjYXB0YWIuc2ggXAotCQkkKHRpbmZvKS9NS2NhcHRhYi5hd2sKLQlzaCAtZSAkKHRpbmZvKS9NS2NhcHRhYi5zaCAkKEFXSykgJChVU0VfQklHX1NUUklOR1MpICQodGluZm8pL01LY2FwdGFiLmF3ayAkKHNyY2RpcikvLi4vaW5jbHVkZS9DYXBzID4gJEAKLQotLi9saWJfa2V5bmFtZS5jOiBrZXlzLmxpc3QgJChiYXNlKS9NS2tleW5hbWUuYXdrCi0JJChBV0spIC1mICQoYmFzZSkvTUtrZXluYW1lLmF3ayBiaWdzdHJpbmdzPSQoVVNFX0JJR19TVFJJTkdTKSBrZXlzLmxpc3QgPiAkQAotCi0uL2NvZGVzLmM6ICQodGluZm8pL01LY29kZXMuYXdrCi0JJChBV0spIC1mICQodGluZm8pL01LY29kZXMuYXdrIGJpZ3N0cmluZ3M9JChVU0VfQklHX1NUUklOR1MpICQoc3JjZGlyKS8uLi9pbmNsdWRlL0NhcHMgPiRACi0KLS4vbmFtZXMuYzogJCh0aW5mbykvTUtuYW1lcy5hd2sKLQkkKEFXSykgLWYgJCh0aW5mbykvTUtuYW1lcy5hd2sgYmlnc3RyaW5ncz0kKFVTRV9CSUdfU1RSSU5HUykgJChzcmNkaXIpLy4uL2luY2x1ZGUvQ2FwcyA+JEAKLQotLi91bmN0cmwuYzogJChiYXNlKS9NS3VuY3RybC5hd2sKLQllY2hvIHwgJChBV0spIC1mICQoYmFzZSkvTUt1bmN0cmwuYXdrIGJpZ3N0cmluZ3M9JChVU0VfQklHX1NUUklOR1MpID4kQAotCi10YWdzOgotCWN0YWdzICouW2NoXSAqLyouW2NoXQotCi1UQUdTOgotCWV0YWdzICouW2NoXSAqLyouW2NoXQotCi1tb3N0bHljbGVhbiA6OgotCS1ybSAtZiBjb3JlIHRhZ3MgVEFHUyAqfiAqLmJhayAqLmkgKi5sbiAqLmF0YWMgdHJhY2UKLQktcm0gLWYgJChURVNUX1BST0dTKQotCi1jbGVhbiA6OiBtb3N0bHljbGVhbgotCS1ybSAtZiAkKEFVVE9fU1JDKQotCS1ybSAtZiBtYWtlX2tleXMkKEJVSUxEX0VYRUVYVCkKLQktcm0gLWYgbWFrZV9oYXNoJChCVUlMRF9FWEVFWFQpCi0JLXJtIC1yZiAubGlicwotCi1kaXN0Y2xlYW4gOjogY2xlYW4KLQktcm0gLWYgTWFrZWZpbGUKLQotcmVhbGNsZWFuIDo6IGRpc3RjbGVhbgotCi0jIFRoZXNlIHJ1bGVzIGFyZSB1c2VkIHRvIGFsbG93ICJtYWtlIC1uIiB0byB3b3JrIG9uIGEgY2xlYW4gZGlyZWN0b3J5LXRyZWUKLS4uL2luY2x1ZGUvaGFzaHNpemUuaCBcCi0uLi9pbmNsdWRlL3BhcmFtZXRyaXplZC5oIFwKLS4uL2luY2x1ZGUvdGVybS5oIDoKLQljZCAuLi9pbmNsdWRlOyAkKE1BS0UpICQoQ0ZfTUZMQUdTKQotCi0jIFRoZXNlIHJ1bGVzIGJ1aWxkIHRlc3QtcHJvZ3JhbXMgZm9yIHRoZSBtb2R1bGVzIHRoYXQgaGF2ZSB0ZXN0LWRyaXZlcnMKLXRlc3RfcHJvZ3MgOiAkKFRFU1RfUFJPR1MpCi0KLS4vbGlua190ZXN0LmMgOiAkKGJhc2UpL01LbGliX2dlbi5zaCAuLi9pbmNsdWRlL2N1cnNlcy5oCi0Jc2ggLWUgJChiYXNlKS9NS2xpYl9nZW4uc2ggIiQoQ1BQKSAkKENQUEZMQUdTKSIgIiQoQVdLKSIgaW1wbGVtZW50ZWQgPC4uL2luY2x1ZGUvY3Vyc2VzLmggPiRACi0KLWNhcHRvaW5mbyR4IDogJCh0aW5mbykvY2FwdG9pbmZvLmMgJChURVNUX0RFUFMpCi0JICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRE1BSU4gJCh0aW5mbykvY2FwdG9pbmZvLmMgJChURVNUX0xERkxBR1MpCi0KLWhhcmRzY3JvbGwkeCA6ICQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgJChURVNUX0RFUFMpCi0JICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRFNDUk9MTERFQlVHICQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgJChURVNUX0xERkxBR1MpCi0KLWhhc2htYXAkeCA6ICQoc2VyaWFsKS9oYXNobWFwLmMgJChzZXJpYWwpL2hhcmRzY3JvbGwuYyAkKFRFU1RfREVQUykKLQkgJChMSUJUT09MX0xJTkspIC1vICRAICQoQ0ZMQUdTX0RFRkFVTFQpIC1ESEFTSERFQlVHICQoc2VyaWFsKS9oYXNobWFwLmMgJChzZXJpYWwpL2hhcmRzY3JvbGwuYyAkKFRFU1RfTERGTEFHUykKLQotbGliX212Y3VyJHggOiAkKHNlcmlhbCkvbGliX212Y3VyLmMgJChURVNUX0RFUFMpIFwKLQkJLi4vb2JqZWN0cy9kdW1wX2VudHJ5JG8KLQkgJChMSUJUT09MX0xJTkspIC1vICRAICQoQ0ZMQUdTX0RFRkFVTFQpIC1ETkNVUlNFU19URVNUIC1JJChzZXJpYWwpLy4uLy4uL3Byb2dzICQoc2VyaWFsKS9saWJfbXZjdXIuYyAuLi9vYmplY3RzL2R1bXBfZW50cnkkbyAkKFRFU1RfTERGTEFHUykKLQotbGlua190ZXN0JHggOiAuL2xpbmtfdGVzdC5jICQoVEVTVF9ERVBTKSBcCi0JCS4uL29iamVjdHMvbGlua190ZXN0JG8KLQkgJChDQykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLi4vb2JqZWN0cy9saW5rX3Rlc3QkbyAkKFRFU1RfTERGTEFHUykKLQotLi4vb2JqZWN0cy9kdW1wX2VudHJ5JG86Ci0JY2QgLi4vcHJvZ3MgJiYgJChNQUtFKSAuLi9vYmplY3RzL2R1bXBfZW50cnkkbwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGR1cmluZyBjb25maWd1cmF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTB0aC5hd2sKLSMgICBsaWJuYW1lOiAgICBuY3Vyc2VzCi0jICAgc3Vic2V0czogICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0KLS5TVUZGSVhFUzogLmMgLmNjIC5oIC5pIC5paQotLmMuaSA6Ci0JJChDUFApICQoQ1BQRkxBR1MpICQ8ID4kQAotLmNjLmlpIDoKLQkkKENQUCkgJChDUFBGTEFHUykgJDwgPiRACi0uaC5pIDoKLQkkKENQUCkgJChDUFBGTEFHUykgJDwgPiRACi0KLUNfU1JDID0gXAotCSQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgXAotCSQoc2VyaWFsKS9oYXNobWFwLmMgXAotCSQoYmFzZSkvbGliX2FkZGNoLmMgXAotCSQoYmFzZSkvbGliX2FkZHN0ci5jIFwKLQkkKGJhc2UpL2xpYl9iZWVwLmMgXAotCSQoYmFzZSkvbGliX2JrZ2QuYyBcCi0JJChiYXNlKS9saWJfYm94LmMgXAotCSQoYmFzZSkvbGliX2NoZ2F0LmMgXAotCSQoYmFzZSkvbGliX2NsZWFyLmMgXAotCSQoYmFzZSkvbGliX2NsZWFyb2suYyBcCi0JJChiYXNlKS9saWJfY2xyYm90LmMgXAotCSQoYmFzZSkvbGliX2NscmVvbC5jIFwKLQkkKGJhc2UpL2xpYl9jb2xvci5jIFwKLQkkKGJhc2UpL2xpYl9jb2xvcnNldC5jIFwKLQkkKGJhc2UpL2xpYl9kZWxjaC5jIFwKLQkkKGJhc2UpL2xpYl9kZWx3aW4uYyBcCi0JJChiYXNlKS9saWJfZWNoby5jIFwKLQkkKGJhc2UpL2xpYl9lbmR3aW4uYyBcCi0JJChiYXNlKS9saWJfZXJhc2UuYyBcCi0JJChiYXNlKS9saWJfZmxhc2guYyBcCi0JLi9saWJfZ2VuLmMgXAotCSQoYmFzZSkvbGliX2dldGNoLmMgXAotCSQoYmFzZSkvbGliX2dldHN0ci5jIFwKLQkkKGJhc2UpL2xpYl9obGluZS5jIFwKLQkkKGJhc2UpL2xpYl9pbW1lZG9rLmMgXAotCSQoYmFzZSkvbGliX2luY2hzdHIuYyBcCi0JJChiYXNlKS9saWJfaW5pdHNjci5jIFwKLQkkKGJhc2UpL2xpYl9pbnNjaC5jIFwKLQkkKGJhc2UpL2xpYl9pbnNkZWwuYyBcCi0JJChiYXNlKS9saWJfaW5zbnN0ci5jIFwKLQkkKGJhc2UpL2xpYl9pbnN0ci5jIFwKLQkkKGJhc2UpL2xpYl9pc2VuZHdpbi5jIFwKLQkkKGJhc2UpL2xpYl9sZWF2ZW9rLmMgXAotCSQoYmFzZSkvbGliX21vdXNlLmMgXAotCSQoYmFzZSkvbGliX21vdmUuYyBcCi0JJChzZXJpYWwpL2xpYl9tdmN1ci5jIFwKLQkkKGJhc2UpL2xpYl9tdndpbi5jIFwKLQkkKGJhc2UpL2xpYl9uZXd0ZXJtLmMgXAotCSQoYmFzZSkvbGliX25ld3dpbi5jIFwKLQkkKGJhc2UpL2xpYl9ubC5jIFwKLQkkKGJhc2UpL2xpYl9vdmVybGF5LmMgXAotCSQoYmFzZSkvbGliX3BhZC5jIFwKLQkkKGJhc2UpL2xpYl9wcmludHcuYyBcCi0JJChiYXNlKS9saWJfcmVkcmF3bG4uYyBcCi0JJChiYXNlKS9saWJfcmVmcmVzaC5jIFwKLQkkKGJhc2UpL2xpYl9yZXN0YXJ0LmMgXAotCSQoYmFzZSkvbGliX3NjYW53LmMgXAotCSQoYmFzZSkvbGliX3NjcmVlbi5jIFwKLQkkKGJhc2UpL2xpYl9zY3JvbGwuYyBcCi0JJChiYXNlKS9saWJfc2Nyb2xsb2suYyBcCi0JJChiYXNlKS9saWJfc2NycmVnLmMgXAotCSQoYmFzZSkvbGliX3NldF90ZXJtLmMgXAotCSQoYmFzZSkvbGliX3Nsay5jIFwKLQkkKGJhc2UpL2xpYl9zbGthdHJfc2V0LmMgXAotCSQoYmFzZSkvbGliX3Nsa2F0cm9mLmMgXAotCSQoYmFzZSkvbGliX3Nsa2F0cm9uLmMgXAotCSQoYmFzZSkvbGliX3Nsa2F0cnNldC5jIFwKLQkkKGJhc2UpL2xpYl9zbGthdHRyLmMgXAotCSQoYmFzZSkvbGliX3Nsa2NsZWFyLmMgXAotCSQoYmFzZSkvbGliX3Nsa2NvbG9yLmMgXAotCSQoYmFzZSkvbGliX3Nsa2luaXQuYyBcCi0JJChiYXNlKS9saWJfc2xrbGFiLmMgXAotCSQoYmFzZSkvbGliX3Nsa3JlZnIuYyBcCi0JJChiYXNlKS9saWJfc2xrc2V0LmMgXAotCSQoYmFzZSkvbGliX3Nsa3RvdWNoLmMgXAotCSQoYmFzZSkvbGliX3RvdWNoLmMgXAotCSQodHJhY2UpL2xpYl90cmFjZWRtcC5jIFwKLQkkKHRyYWNlKS9saWJfdHJhY2Vtc2UuYyBcCi0JJChzZXJpYWwpL2xpYl90c3RwLmMgXAotCSQoYmFzZSkvbGliX3VuZ2V0Y2guYyBcCi0JJChzZXJpYWwpL2xpYl92aWRhdHRyLmMgXAotCSQoYmFzZSkvbGliX3ZsaW5lLmMgXAotCSQoYmFzZSkvbGliX3dhdHRyb2ZmLmMgXAotCSQoYmFzZSkvbGliX3dhdHRyb24uYyBcCi0JJChiYXNlKS9saWJfd2luY2guYyBcCi0JJChiYXNlKS9saWJfd2luZG93LmMgXAotCSQoYmFzZSkvbmNfcGFuZWwuYyBcCi0JJChiYXNlKS9zYWZlX3NwcmludGYuYyBcCi0JJChzZXJpYWwpL3R0eV91cGRhdGUuYyBcCi0JJCh0cmFjZSkvdmFyYXJncy5jIFwKLQkkKGJhc2UpL21lbW1vdmUuYyBcCi0JJChiYXNlKS92c3NjYW5mLmMgXAotCSQoYmFzZSkvbGliX2ZyZWVhbGwuYyBcCi0JLi9leHBhbmRlZC5jIFwKLQkkKGJhc2UpL2xlZ2FjeV9jb2RpbmcuYyBcCi0JJChiYXNlKS9saWJfZGZ0X2ZnYmcuYyBcCi0JJCh0aW5mbykvbGliX3ByaW50LmMgXAotCSQoYmFzZSkvcmVzaXpldGVybS5jIFwKLQkkKHRyYWNlKS90cmFjZV94bmFtZXMuYyBcCi0JJCh0aW5mbykvdXNlX3NjcmVlbi5jIFwKLQkkKGJhc2UpL3VzZV93aW5kb3cuYyBcCi0JJChiYXNlKS93cmVzaXplLmMgXAotCSQodGluZm8pL2FjY2Vzcy5jIFwKLQkkKHRpbmZvKS9hZGRfdHJpZXMuYyBcCi0JJCh0aW5mbykvYWxsb2NfdHR5cGUuYyBcCi0JLi9jb2Rlcy5jIFwKLQkkKHRpbmZvKS9jb21wX2Vycm9yLmMgXAotCSQodGluZm8pL2RiX2l0ZXJhdG9yLmMgXAotCSQodGluZm8pL2RvYWxsb2MuYyBcCi0JJCh0aW5mbykvZW50cmllcy5jIFwKLQkuL2ZhbGxiYWNrLmMgXAotCSQodGluZm8pL2ZyZWVfdHR5cGUuYyBcCi0JJCh0aW5mbykvZ2V0ZW52X251bS5jIFwKLQkkKHRpbmZvKS9ob21lX3Rlcm1pbmZvLmMgXAotCSQodGluZm8pL2luaXRfa2V5dHJ5LmMgXAotCSQodGluZm8pL2xpYl9hY3MuYyBcCi0JJCh0aW5mbykvbGliX2JhdWRyYXRlLmMgXAotCSQodGluZm8pL2xpYl9jdXJfdGVybS5jIFwKLQkkKHRpbmZvKS9saWJfZGF0YS5jIFwKLQkkKHRpbmZvKS9saWJfaGFzX2NhcC5jIFwKLQkkKHRpbmZvKS9saWJfa2VybmVsLmMgXAotCS4vbGliX2tleW5hbWUuYyBcCi0JJCh0aW5mbykvbGliX2xvbmduYW1lLmMgXAotCSQodGluZm8pL2xpYl9uYXBtcy5jIFwKLQkkKHRpbmZvKS9saWJfb3B0aW9ucy5jIFwKLQkkKHRpbmZvKS9saWJfcmF3LmMgXAotCSQodGluZm8pL2xpYl9zZXR1cC5jIFwKLQkkKHRpbmZvKS9saWJfdGVybWNhcC5jIFwKLQkkKHRpbmZvKS9saWJfdGVybW5hbWUuYyBcCi0JJCh0aW5mbykvbGliX3Rnb3RvLmMgXAotCSQodGluZm8pL2xpYl90aS5jIFwKLQkkKHRpbmZvKS9saWJfdHBhcm0uYyBcCi0JJCh0aW5mbykvbGliX3RwdXRzLmMgXAotCSQodHJhY2UpL2xpYl90cmFjZS5jIFwKLQkkKHRyYWNlKS9saWJfdHJhY2VhdHIuYyBcCi0JJCh0cmFjZSkvbGliX3RyYWNlYml0cy5jIFwKLQkkKHRyYWNlKS9saWJfdHJhY2VjaHIuYyBcCi0JJCh0aW5mbykvbGliX3R0eWZsYWdzLmMgXAotCSQoc2VyaWFsKS9saWJfdHdhaXQuYyBcCi0JJCh0aW5mbykvbmFtZV9tYXRjaC5jIFwKLQkuL25hbWVzLmMgXAotCSQodGluZm8pL3JlYWRfZW50cnkuYyBcCi0JJCh0aW5mbykvcmVhZF90ZXJtY2FwLmMgXAotCSQodGluZm8pL3NldGJ1Zi5jIFwKLQkkKHRpbmZvKS9zdHJpbmdzLmMgXAotCSQodHJhY2UpL3RyYWNlX2J1Zi5jIFwKLQkkKHRyYWNlKS90cmFjZV90cmllcy5jIFwKLQkkKGJhc2UpL3RyaWVzLmMgXAotCSQodGluZm8pL3RyaW1fc2dyMC5jIFwKLQkuL3VuY3RybC5jIFwKLQkkKHRyYWNlKS92aXNidWYuYyBcCi0JJCh0aW5mbykvYWxsb2NfZW50cnkuYyBcCi0JJCh0aW5mbykvY2FwdG9pbmZvLmMgXAotCS4vY29tcF9jYXB0YWIuYyBcCi0JJCh0aW5mbykvY29tcF9leHBhbmQuYyBcCi0JJCh0aW5mbykvY29tcF9oYXNoLmMgXAotCSQodGluZm8pL2NvbXBfcGFyc2UuYyBcCi0JJCh0aW5mbykvY29tcF9zY2FuLmMgXAotCSQodGluZm8pL3BhcnNlX2VudHJ5LmMgXAotCSQodGluZm8pL3dyaXRlX2VudHJ5LmMgXAotCSQoYmFzZSkvZGVmaW5lX2tleS5jIFwKLQkkKHRpbmZvKS9oYXNoZWRfZGIuYyBcCi0JJChiYXNlKS9rZXlfZGVmaW5lZC5jIFwKLQkkKGJhc2UpL2tleWJvdW5kLmMgXAotCSQoYmFzZSkva2V5b2suYyBcCi0JJChiYXNlKS92ZXJzaW9uLmMKLQotIyBQcm9kdWNpbmcgbGxpYi1sbmN1cnNlcyBpcyB0aW1lLWNvbnN1bWluZywgc28gdGhlcmUncyBubyBkaXJlY3QtZGVwZW5kZW5jeSBmb3IKLSMgaXQgaW4gdGhlIGxpbnRsaWIgcnVsZS4gIFdlJ2xsIG9ubHkgcmVtb3ZlIGluIHRoZSBjbGVhbmVzdCBzZXR1cC4KLWNsZWFuIDo6Ci0Jcm0gLWYgbGxpYi1sbmN1cnNlcy4qCi0KLXJlYWxjbGVhbiA6OgotCXJtIC1mIGxsaWItbG5jdXJzZXMKLQotbGxpYi1sbmN1cnNlcyA6ICQoQ19TUkMpCi0JY3Byb3RvIC1hIC1sIC1ETkNVUlNFU19FTkFCTEVfU1REQk9PTF9IPTAgLURMSU5UICQoQ1BQRkxBR1MpICQoQ19TUkMpID4kQAotCi1saW50bGliIDoKLQlzaCAkKHNyY2RpcikvLi4vbWlzYy9tYWtlbGxpYiBuY3Vyc2VzICQoQ1BQRkxBR1MpCi1saW50IDoKLQkkKExJTlQpICQoTElOVF9PUFRTKSAkKENQUEZMQUdTKSAkKENfU1JDKSAkKExJTlRfTElCUykKLQotIyBnZW5lcmF0ZWQgYnkgbWstMXN0LmF3ayAoc3Vic2V0PXRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcykKLSMgIG5hbWU6ICAgICAgICAgIG5jdXJzZXMKLSMgIHRyYWNlczogICAgICAgIERFQlVHCi0jICBNT0RFTDogICAgICAgICBOT1JNQUwKLSMgIG1vZGVsOiAgICAgICAgIG9iamVjdHMKLSMgIHByZWZpeDogICAgICAgIGxpYgotIyAgc3VmZml4OiAgICAgICAgLmEKLSMgIHN1YnNldDogICAgICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgU2hsaWJWZXI6ICAgICAgYXV0bwotIyAgU2hsaWJWZXJJbmZpeDogbm8KLSMgIFRlcm1saWJSb290OiAgIG5jdXJzZXMKLSMgIFRlcm1saWJTdWZmaXg6IC5hCi0jICBSZUxpbms6ICAgICAgICAKLSMgIERvTGlua3M6ICAgICAgIG5vCi0jICBybVNvTG9jczogICAgICBubwotIyAgbGRjb25maWc6ICAgICAgOgotIyAgb3ZlcndyaXRlOiAgICAgbm8KLSMgIGRlcGVuZDogICAgICAgIC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAuL2N1cnNlcy5wcml2LmgKLSMgIGhvc3Q6ICAgICAgICAgIGFybS11bmtub3duLWVhYmkKLQotTk9STUFMX09CSlMgPSBcCi0JLi4vb2JqZWN0cy9oYXJkc2Nyb2xsJG8gXAotCS4uL29iamVjdHMvaGFzaG1hcCRvIFwKLQkuLi9vYmplY3RzL2xpYl9hZGRjaCRvIFwKLQkuLi9vYmplY3RzL2xpYl9hZGRzdHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfYmVlcCRvIFwKLQkuLi9vYmplY3RzL2xpYl9ia2dkJG8gXAotCS4uL29iamVjdHMvbGliX2JveCRvIFwKLQkuLi9vYmplY3RzL2xpYl9jaGdhdCRvIFwKLQkuLi9vYmplY3RzL2xpYl9jbGVhciRvIFwKLQkuLi9vYmplY3RzL2xpYl9jbGVhcm9rJG8gXAotCS4uL29iamVjdHMvbGliX2NscmJvdCRvIFwKLQkuLi9vYmplY3RzL2xpYl9jbHJlb2wkbyBcCi0JLi4vb2JqZWN0cy9saWJfY29sb3IkbyBcCi0JLi4vb2JqZWN0cy9saWJfY29sb3JzZXQkbyBcCi0JLi4vb2JqZWN0cy9saWJfZGVsY2gkbyBcCi0JLi4vb2JqZWN0cy9saWJfZGVsd2luJG8gXAotCS4uL29iamVjdHMvbGliX2VjaG8kbyBcCi0JLi4vb2JqZWN0cy9saWJfZW5kd2luJG8gXAotCS4uL29iamVjdHMvbGliX2VyYXNlJG8gXAotCS4uL29iamVjdHMvbGliX2ZsYXNoJG8gXAotCS4uL29iamVjdHMvbGliX2dlbiRvIFwKLQkuLi9vYmplY3RzL2xpYl9nZXRjaCRvIFwKLQkuLi9vYmplY3RzL2xpYl9nZXRzdHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfaGxpbmUkbyBcCi0JLi4vb2JqZWN0cy9saWJfaW1tZWRvayRvIFwKLQkuLi9vYmplY3RzL2xpYl9pbmNoc3RyJG8gXAotCS4uL29iamVjdHMvbGliX2luaXRzY3IkbyBcCi0JLi4vb2JqZWN0cy9saWJfaW5zY2gkbyBcCi0JLi4vb2JqZWN0cy9saWJfaW5zZGVsJG8gXAotCS4uL29iamVjdHMvbGliX2luc25zdHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfaW5zdHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfaXNlbmR3aW4kbyBcCi0JLi4vb2JqZWN0cy9saWJfbGVhdmVvayRvIFwKLQkuLi9vYmplY3RzL2xpYl9tb3VzZSRvIFwKLQkuLi9vYmplY3RzL2xpYl9tb3ZlJG8gXAotCS4uL29iamVjdHMvbGliX212Y3VyJG8gXAotCS4uL29iamVjdHMvbGliX212d2luJG8gXAotCS4uL29iamVjdHMvbGliX25ld3Rlcm0kbyBcCi0JLi4vb2JqZWN0cy9saWJfbmV3d2luJG8gXAotCS4uL29iamVjdHMvbGliX25sJG8gXAotCS4uL29iamVjdHMvbGliX292ZXJsYXkkbyBcCi0JLi4vb2JqZWN0cy9saWJfcGFkJG8gXAotCS4uL29iamVjdHMvbGliX3ByaW50dyRvIFwKLQkuLi9vYmplY3RzL2xpYl9yZWRyYXdsbiRvIFwKLQkuLi9vYmplY3RzL2xpYl9yZWZyZXNoJG8gXAotCS4uL29iamVjdHMvbGliX3Jlc3RhcnQkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2NhbnckbyBcCi0JLi4vb2JqZWN0cy9saWJfc2NyZWVuJG8gXAotCS4uL29iamVjdHMvbGliX3Njcm9sbCRvIFwKLQkuLi9vYmplY3RzL2xpYl9zY3JvbGxvayRvIFwKLQkuLi9vYmplY3RzL2xpYl9zY3JyZWckbyBcCi0JLi4vb2JqZWN0cy9saWJfc2V0X3Rlcm0kbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrJG8gXAotCS4uL29iamVjdHMvbGliX3Nsa2F0cl9zZXQkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrYXRyb2YkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrYXRyb24kbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrYXRyc2V0JG8gXAotCS4uL29iamVjdHMvbGliX3Nsa2F0dHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrY2xlYXIkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrY29sb3IkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xraW5pdCRvIFwKLQkuLi9vYmplY3RzL2xpYl9zbGtsYWIkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrcmVmciRvIFwKLQkuLi9vYmplY3RzL2xpYl9zbGtzZXQkbyBcCi0JLi4vb2JqZWN0cy9saWJfc2xrdG91Y2gkbyBcCi0JLi4vb2JqZWN0cy9saWJfdG91Y2gkbyBcCi0JLi4vb2JqZWN0cy9saWJfdHN0cCRvIFwKLQkuLi9vYmplY3RzL2xpYl91bmdldGNoJG8gXAotCS4uL29iamVjdHMvbGliX3ZpZGF0dHIkbyBcCi0JLi4vb2JqZWN0cy9saWJfdmxpbmUkbyBcCi0JLi4vb2JqZWN0cy9saWJfd2F0dHJvZmYkbyBcCi0JLi4vb2JqZWN0cy9saWJfd2F0dHJvbiRvIFwKLQkuLi9vYmplY3RzL2xpYl93aW5jaCRvIFwKLQkuLi9vYmplY3RzL2xpYl93aW5kb3ckbyBcCi0JLi4vb2JqZWN0cy9uY19wYW5lbCRvIFwKLQkuLi9vYmplY3RzL3NhZmVfc3ByaW50ZiRvIFwKLQkuLi9vYmplY3RzL3R0eV91cGRhdGUkbyBcCi0JLi4vb2JqZWN0cy92YXJhcmdzJG8gXAotCS4uL29iamVjdHMvbWVtbW92ZSRvIFwKLQkuLi9vYmplY3RzL3Zzc2NhbmYkbyBcCi0JLi4vb2JqZWN0cy9saWJfZnJlZWFsbCRvIFwKLQkuLi9vYmplY3RzL2V4cGFuZGVkJG8gXAotCS4uL29iamVjdHMvbGVnYWN5X2NvZGluZyRvIFwKLQkuLi9vYmplY3RzL2xpYl9kZnRfZmdiZyRvIFwKLQkuLi9vYmplY3RzL2xpYl9wcmludCRvIFwKLQkuLi9vYmplY3RzL3Jlc2l6ZXRlcm0kbyBcCi0JLi4vb2JqZWN0cy91c2Vfc2NyZWVuJG8gXAotCS4uL29iamVjdHMvdXNlX3dpbmRvdyRvIFwKLQkuLi9vYmplY3RzL3dyZXNpemUkbyBcCi0JLi4vb2JqZWN0cy9hY2Nlc3MkbyBcCi0JLi4vb2JqZWN0cy9hZGRfdHJpZXMkbyBcCi0JLi4vb2JqZWN0cy9hbGxvY190dHlwZSRvIFwKLQkuLi9vYmplY3RzL2NvZGVzJG8gXAotCS4uL29iamVjdHMvY29tcF9lcnJvciRvIFwKLQkuLi9vYmplY3RzL2RiX2l0ZXJhdG9yJG8gXAotCS4uL29iamVjdHMvZG9hbGxvYyRvIFwKLQkuLi9vYmplY3RzL2VudHJpZXMkbyBcCi0JLi4vb2JqZWN0cy9mYWxsYmFjayRvIFwKLQkuLi9vYmplY3RzL2ZyZWVfdHR5cGUkbyBcCi0JLi4vb2JqZWN0cy9nZXRlbnZfbnVtJG8gXAotCS4uL29iamVjdHMvaG9tZV90ZXJtaW5mbyRvIFwKLQkuLi9vYmplY3RzL2luaXRfa2V5dHJ5JG8gXAotCS4uL29iamVjdHMvbGliX2FjcyRvIFwKLQkuLi9vYmplY3RzL2xpYl9iYXVkcmF0ZSRvIFwKLQkuLi9vYmplY3RzL2xpYl9jdXJfdGVybSRvIFwKLQkuLi9vYmplY3RzL2xpYl9kYXRhJG8gXAotCS4uL29iamVjdHMvbGliX2hhc19jYXAkbyBcCi0JLi4vb2JqZWN0cy9saWJfa2VybmVsJG8gXAotCS4uL29iamVjdHMvbGliX2tleW5hbWUkbyBcCi0JLi4vb2JqZWN0cy9saWJfbG9uZ25hbWUkbyBcCi0JLi4vb2JqZWN0cy9saWJfbmFwbXMkbyBcCi0JLi4vb2JqZWN0cy9saWJfb3B0aW9ucyRvIFwKLQkuLi9vYmplY3RzL2xpYl9yYXckbyBcCi0JLi4vb2JqZWN0cy9saWJfc2V0dXAkbyBcCi0JLi4vb2JqZWN0cy9saWJfdGVybWNhcCRvIFwKLQkuLi9vYmplY3RzL2xpYl90ZXJtbmFtZSRvIFwKLQkuLi9vYmplY3RzL2xpYl90Z290byRvIFwKLQkuLi9vYmplY3RzL2xpYl90aSRvIFwKLQkuLi9vYmplY3RzL2xpYl90cGFybSRvIFwKLQkuLi9vYmplY3RzL2xpYl90cHV0cyRvIFwKLQkuLi9vYmplY3RzL2xpYl90cmFjZSRvIFwKLQkuLi9vYmplY3RzL2xpYl90dHlmbGFncyRvIFwKLQkuLi9vYmplY3RzL2xpYl90d2FpdCRvIFwKLQkuLi9vYmplY3RzL25hbWVfbWF0Y2gkbyBcCi0JLi4vb2JqZWN0cy9uYW1lcyRvIFwKLQkuLi9vYmplY3RzL3JlYWRfZW50cnkkbyBcCi0JLi4vb2JqZWN0cy9yZWFkX3Rlcm1jYXAkbyBcCi0JLi4vb2JqZWN0cy9zZXRidWYkbyBcCi0JLi4vb2JqZWN0cy9zdHJpbmdzJG8gXAotCS4uL29iamVjdHMvdHJpZXMkbyBcCi0JLi4vb2JqZWN0cy90cmltX3NncjAkbyBcCi0JLi4vb2JqZWN0cy91bmN0cmwkbyBcCi0JLi4vb2JqZWN0cy92aXNidWYkbyBcCi0JLi4vb2JqZWN0cy9hbGxvY19lbnRyeSRvIFwKLQkuLi9vYmplY3RzL2NhcHRvaW5mbyRvIFwKLQkuLi9vYmplY3RzL2NvbXBfY2FwdGFiJG8gXAotCS4uL29iamVjdHMvY29tcF9leHBhbmQkbyBcCi0JLi4vb2JqZWN0cy9jb21wX2hhc2gkbyBcCi0JLi4vb2JqZWN0cy9jb21wX3BhcnNlJG8gXAotCS4uL29iamVjdHMvY29tcF9zY2FuJG8gXAotCS4uL29iamVjdHMvcGFyc2VfZW50cnkkbyBcCi0JLi4vb2JqZWN0cy93cml0ZV9lbnRyeSRvIFwKLQkuLi9vYmplY3RzL2RlZmluZV9rZXkkbyBcCi0JLi4vb2JqZWN0cy9oYXNoZWRfZGIkbyBcCi0JLi4vb2JqZWN0cy9rZXlfZGVmaW5lZCRvIFwKLQkuLi9vYmplY3RzL2tleWJvdW5kJG8gXAotCS4uL29iamVjdHMva2V5b2skbyBcCi0JLi4vb2JqZWN0cy92ZXJzaW9uJG8KLQotJChOT1JNQUxfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9jdXJzZXMucHJpdi5oCi0KLS4uL2xpYi9saWJuY3Vyc2VzLmEgOiAkKE5PUk1BTF9PQkpTKQotCSQoQVIpICQoQVJfT1BUUykgJEAgJD8KLQkkKFJBTkxJQikgJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5uY3Vyc2VzIDo6ICQoREVTVERJUikkKGxpYmRpcikgLi4vbGliL2xpYm5jdXJzZXMuYQotCUBlY2hvIGluc3RhbGxpbmcgLi4vbGliL2xpYm5jdXJzZXMuYSBhcyAkKERFU1RESVIpJChsaWJkaXIpL2xpYm5jdXJzZXMuYQotCSQoSU5TVEFMTF9EQVRBKSAuLi9saWIvbGlibmN1cnNlcy5hICQoREVTVERJUikkKGxpYmRpcikvbGlibmN1cnNlcy5hCi0JJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGlibmN1cnNlcy5hCi0KLXVuaW5zdGFsbCBcCi11bmluc3RhbGwubGlicyBcCi11bmluc3RhbGwubmN1cnNlcyA6OgotCUBlY2hvIHVuaW5zdGFsbGluZyAkKERFU1RESVIpJChsaWJkaXIpL2xpYm5jdXJzZXMuYQotCS1Acm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJuY3Vyc2VzLmEKLQotY2xlYW4gOjoKLQktcm0gLWYgLi4vbGliL2xpYm5jdXJzZXMuYQotCi1tb3N0bHljbGVhbjo6Ci0JLXJtIC1mICQoTk9STUFMX09CSlMpCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTJuZC5hd2sKLSMgICBtb2RlbDogICAgICBvYmplY3RzCi0jICAgTU9ERUw6ICAgICAgTk9STUFMCi0jICAgZWNobzogICAgICAgeWVzCi0jICAgc3Vic2V0OiAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICAgY3JlbmFtZXM6ICAgeWVzCi0jICAgY3h4cmVuYW1lczogbm8KLSMgICB0cmFjZXM6ICAgICBERUJVRwotIyAgIHNyY2RpcjogICAgIC4KLQotLi4vb2JqZWN0cy9oYXJkc2Nyb2xsJG8gOgkkKHNlcmlhbCkvaGFyZHNjcm9sbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHNlcmlhbCkvaGFyZHNjcm9sbC5jIC1vIC4uL29iamVjdHMvaGFyZHNjcm9sbCRvCi0KLS4uL29iamVjdHMvaGFzaG1hcCRvIDoJJChzZXJpYWwpL2hhc2htYXAuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL2hhc2htYXAuYyAtbyAuLi9vYmplY3RzL2hhc2htYXAkbwotCi0uLi9vYmplY3RzL2xpYl9hZGRjaCRvIDoJJChiYXNlKS9saWJfYWRkY2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfYWRkY2guYyAtbyAuLi9vYmplY3RzL2xpYl9hZGRjaCRvCi0KLS4uL29iamVjdHMvbGliX2FkZHN0ciRvIDoJJChiYXNlKS9saWJfYWRkc3RyLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2FkZHN0ci5jIC1vIC4uL29iamVjdHMvbGliX2FkZHN0ciRvCi0KLS4uL29iamVjdHMvbGliX2JlZXAkbyA6CSQoYmFzZSkvbGliX2JlZXAuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfYmVlcC5jIC1vIC4uL29iamVjdHMvbGliX2JlZXAkbwotCi0uLi9vYmplY3RzL2xpYl9ia2dkJG8gOgkkKGJhc2UpL2xpYl9ia2dkLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2JrZ2QuYyAtbyAuLi9vYmplY3RzL2xpYl9ia2dkJG8KLQotLi4vb2JqZWN0cy9saWJfYm94JG8gOgkkKGJhc2UpL2xpYl9ib3guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfYm94LmMgLW8gLi4vb2JqZWN0cy9saWJfYm94JG8KLQotLi4vb2JqZWN0cy9saWJfY2hnYXQkbyA6CSQoYmFzZSkvbGliX2NoZ2F0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2NoZ2F0LmMgLW8gLi4vb2JqZWN0cy9saWJfY2hnYXQkbwotCi0uLi9vYmplY3RzL2xpYl9jbGVhciRvIDoJJChiYXNlKS9saWJfY2xlYXIuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfY2xlYXIuYyAtbyAuLi9vYmplY3RzL2xpYl9jbGVhciRvCi0KLS4uL29iamVjdHMvbGliX2NsZWFyb2skbyA6CSQoYmFzZSkvbGliX2NsZWFyb2suYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfY2xlYXJvay5jIC1vIC4uL29iamVjdHMvbGliX2NsZWFyb2skbwotCi0uLi9vYmplY3RzL2xpYl9jbHJib3QkbyA6CSQoYmFzZSkvbGliX2NscmJvdC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jbHJib3QuYyAtbyAuLi9vYmplY3RzL2xpYl9jbHJib3QkbwotCi0uLi9vYmplY3RzL2xpYl9jbHJlb2wkbyA6CSQoYmFzZSkvbGliX2NscmVvbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jbHJlb2wuYyAtbyAuLi9vYmplY3RzL2xpYl9jbHJlb2wkbwotCi0uLi9vYmplY3RzL2xpYl9jb2xvciRvIDoJJChiYXNlKS9saWJfY29sb3IuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfY29sb3IuYyAtbyAuLi9vYmplY3RzL2xpYl9jb2xvciRvCi0KLS4uL29iamVjdHMvbGliX2NvbG9yc2V0JG8gOgkkKGJhc2UpL2xpYl9jb2xvcnNldC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jb2xvcnNldC5jIC1vIC4uL29iamVjdHMvbGliX2NvbG9yc2V0JG8KLQotLi4vb2JqZWN0cy9saWJfZGVsY2gkbyA6CSQoYmFzZSkvbGliX2RlbGNoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2RlbGNoLmMgLW8gLi4vb2JqZWN0cy9saWJfZGVsY2gkbwotCi0uLi9vYmplY3RzL2xpYl9kZWx3aW4kbyA6CSQoYmFzZSkvbGliX2RlbHdpbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9kZWx3aW4uYyAtbyAuLi9vYmplY3RzL2xpYl9kZWx3aW4kbwotCi0uLi9vYmplY3RzL2xpYl9lY2hvJG8gOgkkKGJhc2UpL2xpYl9lY2hvLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2VjaG8uYyAtbyAuLi9vYmplY3RzL2xpYl9lY2hvJG8KLQotLi4vb2JqZWN0cy9saWJfZW5kd2luJG8gOgkkKGJhc2UpL2xpYl9lbmR3aW4uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZW5kd2luLmMgLW8gLi4vb2JqZWN0cy9saWJfZW5kd2luJG8KLQotLi4vb2JqZWN0cy9saWJfZXJhc2UkbyA6CSQoYmFzZSkvbGliX2VyYXNlLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2VyYXNlLmMgLW8gLi4vb2JqZWN0cy9saWJfZXJhc2UkbwotCi0uLi9vYmplY3RzL2xpYl9mbGFzaCRvIDoJJChiYXNlKS9saWJfZmxhc2guYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZmxhc2guYyAtbyAuLi9vYmplY3RzL2xpYl9mbGFzaCRvCi0KLS4uL29iamVjdHMvbGliX2dlbiRvIDoJLi9saWJfZ2VuLmMgXAotCQkJLi4vaW5jbHVkZS9jdXJzZXMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvbGliX2dlbi5jIC1vIC4uL29iamVjdHMvbGliX2dlbiRvCi0KLS4uL29iamVjdHMvbGliX2dldGNoJG8gOgkkKGJhc2UpL2xpYl9nZXRjaC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9nZXRjaC5jIC1vIC4uL29iamVjdHMvbGliX2dldGNoJG8KLQotLi4vb2JqZWN0cy9saWJfZ2V0c3RyJG8gOgkkKGJhc2UpL2xpYl9nZXRzdHIuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZ2V0c3RyLmMgLW8gLi4vb2JqZWN0cy9saWJfZ2V0c3RyJG8KLQotLi4vb2JqZWN0cy9saWJfaGxpbmUkbyA6CSQoYmFzZSkvbGliX2hsaW5lLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2hsaW5lLmMgLW8gLi4vb2JqZWN0cy9saWJfaGxpbmUkbwotCi0uLi9vYmplY3RzL2xpYl9pbW1lZG9rJG8gOgkkKGJhc2UpL2xpYl9pbW1lZG9rLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2ltbWVkb2suYyAtbyAuLi9vYmplY3RzL2xpYl9pbW1lZG9rJG8KLQotLi4vb2JqZWN0cy9saWJfaW5jaHN0ciRvIDoJJChiYXNlKS9saWJfaW5jaHN0ci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbmNoc3RyLmMgLW8gLi4vb2JqZWN0cy9saWJfaW5jaHN0ciRvCi0KLS4uL29iamVjdHMvbGliX2luaXRzY3IkbyA6CSQoYmFzZSkvbGliX2luaXRzY3IuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2luaXRzY3IuYyAtbyAuLi9vYmplY3RzL2xpYl9pbml0c2NyJG8KLQotLi4vb2JqZWN0cy9saWJfaW5zY2gkbyA6CSQoYmFzZSkvbGliX2luc2NoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2luc2NoLmMgLW8gLi4vb2JqZWN0cy9saWJfaW5zY2gkbwotCi0uLi9vYmplY3RzL2xpYl9pbnNkZWwkbyA6CSQoYmFzZSkvbGliX2luc2RlbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbnNkZWwuYyAtbyAuLi9vYmplY3RzL2xpYl9pbnNkZWwkbwotCi0uLi9vYmplY3RzL2xpYl9pbnNuc3RyJG8gOgkkKGJhc2UpL2xpYl9pbnNuc3RyLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2luc25zdHIuYyAtbyAuLi9vYmplY3RzL2xpYl9pbnNuc3RyJG8KLQotLi4vb2JqZWN0cy9saWJfaW5zdHIkbyA6CSQoYmFzZSkvbGliX2luc3RyLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2luc3RyLmMgLW8gLi4vb2JqZWN0cy9saWJfaW5zdHIkbwotCi0uLi9vYmplY3RzL2xpYl9pc2VuZHdpbiRvIDoJJChiYXNlKS9saWJfaXNlbmR3aW4uYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfaXNlbmR3aW4uYyAtbyAuLi9vYmplY3RzL2xpYl9pc2VuZHdpbiRvCi0KLS4uL29iamVjdHMvbGliX2xlYXZlb2skbyA6CSQoYmFzZSkvbGliX2xlYXZlb2suYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbGVhdmVvay5jIC1vIC4uL29iamVjdHMvbGliX2xlYXZlb2skbwotCi0uLi9vYmplY3RzL2xpYl9tb3VzZSRvIDoJJChiYXNlKS9saWJfbW91c2UuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbW91c2UuYyAtbyAuLi9vYmplY3RzL2xpYl9tb3VzZSRvCi0KLS4uL29iamVjdHMvbGliX21vdmUkbyA6CSQoYmFzZSkvbGliX21vdmUuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbW92ZS5jIC1vIC4uL29iamVjdHMvbGliX21vdmUkbwotCi0uLi9vYmplY3RzL2xpYl9tdmN1ciRvIDoJJChzZXJpYWwpL2xpYl9tdmN1ci5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL2xpYl9tdmN1ci5jIC1vIC4uL29iamVjdHMvbGliX212Y3VyJG8KLQotLi4vb2JqZWN0cy9saWJfbXZ3aW4kbyA6CSQoYmFzZSkvbGliX212d2luLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX212d2luLmMgLW8gLi4vb2JqZWN0cy9saWJfbXZ3aW4kbwotCi0uLi9vYmplY3RzL2xpYl9uZXd0ZXJtJG8gOgkkKGJhc2UpL2xpYl9uZXd0ZXJtLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX25ld3Rlcm0uYyAtbyAuLi9vYmplY3RzL2xpYl9uZXd0ZXJtJG8KLQotLi4vb2JqZWN0cy9saWJfbmV3d2luJG8gOgkkKGJhc2UpL2xpYl9uZXd3aW4uYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbmV3d2luLmMgLW8gLi4vb2JqZWN0cy9saWJfbmV3d2luJG8KLQotLi4vb2JqZWN0cy9saWJfbmwkbyA6CSQoYmFzZSkvbGliX25sLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX25sLmMgLW8gLi4vb2JqZWN0cy9saWJfbmwkbwotCi0uLi9vYmplY3RzL2xpYl9vdmVybGF5JG8gOgkkKGJhc2UpL2xpYl9vdmVybGF5LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX292ZXJsYXkuYyAtbyAuLi9vYmplY3RzL2xpYl9vdmVybGF5JG8KLQotLi4vb2JqZWN0cy9saWJfcGFkJG8gOgkkKGJhc2UpL2xpYl9wYWQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfcGFkLmMgLW8gLi4vb2JqZWN0cy9saWJfcGFkJG8KLQotLi4vb2JqZWN0cy9saWJfcHJpbnR3JG8gOgkkKGJhc2UpL2xpYl9wcmludHcuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfcHJpbnR3LmMgLW8gLi4vb2JqZWN0cy9saWJfcHJpbnR3JG8KLQotLi4vb2JqZWN0cy9saWJfcmVkcmF3bG4kbyA6CSQoYmFzZSkvbGliX3JlZHJhd2xuLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3JlZHJhd2xuLmMgLW8gLi4vb2JqZWN0cy9saWJfcmVkcmF3bG4kbwotCi0uLi9vYmplY3RzL2xpYl9yZWZyZXNoJG8gOgkkKGJhc2UpL2xpYl9yZWZyZXNoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3JlZnJlc2guYyAtbyAuLi9vYmplY3RzL2xpYl9yZWZyZXNoJG8KLQotLi4vb2JqZWN0cy9saWJfcmVzdGFydCRvIDoJJChiYXNlKS9saWJfcmVzdGFydC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9yZXN0YXJ0LmMgLW8gLi4vb2JqZWN0cy9saWJfcmVzdGFydCRvCi0KLS4uL29iamVjdHMvbGliX3NjYW53JG8gOgkkKGJhc2UpL2xpYl9zY2Fudy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zY2Fudy5jIC1vIC4uL29iamVjdHMvbGliX3NjYW53JG8KLQotLi4vb2JqZWN0cy9saWJfc2NyZWVuJG8gOgkkKGJhc2UpL2xpYl9zY3JlZW4uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2NyZWVuLmMgLW8gLi4vb2JqZWN0cy9saWJfc2NyZWVuJG8KLQotLi4vb2JqZWN0cy9saWJfc2Nyb2xsJG8gOgkkKGJhc2UpL2xpYl9zY3JvbGwuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2Nyb2xsLmMgLW8gLi4vb2JqZWN0cy9saWJfc2Nyb2xsJG8KLQotLi4vb2JqZWN0cy9saWJfc2Nyb2xsb2skbyA6CSQoYmFzZSkvbGliX3Njcm9sbG9rLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Njcm9sbG9rLmMgLW8gLi4vb2JqZWN0cy9saWJfc2Nyb2xsb2skbwotCi0uLi9vYmplY3RzL2xpYl9zY3JyZWckbyA6CSQoYmFzZSkvbGliX3NjcnJlZy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zY3JyZWcuYyAtbyAuLi9vYmplY3RzL2xpYl9zY3JyZWckbwotCi0uLi9vYmplY3RzL2xpYl9zZXRfdGVybSRvIDoJJChiYXNlKS9saWJfc2V0X3Rlcm0uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2V0X3Rlcm0uYyAtbyAuLi9vYmplY3RzL2xpYl9zZXRfdGVybSRvCi0KLS4uL29iamVjdHMvbGliX3NsayRvIDoJJChiYXNlKS9saWJfc2xrLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsay5jIC1vIC4uL29iamVjdHMvbGliX3NsayRvCi0KLS4uL29iamVjdHMvbGliX3Nsa2F0cl9zZXQkbyA6CSQoYmFzZSkvbGliX3Nsa2F0cl9zZXQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrYXRyX3NldC5jIC1vIC4uL29iamVjdHMvbGliX3Nsa2F0cl9zZXQkbwotCi0uLi9vYmplY3RzL2xpYl9zbGthdHJvZiRvIDoJJChiYXNlKS9saWJfc2xrYXRyb2YuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrYXRyb2YuYyAtbyAuLi9vYmplY3RzL2xpYl9zbGthdHJvZiRvCi0KLS4uL29iamVjdHMvbGliX3Nsa2F0cm9uJG8gOgkkKGJhc2UpL2xpYl9zbGthdHJvbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGthdHJvbi5jIC1vIC4uL29iamVjdHMvbGliX3Nsa2F0cm9uJG8KLQotLi4vb2JqZWN0cy9saWJfc2xrYXRyc2V0JG8gOgkkKGJhc2UpL2xpYl9zbGthdHJzZXQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrYXRyc2V0LmMgLW8gLi4vb2JqZWN0cy9saWJfc2xrYXRyc2V0JG8KLQotLi4vb2JqZWN0cy9saWJfc2xrYXR0ciRvIDoJJChiYXNlKS9saWJfc2xrYXR0ci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGthdHRyLmMgLW8gLi4vb2JqZWN0cy9saWJfc2xrYXR0ciRvCi0KLS4uL29iamVjdHMvbGliX3Nsa2NsZWFyJG8gOgkkKGJhc2UpL2xpYl9zbGtjbGVhci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGtjbGVhci5jIC1vIC4uL29iamVjdHMvbGliX3Nsa2NsZWFyJG8KLQotLi4vb2JqZWN0cy9saWJfc2xrY29sb3IkbyA6CSQoYmFzZSkvbGliX3Nsa2NvbG9yLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa2NvbG9yLmMgLW8gLi4vb2JqZWN0cy9saWJfc2xrY29sb3IkbwotCi0uLi9vYmplY3RzL2xpYl9zbGtpbml0JG8gOgkkKGJhc2UpL2xpYl9zbGtpbml0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa2luaXQuYyAtbyAuLi9vYmplY3RzL2xpYl9zbGtpbml0JG8KLQotLi4vb2JqZWN0cy9saWJfc2xrbGFiJG8gOgkkKGJhc2UpL2xpYl9zbGtsYWIuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrbGFiLmMgLW8gLi4vb2JqZWN0cy9saWJfc2xrbGFiJG8KLQotLi4vb2JqZWN0cy9saWJfc2xrcmVmciRvIDoJJChiYXNlKS9saWJfc2xrcmVmci5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGtyZWZyLmMgLW8gLi4vb2JqZWN0cy9saWJfc2xrcmVmciRvCi0KLS4uL29iamVjdHMvbGliX3Nsa3NldCRvIDoJJChiYXNlKS9saWJfc2xrc2V0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa3NldC5jIC1vIC4uL29iamVjdHMvbGliX3Nsa3NldCRvCi0KLS4uL29iamVjdHMvbGliX3Nsa3RvdWNoJG8gOgkkKGJhc2UpL2xpYl9zbGt0b3VjaC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGt0b3VjaC5jIC1vIC4uL29iamVjdHMvbGliX3Nsa3RvdWNoJG8KLQotLi4vb2JqZWN0cy9saWJfdG91Y2gkbyA6CSQoYmFzZSkvbGliX3RvdWNoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3RvdWNoLmMgLW8gLi4vb2JqZWN0cy9saWJfdG91Y2gkbwotCi0uLi9vYmplY3RzL2xpYl90c3RwJG8gOgkkKHNlcmlhbCkvbGliX3RzdHAuYyBcCi0JCQkkKHNyY2RpcikvU2lnQWN0aW9uLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9saWJfdHN0cC5jIC1vIC4uL29iamVjdHMvbGliX3RzdHAkbwotCi0uLi9vYmplY3RzL2xpYl91bmdldGNoJG8gOgkkKGJhc2UpL2xpYl91bmdldGNoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3VuZ2V0Y2guYyAtbyAuLi9vYmplY3RzL2xpYl91bmdldGNoJG8KLQotLi4vb2JqZWN0cy9saWJfdmlkYXR0ciRvIDoJJChzZXJpYWwpL2xpYl92aWRhdHRyLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9saWJfdmlkYXR0ci5jIC1vIC4uL29iamVjdHMvbGliX3ZpZGF0dHIkbwotCi0uLi9vYmplY3RzL2xpYl92bGluZSRvIDoJJChiYXNlKS9saWJfdmxpbmUuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfdmxpbmUuYyAtbyAuLi9vYmplY3RzL2xpYl92bGluZSRvCi0KLS4uL29iamVjdHMvbGliX3dhdHRyb2ZmJG8gOgkkKGJhc2UpL2xpYl93YXR0cm9mZi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl93YXR0cm9mZi5jIC1vIC4uL29iamVjdHMvbGliX3dhdHRyb2ZmJG8KLQotLi4vb2JqZWN0cy9saWJfd2F0dHJvbiRvIDoJJChiYXNlKS9saWJfd2F0dHJvbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl93YXR0cm9uLmMgLW8gLi4vb2JqZWN0cy9saWJfd2F0dHJvbiRvCi0KLS4uL29iamVjdHMvbGliX3dpbmNoJG8gOgkkKGJhc2UpL2xpYl93aW5jaC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl93aW5jaC5jIC1vIC4uL29iamVjdHMvbGliX3dpbmNoJG8KLQotLi4vb2JqZWN0cy9saWJfd2luZG93JG8gOgkkKGJhc2UpL2xpYl93aW5kb3cuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfd2luZG93LmMgLW8gLi4vb2JqZWN0cy9saWJfd2luZG93JG8KLQotLi4vb2JqZWN0cy9saW5rX3Rlc3QkbyA6CS4vbGlua190ZXN0LmMgXAotCQkJLi4vaW5jbHVkZS9jdXJzZXMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvbGlua190ZXN0LmMgLW8gLi4vb2JqZWN0cy9saW5rX3Rlc3QkbwotCi0uLi9vYmplY3RzL25jX3BhbmVsJG8gOgkkKGJhc2UpL25jX3BhbmVsLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbmNfcGFuZWwuYyAtbyAuLi9vYmplY3RzL25jX3BhbmVsJG8KLQotLi4vb2JqZWN0cy9zYWZlX3NwcmludGYkbyA6CSQoYmFzZSkvc2FmZV9zcHJpbnRmLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvc2FmZV9zcHJpbnRmLmMgLW8gLi4vb2JqZWN0cy9zYWZlX3NwcmludGYkbwotCi0uLi9vYmplY3RzL3R0eV91cGRhdGUkbyA6CSQoc2VyaWFsKS90dHlfdXBkYXRlLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS90dHlfdXBkYXRlLmMgLW8gLi4vb2JqZWN0cy90dHlfdXBkYXRlJG8KLQotLi4vb2JqZWN0cy92YXJhcmdzJG8gOgkkKHRyYWNlKS92YXJhcmdzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodHJhY2UpL3ZhcmFyZ3MuYyAtbyAuLi9vYmplY3RzL3ZhcmFyZ3MkbwotCi0uLi9vYmplY3RzL21lbW1vdmUkbyA6CSQoYmFzZSkvbWVtbW92ZS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL21lbW1vdmUuYyAtbyAuLi9vYmplY3RzL21lbW1vdmUkbwotCi0uLi9vYmplY3RzL3Zzc2NhbmYkbyA6CSQoYmFzZSkvdnNzY2FuZi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL3Zzc2NhbmYuYyAtbyAuLi9vYmplY3RzL3Zzc2NhbmYkbwotCi0uLi9vYmplY3RzL2xpYl9mcmVlYWxsJG8gOgkkKGJhc2UpL2xpYl9mcmVlYWxsLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2ZyZWVhbGwuYyAtbyAuLi9vYmplY3RzL2xpYl9mcmVlYWxsJG8KLQotLi4vb2JqZWN0cy9leHBhbmRlZCRvIDoJLi9leHBhbmRlZC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy9leHBhbmRlZC5jIC1vIC4uL29iamVjdHMvZXhwYW5kZWQkbwotCi0uLi9vYmplY3RzL2xlZ2FjeV9jb2RpbmckbyA6CSQoYmFzZSkvbGVnYWN5X2NvZGluZy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xlZ2FjeV9jb2RpbmcuYyAtbyAuLi9vYmplY3RzL2xlZ2FjeV9jb2RpbmckbwotCi0uLi9vYmplY3RzL2xpYl9kZnRfZmdiZyRvIDoJJChiYXNlKS9saWJfZGZ0X2ZnYmcuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZGZ0X2ZnYmcuYyAtbyAuLi9vYmplY3RzL2xpYl9kZnRfZmdiZyRvCi0KLS4uL29iamVjdHMvbGliX3ByaW50JG8gOgkkKHRpbmZvKS9saWJfcHJpbnQuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3ByaW50LmMgLW8gLi4vb2JqZWN0cy9saWJfcHJpbnQkbwotCi0uLi9vYmplY3RzL3Jlc2l6ZXRlcm0kbyA6CSQoYmFzZSkvcmVzaXpldGVybS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL3Jlc2l6ZXRlcm0uYyAtbyAuLi9vYmplY3RzL3Jlc2l6ZXRlcm0kbwotCi0uLi9vYmplY3RzL3VzZV9zY3JlZW4kbyA6CSQodGluZm8pL3VzZV9zY3JlZW4uYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvdXNlX3NjcmVlbi5jIC1vIC4uL29iamVjdHMvdXNlX3NjcmVlbiRvCi0KLS4uL29iamVjdHMvdXNlX3dpbmRvdyRvIDoJJChiYXNlKS91c2Vfd2luZG93LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvdXNlX3dpbmRvdy5jIC1vIC4uL29iamVjdHMvdXNlX3dpbmRvdyRvCi0KLS4uL29iamVjdHMvd3Jlc2l6ZSRvIDoJJChiYXNlKS93cmVzaXplLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvd3Jlc2l6ZS5jIC1vIC4uL29iamVjdHMvd3Jlc2l6ZSRvCi0KLS4uL29iamVjdHMvYWNjZXNzJG8gOgkkKHRpbmZvKS9hY2Nlc3MuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvYWNjZXNzLmMgLW8gLi4vb2JqZWN0cy9hY2Nlc3MkbwotCi0uLi9vYmplY3RzL2FkZF90cmllcyRvIDoJJCh0aW5mbykvYWRkX3RyaWVzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2FkZF90cmllcy5jIC1vIC4uL29iamVjdHMvYWRkX3RyaWVzJG8KLQotLi4vb2JqZWN0cy9hbGxvY190dHlwZSRvIDoJJCh0aW5mbykvYWxsb2NfdHR5cGUuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvYWxsb2NfdHR5cGUuYyAtbyAuLi9vYmplY3RzL2FsbG9jX3R0eXBlJG8KLQotLi4vb2JqZWN0cy9jb2RlcyRvIDoJLi9jb2Rlcy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy9jb2Rlcy5jIC1vIC4uL29iamVjdHMvY29kZXMkbwotCi0uLi9vYmplY3RzL2NvbXBfZXJyb3IkbyA6CSQodGluZm8pL2NvbXBfZXJyb3IuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2NvbXBfZXJyb3IuYyAtbyAuLi9vYmplY3RzL2NvbXBfZXJyb3IkbwotCi0uLi9vYmplY3RzL2RiX2l0ZXJhdG9yJG8gOgkkKHRpbmZvKS9kYl9pdGVyYXRvci5jIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvZGJfaXRlcmF0b3IuYyAtbyAuLi9vYmplY3RzL2RiX2l0ZXJhdG9yJG8KLQotLi4vb2JqZWN0cy9kb2FsbG9jJG8gOgkkKHRpbmZvKS9kb2FsbG9jLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2RvYWxsb2MuYyAtbyAuLi9vYmplY3RzL2RvYWxsb2MkbwotCi0uLi9vYmplY3RzL2VudHJpZXMkbyA6CSQodGluZm8pL2VudHJpZXMuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2VudHJpZXMuYyAtbyAuLi9vYmplY3RzL2VudHJpZXMkbwotCi0uLi9vYmplY3RzL2ZhbGxiYWNrJG8gOgkuL2ZhbGxiYWNrLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy9mYWxsYmFjay5jIC1vIC4uL29iamVjdHMvZmFsbGJhY2skbwotCi0uLi9vYmplY3RzL2ZyZWVfdHR5cGUkbyA6CSQodGluZm8pL2ZyZWVfdHR5cGUuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvZnJlZV90dHlwZS5jIC1vIC4uL29iamVjdHMvZnJlZV90dHlwZSRvCi0KLS4uL29iamVjdHMvZ2V0ZW52X251bSRvIDoJJCh0aW5mbykvZ2V0ZW52X251bS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9nZXRlbnZfbnVtLmMgLW8gLi4vb2JqZWN0cy9nZXRlbnZfbnVtJG8KLQotLi4vb2JqZWN0cy9ob21lX3Rlcm1pbmZvJG8gOgkkKHRpbmZvKS9ob21lX3Rlcm1pbmZvLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2hvbWVfdGVybWluZm8uYyAtbyAuLi9vYmplY3RzL2hvbWVfdGVybWluZm8kbwotCi0uLi9vYmplY3RzL2luaXRfa2V5dHJ5JG8gOgkkKHRpbmZvKS9pbml0X2tleXRyeS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaCBcCi0JCQlpbml0X2tleXRyeS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9pbml0X2tleXRyeS5jIC1vIC4uL29iamVjdHMvaW5pdF9rZXl0cnkkbwotCi0uLi9vYmplY3RzL2xpYl9hY3MkbyA6CSQodGluZm8pL2xpYl9hY3MuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX2Fjcy5jIC1vIC4uL29iamVjdHMvbGliX2FjcyRvCi0KLS4uL29iamVjdHMvbGliX2JhdWRyYXRlJG8gOgkkKHRpbmZvKS9saWJfYmF1ZHJhdGUuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX2JhdWRyYXRlLmMgLW8gLi4vb2JqZWN0cy9saWJfYmF1ZHJhdGUkbwotCi0uLi9vYmplY3RzL2xpYl9jdXJfdGVybSRvIDoJJCh0aW5mbykvbGliX2N1cl90ZXJtLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX2N1cl90ZXJtLmMgLW8gLi4vb2JqZWN0cy9saWJfY3VyX3Rlcm0kbwotCi0uLi9vYmplY3RzL2xpYl9kYXRhJG8gOgkkKHRpbmZvKS9saWJfZGF0YS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfZGF0YS5jIC1vIC4uL29iamVjdHMvbGliX2RhdGEkbwotCi0uLi9vYmplY3RzL2xpYl9oYXNfY2FwJG8gOgkkKHRpbmZvKS9saWJfaGFzX2NhcC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfaGFzX2NhcC5jIC1vIC4uL29iamVjdHMvbGliX2hhc19jYXAkbwotCi0uLi9vYmplY3RzL2xpYl9rZXJuZWwkbyA6CSQodGluZm8pL2xpYl9rZXJuZWwuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX2tlcm5lbC5jIC1vIC4uL29iamVjdHMvbGliX2tlcm5lbCRvCi0KLS4uL29iamVjdHMvbGliX2tleW5hbWUkbyA6CS4vbGliX2tleW5hbWUuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvbGliX2tleW5hbWUuYyAtbyAuLi9vYmplY3RzL2xpYl9rZXluYW1lJG8KLQotLi4vb2JqZWN0cy9saWJfbG9uZ25hbWUkbyA6CSQodGluZm8pL2xpYl9sb25nbmFtZS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfbG9uZ25hbWUuYyAtbyAuLi9vYmplY3RzL2xpYl9sb25nbmFtZSRvCi0KLS4uL29iamVjdHMvbGliX25hcG1zJG8gOgkkKHRpbmZvKS9saWJfbmFwbXMuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX25hcG1zLmMgLW8gLi4vb2JqZWN0cy9saWJfbmFwbXMkbwotCi0uLi9vYmplY3RzL2xpYl9vcHRpb25zJG8gOgkkKHRpbmZvKS9saWJfb3B0aW9ucy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfb3B0aW9ucy5jIC1vIC4uL29iamVjdHMvbGliX29wdGlvbnMkbwotCi0uLi9vYmplY3RzL2xpYl9yYXckbyA6CSQodGluZm8pL2xpYl9yYXcuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3Jhdy5jIC1vIC4uL29iamVjdHMvbGliX3JhdyRvCi0KLS4uL29iamVjdHMvbGliX3NldHVwJG8gOgkkKHRpbmZvKS9saWJfc2V0dXAuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfc2V0dXAuYyAtbyAuLi9vYmplY3RzL2xpYl9zZXR1cCRvCi0KLS4uL29iamVjdHMvbGliX3Rlcm1jYXAkbyA6CSQodGluZm8pL2xpYl90ZXJtY2FwLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmggXAotCQkJJChJTkNESVIpL2NhcGRlZmF1bHRzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl90ZXJtY2FwLmMgLW8gLi4vb2JqZWN0cy9saWJfdGVybWNhcCRvCi0KLS4uL29iamVjdHMvbGliX3Rlcm1uYW1lJG8gOgkkKHRpbmZvKS9saWJfdGVybW5hbWUuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl90ZXJtbmFtZS5jIC1vIC4uL29iamVjdHMvbGliX3Rlcm1uYW1lJG8KLQotLi4vb2JqZWN0cy9saWJfdGdvdG8kbyA6CSQodGluZm8pL2xpYl90Z290by5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3Rnb3RvLmMgLW8gLi4vb2JqZWN0cy9saWJfdGdvdG8kbwotCi0uLi9vYmplY3RzL2xpYl90aSRvIDoJJCh0aW5mbykvbGliX3RpLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl90aS5jIC1vIC4uL29iamVjdHMvbGliX3RpJG8KLQotLi4vb2JqZWN0cy9saWJfdHBhcm0kbyA6CSQodGluZm8pL2xpYl90cGFybS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3RwYXJtLmMgLW8gLi4vb2JqZWN0cy9saWJfdHBhcm0kbwotCi0uLi9vYmplY3RzL2xpYl90cHV0cyRvIDoJJCh0aW5mbykvbGliX3RwdXRzLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfdHB1dHMuYyAtbyAuLi9vYmplY3RzL2xpYl90cHV0cyRvCi0KLS4uL29iamVjdHMvbGliX3RyYWNlJG8gOgkkKHRyYWNlKS9saWJfdHJhY2UuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodHJhY2UpL2xpYl90cmFjZS5jIC1vIC4uL29iamVjdHMvbGliX3RyYWNlJG8KLQotLi4vb2JqZWN0cy9saWJfdHR5ZmxhZ3MkbyA6CSQodGluZm8pL2xpYl90dHlmbGFncy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfdHR5ZmxhZ3MuYyAtbyAuLi9vYmplY3RzL2xpYl90dHlmbGFncyRvCi0KLS4uL29iamVjdHMvbGliX3R3YWl0JG8gOgkkKHNlcmlhbCkvbGliX3R3YWl0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9saWJfdHdhaXQuYyAtbyAuLi9vYmplY3RzL2xpYl90d2FpdCRvCi0KLS4uL29iamVjdHMvbmFtZV9tYXRjaCRvIDoJJCh0aW5mbykvbmFtZV9tYXRjaC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbmFtZV9tYXRjaC5jIC1vIC4uL29iamVjdHMvbmFtZV9tYXRjaCRvCi0KLS4uL29iamVjdHMvbmFtZXMkbyA6CS4vbmFtZXMuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvbmFtZXMuYyAtbyAuLi9vYmplY3RzL25hbWVzJG8KLQotLi4vb2JqZWN0cy9yZWFkX2VudHJ5JG8gOgkkKHRpbmZvKS9yZWFkX2VudHJ5LmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3JlYWRfZW50cnkuYyAtbyAuLi9vYmplY3RzL3JlYWRfZW50cnkkbwotCi0uLi9vYmplY3RzL3JlYWRfdGVybWNhcCRvIDoJJCh0aW5mbykvcmVhZF90ZXJtY2FwLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3JlYWRfdGVybWNhcC5jIC1vIC4uL29iamVjdHMvcmVhZF90ZXJtY2FwJG8KLQotLi4vb2JqZWN0cy9zZXRidWYkbyA6CSQodGluZm8pL3NldGJ1Zi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9zZXRidWYuYyAtbyAuLi9vYmplY3RzL3NldGJ1ZiRvCi0KLS4uL29iamVjdHMvc3RyaW5ncyRvIDoJJCh0aW5mbykvc3RyaW5ncy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9zdHJpbmdzLmMgLW8gLi4vb2JqZWN0cy9zdHJpbmdzJG8KLQotLi4vb2JqZWN0cy90cmllcyRvIDoJJChiYXNlKS90cmllcy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL3RyaWVzLmMgLW8gLi4vb2JqZWN0cy90cmllcyRvCi0KLS4uL29iamVjdHMvdHJpbV9zZ3IwJG8gOgkkKHRpbmZvKS90cmltX3NncjAuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvdHJpbV9zZ3IwLmMgLW8gLi4vb2JqZWN0cy90cmltX3NncjAkbwotCi0uLi9vYmplY3RzL3VuY3RybCRvIDoJLi91bmN0cmwuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvdW5jdHJsLmMgLW8gLi4vb2JqZWN0cy91bmN0cmwkbwotCi0uLi9vYmplY3RzL3Zpc2J1ZiRvIDoJJCh0cmFjZSkvdmlzYnVmLmMgXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS92aXNidWYuYyAtbyAuLi9vYmplY3RzL3Zpc2J1ZiRvCi0KLS4uL29iamVjdHMvYWxsb2NfZW50cnkkbyA6CSQodGluZm8pL2FsbG9jX2VudHJ5LmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2FsbG9jX2VudHJ5LmMgLW8gLi4vb2JqZWN0cy9hbGxvY19lbnRyeSRvCi0KLS4uL29iamVjdHMvY2FwdG9pbmZvJG8gOgkkKHRpbmZvKS9jYXB0b2luZm8uYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2NhcHRvaW5mby5jIC1vIC4uL29iamVjdHMvY2FwdG9pbmZvJG8KLQotLi4vb2JqZWN0cy9jb21wX2NhcHRhYiRvIDoJLi9jb21wX2NhcHRhYi5jIFwKLQkJCSQoSU5DRElSKS90aWMuaCBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkuLi9pbmNsdWRlL2hhc2hzaXplLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzL2NvbXBfY2FwdGFiLmMgLW8gLi4vb2JqZWN0cy9jb21wX2NhcHRhYiRvCi0KLS4uL29iamVjdHMvY29tcF9leHBhbmQkbyA6CSQodGluZm8pL2NvbXBfZXhwYW5kLmMgXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9jb21wX2V4cGFuZC5jIC1vIC4uL29iamVjdHMvY29tcF9leHBhbmQkbwotCi0uLi9vYmplY3RzL2NvbXBfaGFzaCRvIDoJJCh0aW5mbykvY29tcF9oYXNoLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oIFwKLQkJCS4uL2luY2x1ZGUvaGFzaHNpemUuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY29tcF9oYXNoLmMgLW8gLi4vb2JqZWN0cy9jb21wX2hhc2gkbwotCi0uLi9vYmplY3RzL2NvbXBfcGFyc2UkbyA6CSQodGluZm8pL2NvbXBfcGFyc2UuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY29tcF9wYXJzZS5jIC1vIC4uL29iamVjdHMvY29tcF9wYXJzZSRvCi0KLS4uL29iamVjdHMvY29tcF9zY2FuJG8gOgkkKHRpbmZvKS9jb21wX3NjYW4uYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2NvbXBfc2Nhbi5jIC1vIC4uL29iamVjdHMvY29tcF9zY2FuJG8KLQotLi4vb2JqZWN0cy9wYXJzZV9lbnRyeSRvIDoJJCh0aW5mbykvcGFyc2VfZW50cnkuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaCBcCi0JCQkuLi9pbmNsdWRlL3BhcmFtZXRyaXplZC5oIFwKLQkJCSQoSU5DRElSKS9jYXBkZWZhdWx0cy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9wYXJzZV9lbnRyeS5jIC1vIC4uL29iamVjdHMvcGFyc2VfZW50cnkkbwotCi0uLi9vYmplY3RzL3dyaXRlX2VudHJ5JG8gOgkkKHRpbmZvKS93cml0ZV9lbnRyeS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS93cml0ZV9lbnRyeS5jIC1vIC4uL29iamVjdHMvd3JpdGVfZW50cnkkbwotCi0uLi9vYmplY3RzL2RlZmluZV9rZXkkbyA6CSQoYmFzZSkvZGVmaW5lX2tleS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2RlZmluZV9rZXkuYyAtbyAuLi9vYmplY3RzL2RlZmluZV9rZXkkbwotCi0uLi9vYmplY3RzL2hhc2hlZF9kYiRvIDoJJCh0aW5mbykvaGFzaGVkX2RiLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2hhc2hlZF9kYi5jIC1vIC4uL29iamVjdHMvaGFzaGVkX2RiJG8KLQotLi4vb2JqZWN0cy9rZXlfZGVmaW5lZCRvIDoJJChiYXNlKS9rZXlfZGVmaW5lZC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2tleV9kZWZpbmVkLmMgLW8gLi4vb2JqZWN0cy9rZXlfZGVmaW5lZCRvCi0KLS4uL29iamVjdHMva2V5Ym91bmQkbyA6CSQoYmFzZSkva2V5Ym91bmQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9rZXlib3VuZC5jIC1vIC4uL29iamVjdHMva2V5Ym91bmQkbwotCi0uLi9vYmplY3RzL2tleW9rJG8gOgkkKGJhc2UpL2tleW9rLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkva2V5b2suYyAtbyAuLi9vYmplY3RzL2tleW9rJG8KLQotLi4vb2JqZWN0cy92ZXJzaW9uJG8gOgkkKGJhc2UpL3ZlcnNpb24uYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL25jdXJzZXMvJChiYXNlKS92ZXJzaW9uLmMgLW8gLi4vb2JqZWN0cy92ZXJzaW9uJG8KLQotCi0jIGdlbmVyYXRlZCBieSBtay0xc3QuYXdrIChzdWJzZXQ9dGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzKQotIyAgbmFtZTogICAgICAgICAgbmN1cnNlcwotIyAgdHJhY2VzOiAgICAgICAgREVCVUcKLSMgIE1PREVMOiAgICAgICAgIERFQlVHCi0jICBtb2RlbDogICAgICAgICBvYmpfZwotIyAgcHJlZml4OiAgICAgICAgbGliCi0jICBzdWZmaXg6ICAgICAgICBfZy5hCi0jICBzdWJzZXQ6ICAgICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgIFNobGliVmVyOiAgICAgIGF1dG8KLSMgIFNobGliVmVySW5maXg6IG5vCi0jICBUZXJtbGliUm9vdDogICBuY3Vyc2VzCi0jICBUZXJtbGliU3VmZml4OiAuYQotIyAgUmVMaW5rOiAgICAgICAgCi0jICBEb0xpbmtzOiAgICAgICBubwotIyAgcm1Tb0xvY3M6ICAgICAgbm8KLSMgIGxkY29uZmlnOiAgICAgIDoKLSMgIG92ZXJ3cml0ZTogICAgIG5vCi0jICBkZXBlbmQ6ICAgICAgICAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9jdXJzZXMucHJpdi5oCi0jICBob3N0OiAgICAgICAgICBhcm0tdW5rbm93bi1lYWJpCi0KLURFQlVHX09CSlMgPSBcCi0JLi4vb2JqX2cvaGFyZHNjcm9sbCRvIFwKLQkuLi9vYmpfZy9oYXNobWFwJG8gXAotCS4uL29ial9nL2xpYl9hZGRjaCRvIFwKLQkuLi9vYmpfZy9saWJfYWRkc3RyJG8gXAotCS4uL29ial9nL2xpYl9iZWVwJG8gXAotCS4uL29ial9nL2xpYl9ia2dkJG8gXAotCS4uL29ial9nL2xpYl9ib3gkbyBcCi0JLi4vb2JqX2cvbGliX2NoZ2F0JG8gXAotCS4uL29ial9nL2xpYl9jbGVhciRvIFwKLQkuLi9vYmpfZy9saWJfY2xlYXJvayRvIFwKLQkuLi9vYmpfZy9saWJfY2xyYm90JG8gXAotCS4uL29ial9nL2xpYl9jbHJlb2wkbyBcCi0JLi4vb2JqX2cvbGliX2NvbG9yJG8gXAotCS4uL29ial9nL2xpYl9jb2xvcnNldCRvIFwKLQkuLi9vYmpfZy9saWJfZGVsY2gkbyBcCi0JLi4vb2JqX2cvbGliX2RlbHdpbiRvIFwKLQkuLi9vYmpfZy9saWJfZWNobyRvIFwKLQkuLi9vYmpfZy9saWJfZW5kd2luJG8gXAotCS4uL29ial9nL2xpYl9lcmFzZSRvIFwKLQkuLi9vYmpfZy9saWJfZmxhc2gkbyBcCi0JLi4vb2JqX2cvbGliX2dlbiRvIFwKLQkuLi9vYmpfZy9saWJfZ2V0Y2gkbyBcCi0JLi4vb2JqX2cvbGliX2dldHN0ciRvIFwKLQkuLi9vYmpfZy9saWJfaGxpbmUkbyBcCi0JLi4vb2JqX2cvbGliX2ltbWVkb2skbyBcCi0JLi4vb2JqX2cvbGliX2luY2hzdHIkbyBcCi0JLi4vb2JqX2cvbGliX2luaXRzY3IkbyBcCi0JLi4vb2JqX2cvbGliX2luc2NoJG8gXAotCS4uL29ial9nL2xpYl9pbnNkZWwkbyBcCi0JLi4vb2JqX2cvbGliX2luc25zdHIkbyBcCi0JLi4vb2JqX2cvbGliX2luc3RyJG8gXAotCS4uL29ial9nL2xpYl9pc2VuZHdpbiRvIFwKLQkuLi9vYmpfZy9saWJfbGVhdmVvayRvIFwKLQkuLi9vYmpfZy9saWJfbW91c2UkbyBcCi0JLi4vb2JqX2cvbGliX21vdmUkbyBcCi0JLi4vb2JqX2cvbGliX212Y3VyJG8gXAotCS4uL29ial9nL2xpYl9tdndpbiRvIFwKLQkuLi9vYmpfZy9saWJfbmV3dGVybSRvIFwKLQkuLi9vYmpfZy9saWJfbmV3d2luJG8gXAotCS4uL29ial9nL2xpYl9ubCRvIFwKLQkuLi9vYmpfZy9saWJfb3ZlcmxheSRvIFwKLQkuLi9vYmpfZy9saWJfcGFkJG8gXAotCS4uL29ial9nL2xpYl9wcmludHckbyBcCi0JLi4vb2JqX2cvbGliX3JlZHJhd2xuJG8gXAotCS4uL29ial9nL2xpYl9yZWZyZXNoJG8gXAotCS4uL29ial9nL2xpYl9yZXN0YXJ0JG8gXAotCS4uL29ial9nL2xpYl9zY2FudyRvIFwKLQkuLi9vYmpfZy9saWJfc2NyZWVuJG8gXAotCS4uL29ial9nL2xpYl9zY3JvbGwkbyBcCi0JLi4vb2JqX2cvbGliX3Njcm9sbG9rJG8gXAotCS4uL29ial9nL2xpYl9zY3JyZWckbyBcCi0JLi4vb2JqX2cvbGliX3NldF90ZXJtJG8gXAotCS4uL29ial9nL2xpYl9zbGskbyBcCi0JLi4vb2JqX2cvbGliX3Nsa2F0cl9zZXQkbyBcCi0JLi4vb2JqX2cvbGliX3Nsa2F0cm9mJG8gXAotCS4uL29ial9nL2xpYl9zbGthdHJvbiRvIFwKLQkuLi9vYmpfZy9saWJfc2xrYXRyc2V0JG8gXAotCS4uL29ial9nL2xpYl9zbGthdHRyJG8gXAotCS4uL29ial9nL2xpYl9zbGtjbGVhciRvIFwKLQkuLi9vYmpfZy9saWJfc2xrY29sb3IkbyBcCi0JLi4vb2JqX2cvbGliX3Nsa2luaXQkbyBcCi0JLi4vb2JqX2cvbGliX3Nsa2xhYiRvIFwKLQkuLi9vYmpfZy9saWJfc2xrcmVmciRvIFwKLQkuLi9vYmpfZy9saWJfc2xrc2V0JG8gXAotCS4uL29ial9nL2xpYl9zbGt0b3VjaCRvIFwKLQkuLi9vYmpfZy9saWJfdG91Y2gkbyBcCi0JLi4vb2JqX2cvbGliX3RyYWNlZG1wJG8gXAotCS4uL29ial9nL2xpYl90cmFjZW1zZSRvIFwKLQkuLi9vYmpfZy9saWJfdHN0cCRvIFwKLQkuLi9vYmpfZy9saWJfdW5nZXRjaCRvIFwKLQkuLi9vYmpfZy9saWJfdmlkYXR0ciRvIFwKLQkuLi9vYmpfZy9saWJfdmxpbmUkbyBcCi0JLi4vb2JqX2cvbGliX3dhdHRyb2ZmJG8gXAotCS4uL29ial9nL2xpYl93YXR0cm9uJG8gXAotCS4uL29ial9nL2xpYl93aW5jaCRvIFwKLQkuLi9vYmpfZy9saWJfd2luZG93JG8gXAotCS4uL29ial9nL25jX3BhbmVsJG8gXAotCS4uL29ial9nL3NhZmVfc3ByaW50ZiRvIFwKLQkuLi9vYmpfZy90dHlfdXBkYXRlJG8gXAotCS4uL29ial9nL3ZhcmFyZ3MkbyBcCi0JLi4vb2JqX2cvbWVtbW92ZSRvIFwKLQkuLi9vYmpfZy92c3NjYW5mJG8gXAotCS4uL29ial9nL2xpYl9mcmVlYWxsJG8gXAotCS4uL29ial9nL2V4cGFuZGVkJG8gXAotCS4uL29ial9nL2xlZ2FjeV9jb2RpbmckbyBcCi0JLi4vb2JqX2cvbGliX2RmdF9mZ2JnJG8gXAotCS4uL29ial9nL2xpYl9wcmludCRvIFwKLQkuLi9vYmpfZy9yZXNpemV0ZXJtJG8gXAotCS4uL29ial9nL3RyYWNlX3huYW1lcyRvIFwKLQkuLi9vYmpfZy91c2Vfc2NyZWVuJG8gXAotCS4uL29ial9nL3VzZV93aW5kb3ckbyBcCi0JLi4vb2JqX2cvd3Jlc2l6ZSRvIFwKLQkuLi9vYmpfZy9hY2Nlc3MkbyBcCi0JLi4vb2JqX2cvYWRkX3RyaWVzJG8gXAotCS4uL29ial9nL2FsbG9jX3R0eXBlJG8gXAotCS4uL29ial9nL2NvZGVzJG8gXAotCS4uL29ial9nL2NvbXBfZXJyb3IkbyBcCi0JLi4vb2JqX2cvZGJfaXRlcmF0b3IkbyBcCi0JLi4vb2JqX2cvZG9hbGxvYyRvIFwKLQkuLi9vYmpfZy9lbnRyaWVzJG8gXAotCS4uL29ial9nL2ZhbGxiYWNrJG8gXAotCS4uL29ial9nL2ZyZWVfdHR5cGUkbyBcCi0JLi4vb2JqX2cvZ2V0ZW52X251bSRvIFwKLQkuLi9vYmpfZy9ob21lX3Rlcm1pbmZvJG8gXAotCS4uL29ial9nL2luaXRfa2V5dHJ5JG8gXAotCS4uL29ial9nL2xpYl9hY3MkbyBcCi0JLi4vb2JqX2cvbGliX2JhdWRyYXRlJG8gXAotCS4uL29ial9nL2xpYl9jdXJfdGVybSRvIFwKLQkuLi9vYmpfZy9saWJfZGF0YSRvIFwKLQkuLi9vYmpfZy9saWJfaGFzX2NhcCRvIFwKLQkuLi9vYmpfZy9saWJfa2VybmVsJG8gXAotCS4uL29ial9nL2xpYl9rZXluYW1lJG8gXAotCS4uL29ial9nL2xpYl9sb25nbmFtZSRvIFwKLQkuLi9vYmpfZy9saWJfbmFwbXMkbyBcCi0JLi4vb2JqX2cvbGliX29wdGlvbnMkbyBcCi0JLi4vb2JqX2cvbGliX3JhdyRvIFwKLQkuLi9vYmpfZy9saWJfc2V0dXAkbyBcCi0JLi4vb2JqX2cvbGliX3Rlcm1jYXAkbyBcCi0JLi4vb2JqX2cvbGliX3Rlcm1uYW1lJG8gXAotCS4uL29ial9nL2xpYl90Z290byRvIFwKLQkuLi9vYmpfZy9saWJfdGkkbyBcCi0JLi4vb2JqX2cvbGliX3RwYXJtJG8gXAotCS4uL29ial9nL2xpYl90cHV0cyRvIFwKLQkuLi9vYmpfZy9saWJfdHJhY2UkbyBcCi0JLi4vb2JqX2cvbGliX3RyYWNlYXRyJG8gXAotCS4uL29ial9nL2xpYl90cmFjZWJpdHMkbyBcCi0JLi4vb2JqX2cvbGliX3RyYWNlY2hyJG8gXAotCS4uL29ial9nL2xpYl90dHlmbGFncyRvIFwKLQkuLi9vYmpfZy9saWJfdHdhaXQkbyBcCi0JLi4vb2JqX2cvbmFtZV9tYXRjaCRvIFwKLQkuLi9vYmpfZy9uYW1lcyRvIFwKLQkuLi9vYmpfZy9yZWFkX2VudHJ5JG8gXAotCS4uL29ial9nL3JlYWRfdGVybWNhcCRvIFwKLQkuLi9vYmpfZy9zZXRidWYkbyBcCi0JLi4vb2JqX2cvc3RyaW5ncyRvIFwKLQkuLi9vYmpfZy90cmFjZV9idWYkbyBcCi0JLi4vb2JqX2cvdHJhY2VfdHJpZXMkbyBcCi0JLi4vb2JqX2cvdHJpZXMkbyBcCi0JLi4vb2JqX2cvdHJpbV9zZ3IwJG8gXAotCS4uL29ial9nL3VuY3RybCRvIFwKLQkuLi9vYmpfZy92aXNidWYkbyBcCi0JLi4vb2JqX2cvYWxsb2NfZW50cnkkbyBcCi0JLi4vb2JqX2cvY2FwdG9pbmZvJG8gXAotCS4uL29ial9nL2NvbXBfY2FwdGFiJG8gXAotCS4uL29ial9nL2NvbXBfZXhwYW5kJG8gXAotCS4uL29ial9nL2NvbXBfaGFzaCRvIFwKLQkuLi9vYmpfZy9jb21wX3BhcnNlJG8gXAotCS4uL29ial9nL2NvbXBfc2NhbiRvIFwKLQkuLi9vYmpfZy9wYXJzZV9lbnRyeSRvIFwKLQkuLi9vYmpfZy93cml0ZV9lbnRyeSRvIFwKLQkuLi9vYmpfZy9kZWZpbmVfa2V5JG8gXAotCS4uL29ial9nL2hhc2hlZF9kYiRvIFwKLQkuLi9vYmpfZy9rZXlfZGVmaW5lZCRvIFwKLQkuLi9vYmpfZy9rZXlib3VuZCRvIFwKLQkuLi9vYmpfZy9rZXlvayRvIFwKLQkuLi9vYmpfZy92ZXJzaW9uJG8KLQotJChERUJVR19PQkpTKSA6IC4uL2luY2x1ZGUvbmN1cnNlc19jZmcuaCAuL2N1cnNlcy5wcml2LmgKLQotLi4vbGliL2xpYm5jdXJzZXNfZy5hIDogJChERUJVR19PQkpTKQotCSQoQVIpICQoQVJfT1BUUykgJEAgJD8KLQkkKFJBTkxJQikgJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5uY3Vyc2VzIDo6ICQoREVTVERJUikkKGxpYmRpcikgLi4vbGliL2xpYm5jdXJzZXNfZy5hCi0JQGVjaG8gaW5zdGFsbGluZyAuLi9saWIvbGlibmN1cnNlc19nLmEgYXMgJChERVNURElSKSQobGliZGlyKS9saWJuY3Vyc2VzX2cuYQotCSQoSU5TVEFMTF9EQVRBKSAuLi9saWIvbGlibmN1cnNlc19nLmEgJChERVNURElSKSQobGliZGlyKS9saWJuY3Vyc2VzX2cuYQotCSQoUkFOTElCKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYm5jdXJzZXNfZy5hCi0KLXVuaW5zdGFsbCBcCi11bmluc3RhbGwubGlicyBcCi11bmluc3RhbGwubmN1cnNlcyA6OgotCUBlY2hvIHVuaW5zdGFsbGluZyAkKERFU1RESVIpJChsaWJkaXIpL2xpYm5jdXJzZXNfZy5hCi0JLUBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYm5jdXJzZXNfZy5hCi0KLWNsZWFuIDo6Ci0JLXJtIC1mIC4uL2xpYi9saWJuY3Vyc2VzX2cuYQotCi1tb3N0bHljbGVhbjo6Ci0JLXJtIC1mICQoREVCVUdfT0JKUykKLQotIyBnZW5lcmF0ZWQgYnkgbWstMm5kLmF3awotIyAgIG1vZGVsOiAgICAgIG9ial9nCi0jICAgTU9ERUw6ICAgICAgREVCVUcKLSMgICBlY2hvOiAgICAgICB5ZXMKLSMgICBzdWJzZXQ6ICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgICBjcmVuYW1lczogICB5ZXMKLSMgICBjeHhyZW5hbWVzOiBubwotIyAgIHRyYWNlczogICAgIERFQlVHCi0jICAgc3JjZGlyOiAgICAgLgotCi0uLi9vYmpfZy9oYXJkc2Nyb2xsJG8gOgkkKHNlcmlhbCkvaGFyZHNjcm9sbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgLW8gLi4vb2JqX2cvaGFyZHNjcm9sbCRvCi0KLS4uL29ial9nL2hhc2htYXAkbyA6CSQoc2VyaWFsKS9oYXNobWFwLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL2hhc2htYXAuYyAtbyAuLi9vYmpfZy9oYXNobWFwJG8KLQotLi4vb2JqX2cvbGliX2FkZGNoJG8gOgkkKGJhc2UpL2xpYl9hZGRjaC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2FkZGNoLmMgLW8gLi4vb2JqX2cvbGliX2FkZGNoJG8KLQotLi4vb2JqX2cvbGliX2FkZHN0ciRvIDoJJChiYXNlKS9saWJfYWRkc3RyLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfYWRkc3RyLmMgLW8gLi4vb2JqX2cvbGliX2FkZHN0ciRvCi0KLS4uL29ial9nL2xpYl9iZWVwJG8gOgkkKGJhc2UpL2xpYl9iZWVwLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfYmVlcC5jIC1vIC4uL29ial9nL2xpYl9iZWVwJG8KLQotLi4vb2JqX2cvbGliX2JrZ2QkbyA6CSQoYmFzZSkvbGliX2JrZ2QuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9ia2dkLmMgLW8gLi4vb2JqX2cvbGliX2JrZ2QkbwotCi0uLi9vYmpfZy9saWJfYm94JG8gOgkkKGJhc2UpL2xpYl9ib3guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9ib3guYyAtbyAuLi9vYmpfZy9saWJfYm94JG8KLQotLi4vb2JqX2cvbGliX2NoZ2F0JG8gOgkkKGJhc2UpL2xpYl9jaGdhdC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2NoZ2F0LmMgLW8gLi4vb2JqX2cvbGliX2NoZ2F0JG8KLQotLi4vb2JqX2cvbGliX2NsZWFyJG8gOgkkKGJhc2UpL2xpYl9jbGVhci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2NsZWFyLmMgLW8gLi4vb2JqX2cvbGliX2NsZWFyJG8KLQotLi4vb2JqX2cvbGliX2NsZWFyb2skbyA6CSQoYmFzZSkvbGliX2NsZWFyb2suYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jbGVhcm9rLmMgLW8gLi4vb2JqX2cvbGliX2NsZWFyb2skbwotCi0uLi9vYmpfZy9saWJfY2xyYm90JG8gOgkkKGJhc2UpL2xpYl9jbHJib3QuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jbHJib3QuYyAtbyAuLi9vYmpfZy9saWJfY2xyYm90JG8KLQotLi4vb2JqX2cvbGliX2NscmVvbCRvIDoJJChiYXNlKS9saWJfY2xyZW9sLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfY2xyZW9sLmMgLW8gLi4vb2JqX2cvbGliX2NscmVvbCRvCi0KLS4uL29ial9nL2xpYl9jb2xvciRvIDoJJChiYXNlKS9saWJfY29sb3IuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jb2xvci5jIC1vIC4uL29ial9nL2xpYl9jb2xvciRvCi0KLS4uL29ial9nL2xpYl9jb2xvcnNldCRvIDoJJChiYXNlKS9saWJfY29sb3JzZXQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9jb2xvcnNldC5jIC1vIC4uL29ial9nL2xpYl9jb2xvcnNldCRvCi0KLS4uL29ial9nL2xpYl9kZWxjaCRvIDoJJChiYXNlKS9saWJfZGVsY2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9kZWxjaC5jIC1vIC4uL29ial9nL2xpYl9kZWxjaCRvCi0KLS4uL29ial9nL2xpYl9kZWx3aW4kbyA6CSQoYmFzZSkvbGliX2RlbHdpbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2RlbHdpbi5jIC1vIC4uL29ial9nL2xpYl9kZWx3aW4kbwotCi0uLi9vYmpfZy9saWJfZWNobyRvIDoJJChiYXNlKS9saWJfZWNoby5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2VjaG8uYyAtbyAuLi9vYmpfZy9saWJfZWNobyRvCi0KLS4uL29ial9nL2xpYl9lbmR3aW4kbyA6CSQoYmFzZSkvbGliX2VuZHdpbi5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2VuZHdpbi5jIC1vIC4uL29ial9nL2xpYl9lbmR3aW4kbwotCi0uLi9vYmpfZy9saWJfZXJhc2UkbyA6CSQoYmFzZSkvbGliX2VyYXNlLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZXJhc2UuYyAtbyAuLi9vYmpfZy9saWJfZXJhc2UkbwotCi0uLi9vYmpfZy9saWJfZmxhc2gkbyA6CSQoYmFzZSkvbGliX2ZsYXNoLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZmxhc2guYyAtbyAuLi9vYmpfZy9saWJfZmxhc2gkbwotCi0uLi9vYmpfZy9saWJfZ2VuJG8gOgkuL2xpYl9nZW4uYyBcCi0JCQkuLi9pbmNsdWRlL2N1cnNlcy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzL2xpYl9nZW4uYyAtbyAuLi9vYmpfZy9saWJfZ2VuJG8KLQotLi4vb2JqX2cvbGliX2dldGNoJG8gOgkkKGJhc2UpL2xpYl9nZXRjaC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2dldGNoLmMgLW8gLi4vb2JqX2cvbGliX2dldGNoJG8KLQotLi4vb2JqX2cvbGliX2dldHN0ciRvIDoJJChiYXNlKS9saWJfZ2V0c3RyLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZ2V0c3RyLmMgLW8gLi4vb2JqX2cvbGliX2dldHN0ciRvCi0KLS4uL29ial9nL2xpYl9obGluZSRvIDoJJChiYXNlKS9saWJfaGxpbmUuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9obGluZS5jIC1vIC4uL29ial9nL2xpYl9obGluZSRvCi0KLS4uL29ial9nL2xpYl9pbW1lZG9rJG8gOgkkKGJhc2UpL2xpYl9pbW1lZG9rLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfaW1tZWRvay5jIC1vIC4uL29ial9nL2xpYl9pbW1lZG9rJG8KLQotLi4vb2JqX2cvbGliX2luY2hzdHIkbyA6CSQoYmFzZSkvbGliX2luY2hzdHIuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbmNoc3RyLmMgLW8gLi4vb2JqX2cvbGliX2luY2hzdHIkbwotCi0uLi9vYmpfZy9saWJfaW5pdHNjciRvIDoJJChiYXNlKS9saWJfaW5pdHNjci5jIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbml0c2NyLmMgLW8gLi4vb2JqX2cvbGliX2luaXRzY3IkbwotCi0uLi9vYmpfZy9saWJfaW5zY2gkbyA6CSQoYmFzZSkvbGliX2luc2NoLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfaW5zY2guYyAtbyAuLi9vYmpfZy9saWJfaW5zY2gkbwotCi0uLi9vYmpfZy9saWJfaW5zZGVsJG8gOgkkKGJhc2UpL2xpYl9pbnNkZWwuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbnNkZWwuYyAtbyAuLi9vYmpfZy9saWJfaW5zZGVsJG8KLQotLi4vb2JqX2cvbGliX2luc25zdHIkbyA6CSQoYmFzZSkvbGliX2luc25zdHIuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9pbnNuc3RyLmMgLW8gLi4vb2JqX2cvbGliX2luc25zdHIkbwotCi0uLi9vYmpfZy9saWJfaW5zdHIkbyA6CSQoYmFzZSkvbGliX2luc3RyLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfaW5zdHIuYyAtbyAuLi9vYmpfZy9saWJfaW5zdHIkbwotCi0uLi9vYmpfZy9saWJfaXNlbmR3aW4kbyA6CSQoYmFzZSkvbGliX2lzZW5kd2luLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfaXNlbmR3aW4uYyAtbyAuLi9vYmpfZy9saWJfaXNlbmR3aW4kbwotCi0uLi9vYmpfZy9saWJfbGVhdmVvayRvIDoJJChiYXNlKS9saWJfbGVhdmVvay5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2xlYXZlb2suYyAtbyAuLi9vYmpfZy9saWJfbGVhdmVvayRvCi0KLS4uL29ial9nL2xpYl9tb3VzZSRvIDoJJChiYXNlKS9saWJfbW91c2UuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9tb3VzZS5jIC1vIC4uL29ial9nL2xpYl9tb3VzZSRvCi0KLS4uL29ial9nL2xpYl9tb3ZlJG8gOgkkKGJhc2UpL2xpYl9tb3ZlLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbW92ZS5jIC1vIC4uL29ial9nL2xpYl9tb3ZlJG8KLQotLi4vb2JqX2cvbGliX212Y3VyJG8gOgkkKHNlcmlhbCkvbGliX212Y3VyLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9saWJfbXZjdXIuYyAtbyAuLi9vYmpfZy9saWJfbXZjdXIkbwotCi0uLi9vYmpfZy9saWJfbXZ3aW4kbyA6CSQoYmFzZSkvbGliX212d2luLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbXZ3aW4uYyAtbyAuLi9vYmpfZy9saWJfbXZ3aW4kbwotCi0uLi9vYmpfZy9saWJfbmV3dGVybSRvIDoJJChiYXNlKS9saWJfbmV3dGVybS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX25ld3Rlcm0uYyAtbyAuLi9vYmpfZy9saWJfbmV3dGVybSRvCi0KLS4uL29ial9nL2xpYl9uZXd3aW4kbyA6CSQoYmFzZSkvbGliX25ld3dpbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX25ld3dpbi5jIC1vIC4uL29ial9nL2xpYl9uZXd3aW4kbwotCi0uLi9vYmpfZy9saWJfbmwkbyA6CSQoYmFzZSkvbGliX25sLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfbmwuYyAtbyAuLi9vYmpfZy9saWJfbmwkbwotCi0uLi9vYmpfZy9saWJfb3ZlcmxheSRvIDoJJChiYXNlKS9saWJfb3ZlcmxheS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX292ZXJsYXkuYyAtbyAuLi9vYmpfZy9saWJfb3ZlcmxheSRvCi0KLS4uL29ial9nL2xpYl9wYWQkbyA6CSQoYmFzZSkvbGliX3BhZC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3BhZC5jIC1vIC4uL29ial9nL2xpYl9wYWQkbwotCi0uLi9vYmpfZy9saWJfcHJpbnR3JG8gOgkkKGJhc2UpL2xpYl9wcmludHcuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9wcmludHcuYyAtbyAuLi9vYmpfZy9saWJfcHJpbnR3JG8KLQotLi4vb2JqX2cvbGliX3JlZHJhd2xuJG8gOgkkKGJhc2UpL2xpYl9yZWRyYXdsbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3JlZHJhd2xuLmMgLW8gLi4vb2JqX2cvbGliX3JlZHJhd2xuJG8KLQotLi4vb2JqX2cvbGliX3JlZnJlc2gkbyA6CSQoYmFzZSkvbGliX3JlZnJlc2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9yZWZyZXNoLmMgLW8gLi4vb2JqX2cvbGliX3JlZnJlc2gkbwotCi0uLi9vYmpfZy9saWJfcmVzdGFydCRvIDoJJChiYXNlKS9saWJfcmVzdGFydC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Jlc3RhcnQuYyAtbyAuLi9vYmpfZy9saWJfcmVzdGFydCRvCi0KLS4uL29ial9nL2xpYl9zY2FudyRvIDoJJChiYXNlKS9saWJfc2NhbncuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zY2Fudy5jIC1vIC4uL29ial9nL2xpYl9zY2FudyRvCi0KLS4uL29ial9nL2xpYl9zY3JlZW4kbyA6CSQoYmFzZSkvbGliX3NjcmVlbi5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3NjcmVlbi5jIC1vIC4uL29ial9nL2xpYl9zY3JlZW4kbwotCi0uLi9vYmpfZy9saWJfc2Nyb2xsJG8gOgkkKGJhc2UpL2xpYl9zY3JvbGwuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zY3JvbGwuYyAtbyAuLi9vYmpfZy9saWJfc2Nyb2xsJG8KLQotLi4vb2JqX2cvbGliX3Njcm9sbG9rJG8gOgkkKGJhc2UpL2xpYl9zY3JvbGxvay5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Njcm9sbG9rLmMgLW8gLi4vb2JqX2cvbGliX3Njcm9sbG9rJG8KLQotLi4vb2JqX2cvbGliX3NjcnJlZyRvIDoJJChiYXNlKS9saWJfc2NycmVnLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2NycmVnLmMgLW8gLi4vb2JqX2cvbGliX3NjcnJlZyRvCi0KLS4uL29ial9nL2xpYl9zZXRfdGVybSRvIDoJJChiYXNlKS9saWJfc2V0X3Rlcm0uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zZXRfdGVybS5jIC1vIC4uL29ial9nL2xpYl9zZXRfdGVybSRvCi0KLS4uL29ial9nL2xpYl9zbGskbyA6CSQoYmFzZSkvbGliX3Nsay5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsay5jIC1vIC4uL29ial9nL2xpYl9zbGskbwotCi0uLi9vYmpfZy9saWJfc2xrYXRyX3NldCRvIDoJJChiYXNlKS9saWJfc2xrYXRyX3NldC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa2F0cl9zZXQuYyAtbyAuLi9vYmpfZy9saWJfc2xrYXRyX3NldCRvCi0KLS4uL29ial9nL2xpYl9zbGthdHJvZiRvIDoJJChiYXNlKS9saWJfc2xrYXRyb2YuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGthdHJvZi5jIC1vIC4uL29ial9nL2xpYl9zbGthdHJvZiRvCi0KLS4uL29ial9nL2xpYl9zbGthdHJvbiRvIDoJJChiYXNlKS9saWJfc2xrYXRyb24uYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGthdHJvbi5jIC1vIC4uL29ial9nL2xpYl9zbGthdHJvbiRvCi0KLS4uL29ial9nL2xpYl9zbGthdHJzZXQkbyA6CSQoYmFzZSkvbGliX3Nsa2F0cnNldC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa2F0cnNldC5jIC1vIC4uL29ial9nL2xpYl9zbGthdHJzZXQkbwotCi0uLi9vYmpfZy9saWJfc2xrYXR0ciRvIDoJJChiYXNlKS9saWJfc2xrYXR0ci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3Nsa2F0dHIuYyAtbyAuLi9vYmpfZy9saWJfc2xrYXR0ciRvCi0KLS4uL29ial9nL2xpYl9zbGtjbGVhciRvIDoJJChiYXNlKS9saWJfc2xrY2xlYXIuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGtjbGVhci5jIC1vIC4uL29ial9nL2xpYl9zbGtjbGVhciRvCi0KLS4uL29ial9nL2xpYl9zbGtjb2xvciRvIDoJJChiYXNlKS9saWJfc2xrY29sb3IuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGtjb2xvci5jIC1vIC4uL29ial9nL2xpYl9zbGtjb2xvciRvCi0KLS4uL29ial9nL2xpYl9zbGtpbml0JG8gOgkkKGJhc2UpL2xpYl9zbGtpbml0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xraW5pdC5jIC1vIC4uL29ial9nL2xpYl9zbGtpbml0JG8KLQotLi4vb2JqX2cvbGliX3Nsa2xhYiRvIDoJJChiYXNlKS9saWJfc2xrbGFiLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrbGFiLmMgLW8gLi4vb2JqX2cvbGliX3Nsa2xhYiRvCi0KLS4uL29ial9nL2xpYl9zbGtyZWZyJG8gOgkkKGJhc2UpL2xpYl9zbGtyZWZyLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrcmVmci5jIC1vIC4uL29ial9nL2xpYl9zbGtyZWZyJG8KLQotLi4vb2JqX2cvbGliX3Nsa3NldCRvIDoJJChiYXNlKS9saWJfc2xrc2V0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfc2xrc2V0LmMgLW8gLi4vb2JqX2cvbGliX3Nsa3NldCRvCi0KLS4uL29ial9nL2xpYl9zbGt0b3VjaCRvIDoJJChiYXNlKS9saWJfc2xrdG91Y2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl9zbGt0b3VjaC5jIC1vIC4uL29ial9nL2xpYl9zbGt0b3VjaCRvCi0KLS4uL29ial9nL2xpYl90b3VjaCRvIDoJJChiYXNlKS9saWJfdG91Y2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl90b3VjaC5jIC1vIC4uL29ial9nL2xpYl90b3VjaCRvCi0KLS4uL29ial9nL2xpYl90cmFjZWRtcCRvIDoJJCh0cmFjZSkvbGliX3RyYWNlZG1wLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0cmFjZSkvbGliX3RyYWNlZG1wLmMgLW8gLi4vb2JqX2cvbGliX3RyYWNlZG1wJG8KLQotLi4vb2JqX2cvbGliX3RyYWNlbXNlJG8gOgkkKHRyYWNlKS9saWJfdHJhY2Vtc2UuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS9saWJfdHJhY2Vtc2UuYyAtbyAuLi9vYmpfZy9saWJfdHJhY2Vtc2UkbwotCi0uLi9vYmpfZy9saWJfdHN0cCRvIDoJJChzZXJpYWwpL2xpYl90c3RwLmMgXAotCQkJJChzcmNkaXIpL1NpZ0FjdGlvbi5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoc2VyaWFsKS9saWJfdHN0cC5jIC1vIC4uL29ial9nL2xpYl90c3RwJG8KLQotLi4vb2JqX2cvbGliX3VuZ2V0Y2gkbyA6CSQoYmFzZSkvbGliX3VuZ2V0Y2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl91bmdldGNoLmMgLW8gLi4vb2JqX2cvbGliX3VuZ2V0Y2gkbwotCi0uLi9vYmpfZy9saWJfdmlkYXR0ciRvIDoJJChzZXJpYWwpL2xpYl92aWRhdHRyLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL2xpYl92aWRhdHRyLmMgLW8gLi4vb2JqX2cvbGliX3ZpZGF0dHIkbwotCi0uLi9vYmpfZy9saWJfdmxpbmUkbyA6CSQoYmFzZSkvbGliX3ZsaW5lLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfdmxpbmUuYyAtbyAuLi9vYmpfZy9saWJfdmxpbmUkbwotCi0uLi9vYmpfZy9saWJfd2F0dHJvZmYkbyA6CSQoYmFzZSkvbGliX3dhdHRyb2ZmLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfd2F0dHJvZmYuYyAtbyAuLi9vYmpfZy9saWJfd2F0dHJvZmYkbwotCi0uLi9vYmpfZy9saWJfd2F0dHJvbiRvIDoJJChiYXNlKS9saWJfd2F0dHJvbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3dhdHRyb24uYyAtbyAuLi9vYmpfZy9saWJfd2F0dHJvbiRvCi0KLS4uL29ial9nL2xpYl93aW5jaCRvIDoJJChiYXNlKS9saWJfd2luY2guYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2xpYl93aW5jaC5jIC1vIC4uL29ial9nL2xpYl93aW5jaCRvCi0KLS4uL29ial9nL2xpYl93aW5kb3ckbyA6CSQoYmFzZSkvbGliX3dpbmRvdy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX3dpbmRvdy5jIC1vIC4uL29ial9nL2xpYl93aW5kb3ckbwotCi0uLi9vYmpfZy9saW5rX3Rlc3QkbyA6CS4vbGlua190ZXN0LmMgXAotCQkJLi4vaW5jbHVkZS9jdXJzZXMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy9saW5rX3Rlc3QuYyAtbyAuLi9vYmpfZy9saW5rX3Rlc3QkbwotCi0uLi9vYmpfZy9uY19wYW5lbCRvIDoJJChiYXNlKS9uY19wYW5lbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbmNfcGFuZWwuYyAtbyAuLi9vYmpfZy9uY19wYW5lbCRvCi0KLS4uL29ial9nL3NhZmVfc3ByaW50ZiRvIDoJJChiYXNlKS9zYWZlX3NwcmludGYuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL3NhZmVfc3ByaW50Zi5jIC1vIC4uL29ial9nL3NhZmVfc3ByaW50ZiRvCi0KLS4uL29ial9nL3R0eV91cGRhdGUkbyA6CSQoc2VyaWFsKS90dHlfdXBkYXRlLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL3R0eV91cGRhdGUuYyAtbyAuLi9vYmpfZy90dHlfdXBkYXRlJG8KLQotLi4vb2JqX2cvdmFyYXJncyRvIDoJJCh0cmFjZSkvdmFyYXJncy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodHJhY2UpL3ZhcmFyZ3MuYyAtbyAuLi9vYmpfZy92YXJhcmdzJG8KLQotLi4vb2JqX2cvbWVtbW92ZSRvIDoJJChiYXNlKS9tZW1tb3ZlLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9tZW1tb3ZlLmMgLW8gLi4vb2JqX2cvbWVtbW92ZSRvCi0KLS4uL29ial9nL3Zzc2NhbmYkbyA6CSQoYmFzZSkvdnNzY2FuZi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvdnNzY2FuZi5jIC1vIC4uL29ial9nL3Zzc2NhbmYkbwotCi0uLi9vYmpfZy9saWJfZnJlZWFsbCRvIDoJJChiYXNlKS9saWJfZnJlZWFsbC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGliX2ZyZWVhbGwuYyAtbyAuLi9vYmpfZy9saWJfZnJlZWFsbCRvCi0KLS4uL29ial9nL2V4cGFuZGVkJG8gOgkuL2V4cGFuZGVkLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvZXhwYW5kZWQuYyAtbyAuLi9vYmpfZy9leHBhbmRlZCRvCi0KLS4uL29ial9nL2xlZ2FjeV9jb2RpbmckbyA6CSQoYmFzZSkvbGVnYWN5X2NvZGluZy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvbGVnYWN5X2NvZGluZy5jIC1vIC4uL29ial9nL2xlZ2FjeV9jb2RpbmckbwotCi0uLi9vYmpfZy9saWJfZGZ0X2ZnYmckbyA6CSQoYmFzZSkvbGliX2RmdF9mZ2JnLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9saWJfZGZ0X2ZnYmcuYyAtbyAuLi9vYmpfZy9saWJfZGZ0X2ZnYmckbwotCi0uLi9vYmpfZy9saWJfcHJpbnQkbyA6CSQodGluZm8pL2xpYl9wcmludC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9wcmludC5jIC1vIC4uL29ial9nL2xpYl9wcmludCRvCi0KLS4uL29ial9nL3Jlc2l6ZXRlcm0kbyA6CSQoYmFzZSkvcmVzaXpldGVybS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvcmVzaXpldGVybS5jIC1vIC4uL29ial9nL3Jlc2l6ZXRlcm0kbwotCi0uLi9vYmpfZy90cmFjZV94bmFtZXMkbyA6CSQodHJhY2UpL3RyYWNlX3huYW1lcy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0cmFjZSkvdHJhY2VfeG5hbWVzLmMgLW8gLi4vb2JqX2cvdHJhY2VfeG5hbWVzJG8KLQotLi4vb2JqX2cvdXNlX3NjcmVlbiRvIDoJJCh0aW5mbykvdXNlX3NjcmVlbi5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3VzZV9zY3JlZW4uYyAtbyAuLi9vYmpfZy91c2Vfc2NyZWVuJG8KLQotLi4vb2JqX2cvdXNlX3dpbmRvdyRvIDoJJChiYXNlKS91c2Vfd2luZG93LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS91c2Vfd2luZG93LmMgLW8gLi4vb2JqX2cvdXNlX3dpbmRvdyRvCi0KLS4uL29ial9nL3dyZXNpemUkbyA6CSQoYmFzZSkvd3Jlc2l6ZS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkvd3Jlc2l6ZS5jIC1vIC4uL29ial9nL3dyZXNpemUkbwotCi0uLi9vYmpfZy9hY2Nlc3MkbyA6CSQodGluZm8pL2FjY2Vzcy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2FjY2Vzcy5jIC1vIC4uL29ial9nL2FjY2VzcyRvCi0KLS4uL29ial9nL2FkZF90cmllcyRvIDoJJCh0aW5mbykvYWRkX3RyaWVzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvYWRkX3RyaWVzLmMgLW8gLi4vb2JqX2cvYWRkX3RyaWVzJG8KLQotLi4vb2JqX2cvYWxsb2NfdHR5cGUkbyA6CSQodGluZm8pL2FsbG9jX3R0eXBlLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvYWxsb2NfdHR5cGUuYyAtbyAuLi9vYmpfZy9hbGxvY190dHlwZSRvCi0KLS4uL29ial9nL2NvZGVzJG8gOgkuL2NvZGVzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvY29kZXMuYyAtbyAuLi9vYmpfZy9jb2RlcyRvCi0KLS4uL29ial9nL2NvbXBfZXJyb3IkbyA6CSQodGluZm8pL2NvbXBfZXJyb3IuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY29tcF9lcnJvci5jIC1vIC4uL29ial9nL2NvbXBfZXJyb3IkbwotCi0uLi9vYmpfZy9kYl9pdGVyYXRvciRvIDoJJCh0aW5mbykvZGJfaXRlcmF0b3IuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvZGJfaXRlcmF0b3IuYyAtbyAuLi9vYmpfZy9kYl9pdGVyYXRvciRvCi0KLS4uL29ial9nL2RvYWxsb2MkbyA6CSQodGluZm8pL2RvYWxsb2MuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9kb2FsbG9jLmMgLW8gLi4vb2JqX2cvZG9hbGxvYyRvCi0KLS4uL29ial9nL2VudHJpZXMkbyA6CSQodGluZm8pL2VudHJpZXMuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvZW50cmllcy5jIC1vIC4uL29ial9nL2VudHJpZXMkbwotCi0uLi9vYmpfZy9mYWxsYmFjayRvIDoJLi9mYWxsYmFjay5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy9mYWxsYmFjay5jIC1vIC4uL29ial9nL2ZhbGxiYWNrJG8KLQotLi4vb2JqX2cvZnJlZV90dHlwZSRvIDoJJCh0aW5mbykvZnJlZV90dHlwZS5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2ZyZWVfdHR5cGUuYyAtbyAuLi9vYmpfZy9mcmVlX3R0eXBlJG8KLQotLi4vb2JqX2cvZ2V0ZW52X251bSRvIDoJJCh0aW5mbykvZ2V0ZW52X251bS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2dldGVudl9udW0uYyAtbyAuLi9vYmpfZy9nZXRlbnZfbnVtJG8KLQotLi4vb2JqX2cvaG9tZV90ZXJtaW5mbyRvIDoJJCh0aW5mbykvaG9tZV90ZXJtaW5mby5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2hvbWVfdGVybWluZm8uYyAtbyAuLi9vYmpfZy9ob21lX3Rlcm1pbmZvJG8KLQotLi4vb2JqX2cvaW5pdF9rZXl0cnkkbyA6CSQodGluZm8pL2luaXRfa2V5dHJ5LmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oIFwKLQkJCWluaXRfa2V5dHJ5LmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvaW5pdF9rZXl0cnkuYyAtbyAuLi9vYmpfZy9pbml0X2tleXRyeSRvCi0KLS4uL29ial9nL2xpYl9hY3MkbyA6CSQodGluZm8pL2xpYl9hY3MuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfYWNzLmMgLW8gLi4vb2JqX2cvbGliX2FjcyRvCi0KLS4uL29ial9nL2xpYl9iYXVkcmF0ZSRvIDoJJCh0aW5mbykvbGliX2JhdWRyYXRlLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX2JhdWRyYXRlLmMgLW8gLi4vb2JqX2cvbGliX2JhdWRyYXRlJG8KLQotLi4vb2JqX2cvbGliX2N1cl90ZXJtJG8gOgkkKHRpbmZvKS9saWJfY3VyX3Rlcm0uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9jdXJfdGVybS5jIC1vIC4uL29ial9nL2xpYl9jdXJfdGVybSRvCi0KLS4uL29ial9nL2xpYl9kYXRhJG8gOgkkKHRpbmZvKS9saWJfZGF0YS5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9kYXRhLmMgLW8gLi4vb2JqX2cvbGliX2RhdGEkbwotCi0uLi9vYmpfZy9saWJfaGFzX2NhcCRvIDoJJCh0aW5mbykvbGliX2hhc19jYXAuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfaGFzX2NhcC5jIC1vIC4uL29ial9nL2xpYl9oYXNfY2FwJG8KLQotLi4vb2JqX2cvbGliX2tlcm5lbCRvIDoJJCh0aW5mbykvbGliX2tlcm5lbC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9rZXJuZWwuYyAtbyAuLi9vYmpfZy9saWJfa2VybmVsJG8KLQotLi4vb2JqX2cvbGliX2tleW5hbWUkbyA6CS4vbGliX2tleW5hbWUuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy9saWJfa2V5bmFtZS5jIC1vIC4uL29ial9nL2xpYl9rZXluYW1lJG8KLQotLi4vb2JqX2cvbGliX2xvbmduYW1lJG8gOgkkKHRpbmZvKS9saWJfbG9uZ25hbWUuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9saWJfbG9uZ25hbWUuYyAtbyAuLi9vYmpfZy9saWJfbG9uZ25hbWUkbwotCi0uLi9vYmpfZy9saWJfbmFwbXMkbyA6CSQodGluZm8pL2xpYl9uYXBtcy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9uYXBtcy5jIC1vIC4uL29ial9nL2xpYl9uYXBtcyRvCi0KLS4uL29ial9nL2xpYl9vcHRpb25zJG8gOgkkKHRpbmZvKS9saWJfb3B0aW9ucy5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl9vcHRpb25zLmMgLW8gLi4vb2JqX2cvbGliX29wdGlvbnMkbwotCi0uLi9vYmpfZy9saWJfcmF3JG8gOgkkKHRpbmZvKS9saWJfcmF3LmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3Jhdy5jIC1vIC4uL29ial9nL2xpYl9yYXckbwotCi0uLi9vYmpfZy9saWJfc2V0dXAkbyA6CSQodGluZm8pL2xpYl9zZXR1cC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3NldHVwLmMgLW8gLi4vb2JqX2cvbGliX3NldHVwJG8KLQotLi4vb2JqX2cvbGliX3Rlcm1jYXAkbyA6CSQodGluZm8pL2xpYl90ZXJtY2FwLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmggXAotCQkJJChJTkNESVIpL2NhcGRlZmF1bHRzLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3Rlcm1jYXAuYyAtbyAuLi9vYmpfZy9saWJfdGVybWNhcCRvCi0KLS4uL29ial9nL2xpYl90ZXJtbmFtZSRvIDoJJCh0aW5mbykvbGliX3Rlcm1uYW1lLmMgXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl90ZXJtbmFtZS5jIC1vIC4uL29ial9nL2xpYl90ZXJtbmFtZSRvCi0KLS4uL29ial9nL2xpYl90Z290byRvIDoJJCh0aW5mbykvbGliX3Rnb3RvLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL2xpYl90Z290by5jIC1vIC4uL29ial9nL2xpYl90Z290byRvCi0KLS4uL29ial9nL2xpYl90aSRvIDoJJCh0aW5mbykvbGliX3RpLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3RpLmMgLW8gLi4vb2JqX2cvbGliX3RpJG8KLQotLi4vb2JqX2cvbGliX3RwYXJtJG8gOgkkKHRpbmZvKS9saWJfdHBhcm0uYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3RwYXJtLmMgLW8gLi4vb2JqX2cvbGliX3RwYXJtJG8KLQotLi4vb2JqX2cvbGliX3RwdXRzJG8gOgkkKHRpbmZvKS9saWJfdHB1dHMuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3RwdXRzLmMgLW8gLi4vb2JqX2cvbGliX3RwdXRzJG8KLQotLi4vb2JqX2cvbGliX3RyYWNlJG8gOgkkKHRyYWNlKS9saWJfdHJhY2UuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0cmFjZSkvbGliX3RyYWNlLmMgLW8gLi4vb2JqX2cvbGliX3RyYWNlJG8KLQotLi4vb2JqX2cvbGliX3RyYWNlYXRyJG8gOgkkKHRyYWNlKS9saWJfdHJhY2VhdHIuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS9saWJfdHJhY2VhdHIuYyAtbyAuLi9vYmpfZy9saWJfdHJhY2VhdHIkbwotCi0uLi9vYmpfZy9saWJfdHJhY2ViaXRzJG8gOgkkKHRyYWNlKS9saWJfdHJhY2ViaXRzLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0cmFjZSkvbGliX3RyYWNlYml0cy5jIC1vIC4uL29ial9nL2xpYl90cmFjZWJpdHMkbwotCi0uLi9vYmpfZy9saWJfdHJhY2VjaHIkbyA6CSQodHJhY2UpL2xpYl90cmFjZWNoci5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodHJhY2UpL2xpYl90cmFjZWNoci5jIC1vIC4uL29ial9nL2xpYl90cmFjZWNociRvCi0KLS4uL29ial9nL2xpYl90dHlmbGFncyRvIDoJJCh0aW5mbykvbGliX3R0eWZsYWdzLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbGliX3R0eWZsYWdzLmMgLW8gLi4vb2JqX2cvbGliX3R0eWZsYWdzJG8KLQotLi4vb2JqX2cvbGliX3R3YWl0JG8gOgkkKHNlcmlhbCkvbGliX3R3YWl0LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChzZXJpYWwpL2xpYl90d2FpdC5jIC1vIC4uL29ial9nL2xpYl90d2FpdCRvCi0KLS4uL29ial9nL25hbWVfbWF0Y2gkbyA6CSQodGluZm8pL25hbWVfbWF0Y2guYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvbmFtZV9tYXRjaC5jIC1vIC4uL29ial9nL25hbWVfbWF0Y2gkbwotCi0uLi9vYmpfZy9uYW1lcyRvIDoJLi9uYW1lcy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzL25hbWVzLmMgLW8gLi4vb2JqX2cvbmFtZXMkbwotCi0uLi9vYmpfZy9yZWFkX2VudHJ5JG8gOgkkKHRpbmZvKS9yZWFkX2VudHJ5LmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvcmVhZF9lbnRyeS5jIC1vIC4uL29ial9nL3JlYWRfZW50cnkkbwotCi0uLi9vYmpfZy9yZWFkX3Rlcm1jYXAkbyA6CSQodGluZm8pL3JlYWRfdGVybWNhcC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3JlYWRfdGVybWNhcC5jIC1vIC4uL29ial9nL3JlYWRfdGVybWNhcCRvCi0KLS4uL29ial9nL3NldGJ1ZiRvIDoJJCh0aW5mbykvc2V0YnVmLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvc2V0YnVmLmMgLW8gLi4vb2JqX2cvc2V0YnVmJG8KLQotLi4vb2JqX2cvc3RyaW5ncyRvIDoJJCh0aW5mbykvc3RyaW5ncy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3N0cmluZ3MuYyAtbyAuLi9vYmpfZy9zdHJpbmdzJG8KLQotLi4vb2JqX2cvdHJhY2VfYnVmJG8gOgkkKHRyYWNlKS90cmFjZV9idWYuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS90cmFjZV9idWYuYyAtbyAuLi9vYmpfZy90cmFjZV9idWYkbwotCi0uLi9vYmpfZy90cmFjZV90cmllcyRvIDoJJCh0cmFjZSkvdHJhY2VfdHJpZXMuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS90cmFjZV90cmllcy5jIC1vIC4uL29ial9nL3RyYWNlX3RyaWVzJG8KLQotLi4vb2JqX2cvdHJpZXMkbyA6CSQoYmFzZSkvdHJpZXMuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL3RyaWVzLmMgLW8gLi4vb2JqX2cvdHJpZXMkbwotCi0uLi9vYmpfZy90cmltX3NncjAkbyA6CSQodGluZm8pL3RyaW1fc2dyMC5jIFwKLQkJCS4uL2luY2x1ZGUvdGVybS5oIFwKLQkJCSQoSU5DRElSKS90ZXJtX2VudHJ5LmggXAotCQkJJChJTkNESVIpL3RpYy5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3RyaW1fc2dyMC5jIC1vIC4uL29ial9nL3RyaW1fc2dyMCRvCi0KLS4uL29ial9nL3VuY3RybCRvIDoJLi91bmN0cmwuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy91bmN0cmwuYyAtbyAuLi9vYmpfZy91bmN0cmwkbwotCi0uLi9vYmpfZy92aXNidWYkbyA6CSQodHJhY2UpL3Zpc2J1Zi5jIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRyYWNlKS92aXNidWYuYyAtbyAuLi9vYmpfZy92aXNidWYkbwotCi0uLi9vYmpfZy9hbGxvY19lbnRyeSRvIDoJJCh0aW5mbykvYWxsb2NfZW50cnkuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9hbGxvY19lbnRyeS5jIC1vIC4uL29ial9nL2FsbG9jX2VudHJ5JG8KLQotLi4vb2JqX2cvY2FwdG9pbmZvJG8gOgkkKHRpbmZvKS9jYXB0b2luZm8uYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY2FwdG9pbmZvLmMgLW8gLi4vb2JqX2cvY2FwdG9pbmZvJG8KLQotLi4vb2JqX2cvY29tcF9jYXB0YWIkbyA6CS4vY29tcF9jYXB0YWIuYyBcCi0JCQkkKElOQ0RJUikvdGljLmggXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJLi4vaW5jbHVkZS9oYXNoc2l6ZS5oCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzL2NvbXBfY2FwdGFiLmMgLW8gLi4vb2JqX2cvY29tcF9jYXB0YWIkbwotCi0uLi9vYmpfZy9jb21wX2V4cGFuZCRvIDoJJCh0aW5mbykvY29tcF9leHBhbmQuYyBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY29tcF9leHBhbmQuYyAtbyAuLi9vYmpfZy9jb21wX2V4cGFuZCRvCi0KLS4uL29ial9nL2NvbXBfaGFzaCRvIDoJJCh0aW5mbykvY29tcF9oYXNoLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3RpYy5oIFwKLQkJCS4uL2luY2x1ZGUvaGFzaHNpemUuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9jb21wX2hhc2guYyAtbyAuLi9vYmpfZy9jb21wX2hhc2gkbwotCi0uLi9vYmpfZy9jb21wX3BhcnNlJG8gOgkkKHRpbmZvKS9jb21wX3BhcnNlLmMgXAotCQkJLi4vaW5jbHVkZS90ZXJtLmggXAotCQkJJChJTkNESVIpL3Rlcm1fZW50cnkuaCBcCi0JCQkkKElOQ0RJUikvdGljLmgKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvY29tcF9wYXJzZS5jIC1vIC4uL29ial9nL2NvbXBfcGFyc2UkbwotCi0uLi9vYmpfZy9jb21wX3NjYW4kbyA6CSQodGluZm8pL2NvbXBfc2Nhbi5jIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS9jb21wX3NjYW4uYyAtbyAuLi9vYmpfZy9jb21wX3NjYW4kbwotCi0uLi9vYmpfZy9wYXJzZV9lbnRyeSRvIDoJJCh0aW5mbykvcGFyc2VfZW50cnkuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaCBcCi0JCQkuLi9pbmNsdWRlL3BhcmFtZXRyaXplZC5oIFwKLQkJCSQoSU5DRElSKS9jYXBkZWZhdWx0cy5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQodGluZm8pL3BhcnNlX2VudHJ5LmMgLW8gLi4vb2JqX2cvcGFyc2VfZW50cnkkbwotCi0uLi9vYmpfZy93cml0ZV9lbnRyeSRvIDoJJCh0aW5mbykvd3JpdGVfZW50cnkuYyBcCi0JCQkuLi9pbmNsdWRlL3Rlcm0uaCBcCi0JCQkkKElOQ0RJUikvdGVybV9lbnRyeS5oIFwKLQkJCSQoSU5DRElSKS90aWMuaAotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKHRpbmZvKS93cml0ZV9lbnRyeS5jIC1vIC4uL29ial9nL3dyaXRlX2VudHJ5JG8KLQotLi4vb2JqX2cvZGVmaW5lX2tleSRvIDoJJChiYXNlKS9kZWZpbmVfa2V5LmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9kZWZpbmVfa2V5LmMgLW8gLi4vb2JqX2cvZGVmaW5lX2tleSRvCi0KLS4uL29ial9nL2hhc2hlZF9kYiRvIDoJJCh0aW5mbykvaGFzaGVkX2RiLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJCh0aW5mbykvaGFzaGVkX2RiLmMgLW8gLi4vb2JqX2cvaGFzaGVkX2RiJG8KLQotLi4vb2JqX2cva2V5X2RlZmluZWQkbyA6CSQoYmFzZSkva2V5X2RlZmluZWQuYwotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vbmN1cnNlcy8kKGJhc2UpL2tleV9kZWZpbmVkLmMgLW8gLi4vb2JqX2cva2V5X2RlZmluZWQkbwotCi0uLi9vYmpfZy9rZXlib3VuZCRvIDoJJChiYXNlKS9rZXlib3VuZC5jCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9uY3Vyc2VzLyQoYmFzZSkva2V5Ym91bmQuYyAtbyAuLi9vYmpfZy9rZXlib3VuZCRvCi0KLS4uL29ial9nL2tleW9rJG8gOgkkKGJhc2UpL2tleW9rLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS9rZXlvay5jIC1vIC4uL29ial9nL2tleW9rJG8KLQotLi4vb2JqX2cvdmVyc2lvbiRvIDoJJChiYXNlKS92ZXJzaW9uLmMKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL25jdXJzZXMvJChiYXNlKS92ZXJzaW9uLmMgLW8gLi4vb2JqX2cvdmVyc2lvbiRvCi0KLWRlcGVuZCA6ICR7QVVUT19TUkN9Ci0JbWFrZWRlcGVuZCAtLSAke0NQUEZMQUdTfSAtLSAke0NfU1JDfQotCi0jIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCmRpZmYgLS1naXQgYS9uY3Vyc2VzL01ha2VmaWxlLmluIGIvbmN1cnNlcy9NYWtlZmlsZS5pbgppbmRleCA1NThmNzlmLi5lNDJjNWUzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL01ha2VmaWxlLmluCisrKyBiL25jdXJzZXMvTWFrZWZpbGUuaW4KQEAgLTEsNiArMSw2IEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjExMyAyMDA4LzEwLzE4IDE0OjExOjU0IHRvbSBFeHAgJAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS4xNDcgMjAxNS8wOC8wNSAyMzoxNTo0MSB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTQ1LDcgKzQ1LDggQEAKICMgdHVybiBvZmYgX2FsbF8gc3VmZml4IHJ1bGVzOyB3ZSdsbCBnZW5lcmF0ZSBvdXIgb3duCiAuU1VGRklYRVM6CiAKLVNIRUxMCQk9IC9iaW4vc2gKK1NIRUxMCQk9IEBTSEVMTEAKK1ZQQVRICQk9IEBzcmNkaXJACiBUSElTCQk9IE1ha2VmaWxlCiAKIENGX01GTEFHUyAJPSBAY2ZfY3ZfbWFrZWZsYWdzQApAQCAtNjMsMTQgKzY0LDIyIEBACiBiaW5kaXIJCT0gQGJpbmRpckAKIGxpYmRpcgkJPSBAbGliZGlyQAogaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQAorZGF0YXJvb3RkaXIJPSBAZGF0YXJvb3RkaXJACiBkYXRhZGlyCQk9IEBkYXRhZGlyQAoraW5jbHVkZXN1YmRpcgk9IEBpbmNsdWRlc3ViZGlyQAorCitJTkNMVURFRElSCT0gJChERVNURElSKSQoaW5jbHVkZWRpcikkKGluY2x1ZGVzdWJkaXIpCisKK1BBQ0tBR0UJCT0gQFBBQ0tBR0VACiAKIExJQlRPT0wJCT0gQExJQlRPT0xACitMSUJUT09MX09QVFMJPSBATElCVE9PTF9PUFRTQCBARVhQT1JUX1NZTVNACiBMSUJUT09MX0NMRUFOCT0gQExJQl9DTEVBTkAKIExJQlRPT0xfQ09NUElMRQk9IEBMSUJfQ09NUElMRUAKIExJQlRPT0xfTElOSwk9IEBMSUJfTElOS0AKIExJQlRPT0xfSU5TVEFMTAk9IEBMSUJfSU5TVEFMTEAKIExJQlRPT0xfVU5JTlNUQUxMID0gQExJQl9VTklOU1RBTExACitMVF9VTkRFRgk9IEBMVF9VTkRFRkAKIAogSU5TVEFMTAkJPSBASU5TVEFMTEAKIElOU1RBTExfTElCCT0gQElOU1RBTExAIEBJTlNUQUxMX0xJQkAKQEAgLTc4LDIzICs4NywyNyBAQAogSU5TVEFMTF9EQVRBCT0gQElOU1RBTExfREFUQUAKIAogQVIJCT0gQEFSQAotQVJfT1BUUwkJPSBAQVJfT1BUU0AKK0FSRkxBR1MJCT0gQEFSRkxBR1NACiBBV0sJCT0gQEFXS0AKIExECQk9IEBMREAKIExOX1MJCT0gQExOX1NACitOTQkJPSBATk1ACisKK0NUQUdTCQk9IEBDVEFHU0AKK0VUQUdTCQk9IEBFVEFHU0AKIAogQ0MJCT0gQENDQAogQ1BQCQk9IEBDUFBACiBDRkxBR1MJCT0gQENGTEFHU0AKIAogSU5DRElSCQk9ICQoc3JjZGlyKS8uLi9pbmNsdWRlCi1DUFBGTEFHUwk9IC1ESEFWRV9DT05GSUdfSCAtSS4uL25jdXJzZXMgLUkkKHNyY2RpcikgQENQUEZMQUdTQAorQ1BQRkxBR1MJPSAtREhBVkVfQ09ORklHX0ggQENQUEZMQUdTQAogCiBDQ0ZMQUdTCQk9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQogCi1CVUlMRF9DUFBGTEFHUwk9IC1JLi4vaW5jbHVkZSBAQlVJTERfQ1BQRkxBR1NACitCVUlMRF9DUFBGTEFHUwk9IC1ESEFWRV9DT05GSUdfSCAtRFVTRV9CVUlMRF9DQyAtSS4uL25jdXJzZXMgLUkkKHNyY2RpcikgLUkuLi9pbmNsdWRlIC1JJChJTkNESVIpIEBCVUlMRF9DUFBGTEFHU0AgCiBCVUlMRF9DQwk9IEBCVUlMRF9DQ0AKLUJVSUxEX0NDRkxBR1MJPSAtREhBVkVfQ09ORklHX0ggLUkuLi9uY3Vyc2VzIC1JJChzcmNkaXIpIC1JJChJTkNESVIpICQoQlVJTERfQ1BQRkxBR1MpIEBCVUlMRF9DRkxBR1NACitCVUlMRF9DQ0ZMQUdTCT0gQEJVSUxEX0NGTEFHU0AKIEJVSUxEX0xERkxBR1MJPSBAQlVJTERfTERGTEFHU0AKIEJVSUxEX0xJQlMJPSBAQlVJTERfTElCU0AKIApAQCAtMTAyLDcgKzExNSw3IEBACiAjIGlzIGNvbXBpbGVkIGludG8gdGhlIGJ1aWxkLCBvciBhcmUgdGVzdC1wcm9ncmFtcyB0aGF0IGFyZSBub3QgaW5zdGFsbGVkLgogCiBCVUlMRF9FWEVFWFQJPSBAQlVJTERfRVhFRVhUQAoteAkJPSBAUFJPR19FWFRACit4CQk9IEBFWEVFWFRACiAKIENGTEFHU19MSUJUT09MCT0gJChDQ0ZMQUdTKQogQ0ZMQUdTX05PUk1BTAk9ICQoQ0NGTEFHUykKQEAgLTEyMCw2ICsxMzMsOSBAQAogVElORk9fTElTVAk9ICQoU0hMSUJfRElSUykgQFRJTkZPX0xJU1RACiBUSUNTX0xJU1QJPSAkKFNITElCX0RJUlMpIEBUSUNTX0xJU1RACiAKK1JQQVRIX0xJU1QJPSBAUlBBVEhfTElTVEAKK1JFU1VMVElOR19TWU1TCT0gQFJFU1VMVElOR19TWU1TQAorVkVSU0lPTkVEX1NZTVMJPSBAVkVSU0lPTkVEX1NZTVNACiBNS19TSEFSRURfTElCCT0gQE1LX1NIQVJFRF9MSUJACiAKIE5DVVJTRVNfTUFKT1IJPSBATkNVUlNFU19NQUpPUkAKQEAgLTEyOSw3ICsxNDUsNyBAQAogCiBSQU5MSUIJCT0gQExJQl9QUkVQQAogCi1MSUJSQVJJRVMJPSBATElCU19UT19NQUtFQAorTElCUkFSSUVTCT0gQExpYnNfVG9fTWFrZUAKIAogTElOVAkJPSBATElOVEAKIExJTlRfT1BUUwk9IEBMSU5UX09QVFNACkBAIC0xNDAsNiArMTU2LDEwIEBACiBVU0VfQklHX1NUUklOR1MJPSBAVVNFX0JJR19TVFJJTkdTQAogVEVSTUlORk9fQ0FQUwk9ICQodG9wX3NyY2RpcikvaW5jbHVkZS9AVEVSTUlORk9fQ0FQU0AKIAorVEVSTUlORk8JPSBAVEVSTUlORk9ACitURVJNSU5GT19TUkMJPSBAVEVSTUlORk9fU1JDQAorVElDX1BBVEgJPSBAVElDX1BBVEhACisKIEFVVE9fU1JDID0gXAogCS4vY29kZXMuYyBcCiAJLi9jb21wX2NhcHRhYi5jIFwKQEAgLTE1Myw2ICsxNzMsMTggQEAKIAlpbml0X2tleXRyeS5oIFwKIAlrZXlzLmxpc3QKIAorSEVBREVSX0RFUFMJPSBcCisJJChzcmNkaXIpL2N1cnNlcy5wcml2LmggXAorCS4uL2luY2x1ZGUvbmN1cnNlc19kbGwuaCBcCisJLi4vaW5jbHVkZS9uY3Vyc2VzX2NmZy5oIFwKKwkuLi9pbmNsdWRlL2N1cnNlcy5oIFwKKwkkKElOQ0RJUikvbmNfcGFuZWwuaCBcCisJLi4vaW5jbHVkZS90ZXJtLmggXAorCSQoSU5DRElSKS90ZXJtX2VudHJ5LmggXAorCSQoSU5DRElSKS9uY190cGFybS5oIFwKKwkkKElOQ0RJUikvbmNfYWxsb2MuaCBcCisJJChJTkNESVIpL25jX21pbmd3LmgKKwogVEVTVF9ERVBTCT0gLi4vbGliL0BMSUJfUFJFRklYQG5jdXJzZXNAREZUX0RFUF9TVUZGSVhACiBURVNUX0FSR1MJPSBATERGTEFHU19TVEFUSUNAIEBURVNUX0FSR1NAIEBMREZMQUdTX1NIQVJFREAgCiBURVNUX0xERkxBR1MJPSBATERfTU9ERUxAICQoVEVTVF9BUkdTKSBATElCU0AgQExPQ0FMX0xERkxBR1NAIEBMREZMQUdTQApAQCAtMTY0LDExICsxOTYsMTIgQEAKIAloYXNobWFwJHggXAogCWxpYl9tdmN1ciR4CiAKLWJhc2UJPSAkKHNyY2RpcikvYmFzZQotc2VyaWFsCT0gJChzcmNkaXIpL3R0eQotdGluZm8JPSAkKHNyY2RpcikvdGluZm8KLXRyYWNlCT0gJChzcmNkaXIpL3RyYWNlCi13aWRlCT0gJChzcmNkaXIpL3dpZGVjaGFyCitiYXNlCSA9ICQoc3JjZGlyKS9iYXNlCitzZXJpYWwJID0gJChzcmNkaXIpL3R0eQordGluZm8JID0gJChzcmNkaXIpL3RpbmZvCit0cmFjZQkgPSAkKHNyY2RpcikvdHJhY2UKK3dpZGUJID0gJChzcmNkaXIpL3dpZGVjaGFyCit3aW4zMmNvbiA9ICQoc3JjZGlyKS93aW4zMmNvbgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogYWxsIFwKQEAgLTE3OCw0MSArMjExLDQxIEBACiAKICQoREVTVERJUikkKGJpbmRpcikgXAogJChERVNURElSKSQobGliZGlyKSA6Ci0Jc2ggJChzcmNkaXIpLy4uL21rZGlycy5zaCAkQAorCW1rZGlyIC1wICRACiAKIC4uL2xpYiA6IDsgbWtkaXIgJEAKIAogLi9mYWxsYmFjay5jIDogJCh0aW5mbykvTUtmYWxsYmFjay5zaAotCXNoIC1lICQodGluZm8pL01LZmFsbGJhY2suc2ggQFRFUk1JTkZPQCBAVEVSTUlORk9fU1JDQCAkKEZBTExCQUNLX0xJU1QpID4kQAorCSQoU0hFTEwpIC1lICQodGluZm8pL01LZmFsbGJhY2suc2ggJChURVJNSU5GTykgJChURVJNSU5GT19TUkMpICQoVElDX1BBVEgpICQoRkFMTEJBQ0tfTElTVCkgPiRACiAKIC4vbGliX2dlbi5jIDogJChiYXNlKS9NS2xpYl9nZW4uc2ggLi4vaW5jbHVkZS9jdXJzZXMuaAotCXNoIC1lICQoYmFzZSkvTUtsaWJfZ2VuLnNoICIkKENQUCkgJChDUFBGTEFHUykiICIkKEFXSykiIGdlbmVyYXRlZCA8Li4vaW5jbHVkZS9jdXJzZXMuaCA+JEAKKwkkKFNIRUxMKSAtZSAkKGJhc2UpL01LbGliX2dlbi5zaCAiJChDUFApICQoQ1BQRkxBR1MpIiAiJChBV0spIiBnZW5lcmF0ZWQgPC4uL2luY2x1ZGUvY3Vyc2VzLmggPiRACiAKIGluaXRfa2V5dHJ5Lmg6IG1ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKSBrZXlzLmxpc3QKIAkuL21ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKSBrZXlzLmxpc3QgPiAkQAogCiBrZXlzLmxpc3QgOgkkKHRpbmZvKS9NS2tleXNfbGlzdC5zaAotCUFXSz0kKEFXSykgc2ggJCh0aW5mbykvTUtrZXlzX2xpc3Quc2ggJChURVJNSU5GT19DQVBTKSB8IHNvcnQgPiRACisJQVdLPSQoQVdLKSAkKFNIRUxMKSAkKHRpbmZvKS9NS2tleXNfbGlzdC5zaCAkKFRFUk1JTkZPX0NBUFMpIHwgc29ydCA+JEAKIAogbWFrZV9rZXlzJChCVUlMRF9FWEVFWFQpIDogXAogCQkkKHRpbmZvKS9tYWtlX2tleXMuYyBcCiAJCW5hbWVzLmMKLQkkKEJVSUxEX0NDKSAtbyAkQCAkKEJVSUxEX0NDRkxBR1MpICQodGluZm8pL21ha2Vfa2V5cy5jICQoQlVJTERfTERGTEFHUykgJChCVUlMRF9MSUJTKQorCSQoQlVJTERfQ0MpIC1vICRAICQoQlVJTERfQ1BQRkxBR1MpICQoQlVJTERfQ0NGTEFHUykgJCh0aW5mbykvbWFrZV9rZXlzLmMgJChCVUlMRF9MREZMQUdTKSAkKEJVSUxEX0xJQlMpCiAKIG1ha2VfaGFzaCQoQlVJTERfRVhFRVhUKSA6IFwKLQkJJCh0aW5mbykvY29tcF9oYXNoLmMgXAorCQkkKHRpbmZvKS9tYWtlX2hhc2guYyBcCiAJCS4uL2luY2x1ZGUvaGFzaHNpemUuaAotCSQoQlVJTERfQ0MpIC1vICRAICQoQlVJTERfQ0NGTEFHUykgLURNQUlOX1BST0dSQU0gJCh0aW5mbykvY29tcF9oYXNoLmMgJChCVUlMRF9MREZMQUdTKSAkKEJVSUxEX0xJQlMpCisJJChCVUlMRF9DQykgLW8gJEAgJChCVUlMRF9DUFBGTEFHUykgJChCVUlMRF9DQ0ZMQUdTKSAkKHRpbmZvKS9tYWtlX2hhc2guYyAkKEJVSUxEX0xERkxBR1MpICQoQlVJTERfTElCUykKIAotLi9leHBhbmRlZC5jIDogJChzZXJpYWwpL01LZXhwYW5kZWQuc2gKLQlzaCAtZSAkKHNlcmlhbCkvTUtleHBhbmRlZC5zaCAiJChDUFApIiAkKENQUEZMQUdTKSA+ICRACisuL2V4cGFuZGVkLmMgOiAkKHNyY2RpcikvY3Vyc2VzLnByaXYuaCAkKHNlcmlhbCkvTUtleHBhbmRlZC5zaAorCSQoU0hFTEwpIC1lICQoc2VyaWFsKS9NS2V4cGFuZGVkLnNoICIkKENQUCkiICQoQ1BQRkxBR1MpID4gJEAKIAogLi9jb21wX2NhcHRhYi5jOiBcCiAJCW1ha2VfaGFzaCQoQlVJTERfRVhFRVhUKSBcCiAJCS4uL2luY2x1ZGUvaGFzaHNpemUuaCBcCiAJCSQodGluZm8pL01LY2FwdGFiLnNoIFwKIAkJJCh0aW5mbykvTUtjYXB0YWIuYXdrCi0Jc2ggLWUgJCh0aW5mbykvTUtjYXB0YWIuc2ggJChBV0spICQoVVNFX0JJR19TVFJJTkdTKSAkKHRpbmZvKS9NS2NhcHRhYi5hd2sgJChzcmNkaXIpLy4uL2luY2x1ZGUvQFRFUk1JTkZPX0NBUFNAID4gJEAKKwkkKFNIRUxMKSAtZSAkKHRpbmZvKS9NS2NhcHRhYi5zaCAkKEFXSykgJChVU0VfQklHX1NUUklOR1MpICQodGluZm8pL01LY2FwdGFiLmF3ayAkKHNyY2RpcikvLi4vaW5jbHVkZS9AVEVSTUlORk9fQ0FQU0AgPiAkQAogCiAuL2xpYl9rZXluYW1lLmM6IGtleXMubGlzdCAkKGJhc2UpL01La2V5bmFtZS5hd2sKIAkkKEFXSykgLWYgJChiYXNlKS9NS2tleW5hbWUuYXdrIGJpZ3N0cmluZ3M9JChVU0VfQklHX1NUUklOR1MpIGtleXMubGlzdCA+ICRACkBAIC0yMjcsMTAgKzI2MCwxMCBAQAogCWVjaG8gfCAkKEFXSykgLWYgJChiYXNlKS9NS3VuY3RybC5hd2sgYmlnc3RyaW5ncz0kKFVTRV9CSUdfU1RSSU5HUykgPiRACiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdICovKi5bY2hdCisJJChDVEFHUykgKi5bY2hdICovKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXSAqLyouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdICovKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQpAQCAtMjQwLDcgKzI3Myw3IEBACiAJLXJtIC1mICQoQVVUT19TUkMpCiAJLXJtIC1mIG1ha2Vfa2V5cyQoQlVJTERfRVhFRVhUKQogCS1ybSAtZiBtYWtlX2hhc2gkKEJVSUxEX0VYRUVYVCkKLQktcm0gLXJmIC5saWJzCisJLXJtIC1yZiAubGlicyAqLmRTWU0gKi5tYXAKIAogZGlzdGNsZWFuIDo6IGNsZWFuCiAJLXJtIC1mIE1ha2VmaWxlCkBAIC0yNTcsMjQgKzI5MCwyNCBAQAogdGVzdF9wcm9ncyA6ICQoVEVTVF9QUk9HUykKIAogLi9saW5rX3Rlc3QuYyA6ICQoYmFzZSkvTUtsaWJfZ2VuLnNoIC4uL2luY2x1ZGUvY3Vyc2VzLmgKLQlzaCAtZSAkKGJhc2UpL01LbGliX2dlbi5zaCAiJChDUFApICQoQ1BQRkxBR1MpIiAiJChBV0spIiBpbXBsZW1lbnRlZCA8Li4vaW5jbHVkZS9jdXJzZXMuaCA+JEAKKwkkKFNIRUxMKSAtZSAkKGJhc2UpL01LbGliX2dlbi5zaCAiJChDUFApICQoQ1BQRkxBR1MpIiAiJChBV0spIiBpbXBsZW1lbnRlZCA8Li4vaW5jbHVkZS9jdXJzZXMuaCA+JEAKIAogY2FwdG9pbmZvJHggOiAkKHRpbmZvKS9jYXB0b2luZm8uYyAkKFRFU1RfREVQUykKLQlARUNIT19MSU5LQCAkKExJQlRPT0xfTElOSykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLURNQUlOICQodGluZm8pL2NhcHRvaW5mby5jICQoVEVTVF9MREZMQUdTKQorCUBFQ0hPX0xEQCAkKExJQlRPT0xfTElOSykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLURNQUlOICQodGluZm8pL2NhcHRvaW5mby5jICQoVEVTVF9MREZMQUdTKQogCiBoYXJkc2Nyb2xsJHggOiAkKHNlcmlhbCkvaGFyZHNjcm9sbC5jICQoVEVTVF9ERVBTKQotCUBFQ0hPX0xJTktAICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRFNDUk9MTERFQlVHICQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgJChURVNUX0xERkxBR1MpCisJQEVDSE9fTERAICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRFNDUk9MTERFQlVHICQoc2VyaWFsKS9oYXJkc2Nyb2xsLmMgJChURVNUX0xERkxBR1MpCiAKIGhhc2htYXAkeCA6ICQoc2VyaWFsKS9oYXNobWFwLmMgJChzZXJpYWwpL2hhcmRzY3JvbGwuYyAkKFRFU1RfREVQUykKLQlARUNIT19MSU5LQCAkKExJQlRPT0xfTElOSykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLURIQVNIREVCVUcgJChzZXJpYWwpL2hhc2htYXAuYyAkKHNlcmlhbCkvaGFyZHNjcm9sbC5jICQoVEVTVF9MREZMQUdTKQorCUBFQ0hPX0xEQCAkKExJQlRPT0xfTElOSykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLURIQVNIREVCVUcgJChzZXJpYWwpL2hhc2htYXAuYyAkKHNlcmlhbCkvaGFyZHNjcm9sbC5jICQoVEVTVF9MREZMQUdTKQogCiBsaWJfbXZjdXIkeCA6ICQoc2VyaWFsKS9saWJfbXZjdXIuYyAkKFRFU1RfREVQUykgXAogCQkuLi9AREZUX09CSl9TVUJESVJAL2R1bXBfZW50cnkkbwotCUBFQ0hPX0xJTktAICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRE5DVVJTRVNfVEVTVCAtSSQoc2VyaWFsKS8uLi8uLi9wcm9ncyAkKHNlcmlhbCkvbGliX212Y3VyLmMgLi4vQERGVF9PQkpfU1VCRElSQC9kdW1wX2VudHJ5JG8gJChURVNUX0xERkxBR1MpCisJQEVDSE9fTERAICQoTElCVE9PTF9MSU5LKSAtbyAkQCAkKENGTEFHU19ERUZBVUxUKSAtRE5DVVJTRVNfVEVTVCAtSSQoc2VyaWFsKS8uLi8uLi9wcm9ncyAkKHNlcmlhbCkvbGliX212Y3VyLmMgLi4vQERGVF9PQkpfU1VCRElSQC9kdW1wX2VudHJ5JG8gJChURVNUX0xERkxBR1MpCiAKIGxpbmtfdGVzdCR4IDogLi9saW5rX3Rlc3QuYyAkKFRFU1RfREVQUykgXAogCQkuLi9AREZUX09CSl9TVUJESVJAL2xpbmtfdGVzdCRvCi0JQEVDSE9fTElOS0AgJChDQykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLi4vQERGVF9PQkpfU1VCRElSQC9saW5rX3Rlc3QkbyAkKFRFU1RfTERGTEFHUykKKwlARUNIT19MREAgJChDQykgLW8gJEAgJChDRkxBR1NfREVGQVVMVCkgLi4vQERGVF9PQkpfU1VCRElSQC9saW5rX3Rlc3QkbyAkKFRFU1RfTERGTEFHUykKIAogLi4vQERGVF9PQkpfU1VCRElSQC9kdW1wX2VudHJ5JG86CiAJY2QgLi4vcHJvZ3MgJiYgJChNQUtFKSAuLi9AREZUX09CSl9TVUJESVJAL2R1bXBfZW50cnkkbwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9SRUFETUUgYi9uY3Vyc2VzL1JFQURNRQppbmRleCAxMjBhYTViLi5jYmRlMzM1IDEwMDY0NAotLS0gYS9uY3Vyc2VzL1JFQURNRQorKysgYi9uY3Vyc2VzL1JFQURNRQpAQCAtMSw1ICsxLDUgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgLS0KKy0tIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgLS0KIC0tIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAgLS0KQEAgLTI1LDcgKzI1LDI2IEBACiAtLSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgIC0tCiAtLSBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLSAkSWQ6IFJFQURNRSx2IDEuOSAyMDA2LzA0LzIyIDIyOjE5OjM3IHRvbSBFeHAgJAorLS0gJElkOiBSRUFETUUsdiAxLjEwIDIwMDkvMDYvMjcgMTQ6NDQ6MzAgdG9tIEV4cCAkCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBGb3IgZGlzY3Vzc2lvbiBvZiB0aGUgcGFja2FnZSBpbnRlcm5hbHMsIHNlZSBoYWNrZ3VpZGUuaHRtbCBpbiB0aGUgZG9jL2h0bWwKIGRpcmVjdG9yeS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGxsaWItbFhYWFggZmlsZXMgY291bGQgYmUgdXNlZCBhcyBsaW50LWxpYnJhcnkgc291cmNlcyAoYW5kIHdlcmUsIGF0IG9uZQordGltZSkuICBIb3dldmVyLCB0aGV5IGFyZSBhY3R1YWxseSB1c2VkIGFzIGEgZG9jdW1lbnRhdGlvbiBhaWQgdG8ga2VlcCB0cmFjaworb2YgY2hhbmdlcyB0byB0aGUgcHVibGljL3ByaXZhdGUgaW50ZXJmYWNlcyBpbiBuY3Vyc2VzLiAgTW9zdCBvZiB0aGUgdGV4dCBpbgordGhlc2UgZmlsZXMgaXMgZ2VuZXJhdGVkIHVzaW5nIGNwcm90bzsgc29tZSBtYW51YWwgY2xlYW51cCBhbmQgYWRqdXN0bWVudCBvZgordHlwZXMgKHRvIHJlZmxlY3QgI2RlZmluZSdzIGluIGN1cnNlcy5oKSBpcyBuZWVkZWQuICBUaGUgZnVuY3Rpb25zIGxpc3RlZCBpbgordGhlIGxsaWItbFhYWFggZmlsZXMgZG8gbm90IGNvcnJlc3BvbmQgdG8gdGhlIGRlZmF1bHQgY29uZmlndXJlIG9wdGlvbnM7IHNvbWUKK2FkZGl0aW9uYWwgb25lcyBhcmUgYWRkZWQgdG8gaW5jbHVkZSAiYWxsIiBvZiB0aGUgZW50cnlwb2ludHMgZm9yIGVhY2ggb2YgdGhlCittYWpvciBjb25maWd1cmF0aW9ucyAobm9ybWFsLCB3aWRlLWNoYXJhY3RlciwgdGhyZWFkZWQpOgorCisJLS1kaXNhYmxlLW1hY3JvcworCS0tZGlzYWJsZS1yb290LWVudmlyb24KKwktLWVuYWJsZS1leHBhbmRlZAorCS0tZW5hYmxlLWdldGNhcAorCS0tZW5hYmxlLWdldGNhcC1jYWNoZQorCS0tZW5hYmxlLXNwLWZ1bmNzCisJLS1lbmFibGUtdGVybWNhcAorCS0td2l0aC1kZXZlbG9wCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvTUtrZXluYW1lLmF3ayBiL25jdXJzZXMvYmFzZS9NS2tleW5hbWUuYXdrCmluZGV4IGIzNWJhMmEuLjc5MDE2MTEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9NS2tleW5hbWUuYXdrCisrKyBiL25jdXJzZXMvYmFzZS9NS2tleW5hbWUuYXdrCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IE1La2V5bmFtZS5hd2ssdiAxLjQwIDIwMDgvMDcvMTIgMTg6NDA6MDAgdG9tIEV4cCAkCisjICRJZDogTUtrZXluYW1lLmF3ayx2IDEuNDggMjAxMy8wOC8yNCAxNzozNzoyMiB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTMxLDcgKzMxLDYgQEAKIAlwcmludCAiIgogCXByaW50ICIjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4iCiAJcHJpbnQgIiNpbmNsdWRlIDx0aWMuaD4iCi0JcHJpbnQgIiNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+IgogCXByaW50ICIiCiAJZmlyc3QgPSAxOwogfQpAQCAtNjYsOCArNjUsMTAgQEAKIAlwcmludCAiIgogCXByaW50ICIjZGVmaW5lIFNJWkVPRl9UQUJMRSAyNTYiCiAJcHJpbnQgIiNkZWZpbmUgTXlUYWJsZSBfbmNfZ2xvYmFscy5rZXluYW1lX3RhYmxlIgorCXByaW50ICIjZGVmaW5lIE15SW5pdCAgX25jX2dsb2JhbHMuaW5pdF9rZXluYW1lIgogCXByaW50ICIiCi0JcHJpbnQgIk5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBfbmNfa2V5bmFtZSAoU0NSRUVOICpzcCwgaW50IGMpIgorCXByaW50ICJOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikiCisJcHJpbnQgInNhZmVfa2V5bmFtZSAoU0NSRUVOICpzcCwgaW50IGMpIgogCXByaW50ICJ7IgogCXByaW50ICIJaW50IGk7IgogCXByaW50ICIJY2hhciBuYW1lWzIwXTsiCkBAIC05NiwzNCArOTcsNDkgQEAKIAlwcmludCAiCQlpZiAocmVzdWx0ID09IDAgJiYgKGMgPj0gMCAmJiBjIDwgU0laRU9GX1RBQkxFKSkgeyIKIAlwcmludCAiCQkJaWYgKE15VGFibGUgPT0gMCkiCiAJcHJpbnQgIgkJCQlNeVRhYmxlID0gdHlwZUNhbGxvYyhjaGFyICosIFNJWkVPRl9UQUJMRSk7IgorCXByaW50ICIiCiAJcHJpbnQgIgkJCWlmIChNeVRhYmxlICE9IDApIHsiCisJcHJpbnQgIgkJCQlpbnQgbV9wcmVmaXggPSAoc3AgPT0gMCB8fCBzcC0+X3VzZV9tZXRhKTsiCisJcHJpbnQgIiIKKwlwcmludCAiCQkJCS8qIGlmIHNlbnNlIG9mIG1ldGEoKSBjaGFuZ2VkLCBkaXNjYXJkIGNhY2hlZCBkYXRhICovIgorCXByaW50ICIJCQkJaWYgKE15SW5pdCAhPSAobV9wcmVmaXggKyAxKSkgeyIKKwlwcmludCAiCQkJCQlNeUluaXQgPSBtX3ByZWZpeCArIDE7IgorCXByaW50ICIJCQkJCWZvciAoaSA9IDA7IGkgPCBTSVpFT0ZfVEFCTEU7ICsraSkgeyIKKwlwcmludCAiCQkJCQkJaWYgKE15VGFibGVbaV0pIHsiCisJcHJpbnQgIgkJCQkJCQlGcmVlQW5kTnVsbChNeVRhYmxlW2ldKTsiCisJcHJpbnQgIgkJCQkJCX0iCisJcHJpbnQgIgkJCQkJfSIKKwlwcmludCAiCQkJCX0iCisJcHJpbnQgIiIKKwlwcmludCAiCQkJCS8qIGNyZWF0ZSBhbmQgY2FjaGUgcmVzdWx0IGFzIG5lZWRlZCAqLyIKIAlwcmludCAiCQkJCWlmIChNeVRhYmxlW2NdID09IDApIHsiCiAJcHJpbnQgIgkJCQkJaW50IGNjID0gYzsiCiAJcHJpbnQgIgkJCQkJcCA9IG5hbWU7IgotCXByaW50ICIJCQkJCWlmIChjYyA+PSAxMjggJiYgKHNwID09IDAgfHwgc3AtPl91c2VfbWV0YSkpIHsiCi0JcHJpbnQgIgkJCQkJCXN0cmNweShwLCBcIk0tXCIpOyIKKwlwcmludCAiI2RlZmluZSBQX0xJTUlUIChzaXplb2YobmFtZSkgLSAoc2l6ZV90KSAocCAtIG5hbWUpKSIKKwlwcmludCAiCQkJCQlpZiAoY2MgPj0gMTI4ICYmIG1fcHJlZml4KSB7IgorCXByaW50ICIJCQkJCQlfbmNfU1RSQ1BZKHAsIFwiTS1cIiwgUF9MSU1JVCk7IgogCXByaW50ICIJCQkJCQlwICs9IDI7IgogCXByaW50ICIJCQkJCQljYyAtPSAxMjg7IgogCXByaW50ICIJCQkJCX0iCiAJcHJpbnQgIgkJCQkJaWYgKGNjIDwgMzIpIgotCXByaW50ICIJCQkJCQlzcHJpbnRmKHAsIFwiXiVjXCIsIGNjICsgJ0AnKTsiCisJcHJpbnQgIgkJCQkJCV9uY19TUFJJTlRGKHAsIF9uY19TTElNSVQoUF9MSU1JVCkgXCJeJWNcIiwgY2MgKyAnQCcpOyIKIAlwcmludCAiCQkJCQllbHNlIGlmIChjYyA9PSAxMjcpIgotCXByaW50ICIJCQkJCQlzdHJjcHkocCwgXCJeP1wiKTsiCisJcHJpbnQgIgkJCQkJCV9uY19TVFJDUFkocCwgXCJeP1wiLCBQX0xJTUlUKTsiCiAJcHJpbnQgIgkJCQkJZWxzZSIKLQlwcmludCAiCQkJCQkJc3ByaW50ZihwLCBcIiVjXCIsIGNjKTsiCisJcHJpbnQgIgkJCQkJCV9uY19TUFJJTlRGKHAsIF9uY19TTElNSVQoUF9MSU1JVCkgXCIlY1wiLCBjYyk7IgogCXByaW50ICIJCQkJCU15VGFibGVbY10gPSBzdHJkdXAobmFtZSk7IgogCXByaW50ICIJCQkJfSIKIAlwcmludCAiCQkJCXJlc3VsdCA9IE15VGFibGVbY107IgogCXByaW50ICIJCQl9IgogCXByaW50ICIjaWYgTkNVUlNFU19FWFRfRlVOQ1MgJiYgTkNVUlNFU19YTkFNRVMiCi0JcHJpbnQgIgkJfSBlbHNlIGlmIChyZXN1bHQgPT0gMCAmJiBjdXJfdGVybSAhPSAwKSB7IgorCXByaW50ICIJCX0gZWxzZSBpZiAocmVzdWx0ID09IDAgJiYgSGFzVGVybWluYWwoc3ApKSB7IgogCXByaW50ICIJCQlpbnQgaiwgazsiCiAJcHJpbnQgIgkJCWNoYXIgKiBib3VuZDsiCi0JcHJpbnQgIgkJCVRFUk1UWVBFICp0cCA9ICYoY3VyX3Rlcm0tPnR5cGUpOyIKLQlwcmludCAiCQkJaW50IHNhdmVfdHJhY2UgPSBfbmNfdHJhY2luZzsiCisJcHJpbnQgIgkJCVRFUk1UWVBFICp0cCA9ICYoVGVybWluYWxPZihzcCktPnR5cGUpOyIKKwlwcmludCAiCQkJdW5zaWduZWQgc2F2ZV90cmFjZSA9IF9uY190cmFjaW5nOyIKIAlwcmludCAiIgogCXByaW50ICIJCQlfbmNfdHJhY2luZyA9IDA7CS8qIHByZXZlbnQgcmVjdXJzaW9uIHZpYSBrZXlib3VuZCgpICovIgotCXByaW50ICIJCQlmb3IgKGogPSAwOyAoYm91bmQgPSBrZXlib3VuZChjLCBqKSkgIT0gMDsgKytqKSB7IgorCXByaW50ICIJCQlmb3IgKGogPSAwOyAoYm91bmQgPSBOQ1VSU0VTX1NQX05BTUUoa2V5Ym91bmQpKE5DVVJTRVNfU1BfQVJHeCBjLCBqKSkgIT0gMDsgKytqKSB7IgogCXByaW50ICIJCQkJZm9yKGsgPSBTVFJDT1VOVDsgayA8IChpbnQpIE5VTV9TVFJJTkdTKHRwKTsgIGsrKykgeyIKIAlwcmludCAiCQkJCQlpZiAodHAtPlN0cmluZ3Nba10gIT0gMCAmJiAhc3RyY21wKGJvdW5kLCB0cC0+U3RyaW5nc1trXSkpIHsiCiAJcHJpbnQgIgkJCQkJCXJlc3VsdCA9IEV4dFN0cm5hbWUodHAsIGssIHN0cm5hbWVzKTsiCkBAIC0xNDEsOSArMTU3LDEwIEBACiAJcHJpbnQgIglyZXR1cm4gcmVzdWx0OyIKIAlwcmludCAifSIKIAlwcmludCAiIgotCXByaW50ICJOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikga2V5bmFtZSAoaW50IGMpIgorCXByaW50ICJOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikiCisJcHJpbnQgImtleW5hbWUgKGludCBjKSIKIAlwcmludCAieyIKLQlwcmludCAiXHRyZXR1cm4gX25jX2tleW5hbWUoU1AsIGMpOyIKKwlwcmludCAiCXJldHVybiBzYWZlX2tleW5hbWUgKENVUlJFTlRfU0NSRUVOLCBjKTsiCiAJcHJpbnQgIn0iCiAJcHJpbnQgIiIKIAlwcmludCAiI2lmIE5PX0xFQUtTIgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL01LbGliX2dlbi5zaCBiL25jdXJzZXMvYmFzZS9NS2xpYl9nZW4uc2gKaW5kZXggYTk4NGU4NS4uNGY3ZjE5ZCAxMDA3NTUKLS0tIGEvbmN1cnNlcy9iYXNlL01LbGliX2dlbi5zaAorKysgYi9uY3Vyc2VzL2Jhc2UvTUtsaWJfZ2VuLnNoCkBAIC0yLDEwICsyLDEwIEBACiAjCiAjIE1LbGliX2dlbi5zaCAtLSBnZW5lcmF0ZSBzb3VyY2VzIGZyb20gY3Vyc2VzLmggbWFjcm8gZGVmaW5pdGlvbnMKICMKLSMgKCRJZDogTUtsaWJfZ2VuLnNoLHYgMS4zNCAyMDA4LzA4LzMwIDE5OjIwOjUwIHRvbSBFeHAgJCkKKyMgKCRJZDogTUtsaWJfZ2VuLnNoLHYgMS41MCAyMDE1LzA4LzA3IDAwOjQ4OjI0IHRvbSBFeHAgJCkKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTUxLDcgKzUxLDcgQEAKICMgICAgICAgICB0aGVtLgogIyA1LiBjcHA6IG1hY3JvLWV4cGFuZCB0aGUgZmlsZSBzbyB0aGUgbWFjcm8gY2FsbHMgdHVybiBpbnRvIEMgY2FsbHMKICMgNi4gYXdrOiBzdHJpcCB0aGUgZXhwYW5zaW9uIGp1bmsgb2ZmIHRoZSBmcm9udCBhbmQgYWRkIHRoZSBuZXcgaGVhZGVyCi0jIDcuIHNlZDogc3F1ZWV6ZSBzcGFjZXMsIHN0cmlwIG9mZiBnZW5fIHByZWZpeCwgY3JlYXRlIG5lZWRlZCAjdW5kZWYKKyMgNy4gc2VkOiBzcXVlZXplIHNwYWNlcywgc3RyaXAgb2ZmIGdlbl8gcHJlZml4LgogIwogCiAjIGtlZXAgdGhlIGVkaXRpbmcgaW5kZXBlbmRlbnQgb2YgbG9jYWxlOgpAQCAtNjYsNiArNjYsMjMgQEAKIEFXSz0iJDIiCiBVU0U9IiQzIgogCisjIEEgcGF0Y2ggZGlzY3Vzc2VkIGhlcmU6CisjCWh0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNC0wNi9tc2cwMjE4NS5odG1sCisjIGludHJvZHVjZXMgc3B1cmlvdXMgI2xpbmUgbWFya2VycyBpbnRvIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0LiAgVGhlIHJlc3VsdAorIyBhcHBlYXJzIGluIGdjYyA1LjAgYW5kICh3aXRoIG1vZGlmaWNhdGlvbikgaW4gNS4xLCBtYWtpbmcgaXQgbmVjZXNzYXJ5IHRvCisjIGRldGVybWluZSBpZiB3ZSBhcmUgdXNpbmcgZ2NjLCBhbmQgaWYgc28sIHdoYXQgdmVyc2lvbiBiZWNhdXNlIHRoZSBwcm9wb3NlZAorIyBzb2x1dGlvbiB1c2VzIGEgbm9uc3RhbmRhcmQgb3B0aW9uLgorUFJHPWBlY2hvICIkMSIgfCAkQVdLICd7IHN1YigvXltbOnNwYWNlOl1dKi8sIiIpOyBzdWIoL1tbOnNwYWNlOl1dLiokLywgIiIpOyBwcmludDsgfScgfHwgZXhpdCAwYAorRlNGPWAiJFBSRyIgLS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGV4aXQgMCB8IGZncmVwICJGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24iIHwgaGVhZCAtbiAxYAorQUxMPWAiJFBSRyIgLWR1bXB2ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGV4aXQgMGAKK09ORT1gZWNobyAiJEFMTCIgfCBzZWQgLWUgJ3MvXC4uKiQvLydgCitpZiB0ZXN0IC1uICIkRlNGIiAmJiB0ZXN0IC1uICIkQUxMIiAmJiB0ZXN0IC1uICIkT05FIiA7IHRoZW4KKwlpZiB0ZXN0ICRPTkUgLWdlIDUgOyB0aGVuCisJCWVjaG8gIi4uIGFkZGluZyAtUCBvcHRpb24gdG8gd29yayBhcm91bmQgJFBSRyAkQUxMIiA+JjIKKwkJcHJlcHJvY2Vzc29yPSIkcHJlcHJvY2Vzc29yIC1QIgorCWZpCitmaQorCiBQSUQ9JCQKIEVEMT1zZWQxXyR7UElEfS5zZWQKIEVEMj1zZWQyXyR7UElEfS5zZWQKQEAgLTgyLDYgKzk5LDggQEAKIAljYXQgPiRFRDEgPDxFT0YxCiAvXmV4dGVybi4qaW1wbGVtZW50ZWQvewogCWgKKwlzL05DVVJTRVNfU1BfTkFNRShcKFteKV0qXCkpL05DVVJTRVNfU1BfTkFNRV9fX1wxLworCWgKIAlzL14uKmltcGxlbWVudGVkOlwoW14gCSpdKlwpLiovUF9QT1VORENpZl9VU0VfXDFfU1VQUE9SVC9wCiAJZwogCXMvXmV4dGVybiBcKFteO10qXCk7LiovXDEvcApAQCAtMTUxLDE0ICsxNzAsMTMgQEAKIAlzLyggLygvZwogCXMvICkvKS9nCiAJcy8gZ2VuXy8gLwotCXMvXk1fLyN1bmRlZiAvCiAJcy9eWyAJXSpAWyAJXSpAWyAJXSovCS8KIDpkb25lCiBFT0YzCiAKIGlmIHRlc3QgIiRVU0UiID0gZ2VuZXJhdGVkIDsgdGhlbgogY2F0ID4kRUQ0IDw8RU9GCi0Jcy9eXCguKlwpIFwoLipcKSAoXCguKlwpKVwkL05DVVJTRVNfRVhQT1JUKFwxKSBcMiAoXDMpLworCXMvXlwoLipcKSBcKC4qXCkgKFwoLipcKSlcJC9OQ1VSU0VTX0VYUE9SVChcMSkgKFwyKSAoXDMpLwogRU9GCiBlbHNlCiBjYXQgPiRFRDQgPDxFT0YKQEAgLTE2OSw2ICsxODcsNyBAQAogCWcKIAlzL15cKC4qXCkgXCguKlwpIChcKC4qXCkpXCQvXDEgY2FsbF9cMiAoXDMpLwogCX0KK3MvXChbXl9dXClOQ1VSU0VTX1NQX05BTUVfX19cKFthLXpBLVpdW2EtekEtWl9dKlwpL1wxTkNVUlNFU19TUF9OQU1FKFwyKS9nCiBFT0YKIGZpCiAKQEAgLTE5OCwxNCArMjE3LDE2IEBACiAJCX0KIAl9CiAJc2Vjb25kID0gZmlyc3QgKyAxOworCXJldHVybkNhc3QgPSAiIjsKIAlpZiAoICRmaXJzdCA9PSAiY2h0eXBlIiApIHsKLQkJcmV0dXJuVHlwZSA9ICJDaGFyIjsKKwkJcmV0dXJuVHlwZSA9ICJDaHR5cGUiOwogCX0gZWxzZSBpZiAoICRmaXJzdCA9PSAiU0NSRUVOIiApIHsKIAkJcmV0dXJuVHlwZSA9ICJTUCI7CiAJfSBlbHNlIGlmICggJGZpcnN0ID09ICJXSU5ET1ciICkgewogCQlyZXR1cm5UeXBlID0gIldpbiI7CiAJfSBlbHNlIGlmICggJGZpcnN0ID09ICJhdHRyX3QiIHx8ICRzZWNvbmQgPT0gImF0dHJzZXQiIHx8ICRzZWNvbmQgPT0gInN0YW5kb3V0IiB8fCAkc2Vjb25kID09ICJzdGFuZGVuZCIgfHwgJHNlY29uZCA9PSAid2F0dHJzZXQiIHx8ICRzZWNvbmQgPT0gIndzdGFuZG91dCIgfHwgJHNlY29uZCA9PSAid3N0YW5kZW5kIiApIHsKLQkJcmV0dXJuVHlwZSA9ICJBdHRyIjsKKwkJcmV0dXJuVHlwZSA9ICJJbnRBdHRyIjsKKwkJcmV0dXJuQ2FzdCA9ICIoYXR0cl90KSI7CiAJfSBlbHNlIGlmICggJGZpcnN0ID09ICJib29sIiB8fCAkZmlyc3QgPT0gIk5DVVJTRVNfQk9PTCIgKSB7CiAJCXJldHVyblR5cGUgPSAiQm9vbCI7CiAJfSBlbHNlIGlmICggJHNlY29uZCA9PSAiKiIgKSB7CkBAIC0yMjAsOSArMjQxLDYgQEAKIAkJCWJyZWFrOwogCQl9CiAJfQotCWlmICh1c2luZyA9PSAiZ2VuZXJhdGVkIikgewotCQlwcmludCAiTV8iICRteWZ1bmMKLQl9CiAJcHJpbnQgJDA7CiAJcHJpbnQgInsiOwogCWFyZ2NvdW50ID0gMTsKQEAgLTI0Nyw2ICsyNjUsOSBAQAogCWlmICgkbXlmdW5jIH4gL3JpcG9mZmxpbmUvKSB7CiAJCWRvdHJhY2UgPSAwOwogCQlhcmdjb3VudCA9IDI7CisJCWlmICgkbXlmdW5jIH4gL05DVVJTRVNfU1BfTkFNRS8pIHsKKwkJCWFyZ2NvdW50ID0gMzsKKwkJfQogCX0KIAlpZiAoJG15ZnVuYyB+IC93dW5jdHJsLykgewogCQlkb3RyYWNlID0gMDsKQEAgLTI2MiwyNCArMjgzLDI2IEBACiAJYXJndHlwZSA9ICIiCiAJZm9yIChpID0gbXlmdW5jOyBpIDw9IE5GOyBpKyspIHsKIAkJY2ggPSAkaTsKLQkJaWYgKCBjaCA9PSAiKiIgKQorCQlpZiAoIGNoID09ICIqIiApIHsKIAkJCXBvaW50ZXIgPSAxOwotCQllbHNlIGlmICggY2ggPT0gInZhX2xpc3QiICkKKwkJfSBlbHNlIGlmICggY2ggPT0gInZhX2xpc3QiICkgewogCQkJdmFfbGlzdCA9IDE7Ci0JCWVsc2UgaWYgKCBjaCA9PSAiLi4uIiApCisJCX0gZWxzZSBpZiAoIGNoID09ICIuLi4iICkgewogCQkJdmFyYXJncyA9IDE7Ci0JCWVsc2UgaWYgKCBjaCA9PSAiY2hhciIgKQorCQl9IGVsc2UgaWYgKCBjaCA9PSAiY2hhciIgKSB7CiAJCQlhcmd0eXBlID0gImNoYXIiOwotCQllbHNlIGlmICggY2ggPT0gImludCIgKQorCQl9IGVsc2UgaWYgKCBjaCA9PSAiaW50IiApIHsKIAkJCWFyZ3R5cGUgPSAiaW50IjsKLQkJZWxzZSBpZiAoIGNoID09ICJzaG9ydCIgKQorCQl9IGVsc2UgaWYgKCBjaCA9PSAic2hvcnQiICkgewogCQkJYXJndHlwZSA9ICJzaG9ydCI7Ci0JCWVsc2UgaWYgKCBjaCA9PSAiY2h0eXBlIiApCisJCX0gZWxzZSBpZiAoIGNoID09ICJjaHR5cGUiICkgewogCQkJYXJndHlwZSA9ICJjaHR5cGUiOwotCQllbHNlIGlmICggY2ggPT0gImF0dHJfdCIgfHwgY2ggPT0gIk5DVVJTRVNfQVRUUl9UIiApCisJCX0gZWxzZSBpZiAoIGNoID09ICJhdHRyX3QiIHx8IGNoID09ICJOQ1VSU0VTX0FUVFJfVCIgKSB7CiAJCQlhcmd0eXBlID0gImF0dHIiOworCQl9CiAKIAkJaWYgKCBjaCA9PSAiLCIgfHwgY2ggPT0gIikiICkgeworCQkJYXJnY2FzdCA9ICIiOwogCQkJaWYgKHZhX2xpc3QpIHsKIAkJCQljYWxsID0gY2FsbCAiJXMiCiAJCQl9IGVsc2UgaWYgKHZhcmFyZ3MpIHsKQEAgLTI4OSw4ICszMTIsMTAgQEAKIAkJCQkJY2FsbCA9IGNhbGwgIiVzIgogCQkJCQljb21tYSA9IGNvbW1hICJfbmNfdmlzYnVmMigiIG51bSAiLCIKIAkJCQkJcG9pbnRlciA9IDA7Ci0JCQkJfSBlbHNlCisJCQkJfSBlbHNlIHsKIAkJCQkJY2FsbCA9IGNhbGwgIiVwIgorCQkJCQljb21tYSA9IGNvbW1hICIoY29uc3Qgdm9pZCAqKSIKKwkJCQl9CiAJCQl9IGVsc2UgaWYgKGFyZ2NvdW50ICE9IDApIHsKIAkJCQlpZiAoIGFyZ3R5cGUgPT0gImludCIgfHwgYXJndHlwZSA9PSAic2hvcnQiICkgewogCQkJCQljYWxsID0gY2FsbCAiJWQiCkBAIC0yOTgsNiArMzIzLDkgQEAKIAkJCQl9IGVsc2UgaWYgKCBhcmd0eXBlICE9ICIiICkgewogCQkJCQljYWxsID0gY2FsbCAiJXMiCiAJCQkJCWNvbW1hID0gY29tbWEgIl90cmFjZSIgYXJndHlwZSAiMigiIG51bSAiLCIKKwkJCQkJaWYgKGFyZ3R5cGUgPT0gImF0dHIiKSB7CisJCQkJCQlhcmdjYXN0ID0gIihjaHR5cGUpIjsKKwkJCQkJfQogCQkJCX0gZWxzZSB7CiAJCQkJCWNhbGwgPSBjYWxsICIlI2x4IgogCQkJCQljb21tYSA9IGNvbW1hICIobG9uZykiCkBAIC0zMTEsNyArMzM5LDcgQEAKIAkJCQl9IGVsc2UgaWYgKCB2YXJhcmdzICkgewogCQkJCQlhcmdzID0gYXJncyBjb21tYSAiXCIuLi5cIiIKIAkJCQl9IGVsc2UgewotCQkJCQlhcmdzID0gYXJncyBjb21tYSAieiIKKwkJCQkJYXJncyA9IGFyZ3MgY29tbWEgYXJnY2FzdCAieiIKIAkJCQl9CiAJCQl9CiAJCQljYWxsID0gY2FsbCBjaApAQCAtMzIyLDcgKzM1MCw3IEBACiAJCQlwb2ludGVyID0gMDsKIAkJCWFyZ3R5cGUgPSAiIgogCQl9Ci0JCWlmICggaSA9PSAyIHx8IGNoID09ICIoIiApCisJCWlmICggaSA9PSBteWZ1bmMgfHwgY2ggPT0gIigiICkKIAkJCWNhbGwgPSBjYWxsIGNoCiAJfQogCWNhbGwgPSBjYWxsICJcIikiCkBAIC0zMzMsMTIgKzM2MSwxNiBAQAogCWlmIChkb3RyYWNlKQogCQlwcmludGYgIiVzIiwgY2FsbAogCi0JaWYgKG1hdGNoKCQwLCAiXnZvaWQiKSkKKwlpZiAobWF0Y2goJDAsICJedm9pZCIpKSB7CiAJCWNhbGwgPSAiIgotCWVsc2UgaWYgKGRvdHJhY2UpCisJfSBlbHNlIGlmIChkb3RyYWNlKSB7CiAJCWNhbGwgPSBzcHJpbnRmKCJyZXR1cm4lcyggIiwgcmV0dXJuVHlwZSk7Ci0JZWxzZQorCQlpZiAocmV0dXJuQ2FzdCAhPSAiIikgeworCQkJY2FsbCA9IGNhbGwgcmV0dXJuQ2FzdDsKKwkJfQorCX0gZWxzZSB7CiAJCWNhbGwgPSAiQEByZXR1cm4gIjsKKwl9CiAKIAljYWxsID0gY2FsbCAkbXlmdW5jICIoIjsKIAlmb3IgKGkgPSAxOyBpIDwgYXJnY291bnQ7IGkrKykgewpAQCAtMzUzLDggKzM4NSw5IEBACiAJfQogCWlmICghbWF0Y2goJDAsICJedm9pZCIpKQogCQljYWxsID0gY2FsbCAiKSAiOwotCWlmIChkb3RyYWNlKQorCWlmIChkb3RyYWNlKSB7CiAJCWNhbGwgPSBjYWxsICIpIjsKKwl9CiAJcHJpbnQgY2FsbCAiOyIKIAogCWlmIChtYXRjaCgkMCwgIl52b2lkIikpCkBAIC0zODEsMTQgKzQxNCw1OCBAQAogCQl9CiAJCXByaW50ICIgKi8iCiAJCXByaW50ICIjZGVmaW5lIE5DVVJTRVNfQVRUUl9UIGludCIKKwkJcHJpbnQgIiNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPiIKKwkJcHJpbnQgIiIKKwkJcHJpbnQgIiN1bmRlZiBOQ1VSU0VTX05PTUFDUk9TCS8qIF90aGlzXyBmaWxlIHVzZXMgbWFjcm9zICovIgorCQlwcmludCAiIgogCQlwcmludCAiI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+IgogCQlwcmludCAiIgorCQlwcmludCAiI3VuZGVmIHZ3X3NjYW53IgorCQlwcmludCAiI3VuZGVmIHZ3c2NhbnciCisJCXByaW50ICIiCisJCXByaW50ICIjdW5kZWYgdndfcHJpbnR3IgorCQlwcmludCAiI3VuZGVmIHZ3cHJpbnR3IgogCQl9CiAvXkRFQ0xBUkFUSU9OUy8Je3N0YXJ0ID0gMTsgbmV4dDt9Ci0JCXtpZiAoc3RhcnQpIHByaW50IFwkMDt9CisJCXsKKwkJaWYgKHN0YXJ0KSB7CisJCQlpZiAoICIkVVNFIiA9PSAiZ2VuZXJhdGVkIiApIHsKKwkJCQlwcmludCBcJDA7CisJCQl9IGVsc2UgaWYgKCBcJDAgfiAvXlt7fV0/XCQvICkgeworCQkJCXByaW50IFwkMDsKKwkJCX0gZWxzZSBpZiAoIFwkMCB+IC87LyApIHsKKwkJCQlwcmludCBcJDA7CisJCQl9IGVsc2UgeworCQkJCWNhbGxzW3N0YXJ0XSA9IFwkMDsKKwkJCQlwcmludCBcJDA7CisJCQkJc3RhcnQrKzsKKwkJCX0KKwkJfQorCQl9CiBFTkQJCXsKIAkJaWYgKCAiJFVTRSIgIT0gImdlbmVyYXRlZCIgKSB7Ci0JCQlwcmludCAiaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfSIKKwkJCXByaW50ICJpbnQgbWFpbih2b2lkKSIKKwkJCXByaW50ICJ7IgorCQkJZm9yIChuID0gMTsgbiA8IHN0YXJ0OyArK24pIHsKKwkJCQl2YWx1ZSA9IGNhbGxzW25dOworCQkJCWlmICggdmFsdWUgIX4gL1BfUE9VTkRDLyApIHsKKwkJCQkJZ3N1YigvW1s6Ymxhbms6XV0rLywiICIsdmFsdWUpOworCQkJCQlzdWIoL15bWzphbG51bTpdX10rIC8sIiIsdmFsdWUpOworCQkJCQlzdWIoL15cKiAvLCIiLHZhbHVlKTsKKwkJCQkJZ3N1YigvW1s6YWxudW06XV9dKyBcKiAvLCIiLHZhbHVlKTsKKwkJCQkJZ3N1YigvIChjb25zdCkgLywiICIsdmFsdWUpOworCQkJCQlnc3ViKC8gKGludHxzaG9ydHxhdHRyX3R8Y2h0eXBlfHdjaGFyX3R8TkNVUlNFU19CT09MfE5DVVJTRVNfT1VUQ3xOQ1VSU0VTX09VVENfc3B8dmFfbGlzdCkgLywiICIsdmFsdWUpOworCQkJCQlnc3ViKC8gdm9pZCAvLCIiLHZhbHVlKTsKKwkJCQkJc3ViKC9eLywiY2FsbF8iLHZhbHVlKTsKKwkJCQkJZ3N1YigvIChhW1s6ZGlnaXQ6XV18eikgLywgIiAwICIsIHZhbHVlKTsKKwkJCQkJZ3N1YigvIGludFtbOmJsYW5rOl1dKlsoXVteKV0rWyldWyhdW14pXStbKV0vLCAiMCIsIHZhbHVlKTsKKwkJCQkJcHJpbnRmICJcdCVzO1xuIiwgdmFsdWU7CisJCQkJfSBlbHNlIHsKKwkJCQkJcHJpbnQgdmFsdWU7CisJCQkJfQorCQkJfQorCQkJcHJpbnQgIglyZXR1cm4gMDsiCisJCQlwcmludCAifSIKIAkJfQogCQl9CiBFT0YxCkBAIC0zOTcsNiArNDc0LDggQEAKICNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgogI3VuZGVmIE5DVVJTRVNfTk9NQUNST1MKICNpbmNsdWRlIDxjdXJzZXMuaD4KKyNpbmNsdWRlIDx0ZXJtLmg+CisjaW5jbHVkZSA8dW5jdHJsLmg+CiAKIERFQ0xBUkFUSU9OUwogCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvTUt1bmN0cmwuYXdrIGIvbmN1cnNlcy9iYXNlL01LdW5jdHJsLmF3awppbmRleCAzNmZiZWVjLi41MWNlYjYzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvTUt1bmN0cmwuYXdrCisrKyBiL25jdXJzZXMvYmFzZS9NS3VuY3RybC5hd2sKQEAgLTEsNiArMSw2IEBACi0jICRJZDogTUt1bmN0cmwuYXdrLHYgMS4yMyAyMDA4LzEwLzA0IDIxOjQwOjI0IHRvbSBFeHAgJAorIyAkSWQ6IE1LdW5jdHJsLmF3ayx2IDEuMjcgMjAxMi8wNi8wOSAyMDoyOTozMyB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTM2LDE5ICszNiwxMiBAQAogCQlwcmludCAiI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+IgogCQlwcmludCAiI2luY2x1ZGUgPGN0eXBlLmg+IgogCQlwcmludCAiIgotCQlwcmludCAiI2lmIFVTRV9XSURFQ19TVVBQT1JUIgotCQlwcmludCAiI2lmIEhBVkVfV0NUWVBFX0giCi0JCXByaW50ICIjaW5jbHVkZSA8d2N0eXBlLmg+IgotCQlwcmludCAiI2VuZGlmIgotCQlwcmludCAiI2VuZGlmIgotCQlwcmludCAiIgogCQlwcmludCAiI3VuZGVmIHVuY3RybCIKIAkJcHJpbnQgIiIKIAl9CiBFTkQJewotCQlwcmludCAiTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIF9uY191bmN0cmwgKFNDUkVFTiAqc3AsIGNodHlwZSBjaCkiCisJCXByaW50ICJOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikgc2FmZV91bmN0cmwoU0NSRUVOICpzcCwgY2h0eXBlIGNoKSIKIAkJcHJpbnQgInsiCi0KIAkJYmxvYj0iIgogCQlvZmZzZXQ9MAogCQlpZiAoYmlnc3RyaW5ncykgewpAQCAtMTQ3LDcgKzE0MCw3IEBACiAJCX0gZWxzZSB7CiAJCQlzdHJpbmduYW1lID0gInVuY3RybCIKIAkJfQotCQlwcmludCAgIlx0aW50IGNoZWNrID0gQ2hDaGFyT2YoY2gpOyIKKwkJcHJpbnQgICJcdGludCBjaGVjayA9IChpbnQpIENoQ2hhck9mKGNoKTsiCiAJCXByaW50ICAiXHRjb25zdCBjaGFyICpyZXN1bHQ7IgogCQlwcmludCAgIiIKIAkJcHJpbnQgICJcdGlmIChjaGVjayA+PSAwICYmIGNoZWNrIDwgKGludClTSVpFT0YodW5jdHJsX3RhYmxlKSkgeyIKQEAgLTE1OCwxNiArMTUxLDYgQEAKIAkJcHJpbnQgICJcdFx0ICYmIChjaGVjayA8IDE2MCkpIgogCQlwcmludGYgIlx0XHRcdHJlc3VsdCA9ICVzX2MxW2NoZWNrIC0gMTI4XTtcbiIsIHN0cmluZ25hbWU7CiAJCXByaW50ICAiXHRcdGVsc2UiCi0JCXByaW50ICAiI2lmIFVTRV9XSURFQ19TVVBQT1JUIgotCQlwcmludCAgIlx0XHRpZiAoKGNoZWNrID49IDE2MCkiCi0JCXByaW50ICAiXHRcdCAmJiAoY2hlY2sgPCAyNTYpIgotCQlwcmludCAgIlx0XHQgJiYgKChzcCAhPSAwKSIKLQkJcHJpbnQgICJcdFx0ICAmJiAoKHNwLT5fbGVnYWN5X2NvZGluZyA+IDApIgotCQlwcmludCAgIlx0XHQgICB8fCAoc3AtPl9sZWdhY3lfY29kaW5nID09IDAiCi0JCXByaW50ICAiXHRcdCAgICAgICAmJiAoaXNwcmludChjaGVjaykgfHwgaXN3cHJpbnQoY2hlY2spKSkpKSkiCi0JCXByaW50ZiAiXHRcdFx0cmVzdWx0ID0gJXNfYzFbY2hlY2sgLSAxMjhdO1xuIiwgc3RyaW5nbmFtZTsKLQkJcHJpbnQgICJcdFx0ZWxzZSIKLQkJcHJpbnQgICIjZWxzZSIKIAkJcHJpbnQgICJcdFx0aWYgKChjaGVjayA+PSAxNjApIgogCQlwcmludCAgIlx0XHQgJiYgKGNoZWNrIDwgMjU2KSIKIAkJcHJpbnQgICJcdFx0ICYmICgoc3AgIT0gMCkiCkBAIC0xNzYsNyArMTU5LDYgQEAKIAkJcHJpbnQgICJcdFx0ICAgICAgICYmIGlzcHJpbnQoY2hlY2spKSkpKSIKIAkJcHJpbnRmICJcdFx0XHRyZXN1bHQgPSAlc19jMVtjaGVjayAtIDEyOF07XG4iLCBzdHJpbmduYW1lOwogCQlwcmludCAgIlx0XHRlbHNlIgotCQlwcmludCAgIiNlbmRpZiAvKiBVU0VfV0lERUNfU1VQUE9SVCAqLyIKIAkJcHJpbnQgICIjZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8iCiAJCXByaW50ZiAiXHRcdFx0cmVzdWx0ID0gJXNfdGFibGVbY2hlY2tdO1xuIiwgc3RyaW5nbmFtZTsKIAkJcHJpbnQgICJcdH0gZWxzZSB7IgpAQCAtMTg3LDYgKzE2OSw2IEBACiAJCXByaW50ICAiIgogCQlwcmludCAgIk5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSB1bmN0cmwgKGNodHlwZSBjaCkiCiAJCXByaW50ICAieyIKLQkJcHJpbnQgICJcdHJldHVybiBfbmNfdW5jdHJsKFNQLCBjaCk7IgorCQlwcmludCAgIlx0cmV0dXJuIHNhZmVfdW5jdHJsKENVUlJFTlRfU0NSRUVOLCBjaCk7IgogCQlwcmludCAgIn0iCiAJfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2RlZmluZV9rZXkuYyBiL25jdXJzZXMvYmFzZS9kZWZpbmVfa2V5LmMKaW5kZXggM2Q1ODE1Zi4uYzc4Mzc1YSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2RlZmluZV9rZXkuYworKysgYi9uY3Vyc2VzL2Jhc2UvZGVmaW5lX2tleS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMzMgKzI3LDQwIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgIDE5OTctb24gICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ny1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGRlZmluZV9rZXkuYyx2IDEuMTMgMjAwNi8xMi8zMCAyMzoyMzozMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGRlZmluZV9rZXkuYyx2IDEuMjEgMjAxNC8wMy8wOCAyMDozMjo1OSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1kZWZpbmVfa2V5KGNvbnN0IGNoYXIgKnN0ciwgaW50IGtleWNvZGUpCitOQ1VSU0VTX1NQX05BTUUoZGVmaW5lX2tleSkgKE5DVVJTRVNfU1BfRENMeCBjb25zdCBjaGFyICpzdHIsIGludCBrZXljb2RlKQogewogICAgIGludCBjb2RlID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoImRlZmluZV9rZXkoJXMsJWQpIiksIF9uY192aXNidWYoc3RyKSwga2V5Y29kZSkpOwotICAgIGlmIChTUCA9PSAwKSB7CisgICAgVCgoVF9DQUxMRUQoImRlZmluZV9rZXkoJXAsICVzLCVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBfbmNfdmlzYnVmKHN0ciksIGtleWNvZGUpKTsKKyAgICBpZiAoU1BfUEFSTSA9PSAwIHx8ICFIYXNUSW5mb1Rlcm1pbmFsKFNQX1BBUk0pKSB7CiAJY29kZSA9IEVSUjsKICAgICB9IGVsc2UgaWYgKGtleWNvZGUgPiAwKSB7CiAJdW5zaWduZWQgdWtleSA9ICh1bnNpZ25lZCkga2V5Y29kZTsKIAorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorI2RlZmluZSBDYWxsSGFzS2V5KGtleWNvZGUpIENhbGxEcml2ZXJfMShTUF9QQVJNLCB0ZF9reUV4aXN0LCBrZXljb2RlKQorI2Vsc2UKKyNkZWZpbmUgQ2FsbEhhc0tleShrZXljb2RlKSBOQ1VSU0VTX1NQX05BTUUoaGFzX2tleSkoTkNVUlNFU19TUF9BUkd4IGtleWNvZGUpCisjZW5kaWYKKwogCWlmIChzdHIgIT0gMCkgewotCSAgICBkZWZpbmVfa2V5KHN0ciwgMCk7Ci0JfSBlbHNlIGlmIChoYXNfa2V5KGtleWNvZGUpKSB7Ci0JICAgIHdoaWxlIChfbmNfcmVtb3ZlX2tleSgmKFNQLT5fa2V5dHJ5KSwgdWtleSkpCisJICAgIE5DVVJTRVNfU1BfTkFNRShkZWZpbmVfa2V5KSAoTkNVUlNFU19TUF9BUkd4IHN0ciwgMCk7CisJfSBlbHNlIGlmIChDYWxsSGFzS2V5KGtleWNvZGUpKSB7CisJICAgIHdoaWxlIChfbmNfcmVtb3ZlX2tleSgmKFNQX1BBUk0tPl9rZXl0cnkpLCB1a2V5KSkKIAkJY29kZSA9IE9LOwogCX0KIAlpZiAoc3RyICE9IDApIHsKLQkgICAgaWYgKGtleV9kZWZpbmVkKHN0cikgPT0gMCkgewotCQlpZiAoX25jX2FkZF90b190cnkoJihTUC0+X2tleXRyeSksIHN0ciwgdWtleSkgPT0gT0spIHsKKwkgICAgaWYgKE5DVVJTRVNfU1BfTkFNRShrZXlfZGVmaW5lZCkgKE5DVVJTRVNfU1BfQVJHeCBzdHIpID09IDApIHsKKwkJaWYgKF9uY19hZGRfdG9fdHJ5KCYoU1BfUEFSTS0+X2tleXRyeSksIHN0ciwgdWtleSkgPT0gT0spIHsKIAkJICAgIGNvZGUgPSBPSzsKIAkJfSBlbHNlIHsKIAkJICAgIGNvZGUgPSBFUlI7CkBAIC02Myw4ICs3MCwxNiBAQAogCSAgICB9CiAJfQogICAgIH0gZWxzZSB7Ci0Jd2hpbGUgKF9uY19yZW1vdmVfc3RyaW5nKCYoU1AtPl9rZXl0cnkpLCBzdHIpKQorCXdoaWxlIChfbmNfcmVtb3ZlX3N0cmluZygmKFNQX1BBUk0tPl9rZXl0cnkpLCBzdHIpKQogCSAgICBjb2RlID0gT0s7CiAgICAgfQogICAgIHJldHVybkNvZGUoY29kZSk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitkZWZpbmVfa2V5KGNvbnN0IGNoYXIgKnN0ciwgaW50IGtleWNvZGUpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShkZWZpbmVfa2V5KSAoQ1VSUkVOVF9TQ1JFRU4sIHN0ciwga2V5Y29kZSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9rZXlfZGVmaW5lZC5jIGIvbmN1cnNlcy9iYXNlL2tleV9kZWZpbmVkLmMKaW5kZXggNzU5YWQ4Mi4uZWY5ODdhNSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2tleV9kZWZpbmVkLmMKKysrIGIvbmN1cnNlcy9iYXNlL2tleV9kZWZpbmVkLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDoga2V5X2RlZmluZWQuYyx2IDEuNiAyMDA2LzEyLzMwIDIzOjIyOjU1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDoga2V5X2RlZmluZWQuYyx2IDEuOSAyMDA5LzEwLzI0IDIyOjE1OjQ3IHRvbSBFeHAgJCIpCiAKIHN0YXRpYyBpbnQKIGZpbmRfZGVmaW5pdGlvbihUUklFUyAqIHRyZWUsIGNvbnN0IGNoYXIgKnN0cikKQEAgLTY1LDE0ICs2NSwyMiBAQAogICogT3RoZXJ3aXNlLCByZXR1cm4gdGhlIGtleWNvZGUncyB2YWx1ZSAobmVpdGhlciBPSy9FUlIpLgogICovCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1rZXlfZGVmaW5lZChjb25zdCBjaGFyICpzdHIpCitOQ1VSU0VTX1NQX05BTUUoa2V5X2RlZmluZWQpIChOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2hhciAqc3RyKQogewogICAgIGludCBjb2RlID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoImtleV9kZWZpbmVkKCVzKSIpLCBfbmNfdmlzYnVmKHN0cikpKTsKLSAgICBpZiAoU1AgIT0gMCAmJiBzdHIgIT0gMCkgewotCWNvZGUgPSBmaW5kX2RlZmluaXRpb24oU1AtPl9rZXl0cnksIHN0cik7CisgICAgVCgoVF9DQUxMRUQoImtleV9kZWZpbmVkKCVwLCAlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgX25jX3Zpc2J1ZihzdHIpKSk7CisgICAgaWYgKFNQX1BBUk0gIT0gMCAmJiBzdHIgIT0gMCkgeworCWNvZGUgPSBmaW5kX2RlZmluaXRpb24oU1BfUEFSTS0+X2tleXRyeSwgc3RyKTsKICAgICB9CiAKICAgICByZXR1cm5Db2RlKGNvZGUpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQora2V5X2RlZmluZWQoY29uc3QgY2hhciAqc3RyKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoa2V5X2RlZmluZWQpIChDVVJSRU5UX1NDUkVFTiwgc3RyKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2tleWJvdW5kLmMgYi9uY3Vyc2VzL2Jhc2Uva2V5Ym91bmQuYwppbmRleCAyOTk1NzE0Li43Mjc5MGU4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2Uva2V5Ym91bmQuYworKysgYi9uY3Vyc2VzL2Jhc2Uva2V5Ym91bmQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDI1ICsyNywzNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAxOTk5LW9uICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTktb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBrZXlib3VuZC5jLHYgMS43IDIwMDYvMDYvMTcgMTg6MTk6MjQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBrZXlib3VuZC5jLHYgMS4xMSAyMDExLzEwLzIyIDE2OjQ3OjA1IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBSZXR1cm5zIHRoZSBjb3VudCd0aCBzdHJpbmcgZGVmaW5pdGlvbiB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlCiAgKiBnaXZlbiBrZXljb2RlLiAgVGhlIHJlc3VsdCBpcyBtYWxsb2MnZCwgbXVzdCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLgogICovCiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCi1rZXlib3VuZChpbnQgY29kZSwgaW50IGNvdW50KQorTkNVUlNFU19TUF9OQU1FKGtleWJvdW5kKSAoTkNVUlNFU19TUF9EQ0x4IGludCBjb2RlLCBpbnQgY291bnQpCiB7CiAgICAgY2hhciAqcmVzdWx0ID0gMDsKIAotICAgIFQoKFRfQ0FMTEVEKCJrZXlib3VuZCglZCwlZCkiKSwgY29kZSwgY291bnQpKTsKLSAgICBpZiAoU1AgIT0gMCAmJiBjb2RlID49IDApIHsKLQlyZXN1bHQgPSBfbmNfZXhwYW5kX3RyeShTUC0+X2tleXRyeSwgKHVuc2lnbmVkKSBjb2RlLCAmY291bnQsIDApOworICAgIFQoKFRfQ0FMTEVEKCJrZXlib3VuZCglcCwgJWQsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIGNvZGUsIGNvdW50KSk7CisgICAgaWYgKFNQX1BBUk0gIT0gMCAmJiBjb2RlID49IDApIHsKKwlyZXN1bHQgPSBfbmNfZXhwYW5kX3RyeShTUF9QQVJNLT5fa2V5dHJ5LAorCQkJCSh1bnNpZ25lZCkgY29kZSwKKwkJCQkmY291bnQsCisJCQkJKHNpemVfdCkgMCk7CiAgICAgfQogICAgIHJldHVyblB0cihyZXN1bHQpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoY2hhciAqKQora2V5Ym91bmQoaW50IGNvZGUsIGludCBjb3VudCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGtleWJvdW5kKSAoQ1VSUkVOVF9TQ1JFRU4sIGNvZGUsIGNvdW50KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2tleW9rLmMgYi9uY3Vyc2VzL2Jhc2Uva2V5b2suYwppbmRleCBhZDg5ODhjLi4zN2ZkZGVjIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2Uva2V5b2suYworKysgYi9uY3Vyc2VzL2Jhc2Uva2V5b2suYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEyICsyNywxMyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgMTk5Ny1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTctb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBrZXlvay5jLHYgMS43IDIwMDYvMTIvMzAgMTY6MjI6MzMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBrZXlvay5jLHYgMS4xNCAyMDE0LzAzLzA4IDIwOjMyOjU5IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBFbmFibGUgKG9yIGRpc2FibGUpIG5jdXJzZXMnIGludGVycHJldGF0aW9uIG9mIGEga2V5Y29kZSBieSBhZGRpbmcgKG9yCkBAIC00NSwzNCArNDYsNTggQEAKICAqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1rZXlvayhpbnQgYywgYm9vbCBmbGFnKQorTkNVUlNFU19TUF9OQU1FKGtleW9rKSAoTkNVUlNFU19TUF9EQ0x4IGludCBjLCBib29sIGZsYWcpCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7Ci0gICAgaW50IGNvdW50ID0gMDsKLSAgICBjaGFyICpzOwogCi0gICAgVCgoVF9DQUxMRUQoImtleW9rKCVkLCVkKSIpLCBjLCBmbGFnKSk7Ci0gICAgaWYgKGMgPj0gMCkgewotCXVuc2lnbmVkIGNoID0gKHVuc2lnbmVkKSBjOwotCWlmIChmbGFnKSB7Ci0JICAgIHdoaWxlICgocyA9IF9uY19leHBhbmRfdHJ5KFNQLT5fa2V5X29rLCBjaCwgJmNvdW50LCAwKSkgIT0gMAotCQkgICAmJiBfbmNfcmVtb3ZlX2tleSgmKFNQLT5fa2V5X29rKSwgY2gpKSB7Ci0JCWNvZGUgPSBfbmNfYWRkX3RvX3RyeSgmKFNQLT5fa2V5dHJ5KSwgcywgY2gpOwotCQlmcmVlKHMpOwotCQljb3VudCA9IDA7Ci0JCWlmIChjb2RlICE9IE9LKQotCQkgICAgYnJlYWs7Ci0JICAgIH0KLQl9IGVsc2UgewotCSAgICB3aGlsZSAoKHMgPSBfbmNfZXhwYW5kX3RyeShTUC0+X2tleXRyeSwgY2gsICZjb3VudCwgMCkpICE9IDAKLQkJICAgJiYgX25jX3JlbW92ZV9rZXkoJihTUC0+X2tleXRyeSksIGNoKSkgewotCQljb2RlID0gX25jX2FkZF90b190cnkoJihTUC0+X2tleV9vayksIHMsIGNoKTsKLQkJZnJlZShzKTsKLQkJY291bnQgPSAwOwotCQlpZiAoY29kZSAhPSBPSykKLQkJICAgIGJyZWFrOworICAgIGlmIChIYXNUZXJtaW5hbChTUF9QQVJNKSkgeworCVQoKFRfQ0FMTEVEKCJrZXlvayglcCwgJWQsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIGMsIGZsYWcpKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwljb2RlID0gQ2FsbERyaXZlcl8yKHNwLCB0ZF9reU9rLCBjLCBmbGFnKTsKKyNlbHNlCisJVCgoVF9DQUxMRUQoImtleW9rKCVkLCVkKSIpLCBjLCBmbGFnKSk7CisJaWYgKGMgPj0gMCkgeworCSAgICBpbnQgY291bnQgPSAwOworCSAgICBjaGFyICpzOworCSAgICB1bnNpZ25lZCBjaCA9ICh1bnNpZ25lZCkgYzsKKworCSAgICBpZiAoZmxhZykgeworCQl3aGlsZSAoKHMgPSBfbmNfZXhwYW5kX3RyeShTUF9QQVJNLT5fa2V5X29rLAorCQkJCQkgICBjaCwgJmNvdW50LCAoc2l6ZV90KSAwKSkgIT0gMCkgeworCQkgICAgaWYgKF9uY19yZW1vdmVfa2V5KCYoU1BfUEFSTS0+X2tleV9vayksIGNoKSkgeworCQkJY29kZSA9IF9uY19hZGRfdG9fdHJ5KCYoU1BfUEFSTS0+X2tleXRyeSksIHMsIGNoKTsKKwkJCWZyZWUocyk7CisJCQljb3VudCA9IDA7CisJCQlpZiAoY29kZSAhPSBPSykKKwkJCSAgICBicmVhazsKKwkJICAgIH0gZWxzZSB7CisJCQlmcmVlKHMpOworCQkgICAgfQorCQl9CisJICAgIH0gZWxzZSB7CisJCXdoaWxlICgocyA9IF9uY19leHBhbmRfdHJ5KFNQX1BBUk0tPl9rZXl0cnksCisJCQkJCSAgIGNoLCAmY291bnQsIChzaXplX3QpIDApKSAhPSAwKSB7CisJCSAgICBpZiAoX25jX3JlbW92ZV9rZXkoJihTUF9QQVJNLT5fa2V5dHJ5KSwgY2gpKSB7CisJCQljb2RlID0gX25jX2FkZF90b190cnkoJihTUF9QQVJNLT5fa2V5X29rKSwgcywgY2gpOworCQkJZnJlZShzKTsKKwkJCWNvdW50ID0gMDsKKwkJCWlmIChjb2RlICE9IE9LKQorCQkJICAgIGJyZWFrOworCQkgICAgfSBlbHNlIHsKKwkJCWZyZWUocyk7CisJCSAgICB9CisJCX0KIAkgICAgfQogCX0KKyNlbmRpZgogICAgIH0KICAgICByZXR1cm5Db2RlKGNvZGUpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQora2V5b2soaW50IGMsIGJvb2wgZmxhZykKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGtleW9rKSAoQ1VSUkVOVF9TQ1JFRU4sIGMsIGZsYWcpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGVnYWN5X2NvZGluZy5jIGIvbmN1cnNlcy9iYXNlL2xlZ2FjeV9jb2RpbmcuYwppbmRleCAxYzJmMTYwLi5kOGM4MDIwIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGVnYWN5X2NvZGluZy5jCisrKyBiL25jdXJzZXMvYmFzZS9sZWdhY3lfY29kaW5nLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywyMiArMjcsMzEgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGVnYWN5X2NvZGluZy5jLHYgMS4yIDIwMDUvMTIvMTcgMjM6Mzg6MTcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsZWdhY3lfY29kaW5nLmMsdiAxLjUgMjAwOS8xMC8yNCAyMjoxNTowMCB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi11c2VfbGVnYWN5X2NvZGluZyhpbnQgbGV2ZWwpCitOQ1VSU0VTX1NQX05BTUUodXNlX2xlZ2FjeV9jb2RpbmcpIChOQ1VSU0VTX1NQX0RDTHggaW50IGxldmVsKQogewogICAgIGludCByZXN1bHQgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgidXNlX2xlZ2FjeV9jb2RpbmcoJWQpIiksIGxldmVsKSk7Ci0gICAgaWYgKGxldmVsID49IDAgJiYgbGV2ZWwgPD0gMiAmJiBTUCAhPSAwKSB7Ci0JcmVzdWx0ID0gU1AtPl9sZWdhY3lfY29kaW5nOwotCVNQLT5fbGVnYWN5X2NvZGluZyA9IGxldmVsOworICAgIFQoKFRfQ0FMTEVEKCJ1c2VfbGVnYWN5X2NvZGluZyglcCwlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgbGV2ZWwpKTsKKyAgICBpZiAobGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAyICYmIFNQX1BBUk0gIT0gMCkgeworCXJlc3VsdCA9IFNQX1BBUk0tPl9sZWdhY3lfY29kaW5nOworCVNQX1BBUk0tPl9sZWdhY3lfY29kaW5nID0gbGV2ZWw7CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3VzZV9sZWdhY3lfY29kaW5nKGludCBsZXZlbCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHVzZV9sZWdhY3lfY29kaW5nKSAoQ1VSUkVOVF9TQ1JFRU4sIGxldmVsKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9hZGRjaC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9hZGRjaC5jCmluZGV4IDIwYTk3YTAuLjRiMTZhNDcgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfYWRkY2guYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2FkZGNoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2FkZGNoLmMsdiAxLjExMyAyMDA4LzA4LzE2IDE5OjIwOjA0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2FkZGNoLmMsdiAxLjEyOSAyMDE0LzA4LzE2IDIwOjQxOjA0IHRvbSBFeHAgJCIpCiAKIHN0YXRpYyBjb25zdCBOQ1VSU0VTX0NIX1QgYmxhbmtjaGFyID0gTmV3Q2hhcihCTEFOS19URVhUKTsKIApAQCAtNzcsMTIgKzc3LDYgQEAKIAkgICAgaWYgKChwYWlyID0gR0VUX1dJTkRPV19QQUlSKHdpbikpID09IDApCiAJCXBhaXIgPSBHZXRQYWlyKHdpbi0+X25jX2JrZ2QpOwogCX0KLSNpZiAwCi0JaWYgKHBhaXIgPiAyNTUpIHsKLQkgICAgTkNVUlNFU19DSF9UIGZpeG1lID0gY2g7Ci0JICAgIFNldFBhaXIoZml4bWUsIHBhaXIpOwotCX0KLSNlbmRpZgogCUFkZEF0dHIoY2gsIChhICYgQ09MT1JfTUFTSyhBdHRyT2YoY2gpKSkpOwogCVNldFBhaXIoY2gsIHBhaXIpOwogICAgIH0KQEAgLTEzMSw3ICsxMjUsNyBAQAogCSp5cG9zID0gd2luLT5fcmVnYm90dG9tOwogCXJlc3VsdCA9IFRSVUU7CiAgICAgfSBlbHNlIHsKLQkqeXBvcyArPSAxOworCSp5cG9zID0gKE5DVVJTRVNfU0laRV9UKSAoKnlwb3MgKyAxKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE3Niw4ICsxNzAsOCBAQAogCWlmICh3YWRkY2hfbGl0ZXJhbCh3aW4sIGJsYW5rKSA9PSBFUlIpCiAJICAgIGJyZWFrOwogICAgIH0KLSAgICB3aW4tPl9jdXJ4ID0gc2F2ZV94OwotICAgIHdpbi0+X2N1cnkgPSBzYXZlX3k7CisgICAgd2luLT5fY3VyeCA9IChOQ1VSU0VTX1NJWkVfVCkgc2F2ZV94OworICAgIHdpbi0+X2N1cnkgPSAoTkNVUlNFU19TSVpFX1QpIHNhdmVfeTsKIH0KICNlbmRpZgogCkBAIC0yMTMsOSArMjA3LDEwIEBACiAgICAgYnVmZmVyW1dJTkRPV19FWFQod2luLCBhZGRjaF91c2VkKV0gPSAoY2hhcikgQ2hhck9mKENIREVSRUYoY2gpKTsKICAgICBXSU5ET1dfRVhUKHdpbiwgYWRkY2hfdXNlZCkgKz0gMTsKICAgICBidWZmZXJbV0lORE9XX0VYVCh3aW4sIGFkZGNoX3VzZWQpXSA9ICdcMCc7Ci0gICAgaWYgKChsZW4gPSBtYnJ0b3djKCZyZXN1bHQsCi0JCSAgICAgICBidWZmZXIsCi0JCSAgICAgICBXSU5ET1dfRVhUKHdpbiwgYWRkY2hfdXNlZCksICZzdGF0ZSkpID4gMCkgeworICAgIGlmICgobGVuID0gKGludCkgbWJydG93YygmcmVzdWx0LAorCQkJICAgICBidWZmZXIsCisJCQkgICAgIChzaXplX3QpIFdJTkRPV19FWFQod2luLCBhZGRjaF91c2VkKSwKKwkJCSAgICAgJnN0YXRlKSkgPiAwKSB7CiAJYXR0cl90IGF0dHJzID0gQXR0ck9mKENIREVSRUYoY2gpKTsKIAlpZl9FWFRfQ09MT1JTKGludCBwYWlyID0gR2V0UGFpcihDSERFUkVGKGNoKSkpOwogCVNldENoYXIoQ0hERVJFRihjaCksIHJlc3VsdCwgYXR0cnMpOwpAQCAtMjYwLDIwICsyNTUsMzcgQEAKICAgICAvKgogICAgICAqIEJ1aWxkIHVwIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIHVudGlsIHdlIGhhdmUgYSB3aWRlLWNoYXJhY3Rlci4KICAgICAgKi8KKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIERlcml2ZVNQKCkgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbHNlCisjZGVmaW5lIERlcml2ZVNQKCkJCS8qbm90aGluZyAqLworI2VuZGlmCiAgICAgaWZfV0lERUMoeworCURlcml2ZVNQKCk7CiAJaWYgKFdJTkRPV19FWFQod2luLCBhZGRjaF91c2VkKSAhPSAwIHx8ICFDaGFyYWJsZShjaCkpIHsKIAkgICAgaW50IGxlbiA9IF9uY19idWlsZF93Y2god2luLCBDSFJFRihjaCkpOwogCiAJICAgIGlmIChsZW4gPj0gLTEpIHsKLQkJLyogaGFuZGxlIEVJTFNFUSAqLwotCQlpZiAoaXM4Yml0cyhDaGFyT2YoY2gpKSkgewotCQkgICAgY29uc3QgY2hhciAqcyA9IHVuY3RybCgoY2h0eXBlKSBDaGFyT2YoY2gpKTsKLQkJICAgIGlmIChzWzFdICE9IDApIHsKLQkJCXJldHVybiB3YWRkc3RyKHdpbiwgcyk7CisJCWF0dHJfdCBhdHRyID0gQXR0ck9mKGNoKTsKKworCQkvKiBoYW5kbGUgRUlMU0VRIChpLmUuLCB3aGVuIGxlbiA+PSAtMSkgKi8KKwkJaWYgKGxlbiA9PSAtMSAmJiBpczhiaXRzKENoYXJPZihjaCkpKSB7CisJCSAgICBpbnQgcmMgPSBPSzsKKwkJICAgIGNvbnN0IGNoYXIgKnMgPSBOQ1VSU0VTX1NQX05BTUUodW5jdHJsKQorCQkgICAgICAoTkNVUlNFU19TUF9BUkd4IChjaHR5cGUpIENoYXJPZihjaCkpOworCisJCSAgICBpZiAoc1sxXSAhPSAnXDAnKSB7CisJCQl3aGlsZSAoKnMgIT0gJ1wwJykgeworCQkJICAgIHJjID0gd2FkZGNoKHdpbiwgVUNoYXIoKnMpIHwgYXR0cik7CisJCQkgICAgaWYgKHJjICE9IE9LKQorCQkJCWJyZWFrOworCQkJICAgICsrczsKKwkJCX0KKwkJCXJldHVybiByYzsKIAkJICAgIH0KIAkJfQogCQlpZiAobGVuID09IC0xKQotCQkgICAgcmV0dXJuIHdhZGRjaCh3aW4sICcgJyk7CisJCSAgICByZXR1cm4gd2FkZGNoKHdpbiwgJyAnIHwgYXR0cik7CiAJICAgIH0gZWxzZSB7CiAJCXJldHVybiBPSzsKIAkgICAgfQpAQCAtMzI3LDYgKzMzOSw3IEBACiAJCSAgICByZXR1cm4gRVJSOwogCQl4ID0gd2luLT5fY3VyeDsKIAkJeSA9IHdpbi0+X2N1cnk7CisJCWxpbmUgPSB3aW4tPl9saW5lICsgeTsKIAkgICAgfQogCSAgICAvKgogCSAgICAgKiBDaGVjayBmb3IgY2VsbHMgd2hpY2ggYXJlIG9ycGhhbmVkIGJ5IGFkZGluZyB0aGlzIGNoYXJhY3Rlciwgc2V0CkBAIC0zODQsNyArMzk3LDcgQEAKICAgICBpZiAoeCA+IHdpbi0+X21heHgpIHsKIAlyZXR1cm4gd3JhcF90b19uZXh0X2xpbmUod2luKTsKICAgICB9Ci0gICAgd2luLT5fY3VyeCA9IHg7CisgICAgd2luLT5fY3VyeCA9IChOQ1VSU0VTX1NJWkVfVCkgeDsKICAgICByZXR1cm4gT0s7CiB9CiAKQEAgLTM5MywzMCArNDA2LDM2IEBACiAvKiB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIC0tIGFkZCBhIGNoYXJhY3RlciB0byB0aGUgZ2l2ZW4gd2luZG93ICovCiB7CiAgICAgTkNVUlNFU19TSVpFX1QgeCwgeTsKLSAgICBjaHR5cGUgdCA9IENoYXJPZihjaCk7Ci0gICAgY29uc3QgY2hhciAqcyA9IHVuY3RybCh0KTsKKyAgICBjaHR5cGUgdCA9IChjaHR5cGUpIENoYXJPZihjaCk7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQgfHwgTkNVUlNFU19TUF9GVU5DUyB8fCBVU0VfUkVFTlRSQU5UCisgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgorICAgIGNvbnN0IGNoYXIgKnMgPSBOQ1VSU0VTX1NQX05BTUUodW5jdHJsKSAoTkNVUlNFU19TUF9BUkd4IHQpOworICAgIGludCB0YWJzaXplID0gODsKIAogICAgIC8qCiAgICAgICogSWYgd2UgYXJlIHVzaW5nIHRoZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCwgZm9yZ2V0IGFib3V0IGxvY2FsZS4KICAgICAgKiBPdGhlcndpc2UsIGlmIHVuY3RybCgpIHJldHVybnMgYSBzaW5nbGUtY2hhcmFjdGVyIG9yIHRoZSBsb2NhbGUKLSAgICAgKiBjbGFpbXMgdGhlIGNvZGUgaXMgcHJpbnRhYmxlLCB0cmVhdCBpdCB0aGF0IHdheS4KKyAgICAgKiBjbGFpbXMgdGhlIGNvZGUgaXMgcHJpbnRhYmxlIChhbmQgbm90IGFsc28gYSBjb250cm9sIGNoYXJhY3RlciksCisgICAgICogdHJlYXQgaXQgdGhhdCB3YXkuCiAgICAgICovCiAgICAgaWYgKChBdHRyT2YoY2gpICYgQV9BTFRDSEFSU0VUKQogCXx8ICgKICNpZiBVU0VfV0lERUNfU1VQUE9SVAotCSAgICAgICAoU1AgIT0gMCAmJiBTUC0+X2xlZ2FjeV9jb2RpbmcpICYmCisJICAgICAgIChzcCAhPSAwICYmIHNwLT5fbGVnYWN5X2NvZGluZykgJiYKICNlbmRpZgogCSAgICAgICBzWzFdID09IDAKIAkpCiAJfHwgKAotCSAgICAgICBpc3ByaW50KHQpCisJICAgICAgIChpc3ByaW50KChpbnQpdCkgJiYgIWlzY250cmwoKGludCl0KSkKICNpZiBVU0VfV0lERUNfU1VQUE9SVAotCSAgICAgICB8fCAoKFNQID09IDAgfHwgIVNQLT5fbGVnYWN5X2NvZGluZykgJiYKKwkgICAgICAgfHwgKChzcCA9PSAwIHx8ICFzcC0+X2xlZ2FjeV9jb2RpbmcpICYmCiAJCSAgIChXSU5ET1dfRVhUKHdpbiwgYWRkY2hfdXNlZCkKIAkJICAgIHx8ICFfbmNfaXNfY2hhcmFibGUoQ2hhck9mKGNoKSkpKQogI2VuZGlmCi0JKSkKKwkpKSB7CiAJcmV0dXJuIHdhZGRjaF9saXRlcmFsKHdpbiwgY2gpOworICAgIH0KIAogICAgIC8qCiAgICAgICogSGFuZGxlIGNhcnJpYWdlIGNvbnRyb2wgYW5kIG90aGVyIGNvZGVzIHRoYXQgYXJlIG5vdCBwcmludGFibGUsIG9yIGFyZQpAQCAtNDI3LDggKzQ0NiwxMiBAQAogCiAgICAgc3dpdGNoICh0KSB7CiAgICAgY2FzZSAnXHQnOgotCXggKz0gKFRBQlNJWkUgLSAoeCAlIFRBQlNJWkUpKTsKLQorI2lmIFVTRV9SRUVOVFJBTlQKKwl0YWJzaXplID0gKnB0clRhYnNpemUoc3ApOworI2Vsc2UKKwl0YWJzaXplID0gVEFCU0laRTsKKyNlbmRpZgorCXggPSAoTkNVUlNFU19TSVpFX1QpICh4ICsgKHRhYnNpemUgLSAoeCAlIHRhYnNpemUpKSk7CiAJLyoKIAkgKiBTcGFjZS1maWxsIHRoZSB0YWIgb24gdGhlIGJvdHRvbSBsaW5lIHNvIHRoYXQgd2UnbGwgZ2V0IHRoZQogCSAqICJjb3JyZWN0IiBjdXJzb3IgcG9zaXRpb24uCkBAIC00NzgsNyArNTAxLDcgQEAKICAgICBkZWZhdWx0OgogCXdoaWxlICgqcykgewogCSAgICBOQ1VSU0VTX0NIX1Qgc2NoOwotCSAgICBTZXRDaGFyKHNjaCwgKnMrKywgQXR0ck9mKGNoKSk7CisJICAgIFNldENoYXIoc2NoLCBVQ2hhcigqcysrKSwgQXR0ck9mKGNoKSk7CiAJICAgIGlmX0VYVF9DT0xPUlMoU2V0UGFpcihzY2gsIEdldFBhaXIoY2gpKSk7CiAJICAgIGlmICh3YWRkY2hfbGl0ZXJhbCh3aW4sIHNjaCkgPT0gRVJSKQogCQlyZXR1cm4gRVJSOwpAQCAtNTE0LDcgKzUzNyw3IEBACiAgICAgTkNVUlNFU19DSF9UIHdjaDsKICAgICBTZXRDaGFyMih3Y2gsIGNoKTsKIAotICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX0NBTExFRCgid2FkZGNoKCVwLCAlcykiKSwgd2luLAorICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX0NBTExFRCgid2FkZGNoKCVwLCAlcykiKSwgKHZvaWQgKikgd2luLAogCQkJCSAgICAgIF90cmFjZWNodHlwZShjaCkpKTsKIAogICAgIGlmICh3aW4gJiYgKHdhZGRjaF9ub3N5bmMod2luLCB3Y2gpICE9IEVSUikpIHsKQEAgLTUzMyw3ICs1NTYsOCBAQAogICAgIE5DVVJTRVNfQ0hfVCB3Y2g7CiAgICAgU2V0Q2hhcjIod2NoLCBjaCk7CiAKLSAgICBUUihUUkFDRV9WSVJUUFVUIHwgVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoIndlY2hvY2hhciglcCwgJXMpIiksIHdpbiwKKyAgICBUUihUUkFDRV9WSVJUUFVUIHwgVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoIndlY2hvY2hhciglcCwgJXMpIiksCisJCQkJICAgICAgKHZvaWQgKikgd2luLAogCQkJCSAgICAgIF90cmFjZWNodHlwZShjaCkpKTsKIAogICAgIGlmICh3aW4gJiYgKHdhZGRjaF9ub3N5bmMod2luLCB3Y2gpICE9IEVSUikpIHsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfYWRkc3RyLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2FkZHN0ci5jCmluZGV4IDRlM2EwNDAuLmExYTU1Y2IgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfYWRkc3RyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9hZGRzdHIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfYWRkc3RyLmMsdiAxLjQ4IDIwMDcvMTAvMTMgMTk6NTY6NTcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfYWRkc3RyLmMsdiAxLjUyIDIwMTEvMDUvMjggMjM6MDI6MDkgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2FkZG5zdHIoV0lORE9XICp3aW4sIGNvbnN0IGNoYXIgKmFzdHIsIGludCBuKQpAQCAtNTIsNyArNTIsNyBAQAogICAgIGNvbnN0IGNoYXIgKnN0ciA9IGFzdHI7CiAgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgid2FkZG5zdHIoJXAsJXMsJWQpIiksIHdpbiwgX25jX3Zpc2J1Zm4oYXN0ciwgbiksIG4pKTsKKyAgICBUKChUX0NBTExFRCgid2FkZG5zdHIoJXAsJXMsJWQpIiksICh2b2lkICopIHdpbiwgX25jX3Zpc2J1Zm4oYXN0ciwgbiksIG4pKTsKIAogICAgIGlmICh3aW4gJiYgKHN0ciAhPSAwKSkgewogCVRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9BVFRSUywKQEAgLTg1LDcgKzg1LDcgQEAKICAgICBpbnQgaTsKICAgICBzdHJ1Y3QgbGRhdCAqbGluZTsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3YWRkY2huc3RyKCVwLCVwLCVkKSIpLCB3aW4sIGFzdHIsIG4pKTsKKyAgICBUKChUX0NBTExFRCgid2FkZGNobnN0ciglcCwlcCwlZCkiKSwgKHZvaWQgKikgd2luLCAoY29uc3Qgdm9pZCAqKSBhc3RyLCBuKSk7CiAKICAgICBpZiAoIXdpbikKIAlyZXR1cm5Db2RlKEVSUik7CkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbiAmJiBDaENoYXJPZihhc3RyW2ldKSAhPSAnXDAnOyArK2kpIHsKIAlTZXRDaGFyMihsaW5lLT50ZXh0W2kgKyB4XSwgYXN0cltpXSk7CiAgICAgfQotICAgIENIQU5HRURfUkFOR0UobGluZSwgeCwgeCArIG4gLSAxKTsKKyAgICBDSEFOR0VEX1JBTkdFKGxpbmUsIHgsIChOQ1VSU0VTX1NJWkVfVCkgKHggKyBuIC0gMSkpOwogCiAgICAgX25jX3N5bmNob29rKHdpbik7CiAgICAgcmV0dXJuQ29kZShjb2RlKTsKQEAgLTExOSw4ICsxMTksMTAgQEAKIF9uY193Y2hzdHJsZW4oY29uc3QgY2NoYXJfdCAqcykKIHsKICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICB3aGlsZSAoQ2hhck9mKHNbcmVzdWx0XSkgIT0gTCdcMCcpIHsKLQlyZXN1bHQrKzsKKyAgICBpZiAocyAhPSAwKSB7CisJd2hpbGUgKENoYXJPZihzW3Jlc3VsdF0pICE9IEwnXDAnKSB7CisJICAgIHJlc3VsdCsrOworCX0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzNSw3ICsxMzcsMTAgQEAKICAgICBzdHJ1Y3QgbGRhdCAqbGluZTsKICAgICBpbnQgaSwgaiwgc3RhcnQsIGxlbiwgZW5kOwogCi0gICAgVCgoVF9DQUxMRUQoIndhZGRfd2NobnN0ciglcCwlcywlZCkiKSwgd2luLCBfbmNfdmlzY2J1Zihhc3RyLCBuKSwgbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3YWRkX3djaG5zdHIoJXAsJXMsJWQpIiksCisgICAgICAgKHZvaWQgKikgd2luLAorICAgICAgIF9uY192aXNjYnVmKGFzdHIsIG4pLAorICAgICAgIG4pKTsKIAogICAgIGlmICghd2luKQogCXJldHVybkNvZGUoRVJSKTsKQEAgLTE5MCw3ICsxOTUsNyBAQAogCQkgICAgU2V0V2lkZWNFeHQobGluZS0+dGV4dFt4ICsgal0sIGopOwogCQl9CiAJICAgIH0KLQkgICAgeCArPSBsZW47CisJICAgIHggPSAoTkNVUlNFU19TSVpFX1QpICh4ICsgbGVuKTsKIAkgICAgZW5kICs9IGxlbiAtIDE7CiAJfSBlbHNlIHsKIAkgICAgYnJlYWs7CkBAIC0yMTcsNyArMjIyLDcgQEAKIHsKICAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3YWRkbndzdHIoJXAsJXMsJWQpIiksIHdpbiwgX25jX3Zpc3didWZuKHN0ciwgbiksIG4pKTsKKyAgICBUKChUX0NBTExFRCgid2FkZG53c3RyKCVwLCVzLCVkKSIpLCAodm9pZCAqKSB3aW4sIF9uY192aXN3YnVmbihzdHIsIG4pLCBuKSk7CiAKICAgICBpZiAod2luICYmIChzdHIgIT0gMCkpIHsKIAlUUihUUkFDRV9WSVJUUFVUIHwgVFJBQ0VfQVRUUlMsCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2JlZXAuYyBiL25jdXJzZXMvYmFzZS9saWJfYmVlcC5jCmluZGV4IGI0NzhmMjUuLmI3NzVkNTYgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfYmVlcC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfYmVlcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDAsOSArNDEsMTIgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBiZWVwLCBmbGFzaCAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX2JlZXAuYyx2IDEuMTAgMjAwNS8wNC8wOSAxNToyMDowNCB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKKworTU9EVUxFX0lEKCIkSWQ6IGxpYl9iZWVwLmMsdiAxLjE3IDIwMTQvMDMvMDggMjA6MzI6NTkgdG9tIEV4cCAkIikKIAogLyoKICAqCWJlZXAoKQpAQCAtNTMsMjQgKzU3LDM0IEBACiAgKi8KIAogTkNVUlNFU19FWFBPUlQoaW50KQotYmVlcCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKGJlZXApIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJlcyA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJiZWVwKCkiKSkpOworICAgIFQoKFRfQ0FMTEVEKCJiZWVwKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICBpZiAoU1BfUEFSTSAhPSAwKQorCXJlcyA9IENhbGxEcml2ZXJfMShTUF9QQVJNLCB0ZF9kb0JlZXBPckZsYXNoLCBUUlVFKTsKKyNlbHNlCiAgICAgLyogRklYTUU6IHNob3VsZCBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUgbm90IGluIGFsdGNoYXIgbW9kZSAqLwogICAgIGlmIChjdXJfdGVybSA9PSAwKSB7CiAJcmVzID0gRVJSOwogICAgIH0gZWxzZSBpZiAoYmVsbCkgewotCVRQVVRTX1RSQUNFKCJiZWxsIik7Ci0JcmVzID0gcHV0cChiZWxsKTsKLQlfbmNfZmx1c2goKTsKKwlyZXMgPSBOQ1VSU0VTX1BVVFAyX0ZMVVNIKCJiZWxsIiwgYmVsbCk7CiAgICAgfSBlbHNlIGlmIChmbGFzaF9zY3JlZW4pIHsKLQlUUFVUU19UUkFDRSgiZmxhc2hfc2NyZWVuIik7Ci0JcmVzID0gcHV0cChmbGFzaF9zY3JlZW4pOworCXJlcyA9IE5DVVJTRVNfUFVUUDJfRkxVU0goImZsYXNoX3NjcmVlbiIsIGZsYXNoX3NjcmVlbik7CiAJX25jX2ZsdXNoKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm5Db2RlKHJlcyk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitiZWVwKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShiZWVwKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2JrZ2QuYyBiL25jdXJzZXMvYmFzZS9saWJfYmtnZC5jCmluZGV4IGM5OWUwYzUuLmM0NmNhNDIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfYmtnZC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfYmtnZC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzYsNyArMzYsNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9ia2dkLmMsdiAxLjM2IDIwMDgvMDMvMjMgMDA6MDk6MTQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfYmtnZC5jLHYgMS40OSAyMDE0LzA5LzA0IDA5OjM2OjIwIHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBTZXQgdGhlIHdpbmRvdydzIGJhY2tncm91bmQgaW5mb3JtYXRpb24uCkBAIC00OCw3ICs0OCw3IEBACiAjZW5kaWYKIHdia2dybmRzZXQoV0lORE9XICp3aW4sIGNvbnN0IEFSR19DSF9UIGNoKQogewotICAgIFQoKFRfQ0FMTEVEKCJ3YmtnZHNldCglcCwlcykiKSwgd2luLCBfdHJhY2VjaF90KGNoKSkpOworICAgIFQoKFRfQ0FMTEVEKCJ3YmtnZHNldCglcCwlcykiKSwgKHZvaWQgKikgd2luLCBfdHJhY2VjaF90KGNoKSkpOwogCiAgICAgaWYgKHdpbikgewogCWF0dHJfdCBvZmYgPSBBdHRyT2Yod2luLT5fbmNfYmtnZCk7CkBAIC04NSwxMiArODUsMTMgQEAKIAkgICAgY2NoYXJfdCB3Y2g7CiAJICAgIGludCB0bXA7CiAKLQkgICAgd2dldGJrZ3JuZCh3aW4sICZ3Y2gpOworCSAgICBtZW1zZXQoJndjaCwgMCwgc2l6ZW9mKHdjaCkpOworCSAgICAodm9pZCkgd2dldGJrZ3JuZCh3aW4sICZ3Y2gpOwogCSAgICB0bXAgPSBfbmNfdG9fY2hhcigod2ludF90KSBDaGFyT2Yod2NoKSk7CiAKIAkgICAgd2luLT5fYmtnZCA9ICgoKHRtcCA9PSBFT0YpID8gJyAnIDogKGNodHlwZSkgdG1wKQogCQkJICB8IChBdHRyT2Yod2NoKSAmIEFMTF9CVVRfQ09MT1IpCi0JCQkgIHwgQ09MT1JfUEFJUihHRVRfV0lORE9XX1BBSVIod2luKSkpOworCQkJICB8IChjaHR5cGUpIENvbG9yUGFpcihHRVRfV0lORE9XX1BBSVIod2luKSkpOwogCX0KICNlbmRpZgogICAgIH0KQEAgLTExOCwxNiArMTE5LDE4IEBACiB7CiAgICAgaW50IGNvZGUgPSBFUlI7CiAgICAgaW50IHgsIHk7Ci0gICAgTkNVUlNFU19DSF9UIG5ld19ia2dkID0gQ0hERVJFRihjaCk7CiAKLSAgICBUKChUX0NBTExFRCgid2JrZ2QoJXAsJXMpIiksIHdpbiwgX3RyYWNlY2hfdChjaCkpKTsKKyAgICBUKChUX0NBTExFRCgid2JrZ2QoJXAsJXMpIiksICh2b2lkICopIHdpbiwgX3RyYWNlY2hfdChjaCkpKTsKIAogICAgIGlmICh3aW4pIHsKKwlOQ1VSU0VTX0NIX1QgbmV3X2JrZ2QgPSBDSERFUkVGKGNoKTsKIAlOQ1VSU0VTX0NIX1Qgb2xkX2JrZ3JuZDsKLQl3Z2V0Ymtncm5kKHdpbiwgJm9sZF9ia2dybmQpOwogCi0Jd2JrZ3JuZHNldCh3aW4sIENIUkVGKG5ld19ia2dkKSk7Ci0Jd2F0dHJzZXQod2luLCBBdHRyT2Yod2luLT5fbmNfYmtnZCkpOworCW1lbXNldCgmb2xkX2JrZ3JuZCwgMCwgc2l6ZW9mKG9sZF9ia2dybmQpKTsKKwkodm9pZCkgd2dldGJrZ3JuZCh3aW4sICZvbGRfYmtncm5kKTsKKworCSh2b2lkKSB3Ymtncm5kc2V0KHdpbiwgQ0hSRUYobmV3X2JrZ2QpKTsKKwkodm9pZCkgd2F0dHJzZXQod2luLCAoaW50KSBBdHRyT2Yod2luLT5fbmNfYmtnZCkpOwogCiAJZm9yICh5ID0gMDsgeSA8PSB3aW4tPl9tYXh5OyB5KyspIHsKIAkgICAgZm9yICh4ID0gMDsgeCA8PSB3aW4tPl9tYXh4OyB4KyspIHsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfYm94LmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2JveC5jCmluZGV4IGQ2Y2ZjNmMuLjZmMTdjOTcgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfYm94LmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9ib3guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfYm94LmMsdiAxLjIyIDIwMDUvMTEvMjYgMTU6Mzk6NDIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfYm94LmMsdiAxLjI0IDIwMTAvMDQvMjQgMjM6NTE6NTcgdG9tIEV4cCAkIikKIAogI2lmIFVTRV9XSURFQ19TVVBQT1JUCiBzdGF0aWMgTkNVUlNFU19JTkxJTkUgY2h0eXBlCkBAIC01MSw4ICs1MSw5IEBACiAgICAgTkNVUlNFU19DSF9UIHdjaDsKICAgICBTZXRDaGFyMih3Y2gsIGNoKTsKICAgICB3Y2ggPSBfbmNfcmVuZGVyKHdpbiwgd2NoKTsKLSAgICByZXR1cm4gQ2hhck9mKHdjaCkgfCBBdHRyT2Yod2NoKTsKKyAgICByZXR1cm4gKChhdHRyX3QpIENoYXJPZih3Y2gpKSB8IEF0dHJPZih3Y2gpOwogfQorCiAjZGVmaW5lIFJFTkRFUl9XSVRIX0RFRkFVTFQoY2gsZGVmKSB3ICMjIGNoID0gX215X3JlbmRlcih3aW4sIChjaCA9PSAwKSA/IGRlZiA6IGNoKQogI2Vsc2UKICNkZWZpbmUgUkVOREVSX1dJVEhfREVGQVVMVChjaCxkZWYpIHcgIyMgY2ggPSBfbmNfcmVuZGVyKHdpbiwgKGNoID09IDApID8gZGVmIDogY2gpCkBAIC03MCw3ICs3MSw3IEBACiAgICAgY2h0eXBlIHdscywgd3JzLCB3dHMsIHdicywgd3RsLCB3dHIsIHdibCwgd2JyOwogCiAgICAgVCgoVF9DQUxMRUQoIndib3JkZXIoJXAsJXMsJXMsJXMsJXMsJXMsJXMsJXMsJXMpIiksCi0gICAgICAgd2luLAorICAgICAgICh2b2lkICopIHdpbiwKICAgICAgICBfdHJhY2VjaHR5cGUyKDEsIGxzKSwKICAgICAgICBfdHJhY2VjaHR5cGUyKDIsIHJzKSwKICAgICAgICBfdHJhY2VjaHR5cGUyKDMsIHRzKSwKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfY2hnYXQuYyBiL25jdXJzZXMvYmFzZS9saWJfY2hnYXQuYwppbmRleCA4OWVlZmE3Li4xZWIxZjU5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2NoZ2F0LmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9jaGdhdC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDIsMTkgKzQyLDI3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2NoZ2F0LmMsdiAxLjcgMjAwNi8wNy8xNSAyMjowNzoxMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9jaGdhdC5jLHYgMS4xMCAyMDE0LzAyLzAxIDIyOjEzOjMxIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXdjaGdhdChXSU5ET1cgKndpbiwgaW50IG4sIGF0dHJfdCBhdHRyLCBzaG9ydCBjb2xvciwgY29uc3Qgdm9pZCAqb3B0cyBHQ0NfVU5VU0VEKQord2NoZ2F0KFdJTkRPVyAqd2luLAorICAgICAgIGludCBuLAorICAgICAgIGF0dHJfdCBhdHRyLAorICAgICAgIE5DVVJTRVNfUEFJUlNfVCBjb2xvciwKKyAgICAgICBjb25zdCB2b2lkICpvcHRzIEdDQ19VTlVTRUQpCiB7CiAgICAgaW50IGk7CiAKLSAgICBUKChUX0NBTExFRCgid2NoZ2F0KCVwLCVkLCVzLCVkKSIpLCB3aW4sIG4sIF90cmFjZWF0dHIoYXR0ciksIGNvbG9yKSk7CisgICAgVCgoVF9DQUxMRUQoIndjaGdhdCglcCwlZCwlcywlZCkiKSwKKyAgICAgICAodm9pZCAqKSB3aW4sCisgICAgICAgbiwKKyAgICAgICBfdHJhY2VhdHRyKGF0dHIpLAorICAgICAgIChpbnQpIGNvbG9yKSk7CiAKICAgICBpZiAod2luKSB7CiAJc3RydWN0IGxkYXQgKmxpbmUgPSAmKHdpbi0+X2xpbmVbd2luLT5fY3VyeV0pOwogCi0JdG9nZ2xlX2F0dHJfb24oYXR0ciwgQ09MT1JfUEFJUihjb2xvcikpOworCXRvZ2dsZV9hdHRyX29uKGF0dHIsIENvbG9yUGFpcihjb2xvcikpOwogCiAJZm9yIChpID0gd2luLT5fY3VyeDsgaSA8PSB3aW4tPl9tYXh4ICYmIChuID09IC0xIHx8IChuLS0gPiAwKSk7IGkrKykgewogCSAgICBTZXRBdHRyKGxpbmUtPnRleHRbaV0sIGF0dHIpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9jbGVhci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9jbGVhci5jCmluZGV4IGUwYjRlZGYuLjAwODc0NGMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfY2xlYXIuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2NsZWFyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxNCArNDAsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfY2xlYXIuYyx2IDEuNyAyMDAwLzEyLzEwIDAyOjQzOjI2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2NsZWFyLmMsdiAxLjggMjAwOS8xMC8yNCAyMjozMzoyOSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3Y2xlYXIoV0lORE9XICp3aW4pCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgid2NsZWFyKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgid2NsZWFyKCVwKSIpLCAodm9pZCAqKSB3aW4pKTsKIAogICAgIGlmICgoY29kZSA9IHdlcmFzZSh3aW4pKSAhPSBFUlIpCiAJd2luLT5fY2xlYXIgPSBUUlVFOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9jbGVhcm9rLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2NsZWFyb2suYwppbmRleCA5YjU2YmQxLi5mZmM3ZDAyIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2NsZWFyb2suYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2NsZWFyb2suYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDEyICs0MCwxMiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9jbGVhcm9rLmMsdiAxLjQgMjAwMC8xMi8xMCAwMjo0MzoyNiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9jbGVhcm9rLmMsdiAxLjUgMjAwOS8xMC8yNCAyMjozNDo1MyB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBjbGVhcm9rKFdJTkRPVyAqd2luLCBib29sIGZsYWcpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImNsZWFyb2soJXAsJWQpIiksIHdpbiwgZmxhZykpOworICAgIFQoKFRfQ0FMTEVEKCJjbGVhcm9rKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIGZsYWcpKTsKIAogICAgIGlmICh3aW4pIHsKIAl3aW4tPl9jbGVhciA9IGZsYWc7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2NscmJvdC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9jbHJib3QuYwppbmRleCBkZjE5NmU4Li5jYmYyMjA2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2NscmJvdC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfY2xyYm90LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxNCArNDAsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfY2xyYm90LmMsdiAxLjIwIDIwMDYvMTAvMTQgMjA6NDM6MzEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfY2xyYm90LmMsdiAxLjIxIDIwMDkvMTAvMjQgMjI6MzM6MTkgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2NscnRvYm90KFdJTkRPVyAqd2luKQogewogICAgIGludCBjb2RlID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoIndjbHJ0b2JvdCglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIndjbHJ0b2JvdCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAod2luKSB7CiAJTkNVUlNFU19TSVpFX1QgeTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfY2xyZW9sLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2NscmVvbC5jCmluZGV4IGM0NmViZDkuLjdhZmY4NGIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfY2xyZW9sLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9jbHJlb2wuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMTk5OSwyMDAwLDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9jbHJlb2wuYyx2IDEuMjEgMjAwMS8xMi8xOSAwMTowNjowNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9jbHJlb2wuYyx2IDEuMjIgMjAwOS8xMC8yNCAyMjozMzowNiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3Y2xydG9lb2woV0lORE9XICp3aW4pCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgid2NscnRvZW9sKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgid2NscnRvZW9sKCVwKSIpLCAodm9pZCAqKSB3aW4pKTsKIAogICAgIGlmICh3aW4pIHsKIAlOQ1VSU0VTX0NIX1QgYmxhbms7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2NvbG9yLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2NvbG9yLmMKaW5kZXggOWNhZTQ5NS4uMTMyMjYwMCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9jb2xvci5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfY29sb3IuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMwLDYgKzMwLDcgQEAKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogbGliX2NvbG9yLmMKQEAgLTM4LDEyICszOSwzMyBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotCi0jaW5jbHVkZSA8dGVybS5oPgogI2luY2x1ZGUgPHRpYy5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2NvbG9yLmMsdiAxLjg1IDIwMDcvMDQvMDcgMTc6MDc6MjggdG9tIEV4cCAkIikKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCiAKK01PRFVMRV9JRCgiJElkOiBsaWJfY29sb3IuYyx2IDEuMTEwIDIwMTQvMDMvMDggMjA6MDQ6NDQgdG9tIEV4cCAkIikKKworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorI2RlZmluZSBDYW5DaGFuZ2UgICAgICBJbmZvT2YoU1BfUEFSTSkuY2FuY2hhbmdlCisjZGVmaW5lIERlZmF1bHRQYWxldHRlIEluZm9PZihTUF9QQVJNKS5kZWZhdWx0UGFsZXR0ZQorI2RlZmluZSBIYXNDb2xvciAgICAgICBJbmZvT2YoU1BfUEFSTSkuaGFzY29sb3IKKyNkZWZpbmUgSW5pdENvbG9yICAgICAgSW5mb09mKFNQX1BBUk0pLmluaXRjb2xvcgorI2RlZmluZSBNYXhDb2xvcnMgICAgICBJbmZvT2YoU1BfUEFSTSkubWF4Y29sb3JzCisjZGVmaW5lIE1heFBhaXJzICAgICAgIEluZm9PZihTUF9QQVJNKS5tYXhwYWlycworI2RlZmluZSBVc2VIbHNQYWxldHRlICAoRGVmYXVsdFBhbGV0dGUgPT0gX25jX2hsc19wYWxldHRlKQorI2Vsc2UKKyNkZWZpbmUgQ2FuQ2hhbmdlICAgICAgY2FuX2NoYW5nZQorI2RlZmluZSBEZWZhdWx0UGFsZXR0ZSAoaHVlX2xpZ2h0bmVzc19zYXR1cmF0aW9uID8gaGxzX3BhbGV0dGUgOiBjZ2FfcGFsZXR0ZSkKKyNkZWZpbmUgSGFzQ29sb3IgICAgICAgaGFzX2NvbG9yCisjZGVmaW5lIEluaXRDb2xvciAgICAgIGluaXRpYWxpemVfY29sb3IKKyNkZWZpbmUgTWF4Q29sb3JzICAgICAgbWF4X2NvbG9ycworI2RlZmluZSBNYXhQYWlycyAgICAgICBtYXhfcGFpcnMKKyNkZWZpbmUgVXNlSGxzUGFsZXR0ZSAgKGh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbikKKyNlbmRpZgorCisjaWZuZGVmIFVTRV9URVJNX0RSSVZFUgogLyoKICAqIFRoZXNlIHNob3VsZCBiZSBzY3JlZW4gc3RydWN0dXJlIG1lbWJlcnMuICBUaGV5IG5lZWQgdG8gYmUgZ2xvYmFscyBmb3IKICAqIGhpc3RvcmljYWwgcmVhc29ucy4gIFNvIHdlIGFzc2lnbiB0aGVtIGluIHN0YXJ0X2NvbG9yKCkgYW5kIGFsc28gaW4KQEAgLTY0LDYgKzg2LDcgQEAKIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIENPTE9SX1BBSVJTID0gMDsKIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIENPTE9SUyA9IDA7CiAjZW5kaWYKKyNlbmRpZiAvKiAhVVNFX1RFUk1fRFJJVkVSICovCiAKICNkZWZpbmUgREFUQShyLGcsYikge3IsZyxiLCAwLDAsMCwgMH0KIApAQCAtNzEsNyArOTQsNyBAQAogCiAjZGVmaW5lIE1BWF9QQUxFVFRFCTgKIAotI2RlZmluZSBPa0NvbG9ySGkobikJKCgobikgPCBDT0xPUlMpICYmICgobikgPCBtYXhfY29sb3JzKSkKKyNkZWZpbmUgT2tDb2xvckhpKG4pCSgoKG4pIDwgQ09MT1JTKSAmJiAoKG4pIDwgbWF4Y29sb3JzKSkKICNkZWZpbmUgSW5QYWxldHRlKG4pCSgobikgPj0gMCAmJiAobikgPCBNQVhfUEFMRVRURSkKIAogLyoKQEAgLTEwNiwyOSArMTI5LDQzIEBACiAgICAgREFUQSgJMzAwLAk1MCwJMTAwKSwJCS8qIENPTE9SX0NZQU4gKi8KICAgICBEQVRBKAkwLAk1MCwJMTAwKSwJCS8qIENPTE9SX1dISVRFICovCiB9OworCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCitOQ1VSU0VTX0VYUE9SVF9WQVIoY29uc3QgY29sb3JfdCopIF9uY19jZ2FfcGFsZXR0ZSA9IGNnYV9wYWxldHRlOworTkNVUlNFU19FWFBPUlRfVkFSKGNvbnN0IGNvbG9yX3QqKSBfbmNfaGxzX3BhbGV0dGUgPSBobHNfcGFsZXR0ZTsKKyNlbmRpZgorCiAvKiAqSU5ERU5ULU9OKiAqLwogCisvKgorICogRW5zdXJlIHRoYXQgd2UgdXNlIGNvbG9yIHBhaXJzIG9ubHkgd2hlbiBjb2xvcnMgaGF2ZSBiZWVuIHN0YXJ0ZWQsIGFuZCBhbHNvCisgKiB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdGFibGUgd2hpY2ggd2UgYWxsb2NhdGVkLgorICovCisjZGVmaW5lIFZhbGlkUGFpcihwYWlyKSBcCisgICAgKChTUF9QQVJNICE9IDApICYmIChwYWlyID49IDApICYmIChwYWlyIDwgU1BfUEFSTS0+X3BhaXJfbGltaXQpICYmIFNQX1BBUk0tPl9jb2xvcm9uKQorCiAjaWYgTkNVUlNFU19FWFRfRlVOQ1MKIC8qCiAgKiBUaGVzZSBhcmUgY2FsbGVkIGZyb20gX25jX2RvX2NvbG9yKCksIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20KLSAqIHZpZGF0dHIgLSBzbyB3ZSBoYXZlIHRvIGFzc3VtZSB0aGF0IFNQIG1heSBiZSBudWxsLgorICogdmlkYXR0ciAtIHNvIHdlIGhhdmUgdG8gYXNzdW1lIHRoYXQgc3AgbWF5IGJlIG51bGwuCiAgKi8KIHN0YXRpYyBpbnQKLWRlZmF1bHRfZmcodm9pZCkKK2RlZmF1bHRfZmcoTkNVUlNFU19TUF9EQ0wwKQogewotICAgIHJldHVybiAoU1AgIT0gMCkgPyBTUC0+X2RlZmF1bHRfZmcgOiBDT0xPUl9XSElURTsKKyAgICByZXR1cm4gKFNQX1BBUk0gIT0gMCkgPyBTUF9QQVJNLT5fZGVmYXVsdF9mZyA6IENPTE9SX1dISVRFOwogfQogCiBzdGF0aWMgaW50Ci1kZWZhdWx0X2JnKHZvaWQpCitkZWZhdWx0X2JnKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICByZXR1cm4gU1AgIT0gMCA/IFNQLT5fZGVmYXVsdF9iZyA6IENPTE9SX0JMQUNLOworICAgIHJldHVybiBTUF9QQVJNICE9IDAgPyBTUF9QQVJNLT5fZGVmYXVsdF9iZyA6IENPTE9SX0JMQUNLOwogfQogI2Vsc2UKLSNkZWZpbmUgZGVmYXVsdF9mZygpIENPTE9SX1dISVRFCi0jZGVmaW5lIGRlZmF1bHRfYmcoKSBDT0xPUl9CTEFDSworI2RlZmluZSBkZWZhdWx0X2ZnKHNwKSBDT0xPUl9XSElURQorI2RlZmluZSBkZWZhdWx0X2JnKHNwKSBDT0xPUl9CTEFDSwogI2VuZGlmCiAKKyNpZm5kZWYgVVNFX1RFUk1fRFJJVkVSCiAvKgogICogU1ZyNCBjdXJzZXMgaXMga25vd24gdG8gaW50ZXJjaGFuZ2UgY29sb3IgY29kZXMgKDEsNCkgYW5kICgzLDYpLCBwb3NzaWJseQogICogdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIGEgcHJlLUFOU0kgc2NoZW1lLiAgVGhlIHNhbWUgc2NoZW1lIGlzCkBAIC0xNDUsNTIgKzE4Miw3MCBAQAogICAgIH0KICAgICByZXR1cm4gYzsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZAotc2V0X2JhY2tncm91bmRfY29sb3IoaW50IGJnLCBpbnQgKCpvdXRjKSAoaW50KSkKK3NldF9iYWNrZ3JvdW5kX2NvbG9yKE5DVVJTRVNfU1BfRENMeCBpbnQgYmcsIE5DVVJTRVNfU1BfT1VUQyBvdXRjKQogeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIENhbGxEcml2ZXJfMyhTUF9QQVJNLCB0ZF9jb2xvciwgRkFMU0UsIGJnLCBvdXRjKTsKKyNlbHNlCiAgICAgaWYgKHNldF9hX2JhY2tncm91bmQpIHsKIAlUUFVUU19UUkFDRSgic2V0X2FfYmFja2dyb3VuZCIpOwotCXRwdXRzKFRQQVJNXzEoc2V0X2FfYmFja2dyb3VuZCwgYmcpLCAxLCBvdXRjKTsKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQlUUEFSTV8xKHNldF9hX2JhY2tncm91bmQsIGJnKSwKKwkJCQkxLCBvdXRjKTsKICAgICB9IGVsc2UgewogCVRQVVRTX1RSQUNFKCJzZXRfYmFja2dyb3VuZCIpOwotCXRwdXRzKFRQQVJNXzEoc2V0X2JhY2tncm91bmQsIHRvZ2dsZWRfY29sb3JzKGJnKSksIDEsIG91dGMpOworCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCVRQQVJNXzEoc2V0X2JhY2tncm91bmQsIHRvZ2dsZWRfY29sb3JzKGJnKSksCisJCQkJMSwgb3V0Yyk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkCi1zZXRfZm9yZWdyb3VuZF9jb2xvcihpbnQgZmcsIGludCAoKm91dGMpIChpbnQpKQorc2V0X2ZvcmVncm91bmRfY29sb3IoTkNVUlNFU19TUF9EQ0x4IGludCBmZywgTkNVUlNFU19TUF9PVVRDIG91dGMpCiB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgQ2FsbERyaXZlcl8zKFNQX1BBUk0sIHRkX2NvbG9yLCBUUlVFLCBmZywgb3V0Yyk7CisjZWxzZQogICAgIGlmIChzZXRfYV9mb3JlZ3JvdW5kKSB7CiAJVFBVVFNfVFJBQ0UoInNldF9hX2ZvcmVncm91bmQiKTsKLQl0cHV0cyhUUEFSTV8xKHNldF9hX2ZvcmVncm91bmQsIGZnKSwgMSwgb3V0Yyk7CisJTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJVFBBUk1fMShzZXRfYV9mb3JlZ3JvdW5kLCBmZyksCisJCQkJMSwgb3V0Yyk7CiAgICAgfSBlbHNlIHsKIAlUUFVUU19UUkFDRSgic2V0X2ZvcmVncm91bmQiKTsKLQl0cHV0cyhUUEFSTV8xKHNldF9mb3JlZ3JvdW5kLCB0b2dnbGVkX2NvbG9ycyhmZykpLCAxLCBvdXRjKTsKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQlUUEFSTV8xKHNldF9mb3JlZ3JvdW5kLCB0b2dnbGVkX2NvbG9ycyhmZykpLAorCQkJCTEsIG91dGMpOwogICAgIH0KKyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZAotaW5pdF9jb2xvcl90YWJsZSh2b2lkKQoraW5pdF9jb2xvcl90YWJsZShOQ1VSU0VTX1NQX0RDTDApCiB7Ci0gICAgY29uc3QgY29sb3JfdCAqdHA7CisgICAgY29uc3QgY29sb3JfdCAqdHAgPSBEZWZhdWx0UGFsZXR0ZTsKICAgICBpbnQgbjsKIAotICAgIHRwID0gKGh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbikgPyBobHNfcGFsZXR0ZSA6IGNnYV9wYWxldHRlOworICAgIGFzc2VydCh0cCAhPSAwKTsKKwogICAgIGZvciAobiA9IDA7IG4gPCBDT0xPUlM7IG4rKykgewogCWlmIChJblBhbGV0dGUobikpIHsKLQkgICAgU1AtPl9jb2xvcl90YWJsZVtuXSA9IHRwW25dOworCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0gPSB0cFtuXTsKIAl9IGVsc2UgewotCSAgICBTUC0+X2NvbG9yX3RhYmxlW25dID0gdHBbbiAlIE1BWF9QQUxFVFRFXTsKLQkgICAgaWYgKGh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbikgewotCQlTUC0+X2NvbG9yX3RhYmxlW25dLmdyZWVuID0gMTAwOworCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0gPSB0cFtuICUgTUFYX1BBTEVUVEVdOworCSAgICBpZiAoVXNlSGxzUGFsZXR0ZSkgeworCQlTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0uZ3JlZW4gPSAxMDA7CiAJICAgIH0gZWxzZSB7Ci0JCWlmIChTUC0+X2NvbG9yX3RhYmxlW25dLnJlZCkKLQkJICAgIFNQLT5fY29sb3JfdGFibGVbbl0ucmVkID0gMTAwMDsKLQkJaWYgKFNQLT5fY29sb3JfdGFibGVbbl0uZ3JlZW4pCi0JCSAgICBTUC0+X2NvbG9yX3RhYmxlW25dLmdyZWVuID0gMTAwMDsKLQkJaWYgKFNQLT5fY29sb3JfdGFibGVbbl0uYmx1ZSkKLQkJICAgIFNQLT5fY29sb3JfdGFibGVbbl0uYmx1ZSA9IDEwMDA7CisJCWlmIChTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0ucmVkKQorCQkgICAgU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLnJlZCA9IDEwMDA7CisJCWlmIChTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0uZ3JlZW4pCisJCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0uZ3JlZW4gPSAxMDAwOworCQlpZiAoU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLmJsdWUpCisJCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbbl0uYmx1ZSA9IDEwMDA7CiAJICAgIH0KIAl9CiAgICAgfQpAQCAtMjAwLDE2ICsyNTUsMjAgQEAKICAqIFJlc2V0IHRoZSBjb2xvciBwYWlyLCBlLmcuLCB0byB3aGF0ZXZlciBjb2xvciBwYWlyIDAgaXMuCiAgKi8KIHN0YXRpYyBib29sCi1yZXNldF9jb2xvcl9wYWlyKHZvaWQpCityZXNldF9jb2xvcl9wYWlyKE5DVVJTRVNfU1BfRENMMCkKIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICByZXR1cm4gQ2FsbERyaXZlcihTUF9QQVJNLCB0ZF9yZXNjb2wpOworI2Vsc2UKICAgICBib29sIHJlc3VsdCA9IEZBTFNFOwogCisgICAgKHZvaWQpIFNQX1BBUk07CiAgICAgaWYgKG9yaWdfcGFpciAhPSAwKSB7Ci0JVFBVVFNfVFJBQ0UoIm9yaWdfcGFpciIpOwotCXB1dHAob3JpZ19wYWlyKTsKKwkodm9pZCkgTkNVUlNFU19QVVRQMigib3JpZ19wYWlyIiwgb3JpZ19wYWlyKTsKIAlyZXN1bHQgPSBUUlVFOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCiB9CiAKIC8qCkBAIC0yMTcsNjUgKzI3Niw5OSBAQAogICogYmFkbHktd3JpdHRlbiB0ZXJtaW5hbCBkZXNjcmlwdGlvbnMgdGhhbiBmb3IgdGhlIHJlbGF0aXZlbHkgcmFyZSBjYXNlIHdoZXJlCiAgKiBzb21lb25lIGhhcyBjaGFuZ2VkIHRoZSBjb2xvciBkZWZpbml0aW9ucy4KICAqLwotYm9vbAotX25jX3Jlc2V0X2NvbG9ycyh2b2lkKQorTkNVUlNFU19FWFBPUlQoYm9vbCkKK05DVVJTRVNfU1BfTkFNRShfbmNfcmVzZXRfY29sb3JzKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXN1bHQgPSBGQUxTRTsKIAotICAgIFQoKFRfQ0FMTEVEKCJfbmNfcmVzZXRfY29sb3JzKCkiKSkpOwotICAgIGlmIChTUC0+X2NvbG9yX2RlZnMgPiAwKQotCVNQLT5fY29sb3JfZGVmcyA9IC0oU1AtPl9jb2xvcl9kZWZzKTsKLQotICAgIGlmIChyZXNldF9jb2xvcl9wYWlyKCkpCisgICAgVCgoVF9DQUxMRUQoIl9uY19yZXNldF9jb2xvcnMoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICBpZiAoU1BfUEFSTS0+X2NvbG9yX2RlZnMgPiAwKQorCVNQX1BBUk0tPl9jb2xvcl9kZWZzID0gLShTUF9QQVJNLT5fY29sb3JfZGVmcyk7CisgICAgaWYgKHJlc2V0X2NvbG9yX3BhaXIoTkNVUlNFU19TUF9BUkcpKQogCXJlc3VsdCA9IFRSVUU7CisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICByZXN1bHQgPSBDYWxsRHJpdmVyKFNQX1BBUk0sIHRkX3Jlc2NvbG9ycyk7CisjZWxzZQogICAgIGlmIChvcmlnX2NvbG9ycyAhPSAwKSB7Ci0JVFBVVFNfVFJBQ0UoIm9yaWdfY29sb3JzIik7Ci0JcHV0cChvcmlnX2NvbG9ycyk7CisJTkNVUlNFU19QVVRQMigib3JpZ19jb2xvcnMiLCBvcmlnX2NvbG9ycyk7CiAJcmVzdWx0ID0gVFJVRTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm5Cb29sKHJlc3VsdCk7CiB9CiAKLU5DVVJTRVNfRVhQT1JUKGludCkKLXN0YXJ0X2NvbG9yKHZvaWQpCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoYm9vbCkKK19uY19yZXNldF9jb2xvcnModm9pZCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gRVJSOwotCi0gICAgVCgoVF9DQUxMRUQoInN0YXJ0X2NvbG9yKCkiKSkpOwotCi0gICAgaWYgKFNQID09IDApIHsKLQlyZXN1bHQgPSBFUlI7Ci0gICAgfSBlbHNlIGlmIChTUC0+X2NvbG9yb24pIHsKLQlyZXN1bHQgPSBPSzsKLSAgICB9IGVsc2UgewotCi0JaWYgKHJlc2V0X2NvbG9yX3BhaXIoKSAhPSBUUlVFKSB7Ci0JICAgIHNldF9mb3JlZ3JvdW5kX2NvbG9yKGRlZmF1bHRfZmcoKSwgX25jX291dGNoKTsKLQkgICAgc2V0X2JhY2tncm91bmRfY29sb3IoZGVmYXVsdF9iZygpLCBfbmNfb3V0Y2gpOwotCX0KLQotCWlmIChtYXhfcGFpcnMgPiAwICYmIG1heF9jb2xvcnMgPiAwKSB7Ci0JICAgIFNQLT5fcGFpcl9jb3VudCA9IG1heF9wYWlyczsKLQkgICAgU1AtPl9jb2xvcl9jb3VudCA9IG1heF9jb2xvcnM7Ci0jaWYgIVVTRV9SRUVOVFJBTlQKLQkgICAgQ09MT1JfUEFJUlMgPSBtYXhfcGFpcnM7Ci0JICAgIENPTE9SUyA9IG1heF9jb2xvcnM7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfcmVzZXRfY29sb3JzKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQogI2VuZGlmCiAKLQkgICAgaWYgKChTUC0+X2NvbG9yX3BhaXJzID0gVFlQRV9DQUxMT0MoY29sb3JwYWlyX3QsCi0JCQkJCQltYXhfcGFpcnMpKSAhPSAwKSB7Ci0JCWlmICgoU1AtPl9jb2xvcl90YWJsZSA9IFRZUEVfQ0FMTE9DKGNvbG9yX3QsCi0JCQkJCQkgICAgbWF4X2NvbG9ycykpICE9IDApIHsKLQkJICAgIFNQLT5fY29sb3JfcGFpcnNbMF0gPSBQQUlSX09GKGRlZmF1bHRfZmcoKSwgZGVmYXVsdF9iZygpKTsKLQkJICAgIGluaXRfY29sb3JfdGFibGUoKTsKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzdGFydF9jb2xvcikgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gRVJSOworICAgIGludCBtYXhwYWlycyA9IDAsIG1heGNvbG9ycyA9IDA7CisKKyAgICBUKChUX0NBTExFRCgic3RhcnRfY29sb3IoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmIChTUF9QQVJNID09IDApIHsKKwlyZXN1bHQgPSBFUlI7CisgICAgfSBlbHNlIGlmIChTUF9QQVJNLT5fY29sb3JvbikgeworCXJlc3VsdCA9IE9LOworICAgIH0gZWxzZSB7CisJbWF4cGFpcnMgPSBNYXhQYWlyczsKKwltYXhjb2xvcnMgPSBNYXhDb2xvcnM7CisJaWYgKHJlc2V0X2NvbG9yX3BhaXIoTkNVUlNFU19TUF9BUkcpICE9IFRSVUUpIHsKKwkgICAgc2V0X2ZvcmVncm91bmRfY29sb3IoTkNVUlNFU19TUF9BUkd4CisJCQkJIGRlZmF1bHRfZmcoTkNVUlNFU19TUF9BUkcpLAorCQkJCSBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CisJICAgIHNldF9iYWNrZ3JvdW5kX2NvbG9yKE5DVVJTRVNfU1BfQVJHeAorCQkJCSBkZWZhdWx0X2JnKE5DVVJTRVNfU1BfQVJHKSwKKwkJCQkgTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOworCX0KKyNpZiAhTkNVUlNFU19FWFRfQ09MT1JTCisJLyoKKwkgKiBXaXRob3V0IGV4dC1jb2xvcnMsIHdlIGNhbm5vdCByZXByZXNlbnQgbW9yZSB0aGFuIDI1NiBjb2xvciBwYWlycy4KKwkgKi8KKwlpZiAobWF4cGFpcnMgPiAyNTYpCisJICAgIG1heHBhaXJzID0gMjU2OworI2VuZGlmCisKKwlpZiAobWF4cGFpcnMgPiAwICYmIG1heGNvbG9ycyA+IDApIHsKKwkgICAgU1BfUEFSTS0+X3BhaXJfbGltaXQgPSBtYXhwYWlyczsKKworI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCisJICAgIC8qCisJICAgICAqIElmIHVzaW5nIGRlZmF1bHQgY29sb3JzLCBhbGxvY2F0ZSBleHRyYSBzcGFjZSBpbiB0YWJsZSB0bworCSAgICAgKiBhbGxvdyBmb3IgZGVmYXVsdC1jb2xvciBhcyBhIGNvbXBvbmVudCBvZiBhIGNvbG9yLXBhaXIuCisJICAgICAqLworCSAgICBTUF9QQVJNLT5fcGFpcl9saW1pdCArPSAoMSArICgyICogbWF4Y29sb3JzKSk7CisjZW5kaWYKKwkgICAgU1BfUEFSTS0+X3BhaXJfY291bnQgPSBtYXhwYWlyczsKKwkgICAgU1BfUEFSTS0+X2NvbG9yX2NvdW50ID0gbWF4Y29sb3JzOworI2lmICFVU0VfUkVFTlRSQU5UCisJICAgIENPTE9SX1BBSVJTID0gbWF4cGFpcnM7CisJICAgIENPTE9SUyA9IG1heGNvbG9yczsKKyNlbmRpZgorCisJICAgIFNQX1BBUk0tPl9jb2xvcl9wYWlycyA9IFRZUEVfQ0FMTE9DKGNvbG9ycGFpcl90LCBTUF9QQVJNLT5fcGFpcl9saW1pdCk7CisJICAgIGlmIChTUF9QQVJNLT5fY29sb3JfcGFpcnMgIT0gMCkgeworCQlTUF9QQVJNLT5fY29sb3JfdGFibGUgPSBUWVBFX0NBTExPQyhjb2xvcl90LCBtYXhjb2xvcnMpOworCQlpZiAoU1BfUEFSTS0+X2NvbG9yX3RhYmxlICE9IDApIHsKKwkJICAgIFNQX1BBUk0tPl9jb2xvcl9wYWlyc1swXSA9IFBBSVJfT0YoZGVmYXVsdF9mZyhOQ1VSU0VTX1NQX0FSRyksCisJCQkJCQkgICAgICAgZGVmYXVsdF9iZyhOQ1VSU0VTX1NQX0FSRykpOworCQkgICAgaW5pdF9jb2xvcl90YWJsZShOQ1VSU0VTX1NQX0FSRyk7CiAKIAkJICAgIFQoKCJzdGFydGVkIGNvbG9yOiBDT0xPUlMgPSAlZCwgQ09MT1JfUEFJUlMgPSAlZCIsCiAJCSAgICAgICBDT0xPUlMsIENPTE9SX1BBSVJTKSk7CiAKLQkJICAgIFNQLT5fY29sb3JvbiA9IDE7CisJCSAgICBTUF9QQVJNLT5fY29sb3JvbiA9IDE7CiAJCSAgICByZXN1bHQgPSBPSzsKLQkJfSBlbHNlIGlmIChTUC0+X2NvbG9yX3BhaXJzICE9IDApIHsKLQkJICAgIEZyZWVBbmROdWxsKFNQLT5fY29sb3JfcGFpcnMpOworCQl9IGVsc2UgaWYgKFNQX1BBUk0tPl9jb2xvcl9wYWlycyAhPSAwKSB7CisJCSAgICBGcmVlQW5kTnVsbChTUF9QQVJNLT5fY29sb3JfcGFpcnMpOwogCQl9CiAJICAgIH0KIAl9IGVsc2UgewpAQCAtMjg1LDEyICszNzgsMjAgQEAKICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitzdGFydF9jb2xvcih2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoc3RhcnRfY29sb3IpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogLyogVGhpcyBmdW5jdGlvbiB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IERhbmllbCBXZWF2ZXIgPGRhbndAem55eC5jb20+ICovCiBzdGF0aWMgdm9pZAotcmdiMmhscyhzaG9ydCByLCBzaG9ydCBnLCBzaG9ydCBiLCBzaG9ydCAqaCwgc2hvcnQgKmwsIHNob3J0ICpzKQorcmdiMmhscyhpbnQgciwgaW50IGcsIGludCBiLCBOQ1VSU0VTX0NPTE9SX1QgKmgsIE5DVVJTRVNfQ09MT1JfVCAqbCwgTkNVUlNFU19DT0xPUl9UICpzKQogLyogY29udmVydCBSR0IgdG8gSExTIHN5c3RlbSAqLwogewotICAgIHNob3J0IG1pbiwgbWF4LCB0OworICAgIGludCBtaW4sIG1heCwgdDsKIAogICAgIGlmICgobWluID0gZyA8IHIgPyBnIDogcikgPiBiKQogCW1pbiA9IGI7CkBAIC0yOTgsNyArMzk5LDcgQEAKIAltYXggPSBiOwogCiAgICAgLyogY2FsY3VsYXRlIGxpZ2h0bmVzcyAqLwotICAgICpsID0gKG1pbiArIG1heCkgLyAyMDsKKyAgICAqbCA9IChOQ1VSU0VTX0NPTE9SX1QpICgobWluICsgbWF4KSAvIDIwKTsKIAogICAgIGlmIChtaW4gPT0gbWF4KSB7CQkvKiBibGFjaywgd2hpdGUgYW5kIGFsbCBzaGFkZXMgb2YgZ3JheSAqLwogCSpoID0gMDsKQEAgLTMwOCwxOSArNDA5LDE5IEBACiAKICAgICAvKiBjYWxjdWxhdGUgc2F0dXJhdGlvbiAqLwogICAgIGlmICgqbCA8IDUwKQotCSpzID0gKChtYXggLSBtaW4pICogMTAwKSAvIChtYXggKyBtaW4pOworCSpzID0gKE5DVVJTRVNfQ09MT1JfVCkgKCgobWF4IC0gbWluKSAqIDEwMCkgLyAobWF4ICsgbWluKSk7CiAgICAgZWxzZQotCSpzID0gKChtYXggLSBtaW4pICogMTAwKSAvICgyMDAwIC0gbWF4IC0gbWluKTsKKwkqcyA9IChOQ1VSU0VTX0NPTE9SX1QpICgoKG1heCAtIG1pbikgKiAxMDApIC8gKDIwMDAgLSBtYXggLSBtaW4pKTsKIAogICAgIC8qIGNhbGN1bGF0ZSBodWUgKi8KICAgICBpZiAociA9PSBtYXgpCi0JdCA9IDEyMCArICgoZyAtIGIpICogNjApIC8gKG1heCAtIG1pbik7CisJdCA9IChOQ1VSU0VTX0NPTE9SX1QpICgxMjAgKyAoKGcgLSBiKSAqIDYwKSAvIChtYXggLSBtaW4pKTsKICAgICBlbHNlIGlmIChnID09IG1heCkKLQl0ID0gMjQwICsgKChiIC0gcikgKiA2MCkgLyAobWF4IC0gbWluKTsKKwl0ID0gKE5DVVJTRVNfQ09MT1JfVCkgKDI0MCArICgoYiAtIHIpICogNjApIC8gKG1heCAtIG1pbikpOwogICAgIGVsc2UKLQl0ID0gMzYwICsgKChyIC0gZykgKiA2MCkgLyAobWF4IC0gbWluKTsKKwl0ID0gKE5DVVJTRVNfQ09MT1JfVCkgKDM2MCArICgociAtIGcpICogNjApIC8gKG1heCAtIG1pbikpOwogCi0gICAgKmggPSB0ICUgMzYwOworICAgICpoID0gKE5DVVJTRVNfQ09MT1JfVCkgKHQgJSAzNjApOwogfQogCiAvKgpAQCAtMzI4LDMxICs0MjksOTAgQEAKICAqIHZhbHVlcy4KICAqLwogTkNVUlNFU19FWFBPUlQoaW50KQotaW5pdF9wYWlyKHNob3J0IHBhaXIsIHNob3J0IGYsIHNob3J0IGIpCitOQ1VSU0VTX1NQX05BTUUoaW5pdF9wYWlyKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICAgTkNVUlNFU19QQUlSU19UIHBhaXIsCisJCQkgICAgTkNVUlNFU19DT0xPUl9UIGYsCisJCQkgICAgTkNVUlNFU19DT0xPUl9UIGIpCiB7CiAgICAgY29sb3JwYWlyX3QgcmVzdWx0OworICAgIGNvbG9ycGFpcl90IHByZXZpb3VzOworICAgIGludCBtYXhjb2xvcnM7CiAKLSAgICBUKChUX0NBTExFRCgiaW5pdF9wYWlyKCVkLCVkLCVkKSIpLCBwYWlyLCBmLCBiKSk7CisgICAgVCgoVF9DQUxMRUQoImluaXRfcGFpciglcCwlZCwlZCwlZCkiKSwKKyAgICAgICAodm9pZCAqKSBTUF9QQVJNLAorICAgICAgIChpbnQpIHBhaXIsCisgICAgICAgKGludCkgZiwKKyAgICAgICAoaW50KSBiKSk7CiAKLSAgICBpZiAoKHBhaXIgPCAwKSB8fCAocGFpciA+PSBDT0xPUl9QQUlSUykgfHwgU1AgPT0gMCB8fCAhU1AtPl9jb2xvcm9uKQorICAgIGlmICghVmFsaWRQYWlyKHBhaXIpKQogCXJldHVybkNvZGUoRVJSKTsKKworICAgIG1heGNvbG9ycyA9IE1heENvbG9yczsKKworICAgIHByZXZpb3VzID0gU1BfUEFSTS0+X2NvbG9yX3BhaXJzW3BhaXJdOwogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCi0gICAgaWYgKFNQLT5fZGVmYXVsdF9jb2xvcikgewotCWlmIChmIDwgMCkKKyAgICBpZiAoU1BfUEFSTS0+X2RlZmF1bHRfY29sb3IgfHwgU1BfUEFSTS0+X2Fzc3VtZWRfY29sb3IpIHsKKwlib29sIGlzRGVmYXVsdCA9IEZBTFNFOworCWJvb2wgd2FzRGVmYXVsdCA9IEZBTFNFOworCWludCBkZWZhdWx0X3BhaXJzID0gU1BfUEFSTS0+X2RlZmF1bHRfcGFpcnM7CisKKwkvKgorCSAqIE1hcCBjYWxsZXIncyBjb2xvciBudW1iZXIsIGUuZy4sIC0xLCAwLCAxLCAuLiwgNywgZXRjLiwgaW50bworCSAqIGludGVybmFsIHVuc2lnbmVkIHZhbHVlcyB3aGljaCB3ZSB3aWxsIHN0b3JlIGluIHRoZSBfY29sb3JfcGFpcnNbXQorCSAqIHRhYmxlLgorCSAqLworCWlmIChpc0RlZmF1bHRDb2xvcihmKSkgewogCSAgICBmID0gQ09MT1JfREVGQVVMVDsKLQlpZiAoYiA8IDApCisJICAgIGlzRGVmYXVsdCA9IFRSVUU7CisJfSBlbHNlIGlmICghT2tDb2xvckhpKGYpKSB7CisJICAgIHJldHVybkNvZGUoRVJSKTsKKwl9CisKKwlpZiAoaXNEZWZhdWx0Q29sb3IoYikpIHsKIAkgICAgYiA9IENPTE9SX0RFRkFVTFQ7Ci0JaWYgKCFPa0NvbG9ySGkoZikgJiYgIWlzRGVmYXVsdENvbG9yKGYpKQorCSAgICBpc0RlZmF1bHQgPSBUUlVFOworCX0gZWxzZSBpZiAoIU9rQ29sb3JIaShiKSkgewogCSAgICByZXR1cm5Db2RlKEVSUik7Ci0JaWYgKCFPa0NvbG9ySGkoYikgJiYgIWlzRGVmYXVsdENvbG9yKGIpKQorCX0KKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHRhYmxlIGVudHJ5IHRoYXQgd2UgYXJlIGdvaW5nIHRvIGluaXQvdXBkYXRlIHVzZWQKKwkgKiBkZWZhdWx0IGNvbG9ycy4KKwkgKi8KKwlpZiAoKEZPUkVfT0YocHJldmlvdXMpID09IENPTE9SX0RFRkFVTFQpCisJICAgIHx8IChCQUNLX09GKHByZXZpb3VzKSA9PSBDT0xPUl9ERUZBVUxUKSkKKwkgICAgd2FzRGVmYXVsdCA9IFRSVUU7CisKKwkvKgorCSAqIEtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBjb2xvciBwYWlyIHRhYmxlIHdoaWNoCisJICogdXNlZCBhIGRlZmF1bHQgY29sb3IuCisJICovCisJaWYgKGlzRGVmYXVsdCAmJiAhd2FzRGVmYXVsdCkgeworCSAgICArK2RlZmF1bHRfcGFpcnM7CisJfSBlbHNlIGlmICh3YXNEZWZhdWx0ICYmICFpc0RlZmF1bHQpIHsKKwkgICAgLS1kZWZhdWx0X3BhaXJzOworCX0KKworCS8qCisJICogQXMgYW4gZXh0ZW5zaW9uLCBuY3Vyc2VzIGFsbG93cyB0aGUgcGFpciBudW1iZXIgdG8gZXhjZWVkIHRoZQorCSAqIHRlcm1pbmFsJ3MgY29sb3JfcGFpcnMgdmFsdWUgZm9yIHBhaXJzIHVzaW5nIGEgZGVmYXVsdCBjb2xvci4KKwkgKgorCSAqIE5vdGUgdGhhdCB1cGRhdGluZyBhIHBhaXIgd2hpY2ggdXNlZCBhIGRlZmF1bHQgY29sb3Igd2l0aCBvbmUKKwkgKiB0aGF0IGRvZXMgbm90IHdpbGwgZGVjcmVtZW50IHRoZSBjb3VudCAtIGFuZCBwb3NzaWJseSBpbnRlcmZlcmUKKwkgKiB3aXRoIHNlcXVlbnRpYWxseSBhZGRpbmcgbmV3IHBhaXJzLgorCSAqLworCWlmIChwYWlyID4gKFNQX1BBUk0tPl9wYWlyX2NvdW50ICsgZGVmYXVsdF9wYWlycykpIHsKIAkgICAgcmV0dXJuQ29kZShFUlIpOworCX0KKwlTUF9QQVJNLT5fZGVmYXVsdF9wYWlycyA9IGRlZmF1bHRfcGFpcnM7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICB7CiAJaWYgKChmIDwgMCkgfHwgIU9rQ29sb3JIaShmKQogCSAgICB8fCAoYiA8IDApIHx8ICFPa0NvbG9ySGkoYikKLQkgICAgfHwgKHBhaXIgPCAxKSkKKwkgICAgfHwgKHBhaXIgPCAxKSkgewogCSAgICByZXR1cm5Db2RlKEVSUik7CisJfQogICAgIH0KIAogICAgIC8qCkBAIC0zNjEsMTQgKzUyMSwxNCBAQAogICAgICAqIHBhaXIgY29sb3JzIHdpdGggdGhlIG5ldyBvbmVzKS4KICAgICAgKi8KICAgICByZXN1bHQgPSBQQUlSX09GKGYsIGIpOwotICAgIGlmIChTUC0+X2NvbG9yX3BhaXJzW3BhaXJdICE9IDAKLQkmJiBTUC0+X2NvbG9yX3BhaXJzW3BhaXJdICE9IHJlc3VsdCkgeworICAgIGlmIChwcmV2aW91cyAhPSAwCisJJiYgcHJldmlvdXMgIT0gcmVzdWx0KSB7CiAJaW50IHksIHg7CiAKLQlmb3IgKHkgPSAwOyB5IDw9IGN1cnNjci0+X21heHk7IHkrKykgewotCSAgICBzdHJ1Y3QgbGRhdCAqcHRyID0gJihjdXJzY3ItPl9saW5lW3ldKTsKKwlmb3IgKHkgPSAwOyB5IDw9IEN1clNjcmVlbihTUF9QQVJNKS0+X21heHk7IHkrKykgeworCSAgICBzdHJ1Y3QgbGRhdCAqcHRyID0gJihDdXJTY3JlZW4oU1BfUEFSTSktPl9saW5lW3ldKTsKIAkgICAgYm9vbCBjaGFuZ2VkID0gRkFMU0U7Ci0JICAgIGZvciAoeCA9IDA7IHggPD0gY3Vyc2NyLT5fbWF4eDsgeCsrKSB7CisJICAgIGZvciAoeCA9IDA7IHggPD0gQ3VyU2NyZWVuKFNQX1BBUk0pLT5fbWF4eDsgeCsrKSB7CiAJCWlmIChHZXRQYWlyKHB0ci0+dGV4dFt4XSkgPT0gcGFpcikgewogCQkgICAgLyogU2V0IHRoZSBvbGQgY2VsbCB0byB6ZXJvIHRvIGVuc3VyZSBpdCB3aWxsIGJlCiAJCSAgICAgICB1cGRhdGVkIG9uIHRoZSBuZXh0IGRvdXBkYXRlKCkgKi8KQEAgLTM3OCwxMDIgKzUzOCwxOTYgQEAKIAkJfQogCSAgICB9CiAJICAgIGlmIChjaGFuZ2VkKQotCQlfbmNfbWFrZV9vbGRoYXNoKHkpOworCQlOQ1VSU0VTX1NQX05BTUUoX25jX21ha2Vfb2xkaGFzaCkgKE5DVVJTRVNfU1BfQVJHeCB5KTsKIAl9CiAgICAgfQotICAgIFNQLT5fY29sb3JfcGFpcnNbcGFpcl0gPSByZXN1bHQ7Ci0gICAgaWYgKEdFVF9TQ1JFRU5fUEFJUihTUCkgPT0gcGFpcikKLQlTRVRfU0NSRUVOX1BBSVIoU1AsIChjaHR5cGUpICh+MCkpOwkvKiBmb3JjZSBhdHRyaWJ1dGUgdXBkYXRlICovCiAKKyAgICBTUF9QQVJNLT5fY29sb3JfcGFpcnNbcGFpcl0gPSByZXN1bHQ7CisgICAgaWYgKEdFVF9TQ1JFRU5fUEFJUihTUF9QQVJNKSA9PSBwYWlyKQorCVNFVF9TQ1JFRU5fUEFJUihTUF9QQVJNLCAoY2h0eXBlKSAofjApKTsJLyogZm9yY2UgYXR0cmlidXRlIHVwZGF0ZSAqLworCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgQ2FsbERyaXZlcl8zKFNQX1BBUk0sIHRkX2luaXRwYWlyLCBwYWlyLCBmLCBiKTsKKyNlbHNlCiAgICAgaWYgKGluaXRpYWxpemVfcGFpciAmJiBJblBhbGV0dGUoZikgJiYgSW5QYWxldHRlKGIpKSB7Ci0JY29uc3QgY29sb3JfdCAqdHAgPSBodWVfbGlnaHRuZXNzX3NhdHVyYXRpb24gPyBobHNfcGFsZXR0ZSA6IGNnYV9wYWxldHRlOworCWNvbnN0IGNvbG9yX3QgKnRwID0gRGVmYXVsdFBhbGV0dGU7CiAKIAlUUihUUkFDRV9BVFRSUywKIAkgICAoImluaXRpYWxpemluZyBwYWlyOiBwYWlyID0gJWQsIGZnPSglZCwlZCwlZCksIGJnPSglZCwlZCwlZCkiLAotCSAgICBwYWlyLAotCSAgICB0cFtmXS5yZWQsIHRwW2ZdLmdyZWVuLCB0cFtmXS5ibHVlLAotCSAgICB0cFtiXS5yZWQsIHRwW2JdLmdyZWVuLCB0cFtiXS5ibHVlKSk7CisJICAgIChpbnQpIHBhaXIsCisJICAgIChpbnQpIHRwW2ZdLnJlZCwgKGludCkgdHBbZl0uZ3JlZW4sIChpbnQpIHRwW2ZdLmJsdWUsCisJICAgIChpbnQpIHRwW2JdLnJlZCwgKGludCkgdHBbYl0uZ3JlZW4sIChpbnQpIHRwW2JdLmJsdWUpKTsKIAotCVRQVVRTX1RSQUNFKCJpbml0aWFsaXplX3BhaXIiKTsKLQlwdXRwKFRQQVJNXzcoaW5pdGlhbGl6ZV9wYWlyLAotCQkgICAgIHBhaXIsCi0JCSAgICAgdHBbZl0ucmVkLCB0cFtmXS5ncmVlbiwgdHBbZl0uYmx1ZSwKLQkJICAgICB0cFtiXS5yZWQsIHRwW2JdLmdyZWVuLCB0cFtiXS5ibHVlKSk7CisJTkNVUlNFU19QVVRQMigiaW5pdGlhbGl6ZV9wYWlyIiwKKwkJICAgICAgVFBBUk1fNyhpbml0aWFsaXplX3BhaXIsCisJCQkgICAgICBwYWlyLAorCQkJICAgICAgKGludCkgdHBbZl0ucmVkLAorCQkJICAgICAgKGludCkgdHBbZl0uZ3JlZW4sCisJCQkgICAgICAoaW50KSB0cFtmXS5ibHVlLAorCQkJICAgICAgKGludCkgdHBbYl0ucmVkLAorCQkJICAgICAgKGludCkgdHBbYl0uZ3JlZW4sCisJCQkgICAgICAoaW50KSB0cFtiXS5ibHVlKSk7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK2luaXRfcGFpcihOQ1VSU0VTX0NPTE9SX1QgcGFpciwgTkNVUlNFU19DT0xPUl9UIGYsIE5DVVJTRVNfQ09MT1JfVCBiKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaW5pdF9wYWlyKSAoQ1VSUkVOVF9TQ1JFRU4sIHBhaXIsIGYsIGIpOworfQorI2VuZGlmCisKICNkZWZpbmUgb2tSR0IobikgKChuKSA+PSAwICYmIChuKSA8PSAxMDAwKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1pbml0X2NvbG9yKHNob3J0IGNvbG9yLCBzaG9ydCByLCBzaG9ydCBnLCBzaG9ydCBiKQorTkNVUlNFU19TUF9OQU1FKGluaXRfY29sb3IpIChOQ1VSU0VTX1NQX0RDTHgKKwkJCSAgICAgTkNVUlNFU19DT0xPUl9UIGNvbG9yLAorCQkJICAgICBOQ1VSU0VTX0NPTE9SX1QgciwKKwkJCSAgICAgTkNVUlNFU19DT0xPUl9UIGcsCisJCQkgICAgIE5DVVJTRVNfQ09MT1JfVCBiKQogewogICAgIGludCByZXN1bHQgPSBFUlI7CisgICAgaW50IG1heGNvbG9yczsKIAotICAgIFQoKFRfQ0FMTEVEKCJpbml0X2NvbG9yKCVkLCVkLCVkLCVkKSIpLCBjb2xvciwgciwgZywgYikpOworICAgIFQoKFRfQ0FMTEVEKCJpbml0X2NvbG9yKCVwLCVkLCVkLCVkLCVkKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sCisgICAgICAgY29sb3IsCisgICAgICAgciwgZywgYikpOwogCi0gICAgaWYgKGluaXRpYWxpemVfY29sb3IgIT0gTlVMTAotCSYmIFNQICE9IDAKLQkmJiBTUC0+X2NvbG9yb24KKyAgICBpZiAoU1BfUEFSTSA9PSAwKQorCXJldHVybkNvZGUocmVzdWx0KTsKKworICAgIG1heGNvbG9ycyA9IE1heENvbG9yczsKKworICAgIGlmIChJbml0Q29sb3IKKwkmJiBTUF9QQVJNLT5fY29sb3JvbgogCSYmIChjb2xvciA+PSAwICYmIE9rQ29sb3JIaShjb2xvcikpCiAJJiYgKG9rUkdCKHIpICYmIG9rUkdCKGcpICYmIG9rUkdCKGIpKSkgewogCi0JU1AtPl9jb2xvcl90YWJsZVtjb2xvcl0uaW5pdCA9IDE7Ci0JU1AtPl9jb2xvcl90YWJsZVtjb2xvcl0uciA9IHI7Ci0JU1AtPl9jb2xvcl90YWJsZVtjb2xvcl0uZyA9IGc7Ci0JU1AtPl9jb2xvcl90YWJsZVtjb2xvcl0uYiA9IGI7CisJU1BfUEFSTS0+X2NvbG9yX3RhYmxlW2NvbG9yXS5pbml0ID0gMTsKKwlTUF9QQVJNLT5fY29sb3JfdGFibGVbY29sb3JdLnIgPSByOworCVNQX1BBUk0tPl9jb2xvcl90YWJsZVtjb2xvcl0uZyA9IGc7CisJU1BfUEFSTS0+X2NvbG9yX3RhYmxlW2NvbG9yXS5iID0gYjsKIAotCWlmIChodWVfbGlnaHRuZXNzX3NhdHVyYXRpb24pIHsKKwlpZiAoVXNlSGxzUGFsZXR0ZSkgewogCSAgICByZ2IyaGxzKHIsIGcsIGIsCi0JCSAgICAmU1AtPl9jb2xvcl90YWJsZVtjb2xvcl0ucmVkLAotCQkgICAgJlNQLT5fY29sb3JfdGFibGVbY29sb3JdLmdyZWVuLAotCQkgICAgJlNQLT5fY29sb3JfdGFibGVbY29sb3JdLmJsdWUpOworCQkgICAgJlNQX1BBUk0tPl9jb2xvcl90YWJsZVtjb2xvcl0ucmVkLAorCQkgICAgJlNQX1BBUk0tPl9jb2xvcl90YWJsZVtjb2xvcl0uZ3JlZW4sCisJCSAgICAmU1BfUEFSTS0+X2NvbG9yX3RhYmxlW2NvbG9yXS5ibHVlKTsKIAl9IGVsc2UgewotCSAgICBTUC0+X2NvbG9yX3RhYmxlW2NvbG9yXS5yZWQgPSByOwotCSAgICBTUC0+X2NvbG9yX3RhYmxlW2NvbG9yXS5ncmVlbiA9IGc7Ci0JICAgIFNQLT5fY29sb3JfdGFibGVbY29sb3JdLmJsdWUgPSBiOworCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbY29sb3JdLnJlZCA9IHI7CisJICAgIFNQX1BBUk0tPl9jb2xvcl90YWJsZVtjb2xvcl0uZ3JlZW4gPSBnOworCSAgICBTUF9QQVJNLT5fY29sb3JfdGFibGVbY29sb3JdLmJsdWUgPSBiOwogCX0KIAotCVRQVVRTX1RSQUNFKCJpbml0aWFsaXplX2NvbG9yIik7Ci0JcHV0cChUUEFSTV80KGluaXRpYWxpemVfY29sb3IsIGNvbG9yLCByLCBnLCBiKSk7Ci0JU1AtPl9jb2xvcl9kZWZzID0gbWF4KGNvbG9yICsgMSwgU1AtPl9jb2xvcl9kZWZzKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlDYWxsRHJpdmVyXzQoU1BfUEFSTSwgdGRfaW5pdGNvbG9yLCBjb2xvciwgciwgZywgYik7CisjZWxzZQorCU5DVVJTRVNfUFVUUDIoImluaXRpYWxpemVfY29sb3IiLAorCQkgICAgICBUUEFSTV80KGluaXRpYWxpemVfY29sb3IsIGNvbG9yLCByLCBnLCBiKSk7CisjZW5kaWYKKwlTUF9QQVJNLT5fY29sb3JfZGVmcyA9IG1heChjb2xvciArIDEsIFNQX1BBUk0tPl9jb2xvcl9kZWZzKTsKKwogCXJlc3VsdCA9IE9LOwogICAgIH0KICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitpbml0X2NvbG9yKE5DVVJTRVNfQ09MT1JfVCBjb2xvciwKKwkgICBOQ1VSU0VTX0NPTE9SX1QgciwKKwkgICBOQ1VSU0VTX0NPTE9SX1QgZywKKwkgICBOQ1VSU0VTX0NPTE9SX1QgYikKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGluaXRfY29sb3IpIChDVVJSRU5UX1NDUkVFTiwgY29sb3IsIHIsIGcsIGIpOworfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKGJvb2wpCitOQ1VSU0VTX1NQX05BTUUoY2FuX2NoYW5nZV9jb2xvcikgKE5DVVJTRVNfU1BfRENMKQoreworICAgIGludCByZXN1bHQgPSBGQUxTRTsKKworICAgIFQoKFRfQ0FMTEVEKCJjYW5fY2hhbmdlX2NvbG9yKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisKKyAgICBpZiAoSGFzVGVybWluYWwoU1BfUEFSTSkgJiYgKENhbkNoYW5nZSAhPSAwKSkgeworCXJlc3VsdCA9IFRSVUU7CisgICAgfQorCisgICAgcmV0dXJuQ29kZShyZXN1bHQpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoYm9vbCkKIGNhbl9jaGFuZ2VfY29sb3Iodm9pZCkKIHsKLSAgICBUKChUX0NBTExFRCgiY2FuX2NoYW5nZV9jb2xvcigpIikpKTsKLSAgICByZXR1cm5Db2RlKChjYW5fY2hhbmdlICE9IDApID8gVFJVRSA6IEZBTFNFKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGNhbl9jaGFuZ2VfY29sb3IpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoYm9vbCkKK05DVVJTRVNfU1BfTkFNRShoYXNfY29sb3JzKSAoTkNVUlNFU19TUF9EQ0wwKQoreworICAgIGludCBjb2RlID0gRkFMU0U7CisKKyAgICAodm9pZCkgU1BfUEFSTTsKKyAgICBUKChUX0NBTExFRCgiaGFzX2NvbG9ycygpIikpKTsKKyAgICBpZiAoSGFzVGVybWluYWwoU1BfUEFSTSkpIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwljb2RlID0gSGFzQ29sb3I7CisjZWxzZQorCWNvZGUgPSAoKFZBTElEX05VTUVSSUMobWF4X2NvbG9ycykgJiYgVkFMSURfTlVNRVJJQyhtYXhfcGFpcnMpCisJCSAmJiAoKChzZXRfZm9yZWdyb3VuZCAhPSBOVUxMKQorCQkgICAgICAmJiAoc2V0X2JhY2tncm91bmQgIT0gTlVMTCkpCisJCSAgICAgfHwgKChzZXRfYV9mb3JlZ3JvdW5kICE9IE5VTEwpCisJCQkgJiYgKHNldF9hX2JhY2tncm91bmQgIT0gTlVMTCkpCisJCSAgICAgfHwgc2V0X2NvbG9yX3BhaXIpKSA/IFRSVUUgOiBGQUxTRSk7CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGJvb2wpCiBoYXNfY29sb3JzKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImhhc19jb2xvcnMoKSIpKSk7Ci0gICAgcmV0dXJuQ29kZSgoVkFMSURfTlVNRVJJQyhtYXhfY29sb3JzKSAmJiBWQUxJRF9OVU1FUklDKG1heF9wYWlycykKLQkJJiYgKCgoc2V0X2ZvcmVncm91bmQgIT0gTlVMTCkKLQkJICAgICAmJiAoc2V0X2JhY2tncm91bmQgIT0gTlVMTCkpCi0JCSAgICB8fCAoKHNldF9hX2ZvcmVncm91bmQgIT0gTlVMTCkKLQkJCSYmIChzZXRfYV9iYWNrZ3JvdW5kICE9IE5VTEwpKQotCQkgICAgfHwgc2V0X2NvbG9yX3BhaXIpKSA/IFRSVUUgOiBGQUxTRSk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShoYXNfY29sb3JzKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLWNvbG9yX2NvbnRlbnQoc2hvcnQgY29sb3IsIHNob3J0ICpyLCBzaG9ydCAqZywgc2hvcnQgKmIpCitOQ1VSU0VTX1NQX05BTUUoY29sb3JfY29udGVudCkgKE5DVVJTRVNfU1BfRENMeAorCQkJCU5DVVJTRVNfQ09MT1JfVCBjb2xvciwKKwkJCQlOQ1VSU0VTX0NPTE9SX1QgKnIsCisJCQkJTkNVUlNFU19DT0xPUl9UICpnLAorCQkJCU5DVVJTRVNfQ09MT1JfVCAqYikKIHsKLSAgICBpbnQgcmVzdWx0OworICAgIGludCByZXN1bHQgPSBFUlI7CisgICAgaW50IG1heGNvbG9yczsKIAotICAgIFQoKFRfQ0FMTEVEKCJjb2xvcl9jb250ZW50KCVkLCVwLCVwLCVwKSIpLCBjb2xvciwgciwgZywgYikpOwotICAgIGlmIChjb2xvciA8IDAgfHwgIU9rQ29sb3JIaShjb2xvcikgfHwgU1AgPT0gMCB8fCAhU1AtPl9jb2xvcm9uKSB7CisgICAgVCgoVF9DQUxMRUQoImNvbG9yX2NvbnRlbnQoJXAsJWQsJXAsJXAsJXApIiksCisgICAgICAgKHZvaWQgKikgU1BfUEFSTSwKKyAgICAgICBjb2xvciwKKyAgICAgICAodm9pZCAqKSByLAorICAgICAgICh2b2lkICopIGcsCisgICAgICAgKHZvaWQgKikgYikpOworCisgICAgaWYgKFNQX1BBUk0gPT0gMCkKKwlyZXR1cm5Db2RlKHJlc3VsdCk7CisKKyAgICBtYXhjb2xvcnMgPSBNYXhDb2xvcnM7CisKKyAgICBpZiAoY29sb3IgPCAwIHx8ICFPa0NvbG9ySGkoY29sb3IpIHx8ICFTUF9QQVJNLT5fY29sb3JvbikgewogCXJlc3VsdCA9IEVSUjsKICAgICB9IGVsc2UgewotCU5DVVJTRVNfQ09MT1JfVCBjX3IgPSBTUC0+X2NvbG9yX3RhYmxlW2NvbG9yXS5yZWQ7Ci0JTkNVUlNFU19DT0xPUl9UIGNfZyA9IFNQLT5fY29sb3JfdGFibGVbY29sb3JdLmdyZWVuOwotCU5DVVJTRVNfQ09MT1JfVCBjX2IgPSBTUC0+X2NvbG9yX3RhYmxlW2NvbG9yXS5ibHVlOworCU5DVVJTRVNfQ09MT1JfVCBjX3IgPSBTUF9QQVJNLT5fY29sb3JfdGFibGVbY29sb3JdLnJlZDsKKwlOQ1VSU0VTX0NPTE9SX1QgY19nID0gU1BfUEFSTS0+X2NvbG9yX3RhYmxlW2NvbG9yXS5ncmVlbjsKKwlOQ1VSU0VTX0NPTE9SX1QgY19iID0gU1BfUEFSTS0+X2NvbG9yX3RhYmxlW2NvbG9yXS5ibHVlOwogCiAJaWYgKHIpCiAJICAgICpyID0gY19yOwpAQCAtNDg5LDE4ICs3NDMsMzYgQEAKICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1wYWlyX2NvbnRlbnQoc2hvcnQgcGFpciwgc2hvcnQgKmYsIHNob3J0ICpiKQorY29sb3JfY29udGVudChOQ1VSU0VTX0NPTE9SX1QgY29sb3IsCisJICAgICAgTkNVUlNFU19DT0xPUl9UICpyLAorCSAgICAgIE5DVVJTRVNfQ09MT1JfVCAqZywKKwkgICAgICBOQ1VSU0VTX0NPTE9SX1QgKmIpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShjb2xvcl9jb250ZW50KSAoQ1VSUkVOVF9TQ1JFRU4sIGNvbG9yLCByLCBnLCBiKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUocGFpcl9jb250ZW50KSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICAgICAgTkNVUlNFU19QQUlSU19UIHBhaXIsCisJCQkgICAgICAgTkNVUlNFU19DT0xPUl9UICpmLAorCQkJICAgICAgIE5DVVJTRVNfQ09MT1JfVCAqYikKIHsKICAgICBpbnQgcmVzdWx0OwogCi0gICAgVCgoVF9DQUxMRUQoInBhaXJfY29udGVudCglZCwlcCwlcCkiKSwgcGFpciwgZiwgYikpOworICAgIFQoKFRfQ0FMTEVEKCJwYWlyX2NvbnRlbnQoJXAsJWQsJXAsJXApIiksCisgICAgICAgKHZvaWQgKikgU1BfUEFSTSwKKyAgICAgICAoaW50KSBwYWlyLAorICAgICAgICh2b2lkICopIGYsCisgICAgICAgKHZvaWQgKikgYikpOwogCi0gICAgaWYgKChwYWlyIDwgMCkgfHwgKHBhaXIgPj0gQ09MT1JfUEFJUlMpIHx8IFNQID09IDAgfHwgIVNQLT5fY29sb3JvbikgeworICAgIGlmICghVmFsaWRQYWlyKHBhaXIpKSB7CiAJcmVzdWx0ID0gRVJSOwogICAgIH0gZWxzZSB7Ci0JTkNVUlNFU19DT0xPUl9UIGZnID0gKChTUC0+X2NvbG9yX3BhaXJzW3BhaXJdID4+IENfU0hJRlQpICYgQ19NQVNLKTsKLQlOQ1VSU0VTX0NPTE9SX1QgYmcgPSAoU1AtPl9jb2xvcl9wYWlyc1twYWlyXSAmIENfTUFTSyk7CisJTkNVUlNFU19DT0xPUl9UIGZnID0gKE5DVVJTRVNfQ09MT1JfVCkgRk9SRV9PRihTUF9QQVJNLT5fY29sb3JfcGFpcnNbcGFpcl0pOworCU5DVVJTRVNfQ09MT1JfVCBiZyA9IChOQ1VSU0VTX0NPTE9SX1QpIEJBQ0tfT0YoU1BfUEFSTS0+X2NvbG9yX3BhaXJzW3BhaXJdKTsKIAogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiAJaWYgKGZnID09IENPTE9SX0RFRkFVTFQpCkBAIC01MTQsMzQgKzc4Niw1NiBAQAogCWlmIChiKQogCSAgICAqYiA9IGJnOwogCi0JVFIoVFJBQ0VfQVRUUlMsICgiLi4ucGFpcl9jb250ZW50KCVkLCVkLCVkKSIsIHBhaXIsIGZnLCBiZykpOworCVRSKFRSQUNFX0FUVFJTLCAoIi4uLnBhaXJfY29udGVudCglcCwlZCwlZCwlZCkiLAorCQkJICh2b2lkICopIFNQX1BBUk0sCisJCQkgKGludCkgcGFpciwKKwkJCSAoaW50KSBmZywgKGludCkgYmcpKTsKIAlyZXN1bHQgPSBPSzsKICAgICB9CiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQogCi1OQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX2RvX2NvbG9yKHNob3J0IG9sZF9wYWlyLCBzaG9ydCBwYWlyLCBib29sIHJldmVyc2UsIGludCAoKm91dGMpIChpbnQpKQorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3BhaXJfY29udGVudChOQ1VSU0VTX0NPTE9SX1QgcGFpciwgTkNVUlNFU19DT0xPUl9UICpmLCBOQ1VSU0VTX0NPTE9SX1QgKmIpCiB7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShwYWlyX2NvbnRlbnQpIChDVVJSRU5UX1NDUkVFTiwgcGFpciwgZiwgYik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfZG9fY29sb3IpIChOQ1VSU0VTX1NQX0RDTHgKKwkJCSAgICAgICBpbnQgb2xkX3BhaXIsCisJCQkgICAgICAgaW50IHBhaXIsCisJCQkgICAgICAgaW50IHJldmVyc2UsCisJCQkgICAgICAgTkNVUlNFU19TUF9PVVRDIG91dGMpCit7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgQ2FsbERyaXZlcl80KFNQX1BBUk0sIHRkX2RvY29sb3IsIG9sZF9wYWlyLCBwYWlyLCByZXZlcnNlLCBvdXRjKTsKKyNlbHNlCiAgICAgTkNVUlNFU19DT0xPUl9UIGZnID0gQ09MT1JfREVGQVVMVDsKICAgICBOQ1VSU0VTX0NPTE9SX1QgYmcgPSBDT0xPUl9ERUZBVUxUOwotICAgIE5DVVJTRVNfQ09MT1JfVCBvbGRfZmcsIG9sZF9iZzsKKyAgICBOQ1VSU0VTX0NPTE9SX1Qgb2xkX2ZnID0gLTE7CisgICAgTkNVUlNFU19DT0xPUl9UIG9sZF9iZyA9IC0xOwogCi0gICAgaWYgKHBhaXIgPCAwIHx8IHBhaXIgPj0gQ09MT1JfUEFJUlMpIHsKKyAgICBpZiAoIVZhbGlkUGFpcihwYWlyKSkgewogCXJldHVybjsKICAgICB9IGVsc2UgaWYgKHBhaXIgIT0gMCkgewogCWlmIChzZXRfY29sb3JfcGFpcikgewogCSAgICBUUFVUU19UUkFDRSgic2V0X2NvbG9yX3BhaXIiKTsKLQkgICAgdHB1dHMoVFBBUk1fMShzZXRfY29sb3JfcGFpciwgcGFpciksIDEsIG91dGMpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgVFBBUk1fMShzZXRfY29sb3JfcGFpciwgcGFpciksCisJCQkJICAgIDEsIG91dGMpOwogCSAgICByZXR1cm47Ci0JfSBlbHNlIGlmIChTUCAhPSAwKSB7Ci0JICAgIHBhaXJfY29udGVudCgoc2hvcnQpIHBhaXIsICZmZywgJmJnKTsKKwl9IGVsc2UgaWYgKFNQX1BBUk0gIT0gMCkgeworCSAgICBpZiAocGFpcl9jb250ZW50KChOQ1VSU0VTX0NPTE9SX1QpIHBhaXIsICZmZywgJmJnKSA9PSBFUlIpCisJCXJldHVybjsKIAl9CiAgICAgfQogCiAgICAgaWYgKG9sZF9wYWlyID49IDAKLQkmJiBTUCAhPSAwCi0JJiYgcGFpcl9jb250ZW50KG9sZF9wYWlyLCAmb2xkX2ZnLCAmb2xkX2JnKSAhPSBFUlIpIHsKKwkmJiBTUF9QQVJNICE9IDAKKwkmJiBwYWlyX2NvbnRlbnQoKE5DVVJTRVNfQ09MT1JfVCkgb2xkX3BhaXIsICZvbGRfZmcsICZvbGRfYmcpICE9IEVSUikgewogCWlmICgoaXNEZWZhdWx0Q29sb3IoZmcpICYmICFpc0RlZmF1bHRDb2xvcihvbGRfZmcpKQogCSAgICB8fCAoaXNEZWZhdWx0Q29sb3IoYmcpICYmICFpc0RlZmF1bHRDb2xvcihvbGRfYmcpKSkgewogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCkBAIC01NTAsMjkgKzg0NCwyOSBAQAogCSAgICAgKiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24sIHRyZWF0IGl0IGFzIHNjcmVlbidzIGluZGljYXRvciBvZiBFQ01BCiAJICAgICAqIFNHUiAzOSBhbmQgU0dSIDQ5LCBhbmQgYXNzdW1lIHRoZSB0d28gc2VxdWVuY2VzIGFyZSBpbmRlcGVuZGVudC4KIAkgICAgICovCi0JICAgIGlmIChTUC0+X2hhc19zZ3JfMzlfNDkKKwkgICAgaWYgKFNQX1BBUk0tPl9oYXNfc2dyXzM5XzQ5CiAJCSYmIGlzRGVmYXVsdENvbG9yKG9sZF9iZykKIAkJJiYgIWlzRGVmYXVsdENvbG9yKG9sZF9mZykpIHsKLQkJdHB1dHMoIlwwMzNbMzltIiwgMSwgb3V0Yyk7Ci0JICAgIH0gZWxzZSBpZiAoU1AtPl9oYXNfc2dyXzM5XzQ5CisJCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeCAiXDAzM1szOW0iLCAxLCBvdXRjKTsKKwkgICAgfSBlbHNlIGlmIChTUF9QQVJNLT5faGFzX3Nncl8zOV80OQogCQkgICAgICAgJiYgaXNEZWZhdWx0Q29sb3Iob2xkX2ZnKQogCQkgICAgICAgJiYgIWlzRGVmYXVsdENvbG9yKG9sZF9iZykpIHsKLQkJdHB1dHMoIlwwMzNbNDltIiwgMSwgb3V0Yyk7CisJCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeCAiXDAzM1s0OW0iLCAxLCBvdXRjKTsKIAkgICAgfSBlbHNlCiAjZW5kaWYKLQkJcmVzZXRfY29sb3JfcGFpcigpOworCQlyZXNldF9jb2xvcl9wYWlyKE5DVVJTRVNfU1BfQVJHKTsKIAl9CiAgICAgfSBlbHNlIHsKLQlyZXNldF9jb2xvcl9wYWlyKCk7CisJcmVzZXRfY29sb3JfcGFpcihOQ1VSU0VTX1NQX0FSRyk7CiAJaWYgKG9sZF9wYWlyIDwgMCkKIAkgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiAgICAgaWYgKGlzRGVmYXVsdENvbG9yKGZnKSkKLQlmZyA9IGRlZmF1bHRfZmcoKTsKKwlmZyA9IChOQ1VSU0VTX0NPTE9SX1QpIGRlZmF1bHRfZmcoTkNVUlNFU19TUF9BUkcpOwogICAgIGlmIChpc0RlZmF1bHRDb2xvcihiZykpCi0JYmcgPSBkZWZhdWx0X2JnKCk7CisJYmcgPSAoTkNVUlNFU19DT0xPUl9UKSBkZWZhdWx0X2JnKE5DVVJTRVNfU1BfQVJHKTsKICNlbmRpZgogCiAgICAgaWYgKHJldmVyc2UpIHsKQEAgLTU4NSw5ICs4NzksMjMgQEAKIAkJICAgICBmZywgYmcpKTsKIAogICAgIGlmICghaXNEZWZhdWx0Q29sb3IoZmcpKSB7Ci0Jc2V0X2ZvcmVncm91bmRfY29sb3IoZmcsIG91dGMpOworCXNldF9mb3JlZ3JvdW5kX2NvbG9yKE5DVVJTRVNfU1BfQVJHeCBmZywgb3V0Yyk7CiAgICAgfQogICAgIGlmICghaXNEZWZhdWx0Q29sb3IoYmcpKSB7Ci0Jc2V0X2JhY2tncm91bmRfY29sb3IoYmcsIG91dGMpOworCXNldF9iYWNrZ3JvdW5kX2NvbG9yKE5DVVJTRVNfU1BfQVJHeCBiZywgb3V0Yyk7CiAgICAgfQorI2VuZGlmCiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX2RvX2NvbG9yKGludCBvbGRfcGFpciwgaW50IHBhaXIsIGludCByZXZlcnNlLCBOQ1VSU0VTX09VVEMgb3V0YykKK3sKKyAgICBTZXRTYWZlT3V0Y1dyYXBwZXIob3V0Yyk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19kb19jb2xvcikgKENVUlJFTlRfU0NSRUVOLAorCQkJCSAgIG9sZF9wYWlyLAorCQkJCSAgIHBhaXIsCisJCQkJICAgcmV2ZXJzZSwKKwkJCQkgICBfbmNfb3V0Y193cmFwcGVyKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9jb2xvcnNldC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9jb2xvcnNldC5jCmluZGV4IGE5NzNjNTMuLmU5MzU0ODYgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfY29sb3JzZXQuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2NvbG9yc2V0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw3ICsyOCw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBKdWVyZ2VuIFBmZWlmZXIsICAxOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSwgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXksIDIwMDUtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTQxLDIwICs0MSwyMyBAQAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9jb2xvcnNldC5jLHYgMS4xMSAyMDA1LzAxLzI5IDIxOjQwOjUxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2NvbG9yc2V0LmMsdiAxLjE0IDIwMTQvMDIvMDEgMjI6MTA6NDIgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotd2NvbG9yX3NldChXSU5ET1cgKndpbiwgc2hvcnQgY29sb3JfcGFpcl9udW1iZXIsIHZvaWQgKm9wdHMpCit3Y29sb3Jfc2V0KFdJTkRPVyAqd2luLCBOQ1VSU0VTX1BBSVJTX1QgY29sb3JfcGFpcl9udW1iZXIsIHZvaWQgKm9wdHMpCiB7Ci0gICAgVCgoVF9DQUxMRUQoIndjb2xvcl9zZXQoJXAsJWQpIiksIHdpbiwgY29sb3JfcGFpcl9udW1iZXIpKTsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJ3Y29sb3Jfc2V0KCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIChpbnQpIGNvbG9yX3BhaXJfbnVtYmVyKSk7CiAgICAgaWYgKHdpbgogCSYmICFvcHRzCisJJiYgKFNQICE9IDApCiAJJiYgKGNvbG9yX3BhaXJfbnVtYmVyID49IDApCi0JJiYgKGNvbG9yX3BhaXJfbnVtYmVyIDwgQ09MT1JfUEFJUlMpKSB7CisJJiYgKGNvbG9yX3BhaXJfbnVtYmVyIDwgU1AtPl9wYWlyX2xpbWl0KSkgewogCVRSKFRSQUNFX0FUVFJTLCAoIi4uLiBjdXJyZW50ICVsZCIsIChsb25nKSBHRVRfV0lORE9XX1BBSVIod2luKSkpOwogCVNFVF9XSU5ET1dfUEFJUih3aW4sIGNvbG9yX3BhaXJfbnVtYmVyKTsKIAlpZl9FWFRfQ09MT1JTKHdpbi0+X2NvbG9yID0gY29sb3JfcGFpcl9udW1iZXIpOwotCXJldHVybkNvZGUoT0spOwotICAgIH0gZWxzZQotCXJldHVybkNvZGUoRVJSKTsKKwljb2RlID0gT0s7CisgICAgfQorICAgIHJldHVybkNvZGUoY29kZSk7CiB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2RlbGNoLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2RlbGNoLmMKaW5kZXggMGMzMGYyZC4uNjRjOWRhNyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9kZWxjaC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfZGVsY2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCwyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9kZWxjaC5jLHYgMS4xMiAyMDAxLzEyLzE5IDAxOjA2OjA5IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2RlbGNoLmMsdiAxLjEzIDIwMDkvMTAvMjQgMjI6MzI6NDcgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2RlbGNoKFdJTkRPVyAqd2luKQogewogICAgIGludCBjb2RlID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoIndkZWxjaCglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIndkZWxjaCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAod2luKSB7CiAJTkNVUlNFU19DSF9UIGJsYW5rID0gd2luLT5fbmNfYmtnZDsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfZGVsd2luLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2RlbHdpbi5jCmluZGV4IGI5MmM0MDMuLjRiYjUzNmMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfZGVsd2luLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9kZWx3aW4uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI5LDYgKzI5LDggQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOCAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MCwxNSArNDIsMTggQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfZGVsd2luLmMsdiAxLjE3IDIwMDgvMDYvMDcgMTQ6MTA6NTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfZGVsd2luLmMsdiAxLjIwIDIwMDkvMTAvMjQgMjI6MDI6MTQgdG9tIEV4cCAkIikKIAogc3RhdGljIGJvb2wKIGNhbm5vdF9kZWxldGUoV0lORE9XICp3aW4pCiB7CiAgICAgV0lORE9XTElTVCAqcDsKICAgICBib29sIHJlc3VsdCA9IFRSVUU7CisjaWZkZWYgVVNFX1NQX1dJTkRPV0xJU1QKKyAgICBTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZih3aW4pOworI2VuZGlmCiAKLSAgICBmb3IgKGVhY2hfd2luZG93KHApKSB7CisgICAgZm9yIChlYWNoX3dpbmRvdyhTUF9QQVJNLCBwKSkgewogCWlmICgmKHAtPndpbikgPT0gd2luKSB7CiAJICAgIHJlc3VsdCA9IEZBTFNFOwogCX0gZWxzZSBpZiAoKHAtPndpbi5fZmxhZ3MgJiBfU1VCV0lOKSAhPSAwCkBAIC02NSwxOCArNzAsMjAgQEAKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoImRlbHdpbiglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoImRlbHdpbiglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAoX25jX3RyeV9nbG9iYWwoY3Vyc2VzKSA9PSAwKSB7CiAJaWYgKHdpbiA9PSAwCiAJICAgIHx8IGNhbm5vdF9kZWxldGUod2luKSkgewogCSAgICByZXN1bHQgPSBFUlI7CiAJfSBlbHNlIHsKLQorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwkgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgogCSAgICBpZiAod2luLT5fZmxhZ3MgJiBfU1VCV0lOKQogCQl0b3VjaHdpbih3aW4tPl9wYXJlbnQpOwotCSAgICBlbHNlIGlmIChjdXJzY3IgIT0gMCkKLQkJdG91Y2h3aW4oY3Vyc2NyKTsKKwkgICAgZWxzZSBpZiAoQ3VyU2NyZWVuKFNQX1BBUk0pICE9IDApCisJCXRvdWNod2luKEN1clNjcmVlbihTUF9QQVJNKSk7CiAKIAkgICAgcmVzdWx0ID0gX25jX2ZyZWV3aW4od2luKTsKIAl9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2RmdF9mZ2JnLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2RmdF9mZ2JnLmMKaW5kZXggODk1M2MxNC4uNGQ3ZmRkMCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9kZnRfZmdiZy5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfZGZ0X2ZnYmcuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDQ5ICsyNyw3NCBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAxOTk4LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgIEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2RmdF9mZ2JnLmMsdiAxLjE4IDIwMDUvMTEvMjYgMjA6MDM6MzggdG9tIEV4cCAkIikKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCisKK01PRFVMRV9JRCgiJElkOiBsaWJfZGZ0X2ZnYmcuYyx2IDEuMjcgMjAxNC8wMy8wOCAyMDozMjo1OSB0b20gRXhwICQiKQogCiAvKgogICogTW9kaWZ5IHRoZSBiZWhhdmlvciBvZiBjb2xvci1wYWlyIDAgc28gdGhhdCB0aGUgbGlicmFyeSBkb2Vzbid0IGFzc3VtZSB0aGF0CiAgKiBpdCBpcyB3aGl0ZSBvbiBibGFjay4gIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIHRvIFhTSSBjdXJzZXMuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRSh1c2VfZGVmYXVsdF9jb2xvcnMpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgVCgoVF9DQUxMRUQoInVzZV9kZWZhdWx0X2NvbG9ycyglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworICAgIHJldHVybkNvZGUoTkNVUlNFU19TUF9OQU1FKGFzc3VtZV9kZWZhdWx0X2NvbG9ycykgKE5DVVJTRVNfU1BfQVJHeCAtMSwgLTEpKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKIHVzZV9kZWZhdWx0X2NvbG9ycyh2b2lkKQogewotICAgIFQoKFRfQ0FMTEVEKCJ1c2VfZGVmYXVsdF9jb2xvcnMoKSIpKSk7Ci0gICAgcmV0dXJuQ29kZShhc3N1bWVfZGVmYXVsdF9jb2xvcnMoLTEsIC0xKSk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh1c2VfZGVmYXVsdF9jb2xvcnMpIChDVVJSRU5UX1NDUkVFTik7CiB9CisjZW5kaWYKIAogLyoKICAqIE1vZGlmeSB0aGUgYmVoYXZpb3Igb2YgY29sb3ItcGFpciAwIHNvIHRoYXQgdGhlIGxpYnJhcnkgYXNzdW1lcyB0aGF0IGl0CiAgKiBpcyBzb21ldGhpbmcgc3BlY2lmaWMsIHBvc3NpYmx5IG5vdCB3aGl0ZSBvbiBibGFjay4KICAqLwogTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKGFzc3VtZV9kZWZhdWx0X2NvbG9ycykgKE5DVVJTRVNfU1BfRENMeCBpbnQgZmcsIGludCBiZykKK3sKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJhc3N1bWVfZGVmYXVsdF9jb2xvcnMoJXAsJWQsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIGZnLCBiZykpOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGlmIChzcCAhPSAwKQorCWNvZGUgPSBDYWxsRHJpdmVyXzIoc3AsIHRkX2RlZmF1bHRjb2xvcnMsIGZnLCBiZyk7CisjZWxzZQorICAgIGlmICgob3JpZ19wYWlyIHx8IG9yaWdfY29sb3JzKSAmJiAhaW5pdGlhbGl6ZV9wYWlyKSB7CisKKwlTUF9QQVJNLT5fZGVmYXVsdF9jb2xvciA9IGlzRGVmYXVsdENvbG9yKGZnKSB8fCBpc0RlZmF1bHRDb2xvcihiZyk7CisJU1BfUEFSTS0+X2hhc19zZ3JfMzlfNDkgPSAodGlnZXRmbGFnKCJBWCIpID09IFRSVUUpOworCVNQX1BBUk0tPl9kZWZhdWx0X2ZnID0gaXNEZWZhdWx0Q29sb3IoZmcpID8gQ09MT1JfREVGQVVMVCA6IChmZyAmIENfTUFTSyk7CisJU1BfUEFSTS0+X2RlZmF1bHRfYmcgPSBpc0RlZmF1bHRDb2xvcihiZykgPyBDT0xPUl9ERUZBVUxUIDogKGJnICYgQ19NQVNLKTsKKwlpZiAoU1BfUEFSTS0+X2NvbG9yX3BhaXJzICE9IDApIHsKKwkgICAgYm9vbCBzYXZlID0gU1BfUEFSTS0+X2RlZmF1bHRfY29sb3I7CisJICAgIFNQX1BBUk0tPl9hc3N1bWVkX2NvbG9yID0gVFJVRTsKKwkgICAgU1BfUEFSTS0+X2RlZmF1bHRfY29sb3IgPSBUUlVFOworCSAgICBpbml0X3BhaXIoMCwgKHNob3J0KSBmZywgKHNob3J0KSBiZyk7CisJICAgIFNQX1BBUk0tPl9kZWZhdWx0X2NvbG9yID0gc2F2ZTsKKwl9CisJY29kZSA9IE9LOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybkNvZGUoY29kZSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCiBhc3N1bWVfZGVmYXVsdF9jb2xvcnMoaW50IGZnLCBpbnQgYmcpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImFzc3VtZV9kZWZhdWx0X2NvbG9ycyglZCwlZCkiKSwgZmcsIGJnKSk7Ci0KLSAgICBpZiAoIW9yaWdfcGFpciAmJiAhb3JpZ19jb2xvcnMpCi0JcmV0dXJuQ29kZShFUlIpOwotCi0gICAgaWYgKGluaXRpYWxpemVfcGFpcikJLyogZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIHRoaXMgKi8KLQlyZXR1cm5Db2RlKEVSUik7Ci0KLSAgICBTUC0+X2RlZmF1bHRfY29sb3IgPSBpc0RlZmF1bHRDb2xvcihmZykgfHwgaXNEZWZhdWx0Q29sb3IoYmcpOwotICAgIFNQLT5faGFzX3Nncl8zOV80OSA9ICh0aWdldGZsYWcoIkFYIikgPT0gVFJVRSk7Ci0gICAgU1AtPl9kZWZhdWx0X2ZnID0gaXNEZWZhdWx0Q29sb3IoZmcpID8gQ09MT1JfREVGQVVMVCA6IChmZyAmIENfTUFTSyk7Ci0gICAgU1AtPl9kZWZhdWx0X2JnID0gaXNEZWZhdWx0Q29sb3IoYmcpID8gQ09MT1JfREVGQVVMVCA6IChiZyAmIENfTUFTSyk7Ci0gICAgaWYgKFNQLT5fY29sb3JfcGFpcnMgIT0gMCkgewotCWJvb2wgc2F2ZSA9IFNQLT5fZGVmYXVsdF9jb2xvcjsKLQlTUC0+X2RlZmF1bHRfY29sb3IgPSBUUlVFOwotCWluaXRfcGFpcigwLCAoc2hvcnQpIGZnLCAoc2hvcnQpIGJnKTsKLQlTUC0+X2RlZmF1bHRfY29sb3IgPSBzYXZlOwotICAgIH0KLSAgICByZXR1cm5Db2RlKE9LKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGFzc3VtZV9kZWZhdWx0X2NvbG9ycykgKENVUlJFTlRfU0NSRUVOLCBmZywgYmcpOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2RyaXZlci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9kcml2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjYzYjNjCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9kcml2ZXIuYwpAQCAtMCwwICsxLDE0NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorCitNT0RVTEVfSUQoIiRJZDogbGliX2RyaXZlci5jLHYgMS42IDIwMTQvMDQvMTEgMDg6MjE6MjMganBmIEV4cCAkIikKKwordHlwZWRlZiBzdHJ1Y3QgRHJpdmVyRW50cnkgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgVEVSTV9EUklWRVIgKmRyaXZlcjsKK30gRFJJVkVSX0VOVFJZOworCitzdGF0aWMgRFJJVkVSX0VOVFJZIERyaXZlclRhYmxlW10gPQoreworI2lmZGVmIF9fTUlOR1czMl9fCisgICAgeyJ3aW4zMmNvbnNvbGUiLCAmX25jX1dJTl9EUklWRVJ9LAorI2VuZGlmCisgICAgeyJ0aW5mbyIsICZfbmNfVElORk9fRFJJVkVSfQkvKiBtdXN0IGJlIGxhc3QgKi8KK307CisKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19nZXRfZHJpdmVyKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGNvbnN0IGNoYXIgKm5hbWUsIGludCAqZXJycmV0KQoreworICAgIGludCBjb2RlID0gRVJSOworICAgIHNpemVfdCBpOworICAgIFRFUk1fRFJJVkVSICpyZXMgPSAoVEVSTV9EUklWRVIgKikgMDsKKyAgICBURVJNX0RSSVZFUiAqdXNlID0gMDsKKworICAgIFQoKFRfQ0FMTEVEKCJfbmNfZ2V0X2RyaXZlciglcCwgJXMsICVwKSIpLAorICAgICAgICh2b2lkICopIFRDQiwgTm9uTnVsbChuYW1lKSwgKHZvaWQgKikgZXJycmV0KSk7CisKKyAgICBhc3NlcnQoVENCICE9IDApOworCisgICAgZm9yIChpID0gMDsgaSA8IFNJWkVPRihEcml2ZXJUYWJsZSk7IGkrKykgeworCXJlcyA9IERyaXZlclRhYmxlW2ldLmRyaXZlcjsKKwlpZiAoc3RyY21wKERyaXZlclRhYmxlW2ldLm5hbWUsIHJlcy0+dGRfbmFtZShUQ0IpKSA9PSAwKSB7CisJICAgIGlmIChyZXMtPnRkX0NhbkhhbmRsZShUQ0IsIG5hbWUsIGVycnJldCkpIHsKKwkJdXNlID0gcmVzOworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisgICAgaWYgKHVzZSAhPSAwKSB7CisJVENCLT5kcnYgPSB1c2U7CisJY29kZSA9IE9LOworICAgIH0KKyAgICByZXR1cm5Db2RlKGNvZGUpOworfQorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoaGFzX2tleSkgKFNDUkVFTiAqc3AsIGludCBrZXljb2RlKQoreworICAgIFQoKFRfQ0FMTEVEKCJoYXNfa2V5KCVwLCAlZCkiKSwgKHZvaWQgKikgc3AsIGtleWNvZGUpKTsKKyAgICByZXR1cm5Db2RlKElzVmFsaWRUSVNjcmVlbihzcCkgPyBDYWxsRHJpdmVyXzEoc3AsIHRkX2t5RXhpc3QsIGtleWNvZGUpIDogRkFMU0UpOworfQorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitoYXNfa2V5KGludCBrZXljb2RlKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaGFzX2tleSkgKENVUlJFTlRfU0NSRUVOLCBrZXljb2RlKTsKK30KKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKF9uY19tY3ByaW50KSAoU0NSRUVOICpzcCwgY2hhciAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIGlmICgwICE9IFRlcm1pbmFsT2Yoc3ApKQorCWNvZGUgPSBDYWxsRHJpdmVyXzIoc3AsIHRkX3ByaW50LCBkYXRhLCBsZW4pOworICAgIHJldHVybiAoY29kZSk7Cit9CisKK05DVVJTRVNfRVhQT1JUKGludCkKK21jcHJpbnQoY2hhciAqZGF0YSwgaW50IGxlbikKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19tY3ByaW50KSAoQ1VSUkVOVF9TQ1JFRU4sIGRhdGEsIGxlbik7Cit9CisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShkb3VwZGF0ZSkgKFNDUkVFTiAqc3ApCit7CisgICAgaW50IGNvZGUgPSBFUlI7CisKKyAgICBUKChUX0NBTExFRCgiZG91cGRhdGUoJXApIiksICh2b2lkICopIHNwKSk7CisKKyAgICBpZiAoSXNWYWxpZFNjcmVlbihzcCkpCisJY29kZSA9IENhbGxEcml2ZXIoc3AsIHRkX3VwZGF0ZSk7CisKKyAgICByZXR1cm5Db2RlKGNvZGUpOworfQorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitkb3VwZGF0ZSh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoZG91cGRhdGUpIChDVVJSRU5UX1NDUkVFTik7Cit9CisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShtdmN1cikgKFNDUkVFTiAqc3AsIGludCB5b2xkLCBpbnQgeG9sZCwgaW50IHluZXcsIGludCB4bmV3KQoreworICAgIGludCBjb2RlID0gRVJSOworICAgIFRSKFRSQUNFX0NBTExTIHwgVFJBQ0VfTU9WRSwgKFRfQ0FMTEVEKCJtdmN1ciglcCwlZCwlZCwlZCwlZCkiKSwKKwkJCQkgICh2b2lkICopIHNwLCB5b2xkLCB4b2xkLCB5bmV3LCB4bmV3KSk7CisgICAgaWYgKEhhc1Rlcm1pbmFsKHNwKSkgeworCWNvZGUgPSBDYWxsRHJpdmVyXzQoc3AsIHRkX2h3Y3VyLCB5b2xkLCB4b2xkLCB5bmV3LCB4bmV3KTsKKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKK30KKworTkNVUlNFU19FWFBPUlQoaW50KQorbXZjdXIoaW50IHlvbGQsIGludCB4b2xkLCBpbnQgeW5ldywgaW50IHhuZXcpCisvKiBvcHRpbWl6ZWQgY3Vyc29yIG1vdmUgZnJvbSAoeW9sZCwgeG9sZCkgdG8gKHluZXcsIHhuZXcpICovCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShtdmN1cikgKENVUlJFTlRfU0NSRUVOLCB5b2xkLCB4b2xkLCB5bmV3LCB4bmV3KTsKK30KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfZWNoby5jIGIvbmN1cnNlcy9iYXNlL2xpYl9lY2hvLmMKaW5kZXggZGY0NDcxMy4uOWUxZDNjMiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9lY2hvLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9lY2hvLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDIsMjAgKzQ0LDQwIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2VjaG8uYyx2IDEuNSAyMDAwLzEyLzEwIDAyOjQzOjI3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2VjaG8uYyx2IDEuOCAyMDA5LzEwLzI0IDIyOjAyOjE0IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShlY2hvKSAoTkNVUlNFU19TUF9EQ0wwKQoreworICAgIFQoKFRfQ0FMTEVEKCJlY2hvKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisgICAgaWYgKDAgPT0gU1BfUEFSTSkKKwlyZXR1cm5Db2RlKEVSUik7CisgICAgU1BfUEFSTS0+X2VjaG8gPSBUUlVFOworICAgIHJldHVybkNvZGUoT0spOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQogZWNobyh2b2lkKQogewotICAgIFQoKFRfQ0FMTEVEKCJlY2hvKCkiKSkpOwotICAgIFNQLT5fZWNobyA9IFRSVUU7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShlY2hvKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShub2VjaG8pIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgVCgoVF9DQUxMRUQoIm5vZWNobyglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworICAgIGlmICgwID09IFNQX1BBUk0pCisJcmV0dXJuQ29kZShFUlIpOworICAgIFNQX1BBUk0tPl9lY2hvID0gRkFMU0U7CiAgICAgcmV0dXJuQ29kZShPSyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBub2VjaG8odm9pZCkKIHsKLSAgICBUKChUX0NBTExFRCgibm9lY2hvKCkiKSkpOwotICAgIFNQLT5fZWNobyA9IEZBTFNFOwotICAgIHJldHVybkNvZGUoT0spOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobm9lY2hvKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2VuZHdpbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9lbmR3aW4uYwppbmRleCA2NjY2Mjg3Li45ZWJmNzY5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2VuZHdpbi5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfZW5kd2luLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMzksMjIgKzQxLDM5IEBACiAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfZW5kd2luLmMsdiAxLjE5IDIwMDAvMTIvMTAgMDI6NDM6MjcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfZW5kd2luLmMsdiAxLjIzIDIwMTQvMDMvMDggMjA6MzI6NTkgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKGVuZHdpbikgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJlbmR3aW4oJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmIChTUF9QQVJNKSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqVENCID0gVENCT2YoU1BfUEFSTSk7CisKKwlTUF9QQVJNLT5fZW5kd2luID0gVFJVRTsKKwlpZiAoVENCICYmIFRDQi0+ZHJ2ICYmIFRDQi0+ZHJ2LT50ZF9zY2V4aXQpCisJICAgIFRDQi0+ZHJ2LT50ZF9zY2V4aXQoU1BfUEFSTSk7CisjZWxzZQorCVNQX1BBUk0tPl9lbmR3aW4gPSBUUlVFOworCVNQX1BBUk0tPl9tb3VzZV93cmFwKFNQX1BBUk0pOworCV9uY19zY3JlZW5fd3JhcCgpOworCV9uY19tdmN1cl93cmFwKCk7CS8qIHdyYXAgdXAgY3Vyc29yIGFkZHJlc3NpbmcgKi8KKyNlbmRpZgorCWNvZGUgPSBOQ1VSU0VTX1NQX05BTUUocmVzZXRfc2hlbGxfbW9kZSkgKE5DVVJTRVNfU1BfQVJHKTsKKyAgICB9CisKKyAgICByZXR1cm5Db2RlKGNvZGUpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQogZW5kd2luKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImVuZHdpbigpIikpKTsKLQotICAgIGlmIChTUCkgewotCVNQLT5fZW5kd2luID0gVFJVRTsKLQlTUC0+X21vdXNlX3dyYXAoU1ApOwotCV9uY19zY3JlZW5fd3JhcCgpOwotCV9uY19tdmN1cl93cmFwKCk7CS8qIHdyYXAgdXAgY3Vyc29yIGFkZHJlc3NpbmcgKi8KLQlyZXR1cm5Db2RlKHJlc2V0X3NoZWxsX21vZGUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuQ29kZShFUlIpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoZW5kd2luKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2VyYXNlLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2VyYXNlLmMKaW5kZXggMjU2NmU4Yi4uYmJmMTBlZiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9lcmFzZS5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfZXJhc2UuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCwyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQxLDcgKzQxLDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfZXJhc2UuYyx2IDEuMTYgMjAwNS8xMC8zMCAwMDozNjozNiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9lcmFzZS5jLHYgMS4xNyAyMDA5LzEwLzI0IDIyOjMyOjI5IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdlcmFzZShXSU5ET1cgKndpbikKQEAgLTUxLDcgKzUxLDcgQEAKICAgICBOQ1VSU0VTX0NIX1QgYmxhbms7CiAgICAgTkNVUlNFU19DSF9UICpzcCwgKmVuZCwgKnN0YXJ0OwogCi0gICAgVCgoVF9DQUxMRUQoIndlcmFzZSglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIndlcmFzZSglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAod2luKSB7CiAJYmxhbmsgPSB3aW4tPl9uY19ia2dkOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9mbGFzaC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9mbGFzaC5jCmluZGV4IGE2YjAyMmEuLjdmMjUwMzggMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfZmxhc2guYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2ZsYXNoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMzksOSArNDEsMTIgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBiZWVwLCBmbGFzaCAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX2ZsYXNoLmMsdiAxLjYgMjAwMC8xMi8xMCAwMjo0MzoyNyB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKKworTU9EVUxFX0lEKCIkSWQ6IGxpYl9mbGFzaC5jLHYgMS4xNCAyMDE0LzAzLzA4IDIwOjMyOjU5IHRvbSBFeHAgJCIpCiAKIC8qCiAgKglmbGFzaCgpCkBAIC01MiwyMiArNTcsMzEgQEAKICAqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1mbGFzaCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKGZsYXNoKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXMgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgiZmxhc2goKSIpKSk7Ci0KLSAgICAvKiBGSVhNRTogc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBub3QgaW4gYWx0Y2hhciBtb2RlICovCi0gICAgaWYgKGZsYXNoX3NjcmVlbikgewotCVRQVVRTX1RSQUNFKCJmbGFzaF9zY3JlZW4iKTsKLQlyZXMgPSBwdXRwKGZsYXNoX3NjcmVlbik7Ci0JX25jX2ZsdXNoKCk7Ci0gICAgfSBlbHNlIGlmIChiZWxsKSB7Ci0JVFBVVFNfVFJBQ0UoImJlbGwiKTsKLQlyZXMgPSBwdXRwKGJlbGwpOwotCV9uY19mbHVzaCgpOworICAgIFQoKFRfQ0FMTEVEKCJmbGFzaCglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGlmIChTUF9QQVJNICE9IDApCisJcmVzID0gQ2FsbERyaXZlcl8xKFNQX1BBUk0sIHRkX2RvQmVlcE9yRmxhc2gsIEZBTFNFKTsKKyNlbHNlCisgICAgaWYgKEhhc1Rlcm1pbmFsKFNQX1BBUk0pKSB7CisJLyogRklYTUU6IHNob3VsZCBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUgbm90IGluIGFsdGNoYXIgbW9kZSAqLworCWlmIChmbGFzaF9zY3JlZW4pIHsKKwkgICAgcmVzID0gTkNVUlNFU19QVVRQMl9GTFVTSCgiZmxhc2hfc2NyZWVuIiwgZmxhc2hfc2NyZWVuKTsKKwl9IGVsc2UgaWYgKGJlbGwpIHsKKwkgICAgcmVzID0gTkNVUlNFU19QVVRQMl9GTFVTSCgiYmVsbCIsIGJlbGwpOworCX0KICAgICB9Ci0KKyNlbmRpZgogICAgIHJldHVybkNvZGUocmVzKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK2ZsYXNoKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShmbGFzaCkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9mcmVlYWxsLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2ZyZWVhbGwuYwppbmRleCA1NjQwMjY1Li4zOTM2YzkyIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2ZyZWVhbGwuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2ZyZWVhbGwuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMxLDcgKzMxLDYgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAjaW5jbHVkZSA8dGljLmg+CiAKICNpZiBIQVZFX05DX0ZSRUVBTEwKQEAgLTQwLDUwICszOSw1MiBAQAogZXh0ZXJuIGludCBtYWxsb2NfZXJyZmQ7CS8qIEZJWE1FICovCiAjZW5kaWYKIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9mcmVlYWxsLmMsdiAxLjU0IDIwMDgvMDkvMjcgMTM6MDk6NTcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfZnJlZWFsbC5jLHYgMS42MyAyMDE1LzA1LzAyIDIzOjQ2OjI2IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBGcmVlIGFsbCBuY3Vyc2VzIGRhdGEuICBUaGlzIGlzIHVzZWQgZm9yIHRlc3Rpbmcgb25seSAodGhlcmUncyBubyBwcmFjdGljYWwKICAqIHVzZSBmb3IgaXQgYXMgYW4gZXh0ZW5zaW9uKS4KICAqLwogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19mcmVlYWxsKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUoX25jX2ZyZWVhbGwpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgV0lORE9XTElTVCAqcCwgKnE7CiAgICAgc3RhdGljIHZhX2xpc3QgZW1wdHlfdmE7CiAKICAgICBUKChUX0NBTExFRCgiX25jX2ZyZWVhbGwoKSIpKSk7CiAjaWYgTk9fTEVBS1MKLSAgICBpZiAoU1AgIT0gMCkgewotCWlmIChTUC0+X29sZG51bV9saXN0ICE9IDApIHsKLQkgICAgRnJlZUFuZE51bGwoU1AtPl9vbGRudW1fbGlzdCk7CisgICAgaWYgKFNQX1BBUk0gIT0gMCkgeworCWlmIChTUF9QQVJNLT5fb2xkbnVtX2xpc3QgIT0gMCkgeworCSAgICBGcmVlQW5kTnVsbChTUF9QQVJNLT5fb2xkbnVtX2xpc3QpOwogCX0KLQlpZiAoU1AtPl9wYW5lbEhvb2suZGVzdHJveSAhPSAwKSB7Ci0JICAgIFNQLT5fcGFuZWxIb29rLmRlc3Ryb3koU1AtPl9wYW5lbEhvb2suc3Rkc2NyX3BzZXVkb19wYW5lbCk7CisJaWYgKFNQX1BBUk0tPl9wYW5lbEhvb2suZGVzdHJveSAhPSAwKSB7CisJICAgIFNQX1BBUk0tPl9wYW5lbEhvb2suZGVzdHJveShTUF9QQVJNLT5fcGFuZWxIb29rLnN0ZHNjcl9wc2V1ZG9fcGFuZWwpOwogCX0KICAgICB9CiAjZW5kaWYKLSAgICBpZiAoU1AgIT0gMCkgeworICAgIGlmIChTUF9QQVJNICE9IDApIHsKIAlfbmNfbG9ja19nbG9iYWwoY3Vyc2VzKTsKIAotCXdoaWxlIChfbmNfd2luZG93cyAhPSAwKSB7CisJd2hpbGUgKFdpbmRvd0xpc3QoU1BfUEFSTSkgIT0gMCkgewogCSAgICBib29sIGRlbGV0ZWQgPSBGQUxTRTsKIAogCSAgICAvKiBEZWxldGUgb25seSB3aW5kb3dzIHRoYXQncmUgbm90IGEgcGFyZW50ICovCi0JICAgIGZvciAoZWFjaF93aW5kb3cocCkpIHsKKwkgICAgZm9yIChlYWNoX3dpbmRvdyhTUF9QQVJNLCBwKSkgeworCQlXSU5ET1cgKnBfd2luID0gJihwLT53aW4pOwogCQlib29sIGZvdW5kID0gRkFMU0U7CiAKLQkJZm9yIChlYWNoX3dpbmRvdyhxKSkgeworCQlmb3IgKGVhY2hfd2luZG93KFNQX1BBUk0sIHEpKSB7CisJCSAgICBXSU5ET1cgKnFfd2luID0gJihxLT53aW4pOwogCQkgICAgaWYgKChwICE9IHEpCi0JCQkmJiAocS0+d2luLl9mbGFncyAmIF9TVUJXSU4pCi0JCQkmJiAoJihwLT53aW4pID09IHEtPndpbi5fcGFyZW50KSkgeworCQkJJiYgKHFfd2luLT5fZmxhZ3MgJiBfU1VCV0lOKQorCQkJJiYgKHBfd2luID09IHFfd2luLT5fcGFyZW50KSkgewogCQkJZm91bmQgPSBUUlVFOwogCQkJYnJlYWs7CiAJCSAgICB9CiAJCX0KIAogCQlpZiAoIWZvdW5kKSB7Ci0JCSAgICBpZiAoZGVsd2luKCYocC0+d2luKSkgIT0gRVJSKQorCQkgICAgaWYgKGRlbHdpbihwX3dpbikgIT0gRVJSKQogCQkJZGVsZXRlZCA9IFRSVUU7CiAJCSAgICBicmVhazsKIAkJfQpAQCAtOTUsMTUgKzk2LDEzIEBACiAJICAgIGlmICghZGVsZXRlZCkKIAkJYnJlYWs7CiAJfQotCWRlbHNjcmVlbihTUCk7CisJZGVsc2NyZWVuKFNQX1BBUk0pOwogCV9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CiAgICAgfQotICAgIGlmIChjdXJfdGVybSAhPSAwKQotCWRlbF9jdXJ0ZXJtKGN1cl90ZXJtKTsKIAogICAgICh2b2lkKSBfbmNfcHJpbnRmX3N0cmluZygwLCBlbXB0eV92YSk7CiAjaWZkZWYgVFJBQ0UKLSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZigtMSwgMCk7CisgICAgKHZvaWQpIF9uY190cmFjZV9idWYoLTEsIChzaXplX3QpIDApOwogI2VuZGlmCiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKICAgICBGcmVlSWZOZWVkZWQoX25jX3dhY3MpOwpAQCAtMTIxLDEyICsxMjAsMTkgQEAKICAgICByZXR1cm5Wb2lkOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19mcmVlX2FuZF9leGl0KGludCBjb2RlKQorX25jX2ZyZWVhbGwodm9pZCkKIHsKLSAgICBjaGFyICpsYXN0X3NldGJ1ZiA9IChTUCAhPSAwKSA/IFNQLT5fc2V0YnVmIDogMDsKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZyZWVhbGwpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKIAotICAgIF9uY19mcmVlYWxsKCk7CitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlX2FuZF9leGl0KSAoTkNVUlNFU19TUF9EQ0x4IGludCBjb2RlKQoreworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfZmx1c2gpIChOQ1VSU0VTX1NQX0FSRyk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlYWxsKSAoTkNVUlNFU19TUF9BUkcpOwogI2lmZGVmIFRSQUNFCiAgICAgdHJhY2UoMCk7CQkJLyogY2xvc2UgdHJhY2UgZmlsZSwgZnJlZWluZyBpdHMgc2V0YnVmICovCiAgICAgewpAQCAtMTM0LDggKzE0MCw2IEBACiAJZnJlZShfbmNfdmFyYXJncygiPyIsIGZha2UpKTsKICAgICB9CiAjZW5kaWYKLSAgICBmY2xvc2Uoc3Rkb3V0KTsKLSAgICBGcmVlSWZOZWVkZWQobGFzdF9zZXRidWYpOwogICAgIGV4aXQoY29kZSk7CiB9CiAKQEAgLTE0NiwxMiArMTUwLDIxIEBACiB9CiAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUoX25jX2ZyZWVfYW5kX2V4aXQpIChOQ1VSU0VTX1NQX0RDTHggaW50IGNvZGUpCit7CisgICAgaWYgKFNQX1BBUk0pIHsKKwlkZWxzY3JlZW4oU1BfUEFSTSk7CisJaWYgKFNQX1BBUk0tPl90ZXJtKQorCSAgICBOQ1VSU0VTX1NQX05BTUUoZGVsX2N1cnRlcm0pIChOQ1VSU0VTX1NQX0FSR3ggU1BfUEFSTS0+X3Rlcm0pOworICAgIH0KKyAgICBleGl0KGNvZGUpOworfQorI2VuZGlmCisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQogX25jX2ZyZWVfYW5kX2V4aXQoaW50IGNvZGUpCiB7Ci0gICAgaWYgKFNQKQotCWRlbHNjcmVlbihTUCk7Ci0gICAgaWYgKGN1cl90ZXJtICE9IDApCi0JZGVsX2N1cnRlcm0oY3VyX3Rlcm0pOwotICAgIGV4aXQoY29kZSk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlX2FuZF9leGl0KSAoQ1VSUkVOVF9TQ1JFRU4sIGNvZGUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2dldGNoLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2dldGNoLmMKaW5kZXggYTM4MTJiZS4uNDJlYjljYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9nZXRjaC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfZ2V0Y2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMwLDYgKzMwLDcgQEAKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTQxLDQwICs0Miw4MCBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9nZXRjaC5jLHYgMS45OSAyMDA4LzA5LzIwIDE5OjQ2OjEzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2dldGNoLmMsdiAxLjEzMiAyMDE1LzA1LzA5IDE3OjEwOjQxIHRvbSBFeHAgJCIpCiAKICNpbmNsdWRlIDxmaWZvX2RlZnMuaD4KIAogI2lmIFVTRV9SRUVOVFJBTlQKLSNkZWZpbmUgR2V0RXNjZGVsYXkoc3ApIChzcCktPl9FU0NERUxBWQorI2RlZmluZSBHZXRFc2NkZWxheShzcCkgKl9uY19wdHJfRXNjZGVsYXkoc3ApCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBOQ1VSU0VTX1BVQkxJQ19WQVIoRVNDREVMQVkpICh2b2lkKQogewotICAgIHJldHVybiBTUCA/IEdldEVzY2RlbGF5KFNQKSA6IDEwMDA7CisgICAgcmV0dXJuICooX25jX3B0cl9Fc2NkZWxheShDVVJSRU5UX1NDUkVFTikpOworfQorCitOQ1VSU0VTX0VYUE9SVChpbnQgKikKK19uY19wdHJfRXNjZGVsYXkoU0NSRUVOICpzcCkKK3sKKyAgICByZXR1cm4gcHRyRXNjZGVsYXkoc3ApOwogfQogI2Vsc2UKICNkZWZpbmUgR2V0RXNjZGVsYXkoc3ApIEVTQ0RFTEFZCi1OQ1VSU0VTX0VYUE9SVF9WQVIoaW50KQotRVNDREVMQVkgPSAxMDAwOwkJLyogbWF4IGludGVydmFsIGJldHcuIGNoYXJzIGluIGZ1bmtleXMsIGluIG1pbGxpc2VjcyAqLworTkNVUlNFU19FWFBPUlRfVkFSKGludCkgRVNDREVMQVkgPSAxMDAwOwogI2VuZGlmCiAKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQotc2V0X2VzY2RlbGF5KGludCB2YWx1ZSkKK05DVVJTRVNfU1BfTkFNRShzZXRfZXNjZGVsYXkpIChOQ1VSU0VTX1NQX0RDTHggaW50IHZhbHVlKQogewogICAgIGludCBjb2RlID0gT0s7CiAjaWYgVVNFX1JFRU5UUkFOVAotICAgIGlmIChTUCkgewotCVNQLT5fRVNDREVMQVkgPSB2YWx1ZTsKKyAgICBpZiAoU1BfUEFSTSkgeworCVNFVF9FU0NERUxBWSh2YWx1ZSk7CiAgICAgfSBlbHNlIHsKIAljb2RlID0gRVJSOwogICAgIH0KICNlbHNlCisgICAgKHZvaWQpIFNQX1BBUk07CiAgICAgRVNDREVMQVkgPSB2YWx1ZTsKICNlbmRpZgogICAgIHJldHVybiBjb2RlOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorc2V0X2VzY2RlbGF5KGludCB2YWx1ZSkKK3sKKyAgICBpbnQgY29kZTsKKyNpZiBVU0VfUkVFTlRSQU5UCisgICAgY29kZSA9IE5DVVJTRVNfU1BfTkFNRShzZXRfZXNjZGVsYXkpIChDVVJSRU5UX1NDUkVFTiwgdmFsdWUpOworI2Vsc2UKKyAgICBFU0NERUxBWSA9IHZhbHVlOworICAgIGNvZGUgPSBPSzsKICNlbmRpZgorICAgIHJldHVybiBjb2RlOworfQorI2VuZGlmCisjZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KKworI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoZ2V0X2VzY2RlbGF5KSAoTkNVUlNFU19TUF9EQ0wwKQoreworI2lmICFVU0VfUkVFTlRSQU5UCisgICAgKHZvaWQpIFNQX1BBUk07CisjZW5kaWYKKyAgICByZXR1cm4gR2V0RXNjZGVsYXkoU1BfUEFSTSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitnZXRfZXNjZGVsYXkodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGdldF9lc2NkZWxheSkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorI2VuZGlmIC8qIE5DVVJTRVNfRVhUX0ZVTkNTICovCiAKIHN0YXRpYyBpbnQKIF9uY191c2VfbWV0YShXSU5ET1cgKndpbikKQEAgLTgzLDEwICsxMjQsMTUgQEAKICAgICByZXR1cm4gKHNwID8gc3AtPl91c2VfbWV0YSA6IDApOwogfQogCi0jaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCi0jZGVmaW5lIFRXQUlUX01BU0sgNwotI2Vsc2UKLSNkZWZpbmUgVFdBSVRfTUFTSyAzCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisjIGlmZGVmIF9fTUlOR1czMl9fCitzdGF0aWMgSEFORExFCitfbmNfZ2V0X2hhbmRsZShpbnQgZmQpCit7CisgICAgaW50cHRyX3QgdmFsdWUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgcmV0dXJuIChIQU5ETEUpIHZhbHVlOworfQorIyBlbmRpZgogI2VuZGlmCiAKIC8qCkBAIC05NywxOSArMTQzLDM4IEBACiB7CiAgICAgaW50IHJjOwogCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqVENCID0gVENCT2Yoc3ApOworICAgIHJjID0gVENCT2Yoc3ApLT5kcnYtPnRkX3Rlc3Rtb3VzZShUQ0JPZihzcCksIGRlbGF5IEVWRU5UTElTVF8ybmQoZXZsKSk7CisjIGlmZGVmIF9fTUlOR1czMl9fCisgICAgLyogaWYgd2UgZW11bGF0ZSB0ZXJtaW5mbyBvbiBjb25zb2xlLCB3ZSBoYXZlIHRvIHVzZSB0aGUgY29uc29sZSByb3V0aW5lICovCisgICAgaWYgKElzVGVybUluZm9PbkNvbnNvbGUoc3ApKSB7CisJSEFORExFIGZkID0gX25jX2dldF9oYW5kbGUoc3AtPl9pZmQpOworCXJjID0gX25jX21pbmd3X3Rlc3Rtb3VzZShzcCwgZmQsIGRlbGF5IEVWRU5UTElTVF8ybmQoZXZsKSk7CisgICAgfSBlbHNlCisjIGVuZGlmCisJcmMgPSBUQ0ItPmRydi0+dGRfdGVzdG1vdXNlKFRDQiwgZGVsYXkgRVZFTlRMSVNUXzJuZChldmwpKTsKKyNlbHNlCiAjaWYgVVNFX1NZU01PVVNFCiAgICAgaWYgKChzcC0+X21vdXNlX3R5cGUgPT0gTV9TWVNNT1VTRSkKIAkmJiAoc3AtPl9zeXNtb3VzZV9oZWFkIDwgc3AtPl9zeXNtb3VzZV90YWlsKSkgewotCXJldHVybiAyOwotICAgIH0KKwlyYyA9IFRXX01PVVNFOworICAgIH0gZWxzZQogI2VuZGlmCi0gICAgcmMgPSBfbmNfdGltZWRfd2FpdChzcCwgVFdBSVRfTUFTSywgZGVsYXksIChpbnQgKikgMCBFVkVOVExJU1RfMm5kKGV2bCkpOworICAgIHsKKwlyYyA9IF9uY190aW1lZF93YWl0KHNwLAorCQkJICAgIFRXQUlUX01BU0ssCisJCQkgICAgZGVsYXksCisJCQkgICAgKGludCAqKSAwCisJCQkgICAgRVZFTlRMSVNUXzJuZChldmwpKTsKICNpZiBVU0VfU1lTTU9VU0UKLSAgICBpZiAoKHNwLT5fbW91c2VfdHlwZSA9PSBNX1NZU01PVVNFKQotCSYmIChzcC0+X3N5c21vdXNlX2hlYWQgPCBzcC0+X3N5c21vdXNlX3RhaWwpCi0JJiYgKHJjID09IDApCi0JJiYgKGVycm5vID09IEVJTlRSKSkgewotCXJjIHw9IDI7CisJaWYgKChzcC0+X21vdXNlX3R5cGUgPT0gTV9TWVNNT1VTRSkKKwkgICAgJiYgKHNwLT5fc3lzbW91c2VfaGVhZCA8IHNwLT5fc3lzbW91c2VfdGFpbCkKKwkgICAgJiYgKHJjID09IDApCisJICAgICYmIChlcnJubyA9PSBFSU5UUikpIHsKKwkgICAgcmMgfD0gVFdfTU9VU0U7CisJfQorI2VuZGlmCiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIHJjOwpAQCAtMTE4LDcgKzE4Myw3IEBACiBzdGF0aWMgTkNVUlNFU19JTkxJTkUgaW50CiBmaWZvX3BlZWsoU0NSRUVOICpzcCkKIHsKLSAgICBpbnQgY2ggPSBzcC0+X2ZpZm9bcGVla107CisgICAgaW50IGNoID0gKHBlZWsgPj0gMCkgPyBzcC0+X2ZpZm9bcGVla10gOiBFUlI7CiAgICAgVFIoVFJBQ0VfSUVWRU5ULCAoInBlZWtpbmcgYXQgJWQiLCBwZWVrKSk7CiAKICAgICBwX2luYygpOwpAQCAtMTI4LDE1ICsxOTMsMTYgQEAKIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBpbnQKIGZpZm9fcHVsbChTQ1JFRU4gKnNwKQogewotICAgIGludCBjaDsKLSAgICBjaCA9IHNwLT5fZmlmb1toZWFkXTsKKyAgICBpbnQgY2ggPSAoaGVhZCA+PSAwKSA/IHNwLT5fZmlmb1toZWFkXSA6IEVSUjsKKwogICAgIFRSKFRSQUNFX0lFVkVOVCwgKCJwdWxsaW5nICVzIGZyb20gJWQiLCBfbmNfdHJhY2VjaGFyKHNwLCBjaCksIGhlYWQpKTsKIAogICAgIGlmIChwZWVrID09IGhlYWQpIHsKIAloX2luYygpOwogCXBlZWsgPSBoZWFkOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAJaF9pbmMoKTsKKyAgICB9CiAKICNpZmRlZiBUUkFDRQogICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX0lFVkVOVCkpIHsKQEAgLTE1NSw3ICsyMjEsNyBAQAogICAgIGludCBtYXNrID0gMDsKIAogICAgICh2b2lkKSBtYXNrOwotICAgIGlmICh0YWlsID09IC0xKQorICAgIGlmICh0YWlsIDwgMCkKIAlyZXR1cm4gRVJSOwogCiAjaWZkZWYgSElERV9FSU5UUgpAQCAtMTczLDkgKzIzOSw5IEBACiAgICAgfSBlbHNlCiAJbWFzayA9IDA7CiAKLSAgICBpZiAobWFzayAmIDQpIHsKKyAgICBpZiAobWFzayAmIFRXX0VWRU5UKSB7CiAJVCgoImZpZm9fcHVzaDogdW5nZXRjaCBLRVlfRVZFTlQiKSk7Ci0JX25jX3VuZ2V0Y2goc3AsIEtFWV9FVkVOVCk7CisJc2FmZV91bmdldGNoKHNwLCBLRVlfRVZFTlQpOwogCXJldHVybiBLRVlfRVZFTlQ7CiAgICAgfQogI2VsaWYgVVNFX0dQTV9TVVBQT1JUIHx8IFVTRV9FTVhfTU9VU0UgfHwgVVNFX1NZU01PVVNFCkBAIC0xODUsNyArMjUxLDcgQEAKICNlbmRpZgogCiAjaWYgVVNFX0dQTV9TVVBQT1JUIHx8IFVTRV9FTVhfTU9VU0UKLSAgICBpZiAoKHNwLT5fbW91c2VfZmQgPj0gMCkgJiYgKG1hc2sgJiAyKSkgeworICAgIGlmICgoc3AtPl9tb3VzZV9mZCA+PSAwKSAmJiAobWFzayAmIFRXX01PVVNFKSkgewogCXNwLT5fbW91c2VfZXZlbnQoc3ApOwogCWNoID0gS0VZX01PVVNFOwogCW4gPSAxOwpAQCAtMjA0LDEwICsyNzAsNDcgQEAKIAluID0gMTsKICAgICB9IGVsc2UKICNlbmRpZgorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCWlmICgoc3AtPl9tb3VzZV90eXBlID09IE1fVEVSTV9EUklWRVIpCisJICAgICYmIChzcC0+X2Rydl9tb3VzZV9oZWFkIDwgc3AtPl9kcnZfbW91c2VfdGFpbCkpIHsKKwlzcC0+X21vdXNlX2V2ZW50KHNwKTsKKwljaCA9IEtFWV9NT1VTRTsKKwluID0gMTsKKyAgICB9IGVsc2UKKyNlbmRpZgorI2lmIFVTRV9LTElCQ19LQkQKKyAgICBpZiAoTkNfSVNBVFRZKHNwLT5faWZkKSAmJiBzcC0+X2NicmVhaykgeworCWNoID0gX3JlYWRfa2JkKDAsIDEsICFzcC0+X3Jhdyk7CisJbiA9IChjaCA9PSAtMSkgPyAtMSA6IDE7CisJc3AtPl9leHRlbmRlZF9rZXkgPSAoY2ggPT0gMCk7CisgICAgfSBlbHNlCisjZW5kaWYKICAgICB7CQkJCS8qIENhbiBibG9jay4uLiAqLworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCWludCBidWY7CisjaWZkZWYgX19NSU5HVzMyX18KKwlpZiAoTkNfSVNBVFRZKHNwLT5faWZkKSAmJiBJc1Rlcm1JbmZvT25Db25zb2xlKHNwKSAmJiBzcC0+X2NicmVhaykKKwkgICAgbiA9IF9uY19taW5nd19jb25zb2xlX3JlYWQoc3AsCisJCQkJICAgICAgIF9uY19nZXRfaGFuZGxlKHNwLT5faWZkKSwKKwkJCQkgICAgICAgJmJ1Zik7CisJZWxzZQorI2VuZGlmCisJICAgIG4gPSBDYWxsRHJpdmVyXzEoc3AsIHRkX3JlYWQsICZidWYpOworCWNoID0gYnVmOworI2Vsc2UKIAl1bnNpZ25lZCBjaGFyIGMyID0gMDsKLQluID0gcmVhZChzcC0+X2lmZCwgJmMyLCAxKTsKKyMgaWYgVVNFX1BUSFJFQURTX0VJTlRSCisjICBpZiBVU0VfV0VBS19TWU1CT0xTCisJaWYgKChwdGhyZWFkX3NlbGYpICYmIChwdGhyZWFkX2tpbGwpICYmIChwdGhyZWFkX2VxdWFsKSkKKyMgIGVuZGlmCisJICAgIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CisjIGVuZGlmCisJbiA9IChpbnQpIHJlYWQoc3AtPl9pZmQsICZjMiwgKHNpemVfdCkgMSk7CisjaWYgVVNFX1BUSFJFQURTX0VJTlRSCisJX25jX2dsb2JhbHMucmVhZF90aHJlYWQgPSAwOworI2VuZGlmCiAJY2ggPSBjMjsKKyNlbmRpZgogICAgIH0KIAogI2lmZGVmIEhJREVfRUlOVFIKQEAgLTIyMCw3ICszMjMsMTEgQEAKICAgICAgKiBXZSBkb24ndCB3YW50IHRoaXMgZGlmZmVyZW5jZSB0byBzaG93LiAgVGhpcyBwaWVjZSBvZiBjb2RlCiAgICAgICogdHJpZXMgdG8gbWFrZSBpdCBsb29rIGxpa2Ugd2UgYWx3YXlzIGhhdmUgcmVzdGFydGluZyBzaWduYWxzLgogICAgICAqLwotICAgIGlmIChuIDw9IDAgJiYgZXJybm8gPT0gRUlOVFIpCisgICAgaWYgKG4gPD0gMCAmJiBlcnJubyA9PSBFSU5UUgorIyBpZiBVU0VfUFRIUkVBRFNfRUlOVFIKKwkmJiAoX25jX2dsb2JhbHMuaGF2ZV9zaWd3aW5jaCA9PSAwKQorIyBlbmRpZgorCSkKIAlnb3RvIGFnYWluOwogI2VuZGlmCiAKQEAgLTI2MCwxMiArMzY3LDEyIEBACiB7CiAjaWZkZWYgVVNFX1BUSFJFQURTCiAgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKLSAgICBpZiAoX25jX3VzZV9wdGhyZWFkcyAmJiBzcCAhPSBTUCkgeworICAgIGlmIChfbmNfdXNlX3B0aHJlYWRzICYmIHNwICE9IENVUlJFTlRfU0NSRUVOKSB7CiAJU0NSRUVOICpzYXZlX1NQOwogCiAJLyogdGVtcG9yYXJpbHkgc3dpdGNoIHRvIHRoZSB3aW5kb3cncyBzY3JlZW4gdG8gY2hlY2svcmVmcmVzaCAqLwogCV9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwotCXNhdmVfU1AgPSBTUDsKKwlzYXZlX1NQID0gQ1VSUkVOVF9TQ1JFRU47CiAJX25jX3NldF9zY3JlZW4oc3ApOwogCXJlY3VyX3dyZWZyZXNoKHdpbik7CiAJX25jX3NldF9zY3JlZW4oc2F2ZV9TUCk7CkBAIC0yODYsMTIgKzM5MywxMiBAQAogCiAgICAgaWYgKHNwICE9IDApIHsKICNpZmRlZiBVU0VfUFRIUkVBRFMKLQlpZiAoX25jX3VzZV9wdGhyZWFkcyAmJiBzcCAhPSBTUCkgeworCWlmIChfbmNfdXNlX3B0aHJlYWRzICYmIHNwICE9IENVUlJFTlRfU0NSRUVOKSB7CiAJICAgIFNDUkVFTiAqc2F2ZV9TUDsKIAogCSAgICAvKiB0ZW1wb3JhcmlseSBzd2l0Y2ggdG8gdGhlIHdpbmRvdydzIHNjcmVlbiB0byBnZXQgY29va2VkIGlucHV0ICovCiAJICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwotCSAgICBzYXZlX1NQID0gU1A7CisJICAgIHNhdmVfU1AgPSBDVVJSRU5UX1NDUkVFTjsKIAkgICAgX25jX3NldF9zY3JlZW4oc3ApOwogCSAgICByYyA9IHJlY3VyX3dnZXRuc3RyKHdpbiwgYnVmKTsKIAkgICAgX25jX3NldF9zY3JlZW4oc2F2ZV9TUCk7CkBAIC0zMTEsMTcgKzQxOCwxOCBAQAogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfd2dldGNoKFdJTkRPVyAqd2luLAotCSAgIHVuc2lnbmVkIGxvbmcgKnJlc3VsdCwKKwkgICBpbnQgKnJlc3VsdCwKIAkgICBpbnQgdXNlX21ldGEKIAkgICBFVkVOVExJU1RfMm5kKF9uY19ldmVudGxpc3QgKiBldmwpKQogewogICAgIFNDUkVFTiAqc3A7CiAgICAgaW50IGNoOworICAgIGludCByYyA9IDA7CiAjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCi0gICAgbG9uZyBldmVudF9kZWxheSA9IC0xOworICAgIGludCBldmVudF9kZWxheSA9IC0xOwogI2VuZGlmCiAKLSAgICBUKChUX0NBTExFRCgiX25jX3dnZXRjaCglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIl9uY193Z2V0Y2goJXApIiksICh2b2lkICopIHdpbikpOwogCiAgICAgKnJlc3VsdCA9IDA7CiAKQEAgLTM1MiwxOSArNDYwLDIwIEBACiAJIXNwLT5fY2JyZWFrICYmCiAJIXNwLT5fY2FsbGVkX3dnZXRjaCkgewogCWNoYXIgYnVmW01BWENPTFVNTlNdLCAqYnVmcDsKLQlpbnQgcmM7CiAKIAlUUihUUkFDRV9JRVZFTlQsICgiZmlsbGluZyBxdWV1ZSBpbiBjb29rZWQgbW9kZSIpKTsKIAotCXJjID0gcmVjdXJfd2dldG5zdHIod2luLCBidWYpOwotCiAJLyogdW5nZXRjaCBpbiByZXZlcnNlIG9yZGVyICovCiAjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCi0JaWYgKHJjICE9IEtFWV9FVkVOVCkKKwlyYyA9IHJlY3VyX3dnZXRuc3RyKHdpbiwgYnVmKTsKKwlpZiAocmMgIT0gS0VZX0VWRU5UICYmIHJjICE9IEVSUikKKwkgICAgc2FmZV91bmdldGNoKHNwLCAnXG4nKTsKKyNlbHNlCisJaWYgKHJlY3VyX3dnZXRuc3RyKHdpbiwgYnVmKSAhPSBFUlIpCisJICAgIHNhZmVfdW5nZXRjaChzcCwgJ1xuJyk7CiAjZW5kaWYKLQkgICAgX25jX3VuZ2V0Y2goc3AsICdcbicpOwogCWZvciAoYnVmcCA9IGJ1ZiArIHN0cmxlbihidWYpOyBidWZwID4gYnVmOyBidWZwLS0pCi0JICAgIF9uY191bmdldGNoKHNwLCBidWZwWy0xXSk7CisJICAgIHNhZmVfdW5nZXRjaChzcCwgYnVmcFstMV0pOwogCiAjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCiAJLyogUmV0dXJuIGl0IGZpcnN0ICovCkBAIC0zODQsNyArNDkzLDYgQEAKICAgICBpZiAod2luLT5fbm90aW1lb3V0IHx8ICh3aW4tPl9kZWxheSA+PSAwKSB8fCAoc3AtPl9jYnJlYWsgPiAxKSkgewogCWlmIChoZWFkID09IC0xKSB7CS8qIGZpZm8gaXMgZW1wdHkgKi8KIAkgICAgaW50IGRlbGF5OwotCSAgICBpbnQgcmM7CiAKIAkgICAgVFIoVFJBQ0VfSUVWRU5ULCAoInRpbWVkIGRlbGF5IGluIHdnZXRjaCgpIikpOwogCSAgICBpZiAoc3AtPl9jYnJlYWsgPiAxKQpAQCAtNDAyLDEzICs1MTAsMTMgQEAKIAkgICAgcmMgPSBjaGVja19tb3VzZV9hY3Rpdml0eShzcCwgZGVsYXkgRVZFTlRMSVNUXzJuZChldmwpKTsKIAogI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwotCSAgICBpZiAocmMgJiA0KSB7CisJICAgIGlmIChyYyAmIFRXX0VWRU5UKSB7CiAJCSpyZXN1bHQgPSBLRVlfRVZFTlQ7CiAJCXJldHVybkNvZGUoS0VZX0NPREVfWUVTKTsKIAkgICAgfQogI2VuZGlmCiAJICAgIGlmICghcmMpIHsKLQkJcmV0dXJuQ29kZShFUlIpOworCQlnb3RvIGNoZWNrX3NpZ3dpbmNoOwogCSAgICB9CiAJfQogCS8qIGVsc2UgZ28gb24gdG8gcmVhZCBkYXRhIGF2YWlsYWJsZSAqLwpAQCAtNDI3LDcgKzUzNSw2IEBACiAJICogaW5jcmVhc2UgdGhlIHdhaXQgd2l0aCBtb3VzZWludGVydmFsKCkuCiAJICovCiAJaW50IHJ1bmNvdW50ID0gMDsKLQlpbnQgcmM7CiAKIAlkbyB7CiAJICAgIGNoID0ga2dldGNoKHNwIEVWRU5UTElTVF8ybmQoZXZsKSk7CkBAIC00NDIsMTEgKzU0OSwxMSBAQAogCSAgICAoY2ggPT0gS0VZX01PVVNFCiAJICAgICAmJiAoKChyYyA9IGNoZWNrX21vdXNlX2FjdGl2aXR5KHNwLCBzcC0+X21heGNsaWNrCiAJCQkJCSAgICAgRVZFTlRMSVNUXzJuZChldmwpKSkgIT0gMAotCQkgICYmICEocmMgJiA0KSkKKwkJICAmJiAhKHJjICYgVFdfRVZFTlQpKQogCQkgfHwgIXNwLT5fbW91c2VfcGFyc2Uoc3AsIHJ1bmNvdW50KSkpOwogI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwotCWlmICgocmMgJiA0KSAmJiAhY2ggPT0gS0VZX0VWRU5UKSB7Ci0JICAgIF9uY191bmdldGNoKHNwLCBjaCk7CisJaWYgKChyYyAmIFRXX0VWRU5UKSAmJiAhKGNoID09IEtFWV9FVkVOVCkpIHsKKwkgICAgc2FmZV91bmdldGNoKHNwLCBjaCk7CiAJICAgIGNoID0gS0VZX0VWRU5UOwogCX0KICNlbmRpZgpAQCAtNDU0LDEyICs1NjEsMTIgQEAKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKIAkgICAgLyogbW91c2UgZXZlbnQgc2VxdWVuY2UgZW5kZWQgYnkgYW4gZXZlbnQsIHJlcG9ydCBldmVudCAqLwogCSAgICBpZiAoY2ggPT0gS0VZX0VWRU5UKSB7Ci0JCV9uY191bmdldGNoKHNwLCBLRVlfTU9VU0UpOwkvKiBGSVhNRSBUaGlzIGludGVycnVwdHMgYSBnZXN0dXJlLi4uICovCisJCXNhZmVfdW5nZXRjaChzcCwgS0VZX01PVVNFKTsJLyogRklYTUUgVGhpcyBpbnRlcnJ1cHRzIGEgZ2VzdHVyZS4uLiAqLwogCSAgICB9IGVsc2UKICNlbmRpZgogCSAgICB7CiAJCS8qIG1vdXNlIGV2ZW50IHNlcXVlbmNlIGVuZGVkIGJ5IGtleXN0cm9rZSwgc3RvcmUga2V5c3Ryb2tlICovCi0JCV9uY191bmdldGNoKHNwLCBjaCk7CisJCXNhZmVfdW5nZXRjaChzcCwgY2gpOwogCQljaCA9IEtFWV9NT1VTRTsKIAkgICAgfQogCX0KQEAgLTQ3MCwxMiArNTc3LDE5IEBACiAgICAgfQogCiAgICAgaWYgKGNoID09IEVSUikgeworICAgICAgY2hlY2tfc2lnd2luY2g6CiAjaWYgVVNFX1NJWkVDSEFOR0UKIAlpZiAoX25jX2hhbmRsZV9zaWd3aW5jaChzcCkpIHsKIAkgICAgX25jX3VwZGF0ZV9zY3JlZW5zaXplKHNwKTsKIAkgICAgLyogcmVzaXpldGVybSBjYW4gcHVzaCBLRVlfUkVTSVpFICovCiAJICAgIGlmIChjb29rZWRfa2V5X2luX2ZpZm8oKSkgewogCQkqcmVzdWx0ID0gZmlmb19wdWxsKHNwKTsKKwkJLyoKKwkJICogR2V0IHRoZSBFUlIgZnJvbSBxdWV1ZSAtLSBpdCBpcyBmcm9tIFdJTkNILAorCQkgKiBzbyB3ZSBzaG91bGQgdGFrZSBpdCBvdXQsIHRoZSAiZXJyb3IiIGlzIGhhbmRsZWQuCisJCSAqLworCQlpZiAoZmlmb19wZWVrKHNwKSA9PSAtMSkKKwkJICAgIGZpZm9fcHVsbChzcCk7CiAJCXJldHVybkNvZGUoKnJlc3VsdCA+PSBLRVlfTUlOID8gS0VZX0NPREVfWUVTIDogT0spOwogCSAgICB9CiAJfQpAQCAtNDkwLDcgKzYwNCw3IEBACiAgICAgICoKICAgICAgKiBJZiBjYXJyaWFnZSByZXR1cm4gaXMgZGVmaW5lZCBhcyBhIGZ1bmN0aW9uIGtleSBpbiB0aGUKICAgICAgKiB0ZXJtaW5mbywgZS5nLiwga2VudCwgdGhlbiBTb2xhcmlzIG1heSByZXR1cm4gZWl0aGVyIF5KIChvciBeTQotICAgICAqIGlmIG5vbmwoKSBpcyBzZXQpIG9yIEtFWV9FTlRFUiBkZXBlbmRpbmcgb24gdGhlIGVjaG8oKSBtb2RlLiAKKyAgICAgKiBpZiBub25sKCkgaXMgc2V0KSBvciBLRVlfRU5URVIgZGVwZW5kaW5nIG9uIHRoZSBlY2hvKCkgbW9kZS4KICAgICAgKiBXZSBlY2hvIGJlZm9yZSB0cmFuc2xhdGluZyBjYXJyaWFnZSByZXR1cm4gYmFzZWQgb24gbm9ubCgpLAogICAgICAqIHNpbmNlIHRoZSB2aXN1YWwgcmVzdWx0IHNpbXBseSBtb3ZlcyB0aGUgY3Vyc29yIHRvIGNvbHVtbiAwLgogICAgICAqCkBAIC01MDIsNyArNjE2LDcgQEAKICAgICAgKiBjdXJzb3IgdG8gdGhlIGxlZnQuCiAgICAgICovCiAgICAgaWYgKHNwLT5fZWNobyAmJiAhKHdpbi0+X2ZsYWdzICYgX0lTUEFEKSkgewotCWNodHlwZSBiYWNrdXAgPSAoY2ggPT0gS0VZX0JBQ0tTUEFDRSkgPyAnXGInIDogY2g7CisJY2h0eXBlIGJhY2t1cCA9IChjaHR5cGUpICgoY2ggPT0gS0VZX0JBQ0tTUEFDRSkgPyAnXGInIDogY2gpOwogCWlmIChiYWNrdXAgPCBLRVlfTUlOKQogCSAgICB3ZWNob2NoYXIod2luLCBiYWNrdXApOwogICAgIH0KQEAgLTUzMyw3ICs2NDcsNyBAQAogd2dldGNoX2V2ZW50cyhXSU5ET1cgKndpbiwgX25jX2V2ZW50bGlzdCAqIGV2bCkKIHsKICAgICBpbnQgY29kZTsKLSAgICB1bnNpZ25lZCBsb25nIHZhbHVlOworICAgIGludCB2YWx1ZTsKIAogICAgIFQoKFRfQ0FMTEVEKCJ3Z2V0Y2hfZXZlbnRzKCVwLCVwKSIpLCB3aW4sIGV2bCkpOwogICAgIGNvZGUgPSBfbmNfd2dldGNoKHdpbiwKQEAgLTU1MCw5ICs2NjQsOSBAQAogd2dldGNoKFdJTkRPVyAqd2luKQogewogICAgIGludCBjb2RlOwotICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CisgICAgaW50IHZhbHVlOwogCi0gICAgVCgoVF9DQUxMRUQoIndnZXRjaCglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIndnZXRjaCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAgICAgY29kZSA9IF9uY193Z2V0Y2god2luLAogCQkgICAgICAmdmFsdWUsCiAJCSAgICAgIF9uY191c2VfbWV0YSh3aW4pCkBAIC02MjYsMTQgKzc0MCwxNSBAQAogCSAgICBicmVhazsKIAl9CiAJVFIoVFJBQ0VfSUVWRU5ULCAoInB0cj0lcCwgY2g9JWQsIHZhbHVlPSVkIiwKLQkJCSAgcHRyLCBwdHItPmNoLCBwdHItPnZhbHVlKSk7CisJCQkgICh2b2lkICopIHB0ciwgcHRyLT5jaCwgcHRyLT52YWx1ZSkpOwogCiAJaWYgKHB0ci0+dmFsdWUgIT0gMCkgewkvKiBzZXF1ZW5jZSB0ZXJtaW5hdGVkICovCiAJICAgIFRSKFRSQUNFX0lFVkVOVCwgKCJlbmQgb2Ygc2VxdWVuY2UiKSk7Ci0JICAgIGlmIChwZWVrID09IHRhaWwpCisJICAgIGlmIChwZWVrID09IHRhaWwpIHsKIAkJZmlmb19jbGVhcihzcCk7Ci0JICAgIGVsc2UKKwkgICAgfSBlbHNlIHsKIAkJaGVhZCA9IHBlZWs7CisJICAgIH0KIAkgICAgcmV0dXJuIChwdHItPnZhbHVlKTsKIAl9CiAKQEAgLTY0NSw3ICs3NjAsNyBAQAogCSAgICBUUihUUkFDRV9JRVZFTlQsICgid2FpdGluZyBmb3IgcmVzdCBvZiBzZXF1ZW5jZSIpKTsKIAkgICAgcmMgPSBjaGVja19tb3VzZV9hY3Rpdml0eShzcCwgdGltZWxlZnQgRVZFTlRMSVNUXzJuZChldmwpKTsKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLQkgICAgaWYgKHJjICYgNCkgeworCSAgICBpZiAocmMgJiBUV19FVkVOVCkgewogCQlUUihUUkFDRV9JRVZFTlQsICgiaW50ZXJydXB0ZWQgYnkgYSB1c2VyIGV2ZW50IikpOwogCQkvKiBGSVhNRSBTaG91bGQgaGF2ZSBwcmVzZXJ2ZWQgcmVtYWluZGVyIHRpbWVsZWZ0IGZvciByZXVzZS4uLiAqLwogCQlwZWVrID0gaGVhZDsJLyogUmVzdGFydCBpbnRlcnByZXRpbmcgbGF0ZXIgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfZ2V0c3RyLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2dldHN0ci5jCmluZGV4IGIxN2RmMDMuLjBlNDQ2MzQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfZ2V0c3RyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9nZXRzdHIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDE2ICszOSwxNSBAQAogKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2dldHN0ci5jLHYgMS4yNyAyMDA4LzA4LzE2IDE5OjIwOjA0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2dldHN0ci5jLHYgMS4zMCAyMDExLzEwLzIyIDE2OjMxOjM1IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBUaGlzIHdpcGVzIG91dCB0aGUgbGFzdCBjaGFyYWN0ZXIsIG5vIG1hdHRlciB3aGV0aGVyIGl0IHdhcyBhIHRhYiwgY29udHJvbAogICogb3Igb3RoZXIgY2hhcmFjdGVyLCBhbmQgaGFuZGxlcyByZXZlcnNlIHdyYXBhcm91bmQuCiAgKi8KIHN0YXRpYyBjaGFyICoKLVdpcGVPdXQoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgY2hhciAqZmlyc3QsIGNoYXIgKmxhc3QsIGJvb2wgZWNob2VkKQorV2lwZU91dChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCBjaGFyICpmaXJzdCwgY2hhciAqbGFzdCwgaW50IGVjaG9lZCkKIHsKICAgICBpZiAobGFzdCA+IGZpcnN0KSB7CiAJKi0tbGFzdCA9ICdcMCc7CkBAIC04NCwyNCArODMsMjQgQEAKICAgICBpbnQgY2g7CiAgICAgaW50IHksIHg7CiAKLSAgICBUKChUX0NBTExFRCgid2dldG5zdHIoJXAsJXAsICVkKSIpLCB3aW4sIHN0ciwgbWF4bGVuKSk7CisgICAgVCgoVF9DQUxMRUQoIndnZXRuc3RyKCVwLCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sICh2b2lkICopIHN0ciwgbWF4bGVuKSk7CiAKICAgICBpZiAoIXdpbikKIAlyZXR1cm5Db2RlKEVSUik7CiAKLSAgICBfbmNfZ2V0X3R0eV9tb2RlKCZidWYpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfZ2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4ICZidWYpOwogCiAgICAgb2xkbmwgPSBzcC0+X25sOwogICAgIG9sZGVjaG8gPSBzcC0+X2VjaG87CiAgICAgb2xkcmF3ID0gc3AtPl9yYXc7CiAgICAgb2xkY2JyZWFrID0gc3AtPl9jYnJlYWs7Ci0gICAgbmwoKTsKLSAgICBub2VjaG8oKTsKLSAgICBub3JhdygpOwotICAgIGNicmVhaygpOworICAgIE5DVVJTRVNfU1BfTkFNRShubCkgKE5DVVJTRVNfU1BfQVJHKTsKKyAgICBOQ1VSU0VTX1NQX05BTUUobm9lY2hvKSAoTkNVUlNFU19TUF9BUkcpOworICAgIE5DVVJTRVNfU1BfTkFNRShub3JhdykgKE5DVVJTRVNfU1BfQVJHKTsKKyAgICBOQ1VSU0VTX1NQX05BTUUoY2JyZWFrKSAoTkNVUlNFU19TUF9BUkcpOwogCi0gICAgZXJhc2VjID0gZXJhc2VjaGFyKCk7Ci0gICAga2lsbGMgPSBraWxsY2hhcigpOworICAgIGVyYXNlYyA9IE5DVVJTRVNfU1BfTkFNRShlcmFzZWNoYXIpIChOQ1VSU0VTX1NQX0FSRyk7CisgICAga2lsbGMgPSBOQ1VSU0VTX1NQX05BTUUoa2lsbGNoYXIpIChOQ1VSU0VTX1NQX0FSRyk7CiAKICAgICBvbGRzdHIgPSBzdHI7CiAgICAgZ2V0eXgod2luLCB5LCB4KTsKQEAgLTE0NCw3ICsxNDMsNyBAQAogCSAgICB9CiAJfSBlbHNlIGlmIChjaCA+PSBLRVlfTUlOCiAJCSAgIHx8IChtYXhsZW4gPj0gMCAmJiBzdHIgLSBvbGRzdHIgPj0gbWF4bGVuKSkgewotCSAgICBiZWVwKCk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShiZWVwKSAoTkNVUlNFU19TUF9BUkcpOwogCX0gZWxzZSB7CiAJICAgICpzdHIrKyA9IChjaGFyKSBjaDsKIAkgICAgaWYgKG9sZGVjaG8gPT0gVFJVRSkgewpAQCAtMTkzLDcgKzE5Miw3IEBACiAgICAgc3AtPl9yYXcgPSBvbGRyYXc7CiAgICAgc3AtPl9jYnJlYWsgPSBvbGRjYnJlYWs7CiAKLSAgICBfbmNfc2V0X3R0eV9tb2RlKCZidWYpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4ICZidWYpOwogCiAgICAgKnN0ciA9ICdcMCc7CiAgICAgaWYgKGNoID09IEVSUikKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfaGxpbmUuYyBiL25jdXJzZXMvYmFzZS9saWJfaGxpbmUuYwppbmRleCAyZWYyY2M1Li4xZjAzODA4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2hsaW5lLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9obGluZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDAsMTYgKzQwLDE2IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2hsaW5lLmMsdiAxLjExIDIwMDYvMDMvMTEgMjE6NTI6MjcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfaGxpbmUuYyx2IDEuMTMgMjAxMC8xMi8xOSAwMTo0ODozOSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3aGxpbmUoV0lORE9XICp3aW4sIGNodHlwZSBjaCwgaW50IG4pCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7Ci0gICAgTkNVUlNFU19TSVpFX1Qgc3RhcnQ7Ci0gICAgTkNVUlNFU19TSVpFX1QgZW5kOworICAgIGludCBzdGFydDsKKyAgICBpbnQgZW5kOwogCi0gICAgVCgoVF9DQUxMRUQoIndobGluZSglcCwlcywlZCkiKSwgd2luLCBfdHJhY2VjaHR5cGUoY2gpLCBuKSk7CisgICAgVCgoVF9DQUxMRUQoIndobGluZSglcCwlcywlZCkiKSwgKHZvaWQgKikgd2luLCBfdHJhY2VjaHR5cGUoY2gpLCBuKSk7CiAKICAgICBpZiAod2luKSB7CiAJc3RydWN0IGxkYXQgKmxpbmUgPSAmKHdpbi0+X2xpbmVbd2luLT5fY3VyeV0pOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9pbW1lZG9rLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2ltbWVkb2suYwppbmRleCA4Nzk4OGI2Li5kNTFiNjBhIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2ltbWVkb2suYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2ltbWVkb2suYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDEyICs0MCwxMiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbW1lZG9rLmMsdiAxLjQgMjAwMC8xMi8xMCAwMjo0MzoyNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbW1lZG9rLmMsdiAxLjUgMjAwOS8xMC8yNCAyMjozMjoxMSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogaW1tZWRvayhXSU5ET1cgKndpbiwgYm9vbCBmbGFnKQogewotICAgIFQoKFRfQ0FMTEVEKCJpbW1lZG9rKCVwLCVkKSIpLCB3aW4sIGZsYWcpKTsKKyAgICBUKChUX0NBTExFRCgiaW1tZWRvayglcCwlZCkiKSwgKHZvaWQgKikgd2luLCBmbGFnKSk7CiAKICAgICBpZiAod2luKQogCXdpbi0+X2ltbWVkID0gZmxhZzsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfaW5jaHN0ci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9pbmNoc3RyLmMKaW5kZXggNmZmMDE2OC4uYWViYjZkNiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9pbmNoc3RyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9pbmNoc3RyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAsMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MCwxNCArNDEsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfaW5jaHN0ci5jLHYgMS4xMCAyMDAxLzA2LzAyIDIzOjM3OjU4IHNraW1vIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfaW5jaHN0ci5jLHYgMS4xMiAyMDEwLzEyLzIwIDAxOjM3OjQxIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXdpbmNobnN0cihXSU5ET1cgKndpbiwgY2h0eXBlICogc3RyLCBpbnQgbikKK3dpbmNobnN0cihXSU5ET1cgKndpbiwgY2h0eXBlICpzdHIsIGludCBuKQogewogICAgIGludCBpID0gMDsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3aW5jaG5zdHIoJXAsJXAsJWQpIiksIHdpbiwgc3RyLCBuKSk7CisgICAgVCgoVF9DQUxMRUQoIndpbmNobnN0ciglcCwlcCwlZCkiKSwgKHZvaWQgKikgd2luLCAodm9pZCAqKSBzdHIsIG4pKTsKIAogICAgIGlmICghc3RyKQogCXJldHVybkNvZGUoMCk7CkBAIC01NSw3ICs1Niw3IEBACiAgICAgaWYgKHdpbikgewogCWZvciAoOyAobiA8IDAgfHwgKGkgPCBuKSkgJiYgKHdpbi0+X2N1cnggKyBpIDw9IHdpbi0+X21heHgpOyBpKyspCiAJICAgIHN0cltpXSA9Ci0JCUNoYXJPZih3aW4tPl9saW5lW3dpbi0+X2N1cnldLnRleHRbd2luLT5fY3VyeCArIGldKSB8CisJCShjaHR5cGUpIENoYXJPZih3aW4tPl9saW5lW3dpbi0+X2N1cnldLnRleHRbd2luLT5fY3VyeCArIGldKSB8CiAJCUF0dHJPZih3aW4tPl9saW5lW3dpbi0+X2N1cnldLnRleHRbd2luLT5fY3VyeCArIGldKTsKICAgICB9CiAgICAgc3RyW2ldID0gKGNodHlwZSkgMDsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfaW5pdHNjci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9pbml0c2NyLmMKaW5kZXggYjJmZWYwYy4uMGU4YTI5NyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9pbml0c2NyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9pbml0c2NyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8c3lzL3Rlcm1pby5oPgkJLyogbmVlZGVkIGZvciBJU0MgKi8KICNlbmRpZgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2luaXRzY3IuYyx2IDEuMzggMjAwOC8wOC8xNiAyMToyMDo0OCBXZXJuZXIuRmluayBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2luaXRzY3IuYyx2IDEuNDAgMjAxNC8wNC8yNiAxODo0Nzo1MSBqdWVyZ2VuIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCiBpbml0c2NyKHZvaWQpCkBAIC03NSw5ICs3NSw5IEBACiAJICogY29yZSB3aGVuIGF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gc3Rkb3V0LiAgT3BlbmluZyAvZGV2L3R0eQogCSAqIGV4cGxpY2l0bHkgc2VlbXMgdG8gZml4IHRoZSBwcm9ibGVtLgogCSAqLwotCWlmIChpc2F0dHkoZmlsZW5vKHN0ZG91dCkpKSB7CisJaWYgKE5DX0lTQVRUWShmaWxlbm8oc3Rkb3V0KSkpIHsKIAkgICAgRklMRSAqZnAgPSBmb3BlbigiL2Rldi90dHkiLCAidyIpOwotCSAgICBpZiAoZnAgIT0gMCAmJiBpc2F0dHkoZmlsZW5vKGZwKSkpIHsKKwkgICAgaWYgKGZwICE9IDAgJiYgTkNfSVNBVFRZKGZpbGVubyhmcCkpKSB7CiAJCWZjbG9zZShzdGRvdXQpOwogCQlkdXAyKGZpbGVubyhmcCksIFNURE9VVF9GSUxFTk8pOwogCQlzdGRvdXQgPSBmZG9wZW4oU1RET1VUX0ZJTEVOTywgInciKTsKQEAgLTkwLDcgKzkwLDExIEBACiAJfQogCiAJLyogZGVmX3NoZWxsX21vZGUgLSBkb25lIGluIG5ld3Rlcm0vX25jX3NldHVwc2NyZWVuICovCisjaWYgTkNVUlNFU19TUF9GVU5DUworCU5DVVJTRVNfU1BfTkFNRShkZWZfcHJvZ19tb2RlKSAoQ1VSUkVOVF9TQ1JFRU4pOworI2Vsc2UKIAlkZWZfcHJvZ19tb2RlKCk7CisjZW5kaWYKICAgICB9CiAgICAgcmVzdWx0ID0gc3Rkc2NyOwogICAgIF9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2luc2NoLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2luc2NoLmMKaW5kZXggOTE2NmVhNS4uMzJlYWVkNyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9pbnNjaC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfaW5zY2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQzLDI0ICs0MywzMiBAQAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbnNjaC5jLHYgMS4yNSAyMDA4LzAyLzAzIDAwOjE0OjM3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2luc2NoLmMsdiAxLjM1IDIwMTMvMDUvMTggMjE6NTg6NTYgdG9tIEV4cCAkIikKIAogLyoKICAqIEluc2VydCB0aGUgZ2l2ZW4gY2hhcmFjdGVyLCB1cGRhdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbiB0byBzaW1wbGlmeQogICogaW5zZXJ0aW5nIGEgc3RyaW5nLgogICovCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1fbmNfaW5zZXJ0X2NoKFdJTkRPVyAqd2luLCBjaHR5cGUgY2gpCitfbmNfaW5zZXJ0X2NoKFNDUkVFTiAqc3AsIFdJTkRPVyAqd2luLCBjaHR5cGUgY2gpCiB7CiAgICAgaW50IGNvZGUgPSBPSzsKKyAgICBpbnQgY2g4ID0gKGludCkgQ2hDaGFyT2YoY2gpOwogICAgIE5DVVJTRVNfQ0hfVCB3Y2g7CiAgICAgaW50IGNvdW50OwogICAgIE5DVVJTRVNfQ09OU1QgY2hhciAqczsKKyAgICBpbnQgdGFic2l6ZSA9ICgKKyNpZiBVU0VfUkVFTlRSQU5UCisJCSAgICAgIHNwLT5fVEFCU0laRQorI2Vsc2UKKwkJICAgICAgVEFCU0laRQorI2VuZGlmCisgICAgKTsKIAogICAgIHN3aXRjaCAoY2gpIHsKICAgICBjYXNlICdcdCc6Ci0JZm9yIChjb3VudCA9IChUQUJTSVpFIC0gKHdpbi0+X2N1cnggJSBUQUJTSVpFKSk7IGNvdW50ID4gMDsgY291bnQtLSkgewotCSAgICBpZiAoKGNvZGUgPSBfbmNfaW5zZXJ0X2NoKHdpbiwgJyAnKSkgIT0gT0spCisJZm9yIChjb3VudCA9ICh0YWJzaXplIC0gKHdpbi0+X2N1cnggJSB0YWJzaXplKSk7IGNvdW50ID4gMDsgY291bnQtLSkgeworCSAgICBpZiAoKGNvZGUgPSBfbmNfaW5zZXJ0X2NoKHNwLCB3aW4sICcgJykpICE9IE9LKQogCQlicmVhazsKIAl9CiAJYnJlYWs7CkBAIC03NSw4ICs4Myw5IEBACiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKIAkgICAgICAgV0lORE9XX0VYVCh3aW4sIGFkZGNoX3VzZWQpID09IDAgJiYKICNlbmRpZgotCSAgICAgICBpczhiaXRzKENoQ2hhck9mKGNoKSkgJiYKLQkgICAgICAgaXNwcmludChDaENoYXJPZihjaCkpKSB7CisJICAgICAgIChpc3ByaW50KGNoOCkgfHwKKwkJKENoQXR0ck9mKGNoKSAmIEFfQUxUQ0hBUlNFVCkgfHwKKwkJKHNwICE9IDAgJiYgc3AtPl9sZWdhY3lfY29kaW5nICYmICFpc2NudHJsKGNoOCkpKSkgewogCSAgICBpZiAod2luLT5fY3VyeCA8PSB3aW4tPl9tYXh4KSB7CiAJCXN0cnVjdCBsZGF0ICpsaW5lID0gJih3aW4tPl9saW5lW3dpbi0+X2N1cnldKTsKIAkJTkNVUlNFU19DSF9UICplbmQgPSAmKGxpbmUtPnRleHRbd2luLT5fY3VyeF0pOwpAQCAtOTIsMTAgKzEwMSwxMCBAQAogCQkqdGVtcDEgPSBfbmNfcmVuZGVyKHdpbiwgd2NoKTsKIAkJd2luLT5fY3VyeCsrOwogCSAgICB9Ci0JfSBlbHNlIGlmIChpczhiaXRzKENoQ2hhck9mKGNoKSkgJiYgaXNjbnRybChDaENoYXJPZihjaCkpKSB7Ci0JICAgIHMgPSB1bmN0cmwoQ2hDaGFyT2YoY2gpKTsKKwl9IGVsc2UgaWYgKGlzY250cmwoY2g4KSkgeworCSAgICBzID0gTkNVUlNFU19TUF9OQU1FKHVuY3RybCkgKE5DVVJTRVNfU1BfQVJHeCAoY2h0eXBlKSBjaDgpOwogCSAgICB3aGlsZSAoKnMgIT0gJ1wwJykgewotCQljb2RlID0gX25jX2luc2VydF9jaCh3aW4sIENoQXR0ck9mKGNoKSB8IFVDaGFyKCpzKSk7CisJCWNvZGUgPSBfbmNfaW5zZXJ0X2NoKHNwLCB3aW4sIENoQXR0ck9mKGNoKSB8IFVDaGFyKCpzKSk7CiAJCWlmIChjb2RlICE9IE9LKQogCQkgICAgYnJlYWs7CiAJCSsrczsKQEAgLTExMCwxMyArMTE5LDE0IEBACiAJICAgIHdjaCA9IF9uY19yZW5kZXIod2luLCB3Y2gpOwogCSAgICBjb3VudCA9IF9uY19idWlsZF93Y2god2luLCAmd2NoKTsKIAkgICAgaWYgKGNvdW50ID4gMCkgewotCQljb2RlID0gd2luc193Y2god2luLCAmd2NoKTsKKwkJY29kZSA9IF9uY19pbnNlcnRfd2NoKHdpbiwgJndjaCk7CiAJICAgIH0gZWxzZSBpZiAoY291bnQgPT0gLTEpIHsKIAkJLyogaGFuZGxlIEVJTFNFUSAqLwotCQlpZiAoaXM4Yml0cyhjaCkpIHsKLQkJICAgIHMgPSB1bmN0cmwoQ2hDaGFyT2YoY2gpKTsKKwkJcyA9IE5DVVJTRVNfU1BfTkFNRSh1bmN0cmwpIChOQ1VSU0VTX1NQX0FSR3ggKGNodHlwZSkgY2g4KTsKKwkJaWYgKHN0cmxlbihzKSA+IDEpIHsKIAkJICAgIHdoaWxlICgqcyAhPSAnXDAnKSB7Ci0JCQljb2RlID0gX25jX2luc2VydF9jaCh3aW4sIENoQXR0ck9mKGNoKSB8IFVDaGFyKCpzKSk7CisJCQljb2RlID0gX25jX2luc2VydF9jaChzcCwgd2luLAorCQkJCQkgICAgIENoQXR0ck9mKGNoKSB8IFVDaGFyKCpzKSk7CiAJCQlpZiAoY29kZSAhPSBPSykKIAkJCSAgICBicmVhazsKIAkJCSsrczsKQEAgLTEzOSwxMyArMTQ5LDEzIEBACiAgICAgTkNVUlNFU19TSVpFX1Qgb3g7CiAgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgid2luc2NoKCVwLCAlcykiKSwgd2luLCBfdHJhY2VjaHR5cGUoYykpKTsKKyAgICBUKChUX0NBTExFRCgid2luc2NoKCVwLCAlcykiKSwgKHZvaWQgKikgd2luLCBfdHJhY2VjaHR5cGUoYykpKTsKIAogICAgIGlmICh3aW4gIT0gMCkgewogCW95ID0gd2luLT5fY3VyeTsKIAlveCA9IHdpbi0+X2N1cng7CiAKLQljb2RlID0gX25jX2luc2VydF9jaCh3aW4sIGMpOworCWNvZGUgPSBfbmNfaW5zZXJ0X2NoKF9uY19zY3JlZW5fb2Yod2luKSwgd2luLCBjKTsKIAogCXdpbi0+X2N1cnggPSBveDsKIAl3aW4tPl9jdXJ5ID0gb3k7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2luc2RlbC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9pbnNkZWwuYwppbmRleCAzNDJjNjU0Li44ZjUxYmJlIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2luc2RlbC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfaW5zZGVsLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MiwxNCArNDIsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfaW5zZGVsLmMsdiAxLjEyIDIwMDMvMDcvMjYgMjI6NDA6MDYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfaW5zZGVsLmMsdiAxLjEzIDIwMDkvMTAvMjQgMjI6MzQ6NDEgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2luc2RlbGxuKFdJTkRPVyAqd2luLCBpbnQgbikKIHsKICAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3aW5zZGVsbG4oJXAsJWQpIiksIHdpbiwgbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3aW5zZGVsbG4oJXAsJWQpIiksICh2b2lkICopIHdpbiwgbikpOwogCiAgICAgaWYgKHdpbikgewogCWlmIChuICE9IDApIHsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfaW5zbnN0ci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9pbnNuc3RyLmMKaW5kZXggYjZkZGZkZS4uY2UwM2U2NCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9pbnNuc3RyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9pbnNuc3RyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2luc25zdHIuYyx2IDEuMSAyMDA0LzAyLzI4IDIzOjQ0OjU2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2luc25zdHIuYyx2IDEuMyAyMDA5LzEwLzI0IDIyOjA0OjM1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdpbnNuc3RyKFdJTkRPVyAqd2luLCBjb25zdCBjaGFyICpzLCBpbnQgbikKQEAgLTUxLDEzICs1MSwxNSBAQAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHM7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3A7CiAKLSAgICBUKChUX0NBTExFRCgid2luc25zdHIoJXAsJXMsJWQpIiksIHdpbiwgX25jX3Zpc2J1Zm4ocywgbiksIG4pKTsKKyAgICBUKChUX0NBTExFRCgid2luc25zdHIoJXAsJXMsJWQpIiksICh2b2lkICopIHdpbiwgX25jX3Zpc2J1Zm4ocywgbiksIG4pKTsKIAogICAgIGlmICh3aW4gIT0gMCAmJiBzdHIgIT0gMCkgeworCVNDUkVFTiAqc3AgPSBfbmNfc2NyZWVuX29mKHdpbik7CisKIAlveSA9IHdpbi0+X2N1cnk7CiAJb3ggPSB3aW4tPl9jdXJ4OwogCWZvciAoY3AgPSBzdHI7ICpjcCAmJiAobiA8PSAwIHx8IChjcCAtIHN0cikgPCBuKTsgY3ArKykgewotCSAgICBfbmNfaW5zZXJ0X2NoKHdpbiwgKGNodHlwZSkgVUNoYXIoKmNwKSk7CisJICAgIF9uY19pbnNlcnRfY2goc3AsIHdpbiwgKGNodHlwZSkgVUNoYXIoKmNwKSk7CiAJfQogCXdpbi0+X2N1cnggPSBveDsKIAl3aW4tPl9jdXJ5ID0gb3k7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX2luc3RyLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2luc3RyLmMKaW5kZXggM2ZiMjk0OS4uZjcwOGVjYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9pbnN0ci5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfaW5zdHIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQxLDE0ICs0MSwxNCBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbnN0ci5jLHYgMS4xNiAyMDA3LzA3LzIxIDIwOjE4OjEwIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2luc3RyLmMsdiAxLjIxIDIwMTQvMDIvMDEgMjI6MDk6MjcgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2lubnN0cihXSU5ET1cgKndpbiwgY2hhciAqc3RyLCBpbnQgbikKIHsKICAgICBpbnQgaSA9IDAsIHJvdywgY29sOwogCi0gICAgVCgoVF9DQUxMRUQoIndpbm5zdHIoJXAsJXAsJWQpIiksIHdpbiwgc3RyLCBuKSk7CisgICAgVCgoVF9DQUxMRUQoIndpbm5zdHIoJXAsJXAsJWQpIiksICh2b2lkICopIHdpbiwgc3RyLCBuKSk7CiAKICAgICBpZiAoIXN0cikKIAlyZXR1cm5Db2RlKDApOwpAQCAtNjQsNyArNjQsNyBAQAogCSAgICBjY2hhcl90ICpjZWxsID0gJih3aW4tPl9saW5lW3Jvd10udGV4dFtjb2xdKTsKIAkgICAgd2NoYXJfdCAqd2NoOwogCSAgICBhdHRyX3QgYXR0cnM7Ci0JICAgIHNob3J0IHBhaXI7CisJICAgIE5DVVJTRVNfUEFJUlNfVCBwYWlyOwogCSAgICBpbnQgbjI7CiAJICAgIGJvb2wgZG9uZSA9IEZBTFNFOwogCSAgICBtYnN0YXRlX3Qgc3RhdGU7CkBAIC03OCwxOSArNzgsMjMgQEAKIAkJICAgIGlmIChnZXRjY2hhcihjZWxsLCB3Y2gsICZhdHRycywgJnBhaXIsIDApID09IE9LKSB7CiAKIAkJCWluaXRfbWIoc3RhdGUpOwotCQkJbjMgPSB3Y3N0b21icygwLCB3Y2gsIDApOwotCQkJaWYgKGlzRUlMU0VRKG4zKSB8fCAobjMgPT0gMCkpIHsKLQkJCSAgICA7Ci0JCQl9IGVsc2UgaWYgKChpbnQpIChuMyArIGkpID4gbikgewotCQkJICAgIGRvbmUgPSBUUlVFOwotCQkJfSBlbHNlIGlmICgodG1wID0gdHlwZUNhbGxvYyhjaGFyLCBuMyArIDEwKSkgPT0gMCkgewotCQkJICAgIGRvbmUgPSBUUlVFOwotCQkJfSBlbHNlIHsKLQkJCSAgICBpbml0X21iKHN0YXRlKTsKLQkJCSAgICB3Y3N0b21icyh0bXAsIHdjaCwgbjMpOwotCQkJICAgIGZvciAoaTMgPSAwOyBpMyA8IG4zOyArK2kzKQotCQkJCXN0cltpKytdID0gdG1wW2kzXTsKLQkJCSAgICBmcmVlKHRtcCk7CisJCQluMyA9IHdjc3RvbWJzKDAsIHdjaCwgKHNpemVfdCkgMCk7CisJCQlpZiAoIWlzRUlMU0VRKG4zKSAmJiAobjMgIT0gMCkpIHsKKwkJCSAgICBzaXplX3QgbmVlZCA9IG4zICsgMTAgKyAoc2l6ZV90KSBpOworCQkJICAgIGludCBoYXZlID0gKGludCkgbjMgKyBpOworCisJCQkgICAgLyogY2hlY2sgZm9yIGxvb3AtZG9uZSBhcyB3ZWxsIGFzIG92ZXJmbG93ICovCisJCQkgICAgaWYgKGhhdmUgPiBuIHx8IChpbnQpIG5lZWQgPD0gMCkgeworCQkJCWRvbmUgPSBUUlVFOworCQkJICAgIH0gZWxzZSBpZiAoKHRtcCA9IHR5cGVDYWxsb2MoY2hhciwgbmVlZCkpID09IDApIHsKKwkJCQlkb25lID0gVFJVRTsKKwkJCSAgICB9IGVsc2UgeworCQkJCWluaXRfbWIoc3RhdGUpOworCQkJCXdjc3RvbWJzKHRtcCwgd2NoLCBuMyk7CisJCQkJZm9yIChpMyA9IDA7IGkzIDwgbjM7ICsraTMpCisJCQkJICAgIHN0cltpKytdID0gdG1wW2kzXTsKKwkJCQlmcmVlKHRtcCk7CisJCQkgICAgfQogCQkJfQogCQkgICAgfQogCQkgICAgZnJlZSh3Y2gpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9pc2VuZHdpbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9pc2VuZHdpbi5jCmluZGV4IGIzMzdkOTcuLjkyM2UzNWIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfaXNlbmR3aW4uYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2lzZW5kd2luLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDAsMTIgKzQyLDIwIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2lzZW5kd2luLmMsdiAxLjYgMjAwMC8xMi8xMCAwMjo0MzoyNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9pc2VuZHdpbi5jLHYgMS43IDIwMDkvMDIvMTUgMDA6MzY6MjQgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoYm9vbCkKK05DVVJTRVNfU1BfTkFNRShpc2VuZHdpbikgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBpZiAoU1BfUEFSTSA9PSBOVUxMKQorCXJldHVybiBGQUxTRTsKKyAgICByZXR1cm4gU1BfUEFSTS0+X2VuZHdpbjsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGJvb2wpCiBpc2VuZHdpbih2b2lkKQogewotICAgIGlmIChTUCA9PSBOVUxMKQotCXJldHVybiBGQUxTRTsKLSAgICByZXR1cm4gU1AtPl9lbmR3aW47CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShpc2VuZHdpbikgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9sZWF2ZW9rLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX2xlYXZlb2suYwppbmRleCAxN2QwOTVkLi5lNjk5NWY4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX2xlYXZlb2suYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX2xlYXZlb2suYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDEyICs0MCwxMiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9sZWF2ZW9rLmMsdiAxLjUgMjAwMC8xMi8xMCAwMjo0MzoyNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9sZWF2ZW9rLmMsdiAxLjYgMjAwOS8xMC8yNCAyMjozNDoyMyB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBsZWF2ZW9rKFdJTkRPVyAqd2luLCBib29sIGZsYWcpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImxlYXZlb2soJXAsJWQpIiksIHdpbiwgZmxhZykpOworICAgIFQoKFRfQ0FMTEVEKCJsZWF2ZW9rKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIGZsYWcpKTsKIAogICAgIGlmICh3aW4pIHsKIAl3aW4tPl9sZWF2ZW9rID0gZmxhZzsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfbW91c2UuYyBiL25jdXJzZXMvYmFzZS9saWJfbW91c2UuYwppbmRleCA5NWYyOWFhLi4zNmI2ZTFlIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX21vdXNlLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9tb3VzZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDggICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNzksOSArODAsMTIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfbW91c2UuYyx2IDEuMTAyIDIwMDgvMTAvMTggMjE6NDg6NTUgdG9tIEV4cCAkIikKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCiAKLSNpbmNsdWRlIDx0ZXJtLmg+CitNT0RVTEVfSUQoIiRJZDogbGliX21vdXNlLmMsdiAxLjE2NiAyMDE1LzA3LzA1IDAwOjI4OjI3IHRvbSBFeHAgJCIpCisKICNpbmNsdWRlIDx0aWMuaD4KIAogI2lmIFVTRV9HUE1fU1VQUE9SVApAQCAtMTA4LDcgKzExMiw3IEBACiAjdW5kZWYgYnV0dG9ucwkJCS8qIHN5bWJvbCBjb25mbGljdCBpbiBjb25zaW8uaCAqLwogI3VuZGVmIG1vdXNlX2luZm8JCS8qIHN5bWJvbCBjb25mbGljdCBpbiBjb25zaW8uaCAqLwogI2luY2x1ZGUgPG9zcmVsZGF0ZS5oPgotI2lmIChfX0ZyZWVCU0RfdmVyc2lvbiA+PSA0MDAwMTcpCisjaWYgZGVmaW5lZChfX0RyYWdvbkZseV92ZXJzaW9uKSB8fCAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF92ZXJzaW9uID49IDQwMDAxNykpCiAjaW5jbHVkZSA8c3lzL2NvbnNpby5oPgogI2luY2x1ZGUgPHN5cy9mYmlvLmg+CiAjZWxzZQpAQCAtMTE2LDE0ICsxMjAsMjUgQEAKICNlbmRpZgogI2VuZGlmCQkJCS8qIHVzZV9TWVNNT1VTRSAqLwogCisjaWYgVVNFX0tMSUJDX01PVVNFCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2RlZmluZSBwaXBlKGhhbmRsZXMpIHNvY2tldHBhaXIoQUZfTE9DQUwsIFNPQ0tfU1RSRUFNLCAwLCBoYW5kbGVzKQorI2RlZmluZSBEb3NXcml0ZShoZmlsZSwgcGJ1ZmZlciwgY2J3cml0ZSwgcGNiYWN0dWFsKSBcCisJCXdyaXRlKGhmaWxlLCBwYnVmZmVyLCBjYndyaXRlKQorI2RlZmluZSBEb3NFeGl0KGFjdGlvbiwgcmVzdWx0ICkJLyogZG8gbm90aGluZyAqLworI2RlZmluZSBEb3NDcmVhdGVUaHJlYWQocHRpZCwgcGZuLCBwYXJhbSwgZmxhZywgY2JTdGFjaykgXAorCQkoKihwdGlkKSA9IF9iZWdpbnRocmVhZChwZm4sIE5VTEwsIGNiU3RhY2ssIFwKKwkJCQkJKHZvaWQgKilwYXJhbSksICgqKHB0aWQpID09IC0xKSkKKyNlbmRpZgorCiAjZGVmaW5lIE1ZX1RSQUNFIFRSQUNFX0lDQUxMU3xUUkFDRV9JRVZFTlQKIAotI2RlZmluZQlNQVNLX1JFTEVBU0UoeCkJCU5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDEpCi0jZGVmaW5lCU1BU0tfUFJFU1MoeCkJCU5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDIpCi0jZGVmaW5lCU1BU0tfQ0xJQ0soeCkJCU5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDQpCi0jZGVmaW5lCU1BU0tfRE9VQkxFX0NMSUNLKHgpCU5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMTApCi0jZGVmaW5lCU1BU0tfVFJJUExFX0NMSUNLKHgpCU5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMjApCi0jZGVmaW5lCU1BU0tfUkVTRVJWRURfRVZFTlQoeCkJTkNVUlNFU19NT1VTRV9NQVNLKHgsIDA0MCkKKyNkZWZpbmUJTUFTS19SRUxFQVNFKHgpCQkobW1hc2tfdCkgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAwMSkKKyNkZWZpbmUJTUFTS19QUkVTUyh4KQkJKG1tYXNrX3QpIE5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMDIpCisjZGVmaW5lCU1BU0tfQ0xJQ0soeCkJCShtbWFza190KSBOQ1VSU0VTX01PVVNFX01BU0soeCwgMDA0KQorI2RlZmluZQlNQVNLX0RPVUJMRV9DTElDSyh4KQkobW1hc2tfdCkgTkNVUlNFU19NT1VTRV9NQVNLKHgsIDAxMCkKKyNkZWZpbmUJTUFTS19UUklQTEVfQ0xJQ0soeCkJKG1tYXNrX3QpIE5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwMjApCisjZGVmaW5lCU1BU0tfUkVTRVJWRURfRVZFTlQoeCkJKG1tYXNrX3QpIE5DVVJTRVNfTU9VU0VfTUFTSyh4LCAwNDApCiAKICNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPT0gMQogI2RlZmluZSBCVVRUT05fQ0xJQ0tFRCAgICAgICAgKEJVVFRPTjFfQ0xJQ0tFRCAgICAgICAgfCBCVVRUT04yX0NMSUNLRUQgICAgICAgIHwgQlVUVE9OM19DTElDS0VEICAgICAgICB8IEJVVFRPTjRfQ0xJQ0tFRCkKQEAgLTE0NCwxMyArMTU5LDE2IEBACiAjZGVmaW5lIElOVkFMSURfRVZFTlQJLTEKICNkZWZpbmUgTk9STUFMX0VWRU5UCTAKIAorI2RlZmluZSBWYWxpZEV2ZW50KGVwKSAoKGVwKS0+aWQgIT0gSU5WQUxJRF9FVkVOVCkKKyNkZWZpbmUgSW52YWxpZGF0ZShlcCkgKGVwKS0+aWQgPSBJTlZBTElEX0VWRU5UCisKICNpZiBVU0VfR1BNX1NVUFBPUlQKIAogI2lmbmRlZiBMSUJHUE1fU09OQU1FCiAjZGVmaW5lIExJQkdQTV9TT05BTUUgImxpYmdwbS5zbyIKICNlbmRpZgogCi0jZGVmaW5lIEdFVF9ETFNZTShuYW1lKSAobXlfIyNuYW1lID0gKFRZUEVfIyNuYW1lKSBkbHN5bShTUC0+X2Rsb3Blbl9ncG0sICNuYW1lKSkKKyNkZWZpbmUgR0VUX0RMU1lNKG5hbWUpIChteV8jI25hbWUgPSAoVFlQRV8jI25hbWUpIGRsc3ltKHNwLT5fZGxvcGVuX2dwbSwgI25hbWUpKQogCiAjZW5kaWYJCQkJLyogVVNFX0dQTV9TVVBQT1JUICovCiAKQEAgLTE2NCwxMyArMTgyLDEzIEBACiAjZGVmaW5lIExhc3RFVihzcCkJKChzcCktPl9tb3VzZV9ldmVudHMgKyBFVl9NQVggLSAxKQogCiAjdW5kZWYgIE5FWFQKLSNkZWZpbmUgTkVYVChlcCkJKChlcCA+PSBMYXN0RVYoc3ApKSBcCi0JCQkgPyBGaXJzdEVWKHNwKSBcCisjZGVmaW5lIE5FWFQoZXApCSgoZXAgPj0gTGFzdEVWKFNQX1BBUk0pKSBcCisJCQkgPyBGaXJzdEVWKFNQX1BBUk0pIFwKIAkJCSA6IGVwICsgMSkKIAogI3VuZGVmICBQUkVWCi0jZGVmaW5lIFBSRVYoZXApCSgoZXAgPD0gRmlyc3RFVihzcCkpIFwKLQkJCSA/IExhc3RFVihzcCkgXAorI2RlZmluZSBQUkVWKGVwKQkoKGVwIDw9IEZpcnN0RVYoU1BfUEFSTSkpIFwKKwkJCSA/IExhc3RFVihTUF9QQVJNKSBcCiAJCQkgOiBlcCAtIDEpCiAKICNkZWZpbmUgSW5kZXhFVihzcCwgZXApCShlcCAtIEZpcnN0RVYoc3ApKQpAQCAtMTg1LDcgKzIwMyw3IEBACiB7CiAgICAgTUVWRU5UICplcDsKIAotICAgIF90cmFjZWYodGFnKTsKKyAgICBfdHJhY2VmKCIlcyIsIHRhZyk7CiAKICAgICBmb3IgKGVwID0gRmlyc3RFVihzcCk7IGVwIDw9IExhc3RFVihzcCk7IGVwKyspCiAJX3RyYWNlZigibW91c2UgZXZlbnQgcXVldWUgc2xvdCAlbGQgPSAlcyIsCkBAIC0yMDcsNyArMjI1LDcgQEAKICAgICBjaGFyIGJ1Zls2XTsKICAgICB1bnNpZ25lZCBsb25nIGlnbm9yZTsKIAotICAgIHN0cm5jcHkoYnVmLCBrZXlfbW91c2UsIDMpOwkvKiBzaG91bGQgYmUgIlwwMzNbTSIgKi8KKyAgICBzdHJjcHkoYnVmLCAiXDAzM1tNIik7CS8qIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBrZXlfbW91c2UgKi8KICAgICBidWZbM10gPSAnICcgKyAoYnV0dG9uIC0gMSkgKyAoZG93biA/IDAgOiAweDQwKTsKICAgICBidWZbNF0gPSAnICcgKyB4IC0gTEVGVF9DT0wgKyAxOwogICAgIGJ1Zls1XSA9ICcgJyArIHkgLSBUT1BfUk9XICsgMTsKQEAgLTIxNSw3ICsyMzMsMTEgQEAKIH0KIAogc3RhdGljIHZvaWQKKyNpZiBVU0VfS0xJQkNfTU9VU0UKK21vdXNlX3NlcnZlcih2b2lkICpwYXJhbSkKKyNlbHNlCiBtb3VzZV9zZXJ2ZXIodW5zaWduZWQgbG9uZyBwYXJhbSkKKyNlbmRpZgogewogICAgIFNDUkVFTiAqc3AgPSAoU0NSRUVOICopIHBhcmFtOwogICAgIHVuc2lnbmVkIHNob3J0IGZXYWl0ID0gTU9VX1dBSVQ7CkBAIC0yNDEsNyArMjYzLDggQEAKIAkJLyogc2l0IGFuZCB3YWl0IG9uIHRoZSBldmVudCBxdWV1ZSAqLwogCQlyYyA9IE1vdVJlYWRFdmVudFF1ZSgmbW91ZXYsICZmV2FpdCwgaG1vdSk7CiAJCWlmIChyYykgewotCQkgICAgc3ByaW50ZihlcnIsICJFcnJvciByZWFkaW5nIG1vdXNlIHF1ZXVlLCByYz0lbHUuXHJcbiIsIHJjKTsKKwkJICAgIF9uY19TUFJJTlRGKGVyciwgX25jX1NMSU1JVChzaXplb2YoZXJyKSkKKwkJCQkiRXJyb3IgcmVhZGluZyBtb3VzZSBxdWV1ZSwgcmM9JWx1LlxyXG4iLCByYyk7CiAJCSAgICBicmVhazsKIAkJfQogCQlpZiAoIXNwLT5fZW14bW91c2VfYWN0aXZhdGVkKQpAQCAtMjY3LDkgKzI5MCwxMSBAQAogCSAgICAgIGZpbmlzaDoKIAkJb2xkc3RhdGUgPSBtb3Vldi5mczsKIAkgICAgfQotCX0gZWxzZQotCSAgICBzcHJpbnRmKGVyciwgIkVycm9yIHNldHRpbmcgZXZlbnQgbWFzaywgYnV0dG9ucz0lZCwgcmM9JWx1LlxyXG4iLAotCQkgICAgbmJ1dHRvbnMsIHJjKTsKKwl9IGVsc2UgeworCSAgICBfbmNfU1BSSU5URihlcnIsIF9uY19TTElNSVQoc2l6ZW9mKGVycikpCisJCQkiRXJyb3Igc2V0dGluZyBldmVudCBtYXNrLCBidXR0b25zPSVkLCByYz0lbHUuXHJcbiIsCisJCQluYnV0dG9ucywgcmMpOworCX0KIAogCURvc1dyaXRlKDIsIGVyciwgc3RybGVuKGVyciksICZyYyk7CiAJTW91Q2xvc2UoaG1vdSk7CkBAIC0zNDAsMTggKzM2NSw1OSBAQAogc3RhdGljIHZvaWQKIGhhbmRsZV9zeXNtb3VzZShpbnQgc2lnIEdDQ19VTlVTRUQpCiB7Ci0gICAgc3lzbW91c2Vfc2VydmVyKFNQKTsKKyAgICBzeXNtb3VzZV9zZXJ2ZXIoQ1VSUkVOVF9TQ1JFRU4pOwogfQogI2VuZGlmIC8qIFVTRV9TWVNNT1VTRSAqLwogCisjaWZuZGVmIFVTRV9URVJNX0RSSVZFUgorI2RlZmluZSB4dGVybV9rbW91cyAiXDAzM1tNIgorCiBzdGF0aWMgdm9pZAogaW5pdF94dGVybV9tb3VzZShTQ1JFRU4gKnNwKQogewogICAgIHNwLT5fbW91c2VfdHlwZSA9IE1fWFRFUk07CisgICAgc3AtPl9tb3VzZV9mb3JtYXQgPSBNRl9YMTA7CiAgICAgc3AtPl9tb3VzZV94dGVybWNhcCA9IHRpZ2V0c3RyKCJYTSIpOwotICAgIGlmICghVkFMSURfU1RSSU5HKHNwLT5fbW91c2VfeHRlcm1jYXApKQorICAgIGlmIChWQUxJRF9TVFJJTkcoc3AtPl9tb3VzZV94dGVybWNhcCkpIHsKKwljaGFyICpjb2RlID0gc3Ryc3RyKHNwLT5fbW91c2VfeHRlcm1jYXAsICJbPyIpOworCWlmIChjb2RlICE9IDApIHsKKwkgICAgY29kZSArPSAyOworCSAgICB3aGlsZSAoKCpjb2RlID49ICcwJykgJiYgKCpjb2RlIDw9ICc5JykpIHsKKwkJY2hhciAqbmV4dCA9IGNvZGU7CisJCXdoaWxlICgoKm5leHQgPj0gJzAnKSAmJiAoKm5leHQgPD0gJzknKSkgeworCQkgICAgKytuZXh0OworCQl9CisJCWlmICghc3RybmNtcChjb2RlLCAiMTAwNiIsIChzaXplX3QpIChuZXh0IC0gY29kZSkpKSB7CisJCSAgICBzcC0+X21vdXNlX2Zvcm1hdCA9IE1GX1NHUjEwMDY7CisJCX0KKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorCQlpZiAoIXN0cm5jbXAoY29kZSwgIjEwMDUiLCAoc2l6ZV90KSAobmV4dCAtIGNvZGUpKSkgeworCQkgICAgc3AtPl9tb3VzZV9mb3JtYXQgPSBNRl9YVEVSTV8xMDA1OworCQl9CisjZW5kaWYKKwkJaWYgKCpuZXh0ID09ICc7JykgeworCQkgICAgd2hpbGUgKCpuZXh0ID09ICc7JykgeworCQkJKytuZXh0OworCQkgICAgfQorCQkgICAgY29kZSA9IG5leHQ7CisJCX0gZWxzZSB7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJfQorICAgIH0gZWxzZSB7CisJaW50IGNvZGUgPSB0aWdldG51bSgiWE0iKTsKKwlzd2l0Y2ggKGNvZGUpIHsKKwljYXNlIDEwMDY6CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGNvZGUgPSAxMDAwOworCSAgICBicmVhazsKKwl9CiAJc3AtPl9tb3VzZV94dGVybWNhcCA9ICJcMDMzWz8xMDAwJT8lcDElezF9JT0ldGglZWwlOyI7CisgICAgfQogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBlbmFibGVfeHRlcm1fbW91c2UoU0NSRUVOICpzcCwgaW50IGVuYWJsZSkKQEAgLTM1OSwyMSArNDI1LDI5IEBACiAjaWYgVVNFX0VNWF9NT1VTRQogICAgIHNwLT5fZW14bW91c2VfYWN0aXZhdGVkID0gZW5hYmxlOwogI2Vsc2UKLSAgICBwdXRwKFRQQVJNXzEoc3AtPl9tb3VzZV94dGVybWNhcCwgZW5hYmxlKSk7CisgICAgTkNVUlNFU19QVVRQMigieHRlcm0tbW91c2UiLCBUUEFSTV8xKHNwLT5fbW91c2VfeHRlcm1jYXAsIGVuYWJsZSkpOwogI2VuZGlmCiAgICAgc3AtPl9tb3VzZV9hY3RpdmUgPSBlbmFibGU7CiB9CiAKICNpZiBVU0VfR1BNX1NVUFBPUlQKIHN0YXRpYyBib29sCi1hbGxvd19ncG1fbW91c2Uodm9pZCkKK2FsbG93X2dwbV9tb3VzZShTQ1JFRU4gKnNwIEdDQ19VTlVTRUQpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKIAotICAgIC8qIEdQTSBkb2VzIHByaW50ZidzIHdpdGhvdXQgY2hlY2tpbmcgaWYgc3Rkb3V0IGlzIGEgdGVybWluYWwgKi8KLSAgICBpZiAoaXNhdHR5KGZpbGVubyhzdGRvdXQpKSkgewotCWNoYXIgKmxpc3QgPSBnZXRlbnYoIk5DVVJTRVNfR1BNX1RFUk1TIik7Ci0JY2hhciAqZW52ID0gZ2V0ZW52KCJURVJNIik7CisjaWYgVVNFX1dFQUtfU1lNQk9MUworICAgIC8qIERhbmdlciBSb2JpbnNvbjogZG8gbm90IHVzZSBkbG9wZW4gZm9yIGxpYmdwbSBpZiBhbHJlYWR5IGxvYWRlZCAqLworICAgIGlmICgoR3BtX1dnZXRjaCkpIHsKKwlpZiAoIXNwLT5fbW91c2VfZ3BtX2xvYWRlZCkgeworCSAgICBUKCgiR1BNIGxpYnJhcnkgd2FzIGFscmVhZHkgZGxvcGVuJ2QsIG5vdCBieSB1cyIpKTsKKwl9CisgICAgfSBlbHNlCisjZW5kaWYKKwkvKiBHUE0gZG9lcyBwcmludGYncyB3aXRob3V0IGNoZWNraW5nIGlmIHN0ZG91dCBpcyBhIHRlcm1pbmFsICovCisgICAgaWYgKE5DX0lTQVRUWShmaWxlbm8oc3Rkb3V0KSkpIHsKKwljb25zdCBjaGFyICpsaXN0ID0gZ2V0ZW52KCJOQ1VSU0VTX0dQTV9URVJNUyIpOworCWNvbnN0IGNoYXIgKmVudiA9IGdldGVudigiVEVSTSIpOwogCWlmIChsaXN0ICE9IDApIHsKIAkgICAgaWYgKGVudiAhPSAwKSB7CiAJCXJlc3VsdCA9IF9uY19uYW1lX21hdGNoKGxpc3QsIGVudiwgInw6Iik7CkBAIC0zOTgsNyArNDcyLDcgQEAKIHN0YXRpYyB2b2lkCiB1bmxvYWRfZ3BtX2xpYnJhcnkoU0NSRUVOICpzcCkKIHsKLSAgICBpZiAoU1AtPl9kbG9wZW5fZ3BtICE9IDApIHsKKyAgICBpZiAoc3AtPl9kbG9wZW5fZ3BtICE9IDApIHsKIAlUKCgidW5sb2FkIEdQTSBsaWJyYXJ5IikpOwogCXNwLT5fbW91c2VfZ3BtX2xvYWRlZCA9IEZBTFNFOwogCXNwLT5fbW91c2VfZmQgPSAtMTsKQEAgLTQ0MCw2ICs1MTQsOCBAQAogCX0KICNlbmRpZgogCWlmIChzcC0+X21vdXNlX2dwbV9sb2FkZWQpIHsKKwkgICAgaW50IGNvZGU7CisKIAkgICAgLyogR1BNOiBpbml0aWFsaXplIGNvbm5lY3Rpb24gdG8gZ3BtIHNlcnZlciAqLwogCSAgICBzcC0+X21vdXNlX2dwbV9jb25uZWN0LmV2ZW50TWFzayA9IEdQTV9ET1dOIHwgR1BNX1VQOwogCSAgICBzcC0+X21vdXNlX2dwbV9jb25uZWN0LmRlZmF1bHRNYXNrID0KQEAgLTQ1NCw3ICs1MzAsMTYgQEAKIAkgICAgICogVGhlIGZvcm1lciBpcyByZWNvZ25pemVkIGJ5IHdzY29ucyAoU3VuT1MpLCBhbmQgdGhlIGxhdHRlciBieQogCSAgICAgKiB4dGVybS4gIFRob3NlIHdpbGwgbm90IHNob3cgdXAgaW4gbmN1cnNlcycgdHJhY2VzLgogCSAgICAgKi8KLQkgICAgcmVzdWx0ID0gKG15X0dwbV9PcGVuKCZzcC0+X21vdXNlX2dwbV9jb25uZWN0LCAwKSA+PSAwKTsKKwkgICAgY29kZSA9IG15X0dwbV9PcGVuKCZzcC0+X21vdXNlX2dwbV9jb25uZWN0LCAwKTsKKwkgICAgcmVzdWx0ID0gKGNvZGUgPj0gMCk7CisKKwkgICAgLyoKKwkgICAgICogR1BNIGNhbiByZXR1cm4gYSAtMiBpZiBpdCBpcyB0cnlpbmcgdG8gZG8gc29tZXRoaW5nIHdpdGggeHRlcm0uCisJICAgICAqIElnbm9yZSB0aGF0LCBzaW5jZSBpdCBjb25mbGljdHMgd2l0aCBvdXIgdXNlIG9mIHN0ZGluLgorCSAgICAgKi8KKwkgICAgaWYgKGNvZGUgPT0gLTIpIHsKKwkJbXlfR3BtX0Nsb3NlKCk7CisJICAgIH0KIAl9IGVsc2UgewogCSAgICByZXN1bHQgPSBGQUxTRTsKIAl9CkBAIC00NzgsOCArNTYzLDYgQEAKIH0KICNlbmRpZiAvKiBVU0VfR1BNX1NVUFBPUlQgKi8KIAotI2RlZmluZSB4dGVybV9rbW91cyAiXDAzM1tNIgotCiBzdGF0aWMgdm9pZAogaW5pdGlhbGl6ZV9tb3VzZXR5cGUoU0NSRUVOICpzcCkKIHsKQEAgLTQ4Nyw3ICs1NzAsNyBAQAogCiAgICAgLyogVHJ5IGdwbSBmaXJzdCwgYmVjYXVzZSBncG0gbWF5IGJlIGNvbmZpZ3VyZWQgdG8gcnVuIGluIHh0ZXJtICovCiAjaWYgVVNFX0dQTV9TVVBQT1JUCi0gICAgaWYgKGFsbG93X2dwbV9tb3VzZSgpKSB7CisgICAgaWYgKGFsbG93X2dwbV9tb3VzZShzcCkpIHsKIAlpZiAoIXNwLT5fbW91c2VfZ3BtX2xvYWRlZCkgewogI2lmZGVmIEhBVkVfTElCREwKIAkgICAgbG9hZF9ncG1fbGlicmFyeShzcCk7CkBAIC01MTQsNyArNTk3LDcgQEAKICAgICAvKiBPUy8yIFZJTyAqLwogI2lmIFVTRV9FTVhfTU9VU0UKICAgICBpZiAoIXNwLT5fZW14bW91c2VfdGhyZWFkCi0JJiYgc3Ryc3RyKGN1cl90ZXJtLT50eXBlLnRlcm1fbmFtZXMsICJ4dGVybSIpID09IDAKKwkmJiBzdHJzdHIoVGVybWluYWxPZihzcCktPnR5cGUudGVybV9uYW1lcywgInh0ZXJtIikgPT0gMAogCSYmIGtleV9tb3VzZSkgewogCWludCBoYW5kbGVzWzJdOwogCkBAIC01MjUsNyArNjA4LDcgQEAKIAkgICAgaW50IHJjOwogCiAJICAgIGlmICghc3AtPl9lbXhtb3VzZV9idXR0b25zWzBdKSB7Ci0JCWNoYXIgKnMgPSBnZXRlbnYoIk1PVVNFX0JVVFRPTlNfMTIzIik7CisJCWNvbnN0IGNoYXIgKnMgPSBnZXRlbnYoIk1PVVNFX0JVVFRPTlNfMTIzIik7CiAKIAkJc3AtPl9lbXhtb3VzZV9idXR0b25zWzBdID0gMTsKIAkJaWYgKHMgJiYgc3RybGVuKHMpID49IDMpIHsKQEAgLTU2MSw3ICs2NDQsNyBAQAogCXN0cnVjdCBtb3VzZV9pbmZvIHRoZV9tb3VzZTsKIAljaGFyICp0aGVfZGV2aWNlID0gMDsKIAotCWlmIChpc2F0dHkoc3AtPl9pZmQpKQorCWlmIChOQ19JU0FUVFkoc3AtPl9pZmQpKQogCSAgICB0aGVfZGV2aWNlID0gdHR5bmFtZShzcC0+X2lmZCk7CiAJaWYgKHRoZV9kZXZpY2UgPT0gMCkKIAkgICAgdGhlX2RldmljZSA9ICIvZGV2L3R0eSI7CkBAIC02MjEsMTYgKzcwNCwyMSBAQAogICAgIH0KICNlbmRpZiAvKiBVU0VfU1lTTU9VU0UgKi8KIAorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIENhbGxEcml2ZXIoc3AsIHRkX2luaXRtb3VzZSk7CisjZWxzZQogICAgIC8qIHdlIGtub3cgaG93IHRvIHJlY29nbml6ZSBtb3VzZSBldmVudHMgdW5kZXIgInh0ZXJtIiAqLwogICAgIGlmIChrZXlfbW91c2UgIT0gMCkgewogCWlmICghc3RyY21wKGtleV9tb3VzZSwgeHRlcm1fa21vdXMpCi0JICAgIHx8IHN0cnN0cihjdXJfdGVybS0+dHlwZS50ZXJtX25hbWVzLCAieHRlcm0iKSAhPSAwKSB7CisJICAgIHx8IHN0cnN0cihUZXJtaW5hbE9mKHNwKS0+dHlwZS50ZXJtX25hbWVzLCAieHRlcm0iKSAhPSAwKSB7CiAJICAgIGluaXRfeHRlcm1fbW91c2Uoc3ApOwogCX0KLSAgICB9IGVsc2UgaWYgKHN0cnN0cihjdXJfdGVybS0+dHlwZS50ZXJtX25hbWVzLCAieHRlcm0iKSAhPSAwKSB7CisgICAgfSBlbHNlIGlmIChzdHJzdHIoVGVybWluYWxPZihzcCktPnR5cGUudGVybV9uYW1lcywgInh0ZXJtIikgIT0gMCkgewogCWlmIChfbmNfYWRkX3RvX3RyeSgmKHNwLT5fa2V5dHJ5KSwgeHRlcm1fa21vdXMsIEtFWV9NT1VTRSkgPT0gT0spCiAJICAgIGluaXRfeHRlcm1fbW91c2Uoc3ApOwogICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuVm9pZDsKIH0KIApAQCAtNjQ5LDcgKzczNyw3IEBACiAKIAkgICAgc3AtPl9tb3VzZV9ldmVudHAgPSBGaXJzdEVWKHNwKTsKIAkgICAgZm9yIChpID0gMDsgaSA8IEVWX01BWDsgaSsrKQotCQlzcC0+X21vdXNlX2V2ZW50c1tpXS5pZCA9IElOVkFMSURfRVZFTlQ7CisJCUludmFsaWRhdGUoc3AtPl9tb3VzZV9ldmVudHMgKyBpKTsKIAogCSAgICBpbml0aWFsaXplX21vdXNldHlwZShzcCk7CiAKQEAgLTY2NSw3ICs3NTMsNyBAQAogICogZmlmb19wdXNoKCkgaW4gbGliX2dldGNoLmMKICAqLwogc3RhdGljIGJvb2wKLV9uY19tb3VzZV9ldmVudChTQ1JFRU4gKnNwIEdDQ19VTlVTRUQpCitfbmNfbW91c2VfZXZlbnQoU0NSRUVOICpzcCkKIHsKICAgICBNRVZFTlQgKmV2ZW50cCA9IHNwLT5fbW91c2VfZXZlbnRwOwogICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CkBAIC02OTQsMTEgKzc4MiwxNiBAQAogCiAjaWYgVVNFX0dQTV9TVVBQT1JUCiAgICAgY2FzZSBNX0dQTToKLQl7CisJaWYgKHNwLT5fbW91c2VfZmQgPj0gMCkgewogCSAgICAvKiBxdWVyeSBzZXJ2ZXIgZm9yIGV2ZW50LCByZXR1cm4gVFJVRSBpZiB3ZSBmaW5kIG9uZSAqLwogCSAgICBHcG1fRXZlbnQgZXY7CiAKLQkgICAgaWYgKG15X0dwbV9HZXRFdmVudCgmZXYpID09IDEpIHsKKwkgICAgc3dpdGNoIChteV9HcG1fR2V0RXZlbnQoJmV2KSkgeworCSAgICBjYXNlIDA6CisJCS8qIENvbm5lY3Rpb24gY2xvc2VkLCBkcm9wIHRoZSBtb3VzZS4gKi8KKwkJc3AtPl9tb3VzZV9mZCA9IC0xOworCQlicmVhazsKKwkgICAgY2FzZSAxOgogCQkvKiB0aGVyZSdzIG9ubHkgb25lIG1vdXNlLi4uICovCiAJCWV2ZW50cC0+aWQgPSBOT1JNQUxfRVZFTlQ7CiAKQEAgLTcyMSw2ICs4MTQsNyBAQAogCQkJZXZlbnRwLT5ic3RhdGUgfD0gQlVUVE9OM19SRUxFQVNFRDsKIAkJICAgIGJyZWFrOwogCQlkZWZhdWx0OgorCQkgICAgZXZlbnRwLT5ic3RhdGUgfD0gUkVQT1JUX01PVVNFX1BPU0lUSU9OOwogCQkgICAgYnJlYWs7CiAJCX0KIApAQCAtNzI5LDggKzgyMyw5IEBACiAJCWV2ZW50cC0+eiA9IDA7CiAKIAkJLyogYnVtcCB0aGUgbmV4dC1mcmVlIHBvaW50ZXIgaW50byB0aGUgY2lyY3VsYXIgbGlzdCAqLwotCQlzcC0+X21vdXNlX2V2ZW50cCA9IGV2ZW50cCA9IE5FWFQoZXZlbnRwKTsKKwkJc3AtPl9tb3VzZV9ldmVudHAgPSBORVhUKGV2ZW50cCk7CiAJCXJlc3VsdCA9IFRSVUU7CisJCWJyZWFrOwogCSAgICB9CiAJfQogCWJyZWFrOwpAQCAtNzU5LDYgKzg1NCwyOCBAQAogCWJyZWFrOwogI2VuZGlmIC8qIFVTRV9TWVNNT1VTRSAqLwogCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgY2FzZSBNX1RFUk1fRFJJVkVSOgorCXdoaWxlIChzcC0+X2Rydl9tb3VzZV9oZWFkIDwgc3AtPl9kcnZfbW91c2VfdGFpbCkgeworCSAgICAqZXZlbnRwID0gc3AtPl9kcnZfbW91c2VfZmlmb1tzcC0+X2Rydl9tb3VzZV9oZWFkXTsKKworCSAgICAvKgorCSAgICAgKiBQb2ludCB0aGUgZmlmby1oZWFkIHRvIHRoZSBuZXh0IHBvc3NpYmxlIGxvY2F0aW9uLiAgSWYgdGhlcmUKKwkgICAgICogYXJlIG5vbmUsIHJlc2V0IHRoZSBpbmRpY2VzLgorCSAgICAgKi8KKwkgICAgc3AtPl9kcnZfbW91c2VfaGVhZCArPSAxOworCSAgICBpZiAoc3AtPl9kcnZfbW91c2VfaGVhZCA9PSBzcC0+X2Rydl9tb3VzZV90YWlsKSB7CisJCXNwLT5fZHJ2X21vdXNlX3RhaWwgPSAwOworCQlzcC0+X2Rydl9tb3VzZV9oZWFkID0gMDsKKwkgICAgfQorCisJICAgIC8qIGJ1bXAgdGhlIG5leHQtZnJlZSBwb2ludGVyIGludG8gdGhlIGNpcmN1bGFyIGxpc3QgKi8KKwkgICAgc3AtPl9tb3VzZV9ldmVudHAgPSBldmVudHAgPSBORVhUKGV2ZW50cCk7CisJICAgIHJlc3VsdCA9IFRSVUU7CisJfQorCWJyZWFrOworI2VuZGlmCisKICAgICBjYXNlIE1fTk9ORToKIAlicmVhazsKICAgICB9CkBAIC03NjYsMTQ4ICs4ODMsNDE1IEBACiAgICAgcmV0dXJuIHJlc3VsdDsJCS8qIHRydWUgaWYgd2UgZm91bmQgYW4gZXZlbnQgKi8KIH0KIAorI2lmIFVTRV9FTVhfTU9VU0UKKyNkZWZpbmUgUFJFU1NfUE9TSVRJT04obikgXAorICAgIGRvIHsgXAorCSAgICBldmVudHAtPmJzdGF0ZSA9IE1BU0tfUFJFU1Mobik7IFwKKwkgICAgc3AtPl9tb3VzZV9ic3RhdGUgfD0gTUFTS19QUkVTUyhuKTsgXAorCSAgICBpZiAoa2J1ZlswXSAmIDB4NDApIHsgXAorCQkgICAgZXZlbnRwLT5ic3RhdGUgPSBNQVNLX1JFTEVBU0Uobik7IFwKKwkJICAgIHNwLT5fbW91c2VfYnN0YXRlICY9IH5NQVNLX1BSRVNTKG4pOyBcCisJICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBQUkVTU19QT1NJVElPTihuKSBcCisgICAgZG8geyBcCisJICAgIGV2ZW50cC0+YnN0YXRlID0gKG1tYXNrX3QpIChzcC0+X21vdXNlX2JzdGF0ZSAmIE1BU0tfUFJFU1MobikgXAorCQkJCSAgICA/IFJFUE9SVF9NT1VTRV9QT1NJVElPTiBcCisJCQkJICAgIDogTUFTS19QUkVTUyhuKSk7IFwKKwkgICAgc3AtPl9tb3VzZV9ic3RhdGUgfD0gTUFTS19QUkVTUyhuKTsgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworc3RhdGljIGJvb2wKK2hhbmRsZV93aGVlbChTQ1JFRU4gKnNwLCBNRVZFTlQgKiBldmVudHAsIGludCBidXR0b24sIGludCB3aGVlbCkKK3sKKyAgICBib29sIHJlc3VsdCA9IFRSVUU7CisKKyAgICBzd2l0Y2ggKGJ1dHRvbiAmIDMpIHsKKyAgICBjYXNlIDA6CisJaWYgKHdoZWVsKSB7CisJICAgIGV2ZW50cC0+YnN0YXRlID0gTUFTS19QUkVTUyg0KTsKKwkgICAgLyogRG8gbm90IHJlY29yZCBpbiBzcC0+X21vdXNlX2JzdGF0ZTsgdGhlcmUgd2lsbCBiZSBubworCSAgICAgKiBjb3JyZXNwb25kaW5nIHJlbGVhc2UgZXZlbnQuCisJICAgICAqLworCX0gZWxzZSB7CisJICAgIFBSRVNTX1BPU0lUSU9OKDEpOworCX0KKwlicmVhazsKKyAgICBjYXNlIDE6CisJaWYgKHdoZWVsKSB7CisjaWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OID09IDIKKwkgICAgZXZlbnRwLT5ic3RhdGUgPSBNQVNLX1BSRVNTKDUpOworCSAgICAvKiBTZWUgY29tbWVudCBhYm92ZSBmb3IgYnV0dG9uIDQgKi8KKyNlbHNlCisJICAgIC8qIElnbm9yZSB0aGlzIGV2ZW50IGFzIGl0IGlzIG5vdCBhIHRydWUgcHJlc3Mgb2YgdGhlIGJ1dHRvbiAqLworCSAgICBldmVudHAtPmJzdGF0ZSA9IFJFUE9SVF9NT1VTRV9QT1NJVElPTjsKKyNlbmRpZgorCX0gZWxzZSB7CisJICAgIFBSRVNTX1BPU0lUSU9OKDIpOworCX0KKwlicmVhazsKKyAgICBjYXNlIDI6CisJUFJFU1NfUE9TSVRJT04oMyk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlyZXN1bHQgPSBGQUxTRTsKKwlicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wKK2RlY29kZV9YMTBfYnN0YXRlKFNDUkVFTiAqc3AsIE1FVkVOVCAqIGV2ZW50cCwgdW5zaWduZWQgaW50cm8pCit7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaW50IGI7CisKKyAgICBldmVudHAtPmJzdGF0ZSA9IDA7CisKKyAgICBpZiAoIWhhbmRsZV93aGVlbChzcCwgZXZlbnRwLCAoaW50KSBpbnRybywgKGludHJvICYgOTYpID09IDk2KSkgeworCS8qCisJICogUmVsZWFzZSBldmVudHMgYXJlbid0IHJlcG9ydGVkIGZvciBpbmRpdmlkdWFsIGJ1dHRvbnMsIGp1c3QgZm9yCisJICogdGhlIGJ1dHRvbiBzZXQgYXMgYSB3aG9sZS4gIEhvd2V2ZXIsIGJlY2F1c2UgdGhlcmUgYXJlIG5vcm1hbGx5CisJICogbm8gbW91c2UgZXZlbnRzIHVuZGVyIHh0ZXJtIHRoYXQgaW50ZXJ2ZW5lIGJldHdlZW4gcHJlc3MgYW5kCisJICogcmVsZWFzZSwgd2UgY2FuIGluZmVyIHRoZSBidXR0b24gYWN0dWFsbHkgcmVsZWFzZWQgYnkgbG9va2luZyBhdAorCSAqIHRoZSBwcmV2aW91cyBldmVudC4KKwkgKi8KKwlpZiAoc3AtPl9tb3VzZV9ic3RhdGUgJiBCVVRUT05fUFJFU1NFRCkgeworCSAgICBldmVudHAtPmJzdGF0ZSA9IEJVVFRPTl9SRUxFQVNFRDsKKwkgICAgZm9yIChiID0gMTsgYiA8PSBNQVhfQlVUVE9OUzsgKytiKSB7CisJCWlmICghKHNwLT5fbW91c2VfYnN0YXRlICYgTUFTS19QUkVTUyhiKSkpCisJCSAgICBldmVudHAtPmJzdGF0ZSAmPSB+TUFTS19SRUxFQVNFKGIpOworCSAgICB9CisJICAgIHNwLT5fbW91c2VfYnN0YXRlID0gMDsKKwl9IGVsc2UgeworCSAgICAvKgorCSAgICAgKiB4dGVybSB3aWxsIHJldHVybiBhIHN0cmVhbSBvZiByZWxlYXNlLWV2ZW50cyB0byBsZXQgdGhlCisJICAgICAqIGFwcGxpY2F0aW9uIGtub3cgd2hlcmUgdGhlIG1vdXNlIGlzIGdvaW5nLCBpZiBwcml2YXRlIG1vZGUKKwkgICAgICogMTAwMiBvciAxMDAzIGlzIGVuYWJsZWQuCisJICAgICAqLworCSAgICBldmVudHAtPmJzdGF0ZSA9IFJFUE9SVF9NT1VTRV9QT1NJVElPTjsKKwl9CisgICAgfQorCisgICAgaWYgKGludHJvICYgNCkgeworCWV2ZW50cC0+YnN0YXRlIHw9IEJVVFRPTl9TSElGVDsKKyAgICB9CisgICAgaWYgKGludHJvICYgOCkgeworCWV2ZW50cC0+YnN0YXRlIHw9IEJVVFRPTl9BTFQ7CisgICAgfQorICAgIGlmIChpbnRybyAmIDE2KSB7CisJZXZlbnRwLT5ic3RhdGUgfD0gQlVUVE9OX0NUUkw7CisgICAgfQorICAgIHJlc3VsdCA9IChldmVudHAtPmJzdGF0ZSAmIFJFUE9SVF9NT1VTRV9QT1NJVElPTikgPyBUUlVFIDogRkFMU0U7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVGhpcyBjb2RlIHJlcXVpcmVzIHRoYXQgeW91ciB4dGVybSBlbnRyeSBjb250YWluIHRoZSBrbW91cyBjYXBhYmlsaXR5IGFuZAorICogdGhhdCBpdCBiZSBzZXQgdG8gdGhlIFxFW00gZG9jdW1lbnRlZCBpbiB0aGUgWHRlcm0gQ29udHJvbCBTZXF1ZW5jZXMKKyAqIHJlZmVyZW5jZS4gIFRoaXMgaXMgaG93IHdlIGFycmFuZ2UgZm9yIG1vdXNlIGV2ZW50cyB0byBiZSByZXBvcnRlZCB2aWEgYQorICogS0VZX01PVVNFIHJldHVybiB2YWx1ZSBmcm9tIHdnZXRjaCgpLiAgQWZ0ZXIgdGhpcyB2YWx1ZSBpcyByZWNlaXZlZCwKKyAqIF9uY19tb3VzZV9pbmxpbmUoKSBnZXRzIGNhbGxlZCBhbmQgaXMgaW1tZWRpYXRlbHkgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcKKyAqIHRoZSBtb3VzZSBzdGF0dXMgaW5mb3JtYXRpb24gZm9sbG93aW5nIHRoZSBwcmVmaXguCisgKgorICogVGhlIGZvbGxvd2luZyBxdW90ZXMgZnJvbSB0aGUgY3Rsc2Vxcy5tcyBkb2N1bWVudCBpbiB0aGUgWFRlcm0gZGlzdHJpYnV0aW9uLAorICogZGVzY3JpYmluZyB0aGUgbW91c2UgdHJhY2tpbmcgZmVhdHVyZToKKyAqCisgKiBQYXJhbWV0ZXJzIGZvciBhbGwgbW91c2UgdHJhY2tpbmcgZXNjYXBlIHNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgeHRlcm0gZW5jb2RlCisgKiBudW1lcmljIHBhcmFtZXRlcnMgaW4gYSBzaW5nbGUgY2hhcmFjdGVyIGFzIHZhbHVlKzA0MC4gIEZvciBleGFtcGxlLCAhIGlzCisgKiAxLgorICoKKyAqIE9uIGJ1dHRvbiBwcmVzcyBvciByZWxlYXNlLCB4dGVybSBzZW5kcyBFU0MgWyBNIENiQ3hDeS4gIFRoZSBsb3cgdHdvIGJpdHMgb2YKKyAqIENiIGVuY29kZSBidXR0b24gaW5mb3JtYXRpb246ICAwPU1CMSBwcmVzc2VkLCAxPU1CMiBwcmVzc2VkLCAyPU1CMyBwcmVzc2VkLAorICogMz1yZWxlYXNlLiAgVGhlIHVwcGVyIGJpdHMgZW5jb2RlIHdoYXQgbW9kaWZpZXJzIHdlcmUgZG93biB3aGVuIHRoZSBidXR0b24KKyAqIHdhcyBwcmVzc2VkIGFuZCBhcmUgYWRkZWQgdG9nZXRoZXIuICA0PVNoaWZ0LCA4PU1ldGEsIDE2PUNvbnRyb2wuICBDeCBhbmQgQ3kKKyAqIGFyZSB0aGUgeCBhbmQgeSBjb29yZGluYXRlcyBvZiB0aGUgbW91c2UgZXZlbnQuICBUaGUgdXBwZXIgbGVmdCBjb3JuZXIgaXMKKyAqICgxLDEpLgorICoKKyAqIChFbmQgcXVvdGUpIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSd2ZSBlYXRlbiB0aGUga2V5IHByZWZpeC4gIEZZSSwgdGhlCisgKiBsb29wIGJlbG93IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG1vdXNlIGNsaWNrIGluZm8gaXNuJ3QgZ3VhcmFudGVlZCB0byBwcmVzZW50CisgKiBhcyBhIHNpbmdsZSBjbGlzdCBpdGVtLgorICoKKyAqIFdoZWVsIG1pY2UgbWF5IHJldHVybiBidXR0b25zIDQgYW5kIDUgd2hlbiB0aGUgd2hlZWwgaXMgdHVybmVkLiAgV2UgZW5jb2RlCisgKiB0aG9zZSBhcyBidXR0b24gcHJlc3Nlcy4KKyAqLworc3RhdGljIGJvb2wKK2RlY29kZV94dGVybV9YMTAoU0NSRUVOICpzcCwgTUVWRU5UICogZXZlbnRwKQoreworICAgIHVuc2lnbmVkIGNoYXIga2J1Zls0XTsKKyAgICBzaXplX3QgZ3JhYmJlZDsKKyAgICBpbnQgcmVzOworICAgIGJvb2wgcmVzdWx0OworCisjIGlmIFVTRV9QVEhSRUFEU19FSU5UUgorIyAgaWYgVVNFX1dFQUtfU1lNQk9MUworICAgIGlmICgocHRocmVhZF9zZWxmKSAmJiAocHRocmVhZF9raWxsKSAmJiAocHRocmVhZF9lcXVhbCkpCisjICBlbmRpZgorCV9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CisjIGVuZGlmCisgICAgZm9yIChncmFiYmVkID0gMDsgZ3JhYmJlZCA8IDM7IGdyYWJiZWQgKz0gKHNpemVfdCkgcmVzKSB7CisKKwkvKiBGb3IgVklPIG1vdXNlIHdlIGFkZCBleHRyYSBiaXQgNjQgdG8gZGlzYW1iaWd1YXRlIGJ1dHRvbi11cC4gKi8KKwlyZXMgPSAoaW50KSByZWFkKAorI2lmIFVTRV9FTVhfTU9VU0UKKwkJCSAgICAoTV9GRChzcCkgPj0gMCkgPyBNX0ZEKHNwKSA6IHNwLT5faWZkLAorI2Vsc2UKKwkJCSAgICBzcC0+X2lmZCwKKyNlbmRpZgorCQkJICAgIGtidWYgKyBncmFiYmVkLCAzIC0gZ3JhYmJlZCk7CisJaWYgKHJlcyA9PSAtMSkKKwkgICAgYnJlYWs7CisgICAgfQorI2lmIFVTRV9QVEhSRUFEU19FSU5UUgorICAgIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gMDsKKyNlbmRpZgorICAgIGtidWZbM10gPSAnXDAnOworCisgICAgVFIoVFJBQ0VfSUVWRU5ULAorICAgICAgICgiX25jX21vdXNlX2lubGluZSBzZWVzIHRoZSBmb2xsb3dpbmcgeHRlcm0gZGF0YTogJyVzJyIsIGtidWYpKTsKKworICAgIC8qIHRoZXJlJ3Mgb25seSBvbmUgbW91c2UuLi4gKi8KKyAgICBldmVudHAtPmlkID0gTk9STUFMX0VWRU5UOworCisgICAgcmVzdWx0ID0gZGVjb2RlX1gxMF9ic3RhdGUoc3AsIGV2ZW50cCwga2J1ZlswXSk7CisKKyAgICBldmVudHAtPnggPSAoa2J1ZlsxXSAtICcgJykgLSAxOworICAgIGV2ZW50cC0+eSA9IChrYnVmWzJdIC0gJyAnKSAtIDE7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWZkZWYgRVhQX1hURVJNXzEwMDUKKy8qCisgKiBUaGlzIGlzIGlkZW50aWNhbCB0byBYMTAvWDExIHJlc3BvbnNlcyBleGNlcHQgdGhhdCB0aGVyZSBhcmUgdHdvIFVURi04CisgKiBjaGFyYWN0ZXJzIHN0b3JpbmcgdGhlIG9yZGluYXRlcyBpbnN0ZWFkIG9mIHR3byBieXRlcy4KKyAqLworc3RhdGljIGJvb2wKK2RlY29kZV94dGVybV8xMDA1KFNDUkVFTiAqc3AsIE1FVkVOVCAqIGV2ZW50cCkKK3sKKyAgICBjaGFyIGtidWZbODBdOworICAgIHNpemVfdCBncmFiYmVkOworICAgIHNpemVfdCBsaW1pdCA9IChzaXplb2Yoa2J1ZikgLSAxKTsKKyAgICB1bnNpZ25lZCBjb29yZHNbMl07CisgICAgaW50IHJlczsKKyAgICBib29sIHJlc3VsdDsKKworICAgIGNvb3Jkc1swXSA9IDA7CisgICAgY29vcmRzWzFdID0gMDsKKworIyBpZiBVU0VfUFRIUkVBRFNfRUlOVFIKKyMgIGlmIFVTRV9XRUFLX1NZTUJPTFMKKyAgICBpZiAoKHB0aHJlYWRfc2VsZikgJiYgKHB0aHJlYWRfa2lsbCkgJiYgKHB0aHJlYWRfZXF1YWwpKQorIyAgZW5kaWYKKwlfbmNfZ2xvYmFscy5yZWFkX3RocmVhZCA9IHB0aHJlYWRfc2VsZigpOworIyBlbmRpZgorICAgIGZvciAoZ3JhYmJlZCA9IDA7IGdyYWJiZWQgPCBsaW1pdDspIHsKKworCXJlcyA9IChpbnQpIHJlYWQoCisjaWYgVVNFX0VNWF9NT1VTRQorCQkJICAgIChNX0ZEKHNwKSA+PSAwKSA/IE1fRkQoc3ApIDogc3AtPl9pZmQsCisjZWxzZQorCQkJICAgIHNwLT5faWZkLAorI2VuZGlmCisJCQkgICAga2J1ZiArIGdyYWJiZWQsIDEpOworCWlmIChyZXMgPT0gLTEpCisJICAgIGJyZWFrOworCWdyYWJiZWQgKz0gKHNpemVfdCkgcmVzOworCWlmIChncmFiYmVkID4gMSkgeworCSAgICBzaXplX3QgY2hlY2sgPSAxOworCSAgICBpbnQgbjsKKwkgICAgaW50IHJjOworCSAgICBmb3IgKG4gPSAwOyBuIDwgMjsgKytuKSB7CisJCWlmIChjaGVjayA+PSBncmFiYmVkKQorCQkgICAgYnJlYWs7CisJCXJjID0gX25jX2NvbnZfdG9fdXRmMzIoJmNvb3Jkc1tuXSwga2J1ZiArIGNoZWNrLCAodW5zaWduZWQpCisJCQkJICAgICAgIChncmFiYmVkIC0gY2hlY2spKTsKKwkJaWYgKCFyYykKKwkJICAgIGJyZWFrOworCQljaGVjayArPSAoc2l6ZV90KSByYzsKKwkgICAgfQorCSAgICBpZiAobiA+PSAyKQorCQlicmVhazsKKwl9CisgICAgfQorI2lmIFVTRV9QVEhSRUFEU19FSU5UUgorICAgIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gMDsKKyNlbmRpZgorCisgICAgVFIoVFJBQ0VfSUVWRU5ULAorICAgICAgICgiX25jX21vdXNlX2lubGluZSBzZWVzIHRoZSBmb2xsb3dpbmcgeHRlcm0gZGF0YTogJXMiLAorCV9uY192aXNidWZuKGtidWYsIChpbnQpIGdyYWJiZWQpKSk7CisKKyAgICAvKiB0aGVyZSdzIG9ubHkgb25lIG1vdXNlLi4uICovCisgICAgZXZlbnRwLT5pZCA9IE5PUk1BTF9FVkVOVDsKKworICAgIHJlc3VsdCA9IGRlY29kZV9YMTBfYnN0YXRlKHNwLCBldmVudHAsIFVDaGFyKGtidWZbMF0pKTsKKworICAgIGV2ZW50cC0+eCA9IChpbnQpIChjb29yZHNbMF0gLSAnICcpIC0gMTsKKyAgICBldmVudHAtPnkgPSAoaW50KSAoY29vcmRzWzFdIC0gJyAnKSAtIDE7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8qIEVYUF9YVEVSTV8xMDA1ICovCisKKy8qCisgKiBFQ01BLTQ4IHNlY3Rpb24gNS40CisgKi8KKyNkZWZpbmUgaXNJbnRlcihjKSAoKGMpID49IDB4MjAgJiYgKGMpIDw9IDB4MmYpCisjZGVmaW5lIGlzUGFyYW0oYykgKChjKSA+PSAweDMwICYmIChjKSA8PSAweDNmKQorI2RlZmluZSBpc0ZpbmFsKGMpICgoYykgPj0gMHg0MCAmJiAoYykgPD0gMHg3ZSkKKworI2RlZmluZSBNQVhfUEFSQU1TIDkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBuZXJyb3I7CQkJLyogbm9uemVybyBpZiB0aGVyZSBhcmUgdW5leHBlY3RlZCBjaGFycyAqLworICAgIGludCBucGFyYW07CQkJLyogbnVtYmVyIG9mIG51bWVyaWMgcGFyYW1ldGVycyAqLworICAgIGludCBwYXJhbXNbTUFYX1BBUkFNU107CisgICAgaW50IGZpbmFsOwkJCS8qIHRoZSBmaW5hbC1jaGFyYWN0ZXIgKi8KK30gU0dSX0RBVEE7CisKK3N0YXRpYyBib29sCityZWFkX1NHUihTQ1JFRU4gKnNwLCBTR1JfREFUQSAqIHJlc3VsdCkKK3sKKyAgICBjaGFyIGtidWZbODBdOwkJLyogYmlnZ2VyIHRoYW4gYW55IHBvc3NpYmxlIG1vdXNlIHJlc3BvbnNlICovCisgICAgaW50IGdyYWJiZWQgPSAwOworICAgIGludCByZXM7CisgICAgaW50IGNoID0gMDsKKyAgICBpbnQgbm93ID0gLTE7CisgICAgaW50IG1hcmtlciA9IDE7CisKKyAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOworIyBpZiBVU0VfUFRIUkVBRFNfRUlOVFIKKyMgIGlmIFVTRV9XRUFLX1NZTUJPTFMKKyAgICBpZiAoKHB0aHJlYWRfc2VsZikgJiYgKHB0aHJlYWRfa2lsbCkgJiYgKHB0aHJlYWRfZXF1YWwpKQorIyAgZW5kaWYKKwlfbmNfZ2xvYmFscy5yZWFkX3RocmVhZCA9IHB0aHJlYWRfc2VsZigpOworIyBlbmRpZgorICAgIGRvIHsKKwlyZXMgPSAoaW50KSByZWFkKAorI2lmIFVTRV9FTVhfTU9VU0UKKwkJCSAgICAoTV9GRChzcCkgPj0gMCkgPyBNX0ZEKHNwKSA6IHNwLT5faWZkLAorI2Vsc2UKKwkJCSAgICBzcC0+X2lmZCwKKyNlbmRpZgorCQkJICAgIGtidWYgKyBncmFiYmVkLCAxKTsKKwlpZiAocmVzID09IC0xKQorCSAgICBicmVhazsKKwlpZiAoKGdyYWJiZWQgKyAzKSA+PSAoaW50KSBzaXplb2Yoa2J1ZikpIHsKKwkgICAgcmVzdWx0LT5uZXJyb3IrKzsKKwkgICAgYnJlYWs7CisJfQorCWNoID0gVUNoYXIoa2J1ZltncmFiYmVkXSk7CisJa2J1ZltncmFiYmVkICsgMV0gPSAwOworCXN3aXRjaCAoY2gpIHsKKwljYXNlICcwJzoKKwljYXNlICcxJzoKKwljYXNlICcyJzoKKwljYXNlICczJzoKKwljYXNlICc0JzoKKwljYXNlICc1JzoKKwljYXNlICc2JzoKKwljYXNlICc3JzoKKwljYXNlICc4JzoKKwljYXNlICc5JzoKKwkgICAgaWYgKG1hcmtlcikgeworCQkrK25vdzsKKwkJcmVzdWx0LT5ucGFyYW0gPSAobm93ICsgMSk7CisJICAgIH0KKwkgICAgbWFya2VyID0gMDsKKwkgICAgcmVzdWx0LT5wYXJhbXNbbm93XSA9IChyZXN1bHQtPnBhcmFtc1tub3ddICogMTApICsgKGNoIC0gJzAnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnOyc6CisJICAgIGlmIChtYXJrZXIpIHsKKwkJKytub3c7CisJCXJlc3VsdC0+bnBhcmFtID0gKG5vdyArIDEpOworCSAgICB9CisJICAgIG1hcmtlciA9IDE7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGlmIChjaCA8IDMyIHx8IGNoID4gMTI2KSB7CisJCS8qCisJCSAqIFRlY2huaWNhbGx5IG90aGVyIGNoYXJhY3RlcnMgY291bGQgYmUgaW50ZXJzcGVyc2VkIGluIHRoZQorCQkgKiByZXNwb25zZS4gIElnbm9yZSB0aG9zZSBmb3Igbm93LgorCQkgKi8KKwkJcmVzdWx0LT5uZXJyb3IrKzsKKwkJY29udGludWU7CisJICAgIH0gZWxzZSBpZiAoaXNGaW5hbChjaCkpIHsKKwkJaWYgKG1hcmtlcikgeworCQkgICAgcmVzdWx0LT5ucGFyYW0rKzsKKwkJfQorCQlyZXN1bHQtPmZpbmFsID0gY2g7CisJICAgIH0gZWxzZSB7CisJCXJlc3VsdC0+bmVycm9yKys7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfQorCSsrZ3JhYmJlZDsKKyAgICB9IHdoaWxlICghaXNGaW5hbChjaCkpOworI2lmIFVTRV9QVEhSRUFEU19FSU5UUgorICAgIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gMDsKKyNlbmRpZgorCisgICAga2J1ZlsrK2dyYWJiZWRdID0gMDsKKyAgICBUUihUUkFDRV9JRVZFTlQsCisgICAgICAgKCJfbmNfbW91c2VfaW5saW5lIHNlZXMgdGhlIGZvbGxvd2luZyB4dGVybSBkYXRhOiAnJXMnIiwga2J1ZikpOworICAgIHJldHVybiAoZ3JhYmJlZCA+IDApICYmIChyZXN1bHQtPm5lcnJvciA9PSAwKTsKK30KKworc3RhdGljIGJvb2wKK2RlY29kZV94dGVybV9TR1IxMDA2KFNDUkVFTiAqc3AsIE1FVkVOVCAqIGV2ZW50cCkKK3sKKyAgICBTR1JfREFUQSBkYXRhOworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisgICAgaWYgKHJlYWRfU0dSKHNwLCAmZGF0YSkpIHsKKwlpbnQgYiA9IGRhdGEucGFyYW1zWzBdOworCWludCBiMyA9IDEgKyAoYiAmIDMpOworCisJZXZlbnRwLT5pZCA9IE5PUk1BTF9FVkVOVDsKKwlpZiAoZGF0YS5maW5hbCA9PSAnTScpIHsKKwkgICAgKHZvaWQpIGhhbmRsZV93aGVlbChzcCwgZXZlbnRwLCBiLCAoYiAmIDY0KSA9PSA2NCk7CisJfSBlbHNlIHsKKwkgICAgbW1hc2tfdCBwcmVzc2VkID0gKG1tYXNrX3QpIE5DVVJTRVNfTU9VU0VfTUFTSyhiMywgTkNVUlNFU19CVVRUT05fUFJFU1NFRCk7CisJICAgIG1tYXNrX3QgcmVsZWFzZSA9IChtbWFza190KSBOQ1VSU0VTX01PVVNFX01BU0soYjMsIE5DVVJTRVNfQlVUVE9OX1JFTEVBU0VEKTsKKwkgICAgaWYgKHNwLT5fbW91c2VfYnN0YXRlICYgcHJlc3NlZCkgeworCQlldmVudHAtPmJzdGF0ZSA9IHJlbGVhc2U7CisJCXNwLT5fbW91c2VfYnN0YXRlICY9IH5wcmVzc2VkOworCSAgICB9IGVsc2UgeworCQlldmVudHAtPmJzdGF0ZSA9IFJFUE9SVF9NT1VTRV9QT1NJVElPTjsKKwkgICAgfQorCX0KKwlyZXN1bHQgPSAoZXZlbnRwLT5ic3RhdGUgJiBSRVBPUlRfTU9VU0VfUE9TSVRJT04pID8gVFJVRSA6IEZBTFNFOworCWV2ZW50cC0+eCA9IChkYXRhLnBhcmFtc1sxXSA/IChkYXRhLnBhcmFtc1sxXSAtIDEpIDogMCk7CisJZXZlbnRwLT55ID0gKGRhdGEucGFyYW1zWzJdID8gKGRhdGEucGFyYW1zWzJdIC0gMSkgOiAwKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIGJvb2wKIF9uY19tb3VzZV9pbmxpbmUoU0NSRUVOICpzcCkKIC8qIG1vdXNlIHJlcG9ydCByZWNlaXZlZCBpbiB0aGUga2V5Ym9hcmQgc3RyZWFtIC0tIHBhcnNlIGl0cyBpbmZvICovCiB7Ci0gICAgaW50IGI7CiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKICAgICBNRVZFTlQgKmV2ZW50cCA9IHNwLT5fbW91c2VfZXZlbnRwOwogCiAgICAgVFIoTVlfVFJBQ0UsICgiX25jX21vdXNlX2lubGluZSgpIGNhbGxlZCIpKTsKIAogICAgIGlmIChzcC0+X21vdXNlX3R5cGUgPT0gTV9YVEVSTSkgewotCXVuc2lnbmVkIGNoYXIga2J1Zls0XTsKLQltbWFza190IHByZXY7Ci0Jc2l6ZV90IGdyYWJiZWQ7Ci0JaW50IHJlczsKLQotCS8qIFRoaXMgY29kZSByZXF1aXJlcyB0aGF0IHlvdXIgeHRlcm0gZW50cnkgY29udGFpbiB0aGUga21vdXMKLQkgKiBjYXBhYmlsaXR5IGFuZCB0aGF0IGl0IGJlIHNldCB0byB0aGUgXEVbTSBkb2N1bWVudGVkIGluIHRoZQotCSAqIFh0ZXJtIENvbnRyb2wgU2VxdWVuY2VzIHJlZmVyZW5jZS4gIFRoaXMgaXMgaG93IHdlCi0JICogYXJyYW5nZSBmb3IgbW91c2UgZXZlbnRzIHRvIGJlIHJlcG9ydGVkIHZpYSBhIEtFWV9NT1VTRQotCSAqIHJldHVybiB2YWx1ZSBmcm9tIHdnZXRjaCgpLiAgQWZ0ZXIgdGhpcyB2YWx1ZSBpcyByZWNlaXZlZCwKLQkgKiBfbmNfbW91c2VfaW5saW5lKCkgZ2V0cyBjYWxsZWQgYW5kIGlzIGltbWVkaWF0ZWx5Ci0JICogcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlIG1vdXNlIHN0YXR1cyBpbmZvcm1hdGlvbgotCSAqIGZvbGxvd2luZyB0aGUgcHJlZml4LgotCSAqCi0JICogVGhlIGZvbGxvd2luZyBxdW90ZXMgZnJvbSB0aGUgY3RybHNlcXMubXMgZG9jdW1lbnQgaW4gdGhlCi0JICogWCBkaXN0cmlidXRpb24sIGRlc2NyaWJpbmcgdGhlIFggbW91c2UgdHJhY2tpbmcgZmVhdHVyZToKLQkgKgotCSAqIFBhcmFtZXRlcnMgZm9yIGFsbCBtb3VzZSB0cmFja2luZyBlc2NhcGUgc2VxdWVuY2VzCi0JICogZ2VuZXJhdGVkIGJ5IHh0ZXJtIGVuY29kZSBudW1lcmljIHBhcmFtZXRlcnMgaW4gYSBzaW5nbGUKLQkgKiBjaGFyYWN0ZXIgYXMgdmFsdWUrMDQwLiAgRm9yIGV4YW1wbGUsICEgIGlzIDEuCi0JICoKLQkgKiBPbiBidXR0b24gcHJlc3Mgb3IgcmVsZWFzZSwgeHRlcm0gc2VuZHMgRVNDIFsgTSBDYkN4Q3kuCi0JICogVGhlIGxvdyB0d28gYml0cyBvZiBDYiBlbmNvZGUgYnV0dG9uIGluZm9ybWF0aW9uOiAwPU1CMQotCSAqIHByZXNzZWQsIDE9TUIyIHByZXNzZWQsIDI9TUIzIHByZXNzZWQsIDM9cmVsZWFzZS4gIFRoZQotCSAqIHVwcGVyIGJpdHMgZW5jb2RlIHdoYXQgbW9kaWZpZXJzIHdlcmUgZG93biB3aGVuIHRoZQotCSAqIGJ1dHRvbiB3YXMgcHJlc3NlZCBhbmQgYXJlIGFkZGVkIHRvZ2V0aGVyLiAgND1TaGlmdCwKLQkgKiA4PU1ldGEsIDE2PUNvbnRyb2wuICBDeCBhbmQgQ3kgYXJlIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGVzCi0JICogb2YgdGhlIG1vdXNlIGV2ZW50LiAgVGhlIHVwcGVyIGxlZnQgY29ybmVyIGlzICgxLDEpLgotCSAqCi0JICogKEVuZCBxdW90ZSkgIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSd2ZSBlYXRlbiB0aGUKLQkgKiBrZXkgcHJlZml4LiAgRllJLCB0aGUgbG9vcCBiZWxvdyBpcyBuZWNlc3NhcnkgYmVjYXVzZQotCSAqIG1vdXNlIGNsaWNrIGluZm8gaXNuJ3QgZ3VhcmFudGVlZCB0byBwcmVzZW50IGFzIGEKLQkgKiBzaW5nbGUgY2xpc3QgaXRlbS4KLQkgKgotCSAqIFdoZWVsIG1pY2UgbWF5IHJldHVybiBidXR0b25zIDQgYW5kIDUgd2hlbiB0aGUgd2hlZWwgaXMgdHVybmVkLgotCSAqIFdlIGVuY29kZSB0aG9zZSBhcyBidXR0b24gcHJlc3Nlcy4KLQkgKi8KLQlmb3IgKGdyYWJiZWQgPSAwOyBncmFiYmVkIDwgMzsgZ3JhYmJlZCArPSAoc2l6ZV90KSByZXMpIHsKLQotCSAgICAvKiBGb3IgVklPIG1vdXNlIHdlIGFkZCBleHRyYSBiaXQgNjQgdG8gZGlzYW1iaWd1YXRlIGJ1dHRvbi11cC4gKi8KLSNpZiBVU0VfRU1YX01PVVNFCi0JICAgIHJlcyA9IHJlYWQoTV9GRChzcCkgPj0gMCA/IE1fRkQoc3ApIDogc3AtPl9pZmQsICZrYnVmLCAzKTsKLSNlbHNlCi0JICAgIHJlcyA9IHJlYWQoc3AtPl9pZmQsIGtidWYgKyBncmFiYmVkLCAzIC0gZ3JhYmJlZCk7CisJc3dpdGNoIChzcC0+X21vdXNlX2Zvcm1hdCkgeworCWNhc2UgTUZfWDEwOgorCSAgICByZXN1bHQgPSBkZWNvZGVfeHRlcm1fWDEwKHNwLCBldmVudHApOworCSAgICBicmVhazsKKwljYXNlIE1GX1NHUjEwMDY6CisJICAgIHJlc3VsdCA9IGRlY29kZV94dGVybV9TR1IxMDA2KHNwLCBldmVudHApOworCSAgICBicmVhazsKKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorCWNhc2UgTUZfWFRFUk1fMTAwNToKKwkgICAgcmVzdWx0ID0gZGVjb2RlX3h0ZXJtXzEwMDUoc3AsIGV2ZW50cCk7CisJICAgIGJyZWFrOwogI2VuZGlmCi0JICAgIGlmIChyZXMgPT0gLTEpCi0JCWJyZWFrOwotCX0KLQlrYnVmWzNdID0gJ1wwJzsKLQotCVRSKFRSQUNFX0lFVkVOVCwKLQkgICAoIl9uY19tb3VzZV9pbmxpbmUgc2VlcyB0aGUgZm9sbG93aW5nIHh0ZXJtIGRhdGE6ICclcyciLCBrYnVmKSk7Ci0KLQkvKiB0aGVyZSdzIG9ubHkgb25lIG1vdXNlLi4uICovCi0JZXZlbnRwLT5pZCA9IE5PUk1BTF9FVkVOVDsKLQotCS8qIHByb2Nlc3NpbmcgY29kZSBnb2VzIGhlcmUgKi8KLQlldmVudHAtPmJzdGF0ZSA9IDA7Ci0JcHJldiA9IFBSRVYoZXZlbnRwKS0+YnN0YXRlOwotCi0jaWYgVVNFX0VNWF9NT1VTRQotI2RlZmluZSBQUkVTU19QT1NJVElPTihuKSBcCi0JZXZlbnRwLT5ic3RhdGUgPSBNQVNLX1BSRVNTKG4pOyBcCi0JaWYgKGtidWZbMF0gJiAweDQwKSBcCi0JICAgIGV2ZW50cC0+YnN0YXRlID0gTUFTS19SRUxFQVNFKG4pCi0jZWxzZQotI2RlZmluZSBQUkVTU19QT1NJVElPTihuKSBcCi0JZXZlbnRwLT5ic3RhdGUgPSAobW1hc2tfdCkgKHByZXYgJiBNQVNLX1BSRVNTKG4pIFwKLQkJCQkgICAgPyBSRVBPUlRfTU9VU0VfUE9TSVRJT04gXAotCQkJCSAgICA6IE1BU0tfUFJFU1MobikpCi0jZW5kaWYKLQotCXN3aXRjaCAoa2J1ZlswXSAmIDB4MykgewotCWNhc2UgMHgwOgotCSAgICBpZiAoa2J1ZlswXSAmIDY0KQotCQlldmVudHAtPmJzdGF0ZSA9IE1BU0tfUFJFU1MoNCk7Ci0JICAgIGVsc2UKLQkJUFJFU1NfUE9TSVRJT04oMSk7Ci0JICAgIGJyZWFrOwotCi0JY2FzZSAweDE6Ci0jaWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OID09IDIKLQkgICAgaWYgKGtidWZbMF0gJiA2NCkKLQkJZXZlbnRwLT5ic3RhdGUgPSBNQVNLX1BSRVNTKDUpOwotCSAgICBlbHNlCi0jZW5kaWYKLQkJUFJFU1NfUE9TSVRJT04oMik7Ci0JICAgIGJyZWFrOwotCi0JY2FzZSAweDI6Ci0JICAgIFBSRVNTX1BPU0lUSU9OKDMpOwotCSAgICBicmVhazsKLQotCWNhc2UgMHgzOgotCSAgICAvKgotCSAgICAgKiBSZWxlYXNlIGV2ZW50cyBhcmVuJ3QgcmVwb3J0ZWQgZm9yIGluZGl2aWR1YWwgYnV0dG9ucywganVzdCBmb3IKLQkgICAgICogdGhlIGJ1dHRvbiBzZXQgYXMgYSB3aG9sZS4gIEhvd2V2ZXIsIGJlY2F1c2UgdGhlcmUgYXJlIG5vcm1hbGx5Ci0JICAgICAqIG5vIG1vdXNlIGV2ZW50cyB1bmRlciB4dGVybSB0aGF0IGludGVydmVuZSBiZXR3ZWVuIHByZXNzIGFuZAotCSAgICAgKiByZWxlYXNlLCB3ZSBjYW4gaW5mZXIgdGhlIGJ1dHRvbiBhY3R1YWxseSByZWxlYXNlZCBieSBsb29raW5nIGF0Ci0JICAgICAqIHRoZSBwcmV2aW91cyBldmVudC4KLQkgICAgICovCi0JICAgIGlmIChwcmV2ICYgKEJVVFRPTl9QUkVTU0VEIHwgQlVUVE9OX1JFTEVBU0VEKSkgewotCQlldmVudHAtPmJzdGF0ZSA9IEJVVFRPTl9SRUxFQVNFRDsKLQkJZm9yIChiID0gMTsgYiA8PSBNQVhfQlVUVE9OUzsgKytiKSB7Ci0JCSAgICBpZiAoIShwcmV2ICYgTUFTS19QUkVTUyhiKSkpCi0JCQlldmVudHAtPmJzdGF0ZSAmPSB+TUFTS19SRUxFQVNFKGIpOwotCQl9Ci0JICAgIH0gZWxzZSB7Ci0JCS8qCi0JCSAqIFhGcmVlODYgeHRlcm0gd2lsbCByZXR1cm4gYSBzdHJlYW0gb2YgcmVsZWFzZS1ldmVudHMgdG8KLQkJICogbGV0IHRoZSBhcHBsaWNhdGlvbiBrbm93IHdoZXJlIHRoZSBtb3VzZSBpcyBnb2luZywgaWYgdGhlCi0JCSAqIHByaXZhdGUgbW9kZSAxMDAyIG9yIDEwMDMgaXMgZW5hYmxlZC4KLQkJICovCi0JCWV2ZW50cC0+YnN0YXRlID0gUkVQT1JUX01PVVNFX1BPU0lUSU9OOwotCSAgICB9Ci0JICAgIGJyZWFrOwotCX0KLQlyZXN1bHQgPSAoZXZlbnRwLT5ic3RhdGUgJiBSRVBPUlRfTU9VU0VfUE9TSVRJT04pID8gVFJVRSA6IEZBTFNFOwotCi0JaWYgKGtidWZbMF0gJiA0KSB7Ci0JICAgIGV2ZW50cC0+YnN0YXRlIHw9IEJVVFRPTl9TSElGVDsKLQl9Ci0JaWYgKGtidWZbMF0gJiA4KSB7Ci0JICAgIGV2ZW50cC0+YnN0YXRlIHw9IEJVVFRPTl9BTFQ7Ci0JfQotCWlmIChrYnVmWzBdICYgMTYpIHsKLQkgICAgZXZlbnRwLT5ic3RhdGUgfD0gQlVUVE9OX0NUUkw7CiAJfQogCi0JZXZlbnRwLT54ID0gKGtidWZbMV0gLSAnICcpIC0gMTsKLQlldmVudHAtPnkgPSAoa2J1ZlsyXSAtICcgJykgLSAxOwogCVRSKE1ZX1RSQUNFLAogCSAgICgiX25jX21vdXNlX2lubGluZTogcHJpbWl0aXZlIG1vdXNlLWV2ZW50ICVzIGhhcyBzbG90ICVsZCIsCiAJICAgIF9uY190cmFjZW1vdXNlKHNwLCBldmVudHApLApAQCAtOTE1LDE2ICsxMjk5LDMwIEBACiAKIAkvKiBidW1wIHRoZSBuZXh0LWZyZWUgcG9pbnRlciBpbnRvIHRoZSBjaXJjdWxhciBsaXN0ICovCiAJc3AtPl9tb3VzZV9ldmVudHAgPSBORVhUKGV2ZW50cCk7Ci0jaWYgMAkJCQkvKiB0aGlzIHJldHVybiB3b3VsZCBiZSBuZWVkZWQgZm9yIFFOWCdzIG1vZHMgdG8gbGliX2dldGNoLmMgKi8KLQlyZXR1cm4gKFRSVUUpOwotI2VuZGlmCisKKwlpZiAoIXJlc3VsdCkgeworCSAgICAvKiBJZiB0aGlzIGV2ZW50IGlzIGZyb20gYSB3aGVlbC1tb3VzZSwgdHJlYXQgaXQgbGlrZSBwb3NpdGlvbgorCSAgICAgKiByZXBvcnRzIGFuZCBhdm9pZCB3YWl0aW5nIGZvciB0aGUgcmVsZWFzZS1ldmVudHMgd2hpY2ggd2lsbAorCSAgICAgKiBuZXZlciBjb21lLgorCSAgICAgKi8KKwkgICAgaWYgKGV2ZW50cC0+YnN0YXRlICYgQlVUVE9OX1BSRVNTRUQpIHsKKwkJaW50IGI7CisKKwkJZm9yIChiID0gNDsgYiA8PSBNQVhfQlVUVE9OUzsgKytiKSB7CisJCSAgICBpZiAoKGV2ZW50cC0+YnN0YXRlICYgTUFTS19QUkVTUyhiKSkpIHsKKwkJCXJlc3VsdCA9IFRSVUU7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQogICAgIH0KIAogICAgIHJldHVybiAocmVzdWx0KTsKIH0KIAogc3RhdGljIHZvaWQKLW1vdXNlX2FjdGl2YXRlKFNDUkVFTiAqc3AsIGJvb2wgb24pCittb3VzZV9hY3RpdmF0ZShTQ1JFRU4gKnNwLCBpbnQgb24pCiB7CiAgICAgaWYgKCFvbiAmJiAhc3AtPl9tb3VzZV9pbml0aWFsaXplZCkKIAlyZXR1cm47CkBAIC05MzMsMTEgKzEzMzEsMTEgQEAKIAlyZXR1cm47CiAKICAgICBpZiAob24pIHsKLQorCXNwLT5fbW91c2VfYnN0YXRlID0gMDsKIAlzd2l0Y2ggKHNwLT5fbW91c2VfdHlwZSkgewogCWNhc2UgTV9YVEVSTToKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotCSAgICBrZXlvayhLRVlfTU9VU0UsIG9uKTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKGtleW9rKSAoTkNVUlNFU19TUF9BUkd4IEtFWV9NT1VTRSwgb24pOwogI2VuZGlmCiAJICAgIFRQVVRTX1RSQUNFKCJ4dGVybSBtb3VzZSBpbml0aWFsaXphdGlvbiIpOwogCSAgICBlbmFibGVfeHRlcm1fbW91c2Uoc3AsIDEpOwpAQCAtOTU2LDYgKzEzNTQsMTEgQEAKIAkgICAgc3AtPl9tb3VzZV9hY3RpdmUgPSBUUlVFOwogCSAgICBicmVhazsKICNlbmRpZgorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCWNhc2UgTV9URVJNX0RSSVZFUjoKKwkgICAgc3AtPl9tb3VzZV9hY3RpdmUgPSBUUlVFOworCSAgICBicmVhazsKKyNlbmRpZgogCWNhc2UgTV9OT05FOgogCSAgICByZXR1cm47CiAJfQpAQCAtOTg1LDExICsxMzg4LDE2IEBACiAJICAgIHNwLT5fbW91c2VfYWN0aXZlID0gRkFMU0U7CiAJICAgIGJyZWFrOwogI2VuZGlmCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJY2FzZSBNX1RFUk1fRFJJVkVSOgorCSAgICBzcC0+X21vdXNlX2FjdGl2ZSA9IEZBTFNFOworCSAgICBicmVhazsKKyNlbmRpZgogCWNhc2UgTV9OT05FOgogCSAgICByZXR1cm47CiAJfQogICAgIH0KLSAgICBfbmNfZmx1c2goKTsKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoTkNVUlNFU19TUF9BUkcpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEwMDMsMTAgKzE0MTEsMTMgQEAKIC8qIHBhcnNlIGEgcnVuIG9mIGF0b21pYyBtb3VzZSBldmVudHMgaW50byBhIGdlc3R1cmUgKi8KIHsKICAgICBNRVZFTlQgKmV2ZW50cCA9IHNwLT5fbW91c2VfZXZlbnRwOwotICAgIE1FVkVOVCAqZXAsICpydW5wLCAqbmV4dCwgKnByZXYgPSBQUkVWKGV2ZW50cCk7CisgICAgTUVWRU5UICpuZXh0LCAqZXA7CisgICAgTUVWRU5UICpmaXJzdF92YWxpZCA9IE5VTEw7CisgICAgTUVWRU5UICpmaXJzdF9pbnZhbGlkID0gTlVMTDsKICAgICBpbnQgbjsKICAgICBpbnQgYjsKICAgICBib29sIG1lcmdlOworICAgIGJvb2wgZW5kTG9vcDsKIAogICAgIFRSKE1ZX1RSQUNFLCAoIl9uY19tb3VzZV9wYXJzZSglZCkgY2FsbGVkIiwgcnVuY291bnQpKTsKIApAQCAtMTAyMyw3ICsxNDM0LDggQEAKICAgICAgKgogICAgICAqIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcnVuIG1heSBub3QgcmVzb2x2ZSB0byBhIHNpbmdsZSBldmVudCAoZm9yCiAgICAgICogZXhhbXBsZSwgaWYgdGhlIHVzZXIgcXVhZHJ1cGxlLWNsaWNrcykuICBJZiBzbywgbGVhZGluZyBldmVudHMKLSAgICAgKiBpbiB0aGUgcnVuIGFyZSBpZ25vcmVkLgorICAgICAqIGluIHRoZSBydW4gYXJlIGlnbm9yZWQgaWYgdXNlciBkb2VzIG5vdCBjYWxsIGdldG1vdXNlIGluIGEgbG9vcCAoZ2V0dGluZworICAgICAqIHRoZW0gZnJvbSBuZXdlc3QgdG8gb2xkZXIpLgogICAgICAqCiAgICAgICogTm90ZSB0aGF0IHRoaXMgcm91dGluZSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpYwogICAgICAqIGZvcm1hdCBvZiB0aGUgcG9pbnRpbmctZGV2aWNlJ3MgcmVwb3J0cy4gIFdlIGNhbiB1c2UgaXQgdG8gcGFyc2UKQEAgLTEwMzEsNzkgKzE0NDMsMTEwIEBACiAgICAgICogYnV0dG9uIGJhc2lzLCBhcyBsb25nIGFzIHRoZSBkZXZpY2UtZGVwZW5kZW50IG1vdXNlIGNvZGUgcHV0cyBzdHVmZgogICAgICAqIG9uIHRoZSBxdWV1ZSBpbiBNRVZFTlQgZm9ybWF0LgogICAgICAqLwotICAgIGlmIChydW5jb3VudCA9PSAxKSB7Ci0JVFIoTVlfVFJBQ0UsCi0JICAgKCJfbmNfbW91c2VfcGFyc2U6IHJldHVybmluZyBzaW1wbGUgbW91c2UgZXZlbnQgJXMgYXQgc2xvdCAlbGQiLAotCSAgICBfbmNfdHJhY2Vtb3VzZShzcCwgcHJldiksCi0JICAgIChsb25nKSBJbmRleEVWKHNwLCBwcmV2KSkpOwotCXJldHVybiAocHJldi0+aWQgPj0gTk9STUFMX0VWRU5UKQotCSAgICA/ICgocHJldi0+YnN0YXRlICYgc3AtPl9tb3VzZV9tYXNrKSA/IFRSVUUgOiBGQUxTRSkKLQkgICAgOiBGQUxTRTsKLSAgICB9CiAKLSAgICAvKiBmaW5kIHRoZSBzdGFydCBvZiB0aGUgcnVuICovCi0gICAgcnVucCA9IGV2ZW50cDsKLSAgICBmb3IgKG4gPSBydW5jb3VudDsgbiA+IDA7IG4tLSkgewotCXJ1bnAgPSBQUkVWKHJ1bnApOworICAgIC8qCisgICAgICogUmVzZXQgYWxsIGV2ZW50cyB0aGF0IHdlcmUgbm90IHNldCwgaW4gY2FzZSB0aGUgdXNlciBzb21ldGltZXMgY2FsbHMKKyAgICAgKiBnZXRtb3VzZSBvbmx5IG9uY2UgYW5kIG90aGVyIHRpbWVzIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIGV2ZW50cyBpbgorICAgICAqIHF1ZXVlLgorICAgICAqCisgICAgICogVGhpcyBhbHNvIGFsbG93cyByZWFjaGluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBydW4uCisgICAgICovCisgICAgZXAgPSBldmVudHA7CisgICAgZm9yIChuID0gcnVuY291bnQ7IG4gPCBFVl9NQVg7IG4rKykgeworCUludmFsaWRhdGUoZXApOworCWVwID0gTkVYVChlcCk7CiAgICAgfQogCiAjaWZkZWYgVFJBQ0UKICAgICBpZiAoVVNFX1RSQUNFRihUUkFDRV9JRVZFTlQpKSB7CiAJX3RyYWNlX3Nsb3Qoc3AsICJiZWZvcmUgbW91c2UgcHJlc3MvcmVsZWFzZSBtZXJnZToiKTsKIAlfdHJhY2VmKCJfbmNfbW91c2VfcGFyc2U6IHJ1biBzdGFydHMgYXQgJWxkLCBlbmRzIGF0ICVsZCwgY291bnQgJWQiLAotCQlSdW5QYXJhbXMoc3AsIGV2ZW50cCwgcnVucCksCisJCVJ1blBhcmFtcyhzcCwgZXZlbnRwLCBlcCksCiAJCXJ1bmNvdW50KTsKIAlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOwogICAgIH0KICNlbmRpZiAvKiBUUkFDRSAqLwogCiAgICAgLyogZmlyc3QgcGFzczsgbWVyZ2UgcHJlc3MvcmVsZWFzZSBwYWlycyAqLwotICAgIGRvIHsKLQltZXJnZSA9IEZBTFNFOwotCWZvciAoZXAgPSBydW5wOyAobmV4dCA9IE5FWFQoZXApKSAhPSBldmVudHA7IGVwID0gbmV4dCkgeworICAgIGVuZExvb3AgPSBGQUxTRTsKKyAgICB3aGlsZSAoIWVuZExvb3ApIHsKKwluZXh0ID0gTkVYVChlcCk7CisJaWYgKG5leHQgPT0gZXZlbnRwKSB7CisJICAgIC8qIFdpbGwgZW5kIHRoZSBsb29wLCBidXQgY29tcGFjdCBiZWZvcmUgKi8KKwkgICAgZW5kTG9vcCA9IFRSVUU7CisJfSBlbHNlIHsKIAogI2RlZmluZSBNQVNLX0NIQU5HRUQoeCkgKCEoZXAtPmJzdGF0ZSAmIE1BU0tfUFJFU1MoeCkpIFwKIAkJICAgICAgPT0gIShuZXh0LT5ic3RhdGUgJiBNQVNLX1JFTEVBU0UoeCkpKQogCi0JICAgIGlmIChlcC0+eCA9PSBuZXh0LT54ICYmIGVwLT55ID09IG5leHQtPnkKKwkgICAgaWYgKFZhbGlkRXZlbnQoZXApICYmIFZhbGlkRXZlbnQobmV4dCkKKwkJJiYgZXAtPnggPT0gbmV4dC0+eCAmJiBlcC0+eSA9PSBuZXh0LT55CiAJCSYmIChlcC0+YnN0YXRlICYgQlVUVE9OX1BSRVNTRUQpCi0JCSYmIE1BU0tfQ0hBTkdFRCgxKQotCQkmJiBNQVNLX0NIQU5HRUQoMikKLQkJJiYgTUFTS19DSEFOR0VEKDMpCi0JCSYmIE1BU0tfQ0hBTkdFRCg0KQotI2lmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiA9PSAyCi0JCSYmIE1BU0tfQ0hBTkdFRCg1KQotI2VuZGlmCi0JCSkgeworCQkmJiAoIShuZXh0LT5ic3RhdGUgJiBCVVRUT05fUFJFU1NFRCkpKSB7CisJCWJvb2wgY2hhbmdlZCA9IFRSVUU7CisKIAkJZm9yIChiID0gMTsgYiA8PSBNQVhfQlVUVE9OUzsgKytiKSB7Ci0JCSAgICBpZiAoKHNwLT5fbW91c2VfbWFzayAmIE1BU0tfQ0xJQ0soYikpCi0JCQkmJiAoZXAtPmJzdGF0ZSAmIE1BU0tfUFJFU1MoYikpKSB7Ci0JCQllcC0+YnN0YXRlICY9IH5NQVNLX1BSRVNTKGIpOwotCQkJZXAtPmJzdGF0ZSB8PSBNQVNLX0NMSUNLKGIpOwotCQkJbWVyZ2UgPSBUUlVFOworCQkgICAgaWYgKCFNQVNLX0NIQU5HRUQoYikpIHsKKwkJCWNoYW5nZWQgPSBGQUxTRTsKKwkJCWJyZWFrOwogCQkgICAgfQogCQl9Ci0JCWlmIChtZXJnZSkKLQkJICAgIG5leHQtPmlkID0gSU5WQUxJRF9FVkVOVDsKKworCQlpZiAoY2hhbmdlZCkgeworCQkgICAgbWVyZ2UgPSBGQUxTRTsKKwkJICAgIGZvciAoYiA9IDE7IGIgPD0gTUFYX0JVVFRPTlM7ICsrYikgeworCQkJaWYgKChzcC0+X21vdXNlX21hc2sgJiBNQVNLX0NMSUNLKGIpKQorCQkJICAgICYmIChlcC0+YnN0YXRlICYgTUFTS19QUkVTUyhiKSkpIHsKKwkJCSAgICBuZXh0LT5ic3RhdGUgJj0gfk1BU0tfUkVMRUFTRShiKTsKKwkJCSAgICBuZXh0LT5ic3RhdGUgfD0gTUFTS19DTElDSyhiKTsKKwkJCSAgICBtZXJnZSA9IFRSVUU7CisJCQl9CisJCSAgICB9CisJCSAgICBpZiAobWVyZ2UpIHsKKwkJCUludmFsaWRhdGUoZXApOworCQkgICAgfQorCQl9CiAJICAgIH0KIAl9Ci0gICAgfSB3aGlsZQotCShtZXJnZSk7CiAKKwkvKiBDb21wYWN0IHZhbGlkIGV2ZW50cyAqLworCWlmICghVmFsaWRFdmVudChlcCkpIHsKKwkgICAgaWYgKChmaXJzdF92YWxpZCAhPSBOVUxMKSAmJiAoZmlyc3RfaW52YWxpZCA9PSBOVUxMKSkgeworCQlmaXJzdF9pbnZhbGlkID0gZXA7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBpZiAoZmlyc3RfdmFsaWQgPT0gTlVMTCkgeworCQlmaXJzdF92YWxpZCA9IGVwOworCSAgICB9IGVsc2UgaWYgKGZpcnN0X2ludmFsaWQgIT0gTlVMTCkgeworCQkqZmlyc3RfaW52YWxpZCA9ICplcDsKKwkJSW52YWxpZGF0ZShlcCk7CisJCWZpcnN0X2ludmFsaWQgPSBORVhUKGZpcnN0X2ludmFsaWQpOworCSAgICB9CisJfQorCisJZXAgPSBuZXh0OworICAgIH0KKworICAgIGlmIChmaXJzdF9pbnZhbGlkICE9IE5VTEwpIHsKKwlldmVudHAgPSBmaXJzdF9pbnZhbGlkOworICAgIH0KICNpZmRlZiBUUkFDRQogICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX0lFVkVOVCkpIHsKIAlfdHJhY2Vfc2xvdChzcCwgImJlZm9yZSBtb3VzZSBjbGljayBtZXJnZToiKTsKLQlfdHJhY2VmKCJfbmNfbW91c2VfcGFyc2U6IHJ1biBzdGFydHMgYXQgJWxkLCBlbmRzIGF0ICVsZCwgY291bnQgJWQiLAotCQlSdW5QYXJhbXMoc3AsIGV2ZW50cCwgcnVucCksCi0JCXJ1bmNvdW50KTsKLQlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOworCWlmIChmaXJzdF92YWxpZCA9PSBOVUxMKSB7CisJICAgIF90cmFjZWYoIl9uY19tb3VzZV9wYXJzZTogbm8gdmFsaWQgZXZlbnQiKTsKKwl9IGVsc2UgeworCSAgICBfdHJhY2VmKCJfbmNfbW91c2VfcGFyc2U6IHJ1biBzdGFydHMgYXQgJWxkLCBlbmRzIGF0ICVsZCwgY291bnQgJWQiLAorCQkgICAgUnVuUGFyYW1zKHNwLCBldmVudHAsIGZpcnN0X3ZhbGlkKSwKKwkJICAgIHJ1bmNvdW50KTsKKwkgICAgX25jX3VubG9ja19nbG9iYWwodHJhY2VmKTsKKwl9CiAgICAgfQogI2VuZGlmIC8qIFRSQUNFICovCiAKICAgICAvKgotICAgICAqIFNlY29uZCBwYXNzOyBtZXJnZSBjbGljayBydW5zLiAgQXQgdGhpcyBwb2ludCwgY2xpY2sgZXZlbnRzIGFyZQotICAgICAqIGVhY2ggZm9sbG93ZWQgYnkgb25lIGludmFsaWQgZXZlbnQuIFdlIG1lcmdlIGNsaWNrIGV2ZW50cwotICAgICAqIGZvcndhcmQgaW4gdGhlIHF1ZXVlLgorICAgICAqIFNlY29uZCBwYXNzOyBtZXJnZSBjbGljayBydW5zLiAgV2UgbWVyZ2UgY2xpY2sgZXZlbnRzIGZvcndhcmQgaW4gdGhlCisgICAgICogcXVldWUuICBGb3IgZXhhbXBsZSwgZG91YmxlIGNsaWNrIGNhbiBiZSBjaGFuZ2VkIHRvIHRyaXBsZSBjbGljay4KICAgICAgKgogICAgICAqIE5PVEU6IFRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoaXMgZGVzaWduISAgSWYgdGhlIGFwcGxpY2F0aW9uCiAgICAgICogYWxsb3dzIGVub3VnaCBjbGljayBldmVudHMgdG8gcGlsZSB1cCBpbiB0aGUgY2lyY3VsYXIgcXVldWUgc28KQEAgLTExMTYsODcgKzE1NTksMTAyIEBACiAgICAgICogYnV0IHRoZSB0aW1lciBlbGVtZW50IHdvdWxkIGhhdmUgdG8gaGF2ZSBzdWItc2Vjb25kIHJlc29sdXRpb24sCiAgICAgICogd2hpY2ggd291bGQgZ2V0IHVzIGludG8gcG9ydGFiaWxpdHkgdHJvdWJsZS4KICAgICAgKi8KLSAgICBkbyB7Ci0JTUVWRU5UICpmb2xsb3dlcjsKKyAgICBmaXJzdF9pbnZhbGlkID0gTlVMTDsKKyAgICBlbmRMb29wID0gKGZpcnN0X3ZhbGlkID09IE5VTEwpOworICAgIGVwID0gZmlyc3RfdmFsaWQ7CisgICAgd2hpbGUgKCFlbmRMb29wKSB7CisJbmV4dCA9IE5FWFQoZXApOwogCi0JbWVyZ2UgPSBGQUxTRTsKLQlmb3IgKGVwID0gcnVucDsgKG5leHQgPSBORVhUKGVwKSkgIT0gZXZlbnRwOyBlcCA9IG5leHQpCi0JICAgIGlmIChlcC0+aWQgIT0gSU5WQUxJRF9FVkVOVCkgewotCQlpZiAobmV4dC0+aWQgIT0gSU5WQUxJRF9FVkVOVCkKLQkJICAgIGNvbnRpbnVlOwotCQlmb2xsb3dlciA9IE5FWFQobmV4dCk7Ci0JCWlmIChmb2xsb3dlci0+aWQgPT0gSU5WQUxJRF9FVkVOVCkKLQkJICAgIGNvbnRpbnVlOwotCi0JCS8qIG1lcmdlIGNsaWNrIGV2ZW50cyBmb3J3YXJkICovCi0JCWlmICgoZXAtPmJzdGF0ZSAmIEJVVFRPTl9DTElDS0VEKQotCQkgICAgJiYgKGZvbGxvd2VyLT5ic3RhdGUgJiBCVVRUT05fQ0xJQ0tFRCkpIHsKLQkJICAgIGZvciAoYiA9IDE7IGIgPD0gTUFYX0JVVFRPTlM7ICsrYikgewotCQkJaWYgKChzcC0+X21vdXNlX21hc2sgJiBNQVNLX0RPVUJMRV9DTElDSyhiKSkKLQkJCSAgICAmJiAoZm9sbG93ZXItPmJzdGF0ZSAmIE1BU0tfQ0xJQ0soYikpKSB7Ci0JCQkgICAgZm9sbG93ZXItPmJzdGF0ZSAmPSB+TUFTS19DTElDSyhiKTsKLQkJCSAgICBmb2xsb3dlci0+YnN0YXRlIHw9IE1BU0tfRE9VQkxFX0NMSUNLKGIpOwotCQkJICAgIG1lcmdlID0gVFJVRTsKLQkJCX0KKwlpZiAobmV4dCA9PSBldmVudHApIHsKKwkgICAgLyogV2lsbCBlbmQgdGhlIGxvb3AsIGJ1dCBjaGVjayBldmVudCB0eXBlIGFuZCBjb21wYWN0IGJlZm9yZSAqLworCSAgICBlbmRMb29wID0gVFJVRTsKKwl9IGVsc2UgaWYgKCFWYWxpZEV2ZW50KG5leHQpKSB7CisJICAgIGNvbnRpbnVlOworCX0gZWxzZSB7CisJICAgIC8qIG1lcmdlIGNsaWNrIGV2ZW50cyBmb3J3YXJkICovCisJICAgIGlmICgoZXAtPmJzdGF0ZSAmIEJVVFRPTl9DTElDS0VEKQorCQkmJiAobmV4dC0+YnN0YXRlICYgQlVUVE9OX0NMSUNLRUQpKSB7CisJCW1lcmdlID0gRkFMU0U7CisJCWZvciAoYiA9IDE7IGIgPD0gTUFYX0JVVFRPTlM7ICsrYikgeworCQkgICAgaWYgKChzcC0+X21vdXNlX21hc2sgJiBNQVNLX0RPVUJMRV9DTElDSyhiKSkKKwkJCSYmIChlcC0+YnN0YXRlICYgTUFTS19DTElDSyhiKSkKKwkJCSYmIChuZXh0LT5ic3RhdGUgJiBNQVNLX0NMSUNLKGIpKSkgeworCQkJbmV4dC0+YnN0YXRlICY9IH5NQVNLX0NMSUNLKGIpOworCQkJbmV4dC0+YnN0YXRlIHw9IE1BU0tfRE9VQkxFX0NMSUNLKGIpOworCQkJbWVyZ2UgPSBUUlVFOwogCQkgICAgfQotCQkgICAgaWYgKG1lcmdlKQotCQkJZXAtPmlkID0gSU5WQUxJRF9FVkVOVDsKIAkJfQotCi0JCS8qIG1lcmdlIGRvdWJsZS1jbGljayBldmVudHMgZm9yd2FyZCAqLwotCQlpZiAoKGVwLT5ic3RhdGUgJiBCVVRUT05fRE9VQkxFX0NMSUNLRUQpCi0JCSAgICAmJiAoZm9sbG93ZXItPmJzdGF0ZSAmIEJVVFRPTl9DTElDS0VEKSkgewotCQkgICAgZm9yIChiID0gMTsgYiA8PSBNQVhfQlVUVE9OUzsgKytiKSB7Ci0JCQlpZiAoKHNwLT5fbW91c2VfbWFzayAmIE1BU0tfVFJJUExFX0NMSUNLKGIpKQotCQkJICAgICYmIChmb2xsb3dlci0+YnN0YXRlICYgTUFTS19DTElDSyhiKSkpIHsKLQkJCSAgICBmb2xsb3dlci0+YnN0YXRlICY9IH5NQVNLX0NMSUNLKGIpOwotCQkJICAgIGZvbGxvd2VyLT5ic3RhdGUgfD0gTUFTS19UUklQTEVfQ0xJQ0soYik7Ci0JCQkgICAgbWVyZ2UgPSBUUlVFOwotCQkJfQotCQkgICAgfQotCQkgICAgaWYgKG1lcmdlKQotCQkJZXAtPmlkID0gSU5WQUxJRF9FVkVOVDsKKwkJaWYgKG1lcmdlKSB7CisJCSAgICBJbnZhbGlkYXRlKGVwKTsKIAkJfQogCSAgICB9Ci0gICAgfSB3aGlsZQotCShtZXJnZSk7CiAKLSNpZmRlZiBUUkFDRQotICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX0lFVkVOVCkpIHsKLQlfdHJhY2Vfc2xvdChzcCwgImJlZm9yZSBtb3VzZSBldmVudCBxdWV1ZSBjb21wYWN0aW9uOiIpOwotCV90cmFjZWYoIl9uY19tb3VzZV9wYXJzZTogcnVuIHN0YXJ0cyBhdCAlbGQsIGVuZHMgYXQgJWxkLCBjb3VudCAlZCIsCi0JCVJ1blBhcmFtcyhzcCwgZXZlbnRwLCBydW5wKSwKLQkJcnVuY291bnQpOwotCV9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7Ci0gICAgfQotI2VuZGlmIC8qIFRSQUNFICovCi0KLSAgICAvKgotICAgICAqIE5vdyB0cnkgdG8gdGhyb3cgYXdheSB0cmFpbGluZyBldmVudHMgZmxhZ2dlZCBpbnZhbGlkLCBvciB0aGF0Ci0gICAgICogZG9uJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZXZlbnQgbWFzay4KLSAgICAgKi8KLSAgICBmb3IgKDsgcnVuY291bnQ7IHByZXYgPSBQUkVWKGV2ZW50cCksIHJ1bmNvdW50LS0pCi0JaWYgKHByZXYtPmlkID09IElOVkFMSURfRVZFTlQgfHwgIShwcmV2LT5ic3RhdGUgJiBzcC0+X21vdXNlX21hc2spKSB7Ci0JICAgIHNwLT5fbW91c2VfZXZlbnRwID0gZXZlbnRwID0gcHJldjsKKwkgICAgLyogbWVyZ2UgZG91YmxlLWNsaWNrIGV2ZW50cyBmb3J3YXJkICovCisJICAgIGlmICgoZXAtPmJzdGF0ZSAmIEJVVFRPTl9ET1VCTEVfQ0xJQ0tFRCkKKwkJJiYgKG5leHQtPmJzdGF0ZSAmIEJVVFRPTl9DTElDS0VEKSkgeworCQltZXJnZSA9IEZBTFNFOworCQlmb3IgKGIgPSAxOyBiIDw9IE1BWF9CVVRUT05TOyArK2IpIHsKKwkJICAgIGlmICgoc3AtPl9tb3VzZV9tYXNrICYgTUFTS19UUklQTEVfQ0xJQ0soYikpCisJCQkmJiAoZXAtPmJzdGF0ZSAmIE1BU0tfRE9VQkxFX0NMSUNLKGIpKQorCQkJJiYgKG5leHQtPmJzdGF0ZSAmIE1BU0tfQ0xJQ0soYikpKSB7CisJCQluZXh0LT5ic3RhdGUgJj0gfk1BU0tfQ0xJQ0soYik7CisJCQluZXh0LT5ic3RhdGUgfD0gTUFTS19UUklQTEVfQ0xJQ0soYik7CisJCQltZXJnZSA9IFRSVUU7CisJCSAgICB9CisJCX0KKwkJaWYgKG1lcmdlKSB7CisJCSAgICBJbnZhbGlkYXRlKGVwKTsKKwkJfQorCSAgICB9CiAJfQotI2lmZGVmIFRSQUNFCi0gICAgaWYgKFVTRV9UUkFDRUYoVFJBQ0VfSUVWRU5UKSkgewotCV90cmFjZV9zbG90KHNwLCAiYWZ0ZXIgbW91c2UgZXZlbnQgcXVldWUgY29tcGFjdGlvbjoiKTsKLQlfdHJhY2VmKCJfbmNfbW91c2VfcGFyc2U6IHJ1biBzdGFydHMgYXQgJWxkLCBlbmRzIGF0ICVsZCwgY291bnQgJWQiLAotCQlSdW5QYXJhbXMoc3AsIGV2ZW50cCwgcnVucCksCi0JCXJ1bmNvdW50KTsKLQlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOworCisJLyogRGlzY2FyZCBldmVudCBpZiBpdCBkb2VzIG5vdCBtYXRjaCBldmVudCBtYXNrICovCisJaWYgKCEoZXAtPmJzdGF0ZSAmIHNwLT5fbW91c2VfbWFzazIpKSB7CisJICAgIEludmFsaWRhdGUoZXApOworCX0KKworCS8qIENvbXBhY3QgdmFsaWQgZXZlbnRzICovCisJaWYgKCFWYWxpZEV2ZW50KGVwKSkgeworCSAgICBpZiAoZXAgPT0gZmlyc3RfdmFsaWQpIHsKKwkJZmlyc3RfdmFsaWQgPSBuZXh0OworCSAgICB9IGVsc2UgaWYgKGZpcnN0X2ludmFsaWQgPT0gTlVMTCkgeworCQlmaXJzdF9pbnZhbGlkID0gZXA7CisJICAgIH0KKwl9IGVsc2UgaWYgKGZpcnN0X2ludmFsaWQgIT0gTlVMTCkgeworCSAgICAqZmlyc3RfaW52YWxpZCA9ICplcDsKKwkgICAgSW52YWxpZGF0ZShlcCk7CisJICAgIGZpcnN0X2ludmFsaWQgPSBORVhUKGZpcnN0X2ludmFsaWQpOworCX0KKworCWVwID0gbmV4dDsKICAgICB9Ci0gICAgZm9yIChlcCA9IHJ1bnA7IGVwICE9IGV2ZW50cDsgZXAgPSBORVhUKGVwKSkKLQlpZiAoZXAtPmlkICE9IElOVkFMSURfRVZFTlQpCi0JICAgIFRSKE1ZX1RSQUNFLAotCSAgICAgICAoIl9uY19tb3VzZV9wYXJzZTogcmV0dXJuaW5nIGNvbXBvc2l0ZSBtb3VzZSBldmVudCAlcyBhdCBzbG90ICVsZCIsCi0JCV9uY190cmFjZW1vdXNlKHNwLCBlcCksCi0JCShsb25nKSBJbmRleEVWKHNwLCBlcCkpKTsKKworICAgIGlmIChmaXJzdF9pbnZhbGlkID09IE5VTEwpIHsKKwlmaXJzdF9pbnZhbGlkID0gZXZlbnRwOworICAgIH0KKyAgICBzcC0+X21vdXNlX2V2ZW50cCA9IGZpcnN0X2ludmFsaWQ7CisKKyNpZmRlZiBUUkFDRQorICAgIGlmIChmaXJzdF92YWxpZCAhPSBOVUxMKSB7CisJaWYgKFVTRV9UUkFDRUYoVFJBQ0VfSUVWRU5UKSkgeworCSAgICBfdHJhY2Vfc2xvdChzcCwgImFmdGVyIG1vdXNlIGV2ZW50IHF1ZXVlIGNvbXBhY3Rpb246Iik7CisJICAgIF90cmFjZWYoIl9uY19tb3VzZV9wYXJzZTogcnVuIHN0YXJ0cyBhdCAlbGQsIGVuZHMgYXQgJWxkLCBjb3VudCAlZCIsCisJCSAgICBSdW5QYXJhbXMoc3AsIGZpcnN0X2ludmFsaWQsIGZpcnN0X3ZhbGlkKSwKKwkJICAgIHJ1bmNvdW50KTsKKwkgICAgX25jX3VubG9ja19nbG9iYWwodHJhY2VmKTsKKwl9CisJZm9yIChlcCA9IGZpcnN0X3ZhbGlkOyBlcCAhPSBmaXJzdF9pbnZhbGlkOyBlcCA9IE5FWFQoZXApKSB7CisJICAgIGlmIChWYWxpZEV2ZW50KGVwKSkKKwkJVFIoTVlfVFJBQ0UsCisJCSAgICgiX25jX21vdXNlX3BhcnNlOiByZXR1cm5pbmcgY29tcG9zaXRlIG1vdXNlIGV2ZW50ICVzIGF0IHNsb3QgJWxkIiwKKwkJICAgIF9uY190cmFjZW1vdXNlKHNwLCBlcCksCisJCSAgICAobG9uZykgSW5kZXhFVihzcCwgZXApKSk7CisJfQorICAgIH0KICNlbmRpZiAvKiBUUkFDRSAqLwogCiAgICAgLyogYWZ0ZXIgYWxsIHRoaXMsIGRvIHdlIGhhdmUgYSB2YWxpZCBldmVudD8gKi8KLSAgICByZXR1cm4gKFBSRVYoZXZlbnRwKS0+aWQgIT0gSU5WQUxJRF9FVkVOVCk7CisgICAgcmV0dXJuIFZhbGlkRXZlbnQoUFJFVihmaXJzdF9pbnZhbGlkKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMjIyLDYgKzE2ODAsMTEgQEAKIAltb3VzZV9hY3RpdmF0ZShzcCwgRkFMU0UpOwogCWJyZWFrOwogI2VuZGlmCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgY2FzZSBNX1RFUk1fRFJJVkVSOgorCW1vdXNlX2FjdGl2YXRlKHNwLCBGQUxTRSk7CisJYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIE1fTk9ORToKIAlicmVhazsKICAgICB9CkBAIC0xMjUzLDYgKzE3MTYsMTMgQEAKIAltb3VzZV9hY3RpdmF0ZShzcCwgVFJVRSk7CiAJYnJlYWs7CiAjZW5kaWYKKworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGNhc2UgTV9URVJNX0RSSVZFUjoKKwltb3VzZV9hY3RpdmF0ZShzcCwgVFJVRSk7CisJYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgTV9OT05FOgogCWJyZWFrOwogICAgIH0KQEAgLTEyNjQsODAgKzE3MzQsMTA5IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgaW50Ci1fbmNfZ2V0bW91c2UoU0NSRUVOICpzcCwgTUVWRU5UICogYWV2ZW50KQorTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKGdldG1vdXNlKSAoTkNVUlNFU19TUF9EQ0x4IE1FVkVOVCAqIGFldmVudCkKIHsKLSAgICBUKChUX0NBTExFRCgiZ2V0bW91c2UoJXApIiksIGFldmVudCkpOworICAgIGludCByZXN1bHQgPSBFUlI7CiAKLSAgICBpZiAoKGFldmVudCAhPSAwKSAmJiAoc3AgIT0gMCkgJiYgKHNwLT5fbW91c2VfdHlwZSAhPSBNX05PTkUpKSB7Ci0JTUVWRU5UICpldmVudHAgPSBzcC0+X21vdXNlX2V2ZW50cDsKKyAgICBUKChUX0NBTExFRCgiZ2V0bW91c2UoJXAsJXApIiksICh2b2lkICopIFNQX1BBUk0sICh2b2lkICopIGFldmVudCkpOworCisgICAgaWYgKChhZXZlbnQgIT0gMCkgJiYgKFNQX1BBUk0gIT0gMCkgJiYgKFNQX1BBUk0tPl9tb3VzZV90eXBlICE9IE1fTk9ORSkpIHsKKwlNRVZFTlQgKmV2ZW50cCA9IFNQX1BBUk0tPl9tb3VzZV9ldmVudHA7CiAJLyogY29tcHV0ZSB0aGUgY3VycmVudC1ldmVudCBwb2ludGVyICovCiAJTUVWRU5UICpwcmV2ID0gUFJFVihldmVudHApOwogCi0JLyogY29weSB0aGUgZXZlbnQgd2UgZmluZCB0aGVyZSAqLwotCSphZXZlbnQgPSAqcHJldjsKKwkvKgorCSAqIERpc2NhcmQgZXZlbnRzIG5vdCBtYXRjaGluZyBtYXNrICh0aGVyZSBjb3VsZCBiZSBzdGlsbCBzb21lIGlmCisJICogX25jX21vdXNlX3BhcnNlIHdhcyBub3QgY2FsbGVkLCBlLmcuLCB3aGVuIF9uY19tb3VzZV9pbmxpbmUgcmV0dXJucworCSAqIGZhbHNlKS4KKwkgKi8KKwl3aGlsZSAoVmFsaWRFdmVudChwcmV2KSAmJiAoIShwcmV2LT5ic3RhdGUgJiBTUF9QQVJNLT5fbW91c2VfbWFzazIpKSkgeworCSAgICBJbnZhbGlkYXRlKHByZXYpOworCSAgICBwcmV2ID0gUFJFVihwcmV2KTsKKwl9CisJaWYgKFZhbGlkRXZlbnQocHJldikpIHsKKwkgICAgLyogY29weSB0aGUgZXZlbnQgd2UgZmluZCB0aGVyZSAqLworCSAgICAqYWV2ZW50ID0gKnByZXY7CiAKLQlUUihUUkFDRV9JRVZFTlQsICgiZ2V0bW91c2U6IHJldHVybmluZyBldmVudCAlcyBmcm9tIHNsb3QgJWxkIiwKLQkJCSAgX25jX3RyYWNlbW91c2Uoc3AsIHByZXYpLAotCQkJICAobG9uZykgSW5kZXhFVihzcCwgcHJldikpKTsKKwkgICAgVFIoVFJBQ0VfSUVWRU5ULCAoImdldG1vdXNlOiByZXR1cm5pbmcgZXZlbnQgJXMgZnJvbSBzbG90ICVsZCIsCisJCQkgICAgICBfbmNfdHJhY2Vtb3VzZShTUF9QQVJNLCBwcmV2KSwKKwkJCSAgICAgIChsb25nKSBJbmRleEVWKFNQX1BBUk0sIHByZXYpKSk7CiAKLQlwcmV2LT5pZCA9IElOVkFMSURfRVZFTlQ7CS8qIHNvIHRoZSBxdWV1ZSBzbG90IGJlY29tZXMgZnJlZSAqLwotCXJldHVybkNvZGUoT0spOworCSAgICBJbnZhbGlkYXRlKHByZXYpOwkvKiBzbyB0aGUgcXVldWUgc2xvdCBiZWNvbWVzIGZyZWUgKi8KKwkgICAgU1BfUEFSTS0+X21vdXNlX2V2ZW50cCA9IHByZXY7CisJICAgIHJlc3VsdCA9IE9LOworCX0gZWxzZSB7CisJICAgIC8qIFJlc2V0IHRoZSBwcm92aWRlZCBldmVudCAqLworCSAgICBhZXZlbnQtPmJzdGF0ZSA9IDA7CisJICAgIEludmFsaWRhdGUoYWV2ZW50KTsKKwkgICAgYWV2ZW50LT54ID0gMDsKKwkgICAgYWV2ZW50LT55ID0gMDsKKwkgICAgYWV2ZW50LT56ID0gMDsKKwl9CiAgICAgfQotICAgIHJldHVybkNvZGUoRVJSKTsKKyAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiAvKiBncmFiIGEgY29weSBvZiB0aGUgY3VycmVudCBtb3VzZSBldmVudCAqLwogTkNVUlNFU19FWFBPUlQoaW50KQogZ2V0bW91c2UoTUVWRU5UICogYWV2ZW50KQogewotICAgIHJldHVybiBfbmNfZ2V0bW91c2UoU1AsIGFldmVudCk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShnZXRtb3VzZSkgKENVUlJFTlRfU0NSRUVOLCBhZXZlbnQpOwogfQorI2VuZGlmCiAKLXN0YXRpYyBpbnQKLV9uY191bmdldG1vdXNlKFNDUkVFTiAqc3AsIE1FVkVOVCAqIGFldmVudCkKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRSh1bmdldG1vdXNlKSAoTkNVUlNFU19TUF9EQ0x4IE1FVkVOVCAqIGFldmVudCkKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoInVuZ2V0bW91c2UoJXApIiksIGFldmVudCkpOworICAgIFQoKFRfQ0FMTEVEKCJ1bmdldG1vdXNlKCVwLCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNLCAodm9pZCAqKSBhZXZlbnQpKTsKIAotICAgIGlmIChhZXZlbnQgIT0gMCAmJiBzcCAhPSAwKSB7Ci0JTUVWRU5UICpldmVudHAgPSBzcC0+X21vdXNlX2V2ZW50cDsKKyAgICBpZiAoYWV2ZW50ICE9IDAgJiYgU1BfUEFSTSAhPSAwKSB7CisJTUVWRU5UICpldmVudHAgPSBTUF9QQVJNLT5fbW91c2VfZXZlbnRwOwogCiAJLyogc3RpY2sgdGhlIGdpdmVuIGV2ZW50IGluIHRoZSBuZXh0LWZyZWUgc2xvdCAqLwogCSpldmVudHAgPSAqYWV2ZW50OwogCiAJLyogYnVtcCB0aGUgbmV4dC1mcmVlIHBvaW50ZXIgaW50byB0aGUgY2lyY3VsYXIgbGlzdCAqLwotCXNwLT5fbW91c2VfZXZlbnRwID0gTkVYVChldmVudHApOworCVNQX1BBUk0tPl9tb3VzZV9ldmVudHAgPSBORVhUKGV2ZW50cCk7CiAKIAkvKiBwdXNoIGJhY2sgdGhlIG5vdGlmaWNhdGlvbiBldmVudCBvbiB0aGUga2V5Ym9hcmQgcXVldWUgKi8KLQlyZXN1bHQgPSBfbmNfdW5nZXRjaChzcCwgS0VZX01PVVNFKTsKKwlyZXN1bHQgPSBOQ1VSU0VTX1NQX05BTUUodW5nZXRjaCkgKE5DVVJTRVNfU1BfQVJHeCBLRVlfTU9VU0UpOwogICAgIH0KICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiAvKiBlbnF1ZXVlIGEgc3ludGhlc2l6ZWQgbW91c2UgZXZlbnQgdG8gYmUgc2VlbiBieSB0aGUgbmV4dCB3Z2V0Y2goKSAqLwogTkNVUlNFU19FWFBPUlQoaW50KQogdW5nZXRtb3VzZShNRVZFTlQgKiBhZXZlbnQpCiB7Ci0gICAgcmV0dXJuIF9uY191bmdldG1vdXNlKFNQLCBhZXZlbnQpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodW5nZXRtb3VzZSkgKENVUlJFTlRfU0NSRUVOLCBhZXZlbnQpOwogfQorI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKG1tYXNrX3QpCi1tb3VzZW1hc2sobW1hc2tfdCBuZXdtYXNrLCBtbWFza190ICogb2xkbWFzaykKK05DVVJTRVNfU1BfTkFNRShtb3VzZW1hc2spIChOQ1VSU0VTX1NQX0RDTHggbW1hc2tfdCBuZXdtYXNrLCBtbWFza190ICogb2xkbWFzaykKIC8qIHNldCB0aGUgbW91c2UgZXZlbnQgbWFzayAqLwogewogICAgIG1tYXNrX3QgcmVzdWx0ID0gMDsKKyAgICBpbnQgYjsKIAotICAgIFQoKFRfQ0FMTEVEKCJtb3VzZW1hc2soJSNseCwlcCkiKSwgKHVuc2lnbmVkIGxvbmcpIG5ld21hc2ssIG9sZG1hc2spKTsKKyAgICBUKChUX0NBTExFRCgibW91c2VtYXNrKCVwLCUjbHgsJXApIiksCisgICAgICAgKHZvaWQgKikgU1BfUEFSTSwKKyAgICAgICAodW5zaWduZWQgbG9uZykgbmV3bWFzaywKKyAgICAgICAodm9pZCAqKSBvbGRtYXNrKSk7CiAKLSAgICBpZiAoU1AgIT0gMCkgeworICAgIGlmIChTUF9QQVJNICE9IDApIHsKIAlpZiAob2xkbWFzaykKLQkgICAgKm9sZG1hc2sgPSBTUC0+X21vdXNlX21hc2s7CisJICAgICpvbGRtYXNrID0gU1BfUEFSTS0+X21vdXNlX21hc2s7CiAKLQlpZiAobmV3bWFzayB8fCBTUC0+X21vdXNlX2luaXRpYWxpemVkKSB7Ci0JICAgIF9uY19tb3VzZV9pbml0KFNQKTsKLQkgICAgaWYgKFNQLT5fbW91c2VfdHlwZSAhPSBNX05PTkUpIHsKKwlpZiAobmV3bWFzayB8fCBTUF9QQVJNLT5fbW91c2VfaW5pdGlhbGl6ZWQpIHsKKwkgICAgX25jX21vdXNlX2luaXQoU1BfUEFSTSk7CisJICAgIGlmIChTUF9QQVJNLT5fbW91c2VfdHlwZSAhPSBNX05PTkUpIHsKIAkJcmVzdWx0ID0gbmV3bWFzayAmCiAJCSAgICAoUkVQT1JUX01PVVNFX1BPU0lUSU9OCiAJCSAgICAgfCBCVVRUT05fQUxUCkBAIC0xMzQ5LDIyICsxODQ4LDQ2IEBACiAJCSAgICAgfCBCVVRUT05fRE9VQkxFX0NMSUNLRUQKIAkJICAgICB8IEJVVFRPTl9UUklQTEVfQ0xJQ0tFRCk7CiAKLQkJbW91c2VfYWN0aXZhdGUoU1AsIChib29sKSAocmVzdWx0ICE9IDApKTsKKwkJbW91c2VfYWN0aXZhdGUoU1BfUEFSTSwgKGJvb2wpIChyZXN1bHQgIT0gMCkpOwogCi0JCVNQLT5fbW91c2VfbWFzayA9IHJlc3VsdDsKKwkJU1BfUEFSTS0+X21vdXNlX21hc2sgPSByZXN1bHQ7CisJCVNQX1BBUk0tPl9tb3VzZV9tYXNrMiA9IHJlc3VsdDsKKworCQkvKgorCQkgKiBNYWtlIGEgbWFzayBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGF0ZXMgd2Ugd2lsbCBuZWVkIHRvCisJCSAqIHJldGFpbiAodGVtcG9yYXJpbHkpIHdoaWxlIGJ1aWxkaW5nIHVwIHRoZSBzdGF0ZSB0aGF0IHRoZQorCQkgKiB1c2VyIGFza2VkIGZvci4KKwkJICovCisJCWZvciAoYiA9IDE7IGIgPD0gTUFYX0JVVFRPTlM7ICsrYikgeworCQkgICAgaWYgKFNQX1BBUk0tPl9tb3VzZV9tYXNrMiAmIE1BU0tfVFJJUExFX0NMSUNLKGIpKQorCQkJU1BfUEFSTS0+X21vdXNlX21hc2syIHw9IE1BU0tfRE9VQkxFX0NMSUNLKGIpOworCQkgICAgaWYgKFNQX1BBUk0tPl9tb3VzZV9tYXNrMiAmIE1BU0tfRE9VQkxFX0NMSUNLKGIpKQorCQkJU1BfUEFSTS0+X21vdXNlX21hc2syIHw9IE1BU0tfQ0xJQ0soYik7CisJCSAgICBpZiAoU1BfUEFSTS0+X21vdXNlX21hc2syICYgTUFTS19DTElDSyhiKSkKKwkJCVNQX1BBUk0tPl9tb3VzZV9tYXNrMiB8PSAoTUFTS19QUkVTUyhiKSB8CisJCQkJCQkgIE1BU0tfUkVMRUFTRShiKSk7CisJCX0KIAkgICAgfQogCX0KICAgICB9Ci0gICAgcmV0dXJuQml0cyhyZXN1bHQpOworICAgIHJldHVybk1NYXNrKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChtbWFza190KQorbW91c2VtYXNrKG1tYXNrX3QgbmV3bWFzaywgbW1hc2tfdCAqIG9sZG1hc2spCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShtb3VzZW1hc2spIChDVVJSRU5UX1NDUkVFTiwgbmV3bWFzaywgb2xkbWFzayk7Cit9CisjZW5kaWYKKwogTkNVUlNFU19FWFBPUlQoYm9vbCkKIHdlbmNsb3NlKGNvbnN0IFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgpCiAvKiBjaGVjayB0byBzZWUgaWYgZ2l2ZW4gd2luZG93IGVuY2xvc2VzIGdpdmVuIHNjcmVlbiBsb2NhdGlvbiAqLwogewogICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CiAKLSAgICBUKChUX0NBTExFRCgid2VuY2xvc2UoJXAsJWQsJWQpIiksIHdpbiwgeSwgeCkpOworICAgIFQoKFRfQ0FMTEVEKCJ3ZW5jbG9zZSglcCwlZCwlZCkiKSwgKGNvbnN0IHZvaWQgKikgd2luLCB5LCB4KSk7CiAKICAgICBpZiAod2luICE9IDApIHsKIAl5IC09IHdpbi0+X3lvZmZzZXQ7CkBAIC0xMzc3LDE3ICsxOTAwLDE3IEBACiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLW1vdXNlaW50ZXJ2YWwoaW50IG1heGNsaWNrKQorTkNVUlNFU19TUF9OQU1FKG1vdXNlaW50ZXJ2YWwpIChOQ1VSU0VTX1NQX0RDTHggaW50IG1heGNsaWNrKQogLyogc2V0IHRoZSBtYXhpbXVtIG1vdXNlIGludGVydmFsIHdpdGhpbiB3aGljaCB0byByZWNvZ25pemUgYSBjbGljayAqLwogewogICAgIGludCBvbGR2YWw7CiAKLSAgICBUKChUX0NBTExFRCgibW91c2VpbnRlcnZhbCglZCkiKSwgbWF4Y2xpY2spKTsKKyAgICBUKChUX0NBTExFRCgibW91c2VpbnRlcnZhbCglcCwlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgbWF4Y2xpY2spKTsKIAotICAgIGlmIChTUCAhPSAwKSB7Ci0Jb2xkdmFsID0gU1AtPl9tYXhjbGljazsKKyAgICBpZiAoU1BfUEFSTSAhPSAwKSB7CisJb2xkdmFsID0gU1BfUEFSTS0+X21heGNsaWNrOwogCWlmIChtYXhjbGljayA+PSAwKQotCSAgICBTUC0+X21heGNsaWNrID0gbWF4Y2xpY2s7CisJICAgIFNQX1BBUk0tPl9tYXhjbGljayA9IG1heGNsaWNrOwogICAgIH0gZWxzZSB7CiAJb2xkdmFsID0gREVGQVVMVF9NQVhDTElDSzsKICAgICB9CkBAIC0xMzk1LDIwICsxOTE4LDQ2IEBACiAgICAgcmV0dXJuQ29kZShvbGR2YWwpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorbW91c2VpbnRlcnZhbChpbnQgbWF4Y2xpY2spCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShtb3VzZWludGVydmFsKSAoQ1VSUkVOVF9TQ1JFRU4sIG1heGNsaWNrKTsKK30KKyNlbmRpZgorCiAvKiBUaGlzIG1heSBiZSB1c2VkIGJ5IG90aGVyIHJvdXRpbmVzIHRvIGFzayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBtb3VzZQogICAgc3VwcG9ydCAqLwotTkNVUlNFU19FWFBPUlQoaW50KQotX25jX2hhc19tb3VzZSh2b2lkKQorTkNVUlNFU19FWFBPUlQoYm9vbCkKK19uY19oYXNfbW91c2UoU0NSRUVOICpzcCkKIHsKLSAgICByZXR1cm4gKFNQLT5fbW91c2VfdHlwZSA9PSBNX05PTkUgPyAwIDogMSk7CisgICAgcmV0dXJuICgoKDAgPT0gc3ApIHx8IChzcC0+X21vdXNlX3R5cGUgPT0gTV9OT05FKSkgPyBGQUxTRSA6IFRSVUUpOwogfQogCiBOQ1VSU0VTX0VYUE9SVChib29sKQorTkNVUlNFU19TUF9OQU1FKGhhc19tb3VzZSkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICByZXR1cm4gX25jX2hhc19tb3VzZShTUF9QQVJNKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGJvb2wpCitoYXNfbW91c2Uodm9pZCkKK3sKKyAgICByZXR1cm4gX25jX2hhc19tb3VzZShDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoYm9vbCkKIHdtb3VzZV90cmFmbyhjb25zdCBXSU5ET1cgKndpbiwgaW50ICpwWSwgaW50ICpwWCwgYm9vbCB0b19zY3JlZW4pCiB7CiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3bW91c2VfdHJhZm8oJXAsJXAsJXAsJWQpIiksIHdpbiwgcFksIHBYLCB0b19zY3JlZW4pKTsKKyAgICBUKChUX0NBTExFRCgid21vdXNlX3RyYWZvKCVwLCVwLCVwLCVkKSIpLAorICAgICAgIChjb25zdCB2b2lkICopIHdpbiwKKyAgICAgICAodm9pZCAqKSBwWSwKKyAgICAgICAodm9pZCAqKSBwWCwKKyAgICAgICB0b19zY3JlZW4pKTsKIAogICAgIGlmICh3aW4gJiYgcFkgJiYgcFgpIHsKIAlpbnQgeSA9ICpwWTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfbW92ZS5jIGIvbmN1cnNlcy9iYXNlL2xpYl9tb3ZlLmMKaW5kZXggNjUyYzQ0ZC4uNDg4YjE5NSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9tb3ZlLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9tb3ZlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MSwxMiArNDEsMTIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfbW92ZS5jLHYgMS4xMiAyMDA0LzEyLzA0IDIxOjUwOjA3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX21vdmUuYyx2IDEuMTMgMjAwOS8xMC8yNCAyMjozNDowNyB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3bW92ZShXSU5ET1cgKndpbiwgaW50IHksIGludCB4KQogewotICAgIFQoKFRfQ0FMTEVEKCJ3bW92ZSglcCwlZCwlZCkiKSwgd2luLCB5LCB4KSk7CisgICAgVCgoVF9DQUxMRUQoIndtb3ZlKCVwLCVkLCVkKSIpLCAodm9pZCAqKSB3aW4sIHksIHgpKTsKIAogICAgIGlmIChMRUdBTFlYKHdpbiwgeSwgeCkpIHsKIAl3aW4tPl9jdXJ4ID0gKE5DVVJTRVNfU0laRV9UKSB4OwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9tdndpbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9tdndpbi5jCmluZGV4IGU0ZGFkNGEuLjE4ZDMxYzEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfbXZ3aW4uYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX212d2luLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDAsMTIgKzQyLDE2IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX212d2luLmMsdiAxLjE0IDIwMDYvMDIvMjUgMjI6NTM6NDYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfbXZ3aW4uYyx2IDEuMTggMjAxMC8xMi8xOSAwMToyMjo1OCB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBtdndpbihXSU5ET1cgKndpbiwgaW50IGJ5LCBpbnQgYngpCiB7Ci0gICAgVCgoVF9DQUxMRUQoIm12d2luKCVwLCVkLCVkKSIpLCB3aW4sIGJ5LCBieCkpOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZih3aW4pOworI2VuZGlmCisKKyAgICBUKChUX0NBTExFRCgibXZ3aW4oJXAsJWQsJWQpIiksICh2b2lkICopIHdpbiwgYnksIGJ4KSk7CiAKICAgICBpZiAoIXdpbiB8fCAod2luLT5fZmxhZ3MgJiBfSVNQQUQpKQogCXJldHVybkNvZGUoRVJSKTsKQEAgLTk2LDggKzEwMiw4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoYnkgKyB3aW4tPl9tYXh5ID4gc2NyZWVuX2xpbmVzIC0gMQotCXx8IGJ4ICsgd2luLT5fbWF4eCA+IHNjcmVlbl9jb2x1bW5zIC0gMQorICAgIGlmIChieSArIHdpbi0+X21heHkgPiBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSAxCisJfHwgYnggKyB3aW4tPl9tYXh4ID4gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgLSAxCiAJfHwgYnkgPCAwCiAJfHwgYnggPCAwKQogCXJldHVybkNvZGUoRVJSKTsKQEAgLTEwOCw3ICsxMTQsNyBAQAogICAgICAqIG5ldyBsb2NhdGlvbi4gIFRoaXMgZW5zdXJlcyB0aGF0IGlmIHRoZSBjYWxsZXIgaGFzIHJlZnJlc2hlZCBhbm90aGVyCiAgICAgICogd2luZG93IGF0IHRoZSBzYW1lIGxvY2F0aW9uLCB0aGF0IHRoaXMgb25lIHdpbGwgYmUgZGlzcGxheWVkLgogICAgICAqLwotICAgIHdpbi0+X2JlZ3kgPSBieTsKLSAgICB3aW4tPl9iZWd4ID0gYng7CisgICAgd2luLT5fYmVneSA9IChOQ1VSU0VTX1NJWkVfVCkgYnk7CisgICAgd2luLT5fYmVneCA9IChOQ1VSU0VTX1NJWkVfVCkgYng7CiAgICAgcmV0dXJuQ29kZSh0b3VjaHdpbih3aW4pKTsKIH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfbmV3dGVybS5jIGIvbmN1cnNlcy9iYXNlL2xpYl9uZXd0ZXJtLmMKaW5kZXggMDU5ODJiOC4uZWRiZjk1NiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9uZXd0ZXJtLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9uZXd0ZXJtLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MSwxNCArNDIsMTkgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLSNpZiBTVlI0X1RFUk1JTyAmJiAhZGVmaW5lZChfUE9TSVhfU09VUkNFKQotI2RlZmluZSBfUE9TSVhfU09VUkNFCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKICNlbmRpZgogCi0jaW5jbHVkZSA8dGVybS5oPgkJLyogY2xlYXJfc2NyZWVuLCBjdXAgJiBmcmllbmRzLCBjdXJfdGVybSAqLwogI2luY2x1ZGUgPHRpYy5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX25ld3Rlcm0uYyx2IDEuNzMgMjAwOC8wOC8xNiAyMToyMDo0OCBXZXJuZXIuRmluayBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX25ld3Rlcm0uYyx2IDEuOTIgMjAxNC8wNC8yNiAxODowMDozOSB0b20gRXhwICQiKQorCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisjZGVmaW5lIE51bUxhYmVscyAgICAgIEluZm9PZihTUF9QQVJNKS5udW1sYWJlbHMKKyNlbHNlCisjZGVmaW5lIE51bUxhYmVscyAgICAgIG51bV9sYWJlbHMKKyNlbmRpZgogCiAjaWZuZGVmIE9OTENSCQkJLyogQWxsb3dzIGNvbXBpbGF0aW9uIHVuZGVyIHRoZSBRTlggNC4yIE9TICovCiAjZGVmaW5lIE9OTENSIDAKQEAgLTYzLDI3ICs2OSwyOSBAQAogICogaXMgc3VwcG9zZWQgdG8gYmVoYXZlIGFzIGlmIGl0IGNhbGxzIG5ld3Rlcm0sIHdlIGRvIGl0IGhlcmUuCiAgKi8KIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBpbnQKLV9uY19pbml0c2NyKHZvaWQpCitfbmNfaW5pdHNjcihOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJlc3VsdCA9IEVSUjsKKyAgICBURVJNSU5BTCAqdGVybSA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CiAKICAgICAvKiBmb3IgZXh0ZW5kZWQgWFBHNCBjb25mb3JtYW5jZSByZXF1aXJlcyBjYnJlYWsoKSBhdCB0aGlzIHBvaW50ICovCiAgICAgLyogKFNWcjQgY3Vyc2VzIGRvZXMgdGhpcyBhbnl3YXkpICovCi0gICAgaWYgKGNicmVhaygpID09IE9LKSB7CisgICAgaWYgKE5DVVJTRVNfU1BfTkFNRShjYnJlYWspIChOQ1VSU0VTX1NQX0FSRykgPT0gT0spIHsKIAlUVFkgYnVmOwogCi0JYnVmID0gY3VyX3Rlcm0tPk50dHliOworCWJ1ZiA9IHRlcm0tPk50dHliOwogI2lmZGVmIFRFUk1JT1MKLQlidWYuY19sZmxhZyAmPSB+KEVDSE8gfCBFQ0hPTkwpOwotCWJ1Zi5jX2lmbGFnICY9IH4oSUNSTkwgfCBJTkxDUiB8IElHTkNSKTsKLQlidWYuY19vZmxhZyAmPSB+KE9OTENSKTsKKwlidWYuY19sZmxhZyAmPSAodW5zaWduZWQpIH4oRUNITyB8IEVDSE9OTCk7CisJYnVmLmNfaWZsYWcgJj0gKHVuc2lnbmVkKSB+KElDUk5MIHwgSU5MQ1IgfCBJR05DUik7CisJYnVmLmNfb2ZsYWcgJj0gKHVuc2lnbmVkKSB+KE9OTENSKTsKICNlbGlmIEhBVkVfU0dUVFlfSAogCWJ1Zi5zZ19mbGFncyAmPSB+KEVDSE8gfCBDUk1PRCk7CiAjZWxzZQogCW1lbXNldCgmYnVmLCAwLCBzaXplb2YoYnVmKSk7CiAjZW5kaWYKLQlpZiAoKHJlc3VsdCA9IF9uY19zZXRfdHR5X21vZGUoJmJ1ZikpID09IE9LKQotCSAgICBjdXJfdGVybS0+TnR0eWIgPSBidWY7CisJcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdHR5X21vZGUpIChOQ1VSU0VTX1NQX0FSR3ggJmJ1Zik7CisJaWYgKHJlc3VsdCA9PSBPSykKKwkgICAgdGVybS0+TnR0eWIgPSBidWY7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NSwxMyArMTAzLDMwIEBACiAgKiBpbml0aWFsaXplZC4KICAqLwogTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShmaWx0ZXIpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBUKChUX0NBTExFRCgiZmlsdGVyKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgIGlmIChJc1ByZVNjcmVlbihTUF9QQVJNKSkgeworCVNQX1BBUk0tPl9maWx0ZXJlZCA9IFRSVUU7CisgICAgfQorI2Vsc2UKKyAgICBfbmNfcHJlc2NyZWVuLmZpbHRlcl9tb2RlID0gVFJVRTsKKyNlbmRpZgorICAgIHJldHVyblZvaWQ7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQogZmlsdGVyKHZvaWQpCiB7CiAgICAgU1RBUlRfVFJBQ0UoKTsKLSAgICBUKChUX0NBTExFRCgiZmlsdGVyIikpKTsKKyAgICBUKChUX0NBTExFRCgiZmlsdGVyKCkiKSkpOwogICAgIF9uY19wcmVzY3JlZW4uZmlsdGVyX21vZGUgPSBUUlVFOwogICAgIHJldHVyblZvaWQ7CiB9CisjZW5kaWYKIAogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiAvKgpAQCAtMTA5LDYyICsxMzQsMTIyIEBACiAgKiByZXF1aXJpbmcgaXQgdG8gYWxzbyBiZSBmaWx0ZXJlZC4KICAqLwogTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShub2ZpbHRlcikgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBTVEFSVF9UUkFDRSgpOworICAgIFQoKFRfQ0FMTEVEKCJub2ZpbHRlciglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBpZiAoSXNQcmVTY3JlZW4oU1BfUEFSTSkpIHsKKwlTUF9QQVJNLT5fZmlsdGVyZWQgPSBGQUxTRTsKKyAgICB9CisjZWxzZQorICAgIF9uY19wcmVzY3JlZW4uZmlsdGVyX21vZGUgPSBGQUxTRTsKKyNlbmRpZgorICAgIHJldHVyblZvaWQ7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQogbm9maWx0ZXIodm9pZCkKIHsKICAgICBTVEFSVF9UUkFDRSgpOwotICAgIFQoKFRfQ0FMTEVEKCJub2ZpbHRlciIpKSk7CisgICAgVCgoVF9DQUxMRUQoIm5vZmlsdGVyKCkiKSkpOwogICAgIF9uY19wcmVzY3JlZW4uZmlsdGVyX21vZGUgPSBGQUxTRTsKICAgICByZXR1cm5Wb2lkOwogfQogI2VuZGlmCisjZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KIAogTkNVUlNFU19FWFBPUlQoU0NSRUVOICopCi1uZXd0ZXJtKE5DVVJTRVNfQ09OU1QgY2hhciAqbmFtZSwgRklMRSAqb2ZwLCBGSUxFICppZnApCitOQ1VSU0VTX1NQX05BTUUobmV3dGVybSkgKE5DVVJTRVNfU1BfRENMeAorCQkJICBOQ1VSU0VTX0NPTlNUIGNoYXIgKm5hbWUsCisJCQkgIEZJTEUgKm9mcCwKKwkJCSAgRklMRSAqaWZwKQogewogICAgIGludCB2YWx1ZTsKICAgICBpbnQgZXJycmV0OwotICAgIFNDUkVFTiAqY3VycmVudDsKICAgICBTQ1JFRU4gKnJlc3VsdCA9IDA7CisgICAgU0NSRUVOICpjdXJyZW50OwogICAgIFRFUk1JTkFMICppdHNfdGVybTsKKyAgICBGSUxFICpfb2ZwID0gb2ZwID8gb2ZwIDogc3Rkb3V0OworICAgIEZJTEUgKl9pZnAgPSBpZnAgPyBpZnAgOiBzdGRpbjsKKyAgICBpbnQgY29sczsKKyAgICBpbnQgc2xrX2Zvcm1hdDsKKyAgICBpbnQgZmlsdGVyX21vZGU7CisgICAgVEVSTUlOQUwgKm5ld190ZXJtID0gMDsKIAogICAgIFNUQVJUX1RSQUNFKCk7Ci0gICAgVCgoVF9DQUxMRUQoIm5ld3Rlcm0oXCIlc1wiLCVwLCVwKSIpLCBuYW1lLCBvZnAsIGlmcCkpOworICAgIFQoKFRfQ0FMTEVEKCJuZXd0ZXJtKCVwLCBcIiVzXCIsICVwLCVwKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sCisgICAgICAgKG5hbWUgPyBuYW1lIDogIiIpLAorICAgICAgICh2b2lkICopIG9mcCwKKyAgICAgICAodm9pZCAqKSBpZnApKTsKKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBhc3NlcnQoU1BfUEFSTSAhPSAwKTsKKyAgICBpZiAoU1BfUEFSTSA9PSAwKQorCXJldHVyblNQKFNQX1BBUk0pOworI2VuZGlmCiAKICAgICBfbmNfaW5pdF9wdGhyZWFkcygpOwogICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwogCi0gICAgY3VycmVudCA9IFNQOwotICAgIGl0c190ZXJtID0gKFNQID8gU1AtPl90ZXJtIDogMCk7CisgICAgY3VycmVudCA9IENVUlJFTlRfU0NSRUVOOworICAgIGl0c190ZXJtID0gKGN1cnJlbnQgPyBjdXJyZW50LT5fdGVybSA6IDApOwogCisgICAgSU5JVF9URVJNX0RSSVZFUigpOwogICAgIC8qIHRoaXMgbG9hZHMgdGhlIGNhcGFiaWxpdHkgZW50cnksIHRoZW4gc2V0cyBMSU5FUyBhbmQgQ09MUyAqLwotICAgIGlmIChzZXR1cHRlcm0obmFtZSwgZmlsZW5vKG9mcCksICZlcnJyZXQpICE9IEVSUikgewotCWludCBzbGtfZm9ybWF0ID0gX25jX2dsb2JhbHMuc2xrX2Zvcm1hdDsKKyAgICBpZiAoCisJICAgVElORk9fU0VUVVBfVEVSTSgmbmV3X3Rlcm0sIG5hbWUsCisJCQkgICAgZmlsZW5vKF9vZnApLCAmZXJycmV0LCBGQUxTRSkgIT0gRVJSKSB7CisKKwlfbmNfc2V0X3NjcmVlbigwKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlhc3NlcnQobmV3X3Rlcm0gIT0gMCk7CisjZW5kaWYKKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwlzbGtfZm9ybWF0ID0gU1BfUEFSTS0+c2xrX2Zvcm1hdDsKKwlmaWx0ZXJfbW9kZSA9IFNQX1BBUk0tPl9maWx0ZXJlZDsKKyNlbHNlCisJc2xrX2Zvcm1hdCA9IF9uY19nbG9iYWxzLnNsa19mb3JtYXQ7CisJZmlsdGVyX21vZGUgPSBfbmNfcHJlc2NyZWVuLmZpbHRlcl9tb2RlOworI2VuZGlmCiAKIAkvKgogCSAqIFRoaXMgYWN0dWFsbHkgYWxsb2NhdGVzIHRoZSBzY3JlZW4gc3RydWN0dXJlLCBhbmQgc2F2ZXMgdGhlIG9yaWdpbmFsCiAJICogdGVybWluYWwgc2V0dGluZ3MuCiAJICovCi0JX25jX3NldF9zY3JlZW4oMCk7Ci0KLQkvKiBhbGxvdyB1c2VyIHRvIHNldCBtYXhpbXVtIGVzY2FwZSBkZWxheSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwotCWlmICgodmFsdWUgPSBfbmNfZ2V0ZW52X251bSgiRVNDREVMQVkiKSkgPj0gMCkgewotCSAgICBzZXRfZXNjZGVsYXkodmFsdWUpOwotCX0KLQotCWlmIChfbmNfc2V0dXBzY3JlZW4oTElORVMsCi0JCQkgICAgQ09MUywKLQkJCSAgICBvZnAsCi0JCQkgICAgX25jX3ByZXNjcmVlbi5maWx0ZXJfbW9kZSwKLQkJCSAgICBzbGtfZm9ybWF0KSA9PSBFUlIpIHsKKwlpZiAoTkNVUlNFU19TUF9OQU1FKF9uY19zZXR1cHNjcmVlbikgKAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwkJCQkJCSAmU1BfUEFSTSwKKyNlbmRpZgorCQkJCQkJICoocHRyTGluZXMoU1BfUEFSTSkpLAorCQkJCQkJICoocHRyQ29scyhTUF9QQVJNKSksCisJCQkJCQkgX29mcCwKKwkJCQkJCSBmaWx0ZXJfbW9kZSwKKwkJCQkJCSBzbGtfZm9ybWF0KSA9PSBFUlIpIHsKIAkgICAgX25jX3NldF9zY3JlZW4oY3VycmVudCk7CiAJICAgIHJlc3VsdCA9IDA7CiAJfSBlbHNlIHsKLQkgICAgYXNzZXJ0KFNQICE9IDApOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCSAgICBURVJNSU5BTF9DT05UUk9MX0JMT0NLICpUQ0I7CisjZWxpZiAhTkNVUlNFU19TUF9GVU5DUworCSAgICBfbmNfc2V0X3NjcmVlbihDVVJSRU5UX1NDUkVFTik7CisjZW5kaWYKKwkgICAgYXNzZXJ0KFNQX1BBUk0gIT0gMCk7CisJICAgIGNvbHMgPSAqKHB0ckNvbHMoU1BfUEFSTSkpOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCSAgICBfbmNfc2V0X3NjcmVlbihTUF9QQVJNKTsKKwkgICAgVENCID0gKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKikgbmV3X3Rlcm07CisJICAgIFRDQi0+Y3NwID0gU1BfUEFSTTsKKyNlbmRpZgogCSAgICAvKgogCSAgICAgKiBJbiBzZXR1cHRlcm0oKSB3ZSBkaWQgYSBzZXRfY3VydGVybSgpLCBidXQgaXQgd2FzIGJlZm9yZSB3ZSBzZXQKLQkgICAgICogU1AuICBTbyB0aGUgImN1cnJlbnQiIHNjcmVlbidzIHRlcm1pbmFsIHBvaW50ZXIgd2FzIG92ZXJ3cml0dGVuCi0JICAgICAqIHdpdGggYSBkaWZmZXJlbnQgdGVybWluYWwuICBMYXRlciwgaW4gX25jX3NldHVwc2NyZWVuKCksIHdlIHNldAotCSAgICAgKiBTUCBhbmQgdGhlIHRlcm1pbmFsIHBvaW50ZXIgaW4gdGhlIG5ldyBzY3JlZW4uCisJICAgICAqIENVUlJFTlRfU0NSRUVOLiAgU28gdGhlICJjdXJyZW50IiBzY3JlZW4ncyB0ZXJtaW5hbCBwb2ludGVyIHdhcworCSAgICAgKiBvdmVyd3JpdHRlbiB3aXRoIGEgZGlmZmVyZW50IHRlcm1pbmFsLiAgTGF0ZXIsIGluCisJICAgICAqIF9uY19zZXR1cHNjcmVlbigpLCB3ZSBzZXQgQ1VSUkVOVF9TQ1JFRU4gYW5kIHRoZSB0ZXJtaW5hbAorCSAgICAgKiBwb2ludGVyIGluIHRoZSBuZXcgc2NyZWVuLgogCSAgICAgKgogCSAgICAgKiBSZXN0b3JlIHRoZSB0ZXJtaW5hbC1wb2ludGVyIGZvciB0aGUgcHJlLWV4aXN0aW5nIHNjcmVlbiwgaWYKIAkgICAgICogYW55LgpAQCAtMTcyLDM3ICsyNTcsNTQgQEAKIAkgICAgaWYgKGN1cnJlbnQpCiAJCWN1cnJlbnQtPl90ZXJtID0gaXRzX3Rlcm07CiAKLQkgICAgLyogaWYgdGhlIHRlcm1pbmFsIHR5cGUgaGFzIHJlYWwgc29mdCBsYWJlbHMsIHNldCB0aG9zZSB1cCAqLwotCSAgICBpZiAoc2xrX2Zvcm1hdCAmJiBudW1fbGFiZWxzID4gMCAmJiBTTEtfU1RERk1UKHNsa19mb3JtYXQpKQotCQlfbmNfc2xrX2luaXRpYWxpemUoc3Rkc2NyLCBDT0xTKTsKLQotCSAgICBTUC0+X2lmZCA9IGZpbGVubyhpZnApOwotCSAgICB0eXBlYWhlYWQoZmlsZW5vKGlmcCkpOwotI2lmZGVmIFRFUk1JT1MKLQkgICAgU1AtPl91c2VfbWV0YSA9ICgoY3VyX3Rlcm0tPk90dHliLmNfY2ZsYWcgJiBDU0laRSkgPT0gQ1M4ICYmCi0JCQkgICAgICEoY3VyX3Rlcm0tPk90dHliLmNfaWZsYWcgJiBJU1RSSVApKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwkgICAgU1BfUEFSTS0+X3Rlcm0gPSBuZXdfdGVybTsKICNlbHNlCi0JICAgIFNQLT5fdXNlX21ldGEgPSBGQUxTRTsKKwkgICAgbmV3X3Rlcm0gPSBTUF9QQVJNLT5fdGVybTsKICNlbmRpZgotCSAgICBTUC0+X2VuZHdpbiA9IEZBTFNFOwogCisJICAgIC8qIGFsbG93IHVzZXIgdG8gc2V0IG1heGltdW0gZXNjYXBlIGRlbGF5IGZyb20gdGhlIGVudmlyb25tZW50ICovCisJICAgIGlmICgodmFsdWUgPSBfbmNfZ2V0ZW52X251bSgiRVNDREVMQVkiKSkgPj0gMCkgeworCQlOQ1VSU0VTX1NQX05BTUUoc2V0X2VzY2RlbGF5KSAoTkNVUlNFU19TUF9BUkd4IHZhbHVlKTsKKwkgICAgfQorCisJICAgIC8qIGlmIHRoZSB0ZXJtaW5hbCB0eXBlIGhhcyByZWFsIHNvZnQgbGFiZWxzLCBzZXQgdGhvc2UgdXAgKi8KKwkgICAgaWYgKHNsa19mb3JtYXQgJiYgTnVtTGFiZWxzID4gMCAmJiBTTEtfU1RERk1UKHNsa19mb3JtYXQpKQorCQlfbmNfc2xrX2luaXRpYWxpemUoU3RkU2NyZWVuKFNQX1BBUk0pLCBjb2xzKTsKKworCSAgICBTUF9QQVJNLT5faWZkID0gZmlsZW5vKF9pZnApOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHlwZWFoZWFkKSAoTkNVUlNFU19TUF9BUkd4IGZpbGVubyhfaWZwKSk7CisjaWZkZWYgVEVSTUlPUworCSAgICBTUF9QQVJNLT5fdXNlX21ldGEgPSAoKG5ld190ZXJtLT5PdHR5Yi5jX2NmbGFnICYgQ1NJWkUpID09IENTOCAmJgorCQkJCSAgIShuZXdfdGVybS0+T3R0eWIuY19pZmxhZyAmIElTVFJJUCkpIHx8CisJCVVTRV9LTElCQ19LQkQ7CisjZWxzZQorCSAgICBTUF9QQVJNLT5fdXNlX21ldGEgPSBGQUxTRTsKKyNlbmRpZgorCSAgICBTUF9QQVJNLT5fZW5kd2luID0gRkFMU0U7CisjaWZuZGVmIFVTRV9URVJNX0RSSVZFUgogCSAgICAvKgogCSAgICAgKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBvcHRpbWl6ZSBzY3JvbGxpbmcgdW5kZXIgZHVtYiB0ZXJtaW5hbHMgaW4KIAkgICAgICogY2FzZSB3ZSBkbyBub3QgaGF2ZSBhbnkgb2YgdGhlc2UgY2FwYWJpbGl0aWVzLCBzY3JvbGxpbmcKIAkgICAgICogb3B0aW1pemF0aW9uIHdpbGwgYmUgdXNlbGVzcy4KIAkgICAgICovCi0JICAgIFNQLT5fc2Nyb2xsaW5nID0gKChzY3JvbGxfZm9yd2FyZCAmJiBzY3JvbGxfcmV2ZXJzZSkgfHwKLQkJCSAgICAgICgocGFybV9yaW5kZXggfHwKLQkJCQlwYXJtX2luc2VydF9saW5lIHx8Ci0JCQkJaW5zZXJ0X2xpbmUpICYmCi0JCQkgICAgICAgKHBhcm1faW5kZXggfHwKLQkJCQlwYXJtX2RlbGV0ZV9saW5lIHx8Ci0JCQkJZGVsZXRlX2xpbmUpKSk7CisJICAgIFNQX1BBUk0tPl9zY3JvbGxpbmcgPSAoKHNjcm9sbF9mb3J3YXJkICYmIHNjcm9sbF9yZXZlcnNlKSB8fAorCQkJCSAgICgocGFybV9yaW5kZXggfHwKKwkJCQkgICAgIHBhcm1faW5zZXJ0X2xpbmUgfHwKKwkJCQkgICAgIGluc2VydF9saW5lKSAmJgorCQkJCSAgICAocGFybV9pbmRleCB8fAorCQkJCSAgICAgcGFybV9kZWxldGVfbGluZSB8fAorCQkJCSAgICAgZGVsZXRlX2xpbmUpKSk7CisjZW5kaWYKIAotCSAgICBiYXVkcmF0ZSgpOwkJLyogc2V0cyBhIGZpZWxkIGluIHRoZSBTUCBzdHJ1Y3R1cmUgKi8KKwkgICAgTkNVUlNFU19TUF9OQU1FKGJhdWRyYXRlKSAoTkNVUlNFU19TUF9BUkcpOwkJLyogc2V0cyBhIGZpZWxkIGluIHRoZSBzY3JlZW4gc3RydWN0dXJlICovCiAKLQkgICAgU1AtPl9rZXl0cnkgPSAwOworCSAgICBTUF9QQVJNLT5fa2V5dHJ5ID0gMDsKIAorCSAgICAvKiBjb21wdXRlIG1vdmVtZW50IGNvc3RzIHNvIHdlIGNhbiBkbyBiZXR0ZXIgbW92ZSBvcHRpbWl6YXRpb24gKi8KKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwkgICAgVENCT2YoU1BfUEFSTSktPmRydi0+dGRfc2Npbml0KFNQX1BBUk0pOworI2Vsc2UgLyogISBVU0VfVEVSTV9EUklWRVIgKi8KIAkgICAgLyoKIAkgICAgICogQ2hlY2sgZm9yIG1pc21hdGNoZWQgZ3JhcGhpYy1yZW5kaXRpb24gY2FwYWJpbGl0aWVzLiAgTW9zdCBTVnI0CiAJICAgICAqIHRlcm1pbmZvIHRyZWVzIGNvbnRhaW4gZW50cmllcyB0aGF0IGhhdmUgcm11bCBvciBybXNvIGVxdWF0ZWQgdG8KQEAgLTIxMywyMyArMzE1LDM0IEBACiAJICAgICAqIHNob3VsZG4ndCBiZSBsb29raW5nIGF0IHRoaXMgZGV0YWlsLgogCSAgICAgKi8KICNkZWZpbmUgU0dSMF9URVNUKG1vZGUpIChtb2RlICE9IDApICYmIChleGl0X2F0dHJpYnV0ZV9tb2RlID09IDAgfHwgc3RyY21wKG1vZGUsIGV4aXRfYXR0cmlidXRlX21vZGUpKQotCSAgICBTUC0+X3VzZV9ybXNvID0gU0dSMF9URVNUKGV4aXRfc3RhbmRvdXRfbW9kZSk7Ci0JICAgIFNQLT5fdXNlX3JtdWwgPSBTR1IwX1RFU1QoZXhpdF91bmRlcmxpbmVfbW9kZSk7CisJICAgIFNQX1BBUk0tPl91c2Vfcm1zbyA9IFNHUjBfVEVTVChleGl0X3N0YW5kb3V0X21vZGUpOworCSAgICBTUF9QQVJNLT5fdXNlX3JtdWwgPSBTR1IwX1RFU1QoZXhpdF91bmRlcmxpbmVfbW9kZSk7CisjaWYgVVNFX0lUQUxJQworCSAgICBTUF9QQVJNLT5fdXNlX3JpdG0gPSBTR1IwX1RFU1QoZXhpdF9pdGFsaWNzX21vZGUpOworI2VuZGlmCiAKIAkgICAgLyogY29tcHV0ZSBtb3ZlbWVudCBjb3N0cyBzbyB3ZSBjYW4gZG8gYmV0dGVyIG1vdmUgb3B0aW1pemF0aW9uICovCiAJICAgIF9uY19tdmN1cl9pbml0KCk7CiAKIAkgICAgLyogaW5pdGlhbGl6ZSB0ZXJtaW5hbCB0byBhIHNhbmUgc3RhdGUgKi8KIAkgICAgX25jX3NjcmVlbl9pbml0KCk7CisjZW5kaWYgLyogVVNFX1RFUk1fRFJJVkVSICovCiAKIAkgICAgLyogSW5pdGlhbGl6ZSB0aGUgdGVybWluYWwgbGluZSBzZXR0aW5ncy4gKi8KLQkgICAgX25jX2luaXRzY3IoKTsKKwkgICAgX25jX2luaXRzY3IoTkNVUlNFU19TUF9BUkcpOwogCiAJICAgIF9uY19zaWduYWxfaGFuZGxlcihUUlVFKTsKLQotCSAgICByZXN1bHQgPSBTUDsKKwkgICAgcmVzdWx0ID0gU1BfUEFSTTsKIAl9CiAgICAgfQogICAgIF9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CiAgICAgcmV0dXJuU1AocmVzdWx0KTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKQorbmV3dGVybShOQ1VSU0VTX0NPTlNUIGNoYXIgKm5hbWUsIEZJTEUgKm9mcCwgRklMRSAqaWZwKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobmV3dGVybSkgKENVUlJFTlRfU0NSRUVOX1BSRSwgbmFtZSwgb2ZwLCBpZnApOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX25ld3dpbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9uZXd3aW4uYwppbmRleCA1ODdlODNhLi5hNmM2NGJlIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX25ld3dpbi5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfbmV3d2luLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00Miw3ICs0Myw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxzdGRkZWYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9uZXd3aW4uYyx2IDEuNTIgMjAwOC8wNi8wNyAxMzo1ODowOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9uZXd3aW4uYyx2IDEuNzEgMjAxMS8wNS8yOCAyMTozMjo1MSB0b20gRXhwICQiKQogCiAjZGVmaW5lIHdpbmRvd19pcyhuYW1lKSAoKHNwKS0+XyMjbmFtZSA9PSB3aW4pCiAKQEAgLTYxLDYgKzYyLDE3IEBACiB7CiAgICAgU0NSRUVOICpzcDsKIAorI2lmZGVmIFVTRV9TUF9XSU5ET1dMSVNUCisgICAgaWYgKChzcCA9IF9uY19zY3JlZW5fb2Yod2luKSkgIT0gMCkgeworCWlmICh3aW5kb3dfaXMoY3Vyc2NyKSkgeworCSAgICByZW1vdmVfd2luZG93KGN1cnNjcik7CisJfSBlbHNlIGlmICh3aW5kb3dfaXMoc3Rkc2NyKSkgeworCSAgICByZW1vdmVfd2luZG93KHN0ZHNjcik7CisJfSBlbHNlIGlmICh3aW5kb3dfaXMobmV3c2NyKSkgeworCSAgICByZW1vdmVfd2luZG93KG5ld3Njcik7CisJfQorICAgIH0KKyNlbHNlCiAgICAgZm9yIChlYWNoX3NjcmVlbihzcCkpIHsKIAlpZiAod2luZG93X2lzKGN1cnNjcikpIHsKIAkgICAgcmVtb3ZlX3dpbmRvdyhjdXJzY3IpOwpAQCAtNzMsNiArODUsNyBAQAogCSAgICBicmVhazsKIAl9CiAgICAgfQorI2VuZGlmCiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKQEAgLTgxLDE3ICs5NCwyMCBAQAogICAgIFdJTkRPV0xJU1QgKnAsICpxOwogICAgIGludCBpOwogICAgIGludCByZXN1bHQgPSBFUlI7CisjaWZkZWYgVVNFX1NQX1dJTkRPV0xJU1QKKyAgICBTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZih3aW4pOwkvKiBwcmV0ZW5kIHRoaXMgaXMgcGFyYW1ldGVyICovCisjZW5kaWYKIAotICAgIFQoKFRfQ0FMTEVEKCJfbmNfZnJlZXdpbiglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIl9uY19mcmVld2luKCVwKSIpLCAodm9pZCAqKSB3aW4pKTsKIAogICAgIGlmICh3aW4gIT0gMCkgewotCWlmIChfbmNfdHJ5X2dsb2JhbChjdXJzZXMpID09IDApIHsKKwlpZiAoX25jX25vbnNwX3RyeV9nbG9iYWwoY3Vyc2VzKSA9PSAwKSB7CiAJICAgIHEgPSAwOwotCSAgICBmb3IgKGVhY2hfd2luZG93KHApKSB7CisJICAgIGZvciAoZWFjaF93aW5kb3coU1BfUEFSTSwgcCkpIHsKIAkJaWYgKCYocC0+d2luKSA9PSB3aW4pIHsKIAkJICAgIHJlbW92ZV93aW5kb3dfZnJvbV9zY3JlZW4od2luKTsKIAkJICAgIGlmIChxID09IDApCi0JCQlfbmNfd2luZG93cyA9IHAtPm5leHQ7CisJCQlXaW5kb3dMaXN0KFNQX1BBUk0pID0gcC0+bmV4dDsKIAkJICAgIGVsc2UKIAkJCXEtPm5leHQgPSBwLT5uZXh0OwogCkBAIC0xMDMsMzUgKzExOSw0MyBAQAogCQkgICAgZnJlZShwKTsKIAogCQkgICAgcmVzdWx0ID0gT0s7Ci0JCSAgICBUKCgiLi4uZGVsZXRlZCB3aW49JXAiLCB3aW4pKTsKKwkJICAgIFQoKCIuLi5kZWxldGVkIHdpbj0lcCIsICh2b2lkICopIHdpbikpOwogCQkgICAgYnJlYWs7CiAJCX0KIAkJcSA9IHA7CiAJICAgIH0KLQkgICAgX25jX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKKwkgICAgX25jX25vbnNwX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKIAl9CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKIH0KIAogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCi1uZXd3aW4oaW50IG51bV9saW5lcywgaW50IG51bV9jb2x1bW5zLCBpbnQgYmVneSwgaW50IGJlZ3gpCitOQ1VSU0VTX1NQX05BTUUobmV3d2luKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgaW50IG51bV9saW5lcywgaW50IG51bV9jb2x1bW5zLCBpbnQgYmVneSwgaW50IGJlZ3gpCiB7CiAgICAgV0lORE9XICp3aW47CiAgICAgTkNVUlNFU19DSF9UICpwdHI7CiAgICAgaW50IGk7CiAKLSAgICBUKChUX0NBTExFRCgibmV3d2luKCVkLCVkLCVkLCVkKSIpLCBudW1fbGluZXMsIG51bV9jb2x1bW5zLCBiZWd5LCBiZWd4KSk7CisgICAgVCgoVF9DQUxMRUQoIm5ld3dpbiglcCwgJWQsJWQsJWQsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIG51bV9saW5lcywgbnVtX2NvbHVtbnMsCisgICAgICAgYmVneSwgYmVneCkpOwogCi0gICAgaWYgKGJlZ3kgPCAwIHx8IGJlZ3ggPCAwIHx8IG51bV9saW5lcyA8IDAgfHwgbnVtX2NvbHVtbnMgPCAwKQorICAgIGlmIChiZWd5IDwgMAorCXx8IGJlZ3ggPCAwCisJfHwgbnVtX2xpbmVzIDwgMAorCXx8IG51bV9jb2x1bW5zIDwgMAorCXx8IFNQX1BBUk0gPT0gMCkKIAlyZXR1cm5XaW4oMCk7CiAKICAgICBpZiAobnVtX2xpbmVzID09IDApCi0JbnVtX2xpbmVzID0gU1AtPl9saW5lc19hdmFpbCAtIGJlZ3k7CisJbnVtX2xpbmVzID0gU1BfUEFSTS0+X2xpbmVzX2F2YWlsIC0gYmVneTsKICAgICBpZiAobnVtX2NvbHVtbnMgPT0gMCkKLQludW1fY29sdW1ucyA9IHNjcmVlbl9jb2x1bW5zIC0gYmVneDsKKwludW1fY29sdW1ucyA9IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gYmVneDsKIAotICAgIGlmICgod2luID0gX25jX21ha2VuZXcobnVtX2xpbmVzLCBudW1fY29sdW1ucywgYmVneSwgYmVneCwgMCkpID09IDApCisgICAgd2luID0gTkNVUlNFU19TUF9OQU1FKF9uY19tYWtlbmV3KSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCW51bV9saW5lcywgbnVtX2NvbHVtbnMsIGJlZ3ksIGJlZ3gsIDApOworICAgIGlmICh3aW4gPT0gMCkKIAlyZXR1cm5XaW4oMCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2xpbmVzOyBpKyspIHsKQEAgLTE0OSwxNCArMTczLDMwIEBACiAgICAgcmV0dXJuV2luKHdpbik7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKK25ld3dpbihpbnQgbnVtX2xpbmVzLCBpbnQgbnVtX2NvbHVtbnMsIGludCBiZWd5LCBpbnQgYmVneCkKK3sKKyAgICBXSU5ET1cgKndpbjsKKyAgICBfbmNfc3BfbG9ja19nbG9iYWwoY3Vyc2VzKTsKKyAgICB3aW4gPSBOQ1VSU0VTX1NQX05BTUUobmV3d2luKSAoQ1VSUkVOVF9TQ1JFRU4sCisJCQkJICAgbnVtX2xpbmVzLCBudW1fY29sdW1ucywgYmVneSwgYmVneCk7CisgICAgX25jX3NwX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKKyAgICByZXR1cm4gKHdpbik7Cit9CisjZW5kaWYKKwogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCiBkZXJ3aW4oV0lORE9XICpvcmlnLCBpbnQgbnVtX2xpbmVzLCBpbnQgbnVtX2NvbHVtbnMsIGludCBiZWd5LCBpbnQgYmVneCkKIHsKICAgICBXSU5ET1cgKndpbjsKICAgICBpbnQgaTsKICAgICBpbnQgZmxhZ3MgPSBfU1VCV0lOOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZihvcmlnKTsKKyNlbmRpZgogCi0gICAgVCgoVF9DQUxMRUQoImRlcndpbiglcCwlZCwlZCwlZCwlZCkiKSwgb3JpZywgbnVtX2xpbmVzLCBudW1fY29sdW1ucywKKyAgICBUKChUX0NBTExFRCgiZGVyd2luKCVwLCVkLCVkLCVkLCVkKSIpLCAodm9pZCAqKSBvcmlnLCBudW1fbGluZXMsIG51bV9jb2x1bW5zLAogICAgICAgIGJlZ3ksIGJlZ3gpKTsKIAogICAgIC8qCkBAIC0xNzcsOCArMjE3LDEwIEBACiAgICAgaWYgKG9yaWctPl9mbGFncyAmIF9JU1BBRCkKIAlmbGFncyB8PSBfSVNQQUQ7CiAKLSAgICBpZiAoKHdpbiA9IF9uY19tYWtlbmV3KG51bV9saW5lcywgbnVtX2NvbHVtbnMsIG9yaWctPl9iZWd5ICsgYmVneSwKLQkJCSAgIG9yaWctPl9iZWd4ICsgYmVneCwgZmxhZ3MpKSA9PSAwKQorICAgIHdpbiA9IE5DVVJTRVNfU1BfTkFNRShfbmNfbWFrZW5ldykgKE5DVVJTRVNfU1BfQVJHeCBudW1fbGluZXMsIG51bV9jb2x1bW5zLAorCQkJCQlvcmlnLT5fYmVneSArIGJlZ3ksCisJCQkJCW9yaWctPl9iZWd4ICsgYmVneCwgZmxhZ3MpOworICAgIGlmICh3aW4gPT0gMCkKIAlyZXR1cm5XaW4oMCk7CiAKICAgICB3aW4tPl9wYXJ5ID0gYmVneTsKQEAgLTE5NywzMCArMjM5LDQxIEBACiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKIHN1YndpbihXSU5ET1cgKncsIGludCBsLCBpbnQgYywgaW50IHksIGludCB4KQogewotICAgIFQoKFRfQ0FMTEVEKCJzdWJ3aW4oJXAsICVkLCAlZCwgJWQsICVkKSIpLCB3LCBsLCBjLCB5LCB4KSk7Ci0gICAgVCgoInBhcmVudCBoYXMgYmVneSA9ICVsZCwgYmVneCA9ICVsZCIsIChsb25nKSB3LT5fYmVneSwgKGxvbmcpIHctPl9iZWd4KSk7CisgICAgV0lORE9XICpyZXN1bHQgPSAwOwogCi0gICAgcmV0dXJuV2luKGRlcndpbih3LCBsLCBjLCB5IC0gdy0+X2JlZ3ksIHggLSB3LT5fYmVneCkpOworICAgIFQoKFRfQ0FMTEVEKCJzdWJ3aW4oJXAsICVkLCAlZCwgJWQsICVkKSIpLCAodm9pZCAqKSB3LCBsLCBjLCB5LCB4KSk7CisgICAgaWYgKHcgIT0gMCkgeworCVQoKCJwYXJlbnQgaGFzIGJlZ3kgPSAlbGQsIGJlZ3ggPSAlbGQiLCAobG9uZykgdy0+X2JlZ3ksIChsb25nKSB3LT5fYmVneCkpOworCisJcmVzdWx0ID0gZGVyd2luKHcsIGwsIGMsIHkgLSB3LT5fYmVneSwgeCAtIHctPl9iZWd4KTsKKyAgICB9CisgICAgcmV0dXJuV2luKHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBib29sCiBkaW1lbnNpb25fbGltaXQoaW50IHZhbHVlKQogewotICAgIE5DVVJTRVNfU0laRV9UIHRlc3QgPSB2YWx1ZTsKKyAgICBOQ1VSU0VTX1NJWkVfVCB0ZXN0ID0gKE5DVVJTRVNfU0laRV9UKSB2YWx1ZTsKICAgICByZXR1cm4gKHRlc3QgPT0gdmFsdWUgJiYgdmFsdWUgPiAwKTsKIH0KIAogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCi1fbmNfbWFrZW5ldyhpbnQgbnVtX2xpbmVzLCBpbnQgbnVtX2NvbHVtbnMsIGludCBiZWd5LCBpbnQgYmVneCwgaW50IGZsYWdzKQorTkNVUlNFU19TUF9OQU1FKF9uY19tYWtlbmV3KSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICAgICBpbnQgbnVtX2xpbmVzLAorCQkJICAgICAgaW50IG51bV9jb2x1bW5zLAorCQkJICAgICAgaW50IGJlZ3ksCisJCQkgICAgICBpbnQgYmVneCwKKwkJCSAgICAgIGludCBmbGFncykKIHsKICAgICBpbnQgaTsKICAgICBXSU5ET1dMSVNUICp3cDsKICAgICBXSU5ET1cgKndpbjsKLSAgICBib29sIGlzX3BhZCA9IChmbGFncyAmIF9JU1BBRCk7CisgICAgYm9vbCBpc19wYWR3aW4gPSAoZmxhZ3MgJiBfSVNQQUQpOwogCi0gICAgVCgoVF9DQUxMRUQoIl9uY19tYWtlbmV3KCVkLCVkLCVkLCVkKSIpLCBudW1fbGluZXMsIG51bV9jb2x1bW5zLCBiZWd5LCBiZWd4KSk7CisgICAgVCgoVF9DQUxMRUQoIl9uY19tYWtlbmV3KCVwLCVkLCVkLCVkLCVkKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sIG51bV9saW5lcywgbnVtX2NvbHVtbnMsIGJlZ3ksIGJlZ3gpKTsKIAotICAgIGlmIChTUCA9PSAwKQorICAgIGlmIChTUF9QQVJNID09IDApCiAJcmV0dXJuV2luKDApOwogCiAgICAgaWYgKCFkaW1lbnNpb25fbGltaXQobnVtX2xpbmVzKSB8fCAhZGltZW5zaW9uX2xpbWl0KG51bV9jb2x1bW5zKSkKQEAgLTIzMiwyNiArMjg1LDI4IEBACiAgICAgd2luID0gJih3cC0+d2luKTsKIAogICAgIGlmICgod2luLT5fbGluZSA9IHR5cGVDYWxsb2Moc3RydWN0IGxkYXQsICgodW5zaWduZWQpIG51bV9saW5lcykpKSA9PSAwKSB7Ci0JZnJlZSh3aW4pOworCWZyZWUod3ApOwogCXJldHVybldpbigwKTsKICAgICB9CiAKLSAgICBfbmNfbG9ja19nbG9iYWwoY3Vyc2VzKTsKKyAgICBfbmNfbm9uc3BfbG9ja19nbG9iYWwoY3Vyc2VzKTsKIAogICAgIHdpbi0+X2N1cnggPSAwOwogICAgIHdpbi0+X2N1cnkgPSAwOwotICAgIHdpbi0+X21heHkgPSBudW1fbGluZXMgLSAxOwotICAgIHdpbi0+X21heHggPSBudW1fY29sdW1ucyAtIDE7Ci0gICAgd2luLT5fYmVneSA9IGJlZ3k7Ci0gICAgd2luLT5fYmVneCA9IGJlZ3g7Ci0gICAgd2luLT5feW9mZnNldCA9IFNQLT5fdG9wc3RvbGVuOworICAgIHdpbi0+X21heHkgPSAoTkNVUlNFU19TSVpFX1QpIChudW1fbGluZXMgLSAxKTsKKyAgICB3aW4tPl9tYXh4ID0gKE5DVVJTRVNfU0laRV9UKSAobnVtX2NvbHVtbnMgLSAxKTsKKyAgICB3aW4tPl9iZWd5ID0gKE5DVVJTRVNfU0laRV9UKSBiZWd5OworICAgIHdpbi0+X2JlZ3ggPSAoTkNVUlNFU19TSVpFX1QpIGJlZ3g7CisgICAgd2luLT5feW9mZnNldCA9IFNQX1BBUk0tPl90b3BzdG9sZW47CiAKLSAgICB3aW4tPl9mbGFncyA9IGZsYWdzOworICAgIHdpbi0+X2ZsYWdzID0gKHNob3J0KSBmbGFnczsKICAgICBXSU5ET1dfQVRUUlMod2luKSA9IEFfTk9STUFMOwogICAgIFNldENoYXIod2luLT5fbmNfYmtnZCwgQkxBTktfVEVYVCwgQkxBTktfQVRUUik7CiAKLSAgICB3aW4tPl9jbGVhciA9IGlzX3BhZCA/IEZBTFNFIDogKG51bV9saW5lcyA9PSBzY3JlZW5fbGluZXMKLQkJCQkgICAgJiYgbnVtX2NvbHVtbnMgPT0gc2NyZWVuX2NvbHVtbnMpOworICAgIHdpbi0+X2NsZWFyID0gKGlzX3BhZHdpbgorCQkgICA/IEZBTFNFCisJCSAgIDogKG51bV9saW5lcyA9PSBzY3JlZW5fbGluZXMoU1BfUEFSTSkKKwkJICAgICAgJiYgbnVtX2NvbHVtbnMgPT0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkpKTsKICAgICB3aW4tPl9pZGxvayA9IEZBTFNFOwogICAgIHdpbi0+X2lkY29rID0gVFJVRTsKICAgICB3aW4tPl9zY3JvbGwgPSBGQUxTRTsKQEAgLTI2NSw3ICszMjAsNyBAQAogICAgIHdpbi0+X3BhcmVudCA9IDA7CiAKICAgICB3aW4tPl9yZWd0b3AgPSAwOwotICAgIHdpbi0+X3JlZ2JvdHRvbSA9IG51bV9saW5lcyAtIDE7CisgICAgd2luLT5fcmVnYm90dG9tID0gKE5DVVJTRVNfU0laRV9UKSAobnVtX2xpbmVzIC0gMSk7CiAKICAgICB3aW4tPl9wYWQuX3BhZF95ID0gLTE7CiAgICAgd2luLT5fcGFkLl9wYWRfeCA9IC0xOwpAQCAtMjk1LDI4ICszNTAsMjggQEAKIAkgKiBTbyB0aGF0J3MgaG93IHdlIHdhbnQgbmN1cnNlcyB0byBiZWhhdmUuCiAJICovCiAJd2luLT5fbGluZVtpXS5maXJzdGNoYXIgPSAwOwotCXdpbi0+X2xpbmVbaV0ubGFzdGNoYXIgPSBudW1fY29sdW1ucyAtIDE7CisJd2luLT5fbGluZVtpXS5sYXN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgKG51bV9jb2x1bW5zIC0gMSk7CiAKIAlpZl9VU0VfU0NST0xMX0hJTlRTKHdpbi0+X2xpbmVbaV0ub2xkaW5kZXggPSBpKTsKICAgICB9CiAKLSAgICBpZiAoIWlzX3BhZCAmJiAoYmVneCArIG51bV9jb2x1bW5zID09IHNjcmVlbl9jb2x1bW5zKSkgeworICAgIGlmICghaXNfcGFkd2luICYmIChiZWd4ICsgbnVtX2NvbHVtbnMgPT0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkpKSB7CiAJd2luLT5fZmxhZ3MgfD0gX0VORExJTkU7CiAKLQlpZiAoYmVneCA9PSAwICYmIG51bV9saW5lcyA9PSBzY3JlZW5fbGluZXMgJiYgYmVneSA9PSAwKQorCWlmIChiZWd4ID09IDAgJiYgbnVtX2xpbmVzID09IHNjcmVlbl9saW5lcyhTUF9QQVJNKSAmJiBiZWd5ID09IDApCiAJICAgIHdpbi0+X2ZsYWdzIHw9IF9GVUxMV0lOOwogCi0JaWYgKGJlZ3kgKyBudW1fbGluZXMgPT0gc2NyZWVuX2xpbmVzKQorCWlmIChiZWd5ICsgbnVtX2xpbmVzID09IHNjcmVlbl9saW5lcyhTUF9QQVJNKSkKIAkgICAgd2luLT5fZmxhZ3MgfD0gX1NDUk9MTFdJTjsKICAgICB9CiAKLSAgICB3cC0+bmV4dCA9IF9uY193aW5kb3dzOwotICAgIHdwLT5zY3JlZW4gPSBTUDsKLSAgICBfbmNfd2luZG93cyA9IHdwOworICAgIHdwLT5uZXh0ID0gV2luZG93TGlzdChTUF9QQVJNKTsKKyAgICB3cC0+c2NyZWVuID0gU1BfUEFSTTsKKyAgICBXaW5kb3dMaXN0KFNQX1BBUk0pID0gd3A7CiAKLSAgICBUKChUX0NSRUFURSgid2luZG93ICVwIiksIHdpbikpOworICAgIFQoKFRfQ1JFQVRFKCJ3aW5kb3cgJXAiKSwgKHZvaWQgKikgd2luKSk7CiAKLSAgICBfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOworICAgIF9uY19ub25zcF91bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CiAgICAgcmV0dXJuV2luKHdpbik7CiB9CiAKQEAgLTMyNSwxNCArMzgwLDIyIEBACiAgKiBpbnRlcm5hbGx5LCBhbmQgaXQgaXMgdXNlZnVsIHRvIGFsbG93IHRob3NlIHRvIGJlIGludm9rZWQgd2l0aG91dCBzd2l0Y2hpbmcKICAqIFNDUkVFTidzLCBlLmcuLCBmb3IgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLgogICovCi1OQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikKLV9uY19zY3JlZW5fb2YoV0lORE9XICp3aW4pCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoV0lORE9XICopCitfbmNfY3Vyc2NyX29mKFNDUkVFTiAqc3ApCiB7Ci0gICAgU0NSRUVOICpzcCA9IDA7Ci0KLSAgICBpZiAod2luICE9IDApIHsKLQlXSU5ET1dMSVNUICp3cCA9IChXSU5ET1dMSVNUICopIHdpbjsKLQlzcCA9IHdwLT5zY3JlZW47Ci0gICAgfQotICAgIHJldHVybiAoc3ApOworICAgIHJldHVybiBzcCA9PSAwID8gMCA6IEN1clNjcmVlbihzcCk7CiB9CisKK05DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQorX25jX25ld3Njcl9vZihTQ1JFRU4gKnNwKQoreworICAgIHJldHVybiBzcCA9PSAwID8gMCA6IE5ld1NjcmVlbihzcCk7Cit9CisKK05DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQorX25jX3N0ZHNjcl9vZihTQ1JFRU4gKnNwKQoreworICAgIHJldHVybiBzcCA9PSAwID8gMCA6IFN0ZFNjcmVlbihzcCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfbmwuYyBiL25jdXJzZXMvYmFzZS9saWJfbmwuYwppbmRleCAzMjUxNWRhLi4zNDI1NDg3IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX25sLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9ubC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OCwxOTk5LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNiArMjksOCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTQyLDM4ICs0NCw1MiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9ubC5jLHYgMS44IDIwMDAvMTIvMTAgMDI6NDM6MjcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfbmwuYyx2IDEuMTIgMjAwOS8xMC8yNCAyMjowNTo1NSB0b20gRXhwICQiKQogCiAjaWZkZWYgX19FTVhfXwogI2luY2x1ZGUgPGlvLmg+CiAjZW5kaWYKIAogTkNVUlNFU19FWFBPUlQoaW50KQotbmwodm9pZCkKK05DVVJTRVNfU1BfTkFNRShubCkgKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICBUKChUX0NBTExFRCgibmwoKSIpKSk7Ci0KLSAgICBTUC0+X25sID0gVFJVRTsKLQorICAgIFQoKFRfQ0FMTEVEKCJubCglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworICAgIGlmICgwID09IFNQX1BBUk0pCisJcmV0dXJuQ29kZShFUlIpOworICAgIFNQX1BBUk0tPl9ubCA9IFRSVUU7CiAjaWZkZWYgX19FTVhfXwogICAgIF9uY19mbHVzaCgpOwotICAgIF9mc2V0bW9kZShOQ19PVVRQVVQsICJ0Iik7CisgICAgX2ZzZXRtb2RlKE5DX09VVFBVVChTUF9QQVJNKSwgInQiKTsKICNlbmRpZgotCiAgICAgcmV0dXJuQ29kZShPSyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitubCh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobmwpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKG5vbmwpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgVCgoVF9DQUxMRUQoIm5vbmwoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICBpZiAoMCA9PSBTUF9QQVJNKQorCXJldHVybkNvZGUoRVJSKTsKKyAgICBTUF9QQVJNLT5fbmwgPSBGQUxTRTsKKyNpZmRlZiBfX0VNWF9fCisgICAgX25jX2ZsdXNoKCk7CisgICAgX2ZzZXRtb2RlKE5DX09VVFBVVChTUF9QQVJNKSwgImIiKTsKKyNlbmRpZgorICAgIHJldHVybkNvZGUoT0spOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogbm9ubCh2b2lkKQogewotICAgIFQoKFRfQ0FMTEVEKCJub25sKCkiKSkpOwotCi0gICAgU1AtPl9ubCA9IEZBTFNFOwotCi0jaWZkZWYgX19FTVhfXwotICAgIF9uY19mbHVzaCgpOwotICAgIF9mc2V0bW9kZShOQ19PVVRQVVQsICJiIik7Ci0jZW5kaWYKLQotICAgIHJldHVybkNvZGUoT0spOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobm9ubCkgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9vdmVybGF5LmMgYi9uY3Vyc2VzL2Jhc2UvbGliX292ZXJsYXkuYwppbmRleCA2NjllOGU3Li5hMjA2MjQ4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX292ZXJsYXkuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX292ZXJsYXkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfb3ZlcmxheS5jLHYgMS4yNyAyMDA4LzA2LzA3IDIzOjMwOjM0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX292ZXJsYXkuYyx2IDEuMzEgMjAxMy8wNC8wNiAyMzo0NzoxMyB0b20gRXhwICQiKQogCiBzdGF0aWMgaW50CiBvdmVybGFwKGNvbnN0IFdJTkRPVyAqY29uc3Qgc3JjLCBXSU5ET1cgKmNvbnN0IGRzdCwgaW50IGNvbnN0IGZsYWcpCkBAIC01Miw3ICs1Miw3IEBACiAgICAgaW50IGRtaW5yb3csIGRtaW5jb2w7CiAgICAgaW50IGRtYXhyb3csIGRtYXhjb2w7CiAKLSAgICBUKChUX0NBTExFRCgib3ZlcmxhcCglcCwlcCwlZCkiKSwgc3JjLCBkc3QsIGZsYWcpKTsKKyAgICBUKChUX0NBTExFRCgib3ZlcmxhcCglcCwlcCwlZCkiKSwgKGNvbnN0IHZvaWQgKikgc3JjLCAodm9pZCAqKSBkc3QsIGZsYWcpKTsKIAogICAgIGlmIChzcmMgIT0gMCAmJiBkc3QgIT0gMCkgewogCV9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwpAQCAtMTEwLDcgKzExMCw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBvdmVybGF5KGNvbnN0IFdJTkRPVyAqd2luMSwgV0lORE9XICp3aW4yKQogewotICAgIFQoKFRfQ0FMTEVEKCJvdmVybGF5KCVwLCVwKSIpLCB3aW4xLCB3aW4yKSk7CisgICAgVCgoVF9DQUxMRUQoIm92ZXJsYXkoJXAsJXApIiksIChjb25zdCB2b2lkICopIHdpbjEsICh2b2lkICopIHdpbjIpKTsKICAgICByZXR1cm5Db2RlKG92ZXJsYXAod2luMSwgd2luMiwgVFJVRSkpOwogfQogCkBAIC0xMjcsNyArMTI3LDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIG92ZXJ3cml0ZShjb25zdCBXSU5ET1cgKndpbjEsIFdJTkRPVyAqd2luMikKIHsKLSAgICBUKChUX0NBTExFRCgib3ZlcndyaXRlKCVwLCVwKSIpLCB3aW4xLCB3aW4yKSk7CisgICAgVCgoVF9DQUxMRUQoIm92ZXJ3cml0ZSglcCwlcCkiKSwgKGNvbnN0IHZvaWQgKikgd2luMSwgKHZvaWQgKikgd2luMikpOwogICAgIHJldHVybkNvZGUob3ZlcmxhcCh3aW4xLCB3aW4yLCBGQUxTRSkpOwogfQogCkBAIC0xNDUsOSArMTQ1LDE2IEBACiAgICAgYXR0cl90IG1hc2s7CiAKICAgICBUKChUX0NBTExFRCgiY29weXdpbiglcCwgJXAsICVkLCAlZCwgJWQsICVkLCAlZCwgJWQsICVkKSIpLAotICAgICAgIHNyYywgZHN0LCBzbWlucm93LCBzbWluY29sLCBkbWlucm93LCBkbWluY29sLCBkbWF4cm93LCBkbWF4Y29sLCBvdmVyKSk7CisgICAgICAgKGNvbnN0IHZvaWQgKikgc3JjLAorICAgICAgICh2b2lkICopIGRzdCwKKyAgICAgICBzbWlucm93LCBzbWluY29sLAorICAgICAgIGRtaW5yb3csIGRtaW5jb2wsCisgICAgICAgZG1heHJvdywgZG1heGNvbCwgb3ZlcikpOwogCi0gICAgaWYgKHNyYyAmJiBkc3QpIHsKKyAgICBpZiAoc3JjICE9IDAKKwkmJiBkc3QgIT0gMAorCSYmIGRtYXhyb3cgPj0gZG1pbnJvdworCSYmIGRtYXhjb2wgPj0gZG1pbmNvbCkgewogCV9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwogCiAJYmsgPSBBdHRyT2YoZHN0LT5fbmNfYmtnZCk7CkBAIC0xNTYsNiArMTYzLDcgQEAKIAkvKiBtYWtlIHN1cmUgcmVjdGFuZ2xlIGV4aXN0cyBpbiBzb3VyY2UgKi8KIAlpZiAoKHNtaW5yb3cgKyBkbWF4cm93IC0gZG1pbnJvdykgPD0gKHNyYy0+X21heHkgKyAxKSAmJgogCSAgICAoc21pbmNvbCArIGRtYXhjb2wgLSBkbWluY29sKSA8PSAoc3JjLT5fbWF4eCArIDEpKSB7CisJICAgIGJvb2wgY29waWVkID0gRkFMU0U7CiAKIAkgICAgVCgoInJlY3RhbmdsZSBleGlzdHMgaW4gc291cmNlIikpOwogCkBAIC0xNjgsMTAgKzE3NiwxOCBAQAogCQkgICAgIGR5IDw9IGRtYXhyb3c7CiAJCSAgICAgc3krKywgZHkrKykgewogCisJCSAgICBpZiAoZHkgPCAwIHx8IHN5IDwgMCkKKwkJCWNvbnRpbnVlOworCiAJCSAgICB0b3VjaGVkID0gRkFMU0U7CiAJCSAgICBmb3IgKGR4ID0gZG1pbmNvbCwgc3ggPSBzbWluY29sOwogCQkJIGR4IDw9IGRtYXhjb2w7CiAJCQkgc3grKywgZHgrKykgeworCisJCQlpZiAoZHggPCAwIHx8IHN4IDwgMCkKKwkJCSAgICBjb250aW51ZTsKKwkJCWNvcGllZCA9IFRSVUU7CisKIAkJCWlmIChvdmVyKSB7CiAJCQkgICAgaWYgKChDaGFyT2Yoc3JjLT5fbGluZVtzeV0udGV4dFtzeF0pICE9IEwoJyAnKSkgJiYKIAkJCQkoIUNoYXJFcShkc3QtPl9saW5lW2R5XS50ZXh0W2R4XSwKQEAgLTE5Nyw3ICsyMTMsOCBAQAogCQkgICAgfQogCQl9CiAJCVQoKCJmaW5pc2hlZCBjb3B5d2luIikpOwotCQlyYyA9IE9LOworCQlpZiAoY29waWVkKQorCQkgICAgcmMgPSBPSzsKIAkgICAgfQogCX0KIAlfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9wYWQuYyBiL25jdXJzZXMvYmFzZS9saWJfcGFkLmMKaW5kZXggNmNhZDljNS4uYjg3NDk4YiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9wYWQuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3BhZC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDAsMjEgKzQyLDIyIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3BhZC5jLHYgMS40MSAyMDA2LzEwLzE0IDIwOjQ3OjEzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3BhZC5jLHYgMS40NiAyMDEwLzA0LzI0IDIzOjUwOjQ1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQotbmV3cGFkKGludCBsLCBpbnQgYykKK05DVVJTRVNfU1BfTkFNRShuZXdwYWQpIChOQ1VSU0VTX1NQX0RDTHggaW50IGwsIGludCBjKQogewogICAgIFdJTkRPVyAqd2luOwogICAgIE5DVVJTRVNfQ0hfVCAqcHRyOwogICAgIGludCBpOwogCi0gICAgVCgoVF9DQUxMRUQoIm5ld3BhZCglZCwgJWQpIiksIGwsIGMpKTsKKyAgICBUKChUX0NBTExFRCgibmV3cGFkKCVwLCVkLCAlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgbCwgYykpOwogCiAgICAgaWYgKGwgPD0gMCB8fCBjIDw9IDApCiAJcmV0dXJuV2luKDApOwogCi0gICAgaWYgKCh3aW4gPSBfbmNfbWFrZW5ldyhsLCBjLCAwLCAwLCBfSVNQQUQpKSA9PSBOVUxMKQorICAgIHdpbiA9IE5DVVJTRVNfU1BfTkFNRShfbmNfbWFrZW5ldykgKE5DVVJTRVNfU1BfQVJHeCBsLCBjLCAwLCAwLCBfSVNQQUQpOworICAgIGlmICh3aW4gPT0gTlVMTCkKIAlyZXR1cm5XaW4oMCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CkBAIC03MCw2ICs3MywxNCBAQAogICAgIHJldHVybldpbih3aW4pOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoV0lORE9XICopCituZXdwYWQoaW50IGwsIGludCBjKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobmV3cGFkKSAoQ1VSUkVOVF9TQ1JFRU4sIGwsIGMpOworfQorI2VuZGlmCisKIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQogc3VicGFkKFdJTkRPVyAqb3JpZywgaW50IGwsIGludCBjLCBpbnQgYmVneSwgaW50IGJlZ3gpCiB7CkBAIC05NCwxMCArMTA1LDE0IEBACiAJIGludCBzbWF4cm93LAogCSBpbnQgc21heGNvbCkKIHsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgorCiAgICAgVCgoVF9DQUxMRUQoInByZWZyZXNoKCkiKSkpOwogICAgIGlmIChwbm91dHJlZnJlc2god2luLCBwbWlucm93LCBwbWluY29sLCBzbWlucm93LCBzbWluY29sLCBzbWF4cm93LAogCQkgICAgIHNtYXhjb2wpICE9IEVSUgotCSYmIGRvdXBkYXRlKCkgIT0gRVJSKSB7CisJJiYgTkNVUlNFU19TUF9OQU1FKGRvdXBkYXRlKSAoTkNVUlNFU19TUF9BUkcpICE9IEVSUikgewogCXJldHVybkNvZGUoT0spOwogICAgIH0KICAgICByZXR1cm5Db2RlKEVSUik7CkBAIC0xMTIsMTAgKzEyNywxMSBAQAogCSAgICAgaW50IHNtYXhyb3csCiAJICAgICBpbnQgc21heGNvbCkKIHsKLSAgICBOQ1VSU0VTX1NJWkVfVCBpLCBqOwotICAgIE5DVVJTRVNfU0laRV9UIG0sIG47Ci0gICAgTkNVUlNFU19TSVpFX1QgcG1heHJvdzsKLSAgICBOQ1VSU0VTX1NJWkVfVCBwbWF4Y29sOworICAgIGludCBpLCBqOworICAgIGludCBtLCBuOworICAgIGludCBwbWF4cm93OworICAgIGludCBwbWF4Y29sOworICAgIFNDUkVFTiAqc3A7CiAKICNpZiBVU0VfU0NST0xMX0hJTlRTCiAgICAgY29uc3QgaW50IG15X2xlbiA9IDI7CS8qIHBhcmFtZXRlcml6ZSB0aGUgdGhyZXNob2xkIGZvciBoYXJkc2Nyb2xsICovCkBAIC0xMjQsNyArMTQwLDcgQEAKICNlbmRpZgogCiAgICAgVCgoVF9DQUxMRUQoInBub3V0cmVmcmVzaCglcCwgJWQsICVkLCAlZCwgJWQsICVkLCAlZCkiKSwKLSAgICAgICB3aW4sIHBtaW5yb3csIHBtaW5jb2wsIHNtaW5yb3csIHNtaW5jb2wsIHNtYXhyb3csIHNtYXhjb2wpKTsKKyAgICAgICAodm9pZCAqKSB3aW4sIHBtaW5yb3csIHBtaW5jb2wsIHNtaW5yb3csIHNtaW5jb2wsIHNtYXhyb3csIHNtYXhjb2wpKTsKIAogICAgIGlmICh3aW4gPT0gMCkKIAlyZXR1cm5Db2RlKEVSUik7CkBAIC0xMzIsNiArMTQ4LDggQEAKICAgICBpZiAoISh3aW4tPl9mbGFncyAmIF9JU1BBRCkpCiAJcmV0dXJuQ29kZShFUlIpOwogCisgICAgc3AgPSBfbmNfc2NyZWVuX29mKHdpbik7CisKICAgICAvKiBuZWdhdGl2ZSB2YWx1ZXMgYXJlIGludGVycHJldGVkIGFzIHplcm8gKi8KICAgICBpZiAocG1pbnJvdyA8IDApCiAJcG1pbnJvdyA9IDA7CkBAIC0xNjIsOCArMTgwLDggQEAKIAlwbWF4Y29sID0gcG1pbmNvbCArIHNtYXhjb2wgLSBzbWluY29sOwogICAgIH0KIAotICAgIGlmIChzbWF4cm93ID49IHNjcmVlbl9saW5lcwotCXx8IHNtYXhjb2wgPj0gc2NyZWVuX2NvbHVtbnMKKyAgICBpZiAoc21heHJvdyA+PSBzY3JlZW5fbGluZXMoc3ApCisJfHwgc21heGNvbCA+PSBzY3JlZW5fY29sdW1ucyhzcCkKIAl8fCBzbWlucm93ID4gc21heHJvdwogCXx8IHNtaW5jb2wgPiBzbWF4Y29sKQogCXJldHVybkNvZGUoRVJSKTsKQEAgLTE5NCwxMyArMjEyLDEzIEBACiAgICAgICogbWVyZWx5IGNoYW5nZSB0aGUgY29zdHMgb2YgdmFyaW91cyB1cGRhdGUgY2FzZXMuCiAgICAgICovCiAjaWYgVVNFX1NDUk9MTF9ISU5UUwotICAgIHdpZGUgPSAoc21pbmNvbCA8IG15X2xlbiAmJiBzbWF4Y29sID4gKG5ld3Njci0+X21heHggLSBteV9sZW4pKTsKKyAgICB3aWRlID0gKHNtaW5jb2wgPCBteV9sZW4gJiYgc21heGNvbCA+IChOZXdTY3JlZW4oc3ApLT5fbWF4eCAtIG15X2xlbikpOwogI2VuZGlmCiAKICAgICBmb3IgKGkgPSBwbWlucm93LCBtID0gc21pbnJvdyArIHdpbi0+X3lvZmZzZXQ7Ci0JIGkgPD0gcG1heHJvdyAmJiBtIDw9IG5ld3Njci0+X21heHk7CisJIGkgPD0gcG1heHJvdyAmJiBtIDw9IE5ld1NjcmVlbihzcCktPl9tYXh5OwogCSBpKyssIG0rKykgewotCXJlZ2lzdGVyIHN0cnVjdCBsZGF0ICpubGluZSA9ICZuZXdzY3ItPl9saW5lW21dOworCXJlZ2lzdGVyIHN0cnVjdCBsZGF0ICpubGluZSA9ICZOZXdTY3JlZW4oc3ApLT5fbGluZVttXTsKIAlyZWdpc3RlciBzdHJ1Y3QgbGRhdCAqb2xpbmUgPSAmd2luLT5fbGluZVtpXTsKIAlmb3IgKGogPSBwbWluY29sLCBuID0gc21pbmNvbDsgaiA8PSBwbWF4Y29sOyBqKyssIG4rKykgewogCSAgICBOQ1VSU0VTX0NIX1QgY2ggPSBvbGluZS0+dGV4dFtqXTsKQEAgLTIyOSw5ICsyNDcsOSBAQAogCQl8fCBuaW5kID4gc21heHJvdykgewogCQluaW5kID0gX05FV0lOREVYOwogCSAgICB9IGVsc2UgaWYgKGRpc3BsYWNlZCkgewotCQlyZWdpc3RlciBzdHJ1Y3QgbGRhdCAqcGxpbmUgPSAmY3Vyc2NyLT5fbGluZVtuaW5kXTsKKwkJcmVnaXN0ZXIgc3RydWN0IGxkYXQgKnBsaW5lID0gJkN1clNjcmVlbihzcCktPl9saW5lW25pbmRdOwogCQlmb3IgKGogPSAwOyBqIDw9IG15X2xlbjsgaisrKSB7Ci0JCSAgICBpbnQgayA9IG5ld3Njci0+X21heHggLSBqOworCQkgICAgaW50IGsgPSBOZXdTY3JlZW4oc3ApLT5fbWF4eCAtIGo7CiAJCSAgICBpZiAocGxpbmUtPnRleHRbal0gIT0gbmxpbmUtPnRleHRbal0KIAkJCXx8IHBsaW5lLT50ZXh0W2tdICE9IG5saW5lLT50ZXh0W2tdKSB7CiAJCQluaW5kID0gX05FV0lOREVYOwpAQCAtMjYxLDEyICsyNzksMTIgQEAKIAl3aW4tPl9saW5lW2ldLm9sZGluZGV4ID0gX05FV0lOREVYOwogI2VuZGlmCiAKLSAgICB3aW4tPl9iZWd4ID0gc21pbmNvbDsKLSAgICB3aW4tPl9iZWd5ID0gc21pbnJvdzsKKyAgICB3aW4tPl9iZWd4ID0gKE5DVVJTRVNfU0laRV9UKSBzbWluY29sOworICAgIHdpbi0+X2JlZ3kgPSAoTkNVUlNFU19TSVpFX1QpIHNtaW5yb3c7CiAKICAgICBpZiAod2luLT5fY2xlYXIpIHsKIAl3aW4tPl9jbGVhciA9IEZBTFNFOwotCW5ld3Njci0+X2NsZWFyID0gVFJVRTsKKwlOZXdTY3JlZW4oc3ApLT5fY2xlYXIgPSBUUlVFOwogICAgIH0KIAogICAgIC8qCkBAIC0yNzgsMTAgKzI5NiwxMiBAQAogCSYmIHdpbi0+X2N1cnggPj0gcG1pbmNvbAogCSYmIHdpbi0+X2N1cnkgPD0gcG1heHJvdwogCSYmIHdpbi0+X2N1cnggPD0gcG1heGNvbCkgewotCW5ld3Njci0+X2N1cnkgPSB3aW4tPl9jdXJ5IC0gcG1pbnJvdyArIHdpbi0+X2JlZ3kgKyB3aW4tPl95b2Zmc2V0OwotCW5ld3Njci0+X2N1cnggPSB3aW4tPl9jdXJ4IC0gcG1pbmNvbCArIHdpbi0+X2JlZ3g7CisJTmV3U2NyZWVuKHNwKS0+X2N1cnkgPSAoTkNVUlNFU19TSVpFX1QpICh3aW4tPl9jdXJ5IC0gcG1pbnJvdworCQkJCQkJICsgd2luLT5fYmVneSArIHdpbi0+X3lvZmZzZXQpOworCU5ld1NjcmVlbihzcCktPl9jdXJ4ID0gKE5DVVJTRVNfU0laRV9UKSAod2luLT5fY3VyeCAtIHBtaW5jb2wKKwkJCQkJCSArIHdpbi0+X2JlZ3gpOwogICAgIH0KLSAgICBuZXdzY3ItPl9sZWF2ZW9rID0gd2luLT5fbGVhdmVvazsKKyAgICBOZXdTY3JlZW4oc3ApLT5fbGVhdmVvayA9IHdpbi0+X2xlYXZlb2s7CiAgICAgd2luLT5fZmxhZ3MgJj0gfl9IQVNNT1ZFRDsKIAogICAgIC8qCkBAIC0yODksMTIgKzMwOSwxMiBAQAogICAgICAqIFdlIHdpbGwgdXNlIHRoaXMgb24gc3Vic2VxdWVudCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHRvIGRlcml2ZQogICAgICAqIHZhbHVlcyB0byBzdHVmZiBpbnRvICdvbGRpbmRleFtdJyAtLSBmb3Igc2Nyb2xsaW5nIG9wdGltaXphdGlvbi4KICAgICAgKi8KLSAgICB3aW4tPl9wYWQuX3BhZF95ID0gcG1pbnJvdzsKLSAgICB3aW4tPl9wYWQuX3BhZF94ID0gcG1pbmNvbDsKLSAgICB3aW4tPl9wYWQuX3BhZF90b3AgPSBzbWlucm93OwotICAgIHdpbi0+X3BhZC5fcGFkX2xlZnQgPSBzbWluY29sOwotICAgIHdpbi0+X3BhZC5fcGFkX2JvdHRvbSA9IHNtYXhyb3c7Ci0gICAgd2luLT5fcGFkLl9wYWRfcmlnaHQgPSBzbWF4Y29sOworICAgIHdpbi0+X3BhZC5fcGFkX3kgPSAoTkNVUlNFU19TSVpFX1QpIHBtaW5yb3c7CisgICAgd2luLT5fcGFkLl9wYWRfeCA9IChOQ1VSU0VTX1NJWkVfVCkgcG1pbmNvbDsKKyAgICB3aW4tPl9wYWQuX3BhZF90b3AgPSAoTkNVUlNFU19TSVpFX1QpIHNtaW5yb3c7CisgICAgd2luLT5fcGFkLl9wYWRfbGVmdCA9IChOQ1VSU0VTX1NJWkVfVCkgc21pbmNvbDsKKyAgICB3aW4tPl9wYWQuX3BhZF9ib3R0b20gPSAoTkNVUlNFU19TSVpFX1QpIHNtYXhyb3c7CisgICAgd2luLT5fcGFkLl9wYWRfcmlnaHQgPSAoTkNVUlNFU19TSVpFX1QpIHNtYXhjb2w7CiAKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KQEAgLTMwMiw3ICszMjIsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogcGVjaG9jaGFyKFdJTkRPVyAqcGFkLCBjb25zdCBjaHR5cGUgY2gpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInBlY2hvY2hhciglcCwgJXMpIiksIHBhZCwgX3RyYWNlY2h0eXBlKGNoKSkpOworICAgIFQoKFRfQ0FMTEVEKCJwZWNob2NoYXIoJXAsICVzKSIpLCAodm9pZCAqKSBwYWQsIF90cmFjZWNodHlwZShjaCkpKTsKIAogICAgIGlmIChwYWQgPT0gMCkKIAlyZXR1cm5Db2RlKEVSUik7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3ByaW50dy5jIGIvbmN1cnNlcy9iYXNlL2xpYl9wcmludHcuYwppbmRleCA2MmFlOTIxLi41NjUyOGY2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3ByaW50dy5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfcHJpbnR3LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw3ICsyNyw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTcgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgMTk5Ny1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zOSw3ICszOSw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3ByaW50dy5jLHYgMS4xOCAyMDA2LzEyLzE3IDE5OjIxOjM5IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3ByaW50dy5jLHYgMS4yMyAyMDEyLzA5LzAzIDE3OjU1OjI4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHByaW50dyhjb25zdCBjaGFyICpmbXQsLi4uKQpAQCAtNDgsMTAgKzQ4LDExIEBACiAgICAgaW50IGNvZGU7CiAKICNpZmRlZiBUUkFDRQotICAgIHZhX3N0YXJ0KGFyZ3AsIGZtdCk7CisgICAgdmFfbGlzdCBhcmdxOworICAgIHZhX3N0YXJ0KGFyZ3EsIGZtdCk7CiAgICAgVCgoVF9DQUxMRUQoInByaW50dyglcyVzKSIpLAotICAgICAgIF9uY192aXNidWYoZm10KSwgX25jX3ZhcmFyZ3MoZm10LCBhcmdwKSkpOwotICAgIHZhX2VuZChhcmdwKTsKKyAgICAgICBfbmNfdmlzYnVmKGZtdCksIF9uY192YXJhcmdzKGZtdCwgYXJncSkpKTsKKyAgICB2YV9lbmQoYXJncSk7CiAjZW5kaWYKIAogICAgIHZhX3N0YXJ0KGFyZ3AsIGZtdCk7CkBAIC02OCwxMCArNjksMTEgQEAKICAgICBpbnQgY29kZTsKIAogI2lmZGVmIFRSQUNFCi0gICAgdmFfc3RhcnQoYXJncCwgZm10KTsKKyAgICB2YV9saXN0IGFyZ3E7CisgICAgdmFfc3RhcnQoYXJncSwgZm10KTsKICAgICBUKChUX0NBTExFRCgid3ByaW50dyglcCwlcyVzKSIpLAotICAgICAgIHdpbiwgX25jX3Zpc2J1ZihmbXQpLCBfbmNfdmFyYXJncyhmbXQsIGFyZ3ApKSk7Ci0gICAgdmFfZW5kKGFyZ3ApOworICAgICAgICh2b2lkICopIHdpbiwgX25jX3Zpc2J1ZihmbXQpLCBfbmNfdmFyYXJncyhmbXQsIGFyZ3EpKSk7CisgICAgdmFfZW5kKGFyZ3EpOwogI2VuZGlmCiAKICAgICB2YV9zdGFydChhcmdwLCBmbXQpOwpAQCAtODgsMTAgKzkwLDExIEBACiAgICAgaW50IGNvZGU7CiAKICNpZmRlZiBUUkFDRQotICAgIHZhX3N0YXJ0KGFyZ3AsIGZtdCk7CisgICAgdmFfbGlzdCBhcmdxOworICAgIHZhX3N0YXJ0KGFyZ3EsIGZtdCk7CiAgICAgVCgoVF9DQUxMRUQoIm12cHJpbnR3KCVkLCVkLCVzJXMpIiksCi0gICAgICAgeSwgeCwgX25jX3Zpc2J1ZihmbXQpLCBfbmNfdmFyYXJncyhmbXQsIGFyZ3ApKSk7Ci0gICAgdmFfZW5kKGFyZ3ApOworICAgICAgIHksIHgsIF9uY192aXNidWYoZm10KSwgX25jX3ZhcmFyZ3MoZm10LCBhcmdxKSkpOworICAgIHZhX2VuZChhcmdxKTsKICNlbmRpZgogCiAgICAgaWYgKChjb2RlID0gbW92ZSh5LCB4KSkgIT0gRVJSKSB7CkBAIC0xMDksMTAgKzExMiwxMSBAQAogICAgIGludCBjb2RlOwogCiAjaWZkZWYgVFJBQ0UKLSAgICB2YV9zdGFydChhcmdwLCBmbXQpOworICAgIHZhX2xpc3QgYXJncTsKKyAgICB2YV9zdGFydChhcmdxLCBmbXQpOwogICAgIFQoKFRfQ0FMTEVEKCJtdndwcmludHcoJWQsJWQsJXAsJXMlcykiKSwKLSAgICAgICB5LCB4LCB3aW4sIF9uY192aXNidWYoZm10KSwgX25jX3ZhcmFyZ3MoZm10LCBhcmdwKSkpOwotICAgIHZhX2VuZChhcmdwKTsKKyAgICAgICB5LCB4LCAodm9pZCAqKSB3aW4sIF9uY192aXNidWYoZm10KSwgX25jX3ZhcmFyZ3MoZm10LCBhcmdxKSkpOworICAgIHZhX2VuZChhcmdxKTsKICNlbmRpZgogCiAgICAgaWYgKChjb2RlID0gd21vdmUod2luLCB5LCB4KSkgIT0gRVJSKSB7CkBAIC0xMjgsMTAgKzEzMiwxNCBAQAogewogICAgIGNoYXIgKmJ1ZjsKICAgICBpbnQgY29kZSA9IEVSUjsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgogCi0gICAgVCgoVF9DQUxMRUQoInZ3cHJpbnR3KCVwLCVzLHZhX2xpc3QpIiksIHdpbiwgX25jX3Zpc2J1ZihmbXQpKSk7CisgICAgVCgoVF9DQUxMRUQoInZ3cHJpbnR3KCVwLCVzLHZhX2xpc3QpIiksICh2b2lkICopIHdpbiwgX25jX3Zpc2J1ZihmbXQpKSk7CiAKLSAgICBpZiAoKGJ1ZiA9IF9uY19wcmludGZfc3RyaW5nKGZtdCwgYXJncCkpICE9IDApIHsKKyAgICBidWYgPSBOQ1VSU0VTX1NQX05BTUUoX25jX3ByaW50Zl9zdHJpbmcpIChOQ1VSU0VTX1NQX0FSR3ggZm10LCBhcmdwKTsKKyAgICBpZiAoYnVmICE9IDApIHsKIAljb2RlID0gd2FkZHN0cih3aW4sIGJ1Zik7CiAgICAgfQogICAgIHJldHVybkNvZGUoY29kZSk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3JlZHJhd2xuLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX3JlZHJhd2xuLmMKaW5kZXggNmIwOTA1Zi4uNzI5MDVmOCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9yZWRyYXdsbi5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfcmVkcmF3bG4uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfcmVkcmF3bG4uYyx2IDEuMTIgMjAwNy8xMC8xMyAyMDowODo1NiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9yZWRyYXdsbi5jLHYgMS4xNyAyMDEwLzEyLzE5IDAwOjAzOjIzIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdyZWRyYXdsbihXSU5ET1cgKndpbiwgaW50IGJlZywgaW50IG51bSkKQEAgLTQ3LDM3ICs0Nyw0MCBAQAogICAgIGludCBpOwogICAgIGludCBlbmQ7CiAgICAgc2l6ZV90IGxlbjsKKyAgICBTQ1JFRU4gKnNwOwogCi0gICAgVCgoVF9DQUxMRUQoIndyZWRyYXdsbiglcCwlZCwlZCkiKSwgd2luLCBiZWcsIG51bSkpOworICAgIFQoKFRfQ0FMTEVEKCJ3cmVkcmF3bG4oJXAsJWQsJWQpIiksICh2b2lkICopIHdpbiwgYmVnLCBudW0pKTsKIAogICAgIGlmICh3aW4gPT0gMCkKIAlyZXR1cm5Db2RlKEVSUik7CiAKKyAgICBzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKwogICAgIGlmIChiZWcgPCAwKQogCWJlZyA9IDA7CiAKICAgICBpZiAodG91Y2hsaW5lKHdpbiwgYmVnLCBudW0pID09IEVSUikKIAlyZXR1cm5Db2RlKEVSUik7CiAKLSAgICBpZiAodG91Y2hsaW5lKGN1cnNjciwgYmVnICsgd2luLT5fYmVneSwgbnVtKSA9PSBFUlIpCisgICAgaWYgKHRvdWNobGluZShDdXJTY3JlZW4oc3ApLCBiZWcgKyB3aW4tPl9iZWd5LCBudW0pID09IEVSUikKIAlyZXR1cm5Db2RlKEVSUik7CiAKICAgICBlbmQgPSBiZWcgKyBudW07Ci0gICAgaWYgKGVuZCA+IGN1cnNjci0+X21heHkgKyAxKQotCWVuZCA9IGN1cnNjci0+X21heHkgKyAxOworICAgIGlmIChlbmQgPiBDdXJTY3JlZW4oc3ApLT5fbWF4eSArIDEgLSB3aW4tPl9iZWd5KQorCWVuZCA9IEN1clNjcmVlbihzcCktPl9tYXh5ICsgMSAtIHdpbi0+X2JlZ3k7CiAgICAgaWYgKGVuZCA+IHdpbi0+X21heHkgKyAxKQogCWVuZCA9IHdpbi0+X21heHkgKyAxOwogCi0gICAgbGVuID0gKHdpbi0+X21heHggKyAxKTsKLSAgICBpZiAobGVuID4gKHNpemVfdCkgKGN1cnNjci0+X21heHggKyAxKSkKLQlsZW4gPSAoc2l6ZV90KSAoY3Vyc2NyLT5fbWF4eCArIDEpOwotICAgIGxlbiAqPSBzaXplb2YoY3Vyc2NyLT5fbGluZVswXS50ZXh0WzBdKTsKKyAgICBsZW4gPSAoc2l6ZV90KSAod2luLT5fbWF4eCArIDEpOworICAgIGlmIChsZW4gPiAoc2l6ZV90KSAoQ3VyU2NyZWVuKHNwKS0+X21heHggKyAxIC0gd2luLT5fYmVneCkpCisJbGVuID0gKHNpemVfdCkgKEN1clNjcmVlbihzcCktPl9tYXh4ICsgMSAtIHdpbi0+X2JlZ3gpOworICAgIGxlbiAqPSBzaXplb2YoQ3VyU2NyZWVuKHNwKS0+X2xpbmVbMF0udGV4dFswXSk7CiAKICAgICBmb3IgKGkgPSBiZWc7IGkgPCBlbmQ7IGkrKykgewogCWludCBjcm93ID0gaSArIHdpbi0+X2JlZ3k7CiAKLQltZW1zZXQoY3Vyc2NyLT5fbGluZVtjcm93XS50ZXh0ICsgd2luLT5fYmVneCwgMCwgbGVuKTsKLQlfbmNfbWFrZV9vbGRoYXNoKGNyb3cpOworCW1lbXNldChDdXJTY3JlZW4oc3ApLT5fbGluZVtjcm93XS50ZXh0ICsgd2luLT5fYmVneCwgMCwgbGVuKTsKKwlOQ1VSU0VTX1NQX05BTUUoX25jX21ha2Vfb2xkaGFzaCkgKE5DVVJTRVNfU1BfQVJHeCBjcm93KTsKICAgICB9CiAKICAgICByZXR1cm5Db2RlKE9LKTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfcmVmcmVzaC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9yZWZyZXNoLmMKaW5kZXggMmE5Y2FmYi4uYTc3YmM0OCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9yZWZyZXNoLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9yZWZyZXNoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MSwyNCArNDIsMjcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfcmVmcmVzaC5jLHYgMS40MSAyMDA3LzA5LzI5IDIwOjM5OjM0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3JlZnJlc2guYyx2IDEuNDUgMjAxMS8wNi8yNSAxOTowMjoyMiBWYXNzaWxpLkNvdXJ6YWtpcyBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdyZWZyZXNoKFdJTkRPVyAqd2luKQogewogICAgIGludCBjb2RlOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBTQ1JFRU4gKlNQX1BBUk0gPSBfbmNfc2NyZWVuX29mKHdpbik7CisjZW5kaWYKIAotICAgIFQoKFRfQ0FMTEVEKCJ3cmVmcmVzaCglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoIndyZWZyZXNoKCVwKSIpLCAodm9pZCAqKSB3aW4pKTsKIAogICAgIGlmICh3aW4gPT0gMCkgewogCWNvZGUgPSBFUlI7Ci0gICAgfSBlbHNlIGlmICh3aW4gPT0gY3Vyc2NyKSB7Ci0JY3Vyc2NyLT5fY2xlYXIgPSBUUlVFOwotCWNvZGUgPSBkb3VwZGF0ZSgpOworICAgIH0gZWxzZSBpZiAod2luID09IEN1clNjcmVlbihTUF9QQVJNKSkgeworCUN1clNjcmVlbihTUF9QQVJNKS0+X2NsZWFyID0gVFJVRTsKKwljb2RlID0gTkNVUlNFU19TUF9OQU1FKGRvdXBkYXRlKSAoTkNVUlNFU19TUF9BUkcpOwogICAgIH0gZWxzZSBpZiAoKGNvZGUgPSB3bm91dHJlZnJlc2god2luKSkgPT0gT0spIHsKIAlpZiAod2luLT5fY2xlYXIpCi0JICAgIG5ld3Njci0+X2NsZWFyID0gVFJVRTsKLQljb2RlID0gZG91cGRhdGUoKTsKKwkgICAgTmV3U2NyZWVuKFNQX1BBUk0pLT5fY2xlYXIgPSBUUlVFOworCWNvZGUgPSBOQ1VSU0VTX1NQX05BTUUoZG91cGRhdGUpIChOQ1VSU0VTX1NQX0FSRyk7CiAJLyoKIAkgKiBSZXNldCB0aGUgY2xlYXJvaygpIGZsYWcgaW4gY2FzZSBpdCB3YXMgc2V0IGZvciB0aGUgc3BlY2lhbAogCSAqIGNhc2UgaW4gaGFyZHNjcm9sbC5jIChpZiB3ZSBkb24ndCByZXNldCBpdCBoZXJlLCB3ZSdsbCBnZXQgMgpAQCAtNzMsMjIgKzc3LDE5IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3bm91dHJlZnJlc2goV0lORE9XICp3aW4pCiB7Ci0gICAgTkNVUlNFU19TSVpFX1QgbGltaXRfeDsKLSAgICBOQ1VSU0VTX1NJWkVfVCBzcmNfcm93LCBzcmNfY29sOwotICAgIE5DVVJTRVNfU0laRV9UIGJlZ3g7Ci0gICAgTkNVUlNFU19TSVpFX1QgYmVneTsKLSAgICBOQ1VSU0VTX1NJWkVfVCBkc3Rfcm93LCBkc3RfY29sOworICAgIGludCBsaW1pdF94OworICAgIGludCBzcmNfcm93LCBzcmNfY29sOworICAgIGludCBiZWd4OworICAgIGludCBiZWd5OworICAgIGludCBkc3Rfcm93LCBkc3RfY29sOwogI2lmIFVTRV9TQ1JPTExfSElOVFMKICAgICBib29sIHdpZGU7CiAjZW5kaWYKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgU0NSRUVOICpTUF9QQVJNID0gX25jX3NjcmVlbl9vZih3aW4pOworI2VuZGlmCiAKLSAgICBUKChUX0NBTExFRCgid25vdXRyZWZyZXNoKCVwKSIpLCB3aW4pKTsKLSNpZmRlZiBUUkFDRQotICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX1VQREFURSkpIHsKLQlfdHJhY2VkdW1wKCIuLi53aW4iLCB3aW4pOwotCV9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7Ci0gICAgfQotI2VuZGlmIC8qIFRSQUNFICovCisgICAgVCgoVF9DQUxMRUQoIndub3V0cmVmcmVzaCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICAvKgogICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBicmVhayBiYWRseSBpZiB3ZSB0cnkgdG8gcmVmcmVzaCBhIHBhZC4KQEAgLTk3LDEyICs5OCwxOSBAQAogCXx8ICh3aW4tPl9mbGFncyAmIF9JU1BBRCkpCiAJcmV0dXJuQ29kZShFUlIpOwogCisjaWZkZWYgVFJBQ0UKKyAgICBpZiAoVVNFX1RSQUNFRihUUkFDRV9VUERBVEUpKSB7CisJX3RyYWNlZHVtcCgiLi4ud2luIiwgd2luKTsKKwlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOworICAgIH0KKyNlbmRpZiAvKiBUUkFDRSAqLworCiAgICAgLyogcHV0IHRoZW0gaGVyZSBzbyAid2luID09IDAiIHdvbid0IGJyZWFrIG91ciBjb2RlICovCiAgICAgYmVneCA9IHdpbi0+X2JlZ3g7CiAgICAgYmVneSA9IHdpbi0+X2JlZ3k7CiAKLSAgICBuZXdzY3ItPl9uY19ia2dkID0gd2luLT5fbmNfYmtnZDsKLSAgICBXSU5ET1dfQVRUUlMobmV3c2NyKSA9IFdJTkRPV19BVFRSUyh3aW4pOworICAgIE5ld1NjcmVlbihTUF9QQVJNKS0+X25jX2JrZ2QgPSB3aW4tPl9uY19ia2dkOworICAgIFdJTkRPV19BVFRSUyhOZXdTY3JlZW4oU1BfUEFSTSkpID0gV0lORE9XX0FUVFJTKHdpbik7CiAKICAgICAvKiBtZXJnZSBpbiBjaGFuZ2UgaW5mb3JtYXRpb24gZnJvbSBhbGwgc3Vid2luZG93cyBvZiB0aGlzIHdpbmRvdyAqLwogICAgIHdzeW5jZG93bih3aW4pOwpAQCAtMTIyLDcgKzEzMCw3IEBACiAgICAgICogd2luZG93cykuICBOb3RlIHRoYXQgY2hhbmdpbmcgdGhpcyBmb3JtdWxhIHdpbGwgbm90IGJyZWFrIGFueSBjb2RlLAogICAgICAqIG1lcmVseSBjaGFuZ2UgdGhlIGNvc3RzIG9mIHZhcmlvdXMgdXBkYXRlIGNhc2VzLgogICAgICAqLwotICAgIHdpZGUgPSAoYmVneCA8PSAxICYmIHdpbi0+X21heHggPj0gKG5ld3Njci0+X21heHggLSAxKSk7CisgICAgd2lkZSA9IChiZWd4IDw9IDEgJiYgd2luLT5fbWF4eCA+PSAoTmV3U2NyZWVuKFNQX1BBUk0pLT5fbWF4eCAtIDEpKTsKICNlbmRpZgogCiAgICAgd2luLT5fZmxhZ3MgJj0gfl9IQVNNT1ZFRDsKQEAgLTEzNywxNCArMTQ1LDE0IEBACiAgICAgLyogbGltaXQoZHN0X2NvbCkgKi8KICAgICBsaW1pdF94ID0gd2luLT5fbWF4eDsKICAgICAvKiBsaW1pdChzcmNfY29sKSAqLwotICAgIGlmIChsaW1pdF94ID4gbmV3c2NyLT5fbWF4eCAtIGJlZ3gpCi0JbGltaXRfeCA9IG5ld3Njci0+X21heHggLSBiZWd4OworICAgIGlmIChsaW1pdF94ID4gTmV3U2NyZWVuKFNQX1BBUk0pLT5fbWF4eCAtIGJlZ3gpCisJbGltaXRfeCA9IE5ld1NjcmVlbihTUF9QQVJNKS0+X21heHggLSBiZWd4OwogCiAgICAgZm9yIChzcmNfcm93ID0gMCwgZHN0X3JvdyA9IGJlZ3kgKyB3aW4tPl95b2Zmc2V0OwotCSBzcmNfcm93IDw9IHdpbi0+X21heHkgJiYgZHN0X3JvdyA8PSBuZXdzY3ItPl9tYXh5OworCSBzcmNfcm93IDw9IHdpbi0+X21heHkgJiYgZHN0X3JvdyA8PSBOZXdTY3JlZW4oU1BfUEFSTSktPl9tYXh5OwogCSBzcmNfcm93KyssIGRzdF9yb3crKykgewotCXJlZ2lzdGVyIHN0cnVjdCBsZGF0ICpubGluZSA9ICZuZXdzY3ItPl9saW5lW2RzdF9yb3ddOwotCXJlZ2lzdGVyIHN0cnVjdCBsZGF0ICpvbGluZSA9ICZ3aW4tPl9saW5lW3NyY19yb3ddOworCXN0cnVjdCBsZGF0ICpubGluZSA9ICYoTmV3U2NyZWVuKFNQX1BBUk0pLT5fbGluZVtkc3Rfcm93XSk7CisJc3RydWN0IGxkYXQgKm9saW5lID0gJndpbi0+X2xpbmVbc3JjX3Jvd107CiAKIAlpZiAob2xpbmUtPmZpcnN0Y2hhciAhPSBfTk9DSEFOR0UpIHsKIAkgICAgaW50IGxhc3Rfc3JjID0gb2xpbmUtPmxhc3RjaGFyOwpAQCAtMTU2LDcgKzE2NCw3IEBACiAJICAgIGRzdF9jb2wgPSBzcmNfY29sICsgYmVneDsKIAogCSAgICBpZl9XSURFQyh7Ci0JCXJlZ2lzdGVyIGludCBqOworCQlpbnQgajsKIAogCQkvKgogCQkgKiBFbnN1cmUgdGhhdCB3ZSB3aWxsIGNvcHkgY29tcGxldGUgbXVsdGktY29sdW1uIGNoYXJhY3RlcnMKQEAgLTE5Nyw3ICsyMDUsNyBAQAogCQkJCSAgICAgICA6IHdpbi0+X21heHgpOwogCQlpbnQgZml4X2xlZnQgPSBkc3RfY29sOwogCQlpbnQgZml4X3JpZ2h0ID0gbGFzdF9kc3Q7Ci0JCXJlZ2lzdGVyIGludCBqOworCQlpbnQgajsKIAogCQkvKgogCQkgKiBDaGVjayBmb3IgYm91bmRhcnkgY2FzZXMgd2hlcmUgd2UgbWF5IG92ZXJ3cml0ZSBwYXJ0IG9mIGEKQEAgLTIyNSw3ICsyMzMsOCBAQAogCQkgICAgICogdGhpcyBjaGFyYWN0ZXIuICBGaW5kIHRoZSBlbmQgb2YgdGhlIGNoYXJhY3Rlci4KIAkJICAgICAqLwogCQkgICAgKytqOwotCQkgICAgd2hpbGUgKGogPD0gbmV3c2NyLT5fbWF4eCAmJiBpc1dpZGVjRXh0KG5saW5lLT50ZXh0W2pdKSkgeworCQkgICAgd2hpbGUgKGogPD0gTmV3U2NyZWVuKFNQX1BBUk0pLT5fbWF4eCAmJgorCQkJICAgaXNXaWRlY0V4dChubGluZS0+dGV4dFtqXSkpIHsKIAkJCWZpeF9yaWdodCA9IGorKzsKIAkJICAgIH0KIAkJfQpAQCAtMjY5LDE4ICsyNzgsMTkgQEAKIAogICAgIGlmICh3aW4tPl9jbGVhcikgewogCXdpbi0+X2NsZWFyID0gRkFMU0U7Ci0JbmV3c2NyLT5fY2xlYXIgPSBUUlVFOworCU5ld1NjcmVlbihTUF9QQVJNKS0+X2NsZWFyID0gVFJVRTsKICAgICB9CiAKICAgICBpZiAoIXdpbi0+X2xlYXZlb2spIHsKLQluZXdzY3ItPl9jdXJ5ID0gd2luLT5fY3VyeSArIHdpbi0+X2JlZ3kgKyB3aW4tPl95b2Zmc2V0OwotCW5ld3Njci0+X2N1cnggPSB3aW4tPl9jdXJ4ICsgd2luLT5fYmVneDsKKwlOZXdTY3JlZW4oU1BfUEFSTSktPl9jdXJ5ID0gKE5DVVJTRVNfU0laRV9UKSAod2luLT5fY3VyeSArCisJCQkJCQkgICAgICB3aW4tPl9iZWd5ICsgd2luLT5feW9mZnNldCk7CisJTmV3U2NyZWVuKFNQX1BBUk0pLT5fY3VyeCA9IChOQ1VSU0VTX1NJWkVfVCkgKHdpbi0+X2N1cnggKyB3aW4tPl9iZWd4KTsKICAgICB9Ci0gICAgbmV3c2NyLT5fbGVhdmVvayA9IHdpbi0+X2xlYXZlb2s7CisgICAgTmV3U2NyZWVuKFNQX1BBUk0pLT5fbGVhdmVvayA9IHdpbi0+X2xlYXZlb2s7CiAKICNpZmRlZiBUUkFDRQogICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX1VQREFURSkpIHsKLQlfdHJhY2VkdW1wKCJuZXdzY3IiLCBuZXdzY3IpOworCV90cmFjZWR1bXAoIm5ld3NjciIsIE5ld1NjcmVlbihTUF9QQVJNKSk7CiAJX25jX3VubG9ja19nbG9iYWwodHJhY2VmKTsKICAgICB9CiAjZW5kaWYgLyogVFJBQ0UgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfcmVzdGFydC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9yZXN0YXJ0LmMKaW5kZXggZGE3NzBkNC4uNWJmYjA3OCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9yZXN0YXJ0LmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9yZXN0YXJ0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOCAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MCw1MyArNDEsNjMgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLSNpZiBTVlI0X1RFUk1JTyAmJiAhZGVmaW5lZChfUE9TSVhfU09VUkNFKQotI2RlZmluZSBfUE9TSVhfU09VUkNFCi0jZW5kaWYKLQotI2luY2x1ZGUgPHRlcm0uaD4JCS8qIGxpbmVzLCBjb2x1bW5zLCBjdXJfdGVybSAqLwotCi1NT0RVTEVfSUQoIiRJZDogbGliX3Jlc3RhcnQuYyx2IDEuMTAgMjAwOC8wNi8yMSAxNzozMToyMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9yZXN0YXJ0LmMsdiAxLjE2IDIwMTUvMDYvMjcgMTg6MTI6MTUgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotcmVzdGFydHRlcm0oTkNVUlNFU19DT05TVCBjaGFyICp0ZXJtcCwgaW50IGZpbGVudW0sIGludCAqZXJycmV0KQorTkNVUlNFU19TUF9OQU1FKHJlc3RhcnR0ZXJtKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKnRlcm1wLAorCQkJICAgICAgaW50IGZpbGVudW0sCisJCQkgICAgICBpbnQgKmVycnJldCkKIHsKICAgICBpbnQgcmVzdWx0OworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIFRFUk1JTkFMICpuZXdfdGVybSA9IDA7CisjZW5kaWYKIAotICAgIFQoKFRfQ0FMTEVEKCJyZXN0YXJ0dGVybSglcywlZCwlcCkiKSwgdGVybXAsIGZpbGVudW0sIGVycnJldCkpOworICAgIFNUQVJUX1RSQUNFKCk7CisgICAgVCgoVF9DQUxMRUQoInJlc3RhcnR0ZXJtKCVwLCVzLCVkLCVwKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sCisgICAgICAgdGVybXAsCisgICAgICAgZmlsZW51bSwKKyAgICAgICAodm9pZCAqKSBlcnJyZXQpKTsKIAotICAgIGlmIChzZXR1cHRlcm0odGVybXAsIGZpbGVudW0sIGVycnJldCkgIT0gT0spIHsKKyAgICBpZiAoVElORk9fU0VUVVBfVEVSTSgmbmV3X3Rlcm0sIHRlcm1wLCBmaWxlbnVtLCBlcnJyZXQsIEZBTFNFKSAhPSBPSykgewogCXJlc3VsdCA9IEVSUjsKLSAgICB9IGVsc2UgaWYgKFNQICE9IDApIHsKLQlpbnQgc2F2ZWVjaG8gPSBTUC0+X2VjaG87Ci0JaW50IHNhdmVjYnJlYWsgPSBTUC0+X2NicmVhazsKLQlpbnQgc2F2ZXJhdyA9IFNQLT5fcmF3OwotCWludCBzYXZlbmwgPSBTUC0+X25sOworICAgIH0gZWxzZSBpZiAoU1BfUEFSTSAhPSAwKSB7CisJaW50IHNhdmVlY2hvID0gU1BfUEFSTS0+X2VjaG87CisJaW50IHNhdmVjYnJlYWsgPSBTUF9QQVJNLT5fY2JyZWFrOworCWludCBzYXZlcmF3ID0gU1BfUEFSTS0+X3JhdzsKKwlpbnQgc2F2ZW5sID0gU1BfUEFSTS0+X25sOwogCi0JaWYgKHNhdmVlY2hvKQotCSAgICBlY2hvKCk7Ci0JZWxzZQotCSAgICBub2VjaG8oKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlTUF9QQVJNLT5fdGVybSA9IG5ld190ZXJtOworI2VuZGlmCisJaWYgKHNhdmVlY2hvKSB7CisJICAgIE5DVVJTRVNfU1BfTkFNRShlY2hvKSAoTkNVUlNFU19TUF9BUkcpOworCX0gZWxzZSB7CisJICAgIE5DVVJTRVNfU1BfTkFNRShub2VjaG8pIChOQ1VSU0VTX1NQX0FSRyk7CisJfQogCiAJaWYgKHNhdmVjYnJlYWspIHsKLQkgICAgY2JyZWFrKCk7Ci0JICAgIG5vcmF3KCk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShjYnJlYWspIChOQ1VSU0VTX1NQX0FSRyk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShub3JhdykgKE5DVVJTRVNfU1BfQVJHKTsKIAl9IGVsc2UgaWYgKHNhdmVyYXcpIHsKLQkgICAgbm9jYnJlYWsoKTsKLQkgICAgcmF3KCk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShub2NicmVhaykgKE5DVVJTRVNfU1BfQVJHKTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKHJhdykgKE5DVVJTRVNfU1BfQVJHKTsKIAl9IGVsc2UgewotCSAgICBub2NicmVhaygpOwotCSAgICBub3JhdygpOworCSAgICBOQ1VSU0VTX1NQX05BTUUobm9jYnJlYWspIChOQ1VSU0VTX1NQX0FSRyk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShub3JhdykgKE5DVVJTRVNfU1BfQVJHKTsKIAl9Ci0JaWYgKHNhdmVubCkKLQkgICAgbmwoKTsKLQllbHNlCi0JICAgIG5vbmwoKTsKKwlpZiAoc2F2ZW5sKSB7CisJICAgIE5DVVJTRVNfU1BfTkFNRShubCkgKE5DVVJTRVNfU1BfQVJHKTsKKwl9IGVsc2UgeworCSAgICBOQ1VSU0VTX1NQX05BTUUobm9ubCkgKE5DVVJTRVNfU1BfQVJHKTsKKwl9CiAKLQlyZXNldF9wcm9nX21vZGUoKTsKKwlOQ1VSU0VTX1NQX05BTUUocmVzZXRfcHJvZ19tb2RlKSAoTkNVUlNFU19TUF9BUkcpOwogCiAjaWYgVVNFX1NJWkVDSEFOR0UKLQlfbmNfdXBkYXRlX3NjcmVlbnNpemUoU1ApOworCV9uY191cGRhdGVfc2NyZWVuc2l6ZShTUF9QQVJNKTsKICNlbmRpZgogCiAJcmVzdWx0ID0gT0s7CkBAIC05NSwzICsxMDYsMTIgQEAKICAgICB9CiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorcmVzdGFydHRlcm0oTkNVUlNFU19DT05TVCBjaGFyICp0ZXJtcCwgaW50IGZpbGVudW0sIGludCAqZXJycmV0KQoreworICAgIFNUQVJUX1RSQUNFKCk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShyZXN0YXJ0dGVybSkgKENVUlJFTlRfU0NSRUVOLCB0ZXJtcCwgZmlsZW51bSwgZXJycmV0KTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zY2Fudy5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zY2Fudy5jCmluZGV4IGI4YTVhMjIuLjYzN2FhNDYgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2NhbncuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3NjYW53LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAsMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxNCArNDAsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2NhbncuYyx2IDEuMTEgMjAwMS8wNi8zMCAyMzozOTo0MSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zY2Fudy5jLHYgMS4xMyAyMDExLzEwLzIyIDE2OjMxOjM1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHZ3c2NhbncoV0lORE9XICp3aW4sIE5DVVJTRVNfQ09OU1QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3ApCiB7CiAgICAgY2hhciBidWZbQlVGU0laXTsKIAotICAgIGlmICh3Z2V0bnN0cih3aW4sIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKSA9PSBFUlIpCisgICAgaWYgKHdnZXRuc3RyKHdpbiwgYnVmLCAoaW50KSBzaXplb2YoYnVmKSAtIDEpID09IEVSUikKIAlyZXR1cm4gKEVSUik7CiAKICAgICByZXR1cm4gKHZzc2NhbmYoYnVmLCBmbXQsIGFyZ3ApKTsKQEAgLTczLDcgKzczLDcgQEAKICAgICBpbnQgY29kZTsKICAgICB2YV9saXN0IGFwOwogCi0gICAgVCgoIndzY2FudyglcCxcIiVzXCIsLi4uKSBjYWxsZWQiLCB3aW4sIGZtdCkpOworICAgIFQoKCJ3c2NhbncoJXAsXCIlc1wiLC4uLikgY2FsbGVkIiwgKHZvaWQgKikgd2luLCBmbXQpKTsKIAogICAgIHZhX3N0YXJ0KGFwLCBmbXQpOwogICAgIGNvZGUgPSB2d3NjYW53KHdpbiwgZm10LCBhcCk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3NjcmVlbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zY3JlZW4uYwppbmRleCA0YWE1OGVhLi5hMDNjZWVjIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3NjcmVlbi5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2NyZWVuLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCwzNSArMzAsNTE0IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2IG9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3NjcmVlbi5jLHYgMS4zMSAyMDA4LzA4LzE2IDE5OjA1OjM3IHRvbSBFeHAgJCIpCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKKworTU9EVUxFX0lEKCIkSWQ6IGxpYl9zY3JlZW4uYyx2IDEuNzcgMjAxNS8wNy8wNCAyMjo1NDoxNCB0b20gRXhwICQiKQogCiAjZGVmaW5lIE1BWF9TSVpFIDB4M2ZmZgkJLyogMTZrIGlzIGJpZyBlbm91Z2ggZm9yIGEgd2luZG93IG9yIHBhZCAqLwogCisjZGVmaW5lIE1BUktFUiAnXFwnCisjZGVmaW5lIEFQUEVORCAnKycKKyNkZWZpbmUgR1VUVEVSICd8JworI2RlZmluZSBMX0NVUkwgJ3snCisjZGVmaW5lIFJfQ1VSTCAnfScKKworLyoKKyAqIFVzZSAweDg4ODggYXMgdGhlIG1hZ2ljIG51bWJlciBmb3IgbmV3LWZvcm1hdCBmaWxlcywgc2luY2UgaXQgY2Fubm90IGJlCisgKiBtaXN0YWtlbiBmb3IgdGhlIF9jdXJ5L19jdXJ4IHBhaXIgb2YgMTYtYml0IG51bWJlcnMgd2hpY2ggc3RhcnQgdGhlIG9sZAorICogZm9ybWF0LiAgSXQgaGFwcGVucyB0byBiZSB1bnVzZWQgaW4gdGhlIGZpbGUgNS4yMiBkYXRhYmFzZSAoMjAxNS8wMy8wNykuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyIG15X21hZ2ljW10gPQoreydcMjEwJywgJ1wyMTAnLCAnXDIxMCcsICdcMjEwJ307CisKKyNpZiBOQ1VSU0VTX0VYVF9QVVRXSU4KK3R5cGVkZWYgZW51bSB7CisgICAgcElOVAkJCS8qIGludCAqLworICAgICxwU0hPUlQJCQkvKiBzaG9ydCAqLworICAgICxwQk9PTAkJCS8qIGJvb2wgKi8KKyAgICAscEFUVFIJCQkvKiBhdHRyX3QgKi8KKyAgICAscENIQVIJCQkvKiBjaHR5cGUgKi8KKyAgICAscFNJWkUJCQkvKiBOQ1VSU0VTX1NJWkVfVCAqLworI2lmIE5DVVJTRVNfV0lERUNIQVIKKyAgICAscENDSEFSCQkJLyogY2NoYXJfdCAqLworI2VuZGlmCit9IFBBUkFNX1RZUEU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyIG5hbWVbMTFdOworICAgIGF0dHJfdCBhdHRyOworfSBTQ1JfQVRUUlM7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyIG5hbWVbMTddOworICAgIFBBUkFNX1RZUEUgdHlwZTsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzaXplX3Qgb2Zmc2V0OworfSBTQ1JfUEFSQU1TOworCisjZGVmaW5lIERBVEEobmFtZSkgeyB7ICNuYW1lIH0sIEFfIyNuYW1lIH0KK3N0YXRpYyBjb25zdCBTQ1JfQVRUUlMgc2NyX2F0dHJzW10gPQoreworICAgIERBVEEoTk9STUFMKSwKKyAgICBEQVRBKFNUQU5ET1VUKSwKKyAgICBEQVRBKFVOREVSTElORSksCisgICAgREFUQShSRVZFUlNFKSwKKyAgICBEQVRBKEJMSU5LKSwKKyAgICBEQVRBKERJTSksCisgICAgREFUQShCT0xEKSwKKyAgICBEQVRBKEFMVENIQVJTRVQpLAorICAgIERBVEEoSU5WSVMpLAorICAgIERBVEEoUFJPVEVDVCksCisgICAgREFUQShIT1JJWk9OVEFMKSwKKyAgICBEQVRBKExFRlQpLAorICAgIERBVEEoTE9XKSwKKyAgICBEQVRBKFJJR0hUKSwKKyAgICBEQVRBKFRPUCksCisgICAgREFUQShWRVJUSUNBTCksCisKKyNpZmRlZiBBX0lUQUxJQworICAgIERBVEEoSVRBTElDKSwKKyNlbmRpZgorfTsKKyN1bmRlZiBEQVRBCisKKyNkZWZpbmUgc2l6ZW9mMih0eXBlLG5hbWUpIHNpemVvZigoKHR5cGUgKikwKS0+bmFtZSkKKyNkZWZpbmUgREFUQShuYW1lLCB0eXBlKSB7IHsgI25hbWUgfSwgdHlwZSwgc2l6ZW9mMihXSU5ET1csIG5hbWUpLCBvZmZzZXRvZihXSU5ET1csIG5hbWUpIH0KKworc3RhdGljIGNvbnN0IFNDUl9QQVJBTVMgc2NyX3BhcmFtc1tdID0KK3sKKyAgICBEQVRBKF9jdXJ5LCBwU0laRSksCisgICAgREFUQShfY3VyeCwgcFNJWkUpLAorICAgIERBVEEoX21heHksIHBTSVpFKSwKKyAgICBEQVRBKF9tYXh4LCBwU0laRSksCisgICAgREFUQShfYmVneSwgcFNJWkUpLAorICAgIERBVEEoX2JlZ3gsIHBTSVpFKSwKKyAgICBEQVRBKF9mbGFncywgcFNIT1JUKSwKKyAgICBEQVRBKF9hdHRycywgcEFUVFIpLAorICAgIERBVEEoX2JrZ2QsIHBDSEFSKSwKKyAgICBEQVRBKF9ub3RpbWVvdXQsIHBCT09MKSwKKyAgICBEQVRBKF9jbGVhciwgcEJPT0wpLAorICAgIERBVEEoX2xlYXZlb2ssIHBCT09MKSwKKyAgICBEQVRBKF9zY3JvbGwsIHBCT09MKSwKKyAgICBEQVRBKF9pZGxvaywgcEJPT0wpLAorICAgIERBVEEoX2lkY29rLCBwQk9PTCksCisgICAgREFUQShfaW1tZWQsIHBCT09MKSwKKyAgICBEQVRBKF9zeW5jLCBwQk9PTCksCisgICAgREFUQShfdXNlX2tleXBhZCwgcEJPT0wpLAorICAgIERBVEEoX2RlbGF5LCBwSU5UKSwKKyAgICBEQVRBKF9yZWd0b3AsIHBTSVpFKSwKKyAgICBEQVRBKF9yZWdib3R0b20sIHBTSVpFKSwKKyAgICBEQVRBKF9wYWQuX3BhZF95LCBwU0laRSksCisgICAgREFUQShfcGFkLl9wYWRfeCwgcFNJWkUpLAorICAgIERBVEEoX3BhZC5fcGFkX3RvcCwgcFNJWkUpLAorICAgIERBVEEoX3BhZC5fcGFkX2xlZnQsIHBTSVpFKSwKKyAgICBEQVRBKF9wYWQuX3BhZF9ib3R0b20sIHBTSVpFKSwKKyAgICBEQVRBKF9wYWQuX3BhZF9yaWdodCwgcFNJWkUpLAorICAgIERBVEEoX3lvZmZzZXQsIHBTSVpFKSwKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCisgICAgREFUQShfYmtncm5kLCBwQ0NIQVIpLAorI2lmIE5DVVJTRVNfRVhUX0NPTE9SUworICAgIERBVEEoX2NvbG9yLCBwSU5UKSwKKyNlbmRpZgorI2VuZGlmCit9OworI3VuZGVmIERBVEEKKworc3RhdGljIGNvbnN0IE5DVVJTRVNfQ0hfVCBibGFuayA9IE5ld0NoYXIoQkxBTktfVEVYVCk7CisKKy8qCisgKiBBbGxvY2F0ZSBhbmQgcmVhZCBhIGxpbmUgb2YgdGV4dC4gIENhbGxlciBtdXN0IGZyZWUgaXQuCisgKi8KK3N0YXRpYyBjaGFyICoKK3JlYWRfdHh0KEZJTEUgKmZwKQoreworICAgIHNpemVfdCBsaW1pdCA9IDEwMjQ7CisgICAgc2l6ZV90IHVzZWQgPSAwOworICAgIGNoYXIgKnJlc3VsdCA9IG1hbGxvYyhsaW1pdCk7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisJaW50IGNoID0gMDsKKworCWNsZWFyZXJyKGZwKTsKKwlyZXN1bHRbdXNlZF0gPSAnXDAnOworCWRvIHsKKwkgICAgaWYgKHVzZWQgKyAyID49IGxpbWl0KSB7CisJCWxpbWl0ICs9IDEwMjQ7CisJCWJ1ZmZlciA9IHJlYWxsb2MocmVzdWx0LCBsaW1pdCk7CisJCWlmIChidWZmZXIgPT0gMCkgeworCQkgICAgZnJlZShyZXN1bHQpOworCQkgICAgcmVzdWx0ID0gMDsKKwkJICAgIGJyZWFrOworCQl9CisJCXJlc3VsdCA9IGJ1ZmZlcjsKKwkgICAgfQorCSAgICBjaCA9IGZnZXRjKGZwKTsKKwkgICAgaWYgKGNoID09IEVPRikKKwkJYnJlYWs7CisJICAgIHJlc3VsdFt1c2VkKytdID0gKGNoYXIpIGNoOworCSAgICByZXN1bHRbdXNlZF0gPSAnXDAnOworCX0gd2hpbGUgKGNoICE9ICdcbicpOworCisJaWYgKGNoID09ICdcbicpIHsKKwkgICAgcmVzdWx0Wy0tdXNlZF0gPSAnXDAnOworCSAgICBUKCgiUkVBRDolcyIsIHJlc3VsdCkpOworCX0gZWxzZSBpZiAodXNlZCA9PSAwKSB7CisJICAgIGZyZWUocmVzdWx0KTsKKwkgICAgcmVzdWx0ID0gMDsKKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjaGFyICoKK2RlY29kZV9hdHRyKGNoYXIgKnNvdXJjZSwgYXR0cl90ICp0YXJnZXQsIGludCAqY29sb3IpCit7CisgICAgYm9vbCBmb3VuZCA9IEZBTFNFOworCisgICAgVCgoImRlY29kZV9hdHRyICAgJyVzJyIsIHNvdXJjZSkpOworCisgICAgd2hpbGUgKCpzb3VyY2UpIHsKKwlpZiAoc291cmNlWzBdID09IE1BUktFUiAmJiBzb3VyY2VbMV0gPT0gTF9DVVJMKSB7CisJICAgIHNvdXJjZSArPSAyOworCSAgICBmb3VuZCA9IFRSVUU7CisJfSBlbHNlIGlmIChzb3VyY2VbMF0gPT0gUl9DVVJMKSB7CisJICAgIHNvdXJjZSsrOworCSAgICBmb3VuZCA9IEZBTFNFOworCX0gZWxzZSBpZiAoZm91bmQpIHsKKwkgICAgc2l6ZV90IG47CisJICAgIGNoYXIgKm5leHQgPSBzb3VyY2U7CisKKwkgICAgaWYgKHNvdXJjZVswXSA9PSBHVVRURVIpIHsKKwkJKytuZXh0OworCSAgICB9IGVsc2UgaWYgKCpuZXh0ID09ICdDJykgeworCQlpbnQgdmFsdWUgPSAwOworCQl1bnNpZ25lZCBwYWlyOworCQluZXh0Kys7CisJCXdoaWxlIChpc2RpZ2l0KFVDaGFyKCpuZXh0KSkpIHsKKwkJICAgIHZhbHVlID0gdmFsdWUgKiAxMCArICgqbmV4dCsrIC0gJzAnKTsKKwkJfQorCQkqdGFyZ2V0ICY9IH5BX0NPTE9SOworCQlwYWlyID0gKHVuc2lnbmVkKSAoKHZhbHVlID4gMjU2KQorCQkJCSAgID8gQ09MT1JfUEFJUigyNTUpCisJCQkJICAgOiBDT0xPUl9QQUlSKHZhbHVlKSk7CisJCSp0YXJnZXQgfD0gcGFpcjsKKwkJKmNvbG9yID0gdmFsdWU7CisJICAgIH0gZWxzZSB7CisJCXdoaWxlIChpc2FsbnVtKFVDaGFyKCpuZXh0KSkpIHsKKwkJICAgICsrbmV4dDsKKwkJfQorCQlmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHNjcl9hdHRycyk7ICsrbikgeworCQkgICAgaWYgKChzaXplX3QpIChuZXh0IC0gc291cmNlKSA9PSBzdHJsZW4oc2NyX2F0dHJzW25dLm5hbWUpKSB7CisJCQlpZiAoc2NyX2F0dHJzW25dLmF0dHIpIHsKKwkJCSAgICAqdGFyZ2V0IHw9IHNjcl9hdHRyc1tuXS5hdHRyOworCQkJfSBlbHNlIHsKKwkJCSAgICAqdGFyZ2V0ID0gQV9OT1JNQUw7CisJCQl9CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJICAgIHNvdXJjZSA9IG5leHQ7CisJfSBlbHNlIHsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gc291cmNlOworfQorCitzdGF0aWMgY2hhciAqCitkZWNvZGVfY2hhcihjaGFyICpzb3VyY2UsIGludCAqdGFyZ2V0KQoreworICAgIGludCBsaW1pdCA9IDA7CisgICAgaW50IGJhc2UgPSAxNjsKKyAgICBjb25zdCBjaGFyIGRpZ2l0c1tdID0gIjAxMjM0NTY3ODlhYmNkZWYiOworCisgICAgVCgoImRlY29kZV9jaGFyICAgJyVzJyIsIHNvdXJjZSkpOworICAgICp0YXJnZXQgPSAnICc7CisgICAgc3dpdGNoICgqc291cmNlKSB7CisgICAgY2FzZSBNQVJLRVI6CisJc3dpdGNoICgqKytzb3VyY2UpIHsKKwljYXNlIEFQUEVORDoKKwkgICAgYnJlYWs7CisJY2FzZSBNQVJLRVI6CisJICAgICp0YXJnZXQgPSBNQVJLRVI7CisJICAgICsrc291cmNlOworCSAgICBicmVhazsKKwljYXNlICdzJzoKKwkgICAgKnRhcmdldCA9ICcgJzsKKwkgICAgKytzb3VyY2U7CisJICAgIGJyZWFrOworCWNhc2UgJzAnOgorCWNhc2UgJzEnOgorCWNhc2UgJzInOgorCWNhc2UgJzMnOgorCSAgICBiYXNlID0gODsKKwkgICAgbGltaXQgPSAzOworCSAgICBicmVhazsKKwljYXNlICd1JzoKKwkgICAgbGltaXQgPSA0OworCSAgICArK3NvdXJjZTsKKwkgICAgYnJlYWs7CisJY2FzZSAnVSc6CisJICAgIGxpbWl0ID0gODsKKwkgICAgKytzb3VyY2U7CisJICAgIGJyZWFrOworCX0KKwlpZiAobGltaXQpIHsKKwkgICAgKnRhcmdldCA9IDA7CisJICAgIHdoaWxlIChsaW1pdC0tID4gMCkgeworCQljaGFyICpmaW5kID0gc3RyY2hyKGRpZ2l0cywgKnNvdXJjZSsrKTsKKwkJaW50IGNoID0gKGZpbmQgIT0gMCkgPyAoaW50KSAoZmluZCAtIGRpZ2l0cykgOiAtMTsKKwkJKnRhcmdldCAqPSBiYXNlOworCQlpZiAoY2ggPj0gMCAmJiBjaCA8IGJhc2UpIHsKKwkJICAgICp0YXJnZXQgKz0gY2g7CisJCX0KKwkgICAgfQorCX0KKwlicmVhazsKKyAgICBkZWZhdWx0OgorCSp0YXJnZXQgPSAqc291cmNlKys7CisJYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzb3VyY2U7Cit9CisKK3N0YXRpYyBjaGFyICoKK2RlY29kZV9jaHR5cGUoY2hhciAqc291cmNlLCBjaHR5cGUgZmlsbGluLCBjaHR5cGUgKnRhcmdldCkKK3sKKyAgICBhdHRyX3QgYXR0ciA9IENoQXR0ck9mKGZpbGxpbik7CisgICAgaW50IGNvbG9yID0gUEFJUl9OVU1CRVIoKGludCkgYXR0cik7CisgICAgaW50IHZhbHVlOworCisgICAgVCgoImRlY29kZV9jaHR5cGUgJyVzJyIsIHNvdXJjZSkpOworICAgIHNvdXJjZSA9IGRlY29kZV9hdHRyKHNvdXJjZSwgJmF0dHIsICZjb2xvcik7CisgICAgc291cmNlID0gZGVjb2RlX2NoYXIoc291cmNlLCAmdmFsdWUpOworICAgICp0YXJnZXQgPSAoQ2hDaGFyT2YodmFsdWUpIHwgYXR0ciB8IChjaHR5cGUpIENPTE9SX1BBSVIoY29sb3IpKTsKKyAgICAvKiBGSVhNRSAtIGlnbm9yZSBjb21iaW5pbmcgY2hhcmFjdGVycyAqLworICAgIHJldHVybiBzb3VyY2U7Cit9CisKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCitzdGF0aWMgY2hhciAqCitkZWNvZGVfY2NoYXIoY2hhciAqc291cmNlLCBjY2hhcl90ICpmaWxsaW4sIGNjaGFyX3QgKnRhcmdldCkKK3sKKyAgICBpbnQgY29sb3I7CisgICAgYXR0cl90IGF0dHIgPSBmaWxsaW4tPmF0dHI7CisgICAgd2NoYXJfdCBjaGFyc1tDQ0hBUldfTUFYXTsKKyAgICBpbnQgYXBwZW5kID0gMDsKKyAgICBpbnQgdmFsdWUgPSAwOworCisgICAgVCgoImRlY29kZV9jY2hhciAgJyVzJyIsIHNvdXJjZSkpOworICAgICp0YXJnZXQgPSBibGFuazsKKyNpZiBOQ1VSU0VTX0VYVF9DT0xPUlMKKyAgICBjb2xvciA9IGZpbGxpbi0+ZXh0X2NvbG9yOworI2Vsc2UKKyAgICBjb2xvciA9IChpbnQpIFBBSVJfTlVNQkVSKGF0dHIpOworI2VuZGlmCisgICAgc291cmNlID0gZGVjb2RlX2F0dHIoc291cmNlLCAmYXR0ciwgJmNvbG9yKTsKKyAgICBtZW1zZXQoY2hhcnMsIDAsIHNpemVvZihjaGFycykpOworICAgIHNvdXJjZSA9IGRlY29kZV9jaGFyKHNvdXJjZSwgJnZhbHVlKTsKKyAgICBjaGFyc1swXSA9ICh3Y2hhcl90KSB2YWx1ZTsKKyAgICAvKiBoYW5kbGUgY29tYmluaW5nIGNoYXJhY3RlcnMgKi8KKyAgICB3aGlsZSAoc291cmNlWzBdID09IE1BUktFUiAmJiBzb3VyY2VbMV0gPT0gQVBQRU5EKSB7CisJc291cmNlICs9IDI7CisJc291cmNlID0gZGVjb2RlX2NoYXIoc291cmNlLCAmdmFsdWUpOworCWlmICgrK2FwcGVuZCA8IENDSEFSV19NQVgpIHsKKwkgICAgY2hhcnNbYXBwZW5kXSA9ICh3Y2hhcl90KSB2YWx1ZTsKKwl9CisgICAgfQorICAgIHNldGNjaGFyKHRhcmdldCwgY2hhcnMsIGF0dHIsIChzaG9ydCkgY29sb3IsIE5VTEwpOworICAgIHJldHVybiBzb3VyY2U7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorcmVhZF93aW4oV0lORE9XICp3aW4sIEZJTEUgKmZwKQoreworICAgIGludCBjb2RlID0gRVJSOworICAgIGNoYXIgKnR4dDsKKyAgICBjaGFyICpuYW1lOworICAgIGNoYXIgKnZhbHVlOworICAgIHNpemVfdCBuOworICAgIGludCBjb2xvcjsKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCisgICAgTkNVUlNFU19DSF9UIHByaW9yOworI2VuZGlmCisgICAgY2h0eXBlIHByaW9yMjsKKworICAgIG1lbXNldCh3aW4sIDAsIHNpemVvZihXSU5ET1cpKTsKKyAgICBmb3IgKDs7KSB7CisJdHh0ID0gcmVhZF90eHQoZnApOworCWlmICh0eHQgPT0gMCkKKwkgICAgYnJlYWs7CisJaWYgKCFzdHJjbXAodHh0LCAicm93czoiKSkgeworCSAgICBmcmVlKHR4dCk7CisJICAgIGNvZGUgPSBPSzsKKwkgICAgYnJlYWs7CisJfQorCWlmICgodmFsdWUgPSBzdHJjaHIodHh0LCAnPScpKSA9PSAwKSB7CisJICAgIGZyZWUodHh0KTsKKwkgICAgY29udGludWU7CisJfQorCSp2YWx1ZSsrID0gJ1wwJzsKKwluYW1lID0gIXN0cmNtcCh0eHQsICJmbGFnIikgPyB2YWx1ZSA6IHR4dDsKKwlmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHNjcl9wYXJhbXMpOyArK24pIHsKKwkgICAgaWYgKCFzdHJjbXAobmFtZSwgc2NyX3BhcmFtc1tuXS5uYW1lKSkgeworCQl2b2lkICpkYXRhID0gKHZvaWQgKikgKChjaGFyICopIHdpbiArIHNjcl9wYXJhbXNbbl0ub2Zmc2V0KTsKKworCQlzd2l0Y2ggKHNjcl9wYXJhbXNbbl0udHlwZSkgeworCQljYXNlIHBBVFRSOgorCQkgICAgKHZvaWQpIGRlY29kZV9hdHRyKHZhbHVlLCBkYXRhLCAmY29sb3IpOworCQkgICAgYnJlYWs7CisJCWNhc2UgcEJPT0w6CisJCSAgICAqKGJvb2wgKikgZGF0YSA9IFRSVUU7CisJCSAgICBicmVhazsKKwkJY2FzZSBwQ0hBUjoKKwkJICAgIHByaW9yMiA9ICcgJzsKKwkJICAgIGRlY29kZV9jaHR5cGUodmFsdWUsIHByaW9yMiwgZGF0YSk7CisJCSAgICBicmVhazsKKwkJY2FzZSBwSU5UOgorCQkgICAgKihpbnQgKikgZGF0YSA9IGF0b2kodmFsdWUpOworCQkgICAgYnJlYWs7CisJCWNhc2UgcFNIT1JUOgorCQkgICAgKihzaG9ydCAqKSBkYXRhID0gKHNob3J0KSBhdG9pKHZhbHVlKTsKKwkJICAgIGJyZWFrOworCQljYXNlIHBTSVpFOgorCQkgICAgKihOQ1VSU0VTX1NJWkVfVCAqKSBkYXRhID0gKE5DVVJTRVNfU0laRV9UKSBhdG9pKHZhbHVlKTsKKwkJICAgIGJyZWFrOworI2lmIE5DVVJTRVNfV0lERUNIQVIKKwkJY2FzZSBwQ0NIQVI6CisJCSAgICBwcmlvciA9IGJsYW5rOworCQkgICAgZGVjb2RlX2NjaGFyKHZhbHVlLCAmcHJpb3IsIGRhdGEpOworCQkgICAgYnJlYWs7CisjZW5kaWYKKwkJfQorCQlicmVhazsKKwkgICAgfQorCX0KKwlmcmVlKHR4dCk7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgaW50CityZWFkX3JvdyhjaGFyICpzb3VyY2UsIE5DVVJTRVNfQ0hfVCAqIHByaW9yLCBOQ1VSU0VTX0NIX1QgKiB0YXJnZXQsIGludCBsZW5ndGgpCit7CisgICAgd2hpbGUgKCpzb3VyY2UgIT0gJ1wwJyAmJiBsZW5ndGggPiAwKSB7CisjaWYgTkNVUlNFU19XSURFQ0hBUgorCWludCBuLCBsZW47CisJc291cmNlID0gZGVjb2RlX2NjaGFyKHNvdXJjZSwgcHJpb3IsIHRhcmdldCk7CisJbGVuID0gd2N3aWR0aCh0YXJnZXQtPmNoYXJzWzBdKTsKKwlpZiAobGVuID4gMSkgeworCSAgICBTZXRXaWRlY0V4dChDSERFUkVGKHRhcmdldCksIDApOworCSAgICBmb3IgKG4gPSAxOyBuIDwgbGVuOyArK24pIHsKKwkJdGFyZ2V0W25dID0gdGFyZ2V0WzBdOworCQlTZXRXaWRlY0V4dChDSERFUkVGKHRhcmdldCksIG4pOworCSAgICB9CisJICAgIHRhcmdldCArPSAobGVuIC0gMSk7CisJICAgIGxlbmd0aCAtPSAobGVuIC0gMSk7CisJfQorI2Vsc2UKKwlzb3VyY2UgPSBkZWNvZGVfY2h0eXBlKHNvdXJjZSwgKnByaW9yLCB0YXJnZXQpOworI2VuZGlmCisJKnByaW9yID0gKnRhcmdldDsKKwkrK3RhcmdldDsKKwktLWxlbmd0aDsKKyAgICB9CisgICAgd2hpbGUgKGxlbmd0aC0tID4gMCkgeworCSp0YXJnZXQrKyA9IGJsYW5rOworICAgIH0KKyAgICAvKiBGSVhNRSAtIHNlZSB3aGF0IGVycm9yIGNvbmRpdGlvbnMgc2hvdWxkIGFwcGx5IGlmIEkgbmVlZCB0byByZXR1cm4gRVJSICovCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogTkNVUlNFU19FWFRfUFVUV0lOICovCisKKy8qCisgKiBPcmlnaW5hbGx5LCBnZXR3aW4vcHV0d2luIHVzZWQgZnJlYWQvZndyaXRlLCBiZWNhdXNlIHRoZXkgdXNlZCBiaW5hcnkgZGF0YS4KKyAqIFRoZSBuZXcgZm9ybWF0IHVzZXMgcHJpbnRhYmxlIEFTQ0lJLCB3aGljaCBkb2VzIG5vdCBoYXZlIGFzIHByZWRpY3RhYmxlCisgKiBzaXplcy4gIENvbnNlcXVlbnRseSwgd2UgdXNlIGJ1ZmZlcmVkIEkvTywgZS5nLiwgZmdldGMvZnByaW50Ziwgd2hpY2ggbmVlZAorICogc3BlY2lhbCBoYW5kbGluZyBpZiB3ZSB3YW50IHRvIHJlYWQgc2NyZWVuIGR1bXBzIGZyb20gYW4gb2xkZXIgbGlicmFyeS4KKyAqLworc3RhdGljIGludAorcmVhZF9ibG9jayh2b2lkICp0YXJnZXQsIHNpemVfdCBsZW5ndGgsIEZJTEUgKmZwKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGNoYXIgKmJ1ZmZlciA9IHRhcmdldDsKKworICAgIGNsZWFyZXJyKGZwKTsKKyAgICB3aGlsZSAobGVuZ3RoLS0gIT0gMCkgeworCWludCBjaCA9IGZnZXRjKGZwKTsKKwlpZiAoY2ggPT0gRU9GKSB7CisJICAgIHJlc3VsdCA9IC0xOworCSAgICBicmVhazsKKwl9CisJKmJ1ZmZlcisrID0gKGNoYXIpIGNoOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKLWdldHdpbihGSUxFICpmaWxlcCkKK05DVVJTRVNfU1BfTkFNRShnZXR3aW4pIChOQ1VSU0VTX1NQX0RDTHggRklMRSAqZmlsZXApCiB7CiAgICAgV0lORE9XIHRtcCwgKm53aW47CiAgICAgaW50IG47CisgICAgYm9vbCBvbGRfZm9ybWF0ID0gRkFMU0U7CiAKLSAgICBUKChUX0NBTExFRCgiZ2V0d2luKCVwKSIpLCBmaWxlcCkpOworICAgIFQoKFRfQ0FMTEVEKCJnZXR3aW4oJXApIiksICh2b2lkICopIGZpbGVwKSk7CiAKLSAgICBjbGVhcmVycihmaWxlcCk7Ci0gICAgKHZvaWQpIGZyZWFkKCZ0bXAsIHNpemVvZihXSU5ET1cpLCAxLCBmaWxlcCk7Ci0gICAgaWYgKGZlcnJvcihmaWxlcCkKLQl8fCB0bXAuX21heHkgPT0gMAotCXx8IHRtcC5fbWF4eSA+IE1BWF9TSVpFCi0JfHwgdG1wLl9tYXh4ID09IDAKLQl8fCB0bXAuX21heHggPiBNQVhfU0laRSkKKyAgICBpZiAoZmlsZXAgPT0gMCkgewogCXJldHVybldpbigwKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlYWQgdGhlIGZpcnN0IDQgYnl0ZXMgdG8gZGV0ZXJtaW5lIGZpcnN0IGlmIHRoaXMgaXMgYW4gb2xkLWZvcm1hdAorICAgICAqIHNjcmVlbi1kdW1wLCBvciBuZXctZm9ybWF0LgorICAgICAqLworICAgIGlmIChyZWFkX2Jsb2NrKCZ0bXAsIDQsIGZpbGVwKSA8IDApIHsKKwlyZXR1cm5XaW4oMCk7CisgICAgfQorICAgIC8qCisgICAgICogSWYgdGhpcyBpcyBhIG5ldy1mb3JtYXQgZmlsZSwgYW5kIHdlIGRvIG5vdCBzdXBwb3J0IGl0LCBnaXZlIHVwLgorICAgICAqLworICAgIGlmICghbWVtY21wKCZ0bXAsIG15X21hZ2ljLCA0KSkgeworI2lmIE5DVVJTRVNfRVhUX1BVVFdJTgorCWlmIChyZWFkX3dpbigmdG1wLCBmaWxlcCkgPCAwKQorI2VuZGlmCisJICAgIHJldHVybldpbigwKTsKKyAgICB9IGVsc2UgaWYgKHJlYWRfYmxvY2soKChjaGFyICopICZ0bXApICsgNCwgc2l6ZW9mKFdJTkRPVykgLSA0LCBmaWxlcCkgPCAwKSB7CisJcmV0dXJuV2luKDApOworICAgIH0gZWxzZSB7CisJb2xkX2Zvcm1hdCA9IFRSVUU7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDaGVjayB0aGUgd2luZG93LXNpemU6CisgICAgICovCisgICAgaWYgKHRtcC5fbWF4eSA9PSAwIHx8CisJdG1wLl9tYXh5ID4gTUFYX1NJWkUgfHwKKwl0bXAuX21heHggPT0gMCB8fAorCXRtcC5fbWF4eCA+IE1BWF9TSVpFKSB7CisJcmV0dXJuV2luKDApOworICAgIH0KIAogICAgIGlmICh0bXAuX2ZsYWdzICYgX0lTUEFEKSB7Ci0JbndpbiA9IG5ld3BhZCh0bXAuX21heHkgKyAxLCB0bXAuX21heHggKyAxKTsKKwlud2luID0gTkNVUlNFU19TUF9OQU1FKG5ld3BhZCkgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQl0bXAuX21heHkgKyAxLAorCQkJCQl0bXAuX21heHggKyAxKTsKICAgICB9IGVsc2UgewotCW53aW4gPSBuZXd3aW4odG1wLl9tYXh5ICsgMSwgdG1wLl9tYXh4ICsgMSwgMCwgMCk7CisJbndpbiA9IE5DVVJTRVNfU1BfTkFNRShuZXd3aW4pIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJdG1wLl9tYXh5ICsgMSwKKwkJCQkJdG1wLl9tYXh4ICsgMSwgMCwgMCk7CiAgICAgfQogCiAgICAgLyoKQEAgLTY3LDYgKzU0Niw4IEBACiAgICAgICogbWFkZSBzZW5zZSBpcyBwcm9iYWJseSBnb25lLgogICAgICAqLwogICAgIGlmIChud2luICE9IDApIHsKKwlzaXplX3QgbGluZXNpemUgPSBzaXplb2YoTkNVUlNFU19DSF9UKSAqIChzaXplX3QpICh0bXAuX21heHggKyAxKTsKKwogCW53aW4tPl9jdXJ4ID0gdG1wLl9jdXJ4OwogCW53aW4tPl9jdXJ5ID0gdG1wLl9jdXJ5OwogCW53aW4tPl9tYXh5ID0gdG1wLl9tYXh5OwpAQCAtOTYsNDAgKzU3NywzMDYgQEAKIAlpZiAodG1wLl9mbGFncyAmIF9JU1BBRCkKIAkgICAgbndpbi0+X3BhZCA9IHRtcC5fcGFkOwogCi0JZm9yIChuID0gMDsgbiA8PSBud2luLT5fbWF4eTsgbisrKSB7Ci0JICAgIGNsZWFyZXJyKGZpbGVwKTsKLQkgICAgKHZvaWQpIGZyZWFkKG53aW4tPl9saW5lW25dLnRleHQsCi0JCQkgc2l6ZW9mKE5DVVJTRVNfQ0hfVCksCi0JCQkgKHNpemVfdCkgKG53aW4tPl9tYXh4ICsgMSksCi0JCQkgZmlsZXApOwotCSAgICBpZiAoZmVycm9yKGZpbGVwKSkgeworCWlmIChvbGRfZm9ybWF0KSB7CisJICAgIFQoKCJyZWFkaW5nIG9sZC1mb3JtYXQgc2NyZWVuIGR1bXAiKSk7CisJICAgIGZvciAobiA9IDA7IG4gPD0gbndpbi0+X21heHk7IG4rKykgeworCQlpZiAocmVhZF9ibG9jayhud2luLT5fbGluZVtuXS50ZXh0LCBsaW5lc2l6ZSwgZmlsZXApIDwgMCkgeworCQkgICAgZGVsd2luKG53aW4pOworCQkgICAgcmV0dXJuV2luKDApOworCQl9CisJICAgIH0KKwl9CisjaWYgTkNVUlNFU19FWFRfUFVUV0lOCisJZWxzZSB7CisJICAgIGNoYXIgKnR4dDsKKwkgICAgYm9vbCBzdWNjZXNzID0gVFJVRTsKKwkgICAgTkNVUlNFU19DSF9UIHByaW9yID0gYmxhbms7CisKKwkgICAgVCgoInJlYWRpbmcgbmV3LWZvcm1hdCBzY3JlZW4gZHVtcCIpKTsKKwkgICAgZm9yIChuID0gMDsgbiA8PSBud2luLT5fbWF4eTsgbisrKSB7CisJCWxvbmcgcm93OworCQljaGFyICpuZXh0OworCisJCWlmICgodHh0ID0gcmVhZF90eHQoZmlsZXApKSA9PSAwKSB7CisJCSAgICBUKCgiLi4uZmFpbGVkIHRvIHJlYWQgc3RyaW5nIGZvciByb3cgJWQiLCBuICsgMSkpOworCQkgICAgc3VjY2VzcyA9IEZBTFNFOworCQkgICAgYnJlYWs7CisJCX0KKwkJcm93ID0gc3RydG9sKHR4dCwgJm5leHQsIDEwKTsKKwkJaWYgKHJvdyAhPSAobiArIDEpIHx8ICpuZXh0ICE9ICc6JykgeworCQkgICAgVCgoIi4uLmZhaWxlZCB0byByZWFkIHJvdy1udW1iZXIgJWQiLCBuICsgMSkpOworCQkgICAgc3VjY2VzcyA9IEZBTFNFOworCQkgICAgYnJlYWs7CisJCX0KKworCQlpZiAocmVhZF9yb3coKytuZXh0LCAmcHJpb3IsIG53aW4tPl9saW5lW25dLnRleHQsIHRtcC5fbWF4eAorCQkJICAgICArIDEpIDwgMCkgeworCQkgICAgVCgoIi4uLmZhaWxlZCB0byByZWFkIGNlbGxzIGZvciByb3cgJWQiLCBuICsgMSkpOworCQkgICAgc3VjY2VzcyA9IEZBTFNFOworCQkgICAgYnJlYWs7CisJCX0KKwkJZnJlZSh0eHQpOworCQl0eHQgPSAwOworCSAgICB9CisKKwkgICAgaWYgKCFzdWNjZXNzKSB7CisJCWZyZWUodHh0KTsKIAkJZGVsd2luKG53aW4pOwogCQlyZXR1cm5XaW4oMCk7CiAJICAgIH0KIAl9CisjZW5kaWYKIAl0b3VjaHdpbihud2luKTsKICAgICB9CiAgICAgcmV0dXJuV2luKG53aW4pOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoV0lORE9XICopCitnZXR3aW4oRklMRSAqZmlsZXApCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShnZXR3aW4pIChDVVJSRU5UX1NDUkVFTiwgZmlsZXApOworfQorI2VuZGlmCisKKyNpZiBOQ1VSU0VTX0VYVF9QVVRXSU4KK3N0YXRpYyB2b2lkCitlbmNvZGVfYXR0cihjaGFyICp0YXJnZXQsIGF0dHJfdCBzb3VyY2UsIGF0dHJfdCBwcmlvcikKK3sKKyAgICBzb3VyY2UgJj0gfkFfQ0hBUlRFWFQ7CisgICAgcHJpb3IgJj0gfkFfQ0hBUlRFWFQ7CisKKyAgICAqdGFyZ2V0ID0gJ1wwJzsKKyAgICBpZiAoc291cmNlICE9IHByaW9yKSB7CisJc2l6ZV90IG47CisJYm9vbCBmaXJzdCA9IFRSVUU7CisKKwkqdGFyZ2V0KysgPSBNQVJLRVI7CisJKnRhcmdldCsrID0gTF9DVVJMOworCisJZm9yIChuID0gMDsgbiA8IFNJWkVPRihzY3JfYXR0cnMpOyArK24pIHsKKwkgICAgaWYgKChzb3VyY2UgJiBzY3JfYXR0cnNbbl0uYXR0cikgIT0gMCB8fAorCQkoKHNvdXJjZSAmIEFMTF9CVVRfQ09MT1IpID09IDAgJiYKKwkJIChzY3JfYXR0cnNbbl0uYXR0ciA9PSBBX05PUk1BTCkpKSB7CisJCWlmIChmaXJzdCkgeworCQkgICAgZmlyc3QgPSBGQUxTRTsKKwkJfSBlbHNlIHsKKwkJICAgICp0YXJnZXQrKyA9ICd8JzsKKwkJfQorCQlzdHJjcHkodGFyZ2V0LCBzY3JfYXR0cnNbbl0ubmFtZSk7CisJCXRhcmdldCArPSBzdHJsZW4odGFyZ2V0KTsKKwkgICAgfQorCX0KKwlpZiAoKHNvdXJjZSAmIEFfQ09MT1IpICE9IChwcmlvciAmIEFfQ09MT1IpKSB7CisJICAgIGlmICghZmlyc3QpCisJCSp0YXJnZXQrKyA9ICd8JzsKKwkgICAgc3ByaW50Zih0YXJnZXQsICJDJWQiLCBQQUlSX05VTUJFUigoaW50KSBzb3VyY2UpKTsKKwkgICAgdGFyZ2V0ICs9IHN0cmxlbih0YXJnZXQpOworCX0KKworCSp0YXJnZXQrKyA9IFJfQ1VSTDsKKwkqdGFyZ2V0ID0gJ1wwJzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitlbmNvZGVfY2VsbChjaGFyICp0YXJnZXQsIENBUkdfQ0hfVCBzb3VyY2UsIENBUkdfQ0hfVCBwcmV2aW91cykKK3sKKyNpZiBOQ1VSU0VTX1dJREVDSEFSCisgICAgc2l6ZV90IG47CisKKyAgICAqdGFyZ2V0ID0gJ1wwJzsKKyAgICBpZiAocHJldmlvdXMtPmF0dHIgIT0gc291cmNlLT5hdHRyKSB7CisJZW5jb2RlX2F0dHIodGFyZ2V0LCBzb3VyY2UtPmF0dHIsIHByZXZpb3VzLT5hdHRyKTsKKyAgICB9CisgICAgdGFyZ2V0ICs9IHN0cmxlbih0YXJnZXQpOworI2lmIE5DVVJTRVNfRVhUX0NPTE9SUworICAgIGlmIChwcmV2aW91cy0+ZXh0X2NvbG9yICE9IHNvdXJjZS0+ZXh0X2NvbG9yKSB7CisJc3ByaW50Zih0YXJnZXQsICIlYyVjQyVkJWMiLCBNQVJLRVIsIExfQ1VSTCwgc291cmNlLT5leHRfY29sb3IsIFJfQ1VSTCk7CisgICAgfQorI2VuZGlmCisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihzb3VyY2UtPmNoYXJzKTsgKytuKSB7CisJdW5zaWduZWQgdWNoID0gKHVuc2lnbmVkKSBzb3VyY2UtPmNoYXJzW25dOworCWlmICh1Y2ggPT0gMCkKKwkgICAgY29udGludWU7CisJaWYgKG4pIHsKKwkgICAgKnRhcmdldCsrID0gTUFSS0VSOworCSAgICAqdGFyZ2V0KysgPSBBUFBFTkQ7CisJfQorCSp0YXJnZXQrKyA9IE1BUktFUjsKKwlpZiAodWNoID4gMHhmZmZmKSB7CisJICAgIHNwcmludGYodGFyZ2V0LCAiVSUwOHgiLCB1Y2gpOworCX0gZWxzZSBpZiAodWNoID4gMHhmZikgeworCSAgICBzcHJpbnRmKHRhcmdldCwgInUlMDR4IiwgdWNoKTsKKwl9IGVsc2UgaWYgKHVjaCA8IDMyIHx8IHVjaCA+PSAxMjcpIHsKKwkgICAgc3ByaW50Zih0YXJnZXQsICIlMDNvIiwgdWNoICYgMHhmZik7CisJfSBlbHNlIHsKKwkgICAgc3dpdGNoICh1Y2gpIHsKKwkgICAgY2FzZSAnICc6CisJCXN0cmNweSh0YXJnZXQsICJzIik7CisJCWJyZWFrOworCSAgICBjYXNlIE1BUktFUjoKKwkJKnRhcmdldCsrID0gTUFSS0VSOworCQkqdGFyZ2V0ID0gJ1wwJzsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCXNwcmludGYoLS10YXJnZXQsICIlYyIsIHVjaCk7CisJCWJyZWFrOworCSAgICB9CisJfQorCXRhcmdldCArPSBzdHJsZW4odGFyZ2V0KTsKKyAgICB9CisjZWxzZQorICAgIGNodHlwZSBjaCA9IENoYXJPZkQoc291cmNlKTsKKworICAgICp0YXJnZXQgPSAnXDAnOworICAgIGlmIChBdHRyT2ZEKHByZXZpb3VzKSAhPSBBdHRyT2ZEKHNvdXJjZSkpIHsKKwllbmNvZGVfYXR0cih0YXJnZXQsIEF0dHJPZkQoc291cmNlKSwgQXR0ck9mRChwcmV2aW91cykpOworICAgIH0KKyAgICB0YXJnZXQgKz0gc3RybGVuKHRhcmdldCk7CisgICAgKnRhcmdldCsrID0gTUFSS0VSOworICAgIGlmIChjaCA8IDMyIHx8IGNoID49IDEyNykgeworCXNwcmludGYodGFyZ2V0LCAiJTAzbyIsIFVDaGFyKGNoKSk7CisgICAgfSBlbHNlIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnICc6CisJICAgIHN0cmNweSh0YXJnZXQsICJzIik7CisJICAgIGJyZWFrOworCWNhc2UgTUFSS0VSOgorCSAgICAqdGFyZ2V0KysgPSBNQVJLRVI7CisJICAgICp0YXJnZXQgPSAnXDAnOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBzcHJpbnRmKC0tdGFyZ2V0LCAiJWMiLCBVQ2hhcihjaCkpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIHRhcmdldCArPSBzdHJsZW4odGFyZ2V0KTsKKyNlbmRpZgorfQorI2VuZGlmCisKIE5DVVJTRVNfRVhQT1JUKGludCkKIHB1dHdpbihXSU5ET1cgKndpbiwgRklMRSAqZmlsZXApCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7Ci0gICAgaW50IG47CisgICAgaW50IHk7CiAKLSAgICBUKChUX0NBTExFRCgicHV0d2luKCVwLCVwKSIpLCB3aW4sIGZpbGVwKSk7CisgICAgVCgoVF9DQUxMRUQoInB1dHdpbiglcCwlcCkiKSwgKHZvaWQgKikgd2luLCAodm9pZCAqKSBmaWxlcCkpOwogCisjaWYgTkNVUlNFU19FWFRfUFVUV0lOCisgICAgaWYgKHdpbiAhPSAwKSB7CisJY29uc3QgY2hhciAqdmVyc2lvbiA9IGN1cnNlc192ZXJzaW9uKCk7CisJY2hhciBidWZmZXJbMTAyNF07CisJTkNVUlNFU19DSF9UIGxhc3RfY2VsbDsKKworCW1lbXNldCgmbGFzdF9jZWxsLCAwLCBzaXplb2YobGFzdF9jZWxsKSk7CisKKwljbGVhcmVycihmaWxlcCk7CisKKwkvKgorCSAqIE91ciBtYWdpYyBudW1iZXIgaXMgdGVjaG5pY2FsbHkgbm9ucHJpbnRpbmcsIGJ1dCBhc2lkZSBmcm9tIHRoYXQsCisJICogYWxsIG9mIHRoZSBmaWxlIGlzIHByaW50YWJsZSBBU0NJSS4KKwkgKi8KKyNkZWZpbmUgUFVUUyhzKSBpZiAoZnB1dHMocywgZmlsZXApID09IEVPRiB8fCBmZXJyb3IoZmlsZXApKSByZXR1cm5Db2RlKGNvZGUpCisJUFVUUyhteV9tYWdpYyk7CisJUFVUUyh2ZXJzaW9uKTsKKwlQVVRTKCJcbiIpOworCWZvciAoeSA9IDA7IHkgPCAoaW50KSBTSVpFT0Yoc2NyX3BhcmFtcyk7ICsreSkgeworCSAgICBjb25zdCBjaGFyICpuYW1lID0gc2NyX3BhcmFtc1t5XS5uYW1lOworCSAgICBjb25zdCBjaGFyICpkYXRhID0gKGNoYXIgKikgd2luICsgc2NyX3BhcmFtc1t5XS5vZmZzZXQ7CisJICAgIGNvbnN0IHZvaWQgKmRwID0gKGNvbnN0IHZvaWQgKikgZGF0YTsKKworCSAgICAqYnVmZmVyID0gJ1wwJzsKKwkgICAgaWYgKCFzdHJuY21wKG5hbWUsICJfcGFkLiIsIDUpICYmICEod2luLT5fZmxhZ3MgJiBfSVNQQUQpKSB7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIHN3aXRjaCAoc2NyX3BhcmFtc1t5XS50eXBlKSB7CisJICAgIGNhc2UgcEFUVFI6CisJCWVuY29kZV9hdHRyKGJ1ZmZlciwgKCooY29uc3QgYXR0cl90ICopIGRwKSAmIH5BX0NIQVJURVhULCBBX05PUk1BTCk7CisJCWJyZWFrOworCSAgICBjYXNlIHBCT09MOgorCQlpZiAoISgqKGNvbnN0IGJvb2wgKikgZGF0YSkpIHsKKwkJICAgIGNvbnRpbnVlOworCQl9CisJCXN0cmNweShidWZmZXIsIG5hbWUpOworCQluYW1lID0gImZsYWciOworCQlicmVhazsKKwkgICAgY2FzZSBwQ0hBUjoKKwkJZW5jb2RlX2F0dHIoYnVmZmVyLCAqKGNvbnN0IGF0dHJfdCAqKSBkcCwgQV9OT1JNQUwpOworCQlicmVhazsKKwkgICAgY2FzZSBwSU5UOgorCQlpZiAoISgqKGNvbnN0IGludCAqKSBkcCkpCisJCSAgICBjb250aW51ZTsKKwkJc3ByaW50ZihidWZmZXIsICIlZCIsICooY29uc3QgaW50ICopIGRwKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgcFNIT1JUOgorCQlpZiAoISgqKGNvbnN0IHNob3J0ICopIGRwKSkKKwkJICAgIGNvbnRpbnVlOworCQlzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgKihjb25zdCBzaG9ydCAqKSBkcCk7CisJCWJyZWFrOworCSAgICBjYXNlIHBTSVpFOgorCQlpZiAoISgqKGNvbnN0IE5DVVJTRVNfU0laRV9UICopIGRwKSkKKwkJICAgIGNvbnRpbnVlOworCQlzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgKihjb25zdCBOQ1VSU0VTX1NJWkVfVCAqKSBkcCk7CisJCWJyZWFrOworI2lmIE5DVVJTRVNfV0lERUNIQVIKKwkgICAgY2FzZSBwQ0NIQVI6CisJCWVuY29kZV9jZWxsKGJ1ZmZlciwgKENBUkdfQ0hfVCkgZHAsIENIUkVGKGxhc3RfY2VsbCkpOworCQlicmVhazsKKyNlbmRpZgorCSAgICB9CisJICAgIC8qCisJICAgICAqIE9ubHkgd3JpdGUgbm9uLWRlZmF1bHQgZGF0YS4KKwkgICAgICovCisJICAgIGlmICgqYnVmZmVyICE9ICdcMCcpIHsKKwkJaWYgKGZwcmludGYoZmlsZXAsICIlcz0lc1xuIiwgbmFtZSwgYnVmZmVyKSA8PSAwCisJCSAgICB8fCBmZXJyb3IoZmlsZXApKQorCQkgICAgcmV0dXJuQ29kZShjb2RlKTsKKwkgICAgfQorCX0KKwkvKiBXcml0ZSByb3ctZGF0YSAqLworCWZwcmludGYoZmlsZXAsICJyb3dzOlxuIik7CisJZm9yICh5ID0gMDsgeSA8PSB3aW4tPl9tYXh5OyB5KyspIHsKKwkgICAgTkNVUlNFU19DSF9UICpkYXRhID0gd2luLT5fbGluZVt5XS50ZXh0OworCSAgICBpbnQgeDsKKwkgICAgaWYgKGZwcmludGYoZmlsZXAsICIlZDoiLCB5ICsgMSkgPD0gMAorCQl8fCBmZXJyb3IoZmlsZXApKQorCQlyZXR1cm5Db2RlKGNvZGUpOworCSAgICBmb3IgKHggPSAwOyB4IDw9IHdpbi0+X21heHg7IHgrKykgeworI2lmIE5DVVJTRVNfV0lERUNIQVIKKwkJaW50IGxlbiA9IHdjd2lkdGgoZGF0YVt4XS5jaGFyc1swXSk7CisJCWVuY29kZV9jZWxsKGJ1ZmZlciwgQ0hSRUYoZGF0YVt4XSksIENIUkVGKGxhc3RfY2VsbCkpOworCQlsYXN0X2NlbGwgPSBkYXRhW3hdOworCQlQVVRTKGJ1ZmZlcik7CisJCWlmIChsZW4gPiAxKQorCQkgICAgeCArPSAobGVuIC0gMSk7CisjZWxzZQorCQllbmNvZGVfY2VsbChidWZmZXIsIENIUkVGKGRhdGFbeF0pLCBDSFJFRihsYXN0X2NlbGwpKTsKKwkJbGFzdF9jZWxsID0gZGF0YVt4XTsKKwkJUFVUUyhidWZmZXIpOworI2VuZGlmCisJICAgIH0KKwkgICAgUFVUUygiXG4iKTsKKwl9CisgICAgfQorI2Vsc2UKKyAgICAvKgorICAgICAqIFRoaXMgaXMgdGhlIG9yaWdpbmFsIHB1dHdpbigpOgorICAgICAqIEEgc3RyYWlnaHQgYmluYXJ5IGR1bXAgaXMgc2ltcGxlLCBidXQgaXRzIGZvcm1hdCBjYW4gZGVwZW5kIG9uIHdoZXRoZXIKKyAgICAgKiBuY3Vyc2VzIGlzIGNvbXBpbGVkIHdpdGggd2lkZS1jaGFyYWN0ZXIgc3VwcG9ydCwgYW5kIGFsc28gbWF5IGRlcGVuZAorICAgICAqIG9uIHRoZSB2ZXJzaW9uIG9mIG5jdXJzZXMsIGUuZy4sIGlmIHRoZSBXSU5ET1cgc3RydWN0dXJlIGlzIGV4dGVuZGVkLgorICAgICAqLwogICAgIGlmICh3aW4gIT0gMCkgewogCXNpemVfdCBsZW4gPSAoc2l6ZV90KSAod2luLT5fbWF4eCArIDEpOwogCiAJY2xlYXJlcnIoZmlsZXApOwotCWlmIChmd3JpdGUod2luLCBzaXplb2YoV0lORE9XKSwgMSwgZmlsZXApICE9IDEKKwlpZiAoZndyaXRlKHdpbiwgc2l6ZW9mKFdJTkRPVyksIChzaXplX3QpIDEsIGZpbGVwKSAhPSAxCiAJICAgIHx8IGZlcnJvcihmaWxlcCkpCiAJICAgICAgcmV0dXJuQ29kZShjb2RlKTsKIAotCWZvciAobiA9IDA7IG4gPD0gd2luLT5fbWF4eTsgbisrKSB7Ci0JICAgIGlmIChmd3JpdGUod2luLT5fbGluZVtuXS50ZXh0LAorCWZvciAoeSA9IDA7IHkgPD0gd2luLT5fbWF4eTsgeSsrKSB7CisJICAgIGlmIChmd3JpdGUod2luLT5fbGluZVt5XS50ZXh0LAogCQkgICAgICAgc2l6ZW9mKE5DVVJTRVNfQ0hfVCksIGxlbiwgZmlsZXApICE9IGxlbgogCQl8fCBmZXJyb3IoZmlsZXApKSB7CiAJCXJldHVybkNvZGUoY29kZSk7CkBAIC0xMzcsODQgKzg4NCwxMjMgQEAKIAl9CiAJY29kZSA9IE9LOwogICAgIH0KKyNlbmRpZgogICAgIHJldHVybkNvZGUoY29kZSk7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNjcl9yZXN0b3JlKGNvbnN0IGNoYXIgKmZpbGUpCitOQ1VSU0VTX1NQX05BTUUoc2NyX3Jlc3RvcmUpIChOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2hhciAqZmlsZSkKIHsKICAgICBGSUxFICpmcCA9IDA7CisgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgic2NyX3Jlc3RvcmUoJXMpIiksIF9uY192aXNidWYoZmlsZSkpKTsKKyAgICBUKChUX0NBTExFRCgic2NyX3Jlc3RvcmUoJXAsJXMpIiksICh2b2lkICopIFNQX1BBUk0sIF9uY192aXNidWYoZmlsZSkpKTsKIAotICAgIGlmIChfbmNfYWNjZXNzKGZpbGUsIFJfT0spIDwgMAotCXx8IChmcCA9IGZvcGVuKGZpbGUsICJyYiIpKSA9PSAwKSB7Ci0JcmV0dXJuQ29kZShFUlIpOwotICAgIH0gZWxzZSB7Ci0JZGVsd2luKG5ld3Njcik7Ci0JU1AtPl9uZXdzY3IgPSBnZXR3aW4oZnApOworICAgIGlmIChfbmNfYWNjZXNzKGZpbGUsIFJfT0spID49IDAKKwkmJiAoZnAgPSBmb3BlbihmaWxlLCAicmIiKSkgIT0gMCkgeworCWRlbHdpbihOZXdTY3JlZW4oU1BfUEFSTSkpOworCU5ld1NjcmVlbihTUF9QQVJNKSA9IGdldHdpbihmcCk7CiAjaWYgIVVTRV9SRUVOVFJBTlQKLQluZXdzY3IgPSBTUC0+X25ld3NjcjsKKwluZXdzY3IgPSBOZXdTY3JlZW4oU1BfUEFSTSk7CiAjZW5kaWYKIAkodm9pZCkgZmNsb3NlKGZwKTsKLQlyZXR1cm5Db2RlKE9LKTsKKwlpZiAoTmV3U2NyZWVuKFNQX1BBUk0pICE9IDApIHsKKwkgICAgY29kZSA9IE9LOworCX0KICAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3Njcl9yZXN0b3JlKGNvbnN0IGNoYXIgKmZpbGUpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzY3JfcmVzdG9yZSkgKENVUlJFTlRfU0NSRUVOLCBmaWxlKTsKK30KKyNlbmRpZgorCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzY3JfZHVtcChjb25zdCBjaGFyICpmaWxlKQogeworICAgIGludCByZXN1bHQ7CiAgICAgRklMRSAqZnAgPSAwOwogCiAgICAgVCgoVF9DQUxMRUQoInNjcl9kdW1wKCVzKSIpLCBfbmNfdmlzYnVmKGZpbGUpKSk7CiAKICAgICBpZiAoX25jX2FjY2VzcyhmaWxlLCBXX09LKSA8IDAKIAl8fCAoZnAgPSBmb3BlbihmaWxlLCAid2IiKSkgPT0gMCkgewotCXJldHVybkNvZGUoRVJSKTsKKwlyZXN1bHQgPSBFUlI7CiAgICAgfSBlbHNlIHsKIAkodm9pZCkgcHV0d2luKG5ld3NjciwgZnApOwogCSh2b2lkKSBmY2xvc2UoZnApOwotCXJldHVybkNvZGUoT0spOworCXJlc3VsdCA9IE9LOwogICAgIH0KKyAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzY3JfaW5pdCkgKE5DVVJTRVNfU1BfRENMeCBjb25zdCBjaGFyICpmaWxlKQoreworICAgIEZJTEUgKmZwID0gMDsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJzY3JfaW5pdCglcCwlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgX25jX3Zpc2J1ZihmaWxlKSkpOworCisgICAgaWYgKFNQX1BBUk0gIT0gMCAmJgorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCUluZm9PZihTUF9QQVJNKS5jYW5pbml0CisjZWxzZQorCSEoZXhpdF9jYV9tb2RlICYmIG5vbl9yZXZfcm1jdXApCisjZW5kaWYKKwkpIHsKKwlpZiAoX25jX2FjY2VzcyhmaWxlLCBSX09LKSA+PSAwCisJICAgICYmIChmcCA9IGZvcGVuKGZpbGUsICJyYiIpKSAhPSAwKSB7CisJICAgIGRlbHdpbihDdXJTY3JlZW4oU1BfUEFSTSkpOworCSAgICBDdXJTY3JlZW4oU1BfUEFSTSkgPSBnZXR3aW4oZnApOworI2lmICFVU0VfUkVFTlRSQU5UCisJICAgIGN1cnNjciA9IEN1clNjcmVlbihTUF9QQVJNKTsKKyNlbmRpZgorCSAgICAodm9pZCkgZmNsb3NlKGZwKTsKKwkgICAgaWYgKEN1clNjcmVlbihTUF9QQVJNKSAhPSAwKSB7CisJCWNvZGUgPSBPSzsKKwkgICAgfQorCX0KKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKIHNjcl9pbml0KGNvbnN0IGNoYXIgKmZpbGUpCiB7Ci0gICAgRklMRSAqZnAgPSAwOwotCi0gICAgVCgoVF9DQUxMRUQoInNjcl9pbml0KCVzKSIpLCBfbmNfdmlzYnVmKGZpbGUpKSk7Ci0KLSAgICBpZiAoZXhpdF9jYV9tb2RlICYmIG5vbl9yZXZfcm1jdXApCi0JcmV0dXJuQ29kZShFUlIpOwotCi0gICAgaWYgKF9uY19hY2Nlc3MoZmlsZSwgUl9PSykgPCAwCi0JfHwgKGZwID0gZm9wZW4oZmlsZSwgInJiIikpID09IDApIHsKLQlyZXR1cm5Db2RlKEVSUik7Ci0gICAgfSBlbHNlIHsKLQlkZWx3aW4oY3Vyc2NyKTsKLQlTUC0+X2N1cnNjciA9IGdldHdpbihmcCk7Ci0jaWYgIVVTRV9SRUVOVFJBTlQKLQljdXJzY3IgPSBTUC0+X2N1cnNjcjsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNjcl9pbml0KSAoQ1VSUkVOVF9TQ1JFRU4sIGZpbGUpOworfQogI2VuZGlmCi0JKHZvaWQpIGZjbG9zZShmcCk7Ci0JcmV0dXJuQ29kZShPSyk7CisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzY3Jfc2V0KSAoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IGNoYXIgKmZpbGUpCit7CisgICAgaW50IGNvZGUgPSBFUlI7CisKKyAgICBUKChUX0NBTExFRCgic2NyX3NldCglcCwlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgX25jX3Zpc2J1ZihmaWxlKSkpOworCisgICAgaWYgKE5DVVJTRVNfU1BfTkFNRShzY3JfaW5pdCkgKE5DVVJTRVNfU1BfQVJHeCBmaWxlKSA9PSBPSykgeworCWRlbHdpbihOZXdTY3JlZW4oU1BfUEFSTSkpOworCU5ld1NjcmVlbihTUF9QQVJNKSA9IGR1cHdpbihjdXJzY3IpOworI2lmICFVU0VfUkVFTlRSQU5UCisJbmV3c2NyID0gTmV3U2NyZWVuKFNQX1BBUk0pOworI2VuZGlmCisJaWYgKE5ld1NjcmVlbihTUF9QQVJNKSAhPSAwKSB7CisJICAgIGNvZGUgPSBPSzsKKwl9CiAgICAgfQorICAgIHJldHVybkNvZGUoY29kZSk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzY3Jfc2V0KGNvbnN0IGNoYXIgKmZpbGUpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInNjcl9zZXQoJXMpIiksIF9uY192aXNidWYoZmlsZSkpKTsKLQotICAgIGlmIChzY3JfaW5pdChmaWxlKSA9PSBFUlIpIHsKLQlyZXR1cm5Db2RlKEVSUik7Ci0gICAgfSBlbHNlIHsKLQlkZWx3aW4obmV3c2NyKTsKLQlTUC0+X25ld3NjciA9IGR1cHdpbihjdXJzY3IpOwotI2lmICFVU0VfUkVFTlRSQU5UCi0JbmV3c2NyID0gU1AtPl9uZXdzY3I7Ci0jZW5kaWYKLQlyZXR1cm5Db2RlKE9LKTsKLSAgICB9CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzY3Jfc2V0KSAoQ1VSUkVOVF9TQ1JFRU4sIGZpbGUpOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Njcm9sbC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zY3JvbGwuYwppbmRleCBhYzg1YmQ1Li44Njg0ZTI1IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Njcm9sbC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2Nyb2xsLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MywyMiArNDMsMjIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2Nyb2xsLmMsdiAxLjI2IDIwMDYvMTAvMTQgMjA6NDY6MDggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfc2Nyb2xsLmMsdiAxLjI5IDIwMTEvMTAvMjIgMTY6MzQ6NTAgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY19zY3JvbGxfd2luZG93KFdJTkRPVyAqd2luLAogCQkgIGludCBjb25zdCBuLAotCQkgIE5DVVJTRVNfU0laRV9UIGNvbnN0IHRvcCwKLQkJICBOQ1VSU0VTX1NJWkVfVCBjb25zdCBib3R0b20sCisJCSAgaW50IGNvbnN0IHRvcCwKKwkJICBpbnQgY29uc3QgYm90dG9tLAogCQkgIE5DVVJTRVNfQ0hfVCBibGFuaykKIHsKICAgICBpbnQgbGltaXQ7CiAgICAgaW50IGxpbmU7CiAgICAgaW50IGo7Ci0gICAgc2l6ZV90IHRvX2NvcHkgPSAoc2l6ZV90KSAoc2l6ZW9mKE5DVVJTRVNfQ0hfVCkgKiAod2luLT5fbWF4eCArIDEpKTsKKyAgICBzaXplX3QgdG9fY29weSA9IChzaXplb2YoTkNVUlNFU19DSF9UKSAqIChzaXplX3QpICh3aW4tPl9tYXh4ICsgMSkpOwogCiAgICAgVFIoVFJBQ0VfTU9WRSwgKCJfbmNfc2Nyb2xsX3dpbmRvdyglcCwgJWQsICVsZCwgJWxkKSIsCi0JCSAgICB3aW4sIG4sIChsb25nKSB0b3AsIChsb25nKSBib3R0b20pKTsKKwkJICAgICh2b2lkICopIHdpbiwgbiwgKGxvbmcpIHRvcCwgKGxvbmcpIGJvdHRvbSkpOwogCiAgICAgaWYgKHRvcCA8IDAKIAl8fCBib3R0b20gPCB0b3AKQEAgLTEzNSw3ICsxMzUsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogd3NjcmwoV0lORE9XICp3aW4sIGludCBuKQogewotICAgIFQoKFRfQ0FMTEVEKCJ3c2NybCglcCwlZCkiKSwgd2luLCBuKSk7CisgICAgVCgoVF9DQUxMRUQoIndzY3JsKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIG4pKTsKIAogICAgIGlmICghd2luIHx8ICF3aW4tPl9zY3JvbGwpIHsKIAlUUihUUkFDRV9NT1ZFLCAoIi4uLnNjcm9sbG9rIGlzIGZhbHNlIikpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zY3JvbGxvay5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zY3JvbGxvay5jCmluZGV4IGY2YjMwMjUuLjZhNjk4YTMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2Nyb2xsb2suYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3Njcm9sbG9rLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxMiArNDAsMTIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2Nyb2xsb2suYyx2IDEuNCAyMDAwLzEyLzEwIDAyOjQzOjI3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Njcm9sbG9rLmMsdiAxLjUgMjAwOS8xMC8yNCAyMjozNTozOCB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzY3JvbGxvayhXSU5ET1cgKndpbiwgYm9vbCBmbGFnKQogewotICAgIFQoKFRfQ0FMTEVEKCJzY3JvbGxvayglcCwlZCkiKSwgd2luLCBmbGFnKSk7CisgICAgVCgoVF9DQUxMRUQoInNjcm9sbG9rKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIGZsYWcpKTsKIAogICAgIGlmICh3aW4pIHsKIAl3aW4tPl9zY3JvbGwgPSBmbGFnOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zY3JyZWcuYyBiL25jdXJzZXMvYmFzZS9saWJfc2NycmVnLmMKaW5kZXggYzg1ZDYwZi4uNTQ2ZmJjMSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9zY3JyZWcuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3NjcnJlZy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OCwyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDAsMTIgKzQwLDEyIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3NjcnJlZy5jLHYgMS4xMCAyMDAwLzEyLzEwIDAyOjQzOjI3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3NjcnJlZy5jLHYgMS4xMSAyMDA5LzEwLzI0IDIyOjM1OjI4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdzZXRzY3JyZWcoV0lORE9XICp3aW4sIGludCB0b3AsIGludCBib3R0b20pCiB7Ci0gICAgVCgoVF9DQUxMRUQoIndzZXRzY3JyZWcoJXAsJWQsJWQpIiksIHdpbiwgdG9wLCBib3R0b20pKTsKKyAgICBUKChUX0NBTExFRCgid3NldHNjcnJlZyglcCwlZCwlZCkiKSwgKHZvaWQgKikgd2luLCB0b3AsIGJvdHRvbSkpOwogCiAgICAgaWYgKHdpbiAmJgogCXRvcCA+PSAwICYmIHRvcCA8PSB3aW4tPl9tYXh5ICYmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3NldF90ZXJtLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX3NldF90ZXJtLmMKaW5kZXggYWZmNDMyYi4uZjc4N2E4OCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9zZXRfdGVybS5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2V0X3Rlcm0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMwLDYgKzMwLDcgQEAKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTQwLDExICs0MSwyMSBAQAogKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0KLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBjdXJfdGVybSAqLwogI2luY2x1ZGUgPHRpYy5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3NldF90ZXJtLmMsdiAxLjExNyAyMDA4LzA4LzA0IDE4OjExOjEyIHRvbSBFeHAgJCIpCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogbGliX3NldF90ZXJtLmMsdiAxLjE1MyAyMDE1LzA4LzA3IDIzOjU3OjU4IHRvbSBFeHAgJCIpCisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyNkZWZpbmUgTWF4Q29sb3JzICAgICAgSW5mb09mKHNwKS5tYXhjb2xvcnMKKyNkZWZpbmUgTnVtTGFiZWxzICAgICAgSW5mb09mKHNwKS5udW1sYWJlbHMKKyNlbHNlCisjZGVmaW5lIE1heENvbG9ycyAgICAgIG1heF9jb2xvcnMKKyNkZWZpbmUgTnVtTGFiZWxzICAgICAgbnVtX2xhYmVscworI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKQogc2V0X3Rlcm0oU0NSRUVOICpzY3JlZW5wKQpAQCAtNTIsMjUgKzYzLDI1IEBACiAgICAgU0NSRUVOICpvbGRTUDsKICAgICBTQ1JFRU4gKm5ld1NQOwogCi0gICAgVCgoVF9DQUxMRUQoInNldF90ZXJtKCVwKSIpLCBzY3JlZW5wKSk7CisgICAgVCgoVF9DQUxMRUQoInNldF90ZXJtKCVwKSIpLCAodm9pZCAqKSBzY3JlZW5wKSk7CiAKICAgICBfbmNfbG9ja19nbG9iYWwoY3Vyc2VzKTsKIAotICAgIG9sZFNQID0gU1A7CisgICAgb2xkU1AgPSBDVVJSRU5UX1NDUkVFTjsKICAgICBfbmNfc2V0X3NjcmVlbihzY3JlZW5wKTsKLSAgICBuZXdTUCA9IFNQOworICAgIG5ld1NQID0gc2NyZWVucDsKIAogICAgIGlmIChuZXdTUCAhPSAwKSB7Ci0Jc2V0X2N1cnRlcm0obmV3U1AtPl90ZXJtKTsKKwlUSU5GT19TRVRfQ1VSVEVSTShuZXdTUCwgbmV3U1AtPl90ZXJtKTsKICNpZiAhVVNFX1JFRU5UUkFOVAotCWN1cnNjciA9IG5ld1NQLT5fY3Vyc2NyOwotCW5ld3NjciA9IG5ld1NQLT5fbmV3c2NyOwotCXN0ZHNjciA9IG5ld1NQLT5fc3Rkc2NyOworCWN1cnNjciA9IEN1clNjcmVlbihuZXdTUCk7CisJbmV3c2NyID0gTmV3U2NyZWVuKG5ld1NQKTsKKwlzdGRzY3IgPSBTdGRTY3JlZW4obmV3U1ApOwogCUNPTE9SUyA9IG5ld1NQLT5fY29sb3JfY291bnQ7CiAJQ09MT1JfUEFJUlMgPSBuZXdTUC0+X3BhaXJfY291bnQ7CiAjZW5kaWYKICAgICB9IGVsc2UgewotCXNldF9jdXJ0ZXJtKDApOworCVRJTkZPX1NFVF9DVVJURVJNKG9sZFNQLCAwKTsKICNpZiAhVVNFX1JFRU5UUkFOVAogCWN1cnNjciA9IDA7CiAJbmV3c2NyID0gMDsKQEAgLTgyLDcgKzkzLDcgQEAKIAogICAgIF9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CiAKLSAgICBUKChUX1JFVFVSTigiJXAiKSwgb2xkU1ApKTsKKyAgICBUKChUX1JFVFVSTigiJXAiKSwgKHZvaWQgKikgb2xkU1ApKTsKICAgICByZXR1cm4gKG9sZFNQKTsKIH0KIApAQCAtMTA2LDcgKzExNyw3IEBACiAgICAgZm9yIChlYWNoX3NjcmVlbih0ZW1wKSkgewogCWlmICh0ZW1wID09IHNwKSB7CiAJICAgIGlmIChsYXN0KQotCQlsYXN0ID0gc3AtPl9uZXh0X3NjcmVlbjsKKwkJbGFzdC0+X25leHRfc2NyZWVuID0gc3AtPl9uZXh0X3NjcmVlbjsKIAkgICAgZWxzZQogCQlfbmNfc2NyZWVuX2NoYWluID0gc3AtPl9uZXh0X3NjcmVlbjsKIAkgICAgcmVzdWx0ID0gVFJVRTsKQEAgLTEyNSwxNCArMTM2LDI3IEBACiB7CiAgICAgaW50IGk7CiAKLSAgICBUKChUX0NBTExFRCgiZGVsc2NyZWVuKCVwKSIpLCBzcCkpOworICAgIFQoKFRfQ0FMTEVEKCJkZWxzY3JlZW4oJXApIiksICh2b2lkICopIHNwKSk7CiAKICAgICBfbmNfbG9ja19nbG9iYWwoY3Vyc2VzKTsKICAgICBpZiAoZGVsaW5rX3NjcmVlbihzcCkpIHsKKyNpZmRlZiBVU0VfU1BfUklQT0ZGCisJcmlwb2ZmX3QgKnJvcDsKKwlpZiAoc2FmZV9yaXBvZmZfc3AgJiYgc2FmZV9yaXBvZmZfc3AgIT0gc2FmZV9yaXBvZmZfc3RhY2spIHsKKwkgICAgZm9yIChyb3AgPSBzYWZlX3JpcG9mZl9zdGFjazsKKwkJIHJvcCAhPSBzYWZlX3JpcG9mZl9zcCAmJiAocm9wIC0gc2FmZV9yaXBvZmZfc3RhY2spIDwgTl9SSVBTOworCQkgcm9wKyspIHsKKwkJaWYgKHJvcC0+d2luKSB7CisJCSAgICAodm9pZCkgZGVsd2luKHJvcC0+d2luKTsKKwkJICAgIHJvcC0+d2luID0gMDsKKwkJfQorCSAgICB9CisJfQorI2VuZGlmCiAKLQkodm9pZCkgX25jX2ZyZWV3aW4oc3AtPl9jdXJzY3IpOwotCSh2b2lkKSBfbmNfZnJlZXdpbihzcC0+X25ld3Njcik7Ci0JKHZvaWQpIF9uY19mcmVld2luKHNwLT5fc3Rkc2NyKTsKKwkodm9pZCkgX25jX2ZyZWV3aW4oQ3VyU2NyZWVuKHNwKSk7CisJKHZvaWQpIF9uY19mcmVld2luKE5ld1NjcmVlbihzcCkpOworCSh2b2lkKSBfbmNfZnJlZXdpbihTdGRTY3JlZW4oc3ApKTsKIAogCWlmIChzcC0+X3NsayAhPSAwKSB7CiAJICAgIGlmIChzcC0+X3Nsay0+ZW50ICE9IDApIHsKQEAgLTE2NCwxOSArMTg4LDkgQEAKIAlGcmVlSWZOZWVkZWQoc3AtPl9hY3NfbWFwKTsKIAlGcmVlSWZOZWVkZWQoc3AtPl9zY3JlZW5fYWNzX21hcCk7CiAKLQkvKgotCSAqIElmIHRoZSBhc3NvY2lhdGVkIG91dHB1dCBzdHJlYW0gaGFzIGJlZW4gY2xvc2VkLCB3ZSBjYW4gZGlzY2FyZCB0aGUKLQkgKiBzZXQtYnVmZmVyLiAgTGltaXQgdGhlIGVycm9yIGNoZWNrIHRvIEVCQURGLCBzaW5jZSBmZmx1c2ggbWF5IGZhaWwKLQkgKiBmb3Igb3RoZXIgcmVhc29ucyB0aGFuIHRyeWluZyB0byBvcGVyYXRlIHVwb24gYSBjbG9zZWQgc3RyZWFtLgotCSAqLwotCWlmIChzcC0+X29mcCAhPSAwCi0JICAgICYmIHNwLT5fc2V0YnVmICE9IDAKLQkgICAgJiYgZmZsdXNoKHNwLT5fb2ZwKSAhPSAwCi0JICAgICYmIGVycm5vID09IEVCQURGKSB7Ci0JICAgIGZyZWUoc3AtPl9zZXRidWYpOwotCX0KLQotCWRlbF9jdXJ0ZXJtKHNwLT5fdGVybSk7CisJTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKE5DVVJTRVNfU1BfQVJHKTsKKwlOQ1VSU0VTX1NQX05BTUUoZGVsX2N1cnRlcm0pIChOQ1VSU0VTX1NQX0FSR3ggc3AtPl90ZXJtKTsKKwlGcmVlSWZOZWVkZWQoc3AtPm91dF9idWZmZXIpOwogCWZyZWUoc3ApOwogCiAJLyoKQEAgLTE4NCw3ICsxOTgsNyBAQAogCSAqIGFwcGxpY2F0aW9uIG1pZ2h0IHRyeSB0byB1c2UgKGV4Y2VwdCBjdXJfdGVybSwgd2hpY2ggbWF5IGhhdmUKIAkgKiBtdWx0aXBsZSByZWZlcmVuY2VzIGluIGRpZmZlcmVudCBzY3JlZW5zKS4KIAkgKi8KLQlpZiAoc3AgPT0gU1ApIHsKKwlpZiAoc3AgPT0gQ1VSUkVOVF9TQ1JFRU4pIHsKICNpZiAhVVNFX1JFRU5UUkFOVAogCSAgICBjdXJzY3IgPSAwOwogCSAgICBuZXdzY3IgPSAwOwpAQCAtMTkzLDYgKzIwNywxMiBAQAogCSAgICBDT0xPUl9QQUlSUyA9IDA7CiAjZW5kaWYKIAkgICAgX25jX3NldF9zY3JlZW4oMCk7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwkgICAgaWYgKFNQID09IDApIHsKKwkJRnJlZUlmTmVlZGVkKF9uY193YWNzKTsKKwkJX25jX3dhY3MgPSAwOworCSAgICB9CisjZW5kaWYKIAl9CiAgICAgfQogICAgIF9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CkBAIC0yMjksMTMgKzI0OSwxNCBAQAogfQogCiAjaWYgTkNVUlNFU19FWFRfRlVOQ1MgJiYgVVNFX0NPTE9SRkdCRwotc3RhdGljIGNoYXIgKgotZXh0cmFjdF9mZ2JnKGNoYXIgKnNyYywgaW50ICpyZXN1bHQpCitzdGF0aWMgY29uc3QgY2hhciAqCitleHRyYWN0X2ZnYmcoY29uc3QgY2hhciAqc3JjLCBpbnQgKnJlc3VsdCkKIHsKLSAgICBjaGFyICpkc3QgPSAwOwotICAgIGxvbmcgdmFsdWUgPSBzdHJ0b2woc3JjLCAmZHN0LCAwKTsKKyAgICBjb25zdCBjaGFyICpkc3QgPSAwOworICAgIGNoYXIgKnRtcCA9IDA7CisgICAgbG9uZyB2YWx1ZSA9IHN0cnRvbChzcmMsICZ0bXAsIDApOwogCi0gICAgaWYgKGRzdCA9PSAwKSB7CisgICAgaWYgKChkc3QgPSB0bXApID09IDApIHsKIAlkc3QgPSBzcmM7CiAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAwKSB7CiAJKnJlc3VsdCA9IHZhbHVlOwpAQCAtMjQ4LDUwICsyNjksOTggQEAKIH0KICNlbmRpZgogCisjZGVmaW5lIFJldHVyblNjcmVlbkVycm9yKCkgZG8geyBfbmNfc2V0X3NjcmVlbigwKTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkNvZGUoRVJSKTsgfSB3aGlsZSAoMCkKKwogLyogT1MtaW5kZXBlbmRlbnQgc2NyZWVuIGluaXRpYWxpemF0aW9ucyAqLwogTkNVUlNFU19FWFBPUlQoaW50KQotX25jX3NldHVwc2NyZWVuKGludCBzbGluZXMgR0NDX1VOVVNFRCwKLQkJaW50IHNjb2x1bW5zIEdDQ19VTlVTRUQsCi0JCUZJTEUgKm91dHB1dCwKLQkJYm9vbCBmaWx0ZXJlZCwKLQkJaW50IHNsa19mb3JtYXQpCitOQ1VSU0VTX1NQX05BTUUoX25jX3NldHVwc2NyZWVuKSAoCisjaWYgTkNVUlNFU19TUF9GVU5DUworCQkJCSAgICAgU0NSRUVOICoqc3BwLAorI2VuZGlmCisJCQkJICAgICBpbnQgc2xpbmVzLAorCQkJCSAgICAgaW50IHNjb2x1bW5zLAorCQkJCSAgICAgRklMRSAqb3V0cHV0LAorCQkJCSAgICAgaW50IGZpbHRlcmVkLAorCQkJCSAgICAgaW50IHNsa19mb3JtYXQpCiB7CiAgICAgY2hhciAqZW52OwogICAgIGludCBib3R0b21fc3RvbGVuID0gMDsKLSAgICBib29sIHN1cHBvcnRfY29va2llcyA9IFVTRV9YTUNfU1VQUE9SVDsKICAgICByaXBvZmZfdCAqcm9wOworICAgIFNDUkVFTiAqc3A7CisjaWZuZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGJvb2wgc3VwcG9ydF9jb29raWVzID0gVVNFX1hNQ19TVVBQT1JUOworI2VuZGlmCiAKICAgICBUKChUX0NBTExFRCgiX25jX3NldHVwc2NyZWVuKCVkLCAlZCwgJXAsICVkLCAlZCkiKSwKLSAgICAgICBzbGluZXMsIHNjb2x1bW5zLCBvdXRwdXQsIGZpbHRlcmVkLCBzbGtfZm9ybWF0KSk7CisgICAgICAgc2xpbmVzLCBzY29sdW1ucywgKHZvaWQgKikgb3V0cHV0LCBmaWx0ZXJlZCwgc2xrX2Zvcm1hdCkpOwogCi0gICAgYXNzZXJ0KFNQID09IDApOwkJLyogaGFzIGJlZW4gcmVzZXQgaW4gbmV3dGVybSgpICEgKi8KKyAgICBhc3NlcnQoQ1VSUkVOVF9TQ1JFRU4gPT0gMCk7CS8qIGhhcyBiZWVuIHJlc2V0IGluIG5ld3Rlcm0oKSAhICovCisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgYXNzZXJ0KHNwcCAhPSAwKTsKKyAgICBzcCA9ICpzcHA7CisKKyAgICBpZiAoIXNwKSB7CisJc3AgPSBfbmNfYWxsb2Nfc2NyZWVuX3NwKCk7CisJKnNwcCA9IHNwOworICAgIH0KKyAgICBpZiAoIXNwCisJfHwgKChzcC0+X2Fjc19tYXAgPSB0eXBlQ2FsbG9jKGNodHlwZSwgQUNTX0xFTikpID09IDApCisJfHwgKChzcC0+X3NjcmVlbl9hY3NfbWFwID0gdHlwZUNhbGxvYyhib29sLCBBQ1NfTEVOKSkgPT0gMCkpIHsKKwlSZXR1cm5TY3JlZW5FcnJvcigpOworICAgIH0KKworICAgIFQoKCJjcmVhdGVkIFNQICVwIiwgKHZvaWQgKikgc3ApKTsKKyAgICBzcC0+X25leHRfc2NyZWVuID0gX25jX3NjcmVlbl9jaGFpbjsKKyAgICBfbmNfc2NyZWVuX2NoYWluID0gc3A7CisKKyAgICBpZiAoKHNwLT5fY3VycmVudF9hdHRyID0gdHlwZUNhbGxvYyhOQ1VSU0VTX0NIX1QsIDEpKSA9PSAwKSB7CisJUmV0dXJuU2NyZWVuRXJyb3IoKTsKKyAgICB9CisjZWxzZQogICAgIGlmICghX25jX2FsbG9jX3NjcmVlbigpCiAJfHwgKChTUC0+X2Fjc19tYXAgPSB0eXBlQ2FsbG9jKGNodHlwZSwgQUNTX0xFTikpID09IDApCiAJfHwgKChTUC0+X3NjcmVlbl9hY3NfbWFwID0gdHlwZUNhbGxvYyhib29sLCBBQ1NfTEVOKSkgPT0gMCkpIHsKIAlyZXR1cm5Db2RlKEVSUik7CiAgICAgfQogCi0gICAgVCgoImNyZWF0ZWQgU1AgJXAiLCBTUCkpOwotICAgIFNQLT5fbmV4dF9zY3JlZW4gPSBfbmNfc2NyZWVuX2NoYWluOwotICAgIF9uY19zY3JlZW5fY2hhaW4gPSBTUDsKKyAgICBUKCgiY3JlYXRlZCBTUCAlcCIsICh2b2lkICopIFNQKSk7CiAKLSAgICBpZiAoKFNQLT5fY3VycmVudF9hdHRyID0gdHlwZUNhbGxvYyhOQ1VSU0VTX0NIX1QsIDEpKSA9PSAwKQorICAgIHNwID0gU1A7CQkJLyogZml4dXAgc28gU0VUX0xJTkVTIGFuZCBTRVRfQ09MUyB3b3JrcyAqLworICAgIHNwLT5fbmV4dF9zY3JlZW4gPSBfbmNfc2NyZWVuX2NoYWluOworICAgIF9uY19zY3JlZW5fY2hhaW4gPSBzcDsKKworICAgIGlmICgoc3AtPl9jdXJyZW50X2F0dHIgPSB0eXBlQ2FsbG9jKE5DVVJTRVNfQ0hfVCwgMSkpID09IDApCiAJcmV0dXJuQ29kZShFUlIpOworI2VuZGlmCiAKICAgICAvKgogICAgICAqIFdlIHNob3VsZCBhbHdheXMgY2hlY2sgdGhlIHNjcmVlbnNpemUsIGp1c3QgaW4gY2FzZS4KICAgICAgKi8KLSAgICBfbmNfZ2V0X3NjcmVlbnNpemUoU1AsICZzbGluZXMsICZzY29sdW1ucyk7CisgICAgX25jX3NldF9zY3JlZW4oc3ApOworICAgIHNwLT5fdGVybSA9IGN1cl90ZXJtOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIFRDQk9mKHNwKS0+Y3NwID0gc3A7CisgICAgX25jX2dldF9zY3JlZW5zaXplKHNwLCBzcC0+X3Rlcm0sICZzbGluZXMsICZzY29sdW1ucyk7CisjZWxzZQorICAgIF9uY19nZXRfc2NyZWVuc2l6ZShzcCwgJnNsaW5lcywgJnNjb2x1bW5zKTsKKyNlbmRpZgogICAgIFNFVF9MSU5FUyhzbGluZXMpOwogICAgIFNFVF9DT0xTKHNjb2x1bW5zKTsKLSAgICBUKChUX0NSRUFURSgic2NyZWVuICVzICVkeCVkIiksIHRlcm1uYW1lKCksIExJTkVTLCBDT0xTKSk7CiAKLSAgICBTUC0+X2ZpbHRlcmVkID0gZmlsdGVyZWQ7CisgICAgVCgoVF9DUkVBVEUoInNjcmVlbiAlcyAlZHglZCIpLAorICAgICAgIE5DVVJTRVNfU1BfTkFNRSh0ZXJtbmFtZSkgKE5DVVJTRVNfU1BfQVJHKSwgc2xpbmVzLCBzY29sdW1ucykpOworCisgICAgc3AtPl9maWx0ZXJlZCA9IGZpbHRlcmVkOwogCiAgICAgLyogaW1wbGVtZW50IGZpbHRlciBtb2RlICovCiAgICAgaWYgKGZpbHRlcmVkKSB7CiAJc2xpbmVzID0gMTsKIAlTRVRfTElORVMoc2xpbmVzKTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlDYWxsRHJpdmVyKHNwLCB0ZF9zZXRmaWx0ZXIpOworI2Vsc2UKIAljbGVhcl9zY3JlZW4gPSAwOwogCWN1cnNvcl9kb3duID0gcGFybV9kb3duX2N1cnNvciA9IDA7CiAJY3Vyc29yX2FkZHJlc3MgPSAwOwpAQCAtMjk5LDM0ICszNjgsMzMgQEAKIAlyb3dfYWRkcmVzcyA9IDA7CiAKIAljdXJzb3JfaG9tZSA9IGNhcnJpYWdlX3JldHVybjsKLQlUKCgiZmlsdGVyIHNjcmVlbnNpemUgJWR4JWQiLCBMSU5FUywgQ09MUykpOworI2VuZGlmCisJVCgoImZpbHRlciBzY3JlZW5zaXplICVkeCVkIiwgc2xpbmVzLCBzY29sdW1ucykpOwogICAgIH0KICNpZmRlZiBfX0RKR1BQX18KICAgICBUKCgic2V0dGluZyBvdXRwdXQgbW9kZSB0byBiaW5hcnkiKSk7CiAgICAgZmZsdXNoKG91dHB1dCk7CiAgICAgc2V0bW9kZShvdXRwdXQsIE9fQklOQVJZKTsKICNlbmRpZgotICAgIF9uY19zZXRfYnVmZmVyKG91dHB1dCwgVFJVRSk7Ci0gICAgU1AtPl90ZXJtID0gY3VyX3Rlcm07Ci0gICAgU1AtPl9saW5lcyA9IHNsaW5lczsKLSAgICBTUC0+X2xpbmVzX2F2YWlsID0gc2xpbmVzOwotICAgIFNQLT5fY29sdW1ucyA9IHNjb2x1bW5zOwotICAgIFNQLT5fY3Vyc3JvdyA9IC0xOwotICAgIFNQLT5fY3Vyc2NvbCA9IC0xOwotICAgIFNQLT5fbmwgPSBUUlVFOwotICAgIFNQLT5fcmF3ID0gRkFMU0U7Ci0gICAgU1AtPl9jYnJlYWsgPSAwOwotICAgIFNQLT5fZWNobyA9IFRSVUU7Ci0gICAgU1AtPl9maWZvaGVhZCA9IC0xOwotICAgIFNQLT5fZW5kd2luID0gVFJVRTsKLSAgICBTUC0+X29mcCA9IG91dHB1dDsKLSAgICBTUC0+X2N1cnNvciA9IC0xOwkJLyogY2Fubm90IGtub3cgcmVhbCBjdXJzb3Igc2hhcGUgKi8KKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NldF9idWZmZXIpIChOQ1VSU0VTX1NQX0FSR3ggb3V0cHV0LCBUUlVFKTsKKyAgICBzcC0+X2xpbmVzID0gKE5DVVJTRVNfU0laRV9UKSBzbGluZXM7CisgICAgc3AtPl9saW5lc19hdmFpbCA9IChOQ1VSU0VTX1NJWkVfVCkgc2xpbmVzOworICAgIHNwLT5fY29sdW1ucyA9IChOQ1VSU0VTX1NJWkVfVCkgc2NvbHVtbnM7CiAKLSAgICBTZXROb1BhZGRpbmcoU1ApOworICAgIGZmbHVzaChvdXRwdXQpOworICAgIHNwLT5fb2ZkID0gb3V0cHV0ID8gZmlsZW5vKG91dHB1dCkgOiAtMTsKKyAgICBzcC0+X29mcCA9IG91dHB1dDsKKyAgICBzcC0+b3V0X2xpbWl0ID0gKHNpemVfdCkgKCgyICsgc2xpbmVzKSAqICg2ICsgc2NvbHVtbnMpKTsKKyAgICBpZiAoKHNwLT5vdXRfYnVmZmVyID0gbWFsbG9jKHNwLT5vdXRfbGltaXQpKSA9PSAwKQorCXNwLT5vdXRfbGltaXQgPSAwOworICAgIHNwLT5vdXRfaW51c2UgPSAwOworCisgICAgU1BfUFJFX0lOSVQoc3ApOworICAgIFNldE5vUGFkZGluZyhzcCk7CiAKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotICAgIFNQLT5fZGVmYXVsdF9jb2xvciA9IEZBTFNFOwotICAgIFNQLT5faGFzX3Nncl8zOV80OSA9IEZBTFNFOworICAgIHNwLT5fZGVmYXVsdF9jb2xvciA9IEZBTFNFOworICAgIHNwLT5faGFzX3Nncl8zOV80OSA9IEZBTFNFOwogCiAgICAgLyoKICAgICAgKiBTZXQgb3VyIGFzc3VtcHRpb24gb2YgdGhlIHRlcm1pbmFsJ3MgZGVmYXVsdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kCkBAIC0zNDgsMTEgKzQxNiwxMSBAQAogICAgICAqIG9yIGJsYWNrLW9uLXdoaXRlIGRpc3BsYXkgdW5kZXIgY29udHJvbCBvZiB0aGUgYXBwbGljYXRpb24gdGhhbiBub3QpLgogICAgICAqLwogI2lmZGVmIFVTRV9BU1NVTUVEX0NPTE9SCi0gICAgU1AtPl9kZWZhdWx0X2ZnID0gQ09MT1JfV0hJVEU7Ci0gICAgU1AtPl9kZWZhdWx0X2JnID0gQ09MT1JfQkxBQ0s7CisgICAgc3AtPl9kZWZhdWx0X2ZnID0gQ09MT1JfV0hJVEU7CisgICAgc3AtPl9kZWZhdWx0X2JnID0gQ09MT1JfQkxBQ0s7CiAjZWxzZQotICAgIFNQLT5fZGVmYXVsdF9mZyA9IENfTUFTSzsKLSAgICBTUC0+X2RlZmF1bHRfYmcgPSBDX01BU0s7CisgICAgc3AtPl9kZWZhdWx0X2ZnID0gQ19NQVNLOworICAgIHNwLT5fZGVmYXVsdF9iZyA9IENfTUFTSzsKICNlbmRpZgogCiAgICAgLyoKQEAgLTM2NCwxNCArNDMyLDE0IEBACiAJY2hhciBzZXAxLCBzZXAyOwogCWludCBjb3VudCA9IHNzY2FuZihlbnYsICIlZCVjJWQlYyIsICZmZywgJnNlcDEsICZiZywgJnNlcDIpOwogCWlmIChjb3VudCA+PSAxKSB7Ci0JICAgIFNQLT5fZGVmYXVsdF9mZyA9IChmZyA+PSAwICYmIGZnIDwgbWF4X2NvbG9ycykgPyBmZyA6IENfTUFTSzsKKwkgICAgc3AtPl9kZWZhdWx0X2ZnID0gKChmZyA+PSAwICYmIGZnIDwgTWF4Q29sb3JzKSA/IGZnIDogQ19NQVNLKTsKIAkgICAgaWYgKGNvdW50ID49IDMpIHsKLQkJU1AtPl9kZWZhdWx0X2JnID0gKGJnID49IDAgJiYgYmcgPCBtYXhfY29sb3JzKSA/IGJnIDogQ19NQVNLOworCQlzcC0+X2RlZmF1bHRfYmcgPSAoKGJnID49IDAgJiYgYmcgPCBNYXhDb2xvcnMpID8gYmcgOiBDX01BU0spOwogCSAgICB9CiAJICAgIFRSKFRSQUNFX0NIQVJQVVQgfCBUUkFDRV9NT1ZFLAogCSAgICAgICAoImZyb20gZW52aXJvbm1lbnQgYXNzdW1lZCBmZz0lZCwgYmc9JWQiLAotCQlTUC0+X2RlZmF1bHRfZmcsCi0JCVNQLT5fZGVmYXVsdF9iZykpOworCQlzcC0+X2RlZmF1bHRfZmcsCisJCXNwLT5fZGVmYXVsdF9iZykpOwogCX0KICAgICB9CiAjaWYgVVNFX0NPTE9SRkdCRwpAQCAtMzgyLDUwICs0NTAsNTMgQEAKICAgICAgKiBkZWNpZGUgbGF0ZXIgaWYgaXQgaXMgd29ydGggaGF2aW5nIGRlZmF1bHQgYXR0cmlidXRlcyBhcyB3ZWxsLgogICAgICAqLwogICAgIGlmIChnZXRlbnYoIkNPTE9SRkdCRyIpICE9IDApIHsKLQljaGFyICpwID0gZ2V0ZW52KCJDT0xPUkZHQkciKTsKKwljb25zdCBjaGFyICpwID0gZ2V0ZW52KCJDT0xPUkZHQkciKTsKIAlUUihUUkFDRV9DSEFSUFVUIHwgVFJBQ0VfTU9WRSwgKCJkZWNvZGluZyBDT0xPUkZHQkcgJXMiLCBwKSk7Ci0JcCA9IGV4dHJhY3RfZmdiZyhwLCAmKFNQLT5fZGVmYXVsdF9mZykpOwotCXAgPSBleHRyYWN0X2ZnYmcocCwgJihTUC0+X2RlZmF1bHRfYmcpKTsKKwlwID0gZXh0cmFjdF9mZ2JnKHAsICYoc3AtPl9kZWZhdWx0X2ZnKSk7CisJcCA9IGV4dHJhY3RfZmdiZyhwLCAmKHNwLT5fZGVmYXVsdF9iZykpOwogCWlmICgqcCkJCQkvKiBhc3N1bWUgcnh2dCB3YXMgY29tcGlsZWQgd2l0aCB4cG0gc3VwcG9ydCAqLwotCSAgICBwID0gZXh0cmFjdF9mZ2JnKHAsICYoU1AtPl9kZWZhdWx0X2JnKSk7CisJICAgIHAgPSBleHRyYWN0X2ZnYmcocCwgJihzcC0+X2RlZmF1bHRfYmcpKTsKIAlUUihUUkFDRV9DSEFSUFVUIHwgVFJBQ0VfTU9WRSwgKCJkZWNvZGVkIGZnPSVkLCBiZz0lZCIsCi0JCQkJCVNQLT5fZGVmYXVsdF9mZywgU1AtPl9kZWZhdWx0X2JnKSk7Ci0JaWYgKFNQLT5fZGVmYXVsdF9mZyA+PSBtYXhfY29sb3JzKSB7CisJCQkJCXNwLT5fZGVmYXVsdF9mZywgc3AtPl9kZWZhdWx0X2JnKSk7CisJaWYgKHNwLT5fZGVmYXVsdF9mZyA+PSBNYXhDb2xvcnMpIHsKIAkgICAgaWYgKHNldF9hX2ZvcmVncm91bmQgIT0gQUJTRU5UX1NUUklORwogCQkmJiAhc3RyY21wKHNldF9hX2ZvcmVncm91bmQsICJcMDMzWzMlcDElZG0iKSkgewotCQlzZXRfYV9mb3JlZ3JvdW5kID0gIlwwMzNbMyU/JXAxJXs4fSU+JXQ5JWUlcDElZCU7bSI7CisJCXNldF9hX2ZvcmVncm91bmQgPSBzdHJkdXAoIlwwMzNbMyU/JXAxJXs4fSU+JXQ5JWUlcDElZCU7bSIpOwogCSAgICB9IGVsc2UgewotCQlTUC0+X2RlZmF1bHRfZmcgJT0gbWF4X2NvbG9yczsKKwkJc3AtPl9kZWZhdWx0X2ZnICU9IE1heENvbG9yczsKIAkgICAgfQogCX0KLQlpZiAoU1AtPl9kZWZhdWx0X2JnID49IG1heF9jb2xvcnMpIHsKKwlpZiAoc3AtPl9kZWZhdWx0X2JnID49IE1heENvbG9ycykgewogCSAgICBpZiAoc2V0X2FfYmFja2dyb3VuZCAhPSBBQlNFTlRfU1RSSU5HCiAJCSYmICFzdHJjbXAoc2V0X2FfYmFja2dyb3VuZCwgIlwwMzNbNCVwMSVkbSIpKSB7Ci0JCXNldF9hX2JhY2tncm91bmQgPSAiXDAzM1s0JT8lcDElezh9JT4ldDklZSVwMSVkJTttIjsKKwkJc2V0X2FfYmFja2dyb3VuZCA9IHN0cmR1cCgiXDAzM1s0JT8lcDElezh9JT4ldDklZSVwMSVkJTttIik7CiAJICAgIH0gZWxzZSB7Ci0JCVNQLT5fZGVmYXVsdF9iZyAlPSBtYXhfY29sb3JzOworCQlzcC0+X2RlZmF1bHRfYmcgJT0gTWF4Q29sb3JzOwogCSAgICB9CiAJfQogICAgIH0KICNlbmRpZgogI2VuZGlmIC8qIE5DVVJTRVNfRVhUX0ZVTkNTICovCiAKLSAgICBTUC0+X21heGNsaWNrID0gREVGQVVMVF9NQVhDTElDSzsKLSAgICBTUC0+X21vdXNlX2V2ZW50ID0gbm9fbW91c2VfZXZlbnQ7Ci0gICAgU1AtPl9tb3VzZV9pbmxpbmUgPSBub19tb3VzZV9pbmxpbmU7Ci0gICAgU1AtPl9tb3VzZV9wYXJzZSA9IG5vX21vdXNlX3BhcnNlOwotICAgIFNQLT5fbW91c2VfcmVzdW1lID0gbm9fbW91c2VfcmVzdW1lOwotICAgIFNQLT5fbW91c2Vfd3JhcCA9IG5vX21vdXNlX3dyYXA7Ci0gICAgU1AtPl9tb3VzZV9mZCA9IC0xOworICAgIHNwLT5fbWF4Y2xpY2sgPSBERUZBVUxUX01BWENMSUNLOworICAgIHNwLT5fbW91c2VfZXZlbnQgPSBub19tb3VzZV9ldmVudDsKKyAgICBzcC0+X21vdXNlX2lubGluZSA9IG5vX21vdXNlX2lubGluZTsKKyAgICBzcC0+X21vdXNlX3BhcnNlID0gbm9fbW91c2VfcGFyc2U7CisgICAgc3AtPl9tb3VzZV9yZXN1bWUgPSBub19tb3VzZV9yZXN1bWU7CisgICAgc3AtPl9tb3VzZV93cmFwID0gbm9fbW91c2Vfd3JhcDsKKyAgICBzcC0+X21vdXNlX2ZkID0gLTE7CiAKICAgICAvKgogICAgICAqIElmIHdlJ3ZlIG5vIG1hZ2ljIGNvb2tpZSBzdXBwb3J0LCB3ZSBzdXBwcmVzcyBhdHRyaWJ1dGVzIHRoYXQgeG1jIHdvdWxkCiAgICAgICogYWZmZWN0LCBpLmUuLCB0aGUgYXR0cmlidXRlcyB0aGF0IGFmZmVjdCB0aGUgcmVuZGl0aW9uIG9mIGEgc3BhY2UuCiAgICAgICovCi0gICAgU1AtPl9va19hdHRyaWJ1dGVzID0gdGVybWF0dHJzKCk7Ci0gICAgaWYgKGhhc19jb2xvcnMoKSkgewotCVNQLT5fb2tfYXR0cmlidXRlcyB8PSBBX0NPTE9SOworICAgIHNwLT5fb2tfYXR0cmlidXRlcyA9IE5DVVJTRVNfU1BfTkFNRSh0ZXJtYXR0cnMpIChOQ1VSU0VTX1NQX0FSRyk7CisgICAgaWYgKE5DVVJTRVNfU1BfTkFNRShoYXNfY29sb3JzKSAoTkNVUlNFU19TUF9BUkcpKSB7CisJc3AtPl9va19hdHRyaWJ1dGVzIHw9IEFfQ09MT1I7CiAgICAgfQorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIF9uY19jb29raWVfaW5pdChzcCk7CisjZWxzZQogI2lmIFVTRV9YTUNfU1VQUE9SVAogICAgIC8qCiAgICAgICogSWYgd2UgaGF2ZSBubyBtYWdpYy1jb29raWUgc3VwcG9ydCBjb21waWxlZC1pbiwgb3IgaWYgaXQgaXMgc3VwcHJlc3NlZApAQCAtNDQ0LDE2ICs1MTUsNyBAQAogCiAgICAgaWYgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPiAwKSB7CS8qIHR2aSwgd3lzZSAqLwogCi0JU1AtPl94bWNfdHJpZ2dlcnMgPSBTUC0+X29rX2F0dHJpYnV0ZXMgJiAoCi0JCQkJCQkgICAgIEFfU1RBTkRPVVQgfAotCQkJCQkJICAgICBBX1VOREVSTElORSB8Ci0JCQkJCQkgICAgIEFfUkVWRVJTRSB8Ci0JCQkJCQkgICAgIEFfQkxJTksgfAotCQkJCQkJICAgICBBX0RJTSB8Ci0JCQkJCQkgICAgIEFfQk9MRCB8Ci0JCQkJCQkgICAgIEFfSU5WSVMgfAotCQkJCQkJICAgICBBX1BST1RFQ1QKLQkgICAgKTsKKwlzcC0+X3htY190cmlnZ2VycyA9IHNwLT5fb2tfYXR0cmlidXRlcyAmIFhNQ19DT05GTElDVDsKICNpZiAwCiAJLyoKIAkgKiBXZSAic2hvdWxkIiB0cmVhdCBjb2xvcnMgYXMgYW4gYXR0cmlidXRlLiAgVGhlIHd5c2UzNTAgKGFuZCBpdHMKQEAgLTQ2MSwxMiArNTIzLDEyIEBACiAJICogY29va2llcy4KIAkgKi8KIAlpZiAoaGFzX2NvbG9ycygpKSB7Ci0JICAgIFNQLT5feG1jX3RyaWdnZXJzIHw9IEFfQ09MT1I7CisJICAgIHNwLT5feG1jX3RyaWdnZXJzIHw9IEFfQ09MT1I7CiAJfQogI2VuZGlmCi0JU1AtPl94bWNfc3VwcHJlc3MgPSBTUC0+X3htY190cmlnZ2VycyAmIChjaHR5cGUpIH4oQV9CT0xEKTsKKwlzcC0+X3htY19zdXBwcmVzcyA9IHNwLT5feG1jX3RyaWdnZXJzICYgKGNodHlwZSkgfihBX0JPTEQpOwogCi0JVCgoIm1hZ2ljIGNvb2tpZSBhdHRyaWJ1dGVzICVzIiwgX3RyYWNlYXR0cihTUC0+X3htY19zdXBwcmVzcykpKTsKKwlUKCgibWFnaWMgY29va2llIGF0dHJpYnV0ZXMgJXMiLCBfdHJhY2VhdHRyKHNwLT5feG1jX3N1cHByZXNzKSkpOwogCS8qCiAJICogU3VwcG9ydGluZyBsaW5lLWRyYXdpbmcgbWF5IGJlIHBvc3NpYmxlLiAgQnV0IG1ha2UgdGhlIHJlZ3VsYXIKIAkgKiB2aWRlbyBhdHRyaWJ1dGVzIHdvcmsgZmlyc3QuCkBAIC01MDYsNyArNTY4LDcgQEAKIAogICAgIC8qIGluaXRpYWxpemUgbm9ybWFsIGFjcyBiZWZvcmUgd2lkZSwgc2luY2Ugd2UgdXNlIG1hcHBpbmcgaW4gdGhlIGxhdHRlciAqLwogI2lmICFVU0VfV0lERUNfU1VQUE9SVAotICAgIGlmIChfbmNfdW5pY29kZV9sb2NhbGUoKSAmJiBfbmNfbG9jYWxlX2JyZWFrc19hY3MoY3VyX3Rlcm0pKSB7CisgICAgaWYgKF9uY191bmljb2RlX2xvY2FsZSgpICYmIF9uY19sb2NhbGVfYnJlYWtzX2FjcyhzcC0+X3Rlcm0pKSB7CiAJYWNzX2NoYXJzID0gTlVMTDsKIAllbmFfYWNzID0gTlVMTDsKIAllbnRlcl9hbHRfY2hhcnNldF9tb2RlID0gTlVMTDsKQEAgLTUxNCwxMzQgKzU3NiwyMDIgQEAKIAlzZXRfYXR0cmlidXRlcyA9IE5VTEw7CiAgICAgfQogI2VuZGlmCi0gICAgX25jX2luaXRfYWNzKCk7Ci0jaWYgVVNFX1dJREVDX1NVUFBPUlQKLSAgICBfbmNfaW5pdF93YWNzKCk7CisjZW5kaWYKIAotICAgIFNQLT5fc2NyZWVuX2Fjc19maXggPSAoX25jX3VuaWNvZGVfbG9jYWxlKCkKLQkJCSAgICYmIF9uY19sb2NhbGVfYnJlYWtzX2FjcyhjdXJfdGVybSkpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfaW5pdF9hY3MpIChOQ1VSU0VTX1NQX0FSRyk7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKyAgICBzcC0+X3NjcmVlbl91bmljb2RlID0gX25jX3VuaWNvZGVfbG9jYWxlKCk7CisgICAgaWYgKF9uY193YWNzID09IDApIHsKKwlfbmNfaW5pdF93YWNzKCk7CisgICAgfQorICAgIGlmIChfbmNfd2FjcyA9PSAwKSB7CisJUmV0dXJuU2NyZWVuRXJyb3IoKTsKKyAgICB9CisKKyAgICBzcC0+X3NjcmVlbl9hY3NfZml4ID0gKHNwLT5fc2NyZWVuX3VuaWNvZGUKKwkJCSAgICYmIF9uY19sb2NhbGVfYnJlYWtzX2FjcyhzcC0+X3Rlcm0pKTsKICNlbmRpZgogICAgIGVudiA9IF9uY19nZXRfbG9jYWxlKCk7Ci0gICAgU1AtPl9sZWdhY3lfY29kaW5nID0gKChlbnYgPT0gMCkKKyAgICBzcC0+X2xlZ2FjeV9jb2RpbmcgPSAoKGVudiA9PSAwKQogCQkJICB8fCAhc3RyY21wKGVudiwgIkMiKQogCQkJICB8fCAhc3RyY21wKGVudiwgIlBPU0lYIikpOwotICAgIFQoKCJsZWdhY3ktY29kaW5nICVkIiwgU1AtPl9sZWdhY3lfY29kaW5nKSk7CisgICAgVCgoImxlZ2FjeS1jb2RpbmcgJWQiLCBzcC0+X2xlZ2FjeV9jb2RpbmcpKTsKIAotICAgIF9uY19pZGNvayA9IFRSVUU7Ci0gICAgX25jX2lkbG9rID0gRkFMU0U7CisgICAgc3AtPl9uY19zcF9pZGNvayA9IFRSVUU7CisgICAgc3AtPl9uY19zcF9pZGxvayA9IEZBTFNFOwogCi0gICAgU1AtPm9sZGhhc2ggPSAwOwotICAgIFNQLT5uZXdoYXNoID0gMDsKKyAgICBzcC0+b2xkaGFzaCA9IDA7CisgICAgc3AtPm5ld2hhc2ggPSAwOwogCiAgICAgVCgoImNyZWF0aW5nIG5ld3NjciIpKTsKLSAgICBpZiAoKFNQLT5fbmV3c2NyID0gbmV3d2luKHNsaW5lcywgc2NvbHVtbnMsIDAsIDApKSA9PSAwKQotCXJldHVybkNvZGUoRVJSKTsKLQorICAgIE5ld1NjcmVlbihzcCkgPSBOQ1VSU0VTX1NQX05BTUUobmV3d2luKSAoTkNVUlNFU19TUF9BUkd4IHNsaW5lcywgc2NvbHVtbnMsCisJCQkJCSAgICAgMCwgMCk7CisgICAgaWYgKE5ld1NjcmVlbihzcCkgPT0gMCkgeworCVJldHVyblNjcmVlbkVycm9yKCk7CisgICAgfQogICAgIFQoKCJjcmVhdGluZyBjdXJzY3IiKSk7Ci0gICAgaWYgKChTUC0+X2N1cnNjciA9IG5ld3dpbihzbGluZXMsIHNjb2x1bW5zLCAwLCAwKSkgPT0gMCkKLQlyZXR1cm5Db2RlKEVSUik7Ci0KKyAgICBDdXJTY3JlZW4oc3ApID0gTkNVUlNFU19TUF9OQU1FKG5ld3dpbikgKE5DVVJTRVNfU1BfQVJHeCBzbGluZXMsIHNjb2x1bW5zLAorCQkJCQkgICAgIDAsIDApOworICAgIGlmIChDdXJTY3JlZW4oc3ApID09IDApIHsKKwlSZXR1cm5TY3JlZW5FcnJvcigpOworICAgIH0KICNpZiAhVVNFX1JFRU5UUkFOVAotICAgIG5ld3NjciA9IFNQLT5fbmV3c2NyOwotICAgIGN1cnNjciA9IFNQLT5fY3Vyc2NyOworICAgIG5ld3NjciA9IE5ld1NjcmVlbihzcCk7CisgICAgY3Vyc2NyID0gQ3VyU2NyZWVuKHNwKTsKICNlbmRpZgogI2lmIFVTRV9TSVpFQ0hBTkdFCi0gICAgU1AtPl9yZXNpemUgPSByZXNpemV0ZXJtOworICAgIHNwLT5fcmVzaXplID0gTkNVUlNFU19TUF9OQU1FKHJlc2l6ZXRlcm0pOworICAgIHNwLT5fdW5nZXRjaCA9IHNhZmVfdW5nZXRjaDsKICNlbmRpZgogCi0gICAgbmV3c2NyLT5fY2xlYXIgPSBUUlVFOwotICAgIGN1cnNjci0+X2NsZWFyID0gRkFMU0U7CisgICAgTmV3U2NyZWVuKHNwKS0+X2NsZWFyID0gVFJVRTsKKyAgICBDdXJTY3JlZW4oc3ApLT5fY2xlYXIgPSBGQUxTRTsKIAotICAgIGRlZl9zaGVsbF9tb2RlKCk7Ci0gICAgZGVmX3Byb2dfbW9kZSgpOworICAgIE5DVVJTRVNfU1BfTkFNRShkZWZfc2hlbGxfbW9kZSkgKE5DVVJTRVNfU1BfQVJHKTsKKyAgICBOQ1VSU0VTX1NQX05BTUUoZGVmX3Byb2dfbW9kZSkgKE5DVVJTRVNfU1BfQVJHKTsKIAotICAgIGZvciAocm9wID0gcmlwb2ZmX3N0YWNrOwotCSByb3AgIT0gcmlwb2ZmX3NwICYmIChyb3AgLSByaXBvZmZfc3RhY2spIDwgTl9SSVBTOwotCSByb3ArKykgeworICAgIGlmIChzYWZlX3JpcG9mZl9zcCAmJiBzYWZlX3JpcG9mZl9zcCAhPSBzYWZlX3JpcG9mZl9zdGFjaykgeworCWZvciAocm9wID0gc2FmZV9yaXBvZmZfc3RhY2s7CisJICAgICByb3AgIT0gc2FmZV9yaXBvZmZfc3AgJiYgKHJvcCAtIHNhZmVfcmlwb2ZmX3N0YWNrKSA8IE5fUklQUzsKKwkgICAgIHJvcCsrKSB7CiAKLQkvKiBJZiB3ZSBtdXN0IHNpbXVsYXRlIHNvZnQgbGFiZWxzLCBncmFiIG9mZiB0aGUgbGluZSB0byBiZSB1c2VkLgotCSAgIFdlIGFzc3VtZSB0aGF0IHdlIG11c3Qgc2ltdWxhdGUsIGlmIGl0IGlzIG5vbmUgb2YgdGhlIHN0YW5kYXJkCi0JICAgZm9ybWF0cyAoNC00IG9yIDMtMi0zKSBmb3Igd2hpY2ggdGhlcmUgbWF5IGJlIHNvbWUgaGFyZHdhcmUKLQkgICBzdXBwb3J0LiAqLwotCWlmIChyb3AtPmhvb2sgPT0gX25jX3Nsa19pbml0aWFsaXplKQotCSAgICBpZiAoIShudW1fbGFiZWxzIDw9IDAgfHwgIVNMS19TVERGTVQoc2xrX2Zvcm1hdCkpKQotCQljb250aW51ZTsKLQlpZiAocm9wLT5ob29rKSB7Ci0JICAgIGludCBjb3VudDsKLQkgICAgV0lORE9XICp3OwotCi0JICAgIGNvdW50ID0gKHJvcC0+bGluZSA8IDApID8gLXJvcC0+bGluZSA6IHJvcC0+bGluZTsKLQkgICAgVCgoInJpcHBpbmcgb2ZmICVpIGxpbmVzIGF0ICVzIiwgY291bnQsCi0JICAgICAgICgocm9wLT5saW5lIDwgMCkKLQkJPyAiYm90dG9tIgotCQk6ICJ0b3AiKSkpOwotCi0JICAgIHcgPSBuZXd3aW4oY291bnQsIHNjb2x1bW5zLAotCQkgICAgICAgKChyb3AtPmxpbmUgPCAwKQotCQkJPyBTUC0+X2xpbmVzX2F2YWlsIC0gY291bnQKLQkJCTogMCksCi0JCSAgICAgICAwKTsKLQkgICAgaWYgKHcpIHsKLQkJcm9wLT53aW4gPSB3OwotCQlyb3AtPmhvb2sodywgc2NvbHVtbnMpOwotCSAgICB9IGVsc2UgewotCQlyZXR1cm5Db2RlKEVSUik7CisJICAgIC8qIElmIHdlIG11c3Qgc2ltdWxhdGUgc29mdCBsYWJlbHMsIGdyYWIgb2ZmIHRoZSBsaW5lIHRvIGJlIHVzZWQuCisJICAgICAgIFdlIGFzc3VtZSB0aGF0IHdlIG11c3Qgc2ltdWxhdGUsIGlmIGl0IGlzIG5vbmUgb2YgdGhlIHN0YW5kYXJkCisJICAgICAgIGZvcm1hdHMgKDQtNCBvciAzLTItMykgZm9yIHdoaWNoIHRoZXJlIG1heSBiZSBzb21lIGhhcmR3YXJlCisJICAgICAgIHN1cHBvcnQuICovCisJICAgIGlmIChyb3AtPmhvb2sgPT0gX25jX3Nsa19pbml0aWFsaXplKSB7CisJCWlmICghKE51bUxhYmVscyA8PSAwIHx8ICFTTEtfU1RERk1UKHNsa19mb3JtYXQpKSkgeworCQkgICAgY29udGludWU7CisJCX0KIAkgICAgfQotCSAgICBpZiAocm9wLT5saW5lIDwgMCkKLQkJYm90dG9tX3N0b2xlbiArPSBjb3VudDsKLQkgICAgZWxzZQotCQlTUC0+X3RvcHN0b2xlbiArPSBjb3VudDsKLQkgICAgU1AtPl9saW5lc19hdmFpbCAtPSBjb3VudDsKKwkgICAgaWYgKHJvcC0+aG9vaykgeworCQlpbnQgY291bnQ7CisJCVdJTkRPVyAqdzsKKworCQljb3VudCA9IChyb3AtPmxpbmUgPCAwKSA/IC1yb3AtPmxpbmUgOiByb3AtPmxpbmU7CisJCVQoKCJyaXBwaW5nIG9mZiAlaSBsaW5lcyBhdCAlcyIsIGNvdW50LAorCQkgICAoKHJvcC0+bGluZSA8IDApCisJCSAgICA/ICJib3R0b20iCisJCSAgICA6ICJ0b3AiKSkpOworCisJCXcgPSBOQ1VSU0VTX1NQX05BTUUobmV3d2luKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCSAgICAgY291bnQsIHNjb2x1bW5zLAorCQkJCQkgICAgICgocm9wLT5saW5lIDwgMCkKKwkJCQkJICAgICAgPyBzcC0+X2xpbmVzX2F2YWlsIC0gY291bnQKKwkJCQkJICAgICAgOiAwKSwKKwkJCQkJICAgICAwKTsKKwkJaWYgKHcpIHsKKwkJICAgIHJvcC0+d2luID0gdzsKKwkJICAgIHJvcC0+aG9vayh3LCBzY29sdW1ucyk7CisJCX0gZWxzZSB7CisJCSAgICBSZXR1cm5TY3JlZW5FcnJvcigpOworCQl9CisJCWlmIChyb3AtPmxpbmUgPCAwKSB7CisJCSAgICBib3R0b21fc3RvbGVuICs9IGNvdW50OworCQl9IGVsc2UgeworCQkgICAgc3AtPl90b3BzdG9sZW4gPSAoTkNVUlNFU19TSVpFX1QpIChzcC0+X3RvcHN0b2xlbiArIGNvdW50KTsKKwkJfQorCQlzcC0+X2xpbmVzX2F2YWlsID0gKE5DVVJTRVNfU0laRV9UKSAoc3AtPl9saW5lc19hdmFpbCAtIGNvdW50KTsKKwkgICAgfQogCX0KKwkvKiByZXNldCB0aGUgc3RhY2sgKi8KKwlzYWZlX3JpcG9mZl9zcCA9IHNhZmVfcmlwb2ZmX3N0YWNrOwogICAgIH0KLSAgICAvKiByZXNldCB0aGUgc3RhY2sgKi8KLSAgICByaXBvZmZfc3AgPSByaXBvZmZfc3RhY2s7CiAKICAgICBUKCgiY3JlYXRpbmcgc3Rkc2NyIikpOwotICAgIGFzc2VydCgoU1AtPl9saW5lc19hdmFpbCArIFNQLT5fdG9wc3RvbGVuICsgYm90dG9tX3N0b2xlbikgPT0gc2xpbmVzKTsKLSAgICBpZiAoKFNQLT5fc3Rkc2NyID0gbmV3d2luKFNQLT5fbGluZXNfYXZhaWwsIHNjb2x1bW5zLCAwLCAwKSkgPT0gMCkKLQlyZXR1cm5Db2RlKEVSUik7Ci0KLSAgICBTRVRfTElORVMoU1AtPl9saW5lc19hdmFpbCk7CisgICAgYXNzZXJ0KChzcC0+X2xpbmVzX2F2YWlsICsgc3AtPl90b3BzdG9sZW4gKyBib3R0b21fc3RvbGVuKSA9PSBzbGluZXMpOworICAgIGlmICgoU3RkU2NyZWVuKHNwKSA9IE5DVVJTRVNfU1BfTkFNRShuZXd3aW4pIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJCSAgc3AtPl9saW5lc19hdmFpbCwKKwkJCQkJCSAgc2NvbHVtbnMsIDAsIDApKSA9PSAwKSB7CisJUmV0dXJuU2NyZWVuRXJyb3IoKTsKKyAgICB9CisgICAgU0VUX0xJTkVTKHNwLT5fbGluZXNfYXZhaWwpOwogI2lmICFVU0VfUkVFTlRSQU5UCi0gICAgc3Rkc2NyID0gU1AtPl9zdGRzY3I7CisgICAgc3Rkc2NyID0gU3RkU2NyZWVuKHNwKTsKICNlbmRpZgotCisgICAgc3AtPl9wcmVzY3JlZW4gPSBGQUxTRTsKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19zZXR1cHNjcmVlbihpbnQgc2xpbmVzIEdDQ19VTlVTRUQsCisJCWludCBzY29sdW1ucyBHQ0NfVU5VU0VELAorCQlGSUxFICpvdXRwdXQsCisJCWludCBmaWx0ZXJlZCwKKwkJaW50IHNsa19mb3JtYXQpCit7CisgICAgU0NSRUVOICpzcCA9IDA7CisgICAgaW50IHJjID0gTkNVUlNFU19TUF9OQU1FKF9uY19zZXR1cHNjcmVlbikgKCZzcCwKKwkJCQkJICAgICAgIHNsaW5lcywKKwkJCQkJICAgICAgIHNjb2x1bW5zLAorCQkJCQkgICAgICAgb3V0cHV0LAorCQkJCQkgICAgICAgZmlsdGVyZWQsCisJCQkJCSAgICAgICBzbGtfZm9ybWF0KTsKKyAgICBpZiAocmMgIT0gT0spCisJX25jX3NldF9zY3JlZW4oMCk7CisgICAgcmV0dXJuIHJjOworfQorI2VuZGlmCisKIC8qCiAgKiBUaGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gaW50ZXJwcmV0cyBsaW5lIGFzIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gcmlwCiAgKiBvZmYgZnJvbSB0aGUgdG9wIG9yIGJvdHRvbS4KICAqLwogTkNVUlNFU19FWFBPUlQoaW50KQotX25jX3JpcG9mZmxpbmUoaW50IGxpbmUsIGludCAoKmluaXQpIChXSU5ET1cgKiwgaW50KSkKK05DVVJTRVNfU1BfTkFNRShfbmNfcmlwb2ZmbGluZSkgKE5DVVJTRVNfU1BfRENMeAorCQkJCSBpbnQgbGluZSwKKwkJCQkgaW50ICgqaW5pdCkgKFdJTkRPVyAqLCBpbnQpKQogewotICAgIFQoKFRfQ0FMTEVEKCJfbmNfcmlwb2ZmbGluZSglZCwgJXApIiksIGxpbmUsIGluaXQpKTsKKyAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIGlmIChsaW5lICE9IDApIHsKKyAgICBTVEFSVF9UUkFDRSgpOworICAgIFQoKFRfQ0FMTEVEKCJyaXBvZmZsaW5lKCVwLCVkLCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBsaW5lLCBpbml0KSk7CiAKLQlpZiAocmlwb2ZmX3NwID09IDApCi0JICAgIHJpcG9mZl9zcCA9IHJpcG9mZl9zdGFjazsKLQlpZiAocmlwb2ZmX3NwID49IHJpcG9mZl9zdGFjayArIE5fUklQUykKLQkgICAgcmV0dXJuQ29kZShFUlIpOwotCi0Jcmlwb2ZmX3NwLT5saW5lID0gbGluZTsKLQlyaXBvZmZfc3AtPmhvb2sgPSBpbml0OwotCXJpcG9mZl9zcCsrOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmIFNQX1BBUk0tPl9wcmVzY3JlZW4pCisjZW5kaWYKKyAgICB7CisJaWYgKGxpbmUgPT0gMCkgeworCSAgICBjb2RlID0gT0s7CisJfSBlbHNlIHsKKwkgICAgaWYgKHNhZmVfcmlwb2ZmX3NwID09IDApCisJCXNhZmVfcmlwb2ZmX3NwID0gc2FmZV9yaXBvZmZfc3RhY2s7CisJICAgIGlmIChzYWZlX3JpcG9mZl9zcCA8IHNhZmVfcmlwb2ZmX3N0YWNrICsgTl9SSVBTKSB7CisJCXNhZmVfcmlwb2ZmX3NwLT5saW5lID0gbGluZTsKKwkJc2FmZV9yaXBvZmZfc3AtPmhvb2sgPSBpbml0OworCQkoc2FmZV9yaXBvZmZfc3ApKys7CisJCWNvZGUgPSBPSzsKKwkgICAgfQorCX0KICAgICB9CiAKLSAgICByZXR1cm5Db2RlKE9LKTsKKyAgICByZXR1cm5Db2RlKGNvZGUpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorX25jX3JpcG9mZmxpbmUoaW50IGxpbmUsIGludCAoKmluaXQpIChXSU5ET1cgKiwgaW50KSkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19yaXBvZmZsaW5lKSAoQ1VSUkVOVF9TQ1JFRU5fUFJFLCBsaW5lLCBpbml0KTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUocmlwb2ZmbGluZSkgKE5DVVJTRVNfU1BfRENMeAorCQkJICAgICBpbnQgbGluZSwKKwkJCSAgICAgaW50ICgqaW5pdCkgKFdJTkRPVyAqLCBpbnQpKQoreworICAgIFNUQVJUX1RSQUNFKCk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfcmlwb2ZmbGluZSkgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQkgICAgKGxpbmUgPCAwKSA/IC0xIDogMSwKKwkJCQkJICAgIGluaXQpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogcmlwb2ZmbGluZShpbnQgbGluZSwgaW50ICgqaW5pdCkgKFdJTkRPVyAqLCBpbnQpKQogewotICAgIFNUQVJUX1RSQUNFKCk7Ci0gICAgVCgoVF9DQUxMRUQoInJpcG9mZmxpbmUoJWQsJXApIiksIGxpbmUsIGluaXQpKTsKLQotICAgIGlmIChsaW5lID09IDApCi0JcmV0dXJuQ29kZShPSyk7Ci0KLSAgICByZXR1cm5Db2RlKF9uY19yaXBvZmZsaW5lKChsaW5lIDwgMCkgPyAtMSA6IDEsIGluaXQpKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHJpcG9mZmxpbmUpIChDVVJSRU5UX1NDUkVFTl9QUkUsIGxpbmUsIGluaXQpOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsay5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGsuYwppbmRleCA2NjJmN2U0Li44NGYxN2FlIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsay5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2xrLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MSwyNiArNDEsOTQgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLQogI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8dGVybS5oPgkJLyogbnVtX2xhYmVscywgbGFiZWxfKiwgcGxhYl9ub3JtICovCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrLmMsdiAxLjM1IDIwMDgvMDkvMjcgMTQ6MDc6MzMganVlcmdlbiBFeHAgJCIpCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogbGliX3Nsay5jLHYgMS40OCAyMDExLzAzLzA1IDIxOjIxOjUyIHRvbSBFeHAgJCIpCisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyNkZWZpbmUgTnVtTGFiZWxzICAgIEluZm9PZihTUF9QQVJNKS5udW1sYWJlbHMKKyNkZWZpbmUgTm9Db2xvclZpZGVvIEluZm9PZihTUF9QQVJNKS5ub2NvbG9ydmlkZW8KKyNkZWZpbmUgTGFiZWxXaWR0aCAgIEluZm9PZihTUF9QQVJNKS5sYWJlbHdpZHRoCisjZGVmaW5lIExhYmVsSGVpZ2h0ICBJbmZvT2YoU1BfUEFSTSkubGFiZWxoZWlnaHQKKyNlbHNlCisjZGVmaW5lIE51bUxhYmVscyAgICBudW1fbGFiZWxzCisjZGVmaW5lIE5vQ29sb3JWaWRlbyBub19jb2xvcl92aWRlbworI2RlZmluZSBMYWJlbFdpZHRoICAgbGFiZWxfd2lkdGgKKyNkZWZpbmUgTGFiZWxIZWlnaHQgIGxhYmVsX2hlaWdodAorI2VuZGlmCiAKIC8qCiAgKiBGcmVlIGFueSBtZW1vcnkgcmVsYXRlZCB0byBzb2Z0IGxhYmVscywgcmV0dXJuIGFuIGVycm9yLgogICovCiBzdGF0aWMgaW50Ci1zbGtfZmFpbGVkKHZvaWQpCitzbGtfZmFpbGVkKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICBpZiAoU1AtPl9zbGspIHsKLQlGcmVlSWZOZWVkZWQoU1AtPl9zbGstPmVudCk7Ci0JZnJlZShTUC0+X3Nsayk7Ci0JU1AtPl9zbGsgPSAoU0xLICopIDA7CisgICAgaWYgKCgwICE9IFNQX1BBUk0pICYmIFNQX1BBUk0tPl9zbGspIHsKKwlGcmVlSWZOZWVkZWQoU1BfUEFSTS0+X3Nsay0+ZW50KTsKKwlmcmVlKFNQX1BBUk0tPl9zbGspOworCVNQX1BBUk0tPl9zbGsgPSAoU0xLICopIDA7CiAgICAgfQogICAgIHJldHVybiBFUlI7CiB9CiAKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19mb3JtYXRfc2xrcyhOQ1VSU0VTX1NQX0RDTHggaW50IGNvbHMpCit7CisgICAgaW50IGdhcCwgaSwgeDsKKyAgICBpbnQgbWF4X2xlbmd0aDsKKworICAgIGlmICghU1BfUEFSTSB8fCAhU1BfUEFSTS0+X3NsaykKKwlyZXR1cm4gRVJSOworCisgICAgbWF4X2xlbmd0aCA9IFNQX1BBUk0tPl9zbGstPm1heGxlbjsKKyAgICBpZiAoU1BfUEFSTS0+c2xrX2Zvcm1hdCA+PSAzKSB7CS8qIFBDIHN0eWxlICovCisJZ2FwID0gKGNvbHMgLSAzICogKDMgKyA0ICogbWF4X2xlbmd0aCkpIC8gMjsKKworCWlmIChnYXAgPCAxKQorCSAgICBnYXAgPSAxOworCisJZm9yIChpID0geCA9IDA7IGkgPCBTUF9QQVJNLT5fc2xrLT5tYXhsYWI7IGkrKykgeworCSAgICBTUF9QQVJNLT5fc2xrLT5lbnRbaV0uZW50X3ggPSB4OworCSAgICB4ICs9IG1heF9sZW5ndGg7CisJICAgIHggKz0gKGkgPT0gMyB8fCBpID09IDcpID8gZ2FwIDogMTsKKwl9CisgICAgfSBlbHNlIHsKKwlpZiAoU1BfUEFSTS0+c2xrX2Zvcm1hdCA9PSAyKSB7CQkvKiA0LTQgKi8KKwkgICAgZ2FwID0gY29scyAtIChpbnQpIChTUF9QQVJNLT5fc2xrLT5tYXhsYWIgKiBtYXhfbGVuZ3RoKSAtIDY7CisKKwkgICAgaWYgKGdhcCA8IDEpCisJCWdhcCA9IDE7CisJICAgIGZvciAoaSA9IHggPSAwOyBpIDwgU1BfUEFSTS0+X3Nsay0+bWF4bGFiOyBpKyspIHsKKwkJU1BfUEFSTS0+X3Nsay0+ZW50W2ldLmVudF94ID0geDsKKwkJeCArPSBtYXhfbGVuZ3RoOworCQl4ICs9IChpID09IDMpID8gZ2FwIDogMTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGlmIChTUF9QQVJNLT5zbGtfZm9ybWF0ID09IDEpIHsJLyogMSAtPiAzLTItMyAqLworCQlnYXAgPSAoY29scyAtIChTUF9QQVJNLT5fc2xrLT5tYXhsYWIgKiBtYXhfbGVuZ3RoKSAtIDUpCisJCSAgICAvIDI7CisKKwkJaWYgKGdhcCA8IDEpCisJCSAgICBnYXAgPSAxOworCQlmb3IgKGkgPSB4ID0gMDsgaSA8IFNQX1BBUk0tPl9zbGstPm1heGxhYjsgaSsrKSB7CisJCSAgICBTUF9QQVJNLT5fc2xrLT5lbnRbaV0uZW50X3ggPSB4OworCQkgICAgeCArPSBtYXhfbGVuZ3RoOworCQkgICAgeCArPSAoaSA9PSAyIHx8IGkgPT0gNCkgPyBnYXAgOiAxOworCQl9CisJICAgIH0gZWxzZSB7CisJCXJldHVybiBzbGtfZmFpbGVkKE5DVVJTRVNfU1BfQVJHKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgU1BfUEFSTS0+X3Nsay0+ZGlydHkgPSBUUlVFOworCisgICAgcmV0dXJuIE9LOworfQorCiAvKgogICogSW5pdGlhbGl6ZSBzb2Z0IGxhYmVscy4KICAqIENhbGxlZCBmcm9tIG5ld3Rlcm0oKQpAQCAtNjgsMTA4ICsxMzYsOTAgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIF9uY19zbGtfaW5pdGlhbGl6ZShXSU5ET1cgKnN0d2luLCBpbnQgY29scykKIHsKLSAgICBpbnQgaSwgeDsKKyAgICBpbnQgaTsKICAgICBpbnQgcmVzID0gT0s7Ci0gICAgdW5zaWduZWQgbWF4X2xlbmd0aDsKKyAgICBzaXplX3QgbWF4X2xlbmd0aDsKKyAgICBTQ1JFRU4gKnNwOworICAgIGludCBudW1sYWI7CiAKICAgICBUKChUX0NBTExFRCgiX25jX3Nsa19pbml0aWFsaXplKCkiKSkpOwogCi0gICAgaWYgKFNQLT5fc2xrKSB7CQkvKiB3ZSBkaWQgdGhpcyBhbHJlYWR5LCBzbyBzaW1wbHkgcmV0dXJuICovCi0JcmV0dXJuQ29kZShPSyk7Ci0gICAgfSBlbHNlIGlmICgoU1AtPl9zbGsgPSB0eXBlQ2FsbG9jKFNMSywgMSkpID09IDApCisgICAgYXNzZXJ0KHN0d2luKTsKKworICAgIHNwID0gX25jX3NjcmVlbl9vZihzdHdpbik7CisgICAgaWYgKDAgPT0gc3ApCiAJcmV0dXJuQ29kZShFUlIpOwogCi0gICAgU1AtPl9zbGstPmVudCA9IE5VTEw7CisgICAgYXNzZXJ0KFRlcm1pbmFsT2YoU1BfUEFSTSkpOworCisgICAgbnVtbGFiID0gTnVtTGFiZWxzOworCisgICAgaWYgKFNQX1BBUk0tPl9zbGspIHsJLyogd2UgZGlkIHRoaXMgYWxyZWFkeSwgc28gc2ltcGx5IHJldHVybiAqLworCXJldHVybkNvZGUoT0spOworICAgIH0gZWxzZSBpZiAoKFNQX1BBUk0tPl9zbGsgPSB0eXBlQ2FsbG9jKFNMSywgMSkpID09IDApCisJcmV0dXJuQ29kZShFUlIpOworCisgICAgaWYgKCFTUF9QQVJNLT5zbGtfZm9ybWF0KQorCVNQX1BBUk0tPnNsa19mb3JtYXQgPSBfbmNfZ2xvYmFscy5zbGtfZm9ybWF0OwogCiAgICAgLyoKICAgICAgKiBJZiB3ZSB1c2UgY29sb3JzLCB2aWRwdXRzKCkgd2lsbCBzdXBwcmVzcyB2aWRlbyBhdHRyaWJ1dGVzIHRoYXQgY29uZmxpY3QKICAgICAgKiB3aXRoIGNvbG9ycy4gIEluIHRoYXQgY2FzZSwgd2UncmUgc3RpbGwgZ3VhcmFudGVlZCB0aGF0ICJyZXZlcnNlIiB3b3VsZAogICAgICAqIHdvcmsuCiAgICAgICovCi0gICAgaWYgKChub19jb2xvcl92aWRlbyAmIDEpID09IDApCi0JU2V0QXR0cihTUC0+X3Nsay0+YXR0ciwgQV9TVEFORE9VVCk7CisgICAgaWYgKChOb0NvbG9yVmlkZW8gJiAxKSA9PSAwKQorCVNldEF0dHIoU1BfUEFSTS0+X3Nsay0+YXR0ciwgQV9TVEFORE9VVCk7CiAgICAgZWxzZQotCVNldEF0dHIoU1AtPl9zbGstPmF0dHIsIEFfUkVWRVJTRSk7CisJU2V0QXR0cihTUF9QQVJNLT5fc2xrLT5hdHRyLCBBX1JFVkVSU0UpOwogCi0gICAgU1AtPl9zbGstPm1heGxhYiA9ICgobnVtX2xhYmVscyA+IDApCi0JCQk/IG51bV9sYWJlbHMKLQkJCTogTUFYX1NLRVkoX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCkpOwotICAgIFNQLT5fc2xrLT5tYXhsZW4gPSAoKG51bV9sYWJlbHMgPiAwKQotCQkJPyBsYWJlbF93aWR0aCAqIGxhYmVsX2hlaWdodAotCQkJOiBNQVhfU0tFWV9MRU4oX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCkpOwotICAgIFNQLT5fc2xrLT5sYWJjbnQgPSAoKFNQLT5fc2xrLT5tYXhsYWIgPCBNQVhfU0tFWShfbmNfZ2xvYmFscy5zbGtfZm9ybWF0KSkKLQkJCT8gTUFYX1NLRVkoX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCkKLQkJCTogU1AtPl9zbGstPm1heGxhYik7CisgICAgU1BfUEFSTS0+X3Nsay0+bWF4bGFiID0gKHNob3J0KSAoKG51bWxhYiA+IDApCisJCQkJICAgICA/IG51bWxhYgorCQkJCSAgICAgOiBNQVhfU0tFWShTUF9QQVJNLT5zbGtfZm9ybWF0KSk7CisgICAgU1BfUEFSTS0+X3Nsay0+bWF4bGVuID0gKHNob3J0KSAoKG51bWxhYiA+IDApCisJCQkJICAgICA/IExhYmVsV2lkdGggKiBMYWJlbEhlaWdodAorCQkJCSAgICAgOiBNQVhfU0tFWV9MRU4oU1BfUEFSTS0+c2xrX2Zvcm1hdCkpOworICAgIFNQX1BBUk0tPl9zbGstPmxhYmNudCA9IChzaG9ydCkgKChTUF9QQVJNLT5fc2xrLT5tYXhsYWIgPCBNQVhfU0tFWShTUF9QQVJNLT5zbGtfZm9ybWF0KSkKKwkJCQkgICAgID8gTUFYX1NLRVkoU1BfUEFSTS0+c2xrX2Zvcm1hdCkKKwkJCQkgICAgIDogU1BfUEFSTS0+X3Nsay0+bWF4bGFiKTsKIAotICAgIGlmIChTUC0+X3Nsay0+bWF4bGVuIDw9IDAKLQl8fCBTUC0+X3Nsay0+bGFiY250IDw9IDAKLQl8fCAoU1AtPl9zbGstPmVudCA9IHR5cGVDYWxsb2Moc2xrX2VudCwKLQkJCQkgICAgICAgKHVuc2lnbmVkKSBTUC0+X3Nsay0+bGFiY250KSkgPT0gTlVMTCkKLQlyZXR1cm5Db2RlKHNsa19mYWlsZWQoKSk7CisgICAgaWYgKFNQX1BBUk0tPl9zbGstPm1heGxlbiA8PSAwCisJfHwgU1BfUEFSTS0+X3Nsay0+bGFiY250IDw9IDAKKwl8fCAoU1BfUEFSTS0+X3Nsay0+ZW50ID0gdHlwZUNhbGxvYyhzbGtfZW50LAorCQkJCQkgICAgKHNpemVfdCkgU1BfUEFSTS0+X3Nsay0+bGFiY250KSkKKwk9PSBOVUxMKQorCXJldHVybkNvZGUoc2xrX2ZhaWxlZChOQ1VSU0VTX1NQX0FSRykpOwogCi0gICAgbWF4X2xlbmd0aCA9IFNQLT5fc2xrLT5tYXhsZW47Ci0gICAgZm9yIChpID0gMDsgaSA8IFNQLT5fc2xrLT5sYWJjbnQ7IGkrKykgeworICAgIG1heF9sZW5ndGggPSAoc2l6ZV90KSBTUF9QQVJNLT5fc2xrLT5tYXhsZW47CisgICAgZm9yIChpID0gMDsgaSA8IFNQX1BBUk0tPl9zbGstPmxhYmNudDsgaSsrKSB7CiAJc2l6ZV90IHVzZWQgPSBtYXhfbGVuZ3RoICsgMTsKIAotCWlmICgoU1AtPl9zbGstPmVudFtpXS5lbnRfdGV4dCA9IChjaGFyICopIF9uY19kb2FsbG9jKDAsIHVzZWQpKSA9PSAwKQotCSAgICByZXR1cm5Db2RlKHNsa19mYWlsZWQoKSk7Ci0JbWVtc2V0KFNQLT5fc2xrLT5lbnRbaV0uZW50X3RleHQsIDAsIHVzZWQpOworCVNQX1BBUk0tPl9zbGstPmVudFtpXS5lbnRfdGV4dCA9IChjaGFyICopIF9uY19kb2FsbG9jKDAsIHVzZWQpOworCWlmIChTUF9QQVJNLT5fc2xrLT5lbnRbaV0uZW50X3RleHQgPT0gMCkKKwkgICAgcmV0dXJuQ29kZShzbGtfZmFpbGVkKE5DVVJTRVNfU1BfQVJHKSk7CisJbWVtc2V0KFNQX1BBUk0tPl9zbGstPmVudFtpXS5lbnRfdGV4dCwgMCwgdXNlZCk7CiAKLQlpZiAoKFNQLT5fc2xrLT5lbnRbaV0uZm9ybV90ZXh0ID0gKGNoYXIgKikgX25jX2RvYWxsb2MoMCwgdXNlZCkpID09IDApCi0JICAgIHJldHVybkNvZGUoc2xrX2ZhaWxlZCgpKTsKLQltZW1zZXQoU1AtPl9zbGstPmVudFtpXS5mb3JtX3RleHQsIDAsIHVzZWQpOworCVNQX1BBUk0tPl9zbGstPmVudFtpXS5mb3JtX3RleHQgPSAoY2hhciAqKSBfbmNfZG9hbGxvYygwLCB1c2VkKTsKKwlpZiAoU1BfUEFSTS0+X3Nsay0+ZW50W2ldLmZvcm1fdGV4dCA9PSAwKQorCSAgICByZXR1cm5Db2RlKHNsa19mYWlsZWQoTkNVUlNFU19TUF9BUkcpKTsKIAotCW1lbXNldChTUC0+X3Nsay0+ZW50W2ldLmZvcm1fdGV4dCwgJyAnLCBtYXhfbGVuZ3RoKTsKLQlTUC0+X3Nsay0+ZW50W2ldLnZpc2libGUgPSAoY2hhcikgKGkgPCBTUC0+X3Nsay0+bWF4bGFiKTsKLSAgICB9Ci0gICAgaWYgKF9uY19nbG9iYWxzLnNsa19mb3JtYXQgPj0gMykgewkvKiBQQyBzdHlsZSAqLwotCWludCBnYXAgPSAoY29scyAtIDMgKiAoMyArIDQgKiBtYXhfbGVuZ3RoKSkgLyAyOwotCi0JaWYgKGdhcCA8IDEpCi0JICAgIGdhcCA9IDE7Ci0KLQlmb3IgKGkgPSB4ID0gMDsgaSA8IFNQLT5fc2xrLT5tYXhsYWI7IGkrKykgewotCSAgICBTUC0+X3Nsay0+ZW50W2ldLmVudF94ID0geDsKLQkgICAgeCArPSBtYXhfbGVuZ3RoOwotCSAgICB4ICs9IChpID09IDMgfHwgaSA9PSA3KSA/IGdhcCA6IDE7CisJaWYgKHVzZWQgPiAxKSB7CisJICAgIG1lbXNldChTUF9QQVJNLT5fc2xrLT5lbnRbaV0uZm9ybV90ZXh0LCAnICcsIHVzZWQgLSAxKTsKIAl9Ci0gICAgfSBlbHNlIHsKLQlpZiAoX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCA9PSAyKSB7CS8qIDQtNCAqLwotCSAgICBpbnQgZ2FwID0gY29scyAtIChTUC0+X3Nsay0+bWF4bGFiICogbWF4X2xlbmd0aCkgLSA2OworCVNQX1BBUk0tPl9zbGstPmVudFtpXS5mb3JtX3RleHRbdXNlZCAtIDFdID0gJ1wwJzsKIAotCSAgICBpZiAoZ2FwIDwgMSkKLQkJZ2FwID0gMTsKLQkgICAgZm9yIChpID0geCA9IDA7IGkgPCBTUC0+X3Nsay0+bWF4bGFiOyBpKyspIHsKLQkJU1AtPl9zbGstPmVudFtpXS5lbnRfeCA9IHg7Ci0JCXggKz0gbWF4X2xlbmd0aDsKLQkJeCArPSAoaSA9PSAzKSA/IGdhcCA6IDE7Ci0JICAgIH0KLQl9IGVsc2UgewotCSAgICBpZiAoX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCA9PSAxKSB7CS8qIDEgLT4gMy0yLTMgKi8KLQkJaW50IGdhcCA9IChjb2xzIC0gKFNQLT5fc2xrLT5tYXhsYWIgKiBtYXhfbGVuZ3RoKSAtIDUpCi0JCS8gMjsKLQotCQlpZiAoZ2FwIDwgMSkKLQkJICAgIGdhcCA9IDE7Ci0JCWZvciAoaSA9IHggPSAwOyBpIDwgU1AtPl9zbGstPm1heGxhYjsgaSsrKSB7Ci0JCSAgICBTUC0+X3Nsay0+ZW50W2ldLmVudF94ID0geDsKLQkJICAgIHggKz0gbWF4X2xlbmd0aDsKLQkJICAgIHggKz0gKGkgPT0gMiB8fCBpID09IDQpID8gZ2FwIDogMTsKLQkJfQotCSAgICB9IGVsc2UKLQkJcmV0dXJuQ29kZShzbGtfZmFpbGVkKCkpOwotCX0KKwlTUF9QQVJNLT5fc2xrLT5lbnRbaV0udmlzaWJsZSA9IChjaGFyKSAoaSA8IFNQX1BBUk0tPl9zbGstPm1heGxhYik7CiAgICAgfQotICAgIFNQLT5fc2xrLT5kaXJ0eSA9IFRSVUU7Ci0gICAgaWYgKChTUC0+X3Nsay0+d2luID0gc3R3aW4pID09IE5VTEwpIHsKLQlyZXR1cm5Db2RlKHNsa19mYWlsZWQoKSk7CisKKyAgICByZXMgPSBfbmNfZm9ybWF0X3Nsa3MoTkNVUlNFU19TUF9BUkd4IGNvbHMpOworCisgICAgaWYgKChTUF9QQVJNLT5fc2xrLT53aW4gPSBzdHdpbikgPT0gTlVMTCkgeworCXJldHVybkNvZGUoc2xrX2ZhaWxlZChOQ1VSU0VTX1NQX0FSRykpOwogICAgIH0KIAogICAgIC8qIFdlIG5vdyByZXNldCB0aGUgZm9ybWF0IHNvIHRoYXQgdGhlIG5leHQgbmV3dGVybSBoYXMgYWdhaW4KICAgICAgKiBwZXIgZGVmYXVsdCBubyBTTEsga2V5cyBhbmQgbWF5IGNhbGwgc2xrX2luaXQgYWdhaW4gdG8KICAgICAgKiBkZWZpbmUgYSBuZXcgbGF5b3V0LiAoanVlcmdlbiAwMy1NYXItMTk5OSkKICAgICAgKi8KLSAgICBTUC0+c2xrX2Zvcm1hdCA9IF9uY19nbG9iYWxzLnNsa19mb3JtYXQ7CiAgICAgX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCA9IDA7CiAgICAgcmV0dXJuQ29kZShyZXMpOwogfQpAQCAtMTc4LDE0ICsyMjgsMjQgQEAKICAqIFJlc3RvcmUgdGhlIHNvZnQgbGFiZWxzIG9uIHRoZSBzY3JlZW4uCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzbGtfcmVzdG9yZSkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBUKChUX0NBTExFRCgic2xrX3Jlc3RvcmUoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmICgwID09IFNQX1BBUk0pCisJcmV0dXJuQ29kZShFUlIpOworICAgIGlmIChTUF9QQVJNLT5fc2xrID09IE5VTEwpCisJcmV0dXJuQ29kZShFUlIpOworICAgIFNQX1BBUk0tPl9zbGstPmhpZGRlbiA9IEZBTFNFOworICAgIFNQX1BBUk0tPl9zbGstPmRpcnR5ID0gVFJVRTsKKworICAgIHJldHVybkNvZGUoTkNVUlNFU19TUF9OQU1FKHNsa19yZWZyZXNoKSAoTkNVUlNFU19TUF9BUkcpKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKIHNsa19yZXN0b3JlKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInNsa19yZXN0b3JlKCkiKSkpOwotCi0gICAgaWYgKFNQLT5fc2xrID09IE5VTEwpCi0JcmV0dXJuIChFUlIpOwotICAgIFNQLT5fc2xrLT5oaWRkZW4gPSBGQUxTRTsKLSAgICBTUC0+X3Nsay0+ZGlydHkgPSBUUlVFOwotCi0gICAgcmV0dXJuQ29kZShzbGtfcmVmcmVzaCgpKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNsa19yZXN0b3JlKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2F0cl9zZXQuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyX3NldC5jCmluZGV4IGY4MzYxNmIuLmEzMTMyZTkgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyX3NldC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyX3NldC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNyArMjgsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogIEp1ZXJnZW4gUGZlaWZlciwgMTk5OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICBhbmQ6ICBUaG9tYXMgRS4gRGlja2V5IDIwMDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiAgVGhvbWFzIEUuIERpY2tleSAyMDA1LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zOCwyMiArMzgsNDIgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrYXRyX3NldC5jLHYgMS4xMCAyMDA1LzAxLzI4IDIxOjExOjUzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Nsa2F0cl9zZXQuYyx2IDEuMTUgMjAxNC8wMi8wMSAyMjoxMDo0MiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1zbGtfYXR0cl9zZXQoY29uc3QgYXR0cl90IGF0dHIsIHNob3J0IGNvbG9yX3BhaXJfbnVtYmVyLCB2b2lkICpvcHRzKQorTkNVUlNFU19TUF9OQU1FKHNsa19hdHRyX3NldCkgKE5DVVJTRVNfU1BfRENMeAorCQkJICAgICAgIGNvbnN0IGF0dHJfdCBhdHRyLAorCQkJICAgICAgIE5DVVJTRVNfUEFJUlNfVCBjb2xvcl9wYWlyX251bWJlciwKKwkJCSAgICAgICB2b2lkICpvcHRzKQogewotICAgIFQoKFRfQ0FMTEVEKCJzbGtfYXR0cl9zZXQoJXMsJWQpIiksIF90cmFjZWF0dHIoYXR0ciksIGNvbG9yX3BhaXJfbnVtYmVyKSk7CisgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBpZiAoU1AgIT0gMCAmJiBTUC0+X3NsayAhPSAwICYmICFvcHRzICYmCi0JY29sb3JfcGFpcl9udW1iZXIgPj0gMCAmJiBjb2xvcl9wYWlyX251bWJlciA8IENPTE9SX1BBSVJTKSB7Ci0JVFIoVFJBQ0VfQVRUUlMsICgiLi4uIGN1cnJlbnQgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQLT5fc2xrLT5hdHRyKSkpKTsKLQlTZXRBdHRyKFNQLT5fc2xrLT5hdHRyLCBhdHRyKTsKKyAgICBUKChUX0NBTExFRCgic2xrX2F0dHJfc2V0KCVwLCVzLCVkKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sCisgICAgICAgX3RyYWNlYXR0cihhdHRyKSwKKyAgICAgICAoaW50KSBjb2xvcl9wYWlyX251bWJlcikpOworCisgICAgaWYgKFNQX1BBUk0gIT0gMAorCSYmIFNQX1BBUk0tPl9zbGsgIT0gMAorCSYmICFvcHRzCisJJiYgY29sb3JfcGFpcl9udW1iZXIgPj0gMAorCSYmIGNvbG9yX3BhaXJfbnVtYmVyIDwgU1BfUEFSTS0+X3BhaXJfbGltaXQpIHsKKwlUUihUUkFDRV9BVFRSUywgKCIuLi4gY3VycmVudCAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1BfUEFSTS0+X3Nsay0+YXR0cikpKSk7CisJU2V0QXR0cihTUF9QQVJNLT5fc2xrLT5hdHRyLCBhdHRyKTsKIAlpZiAoY29sb3JfcGFpcl9udW1iZXIgPiAwKSB7Ci0JICAgIFNldFBhaXIoU1AtPl9zbGstPmF0dHIsIGNvbG9yX3BhaXJfbnVtYmVyKTsKKwkgICAgU2V0UGFpcihTUF9QQVJNLT5fc2xrLT5hdHRyLCBjb2xvcl9wYWlyX251bWJlcik7CiAJfQotCVRSKFRSQUNFX0FUVFJTLCAoIm5ldyBhdHRyaWJ1dGUgaXMgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQLT5fc2xrLT5hdHRyKSkpKTsKLQlyZXR1cm5Db2RlKE9LKTsKLSAgICB9IGVsc2UKLQlyZXR1cm5Db2RlKEVSUik7CisJVFIoVFJBQ0VfQVRUUlMsICgibmV3IGF0dHJpYnV0ZSBpcyAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1BfUEFSTS0+X3Nsay0+YXR0cikpKSk7CisJY29kZSA9IE9LOworICAgIH0KKyAgICByZXR1cm5Db2RlKGNvZGUpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorc2xrX2F0dHJfc2V0KGNvbnN0IGF0dHJfdCBhdHRyLCBOQ1VSU0VTX0NPTE9SX1QgY29sb3JfcGFpcl9udW1iZXIsIHZvaWQgKm9wdHMpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfYXR0cl9zZXQpIChDVVJSRU5UX1NDUkVFTiwgYXR0ciwKKwkJCQkJICBjb2xvcl9wYWlyX251bWJlciwgb3B0cyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyb2YuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyb2YuYwppbmRleCAxNGI0YzNiLi5iYjk4MGFiIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2F0cm9mLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHJvZi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsMjEgKzM4LDI5IEBACiAgKi8KICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Nsa2F0cm9mLmMsdiAxLjggMjAwNS8wMS8wOCAyMzowMTozMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zbGthdHJvZi5jLHYgMS4xMSAyMDA5LzEwLzI0IDIyOjEyOjIxIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNsa19hdHRyb2ZmKGNvbnN0IGNodHlwZSBhdHRyKQorTkNVUlNFU19TUF9OQU1FKHNsa19hdHRyb2ZmKSAoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IGNodHlwZSBhdHRyKQogewotICAgIFQoKFRfQ0FMTEVEKCJzbGtfYXR0cm9mZiglcykiKSwgX3RyYWNlYXR0cihhdHRyKSkpOworICAgIFQoKFRfQ0FMTEVEKCJzbGtfYXR0cm9mZiglcCwlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgX3RyYWNlYXR0cihhdHRyKSkpOwogCi0gICAgaWYgKFNQICE9IDAgJiYgU1AtPl9zbGsgIT0gMCkgewotCVRSKFRSQUNFX0FUVFJTLCAoIi4uLiBjdXJyZW50ICVzIiwgX3RyYWNlY2hfdChDSFJFRihTUC0+X3Nsay0+YXR0cikpKSk7Ci0JUmVtQXR0cihTUC0+X3Nsay0+YXR0ciwgYXR0cik7CisgICAgaWYgKFNQX1BBUk0gIT0gMCAmJiBTUF9QQVJNLT5fc2xrICE9IDApIHsKKwlUUihUUkFDRV9BVFRSUywgKCIuLi4gY3VycmVudCAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1BfUEFSTS0+X3Nsay0+YXR0cikpKSk7CisJUmVtQXR0cihTUF9QQVJNLT5fc2xrLT5hdHRyLCBhdHRyKTsKIAlpZiAoKGF0dHIgJiBBX0NPTE9SKSAhPSAwKSB7Ci0JICAgIFNldFBhaXIoU1AtPl9zbGstPmF0dHIsIDApOworCSAgICBTZXRQYWlyKFNQX1BBUk0tPl9zbGstPmF0dHIsIDApOwogCX0KLQlUUihUUkFDRV9BVFRSUywgKCJuZXcgYXR0cmlidXRlIGlzICVzIiwgX3RyYWNlY2hfdChDSFJFRihTUC0+X3Nsay0+YXR0cikpKSk7CisJVFIoVFJBQ0VfQVRUUlMsICgibmV3IGF0dHJpYnV0ZSBpcyAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1BfUEFSTS0+X3Nsay0+YXR0cikpKSk7CiAJcmV0dXJuQ29kZShPSyk7CiAgICAgfSBlbHNlCiAJcmV0dXJuQ29kZShFUlIpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorc2xrX2F0dHJvZmYoY29uc3QgY2h0eXBlIGF0dHIpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfYXR0cm9mZikgKENVUlJFTlRfU0NSRUVOLCBhdHRyKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHJvbi5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHJvbi5jCmluZGV4IDkwYWRkODYuLmJjMmZiMzMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyb24uYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2F0cm9uLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOCwyMSArMzgsMjkgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrYXRyb24uYyx2IDEuOCAyMDA1LzAxLzA4IDIzOjAyOjAxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Nsa2F0cm9uLmMsdiAxLjEyIDIwMTAvMDMvMzEgMjM6Mzg6MDIgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotc2xrX2F0dHJvbihjb25zdCBjaHR5cGUgYXR0cikKK05DVVJTRVNfU1BfTkFNRShzbGtfYXR0cm9uKSAoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IGNodHlwZSBhdHRyKQogewotICAgIFQoKFRfQ0FMTEVEKCJzbGtfYXR0cm9uKCVzKSIpLCBfdHJhY2VhdHRyKGF0dHIpKSk7CisgICAgVCgoVF9DQUxMRUQoInNsa19hdHRyb24oJXAsJXMpIiksICh2b2lkICopIFNQX1BBUk0sIF90cmFjZWF0dHIoYXR0cikpKTsKIAotICAgIGlmIChTUCAhPSAwICYmIFNQLT5fc2xrICE9IDApIHsKLQlUUihUUkFDRV9BVFRSUywgKCIuLi4gY3VycmVudCAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1AtPl9zbGstPmF0dHIpKSkpOwotCUFkZEF0dHIoU1AtPl9zbGstPmF0dHIsIGF0dHIpOworICAgIGlmIChTUF9QQVJNICE9IDAgJiYgU1BfUEFSTS0+X3NsayAhPSAwKSB7CisJVFIoVFJBQ0VfQVRUUlMsICgiLi4uIGN1cnJlbnQgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQX1BBUk0tPl9zbGstPmF0dHIpKSkpOworCUFkZEF0dHIoU1BfUEFSTS0+X3Nsay0+YXR0ciwgYXR0cik7CiAJaWYgKChhdHRyICYgQV9DT0xPUikgIT0gMCkgewotCSAgICBTZXRQYWlyKFNQLT5fc2xrLT5hdHRyLCBQQUlSX05VTUJFUihhdHRyKSk7CisJICAgIFNldFBhaXIoU1BfUEFSTS0+X3Nsay0+YXR0ciwgUGFpck51bWJlcihhdHRyKSk7CiAJfQotCVRSKFRSQUNFX0FUVFJTLCAoIm5ldyBhdHRyaWJ1dGUgaXMgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQLT5fc2xrLT5hdHRyKSkpKTsKKwlUUihUUkFDRV9BVFRSUywgKCJuZXcgYXR0cmlidXRlIGlzICVzIiwgX3RyYWNlY2hfdChDSFJFRihTUF9QQVJNLT5fc2xrLT5hdHRyKSkpKTsKIAlyZXR1cm5Db2RlKE9LKTsKICAgICB9IGVsc2UKIAlyZXR1cm5Db2RlKEVSUik7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitzbGtfYXR0cm9uKGNvbnN0IGNodHlwZSBhdHRyKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHJvbikgKENVUlJFTlRfU0NSRUVOLCBhdHRyKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHJzZXQuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrYXRyc2V0LmMKaW5kZXggOGRhOTk4MS4uNTQ0YjhkMCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHJzZXQuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2F0cnNldC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsMTYgKzM4LDI0IEBACiAgKi8KICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Nsa2F0cnNldC5jLHYgMS43IDIwMDUvMDEvMDggMjE6NDY6NDcgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfc2xrYXRyc2V0LmMsdiAxLjEwIDIwMDkvMTAvMjQgMjI6MTI6MjEgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotc2xrX2F0dHJzZXQoY29uc3QgY2h0eXBlIGF0dHIpCitOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHJzZXQpIChOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2h0eXBlIGF0dHIpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInNsa19hdHRyc2V0KCVzKSIpLCBfdHJhY2VhdHRyKGF0dHIpKSk7CisgICAgVCgoVF9DQUxMRUQoInNsa19hdHRyc2V0KCVwLCVzKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBfdHJhY2VhdHRyKGF0dHIpKSk7CiAKLSAgICBpZiAoU1AgIT0gMCAmJiBTUC0+X3NsayAhPSAwKSB7Ci0JU2V0QXR0cihTUC0+X3Nsay0+YXR0ciwgYXR0cik7CisgICAgaWYgKFNQX1BBUk0gIT0gMCAmJiBTUF9QQVJNLT5fc2xrICE9IDApIHsKKwlTZXRBdHRyKFNQX1BBUk0tPl9zbGstPmF0dHIsIGF0dHIpOwogCXJldHVybkNvZGUoT0spOwogICAgIH0gZWxzZQogCXJldHVybkNvZGUoRVJSKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3Nsa19hdHRyc2V0KGNvbnN0IGNodHlwZSBhdHRyKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHJzZXQpIChDVVJSRU5UX1NDUkVFTiwgYXR0cik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfc2xrYXR0ci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHRyLmMKaW5kZXggZGE4MmVlNS4uYmVjMTFlOCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHRyLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGthdHRyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOCwxOSArMzgsMjcgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrYXR0ci5jLHYgMS42IDIwMDUvMDEvMDggMjE6NDQ6MjggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfc2xrYXR0ci5jLHYgMS4xMSAyMDEwLzEyLzIwIDAxOjQxOjI1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGF0dHJfdCkKLXNsa19hdHRyKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUoc2xrX2F0dHIpIChOQ1VSU0VTX1NQX0RDTDApCiB7Ci0gICAgVCgoVF9DQUxMRUQoInNsa19hdHRyKCkiKSkpOworICAgIFQoKFRfQ0FMTEVEKCJzbGtfYXR0ciglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOwogCi0gICAgaWYgKFNQICE9IDAgJiYgU1AtPl9zbGsgIT0gMCkgewotCWF0dHJfdCByZXN1bHQgPSBBdHRyT2YoU1AtPl9zbGstPmF0dHIpICYgQUxMX0JVVF9DT0xPUjsKLQlpbnQgcGFpciA9IEdldFBhaXIoU1AtPl9zbGstPmF0dHIpOworICAgIGlmIChTUF9QQVJNICE9IDAgJiYgU1BfUEFSTS0+X3NsayAhPSAwKSB7CisJYXR0cl90IHJlc3VsdCA9IEF0dHJPZihTUF9QQVJNLT5fc2xrLT5hdHRyKSAmIEFMTF9CVVRfQ09MT1I7CisJaW50IHBhaXIgPSBHZXRQYWlyKFNQX1BBUk0tPl9zbGstPmF0dHIpOwogCi0JcmVzdWx0IHw9IENPTE9SX1BBSVIocGFpcik7CisJcmVzdWx0IHw9IChhdHRyX3QpIENvbG9yUGFpcihwYWlyKTsKIAlyZXR1cm5BdHRyKHJlc3VsdCk7CiAgICAgfSBlbHNlCiAJcmV0dXJuQXR0cigwKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGF0dHJfdCkKK3Nsa19hdHRyKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfYXR0cikgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl9zbGtjbGVhci5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGtjbGVhci5jCmluZGV4IDk0NmNlZWEuLjI2NGM4YzQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xrY2xlYXIuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2NsZWFyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwyNyArNDAsMzUgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrY2xlYXIuYyx2IDEuMTAgMjAwNy8xMi8yOSAxNzo1MTo0NyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zbGtjbGVhci5jLHYgMS4xNCAyMDA5LzExLzA3IDE2OjI3OjA1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNsa19jbGVhcih2b2lkKQorTkNVUlNFU19TUF9OQU1FKHNsa19jbGVhcikgKE5DVVJTRVNfU1BfRENMMCkKIHsKICAgICBpbnQgcmMgPSBFUlI7CiAKLSAgICBUKChUX0NBTExFRCgic2xrX2NsZWFyKCkiKSkpOworICAgIFQoKFRfQ0FMTEVEKCJzbGtfY2xlYXIoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKIAotICAgIGlmIChTUCAhPSBOVUxMICYmIFNQLT5fc2xrICE9IE5VTEwpIHsKLQlTUC0+X3Nsay0+aGlkZGVuID0gVFJVRTsKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmIFNQX1BBUk0tPl9zbGsgIT0gMCkgeworCVNQX1BBUk0tPl9zbGstPmhpZGRlbiA9IFRSVUU7CiAJLyogRm9yIHNpbXVsYXRlZCBTTEsncyBpdCBsb29rcyBtdWNoIG1vcmUgbmF0dXJhbCB0bwogCSAgIGluaGVyaXQgdGhvc2UgYXR0cmlidXRlcyBmcm9tIHRoZSBzdGFuZGFyZCBzY3JlZW4gKi8KLQlTUC0+X3Nsay0+d2luLT5fbmNfYmtnZCA9IHN0ZHNjci0+X25jX2JrZ2Q7Ci0JV0lORE9XX0FUVFJTKFNQLT5fc2xrLT53aW4pID0gV0lORE9XX0FUVFJTKHN0ZHNjcik7Ci0JaWYgKFNQLT5fc2xrLT53aW4gPT0gc3Rkc2NyKSB7CisJU1BfUEFSTS0+X3Nsay0+d2luLT5fbmNfYmtnZCA9IFN0ZFNjcmVlbihTUF9QQVJNKS0+X25jX2JrZ2Q7CisJV0lORE9XX0FUVFJTKFNQX1BBUk0tPl9zbGstPndpbikgPSBXSU5ET1dfQVRUUlMoU3RkU2NyZWVuKFNQX1BBUk0pKTsKKwlpZiAoU1BfUEFSTS0+X3Nsay0+d2luID09IFN0ZFNjcmVlbihTUF9QQVJNKSkgewogCSAgICByYyA9IE9LOwogCX0gZWxzZSB7Ci0JICAgIHdlcmFzZShTUC0+X3Nsay0+d2luKTsKLQkgICAgcmMgPSB3cmVmcmVzaChTUC0+X3Nsay0+d2luKTsKKwkgICAgd2VyYXNlKFNQX1BBUk0tPl9zbGstPndpbik7CisJICAgIHJjID0gd3JlZnJlc2goU1BfUEFSTS0+X3Nsay0+d2luKTsKIAl9CiAgICAgfQogICAgIHJldHVybkNvZGUocmMpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorc2xrX2NsZWFyKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfY2xlYXIpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfc2xrY29sb3IuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrY29sb3IuYwppbmRleCBiNjc3YjY1Li4yY2Y5ZTVkIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2NvbG9yLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGtjb2xvci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsOCArMjcsOCBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogIFRob21hcyBFLiBEaWNrZXkgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6ICBKdWVyZ2VuIFBmZWlmZXIsIDE5OTgsMjAwOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiAgVGhvbWFzIEUuIERpY2tleSAyMDA1LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zOCwxOSArMzgsMzEgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrY29sb3IuYyx2IDEuMTIgMjAwNS8wMS8yOCAyMToxMTo1MyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zbGtjb2xvci5jLHYgMS4xNyAyMDE0LzAyLzAxIDIyOjEwOjQyIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNsa19jb2xvcihzaG9ydCBjb2xvcl9wYWlyX251bWJlcikKK05DVVJTRVNfU1BfTkFNRShzbGtfY29sb3IpIChOQ1VSU0VTX1NQX0RDTHggTkNVUlNFU19QQUlSU19UIGNvbG9yX3BhaXJfbnVtYmVyKQogewotICAgIFQoKFRfQ0FMTEVEKCJzbGtfY29sb3IoJWQpIiksIGNvbG9yX3BhaXJfbnVtYmVyKSk7CisgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBpZiAoU1AgIT0gMCAmJiBTUC0+X3NsayAhPSAwICYmCi0JY29sb3JfcGFpcl9udW1iZXIgPj0gMCAmJiBjb2xvcl9wYWlyX251bWJlciA8IENPTE9SX1BBSVJTKSB7Ci0JVFIoVFJBQ0VfQVRUUlMsICgiLi4uIGN1cnJlbnQgaXMgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQLT5fc2xrLT5hdHRyKSkpKTsKLQlTZXRQYWlyKFNQLT5fc2xrLT5hdHRyLCBjb2xvcl9wYWlyX251bWJlcik7Ci0JVFIoVFJBQ0VfQVRUUlMsICgibmV3IGF0dHJpYnV0ZSBpcyAlcyIsIF90cmFjZWNoX3QoQ0hSRUYoU1AtPl9zbGstPmF0dHIpKSkpOwotCXJldHVybkNvZGUoT0spOwotICAgIH0gZWxzZQotCXJldHVybkNvZGUoRVJSKTsKKyAgICBUKChUX0NBTExFRCgic2xrX2NvbG9yKCVwLCVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCAoaW50KSBjb2xvcl9wYWlyX251bWJlcikpOworCisgICAgaWYgKFNQX1BBUk0gIT0gMAorCSYmIFNQX1BBUk0tPl9zbGsgIT0gMAorCSYmIGNvbG9yX3BhaXJfbnVtYmVyID49IDAKKwkmJiBjb2xvcl9wYWlyX251bWJlciA8IFNQX1BBUk0tPl9wYWlyX2xpbWl0KSB7CisJVFIoVFJBQ0VfQVRUUlMsICgiLi4uIGN1cnJlbnQgaXMgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQX1BBUk0tPl9zbGstPmF0dHIpKSkpOworCVNldFBhaXIoU1BfUEFSTS0+X3Nsay0+YXR0ciwgY29sb3JfcGFpcl9udW1iZXIpOworCVRSKFRSQUNFX0FUVFJTLCAoIm5ldyBhdHRyaWJ1dGUgaXMgJXMiLCBfdHJhY2VjaF90KENIUkVGKFNQX1BBUk0tPl9zbGstPmF0dHIpKSkpOworCWNvZGUgPSBPSzsKKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3Nsa19jb2xvcihOQ1VSU0VTX1BBSVJTX1QgY29sb3JfcGFpcl9udW1iZXIpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfY29sb3IpIChDVVJSRU5UX1NDUkVFTiwgY29sb3JfcGFpcl9udW1iZXIpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2luaXQuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xraW5pdC5jCmluZGV4IGM0NDAxMDkuLjljYmRmZWEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xraW5pdC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2xraW5pdC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMzksMTcgKzQwLDQxIEBACiAgKi8KICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Nsa2luaXQuYyx2IDEuNyAyMDA4LzAxLzEyIDIwOjIzOjM5IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Nsa2luaXQuYyx2IDEuMTMgMjAwOS8xMC8zMSAwMDoxMDo0NiB0b20gRXhwICQiKQorCisjaWZkZWYgVVNFX1NQX1JJUE9GRgorI2RlZmluZSBTb2Z0a2V5Rm9ybWF0IFNQX1BBUk0tPnNsa19mb3JtYXQKKyNlbHNlCisjZGVmaW5lIFNvZnRrZXlGb3JtYXQgX25jX2dsb2JhbHMuc2xrX2Zvcm1hdAorI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNsa19pbml0KGludCBmb3JtYXQpCitOQ1VSU0VTX1NQX05BTUUoc2xrX2luaXQpIChOQ1VSU0VTX1NQX0RDTHggaW50IGZvcm1hdCkKIHsKICAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJzbGtfaW5pdCglZCkiKSwgZm9ybWF0KSk7Ci0gICAgaWYgKGZvcm1hdCA+PSAwICYmIGZvcm1hdCA8PSAzICYmICFfbmNfZ2xvYmFscy5zbGtfZm9ybWF0KSB7Ci0JX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCA9IDEgKyBmb3JtYXQ7Ci0JY29kZSA9IF9uY19yaXBvZmZsaW5lKC1TTEtfTElORVMoX25jX2dsb2JhbHMuc2xrX2Zvcm1hdCksIF9uY19zbGtfaW5pdGlhbGl6ZSk7CisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBUKChUX0NBTExFRCgic2xrX2luaXQoJXAsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIGZvcm1hdCkpOworCisgICAgaWYgKGZvcm1hdCA+PSAwCisJJiYgZm9ybWF0IDw9IDMKKyNpZmRlZiBVU0VfU1BfUklQT0ZGCisJJiYgU1BfUEFSTQorCSYmIFNQX1BBUk0tPl9wcmVzY3JlZW4KKyNlbmRpZgorCSYmICFTb2Z0a2V5Rm9ybWF0KSB7CisJU29mdGtleUZvcm1hdCA9IDEgKyBmb3JtYXQ7CisJY29kZSA9IE5DVVJTRVNfU1BfTkFNRShfbmNfcmlwb2ZmbGluZSkgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQkJLVNMS19MSU5FUyhTb2Z0a2V5Rm9ybWF0KSwKKwkJCQkJCV9uY19zbGtfaW5pdGlhbGl6ZSk7CiAgICAgfQogICAgIHJldHVybkNvZGUoY29kZSk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitzbGtfaW5pdChpbnQgZm9ybWF0KQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoc2xrX2luaXQpIChDVVJSRU5UX1NDUkVFTl9QUkUsIGZvcm1hdCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfc2xrbGFiLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX3Nsa2xhYi5jCmluZGV4IDQyYmI0YWMuLmQwYjJhMjMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xrbGFiLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGtsYWIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI5LDYgKzI5LDggQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6ICBKdWVyZ2VuIFBmZWlmZXIsICAgICAgICAgICAgICAgICAgICAgICAxOTk4LDIwMDkgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiAgVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgMTk5OC1vbiAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zOCwxNCArNDAsMjIgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrbGFiLmMsdiAxLjcgMjAwMy8wMy8yOSAyMjo1Mzo0OCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zbGtsYWIuYyx2IDEuMTAgMjAwOS8xMC8yNCAyMjoxMjoyMSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCitOQ1VSU0VTX1NQX05BTUUoc2xrX2xhYmVsKSAoTkNVUlNFU19TUF9EQ0x4IGludCBuKQoreworICAgIFQoKFRfQ0FMTEVEKCJzbGtfbGFiZWwoJXAsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIG4pKTsKKworICAgIGlmIChTUF9QQVJNID09IDAgfHwgU1BfUEFSTS0+X3NsayA9PSAwIHx8IG4gPCAxIHx8IG4gPiBTUF9QQVJNLT5fc2xrLT5sYWJjbnQpCisJcmV0dXJuUHRyKDApOworICAgIHJldHVyblB0cihTUF9QQVJNLT5fc2xrLT5lbnRbbiAtIDFdLmVudF90ZXh0KTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGNoYXIgKikKIHNsa19sYWJlbChpbnQgbikKIHsKLSAgICBUKChUX0NBTExFRCgic2xrX2xhYmVsKCVkKSIpLCBuKSk7Ci0KLSAgICBpZiAoU1AgPT0gTlVMTCB8fCBTUC0+X3NsayA9PSBOVUxMIHx8IG4gPCAxIHx8IG4gPiBTUC0+X3Nsay0+bGFiY250KQotCXJldHVyblB0cigwKTsKLSAgICByZXR1cm5QdHIoU1AtPl9zbGstPmVudFtuIC0gMV0uZW50X3RleHQpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoc2xrX2xhYmVsKSAoQ1VSUkVOVF9TQ1JFRU4sIG4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa3JlZnIuYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrcmVmci5jCmluZGV4IGNiMWJlYmEuLjM4MmY5YzQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfc2xrcmVmci5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2xrcmVmci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsOSArMzgsMTggQEAKICAqCVdyaXRlIFNMSyB3aW5kb3cgdG8gdGhlICh2aXJ0dWFsKSBzY3JlZW4uCiAgKi8KICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4JCS8qIG51bV9sYWJlbHMsIGxhYmVsXyosIHBsYWJfbm9ybSAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Nsa3JlZnIuYyx2IDEuMTcgMjAwOC8wOS8yNyAxNDowNzo1MyBqdWVyZ2VuIEV4cCAkIikKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCisKK01PRFVMRV9JRCgiJElkOiBsaWJfc2xrcmVmci5jLHYgMS4zMCAyMDE0LzAzLzA4IDIwOjMyOjU5IHRvbSBFeHAgJCIpCisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyNkZWZpbmUgTnVtTGFiZWxzICAgIEluZm9PZihTUF9QQVJNKS5udW1sYWJlbHMKKyNlbHNlCisjZGVmaW5lIE51bUxhYmVscyAgICBudW1fbGFiZWxzCisjZW5kaWYKIAogLyoKICAqIFBhaW50IHRoZSBpbmZvIGxpbmUgZm9yIHRoZSBQQyBzdHlsZSBTTEsgZW11bGF0aW9uLgpAQCAtNTMsNyArNjIsNyBAQAogICAgIGlmICh3aW4gJiYgc3AgJiYgKHNwLT5zbGtfZm9ybWF0ID09IDQpKSB7CiAJaW50IGk7CiAKLQltdndobGluZSh3aW4sIDAsIDAsIDAsIGdldG1heHgod2luKSk7CisJKHZvaWQpIG12d2hsaW5lKHdpbiwgMCwgMCwgMCwgZ2V0bWF4eCh3aW4pKTsKIAl3bW92ZSh3aW4sIDAsIDApOwogCiAJZm9yIChpID0gMDsgaSA8IHNwLT5fc2xrLT5tYXhsYWI7IGkrKykgewpAQCAtNjYsMzEgKzc1LDQ3IEBACiAgKiBXcml0ZSB0aGUgc29mdCBsYWJlbHMgdG8gdGhlIHNvZnQta2V5IHdpbmRvdy4KICAqLwogc3RhdGljIHZvaWQKLXNsa19pbnRlcm5fcmVmcmVzaChTTEsgKiBzbGspCitzbGtfaW50ZXJuX3JlZnJlc2goU0NSRUVOICpzcCkKIHsKICAgICBpbnQgaTsKLSAgICBpbnQgZm10ID0gU1AtPnNsa19mb3JtYXQ7CisgICAgaW50IGZtdDsKKyAgICBTTEsgKnNsazsKKyAgICBpbnQgbnVtbGFiOworCisgICAgaWYgKHNwID09IDApCisJcmV0dXJuOworCisgICAgc2xrID0gc3AtPl9zbGs7CisgICAgZm10ID0gc3AtPnNsa19mb3JtYXQ7CisgICAgbnVtbGFiID0gTnVtTGFiZWxzOworCisgICAgaWYgKHNsay0+aGlkZGVuKQorCXJldHVybjsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzbGstPmxhYmNudDsgaSsrKSB7CiAJaWYgKHNsay0+ZGlydHkgfHwgc2xrLT5lbnRbaV0uZGlydHkpIHsKIAkgICAgaWYgKHNsay0+ZW50W2ldLnZpc2libGUpIHsKLQkJaWYgKG51bV9sYWJlbHMgPiAwICYmIFNMS19TVERGTVQoZm10KSkgeworCQlpZiAobnVtbGFiID4gMCAmJiBTTEtfU1RERk1UKGZtdCkpIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwkJICAgIENhbGxEcml2ZXJfMihzcCwgdGRfaHdsYWJlbCwgaSArIDEsIHNsay0+ZW50W2ldLmZvcm1fdGV4dCk7CisjZWxzZQogCQkgICAgaWYgKGkgPCBudW1fbGFiZWxzKSB7Ci0JCQlUUFVUU19UUkFDRSgicGxhYl9ub3JtIik7Ci0JCQlwdXRwKFRQQVJNXzIocGxhYl9ub3JtLCBpICsgMSwgc2xrLT5lbnRbaV0uZm9ybV90ZXh0KSk7CisJCQlOQ1VSU0VTX1BVVFAyKCJwbGFiX25vcm0iLAorCQkJCSAgICAgIFRQQVJNXzIocGxhYl9ub3JtLAorCQkJCQkgICAgICBpICsgMSwKKwkJCQkJICAgICAgc2xrLT5lbnRbaV0uZm9ybV90ZXh0KSk7CiAJCSAgICB9CisjZW5kaWYKIAkJfSBlbHNlIHsKIAkJICAgIGlmIChmbXQgPT0gNCkKIAkJCXNsa19wYWludF9pbmZvKHNsay0+d2luKTsKIAkJICAgIHdtb3ZlKHNsay0+d2luLCBTTEtfTElORVMoZm10KSAtIDEsIHNsay0+ZW50W2ldLmVudF94KTsKLQkJICAgIGlmIChTUC0+X3NsaykgewotCQkJd2F0dHJzZXQoc2xrLT53aW4sIEF0dHJPZihTUC0+X3Nsay0+YXR0cikpOwotCQkgICAgfQorCQkgICAgKHZvaWQpIHdhdHRyc2V0KHNsay0+d2luLCAoaW50KSBBdHRyT2Yoc2xrLT5hdHRyKSk7CiAJCSAgICB3YWRkc3RyKHNsay0+d2luLCBzbGstPmVudFtpXS5mb3JtX3RleHQpOwogCQkgICAgLyogaWYgd2Ugc2ltdWxhdGUgU0xLJ3MsIGl0J3MgbG9va2luZyBtdWNoIG1vcmUKIAkJICAgICAgIG5hdHVyYWwgdG8gdXNlIHRoZSBjdXJyZW50IEFUVFJJQlVURSBhbHNvCiAJCSAgICAgICBmb3IgdGhlIGxhYmVsIHdpbmRvdyAqLwotCQkgICAgd2F0dHJzZXQoc2xrLT53aW4sIFdJTkRPV19BVFRSUyhzdGRzY3IpKTsKKwkJICAgICh2b2lkKSB3YXR0cnNldChzbGstPndpbiwgKGludCkgV0lORE9XX0FUVFJTKFN0ZFNjcmVlbihzcCkpKTsKIAkJfQogCSAgICB9CiAJICAgIHNsay0+ZW50W2ldLmRpcnR5ID0gRkFMU0U7CkBAIC05OCwxNCArMTIzLDE2IEBACiAgICAgfQogICAgIHNsay0+ZGlydHkgPSBGQUxTRTsKIAotICAgIGlmIChudW1fbGFiZWxzID4gMCkgeworICAgIGlmIChudW1sYWIgPiAwKSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJQ2FsbERyaXZlcl8xKHNwLCB0ZF9od2xhYmVsT25PZmYsIHNsay0+aGlkZGVuID8gRkFMU0UgOiBUUlVFKTsKKyNlbHNlCiAJaWYgKHNsay0+aGlkZGVuKSB7Ci0JICAgIFRQVVRTX1RSQUNFKCJsYWJlbF9vZmYiKTsKLQkgICAgcHV0cChsYWJlbF9vZmYpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJsYWJlbF9vZmYiLCBsYWJlbF9vZmYpOwogCX0gZWxzZSB7Ci0JICAgIFRQVVRTX1RSQUNFKCJsYWJlbF9vbiIpOwotCSAgICBwdXRwKGxhYmVsX29uKTsKKwkgICAgTkNVUlNFU19QVVRQMigibGFiZWxfb24iLCBsYWJlbF9vbik7CiAJfQorI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMTMsMzIgKzE0MCw0OCBAQAogICogUmVmcmVzaCB0aGUgc29mdCBsYWJlbHMuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzbGtfbm91dHJlZnJlc2gpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgVCgoVF9DQUxMRUQoInNsa19ub3V0cmVmcmVzaCglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworCisgICAgaWYgKFNQX1BBUk0gPT0gMCB8fCBTUF9QQVJNLT5fc2xrID09IDApCisJcmV0dXJuQ29kZShFUlIpOworICAgIGlmIChTUF9QQVJNLT5fc2xrLT5oaWRkZW4pCisJcmV0dXJuQ29kZShPSyk7CisgICAgc2xrX2ludGVybl9yZWZyZXNoKFNQX1BBUk0pOworCisgICAgcmV0dXJuQ29kZSh3bm91dHJlZnJlc2goU1BfUEFSTS0+X3Nsay0+d2luKSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCiBzbGtfbm91dHJlZnJlc2godm9pZCkKIHsKLSAgICBUKChUX0NBTExFRCgic2xrX25vdXRyZWZyZXNoKCkiKSkpOwotCi0gICAgaWYgKFNQID09IE5VTEwgfHwgU1AtPl9zbGsgPT0gTlVMTCkKLQlyZXR1cm5Db2RlKEVSUik7Ci0gICAgaWYgKFNQLT5fc2xrLT5oaWRkZW4pCi0JcmV0dXJuQ29kZShPSyk7Ci0gICAgc2xrX2ludGVybl9yZWZyZXNoKFNQLT5fc2xrKTsKLQotICAgIHJldHVybkNvZGUod25vdXRyZWZyZXNoKFNQLT5fc2xrLT53aW4pKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNsa19ub3V0cmVmcmVzaCkgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgogCiAvKgogICogUmVmcmVzaCB0aGUgc29mdCBsYWJlbHMuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShzbGtfcmVmcmVzaCkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBUKChUX0NBTExFRCgic2xrX3JlZnJlc2goJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmIChTUF9QQVJNID09IDAgfHwgU1BfUEFSTS0+X3NsayA9PSAwKQorCXJldHVybkNvZGUoRVJSKTsKKyAgICBpZiAoU1BfUEFSTS0+X3Nsay0+aGlkZGVuKQorCXJldHVybkNvZGUoT0spOworICAgIHNsa19pbnRlcm5fcmVmcmVzaChTUF9QQVJNKTsKKworICAgIHJldHVybkNvZGUod3JlZnJlc2goU1BfUEFSTS0+X3Nsay0+d2luKSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCiBzbGtfcmVmcmVzaCh2b2lkKQogewotICAgIFQoKFRfQ0FMTEVEKCJzbGtfcmVmcmVzaCgpIikpKTsKLQotICAgIGlmIChTUCA9PSBOVUxMIHx8IFNQLT5fc2xrID09IE5VTEwpCi0JcmV0dXJuQ29kZShFUlIpOwotICAgIGlmIChTUC0+X3Nsay0+aGlkZGVuKQotCXJldHVybkNvZGUoT0spOwotICAgIHNsa19pbnRlcm5fcmVmcmVzaChTUC0+X3Nsayk7Ci0KLSAgICByZXR1cm5Db2RlKHdyZWZyZXNoKFNQLT5fc2xrLT53aW4pKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNsa19yZWZyZXNoKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa3NldC5jIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGtzZXQuYwppbmRleCBlMTlmODhlLi45MDkxZTAwIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa3NldC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfc2xrc2V0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00NCwzMyArNDQsMzMgQEAKICNlbmRpZgogI2VuZGlmCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrc2V0LmMsdiAxLjE3IDIwMDcvMTAvMTMgMjA6MDg6NDYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfc2xrc2V0LmMsdiAxLjI0IDIwMTIvMTIvMDggMjM6MDk6MjUgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotc2xrX3NldChpbnQgaSwgY29uc3QgY2hhciAqYXN0ciwgaW50IGZvcm1hdCkKK05DVVJTRVNfU1BfTkFNRShzbGtfc2V0KSAoTkNVUlNFU19TUF9EQ0x4IGludCBpLCBjb25zdCBjaGFyICphc3RyLCBpbnQgZm9ybWF0KQogewogICAgIFNMSyAqc2xrOwotICAgIGludCBvZmZzZXQ7CisgICAgaW50IG9mZnNldCA9IDA7CiAgICAgaW50IG51bWNocnM7CiAgICAgaW50IG51bWNvbHM7CiAgICAgaW50IGxpbWl0OwogICAgIGNvbnN0IGNoYXIgKnN0ciA9IGFzdHI7CiAgICAgY29uc3QgY2hhciAqcDsKIAotICAgIFQoKFRfQ0FMTEVEKCJzbGtfc2V0KCVkLCBcIiVzXCIsICVkKSIpLCBpLCBzdHIsIGZvcm1hdCkpOworICAgIFQoKFRfQ0FMTEVEKCJzbGtfc2V0KCVwLCAlZCwgXCIlc1wiLCAlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgaSwgc3RyLCBmb3JtYXQpKTsKIAotICAgIGlmIChTUCA9PSAwCi0JfHwgKHNsayA9IFNQLT5fc2xrKSA9PSAwCisgICAgaWYgKFNQX1BBUk0gPT0gMAorCXx8IChzbGsgPSBTUF9QQVJNLT5fc2xrKSA9PSAwCiAJfHwgaSA8IDEKIAl8fCBpID4gc2xrLT5sYWJjbnQKIAl8fCBmb3JtYXQgPCAwCiAJfHwgZm9ybWF0ID4gMikKIAlyZXR1cm5Db2RlKEVSUik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gMCkKIAlzdHIgPSAiIjsKICAgICAtLWk7CQkJLyogQWRqdXN0IG51bWJlcmluZyBvZiBsYWJlbHMgKi8KIAotICAgIGxpbWl0ID0gTUFYX1NLRVlfTEVOKFNQLT5zbGtfZm9ybWF0KTsKKyAgICBsaW1pdCA9IE1BWF9TS0VZX0xFTihTUF9QQVJNLT5zbGtfZm9ybWF0KTsKICAgICB3aGlsZSAoaXNzcGFjZShVQ2hhcigqc3RyKSkpCiAJc3RyKys7CQkJLyogc2tpcCBvdmVyIGxlYWRpbmcgc3BhY2VzICAqLwogICAgIHAgPSBzdHI7CkBAIC05NCwxMiArOTQsMTIgQEAKIAludW1jb2xzICs9IHdjd2lkdGgod2MpOwogCXAgKz0gbmVlZDsKICAgICB9Ci0gICAgbnVtY2hycyA9IChwIC0gc3RyKTsKKyAgICBudW1jaHJzID0gKGludCkgKHAgLSBzdHIpOwogI2Vsc2UKICAgICB3aGlsZSAoaXNwcmludChVQ2hhcigqcCkpKQogCXArKzsJCQkvKiBUaGUgZmlyc3Qgbm9uLXByaW50IHN0b3BzICovCiAKLSAgICBudW1jb2xzID0gKHAgLSBzdHIpOworICAgIG51bWNvbHMgPSAoaW50KSAocCAtIHN0cik7CiAgICAgaWYgKG51bWNvbHMgPiBsaW1pdCkKIAludW1jb2xzID0gbGltaXQ7CiAgICAgbnVtY2hycyA9IG51bWNvbHM7CkBAIC0xMTEsMTMgKzExMSwxMiBAQAogICAgIHNsay0+ZW50W2ldLmVudF90ZXh0W251bWNocnNdID0gJ1wwJzsKIAogICAgIGlmICgoc2xrLT5lbnRbaV0uZm9ybV90ZXh0ID0gKGNoYXIgKikgX25jX2RvYWxsb2Moc2xrLT5lbnRbaV0uZm9ybV90ZXh0LAotCQkJCQkJICAgICAgKHVuc2lnbmVkKSAobGltaXQgKwotCQkJCQkJCQkgIG51bWNocnMgKyAxKSkKKwkJCQkJCSAgICAgIChzaXplX3QpIChsaW1pdCArCisJCQkJCQkJCW51bWNocnMgKyAxKSkKIAkpID09IDApCiAJcmV0dXJuQ29kZShFUlIpOwogCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBkZWZhdWx0OgogICAgIGNhc2UgMDoJCQkvKiBsZWZ0LWp1c3RpZmllZCAqLwogCW9mZnNldCA9IDA7CiAJYnJlYWs7CkBAIC0xMzEsMTkgKzEzMCwyNyBAQAogICAgIGlmIChvZmZzZXQgPD0gMCkKIAlvZmZzZXQgPSAwOwogICAgIGVsc2UKLQltZW1zZXQoc2xrLT5lbnRbaV0uZm9ybV90ZXh0LCAnICcsICh1bnNpZ25lZCkgb2Zmc2V0KTsKKwltZW1zZXQoc2xrLT5lbnRbaV0uZm9ybV90ZXh0LCAnICcsIChzaXplX3QpIG9mZnNldCk7CiAKICAgICBtZW1jcHkoc2xrLT5lbnRbaV0uZm9ybV90ZXh0ICsgb2Zmc2V0LAogCSAgIHNsay0+ZW50W2ldLmVudF90ZXh0LAotCSAgICh1bnNpZ25lZCkgbnVtY2hycyk7CisJICAgKHNpemVfdCkgbnVtY2hycyk7CiAKICAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKIAltZW1zZXQoc2xrLT5lbnRbaV0uZm9ybV90ZXh0ICsgb2Zmc2V0ICsgbnVtY2hycywKIAkgICAgICAgJyAnLAotCSAgICAgICAodW5zaWduZWQpIChsaW1pdCAtIChvZmZzZXQgKyBudW1jb2xzKSkpOworCSAgICAgICAoc2l6ZV90KSAobGltaXQgLSAob2Zmc2V0ICsgbnVtY29scykpKTsKICAgICB9CiAKICAgICBzbGstPmVudFtpXS5mb3JtX3RleHRbbnVtY2hycyAtIG51bWNvbHMgKyBsaW1pdF0gPSAwOwogICAgIHNsay0+ZW50W2ldLmRpcnR5ID0gVFJVRTsKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3Nsa19zZXQoaW50IGksIGNvbnN0IGNoYXIgKmFzdHIsIGludCBmb3JtYXQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfc2V0KSAoQ1VSUkVOVF9TQ1JFRU4sIGksIGFzdHIsIGZvcm1hdCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfc2xrdG91Y2guYyBiL25jdXJzZXMvYmFzZS9saWJfc2xrdG91Y2guYwppbmRleCA1ZWI1ZGYzLi5iYTc3ZmQyIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3Nsa3RvdWNoLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl9zbGt0b3VjaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OCwyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsOCArMjcsOCBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAxOTk3LDIwMDkgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zOCwxNiArMzgsMjQgQEAKICAqLwogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfc2xrdG91Y2guYyx2IDEuNSAyMDAwLzEyLzEwIDAyOjQzOjI3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Nsa3RvdWNoLmMsdiAxLjggMjAwOS8xMC8yNCAyMjoxMjoyMSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1zbGtfdG91Y2godm9pZCkKK05DVVJTRVNfU1BfTkFNRShzbGtfdG91Y2gpIChOQ1VSU0VTX1NQX0RDTDApCiB7Ci0gICAgVCgoVF9DQUxMRUQoInNsa190b3VjaCgpIikpKTsKKyAgICBUKChUX0NBTExFRCgic2xrX3RvdWNoKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKLSAgICBpZiAoU1AgPT0gTlVMTCB8fCBTUC0+X3NsayA9PSBOVUxMKQorICAgIGlmIChTUF9QQVJNID09IDAgfHwgU1BfUEFSTS0+X3NsayA9PSAwKQogCXJldHVybkNvZGUoRVJSKTsKLSAgICBTUC0+X3Nsay0+ZGlydHkgPSBUUlVFOworICAgIFNQX1BBUk0tPl9zbGstPmRpcnR5ID0gVFJVRTsKIAogICAgIHJldHVybkNvZGUoT0spOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorc2xrX3RvdWNoKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzbGtfdG91Y2gpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfdG91Y2guYyBiL25jdXJzZXMvYmFzZS9saWJfdG91Y2guYwppbmRleCAyYWMyMWYyLi4yMGFjOTQ1IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3RvdWNoLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl90b3VjaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OCwyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDMsMTIgKzQzLDEyIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3RvdWNoLmMsdiAxLjkgMjAwMC8xMi8xMCAwMjo0MzoyNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl90b3VjaC5jLHYgMS4xMiAyMDEyLzA2LzA5IDIwOjI5OjMzIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGJvb2wpCiBpc19saW5ldG91Y2hlZChXSU5ET1cgKndpbiwgaW50IGxpbmUpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImlzX2xpbmV0b3VjaGVkKCVwLCVkKSIpLCB3aW4sIGxpbmUpKTsKKyAgICBUKChUX0NBTExFRCgiaXNfbGluZXRvdWNoZWQoJXAsJWQpIiksICh2b2lkICopIHdpbiwgbGluZSkpOwogCiAgICAgLyogWFNJIGRvZXNuJ3QgZGVmaW5lIGFueSBlcnJvciAqLwogICAgIGlmICghd2luIHx8IChsaW5lID4gd2luLT5fbWF4eSkgfHwgKGxpbmUgPCAwKSkKQEAgLTYyLDcgKzYyLDcgQEAKIHsKICAgICBpbnQgaTsKIAotICAgIFQoKFRfQ0FMTEVEKCJpc193aW50b3VjaGVkKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgiaXNfd2ludG91Y2hlZCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAod2luKQogCWZvciAoaSA9IDA7IGkgPD0gd2luLT5fbWF4eTsgaSsrKQpAQCAtNzYsNyArNzYsNyBAQAogewogICAgIGludCBpOwogCi0gICAgVCgoVF9DQUxMRUQoInd0b3VjaGxuKCVwLCVkLCVkLCVkKSIpLCB3aW4sIHksIG4sIGNoYW5nZWQpKTsKKyAgICBUKChUX0NBTExFRCgid3RvdWNobG4oJXAsJWQsJWQsJWQpIiksICh2b2lkICopIHdpbiwgeSwgbiwgY2hhbmdlZCkpOwogCiAgICAgaWYgKCF3aW4gfHwgKG4gPCAwKSB8fCAoeSA8IDApIHx8ICh5ID4gd2luLT5fbWF4eSkpCiAJcmV0dXJuQ29kZShFUlIpOwpAQCAtODQsOCArODQsMTAgQEAKICAgICBmb3IgKGkgPSB5OyBpIDwgeSArIG47IGkrKykgewogCWlmIChpID4gd2luLT5fbWF4eSkKIAkgICAgYnJlYWs7Ci0Jd2luLT5fbGluZVtpXS5maXJzdGNoYXIgPSBjaGFuZ2VkID8gMCA6IF9OT0NIQU5HRTsKLQl3aW4tPl9saW5lW2ldLmxhc3RjaGFyID0gY2hhbmdlZCA/IHdpbi0+X21heHggOiBfTk9DSEFOR0U7CisJd2luLT5fbGluZVtpXS5maXJzdGNoYXIgPSAoTkNVUlNFU19TSVpFX1QpIChjaGFuZ2VkID8gMCA6IF9OT0NIQU5HRSk7CisJd2luLT5fbGluZVtpXS5sYXN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgKGNoYW5nZWQKKwkJCQkJCSAgID8gd2luLT5fbWF4eAorCQkJCQkJICAgOiBfTk9DSEFOR0UpOwogICAgIH0KICAgICByZXR1cm5Db2RlKE9LKTsKIH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9saWJfdW5nZXRjaC5jIGIvbmN1cnNlcy9iYXNlL2xpYl91bmdldGNoLmMKaW5kZXggODc0MmY4Ni4uNGVlOTExOSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl91bmdldGNoLmMKKysrIGIvbmN1cnNlcy9iYXNlL2xpYl91bmdldGNoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MSw3ICs0Miw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3VuZ2V0Y2guYyx2IDEuMTEgMjAwOC8wNS8zMSAxNjo0NDo1NCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl91bmdldGNoLmMsdiAxLjE2IDIwMTIvMDgvMDQgMTc6Mzg6NTMgdG9tIEV4cCAkIikKIAogI2luY2x1ZGUgPGZpZm9fZGVmcy5oPgogCkBAIC01NywxNyArNTgsMjAgQEAKICNlbmRpZiAvKiBUUkFDRSAqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1fbmNfdW5nZXRjaChTQ1JFRU4gKnNwLCBpbnQgY2gpCitzYWZlX3VuZ2V0Y2goU0NSRUVOICpzcCwgaW50IGNoKQogewogICAgIGludCByYyA9IEVSUjsKIAotICAgIGlmICh0YWlsICE9IC0xKSB7Ci0JaWYgKGhlYWQgPT0gLTEpIHsKKyAgICBUKChUX0NBTExFRCgidW5nZXRjaCglcCwlcykiKSwgKHZvaWQgKikgc3AsIF9uY190cmFjZWNoYXIoc3AsIGNoKSkpOworCisgICAgaWYgKHNwICE9IDAgJiYgdGFpbCA+PSAwKSB7CisJaWYgKGhlYWQgPCAwKSB7CiAJICAgIGhlYWQgPSAwOwogCSAgICB0X2luYygpOwogCSAgICBwZWVrID0gdGFpbDsJLyogbm8gcmF3IGtleXMgKi8KLQl9IGVsc2UKKwl9IGVsc2UgewogCSAgICBoX2RlYygpOworCX0KIAogCXNwLT5fZmlmb1toZWFkXSA9IGNoOwogCVQoKCJ1bmdldGNoICVzIG9rIiwgX25jX3RyYWNlY2hhcihzcCwgY2gpKSk7CkBAIC03OSwxMiArODMsMTEgQEAKICNlbmRpZgogCXJjID0gT0s7CiAgICAgfQotICAgIHJldHVybiByYzsKKyAgICByZXR1cm5Db2RlKHJjKTsKIH0KIAogTkNVUlNFU19FWFBPUlQoaW50KQogdW5nZXRjaChpbnQgY2gpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInVuZ2V0Y2goJXMpIiksIF9uY190cmFjZWNoYXIoU1AsIGNoKSkpOwotICAgIHJldHVybkNvZGUoX25jX3VuZ2V0Y2goU1AsIGNoKSk7CisgICAgcmV0dXJuIHNhZmVfdW5nZXRjaChDVVJSRU5UX1NDUkVFTiwgY2gpOwogfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl92bGluZS5jIGIvbmN1cnNlcy9iYXNlL2xpYl92bGluZS5jCmluZGV4IDFhMjUzN2UuLjJmMzE0OGUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfdmxpbmUuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3ZsaW5lLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxNiArNDAsMTYgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdmxpbmUuYyx2IDEuMTAgMjAwNi8wMy8xMSAyMTo1MjoxOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl92bGluZS5jLHYgMS4xMiAyMDEwLzEyLzE5IDAxOjIyOjU4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHd2bGluZShXSU5ET1cgKndpbiwgY2h0eXBlIGNoLCBpbnQgbikKIHsKICAgICBpbnQgY29kZSA9IEVSUjsKLSAgICBOQ1VSU0VTX1NJWkVfVCByb3csIGNvbDsKLSAgICBOQ1VSU0VTX1NJWkVfVCBlbmQ7CisgICAgaW50IHJvdywgY29sOworICAgIGludCBlbmQ7CiAKLSAgICBUKChUX0NBTExFRCgid3ZsaW5lKCVwLCVzLCVkKSIpLCB3aW4sIF90cmFjZWNodHlwZShjaCksIG4pKTsKKyAgICBUKChUX0NBTExFRCgid3ZsaW5lKCVwLCVzLCVkKSIpLCAodm9pZCAqKSB3aW4sIF90cmFjZWNodHlwZShjaCksIG4pKTsKIAogICAgIGlmICh3aW4pIHsKIAlOQ1VSU0VTX0NIX1Qgd2NoOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL2xpYl93YXR0cm9mZi5jIGIvbmN1cnNlcy9iYXNlL2xpYl93YXR0cm9mZi5jCmluZGV4IGJmMjAyMGUuLmZmZjBiMzkgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfd2F0dHJvZmYuYworKysgYi9uY3Vyc2VzL2Jhc2UvbGliX3dhdHRyb2ZmLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MiwxMiArNDIsMTIgQEAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfd2F0dHJvZmYuYyx2IDEuOSAyMDA2LzA1LzI3IDE5OjMwOjMzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3dhdHRyb2ZmLmMsdiAxLjEwIDIwMDkvMTAvMjQgMjI6MzY6MDggdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2F0dHJfb2ZmKFdJTkRPVyAqd2luLCBhdHRyX3QgYXQsIHZvaWQgKm9wdHMgR0NDX1VOVVNFRCkKIHsKLSAgICBUKChUX0NBTExFRCgid2F0dHJfb2ZmKCVwLCVzKSIpLCB3aW4sIF90cmFjZWF0dHIoYXQpKSk7CisgICAgVCgoVF9DQUxMRUQoIndhdHRyX29mZiglcCwlcykiKSwgKHZvaWQgKikgd2luLCBfdHJhY2VhdHRyKGF0KSkpOwogICAgIGlmICh3aW4pIHsKIAlUKCgiLi4uIGN1cnJlbnQgJXMgKCVkKSIsCiAJICAgX3RyYWNlYXR0cihXSU5ET1dfQVRUUlMod2luKSksCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3dhdHRyb24uYyBiL25jdXJzZXMvYmFzZS9saWJfd2F0dHJvbi5jCmluZGV4IDJlMTdkOTYuLjM4MDYyODUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9saWJfd2F0dHJvbi5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfd2F0dHJvbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDIsMTIgKzQyLDEyIEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3dhdHRyb24uYyx2IDEuOSAyMDA2LzA1LzI3IDE5OjMwOjQ2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3dhdHRyb24uYyx2IDEuMTEgMjAxMC8wMy8zMSAyMzozODowMiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3YXR0cl9vbihXSU5ET1cgKndpbiwgYXR0cl90IGF0LCB2b2lkICpvcHRzIEdDQ19VTlVTRUQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoIndhdHRyX29uKCVwLCVzKSIpLCB3aW4sIF90cmFjZWF0dHIoYXQpKSk7CisgICAgVCgoVF9DQUxMRUQoIndhdHRyX29uKCVwLCVzKSIpLCAodm9pZCAqKSB3aW4sIF90cmFjZWF0dHIoYXQpKSk7CiAgICAgaWYgKHdpbiAhPSAwKSB7CiAJVCgoIi4uLiBjdXJyZW50ICVzICglZCkiLAogCSAgIF90cmFjZWF0dHIoV0lORE9XX0FUVFJTKHdpbikpLApAQCAtNTUsNyArNTUsNyBAQAogCiAJaWZfRVhUX0NPTE9SUyh7CiAJICAgIGlmIChhdCAmIEFfQ09MT1IpCi0JCXdpbi0+X2NvbG9yID0gUEFJUl9OVU1CRVIoYXQpOworCQl3aW4tPl9jb2xvciA9IFBhaXJOdW1iZXIoYXQpOwogCX0pOwogCXRvZ2dsZV9hdHRyX29uKFdJTkRPV19BVFRSUyh3aW4pLCBhdCk7CiAJcmV0dXJuQ29kZShPSyk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3dpbmNoLmMgYi9uY3Vyc2VzL2Jhc2UvbGliX3dpbmNoLmMKaW5kZXggMThkYTljNS4uN2U3NWY4NSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL2xpYl93aW5jaC5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfd2luY2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCwyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDE2ICszOSwxNiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl93aW5jaC5jLHYgMS41IDIwMDEvMDYvMDIgMjM6NDI6MDggc2tpbW8gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl93aW5jaC5jLHYgMS44IDIwMTAvMTIvMTkgMDE6MjI6NTggdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoY2h0eXBlKQogd2luY2goV0lORE9XICp3aW4pCiB7Ci0gICAgVCgoVF9DQUxMRUQoIndpbmNoKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgid2luY2goJXApIiksICh2b2lkICopIHdpbikpOwogICAgIGlmICh3aW4gIT0gMCkgewotCXJldHVybkNoYXIoQ2hhck9mKHdpbi0+X2xpbmVbd2luLT5fY3VyeV0udGV4dFt3aW4tPl9jdXJ4XSkgfAotCQkgICBBdHRyT2Yod2luLT5fbGluZVt3aW4tPl9jdXJ5XS50ZXh0W3dpbi0+X2N1cnhdKSk7CisJcmV0dXJuQ2h0eXBlKChjaHR5cGUpIENoYXJPZih3aW4tPl9saW5lW3dpbi0+X2N1cnldLnRleHRbd2luLT5fY3VyeF0pCisJCSAgICAgfCBBdHRyT2Yod2luLT5fbGluZVt3aW4tPl9jdXJ5XS50ZXh0W3dpbi0+X2N1cnhdKSk7CiAgICAgfSBlbHNlIHsKLQlyZXR1cm5DaGFyKDApOworCXJldHVybkNodHlwZSgwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbGliX3dpbmRvdy5jIGIvbmN1cnNlcy9iYXNlL2xpYl93aW5kb3cuYwppbmRleCBhMzIzNmUyLi40YmFhMzY5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvbGliX3dpbmRvdy5jCisrKyBiL25jdXJzZXMvYmFzZS9saWJfd2luZG93LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSw3ICszOSw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3dpbmRvdy5jLHYgMS4yNSAyMDA4LzA2LzA3IDE0OjEyOjU2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3dpbmRvdy5jLHYgMS4yOSAyMDEwLzEyLzE5IDAxOjQ3OjIyIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfc3luY2hvb2soV0lORE9XICp3aW4pCkBAIC01NywzMiArNTcsMzAgQEAKIHsKICAgICBXSU5ET1cgKm9yaWc7CiAgICAgaW50IGk7CisgICAgaW50IHJjID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoIm12ZGVyd2luKCVwLCVkLCVkKSIpLCB3aW4sIHksIHgpKTsKKyAgICBUKChUX0NBTExFRCgibXZkZXJ3aW4oJXAsJWQsJWQpIiksICh2b2lkICopIHdpbiwgeSwgeCkpOwogCi0gICAgaWYgKHdpbiAmJiAob3JpZyA9IHdpbi0+X3BhcmVudCkpIHsKLQlpZiAod2luLT5fcGFyeCA9PSB4ICYmIHdpbi0+X3BhcnkgPT0geSkKLQkgICAgcmV0dXJuQ29kZShPSyk7Ci0JaWYgKHggPCAwIHx8IHkgPCAwKQotCSAgICByZXR1cm5Db2RlKEVSUik7Ci0JaWYgKCh4ICsgZ2V0bWF4eCh3aW4pID4gZ2V0bWF4eChvcmlnKSkgfHwKLQkgICAgKHkgKyBnZXRtYXh5KHdpbikgPiBnZXRtYXh5KG9yaWcpKSkKLQkgICAgcmV0dXJuQ29kZShFUlIpOwotICAgIH0gZWxzZQotCXJldHVybkNvZGUoRVJSKTsKLSAgICB3c3luY3VwKHdpbik7Ci0gICAgd2luLT5fcGFyeCA9IHg7Ci0gICAgd2luLT5fcGFyeSA9IHk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGdldG1heHkod2luKTsgaSsrKQotCXdpbi0+X2xpbmVbaV0udGV4dCA9ICYob3JpZy0+X2xpbmVbeSsrXS50ZXh0W3hdKTsKLSAgICByZXR1cm5Db2RlKE9LKTsKKyAgICBpZiAod2luICE9IDAKKwkmJiAob3JpZyA9IHdpbi0+X3BhcmVudCkgIT0gMAorCSYmICh4ID49IDAgJiYgeSA+PSAwKQorCSYmICh4ICsgZ2V0bWF4eCh3aW4pIDw9IGdldG1heHgob3JpZykpCisJJiYgKHkgKyBnZXRtYXh5KHdpbikgPD0gZ2V0bWF4eShvcmlnKSkpIHsKKwl3c3luY3VwKHdpbik7CisJd2luLT5fcGFyeCA9IHg7CisJd2luLT5fcGFyeSA9IHk7CisJZm9yIChpID0gMDsgaSA8IGdldG1heHkod2luKTsgaSsrKQorCSAgICB3aW4tPl9saW5lW2ldLnRleHQgPSAmKG9yaWctPl9saW5lW3krK10udGV4dFt4XSk7CisJcmMgPSBPSzsKKyAgICB9CisgICAgcmV0dXJuQ29kZShyYyk7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHN5bmNvayhXSU5ET1cgKndpbiwgYm9vbCBiZikKIC8qIGVuYWJsZS9kaXNhYmxlIGF1dG9tYXRpYyB3c3luY3VwKCkgb24gZWFjaCBjaGFuZ2UgdG8gd2luZG93ICovCiB7Ci0gICAgVCgoVF9DQUxMRUQoInN5bmNvayglcCwlZCkiKSwgd2luLCBiZikpOworICAgIFQoKFRfQ0FMTEVEKCJzeW5jb2soJXAsJWQpIiksICh2b2lkICopIHdpbiwgYmYpKTsKIAogICAgIGlmICh3aW4pIHsKIAl3aW4tPl9zeW5jID0gYmY7CkBAIC05OCw3ICs5Niw3IEBACiB7CiAgICAgV0lORE9XICp3cDsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3c3luY3VwKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgid3N5bmN1cCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAgICAgaWYgKHdpbiAmJiB3aW4tPl9wYXJlbnQpIHsKIAlmb3IgKHdwID0gd2luOyB3cC0+X3BhcmVudDsgd3AgPSB3cC0+X3BhcmVudCkgewogCSAgICBpbnQgeTsKQEAgLTEyOCw3ICsxMjYsNyBAQAogLyogbWFyayBjaGFuZ2VkIGV2ZXJ5IGNlbGwgaW4gd2luIHRoYXQgaXMgY2hhbmdlZCBpbiBhbnkgb2YgaXRzIGFuY2VzdG9ycyAqLwogLyogUmV3cml0dGVuIGJ5IEouIFBmZWlmZXIsIDEtQXByLTk2IChkb24ndCBldmVuIHRoaW5rIHRoYXQuLi4pICAgICAgICAgICAqLwogewotICAgIFQoKFRfQ0FMTEVEKCJ3c3luY2Rvd24oJXApIiksIHdpbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3c3luY2Rvd24oJXApIiksICh2b2lkICopIHdpbikpOwogCiAgICAgaWYgKHdpbiAmJiB3aW4tPl9wYXJlbnQpIHsKIAlXSU5ET1cgKnBwID0gd2luLT5fcGFyZW50OwpAQCAtMTY3LDcgKzE2NSw3IEBACiB7CiAgICAgV0lORE9XICp3cDsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3Y3Vyc3luY3VwKCVwKSIpLCB3aW4pKTsKKyAgICBUKChUX0NBTExFRCgid2N1cnN5bmN1cCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAgICAgZm9yICh3cCA9IHdpbjsgd3AgJiYgd3AtPl9wYXJlbnQ7IHdwID0gd3AtPl9wYXJlbnQpIHsKIAl3bW92ZSh3cC0+X3BhcmVudCwgd3AtPl9wYXJ5ICsgd3AtPl9jdXJ5LCB3cC0+X3BhcnggKyB3cC0+X2N1cngpOwogICAgIH0KQEAgLTE4MiwxOSArMTgwLDIzIEBACiAgICAgc2l6ZV90IGxpbmVzaXplOwogICAgIGludCBpOwogCi0gICAgVCgoVF9DQUxMRUQoImR1cHdpbiglcCkiKSwgd2luKSk7CisgICAgVCgoVF9DQUxMRUQoImR1cHdpbiglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICBpZiAod2luICE9IDApIHsKLQorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwlTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZih3aW4pOworI2VuZGlmCiAJX25jX2xvY2tfZ2xvYmFsKGN1cnNlcyk7CiAJaWYgKHdpbi0+X2ZsYWdzICYgX0lTUEFEKSB7Ci0JICAgIG53aW4gPSBuZXdwYWQod2luLT5fbWF4eSArIDEsCi0JCQkgIHdpbi0+X21heHggKyAxKTsKKwkgICAgbndpbiA9IE5DVVJTRVNfU1BfTkFNRShuZXdwYWQpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAgIHdpbi0+X21heHkgKyAxLAorCQkJCQkgICAgd2luLT5fbWF4eCArIDEpOwogCX0gZWxzZSB7Ci0JICAgIG53aW4gPSBuZXd3aW4od2luLT5fbWF4eSArIDEsCi0JCQkgIHdpbi0+X21heHggKyAxLAotCQkJICB3aW4tPl9iZWd5LAotCQkJICB3aW4tPl9iZWd4KTsKKwkgICAgbndpbiA9IE5DVVJTRVNfU1BfTkFNRShuZXd3aW4pIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAgIHdpbi0+X21heHkgKyAxLAorCQkJCQkgICAgd2luLT5fbWF4eCArIDEsCisJCQkJCSAgICB3aW4tPl9iZWd5LAorCQkJCQkgICAgd2luLT5fYmVneCk7CiAJfQogCiAJaWYgKG53aW4gIT0gMCkgewpAQCAtMjM3LDcgKzIzOSw3IEBACiAJICAgIGlmICh3aW4tPl9mbGFncyAmIF9JU1BBRCkKIAkJbndpbi0+X3BhZCA9IHdpbi0+X3BhZDsKIAotCSAgICBsaW5lc2l6ZSA9ICh3aW4tPl9tYXh4ICsgMSkgKiBzaXplb2YoTkNVUlNFU19DSF9UKTsKKwkgICAgbGluZXNpemUgPSAodW5zaWduZWQpICh3aW4tPl9tYXh4ICsgMSkgKiBzaXplb2YoTkNVUlNFU19DSF9UKTsKIAkgICAgZm9yIChpID0gMDsgaSA8PSBud2luLT5fbWF4eTsgaSsrKSB7CiAJCW1lbWNweShud2luLT5fbGluZVtpXS50ZXh0LCB3aW4tPl9saW5lW2ldLnRleHQsIGxpbmVzaXplKTsKIAkJbndpbi0+X2xpbmVbaV0uZmlyc3RjaGFyID0gd2luLT5fbGluZVtpXS5maXJzdGNoYXI7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvbWVtbW92ZS5jIGIvbmN1cnNlcy9iYXNlL21lbW1vdmUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkzYWQ3Mi4uMDAwMDAwMAotLS0gYS9uY3Vyc2VzL2Jhc2UvbWVtbW92ZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0KLU1PRFVMRV9JRCgiJElkOiBtZW1tb3ZlLmMsdiAxLjUgMjAwNy8wOC8xMSAxNzoxMjo0MyB0b20gRXhwICQiKQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGNsYXJrLm5ldD4gMTk5OCAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgVVNFX01ZX01FTU1PVkUKLSNkZWZpbmUgRFNUICgoY2hhciAqKXMxKQotI2RlZmluZSBTUkMgKChjb25zdCBjaGFyICopczIpCi1OQ1VSU0VTX0VYUE9SVCh2b2lkICopCi1fbmNfbWVtbW92ZSh2b2lkICpzMSwgY29uc3Qgdm9pZCAqczIsIHNpemVfdCBuKQotewotICAgIGlmIChuICE9IDApIHsKLQlpZiAoKERTVCArIG4gPiBTUkMpICYmIChTUkMgKyBuID4gRFNUKSkgewotCSAgICBzdGF0aWMgY2hhciAqYmZyOwotCSAgICBzdGF0aWMgc2l6ZV90IGxlbmd0aDsKLQkgICAgcmVnaXN0ZXIgc2l6ZV90IGo7Ci0JICAgIGlmIChsZW5ndGggPCBuKSB7Ci0JCWxlbmd0aCA9IChuICogMykgLyAyOwotCQliZnIgPSB0eXBlUmVhbGxvYyhjaGFyLCBsZW5ndGgsIGJmcik7Ci0JICAgIH0KLQkgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykKLQkJYmZyW2pdID0gU1JDW2pdOwotCSAgICBzMiA9IGJmcjsKLQl9Ci0Jd2hpbGUgKG4tLSAhPSAwKQotCSAgICBEU1Rbbl0gPSBTUkNbbl07Ci0gICAgfQotICAgIHJldHVybiBzMTsKLX0KLSNlbHNlCi1leHRlcm4KLU5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfbWVtbW92ZSh2b2lkKTsJCS8qIHF1aWV0J3MgZ2NjIHdhcm5pbmcgKi8KLU5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfbWVtbW92ZSh2b2lkKQotewotfQkJCQkvKiBub25lbXB0eSBmb3Igc3RyaWN0IEFOU0kgY29tcGlsZXJzICovCi0jZW5kaWYgLyogVVNFX01ZX01FTU1PVkUgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvYmFzZS9uY19wYW5lbC5jIGIvbmN1cnNlcy9iYXNlL25jX3BhbmVsLmMKaW5kZXggNTliZmJiZS4uNjliMTBiYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL25jX3BhbmVsLmMKKysrIGIvbmN1cnNlcy9iYXNlL25jX3BhbmVsLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiwxMCArMzIsMjIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBuY19wYW5lbC5jLHYgMS40IDIwMDAvMTIvMTAgMDI6NDM6MjggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBuY19wYW5lbC5jLHYgMS41IDIwMDkvMDQvMTEgMjE6MDU6MTAgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoc3RydWN0IHBhbmVsaG9vayAqKQorTkNVUlNFU19TUF9OQU1FKF9uY19wYW5lbGhvb2spIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgcmV0dXJuIChTUF9QQVJNCisJICAgID8gJihTUF9QQVJNLT5fcGFuZWxIb29rKQorCSAgICA6IChDVVJSRU5UX1NDUkVFTgorCSAgICAgICA/ICYoQ1VSUkVOVF9TQ1JFRU4tPl9wYW5lbEhvb2spCisJICAgICAgIDogMCkpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoc3RydWN0IHBhbmVsaG9vayAqKQogX25jX3BhbmVsaG9vayh2b2lkKQogewotICAgIHJldHVybiAoU1AgPyAmKFNQLT5fcGFuZWxIb29rKSA6IE5VTEwpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoX25jX3BhbmVsaG9vaykgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL3Jlc2l6ZXRlcm0uYyBiL25jdXJzZXMvYmFzZS9yZXNpemV0ZXJtLmMKaW5kZXggYTk0Y2ZjMy4uMWVjYTI3OSAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL3Jlc2l6ZXRlcm0uYworKysgYi9uY3Vyc2VzL2Jhc2UvcmVzaXpldGVybS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsNiArMjgsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTM5LDExICs0MCwxMiBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHJlc2l6ZXRlcm0uYyx2IDEuMzQgMjAwOC8wNi8wNyAxMzo1ODo0MCB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKIAotI2RlZmluZSBzdG9sZW5fbGluZXMgKHNjcmVlbl9saW5lcyAtIFNQLT5fbGluZXNfYXZhaWwpCitNT0RVTEVfSUQoIiRJZDogcmVzaXpldGVybS5jLHYgMS40NyAyMDE0LzEwLzEzIDA4OjU2OjQ5IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBJZiB3ZSdyZSB0cnlpbmcgdG8gYmUgcmVlbnRyYW50LCBkbyBub3Qgd2FudCBhbnkgbG9jYWwgc3RhdGljcy4KQEAgLTY0LDE4ICs2NiwyMyBAQAogc3RhdGljIHZvaWQKIHNob3dfd2luZG93X3NpemVzKGNvbnN0IGNoYXIgKm5hbWUpCiB7CisgICAgU0NSRUVOICpzcDsKICAgICBXSU5ET1dMSVNUICp3cDsKIAogICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwotICAgIF90cmFjZWYoIiVzIHJlc2l6aW5nOiAlMmQgeCAlMmQgKCUyZCB4ICUyZCkiLCBuYW1lLCBMSU5FUywgQ09MUywKLQkgICAgc2NyZWVuX2xpbmVzLCBzY3JlZW5fY29sdW1ucyk7Ci0gICAgZm9yIChlYWNoX3dpbmRvdyh3cCkpIHsKLQlfdHJhY2VmKCIgIHdpbmRvdyAlcCBpcyAlMmxkIHggJTJsZCBhdCAlMmxkLCUybGQiLAotCQkmKHdwLT53aW4pLAotCQkobG9uZykgd3AtPndpbi5fbWF4eSArIDEsCi0JCShsb25nKSB3cC0+d2luLl9tYXh4ICsgMSwKLQkJKGxvbmcpIHdwLT53aW4uX2JlZ3ksCi0JCShsb25nKSB3cC0+d2luLl9iZWd4KTsKKyAgICBmb3IgKGVhY2hfc2NyZWVuKHNwKSkgeworCV90cmFjZWYoIiVzIHJlc2l6aW5nOiAlcDogJTJkIHggJTJkICglMmQgeCAlMmQpIiwgbmFtZSwgKHZvaWQgKikgc3AsCisJCSoocHRyTGluZXMoc3ApKSwKKwkJKihwdHJDb2xzKHNwKSksCisJCXNjcmVlbl9saW5lcyhzcCksIHNjcmVlbl9jb2x1bW5zKHNwKSk7CisJZm9yIChlYWNoX3dpbmRvdyhzcCwgd3ApKSB7CisJICAgIF90cmFjZWYoIiAgd2luZG93ICVwIGlzICUybGQgeCAlMmxkIGF0ICUybGQsJTJsZCIsCisJCSAgICAodm9pZCAqKSAmKHdwLT53aW4pLAorCQkgICAgKGxvbmcpIHdwLT53aW4uX21heHkgKyAxLAorCQkgICAgKGxvbmcpIHdwLT53aW4uX21heHggKyAxLAorCQkgICAgKGxvbmcpIHdwLT53aW4uX2JlZ3ksCisJCSAgICAobG9uZykgd3AtPndpbi5fYmVneCk7CisJfQogICAgIH0KICAgICBfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOwogfQpAQCAtODYsMTUgKzkzLDIzIEBACiAgKiBzdHJ1Y3R1cmUncyBzaXplLgogICovCiBOQ1VSU0VTX0VYUE9SVChib29sKQotaXNfdGVybV9yZXNpemVkKGludCBUb0xpbmVzLCBpbnQgVG9Db2xzKQorTkNVUlNFU19TUF9OQU1FKGlzX3Rlcm1fcmVzaXplZCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgVG9MaW5lcywgaW50IFRvQ29scykKIHsKLSAgICBUKChUX0NBTExFRCgiaXNfdGVybV9yZXNpemVkKCVkLCAlZCkiKSwgVG9MaW5lcywgVG9Db2xzKSk7CisgICAgVCgoVF9DQUxMRUQoImlzX3Rlcm1fcmVzaXplZCglcCwgJWQsICVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBUb0xpbmVzLCBUb0NvbHMpKTsKICAgICByZXR1cm5Db2RlKFRvTGluZXMgPiAwCiAJICAgICAgICYmIFRvQ29scyA+IDAKLQkgICAgICAgJiYgKFRvTGluZXMgIT0gc2NyZWVuX2xpbmVzCi0JCSAgIHx8IFRvQ29scyAhPSBzY3JlZW5fY29sdW1ucykpOworCSAgICAgICAmJiAoVG9MaW5lcyAhPSBzY3JlZW5fbGluZXMoU1BfUEFSTSkKKwkJICAgfHwgVG9Db2xzICE9IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pKSk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChib29sKQoraXNfdGVybV9yZXNpemVkKGludCBUb0xpbmVzLCBpbnQgVG9Db2xzKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaXNfdGVybV9yZXNpemVkKSAoQ1VSUkVOVF9TQ1JFRU4sIFRvTGluZXMsIFRvQ29scyk7Cit9CisjZW5kaWYKKwogLyoKICAqLwogc3RhdGljIHJpcG9mZl90ICoKQEAgLTEwNCw2ICsxMTksOSBAQAogICAgIHJpcG9mZl90ICpyb3A7CiAKICAgICBpZiAod2luICE9IDApIHsKKyNpZmRlZiBVU0VfU1BfUklQT0ZGCisJU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgogCWZvciAoZWFjaF9yaXBvZmYocm9wKSkgewogCSAgICBpZiAocm9wLT53aW4gPT0gd2luICYmIHJvcC0+bGluZSAhPSAwKSB7CiAJCXJlc3VsdCA9IHJvcDsKQEAgLTEyNSw2ICsxNDMsOSBAQAogICAgIHJpcG9mZl90ICpyb3A7CiAKICAgICBpZiAod2luICE9IDApIHsKKyNpZmRlZiBVU0VfU1BfUklQT0ZGCisJU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgogCWZvciAoZWFjaF9yaXBvZmYocm9wKSkgewogCSAgICBpZiAocm9wLT5saW5lIDwgMCkgewogCQlyZXN1bHQgLT0gcm9wLT5saW5lOwpAQCAtMTQ2LDkgKzE2NywxMiBAQAogICAgIGludCBkZXB0aCA9IDA7CiAKICAgICBpZiAoY21wICE9IDApIHsKKyNpZmRlZiBVU0VfU1BfV0lORE9XTElTVAorCVNDUkVFTiAqc3AgPSBfbmNfc2NyZWVuX29mKGNtcCk7CisjZW5kaWYKIAlXSU5ET1dMSVNUICp3cDsKIAotCWZvciAoZWFjaF93aW5kb3cod3ApKSB7CisJZm9yIChlYWNoX3dpbmRvdyhzcCwgd3ApKSB7CiAJICAgIFdJTkRPVyAqdHN0ID0gJih3cC0+d2luKTsKIAkgICAgaWYgKHRzdC0+X3BhcmVudCA9PSBjbXApIHsKIAkJZGVwdGggPSAxICsgY2hpbGRfZGVwdGgodHN0KTsKQEAgLTE4NCwxMyArMjA4LDEzIEBACiBhZGp1c3Rfd2luZG93KFdJTkRPVyAqd2luLCBpbnQgVG9MaW5lcywgaW50IFRvQ29scywgaW50IHN0b2xlbiBFWFRSQV9EQ0xTKQogewogICAgIGludCByZXN1bHQ7Ci0gICAgaW50IGJvdHRvbSA9IEN1ckxpbmVzICsgU1AtPl90b3BzdG9sZW4gLSBzdG9sZW47CisgICAgaW50IGJvdHRvbSA9IEN1ckxpbmVzICsgX25jX3NjcmVlbl9vZih3aW4pLT5fdG9wc3RvbGVuIC0gc3RvbGVuOwogICAgIGludCBteUxpbmVzID0gd2luLT5fbWF4eSArIDE7CiAgICAgaW50IG15Q29scyA9IHdpbi0+X21heHggKyAxOwogICAgIHJpcG9mZl90ICpyb3AgPSByaXBwZWRfd2luZG93KHdpbik7CiAKICAgICBUKChUX0NBTExFRCgiYWRqdXN0X3dpbmRvdyglcCwlZCwlZCklcyBkZXB0aCAlZC8lZCBjdXJyZW50bHkgJWxkeCVsZCBhdCAlbGQsJWxkIiksCi0gICAgICAgd2luLCBUb0xpbmVzLCBUb0NvbHMsCisgICAgICAgKHZvaWQgKikgd2luLCBUb0xpbmVzLCBUb0NvbHMsCiAgICAgICAgKHJvcCAhPSAwKSA/ICIgKHJpcCkiIDogIiIsCiAgICAgICAgcGFyZW50X2RlcHRoKHdpbiksCiAgICAgICAgY2hpbGRfZGVwdGgod2luKSwKQEAgLTIwMiwxMyArMjI2LDE5IEBACiAJICogSWYgaXQgaXMgYSByaXBwZWQtb2ZmIHdpbmRvdyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4sIHNpbXBseQogCSAqIG1vdmUgaXQgdG8gdGhlIHNhbWUgcmVsYXRpdmUgcG9zaXRpb24uCiAJICovCi0Jd2luLT5fYmVneSA9IFRvTGluZXMgLSByaXBwZWRfYm90dG9tKHdpbikgLSAwIC0gd2luLT5feW9mZnNldDsKKwl3aW4tPl9iZWd5ID0gKE5DVVJTRVNfU0laRV9UKSAoVG9MaW5lcyAtIHJpcHBlZF9ib3R0b20od2luKSAtIDAgLSB3aW4tPl95b2Zmc2V0KTsKKwlpZiAocm9wLT5ob29rID09IF9uY19zbGtfaW5pdGlhbGl6ZSkKKwkgICAgX25jX2Zvcm1hdF9zbGtzKAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKwkJCSAgICAgICBfbmNfc2NyZWVuX29mKHdpbiksCisjZW5kaWYKKwkJCSAgICAgICBUb0NvbHMpOwogICAgIH0gZWxzZSBpZiAod2luLT5fYmVneSA+PSBib3R0b20pIHsKIAkvKgogCSAqIElmIGl0IGlzIGJlbG93IHRoZSBib3R0b20gb2YgdGhlIG5ldyBzY3JlZW4sIG1vdmUgdXAgYnkgdGhlIHNhbWUKIAkgKiBhbW91bnQgdGhhdCB0aGUgc2NyZWVuIHNocmFuay4KIAkgKi8KLQl3aW4tPl9iZWd5ICs9IChUb0xpbmVzIC0gQ3VyTGluZXMpOworCXdpbi0+X2JlZ3kgPSAoTkNVUlNFU19TSVpFX1QpICh3aW4tPl9iZWd5ICsgKFRvTGluZXMgLSBDdXJMaW5lcykpOwogICAgIH0gZWxzZSB7CiAJaWYgKG15TGluZXMgPT0gKEN1ckxpbmVzIC0gc3RvbGVuKQogCSAgICAmJiBUb0xpbmVzICE9IEN1ckxpbmVzKSB7CkBAIC0yMzksMTkgKzI2OSwxOSBAQAogICogY2hpbGRyZW4sIGRlY3JlYXNlIHRob3NlIHRvIGZpdCwgdGhlbiBkZWNyZWFzZSB0aGUgY29udGFpbmluZyB3aW5kb3csIGV0Yy4KICAqLwogc3RhdGljIGludAotZGVjcmVhc2Vfc2l6ZShpbnQgVG9MaW5lcywgaW50IFRvQ29scywgaW50IHN0b2xlbiBFWFRSQV9EQ0xTKQorZGVjcmVhc2Vfc2l6ZShOQ1VSU0VTX1NQX0RDTHggaW50IFRvTGluZXMsIGludCBUb0NvbHMsIGludCBzdG9sZW4gRVhUUkFfRENMUykKIHsKICAgICBib29sIGZvdW5kOwogICAgIGludCBkZXB0aCA9IDA7CiAgICAgV0lORE9XTElTVCAqd3A7CiAKLSAgICBUKChUX0NBTExFRCgiZGVjcmVhc2Vfc2l6ZSglZCwgJWQpIiksIFRvTGluZXMsIFRvQ29scykpOworICAgIFQoKFRfQ0FMTEVEKCJkZWNyZWFzZV9zaXplKCVwLCAlZCwgJWQpIiksICh2b2lkICopIFNQX1BBUk0sIFRvTGluZXMsIFRvQ29scykpOwogCiAgICAgZG8gewogCWZvdW5kID0gRkFMU0U7CiAJVFIoVFJBQ0VfVVBEQVRFLCAoImRlY3JlYXNpbmcgc2l6ZSBvZiB3aW5kb3dzIHRvICVkeCVkLCBkZXB0aD0lZCIsCiAJCQkgIFRvTGluZXMsIFRvQ29scywgZGVwdGgpKTsKLQlmb3IgKGVhY2hfd2luZG93KHdwKSkgeworCWZvciAoZWFjaF93aW5kb3coU1BfUEFSTSwgd3ApKSB7CiAJICAgIFdJTkRPVyAqd2luID0gJih3cC0+d2luKTsKIAogCSAgICBpZiAoISh3aW4tPl9mbGFncyAmIF9JU1BBRCkpIHsKQEAgLTI3MywxOSArMzAzLDE5IEBACiAgKiBwYXJlbnQsIGluY3JlYXNlIHRob3NlIHRvIGZpdCwgdGhlbiBpbmNyZWFzZSB0aGUgY29udGFpbmVkIHdpbmRvdywgZXRjLgogICovCiBzdGF0aWMgaW50Ci1pbmNyZWFzZV9zaXplKGludCBUb0xpbmVzLCBpbnQgVG9Db2xzLCBpbnQgc3RvbGVuIEVYVFJBX0RDTFMpCitpbmNyZWFzZV9zaXplKE5DVVJTRVNfU1BfRENMeCBpbnQgVG9MaW5lcywgaW50IFRvQ29scywgaW50IHN0b2xlbiBFWFRSQV9EQ0xTKQogewogICAgIGJvb2wgZm91bmQ7CiAgICAgaW50IGRlcHRoID0gMDsKICAgICBXSU5ET1dMSVNUICp3cDsKIAotICAgIFQoKFRfQ0FMTEVEKCJpbmNyZWFzZV9zaXplKCVkLCAlZCkiKSwgVG9MaW5lcywgVG9Db2xzKSk7CisgICAgVCgoVF9DQUxMRUQoImluY3JlYXNlX3NpemUoJXAsICVkLCAlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgVG9MaW5lcywgVG9Db2xzKSk7CiAKICAgICBkbyB7CiAJZm91bmQgPSBGQUxTRTsKIAlUUihUUkFDRV9VUERBVEUsICgiaW5jcmVhc2luZyBzaXplIG9mIHdpbmRvd3MgdG8gJWR4JWQsIGRlcHRoPSVkIiwKIAkJCSAgVG9MaW5lcywgVG9Db2xzLCBkZXB0aCkpOwotCWZvciAoZWFjaF93aW5kb3cod3ApKSB7CisJZm9yIChlYWNoX3dpbmRvdyhTUF9QQVJNLCB3cCkpIHsKIAkgICAgV0lORE9XICp3aW4gPSAmKHdwLT53aW4pOwogCiAJICAgIGlmICghKHdpbi0+X2ZsYWdzICYgX0lTUEFEKSkgewpAQCAtMzA3LDI1ICszMzcsMjYgQEAKICAqIHN1Y2ggYXMgdW5nZXRjaCgpLgogICovCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1yZXNpemVfdGVybShpbnQgVG9MaW5lcywgaW50IFRvQ29scykKK05DVVJTRVNfU1BfTkFNRShyZXNpemVfdGVybSkgKE5DVVJTRVNfU1BfRENMeCBpbnQgVG9MaW5lcywgaW50IFRvQ29scykKIHsKICAgICBpbnQgcmVzdWx0ID0gT0sgRVhUUkFfQVJHUzsKICAgICBpbnQgd2FzX3N0b2xlbjsKIAotICAgIFQoKFRfQ0FMTEVEKCJyZXNpemVfdGVybSglZCwlZCkgb2xkKCVkLCVkKSIpLAotICAgICAgIFRvTGluZXMsIFRvQ29scywKLSAgICAgICBzY3JlZW5fbGluZXMsIHNjcmVlbl9jb2x1bW5zKSk7CisgICAgVCgoVF9DQUxMRUQoInJlc2l6ZV90ZXJtKCVwLCVkLCVkKSBvbGQoJWQsJWQpIiksCisgICAgICAgKHZvaWQgKikgU1BfUEFSTSwgVG9MaW5lcywgVG9Db2xzLAorICAgICAgIChTUF9QQVJNID09IDApID8gLTEgOiBzY3JlZW5fbGluZXMoU1BfUEFSTSksCisgICAgICAgKFNQX1BBUk0gPT0gMCkgPyAtMSA6IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pKSk7CiAKLSAgICBpZiAoU1AgPT0gMCkgeworICAgIGlmIChTUF9QQVJNID09IDAgfHwgVG9MaW5lcyA8PSAwIHx8IFRvQ29scyA8PSAwKSB7CiAJcmV0dXJuQ29kZShFUlIpOwogICAgIH0KIAotICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOworICAgIF9uY19ub25zcF9sb2NrX2dsb2JhbChjdXJzZXMpOwogCi0gICAgd2FzX3N0b2xlbiA9IChzY3JlZW5fbGluZXMgLSBTUC0+X2xpbmVzX2F2YWlsKTsKLSAgICBpZiAoaXNfdGVybV9yZXNpemVkKFRvTGluZXMsIFRvQ29scykpIHsKLQlpbnQgbXlMaW5lcyA9IEN1ckxpbmVzID0gc2NyZWVuX2xpbmVzOwotCWludCBteUNvbHMgPSBDdXJDb2xzID0gc2NyZWVuX2NvbHVtbnM7CisgICAgd2FzX3N0b2xlbiA9IChzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSBTUF9QQVJNLT5fbGluZXNfYXZhaWwpOworICAgIGlmIChOQ1VSU0VTX1NQX05BTUUoaXNfdGVybV9yZXNpemVkKSAoTkNVUlNFU19TUF9BUkd4IFRvTGluZXMsIFRvQ29scykpIHsKKwlpbnQgbXlMaW5lcyA9IEN1ckxpbmVzID0gc2NyZWVuX2xpbmVzKFNQX1BBUk0pOworCWludCBteUNvbHMgPSBDdXJDb2xzID0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7CiAKICNpZmRlZiBUUkFDRQogCWlmIChVU0VfVFJBQ0VGKFRSQUNFX1VQREFURSkpIHsKQEAgLTMzMyw1NiArMzY0LDkwIEBACiAJICAgIF9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7CiAJfQogI2VuZGlmCi0JaWYgKFRvTGluZXMgPiBzY3JlZW5fbGluZXMpIHsKLQkgICAgaW5jcmVhc2Vfc2l6ZShteUxpbmVzID0gVG9MaW5lcywgbXlDb2xzLCB3YXNfc3RvbGVuIEVYVFJBX0FSR1MpOworCWlmIChUb0xpbmVzID4gc2NyZWVuX2xpbmVzKFNQX1BBUk0pKSB7CisJICAgIHJlc3VsdCA9IGluY3JlYXNlX3NpemUoTkNVUlNFU19TUF9BUkd4CisJCQkJICAgbXlMaW5lcyA9IFRvTGluZXMsCisJCQkJICAgbXlDb2xzLAorCQkJCSAgIHdhc19zdG9sZW4gRVhUUkFfQVJHUyk7CiAJICAgIEN1ckxpbmVzID0gbXlMaW5lczsKIAkgICAgQ3VyQ29scyA9IG15Q29sczsKIAl9CiAKLQlpZiAoVG9Db2xzID4gc2NyZWVuX2NvbHVtbnMpIHsKLQkgICAgaW5jcmVhc2Vfc2l6ZShteUxpbmVzLCBteUNvbHMgPSBUb0NvbHMsIHdhc19zdG9sZW4gRVhUUkFfQVJHUyk7CisJaWYgKChyZXN1bHQgPT0gT0spCisJICAgICYmIChUb0NvbHMgPiBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSkpIHsKKwkgICAgcmVzdWx0ID0gaW5jcmVhc2Vfc2l6ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICBteUxpbmVzLAorCQkJCSAgIG15Q29scyA9IFRvQ29scywKKwkJCQkgICB3YXNfc3RvbGVuIEVYVFJBX0FSR1MpOwogCSAgICBDdXJMaW5lcyA9IG15TGluZXM7CiAJICAgIEN1ckNvbHMgPSBteUNvbHM7CiAJfQogCi0JaWYgKFRvTGluZXMgPCBteUxpbmVzIHx8Ci0JICAgIFRvQ29scyA8IG15Q29scykgewotCSAgICBkZWNyZWFzZV9zaXplKFRvTGluZXMsIFRvQ29scywgd2FzX3N0b2xlbiBFWFRSQV9BUkdTKTsKKwlpZiAoKHJlc3VsdCA9PSBPSykKKwkgICAgJiYgKFRvTGluZXMgPCBteUxpbmVzIHx8CisJCVRvQ29scyA8IG15Q29scykpIHsKKwkgICAgcmVzdWx0ID0gZGVjcmVhc2Vfc2l6ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICBUb0xpbmVzLAorCQkJCSAgIFRvQ29scywKKwkJCQkgICB3YXNfc3RvbGVuIEVYVFJBX0FSR1MpOwogCX0KIAotCXNjcmVlbl9saW5lcyA9IGxpbmVzID0gVG9MaW5lczsKLQlzY3JlZW5fY29sdW1ucyA9IGNvbHVtbnMgPSBUb0NvbHM7CisJaWYgKHJlc3VsdCA9PSBPSykgeworCSAgICBzY3JlZW5fbGluZXMoU1BfUEFSTSkgPSAoTkNVUlNFU19TSVpFX1QpIFRvTGluZXM7CisJICAgIHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pID0gKE5DVVJTRVNfU0laRV9UKSBUb0NvbHM7CiAKLQlTUC0+X2xpbmVzX2F2YWlsID0gbGluZXMgLSB3YXNfc3RvbGVuOwotCi0JaWYgKFNQLT5vbGRoYXNoKSB7Ci0JICAgIEZyZWVBbmROdWxsKFNQLT5vbGRoYXNoKTsKLQl9Ci0JaWYgKFNQLT5uZXdoYXNoKSB7Ci0JICAgIEZyZWVBbmROdWxsKFNQLT5uZXdoYXNoKTsKLQl9Ci0jaWZkZWYgVFJBQ0UKLQlpZiAoVVNFX1RSQUNFRihUUkFDRV9VUERBVEUpKSB7Ci0JICAgIFNFVF9MSU5FUyhUb0xpbmVzIC0gd2FzX3N0b2xlbik7Ci0JICAgIFNFVF9DT0xTKFRvQ29scyk7Ci0JICAgIHNob3dfd2luZG93X3NpemVzKCJhZnRlciIpOwotCSAgICBfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOwotCX0KKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwkgICAgQ2FsbERyaXZlcl8yKFNQX1BBUk0sIHRkX3NldHNpemUsIFRvTGluZXMsIFRvQ29scyk7CisjZWxzZQorCSAgICBsaW5lcyA9IChOQ1VSU0VTX1NJWkVfVCkgVG9MaW5lczsKKwkgICAgY29sdW1ucyA9IChOQ1VSU0VTX1NJWkVfVCkgVG9Db2xzOwogI2VuZGlmCisKKwkgICAgU1BfUEFSTS0+X2xpbmVzX2F2YWlsID0gKE5DVVJTRVNfU0laRV9UKSAoVG9MaW5lcyAtIHdhc19zdG9sZW4pOworCisJICAgIGlmIChTUF9QQVJNLT5vbGRoYXNoKSB7CisJCUZyZWVBbmROdWxsKFNQX1BBUk0tPm9sZGhhc2gpOworCSAgICB9CisJICAgIGlmIChTUF9QQVJNLT5uZXdoYXNoKSB7CisJCUZyZWVBbmROdWxsKFNQX1BBUk0tPm5ld2hhc2gpOworCSAgICB9CisjaWZkZWYgVFJBQ0UKKwkgICAgaWYgKFVTRV9UUkFDRUYoVFJBQ0VfVVBEQVRFKSkgeworCQlTRVRfTElORVMoVG9MaW5lcyAtIHdhc19zdG9sZW4pOworCQlTRVRfQ09MUyhUb0NvbHMpOworCQlzaG93X3dpbmRvd19zaXplcygiYWZ0ZXIiKTsKKwkJX25jX3VubG9ja19nbG9iYWwodHJhY2VmKTsKKwkgICAgfQorI2VuZGlmCisJfQogICAgIH0KIAotICAgIC8qCi0gICAgICogQWx3YXlzIHVwZGF0ZSBMSU5FUywgdG8gYWxsb3cgZm9yIGNhbGwgZnJvbSBsaWJfZG91cGRhdGUuYyB3aGljaAotICAgICAqIG5lZWRzIHRvIGhhdmUgdGhlIGNvdW50IGFkanVzdGVkIGJ5IHRoZSBzdG9sZW4gKHJpcHBlZCBvZmYpIGxpbmVzLgotICAgICAqLwotICAgIFNFVF9MSU5FUyhUb0xpbmVzIC0gd2FzX3N0b2xlbik7Ci0gICAgU0VUX0NPTFMoVG9Db2xzKTsKKyAgICBpZiAocmVzdWx0ID09IE9LKSB7CisJLyoKKwkgKiBBbHdheXMgdXBkYXRlIExJTkVTLCB0byBhbGxvdyBmb3IgY2FsbCBmcm9tIGxpYl9kb3VwZGF0ZS5jIHdoaWNoCisJICogbmVlZHMgdG8gaGF2ZSB0aGUgY291bnQgYWRqdXN0ZWQgYnkgdGhlIHN0b2xlbiAocmlwcGVkIG9mZikgbGluZXMuCisJICovCisJU0VUX0xJTkVTKFRvTGluZXMgLSB3YXNfc3RvbGVuKTsKKwlTRVRfQ09MUyhUb0NvbHMpOworICAgIH0KIAotICAgIF9uY191bmxvY2tfZ2xvYmFsKGN1cnNlcyk7CisgICAgX25jX25vbnNwX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKIAogICAgIHJldHVybkNvZGUocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3Jlc2l6ZV90ZXJtKGludCBUb0xpbmVzLCBpbnQgVG9Db2xzKQoreworICAgIGludCByZXMgPSBFUlI7CisgICAgX25jX3NwX2xvY2tfZ2xvYmFsKGN1cnNlcyk7CisgICAgcmVzID0gTkNVUlNFU19TUF9OQU1FKHJlc2l6ZV90ZXJtKSAoQ1VSUkVOVF9TQ1JFRU4sIFRvTGluZXMsIFRvQ29scyk7CisgICAgX25jX3NwX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKKyAgICByZXR1cm4gKHJlcyk7Cit9CisjZW5kaWYKKwogLyoKICAqIFRoaXMgZnVuY3Rpb24gcmVhbGxvY2F0ZXMgTkNVUlNFUyB3aW5kb3cgc3RydWN0dXJlcy4gIEl0IGlzIGludm9rZWQgaW4KICAqIHJlc3BvbnNlIHRvIGEgU0lHV0lOQ0ggaW50ZXJydXB0LiAgT3RoZXIgdXNlci1kZWZpbmVkIHdpbmRvd3MgbWF5IGFsc28gbmVlZApAQCAtMzkyLDM0ICs0NTcsMzQgQEAKICAqIGludm9rZWQgZGlyZWN0bHkgZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKLXJlc2l6ZXRlcm0oaW50IFRvTGluZXMsIGludCBUb0NvbHMpCitOQ1VSU0VTX1NQX05BTUUocmVzaXpldGVybSkgKE5DVVJTRVNfU1BfRENMeCBpbnQgVG9MaW5lcywgaW50IFRvQ29scykKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOwogCi0gICAgVCgoVF9DQUxMRUQoInJlc2l6ZXRlcm0oJWQsJWQpIG9sZCglZCwlZCkiKSwKLSAgICAgICBUb0xpbmVzLCBUb0NvbHMsCi0gICAgICAgc2NyZWVuX2xpbmVzLCBzY3JlZW5fY29sdW1ucykpOworICAgIFQoKFRfQ0FMTEVEKCJyZXNpemV0ZXJtKCVwLCAlZCwlZCkgb2xkKCVkLCVkKSIpLAorICAgICAgICh2b2lkICopIFNQX1BBUk0sIFRvTGluZXMsIFRvQ29scywKKyAgICAgICAoU1BfUEFSTSA9PSAwKSA/IC0xIDogc2NyZWVuX2xpbmVzKFNQX1BBUk0pLAorICAgICAgIChTUF9QQVJNID09IDApID8gLTEgOiBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSkpOwogCi0gICAgaWYgKFNQICE9IDApIHsKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmIFRvTGluZXMgPiAwICYmIFRvQ29scyA+IDApIHsKIAlyZXN1bHQgPSBPSzsKLQlTUC0+X3NpZ193aW5jaCA9IEZBTFNFOworCVNQX1BBUk0tPl9zaWdfd2luY2ggPSBGQUxTRTsKIAotCWlmIChpc190ZXJtX3Jlc2l6ZWQoVG9MaW5lcywgVG9Db2xzKSkgeworCWlmIChOQ1VSU0VTX1NQX05BTUUoaXNfdGVybV9yZXNpemVkKSAoTkNVUlNFU19TUF9BUkd4IFRvTGluZXMsIFRvQ29scykpIHsKICNpZiBVU0VfU0lHV0lOQ0gKIAkgICAgcmlwb2ZmX3QgKnJvcDsKLQkgICAgYm9vbCBzbGtfdmlzaWJsZSA9IChTUCAhPSAwCi0JCQkJJiYgU1AtPl9zbGsgIT0gMAotCQkJCSYmICEoU1AtPl9zbGstPmhpZGRlbikpOworCSAgICBib29sIHNsa192aXNpYmxlID0gKFNQX1BBUk0gIT0gMAorCQkJCSYmIFNQX1BBUk0tPl9zbGsgIT0gMAorCQkJCSYmICEoU1BfUEFSTS0+X3Nsay0+aGlkZGVuKSk7CiAKIAkgICAgaWYgKHNsa192aXNpYmxlKSB7CiAJCXNsa19jbGVhcigpOwogCSAgICB9CiAjZW5kaWYKLQkgICAgcmVzdWx0ID0gcmVzaXplX3Rlcm0oVG9MaW5lcywgVG9Db2xzKTsKKwkgICAgcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKHJlc2l6ZV90ZXJtKSAoTkNVUlNFU19TUF9BUkd4IFRvTGluZXMsIFRvQ29scyk7CiAKICNpZiBVU0VfU0lHV0lOQ0gKLQkgICAgX25jX3VuZ2V0Y2goU1AsIEtFWV9SRVNJWkUpOwkvKiBzbyBhcHBsaWNhdGlvbiBjYW4ga25vdyB0aGlzICovCi0JICAgIGNsZWFyb2soY3Vyc2NyLCBUUlVFKTsJLyogc2NyZWVuIGNvbnRlbnRzIGFyZSB1bmtub3duICovCisJICAgIGNsZWFyb2soQ3VyU2NyZWVuKFNQX1BBUk0pLCBUUlVFKTsJLyogc2NyZWVuIGNvbnRlbnRzIGFyZSB1bmtub3duICovCiAKIAkgICAgLyogcmlwcGVkLW9mZiBsaW5lcyBhcmUgYSBzcGVjaWFsIGNhc2U6IGlmIHdlIGRpZCBub3QgbGVuZ3RoZW4KIAkgICAgICogdGhlbSwgd2UgaGF2ZW4ndCBtb3ZlZCB0aGVtIGVpdGhlci4gIHJlcGFpbnQgdGhlbSwgdG9vLgpAQCAtNDI5LDcgKzQ5NCw3IEBACiAJICAgICAqIG5vdCBrbm93IHdoaWNoIGFyZSByZWFsbHkgb24gdG9wLgogCSAgICAgKi8KIAkgICAgZm9yIChlYWNoX3JpcG9mZihyb3ApKSB7Ci0JCWlmIChyb3AtPndpbiAhPSBzdGRzY3IKKwkJaWYgKHJvcC0+d2luICE9IFN0ZFNjcmVlbihTUF9QQVJNKQogCQkgICAgJiYgcm9wLT53aW4gIT0gMAogCQkgICAgJiYgcm9wLT5saW5lIDwgMCkgewogCkBAIC00NDIsMTQgKzUwNywyNCBAQAogCiAJICAgIC8qIHNvZnQta2V5cyBhcmUgYSBzcGVjaWFsIGNhc2U6IHdlIF9rbm93XyBob3cgdG8gcmVwYWludCB0aGVtICovCiAJICAgIGlmIChzbGtfdmlzaWJsZSkgewotCQlzbGtfcmVzdG9yZSgpOwotCQlzbGtfdG91Y2goKTsKLQotCQlzbGtfcmVmcmVzaCgpOworCQlOQ1VSU0VTX1NQX05BTUUoc2xrX3Jlc3RvcmUpIChOQ1VSU0VTX1NQX0FSRyk7CisJCU5DVVJTRVNfU1BfTkFNRShzbGtfdG91Y2gpIChOQ1VSU0VTX1NQX0FSRyk7CisJCU5DVVJTRVNfU1BfTkFNRShzbGtfcmVmcmVzaCkgKE5DVVJTRVNfU1BfQVJHKTsKIAkgICAgfQogI2VuZGlmCiAJfQorI2lmIFVTRV9TSUdXSU5DSAorCXNhZmVfdW5nZXRjaChTUF9QQVJNLCBLRVlfUkVTSVpFKTsJLyogc28gYXBwbGljYXRpb24gY2FuIGtub3cgdGhpcyAqLworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorcmVzaXpldGVybShpbnQgVG9MaW5lcywgaW50IFRvQ29scykKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHJlc2l6ZXRlcm0pIChDVVJSRU5UX1NDUkVFTiwgVG9MaW5lcywgVG9Db2xzKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL3NhZmVfc3ByaW50Zi5jIGIvbmN1cnNlcy9iYXNlL3NhZmVfc3ByaW50Zi5jCmluZGV4IDhmYzVkODkuLjM0YWJkMmYgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS9zYWZlX3NwcmludGYuYworKysgYi9uY3Vyc2VzL2Jhc2Uvc2FmZV9zcHJpbnRmLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMyArMjcsMTMgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGNsYXJrLm5ldD4gMTk5NyAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgIDE5OTctb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHNhZmVfc3ByaW50Zi5jLHYgMS4yMCAyMDA3LzA0LzIxIDIyOjI4OjA2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogc2FmZV9zcHJpbnRmLmMsdiAxLjI3IDIwMTMvMDEvMjAgMDE6MDQ6MzIgdG9tIEV4cCAkIikKIAogI2lmIFVTRV9TQUZFX1NQUklOVEYKIApAQCAtMTA5LDEyICsxMDksMTYgQEAKIAkJICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gUHJlYykgewogCQkJcHJlYyA9IGl2YWw7CiAJCSAgICB9Ci0JCSAgICBzcHJpbnRmKGZtdF9hcmcsICIlZCIsIGl2YWwpOworCQkgICAgX25jX1NQUklOVEYoZm10X2FyZywKKwkJCQlfbmNfU0xJTUlUKHNpemVvZihmbXRfYXJnKSkKKwkJCQkiJWQiLCBpdmFsKTsKIAkJICAgIGZtdF9sZW4gKz0gc3RybGVuKGZtdF9hcmcpOwotCQkgICAgaWYgKChmb3JtYXQgPSByZWFsbG9jKGZvcm1hdCwgZm10X2xlbikpID09IDApIHsKKwkJICAgIGlmICgoZm9ybWF0ID0gX25jX2RvYWxsb2MoZm9ybWF0LCBmbXRfbGVuKSkgPT0gMCkgeworCQkJZnJlZShidWZmZXIpOwogCQkJcmV0dXJuIC0xOwogCQkgICAgfQotCQkgICAgc3RyY3B5KCZmb3JtYXRbLS1mXSwgZm10X2FyZyk7CisJCSAgICAtLWY7CisJCSAgICBfbmNfU1RSQ1BZKCZmb3JtYXRbZl0sIGZtdF9hcmcsIGZtdF9sZW4gLSBmKTsKIAkJICAgIGYgPSBzdHJsZW4oZm9ybWF0KTsKIAkJfSBlbHNlIGlmIChpc2FscGhhKFVDaGFyKCpmbXQpKSkgewogCQkgICAgZG9uZSA9IFRSVUU7CkBAIC0xODUsMTMgKzE4OSwxMyBAQAogCSAgICBmb3JtYXRbZl0gPSAnXDAnOwogCSAgICBzd2l0Y2ggKHVzZWQpIHsKIAkgICAgY2FzZSAnaSc6Ci0JCXNwcmludGYoYnVmZmVyLCBmb3JtYXQsIGl2YWwpOworCQlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQobGVuZ3RoKSBmb3JtYXQsIGl2YWwpOwogCQlicmVhazsKIAkgICAgY2FzZSAnZic6Ci0JCXNwcmludGYoYnVmZmVyLCBmb3JtYXQsIGZ2YWwpOworCQlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQobGVuZ3RoKSBmb3JtYXQsIGZ2YWwpOwogCQlicmVhazsKIAkgICAgZGVmYXVsdDoKLQkJc3ByaW50ZihidWZmZXIsIGZvcm1hdCwgcHZhbCk7CisJCV9uY19TUFJJTlRGKGJ1ZmZlciwgX25jX1NMSU1JVChsZW5ndGgpIGZvcm1hdCwgcHZhbCk7CiAJCWJyZWFrOwogCSAgICB9CiAJICAgIGxlbiArPSAoaW50KSBzdHJsZW4oYnVmZmVyKTsKQEAgLTIxNCwxMyArMjE4LDIwIEBACiAgKiBXcmFwcGVyIGZvciB2c3ByaW50ZiB0aGF0IGFsbG9jYXRlcyBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIHJlc3VsdC4KICAqLwogTkNVUlNFU19FWFBPUlQoY2hhciAqKQotX25jX3ByaW50Zl9zdHJpbmcoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQorTkNVUlNFU19TUF9OQU1FKF9uY19wcmludGZfc3RyaW5nKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkJICAgIGNvbnN0IGNoYXIgKmZtdCwKKwkJCQkgICAgdmFfbGlzdCBhcCkKIHsKICAgICBjaGFyICpyZXN1bHQgPSAwOwogCiAgICAgaWYgKGZtdCAhPSAwKSB7CiAjaWYgVVNFX1NBRkVfU1BSSU5URgotCWludCBsZW4gPSBfbmNfcHJpbnRmX2xlbmd0aChmbXQsIGFwKTsKKwl2YV9saXN0IGFwMjsKKwlpbnQgbGVuOworCisJYmVnaW5fdmFfY29weShhcDIsIGFwKTsKKwlsZW4gPSBfbmNfcHJpbnRmX2xlbmd0aChmbXQsIGFwMik7CisJZW5kX3ZhX2NvcHkoYXAyKTsKIAogCWlmICgoaW50KSBteV9sZW5ndGggPCBsZW4gKyAxKSB7CiAJICAgIG15X2xlbmd0aCA9IDIgKiAobGVuICsgMSk7CkBAIC0yMzcsMTIgKzI0OCwxMiBAQAogI2RlZmluZSBNeUNvbHMgX25jX2dsb2JhbHMuc2FmZXByaW50X2NvbHMKICNkZWZpbmUgTXlSb3dzIF9uY19nbG9iYWxzLnNhZmVwcmludF9yb3dzCiAKLQlpZiAoc2NyZWVuX2xpbmVzID4gTXlSb3dzIHx8IHNjcmVlbl9jb2x1bW5zID4gTXlDb2xzKSB7Ci0JICAgIGlmIChzY3JlZW5fbGluZXMgPiBNeVJvd3MpCi0JCU15Um93cyA9IHNjcmVlbl9saW5lczsKLQkgICAgaWYgKHNjcmVlbl9jb2x1bW5zID4gTXlDb2xzKQotCQlNeUNvbHMgPSBzY3JlZW5fY29sdW1uczsKLQkgICAgbXlfbGVuZ3RoID0gKE15Um93cyAqIChNeUNvbHMgKyAxKSkgKyAxOworCWlmIChzY3JlZW5fbGluZXMoU1BfUEFSTSkgPiBNeVJvd3MgfHwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgPiBNeUNvbHMpIHsKKwkgICAgaWYgKHNjcmVlbl9saW5lcyhTUF9QQVJNKSA+IE15Um93cykKKwkJTXlSb3dzID0gc2NyZWVuX2xpbmVzKFNQX1BBUk0pOworCSAgICBpZiAoc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgPiBNeUNvbHMpCisJCU15Q29scyA9IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pOworCSAgICBteV9sZW5ndGggPSAoc2l6ZV90KSAoTXlSb3dzICogKE15Q29scyArIDEpKSArIDE7CiAJICAgIG15X2J1ZmZlciA9IHR5cGVSZWFsbG9jKGNoYXIsIG15X2xlbmd0aCwgbXlfYnVmZmVyKTsKIAl9CiAKQEAgLTI2MiwzICsyNzMsMTEgQEAKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGNoYXIgKikKK19uY19wcmludGZfc3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19wcmludGZfc3RyaW5nKSAoQ1VSUkVOVF9TQ1JFRU4sIGZtdCwgYXApOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvdHJpZXMuYyBiL25jdXJzZXMvYmFzZS90cmllcy5jCmluZGV4IGM0MjYzYzcuLmFkODVkMjIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvYmFzZS90cmllcy5jCisrKyBiL25jdXJzZXMvYmFzZS90cmllcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzksNyArMzksNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHRyaWVzLmMsdiAxLjI3IDIwMDgvMDgvMTYgMTk6MjI6NTUgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB0cmllcy5jLHYgMS4zMCAyMDEwLzA4LzI4IDIxOjA4OjIzIHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBFeHBhbmQgYSBrZXljb2RlIGludG8gdGhlIHN0cmluZyB0aGF0IGl0IGNvcnJlc3BvbmRzIHRvLCByZXR1cm5pbmcgbnVsbCBpZgpAQCAtNzIsNyArNzIsOSBAQAogCSAgICAqKCh1bnNpZ25lZCBjaGFyICopIChyZXN1bHQgKyBsZW4pKSA9IDEyODsKICNpZmRlZiBUUkFDRQogCWlmIChsZW4gPT0gMCAmJiBVU0VfVFJBQ0VGKFRSQUNFX01BWElNVU0pKSB7Ci0JICAgIF90cmFjZWYoImV4cGFuZF9rZXkgJXMgJXMiLCBfbmNfdHJhY2VjaGFyKFNQLCBjb2RlKSwgX25jX3Zpc2J1ZihyZXN1bHQpKTsKKwkgICAgX3RyYWNlZigiZXhwYW5kX2tleSAlcyAlcyIsCisJCSAgICBfbmNfdHJhY2VjaGFyKENVUlJFTlRfU0NSRUVOLCAoaW50KSBjb2RlKSwKKwkJICAgIF9uY192aXNidWYocmVzdWx0KSk7CiAJICAgIF9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7CiAJfQogI2VuZGlmCkBAIC04Nyw3ICs4OSw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfcmVtb3ZlX2tleShUUklFUyAqKiB0cmVlLCB1bnNpZ25lZCBjb2RlKQogewotICAgIFQoKFRfQ0FMTEVEKCJfbmNfcmVtb3ZlX2tleSglcCwlZCkiKSwgdHJlZSwgY29kZSkpOworICAgIFQoKFRfQ0FMTEVEKCJfbmNfcmVtb3ZlX2tleSglcCwlZCkiKSwgKHZvaWQgKikgdHJlZSwgY29kZSkpOwogCiAgICAgaWYgKGNvZGUgPT0gMCkKIAlyZXR1cm5Db2RlKEZBTFNFKTsKQEAgLTExOSw3ICsxMjEsNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogX25jX3JlbW92ZV9zdHJpbmcoVFJJRVMgKiogdHJlZSwgY29uc3QgY2hhciAqc3RyaW5nKQogewotICAgIFQoKFRfQ0FMTEVEKCJfbmNfcmVtb3ZlX3N0cmluZyglcCwlcykiKSwgdHJlZSwgX25jX3Zpc2J1ZihzdHJpbmcpKSk7CisgICAgVCgoVF9DQUxMRUQoIl9uY19yZW1vdmVfc3RyaW5nKCVwLCVzKSIpLCAodm9pZCAqKSB0cmVlLCBfbmNfdmlzYnVmKHN0cmluZykpKTsKIAogICAgIGlmIChzdHJpbmcgPT0gMCB8fCAqc3RyaW5nID09IDApCiAJcmV0dXJuQ29kZShGQUxTRSk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2Jhc2UvdXNlX3dpbmRvdy5jIGIvbmN1cnNlcy9iYXNlL3VzZV93aW5kb3cuYwppbmRleCBmNjQwOGMzLi44ZWI3MzM5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2Jhc2UvdXNlX3dpbmRvdy5jCisrKyBiL25jdXJzZXMvYmFzZS91c2Vfd2luZG93LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiB1c2Vfd2luZG93LmMsdiAxLjggMjAwOC8wNi8wNyAxNDoxMzo0NiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHVzZV93aW5kb3cuYyx2IDEuOSAyMDA5LzEwLzI0IDIyOjQwOjI0IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHVzZV93aW5kb3coV0lORE9XICp3aW4sIE5DVVJTRVNfV0lORE9XX0NCIGZ1bmMsIHZvaWQgKmRhdGEpCiB7CiAgICAgaW50IGNvZGUgPSBPSzsKIAotICAgIFQoKFRfQ0FMTEVEKCJ1c2Vfd2luZG93KCVwLCVwLCVwKSIpLCB3aW4sIGZ1bmMsIGRhdGEpKTsKKyAgICBUKChUX0NBTExFRCgidXNlX3dpbmRvdyglcCwlcCwlcCkiKSwgKHZvaWQgKikgd2luLCBmdW5jLCBkYXRhKSk7CiAgICAgX25jX2xvY2tfZ2xvYmFsKGN1cnNlcyk7CiAgICAgY29kZSA9IGZ1bmMod2luLCBkYXRhKTsKICAgICBfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL3Zzc2NhbmYuYyBiL25jdXJzZXMvYmFzZS92c3NjYW5mLmMKaW5kZXggZTYyNTNjMy4uMzhjNzkyNiAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL3Zzc2NhbmYuYworKysgYi9uY3Vyc2VzL2Jhc2UvdnNzY2FuZi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsNyArMzgsNyBAQAogCiAjaWYgIUhBVkVfVlNTQ0FORgogCi1NT0RVTEVfSUQoIiRJZDogdnNzY2FuZi5jLHYgMS4xOCAyMDA0LzA0LzAzIDIwOjI3OjAyIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogdnNzY2FuZi5jLHYgMS4yMCAyMDEyLzAyLzIyIDIyOjI2OjU4IHRvbSBFeHAgJCIpCiAKICNpZiAhKEhBVkVfVkZTQ0FORiB8fCBIQVZFX19ET1NDQU4pCiAKQEAgLTI5MywxMiArMjkzLDEyIEBACiAKIAkJLyogYWRkICVuLCBpZiB0aGUgZm9ybWF0IHdhcyBub3QgdGhhdCAqLwogCQlpZiAoY2h1bmsgIT0gY0Fzc2lnbmVkKSB7Ci0JCSAgICBzdHJjYXQobXlfZm10LCAiJW4iKTsKKwkJICAgIF9uY19TVFJDQVQobXlfZm10LCAiJW4iLCBsZW5fZm10KTsKIAkJfQogCiAJCXN3aXRjaCAoY2h1bmspIHsKIAkJY2FzZSBjQXNzaWduZWQ6Ci0JCSAgICBzdHJjYXQobXlfZm10LCAiJW4iKTsKKwkJICAgIF9uY19TVFJDQVQobXlfZm10LCAiJW4iLCBsZW5fZm10KTsKIAkJICAgIHBvaW50ZXIgPSAmZWF0ZW47CiAJCSAgICBicmVhazsKIAkJY2FzZSBjSW50OgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9iYXNlL3dyZXNpemUuYyBiL25jdXJzZXMvYmFzZS93cmVzaXplLmMKaW5kZXggZjQ2MDg1YS4uYmM2YjU3MyAxMDA2NDQKLS0tIGEvbmN1cnNlcy9iYXNlL3dyZXNpemUuYworKysgYi9uY3Vyc2VzL2Jhc2Uvd3Jlc2l6ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsMTIgKzI3LDEzIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni0yMDAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHdyZXNpemUuYyx2IDEuMjkgMjAwOC8wNi8wNyAxMzo1OTowMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHdyZXNpemUuYyx2IDEuMzUgMjAxMS8wNS8yMSAxODo1NTowNyB0b20gRXhwICQiKQogCiBzdGF0aWMgaW50CiBjbGVhbnVwX2xpbmVzKHN0cnVjdCBsZGF0ICpkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtNTMsMTAgKzU0LDEzIEBACiAgICAgV0lORE9XTElTVCAqd3A7CiAgICAgc3RydWN0IGxkYXQgKnBsaW5lID0gY21wLT5fbGluZTsKICAgICBpbnQgcm93OworI2lmZGVmIFVTRV9TUF9XSU5ET1dMSVNUCisgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2YoY21wKTsKKyNlbmRpZgogCiAgICAgX25jX2xvY2tfZ2xvYmFsKGN1cnNlcyk7CiAKLSAgICBmb3IgKGVhY2hfd2luZG93KHdwKSkgeworICAgIGZvciAoZWFjaF93aW5kb3coU1BfUEFSTSwgd3ApKSB7CiAJV0lORE9XICp0c3QgPSAmKHdwLT53aW4pOwogCiAJaWYgKHRzdC0+X3BhcmVudCA9PSBjbXApIHsKQEAgLTY3LDkgKzcxLDkgQEAKIAkJdHN0LT5fcGFyeCA9IGNtcC0+X21heHg7CiAKIAkgICAgaWYgKHRzdC0+X21heHkgKyB0c3QtPl9wYXJ5ID4gY21wLT5fbWF4eSkKLQkJdHN0LT5fbWF4eSA9IGNtcC0+X21heHkgLSB0c3QtPl9wYXJ5OworCQl0c3QtPl9tYXh5ID0gKE5DVVJTRVNfU0laRV9UKSAoY21wLT5fbWF4eSAtIHRzdC0+X3BhcnkpOwogCSAgICBpZiAodHN0LT5fbWF4eCArIHRzdC0+X3BhcnggPiBjbXAtPl9tYXh4KQotCQl0c3QtPl9tYXh4ID0gY21wLT5fbWF4eCAtIHRzdC0+X3Bhcng7CisJCXRzdC0+X21heHggPSAoTkNVUlNFU19TSVpFX1QpIChjbXAtPl9tYXh4IC0gdHN0LT5fcGFyeCk7CiAKIAkgICAgZm9yIChyb3cgPSAwOyByb3cgPD0gdHN0LT5fbWF4eTsgKytyb3cpIHsKIAkJdHN0LT5fbGluZVtyb3ddLnRleHQgPSAmcGxpbmVbdHN0LT5fcGFyeSArIHJvd10udGV4dFt0c3QtPl9wYXJ4XTsKQEAgLTkzLDcgKzk3LDcgQEAKICAgICBzdHJ1Y3QgbGRhdCAqbmV3X2xpbmVzID0gMDsKIAogI2lmZGVmIFRSQUNFCi0gICAgVCgoVF9DQUxMRUQoIndyZXNpemUoJXAsJWQsJWQpIiksIHdpbiwgVG9MaW5lcywgVG9Db2xzKSk7CisgICAgVCgoVF9DQUxMRUQoIndyZXNpemUoJXAsJWQsJWQpIiksICh2b2lkICopIHdpbiwgVG9MaW5lcywgVG9Db2xzKSk7CiAgICAgaWYgKHdpbikgewogCVRSKFRSQUNFX1VQREFURSwgKCIuLi5iZWcgKCVsZCwgJWxkKSwgbWF4KCVsZCwlbGQpLCByZWcoJWxkLCVsZCkiLAogCQkJICAobG9uZykgd2luLT5fYmVneSwgKGxvbmcpIHdpbi0+X2JlZ3gsCkBAIC0xNTMsNyArMTU3LDggQEAKIAlpZiAoISh3aW4tPl9mbGFncyAmIF9TVUJXSU4pKSB7CiAJICAgIGlmIChyb3cgPD0gc2l6ZV95KSB7CiAJCWlmIChUb0NvbHMgIT0gc2l6ZV94KSB7Ci0JCSAgICBpZiAoKHMgPSB0eXBlTWFsbG9jKE5DVVJTRVNfQ0hfVCwgVG9Db2xzICsgMSkpID09IDApCisJCSAgICBzID0gdHlwZU1hbGxvYyhOQ1VSU0VTX0NIX1QsICh1bnNpZ25lZCkgVG9Db2xzICsgMSk7CisJCSAgICBpZiAocyA9PSAwKQogCQkJcmV0dXJuQ29kZShjbGVhbnVwX2xpbmVzKG5ld19saW5lcywgcm93KSk7CiAJCSAgICBmb3IgKGNvbCA9IDA7IGNvbCA8PSBUb0NvbHM7ICsrY29sKSB7CiAJCQlzW2NvbF0gPSAoY29sIDw9IHNpemVfeApAQCAtMTY0LDEzICsxNjksMTYgQEAKIAkJICAgIHMgPSB3aW4tPl9saW5lW3Jvd10udGV4dDsKIAkJfQogCSAgICB9IGVsc2UgewotCQlpZiAoKHMgPSB0eXBlTWFsbG9jKE5DVVJTRVNfQ0hfVCwgVG9Db2xzICsgMSkpID09IDApCisJCXMgPSB0eXBlTWFsbG9jKE5DVVJTRVNfQ0hfVCwgKHVuc2lnbmVkKSBUb0NvbHMgKyAxKTsKKwkJaWYgKHMgPT0gMCkKIAkJICAgIHJldHVybkNvZGUoY2xlYW51cF9saW5lcyhuZXdfbGluZXMsIHJvdykpOwogCQlmb3IgKGNvbCA9IDA7IGNvbCA8PSBUb0NvbHM7ICsrY29sKQogCQkgICAgc1tjb2xdID0gd2luLT5fbmNfYmtnZDsKIAkgICAgfQotCX0gZWxzZSB7CisJfSBlbHNlIGlmIChwbGluZSAhPSAwICYmIHBsaW5lW3dpbi0+X3BhcnkgKyByb3ddLnRleHQgIT0gMCkgewogCSAgICBzID0gJnBsaW5lW3dpbi0+X3BhcnkgKyByb3ddLnRleHRbd2luLT5fcGFyeF07CisJfSBlbHNlIHsKKwkgICAgcyA9IDA7CiAJfQogCiAJaWZfVVNFX1NDUk9MTF9ISU5UUyhuZXdfbGluZXNbcm93XS5vbGRpbmRleCA9IHJvdyk7CkBAIC0xODEsMTEgKzE4OSwxMSBAQAogCWlmICgoVG9Db2xzICE9IHNpemVfeCkgfHwgKHJvdyA+IHNpemVfeSkpIHsKIAkgICAgaWYgKGVuZCA+PSBiZWdpbikgewkvKiBncm93aW5nICovCiAJCWlmIChuZXdfbGluZXNbcm93XS5maXJzdGNoYXIgPCBiZWdpbikKLQkJICAgIG5ld19saW5lc1tyb3ddLmZpcnN0Y2hhciA9IGJlZ2luOworCQkgICAgbmV3X2xpbmVzW3Jvd10uZmlyc3RjaGFyID0gKE5DVVJTRVNfU0laRV9UKSBiZWdpbjsKIAkgICAgfSBlbHNlIHsJCS8qIHNocmlua2luZyAqLwogCQluZXdfbGluZXNbcm93XS5maXJzdGNoYXIgPSAwOwogCSAgICB9Ci0JICAgIG5ld19saW5lc1tyb3ddLmxhc3RjaGFyID0gVG9Db2xzOworCSAgICBuZXdfbGluZXNbcm93XS5sYXN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgVG9Db2xzOwogCX0KIAluZXdfbGluZXNbcm93XS50ZXh0ID0gczsKICAgICB9CkBAIC0yMTIsOCArMjIwLDggQEAKICAgICAgKiBGaW5hbGx5LCBhZGp1c3QgdGhlIHBhcmFtZXRlcnMgc2hvd2luZyBzY3JlZW4gc2l6ZSBhbmQgY3Vyc29yCiAgICAgICogcG9zaXRpb246CiAgICAgICovCi0gICAgd2luLT5fbWF4eCA9IFRvQ29sczsKLSAgICB3aW4tPl9tYXh5ID0gVG9MaW5lczsKKyAgICB3aW4tPl9tYXh4ID0gKE5DVVJTRVNfU0laRV9UKSBUb0NvbHM7CisgICAgd2luLT5fbWF4eSA9IChOQ1VSU0VTX1NJWkVfVCkgVG9MaW5lczsKIAogICAgIGlmICh3aW4tPl9yZWd0b3AgPiB3aW4tPl9tYXh5KQogCXdpbi0+X3JlZ3RvcCA9IHdpbi0+X21heHk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2J1aWxkLnByaXYuaCBiL25jdXJzZXMvYnVpbGQucHJpdi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NmE0NDMKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL2J1aWxkLnByaXYuaApAQCAtMCwwICsxLDEwOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAyMDEwICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqICRJZDogYnVpbGQucHJpdi5oLHYgMS45IDIwMTIvMDIvMjIgMjI6MTc6MDIgdG9tIEV4cCAkCisgKgorICoJYnVpbGQucHJpdi5oCisgKgorICoJVGhpcyBpcyBhIHJlZHVjZWQgdmVyc2lvbiBvZiBjdXJzZXMucHJpdi5oLCBmb3IgYnVpbGQtdGltZSB1dGlsdGllcy4KKyAqCUJlY2F1c2UgaXQgaGFzIGZld2VyIGRlcGVuZGVuY2llcywgdGhpcyBzaW1wbGlmaWVzIGNyb3NzLWNvbXBpbGluZy4KKyAqCisgKi8KKworI2lmbmRlZiBDVVJTRVNfUFJJVl9ICisjZGVmaW5lIENVUlNFU19QUklWX0ggMQorCisjaW5jbHVkZSA8bmN1cnNlc19kbGwuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaW5jbHVkZSA8bmN1cnNlc19jZmcuaD4KKworI2lmIFVTRV9SQ1NfSURTCisjZGVmaW5lIE1PRFVMRV9JRChpZCkgc3RhdGljIGNvbnN0IGNoYXIgSWRlbnRbXSA9IGlkOworI2Vsc2UKKyNkZWZpbmUgTU9EVUxFX0lEKGlkKSAvKm5vdGhpbmcqLworI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CS8qIHdlJ2xsIHVzZSAtSXBhdGggZGlyZWN0aXZlIHRvIGdldCB0aGUgcmlnaHQgb25lISAqLworCisvKiB1c3VhbGx5IGluIDx1bmlzdGQuaD4gKi8KKyNpZm5kZWYgRVhJVF9TVUNDRVNTCisjZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCisjZW5kaWYKKworI2lmbmRlZiBFWElUX0ZBSUxVUkUKKyNkZWZpbmUgRVhJVF9GQUlMVVJFIDEKKyNlbmRpZgorCisjZGVmaW5lIEZyZWVBbmROdWxsKHApICAgZnJlZShwKTsgcCA9IDAKKyNkZWZpbmUgVUNoYXIoYykgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpKGMpKQorI2RlZmluZSBTSVpFT0YodikgICAgICAgIChzaXplb2YodikgLyBzaXplb2YodlswXSkpCisKKyNpbmNsdWRlIDxuY19hbGxvYy5oPgorI2luY2x1ZGUgPG5jX3N0cmluZy5oPgorCisvKiBkZWNsYXJlIHRoZXNlLCB0byBhdm9pZCBuZWVkaW5nIHRlcm0uaCAqLworI2lmIEJST0tFTl9MSU5LRVIgfHwgVVNFX1JFRU5UUkFOVAorI2RlZmluZSBOQ1VSU0VTX0FSUkFZKG5hbWUpIFwKKwlOQ1VSU0VTX1dSQVBQRURfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICosIG5hbWUpCisKK05DVVJTRVNfQVJSQVkoYm9vbG5hbWVzKTsKK05DVVJTRVNfQVJSQVkoYm9vbGZuYW1lcyk7CitOQ1VSU0VTX0FSUkFZKG51bW5hbWVzKTsKK05DVVJTRVNfQVJSQVkobnVtZm5hbWVzKTsKK05DVVJTRVNfQVJSQVkoc3RybmFtZXMpOworTkNVUlNFU19BUlJBWShzdHJmbmFtZXMpOworI2VuZGlmCisKKyNpZiBOT19MRUFLUworTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX25hbWVzX2xlYWtzKHZvaWQpOworI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBDVVJTRVNfUFJJVl9IICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2NvZGVzLmMgYi9uY3Vyc2VzL2NvZGVzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0Yzc4NWEuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9jb2Rlcy5jCisrKyAvZGV2L251bGwKQEAgLTEsNjY2ICswLDAgQEAKLS8qIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IE1LY29kZXMuYXdrICovCi0KLSNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotCi0jZGVmaW5lIElUIE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0Ci0KLQotI2lmIEJST0tFTl9MSU5LRVIgfHwgVVNFX1JFRU5UUkFOVAotCi0jaW5jbHVkZSA8dGVybS5oPgotCi1zdGF0aWMgY29uc3QgY2hhciBfbmNfY29kZV9ibG9iW10gPSAKLSJid1wwIiAiYW1cMCIgInhiXDAiICJ4c1wwIiAieG5cMCIgImVvXDAiICJnblwwIiAiaGNcMCIgImttXDAiICJoc1wwIiAiaW5cMCIgXAotImRhXDAiICJkYlwwIiAibWlcMCIgIm1zXDAiICJvc1wwIiAiZXNcMCIgInh0XDAiICJoelwwIiAidWxcMCIgInhvXDAiICJueFwwIiBcCi0iNWlcMCIgIkhDXDAiICJOUlwwIiAiTlBcMCIgIk5EXDAiICJjY1wwIiAidXRcMCIgImhsXDAiICJZQVwwIiAiWUJcMCIgIllDXDAiIFwKLSJZRFwwIiAiWUVcMCIgIllGXDAiICJZR1wwIiAiY29cMCIgIml0XDAiICJsaVwwIiAibG1cMCIgInNnXDAiICJwYlwwIiAidnRcMCIgXAotIndzXDAiICJObFwwIiAibGhcMCIgImx3XDAiICJtYVwwIiAiTVdcMCIgIkNvXDAiICJwYVwwIiAiTkNcMCIgIllhXDAiICJZYlwwIiBcCi0iWWNcMCIgIllkXDAiICJZZVwwIiAiWWZcMCIgIllnXDAiICJZaFwwIiAiWWlcMCIgIllqXDAiICJZa1wwIiAiWWxcMCIgIlltXDAiIFwKLSJZblwwIiAiQlRcMCIgIllvXDAiICJZcFwwIiAiYnRcMCIgImJsXDAiICJjclwwIiAiY3NcMCIgImN0XDAiICJjbFwwIiAiY2VcMCIgXAotImNkXDAiICJjaFwwIiAiQ0NcMCIgImNtXDAiICJkb1wwIiAiaG9cMCIgInZpXDAiICJsZVwwIiAiQ01cMCIgInZlXDAiICJuZFwwIiBcCi0ibGxcMCIgInVwXDAiICJ2c1wwIiAiZGNcMCIgImRsXDAiICJkc1wwIiAiaGRcMCIgImFzXDAiICJtYlwwIiAibWRcMCIgInRpXDAiIFwKLSJkbVwwIiAibWhcMCIgImltXDAiICJta1wwIiAibXBcMCIgIm1yXDAiICJzb1wwIiAidXNcMCIgImVjXDAiICJhZVwwIiAibWVcMCIgXAotInRlXDAiICJlZFwwIiAiZWlcMCIgInNlXDAiICJ1ZVwwIiAidmJcMCIgImZmXDAiICJmc1wwIiAiaTFcMCIgImlzXDAiICJpM1wwIiBcCi0iaWZcMCIgImljXDAiICJhbFwwIiAiaXBcMCIgImtiXDAiICJrYVwwIiAia0NcMCIgImt0XDAiICJrRFwwIiAia0xcMCIgImtkXDAiIFwKLSJrTVwwIiAia0VcMCIgImtTXDAiICJrMFwwIiAiazFcMCIgIms7XDAiICJrMlwwIiAiazNcMCIgIms0XDAiICJrNVwwIiAiazZcMCIgXAotIms3XDAiICJrOFwwIiAiazlcMCIgImtoXDAiICJrSVwwIiAia0FcMCIgImtsXDAiICJrSFwwIiAia05cMCIgImtQXDAiICJrclwwIiBcCi0ia0ZcMCIgImtSXDAiICJrVFwwIiAia3VcMCIgImtlXDAiICJrc1wwIiAibDBcMCIgImwxXDAiICJsYVwwIiAibDJcMCIgImwzXDAiIFwKLSJsNFwwIiAibDVcMCIgImw2XDAiICJsN1wwIiAibDhcMCIgImw5XDAiICJtb1wwIiAibW1cMCIgIm53XDAiICJwY1wwIiAiRENcMCIgXAotIkRMXDAiICJET1wwIiAiSUNcMCIgIlNGXDAiICJBTFwwIiAiTEVcMCIgIlJJXDAiICJTUlwwIiAiVVBcMCIgInBrXDAiICJwbFwwIiBcCi0icHhcMCIgInBzXDAiICJwZlwwIiAicG9cMCIgInJwXDAiICJyMVwwIiAicjJcMCIgInIzXDAiICJyZlwwIiAicmNcMCIgImN2XDAiIFwKLSJzY1wwIiAic2ZcMCIgInNyXDAiICJzYVwwIiAic3RcMCIgIndpXDAiICJ0YVwwIiAidHNcMCIgInVjXDAiICJodVwwIiAiaVBcMCIgXAotIksxXDAiICJLM1wwIiAiSzJcMCIgIks0XDAiICJLNVwwIiAicE9cMCIgInJQXDAiICJhY1wwIiAicG5cMCIgImtCXDAiICJTWFwwIiBcCi0iUlhcMCIgIlNBXDAiICJSQVwwIiAiWE5cMCIgIlhGXDAiICJlQVwwIiAiTE9cMCIgIkxGXDAiICJAMVwwIiAiQDJcMCIgIkAzXDAiIFwKLSJANFwwIiAiQDVcMCIgIkA2XDAiICJAN1wwIiAiQDhcMCIgIkA5XDAiICJAMFwwIiAiJTFcMCIgIiUyXDAiICIlM1wwIiAiJTRcMCIgXAotIiU1XDAiICIlNlwwIiAiJTdcMCIgIiU4XDAiICIlOVwwIiAiJTBcMCIgIiYxXDAiICImMlwwIiAiJjNcMCIgIiY0XDAiICImNVwwIiBcCi0iJjZcMCIgIiY3XDAiICImOFwwIiAiJjlcMCIgIiYwXDAiICIqMVwwIiAiKjJcMCIgIiozXDAiICIqNFwwIiAiKjVcMCIgIio2XDAiIFwKLSIqN1wwIiAiKjhcMCIgIio5XDAiICIqMFwwIiAiIzFcMCIgIiMyXDAiICIjM1wwIiAiIzRcMCIgIiVhXDAiICIlYlwwIiAiJWNcMCIgXAotIiVkXDAiICIlZVwwIiAiJWZcMCIgIiVnXDAiICIlaFwwIiAiJWlcMCIgIiVqXDAiICIhMVwwIiAiITJcMCIgIiEzXDAiICJSRlwwIiBcCi0iRjFcMCIgIkYyXDAiICJGM1wwIiAiRjRcMCIgIkY1XDAiICJGNlwwIiAiRjdcMCIgIkY4XDAiICJGOVwwIiAiRkFcMCIgIkZCXDAiIFwKLSJGQ1wwIiAiRkRcMCIgIkZFXDAiICJGRlwwIiAiRkdcMCIgIkZIXDAiICJGSVwwIiAiRkpcMCIgIkZLXDAiICJGTFwwIiAiRk1cMCIgXAotIkZOXDAiICJGT1wwIiAiRlBcMCIgIkZRXDAiICJGUlwwIiAiRlNcMCIgIkZUXDAiICJGVVwwIiAiRlZcMCIgIkZXXDAiICJGWFwwIiBcCi0iRllcMCIgIkZaXDAiICJGYVwwIiAiRmJcMCIgIkZjXDAiICJGZFwwIiAiRmVcMCIgIkZmXDAiICJGZ1wwIiAiRmhcMCIgIkZpXDAiIFwKLSJGalwwIiAiRmtcMCIgIkZsXDAiICJGbVwwIiAiRm5cMCIgIkZvXDAiICJGcFwwIiAiRnFcMCIgIkZyXDAiICJjYlwwIiAiTUNcMCIgXAotIk1MXDAiICJNUlwwIiAiTGZcMCIgIlNDXDAiICJES1wwIiAiUkNcMCIgIkNXXDAiICJXR1wwIiAiSFVcMCIgIkRJXDAiICJRRFwwIiBcCi0iVE9cMCIgIlBVXDAiICJmaFwwIiAiUEFcMCIgIldBXDAiICJ1MFwwIiAidTFcMCIgInUyXDAiICJ1M1wwIiAidTRcMCIgInU1XDAiIFwKLSJ1NlwwIiAidTdcMCIgInU4XDAiICJ1OVwwIiAib3BcMCIgIm9jXDAiICJJY1wwIiAiSXBcMCIgInNwXDAiICJTZlwwIiAiU2JcMCIgXAotIlpBXDAiICJaQlwwIiAiWkNcMCIgIlpEXDAiICJaRVwwIiAiWkZcMCIgIlpHXDAiICJaSFwwIiAiWklcMCIgIlpKXDAiICJaS1wwIiBcCi0iWkxcMCIgIlpNXDAiICJaTlwwIiAiWk9cMCIgIlpQXDAiICJaUVwwIiAiWlJcMCIgIlpTXDAiICJaVFwwIiAiWlVcMCIgIlpWXDAiIFwKLSJaV1wwIiAiWlhcMCIgIlpZXDAiICJaWlwwIiAiWmFcMCIgIlpiXDAiICJaY1wwIiAiWmRcMCIgIlplXDAiICJaZlwwIiAiWmdcMCIgXAotIlpoXDAiICJaaVwwIiAiWmpcMCIgIlprXDAiICJabFwwIiAiWm1cMCIgIlpuXDAiICJab1wwIiAiWnBcMCIgIlpxXDAiICJaclwwIiBcCi0iWnNcMCIgIlp0XDAiICJadVwwIiAiWnZcMCIgIlp3XDAiICJaeFwwIiAiWnlcMCIgIkttXDAiICJNaVwwIiAiUlFcMCIgIkdtXDAiIFwKLSJBRlwwIiAiQUJcMCIgInhsXDAiICJkdlwwIiAiY2lcMCIgInMwXDAiICJzMVwwIiAiczJcMCIgInMzXDAiICJNTFwwIiAiTVRcMCIgXAotIlh5XDAiICJaelwwIiAiWXZcMCIgIll3XDAiICJZeFwwIiAiWXlcMCIgIll6XDAiICJZWlwwIiAiUzFcMCIgIlMyXDAiICJTM1wwIiBcCi0iUzRcMCIgIlM1XDAiICJTNlwwIiAiUzdcMCIgIlM4XDAiICJYaFwwIiAiWGxcMCIgIlhvXDAiICJYclwwIiAiWHRcMCIgIlh2XDAiIFwKLSJzQVwwIiAic0xcMCIgImkyXDAiICJyc1wwIiAidWdcMCIgImJzXDAiICJuc1wwIiAibmNcMCIgImRDXDAiICJkTlwwIiAibmxcMCIgXAotImJjXDAiICJNVFwwIiAiTkxcMCIgImRCXDAiICJkVFwwIiAia25cMCIgImtvXDAiICJtYVwwIiAicHRcMCIgInhyXDAiICJHMlwwIiBcCi0iRzNcMCIgIkcxXDAiICJHNFwwIiAiR1JcMCIgIkdMXDAiICJHVVwwIiAiR0RcMCIgIkdIXDAiICJHVlwwIiAiR0NcMCIgIm1sXDAiIFwKLSJtdVwwIiAiYnhcMCIgOwotc3RhdGljIGNvbnN0IHNob3J0IF9uY19vZmZzZXRfYm9vbGNvZGVzW10gPSB7Ci0wLCAzLCA2LCA5LCAxMiwgMTUsIDE4LCAyMSwgMjQsIDI3LCAzMCwgMzMsIDM2LCAzOSwgNDIsCi00NSwgNDgsIDUxLCA1NCwgNTcsIDYwLCA2MywgNjYsIDY5LCA3MiwgNzUsIDc4LCA4MSwgODQsIDg3LAotOTAsIDkzLCA5NiwgOTksIDEwMiwgMTA1LCAxMDgsIDE0MDEsIDE0MDQsIDE0MDcsIDE0MjIsIDE0MjUsIDE0NDMsIDE0NDYsIH07Ci0KLXN0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKiogcHRyX2Jvb2xjb2RlcyA9IDA7Ci0KLXN0YXRpYyBjb25zdCBzaG9ydCBfbmNfb2Zmc2V0X251bWNvZGVzW10gPSB7Ci0xMTEsIDExNCwgMTE3LCAxMjAsIDEyMywgMTI2LAotMTI5LCAxMzIsIDEzNSwgMTM4LCAxNDEsIDE0NCwgMTQ3LCAxNTAsIDE1MywgMTU2LCAxNTksIDE2MiwKLTE2NSwgMTY4LCAxNzEsIDE3NCwgMTc3LCAxODAsIDE4MywgMTg2LCAxODksIDE5MiwgMTk1LCAxOTgsCi0yMDEsIDIwNCwgMjA3LCAxMzk4LCAxNDEwLCAxNDEzLCAxNDI4LCAxNDMxLCAxNDM0LCB9OwotCi1zdGF0aWMgTkNVUlNFU19DT05TVCBjaGFyICoqIHB0cl9udW1jb2RlcyA9IDA7Ci0KLXN0YXRpYyBjb25zdCBzaG9ydCBfbmNfb2Zmc2V0X3N0cmNvZGVzW10gPSB7Ci0yMTAsIDIxMywgMjE2LCAyMTksIDIyMiwgMjI1LCAyMjgsIDIzMSwgMjM0LAotMjM3LCAyNDAsIDI0MywgMjQ2LCAyNDksIDI1MiwgMjU1LCAyNTgsIDI2MSwgMjY0LCAyNjcsIDI3MCwKLTI3MywgMjc2LCAyNzksIDI4MiwgMjg1LCAyODgsIDI5MSwgMjk0LCAyOTcsIDMwMCwgMzAzLCAzMDYsCi0zMDksIDMxMiwgMzE1LCAzMTgsIDMyMSwgMzI0LCAzMjcsIDMzMCwgMzMzLCAzMzYsIDMzOSwgMzQyLAotMzQ1LCAzNDgsIDM1MSwgMzU0LCAzNTcsIDM2MCwgMzYzLCAzNjYsIDM2OSwgMzcyLCAzNzUsIDM3OCwKLTM4MSwgMzg0LCAzODcsIDM5MCwgMzkzLCAzOTYsIDM5OSwgNDAyLCA0MDUsIDQwOCwgNDExLCA0MTQsCi00MTcsIDQyMCwgNDIzLCA0MjYsIDQyOSwgNDMyLCA0MzUsIDQzOCwgNDQxLCA0NDQsIDQ0NywgNDUwLAotNDUzLCA0NTYsIDQ1OSwgNDYyLCA0NjUsIDQ2OCwgNDcxLCA0NzQsIDQ3NywgNDgwLCA0ODMsIDQ4NiwKLTQ4OSwgNDkyLCA0OTUsIDQ5OCwgNTAxLCA1MDQsIDUwNywgNTEwLCA1MTMsIDUxNiwgNTE5LCA1MjIsCi01MjUsIDUyOCwgNTMxLCA1MzQsIDUzNywgNTQwLCA1NDMsIDU0NiwgNTQ5LCA1NTIsIDU1NSwgNTU4LAotNTYxLCA1NjQsIDU2NywgNTcwLCA1NzMsIDU3NiwgNTc5LCA1ODIsIDU4NSwgNTg4LCA1OTEsIDU5NCwKLTU5NywgNjAwLCA2MDMsIDYwNiwgNjA5LCA2MTIsIDYxNSwgNjE4LCA2MjEsIDYyNCwgNjI3LCA2MzAsCi02MzMsIDYzNiwgNjM5LCA2NDIsIDY0NSwgNjQ4LCA2NTEsIDY1NCwgNjU3LCA2NjAsIDY2MywgNjY2LAotNjY5LCA2NzIsIDY3NSwgNjc4LCA2ODEsIDY4NCwgNjg3LCA2OTAsIDY5MywgNjk2LCA2OTksIDcwMiwKLTcwNSwgNzA4LCA3MTEsIDcxNCwgNzE3LCA3MjAsIDcyMywgNzI2LCA3MjksIDczMiwgNzM1LCA3MzgsCi03NDEsIDc0NCwgNzQ3LCA3NTAsIDc1MywgNzU2LCA3NTksIDc2MiwgNzY1LCA3NjgsIDc3MSwgNzc0LAotNzc3LCA3ODAsIDc4MywgNzg2LCA3ODksIDc5MiwgNzk1LCA3OTgsIDgwMSwgODA0LCA4MDcsIDgxMCwKLTgxMywgODE2LCA4MTksIDgyMiwgODI1LCA4MjgsIDgzMSwgODM0LCA4MzcsIDg0MCwgODQzLCA4NDYsCi04NDksIDg1MiwgODU1LCA4NTgsIDg2MSwgODY0LCA4NjcsIDg3MCwgODczLCA4NzYsIDg3OSwgODgyLAotODg1LCA4ODgsIDg5MSwgODk0LCA4OTcsIDkwMCwgOTAzLCA5MDYsIDkwOSwgOTEyLCA5MTUsIDkxOCwKLTkyMSwgOTI0LCA5MjcsIDkzMCwgOTMzLCA5MzYsIDkzOSwgOTQyLCA5NDUsIDk0OCwgOTUxLCA5NTQsCi05NTcsIDk2MCwgOTYzLCA5NjYsIDk2OSwgOTcyLCA5NzUsIDk3OCwgOTgxLCA5ODQsIDk4NywgOTkwLAotOTkzLCA5OTYsIDk5OSwgMTAwMiwgMTAwNSwgMTAwOCwgMTAxMSwgMTAxNCwgMTAxNywgMTAyMCwgMTAyMywKLTEwMjYsIDEwMjksIDEwMzIsIDEwMzUsIDEwMzgsIDEwNDEsIDEwNDQsIDEwNDcsIDEwNTAsIDEwNTMsIDEwNTYsCi0xMDU5LCAxMDYyLCAxMDY1LCAxMDY4LCAxMDcxLCAxMDc0LCAxMDc3LCAxMDgwLCAxMDgzLCAxMDg2LCAxMDg5LAotMTA5MiwgMTA5NSwgMTA5OCwgMTEwMSwgMTEwNCwgMTEwNywgMTExMCwgMTExMywgMTExNiwgMTExOSwgMTEyMiwKLTExMjUsIDExMjgsIDExMzEsIDExMzQsIDExMzcsIDExNDAsIDExNDMsIDExNDYsIDExNDksIDExNTIsIDExNTUsCi0xMTU4LCAxMTYxLCAxMTY0LCAxMTY3LCAxMTcwLCAxMTczLCAxMTc2LCAxMTc5LCAxMTgyLCAxMTg1LCAxMTg4LAotMTE5MSwgMTE5NCwgMTE5NywgMTIwMCwgMTIwMywgMTIwNiwgMTIwOSwgMTIxMiwgMTIxNSwgMTIxOCwgMTIyMSwKLTEyMjQsIDEyMjcsIDEyMzAsIDEyMzMsIDEyMzYsIDEyMzksIDEyNDIsIDEyNDUsIDEyNDgsIDEyNTEsIDEyNTQsCi0xMjU3LCAxMjYwLCAxMjYzLCAxMjY2LCAxMjY5LCAxMjcyLCAxMjc1LCAxMjc4LCAxMjgxLCAxMjg0LCAxMjg3LAotMTI5MCwgMTI5MywgMTI5NiwgMTI5OSwgMTMwMiwgMTMwNSwgMTMwOCwgMTMxMSwgMTMxNCwgMTMxNywgMTMyMCwKLTEzMjMsIDEzMjYsIDEzMjksIDEzMzIsIDEzMzUsIDEzMzgsIDEzNDEsIDEzNDQsIDEzNDcsIDEzNTAsIDEzNTMsCi0xMzU2LCAxMzU5LCAxMzYyLCAxMzY1LCAxMzY4LCAxMzcxLCAxMzc0LCAxMzc3LCAxMzgwLCAxMzgzLCAxMzg2LAotMTM4OSwgMTM5MiwgMTM5NSwgMTQxNiwgMTQxOSwKLTE0MzcsIDE0NDAsIDE0NDksIDE0NTIsCi0xNDU1LCAxNDU4LCAxNDYxLCAxNDY0LCAxNDY3LCAxNDcwLCAxNDczLCAxNDc2LCAxNDc5LCAxNDgyLCAxNDg1LAotMTQ4OCwgfTsKLQotc3RhdGljIE5DVVJTRVNfQ09OU1QgY2hhciAqKiBwdHJfc3RyY29kZXMgPSAwOwotCi0KLXN0YXRpYyBJVCAqCi1hbGxvY19hcnJheShOQ1VSU0VTX0NPTlNUIGNoYXIgKioqdmFsdWUsIGNvbnN0IHNob3J0ICpvZmZzZXRzLCB1bnNpZ25lZCBzaXplKQotewotCWlmICgqdmFsdWUgPT0gMCkgewotCQlpZiAoKCp2YWx1ZSA9IHR5cGVDYWxsb2MoTkNVUlNFU19DT05TVCBjaGFyICosIHNpemUgKyAxKSkgIT0gMCkgewotCQkJdW5zaWduZWQgbjsKLQkJCWZvciAobiA9IDA7IG4gPCBzaXplOyArK24pIHsKLQkJCQkoKnZhbHVlKVtuXSA9IF9uY19jb2RlX2Jsb2IgKyBvZmZzZXRzW25dOwotCQkJfQotCQl9Ci0JfQotCXJldHVybiAqdmFsdWU7Ci19Ci0KLSNkZWZpbmUgRklYKGl0KSBOQ1VSU0VTX0lNUEVYUCBJVCAqIE5DVVJTRVNfQVBJIF9uY18jI2l0KHZvaWQpIHsgcmV0dXJuIGFsbG9jX2FycmF5KCZwdHJfIyNpdCwgX25jX29mZnNldF8jI2l0LCBTSVpFT0YoX25jX29mZnNldF8jI2l0KSk7IH0KLQotRklYKGJvb2xjb2RlcykKLUZJWChudW1jb2RlcykKLUZJWChzdHJjb2RlcykKLQotI2RlZmluZSBGUkVFX0ZJWChpdCkgaWYgKHB0cl8jI2l0KSB7IEZyZWVBbmROdWxsKHB0cl8jI2l0KTsgfQotCi0jaWYgTk9fTEVBS1MKLU5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfY29kZXNfbGVha3Modm9pZCkKLXsKLUZSRUVfRklYKGJvb2xjb2RlcykKLUZSRUVfRklYKG51bWNvZGVzKQotRlJFRV9GSVgoc3RyY29kZXMpCi19Ci0jZW5kaWYKLQotI2Vsc2UKLQotI2RlZmluZSBEQ0woaXQpIE5DVVJTRVNfRVhQT1JUX1ZBUihJVCkgaXRbXQotCi1EQ0woYm9vbGNvZGVzKSA9IHsKLQkJImJ3IiwKLQkJImFtIiwKLQkJInhiIiwKLQkJInhzIiwKLQkJInhuIiwKLQkJImVvIiwKLQkJImduIiwKLQkJImhjIiwKLQkJImttIiwKLQkJImhzIiwKLQkJImluIiwKLQkJImRhIiwKLQkJImRiIiwKLQkJIm1pIiwKLQkJIm1zIiwKLQkJIm9zIiwKLQkJImVzIiwKLQkJInh0IiwKLQkJImh6IiwKLQkJInVsIiwKLQkJInhvIiwKLQkJIm54IiwKLQkJIjVpIiwKLQkJIkhDIiwKLQkJIk5SIiwKLQkJIk5QIiwKLQkJIk5EIiwKLQkJImNjIiwKLQkJInV0IiwKLQkJImhsIiwKLQkJIllBIiwKLQkJIllCIiwKLQkJIllDIiwKLQkJIllEIiwKLQkJIllFIiwKLQkJIllGIiwKLQkJIllHIiwKLQkJImJzIiwKLQkJIm5zIiwKLQkJIm5jIiwKLQkJIk1UIiwKLQkJIk5MIiwKLQkJInB0IiwKLQkJInhyIiwKLQotCQkoTkNVUlNFU19DT05TVCBjaGFyICopMCwKLX07Ci0KLURDTChudW1jb2RlcykgPSB7Ci0JCSJjbyIsCi0JCSJpdCIsCi0JCSJsaSIsCi0JCSJsbSIsCi0JCSJzZyIsCi0JCSJwYiIsCi0JCSJ2dCIsCi0JCSJ3cyIsCi0JCSJObCIsCi0JCSJsaCIsCi0JCSJsdyIsCi0JCSJtYSIsCi0JCSJNVyIsCi0JCSJDbyIsCi0JCSJwYSIsCi0JCSJOQyIsCi0JCSJZYSIsCi0JCSJZYiIsCi0JCSJZYyIsCi0JCSJZZCIsCi0JCSJZZSIsCi0JCSJZZiIsCi0JCSJZZyIsCi0JCSJZaCIsCi0JCSJZaSIsCi0JCSJZaiIsCi0JCSJZayIsCi0JCSJZbCIsCi0JCSJZbSIsCi0JCSJZbiIsCi0JCSJCVCIsCi0JCSJZbyIsCi0JCSJZcCIsCi0JCSJ1ZyIsCi0JCSJkQyIsCi0JCSJkTiIsCi0JCSJkQiIsCi0JCSJkVCIsCi0JCSJrbiIsCi0KLQkJKE5DVVJTRVNfQ09OU1QgY2hhciAqKTAsCi19OwotCi1EQ0woc3RyY29kZXMpID0gewotCQkiYnQiLAotCQkiYmwiLAotCQkiY3IiLAotCQkiY3MiLAotCQkiY3QiLAotCQkiY2wiLAotCQkiY2UiLAotCQkiY2QiLAotCQkiY2giLAotCQkiQ0MiLAotCQkiY20iLAotCQkiZG8iLAotCQkiaG8iLAotCQkidmkiLAotCQkibGUiLAotCQkiQ00iLAotCQkidmUiLAotCQkibmQiLAotCQkibGwiLAotCQkidXAiLAotCQkidnMiLAotCQkiZGMiLAotCQkiZGwiLAotCQkiZHMiLAotCQkiaGQiLAotCQkiYXMiLAotCQkibWIiLAotCQkibWQiLAotCQkidGkiLAotCQkiZG0iLAotCQkibWgiLAotCQkiaW0iLAotCQkibWsiLAotCQkibXAiLAotCQkibXIiLAotCQkic28iLAotCQkidXMiLAotCQkiZWMiLAotCQkiYWUiLAotCQkibWUiLAotCQkidGUiLAotCQkiZWQiLAotCQkiZWkiLAotCQkic2UiLAotCQkidWUiLAotCQkidmIiLAotCQkiZmYiLAotCQkiZnMiLAotCQkiaTEiLAotCQkiaXMiLAotCQkiaTMiLAotCQkiaWYiLAotCQkiaWMiLAotCQkiYWwiLAotCQkiaXAiLAotCQkia2IiLAotCQkia2EiLAotCQkia0MiLAotCQkia3QiLAotCQkia0QiLAotCQkia0wiLAotCQkia2QiLAotCQkia00iLAotCQkia0UiLAotCQkia1MiLAotCQkiazAiLAotCQkiazEiLAotCQkiazsiLAotCQkiazIiLAotCQkiazMiLAotCQkiazQiLAotCQkiazUiLAotCQkiazYiLAotCQkiazciLAotCQkiazgiLAotCQkiazkiLAotCQkia2giLAotCQkia0kiLAotCQkia0EiLAotCQkia2wiLAotCQkia0giLAotCQkia04iLAotCQkia1AiLAotCQkia3IiLAotCQkia0YiLAotCQkia1IiLAotCQkia1QiLAotCQkia3UiLAotCQkia2UiLAotCQkia3MiLAotCQkibDAiLAotCQkibDEiLAotCQkibGEiLAotCQkibDIiLAotCQkibDMiLAotCQkibDQiLAotCQkibDUiLAotCQkibDYiLAotCQkibDciLAotCQkibDgiLAotCQkibDkiLAotCQkibW8iLAotCQkibW0iLAotCQkibnciLAotCQkicGMiLAotCQkiREMiLAotCQkiREwiLAotCQkiRE8iLAotCQkiSUMiLAotCQkiU0YiLAotCQkiQUwiLAotCQkiTEUiLAotCQkiUkkiLAotCQkiU1IiLAotCQkiVVAiLAotCQkicGsiLAotCQkicGwiLAotCQkicHgiLAotCQkicHMiLAotCQkicGYiLAotCQkicG8iLAotCQkicnAiLAotCQkicjEiLAotCQkicjIiLAotCQkicjMiLAotCQkicmYiLAotCQkicmMiLAotCQkiY3YiLAotCQkic2MiLAotCQkic2YiLAotCQkic3IiLAotCQkic2EiLAotCQkic3QiLAotCQkid2kiLAotCQkidGEiLAotCQkidHMiLAotCQkidWMiLAotCQkiaHUiLAotCQkiaVAiLAotCQkiSzEiLAotCQkiSzMiLAotCQkiSzIiLAotCQkiSzQiLAotCQkiSzUiLAotCQkicE8iLAotCQkiclAiLAotCQkiYWMiLAotCQkicG4iLAotCQkia0IiLAotCQkiU1giLAotCQkiUlgiLAotCQkiU0EiLAotCQkiUkEiLAotCQkiWE4iLAotCQkiWEYiLAotCQkiZUEiLAotCQkiTE8iLAotCQkiTEYiLAotCQkiQDEiLAotCQkiQDIiLAotCQkiQDMiLAotCQkiQDQiLAotCQkiQDUiLAotCQkiQDYiLAotCQkiQDciLAotCQkiQDgiLAotCQkiQDkiLAotCQkiQDAiLAotCQkiJTEiLAotCQkiJTIiLAotCQkiJTMiLAotCQkiJTQiLAotCQkiJTUiLAotCQkiJTYiLAotCQkiJTciLAotCQkiJTgiLAotCQkiJTkiLAotCQkiJTAiLAotCQkiJjEiLAotCQkiJjIiLAotCQkiJjMiLAotCQkiJjQiLAotCQkiJjUiLAotCQkiJjYiLAotCQkiJjciLAotCQkiJjgiLAotCQkiJjkiLAotCQkiJjAiLAotCQkiKjEiLAotCQkiKjIiLAotCQkiKjMiLAotCQkiKjQiLAotCQkiKjUiLAotCQkiKjYiLAotCQkiKjciLAotCQkiKjgiLAotCQkiKjkiLAotCQkiKjAiLAotCQkiIzEiLAotCQkiIzIiLAotCQkiIzMiLAotCQkiIzQiLAotCQkiJWEiLAotCQkiJWIiLAotCQkiJWMiLAotCQkiJWQiLAotCQkiJWUiLAotCQkiJWYiLAotCQkiJWciLAotCQkiJWgiLAotCQkiJWkiLAotCQkiJWoiLAotCQkiITEiLAotCQkiITIiLAotCQkiITMiLAotCQkiUkYiLAotCQkiRjEiLAotCQkiRjIiLAotCQkiRjMiLAotCQkiRjQiLAotCQkiRjUiLAotCQkiRjYiLAotCQkiRjciLAotCQkiRjgiLAotCQkiRjkiLAotCQkiRkEiLAotCQkiRkIiLAotCQkiRkMiLAotCQkiRkQiLAotCQkiRkUiLAotCQkiRkYiLAotCQkiRkciLAotCQkiRkgiLAotCQkiRkkiLAotCQkiRkoiLAotCQkiRksiLAotCQkiRkwiLAotCQkiRk0iLAotCQkiRk4iLAotCQkiRk8iLAotCQkiRlAiLAotCQkiRlEiLAotCQkiRlIiLAotCQkiRlMiLAotCQkiRlQiLAotCQkiRlUiLAotCQkiRlYiLAotCQkiRlciLAotCQkiRlgiLAotCQkiRlkiLAotCQkiRloiLAotCQkiRmEiLAotCQkiRmIiLAotCQkiRmMiLAotCQkiRmQiLAotCQkiRmUiLAotCQkiRmYiLAotCQkiRmciLAotCQkiRmgiLAotCQkiRmkiLAotCQkiRmoiLAotCQkiRmsiLAotCQkiRmwiLAotCQkiRm0iLAotCQkiRm4iLAotCQkiRm8iLAotCQkiRnAiLAotCQkiRnEiLAotCQkiRnIiLAotCQkiY2IiLAotCQkiTUMiLAotCQkiTUwiLAotCQkiTVIiLAotCQkiTGYiLAotCQkiU0MiLAotCQkiREsiLAotCQkiUkMiLAotCQkiQ1ciLAotCQkiV0ciLAotCQkiSFUiLAotCQkiREkiLAotCQkiUUQiLAotCQkiVE8iLAotCQkiUFUiLAotCQkiZmgiLAotCQkiUEEiLAotCQkiV0EiLAotCQkidTAiLAotCQkidTEiLAotCQkidTIiLAotCQkidTMiLAotCQkidTQiLAotCQkidTUiLAotCQkidTYiLAotCQkidTciLAotCQkidTgiLAotCQkidTkiLAotCQkib3AiLAotCQkib2MiLAotCQkiSWMiLAotCQkiSXAiLAotCQkic3AiLAotCQkiU2YiLAotCQkiU2IiLAotCQkiWkEiLAotCQkiWkIiLAotCQkiWkMiLAotCQkiWkQiLAotCQkiWkUiLAotCQkiWkYiLAotCQkiWkciLAotCQkiWkgiLAotCQkiWkkiLAotCQkiWkoiLAotCQkiWksiLAotCQkiWkwiLAotCQkiWk0iLAotCQkiWk4iLAotCQkiWk8iLAotCQkiWlAiLAotCQkiWlEiLAotCQkiWlIiLAotCQkiWlMiLAotCQkiWlQiLAotCQkiWlUiLAotCQkiWlYiLAotCQkiWlciLAotCQkiWlgiLAotCQkiWlkiLAotCQkiWloiLAotCQkiWmEiLAotCQkiWmIiLAotCQkiWmMiLAotCQkiWmQiLAotCQkiWmUiLAotCQkiWmYiLAotCQkiWmciLAotCQkiWmgiLAotCQkiWmkiLAotCQkiWmoiLAotCQkiWmsiLAotCQkiWmwiLAotCQkiWm0iLAotCQkiWm4iLAotCQkiWm8iLAotCQkiWnAiLAotCQkiWnEiLAotCQkiWnIiLAotCQkiWnMiLAotCQkiWnQiLAotCQkiWnUiLAotCQkiWnYiLAotCQkiWnciLAotCQkiWngiLAotCQkiWnkiLAotCQkiS20iLAotCQkiTWkiLAotCQkiUlEiLAotCQkiR20iLAotCQkiQUYiLAotCQkiQUIiLAotCQkieGwiLAotCQkiZHYiLAotCQkiY2kiLAotCQkiczAiLAotCQkiczEiLAotCQkiczIiLAotCQkiczMiLAotCQkiTUwiLAotCQkiTVQiLAotCQkiWHkiLAotCQkiWnoiLAotCQkiWXYiLAotCQkiWXciLAotCQkiWXgiLAotCQkiWXkiLAotCQkiWXoiLAotCQkiWVoiLAotCQkiUzEiLAotCQkiUzIiLAotCQkiUzMiLAotCQkiUzQiLAotCQkiUzUiLAotCQkiUzYiLAotCQkiUzciLAotCQkiUzgiLAotCQkiWGgiLAotCQkiWGwiLAotCQkiWG8iLAotCQkiWHIiLAotCQkiWHQiLAotCQkiWHYiLAotCQkic0EiLAotCQkic0wiLAotCQkiaTIiLAotCQkicnMiLAotCQkibmwiLAotCQkiYmMiLAotCQkia28iLAotCQkibWEiLAotCQkiRzIiLAotCQkiRzMiLAotCQkiRzEiLAotCQkiRzQiLAotCQkiR1IiLAotCQkiR0wiLAotCQkiR1UiLAotCQkiR0QiLAotCQkiR0giLAotCQkiR1YiLAotCQkiR0MiLAotCQkibWwiLAotCQkibXUiLAotCQkiYngiLAotCi0JCShOQ1VSU0VTX0NPTlNUIGNoYXIgKikwLAotfTsKLQotCi0jZW5kaWYgLyogQlJPS0VOX0xJTktFUiAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9jb21wX2NhcHRhYi5jIGIvbmN1cnNlcy9jb21wX2NhcHRhYi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjUwYWMzLi4wMDAwMDAwCi0tLSBhL25jdXJzZXMvY29tcF9jYXB0YWIuYworKysgL2Rldi9udWxsCkBAIC0xLDMzNTUgKzAsMCBAQAotLyoKLSAqCWNvbXBfY2FwdGFiLmMgLS0gVGhlIG5hbWVzIG9mIHRoZSBjYXBhYmlsaXRpZXMgaW5kZXhlZCB2aWEgYSBoYXNoCi0gKgkJICAgICAgICAgdGFibGUgZm9yIHRoZSBjb21waWxlci4KLSAqCi0gKi8KLQotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGljLmg+Ci0jaW5jbHVkZSA8aGFzaHNpemUuaD4KLQotc3RhdGljIGNvbnN0IGNoYXIgaW5mb19uYW1lc190ZXh0W10gPSBcCi0iYndcMCIgImFtXDAiICJ4c2JcMCIgInhocFwwIiAieGVubFwwIiAiZW9cMCIgImduXDAiICJoY1wwIiAia21cMCIgXAotImhzXDAiICJpblwwIiAiZGFcMCIgImRiXDAiICJtaXJcMCIgIm1zZ3JcMCIgIm9zXDAiICJlc2xva1wwIiAieHRcMCIgXAotImh6XDAiICJ1bFwwIiAieG9uXDAiICJueG9uXDAiICJtYzVpXDAiICJjaHRzXDAiICJucnJtY1wwIiAibnBjXDAiIFwKLSJuZHNjclwwIiAiY2NjXDAiICJiY2VcMCIgImhsc1wwIiAieGhwYVwwIiAiY3J4bVwwIiAiZGFpc3lcMCIgInh2cGFcMCIgXAotInNhbVwwIiAiY3BpeFwwIiAibHBpeFwwIiAiY29sc1wwIiAiaXRcMCIgImxpbmVzXDAiICJsbVwwIiAieG1jXDAiIFwKLSJwYlwwIiAidnRcMCIgIndzbFwwIiAibmxhYlwwIiAibGhcMCIgImx3XDAiICJtYVwwIiAid251bVwwIiAiY29sb3JzXDAiIFwKLSJwYWlyc1wwIiAibmN2XDAiICJidWZzelwwIiAic3BpbnZcMCIgInNwaW5oXDAiICJtYWRkclwwIiAibWp1bXBcMCIgXAotIm1jc1wwIiAibWxzXDAiICJucGluc1wwIiAib3JjXDAiICJvcmxcMCIgIm9yaGlcMCIgIm9ydmlcMCIgImNwc1wwIiBcCi0id2lkY3NcMCIgImJ0bnNcMCIgImJpdHdpblwwIiAiYml0eXBlXDAiICJjYnRcMCIgImJlbFwwIiAiY3JcMCIgImNzclwwIiBcCi0idGJjXDAiICJjbGVhclwwIiAiZWxcMCIgImVkXDAiICJocGFcMCIgImNtZGNoXDAiICJjdXBcMCIgImN1ZDFcMCIgXAotImhvbWVcMCIgImNpdmlzXDAiICJjdWIxXDAiICJtcmN1cFwwIiAiY25vcm1cMCIgImN1ZjFcMCIgImxsXDAiIFwKLSJjdXUxXDAiICJjdnZpc1wwIiAiZGNoMVwwIiAiZGwxXDAiICJkc2xcMCIgImhkXDAiICJzbWFjc1wwIiAiYmxpbmtcMCIgXAotImJvbGRcMCIgInNtY3VwXDAiICJzbWRjXDAiICJkaW1cMCIgInNtaXJcMCIgImludmlzXDAiICJwcm90XDAiICJyZXZcMCIgXAotInNtc29cMCIgInNtdWxcMCIgImVjaFwwIiAicm1hY3NcMCIgInNncjBcMCIgInJtY3VwXDAiICJybWRjXDAiIFwKLSJybWlyXDAiICJybXNvXDAiICJybXVsXDAiICJmbGFzaFwwIiAiZmZcMCIgImZzbFwwIiAiaXMxXDAiICJpczJcMCIgXAotImlzM1wwIiAiaWZcMCIgImljaDFcMCIgImlsMVwwIiAiaXBcMCIgImtic1wwIiAia3RiY1wwIiAia2NsclwwIiBcCi0ia2N0YWJcMCIgImtkY2gxXDAiICJrZGwxXDAiICJrY3VkMVwwIiAia3JtaXJcMCIgImtlbFwwIiAia2VkXDAiIFwKLSJrZjBcMCIgImtmMVwwIiAia2YxMFwwIiAia2YyXDAiICJrZjNcMCIgImtmNFwwIiAia2Y1XDAiICJrZjZcMCIgXAotImtmN1wwIiAia2Y4XDAiICJrZjlcMCIgImtob21lXDAiICJraWNoMVwwIiAia2lsMVwwIiAia2N1YjFcMCIgImtsbFwwIiBcCi0ia25wXDAiICJrcHBcMCIgImtjdWYxXDAiICJraW5kXDAiICJrcmlcMCIgImtodHNcMCIgImtjdXUxXDAiICJybWt4XDAiIFwKLSJzbWt4XDAiICJsZjBcMCIgImxmMVwwIiAibGYxMFwwIiAibGYyXDAiICJsZjNcMCIgImxmNFwwIiAibGY1XDAiIFwKLSJsZjZcMCIgImxmN1wwIiAibGY4XDAiICJsZjlcMCIgInJtbVwwIiAic21tXDAiICJuZWxcMCIgInBhZFwwIiAiZGNoXDAiIFwKLSJkbFwwIiAiY3VkXDAiICJpY2hcMCIgImluZG5cMCIgImlsXDAiICJjdWJcMCIgImN1ZlwwIiAicmluXDAiICJjdXVcMCIgXAotInBma2V5XDAiICJwZmxvY1wwIiAicGZ4XDAiICJtYzBcMCIgIm1jNFwwIiAibWM1XDAiICJyZXBcMCIgInJzMVwwIiBcCi0icnMyXDAiICJyczNcMCIgInJmXDAiICJyY1wwIiAidnBhXDAiICJzY1wwIiAiaW5kXDAiICJyaVwwIiAic2dyXDAiIFwKLSJodHNcMCIgIndpbmRcMCIgImh0XDAiICJ0c2xcMCIgInVjXDAiICJodVwwIiAiaXByb2dcMCIgImthMVwwIiAia2EzXDAiIFwKLSJrYjJcMCIgImtjMVwwIiAia2MzXDAiICJtYzVwXDAiICJybXBcMCIgImFjc2NcMCIgInBsblwwIiAia2NidFwwIiBcCi0ic214b25cMCIgInJteG9uXDAiICJzbWFtXDAiICJybWFtXDAiICJ4b25jXDAiICJ4b2ZmY1wwIiAiZW5hY3NcMCIgXAotInNtbG5cMCIgInJtbG5cMCIgImtiZWdcMCIgImtjYW5cMCIgImtjbG9cMCIgImtjbWRcMCIgImtjcHlcMCIgImtjcnRcMCIgXAotImtlbmRcMCIgImtlbnRcMCIgImtleHRcMCIgImtmbmRcMCIgImtobHBcMCIgImttcmtcMCIgImttc2dcMCIgImttb3ZcMCIgXAotImtueHRcMCIgImtvcG5cMCIgImtvcHRcMCIgImtwcnZcMCIgImtwcnRcMCIgImtyZG9cMCIgImtyZWZcMCIgImtyZnJcMCIgXAotImtycGxcMCIgImtyc3RcMCIgImtyZXNcMCIgImtzYXZcMCIgImtzcGRcMCIgImt1bmRcMCIgImtCRUdcMCIgImtDQU5cMCIgXAotImtDTURcMCIgImtDUFlcMCIgImtDUlRcMCIgImtEQ1wwIiAia0RMXDAiICJrc2x0XDAiICJrRU5EXDAiICJrRU9MXDAiIFwKLSJrRVhUXDAiICJrRk5EXDAiICJrSExQXDAiICJrSE9NXDAiICJrSUNcMCIgImtMRlRcMCIgImtNU0dcMCIgImtNT1ZcMCIgXAotImtOWFRcMCIgImtPUFRcMCIgImtQUlZcMCIgImtQUlRcMCIgImtSRE9cMCIgImtSUExcMCIgImtSSVRcMCIgImtSRVNcMCIgXAotImtTQVZcMCIgImtTUERcMCIgImtVTkRcMCIgInJmaVwwIiAia2YxMVwwIiAia2YxMlwwIiAia2YxM1wwIiAia2YxNFwwIiBcCi0ia2YxNVwwIiAia2YxNlwwIiAia2YxN1wwIiAia2YxOFwwIiAia2YxOVwwIiAia2YyMFwwIiAia2YyMVwwIiAia2YyMlwwIiBcCi0ia2YyM1wwIiAia2YyNFwwIiAia2YyNVwwIiAia2YyNlwwIiAia2YyN1wwIiAia2YyOFwwIiAia2YyOVwwIiAia2YzMFwwIiBcCi0ia2YzMVwwIiAia2YzMlwwIiAia2YzM1wwIiAia2YzNFwwIiAia2YzNVwwIiAia2YzNlwwIiAia2YzN1wwIiAia2YzOFwwIiBcCi0ia2YzOVwwIiAia2Y0MFwwIiAia2Y0MVwwIiAia2Y0MlwwIiAia2Y0M1wwIiAia2Y0NFwwIiAia2Y0NVwwIiAia2Y0NlwwIiBcCi0ia2Y0N1wwIiAia2Y0OFwwIiAia2Y0OVwwIiAia2Y1MFwwIiAia2Y1MVwwIiAia2Y1MlwwIiAia2Y1M1wwIiAia2Y1NFwwIiBcCi0ia2Y1NVwwIiAia2Y1NlwwIiAia2Y1N1wwIiAia2Y1OFwwIiAia2Y1OVwwIiAia2Y2MFwwIiAia2Y2MVwwIiAia2Y2MlwwIiBcCi0ia2Y2M1wwIiAiZWwxXDAiICJtZ2NcMCIgInNtZ2xcMCIgInNtZ3JcMCIgImZsblwwIiAic2Nsa1wwIiAiZGNsa1wwIiBcCi0icm1jbGtcMCIgImN3aW5cMCIgIndpbmdvXDAiICJodXBcMCIgImRpYWxcMCIgInFkaWFsXDAiICJ0b25lXDAiIFwKLSJwdWxzZVwwIiAiaG9va1wwIiAicGF1c2VcMCIgIndhaXRcMCIgInUwXDAiICJ1MVwwIiAidTJcMCIgInUzXDAiIFwKLSJ1NFwwIiAidTVcMCIgInU2XDAiICJ1N1wwIiAidThcMCIgInU5XDAiICJvcFwwIiAib2NcMCIgImluaXRjXDAiIFwKLSJpbml0cFwwIiAic2NwXDAiICJzZXRmXDAiICJzZXRiXDAiICJjcGlcMCIgImxwaVwwIiAiY2hyXDAiICJjdnJcMCIgXAotImRlZmNcMCIgInN3aWRtXDAiICJzZHJmcVwwIiAic2l0bVwwIiAic2xtXDAiICJzbWljbVwwIiAic25scVwwIiBcCi0ic25ybXFcMCIgInNzaG1cMCIgInNzdWJtXDAiICJzc3VwbVwwIiAic3VtXDAiICJyd2lkbVwwIiAicml0bVwwIiBcCi0icmxtXDAiICJybWljbVwwIiAicnNobVwwIiAicnN1Ym1cMCIgInJzdXBtXDAiICJydW1cMCIgIm1ocGFcMCIgXAotIm1jdWQxXDAiICJtY3ViMVwwIiAibWN1ZjFcMCIgIm12cGFcMCIgIm1jdXUxXDAiICJwb3JkZXJcMCIgIm1jdWRcMCIgXAotIm1jdWJcMCIgIm1jdWZcMCIgIm1jdXVcMCIgInNjc1wwIiAic21nYlwwIiAic21nYnBcMCIgInNtZ2xwXDAiIFwKLSJzbWdycFwwIiAic21ndFwwIiAic21ndHBcMCIgInNiaW1cMCIgInNjc2RcMCIgInJiaW1cMCIgInJjc2RcMCIgXAotInN1YmNzXDAiICJzdXBjc1wwIiAiZG9jclwwIiAiemVyb21cMCIgImNzbm1cMCIgImttb3VzXDAiICJtaW5mb1wwIiBcCi0icmVxbXBcMCIgImdldG1cMCIgInNldGFmXDAiICJzZXRhYlwwIiAicGZ4bFwwIiAiZGV2dFwwIiAiY3NpblwwIiBcCi0iczBkc1wwIiAiczFkc1wwIiAiczJkc1wwIiAiczNkc1wwIiAic21nbHJcMCIgInNtZ3RiXDAiICJiaXJlcFwwIiBcCi0iYmluZWxcMCIgImJpY3JcMCIgImNvbG9ybm1cMCIgImRlZmJpXDAiICJlbmRiaVwwIiAic2V0Y29sb3JcMCIgXAotInNsaW5lc1wwIiAiZGlzcGNcMCIgInNtcGNoXDAiICJybXBjaFwwIiAic21zY1wwIiAicm1zY1wwIiAicGN0cm1cMCIgXAotInNjZXNjXDAiICJzY2VzYVwwIiAiZWhobG1cMCIgImVsaGxtXDAiICJlbG9obG1cMCIgImVyaGxtXDAiICJldGhsbVwwIiBcCi0iZXZobG1cMCIgInNncjFcMCIgInNsZW5ndGhcMCIgIk9UaTJcMCIgIk9UcnNcMCIgIk9UdWdcMCIgIk9UYnNcMCIgXAotIk9UbnNcMCIgIk9UbmNcMCIgIk9UZENcMCIgIk9UZE5cMCIgIk9UbmxcMCIgIk9UYmNcMCIgIk9UTVRcMCIgIk9UTkxcMCIgXAotIk9UZEJcMCIgIk9UZFRcMCIgIk9Ua25cMCIgIk9Ua29cMCIgIk9UbWFcMCIgIk9UcHRcMCIgIk9UeHJcMCIgIk9URzJcMCIgXAotIk9URzNcMCIgIk9URzFcMCIgIk9URzRcMCIgIk9UR1JcMCIgIk9UR0xcMCIgIk9UR1VcMCIgIk9UR0RcMCIgIk9UR0hcMCIgXAotIk9UR1ZcMCIgIk9UR0NcMCIgIm1lbWxcMCIgIm1lbXVcMCIgImJveDFcMCIgOwotCi1zdGF0aWMgbmFtZV90YWJsZV9kYXRhIGNvbnN0IGluZm9fbmFtZXNfZGF0YVtdID0KLXsKLQl7ICAgICAgICAgICAgICAgMCwJICAgQk9PTEVBTiwJICAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAgMywJICAgQk9PTEVBTiwJICAxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAgNiwJICAgQk9PTEVBTiwJICAyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAxMCwJICAgQk9PTEVBTiwJICAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAxNCwJICAgQk9PTEVBTiwJICA0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAxOSwJICAgQk9PTEVBTiwJICA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAyMiwJICAgQk9PTEVBTiwJICA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAyNSwJICAgQk9PTEVBTiwJICA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAyOCwJICAgQk9PTEVBTiwJICA4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAzMSwJICAgQk9PTEVBTiwJICA5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAzNCwJICAgQk9PTEVBTiwJIDEwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICAzNywJICAgQk9PTEVBTiwJIDExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA0MCwJICAgQk9PTEVBTiwJIDEyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA0MywJICAgQk9PTEVBTiwJIDEzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA0NywJICAgQk9PTEVBTiwJIDE0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA1MiwJICAgQk9PTEVBTiwJIDE1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA1NSwJICAgQk9PTEVBTiwJIDE2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA2MSwJICAgQk9PTEVBTiwJIDE3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA2NCwJICAgQk9PTEVBTiwJIDE4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA2NywJICAgQk9PTEVBTiwJIDE5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA3MCwJICAgQk9PTEVBTiwJIDIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA3NCwJICAgQk9PTEVBTiwJIDIxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA3OSwJICAgQk9PTEVBTiwJIDIyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA4NCwJICAgQk9PTEVBTiwJIDIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA4OSwJICAgQk9PTEVBTiwJIDI0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA5NSwJICAgQk9PTEVBTiwJIDI1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgICA5OSwJICAgQk9PTEVBTiwJIDI2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEwNSwJICAgQk9PTEVBTiwJIDI3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEwOSwJICAgQk9PTEVBTiwJIDI4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDExMywJICAgQk9PTEVBTiwJIDI5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDExNywJICAgQk9PTEVBTiwJIDMwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEyMiwJICAgQk9PTEVBTiwJIDMxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEyNywJICAgQk9PTEVBTiwJIDMyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEzMywJICAgQk9PTEVBTiwJIDMzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDEzOCwJICAgQk9PTEVBTiwJIDM0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE0MiwJICAgQk9PTEVBTiwJIDM1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE0NywJICAgQk9PTEVBTiwJIDM2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE1MiwJICAgIE5VTUJFUiwJICAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE1NywJICAgIE5VTUJFUiwJICAxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE2MCwJICAgIE5VTUJFUiwJICAyLCAgIDYgfSwKLQl7ICAgICAgICAgICAgIDE2NiwJICAgIE5VTUJFUiwJICAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE2OSwJICAgIE5VTUJFUiwJICA0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE3MywJICAgIE5VTUJFUiwJICA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE3NiwJICAgIE5VTUJFUiwJICA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE3OSwJICAgIE5VTUJFUiwJICA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE4MywJICAgIE5VTUJFUiwJICA4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE4OCwJICAgIE5VTUJFUiwJICA5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE5MSwJICAgIE5VTUJFUiwJIDEwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE5NCwJICAgIE5VTUJFUiwJIDExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDE5NywJICAgIE5VTUJFUiwJIDEyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIwMiwJICAgIE5VTUJFUiwJIDEzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIwOSwJICAgIE5VTUJFUiwJIDE0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIxNSwJICAgIE5VTUJFUiwJIDE1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIxOSwJICAgIE5VTUJFUiwJIDE2LCAgNDYgfSwKLQl7ICAgICAgICAgICAgIDIyNSwJICAgIE5VTUJFUiwJIDE3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIzMSwJICAgIE5VTUJFUiwJIDE4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDIzNywJICAgIE5VTUJFUiwJIDE5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI0MywJICAgIE5VTUJFUiwJIDIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI0OSwJICAgIE5VTUJFUiwJIDIxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI1MywJICAgIE5VTUJFUiwJIDIyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI1NywJICAgIE5VTUJFUiwJIDIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI2MywJICAgIE5VTUJFUiwJIDI0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI2NywJICAgIE5VTUJFUiwJIDI1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI3MSwJICAgIE5VTUJFUiwJIDI2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI3NiwJICAgIE5VTUJFUiwJIDI3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI4MSwJICAgIE5VTUJFUiwJIDI4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI4NSwJICAgIE5VTUJFUiwJIDI5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI5MSwJICAgIE5VTUJFUiwJIDMwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDI5NiwJICAgIE5VTUJFUiwJIDMxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMwMywJICAgIE5VTUJFUiwJIDMyLCAgNjggfSwKLQl7ICAgICAgICAgICAgIDMxMCwJICAgIFNUUklORywJICAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMxNCwJICAgIFNUUklORywJICAxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMxOCwJICAgIFNUUklORywJICAyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMyMSwJICAgIFNUUklORywJICAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMyNSwJICAgIFNUUklORywJICA0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMyOSwJICAgIFNUUklORywJICA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMzNSwJICAgIFNUUklORywJICA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDMzOCwJICAgIFNUUklORywJICA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM0MSwJICAgIFNUUklORywJICA4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM0NSwJICAgIFNUUklORywJICA5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM1MSwJICAgIFNUUklORywJIDEwLCAgNzMgfSwKLQl7ICAgICAgICAgICAgIDM1NSwJICAgIFNUUklORywJIDExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM2MCwJICAgIFNUUklORywJIDEyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM2NSwJICAgIFNUUklORywJIDEzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM3MSwJICAgIFNUUklORywJIDE0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM3NiwJICAgIFNUUklORywJIDE1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM4MiwJICAgIFNUUklORywJIDE2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM4OCwJICAgIFNUUklORywJIDE3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM5MywJICAgIFNUUklORywJIDE4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDM5NiwJICAgIFNUUklORywJIDE5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQwMSwJICAgIFNUUklORywJIDIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQwNywJICAgIFNUUklORywJIDIxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQxMiwJICAgIFNUUklORywJIDIyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQxNiwJICAgIFNUUklORywJIDIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQyMCwJICAgIFNUUklORywJIDI0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQyMywJICAgIFNUUklORywJIDI1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQyOSwJICAgIFNUUklORywJIDI2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQzNSwJICAgIFNUUklORywJIDI3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ0MCwJICAgIFNUUklORywJIDI4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ0NiwJICAgIFNUUklORywJIDI5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ1MSwJICAgIFNUUklORywJIDMwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ1NSwJICAgIFNUUklORywJIDMxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ2MCwJICAgIFNUUklORywJIDMyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ2NiwJICAgIFNUUklORywJIDMzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ3MSwJICAgIFNUUklORywJIDM0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ3NSwJICAgIFNUUklORywJIDM1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ4MCwJICAgIFNUUklORywJIDM2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ4NSwJICAgIFNUUklORywJIDM3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ4OSwJICAgIFNUUklORywJIDM4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDQ5NSwJICAgIFNUUklORywJIDM5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUwMCwJICAgIFNUUklORywJIDQwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUwNiwJICAgIFNUUklORywJIDQxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUxMSwJICAgIFNUUklORywJIDQyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUxNiwJICAgIFNUUklORywJIDQzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUyMSwJICAgIFNUUklORywJIDQ0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUyNiwJICAgIFNUUklORywJIDQ1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUzMiwJICAgIFNUUklORywJIDQ2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUzNSwJICAgIFNUUklORywJIDQ3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDUzOSwJICAgIFNUUklORywJIDQ4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU0MywJICAgIFNUUklORywJIDQ5LCAgNTkgfSwKLQl7ICAgICAgICAgICAgIDU0NywJICAgIFNUUklORywJIDUwLCAgNzYgfSwKLQl7ICAgICAgICAgICAgIDU1MSwJICAgIFNUUklORywJIDUxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU1NCwJICAgIFNUUklORywJIDUyLCAgMjAgfSwKLQl7ICAgICAgICAgICAgIDU1OSwJICAgIFNUUklORywJIDUzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU2MywJICAgIFNUUklORywJIDU0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU2NiwJICAgIFNUUklORywJIDU1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU3MCwJICAgIFNUUklORywJIDU2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU3NSwJICAgIFNUUklORywJIDU3LCAgOTggfSwKLQl7ICAgICAgICAgICAgIDU4MCwJICAgIFNUUklORywJIDU4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU4NiwJICAgIFNUUklORywJIDU5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU5MiwJICAgIFNUUklORywJIDYwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDU5NywJICAgIFNUUklORywJIDYxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYwMywJICAgIFNUUklORywJIDYyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYwOSwJICAgIFNUUklORywJIDYzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYxMywJICAgIFNUUklORywJIDY0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYxNywJICAgIFNUUklORywJIDY1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYyMSwJICAgIFNUUklORywJIDY2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYyNSwJICAgIFNUUklORywJIDY3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYzMCwJICAgIFNUUklORywJIDY4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYzNCwJICAgIFNUUklORywJIDY5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDYzOCwJICAgIFNUUklORywJIDcwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY0MiwJICAgIFNUUklORywJIDcxLCAgNjEgfSwKLQl7ICAgICAgICAgICAgIDY0NiwJICAgIFNUUklORywJIDcyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY1MCwJICAgIFNUUklORywJIDczLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY1NCwJICAgIFNUUklORywJIDc0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY1OCwJICAgIFNUUklORywJIDc1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY2MiwJICAgIFNUUklORywJIDc2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY2OCwJICAgIFNUUklORywJIDc3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY3NCwJICAgIFNUUklORywJIDc4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY3OSwJICAgIFNUUklORywJIDc5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY4NSwJICAgIFNUUklORywJIDgwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY4OSwJICAgIFNUUklORywJIDgxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY5MywJICAgIFNUUklORywJIDgyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDY5NywJICAgIFNUUklORywJIDgzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDcwMywJICAgIFNUUklORywJIDg0LCAgNTUgfSwKLQl7ICAgICAgICAgICAgIDcwOCwJICAgIFNUUklORywJIDg1LCAxMDUgfSwKLQl7ICAgICAgICAgICAgIDcxMiwJICAgIFNUUklORywJIDg2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDcxNywJICAgIFNUUklORywJIDg3LCAgODEgfSwKLQl7ICAgICAgICAgICAgIDcyMywJICAgIFNUUklORywJIDg4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDcyOCwJICAgIFNUUklORywJIDg5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDczMywJICAgIFNUUklORywJIDkwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDczNywJICAgIFNUUklORywJIDkxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc0MSwJICAgIFNUUklORywJIDkyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc0NiwJICAgIFNUUklORywJIDkzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc1MCwJICAgIFNUUklORywJIDk0LCAgMzMgfSwKLQl7ICAgICAgICAgICAgIDc1NCwJICAgIFNUUklORywJIDk1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc1OCwJICAgIFNUUklORywJIDk2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc2MiwJICAgIFNUUklORywJIDk3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc2NiwJICAgIFNUUklORywJIDk4LCAgIDcgfSwKLQl7ICAgICAgICAgICAgIDc3MCwJICAgIFNUUklORywJIDk5LCAgOTQgfSwKLQl7ICAgICAgICAgICAgIDc3NCwJICAgIFNUUklORywJMTAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc3OCwJICAgIFNUUklORywJMTAxLCAxMzEgfSwKLQl7ICAgICAgICAgICAgIDc4MiwJICAgIFNUUklORywJMTAyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc4NiwJICAgIFNUUklORywJMTAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc5MCwJICAgIFNUUklORywJMTA0LCAgMzAgfSwKLQl7ICAgICAgICAgICAgIDc5NCwJICAgIFNUUklORywJMTA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDc5OCwJICAgIFNUUklORywJMTA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgwMSwJICAgIFNUUklORywJMTA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgwNSwJICAgIFNUUklORywJMTA4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgwOSwJICAgIFNUUklORywJMTA5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgxNCwJICAgIFNUUklORywJMTEwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgxNywJICAgIFNUUklORywJMTExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgyMSwJICAgIFNUUklORywJMTEyLCAxNTYgfSwKLQl7ICAgICAgICAgICAgIDgyNSwJICAgIFNUUklORywJMTEzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgyOSwJICAgIFNUUklORywJMTE0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDgzMywJICAgIFNUUklORywJMTE1LCAgNTEgfSwKLQl7ICAgICAgICAgICAgIDgzOSwJICAgIFNUUklORywJMTE2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg0NSwJICAgIFNUUklORywJMTE3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg0OSwJICAgIFNUUklORywJMTE4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg1MywJICAgIFNUUklORywJMTE5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg1NywJICAgIFNUUklORywJMTIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg2MSwJICAgIFNUUklORywJMTIxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg2NSwJICAgIFNUUklORywJMTIyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg2OSwJICAgIFNUUklORywJMTIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg3MywJICAgIFNUUklORywJMTI0LCAxMjYgfSwKLQl7ICAgICAgICAgICAgIDg3NywJICAgIFNUUklORywJMTI1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg4MCwJICAgIFNUUklORywJMTI2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg4MywJICAgIFNUUklORywJMTI3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg4NywJICAgIFNUUklORywJMTI4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg5MCwJICAgIFNUUklORywJMTI5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg5NCwJICAgIFNUUklORywJMTMwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDg5NywJICAgIFNUUklORywJMTMxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkwMSwJICAgIFNUUklORywJMTMyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkwNSwJICAgIFNUUklORywJMTMzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkxMCwJICAgIFNUUklORywJMTM0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkxMywJICAgIFNUUklORywJMTM1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkxNywJICAgIFNUUklORywJMTM2LCAgMjMgfSwKLQl7ICAgICAgICAgICAgIDkyMCwJICAgIFNUUklORywJMTM3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkyMywJICAgIFNUUklORywJMTM4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkyOSwJICAgIFNUUklORywJMTM5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkzMywJICAgIFNUUklORywJMTQwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDkzNywJICAgIFNUUklORywJMTQxLCAyMTAgfSwKLQl7ICAgICAgICAgICAgIDk0MSwJICAgIFNUUklORywJMTQyLCAyMTEgfSwKLQl7ICAgICAgICAgICAgIDk0NSwJICAgIFNUUklORywJMTQzLCAxMzUgfSwKLQl7ICAgICAgICAgICAgIDk0OSwJICAgIFNUUklORywJMTQ0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk1NCwJICAgIFNUUklORywJMTQ1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk1OCwJICAgIFNUUklORywJMTQ2LCAxNzYgfSwKLQl7ICAgICAgICAgICAgIDk2MywJICAgIFNUUklORywJMTQ3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk2NywJICAgIFNUUklORywJMTQ4LCAxOTQgfSwKLQl7ICAgICAgICAgICAgIDk3MiwJICAgIFNUUklORywJMTQ5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk3OCwJICAgIFNUUklORywJMTUwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk4NCwJICAgIFNUUklORywJMTUxLCAxMzcgfSwKLQl7ICAgICAgICAgICAgIDk4OSwJICAgIFNUUklORywJMTUyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk5NCwJICAgIFNUUklORywJMTUzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgIDk5OSwJICAgIFNUUklORywJMTU0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAwNSwJICAgIFNUUklORywJMTU1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAxMSwJICAgIFNUUklORywJMTU2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAxNiwJICAgIFNUUklORywJMTU3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAyMSwJICAgIFNUUklORywJMTU4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAyNiwJICAgIFNUUklORywJMTU5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAzMSwJICAgIFNUUklORywJMTYwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTAzNiwJICAgIFNUUklORywJMTYxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA0MSwJICAgIFNUUklORywJMTYyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA0NiwJICAgIFNUUklORywJMTYzLCAgNTQgfSwKLQl7ICAgICAgICAgICAgMTA1MSwJICAgIFNUUklORywJMTY0LCAxOTIgfSwKLQl7ICAgICAgICAgICAgMTA1NiwJICAgIFNUUklORywJMTY1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA2MSwJICAgIFNUUklORywJMTY2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA2NiwJICAgIFNUUklORywJMTY3LCAxOTMgfSwKLQl7ICAgICAgICAgICAgMTA3MSwJICAgIFNUUklORywJMTY4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA3NiwJICAgIFNUUklORywJMTY5LCAgNzAgfSwKLQl7ICAgICAgICAgICAgMTA4MSwJICAgIFNUUklORywJMTcwLCAyMzUgfSwKLQl7ICAgICAgICAgICAgMTA4NiwJICAgIFNUUklORywJMTcxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA5MSwJICAgIFNUUklORywJMTcyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTA5NiwJICAgIFNUUklORywJMTczLCAxNzcgfSwKLQl7ICAgICAgICAgICAgMTEwMSwJICAgIFNUUklORywJMTc0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTEwNiwJICAgIFNUUklORywJMTc1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTExMSwJICAgIFNUUklORywJMTc2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTExNiwJICAgIFNUUklORywJMTc3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTEyMSwJICAgIFNUUklORywJMTc4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTEyNiwJICAgIFNUUklORywJMTc5LCAyMzkgfSwKLQl7ICAgICAgICAgICAgMTEzMSwJICAgIFNUUklORywJMTgwLCAyMTkgfSwKLQl7ICAgICAgICAgICAgMTEzNiwJICAgIFNUUklORywJMTgxLCAgODAgfSwKLQl7ICAgICAgICAgICAgMTE0MSwJICAgIFNUUklORywJMTgyLCAyNDkgfSwKLQl7ICAgICAgICAgICAgMTE0NiwJICAgIFNUUklORywJMTgzLCAyNTIgfSwKLQl7ICAgICAgICAgICAgMTE1MSwJICAgIFNUUklORywJMTg0LCAyNDAgfSwKLQl7ICAgICAgICAgICAgMTE1NiwJICAgIFNUUklORywJMTg1LCAyNTQgfSwKLQl7ICAgICAgICAgICAgMTE2MSwJICAgIFNUUklORywJMTg2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE2NiwJICAgIFNUUklORywJMTg3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE3MSwJICAgIFNUUklORywJMTg4LCAxMDEgfSwKLQl7ICAgICAgICAgICAgMTE3NiwJICAgIFNUUklORywJMTg5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE4MSwJICAgIFNUUklORywJMTkwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE4NiwJICAgIFNUUklORywJMTkxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE5MCwJICAgIFNUUklORywJMTkyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTE5NCwJICAgIFNUUklORywJMTkzLCAyNDQgfSwKLQl7ICAgICAgICAgICAgMTE5OSwJICAgIFNUUklORywJMTk0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTIwNCwJICAgIFNUUklORywJMTk1LCAxNTIgfSwKLQl7ICAgICAgICAgICAgMTIwOSwJICAgIFNUUklORywJMTk2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTIxNCwJICAgIFNUUklORywJMTk3LCAxNTAgfSwKLQl7ICAgICAgICAgICAgMTIxOSwJICAgIFNUUklORywJMTk4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTIyNCwJICAgIFNUUklORywJMTk5LCAyNjggfSwKLQl7ICAgICAgICAgICAgMTIyOSwJICAgIFNUUklORywJMjAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTIzMywJICAgIFNUUklORywJMjAxLCAgNzIgfSwKLQl7ICAgICAgICAgICAgMTIzOCwJICAgIFNUUklORywJMjAyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI0MywJICAgIFNUUklORywJMjAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI0OCwJICAgIFNUUklORywJMjA0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI1MywJICAgIFNUUklORywJMjA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI1OCwJICAgIFNUUklORywJMjA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI2MywJICAgIFNUUklORywJMjA3LCAxOTYgfSwKLQl7ICAgICAgICAgICAgMTI2OCwJICAgIFNUUklORywJMjA4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI3MywJICAgIFNUUklORywJMjA5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI3OCwJICAgIFNUUklORywJMjEwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI4MywJICAgIFNUUklORywJMjExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTI4OCwJICAgIFNUUklORywJMjEyLCAyODEgfSwKLQl7ICAgICAgICAgICAgMTI5MywJICAgIFNUUklORywJMjEzLCAyNzIgfSwKLQl7ICAgICAgICAgICAgMTI5OCwJICAgIFNUUklORywJMjE0LCAyODMgfSwKLQl7ICAgICAgICAgICAgMTMwMywJICAgIFNUUklORywJMjE1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTMwNywJICAgIFNUUklORywJMjE2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTMxMiwJICAgIFNUUklORywJMjE3LCAxMzQgfSwKLQl7ICAgICAgICAgICAgMTMxNywJICAgIFNUUklORywJMjE4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTMyMiwJICAgIFNUUklORywJMjE5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTMyNywJICAgIFNUUklORywJMjIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTMzMiwJICAgIFNUUklORywJMjIxLCAgNDMgfSwKLQl7ICAgICAgICAgICAgMTMzNywJICAgIFNUUklORywJMjIyLCAyNTYgfSwKLQl7ICAgICAgICAgICAgMTM0MiwJICAgIFNUUklORywJMjIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTM0NywJICAgIFNUUklORywJMjI0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTM1MiwJICAgIFNUUklORywJMjI1LCAyODYgfSwKLQl7ICAgICAgICAgICAgMTM1NywJICAgIFNUUklORywJMjI2LCAyODcgfSwKLQl7ICAgICAgICAgICAgMTM2MiwJICAgIFNUUklORywJMjI3LCAyODggfSwKLQl7ICAgICAgICAgICAgMTM2NywJICAgIFNUUklORywJMjI4LCAyODkgfSwKLQl7ICAgICAgICAgICAgMTM3MiwJICAgIFNUUklORywJMjI5LCAyOTAgfSwKLQl7ICAgICAgICAgICAgMTM3NywJICAgIFNUUklORywJMjMwLCAyOTEgfSwKLQl7ICAgICAgICAgICAgMTM4MiwJICAgIFNUUklORywJMjMxLCAyOTIgfSwKLQl7ICAgICAgICAgICAgMTM4NywJICAgIFNUUklORywJMjMyLCAyOTMgfSwKLQl7ICAgICAgICAgICAgMTM5MiwJICAgIFNUUklORywJMjMzLCAyOTQgfSwKLQl7ICAgICAgICAgICAgMTM5NywJICAgIFNUUklORywJMjM0LCAxMzMgfSwKLQl7ICAgICAgICAgICAgMTQwMiwJICAgIFNUUklORywJMjM1LCAyOTYgfSwKLQl7ICAgICAgICAgICAgMTQwNywJICAgIFNUUklORywJMjM2LCAyOTcgfSwKLQl7ICAgICAgICAgICAgMTQxMiwJICAgIFNUUklORywJMjM3LCAyOTggfSwKLQl7ICAgICAgICAgICAgMTQxNywJICAgIFNUUklORywJMjM4LCAyOTkgfSwKLQl7ICAgICAgICAgICAgMTQyMiwJICAgIFNUUklORywJMjM5LCAzMDAgfSwKLQl7ICAgICAgICAgICAgMTQyNywJICAgIFNUUklORywJMjQwLCAzMDEgfSwKLQl7ICAgICAgICAgICAgMTQzMiwJICAgIFNUUklORywJMjQxLCAzMDIgfSwKLQl7ICAgICAgICAgICAgMTQzNywJICAgIFNUUklORywJMjQyLCAzMDMgfSwKLQl7ICAgICAgICAgICAgMTQ0MiwJICAgIFNUUklORywJMjQzLCAzMDQgfSwKLQl7ICAgICAgICAgICAgMTQ0NywJICAgIFNUUklORywJMjQ0LCAyNTcgfSwKLQl7ICAgICAgICAgICAgMTQ1MiwJICAgIFNUUklORywJMjQ1LCAzMDYgfSwKLQl7ICAgICAgICAgICAgMTQ1NywJICAgIFNUUklORywJMjQ2LCAzMDcgfSwKLQl7ICAgICAgICAgICAgMTQ2MiwJICAgIFNUUklORywJMjQ3LCAzMDggfSwKLQl7ICAgICAgICAgICAgMTQ2NywJICAgIFNUUklORywJMjQ4LCAzMDkgfSwKLQl7ICAgICAgICAgICAgMTQ3MiwJICAgIFNUUklORywJMjQ5LCAzMTAgfSwKLQl7ICAgICAgICAgICAgMTQ3NywJICAgIFNUUklORywJMjUwLCAzMTEgfSwKLQl7ICAgICAgICAgICAgMTQ4MiwJICAgIFNUUklORywJMjUxLCAzMTIgfSwKLQl7ICAgICAgICAgICAgMTQ4NywJICAgIFNUUklORywJMjUyLCAzMTMgfSwKLQl7ICAgICAgICAgICAgMTQ5MiwJICAgIFNUUklORywJMjUzLCAzMTQgfSwKLQl7ICAgICAgICAgICAgMTQ5NywJICAgIFNUUklORywJMjU0LCAyMjYgfSwKLQl7ICAgICAgICAgICAgMTUwMiwJICAgIFNUUklORywJMjU1LCAzMTYgfSwKLQl7ICAgICAgICAgICAgMTUwNywJICAgIFNUUklORywJMjU2LCAzMTcgfSwKLQl7ICAgICAgICAgICAgMTUxMiwJICAgIFNUUklORywJMjU3LCAzMTggfSwKLQl7ICAgICAgICAgICAgMTUxNywJICAgIFNUUklORywJMjU4LCAzMTkgfSwKLQl7ICAgICAgICAgICAgMTUyMiwJICAgIFNUUklORywJMjU5LCAzMjAgfSwKLQl7ICAgICAgICAgICAgMTUyNywJICAgIFNUUklORywJMjYwLCAzMjEgfSwKLQl7ICAgICAgICAgICAgMTUzMiwJICAgIFNUUklORywJMjYxLCAzMjIgfSwKLQl7ICAgICAgICAgICAgMTUzNywJICAgIFNUUklORywJMjYyLCAzMjMgfSwKLQl7ICAgICAgICAgICAgMTU0MiwJICAgIFNUUklORywJMjYzLCAzMjQgfSwKLQl7ICAgICAgICAgICAgMTU0NywJICAgIFNUUklORywJMjY0LCAyNTggfSwKLQl7ICAgICAgICAgICAgMTU1MiwJICAgIFNUUklORywJMjY1LCAzMjYgfSwKLQl7ICAgICAgICAgICAgMTU1NywJICAgIFNUUklORywJMjY2LCAzMjcgfSwKLQl7ICAgICAgICAgICAgMTU2MiwJICAgIFNUUklORywJMjY3LCAzMjggfSwKLQl7ICAgICAgICAgICAgMTU2NywJICAgIFNUUklORywJMjY4LCAzMjkgfSwKLQl7ICAgICAgICAgICAgMTU3MiwJICAgIFNUUklORywJMjY5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTU3NiwJICAgIFNUUklORywJMjcwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTU4MCwJICAgIFNUUklORywJMjcxLCAzMzUgfSwKLQl7ICAgICAgICAgICAgMTU4NSwJICAgIFNUUklORywJMjcyLCAzMzIgfSwKLQl7ICAgICAgICAgICAgMTU5MCwJICAgIFNUUklORywJMjczLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTU5NCwJICAgIFNUUklORywJMjc0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTU5OSwJICAgIFNUUklORywJMjc1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYwNCwJICAgIFNUUklORywJMjc2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYxMCwJICAgIFNUUklORywJMjc3LCAgMzcgfSwKLQl7ICAgICAgICAgICAgMTYxNSwJICAgIFNUUklORywJMjc4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYyMSwJICAgIFNUUklORywJMjc5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYyNSwJICAgIFNUUklORywJMjgwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYzMCwJICAgIFNUUklORywJMjgxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTYzNiwJICAgIFNUUklORywJMjgyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY0MSwJICAgIFNUUklORywJMjgzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY0NywJICAgIFNUUklORywJMjg0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY1MiwJICAgIFNUUklORywJMjg1LCAgIDggfSwKLQl7ICAgICAgICAgICAgMTY1OCwJICAgIFNUUklORywJMjg2LCAyNjIgfSwKLQl7ICAgICAgICAgICAgMTY2MywJICAgIFNUUklORywJMjg3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY2NiwJICAgIFNUUklORywJMjg4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY2OSwJICAgIFNUUklORywJMjg5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY3MiwJICAgIFNUUklORywJMjkwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY3NSwJICAgIFNUUklORywJMjkxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY3OCwJICAgIFNUUklORywJMjkyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY4MSwJICAgIFNUUklORywJMjkzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY4NCwJICAgIFNUUklORywJMjk0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY4NywJICAgIFNUUklORywJMjk1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY5MCwJICAgIFNUUklORywJMjk2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY5MywJICAgIFNUUklORywJMjk3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY5NiwJICAgIFNUUklORywJMjk4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTY5OSwJICAgIFNUUklORywJMjk5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTcwNSwJICAgIFNUUklORywJMzAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTcxMSwJICAgIFNUUklORywJMzAxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTcxNSwJICAgIFNUUklORywJMzAyLCAzMjUgfSwKLQl7ICAgICAgICAgICAgMTcyMCwJICAgIFNUUklORywJMzAzLCAyMjEgfSwKLQl7ICAgICAgICAgICAgMTcyNSwJICAgIFNUUklORywJMzA0LCAyNDMgfSwKLQl7ICAgICAgICAgICAgMTcyOSwJICAgIFNUUklORywJMzA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTczMywJICAgIFNUUklORywJMzA2LCAyNTAgfSwKLQl7ICAgICAgICAgICAgMTczNywJICAgIFNUUklORywJMzA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTc0MSwJICAgIFNUUklORywJMzA4LCAxNDEgfSwKLQl7ICAgICAgICAgICAgMTc0NiwJICAgIFNUUklORywJMzA5LCAyNDggfSwKLQl7ICAgICAgICAgICAgMTc1MiwJICAgIFNUUklORywJMzEwLCAyMTggfSwKLQl7ICAgICAgICAgICAgMTc1OCwJICAgIFNUUklORywJMzExLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTc2MywJICAgIFNUUklORywJMzEyLCAyMDEgfSwKLQl7ICAgICAgICAgICAgMTc2NywJICAgIFNUUklORywJMzEzLCAyMjkgfSwKLQl7ICAgICAgICAgICAgMTc3MywJICAgIFNUUklORywJMzE0LCAyNjQgfSwKLQl7ICAgICAgICAgICAgMTc3OCwJICAgIFNUUklORywJMzE1LCAyNTMgfSwKLQl7ICAgICAgICAgICAgMTc4NCwJICAgIFNUUklORywJMzE2LCAzMzQgfSwKLQl7ICAgICAgICAgICAgMTc4OSwJICAgIFNUUklORywJMzE3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTc5NSwJICAgIFNUUklORywJMzE4LCAyMzYgfSwKLQl7ICAgICAgICAgICAgMTgwMSwJICAgIFNUUklORywJMzE5LCAxODUgfSwKLQl7ICAgICAgICAgICAgMTgwNSwJICAgIFNUUklORywJMzIwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTgxMSwJICAgIFNUUklORywJMzIxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTgxNiwJICAgIFNUUklORywJMzIyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTgyMCwJICAgIFNUUklORywJMzIzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTgyNiwJICAgIFNUUklORywJMzI0LCAxMTIgfSwKLQl7ICAgICAgICAgICAgMTgzMSwJICAgIFNUUklORywJMzI1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTgzNywJICAgIFNUUklORywJMzI2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg0MywJICAgIFNUUklORywJMzI3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg0NywJICAgIFNUUklORywJMzI4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg1MiwJICAgIFNUUklORywJMzI5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg1OCwJICAgIFNUUklORywJMzMwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg2NCwJICAgIFNUUklORywJMzMxLCAgNTMgfSwKLQl7ICAgICAgICAgICAgMTg3MCwJICAgIFNUUklORywJMzMyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg3NSwJICAgIFNUUklORywJMzMzLCAgNDcgfSwKLQl7ICAgICAgICAgICAgMTg4MSwJICAgIFNUUklORywJMzM0LCAxNTUgfSwKLQl7ICAgICAgICAgICAgMTg4OCwJICAgIFNUUklORywJMzM1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg5MywJICAgIFNUUklORywJMzM2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTg5OCwJICAgIFNUUklORywJMzM3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkwMywJICAgIFNUUklORywJMzM4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkwOCwJICAgIFNUUklORywJMzM5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkxMiwJICAgIFNUUklORywJMzQwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkxNywJICAgIFNUUklORywJMzQxLCAzODMgfSwKLQl7ICAgICAgICAgICAgMTkyMywJICAgIFNUUklORywJMzQyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkyOSwJICAgIFNUUklORywJMzQzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTkzNSwJICAgIFNUUklORywJMzQ0LCAzODYgfSwKLQl7ICAgICAgICAgICAgMTk0MCwJICAgIFNUUklORywJMzQ1LCAyMzggfSwKLQl7ICAgICAgICAgICAgMTk0NiwJICAgIFNUUklORywJMzQ2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTk1MSwJICAgIFNUUklORywJMzQ3LCAzNDQgfSwKLQl7ICAgICAgICAgICAgMTk1NiwJICAgIFNUUklORywJMzQ4LCAgMzEgfSwKLQl7ICAgICAgICAgICAgMTk2MSwJICAgIFNUUklORywJMzQ5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTk2NiwJICAgIFNUUklORywJMzUwLCAzODAgfSwKLQl7ICAgICAgICAgICAgMTk3MiwJICAgIFNUUklORywJMzUxLCAyNTUgfSwKLQl7ICAgICAgICAgICAgMTk3OCwJICAgIFNUUklORywJMzUyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTk4MywJICAgIFNUUklORywJMzUzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMTk4OSwJICAgIFNUUklORywJMzU0LCAzNDcgfSwKLQl7ICAgICAgICAgICAgMTk5NCwJICAgIFNUUklORywJMzU1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAwMCwJICAgIFNUUklORywJMzU2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAwNiwJICAgIFNUUklORywJMzU3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAxMiwJICAgIFNUUklORywJMzU4LCAgODcgfSwKLQl7ICAgICAgICAgICAgMjAxNywJICAgIFNUUklORywJMzU5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAyMywJICAgIFNUUklORywJMzYwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAyOSwJICAgIFNUUklORywJMzYxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAzNCwJICAgIFNUUklORywJMzYyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjAzOSwJICAgIFNUUklORywJMzYzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA0NCwJICAgIFNUUklORywJMzY0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA0OSwJICAgIFNUUklORywJMzY1LCAyMTIgfSwKLQl7ICAgICAgICAgICAgMjA1NCwJICAgIFNUUklORywJMzY2LCAxMDkgfSwKLQl7ICAgICAgICAgICAgMjA1OSwJICAgIFNUUklORywJMzY3LCAyMTMgfSwKLQl7ICAgICAgICAgICAgMjA2NCwJICAgIFNUUklORywJMzY4LCAyMzAgfSwKLQl7ICAgICAgICAgICAgMjA3MCwJICAgIFNUUklORywJMzY5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA3NiwJICAgIFNUUklORywJMzcwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA4MiwJICAgIFNUUklORywJMzcxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA4OCwJICAgIFNUUklORywJMzcyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjA5MywJICAgIFNUUklORywJMzczLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjEwMSwJICAgIFNUUklORywJMzc0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjEwNywJICAgIFNUUklORywJMzc1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjExMywJICAgIFNUUklORywJMzc2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjEyMiwJICAgIFNUUklORywJMzc3LCAxMTYgfSwKLQl7ICAgICAgICAgICAgMjEyOSwJICAgIFNUUklORywJMzc4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjEzNSwJICAgIFNUUklORywJMzc5LCAyMzEgfSwKLQl7ICAgICAgICAgICAgMjE0MSwJICAgIFNUUklORywJMzgwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE0NywJICAgIFNUUklORywJMzgxLCAzMzggfSwKLQl7ICAgICAgICAgICAgMjE1MiwJICAgIFNUUklORywJMzgyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE1NywJICAgIFNUUklORywJMzgzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE2MywJICAgIFNUUklORywJMzg0LCAxOTcgfSwKLQl7ICAgICAgICAgICAgMjE2OSwJICAgIFNUUklORywJMzg1LCA0MzAgfSwKLQl7ICAgICAgICAgICAgMjE3NSwJICAgIFNUUklORywJMzg2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE4MSwJICAgIFNUUklORywJMzg3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE4NywJICAgIFNUUklORywJMzg4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjE5NCwJICAgIFNUUklORywJMzg5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIwMCwJICAgIFNUUklORywJMzkwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIwNiwJICAgIFNUUklORywJMzkxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIxMiwJICAgIFNUUklORywJMzkyLCA0MzcgfSwKLQl7ICAgICAgICAgICAgMjIxNywJICAgIFNUUklORywJMzkzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIyNSwJICAgIFNUUklORywJMzk0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIzMCwJICAgIFNUUklORywJMzk1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjIzNSwJICAgIE5VTUJFUiwJIDMzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI0MCwJICAgQk9PTEVBTiwJIDM3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI0NSwJICAgQk9PTEVBTiwJIDM4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI1MCwJICAgQk9PTEVBTiwJIDM5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI1NSwJICAgIE5VTUJFUiwJIDM0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI2MCwJICAgIE5VTUJFUiwJIDM1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI2NSwJICAgIFNUUklORywJMzk2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI3MCwJICAgIFNUUklORywJMzk3LCAgMTMgfSwKLQl7ICAgICAgICAgICAgMjI3NSwJICAgQk9PTEVBTiwJIDQwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI4MCwJICAgQk9PTEVBTiwJIDQxLCA0NDYgfSwKLQl7ICAgICAgICAgICAgMjI4NSwJICAgIE5VTUJFUiwJIDM2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI5MCwJICAgIE5VTUJFUiwJIDM3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjI5NSwJICAgIE5VTUJFUiwJIDM4LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMwMCwJICAgIFNUUklORywJMzk4LCA0NzIgfSwKLQl7ICAgICAgICAgICAgMjMwNSwJICAgIFNUUklORywJMzk5LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMxMCwJICAgQk9PTEVBTiwJIDQyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMxNSwJICAgQk9PTEVBTiwJIDQzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMyMCwJICAgIFNUUklORywJNDAwLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMyNSwJICAgIFNUUklORywJNDAxLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMzMCwJICAgIFNUUklORywJNDAyLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjMzNSwJICAgIFNUUklORywJNDAzLCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjM0MCwJICAgIFNUUklORywJNDA0LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjM0NSwJICAgIFNUUklORywJNDA1LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjM1MCwJICAgIFNUUklORywJNDA2LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjM1NSwJICAgIFNUUklORywJNDA3LCAgLTEgfSwKLQl7ICAgICAgICAgICAgMjM2MCwJICAgIFNUUklORywJNDA4LCAgMjYgfSwKLQl7ICAgICAgICAgICAgMjM2NSwJICAgIFNUUklORywJNDA5LCAgNjAgfSwKLQl7ICAgICAgICAgICAgMjM3MCwJICAgIFNUUklORywJNDEwLCAxMjEgfSwKLQl7ICAgICAgICAgICAgMjM3NSwJICAgIFNUUklORywJNDExLCA0MDcgfSwKLQl7ICAgICAgICAgICAgMjM4MCwJICAgIFNUUklORywJNDEyLCA0MDIgfSwKLQl7ICAgICAgICAgICAgMjM4NSwJICAgIFNUUklORywJNDEzLCAgLTEgfSAKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqX25jX2luZm9fdGFibGUgPSAwOwotCi1zdGF0aWMgY29uc3Qgc2hvcnQgX25jX2luZm9faGFzaF90YWJsZVs5OTVdID0KLXsKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0NjUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNjEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ1NywKLQkgLTEsCi0JIC0xLAotCTI2NSwKLQkyMTYsCi0JMTIwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE4MCwKLQkgLTEsCi0JIC0xLAotCSA4OCwKLQkgLTEsCi0JNDIwLAotCSAtMSwKLQkzOTgsCi0JIC0xLAotCTM0OCwKLQkgLTEsCi0JIC0xLAotCSAxOSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNTksCi0JIC0xLAotCTE3NCwKLQkgLTEsCi0JMjQ1LAotCSAtMSwKLQkgNzQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNjksCi0JIC0xLAotCTQ4MCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMjQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzkwLAotCTM3OSwKLQkzNjcsCi0JIC0xLAotCSAtMSwKLQk0NDQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzA1LAotCSAtMSwKLQkgLTEsCi0JMzYzLAotCSAtMSwKLQkgLTEsCi0JNDgzLAotCTM3NywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDYwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMDQsCi0JIDM4LAotCSAtMSwKLQkgODIsCi0JIC0xLAotCTExMCwKLQkxMjcsCi0JIC0xLAotCSAtMSwKLQk0NjMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMzNiwKLQkgLTEsCi0JIDE3LAotCTEyOCwKLQk0MzQsCi0JIC0xLAotCTE4OCwKLQkxMjksCi0JIC0xLAotCTM1MSwKLQkgLTEsCi0JIC0xLAotCSAxNiwKLQkgLTEsCi0JIC0xLAotCTI1OSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ4OSwKLQkgLTEsCi0JMzUzLAotCSAtMSwKLQkgNzEsCi0JMjQ3LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgNzgsCi0JIC0xLAotCSAtMSwKLQkzMzEsCi0JIC0xLAotCSAtMSwKLQkxNzMsCi0JMTM2LAotCTE2MSwKLQkxODksCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ1NCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjI0LAotCTQ3OSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM1NCwKLQkgLTEsCi0JIC0xLAotCTIzMywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMTI1LAotCSAxMSwKLQkgLTEsCi0JIC0xLAotCTM3OCwKLQkxNjYsCi0JIC0xLAotCTE5MSwKLQkgLTEsCi0JIC0xLAotCSA0OCwKLQkyMjgsCi0JIC0xLAotCSAgMiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNzQsCi0JIC0xLAotCTQwOCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNzUsCi0JIC0xLAotCSA1MiwKLQkxNDUsCi0JMTcwLAotCSAtMSwKLQkzOTIsCi0JMzgyLAotCSAtMSwKLQkzOTMsCi0JNDExLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTI3NiwKLQkgLTEsCi0JIC0xLAotCSAzNSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzOTYsCi0JMzg4LAotCSAzNiwKLQkgLTEsCi0JIC0xLAotCSA2NCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzUwLAotCSAtMSwKLQkgLTEsCi0JMjE1LAotCSA5MSwKLQkgLTEsCi0JIC0xLAotCTQzOSwKLQkgLTEsCi0JMTIyLAotCSAtMSwKLQkyMDAsCi0JIC0xLAotCSA2NywKLQkgLTEsCi0JNDEwLAotCSAtMSwKLQkgLTEsCi0JIDg5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDk2LAotCSAyMSwKLQkgLTEsCi0JMTAzLAotCSAgMSwKLQkgLTEsCi0JIC0xLAotCTM2OSwKLQkgLTEsCi0JIC0xLAotCTM0NSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNTUsCi0JIDQwLAotCSAtMSwKLQkgMjcsCi0JIC0xLAotCTQwNiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0ODIsCi0JNDE5LAotCTQxNywKLQkgLTEsCi0JIC0xLAotCTM2MCwKLQkyNzAsCi0JIC0xLAotCSAtMSwKLQkyNTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM0OSwKLQkgLTEsCi0JIC0xLAotCTI3OCwKLQkgLTEsCi0JNDQyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDM4LAotCSAtMSwKLQk0OTQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzMTUsCi0JIC0xLAotCTM0MCwKLQkzNjQsCi0JMzU2LAotCSAtMSwKLQk0ODQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAzMiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNjAsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIwNywKLQk0ODcsCi0JIDg0LAotCTQ1MywKLQkgLTEsCi0JIC0xLAotCTQxMywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIxNCwKLQkgLTEsCi0JMzM3LAotCTM1MiwKLQk0NzcsCi0JIC0xLAotCTQzNSwKLQkgNTYsCi0JIC0xLAotCSAtMSwKLQkgMzQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMTMyLAotCSAtMSwKLQkgODUsCi0JNDkyLAotCTQyOCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxOTksCi0JIC0xLAotCTM0MiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMzgsCi0JMTYzLAotCTE5MCwKLQkxNDcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTI2NiwKLQkgLTEsCi0JIC0xLAotCTQzMywKLQkgLTEsCi0JIC0xLAotCTQ3NCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzg1LAotCTEwMCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0MzEsCi0JIC0xLAotCTM5MSwKLQkzODEsCi0JIDEyLAotCSA1OCwKLQkgLTEsCi0JMTQyLAotCTE2NywKLQkgLTEsCi0JIC0xLAotCTQwOSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDQyLAotCSA0NSwKLQkgNjYsCi0JIC0xLAotCSAtMSwKLQk0MjQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjIwLAotCTM3NiwKLQkgLTEsCi0JIC0xLAotCTM0MywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMTQsCi0JMTA2LAotCSAtMSwKLQkgLTEsCi0JNDQ3LAotCSAtMSwKLQkyMTcsCi0JNDkzLAotCTE3MSwKLQkxNzIsCi0JMzk5LAotCTM0NiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMTk1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDk2LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNDEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE1MSwKLQkgLTEsCi0JMTE4LAotCSAtMSwKLQkgNjIsCi0JMTg3LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjM0LAotCSAtMSwKLQk0NDMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNTcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjQ2LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ0OCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDM5LAotCSAtMSwKLQkgMTAsCi0JMzk3LAotCTM4OSwKLQkgLTEsCi0JIC0xLAotCTE1NCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMzAsCi0JIC0xLAotCSAyMiwKLQkyMjIsCi0JMzczLAotCTE2MiwKLQkgLTEsCi0JMzYxLAotCTIwMywKLQkgLTEsCi0JIC0xLAotCTI0MiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDU5LAotCSAtMSwKLQkgLTEsCi0JMjcxLAotCSAtMSwKLQkgOTcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQyNywKLQkgLTEsCi0JMTc1LAotCTEwNywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxNzgsCi0JNDIzLAotCTM3MiwKLQkgNjksCi0JIC0xLAotCTM2NSwKLQkgLTEsCi0JICA0LAotCTQ4NiwKLQkxODQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ2MSwKLQkgLTEsCi0JIC0xLAotCTI4MiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ3NSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzOTUsCi0JMzg3LAotCSAtMSwKLQkgLTEsCi0JIDc5LAotCSA2MywKLQkgLTEsCi0JIC0xLAotCTQ1MiwKLQk0NTEsCi0JIC0xLAotCSA1MCwKLQkgLTEsCi0JNDM2LAotCSAtMSwKLQkgLTEsCi0JMjg1LAotCSAtMSwKLQkgLTEsCi0JIDgzLAotCTQ1NSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNzksCi0JMzcwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAxOCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQyMSwKLQkgLTEsCi0JNDk1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMjcsCi0JMzMzLAotCSAtMSwKLQkgLTEsCi0JIDI1LAotCTEzOSwKLQkxNjQsCi0JIC0xLAotCSAtMSwKLQkzNzEsCi0JIC0xLAotCSAtMSwKLQk0MjksCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjczLAotCSAtMSwKLQk0NjYsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxODEsCi0JIC0xLAotCSAtMSwKLQkgNzUsCi0JIC0xLAotCSA5MiwKLQkzMzksCi0JIC0xLAotCTM4NCwKLQkgLTEsCi0JMTIzLAotCSAtMSwKLQkxNDMsCi0JMTY4LAotCSAtMSwKLQkxODMsCi0JMTg2LAotCSAtMSwKLQkxMDgsCi0JIDk1LAotCTM2OCwKLQkgLTEsCi0JIC0xLAotCTI3NywKLQkxOTgsCi0JIC0xLAotCTIwNiwKLQk0MzIsCi0JIC0xLAotCTQ3NiwKLQkgLTEsCi0JNDU4LAotCSAtMSwKLQkgLTEsCi0JMTgyLAotCSAtMSwKLQk0NDEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMTE1LAotCTExMywKLQk0MDQsCi0JIC0xLAotCTQ3MywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0OTAsCi0JMTA0LAotCSAtMSwKLQkgLTEsCi0JNDUwLAotCTQ0OSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNzQsCi0JIC0xLAotCTQ4MSwKLQkxMTEsCi0JIDk5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTI2MywKLQkgOTMsCi0JIC0xLAotCTExNywKLQkgLTEsCi0JIDI5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMTksCi0JIC0xLAotCSAtMSwKLQk0MjYsCi0JNDkxLAotCSAtMSwKLQkgLTEsCi0JMjA1LAotCSAtMSwKLQkyMzcsCi0JIDQ0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDE4LAotCTQxNiwKLQkgLTEsCi0JIC0xLAotCTM1OCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgNjUsCi0JIC0xLAotCTQ0MCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JICA1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ4OCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgMjgsCi0JNDEyLAotCSAtMSwKLQk0MDUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyOTUsCi0JIC0xLAotCTQ3MSwKLQkzNjIsCi0JIC0xLAotCSAtMSwKLQk0ODUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMDIsCi0JIC0xLAotCSAtMSwKLQkyODQsCi0JIC0xLAotCTQ2OSwKLQkgLTEsCi0JIC0xLAotCSAgOSwKLQkgMjQsCi0JIC0xLAotCSAtMSwKLQkxNzksCi0JIC0xLAotCSAtMSwKLQkgMTUsCi0JIC0xLAotCSAtMSwKLQkxNDgsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzQxLAotCSAtMSwKLQkgLTEsCi0JMzY2LAotCTIwOSwKLQkyMjMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgIDAsCi0JIC0xLAotCTIwOCwKLQk0NjcsCi0JIC0xLAotCTQyMiwKLQkgLTEsCi0JNDY0LAotCTE1NywKLQkgLTEsCi0JNDAzLAotCSAtMSwKLQk0MTUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ0NSwKLQkgLTEsCi0JIC0xLAotCTMzMCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0NjIsCi0JMTYwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgODYsCi0JIC0xLAotCSAtMSwKLQkgNDEsCi0JIC0xLAotCTI4MCwKLQkgLTEsCi0JNDc4LAotCSAtMSwKLQkgLTEsCi0JIDU3LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM5NCwKLQk0MTQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMTQwLAotCTE2NSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyNzUsCi0JMTAyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIzMiwKLQkgLTEsCi0JIDE0LAotCSAtMSwKLQkgLTEsCi0JMjI1LAotCSAtMSwKLQkgLTEsCi0JMjY3LAotCSAtMSwKLQkgNzcsCi0JIC0xLAotCTE0NCwKLQkxNjksCi0JIC0xLAotCTE0OSwKLQkgLTEsCi0JNDAwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAgMywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0NjgsCi0JNDI1LAotCSAtMSwKLQkgLTEsCi0JNDcwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ1NiwKLQkgLTEsCi0JMTU4LAotCTE1OSwKLQkgLTEsCi0JIC0xLAotCTE0NiwKLQkgNDksCi0JIC0xLAotCSAtMSwKLQkxNTMsCi0JIC0xLAotCTQwMSwKLQkgOTAsCi0JMAkvKiBiYXNlLW9mLXRhYmxlICovCi19OwotCi0jaWYgKEJPT0xDT1VOVCE9NDQpfHwoTlVNQ09VTlQhPTM5KXx8KFNUUkNPVU5UIT00MTQpCi0jZXJyb3IJLS0+IHRlcm0uaCBhbmQgY29tcF9jYXB0YWIuYyBkaXNhZ3JlZSBhYm91dCB0aGUgPC0tCi0jZXJyb3IJLS0+IG51bWJlcnMgb2YgYm9vbGVhbnMsIG51bWJlcnMgYW5kL29yIHN0cmluZ3MgPC0tCi0jZW5kaWYKLQotc3RhdGljIGNvbnN0IGNoYXIgY2FwX25hbWVzX3RleHRbXSA9IFwKLSJid1wwIiAiYW1cMCIgInhiXDAiICJ4c1wwIiAieG5cMCIgImVvXDAiICJnblwwIiAiaGNcMCIgImttXDAiICJoc1wwIiBcCi0iaW5cMCIgImRhXDAiICJkYlwwIiAibWlcMCIgIm1zXDAiICJvc1wwIiAiZXNcMCIgInh0XDAiICJoelwwIiAidWxcMCIgXAotInhvXDAiICJueFwwIiAiNWlcMCIgIkhDXDAiICJOUlwwIiAiTlBcMCIgIk5EXDAiICJjY1wwIiAidXRcMCIgImhsXDAiIFwKLSJZQVwwIiAiWUJcMCIgIllDXDAiICJZRFwwIiAiWUVcMCIgIllGXDAiICJZR1wwIiAiY29cMCIgIml0XDAiICJsaVwwIiBcCi0ibG1cMCIgInNnXDAiICJwYlwwIiAidnRcMCIgIndzXDAiICJObFwwIiAibGhcMCIgImx3XDAiICJtYVwwIiAiTVdcMCIgXAotIkNvXDAiICJwYVwwIiAiTkNcMCIgIllhXDAiICJZYlwwIiAiWWNcMCIgIllkXDAiICJZZVwwIiAiWWZcMCIgIllnXDAiIFwKLSJZaFwwIiAiWWlcMCIgIllqXDAiICJZa1wwIiAiWWxcMCIgIlltXDAiICJZblwwIiAiQlRcMCIgIllvXDAiICJZcFwwIiBcCi0iYnRcMCIgImJsXDAiICJjclwwIiAiY3NcMCIgImN0XDAiICJjbFwwIiAiY2VcMCIgImNkXDAiICJjaFwwIiAiQ0NcMCIgXAotImNtXDAiICJkb1wwIiAiaG9cMCIgInZpXDAiICJsZVwwIiAiQ01cMCIgInZlXDAiICJuZFwwIiAibGxcMCIgInVwXDAiIFwKLSJ2c1wwIiAiZGNcMCIgImRsXDAiICJkc1wwIiAiaGRcMCIgImFzXDAiICJtYlwwIiAibWRcMCIgInRpXDAiICJkbVwwIiBcCi0ibWhcMCIgImltXDAiICJta1wwIiAibXBcMCIgIm1yXDAiICJzb1wwIiAidXNcMCIgImVjXDAiICJhZVwwIiAibWVcMCIgXAotInRlXDAiICJlZFwwIiAiZWlcMCIgInNlXDAiICJ1ZVwwIiAidmJcMCIgImZmXDAiICJmc1wwIiAiaTFcMCIgImlzXDAiIFwKLSJpM1wwIiAiaWZcMCIgImljXDAiICJhbFwwIiAiaXBcMCIgImtiXDAiICJrYVwwIiAia0NcMCIgImt0XDAiICJrRFwwIiBcCi0ia0xcMCIgImtkXDAiICJrTVwwIiAia0VcMCIgImtTXDAiICJrMFwwIiAiazFcMCIgIms7XDAiICJrMlwwIiAiazNcMCIgXAotIms0XDAiICJrNVwwIiAiazZcMCIgIms3XDAiICJrOFwwIiAiazlcMCIgImtoXDAiICJrSVwwIiAia0FcMCIgImtsXDAiIFwKLSJrSFwwIiAia05cMCIgImtQXDAiICJrclwwIiAia0ZcMCIgImtSXDAiICJrVFwwIiAia3VcMCIgImtlXDAiICJrc1wwIiBcCi0ibDBcMCIgImwxXDAiICJsYVwwIiAibDJcMCIgImwzXDAiICJsNFwwIiAibDVcMCIgImw2XDAiICJsN1wwIiAibDhcMCIgXAotImw5XDAiICJtb1wwIiAibW1cMCIgIm53XDAiICJwY1wwIiAiRENcMCIgIkRMXDAiICJET1wwIiAiSUNcMCIgIlNGXDAiIFwKLSJBTFwwIiAiTEVcMCIgIlJJXDAiICJTUlwwIiAiVVBcMCIgInBrXDAiICJwbFwwIiAicHhcMCIgInBzXDAiICJwZlwwIiBcCi0icG9cMCIgInJwXDAiICJyMVwwIiAicjJcMCIgInIzXDAiICJyZlwwIiAicmNcMCIgImN2XDAiICJzY1wwIiAic2ZcMCIgXAotInNyXDAiICJzYVwwIiAic3RcMCIgIndpXDAiICJ0YVwwIiAidHNcMCIgInVjXDAiICJodVwwIiAiaVBcMCIgIksxXDAiIFwKLSJLM1wwIiAiSzJcMCIgIks0XDAiICJLNVwwIiAicE9cMCIgInJQXDAiICJhY1wwIiAicG5cMCIgImtCXDAiICJTWFwwIiBcCi0iUlhcMCIgIlNBXDAiICJSQVwwIiAiWE5cMCIgIlhGXDAiICJlQVwwIiAiTE9cMCIgIkxGXDAiICJAMVwwIiAiQDJcMCIgXAotIkAzXDAiICJANFwwIiAiQDVcMCIgIkA2XDAiICJAN1wwIiAiQDhcMCIgIkA5XDAiICJAMFwwIiAiJTFcMCIgIiUyXDAiIFwKLSIlM1wwIiAiJTRcMCIgIiU1XDAiICIlNlwwIiAiJTdcMCIgIiU4XDAiICIlOVwwIiAiJTBcMCIgIiYxXDAiICImMlwwIiBcCi0iJjNcMCIgIiY0XDAiICImNVwwIiAiJjZcMCIgIiY3XDAiICImOFwwIiAiJjlcMCIgIiYwXDAiICIqMVwwIiAiKjJcMCIgXAotIiozXDAiICIqNFwwIiAiKjVcMCIgIio2XDAiICIqN1wwIiAiKjhcMCIgIio5XDAiICIqMFwwIiAiIzFcMCIgIiMyXDAiIFwKLSIjM1wwIiAiIzRcMCIgIiVhXDAiICIlYlwwIiAiJWNcMCIgIiVkXDAiICIlZVwwIiAiJWZcMCIgIiVnXDAiICIlaFwwIiBcCi0iJWlcMCIgIiVqXDAiICIhMVwwIiAiITJcMCIgIiEzXDAiICJSRlwwIiAiRjFcMCIgIkYyXDAiICJGM1wwIiAiRjRcMCIgXAotIkY1XDAiICJGNlwwIiAiRjdcMCIgIkY4XDAiICJGOVwwIiAiRkFcMCIgIkZCXDAiICJGQ1wwIiAiRkRcMCIgIkZFXDAiIFwKLSJGRlwwIiAiRkdcMCIgIkZIXDAiICJGSVwwIiAiRkpcMCIgIkZLXDAiICJGTFwwIiAiRk1cMCIgIkZOXDAiICJGT1wwIiBcCi0iRlBcMCIgIkZRXDAiICJGUlwwIiAiRlNcMCIgIkZUXDAiICJGVVwwIiAiRlZcMCIgIkZXXDAiICJGWFwwIiAiRllcMCIgXAotIkZaXDAiICJGYVwwIiAiRmJcMCIgIkZjXDAiICJGZFwwIiAiRmVcMCIgIkZmXDAiICJGZ1wwIiAiRmhcMCIgIkZpXDAiIFwKLSJGalwwIiAiRmtcMCIgIkZsXDAiICJGbVwwIiAiRm5cMCIgIkZvXDAiICJGcFwwIiAiRnFcMCIgIkZyXDAiICJjYlwwIiBcCi0iTUNcMCIgIk1MXDAiICJNUlwwIiAiTGZcMCIgIlNDXDAiICJES1wwIiAiUkNcMCIgIkNXXDAiICJXR1wwIiAiSFVcMCIgXAotIkRJXDAiICJRRFwwIiAiVE9cMCIgIlBVXDAiICJmaFwwIiAiUEFcMCIgIldBXDAiICJ1MFwwIiAidTFcMCIgInUyXDAiIFwKLSJ1M1wwIiAidTRcMCIgInU1XDAiICJ1NlwwIiAidTdcMCIgInU4XDAiICJ1OVwwIiAib3BcMCIgIm9jXDAiICJJY1wwIiBcCi0iSXBcMCIgInNwXDAiICJTZlwwIiAiU2JcMCIgIlpBXDAiICJaQlwwIiAiWkNcMCIgIlpEXDAiICJaRVwwIiAiWkZcMCIgXAotIlpHXDAiICJaSFwwIiAiWklcMCIgIlpKXDAiICJaS1wwIiAiWkxcMCIgIlpNXDAiICJaTlwwIiAiWk9cMCIgIlpQXDAiIFwKLSJaUVwwIiAiWlJcMCIgIlpTXDAiICJaVFwwIiAiWlVcMCIgIlpWXDAiICJaV1wwIiAiWlhcMCIgIlpZXDAiICJaWlwwIiBcCi0iWmFcMCIgIlpiXDAiICJaY1wwIiAiWmRcMCIgIlplXDAiICJaZlwwIiAiWmdcMCIgIlpoXDAiICJaaVwwIiAiWmpcMCIgXAotIlprXDAiICJabFwwIiAiWm1cMCIgIlpuXDAiICJab1wwIiAiWnBcMCIgIlpxXDAiICJaclwwIiAiWnNcMCIgIlp0XDAiIFwKLSJadVwwIiAiWnZcMCIgIlp3XDAiICJaeFwwIiAiWnlcMCIgIkttXDAiICJNaVwwIiAiUlFcMCIgIkdtXDAiICJBRlwwIiBcCi0iQUJcMCIgInhsXDAiICJkdlwwIiAiY2lcMCIgInMwXDAiICJzMVwwIiAiczJcMCIgInMzXDAiICJNTFwwIiAiTVRcMCIgXAotIlh5XDAiICJaelwwIiAiWXZcMCIgIll3XDAiICJZeFwwIiAiWXlcMCIgIll6XDAiICJZWlwwIiAiUzFcMCIgIlMyXDAiIFwKLSJTM1wwIiAiUzRcMCIgIlM1XDAiICJTNlwwIiAiUzdcMCIgIlM4XDAiICJYaFwwIiAiWGxcMCIgIlhvXDAiICJYclwwIiBcCi0iWHRcMCIgIlh2XDAiICJzQVwwIiAic0xcMCIgImkyXDAiICJyc1wwIiAidWdcMCIgImJzXDAiICJuc1wwIiAibmNcMCIgXAotImRDXDAiICJkTlwwIiAibmxcMCIgImJjXDAiICJNVFwwIiAiTkxcMCIgImRCXDAiICJkVFwwIiAia25cMCIgImtvXDAiIFwKLSJtYVwwIiAicHRcMCIgInhyXDAiICJHMlwwIiAiRzNcMCIgIkcxXDAiICJHNFwwIiAiR1JcMCIgIkdMXDAiICJHVVwwIiBcCi0iR0RcMCIgIkdIXDAiICJHVlwwIiAiR0NcMCIgIm1sXDAiICJtdVwwIiAiYnhcMCIgOwotCi1zdGF0aWMgbmFtZV90YWJsZV9kYXRhIGNvbnN0IGNhcF9uYW1lc19kYXRhW10gPQotewotCXsgICAgICAgICAgICAgICAwLAkgICBCT09MRUFOLAkgIDAsICAtMSB9LAotCXsgICAgICAgICAgICAgICAzLAkgICBCT09MRUFOLAkgIDEsICAtMSB9LAotCXsgICAgICAgICAgICAgICA2LAkgICBCT09MRUFOLAkgIDIsICAtMSB9LAotCXsgICAgICAgICAgICAgICA5LAkgICBCT09MRUFOLAkgIDMsICAtMSB9LAotCXsgICAgICAgICAgICAgIDEyLAkgICBCT09MRUFOLAkgIDQsICAtMSB9LAotCXsgICAgICAgICAgICAgIDE1LAkgICBCT09MRUFOLAkgIDUsICAtMSB9LAotCXsgICAgICAgICAgICAgIDE4LAkgICBCT09MRUFOLAkgIDYsICAtMSB9LAotCXsgICAgICAgICAgICAgIDIxLAkgICBCT09MRUFOLAkgIDcsICAtMSB9LAotCXsgICAgICAgICAgICAgIDI0LAkgICBCT09MRUFOLAkgIDgsICAtMSB9LAotCXsgICAgICAgICAgICAgIDI3LAkgICBCT09MRUFOLAkgIDksICAtMSB9LAotCXsgICAgICAgICAgICAgIDMwLAkgICBCT09MRUFOLAkgMTAsICAtMSB9LAotCXsgICAgICAgICAgICAgIDMzLAkgICBCT09MRUFOLAkgMTEsICAtMSB9LAotCXsgICAgICAgICAgICAgIDM2LAkgICBCT09MRUFOLAkgMTIsICAtMSB9LAotCXsgICAgICAgICAgICAgIDM5LAkgICBCT09MRUFOLAkgMTMsICAtMSB9LAotCXsgICAgICAgICAgICAgIDQyLAkgICBCT09MRUFOLAkgMTQsICAtMSB9LAotCXsgICAgICAgICAgICAgIDQ1LAkgICBCT09MRUFOLAkgMTUsICAtMSB9LAotCXsgICAgICAgICAgICAgIDQ4LAkgICBCT09MRUFOLAkgMTYsICAtMSB9LAotCXsgICAgICAgICAgICAgIDUxLAkgICBCT09MRUFOLAkgMTcsICAtMSB9LAotCXsgICAgICAgICAgICAgIDU0LAkgICBCT09MRUFOLAkgMTgsICAtMSB9LAotCXsgICAgICAgICAgICAgIDU3LAkgICBCT09MRUFOLAkgMTksICAtMSB9LAotCXsgICAgICAgICAgICAgIDYwLAkgICBCT09MRUFOLAkgMjAsICAtMSB9LAotCXsgICAgICAgICAgICAgIDYzLAkgICBCT09MRUFOLAkgMjEsICAtMSB9LAotCXsgICAgICAgICAgICAgIDY2LAkgICBCT09MRUFOLAkgMjIsICAtMSB9LAotCXsgICAgICAgICAgICAgIDY5LAkgICBCT09MRUFOLAkgMjMsICAtMSB9LAotCXsgICAgICAgICAgICAgIDcyLAkgICBCT09MRUFOLAkgMjQsICAgMSB9LAotCXsgICAgICAgICAgICAgIDc1LAkgICBCT09MRUFOLAkgMjUsICAtMSB9LAotCXsgICAgICAgICAgICAgIDc4LAkgICBCT09MRUFOLAkgMjYsICAtMSB9LAotCXsgICAgICAgICAgICAgIDgxLAkgICBCT09MRUFOLAkgMjcsICAtMSB9LAotCXsgICAgICAgICAgICAgIDg0LAkgICBCT09MRUFOLAkgMjgsICAtMSB9LAotCXsgICAgICAgICAgICAgIDg3LAkgICBCT09MRUFOLAkgMjksICAtMSB9LAotCXsgICAgICAgICAgICAgIDkwLAkgICBCT09MRUFOLAkgMzAsICAtMSB9LAotCXsgICAgICAgICAgICAgIDkzLAkgICBCT09MRUFOLAkgMzEsICAtMSB9LAotCXsgICAgICAgICAgICAgIDk2LAkgICBCT09MRUFOLAkgMzIsICAtMSB9LAotCXsgICAgICAgICAgICAgIDk5LAkgICBCT09MRUFOLAkgMzMsICAtMSB9LAotCXsgICAgICAgICAgICAgMTAyLAkgICBCT09MRUFOLAkgMzQsICAtMSB9LAotCXsgICAgICAgICAgICAgMTA1LAkgICBCT09MRUFOLAkgMzUsICAtMSB9LAotCXsgICAgICAgICAgICAgMTA4LAkgICBCT09MRUFOLAkgMzYsICAtMSB9LAotCXsgICAgICAgICAgICAgMTExLAkgICAgTlVNQkVSLAkgIDAsICAtMSB9LAotCXsgICAgICAgICAgICAgMTE0LAkgICAgTlVNQkVSLAkgIDEsICAtMSB9LAotCXsgICAgICAgICAgICAgMTE3LAkgICAgTlVNQkVSLAkgIDIsICAtMSB9LAotCXsgICAgICAgICAgICAgMTIwLAkgICAgTlVNQkVSLAkgIDMsICAtMSB9LAotCXsgICAgICAgICAgICAgMTIzLAkgICAgTlVNQkVSLAkgIDQsICAtMSB9LAotCXsgICAgICAgICAgICAgMTI2LAkgICAgTlVNQkVSLAkgIDUsICAtMSB9LAotCXsgICAgICAgICAgICAgMTI5LAkgICAgTlVNQkVSLAkgIDYsICAtMSB9LAotCXsgICAgICAgICAgICAgMTMyLAkgICAgTlVNQkVSLAkgIDcsICAtMSB9LAotCXsgICAgICAgICAgICAgMTM1LAkgICAgTlVNQkVSLAkgIDgsICAtMSB9LAotCXsgICAgICAgICAgICAgMTM4LAkgICAgTlVNQkVSLAkgIDksICAtMSB9LAotCXsgICAgICAgICAgICAgMTQxLAkgICAgTlVNQkVSLAkgMTAsICAtMSB9LAotCXsgICAgICAgICAgICAgMTQ0LAkgICAgTlVNQkVSLAkgMTEsICAtMSB9LAotCXsgICAgICAgICAgICAgMTQ3LAkgICAgTlVNQkVSLAkgMTIsICAtMSB9LAotCXsgICAgICAgICAgICAgMTUwLAkgICAgTlVNQkVSLAkgMTMsICAtMSB9LAotCXsgICAgICAgICAgICAgMTUzLAkgICAgTlVNQkVSLAkgMTQsICAtMSB9LAotCXsgICAgICAgICAgICAgMTU2LAkgICAgTlVNQkVSLAkgMTUsICAtMSB9LAotCXsgICAgICAgICAgICAgMTU5LAkgICAgTlVNQkVSLAkgMTYsICAtMSB9LAotCXsgICAgICAgICAgICAgMTYyLAkgICAgTlVNQkVSLAkgMTcsICAtMSB9LAotCXsgICAgICAgICAgICAgMTY1LAkgICAgTlVNQkVSLAkgMTgsICAtMSB9LAotCXsgICAgICAgICAgICAgMTY4LAkgICAgTlVNQkVSLAkgMTksICAtMSB9LAotCXsgICAgICAgICAgICAgMTcxLAkgICAgTlVNQkVSLAkgMjAsICAtMSB9LAotCXsgICAgICAgICAgICAgMTc0LAkgICAgTlVNQkVSLAkgMjEsICAtMSB9LAotCXsgICAgICAgICAgICAgMTc3LAkgICAgTlVNQkVSLAkgMjIsICAtMSB9LAotCXsgICAgICAgICAgICAgMTgwLAkgICAgTlVNQkVSLAkgMjMsICAtMSB9LAotCXsgICAgICAgICAgICAgMTgzLAkgICAgTlVNQkVSLAkgMjQsICAtMSB9LAotCXsgICAgICAgICAgICAgMTg2LAkgICAgTlVNQkVSLAkgMjUsICAtMSB9LAotCXsgICAgICAgICAgICAgMTg5LAkgICAgTlVNQkVSLAkgMjYsICAtMSB9LAotCXsgICAgICAgICAgICAgMTkyLAkgICAgTlVNQkVSLAkgMjcsICAtMSB9LAotCXsgICAgICAgICAgICAgMTk1LAkgICAgTlVNQkVSLAkgMjgsICAtMSB9LAotCXsgICAgICAgICAgICAgMTk4LAkgICAgTlVNQkVSLAkgMjksICAtMSB9LAotCXsgICAgICAgICAgICAgMjAxLAkgICAgTlVNQkVSLAkgMzAsICAtMSB9LAotCXsgICAgICAgICAgICAgMjA0LAkgICAgTlVNQkVSLAkgMzEsICAtMSB9LAotCXsgICAgICAgICAgICAgMjA3LAkgICAgTlVNQkVSLAkgMzIsICAtMSB9LAotCXsgICAgICAgICAgICAgMjEwLAkgICAgU1RSSU5HLAkgIDAsICAtMSB9LAotCXsgICAgICAgICAgICAgMjEzLAkgICAgU1RSSU5HLAkgIDEsICAtMSB9LAotCXsgICAgICAgICAgICAgMjE2LAkgICAgU1RSSU5HLAkgIDIsICAtMSB9LAotCXsgICAgICAgICAgICAgMjE5LAkgICAgU1RSSU5HLAkgIDMsICAtMSB9LAotCXsgICAgICAgICAgICAgMjIyLAkgICAgU1RSSU5HLAkgIDQsICAtMSB9LAotCXsgICAgICAgICAgICAgMjI1LAkgICAgU1RSSU5HLAkgIDUsICAtMSB9LAotCXsgICAgICAgICAgICAgMjI4LAkgICAgU1RSSU5HLAkgIDYsICAtMSB9LAotCXsgICAgICAgICAgICAgMjMxLAkgICAgU1RSSU5HLAkgIDcsICAtMSB9LAotCXsgICAgICAgICAgICAgMjM0LAkgICAgU1RSSU5HLAkgIDgsICAtMSB9LAotCXsgICAgICAgICAgICAgMjM3LAkgICAgU1RSSU5HLAkgIDksICAtMSB9LAotCXsgICAgICAgICAgICAgMjQwLAkgICAgU1RSSU5HLAkgMTAsICAtMSB9LAotCXsgICAgICAgICAgICAgMjQzLAkgICAgU1RSSU5HLAkgMTEsICAtMSB9LAotCXsgICAgICAgICAgICAgMjQ2LAkgICAgU1RSSU5HLAkgMTIsICAtMSB9LAotCXsgICAgICAgICAgICAgMjQ5LAkgICAgU1RSSU5HLAkgMTMsICAtMSB9LAotCXsgICAgICAgICAgICAgMjUyLAkgICAgU1RSSU5HLAkgMTQsICAtMSB9LAotCXsgICAgICAgICAgICAgMjU1LAkgICAgU1RSSU5HLAkgMTUsICAtMSB9LAotCXsgICAgICAgICAgICAgMjU4LAkgICAgU1RSSU5HLAkgMTYsICAtMSB9LAotCXsgICAgICAgICAgICAgMjYxLAkgICAgU1RSSU5HLAkgMTcsICAtMSB9LAotCXsgICAgICAgICAgICAgMjY0LAkgICAgU1RSSU5HLAkgMTgsICAtMSB9LAotCXsgICAgICAgICAgICAgMjY3LAkgICAgU1RSSU5HLAkgMTksICAtMSB9LAotCXsgICAgICAgICAgICAgMjcwLAkgICAgU1RSSU5HLAkgMjAsICAtMSB9LAotCXsgICAgICAgICAgICAgMjczLAkgICAgU1RSSU5HLAkgMjEsICAtMSB9LAotCXsgICAgICAgICAgICAgMjc2LAkgICAgU1RSSU5HLAkgMjIsICAtMSB9LAotCXsgICAgICAgICAgICAgMjc5LAkgICAgU1RSSU5HLAkgMjMsICAtMSB9LAotCXsgICAgICAgICAgICAgMjgyLAkgICAgU1RSSU5HLAkgMjQsICAtMSB9LAotCXsgICAgICAgICAgICAgMjg1LAkgICAgU1RSSU5HLAkgMjUsICAtMSB9LAotCXsgICAgICAgICAgICAgMjg4LAkgICAgU1RSSU5HLAkgMjYsICAtMSB9LAotCXsgICAgICAgICAgICAgMjkxLAkgICAgU1RSSU5HLAkgMjcsICAtMSB9LAotCXsgICAgICAgICAgICAgMjk0LAkgICAgU1RSSU5HLAkgMjgsICAtMSB9LAotCXsgICAgICAgICAgICAgMjk3LAkgICAgU1RSSU5HLAkgMjksICAtMSB9LAotCXsgICAgICAgICAgICAgMzAwLAkgICAgU1RSSU5HLAkgMzAsICAtMSB9LAotCXsgICAgICAgICAgICAgMzAzLAkgICAgU1RSSU5HLAkgMzEsICAtMSB9LAotCXsgICAgICAgICAgICAgMzA2LAkgICAgU1RSSU5HLAkgMzIsICAtMSB9LAotCXsgICAgICAgICAgICAgMzA5LAkgICAgU1RSSU5HLAkgMzMsICAtMSB9LAotCXsgICAgICAgICAgICAgMzEyLAkgICAgU1RSSU5HLAkgMzQsICAtMSB9LAotCXsgICAgICAgICAgICAgMzE1LAkgICAgU1RSSU5HLAkgMzUsICAtMSB9LAotCXsgICAgICAgICAgICAgMzE4LAkgICAgU1RSSU5HLAkgMzYsICAtMSB9LAotCXsgICAgICAgICAgICAgMzIxLAkgICAgU1RSSU5HLAkgMzcsICAtMSB9LAotCXsgICAgICAgICAgICAgMzI0LAkgICAgU1RSSU5HLAkgMzgsICAtMSB9LAotCXsgICAgICAgICAgICAgMzI3LAkgICAgU1RSSU5HLAkgMzksICAtMSB9LAotCXsgICAgICAgICAgICAgMzMwLAkgICAgU1RSSU5HLAkgNDAsICAtMSB9LAotCXsgICAgICAgICAgICAgMzMzLAkgICAgU1RSSU5HLAkgNDEsICAtMSB9LAotCXsgICAgICAgICAgICAgMzM2LAkgICAgU1RSSU5HLAkgNDIsICAtMSB9LAotCXsgICAgICAgICAgICAgMzM5LAkgICAgU1RSSU5HLAkgNDMsICAtMSB9LAotCXsgICAgICAgICAgICAgMzQyLAkgICAgU1RSSU5HLAkgNDQsICAtMSB9LAotCXsgICAgICAgICAgICAgMzQ1LAkgICAgU1RSSU5HLAkgNDUsICAtMSB9LAotCXsgICAgICAgICAgICAgMzQ4LAkgICAgU1RSSU5HLAkgNDYsICAtMSB9LAotCXsgICAgICAgICAgICAgMzUxLAkgICAgU1RSSU5HLAkgNDcsICAtMSB9LAotCXsgICAgICAgICAgICAgMzU0LAkgICAgU1RSSU5HLAkgNDgsIDEwMiB9LAotCXsgICAgICAgICAgICAgMzU3LAkgICAgU1RSSU5HLAkgNDksICAtMSB9LAotCXsgICAgICAgICAgICAgMzYwLAkgICAgU1RSSU5HLAkgNTAsICAtMSB9LAotCXsgICAgICAgICAgICAgMzYzLAkgICAgU1RSSU5HLAkgNTEsICAtMSB9LAotCXsgICAgICAgICAgICAgMzY2LAkgICAgU1RSSU5HLAkgNTIsICAtMSB9LAotCXsgICAgICAgICAgICAgMzY5LAkgICAgU1RSSU5HLAkgNTMsICAtMSB9LAotCXsgICAgICAgICAgICAgMzcyLAkgICAgU1RSSU5HLAkgNTQsICAtMSB9LAotCXsgICAgICAgICAgICAgMzc1LAkgICAgU1RSSU5HLAkgNTUsICAtMSB9LAotCXsgICAgICAgICAgICAgMzc4LAkgICAgU1RSSU5HLAkgNTYsICAtMSB9LAotCXsgICAgICAgICAgICAgMzgxLAkgICAgU1RSSU5HLAkgNTcsICAtMSB9LAotCXsgICAgICAgICAgICAgMzg0LAkgICAgU1RSSU5HLAkgNTgsICAtMSB9LAotCXsgICAgICAgICAgICAgMzg3LAkgICAgU1RSSU5HLAkgNTksICAtMSB9LAotCXsgICAgICAgICAgICAgMzkwLAkgICAgU1RSSU5HLAkgNjAsICAtMSB9LAotCXsgICAgICAgICAgICAgMzkzLAkgICAgU1RSSU5HLAkgNjEsICAtMSB9LAotCXsgICAgICAgICAgICAgMzk2LAkgICAgU1RSSU5HLAkgNjIsICAtMSB9LAotCXsgICAgICAgICAgICAgMzk5LAkgICAgU1RSSU5HLAkgNjMsICAtMSB9LAotCXsgICAgICAgICAgICAgNDAyLAkgICAgU1RSSU5HLAkgNjQsICAtMSB9LAotCXsgICAgICAgICAgICAgNDA1LAkgICAgU1RSSU5HLAkgNjUsICAtMSB9LAotCXsgICAgICAgICAgICAgNDA4LAkgICAgU1RSSU5HLAkgNjYsICAtMSB9LAotCXsgICAgICAgICAgICAgNDExLAkgICAgU1RSSU5HLAkgNjcsICAtMSB9LAotCXsgICAgICAgICAgICAgNDE0LAkgICAgU1RSSU5HLAkgNjgsICAtMSB9LAotCXsgICAgICAgICAgICAgNDE3LAkgICAgU1RSSU5HLAkgNjksICAtMSB9LAotCXsgICAgICAgICAgICAgNDIwLAkgICAgU1RSSU5HLAkgNzAsICAtMSB9LAotCXsgICAgICAgICAgICAgNDIzLAkgICAgU1RSSU5HLAkgNzEsICAtMSB9LAotCXsgICAgICAgICAgICAgNDI2LAkgICAgU1RSSU5HLAkgNzIsICAtMSB9LAotCXsgICAgICAgICAgICAgNDI5LAkgICAgU1RSSU5HLAkgNzMsICAtMSB9LAotCXsgICAgICAgICAgICAgNDMyLAkgICAgU1RSSU5HLAkgNzQsICAtMSB9LAotCXsgICAgICAgICAgICAgNDM1LAkgICAgU1RSSU5HLAkgNzUsICAxNSB9LAotCXsgICAgICAgICAgICAgNDM4LAkgICAgU1RSSU5HLAkgNzYsICAtMSB9LAotCXsgICAgICAgICAgICAgNDQxLAkgICAgU1RSSU5HLAkgNzcsICAtMSB9LAotCXsgICAgICAgICAgICAgNDQ0LAkgICAgU1RSSU5HLAkgNzgsICAtMSB9LAotCXsgICAgICAgICAgICAgNDQ3LAkgICAgU1RSSU5HLAkgNzksICAtMSB9LAotCXsgICAgICAgICAgICAgNDUwLAkgICAgU1RSSU5HLAkgODAsICAtMSB9LAotCXsgICAgICAgICAgICAgNDUzLAkgICAgU1RSSU5HLAkgODEsICAtMSB9LAotCXsgICAgICAgICAgICAgNDU2LAkgICAgU1RSSU5HLAkgODIsICAtMSB9LAotCXsgICAgICAgICAgICAgNDU5LAkgICAgU1RSSU5HLAkgODMsICAtMSB9LAotCXsgICAgICAgICAgICAgNDYyLAkgICAgU1RSSU5HLAkgODQsICAtMSB9LAotCXsgICAgICAgICAgICAgNDY1LAkgICAgU1RSSU5HLAkgODUsICAtMSB9LAotCXsgICAgICAgICAgICAgNDY4LAkgICAgU1RSSU5HLAkgODYsICAtMSB9LAotCXsgICAgICAgICAgICAgNDcxLAkgICAgU1RSSU5HLAkgODcsICAtMSB9LAotCXsgICAgICAgICAgICAgNDc0LAkgICAgU1RSSU5HLAkgODgsICAtMSB9LAotCXsgICAgICAgICAgICAgNDc3LAkgICAgU1RSSU5HLAkgODksICAtMSB9LAotCXsgICAgICAgICAgICAgNDgwLAkgICAgU1RSSU5HLAkgOTAsICAtMSB9LAotCXsgICAgICAgICAgICAgNDgzLAkgICAgU1RSSU5HLAkgOTEsICAtMSB9LAotCXsgICAgICAgICAgICAgNDg2LAkgICAgU1RSSU5HLAkgOTIsICAzNSB9LAotCXsgICAgICAgICAgICAgNDg5LAkgICAgU1RSSU5HLAkgOTMsICAtMSB9LAotCXsgICAgICAgICAgICAgNDkyLAkgICAgU1RSSU5HLAkgOTQsICAtMSB9LAotCXsgICAgICAgICAgICAgNDk1LAkgICAgU1RSSU5HLAkgOTUsICAtMSB9LAotCXsgICAgICAgICAgICAgNDk4LAkgICAgU1RSSU5HLAkgOTYsICAtMSB9LAotCXsgICAgICAgICAgICAgNTAxLAkgICAgU1RSSU5HLAkgOTcsICAtMSB9LAotCXsgICAgICAgICAgICAgNTA0LAkgICAgU1RSSU5HLAkgOTgsICAtMSB9LAotCXsgICAgICAgICAgICAgNTA3LAkgICAgU1RSSU5HLAkgOTksICAtMSB9LAotCXsgICAgICAgICAgICAgNTEwLAkgICAgU1RSSU5HLAkxMDAsICAtMSB9LAotCXsgICAgICAgICAgICAgNTEzLAkgICAgU1RSSU5HLAkxMDEsICAtMSB9LAotCXsgICAgICAgICAgICAgNTE2LAkgICAgU1RSSU5HLAkxMDIsIDEyMCB9LAotCXsgICAgICAgICAgICAgNTE5LAkgICAgU1RSSU5HLAkxMDMsICAtMSB9LAotCXsgICAgICAgICAgICAgNTIyLAkgICAgU1RSSU5HLAkxMDQsICAtMSB9LAotCXsgICAgICAgICAgICAgNTI1LAkgICAgU1RSSU5HLAkxMDUsICAtMSB9LAotCXsgICAgICAgICAgICAgNTI4LAkgICAgU1RSSU5HLAkxMDYsICAtMSB9LAotCXsgICAgICAgICAgICAgNTMxLAkgICAgU1RSSU5HLAkxMDcsICAtMSB9LAotCXsgICAgICAgICAgICAgNTM0LAkgICAgU1RSSU5HLAkxMDgsICAtMSB9LAotCXsgICAgICAgICAgICAgNTM3LAkgICAgU1RSSU5HLAkxMDksICAtMSB9LAotCXsgICAgICAgICAgICAgNTQwLAkgICAgU1RSSU5HLAkxMTAsICAtMSB9LAotCXsgICAgICAgICAgICAgNTQzLAkgICAgU1RSSU5HLAkxMTEsICAtMSB9LAotCXsgICAgICAgICAgICAgNTQ2LAkgICAgU1RSSU5HLAkxMTIsIDExMSB9LAotCXsgICAgICAgICAgICAgNTQ5LAkgICAgU1RSSU5HLAkxMTMsICAtMSB9LAotCXsgICAgICAgICAgICAgNTUyLAkgICAgU1RSSU5HLAkxMTQsICAtMSB9LAotCXsgICAgICAgICAgICAgNTU1LAkgICAgU1RSSU5HLAkxMTUsIDE2MSB9LAotCXsgICAgICAgICAgICAgNTU4LAkgICAgU1RSSU5HLAkxMTYsIDE2MyB9LAotCXsgICAgICAgICAgICAgNTYxLAkgICAgU1RSSU5HLAkxMTcsICAtMSB9LAotCXsgICAgICAgICAgICAgNTY0LAkgICAgU1RSSU5HLAkxMTgsIDE3MCB9LAotCXsgICAgICAgICAgICAgNTY3LAkgICAgU1RSSU5HLAkxMTksICAtMSB9LAotCXsgICAgICAgICAgICAgNTcwLAkgICAgU1RSSU5HLAkxMjAsIDE2NiB9LAotCXsgICAgICAgICAgICAgNTczLAkgICAgU1RSSU5HLAkxMjEsICAtMSB9LAotCXsgICAgICAgICAgICAgNTc2LAkgICAgU1RSSU5HLAkxMjIsICAtMSB9LAotCXsgICAgICAgICAgICAgNTc5LAkgICAgU1RSSU5HLAkxMjMsICAtMSB9LAotCXsgICAgICAgICAgICAgNTgyLAkgICAgU1RSSU5HLAkxMjQsICAtMSB9LAotCXsgICAgICAgICAgICAgNTg1LAkgICAgU1RSSU5HLAkxMjUsICAtMSB9LAotCXsgICAgICAgICAgICAgNTg4LAkgICAgU1RSSU5HLAkxMjYsICAtMSB9LAotCXsgICAgICAgICAgICAgNTkxLAkgICAgU1RSSU5HLAkxMjcsICAtMSB9LAotCXsgICAgICAgICAgICAgNTk0LAkgICAgU1RSSU5HLAkxMjgsICAtMSB9LAotCXsgICAgICAgICAgICAgNTk3LAkgICAgU1RSSU5HLAkxMjksICAtMSB9LAotCXsgICAgICAgICAgICAgNjAwLAkgICAgU1RSSU5HLAkxMzAsICAtMSB9LAotCXsgICAgICAgICAgICAgNjAzLAkgICAgU1RSSU5HLAkxMzEsICAtMSB9LAotCXsgICAgICAgICAgICAgNjA2LAkgICAgU1RSSU5HLAkxMzIsICAtMSB9LAotCXsgICAgICAgICAgICAgNjA5LAkgICAgU1RSSU5HLAkxMzMsICAtMSB9LAotCXsgICAgICAgICAgICAgNjEyLAkgICAgU1RSSU5HLAkxMzQsICAtMSB9LAotCXsgICAgICAgICAgICAgNjE1LAkgICAgU1RSSU5HLAkxMzUsICAtMSB9LAotCXsgICAgICAgICAgICAgNjE4LAkgICAgU1RSSU5HLAkxMzYsICAtMSB9LAotCXsgICAgICAgICAgICAgNjIxLAkgICAgU1RSSU5HLAkxMzcsICAtMSB9LAotCXsgICAgICAgICAgICAgNjI0LAkgICAgU1RSSU5HLAkxMzgsICAtMSB9LAotCXsgICAgICAgICAgICAgNjI3LAkgICAgU1RSSU5HLAkxMzksICAtMSB9LAotCXsgICAgICAgICAgICAgNjMwLAkgICAgU1RSSU5HLAkxNDAsICAtMSB9LAotCXsgICAgICAgICAgICAgNjMzLAkgICAgU1RSSU5HLAkxNDEsICAtMSB9LAotCXsgICAgICAgICAgICAgNjM2LAkgICAgU1RSSU5HLAkxNDIsICAtMSB9LAotCXsgICAgICAgICAgICAgNjM5LAkgICAgU1RSSU5HLAkxNDMsICAtMSB9LAotCXsgICAgICAgICAgICAgNjQyLAkgICAgU1RSSU5HLAkxNDQsICAtMSB9LAotCXsgICAgICAgICAgICAgNjQ1LAkgICAgU1RSSU5HLAkxNDUsICAzNyB9LAotCXsgICAgICAgICAgICAgNjQ4LAkgICAgU1RSSU5HLAkxNDYsICAtMSB9LAotCXsgICAgICAgICAgICAgNjUxLAkgICAgU1RSSU5HLAkxNDcsIDE2NSB9LAotCXsgICAgICAgICAgICAgNjU0LAkgICAgU1RSSU5HLAkxNDgsICAtMSB9LAotCXsgICAgICAgICAgICAgNjU3LAkgICAgU1RSSU5HLAkxNDksIDExNyB9LAotCXsgICAgICAgICAgICAgNjYwLAkgICAgU1RSSU5HLAkxNTAsICAxNiB9LAotCXsgICAgICAgICAgICAgNjYzLAkgICAgU1RSSU5HLAkxNTEsICAtMSB9LAotCXsgICAgICAgICAgICAgNjY2LAkgICAgU1RSSU5HLAkxNTIsICAtMSB9LAotCXsgICAgICAgICAgICAgNjY5LAkgICAgU1RSSU5HLAkxNTMsICAtMSB9LAotCXsgICAgICAgICAgICAgNjcyLAkgICAgU1RSSU5HLAkxNTQsIDEyNiB9LAotCXsgICAgICAgICAgICAgNjc1LAkgICAgU1RSSU5HLAkxNTUsICAtMSB9LAotCXsgICAgICAgICAgICAgNjc4LAkgICAgU1RSSU5HLAkxNTYsICAtMSB9LAotCXsgICAgICAgICAgICAgNjgxLAkgICAgU1RSSU5HLAkxNTcsICAtMSB9LAotCXsgICAgICAgICAgICAgNjg0LAkgICAgU1RSSU5HLAkxNTgsICAtMSB9LAotCXsgICAgICAgICAgICAgNjg3LAkgICAgU1RSSU5HLAkxNTksICAtMSB9LAotCXsgICAgICAgICAgICAgNjkwLAkgICAgU1RSSU5HLAkxNjAsICAtMSB9LAotCXsgICAgICAgICAgICAgNjkzLAkgICAgU1RSSU5HLAkxNjEsICAtMSB9LAotCXsgICAgICAgICAgICAgNjk2LAkgICAgU1RSSU5HLAkxNjIsICAtMSB9LAotCXsgICAgICAgICAgICAgNjk5LAkgICAgU1RSSU5HLAkxNjMsICAtMSB9LAotCXsgICAgICAgICAgICAgNzAyLAkgICAgU1RSSU5HLAkxNjQsIDE4MyB9LAotCXsgICAgICAgICAgICAgNzA1LAkgICAgU1RSSU5HLAkxNjUsICAtMSB9LAotCXsgICAgICAgICAgICAgNzA4LAkgICAgU1RSSU5HLAkxNjYsICAtMSB9LAotCXsgICAgICAgICAgICAgNzExLAkgICAgU1RSSU5HLAkxNjcsIDExNiB9LAotCXsgICAgICAgICAgICAgNzE0LAkgICAgU1RSSU5HLAkxNjgsICAtMSB9LAotCXsgICAgICAgICAgICAgNzE3LAkgICAgU1RSSU5HLAkxNjksICA5NyB9LAotCXsgICAgICAgICAgICAgNzIwLAkgICAgU1RSSU5HLAkxNzAsIDEwOSB9LAotCXsgICAgICAgICAgICAgNzIzLAkgICAgU1RSSU5HLAkxNzEsICAtMSB9LAotCXsgICAgICAgICAgICAgNzI2LAkgICAgU1RSSU5HLAkxNzIsICAtMSB9LAotCXsgICAgICAgICAgICAgNzI5LAkgICAgU1RSSU5HLAkxNzMsIDEwMCB9LAotCXsgICAgICAgICAgICAgNzMyLAkgICAgU1RSSU5HLAkxNzQsICAxMyB9LAotCXsgICAgICAgICAgICAgNzM1LAkgICAgU1RSSU5HLAkxNzUsICAtMSB9LAotCXsgICAgICAgICAgICAgNzM4LAkgICAgU1RSSU5HLAkxNzYsIDExOCB9LAotCXsgICAgICAgICAgICAgNzQxLAkgICAgU1RSSU5HLAkxNzcsICA5NiB9LAotCXsgICAgICAgICAgICAgNzQ0LAkgICAgU1RSSU5HLAkxNzgsICAtMSB9LAotCXsgICAgICAgICAgICAgNzQ3LAkgICAgU1RSSU5HLAkxNzksICA4NyB9LAotCXsgICAgICAgICAgICAgNzUwLAkgICAgU1RSSU5HLAkxODAsICAtMSB9LAotCXsgICAgICAgICAgICAgNzUzLAkgICAgU1RSSU5HLAkxODEsICAtMSB9LAotCXsgICAgICAgICAgICAgNzU2LAkgICAgU1RSSU5HLAkxODIsICAtMSB9LAotCXsgICAgICAgICAgICAgNzU5LAkgICAgU1RSSU5HLAkxODMsICAtMSB9LAotCXsgICAgICAgICAgICAgNzYyLAkgICAgU1RSSU5HLAkxODQsICAtMSB9LAotCXsgICAgICAgICAgICAgNzY1LAkgICAgU1RSSU5HLAkxODUsICAtMSB9LAotCXsgICAgICAgICAgICAgNzY4LAkgICAgU1RSSU5HLAkxODYsICAtMSB9LAotCXsgICAgICAgICAgICAgNzcxLAkgICAgU1RSSU5HLAkxODcsICAtMSB9LAotCXsgICAgICAgICAgICAgNzc0LAkgICAgU1RSSU5HLAkxODgsIDE5NiB9LAotCXsgICAgICAgICAgICAgNzc3LAkgICAgU1RSSU5HLAkxODksICAtMSB9LAotCXsgICAgICAgICAgICAgNzgwLAkgICAgU1RSSU5HLAkxOTAsICAtMSB9LAotCXsgICAgICAgICAgICAgNzgzLAkgICAgU1RSSU5HLAkxOTEsIDE5NSB9LAotCXsgICAgICAgICAgICAgNzg2LAkgICAgU1RSSU5HLAkxOTIsICAtMSB9LAotCXsgICAgICAgICAgICAgNzg5LAkgICAgU1RSSU5HLAkxOTMsICAtMSB9LAotCXsgICAgICAgICAgICAgNzkyLAkgICAgU1RSSU5HLAkxOTQsICAtMSB9LAotCXsgICAgICAgICAgICAgNzk1LAkgICAgU1RSSU5HLAkxOTUsICAtMSB9LAotCXsgICAgICAgICAgICAgNzk4LAkgICAgU1RSSU5HLAkxOTYsICAtMSB9LAotCXsgICAgICAgICAgICAgODAxLAkgICAgU1RSSU5HLAkxOTcsICAtMSB9LAotCXsgICAgICAgICAgICAgODA0LAkgICAgU1RSSU5HLAkxOTgsICAtMSB9LAotCXsgICAgICAgICAgICAgODA3LAkgICAgU1RSSU5HLAkxOTksIDEzMSB9LAotCXsgICAgICAgICAgICAgODEwLAkgICAgU1RSSU5HLAkyMDAsIDE1OCB9LAotCXsgICAgICAgICAgICAgODEzLAkgICAgU1RSSU5HLAkyMDEsICAtMSB9LAotCXsgICAgICAgICAgICAgODE2LAkgICAgU1RSSU5HLAkyMDIsICAtMSB9LAotCXsgICAgICAgICAgICAgODE5LAkgICAgU1RSSU5HLAkyMDMsICAtMSB9LAotCXsgICAgICAgICAgICAgODIyLAkgICAgU1RSSU5HLAkyMDQsICAtMSB9LAotCXsgICAgICAgICAgICAgODI1LAkgICAgU1RSSU5HLAkyMDUsICAtMSB9LAotCXsgICAgICAgICAgICAgODI4LAkgICAgU1RSSU5HLAkyMDYsICAtMSB9LAotCXsgICAgICAgICAgICAgODMxLAkgICAgU1RSSU5HLAkyMDcsICAtMSB9LAotCXsgICAgICAgICAgICAgODM0LAkgICAgU1RSSU5HLAkyMDgsICAtMSB9LAotCXsgICAgICAgICAgICAgODM3LAkgICAgU1RSSU5HLAkyMDksICAtMSB9LAotCXsgICAgICAgICAgICAgODQwLAkgICAgU1RSSU5HLAkyMTAsICAtMSB9LAotCXsgICAgICAgICAgICAgODQzLAkgICAgU1RSSU5HLAkyMTEsICAtMSB9LAotCXsgICAgICAgICAgICAgODQ2LAkgICAgU1RSSU5HLAkyMTIsIDEyMiB9LAotCXsgICAgICAgICAgICAgODQ5LAkgICAgU1RSSU5HLAkyMTMsICAtMSB9LAotCXsgICAgICAgICAgICAgODUyLAkgICAgU1RSSU5HLAkyMTQsICAtMSB9LAotCXsgICAgICAgICAgICAgODU1LAkgICAgU1RSSU5HLAkyMTUsICAtMSB9LAotCXsgICAgICAgICAgICAgODU4LAkgICAgU1RSSU5HLAkyMTYsICAtMSB9LAotCXsgICAgICAgICAgICAgODYxLAkgICAgU1RSSU5HLAkyMTcsICA0NiB9LAotCXsgICAgICAgICAgICAgODY0LAkgICAgU1RSSU5HLAkyMTgsICAzOSB9LAotCXsgICAgICAgICAgICAgODY3LAkgICAgU1RSSU5HLAkyMTksICAtMSB9LAotCXsgICAgICAgICAgICAgODcwLAkgICAgU1RSSU5HLAkyMjAsICAtMSB9LAotCXsgICAgICAgICAgICAgODczLAkgICAgU1RSSU5HLAkyMjEsICA4OCB9LAotCXsgICAgICAgICAgICAgODc2LAkgICAgU1RSSU5HLAkyMjIsICA0MCB9LAotCXsgICAgICAgICAgICAgODc5LAkgICAgU1RSSU5HLAkyMjMsICAtMSB9LAotCXsgICAgICAgICAgICAgODgyLAkgICAgU1RSSU5HLAkyMjQsICAtMSB9LAotCXsgICAgICAgICAgICAgODg1LAkgICAgU1RSSU5HLAkyMjUsICA0NyB9LAotCXsgICAgICAgICAgICAgODg4LAkgICAgU1RSSU5HLAkyMjYsICAtMSB9LAotCXsgICAgICAgICAgICAgODkxLAkgICAgU1RSSU5HLAkyMjcsICAtMSB9LAotCXsgICAgICAgICAgICAgODk0LAkgICAgU1RSSU5HLAkyMjgsICAtMSB9LAotCXsgICAgICAgICAgICAgODk3LAkgICAgU1RSSU5HLAkyMjksICAtMSB9LAotCXsgICAgICAgICAgICAgOTAwLAkgICAgU1RSSU5HLAkyMzAsICA1MyB9LAotCXsgICAgICAgICAgICAgOTAzLAkgICAgU1RSSU5HLAkyMzEsICA1NCB9LAotCXsgICAgICAgICAgICAgOTA2LAkgICAgU1RSSU5HLAkyMzIsICA1NSB9LAotCXsgICAgICAgICAgICAgOTA5LAkgICAgU1RSSU5HLAkyMzMsICA1NiB9LAotCXsgICAgICAgICAgICAgOTEyLAkgICAgU1RSSU5HLAkyMzQsICA1NyB9LAotCXsgICAgICAgICAgICAgOTE1LAkgICAgU1RSSU5HLAkyMzUsICA1OCB9LAotCXsgICAgICAgICAgICAgOTE4LAkgICAgU1RSSU5HLAkyMzYsICA1OSB9LAotCXsgICAgICAgICAgICAgOTIxLAkgICAgU1RSSU5HLAkyMzcsICA2MCB9LAotCXsgICAgICAgICAgICAgOTI0LAkgICAgU1RSSU5HLAkyMzgsICA2MSB9LAotCXsgICAgICAgICAgICAgOTI3LAkgICAgU1RSSU5HLAkyMzksICA2MiB9LAotCXsgICAgICAgICAgICAgOTMwLAkgICAgU1RSSU5HLAkyNDAsICA2MyB9LAotCXsgICAgICAgICAgICAgOTMzLAkgICAgU1RSSU5HLAkyNDEsICA2NCB9LAotCXsgICAgICAgICAgICAgOTM2LAkgICAgU1RSSU5HLAkyNDIsICA2NSB9LAotCXsgICAgICAgICAgICAgOTM5LAkgICAgU1RSSU5HLAkyNDMsICA2NiB9LAotCXsgICAgICAgICAgICAgOTQyLAkgICAgU1RSSU5HLAkyNDQsICA2OCB9LAotCXsgICAgICAgICAgICAgOTQ1LAkgICAgU1RSSU5HLAkyNDUsICA2OSB9LAotCXsgICAgICAgICAgICAgOTQ4LAkgICAgU1RSSU5HLAkyNDYsICAtMSB9LAotCXsgICAgICAgICAgICAgOTUxLAkgICAgU1RSSU5HLAkyNDcsICAtMSB9LAotCXsgICAgICAgICAgICAgOTU0LAkgICAgU1RSSU5HLAkyNDgsICAtMSB9LAotCXsgICAgICAgICAgICAgOTU3LAkgICAgU1RSSU5HLAkyNDksICAtMSB9LAotCXsgICAgICAgICAgICAgOTYwLAkgICAgU1RSSU5HLAkyNTAsICAtMSB9LAotCXsgICAgICAgICAgICAgOTYzLAkgICAgU1RSSU5HLAkyNTEsICAtMSB9LAotCXsgICAgICAgICAgICAgOTY2LAkgICAgU1RSSU5HLAkyNTIsICAtMSB9LAotCXsgICAgICAgICAgICAgOTY5LAkgICAgU1RSSU5HLAkyNTMsICAtMSB9LAotCXsgICAgICAgICAgICAgOTcyLAkgICAgU1RSSU5HLAkyNTQsICAtMSB9LAotCXsgICAgICAgICAgICAgOTc1LAkgICAgU1RSSU5HLAkyNTUsICAtMSB9LAotCXsgICAgICAgICAgICAgOTc4LAkgICAgU1RSSU5HLAkyNTYsICAtMSB9LAotCXsgICAgICAgICAgICAgOTgxLAkgICAgU1RSSU5HLAkyNTcsICAgNyB9LAotCXsgICAgICAgICAgICAgOTg0LAkgICAgU1RSSU5HLAkyNTgsICA5NCB9LAotCXsgICAgICAgICAgICAgOTg3LAkgICAgU1RSSU5HLAkyNTksICAtMSB9LAotCXsgICAgICAgICAgICAgOTkwLAkgICAgU1RSSU5HLAkyNjAsICAtMSB9LAotCXsgICAgICAgICAgICAgOTkzLAkgICAgU1RSSU5HLAkyNjEsICAtMSB9LAotCXsgICAgICAgICAgICAgOTk2LAkgICAgU1RSSU5HLAkyNjIsICAtMSB9LAotCXsgICAgICAgICAgICAgOTk5LAkgICAgU1RSSU5HLAkyNjMsICAtMSB9LAotCXsgICAgICAgICAgICAxMDAyLAkgICAgU1RSSU5HLAkyNjQsICAtMSB9LAotCXsgICAgICAgICAgICAxMDA1LAkgICAgU1RSSU5HLAkyNjUsIDE4NCB9LAotCXsgICAgICAgICAgICAxMDA4LAkgICAgU1RSSU5HLAkyNjYsICAyOSB9LAotCXsgICAgICAgICAgICAxMDExLAkgICAgU1RSSU5HLAkyNjcsICAtMSB9LAotCXsgICAgICAgICAgICAxMDE0LAkgICAgU1RSSU5HLAkyNjgsICAtMSB9LAotCXsgICAgICAgICAgICAxMDE3LAkgICAgU1RSSU5HLAkyNjksICAtMSB9LAotCXsgICAgICAgICAgICAxMDIwLAkgICAgU1RSSU5HLAkyNzAsICAtMSB9LAotCXsgICAgICAgICAgICAxMDIzLAkgICAgU1RSSU5HLAkyNzEsICAtMSB9LAotCXsgICAgICAgICAgICAxMDI2LAkgICAgU1RSSU5HLAkyNzIsICAtMSB9LAotCXsgICAgICAgICAgICAxMDI5LAkgICAgU1RSSU5HLAkyNzMsIDI1NyB9LAotCXsgICAgICAgICAgICAxMDMyLAkgICAgU1RSSU5HLAkyNzQsICAtMSB9LAotCXsgICAgICAgICAgICAxMDM1LAkgICAgU1RSSU5HLAkyNzUsICAtMSB9LAotCXsgICAgICAgICAgICAxMDM4LAkgICAgU1RSSU5HLAkyNzYsICAtMSB9LAotCXsgICAgICAgICAgICAxMDQxLAkgICAgU1RSSU5HLAkyNzcsICAgNCB9LAotCXsgICAgICAgICAgICAxMDQ0LAkgICAgU1RSSU5HLAkyNzgsICAtMSB9LAotCXsgICAgICAgICAgICAxMDQ3LAkgICAgU1RSSU5HLAkyNzksICAtMSB9LAotCXsgICAgICAgICAgICAxMDUwLAkgICAgU1RSSU5HLAkyODAsICAtMSB9LAotCXsgICAgICAgICAgICAxMDUzLAkgICAgU1RSSU5HLAkyODEsICAtMSB9LAotCXsgICAgICAgICAgICAxMDU2LAkgICAgU1RSSU5HLAkyODIsICAtMSB9LAotCXsgICAgICAgICAgICAxMDU5LAkgICAgU1RSSU5HLAkyODMsICAtMSB9LAotCXsgICAgICAgICAgICAxMDYyLAkgICAgU1RSSU5HLAkyODQsIDIyOSB9LAotCXsgICAgICAgICAgICAxMDY1LAkgICAgU1RSSU5HLAkyODUsICAtMSB9LAotCXsgICAgICAgICAgICAxMDY4LAkgICAgU1RSSU5HLAkyODYsICAtMSB9LAotCXsgICAgICAgICAgICAxMDcxLAkgICAgU1RSSU5HLAkyODcsICAtMSB9LAotCXsgICAgICAgICAgICAxMDc0LAkgICAgU1RSSU5HLAkyODgsICAtMSB9LAotCXsgICAgICAgICAgICAxMDc3LAkgICAgU1RSSU5HLAkyODksICAtMSB9LAotCXsgICAgICAgICAgICAxMDgwLAkgICAgU1RSSU5HLAkyOTAsICAtMSB9LAotCXsgICAgICAgICAgICAxMDgzLAkgICAgU1RSSU5HLAkyOTEsICAtMSB9LAotCXsgICAgICAgICAgICAxMDg2LAkgICAgU1RSSU5HLAkyOTIsICAtMSB9LAotCXsgICAgICAgICAgICAxMDg5LAkgICAgU1RSSU5HLAkyOTMsICAtMSB9LAotCXsgICAgICAgICAgICAxMDkyLAkgICAgU1RSSU5HLAkyOTQsICAtMSB9LAotCXsgICAgICAgICAgICAxMDk1LAkgICAgU1RSSU5HLAkyOTUsICAtMSB9LAotCXsgICAgICAgICAgICAxMDk4LAkgICAgU1RSSU5HLAkyOTYsICAtMSB9LAotCXsgICAgICAgICAgICAxMTAxLAkgICAgU1RSSU5HLAkyOTcsIDE0MiB9LAotCXsgICAgICAgICAgICAxMTA0LAkgICAgU1RSSU5HLAkyOTgsICAtMSB9LAotCXsgICAgICAgICAgICAxMTA3LAkgICAgU1RSSU5HLAkyOTksICAtMSB9LAotCXsgICAgICAgICAgICAxMTEwLAkgICAgU1RSSU5HLAkzMDAsIDE0OSB9LAotCXsgICAgICAgICAgICAxMTEzLAkgICAgU1RSSU5HLAkzMDEsICAtMSB9LAotCXsgICAgICAgICAgICAxMTE2LAkgICAgU1RSSU5HLAkzMDIsICAtMSB9LAotCXsgICAgICAgICAgICAxMTE5LAkgICAgU1RSSU5HLAkzMDMsICAtMSB9LAotCXsgICAgICAgICAgICAxMTIyLAkgICAgU1RSSU5HLAkzMDQsICAtMSB9LAotCXsgICAgICAgICAgICAxMTI1LAkgICAgU1RSSU5HLAkzMDUsICAtMSB9LAotCXsgICAgICAgICAgICAxMTI4LAkgICAgU1RSSU5HLAkzMDYsICAtMSB9LAotCXsgICAgICAgICAgICAxMTMxLAkgICAgU1RSSU5HLAkzMDcsICAtMSB9LAotCXsgICAgICAgICAgICAxMTM0LAkgICAgU1RSSU5HLAkzMDgsICAtMSB9LAotCXsgICAgICAgICAgICAxMTM3LAkgICAgU1RSSU5HLAkzMDksICA0OCB9LAotCXsgICAgICAgICAgICAxMTQwLAkgICAgU1RSSU5HLAkzMTAsIDI0NyB9LAotCXsgICAgICAgICAgICAxMTQzLAkgICAgU1RSSU5HLAkzMTEsIDIzOCB9LAotCXsgICAgICAgICAgICAxMTQ2LAkgICAgU1RSSU5HLAkzMTIsIDIzOSB9LAotCXsgICAgICAgICAgICAxMTQ5LAkgICAgU1RSSU5HLAkzMTMsIDI0MCB9LAotCXsgICAgICAgICAgICAxMTUyLAkgICAgU1RSSU5HLAkzMTQsIDI0MSB9LAotCXsgICAgICAgICAgICAxMTU1LAkgICAgU1RSSU5HLAkzMTUsIDI0MiB9LAotCXsgICAgICAgICAgICAxMTU4LAkgICAgU1RSSU5HLAkzMTYsIDI0MyB9LAotCXsgICAgICAgICAgICAxMTYxLAkgICAgU1RSSU5HLAkzMTcsIDI0NCB9LAotCXsgICAgICAgICAgICAxMTY0LAkgICAgU1RSSU5HLAkzMTgsIDI0NSB9LAotCXsgICAgICAgICAgICAxMTY3LAkgICAgU1RSSU5HLAkzMTksIDI0NiB9LAotCXsgICAgICAgICAgICAxMTcwLAkgICAgU1RSSU5HLAkzMjAsICAtMSB9LAotCXsgICAgICAgICAgICAxMTczLAkgICAgU1RSSU5HLAkzMjEsIDE3MiB9LAotCXsgICAgICAgICAgICAxMTc2LAkgICAgU1RSSU5HLAkzMjIsICAtMSB9LAotCXsgICAgICAgICAgICAxMTc5LAkgICAgU1RSSU5HLAkzMjMsIDE3MSB9LAotCXsgICAgICAgICAgICAxMTgyLAkgICAgU1RSSU5HLAkzMjQsIDEwMyB9LAotCXsgICAgICAgICAgICAxMTg1LAkgICAgU1RSSU5HLAkzMjUsICAtMSB9LAotCXsgICAgICAgICAgICAxMTg4LAkgICAgU1RSSU5HLAkzMjYsIDEwNCB9LAotCXsgICAgICAgICAgICAxMTkxLAkgICAgU1RSSU5HLAkzMjcsICAxNCB9LAotCXsgICAgICAgICAgICAxMTk0LAkgICAgU1RSSU5HLAkzMjgsICAtMSB9LAotCXsgICAgICAgICAgICAxMTk3LAkgICAgU1RSSU5HLAkzMjksICAtMSB9LAotCXsgICAgICAgICAgICAxMjAwLAkgICAgU1RSSU5HLAkzMzAsICAtMSB9LAotCXsgICAgICAgICAgICAxMjAzLAkgICAgU1RSSU5HLAkzMzEsICAtMSB9LAotCXsgICAgICAgICAgICAxMjA2LAkgICAgU1RSSU5HLAkzMzIsICAtMSB9LAotCXsgICAgICAgICAgICAxMjA5LAkgICAgU1RSSU5HLAkzMzMsICAtMSB9LAotCXsgICAgICAgICAgICAxMjEyLAkgICAgU1RSSU5HLAkzMzQsICAtMSB9LAotCXsgICAgICAgICAgICAxMjE1LAkgICAgU1RSSU5HLAkzMzUsICAtMSB9LAotCXsgICAgICAgICAgICAxMjE4LAkgICAgU1RSSU5HLAkzMzYsICAtMSB9LAotCXsgICAgICAgICAgICAxMjIxLAkgICAgU1RSSU5HLAkzMzcsICAtMSB9LAotCXsgICAgICAgICAgICAxMjI0LAkgICAgU1RSSU5HLAkzMzgsICAtMSB9LAotCXsgICAgICAgICAgICAxMjI3LAkgICAgU1RSSU5HLAkzMzksICAtMSB9LAotCXsgICAgICAgICAgICAxMjMwLAkgICAgU1RSSU5HLAkzNDAsICAtMSB9LAotCXsgICAgICAgICAgICAxMjMzLAkgICAgU1RSSU5HLAkzNDEsICAtMSB9LAotCXsgICAgICAgICAgICAxMjM2LAkgICAgU1RSSU5HLAkzNDIsICAtMSB9LAotCXsgICAgICAgICAgICAxMjM5LAkgICAgU1RSSU5HLAkzNDMsICAtMSB9LAotCXsgICAgICAgICAgICAxMjQyLAkgICAgU1RSSU5HLAkzNDQsIDIwOCB9LAotCXsgICAgICAgICAgICAxMjQ1LAkgICAgU1RSSU5HLAkzNDUsICAtMSB9LAotCXsgICAgICAgICAgICAxMjQ4LAkgICAgU1RSSU5HLAkzNDYsICAtMSB9LAotCXsgICAgICAgICAgICAxMjUxLAkgICAgU1RSSU5HLAkzNDcsICAtMSB9LAotCXsgICAgICAgICAgICAxMjU0LAkgICAgU1RSSU5HLAkzNDgsICAtMSB9LAotCXsgICAgICAgICAgICAxMjU3LAkgICAgU1RSSU5HLAkzNDksICAtMSB9LAotCXsgICAgICAgICAgICAxMjYwLAkgICAgU1RSSU5HLAkzNTAsICAtMSB9LAotCXsgICAgICAgICAgICAxMjYzLAkgICAgU1RSSU5HLAkzNTEsICAtMSB9LAotCXsgICAgICAgICAgICAxMjY2LAkgICAgU1RSSU5HLAkzNTIsICAtMSB9LAotCXsgICAgICAgICAgICAxMjY5LAkgICAgU1RSSU5HLAkzNTMsIDI3MiB9LAotCXsgICAgICAgICAgICAxMjcyLAkgICAgU1RSSU5HLAkzNTQsIDI3MyB9LAotCXsgICAgICAgICAgICAxMjc1LAkgICAgU1RSSU5HLAkzNTUsIDM4NyB9LAotCXsgICAgICAgICAgICAxMjc4LAkgICAgU1RSSU5HLAkzNTYsICAtMSB9LAotCXsgICAgICAgICAgICAxMjgxLAkgICAgU1RSSU5HLAkzNTcsICAtMSB9LAotCXsgICAgICAgICAgICAxMjg0LAkgICAgU1RSSU5HLAkzNTgsICAtMSB9LAotCXsgICAgICAgICAgICAxMjg3LAkgICAgU1RSSU5HLAkzNTksICAtMSB9LAotCXsgICAgICAgICAgICAxMjkwLAkgICAgU1RSSU5HLAkzNjAsICAtMSB9LAotCXsgICAgICAgICAgICAxMjkzLAkgICAgU1RSSU5HLAkzNjEsICAtMSB9LAotCXsgICAgICAgICAgICAxMjk2LAkgICAgU1RSSU5HLAkzNjIsICAtMSB9LAotCXsgICAgICAgICAgICAxMjk5LAkgICAgU1RSSU5HLAkzNjMsICAtMSB9LAotCXsgICAgICAgICAgICAxMzAyLAkgICAgU1RSSU5HLAkzNjQsICAtMSB9LAotCXsgICAgICAgICAgICAxMzA1LAkgICAgU1RSSU5HLAkzNjUsICA2NyB9LAotCXsgICAgICAgICAgICAxMzA4LAkgICAgU1RSSU5HLAkzNjYsICAtMSB9LAotCXsgICAgICAgICAgICAxMzExLAkgICAgU1RSSU5HLAkzNjcsICAtMSB9LAotCXsgICAgICAgICAgICAxMzE0LAkgICAgU1RSSU5HLAkzNjgsIDM0MSB9LAotCXsgICAgICAgICAgICAxMzE3LAkgICAgU1RSSU5HLAkzNjksICAtMSB9LAotCXsgICAgICAgICAgICAxMzIwLAkgICAgU1RSSU5HLAkzNzAsICAtMSB9LAotCXsgICAgICAgICAgICAxMzIzLAkgICAgU1RSSU5HLAkzNzEsIDI3NCB9LAotCXsgICAgICAgICAgICAxMzI2LAkgICAgU1RSSU5HLAkzNzIsICAtMSB9LAotCXsgICAgICAgICAgICAxMzI5LAkgICAgU1RSSU5HLAkzNzMsICAtMSB9LAotCXsgICAgICAgICAgICAxMzMyLAkgICAgU1RSSU5HLAkzNzQsICAtMSB9LAotCXsgICAgICAgICAgICAxMzM1LAkgICAgU1RSSU5HLAkzNzUsICAtMSB9LAotCXsgICAgICAgICAgICAxMzM4LAkgICAgU1RSSU5HLAkzNzYsICAtMSB9LAotCXsgICAgICAgICAgICAxMzQxLAkgICAgU1RSSU5HLAkzNzcsICAtMSB9LAotCXsgICAgICAgICAgICAxMzQ0LAkgICAgU1RSSU5HLAkzNzgsICAtMSB9LAotCXsgICAgICAgICAgICAxMzQ3LAkgICAgU1RSSU5HLAkzNzksICAtMSB9LAotCXsgICAgICAgICAgICAxMzUwLAkgICAgU1RSSU5HLAkzODAsICAtMSB9LAotCXsgICAgICAgICAgICAxMzUzLAkgICAgU1RSSU5HLAkzODEsIDM1NyB9LAotCXsgICAgICAgICAgICAxMzU2LAkgICAgU1RSSU5HLAkzODIsIDM1OCB9LAotCXsgICAgICAgICAgICAxMzU5LAkgICAgU1RSSU5HLAkzODMsIDM1OSB9LAotCXsgICAgICAgICAgICAxMzYyLAkgICAgU1RSSU5HLAkzODQsIDM2MCB9LAotCXsgICAgICAgICAgICAxMzY1LAkgICAgU1RSSU5HLAkzODUsIDM2MSB9LAotCXsgICAgICAgICAgICAxMzY4LAkgICAgU1RSSU5HLAkzODYsICAtMSB9LAotCXsgICAgICAgICAgICAxMzcxLAkgICAgU1RSSU5HLAkzODcsICAtMSB9LAotCXsgICAgICAgICAgICAxMzc0LAkgICAgU1RSSU5HLAkzODgsICAtMSB9LAotCXsgICAgICAgICAgICAxMzc3LAkgICAgU1RSSU5HLAkzODksICAtMSB9LAotCXsgICAgICAgICAgICAxMzgwLAkgICAgU1RSSU5HLAkzOTAsICAtMSB9LAotCXsgICAgICAgICAgICAxMzgzLAkgICAgU1RSSU5HLAkzOTEsICAtMSB9LAotCXsgICAgICAgICAgICAxMzg2LAkgICAgU1RSSU5HLAkzOTIsICAtMSB9LAotCXsgICAgICAgICAgICAxMzg5LAkgICAgU1RSSU5HLAkzOTMsICAtMSB9LAotCXsgICAgICAgICAgICAxMzkyLAkgICAgU1RSSU5HLAkzOTQsIDM5MCB9LAotCXsgICAgICAgICAgICAxMzk1LAkgICAgU1RSSU5HLAkzOTUsICAtMSB9LAotCXsgICAgICAgICAgICAxMzk4LAkgICAgTlVNQkVSLAkgMzMsICAtMSB9LAotCXsgICAgICAgICAgICAxNDAxLAkgICBCT09MRUFOLAkgMzcsICAtMSB9LAotCXsgICAgICAgICAgICAxNDA0LAkgICBCT09MRUFOLAkgMzgsICAtMSB9LAotCXsgICAgICAgICAgICAxNDA3LAkgICBCT09MRUFOLAkgMzksIDI0OCB9LAotCXsgICAgICAgICAgICAxNDEwLAkgICAgTlVNQkVSLAkgMzQsICAtMSB9LAotCXsgICAgICAgICAgICAxNDEzLAkgICAgTlVNQkVSLAkgMzUsIDIwMyB9LAotCXsgICAgICAgICAgICAxNDE2LAkgICAgU1RSSU5HLAkzOTYsICAtMSB9LAotCXsgICAgICAgICAgICAxNDE5LAkgICAgU1RSSU5HLAkzOTcsICAtMSB9LAotCXsgICAgICAgICAgICAxNDIyLAkgICBCT09MRUFOLAkgNDAsIDQzOSB9LAotCXsgICAgICAgICAgICAxNDI1LAkgICBCT09MRUFOLAkgNDEsICAtMSB9LAotCXsgICAgICAgICAgICAxNDI4LAkgICAgTlVNQkVSLAkgMzYsICAtMSB9LAotCXsgICAgICAgICAgICAxNDMxLAkgICAgTlVNQkVSLAkgMzcsICAtMSB9LAotCXsgICAgICAgICAgICAxNDM0LAkgICAgTlVNQkVSLAkgMzgsICAtMSB9LAotCXsgICAgICAgICAgICAxNDM3LAkgICAgU1RSSU5HLAkzOTgsICAtMSB9LAotCXsgICAgICAgICAgICAxNDQwLAkgICAgU1RSSU5HLAkzOTksIDM3OSB9LAotCXsgICAgICAgICAgICAxNDQzLAkgICBCT09MRUFOLAkgNDIsICAtMSB9LAotCXsgICAgICAgICAgICAxNDQ2LAkgICBCT09MRUFOLAkgNDMsICAtMSB9LAotCXsgICAgICAgICAgICAxNDQ5LAkgICAgU1RSSU5HLAk0MDAsIDM4NiB9LAotCXsgICAgICAgICAgICAxNDUyLAkgICAgU1RSSU5HLAk0MDEsIDQyNSB9LAotCXsgICAgICAgICAgICAxNDU1LAkgICAgU1RSSU5HLAk0MDIsIDM4NSB9LAotCXsgICAgICAgICAgICAxNDU4LAkgICAgU1RSSU5HLAk0MDMsIDM4OCB9LAotCXsgICAgICAgICAgICAxNDYxLAkgICAgU1RSSU5HLAk0MDQsIDQxMiB9LAotCXsgICAgICAgICAgICAxNDY0LAkgICAgU1RSSU5HLAk0MDUsIDQwNiB9LAotCXsgICAgICAgICAgICAxNDY3LAkgICAgU1RSSU5HLAk0MDYsIDQxNSB9LAotCXsgICAgICAgICAgICAxNDcwLAkgICAgU1RSSU5HLAk0MDcsICAtMSB9LAotCXsgICAgICAgICAgICAxNDczLAkgICAgU1RSSU5HLAk0MDgsIDQwMiB9LAotCXsgICAgICAgICAgICAxNDc2LAkgICAgU1RSSU5HLAk0MDksIDQxNiB9LAotCXsgICAgICAgICAgICAxNDc5LAkgICAgU1RSSU5HLAk0MTAsICAtMSB9LAotCXsgICAgICAgICAgICAxNDgyLAkgICAgU1RSSU5HLAk0MTEsIDQ2NCB9LAotCXsgICAgICAgICAgICAxNDg1LAkgICAgU1RSSU5HLAk0MTIsIDM5OSB9LAotCXsgICAgICAgICAgICAxNDg4LAkgICAgU1RSSU5HLAk0MTMsICAtMSB9IAotfTsKLQotc3RhdGljIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpfbmNfY2FwX3RhYmxlID0gMDsKLQotc3RhdGljIGNvbnN0IHNob3J0IF9uY19jYXBfaGFzaF90YWJsZVs5OTVdID0KLXsKLQkyNTMsCi0JIC0xLAotCSA0NSwKLQkyMTEsCi0JMjYzLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ0OSwKLQk0NTcsCi0JMzExLAotCTQxMSwKLQkgLTEsCi0JMTMyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMjMsCi0JIDcxLAotCSA3NSwKLQkgOTIsCi0JNDI3LAotCTIzMywKLQkgLTEsCi0JMzM2LAotCSAtMSwKLQkgLTEsCi0JMzcwLAotCTI5MSwKLQk0OTQsCi0JNDcyLAotCTEzOCwKLQkxODYsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAxOSwKLQkxOTMsCi0JNDM2LAotCTQzMSwKLQk0NTMsCi0JIC0xLAotCTMxNSwKLQk0ODksCi0JMzQ5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNTMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMjQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzk0LAotCSAtMSwKLQkzNjcsCi0JMTY3LAotCSAtMSwKLQkxOTEsCi0JMzcxLAotCSAtMSwKLQkgODksCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzYzLAotCTQ2MCwKLQkzMTksCi0JNDE5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgNzAsCi0JIDc0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDM4LAotCSAtMSwKLQkxMjgsCi0JIC0xLAotCTM5OCwKLQkgLTEsCi0JIC0xLAotCTQ4MSwKLQkgLTEsCi0JIC0xLAotCTIwMiwKLQkgLTEsCi0JIDI4LAotCSA0MywKLQkgLTEsCi0JIDE3LAotCSAtMSwKLQkgLTEsCi0JNDQ0LAotCTQyMywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDk2LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0MzAsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTI5NiwKLQkgLTEsCi0JIDIxLAotCSAtMSwKLQkxODcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMyMSwKLQkyNzYsCi0JIC0xLAotCSAtMSwKLQkgMzEsCi0JMzc1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDI5LAotCTQ3NiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzMDAsCi0JNDAwLAotCSAtMSwKLQkyMTgsCi0JIC0xLAotCSAtMSwKLQkyMjcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAxMSwKLQkyODUsCi0JMTc5LAotCSAtMSwKLQkzMjUsCi0JMjgwLAotCSAtMSwKLQkyMjQsCi0JMTYyLAotCTQ4MCwKLQkgLTEsCi0JIC0xLAotCSA1MSwKLQkgLTEsCi0JIC0xLAotCTIwMSwKLQkyMDQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAyMiwKLQkgLTEsCi0JMzA0LAotCTQwNCwKLQkgLTEsCi0JMTU0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxMDgsCi0JIC0xLAotCSA3NiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzI5LAotCTI4NCwKLQkgLTEsCi0JMjcwLAotCSA4NCwKLQkzODMsCi0JMjUwLAotCTQyNiwKLQkgLTEsCi0JIC0xLAotCTI2MCwKLQkxMTMsCi0JMTEwLAotCTExNCwKLQkgODYsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMwOCwKLQk0MDgsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0MzMsCi0JIC0xLAotCTExMiwKLQkyMzAsCi0JIC0xLAotCTMzMywKLQk0MjgsCi0JIC0xLAotCTIyMywKLQkyODgsCi0JNDg0LAotCTI1NCwKLQkgLTEsCi0JIC0xLAotCTIxMCwKLQkyNjQsCi0JIC0xLAotCSA5OCwKLQkgLTEsCi0JIDgzLAotCTQ3MSwKLQkgLTEsCi0JNDUwLAotCSAtMSwKLQkzMTIsCi0JNDg3LAotCSAtMSwKLQkxNTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzQyLAotCSAyNCwKLQkgLTEsCi0JIDgwLAotCSA5OSwKLQkgLTEsCi0JMjM0LAotCSAtMSwKLQkzMzcsCi0JMTAxLAotCSAtMSwKLQkgIDgsCi0JMjkyLAotCTM5MSwKLQkgLTEsCi0JMTM5LAotCTE2NCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE5NCwKLQk0MzcsCi0JIC0xLAotCTQ1NCwKLQkgLTEsCi0JMzE2LAotCTQ5MiwKLQkgLTEsCi0JMTU1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzOTUsCi0JIC0xLAotCTE0MywKLQkxNjgsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNjQsCi0JIC0xLAotCTMyMCwKLQk0MjAsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIwNywKLQkgLTEsCi0JIC0xLAotCTE1NywKLQk0NDcsCi0JNDk1LAotCSAtMSwKLQkxMzcsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ0MCwKLQk0NDUsCi0JNDI0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDc5LAotCTE3NSwKLQkgLTEsCi0JMjk3LAotCTQ5MywKLQkgMjMsCi0JMTc4LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM0MCwKLQkgNTIsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzQ2LAotCTM0NCwKLQkgLTEsCi0JMzIyLAotCTI3NywKLQkgLTEsCi0JIC0xLAotCSAzMiwKLQkzNzYsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM3MywKLQkgLTEsCi0JNDcwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMwMSwKLQk0MDEsCi0JIC0xLAotCTEyNywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzMzksCi0JIDEyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMyNiwKLQkyODEsCi0JMzQ4LAotCTEyNSwKLQkgMzYsCi0JMzgwLAotCTM0MywKLQkgLTEsCi0JIDQyLAotCSAtMSwKLQkyNjcsCi0JIC0xLAotCSAtMSwKLQkzNzIsCi0JMTE1LAotCSAtMSwKLQkgIDIsCi0JMzQ1LAotCSAtMSwKLQkzMDUsCi0JNDA1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjM3LAotCSAtMSwKLQkzMzAsCi0JMTIxLAotCSAtMSwKLQkyNzEsCi0JIC0xLAotCTM4NCwKLQkyNTEsCi0JIC0xLAotCTE4OSwKLQkgLTEsCi0JMjYxLAotCTE5OSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE3NywKLQkgLTEsCi0JMzA5LAotCTQwOSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjI2LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIzMSwKLQkzNTIsCi0JMzM0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTI4OSwKLQk0ODYsCi0JMjU1LAotCTEzNSwKLQkxNjAsCi0JMjEyLAotCTI2NSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDM0LAotCSAtMSwKLQk0NTEsCi0JIC0xLAotCTMxMywKLQk0MTMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjE0LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMzUsCi0JICA2LAotCTMzOCwKLQkgMTAsCi0JIC0xLAotCTQ3OCwKLQkyOTMsCi0JMzkyLAotCSAtMSwKLQkxNDAsCi0JMjE3LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzNDcsCi0JNDU1LAotCTQ1OSwKLQkzMTcsCi0JNDE3LAotCSAtMSwKLQkxMzQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDQ5LAotCSAtMSwKLQkgLTEsCi0JIDcyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkxNTMsCi0JIC0xLAotCTM5NiwKLQkgLTEsCi0JMTQ0LAotCTE2OSwKLQkgLTEsCi0JIC0xLAotCTIwMCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDgyLAotCTM2NSwKLQk0NjEsCi0JNDQyLAotCTQyMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE5NywKLQk0MzIsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ0NiwKLQk0NDEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAxOCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyOTgsCi0JNDkwLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAyNiwKLQkgLTEsCi0JIC0xLAotCTM1MSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkzMjMsCi0JMjc4LAotCSAtMSwKLQkzNjksCi0JIDMzLAotCTM3NywKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzAyLAotCTQ5MSwKLQkgLTEsCi0JMTI5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMTYsCi0JNDczLAotCSAyNywKLQkgOTEsCi0JMTA3LAotCSAtMSwKLQkgLTEsCi0JMzI3LAotCTI4MiwKLQkgLTEsCi0JMjY4LAotCSAtMSwKLQkzODEsCi0JNDY5LAotCTM2OCwKLQkxNzQsCi0JIC0xLAotCTI1OCwKLQkxOTgsCi0JIC0xLAotCTIwNiwKLQkxODAsCi0JIC0xLAotCSAtMSwKLQkxNzYsCi0JIC0xLAotCTMwNiwKLQk0ODgsCi0JIC0xLAotCTE1MCwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQk0MzgsCi0JNDc1LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyMjgsCi0JIC0xLAotCTMzMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkyODYsCi0JNDg1LAotCTI1MiwKLQkgLTEsCi0JIC0xLAotCTIwOSwKLQkyNjIsCi0JIDQxLAotCSAtMSwKLQk0NjYsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDQ4LAotCSAtMSwKLQkzMTAsCi0JNDEwLAotCSAtMSwKLQkxMzAsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAyNSwKLQkgLTEsCi0JIC0xLAotCTQ2MywKLQkgNTAsCi0JMjMyLAotCSAtMSwKLQkzMzUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjkwLAotCTM4OSwKLQkyNTYsCi0JMTM2LAotCTE4NSwKLQkyMTMsCi0JMjY2LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTE5MiwKLQk0MzUsCi0JIC0xLAotCTQ1MiwKLQk0NTgsCi0JMzE0LAotCTQxNCwKLQkgLTEsCi0JMTUyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTQ3NCwKLQkgLTEsCi0JIC0xLAotCTIxNSwKLQkgODEsCi0JICA1LAotCTIzNiwKLQkgLTEsCi0JIDgyLAotCSAtMSwKLQkgLTEsCi0JNDc5LAotCTI5NCwKLQkzOTMsCi0JIC0xLAotCTE0MSwKLQkxOTAsCi0JIC0xLAotCSAtMSwKLQkxMDUsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDc3LAotCSAyMCwKLQkzNjIsCi0JIC0xLAotCTMxOCwKLQk0MTgsCi0JIC0xLAotCTE1NiwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDk1LAotCTQ2NywKLQkgNzMsCi0JIDkzLAotCTIyMCwKLQkyMTksCi0JIC0xLAotCSAgOSwKLQkxMTksCi0JIC0xLAotCTE1OSwKLQkgLTEsCi0JMzk3LAotCTQ2OCwKLQkxNDUsCi0JMTg4LAotCSAtMSwKLQk0NjUsCi0JIC0xLAotCTIwNSwKLQkxMDYsCi0JIDkwLAotCSA0NCwKLQkgIDMsCi0JMzY2LAotCSAtMSwKLQk0NDMsCi0JNDIyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgIDAsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjk1LAotCSAtMSwKLQkxNzMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTM1NSwKLQkgLTEsCi0JMjIyLAotCTIyMSwKLQkgLTEsCi0JIC0xLAotCTI3NSwKLQkzNTYsCi0JIC0xLAotCSAzMCwKLQkzNzQsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTIyNSwKLQkgLTEsCi0JIC0xLAotCTI5OSwKLQkgLTEsCi0JIC0xLAotCTE0OCwKLQkgLTEsCi0JIC0xLAotCTE4MSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JNDYyLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCTMyNCwKLQkyNzksCi0JIC0xLAotCSAtMSwKLQkgMzQsCi0JMzc4LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMzUwLAotCSAtMSwKLQkzMDMsCi0JNDAzLAotCSAtMSwKLQkxMzMsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDc3LAotCSAtMSwKLQkxODIsCi0JIC0xLAotCSAtMSwKLQkzMjgsCi0JMjgzLAotCSAtMSwKLQkyNjksCi0JIC0xLAotCTM4MiwKLQkyNDksCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JMjU5LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIDg1LAotCSAtMSwKLQk0NTYsCi0JMzA3LAotCTQwNywKLQkgLTEsCi0JMTQ3LAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSAtMSwKLQkgLTEsCi0JIC0xLAotCSA3OCwKLQkgLTEsCi0JIC0xLAotCTM1NCwKLQkgLTEsCi0JMzMyLAotCSAtMSwKLQkgLTEsCi0JMTQ2LAotCTI4NywKLQk0ODMsCi0JMAkvKiBiYXNlLW9mLXRhYmxlICovCi19OwotCi0jaWYgKEJPT0xDT1VOVCE9NDQpfHwoTlVNQ09VTlQhPTM5KXx8KFNUUkNPVU5UIT00MTQpCi0jZXJyb3IJLS0+IHRlcm0uaCBhbmQgY29tcF9jYXB0YWIuYyBkaXNhZ3JlZSBhYm91dCB0aGUgPC0tCi0jZXJyb3IJLS0+IG51bWJlcnMgb2YgYm9vbGVhbnMsIG51bWJlcnMgYW5kL29yIHN0cmluZ3MgPC0tCi0jZW5kaWYKLQotLyogZ2VuZXJhdGVkIGJ5IE1LY2FwdGFiLmF3ayBjYXBhbGlhcygxKSAqLwotCi1zdGF0aWMgc3RydWN0IGFsaWFzICpfbmNfY2FwYWxpYXNfdGFibGUgPSAwOwotCi1zdGF0aWMgY29uc3QgY2hhciBjYXBhbGlhc190ZXh0W10gPSAiXAotc2JcMHNyXDBCU0RcMFwKLUJPXDBtclwwQVQmVFwwXAotQ0lcMHZpXDBBVCZUXDBcCi1DVlwwdmVcMEFUJlRcMFwKLURTXDBtaFwwQVQmVFwwXAotRkVcMExGXDBBVCZUXDBcCi1GTFwwTE9cMEFUJlRcMFwKLVhTXDBta1wwQVQmVFwwXAotRUVcMG1oXDBYRU5JWFwwXAotR0VcMGFlXDBYRU5JWFwwXAotR1NcMGFzXDBYRU5JWFwwXAotQ0ZcMHZpXDBYRU5JWFwwXAotQ09cMHZlXDBYRU5JWFwwXAotRU5cMEA3XDBYRU5JWFwwXAotSE1cMGtoXDBYRU5JWFwwXAotTERcMGtMXDBYRU5JWFwwXAotUERcMGtOXDBYRU5JWFwwXAotUE5cMHBvXDBYRU5JWFwwXAotUFNcMHBmXDBYRU5JWFwwXAotUFVcMGtQXDBYRU5JWFwwXAotUlRcMEA4XDBYRU5JWFwwXAotVVBcMGt1XDBYRU5JWFwwXAotRzZcMFhFTklYXDBcCi1HN1wwWEVOSVhcMFwKLUc1XDBYRU5JWFwwXAotRzhcMFhFTklYXDBcCi1HclwwWEVOSVhcMFwKLUdyXDBYRU5JWFwwXAotR3VcMFhFTklYXDBcCi1HZFwwWEVOSVhcMFwKLUdoXDBYRU5JWFwwXAotR3ZcMFhFTklYXDBcCi1HY1wwWEVOSVhcMFwKLUdHXDBYRU5JWFwwXAota3FcMCUxXDBJQk1cMFwKLUhTXDBtaFwwSVJJU1wwXAotS0FcMGs7XDBUZWtcMFwKLUtCXDBGMVwwVGVrXDBcCi1LQ1wwRjJcMFRla1wwXAotS0RcMEYzXDBUZWtcMFwKLUtFXDBGNFwwVGVrXDBcCi1LRlwwRjVcMFRla1wwXAotQkNcMFNiXDBUZWtcMFwKLUZDXDBTZlwwVGVrXDBcCi0iOwotCi1zdGF0aWMgY29uc3QgYWxpYXNfdGFibGVfZGF0YSBjYXBhbGlhc19kYXRhW10gPSB7Ci0JeyAgICAwLCAgICAgMywgICAgIDZ9LAkgLyogc2Nyb2xsICovCi0JeyAgIDEwLCAgICAxMywgICAgMTZ9LAkgLyogZW50ZXJfcmV2ZXJzZV9tb2RlICovCi0JeyAgIDIxLCAgICAyNCwgICAgMjd9LAkgLyogY3Vyc29yX2ludmlzaWJsZSAqLwotCXsgICAzMiwgICAgMzUsICAgIDM4fSwJIC8qIGN1cnNvcl9ub3JtYWwgKi8KLQl7ICAgNDMsICAgIDQ2LCAgICA0OX0sCSAvKiBlbnRlcl9kaW1fbW9kZSAqLwotCXsgICA1NCwgICAgNTcsICAgIDYwfSwJIC8qIGxhYmVsX29uICovCi0JeyAgIDY1LCAgICA2OCwgICAgNzF9LAkgLyogbGFiZWxfb2ZmICovCi0JeyAgIDc2LCAgICA3OSwgICAgODJ9LAkgLyogZW50ZXJfc2VjdXJlX21vZGUgKi8KLQl7ICAgODcsICAgIDkwLCAgICA5M30sCSAvKiBleGl0X2F0dHJpYnV0ZV9tb2RlICovCi0JeyAgIDk5LCAgIDEwMiwgICAxMDV9LAkgLyogZXhpdF9hbHRfY2hhcnNldF9tb2RlICovCi0JeyAgMTExLCAgIDExNCwgICAxMTd9LAkgLyogZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSAqLwotCXsgIDEyMywgICAxMjYsICAgMTI5fSwJIC8qIGN1cnNvcl9pbnZpcyAqLwotCXsgIDEzNSwgICAxMzgsICAgMTQxfSwJIC8qIGN1cnNvcl9ub3JtYWwgKi8KLQl7ICAxNDcsICAgMTUwLCAgIDE1M30sCSAvKiBrZXlfZW5kICovCi0JeyAgMTU5LCAgIDE2MiwgICAxNjV9LAkgLyoga2V5X2hvbWUgKi8KLQl7ICAxNzEsICAgMTc0LCAgIDE3N30sCSAvKiBrZXlfZGwgKi8KLQl7ICAxODMsICAgMTg2LCAgIDE4OX0sCSAvKiBrZXlfbnBhZ2UgKi8KLQl7ICAxOTUsICAgMTk4LCAgIDIwMX0sCSAvKiBwcnRyX29mZiAqLwotCXsgIDIwNywgICAyMTAsICAgMjEzfSwJIC8qIHBydHJfb24gKi8KLQl7ICAyMTksICAgMjIyLCAgIDIyNX0sCSAvKiBrZXlfcHBhZ2UgKi8KLQl7ICAyMzEsICAgMjM0LCAgIDIzN30sCSAvKiBrZW50ICovCi0JeyAgMjQzLCAgIDI0NiwgICAyNDl9LAkgLyoga2N1dTEgKi8KLQl7ICAyNTUsICAgIC0xLCAgIDI1OH0sCSAvKiBkb3VibGUtQUNTX1VMQ09STkVSICovCi0JeyAgMjY0LCAgICAtMSwgICAyNjd9LAkgLyogZG91YmxlLUFDU19MTENPUk5FUiAqLwotCXsgIDI3MywgICAgLTEsICAgMjc2fSwJIC8qIGRvdWJsZS1BQ1NfVVJDT1JORVIgKi8KLQl7ICAyODIsICAgIC0xLCAgIDI4NX0sCSAvKiBkb3VibGUtQUNTX0xSQ09STkVSICovCi0JeyAgMjkxLCAgICAtMSwgICAyOTR9LAkgLyogZG91YmxlLUFDU19MVEVFICovCi0JeyAgMzAwLCAgICAtMSwgICAzMDN9LAkgLyogZG91YmxlLUFDU19SVEVFICovCi0JeyAgMzA5LCAgICAtMSwgICAzMTJ9LAkgLyogZG91YmxlLUFDU19CVEVFICovCi0JeyAgMzE4LCAgICAtMSwgICAzMjF9LAkgLyogZG91YmxlICovCi0JeyAgMzI3LCAgICAtMSwgICAzMzB9LAkgLyogZG91YmxlLUFDU19ITElORSAqLwotCXsgIDMzNiwgICAgLTEsICAgMzM5fSwJIC8qIGRvdWJsZS1BQ1NfVkxJTkUgKi8KLQl7ICAzNDUsICAgIC0xLCAgIDM0OH0sCSAvKiBkb3VibGUtQUNTX1BMVVMgKi8KLQl7ICAzNTQsICAgIC0xLCAgIDM1N30sCSAvKiBhY3MtZ2xpdGNoICovCi0JeyAgMzYzLCAgIDM2NiwgICAzNjl9LAkgLyoga2V5X2hlbHAgKi8KLQl7ICAzNzMsICAgMzc2LCAgIDM3OX0sCSAvKiBlbnRlcl9kaW1fbW9kZSAqLwotCXsgIDM4NCwgICAzODcsICAgMzkwfSwJIC8qIGtleV9mMTAgKi8KLQl7ICAzOTQsICAgMzk3LCAgIDQwMH0sCSAvKiBrZXlfZjExICovCi0JeyAgNDA0LCAgIDQwNywgICA0MTB9LAkgLyoga2V5X2YxMiAqLwotCXsgIDQxNCwgICA0MTcsICAgNDIwfSwJIC8qIGtleV9mMTMgKi8KLQl7ICA0MjQsICAgNDI3LCAgIDQzMH0sCSAvKiBrZXlfZjE0ICovCi0JeyAgNDM0LCAgIDQzNywgICA0NDB9LAkgLyoga2V5X2YxNSAqLwotCXsgIDQ0NCwgICA0NDcsICAgNDUwfSwJIC8qIHNldF9iYWNrZ3JvdW5kICovCi0JeyAgNDU0LCAgIDQ1NywgICA0NjB9LAkgLyogc2V0X2ZvcmVncm91bmQgKi8KLX07Ci0KLS8qIGdlbmVyYXRlZCBieSBNS2NhcHRhYi5hd2sgaW5mb2FsaWFzKDEpICovCi0KLXN0YXRpYyBzdHJ1Y3QgYWxpYXMgKl9uY19pbmZvYWxpYXNfdGFibGUgPSAwOwotCi1zdGF0aWMgY29uc3QgY2hhciBpbmZvYWxpYXNfdGV4dFtdID0gIlwKLWZvbnQwXDBzMGRzXDBJQk1cMFwKLWZvbnQxXDBzMWRzXDBJQk1cMFwKLWZvbnQyXDBzMmRzXDBJQk1cMFwKLWZvbnQzXDBzM2RzXDBJQk1cMFwKLWtidGFiXDBrY2J0XDBJQk1cMFwKLWtzZWxcMGtzbHRcMElCTVwwXAotIjsKLQotc3RhdGljIGNvbnN0IGFsaWFzX3RhYmxlX2RhdGEgaW5mb2FsaWFzX2RhdGFbXSA9IHsKLQl7ICAgIDAsICAgICA2LCAgICAxMX0sCSAvKiBzZXQwX2Rlc19zZXEgKi8KLQl7ICAgMTUsICAgIDIxLCAgICAyNn0sCSAvKiBzZXQxX2Rlc19zZXEgKi8KLQl7ICAgMzAsICAgIDM2LCAgICA0MX0sCSAvKiBzZXQyX2Rlc19zZXEgKi8KLQl7ICAgNDUsICAgIDUxLCAgICA1Nn0sCSAvKiBzZXQzX2Rlc19zZXEgKi8KLQl7ICAgNjAsICAgIDY2LCAgICA3MX0sCSAvKiBrZXlfYmFja3RhYiAqLwotCXsgICA3NSwgICAgODAsICAgIDg1fSwJIC8qIGtleV9zZWxlY3QgKi8KLX07Ci0KLQotI2lmIDEKLXN0YXRpYyB2b2lkCi1uZXh0X3N0cmluZyhjb25zdCBjaGFyICpzdHJpbmdzLCB1bnNpZ25lZCAqb2Zmc2V0KQotewotCSpvZmZzZXQgKz0gc3RybGVuKHN0cmluZ3MgKyAqb2Zmc2V0KSArIDE7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqCi1fbmNfYnVpbGRfbmFtZXMoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiphY3R1YWwsCi0JCWNvbnN0IG5hbWVfdGFibGVfZGF0YSAqc291cmNlLAotCQljb25zdCBjaGFyICpzdHJpbmdzKQotewotCWlmICgqYWN0dWFsID09IDApIHsKLQkJKmFjdHVhbCA9IHR5cGVDYWxsb2Moc3RydWN0IG5hbWVfdGFibGVfZW50cnksIENBUFRBQlNJWkUpOwotCQlpZiAoKmFjdHVhbCAhPSAwKSB7Ci0JCQl1bnNpZ25lZCBuOwotCQkJdW5zaWduZWQgbGVuID0gMDsKLQkJCWZvciAobiA9IDA7IG4gPCBDQVBUQUJTSVpFOyArK24pIHsKLQkJCQkoKmFjdHVhbClbbl0ubnRlX25hbWUgPSBzdHJpbmdzICsgbGVuOwotCQkJCSgqYWN0dWFsKVtuXS5udGVfdHlwZSA9IHNvdXJjZVtuXS5udGVfdHlwZTsKLQkJCQkoKmFjdHVhbClbbl0ubnRlX2luZGV4ID0gc291cmNlW25dLm50ZV9pbmRleDsKLQkJCQkoKmFjdHVhbClbbl0ubnRlX2xpbmsgPSBzb3VyY2Vbbl0ubnRlX2xpbms7Ci0JCQkJbmV4dF9zdHJpbmcoc3RyaW5ncywgJmxlbik7Ci0JCQl9Ci0JCX0KLQl9Ci0JcmV0dXJuICphY3R1YWw7Ci19Ci0KLSNkZWZpbmUgYWRkX2FsaWFzKGZpZWxkKSBcCi0JaWYgKHNvdXJjZVtuXS5maWVsZCA+PSAwKSB7IFwKLQkJKCphY3R1YWwpW25dLmZpZWxkID0gc3RyaW5ncyArIHNvdXJjZVtuXS5maWVsZDsgXAotCX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBhbGlhcyAqCi1fbmNfYnVpbGRfYWxpYXMoc3RydWN0IGFsaWFzICoqYWN0dWFsLAotCQljb25zdCBhbGlhc190YWJsZV9kYXRhICpzb3VyY2UsCi0JCWNvbnN0IGNoYXIgKnN0cmluZ3MsCi0JCXVuc2lnbmVkIHRhYmxlc2l6ZSkKLXsKLQlpZiAoKmFjdHVhbCA9PSAwKSB7Ci0JCSphY3R1YWwgPSB0eXBlQ2FsbG9jKHN0cnVjdCBhbGlhcywgdGFibGVzaXplICsgMSk7Ci0JCWlmICgqYWN0dWFsICE9IDApIHsKLQkJCXVuc2lnbmVkIG47Ci0JCQlmb3IgKG4gPSAwOyBuIDwgdGFibGVzaXplOyArK24pIHsKLQkJCQlhZGRfYWxpYXMoZnJvbSk7Ci0JCQkJYWRkX2FsaWFzKHRvKTsKLQkJCQlhZGRfYWxpYXMoc291cmNlKTsKLQkJCX0KLQkJfQotCX0KLQlyZXR1cm4gKmFjdHVhbDsKLX0KLQotI2RlZmluZSBidWlsZF9uYW1lcyhyb290KSBfbmNfYnVpbGRfbmFtZXMoJl9uY18jI3Jvb3QjI190YWJsZSwgXAotCQkJCQkgIHJvb3QjI19uYW1lc19kYXRhLCBcCi0JCQkJCSAgcm9vdCMjX25hbWVzX3RleHQpCi0jZGVmaW5lIGJ1aWxkX2FsaWFzKHJvb3QpIF9uY19idWlsZF9hbGlhcygmX25jXyMjcm9vdCMjYWxpYXNfdGFibGUsIFwKLQkJCQkJICByb290IyNhbGlhc19kYXRhLCBcCi0JCQkJCSAgcm9vdCMjYWxpYXNfdGV4dCwgXAotCQkJCQkgIFNJWkVPRihyb290IyNhbGlhc19kYXRhKSkKLSNlbHNlCi0jZGVmaW5lIGJ1aWxkX25hbWVzKHJvb3QpIF9uY18gIyMgcm9vdCAjIyBfdGFibGUKLSNkZWZpbmUgYnVpbGRfYWxpYXMocm9vdCkgX25jXyAjIyByb290ICMjIGFsaWFzX3RhYmxlCi0jZW5kaWYKLQotTkNVUlNFU19FWFBPUlQoY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKikgX25jX2dldF90YWJsZSAoYm9vbCB0ZXJtY2FwKQotewotCXJldHVybiB0ZXJtY2FwID8gYnVpbGRfbmFtZXMoY2FwKSA6IGJ1aWxkX25hbWVzKGluZm8pIDsKLX0KLQotTkNVUlNFU19FWFBPUlQoY29uc3Qgc2hvcnQgKikgX25jX2dldF9oYXNoX3RhYmxlIChib29sIHRlcm1jYXApCi17Ci0JcmV0dXJuIHRlcm1jYXAgPyBfbmNfY2FwX2hhc2hfdGFibGU6IF9uY19pbmZvX2hhc2hfdGFibGUgOwotfQotCi1OQ1VSU0VTX0VYUE9SVChjb25zdCBzdHJ1Y3QgYWxpYXMgKikgX25jX2dldF9hbGlhc190YWJsZSAoYm9vbCB0ZXJtY2FwKQotewotCXJldHVybiB0ZXJtY2FwID8gYnVpbGRfYWxpYXMoY2FwKSA6IGJ1aWxkX2FsaWFzKGluZm8pIDsKLX0KLQotI2lmIE5PX0xFQUtTCi1OQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfY29tcF9jYXB0YWJfbGVha3Modm9pZCkKLXsKLSNpZiAxCi0JRnJlZUlmTmVlZGVkKF9uY19jYXBfdGFibGUpOwotCUZyZWVJZk5lZWRlZChfbmNfaW5mb190YWJsZSk7Ci0JRnJlZUlmTmVlZGVkKF9uY19jYXBhbGlhc190YWJsZSk7Ci0JRnJlZUlmTmVlZGVkKF9uY19pbmZvYWxpYXNfdGFibGUpOwotI2VuZGlmCi19Ci0jZW5kaWYgLyogTk9fTEVBS1MgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvY3Vyc2VzLnByaXYuaCBiL25jdXJzZXMvY3Vyc2VzLnByaXYuaAppbmRleCAyOWUxMzE5Li5lYzE3ZDg4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL2N1cnNlcy5wcml2LmgKKysrIGIvbmN1cnNlcy9jdXJzZXMucHJpdi5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsMTEgKzMwLDExIEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyoKLSAqICRJZDogY3Vyc2VzLnByaXYuaCx2IDEuMzk0IDIwMDgvMTAvMDQgMjE6Mzc6NDUgdG9tIEV4cCAkCisgKiAkSWQ6IGN1cnNlcy5wcml2LmgsdiAxLjU0NyAyMDE1LzA2LzI3IDAxOjIyOjE2IHRvbSBFeHAgJAogICoKICAqCWN1cnNlcy5wcml2LmgKICAqCkBAIC00NSw2ICs0NSw3IEBACiAKICNpZm5kZWYgQ1VSU0VTX1BSSVZfSAogI2RlZmluZSBDVVJTRVNfUFJJVl9IIDEKKy8qICpJTkRFTlQtT0ZGKiAqLwogCiAjaW5jbHVkZSA8bmN1cnNlc19kbGwuaD4KIApAQCAtNjAsOSArNjEsMTEgQEAKICNkZWZpbmUgTU9EVUxFX0lEKGlkKSAvKm5vdGhpbmcqLwogI2VuZGlmCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4JCS8qIGZvciBvZmZzZXRvZiAqLwogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKICNpZiBIQVZFX1VOSVNURF9ICiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC04Myw2ICs4NiwxMiBAQAogCiAjaW5jbHVkZSA8ZXJybm8uaD4KIAorI2lmIGRlZmluZWQgX19ocHV4CisjICBpZm5kZWYgRUlMU0VRCisjICAgIGRlZmluZSBFSUxTRVEgNDcKKyMgIGVuZGlmCisjZW5kaWYKKwogI2lmbmRlZiBQQVRIX01BWAogIyBpZiBkZWZpbmVkKF9QT1NJWF9QQVRIX01BWCkKICMgIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKQEAgLTk3LDggKzEwNiw2IEBACiBleHRlcm4gaW50IGVycm5vOwogI2VuZGlmCiAKLSNpbmNsdWRlIDxuY19wYW5lbC5oPgotCiAvKiBTb21lIHN5c3RlbXMgaGF2ZSBhIGJyb2tlbiAnc2VsZWN0KCknLCBidXQgd29ya2FibGUgJ3BvbGwoKScuICBVc2UgdGhhdCAqLwogI2lmIEhBVkVfV09SS0lOR19QT0xMCiAjZGVmaW5lIFVTRV9GVU5DX1BPTEwgMQpAQCAtMTExLDYgKzExOCwxNCBAQAogI2RlZmluZSBVU0VfRlVOQ19QT0xMIDAKICNlbmRpZgogCisjaWYgSEFWRV9JTlRUWVBFU19ICisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZWxzZQorIyBpZiBIQVZFX1NURElOVF9ICisjICBpbmNsdWRlIDxzdGRpbnQuaD4KKyMgZW5kaWYKKyNlbmRpZgorCiAvKiBpbmNsdWRlIHNpZ25hbC5oIGJlZm9yZSBjdXJzZXMuaCB0byB3b3JrLWFyb3VuZCBkZWZlY3QgaW4gZ2xpYmMgMi4xLjMgKi8KICNpbmNsdWRlIDxzaWduYWwuaD4KIApAQCAtMTM1LDYgKzE1MCwxNSBAQAogI2RlZmluZSBVU0VfRU1YX01PVVNFIDAKICNlbmRpZgogCisvKiBrTElCQyBrZXlib2FyZC9tb3VzZSBzdXBwb3J0ICovCisjaWYgZGVmaW5lZChfX09TMl9fKSAmJiBkZWZpbmVkKF9fS0xJQkNfXykKKyNkZWZpbmUgVVNFX0tMSUJDX0tCRCAgIDEKKyNkZWZpbmUgVVNFX0tMSUJDX01PVVNFIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9LTElCQ19LQkQgICAwCisjZGVmaW5lIFVTRV9LTElCQ19NT1VTRSAwCisjZW5kaWYKKwogI2RlZmluZSBERUZBVUxUX01BWENMSUNLIDE2NgogI2RlZmluZSBFVl9NQVgJCTgJLyogc2l6ZSBvZiBtb3VzZSBjaXJjdWxhciBldmVudCBxdWV1ZSAqLwogCkBAIC0xNTYsNiArMTgwLDE4IEBACiAjZW5kaWYKIAogLyoKKyAqIFdoZW4gYnVpbGRpbmcgaW4gdGhlIE1TWVMyIGVudmlyb25tZW50LCB0aGUgYXV0b21hdGljIGRpc2NvdmVyeSBvZgorICogdGhlIHBhdGggc2VwYXJhdG9yIGluIGNvbmZpZ3VyZSBkb2Vzbid0IHdvcmsgcHJvcGVybHkuIFNvLCBpZiBidWlsZGluZworICogZm9yIE1pbkdXLCB3ZSBlbmZvcmNlIHRoZSBjb3JyZWN0IFdpbmRvd3MgUEFUSCBzZXBhcmF0b3IKKyAqLworI2lmZGVmIF9fTUlOR1czMl9fCisjICBpZmRlZiBOQ1VSU0VTX1BBVEhTRVAKKyMgICAgdW5kZWYgTkNVUlNFU19QQVRIU0VQCisjICBlbmRpZgorIyAgZGVmaW5lIE5DVVJTRVNfUEFUSFNFUCAnOycKKyNlbmRpZgorCisvKgogICogSWYgZGVzaXJlZCwgb25lIGNhbiBjb25maWd1cmUgdGhpcywgZGlzYWJsaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0CiAgKiBwb2ludCB0byBjdXN0b20gdGVybWluZm8vdGVybWNhcCBsb2NhdGlvbnMuCiAgKi8KQEAgLTE3OCw2ICsyMTQsMzIgQEAKICNlbmRpZgogCiAvKgorICogSWYgd2UgaGF2ZSB2YV9jb3B5KCksIHVzZSBpdCBmb3IgYXNzaWduaW5nIHZhX2xpc3Qncy4KKyAqLworI2lmIGRlZmluZWQoSEFWRV9fX1ZBX0NPUFkpCisjZGVmaW5lIGJlZ2luX3ZhX2NvcHkoZHN0LHNyYykJX192YV9jb3B5KGRzdCwgc3JjKQorI2RlZmluZSBlbmRfdmFfY29weShkc3QpCXZhX2VuZChkc3QpCisjZWxpZiBkZWZpbmVkKHZhX2NvcHkpIHx8IGRlZmluZWQoSEFWRV9WQV9DT1BZKQorI2RlZmluZSBiZWdpbl92YV9jb3B5KGRzdCxzcmMpCXZhX2NvcHkoZHN0LCBzcmMpCisjZGVmaW5lIGVuZF92YV9jb3B5KGRzdCkJdmFfZW5kKGRzdCkKKyNlbHNlCisjZGVmaW5lIGJlZ2luX3ZhX2NvcHkoZHN0LHNyYykgKGRzdCkgPSAoc3JjKQorI2RlZmluZSBlbmRfdmFfY29weShkc3QpCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisvKgorICogRWl0aGVyL2JvdGggU19JU3h4eCBhbmQvb3IgU19JRnh4eCBhcmUgZGVmaW5lZCBpbiBzeXMvdHlwZXMuaDsgc29tZSBzeXN0ZW1zCisgKiBsYWNrIG9uZSBvciB0aGUgb3RoZXIuCisgKi8KKyNpZm5kZWYgU19JU0RJUgorI2RlZmluZSBTX0lTRElSKG1vZGUpICgobW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUikKKyNlbmRpZgorCisjaWZuZGVmIFNfSVNSRUcKKyNkZWZpbmUgU19JU1JFRyhtb2RlKSAoKG1vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpCisjZW5kaWYKKworLyoKICAqIFNjcm9sbCBoaW50cyBhcmUgdXNlbGVzcyB3aGVuIGhhc2htYXAgaXMgdXNlZAogICovCiAjaWYgIVVTRV9TQ1JPTExfSElOVFMKQEAgLTE5NCw2ICsyNTYsMTcgQEAKICNkZWZpbmUgaWZfVVNFX1NDUk9MTF9ISU5UUyhzdG10KSAvKm5vdGhpbmcqLwogI2VuZGlmCiAKKyNpbmNsdWRlIDxuY19zdHJpbmcuaD4KKworLyoKKyAqIE9wdGlvbnMgZm9yIHRlcm1pbmFsIGRyaXZlcnMsIGV0Yy4uLgorICovCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisjZGVmaW5lIFVTRV9TUF9SSVBPRkYgICAgIDEKKyNkZWZpbmUgVVNFX1NQX1RFUk1UWVBFICAgMQorI2RlZmluZSBVU0VfU1BfV0lORE9XTElTVCAxCisjZW5kaWYKKwogLyoKICAqIE5vdGU6ICBodC9jYnQgZXhwYW5zaW9uIGZsYWtlcyBvdXQgcmFuZG9tbHkgdW5kZXIgTGludXggMS4xLjQ3LCBidXQgb25seQogICogd2hlbiB3ZSdyZSB0aHJvd2luZyBjb250cm9sIGNvZGVzIGF0IHRoZSBzY3JlZW4gYXQgaGlnaCB2b2x1bWUuICBUbyBzZWUKQEAgLTIyNywxNCArMzAwLDYgQEAKICAqIFN0cnVjdHVyZSBmb3IgcGFsZXR0ZSB0YWJsZXMKICAqLwogCi10eXBlZGVmIHN0cnVjdAotewotICAgIHNob3J0IHJlZCwgZ3JlZW4sIGJsdWU7CS8qIHdoYXQgY29sb3JfY29udGVudCgpIHJldHVybnMgKi8KLSAgICBzaG9ydCByLCBnLCBiOwkJLyogcGFyYW1zIHRvIGluaXRfY29sb3IoKSAqLwotICAgIGludCBpbml0OwkJCS8qIHRydWUgaWYgd2UgY2FsbGVkIGluaXRfY29sb3IoKSAqLwotfQotY29sb3JfdDsKLQogI2RlZmluZSBNQVhDT0xVTU5TICAgIDEzNQogI2RlZmluZSBNQVhMSU5FUyAgICAgIDY2CiAjZGVmaW5lIEZJRk9fU0laRSAgICAgTUFYQ09MVU1OUysyICAvKiBmb3Igbm9jYnJlYWsgbW9kZSBpbnB1dCAqLwpAQCAtMjQ3LDggKzMxMiw5IEBACiAjZGVmaW5lIF9uY19ia2dkICAgIF9ia2dybmQKICNlbHNlCiAjdW5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI3VuZGVmIF9YUEc1CiAjZGVmaW5lIF9uY19ia2dkICAgIF9ia2dkCi0jZGVmaW5lIHdnZXRia2dybmQod2luLCB3Y2gpCSp3Y2ggPSB3aW4tPl9ia2dkCisjZGVmaW5lIHdnZXRia2dybmQod2luLCB3Y2gpCSgoKndjaCA9IHdpbi0+X2JrZ2QpICE9IDAgPyBPSyA6IEVSUikKICNkZWZpbmUgd2JrZ3JuZAkgICAgd2JrZ2QKICNlbmRpZgogCkBAIC0yNTcsMzkgKzMyMywxNDIgQEAKICNkZWZpbmUgTkNVUlNFU19PUEFRVUUgMAogCiAjaW5jbHVkZSA8Y3Vyc2VzLmg+CS8qIHdlJ2xsIHVzZSAtSXBhdGggZGlyZWN0aXZlIHRvIGdldCB0aGUgcmlnaHQgb25lISAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAgIE5DVVJTRVNfQ09MT1JfVCByZWQsIGdyZWVuLCBibHVlOwkvKiB3aGF0IGNvbG9yX2NvbnRlbnQoKSByZXR1cm5zICovCisgICAgTkNVUlNFU19DT0xPUl9UIHIsIGcsIGI7CQkvKiBwYXJhbXMgdG8gaW5pdF9jb2xvcigpICovCisgICAgaW50IGluaXQ7CQkJLyogdHJ1ZSBpZiB3ZSBjYWxsZWQgaW5pdF9jb2xvcigpICovCit9Citjb2xvcl90OworCisvKgorICogSWYgY3Vyc2VzLmggZGlkIG5vdCBleHBvc2UgdGhlIFNDUkVFTi1mdW5jdGlvbnMsIHRoZW4gd2UgZG8gbm90IG5lZWQgdGhlCisgKiBwYXJhbWV0ZXIgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdW5leHRlbmRlZCBmdW5jdGlvbnMuCisgKi8KKworI2RlZmluZSBVU0VfU1BfRlVOQ19TVVBQT1JUICAgICBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIFVTRV9FWFRfU1BfRlVOQ19TVVBQT1JUIChOQ1VSU0VTX1NQX0ZVTkNTICYmIE5DVVJTRVNfRVhUX0ZVTkNTKQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworI2RlZmluZSBTUF9QQVJNICAgICAgICAgc3AJLyogdXNlIHBhcmFtZXRlciAqLworI2RlZmluZSBOQ1VSU0VTX1NQX0FSRyAgICAgICAgICBTUF9QQVJNCisjZGVmaW5lIE5DVVJTRVNfU1BfRENMICBTQ1JFRU4gKk5DVVJTRVNfU1BfQVJHCisjZGVmaW5lIE5DVVJTRVNfU1BfRENMMCBOQ1VSU0VTX1NQX0RDTAorI2RlZmluZSBOQ1VSU0VTX1NQX0FSR3ggICAgICAgICBOQ1VSU0VTX1NQX0FSRywKKyNkZWZpbmUgTkNVUlNFU19TUF9EQ0x4IFNDUkVFTiAqTkNVUlNFU19TUF9BUkd4CisjZWxzZQorI2RlZmluZSBTUF9QQVJNICAgICAgICAgU1AJLyogdXNlIGdsb2JhbCB2YXJpYWJsZSAqLworI2RlZmluZSBOQ1VSU0VTX1NQX0FSRworI2RlZmluZSBOQ1VSU0VTX1NQX0RDTAorI2RlZmluZSBOQ1VSU0VTX1NQX0RDTDAgdm9pZAorI2RlZmluZSBOQ1VSU0VTX1NQX0FSR3gKKyNkZWZpbmUgTkNVUlNFU19TUF9EQ0x4CisjZW5kaWYKKworI2luY2x1ZGUgPG5jX3BhbmVsLmg+CisKKyNkZWZpbmUgSXNQcmVTY3JlZW4oc3ApICAgICAgKCgoc3ApICE9IDApICYmIHNwLT5fcHJlc2NyZWVuKQorI2RlZmluZSBIYXNUZXJtaW5hbChzcCkgICAgICAoKChzcCkgIT0gMCkgJiYgKDAgIT0gKChzcCktPl90ZXJtKSkpCisjZGVmaW5lIElzVmFsaWRTY3JlZW4oc3ApICAgIChIYXNUZXJtaW5hbChzcCkgJiYgIUlzUHJlU2NyZWVuKHNwKSkKKworI2lmIFVTRV9SRUVOVFJBTlQKKyNkZWZpbmUgQ3VyVGVybSAgICAgICAgICAgICAgX25jX3ByZXNjcmVlbi5fY3VyX3Rlcm0KKyNlbHNlCisjZGVmaW5lIEN1clRlcm0gICAgICAgICAgICAgIGN1cl90ZXJtCisjZW5kaWYKKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyNkZWZpbmUgVGVybWluYWxPZihzcCkgICAgICAgKChzcCkgPyAoKHNwKS0+X3Rlcm0gPyAoc3ApLT5fdGVybSA6IEN1clRlcm0pIDogQ3VyVGVybSkKKyNlbHNlCisjZGVmaW5lIFRlcm1pbmFsT2Yoc3ApICAgICAgIEN1clRlcm0KKyNlbmRpZgorCiAjaW5jbHVkZSA8dGVybS5oPgorI2luY2x1ZGUgPG5jX3Rlcm1pb3MuaD4KKworLyoKKyAqIFJlZHVjZSBkZXBlbmRlbmN5IG9uIGN1cl90ZXJtIGdsb2JhbCBieSB1c2luZyB0ZXJtaW5mbyBkYXRhIGZyb20gU0NSRUVOJ3MKKyAqIHBvaW50ZXIgdG8gdGhpcyBkYXRhLgorICovCisjaWZkZWYgVVNFX1NQX1RFUk1UWVBFCisjdW5kZWYgQ1VSCisjZW5kaWYKKworI2RlZmluZSBTUF9URVJNVFlQRSBUZXJtaW5hbE9mKHNwKS0+dHlwZS4KKwogI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KKwogI2luY2x1ZGUgPG5jX3RwYXJtLmg+CiAKLSNpZiBOQ1VSU0VTX0VYVF9DT0xPUlMgJiYgVVNFX1dJREVDX1NVUFBPUlQKKy8qCisgKiBTaW1wbGlmeSBpZmRlZidzIGZvciB0aGUgIipfQVRUUiIgbWFjcm9zIGluIGNhc2UgaXRhbGljcyBhcmUgbm90IGNvbmZpZ3VyZWQuCisgKi8KKyNpZmRlZiBBX0lUQUxJQworI2RlZmluZSBVU0VfSVRBTElDIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9JVEFMSUMgMAorI2RlZmluZSBBX0lUQUxJQyAwCisjZW5kaWYKKworLyoKKyAqIFVzZSB0aGVzZSBtYWNyb3MgaW50ZXJuYWxseSwgdG8gbWFrZSB0cmFjaW5nIGxlc3MgdmVyYm9zZS4gIEJ1dCBsZWF2ZSB0aGUKKyAqIG9wdGlvbiBmb3IgY29tcGlsaW5nIHRoZSB0cmFjaW5nIGludG8gdGhlIGxpYnJhcnkuCisgKi8KKyNpZiAxCisjZGVmaW5lIENvbG9yUGFpcihuKQkJTkNVUlNFU19CSVRTKG4sIDApCisjZGVmaW5lIFBhaXJOdW1iZXIoYSkJCShOQ1VSU0VTX0NBU1QoaW50LCgoKHVuc2lnbmVkIGxvbmcpKGEpICYgQV9DT0xPUikgPj4gTkNVUlNFU19BVFRSX1NISUZUKSkpCisjZWxzZQorI2RlZmluZSBDb2xvclBhaXIocGFpcikJCUNPTE9SX1BBSVIocGFpcikKKyNkZWZpbmUgUGFpck51bWJlcihhdHRyKQlQQUlSX05VTUJFUihhdHRyKQorI2VuZGlmCisKKyNkZWZpbmUgdW5Db2xvcihuKQkJdW5Db2xvcjIoQXR0ck9mKG4pKQorI2RlZmluZSB1bkNvbG9yMihhKQkJKChhKSAmIEFMTF9CVVRfQ09MT1IpCisKKy8qCisgKiBFeHRlbmRlZC1jb2xvcnMgc3RvcmVzIHRoZSBjb2xvciBwYWlyIGluIGEgc2VwYXJhdGUgc3RydWN0LW1lbWJlciB0aGFuIHRoZQorICogYXR0cmlidXRlcy4gIEJ1dCBmb3IgY29tcGF0aWJpbGl0eSwgd2UgaGFuZGxlIG1vc3QgY2FzZXMgd2hlcmUgYSBwcm9ncmFtCisgKiB3cml0dGVuIGZvciBub24tZXh0ZW5kZWQgY29sb3JzIHN0b3JlcyB0aGUgY29sb3IgaW4gdGhlIGF0dHJpYnV0ZXMgYnkKKyAqIGNoZWNraW5nIGZvciBhIGNvbG9yIHBhaXIgaW4gYm90aCBwbGFjZXMuCisgKi8KKyNpZiBOQ1VSU0VTX0VYVF9DT0xPUlMKICNkZWZpbmUgaWZfRVhUX0NPTE9SUyhzdG10KQlzdG10Ci0jZGVmaW5lIE5ldFBhaXIodmFsdWUscCkJKHZhbHVlKS5leHRfY29sb3IgPSAocCksIFwKLQkJCQlBdHRyT2YodmFsdWUpICY9IEFMTF9CVVRfQ09MT1IsIFwKLQkJCQlBdHRyT2YodmFsdWUpIHw9IChBX0NPTE9SICYgQ09MT1JfUEFJUigocCA+IDI1NSkgPyAyNTUgOiBwKSkKLSNkZWZpbmUgU2V0UGFpcih2YWx1ZSxwKQkodmFsdWUpLmV4dF9jb2xvciA9IChwKQotI2RlZmluZSBHZXRQYWlyKHZhbHVlKQkJKHZhbHVlKS5leHRfY29sb3IKLSNkZWZpbmUgdW5Db2xvcihuKQkJKEF0dHJPZihuKSAmIEFMTF9CVVRfQ09MT1IpCi0jZGVmaW5lIEdFVF9XSU5ET1dfUEFJUih3KQkodyktPl9jb2xvcgorI2RlZmluZSBTZXRQYWlyKHZhbHVlLHApCVNldFBhaXIyKCh2YWx1ZSkuZXh0X2NvbG9yLCBBdHRyT2YodmFsdWUpLCBwKQorI2RlZmluZSBTZXRQYWlyMihjLGEscCkJCWMgPSAocCksIFwKKwkJCQlhID0gKHVuQ29sb3IyKGEpIHwgKEFfQ09MT1IgJiAodW5zaWduZWQpIENvbG9yUGFpcihvbGRDb2xvcihjKSkpKQorI2RlZmluZSBHZXRQYWlyKHZhbHVlKQkJR2V0UGFpcjIoKHZhbHVlKS5leHRfY29sb3IsIEF0dHJPZih2YWx1ZSkpCisjZGVmaW5lIEdldFBhaXIyKGMsYSkJCSgoYykgPyAoYykgOiBQYWlyTnVtYmVyKGEpKQorI2RlZmluZSBvbGRDb2xvcihwKQkJKCgocCkgPiAyNTUpID8gMjU1IDogKHApKQorI2RlZmluZSBHRVRfV0lORE9XX1BBSVIodykJR2V0UGFpcjIoKHcpLT5fY29sb3IsICh3KS0+X2F0dHJzKQogI2RlZmluZSBTRVRfV0lORE9XX1BBSVIodyxwKQkodyktPl9jb2xvciA9IChwKQogI2RlZmluZSBTYW1lQXR0ck9mKGEsYikJCShBdHRyT2YoYSkgPT0gQXR0ck9mKGIpICYmIEdldFBhaXIoYSkgPT0gR2V0UGFpcihiKSkKLSNkZWZpbmUgVklEQVRUUihhdHRyLCBwYWlyKQl2aWRfYXR0cihhdHRyLCBwYWlyLCAwKQotI2Vsc2UKKworI2RlZmluZSBWSURBVFRSKHNwLGF0dHIscGFpcikJTkNVUlNFU19TUF9OQU1FKHZpZF9wdXRzKShOQ1VSU0VTX1NQX0FSR3ggYXR0ciwgKHNob3J0KSBwYWlyLCAwLCBOQ1VSU0VTX09VVENfRlVOQykKKworI2Vsc2UgLyogIU5DVVJTRVNfRVhUX0NPTE9SUyAqLworCiAjZGVmaW5lIGlmX0VYVF9DT0xPUlMoc3RtdCkJLyogbm90aGluZyAqLwogI2RlZmluZSBTZXRQYWlyKHZhbHVlLHApCVJlbUF0dHIodmFsdWUsIEFfQ09MT1IpLCBcCi0JCQkJU2V0QXR0cih2YWx1ZSwgQXR0ck9mKHZhbHVlKSB8IChBX0NPTE9SICYgQ09MT1JfUEFJUihwKSkpCi0jZGVmaW5lIEdldFBhaXIodmFsdWUpCQlQQUlSX05VTUJFUihBdHRyT2YodmFsdWUpKQotI2RlZmluZSB1bkNvbG9yKG4pCQkoQXR0ck9mKG4pICYgQUxMX0JVVF9DT0xPUikKLSNkZWZpbmUgR0VUX1dJTkRPV19QQUlSKHcpCVBBSVJfTlVNQkVSKFdJTkRPV19BVFRSUyh3KSkKKwkJCQlTZXRBdHRyKHZhbHVlLCBBdHRyT2YodmFsdWUpIHwgKEFfQ09MT1IgJiAoYXR0cl90KSBDb2xvclBhaXIocCkpKQorI2RlZmluZSBHZXRQYWlyKHZhbHVlKQkJUGFpck51bWJlcihBdHRyT2YodmFsdWUpKQorI2RlZmluZSBHRVRfV0lORE9XX1BBSVIodykJUGFpck51bWJlcihXSU5ET1dfQVRUUlModykpCiAjZGVmaW5lIFNFVF9XSU5ET1dfUEFJUih3LHApCVdJTkRPV19BVFRSUyh3KSAmPSBBTExfQlVUX0NPTE9SLCBcCi0JCQkJV0lORE9XX0FUVFJTKHcpIHw9IChBX0NPTE9SICYgQ09MT1JfUEFJUihwKSkKKwkJCQlXSU5ET1dfQVRUUlModykgfD0gKEFfQ09MT1IgJiAoYXR0cl90KSBDb2xvclBhaXIocCkpCiAjZGVmaW5lIFNhbWVBdHRyT2YoYSxiKQkJKEF0dHJPZihhKSA9PSBBdHRyT2YoYikpCi0jZGVmaW5lIFZJREFUVFIoYXR0ciwgcGFpcikJdmlkYXR0cihhdHRyKQotI2VuZGlmCisKKyNkZWZpbmUgVklEQVRUUihzcCxhdHRyLHBhaXIpCU5DVVJTRVNfU1BfTkFNRSh2aWRwdXRzKShOQ1VSU0VTX1NQX0FSR3ggYXR0ciwgTkNVUlNFU19PVVRDX0ZVTkMpCisKKyNlbmRpZiAvKiBOQ1VSU0VTX0VYVF9DT0xPUlMgKi8KKworI2RlZmluZSBOQ1VSU0VTX09VVENfRlVOQyAgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKQorI2RlZmluZSBOQ1VSU0VTX1BVVFAyKG5hbWUsdmFsdWUpICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0cCkoTkNVUlNFU19TUF9BUkd4IG5hbWUsIHZhbHVlKQorI2RlZmluZSBOQ1VSU0VTX1BVVFAyX0ZMVVNIKG5hbWUsdmFsdWUpICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0cF9mbHVzaCkoTkNVUlNFU19TUF9BUkd4IG5hbWUsIHZhbHVlKQogCiAjaWYgTkNVUlNFU19OT19QQURESU5HCiAjZGVmaW5lIEdldE5vUGFkZGluZyhzcCkJKChzcCkgPyAoc3ApLT5fbm9fcGFkZGluZyA6IF9uY19wcmVzY3JlZW4uX25vX3BhZGRpbmcpCiAjZGVmaW5lIFNldE5vUGFkZGluZyhzcCkJX25jX3NldF9ub19wYWRkaW5nKHNwKQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zZXRfbm9fcGFkZGluZyhTQ1JFRU4gKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIF9uY19zZXRfbm9fcGFkZGluZyhTQ1JFRU4gKik7CiAjZWxzZQogI2RlZmluZSBHZXROb1BhZGRpbmcoc3ApCUZBTFNFCiAjZGVmaW5lIFNldE5vUGFkZGluZyhzcCkJLypub3RoaW5nKi8KQEAgLTMwMSwxOCArNDcwLDM3IEBACiAjZGVmaW5lIEdFVF9TQ1JFRU5fUEFJUihzKQlHZXRQYWlyKFNDUkVFTl9BVFRSUyhzKSkKICNkZWZpbmUgU0VUX1NDUkVFTl9QQUlSKHMscCkJU2V0UGFpcihTQ1JFRU5fQVRUUlMocyksIHApCiAKKyNpZiBVU0VfUkVFTlRSQU5UIHx8IE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCAqKSAgICAgICAgX25jX3B0cl9MaW5lcyAoU0NSRUVOICopOworTkNVUlNFU19FWFBPUlQoaW50ICopICAgICAgICBfbmNfcHRyX0NvbHMgKFNDUkVFTiAqKTsKK05DVVJTRVNfRVhQT1JUKGludCAqKSAgICAgICAgX25jX3B0cl9UYWJzaXplIChTQ1JFRU4gKik7CitOQ1VSU0VTX0VYUE9SVChpbnQgKikgICAgICAgIF9uY19wdHJfRXNjZGVsYXkgKFNDUkVFTiAqKTsKKyNlbmRpZgorCiAjaWYgVVNFX1JFRU5UUkFOVAotTkNVUlNFU19FWFBPUlQoaW50ICopIF9uY19wdHJfTGluZXMgKHZvaWQpOwotTkNVUlNFU19FWFBPUlQoaW50ICopIF9uY19wdHJfQ29scyAodm9pZCk7Ci0jZGVmaW5lIHB0ckxpbmVzKCkgKFNQID8gJihTUC0+X0xJTkVTKSA6ICYoX25jX3ByZXNjcmVlbi5fTElORVMpKQotI2RlZmluZSBwdHJDb2xzKCkgIChTUCA/ICYoU1AtPl9DT0xTKSAgOiAmKF9uY19wcmVzY3JlZW4uX0NPTFMpKQotI2RlZmluZSBTRVRfTElORVModmFsdWUpICpfbmNfcHRyX0xpbmVzKCkgPSB2YWx1ZQotI2RlZmluZSBTRVRfQ09MUyh2YWx1ZSkgICpfbmNfcHRyX0NvbHMoKSA9IHZhbHVlCisKKyNkZWZpbmUgcHRyTGluZXMoc3ApICAgICAgICAgKHNwID8gJihzcC0+X0xJTkVTKSA6ICYoX25jX3ByZXNjcmVlbi5fTElORVMpKQorI2RlZmluZSBwdHJDb2xzKHNwKSAgICAgICAgICAoc3AgPyAmKHNwLT5fQ09MUykgOiAmKF9uY19wcmVzY3JlZW4uX0NPTFMpKQorI2RlZmluZSBwdHJUYWJzaXplKHNwKSAgICAgICAoc3AgPyAmKHNwLT5fVEFCU0laRSkgOiAmKF9uY19wcmVzY3JlZW4uX1RBQlNJWkUpKQorI2RlZmluZSBwdHJFc2NkZWxheShzcCkgICAgICAoc3AgPyAmKHNwLT5fRVNDREVMQVkpIDogJihfbmNfcHJlc2NyZWVuLl9FU0NERUxBWSkpCisKKyNkZWZpbmUgU0VUX0xJTkVTKHZhbHVlKSAgICAgKl9uY19wdHJfTGluZXMoU1BfUEFSTSkgPSB2YWx1ZQorI2RlZmluZSBTRVRfQ09MUyh2YWx1ZSkgICAgICAqX25jX3B0cl9Db2xzKFNQX1BBUk0pID0gdmFsdWUKKyNkZWZpbmUgU0VUX1RBQlNJWkUodmFsdWUpICAgKl9uY19wdHJfVGFic2l6ZShTUF9QQVJNKSA9IHZhbHVlCisjZGVmaW5lIFNFVF9FU0NERUxBWSh2YWx1ZSkgICpfbmNfcHRyX0VzY2RlbGF5KFNQX1BBUk0pID0gdmFsdWUKKwogI2Vsc2UKLSNkZWZpbmUgcHRyTGluZXMoKSAmTElORVMKLSNkZWZpbmUgcHRyQ29scygpICAmQ09MUwotI2RlZmluZSBTRVRfTElORVModmFsdWUpIExJTkVTID0gdmFsdWUKLSNkZWZpbmUgU0VUX0NPTFModmFsdWUpICBDT0xTID0gdmFsdWUKKworI2RlZmluZSBwdHJMaW5lcyhzcCkgICAgICAgICAmTElORVMKKyNkZWZpbmUgcHRyQ29scyhzcCkgICAgICAgICAgJkNPTFMKKyNkZWZpbmUgcHRyVGFic2l6ZShzcCkgICAgICAgJlRBQlNJWkUKKyNkZWZpbmUgcHRyRXNjZGVsYXkoc3ApICAgICAgJkVTQ0RFTEFZCisKKyNkZWZpbmUgU0VUX0xJTkVTKHZhbHVlKSAgICAgTElORVMgPSB2YWx1ZQorI2RlZmluZSBTRVRfQ09MUyh2YWx1ZSkgICAgICBDT0xTID0gdmFsdWUKKyNkZWZpbmUgU0VUX1RBQlNJWkUodmFsdWUpICAgVEFCU0laRSA9IHZhbHVlCisjZGVmaW5lIFNFVF9FU0NERUxBWSh2YWx1ZSkgIEVTQ0RFTEFZID0gdmFsdWUKKwogI2VuZGlmCiAKICNkZWZpbmUgVFJfTVVURVgoZGF0YSkgX3RyYWNlZigiJXNAJWQ6IG1lOiUwOGxYIENPVU5UOiUydS8lMmQvJTZkLyUyZC8lcyU5dTogIiAjZGF0YSwgXApAQCAtMzI2LDYgKzUxNCwyMiBAQAogCSAgICBkYXRhLl9fZGF0YS5fX251c2VycykKICNkZWZpbmUgVFJfR0xPQkFMX01VVEVYKG5hbWUpIFRSX01VVEVYKF9uY19nbG9iYWxzLm11dGV4XyMjbmFtZSkKIAorI2lmIFVTRV9XRUFLX1NZTUJPTFMKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorIyAgaWYgZGVmaW5lZCBfX1VTRV9JU09DOTkKKyMgICAgZGVmaW5lIF9jYXRfcHJhZ21hKGV4cCkJX1ByYWdtYSgjZXhwKQorIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkJX2NhdF9wcmFnbWEod2VhayBuYW1lKQorIyAgZWxzZQorIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkKKyMgIGVuZGlmCisjICBkZWZpbmUgX2RlY2xhcmUobmFtZSkJX19leHRlbnNpb25fXyBleHRlcm4gX190eXBlb2ZfXyhuYW1lKSBuYW1lCisjICBkZWZpbmUgd2Vha19zeW1ib2wobmFtZSkJX3dlYWtfcHJhZ21hKG5hbWUpIF9kZWNsYXJlKG5hbWUpIF9fYXR0cmlidXRlX18oKHdlYWspKQorI2Vsc2UKKyMgIHVuZGVmIFVTRV9XRUFLX1NZTUJPTFMKKyMgIGRlZmluZSBVU0VfV0VBS19TWU1CT0xTIDAKKyNlbmRpZgorI2VuZGlmCisKICNpZmRlZiBVU0VfUFRIUkVBRFMKIAogI2lmIFVTRV9SRUVOVFJBTlQKQEAgLTM0MywyMiArNTQ3LDEwIEBACiAjZXJyb3IgUE9TSVggdGhyZWFkcyByZXF1aXJlcyAtLWVuYWJsZS1yZWVudHJhbnQgb3B0aW9uCiAjZW5kaWYKIAotI2lmIFVTRV9XRUFLX1NZTUJPTFMKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgaWYgZGVmaW5lZCBfX1VTRV9JU09DOTkKLSMgICAgZGVmaW5lIF9jYXRfcHJhZ21hKGV4cCkJX1ByYWdtYSgjZXhwKQotIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkJX2NhdF9wcmFnbWEod2VhayBuYW1lKQotIyAgZWxzZQotIyAgICBkZWZpbmUgX3dlYWtfcHJhZ21hKGV4cCkKLSMgIGVuZGlmCi0jICBkZWZpbmUgX2RlY2xhcmUobmFtZSkJX19leHRlbnNpb25fXyBleHRlcm4gX190eXBlb2ZfXyhuYW1lKSBuYW1lCi0jICBkZWZpbmUgd2Vha19zeW1ib2wobmFtZSkJX3dlYWtfcHJhZ21hKG5hbWUpIF9kZWNsYXJlKG5hbWUpIF9fYXR0cmlidXRlX18oKHdlYWspKQotI2VuZGlmCi0jZW5kaWYKLQogI2lmZGVmIFVTRV9QVEhSRUFEUwogIyAgaWYgVVNFX1dFQUtfU1lNQk9MUwogd2Vha19zeW1ib2wocHRocmVhZF9zaWdtYXNrKTsKK3dlYWtfc3ltYm9sKHB0aHJlYWRfa2lsbCk7CiB3ZWFrX3N5bWJvbChwdGhyZWFkX3NlbGYpOwogd2Vha19zeW1ib2wocHRocmVhZF9lcXVhbCk7CiB3ZWFrX3N5bWJvbChwdGhyZWFkX211dGV4X2luaXQpOwpAQCAtMzgwLDYgKzU3MiwxOSBAQAogCiAjZWxzZSAvKiAhVVNFX1BUSFJFQURTICovCiAKKyNpZiBVU0VfUFRIUkVBRFNfRUlOVFIKKyMgIGlmIFVTRV9XRUFLX1NZTUJPTFMKKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cit3ZWFrX3N5bWJvbChwdGhyZWFkX3NpZ21hc2spOword2Vha19zeW1ib2wocHRocmVhZF9raWxsKTsKK3dlYWtfc3ltYm9sKHB0aHJlYWRfc2VsZik7Cit3ZWFrX3N5bWJvbChwdGhyZWFkX2VxdWFsKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19zaWdwcm9jbWFzayhpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNpZ3NldF90ICopOworIyAgICB1bmRlZiAgc2lncHJvY21hc2sKKyMgICAgZGVmaW5lIHNpZ3Byb2NtYXNrIF9uY19zaWdwcm9jbWFzaworIyAgZW5kaWYKKyNlbmRpZiAvKiBVU0VfUFRIUkVBRFNfRUlOVFIgKi8KKwogI2RlZmluZSBfbmNfaW5pdF9wdGhyZWFkcygpCS8qIG5vdGhpbmcgKi8KICNkZWZpbmUgX25jX211dGV4X2luaXQob2JqKQkvKiBub3RoaW5nICovCiAKQEAgLTM4OSw2ICs1OTQsMzYgQEAKIAogI2VuZGlmIC8qIFVTRV9QVEhSRUFEUyAqLwogCisvKgorICogV2hlbiB1c2luZyBzcC1mdW5jcywgbG9ja3MgYXJlIHRhcmdldGVkIHRvIFNDUkVFTi1sZXZlbCBncmFudWxhcml0eS4KKyAqIFNvIHRoZSBsb2NraW5nIGlzIGRvbmUgaW4gdGhlIG5vbi1zcC1mdW5jICh3aGljaCBjYWxscyB0aGUgc3AtZnVuYykgcmF0aGVyCisgKiB0aGFuIGluIHRoZSBzcC1mdW5jIGl0c2VsZi4KKyAqCisgKiBVc2UgdGhlIF9uY19ub25zcF9YWFggZnVuY3Rpb25zIGluIHRoZSBmdW5jdGlvbiB1c2luZyAiTkNVUlNFU19TUF9OQU1FKCkiLgorICogVXNlIHRoZSBfbmNfc3BfWFhYIGZ1bmN0aW9ucyBpbiB0aGUgZnVuY3Rpb24gdXNpbmcgIiNpZiBOQ1VSU0VTX1NQX0ZVTkNTIi4KKyAqLworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKworI2RlZmluZSBfbmNfbm9uc3BfbG9ja19nbG9iYWwobmFtZSkJLyogbm90aGluZyAqLworI2RlZmluZSBfbmNfbm9uc3BfdHJ5X2dsb2JhbChuYW1lKSAgICAwCisjZGVmaW5lIF9uY19ub25zcF91bmxvY2tfZ2xvYmFsKG5hbWUpCS8qIG5vdGhpbmcgKi8KKworI2RlZmluZSBfbmNfc3BfbG9ja19nbG9iYWwobmFtZSkJX25jX2xvY2tfZ2xvYmFsKG5hbWUpCisjZGVmaW5lIF9uY19zcF90cnlfZ2xvYmFsKG5hbWUpICAgICAgICAgX25jX3RyeV9nbG9iYWwobmFtZSkKKyNkZWZpbmUgX25jX3NwX3VubG9ja19nbG9iYWwobmFtZSkJX25jX3VubG9ja19nbG9iYWwobmFtZSkKKworI2Vsc2UKKworI2RlZmluZSBfbmNfbm9uc3BfbG9ja19nbG9iYWwobmFtZSkJX25jX2xvY2tfZ2xvYmFsKG5hbWUpCisjZGVmaW5lIF9uY19ub25zcF90cnlfZ2xvYmFsKG5hbWUpICAgICAgX25jX3RyeV9nbG9iYWwobmFtZSkKKyNkZWZpbmUgX25jX25vbnNwX3VubG9ja19nbG9iYWwobmFtZSkJX25jX3VubG9ja19nbG9iYWwobmFtZSkKKworI2RlZmluZSBfbmNfc3BfbG9ja19nbG9iYWwobmFtZSkJLyogbm90aGluZyAqLworI2RlZmluZSBfbmNfc3BfdHJ5X2dsb2JhbChuYW1lKSAgICAwCisjZGVmaW5lIF9uY19zcF91bmxvY2tfZ2xvYmFsKG5hbWUpCS8qIG5vdGhpbmcgKi8KKworI2VuZGlmCisKICNpZiBIQVZFX0dFVFRJTUVPRkRBWQogIyBkZWZpbmUgUFJFQ0lTRV9HRVRUSU1FIDEKICMgZGVmaW5lIFRpbWVUeXBlIHN0cnVjdCB0aW1ldmFsCkBAIC00MDMsMTIgKzYzOCwxNCBAQAogdHlwZWRlZiB1bnNpZ25lZCBjb2xvcnBhaXJfdDsJLyogdHlwZSBiaWcgZW5vdWdoIHRvIHN0b3JlIFBBSVJfT0YoKSAqLwogI2RlZmluZSBDX1NISUZUIDkJCS8qIHdlIG5lZWQgbW9yZSBiaXRzIHRoYW4gdGhlcmUgYXJlIGNvbG9ycyAqLwogI2RlZmluZSBDX01BU0sJCQkoKDEgPDwgQ19TSElGVCkgLSAxKQotI2RlZmluZSBQQUlSX09GKGZnLCBiZykJCSgoKChmZykgJiBDX01BU0spIDw8IENfU0hJRlQpIHwgKChiZykgJiBDX01BU0spKQorI2RlZmluZSBQQUlSX09GKGZnLCBiZykJCShjb2xvcnBhaXJfdCkgKCgoKGZnKSAmIENfTUFTSykgPDwgQ19TSElGVCkgfCAoKGJnKSAmIENfTUFTSykpCisjZGVmaW5lIEZPUkVfT0YoYykJCSgoKGMpID4+IENfU0hJRlQpICYgQ19NQVNLKQorI2RlZmluZSBCQUNLX09GKGMpCQkoKGMpICYgQ19NQVNLKQogI2RlZmluZSBpc0RlZmF1bHRDb2xvcihjKQkoKGMpID49IENPTE9SX0RFRkFVTFQgfHwgKGMpIDwgMCkKIAogI2RlZmluZSBDT0xPUl9ERUZBVUxUCQlDX01BU0sKIAotI2lmIGRlZmluZWQoVVNFX1RFUk1MSUIpICYmICFkZWZpbmVkKE5FRURfTkNVUlNFU19DSF9UKQorI2lmIGRlZmluZWQoVVNFX0JVSUxEX0NDKSB8fCAoZGVmaW5lZChVU0VfVEVSTUxJQikgJiYgIWRlZmluZWQoTkVFRF9OQ1VSU0VTX0NIX1QpKQogCiAjdW5kZWYgTkNVUlNFU19DSF9UCQkvKiB0aGlzIGlzIG5vdCBhIHRlcm1saWIgZmVhdHVyZSAqLwogI2RlZmluZSBOQ1VSU0VTX0NIX1Qgdm9pZAkvKiAuLi5idXQgd2UgbmVlZCBhIHBvaW50ZXIgaW4gU0NSRUVOICovCkBAIC00MzQsOCArNjcxLDE5IEBACiAjaWYgVVNFX1NZU01PVVNFCiAJLE1fU1lTTU9VU0UJCS8qIEZyZWVCU0Qgc3lzbW91c2Ugb24gY29uc29sZSAqLwogI2VuZGlmCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJLE1fVEVSTV9EUklWRVIJCS8qIFdpbjMyIGNvbnNvbGUsIGV0YyAqLworI2VuZGlmCiB9IE1vdXNlVHlwZTsKIAordHlwZWRlZiBlbnVtIHsKKyAgICAJTUZfWDEwID0gMAkJLyogY29udmVudGlvbmFsIDMtYnl0ZSBmb3JtYXQgKi8KKwksIE1GX1NHUjEwMDYJCS8qIHh0ZXJtIHByaXZhdGUgbW9kZSAxMDA2LCBTR1Itc3R5bGUgKi8KKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorCSwgTUZfWFRFUk1fMTAwNQkJLyogeHRlcm0gVVRGLTggcHJpdmF0ZSBtb2RlIDEwMDUgKi8KKyNlbmRpZgorfSBNb3VzZUZvcm1hdDsKKwogLyoKICAqIFN0cnVjdHVyZXMgZm9yIHNjcm9sbGluZy4KICAqLwpAQCAtNDUyLDcgKzcwMCw3IEBACiAKIHN0cnVjdCBfU0xLOwogCi0jaWZuZGVmIFVTRV9URVJNTElCCisjaWYgIShkZWZpbmVkKFVTRV9URVJNTElCKSB8fCBkZWZpbmVkKFVTRV9CVUlMRF9DQykpCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC00NjQsMTMgKzcxMiwxMyBAQAogfSBzbGtfZW50OwogCiB0eXBlZGVmIHN0cnVjdCBfU0xLIHsKLQljaGFyIGRpcnR5OwkJLyogYWxsIGxhYmVscyBoYXZlIGNoYW5nZWQgKi8KLQljaGFyIGhpZGRlbjsJCS8qIHNvZnQgbGFiZWxzIGFyZSBoaWRkZW4gKi8KLQlXSU5ET1cgKndpbjsKKwlib29sICAgIGRpcnR5OwkJLyogYWxsIGxhYmVscyBoYXZlIGNoYW5nZWQgKi8KKwlib29sICAgIGhpZGRlbjsJCS8qIHNvZnQgbGFiZWxzIGFyZSBoaWRkZW4gKi8KKwlXSU5ET1cgICp3aW47CiAJc2xrX2VudCAqZW50OwotCXNob3J0ICBtYXhsYWI7CQkvKiBudW1iZXIgb2YgYXZhaWxhYmxlIGxhYmVscyAqLwotCXNob3J0ICBsYWJjbnQ7CQkvKiBudW1iZXIgb2YgYWxsb2NhdGVkIGxhYmVscyAqLwotCXNob3J0ICBtYXhsZW47CQkvKiBsZW5ndGggb2YgbGFiZWxzICovCisJc2hvcnQgICBtYXhsYWI7CQkvKiBudW1iZXIgb2YgYXZhaWxhYmxlIGxhYmVscyAqLworCXNob3J0ICAgbGFiY250OwkJLyogbnVtYmVyIG9mIGFsbG9jYXRlZCBsYWJlbHMgKi8KKwlzaG9ydCAgIG1heGxlbjsJCS8qIGxlbmd0aCBvZiBsYWJlbHMgKi8KIAlOQ1VSU0VTX0NIX1QgYXR0cjsJLyogc29mdCBsYWJlbCBhdHRyaWJ1dGUgKi8KIH0gU0xLOwogCkBAIC00ODUsNiArNzMzLDkgQEAKICNpZiBVU0VfR1BNX1NVUFBPUlQKICN1bmRlZiBidXR0b25zCQkJLyogdGVybS5oIGRlZmluZXMgdGhpcywgYW5kIGdwbSB1c2VzIGl0ISAqLwogI2luY2x1ZGUgPGdwbS5oPgorI2lmIFVTRV9XRUFLX1NZTUJPTFMKK3dlYWtfc3ltYm9sKEdwbV9XZ2V0Y2gpOworI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJQkRMCiAvKiBsaW5rIGR5bmFtaWNhbGx5IHRvIEdQTSAqLwpAQCAtNDkzLDEwICs3NDQsMTAgQEAKIHR5cGVkZWYgaW50ICgqVFlQRV9HcG1fQ2xvc2UpICh2b2lkKTsKIHR5cGVkZWYgaW50ICgqVFlQRV9HcG1fR2V0RXZlbnQpIChHcG1fRXZlbnQgKik7CiAKLSNkZWZpbmUgbXlfZ3BtX2ZkICAgICAgIFNQLT5fbW91c2VfZ3BtX2ZkCi0jZGVmaW5lIG15X0dwbV9PcGVuICAgICBTUC0+X21vdXNlX0dwbV9PcGVuCi0jZGVmaW5lIG15X0dwbV9DbG9zZSAgICBTUC0+X21vdXNlX0dwbV9DbG9zZQotI2RlZmluZSBteV9HcG1fR2V0RXZlbnQgU1AtPl9tb3VzZV9HcG1fR2V0RXZlbnQKKyNkZWZpbmUgbXlfZ3BtX2ZkICAgICAgIFNQX1BBUk0tPl9tb3VzZV9ncG1fZmQKKyNkZWZpbmUgbXlfR3BtX09wZW4gICAgIFNQX1BBUk0tPl9tb3VzZV9HcG1fT3BlbgorI2RlZmluZSBteV9HcG1fQ2xvc2UgICAgU1BfUEFSTS0+X21vdXNlX0dwbV9DbG9zZQorI2RlZmluZSBteV9HcG1fR2V0RXZlbnQgU1BfUEFSTS0+X21vdXNlX0dwbV9HZXRFdmVudAogI2Vsc2UKIC8qIGxpbmsgc3RhdGljYWxseSB0byBHUE0gKi8KICNkZWZpbmUgbXlfZ3BtX2ZkICAgICAgICZncG1fZmQKQEAgLTU2Myw4ICs4MTQsMTAgQEAKICAqLwogI2lmIE1JWEVEQ0FTRV9GSUxFTkFNRVMKICNkZWZpbmUgTEVBRl9GTVQgIiVjIgorI2RlZmluZSBMRUFGX0xFTiAxCiAjZWxzZQogI2RlZmluZSBMRUFGX0ZNVCAiJTAyeCIKKyNkZWZpbmUgTEVBRl9MRU4gMgogI2VuZGlmCiAKIC8qCkBAIC01NzcsMTcgKzgzMCwzMCBAQAogI2RlZmluZSBUUkFDRU1TRV9NQVgJKDgwICsgKDUgKiAxMCkgKyAoMzIgKiAxNSkpCiAjZGVmaW5lIFRSQUNFTVNFX0ZNVAkiaWQgJTJkICBhdCAoJTJkLCAlMmQsICUyZCkgc3RhdGUgJTRseCA9IHsiIC8qIH0gKi8KIAorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorc3RydWN0IERyaXZlclRDQjsgLyogVGVybWluYWwgQ29udHJvbCBCbG9jayBmb3J3YXJkIGRlY2xhcmF0aW9uICovCisjZGVmaW5lIElOSVRfVEVSTV9EUklWRVIoKQlfbmNfZ2xvYmFscy50ZXJtX2RyaXZlciA9IF9uY19nZXRfZHJpdmVyCisjZWxzZQorI2RlZmluZSBJTklUX1RFUk1fRFJJVkVSKCkJLyogbm90aGluZyAqLworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGNoYXIgKnZhbHVlOworfSBJVEVSQVRPUl9WQVJTOworCiAvKgogICogR2xvYmFsIGRhdGEgd2hpY2ggaXMgbm90IHNwZWNpZmljIHRvIGEgc2NyZWVuLgogICovCiB0eXBlZGVmIHN0cnVjdCB7CisJU0lHX0FUT01JQ19UCWhhdmVfc2lndHN0cDsKIAlTSUdfQVRPTUlDX1QJaGF2ZV9zaWd3aW5jaDsKIAlTSUdfQVRPTUlDX1QJY2xlYW51cF9uZXN0ZWQ7CiAKIAlib29sCQlpbml0X3NpZ25hbHM7CiAJYm9vbAkJaW5pdF9zY3JlZW47CiAKLQljb25zdCBjaGFyCSpjb21wX3NvdXJjZW5hbWU7CisJY2hhcgkJKmNvbXBfc291cmNlbmFtZTsKIAljaGFyCQkqY29tcF90ZXJtdHlwZTsKIAogCWJvb2wJCWhhdmVfdGljX2RpcmVjdG9yeTsKQEAgLTU5OSw2ICs4NjUsNyBAQAogCiAJY2hhcgkJKmZpcnN0X25hbWU7CiAJY2hhcgkJKiprZXluYW1lX3RhYmxlOworCWludAkJaW5pdF9rZXluYW1lOwogCiAJaW50CQlzbGtfZm9ybWF0OwogCkBAIC02MDksOCArODc2LDE2IEBACiAJaW50CQl0Z2V0ZW50X2luZGV4OwogCWxvbmcJCXRnZXRlbnRfc2VxdWVuY2U7CiAKKwljaGFyCQkqZGJkX2Jsb2I7CS8qIHN0cmluZy1oZWFwIGZvciBkYmRfbGlzdFtdICovCisJY2hhcgkJKipkYmRfbGlzdDsJLyogZGlzdGluY3QgcGxhY2VzIHRvIGxvb2sgZm9yIGRhdGEgKi8KKwlpbnQJCWRiZF9zaXplOwkvKiBsZW5ndGggb2YgZGJkX2xpc3RbXSAqLworCXRpbWVfdAkJZGJkX3RpbWU7CS8qIGNhY2hlIGxhc3QgdXBkYXRlZCAqLworCUlURVJBVE9SX1ZBUlMJZGJkX3ZhcnNbZGJkTEFTVF07CisKKyNpZm5kZWYgVVNFX1NQX1dJTkRPV0xJU1QKIAlXSU5ET1dMSVNUCSpfbmNfd2luZG93bGlzdDsKLSNkZWZpbmUgX25jX3dpbmRvd3MJX25jX2dsb2JhbHMuX25jX3dpbmRvd2xpc3QKKyNkZWZpbmUgV2luZG93TGlzdChzcCkJX25jX2dsb2JhbHMuX25jX3dpbmRvd2xpc3QKKyNlbmRpZgogCiAjaWYgVVNFX0hPTUVfVEVSTUlORk8KIAljaGFyCQkqaG9tZV90ZXJtaW5mbzsKQEAgLTYyMSw2ICs4OTYsMTAgQEAKIAlpbnQJCXNhZmVwcmludF9yb3dzOwogI2VuZGlmCiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlpbnQJCSgqdGVybV9kcml2ZXIpKHN0cnVjdCBEcml2ZXJUQ0IqLCBjb25zdCBjaGFyKiwgaW50Kik7CisjZW5kaWYKKwogI2lmZGVmIFRSQUNFCiAJYm9vbAkJaW5pdF90cmFjZTsKIAljaGFyCQl0cmFjZV9mbmFtZVtQQVRIX01BWF07CkBAIC02NDQsNyArOTIzLDkgQEAKIAljaGFyCQl0cmFjZWF0cl9jb2xvcl9idWZbMl1bODBdOwogCWludAkJdHJhY2VhdHJfY29sb3Jfc2VsOwogCWludAkJdHJhY2VhdHJfY29sb3JfbGFzdDsKLQorI2lmICFkZWZpbmVkKFVTRV9QVEhSRUFEUykgJiYgVVNFX1JFRU5UUkFOVAorCWludAkJbmVzdGVkX3RyYWNlZjsKKyNlbmRpZgogI2VuZGlmCS8qIFRSQUNFICovCiAKICNpZmRlZiBVU0VfUFRIUkVBRFMKQEAgLTY1NSw2ICs5MzYsOSBAQAogCWludAkJdXNlX3B0aHJlYWRzOwogI2RlZmluZSBfbmNfdXNlX3B0aHJlYWRzCV9uY19nbG9iYWxzLnVzZV9wdGhyZWFkcwogI2VuZGlmCisjaWYgVVNFX1BUSFJFQURTX0VJTlRSCisJcHRocmVhZF90CXJlYWRfdGhyZWFkOwkJLyogVGhlIHJlYWRpbmcgdGhyZWFkICovCisjZW5kaWYKIH0gTkNVUlNFU19HTE9CQUxTOwogCiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfR0xPQkFMUykgX25jX2dsb2JhbHM7CkBAIC02NjksMjcgKzk1Myw0MSBAQAogCWJvb2wJCXVzZV9lbnY7CiAJYm9vbAkJZmlsdGVyX21vZGU7CiAJYXR0cl90CQlwcmV2aW91c19hdHRyOworI2lmbmRlZiBVU0VfU1BfUklQT0ZGCiAJcmlwb2ZmX3QJcmlwcGVkb2ZmW05fUklQU107CiAJcmlwb2ZmX3QJKnJzcDsKKyNlbmRpZgogCVRQQVJNX1NUQVRFCXRwYXJtX3N0YXRlOwogCVRUWQkJKnNhdmVkX3R0eTsJLyogc2F2ZXR0eS9yZXNldHR5IGluZm9ybWF0aW9uCSAgICAqLwogI2lmIE5DVVJTRVNfTk9fUEFERElORwogCWJvb2wJCV9ub19wYWRkaW5nOwkvKiBmbGFnIHRvIHNldCBpZiBwYWRkaW5nIGRpc2FibGVkICAqLwogI2VuZGlmCisJTkNVUlNFU19TUF9PVVRDCV9vdXRjaDsJCS8qIG91dHB1dCBoYW5kbGVyIGlmIG5vdCBwdXRjICovCiAjaWYgQlJPS0VOX0xJTktFUiB8fCBVU0VfUkVFTlRSQU5UCiAJY2h0eXBlCQkqcmVhbF9hY3NfbWFwOwogCWludAkJX0xJTkVTOwogCWludAkJX0NPTFM7CisJaW50CQlfVEFCU0laRTsKKwlpbnQJCV9FU0NERUxBWTsKIAlURVJNSU5BTAkqX2N1cl90ZXJtOwogI2lmZGVmIFRSQUNFCiAJbG9uZwkJX291dGNoYXJzOwogCWNvbnN0IGNoYXIJKl90cHV0c190cmFjZTsKICNlbmRpZgogI2VuZGlmCisJYm9vbAkJdXNlX3Rpb2N0bDsKIH0gTkNVUlNFU19QUkVTQ1JFRU47CiAKLSNkZWZpbmUgcmlwb2ZmX3NwCV9uY19wcmVzY3JlZW4ucnNwCi0jZGVmaW5lIHJpcG9mZl9zdGFjawlfbmNfcHJlc2NyZWVuLnJpcHBlZG9mZgorLyoKKyAqIFVzZSBzY3JlZW4tc3BlY2lmaWMgcmlwb2ZmIGRhdGEgKGZvciBzb2Z0a2V5cykgcmF0aGVyIHRoYW4gZ2xvYmFsLgorICovCisjaWZkZWYgVVNFX1NQX1JJUE9GRgorI2RlZmluZSBzYWZlX3JpcG9mZl9zcCAgICAgKHNwKS0+cnNwCisjZGVmaW5lIHNhZmVfcmlwb2ZmX3N0YWNrICAoc3ApLT5yaXBwZWRvZmYKKyNlbHNlCisjZGVmaW5lIHNhZmVfcmlwb2ZmX3NwCSAgIF9uY19wcmVzY3JlZW4ucnNwCisjZGVmaW5lIHNhZmVfcmlwb2ZmX3N0YWNrICBfbmNfcHJlc2NyZWVuLnJpcHBlZG9mZgorI2VuZGlmCiAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19QUkVTQ1JFRU4pIF9uY19wcmVzY3JlZW47CiAKQEAgLTY5OCwxMSArOTk2LDE1IEBACiAgKi8KIAogc3RydWN0IHNjcmVlbiB7Ci0JaW50CQlfaWZkOwkJLyogaW5wdXQgZmlsZSBwdHIgZm9yIHNjcmVlbgkgICAgKi8KKwlpbnQJCV9pZmQ7CQkvKiBpbnB1dCBmaWxlIGRlc2NyaXB0b3IgZm9yIHNjcmVlbiAqLworCWludAkJX29mZDsJCS8qIG91dHB1dCBmaWxlIGRlc2NyaXB0b3IgZm9yIHNjcmVlbiAqLwogCUZJTEUJCSpfb2ZwOwkJLyogb3V0cHV0IGZpbGUgcHRyIGZvciBzY3JlZW4JICAgICovCi0JY2hhcgkJKl9zZXRidWY7CS8qIGJ1ZmZlcmVkIEkvTyBmb3Igb3V0cHV0CSAgICAqLworCWNoYXIJCSpvdXRfYnVmZmVyOwkvKiBvdXRwdXQgYnVmZmVyCQkgICAgKi8KKwlzaXplX3QJCW91dF9saW1pdDsJLyogb3V0cHV0IGJ1ZmZlciBzaXplCQkgICAgKi8KKwlzaXplX3QJCW91dF9pbnVzZTsJLyogb3V0cHV0IGJ1ZmZlciBjdXJyZW50IHVzZQkgICAgKi8KIAlib29sCQlfZmlsdGVyZWQ7CS8qIGZpbHRlcigpIHdhcyBjYWxsZWQJCSAgICAqLwotCWJvb2wJCV9idWZmZXJlZDsJLyogc2V0dmJ1ZiB1c2VzIF9zZXRidWYgZGF0YQkgICAgKi8KKwlib29sCQlfcHJlc2NyZWVuOwkvKiBpcyBpbiBwcmVzY3JlZW4gcGhhc2UJICAgICovCisJYm9vbAkJX3VzZV9lbnY7CS8qIExJTkVTICYgQ09MUyBmcm9tIGVudmlyb25tZW50PyAgICovCiAJaW50CQlfY2hlY2tmZDsJLyogZmlsZWRlc2MgZm9yIHR5cGVhaGVhZCBjaGVjawkgICAgKi8KIAlURVJNSU5BTAkqX3Rlcm07CQkvKiB0ZXJtaW5hbCB0eXBlIGluZm9ybWF0aW9uCSAgICAqLwogCVRUWQkJX3NhdmVkX3R0eTsJLyogc2F2ZXR0eS9yZXNldHR5IGluZm9ybWF0aW9uCSAgICAqLwpAQCAtNzE2LDYgKzEwMTgsMTAgQEAKIAlXSU5ET1cJCSpfbmV3c2NyOwkvKiB2aXJ0dWFsIHNjcmVlbiB0byBiZSB1cGRhdGVkIHRvICAqLwogCVdJTkRPVwkJKl9zdGRzY3I7CS8qIHNjcmVlbidzIGZ1bGwtd2luZG93IGNvbnRleHQJICAgICovCiAKKyNkZWZpbmUgQ3VyU2NyZWVuKHNwKSAgKHNwKS0+X2N1cnNjcgorI2RlZmluZSBOZXdTY3JlZW4oc3ApICAoc3ApLT5fbmV3c2NyCisjZGVmaW5lIFN0ZFNjcmVlbihzcCkgIChzcCktPl9zdGRzY3IKKwogCVRSSUVTCQkqX2tleXRyeTsJLyogIlRyeSIgZm9yIHVzZSB3aXRoIGtleXBhZCBtb2RlICAgKi8KIAlUUklFUwkJKl9rZXlfb2s7CS8qIERpc2FibGVkIGtleXMgdmlhIGtleW9rKCxGQUxTRSkgICovCiAJYm9vbAkJX3RyaWVkOwkJLyoga2V5cGFkIG1vZGUgd2FzIGluaXRpYWxpemVkCSAgICAqLwpAQCAtNzk0LDExICsxMTAwLDE0IEBACiAJaW50CQlfY29sb3JfY291bnQ7CS8qIGNvdW50IG9mIGNvbG9ycyBpbiBwYWxldHRlCSAgICAgKi8KIAljb2xvcnBhaXJfdAkqX2NvbG9yX3BhaXJzOwkvKiBzY3JlZW4ncyBjb2xvciBwYWlyIGxpc3QJICAgICAqLwogCWludAkJX3BhaXJfY291bnQ7CS8qIGNvdW50IG9mIGNvbG9yIHBhaXJzCQkgICAgICovCisJaW50CQlfcGFpcl9saW1pdDsJLyogYWN0dWFsIGxpbWl0IG9mIGNvbG9yLXBhaXJzICAgICAgICovCiAjaWYgTkNVUlNFU19FWFRfRlVOQ1MKKwlib29sCQlfYXNzdW1lZF9jb2xvcjsgLyogdXNlIGFzc3VtZWQgY29sb3JzCQkgICAgICovCiAJYm9vbAkJX2RlZmF1bHRfY29sb3I7IC8qIHVzZSBkZWZhdWx0IGNvbG9ycwkJICAgICAqLwogCWJvb2wJCV9oYXNfc2dyXzM5XzQ5OyAvKiBoYXMgRUNNQSBkZWZhdWx0IGNvbG9yIHN1cHBvcnQgICAgKi8KIAlpbnQJCV9kZWZhdWx0X2ZnOwkvKiBhc3N1bWVkIGRlZmF1bHQgZm9yZWdyb3VuZAkgICAgICovCiAJaW50CQlfZGVmYXVsdF9iZzsJLyogYXNzdW1lZCBkZWZhdWx0IGJhY2tncm91bmQJICAgICAqLworCWludAkJX2RlZmF1bHRfcGFpcnM7CS8qIGNvdW50IHBhaXJzIHVzaW5nIGRlZmF1bHQgY29sb3IgICAqLwogI2VuZGlmCiAJY2h0eXBlCQlfb2tfYXR0cmlidXRlczsgLyogdmFsaWQgYXR0cmlidXRlcyBmb3IgdGVybWluYWwgICAgICovCiAJY2h0eXBlCQlfeG1jX3N1cHByZXNzOwkvKiBhdHRyaWJ1dGVzIHRvIHN1cHByZXNzIGlmIHhtYyAgICAgKi8KQEAgLTgxMCw2ICsxMTE5LDEzIEBACiAJLyogdXNlZCBpbiBsaWJfdmlkYXR0ci5jICovCiAJYm9vbAkJX3VzZV9ybXNvOwkvKiB0cnVlIGlmIHdlIG1heSB1c2UgJ3Jtc28nCSAgICAgKi8KIAlib29sCQlfdXNlX3JtdWw7CS8qIHRydWUgaWYgd2UgbWF5IHVzZSAncm11bCcJICAgICAqLworI2lmIFVTRV9JVEFMSUMKKwlib29sCQlfdXNlX3JpdG07CS8qIHRydWUgaWYgd2UgbWF5IHVzZSAncml0bScJICAgICAqLworI2VuZGlmCisKKyNpZiBVU0VfS0xJQkNfS0JECisJYm9vbAkJX2V4dGVuZGVkX2tleTsJLyogdHJ1ZSBpZiBhbiBleHRlbmRlZCBrZXkJICAgICAqLworI2VuZGlmCiAKIAkvKgogCSAqIFRoZXNlIGRhdGEgY29ycmVzcG9uZCB0byB0aGUgc3RhdGUgb2YgdGhlIGlkY29rKCkgYW5kIGlkbG9rKCkKQEAgLTgyMCw4ICsxMTM2LDYgQEAKIAkgKi8KIAlib29sCQlfbmNfc3BfaWRsb2s7CiAJYm9vbAkJX25jX3NwX2lkY29rOwotI2RlZmluZSBfbmNfaWRsb2sgU1AtPl9uY19zcF9pZGxvawotI2RlZmluZSBfbmNfaWRjb2sgU1AtPl9uY19zcF9pZGNvawogCiAJLyoKIAkgKiBUaGVzZSBhcmUgdGhlIGRhdGEgdGhhdCBzdXBwb3J0IHRoZSBtb3VzZSBpbnRlcmZhY2UuCkBAIC04MzYsNyArMTE1MCwxMCBAQAogCXZvaWQJCSgqX21vdXNlX3dyYXApCShTQ1JFRU4gKik7CiAJaW50CQlfbW91c2VfZmQ7CS8qIGZpbGUtZGVzY3JpcHRvciwgaWYgYW55ICovCiAJYm9vbAkJX21vdXNlX2FjdGl2ZTsJLyogdHJ1ZSBpZiBpbml0aWFsaXplZCAqLwotCW1tYXNrX3QJCV9tb3VzZV9tYXNrOworCW1tYXNrX3QJCV9tb3VzZV9tYXNrOwkvKiBzZXQgdmlhIG1vdXNlbWFzaygpICovCisJbW1hc2tfdAkJX21vdXNlX21hc2syOwkvKiBPUidzIGluIHByZXNzL3JlbGVhc2UgYml0cyAqLworCW1tYXNrX3QJCV9tb3VzZV9ic3RhdGU7CisJTW91c2VGb3JtYXQJX21vdXNlX2Zvcm1hdDsJLyogdHlwZSBvZiB4dGVybSBtb3VzZSBwcm90b2NvbCAqLwogCU5DVVJTRVNfQ09OU1QgY2hhciAqX21vdXNlX3h0ZXJtY2FwOyAvKiBzdHJpbmcgdG8gZW5hYmxlL2Rpc2FibGUgbW91c2UgKi8KIAlNRVZFTlQJCV9tb3VzZV9ldmVudHNbRVZfTUFYXTsJLyogaG9sZCB0aGUgbGFzdCBtb3VzZSBldmVudCBzZWVuICovCiAJTUVWRU5UCQkqX21vdXNlX2V2ZW50cDsJLyogbmV4dCBmcmVlIHNsb3QgaW4gZXZlbnQgcXVldWUgKi8KQEAgLTg3MSwxMSArMTE4OCwxOSBAQAogCWludAkJX3N5c21vdXNlX25ld19idXR0b25zOwogI2VuZGlmCiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlNRVZFTlQJCV9kcnZfbW91c2VfZmlmb1tGSUZPX1NJWkVdOworCWludAkJX2Rydl9tb3VzZV9oZWFkOworCWludAkJX2Rydl9tb3VzZV90YWlsOworCWludAkJX2Rydl9tb3VzZV9vbGRfYnV0dG9uczsKKwlpbnQJCV9kcnZfbW91c2VfbmV3X2J1dHRvbnM7CisjZW5kaWYKIAkvKgogCSAqIFRoaXMgc3VwcG9ydHMgYXV0b21hdGljIHJlc2l6aW5nCiAJICovCiAjaWYgVVNFX1NJWkVDSEFOR0UKLQlpbnQJCSgqX3Jlc2l6ZSkoaW50LGludCk7CisJaW50CQkoKl9yZXNpemUpKE5DVVJTRVNfU1BfRENMeCBpbnQgeSwgaW50IHgpOworCWludAkJKCpfdW5nZXRjaCkoU0NSRUVOICosIGludCk7CiAjZW5kaWYKIAogCS8qCkBAIC04OTQsOCArMTIxOSw3IEBACiAJaW50CQkqX29sZG51bV9saXN0OwogCWludAkJX29sZG51bV9zaXplOwogCi0JYm9vbAkJX2NsZWFudXA7CS8qIGNsZWFudXAgYWZ0ZXIgaW50L3F1aXQgc2lnbmFsICovCi0JaW50CQkoKl9vdXRjaCkoaW50KTsgLyogb3V0cHV0IGhhbmRsZXIgaWYgbm90IHB1dGMgKi8KKwlOQ1VSU0VTX1NQX09VVEMJX291dGNoOwkJLyogb3V0cHV0IGhhbmRsZXIgaWYgbm90IHB1dGMgKi8KIAogCWludAkJX2xlZ2FjeV9jb2Rpbmc7CS8qIHNlZSB1c2VfbGVnYWN5X2NvZGluZygpICovCiAKQEAgLTkxNSw2ICsxMjM5LDE1IEBACiAJY2hhcgkJdHJhY2VjaHJfYnVmWzQwXTsKIAljaGFyCQl0cmFjZW1zZV9idWZbVFJBQ0VNU0VfTUFYXTsKICNlbmRpZgorI2lmZGVmIFVTRV9TUF9XSU5ET1dMSVNUCisJV0lORE9XTElTVCoJX3dpbmRvd2xpc3Q7CisjZGVmaW5lIFdpbmRvd0xpc3Qoc3ApICAoc3ApLT5fd2luZG93bGlzdAorI2VuZGlmCisJTkNVUlNFU19PVVRDCWp1bXA7CisKKwlyaXBvZmZfdAlyaXBwZWRvZmZbTl9SSVBTXTsKKwlyaXBvZmZfdAkqcnNwOworCiAJLyoKIAkgKiBuY3Vyc2VzL25jdXJzZXN3IGFyZSB0aGUgc2FtZSB1cCB0byB0aGlzIHBvaW50LgogCSAqLwpAQCAtOTIzLDE3ICsxMjU2LDIwIEBACiAJICogVVRGLTgsIGJ1dCBkbyBub3QgcGVybWl0IEFDUyBhdCB0aGUgc2FtZSB0aW1lIChzZWUgdHR5X3VwZGF0ZS5jKS4KIAkgKi8KIAlib29sCQlfc2NyZWVuX2Fjc19maXg7CisJYm9vbAkJX3NjcmVlbl91bmljb2RlOwogI2VuZGlmCisKKwlib29sCQlfdXNlX3Rpb2N0bDsKIH07CiAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoU0NSRUVOICopIF9uY19zY3JlZW5fY2hhaW47CiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFNJR19BVE9NSUNfVCkgX25jX2hhdmVfc2lnd2luY2g7CiAKIAlXSU5ET1dMSVNUIHsKLQlXSU5ET1cJd2luOwkJLyogZmlyc3QsIHNvIFdJTkRPV19FWFQoKSB3b3JrcyAqLwogCVdJTkRPV0xJU1QgKm5leHQ7CiAJU0NSRUVOICpzY3JlZW47CQkvKiBzY3JlZW4gY29udGFpbmluZyB0aGUgd2luZG93ICovCi0jaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorCVdJTkRPVwl3aW47CQkvKiBXSU5ET1dfRVhUKCkgbmVlZHMgdG8gYWNjb3VudCBmb3Igb2Zmc2V0ICovCisjaWYgTkNVUlNFU19XSURFQ0hBUgogCWNoYXIgYWRkY2hfd29ya1soTUJfTEVOX01BWCAqIDkpICsgMV07CiAJdW5zaWduZWQgYWRkY2hfdXNlZDsJLyogbnVtYmVyIG9mIGJ5dGVzIGluIGFkZGNoX3dvcmtbXSAqLwogCWludCBhZGRjaF94OwkJLyogeC1wb3NpdGlvbiBmb3IgYWRkY2hfd29ya1tdICovCkBAIC05NDEsNyArMTI3NywyMSBAQAogI2VuZGlmCiB9OwogCi0jZGVmaW5lIFdJTkRPV19FWFQod2luLGZpZWxkKSAoKChXSU5ET1dMSVNUICopKHdpbikpLT5maWVsZCkKKyNkZWZpbmUgV0lORE9XX0VYVCh3LG0pICgoKFdJTkRPV0xJU1QgKikoKHZvaWQgKikoKGNoYXIgKikodykgLSBvZmZzZXRvZihXSU5ET1dMSVNULCB3aW4pKSkpLT5tKQorCisjZGVmaW5lIFNQX1BSRV9JTklUKHNwKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9jdXJzcm93ID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9jdXJzY29sID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9ubCA9IFRSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9yYXcgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9jYnJlYWsgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9lY2hvID0gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9maWZvaGVhZCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9lbmR3aW4gPSBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9jdXJzb3IgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgV2luZG93TGlzdChzcCkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3AtPl9vdXRjaCA9IE5DVVJTRVNfT1VUQ19GVU5DOyAgICAgICAgICAgICBcCisgICAgc3AtPmp1bXAgPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAKIC8qIHVzdWFsbHkgaW4gPGxpbWl0cy5oPiAqLwogI2lmbmRlZiBVQ0hBUl9NQVgKQEAgLTEwMTcsOCArMTM2Nyw5IEBACiAjZGVmaW5lIFJFU0VUX09VVENIQVJTKCkgQ09VTlRfT1VUQ0hBUlMoLV9uY19vdXRjaGFycykKIAogI2RlZmluZSBVQ2hhcihjKQkoKHVuc2lnbmVkIGNoYXIpKGMpKQotI2RlZmluZSBDaENoYXJPZihjKQkoKGMpICYgKGNodHlwZSlBX0NIQVJURVhUKQotI2RlZmluZSBDaEF0dHJPZihjKQkoKGMpICYgKGNodHlwZSlBX0FUVFJJQlVURVMpCisjZGVmaW5lIFVTaG9ydChjKQkoKHVuc2lnbmVkIHNob3J0KShjKSkKKyNkZWZpbmUgQ2hDaGFyT2YoYykJKChjaHR5cGUpKGMpICYgKGNodHlwZSlBX0NIQVJURVhUKQorI2RlZmluZSBDaEF0dHJPZihjKQkoKGNodHlwZSkoYykgJiAoY2h0eXBlKUFfQVRUUklCVVRFUykKIAogI2lmbmRlZiBNQl9MRU5fTUFYCiAjZGVmaW5lIE1CX0xFTl9NQVggOCAvKiBzaG91bGQgYmUgPj0gTUJfQ1VSX01BWCwgYnV0IHRoYXQgbWF5IGJlIGEgZnVuY3Rpb24gKi8KQEAgLTEwNjEsOSArMTQxMiw5IEBACiAjZGVmaW5lIFNldENoYXIoY2gsYyxhKSBkbyB7CQkJCQkJCSAgICBcCiAJCQkgICAgTkNVUlNFU19DSF9UICpfY3AgPSAmY2g7CQkJCSAgICBcCiAJCQkgICAgbWVtc2V0KF9jcCwgMCwgc2l6ZW9mKGNoKSk7CQkJCSAgICBcCi0JCQkgICAgX2NwLT5jaGFyc1swXSA9IChjKTsJCQkJCSAgICBcCisJCQkgICAgX2NwLT5jaGFyc1swXSA9ICh3Y2hhcl90KSAoYyk7CQkJICAgIFwKIAkJCSAgICBfY3AtPmF0dHIgPSAoYSk7CQkJCQkgICAgXAotCQkJICAgIGlmX0VYVF9DT0xPUlMoU2V0UGFpcihjaCwgUEFJUl9OVU1CRVIoYSkpKTsJCSAgICBcCisJCQkgICAgaWZfRVhUX0NPTE9SUyhTZXRQYWlyKGNoLCBQYWlyTnVtYmVyKGEpKSk7CQkgICAgXAogCQkJfSB3aGlsZSAoMCkKICNkZWZpbmUgQ0hSRUYod2NoKQkoJndjaCkKICNkZWZpbmUgQ0hERVJFRih3Y2gpCSgqd2NoKQpAQCAtMTA3Miw5ICsxNDIzLDkgQEAKICNkZWZpbmUgUFVUQ19EQVRBCWNoYXIgUFVUQ19idWZbTUJfTEVOX01BWF07IGludCBQVVRDX2ksIFBVVENfbjsgXAogCQkJbWJzdGF0ZV90IFBVVF9zdDsgd2NoYXJfdCBQVVRDX2NoCiAjZGVmaW5lIFBVVENfSU5JVAlpbml0X21iIChQVVRfc3QpCi0jZGVmaW5lIFBVVEMoY2gsYikJZG8geyBpZighaXNXaWRlY0V4dChjaCkpIHsJCQkJICAgIFwKKyNkZWZpbmUgUFVUQyhjaCkJZG8geyBpZighaXNXaWRlY0V4dChjaCkpIHsJCQkJICAgIFwKIAkJCWlmIChDaGFyYWJsZShjaCkpIHsJCQkJCSAgICBcCi0JCQkgICAgZnB1dGMoQ2hhck9mKGNoKSwgYik7CQkJCSAgICBcCisJCQkgICAgTkNVUlNFU19PVVRDX0ZVTkMgKE5DVVJTRVNfU1BfQVJHeCBDaGFyT2YoY2gpKTsgXAogCQkJICAgIENPVU5UX09VVENIQVJTKDEpOwkJCQkJICAgIFwKIAkJCX0gZWxzZSB7CQkJCQkJICAgIFwKIAkJCSAgICBQVVRDX0lOSVQ7CQkJCQkJICAgIFwKQEAgLTEwODIsMTQgKzE0MzMsMTggQEAKIAkJCQlQVVRDX2NoID0gKGNoKS5jaGFyc1tQVVRDX2ldOwkJCSAgICBcCiAJCQkJaWYgKFBVVENfY2ggPT0gTCdcMCcpCQkJCSAgICBcCiAJCQkJICAgIGJyZWFrOwkJCQkJICAgIFwKLQkJCQlQVVRDX24gPSB3Y3J0b21iKFBVVENfYnVmLAkJCSAgICBcCi0JCQkJCQkgKGNoKS5jaGFyc1tQVVRDX2ldLCAmUFVUX3N0KTsJICAgIFwKKwkJCQlQVVRDX24gPSAoaW50KSB3Y3J0b21iKFBVVENfYnVmLAkJICAgIFwKKwkJCQkJCSAgICAgICAoY2gpLmNoYXJzW1BVVENfaV0sICZQVVRfc3QpOyBcCiAJCQkJaWYgKFBVVENfbiA8PSAwKSB7CQkJCSAgICBcCiAJCQkJICAgIGlmIChQVVRDX2NoICYmIGlzOGJpdHMoUFVUQ19jaCkgJiYgUFVUQ19pID09IDApIFwKLQkJCQkJcHV0YyhQVVRDX2NoLGIpOwkJCSAgICBcCisJCQkJCU5DVVJTRVNfT1VUQ19GVU5DIChOQ1VSU0VTX1NQX0FSR3ggQ2hhck9mKGNoKSk7IFwKIAkJCQkgICAgYnJlYWs7CQkJCQkgICAgXAorCQkJCX0gZWxzZSB7CQkJCQkgICAgXAorCQkJCSAgICBpbnQgUFVUQ19qOwkJCQkJICAgIFwKKwkJCQkgICAgZm9yIChQVVRDX2ogPSAwOyBQVVRDX2ogPCBQVVRDX247ICsrUFVUQ19qKSB7ICAgXAorCQkJCQlOQ1VSU0VTX09VVENfRlVOQyAoTkNVUlNFU19TUF9BUkd4IFBVVENfYnVmW1BVVENfal0pOyBcCisJCQkJICAgIH0JCQkJCQkgICAgXAogCQkJCX0JCQkJCQkgICAgXAotCQkJCWZ3cml0ZShQVVRDX2J1ZiwgKHVuc2lnbmVkKSBQVVRDX24sIDEsIGIpOwkgICAgXAogCQkJICAgIH0JCQkJCQkJICAgIFwKIAkJCSAgICBDT1VOVF9PVVRDSEFSUyhQVVRDX2kpOwkJCQkgICAgXAogCQkJfSB9IH0gd2hpbGUgKDApCkBAIC0xMTA1LDE4ICsxNDYwLDE4IEBACiAJICogemVyby4gIE90aGVyd2lzZSB3ZSBjYW4gdXNlIHRob3NlIGJpdHMgdG8gdGVsbCBpZiBhIGNlbGwgaXMgdGhlCiAJICogZmlyc3Qgb3IgZXh0ZW5zaW9uIHBhcnQgb2YgYSB3aWRlIGNoYXJhY3Rlci4KIAkgKi8KLSNkZWZpbmUgV2lkZWNFeHQoY2gpCShBdHRyT2YoY2gpICYgQV9DSEFSVEVYVCkKKyNkZWZpbmUgV2lkZWNFeHQoY2gpCShpbnQpIChBdHRyT2YoY2gpICYgQV9DSEFSVEVYVCkKICNkZWZpbmUgaXNXaWRlY0Jhc2UoY2gpCShXaWRlY0V4dChjaCkgPT0gMSkKICNkZWZpbmUgaXNXaWRlY0V4dChjaCkJKFdpZGVjRXh0KGNoKSA+IDEgJiYgV2lkZWNFeHQoY2gpIDwgMzIpCiAjZGVmaW5lIFNldFdpZGVjRXh0KGRzdCwgZXh0KQlBdHRyT2YoZHN0KSAmPSB+QV9DSEFSVEVYVCwJCVwKLQkJCQlBdHRyT2YoZHN0KSB8PSAoZXh0ICsgMSkKKwkJCQlBdHRyT2YoZHN0KSB8PSAoYXR0cl90KSAoZXh0ICsgMSkKIAogI2RlZmluZSBpZl9XSURFQyhjb2RlKSAgY29kZQotI2RlZmluZSBDaGFyYWJsZShjaCkJKChTUCAhPSAwICYmIFNQLT5fbGVnYWN5X2NvZGluZykJCVwKKyNkZWZpbmUgQ2hhcmFibGUoY2gpCSgoKFNQX1BBUk0tPl9sZWdhY3lfY29kaW5nKQkJCVwKIAkJCSB8fCAoQXR0ck9mKGNoKSAmIEFfQUxUQ0hBUlNFVCkJCQlcCi0JCQkgfHwgKCFpc1dpZGVjRXh0KGNoKSAmJgkJCQlcCisJCQkgfHwgKCFpc1dpZGVjRXh0KGNoKSkpICYmCQkJXAogCQkJICAgICAoY2gpLmNoYXJzWzFdID09IEwnXDAnICYmCQkJXAotCQkJICAgICBfbmNfaXNfY2hhcmFibGUoQ2hhck9mKGNoKSkpKQorCQkJICAgICBfbmNfaXNfY2hhcmFibGUoQ2hhck9mKGNoKSkpCiAKICNkZWZpbmUgTChjaCkJCUwgIyMgY2gKICNlbHNlIC8qIH17ICovCkBAIC0xMTMzLDggKzE0ODgsOCBAQAogI2RlZmluZSBDSERFUkVGKHdjaCkJd2NoCiAjZGVmaW5lIEFSR19DSF9UCU5DVVJTRVNfQ0hfVAogI2RlZmluZSBDQVJHX0NIX1QJTkNVUlNFU19DSF9UCi0jZGVmaW5lIFBVVENfREFUQQlpbnQgZGF0YSA9IDAKLSNkZWZpbmUgUFVUQyhjaCxiKQlkbyB7IGRhdGEgPSBDaGFyT2YoY2gpOyBwdXRjKGRhdGEsYik7IH0gd2hpbGUgKDApCisjZGVmaW5lIFBVVENfREFUQQkvKiBub3RoaW5nICovCisjZGVmaW5lIFBVVEMoY2gpCU5DVVJTRVNfT1VUQ19GVU5DIChOQ1VSU0VTX1NQX0FSR3ggKGludCkgY2gpCiAKICNkZWZpbmUgQkxBTksJCSgnICd8QV9OT1JNQUwpCiAjZGVmaW5lIFpFUk9TCQkoJ1wwJ3xBX05PUk1BTCkKQEAgLTExNjIsMjUgKzE1MTcsMjUgQEAKIAogI2RlZmluZSBDSEFOR0VEX0NFTEwobGluZSxjb2wpIFwKIAlpZiAobGluZS0+Zmlyc3RjaGFyID09IF9OT0NIQU5HRSkgXAotCQlsaW5lLT5maXJzdGNoYXIgPSBsaW5lLT5sYXN0Y2hhciA9IGNvbDsgXAorCQlsaW5lLT5maXJzdGNoYXIgPSBsaW5lLT5sYXN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgKGNvbCk7IFwKIAllbHNlIGlmICgoY29sKSA8IGxpbmUtPmZpcnN0Y2hhcikgXAotCQlsaW5lLT5maXJzdGNoYXIgPSBjb2w7IFwKKwkJbGluZS0+Zmlyc3RjaGFyID0gKE5DVVJTRVNfU0laRV9UKSAoY29sKTsgXAogCWVsc2UgaWYgKChjb2wpID4gbGluZS0+bGFzdGNoYXIpIFwKLQkJbGluZS0+bGFzdGNoYXIgPSBjb2wKKwkJbGluZS0+bGFzdGNoYXIgPSAoTkNVUlNFU19TSVpFX1QpIChjb2wpCiAKICNkZWZpbmUgQ0hBTkdFRF9SQU5HRShsaW5lLHN0YXJ0LGVuZCkgXAogCWlmIChsaW5lLT5maXJzdGNoYXIgPT0gX05PQ0hBTkdFIFwKIAkgfHwgbGluZS0+Zmlyc3RjaGFyID4gKHN0YXJ0KSkgXAotCQlsaW5lLT5maXJzdGNoYXIgPSBzdGFydDsgXAorCQlsaW5lLT5maXJzdGNoYXIgPSAoTkNVUlNFU19TSVpFX1QpIChzdGFydCk7IFwKIAlpZiAobGluZS0+bGFzdGNoYXIgPT0gX05PQ0hBTkdFIFwKIAkgfHwgbGluZS0+bGFzdGNoYXIgPCAoZW5kKSkgXAotCQlsaW5lLT5sYXN0Y2hhciA9IGVuZAorCQlsaW5lLT5sYXN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgKGVuZCkKIAogI2RlZmluZSBDSEFOR0VEX1RPX0VPTChsaW5lLHN0YXJ0LGVuZCkgXAogCWlmIChsaW5lLT5maXJzdGNoYXIgPT0gX05PQ0hBTkdFIFwKIAkgfHwgbGluZS0+Zmlyc3RjaGFyID4gKHN0YXJ0KSkgXAotCQlsaW5lLT5maXJzdGNoYXIgPSBzdGFydDsgXAotCWxpbmUtPmxhc3RjaGFyID0gZW5kCisJCWxpbmUtPmZpcnN0Y2hhciA9IChOQ1VSU0VTX1NJWkVfVCkgKHN0YXJ0KTsgXAorCWxpbmUtPmxhc3RjaGFyID0gKE5DVVJTRVNfU0laRV9UKSAoZW5kKQogCiAjZGVmaW5lIFNJWkVPRih2KSAoc2l6ZW9mKHYpL3NpemVvZih2WzBdKSkKIApAQCAtMTE5NCw2ICsxNTQ5LDIwIEBACiAjaW5jbHVkZSA8bmNfYWxsb2MuaD4KIAogLyoKKyAqIFVzZSB0aGVzZSBmb3IgdGljL2luZm9jbXAgbWFsbG9jIGZhaWx1cmVzLiAgR2VuZXJhbGx5IHRoZSBuY3Vyc2VzIGxpYnJhcnkKKyAqIHRyaWVzIHRvIGxpbXAgYWxvbmcgYWZ0ZXIgYSBmYWlsdXJlLgorICovCisjZGVmaW5lIFRZUEVfTUFMTE9DKHR5cGUsIHNpemUsIG5hbWUpIFwKKwluYW1lID0gdHlwZU1hbGxvYyh0eXBlLCBzaXplKTsgXAorCWlmIChuYW1lID09IDApIFwKKwkgICAgX25jX2Vycl9hYm9ydChNU0dfTk9fTUVNT1JZKQorCisjZGVmaW5lIFRZUEVfUkVBTExPQyh0eXBlLCBzaXplLCBuYW1lKSBcCisJbmFtZSA9IHR5cGVSZWFsbG9jKHR5cGUsIHNpemUsIG5hbWUpOyBcCisJaWYgKG5hbWUgPT0gMCkgXAorCSAgICBfbmNfZXJyX2Fib3J0KE1TR19OT19NRU1PUlkpCisKKy8qCiAgKiBUVFkgYml0IGRlZmluaXRpb24gZm9yIGNvbnZlcnRpbmcgdGFicyB0byBzcGFjZXMuCiAgKi8KICNpZmRlZiBUQUIzCkBAIC0xMjE0LDggKzE1ODMsOCBAQAogICogU3RhbmRhcmRpemUvc2ltcGxpZnkgY29tbW9uIGxvb3BzCiAgKi8KICNkZWZpbmUgZWFjaF9zY3JlZW4ocCkgcCA9IF9uY19zY3JlZW5fY2hhaW47IHAgIT0gMDsgcCA9IChwKS0+X25leHRfc2NyZWVuCi0jZGVmaW5lIGVhY2hfd2luZG93KHApIHAgPSBfbmNfd2luZG93czsgcCAhPSAwOyBwID0gKHApLT5uZXh0Ci0jZGVmaW5lIGVhY2hfcmlwb2ZmKHApIHAgPSByaXBvZmZfc3RhY2s7IChwIC0gcmlwb2ZmX3N0YWNrKSA8IE5fUklQUzsgKytwCisjZGVmaW5lIGVhY2hfd2luZG93KHNwLHApIHAgPSBXaW5kb3dMaXN0KHNwKTsgcCAhPSAwOyBwID0gKHApLT5uZXh0CisjZGVmaW5lIGVhY2hfcmlwb2ZmKHApIHAgPSBzYWZlX3JpcG9mZl9zdGFjazsgKHAgLSBzYWZlX3JpcG9mZl9zdGFjaykgPCBOX1JJUFM7ICsrcAogCiAvKgogICogUHJlZml4ZXMgZm9yIGNhbGwvcmV0dXJuIHBvaW50cyBvZiBsaWJyYXJ5IGZ1bmN0aW9uIHRyYWNlcy4gIFdlIHVzZSB0aGVzZSB0bwpAQCAtMTI1NiwyMiArMTYyNSwzMCBAQAogCiAjZGVmaW5lIFRSKG4sIGEpCWlmIChVU0VfVFJBQ0VGKG4pKSBfbmNfbG9ja2VkX3RyYWNlZiBhCiAjZGVmaW5lIFQoYSkJCVRSKFRSQUNFX0NBTExTLCBhKQotI2RlZmluZSBUUkFDRV9SRVRVUk4odmFsdWUsdHlwZSkgcmV0dXJuIF9uY19yZXRyYWNlXyMjdHlwZSh2YWx1ZSkKKyNkZWZpbmUgVFJBQ0VfUkVUVVJOKHZhbHVlLHR5cGUpICAgICByZXR1cm4gX25jX3JldHJhY2VfIyN0eXBlKCh0eXBlKSh2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX1JFVFVSTjEodmFsdWUsZHN0KSAgICAgcmV0dXJuIF9uY19yZXRyYWNlXyMjZHN0KHZhbHVlKQorI2RlZmluZSBUUkFDRV9SRVRVUk4yKHZhbHVlLGRzdCxzcmMpIHJldHVybiBfbmNfcmV0cmFjZV8jI2RzdCMjXyMjc3JjKHZhbHVlKQorI2RlZmluZSBUUkFDRV9SRVRVUk5fU1AodmFsdWUsdHlwZSkgIHJldHVybiBfbmNfcmV0cmFjZV8jI3R5cGUoU1BfUEFSTSwgdmFsdWUpCisKKyNkZWZpbmUgTm9uTnVsbChzKQkoKHMpICE9IDAgPyBzIDogIjxudWxsPiIpCiAKICNkZWZpbmUgcmV0dXJuQXR0cihjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxhdHRyX3QpCiAjZGVmaW5lIHJldHVybkJpdHMoY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsdW5zaWduZWQpCiAjZGVmaW5lIHJldHVybkJvb2woY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsYm9vbCkKLSNkZWZpbmUgcmV0dXJuQ1B0cihjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxjcHRyKQotI2RlZmluZSByZXR1cm5DVm9pZFB0cihjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxjdm9pZF9wdHIpCi0jZGVmaW5lIHJldHVybkNoYXIoY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsY2h0eXBlKQorI2RlZmluZSByZXR1cm5DUHRyKGNvZGUpCVRSQUNFX1JFVFVSTjEoY29kZSxjcHRyKQorI2RlZmluZSByZXR1cm5DVm9pZFB0cihjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUsY3ZvaWRfcHRyKQorI2RlZmluZSByZXR1cm5DaGFyKGNvZGUpCVRSQUNFX1JFVFVSTihjb2RlLGNoYXIpCisjZGVmaW5lIHJldHVybkNodHlwZShjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxjaHR5cGUpCiAjZGVmaW5lIHJldHVybkNvZGUoY29kZSkJVFJBQ0VfUkVUVVJOKGNvZGUsaW50KQotI2RlZmluZSByZXR1cm5QdHIoY29kZSkJCVRSQUNFX1JFVFVSTihjb2RlLHB0cikKLSNkZWZpbmUgcmV0dXJuU1AoY29kZSkJCVRSQUNFX1JFVFVSTihjb2RlLHNwKQorI2RlZmluZSByZXR1cm5JbnRBdHRyKGNvZGUpCVRSQUNFX1JFVFVSTjIoY29kZSxpbnQsYXR0cl90KQorI2RlZmluZSByZXR1cm5NTWFzayhjb2RlKQlUUkFDRV9SRVRVUk5fU1AoY29kZSxtbWFza190KQorI2RlZmluZSByZXR1cm5QdHIoY29kZSkJCVRSQUNFX1JFVFVSTjEoY29kZSxwdHIpCisjZGVmaW5lIHJldHVyblNQKGNvZGUpCQlUUkFDRV9SRVRVUk4xKGNvZGUsc3ApCiAjZGVmaW5lIHJldHVyblZvaWQJCVQoKFRfUkVUVVJOKCIiKSkpOyByZXR1cm4KLSNkZWZpbmUgcmV0dXJuVm9pZFB0cihjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSx2b2lkX3B0cikKLSNkZWZpbmUgcmV0dXJuV2luKGNvZGUpCQlUUkFDRV9SRVRVUk4oY29kZSx3aW4pCisjZGVmaW5lIHJldHVyblZvaWRQdHIoY29kZSkJVFJBQ0VfUkVUVVJOMShjb2RlLHZvaWRfcHRyKQorI2RlZmluZSByZXR1cm5XaW4oY29kZSkJCVRSQUNFX1JFVFVSTjEoY29kZSx3aW4pCiAKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0JPT0wpICAgICBfbmNfcmV0cmFjZV9ib29sIChOQ1VSU0VTX0JPT0wpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgICAgIF9uY19yZXRyYWNlX2Jvb2wgKGludCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCB2b2lkICopIF9uY19yZXRyYWNlX2N2b2lkX3B0ciAoTkNVUlNFU19DT05TVCB2b2lkICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKSAgICAgICAgIF9uY19yZXRyYWNlX3NwIChTQ1JFRU4gKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopICAgICAgICAgX25jX3JldHJhY2Vfd2luIChXSU5ET1cgKik7CkBAIC0xMjgyLDcgKzE2NTksMTAgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpICAgICAgICAgICBfbmNfcmV0cmFjZV9jaHR5cGUgKGNodHlwZSk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKSAgICAgX25jX2FsdGNoYXJzZXRfbmFtZShhdHRyX3QsIGNodHlwZSk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKSAgICAgX25jX3JldHJhY2VfY3B0ciAoY29uc3QgY2hhciAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyKSAgICAgICAgICAgICBfbmNfcmV0cmFjZV9jaGFyIChpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICAgICAgICAgIF9uY19yZXRyYWNlX2ludCAoaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgICAgICAgICBfbmNfcmV0cmFjZV9pbnRfYXR0cl90IChhdHRyX3QpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKG1tYXNrX3QpICAgICAgICAgIF9uY19yZXRyYWNlX21tYXNrX3QgKFNDUkVFTiAqLCBtbWFza190KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh1bnNpZ25lZCkgICAgICAgICBfbmNfcmV0cmFjZV91bnNpZ25lZCAodW5zaWduZWQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQgKikgICAgICAgICAgIF9uY19yZXRyYWNlX3ZvaWRfcHRyICh2b2lkICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICAgICAgICAgIF9uY19maWZvX2R1bXAgKFNDUkVFTiAqKTsKQEAgLTEzMjIsOCArMTcwMiwxMSBAQAogI2RlZmluZSByZXR1cm5Cb29sKGNvZGUpCXJldHVybiBjb2RlCiAjZGVmaW5lIHJldHVybkNQdHIoY29kZSkJcmV0dXJuIGNvZGUKICNkZWZpbmUgcmV0dXJuQ1ZvaWRQdHIoY29kZSkJcmV0dXJuIGNvZGUKLSNkZWZpbmUgcmV0dXJuQ2hhcihjb2RlKQlyZXR1cm4gY29kZQorI2RlZmluZSByZXR1cm5DaGFyKGNvZGUpCXJldHVybiAoKGNoYXIpIGNvZGUpCisjZGVmaW5lIHJldHVybkNodHlwZShjb2RlKQlyZXR1cm4gY29kZQogI2RlZmluZSByZXR1cm5Db2RlKGNvZGUpCXJldHVybiBjb2RlCisjZGVmaW5lIHJldHVybkludEF0dHIoY29kZSkJcmV0dXJuIGNvZGUKKyNkZWZpbmUgcmV0dXJuTU1hc2soY29kZSkJcmV0dXJuIGNvZGUKICNkZWZpbmUgcmV0dXJuUHRyKGNvZGUpCQlyZXR1cm4gY29kZQogI2RlZmluZSByZXR1cm5TUChjb2RlKQkJcmV0dXJuIGNvZGUKICNkZWZpbmUgcmV0dXJuVm9pZAkJcmV0dXJuCkBAIC0xMzMzLDYgKzE3MTYsMTUgQEAKICNlbmRpZiAvKiBUUkFDRS8hVFJBQ0UgKi8KIAogLyoKKyAqIFdvcmthcm91bmQgZm9yIGRlZmVjdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiBnY2MgYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAorICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfRk9SVElGWV9TT1VSQ0UpCisjZGVmaW5lIElHTk9SRV9SQyhmdW5jKSBlcnJubyA9IChpbnQpIGZ1bmMKKyNlbHNlCisjZGVmaW5lIElHTk9SRV9SQyhmdW5jKSAodm9pZCkgZnVuYworI2VuZGlmIC8qIGdjYyB3b3JrYXJvdW5kcyAqLworCisvKgogICogUmV0dXJuLWNvZGVzIGZvciB0Z2V0ZW50KCkgYW5kIGZyaWVuZHMuCiAgKi8KICNkZWZpbmUgVEdFVEVOVF9ZRVMgIDEJCS8qIGVudHJ5IGlzIGZvdW5kICovCkBAIC0xMzQ3LDU4ICsxNzM5LDYxIEBACiAJTkNVUlNFU19FWFBPUlQodm9pZCkgbmFtZSAodm9pZCkgeyB9CiAKICNkZWZpbmUgQUxMX0JVVF9DT0xPUiAoKGNodHlwZSl+KEFfQ09MT1IpKQotI2RlZmluZSBOT05CTEFOS19BVFRSIChBX05PUk1BTHxBX0JPTER8QV9ESU18QV9CTElOSykKLSNkZWZpbmUgWE1DX0NIQU5HRVMoYykgKChjKSAmIFNQLT5feG1jX3N1cHByZXNzKQorI2RlZmluZSBOT05CTEFOS19BVFRSIChBX0JPTEQgfCBBX0RJTSB8IEFfQkxJTksgfCBBX0lUQUxJQykKKyNkZWZpbmUgVFBBUk1fQVRUUiAgICAoQV9TVEFORE9VVCB8IEFfVU5ERVJMSU5FIHwgQV9SRVZFUlNFIHwgQV9CTElOSyB8IEFfRElNIHwgQV9CT0xEIHwgQV9BTFRDSEFSU0VUIHwgQV9JTlZJUyB8IEFfUFJPVEVDVCkKKyNkZWZpbmUgWE1DX0NPTkZMSUNUICAoQV9TVEFORE9VVCB8IEFfVU5ERVJMSU5FIHwgQV9SRVZFUlNFIHwgQV9CTElOSyB8IEFfRElNIHwgQV9CT0xEIHwgQV9JTlZJUyB8IEFfUFJPVEVDVCB8IEFfSVRBTElDKQorI2RlZmluZSBYTUNfQ0hBTkdFUyhjKSAoKGMpICYgU1BfUEFSTS0+X3htY19zdXBwcmVzcykKIAogI2RlZmluZSB0b2dnbGVfYXR0cl9vbihTLGF0KSB7XAotICAgaWYgKFBBSVJfTlVNQkVSKGF0KSA+IDApIHtcCi0gICAgICAoUykgPSAoKFMpICYgQUxMX0JVVF9DT0xPUikgfCAoYXQpO1wKKyAgIGlmIChQYWlyTnVtYmVyKGF0KSA+IDApIHtcCisgICAgICAoUykgPSAoKFMpICYgQUxMX0JVVF9DT0xPUikgfCAoYXR0cl90KSAoYXQpO1wKICAgIH0gZWxzZSB7XAotICAgICAgKFMpIHw9IChhdCk7XAorICAgICAgKFMpIHw9IChhdHRyX3QpIChhdCk7XAogICAgfVwKICAgIFRSKFRSQUNFX0FUVFJTLCAoIm5ldyBhdHRyaWJ1dGUgaXMgJXMiLCBfdHJhY2VhdHRyKChTKSkpKTt9CiAKIAogI2RlZmluZSB0b2dnbGVfYXR0cl9vZmYoUyxhdCkge1wKLSAgIGlmIChQQUlSX05VTUJFUihhdCkgPiAwKSB7XAorICAgaWYgKFBhaXJOdW1iZXIoYXQpID4gMCkge1wKICAgICAgIChTKSAmPSB+KGF0fEFfQ09MT1IpO1wKICAgIH0gZWxzZSB7XAogICAgICAgKFMpICY9IH4oYXQpO1wKICAgIH1cCiAgICBUUihUUkFDRV9BVFRSUywgKCJuZXcgYXR0cmlidXRlIGlzICVzIiwgX3RyYWNlYXR0cigoUykpKSk7fQogCi0jZGVmaW5lIERlbENoYXJDb3N0KGNvdW50KSBcCisjZGVmaW5lIERlbENoYXJDb3N0KHNwLGNvdW50KSBcCiAJCSgocGFybV9kY2ggIT0gMCkgXAotCQk/IFNQLT5fZGNoX2Nvc3QgXAorCQk/IHNwLT5fZGNoX2Nvc3QgXAogCQk6ICgoZGVsZXRlX2NoYXJhY3RlciAhPSAwKSBcCi0JCQk/IChTUC0+X2RjaDFfY29zdCAqIGNvdW50KSBcCisJCQk/IChzcC0+X2RjaDFfY29zdCAqIGNvdW50KSBcCiAJCQk6IElORklOSVRZKSkKIAotI2RlZmluZSBJbnNDaGFyQ29zdChjb3VudCkgXAorI2RlZmluZSBJbnNDaGFyQ29zdChzcCxjb3VudCkgXAogCQkoKHBhcm1faWNoICE9IDApIFwKLQkJPyBTUC0+X2ljaF9jb3N0IFwKKwkJPyBzcC0+X2ljaF9jb3N0IFwKIAkJOiAoKGVudGVyX2luc2VydF9tb2RlICYmIGV4aXRfaW5zZXJ0X21vZGUpIFwKLQkJICA/IFNQLT5fc21pcl9jb3N0ICsgU1AtPl9ybWlyX2Nvc3QgKyAoU1AtPl9pcF9jb3N0ICogY291bnQpIFwKKwkJICA/IHNwLT5fc21pcl9jb3N0ICsgc3AtPl9ybWlyX2Nvc3QgKyAoc3AtPl9pcF9jb3N0ICogY291bnQpIFwKIAkJICA6ICgoaW5zZXJ0X2NoYXJhY3RlciAhPSAwKSBcCi0JCSAgICA/ICgoU1AtPl9pY2gxX2Nvc3QgKyBTUC0+X2lwX2Nvc3QpICogY291bnQpIFwKKwkJICAgID8gKChzcC0+X2ljaDFfY29zdCArIHNwLT5faXBfY29zdCkgKiBjb3VudCkgXAogCQkgICAgOiBJTkZJTklUWSkpKQogCiAjaWYgVVNFX1hNQ19TVVBQT1JUCi0jZGVmaW5lIFVwZGF0ZUF0dHJzKGMpCWlmICghU2FtZUF0dHJPZihTQ1JFRU5fQVRUUlMoU1ApLCBjKSkgeyBcCi0JCQkJYXR0cl90IGNoZyA9IEF0dHJPZihTQ1JFRU5fQVRUUlMoU1ApKTsgXAotCQkJCVZJREFUVFIoQXR0ck9mKGMpLCBHZXRQYWlyKGMpKTsgXAorI2RlZmluZSBVcGRhdGVBdHRycyhzcCxjKSBpZiAoIVNhbWVBdHRyT2YoU0NSRUVOX0FUVFJTKHNwKSwgYykpIHsgXAorCQkJCWF0dHJfdCBjaGcgPSBBdHRyT2YoU0NSRUVOX0FUVFJTKHNwKSk7IFwKKwkJCQlWSURBVFRSKHNwLCBBdHRyT2YoYyksIEdldFBhaXIoYykpOyBcCiAJCQkJaWYgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPiAwIFwKLQkJCQkgJiYgWE1DX0NIQU5HRVMoKGNoZyBeIEF0dHJPZihTQ1JFRU5fQVRUUlMoU1ApKSkpKSB7IFwKKwkJCQkgJiYgWE1DX0NIQU5HRVMoKGNoZyBeIEF0dHJPZihTQ1JFRU5fQVRUUlMoc3ApKSkpKSB7IFwKIAkJCQkJVCgoIiVzIEAlZCBiZWZvcmUgZ2xpdGNoICVkLCVkIiwgXAogCQkJCQkJX19GSUxFX18sIF9fTElORV9fLCBcCi0JCQkJCQlTUC0+X2N1cnNyb3csIFwKLQkJCQkJCVNQLT5fY3Vyc2NvbCkpOyBcCi0JCQkJCV9uY19kb194bWNfZ2xpdGNoKGNoZyk7IFwKKwkJCQkJCXNwLT5fY3Vyc3JvdywgXAorCQkJCQkJc3AtPl9jdXJzY29sKSk7IFwKKwkJCQkJTkNVUlNFU19TUF9OQU1FKF9uY19kb194bWNfZ2xpdGNoKShOQ1VSU0VTX1NQX0FSR3ggY2hnKTsgXAogCQkJCX0gXAogCQkJfQogI2Vsc2UKLSNkZWZpbmUgVXBkYXRlQXR0cnMoYykJaWYgKCFTYW1lQXR0ck9mKFNDUkVFTl9BVFRSUyhTUCksIGMpKSBcCi0JCQkJVklEQVRUUihBdHRyT2YoYyksIEdldFBhaXIoYykpOworI2RlZmluZSBVcGRhdGVBdHRycyhzcCxjKSBpZiAoIVNhbWVBdHRyT2YoU0NSRUVOX0FUVFJTKHNwKSwgYykpIHsgXAorCQkJCSAgICBWSURBVFRSKHNwLCBBdHRyT2YoYyksIEdldFBhaXIoYykpOyBcCisJCQl9CiAjZW5kaWYKIAogLyoKQEAgLTE0MDgsMTAgKzE4MDMsMTIgQEAKICNkZWZpbmUgRVZFTlRMSVNUXzB0aChwYXJhbSkgcGFyYW0KICNkZWZpbmUgRVZFTlRMSVNUXzFzdChwYXJhbSkgcGFyYW0KICNkZWZpbmUgRVZFTlRMSVNUXzJuZChwYXJhbSkgLCBwYXJhbQorI2RlZmluZSBUV0FJVF9NQVNLIChUV19BTlkgfCBUV19FVkVOVCkKICNlbHNlCiAjZGVmaW5lIEVWRU5UTElTVF8wdGgocGFyYW0pIHZvaWQKICNkZWZpbmUgRVZFTlRMSVNUXzFzdChwYXJhbSkgLyogbm90aGluZyAqLwogI2RlZmluZSBFVkVOVExJU1RfMm5kKHBhcmFtKSAvKiBub3RoaW5nICovCisjZGVmaW5lIFRXQUlUX01BU0sgVFdfQU5ZCiAjZW5kaWYKIAogI2lmIE5DVVJTRVNfRVhQQU5ERUQgJiYgTkNVUlNFU19FWFRfRlVOQ1MKQEAgLTE0MjUsMTYgKzE4MjIsMjggQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfdG9nZ2xlX2F0dHJfb2ZmIChhdHRyX3QgKiwgYXR0cl90KTsKIAogI3VuZGVmICBEZWxDaGFyQ29zdAotI2RlZmluZSBEZWxDaGFyQ29zdChjb3VudCkgX25jX0RlbENoYXJDb3N0KGNvdW50KQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX0RlbENoYXJDb3N0IChpbnQpOworI2RlZmluZSBEZWxDaGFyQ29zdChzcCwgY291bnQpIE5DVVJTRVNfU1BfTkFNRShfbmNfRGVsQ2hhckNvc3QpKE5DVVJTRVNfU1BfQVJHeCBjb3VudCkKIAogI3VuZGVmICBJbnNDaGFyQ29zdAotI2RlZmluZSBJbnNDaGFyQ29zdChjb3VudCkgX25jX0luc0NoYXJDb3N0KGNvdW50KQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX0luc0NoYXJDb3N0IChpbnQpOworI2RlZmluZSBJbnNDaGFyQ29zdChzcCwgY291bnQpIE5DVVJTRVNfU1BfTkFNRShfbmNfSW5zQ2hhckNvc3QpKE5DVVJTRVNfU1BfQVJHeCBjb3VudCkKKworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKF9uY19EZWxDaGFyQ29zdCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgX2MpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgTkNVUlNFU19TUF9OQU1FKF9uY19JbnNDaGFyQ29zdCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgX2MpOwogCiAjdW5kZWYgIFVwZGF0ZUF0dHJzCi0jZGVmaW5lIFVwZGF0ZUF0dHJzKGMpIF9uY19VcGRhdGVBdHRycyhjKQotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19VcGRhdGVBdHRycyAoTkNVUlNFU19DSF9UKTsKKyNkZWZpbmUgVXBkYXRlQXR0cnMoc3AsYykgTkNVUlNFU19TUF9OQU1FKF9uY19VcGRhdGVBdHRycykoTkNVUlNFU19TUF9BUkd4IENIUkVGKGMpKQorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQgfHwgZGVmaW5lZChORUVEX05DVVJTRVNfQ0hfVCkKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBOQ1VSU0VTX1NQX05BTUUoX25jX1VwZGF0ZUF0dHJzKSAoTkNVUlNFU19TUF9EQ0x4IENBUkdfQ0hfVCBfYyk7CisjZWxzZQorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIE5DVVJTRVNfU1BfTkFNRShfbmNfVXBkYXRlQXR0cnMpIChOQ1VSU0VTX1NQX0RDTHggY2h0eXBlIGMpOworI2VuZGlmCisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfRGVsQ2hhckNvc3QgKGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfSW5zQ2hhckNvc3QgKGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX1VwZGF0ZUF0dHJzIChDQVJHX0NIX1QpOworI2VuZGlmIC8qIE5DVVJTRVNfU1BfRlVOQ1MgKi8KIAogI2Vsc2UKIApAQCAtMTQ4Myw4ICsxODkyLDggQEAKICNlbmRpZgogCiAvKiBsaWJfYWNzLmMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfaW5pdF9hY3MgKHZvaWQpOwkvKiBjb3JyZXNwb25kcyB0byB0cmFkaXRpb25hbCAnaW5pdF9hY3MoKScgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19tc2VjX2Nvc3QgKGNvbnN0IGNoYXIgKmNvbnN0LCBpbnQpOyAgLyogdXNlZCBieSAndGFjaycgcHJvZ3JhbSAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19pbml0X2FjcyAodm9pZCk7IC8qIGNvcnJlc3BvbmRzIHRvIHRyYWRpdGlvbmFsICdpbml0X2FjcygpJyAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgIF9uY19tc2VjX2Nvc3QgKGNvbnN0IGNoYXIgKmNvbnN0LCBpbnQpOyAgLyogdXNlZCBieSAndGFjaycgcHJvZ3JhbSAqLwogCiAvKiBsaWJfYWRkY2guYyAqLwogI2lmIFVTRV9XSURFQ19TVVBQT1JUCkBAIC0xNDkyLDcgKzE5MDEsNyBAQAogI2VuZGlmCiAKIC8qIGxpYl9hZGRzdHIuYyAqLwotI2lmIFVTRV9XSURFQ19TVVBQT1JUICYmICFkZWZpbmVkKFVTRV9URVJNTElCKQorI2lmIFVTRV9XSURFQ19TVVBQT1JUICYmICEoZGVmaW5lZChVU0VfVEVSTUxJQikgfHwgZGVmaW5lZChVU0VfQlVJTERfQ0MpKQogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3djaHN0cmxlbihjb25zdCBjY2hhcl90ICopOwogI2VuZGlmCiAKQEAgLTE1MDAsMTQgKzE5MDksMTYgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfcmVzZXRfY29sb3JzKHZvaWQpOwogCiAvKiBsaWJfZ2V0Y2guYyAqLwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3dnZXRjaChXSU5ET1cgKiwgdW5zaWduZWQgbG9uZyAqLCBpbnQgRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0ICopKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY193Z2V0Y2goV0lORE9XICosIGludCAqLCBpbnQgRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0ICopKTsKIAogLyogbGliX2luc2NoLmMgKi8KLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19pbnNlcnRfY2goV0lORE9XICosIGNodHlwZSk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfaW5zZXJ0X2NoKFNDUkVFTiAqLCBXSU5ET1cgKiwgY2h0eXBlKTsKIAogLyogbGliX212Y3VyLmMgKi8KICNkZWZpbmUgSU5GSU5JVFkJMTAwMDAwMAkvKiBjb3N0OiB0b28gaGlnaCB0byB1c2UgKi8KIAorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX212Y3VyKGludCB5b2xkLCBpbnQgeG9sZCwgaW50IHluZXcsIGludCB4bmV3KTsKKwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19tdmN1cl9pbml0ICh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfbXZjdXJfcmVzdW1lICh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfbXZjdXJfd3JhcCAodm9pZCk7CkBAIC0xNTE5LDcgKzE5MzAsNyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zY3JlZW5fd3JhcCAodm9pZCk7CiAKIC8qIGxpYl9tb3VzZS5jICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfaGFzX21vdXNlICh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfaGFzX21vdXNlIChTQ1JFRU4gKik7CiAKIC8qIGxpYl9tdmN1ci5jICovCiAjZGVmaW5lIElORklOSVRZCTEwMDAwMDAJLyogY29zdDogdG9vIGhpZ2ggdG8gdXNlICovCkBAIC0xNTI3LDEwICsxOTM4LDMzIEBACiAKIC8qIGxpYl9zZXR1cC5jICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfZ2V0X2xvY2FsZSh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY191bmljb2RlX2xvY2FsZSh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19sb2NhbGVfYnJlYWtzX2FjcyhURVJNSU5BTCAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19zZXR1cHRlcm0oTkNVUlNFU19DT05TVCBjaGFyICosIGludCwgaW50ICosIGJvb2wpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19nZXRfc2NyZWVuc2l6ZShTQ1JFRU4gKiwgaW50ICosIGludCAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgIF9uY191bmljb2RlX2xvY2FsZSh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgIF9uY19sb2NhbGVfYnJlYWtzX2FjcyhURVJNSU5BTCAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgIF9uY19zZXR1cHRlcm0oTkNVUlNFU19DT05TVCBjaGFyICosIGludCwgaW50ICosIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICBfbmNfdGluZm9fY21kY2goVEVSTUlOQUwgKiwgaW50KTsKKworLyogbGliX3NldF90ZXJtLmMgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgIF9uY19yaXBvZmZsaW5lKGludCwgaW50KCopKFdJTkRPVyosIGludCkpOworCisvKiBsaWJfc2V0dXAuYyAqLworI2RlZmluZSBTRVRVUF9GQUlMIEVSUgorI2RlZmluZSByZXRfZXJyb3IoY29kZSwgZm10LCBhcmcpCWlmIChlcnJyZXQpIHtcCisJCQkJCSAgICAqZXJycmV0ID0gY29kZTtcCisJCQkJCSAgICByZXR1cm5Db2RlKFNFVFVQX0ZBSUwpO1wKKwkJCQkJfSBlbHNlIHtcCisJCQkJCSAgICBmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmcpO1wKKwkJCQkJICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcCisJCQkJCX0KKworI2RlZmluZSByZXRfZXJyb3IxKGNvZGUsIGZtdCwgYXJnKQlyZXRfZXJyb3IoY29kZSwgIiclcyc6ICIgZm10LCBhcmcpCisKKyNkZWZpbmUgcmV0X2Vycm9yMChjb2RlLCBtc2cpCQlpZiAoZXJycmV0KSB7XAorCQkJCQkgICAgKmVycnJldCA9IGNvZGU7XAorCQkJCQkgICAgcmV0dXJuQ29kZShTRVRVUF9GQUlMKTtcCisJCQkJCX0gZWxzZSB7XAorCQkJCQkgICAgZnByaW50ZihzdGRlcnIsIG1zZyk7XAorCQkJCQkgICAgZXhpdChFWElUX0ZBSUxVUkUpO1wKKwkJCQkJfQogCiAvKiBsaWJfdHN0cC5jICovCiAjaWYgVVNFX1NJR1dJTkNICkBAIC0xNTM5LDkgKzE5NzMsNiBAQAogI2RlZmluZSBfbmNfaGFuZGxlX3NpZ3dpbmNoKGEpIC8qIG5vdGhpbmcgKi8KICNlbmRpZgogCi0vKiBsaWJfdW5nZXRjaC5jICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfdW5nZXRjaCAoU0NSRUVOICosIGludCk7Ci0KIC8qIGxpYl93YWNzLmMgKi8KICNpZiBVU0VfV0lERUNfU1VQUE9SVAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19pbml0X3dhY3Modm9pZCk7CkBAIC0xNTc3LDI3ICsyMDA4LDMxIEBACiAKIC8qIGVsc2V3aGVyZSAuLi4gKi8KIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChFTlRSWSAqKSBfbmNfZGVsaW5rX2VudHJ5IChFTlRSWSAqLCBURVJNVFlQRSAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikgX25jX2tleW5hbWUgKFNDUkVFTiAqLCBpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBfbmNfdW5jdHJsIChTQ1JFRU4gKiwgY2h0eXBlKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikgX25jX3NjcmVlbl9vZiAoV0lORE9XICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKFRFUk1JTkFMKikgX25jX2dldF9jdXJfdGVybSAodm9pZCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIF9uY19tYWtlbmV3IChpbnQsIGludCwgaW50LCBpbnQsIGludCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfdHJhY2VfYnVmIChpbnQsIHNpemVfdCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfdHJhY2VfYnVmY2F0IChpbnQsIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoY2hhciAqKSBfbmNfdHJhY2VjaGFyIChTQ1JFRU4gKiwgaW50KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChjaGFyICopIF9uY190cmFjZW1vdXNlIChTQ1JFRU4gKiwgTUVWRU5UIGNvbnN0ICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgX25jX3RyYWNlX21tYXNrX3QgKFNDUkVFTiAqLCBtbWFza190KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19hY2Nlc3MgKGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19iYXVkcmF0ZSAoaW50KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19mcmVld2luIChXSU5ET1cgKik7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfZ2V0ZW52X251bSAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19rZXlwYWQgKFNDUkVFTiAqLCBib29sKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19rZXlwYWQgKFNDUkVFTiAqLCBpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX29zcGVlZCAoaW50KTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19vdXRjaCAoaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19wdXRjaGFyIChpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3B1dHAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3B1dHBfZmx1c2goY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3JlYWRfdGVybWNhcF9lbnRyeSAoY29uc3QgY2hhciAqY29uc3QsIFRFUk1UWVBFICpjb25zdCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfc2V0dXBzY3JlZW4gKGludCwgaW50LCBGSUxFICosIGJvb2wsIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfc2V0dXBfdGluZm8oY29uc3QgY2hhciAqLCBURVJNVFlQRSAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19zZXR1cHNjcmVlbiAoaW50LCBpbnQsIEZJTEUgKiwgaW50LCBpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3RpbWVkX3dhaXQgKFNDUkVFTiAqLCBpbnQsIGludCwgaW50ICogRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0ICopKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZG9fY29sb3IgKHNob3J0LCBzaG9ydCwgYm9vbCwgaW50ICgqKShpbnQpKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZG9fY29sb3IgKGludCwgaW50LCBpbnQsIE5DVVJTRVNfT1VUQyk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2ZsdXNoICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZnJlZV9hbmRfZXhpdCAoaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZnJlZV9hbmRfZXhpdCAoaW50KSBHQ0NfTk9SRVRVUk47CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2ZyZWVfZW50cnkgKEVOVFJZICosIFRFUk1UWVBFICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19mcmVlYWxsICh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfaGFzaF9tYXAgKHZvaWQpOwpAQCAtMTYwNiw4ICsyMDQxLDkgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfbWFrZV9vbGRoYXNoIChpbnQgaSk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3Njcm9sbF9vbGRoYXNoIChpbnQgbiwgaW50IHRvcCwgaW50IGJvdCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3Njcm9sbF9vcHRpbWl6ZSAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3NldF9idWZmZXIgKEZJTEUgKiwgYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3NpZ25hbF9oYW5kbGVyIChib29sKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfc2V0X2J1ZmZlciAoRklMRSAqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zZXRlbnZfbnVtIChjb25zdCBjaGFyICosIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3NpZ25hbF9oYW5kbGVyIChpbnQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zeW5jaG9vayAoV0lORE9XICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190cmFjZV90cmllcyAoVFJJRVMgKik7CiAKQEAgLTE2MTYsMTkgKzIwNTIsMjUgQEAKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfY2FwdG9pbmZvX2xlYWtzKHZvaWQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19jb2Rlc19sZWFrcyh2b2lkKTsKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfY29tcF9jYXB0YWJfbGVha3Modm9pZCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2NvbXBfZXJyb3JfbGVha3Modm9pZCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2NvbXBfc2Nhbl9sZWFrcyh2b2lkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfZGJfaXRlcmF0b3JfbGVha3Modm9pZCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2tleW5hbWVfbGVha3Modm9pZCk7CiBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX25hbWVzX2xlYWtzKHZvaWQpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190Z2V0ZW50X2xlYWtzKHZvaWQpOwogI2VuZGlmCiAKLSNpZm5kZWYgVVNFX1RFUk1MSUIKKyNpZiAhKGRlZmluZWQoVVNFX1RFUk1MSUIpIHx8IGRlZmluZWQoVVNFX0JVSUxEX0NDKSkKIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NIX1QpIF9uY19yZW5kZXIgKFdJTkRPVyAqLCBOQ1VSU0VTX0NIX1QpOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3dhZGRjaF9ub3N5bmMgKFdJTkRPVyAqLCBjb25zdCBOQ1VSU0VTX0NIX1QpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY19zY3JvbGxfd2luZG93IChXSU5ET1cgKiwgaW50IGNvbnN0LCBOQ1VSU0VTX1NJWkVfVCBjb25zdCwgTkNVUlNFU19TSVpFX1QgY29uc3QsIE5DVVJTRVNfQ0hfVCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3Njcm9sbF93aW5kb3cgKFdJTkRPVyAqLCBpbnQgY29uc3QsIGludCBjb25zdCwgaW50IGNvbnN0LCBOQ1VSU0VTX0NIX1QpOwogI2VuZGlmCiAKLSNpZiBVU0VfV0lERUNfU1VQUE9SVCAmJiAhZGVmaW5lZChVU0VfVEVSTUxJQikKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX2luc2VydF93Y2goV0lORE9XICosIGNvbnN0IGNjaGFyX3QgKik7CisjZW5kaWYKKworI2lmIFVTRV9XSURFQ19TVVBQT1JUICYmICEoZGVmaW5lZChVU0VfVEVSTUxJQikgfHwgZGVmaW5lZChVU0VfQlVJTERfQ0MpKQogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHNpemVfdCkgX25jX3djcnRvbWIgKGNoYXIgKiwgd2NoYXJfdCwgbWJzdGF0ZV90ICopOwogI2VuZGlmCiAKQEAgLTE2NTAsNiArMjA5Miw0NSBAQAogI2VuZGlmCiAKIC8qCisgKiBXaWRlLWNoYXJhY3RlciBtYWNyb3MgdG8gaGlkZSBzb21lIHBsYXRmb3JtLWRpZmZlcmVuY2VzLgorICovCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisvKgorICogTWluR1cgaGFzIHdpZGUtY2hhcmFjdGVyIGZ1bmN0aW9ucywgYnV0IHRoZXkgZG8gbm90IHdvcmsgY29ycmVjdGx5LgorICovCisKK2V4dGVybiBpbnQgX19NSU5HV19OT1RIUk9XIF9uY193Y3RvbWIoY2hhciAqLCB3Y2hhcl90KTsKKyNkZWZpbmUgd2N0b21iKHMsd2MpIF9uY193Y3RvbWIocyx3YykKKyNkZWZpbmUgd2NydG9tYihzLHdjLG4pIF9uY193Y3RvbWIocyx3YykKKworZXh0ZXJuIGludCBfX01JTkdXX05PVEhST1cgX25jX21idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKyNkZWZpbmUgbWJ0b3djKHB3YyxzLG4pIF9uY19tYnRvd2MocHdjLHMsbikKKworZXh0ZXJuIGludCBfX01JTkdXX05PVEhST1cgX25jX21ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKyNkZWZpbmUgbWJsZW4ocyxuKSBfbmNfbWJsZW4ocywgbikKKworI2VuZGlmIC8qIF9fTUlOR1czMl9fICovCisKKyNpZiBIQVZFX01CVE9XQyAmJiBIQVZFX01CTEVOCisjZGVmaW5lIHJlc2V0X21ieXRlcyhzdGF0ZSkgSUdOT1JFX1JDKG1ibGVuKE5VTEwsIChzaXplX3QpIDApKSwgSUdOT1JFX1JDKG1idG93YyhOVUxMLCBOVUxMLCAoc2l6ZV90KSAwKSkKKyNkZWZpbmUgY291bnRfbWJ5dGVzKGJ1ZmZlcixsZW5ndGgsc3RhdGUpIG1ibGVuKGJ1ZmZlcixsZW5ndGgpCisjZGVmaW5lIGNoZWNrX21ieXRlcyh3Y2gsYnVmZmVyLGxlbmd0aCxzdGF0ZSkgXAorCShpbnQpIG1idG93Yygmd2NoLCBidWZmZXIsIGxlbmd0aCkKKyNkZWZpbmUgc3RhdGVfdW51c2VkCisjZWxpZiBIQVZFX01CUlRPV0MgJiYgSEFWRV9NQlJMRU4KKyNkZWZpbmUgcmVzZXRfbWJ5dGVzKHN0YXRlKSBpbml0X21iKHN0YXRlKQorI2RlZmluZSBjb3VudF9tYnl0ZXMoYnVmZmVyLGxlbmd0aCxzdGF0ZSkgbWJybGVuKGJ1ZmZlcixsZW5ndGgsJnN0YXRlKQorI2RlZmluZSBjaGVja19tYnl0ZXMod2NoLGJ1ZmZlcixsZW5ndGgsc3RhdGUpIFwKKwkoaW50KSBtYnJ0b3djKCZ3Y2gsIGJ1ZmZlciwgbGVuZ3RoLCAmc3RhdGUpCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisKKyNlbmRpZiAvKiBVU0VfV0lERUNfU1VQUE9SVCAqLworCisvKgogICogTm90IGV2ZXJ5b25lIGhhcyB2c3NjYW5mKCksIGJ1dCB3ZSdkIGxpa2UgdG8gdXNlIGl0IGZvciBzY2FudygpLgogICovCiAjaWYgIUhBVkVfVlNTQ0FORgpAQCAtMTY2MSwyNCArMjE0MiwzMiBAQAogCiAjZGVmaW5lIFVTRV9TRVRCVUZfMCAwCiAKLSNkZWZpbmUgTkNfQlVGRkVSRUQoZmxhZykgX25jX3NldF9idWZmZXIoU1AtPl9vZnAsIGZsYWcpCi0KLSNkZWZpbmUgTkNfT1VUUFVUICgoU1AgIT0gMCkgPyBTUC0+X29mcCA6IHN0ZG91dCkKKyNkZWZpbmUgTkNfT1VUUFVUKHNwKSAoKHNwICE9IDApID8gc3AtPl9vZnAgOiBzdGRvdXQpCiAKIC8qCiAgKiBPbiBzeXN0ZW1zIHdpdGggYSBicm9rZW4gbGlua2VyLCBkZWZpbmUgJ1NQJyBhcyBhIGZ1bmN0aW9uIHRvIGZvcmNlIHRoZQogICogbGlua2VyIHRvIHB1bGwgaW4gdGhlIGRhdGEtb25seSBtb2R1bGUgd2l0aCAnU1AnLgogICovCisjZGVmaW5lIF9uY19hbGxvY19zY3JlZW5fc3AoKSB0eXBlQ2FsbG9jKFNDUkVFTiwgMSkKKwogI2lmIEJST0tFTl9MSU5LRVIKICNkZWZpbmUgU1AgX25jX3NjcmVlbigpCiBleHRlcm4gTkNVUlNFU19FWFBPUlQoU0NSRUVOICopIF9uY19zY3JlZW4gKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX2FsbG9jX3NjcmVlbiAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3NldF9zY3JlZW4gKFNDUkVFTiAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgX25jX2FsbG9jX3NjcmVlbiAodm9pZCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIF9uY19zZXRfc2NyZWVuIChTQ1JFRU4gKik7CisjZGVmaW5lIENVUlJFTlRfU0NSRUVOICAgICAgICAgIF9uY19zY3JlZW4oKQogI2Vsc2UKIC8qIGN1cnJlbnQgc2NyZWVuIGlzIHByaXZhdGUgZGF0YTsgYXZvaWQgcG9zc2libGUgbGlua2luZyBjb25mbGljdHMgdG9vICovCiBleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKFNDUkVFTiAqKSBTUDsKLSNkZWZpbmUgX25jX2FsbG9jX3NjcmVlbigpICgoU1AgPSB0eXBlQ2FsbG9jKFNDUkVFTiwgMSkpICE9IDApCi0jZGVmaW5lIF9uY19zZXRfc2NyZWVuKHNwKSBTUCA9IHNwCisjZGVmaW5lIENVUlJFTlRfU0NSRUVOIFNQCisjZGVmaW5lIF9uY19hbGxvY19zY3JlZW4oKSAgICAgICgoU1AgPSBfbmNfYWxsb2Nfc2NyZWVuX3NwKCkpICE9IDApCisjZGVmaW5lIF9uY19zZXRfc2NyZWVuKHNwKSAgICAgIFNQID0gc3AKKyNlbmRpZgorCisjaWYgTkNVUlNFU19TUF9GVU5DUworI2RlZmluZSBDVVJSRU5UX1NDUkVFTl9QUkUgICAgICAoSXNQcmVTY3JlZW4oQ1VSUkVOVF9TQ1JFRU4pID8gQ1VSUkVOVF9TQ1JFRU4gOiBuZXdfcHJlc2NyKCkpCisjZWxzZQorI2RlZmluZSBDVVJSRU5UX1NDUkVFTl9QUkUgICAgICBDVVJSRU5UX1NDUkVFTgogI2VuZGlmCiAKIC8qCkBAIC0xNjg2LDEwICsyMTc1LDExIEBACiAgKiBpZiB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyBtdWx0aXBsZSBzY3JlZW5zIHVuZGVyIFgsIGl0J3MgcXVpdGUgcG9zc2libGUKICAqIHRoZXkgY291bGQgYWxsIGhhdmUgdHlwZSB4dGVybSBidXQgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMhICBTby4uLgogICovCi0jZGVmaW5lIHNjcmVlbl9saW5lcwlTUC0+X2xpbmVzCi0jZGVmaW5lIHNjcmVlbl9jb2x1bW5zCVNQLT5fY29sdW1ucworI2RlZmluZSBzY3JlZW5fbGluZXMoc3ApICAgICAgICAoc3ApLT5fbGluZXMKKyNkZWZpbmUgc2NyZWVuX2NvbHVtbnMoc3ApICAgICAgKHNwKS0+X2NvbHVtbnMKIAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3Nsa19pbml0aWFsaXplIChXSU5ET1cgKiwgaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19mb3JtYXRfc2xrcyAoTkNVUlNFU19TUF9EQ0x4IGludCBfYyk7CiAKIC8qCiAgKiBTb21lIGNvbnN0YW50cyByZWxhdGVkIHRvIFNMSydzCkBAIC0xNzA3LDE2ICsyMTk3LDMxMSBAQAogI2RlZmluZSBNQVhfU0tFWShmbXQpICAgICAoU0xLX1NUREZNVChmbXQpPyBNQVhfU0tFWV9PTEQgOiBNQVhfU0tFWV9QQykKICNkZWZpbmUgTUFYX1NLRVlfTEVOKGZtdCkgKFNMS19TVERGTVQoZm10KT8gTUFYX1NLRVlfTEVOX09MRCA6IE1BWF9TS0VZX0xFTl9QQykKIAotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3JpcG9mZmxpbmUgKGludCBsaW5lLCBpbnQgKCppbml0KShXSU5ET1cgKixpbnQpKTsKLQogLyoKICAqIENvbW1vbiBlcnJvciBtZXNzYWdlcwogICovCiAjZGVmaW5lIE1TR19OT19NRU1PUlkgIk91dCBvZiBtZW1vcnkiCiAjZGVmaW5lIE1TR19OT19JTlBVVFMgIlByZW1hdHVyZSBFT0YiCiAKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpIF9uY19zZXRfdHR5X21vZGUoVFRZICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX2dldF90dHlfbW9kZShUVFkgKik7CisKKy8qIHRpbWVkX3dhaXQgZmxhZyBkZWZpbml0aW9ucyAqLworI2RlZmluZSBUV19OT05FICAgIDAKKyNkZWZpbmUgVFdfSU5QVVQgICAxCisjZGVmaW5lIFRXX01PVVNFICAgMgorI2RlZmluZSBUV19BTlkgICAgIChUV19JTlBVVCB8IFRXX01PVVNFKQorI2RlZmluZSBUV19FVkVOVCAgIDQKKworI2RlZmluZSBTZXRTYWZlT3V0Y1dyYXBwZXIob3V0YykJICAgIFwKKyAgICBTQ1JFRU4qIHNwID0gQ1VSUkVOVF9TQ1JFRU47ICAgICAgICAgICAgXAorICAgIHN0cnVjdCBzY3JlZW4gb3V0Y193cmFwcGVyOwkJICAgIFwKKyAgICBpZiAoc3A9PTApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXNwID0gJm91dGNfd3JhcHBlcjsgICAgICAgICAgICAgICAgIFwKKwltZW1zZXQoc3AsMCxzaXplb2Yoc3RydWN0IHNjcmVlbikpOyBcCisJc3AtPl9vdXRjaCA9IF9uY19vdXRjX3dyYXBwZXI7ICAgICAgXAorICAgIH1cCisgICAgc3AtPmp1bXAgPSBvdXRjCisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwordHlwZWRlZiBzdHJ1Y3QgX3Rlcm1JbmZvCit7CisgICAgYm9vbCBjYW5pbml0OworCisgICAgYm9vbCBoYXNjb2xvcjsKKyAgICBib29sIGluaXRjb2xvcjsKKyAgICBib29sIGNhbmNoYW5nZTsKKworICAgIGludCAgdGFic2l6ZTsKKworICAgIGludCAgbWF4Y29sb3JzOworICAgIGludCAgbWF4cGFpcnM7CisgICAgaW50ICBub2NvbG9ydmlkZW87CisKKyAgICBpbnQgIG51bWJ1dHRvbnM7CisgICAgaW50ICBudW1sYWJlbHM7CisgICAgaW50ICBsYWJlbHdpZHRoOworICAgIGludCAgbGFiZWxoZWlnaHQ7CisKKyAgICBjb25zdCBjb2xvcl90KiBkZWZhdWx0UGFsZXR0ZTsKK30gVGVybWluYWxJbmZvOworCit0eXBlZGVmIHN0cnVjdCB0ZXJtX2RyaXZlciB7CisgICAgYm9vbCAgIGlzVGVybWluZm87CisgICAgY29uc3QgY2hhciogKCp0ZF9uYW1lKShzdHJ1Y3QgRHJpdmVyVENCKik7CisgICAgYm9vbCAgICgqdGRfQ2FuSGFuZGxlKShzdHJ1Y3QgRHJpdmVyVENCKiwgY29uc3QgY2hhciosIGludCopOworICAgIHZvaWQgICAoKnRkX2luaXQpKHN0cnVjdCBEcml2ZXJUQ0IqKTsKKyAgICB2b2lkICAgKCp0ZF9yZWxlYXNlKShzdHJ1Y3QgRHJpdmVyVENCKik7CisgICAgaW50ICAgICgqdGRfc2l6ZSkoc3RydWN0IERyaXZlclRDQiosIGludCogTGluZSwgaW50ICpDb2xzKTsKKyAgICBpbnQgICAgKCp0ZF9zZ21vZGUpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQgc2V0RmxhZywgVFRZKik7CisgICAgY2h0eXBlICgqdGRfY29uYXR0cikoc3RydWN0IERyaXZlclRDQiopOworICAgIGludCAgICAoKnRkX2h3Y3VyKShzdHJ1Y3QgRHJpdmVyVENCKiwgaW50IHlvbGQsIGludCB4b2xkLCBpbnQgeSwgaW50IHgpOworICAgIGludCAgICAoKnRkX21vZGUpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQgcHJvZ0ZsYWcsIGludCBkZWZGbGFnKTsKKyAgICBib29sICAgKCp0ZF9yZXNjb2wpKHN0cnVjdCBEcml2ZXJUQ0IqKTsKKyAgICBib29sICAgKCp0ZF9yZXNjb2xvcnMpKHN0cnVjdCBEcml2ZXJUQ0IqKTsKKyAgICB2b2lkICAgKCp0ZF9jb2xvcikoc3RydWN0IERyaXZlclRDQiosIGludCBmb3JlLCBpbnQgY29sb3IsIGludCgqKShTQ1JFRU4qLCBpbnQpKTsKKyAgICBpbnQgICAgKCp0ZF9kb0JlZXBPckZsYXNoKShzdHJ1Y3QgRHJpdmVyVENCKiwgaW50KTsKKyAgICB2b2lkICAgKCp0ZF9pbml0cGFpcikoc3RydWN0IERyaXZlclRDQiosIGludCwgaW50LCBpbnQpOworICAgIHZvaWQgICAoKnRkX2luaXRjb2xvcikoc3RydWN0IERyaXZlclRDQiosIGludCwgaW50LCBpbnQsIGludCk7CisgICAgdm9pZCAgICgqdGRfZG9jb2xvcikoc3RydWN0IERyaXZlclRDQiosIGludCwgaW50LCBpbnQsIGludCgqKShTQ1JFRU4qLCBpbnQpKTsKKyAgICB2b2lkICAgKCp0ZF9pbml0bW91c2UpKHN0cnVjdCBEcml2ZXJUQ0IqKTsKKyAgICBpbnQgICAgKCp0ZF90ZXN0bW91c2UpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQgRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0KikpOworICAgIHZvaWQgICAoKnRkX3NldGZpbHRlcikoc3RydWN0IERyaXZlclRDQiopOworICAgIHZvaWQgICAoKnRkX2h3bGFiZWwpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQsIGNoYXIqKTsKKyAgICB2b2lkICAgKCp0ZF9od2xhYmVsT25PZmYpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQpOworICAgIGludCAgICAoKnRkX3VwZGF0ZSkoc3RydWN0IERyaXZlclRDQiopOworICAgIGludCAgICAoKnRkX2RlZmF1bHRjb2xvcnMpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQsIGludCk7CisgICAgaW50ICAgICgqdGRfcHJpbnQpKHN0cnVjdCBEcml2ZXJUQ0IqLCBjaGFyKiwgaW50KTsKKyAgICBpbnQgICAgKCp0ZF9nZXRzaXplKShzdHJ1Y3QgRHJpdmVyVENCKiwgaW50KiwgaW50Kik7CisgICAgaW50ICAgICgqdGRfc2V0c2l6ZSkoc3RydWN0IERyaXZlclRDQiosIGludCwgaW50KTsKKyAgICB2b2lkICAgKCp0ZF9pbml0YWNzKShzdHJ1Y3QgRHJpdmVyVENCKiwgY2h0eXBlKiwgY2h0eXBlKik7CisgICAgdm9pZCAgICgqdGRfc2Npbml0KShTQ1JFRU4gKik7CisgICAgdm9pZCAgICgqdGRfc2NleGl0KShTQ1JFRU4gKik7CisgICAgaW50ICAgICgqdGRfdHdhaXQpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQsIGludCwgaW50KiBFVkVOVExJU1RfMm5kKF9uY19ldmVudGxpc3QqKSk7CisgICAgaW50ICAgICgqdGRfcmVhZCkoc3RydWN0IERyaXZlclRDQiosIGludCopOworICAgIGludCAgICAoKnRkX25hcCkoc3RydWN0IERyaXZlclRDQiosIGludCk7CisgICAgaW50ICAgICgqdGRfa3BhZCkoc3RydWN0IERyaXZlclRDQiosIGludCk7CisgICAgaW50ICAgICgqdGRfa3lPaykoc3RydWN0IERyaXZlclRDQiosIGludCwgaW50KTsKKyAgICBib29sICAgKCp0ZF9reUV4aXN0KShzdHJ1Y3QgRHJpdmVyVENCKiwgaW50KTsKKyAgICBpbnQgICAgKCp0ZF9jdXJzb3JTZXQpKHN0cnVjdCBEcml2ZXJUQ0IqLCBpbnQpOworfSBURVJNX0RSSVZFUjsKKwordHlwZWRlZiBzdHJ1Y3QgRHJpdmVyVENCCit7CisgICAgVEVSTUlOQUwgICAgICB0ZXJtOyAgIC8qIG5lZWRzIHRvIGJlIHRoZSBmaXJzdCBFbGVtZW50ICEhISAqLworICAgIFRFUk1fRFJJVkVSKiAgZHJ2OyAgICAvKiBUaGUgZHJpdmVyIGZvciB0aGF0IFRlcm1pbmFsICovCisgICAgU0NSRUVOKiAgICAgICBjc3A7ICAgIC8qIFRoZSBzY3JlZW4gdGhhdCBvd25zIHRoYXQgVGVybWluYWwgKi8KKyAgICBUZXJtaW5hbEluZm8gIGluZm87ICAgLyogRHJpdmVyIGluZGVwZW5kZW50IGNvcmUgY2FwYWJpbGl0aWVzIG9mIHRoZSBUZXJtaW5hbCAqLworICAgIHZvaWQqICAgICAgICAgcHJvcDsgICAvKiBEcml2ZXIgZGVwZW5kZW50IHByb3BlcnR5IHN0b3JhZ2UgdG8gYmUgdXNlZCBieSB0aGUgRHJpdmVyICovCisgICAgbG9uZyAgICAgICAgICBtYWdpYzsKK30gVEVSTUlOQUxfQ09OVFJPTF9CTE9DSzsKKworI2RlZmluZSBOQ0RSVl9NQUdJQyhpZCkgKDB4NDcxMTAwMDAgfCAoaWQmMHhmZmZmKSkKKyNkZWZpbmUgTkNEUlZfVElORk8gICAgICAweDAxCisjZGVmaW5lIE5DRFJWX1dJTkNPTlNPTEUgMHgwMgorCisjZGVmaW5lIFRDQk9mKHNwKSAgICAoKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sqKShUZXJtaW5hbE9mKHNwKSkpCisjZGVmaW5lIEluZm9PZihzcCkgICBUQ0JPZihzcCktPmluZm8KKyNkZWZpbmUgQ2FsbERyaXZlcihzcCxtZXRob2QpICAgICAgICAgICAgICAgICAgICAgICAgVENCT2Yoc3ApLT5kcnYtPm1ldGhvZChUQ0JPZihzcCkpCisjZGVmaW5lIENhbGxEcml2ZXJfMShzcCxtZXRob2QsYXJnMSkgICAgICAgICAgICAgICAgIFRDQk9mKHNwKS0+ZHJ2LT5tZXRob2QoVENCT2Yoc3ApLGFyZzEpCisjZGVmaW5lIENhbGxEcml2ZXJfMihzcCxtZXRob2QsYXJnMSxhcmcyKSAgICAgICAgICAgIFRDQk9mKHNwKS0+ZHJ2LT5tZXRob2QoVENCT2Yoc3ApLGFyZzEsYXJnMikKKyNkZWZpbmUgQ2FsbERyaXZlcl8zKHNwLG1ldGhvZCxhcmcxLGFyZzIsYXJnMykgICAgICAgVENCT2Yoc3ApLT5kcnYtPm1ldGhvZChUQ0JPZihzcCksYXJnMSxhcmcyLGFyZzMpCisjZGVmaW5lIENhbGxEcml2ZXJfNChzcCxtZXRob2QsYXJnMSxhcmcyLGFyZzMsYXJnNCkgIFRDQk9mKHNwKS0+ZHJ2LT5tZXRob2QoVENCT2Yoc3ApLGFyZzEsYXJnMixhcmczLGFyZzQpCisKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY29uc3QgY29sb3JfdCopIF9uY19jZ2FfcGFsZXR0ZTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoY29uc3QgY29sb3JfdCopIF9uY19obHNfcGFsZXR0ZTsKKworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBfbmNfZ2V0X2RyaXZlcihURVJNSU5BTF9DT05UUk9MX0JMT0NLKiwgY29uc3QgY2hhciosIGludCopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBfbmNfZ2V0X3NjcmVlbnNpemVfZXgoU0NSRUVOICosIFRFUk1JTkFMICosIGludCAqLCBpbnQgKik7CisjZW5kaWYgLyogVVNFX1RFUk1fRFJJVkVSICovCisKKy8qCisgKiBFbnRyeXBvaW50cyB3aGljaCBhcmUgYWN0dWFsbHkgcHJvdmlkZWQgaW4gdGhlIHRlcm1pbmFsIGRyaXZlciwgd2hpY2ggd291bGQKKyAqIGJlIGFuIHNwLW5hbWUgb3RoZXJ3aXNlLgorICovCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisjZGVmaW5lIFRJTkZPX0hBU19LRVkgICAgICAgICAgIF9uY190aW5mb19oYXNfa2V5CisjZGVmaW5lIFRJTkZPX0RPVVBEQVRFICAgICAgICAgIF9uY190aW5mb19kb3VwZGF0ZQorI2RlZmluZSBUSU5GT19NVkNVUiAgICAgICAgICAgICBfbmNfdGluZm9fbXZjdXIKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgVElORk9fSEFTX0tFWShTQ1JFRU4qLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBUSU5GT19ET1VQREFURShTQ1JFRU4gKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIFRJTkZPX01WQ1VSKFNDUkVFTiosIGludCwgaW50LCBpbnQsIGludCk7CisjZWxzZQorI2RlZmluZSBUSU5GT19IQVNfS0VZICAgICAgICAgICBOQ1VSU0VTX1NQX05BTUUoaGFzX2tleSkKKyNkZWZpbmUgVElORk9fRE9VUERBVEUgICAgICAgICAgTkNVUlNFU19TUF9OQU1FKGRvdXBkYXRlKQorI2RlZmluZSBUSU5GT19NVkNVUiAgICAgICAgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyKQorI2VuZGlmCisKKy8qCisgKiBFbnRyeXBvaW50cyB1c2luZyBhbiBleHRyYSBwYXJhbWV0ZXIgd2l0aCB0aGUgdGVybWluYWwgZHJpdmVyLgorICovCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICBfbmNfZ2V0X3NjcmVlbnNpemUoU0NSRUVOICosIFRFUk1JTkFMICosIGludCAqLCBpbnQgKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICBfbmNfc2V0dXB0ZXJtX2V4KFRFUk1JTkFMICoqLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiwgaW50ICwgaW50ICosIGludCk7CisjZGVmaW5lIFRJTkZPX0dFVF9TSVpFKHNwLCB0cCwgbHAsIGNwKSBcCisJX25jX2dldF9zY3JlZW5zaXplKHNwLCB0cCwgbHAsIGNwKQorI2RlZmluZSBUSU5GT19TRVRfQ1VSVEVSTShzcCwgdHApIFwKKwlOQ1VSU0VTX1NQX05BTUUoc2V0X2N1cnRlcm0pKHNwLCB0cCkKKyNkZWZpbmUgVElORk9fU0VUVVBfVEVSTSh0cHAsIG5hbWUsIGZkLCBlcnIsIHJldXNlKSBcCisJX25jX3NldHVwdGVybV9leCh0cHAsIG5hbWUsIGZkLCBlcnIsIHJldXNlKQorI2Vsc2UgLyogIVVTRV9URVJNX0RSSVZFUiAqLworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgX25jX2dldF9zY3JlZW5zaXplKFNDUkVFTiAqLCBpbnQgKiwgaW50ICopOworI2RlZmluZSBUSU5GT19HRVRfU0laRShzcCwgdHAsIGxwLCBjcCkgXAorCV9uY19nZXRfc2NyZWVuc2l6ZShzcCwgbHAsIGNwKQorI2RlZmluZSBUSU5GT19TRVRfQ1VSVEVSTShzcCwgdHApIFwKKwlzZXRfY3VydGVybSh0cCkKKyNkZWZpbmUgVElORk9fU0VUVVBfVEVSTSh0cHAsIG5hbWUsIGZkLCBlcnIsIHJldXNlKSBcCisJX25jX3NldHVwdGVybShuYW1lLCBmZCwgZXJyLCByZXVzZSkKKyNlbmRpZiAvKiAhVVNFX1RFUk1fRFJJVkVSICovCisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyNpZiBkZWZpbmVkKFVTRV9XSU4zMkNPTl9EUklWRVIpCisjaW5jbHVkZSA8bmNfbWluZ3cuaD4KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoVEVSTV9EUklWRVIpIF9uY19XSU5fRFJJVkVSOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgIF9uY19taW5nd19pc2F0dHkoaW50IGZkKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICBfbmNfbWluZ3dfaXNjb25zb2xlKGludCBmZCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfbWluZ3dfY29uc29sZV9yZWFkKAorICAgIFNDUkVFTiAqc3AsCisgICAgSEFORExFICBmZCwKKyAgICBpbnQgKmJ1Zik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfbWluZ3dfdGVzdG1vdXNlKAorICAgIFNDUkVFTiAqIHNwLAorICAgIEhBTkRMRSBmZCwKKyAgICBpbnQgZGVsYXkpOworI2Vsc2UKKyNlbmRpZgorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihURVJNX0RSSVZFUikgX25jX1RJTkZPX0RSSVZFUjsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0VfVEVSTV9EUklWRVIpICYmIGRlZmluZWQoVVNFX1dJTjMyQ09OX0RSSVZFUikKKyNkZWZpbmUgTkNfSVNBVFRZKGZkKSBfbmNfbWluZ3dfaXNhdHR5KGZkKQorI2Vsc2UKKyNkZWZpbmUgTkNfSVNBVFRZKGZkKSBpc2F0dHkoZmQpCisjZW5kaWYKKworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorIyAgZGVmaW5lIElzVGVybUluZm8oc3ApICAgICAgICgoVENCT2Yoc3ApICE9IDApICYmICgoVENCT2Yoc3ApLT5kcnYtPmlzVGVybWluZm8pKSkKKyMgIGRlZmluZSBIYXNUSW5mb1Rlcm1pbmFsKHNwKSAoKDAgIT0gVGVybWluYWxPZihzcCkpICYmIElzVGVybUluZm8oc3ApKQorIyAgaWYgZGVmaW5lZChVU0VfV0lOMzJDT05fRFJJVkVSKQorIyAgICBkZWZpbmUgSXNUZXJtSW5mb09uQ29uc29sZShzcCkgKElzVGVybUluZm8oc3ApJiZfbmNfbWluZ3dfaXNjb25zb2xlKFRlcm1pbmFsT2Yoc3ApLT5GaWxlZGVzKSkKKyNlbHNlCisjICAgIGRlZmluZSBJc1Rlcm1JbmZvT25Db25zb2xlKHNwKSBGQUxTRQorIyAgZW5kaWYKKyNlbHNlCisjICBkZWZpbmUgSXNUZXJtSW5mbyhzcCkgICAgICAgVFJVRQorIyAgZGVmaW5lIEhhc1RJbmZvVGVybWluYWwoc3ApICgwICE9IFRlcm1pbmFsT2Yoc3ApKQorIyAgZGVmaW5lIElzVGVybUluZm9PbkNvbnNvbGUoc3ApIEZBTFNFCisjZW5kaWYKKworI2RlZmluZSBJc1ZhbGlkVElTY3JlZW4oc3ApICAoSGFzVEluZm9UZXJtaW5hbChzcCkpCisKKy8qCisgKiBFeHBvcnRlZCBlbnRyeXBvaW50cyBiZXlvbmQgdGhlIHB1Ymxpc2hlZCBBUEkKKyAqLworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgX25jX2N1cnNjcl9vZihTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgX25jX25ld3Njcl9vZihTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikgX25jX3N0ZHNjcl9vZihTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgX25jX291dGNfd3JhcHBlcihTQ1JFRU4qLGludCk7CisKKyNpZiBVU0VfUkVFTlRSQU5UCitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX1RBQlNJWkUpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgICAgTkNVUlNFU19TUF9OQU1FKGxvbmduYW1lKShTQ1JFRU4qKTsKKyNlbmRpZgorCisjaWYgTkNVUlNFU19FWFRfRlVOQ1MKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdGFic2l6ZSkoU0NSRUVOKiwgaW50KTsKKyNlbmRpZgorCisvKgorICogV2UgcHV0IHRoZSBzYWZlIHZlcnNpb25zIG9mIHZhcmlvdXMgY2FsbHMgaGVyZSBhcyB0aGV5IGFyZSBub3QgcHVibGlzaGVkCisgKiBwYXJ0IG9mIHRoZSBBUEkgdXAgdG8gbm93CisgKi8KK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChURVJNSU5BTCopIE5DVVJTRVNfU1BfTkFNRShfbmNfZ2V0X2N1cl90ZXJtKSAoU0NSRUVOICpzcCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoV0lORE9XICopIE5DVVJTRVNfU1BfTkFNRShfbmNfbWFrZW5ldykgKFNDUkVFTiosIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19yZXNldF9jb2xvcnMpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikgICBOQ1VSU0VTX1NQX05BTUUoX25jX3ByaW50Zl9zdHJpbmcpKFNDUkVFTiosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoY2h0eXBlKSAgIE5DVVJTRVNfU1BfTkFNRShfbmNfYWNzX2NoYXIpKFNDUkVFTiosaW50KTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19jdXJzX3NldCkoU0NSRUVOKixpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2dldF90dHlfbW9kZSkoU0NSRUVOKixUVFkqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19tY3ByaW50KShTQ1JFRU4qLGNoYXIqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX21zZWNfY29zdCkoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyKShTQ1JFRU4qLCBpbnQsIGludCwgaW50LCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKShTQ1JFRU4qLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3B1dGNoYXIpKFNDUkVFTiosIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0cCkoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0cF9mbHVzaCkoU0NSRUVOKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3Jlc2V0dHkpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3Jlc2l6ZV90ZXJtKShTQ1JFRU4qLGludCxpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3JpcG9mZmxpbmUpKFNDUkVFTiosIGludCwgaW50ICgqKShXSU5ET1cgKixpbnQpKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zYXZldHR5KShTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JfaW5pdCkoU0NSRUVOKixjb25zdCBjaGFyKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2NyX3Jlc3RvcmUpKFNDUkVFTiosIGNvbnN0IGNoYXIqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChpbnQpICAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JvbGxuKShTQ1JFRU4qLCBpbnQsIGludCwgaW50LCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NldF90dHlfbW9kZSkoU0NSRUVOKiwgVFRZKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0dXBzY3JlZW4pKFNDUkVFTioqLCBpbnQsIGludCwgRklMRSAqLCBpbnQsIGludCk7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfdGdldGVudCkoU0NSRUVOKixjaGFyKixjb25zdCBjaGFyICopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3RpZ2V0bnVtKShTQ1JFRU4qLE5DVVJTRVNfQ09OU1QgY2hhciopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3ZpZF9hdHRyKShTQ1JFRU4gKiwgYXR0cl90LCBOQ1VSU0VTX0NPTE9SX1QsIHZvaWQgKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQoaW50KSAgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfdmlkcHV0cykoU0NSRUVOKixjaHR5cGUsaW50KCopIChTQ1JFRU4qLCBpbnQpKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19kb19jb2xvcikoU0NSRUVOKiwgaW50LCBpbnQsIGludCwgTkNVUlNFU19TUF9PVVRDKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19kb194bWNfZ2xpdGNoKShTQ1JFRU4qLCBhdHRyX3QpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKShTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlX2FuZF9leGl0KShTQ1JFRU4qLCBpbnQpIEdDQ19OT1JFVFVSTjsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mcmVlYWxsKShTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19oYXNoX21hcCkoU0NSRUVOKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfaW5pdF9hY3MpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX21ha2Vfb2xkaGFzaCkoU0NSRUVOKiwgaW50IGkpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyX2luaXQpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyX3Jlc3VtZSkoU0NSRUVOKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXJfd3JhcCkoU0NSRUVOKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2NyZWVuX2luaXQpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NjcmVlbl9yZXN1bWUpKFNDUkVFTiopOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NjcmVlbl93cmFwKShTQ1JFRU4qKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JvbGxfb2xkaGFzaCkoU0NSRUVOKiwgaW50IG4sIGludCB0b3AsIGludCBib3QpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3Njcm9sbF9vcHRpbWl6ZSkoU0NSRUVOKik7CitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0X2J1ZmZlcikoU0NSRUVOKiwgRklMRSAqLCBpbnQpOworCitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgICAgIF9uY19jb29raWVfaW5pdChTQ1JFRU4gKnNwKTsKKworI2lmIGRlZmluZWQoVFJBQ0UpIHx8IGRlZmluZWQoU0NST0xMREVCVUcpIHx8IGRlZmluZWQoSEFTSERFQlVHKQorZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2xpbmVkdW1wKShTQ1JFRU4qKTsKKyNlbmRpZgorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVCh3Y2hhcl90ICopIE5DVVJTRVNfU1BfTkFNRShfbmNfd3VuY3RybCkoU0NSRUVOKiwgY2NoYXJfdCAqKTsKKyNlbmRpZgorCisjZW5kaWYgLyogTkNVUlNFU19TUF9GVU5DUyAqLworCisjaWYgTkNVUlNFU19TUF9GVU5DUworCisjZGVmaW5lIHNhZmVfa2V5bmFtZSBOQ1VSU0VTX1NQX05BTUUoa2V5bmFtZSkKKyNkZWZpbmUgc2FmZV91bmN0cmwgIE5DVVJTRVNfU1BfTkFNRSh1bmN0cmwpCisjZGVmaW5lIHNhZmVfdW5nZXRjaCBOQ1VSU0VTX1NQX05BTUUodW5nZXRjaCkKKworI2Vsc2UKKworI2RlZmluZSBzYWZlX2tleW5hbWUgX25jX2tleW5hbWUKKyNkZWZpbmUgc2FmZV91bmN0cmwgIF9uY191bmN0cmwKKyNkZWZpbmUgc2FmZV91bmdldGNoIF9uY191bmdldGNoCisKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikgX25jX2tleW5hbWUgKFNDUkVFTiAqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgX25jX3VuZ2V0Y2ggKFNDUkVFTiAqLCBpbnQpOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBfbmNfdW5jdHJsIChTQ1JFRU4gKiwgY2h0eXBlKTsKKworI2VuZGlmCisKKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfY29udl90b191dGY4KHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKK05DVVJTRVNfRVhQT1JUKGludCkgX25jX2NvbnZfdG9fdXRmMzIodW5zaWduZWQgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAorLyogKklOREVOVC1PTiogKi8KKwogI2VuZGlmIC8qIENVUlNFU19QUklWX0ggKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvZXhwYW5kZWQuYyBiL25jdXJzZXMvZXhwYW5kZWQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2ZGRlZi4uMDAwMDAwMAotLS0gYS9uY3Vyc2VzL2V4cGFuZGVkLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKiBnZW5lcmF0ZWQgYnkgTUtleHBhbmRlZC5zaCAqLwotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgotI2lmIE5DVVJTRVNfRVhQQU5ERUQKLSB2b2lkIF9uY190b2dnbGVfYXR0cl9vbiAoYXR0cl90ICpTLCBhdHRyX3QgYXQpCi17Ci0geyBpZiAoUEFJUl9OVU1CRVIoYXQpID4gMCkgeyAoKlMpID0gKCgqUykgJiBBTExfQlVUX0NPTE9SKSB8IChhdCk7IH0gZWxzZSB7ICgqUykgfD0gKGF0KTsgfSA7fTsKLX0KLSB2b2lkIF9uY190b2dnbGVfYXR0cl9vZmYgKGF0dHJfdCAqUywgYXR0cl90IGF0KQotewotIHsgaWYgKFBBSVJfTlVNQkVSKGF0KSA+IDApIHsgKCpTKSAmPSB+KGF0fCgoKCgxVUwpIDw8IDgpIC0gMVVMKSA8PCAoKDApICsgOCkpKTsgfSBlbHNlIHsgKCpTKSAmPSB+KGF0KTsgfSA7fTsKLX0KLSBpbnQgX25jX0RlbENoYXJDb3N0IChpbnQgY291bnQpCi17Ci0gcmV0dXJuICgoY3VyX3Rlcm0tPnR5cGUuIFN0cmluZ3NbMTA1XSAhPSAwKSA/IFNQLT5fZGNoX2Nvc3QgOiAoKGN1cl90ZXJtLT50eXBlLiBTdHJpbmdzWzIxXSAhPSAwKSA/IChTUC0+X2RjaDFfY29zdCAqIGNvdW50KSA6IDEwMDAwMDApKTsKLX0KLSBpbnQgX25jX0luc0NoYXJDb3N0IChpbnQgY291bnQpCi17Ci0gcmV0dXJuICgoY3VyX3Rlcm0tPnR5cGUuIFN0cmluZ3NbMTA4XSAhPSAwKSA/IFNQLT5faWNoX2Nvc3QgOiAoKGN1cl90ZXJtLT50eXBlLiBTdHJpbmdzWzMxXSAmJiBjdXJfdGVybS0+dHlwZS4gU3RyaW5nc1s0Ml0pID8gU1AtPl9zbWlyX2Nvc3QgKyBTUC0+X3JtaXJfY29zdCArIChTUC0+X2lwX2Nvc3QgKiBjb3VudCkgOiAoKGN1cl90ZXJtLT50eXBlLiBTdHJpbmdzWzUyXSAhPSAwKSA/ICgoU1AtPl9pY2gxX2Nvc3QgKyBTUC0+X2lwX2Nvc3QpICogY291bnQpIDogMTAwMDAwMCkpKTsKLX0KLSB2b2lkIF9uY19VcGRhdGVBdHRycyAoY2h0eXBlIGMpCi17Ci0gaWYgKCEoKCgoKigoU1ApLT5fY3VycmVudF9hdHRyKSkpICYgKGNodHlwZSkoKH4oMVVMIC0gMVVMKSkgPDwgKCgwKSArIDgpKSkgPT0gKChjKSAmIChjaHR5cGUpKCh+KDFVTCAtIDFVTCkpIDw8ICgoMCkgKyA4KSkpKSkgdmlkYXR0cigoKGMpICYgKGNodHlwZSkoKH4oMVVMIC0gMVVMKSkgPDwgKCgwKSArIDgpKSkpOzsKLX0KLSNlbHNlIC8qICEgTkNVUlNFU19FWFBBTkRFRCAqLwotTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2V4cGFuZGVkICh2b2lkKSB7IH0KLSNlbmRpZiAvKiBOQ1VSU0VTX0VYUEFOREVEICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2ZhbGxiYWNrLmMgYi9uY3Vyc2VzL2ZhbGxiYWNrLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NGU0YWUuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9mYWxsYmFjay5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLyoKLSAqIERPIE5PVCBFRElUIFRISVMgRklMRSBCWSBIQU5EISAgSXQgaXMgZ2VuZXJhdGVkIGJ5IE1LZmFsbGJhY2suc2guCi0gKi8KLQotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgotCi1OQ1VSU0VTX0VYUE9SVChjb25zdCBURVJNVFlQRSAqKSBfbmNfZmFsbGJhY2sgKGNvbnN0IGNoYXIgKm5hbWUgR0NDX1VOVVNFRCkKLXsKLQkvKiB0aGUgZmFsbGJhY2sgbGlzdCBpcyBlbXB0eSAqLwotCXJldHVybigoVEVSTVRZUEUgKikwKTsKLX0KZGlmZiAtLWdpdCBhL25jdXJzZXMvZmlmb19kZWZzLmggYi9uY3Vyc2VzL2ZpZm9fZGVmcy5oCmluZGV4IGZhOWFlMjIuLmMwYzc5NWEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvZmlmb19kZWZzLmgKKysrIGIvbmN1cnNlcy9maWZvX2RlZnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM0LDcgKzM0LDcgQEAKIC8qCiAgKiBDb21tb24gbWFjcm9zIGZvciBsaWJfZ2V0Y2guYywgbGliX3VuZ2V0Y2guYwogICoKLSAqICRJZDogZmlmb19kZWZzLmgsdiAxLjYgMjAwOC8wNi8yOCAxNTo1MjozMiB0b20gRXhwICQKKyAqICRJZDogZmlmb19kZWZzLmgsdiAxLjcgMjAxMi8wOC8wNCAxNTo1OToxNyB0b20gRXhwICQKICAqLwogCiAjaWZuZGVmIEZJRk9fREVGU19ICkBAIC00NSwxNCArNDUsNDIgQEAKIC8qIHBlZWsgcG9pbnRzIHRvIG5leHQgdW5pbnRlcnByZXRlZCBjaGFyYWN0ZXIgKi8KICNkZWZpbmUgcGVlawlzcC0+X2ZpZm9wZWVrCiAKLSNkZWZpbmUgaF9pbmMoKSB7IGhlYWQgPT0gRklGT19TSVpFLTEgPyBoZWFkID0gMCA6IGhlYWQrKzsgaWYgKGhlYWQgPT0gdGFpbCkgaGVhZCA9IC0xLCB0YWlsID0gMDt9Ci0jZGVmaW5lIGhfZGVjKCkgeyBoZWFkID09IDAgPyBoZWFkID0gRklGT19TSVpFLTEgOiBoZWFkLS07IGlmIChoZWFkID09IHRhaWwpIHRhaWwgPSAtMTt9Ci0jZGVmaW5lIHRfaW5jKCkgeyB0YWlsID09IEZJRk9fU0laRS0xID8gdGFpbCA9IDAgOiB0YWlsKys7IGlmICh0YWlsID09IGhlYWQpIHRhaWwgPSAtMTt9Ci0jZGVmaW5lIHRfZGVjKCkgeyB0YWlsID09IDAgPyB0YWlsID0gRklGT19TSVpFLTEgOiB0YWlsLS07IGlmIChoZWFkID09IHRhaWwpIGZpZm9fY2xlYXIoc3ApO30KLSNkZWZpbmUgcF9pbmMoKSB7IHBlZWsgPT0gRklGT19TSVpFLTEgPyBwZWVrID0gMCA6IHBlZWsrKzt9CisjZGVmaW5lIGhfaW5jKCkgeyBcCisJICAgIChoZWFkID49IEZJRk9fU0laRS0xKSBcCisJCT8gaGVhZCA9IDAgXAorCQk6IGhlYWQrKzsgXAorCSAgICBpZiAoaGVhZCA9PSB0YWlsKSBcCisJCWhlYWQgPSAtMSwgdGFpbCA9IDA7IFwKKwl9CisjZGVmaW5lIGhfZGVjKCkgeyBcCisJICAgIChoZWFkIDw9IDApIFwKKwkJPyBoZWFkID0gRklGT19TSVpFLTEgXAorCQk6IGhlYWQtLTsgXAorCSAgICBpZiAoaGVhZCA9PSB0YWlsKSBcCisJCXRhaWwgPSAtMTsgXAorCX0KKyNkZWZpbmUgdF9pbmMoKSB7IFwKKwkgICAgKHRhaWwgPj0gRklGT19TSVpFLTEpIFwKKwkJPyB0YWlsID0gMCBcCisJCTogdGFpbCsrOyBcCisJICAgIGlmICh0YWlsID09IGhlYWQpIFwKKwkJdGFpbCA9IC0xOyBcCisJICAgIH0KKyNkZWZpbmUgdF9kZWMoKSB7IFwKKwkgICAgKHRhaWwgPD0gMCkgXAorCQk/IHRhaWwgPSBGSUZPX1NJWkUtMSBcCisJCTogdGFpbC0tOyBcCisJICAgIGlmIChoZWFkID09IHRhaWwpIFwKKwkJZmlmb19jbGVhcihzcCk7IFwKKwkgICAgfQorI2RlZmluZSBwX2luYygpIHsgXAorCSAgICAocGVlayA+PSBGSUZPX1NJWkUtMSkgXAorCQk/IHBlZWsgPSAwIFwKKwkJOiBwZWVrKys7IFwKKwkgICAgfQogCi0jZGVmaW5lIGNvb2tlZF9rZXlfaW5fZmlmbygpCSgoaGVhZCAhPSAtMSkgJiYgKHBlZWsgIT0gaGVhZCkpCi0jZGVmaW5lIHJhd19rZXlfaW5fZmlmbygpCSgoaGVhZCAhPSAtMSkgJiYgKHBlZWsgIT0gdGFpbCkpCisjZGVmaW5lIGNvb2tlZF9rZXlfaW5fZmlmbygpCSgoaGVhZCA+PSAwKSAmJiAocGVlayAhPSBoZWFkKSkKKyNkZWZpbmUgcmF3X2tleV9pbl9maWZvKCkJKChoZWFkID49IDApICYmIChwZWVrICE9IHRhaWwpKQogCiAjdW5kZWYgSElERV9FSU5UUgogCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2luaXRfa2V5dHJ5LmggYi9uY3Vyc2VzL2luaXRfa2V5dHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OTE1MGQuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9pbml0X2tleXRyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLSNpZm5kZWYgTkNVX0tFWVNfSAotI2RlZmluZSBOQ1VfS0VZU19IIDEKLQotLyogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgTUFLRV9LRVlTICovCi0KLSNpZiBCUk9LRU5fTElOS0VSCi1zdGF0aWMKLSNlbmRpZgotY29uc3Qgc3RydWN0IHRpbmZvX2ZrZXlzIF9uY190aW5mb19ma2V5c1tdID0gewotCXsgIDEzOSwgS0VZX0ExICAgICAgICAgICB9LAkvKiBrZXlfYTEgKi8KLQl7ICAxNDAsIEtFWV9BMyAgICAgICAgICAgfSwJLyoga2V5X2EzICovCi0JeyAgMTQxLCBLRVlfQjIgICAgICAgICAgIH0sCS8qIGtleV9iMiAqLwotCXsgICA1NSwgS0VZX0JBQ0tTUEFDRSAgICB9LAkvKiBrZXlfYmFja3NwYWNlICovCi0JeyAgMTU4LCBLRVlfQkVHICAgICAgICAgIH0sCS8qIGtleV9iZWcgKi8KLQl7ICAxNDgsIEtFWV9CVEFCICAgICAgICAgfSwJLyoga2V5X2J0YWIgKi8KLQl7ICAxNDIsIEtFWV9DMSAgICAgICAgICAgfSwJLyoga2V5X2MxICovCi0JeyAgMTQzLCBLRVlfQzMgICAgICAgICAgIH0sCS8qIGtleV9jMyAqLwotCXsgIDE1OSwgS0VZX0NBTkNFTCAgICAgICB9LAkvKiBrZXlfY2FuY2VsICovCi0JeyAgIDU2LCBLRVlfQ0FUQUIgICAgICAgIH0sCS8qIGtleV9jYXRhYiAqLwotCXsgICA1NywgS0VZX0NMRUFSICAgICAgICB9LAkvKiBrZXlfY2xlYXIgKi8KLQl7ICAxNjAsIEtFWV9DTE9TRSAgICAgICAgfSwJLyoga2V5X2Nsb3NlICovCi0JeyAgMTYxLCBLRVlfQ09NTUFORCAgICAgIH0sCS8qIGtleV9jb21tYW5kICovCi0JeyAgMTYyLCBLRVlfQ09QWSAgICAgICAgIH0sCS8qIGtleV9jb3B5ICovCi0JeyAgMTYzLCBLRVlfQ1JFQVRFICAgICAgIH0sCS8qIGtleV9jcmVhdGUgKi8KLQl7ICAgNTgsIEtFWV9DVEFCICAgICAgICAgfSwJLyoga2V5X2N0YWIgKi8KLQl7ICAgNTksIEtFWV9EQyAgICAgICAgICAgfSwJLyoga2V5X2RjICovCi0JeyAgIDYwLCBLRVlfREwgICAgICAgICAgIH0sCS8qIGtleV9kbCAqLwotCXsgICA2MSwgS0VZX0RPV04gICAgICAgICB9LAkvKiBrZXlfZG93biAqLwotCXsgICA2MiwgS0VZX0VJQyAgICAgICAgICB9LAkvKiBrZXlfZWljICovCi0JeyAgMTY0LCBLRVlfRU5EICAgICAgICAgIH0sCS8qIGtleV9lbmQgKi8KLQl7ICAxNjUsIEtFWV9FTlRFUiAgICAgICAgfSwJLyoga2V5X2VudGVyICovCi0JeyAgIDYzLCBLRVlfRU9MICAgICAgICAgIH0sCS8qIGtleV9lb2wgKi8KLQl7ICAgNjQsIEtFWV9FT1MgICAgICAgICAgfSwJLyoga2V5X2VvcyAqLwotCXsgIDE2NiwgS0VZX0VYSVQgICAgICAgICB9LAkvKiBrZXlfZXhpdCAqLwotCXsgICA2NSwgS0VZX0YoMCkgICAgICAgICB9LAkvKiBrZXlfZjAgKi8KLQl7ICAgNjcsIEtFWV9GKDEwKSAgICAgICAgfSwJLyoga2V5X2YxMCAqLwotCXsgIDIxNiwgS0VZX0YoMTEpICAgICAgICB9LAkvKiBrZXlfZjExICovCi0JeyAgMjE3LCBLRVlfRigxMikgICAgICAgIH0sCS8qIGtleV9mMTIgKi8KLQl7ICAyMTgsIEtFWV9GKDEzKSAgICAgICAgfSwJLyoga2V5X2YxMyAqLwotCXsgIDIxOSwgS0VZX0YoMTQpICAgICAgICB9LAkvKiBrZXlfZjE0ICovCi0JeyAgMjIwLCBLRVlfRigxNSkgICAgICAgIH0sCS8qIGtleV9mMTUgKi8KLQl7ICAyMjEsIEtFWV9GKDE2KSAgICAgICAgfSwJLyoga2V5X2YxNiAqLwotCXsgIDIyMiwgS0VZX0YoMTcpICAgICAgICB9LAkvKiBrZXlfZjE3ICovCi0JeyAgMjIzLCBLRVlfRigxOCkgICAgICAgIH0sCS8qIGtleV9mMTggKi8KLQl7ICAyMjQsIEtFWV9GKDE5KSAgICAgICAgfSwJLyoga2V5X2YxOSAqLwotCXsgICA2NiwgS0VZX0YoMSkgICAgICAgICB9LAkvKiBrZXlfZjEgKi8KLQl7ICAyMjUsIEtFWV9GKDIwKSAgICAgICAgfSwJLyoga2V5X2YyMCAqLwotCXsgIDIyNiwgS0VZX0YoMjEpICAgICAgICB9LAkvKiBrZXlfZjIxICovCi0JeyAgMjI3LCBLRVlfRigyMikgICAgICAgIH0sCS8qIGtleV9mMjIgKi8KLQl7ICAyMjgsIEtFWV9GKDIzKSAgICAgICAgfSwJLyoga2V5X2YyMyAqLwotCXsgIDIyOSwgS0VZX0YoMjQpICAgICAgICB9LAkvKiBrZXlfZjI0ICovCi0JeyAgMjMwLCBLRVlfRigyNSkgICAgICAgIH0sCS8qIGtleV9mMjUgKi8KLQl7ICAyMzEsIEtFWV9GKDI2KSAgICAgICAgfSwJLyoga2V5X2YyNiAqLwotCXsgIDIzMiwgS0VZX0YoMjcpICAgICAgICB9LAkvKiBrZXlfZjI3ICovCi0JeyAgMjMzLCBLRVlfRigyOCkgICAgICAgIH0sCS8qIGtleV9mMjggKi8KLQl7ICAyMzQsIEtFWV9GKDI5KSAgICAgICAgfSwJLyoga2V5X2YyOSAqLwotCXsgICA2OCwgS0VZX0YoMikgICAgICAgICB9LAkvKiBrZXlfZjIgKi8KLQl7ICAyMzUsIEtFWV9GKDMwKSAgICAgICAgfSwJLyoga2V5X2YzMCAqLwotCXsgIDIzNiwgS0VZX0YoMzEpICAgICAgICB9LAkvKiBrZXlfZjMxICovCi0JeyAgMjM3LCBLRVlfRigzMikgICAgICAgIH0sCS8qIGtleV9mMzIgKi8KLQl7ICAyMzgsIEtFWV9GKDMzKSAgICAgICAgfSwJLyoga2V5X2YzMyAqLwotCXsgIDIzOSwgS0VZX0YoMzQpICAgICAgICB9LAkvKiBrZXlfZjM0ICovCi0JeyAgMjQwLCBLRVlfRigzNSkgICAgICAgIH0sCS8qIGtleV9mMzUgKi8KLQl7ICAyNDEsIEtFWV9GKDM2KSAgICAgICAgfSwJLyoga2V5X2YzNiAqLwotCXsgIDI0MiwgS0VZX0YoMzcpICAgICAgICB9LAkvKiBrZXlfZjM3ICovCi0JeyAgMjQzLCBLRVlfRigzOCkgICAgICAgIH0sCS8qIGtleV9mMzggKi8KLQl7ICAyNDQsIEtFWV9GKDM5KSAgICAgICAgfSwJLyoga2V5X2YzOSAqLwotCXsgICA2OSwgS0VZX0YoMykgICAgICAgICB9LAkvKiBrZXlfZjMgKi8KLQl7ICAyNDUsIEtFWV9GKDQwKSAgICAgICAgfSwJLyoga2V5X2Y0MCAqLwotCXsgIDI0NiwgS0VZX0YoNDEpICAgICAgICB9LAkvKiBrZXlfZjQxICovCi0JeyAgMjQ3LCBLRVlfRig0MikgICAgICAgIH0sCS8qIGtleV9mNDIgKi8KLQl7ICAyNDgsIEtFWV9GKDQzKSAgICAgICAgfSwJLyoga2V5X2Y0MyAqLwotCXsgIDI0OSwgS0VZX0YoNDQpICAgICAgICB9LAkvKiBrZXlfZjQ0ICovCi0JeyAgMjUwLCBLRVlfRig0NSkgICAgICAgIH0sCS8qIGtleV9mNDUgKi8KLQl7ICAyNTEsIEtFWV9GKDQ2KSAgICAgICAgfSwJLyoga2V5X2Y0NiAqLwotCXsgIDI1MiwgS0VZX0YoNDcpICAgICAgICB9LAkvKiBrZXlfZjQ3ICovCi0JeyAgMjUzLCBLRVlfRig0OCkgICAgICAgIH0sCS8qIGtleV9mNDggKi8KLQl7ICAyNTQsIEtFWV9GKDQ5KSAgICAgICAgfSwJLyoga2V5X2Y0OSAqLwotCXsgICA3MCwgS0VZX0YoNCkgICAgICAgICB9LAkvKiBrZXlfZjQgKi8KLQl7ICAyNTUsIEtFWV9GKDUwKSAgICAgICAgfSwJLyoga2V5X2Y1MCAqLwotCXsgIDI1NiwgS0VZX0YoNTEpICAgICAgICB9LAkvKiBrZXlfZjUxICovCi0JeyAgMjU3LCBLRVlfRig1MikgICAgICAgIH0sCS8qIGtleV9mNTIgKi8KLQl7ICAyNTgsIEtFWV9GKDUzKSAgICAgICAgfSwJLyoga2V5X2Y1MyAqLwotCXsgIDI1OSwgS0VZX0YoNTQpICAgICAgICB9LAkvKiBrZXlfZjU0ICovCi0JeyAgMjYwLCBLRVlfRig1NSkgICAgICAgIH0sCS8qIGtleV9mNTUgKi8KLQl7ICAyNjEsIEtFWV9GKDU2KSAgICAgICAgfSwJLyoga2V5X2Y1NiAqLwotCXsgIDI2MiwgS0VZX0YoNTcpICAgICAgICB9LAkvKiBrZXlfZjU3ICovCi0JeyAgMjYzLCBLRVlfRig1OCkgICAgICAgIH0sCS8qIGtleV9mNTggKi8KLQl7ICAyNjQsIEtFWV9GKDU5KSAgICAgICAgfSwJLyoga2V5X2Y1OSAqLwotCXsgICA3MSwgS0VZX0YoNSkgICAgICAgICB9LAkvKiBrZXlfZjUgKi8KLQl7ICAyNjUsIEtFWV9GKDYwKSAgICAgICAgfSwJLyoga2V5X2Y2MCAqLwotCXsgIDI2NiwgS0VZX0YoNjEpICAgICAgICB9LAkvKiBrZXlfZjYxICovCi0JeyAgMjY3LCBLRVlfRig2MikgICAgICAgIH0sCS8qIGtleV9mNjIgKi8KLQl7ICAyNjgsIEtFWV9GKDYzKSAgICAgICAgfSwJLyoga2V5X2Y2MyAqLwotCXsgICA3MiwgS0VZX0YoNikgICAgICAgICB9LAkvKiBrZXlfZjYgKi8KLQl7ICAgNzMsIEtFWV9GKDcpICAgICAgICAgfSwJLyoga2V5X2Y3ICovCi0JeyAgIDc0LCBLRVlfRig4KSAgICAgICAgIH0sCS8qIGtleV9mOCAqLwotCXsgICA3NSwgS0VZX0YoOSkgICAgICAgICB9LAkvKiBrZXlfZjkgKi8KLQl7ICAxNjcsIEtFWV9GSU5EICAgICAgICAgfSwJLyoga2V5X2ZpbmQgKi8KLQl7ICAxNjgsIEtFWV9IRUxQICAgICAgICAgfSwJLyoga2V5X2hlbHAgKi8KLQl7ICAgNzYsIEtFWV9IT01FICAgICAgICAgfSwJLyoga2V5X2hvbWUgKi8KLQl7ICAgNzcsIEtFWV9JQyAgICAgICAgICAgfSwJLyoga2V5X2ljICovCi0JeyAgIDc4LCBLRVlfSUwgICAgICAgICAgIH0sCS8qIGtleV9pbCAqLwotCXsgICA3OSwgS0VZX0xFRlQgICAgICAgICB9LAkvKiBrZXlfbGVmdCAqLwotCXsgICA4MCwgS0VZX0xMICAgICAgICAgICB9LAkvKiBrZXlfbGwgKi8KLQl7ICAxNjksIEtFWV9NQVJLICAgICAgICAgfSwJLyoga2V5X21hcmsgKi8KLQl7ICAxNzAsIEtFWV9NRVNTQUdFICAgICAgfSwJLyoga2V5X21lc3NhZ2UgKi8KLQl7ICAzNTUsIEtFWV9NT1VTRSAgICAgICAgfSwJLyoga2V5X21vdXNlICovCi0JeyAgMTcxLCBLRVlfTU9WRSAgICAgICAgIH0sCS8qIGtleV9tb3ZlICovCi0JeyAgMTcyLCBLRVlfTkVYVCAgICAgICAgIH0sCS8qIGtleV9uZXh0ICovCi0JeyAgIDgxLCBLRVlfTlBBR0UgICAgICAgIH0sCS8qIGtleV9ucGFnZSAqLwotCXsgIDE3MywgS0VZX09QRU4gICAgICAgICB9LAkvKiBrZXlfb3BlbiAqLwotCXsgIDE3NCwgS0VZX09QVElPTlMgICAgICB9LAkvKiBrZXlfb3B0aW9ucyAqLwotCXsgICA4MiwgS0VZX1BQQUdFICAgICAgICB9LAkvKiBrZXlfcHBhZ2UgKi8KLQl7ICAxNzUsIEtFWV9QUkVWSU9VUyAgICAgfSwJLyoga2V5X3ByZXZpb3VzICovCi0JeyAgMTc2LCBLRVlfUFJJTlQgICAgICAgIH0sCS8qIGtleV9wcmludCAqLwotCXsgIDE3NywgS0VZX1JFRE8gICAgICAgICB9LAkvKiBrZXlfcmVkbyAqLwotCXsgIDE3OCwgS0VZX1JFRkVSRU5DRSAgICB9LAkvKiBrZXlfcmVmZXJlbmNlICovCi0JeyAgMTc5LCBLRVlfUkVGUkVTSCAgICAgIH0sCS8qIGtleV9yZWZyZXNoICovCi0JeyAgMTgwLCBLRVlfUkVQTEFDRSAgICAgIH0sCS8qIGtleV9yZXBsYWNlICovCi0JeyAgMTgxLCBLRVlfUkVTVEFSVCAgICAgIH0sCS8qIGtleV9yZXN0YXJ0ICovCi0JeyAgMTgyLCBLRVlfUkVTVU1FICAgICAgIH0sCS8qIGtleV9yZXN1bWUgKi8KLQl7ICAgODMsIEtFWV9SSUdIVCAgICAgICAgfSwJLyoga2V5X3JpZ2h0ICovCi0JeyAgMTgzLCBLRVlfU0FWRSAgICAgICAgIH0sCS8qIGtleV9zYXZlICovCi0JeyAgMTg2LCBLRVlfU0JFRyAgICAgICAgIH0sCS8qIGtleV9zYmVnICovCi0JeyAgMTg3LCBLRVlfU0NBTkNFTCAgICAgIH0sCS8qIGtleV9zY2FuY2VsICovCi0JeyAgMTg4LCBLRVlfU0NPTU1BTkQgICAgIH0sCS8qIGtleV9zY29tbWFuZCAqLwotCXsgIDE4OSwgS0VZX1NDT1BZICAgICAgICB9LAkvKiBrZXlfc2NvcHkgKi8KLQl7ICAxOTAsIEtFWV9TQ1JFQVRFICAgICAgfSwJLyoga2V5X3NjcmVhdGUgKi8KLQl7ICAxOTEsIEtFWV9TREMgICAgICAgICAgfSwJLyoga2V5X3NkYyAqLwotCXsgIDE5MiwgS0VZX1NETCAgICAgICAgICB9LAkvKiBrZXlfc2RsICovCi0JeyAgMTkzLCBLRVlfU0VMRUNUICAgICAgIH0sCS8qIGtleV9zZWxlY3QgKi8KLQl7ICAxOTQsIEtFWV9TRU5EICAgICAgICAgfSwJLyoga2V5X3NlbmQgKi8KLQl7ICAxOTUsIEtFWV9TRU9MICAgICAgICAgfSwJLyoga2V5X3Nlb2wgKi8KLQl7ICAxOTYsIEtFWV9TRVhJVCAgICAgICAgfSwJLyoga2V5X3NleGl0ICovCi0JeyAgMTk3LCBLRVlfU0ZJTkQgICAgICAgIH0sCS8qIGtleV9zZmluZCAqLwotCXsgICA4NCwgS0VZX1NGICAgICAgICAgICB9LAkvKiBrZXlfc2YgKi8KLQl7ICAxOTgsIEtFWV9TSEVMUCAgICAgICAgfSwJLyoga2V5X3NoZWxwICovCi0JeyAgMTk5LCBLRVlfU0hPTUUgICAgICAgIH0sCS8qIGtleV9zaG9tZSAqLwotCXsgIDIwMCwgS0VZX1NJQyAgICAgICAgICB9LAkvKiBrZXlfc2ljICovCi0JeyAgMjAxLCBLRVlfU0xFRlQgICAgICAgIH0sCS8qIGtleV9zbGVmdCAqLwotCXsgIDIwMiwgS0VZX1NNRVNTQUdFICAgICB9LAkvKiBrZXlfc21lc3NhZ2UgKi8KLQl7ICAyMDMsIEtFWV9TTU9WRSAgICAgICAgfSwJLyoga2V5X3Ntb3ZlICovCi0JeyAgMjA0LCBLRVlfU05FWFQgICAgICAgIH0sCS8qIGtleV9zbmV4dCAqLwotCXsgIDIwNSwgS0VZX1NPUFRJT05TICAgICB9LAkvKiBrZXlfc29wdGlvbnMgKi8KLQl7ICAyMDYsIEtFWV9TUFJFVklPVVMgICAgfSwJLyoga2V5X3NwcmV2aW91cyAqLwotCXsgIDIwNywgS0VZX1NQUklOVCAgICAgICB9LAkvKiBrZXlfc3ByaW50ICovCi0JeyAgMjA4LCBLRVlfU1JFRE8gICAgICAgIH0sCS8qIGtleV9zcmVkbyAqLwotCXsgIDIwOSwgS0VZX1NSRVBMQUNFICAgICB9LAkvKiBrZXlfc3JlcGxhY2UgKi8KLQl7ICAyMTAsIEtFWV9TUklHSFQgICAgICAgfSwJLyoga2V5X3NyaWdodCAqLwotCXsgICA4NSwgS0VZX1NSICAgICAgICAgICB9LAkvKiBrZXlfc3IgKi8KLQl7ICAyMTEsIEtFWV9TUlNVTUUgICAgICAgfSwJLyoga2V5X3Nyc3VtZSAqLwotCXsgIDIxMiwgS0VZX1NTQVZFICAgICAgICB9LAkvKiBrZXlfc3NhdmUgKi8KLQl7ICAyMTMsIEtFWV9TU1VTUEVORCAgICAgfSwJLyoga2V5X3NzdXNwZW5kICovCi0JeyAgIDg2LCBLRVlfU1RBQiAgICAgICAgIH0sCS8qIGtleV9zdGFiICovCi0JeyAgMjE0LCBLRVlfU1VORE8gICAgICAgIH0sCS8qIGtleV9zdW5kbyAqLwotCXsgIDE4NCwgS0VZX1NVU1BFTkQgICAgICB9LAkvKiBrZXlfc3VzcGVuZCAqLwotCXsgIDE4NSwgS0VZX1VORE8gICAgICAgICB9LAkvKiBrZXlfdW5kbyAqLwotCXsgICA4NywgS0VZX1VQICAgICAgICAgICB9LAkvKiBrZXlfdXAgKi8KLQl7IDAsIDB9IH07Ci0KLSNlbmRpZiAvKiBOQ1VfS0VZU19IICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2tleXMubGlzdCBiL25jdXJzZXMva2V5cy5saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmNhOThmLi4wMDAwMDAwCi0tLSBhL25jdXJzZXMva2V5cy5saXN0CisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLUtFWV9BMQlrZXlfYTEKLUtFWV9BMwlrZXlfYTMKLUtFWV9CMglrZXlfYjIKLUtFWV9CQUNLU1BBQ0UJa2V5X2JhY2tzcGFjZQotS0VZX0JFRwlrZXlfYmVnCi1LRVlfQlJFQUsKLUtFWV9CVEFCCWtleV9idGFiCi1LRVlfQzEJa2V5X2MxCi1LRVlfQzMJa2V5X2MzCi1LRVlfQ0FOQ0VMCWtleV9jYW5jZWwKLUtFWV9DQVRBQglrZXlfY2F0YWIKLUtFWV9DTEVBUglrZXlfY2xlYXIKLUtFWV9DTE9TRQlrZXlfY2xvc2UKLUtFWV9DT01NQU5ECWtleV9jb21tYW5kCi1LRVlfQ09QWQlrZXlfY29weQotS0VZX0NSRUFURQlrZXlfY3JlYXRlCi1LRVlfQ1RBQglrZXlfY3RhYgotS0VZX0RDCWtleV9kYwotS0VZX0RMCWtleV9kbAotS0VZX0RPV04Ja2V5X2Rvd24KLUtFWV9FSUMJa2V5X2VpYwotS0VZX0VORAlrZXlfZW5kCi1LRVlfRU5URVIJa2V5X2VudGVyCi1LRVlfRU9MCWtleV9lb2wKLUtFWV9FT1MJa2V5X2VvcwotS0VZX0VYSVQJa2V5X2V4aXQKLUtFWV9GKDApCWtleV9mMAotS0VZX0YoMTApCWtleV9mMTAKLUtFWV9GKDExKQlrZXlfZjExCi1LRVlfRigxMikJa2V5X2YxMgotS0VZX0YoMTMpCWtleV9mMTMKLUtFWV9GKDE0KQlrZXlfZjE0Ci1LRVlfRigxNSkJa2V5X2YxNQotS0VZX0YoMTYpCWtleV9mMTYKLUtFWV9GKDE3KQlrZXlfZjE3Ci1LRVlfRigxOCkJa2V5X2YxOAotS0VZX0YoMTkpCWtleV9mMTkKLUtFWV9GKDEpCWtleV9mMQotS0VZX0YoMjApCWtleV9mMjAKLUtFWV9GKDIxKQlrZXlfZjIxCi1LRVlfRigyMikJa2V5X2YyMgotS0VZX0YoMjMpCWtleV9mMjMKLUtFWV9GKDI0KQlrZXlfZjI0Ci1LRVlfRigyNSkJa2V5X2YyNQotS0VZX0YoMjYpCWtleV9mMjYKLUtFWV9GKDI3KQlrZXlfZjI3Ci1LRVlfRigyOCkJa2V5X2YyOAotS0VZX0YoMjkpCWtleV9mMjkKLUtFWV9GKDIpCWtleV9mMgotS0VZX0YoMzApCWtleV9mMzAKLUtFWV9GKDMxKQlrZXlfZjMxCi1LRVlfRigzMikJa2V5X2YzMgotS0VZX0YoMzMpCWtleV9mMzMKLUtFWV9GKDM0KQlrZXlfZjM0Ci1LRVlfRigzNSkJa2V5X2YzNQotS0VZX0YoMzYpCWtleV9mMzYKLUtFWV9GKDM3KQlrZXlfZjM3Ci1LRVlfRigzOCkJa2V5X2YzOAotS0VZX0YoMzkpCWtleV9mMzkKLUtFWV9GKDMpCWtleV9mMwotS0VZX0YoNDApCWtleV9mNDAKLUtFWV9GKDQxKQlrZXlfZjQxCi1LRVlfRig0MikJa2V5X2Y0MgotS0VZX0YoNDMpCWtleV9mNDMKLUtFWV9GKDQ0KQlrZXlfZjQ0Ci1LRVlfRig0NSkJa2V5X2Y0NQotS0VZX0YoNDYpCWtleV9mNDYKLUtFWV9GKDQ3KQlrZXlfZjQ3Ci1LRVlfRig0OCkJa2V5X2Y0OAotS0VZX0YoNDkpCWtleV9mNDkKLUtFWV9GKDQpCWtleV9mNAotS0VZX0YoNTApCWtleV9mNTAKLUtFWV9GKDUxKQlrZXlfZjUxCi1LRVlfRig1MikJa2V5X2Y1MgotS0VZX0YoNTMpCWtleV9mNTMKLUtFWV9GKDU0KQlrZXlfZjU0Ci1LRVlfRig1NSkJa2V5X2Y1NQotS0VZX0YoNTYpCWtleV9mNTYKLUtFWV9GKDU3KQlrZXlfZjU3Ci1LRVlfRig1OCkJa2V5X2Y1OAotS0VZX0YoNTkpCWtleV9mNTkKLUtFWV9GKDUpCWtleV9mNQotS0VZX0YoNjApCWtleV9mNjAKLUtFWV9GKDYxKQlrZXlfZjYxCi1LRVlfRig2MikJa2V5X2Y2MgotS0VZX0YoNjMpCWtleV9mNjMKLUtFWV9GKDYpCWtleV9mNgotS0VZX0YoNykJa2V5X2Y3Ci1LRVlfRig4KQlrZXlfZjgKLUtFWV9GKDkpCWtleV9mOQotS0VZX0ZJTkQJa2V5X2ZpbmQKLUtFWV9IRUxQCWtleV9oZWxwCi1LRVlfSE9NRQlrZXlfaG9tZQotS0VZX0lDCWtleV9pYwotS0VZX0lMCWtleV9pbAotS0VZX0xFRlQJa2V5X2xlZnQKLUtFWV9MTAlrZXlfbGwKLUtFWV9NQVJLCWtleV9tYXJrCi1LRVlfTUVTU0FHRQlrZXlfbWVzc2FnZQotS0VZX01PVVNFCWtleV9tb3VzZQotS0VZX01PVkUJa2V5X21vdmUKLUtFWV9ORVhUCWtleV9uZXh0Ci1LRVlfTlBBR0UJa2V5X25wYWdlCi1LRVlfT1BFTglrZXlfb3BlbgotS0VZX09QVElPTlMJa2V5X29wdGlvbnMKLUtFWV9QUEFHRQlrZXlfcHBhZ2UKLUtFWV9QUkVWSU9VUwlrZXlfcHJldmlvdXMKLUtFWV9QUklOVAlrZXlfcHJpbnQKLUtFWV9SRURPCWtleV9yZWRvCi1LRVlfUkVGRVJFTkNFCWtleV9yZWZlcmVuY2UKLUtFWV9SRUZSRVNICWtleV9yZWZyZXNoCi1LRVlfUkVQTEFDRQlrZXlfcmVwbGFjZQotS0VZX1JFU0VUCi1LRVlfUkVTSVpFCi1LRVlfUkVTVEFSVAlrZXlfcmVzdGFydAotS0VZX1JFU1VNRQlrZXlfcmVzdW1lCi1LRVlfUklHSFQJa2V5X3JpZ2h0Ci1LRVlfU0FWRQlrZXlfc2F2ZQotS0VZX1NCRUcJa2V5X3NiZWcKLUtFWV9TQ0FOQ0VMCWtleV9zY2FuY2VsCi1LRVlfU0NPTU1BTkQJa2V5X3Njb21tYW5kCi1LRVlfU0NPUFkJa2V5X3Njb3B5Ci1LRVlfU0NSRUFURQlrZXlfc2NyZWF0ZQotS0VZX1NEQwlrZXlfc2RjCi1LRVlfU0RMCWtleV9zZGwKLUtFWV9TRUxFQ1QJa2V5X3NlbGVjdAotS0VZX1NFTkQJa2V5X3NlbmQKLUtFWV9TRU9MCWtleV9zZW9sCi1LRVlfU0VYSVQJa2V5X3NleGl0Ci1LRVlfU0ZJTkQJa2V5X3NmaW5kCi1LRVlfU0YJa2V5X3NmCi1LRVlfU0hFTFAJa2V5X3NoZWxwCi1LRVlfU0hPTUUJa2V5X3Nob21lCi1LRVlfU0lDCWtleV9zaWMKLUtFWV9TTEVGVAlrZXlfc2xlZnQKLUtFWV9TTUVTU0FHRQlrZXlfc21lc3NhZ2UKLUtFWV9TTU9WRQlrZXlfc21vdmUKLUtFWV9TTkVYVAlrZXlfc25leHQKLUtFWV9TT1BUSU9OUwlrZXlfc29wdGlvbnMKLUtFWV9TUFJFVklPVVMJa2V5X3NwcmV2aW91cwotS0VZX1NQUklOVAlrZXlfc3ByaW50Ci1LRVlfU1JFRE8Ja2V5X3NyZWRvCi1LRVlfU1JFUExBQ0UJa2V5X3NyZXBsYWNlCi1LRVlfU1JFU0VUCi1LRVlfU1JJR0hUCWtleV9zcmlnaHQKLUtFWV9TUglrZXlfc3IKLUtFWV9TUlNVTUUJa2V5X3Nyc3VtZQotS0VZX1NTQVZFCWtleV9zc2F2ZQotS0VZX1NTVVNQRU5ECWtleV9zc3VzcGVuZAotS0VZX1NUQUIJa2V5X3N0YWIKLUtFWV9TVU5ETwlrZXlfc3VuZG8KLUtFWV9TVVNQRU5ECWtleV9zdXNwZW5kCi1LRVlfVU5ETwlrZXlfdW5kbwotS0VZX1VQCWtleV91cAotIyBUaGVzZSBkZWZpbml0aW9ucyB3ZXJlIGdlbmVyYXRlZCBieSAuL3RpbmZvL01La2V5c19saXN0LnNoIC4uL2luY2x1ZGUvQ2FwcwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9saWJfZ2VuLmMgYi9uY3Vyc2VzL2xpYl9nZW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2Yjg5Zi4uMDAwMDAwMAotLS0gYS9uY3Vyc2VzL2xpYl9nZW4uYworKysgL2Rldi9udWxsCkBAIC0xLDk3MyArMCwwIEBACi0vKgotICogRE8gTk9UIEVESVQgVEhJUyBGSUxFIEJZIEhBTkQhCi0gKiBJdCBpcyBnZW5lcmF0ZWQgYnkgLi9iYXNlL01LbGliX2dlbi5zaCBnZW5lcmF0ZWQuCi0gKgotICogVGhpcyBpcyBhIGZpbGUgb2YgdHJpdmlhbCBmdW5jdGlvbnMgZ2VuZXJhdGVkIGZyb20gbWFjcm8KLSAqIGRlZmluaXRpb25zIGluIGN1cnNlcy5oIHRvIHNhdGlzZnkgdGhlIFhTSSBDdXJzZXMgcmVxdWlyZW1lbnQKLSAqIHRoYXQgZXZlcnkgbWFjcm8gYWxzbyBleGlzdCBhcyBhIGNhbGxhYmxlIGZ1bmN0aW9uLgotICoKLSAqIEl0IHdpbGwgbmV2ZXIgYmUgbGlua2VkIHVubGVzcyB5b3UgY2FsbCBvbmUgb2YgdGhlIGVudHJ5Ci0gKiBwb2ludHMgd2l0aCBpdHMgbm9ybWFsIG1hY3JvIGRlZmluaXRpb24gZGlzYWJsZWQuIEluIHRoYXQKLSAqIGNhc2UsIGlmIHlvdSBoYXZlIG5vIHNoYXJlZCBsaWJyYXJpZXMsIGl0IHdpbGwgaW5kaXJlY3RseQotICogcHVsbCBtb3N0IG9mIHRoZSByZXN0IG9mIHRoZSBsaWJyYXJ5IGludG8geW91ciBsaW5rIGltYWdlLgotICovCi0jZGVmaW5lIE5DVVJTRVNfQVRUUl9UIGludAotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0KLQotI3VuZGVmIGFkZGNoCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNoIChjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiYWRkY2goJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyByZXR1cm5Db2RlKHdhZGRjaChzdGRzY3IseikpOwotfQotCi0KLSN1bmRlZiBhZGRjaG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgYWRkY2huc3RyIChjb25zdCBjaHR5cGUgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImFkZGNobnN0ciglcCwlZCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSh3YWRkY2huc3RyKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotI3VuZGVmIGFkZGNoc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGFkZGNoc3RyIChjb25zdCBjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhZGRjaHN0ciglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdhZGRjaG5zdHIoc3Rkc2NyLHosLTEpKTsKLX0KLQotCi0jdW5kZWYgYWRkbnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBhZGRuc3RyIChjb25zdCBjaGFyICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJhZGRuc3RyKCVzLCVkKSIpLCBfbmNfdmlzYnVmMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdhZGRuc3RyKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotI3VuZGVmIGFkZHN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBhZGRzdHIgKGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhZGRzdHIoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZSh3YWRkbnN0cihzdGRzY3IseiwtMSkpOwotfQotCi0KLSN1bmRlZiBhdHRyb2ZmCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJvZmYgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyb2ZmKCVzKSIpLCBfdHJhY2VhdHRyMigwLHopKSk7IHJldHVybkNvZGUod2F0dHJfb2ZmKHN0ZHNjciwgKGF0dHJfdCkoeiksICgodm9pZCAqKTApKSk7Ci19Ci0KLQotI3VuZGVmIGF0dHJvbgotTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyb24gKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyb24oJXMpIiksIF90cmFjZWF0dHIyKDAseikpKTsgcmV0dXJuQ29kZSh3YXR0cl9vbihzdGRzY3IsIChhdHRyX3QpKHopLCAoKHZvaWQgKikwKSkpOwotfQotCi0KLSN1bmRlZiBhdHRyc2V0Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJzZXQgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyc2V0KCVzKSIpLCBfdHJhY2VhdHRyMigwLHopKSk7IHJldHVybkF0dHIoKChzdGRzY3IpLT5fYXR0cnMgPSAoeikpKTsKLX0KLQotCi0jdW5kZWYgYXR0cl9nZXQKLU5DVVJTRVNfRVhQT1JUKGludCkgYXR0cl9nZXQgKGF0dHJfdCAqIGExLCBzaG9ydCAqIGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgiYXR0cl9nZXQoJXAsJXAsJXApIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKCgodm9pZCkoKGExKSAhPSAodm9pZCAqKTAgJiYgKCooYTEpID0gKHN0ZHNjciktPl9hdHRycykpLCAodm9pZCkoKGEyKSAhPSAodm9pZCAqKTAgJiYgKCooYTIpID0gKChpbnQpKCgoKChzdGRzY3IpLT5fYXR0cnMpICYgKCgoKDFVTCkgPDwgOCkgLSAxVUwpIDw8ICgoMCkgKyA4KSkpID4+IDgpKSkpKSwgKDApKSk7Ci19Ci0KLQotI3VuZGVmIGF0dHJfb2ZmCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfb2ZmIChhdHRyX3QgYTEsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyX29mZiglcywlcCkiKSwgX3RyYWNlYXR0cjIoMCxhMSksIHopKTsgcmV0dXJuQ29kZSh3YXR0cl9vZmYoc3Rkc2NyLGExLHopKTsKLX0KLQotCi0jdW5kZWYgYXR0cl9vbgotTkNVUlNFU19FWFBPUlQoaW50KSBhdHRyX29uIChhdHRyX3QgYTEsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyX29uKCVzLCVwKSIpLCBfdHJhY2VhdHRyMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdhdHRyX29uKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotI3VuZGVmIGF0dHJfc2V0Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGF0dHJfc2V0IChhdHRyX3QgYTEsIHNob3J0IGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgiYXR0cl9zZXQoJXMsJWQsJXApIiksIF90cmFjZWF0dHIyKDAsYTEpLCBhMiwgeikpOyByZXR1cm5Db2RlKCgoc3Rkc2NyKS0+X2F0dHJzID0gKCgoYTEpICYgfigoKCgxVUwpIDw8IDgpIC0gMVVMKSA8PCAoKDApICsgOCkpKSB8ICgoYTIpIDw8ICgoMCkgKyA4KSkpLCAoMCkpKTsKLX0KLQotCi0jdW5kZWYgYmtnZAotTkNVUlNFU19FWFBPUlQoaW50KSBia2dkIChjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiYmtnZCglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUod2JrZ2Qoc3Rkc2NyLHopKTsKLX0KLQotCi0jdW5kZWYgYmtnZHNldAotTkNVUlNFU19FWFBPUlQodm9pZCkgYmtnZHNldCAoY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoImJrZ2RzZXQoJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyB3YmtnZHNldChzdGRzY3Iseik7Ci0JcmV0dXJuVm9pZDsKLX0KLQotCi0jdW5kZWYgYm9yZGVyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGJvcmRlciAoY2h0eXBlIGExLCBjaHR5cGUgYTIsIGNodHlwZSBhMywgY2h0eXBlIGE0LCBjaHR5cGUgYTUsIGNodHlwZSBhNiwgY2h0eXBlIGE3LCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiYm9yZGVyKCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzKSIpLCBfdHJhY2VjaHR5cGUyKDAsYTEpLCBfdHJhY2VjaHR5cGUyKDEsYTIpLCBfdHJhY2VjaHR5cGUyKDIsYTMpLCBfdHJhY2VjaHR5cGUyKDMsYTQpLCBfdHJhY2VjaHR5cGUyKDQsYTUpLCBfdHJhY2VjaHR5cGUyKDUsYTYpLCBfdHJhY2VjaHR5cGUyKDYsYTcpLCBfdHJhY2VjaHR5cGUyKDcseikpKTsgcmV0dXJuQ29kZSh3Ym9yZGVyKHN0ZHNjciwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIHopKTsKLX0KLQotCi0jdW5kZWYgYm94Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGJveCAoV0lORE9XICogYTEsIGNodHlwZSBhMiwgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoImJveCglcCwlcywlcykiKSwgYTEsIF90cmFjZWNodHlwZTIoMSxhMiksIF90cmFjZWNodHlwZTIoMix6KSkpOyByZXR1cm5Db2RlKHdib3JkZXIoYTEsIGEyLCBhMiwgeiwgeiwgMCwgMCwgMCwgMCkpOwotfQotCi0KLSN1bmRlZiBjaGdhdAotTkNVUlNFU19FWFBPUlQoaW50KSBjaGdhdCAoaW50IGExLCBhdHRyX3QgYTIsIHNob3J0IGEzLCBjb25zdCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgiY2hnYXQoJWQsJXMsJWQsJXApIiksIGExLCBfdHJhY2VhdHRyMigxLGEyKSwgYTMsIHopKTsgcmV0dXJuQ29kZSh3Y2hnYXQoc3Rkc2NyLGExLGEyLGEzLHopKTsKLX0KLQotCi0jdW5kZWYgY2xlYXIKLU5DVVJTRVNfRVhQT1JUKGludCkgY2xlYXIgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImNsZWFyKCkiKSkpOyByZXR1cm5Db2RlKHdjbGVhcihzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgY2xydG9ib3QKLU5DVVJTRVNfRVhQT1JUKGludCkgY2xydG9ib3QgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImNscnRvYm90KCkiKSkpOyByZXR1cm5Db2RlKHdjbHJ0b2JvdChzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgY2xydG9lb2wKLU5DVVJTRVNfRVhQT1JUKGludCkgY2xydG9lb2wgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImNscnRvZW9sKCkiKSkpOyByZXR1cm5Db2RlKHdjbHJ0b2VvbChzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgY29sb3Jfc2V0Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGNvbG9yX3NldCAoc2hvcnQgYTEsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJjb2xvcl9zZXQoJWQsJXApIiksIGExLCB6KSk7IHJldHVybkNvZGUod2NvbG9yX3NldChzdGRzY3IsYTEseikpOwotfQotCi0KLSN1bmRlZiBDT0xPUl9QQUlSCi1OQ1VSU0VTX0VYUE9SVChpbnQpIENPTE9SX1BBSVIgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJDT0xPUl9QQUlSKCVkKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA8PCAoKDApICsgOCkpKTsKLX0KLQotCi0jdW5kZWYgZGVsY2gKLU5DVVJTRVNfRVhQT1JUKGludCkgZGVsY2ggKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImRlbGNoKCkiKSkpOyByZXR1cm5Db2RlKHdkZWxjaChzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgZGVsZXRlbG4KLU5DVVJTRVNfRVhQT1JUKGludCkgZGVsZXRlbG4gKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImRlbGV0ZWxuKCkiKSkpOyByZXR1cm5Db2RlKHdpbnNkZWxsbihzdGRzY3IsLTEpKTsKLX0KLQotCi0jdW5kZWYgZWNob2NoYXIKLU5DVVJTRVNfRVhQT1JUKGludCkgZWNob2NoYXIgKGNvbnN0IGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJlY2hvY2hhciglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUod2VjaG9jaGFyKHN0ZHNjcix6KSk7Ci19Ci0KLQotI3VuZGVmIGVyYXNlCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGVyYXNlICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJlcmFzZSgpIikpKTsgcmV0dXJuQ29kZSh3ZXJhc2Uoc3Rkc2NyKSk7Ci19Ci0KLQotI3VuZGVmIGdldGJrZ2QKLU5DVVJTRVNfRVhQT1JUKGNodHlwZSkgZ2V0YmtnZCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0YmtnZCglcCkiKSwgeikpOyByZXR1cm5DaGFyKCgoeiktPl9ia2dkKSk7Ci19Ci0KLQotI3VuZGVmIGdldGNoCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGdldGNoICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJnZXRjaCgpIikpKTsgcmV0dXJuQ29kZSh3Z2V0Y2goc3Rkc2NyKSk7Ci19Ci0KLQotI3VuZGVmIGdldG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgZ2V0bnN0ciAoY2hhciAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0bnN0ciglcywlZCkiKSwgX25jX3Zpc2J1ZjIoMCxhMSksIHopKTsgcmV0dXJuQ29kZSh3Z2V0bnN0cihzdGRzY3IsIGExLCB6KSk7Ci19Ci0KLQotI3VuZGVmIGdldHN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBnZXRzdHIgKGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRzdHIoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZSh3Z2V0bnN0cihzdGRzY3IsIHosIC0xKSk7Ci19Ci0KLQotI3VuZGVmIGhsaW5lCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGhsaW5lIChjaHR5cGUgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJobGluZSglcywlZCkiKSwgX3RyYWNlY2h0eXBlMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdobGluZShzdGRzY3IsIGExLCB6KSk7Ci19Ci0KLQotI3VuZGVmIGluY2gKLU5DVVJTRVNfRVhQT1JUKGNodHlwZSkgaW5jaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiaW5jaCgpIikpKTsgcmV0dXJuQ2hhcih3aW5jaChzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgaW5jaG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgaW5jaG5zdHIgKGNodHlwZSAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiaW5jaG5zdHIoJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod2luY2huc3RyKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotI3VuZGVmIGluY2hzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgaW5jaHN0ciAoY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgiaW5jaHN0ciglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdpbmNobnN0cihzdGRzY3IsIHosIC0xKSk7Ci19Ci0KLQotI3VuZGVmIGlubnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBpbm5zdHIgKGNoYXIgKiBhMSwgaW50IHopCi17Ci0JcmV0dXJuIHdpbm5zdHIoc3Rkc2NyLGExLHopIDsKLX0KLQotCi0jdW5kZWYgaW5zY2gKLU5DVVJTRVNfRVhQT1JUKGludCkgaW5zY2ggKGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJpbnNjaCglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUod2luc2NoKHN0ZHNjcix6KSk7Ci19Ci0KLQotI3VuZGVmIGluc2RlbGxuCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGluc2RlbGxuIChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiaW5zZGVsbG4oJWQpIiksIHopKTsgcmV0dXJuQ29kZSh3aW5zZGVsbG4oc3Rkc2NyLHopKTsKLX0KLQotCi0jdW5kZWYgaW5zZXJ0bG4KLU5DVVJTRVNfRVhQT1JUKGludCkgaW5zZXJ0bG4gKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImluc2VydGxuKCkiKSkpOyByZXR1cm5Db2RlKHdpbnNkZWxsbihzdGRzY3IsMSkpOwotfQotCi0KLSN1bmRlZiBpbnNuc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGluc25zdHIgKGNvbnN0IGNoYXIgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImluc25zdHIoJXMsJWQpIiksIF9uY192aXNidWYyKDAsYTEpLCB6KSk7IHJldHVybkNvZGUod2luc25zdHIoc3Rkc2NyLGExLHopKTsKLX0KLQotCi0jdW5kZWYgaW5zc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGluc3N0ciAoY29uc3QgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImluc3N0ciglcykiKSwgX25jX3Zpc2J1ZjIoMCx6KSkpOyByZXR1cm5Db2RlKHdpbnNuc3RyKHN0ZHNjciwgeiwgLTEpKTsKLX0KLQotCi0jdW5kZWYgaW5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgaW5zdHIgKGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpbnN0ciglcykiKSwgX25jX3Zpc2J1ZjIoMCx6KSkpOyByZXR1cm5Db2RlKHdpbm5zdHIoc3Rkc2NyLCB6LCAtMSkpOwotfQotCi0KLSN1bmRlZiBtb3ZlCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG1vdmUgKGludCBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm1vdmUoJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod21vdmUoc3Rkc2NyLGExLHopKTsKLX0KLQotCi0jdW5kZWYgbXZhZGRjaAotTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12YWRkY2goJWQsJWQsJXMpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2goc3Rkc2NyLHopKSk7Ci19Ci0KLQotI3VuZGVmIG12YWRkY2huc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12YWRkY2huc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlICogYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmFkZGNobnN0ciglZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2FkZGNobnN0cihzdGRzY3IsYTMseikpKTsKLX0KLQotCi0jdW5kZWYgbXZhZGRjaHN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdmFkZGNoc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgibXZhZGRjaHN0ciglZCwlZCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2huc3RyKHN0ZHNjcix6LC0xKSkpOwotfQotCi0KLSN1bmRlZiBtdmFkZG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRuc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2hhciAqIGEzLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZhZGRuc3RyKCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIF9uY192aXNidWYyKDIsYTMpLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3YWRkbnN0cihzdGRzY3IsYTMseikpKTsKLX0KLQotCi0jdW5kZWYgbXZhZGRzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZhZGRzdHIgKGludCBhMSwgaW50IGEyLCBjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZhZGRzdHIoJWQsJWQsJXMpIiksIGExLCBhMiwgX25jX3Zpc2J1ZjIoMix6KSkpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2FkZG5zdHIoc3Rkc2NyLHosLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12Y2hnYXQKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZjaGdhdCAoaW50IGExLCBpbnQgYTIsIGludCBhMywgYXR0cl90IGE0LCBzaG9ydCBhNSwgY29uc3Qgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12Y2hnYXQoJWQsJWQsJWQsJXMsJWQsJXApIiksIGExLCBhMiwgYTMsIF90cmFjZWF0dHIyKDMsYTQpLCBhNSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2NoZ2F0KHN0ZHNjcixhMyxhNCxhNSx6KSkpOwotfQotCi0KLSN1bmRlZiBtdmRlbGNoCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12ZGVsY2ggKGludCBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12ZGVsY2goJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSx6KSA9PSAoLTEpID8gKC0xKSA6IHdkZWxjaChzdGRzY3IpKSk7Ci19Ci0KLQotI3VuZGVmIG12Z2V0Y2gKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZnZXRjaCAoaW50IGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZnZXRjaCglZCwlZCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLHopID09ICgtMSkgPyAoLTEpIDogd2dldGNoKHN0ZHNjcikpKTsKLX0KLQotCi0jdW5kZWYgbXZnZXRuc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12Z2V0bnN0ciAoaW50IGExLCBpbnQgYTIsIGNoYXIgKiBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12Z2V0bnN0ciglZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2dldG5zdHIoc3Rkc2NyLGEzLHopKSk7Ci19Ci0KLQotI3VuZGVmIG12Z2V0c3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12Z2V0c3RyIChpbnQgYTEsIGludCBhMiwgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12Z2V0c3RyKCVkLCVkLCVzKSIpLCBhMSwgYTIsIF9uY192aXNidWYyKDIseikpKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHdnZXRuc3RyKHN0ZHNjciwgeiwgLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12aGxpbmUKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZobGluZSAoaW50IGExLCBpbnQgYTIsIGNodHlwZSBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12aGxpbmUoJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2hsaW5lKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLSN1bmRlZiBtdmluY2gKLU5DVVJTRVNfRVhQT1JUKGNodHlwZSkgbXZpbmNoIChpbnQgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmluY2goJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNoYXIoKHdtb3ZlKHN0ZHNjcixhMSx6KSA9PSAoLTEpID8gKGNodHlwZSkoKC0xKSkgOiB3aW5jaChzdGRzY3IpKSk7Ci19Ci0KLQotI3VuZGVmIG12aW5jaG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZpbmNobnN0ciAoaW50IGExLCBpbnQgYTIsIGNodHlwZSAqIGEzLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZpbmNobnN0ciglZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2luY2huc3RyKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLSN1bmRlZiBtdmluY2hzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZpbmNoc3RyIChpbnQgYTEsIGludCBhMiwgY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgibXZpbmNoc3RyKCVkLCVkLCVwKSIpLCBhMSwgYTIsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHdpbmNobnN0cihzdGRzY3IsIHosIC0xKSkpOwotfQotCi0KLSN1bmRlZiBtdmlubnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdmlubnN0ciAoaW50IGExLCBpbnQgYTIsIGNoYXIgKiBhMywgaW50IHopCi17Ci0JcmV0dXJuICh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2lubnN0cihzdGRzY3IsYTMseikpIDsKLX0KLQotCi0jdW5kZWYgbXZpbnNjaAotTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc2NoIChpbnQgYTEsIGludCBhMiwgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12aW5zY2goJWQsJWQsJXMpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5zY2goc3Rkc2NyLHopKSk7Ci19Ci0KLQotI3VuZGVmIG12aW5zbnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc25zdHIgKGludCBhMSwgaW50IGEyLCBjb25zdCBjaGFyICogYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmluc25zdHIoJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgX25jX3Zpc2J1ZjIoMixhMyksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHdpbnNuc3RyKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLSN1bmRlZiBtdmluc3N0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdmluc3N0ciAoaW50IGExLCBpbnQgYTIsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmluc3N0ciglZCwlZCwlcykiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5zbnN0cihzdGRzY3IsIHosIC0xKSkpOwotfQotCi0KLSN1bmRlZiBtdmluc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12aW5zdHIgKGludCBhMSwgaW50IGEyLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZpbnN0ciglZCwlZCwlcykiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5uc3RyKHN0ZHNjciwgeiwgLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12dmxpbmUKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ2bGluZSAoaW50IGExLCBpbnQgYTIsIGNodHlwZSBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12dmxpbmUoJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd3ZsaW5lKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLSN1bmRlZiBtdndhZGRjaAotTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRjaCAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3YWRkY2goJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF90cmFjZWNodHlwZTIoMyx6KSkpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2goYTEseikpKTsKLX0KLQotCi0jdW5kZWYgbXZ3YWRkY2huc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12d2FkZGNobnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaHR5cGUgKiBhNCwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d2FkZGNobnN0ciglcCwlZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgYTQsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2FkZGNobnN0cihhMSxhNCx6KSkpOwotfQotCi0KLSN1bmRlZiBtdndhZGRjaHN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdndhZGRjaHN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndhZGRjaHN0ciglcCwlZCwlZCwlcCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2huc3RyKGExLHosLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12d2FkZG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3YWRkbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaGFyICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndhZGRuc3RyKCVwLCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLGE0KSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3YWRkbnN0cihhMSxhNCx6KSkpOwotfQotCi0KLSN1bmRlZiBtdndhZGRzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3YWRkc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndhZGRzdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2FkZG5zdHIoYTEseiwtMSkpKTsKLX0KLQotCi0jdW5kZWYgbXZ3Y2hnYXQKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Y2hnYXQgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LCBhdHRyX3QgYTUsIHNob3J0IGE2LCBjb25zdCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Y2hnYXQoJXAsJWQsJWQsJWQsJXMsJWQsJXApIiksIGExLCBhMiwgYTMsIGE0LCBfdHJhY2VhdHRyMig0LGE1KSwgYTYsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2NoZ2F0KGExLGE0LGE1LGE2LHopKSk7Ci19Ci0KLQotI3VuZGVmIG12d2RlbGNoCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12d2RlbGNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3ZGVsY2goJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMix6KSA9PSAoLTEpID8gKC0xKSA6IHdkZWxjaChhMSkpKTsKLX0KLQotCi0jdW5kZWYgbXZ3Z2V0Y2gKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3Z2V0Y2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndnZXRjaCglcCwlZCwlZCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLHopID09ICgtMSkgPyAoLTEpIDogd2dldGNoKGExKSkpOwotfQotCi0KLSN1bmRlZiBtdndnZXRuc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldG5zdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2hhciAqIGE0LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Z2V0bnN0ciglcCwlZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBhMywgX25jX3Zpc2J1ZjIoMyxhNCksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2dldG5zdHIoYTEsYTQseikpKTsKLX0KLQotCi0jdW5kZWYgbXZ3Z2V0c3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12d2dldHN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Z2V0c3RyKCVwLCVkLCVkLCVzKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHdnZXRuc3RyKGExLCB6LCAtMSkpKTsKLX0KLQotCi0jdW5kZWYgbXZ3aGxpbmUKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aGxpbmUgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlIGE0LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3aGxpbmUoJXAsJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgYTMsIF90cmFjZWNodHlwZTIoMyxhNCksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2hsaW5lKGExLGE0LHopKSk7Ci19Ci0KLQotI3VuZGVmIG12d2luY2gKLU5DVVJTRVNfRVhQT1JUKGNodHlwZSkgbXZ3aW5jaCAoV0lORE9XICogYTEsIGludCBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d2luY2goJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5DaGFyKCh3bW92ZShhMSxhMix6KSA9PSAoLTEpID8gKGNodHlwZSkoKC0xKSkgOiB3aW5jaChhMSkpKTsKLX0KLQotCi0jdW5kZWYgbXZ3aW5jaG5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5jaG5zdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbmNobnN0ciglcCwlZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgYTQsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luY2huc3RyKGExLGE0LHopKSk7Ci19Ci0KLQotI3VuZGVmIG12d2luY2hzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5jaHN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbmNoc3RyKCVwLCVkLCVkLCVwKSIpLCBhMSwgYTIsIGEzLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHdpbmNobnN0cihhMSwgeiwgLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12d2lubnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbm5zdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2hhciAqIGE0LCBpbnQgeikKLXsKLQlyZXR1cm4gKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHdpbm5zdHIoYTEsYTQseikpIDsKLX0KLQotCi0jdW5kZWYgbXZ3aW5zY2gKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zY2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d2luc2NoKCVwLCVkLCVkLCVzKSIpLCBhMSwgYTIsIGEzLCBfdHJhY2VjaHR5cGUyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luc2NoKGExLHopKSk7Ci19Ci0KLQotI3VuZGVmIG12d2luc25zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaGFyICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbnNuc3RyKCVwLCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLGE0KSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3aW5zbnN0cihhMSxhNCx6KSkpOwotfQotCi0KLSN1bmRlZiBtdndpbnNzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgbXZ3aW5zc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbnNzdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luc25zdHIoYTEsIHosIC0xKSkpOwotfQotCi0KLSN1bmRlZiBtdndpbnN0cgotTkNVUlNFU19FWFBPUlQoaW50KSBtdndpbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3aW5zdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2lubnN0cihhMSwgeiwgLTEpKSk7Ci19Ci0KLQotI3VuZGVmIG12d3ZsaW5lCi1OQ1VSU0VTX0VYUE9SVChpbnQpIG12d3ZsaW5lIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNodHlwZSBhNCwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d3ZsaW5lKCVwLCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIGEzLCBfdHJhY2VjaHR5cGUyKDMsYTQpLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHd2bGluZShhMSxhNCx6KSkpOwotfQotCi0KLSN1bmRlZiBQQUlSX05VTUJFUgotTkNVUlNFU19FWFBPUlQoaW50KSBQQUlSX05VTUJFUiAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIlBBSVJfTlVNQkVSKCVkKSIpLCB6KSk7IHJldHVybkNvZGUoKChpbnQpKCgoKHopICYgKCgoKDFVTCkgPDwgOCkgLSAxVUwpIDw8ICgoMCkgKyA4KSkpID4+IDgpKSkpOwotfQotCi0KLSN1bmRlZiByZWRyYXd3aW4KLU5DVVJTRVNfRVhQT1JUKGludCkgcmVkcmF3d2luIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJyZWRyYXd3aW4oJXApIiksIHopKTsgcmV0dXJuQ29kZSh3cmVkcmF3bG4oeiwgMCwgKHopLT5fbWF4eSsxKSk7Ci19Ci0KLQotI3VuZGVmIHJlZnJlc2gKLU5DVVJTRVNfRVhQT1JUKGludCkgcmVmcmVzaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgicmVmcmVzaCgpIikpKTsgcmV0dXJuQ29kZSh3cmVmcmVzaChzdGRzY3IpKTsKLX0KLQotCi0jdW5kZWYgc2NybAotTkNVUlNFU19FWFBPUlQoaW50KSBzY3JsIChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgic2NybCglZCkiKSwgeikpOyByZXR1cm5Db2RlKHdzY3JsKHN0ZHNjcix6KSk7Ci19Ci0KLQotI3VuZGVmIHNjcm9sbAotTkNVUlNFU19FWFBPUlQoaW50KSBzY3JvbGwgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNjcm9sbCglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdzY3JsKHosMSkpOwotfQotCi0KLSN1bmRlZiBzZXRzY3JyZWcKLU5DVVJTRVNfRVhQT1JUKGludCkgc2V0c2NycmVnIChpbnQgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJzZXRzY3JyZWcoJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod3NldHNjcnJlZyhzdGRzY3IsYTEseikpOwotfQotCi0KLSNpZiBVU0VfV0lERUNfU1VQUE9SVAotI3VuZGVmIHNsa19hdHRyX29mZgotTkNVUlNFU19FWFBPUlQoaW50KSBzbGtfYXR0cl9vZmYgKGNvbnN0IGF0dHJfdCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19hdHRyX29mZiglcywlcCkiKSwgX3RyYWNlYXR0cjIoMCxhMSksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKC0xKSA6IHNsa19hdHRyb2ZmKGExKSkpOwotfQotI2VuZGlmCi0KLQotI2lmIFVTRV9XSURFQ19TVVBQT1JUCi0jdW5kZWYgc2xrX2F0dHJfb24KLU5DVVJTRVNfRVhQT1JUKGludCkgc2xrX2F0dHJfb24gKGF0dHJfdCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19hdHRyX29uKCVzLCVwKSIpLCBfdHJhY2VhdHRyMigwLGExKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoLTEpIDogc2xrX2F0dHJvbihhMSkpKTsKLX0KLSNlbmRpZgotCi0KLSN1bmRlZiBzdGFuZG91dAotTkNVUlNFU19FWFBPUlQoaW50KSBzdGFuZG91dCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgic3RhbmRvdXQoKSIpKSk7IHJldHVybkF0dHIoKCgoc3Rkc2NyKS0+X2F0dHJzID0gKCgoMVVMKSA8PCAoKDgpICsgOCkpKSkpKTsKLX0KLQotCi0jdW5kZWYgc3RhbmRlbmQKLU5DVVJTRVNfRVhQT1JUKGludCkgc3RhbmRlbmQgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInN0YW5kZW5kKCkiKSkpOyByZXR1cm5BdHRyKCgoKHN0ZHNjciktPl9hdHRycyA9ICgoMVVMIC0gMVVMKSkpKSk7Ci19Ci0KLQotI3VuZGVmIHRpbWVvdXQKLU5DVVJTRVNfRVhQT1JUKHZvaWQpIHRpbWVvdXQgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ0aW1lb3V0KCVkKSIpLCB6KSk7IHd0aW1lb3V0KHN0ZHNjcix6KTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLSN1bmRlZiB0b3VjaGxpbmUKLU5DVVJTRVNfRVhQT1JUKGludCkgdG91Y2hsaW5lIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgidG91Y2hsaW5lKCVwLCVkLCVkKSIpLCBhMSwgYTIsIHopKTsgcmV0dXJuQ29kZSh3dG91Y2hsbigoYTEpLCBhMiwgeiwgMSkpOwotfQotCi0KLSN1bmRlZiB0b3VjaHdpbgotTkNVUlNFU19FWFBPUlQoaW50KSB0b3VjaHdpbiAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgidG91Y2h3aW4oJXApIiksIHopKTsgcmV0dXJuQ29kZSh3dG91Y2hsbigoeiksIDAsICgoeikgPyAoKHopLT5fbWF4eSArIDEpIDogKC0xKSksIDEpKTsKLX0KLQotCi0jdW5kZWYgdW50b3VjaHdpbgotTkNVUlNFU19FWFBPUlQoaW50KSB1bnRvdWNod2luIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ1bnRvdWNod2luKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod3RvdWNobG4oKHopLCAwLCAoKHopID8gKCh6KS0+X21heHkgKyAxKSA6ICgtMSkpLCAwKSk7Ci19Ci0KLQotI3VuZGVmIHZsaW5lCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHZsaW5lIChjaHR5cGUgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ2bGluZSglcywlZCkiKSwgX3RyYWNlY2h0eXBlMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHd2bGluZShzdGRzY3IsIGExLCB6KSk7Ci19Ci0KLQotI3VuZGVmIHZ3X3ByaW50dwotTkNVUlNFU19FWFBPUlQoaW50KSB2d19wcmludHcgKFdJTkRPVyAqIGExLCBjb25zdCBjaGFyICogYTIsIHZhX2xpc3QgeikKLXsKLQlUKChUX0NBTExFRCgidndfcHJpbnR3KCVwLCVzLCVzKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSxhMiksICJ2YV9saXN0IikpOyByZXR1cm5Db2RlKHZ3cHJpbnR3KGExLCBhMiwgeikpOwotfQotCi0KLSN1bmRlZiB2d19zY2FudwotTkNVUlNFU19FWFBPUlQoaW50KSB2d19zY2FudyAoV0lORE9XICogYTEsIGNoYXIgKiBhMiwgdmFfbGlzdCB6KQotewotCVQoKFRfQ0FMTEVEKCJ2d19zY2FudyglcCwlcywlcykiKSwgYTEsIF9uY192aXNidWYyKDEsYTIpLCAidmFfbGlzdCIpKTsgcmV0dXJuQ29kZSh2d3NjYW53KGExLCBhMiwgeikpOwotfQotCi0KLSN1bmRlZiB3YWRkY2hzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgd2FkZGNoc3RyIChXSU5ET1cgKiBhMSwgY29uc3QgY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgid2FkZGNoc3RyKCVwLCVwKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdhZGRjaG5zdHIoYTEseiwtMSkpOwotfQotCi0KLSN1bmRlZiB3YWRkc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHdhZGRzdHIgKFdJTkRPVyAqIGExLCBjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgid2FkZHN0ciglcCwlcykiKSwgYTEsIF9uY192aXNidWYyKDEseikpKTsgcmV0dXJuQ29kZSh3YWRkbnN0cihhMSx6LC0xKSk7Ci19Ci0KLQotI3VuZGVmIHdhdHRyb24KLU5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJvbiAoV0lORE9XICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3YXR0cm9uKCVwLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdhdHRyX29uKGExLCAoYXR0cl90KSh6KSwgKCh2b2lkICopMCkpKTsKLX0KLQotCi0jdW5kZWYgd2F0dHJvZmYKLU5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJvZmYgKFdJTkRPVyAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgid2F0dHJvZmYoJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod2F0dHJfb2ZmKGExLCAoYXR0cl90KSh6KSwgKCh2b2lkICopMCkpKTsKLX0KLQotCi0jdW5kZWYgd2F0dHJzZXQKLU5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJzZXQgKFdJTkRPVyAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgid2F0dHJzZXQoJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkF0dHIoKChhMSktPl9hdHRycyA9ICh6KSkpOwotfQotCi0KLSN1bmRlZiB3YXR0cl9nZXQKLU5DVVJTRVNfRVhQT1JUKGludCkgd2F0dHJfZ2V0IChXSU5ET1cgKiBhMSwgYXR0cl90ICogYTIsIHNob3J0ICogYTMsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3YXR0cl9nZXQoJXAsJXAsJXAsJXApIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuQ29kZSgoKHZvaWQpKChhMikgIT0gKHZvaWQgKikwICYmICgqKGEyKSA9IChhMSktPl9hdHRycykpLCAodm9pZCkoKGEzKSAhPSAodm9pZCAqKTAgJiYgKCooYTMpID0gKChpbnQpKCgoKChhMSktPl9hdHRycykgJiAoKCgoMVVMKSA8PCA4KSAtIDFVTCkgPDwgKCgwKSArIDgpKSkgPj4gOCkpKSkpLCAoMCkpKTsKLX0KLQotCi0jdW5kZWYgd2F0dHJfc2V0Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIHdhdHRyX3NldCAoV0lORE9XICogYTEsIGF0dHJfdCBhMiwgc2hvcnQgYTMsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3YXR0cl9zZXQoJXAsJXMsJWQsJXApIiksIGExLCBfdHJhY2VhdHRyMigxLGEyKSwgYTMsIHopKTsgcmV0dXJuQ29kZSgoKGExKS0+X2F0dHJzID0gKCgoYTIpICYgfigoKCgxVUwpIDw8IDgpIC0gMVVMKSA8PCAoKDApICsgOCkpKSB8ICgoYTMpIDw8ICgoMCkgKyA4KSkpLCAoMCkpKTsKLX0KLQotCi0jdW5kZWYgd2RlbGV0ZWxuCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHdkZWxldGVsbiAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid2RlbGV0ZWxuKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod2luc2RlbGxuKHosLTEpKTsKLX0KLQotCi0jdW5kZWYgd2dldHN0cgotTkNVUlNFU19FWFBPUlQoaW50KSB3Z2V0c3RyIChXSU5ET1cgKiBhMSwgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndnZXRzdHIoJXAsJXMpIiksIGExLCBfbmNfdmlzYnVmMigxLHopKSk7IHJldHVybkNvZGUod2dldG5zdHIoYTEsIHosIC0xKSk7Ci19Ci0KLQotI3VuZGVmIHdpbmNoc3RyCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHdpbmNoc3RyIChXSU5ET1cgKiBhMSwgY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgid2luY2hzdHIoJXAsJXApIiksIGExLCB6KSk7IHJldHVybkNvZGUod2luY2huc3RyKGExLCB6LCAtMSkpOwotfQotCi0KLSN1bmRlZiB3aW5zZXJ0bG4KLU5DVVJTRVNfRVhQT1JUKGludCkgd2luc2VydGxuIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aW5zZXJ0bG4oJXApIiksIHopKTsgcmV0dXJuQ29kZSh3aW5zZGVsbG4oeiwxKSk7Ci19Ci0KLQotI3VuZGVmIHdpbnNzdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgd2luc3N0ciAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aW5zc3RyKCVwLCVzKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSx6KSkpOyByZXR1cm5Db2RlKHdpbnNuc3RyKGExLCB6LCAtMSkpOwotfQotCi0KLSN1bmRlZiB3aW5zdHIKLU5DVVJTRVNfRVhQT1JUKGludCkgd2luc3RyIChXSU5ET1cgKiBhMSwgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndpbnN0ciglcCwlcykiKSwgYTEsIF9uY192aXNidWYyKDEseikpKTsgcmV0dXJuQ29kZSh3aW5uc3RyKGExLCB6LCAtMSkpOwotfQotCi0KLSN1bmRlZiB3c3RhbmRvdXQKLU5DVVJTRVNfRVhQT1JUKGludCkgd3N0YW5kb3V0IChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3c3RhbmRvdXQoJXApIiksIHopKTsgcmV0dXJuQXR0cigoKCh6KS0+X2F0dHJzID0gKCgoMVVMKSA8PCAoKDgpICsgOCkpKSkpKTsKLX0KLQotCi0jdW5kZWYgd3N0YW5kZW5kCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHdzdGFuZGVuZCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid3N0YW5kZW5kKCVwKSIpLCB6KSk7IHJldHVybkF0dHIoKCgoeiktPl9hdHRycyA9ICgoMVVMIC0gMVVMKSkpKSk7Ci19Ci0KLQotI3VuZGVmIGdldGF0dHJzCi1OQ1VSU0VTX0VYUE9SVChpbnQpIGdldGF0dHJzIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRhdHRycyglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9hdHRycyA6ICgxVUwgLSAxVUwpKSk7Ci19Ci0KLQotI3VuZGVmIGdldGN1cngKLU5DVVJTRVNfRVhQT1JUKGludCkgZ2V0Y3VyeCAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0Y3VyeCglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9jdXJ4IDogKC0xKSkpOwotfQotCi0KLSN1bmRlZiBnZXRjdXJ5Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGdldGN1cnkgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldGN1cnkoJXApIiksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKHopLT5fY3VyeSA6ICgtMSkpKTsKLX0KLQotCi0jdW5kZWYgZ2V0YmVneAotTkNVUlNFU19FWFBPUlQoaW50KSBnZXRiZWd4IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRiZWd4KCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICh6KS0+X2JlZ3ggOiAoLTEpKSk7Ci19Ci0KLQotI3VuZGVmIGdldGJlZ3kKLU5DVVJTRVNfRVhQT1JUKGludCkgZ2V0YmVneSAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0YmVneSglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9iZWd5IDogKC0xKSkpOwotfQotCi0KLSN1bmRlZiBnZXRtYXh4Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGdldG1heHggKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldG1heHgoJXApIiksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKCh6KS0+X21heHggKyAxKSA6ICgtMSkpKTsKLX0KLQotCi0jdW5kZWYgZ2V0bWF4eQotTkNVUlNFU19FWFBPUlQoaW50KSBnZXRtYXh5IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRtYXh5KCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICgoeiktPl9tYXh5ICsgMSkgOiAoLTEpKSk7Ci19Ci0KLQotI3VuZGVmIGdldHBhcngKLU5DVVJTRVNfRVhQT1JUKGludCkgZ2V0cGFyeCAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0cGFyeCglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9wYXJ4IDogKC0xKSkpOwotfQotCi0KLSN1bmRlZiBnZXRwYXJ5Ci1OQ1VSU0VTX0VYUE9SVChpbnQpIGdldHBhcnkgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldHBhcnkoJXApIiksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKHopLT5fcGFyeSA6ICgtMSkpKTsKLX0KLQotCi0jdW5kZWYgd2dldHBhcmVudAotTkNVUlNFU19FWFBPUlQoV0lORE9XICopIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIiglcCkiKSwgeikpOyByZXR1cm5XaW4oKCh6KSA/ICh6KS0+X3BhcmVudCA6IDApKTsKLX0KLQotCi0jdW5kZWYgaXNfY2xlYXJlZAotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19CT09MKSBpc19jbGVhcmVkIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19jbGVhcmVkKCVwKSIpLCB6KSk7IHJldHVybkJvb2woKCh6KS0+X2NsZWFyKSk7Ci19Ci0KLQotI3VuZGVmIGlzX2lkY29rCi1OQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0JPT0wpIGlzX2lkY29rIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19pZGNvayglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9pZGNvaykpOwotfQotCi0KLSN1bmRlZiBpc19pZGxvawotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19CT09MKSBpc19pZGxvayAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfaWRsb2soJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5faWRsb2spKTsKLX0KLQotCi0jdW5kZWYgaXNfaW1tZWRvawotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19CT09MKSBpc19pbW1lZG9rIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19pbW1lZG9rKCVwKSIpLCB6KSk7IHJldHVybkJvb2woKCh6KS0+X2ltbWVkKSk7Ci19Ci0KLQotI3VuZGVmIGlzX2tleXBhZAotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19CT09MKSBpc19rZXlwYWQgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX2tleXBhZCglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl91c2Vfa2V5cGFkKSk7Ci19Ci0KLQotI3VuZGVmIGlzX2xlYXZlb2sKLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgaXNfbGVhdmVvayAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfbGVhdmVvayglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9sZWF2ZW9rKSk7Ci19Ci0KLQotI3VuZGVmIGlzX25vZGVsYXkKLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgaXNfbm9kZWxheSAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfbm9kZWxheSglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9kZWxheSA9PSAwKSk7Ci19Ci0KLQotI3VuZGVmIGlzX25vdGltZW91dAotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19CT09MKSBpc19ub3RpbWVvdXQgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX25vdGltZW91dCglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9ub3RpbWVvdXQpKTsKLX0KLQotCi0jdW5kZWYgaXNfc2Nyb2xsb2sKLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgaXNfc2Nyb2xsb2sgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX3Njcm9sbG9rKCVwKSIpLCB6KSk7IHJldHVybkJvb2woKCh6KS0+X3Njcm9sbCkpOwotfQotCi0KLSN1bmRlZiBpc19zeW5jb2sKLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgaXNfc3luY29rIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19zeW5jb2soJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5fc3luYykpOwotfQotCi0KLSN1bmRlZiB3Z2V0c2NycmVnCi1OQ1VSU0VTX0VYUE9SVChpbnQpIHdnZXRzY3JyZWcgKGNvbnN0IFdJTkRPVyAqIGExLCBpbnQgKiBhMiwgaW50ICogeikKLXsKLQlUKChUX0NBTExFRCgid2dldHNjcnJlZyglcCwlcCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKChhMSkgPyAoKihhMikgPSAoYTEpLT5fcmVndG9wLCAqKHopID0gKGExKS0+X3JlZ2JvdHRvbSwgKDApKSA6ICgtMSkpKTsKLX0KLQotCi0jdW5kZWYgbW91c2VfdHJhZm8KLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQk9PTCkgbW91c2VfdHJhZm8gKGludCAqIGExLCBpbnQgKiBhMiwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoIm1vdXNlX3RyYWZvKCVwLCVwLCUjbHgpIiksIGExLCBhMiwgKGxvbmcpeikpOyByZXR1cm5Cb29sKHdtb3VzZV90cmFmbyhzdGRzY3IsYTEsYTIseikpOwotfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9saWJfa2V5bmFtZS5jIGIvbmN1cnNlcy9saWJfa2V5bmFtZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTJhOTVhLi4wMDAwMDAwCi0tLSBhL25jdXJzZXMvbGliX2tleW5hbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDQwNSArMCwwIEBACi0vKiBnZW5lcmF0ZWQgYnkgTUtrZXluYW1lLmF3ayAqLwotCi0jaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0aWMuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+Ci0KLXN0cnVjdCBrbiB7IHNob3J0IG9mZnNldDsgaW50IGNvZGU7IH07Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGtuIF9uY19rZXlfbmFtZXNbXSA9IHsKLQl7IDAsIEtFWV9BMSB9LAotCXsgNywgS0VZX0EzIH0sCi0JeyAxNCwgS0VZX0IyIH0sCi0JeyAyMSwgS0VZX0JBQ0tTUEFDRSB9LAotCXsgMzUsIEtFWV9CRUcgfSwKLQl7IDQzLCBLRVlfQlJFQUsgfSwKLQl7IDUzLCBLRVlfQlRBQiB9LAotCXsgNjIsIEtFWV9DMSB9LAotCXsgNjksIEtFWV9DMyB9LAotCXsgNzYsIEtFWV9DQU5DRUwgfSwKLQl7IDg3LCBLRVlfQ0FUQUIgfSwKLQl7IDk3LCBLRVlfQ0xFQVIgfSwKLQl7IDEwNywgS0VZX0NMT1NFIH0sCi0JeyAxMTcsIEtFWV9DT01NQU5EIH0sCi0JeyAxMjksIEtFWV9DT1BZIH0sCi0JeyAxMzgsIEtFWV9DUkVBVEUgfSwKLQl7IDE0OSwgS0VZX0NUQUIgfSwKLQl7IDE1OCwgS0VZX0RDIH0sCi0JeyAxNjUsIEtFWV9ETCB9LAotCXsgMTcyLCBLRVlfRE9XTiB9LAotCXsgMTgxLCBLRVlfRUlDIH0sCi0JeyAxODksIEtFWV9FTkQgfSwKLQl7IDE5NywgS0VZX0VOVEVSIH0sCi0JeyAyMDcsIEtFWV9FT0wgfSwKLQl7IDIxNSwgS0VZX0VPUyB9LAotCXsgMjIzLCBLRVlfRVhJVCB9LAotCXsgMjMyLCBLRVlfRigwKSB9LAotCXsgMjQxLCBLRVlfRigxMCkgfSwKLQl7IDI1MSwgS0VZX0YoMTEpIH0sCi0JeyAyNjEsIEtFWV9GKDEyKSB9LAotCXsgMjcxLCBLRVlfRigxMykgfSwKLQl7IDI4MSwgS0VZX0YoMTQpIH0sCi0JeyAyOTEsIEtFWV9GKDE1KSB9LAotCXsgMzAxLCBLRVlfRigxNikgfSwKLQl7IDMxMSwgS0VZX0YoMTcpIH0sCi0JeyAzMjEsIEtFWV9GKDE4KSB9LAotCXsgMzMxLCBLRVlfRigxOSkgfSwKLQl7IDM0MSwgS0VZX0YoMSkgfSwKLQl7IDM1MCwgS0VZX0YoMjApIH0sCi0JeyAzNjAsIEtFWV9GKDIxKSB9LAotCXsgMzcwLCBLRVlfRigyMikgfSwKLQl7IDM4MCwgS0VZX0YoMjMpIH0sCi0JeyAzOTAsIEtFWV9GKDI0KSB9LAotCXsgNDAwLCBLRVlfRigyNSkgfSwKLQl7IDQxMCwgS0VZX0YoMjYpIH0sCi0JeyA0MjAsIEtFWV9GKDI3KSB9LAotCXsgNDMwLCBLRVlfRigyOCkgfSwKLQl7IDQ0MCwgS0VZX0YoMjkpIH0sCi0JeyA0NTAsIEtFWV9GKDIpIH0sCi0JeyA0NTksIEtFWV9GKDMwKSB9LAotCXsgNDY5LCBLRVlfRigzMSkgfSwKLQl7IDQ3OSwgS0VZX0YoMzIpIH0sCi0JeyA0ODksIEtFWV9GKDMzKSB9LAotCXsgNDk5LCBLRVlfRigzNCkgfSwKLQl7IDUwOSwgS0VZX0YoMzUpIH0sCi0JeyA1MTksIEtFWV9GKDM2KSB9LAotCXsgNTI5LCBLRVlfRigzNykgfSwKLQl7IDUzOSwgS0VZX0YoMzgpIH0sCi0JeyA1NDksIEtFWV9GKDM5KSB9LAotCXsgNTU5LCBLRVlfRigzKSB9LAotCXsgNTY4LCBLRVlfRig0MCkgfSwKLQl7IDU3OCwgS0VZX0YoNDEpIH0sCi0JeyA1ODgsIEtFWV9GKDQyKSB9LAotCXsgNTk4LCBLRVlfRig0MykgfSwKLQl7IDYwOCwgS0VZX0YoNDQpIH0sCi0JeyA2MTgsIEtFWV9GKDQ1KSB9LAotCXsgNjI4LCBLRVlfRig0NikgfSwKLQl7IDYzOCwgS0VZX0YoNDcpIH0sCi0JeyA2NDgsIEtFWV9GKDQ4KSB9LAotCXsgNjU4LCBLRVlfRig0OSkgfSwKLQl7IDY2OCwgS0VZX0YoNCkgfSwKLQl7IDY3NywgS0VZX0YoNTApIH0sCi0JeyA2ODcsIEtFWV9GKDUxKSB9LAotCXsgNjk3LCBLRVlfRig1MikgfSwKLQl7IDcwNywgS0VZX0YoNTMpIH0sCi0JeyA3MTcsIEtFWV9GKDU0KSB9LAotCXsgNzI3LCBLRVlfRig1NSkgfSwKLQl7IDczNywgS0VZX0YoNTYpIH0sCi0JeyA3NDcsIEtFWV9GKDU3KSB9LAotCXsgNzU3LCBLRVlfRig1OCkgfSwKLQl7IDc2NywgS0VZX0YoNTkpIH0sCi0JeyA3NzcsIEtFWV9GKDUpIH0sCi0JeyA3ODYsIEtFWV9GKDYwKSB9LAotCXsgNzk2LCBLRVlfRig2MSkgfSwKLQl7IDgwNiwgS0VZX0YoNjIpIH0sCi0JeyA4MTYsIEtFWV9GKDYzKSB9LAotCXsgODI2LCBLRVlfRig2KSB9LAotCXsgODM1LCBLRVlfRig3KSB9LAotCXsgODQ0LCBLRVlfRig4KSB9LAotCXsgODUzLCBLRVlfRig5KSB9LAotCXsgODYyLCBLRVlfRklORCB9LAotCXsgODcxLCBLRVlfSEVMUCB9LAotCXsgODgwLCBLRVlfSE9NRSB9LAotCXsgODg5LCBLRVlfSUMgfSwKLQl7IDg5NiwgS0VZX0lMIH0sCi0JeyA5MDMsIEtFWV9MRUZUIH0sCi0JeyA5MTIsIEtFWV9MTCB9LAotCXsgOTE5LCBLRVlfTUFSSyB9LAotCXsgOTI4LCBLRVlfTUVTU0FHRSB9LAotCXsgOTQwLCBLRVlfTU9VU0UgfSwKLQl7IDk1MCwgS0VZX01PVkUgfSwKLQl7IDk1OSwgS0VZX05FWFQgfSwKLQl7IDk2OCwgS0VZX05QQUdFIH0sCi0JeyA5NzgsIEtFWV9PUEVOIH0sCi0JeyA5ODcsIEtFWV9PUFRJT05TIH0sCi0JeyA5OTksIEtFWV9QUEFHRSB9LAotCXsgMTAwOSwgS0VZX1BSRVZJT1VTIH0sCi0JeyAxMDIyLCBLRVlfUFJJTlQgfSwKLQl7IDEwMzIsIEtFWV9SRURPIH0sCi0JeyAxMDQxLCBLRVlfUkVGRVJFTkNFIH0sCi0JeyAxMDU1LCBLRVlfUkVGUkVTSCB9LAotCXsgMTA2NywgS0VZX1JFUExBQ0UgfSwKLQl7IDEwNzksIEtFWV9SRVNFVCB9LAotCXsgMTA4OSwgS0VZX1JFU0laRSB9LAotCXsgMTEwMCwgS0VZX1JFU1RBUlQgfSwKLQl7IDExMTIsIEtFWV9SRVNVTUUgfSwKLQl7IDExMjMsIEtFWV9SSUdIVCB9LAotCXsgMTEzMywgS0VZX1NBVkUgfSwKLQl7IDExNDIsIEtFWV9TQkVHIH0sCi0JeyAxMTUxLCBLRVlfU0NBTkNFTCB9LAotCXsgMTE2MywgS0VZX1NDT01NQU5EIH0sCi0JeyAxMTc2LCBLRVlfU0NPUFkgfSwKLQl7IDExODYsIEtFWV9TQ1JFQVRFIH0sCi0JeyAxMTk4LCBLRVlfU0RDIH0sCi0JeyAxMjA2LCBLRVlfU0RMIH0sCi0JeyAxMjE0LCBLRVlfU0VMRUNUIH0sCi0JeyAxMjI1LCBLRVlfU0VORCB9LAotCXsgMTIzNCwgS0VZX1NFT0wgfSwKLQl7IDEyNDMsIEtFWV9TRVhJVCB9LAotCXsgMTI1MywgS0VZX1NGSU5EIH0sCi0JeyAxMjYzLCBLRVlfU0YgfSwKLQl7IDEyNzAsIEtFWV9TSEVMUCB9LAotCXsgMTI4MCwgS0VZX1NIT01FIH0sCi0JeyAxMjkwLCBLRVlfU0lDIH0sCi0JeyAxMjk4LCBLRVlfU0xFRlQgfSwKLQl7IDEzMDgsIEtFWV9TTUVTU0FHRSB9LAotCXsgMTMyMSwgS0VZX1NNT1ZFIH0sCi0JeyAxMzMxLCBLRVlfU05FWFQgfSwKLQl7IDEzNDEsIEtFWV9TT1BUSU9OUyB9LAotCXsgMTM1NCwgS0VZX1NQUkVWSU9VUyB9LAotCXsgMTM2OCwgS0VZX1NQUklOVCB9LAotCXsgMTM3OSwgS0VZX1NSRURPIH0sCi0JeyAxMzg5LCBLRVlfU1JFUExBQ0UgfSwKLQl7IDE0MDIsIEtFWV9TUkVTRVQgfSwKLQl7IDE0MTMsIEtFWV9TUklHSFQgfSwKLQl7IDE0MjQsIEtFWV9TUiB9LAotCXsgMTQzMSwgS0VZX1NSU1VNRSB9LAotCXsgMTQ0MiwgS0VZX1NTQVZFIH0sCi0JeyAxNDUyLCBLRVlfU1NVU1BFTkQgfSwKLQl7IDE0NjUsIEtFWV9TVEFCIH0sCi0JeyAxNDc0LCBLRVlfU1VORE8gfSwKLQl7IDE0ODQsIEtFWV9TVVNQRU5EIH0sCi0JeyAxNDk2LCBLRVlfVU5ETyB9LAotCXsgMTUwNSwgS0VZX1VQIH0sCi0JeyAtMSwgMCB9fTsKLQotc3RhdGljIGNvbnN0IGNoYXIga2V5X25hbWVzW10gPSAKLQkiS0VZX0ExXDAiCi0JIktFWV9BM1wwIgotCSJLRVlfQjJcMCIKLQkiS0VZX0JBQ0tTUEFDRVwwIgotCSJLRVlfQkVHXDAiCi0JIktFWV9CUkVBS1wwIgotCSJLRVlfQlRBQlwwIgotCSJLRVlfQzFcMCIKLQkiS0VZX0MzXDAiCi0JIktFWV9DQU5DRUxcMCIKLQkiS0VZX0NBVEFCXDAiCi0JIktFWV9DTEVBUlwwIgotCSJLRVlfQ0xPU0VcMCIKLQkiS0VZX0NPTU1BTkRcMCIKLQkiS0VZX0NPUFlcMCIKLQkiS0VZX0NSRUFURVwwIgotCSJLRVlfQ1RBQlwwIgotCSJLRVlfRENcMCIKLQkiS0VZX0RMXDAiCi0JIktFWV9ET1dOXDAiCi0JIktFWV9FSUNcMCIKLQkiS0VZX0VORFwwIgotCSJLRVlfRU5URVJcMCIKLQkiS0VZX0VPTFwwIgotCSJLRVlfRU9TXDAiCi0JIktFWV9FWElUXDAiCi0JIktFWV9GKDApXDAiCi0JIktFWV9GKDEwKVwwIgotCSJLRVlfRigxMSlcMCIKLQkiS0VZX0YoMTIpXDAiCi0JIktFWV9GKDEzKVwwIgotCSJLRVlfRigxNClcMCIKLQkiS0VZX0YoMTUpXDAiCi0JIktFWV9GKDE2KVwwIgotCSJLRVlfRigxNylcMCIKLQkiS0VZX0YoMTgpXDAiCi0JIktFWV9GKDE5KVwwIgotCSJLRVlfRigxKVwwIgotCSJLRVlfRigyMClcMCIKLQkiS0VZX0YoMjEpXDAiCi0JIktFWV9GKDIyKVwwIgotCSJLRVlfRigyMylcMCIKLQkiS0VZX0YoMjQpXDAiCi0JIktFWV9GKDI1KVwwIgotCSJLRVlfRigyNilcMCIKLQkiS0VZX0YoMjcpXDAiCi0JIktFWV9GKDI4KVwwIgotCSJLRVlfRigyOSlcMCIKLQkiS0VZX0YoMilcMCIKLQkiS0VZX0YoMzApXDAiCi0JIktFWV9GKDMxKVwwIgotCSJLRVlfRigzMilcMCIKLQkiS0VZX0YoMzMpXDAiCi0JIktFWV9GKDM0KVwwIgotCSJLRVlfRigzNSlcMCIKLQkiS0VZX0YoMzYpXDAiCi0JIktFWV9GKDM3KVwwIgotCSJLRVlfRigzOClcMCIKLQkiS0VZX0YoMzkpXDAiCi0JIktFWV9GKDMpXDAiCi0JIktFWV9GKDQwKVwwIgotCSJLRVlfRig0MSlcMCIKLQkiS0VZX0YoNDIpXDAiCi0JIktFWV9GKDQzKVwwIgotCSJLRVlfRig0NClcMCIKLQkiS0VZX0YoNDUpXDAiCi0JIktFWV9GKDQ2KVwwIgotCSJLRVlfRig0NylcMCIKLQkiS0VZX0YoNDgpXDAiCi0JIktFWV9GKDQ5KVwwIgotCSJLRVlfRig0KVwwIgotCSJLRVlfRig1MClcMCIKLQkiS0VZX0YoNTEpXDAiCi0JIktFWV9GKDUyKVwwIgotCSJLRVlfRig1MylcMCIKLQkiS0VZX0YoNTQpXDAiCi0JIktFWV9GKDU1KVwwIgotCSJLRVlfRig1NilcMCIKLQkiS0VZX0YoNTcpXDAiCi0JIktFWV9GKDU4KVwwIgotCSJLRVlfRig1OSlcMCIKLQkiS0VZX0YoNSlcMCIKLQkiS0VZX0YoNjApXDAiCi0JIktFWV9GKDYxKVwwIgotCSJLRVlfRig2MilcMCIKLQkiS0VZX0YoNjMpXDAiCi0JIktFWV9GKDYpXDAiCi0JIktFWV9GKDcpXDAiCi0JIktFWV9GKDgpXDAiCi0JIktFWV9GKDkpXDAiCi0JIktFWV9GSU5EXDAiCi0JIktFWV9IRUxQXDAiCi0JIktFWV9IT01FXDAiCi0JIktFWV9JQ1wwIgotCSJLRVlfSUxcMCIKLQkiS0VZX0xFRlRcMCIKLQkiS0VZX0xMXDAiCi0JIktFWV9NQVJLXDAiCi0JIktFWV9NRVNTQUdFXDAiCi0JIktFWV9NT1VTRVwwIgotCSJLRVlfTU9WRVwwIgotCSJLRVlfTkVYVFwwIgotCSJLRVlfTlBBR0VcMCIKLQkiS0VZX09QRU5cMCIKLQkiS0VZX09QVElPTlNcMCIKLQkiS0VZX1BQQUdFXDAiCi0JIktFWV9QUkVWSU9VU1wwIgotCSJLRVlfUFJJTlRcMCIKLQkiS0VZX1JFRE9cMCIKLQkiS0VZX1JFRkVSRU5DRVwwIgotCSJLRVlfUkVGUkVTSFwwIgotCSJLRVlfUkVQTEFDRVwwIgotCSJLRVlfUkVTRVRcMCIKLQkiS0VZX1JFU0laRVwwIgotCSJLRVlfUkVTVEFSVFwwIgotCSJLRVlfUkVTVU1FXDAiCi0JIktFWV9SSUdIVFwwIgotCSJLRVlfU0FWRVwwIgotCSJLRVlfU0JFR1wwIgotCSJLRVlfU0NBTkNFTFwwIgotCSJLRVlfU0NPTU1BTkRcMCIKLQkiS0VZX1NDT1BZXDAiCi0JIktFWV9TQ1JFQVRFXDAiCi0JIktFWV9TRENcMCIKLQkiS0VZX1NETFwwIgotCSJLRVlfU0VMRUNUXDAiCi0JIktFWV9TRU5EXDAiCi0JIktFWV9TRU9MXDAiCi0JIktFWV9TRVhJVFwwIgotCSJLRVlfU0ZJTkRcMCIKLQkiS0VZX1NGXDAiCi0JIktFWV9TSEVMUFwwIgotCSJLRVlfU0hPTUVcMCIKLQkiS0VZX1NJQ1wwIgotCSJLRVlfU0xFRlRcMCIKLQkiS0VZX1NNRVNTQUdFXDAiCi0JIktFWV9TTU9WRVwwIgotCSJLRVlfU05FWFRcMCIKLQkiS0VZX1NPUFRJT05TXDAiCi0JIktFWV9TUFJFVklPVVNcMCIKLQkiS0VZX1NQUklOVFwwIgotCSJLRVlfU1JFRE9cMCIKLQkiS0VZX1NSRVBMQUNFXDAiCi0JIktFWV9TUkVTRVRcMCIKLQkiS0VZX1NSSUdIVFwwIgotCSJLRVlfU1JcMCIKLQkiS0VZX1NSU1VNRVwwIgotCSJLRVlfU1NBVkVcMCIKLQkiS0VZX1NTVVNQRU5EXDAiCi0JIktFWV9TVEFCXDAiCi0JIktFWV9TVU5ET1wwIgotCSJLRVlfU1VTUEVORFwwIgotCSJLRVlfVU5ET1wwIgotCSJLRVlfVVBcMCI7Ci0KLSNkZWZpbmUgU0laRU9GX1RBQkxFIDI1NgotI2RlZmluZSBNeVRhYmxlIF9uY19nbG9iYWxzLmtleW5hbWVfdGFibGUKLQotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIF9uY19rZXluYW1lIChTQ1JFRU4gKnNwLCBpbnQgYykKLXsKLQlpbnQgaTsKLQljaGFyIG5hbWVbMjBdOwotCWNoYXIgKnA7Ci0JTkNVUlNFU19DT05TVCBjaGFyICpyZXN1bHQgPSAwOwotCi0JaWYgKGMgPT0gLTEpIHsKLQkJcmVzdWx0ID0gIi0xIjsKLQl9IGVsc2UgewotCQlmb3IgKGkgPSAwOyBfbmNfa2V5X25hbWVzW2ldLm9mZnNldCAhPSAtMTsgaSsrKSB7Ci0JCQlpZiAoX25jX2tleV9uYW1lc1tpXS5jb2RlID09IGMpIHsKLQkJCQlyZXN1bHQgPSAoTkNVUlNFU19DT05TVCBjaGFyICopa2V5X25hbWVzICsgX25jX2tleV9uYW1lc1tpXS5vZmZzZXQ7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQotCQlpZiAocmVzdWx0ID09IDAgJiYgKGMgPj0gMCAmJiBjIDwgU0laRU9GX1RBQkxFKSkgewotCQkJaWYgKE15VGFibGUgPT0gMCkKLQkJCQlNeVRhYmxlID0gdHlwZUNhbGxvYyhjaGFyICosIFNJWkVPRl9UQUJMRSk7Ci0JCQlpZiAoTXlUYWJsZSAhPSAwKSB7Ci0JCQkJaWYgKE15VGFibGVbY10gPT0gMCkgewotCQkJCQlpbnQgY2MgPSBjOwotCQkJCQlwID0gbmFtZTsKLQkJCQkJaWYgKGNjID49IDEyOCAmJiAoc3AgPT0gMCB8fCBzcC0+X3VzZV9tZXRhKSkgewotCQkJCQkJc3RyY3B5KHAsICJNLSIpOwotCQkJCQkJcCArPSAyOwotCQkJCQkJY2MgLT0gMTI4OwotCQkJCQl9Ci0JCQkJCWlmIChjYyA8IDMyKQotCQkJCQkJc3ByaW50ZihwLCAiXiVjIiwgY2MgKyAnQCcpOwotCQkJCQllbHNlIGlmIChjYyA9PSAxMjcpCi0JCQkJCQlzdHJjcHkocCwgIl4/Iik7Ci0JCQkJCWVsc2UKLQkJCQkJCXNwcmludGYocCwgIiVjIiwgY2MpOwotCQkJCQlNeVRhYmxlW2NdID0gc3RyZHVwKG5hbWUpOwotCQkJCX0KLQkJCQlyZXN1bHQgPSBNeVRhYmxlW2NdOwotCQkJfQotI2lmIE5DVVJTRVNfRVhUX0ZVTkNTICYmIE5DVVJTRVNfWE5BTUVTCi0JCX0gZWxzZSBpZiAocmVzdWx0ID09IDAgJiYgY3VyX3Rlcm0gIT0gMCkgewotCQkJaW50IGosIGs7Ci0JCQljaGFyICogYm91bmQ7Ci0JCQlURVJNVFlQRSAqdHAgPSAmKGN1cl90ZXJtLT50eXBlKTsKLQkJCWludCBzYXZlX3RyYWNlID0gX25jX3RyYWNpbmc7Ci0KLQkJCV9uY190cmFjaW5nID0gMDsJLyogcHJldmVudCByZWN1cnNpb24gdmlhIGtleWJvdW5kKCkgKi8KLQkJCWZvciAoaiA9IDA7IChib3VuZCA9IGtleWJvdW5kKGMsIGopKSAhPSAwOyArK2opIHsKLQkJCQlmb3IoayA9IFNUUkNPVU5UOyBrIDwgKGludCkgTlVNX1NUUklOR1ModHApOyAgaysrKSB7Ci0JCQkJCWlmICh0cC0+U3RyaW5nc1trXSAhPSAwICYmICFzdHJjbXAoYm91bmQsIHRwLT5TdHJpbmdzW2tdKSkgewotCQkJCQkJcmVzdWx0ID0gRXh0U3RybmFtZSh0cCwgaywgc3RybmFtZXMpOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJZnJlZShib3VuZCk7Ci0JCQkJaWYgKHJlc3VsdCAhPSAwKQotCQkJCQlicmVhazsKLQkJCX0KLQkJCV9uY190cmFjaW5nID0gc2F2ZV90cmFjZTsKLSNlbmRpZgotCQl9Ci0JfQotCXJldHVybiByZXN1bHQ7Ci19Ci0KLU5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBrZXluYW1lIChpbnQgYykKLXsKLQlyZXR1cm4gX25jX2tleW5hbWUoU1AsIGMpOwotfQotCi0jaWYgTk9fTEVBS1MKLXZvaWQgX25jX2tleW5hbWVfbGVha3Modm9pZCkKLXsKLQlpbnQgajsKLQlpZiAoTXlUYWJsZSAhPSAwKSB7Ci0JCWZvciAoaiA9IDA7IGogPCBTSVpFT0ZfVEFCTEU7ICsraikgewotCQkJRnJlZUlmTmVlZGVkKE15VGFibGVbal0pOwotCQl9Ci0JCUZyZWVBbmROdWxsKE15VGFibGUpOwotCX0KLX0KLSNlbmRpZiAvKiBOT19MRUFLUyAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9saW5rX3Rlc3QuYyBiL25jdXJzZXMvbGlua190ZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4OGE3NTQuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9saW5rX3Rlc3QuYworKysgL2Rldi9udWxsCkBAIC0xLDE5OTkgKzAsMCBAQAotLyoKLSAqIERPIE5PVCBFRElUIFRISVMgRklMRSBCWSBIQU5EIQotICogSXQgaXMgZ2VuZXJhdGVkIGJ5IC4vYmFzZS9NS2xpYl9nZW4uc2ggaW1wbGVtZW50ZWQuCi0gKi8KLSNkZWZpbmUgTkNVUlNFU19BVFRSX1QgaW50Ci0jaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLQotCi1leHRlcm4gaW50IGNhbGxfYWRkY2ggKGNvbnN0IGNodHlwZSB6KTsKLWludCBjYWxsX2FkZGNoIChjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiYWRkY2goJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyByZXR1cm5Db2RlKHdhZGRjaChzdGRzY3IseikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9hZGRjaG5zdHIgKGNvbnN0IGNodHlwZSAqIGExLCBpbnQgeik7Ci1pbnQgY2FsbF9hZGRjaG5zdHIgKGNvbnN0IGNodHlwZSAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiYWRkY2huc3RyKCVwLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdhZGRjaG5zdHIoc3Rkc2NyLGExLHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYWRkY2hzdHIgKGNvbnN0IGNodHlwZSAqIHopOwotaW50IGNhbGxfYWRkY2hzdHIgKGNvbnN0IGNodHlwZSAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImFkZGNoc3RyKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod2FkZGNobnN0cihzdGRzY3IseiwtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9hZGRuc3RyIChjb25zdCBjaGFyICogYTEsIGludCB6KTsKLWludCBjYWxsX2FkZG5zdHIgKGNvbnN0IGNoYXIgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImFkZG5zdHIoJXMsJWQpIiksIF9uY192aXNidWYyKDAsYTEpLCB6KSk7IHJldHVybkNvZGUod2FkZG5zdHIoc3Rkc2NyLGExLHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYWRkc3RyIChjb25zdCBjaGFyICogeik7Ci1pbnQgY2FsbF9hZGRzdHIgKGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhZGRzdHIoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZSh3YWRkbnN0cihzdGRzY3IseiwtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9hdHRyb2ZmIChpbnQgeik7Ci1pbnQgY2FsbF9hdHRyb2ZmIChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiYXR0cm9mZiglcykiKSwgX3RyYWNlYXR0cjIoMCx6KSkpOyByZXR1cm5Db2RlKHdhdHRyX29mZihzdGRzY3IsIChhdHRyX3QpKHopLCAoKHZvaWQgKikwKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9hdHRyb24gKGludCB6KTsKLWludCBjYWxsX2F0dHJvbiAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImF0dHJvbiglcykiKSwgX3RyYWNlYXR0cjIoMCx6KSkpOyByZXR1cm5Db2RlKHdhdHRyX29uKHN0ZHNjciwgKGF0dHJfdCkoeiksICgodm9pZCAqKTApKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2F0dHJzZXQgKGludCB6KTsKLWludCBjYWxsX2F0dHJzZXQgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyc2V0KCVzKSIpLCBfdHJhY2VhdHRyMigwLHopKSk7IHJldHVybkF0dHIoKChzdGRzY3IpLT5fYXR0cnMgPSAoeikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYXR0cl9nZXQgKGF0dHJfdCAqIGExLCBzaG9ydCAqIGEyLCB2b2lkICogeik7Ci1pbnQgY2FsbF9hdHRyX2dldCAoYXR0cl90ICogYTEsIHNob3J0ICogYTIsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJhdHRyX2dldCglcCwlcCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKCh2b2lkKSgoYTEpICE9ICh2b2lkICopMCAmJiAoKihhMSkgPSAoc3Rkc2NyKS0+X2F0dHJzKSksICh2b2lkKSgoYTIpICE9ICh2b2lkICopMCAmJiAoKihhMikgPSAoKGludCkoKCgoKHN0ZHNjciktPl9hdHRycykgJiAoKCgoMVVMKSA8PCA4KSAtIDFVTCkgPDwgKCgwKSArIDgpKSkgPj4gOCkpKSkpLCAoMCkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYXR0cl9vZmYgKGF0dHJfdCBhMSwgdm9pZCAqIHopOwotaW50IGNhbGxfYXR0cl9vZmYgKGF0dHJfdCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImF0dHJfb2ZmKCVzLCVwKSIpLCBfdHJhY2VhdHRyMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdhdHRyX29mZihzdGRzY3IsYTEseikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9hdHRyX29uIChhdHRyX3QgYTEsIHZvaWQgKiB6KTsKLWludCBjYWxsX2F0dHJfb24gKGF0dHJfdCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImF0dHJfb24oJXMsJXApIiksIF90cmFjZWF0dHIyKDAsYTEpLCB6KSk7IHJldHVybkNvZGUod2F0dHJfb24oc3Rkc2NyLGExLHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYXR0cl9zZXQgKGF0dHJfdCBhMSwgc2hvcnQgYTIsIHZvaWQgKiB6KTsKLWludCBjYWxsX2F0dHJfc2V0IChhdHRyX3QgYTEsIHNob3J0IGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgiYXR0cl9zZXQoJXMsJWQsJXApIiksIF90cmFjZWF0dHIyKDAsYTEpLCBhMiwgeikpOyByZXR1cm5Db2RlKCgoc3Rkc2NyKS0+X2F0dHJzID0gKCgoYTEpICYgfigoKCgxVUwpIDw8IDgpIC0gMVVMKSA8PCAoKDApICsgOCkpKSB8ICgoYTIpIDw8ICgoMCkgKyA4KSkpLCAoMCkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYmF1ZHJhdGUgKHZvaWQpOwotaW50IGNhbGxfYmF1ZHJhdGUgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImJhdWRyYXRlKCkiKSkpOyByZXR1cm5Db2RlKGJhdWRyYXRlKCkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9iZWVwICh2b2lkKTsKLWludCBjYWxsX2JlZXAgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImJlZXAoKSIpKSk7IHJldHVybkNvZGUoYmVlcCgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYmtnZCAoY2h0eXBlIHopOwotaW50IGNhbGxfYmtnZCAoY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoImJrZ2QoJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyByZXR1cm5Db2RlKHdia2dkKHN0ZHNjcix6KSk7Ci19Ci0KLQotZXh0ZXJuIHZvaWQgY2FsbF9ia2dkc2V0IChjaHR5cGUgeik7Ci12b2lkIGNhbGxfYmtnZHNldCAoY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoImJrZ2RzZXQoJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyB3YmtnZHNldChzdGRzY3Iseik7Ci0JcmV0dXJuVm9pZDsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYm9yZGVyIChjaHR5cGUgYTEsIGNodHlwZSBhMiwgY2h0eXBlIGEzLCBjaHR5cGUgYTQsIGNodHlwZSBhNSwgY2h0eXBlIGE2LCBjaHR5cGUgYTcsIGNodHlwZSB6KTsKLWludCBjYWxsX2JvcmRlciAoY2h0eXBlIGExLCBjaHR5cGUgYTIsIGNodHlwZSBhMywgY2h0eXBlIGE0LCBjaHR5cGUgYTUsIGNodHlwZSBhNiwgY2h0eXBlIGE3LCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiYm9yZGVyKCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzKSIpLCBfdHJhY2VjaHR5cGUyKDAsYTEpLCBfdHJhY2VjaHR5cGUyKDEsYTIpLCBfdHJhY2VjaHR5cGUyKDIsYTMpLCBfdHJhY2VjaHR5cGUyKDMsYTQpLCBfdHJhY2VjaHR5cGUyKDQsYTUpLCBfdHJhY2VjaHR5cGUyKDUsYTYpLCBfdHJhY2VjaHR5cGUyKDYsYTcpLCBfdHJhY2VjaHR5cGUyKDcseikpKTsgcmV0dXJuQ29kZSh3Ym9yZGVyKHN0ZHNjciwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfYm94IChXSU5ET1cgKiBhMSwgY2h0eXBlIGEyLCBjaHR5cGUgeik7Ci1pbnQgY2FsbF9ib3ggKFdJTkRPVyAqIGExLCBjaHR5cGUgYTIsIGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJib3goJXAsJXMsJXMpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEsYTIpLCBfdHJhY2VjaHR5cGUyKDIseikpKTsgcmV0dXJuQ29kZSh3Ym9yZGVyKGExLCBhMiwgYTIsIHosIHosIDAsIDAsIDAsIDApKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfY2FuX2NoYW5nZV9jb2xvciAodm9pZCk7Ci1OQ1VSU0VTX0JPT0wgY2FsbF9jYW5fY2hhbmdlX2NvbG9yICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJjYW5fY2hhbmdlX2NvbG9yKCkiKSkpOyByZXR1cm5Cb29sKGNhbl9jaGFuZ2VfY29sb3IoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2NicmVhayAodm9pZCk7Ci1pbnQgY2FsbF9jYnJlYWsgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImNicmVhaygpIikpKTsgcmV0dXJuQ29kZShjYnJlYWsoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2NoZ2F0IChpbnQgYTEsIGF0dHJfdCBhMiwgc2hvcnQgYTMsIGNvbnN0IHZvaWQgKiB6KTsKLWludCBjYWxsX2NoZ2F0IChpbnQgYTEsIGF0dHJfdCBhMiwgc2hvcnQgYTMsIGNvbnN0IHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJjaGdhdCglZCwlcywlZCwlcCkiKSwgYTEsIF90cmFjZWF0dHIyKDEsYTIpLCBhMywgeikpOyByZXR1cm5Db2RlKHdjaGdhdChzdGRzY3IsYTEsYTIsYTMseikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jbGVhciAodm9pZCk7Ci1pbnQgY2FsbF9jbGVhciAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiY2xlYXIoKSIpKSk7IHJldHVybkNvZGUod2NsZWFyKHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jbGVhcm9rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopOwotaW50IGNhbGxfY2xlYXJvayAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KQotewotCVQoKFRfQ0FMTEVEKCJjbGVhcm9rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUoY2xlYXJvayhhMSwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jbHJ0b2JvdCAodm9pZCk7Ci1pbnQgY2FsbF9jbHJ0b2JvdCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiY2xydG9ib3QoKSIpKSk7IHJldHVybkNvZGUod2NscnRvYm90KHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jbHJ0b2VvbCAodm9pZCk7Ci1pbnQgY2FsbF9jbHJ0b2VvbCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiY2xydG9lb2woKSIpKSk7IHJldHVybkNvZGUod2NscnRvZW9sKHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jb2xvcl9jb250ZW50IChzaG9ydCBhMSwgc2hvcnQgKiBhMiwgc2hvcnQgKiBhMywgc2hvcnQgKiB6KTsKLWludCBjYWxsX2NvbG9yX2NvbnRlbnQgKHNob3J0IGExLCBzaG9ydCAqIGEyLCBzaG9ydCAqIGEzLCBzaG9ydCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImNvbG9yX2NvbnRlbnQoJWQsJXAsJXAsJXApIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuQ29kZShjb2xvcl9jb250ZW50KGExLCBhMiwgYTMsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfY29sb3Jfc2V0IChzaG9ydCBhMSwgdm9pZCAqIHopOwotaW50IGNhbGxfY29sb3Jfc2V0IChzaG9ydCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImNvbG9yX3NldCglZCwlcCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSh3Y29sb3Jfc2V0KHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX0NPTE9SX1BBSVIgKGludCB6KTsKLWludCBjYWxsX0NPTE9SX1BBSVIgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJDT0xPUl9QQUlSKCVkKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA8PCAoKDApICsgOCkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfY29weXdpbiAoY29uc3QgV0lORE9XICogYTEsIFdJTkRPVyAqIGEyLCBpbnQgYTMsIGludCBhNCwgaW50IGE1LCBpbnQgYTYsIGludCBhNywgaW50IGE4LCBpbnQgeik7Ci1pbnQgY2FsbF9jb3B5d2luIChjb25zdCBXSU5ET1cgKiBhMSwgV0lORE9XICogYTIsIGludCBhMywgaW50IGE0LCBpbnQgYTUsIGludCBhNiwgaW50IGE3LCBpbnQgYTgsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJjb3B5d2luKCVwLCVwLCVkLCVkLCVkLCVkLCVkLCVkLCVkKSIpLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIHopKTsgcmV0dXJuQ29kZShjb3B5d2luKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9jdXJzX3NldCAoaW50IHopOwotaW50IGNhbGxfY3Vyc19zZXQgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJjdXJzX3NldCglZCkiKSwgeikpOyByZXR1cm5Db2RlKGN1cnNfc2V0KHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZGVmX3Byb2dfbW9kZSAodm9pZCk7Ci1pbnQgY2FsbF9kZWZfcHJvZ19tb2RlICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJkZWZfcHJvZ19tb2RlKCkiKSkpOyByZXR1cm5Db2RlKGRlZl9wcm9nX21vZGUoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2RlZl9zaGVsbF9tb2RlICh2b2lkKTsKLWludCBjYWxsX2RlZl9zaGVsbF9tb2RlICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJkZWZfc2hlbGxfbW9kZSgpIikpKTsgcmV0dXJuQ29kZShkZWZfc2hlbGxfbW9kZSgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZGVsYXlfb3V0cHV0IChpbnQgeik7Ci1pbnQgY2FsbF9kZWxheV9vdXRwdXQgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJkZWxheV9vdXRwdXQoJWQpIiksIHopKTsgcmV0dXJuQ29kZShkZWxheV9vdXRwdXQoeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9kZWxjaCAodm9pZCk7Ci1pbnQgY2FsbF9kZWxjaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiZGVsY2goKSIpKSk7IHJldHVybkNvZGUod2RlbGNoKHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiB2b2lkIGNhbGxfZGVsc2NyZWVuIChTQ1JFRU4gKiB6KTsKLXZvaWQgY2FsbF9kZWxzY3JlZW4gKFNDUkVFTiAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImRlbHNjcmVlbiglcCkiKSwgeikpOyBkZWxzY3JlZW4oeik7Ci0JcmV0dXJuVm9pZDsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZGVsd2luIChXSU5ET1cgKiB6KTsKLWludCBjYWxsX2RlbHdpbiAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZGVsd2luKCVwKSIpLCB6KSk7IHJldHVybkNvZGUoZGVsd2luKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZGVsZXRlbG4gKHZvaWQpOwotaW50IGNhbGxfZGVsZXRlbG4gKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImRlbGV0ZWxuKCkiKSkpOyByZXR1cm5Db2RlKHdpbnNkZWxsbihzdGRzY3IsLTEpKTsKLX0KLQotCi1leHRlcm4gV0lORE9XICogY2FsbF9kZXJ3aW4gKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LCBpbnQgeik7Ci1XSU5ET1cgKiBjYWxsX2RlcndpbiAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCIoJXAsJWQsJWQsJWQsJWQpIiksIGExLCBhMiwgYTMsIGE0LCB6KSk7IHJldHVybldpbihkZXJ3aW4oYTEsIGEyLCBhMywgYTQsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZG91cGRhdGUgKHZvaWQpOwotaW50IGNhbGxfZG91cGRhdGUgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImRvdXBkYXRlKCkiKSkpOyByZXR1cm5Db2RlKGRvdXBkYXRlKCkpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX2R1cHdpbiAoV0lORE9XICogeik7Ci1XSU5ET1cgKiBjYWxsX2R1cHdpbiAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiKCVwKSIpLCB6KSk7IHJldHVybldpbihkdXB3aW4oeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9lY2hvICh2b2lkKTsKLWludCBjYWxsX2VjaG8gKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImVjaG8oKSIpKSk7IHJldHVybkNvZGUoZWNobygpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZWNob2NoYXIgKGNvbnN0IGNodHlwZSB6KTsKLWludCBjYWxsX2VjaG9jaGFyIChjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgiZWNob2NoYXIoJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyByZXR1cm5Db2RlKHdlY2hvY2hhcihzdGRzY3IseikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9lcmFzZSAodm9pZCk7Ci1pbnQgY2FsbF9lcmFzZSAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiZXJhc2UoKSIpKSk7IHJldHVybkNvZGUod2VyYXNlKHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9lbmR3aW4gKHZvaWQpOwotaW50IGNhbGxfZW5kd2luICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJlbmR3aW4oKSIpKSk7IHJldHVybkNvZGUoZW5kd2luKCkpOwotfQotCi0KLWV4dGVybiBjaGFyIGNhbGxfZXJhc2VjaGFyICh2b2lkKTsKLWNoYXIgY2FsbF9lcmFzZWNoYXIgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImVyYXNlY2hhcigpIikpKTsgcmV0dXJuQ29kZShlcmFzZWNoYXIoKSk7Ci19Ci0KLQotZXh0ZXJuIHZvaWQgY2FsbF9maWx0ZXIgKHZvaWQpOwotdm9pZCBjYWxsX2ZpbHRlciAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiZmlsdGVyKCkiKSkpOyBmaWx0ZXIoKTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9mbGFzaCAodm9pZCk7Ci1pbnQgY2FsbF9mbGFzaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiZmxhc2goKSIpKSk7IHJldHVybkNvZGUoZmxhc2goKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2ZsdXNoaW5wICh2b2lkKTsKLWludCBjYWxsX2ZsdXNoaW5wICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJmbHVzaGlucCgpIikpKTsgcmV0dXJuQ29kZShmbHVzaGlucCgpKTsKLX0KLQotCi1leHRlcm4gY2h0eXBlIGNhbGxfZ2V0YmtnZCAoV0lORE9XICogeik7Ci1jaHR5cGUgY2FsbF9nZXRia2dkIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRia2dkKCVwKSIpLCB6KSk7IHJldHVybkNoYXIoKCh6KS0+X2JrZ2QpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0Y2ggKHZvaWQpOwotaW50IGNhbGxfZ2V0Y2ggKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImdldGNoKCkiKSkpOyByZXR1cm5Db2RlKHdnZXRjaChzdGRzY3IpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0bnN0ciAoY2hhciAqIGExLCBpbnQgeik7Ci1pbnQgY2FsbF9nZXRuc3RyIChjaGFyICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRuc3RyKCVzLCVkKSIpLCBfbmNfdmlzYnVmMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdnZXRuc3RyKHN0ZHNjciwgYTEsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0c3RyIChjaGFyICogeik7Ci1pbnQgY2FsbF9nZXRzdHIgKGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRzdHIoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZSh3Z2V0bnN0cihzdGRzY3IsIHosIC0xKSk7Ci19Ci0KLQotZXh0ZXJuIFdJTkRPVyAqIGNhbGxfZ2V0d2luIChGSUxFICogeik7Ci1XSU5ET1cgKiBjYWxsX2dldHdpbiAoRklMRSAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIiglcCkiKSwgeikpOyByZXR1cm5XaW4oZ2V0d2luKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaGFsZmRlbGF5IChpbnQgeik7Ci1pbnQgY2FsbF9oYWxmZGVsYXkgKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJoYWxmZGVsYXkoJWQpIiksIHopKTsgcmV0dXJuQ29kZShoYWxmZGVsYXkoeikpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9oYXNfY29sb3JzICh2b2lkKTsKLU5DVVJTRVNfQk9PTCBjYWxsX2hhc19jb2xvcnMgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoImhhc19jb2xvcnMoKSIpKSk7IHJldHVybkJvb2woaGFzX2NvbG9ycygpKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfaGFzX2ljICh2b2lkKTsKLU5DVVJTRVNfQk9PTCBjYWxsX2hhc19pYyAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiaGFzX2ljKCkiKSkpOyByZXR1cm5Cb29sKGhhc19pYygpKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfaGFzX2lsICh2b2lkKTsKLU5DVVJTRVNfQk9PTCBjYWxsX2hhc19pbCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiaGFzX2lsKCkiKSkpOyByZXR1cm5Cb29sKGhhc19pbCgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaGxpbmUgKGNodHlwZSBhMSwgaW50IHopOwotaW50IGNhbGxfaGxpbmUgKGNodHlwZSBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImhsaW5lKCVzLCVkKSIpLCBfdHJhY2VjaHR5cGUyKDAsYTEpLCB6KSk7IHJldHVybkNvZGUod2hsaW5lKHN0ZHNjciwgYTEsIHopKTsKLX0KLQotCi1leHRlcm4gdm9pZCBjYWxsX2lkY29rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopOwotdm9pZCBjYWxsX2lkY29rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoImlkY29rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IGlkY29rKGExLCB6KTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9pZGxvayAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KTsKLWludCBjYWxsX2lkbG9rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoImlkbG9rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUoaWRsb2soYTEsIHopKTsKLX0KLQotCi1leHRlcm4gdm9pZCBjYWxsX2ltbWVkb2sgKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeik7Ci12b2lkIGNhbGxfaW1tZWRvayAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KQotewotCVQoKFRfQ0FMTEVEKCJpbW1lZG9rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IGltbWVkb2soYTEsIHopOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIGNodHlwZSBjYWxsX2luY2ggKHZvaWQpOwotY2h0eXBlIGNhbGxfaW5jaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiaW5jaCgpIikpKTsgcmV0dXJuQ2hhcih3aW5jaChzdGRzY3IpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaW5jaG5zdHIgKGNodHlwZSAqIGExLCBpbnQgeik7Ci1pbnQgY2FsbF9pbmNobnN0ciAoY2h0eXBlICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJpbmNobnN0ciglcCwlZCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSh3aW5jaG5zdHIoc3Rkc2NyLGExLHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaW5jaHN0ciAoY2h0eXBlICogeik7Ci1pbnQgY2FsbF9pbmNoc3RyIChjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpbmNoc3RyKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod2luY2huc3RyKHN0ZHNjciwgeiwgLTEpKTsKLX0KLQotCi1leHRlcm4gV0lORE9XICogY2FsbF9pbml0c2NyICh2b2lkKTsKLVdJTkRPVyAqIGNhbGxfaW5pdHNjciAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgiKCkiKSkpOyByZXR1cm5XaW4oaW5pdHNjcigpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaW5pdF9jb2xvciAoc2hvcnQgYTEsIHNob3J0IGEyLCBzaG9ydCBhMywgc2hvcnQgeik7Ci1pbnQgY2FsbF9pbml0X2NvbG9yIChzaG9ydCBhMSwgc2hvcnQgYTIsIHNob3J0IGEzLCBzaG9ydCB6KQotewotCVQoKFRfQ0FMTEVEKCJpbml0X2NvbG9yKCVkLCVkLCVkLCVkKSIpLCBhMSwgYTIsIGEzLCB6KSk7IHJldHVybkNvZGUoaW5pdF9jb2xvcihhMSwgYTIsIGEzLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2luaXRfcGFpciAoc2hvcnQgYTEsIHNob3J0IGEyLCBzaG9ydCB6KTsKLWludCBjYWxsX2luaXRfcGFpciAoc2hvcnQgYTEsIHNob3J0IGEyLCBzaG9ydCB6KQotewotCVQoKFRfQ0FMTEVEKCJpbml0X3BhaXIoJWQsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKGluaXRfcGFpcihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaW5uc3RyIChjaGFyICogYTEsIGludCB6KTsKLWludCBjYWxsX2lubnN0ciAoY2hhciAqIGExLCBpbnQgeikKLXsKLQlyZXR1cm4gd2lubnN0cihzdGRzY3IsYTEseikgOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9pbnNjaCAoY2h0eXBlIHopOwotaW50IGNhbGxfaW5zY2ggKGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJpbnNjaCglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUod2luc2NoKHN0ZHNjcix6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2luc2RlbGxuIChpbnQgeik7Ci1pbnQgY2FsbF9pbnNkZWxsbiAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoImluc2RlbGxuKCVkKSIpLCB6KSk7IHJldHVybkNvZGUod2luc2RlbGxuKHN0ZHNjcix6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2luc2VydGxuICh2b2lkKTsKLWludCBjYWxsX2luc2VydGxuICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJpbnNlcnRsbigpIikpKTsgcmV0dXJuQ29kZSh3aW5zZGVsbG4oc3Rkc2NyLDEpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfaW5zbnN0ciAoY29uc3QgY2hhciAqIGExLCBpbnQgeik7Ci1pbnQgY2FsbF9pbnNuc3RyIChjb25zdCBjaGFyICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJpbnNuc3RyKCVzLCVkKSIpLCBfbmNfdmlzYnVmMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHdpbnNuc3RyKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2luc3N0ciAoY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfaW5zc3RyIChjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgiaW5zc3RyKCVzKSIpLCBfbmNfdmlzYnVmMigwLHopKSk7IHJldHVybkNvZGUod2luc25zdHIoc3Rkc2NyLCB6LCAtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9pbnN0ciAoY2hhciAqIHopOwotaW50IGNhbGxfaW5zdHIgKGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpbnN0ciglcykiKSwgX25jX3Zpc2J1ZjIoMCx6KSkpOyByZXR1cm5Db2RlKHdpbm5zdHIoc3Rkc2NyLCB6LCAtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9pbnRyZmx1c2ggKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeik7Ci1pbnQgY2FsbF9pbnRyZmx1c2ggKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeikKLXsKLQlUKChUX0NBTExFRCgiaW50cmZsdXNoKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUoaW50cmZsdXNoKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIE5DVVJTRVNfQk9PTCBjYWxsX2lzZW5kd2luICh2b2lkKTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzZW5kd2luICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJpc2VuZHdpbigpIikpKTsgcmV0dXJuQm9vbChpc2VuZHdpbigpKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfaXNfbGluZXRvdWNoZWQgKFdJTkRPVyAqIGExLCBpbnQgeik7Ci1OQ1VSU0VTX0JPT0wgY2FsbF9pc19saW5ldG91Y2hlZCAoV0lORE9XICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19saW5ldG91Y2hlZCglcCwlZCkiKSwgYTEsIHopKTsgcmV0dXJuQm9vbChpc19saW5ldG91Y2hlZChhMSwgeikpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc193aW50b3VjaGVkIChXSU5ET1cgKiB6KTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzX3dpbnRvdWNoZWQgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX3dpbnRvdWNoZWQoJXApIiksIHopKTsgcmV0dXJuQm9vbChpc193aW50b3VjaGVkKHopKTsKLX0KLQotCi1leHRlcm4gY2hhciAqIGNhbGxfa2V5bmFtZSAoaW50IHopOwotY2hhciAqIGNhbGxfa2V5bmFtZSAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIiglZCkiKSwgeikpOyByZXR1cm5QdHIoa2V5bmFtZSh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2tleXBhZCAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KTsKLWludCBjYWxsX2tleXBhZCAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KQotewotCVQoKFRfQ0FMTEVEKCJrZXlwYWQoJXAsJSNseCkiKSwgYTEsIChsb25nKXopKTsgcmV0dXJuQ29kZShrZXlwYWQoYTEsIHopKTsKLX0KLQotCi1leHRlcm4gY2hhciBjYWxsX2tpbGxjaGFyICh2b2lkKTsKLWNoYXIgY2FsbF9raWxsY2hhciAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgia2lsbGNoYXIoKSIpKSk7IHJldHVybkNvZGUoa2lsbGNoYXIoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2xlYXZlb2sgKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeik7Ci1pbnQgY2FsbF9sZWF2ZW9rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoImxlYXZlb2soJXAsJSNseCkiKSwgYTEsIChsb25nKXopKTsgcmV0dXJuQ29kZShsZWF2ZW9rKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGNoYXIgKiBjYWxsX2xvbmduYW1lICh2b2lkKTsKLWNoYXIgKiBjYWxsX2xvbmduYW1lICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCIoKSIpKSk7IHJldHVyblB0cihsb25nbmFtZSgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbWV0YSAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KTsKLWludCBjYWxsX21ldGEgKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeikKLXsKLQlUKChUX0NBTExFRCgibWV0YSglcCwlI2x4KSIpLCBhMSwgKGxvbmcpeikpOyByZXR1cm5Db2RlKG1ldGEoYTEsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbW92ZSAoaW50IGExLCBpbnQgeik7Ci1pbnQgY2FsbF9tb3ZlIChpbnQgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtb3ZlKCVkLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdtb3ZlKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212YWRkY2ggKGludCBhMSwgaW50IGEyLCBjb25zdCBjaHR5cGUgeik7Ci1pbnQgY2FsbF9tdmFkZGNoIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12YWRkY2goJWQsJWQsJXMpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2goc3Rkc2NyLHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212YWRkY2huc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlICogYTMsIGludCB6KTsKLWludCBjYWxsX212YWRkY2huc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2h0eXBlICogYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmFkZGNobnN0ciglZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2FkZGNobnN0cihzdGRzY3IsYTMseikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZhZGRjaHN0ciAoaW50IGExLCBpbnQgYTIsIGNvbnN0IGNodHlwZSAqIHopOwotaW50IGNhbGxfbXZhZGRjaHN0ciAoaW50IGExLCBpbnQgYTIsIGNvbnN0IGNodHlwZSAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12YWRkY2hzdHIoJWQsJWQsJXApIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2FkZGNobnN0cihzdGRzY3IseiwtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZhZGRuc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2hhciAqIGEzLCBpbnQgeik7Ci1pbnQgY2FsbF9tdmFkZG5zdHIgKGludCBhMSwgaW50IGEyLCBjb25zdCBjaGFyICogYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmFkZG5zdHIoJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgX25jX3Zpc2J1ZjIoMixhMyksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHdhZGRuc3RyKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmFkZHN0ciAoaW50IGExLCBpbnQgYTIsIGNvbnN0IGNoYXIgKiB6KTsKLWludCBjYWxsX212YWRkc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12YWRkc3RyKCVkLCVkLCVzKSIpLCBhMSwgYTIsIF9uY192aXNidWYyKDIseikpKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHdhZGRuc3RyKHN0ZHNjcix6LC0xKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmNoZ2F0IChpbnQgYTEsIGludCBhMiwgaW50IGEzLCBhdHRyX3QgYTQsIHNob3J0IGE1LCBjb25zdCB2b2lkICogeik7Ci1pbnQgY2FsbF9tdmNoZ2F0IChpbnQgYTEsIGludCBhMiwgaW50IGEzLCBhdHRyX3QgYTQsIHNob3J0IGE1LCBjb25zdCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgibXZjaGdhdCglZCwlZCwlZCwlcywlZCwlcCkiKSwgYTEsIGEyLCBhMywgX3RyYWNlYXR0cjIoMyxhNCksIGE1LCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3Y2hnYXQoc3Rkc2NyLGEzLGE0LGE1LHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212Y3VyIChpbnQgYTEsIGludCBhMiwgaW50IGEzLCBpbnQgeik7Ci1pbnQgY2FsbF9tdmN1ciAoaW50IGExLCBpbnQgYTIsIGludCBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12Y3VyKCVkLCVkLCVkLCVkKSIpLCBhMSwgYTIsIGEzLCB6KSk7IHJldHVybkNvZGUobXZjdXIoYTEsIGEyLCBhMywgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmRlbGNoIChpbnQgYTEsIGludCB6KTsKLWludCBjYWxsX212ZGVsY2ggKGludCBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12ZGVsY2goJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSx6KSA9PSAoLTEpID8gKC0xKSA6IHdkZWxjaChzdGRzY3IpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212ZGVyd2luIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeik7Ci1pbnQgY2FsbF9tdmRlcndpbiAoV0lORE9XICogYTEsIGludCBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12ZGVyd2luKCVwLCVkLCVkKSIpLCBhMSwgYTIsIHopKTsgcmV0dXJuQ29kZShtdmRlcndpbihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZnZXRjaCAoaW50IGExLCBpbnQgeik7Ci1pbnQgY2FsbF9tdmdldGNoIChpbnQgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmdldGNoKCVkLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEseikgPT0gKC0xKSA/ICgtMSkgOiB3Z2V0Y2goc3Rkc2NyKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmdldG5zdHIgKGludCBhMSwgaW50IGEyLCBjaGFyICogYTMsIGludCB6KTsKLWludCBjYWxsX212Z2V0bnN0ciAoaW50IGExLCBpbnQgYTIsIGNoYXIgKiBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12Z2V0bnN0ciglZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2dldG5zdHIoc3Rkc2NyLGEzLHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212Z2V0c3RyIChpbnQgYTEsIGludCBhMiwgY2hhciAqIHopOwotaW50IGNhbGxfbXZnZXRzdHIgKGludCBhMSwgaW50IGEyLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZnZXRzdHIoJWQsJWQsJXMpIiksIGExLCBhMiwgX25jX3Zpc2J1ZjIoMix6KSkpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2dldG5zdHIoc3Rkc2NyLCB6LCAtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZobGluZSAoaW50IGExLCBpbnQgYTIsIGNodHlwZSBhMywgaW50IHopOwotaW50IGNhbGxfbXZobGluZSAoaW50IGExLCBpbnQgYTIsIGNodHlwZSBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12aGxpbmUoJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgX3RyYWNlY2h0eXBlMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2hsaW5lKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLWV4dGVybiBjaHR5cGUgY2FsbF9tdmluY2ggKGludCBhMSwgaW50IHopOwotY2h0eXBlIGNhbGxfbXZpbmNoIChpbnQgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmluY2goJWQsJWQpIiksIGExLCB6KSk7IHJldHVybkNoYXIoKHdtb3ZlKHN0ZHNjcixhMSx6KSA9PSAoLTEpID8gKGNodHlwZSkoKC0xKSkgOiB3aW5jaChzdGRzY3IpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212aW5jaG5zdHIgKGludCBhMSwgaW50IGEyLCBjaHR5cGUgKiBhMywgaW50IHopOwotaW50IGNhbGxfbXZpbmNobnN0ciAoaW50IGExLCBpbnQgYTIsIGNodHlwZSAqIGEzLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZpbmNobnN0ciglZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2luY2huc3RyKHN0ZHNjcixhMyx6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmluY2hzdHIgKGludCBhMSwgaW50IGEyLCBjaHR5cGUgKiB6KTsKLWludCBjYWxsX212aW5jaHN0ciAoaW50IGExLCBpbnQgYTIsIGNodHlwZSAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12aW5jaHN0ciglZCwlZCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5jaG5zdHIoc3Rkc2NyLCB6LCAtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZpbm5zdHIgKGludCBhMSwgaW50IGEyLCBjaGFyICogYTMsIGludCB6KTsKLWludCBjYWxsX212aW5uc3RyIChpbnQgYTEsIGludCBhMiwgY2hhciAqIGEzLCBpbnQgeikKLXsKLQlyZXR1cm4gKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5uc3RyKHN0ZHNjcixhMyx6KSkgOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmluc2NoIChpbnQgYTEsIGludCBhMiwgY2h0eXBlIHopOwotaW50IGNhbGxfbXZpbnNjaCAoaW50IGExLCBpbnQgYTIsIGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJtdmluc2NoKCVkLCVkLCVzKSIpLCBhMSwgYTIsIF90cmFjZWNodHlwZTIoMix6KSkpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2luc2NoKHN0ZHNjcix6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdmluc25zdHIgKGludCBhMSwgaW50IGEyLCBjb25zdCBjaGFyICogYTMsIGludCB6KTsKLWludCBjYWxsX212aW5zbnN0ciAoaW50IGExLCBpbnQgYTIsIGNvbnN0IGNoYXIgKiBhMywgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm12aW5zbnN0ciglZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLGEzKSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2luc25zdHIoc3Rkc2NyLGEzLHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212aW5zc3RyIChpbnQgYTEsIGludCBhMiwgY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfbXZpbnNzdHIgKGludCBhMSwgaW50IGEyLCBjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZpbnNzdHIoJWQsJWQsJXMpIiksIGExLCBhMiwgX25jX3Zpc2J1ZjIoMix6KSkpOyByZXR1cm5Db2RlKCh3bW92ZShzdGRzY3IsYTEsYTIpID09ICgtMSkgPyAoLTEpIDogd2luc25zdHIoc3Rkc2NyLCB6LCAtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZpbnN0ciAoaW50IGExLCBpbnQgYTIsIGNoYXIgKiB6KTsKLWludCBjYWxsX212aW5zdHIgKGludCBhMSwgaW50IGEyLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZpbnN0ciglZCwlZCwlcykiKSwgYTEsIGEyLCBfbmNfdmlzYnVmMigyLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKHN0ZHNjcixhMSxhMikgPT0gKC0xKSA/ICgtMSkgOiB3aW5uc3RyKHN0ZHNjciwgeiwgLTEpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212dmxpbmUgKGludCBhMSwgaW50IGEyLCBjaHR5cGUgYTMsIGludCB6KTsKLWludCBjYWxsX212dmxpbmUgKGludCBhMSwgaW50IGEyLCBjaHR5cGUgYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdnZsaW5lKCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIF90cmFjZWNodHlwZTIoMixhMyksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoc3Rkc2NyLGExLGEyKSA9PSAoLTEpID8gKC0xKSA6IHd2bGluZShzdGRzY3IsYTMseikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3YWRkY2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY29uc3QgY2h0eXBlIHopOwotaW50IGNhbGxfbXZ3YWRkY2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY29uc3QgY2h0eXBlIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d2FkZGNoKCVwLCVkLCVkLCVzKSIpLCBhMSwgYTIsIGEzLCBfdHJhY2VjaHR5cGUyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2FkZGNoKGExLHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212d2FkZGNobnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaHR5cGUgKiBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3YWRkY2huc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNodHlwZSAqIGE0LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3YWRkY2huc3RyKCVwLCVkLCVkLCVwLCVkKSIpLCBhMSwgYTIsIGEzLCBhNCwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3YWRkY2huc3RyKGExLGE0LHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212d2FkZGNoc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNodHlwZSAqIHopOwotaW50IGNhbGxfbXZ3YWRkY2hzdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY29uc3QgY2h0eXBlICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3YWRkY2hzdHIoJXAsJWQsJWQsJXApIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2FkZGNobnN0cihhMSx6LC0xKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndhZGRuc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3YWRkbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaGFyICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndhZGRuc3RyKCVwLCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLGE0KSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3YWRkbnN0cihhMSxhNCx6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndhZGRzdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfbXZ3YWRkc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndhZGRzdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2FkZG5zdHIoYTEseiwtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3Y2hnYXQgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LCBhdHRyX3QgYTUsIHNob3J0IGE2LCBjb25zdCB2b2lkICogeik7Ci1pbnQgY2FsbF9tdndjaGdhdCAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsIGF0dHJfdCBhNSwgc2hvcnQgYTYsIGNvbnN0IHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndjaGdhdCglcCwlZCwlZCwlZCwlcywlZCwlcCkiKSwgYTEsIGEyLCBhMywgYTQsIF90cmFjZWF0dHIyKDQsYTUpLCBhNiwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3Y2hnYXQoYTEsYTQsYTUsYTYseikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3ZGVsY2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KTsKLWludCBjYWxsX212d2RlbGNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3ZGVsY2goJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMix6KSA9PSAoLTEpID8gKC0xKSA6IHdkZWxjaChhMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3Z2V0Y2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KTsKLWludCBjYWxsX212d2dldGNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Z2V0Y2goJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMix6KSA9PSAoLTEpID8gKC0xKSA6IHdnZXRjaChhMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3Z2V0bnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogYTQsIGludCB6KTsKLWludCBjYWxsX212d2dldG5zdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2hhciAqIGE0LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Z2V0bnN0ciglcCwlZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBhMywgX25jX3Zpc2J1ZjIoMyxhNCksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2dldG5zdHIoYTEsYTQseikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3Z2V0c3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNoYXIgKiB6KTsKLWludCBjYWxsX212d2dldHN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3Z2V0c3RyKCVwLCVkLCVkLCVzKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHdnZXRuc3RyKGExLCB6LCAtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3aGxpbmUgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlIGE0LCBpbnQgeik7Ci1pbnQgY2FsbF9tdndobGluZSAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaHR5cGUgYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndobGluZSglcCwlZCwlZCwlcywlZCkiKSwgYTEsIGEyLCBhMywgX3RyYWNlY2h0eXBlMigzLGE0KSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3aGxpbmUoYTEsYTQseikpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3aW4gKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KTsKLWludCBjYWxsX212d2luIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3aW4oJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKG12d2luKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBjaHR5cGUgY2FsbF9tdndpbmNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeik7Ci1jaHR5cGUgY2FsbF9tdndpbmNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3aW5jaCglcCwlZCwlZCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNoYXIoKHdtb3ZlKGExLGEyLHopID09ICgtMSkgPyAoY2h0eXBlKSgoLTEpKSA6IHdpbmNoKGExKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndpbmNobnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaHR5cGUgKiBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3aW5jaG5zdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbmNobnN0ciglcCwlZCwlZCwlcCwlZCkiKSwgYTEsIGEyLCBhMywgYTQsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luY2huc3RyKGExLGE0LHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212d2luY2hzdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlICogeik7Ci1pbnQgY2FsbF9tdndpbmNoc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNodHlwZSAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIm12d2luY2hzdHIoJXAsJWQsJWQsJXApIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luY2huc3RyKGExLCB6LCAtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbXZ3aW5uc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNoYXIgKiBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3aW5uc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNoYXIgKiBhNCwgaW50IHopCi17Ci0JcmV0dXJuICh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3aW5uc3RyKGExLGE0LHopKSA7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212d2luc2NoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNodHlwZSB6KTsKLWludCBjYWxsX212d2luc2NoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbnNjaCglcCwlZCwlZCwlcykiKSwgYTEsIGEyLCBhMywgX3RyYWNlY2h0eXBlMigzLHopKSk7IHJldHVybkNvZGUoKHdtb3ZlKGExLGEyLGEzKSA9PSAoLTEpID8gKC0xKSA6IHdpbnNjaChhMSx6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndpbnNuc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3aW5zbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjb25zdCBjaGFyICogYTQsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbnNuc3RyKCVwLCVkLCVkLCVzLCVkKSIpLCBhMSwgYTIsIGEzLCBfbmNfdmlzYnVmMigzLGE0KSwgeikpOyByZXR1cm5Db2RlKCh3bW92ZShhMSxhMixhMykgPT0gKC0xKSA/ICgtMSkgOiB3aW5zbnN0cihhMSxhNCx6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndpbnNzdHIgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfbXZ3aW5zc3RyIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJtdndpbnNzdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2luc25zdHIoYTEsIHosIC0xKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9tdndpbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogeik7Ci1pbnQgY2FsbF9tdndpbnN0ciAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgibXZ3aW5zdHIoJXAsJWQsJWQsJXMpIiksIGExLCBhMiwgYTMsIF9uY192aXNidWYyKDMseikpKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd2lubnN0cihhMSwgeiwgLTEpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX212d3ZsaW5lIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGNodHlwZSBhNCwgaW50IHopOwotaW50IGNhbGxfbXZ3dmxpbmUgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgY2h0eXBlIGE0LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgibXZ3dmxpbmUoJXAsJWQsJWQsJXMsJWQpIiksIGExLCBhMiwgYTMsIF90cmFjZWNodHlwZTIoMyxhNCksIHopKTsgcmV0dXJuQ29kZSgod21vdmUoYTEsYTIsYTMpID09ICgtMSkgPyAoLTEpIDogd3ZsaW5lKGExLGE0LHopKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX25hcG1zIChpbnQgeik7Ci1pbnQgY2FsbF9uYXBtcyAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIm5hcG1zKCVkKSIpLCB6KSk7IHJldHVybkNvZGUobmFwbXMoeikpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX25ld3BhZCAoaW50IGExLCBpbnQgeik7Ci1XSU5ET1cgKiBjYWxsX25ld3BhZCAoaW50IGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiKCVkLCVkKSIpLCBhMSwgeikpOyByZXR1cm5XaW4obmV3cGFkKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIFNDUkVFTiAqIGNhbGxfbmV3dGVybSAoY2hhciAqIGExLCBGSUxFICogYTIsIEZJTEUgKiB6KTsKLVNDUkVFTiAqIGNhbGxfbmV3dGVybSAoY2hhciAqIGExLCBGSUxFICogYTIsIEZJTEUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCIoJXMsJXAsJXApIiksIF9uY192aXNidWYyKDAsYTEpLCBhMiwgeikpOyByZXR1cm5TUChuZXd0ZXJtKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX25ld3dpbiAoaW50IGExLCBpbnQgYTIsIGludCBhMywgaW50IHopOwotV0lORE9XICogY2FsbF9uZXd3aW4gKGludCBhMSwgaW50IGEyLCBpbnQgYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCIoJWQsJWQsJWQsJWQpIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuV2luKG5ld3dpbihhMSwgYTIsIGEzLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX25sICh2b2lkKTsKLWludCBjYWxsX25sICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJubCgpIikpKTsgcmV0dXJuQ29kZShubCgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbm9jYnJlYWsgKHZvaWQpOwotaW50IGNhbGxfbm9jYnJlYWsgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoIm5vY2JyZWFrKCkiKSkpOyByZXR1cm5Db2RlKG5vY2JyZWFrKCkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9ub2RlbGF5IChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopOwotaW50IGNhbGxfbm9kZWxheSAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KQotewotCVQoKFRfQ0FMTEVEKCJub2RlbGF5KCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUobm9kZWxheShhMSwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9ub2VjaG8gKHZvaWQpOwotaW50IGNhbGxfbm9lY2hvICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJub2VjaG8oKSIpKSk7IHJldHVybkNvZGUobm9lY2hvKCkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9ub25sICh2b2lkKTsKLWludCBjYWxsX25vbmwgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoIm5vbmwoKSIpKSk7IHJldHVybkNvZGUobm9ubCgpKTsKLX0KLQotCi1leHRlcm4gdm9pZCBjYWxsX25vcWlmbHVzaCAodm9pZCk7Ci12b2lkIGNhbGxfbm9xaWZsdXNoICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJub3FpZmx1c2goKSIpKSk7IG5vcWlmbHVzaCgpOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX25vcmF3ICh2b2lkKTsKLWludCBjYWxsX25vcmF3ICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJub3JhdygpIikpKTsgcmV0dXJuQ29kZShub3JhdygpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfbm90aW1lb3V0IChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopOwotaW50IGNhbGxfbm90aW1lb3V0IChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoIm5vdGltZW91dCglcCwlI2x4KSIpLCBhMSwgKGxvbmcpeikpOyByZXR1cm5Db2RlKG5vdGltZW91dChhMSwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9vdmVybGF5IChjb25zdCBXSU5ET1cgKiBhMSwgV0lORE9XICogeik7Ci1pbnQgY2FsbF9vdmVybGF5IChjb25zdCBXSU5ET1cgKiBhMSwgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgib3ZlcmxheSglcCwlcCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZShvdmVybGF5KGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX292ZXJ3cml0ZSAoY29uc3QgV0lORE9XICogYTEsIFdJTkRPVyAqIHopOwotaW50IGNhbGxfb3ZlcndyaXRlIChjb25zdCBXSU5ET1cgKiBhMSwgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgib3ZlcndyaXRlKCVwLCVwKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKG92ZXJ3cml0ZShhMSwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9wYWlyX2NvbnRlbnQgKHNob3J0IGExLCBzaG9ydCAqIGEyLCBzaG9ydCAqIHopOwotaW50IGNhbGxfcGFpcl9jb250ZW50IChzaG9ydCBhMSwgc2hvcnQgKiBhMiwgc2hvcnQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJwYWlyX2NvbnRlbnQoJWQsJXAsJXApIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKHBhaXJfY29udGVudChhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfUEFJUl9OVU1CRVIgKGludCB6KTsKLWludCBjYWxsX1BBSVJfTlVNQkVSIChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgiUEFJUl9OVU1CRVIoJWQpIiksIHopKTsgcmV0dXJuQ29kZSgoKGludCkoKCgoeikgJiAoKCgoMVVMKSA8PCA4KSAtIDFVTCkgPDwgKCgwKSArIDgpKSkgPj4gOCkpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3BlY2hvY2hhciAoV0lORE9XICogYTEsIGNvbnN0IGNodHlwZSB6KTsKLWludCBjYWxsX3BlY2hvY2hhciAoV0lORE9XICogYTEsIGNvbnN0IGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJwZWNob2NoYXIoJXAsJXMpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEseikpKTsgcmV0dXJuQ29kZShwZWNob2NoYXIoYTEsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcG5vdXRyZWZyZXNoIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IGE1LCBpbnQgYTYsIGludCB6KTsKLWludCBjYWxsX3Bub3V0cmVmcmVzaCAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsIGludCBhNSwgaW50IGE2LCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgicG5vdXRyZWZyZXNoKCVwLCVkLCVkLCVkLCVkLCVkLCVkKSIpLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCB6KSk7IHJldHVybkNvZGUocG5vdXRyZWZyZXNoKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcHJlZnJlc2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LCBpbnQgYTUsIGludCBhNiwgaW50IHopOwotaW50IGNhbGxfcHJlZnJlc2ggKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LCBpbnQgYTUsIGludCBhNiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoInByZWZyZXNoKCVwLCVkLCVkLCVkLCVkLCVkLCVkKSIpLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCB6KSk7IHJldHVybkNvZGUocHJlZnJlc2goYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9wdXR3aW4gKFdJTkRPVyAqIGExLCBGSUxFICogeik7Ci1pbnQgY2FsbF9wdXR3aW4gKFdJTkRPVyAqIGExLCBGSUxFICogeikKLXsKLQlUKChUX0NBTExFRCgicHV0d2luKCVwLCVwKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHB1dHdpbihhMSwgeikpOwotfQotCi0KLWV4dGVybiB2b2lkIGNhbGxfcWlmbHVzaCAodm9pZCk7Ci12b2lkIGNhbGxfcWlmbHVzaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgicWlmbHVzaCgpIikpKTsgcWlmbHVzaCgpOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3JhdyAodm9pZCk7Ci1pbnQgY2FsbF9yYXcgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInJhdygpIikpKTsgcmV0dXJuQ29kZShyYXcoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3JlZHJhd3dpbiAoV0lORE9XICogeik7Ci1pbnQgY2FsbF9yZWRyYXd3aW4gKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInJlZHJhd3dpbiglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdyZWRyYXdsbih6LCAwLCAoeiktPl9tYXh5KzEpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcmVmcmVzaCAodm9pZCk7Ci1pbnQgY2FsbF9yZWZyZXNoICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJyZWZyZXNoKCkiKSkpOyByZXR1cm5Db2RlKHdyZWZyZXNoKHN0ZHNjcikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9yZXNldHR5ICh2b2lkKTsKLWludCBjYWxsX3Jlc2V0dHkgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInJlc2V0dHkoKSIpKSk7IHJldHVybkNvZGUocmVzZXR0eSgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcmVzZXRfcHJvZ19tb2RlICh2b2lkKTsKLWludCBjYWxsX3Jlc2V0X3Byb2dfbW9kZSAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgicmVzZXRfcHJvZ19tb2RlKCkiKSkpOyByZXR1cm5Db2RlKHJlc2V0X3Byb2dfbW9kZSgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcmVzZXRfc2hlbGxfbW9kZSAodm9pZCk7Ci1pbnQgY2FsbF9yZXNldF9zaGVsbF9tb2RlICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJyZXNldF9zaGVsbF9tb2RlKCkiKSkpOyByZXR1cm5Db2RlKHJlc2V0X3NoZWxsX21vZGUoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3JpcG9mZmxpbmUgKGludCBhMSwgaW50KCogeikoV0lORE9XICogYTIsIGludCkpOwotaW50IGNhbGxfcmlwb2ZmbGluZSAoaW50IGExLCBpbnQoKiB6KShXSU5ET1cgKiBhMiwgaW50KSkKLXsKLQlyZXR1cm4gcmlwb2ZmbGluZShhMSwgeikgOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zYXZldHR5ICh2b2lkKTsKLWludCBjYWxsX3NhdmV0dHkgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInNhdmV0dHkoKSIpKSk7IHJldHVybkNvZGUoc2F2ZXR0eSgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc2NyX2R1bXAgKGNvbnN0IGNoYXIgKiB6KTsKLWludCBjYWxsX3Njcl9kdW1wIChjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgic2NyX2R1bXAoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZShzY3JfZHVtcCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Njcl9pbml0IChjb25zdCBjaGFyICogeik7Ci1pbnQgY2FsbF9zY3JfaW5pdCAoY29uc3QgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNjcl9pbml0KCVzKSIpLCBfbmNfdmlzYnVmMigwLHopKSk7IHJldHVybkNvZGUoc2NyX2luaXQoeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zY3JsIChpbnQgeik7Ci1pbnQgY2FsbF9zY3JsIChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgic2NybCglZCkiKSwgeikpOyByZXR1cm5Db2RlKHdzY3JsKHN0ZHNjcix6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Njcm9sbCAoV0lORE9XICogeik7Ci1pbnQgY2FsbF9zY3JvbGwgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNjcm9sbCglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdzY3JsKHosMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zY3JvbGxvayAoV0lORE9XICogYTEsIE5DVVJTRVNfQk9PTCB6KTsKLWludCBjYWxsX3Njcm9sbG9rIChXSU5ET1cgKiBhMSwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoInNjcm9sbG9rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUoc2Nyb2xsb2soYTEsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc2NyX3Jlc3RvcmUgKGNvbnN0IGNoYXIgKiB6KTsKLWludCBjYWxsX3Njcl9yZXN0b3JlIChjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgic2NyX3Jlc3RvcmUoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZShzY3JfcmVzdG9yZSh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Njcl9zZXQgKGNvbnN0IGNoYXIgKiB6KTsKLWludCBjYWxsX3Njcl9zZXQgKGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJzY3Jfc2V0KCVzKSIpLCBfbmNfdmlzYnVmMigwLHopKSk7IHJldHVybkNvZGUoc2NyX3NldCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3NldHNjcnJlZyAoaW50IGExLCBpbnQgeik7Ci1pbnQgY2FsbF9zZXRzY3JyZWcgKGludCBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoInNldHNjcnJlZyglZCwlZCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSh3c2V0c2NycmVnKHN0ZHNjcixhMSx6KSk7Ci19Ci0KLQotZXh0ZXJuIFNDUkVFTiAqIGNhbGxfc2V0X3Rlcm0gKFNDUkVFTiAqIHopOwotU0NSRUVOICogY2FsbF9zZXRfdGVybSAoU0NSRUVOICogeikKLXsKLQlUKChUX0NBTExFRCgiKCVwKSIpLCB6KSk7IHJldHVyblNQKHNldF90ZXJtKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc2xrX2F0dHJvZmYgKGNvbnN0IGNodHlwZSB6KTsKLWludCBjYWxsX3Nsa19hdHRyb2ZmIChjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgic2xrX2F0dHJvZmYoJXMpIiksIF90cmFjZWNodHlwZTIoMCx6KSkpOyByZXR1cm5Db2RlKHNsa19hdHRyb2ZmKHopKTsKLX0KLQotCi0jaWYgVVNFX1dJREVDX1NVUFBPUlQKLWV4dGVybiBpbnQgY2FsbF9zbGtfYXR0cl9vZmYgKGNvbnN0IGF0dHJfdCBhMSwgdm9pZCAqIHopOwotaW50IGNhbGxfc2xrX2F0dHJfb2ZmIChjb25zdCBhdHRyX3QgYTEsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJzbGtfYXR0cl9vZmYoJXMsJXApIiksIF90cmFjZWF0dHIyKDAsYTEpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICgtMSkgOiBzbGtfYXR0cm9mZihhMSkpKTsKLX0KLSNlbmRpZgotCi0KLWV4dGVybiBpbnQgY2FsbF9zbGtfYXR0cm9uIChjb25zdCBjaHR5cGUgeik7Ci1pbnQgY2FsbF9zbGtfYXR0cm9uIChjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgic2xrX2F0dHJvbiglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUoc2xrX2F0dHJvbih6KSk7Ci19Ci0KLQotI2lmIFVTRV9XSURFQ19TVVBQT1JUCi1leHRlcm4gaW50IGNhbGxfc2xrX2F0dHJfb24gKGF0dHJfdCBhMSwgdm9pZCAqIHopOwotaW50IGNhbGxfc2xrX2F0dHJfb24gKGF0dHJfdCBhMSwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19hdHRyX29uKCVzLCVwKSIpLCBfdHJhY2VhdHRyMigwLGExKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoLTEpIDogc2xrX2F0dHJvbihhMSkpKTsKLX0KLSNlbmRpZgotCi0KLWV4dGVybiBpbnQgY2FsbF9zbGtfYXR0cnNldCAoY29uc3QgY2h0eXBlIHopOwotaW50IGNhbGxfc2xrX2F0dHJzZXQgKGNvbnN0IGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJzbGtfYXR0cnNldCglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUoc2xrX2F0dHJzZXQoeikpOwotfQotCi0KLWV4dGVybiBhdHRyX3QgY2FsbF9zbGtfYXR0ciAodm9pZCk7Ci1hdHRyX3QgY2FsbF9zbGtfYXR0ciAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgic2xrX2F0dHIoKSIpKSk7IHJldHVybkF0dHIoc2xrX2F0dHIoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa19hdHRyX3NldCAoY29uc3QgYXR0cl90IGExLCBzaG9ydCBhMiwgdm9pZCAqIHopOwotaW50IGNhbGxfc2xrX2F0dHJfc2V0IChjb25zdCBhdHRyX3QgYTEsIHNob3J0IGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgic2xrX2F0dHJfc2V0KCVzLCVkLCVwKSIpLCBfdHJhY2VhdHRyMigwLGExKSwgYTIsIHopKTsgcmV0dXJuQ29kZShzbGtfYXR0cl9zZXQoYTEsIGEyLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa19jbGVhciAodm9pZCk7Ci1pbnQgY2FsbF9zbGtfY2xlYXIgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInNsa19jbGVhcigpIikpKTsgcmV0dXJuQ29kZShzbGtfY2xlYXIoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa19jb2xvciAoc2hvcnQgeik7Ci1pbnQgY2FsbF9zbGtfY29sb3IgKHNob3J0IHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19jb2xvciglZCkiKSwgeikpOyByZXR1cm5Db2RlKHNsa19jb2xvcih6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa19pbml0IChpbnQgeik7Ci1pbnQgY2FsbF9zbGtfaW5pdCAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19pbml0KCVkKSIpLCB6KSk7IHJldHVybkNvZGUoc2xrX2luaXQoeikpOwotfQotCi0KLWV4dGVybiBjaGFyICogY2FsbF9zbGtfbGFiZWwgKGludCB6KTsKLWNoYXIgKiBjYWxsX3Nsa19sYWJlbCAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIiglZCkiKSwgeikpOyByZXR1cm5QdHIoc2xrX2xhYmVsKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc2xrX25vdXRyZWZyZXNoICh2b2lkKTsKLWludCBjYWxsX3Nsa19ub3V0cmVmcmVzaCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgic2xrX25vdXRyZWZyZXNoKCkiKSkpOyByZXR1cm5Db2RlKHNsa19ub3V0cmVmcmVzaCgpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc2xrX3JlZnJlc2ggKHZvaWQpOwotaW50IGNhbGxfc2xrX3JlZnJlc2ggKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInNsa19yZWZyZXNoKCkiKSkpOyByZXR1cm5Db2RlKHNsa19yZWZyZXNoKCkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zbGtfcmVzdG9yZSAodm9pZCk7Ci1pbnQgY2FsbF9zbGtfcmVzdG9yZSAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgic2xrX3Jlc3RvcmUoKSIpKSk7IHJldHVybkNvZGUoc2xrX3Jlc3RvcmUoKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa19zZXQgKGludCBhMSwgY29uc3QgY2hhciAqIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF9zbGtfc2V0IChpbnQgYTEsIGNvbnN0IGNoYXIgKiBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoInNsa19zZXQoJWQsJXMsJWQpIiksIGExLCBfbmNfdmlzYnVmMigxLGEyKSwgeikpOyByZXR1cm5Db2RlKHNsa19zZXQoYTEsIGEyLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Nsa190b3VjaCAodm9pZCk7Ci1pbnQgY2FsbF9zbGtfdG91Y2ggKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInNsa190b3VjaCgpIikpKTsgcmV0dXJuQ29kZShzbGtfdG91Y2goKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3N0YW5kb3V0ICh2b2lkKTsKLWludCBjYWxsX3N0YW5kb3V0ICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCJzdGFuZG91dCgpIikpKTsgcmV0dXJuQXR0cigoKChzdGRzY3IpLT5fYXR0cnMgPSAoKCgxVUwpIDw8ICgoOCkgKyA4KSkpKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zdGFuZGVuZCAodm9pZCk7Ci1pbnQgY2FsbF9zdGFuZGVuZCAodm9pZCkKLXsKLQlUKChUX0NBTExFRCgic3RhbmRlbmQoKSIpKSk7IHJldHVybkF0dHIoKCgoc3Rkc2NyKS0+X2F0dHJzID0gKCgxVUwgLSAxVUwpKSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfc3RhcnRfY29sb3IgKHZvaWQpOwotaW50IGNhbGxfc3RhcnRfY29sb3IgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInN0YXJ0X2NvbG9yKCkiKSkpOyByZXR1cm5Db2RlKHN0YXJ0X2NvbG9yKCkpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX3N1YnBhZCAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsIGludCB6KTsKLVdJTkRPVyAqIGNhbGxfc3VicGFkIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIiglcCwlZCwlZCwlZCwlZCkiKSwgYTEsIGEyLCBhMywgYTQsIHopKTsgcmV0dXJuV2luKHN1YnBhZChhMSwgYTIsIGEzLCBhNCwgeikpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX3N1YndpbiAoV0lORE9XICogYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsIGludCB6KTsKLVdJTkRPVyAqIGNhbGxfc3Vid2luIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIiglcCwlZCwlZCwlZCwlZCkiKSwgYTEsIGEyLCBhMywgYTQsIHopKTsgcmV0dXJuV2luKHN1YndpbihhMSwgYTIsIGEzLCBhNCwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9zeW5jb2sgKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeik7Ci1pbnQgY2FsbF9zeW5jb2sgKFdJTkRPVyAqIGExLCBOQ1VSU0VTX0JPT0wgeikKLXsKLQlUKChUX0NBTExFRCgic3luY29rKCVwLCUjbHgpIiksIGExLCAobG9uZyl6KSk7IHJldHVybkNvZGUoc3luY29rKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGNodHlwZSBjYWxsX3Rlcm1hdHRycyAodm9pZCk7Ci1jaHR5cGUgY2FsbF90ZXJtYXR0cnMgKHZvaWQpCi17Ci0JVCgoVF9DQUxMRUQoInRlcm1hdHRycygpIikpKTsgcmV0dXJuQ2hhcih0ZXJtYXR0cnMoKSk7Ci19Ci0KLQotZXh0ZXJuIGNoYXIgKiBjYWxsX3Rlcm1uYW1lICh2b2lkKTsKLWNoYXIgKiBjYWxsX3Rlcm1uYW1lICh2b2lkKQotewotCVQoKFRfQ0FMTEVEKCIoKSIpKSk7IHJldHVyblB0cih0ZXJtbmFtZSgpKTsKLX0KLQotCi1leHRlcm4gdm9pZCBjYWxsX3RpbWVvdXQgKGludCB6KTsKLXZvaWQgY2FsbF90aW1lb3V0IChpbnQgeikKLXsKLQlUKChUX0NBTExFRCgidGltZW91dCglZCkiKSwgeikpOyB3dGltZW91dChzdGRzY3Iseik7Ci0JcmV0dXJuVm9pZDsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfdG91Y2hsaW5lIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeik7Ci1pbnQgY2FsbF90b3VjaGxpbmUgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ0b3VjaGxpbmUoJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKHd0b3VjaGxuKChhMSksIGEyLCB6LCAxKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3RvdWNod2luIChXSU5ET1cgKiB6KTsKLWludCBjYWxsX3RvdWNod2luIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ0b3VjaHdpbiglcCkiKSwgeikpOyByZXR1cm5Db2RlKHd0b3VjaGxuKCh6KSwgMCwgKCh6KSA/ICgoeiktPl9tYXh5ICsgMSkgOiAoLTEpKSwgMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF90eXBlYWhlYWQgKGludCB6KTsKLWludCBjYWxsX3R5cGVhaGVhZCAoaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoInR5cGVhaGVhZCglZCkiKSwgeikpOyByZXR1cm5Db2RlKHR5cGVhaGVhZCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3VuZ2V0Y2ggKGludCB6KTsKLWludCBjYWxsX3VuZ2V0Y2ggKGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ1bmdldGNoKCVkKSIpLCB6KSk7IHJldHVybkNvZGUodW5nZXRjaCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3VudG91Y2h3aW4gKFdJTkRPVyAqIHopOwotaW50IGNhbGxfdW50b3VjaHdpbiAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgidW50b3VjaHdpbiglcCkiKSwgeikpOyByZXR1cm5Db2RlKHd0b3VjaGxuKCh6KSwgMCwgKCh6KSA/ICgoeiktPl9tYXh5ICsgMSkgOiAoLTEpKSwgMCkpOwotfQotCi0KLWV4dGVybiB2b2lkIGNhbGxfdXNlX2VudiAoTkNVUlNFU19CT09MIHopOwotdm9pZCBjYWxsX3VzZV9lbnYgKE5DVVJTRVNfQk9PTCB6KQotewotCVQoKFRfQ0FMTEVEKCJ1c2VfZW52KCUjbHgpIiksIChsb25nKXopKTsgdXNlX2Vudih6KTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF92aWRhdHRyIChjaHR5cGUgeik7Ci1pbnQgY2FsbF92aWRhdHRyIChjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgidmlkYXR0ciglcykiKSwgX3RyYWNlY2h0eXBlMigwLHopKSk7IHJldHVybkNvZGUodmlkYXR0cih6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3ZpZHB1dHMgKGNodHlwZSBhMSwgaW50KCogeikoaW50KSk7Ci1pbnQgY2FsbF92aWRwdXRzIChjaHR5cGUgYTEsIGludCgqIHopKGludCkpCi17Ci0JVCgoVF9DQUxMRUQoInZpZHB1dHMoJXMsIiksIF90cmFjZWNodHlwZTIoMCxhMSkpKTsgcmV0dXJuQ29kZSh2aWRwdXRzKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3ZsaW5lIChjaHR5cGUgYTEsIGludCB6KTsKLWludCBjYWxsX3ZsaW5lIChjaHR5cGUgYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ2bGluZSglcywlZCkiKSwgX3RyYWNlY2h0eXBlMigwLGExKSwgeikpOyByZXR1cm5Db2RlKHd2bGluZShzdGRzY3IsIGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Z3cHJpbnR3IChXSU5ET1cgKiBhMSwgY29uc3QgY2hhciAqIGEyLCB2YV9saXN0IHopOwotaW50IGNhbGxfdndwcmludHcgKFdJTkRPVyAqIGExLCBjb25zdCBjaGFyICogYTIsIHZhX2xpc3QgeikKLXsKLQlUKChUX0NBTExFRCgidndwcmludHcoJXAsJXMsJXMpIiksIGExLCBfbmNfdmlzYnVmMigxLGEyKSwgInZhX2xpc3QiKSk7IHJldHVybkNvZGUodndwcmludHcoYTEsIGEyLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Z3X3ByaW50dyAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiBhMiwgdmFfbGlzdCB6KTsKLWludCBjYWxsX3Z3X3ByaW50dyAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiBhMiwgdmFfbGlzdCB6KQotewotCVQoKFRfQ0FMTEVEKCJ2d19wcmludHcoJXAsJXMsJXMpIiksIGExLCBfbmNfdmlzYnVmMigxLGEyKSwgInZhX2xpc3QiKSk7IHJldHVybkNvZGUodndwcmludHcoYTEsIGEyLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3Z3c2NhbncgKFdJTkRPVyAqIGExLCBjaGFyICogYTIsIHZhX2xpc3Qgeik7Ci1pbnQgY2FsbF92d3NjYW53IChXSU5ET1cgKiBhMSwgY2hhciAqIGEyLCB2YV9saXN0IHopCi17Ci0JVCgoVF9DQUxMRUQoInZ3c2NhbncoJXAsJXMsJXMpIiksIGExLCBfbmNfdmlzYnVmMigxLGEyKSwgInZhX2xpc3QiKSk7IHJldHVybkNvZGUodndzY2FudyhhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfdndfc2NhbncgKFdJTkRPVyAqIGExLCBjaGFyICogYTIsIHZhX2xpc3Qgeik7Ci1pbnQgY2FsbF92d19zY2FudyAoV0lORE9XICogYTEsIGNoYXIgKiBhMiwgdmFfbGlzdCB6KQotewotCVQoKFRfQ0FMTEVEKCJ2d19zY2FudyglcCwlcywlcykiKSwgYTEsIF9uY192aXNidWYyKDEsYTIpLCAidmFfbGlzdCIpKTsgcmV0dXJuQ29kZSh2d3NjYW53KGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93YWRkY2ggKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgeik7Ci1pbnQgY2FsbF93YWRkY2ggKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgid2FkZGNoKCVwLCVzKSIpLCBhMSwgX3RyYWNlY2h0eXBlMigxLHopKSk7IHJldHVybkNvZGUod2FkZGNoKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dhZGRjaG5zdHIgKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgKiBhMiwgaW50IHopOwotaW50IGNhbGxfd2FkZGNobnN0ciAoV0lORE9XICogYTEsIGNvbnN0IGNodHlwZSAqIGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgid2FkZGNobnN0ciglcCwlcCwlZCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUod2FkZGNobnN0cihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2FkZGNoc3RyIChXSU5ET1cgKiBhMSwgY29uc3QgY2h0eXBlICogeik7Ci1pbnQgY2FsbF93YWRkY2hzdHIgKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3YWRkY2hzdHIoJXAsJXApIiksIGExLCB6KSk7IHJldHVybkNvZGUod2FkZGNobnN0cihhMSx6LC0xKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dhZGRuc3RyIChXSU5ET1cgKiBhMSwgY29uc3QgY2hhciAqIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93YWRkbnN0ciAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndhZGRuc3RyKCVwLCVzLCVkKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSxhMiksIHopKTsgcmV0dXJuQ29kZSh3YWRkbnN0cihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2FkZHN0ciAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiB6KTsKLWludCBjYWxsX3dhZGRzdHIgKFdJTkRPVyAqIGExLCBjb25zdCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgid2FkZHN0ciglcCwlcykiKSwgYTEsIF9uY192aXNidWYyKDEseikpKTsgcmV0dXJuQ29kZSh3YWRkbnN0cihhMSx6LC0xKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dhdHRyb24gKFdJTkRPVyAqIGExLCBpbnQgeik7Ci1pbnQgY2FsbF93YXR0cm9uIChXSU5ET1cgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndhdHRyb24oJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod2F0dHJfb24oYTEsIChhdHRyX3QpKHopLCAoKHZvaWQgKikwKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93YXR0cm9mZiAoV0lORE9XICogYTEsIGludCB6KTsKLWludCBjYWxsX3dhdHRyb2ZmIChXSU5ET1cgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndhdHRyb2ZmKCVwLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdhdHRyX29mZihhMSwgKGF0dHJfdCkoeiksICgodm9pZCAqKTApKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dhdHRyc2V0IChXSU5ET1cgKiBhMSwgaW50IHopOwotaW50IGNhbGxfd2F0dHJzZXQgKFdJTkRPVyAqIGExLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgid2F0dHJzZXQoJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkF0dHIoKChhMSktPl9hdHRycyA9ICh6KSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93YXR0cl9nZXQgKFdJTkRPVyAqIGExLCBhdHRyX3QgKiBhMiwgc2hvcnQgKiBhMywgdm9pZCAqIHopOwotaW50IGNhbGxfd2F0dHJfZ2V0IChXSU5ET1cgKiBhMSwgYXR0cl90ICogYTIsIHNob3J0ICogYTMsIHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3YXR0cl9nZXQoJXAsJXAsJXAsJXApIiksIGExLCBhMiwgYTMsIHopKTsgcmV0dXJuQ29kZSgoKHZvaWQpKChhMikgIT0gKHZvaWQgKikwICYmICgqKGEyKSA9IChhMSktPl9hdHRycykpLCAodm9pZCkoKGEzKSAhPSAodm9pZCAqKTAgJiYgKCooYTMpID0gKChpbnQpKCgoKChhMSktPl9hdHRycykgJiAoKCgoMVVMKSA8PCA4KSAtIDFVTCkgPDwgKCgwKSArIDgpKSkgPj4gOCkpKSkpLCAoMCkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2F0dHJfb24gKFdJTkRPVyAqIGExLCBhdHRyX3QgYTIsIHZvaWQgKiB6KTsKLWludCBjYWxsX3dhdHRyX29uIChXSU5ET1cgKiBhMSwgYXR0cl90IGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgid2F0dHJfb24oJXAsJXMsJXApIiksIGExLCBfdHJhY2VhdHRyMigxLGEyKSwgeikpOyByZXR1cm5Db2RlKHdhdHRyX29uKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93YXR0cl9vZmYgKFdJTkRPVyAqIGExLCBhdHRyX3QgYTIsIHZvaWQgKiB6KTsKLWludCBjYWxsX3dhdHRyX29mZiAoV0lORE9XICogYTEsIGF0dHJfdCBhMiwgdm9pZCAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndhdHRyX29mZiglcCwlcywlcCkiKSwgYTEsIF90cmFjZWF0dHIyKDEsYTIpLCB6KSk7IHJldHVybkNvZGUod2F0dHJfb2ZmKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93YXR0cl9zZXQgKFdJTkRPVyAqIGExLCBhdHRyX3QgYTIsIHNob3J0IGEzLCB2b2lkICogeik7Ci1pbnQgY2FsbF93YXR0cl9zZXQgKFdJTkRPVyAqIGExLCBhdHRyX3QgYTIsIHNob3J0IGEzLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgid2F0dHJfc2V0KCVwLCVzLCVkLCVwKSIpLCBhMSwgX3RyYWNlYXR0cjIoMSxhMiksIGEzLCB6KSk7IHJldHVybkNvZGUoKChhMSktPl9hdHRycyA9ICgoKGEyKSAmIH4oKCgoMVVMKSA8PCA4KSAtIDFVTCkgPDwgKCgwKSArIDgpKSkgfCAoKGEzKSA8PCAoKDApICsgOCkpKSwgKDApKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dia2dkIChXSU5ET1cgKiBhMSwgY2h0eXBlIHopOwotaW50IGNhbGxfd2JrZ2QgKFdJTkRPVyAqIGExLCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgid2JrZ2QoJXAsJXMpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEseikpKTsgcmV0dXJuQ29kZSh3YmtnZChhMSwgeikpOwotfQotCi0KLWV4dGVybiB2b2lkIGNhbGxfd2JrZ2RzZXQgKFdJTkRPVyAqIGExLCBjaHR5cGUgeik7Ci12b2lkIGNhbGxfd2JrZ2RzZXQgKFdJTkRPVyAqIGExLCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgid2JrZ2RzZXQoJXAsJXMpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEseikpKTsgd2JrZ2RzZXQoYTEsIHopOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dib3JkZXIgKFdJTkRPVyAqIGExLCBjaHR5cGUgYTIsIGNodHlwZSBhMywgY2h0eXBlIGE0LCBjaHR5cGUgYTUsIGNodHlwZSBhNiwgY2h0eXBlIGE3LCBjaHR5cGUgYTgsIGNodHlwZSB6KTsKLWludCBjYWxsX3dib3JkZXIgKFdJTkRPVyAqIGExLCBjaHR5cGUgYTIsIGNodHlwZSBhMywgY2h0eXBlIGE0LCBjaHR5cGUgYTUsIGNodHlwZSBhNiwgY2h0eXBlIGE3LCBjaHR5cGUgYTgsIGNodHlwZSB6KQotewotCVQoKFRfQ0FMTEVEKCJ3Ym9yZGVyKCVwLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzKSIpLCBhMSwgX3RyYWNlY2h0eXBlMigxLGEyKSwgX3RyYWNlY2h0eXBlMigyLGEzKSwgX3RyYWNlY2h0eXBlMigzLGE0KSwgX3RyYWNlY2h0eXBlMig0LGE1KSwgX3RyYWNlY2h0eXBlMig1LGE2KSwgX3RyYWNlY2h0eXBlMig2LGE3KSwgX3RyYWNlY2h0eXBlMig3LGE4KSwgX3RyYWNlY2h0eXBlMig4LHopKSk7IHJldHVybkNvZGUod2JvcmRlcihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2NoZ2F0IChXSU5ET1cgKiBhMSwgaW50IGEyLCBhdHRyX3QgYTMsIHNob3J0IGE0LCBjb25zdCB2b2lkICogeik7Ci1pbnQgY2FsbF93Y2hnYXQgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGF0dHJfdCBhMywgc2hvcnQgYTQsIGNvbnN0IHZvaWQgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3Y2hnYXQoJXAsJWQsJXMsJWQsJXApIiksIGExLCBhMiwgX3RyYWNlYXR0cjIoMixhMyksIGE0LCB6KSk7IHJldHVybkNvZGUod2NoZ2F0KGExLCBhMiwgYTMsIGE0LCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3djbGVhciAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93Y2xlYXIgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndjbGVhciglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdjbGVhcih6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3djbHJ0b2JvdCAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93Y2xydG9ib3QgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndjbHJ0b2JvdCglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdjbHJ0b2JvdCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3djbHJ0b2VvbCAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93Y2xydG9lb2wgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndjbHJ0b2VvbCglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdjbHJ0b2VvbCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3djb2xvcl9zZXQgKFdJTkRPVyAqIGExLCBzaG9ydCBhMiwgdm9pZCAqIHopOwotaW50IGNhbGxfd2NvbG9yX3NldCAoV0lORE9XICogYTEsIHNob3J0IGEyLCB2b2lkICogeikKLXsKLQlUKChUX0NBTExFRCgid2NvbG9yX3NldCglcCwlZCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUod2NvbG9yX3NldChhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gdm9pZCBjYWxsX3djdXJzeW5jdXAgKFdJTkRPVyAqIHopOwotdm9pZCBjYWxsX3djdXJzeW5jdXAgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndjdXJzeW5jdXAoJXApIiksIHopKTsgd2N1cnN5bmN1cCh6KTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93ZGVsY2ggKFdJTkRPVyAqIHopOwotaW50IGNhbGxfd2RlbGNoIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3ZGVsY2goJXApIiksIHopKTsgcmV0dXJuQ29kZSh3ZGVsY2goeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93ZGVsZXRlbG4gKFdJTkRPVyAqIHopOwotaW50IGNhbGxfd2RlbGV0ZWxuIChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3ZGVsZXRlbG4oJXApIiksIHopKTsgcmV0dXJuQ29kZSh3aW5zZGVsbG4oeiwtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93ZWNob2NoYXIgKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgeik7Ci1pbnQgY2FsbF93ZWNob2NoYXIgKFdJTkRPVyAqIGExLCBjb25zdCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgid2VjaG9jaGFyKCVwLCVzKSIpLCBhMSwgX3RyYWNlY2h0eXBlMigxLHopKSk7IHJldHVybkNvZGUod2VjaG9jaGFyKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dlcmFzZSAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93ZXJhc2UgKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndlcmFzZSglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdlcmFzZSh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dnZXRjaCAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93Z2V0Y2ggKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndnZXRjaCglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdnZXRjaCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dnZXRuc3RyIChXSU5ET1cgKiBhMSwgY2hhciAqIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93Z2V0bnN0ciAoV0lORE9XICogYTEsIGNoYXIgKiBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndnZXRuc3RyKCVwLCVzLCVkKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSxhMiksIHopKTsgcmV0dXJuQ29kZSh3Z2V0bnN0cihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2dldHN0ciAoV0lORE9XICogYTEsIGNoYXIgKiB6KTsKLWludCBjYWxsX3dnZXRzdHIgKFdJTkRPVyAqIGExLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgid2dldHN0ciglcCwlcykiKSwgYTEsIF9uY192aXNidWYyKDEseikpKTsgcmV0dXJuQ29kZSh3Z2V0bnN0cihhMSwgeiwgLTEpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2hsaW5lIChXSU5ET1cgKiBhMSwgY2h0eXBlIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93aGxpbmUgKFdJTkRPVyAqIGExLCBjaHR5cGUgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aGxpbmUoJXAsJXMsJWQpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEsYTIpLCB6KSk7IHJldHVybkNvZGUod2hsaW5lKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBjaHR5cGUgY2FsbF93aW5jaCAoV0lORE9XICogeik7Ci1jaHR5cGUgY2FsbF93aW5jaCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid2luY2goJXApIiksIHopKTsgcmV0dXJuQ2hhcih3aW5jaCh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dpbmNobnN0ciAoV0lORE9XICogYTEsIGNodHlwZSAqIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93aW5jaG5zdHIgKFdJTkRPVyAqIGExLCBjaHR5cGUgKiBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndpbmNobnN0ciglcCwlcCwlZCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUod2luY2huc3RyKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93aW5jaHN0ciAoV0lORE9XICogYTEsIGNodHlwZSAqIHopOwotaW50IGNhbGxfd2luY2hzdHIgKFdJTkRPVyAqIGExLCBjaHR5cGUgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aW5jaHN0ciglcCwlcCkiKSwgYTEsIHopKTsgcmV0dXJuQ29kZSh3aW5jaG5zdHIoYTEsIHosIC0xKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dpbm5zdHIgKFdJTkRPVyAqIGExLCBjaGFyICogYTIsIGludCB6KTsKLWludCBjYWxsX3dpbm5zdHIgKFdJTkRPVyAqIGExLCBjaGFyICogYTIsIGludCB6KQotewotCXJldHVybiB3aW5uc3RyKGExLCBhMiwgeikgOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93aW5zY2ggKFdJTkRPVyAqIGExLCBjaHR5cGUgeik7Ci1pbnQgY2FsbF93aW5zY2ggKFdJTkRPVyAqIGExLCBjaHR5cGUgeikKLXsKLQlUKChUX0NBTExFRCgid2luc2NoKCVwLCVzKSIpLCBhMSwgX3RyYWNlY2h0eXBlMigxLHopKSk7IHJldHVybkNvZGUod2luc2NoKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dpbnNkZWxsbiAoV0lORE9XICogYTEsIGludCB6KTsKLWludCBjYWxsX3dpbnNkZWxsbiAoV0lORE9XICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aW5zZGVsbG4oJXAsJWQpIiksIGExLCB6KSk7IHJldHVybkNvZGUod2luc2RlbGxuKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dpbnNlcnRsbiAoV0lORE9XICogeik7Ci1pbnQgY2FsbF93aW5zZXJ0bG4gKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndpbnNlcnRsbiglcCkiKSwgeikpOyByZXR1cm5Db2RlKHdpbnNkZWxsbih6LDEpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2luc25zdHIgKFdJTkRPVyAqIGExLCBjb25zdCBjaGFyICogYTIsIGludCB6KTsKLWludCBjYWxsX3dpbnNuc3RyIChXSU5ET1cgKiBhMSwgY29uc3QgY2hhciAqIGEyLCBpbnQgeikKLXsKLQlUKChUX0NBTExFRCgid2luc25zdHIoJXAsJXMsJWQpIiksIGExLCBfbmNfdmlzYnVmMigxLGEyKSwgeikpOyByZXR1cm5Db2RlKHdpbnNuc3RyKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93aW5zc3RyIChXSU5ET1cgKiBhMSwgY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfd2luc3N0ciAoV0lORE9XICogYTEsIGNvbnN0IGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3aW5zc3RyKCVwLCVzKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSx6KSkpOyByZXR1cm5Db2RlKHdpbnNuc3RyKGExLCB6LCAtMSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93aW5zdHIgKFdJTkRPVyAqIGExLCBjaGFyICogeik7Ci1pbnQgY2FsbF93aW5zdHIgKFdJTkRPVyAqIGExLCBjaGFyICogeikKLXsKLQlUKChUX0NBTExFRCgid2luc3RyKCVwLCVzKSIpLCBhMSwgX25jX3Zpc2J1ZjIoMSx6KSkpOyByZXR1cm5Db2RlKHdpbm5zdHIoYTEsIHosIC0xKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dtb3ZlIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93bW92ZSAoV0lORE9XICogYTEsIGludCBhMiwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndtb3ZlKCVwLCVkLCVkKSIpLCBhMSwgYTIsIHopKTsgcmV0dXJuQ29kZSh3bW92ZShhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd25vdXRyZWZyZXNoIChXSU5ET1cgKiB6KTsKLWludCBjYWxsX3dub3V0cmVmcmVzaCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid25vdXRyZWZyZXNoKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod25vdXRyZWZyZXNoKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd3JlZHJhd2xuIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93cmVkcmF3bG4gKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3cmVkcmF3bG4oJXAsJWQsJWQpIiksIGExLCBhMiwgeikpOyByZXR1cm5Db2RlKHdyZWRyYXdsbihhMSwgYTIsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd3JlZnJlc2ggKFdJTkRPVyAqIHopOwotaW50IGNhbGxfd3JlZnJlc2ggKFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoIndyZWZyZXNoKCVwKSIpLCB6KSk7IHJldHVybkNvZGUod3JlZnJlc2goeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93c2NybCAoV0lORE9XICogYTEsIGludCB6KTsKLWludCBjYWxsX3dzY3JsIChXSU5ET1cgKiBhMSwgaW50IHopCi17Ci0JVCgoVF9DQUxMRUQoIndzY3JsKCVwLCVkKSIpLCBhMSwgeikpOyByZXR1cm5Db2RlKHdzY3JsKGExLCB6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3dzZXRzY3JyZWcgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KTsKLWludCBjYWxsX3dzZXRzY3JyZWcgKFdJTkRPVyAqIGExLCBpbnQgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3c2V0c2NycmVnKCVwLCVkLCVkKSIpLCBhMSwgYTIsIHopKTsgcmV0dXJuQ29kZSh3c2V0c2NycmVnKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF93c3RhbmRvdXQgKFdJTkRPVyAqIHopOwotaW50IGNhbGxfd3N0YW5kb3V0IChXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJ3c3RhbmRvdXQoJXApIiksIHopKTsgcmV0dXJuQXR0cigoKCh6KS0+X2F0dHJzID0gKCgoMVVMKSA8PCAoKDgpICsgOCkpKSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd3N0YW5kZW5kIChXSU5ET1cgKiB6KTsKLWludCBjYWxsX3dzdGFuZGVuZCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid3N0YW5kZW5kKCVwKSIpLCB6KSk7IHJldHVybkF0dHIoKCgoeiktPl9hdHRycyA9ICgoMVVMIC0gMVVMKSkpKSk7Ci19Ci0KLQotZXh0ZXJuIHZvaWQgY2FsbF93c3luY2Rvd24gKFdJTkRPVyAqIHopOwotdm9pZCBjYWxsX3dzeW5jZG93biAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid3N5bmNkb3duKCVwKSIpLCB6KSk7IHdzeW5jZG93bih6KTsKLQlyZXR1cm5Wb2lkOwotfQotCi0KLWV4dGVybiB2b2lkIGNhbGxfd3N5bmN1cCAoV0lORE9XICogeik7Ci12b2lkIGNhbGxfd3N5bmN1cCAoV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgid3N5bmN1cCglcCkiKSwgeikpOyB3c3luY3VwKHopOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIHZvaWQgY2FsbF93dGltZW91dCAoV0lORE9XICogYTEsIGludCB6KTsKLXZvaWQgY2FsbF93dGltZW91dCAoV0lORE9XICogYTEsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3dGltZW91dCglcCwlZCkiKSwgYTEsIHopKTsgd3RpbWVvdXQoYTEsIHopOwotCXJldHVyblZvaWQ7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3d0b3VjaGxuIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGludCB6KTsKLWludCBjYWxsX3d0b3VjaGxuIChXSU5ET1cgKiBhMSwgaW50IGEyLCBpbnQgYTMsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3dG91Y2hsbiglcCwlZCwlZCwlZCkiKSwgYTEsIGEyLCBhMywgeikpOyByZXR1cm5Db2RlKHd0b3VjaGxuKGExLCBhMiwgYTMsIHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd3ZsaW5lIChXSU5ET1cgKiBhMSwgY2h0eXBlIGEyLCBpbnQgeik7Ci1pbnQgY2FsbF93dmxpbmUgKFdJTkRPVyAqIGExLCBjaHR5cGUgYTIsIGludCB6KQotewotCVQoKFRfQ0FMTEVEKCJ3dmxpbmUoJXAsJXMsJWQpIiksIGExLCBfdHJhY2VjaHR5cGUyKDEsYTIpLCB6KSk7IHJldHVybkNvZGUod3ZsaW5lKGExLCBhMiwgeikpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF90aWdldGZsYWcgKGNoYXIgKiB6KTsKLWludCBjYWxsX3RpZ2V0ZmxhZyAoY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInRpZ2V0ZmxhZyglcykiKSwgX25jX3Zpc2J1ZjIoMCx6KSkpOyByZXR1cm5Db2RlKHRpZ2V0ZmxhZyh6KSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX3RpZ2V0bnVtIChjaGFyICogeik7Ci1pbnQgY2FsbF90aWdldG51bSAoY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInRpZ2V0bnVtKCVzKSIpLCBfbmNfdmlzYnVmMigwLHopKSk7IHJldHVybkNvZGUodGlnZXRudW0oeikpOwotfQotCi0KLWV4dGVybiBjaGFyICogY2FsbF90aWdldHN0ciAoY2hhciAqIHopOwotY2hhciAqIGNhbGxfdGlnZXRzdHIgKGNoYXIgKiB6KQotewotCVQoKFRfQ0FMTEVEKCIoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuUHRyKHRpZ2V0c3RyKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfcHV0cCAoY29uc3QgY2hhciAqIHopOwotaW50IGNhbGxfcHV0cCAoY29uc3QgY2hhciAqIHopCi17Ci0JVCgoVF9DQUxMRUQoInB1dHAoJXMpIiksIF9uY192aXNidWYyKDAseikpKTsgcmV0dXJuQ29kZShwdXRwKHopKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0YXR0cnMgKGNvbnN0IFdJTkRPVyAqIHopOwotaW50IGNhbGxfZ2V0YXR0cnMgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldGF0dHJzKCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICh6KS0+X2F0dHJzIDogKDFVTCAtIDFVTCkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0Y3VyeCAoY29uc3QgV0lORE9XICogeik7Ci1pbnQgY2FsbF9nZXRjdXJ4IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRjdXJ4KCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICh6KS0+X2N1cnggOiAoLTEpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2dldGN1cnkgKGNvbnN0IFdJTkRPVyAqIHopOwotaW50IGNhbGxfZ2V0Y3VyeSAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0Y3VyeSglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9jdXJ5IDogKC0xKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9nZXRiZWd4IChjb25zdCBXSU5ET1cgKiB6KTsKLWludCBjYWxsX2dldGJlZ3ggKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldGJlZ3goJXApIiksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKHopLT5fYmVneCA6ICgtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0YmVneSAoY29uc3QgV0lORE9XICogeik7Ci1pbnQgY2FsbF9nZXRiZWd5IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRiZWd5KCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICh6KS0+X2JlZ3kgOiAoLTEpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2dldG1heHggKGNvbnN0IFdJTkRPVyAqIHopOwotaW50IGNhbGxfZ2V0bWF4eCAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0bWF4eCglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoKHopLT5fbWF4eCArIDEpIDogKC0xKSkpOwotfQotCi0KLWV4dGVybiBpbnQgY2FsbF9nZXRtYXh5IChjb25zdCBXSU5ET1cgKiB6KTsKLWludCBjYWxsX2dldG1heHkgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImdldG1heHkoJXApIiksIHopKTsgcmV0dXJuQ29kZSgoKHopID8gKCh6KS0+X21heHkgKyAxKSA6ICgtMSkpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfZ2V0cGFyeCAoY29uc3QgV0lORE9XICogeik7Ci1pbnQgY2FsbF9nZXRwYXJ4IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJnZXRwYXJ4KCVwKSIpLCB6KSk7IHJldHVybkNvZGUoKCh6KSA/ICh6KS0+X3BhcnggOiAoLTEpKSk7Ci19Ci0KLQotZXh0ZXJuIGludCBjYWxsX2dldHBhcnkgKGNvbnN0IFdJTkRPVyAqIHopOwotaW50IGNhbGxfZ2V0cGFyeSAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiZ2V0cGFyeSglcCkiKSwgeikpOyByZXR1cm5Db2RlKCgoeikgPyAoeiktPl9wYXJ5IDogKC0xKSkpOwotfQotCi0KLWV4dGVybiBXSU5ET1cgKiBjYWxsX3dnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqIHopOwotV0lORE9XICogY2FsbF93Z2V0cGFyZW50IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCIoJXApIiksIHopKTsgcmV0dXJuV2luKCgoeikgPyAoeiktPl9wYXJlbnQgOiAwKSk7Ci19Ci0KLQotZXh0ZXJuIE5DVVJTRVNfQk9PTCBjYWxsX2lzX2NsZWFyZWQgKGNvbnN0IFdJTkRPVyAqIHopOwotTkNVUlNFU19CT09MIGNhbGxfaXNfY2xlYXJlZCAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfY2xlYXJlZCglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9jbGVhcikpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc19pZGNvayAoY29uc3QgV0lORE9XICogeik7Ci1OQ1VSU0VTX0JPT0wgY2FsbF9pc19pZGNvayAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfaWRjb2soJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5faWRjb2spKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqIHopOwotTkNVUlNFU19CT09MIGNhbGxfaXNfaWRsb2sgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX2lkbG9rKCVwKSIpLCB6KSk7IHJldHVybkJvb2woKCh6KS0+X2lkbG9rKSk7Ci19Ci0KLQotZXh0ZXJuIE5DVVJTRVNfQk9PTCBjYWxsX2lzX2ltbWVkb2sgKGNvbnN0IFdJTkRPVyAqIHopOwotTkNVUlNFU19CT09MIGNhbGxfaXNfaW1tZWRvayAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfaW1tZWRvayglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9pbW1lZCkpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc19rZXlwYWQgKGNvbnN0IFdJTkRPVyAqIHopOwotTkNVUlNFU19CT09MIGNhbGxfaXNfa2V5cGFkIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19rZXlwYWQoJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5fdXNlX2tleXBhZCkpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc19sZWF2ZW9rIChjb25zdCBXSU5ET1cgKiB6KTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzX2xlYXZlb2sgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX2xlYXZlb2soJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5fbGVhdmVvaykpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc19ub2RlbGF5IChjb25zdCBXSU5ET1cgKiB6KTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzX25vZGVsYXkgKGNvbnN0IFdJTkRPVyAqIHopCi17Ci0JVCgoVF9DQUxMRUQoImlzX25vZGVsYXkoJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5fZGVsYXkgPT0gMCkpOwotfQotCi0KLWV4dGVybiBOQ1VSU0VTX0JPT0wgY2FsbF9pc19ub3RpbWVvdXQgKGNvbnN0IFdJTkRPVyAqIHopOwotTkNVUlNFU19CT09MIGNhbGxfaXNfbm90aW1lb3V0IChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19ub3RpbWVvdXQoJXApIiksIHopKTsgcmV0dXJuQm9vbCgoKHopLT5fbm90aW1lb3V0KSk7Ci19Ci0KLQotZXh0ZXJuIE5DVVJTRVNfQk9PTCBjYWxsX2lzX3Njcm9sbG9rIChjb25zdCBXSU5ET1cgKiB6KTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzX3Njcm9sbG9rIChjb25zdCBXSU5ET1cgKiB6KQotewotCVQoKFRfQ0FMTEVEKCJpc19zY3JvbGxvayglcCkiKSwgeikpOyByZXR1cm5Cb29sKCgoeiktPl9zY3JvbGwpKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfaXNfc3luY29rIChjb25zdCBXSU5ET1cgKiB6KTsKLU5DVVJTRVNfQk9PTCBjYWxsX2lzX3N5bmNvayAoY29uc3QgV0lORE9XICogeikKLXsKLQlUKChUX0NBTExFRCgiaXNfc3luY29rKCVwKSIpLCB6KSk7IHJldHVybkJvb2woKCh6KS0+X3N5bmMpKTsKLX0KLQotCi1leHRlcm4gaW50IGNhbGxfd2dldHNjcnJlZyAoY29uc3QgV0lORE9XICogYTEsIGludCAqIGEyLCBpbnQgKiB6KTsKLWludCBjYWxsX3dnZXRzY3JyZWcgKGNvbnN0IFdJTkRPVyAqIGExLCBpbnQgKiBhMiwgaW50ICogeikKLXsKLQlUKChUX0NBTExFRCgid2dldHNjcnJlZyglcCwlcCwlcCkiKSwgYTEsIGEyLCB6KSk7IHJldHVybkNvZGUoKChhMSkgPyAoKihhMikgPSAoYTEpLT5fcmVndG9wLCAqKHopID0gKGExKS0+X3JlZ2JvdHRvbSwgKDApKSA6ICgtMSkpKTsKLX0KLQotCi1leHRlcm4gTkNVUlNFU19CT09MIGNhbGxfbW91c2VfdHJhZm8gKGludCAqIGExLCBpbnQgKiBhMiwgTkNVUlNFU19CT09MIHopOwotTkNVUlNFU19CT09MIGNhbGxfbW91c2VfdHJhZm8gKGludCAqIGExLCBpbnQgKiBhMiwgTkNVUlNFU19CT09MIHopCi17Ci0JVCgoVF9DQUxMRUQoIm1vdXNlX3RyYWZvKCVwLCVwLCUjbHgpIiksIGExLCBhMiwgKGxvbmcpeikpOyByZXR1cm5Cb29sKHdtb3VzZV90cmFmbyhzdGRzY3IsYTEsYTIseikpOwotfQotaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9sbGliLWxuY3Vyc2VzIGIvbmN1cnNlcy9sbGliLWxuY3Vyc2VzCmluZGV4IGNjMGUzNjYuLjQ2MDRmZGQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvbGxpYi1sbmN1cnNlcworKysgYi9uY3Vyc2VzL2xsaWItbG5jdXJzZXMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw3ICsyNyw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni0yMDA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBMSU5UTElCUkFSWSAqLwogCkBAIC0zOCwyNyArMzgsNTQgQEAKICN1bmRlZiBfbmNfb2xkbnVtcwogaW50CSpfbmNfb2xkbnVtczsKIAorI3VuZGVmIF9uY19zY3JvbGxfb3B0aW1pemVfc3AKK3ZvaWQJX25jX3Njcm9sbF9vcHRpbWl6ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JvbGxfb3B0aW1pemUKIHZvaWQJX25jX3Njcm9sbF9vcHRpbWl6ZSh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX2xpbmVkdW1wX3NwCit2b2lkCV9uY19saW5lZHVtcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19saW5lZHVtcAogdm9pZAlfbmNfbGluZWR1bXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90dHkvaGFzaG1hcC5jICovCiAKLSNpbmNsdWRlIDx0ZXJtLmg+CisjdW5kZWYgX25jX2hhc2hfbWFwX3NwCit2b2lkCV9uY19oYXNoX21hcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY19oYXNoX21hcAogdm9pZAlfbmNfaGFzaF9tYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19tYWtlX29sZGhhc2hfc3AKK3ZvaWQJX25jX21ha2Vfb2xkaGFzaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlpKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX21ha2Vfb2xkaGFzaAogdm9pZAlfbmNfbWFrZV9vbGRoYXNoKAogCQlpbnQJaSkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zY3JvbGxfb2xkaGFzaF9zcAordm9pZAlfbmNfc2Nyb2xsX29sZGhhc2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbiwgCisJCWludAl0b3AsIAorCQlpbnQJYm90KQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX3Njcm9sbF9vbGRoYXNoCiB2b2lkCV9uY19zY3JvbGxfb2xkaGFzaCgKIAkJaW50CW4sIApAQCAtNjgsOCArOTUsNiBAQAogCiAvKiAuL2Jhc2UvbGliX2FkZGNoLmMgKi8KIAotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KICN1bmRlZiBfbmNfcmVuZGVyCiBjaHR5cGUJX25jX3JlbmRlcigKIAkJV0lORE9XCSp3aW4sIApAQCAtMTEyLDYgKzEzNywxMSBAQAogCiAvKiAuL2Jhc2UvbGliX2JlZXAuYyAqLwogCisjdW5kZWYgYmVlcF9zcAoraW50CWJlZXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGJlZXAKIGludAliZWVwKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTE4NywyMSArMjE3LDM3IEBACiAKIC8qIC4vYmFzZS9saWJfY29sb3IuYyAqLwogCi0jaW5jbHVkZSA8dGljLmg+Ci0KICN1bmRlZiBDT0xPUl9QQUlSUwogaW50CUNPTE9SX1BBSVJTOwogI3VuZGVmIENPTE9SUwogaW50CUNPTE9SUzsKIAorI3VuZGVmIF9uY19yZXNldF9jb2xvcnNfc3AKK05DVVJTRVNfQk9PTCBfbmNfcmVzZXRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKICN1bmRlZiBfbmNfcmVzZXRfY29sb3JzCiBOQ1VSU0VTX0JPT0wgX25jX3Jlc2V0X2NvbG9ycyh2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiBzdGFydF9jb2xvcl9zcAoraW50CXN0YXJ0X2NvbG9yX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzdGFydF9jb2xvcgogaW50CXN0YXJ0X2NvbG9yKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGluaXRfcGFpcl9zcAoraW50CWluaXRfcGFpcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCXNob3J0CXBhaXIsIAorCQlzaG9ydAlmLCAKKwkJc2hvcnQJYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaW5pdF9wYWlyCiBpbnQJaW5pdF9wYWlyKAogCQlzaG9ydAlwYWlyLCAKQEAgLTIwOSw2ICsyNTUsMTUgQEAKIAkJc2hvcnQJYikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgaW5pdF9jb2xvcl9zcAoraW50CWluaXRfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAljb2xvciwgCisJCXNob3J0CXIsIAorCQlzaG9ydAlnLCAKKwkJc2hvcnQJYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaW5pdF9jb2xvcgogaW50CWluaXRfY29sb3IoCiAJCXNob3J0CWNvbG9yLCAKQEAgLTIxNywxNCArMjcyLDMzIEBACiAJCXNob3J0CWIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGNhbl9jaGFuZ2VfY29sb3Jfc3AKK05DVVJTRVNfQk9PTCBjYW5fY2hhbmdlX2NvbG9yX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKICN1bmRlZiBjYW5fY2hhbmdlX2NvbG9yCiBOQ1VSU0VTX0JPT0wgY2FuX2NoYW5nZV9jb2xvcih2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiBoYXNfY29sb3JzX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2NvbG9yc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaGFzX2NvbG9ycwogTkNVUlNFU19CT09MIGhhc19jb2xvcnModm9pZCkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgY29sb3JfY29udGVudF9zcAoraW50CWNvbG9yX2NvbnRlbnRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAljb2xvciwgCisJCXNob3J0CSpyLCAKKwkJc2hvcnQJKmcsIAorCQlzaG9ydAkqYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgY29sb3JfY29udGVudAogaW50CWNvbG9yX2NvbnRlbnQoCiAJCXNob3J0CWNvbG9yLCAKQEAgLTIzMyw2ICszMDcsMTQgQEAKIAkJc2hvcnQJKmIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHBhaXJfY29udGVudF9zcAoraW50CXBhaXJfY29udGVudF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCXNob3J0CXBhaXIsIAorCQlzaG9ydAkqZiwgCisJCXNob3J0CSpiKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBwYWlyX2NvbnRlbnQKIGludAlwYWlyX2NvbnRlbnQoCiAJCXNob3J0CXBhaXIsIApAQCAtMjQwLDEzICszMjIsMjEgQEAKIAkJc2hvcnQJKmIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19kb19jb2xvcl9zcAordm9pZAlfbmNfZG9fY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJb2xkX3BhaXIsIAorCQlpbnQJcGFpciwgCisJCWludAlyZXZlcnNlLCAKKwkJTkNVUlNFU19PVVRDX3NwIG91dGMpCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfZG9fY29sb3IKIHZvaWQJX25jX2RvX2NvbG9yKAotCQlzaG9ydAlvbGRfcGFpciwgCi0JCXNob3J0CXBhaXIsIAotCQlOQ1VSU0VTX0JPT0wgcmV2ZXJzZSwgCi0JCWludAkoKm91dGMpKAotCQlpbnQJcDEpKQorCQlpbnQJb2xkX3BhaXIsIAorCQlpbnQJcGFpciwgCisJCWludAlyZXZlcnNlLCAKKwkJTkNVUlNFU19PVVRDIG91dGMpCiAJCXsgLyogdm9pZCAqLyB9CiAKIC8qIC4vYmFzZS9saWJfY29sb3JzZXQuYyAqLwpAQCAtMjc0LDE2ICszNjQsMzEgQEAKIAogLyogLi9iYXNlL2xpYl9lY2hvLmMgKi8KIAorI3VuZGVmIGVjaG9fc3AKK2ludAllY2hvX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBlY2hvCiBpbnQJZWNobyh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBub2VjaG9fc3AKK2ludAlub2VjaG9fc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5vZWNobwogaW50CW5vZWNobyh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfZW5kd2luLmMgKi8KIAorI3VuZGVmIGVuZHdpbl9zcAoraW50CWVuZHdpbl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZW5kd2luCiBpbnQJZW5kd2luKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTI5Nyw2ICs0MDIsMTEgQEAKIAogLyogLi9iYXNlL2xpYl9mbGFzaC5jICovCiAKKyN1bmRlZiBmbGFzaF9zcAoraW50CWZsYXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBmbGFzaAogaW50CWZsYXNoKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTMwNCw4NSArNDE0LDg1IEBACiAvKiAuL2xpYl9nZW4uYyAqLwogCiAjdW5kZWYgYWRkY2gKLWludAlhZGRjaCgKK2ludAkoYWRkY2gpKAogCQljb25zdCBjaHR5cGUgeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYWRkY2huc3RyCi1pbnQJYWRkY2huc3RyKAoraW50CShhZGRjaG5zdHIpKAogCQljb25zdCBjaHR5cGUgKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZGNoc3RyCi1pbnQJYWRkY2hzdHIoCitpbnQJKGFkZGNoc3RyKSgKIAkJY29uc3QgY2h0eXBlICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRuc3RyCi1pbnQJYWRkbnN0cigKK2ludAkoYWRkbnN0cikoCiAJCWNvbnN0IGNoYXIgKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZHN0cgotaW50CWFkZHN0cigKK2ludAkoYWRkc3RyKSgKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cm9mZgotaW50CWF0dHJvZmYoCitpbnQJKGF0dHJvZmYpKAogCQlOQ1VSU0VTX0FUVFJfVAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyb24KLWludAlhdHRyb24oCitpbnQJKGF0dHJvbikoCiAJCU5DVVJTRVNfQVRUUl9UCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJzZXQKLWludAlhdHRyc2V0KAoraW50CShhdHRyc2V0KSgKIAkJTkNVUlNFU19BVFRSX1QJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cl9nZXQKLWludAlhdHRyX2dldCgKK2ludAkoYXR0cl9nZXQpKAogCQlhdHRyX3QJKmExLCAKIAkJc2hvcnQJKmEyLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cl9vZmYKLWludAlhdHRyX29mZigKK2ludAkoYXR0cl9vZmYpKAogCQlhdHRyX3QJYTEsIAogCQl2b2lkCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyX29uCi1pbnQJYXR0cl9vbigKK2ludAkoYXR0cl9vbikoCiAJCWF0dHJfdAlhMSwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJfc2V0Ci1pbnQJYXR0cl9zZXQoCitpbnQJKGF0dHJfc2V0KSgKIAkJYXR0cl90CWExLCAKIAkJc2hvcnQJYTIsIAogCQl2b2lkCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBia2dkCi1pbnQJYmtnZCgKK2ludAkoYmtnZCkoCiAJCWNodHlwZQl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBia2dkc2V0Ci12b2lkCWJrZ2RzZXQoCit2b2lkCShia2dkc2V0KSgKIAkJY2h0eXBlCXopCiAJCXsgLyogdm9pZCAqLyB9CiAKICN1bmRlZiBib3JkZXIKLWludAlib3JkZXIoCitpbnQJKGJvcmRlcikoCiAJCWNodHlwZQlhMSwgCiAJCWNodHlwZQlhMiwgCiAJCWNodHlwZQlhMywgCkBAIC0zOTQsMTQgKzUwNCwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBib3gKLWludAlib3goCitpbnQJKGJveCkoCiAJCVdJTkRPVwkqYTEsIAogCQljaHR5cGUJYTIsIAogCQljaHR5cGUJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgY2hnYXQKLWludAljaGdhdCgKK2ludAkoY2hnYXQpKAogCQlpbnQJYTEsIAogCQlhdHRyX3QJYTIsIAogCQlzaG9ydAlhMywgCkBAIC00MDksMTM3ICs1MTksMTM3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGNsZWFyCi1pbnQJY2xlYXIodm9pZCkKK2ludAkoY2xlYXIpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGNscnRvYm90Ci1pbnQJY2xydG9ib3Qodm9pZCkKK2ludAkoY2xydG9ib3QpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGNscnRvZW9sCi1pbnQJY2xydG9lb2wodm9pZCkKK2ludAkoY2xydG9lb2wpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGNvbG9yX3NldAotaW50CWNvbG9yX3NldCgKK2ludAkoY29sb3Jfc2V0KSgKIAkJc2hvcnQJYTEsIAogCQl2b2lkCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBDT0xPUl9QQUlSCi1pbnQJQ09MT1JfUEFJUigKK2ludAkoQ09MT1JfUEFJUikoCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBkZWxjaAotaW50CWRlbGNoKHZvaWQpCitpbnQJKGRlbGNoKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBkZWxldGVsbgotaW50CWRlbGV0ZWxuKHZvaWQpCitpbnQJKGRlbGV0ZWxuKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBlY2hvY2hhcgotaW50CWVjaG9jaGFyKAoraW50CShlY2hvY2hhcikoCiAJCWNvbnN0IGNodHlwZSB6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBlcmFzZQotaW50CWVyYXNlKHZvaWQpCitpbnQJKGVyYXNlKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRia2dkCi1jaHR5cGUJZ2V0YmtnZCgKK2NodHlwZQkoZ2V0YmtnZCkoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQogCiAjdW5kZWYgZ2V0Y2gKLWludAlnZXRjaCh2b2lkKQoraW50CShnZXRjaCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0bnN0cgotaW50CWdldG5zdHIoCitpbnQJKGdldG5zdHIpKAogCQljaGFyCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRzdHIKLWludAlnZXRzdHIoCitpbnQJKGdldHN0cikoCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGhsaW5lCi1pbnQJaGxpbmUoCitpbnQJKGhsaW5lKSgKIAkJY2h0eXBlCWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluY2gKLWNodHlwZQlpbmNoKHZvaWQpCitjaHR5cGUJKGluY2gpKHZvaWQpCiAJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KIAogI3VuZGVmIGluY2huc3RyCi1pbnQJaW5jaG5zdHIoCitpbnQJKGluY2huc3RyKSgKIAkJY2h0eXBlCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbmNoc3RyCi1pbnQJaW5jaHN0cigKK2ludAkoaW5jaHN0cikoCiAJCWNodHlwZQkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5uc3RyCi1pbnQJaW5uc3RyKAoraW50CShpbm5zdHIpKAogCQljaGFyCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNjaAotaW50CWluc2NoKAoraW50CShpbnNjaCkoCiAJCWNodHlwZQl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNkZWxsbgotaW50CWluc2RlbGxuKAoraW50CShpbnNkZWxsbikoCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNlcnRsbgotaW50CWluc2VydGxuKHZvaWQpCitpbnQJKGluc2VydGxuKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNuc3RyCi1pbnQJaW5zbnN0cigKK2ludAkoaW5zbnN0cikoCiAJCWNvbnN0IGNoYXIgKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc3N0cgotaW50CWluc3N0cigKK2ludAkoaW5zc3RyKSgKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zdHIKLWludAlpbnN0cigKK2ludAkoaW5zdHIpKAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtb3ZlCi1pbnQJbW92ZSgKK2ludAkobW92ZSkoCiAJCWludAlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZGNoCi1pbnQJbXZhZGRjaCgKK2ludAkobXZhZGRjaCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNodHlwZSB6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZGNobnN0cgotaW50CW12YWRkY2huc3RyKAoraW50CShtdmFkZGNobnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNodHlwZSAqYTMsIApAQCAtNTQ3LDE0ICs2NTcsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRjaHN0cgotaW50CW12YWRkY2hzdHIoCitpbnQJKG12YWRkY2hzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaHR5cGUgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12YWRkbnN0cgotaW50CW12YWRkbnN0cigKK2ludAkobXZhZGRuc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2hhciAqYTMsIApAQCAtNTYyLDE0ICs2NzIsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRzdHIKLWludAltdmFkZHN0cigKK2ludAkobXZhZGRzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaGFyICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmNoZ2F0Ci1pbnQJbXZjaGdhdCgKK2ludAkobXZjaGdhdCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC01NzksMTkgKzY4OSwxOSBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmRlbGNoCi1pbnQJbXZkZWxjaCgKK2ludAkobXZkZWxjaCkoCiAJCWludAlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmdldGNoCi1pbnQJbXZnZXRjaCgKK2ludAkobXZnZXRjaCkoCiAJCWludAlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmdldG5zdHIKLWludAltdmdldG5zdHIoCitpbnQJKG12Z2V0bnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNoYXIJKmEzLCAKQEAgLTU5OSwxNCArNzA5LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12Z2V0c3RyCi1pbnQJbXZnZXRzdHIoCitpbnQJKG12Z2V0c3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZobGluZQotaW50CW12aGxpbmUoCitpbnQJKG12aGxpbmUpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaHR5cGUJYTMsIApAQCAtNjE0LDEzICs3MjQsMTMgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbmNoCi1jaHR5cGUJbXZpbmNoKAorY2h0eXBlCShtdmluY2gpKAogCQlpbnQJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQogCiAjdW5kZWYgbXZpbmNobnN0cgotaW50CW12aW5jaG5zdHIoCitpbnQJKG12aW5jaG5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaHR5cGUJKmEzLCAKQEAgLTYyOCwxNCArNzM4LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5jaHN0cgotaW50CW12aW5jaHN0cigKK2ludAkobXZpbmNoc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2h0eXBlCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmlubnN0cgotaW50CW12aW5uc3RyKAoraW50CShtdmlubnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNoYXIJKmEzLCAKQEAgLTY0MywxNCArNzUzLDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zY2gKLWludAltdmluc2NoKAoraW50CShtdmluc2NoKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2h0eXBlCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zbnN0cgotaW50CW12aW5zbnN0cigKK2ludAkobXZpbnNuc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2hhciAqYTMsIApAQCAtNjU4LDIxICs3NjgsMjEgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbnNzdHIKLWludAltdmluc3N0cigKK2ludAkobXZpbnNzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaGFyICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluc3RyCi1pbnQJbXZpbnN0cigKK2ludAkobXZpbnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12dmxpbmUKLWludAltdnZsaW5lKAoraW50CShtdnZsaW5lKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2h0eXBlCWEzLCAKQEAgLTY4MCw3ICs3OTAsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRjaAotaW50CW12d2FkZGNoKAoraW50CShtdndhZGRjaCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNjg4LDcgKzc5OCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZGNobnN0cgotaW50CW12d2FkZGNobnN0cigKK2ludAkobXZ3YWRkY2huc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC02OTcsNyArODA3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkY2hzdHIKLWludAltdndhZGRjaHN0cigKK2ludAkobXZ3YWRkY2hzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTcwNSw3ICs4MTUsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRuc3RyCi1pbnQJbXZ3YWRkbnN0cigKK2ludAkobXZ3YWRkbnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzE0LDcgKzgyNCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZHN0cgotaW50CW12d2FkZHN0cigKK2ludAkobXZ3YWRkc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03MjIsNyArODMyLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3Y2hnYXQKLWludAltdndjaGdhdCgKK2ludAkobXZ3Y2hnYXQpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTczMywyMSArODQzLDIxIEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2RlbGNoCi1pbnQJbXZ3ZGVsY2goCitpbnQJKG12d2RlbGNoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndnZXRjaAotaW50CW12d2dldGNoKAoraW50CShtdndnZXRjaCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3Z2V0bnN0cgotaW50CW12d2dldG5zdHIoCitpbnQJKG12d2dldG5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTc1Niw3ICs4NjYsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndnZXRzdHIKLWludAltdndnZXRzdHIoCitpbnQJKG12d2dldHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzY0LDcgKzg3NCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2hsaW5lCi1pbnQJbXZ3aGxpbmUoCitpbnQJKG12d2hsaW5lKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03NzMsMTQgKzg4MywxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbmNoCi1jaHR5cGUJbXZ3aW5jaCgKK2NodHlwZQkobXZ3aW5jaCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5jaG5zdHIKLWludAltdndpbmNobnN0cigKK2ludAkobXZ3aW5jaG5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTc4OSw3ICs4OTksNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbmNoc3RyCi1pbnQJbXZ3aW5jaHN0cigKK2ludAkobXZ3aW5jaHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzk3LDcgKzkwNyw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2lubnN0cgotaW50CW12d2lubnN0cigKK2ludAkobXZ3aW5uc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04MDYsNyArOTE2LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5zY2gKLWludAltdndpbnNjaCgKK2ludAkobXZ3aW5zY2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgxNCw3ICs5MjQsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbnNuc3RyCi1pbnQJbXZ3aW5zbnN0cigKK2ludAkobXZ3aW5zbnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODIzLDcgKzkzMyw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luc3N0cgotaW50CW12d2luc3N0cigKK2ludAkobXZ3aW5zc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04MzEsNyArOTQxLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5zdHIKLWludAltdndpbnN0cigKK2ludAkobXZ3aW5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgzOSw3ICs5NDksNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdnd2bGluZQotaW50CW12d3ZsaW5lKAoraW50CShtdnd2bGluZSkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODQ4LDExNyArOTU4LDExNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBQQUlSX05VTUJFUgotaW50CVBBSVJfTlVNQkVSKAoraW50CShQQUlSX05VTUJFUikoCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiByZWRyYXd3aW4KLWludAlyZWRyYXd3aW4oCitpbnQJKHJlZHJhd3dpbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgcmVmcmVzaAotaW50CXJlZnJlc2godm9pZCkKK2ludAkocmVmcmVzaCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc2NybAotaW50CXNjcmwoCitpbnQJKHNjcmwpKAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc2Nyb2xsCi1pbnQJc2Nyb2xsKAoraW50CShzY3JvbGwpKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNldHNjcnJlZwotaW50CXNldHNjcnJlZygKK2ludAkoc2V0c2NycmVnKSgKIAkJaW50CWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHN0YW5kb3V0Ci1pbnQJc3RhbmRvdXQodm9pZCkKK2ludAkoc3RhbmRvdXQpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHN0YW5kZW5kCi1pbnQJc3RhbmRlbmQodm9pZCkKK2ludAkoc3RhbmRlbmQpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRpbWVvdXQKLXZvaWQJdGltZW91dCgKK3ZvaWQJKHRpbWVvdXQpKAogCQlpbnQJeikKIAkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIHRvdWNobGluZQotaW50CXRvdWNobGluZSgKK2ludAkodG91Y2hsaW5lKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB0b3VjaHdpbgotaW50CXRvdWNod2luKAoraW50CSh0b3VjaHdpbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdW50b3VjaHdpbgotaW50CXVudG91Y2h3aW4oCitpbnQJKHVudG91Y2h3aW4pKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZsaW5lCi1pbnQJdmxpbmUoCitpbnQJKHZsaW5lKSgKIAkJY2h0eXBlCWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZ3X3ByaW50dwotaW50CXZ3X3ByaW50dygKK2ludAkodndfcHJpbnR3KSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IGNoYXIgKmEyLCAKIAkJdmFfbGlzdAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB2d19zY2FudwotaW50CXZ3X3NjYW53KAoraW50CSh2d19zY2FudykoCiAJCVdJTkRPVwkqYTEsIAotCQljaGFyCSphMiwgCisJCWNvbnN0IGNoYXIgKmEyLCAKIAkJdmFfbGlzdAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YWRkY2hzdHIKLWludAl3YWRkY2hzdHIoCitpbnQJKHdhZGRjaHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljb25zdCBjaHR5cGUgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhZGRzdHIKLWludAl3YWRkc3RyKAoraW50CSh3YWRkc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhdHRyb24KLWludAl3YXR0cm9uKAoraW50CSh3YXR0cm9uKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YXR0cm9mZgotaW50CXdhdHRyb2ZmKAoraW50CSh3YXR0cm9mZikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2F0dHJzZXQKLWludAl3YXR0cnNldCgKK2ludAkod2F0dHJzZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhdHRyX2dldAotaW50CXdhdHRyX2dldCgKK2ludAkod2F0dHJfZ2V0KSgKIAkJV0lORE9XCSphMSwgCiAJCWF0dHJfdAkqYTIsIAogCQlzaG9ydAkqYTMsIApAQCAtOTY2LDcgKzEwNzYsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YXR0cl9zZXQKLWludAl3YXR0cl9zZXQoCitpbnQJKHdhdHRyX3NldCkoCiAJCVdJTkRPVwkqYTEsIAogCQlhdHRyX3QJYTIsIAogCQlzaG9ydAlhMywgCkBAIC05NzQsMTU4ICsxMDg0LDE3MyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3ZGVsZXRlbG4KLWludAl3ZGVsZXRlbG4oCitpbnQJKHdkZWxldGVsbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2dldHN0cgotaW50CXdnZXRzdHIoCitpbnQJKHdnZXRzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2luY2hzdHIKLWludAl3aW5jaHN0cigKK2ludAkod2luY2hzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY2h0eXBlCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3aW5zZXJ0bG4KLWludAl3aW5zZXJ0bG4oCitpbnQJKHdpbnNlcnRsbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2luc3N0cgotaW50CXdpbnNzdHIoCitpbnQJKHdpbnNzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2luc3RyCi1pbnQJd2luc3RyKAoraW50CSh3aW5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd3N0YW5kb3V0Ci1pbnQJd3N0YW5kb3V0KAoraW50CSh3c3RhbmRvdXQpKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdzdGFuZGVuZAotaW50CXdzdGFuZGVuZCgKK2ludAkod3N0YW5kZW5kKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRhdHRycwotaW50CWdldGF0dHJzKAoraW50CShnZXRhdHRycykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0Y3VyeAotaW50CWdldGN1cngoCitpbnQJKGdldGN1cngpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGN1cnkKLWludAlnZXRjdXJ5KAoraW50CShnZXRjdXJ5KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRiZWd4Ci1pbnQJZ2V0YmVneCgKK2ludAkoZ2V0YmVneCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0YmVneQotaW50CWdldGJlZ3koCitpbnQJKGdldGJlZ3kpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldG1heHgKLWludAlnZXRtYXh4KAoraW50CShnZXRtYXh4KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRtYXh5Ci1pbnQJZ2V0bWF4eSgKK2ludAkoZ2V0bWF4eSkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0cGFyeAotaW50CWdldHBhcngoCitpbnQJKGdldHBhcngpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldHBhcnkKLWludAlnZXRwYXJ5KAoraW50CShnZXRwYXJ5KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3Z2V0cGFyZW50Ci1XSU5ET1cJKndnZXRwYXJlbnQoCitXSU5ET1cJKih3Z2V0cGFyZW50KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQogCiAjdW5kZWYgaXNfY2xlYXJlZAotTkNVUlNFU19CT09MIGlzX2NsZWFyZWQoCitOQ1VSU0VTX0JPT0wgKGlzX2NsZWFyZWQpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX2lkY29rCi1OQ1VSU0VTX0JPT0wgaXNfaWRjb2soCitOQ1VSU0VTX0JPT0wgKGlzX2lkY29rKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19pZGxvawotTkNVUlNFU19CT09MIGlzX2lkbG9rKAorTkNVUlNFU19CT09MIChpc19pZGxvaykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfaW1tZWRvawotTkNVUlNFU19CT09MIGlzX2ltbWVkb2soCitOQ1VSU0VTX0JPT0wgKGlzX2ltbWVkb2spKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX2tleXBhZAotTkNVUlNFU19CT09MIGlzX2tleXBhZCgKK05DVVJTRVNfQk9PTCAoaXNfa2V5cGFkKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19sZWF2ZW9rCi1OQ1VSU0VTX0JPT0wgaXNfbGVhdmVvaygKK05DVVJTRVNfQk9PTCAoaXNfbGVhdmVvaykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfbm9kZWxheQotTkNVUlNFU19CT09MIGlzX25vZGVsYXkoCitOQ1VSU0VTX0JPT0wgKGlzX25vZGVsYXkpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX25vdGltZW91dAotTkNVUlNFU19CT09MIGlzX25vdGltZW91dCgKK05DVVJTRVNfQk9PTCAoaXNfbm90aW1lb3V0KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19wYWQKK05DVVJTRVNfQk9PTCAoaXNfcGFkKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19zY3JvbGxvawotTkNVUlNFU19CT09MIGlzX3Njcm9sbG9rKAorTkNVUlNFU19CT09MIChpc19zY3JvbGxvaykoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfc3Vid2luCitOQ1VSU0VTX0JPT0wgKGlzX3N1YndpbikoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfc3luY29rCi1OQ1VSU0VTX0JPT0wgaXNfc3luY29rKAorTkNVUlNFU19CT09MIChpc19zeW5jb2spKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIHdnZXRkZWxheQoraW50CSh3Z2V0ZGVsYXkpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHdnZXRzY3JyZWcKLWludAl3Z2V0c2NycmVnKAoraW50CSh3Z2V0c2NycmVnKSgKIAkJY29uc3QgV0lORE9XICphMSwgCiAJCWludAkqYTIsIAogCQlpbnQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG1vdXNlX3RyYWZvCi1OQ1VSU0VTX0JPT0wgbW91c2VfdHJhZm8oCitOQ1VSU0VTX0JPT0wgKG1vdXNlX3RyYWZvKSgKIAkJaW50CSphMSwgCiAJCWludAkqYTIsIAogCQlOQ1VSU0VTX0JPT0wgeikKQEAgLTExMzMsMjAgKzEyNTgsMzMgQEAKIAogLyogLi9iYXNlL2xpYl9nZXRjaC5jICovCiAKLSNpbmNsdWRlIDxmaWZvX2RlZnMuaD4KLQogI3VuZGVmIEVTQ0RFTEFZCiBpbnQJRVNDREVMQVk7CiAKKyN1bmRlZiBzZXRfZXNjZGVsYXlfc3AKK2ludAlzZXRfZXNjZGVsYXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNldF9lc2NkZWxheQogaW50CXNldF9lc2NkZWxheSgKIAkJaW50CXZhbHVlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBnZXRfZXNjZGVsYXlfc3AKK2ludAlnZXRfZXNjZGVsYXlfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldF9lc2NkZWxheQoraW50CWdldF9lc2NkZWxheSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfd2dldGNoCiBpbnQJX25jX3dnZXRjaCgKIAkJV0lORE9XCSp3aW4sIAotCQl1bnNpZ25lZCBsb25nICpyZXN1bHQsIAorCQlpbnQJKnJlc3VsdCwgCiAJCWludAl1c2VfbWV0YSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCkBAIC0xMjAwLDYgKzEzMzgsNyBAQAogCiAjdW5kZWYgX25jX2luc2VydF9jaAogaW50CV9uY19pbnNlcnRfY2goCisJCVNDUkVFTgkqc3AsIAogCQlXSU5ET1cJKndpbiwgCiAJCWNodHlwZQljaCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMTIzOCw2ICsxMzc3LDExIEBACiAKIC8qIC4vYmFzZS9saWJfaXNlbmR3aW4uYyAqLwogCisjdW5kZWYgaXNlbmR3aW5fc3AKK05DVVJTRVNfQk9PTCBpc2VuZHdpbl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaXNlbmR3aW4KIE5DVVJTRVNfQk9PTCBpc2VuZHdpbih2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CkBAIC0xMjUyLDE2ICsxMzk2LDM1IEBACiAKIC8qIC4vYmFzZS9saWJfbW91c2UuYyAqLwogCisjdW5kZWYgZ2V0bW91c2Vfc3AKK2ludAlnZXRtb3VzZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCU1FVkVOVAkqYWV2ZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBnZXRtb3VzZQogaW50CWdldG1vdXNlKAogCQlNRVZFTlQJKmFldmVudCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdW5nZXRtb3VzZV9zcAoraW50CXVuZ2V0bW91c2Vfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlNRVZFTlQJKmFldmVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdW5nZXRtb3VzZQogaW50CXVuZ2V0bW91c2UoCiAJCU1FVkVOVAkqYWV2ZW50KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBtb3VzZW1hc2tfc3AKK21tYXNrX3QJbW91c2VtYXNrX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAluZXdtYXNrLCAKKwkJbW1hc2tfdAkqb2xkbWFzaykKKwkJeyByZXR1cm4oKihtbWFza190ICopMCk7IH0KKwogI3VuZGVmIG1vdXNlbWFzawogbW1hc2tfdAltb3VzZW1hc2soCiAJCW1tYXNrX3QJbmV3bWFzaywgCkBAIC0xMjc1LDE0ICsxNDM4LDMwIEBACiAJCWludAl4KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiBtb3VzZWludGVydmFsX3NwCitpbnQJbW91c2VpbnRlcnZhbF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltYXhjbGljaykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbW91c2VpbnRlcnZhbAogaW50CW1vdXNlaW50ZXJ2YWwoCiAJCWludAltYXhjbGljaykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgX25jX2hhc19tb3VzZQotaW50CV9uY19oYXNfbW91c2Uodm9pZCkKLQkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorTkNVUlNFU19CT09MIF9uY19oYXNfbW91c2UoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGhhc19tb3VzZV9zcAorTkNVUlNFU19CT09MIGhhc19tb3VzZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX21vdXNlCitOQ1VSU0VTX0JPT0wgaGFzX21vdXNlKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIHdtb3VzZV90cmFmbwogTkNVUlNFU19CT09MIHdtb3VzZV90cmFmbygKQEAgLTEzMDMsMjQgKzE0ODIsNzIgQEAKIAogLyogLi90dHkvbGliX212Y3VyLmMgKi8KIAorI3VuZGVmIF9uY19tc2VjX2Nvc3Rfc3AKK2ludAlfbmNfbXNlY19jb3N0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqY29uc3QgY2FwLCAKKwkJaW50CWFmZmNudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX21zZWNfY29zdAogaW50CV9uY19tc2VjX2Nvc3QoCiAJCWNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgCiAJCWludAlhZmZjbnQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19tdmN1cl9yZXN1bWVfc3AKK3ZvaWQJX25jX212Y3VyX3Jlc3VtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19tdmN1cl9yZXN1bWUKIHZvaWQJX25jX212Y3VyX3Jlc3VtZSh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX212Y3VyX2luaXRfc3AKK3ZvaWQJX25jX212Y3VyX2luaXRfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfbXZjdXJfaW5pdAogdm9pZAlfbmNfbXZjdXJfaW5pdCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX212Y3VyX3dyYXBfc3AKK3ZvaWQJX25jX212Y3VyX3dyYXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfbXZjdXJfd3JhcAogdm9pZAlfbmNfbXZjdXJfd3JhcCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX212Y3VyX3NwCitpbnQJX25jX212Y3VyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXlvbGQsIAorCQlpbnQJeG9sZCwgCisJCWludAl5bmV3LCAKKwkJaW50CXhuZXcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19tdmN1cgoraW50CV9uY19tdmN1cigKKwkJaW50CXlvbGQsIAorCQlpbnQJeG9sZCwgCisJCWludAl5bmV3LCAKKwkJaW50CXhuZXcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12Y3VyX3NwCitpbnQJbXZjdXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJeW9sZCwgCisJCWludAl4b2xkLCAKKwkJaW50CXluZXcsIAorCQlpbnQJeG5ldykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbXZjdXIKIGludAltdmN1cigKIAkJaW50CXlvbGQsIApAQCAtMTM0MywxNyArMTU3MCwzNSBAQAogCiAvKiAuL2Jhc2UvbGliX25ld3Rlcm0uYyAqLwogCisjdW5kZWYgZmlsdGVyX3NwCit2b2lkCWZpbHRlcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIGZpbHRlcgogdm9pZAlmaWx0ZXIodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIG5vZmlsdGVyX3NwCit2b2lkCW5vZmlsdGVyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgbm9maWx0ZXIKIHZvaWQJbm9maWx0ZXIodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIG5ld3Rlcm1fc3AKK1NDUkVFTgkqbmV3dGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlGSUxFCSpvZnAsIAorCQlGSUxFCSppZnApCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKICN1bmRlZiBuZXd0ZXJtCiBTQ1JFRU4JKm5ld3Rlcm0oCi0JCWNoYXIJKm5hbWUsIAorCQljb25zdCBjaGFyICpuYW1lLCAKIAkJRklMRQkqb2ZwLCAKIAkJRklMRQkqaWZwKQogCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQpAQCAtMTM2NSw2ICsxNjEwLDE1IEBACiAJCVdJTkRPVwkqd2luKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBuZXd3aW5fc3AKK1dJTkRPVwkqbmV3d2luX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW51bV9saW5lcywgCisJCWludAludW1fY29sdW1ucywgCisJCWludAliZWd5LCAKKwkJaW50CWJlZ3gpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKICN1bmRlZiBuZXd3aW4KIFdJTkRPVwkqbmV3d2luKAogCQlpbnQJbnVtX2xpbmVzLCAKQEAgLTEzOTEsOCArMTY0NSw5IEBACiAJCWludAl4KQogCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQogCi0jdW5kZWYgX25jX21ha2VuZXcKLVdJTkRPVwkqX25jX21ha2VuZXcoCisjdW5kZWYgX25jX21ha2VuZXdfc3AKK1dJTkRPVwkqX25jX21ha2VuZXdfc3AoCisJCVNDUkVFTgkqc3AsIAogCQlpbnQJbnVtX2xpbmVzLCAKIAkJaW50CW51bV9jb2x1bW5zLCAKIAkJaW50CWJlZ3ksIApAQCAtMTQwMCwxNyArMTY1NSwzNyBAQAogCQlpbnQJZmxhZ3MpCiAJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CiAKLSN1bmRlZiBfbmNfc2NyZWVuX29mCi1TQ1JFRU4JKl9uY19zY3JlZW5fb2YoCi0JCVdJTkRPVwkqd2luKQotCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQorI3VuZGVmIF9uY19jdXJzY3Jfb2YKK1dJTkRPVwkqX25jX2N1cnNjcl9vZigKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY19uZXdzY3Jfb2YKK1dJTkRPVwkqX25jX25ld3Njcl9vZigKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdGRzY3Jfb2YKK1dJTkRPVwkqX25jX3N0ZHNjcl9vZigKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9ubC5jICovCiAKKyN1bmRlZiBubF9zcAoraW50CW5sX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBubAogaW50CW5sKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG5vbmxfc3AKK2ludAlub25sX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBub25sCiBpbnQJbm9ubCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xNDQ0LDYgKzE3MTksMTMgQEAKIAogLyogLi9iYXNlL2xpYl9wYWQuYyAqLwogCisjdW5kZWYgbmV3cGFkX3NwCitXSU5ET1cJKm5ld3BhZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlsLCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKICN1bmRlZiBuZXdwYWQKIFdJTkRPVwkqbmV3cGFkKAogCQlpbnQJbCwgCkBAIC0xNTQ5LDkgKzE4MzEsMTcgQEAKIAogLyogLi9iYXNlL2xpYl9yZXN0YXJ0LmMgKi8KIAorI3VuZGVmIHJlc3RhcnR0ZXJtX3NwCitpbnQJcmVzdGFydHRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICp0ZXJtcCwgCisJCWludAlmaWxlbnVtLCAKKwkJaW50CSplcnJyZXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJlc3RhcnR0ZXJtCiBpbnQJcmVzdGFydHRlcm0oCi0JCWNoYXIJKnRlcm1wLCAKKwkJY29uc3QgY2hhciAqdGVybXAsIAogCQlpbnQJZmlsZW51bSwgCiAJCWludAkqZXJycmV0KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xNTYxLDIwICsxODUxLDIwIEBACiAjdW5kZWYgdndzY2FudwogaW50CXZ3c2NhbncoCiAJCVdJTkRPVwkqd2luLCAKLQkJY2hhcgkqZm10LCAKKwkJY29uc3QgY2hhciAqZm10LCAKIAkJdmFfbGlzdAlhcmdwKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBzY2FudwogaW50CXNjYW53KAotCQljaGFyCSpmbXQsIAorCQljb25zdCBjaGFyICpmbXQsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdzY2FudwogaW50CXdzY2FudygKIAkJV0lORE9XCSp3aW4sIAotCQljaGFyCSpmbXQsIAorCQljb25zdCBjaGFyICpmbXQsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIApAQCAtMTU4Miw3ICsxODcyLDcgQEAKIGludAltdnNjYW53KAogCQlpbnQJeSwgCiAJCWludAl4LCAKLQkJY2hhcgkqZm10LCAKKwkJY29uc3QgY2hhciAqZm10LCAKIAkJLi4uKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKQEAgLTE1OTEsMTIgKzE4ODEsMTggQEAKIAkJV0lORE9XCSp3aW4sIAogCQlpbnQJeSwgCiAJCWludAl4LCAKLQkJY2hhcgkqZm10LCAKKwkJY29uc3QgY2hhciAqZm10LCAKIAkJLi4uKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfc2NyZWVuLmMgKi8KIAorI3VuZGVmIGdldHdpbl9zcAorV0lORE9XCSpnZXR3aW5fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlGSUxFCSpmaWxlcCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKwogI3VuZGVmIGdldHdpbgogV0lORE9XCSpnZXR3aW4oCiAJCUZJTEUJKmZpbGVwKQpAQCAtMTYwOCw2ICsxOTA0LDEyIEBACiAJCUZJTEUJKmZpbGVwKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzY3JfcmVzdG9yZV9zcAoraW50CXNjcl9yZXN0b3JlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2NyX3Jlc3RvcmUKIGludAlzY3JfcmVzdG9yZSgKIAkJY29uc3QgY2hhciAqZmlsZSkKQEAgLTE2MTgsMTEgKzE5MjAsMjMgQEAKIAkJY29uc3QgY2hhciAqZmlsZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgc2NyX2luaXRfc3AKK2ludAlzY3JfaW5pdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmZpbGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNjcl9pbml0CiBpbnQJc2NyX2luaXQoCiAJCWNvbnN0IGNoYXIgKmZpbGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNjcl9zZXRfc3AKK2ludAlzY3Jfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2NyX3NldAogaW50CXNjcl9zZXQoCiAJCWNvbnN0IGNoYXIgKmZpbGUpCkBAIC0xNjM0LDggKzE5NDgsOCBAQAogdm9pZAlfbmNfc2Nyb2xsX3dpbmRvdygKIAkJV0lORE9XCSp3aW4sIAogCQlpbnQgY29uc3QgbiwgCi0JCXNob3J0IGNvbnN0IHRvcCwgCi0JCXNob3J0IGNvbnN0IGJvdHRvbSwgCisJCWludCBjb25zdCB0b3AsIAorCQlpbnQgY29uc3QgYm90dG9tLCAKIAkJY2h0eXBlCWJsYW5rKQogCQl7IC8qIHZvaWQgKi8gfQogCkBAIC0xNjc0LDE1ICsxOTg4LDM0IEBACiAJCVNDUkVFTgkqc3ApCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfc2V0dXBzY3JlZW5fc3AKK2ludAlfbmNfc2V0dXBzY3JlZW5fc3AoCisJCVNDUkVFTgkqKnNwcCwgCisJCWludAlzbGluZXMsIAorCQlpbnQJc2NvbHVtbnMsIAorCQlGSUxFCSpvdXRwdXQsIAorCQlpbnQJZmlsdGVyZWQsIAorCQlpbnQJc2xrX2Zvcm1hdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3NldHVwc2NyZWVuCiBpbnQJX25jX3NldHVwc2NyZWVuKAogCQlpbnQJc2xpbmVzLCAKIAkJaW50CXNjb2x1bW5zLCAKIAkJRklMRQkqb3V0cHV0LCAKLQkJTkNVUlNFU19CT09MIGZpbHRlcmVkLCAKKwkJaW50CWZpbHRlcmVkLCAKIAkJaW50CXNsa19mb3JtYXQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19yaXBvZmZsaW5lX3NwCitpbnQJX25jX3JpcG9mZmxpbmVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbGluZSwgCisJCWludAkoKmluaXQpKAorCQlXSU5ET1cJKnAxLCAKKwkJaW50CXAyKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3JpcG9mZmxpbmUKIGludAlfbmNfcmlwb2ZmbGluZSgKIAkJaW50CWxpbmUsIApAQCAtMTY5MSw2ICsyMDI0LDE1IEBACiAJCWludAlwMikpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHJpcG9mZmxpbmVfc3AKK2ludAlyaXBvZmZsaW5lX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWxpbmUsIAorCQlpbnQJKCppbml0KSgKKwkJV0lORE9XCSpwMSwgCisJCWludAlwMikpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJpcG9mZmxpbmUKIGludAlyaXBvZmZsaW5lKAogCQlpbnQJbGluZSwgCkBAIC0xNzAxLDE4ICsyMDQzLDM3IEBACiAKIC8qIC4vYmFzZS9saWJfc2xrLmMgKi8KIAorI3VuZGVmIF9uY19mb3JtYXRfc2xrcworaW50CV9uY19mb3JtYXRfc2xrcygKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2xrX2luaXRpYWxpemUKIGludAlfbmNfc2xrX2luaXRpYWxpemUoCiAJCVdJTkRPVwkqc3R3aW4sIAogCQlpbnQJY29scykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgc2xrX3Jlc3RvcmVfc3AKK2ludAlzbGtfcmVzdG9yZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX3Jlc3RvcmUKIGludAlzbGtfcmVzdG9yZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfc2xrYXRyX3NldC5jICovCiAKKyN1bmRlZiBzbGtfYXR0cl9zZXRfc3AKK2ludAlzbGtfYXR0cl9zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBhdHRyX3QgYXR0ciwgCisJCXNob3J0CWNvbG9yX3BhaXJfbnVtYmVyLCAKKwkJdm9pZAkqb3B0cykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2F0dHJfc2V0CiBpbnQJc2xrX2F0dHJfc2V0KAogCQljb25zdCBhdHRyX3QgYXR0ciwgCkBAIC0xNzIyLDYgKzIwODMsMTIgQEAKIAogLyogLi9iYXNlL2xpYl9zbGthdHJvZi5jICovCiAKKyN1bmRlZiBzbGtfYXR0cm9mZl9zcAoraW50CXNsa19hdHRyb2ZmX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2h0eXBlIGF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19hdHRyb2ZmCiBpbnQJc2xrX2F0dHJvZmYoCiAJCWNvbnN0IGNodHlwZSBhdHRyKQpAQCAtMTcyOSw2ICsyMDk2LDEyIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrYXRyb24uYyAqLwogCisjdW5kZWYgc2xrX2F0dHJvbl9zcAoraW50CXNsa19hdHRyb25fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaHR5cGUgYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2F0dHJvbgogaW50CXNsa19hdHRyb24oCiAJCWNvbnN0IGNodHlwZSBhdHRyKQpAQCAtMTczNiw2ICsyMTA5LDEyIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrYXRyc2V0LmMgKi8KIAorI3VuZGVmIHNsa19hdHRyc2V0X3NwCitpbnQJc2xrX2F0dHJzZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaHR5cGUgYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2F0dHJzZXQKIGludAlzbGtfYXR0cnNldCgKIAkJY29uc3QgY2h0eXBlIGF0dHIpCkBAIC0xNzQzLDE4ICsyMTIyLDM0IEBACiAKIC8qIC4vYmFzZS9saWJfc2xrYXR0ci5jICovCiAKKyN1bmRlZiBzbGtfYXR0cl9zcAorYXR0cl90CXNsa19hdHRyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKICN1bmRlZiBzbGtfYXR0cgogYXR0cl90CXNsa19hdHRyKHZvaWQpCiAJCXsgcmV0dXJuKCooYXR0cl90ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9zbGtjbGVhci5jICovCiAKKyN1bmRlZiBzbGtfY2xlYXJfc3AKK2ludAlzbGtfY2xlYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19jbGVhcgogaW50CXNsa19jbGVhcih2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfc2xrY29sb3IuYyAqLwogCisjdW5kZWYgc2xrX2NvbG9yX3NwCitpbnQJc2xrX2NvbG9yX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJY29sb3JfcGFpcl9udW1iZXIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19jb2xvcgogaW50CXNsa19jb2xvcigKIAkJc2hvcnQJY29sb3JfcGFpcl9udW1iZXIpCkBAIC0xNzYyLDYgKzIxNTcsMTIgQEAKIAogLyogLi9iYXNlL2xpYl9zbGtpbml0LmMgKi8KIAorI3VuZGVmIHNsa19pbml0X3NwCitpbnQJc2xrX2luaXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJZm9ybWF0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfaW5pdAogaW50CXNsa19pbml0KAogCQlpbnQJZm9ybWF0KQpAQCAtMTc2OSw2ICsyMTcwLDEyIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrbGFiLmMgKi8KIAorI3VuZGVmIHNsa19sYWJlbF9zcAorY2hhcgkqc2xrX2xhYmVsX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgc2xrX2xhYmVsCiBjaGFyCSpzbGtfbGFiZWwoCiAJCWludAluKQpAQCAtMTc3NiwxNiArMjE4MywzNCBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa3JlZnIuYyAqLwogCisjdW5kZWYgc2xrX25vdXRyZWZyZXNoX3NwCitpbnQJc2xrX25vdXRyZWZyZXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfbm91dHJlZnJlc2gKIGludAlzbGtfbm91dHJlZnJlc2godm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgc2xrX3JlZnJlc2hfc3AKK2ludAlzbGtfcmVmcmVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX3JlZnJlc2gKIGludAlzbGtfcmVmcmVzaCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfc2xrc2V0LmMgKi8KIAorI3VuZGVmIHNsa19zZXRfc3AKK2ludAlzbGtfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWksIAorCQljb25zdCBjaGFyICphc3RyLCAKKwkJaW50CWZvcm1hdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX3NldAogaW50CXNsa19zZXQoCiAJCWludAlpLCAKQEAgLTE3OTUsNiArMjIyMCwxMSBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa3RvdWNoLmMgKi8KIAorI3VuZGVmIHNsa190b3VjaF9zcAoraW50CXNsa190b3VjaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX3RvdWNoCiBpbnQJc2xrX3RvdWNoKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTE4MzAsMTIgKzIyNjAsMjQgQEAKIAogLyogLi90cmFjZS9saWJfdHJhY2Vtc2UuYyAqLwogCisjdW5kZWYgX25jX3RyYWNlX21tYXNrX3QKK2NoYXIJKl9uY190cmFjZV9tbWFza190KAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAljb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIF9uY190cmFjZW1vdXNlCiBjaGFyCSpfbmNfdHJhY2Vtb3VzZSgKIAkJU0NSRUVOCSpzcCwgCiAJCU1FVkVOVCBjb25zdCAqZXApCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCisjdW5kZWYgX25jX3JldHJhY2VfbW1hc2tfdAorbW1hc2tfdAlfbmNfcmV0cmFjZV9tbWFza190KAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAljb2RlKQorCQl7IHJldHVybigqKG1tYXNrX3QgKikwKTsgfQorCiAjdW5kZWYgX3RyYWNlbW91c2UKIGNoYXIJKl90cmFjZW1vdXNlKAogCQlNRVZFTlQgY29uc3QgKmVwKQpAQCAtMTg0MywxMSArMjI4NSw5IEBACiAKIC8qIC4vdHR5L2xpYl90c3RwLmMgKi8KIAotI2luY2x1ZGUgPFNpZ0FjdGlvbi5oPgotCiAjdW5kZWYgX25jX3NpZ25hbF9oYW5kbGVyCiB2b2lkCV9uY19zaWduYWxfaGFuZGxlcigKLQkJTkNVUlNFU19CT09MIGVuYWJsZSkKKwkJaW50CWVuYWJsZSkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi9iYXNlL2xpYl91bmdldGNoLmMgKi8KQEAgLTE4NTcsOCArMjI5Nyw4IEBACiAJCVNDUkVFTgkqc3ApCiAJCXsgLyogdm9pZCAqLyB9CiAKLSN1bmRlZiBfbmNfdW5nZXRjaAotaW50CV9uY191bmdldGNoKAorI3VuZGVmIHVuZ2V0Y2hfc3AKK2ludAl1bmdldGNoX3NwKAogCQlTQ1JFRU4JKnNwLCAKIAkJaW50CWNoKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xODcwLDExICsyMzEwLDIzIEBACiAKIC8qIC4vdHR5L2xpYl92aWRhdHRyLmMgKi8KIAorI3VuZGVmIHZpZHB1dHNfc3AKK2ludAl2aWRwdXRzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCW5ld21vZGUsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdmlkcHV0cwogaW50CXZpZHB1dHMoCiAJCWNodHlwZQluZXdtb2RlLCAKLQkJaW50CSgqb3V0YykoCi0JCWludAlwMSkpCisJCU5DVVJTRVNfT1VUQyBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB2aWRhdHRyX3NwCitpbnQJdmlkYXR0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNodHlwZQluZXdtb2RlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB2aWRhdHRyCkBAIC0xODgyLDYgKzIzMzQsMTEgQEAKIAkJY2h0eXBlCW5ld21vZGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHRlcm1hdHRyc19zcAorY2h0eXBlCXRlcm1hdHRyc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCiAjdW5kZWYgdGVybWF0dHJzCiBjaHR5cGUJdGVybWF0dHJzKHZvaWQpCiAJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KQEAgLTE5NjIsMTIgKzI0MTksMjQgQEAKIAogLyogLi9iYXNlL25jX3BhbmVsLmMgKi8KIAorI3VuZGVmIF9uY19wYW5lbGhvb2tfc3AKK3N0cnVjdCBwYW5lbGhvb2sgKl9uY19wYW5lbGhvb2tfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooc3RydWN0IHBhbmVsaG9vayAqKikwKTsgfQorCiAjdW5kZWYgX25jX3BhbmVsaG9vawogc3RydWN0IHBhbmVsaG9vayAqX25jX3BhbmVsaG9vayh2b2lkKQogCQl7IHJldHVybigqKHN0cnVjdCBwYW5lbGhvb2sgKiopMCk7IH0KIAogLyogLi9iYXNlL3NhZmVfc3ByaW50Zi5jICovCiAKKyN1bmRlZiBfbmNfcHJpbnRmX3N0cmluZ19zcAorY2hhcgkqX25jX3ByaW50Zl9zdHJpbmdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpmbXQsIAorCQl2YV9saXN0CWFwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIF9uY19wcmludGZfc3RyaW5nCiBjaGFyCSpfbmNfcHJpbnRmX3N0cmluZygKIAkJY29uc3QgY2hhciAqZm10LCAKQEAgLTE5NzYsMTMgKzI0NDUsMjQgQEAKIAogLyogLi90dHkvdHR5X3VwZGF0ZS5jICovCiAKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2luY2x1ZGUgPHN5cy90aW1lcy5oPgorI3VuZGVmIGRvdXBkYXRlX3NwCitpbnQJZG91cGRhdGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGRvdXBkYXRlCiBpbnQJZG91cGRhdGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3Njcm9sbG5fc3AKK2ludAlfbmNfc2Nyb2xsbl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAluLCAKKwkJaW50CXRvcCwgCisJCWludAlib3QsIAorCQlpbnQJbWF4eSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3Njcm9sbG4KIGludAlfbmNfc2Nyb2xsbigKIAkJaW50CW4sIApAQCAtMTk5MSwxOCArMjQ3MSwzOSBAQAogCQlpbnQJbWF4eSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3NjcmVlbl9yZXN1bWVfc3AKK3ZvaWQJX25jX3NjcmVlbl9yZXN1bWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfc2NyZWVuX3Jlc3VtZQogdm9pZAlfbmNfc2NyZWVuX3Jlc3VtZSh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX3NjcmVlbl9pbml0X3NwCit2b2lkCV9uY19zY3JlZW5faW5pdF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JlZW5faW5pdAogdm9pZAlfbmNfc2NyZWVuX2luaXQodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zY3JlZW5fd3JhcF9zcAordm9pZAlfbmNfc2NyZWVuX3dyYXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfc2NyZWVuX3dyYXAKIHZvaWQJX25jX3NjcmVlbl93cmFwKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfZG9feG1jX2dsaXRjaF9zcAordm9pZAlfbmNfZG9feG1jX2dsaXRjaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWF0dHJfdAlwcmV2aW91cykKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19kb194bWNfZ2xpdGNoCiB2b2lkCV9uY19kb194bWNfZ2xpdGNoKAogCQlhdHRyX3QJcHJldmlvdXMpCkBAIC0yMDIwLDEyICsyNTIxLDYgQEAKIAkJdmFfbGlzdAlhcCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKLS8qIC4vYmFzZS9tZW1tb3ZlLmMgKi8KLQotI3VuZGVmIF9uY19tZW1tb3ZlCi12b2lkCV9uY19tZW1tb3ZlKHZvaWQpCi0JCXsgLyogdm9pZCAqLyB9Ci0KIC8qIC4vYmFzZS92c3NjYW5mLmMgKi8KIAogI3VuZGVmIF9uY192c3NjYW5mCkBAIC0yMDM0LDEyICsyNTI5LDE2IEBACiAKIC8qIC4vYmFzZS9saWJfZnJlZWFsbC5jICovCiAKLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+Ci0KICN1bmRlZiBfbmNfZnJlZWFsbAogdm9pZAlfbmNfZnJlZWFsbCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX2ZyZWVfYW5kX2V4aXRfc3AKK3ZvaWQJX25jX2ZyZWVfYW5kX2V4aXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29kZSkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19mcmVlX2FuZF9leGl0CiB2b2lkCV9uY19mcmVlX2FuZF9leGl0KAogCQlpbnQJY29kZSkKQEAgLTIwNTksNiArMjU1OCwyNCBAQAogCQlhdHRyX3QJYXQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfRGVsQ2hhckNvc3Rfc3AKK2ludAlfbmNfRGVsQ2hhckNvc3Rfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY291bnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19JbnNDaGFyQ29zdF9zcAoraW50CV9uY19JbnNDaGFyQ29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX1VwZGF0ZUF0dHJzX3NwCit2b2lkCV9uY19VcGRhdGVBdHRyc19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNodHlwZQljKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX0RlbENoYXJDb3N0CiBpbnQJX25jX0RlbENoYXJDb3N0KAogCQlpbnQJY291bnQpCkBAIC0yMDc2LDYgKzI1OTMsMTIgQEAKIAogLyogLi9iYXNlL2xlZ2FjeV9jb2RpbmcuYyAqLwogCisjdW5kZWYgdXNlX2xlZ2FjeV9jb2Rpbmdfc3AKK2ludAl1c2VfbGVnYWN5X2NvZGluZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlsZXZlbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdXNlX2xlZ2FjeV9jb2RpbmcKIGludAl1c2VfbGVnYWN5X2NvZGluZygKIAkJaW50CWxldmVsKQpAQCAtMjA4MywxMCArMjYwNiwyMiBAQAogCiAvKiAuL2Jhc2UvbGliX2RmdF9mZ2JnLmMgKi8KIAorI3VuZGVmIHVzZV9kZWZhdWx0X2NvbG9yc19zcAoraW50CXVzZV9kZWZhdWx0X2NvbG9yc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdXNlX2RlZmF1bHRfY29sb3JzCiBpbnQJdXNlX2RlZmF1bHRfY29sb3JzKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGFzc3VtZV9kZWZhdWx0X2NvbG9yc19zcAoraW50CWFzc3VtZV9kZWZhdWx0X2NvbG9yc19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmZywgCisJCWludAliZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgYXNzdW1lX2RlZmF1bHRfY29sb3JzCiBpbnQJYXNzdW1lX2RlZmF1bHRfY29sb3JzKAogCQlpbnQJZmcsIApAQCAtMjA5NSw2ICsyNjMwLDEzIEBACiAKIC8qIC4vdGluZm8vbGliX3ByaW50LmMgKi8KIAorI3VuZGVmIG1jcHJpbnRfc3AKK2ludAltY3ByaW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2hhcgkqZGF0YSwgCisJCWludAlsZW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG1jcHJpbnQKIGludAltY3ByaW50KAogCQljaGFyCSpkYXRhLCAKQEAgLTIxMDMsMTggKzI2NDUsMzkgQEAKIAogLyogLi9iYXNlL3Jlc2l6ZXRlcm0uYyAqLwogCisjdW5kZWYgaXNfdGVybV9yZXNpemVkX3NwCitOQ1VSU0VTX0JPT0wgaXNfdGVybV9yZXNpemVkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKICN1bmRlZiBpc190ZXJtX3Jlc2l6ZWQKIE5DVVJTRVNfQk9PTCBpc190ZXJtX3Jlc2l6ZWQoCiAJCWludAlUb0xpbmVzLCAKIAkJaW50CVRvQ29scykKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgcmVzaXplX3Rlcm1fc3AKK2ludAlyZXNpemVfdGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzaXplX3Rlcm0KIGludAlyZXNpemVfdGVybSgKIAkJaW50CVRvTGluZXMsIAogCQlpbnQJVG9Db2xzKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiByZXNpemV0ZXJtX3NwCitpbnQJcmVzaXpldGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzaXpldGVybQogaW50CXJlc2l6ZXRlcm0oCiAJCWludAlUb0xpbmVzLCAKQEAgLTIxNTcsOSArMjcyMCw2IEBACiAKIC8qIC4vdGluZm8vYWNjZXNzLmMgKi8KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8bmNfYWxsb2MuaD4KLQogI3VuZGVmIF9uY19yb290bmFtZQogY2hhcgkqX25jX3Jvb3RuYW1lKAogCQljaGFyCSpwYXRoKQpAQCAtMjIyMCwxOSArMjc4MCw0MiBAQAogI3VuZGVmIF9uY19jb3B5X3Rlcm10eXBlCiB2b2lkCV9uY19jb3B5X3Rlcm10eXBlKAogCQlURVJNVFlQRSAqZHN0LCAKLQkJVEVSTVRZUEUgKnNyYykKKwkJY29uc3QgVEVSTVRZUEUgKnNyYykKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi9jb2Rlcy5jICovCiAKICN1bmRlZiBib29sY29kZXMKLWNoYXIJKmNvbnN0IGJvb2xjb2Rlc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3QgYm9vbGNvZGVzW10gPSB7MH07CiAjdW5kZWYgbnVtY29kZXMKLWNoYXIJKmNvbnN0IG51bWNvZGVzW10gPSB7MH07Citjb25zdCBjaGFyICpjb25zdCBudW1jb2Rlc1tdID0gezB9OwogI3VuZGVmIHN0cmNvZGVzCi1jaGFyCSpjb25zdCBzdHJjb2Rlc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3Qgc3RyY29kZXNbXSA9IHswfTsKKworLyogLi9jb21wX2NhcHRhYi5jICovCisKKyN1bmRlZiBfbmNfZ2V0X3RhYmxlCitjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqX25jX2dldF90YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF90YWJsZQorY29uc3QgSGFzaFZhbHVlICpfbmNfZ2V0X2hhc2hfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hWYWx1ZSAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQorY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF9pbmZvCitjb25zdCBIYXNoRGF0YSAqX25jX2dldF9oYXNoX2luZm8oCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hEYXRhICoqKTApOyB9CiAKIC8qIC4vdGluZm8vY29tcF9lcnJvci5jICovCisKICN1bmRlZiBfbmNfc3VwcHJlc3Nfd2FybmluZ3MKIE5DVVJTRVNfQk9PTCBfbmNfc3VwcHJlc3Nfd2FybmluZ3M7CiAjdW5kZWYgX25jX2N1cnJfbGluZQpAQCAtMjI3Nyw2ICsyODYwLDIxIEBACiAJCS4uLikKIAkJeyAvKiB2b2lkICovIH0KIAorLyogLi90aW5mby9jb21wX2hhc2guYyAqLworCisjdW5kZWYgX25jX2ZpbmRfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY29uc3QgSGFzaFZhbHVlICpoYXNoX3RhYmxlKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmluZF90eXBlX2VudHJ5CitzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqX25jX2ZpbmRfdHlwZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CXR5cGUsIAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQorCiAvKiAuL3RpbmZvL2RiX2l0ZXJhdG9yLmMgKi8KIAogI3VuZGVmIF9uY190aWNfZGlyCkBAIC0yMzcwLDYgKzI5NjgsMTIgQEAKIAkJY29uc3QgY2hhciAqbmFtZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3NldGVudl9udW0KK3ZvaWQJX25jX3NldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlpbnQJdmFsdWUpCisJCXsgLyogdm9pZCAqLyB9CisKIC8qIC4vdGluZm8vaG9tZV90ZXJtaW5mby5jICovCiAKICN1bmRlZiBfbmNfaG9tZV90ZXJtaW5mbwpAQCAtMjM3OCwxNSArMjk4Miw2IEBACiAKIC8qIC4vdGluZm8vaW5pdF9rZXl0cnkuYyAqLwogCi0jaWYgMAotCi0jaW5jbHVkZSA8aW5pdF9rZXl0cnkuaD4KLQotI3VuZGVmIF9uY190aW5mb19ma2V5cwotY29uc3Qgc3RydWN0IHRpbmZvX2ZrZXlzIF9uY190aW5mb19ma2V5c1tdID0gezB9OwotCi0jZW5kaWYKLQogI3VuZGVmIF9uY19pbml0X2tleXRyeQogdm9pZAlfbmNfaW5pdF9rZXl0cnkoCiAJCVNDUkVFTgkqc3ApCkBAIC0yMzk3LDE2ICsyOTkyLDE5IEBACiAjdW5kZWYgYWNzX21hcAogY2h0eXBlCWFjc19tYXBbMTI4XTsKIAorI3VuZGVmIF9uY19pbml0X2Fjc19zcAordm9pZAlfbmNfaW5pdF9hY3Nfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfaW5pdF9hY3MKIHZvaWQJX25jX2luaXRfYWNzKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKIC8qIC4vdGluZm8vbGliX2JhdWRyYXRlLmMgKi8KIAotI2luY2x1ZGUgPHRlcm1jYXAuaD4KLQogc3RydWN0IHNwZWVkIHsKLSAgICBpbnQgczsgCisgICAgc2hvcnQgczsgCiAgICAgaW50IHNwOyAKIH07CiAKQEAgLTI0MjAsNiArMzAxOCwxMSBAQAogCQlpbnQJQmF1ZFJhdGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGJhdWRyYXRlX3NwCitpbnQJYmF1ZHJhdGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGJhdWRyYXRlCiBpbnQJYmF1ZHJhdGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMjQyOSwxMSArMzAzMiwyMyBAQAogI3VuZGVmIGN1cl90ZXJtCiBURVJNSU5BTCAqY3VyX3Rlcm07CiAKKyN1bmRlZiBzZXRfY3VydGVybV9zcAorVEVSTUlOQUwgKnNldF9jdXJ0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKICN1bmRlZiBzZXRfY3VydGVybQogVEVSTUlOQUwgKnNldF9jdXJ0ZXJtKAogCQlURVJNSU5BTCAqdGVybXApCiAJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KIAorI3VuZGVmIGRlbF9jdXJ0ZXJtX3NwCitpbnQJZGVsX2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlbF9jdXJ0ZXJtCiBpbnQJZGVsX2N1cnRlcm0oCiAJCVRFUk1JTkFMICp0ZXJtcCkKQEAgLTI0NTYsMjYgKzMwNzEsNTYgQEAKICN1bmRlZiBfbmNfcHJlc2NyZWVuCiBOQ1VSU0VTX1BSRVNDUkVFTiBfbmNfcHJlc2NyZWVuOwogCisjdW5kZWYgX25jX3NjcmVlbl9vZgorU0NSRUVOCSpfbmNfc2NyZWVuX29mKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKwogLyogLi90aW5mby9saWJfaGFzX2NhcC5jICovCiAKKyN1bmRlZiBoYXNfaWNfc3AKK05DVVJTRVNfQk9PTCBoYXNfaWNfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGhhc19pYwogTkNVUlNFU19CT09MIGhhc19pYyh2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiBoYXNfaWxfc3AKK05DVVJTRVNfQk9PTCBoYXNfaWxfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGhhc19pbAogTkNVUlNFU19CT09MIGhhc19pbCh2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKIC8qIC4vdGluZm8vbGliX2tlcm5lbC5jICovCiAKKyN1bmRlZiBlcmFzZWNoYXJfc3AKK2NoYXIJZXJhc2VjaGFyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQorCiAjdW5kZWYgZXJhc2VjaGFyCiBjaGFyCWVyYXNlY2hhcih2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQogCisjdW5kZWYga2lsbGNoYXJfc3AKK2NoYXIJa2lsbGNoYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKICN1bmRlZiBraWxsY2hhcgogY2hhcglraWxsY2hhcih2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQogCisjdW5kZWYgZmx1c2hpbnBfc3AKK2ludAlmbHVzaGlucF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZmx1c2hpbnAKIGludAlmbHVzaGlucCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0yNDg0LDI2ICszMTI5LDM1IEBACiAKIHN0cnVjdCBrbiB7IHNob3J0IG9mZnNldDsgaW50IGNvZGU7IH07CiAKLSN1bmRlZiBfbmNfa2V5bmFtZQotY2hhcgkqX25jX2tleW5hbWUoCisjdW5kZWYga2V5bmFtZV9zcAorY29uc3QgY2hhciAqa2V5bmFtZV9zcCgKIAkJU0NSRUVOCSpzcCwgCiAJCWludAljKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKICN1bmRlZiBrZXluYW1lCi1jaGFyCSprZXluYW1lKAorY29uc3QgY2hhciAqa2V5bmFtZSgKIAkJaW50CWMpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogLyogLi90aW5mby9saWJfbG9uZ25hbWUuYyAqLwogCisjdW5kZWYgbG9uZ25hbWVfc3AKK2NoYXIJKmxvbmduYW1lX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIGxvbmduYW1lCiBjaGFyCSpsb25nbmFtZSh2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAogLyogLi90aW5mby9saWJfbmFwbXMuYyAqLwogCi0jaW5jbHVkZSA8dGltZS5oPgorI3VuZGVmIG5hcG1zX3NwCitpbnQJbmFwbXNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG5hcG1zCiBpbnQJbmFwbXMoCkBAIC0yNTI0LDYgKzMxNzgsMTIgQEAKIAkJTkNVUlNFU19CT09MIGZsYWcpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBoYWxmZGVsYXlfc3AKK2ludAloYWxmZGVsYXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaGFsZmRlbGF5CiBpbnQJaGFsZmRlbGF5KAogCQlpbnQJdCkKQEAgLTI1NTksNTMgKzMyMTksMTE1IEBACiAJCU5DVVJTRVNfQk9PTCBmbGFnKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgY3Vyc19zZXQKIGludAljdXJzX3NldCgKIAkJaW50CXZpcykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB0eXBlYWhlYWQKIGludAl0eXBlYWhlYWQoCiAJCWludAlmZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaGFzX2tleQogaW50CWhhc19rZXkoCiAJCWludAlrZXljb2RlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfa2V5cGFkCiBpbnQJX25jX2tleXBhZCgKIAkJU0NSRUVOCSpzcCwgCi0JCU5DVVJTRVNfQk9PTCBmbGFnKQorCQlpbnQJZmxhZykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9yYXcuYyAqLwogCisjdW5kZWYgcmF3X3NwCitpbnQJcmF3X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByYXcKIGludAlyYXcodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgY2JyZWFrX3NwCitpbnQJY2JyZWFrX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBjYnJlYWsKIGludAljYnJlYWsodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcWlmbHVzaF9zcAordm9pZAlxaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgcWlmbHVzaAogdm9pZAlxaWZsdXNoKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBub3Jhd19zcAoraW50CW5vcmF3X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBub3JhdwogaW50CW5vcmF3KHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG5vY2JyZWFrX3NwCitpbnQJbm9jYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5vY2JyZWFrCiBpbnQJbm9jYnJlYWsodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbm9xaWZsdXNoX3NwCit2b2lkCW5vcWlmbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIG5vcWlmbHVzaAogdm9pZAlub3FpZmx1c2godm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIGludHJmbHVzaF9zcAoraW50CWludHJmbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGludHJmbHVzaAogaW50CWludHJmbHVzaCgKIAkJV0lORE9XCSp3aW4sIApAQCAtMjYxNCwxMCArMzMzNiw2IEBACiAKIC8qIC4vdGluZm8vbGliX3NldHVwLmMgKi8KIAotI2luY2x1ZGUgPGxvY2FsZS5oPgotI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0KICN1bmRlZiB0dHl0eXBlCiBjaGFyCXR0eXR5cGVbMjU2XTsKICN1bmRlZiBMSU5FUwpAQCAtMjYyNyw2ICszMzQ1LDEyIEBACiAjdW5kZWYgVEFCU0laRQogaW50CVRBQlNJWkU7CiAKKyN1bmRlZiBzZXRfdGFic2l6ZV9zcAoraW50CXNldF90YWJzaXplX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzZXRfdGFic2l6ZQogaW50CXNldF90YWJzaXplKAogCQlpbnQJdmFsdWUpCkBAIC0yNjM3LDExICszMzYxLDI4IEBACiAJCVNDUkVFTgkqc3ApCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHVzZV9lbnZfc3AKK3ZvaWQJdXNlX2Vudl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdXNlX3Rpb2N0bF9zcAordm9pZAl1c2VfdGlvY3RsX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiB1c2VfZW52CiB2b2lkCXVzZV9lbnYoCiAJCU5DVVJTRVNfQk9PTCBmKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgdXNlX3Rpb2N0bAordm9pZAl1c2VfdGlvY3RsKAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19nZXRfc2NyZWVuc2l6ZQogdm9pZAlfbmNfZ2V0X3NjcmVlbnNpemUoCiAJCVNDUkVFTgkqc3AsIApAQCAtMjY1NCw2ICszMzk1LDE4IEBACiAJCVNDUkVFTgkqc3ApCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfc2V0dXBfdGluZm8KK2ludAlfbmNfc2V0dXBfdGluZm8oCisJCWNvbnN0IGNoYXIgKmNvbnN0IHRuLCAKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfdGluZm9fY21kY2gKK3ZvaWQJX25jX3RpbmZvX2NtZGNoKAorCQlURVJNSU5BTCAqdGVybXAsIAorCQlpbnQJcHJvdG8pCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfZ2V0X2xvY2FsZQogY2hhcgkqX25jX2dldF9sb2NhbGUodm9pZCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CkBAIC0yNjY5LDE1ICszNDIyLDE5IEBACiAKICN1bmRlZiBfbmNfc2V0dXB0ZXJtCiBpbnQJX25jX3NldHVwdGVybSgKLQkJY2hhcgkqdG5hbWUsIAorCQljb25zdCBjaGFyICp0bmFtZSwgCiAJCWludAlGaWxlZGVzLCAKIAkJaW50CSplcnJyZXQsIAotCQlOQ1VSU0VTX0JPT0wgcmV1c2UpCisJCWludAlyZXVzZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbmV3X3ByZXNjcgorU0NSRUVOCSpuZXdfcHJlc2NyKHZvaWQpCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKICN1bmRlZiBzZXR1cHRlcm0KIGludAlzZXR1cHRlcm0oCi0JCWNoYXIJKnRuYW1lLCAKKwkJY29uc3QgY2hhciAqdG5hbWUsIAogCQlpbnQJRmlsZWRlcywgCiAJCWludAkqZXJycmV0KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0yNjg5LDM2ICszNDQ2LDYxIEBACiAjdW5kZWYgQkMKIGNoYXIJKkJDOwogCisjdW5kZWYgdGdldGVudF9zcAoraW50CXRnZXRlbnRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaGFyCSpidWZwLCAKKwkJY29uc3QgY2hhciAqbmFtZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdGdldGVudAogaW50CXRnZXRlbnQoCiAJCWNoYXIJKmJ1ZnAsIAogCQljb25zdCBjaGFyICpuYW1lKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKLSNpZiAwCi0KLSNpbmNsdWRlIDxjYXBkZWZhdWx0cy5jPgotCi0jZW5kaWYKKyN1bmRlZiB0Z2V0ZmxhZ19zcAoraW50CXRnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRnZXRmbGFnCiBpbnQJdGdldGZsYWcoCi0JCWNoYXIJKmlkKQorCQljb25zdCBjaGFyICppZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGdldG51bV9zcAoraW50CXRnZXRudW1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdGdldG51bQogaW50CXRnZXRudW0oCi0JCWNoYXIJKmlkKQorCQljb25zdCBjaGFyICppZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdGdldHN0cl9zcAorY2hhcgkqdGdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgdGdldHN0cgogY2hhcgkqdGdldHN0cigKLQkJY2hhcgkqaWQsIAorCQljb25zdCBjaGFyICppZCwgCiAJCWNoYXIJKiphcmVhKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAogLyogLi90aW5mby9saWJfdGVybW5hbWUuYyAqLwogCisjdW5kZWYgdGVybW5hbWVfc3AKK2NoYXIJKnRlcm1uYW1lX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIHRlcm1uYW1lCiBjaGFyCSp0ZXJtbmFtZSh2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KQEAgLTI3MzQsMTkgKzM1MTYsMzcgQEAKIAogLyogLi90aW5mby9saWJfdGkuYyAqLwogCisjdW5kZWYgdGlnZXRmbGFnX3NwCitpbnQJdGlnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB0aWdldGZsYWcKIGludAl0aWdldGZsYWcoCi0JCWNoYXIJKnN0cikKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bV9zcAoraW50CXRpZ2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB0aWdldG51bQogaW50CXRpZ2V0bnVtKAotCQljaGFyCSpzdHIpCisJCWNvbnN0IGNoYXIgKnN0cikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdGlnZXRzdHJfc3AKK2NoYXIJKnRpZ2V0c3RyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIHRpZ2V0c3RyCiBjaGFyCSp0aWdldHN0cigKLQkJY2hhcgkqc3RyKQorCQljb25zdCBjaGFyICpzdHIpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl90cGFybS5jICovCkBAIC0yNzU4LDEyICszNTU4LDE4IEBACiBpbnQJX25jX3RwYXJtX2FuYWx5emUoCiAJCWNvbnN0IGNoYXIgKnN0cmluZywgCiAJCWNoYXIJKnBfaXNfc1s5XSwgCi0JCWludAkqcG9wY291bnQpCisJCWludAkqX25jX3BvcGNvdW50KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB0cGFybQogY2hhcgkqdHBhcm0oCi0JCWNoYXIJKnN0cmluZywgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCS4uLikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0aXBhcm0KK2NoYXIJKnRpcGFybSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKIAkJLi4uKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIApAQCAtMjc3Miw3ICszNTc4LDcgQEAKICN1bmRlZiBQQwogY2hhcglQQzsKICN1bmRlZiBvc3BlZWQKLU5DVVJTRVNfT1NQRUVECW9zcGVlZDsKK3Nob3J0CW9zcGVlZDsKICN1bmRlZiBfbmNfbnVsbHNfc2VudAogaW50CV9uY19udWxsc19zZW50OwogCkBAIC0yNzgxLDI1ICszNTg3LDg2IEBACiAJCVNDUkVFTgkqc3ApCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBkZWxheV9vdXRwdXRfc3AKK2ludAlkZWxheV9vdXRwdXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlbGF5X291dHB1dAogaW50CWRlbGF5X291dHB1dCgKIAkJaW50CW1zKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfZmx1c2hfc3AKK3ZvaWQJX25jX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2ZsdXNoCiB2b2lkCV9uY19mbHVzaCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX291dGNoX3NwCitpbnQJX25jX291dGNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfb3V0Y2gKIGludAlfbmNfb3V0Y2goCiAJCWludAljaCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3B1dGNoYXJfc3AKK2ludAlfbmNfcHV0Y2hhcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dGNoYXIKK2ludAlfbmNfcHV0Y2hhcigKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwdXRwX3NwCitpbnQJcHV0cF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcHV0cAogaW50CXB1dHAoCiAJCWNvbnN0IGNoYXIgKnN0cmluZykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3B1dHBfc3AKK2ludAlfbmNfcHV0cF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXRwCitpbnQJX25jX3B1dHAoCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRwdXRzX3NwCitpbnQJdHB1dHNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQlpbnQJYWZmY250LCAKKwkJTkNVUlNFU19PVVRDX3NwIG91dGMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19vdXRjX3dyYXBwZXIKK2ludAlfbmNfb3V0Y193cmFwcGVyKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHRwdXRzCiBpbnQJdHB1dHMoCiAJCWNvbnN0IGNoYXIgKnN0cmluZywgCkBAIC0yODMwLDkgKzM2OTcsMTQgQEAKIAogI3VuZGVmIF9uY19yZXRyYWNlX2Jvb2wKIE5DVVJTRVNfQk9PTCBfbmNfcmV0cmFjZV9ib29sKAotCQlOQ1VSU0VTX0JPT0wgY29kZSkKKwkJaW50CWNvZGUpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIF9uY19yZXRyYWNlX2NoYXIKK2NoYXIJX25jX3JldHJhY2VfY2hhcigKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKICN1bmRlZiBfbmNfcmV0cmFjZV9pbnQKIGludAlfbmNfcmV0cmFjZV9pbnQoCiAJCWludAljb2RlKQpAQCAtMjg1NCw5ICszNzI2LDkgQEAKIAkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKICN1bmRlZiBfbmNfcmV0cmFjZV9jdm9pZF9wdHIKLXZvaWQJKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKLQkJdm9pZAkqY29kZSkKLQkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9Citjb25zdCB2b2lkICpfbmNfcmV0cmFjZV9jdm9pZF9wdHIoCisJCWNvbnN0IHZvaWQgKmNvZGUpCisJCXsgcmV0dXJuKCooY29uc3Qgdm9pZCAqKikwKTsgfQogCiAjdW5kZWYgX25jX3JldHJhY2Vfdm9pZF9wdHIKIHZvaWQJKl9uY19yZXRyYWNlX3ZvaWRfcHRyKApAQCAtMjg4Niw2ICszNzU4LDExIEBACiAJCWF0dHJfdAluZXdtb2RlKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAorI3VuZGVmIF9uY19yZXRyYWNlX2ludF9hdHRyX3QKK2ludAlfbmNfcmV0cmFjZV9pbnRfYXR0cl90KAorCQlhdHRyX3QJY29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3JldHJhY2VfYXR0cl90CiBhdHRyX3QJX25jX3JldHJhY2VfYXR0cl90KAogCQlhdHRyX3QJY29kZSkKQEAgLTI5MTcsNyArMzc5NCw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICB1bnNpZ25lZCBpbnQgdmFsOwotICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgY29uc3QgY2hhciBuYW1lWzhdOwogfSBCSVROQU1FUzsKIAogI3VuZGVmIF9uY190cmFjZV90dHltb2RlCkBAIC0yOTQ0LDM2ICszODIxLDc4IEBACiAKIC8qIC4vdGluZm8vbGliX3R0eWZsYWdzLmMgKi8KIAorI3VuZGVmIF9uY19nZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfZ2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX2dldF90dHlfbW9kZQogaW50CV9uY19nZXRfdHR5X21vZGUoCiAJCXN0cnVjdCB0ZXJtaW9zICpidWYpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19zZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfc2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3NldF90dHlfbW9kZQogaW50CV9uY19zZXRfdHR5X21vZGUoCiAJCXN0cnVjdCB0ZXJtaW9zICpidWYpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGRlZl9zaGVsbF9tb2RlX3NwCitpbnQJZGVmX3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlZl9zaGVsbF9tb2RlCiBpbnQJZGVmX3NoZWxsX21vZGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgZGVmX3Byb2dfbW9kZV9zcAoraW50CWRlZl9wcm9nX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlZl9wcm9nX21vZGUKIGludAlkZWZfcHJvZ19tb2RlKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHJlc2V0X3Byb2dfbW9kZV9zcAoraW50CXJlc2V0X3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzZXRfcHJvZ19tb2RlCiBpbnQJcmVzZXRfcHJvZ19tb2RlKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHJlc2V0X3NoZWxsX21vZGVfc3AKK2ludAlyZXNldF9zaGVsbF9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNldF9zaGVsbF9tb2RlCiBpbnQJcmVzZXRfc2hlbGxfbW9kZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzYXZldHR5X3NwCitpbnQJc2F2ZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2F2ZXR0eQogaW50CXNhdmV0dHkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmVzZXR0eV9zcAoraW50CXJlc2V0dHlfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJlc2V0dHkKIGludAlyZXNldHR5KHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTMwMDUsMjEgKzM5MjQsMzkgQEAKIC8qIC4vbmFtZXMuYyAqLwogCiAjdW5kZWYgYm9vbG5hbWVzCi1jaGFyCSpjb25zdCBib29sbmFtZXNbXSA9IHswfTsKK2NvbnN0IGNoYXIgKmNvbnN0IGJvb2xuYW1lc1tdID0gezB9OwogI3VuZGVmIGJvb2xmbmFtZXMKLWNoYXIJKmNvbnN0IGJvb2xmbmFtZXNbXSA9IHswfTsKK2NvbnN0IGNoYXIgKmNvbnN0IGJvb2xmbmFtZXNbXSA9IHswfTsKICN1bmRlZiBudW1uYW1lcwotY2hhcgkqY29uc3QgbnVtbmFtZXNbXSA9IHswfTsKK2NvbnN0IGNoYXIgKmNvbnN0IG51bW5hbWVzW10gPSB7MH07CiAjdW5kZWYgbnVtZm5hbWVzCi1jaGFyCSpjb25zdCBudW1mbmFtZXNbXSA9IHswfTsKK2NvbnN0IGNoYXIgKmNvbnN0IG51bWZuYW1lc1tdID0gezB9OwogI3VuZGVmIHN0cm5hbWVzCi1jaGFyCSpjb25zdCBzdHJuYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3Qgc3RybmFtZXNbXSA9IHswfTsKICN1bmRlZiBzdHJmbmFtZXMKLWNoYXIJKmNvbnN0IHN0cmZuYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3Qgc3RyZm5hbWVzW10gPSB7MH07CisKKy8qIC4vdGluZm8vb2Jzb2xldGUuYyAqLworCisjdW5kZWYgX25jX3NldF9idWZmZXJfc3AKK3ZvaWQJX25jX3NldF9idWZmZXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcgordm9pZAlfbmNfc2V0X2J1ZmZlcigKKwkJRklMRQkqb2ZwLCAKKwkJaW50CWJ1ZmZlcmVkKQorCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL3RpbmZvL3JlYWRfZW50cnkuYyAqLwogCi0jaW5jbHVkZSA8aGFzaGVkX2RiLmg+CisjdW5kZWYgX25jX2luaXRfdGVybXR5cGUKK3ZvaWQJX25jX2luaXRfdGVybXR5cGUoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY19yZWFkX3Rlcm10eXBlCiBpbnQJX25jX3JlYWRfdGVybXR5cGUoCkBAIC0zMDQzLDIwICszOTgwLDggQEAKIAogLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLwogCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KLSN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwX2VudHJ5Ci1pbnQJX25jX3JlYWRfdGVybWNhcF9lbnRyeSgKLQkJY29uc3QgY2hhciAqY29uc3QgdG4sIAotCQlURVJNVFlQRSAqY29uc3QgdHApCi0JCXsgcmV0dXJuKCooaW50ICopMCk7IH0KLQotLyogLi90aW5mby9zZXRidWYuYyAqLwotCi0jdW5kZWYgX25jX3NldF9idWZmZXIKLXZvaWQJX25jX3NldF9idWZmZXIoCi0JCUZJTEUJKm9mcCwgCi0JCU5DVVJTRVNfQk9PTCBidWZmZXJlZCkKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90aW5mby9zdHJpbmdzLmMgKi8KQEAgLTMxNDQsMTYgKzQwNjksMTYgQEAKIAogLyogLi91bmN0cmwuYyAqLwogCi0jdW5kZWYgX25jX3VuY3RybAotY2hhcgkqX25jX3VuY3RybCgKKyN1bmRlZiB1bmN0cmxfc3AKK2NvbnN0IGNoYXIgKnVuY3RybF9zcCgKIAkJU0NSRUVOCSpzcCwgCiAJCWNodHlwZQljaCkKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAjdW5kZWYgdW5jdHJsCi1jaGFyCSp1bmN0cmwoCitjb25zdCBjaGFyICp1bmN0cmwoCiAJCWNodHlwZQljaCkKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAvKiAuL3RyYWNlL3Zpc2J1Zi5jICovCiAKQEAgLTMyMzIsMjUgKzQxNTcsNiBAQAogCQlpbnQgY29uc3QgcGFyYW1ldGVyaXplZCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKLS8qIC4vY29tcF9jYXB0YWIuYyAqLwotCi0jaW5jbHVkZSA8aGFzaHNpemUuaD4KLQotI3VuZGVmIF9uY19nZXRfdGFibGUKLWNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpfbmNfZ2V0X3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqKikwKTsgfQotCi0jdW5kZWYgX25jX2dldF9oYXNoX3RhYmxlCi1jb25zdCBzaG9ydCAqX25jX2dldF9oYXNoX3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzaG9ydCAqKikwKTsgfQotCi0jdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQotY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KLQogLyogLi90aW5mby9jb21wX2V4cGFuZC5jICovCiAKICN1bmRlZiBfbmNfdGljX2V4cGFuZApAQCAtMzI2MCwyMSArNDE2Niw2IEBACiAJCWludAludW1iZXJzKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAotLyogLi90aW5mby9jb21wX2hhc2guYyAqLwotCi0jdW5kZWYgX25jX2ZpbmRfZW50cnkKLXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKLQkJY29uc3QgY2hhciAqc3RyaW5nLCAKLQkJY29uc3Qgc2hvcnQgKmhhc2hfdGFibGUpCi0JCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KLQotI3VuZGVmIF9uY19maW5kX3R5cGVfZW50cnkKLXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF90eXBlX2VudHJ5KAotCQljb25zdCBjaGFyICpzdHJpbmcsIAotCQlpbnQJdHlwZSwgCi0JCWNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICp0YWJsZSkKLQkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQotCiAvKiAuL3RpbmZvL2NvbXBfcGFyc2UuYyAqLwogCiAjdW5kZWYgX25jX2NoZWNrX3Rlcm10eXBlMgpAQCAtMzMxNiw2ICs0MjA3LDggQEAKIAogI3VuZGVmIF9uY19zeW50YXgKIGludAlfbmNfc3ludGF4OworI3VuZGVmIF9uY19zdHJpY3RfYnNkCitpbnQJX25jX3N0cmljdF9ic2Q7CiAjdW5kZWYgX25jX2N1cnJfZmlsZV9wb3MKIGxvbmcJX25jX2N1cnJfZmlsZV9wb3M7CiAjdW5kZWYgX25jX2NvbW1lbnRfc3RhcnQKQEAgLTMzNzIsMTUgKzQyNjUsMTUgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgY29uc3QgY2hhciAqZnJvbTsKLSAgICBjb25zdCBjaGFyICp0bzsKKyAgICBjb25zdCBjaGFyIGZyb21bM107CisgICAgY29uc3QgY2hhciB0b1s2XTsKIH0gYXNzb2M7CiAKIC8qIC4vdGluZm8vd3JpdGVfZW50cnkuYyAqLwogCiAjdW5kZWYgX25jX3NldF93cml0ZWRpcgogdm9pZAlfbmNfc2V0X3dyaXRlZGlyKAotCQljaGFyCSpkaXIpCisJCWNvbnN0IGNoYXIgKmRpcikKIAkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY193cml0ZV9lbnRyeQpAQCAtMzM5NCw2ICs0Mjg3LDEzIEBACiAKIC8qIC4vYmFzZS9kZWZpbmVfa2V5LmMgKi8KIAorI3VuZGVmIGRlZmluZV9rZXlfc3AKK2ludAlkZWZpbmVfa2V5X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyLCAKKwkJaW50CWtleWNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlZmluZV9rZXkKIGludAlkZWZpbmVfa2V5KAogCQljb25zdCBjaGFyICpzdHIsIApAQCAtMzQwOCw2ICs0MzA4LDEyIEBACiAKIC8qIC4vYmFzZS9rZXlfZGVmaW5lZC5jICovCiAKKyN1bmRlZiBrZXlfZGVmaW5lZF9zcAoraW50CWtleV9kZWZpbmVkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBrZXlfZGVmaW5lZAogaW50CWtleV9kZWZpbmVkKAogCQljb25zdCBjaGFyICpzdHIpCkBAIC0zNDE1LDYgKzQzMjEsMTMgQEAKIAogLyogLi9iYXNlL2tleWJvdW5kLmMgKi8KIAorI3VuZGVmIGtleWJvdW5kX3NwCitjaGFyCSprZXlib3VuZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIGtleWJvdW5kCiBjaGFyCSprZXlib3VuZCgKIAkJaW50CWNvZGUsIApAQCAtMzQyMyw2ICs0MzM2LDEzIEBACiAKIC8qIC4vYmFzZS9rZXlvay5jICovCiAKKyN1bmRlZiBrZXlva19zcAoraW50CWtleW9rX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMsIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYga2V5b2sKIGludAlrZXlvaygKIAkJaW50CWMsIApkaWZmIC0tZ2l0IGEvbmN1cnNlcy9sbGliLWxuY3Vyc2VzdCBiL25jdXJzZXMvbGxpYi1sbmN1cnNlc3QKaW5kZXggZDI5ZWY2MC4uYzc4N2YzMCAxMDA2NDQKLS0tIGEvbmN1cnNlcy9sbGliLWxuY3Vyc2VzdAorKysgYi9uY3Vyc2VzL2xsaWItbG5jdXJzZXN0CkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNyArMjcsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDIwMDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAyMDA4LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogTElOVExJQlJBUlkgKi8KIApAQCAtMzgsMjcgKzM4LDU0IEBACiAjdW5kZWYgX25jX29sZG51bXMKIGludAkqX25jX29sZG51bXM7CiAKKyN1bmRlZiBfbmNfc2Nyb2xsX29wdGltaXplX3NwCit2b2lkCV9uY19zY3JvbGxfb3B0aW1pemVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfc2Nyb2xsX29wdGltaXplCiB2b2lkCV9uY19zY3JvbGxfb3B0aW1pemUodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19saW5lZHVtcF9zcAordm9pZAlfbmNfbGluZWR1bXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfbGluZWR1bXAKIHZvaWQJX25jX2xpbmVkdW1wKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKIC8qIC4vdHR5L2hhc2htYXAuYyAqLwogCi0jaW5jbHVkZSA8dGVybS5oPgorI3VuZGVmIF9uY19oYXNoX21hcF9zcAordm9pZAlfbmNfaGFzaF9tYXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CiAKICN1bmRlZiBfbmNfaGFzaF9tYXAKIHZvaWQJX25jX2hhc2hfbWFwKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfbWFrZV9vbGRoYXNoX3NwCit2b2lkCV9uY19tYWtlX29sZGhhc2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJaSkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19tYWtlX29sZGhhc2gKIHZvaWQJX25jX21ha2Vfb2xkaGFzaCgKIAkJaW50CWkpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfc2Nyb2xsX29sZGhhc2hfc3AKK3ZvaWQJX25jX3Njcm9sbF9vbGRoYXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW4sIAorCQlpbnQJdG9wLCAKKwkJaW50CWJvdCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JvbGxfb2xkaGFzaAogdm9pZAlfbmNfc2Nyb2xsX29sZGhhc2goCiAJCWludAluLCAKQEAgLTY4LDggKzk1LDYgQEAKIAogLyogLi9iYXNlL2xpYl9hZGRjaC5jICovCiAKLSNpbmNsdWRlIDxjdHlwZS5oPgotCiAjdW5kZWYgX25jX3JlbmRlcgogY2h0eXBlCV9uY19yZW5kZXIoCiAJCVdJTkRPVwkqd2luLCAKQEAgLTExMiw2ICsxMzcsMTEgQEAKIAogLyogLi9iYXNlL2xpYl9iZWVwLmMgKi8KIAorI3VuZGVmIGJlZXBfc3AKK2ludAliZWVwX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBiZWVwCiBpbnQJYmVlcCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xODcsOCArMjE3LDYgQEAKIAogLyogLi9iYXNlL2xpYl9jb2xvci5jICovCiAKLSNpbmNsdWRlIDx0aWMuaD4KLQogI3VuZGVmIF9uY19DT0xPUl9QQUlSUwogaW50CV9uY19DT0xPUl9QQUlSUyh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xOTcsMTQgKzIyNSwzMiBAQAogaW50CV9uY19DT0xPUlModm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3Jlc2V0X2NvbG9yc19zcAorTkNVUlNFU19CT09MIF9uY19yZXNldF9jb2xvcnNfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIF9uY19yZXNldF9jb2xvcnMKIE5DVVJTRVNfQk9PTCBfbmNfcmVzZXRfY29sb3JzKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIHN0YXJ0X2NvbG9yX3NwCitpbnQJc3RhcnRfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHN0YXJ0X2NvbG9yCiBpbnQJc3RhcnRfY29sb3Iodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgaW5pdF9wYWlyX3NwCitpbnQJaW5pdF9wYWlyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJcGFpciwgCisJCXNob3J0CWYsIAorCQlzaG9ydAliKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBpbml0X3BhaXIKIGludAlpbml0X3BhaXIoCiAJCXNob3J0CXBhaXIsIApAQCAtMjEyLDYgKzI1OCwxNSBAQAogCQlzaG9ydAliKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBpbml0X2NvbG9yX3NwCitpbnQJaW5pdF9jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCXNob3J0CWNvbG9yLCAKKwkJc2hvcnQJciwgCisJCXNob3J0CWcsIAorCQlzaG9ydAliKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBpbml0X2NvbG9yCiBpbnQJaW5pdF9jb2xvcigKIAkJc2hvcnQJY29sb3IsIApAQCAtMjIwLDE0ICsyNzUsMzMgQEAKIAkJc2hvcnQJYikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgY2FuX2NoYW5nZV9jb2xvcl9zcAorTkNVUlNFU19CT09MIGNhbl9jaGFuZ2VfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGNhbl9jaGFuZ2VfY29sb3IKIE5DVVJTRVNfQk9PTCBjYW5fY2hhbmdlX2NvbG9yKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIGhhc19jb2xvcnNfc3AKK05DVVJTRVNfQk9PTCBoYXNfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKICN1bmRlZiBoYXNfY29sb3JzCiBOQ1VSU0VTX0JPT0wgaGFzX2NvbG9ycyh2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiBjb2xvcl9jb250ZW50X3NwCitpbnQJY29sb3JfY29udGVudF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCXNob3J0CWNvbG9yLCAKKwkJc2hvcnQJKnIsIAorCQlzaG9ydAkqZywgCisJCXNob3J0CSpiKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBjb2xvcl9jb250ZW50CiBpbnQJY29sb3JfY29udGVudCgKIAkJc2hvcnQJY29sb3IsIApAQCAtMjM2LDYgKzMxMCwxNCBAQAogCQlzaG9ydAkqYikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcGFpcl9jb250ZW50X3NwCitpbnQJcGFpcl9jb250ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJcGFpciwgCisJCXNob3J0CSpmLCAKKwkJc2hvcnQJKmIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHBhaXJfY29udGVudAogaW50CXBhaXJfY29udGVudCgKIAkJc2hvcnQJcGFpciwgCkBAIC0yNDMsMTMgKzMyNSwyMSBAQAogCQlzaG9ydAkqYikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX2RvX2NvbG9yX3NwCit2b2lkCV9uY19kb19jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlvbGRfcGFpciwgCisJCWludAlwYWlyLCAKKwkJaW50CXJldmVyc2UsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19kb19jb2xvcgogdm9pZAlfbmNfZG9fY29sb3IoCi0JCXNob3J0CW9sZF9wYWlyLCAKLQkJc2hvcnQJcGFpciwgCi0JCU5DVVJTRVNfQk9PTCByZXZlcnNlLCAKLQkJaW50CSgqb3V0YykoCi0JCWludAlwMSkpCisJCWludAlvbGRfcGFpciwgCisJCWludAlwYWlyLCAKKwkJaW50CXJldmVyc2UsIAorCQlOQ1VSU0VTX09VVEMgb3V0YykKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi9iYXNlL2xpYl9jb2xvcnNldC5jICovCkBAIC0yNzcsMTYgKzM2NywzMSBAQAogCiAvKiAuL2Jhc2UvbGliX2VjaG8uYyAqLwogCisjdW5kZWYgZWNob19zcAoraW50CWVjaG9fc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGVjaG8KIGludAllY2hvKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG5vZWNob19zcAoraW50CW5vZWNob19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbm9lY2hvCiBpbnQJbm9lY2hvKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9lbmR3aW4uYyAqLwogCisjdW5kZWYgZW5kd2luX3NwCitpbnQJZW5kd2luX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBlbmR3aW4KIGludAllbmR3aW4odm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMzAwLDYgKzQwNSwxMSBAQAogCiAvKiAuL2Jhc2UvbGliX2ZsYXNoLmMgKi8KIAorI3VuZGVmIGZsYXNoX3NwCitpbnQJZmxhc2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGZsYXNoCiBpbnQJZmxhc2godm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMzA3LDg1ICs0MTcsODUgQEAKIC8qIC4vbGliX2dlbi5jICovCiAKICN1bmRlZiBhZGRjaAotaW50CWFkZGNoKAoraW50CShhZGRjaCkoCiAJCWNvbnN0IGNodHlwZSB6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRjaG5zdHIKLWludAlhZGRjaG5zdHIoCitpbnQJKGFkZGNobnN0cikoCiAJCWNvbnN0IGNodHlwZSAqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYWRkY2hzdHIKLWludAlhZGRjaHN0cigKK2ludAkoYWRkY2hzdHIpKAogCQljb25zdCBjaHR5cGUgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZG5zdHIKLWludAlhZGRuc3RyKAoraW50CShhZGRuc3RyKSgKIAkJY29uc3QgY2hhciAqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYWRkc3RyCi1pbnQJYWRkc3RyKAoraW50CShhZGRzdHIpKAogCQljb25zdCBjaGFyICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyb2ZmCi1pbnQJYXR0cm9mZigKK2ludAkoYXR0cm9mZikoCiAJCU5DVVJTRVNfQVRUUl9UCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJvbgotaW50CWF0dHJvbigKK2ludAkoYXR0cm9uKSgKIAkJTkNVUlNFU19BVFRSX1QJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cnNldAotaW50CWF0dHJzZXQoCitpbnQJKGF0dHJzZXQpKAogCQlOQ1VSU0VTX0FUVFJfVAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyX2dldAotaW50CWF0dHJfZ2V0KAoraW50CShhdHRyX2dldCkoCiAJCWF0dHJfdAkqYTEsIAogCQlzaG9ydAkqYTIsIAogCQl2b2lkCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyX29mZgotaW50CWF0dHJfb2ZmKAoraW50CShhdHRyX29mZikoCiAJCWF0dHJfdAlhMSwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJfb24KLWludAlhdHRyX29uKAoraW50CShhdHRyX29uKSgKIAkJYXR0cl90CWExLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cl9zZXQKLWludAlhdHRyX3NldCgKK2ludAkoYXR0cl9zZXQpKAogCQlhdHRyX3QJYTEsIAogCQlzaG9ydAlhMiwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGJrZ2QKLWludAlia2dkKAoraW50CShia2dkKSgKIAkJY2h0eXBlCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGJrZ2RzZXQKLXZvaWQJYmtnZHNldCgKK3ZvaWQJKGJrZ2RzZXQpKAogCQljaHR5cGUJeikKIAkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIGJvcmRlcgotaW50CWJvcmRlcigKK2ludAkoYm9yZGVyKSgKIAkJY2h0eXBlCWExLCAKIAkJY2h0eXBlCWEyLCAKIAkJY2h0eXBlCWEzLCAKQEAgLTM5NywxNCArNTA3LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGJveAotaW50CWJveCgKK2ludAkoYm94KSgKIAkJV0lORE9XCSphMSwgCiAJCWNodHlwZQlhMiwgCiAJCWNodHlwZQl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBjaGdhdAotaW50CWNoZ2F0KAoraW50CShjaGdhdCkoCiAJCWludAlhMSwgCiAJCWF0dHJfdAlhMiwgCiAJCXNob3J0CWEzLCAKQEAgLTQxMiwxMzcgKzUyMiwxMzcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgY2xlYXIKLWludAljbGVhcih2b2lkKQoraW50CShjbGVhcikodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgY2xydG9ib3QKLWludAljbHJ0b2JvdCh2b2lkKQoraW50CShjbHJ0b2JvdCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgY2xydG9lb2wKLWludAljbHJ0b2VvbCh2b2lkKQoraW50CShjbHJ0b2VvbCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgY29sb3Jfc2V0Ci1pbnQJY29sb3Jfc2V0KAoraW50CShjb2xvcl9zZXQpKAogCQlzaG9ydAlhMSwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIENPTE9SX1BBSVIKLWludAlDT0xPUl9QQUlSKAoraW50CShDT0xPUl9QQUlSKSgKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGRlbGNoCi1pbnQJZGVsY2godm9pZCkKK2ludAkoZGVsY2gpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGRlbGV0ZWxuCi1pbnQJZGVsZXRlbG4odm9pZCkKK2ludAkoZGVsZXRlbG4pKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGVjaG9jaGFyCi1pbnQJZWNob2NoYXIoCitpbnQJKGVjaG9jaGFyKSgKIAkJY29uc3QgY2h0eXBlIHopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGVyYXNlCi1pbnQJZXJhc2Uodm9pZCkKK2ludAkoZXJhc2UpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGJrZ2QKLWNodHlwZQlnZXRia2dkKAorY2h0eXBlCShnZXRia2dkKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CiAKICN1bmRlZiBnZXRjaAotaW50CWdldGNoKHZvaWQpCitpbnQJKGdldGNoKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRuc3RyCi1pbnQJZ2V0bnN0cigKK2ludAkoZ2V0bnN0cikoCiAJCWNoYXIJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldHN0cgotaW50CWdldHN0cigKK2ludAkoZ2V0c3RyKSgKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaGxpbmUKLWludAlobGluZSgKK2ludAkoaGxpbmUpKAogCQljaHR5cGUJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5jaAotY2h0eXBlCWluY2godm9pZCkKK2NodHlwZQkoaW5jaCkodm9pZCkKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQogCiAjdW5kZWYgaW5jaG5zdHIKLWludAlpbmNobnN0cigKK2ludAkoaW5jaG5zdHIpKAogCQljaHR5cGUJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluY2hzdHIKLWludAlpbmNoc3RyKAoraW50CShpbmNoc3RyKSgKIAkJY2h0eXBlCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbm5zdHIKLWludAlpbm5zdHIoCitpbnQJKGlubnN0cikoCiAJCWNoYXIJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc2NoCi1pbnQJaW5zY2goCitpbnQJKGluc2NoKSgKIAkJY2h0eXBlCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc2RlbGxuCi1pbnQJaW5zZGVsbG4oCitpbnQJKGluc2RlbGxuKSgKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc2VydGxuCi1pbnQJaW5zZXJ0bG4odm9pZCkKK2ludAkoaW5zZXJ0bG4pKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc25zdHIKLWludAlpbnNuc3RyKAoraW50CShpbnNuc3RyKSgKIAkJY29uc3QgY2hhciAqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zc3RyCi1pbnQJaW5zc3RyKAoraW50CShpbnNzdHIpKAogCQljb25zdCBjaGFyICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnN0cgotaW50CWluc3RyKAoraW50CShpbnN0cikoCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG1vdmUKLWludAltb3ZlKAoraW50CShtb3ZlKSgKIAkJaW50CWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12YWRkY2gKLWludAltdmFkZGNoKAoraW50CShtdmFkZGNoKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2h0eXBlIHopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12YWRkY2huc3RyCi1pbnQJbXZhZGRjaG5zdHIoCitpbnQJKG12YWRkY2huc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2h0eXBlICphMywgCkBAIC01NTAsMTQgKzY2MCwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZGNoc3RyCi1pbnQJbXZhZGRjaHN0cigKK2ludAkobXZhZGRjaHN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNodHlwZSAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRuc3RyCi1pbnQJbXZhZGRuc3RyKAoraW50CShtdmFkZG5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaGFyICphMywgCkBAIC01NjUsMTQgKzY3NSwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZHN0cgotaW50CW12YWRkc3RyKAoraW50CShtdmFkZHN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12Y2hnYXQKLWludAltdmNoZ2F0KAoraW50CShtdmNoZ2F0KSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTU4MiwxOSArNjkyLDE5IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12ZGVsY2gKLWludAltdmRlbGNoKAoraW50CShtdmRlbGNoKSgKIAkJaW50CWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12Z2V0Y2gKLWludAltdmdldGNoKAoraW50CShtdmdldGNoKSgKIAkJaW50CWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12Z2V0bnN0cgotaW50CW12Z2V0bnN0cigKK2ludAkobXZnZXRuc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2hhcgkqYTMsIApAQCAtNjAyLDE0ICs3MTIsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZnZXRzdHIKLWludAltdmdldHN0cigKK2ludAkobXZnZXRzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmhsaW5lCi1pbnQJbXZobGluZSgKK2ludAkobXZobGluZSkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNodHlwZQlhMywgCkBAIC02MTcsMTMgKzcyNywxMyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluY2gKLWNodHlwZQltdmluY2goCitjaHR5cGUJKG12aW5jaCkoCiAJCWludAlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CiAKICN1bmRlZiBtdmluY2huc3RyCi1pbnQJbXZpbmNobnN0cigKK2ludAkobXZpbmNobnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNodHlwZQkqYTMsIApAQCAtNjMxLDE0ICs3NDEsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbmNoc3RyCi1pbnQJbXZpbmNoc3RyKAoraW50CShtdmluY2hzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaHR5cGUJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5uc3RyCi1pbnQJbXZpbm5zdHIoCitpbnQJKG12aW5uc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2hhcgkqYTMsIApAQCAtNjQ2LDE0ICs3NTYsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbnNjaAotaW50CW12aW5zY2goCitpbnQJKG12aW5zY2gpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaHR5cGUJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbnNuc3RyCi1pbnQJbXZpbnNuc3RyKAoraW50CShtdmluc25zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaGFyICphMywgCkBAIC02NjEsMjEgKzc3MSwyMSBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluc3N0cgotaW50CW12aW5zc3RyKAoraW50CShtdmluc3N0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zdHIKLWludAltdmluc3RyKAoraW50CShtdmluc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ2bGluZQotaW50CW12dmxpbmUoCitpbnQJKG12dmxpbmUpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaHR5cGUJYTMsIApAQCAtNjgzLDcgKzc5Myw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZGNoCi1pbnQJbXZ3YWRkY2goCitpbnQJKG12d2FkZGNoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC02OTEsNyArODAxLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkY2huc3RyCi1pbnQJbXZ3YWRkY2huc3RyKAoraW50CShtdndhZGRjaG5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTcwMCw3ICs4MTAsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRjaHN0cgotaW50CW12d2FkZGNoc3RyKAoraW50CShtdndhZGRjaHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzA4LDcgKzgxOCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZG5zdHIKLWludAltdndhZGRuc3RyKAoraW50CShtdndhZGRuc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03MTcsNyArODI3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkc3RyCi1pbnQJbXZ3YWRkc3RyKAoraW50CShtdndhZGRzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTcyNSw3ICs4MzUsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndjaGdhdAotaW50CW12d2NoZ2F0KAoraW50CShtdndjaGdhdCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzM2LDIxICs4NDYsMjEgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3ZGVsY2gKLWludAltdndkZWxjaCgKK2ludAkobXZ3ZGVsY2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2dldGNoCi1pbnQJbXZ3Z2V0Y2goCitpbnQJKG12d2dldGNoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndnZXRuc3RyCi1pbnQJbXZ3Z2V0bnN0cigKK2ludAkobXZ3Z2V0bnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzU5LDcgKzg2OSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2dldHN0cgotaW50CW12d2dldHN0cigKK2ludAkobXZ3Z2V0c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03NjcsNyArODc3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aGxpbmUKLWludAltdndobGluZSgKK2ludAkobXZ3aGxpbmUpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTc3NiwxNCArODg2LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luY2gKLWNodHlwZQltdndpbmNoKAorY2h0eXBlCShtdndpbmNoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CiAKICN1bmRlZiBtdndpbmNobnN0cgotaW50CW12d2luY2huc3RyKAoraW50CShtdndpbmNobnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzkyLDcgKzkwMiw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luY2hzdHIKLWludAltdndpbmNoc3RyKAoraW50CShtdndpbmNoc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04MDAsNyArOTEwLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5uc3RyCi1pbnQJbXZ3aW5uc3RyKAoraW50CShtdndpbm5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgwOSw3ICs5MTksNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbnNjaAotaW50CW12d2luc2NoKAoraW50CShtdndpbnNjaCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODE3LDcgKzkyNyw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luc25zdHIKLWludAltdndpbnNuc3RyKAoraW50CShtdndpbnNuc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04MjYsNyArOTM2LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5zc3RyCi1pbnQJbXZ3aW5zc3RyKAoraW50CShtdndpbnNzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgzNCw3ICs5NDQsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbnN0cgotaW50CW12d2luc3RyKAoraW50CShtdndpbnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODQyLDcgKzk1Miw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d3ZsaW5lCi1pbnQJbXZ3dmxpbmUoCitpbnQJKG12d3ZsaW5lKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04NTEsMTE3ICs5NjEsMTE3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIFBBSVJfTlVNQkVSCi1pbnQJUEFJUl9OVU1CRVIoCitpbnQJKFBBSVJfTlVNQkVSKSgKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHJlZHJhd3dpbgotaW50CXJlZHJhd3dpbigKK2ludAkocmVkcmF3d2luKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiByZWZyZXNoCi1pbnQJcmVmcmVzaCh2b2lkKQoraW50CShyZWZyZXNoKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBzY3JsCi1pbnQJc2NybCgKK2ludAkoc2NybCkoCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBzY3JvbGwKLWludAlzY3JvbGwoCitpbnQJKHNjcm9sbCkoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc2V0c2NycmVnCi1pbnQJc2V0c2NycmVnKAoraW50CShzZXRzY3JyZWcpKAogCQlpbnQJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc3RhbmRvdXQKLWludAlzdGFuZG91dCh2b2lkKQoraW50CShzdGFuZG91dCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc3RhbmRlbmQKLWludAlzdGFuZGVuZCh2b2lkKQoraW50CShzdGFuZGVuZCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdGltZW91dAotdm9pZAl0aW1lb3V0KAordm9pZAkodGltZW91dCkoCiAJCWludAl6KQogCQl7IC8qIHZvaWQgKi8gfQogCiAjdW5kZWYgdG91Y2hsaW5lCi1pbnQJdG91Y2hsaW5lKAoraW50CSh0b3VjaGxpbmUpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRvdWNod2luCi1pbnQJdG91Y2h3aW4oCitpbnQJKHRvdWNod2luKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB1bnRvdWNod2luCi1pbnQJdW50b3VjaHdpbigKK2ludAkodW50b3VjaHdpbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdmxpbmUKLWludAl2bGluZSgKK2ludAkodmxpbmUpKAogCQljaHR5cGUJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdndfcHJpbnR3Ci1pbnQJdndfcHJpbnR3KAoraW50CSh2d19wcmludHcpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2hhciAqYTIsIAogCQl2YV9saXN0CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZ3X3NjYW53Ci1pbnQJdndfc2NhbncoCitpbnQJKHZ3X3NjYW53KSgKIAkJV0lORE9XCSphMSwgCi0JCWNoYXIJKmEyLCAKKwkJY29uc3QgY2hhciAqYTIsIAogCQl2YV9saXN0CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhZGRjaHN0cgotaW50CXdhZGRjaHN0cigKK2ludAkod2FkZGNoc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IGNodHlwZSAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2FkZHN0cgotaW50CXdhZGRzdHIoCitpbnQJKHdhZGRzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2F0dHJvbgotaW50CXdhdHRyb24oCitpbnQJKHdhdHRyb24pKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhdHRyb2ZmCi1pbnQJd2F0dHJvZmYoCitpbnQJKHdhdHRyb2ZmKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YXR0cnNldAotaW50CXdhdHRyc2V0KAoraW50CSh3YXR0cnNldCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2F0dHJfZ2V0Ci1pbnQJd2F0dHJfZ2V0KAoraW50CSh3YXR0cl9nZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJYXR0cl90CSphMiwgCiAJCXNob3J0CSphMywgCkBAIC05NjksNyArMTA3OSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhdHRyX3NldAotaW50CXdhdHRyX3NldCgKK2ludAkod2F0dHJfc2V0KSgKIAkJV0lORE9XCSphMSwgCiAJCWF0dHJfdAlhMiwgCiAJCXNob3J0CWEzLCAKQEAgLTk3NywxNTggKzEwODcsMTczIEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdkZWxldGVsbgotaW50CXdkZWxldGVsbigKK2ludAkod2RlbGV0ZWxuKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3Z2V0c3RyCi1pbnQJd2dldHN0cigKK2ludAkod2dldHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3aW5jaHN0cgotaW50CXdpbmNoc3RyKAoraW50CSh3aW5jaHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljaHR5cGUJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbnNlcnRsbgotaW50CXdpbnNlcnRsbigKK2ludAkod2luc2VydGxuKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3aW5zc3RyCi1pbnQJd2luc3N0cigKK2ludAkod2luc3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljb25zdCBjaGFyICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3aW5zdHIKLWludAl3aW5zdHIoCitpbnQJKHdpbnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3c3RhbmRvdXQKLWludAl3c3RhbmRvdXQoCitpbnQJKHdzdGFuZG91dCkoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd3N0YW5kZW5kCi1pbnQJd3N0YW5kZW5kKAoraW50CSh3c3RhbmRlbmQpKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGF0dHJzCi1pbnQJZ2V0YXR0cnMoCitpbnQJKGdldGF0dHJzKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRjdXJ4Ci1pbnQJZ2V0Y3VyeCgKK2ludAkoZ2V0Y3VyeCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0Y3VyeQotaW50CWdldGN1cnkoCitpbnQJKGdldGN1cnkpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGJlZ3gKLWludAlnZXRiZWd4KAoraW50CShnZXRiZWd4KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRiZWd5Ci1pbnQJZ2V0YmVneSgKK2ludAkoZ2V0YmVneSkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0bWF4eAotaW50CWdldG1heHgoCitpbnQJKGdldG1heHgpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldG1heHkKLWludAlnZXRtYXh5KAoraW50CShnZXRtYXh5KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRwYXJ4Ci1pbnQJZ2V0cGFyeCgKK2ludAkoZ2V0cGFyeCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0cGFyeQotaW50CWdldHBhcnkoCitpbnQJKGdldHBhcnkpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdnZXRwYXJlbnQKLVdJTkRPVwkqd2dldHBhcmVudCgKK1dJTkRPVwkqKHdnZXRwYXJlbnQpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CiAKICN1bmRlZiBpc19jbGVhcmVkCi1OQ1VSU0VTX0JPT0wgaXNfY2xlYXJlZCgKK05DVVJTRVNfQk9PTCAoaXNfY2xlYXJlZCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfaWRjb2sKLU5DVVJTRVNfQk9PTCBpc19pZGNvaygKK05DVVJTRVNfQk9PTCAoaXNfaWRjb2spKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX2lkbG9rCi1OQ1VSU0VTX0JPT0wgaXNfaWRsb2soCitOQ1VSU0VTX0JPT0wgKGlzX2lkbG9rKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19pbW1lZG9rCi1OQ1VSU0VTX0JPT0wgaXNfaW1tZWRvaygKK05DVVJTRVNfQk9PTCAoaXNfaW1tZWRvaykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfa2V5cGFkCi1OQ1VSU0VTX0JPT0wgaXNfa2V5cGFkKAorTkNVUlNFU19CT09MIChpc19rZXlwYWQpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX2xlYXZlb2sKLU5DVVJTRVNfQk9PTCBpc19sZWF2ZW9rKAorTkNVUlNFU19CT09MIChpc19sZWF2ZW9rKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19ub2RlbGF5Ci1OQ1VSU0VTX0JPT0wgaXNfbm9kZWxheSgKK05DVVJTRVNfQk9PTCAoaXNfbm9kZWxheSkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfbm90aW1lb3V0Ci1OQ1VSU0VTX0JPT0wgaXNfbm90aW1lb3V0KAorTkNVUlNFU19CT09MIChpc19ub3RpbWVvdXQpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX3BhZAorTkNVUlNFU19CT09MIChpc19wYWQpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX3Njcm9sbG9rCi1OQ1VSU0VTX0JPT0wgaXNfc2Nyb2xsb2soCitOQ1VSU0VTX0JPT0wgKGlzX3Njcm9sbG9rKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19zdWJ3aW4KK05DVVJTRVNfQk9PTCAoaXNfc3Vid2luKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19zeW5jb2sKLU5DVVJTRVNfQk9PTCBpc19zeW5jb2soCitOQ1VSU0VTX0JPT0wgKGlzX3N5bmNvaykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgd2dldGRlbGF5CitpbnQJKHdnZXRkZWxheSkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgd2dldHNjcnJlZwotaW50CXdnZXRzY3JyZWcoCitpbnQJKHdnZXRzY3JyZWcpKAogCQljb25zdCBXSU5ET1cgKmExLCAKIAkJaW50CSphMiwgCiAJCWludAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbW91c2VfdHJhZm8KLU5DVVJTRVNfQk9PTCBtb3VzZV90cmFmbygKK05DVVJTRVNfQk9PTCAobW91c2VfdHJhZm8pKAogCQlpbnQJKmExLCAKIAkJaW50CSphMiwgCiAJCU5DVVJTRVNfQk9PTCB6KQpAQCAtMTEzNiwyMSArMTI2MSwzOSBAQAogCiAvKiAuL2Jhc2UvbGliX2dldGNoLmMgKi8KIAotI2luY2x1ZGUgPGZpZm9fZGVmcy5oPgotCiAjdW5kZWYgX25jX0VTQ0RFTEFZCiBpbnQJX25jX0VTQ0RFTEFZKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19wdHJfRXNjZGVsYXkKK2ludAkqX25jX3B0cl9Fc2NkZWxheSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIHNldF9lc2NkZWxheV9zcAoraW50CXNldF9lc2NkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2V0X2VzY2RlbGF5CiBpbnQJc2V0X2VzY2RlbGF5KAogCQlpbnQJdmFsdWUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGdldF9lc2NkZWxheV9zcAoraW50CWdldF9lc2NkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0X2VzY2RlbGF5CitpbnQJZ2V0X2VzY2RlbGF5KHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY193Z2V0Y2gKIGludAlfbmNfd2dldGNoKAogCQlXSU5ET1cJKndpbiwgCi0JCXVuc2lnbmVkIGxvbmcgKnJlc3VsdCwgCisJCWludAkqcmVzdWx0LCAKIAkJaW50CXVzZV9tZXRhKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKQEAgLTEyMDQsNiArMTM0Nyw3IEBACiAKICN1bmRlZiBfbmNfaW5zZXJ0X2NoCiBpbnQJX25jX2luc2VydF9jaCgKKwkJU0NSRUVOCSpzcCwgCiAJCVdJTkRPVwkqd2luLCAKIAkJY2h0eXBlCWNoKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0xMjQyLDYgKzEzODYsMTEgQEAKIAogLyogLi9iYXNlL2xpYl9pc2VuZHdpbi5jICovCiAKKyN1bmRlZiBpc2VuZHdpbl9zcAorTkNVUlNFU19CT09MIGlzZW5kd2luX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKICN1bmRlZiBpc2VuZHdpbgogTkNVUlNFU19CT09MIGlzZW5kd2luKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KQEAgLTEyNTYsMTYgKzE0MDUsMzUgQEAKIAogLyogLi9iYXNlL2xpYl9tb3VzZS5jICovCiAKKyN1bmRlZiBnZXRtb3VzZV9zcAoraW50CWdldG1vdXNlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTUVWRU5UCSphZXZlbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGdldG1vdXNlCiBpbnQJZ2V0bW91c2UoCiAJCU1FVkVOVAkqYWV2ZW50KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB1bmdldG1vdXNlX3NwCitpbnQJdW5nZXRtb3VzZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCU1FVkVOVAkqYWV2ZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1bmdldG1vdXNlCiBpbnQJdW5nZXRtb3VzZSgKIAkJTUVWRU5UCSphZXZlbnQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG1vdXNlbWFza19zcAorbW1hc2tfdAltb3VzZW1hc2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQltbWFza190CW5ld21hc2ssIAorCQltbWFza190CSpvbGRtYXNrKQorCQl7IHJldHVybigqKG1tYXNrX3QgKikwKTsgfQorCiAjdW5kZWYgbW91c2VtYXNrCiBtbWFza190CW1vdXNlbWFzaygKIAkJbW1hc2tfdAluZXdtYXNrLCAKQEAgLTEyNzksMTQgKzE0NDcsMzAgQEAKIAkJaW50CXgpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIG1vdXNlaW50ZXJ2YWxfc3AKK2ludAltb3VzZWludGVydmFsX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1heGNsaWNrKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBtb3VzZWludGVydmFsCiBpbnQJbW91c2VpbnRlcnZhbCgKIAkJaW50CW1heGNsaWNrKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBfbmNfaGFzX21vdXNlCi1pbnQJX25jX2hhc19tb3VzZSh2b2lkKQotCQl7IHJldHVybigqKGludCAqKTApOyB9CitOQ1VSU0VTX0JPT0wgX25jX2hhc19tb3VzZSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX21vdXNlX3NwCitOQ1VSU0VTX0JPT0wgaGFzX21vdXNlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfbW91c2UKK05DVVJTRVNfQk9PTCBoYXNfbW91c2Uodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgd21vdXNlX3RyYWZvCiBOQ1VSU0VTX0JPT0wgd21vdXNlX3RyYWZvKApAQCAtMTMwNywyNCArMTQ5MSw3MiBAQAogCiAvKiAuL3R0eS9saWJfbXZjdXIuYyAqLwogCisjdW5kZWYgX25jX21zZWNfY29zdF9zcAoraW50CV9uY19tc2VjX2Nvc3Rfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpjb25zdCBjYXAsIAorCQlpbnQJYWZmY250KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfbXNlY19jb3N0CiBpbnQJX25jX21zZWNfY29zdCgKIAkJY29uc3QgY2hhciAqY29uc3QgY2FwLCAKIAkJaW50CWFmZmNudCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX212Y3VyX3Jlc3VtZV9zcAordm9pZAlfbmNfbXZjdXJfcmVzdW1lX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX212Y3VyX3Jlc3VtZQogdm9pZAlfbmNfbXZjdXJfcmVzdW1lKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfbXZjdXJfaW5pdF9zcAordm9pZAlfbmNfbXZjdXJfaW5pdF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19tdmN1cl9pbml0CiB2b2lkCV9uY19tdmN1cl9pbml0KHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfbXZjdXJfd3JhcF9zcAordm9pZAlfbmNfbXZjdXJfd3JhcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19tdmN1cl93cmFwCiB2b2lkCV9uY19tdmN1cl93cmFwKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfbXZjdXJfc3AKK2ludAlfbmNfbXZjdXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJeW9sZCwgCisJCWludAl4b2xkLCAKKwkJaW50CXluZXcsIAorCQlpbnQJeG5ldykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX212Y3VyCitpbnQJX25jX212Y3VyKAorCQlpbnQJeW9sZCwgCisJCWludAl4b2xkLCAKKwkJaW50CXluZXcsIAorCQlpbnQJeG5ldykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZjdXJfc3AKK2ludAltdmN1cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBtdmN1cgogaW50CW12Y3VyKAogCQlpbnQJeW9sZCwgCkBAIC0xMzQ3LDE3ICsxNTc5LDM1IEBACiAKIC8qIC4vYmFzZS9saWJfbmV3dGVybS5jICovCiAKKyN1bmRlZiBmaWx0ZXJfc3AKK3ZvaWQJZmlsdGVyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgZmlsdGVyCiB2b2lkCWZpbHRlcih2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgbm9maWx0ZXJfc3AKK3ZvaWQJbm9maWx0ZXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBub2ZpbHRlcgogdm9pZAlub2ZpbHRlcih2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgbmV3dGVybV9zcAorU0NSRUVOCSpuZXd0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCUZJTEUJKm9mcCwgCisJCUZJTEUJKmlmcCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKwogI3VuZGVmIG5ld3Rlcm0KIFNDUkVFTgkqbmV3dGVybSgKLQkJY2hhcgkqbmFtZSwgCisJCWNvbnN0IGNoYXIgKm5hbWUsIAogCQlGSUxFCSpvZnAsIAogCQlGSUxFCSppZnApCiAJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CkBAIC0xMzY5LDYgKzE2MTksMTUgQEAKIAkJV0lORE9XCSp3aW4pCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG5ld3dpbl9zcAorV0lORE9XCSpuZXd3aW5fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbnVtX2xpbmVzLCAKKwkJaW50CW51bV9jb2x1bW5zLCAKKwkJaW50CWJlZ3ksIAorCQlpbnQJYmVneCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKwogI3VuZGVmIG5ld3dpbgogV0lORE9XCSpuZXd3aW4oCiAJCWludAludW1fbGluZXMsIApAQCAtMTM5NSw4ICsxNjU0LDkgQEAKIAkJaW50CXgpCiAJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CiAKLSN1bmRlZiBfbmNfbWFrZW5ldwotV0lORE9XCSpfbmNfbWFrZW5ldygKKyN1bmRlZiBfbmNfbWFrZW5ld19zcAorV0lORE9XCSpfbmNfbWFrZW5ld19zcCgKKwkJU0NSRUVOCSpzcCwgCiAJCWludAludW1fbGluZXMsIAogCQlpbnQJbnVtX2NvbHVtbnMsIAogCQlpbnQJYmVneSwgCkBAIC0xNDA0LDE3ICsxNjY0LDM3IEBACiAJCWludAlmbGFncykKIAkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KIAotI3VuZGVmIF9uY19zY3JlZW5fb2YKLVNDUkVFTgkqX25jX3NjcmVlbl9vZigKLQkJV0lORE9XCSp3aW4pCi0JCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisjdW5kZWYgX25jX2N1cnNjcl9vZgorV0lORE9XCSpfbmNfY3Vyc2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX25ld3Njcl9vZgorV0lORE9XCSpfbmNfbmV3c2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX3N0ZHNjcl9vZgorV0lORE9XCSpfbmNfc3Rkc2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX25sLmMgKi8KIAorI3VuZGVmIG5sX3NwCitpbnQJbmxfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5sCiBpbnQJbmwodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbm9ubF9zcAoraW50CW5vbmxfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5vbmwKIGludAlub25sKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTE0NDgsNiArMTcyOCwxMyBAQAogCiAvKiAuL2Jhc2UvbGliX3BhZC5jICovCiAKKyN1bmRlZiBuZXdwYWRfc3AKK1dJTkRPVwkqbmV3cGFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWwsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKwogI3VuZGVmIG5ld3BhZAogV0lORE9XCSpuZXdwYWQoCiAJCWludAlsLCAKQEAgLTE1NTMsOSArMTg0MCwxNyBAQAogCiAvKiAuL2Jhc2UvbGliX3Jlc3RhcnQuYyAqLwogCisjdW5kZWYgcmVzdGFydHRlcm1fc3AKK2ludAlyZXN0YXJ0dGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnRlcm1wLCAKKwkJaW50CWZpbGVudW0sIAorCQlpbnQJKmVycnJldCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzdGFydHRlcm0KIGludAlyZXN0YXJ0dGVybSgKLQkJY2hhcgkqdGVybXAsIAorCQljb25zdCBjaGFyICp0ZXJtcCwgCiAJCWludAlmaWxlbnVtLCAKIAkJaW50CSplcnJyZXQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTE1NjUsMjAgKzE4NjAsMjAgQEAKICN1bmRlZiB2d3NjYW53CiBpbnQJdndzY2FudygKIAkJV0lORE9XCSp3aW4sIAotCQljaGFyCSpmbXQsIAorCQljb25zdCBjaGFyICpmbXQsIAogCQl2YV9saXN0CWFyZ3ApCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNjYW53CiBpbnQJc2NhbncoCi0JCWNoYXIJKmZtdCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCiAJCS4uLikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd3NjYW53CiBpbnQJd3NjYW53KAogCQlXSU5ET1cJKndpbiwgCi0JCWNoYXIJKmZtdCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCiAJCS4uLikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCkBAIC0xNTg2LDcgKzE4ODEsNyBAQAogaW50CW12c2NhbncoCiAJCWludAl5LCAKIAkJaW50CXgsIAotCQljaGFyCSpmbXQsIAorCQljb25zdCBjaGFyICpmbXQsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIApAQCAtMTU5NSwxMiArMTg5MCwxOCBAQAogCQlXSU5ET1cJKndpbiwgCiAJCWludAl5LCAKIAkJaW50CXgsIAotCQljaGFyCSpmbXQsIAorCQljb25zdCBjaGFyICpmbXQsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9zY3JlZW4uYyAqLwogCisjdW5kZWYgZ2V0d2luX3NwCitXSU5ET1cJKmdldHdpbl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKmZpbGVwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCiAjdW5kZWYgZ2V0d2luCiBXSU5ET1cJKmdldHdpbigKIAkJRklMRQkqZmlsZXApCkBAIC0xNjEyLDYgKzE5MTMsMTIgQEAKIAkJRklMRQkqZmlsZXApCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNjcl9yZXN0b3JlX3NwCitpbnQJc2NyX3Jlc3RvcmVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzY3JfcmVzdG9yZQogaW50CXNjcl9yZXN0b3JlKAogCQljb25zdCBjaGFyICpmaWxlKQpAQCAtMTYyMiwxMSArMTkyOSwyMyBAQAogCQljb25zdCBjaGFyICpmaWxlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzY3JfaW5pdF9zcAoraW50CXNjcl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2NyX2luaXQKIGludAlzY3JfaW5pdCgKIAkJY29uc3QgY2hhciAqZmlsZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgc2NyX3NldF9zcAoraW50CXNjcl9zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzY3Jfc2V0CiBpbnQJc2NyX3NldCgKIAkJY29uc3QgY2hhciAqZmlsZSkKQEAgLTE2NzgsMTUgKzE5OTcsMzQgQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zZXR1cHNjcmVlbl9zcAoraW50CV9uY19zZXR1cHNjcmVlbl9zcCgKKwkJU0NSRUVOCSoqc3BwLCAKKwkJaW50CXNsaW5lcywgCisJCWludAlzY29sdW1ucywgCisJCUZJTEUJKm91dHB1dCwgCisJCWludAlmaWx0ZXJlZCwgCisJCWludAlzbGtfZm9ybWF0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2V0dXBzY3JlZW4KIGludAlfbmNfc2V0dXBzY3JlZW4oCiAJCWludAlzbGluZXMsIAogCQlpbnQJc2NvbHVtbnMsIAogCQlGSUxFCSpvdXRwdXQsIAotCQlOQ1VSU0VTX0JPT0wgZmlsdGVyZWQsIAorCQlpbnQJZmlsdGVyZWQsIAogCQlpbnQJc2xrX2Zvcm1hdCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3JpcG9mZmxpbmVfc3AKK2ludAlfbmNfcmlwb2ZmbGluZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlsaW5lLCAKKwkJaW50CSgqaW5pdCkoCisJCVdJTkRPVwkqcDEsIAorCQlpbnQJcDIpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfcmlwb2ZmbGluZQogaW50CV9uY19yaXBvZmZsaW5lKAogCQlpbnQJbGluZSwgCkBAIC0xNjk1LDYgKzIwMzMsMTUgQEAKIAkJaW50CXAyKSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmlwb2ZmbGluZV9zcAoraW50CXJpcG9mZmxpbmVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbGluZSwgCisJCWludAkoKmluaXQpKAorCQlXSU5ET1cJKnAxLCAKKwkJaW50CXAyKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmlwb2ZmbGluZQogaW50CXJpcG9mZmxpbmUoCiAJCWludAlsaW5lLCAKQEAgLTE3MDUsMTggKzIwNTIsMzcgQEAKIAogLyogLi9iYXNlL2xpYl9zbGsuYyAqLwogCisjdW5kZWYgX25jX2Zvcm1hdF9zbGtzCitpbnQJX25jX2Zvcm1hdF9zbGtzKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvbHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19zbGtfaW5pdGlhbGl6ZQogaW50CV9uY19zbGtfaW5pdGlhbGl6ZSgKIAkJV0lORE9XCSpzdHdpbiwgCiAJCWludAljb2xzKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzbGtfcmVzdG9yZV9zcAoraW50CXNsa19yZXN0b3JlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfcmVzdG9yZQogaW50CXNsa19yZXN0b3JlKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9zbGthdHJfc2V0LmMgKi8KIAorI3VuZGVmIHNsa19hdHRyX3NldF9zcAoraW50CXNsa19hdHRyX3NldF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGF0dHJfdCBhdHRyLCAKKwkJc2hvcnQJY29sb3JfcGFpcl9udW1iZXIsIAorCQl2b2lkCSpvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfYXR0cl9zZXQKIGludAlzbGtfYXR0cl9zZXQoCiAJCWNvbnN0IGF0dHJfdCBhdHRyLCAKQEAgLTE3MjYsNiArMjA5MiwxMiBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2F0cm9mLmMgKi8KIAorI3VuZGVmIHNsa19hdHRyb2ZmX3NwCitpbnQJc2xrX2F0dHJvZmZfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaHR5cGUgYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2F0dHJvZmYKIGludAlzbGtfYXR0cm9mZigKIAkJY29uc3QgY2h0eXBlIGF0dHIpCkBAIC0xNzMzLDYgKzIxMDUsMTIgQEAKIAogLyogLi9iYXNlL2xpYl9zbGthdHJvbi5jICovCiAKKyN1bmRlZiBzbGtfYXR0cm9uX3NwCitpbnQJc2xrX2F0dHJvbl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNodHlwZSBhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfYXR0cm9uCiBpbnQJc2xrX2F0dHJvbigKIAkJY29uc3QgY2h0eXBlIGF0dHIpCkBAIC0xNzQwLDYgKzIxMTgsMTIgQEAKIAogLyogLi9iYXNlL2xpYl9zbGthdHJzZXQuYyAqLwogCisjdW5kZWYgc2xrX2F0dHJzZXRfc3AKK2ludAlzbGtfYXR0cnNldF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNodHlwZSBhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfYXR0cnNldAogaW50CXNsa19hdHRyc2V0KAogCQljb25zdCBjaHR5cGUgYXR0cikKQEAgLTE3NDcsMTggKzIxMzEsMzQgQEAKIAogLyogLi9iYXNlL2xpYl9zbGthdHRyLmMgKi8KIAorI3VuZGVmIHNsa19hdHRyX3NwCithdHRyX3QJc2xrX2F0dHJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooYXR0cl90ICopMCk7IH0KKwogI3VuZGVmIHNsa19hdHRyCiBhdHRyX3QJc2xrX2F0dHIodm9pZCkKIAkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX3Nsa2NsZWFyLmMgKi8KIAorI3VuZGVmIHNsa19jbGVhcl9zcAoraW50CXNsa19jbGVhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2NsZWFyCiBpbnQJc2xrX2NsZWFyKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9zbGtjb2xvci5jICovCiAKKyN1bmRlZiBzbGtfY29sb3Jfc3AKK2ludAlzbGtfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlcikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2NvbG9yCiBpbnQJc2xrX2NvbG9yKAogCQlzaG9ydAljb2xvcl9wYWlyX251bWJlcikKQEAgLTE3NjYsNiArMjE2NiwxMiBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2luaXQuYyAqLwogCisjdW5kZWYgc2xrX2luaXRfc3AKK2ludAlzbGtfaW5pdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19pbml0CiBpbnQJc2xrX2luaXQoCiAJCWludAlmb3JtYXQpCkBAIC0xNzczLDYgKzIxNzksMTIgQEAKIAogLyogLi9iYXNlL2xpYl9zbGtsYWIuYyAqLwogCisjdW5kZWYgc2xrX2xhYmVsX3NwCitjaGFyCSpzbGtfbGFiZWxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKICN1bmRlZiBzbGtfbGFiZWwKIGNoYXIJKnNsa19sYWJlbCgKIAkJaW50CW4pCkBAIC0xNzgwLDE2ICsyMTkyLDM0IEBACiAKIC8qIC4vYmFzZS9saWJfc2xrcmVmci5jICovCiAKKyN1bmRlZiBzbGtfbm91dHJlZnJlc2hfc3AKK2ludAlzbGtfbm91dHJlZnJlc2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19ub3V0cmVmcmVzaAogaW50CXNsa19ub3V0cmVmcmVzaCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzbGtfcmVmcmVzaF9zcAoraW50CXNsa19yZWZyZXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfcmVmcmVzaAogaW50CXNsa19yZWZyZXNoKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogLyogLi9iYXNlL2xpYl9zbGtzZXQuYyAqLwogCisjdW5kZWYgc2xrX3NldF9zcAoraW50CXNsa19zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJaSwgCisJCWNvbnN0IGNoYXIgKmFzdHIsIAorCQlpbnQJZm9ybWF0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfc2V0CiBpbnQJc2xrX3NldCgKIAkJaW50CWksIApAQCAtMTc5OSw2ICsyMjI5LDExIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrdG91Y2guYyAqLwogCisjdW5kZWYgc2xrX3RvdWNoX3NwCitpbnQJc2xrX3RvdWNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfdG91Y2gKIGludAlzbGtfdG91Y2godm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMTgzNCwxMiArMjI2OSwyNCBAQAogCiAvKiAuL3RyYWNlL2xpYl90cmFjZW1zZS5jICovCiAKKyN1bmRlZiBfbmNfdHJhY2VfbW1hc2tfdAorY2hhcgkqX25jX3RyYWNlX21tYXNrX3QoCisJCVNDUkVFTgkqc3AsIAorCQltbWFza190CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgX25jX3RyYWNlbW91c2UKIGNoYXIJKl9uY190cmFjZW1vdXNlKAogCQlTQ1JFRU4JKnNwLCAKIAkJTUVWRU5UIGNvbnN0ICplcCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKKyN1bmRlZiBfbmNfcmV0cmFjZV9tbWFza190CittbWFza190CV9uY19yZXRyYWNlX21tYXNrX3QoCisJCVNDUkVFTgkqc3AsIAorCQltbWFza190CWNvZGUpCisJCXsgcmV0dXJuKCoobW1hc2tfdCAqKTApOyB9CisKICN1bmRlZiBfdHJhY2Vtb3VzZQogY2hhcgkqX3RyYWNlbW91c2UoCiAJCU1FVkVOVCBjb25zdCAqZXApCkBAIC0xODQ3LDExICsyMjk0LDkgQEAKIAogLyogLi90dHkvbGliX3RzdHAuYyAqLwogCi0jaW5jbHVkZSA8U2lnQWN0aW9uLmg+Ci0KICN1bmRlZiBfbmNfc2lnbmFsX2hhbmRsZXIKIHZvaWQJX25jX3NpZ25hbF9oYW5kbGVyKAotCQlOQ1VSU0VTX0JPT0wgZW5hYmxlKQorCQlpbnQJZW5hYmxlKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2Jhc2UvbGliX3VuZ2V0Y2guYyAqLwpAQCAtMTg2MSw4ICsyMzA2LDggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAotI3VuZGVmIF9uY191bmdldGNoCi1pbnQJX25jX3VuZ2V0Y2goCisjdW5kZWYgdW5nZXRjaF9zcAoraW50CXVuZ2V0Y2hfc3AoCiAJCVNDUkVFTgkqc3AsIAogCQlpbnQJY2gpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTE4NzQsMTEgKzIzMTksMjMgQEAKIAogLyogLi90dHkvbGliX3ZpZGF0dHIuYyAqLwogCisjdW5kZWYgdmlkcHV0c19zcAoraW50CXZpZHB1dHNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJbmV3bW9kZSwgCisJCU5DVVJTRVNfT1VUQ19zcCBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB2aWRwdXRzCiBpbnQJdmlkcHV0cygKIAkJY2h0eXBlCW5ld21vZGUsIAotCQlpbnQJKCpvdXRjKSgKLQkJaW50CXAxKSkKKwkJTkNVUlNFU19PVVRDIG91dGMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZGF0dHJfc3AKK2ludAl2aWRhdHRyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCW5ld21vZGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZpZGF0dHIKQEAgLTE4ODYsNiArMjM0MywxMSBAQAogCQljaHR5cGUJbmV3bW9kZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdGVybWF0dHJzX3NwCitjaHR5cGUJdGVybWF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKICN1bmRlZiB0ZXJtYXR0cnMKIGNodHlwZQl0ZXJtYXR0cnModm9pZCkKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQpAQCAtMTk2NiwxMiArMjQyOCwyNCBAQAogCiAvKiAuL2Jhc2UvbmNfcGFuZWwuYyAqLwogCisjdW5kZWYgX25jX3BhbmVsaG9va19zcAorc3RydWN0IHBhbmVsaG9vayAqX25jX3BhbmVsaG9va19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgcGFuZWxob29rICoqKTApOyB9CisKICN1bmRlZiBfbmNfcGFuZWxob29rCiBzdHJ1Y3QgcGFuZWxob29rICpfbmNfcGFuZWxob29rKHZvaWQpCiAJCXsgcmV0dXJuKCooc3RydWN0IHBhbmVsaG9vayAqKikwKTsgfQogCiAvKiAuL2Jhc2Uvc2FmZV9zcHJpbnRmLmMgKi8KIAorI3VuZGVmIF9uY19wcmludGZfc3RyaW5nX3NwCitjaGFyCSpfbmNfcHJpbnRmX3N0cmluZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCXZhX2xpc3QJYXApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgX25jX3ByaW50Zl9zdHJpbmcKIGNoYXIJKl9uY19wcmludGZfc3RyaW5nKAogCQljb25zdCBjaGFyICpmbXQsIApAQCAtMTk4MCwxMyArMjQ1NCwyNCBAQAogCiAvKiAuL3R0eS90dHlfdXBkYXRlLmMgKi8KIAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjdW5kZWYgZG91cGRhdGVfc3AKK2ludAlkb3VwZGF0ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZG91cGRhdGUKIGludAlkb3VwZGF0ZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfc2Nyb2xsbl9zcAoraW50CV9uY19zY3JvbGxuX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW4sIAorCQlpbnQJdG9wLCAKKwkJaW50CWJvdCwgCisJCWludAltYXh5KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2Nyb2xsbgogaW50CV9uY19zY3JvbGxuKAogCQlpbnQJbiwgCkBAIC0xOTk1LDE4ICsyNDgwLDM5IEBACiAJCWludAltYXh5KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfc2NyZWVuX3Jlc3VtZV9zcAordm9pZAlfbmNfc2NyZWVuX3Jlc3VtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JlZW5fcmVzdW1lCiB2b2lkCV9uY19zY3JlZW5fcmVzdW1lKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfc2NyZWVuX2luaXRfc3AKK3ZvaWQJX25jX3NjcmVlbl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX3NjcmVlbl9pbml0CiB2b2lkCV9uY19zY3JlZW5faW5pdCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX3NjcmVlbl93cmFwX3NwCit2b2lkCV9uY19zY3JlZW5fd3JhcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JlZW5fd3JhcAogdm9pZAlfbmNfc2NyZWVuX3dyYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19kb194bWNfZ2xpdGNoX3NwCit2b2lkCV9uY19kb194bWNfZ2xpdGNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJYXR0cl90CXByZXZpb3VzKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2RvX3htY19nbGl0Y2gKIHZvaWQJX25jX2RvX3htY19nbGl0Y2goCiAJCWF0dHJfdAlwcmV2aW91cykKQEAgLTIwMjQsMTIgKzI1MzAsNiBAQAogCQl2YV9saXN0CWFwKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAotLyogLi9iYXNlL21lbW1vdmUuYyAqLwotCi0jdW5kZWYgX25jX21lbW1vdmUKLXZvaWQJX25jX21lbW1vdmUodm9pZCkKLQkJeyAvKiB2b2lkICovIH0KLQogLyogLi9iYXNlL3Zzc2NhbmYuYyAqLwogCiAjdW5kZWYgX25jX3Zzc2NhbmYKQEAgLTIwMzgsMTIgKzI1MzgsMTYgQEAKIAogLyogLi9iYXNlL2xpYl9mcmVlYWxsLmMgKi8KIAotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KLQogI3VuZGVmIF9uY19mcmVlYWxsCiB2b2lkCV9uY19mcmVlYWxsKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfZnJlZV9hbmRfZXhpdF9zcAordm9pZAlfbmNfZnJlZV9hbmRfZXhpdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2RlKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2ZyZWVfYW5kX2V4aXQKIHZvaWQJX25jX2ZyZWVfYW5kX2V4aXQoCiAJCWludAljb2RlKQpAQCAtMjA2Myw2ICsyNTY3LDI0IEBACiAJCWF0dHJfdAlhdCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19EZWxDaGFyQ29zdF9zcAoraW50CV9uY19EZWxDaGFyQ29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX0luc0NoYXJDb3N0X3NwCitpbnQJX25jX0luc0NoYXJDb3N0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfVXBkYXRlQXR0cnNfc3AKK3ZvaWQJX25jX1VwZGF0ZUF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCWMpCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfRGVsQ2hhckNvc3QKIGludAlfbmNfRGVsQ2hhckNvc3QoCiAJCWludAljb3VudCkKQEAgLTIwODAsNiArMjYwMiwxMiBAQAogCiAvKiAuL2Jhc2UvbGVnYWN5X2NvZGluZy5jICovCiAKKyN1bmRlZiB1c2VfbGVnYWN5X2NvZGluZ19zcAoraW50CXVzZV9sZWdhY3lfY29kaW5nX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWxldmVsKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1c2VfbGVnYWN5X2NvZGluZwogaW50CXVzZV9sZWdhY3lfY29kaW5nKAogCQlpbnQJbGV2ZWwpCkBAIC0yMDg3LDEwICsyNjE1LDIyIEBACiAKIC8qIC4vYmFzZS9saWJfZGZ0X2ZnYmcuYyAqLwogCisjdW5kZWYgdXNlX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJdXNlX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1c2VfZGVmYXVsdF9jb2xvcnMKIGludAl1c2VfZGVmYXVsdF9jb2xvcnModm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZnLCAKKwkJaW50CWJnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBhc3N1bWVfZGVmYXVsdF9jb2xvcnMKIGludAlhc3N1bWVfZGVmYXVsdF9jb2xvcnMoCiAJCWludAlmZywgCkBAIC0yMDk5LDYgKzI2MzksMTMgQEAKIAogLyogLi90aW5mby9saWJfcHJpbnQuYyAqLwogCisjdW5kZWYgbWNwcmludF9zcAoraW50CW1jcHJpbnRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaGFyCSpkYXRhLCAKKwkJaW50CWxlbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbWNwcmludAogaW50CW1jcHJpbnQoCiAJCWNoYXIJKmRhdGEsIApAQCAtMjEwNywxOCArMjY1NCwzOSBAQAogCiAvKiAuL2Jhc2UvcmVzaXpldGVybS5jICovCiAKKyN1bmRlZiBpc190ZXJtX3Jlc2l6ZWRfc3AKK05DVVJTRVNfQk9PTCBpc190ZXJtX3Jlc2l6ZWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJVG9MaW5lcywgCisJCWludAlUb0NvbHMpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGlzX3Rlcm1fcmVzaXplZAogTkNVUlNFU19CT09MIGlzX3Rlcm1fcmVzaXplZCgKIAkJaW50CVRvTGluZXMsIAogCQlpbnQJVG9Db2xzKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiByZXNpemVfdGVybV9zcAoraW50CXJlc2l6ZV90ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNpemVfdGVybQogaW50CXJlc2l6ZV90ZXJtKAogCQlpbnQJVG9MaW5lcywgCiAJCWludAlUb0NvbHMpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHJlc2l6ZXRlcm1fc3AKK2ludAlyZXNpemV0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNpemV0ZXJtCiBpbnQJcmVzaXpldGVybSgKIAkJaW50CVRvTGluZXMsIApAQCAtMjE2MSw5ICsyNzI5LDYgQEAKIAogLyogLi90aW5mby9hY2Nlc3MuYyAqLwogCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxuY19hbGxvYy5oPgotCiAjdW5kZWYgX25jX3Jvb3RuYW1lCiBjaGFyCSpfbmNfcm9vdG5hbWUoCiAJCWNoYXIJKnBhdGgpCkBAIC0yMjI0LDIyICsyNzg5LDQ0IEBACiAjdW5kZWYgX25jX2NvcHlfdGVybXR5cGUKIHZvaWQJX25jX2NvcHlfdGVybXR5cGUoCiAJCVRFUk1UWVBFICpkc3QsIAotCQlURVJNVFlQRSAqc3JjKQorCQljb25zdCBURVJNVFlQRSAqc3JjKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2NvZGVzLmMgKi8KIAogI3VuZGVmIF9uY19ib29sY29kZXMKLWNoYXIJKmNvbnN0ICpfbmNfYm9vbGNvZGVzKHZvaWQpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sY29kZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKICN1bmRlZiBfbmNfbnVtY29kZXMKLWNoYXIJKmNvbnN0ICpfbmNfbnVtY29kZXModm9pZCkKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9Citjb25zdCBjaGFyICpjb25zdCAqX25jX251bWNvZGVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAjdW5kZWYgX25jX3N0cmNvZGVzCi1jaGFyCSpjb25zdCAqX25jX3N0cmNvZGVzKHZvaWQpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJjb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9jb21wX2NhcHRhYi5jICovCisKKyN1bmRlZiBfbmNfZ2V0X3RhYmxlCitjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqX25jX2dldF90YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF90YWJsZQorY29uc3QgSGFzaFZhbHVlICpfbmNfZ2V0X2hhc2hfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hWYWx1ZSAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQorY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF9pbmZvCitjb25zdCBIYXNoRGF0YSAqX25jX2dldF9oYXNoX2luZm8oCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hEYXRhICoqKTApOyB9CiAKIC8qIC4vdGluZm8vY29tcF9lcnJvci5jICovCiAKQEAgLTIyODcsNiArMjg3NCwyMSBAQAogCQkuLi4pCiAJCXsgLyogdm9pZCAqLyB9CiAKKy8qIC4vdGluZm8vY29tcF9oYXNoLmMgKi8KKworI3VuZGVmIF9uY19maW5kX2VudHJ5CitzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqX25jX2ZpbmRfZW50cnkoCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWNvbnN0IEhhc2hWYWx1ZSAqaGFzaF90YWJsZSkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQorCisjdW5kZWYgX25jX2ZpbmRfdHlwZV9lbnRyeQorc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX3R5cGVfZW50cnkoCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAl0eXBlLCAKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KKwogLyogLi90aW5mby9kYl9pdGVyYXRvci5jICovCiAKICN1bmRlZiBfbmNfdGljX2RpcgpAQCAtMjM4MCw2ICsyOTgyLDEyIEBACiAJCWNvbnN0IGNoYXIgKm5hbWUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19zZXRlbnZfbnVtCit2b2lkCV9uY19zZXRlbnZfbnVtKAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJaW50CXZhbHVlKQorCQl7IC8qIHZvaWQgKi8gfQorCiAvKiAuL3RpbmZvL2hvbWVfdGVybWluZm8uYyAqLwogCiAjdW5kZWYgX25jX2hvbWVfdGVybWluZm8KQEAgLTIzODgsMTUgKzI5OTYsNiBAQAogCiAvKiAuL3RpbmZvL2luaXRfa2V5dHJ5LmMgKi8KIAotI2lmIDAKLQotI2luY2x1ZGUgPGluaXRfa2V5dHJ5Lmg+Ci0KLSN1bmRlZiBfbmNfdGluZm9fZmtleXMKLWNvbnN0IHN0cnVjdCB0aW5mb19ma2V5cyBfbmNfdGluZm9fZmtleXNbXSA9IHswfTsKLQotI2VuZGlmCi0KICN1bmRlZiBfbmNfaW5pdF9rZXl0cnkKIHZvaWQJX25jX2luaXRfa2V5dHJ5KAogCQlTQ1JFRU4JKnNwKQpAQCAtMjQwOCwxNiArMzAwNywxOSBAQAogY2h0eXBlCSpfbmNfYWNzX21hcCh2b2lkKQogCQl7IHJldHVybigqKGNodHlwZSAqKikwKTsgfQogCisjdW5kZWYgX25jX2luaXRfYWNzX3NwCit2b2lkCV9uY19pbml0X2Fjc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19pbml0X2Fjcwogdm9pZAlfbmNfaW5pdF9hY3Modm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90aW5mby9saWJfYmF1ZHJhdGUuYyAqLwogCi0jaW5jbHVkZSA8dGVybWNhcC5oPgotCiBzdHJ1Y3Qgc3BlZWQgewotICAgIGludCBzOyAKKyAgICBzaG9ydCBzOyAKICAgICBpbnQgc3A7IAogfTsKIApAQCAtMjQzMSwyMSArMzAzMyw0NyBAQAogCQlpbnQJQmF1ZFJhdGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGJhdWRyYXRlX3NwCitpbnQJYmF1ZHJhdGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGJhdWRyYXRlCiBpbnQJYmF1ZHJhdGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9jdXJfdGVybS5jICovCiAKKyN1bmRlZiBfbmNfZ2V0X2N1cl90ZXJtX3NwCitURVJNSU5BTCAqX25jX2dldF9jdXJfdGVybV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9jdXJfdGVybQorVEVSTUlOQUwgKl9uY19nZXRfY3VyX3Rlcm0odm9pZCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCiAjdW5kZWYgX25jX2N1cl90ZXJtCiBURVJNSU5BTCAqX25jX2N1cl90ZXJtKHZvaWQpCiAJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KIAorI3VuZGVmIHNldF9jdXJ0ZXJtX3NwCitURVJNSU5BTCAqc2V0X2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKwogI3VuZGVmIHNldF9jdXJ0ZXJtCiBURVJNSU5BTCAqc2V0X2N1cnRlcm0oCiAJCVRFUk1JTkFMICp0ZXJtcCkKIAkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQogCisjdW5kZWYgZGVsX2N1cnRlcm1fc3AKK2ludAlkZWxfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVsX2N1cnRlcm0KIGludAlkZWxfY3VydGVybSgKIAkJVEVSTUlOQUwgKnRlcm1wKQpAQCAtMjQ3NCw2ICszMTAyLDExIEBACiAjdW5kZWYgX25jX3ByZXNjcmVlbgogTkNVUlNFU19QUkVTQ1JFRU4gX25jX3ByZXNjcmVlbjsKIAorI3VuZGVmIF9uY19zY3JlZW5fb2YKK1NDUkVFTgkqX25jX3NjcmVlbl9vZigKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKICN1bmRlZiBfbmNfaW5pdF9wdGhyZWFkcwogdm9pZAlfbmNfaW5pdF9wdGhyZWFkcyh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQpAQCAtMjUwMCwyNCArMzEzMyw0OSBAQAogCiAvKiAuL3RpbmZvL2xpYl9oYXNfY2FwLmMgKi8KIAorI3VuZGVmIGhhc19pY19zcAorTkNVUlNFU19CT09MIGhhc19pY19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaGFzX2ljCiBOQ1VSU0VTX0JPT0wgaGFzX2ljKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIGhhc19pbF9zcAorTkNVUlNFU19CT09MIGhhc19pbF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaGFzX2lsCiBOQ1VSU0VTX0JPT0wgaGFzX2lsKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogLyogLi90aW5mby9saWJfa2VybmVsLmMgKi8KIAorI3VuZGVmIGVyYXNlY2hhcl9zcAorY2hhcgllcmFzZWNoYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKICN1bmRlZiBlcmFzZWNoYXIKIGNoYXIJZXJhc2VjaGFyKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CiAKKyN1bmRlZiBraWxsY2hhcl9zcAorY2hhcglraWxsY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKwogI3VuZGVmIGtpbGxjaGFyCiBjaGFyCWtpbGxjaGFyKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CiAKKyN1bmRlZiBmbHVzaGlucF9zcAoraW50CWZsdXNoaW5wX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBmbHVzaGlucAogaW50CWZsdXNoaW5wKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTI1MjYsMjUgKzMxODQsMzYgQEAKIAogc3RydWN0IGtuIHsgc2hvcnQgb2Zmc2V0OyBpbnQgY29kZTsgfTsKIAotI3VuZGVmIF9uY19rZXluYW1lCi1jaGFyCSpfbmNfa2V5bmFtZSgKKyN1bmRlZiBrZXluYW1lX3NwCitjb25zdCBjaGFyICprZXluYW1lX3NwKAogCQlTQ1JFRU4JKnNwLCAKIAkJaW50CWMpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIGtleW5hbWUKLWNoYXIJKmtleW5hbWUoCitjb25zdCBjaGFyICprZXluYW1lKAogCQlpbnQJYykKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9sb25nbmFtZS5jICovCiAKKyN1bmRlZiBsb25nbmFtZV9zcAorY2hhcgkqbG9uZ25hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgbG9uZ25hbWUKIGNoYXIJKmxvbmduYW1lKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9uYXBtcy5jICovCiAKKyN1bmRlZiBuYXBtc19zcAoraW50CW5hcG1zX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBuYXBtcwogaW50CW5hcG1zKAogCQlpbnQJbXMpCkBAIC0yNTY0LDYgKzMyMzMsMTIgQEAKIAkJTkNVUlNFU19CT09MIGZsYWcpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBoYWxmZGVsYXlfc3AKK2ludAloYWxmZGVsYXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaGFsZmRlbGF5CiBpbnQJaGFsZmRlbGF5KAogCQlpbnQJdCkKQEAgLTI1OTksNTMgKzMyNzQsMTE1IEBACiAJCU5DVVJTRVNfQk9PTCBmbGFnKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgY3Vyc19zZXQKIGludAljdXJzX3NldCgKIAkJaW50CXZpcykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB0eXBlYWhlYWQKIGludAl0eXBlYWhlYWQoCiAJCWludAlmZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaGFzX2tleQogaW50CWhhc19rZXkoCiAJCWludAlrZXljb2RlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfa2V5cGFkCiBpbnQJX25jX2tleXBhZCgKIAkJU0NSRUVOCSpzcCwgCi0JCU5DVVJTRVNfQk9PTCBmbGFnKQorCQlpbnQJZmxhZykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9yYXcuYyAqLwogCisjdW5kZWYgcmF3X3NwCitpbnQJcmF3X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByYXcKIGludAlyYXcodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgY2JyZWFrX3NwCitpbnQJY2JyZWFrX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBjYnJlYWsKIGludAljYnJlYWsodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcWlmbHVzaF9zcAordm9pZAlxaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgcWlmbHVzaAogdm9pZAlxaWZsdXNoKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBub3Jhd19zcAoraW50CW5vcmF3X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBub3JhdwogaW50CW5vcmF3KHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIG5vY2JyZWFrX3NwCitpbnQJbm9jYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5vY2JyZWFrCiBpbnQJbm9jYnJlYWsodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbm9xaWZsdXNoX3NwCit2b2lkCW5vcWlmbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIG5vcWlmbHVzaAogdm9pZAlub3FpZmx1c2godm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIGludHJmbHVzaF9zcAoraW50CWludHJmbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGludHJmbHVzaAogaW50CWludHJmbHVzaCgKIAkJV0lORE9XCSp3aW4sIApAQCAtMjY1NCwxNiArMzM5MSwxMyBAQAogCiAvKiAuL3RpbmZvL2xpYl9zZXR1cC5jICovCiAKLSNpbmNsdWRlIDxsb2NhbGUuaD4KLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSNpbmNsdWRlIDxsYW5naW5mby5oPgotCiAjdW5kZWYgX25jX3R0eXR5cGUKIGNoYXIJKl9uY190dHl0eXBlKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAjdW5kZWYgX25jX3B0cl9MaW5lcwotaW50CSpfbmNfcHRyX0xpbmVzKHZvaWQpCitpbnQJKl9uY19wdHJfTGluZXMoCisJCVNDUkVFTgkqc3ApCiAJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CiAKICN1bmRlZiBfbmNfTElORVMKQEAgLTI2NzEsMTcgKzM0MDUsMjkgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgX25jX3B0cl9Db2xzCi1pbnQJKl9uY19wdHJfQ29scyh2b2lkKQoraW50CSpfbmNfcHRyX0NvbHMoCisJCVNDUkVFTgkqc3ApCiAJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CiAKICN1bmRlZiBfbmNfQ09MUwogaW50CV9uY19DT0xTKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19wdHJfVGFic2l6ZQoraW50CSpfbmNfcHRyX1RhYnNpemUoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CisKICN1bmRlZiBfbmNfVEFCU0laRQogaW50CV9uY19UQUJTSVpFKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNldF90YWJzaXplX3NwCitpbnQJc2V0X3RhYnNpemVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNldF90YWJzaXplCiBpbnQJc2V0X3RhYnNpemUoCiAJCWludAl2YWx1ZSkKQEAgLTI2OTIsMTEgKzM0MzgsMjggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIHVzZV9lbnYKIHZvaWQJdXNlX2VudigKIAkJTkNVUlNFU19CT09MIGYpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCiB2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKIAkJU0NSRUVOCSpzcCwgCkBAIC0yNzA5LDYgKzM0NzIsMTggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zZXR1cF90aW5mbworaW50CV9uY19zZXR1cF90aW5mbygKKwkJY29uc3QgY2hhciAqY29uc3QgdG4sIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY190aW5mb19jbWRjaAordm9pZAlfbmNfdGluZm9fY21kY2goCisJCVRFUk1JTkFMICp0ZXJtcCwgCisJCWludAlwcm90bykKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19nZXRfbG9jYWxlCiBjaGFyCSpfbmNfZ2V0X2xvY2FsZSh2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KQEAgLTI3MjQsMTUgKzM0OTksMTkgQEAKIAogI3VuZGVmIF9uY19zZXR1cHRlcm0KIGludAlfbmNfc2V0dXB0ZXJtKAotCQljaGFyCSp0bmFtZSwgCisJCWNvbnN0IGNoYXIgKnRuYW1lLCAKIAkJaW50CUZpbGVkZXMsIAogCQlpbnQJKmVycnJldCwgCi0JCU5DVVJTRVNfQk9PTCByZXVzZSkKKwkJaW50CXJldXNlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKwogI3VuZGVmIHNldHVwdGVybQogaW50CXNldHVwdGVybSgKLQkJY2hhcgkqdG5hbWUsIAorCQljb25zdCBjaGFyICp0bmFtZSwgCiAJCWludAlGaWxlZGVzLCAKIAkJaW50CSplcnJyZXQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTI3NDQsMzYgKzM1MjMsNjEgQEAKICN1bmRlZiBCQwogY2hhcgkqQkM7CiAKKyN1bmRlZiB0Z2V0ZW50X3NwCitpbnQJdGdldGVudF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB0Z2V0ZW50CiBpbnQJdGdldGVudCgKIAkJY2hhcgkqYnVmcCwgCiAJCWNvbnN0IGNoYXIgKm5hbWUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAotI2lmIDAKLQotI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+Ci0KLSNlbmRpZgorI3VuZGVmIHRnZXRmbGFnX3NwCitpbnQJdGdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdGdldGZsYWcKIGludAl0Z2V0ZmxhZygKLQkJY2hhcgkqaWQpCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB0Z2V0bnVtCiBpbnQJdGdldG51bSgKLQkJY2hhcgkqaWQpCisJCWNvbnN0IGNoYXIgKmlkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0Z2V0c3RyX3NwCitjaGFyCSp0Z2V0c3RyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQsIAorCQljaGFyCSoqYXJlYSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKICN1bmRlZiB0Z2V0c3RyCiBjaGFyCSp0Z2V0c3RyKAotCQljaGFyCSppZCwgCisJCWNvbnN0IGNoYXIgKmlkLCAKIAkJY2hhcgkqKmFyZWEpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCiAKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgdGVybW5hbWUKIGNoYXIJKnRlcm1uYW1lKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQpAQCAtMjc4OSwxOSArMzU5MywzNyBAQAogCiAvKiAuL3RpbmZvL2xpYl90aS5jICovCiAKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHRpZ2V0ZmxhZwogaW50CXRpZ2V0ZmxhZygKLQkJY2hhcgkqc3RyKQorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0bnVtX3NwCitpbnQJdGlnZXRudW1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRpZ2V0bnVtCiBpbnQJdGlnZXRudW0oCi0JCWNoYXIJKnN0cikKKwkJY29uc3QgY2hhciAqc3RyKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0aWdldHN0cl9zcAorY2hhcgkqdGlnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgdGlnZXRzdHIKIGNoYXIJKnRpZ2V0c3RyKAotCQljaGFyCSpzdHIpCisJCWNvbnN0IGNoYXIgKnN0cikKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKIC8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KQEAgLTI4MTMsMTIgKzM2MzUsMTggQEAKIGludAlfbmNfdHBhcm1fYW5hbHl6ZSgKIAkJY29uc3QgY2hhciAqc3RyaW5nLCAKIAkJY2hhcgkqcF9pc19zWzldLCAKLQkJaW50CSpwb3Bjb3VudCkKKwkJaW50CSpfbmNfcG9wY291bnQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRwYXJtCiBjaGFyCSp0cGFybSgKLQkJY2hhcgkqc3RyaW5nLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCkBAIC0yODI3LDcgKzM2NTUsNyBAQAogI3VuZGVmIFBDCiBjaGFyCVBDOwogI3VuZGVmIG9zcGVlZAotTkNVUlNFU19PU1BFRUQJb3NwZWVkOworc2hvcnQJb3NwZWVkOwogI3VuZGVmIF9uY19udWxsc19zZW50CiBpbnQJX25jX251bGxzX3NlbnQ7CiAKQEAgLTI4MzYsMjUgKzM2NjQsODYgQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVsYXlfb3V0cHV0CiBpbnQJZGVsYXlfb3V0cHV0KAogCQlpbnQJbXMpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfZmx1c2gKIHZvaWQJX25jX2ZsdXNoKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19vdXRjaAogaW50CV9uY19vdXRjaCgKIAkJaW50CWNoKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBwdXRwCiBpbnQJcHV0cCgKIAkJY29uc3QgY2hhciAqc3RyaW5nKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdHB1dHMKIGludAl0cHV0cygKIAkJY29uc3QgY2hhciAqc3RyaW5nLCAKQEAgLTI4OTksOSArMzc4OCwxNCBAQAogCiAjdW5kZWYgX25jX3JldHJhY2VfYm9vbAogTkNVUlNFU19CT09MIF9uY19yZXRyYWNlX2Jvb2woCi0JCU5DVVJTRVNfQk9PTCBjb2RlKQorCQlpbnQJY29kZSkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgX25jX3JldHJhY2VfY2hhcgorY2hhcglfbmNfcmV0cmFjZV9jaGFyKAorCQlpbnQJY29kZSkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKwogI3VuZGVmIF9uY19yZXRyYWNlX2ludAogaW50CV9uY19yZXRyYWNlX2ludCgKIAkJaW50CWNvZGUpCkBAIC0yOTIzLDkgKzM4MTcsOSBAQAogCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIF9uY19yZXRyYWNlX2N2b2lkX3B0cgotdm9pZAkqX25jX3JldHJhY2VfY3ZvaWRfcHRyKAotCQl2b2lkCSpjb2RlKQotCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CiAKICN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgogdm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCkBAIC0yOTY2LDYgKzM4NjAsMTEgQEAKIAkJYXR0cl90CW5ld21vZGUpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCisjdW5kZWYgX25jX3JldHJhY2VfaW50X2F0dHJfdAoraW50CV9uY19yZXRyYWNlX2ludF9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfcmV0cmFjZV9hdHRyX3QKIGF0dHJfdAlfbmNfcmV0cmFjZV9hdHRyX3QoCiAJCWF0dHJfdAljb2RlKQpAQCAtMjk5Nyw3ICszODk2LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHVuc2lnbmVkIGludCB2YWw7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07CiB9IEJJVE5BTUVTOwogCiAjdW5kZWYgX25jX3RyYWNlX3R0eW1vZGUKQEAgLTMwMjQsMzYgKzM5MjMsNzggQEAKIAogLyogLi90aW5mby9saWJfdHR5ZmxhZ3MuYyAqLwogCisjdW5kZWYgX25jX2dldF90dHlfbW9kZV9zcAoraW50CV9uY19nZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfZ2V0X3R0eV9tb2RlCiBpbnQJX25jX2dldF90dHlfbW9kZSgKIAkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3NldF90dHlfbW9kZV9zcAoraW50CV9uY19zZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2V0X3R0eV9tb2RlCiBpbnQJX25jX3NldF90dHlfbW9kZSgKIAkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgZGVmX3NoZWxsX21vZGVfc3AKK2ludAlkZWZfc2hlbGxfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVmX3NoZWxsX21vZGUKIGludAlkZWZfc2hlbGxfbW9kZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBkZWZfcHJvZ19tb2RlX3NwCitpbnQJZGVmX3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVmX3Byb2dfbW9kZQogaW50CWRlZl9wcm9nX21vZGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlX3NwCitpbnQJcmVzZXRfcHJvZ19tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNldF9wcm9nX21vZGUKIGludAlyZXNldF9wcm9nX21vZGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmVzZXRfc2hlbGxfbW9kZV9zcAoraW50CXJlc2V0X3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJlc2V0X3NoZWxsX21vZGUKIGludAlyZXNldF9zaGVsbF9tb2RlKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNhdmV0dHlfc3AKK2ludAlzYXZldHR5X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzYXZldHR5CiBpbnQJc2F2ZXR0eSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiByZXNldHR5X3NwCitpbnQJcmVzZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzZXR0eQogaW50CXJlc2V0dHkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMzA4NSwzMiArNDAyNiw1MCBAQAogLyogLi9uYW1lcy5jICovCiAKICN1bmRlZiBfbmNfYm9vbG5hbWVzCi1jaGFyCSpjb25zdCAqX25jX2Jvb2xuYW1lcyh2b2lkKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfYm9vbG5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAjdW5kZWYgX25jX2Jvb2xmbmFtZXMKLWNoYXIJKmNvbnN0ICpfbmNfYm9vbGZuYW1lcyh2b2lkKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfYm9vbGZuYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIF9uY19udW1uYW1lcwotY2hhcgkqY29uc3QgKl9uY19udW1uYW1lcyh2b2lkKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfbnVtbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKICN1bmRlZiBfbmNfbnVtZm5hbWVzCi1jaGFyCSpjb25zdCAqX25jX251bWZuYW1lcyh2b2lkKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfbnVtZm5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAjdW5kZWYgX25jX3N0cm5hbWVzCi1jaGFyCSpjb25zdCAqX25jX3N0cm5hbWVzKHZvaWQpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJuYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIF9uY19zdHJmbmFtZXMKLWNoYXIJKmNvbnN0ICpfbmNfc3RyZm5hbWVzKHZvaWQpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJmbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vb2Jzb2xldGUuYyAqLworCisjdW5kZWYgX25jX3NldF9idWZmZXJfc3AKK3ZvaWQJX25jX3NldF9idWZmZXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcgordm9pZAlfbmNfc2V0X2J1ZmZlcigKKwkJRklMRQkqb2ZwLCAKKwkJaW50CWJ1ZmZlcmVkKQorCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL3RpbmZvL3JlYWRfZW50cnkuYyAqLwogCi0jaW5jbHVkZSA8aGFzaGVkX2RiLmg+CisjdW5kZWYgX25jX2luaXRfdGVybXR5cGUKK3ZvaWQJX25jX2luaXRfdGVybXR5cGUoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY19yZWFkX3Rlcm10eXBlCiBpbnQJX25jX3JlYWRfdGVybXR5cGUoCkBAIC0zMTM0LDIwICs0MDkzLDggQEAKIAogLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLwogCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KLSN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwX2VudHJ5Ci1pbnQJX25jX3JlYWRfdGVybWNhcF9lbnRyeSgKLQkJY29uc3QgY2hhciAqY29uc3QgdG4sIAotCQlURVJNVFlQRSAqY29uc3QgdHApCi0JCXsgcmV0dXJuKCooaW50ICopMCk7IH0KLQotLyogLi90aW5mby9zZXRidWYuYyAqLwotCi0jdW5kZWYgX25jX3NldF9idWZmZXIKLXZvaWQJX25jX3NldF9idWZmZXIoCi0JCUZJTEUJKm9mcCwgCi0JCU5DVVJTRVNfQk9PTCBidWZmZXJlZCkKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90aW5mby9zdHJpbmdzLmMgKi8KQEAgLTMyMzUsMTYgKzQxODIsMTYgQEAKIAogLyogLi91bmN0cmwuYyAqLwogCi0jdW5kZWYgX25jX3VuY3RybAotY2hhcgkqX25jX3VuY3RybCgKKyN1bmRlZiB1bmN0cmxfc3AKK2NvbnN0IGNoYXIgKnVuY3RybF9zcCgKIAkJU0NSRUVOCSpzcCwgCiAJCWNodHlwZQljaCkKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAjdW5kZWYgdW5jdHJsCi1jaGFyCSp1bmN0cmwoCitjb25zdCBjaGFyICp1bmN0cmwoCiAJCWNodHlwZQljaCkKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAvKiAuL3RyYWNlL3Zpc2J1Zi5jICovCiAKQEAgLTMzMjMsMjUgKzQyNzAsNiBAQAogCQlpbnQgY29uc3QgcGFyYW1ldGVyaXplZCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKLS8qIC4vY29tcF9jYXB0YWIuYyAqLwotCi0jaW5jbHVkZSA8aGFzaHNpemUuaD4KLQotI3VuZGVmIF9uY19nZXRfdGFibGUKLWNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpfbmNfZ2V0X3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqKikwKTsgfQotCi0jdW5kZWYgX25jX2dldF9oYXNoX3RhYmxlCi1jb25zdCBzaG9ydCAqX25jX2dldF9oYXNoX3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzaG9ydCAqKikwKTsgfQotCi0jdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQotY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAotCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKLQkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KLQogLyogLi90aW5mby9jb21wX2V4cGFuZC5jICovCiAKICN1bmRlZiBfbmNfdGljX2V4cGFuZApAQCAtMzM1MSwyMSArNDI3OSw2IEBACiAJCWludAludW1iZXJzKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAotLyogLi90aW5mby9jb21wX2hhc2guYyAqLwotCi0jdW5kZWYgX25jX2ZpbmRfZW50cnkKLXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKLQkJY29uc3QgY2hhciAqc3RyaW5nLCAKLQkJY29uc3Qgc2hvcnQgKmhhc2hfdGFibGUpCi0JCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KLQotI3VuZGVmIF9uY19maW5kX3R5cGVfZW50cnkKLXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF90eXBlX2VudHJ5KAotCQljb25zdCBjaGFyICpzdHJpbmcsIAotCQlpbnQJdHlwZSwgCi0JCWNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICp0YWJsZSkKLQkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQotCiAvKiAuL3RpbmZvL2NvbXBfcGFyc2UuYyAqLwogCiAjdW5kZWYgX25jX2NoZWNrX3Rlcm10eXBlMgpAQCAtMzQwNyw2ICs0MzIwLDggQEAKIAogI3VuZGVmIF9uY19zeW50YXgKIGludAlfbmNfc3ludGF4OworI3VuZGVmIF9uY19zdHJpY3RfYnNkCitpbnQJX25jX3N0cmljdF9ic2Q7CiAjdW5kZWYgX25jX2N1cnJfZmlsZV9wb3MKIGxvbmcJX25jX2N1cnJfZmlsZV9wb3M7CiAjdW5kZWYgX25jX2NvbW1lbnRfc3RhcnQKQEAgLTM0NjMsMTUgKzQzNzgsMTUgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgY29uc3QgY2hhciAqZnJvbTsKLSAgICBjb25zdCBjaGFyICp0bzsKKyAgICBjb25zdCBjaGFyIGZyb21bM107CisgICAgY29uc3QgY2hhciB0b1s2XTsKIH0gYXNzb2M7CiAKIC8qIC4vdGluZm8vd3JpdGVfZW50cnkuYyAqLwogCiAjdW5kZWYgX25jX3NldF93cml0ZWRpcgogdm9pZAlfbmNfc2V0X3dyaXRlZGlyKAotCQljaGFyCSpkaXIpCisJCWNvbnN0IGNoYXIgKmRpcikKIAkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY193cml0ZV9lbnRyeQpAQCAtMzQ4NSw2ICs0NDAwLDEzIEBACiAKIC8qIC4vYmFzZS9kZWZpbmVfa2V5LmMgKi8KIAorI3VuZGVmIGRlZmluZV9rZXlfc3AKK2ludAlkZWZpbmVfa2V5X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyLCAKKwkJaW50CWtleWNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGRlZmluZV9rZXkKIGludAlkZWZpbmVfa2V5KAogCQljb25zdCBjaGFyICpzdHIsIApAQCAtMzQ5OSw2ICs0NDIxLDEyIEBACiAKIC8qIC4vYmFzZS9rZXlfZGVmaW5lZC5jICovCiAKKyN1bmRlZiBrZXlfZGVmaW5lZF9zcAoraW50CWtleV9kZWZpbmVkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBrZXlfZGVmaW5lZAogaW50CWtleV9kZWZpbmVkKAogCQljb25zdCBjaGFyICpzdHIpCkBAIC0zNTA2LDYgKzQ0MzQsMTMgQEAKIAogLyogLi9iYXNlL2tleWJvdW5kLmMgKi8KIAorI3VuZGVmIGtleWJvdW5kX3NwCitjaGFyCSprZXlib3VuZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIGtleWJvdW5kCiBjaGFyCSprZXlib3VuZCgKIAkJaW50CWNvZGUsIApAQCAtMzUxNCw2ICs0NDQ5LDEzIEBACiAKIC8qIC4vYmFzZS9rZXlvay5jICovCiAKKyN1bmRlZiBrZXlva19zcAoraW50CWtleW9rX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMsIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYga2V5b2sKIGludAlrZXlvaygKIAkJaW50CWMsIApkaWZmIC0tZ2l0IGEvbmN1cnNlcy9sbGliLWxuY3Vyc2VzdHcgYi9uY3Vyc2VzL2xsaWItbG5jdXJzZXN0dwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODcxZGNjCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy9sbGliLWxuY3Vyc2VzdHcKQEAgLTAsMCArMSw1Mjg1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAyMDA5LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogTElOVExJQlJBUlkgKi8KKworLyogLi90dHkvaGFyZHNjcm9sbC5jICovCisKKyNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorCisjdW5kZWYgX25jX29sZG51bXMKK2ludAkqX25jX29sZG51bXM7CisKKyN1bmRlZiBfbmNfc2Nyb2xsX29wdGltaXplX3NwCit2b2lkCV9uY19zY3JvbGxfb3B0aW1pemVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2Nyb2xsX29wdGltaXplCit2b2lkCV9uY19zY3JvbGxfb3B0aW1pemUodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19saW5lZHVtcF9zcAordm9pZAlfbmNfbGluZWR1bXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbGluZWR1bXAKK3ZvaWQJX25jX2xpbmVkdW1wKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdHR5L2hhc2htYXAuYyAqLworCisjdW5kZWYgX25jX2hhc2hfbWFwX3NwCit2b2lkCV9uY19oYXNoX21hcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19oYXNoX21hcAordm9pZAlfbmNfaGFzaF9tYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tYWtlX29sZGhhc2hfc3AKK3ZvaWQJX25jX21ha2Vfb2xkaGFzaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlpKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX21ha2Vfb2xkaGFzaAordm9pZAlfbmNfbWFrZV9vbGRoYXNoKAorCQlpbnQJaSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zY3JvbGxfb2xkaGFzaF9zcAordm9pZAlfbmNfc2Nyb2xsX29sZGhhc2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbiwgCisJCWludAl0b3AsIAorCQlpbnQJYm90KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3Njcm9sbF9vbGRoYXNoCit2b2lkCV9uY19zY3JvbGxfb2xkaGFzaCgKKwkJaW50CW4sIAorCQlpbnQJdG9wLCAKKwkJaW50CWJvdCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9iYXNlL2xpYl9hZGRjaC5jICovCisKKyN1bmRlZiBfbmNfcmVuZGVyCitjY2hhcl90CV9uY19yZW5kZXIoCisJCVdJTkRPVwkqd2luLCAKKwkJY2NoYXJfdAljaCkKKwkJeyByZXR1cm4oKihjY2hhcl90ICopMCk7IH0KKworI3VuZGVmIF9uY19idWlsZF93Y2gKK2ludAlfbmNfYnVpbGRfd2NoKAorCQlXSU5ET1cJKndpbiwgCisJCWNjaGFyX3QJKmNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfd2FkZGNoX25vc3luYworaW50CV9uY193YWRkY2hfbm9zeW5jKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNjaGFyX3QgYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2FkZGNoCitpbnQJd2FkZGNoKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNodHlwZSBjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2VjaG9jaGFyCitpbnQJd2VjaG9jaGFyKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNodHlwZSBjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2FkZHN0ci5jICovCisKKyN1bmRlZiB3YWRkbnN0cgoraW50CXdhZGRuc3RyKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNoYXIgKmFzdHIsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2FkZGNobnN0cgoraW50CXdhZGRjaG5zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2h0eXBlICphc3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY193Y2hzdHJsZW4KK2ludAlfbmNfd2Noc3RybGVuKAorCQljb25zdCBjY2hhcl90ICpzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3YWRkX3djaG5zdHIKK2ludAl3YWRkX3djaG5zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2NoYXJfdCAqYXN0ciwgCisJCWludAluKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3YWRkbndzdHIKK2ludAl3YWRkbndzdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3Qgd2NoYXJfdCAqc3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9iZWVwLmMgKi8KKworI3VuZGVmIGJlZXBfc3AKK2ludAliZWVwX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiZWVwCitpbnQJYmVlcCh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfYmtnZC5jICovCisKKyN1bmRlZiB3Ymtncm5kc2V0Cit2b2lkCXdia2dybmRzZXQoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2NoYXJfdCAqY2gpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB3YmtnZHNldAordm9pZAl3YmtnZHNldCgKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJY2gpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB3Ymtncm5kCitpbnQJd2JrZ3JuZCgKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjY2hhcl90ICpjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2JrZ2QKK2ludAl3YmtnZCgKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9ib3guYyAqLworCisjdW5kZWYgd2JvcmRlcgoraW50CXdib3JkZXIoCisJCVdJTkRPVwkqd2luLCAKKwkJY2h0eXBlCWxzLCAKKwkJY2h0eXBlCXJzLCAKKwkJY2h0eXBlCXRzLCAKKwkJY2h0eXBlCWJzLCAKKwkJY2h0eXBlCXRsLCAKKwkJY2h0eXBlCXRyLCAKKwkJY2h0eXBlCWJsLCAKKwkJY2h0eXBlCWJyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfY2hnYXQuYyAqLworCisjdW5kZWYgd2NoZ2F0CitpbnQJd2NoZ2F0KAorCQlXSU5ET1cJKndpbiwgCisJCWludAluLCAKKwkJYXR0cl90CWF0dHIsIAorCQlzaG9ydAljb2xvciwgCisJCWNvbnN0IHZvaWQgKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9jbGVhci5jICovCisKKyN1bmRlZiB3Y2xlYXIKK2ludAl3Y2xlYXIoCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfY2xlYXJvay5jICovCisKKyN1bmRlZiBjbGVhcm9rCitpbnQJY2xlYXJvaygKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2NscmJvdC5jICovCisKKyN1bmRlZiB3Y2xydG9ib3QKK2ludAl3Y2xydG9ib3QoCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfY2xyZW9sLmMgKi8KKworI3VuZGVmIHdjbHJ0b2VvbAoraW50CXdjbHJ0b2VvbCgKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9jb2xvci5jICovCisKKyN1bmRlZiBfbmNfQ09MT1JfUEFJUlMKK2ludAlfbmNfQ09MT1JfUEFJUlModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX0NPTE9SUworaW50CV9uY19DT0xPUlModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3Jlc2V0X2NvbG9yc19zcAorTkNVUlNFU19CT09MIF9uY19yZXNldF9jb2xvcnNfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZXNldF9jb2xvcnMKK05DVVJTRVNfQk9PTCBfbmNfcmVzZXRfY29sb3JzKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIHN0YXJ0X2NvbG9yX3NwCitpbnQJc3RhcnRfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHN0YXJ0X2NvbG9yCitpbnQJc3RhcnRfY29sb3Iodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5pdF9wYWlyX3NwCitpbnQJaW5pdF9wYWlyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJcGFpciwgCisJCXNob3J0CWYsIAorCQlzaG9ydAliKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbml0X3BhaXIKK2ludAlpbml0X3BhaXIoCisJCXNob3J0CXBhaXIsIAorCQlzaG9ydAlmLCAKKwkJc2hvcnQJYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5pdF9jb2xvcl9zcAoraW50CWluaXRfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAljb2xvciwgCisJCXNob3J0CXIsIAorCQlzaG9ydAlnLCAKKwkJc2hvcnQJYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5pdF9jb2xvcgoraW50CWluaXRfY29sb3IoCisJCXNob3J0CWNvbG9yLCAKKwkJc2hvcnQJciwgCisJCXNob3J0CWcsIAorCQlzaG9ydAliKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjYW5fY2hhbmdlX2NvbG9yX3NwCitOQ1VSU0VTX0JPT0wgY2FuX2NoYW5nZV9jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgY2FuX2NoYW5nZV9jb2xvcgorTkNVUlNFU19CT09MIGNhbl9jaGFuZ2VfY29sb3Iodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2NvbG9yc19zcAorTkNVUlNFU19CT09MIGhhc19jb2xvcnNfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGhhc19jb2xvcnMKK05DVVJTRVNfQk9PTCBoYXNfY29sb3JzKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGNvbG9yX2NvbnRlbnRfc3AKK2ludAljb2xvcl9jb250ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJY29sb3IsIAorCQlzaG9ydAkqciwgCisJCXNob3J0CSpnLCAKKwkJc2hvcnQJKmIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNvbG9yX2NvbnRlbnQKK2ludAljb2xvcl9jb250ZW50KAorCQlzaG9ydAljb2xvciwgCisJCXNob3J0CSpyLCAKKwkJc2hvcnQJKmcsIAorCQlzaG9ydAkqYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcGFpcl9jb250ZW50X3NwCitpbnQJcGFpcl9jb250ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJcGFpciwgCisJCXNob3J0CSpmLCAKKwkJc2hvcnQJKmIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHBhaXJfY29udGVudAoraW50CXBhaXJfY29udGVudCgKKwkJc2hvcnQJcGFpciwgCisJCXNob3J0CSpmLCAKKwkJc2hvcnQJKmIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19kb19jb2xvcl9zcAordm9pZAlfbmNfZG9fY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJb2xkX3BhaXIsIAorCQlpbnQJcGFpciwgCisJCWludAlyZXZlcnNlLCAKKwkJTkNVUlNFU19PVVRDX3NwIG91dGMpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZG9fY29sb3IKK3ZvaWQJX25jX2RvX2NvbG9yKAorCQlpbnQJb2xkX3BhaXIsIAorCQlpbnQJcGFpciwgCisJCWludAlyZXZlcnNlLCAKKwkJTkNVUlNFU19PVVRDIG91dGMpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vYmFzZS9saWJfY29sb3JzZXQuYyAqLworCisjdW5kZWYgd2NvbG9yX3NldAoraW50CXdjb2xvcl9zZXQoCisJCVdJTkRPVwkqd2luLCAKKwkJc2hvcnQJY29sb3JfcGFpcl9udW1iZXIsIAorCQl2b2lkCSpvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZGVsY2guYyAqLworCisjdW5kZWYgd2RlbGNoCitpbnQJd2RlbGNoKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2RlbHdpbi5jICovCisKKyN1bmRlZiBkZWx3aW4KK2ludAlkZWx3aW4oCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZWNoby5jICovCisKKyN1bmRlZiBlY2hvX3NwCitpbnQJZWNob19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZWNobworaW50CWVjaG8odm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9lY2hvX3NwCitpbnQJbm9lY2hvX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2VjaG8KK2ludAlub2VjaG8odm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2VuZHdpbi5jICovCisKKyN1bmRlZiBlbmR3aW5fc3AKK2ludAllbmR3aW5fc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGVuZHdpbgoraW50CWVuZHdpbih2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZXJhc2UuYyAqLworCisjdW5kZWYgd2VyYXNlCitpbnQJd2VyYXNlKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2ZsYXNoLmMgKi8KKworI3VuZGVmIGZsYXNoX3NwCitpbnQJZmxhc2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZsYXNoCitpbnQJZmxhc2godm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2xpYl9nZW4uYyAqLworCisjdW5kZWYgYWRkY2gKK2ludAkoYWRkY2gpKAorCQljb25zdCBjaHR5cGUgeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYWRkY2huc3RyCitpbnQJKGFkZGNobnN0cikoCisJCWNvbnN0IGNodHlwZSAqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYWRkY2hzdHIKK2ludAkoYWRkY2hzdHIpKAorCQljb25zdCBjaHR5cGUgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGFkZG5zdHIKK2ludAkoYWRkbnN0cikoCisJCWNvbnN0IGNoYXIgKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGFkZHN0cgoraW50CShhZGRzdHIpKAorCQljb25zdCBjaGFyICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhdHRyb2ZmCitpbnQJKGF0dHJvZmYpKAorCQlOQ1VSU0VTX0FUVFJfVAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhdHRyb24KK2ludAkoYXR0cm9uKSgKKwkJTkNVUlNFU19BVFRSX1QJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYXR0cnNldAoraW50CShhdHRyc2V0KSgKKwkJTkNVUlNFU19BVFRSX1QJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYXR0cl9nZXQKK2ludAkoYXR0cl9nZXQpKAorCQlhdHRyX3QJKmExLCAKKwkJc2hvcnQJKmEyLCAKKwkJdm9pZAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYXR0cl9vZmYKK2ludAkoYXR0cl9vZmYpKAorCQlhdHRyX3QJYTEsIAorCQl2b2lkCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhdHRyX29uCitpbnQJKGF0dHJfb24pKAorCQlhdHRyX3QJYTEsIAorCQl2b2lkCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhdHRyX3NldAoraW50CShhdHRyX3NldCkoCisJCWF0dHJfdAlhMSwgCisJCXNob3J0CWEyLCAKKwkJdm9pZAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYmtnZAoraW50CShia2dkKSgKKwkJY2h0eXBlCXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGJrZ2RzZXQKK3ZvaWQJKGJrZ2RzZXQpKAorCQljaHR5cGUJeikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGJvcmRlcgoraW50CShib3JkZXIpKAorCQljaHR5cGUJYTEsIAorCQljaHR5cGUJYTIsIAorCQljaHR5cGUJYTMsIAorCQljaHR5cGUJYTQsIAorCQljaHR5cGUJYTUsIAorCQljaHR5cGUJYTYsIAorCQljaHR5cGUJYTcsIAorCQljaHR5cGUJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYm94CitpbnQJKGJveCkoCisJCVdJTkRPVwkqYTEsIAorCQljaHR5cGUJYTIsIAorCQljaHR5cGUJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY2hnYXQKK2ludAkoY2hnYXQpKAorCQlpbnQJYTEsIAorCQlhdHRyX3QJYTIsIAorCQlzaG9ydAlhMywgCisJCWNvbnN0IHZvaWQgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNsZWFyCitpbnQJKGNsZWFyKSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjbHJ0b2JvdAoraW50CShjbHJ0b2JvdCkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY2xydG9lb2wKK2ludAkoY2xydG9lb2wpKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNvbG9yX3NldAoraW50CShjb2xvcl9zZXQpKAorCQlzaG9ydAlhMSwgCisJCXZvaWQJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIENPTE9SX1BBSVIKK2ludAkoQ09MT1JfUEFJUikoCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWxjaAoraW50CShkZWxjaCkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsZXRlbG4KK2ludAkoZGVsZXRlbG4pKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGVjaG9jaGFyCitpbnQJKGVjaG9jaGFyKSgKKwkJY29uc3QgY2h0eXBlIHopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGVyYXNlCitpbnQJKGVyYXNlKSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRia2dkCitjaHR5cGUJKGdldGJrZ2QpKAorCQlXSU5ET1cJKnopCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworI3VuZGVmIGdldGNoCitpbnQJKGdldGNoKSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRuc3RyCitpbnQJKGdldG5zdHIpKAorCQljaGFyCSphMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRzdHIKK2ludAkoZ2V0c3RyKSgKKwkJY2hhcgkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGxpbmUKK2ludAkoaGxpbmUpKAorCQljaHR5cGUJYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5jaAorY2h0eXBlCShpbmNoKSh2b2lkKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKyN1bmRlZiBpbmNobnN0cgoraW50CShpbmNobnN0cikoCisJCWNodHlwZQkqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5jaHN0cgoraW50CShpbmNoc3RyKSgKKwkJY2h0eXBlCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbm5zdHIKK2ludAkoaW5uc3RyKSgKKwkJY2hhcgkqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5zY2gKK2ludAkoaW5zY2gpKAorCQljaHR5cGUJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5zZGVsbG4KK2ludAkoaW5zZGVsbG4pKAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5zZXJ0bG4KK2ludAkoaW5zZXJ0bG4pKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGluc25zdHIKK2ludAkoaW5zbnN0cikoCisJCWNvbnN0IGNoYXIgKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGluc3N0cgoraW50CShpbnNzdHIpKAorCQljb25zdCBjaGFyICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbnN0cgoraW50CShpbnN0cikoCisJCWNoYXIJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1vdmUKK2ludAkobW92ZSkoCisJCWludAlhMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmFkZGNoCitpbnQJKG12YWRkY2gpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCBjaHR5cGUgeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZhZGRjaG5zdHIKK2ludAkobXZhZGRjaG5zdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCBjaHR5cGUgKmEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12YWRkY2hzdHIKK2ludAkobXZhZGRjaHN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IGNodHlwZSAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZhZGRuc3RyCitpbnQJKG12YWRkbnN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IGNoYXIgKmEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12YWRkc3RyCitpbnQJKG12YWRkc3RyKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY29uc3QgY2hhciAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZjaGdhdAoraW50CShtdmNoZ2F0KSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJYXR0cl90CWE0LCAKKwkJc2hvcnQJYTUsIAorCQljb25zdCB2b2lkICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmRlbGNoCitpbnQJKG12ZGVsY2gpKAorCQlpbnQJYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZnZXRjaAoraW50CShtdmdldGNoKSgKKwkJaW50CWExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12Z2V0bnN0cgoraW50CShtdmdldG5zdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljaGFyCSphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmdldHN0cgoraW50CShtdmdldHN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNoYXIJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12aGxpbmUKK2ludAkobXZobGluZSkoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNodHlwZQlhMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluY2gKK2NodHlwZQkobXZpbmNoKSgKKwkJaW50CWExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworI3VuZGVmIG12aW5jaG5zdHIKK2ludAkobXZpbmNobnN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNodHlwZQkqYTMsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZpbmNoc3RyCitpbnQJKG12aW5jaHN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNodHlwZQkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZpbm5zdHIKK2ludAkobXZpbm5zdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljaGFyCSphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluc2NoCitpbnQJKG12aW5zY2gpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljaHR5cGUJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZpbnNuc3RyCitpbnQJKG12aW5zbnN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IGNoYXIgKmEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12aW5zc3RyCitpbnQJKG12aW5zc3RyKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY29uc3QgY2hhciAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZpbnN0cgoraW50CShtdmluc3RyKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY2hhcgkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ2bGluZQoraW50CShtdnZsaW5lKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY2h0eXBlCWEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2FkZGNoCitpbnQJKG12d2FkZGNoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNvbnN0IGNodHlwZSB6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndhZGRjaG5zdHIKK2ludAkobXZ3YWRkY2huc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNvbnN0IGNodHlwZSAqYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3YWRkY2hzdHIKK2ludAkobXZ3YWRkY2hzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY29uc3QgY2h0eXBlICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndhZGRuc3RyCitpbnQJKG12d2FkZG5zdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY29uc3QgY2hhciAqYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3YWRkc3RyCitpbnQJKG12d2FkZHN0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCBjaGFyICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndjaGdhdAoraW50CShtdndjaGdhdCkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQlpbnQJYTQsIAorCQlhdHRyX3QJYTUsIAorCQlzaG9ydAlhNiwgCisJCWNvbnN0IHZvaWQgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2RlbGNoCitpbnQJKG12d2RlbGNoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndnZXRjaAoraW50CShtdndnZXRjaCkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3Z2V0bnN0cgoraW50CShtdndnZXRuc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNoYXIJKmE0LCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2dldHN0cgoraW50CShtdndnZXRzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY2hhcgkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3aGxpbmUKK2ludAkobXZ3aGxpbmUpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY2h0eXBlCWE0LCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2luY2gKK2NodHlwZQkobXZ3aW5jaCkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisjdW5kZWYgbXZ3aW5jaG5zdHIKK2ludAkobXZ3aW5jaG5zdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY2h0eXBlCSphNCwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbmNoc3RyCitpbnQJKG12d2luY2hzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY2h0eXBlCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbm5zdHIKK2ludAkobXZ3aW5uc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNoYXIJKmE0LCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2luc2NoCitpbnQJKG12d2luc2NoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNodHlwZQl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbnNuc3RyCitpbnQJKG12d2luc25zdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY29uc3QgY2hhciAqYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3aW5zc3RyCitpbnQJKG12d2luc3N0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCBjaGFyICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbnN0cgoraW50CShtdndpbnN0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljaGFyCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdnd2bGluZQoraW50CShtdnd2bGluZSkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljaHR5cGUJYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgUEFJUl9OVU1CRVIKK2ludAkoUEFJUl9OVU1CRVIpKAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVkcmF3d2luCitpbnQJKHJlZHJhd3dpbikoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVmcmVzaAoraW50CShyZWZyZXNoKSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY3JsCitpbnQJKHNjcmwpKAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2Nyb2xsCitpbnQJKHNjcm9sbCkoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0c2NycmVnCitpbnQJKHNldHNjcnJlZykoCisJCWludAlhMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzbGtfYXR0cl9vZmYKK2ludAkoc2xrX2F0dHJfb2ZmKSgKKwkJY29uc3QgYXR0cl90IGExLCAKKwkJdm9pZAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX2F0dHJfb24KK2ludAkoc2xrX2F0dHJfb24pKAorCQlhdHRyX3QJYTEsIAorCQl2b2lkCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzdGFuZG91dAoraW50CShzdGFuZG91dCkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc3RhbmRlbmQKK2ludAkoc3RhbmRlbmQpKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpbWVvdXQKK3ZvaWQJKHRpbWVvdXQpKAorCQlpbnQJeikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHRvdWNobGluZQoraW50CSh0b3VjaGxpbmUpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRvdWNod2luCitpbnQJKHRvdWNod2luKSgKKwkJV0lORE9XCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB1bnRvdWNod2luCitpbnQJKHVudG91Y2h3aW4pKAorCQlXSU5ET1cJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZsaW5lCitpbnQJKHZsaW5lKSgKKwkJY2h0eXBlCWExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZ3X3ByaW50dworaW50CSh2d19wcmludHcpKAorCQlXSU5ET1cJKmExLCAKKwkJY29uc3QgY2hhciAqYTIsIAorCQl2YV9saXN0CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZ3X3NjYW53CitpbnQJKHZ3X3NjYW53KSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IGNoYXIgKmEyLCAKKwkJdmFfbGlzdAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3YWRkY2hzdHIKK2ludAkod2FkZGNoc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IGNodHlwZSAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2FkZHN0cgoraW50CSh3YWRkc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IGNoYXIgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdhdHRyb24KK2ludAkod2F0dHJvbikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2F0dHJvZmYKK2ludAkod2F0dHJvZmYpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdhdHRyc2V0CitpbnQJKHdhdHRyc2V0KSgKKwkJV0lORE9XCSphMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3YXR0cl9nZXQKK2ludAkod2F0dHJfZ2V0KSgKKwkJV0lORE9XCSphMSwgCisJCWF0dHJfdAkqYTIsIAorCQlzaG9ydAkqYTMsIAorCQl2b2lkCSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3YXR0cl9zZXQKK2ludAkod2F0dHJfc2V0KSgKKwkJV0lORE9XCSphMSwgCisJCWF0dHJfdAlhMiwgCisJCXNob3J0CWEzLCAKKwkJdm9pZAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2RlbGV0ZWxuCitpbnQJKHdkZWxldGVsbikoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2dldHN0cgoraW50CSh3Z2V0c3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNoYXIJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbmNoc3RyCitpbnQJKHdpbmNoc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNodHlwZQkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2luc2VydGxuCitpbnQJKHdpbnNlcnRsbikoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2luc3N0cgoraW50CSh3aW5zc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IGNoYXIgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbnN0cgoraW50CSh3aW5zdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJY2hhcgkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd3N0YW5kb3V0CitpbnQJKHdzdGFuZG91dCkoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd3N0YW5kZW5kCitpbnQJKHdzdGFuZGVuZCkoCisJCVdJTkRPVwkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0YXR0cnMKK2ludAkoZ2V0YXR0cnMpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldGN1cngKK2ludAkoZ2V0Y3VyeCkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0Y3VyeQoraW50CShnZXRjdXJ5KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRiZWd4CitpbnQJKGdldGJlZ3gpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldGJlZ3kKK2ludAkoZ2V0YmVneSkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0bWF4eAoraW50CShnZXRtYXh4KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRtYXh5CitpbnQJKGdldG1heHkpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldHBhcngKK2ludAkoZ2V0cGFyeCkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0cGFyeQoraW50CShnZXRwYXJ5KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3Z2V0cGFyZW50CitXSU5ET1cJKih3Z2V0cGFyZW50KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgaXNfY2xlYXJlZAorTkNVUlNFU19CT09MIChpc19jbGVhcmVkKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19pZGNvaworTkNVUlNFU19CT09MIChpc19pZGNvaykoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfaWRsb2sKK05DVVJTRVNfQk9PTCAoaXNfaWRsb2spKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX2ltbWVkb2sKK05DVVJTRVNfQk9PTCAoaXNfaW1tZWRvaykoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfa2V5cGFkCitOQ1VSU0VTX0JPT0wgKGlzX2tleXBhZCkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfbGVhdmVvaworTkNVUlNFU19CT09MIChpc19sZWF2ZW9rKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19ub2RlbGF5CitOQ1VSU0VTX0JPT0wgKGlzX25vZGVsYXkpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX25vdGltZW91dAorTkNVUlNFU19CT09MIChpc19ub3RpbWVvdXQpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX3BhZAorTkNVUlNFU19CT09MIChpc19wYWQpKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX3Njcm9sbG9rCitOQ1VSU0VTX0JPT0wgKGlzX3Njcm9sbG9rKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19zdWJ3aW4KK05DVVJTRVNfQk9PTCAoaXNfc3Vid2luKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc19zeW5jb2sKK05DVVJTRVNfQk9PTCAoaXNfc3luY29rKSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiB3Z2V0ZGVsYXkKK2ludAkod2dldGRlbGF5KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3Z2V0c2NycmVnCitpbnQJKHdnZXRzY3JyZWcpKAorCQljb25zdCBXSU5ET1cgKmExLCAKKwkJaW50CSphMiwgCisJCWludAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYWRkX3djaAoraW50CShhZGRfd2NoKSgKKwkJY29uc3QgY2NoYXJfdCAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYWRkX3djaG5zdHIKK2ludAkoYWRkX3djaG5zdHIpKAorCQljb25zdCBjY2hhcl90ICphMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhZGRfd2Noc3RyCitpbnQJKGFkZF93Y2hzdHIpKAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhZGRud3N0cgoraW50CShhZGRud3N0cikoCisJCWNvbnN0IHdjaGFyX3QgKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGFkZHdzdHIKK2ludAkoYWRkd3N0cikoCisJCWNvbnN0IHdjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGJrZ3JuZAoraW50CShia2dybmQpKAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBia2dybmRzZXQKK3ZvaWQJKGJrZ3JuZHNldCkoCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBib3JkZXJfc2V0CitpbnQJKGJvcmRlcl9zZXQpKAorCQljb25zdCBjY2hhcl90ICphMSwgCisJCWNvbnN0IGNjaGFyX3QgKmEyLCAKKwkJY29uc3QgY2NoYXJfdCAqYTMsIAorCQljb25zdCBjY2hhcl90ICphNCwgCisJCWNvbnN0IGNjaGFyX3QgKmE1LCAKKwkJY29uc3QgY2NoYXJfdCAqYTYsIAorCQljb25zdCBjY2hhcl90ICphNywgCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGJveF9zZXQKK2ludAkoYm94X3NldCkoCisJCVdJTkRPVwkqYTEsIAorCQljb25zdCBjY2hhcl90ICphMiwgCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGVjaG9fd2NoYXIKK2ludAkoZWNob193Y2hhcikoCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldF93Y2gKK2ludAkoZ2V0X3djaCkoCisJCXdpbnRfdAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0X3dzdHIKK2ludAkoZ2V0X3dzdHIpKAorCQl3aW50X3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldGJrZ3JuZAoraW50CShnZXRia2dybmQpKAorCQljY2hhcl90CSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRuX3dzdHIKK2ludAkoZ2V0bl93c3RyKSgKKwkJd2ludF90CSphMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBobGluZV9zZXQKK2ludAkoaGxpbmVfc2V0KSgKKwkJY29uc3QgY2NoYXJfdCAqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5fd2NoCitpbnQJKGluX3djaCkoCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGluX3djaG5zdHIKK2ludAkoaW5fd2NobnN0cikoCisJCWNjaGFyX3QJKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGluX3djaHN0cgoraW50CShpbl93Y2hzdHIpKAorCQljY2hhcl90CSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbm53c3RyCitpbnQJKGlubndzdHIpKAorCQl3Y2hhcl90CSphMSwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbnNfbndzdHIKK2ludAkoaW5zX253c3RyKSgKKwkJY29uc3Qgd2NoYXJfdCAqYTEsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5zX3djaAoraW50CShpbnNfd2NoKSgKKwkJY29uc3QgY2NoYXJfdCAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW5zX3dzdHIKK2ludAkoaW5zX3dzdHIpKAorCQljb25zdCB3Y2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbndzdHIKK2ludAkoaW53c3RyKSgKKwkJd2NoYXJfdAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZhZGRfd2NoCitpbnQJKG12YWRkX3djaCkoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12YWRkX3djaG5zdHIKK2ludAkobXZhZGRfd2NobnN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IGNjaGFyX3QgKmEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12YWRkX3djaHN0cgoraW50CShtdmFkZF93Y2hzdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmFkZG53c3RyCitpbnQJKG12YWRkbndzdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCB3Y2hhcl90ICphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmFkZHdzdHIKK2ludAkobXZhZGR3c3RyKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY29uc3Qgd2NoYXJfdCAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZnZXRfd2NoCitpbnQJKG12Z2V0X3djaCkoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCXdpbnRfdAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZnZXRfd3N0cgoraW50CShtdmdldF93c3RyKSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJd2ludF90CSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmdldG5fd3N0cgoraW50CShtdmdldG5fd3N0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCXdpbnRfdAkqYTMsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZobGluZV9zZXQKK2ludAkobXZobGluZV9zZXQpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCBjY2hhcl90ICphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluX3djaAoraW50CShtdmluX3djaCkoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12aW5fd2NobnN0cgoraW50CShtdmluX3djaG5zdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljY2hhcl90CSphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluX3djaHN0cgoraW50CShtdmluX3djaHN0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12aW5ud3N0cgoraW50CShtdmlubndzdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQl3Y2hhcl90CSphMywgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluc19ud3N0cgoraW50CShtdmluc19ud3N0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCWNvbnN0IHdjaGFyX3QgKmEzLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12aW5zX3djaAoraW50CShtdmluc193Y2gpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmluc193c3RyCitpbnQJKG12aW5zX3dzdHIpKAorCQlpbnQJYTEsIAorCQlpbnQJYTIsIAorCQljb25zdCB3Y2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmlud3N0cgoraW50CShtdmlud3N0cikoCisJCWludAlhMSwgCisJCWludAlhMiwgCisJCXdjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12dmxpbmVfc2V0CitpbnQJKG12dmxpbmVfc2V0KSgKKwkJaW50CWExLCAKKwkJaW50CWEyLCAKKwkJY29uc3QgY2NoYXJfdCAqYTMsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3YWRkX3djaAoraW50CShtdndhZGRfd2NoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2FkZF93Y2huc3RyCitpbnQJKG12d2FkZF93Y2huc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNvbnN0IGNjaGFyX3QgKmE0LCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2FkZF93Y2hzdHIKK2ludAkobXZ3YWRkX3djaHN0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndhZGRud3N0cgoraW50CShtdndhZGRud3N0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCB3Y2hhcl90ICphNCwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndhZGR3c3RyCitpbnQJKG12d2FkZHdzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY29uc3Qgd2NoYXJfdCAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3Z2V0X3djaAoraW50CShtdndnZXRfd2NoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCXdpbnRfdAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3Z2V0X3dzdHIKK2ludAkobXZ3Z2V0X3dzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJd2ludF90CSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndnZXRuX3dzdHIKK2ludAkobXZ3Z2V0bl93c3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCXdpbnRfdAkqYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3aGxpbmVfc2V0CitpbnQJKG12d2hsaW5lX3NldCkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCBjY2hhcl90ICphNCwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbl93Y2gKK2ludAkobXZ3aW5fd2NoKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2luX3djaG5zdHIKK2ludAkobXZ3aW5fd2NobnN0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljY2hhcl90CSphNCwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbl93Y2hzdHIKK2ludAkobXZ3aW5fd2Noc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2lubndzdHIKK2ludAkobXZ3aW5ud3N0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQl3Y2hhcl90CSphNCwgCisJCWludAl6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbnNfbndzdHIKK2ludAkobXZ3aW5zX253c3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCWNvbnN0IHdjaGFyX3QgKmE0LCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d2luc193Y2gKK2ludAkobXZ3aW5zX3djaCkoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCBjY2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbnNfd3N0cgoraW50CShtdndpbnNfd3N0cikoCisJCVdJTkRPVwkqYTEsIAorCQlpbnQJYTIsIAorCQlpbnQJYTMsIAorCQljb25zdCB3Y2hhcl90ICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndpbndzdHIKK2ludAkobXZ3aW53c3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWludAlhMiwgCisJCWludAlhMywgCisJCXdjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12d3ZsaW5lX3NldAoraW50CShtdnd2bGluZV9zZXQpKAorCQlXSU5ET1cJKmExLCAKKwkJaW50CWEyLCAKKwkJaW50CWEzLCAKKwkJY29uc3QgY2NoYXJfdCAqYTQsIAorCQlpbnQJeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdmxpbmVfc2V0CitpbnQJKHZsaW5lX3NldCkoCisJCWNvbnN0IGNjaGFyX3QgKmExLCAKKwkJaW50CXopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdhZGRfd2Noc3RyCitpbnQJKHdhZGRfd2Noc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IGNjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdhZGR3c3RyCitpbnQJKHdhZGR3c3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNvbnN0IHdjaGFyX3QgKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdnZXRfd3N0cgoraW50CSh3Z2V0X3dzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJd2ludF90CSp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3Z2V0Ymtncm5kCitpbnQJKHdnZXRia2dybmQpKAorCQlXSU5ET1cJKmExLCAKKwkJY2NoYXJfdAkqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2luX3djaHN0cgoraW50CSh3aW5fd2Noc3RyKSgKKwkJV0lORE9XCSphMSwgCisJCWNjaGFyX3QJKnopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbnNfd3N0cgoraW50CSh3aW5zX3dzdHIpKAorCQlXSU5ET1cJKmExLCAKKwkJY29uc3Qgd2NoYXJfdCAqeikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbW91c2VfdHJhZm8KK05DVVJTRVNfQk9PTCAobW91c2VfdHJhZm8pKAorCQlpbnQJKmExLCAKKwkJaW50CSphMiwgCisJCU5DVVJTRVNfQk9PTCB6KQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZ2V0Y2guYyAqLworCisjdW5kZWYgX25jX0VTQ0RFTEFZCitpbnQJX25jX0VTQ0RFTEFZKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdHJfRXNjZGVsYXkKK2ludAkqX25jX3B0cl9Fc2NkZWxheSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIHNldF9lc2NkZWxheV9zcAoraW50CXNldF9lc2NkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X2VzY2RlbGF5CitpbnQJc2V0X2VzY2RlbGF5KAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldF9lc2NkZWxheV9zcAoraW50CWdldF9lc2NkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZ2V0X2VzY2RlbGF5CitpbnQJZ2V0X2VzY2RlbGF5KHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY193Z2V0Y2gKK2ludAlfbmNfd2dldGNoKAorCQlXSU5ET1cJKndpbiwgCisJCWludAkqcmVzdWx0LCAKKwkJaW50CXVzZV9tZXRhKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3Z2V0Y2gKK2ludAl3Z2V0Y2goCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZ2V0c3RyLmMgKi8KKworI3VuZGVmIHdnZXRuc3RyCitpbnQJd2dldG5zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY2hhcgkqc3RyLCAKKwkJaW50CW1heGxlbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2hsaW5lLmMgKi8KKworI3VuZGVmIHdobGluZQoraW50CXdobGluZSgKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJY2gsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2ltbWVkb2suYyAqLworCisjdW5kZWYgaW1tZWRvawordm9pZAlpbW1lZG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvbGliX2luY2hzdHIuYyAqLworCisjdW5kZWYgd2luY2huc3RyCitpbnQJd2luY2huc3RyKAorCQlXSU5ET1cJKndpbiwgCisJCWNodHlwZQkqc3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9pbml0c2NyLmMgKi8KKworI3VuZGVmIGluaXRzY3IKK1dJTkRPVwkqaW5pdHNjcih2b2lkKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2luc2NoLmMgKi8KKworI3VuZGVmIF9uY19pbnNlcnRfY2gKK2ludAlfbmNfaW5zZXJ0X2NoKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbnNjaAoraW50CXdpbnNjaCgKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX2luc2RlbC5jICovCisKKyN1bmRlZiB3aW5zZGVsbG4KK2ludAl3aW5zZGVsbG4oCisJCVdJTkRPVwkqd2luLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9pbnNuc3RyLmMgKi8KKworI3VuZGVmIHdpbnNuc3RyCitpbnQJd2luc25zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2hhciAqcywgCisJCWludAluKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfaW5zdHIuYyAqLworCisjdW5kZWYgd2lubnN0cgoraW50CXdpbm5zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY2hhcgkqc3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9pc2VuZHdpbi5jICovCisKKyN1bmRlZiBpc2VuZHdpbl9zcAorTkNVUlNFU19CT09MIGlzZW5kd2luX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc2VuZHdpbgorTkNVUlNFU19CT09MIGlzZW5kd2luKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9sZWF2ZW9rLmMgKi8KKworI3VuZGVmIGxlYXZlb2sKK2ludAlsZWF2ZW9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfbW91c2UuYyAqLworCisjdW5kZWYgZ2V0bW91c2Vfc3AKK2ludAlnZXRtb3VzZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCU1FVkVOVAkqYWV2ZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRtb3VzZQoraW50CWdldG1vdXNlKAorCQlNRVZFTlQJKmFldmVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdW5nZXRtb3VzZV9zcAoraW50CXVuZ2V0bW91c2Vfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlNRVZFTlQJKmFldmVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdW5nZXRtb3VzZQoraW50CXVuZ2V0bW91c2UoCisJCU1FVkVOVAkqYWV2ZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtb3VzZW1hc2tfc3AKK21tYXNrX3QJbW91c2VtYXNrX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAluZXdtYXNrLCAKKwkJbW1hc2tfdAkqb2xkbWFzaykKKwkJeyByZXR1cm4oKihtbWFza190ICopMCk7IH0KKworI3VuZGVmIG1vdXNlbWFzaworbW1hc2tfdAltb3VzZW1hc2soCisJCW1tYXNrX3QJbmV3bWFzaywgCisJCW1tYXNrX3QJKm9sZG1hc2spCisJCXsgcmV0dXJuKCoobW1hc2tfdCAqKTApOyB9CisKKyN1bmRlZiB3ZW5jbG9zZQorTkNVUlNFU19CT09MIHdlbmNsb3NlKAorCQljb25zdCBXSU5ET1cgKndpbiwgCisJCWludAl5LCAKKwkJaW50CXgpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIG1vdXNlaW50ZXJ2YWxfc3AKK2ludAltb3VzZWludGVydmFsX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1heGNsaWNrKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtb3VzZWludGVydmFsCitpbnQJbW91c2VpbnRlcnZhbCgKKwkJaW50CW1heGNsaWNrKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaGFzX21vdXNlCitOQ1VSU0VTX0JPT0wgX25jX2hhc19tb3VzZSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX21vdXNlX3NwCitOQ1VSU0VTX0JPT0wgaGFzX21vdXNlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfbW91c2UKK05DVVJTRVNfQk9PTCBoYXNfbW91c2Uodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgd21vdXNlX3RyYWZvCitOQ1VSU0VTX0JPT0wgd21vdXNlX3RyYWZvKAorCQljb25zdCBXSU5ET1cgKndpbiwgCisJCWludAkqcFksIAorCQlpbnQJKnBYLCAKKwkJTkNVUlNFU19CT09MIHRvX3NjcmVlbikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX21vdmUuYyAqLworCisjdW5kZWYgd21vdmUKK2ludAl3bW92ZSgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJeSwgCisJCWludAl4KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHR5L2xpYl9tdmN1ci5jICovCisKKyN1bmRlZiBfbmNfbXNlY19jb3N0X3NwCitpbnQJX25jX21zZWNfY29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgCisJCWludAlhZmZjbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19tc2VjX2Nvc3QKK2ludAlfbmNfbXNlY19jb3N0KAorCQljb25zdCBjaGFyICpjb25zdCBjYXAsIAorCQlpbnQJYWZmY250KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfbXZjdXJfcmVzdW1lX3NwCit2b2lkCV9uY19tdmN1cl9yZXN1bWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbXZjdXJfcmVzdW1lCit2b2lkCV9uY19tdmN1cl9yZXN1bWUodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tdmN1cl9pbml0X3NwCit2b2lkCV9uY19tdmN1cl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX212Y3VyX2luaXQKK3ZvaWQJX25jX212Y3VyX2luaXQodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tdmN1cl93cmFwX3NwCit2b2lkCV9uY19tdmN1cl93cmFwX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX212Y3VyX3dyYXAKK3ZvaWQJX25jX212Y3VyX3dyYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tdmN1cl9zcAoraW50CV9uY19tdmN1cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfbXZjdXIKK2ludAlfbmNfbXZjdXIoCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmN1cl9zcAoraW50CW12Y3VyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXlvbGQsIAorCQlpbnQJeG9sZCwgCisJCWludAl5bmV3LCAKKwkJaW50CXhuZXcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12Y3VyCitpbnQJbXZjdXIoCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfb3B0aW1pemVfZW5hYmxlCitpbnQJX25jX29wdGltaXplX2VuYWJsZTsKKworLyogLi9iYXNlL2xpYl9tdndpbi5jICovCisKKyN1bmRlZiBtdndpbgoraW50CW12d2luKAorCQlXSU5ET1cJKndpbiwgCisJCWludAlieSwgCisJCWludAlieCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX25ld3Rlcm0uYyAqLworCisjdW5kZWYgZmlsdGVyX3NwCit2b2lkCWZpbHRlcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGZpbHRlcgordm9pZAlmaWx0ZXIodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5vZmlsdGVyX3NwCit2b2lkCW5vZmlsdGVyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9maWx0ZXIKK3ZvaWQJbm9maWx0ZXIodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5ld3Rlcm1fc3AKK1NDUkVFTgkqbmV3dGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlGSUxFCSpvZnAsIAorCQlGSUxFCSppZnApCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKKyN1bmRlZiBuZXd0ZXJtCitTQ1JFRU4JKm5ld3Rlcm0oCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlGSUxFCSpvZnAsIAorCQlGSUxFCSppZnApCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfbmV3d2luLmMgKi8KKworI3VuZGVmIF9uY19mcmVld2luCitpbnQJX25jX2ZyZWV3aW4oCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXd3aW5fc3AKK1dJTkRPVwkqbmV3d2luX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW51bV9saW5lcywgCisJCWludAludW1fY29sdW1ucywgCisJCWludAliZWd5LCAKKwkJaW50CWJlZ3gpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBuZXd3aW4KK1dJTkRPVwkqbmV3d2luKAorCQlpbnQJbnVtX2xpbmVzLCAKKwkJaW50CW51bV9jb2x1bW5zLCAKKwkJaW50CWJlZ3ksIAorCQlpbnQJYmVneCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIGRlcndpbgorV0lORE9XCSpkZXJ3aW4oCisJCVdJTkRPVwkqb3JpZywgCisJCWludAludW1fbGluZXMsIAorCQlpbnQJbnVtX2NvbHVtbnMsIAorCQlpbnQJYmVneSwgCisJCWludAliZWd4KQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgc3Vid2luCitXSU5ET1cJKnN1YndpbigKKwkJV0lORE9XCSp3LCAKKwkJaW50CWwsIAorCQlpbnQJYywgCisJCWludAl5LCAKKwkJaW50CXgpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbWFrZW5ld19zcAorV0lORE9XCSpfbmNfbWFrZW5ld19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAludW1fbGluZXMsIAorCQlpbnQJbnVtX2NvbHVtbnMsIAorCQlpbnQJYmVneSwgCisJCWludAliZWd4LCAKKwkJaW50CWZsYWdzKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX2N1cnNjcl9vZgorV0lORE9XCSpfbmNfY3Vyc2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX25ld3Njcl9vZgorV0lORE9XCSpfbmNfbmV3c2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX3N0ZHNjcl9vZgorV0lORE9XCSpfbmNfc3Rkc2NyX29mKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX25sLmMgKi8KKworI3VuZGVmIG5sX3NwCitpbnQJbmxfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5sCitpbnQJbmwodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9ubF9zcAoraW50CW5vbmxfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vbmwKK2ludAlub25sKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9vdmVybGF5LmMgKi8KKworI3VuZGVmIG92ZXJsYXkKK2ludAlvdmVybGF5KAorCQljb25zdCBXSU5ET1cgKndpbjEsIAorCQlXSU5ET1cJKndpbjIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG92ZXJ3cml0ZQoraW50CW92ZXJ3cml0ZSgKKwkJY29uc3QgV0lORE9XICp3aW4xLCAKKwkJV0lORE9XCSp3aW4yKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjb3B5d2luCitpbnQJY29weXdpbigKKwkJY29uc3QgV0lORE9XICpzcmMsIAorCQlXSU5ET1cJKmRzdCwgCisJCWludAlzbWlucm93LCAKKwkJaW50CXNtaW5jb2wsIAorCQlpbnQJZG1pbnJvdywgCisJCWludAlkbWluY29sLCAKKwkJaW50CWRtYXhyb3csIAorCQlpbnQJZG1heGNvbCwgCisJCWludAlvdmVyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfcGFkLmMgKi8KKworI3VuZGVmIG5ld3BhZF9zcAorV0lORE9XCSpuZXdwYWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbCwgCisJCWludAljKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgbmV3cGFkCitXSU5ET1cJKm5ld3BhZCgKKwkJaW50CWwsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIHN1YnBhZAorV0lORE9XCSpzdWJwYWQoCisJCVdJTkRPVwkqb3JpZywgCisJCWludAlsLCAKKwkJaW50CWMsIAorCQlpbnQJYmVneSwgCisJCWludAliZWd4KQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgcHJlZnJlc2gKK2ludAlwcmVmcmVzaCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJcG1pbnJvdywgCisJCWludAlwbWluY29sLCAKKwkJaW50CXNtaW5yb3csIAorCQlpbnQJc21pbmNvbCwgCisJCWludAlzbWF4cm93LCAKKwkJaW50CXNtYXhjb2wpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHBub3V0cmVmcmVzaAoraW50CXBub3V0cmVmcmVzaCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJcG1pbnJvdywgCisJCWludAlwbWluY29sLCAKKwkJaW50CXNtaW5yb3csIAorCQlpbnQJc21pbmNvbCwgCisJCWludAlzbWF4cm93LCAKKwkJaW50CXNtYXhjb2wpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHBlY2hvY2hhcgoraW50CXBlY2hvY2hhcigKKwkJV0lORE9XCSpwYWQsIAorCQljb25zdCBjaHR5cGUgY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9wcmludHcuYyAqLworCisjdW5kZWYgcHJpbnR3CitpbnQJcHJpbnR3KAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdwcmludHcKK2ludAl3cHJpbnR3KAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCS4uLikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZwcmludHcKK2ludAltdnByaW50dygKKwkJaW50CXksIAorCQlpbnQJeCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCS4uLikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbXZ3cHJpbnR3CitpbnQJbXZ3cHJpbnR3KAorCQlXSU5ET1cJKndpbiwgCisJCWludAl5LCAKKwkJaW50CXgsIAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZ3cHJpbnR3CitpbnQJdndwcmludHcoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2hhciAqZm10LCAKKwkJdmFfbGlzdAlhcmdwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfcmVkcmF3bG4uYyAqLworCisjdW5kZWYgd3JlZHJhd2xuCitpbnQJd3JlZHJhd2xuKAorCQlXSU5ET1cJKndpbiwgCisJCWludAliZWcsIAorCQlpbnQJbnVtKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfcmVmcmVzaC5jICovCisKKyN1bmRlZiB3cmVmcmVzaAoraW50CXdyZWZyZXNoKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd25vdXRyZWZyZXNoCitpbnQJd25vdXRyZWZyZXNoKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Jlc3RhcnQuYyAqLworCisjdW5kZWYgcmVzdGFydHRlcm1fc3AKK2ludAlyZXN0YXJ0dGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnRlcm1wLCAKKwkJaW50CWZpbGVudW0sIAorCQlpbnQJKmVycnJldCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzdGFydHRlcm0KK2ludAlyZXN0YXJ0dGVybSgKKwkJY29uc3QgY2hhciAqdGVybXAsIAorCQlpbnQJZmlsZW51bSwgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2NhbncuYyAqLworCisjdW5kZWYgdndzY2FudworaW50CXZ3c2NhbncoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2hhciAqZm10LCAKKwkJdmFfbGlzdAlhcmdwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY2FudworaW50CXNjYW53KAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdzY2FudworaW50CXdzY2FudygKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG12c2NhbncKK2ludAltdnNjYW53KAorCQlpbnQJeSwgCisJCWludAl4LCAKKwkJY29uc3QgY2hhciAqZm10LCAKKwkJLi4uKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdndzY2FudworaW50CW12d3NjYW53KAorCQlXSU5ET1cJKndpbiwgCisJCWludAl5LCAKKwkJaW50CXgsIAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zY3JlZW4uYyAqLworCisjdW5kZWYgZ2V0d2luX3NwCitXSU5ET1cJKmdldHdpbl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKmZpbGVwKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgZ2V0d2luCitXSU5ET1cJKmdldHdpbigKKwkJRklMRQkqZmlsZXApCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBwdXR3aW4KK2ludAlwdXR3aW4oCisJCVdJTkRPVwkqd2luLCAKKwkJRklMRQkqZmlsZXApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNjcl9yZXN0b3JlX3NwCitpbnQJc2NyX3Jlc3RvcmVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY3JfcmVzdG9yZQoraW50CXNjcl9yZXN0b3JlKAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY3JfZHVtcAoraW50CXNjcl9kdW1wKAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY3JfaW5pdF9zcAoraW50CXNjcl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2NyX2luaXQKK2ludAlzY3JfaW5pdCgKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2NyX3NldF9zcAoraW50CXNjcl9zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpmaWxlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzY3Jfc2V0CitpbnQJc2NyX3NldCgKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Njcm9sbC5jICovCisKKyN1bmRlZiBfbmNfc2Nyb2xsX3dpbmRvdwordm9pZAlfbmNfc2Nyb2xsX3dpbmRvdygKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQgY29uc3QgbiwgCisJCWludCBjb25zdCB0b3AsIAorCQlpbnQgY29uc3QgYm90dG9tLCAKKwkJY2NoYXJfdAlibGFuaykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHdzY3JsCitpbnQJd3NjcmwoCisJCVdJTkRPVwkqd2luLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zY3JvbGxvay5jICovCisKKyN1bmRlZiBzY3JvbGxvaworaW50CXNjcm9sbG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2NycmVnLmMgKi8KKworI3VuZGVmIHdzZXRzY3JyZWcKK2ludAl3c2V0c2NycmVnKAorCQlXSU5ET1cJKndpbiwgCisJCWludAl0b3AsIAorCQlpbnQJYm90dG9tKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2V0X3Rlcm0uYyAqLworCisjdW5kZWYgc2V0X3Rlcm0KK1NDUkVFTgkqc2V0X3Rlcm0oCisJCVNDUkVFTgkqc2NyZWVucCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIGRlbHNjcmVlbgordm9pZAlkZWxzY3JlZW4oCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0dXBzY3JlZW5fc3AKK2ludAlfbmNfc2V0dXBzY3JlZW5fc3AoCisJCVNDUkVFTgkqKnNwcCwgCisJCWludAlzbGluZXMsIAorCQlpbnQJc2NvbHVtbnMsIAorCQlGSUxFCSpvdXRwdXQsIAorCQlpbnQJZmlsdGVyZWQsIAorCQlpbnQJc2xrX2Zvcm1hdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldHVwc2NyZWVuCitpbnQJX25jX3NldHVwc2NyZWVuKAorCQlpbnQJc2xpbmVzLCAKKwkJaW50CXNjb2x1bW5zLCAKKwkJRklMRQkqb3V0cHV0LCAKKwkJaW50CWZpbHRlcmVkLCAKKwkJaW50CXNsa19mb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yaXBvZmZsaW5lX3NwCitpbnQJX25jX3JpcG9mZmxpbmVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbGluZSwgCisJCWludAkoKmluaXQpKAorCQlXSU5ET1cJKnAxLCAKKwkJaW50CXAyKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3JpcG9mZmxpbmUKK2ludAlfbmNfcmlwb2ZmbGluZSgKKwkJaW50CWxpbmUsIAorCQlpbnQJKCppbml0KSgKKwkJV0lORE9XCSpwMSwgCisJCWludAlwMikpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJpcG9mZmxpbmVfc3AKK2ludAlyaXBvZmZsaW5lX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWxpbmUsIAorCQlpbnQJKCppbml0KSgKKwkJV0lORE9XCSpwMSwgCisJCWludAlwMikpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJpcG9mZmxpbmUKK2ludAlyaXBvZmZsaW5lKAorCQlpbnQJbGluZSwgCisJCWludAkoKmluaXQpKAorCQlXSU5ET1cJKnAxLCAKKwkJaW50CXAyKSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Nsay5jICovCisKKyN1bmRlZiBfbmNfZm9ybWF0X3Nsa3MKK2ludAlfbmNfZm9ybWF0X3Nsa3MoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3Nsa19pbml0aWFsaXplCitpbnQJX25jX3Nsa19pbml0aWFsaXplKAorCQlXSU5ET1cJKnN0d2luLCAKKwkJaW50CWNvbHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa19yZXN0b3JlX3NwCitpbnQJc2xrX3Jlc3RvcmVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa19yZXN0b3JlCitpbnQJc2xrX3Jlc3RvcmUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Nsa2F0cl9zZXQuYyAqLworCisjdW5kZWYgc2xrX2F0dHJfc2V0X3NwCitpbnQJc2xrX2F0dHJfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgYXR0cl90IGF0dHIsIAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa19hdHRyX3NldAoraW50CXNsa19hdHRyX3NldCgKKwkJY29uc3QgYXR0cl90IGF0dHIsIAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zbGthdHJvZi5jICovCisKKyN1bmRlZiBzbGtfYXR0cm9mZl9zcAoraW50CXNsa19hdHRyb2ZmX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2h0eXBlIGF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa19hdHRyb2ZmCitpbnQJc2xrX2F0dHJvZmYoCisJCWNvbnN0IGNodHlwZSBhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2xrYXRyb24uYyAqLworCisjdW5kZWYgc2xrX2F0dHJvbl9zcAoraW50CXNsa19hdHRyb25fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaHR5cGUgYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX2F0dHJvbgoraW50CXNsa19hdHRyb24oCisJCWNvbnN0IGNodHlwZSBhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2xrYXRyc2V0LmMgKi8KKworI3VuZGVmIHNsa19hdHRyc2V0X3NwCitpbnQJc2xrX2F0dHJzZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaHR5cGUgYXR0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX2F0dHJzZXQKK2ludAlzbGtfYXR0cnNldCgKKwkJY29uc3QgY2h0eXBlIGF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zbGthdHRyLmMgKi8KKworI3VuZGVmIHNsa19hdHRyX3NwCithdHRyX3QJc2xrX2F0dHJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooYXR0cl90ICopMCk7IH0KKworI3VuZGVmIHNsa19hdHRyCithdHRyX3QJc2xrX2F0dHIodm9pZCkKKwkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Nsa2NsZWFyLmMgKi8KKworI3VuZGVmIHNsa19jbGVhcl9zcAoraW50CXNsa19jbGVhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX2NsZWFyCitpbnQJc2xrX2NsZWFyKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zbGtjb2xvci5jICovCisKKyN1bmRlZiBzbGtfY29sb3Jfc3AKK2ludAlzbGtfY29sb3Jfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlcikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX2NvbG9yCitpbnQJc2xrX2NvbG9yKAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlcikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Nsa2luaXQuYyAqLworCisjdW5kZWYgc2xrX2luaXRfc3AKK2ludAlzbGtfaW5pdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa19pbml0CitpbnQJc2xrX2luaXQoCisJCWludAlmb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zbGtsYWIuYyAqLworCisjdW5kZWYgc2xrX2xhYmVsX3NwCitjaGFyCSpzbGtfbGFiZWxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBzbGtfbGFiZWwKK2NoYXIJKnNsa19sYWJlbCgKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3Nsa3JlZnIuYyAqLworCisjdW5kZWYgc2xrX25vdXRyZWZyZXNoX3NwCitpbnQJc2xrX25vdXRyZWZyZXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzbGtfbm91dHJlZnJlc2gKK2ludAlzbGtfbm91dHJlZnJlc2godm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX3JlZnJlc2hfc3AKK2ludAlzbGtfcmVmcmVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX3JlZnJlc2gKK2ludAlzbGtfcmVmcmVzaCh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfc2xrc2V0LmMgKi8KKworI3VuZGVmIHNsa19zZXRfc3AKK2ludAlzbGtfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWksIAorCQljb25zdCBjaGFyICphc3RyLCAKKwkJaW50CWZvcm1hdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2xrX3NldAoraW50CXNsa19zZXQoCisJCWludAlpLCAKKwkJY29uc3QgY2hhciAqYXN0ciwgCisJCWludAlmb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl9zbGt0b3VjaC5jICovCisKKyN1bmRlZiBzbGtfdG91Y2hfc3AKK2ludAlzbGtfdG91Y2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNsa190b3VjaAoraW50CXNsa190b3VjaCh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfdG91Y2guYyAqLworCisjdW5kZWYgaXNfbGluZXRvdWNoZWQKK05DVVJTRVNfQk9PTCBpc19saW5ldG91Y2hlZCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJbGluZSkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfd2ludG91Y2hlZAorTkNVUlNFU19CT09MIGlzX3dpbnRvdWNoZWQoCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiB3dG91Y2hsbgoraW50CXd0b3VjaGxuKAorCQlXSU5ET1cJKndpbiwgCisJCWludAl5LCAKKwkJaW50CW4sIAorCQlpbnQJY2hhbmdlZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWRtcC5jICovCisKKyN1bmRlZiBfdHJhY2VkdW1wCit2b2lkCV90cmFjZWR1bXAoCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlXSU5ET1cJKndpbikKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90cmFjZS9saWJfdHJhY2Vtc2UuYyAqLworCisjdW5kZWYgX25jX3RyYWNlX21tYXNrX3QKK2NoYXIJKl9uY190cmFjZV9tbWFza190KAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAljb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY190cmFjZW1vdXNlCitjaGFyCSpfbmNfdHJhY2Vtb3VzZSgKKwkJU0NSRUVOCSpzcCwgCisJCU1FVkVOVCBjb25zdCAqZXApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfbW1hc2tfdAorbW1hc2tfdAlfbmNfcmV0cmFjZV9tbWFza190KAorCQlTQ1JFRU4JKnNwLCAKKwkJbW1hc2tfdAljb2RlKQorCQl7IHJldHVybigqKG1tYXNrX3QgKikwKTsgfQorCisjdW5kZWYgX3RyYWNlbW91c2UKK2NoYXIJKl90cmFjZW1vdXNlKAorCQlNRVZFTlQgY29uc3QgKmVwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90dHkvbGliX3RzdHAuYyAqLworCisjdW5kZWYgX25jX3NpZ25hbF9oYW5kbGVyCit2b2lkCV9uY19zaWduYWxfaGFuZGxlcigKKwkJaW50CWVuYWJsZSkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9iYXNlL2xpYl91bmdldGNoLmMgKi8KKworI3VuZGVmIF9uY19maWZvX2R1bXAKK3ZvaWQJX25jX2ZpZm9fZHVtcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHVuZ2V0Y2hfc3AKK2ludAl1bmdldGNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB1bmdldGNoCitpbnQJdW5nZXRjaCgKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHR5L2xpYl92aWRhdHRyLmMgKi8KKworI3VuZGVmIHZpZHB1dHNfc3AKK2ludAl2aWRwdXRzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCW5ld21vZGUsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdmlkcHV0cworaW50CXZpZHB1dHMoCisJCWNodHlwZQluZXdtb2RlLCAKKwkJTkNVUlNFU19PVVRDIG91dGMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZGF0dHJfc3AKK2ludAl2aWRhdHRyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCW5ld21vZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZGF0dHIKK2ludAl2aWRhdHRyKAorCQljaHR5cGUJbmV3bW9kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGVybWF0dHJzX3NwCitjaHR5cGUJdGVybWF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKKyN1bmRlZiB0ZXJtYXR0cnMKK2NodHlwZQl0ZXJtYXR0cnModm9pZCkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3ZsaW5lLmMgKi8KKworI3VuZGVmIHd2bGluZQoraW50CXd2bGluZSgKKwkJV0lORE9XCSp3aW4sIAorCQljaHR5cGUJY2gsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3dhdHRyb2ZmLmMgKi8KKworI3VuZGVmIHdhdHRyX29mZgoraW50CXdhdHRyX29mZigKKwkJV0lORE9XCSp3aW4sIAorCQlhdHRyX3QJYXQsIAorCQl2b2lkCSpvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfd2F0dHJvbi5jICovCisKKyN1bmRlZiB3YXR0cl9vbgoraW50CXdhdHRyX29uKAorCQlXSU5ET1cJKndpbiwgCisJCWF0dHJfdAlhdCwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL2xpYl93aW5jaC5jICovCisKKyN1bmRlZiB3aW5jaAorY2h0eXBlCXdpbmNoKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisvKiAuL2Jhc2UvbGliX3dpbmRvdy5jICovCisKKyN1bmRlZiBfbmNfc3luY2hvb2sKK3ZvaWQJX25jX3N5bmNob29rKAorCQlXSU5ET1cJKndpbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG12ZGVyd2luCitpbnQJbXZkZXJ3aW4oCisJCVdJTkRPVwkqd2luLCAKKwkJaW50CXksIAorCQlpbnQJeCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc3luY29rCitpbnQJc3luY29rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBiZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd3N5bmN1cAordm9pZAl3c3luY3VwKAorCQlXSU5ET1cJKndpbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHdzeW5jZG93bgordm9pZAl3c3luY2Rvd24oCisJCVdJTkRPVwkqd2luKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgd2N1cnN5bmN1cAordm9pZAl3Y3Vyc3luY3VwKAorCQlXSU5ET1cJKndpbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGR1cHdpbgorV0lORE9XCSpkdXB3aW4oCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisvKiAuL2Jhc2UvbmNfcGFuZWwuYyAqLworCisjdW5kZWYgX25jX3BhbmVsaG9va19zcAorc3RydWN0IHBhbmVsaG9vayAqX25jX3BhbmVsaG9va19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgcGFuZWxob29rICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcGFuZWxob29rCitzdHJ1Y3QgcGFuZWxob29rICpfbmNfcGFuZWxob29rKHZvaWQpCisJCXsgcmV0dXJuKCooc3RydWN0IHBhbmVsaG9vayAqKikwKTsgfQorCisvKiAuL2Jhc2Uvc2FmZV9zcHJpbnRmLmMgKi8KKworI3VuZGVmIF9uY19wcmludGZfc3RyaW5nX3NwCitjaGFyCSpfbmNfcHJpbnRmX3N0cmluZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCXZhX2xpc3QJYXApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3ByaW50Zl9zdHJpbmcKK2NoYXIJKl9uY19wcmludGZfc3RyaW5nKAorCQljb25zdCBjaGFyICpmbXQsIAorCQl2YV9saXN0CWFwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90dHkvdHR5X3VwZGF0ZS5jICovCisKKyN1bmRlZiBkb3VwZGF0ZV9zcAoraW50CWRvdXBkYXRlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkb3VwZGF0ZQoraW50CWRvdXBkYXRlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zY3JvbGxuX3NwCitpbnQJX25jX3Njcm9sbG5fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbiwgCisJCWludAl0b3AsIAorCQlpbnQJYm90LCAKKwkJaW50CW1heHkpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zY3JvbGxuCitpbnQJX25jX3Njcm9sbG4oCisJCWludAluLCAKKwkJaW50CXRvcCwgCisJCWludAlib3QsIAorCQlpbnQJbWF4eSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NjcmVlbl9yZXN1bWVfc3AKK3ZvaWQJX25jX3NjcmVlbl9yZXN1bWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2NyZWVuX3Jlc3VtZQordm9pZAlfbmNfc2NyZWVuX3Jlc3VtZSh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NjcmVlbl9pbml0X3NwCit2b2lkCV9uY19zY3JlZW5faW5pdF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zY3JlZW5faW5pdAordm9pZAlfbmNfc2NyZWVuX2luaXQodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zY3JlZW5fd3JhcF9zcAordm9pZAlfbmNfc2NyZWVuX3dyYXBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2NyZWVuX3dyYXAKK3ZvaWQJX25jX3NjcmVlbl93cmFwKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZG9feG1jX2dsaXRjaF9zcAordm9pZAlfbmNfZG9feG1jX2dsaXRjaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWF0dHJfdAlwcmV2aW91cykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19kb194bWNfZ2xpdGNoCit2b2lkCV9uY19kb194bWNfZ2xpdGNoKAorCQlhdHRyX3QJcHJldmlvdXMpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdHJhY2UvdmFyYXJncy5jICovCisKK3R5cGVkZWYgZW51bSB7CisgICAgYXRVbmtub3duID0gMCwgYXRJbnRlZ2VyLCBhdEZsb2F0LCBhdFBvaW50LCBhdFN0cmluZworfSBBUkdUWVBFOworCisjdW5kZWYgX25jX3ZhcmFyZ3MKK2NoYXIJKl9uY192YXJhcmdzKAorCQljb25zdCBjaGFyICpmbXQsIAorCQl2YV9saXN0CWFwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL3Zzc2NhbmYuYyAqLworCisjdW5kZWYgX25jX3Zzc2NhbmYKK3ZvaWQJX25jX3Zzc2NhbmYodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9iYXNlL2xpYl9mcmVlYWxsLmMgKi8KKworI3VuZGVmIF9uY19mcmVlYWxsCit2b2lkCV9uY19mcmVlYWxsKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZnJlZV9hbmRfZXhpdF9zcAordm9pZAlfbmNfZnJlZV9hbmRfZXhpdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2RlKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2ZyZWVfYW5kX2V4aXQKK3ZvaWQJX25jX2ZyZWVfYW5kX2V4aXQoCisJCWludAljb2RlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3dpZGVjaGFyL2NoYXJhYmxlLmMgKi8KKworI3VuZGVmIF9uY19pc19jaGFyYWJsZQorTkNVUlNFU19CT09MIF9uY19pc19jaGFyYWJsZSgKKwkJd2NoYXJfdAljaCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3RvX2NoYXIKK2ludAlfbmNfdG9fY2hhcigKKwkJd2ludF90CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfdG9fd2lkZWNoYXIKK3dpbnRfdAlfbmNfdG9fd2lkZWNoYXIoCisJCWludAljaCkKKwkJeyByZXR1cm4oKih3aW50X3QgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9hZGRfd2NoLmMgKi8KKworI3VuZGVmIHdhZGRfd2NoCitpbnQJd2FkZF93Y2goCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2NoYXJfdCAqd2NoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3ZWNob193Y2hhcgoraW50CXdlY2hvX3djaGFyKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNjaGFyX3QgKndjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9ib3hfc2V0LmMgKi8KKworI3VuZGVmIHdib3JkZXJfc2V0CitpbnQJd2JvcmRlcl9zZXQoCisJCVdJTkRPVwkqd2luLCAKKwkJY29uc3QgY2NoYXJfdCAqbHMsIAorCQljb25zdCBjY2hhcl90ICpycywgCisJCWNvbnN0IGNjaGFyX3QgKnRzLCAKKwkJY29uc3QgY2NoYXJfdCAqYnMsIAorCQljb25zdCBjY2hhcl90ICp0bCwgCisJCWNvbnN0IGNjaGFyX3QgKnRyLCAKKwkJY29uc3QgY2NoYXJfdCAqYmwsIAorCQljb25zdCBjY2hhcl90ICpicikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9jY2hhci5jICovCisKKyN1bmRlZiBzZXRjY2hhcgoraW50CXNldGNjaGFyKAorCQljY2hhcl90CSp3Y3ZhbCwgCisJCWNvbnN0IHdjaGFyX3QgKndjaCwgCisJCWNvbnN0IGF0dHJfdCBhdHRycywgCisJCXNob3J0CWNvbG9yX3BhaXIsIAorCQljb25zdCB2b2lkICpvcHRzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBnZXRjY2hhcgoraW50CWdldGNjaGFyKAorCQljb25zdCBjY2hhcl90ICp3Y3ZhbCwgCisJCXdjaGFyX3QJKndjaCwgCisJCWF0dHJfdAkqYXR0cnMsIAorCQlzaG9ydAkqY29sb3JfcGFpciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi93aWRlY2hhci9saWJfZXJhc2V3Y2hhci5jICovCisKKyN1bmRlZiBlcmFzZXdjaGFyCitpbnQJZXJhc2V3Y2hhcigKKwkJd2NoYXJfdAkqd2NoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBraWxsd2NoYXIKK2ludAlraWxsd2NoYXIoCisJCXdjaGFyX3QJKndjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9nZXRfd2NoLmMgKi8KKworI3VuZGVmIHdnZXRfd2NoCitpbnQJd2dldF93Y2goCisJCVdJTkRPVwkqd2luLCAKKwkJd2ludF90CSpyZXN1bHQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi93aWRlY2hhci9saWJfZ2V0X3dzdHIuYyAqLworCisjdW5kZWYgd2dldG5fd3N0cgoraW50CXdnZXRuX3dzdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJd2ludF90CSpzdHIsIAorCQlpbnQJbWF4bGVuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX2hsaW5lX3NldC5jICovCisKKyN1bmRlZiB3aGxpbmVfc2V0CitpbnQJd2hsaW5lX3NldCgKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjY2hhcl90ICpjaCwgCisJCWludAluKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX2luX3djaC5jICovCisKKyN1bmRlZiB3aW5fd2NoCitpbnQJd2luX3djaCgKKwkJV0lORE9XCSp3aW4sIAorCQljY2hhcl90CSp3Y3ZhbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9pbl93Y2huc3RyLmMgKi8KKworI3VuZGVmIHdpbl93Y2huc3RyCitpbnQJd2luX3djaG5zdHIoCisJCVdJTkRPVwkqd2luLCAKKwkJY2NoYXJfdAkqd2Noc3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi93aWRlY2hhci9saWJfaW5zX3djaC5jICovCisKKyN1bmRlZiBfbmNfaW5zZXJ0X3djaAoraW50CV9uY19pbnNlcnRfd2NoKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IGNjaGFyX3QgKndjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgd2luc193Y2gKK2ludAl3aW5zX3djaCgKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjY2hhcl90ICp3Y2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbnNfbndzdHIKK2ludAl3aW5zX253c3RyKAorCQlXSU5ET1cJKndpbiwgCisJCWNvbnN0IHdjaGFyX3QgKndzdHIsIAorCQlpbnQJbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9pbndzdHIuYyAqLworCisjdW5kZWYgd2lubndzdHIKK2ludAl3aW5ud3N0cigKKwkJV0lORE9XCSp3aW4sIAorCQl3Y2hhcl90CSp3c3RyLCAKKwkJaW50CW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHdpbndzdHIKK2ludAl3aW53c3RyKAorCQlXSU5ET1cJKndpbiwgCisJCXdjaGFyX3QJKndzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi93aWRlY2hhci9saWJfa2V5X25hbWUuYyAqLworCisjdW5kZWYga2V5X25hbWUKK2NvbnN0IGNoYXIgKmtleV9uYW1lKAorCQl3Y2hhcl90CWMpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9wZWNob193Y2hhci5jICovCisKKyN1bmRlZiBwZWNob193Y2hhcgoraW50CXBlY2hvX3djaGFyKAorCQlXSU5ET1cJKnBhZCwgCisJCWNvbnN0IGNjaGFyX3QgKndjaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3dpZGVjaGFyL2xpYl9zbGtfd3NldC5jICovCisKKyN1bmRlZiBzbGtfd3NldAoraW50CXNsa193c2V0KAorCQlpbnQJaSwgCisJCWNvbnN0IHdjaGFyX3QgKmFzdHIsIAorCQlpbnQJZm9ybWF0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX3VuZ2V0X3djaC5jICovCisKKyN1bmRlZiBfbmNfd2NydG9tYgorc2l6ZV90CV9uY193Y3J0b21iKAorCQljaGFyCSp0YXJnZXQsIAorCQl3Y2hhcl90CXNvdXJjZSwgCisJCW1ic3RhdGVfdCAqc3RhdGUpCisJCXsgcmV0dXJuKCooc2l6ZV90ICopMCk7IH0KKworI3VuZGVmIHVuZ2V0X3djaF9zcAoraW50CXVuZ2V0X3djaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IHdjaGFyX3Qgd2NoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB1bmdldF93Y2gKK2ludAl1bmdldF93Y2goCisJCWNvbnN0IHdjaGFyX3Qgd2NoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX3ZpZF9hdHRyLmMgKi8KKworI3VuZGVmIHZpZF9wdXRzX3NwCitpbnQJdmlkX3B1dHNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlhdHRyX3QJbmV3bW9kZSwgCisJCXNob3J0CXBhaXIsIAorCQl2b2lkCSpvcHRzLCAKKwkJTkNVUlNFU19PVVRDX3NwIG91dGMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZF9wdXRzCitpbnQJdmlkX3B1dHMoCisJCWF0dHJfdAluZXdtb2RlLCAKKwkJc2hvcnQJcGFpciwgCisJCXZvaWQJKm9wdHMsIAorCQlOQ1VSU0VTX09VVEMgb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdmlkX2F0dHJfc3AKK2ludAl2aWRfYXR0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWF0dHJfdAluZXdtb2RlLCAKKwkJc2hvcnQJcGFpciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZF9hdHRyCitpbnQJdmlkX2F0dHIoCisJCWF0dHJfdAluZXdtb2RlLCAKKwkJc2hvcnQJcGFpciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRlcm1fYXR0cnNfc3AKK2F0dHJfdAl0ZXJtX2F0dHJzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKKyN1bmRlZiB0ZXJtX2F0dHJzCithdHRyX3QJdGVybV9hdHRycyh2b2lkKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX3ZsaW5lX3NldC5jICovCisKKyN1bmRlZiB3dmxpbmVfc2V0CitpbnQJd3ZsaW5lX3NldCgKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjY2hhcl90ICpjaCwgCisJCWludAluKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX3dhY3MuYyAqLworCisjdW5kZWYgX25jX3dhY3MKK2NjaGFyX3QJKl9uY193YWNzOworCisjdW5kZWYgX25jX2luaXRfd2Fjcwordm9pZAlfbmNfaW5pdF93YWNzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vd2lkZWNoYXIvbGliX3d1bmN0cmwuYyAqLworCisjdW5kZWYgd3VuY3RybF9zcAord2NoYXJfdAkqd3VuY3RybF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNjaGFyX3QJKndjKQorCQl7IHJldHVybigqKHdjaGFyX3QgKiopMCk7IH0KKworI3VuZGVmIHd1bmN0cmwKK3djaGFyX3QJKnd1bmN0cmwoCisJCWNjaGFyX3QJKndjKQorCQl7IHJldHVybigqKHdjaGFyX3QgKiopMCk7IH0KKworLyogLi9leHBhbmRlZC5jICovCisKKyN1bmRlZiBfbmNfdG9nZ2xlX2F0dHJfb24KK3ZvaWQJX25jX3RvZ2dsZV9hdHRyX29uKAorCQlhdHRyX3QJKlMsIAorCQlhdHRyX3QJYXQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdG9nZ2xlX2F0dHJfb2ZmCit2b2lkCV9uY190b2dnbGVfYXR0cl9vZmYoCisJCWF0dHJfdAkqUywgCisJCWF0dHJfdAlhdCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19EZWxDaGFyQ29zdF9zcAoraW50CV9uY19EZWxDaGFyQ29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX0luc0NoYXJDb3N0X3NwCitpbnQJX25jX0luc0NoYXJDb3N0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfVXBkYXRlQXR0cnNfc3AKK3ZvaWQJX25jX1VwZGF0ZUF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2NoYXJfdCAqYykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19EZWxDaGFyQ29zdAoraW50CV9uY19EZWxDaGFyQ29zdCgKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfSW5zQ2hhckNvc3QKK2ludAlfbmNfSW5zQ2hhckNvc3QoCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX1VwZGF0ZUF0dHJzCit2b2lkCV9uY19VcGRhdGVBdHRycygKKwkJY29uc3QgY2NoYXJfdCAqYykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9iYXNlL2xlZ2FjeV9jb2RpbmcuYyAqLworCisjdW5kZWYgdXNlX2xlZ2FjeV9jb2Rpbmdfc3AKK2ludAl1c2VfbGVnYWN5X2NvZGluZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlsZXZlbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdXNlX2xlZ2FjeV9jb2RpbmcKK2ludAl1c2VfbGVnYWN5X2NvZGluZygKKwkJaW50CWxldmVsKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9saWJfZGZ0X2ZnYmcuYyAqLworCisjdW5kZWYgdXNlX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJdXNlX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB1c2VfZGVmYXVsdF9jb2xvcnMKK2ludAl1c2VfZGVmYXVsdF9jb2xvcnModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZnLCAKKwkJaW50CWJnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBhc3N1bWVfZGVmYXVsdF9jb2xvcnMKK2ludAlhc3N1bWVfZGVmYXVsdF9jb2xvcnMoCisJCWludAlmZywgCisJCWludAliZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9wcmludC5jICovCisKKyN1bmRlZiBtY3ByaW50X3NwCitpbnQJbWNwcmludF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNoYXIJKmRhdGEsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtY3ByaW50CitpbnQJbWNwcmludCgKKwkJY2hhcgkqZGF0YSwgCisJCWludAlsZW4pCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9iYXNlL3Jlc2l6ZXRlcm0uYyAqLworCisjdW5kZWYgaXNfdGVybV9yZXNpemVkX3NwCitOQ1VSU0VTX0JPT0wgaXNfdGVybV9yZXNpemVkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBpc190ZXJtX3Jlc2l6ZWQKK05DVVJTRVNfQk9PTCBpc190ZXJtX3Jlc2l6ZWQoCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgcmVzaXplX3Rlcm1fc3AKK2ludAlyZXNpemVfdGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzaXplX3Rlcm0KK2ludAlyZXNpemVfdGVybSgKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNpemV0ZXJtX3NwCitpbnQJcmVzaXpldGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzaXpldGVybQoraW50CXJlc2l6ZXRlcm0oCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3huYW1lcy5jICovCisKKyN1bmRlZiBfbmNfdHJhY2VfeG5hbWVzCit2b2lkCV9uY190cmFjZV94bmFtZXMoCisJCVRFUk1UWVBFICp0cCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby91c2Vfc2NyZWVuLmMgKi8KKworI3VuZGVmIHVzZV9zY3JlZW4KK2ludAl1c2Vfc2NyZWVuKAorCQlTQ1JFRU4JKnNjcmVlbiwgCisJCU5DVVJTRVNfU0NSRUVOX0NCIGZ1bmMsIAorCQl2b2lkCSpkYXRhKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS91c2Vfd2luZG93LmMgKi8KKworI3VuZGVmIHVzZV93aW5kb3cKK2ludAl1c2Vfd2luZG93KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfV0lORE9XX0NCIGZ1bmMsIAorCQl2b2lkCSpkYXRhKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS93cmVzaXplLmMgKi8KKworI3VuZGVmIHdyZXNpemUKK2ludAl3cmVzaXplKAorCQlXSU5ET1cJKndpbiwgCisJCWludAlUb0xpbmVzLCAKKwkJaW50CVRvQ29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2FjY2Vzcy5jICovCisKKyN1bmRlZiBfbmNfcm9vdG5hbWUKK2NoYXIJKl9uY19yb290bmFtZSgKKwkJY2hhcgkqcGF0aCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfaXNfYWJzX3BhdGgKK05DVVJTRVNfQk9PTCBfbmNfaXNfYWJzX3BhdGgoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19wYXRobGFzdAordW5zaWduZWQgX25jX3BhdGhsYXN0KAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKHVuc2lnbmVkICopMCk7IH0KKworI3VuZGVmIF9uY19iYXNlbmFtZQorY2hhcgkqX25jX2Jhc2VuYW1lKAorCQljaGFyCSpwYXRoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19hY2Nlc3MKK2ludAlfbmNfYWNjZXNzKAorCQljb25zdCBjaGFyICpwYXRoLCAKKwkJaW50CW1vZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19pc19kaXJfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19kaXJfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX2lzX2ZpbGVfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19maWxlX3BhdGgoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19lbnZfYWNjZXNzCitpbnQJX25jX2Vudl9hY2Nlc3Modm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2FkZF90cmllcy5jICovCisKKyN1bmRlZiBfbmNfYWRkX3RvX3RyeQoraW50CV9uY19hZGRfdG9fdHJ5KAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vYWxsb2NfdHR5cGUuYyAqLworCisjdW5kZWYgX25jX2FsaWduX3Rlcm10eXBlCit2b2lkCV9uY19hbGlnbl90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKnRvLCAKKwkJVEVSTVRZUEUgKmZyb20pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfY29weV90ZXJtdHlwZQordm9pZAlfbmNfY29weV90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKmRzdCwgCisJCWNvbnN0IFRFUk1UWVBFICpzcmMpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vY29kZXMuYyAqLworCisjdW5kZWYgX25jX2Jvb2xjb2RlcworY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sY29kZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbnVtY29kZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfbnVtY29kZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3RyY29kZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfc3RyY29kZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vY29tcF9jYXB0YWIuYyAqLworCisjdW5kZWYgX25jX2dldF90YWJsZQorY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKl9uY19nZXRfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfdGFibGUKK2NvbnN0IEhhc2hWYWx1ZSAqX25jX2dldF9oYXNoX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoVmFsdWUgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfYWxpYXNfdGFibGUKK2NvbnN0IHN0cnVjdCBhbGlhcyAqX25jX2dldF9hbGlhc190YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IGFsaWFzICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfaW5mbworY29uc3QgSGFzaERhdGEgKl9uY19nZXRfaGFzaF9pbmZvKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoRGF0YSAqKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfZXJyb3IuYyAqLworCisjdW5kZWYgX25jX3N1cHByZXNzX3dhcm5pbmdzCitOQ1VSU0VTX0JPT0wgX25jX3N1cHByZXNzX3dhcm5pbmdzOworI3VuZGVmIF9uY19jdXJyX2xpbmUKK2ludAlfbmNfY3Vycl9saW5lOworI3VuZGVmIF9uY19jdXJyX2NvbAoraW50CV9uY19jdXJyX2NvbDsKKworI3VuZGVmIF9uY19nZXRfc291cmNlCitjb25zdCBjaGFyICpfbmNfZ2V0X3NvdXJjZSh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfc291cmNlCit2b2lkCV9uY19zZXRfc291cmNlKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldF90eXBlCit2b2lkCV9uY19zZXRfdHlwZSgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfdHlwZQordm9pZAlfbmNfZ2V0X3R5cGUoCisJCWNoYXIJKm5hbWUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfd2FybmluZwordm9pZAlfbmNfd2FybmluZygKKwkJY29uc3QgY2hhciAqY29uc3QgZm10LCAKKwkJLi4uKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2Vycl9hYm9ydAordm9pZAlfbmNfZXJyX2Fib3J0KAorCQljb25zdCBjaGFyICpjb25zdCBmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc3lzZXJyX2Fib3J0Cit2b2lkCV9uY19zeXNlcnJfYWJvcnQoCisJCWNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9jb21wX2hhc2guYyAqLworCisjdW5kZWYgX25jX2ZpbmRfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY29uc3QgSGFzaFZhbHVlICpoYXNoX3RhYmxlKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmluZF90eXBlX2VudHJ5CitzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqX25jX2ZpbmRfdHlwZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CXR5cGUsIAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQorCisvKiAuL3RpbmZvL2RiX2l0ZXJhdG9yLmMgKi8KKworI3VuZGVmIF9uY190aWNfZGlyCitjb25zdCBjaGFyICpfbmNfdGljX2RpcigKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfa2VlcF90aWNfZGlyCit2b2lkCV9uY19rZWVwX3RpY19kaXIoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbGFzdF9kYgordm9pZAlfbmNfbGFzdF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX25leHRfZGIKK2NvbnN0IGNoYXIgKl9uY19uZXh0X2RiKAorCQlEQkRJUlMJKnN0YXRlLCAKKwkJaW50CSpvZmZzZXQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2ZpcnN0X2RiCit2b2lkCV9uY19maXJzdF9kYigKKwkJREJESVJTCSpzdGF0ZSwgCisJCWludAkqb2Zmc2V0KQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2RvYWxsb2MuYyAqLworCisjdW5kZWYgX25jX2RvYWxsb2MKK3ZvaWQJKl9uY19kb2FsbG9jKAorCQl2b2lkCSpvbGRwLCAKKwkJc2l6ZV90CWFtb3VudCkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vdGluZm8vZW50cmllcy5jICovCisKKyN1bmRlZiBfbmNfaGVhZAorRU5UUlkJKl9uY19oZWFkOworI3VuZGVmIF9uY190YWlsCitFTlRSWQkqX25jX3RhaWw7CisKKyN1bmRlZiBfbmNfZnJlZV9lbnRyeQordm9pZAlfbmNfZnJlZV9lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2ZyZWVfZW50cmllcwordm9pZAlfbmNfZnJlZV9lbnRyaWVzKAorCQlFTlRSWQkqaGVhZHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZGVsaW5rX2VudHJ5CitFTlRSWQkqX25jX2RlbGlua19lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IHJldHVybigqKEVOVFJZICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbGVha3NfdGluZm8KK3ZvaWQJX25jX2xlYWtzX3RpbmZvKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vZmFsbGJhY2suYyAqLworCisjdW5kZWYgX25jX2ZhbGxiYWNrCitjb25zdCBURVJNVFlQRSAqX25jX2ZhbGxiYWNrKAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGNvbnN0IFRFUk1UWVBFICoqKTApOyB9CisKKy8qIC4vdGluZm8vZnJlZV90dHlwZS5jICovCisKKyN1bmRlZiBfbmNfZnJlZV90ZXJtdHlwZQordm9pZAlfbmNfZnJlZV90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKnB0cikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY191c2VyX2RlZmluYWJsZQorTkNVUlNFU19CT09MIF9uY191c2VyX2RlZmluYWJsZTsKKworI3VuZGVmIHVzZV9leHRlbmRlZF9uYW1lcworaW50CXVzZV9leHRlbmRlZF9uYW1lcygKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9nZXRlbnZfbnVtLmMgKi8KKworI3VuZGVmIF9uY19nZXRlbnZfbnVtCitpbnQJX25jX2dldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRlbnZfbnVtCit2b2lkCV9uY19zZXRlbnZfbnVtKAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJaW50CXZhbHVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2hvbWVfdGVybWluZm8uYyAqLworCisjdW5kZWYgX25jX2hvbWVfdGVybWluZm8KK2NoYXIJKl9uY19ob21lX3Rlcm1pbmZvKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2luaXRfa2V5dHJ5LmMgKi8KKworI3VuZGVmIF9uY19pbml0X2tleXRyeQordm9pZAlfbmNfaW5pdF9rZXl0cnkoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vbGliX2Fjcy5jICovCisKKyN1bmRlZiBfbmNfYWNzX21hcAorY2h0eXBlCSpfbmNfYWNzX21hcCh2b2lkKQorCQl7IHJldHVybigqKGNodHlwZSAqKikwKTsgfQorCisjdW5kZWYgX25jX2luaXRfYWNzX3NwCit2b2lkCV9uY19pbml0X2Fjc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19pbml0X2Fjcwordm9pZAlfbmNfaW5pdF9hY3Modm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9saWJfYmF1ZHJhdGUuYyAqLworCitzdHJ1Y3Qgc3BlZWQgeworICAgIHNob3J0IHM7IAorICAgIGludCBzcDsgCit9OworCisjdW5kZWYgX25jX2JhdWRyYXRlCitpbnQJX25jX2JhdWRyYXRlKAorCQlpbnQJT1NwZWVkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfb3NwZWVkCitpbnQJX25jX29zcGVlZCgKKwkJaW50CUJhdWRSYXRlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZV9zcAoraW50CWJhdWRyYXRlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZQoraW50CWJhdWRyYXRlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfY3VyX3Rlcm0uYyAqLworCisjdW5kZWYgX25jX2dldF9jdXJfdGVybV9zcAorVEVSTUlOQUwgKl9uY19nZXRfY3VyX3Rlcm1fc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfY3VyX3Rlcm0KK1RFUk1JTkFMICpfbmNfZ2V0X2N1cl90ZXJtKHZvaWQpCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKworI3VuZGVmIF9uY19jdXJfdGVybQorVEVSTUlOQUwgKl9uY19jdXJfdGVybSh2b2lkKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBzZXRfY3VydGVybV9zcAorVEVSTUlOQUwgKnNldF9jdXJ0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBzZXRfY3VydGVybQorVEVSTUlOQUwgKnNldF9jdXJ0ZXJtKAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKworI3VuZGVmIGRlbF9jdXJ0ZXJtX3NwCitpbnQJZGVsX2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlbF9jdXJ0ZXJtCitpbnQJZGVsX2N1cnRlcm0oCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9kYXRhLmMgKi8KKworI3VuZGVmIF9uY19zdGRzY3IKK1dJTkRPVwkqX25jX3N0ZHNjcih2b2lkKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX2N1cnNjcgorV0lORE9XCSpfbmNfY3Vyc2NyKHZvaWQpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbmV3c2NyCitXSU5ET1cJKl9uY19uZXdzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY19zY3JlZW5fY2hhaW4KK1NDUkVFTgkqX25jX3NjcmVlbl9jaGFpbjsKKyN1bmRlZiBTUAorU0NSRUVOCSpTUDsKKyN1bmRlZiBfbmNfZ2xvYmFscworTkNVUlNFU19HTE9CQUxTIF9uY19nbG9iYWxzOworI3VuZGVmIF9uY19wcmVzY3JlZW4KK05DVVJTRVNfUFJFU0NSRUVOIF9uY19wcmVzY3JlZW47CisKKyN1bmRlZiBfbmNfc2NyZWVuX29mCitTQ1JFRU4JKl9uY19zY3JlZW5fb2YoCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQorCisjdW5kZWYgX25jX2luaXRfcHRocmVhZHMKK3ZvaWQJX25jX2luaXRfcHRocmVhZHModm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tdXRleF9pbml0Cit2b2lkCV9uY19tdXRleF9pbml0KAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tdXRleF9sb2NrCitpbnQJX25jX211dGV4X2xvY2soCisJCXB0aHJlYWRfbXV0ZXhfdCAqb2JqKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfbXV0ZXhfdHJ5bG9jaworaW50CV9uY19tdXRleF90cnlsb2NrKAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX211dGV4X3VubG9jaworaW50CV9uY19tdXRleF91bmxvY2soCisJCXB0aHJlYWRfbXV0ZXhfdCAqb2JqKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2hhc19jYXAuYyAqLworCisjdW5kZWYgaGFzX2ljX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2ljX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWMKK05DVVJTRVNfQk9PTCBoYXNfaWModm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2lsX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2lsX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWwKK05DVVJTRVNfQk9PTCBoYXNfaWwodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9rZXJuZWwuYyAqLworCisjdW5kZWYgZXJhc2VjaGFyX3NwCitjaGFyCWVyYXNlY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGVyYXNlY2hhcgorY2hhcgllcmFzZWNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGtpbGxjaGFyX3NwCitjaGFyCWtpbGxjaGFyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQorCisjdW5kZWYga2lsbGNoYXIKK2NoYXIJa2lsbGNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wX3NwCitpbnQJZmx1c2hpbnBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wCitpbnQJZmx1c2hpbnAodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2xpYl9rZXluYW1lLmMgKi8KKworc3RydWN0IGtuIHsgc2hvcnQgb2Zmc2V0OyBpbnQgY29kZTsgfTsKKworI3VuZGVmIGtleW5hbWVfc3AKK2NvbnN0IGNoYXIgKmtleW5hbWVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXluYW1lCitjb25zdCBjaGFyICprZXluYW1lKAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2xvbmduYW1lLmMgKi8KKworI3VuZGVmIGxvbmduYW1lX3NwCitjaGFyCSpsb25nbmFtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBsb25nbmFtZQorY2hhcgkqbG9uZ25hbWUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX25hcG1zLmMgKi8KKworI3VuZGVmIG5hcG1zX3NwCitpbnQJbmFwbXNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5hcG1zCitpbnQJbmFwbXMoCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9vcHRpb25zLmMgKi8KKworI3VuZGVmIGlkbG9rCitpbnQJaWRsb2soCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGlkY29rCit2b2lkCWlkY29rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgaGFsZmRlbGF5X3NwCitpbnQJaGFsZmRlbGF5X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGhhbGZkZWxheQoraW50CWhhbGZkZWxheSgKKwkJaW50CXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vZGVsYXkKK2ludAlub2RlbGF5KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub3RpbWVvdXQKK2ludAlub3RpbWVvdXQoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHd0aW1lb3V0Cit2b2lkCXd0aW1lb3V0KAorCQlXSU5ET1cJKndpbiwgCisJCWludAlkZWxheSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGtleXBhZAoraW50CWtleXBhZCgKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbWV0YQoraW50CW1ldGEoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGN1cnNfc2V0X3NwCitpbnQJY3Vyc19zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmlzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjdXJzX3NldAoraW50CWN1cnNfc2V0KAorCQlpbnQJdmlzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0eXBlYWhlYWRfc3AKK2ludAl0eXBlYWhlYWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJZmQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHR5cGVhaGVhZAoraW50CXR5cGVhaGVhZCgKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYXNfa2V5X3NwCitpbnQJaGFzX2tleV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYXNfa2V5CitpbnQJaGFzX2tleSgKKwkJaW50CWtleWNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXRwX2ZsdXNoX3NwCitpbnQJX25jX3B1dHBfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19rZXlwYWQKK2ludAlfbmNfa2V5cGFkKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfcmF3LmMgKi8KKworI3VuZGVmIHJhd19zcAoraW50CXJhd19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmF3CitpbnQJcmF3KHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNicmVha19zcAoraW50CWNicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY2JyZWFrCitpbnQJY2JyZWFrKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHFpZmx1c2hfc3AKK3ZvaWQJcWlmbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHFpZmx1c2gKK3ZvaWQJcWlmbHVzaCh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9yYXdfc3AKK2ludAlub3Jhd19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9yYXcKK2ludAlub3Jhdyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2NicmVha19zcAoraW50CW5vY2JyZWFrX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2NicmVhaworaW50CW5vY2JyZWFrKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vcWlmbHVzaF9zcAordm9pZAlub3FpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBub3FpZmx1c2gKK3ZvaWQJbm9xaWZsdXNoKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBpbnRyZmx1c2hfc3AKK2ludAlpbnRyZmx1c2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpbnRyZmx1c2gKK2ludAlpbnRyZmx1c2goCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfc2V0dXAuYyAqLworCisjdW5kZWYgX25jX3R0eXR5cGUKK2NoYXIJKl9uY190dHl0eXBlKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3B0cl9MaW5lcworaW50CSpfbmNfcHRyX0xpbmVzKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKikwKTsgfQorCisjdW5kZWYgX25jX0xJTkVTCitpbnQJX25jX0xJTkVTKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdHJfQ29scworaW50CSpfbmNfcHRyX0NvbHMoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfQ09MUworaW50CV9uY19DT0xTKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdHJfVGFic2l6ZQoraW50CSpfbmNfcHRyX1RhYnNpemUoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfVEFCU0laRQoraW50CV9uY19UQUJTSVpFKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNldF90YWJzaXplX3NwCitpbnQJc2V0X3RhYnNpemVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNldF90YWJzaXplCitpbnQJc2V0X3RhYnNpemUoCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2hhbmRsZV9zaWd3aW5jaAoraW50CV9uY19oYW5kbGVfc2lnd2luY2goCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHVzZV9lbnZfc3AKK3ZvaWQJdXNlX2Vudl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdXNlX3Rpb2N0bF9zcAordm9pZAl1c2VfdGlvY3RsX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfZW52Cit2b2lkCXVzZV9lbnYoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdXNlX3Rpb2N0bAordm9pZAl1c2VfdGlvY3RsKAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfc2NyZWVuc2l6ZQordm9pZAlfbmNfZ2V0X3NjcmVlbnNpemUoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJKmxpbmVwLCAKKwkJaW50CSpjb2xwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3VwZGF0ZV9zY3JlZW5zaXplCit2b2lkCV9uY191cGRhdGVfc2NyZWVuc2l6ZSgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXR1cF90aW5mbworaW50CV9uY19zZXR1cF90aW5mbygKKwkJY29uc3QgY2hhciAqY29uc3QgdG4sIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY190aW5mb19jbWRjaAordm9pZAlfbmNfdGluZm9fY21kY2goCisJCVRFUk1JTkFMICp0ZXJtcCwgCisJCWludAlwcm90bykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfbG9jYWxlCitjaGFyCSpfbmNfZ2V0X2xvY2FsZSh2b2lkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY191bmljb2RlX2xvY2FsZQoraW50CV9uY191bmljb2RlX2xvY2FsZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfbG9jYWxlX2JyZWFrc19hY3MKK2ludAlfbmNfbG9jYWxlX2JyZWFrc19hY3MoCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldHVwdGVybQoraW50CV9uY19zZXR1cHRlcm0oCisJCWNvbnN0IGNoYXIgKnRuYW1lLCAKKwkJaW50CUZpbGVkZXMsIAorCQlpbnQJKmVycnJldCwgCisJCWludAlyZXVzZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbmV3X3ByZXNjcgorU0NSRUVOCSpuZXdfcHJlc2NyKHZvaWQpCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKKyN1bmRlZiBzZXR1cHRlcm0KK2ludAlzZXR1cHRlcm0oCisJCWNvbnN0IGNoYXIgKnRuYW1lLCAKKwkJaW50CUZpbGVkZXMsIAorCQlpbnQJKmVycnJldCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90ZXJtY2FwLmMgKi8KKworI3VuZGVmIFVQCitjaGFyCSpVUDsKKyN1bmRlZiBCQworY2hhcgkqQkM7CisKKyN1bmRlZiB0Z2V0ZW50X3NwCitpbnQJdGdldGVudF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0ZW50CitpbnQJdGdldGVudCgKKwkJY2hhcgkqYnVmcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRmbGFnX3NwCitpbnQJdGdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGdldGZsYWcKK2ludAl0Z2V0ZmxhZygKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRudW1fc3AKK2ludAl0Z2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRudW0KK2ludAl0Z2V0bnVtKAorCQljb25zdCBjaGFyICppZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGdldHN0cl9zcAorY2hhcgkqdGdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGdldHN0cgorY2hhcgkqdGdldHN0cigKKwkJY29uc3QgY2hhciAqaWQsIAorCQljaGFyCSoqYXJlYSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rlcm1uYW1lLmMgKi8KKworI3VuZGVmIHRlcm1uYW1lX3NwCitjaGFyCSp0ZXJtbmFtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0ZXJtbmFtZQorY2hhcgkqdGVybW5hbWUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rnb3RvLmMgKi8KKworI3VuZGVmIHRnb3RvCitjaGFyCSp0Z290bygKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CXgsIAorCQlpbnQJeSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RpLmMgKi8KKworI3VuZGVmIHRpZ2V0ZmxhZ19zcAoraW50CXRpZ2V0ZmxhZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGlnZXRmbGFnCitpbnQJdGlnZXRmbGFnKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0bnVtX3NwCitpbnQJdGlnZXRudW1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0bnVtCitpbnQJdGlnZXRudW0oCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdGlnZXRzdHJfc3AKK2NoYXIJKnRpZ2V0c3RyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpZ2V0c3RyCitjaGFyCSp0aWdldHN0cigKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9saWJfdHBhcm0uYyAqLworCisjdW5kZWYgX25jX3RwYXJtX2VycgoraW50CV9uY190cGFybV9lcnI7CisKKyN1bmRlZiBfbmNfdHBhcm1fYW5hbHl6ZQoraW50CV9uY190cGFybV9hbmFseXplKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQljaGFyCSpwX2lzX3NbOV0sIAorCQlpbnQJKl9uY19wb3Bjb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHBhcm0KK2NoYXIJKnRwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGlwYXJtCitjaGFyCSp0aXBhcm0oCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCS4uLikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RwdXRzLmMgKi8KKworI3VuZGVmIFBDCitjaGFyCVBDOworI3VuZGVmIG9zcGVlZAorc2hvcnQJb3NwZWVkOworI3VuZGVmIF9uY19udWxsc19zZW50CitpbnQJX25jX251bGxzX3NlbnQ7CisKKyN1bmRlZiBfbmNfc2V0X25vX3BhZGRpbmcKK3ZvaWQJX25jX3NldF9ub19wYWRkaW5nKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgZGVsYXlfb3V0cHV0X3NwCitpbnQJZGVsYXlfb3V0cHV0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWxheV9vdXRwdXQKK2ludAlkZWxheV9vdXRwdXQoCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2ZsdXNoX3NwCit2b2lkCV9uY19mbHVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19mbHVzaAordm9pZAlfbmNfZmx1c2godm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19vdXRjaF9zcAoraW50CV9uY19vdXRjaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNoCitpbnQJX25jX291dGNoKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXRjaGFyX3NwCitpbnQJX25jX3B1dGNoYXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXRjaGFyCitpbnQJX25jX3B1dGNoYXIoCisJCWludAljaCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcHV0cF9zcAoraW50CXB1dHBfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHAKK2ludAlwdXRwKAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXRwX3NwCitpbnQJX25jX3B1dHBfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cAoraW50CV9uY19wdXRwKAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0cHV0c19zcAoraW50CXRwdXRzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CWFmZmNudCwgCisJCU5DVVJTRVNfT1VUQ19zcCBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfb3V0Y193cmFwcGVyCitpbnQJX25jX291dGNfd3JhcHBlcigKKwkJU0NSRUVOCSpzcCwgCisJCWludAljKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0cHV0cworaW50CXRwdXRzKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQlpbnQJYWZmY250LCAKKwkJaW50CSgqb3V0YykoCisJCWludAlwMSkpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90cmFjZS9saWJfdHJhY2UuYyAqLworCisjdW5kZWYgX25jX3RyYWNpbmcKK3Vuc2lnbmVkIF9uY190cmFjaW5nOworCisjdW5kZWYgX25jX19uY190cHV0c190cmFjZQorY29uc3QgY2hhciAqX25jX19uY190cHV0c190cmFjZSh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19fbmNfb3V0Y2hhcnMKK2xvbmcJX25jX19uY19vdXRjaGFycyh2b2lkKQorCQl7IHJldHVybigqKGxvbmcgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90cHV0c190cmFjZQordm9pZAlfbmNfc2V0X3RwdXRzX3RyYWNlKAorCQljb25zdCBjaGFyICpzKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2NvdW50X291dGNoYXJzCit2b2lkCV9uY19jb3VudF9vdXRjaGFycygKKwkJbG9uZwlpbmNyZW1lbnQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB0cmFjZQordm9pZAl0cmFjZSgKKwkJY29uc3QgdW5zaWduZWQgaW50IHRyYWNlbGV2ZWwpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfdHJhY2VmCit2b2lkCV90cmFjZWYoCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2Jvb2wKK05DVVJTRVNfQk9PTCBfbmNfcmV0cmFjZV9ib29sKAorCQlpbnQJY29kZSkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY2hhcgorY2hhcglfbmNfcmV0cmFjZV9jaGFyKAorCQlpbnQJY29kZSkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2ludAoraW50CV9uY19yZXRyYWNlX2ludCgKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3Vuc2lnbmVkCit1bnNpZ25lZCBfbmNfcmV0cmFjZV91bnNpZ25lZCgKKwkJdW5zaWduZWQgY29kZSkKKwkJeyByZXR1cm4oKih1bnNpZ25lZCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9wdHIKK2NoYXIJKl9uY19yZXRyYWNlX3B0cigKKwkJY2hhcgkqY29kZSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9jcHRyCitjb25zdCBjaGFyICpfbmNfcmV0cmFjZV9jcHRyKAorCQljb25zdCBjaGFyICpjb2RlKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2N2b2lkX3B0cgorY29uc3Qgdm9pZCAqX25jX3JldHJhY2VfY3ZvaWRfcHRyKAorCQljb25zdCB2b2lkICpjb2RlKQorCQl7IHJldHVybigqKGNvbnN0IHZvaWQgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3ZvaWRfcHRyCit2b2lkCSpfbmNfcmV0cmFjZV92b2lkX3B0cigKKwkJdm9pZAkqY29kZSkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9zcAorU0NSRUVOCSpfbmNfcmV0cmFjZV9zcCgKKwkJU0NSRUVOCSpjb2RlKQorCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2Vfd2luCitXSU5ET1cJKl9uY19yZXRyYWNlX3dpbigKKwkJV0lORE9XCSpjb2RlKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX3VzZV90cmFjZWYKK2ludAlfbmNfdXNlX3RyYWNlZigKKwkJdW5zaWduZWQgbWFzaykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2xvY2tlZF90cmFjZWYKK3ZvaWQJX25jX2xvY2tlZF90cmFjZWYoCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90cmFjZS9saWJfdHJhY2VhdHIuYyAqLworCisjdW5kZWYgX3RyYWNlYXR0cjIKK2NoYXIJKl90cmFjZWF0dHIyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlYXR0cgorY2hhcgkqX3RyYWNlYXR0cigKKwkJYXR0cl90CW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfaW50X2F0dHJfdAoraW50CV9uY19yZXRyYWNlX2ludF9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9hdHRyX3QKK2F0dHJfdAlfbmNfcmV0cmFjZV9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKKyN1bmRlZiBfbmNfYWx0Y2hhcnNldF9uYW1lCitjb25zdCBjaGFyICpfbmNfYWx0Y2hhcnNldF9uYW1lKAorCQlhdHRyX3QJYXR0ciwgCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfdHJhY2VjaHR5cGUyCitjaGFyCSpfdHJhY2VjaHR5cGUyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNodHlwZQorY2hhcgkqX3RyYWNlY2h0eXBlKAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY2h0eXBlCitjaHR5cGUJX25jX3JldHJhY2VfY2h0eXBlKAorCQljaHR5cGUJY29kZSkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2NoYXJfdDIKK2NoYXIJKl90cmFjZWNjaGFyX3QyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2NoYXJfdCAqY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2NoYXJfdAorY2hhcgkqX3RyYWNlY2NoYXJfdCgKKwkJY29uc3QgY2NoYXJfdCAqY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWJpdHMuYyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgaW50IHZhbDsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07Cit9IEJJVE5BTUVTOworCisjdW5kZWYgX25jX3RyYWNlX3R0eW1vZGUKK2NoYXIJKl9uY190cmFjZV90dHltb2RlKAorCQlzdHJ1Y3QgdGVybWlvcyAqdHR5KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY190cmFjZWJpdHMKK2NoYXIJKl9uY190cmFjZWJpdHModm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlY2hyLmMgKi8KKworI3VuZGVmIF9uY190cmFjZWNoYXIKK2NoYXIJKl9uY190cmFjZWNoYXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2hhcgorY2hhcgkqX3RyYWNlY2hhcigKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9saWJfdHR5ZmxhZ3MuYyAqLworCisjdW5kZWYgX25jX2dldF90dHlfbW9kZV9zcAoraW50CV9uY19nZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X3R0eV9tb2RlCitpbnQJX25jX2dldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90dHlfbW9kZV9zcAoraW50CV9uY19zZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0X3R0eV9tb2RlCitpbnQJX25jX3NldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGVfc3AKK2ludAlkZWZfc2hlbGxfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGUKK2ludAlkZWZfc2hlbGxfbW9kZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWZfcHJvZ19tb2RlX3NwCitpbnQJZGVmX3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3Byb2dfbW9kZQoraW50CWRlZl9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlX3NwCitpbnQJcmVzZXRfcHJvZ19tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldF9wcm9nX21vZGUKK2ludAlyZXNldF9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfc2hlbGxfbW9kZV9zcAoraW50CXJlc2V0X3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3NoZWxsX21vZGUKK2ludAlyZXNldF9zaGVsbF9tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNhdmV0dHlfc3AKK2ludAlzYXZldHR5X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzYXZldHR5CitpbnQJc2F2ZXR0eSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldHR5X3NwCitpbnQJcmVzZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXR0eQoraW50CXJlc2V0dHkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3R0eS9saWJfdHdhaXQuYyAqLworCisjdW5kZWYgX25jX3RpbWVkX3dhaXQKK2ludAlfbmNfdGltZWRfd2FpdCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltb2RlLCAKKwkJaW50CW1pbGxpc2Vjb25kcywgCisJCWludAkqdGltZWxlZnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9uYW1lX21hdGNoLmMgKi8KKworI3VuZGVmIF9uY19maXJzdF9uYW1lCitjaGFyCSpfbmNfZmlyc3RfbmFtZSgKKwkJY29uc3QgY2hhciAqY29uc3Qgc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX25hbWVfbWF0Y2gKK2ludAlfbmNfbmFtZV9tYXRjaCgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZWxzdCwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIAorCQljb25zdCBjaGFyICpjb25zdCBkZWxpbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL25hbWVzLmMgKi8KKworI3VuZGVmIF9uY19ib29sbmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfYm9vbG5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2Jvb2xmbmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfYm9vbGZuYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19udW1uYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19udW1uYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19udW1mbmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfbnVtZm5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3N0cm5hbWVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX3N0cm5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3N0cmZuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJmbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vb2Jzb2xldGUuYyAqLworCisjdW5kZWYgX25jX3NldF9idWZmZXJfc3AKK3ZvaWQJX25jX3NldF9idWZmZXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcgordm9pZAlfbmNfc2V0X2J1ZmZlcigKKwkJRklMRQkqb2ZwLCAKKwkJaW50CWJ1ZmZlcmVkKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL3JlYWRfZW50cnkuYyAqLworCisjdW5kZWYgX25jX2luaXRfdGVybXR5cGUKK3ZvaWQJX25jX2luaXRfdGVybXR5cGUoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19yZWFkX3Rlcm10eXBlCitpbnQJX25jX3JlYWRfdGVybXR5cGUoCisJCVRFUk1UWVBFICpwdHIsIAorCQljaGFyCSpidWZmZXIsIAorCQlpbnQJbGltaXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZWFkX2ZpbGVfZW50cnkKK2ludAlfbmNfcmVhZF9maWxlX2VudHJ5KAorCQljb25zdCBjaGFyICpjb25zdCBmaWxlbmFtZSwgCisJCVRFUk1UWVBFICpwdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZWFkX2VudHJ5CitpbnQJX25jX3JlYWRfZW50cnkoCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIAorCQljaGFyCSpjb25zdCBmaWxlbmFtZSwgCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL3JlYWRfdGVybWNhcC5jICovCisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9zdHJpbmdzLmMgKi8KKworI3VuZGVmIF9uY19zdHJfaW5pdAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfaW5pdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNoYXIJKnNyYywgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfbnVsbAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfbnVsbCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfY29weQorc3RyaW5nX2Rlc2MgKl9uY19zdHJfY29weSgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXN0cmluZ19kZXNjICpzcmMpCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYWZlX3N0cmNhdAorTkNVUlNFU19CT09MIF9uY19zYWZlX3N0cmNhdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNvbnN0IGNoYXIgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3NhZmVfc3RyY3B5CitOQ1VSU0VTX0JPT0wgX25jX3NhZmVfc3RyY3B5KAorCQlzdHJpbmdfZGVzYyAqZHN0LCAKKwkJY29uc3QgY2hhciAqc3JjKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vdHJhY2UvdHJhY2VfYnVmLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV9idWYKK2NoYXIJKl9uY190cmFjZV9idWYoCisJCWludAlidWZudW0sIAorCQlzaXplX3QJd2FudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2VfYnVmY2F0CitjaGFyCSpfbmNfdHJhY2VfYnVmY2F0KAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV90cmllcwordm9pZAlfbmNfdHJhY2VfdHJpZXMoCisJCVRSSUVTCSp0cmVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvdHJpZXMuYyAqLworCisjdW5kZWYgX25jX2V4cGFuZF90cnkKK2NoYXIJKl9uY19leHBhbmRfdHJ5KAorCQlUUklFUwkqdHJlZSwgCisJCXVuc2lnbmVkIGNvZGUsIAorCQlpbnQJKmNvdW50LCAKKwkJc2l6ZV90CWxlbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX2tleQoraW50CV9uY19yZW1vdmVfa2V5KAorCQlUUklFUwkqKnRyZWUsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX3N0cmluZworaW50CV9uY19yZW1vdmVfc3RyaW5nKAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby90cmltX3NncjAuYyAqLworCisjdW5kZWYgX25jX3RyaW1fc2dyMAorY2hhcgkqX25jX3RyaW1fc2dyMCgKKwkJVEVSTVRZUEUgKnRwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi91bmN0cmwuYyAqLworCisjdW5kZWYgdW5jdHJsX3NwCitjb25zdCBjaGFyICp1bmN0cmxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgdW5jdHJsCitjb25zdCBjaGFyICp1bmN0cmwoCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KKworI3VuZGVmIF9uY192aXNidWYyCitjb25zdCBjaGFyICpfbmNfdmlzYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNoYXIgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzYnVmCitjb25zdCBjaGFyICpfbmNfdmlzYnVmKAorCQljb25zdCBjaGFyICpidWYpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2J1Zm4KK2NvbnN0IGNoYXIgKl9uY192aXNidWZuKAorCQljb25zdCBjaGFyICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmMgorY29uc3QgY2hhciAqX25jX3Zpc3didWYyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmCitjb25zdCBjaGFyICpfbmNfdmlzd2J1ZigKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmbgorY29uc3QgY2hhciAqX25jX3Zpc3didWZuKAorCQljb25zdCB3Y2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3aWJ1ZgorY29uc3QgY2hhciAqX25jX3Zpc3dpYnVmKAorCQljb25zdCB3aW50X3QgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzY2J1ZjIKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNjaGFyX3QgKmJ1ZiwgCisJCWludAlsZW4pCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2NidWYKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmKAorCQljb25zdCBjY2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9hbGxvY19lbnRyeS5jICovCisKKyN1bmRlZiBfbmNfaW5pdF9lbnRyeQordm9pZAlfbmNfaW5pdF9lbnRyeSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2NvcHlfZW50cnkKK0VOVFJZCSpfbmNfY29weV9lbnRyeSgKKwkJRU5UUlkJKm9sZHApCisJCXsgcmV0dXJuKCooRU5UUlkgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYXZlX3N0cgorY2hhcgkqX25jX3NhdmVfc3RyKAorCQljb25zdCBjaGFyICpjb25zdCBzdHJpbmcpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3dyYXBfZW50cnkKK3ZvaWQJX25jX3dyYXBfZW50cnkoCisJCUVOVFJZCSpjb25zdCBlcCwgCisJCU5DVVJTRVNfQk9PTCBjb3B5X3N0cmluZ3MpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbWVyZ2VfZW50cnkKK3ZvaWQJX25jX21lcmdlX2VudHJ5KAorCQlURVJNVFlQRSAqY29uc3QgdG8sIAorCQlURVJNVFlQRSAqY29uc3QgZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9jYXB0b2luZm8uYyAqLworCisjdW5kZWYgX25jX2NhcHRvaW5mbworY2hhcgkqX25jX2NhcHRvaW5mbygKKwkJY29uc3QgY2hhciAqY2FwLCAKKwkJY29uc3QgY2hhciAqcywgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pbmZvdG9jYXAKK2NoYXIJKl9uY19pbmZvdG9jYXAoCisJCWNvbnN0IGNoYXIgKmNhcCwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX2V4cGFuZC5jICovCisKKyN1bmRlZiBfbmNfdGljX2V4cGFuZAorY2hhcgkqX25jX3RpY19leHBhbmQoCisJCWNvbnN0IGNoYXIgKnNyY3AsIAorCQlOQ1VSU0VTX0JPT0wgdGljX2Zvcm1hdCwgCisJCWludAludW1iZXJzKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX3BhcnNlLmMgKi8KKworI3VuZGVmIF9uY19jaGVja190ZXJtdHlwZTIKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSgKKwkJVEVSTVRZUEUgKnAxLCAKKwkJTkNVUlNFU19CT09MIHAyKTsKKyN1bmRlZiBfbmNfY2hlY2tfdGVybXR5cGUKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUpKAorCQlURVJNVFlQRSAqcDEpOworCisjdW5kZWYgX25jX2VudHJ5X21hdGNoCitOQ1VSU0VTX0JPT0wgX25jX2VudHJ5X21hdGNoKAorCQljaGFyCSpuMSwgCisJCWNoYXIJKm4yKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeV9zb3VyY2UKK3ZvaWQJX25jX3JlYWRfZW50cnlfc291cmNlKAorCQlGSUxFCSpmcCwgCisJCWNoYXIJKmJ1ZiwgCisJCWludAlsaXRlcmFsLCAKKwkJTkNVUlNFU19CT09MIHNpbGVudCwgCisJCU5DVVJTRVNfQk9PTCAoKmhvb2spKAorCQlFTlRSWQkqcDEpKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3Jlc29sdmVfdXNlczIKK2ludAlfbmNfcmVzb2x2ZV91c2VzMigKKwkJTkNVUlNFU19CT09MIGZ1bGxyZXNvbHZlLCAKKwkJTkNVUlNFU19CT09MIGxpdGVyYWwpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZXNvbHZlX3VzZXMKK2ludAlfbmNfcmVzb2x2ZV91c2VzKAorCQlOQ1VSU0VTX0JPT0wgZnVsbHJlc29sdmUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9jb21wX3NjYW4uYyAqLworCisjdW5kZWYgX25jX3N5bnRheAoraW50CV9uY19zeW50YXg7CisjdW5kZWYgX25jX3N0cmljdF9ic2QKK2ludAlfbmNfc3RyaWN0X2JzZDsKKyN1bmRlZiBfbmNfY3Vycl9maWxlX3BvcworbG9uZwlfbmNfY3Vycl9maWxlX3BvczsKKyN1bmRlZiBfbmNfY29tbWVudF9zdGFydAorbG9uZwlfbmNfY29tbWVudF9zdGFydDsKKyN1bmRlZiBfbmNfY29tbWVudF9lbmQKK2xvbmcJX25jX2NvbW1lbnRfZW5kOworI3VuZGVmIF9uY19zdGFydF9saW5lCitsb25nCV9uY19zdGFydF9saW5lOworI3VuZGVmIF9uY19jdXJyX3Rva2VuCitzdHJ1Y3QgdG9rZW4gX25jX2N1cnJfdG9rZW47CisjdW5kZWYgX25jX2Rpc2FibGVfcGVyaW9kCitOQ1VSU0VTX0JPT0wgX25jX2Rpc2FibGVfcGVyaW9kOworCisjdW5kZWYgX25jX3Jlc2V0X2lucHV0Cit2b2lkCV9uY19yZXNldF9pbnB1dCgKKwkJRklMRQkqZnAsIAorCQljaGFyCSpidWYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZ2V0X3Rva2VuCitpbnQJX25jX2dldF90b2tlbigKKwkJTkNVUlNFU19CT09MIHNpbGVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RyYW5zX3N0cmluZworaW50CV9uY190cmFuc19zdHJpbmcoCisJCWNoYXIJKnB0ciwgCisJCWNoYXIJKmxhc3QpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXNoX3Rva2VuCit2b2lkCV9uY19wdXNoX3Rva2VuKAorCQlpbnQJdG9rY2xhc3MpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcGFuaWNfbW9kZQordm9pZAlfbmNfcGFuaWNfbW9kZSgKKwkJY2hhcgljaCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9wYXJzZV9lbnRyeS5jICovCisKKyN1bmRlZiBfbmNfcGFyc2VfZW50cnkKK2ludAlfbmNfcGFyc2VfZW50cnkoCisJCXN0cnVjdCBlbnRyeSAqZW50cnlwLCAKKwkJaW50CWxpdGVyYWwsIAorCQlOQ1VSU0VTX0JPT0wgc2lsZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfY2FwY21wCitpbnQJX25jX2NhcGNtcCgKKwkJY29uc3QgY2hhciAqcywgCisJCWNvbnN0IGNoYXIgKnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgZnJvbVszXTsKKyAgICBjb25zdCBjaGFyIHRvWzZdOworfSBhc3NvYzsKKworLyogLi90aW5mby93cml0ZV9lbnRyeS5jICovCisKKyN1bmRlZiBfbmNfc2V0X3dyaXRlZGlyCit2b2lkCV9uY19zZXRfd3JpdGVkaXIoCisJCWNvbnN0IGNoYXIgKmRpcikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY193cml0ZV9lbnRyeQordm9pZAlfbmNfd3JpdGVfZW50cnkoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY190aWNfd3JpdHRlbgoraW50CV9uY190aWNfd3JpdHRlbih2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9kZWZpbmVfa2V5LmMgKi8KKworI3VuZGVmIGRlZmluZV9rZXlfc3AKK2ludAlkZWZpbmVfa2V5X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyLCAKKwkJaW50CWtleWNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZmluZV9rZXkKK2ludAlkZWZpbmVfa2V5KAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2hhc2hlZF9kYi5jICovCisKKyN1bmRlZiBfbmNfaGFzaGVkX2RiCit2b2lkCV9uY19oYXNoZWRfZGIodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9iYXNlL2tleV9kZWZpbmVkLmMgKi8KKworI3VuZGVmIGtleV9kZWZpbmVkX3NwCitpbnQJa2V5X2RlZmluZWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGtleV9kZWZpbmVkCitpbnQJa2V5X2RlZmluZWQoCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2Uva2V5Ym91bmQuYyAqLworCisjdW5kZWYga2V5Ym91bmRfc3AKK2NoYXIJKmtleWJvdW5kX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvZGUsIAorCQlpbnQJY291bnQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYga2V5Ym91bmQKK2NoYXIJKmtleWJvdW5kKAorCQlpbnQJY29kZSwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vYmFzZS9rZXlvay5jICovCisKKyN1bmRlZiBrZXlva19zcAoraW50CWtleW9rX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMsIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYga2V5b2sKK2ludAlrZXlvaygKKwkJaW50CWMsIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2Jhc2UvdmVyc2lvbi5jICovCisKKyN1bmRlZiBjdXJzZXNfdmVyc2lvbgorY29uc3QgY2hhciAqY3Vyc2VzX3ZlcnNpb24odm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2xsaWItbG5jdXJzZXN3IGIvbmN1cnNlcy9sbGliLWxuY3Vyc2VzdwppbmRleCA5NmU3MjU3Li4yMTdhZTFiIDEwMDY0NAotLS0gYS9uY3Vyc2VzL2xsaWItbG5jdXJzZXN3CisrKyBiL25jdXJzZXMvbGxpYi1sbmN1cnNlc3cKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNyw3ICsyNyw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMjAwMS0yMDA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDIwMDEtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBMSU5UTElCUkFSWSAqLwogCkBAIC0zOCwyNyArMzgsNTQgQEAKICN1bmRlZiBfbmNfb2xkbnVtcwogaW50CSpfbmNfb2xkbnVtczsKIAorI3VuZGVmIF9uY19zY3JvbGxfb3B0aW1pemVfc3AKK3ZvaWQJX25jX3Njcm9sbF9vcHRpbWl6ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JvbGxfb3B0aW1pemUKIHZvaWQJX25jX3Njcm9sbF9vcHRpbWl6ZSh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX2xpbmVkdW1wX3NwCit2b2lkCV9uY19saW5lZHVtcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19saW5lZHVtcAogdm9pZAlfbmNfbGluZWR1bXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90dHkvaGFzaG1hcC5jICovCiAKLSNpbmNsdWRlIDx0ZXJtLmg+CisjdW5kZWYgX25jX2hhc2hfbWFwX3NwCit2b2lkCV9uY19oYXNoX21hcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIF9uY19oYXNoX21hcAogdm9pZAlfbmNfaGFzaF9tYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19tYWtlX29sZGhhc2hfc3AKK3ZvaWQJX25jX21ha2Vfb2xkaGFzaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlpKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX21ha2Vfb2xkaGFzaAogdm9pZAlfbmNfbWFrZV9vbGRoYXNoKAogCQlpbnQJaSkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zY3JvbGxfb2xkaGFzaF9zcAordm9pZAlfbmNfc2Nyb2xsX29sZGhhc2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbiwgCisJCWludAl0b3AsIAorCQlpbnQJYm90KQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX3Njcm9sbF9vbGRoYXNoCiB2b2lkCV9uY19zY3JvbGxfb2xkaGFzaCgKIAkJaW50CW4sIApAQCAtNjgsOCArOTUsNiBAQAogCiAvKiAuL2Jhc2UvbGliX2FkZGNoLmMgKi8KIAotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KICN1bmRlZiBfbmNfcmVuZGVyCiBjY2hhcl90CV9uY19yZW5kZXIoCiAJCVdJTkRPVwkqd2luLCAKQEAgLTEzNyw2ICsxNjIsMTEgQEAKIAogLyogLi9iYXNlL2xpYl9iZWVwLmMgKi8KIAorI3VuZGVmIGJlZXBfc3AKK2ludAliZWVwX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBiZWVwCiBpbnQJYmVlcCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0yMjQsMjEgKzI1NCwzNyBAQAogCiAvKiAuL2Jhc2UvbGliX2NvbG9yLmMgKi8KIAotI2luY2x1ZGUgPHRpYy5oPgotCiAjdW5kZWYgQ09MT1JfUEFJUlMKIGludAlDT0xPUl9QQUlSUzsKICN1bmRlZiBDT0xPUlMKIGludAlDT0xPUlM7CiAKKyN1bmRlZiBfbmNfcmVzZXRfY29sb3JzX3NwCitOQ1VSU0VTX0JPT0wgX25jX3Jlc2V0X2NvbG9yc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgX25jX3Jlc2V0X2NvbG9ycwogTkNVUlNFU19CT09MIF9uY19yZXNldF9jb2xvcnModm9pZCkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgc3RhcnRfY29sb3Jfc3AKK2ludAlzdGFydF9jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc3RhcnRfY29sb3IKIGludAlzdGFydF9jb2xvcih2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBpbml0X3BhaXJfc3AKK2ludAlpbml0X3BhaXJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAlwYWlyLCAKKwkJc2hvcnQJZiwgCisJCXNob3J0CWIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGluaXRfcGFpcgogaW50CWluaXRfcGFpcigKIAkJc2hvcnQJcGFpciwgCkBAIC0yNDYsNiArMjkyLDE1IEBACiAJCXNob3J0CWIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGluaXRfY29sb3Jfc3AKK2ludAlpbml0X2NvbG9yX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJY29sb3IsIAorCQlzaG9ydAlyLCAKKwkJc2hvcnQJZywgCisJCXNob3J0CWIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGluaXRfY29sb3IKIGludAlpbml0X2NvbG9yKAogCQlzaG9ydAljb2xvciwgCkBAIC0yNTQsMTQgKzMwOSwzMyBAQAogCQlzaG9ydAliKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBjYW5fY2hhbmdlX2NvbG9yX3NwCitOQ1VSU0VTX0JPT0wgY2FuX2NoYW5nZV9jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgY2FuX2NoYW5nZV9jb2xvcgogTkNVUlNFU19CT09MIGNhbl9jaGFuZ2VfY29sb3Iodm9pZCkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgaGFzX2NvbG9yc19zcAorTkNVUlNFU19CT09MIGhhc19jb2xvcnNfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGhhc19jb2xvcnMKIE5DVVJTRVNfQk9PTCBoYXNfY29sb3JzKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIGNvbG9yX2NvbnRlbnRfc3AKK2ludAljb2xvcl9jb250ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc2hvcnQJY29sb3IsIAorCQlzaG9ydAkqciwgCisJCXNob3J0CSpnLCAKKwkJc2hvcnQJKmIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGNvbG9yX2NvbnRlbnQKIGludAljb2xvcl9jb250ZW50KAogCQlzaG9ydAljb2xvciwgCkBAIC0yNzAsNiArMzQ0LDE0IEBACiAJCXNob3J0CSpiKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBwYWlyX2NvbnRlbnRfc3AKK2ludAlwYWlyX2NvbnRlbnRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzaG9ydAlwYWlyLCAKKwkJc2hvcnQJKmYsIAorCQlzaG9ydAkqYikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcGFpcl9jb250ZW50CiBpbnQJcGFpcl9jb250ZW50KAogCQlzaG9ydAlwYWlyLCAKQEAgLTI3NywxMyArMzU5LDIxIEBACiAJCXNob3J0CSpiKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfZG9fY29sb3Jfc3AKK3ZvaWQJX25jX2RvX2NvbG9yX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW9sZF9wYWlyLCAKKwkJaW50CXBhaXIsIAorCQlpbnQJcmV2ZXJzZSwgCisJCU5DVVJTRVNfT1VUQ19zcCBvdXRjKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2RvX2NvbG9yCiB2b2lkCV9uY19kb19jb2xvcigKLQkJc2hvcnQJb2xkX3BhaXIsIAotCQlzaG9ydAlwYWlyLCAKLQkJTkNVUlNFU19CT09MIHJldmVyc2UsIAotCQlpbnQJKCpvdXRjKSgKLQkJaW50CXAxKSkKKwkJaW50CW9sZF9wYWlyLCAKKwkJaW50CXBhaXIsIAorCQlpbnQJcmV2ZXJzZSwgCisJCU5DVVJTRVNfT1VUQyBvdXRjKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2Jhc2UvbGliX2NvbG9yc2V0LmMgKi8KQEAgLTMxMSwxNiArNDAxLDMxIEBACiAKIC8qIC4vYmFzZS9saWJfZWNoby5jICovCiAKKyN1bmRlZiBlY2hvX3NwCitpbnQJZWNob19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZWNobwogaW50CWVjaG8odm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbm9lY2hvX3NwCitpbnQJbm9lY2hvX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBub2VjaG8KIGludAlub2VjaG8odm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX2VuZHdpbi5jICovCiAKKyN1bmRlZiBlbmR3aW5fc3AKK2ludAllbmR3aW5fc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGVuZHdpbgogaW50CWVuZHdpbih2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0zMzQsNiArNDM5LDExIEBACiAKIC8qIC4vYmFzZS9saWJfZmxhc2guYyAqLwogCisjdW5kZWYgZmxhc2hfc3AKK2ludAlmbGFzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZmxhc2gKIGludAlmbGFzaCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0zNDEsODUgKzQ1MSw4NSBAQAogLyogLi9saWJfZ2VuLmMgKi8KIAogI3VuZGVmIGFkZGNoCi1pbnQJYWRkY2goCitpbnQJKGFkZGNoKSgKIAkJY29uc3QgY2h0eXBlIHopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZGNobnN0cgotaW50CWFkZGNobnN0cigKK2ludAkoYWRkY2huc3RyKSgKIAkJY29uc3QgY2h0eXBlICphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRjaHN0cgotaW50CWFkZGNoc3RyKAoraW50CShhZGRjaHN0cikoCiAJCWNvbnN0IGNodHlwZSAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYWRkbnN0cgotaW50CWFkZG5zdHIoCitpbnQJKGFkZG5zdHIpKAogCQljb25zdCBjaGFyICphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRzdHIKLWludAlhZGRzdHIoCitpbnQJKGFkZHN0cikoCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJvZmYKLWludAlhdHRyb2ZmKAoraW50CShhdHRyb2ZmKSgKIAkJTkNVUlNFU19BVFRSX1QJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cm9uCi1pbnQJYXR0cm9uKAoraW50CShhdHRyb24pKAogCQlOQ1VSU0VTX0FUVFJfVAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyc2V0Ci1pbnQJYXR0cnNldCgKK2ludAkoYXR0cnNldCkoCiAJCU5DVVJTRVNfQVRUUl9UCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJfZ2V0Ci1pbnQJYXR0cl9nZXQoCitpbnQJKGF0dHJfZ2V0KSgKIAkJYXR0cl90CSphMSwgCiAJCXNob3J0CSphMiwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGF0dHJfb2ZmCi1pbnQJYXR0cl9vZmYoCitpbnQJKGF0dHJfb2ZmKSgKIAkJYXR0cl90CWExLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYXR0cl9vbgotaW50CWF0dHJfb24oCitpbnQJKGF0dHJfb24pKAogCQlhdHRyX3QJYTEsIAogCQl2b2lkCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhdHRyX3NldAotaW50CWF0dHJfc2V0KAoraW50CShhdHRyX3NldCkoCiAJCWF0dHJfdAlhMSwgCiAJCXNob3J0CWEyLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYmtnZAotaW50CWJrZ2QoCitpbnQJKGJrZ2QpKAogCQljaHR5cGUJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYmtnZHNldAotdm9pZAlia2dkc2V0KAordm9pZAkoYmtnZHNldCkoCiAJCWNodHlwZQl6KQogCQl7IC8qIHZvaWQgKi8gfQogCiAjdW5kZWYgYm9yZGVyCi1pbnQJYm9yZGVyKAoraW50CShib3JkZXIpKAogCQljaHR5cGUJYTEsIAogCQljaHR5cGUJYTIsIAogCQljaHR5cGUJYTMsIApAQCAtNDMxLDE0ICs1NDEsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYm94Ci1pbnQJYm94KAoraW50CShib3gpKAogCQlXSU5ET1cJKmExLCAKIAkJY2h0eXBlCWEyLCAKIAkJY2h0eXBlCXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGNoZ2F0Ci1pbnQJY2hnYXQoCitpbnQJKGNoZ2F0KSgKIAkJaW50CWExLCAKIAkJYXR0cl90CWEyLCAKIAkJc2hvcnQJYTMsIApAQCAtNDQ2LDEzNyArNTU2LDEzNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBjbGVhcgotaW50CWNsZWFyKHZvaWQpCitpbnQJKGNsZWFyKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBjbHJ0b2JvdAotaW50CWNscnRvYm90KHZvaWQpCitpbnQJKGNscnRvYm90KSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBjbHJ0b2VvbAotaW50CWNscnRvZW9sKHZvaWQpCitpbnQJKGNscnRvZW9sKSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBjb2xvcl9zZXQKLWludAljb2xvcl9zZXQoCitpbnQJKGNvbG9yX3NldCkoCiAJCXNob3J0CWExLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgQ09MT1JfUEFJUgotaW50CUNPTE9SX1BBSVIoCitpbnQJKENPTE9SX1BBSVIpKAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZGVsY2gKLWludAlkZWxjaCh2b2lkKQoraW50CShkZWxjaCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZGVsZXRlbG4KLWludAlkZWxldGVsbih2b2lkKQoraW50CShkZWxldGVsbikodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZWNob2NoYXIKLWludAllY2hvY2hhcigKK2ludAkoZWNob2NoYXIpKAogCQljb25zdCBjaHR5cGUgeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZXJhc2UKLWludAllcmFzZSh2b2lkKQoraW50CShlcmFzZSkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0YmtnZAotY2h0eXBlCWdldGJrZ2QoCitjaHR5cGUJKGdldGJrZ2QpKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KIAogI3VuZGVmIGdldGNoCi1pbnQJZ2V0Y2godm9pZCkKK2ludAkoZ2V0Y2gpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldG5zdHIKLWludAlnZXRuc3RyKAoraW50CShnZXRuc3RyKSgKIAkJY2hhcgkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0c3RyCi1pbnQJZ2V0c3RyKAoraW50CShnZXRzdHIpKAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBobGluZQotaW50CWhsaW5lKAoraW50CShobGluZSkoCiAJCWNodHlwZQlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbmNoCi1jaHR5cGUJaW5jaCh2b2lkKQorY2h0eXBlCShpbmNoKSh2b2lkKQogCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CiAKICN1bmRlZiBpbmNobnN0cgotaW50CWluY2huc3RyKAoraW50CShpbmNobnN0cikoCiAJCWNodHlwZQkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5jaHN0cgotaW50CWluY2hzdHIoCitpbnQJKGluY2hzdHIpKAogCQljaHR5cGUJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGlubnN0cgotaW50CWlubnN0cigKK2ludAkoaW5uc3RyKSgKIAkJY2hhcgkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zY2gKLWludAlpbnNjaCgKK2ludAkoaW5zY2gpKAogCQljaHR5cGUJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zZGVsbG4KLWludAlpbnNkZWxsbigKK2ludAkoaW5zZGVsbG4pKAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zZXJ0bG4KLWludAlpbnNlcnRsbih2b2lkKQoraW50CShpbnNlcnRsbikodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zbnN0cgotaW50CWluc25zdHIoCitpbnQJKGluc25zdHIpKAogCQljb25zdCBjaGFyICphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNzdHIKLWludAlpbnNzdHIoCitpbnQJKGluc3N0cikoCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc3RyCi1pbnQJaW5zdHIoCitpbnQJKGluc3RyKSgKIAkJY2hhcgkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbW92ZQotaW50CW1vdmUoCitpbnQJKG1vdmUpKAogCQlpbnQJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRjaAotaW50CW12YWRkY2goCitpbnQJKG12YWRkY2gpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaHR5cGUgeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRjaG5zdHIKLWludAltdmFkZGNobnN0cigKK2ludAkobXZhZGRjaG5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjaHR5cGUgKmEzLCAKQEAgLTU4NCwxNCArNjk0LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12YWRkY2hzdHIKLWludAltdmFkZGNoc3RyKAoraW50CShtdmFkZGNoc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2h0eXBlICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZG5zdHIKLWludAltdmFkZG5zdHIoCitpbnQJKG12YWRkbnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNoYXIgKmEzLCAKQEAgLTU5OSwxNCArNzA5LDE0IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12YWRkc3RyCi1pbnQJbXZhZGRzdHIoCitpbnQJKG12YWRkc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZjaGdhdAotaW50CW12Y2hnYXQoCitpbnQJKG12Y2hnYXQpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNjE2LDE5ICs3MjYsMTkgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZkZWxjaAotaW50CW12ZGVsY2goCitpbnQJKG12ZGVsY2gpKAogCQlpbnQJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZnZXRjaAotaW50CW12Z2V0Y2goCitpbnQJKG12Z2V0Y2gpKAogCQlpbnQJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZnZXRuc3RyCi1pbnQJbXZnZXRuc3RyKAoraW50CShtdmdldG5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaGFyCSphMywgCkBAIC02MzYsMTQgKzc0NiwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmdldHN0cgotaW50CW12Z2V0c3RyKAoraW50CShtdmdldHN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aGxpbmUKLWludAltdmhsaW5lKAoraW50CShtdmhsaW5lKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2h0eXBlCWEzLCAKQEAgLTY1MSwxMyArNzYxLDEzIEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5jaAotY2h0eXBlCW12aW5jaCgKK2NodHlwZQkobXZpbmNoKSgKIAkJaW50CWExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KIAogI3VuZGVmIG12aW5jaG5zdHIKLWludAltdmluY2huc3RyKAoraW50CShtdmluY2huc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY2h0eXBlCSphMywgCkBAIC02NjUsMTQgKzc3NSwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluY2hzdHIKLWludAltdmluY2hzdHIoCitpbnQJKG12aW5jaHN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNodHlwZQkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbm5zdHIKLWludAltdmlubnN0cigKK2ludAkobXZpbm5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaGFyCSphMywgCkBAIC02ODAsMTQgKzc5MCwxNCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluc2NoCi1pbnQJbXZpbnNjaCgKK2ludAkobXZpbnNjaCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNodHlwZQl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluc25zdHIKLWludAltdmluc25zdHIoCitpbnQJKG12aW5zbnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNoYXIgKmEzLCAKQEAgLTY5NSwyMSArODA1LDIxIEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zc3RyCi1pbnQJbXZpbnNzdHIoCitpbnQJKG12aW5zc3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbnN0cgotaW50CW12aW5zdHIoCitpbnQJKG12aW5zdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljaGFyCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdnZsaW5lCi1pbnQJbXZ2bGluZSgKK2ludAkobXZ2bGluZSkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNodHlwZQlhMywgCkBAIC03MTcsNyArODI3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkY2gKLWludAltdndhZGRjaCgKK2ludAkobXZ3YWRkY2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTcyNSw3ICs4MzUsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRjaG5zdHIKLWludAltdndhZGRjaG5zdHIoCitpbnQJKG12d2FkZGNobnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzM0LDcgKzg0NCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZGNoc3RyCi1pbnQJbXZ3YWRkY2hzdHIoCitpbnQJKG12d2FkZGNoc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03NDIsNyArODUyLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkbnN0cgotaW50CW12d2FkZG5zdHIoCitpbnQJKG12d2FkZG5zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTc1MSw3ICs4NjEsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRzdHIKLWludAltdndhZGRzdHIoCitpbnQJKG12d2FkZHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtNzU5LDcgKzg2OSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2NoZ2F0Ci1pbnQJbXZ3Y2hnYXQoCitpbnQJKG12d2NoZ2F0KSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03NzAsMjEgKzg4MCwyMSBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndkZWxjaAotaW50CW12d2RlbGNoKAoraW50CShtdndkZWxjaCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3Z2V0Y2gKLWludAltdndnZXRjaCgKK2ludAkobXZ3Z2V0Y2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2dldG5zdHIKLWludAltdndnZXRuc3RyKAoraW50CShtdndnZXRuc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC03OTMsNyArOTAzLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3Z2V0c3RyCi1pbnQJbXZ3Z2V0c3RyKAoraW50CShtdndnZXRzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgwMSw3ICs5MTEsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndobGluZQotaW50CW12d2hsaW5lKAoraW50CShtdndobGluZSkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODEwLDE0ICs5MjAsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5jaAotY2h0eXBlCW12d2luY2goCitjaHR5cGUJKG12d2luY2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KIAogI3VuZGVmIG12d2luY2huc3RyCi1pbnQJbXZ3aW5jaG5zdHIoCitpbnQJKG12d2luY2huc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04MjYsNyArOTM2LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5jaHN0cgotaW50CW12d2luY2hzdHIoCitpbnQJKG12d2luY2hzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTgzNCw3ICs5NDQsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbm5zdHIKLWludAltdndpbm5zdHIoCitpbnQJKG12d2lubnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODQzLDcgKzk1Myw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luc2NoCi1pbnQJbXZ3aW5zY2goCitpbnQJKG12d2luc2NoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04NTEsNyArOTYxLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5zbnN0cgotaW50CW12d2luc25zdHIoCitpbnQJKG12d2luc25zdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTg2MCw3ICs5NzAsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbnNzdHIKLWludAltdndpbnNzdHIoCitpbnQJKG12d2luc3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtODY4LDcgKzk3OCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luc3RyCi1pbnQJbXZ3aW5zdHIoCitpbnQJKG12d2luc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC04NzYsNyArOTg2LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3dmxpbmUKLWludAltdnd2bGluZSgKK2ludAkobXZ3dmxpbmUpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTg4NSwxMjkgKzk5NSwxMjkgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgUEFJUl9OVU1CRVIKLWludAlQQUlSX05VTUJFUigKK2ludAkoUEFJUl9OVU1CRVIpKAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgcmVkcmF3d2luCi1pbnQJcmVkcmF3d2luKAoraW50CShyZWRyYXd3aW4pKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHJlZnJlc2gKLWludAlyZWZyZXNoKHZvaWQpCitpbnQJKHJlZnJlc2gpKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNjcmwKLWludAlzY3JsKAoraW50CShzY3JsKSgKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNjcm9sbAotaW50CXNjcm9sbCgKK2ludAkoc2Nyb2xsKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBzZXRzY3JyZWcKLWludAlzZXRzY3JyZWcoCitpbnQJKHNldHNjcnJlZykoCiAJCWludAlhMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBzbGtfYXR0cl9vZmYKLWludAlzbGtfYXR0cl9vZmYoCitpbnQJKHNsa19hdHRyX29mZikoCiAJCWNvbnN0IGF0dHJfdCBhMSwgCiAJCXZvaWQJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNsa19hdHRyX29uCi1pbnQJc2xrX2F0dHJfb24oCitpbnQJKHNsa19hdHRyX29uKSgKIAkJYXR0cl90CWExLCAKIAkJdm9pZAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc3RhbmRvdXQKLWludAlzdGFuZG91dCh2b2lkKQoraW50CShzdGFuZG91dCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc3RhbmRlbmQKLWludAlzdGFuZGVuZCh2b2lkKQoraW50CShzdGFuZGVuZCkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdGltZW91dAotdm9pZAl0aW1lb3V0KAordm9pZAkodGltZW91dCkoCiAJCWludAl6KQogCQl7IC8qIHZvaWQgKi8gfQogCiAjdW5kZWYgdG91Y2hsaW5lCi1pbnQJdG91Y2hsaW5lKAoraW50CSh0b3VjaGxpbmUpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRvdWNod2luCi1pbnQJdG91Y2h3aW4oCitpbnQJKHRvdWNod2luKSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB1bnRvdWNod2luCi1pbnQJdW50b3VjaHdpbigKK2ludAkodW50b3VjaHdpbikoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdmxpbmUKLWludAl2bGluZSgKK2ludAkodmxpbmUpKAogCQljaHR5cGUJYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdndfcHJpbnR3Ci1pbnQJdndfcHJpbnR3KAoraW50CSh2d19wcmludHcpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2hhciAqYTIsIAogCQl2YV9saXN0CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZ3X3NjYW53Ci1pbnQJdndfc2NhbncoCitpbnQJKHZ3X3NjYW53KSgKIAkJV0lORE9XCSphMSwgCi0JCWNoYXIJKmEyLCAKKwkJY29uc3QgY2hhciAqYTIsIAogCQl2YV9saXN0CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhZGRjaHN0cgotaW50CXdhZGRjaHN0cigKK2ludAkod2FkZGNoc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IGNodHlwZSAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2FkZHN0cgotaW50CXdhZGRzdHIoCitpbnQJKHdhZGRzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2hhciAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2F0dHJvbgotaW50CXdhdHRyb24oCitpbnQJKHdhdHRyb24pKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdhdHRyb2ZmCi1pbnQJd2F0dHJvZmYoCitpbnQJKHdhdHRyb2ZmKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YXR0cnNldAotaW50CXdhdHRyc2V0KAoraW50CSh3YXR0cnNldCkoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2F0dHJfZ2V0Ci1pbnQJd2F0dHJfZ2V0KAoraW50CSh3YXR0cl9nZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJYXR0cl90CSphMiwgCiAJCXNob3J0CSphMywgCkBAIC0xMDE1LDcgKzExMjUsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YXR0cl9zZXQKLWludAl3YXR0cl9zZXQoCitpbnQJKHdhdHRyX3NldCkoCiAJCVdJTkRPVwkqYTEsIAogCQlhdHRyX3QJYTIsIAogCQlzaG9ydAlhMywgCkBAIC0xMDIzLDE5NSArMTEzMywyMTAgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2RlbGV0ZWxuCi1pbnQJd2RlbGV0ZWxuKAoraW50CSh3ZGVsZXRlbG4pKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdnZXRzdHIKLWludAl3Z2V0c3RyKAoraW50CSh3Z2V0c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbmNoc3RyCi1pbnQJd2luY2hzdHIoCitpbnQJKHdpbmNoc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNodHlwZQkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2luc2VydGxuCi1pbnQJd2luc2VydGxuKAoraW50CSh3aW5zZXJ0bG4pKAogCQlXSU5ET1cJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbnNzdHIKLWludAl3aW5zc3RyKAoraW50CSh3aW5zc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IGNoYXIgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbnN0cgotaW50CXdpbnN0cigKK2ludAkod2luc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNoYXIJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdzdGFuZG91dAotaW50CXdzdGFuZG91dCgKK2ludAkod3N0YW5kb3V0KSgKIAkJV0lORE9XCSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3c3RhbmRlbmQKLWludAl3c3RhbmRlbmQoCitpbnQJKHdzdGFuZGVuZCkoCiAJCVdJTkRPVwkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0YXR0cnMKLWludAlnZXRhdHRycygKK2ludAkoZ2V0YXR0cnMpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGN1cngKLWludAlnZXRjdXJ4KAoraW50CShnZXRjdXJ4KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRjdXJ5Ci1pbnQJZ2V0Y3VyeSgKK2ludAkoZ2V0Y3VyeSkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0YmVneAotaW50CWdldGJlZ3goCitpbnQJKGdldGJlZ3gpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldGJlZ3kKLWludAlnZXRiZWd5KAoraW50CShnZXRiZWd5KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRtYXh4Ci1pbnQJZ2V0bWF4eCgKK2ludAkoZ2V0bWF4eCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0bWF4eQotaW50CWdldG1heHkoCitpbnQJKGdldG1heHkpKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldHBhcngKLWludAlnZXRwYXJ4KAoraW50CShnZXRwYXJ4KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRwYXJ5Ci1pbnQJZ2V0cGFyeSgKK2ludAkoZ2V0cGFyeSkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgd2dldHBhcmVudAotV0lORE9XCSp3Z2V0cGFyZW50KAorV0lORE9XCSood2dldHBhcmVudCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KIAogI3VuZGVmIGlzX2NsZWFyZWQKLU5DVVJTRVNfQk9PTCBpc19jbGVhcmVkKAorTkNVUlNFU19CT09MIChpc19jbGVhcmVkKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19pZGNvawotTkNVUlNFU19CT09MIGlzX2lkY29rKAorTkNVUlNFU19CT09MIChpc19pZGNvaykoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfaWRsb2sKLU5DVVJTRVNfQk9PTCBpc19pZGxvaygKK05DVVJTRVNfQk9PTCAoaXNfaWRsb2spKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX2ltbWVkb2sKLU5DVVJTRVNfQk9PTCBpc19pbW1lZG9rKAorTkNVUlNFU19CT09MIChpc19pbW1lZG9rKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19rZXlwYWQKLU5DVVJTRVNfQk9PTCBpc19rZXlwYWQoCitOQ1VSU0VTX0JPT0wgKGlzX2tleXBhZCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfbGVhdmVvawotTkNVUlNFU19CT09MIGlzX2xlYXZlb2soCitOQ1VSU0VTX0JPT0wgKGlzX2xlYXZlb2spKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX25vZGVsYXkKLU5DVVJTRVNfQk9PTCBpc19ub2RlbGF5KAorTkNVUlNFU19CT09MIChpc19ub2RlbGF5KSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiBpc19ub3RpbWVvdXQKLU5DVVJTRVNfQk9PTCBpc19ub3RpbWVvdXQoCitOQ1VSU0VTX0JPT0wgKGlzX25vdGltZW91dCkoCisJCWNvbnN0IFdJTkRPVyAqeikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaXNfcGFkCitOQ1VSU0VTX0JPT0wgKGlzX3BhZCkoCiAJCWNvbnN0IFdJTkRPVyAqeikKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCiAjdW5kZWYgaXNfc2Nyb2xsb2sKLU5DVVJTRVNfQk9PTCBpc19zY3JvbGxvaygKK05DVVJTRVNfQk9PTCAoaXNfc2Nyb2xsb2spKAorCQljb25zdCBXSU5ET1cgKnopCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGlzX3N1YndpbgorTkNVUlNFU19CT09MIChpc19zdWJ3aW4pKAogCQljb25zdCBXSU5ET1cgKnopCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogI3VuZGVmIGlzX3N5bmNvawotTkNVUlNFU19CT09MIGlzX3N5bmNvaygKK05DVVJTRVNfQk9PTCAoaXNfc3luY29rKSgKIAkJY29uc3QgV0lORE9XICp6KQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiB3Z2V0ZGVsYXkKK2ludAkod2dldGRlbGF5KSgKKwkJY29uc3QgV0lORE9XICp6KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB3Z2V0c2NycmVnCi1pbnQJd2dldHNjcnJlZygKK2ludAkod2dldHNjcnJlZykoCiAJCWNvbnN0IFdJTkRPVyAqYTEsIAogCQlpbnQJKmEyLCAKIAkJaW50CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRfd2NoCi1pbnQJYWRkX3djaCgKK2ludAkoYWRkX3djaCkoCiAJCWNvbnN0IGNjaGFyX3QgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZF93Y2huc3RyCi1pbnQJYWRkX3djaG5zdHIoCitpbnQJKGFkZF93Y2huc3RyKSgKIAkJY29uc3QgY2NoYXJfdCAqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYWRkX3djaHN0cgotaW50CWFkZF93Y2hzdHIoCitpbnQJKGFkZF93Y2hzdHIpKAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBhZGRud3N0cgotaW50CWFkZG53c3RyKAoraW50CShhZGRud3N0cikoCiAJCWNvbnN0IHdjaGFyX3QgKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGFkZHdzdHIKLWludAlhZGR3c3RyKAoraW50CShhZGR3c3RyKSgKIAkJY29uc3Qgd2NoYXJfdCAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYmtncm5kCi1pbnQJYmtncm5kKAoraW50CShia2dybmQpKAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBia2dybmRzZXQKLXZvaWQJYmtncm5kc2V0KAordm9pZAkoYmtncm5kc2V0KSgKIAkJY29uc3QgY2NoYXJfdCAqeikKIAkJeyAvKiB2b2lkICovIH0KIAogI3VuZGVmIGJvcmRlcl9zZXQKLWludAlib3JkZXJfc2V0KAoraW50CShib3JkZXJfc2V0KSgKIAkJY29uc3QgY2NoYXJfdCAqYTEsIAogCQljb25zdCBjY2hhcl90ICphMiwgCiAJCWNvbnN0IGNjaGFyX3QgKmEzLCAKQEAgLTEyMjMsOTYgKzEzNDgsOTYgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgYm94X3NldAotaW50CWJveF9zZXQoCitpbnQJKGJveF9zZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJY29uc3QgY2NoYXJfdCAqYTIsIAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBlY2hvX3djaGFyCi1pbnQJZWNob193Y2hhcigKK2ludAkoZWNob193Y2hhcikoCiAJCWNvbnN0IGNjaGFyX3QgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGdldF93Y2gKLWludAlnZXRfd2NoKAoraW50CShnZXRfd2NoKSgKIAkJd2ludF90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRfd3N0cgotaW50CWdldF93c3RyKAoraW50CShnZXRfd3N0cikoCiAJCXdpbnRfdAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZ2V0Ymtncm5kCi1pbnQJZ2V0Ymtncm5kKAoraW50CShnZXRia2dybmQpKAogCQljY2hhcl90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBnZXRuX3dzdHIKLWludAlnZXRuX3dzdHIoCitpbnQJKGdldG5fd3N0cikoCiAJCXdpbnRfdAkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaGxpbmVfc2V0Ci1pbnQJaGxpbmVfc2V0KAoraW50CShobGluZV9zZXQpKAogCQljb25zdCBjY2hhcl90ICphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbl93Y2gKLWludAlpbl93Y2goCitpbnQJKGluX3djaCkoCiAJCWNjaGFyX3QJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluX3djaG5zdHIKLWludAlpbl93Y2huc3RyKAoraW50CShpbl93Y2huc3RyKSgKIAkJY2NoYXJfdAkqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5fd2Noc3RyCi1pbnQJaW5fd2Noc3RyKAoraW50CShpbl93Y2hzdHIpKAogCQljY2hhcl90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbm53c3RyCi1pbnQJaW5ud3N0cigKK2ludAkoaW5ud3N0cikoCiAJCXdjaGFyX3QJKmExLCAKIAkJaW50CXopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGluc19ud3N0cgotaW50CWluc19ud3N0cigKK2ludAkoaW5zX253c3RyKSgKIAkJY29uc3Qgd2NoYXJfdCAqYTEsIAogCQlpbnQJeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgaW5zX3djaAotaW50CWluc193Y2goCitpbnQJKGluc193Y2gpKAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBpbnNfd3N0cgotaW50CWluc193c3RyKAoraW50CShpbnNfd3N0cikoCiAJCWNvbnN0IHdjaGFyX3QgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIGlud3N0cgotaW50CWlud3N0cigKK2ludAkoaW53c3RyKSgKIAkJd2NoYXJfdAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRfd2NoCi1pbnQJbXZhZGRfd2NoKAoraW50CShtdmFkZF93Y2gpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZF93Y2huc3RyCi1pbnQJbXZhZGRfd2NobnN0cigKK2ludAkobXZhZGRfd2NobnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNjaGFyX3QgKmEzLCAKQEAgLTEzMjAsMTQgKzE0NDUsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGRfd2Noc3RyCi1pbnQJbXZhZGRfd2Noc3RyKAoraW50CShtdmFkZF93Y2hzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmFkZG53c3RyCi1pbnQJbXZhZGRud3N0cigKK2ludAkobXZhZGRud3N0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IHdjaGFyX3QgKmEzLCAKQEAgLTEzMzUsMjggKzE0NjAsMjggQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZhZGR3c3RyCi1pbnQJbXZhZGR3c3RyKAoraW50CShtdmFkZHdzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljb25zdCB3Y2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmdldF93Y2gKLWludAltdmdldF93Y2goCitpbnQJKG12Z2V0X3djaCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCXdpbnRfdAkqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZnZXRfd3N0cgotaW50CW12Z2V0X3dzdHIoCitpbnQJKG12Z2V0X3dzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQl3aW50X3QJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12Z2V0bl93c3RyCi1pbnQJbXZnZXRuX3dzdHIoCitpbnQJKG12Z2V0bl93c3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJd2ludF90CSphMywgCkBAIC0xMzY0LDcgKzE0ODksNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmhsaW5lX3NldAotaW50CW12aGxpbmVfc2V0KAoraW50CShtdmhsaW5lX3NldCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNjaGFyX3QgKmEzLCAKQEAgLTEzNzIsMTQgKzE0OTcsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbl93Y2gKLWludAltdmluX3djaCgKK2ludAkobXZpbl93Y2gpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljY2hhcl90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluX3djaG5zdHIKLWludAltdmluX3djaG5zdHIoCitpbnQJKG12aW5fd2NobnN0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNjaGFyX3QJKmEzLCAKQEAgLTEzODcsMTQgKzE1MTIsMTQgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbl93Y2hzdHIKLWludAltdmluX3djaHN0cigKK2ludAkobXZpbl93Y2hzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQljY2hhcl90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmlubndzdHIKLWludAltdmlubndzdHIoCitpbnQJKG12aW5ud3N0cikoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCXdjaGFyX3QJKmEzLCAKQEAgLTE0MDIsNyArMTUyNyw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zX253c3RyCi1pbnQJbXZpbnNfbndzdHIoCitpbnQJKG12aW5zX253c3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3Qgd2NoYXJfdCAqYTMsIApAQCAtMTQxMCwyOCArMTUzNSwyOCBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdmluc193Y2gKLWludAltdmluc193Y2goCitpbnQJKG12aW5zX3djaCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNjaGFyX3QgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12aW5zX3dzdHIKLWludAltdmluc193c3RyKAoraW50CShtdmluc193c3RyKSgKIAkJaW50CWExLCAKIAkJaW50CWEyLCAKIAkJY29uc3Qgd2NoYXJfdCAqeikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZpbndzdHIKLWludAltdmlud3N0cigKK2ludAkobXZpbndzdHIpKAogCQlpbnQJYTEsIAogCQlpbnQJYTIsIAogCQl3Y2hhcl90CSp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdnZsaW5lX3NldAotaW50CW12dmxpbmVfc2V0KAoraW50CShtdnZsaW5lX3NldCkoCiAJCWludAlhMSwgCiAJCWludAlhMiwgCiAJCWNvbnN0IGNjaGFyX3QgKmEzLCAKQEAgLTE0MzksNyArMTU2NCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZF93Y2gKLWludAltdndhZGRfd2NoKAoraW50CShtdndhZGRfd2NoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNDQ3LDcgKzE1NzIsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGRfd2NobnN0cgotaW50CW12d2FkZF93Y2huc3RyKAoraW50CShtdndhZGRfd2NobnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTQ1Niw3ICsxNTgxLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3YWRkX3djaHN0cgotaW50CW12d2FkZF93Y2hzdHIoCitpbnQJKG12d2FkZF93Y2hzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE0NjQsNyArMTU4OSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2FkZG53c3RyCi1pbnQJbXZ3YWRkbndzdHIoCitpbnQJKG12d2FkZG53c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNDczLDcgKzE1OTgsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndhZGR3c3RyCi1pbnQJbXZ3YWRkd3N0cigKK2ludAkobXZ3YWRkd3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTQ4MSw3ICsxNjA2LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3Z2V0X3djaAotaW50CW12d2dldF93Y2goCitpbnQJKG12d2dldF93Y2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE0ODksNyArMTYxNCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2dldF93c3RyCi1pbnQJbXZ3Z2V0X3dzdHIoCitpbnQJKG12d2dldF93c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNDk3LDcgKzE2MjIsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndnZXRuX3dzdHIKLWludAltdndnZXRuX3dzdHIoCitpbnQJKG12d2dldG5fd3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTUwNiw3ICsxNjMxLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aGxpbmVfc2V0Ci1pbnQJbXZ3aGxpbmVfc2V0KAoraW50CShtdndobGluZV9zZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE1MTUsNyArMTY0MCw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luX3djaAotaW50CW12d2luX3djaCgKK2ludAkobXZ3aW5fd2NoKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNTIzLDcgKzE2NDgsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbl93Y2huc3RyCi1pbnQJbXZ3aW5fd2NobnN0cigKK2ludAkobXZ3aW5fd2NobnN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTUzMiw3ICsxNjU3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5fd2Noc3RyCi1pbnQJbXZ3aW5fd2Noc3RyKAoraW50CShtdndpbl93Y2hzdHIpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE1NDAsNyArMTY2NSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2lubndzdHIKLWludAltdndpbm53c3RyKAoraW50CShtdndpbm53c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNTQ5LDcgKzE2NzQsNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbnNfbndzdHIKLWludAltdndpbnNfbndzdHIoCitpbnQJKG12d2luc19ud3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTU1OCw3ICsxNjgzLDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3aW5zX3djaAotaW50CW12d2luc193Y2goCitpbnQJKG12d2luc193Y2gpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE1NjYsNyArMTY5MSw3IEBACiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG12d2luc193c3RyCi1pbnQJbXZ3aW5zX3dzdHIoCitpbnQJKG12d2luc193c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWludAlhMiwgCiAJCWludAlhMywgCkBAIC0xNTc0LDcgKzE2OTksNyBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBtdndpbndzdHIKLWludAltdndpbndzdHIoCitpbnQJKG12d2lud3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQlpbnQJYTIsIAogCQlpbnQJYTMsIApAQCAtMTU4Miw3ICsxNzA3LDcgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbXZ3dmxpbmVfc2V0Ci1pbnQJbXZ3dmxpbmVfc2V0KAoraW50CShtdnd2bGluZV9zZXQpKAogCQlXSU5ET1cJKmExLCAKIAkJaW50CWEyLCAKIAkJaW50CWEzLCAKQEAgLTE1OTEsNDkgKzE3MTYsNDkgQEAKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdmxpbmVfc2V0Ci1pbnQJdmxpbmVfc2V0KAoraW50CSh2bGluZV9zZXQpKAogCQljb25zdCBjY2hhcl90ICphMSwgCiAJCWludAl6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YWRkX3djaHN0cgotaW50CXdhZGRfd2Noc3RyKAoraW50CSh3YWRkX3djaHN0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljb25zdCBjY2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3YWRkd3N0cgotaW50CXdhZGR3c3RyKAoraW50CSh3YWRkd3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQljb25zdCB3Y2hhcl90ICp6KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3Z2V0X3dzdHIKLWludAl3Z2V0X3dzdHIoCitpbnQJKHdnZXRfd3N0cikoCiAJCVdJTkRPVwkqYTEsIAogCQl3aW50X3QJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdnZXRia2dybmQKLWludAl3Z2V0Ymtncm5kKAoraW50CSh3Z2V0Ymtncm5kKSgKIAkJV0lORE9XCSphMSwgCiAJCWNjaGFyX3QJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbl93Y2hzdHIKLWludAl3aW5fd2Noc3RyKAoraW50CSh3aW5fd2Noc3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNjaGFyX3QJKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHdpbnNfd3N0cgotaW50CXdpbnNfd3N0cigKK2ludAkod2luc193c3RyKSgKIAkJV0lORE9XCSphMSwgCiAJCWNvbnN0IHdjaGFyX3QgKnopCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIG1vdXNlX3RyYWZvCi1OQ1VSU0VTX0JPT0wgbW91c2VfdHJhZm8oCitOQ1VSU0VTX0JPT0wgKG1vdXNlX3RyYWZvKSgKIAkJaW50CSphMSwgCiAJCWludAkqYTIsIAogCQlOQ1VSU0VTX0JPT0wgeikKQEAgLTE2NDEsMjAgKzE3NjYsMzMgQEAKIAogLyogLi9iYXNlL2xpYl9nZXRjaC5jICovCiAKLSNpbmNsdWRlIDxmaWZvX2RlZnMuaD4KLQogI3VuZGVmIEVTQ0RFTEFZCiBpbnQJRVNDREVMQVk7CiAKKyN1bmRlZiBzZXRfZXNjZGVsYXlfc3AKK2ludAlzZXRfZXNjZGVsYXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNldF9lc2NkZWxheQogaW50CXNldF9lc2NkZWxheSgKIAkJaW50CXZhbHVlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBnZXRfZXNjZGVsYXlfc3AKK2ludAlnZXRfZXNjZGVsYXlfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGdldF9lc2NkZWxheQoraW50CWdldF9lc2NkZWxheSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfd2dldGNoCiBpbnQJX25jX3dnZXRjaCgKIAkJV0lORE9XCSp3aW4sIAotCQl1bnNpZ25lZCBsb25nICpyZXN1bHQsIAorCQlpbnQJKnJlc3VsdCwgCiAJCWludAl1c2VfbWV0YSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCkBAIC0xNzA4LDYgKzE4NDYsNyBAQAogCiAjdW5kZWYgX25jX2luc2VydF9jaAogaW50CV9uY19pbnNlcnRfY2goCisJCVNDUkVFTgkqc3AsIAogCQlXSU5ET1cJKndpbiwgCiAJCWNodHlwZQljaCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMTc0Niw2ICsxODg1LDExIEBACiAKIC8qIC4vYmFzZS9saWJfaXNlbmR3aW4uYyAqLwogCisjdW5kZWYgaXNlbmR3aW5fc3AKK05DVVJTRVNfQk9PTCBpc2VuZHdpbl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaXNlbmR3aW4KIE5DVVJTRVNfQk9PTCBpc2VuZHdpbih2b2lkKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CkBAIC0xNzYwLDE2ICsxOTA0LDQyIEBACiAKIC8qIC4vYmFzZS9saWJfbW91c2UuYyAqLwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IG5lcnJvcjsgCisgICAgaW50IG5wYXJhbTsgCisgICAgaW50IHBhcmFtc1s5XTsKKyAgICBpbnQgZmluYWw7IAorfSBTR1JfREFUQTsKKworI3VuZGVmIGdldG1vdXNlX3NwCitpbnQJZ2V0bW91c2Vfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlNRVZFTlQJKmFldmVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZ2V0bW91c2UKIGludAlnZXRtb3VzZSgKIAkJTUVWRU5UCSphZXZlbnQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHVuZ2V0bW91c2Vfc3AKK2ludAl1bmdldG1vdXNlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTUVWRU5UCSphZXZlbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHVuZ2V0bW91c2UKIGludAl1bmdldG1vdXNlKAogCQlNRVZFTlQJKmFldmVudCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbW91c2VtYXNrX3NwCittbWFza190CW1vdXNlbWFza19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCW1tYXNrX3QJbmV3bWFzaywgCisJCW1tYXNrX3QJKm9sZG1hc2spCisJCXsgcmV0dXJuKCoobW1hc2tfdCAqKTApOyB9CisKICN1bmRlZiBtb3VzZW1hc2sKIG1tYXNrX3QJbW91c2VtYXNrKAogCQltbWFza190CW5ld21hc2ssIApAQCAtMTc4MywxNCArMTk1MywzMCBAQAogCQlpbnQJeCkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgbW91c2VpbnRlcnZhbF9zcAoraW50CW1vdXNlaW50ZXJ2YWxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbWF4Y2xpY2spCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG1vdXNlaW50ZXJ2YWwKIGludAltb3VzZWludGVydmFsKAogCQlpbnQJbWF4Y2xpY2spCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIF9uY19oYXNfbW91c2UKLWludAlfbmNfaGFzX21vdXNlKHZvaWQpCi0JCXsgcmV0dXJuKCooaW50ICopMCk7IH0KK05DVVJTRVNfQk9PTCBfbmNfaGFzX21vdXNlKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfbW91c2Vfc3AKK05DVVJTRVNfQk9PTCBoYXNfbW91c2Vfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGhhc19tb3VzZQorTkNVUlNFU19CT09MIGhhc19tb3VzZSh2b2lkKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKICN1bmRlZiB3bW91c2VfdHJhZm8KIE5DVVJTRVNfQk9PTCB3bW91c2VfdHJhZm8oCkBAIC0xODExLDI0ICsxOTk3LDcyIEBACiAKIC8qIC4vdHR5L2xpYl9tdmN1ci5jICovCiAKKyN1bmRlZiBfbmNfbXNlY19jb3N0X3NwCitpbnQJX25jX21zZWNfY29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgCisJCWludAlhZmZjbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19tc2VjX2Nvc3QKIGludAlfbmNfbXNlY19jb3N0KAogCQljb25zdCBjaGFyICpjb25zdCBjYXAsIAogCQlpbnQJYWZmY250KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfbXZjdXJfcmVzdW1lX3NwCit2b2lkCV9uY19tdmN1cl9yZXN1bWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfbXZjdXJfcmVzdW1lCiB2b2lkCV9uY19tdmN1cl9yZXN1bWUodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19tdmN1cl9pbml0X3NwCit2b2lkCV9uY19tdmN1cl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX212Y3VyX2luaXQKIHZvaWQJX25jX212Y3VyX2luaXQodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19tdmN1cl93cmFwX3NwCit2b2lkCV9uY19tdmN1cl93cmFwX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX212Y3VyX3dyYXAKIHZvaWQJX25jX212Y3VyX3dyYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19tdmN1cl9zcAoraW50CV9uY19tdmN1cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfbXZjdXIKK2ludAlfbmNfbXZjdXIoCisJCWludAl5b2xkLCAKKwkJaW50CXhvbGQsIAorCQlpbnQJeW5ldywgCisJCWludAl4bmV3KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBtdmN1cl9zcAoraW50CW12Y3VyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXlvbGQsIAorCQlpbnQJeG9sZCwgCisJCWludAl5bmV3LCAKKwkJaW50CXhuZXcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG12Y3VyCiBpbnQJbXZjdXIoCiAJCWludAl5b2xkLCAKQEAgLTE4NTEsMTcgKzIwODUsMzUgQEAKIAogLyogLi9iYXNlL2xpYl9uZXd0ZXJtLmMgKi8KIAorI3VuZGVmIGZpbHRlcl9zcAordm9pZAlmaWx0ZXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBmaWx0ZXIKIHZvaWQJZmlsdGVyKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBub2ZpbHRlcl9zcAordm9pZAlub2ZpbHRlcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIG5vZmlsdGVyCiB2b2lkCW5vZmlsdGVyKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBuZXd0ZXJtX3NwCitTQ1JFRU4JKm5ld3Rlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJRklMRQkqb2ZwLCAKKwkJRklMRQkqaWZwKQorCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQorCiAjdW5kZWYgbmV3dGVybQogU0NSRUVOCSpuZXd0ZXJtKAotCQljaGFyCSpuYW1lLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCiAJCUZJTEUJKm9mcCwgCiAJCUZJTEUJKmlmcCkKIAkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KQEAgLTE4NzMsNiArMjEyNSwxNSBAQAogCQlXSU5ET1cJKndpbikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbmV3d2luX3NwCitXSU5ET1cJKm5ld3dpbl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAludW1fbGluZXMsIAorCQlpbnQJbnVtX2NvbHVtbnMsIAorCQlpbnQJYmVneSwgCisJCWludAliZWd4KQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCiAjdW5kZWYgbmV3d2luCiBXSU5ET1cJKm5ld3dpbigKIAkJaW50CW51bV9saW5lcywgCkBAIC0xODk5LDggKzIxNjAsOSBAQAogCQlpbnQJeCkKIAkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KIAotI3VuZGVmIF9uY19tYWtlbmV3Ci1XSU5ET1cJKl9uY19tYWtlbmV3KAorI3VuZGVmIF9uY19tYWtlbmV3X3NwCitXSU5ET1cJKl9uY19tYWtlbmV3X3NwKAorCQlTQ1JFRU4JKnNwLCAKIAkJaW50CW51bV9saW5lcywgCiAJCWludAludW1fY29sdW1ucywgCiAJCWludAliZWd5LCAKQEAgLTE5MDgsMTcgKzIxNzAsMzcgQEAKIAkJaW50CWZsYWdzKQogCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQogCi0jdW5kZWYgX25jX3NjcmVlbl9vZgotU0NSRUVOCSpfbmNfc2NyZWVuX29mKAotCQlXSU5ET1cJKndpbikKLQkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKyN1bmRlZiBfbmNfY3Vyc2NyX29mCitXSU5ET1cJKl9uY19jdXJzY3Jfb2YoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbmV3c2NyX29mCitXSU5ET1cJKl9uY19uZXdzY3Jfb2YoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3Rkc2NyX29mCitXSU5ET1cJKl9uY19zdGRzY3Jfb2YoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfbmwuYyAqLwogCisjdW5kZWYgbmxfc3AKK2ludAlubF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbmwKIGludAlubCh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBub25sX3NwCitpbnQJbm9ubF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbm9ubAogaW50CW5vbmwodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMTk1Miw2ICsyMjM0LDEzIEBACiAKIC8qIC4vYmFzZS9saWJfcGFkLmMgKi8KIAorI3VuZGVmIG5ld3BhZF9zcAorV0lORE9XCSpuZXdwYWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJbCwgCisJCWludAljKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCiAjdW5kZWYgbmV3cGFkCiBXSU5ET1cJKm5ld3BhZCgKIAkJaW50CWwsIApAQCAtMjA1Nyw5ICsyMzQ2LDE3IEBACiAKIC8qIC4vYmFzZS9saWJfcmVzdGFydC5jICovCiAKKyN1bmRlZiByZXN0YXJ0dGVybV9zcAoraW50CXJlc3RhcnR0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqdGVybXAsIAorCQlpbnQJZmlsZW51bSwgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXN0YXJ0dGVybQogaW50CXJlc3RhcnR0ZXJtKAotCQljaGFyCSp0ZXJtcCwgCisJCWNvbnN0IGNoYXIgKnRlcm1wLCAKIAkJaW50CWZpbGVudW0sIAogCQlpbnQJKmVycnJldCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMjA2OSwyMCArMjM2NiwyMCBAQAogI3VuZGVmIHZ3c2NhbncKIGludAl2d3NjYW53KAogCQlXSU5ET1cJKndpbiwgCi0JCWNoYXIJKmZtdCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCiAJCXZhX2xpc3QJYXJncCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgc2NhbncKIGludAlzY2FudygKLQkJY2hhcgkqZm10LCAKKwkJY29uc3QgY2hhciAqZm10LCAKIAkJLi4uKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB3c2NhbncKIGludAl3c2NhbncoCiAJCVdJTkRPVwkqd2luLCAKLQkJY2hhcgkqZm10LCAKKwkJY29uc3QgY2hhciAqZm10LCAKIAkJLi4uKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKQEAgLTIwOTAsNyArMjM4Nyw3IEBACiBpbnQJbXZzY2FudygKIAkJaW50CXksIAogCQlpbnQJeCwgCi0JCWNoYXIJKmZtdCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCiAJCS4uLikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCkBAIC0yMDk5LDEyICsyMzk2LDQwIEBACiAJCVdJTkRPVwkqd2luLCAKIAkJaW50CXksIAogCQlpbnQJeCwgCi0JCWNoYXIJKmZtdCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCiAJCS4uLikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX3NjcmVlbi5jICovCiAKK3R5cGVkZWYgZW51bSB7CisgICAgcElOVCAKKyAgICAscFNIT1JUIAorICAgICxwQk9PTCAKKyAgICAscEFUVFIgCisgICAgLHBDSEFSIAorICAgICxwU0laRSAKKyAgICAscENDSEFSIAorfSBQQVJBTV9UWVBFOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciBuYW1lWzExXTsKKyAgICBhdHRyX3QgYXR0cjsKK30gU0NSX0FUVFJTOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciBuYW1lWzE3XTsKKyAgICBQQVJBTV9UWVBFIHR5cGU7CisgICAgc2l6ZV90IHNpemU7CisgICAgc2l6ZV90IG9mZnNldDsKK30gU0NSX1BBUkFNUzsKKworI3VuZGVmIGdldHdpbl9zcAorV0lORE9XCSpnZXR3aW5fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlGSUxFCSpmaWxlcCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKwogI3VuZGVmIGdldHdpbgogV0lORE9XCSpnZXR3aW4oCiAJCUZJTEUJKmZpbGVwKQpAQCAtMjExNiw2ICsyNDQxLDEyIEBACiAJCUZJTEUJKmZpbGVwKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBzY3JfcmVzdG9yZV9zcAoraW50CXNjcl9yZXN0b3JlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2NyX3Jlc3RvcmUKIGludAlzY3JfcmVzdG9yZSgKIAkJY29uc3QgY2hhciAqZmlsZSkKQEAgLTIxMjYsMTEgKzI0NTcsMjMgQEAKIAkJY29uc3QgY2hhciAqZmlsZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgc2NyX2luaXRfc3AKK2ludAlzY3JfaW5pdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmZpbGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNjcl9pbml0CiBpbnQJc2NyX2luaXQoCiAJCWNvbnN0IGNoYXIgKmZpbGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNjcl9zZXRfc3AKK2ludAlzY3Jfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqZmlsZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2NyX3NldAogaW50CXNjcl9zZXQoCiAJCWNvbnN0IGNoYXIgKmZpbGUpCkBAIC0yMTQyLDggKzI0ODUsOCBAQAogdm9pZAlfbmNfc2Nyb2xsX3dpbmRvdygKIAkJV0lORE9XCSp3aW4sIAogCQlpbnQgY29uc3QgbiwgCi0JCXNob3J0IGNvbnN0IHRvcCwgCi0JCXNob3J0IGNvbnN0IGJvdHRvbSwgCisJCWludCBjb25zdCB0b3AsIAorCQlpbnQgY29uc3QgYm90dG9tLCAKIAkJY2NoYXJfdAlibGFuaykKIAkJeyAvKiB2b2lkICovIH0KIApAQCAtMjE4MiwxNSArMjUyNSwzNCBAQAogCQlTQ1JFRU4JKnNwKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX3NldHVwc2NyZWVuX3NwCitpbnQJX25jX3NldHVwc2NyZWVuX3NwKAorCQlTQ1JFRU4JKipzcHAsIAorCQlpbnQJc2xpbmVzLCAKKwkJaW50CXNjb2x1bW5zLCAKKwkJRklMRQkqb3V0cHV0LCAKKwkJaW50CWZpbHRlcmVkLCAKKwkJaW50CXNsa19mb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19zZXR1cHNjcmVlbgogaW50CV9uY19zZXR1cHNjcmVlbigKIAkJaW50CXNsaW5lcywgCiAJCWludAlzY29sdW1ucywgCiAJCUZJTEUJKm91dHB1dCwgCi0JCU5DVVJTRVNfQk9PTCBmaWx0ZXJlZCwgCisJCWludAlmaWx0ZXJlZCwgCiAJCWludAlzbGtfZm9ybWF0KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcmlwb2ZmbGluZV9zcAoraW50CV9uY19yaXBvZmZsaW5lX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWxpbmUsIAorCQlpbnQJKCppbml0KSgKKwkJV0lORE9XCSpwMSwgCisJCWludAlwMikpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19yaXBvZmZsaW5lCiBpbnQJX25jX3JpcG9mZmxpbmUoCiAJCWludAlsaW5lLCAKQEAgLTIxOTksNiArMjU2MSwxNSBAQAogCQlpbnQJcDIpKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiByaXBvZmZsaW5lX3NwCitpbnQJcmlwb2ZmbGluZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlsaW5lLCAKKwkJaW50CSgqaW5pdCkoCisJCVdJTkRPVwkqcDEsIAorCQlpbnQJcDIpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByaXBvZmZsaW5lCiBpbnQJcmlwb2ZmbGluZSgKIAkJaW50CWxpbmUsIApAQCAtMjIwOSwxOCArMjU4MCwzNyBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsay5jICovCiAKKyN1bmRlZiBfbmNfZm9ybWF0X3Nsa3MKK2ludAlfbmNfZm9ybWF0X3Nsa3MoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29scykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgX25jX3Nsa19pbml0aWFsaXplCiBpbnQJX25jX3Nsa19pbml0aWFsaXplKAogCQlXSU5ET1cJKnN0d2luLCAKIAkJaW50CWNvbHMpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNsa19yZXN0b3JlX3NwCitpbnQJc2xrX3Jlc3RvcmVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19yZXN0b3JlCiBpbnQJc2xrX3Jlc3RvcmUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX3Nsa2F0cl9zZXQuYyAqLwogCisjdW5kZWYgc2xrX2F0dHJfc2V0X3NwCitpbnQJc2xrX2F0dHJfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgYXR0cl90IGF0dHIsIAorCQlzaG9ydAljb2xvcl9wYWlyX251bWJlciwgCisJCXZvaWQJKm9wdHMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19hdHRyX3NldAogaW50CXNsa19hdHRyX3NldCgKIAkJY29uc3QgYXR0cl90IGF0dHIsIApAQCAtMjIzMCw2ICsyNjIwLDEyIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrYXRyb2YuYyAqLwogCisjdW5kZWYgc2xrX2F0dHJvZmZfc3AKK2ludAlzbGtfYXR0cm9mZl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNodHlwZSBhdHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfYXR0cm9mZgogaW50CXNsa19hdHRyb2ZmKAogCQljb25zdCBjaHR5cGUgYXR0cikKQEAgLTIyMzcsNiArMjYzMywxMiBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2F0cm9uLmMgKi8KIAorI3VuZGVmIHNsa19hdHRyb25fc3AKK2ludAlzbGtfYXR0cm9uX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2h0eXBlIGF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19hdHRyb24KIGludAlzbGtfYXR0cm9uKAogCQljb25zdCBjaHR5cGUgYXR0cikKQEAgLTIyNDQsNiArMjY0NiwxMiBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2F0cnNldC5jICovCiAKKyN1bmRlZiBzbGtfYXR0cnNldF9zcAoraW50CXNsa19hdHRyc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2h0eXBlIGF0dHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19hdHRyc2V0CiBpbnQJc2xrX2F0dHJzZXQoCiAJCWNvbnN0IGNodHlwZSBhdHRyKQpAQCAtMjI1MSwxOCArMjY1OSwzNCBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2F0dHIuYyAqLwogCisjdW5kZWYgc2xrX2F0dHJfc3AKK2F0dHJfdAlzbGtfYXR0cl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQorCiAjdW5kZWYgc2xrX2F0dHIKIGF0dHJfdAlzbGtfYXR0cih2b2lkKQogCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CiAKIC8qIC4vYmFzZS9saWJfc2xrY2xlYXIuYyAqLwogCisjdW5kZWYgc2xrX2NsZWFyX3NwCitpbnQJc2xrX2NsZWFyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfY2xlYXIKIGludAlzbGtfY2xlYXIodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX3Nsa2NvbG9yLmMgKi8KIAorI3VuZGVmIHNsa19jb2xvcl9zcAoraW50CXNsa19jb2xvcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCXNob3J0CWNvbG9yX3BhaXJfbnVtYmVyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfY29sb3IKIGludAlzbGtfY29sb3IoCiAJCXNob3J0CWNvbG9yX3BhaXJfbnVtYmVyKQpAQCAtMjI3MCw2ICsyNjk0LDEyIEBACiAKIC8qIC4vYmFzZS9saWJfc2xraW5pdC5jICovCiAKKyN1bmRlZiBzbGtfaW5pdF9zcAoraW50CXNsa19pbml0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZvcm1hdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX2luaXQKIGludAlzbGtfaW5pdCgKIAkJaW50CWZvcm1hdCkKQEAgLTIyNzcsNiArMjcwNywxMiBAQAogCiAvKiAuL2Jhc2UvbGliX3Nsa2xhYi5jICovCiAKKyN1bmRlZiBzbGtfbGFiZWxfc3AKK2NoYXIJKnNsa19sYWJlbF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAluKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwogI3VuZGVmIHNsa19sYWJlbAogY2hhcgkqc2xrX2xhYmVsKAogCQlpbnQJbikKQEAgLTIyODQsMTcgKzI3MjAsMzMgQEAKIAogLyogLi9iYXNlL2xpYl9zbGtyZWZyLmMgKi8KIAorI3VuZGVmIHNsa19ub3V0cmVmcmVzaF9zcAoraW50CXNsa19ub3V0cmVmcmVzaF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgc2xrX25vdXRyZWZyZXNoCiBpbnQJc2xrX25vdXRyZWZyZXNoKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNsa19yZWZyZXNoX3NwCitpbnQJc2xrX3JlZnJlc2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNsa19yZWZyZXNoCiBpbnQJc2xrX3JlZnJlc2godm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAvKiAuL2Jhc2UvbGliX3Nsa3NldC5jICovCiAKLSNpbmNsdWRlIDx3Y3R5cGUuaD4KKyN1bmRlZiBzbGtfc2V0X3NwCitpbnQJc2xrX3NldF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlpLCAKKwkJY29uc3QgY2hhciAqYXN0ciwgCisJCWludAlmb3JtYXQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHNsa19zZXQKIGludAlzbGtfc2V0KApAQCAtMjMwNSw2ICsyNzU3LDExIEBACiAKIC8qIC4vYmFzZS9saWJfc2xrdG91Y2guYyAqLwogCisjdW5kZWYgc2xrX3RvdWNoX3NwCitpbnQJc2xrX3RvdWNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzbGtfdG91Y2gKIGludAlzbGtfdG91Y2godm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMjM0MCwxMiArMjc5NywyNCBAQAogCiAvKiAuL3RyYWNlL2xpYl90cmFjZW1zZS5jICovCiAKKyN1bmRlZiBfbmNfdHJhY2VfbW1hc2tfdAorY2hhcgkqX25jX3RyYWNlX21tYXNrX3QoCisJCVNDUkVFTgkqc3AsIAorCQltbWFza190CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgX25jX3RyYWNlbW91c2UKIGNoYXIJKl9uY190cmFjZW1vdXNlKAogCQlTQ1JFRU4JKnNwLCAKIAkJTUVWRU5UIGNvbnN0ICplcCkKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKKyN1bmRlZiBfbmNfcmV0cmFjZV9tbWFza190CittbWFza190CV9uY19yZXRyYWNlX21tYXNrX3QoCisJCVNDUkVFTgkqc3AsIAorCQltbWFza190CWNvZGUpCisJCXsgcmV0dXJuKCoobW1hc2tfdCAqKTApOyB9CisKICN1bmRlZiBfdHJhY2Vtb3VzZQogY2hhcgkqX3RyYWNlbW91c2UoCiAJCU1FVkVOVCBjb25zdCAqZXApCkBAIC0yMzUzLDExICsyODIyLDkgQEAKIAogLyogLi90dHkvbGliX3RzdHAuYyAqLwogCi0jaW5jbHVkZSA8U2lnQWN0aW9uLmg+Ci0KICN1bmRlZiBfbmNfc2lnbmFsX2hhbmRsZXIKIHZvaWQJX25jX3NpZ25hbF9oYW5kbGVyKAotCQlOQ1VSU0VTX0JPT0wgZW5hYmxlKQorCQlpbnQJZW5hYmxlKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2Jhc2UvbGliX3VuZ2V0Y2guYyAqLwpAQCAtMjM2Nyw4ICsyODM0LDggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAotI3VuZGVmIF9uY191bmdldGNoCi1pbnQJX25jX3VuZ2V0Y2goCisjdW5kZWYgdW5nZXRjaF9zcAoraW50CXVuZ2V0Y2hfc3AoCiAJCVNDUkVFTgkqc3AsIAogCQlpbnQJY2gpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTIzODAsMTEgKzI4NDcsMjMgQEAKIAogLyogLi90dHkvbGliX3ZpZGF0dHIuYyAqLwogCisjdW5kZWYgdmlkcHV0c19zcAoraW50CXZpZHB1dHNfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJbmV3bW9kZSwgCisJCU5DVVJTRVNfT1VUQ19zcCBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB2aWRwdXRzCiBpbnQJdmlkcHV0cygKIAkJY2h0eXBlCW5ld21vZGUsIAotCQlpbnQJKCpvdXRjKSgKLQkJaW50CXAxKSkKKwkJTkNVUlNFU19PVVRDIG91dGMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHZpZGF0dHJfc3AKK2ludAl2aWRhdHRyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2h0eXBlCW5ld21vZGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHZpZGF0dHIKQEAgLTIzOTIsNiArMjg3MSwxMSBAQAogCQljaHR5cGUJbmV3bW9kZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdGVybWF0dHJzX3NwCitjaHR5cGUJdGVybWF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNodHlwZSAqKTApOyB9CisKICN1bmRlZiB0ZXJtYXR0cnMKIGNodHlwZQl0ZXJtYXR0cnModm9pZCkKIAkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQpAQCAtMjQ3MiwxMiArMjk1NiwyNCBAQAogCiAvKiAuL2Jhc2UvbmNfcGFuZWwuYyAqLwogCisjdW5kZWYgX25jX3BhbmVsaG9va19zcAorc3RydWN0IHBhbmVsaG9vayAqX25jX3BhbmVsaG9va19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgcGFuZWxob29rICoqKTApOyB9CisKICN1bmRlZiBfbmNfcGFuZWxob29rCiBzdHJ1Y3QgcGFuZWxob29rICpfbmNfcGFuZWxob29rKHZvaWQpCiAJCXsgcmV0dXJuKCooc3RydWN0IHBhbmVsaG9vayAqKikwKTsgfQogCiAvKiAuL2Jhc2Uvc2FmZV9zcHJpbnRmLmMgKi8KIAorI3VuZGVmIF9uY19wcmludGZfc3RyaW5nX3NwCitjaGFyCSpfbmNfcHJpbnRmX3N0cmluZ19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmZtdCwgCisJCXZhX2xpc3QJYXApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgX25jX3ByaW50Zl9zdHJpbmcKIGNoYXIJKl9uY19wcmludGZfc3RyaW5nKAogCQljb25zdCBjaGFyICpmbXQsIApAQCAtMjQ4NiwxMyArMjk4MiwyNCBAQAogCiAvKiAuL3R0eS90dHlfdXBkYXRlLmMgKi8KIAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjdW5kZWYgZG91cGRhdGVfc3AKK2ludAlkb3VwZGF0ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgZG91cGRhdGUKIGludAlkb3VwZGF0ZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfc2Nyb2xsbl9zcAoraW50CV9uY19zY3JvbGxuX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW4sIAorCQlpbnQJdG9wLCAKKwkJaW50CWJvdCwgCisJCWludAltYXh5KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2Nyb2xsbgogaW50CV9uY19zY3JvbGxuKAogCQlpbnQJbiwgCkBAIC0yNTAxLDE4ICszMDA4LDM5IEBACiAJCWludAltYXh5KQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfc2NyZWVuX3Jlc3VtZV9zcAordm9pZAlfbmNfc2NyZWVuX3Jlc3VtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JlZW5fcmVzdW1lCiB2b2lkCV9uY19zY3JlZW5fcmVzdW1lKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfc2NyZWVuX2luaXRfc3AKK3ZvaWQJX25jX3NjcmVlbl9pbml0X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX3NjcmVlbl9pbml0CiB2b2lkCV9uY19zY3JlZW5faW5pdCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgX25jX3NjcmVlbl93cmFwX3NwCit2b2lkCV9uY19zY3JlZW5fd3JhcF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19zY3JlZW5fd3JhcAogdm9pZAlfbmNfc2NyZWVuX3dyYXAodm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19kb194bWNfZ2xpdGNoX3NwCit2b2lkCV9uY19kb194bWNfZ2xpdGNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJYXR0cl90CXByZXZpb3VzKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2RvX3htY19nbGl0Y2gKIHZvaWQJX25jX2RvX3htY19nbGl0Y2goCiAJCWF0dHJfdAlwcmV2aW91cykKQEAgLTI1MzAsMTIgKzMwNTgsNiBAQAogCQl2YV9saXN0CWFwKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAotLyogLi9iYXNlL21lbW1vdmUuYyAqLwotCi0jdW5kZWYgX25jX21lbW1vdmUKLXZvaWQJX25jX21lbW1vdmUodm9pZCkKLQkJeyAvKiB2b2lkICovIH0KLQogLyogLi9iYXNlL3Zzc2NhbmYuYyAqLwogCiAjdW5kZWYgX25jX3Zzc2NhbmYKQEAgLTI1NDQsMTIgKzMwNjYsMTYgQEAKIAogLyogLi9iYXNlL2xpYl9mcmVlYWxsLmMgKi8KIAotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KLQogI3VuZGVmIF9uY19mcmVlYWxsCiB2b2lkCV9uY19mcmVlYWxsKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfZnJlZV9hbmRfZXhpdF9zcAordm9pZAlfbmNfZnJlZV9hbmRfZXhpdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb2RlKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2ZyZWVfYW5kX2V4aXQKIHZvaWQJX25jX2ZyZWVfYW5kX2V4aXQoCiAJCWludAljb2RlKQpAQCAtMjY3OCw2ICszMjA0LDEyIEBACiAKIC8qIC4vd2lkZWNoYXIvbGliX2luc193Y2guYyAqLwogCisjdW5kZWYgX25jX2luc2VydF93Y2gKK2ludAlfbmNfaW5zZXJ0X3djaCgKKwkJV0lORE9XCSp3aW4sIAorCQljb25zdCBjY2hhcl90ICp3Y2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHdpbnNfd2NoCiBpbnQJd2luc193Y2goCiAJCVdJTkRPVwkqd2luLCAKQEAgLTI3MDksOSArMzI0MSw5IEBACiAvKiAuL3dpZGVjaGFyL2xpYl9rZXlfbmFtZS5jICovCiAKICN1bmRlZiBrZXlfbmFtZQotY2hhcgkqa2V5X25hbWUoCitjb25zdCBjaGFyICprZXlfbmFtZSgKIAkJd2NoYXJfdAljKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKIC8qIC4vd2lkZWNoYXIvbGliX3BlY2hvX3djaGFyLmMgKi8KIApAQCAtMjczOSw2ICszMjcxLDEyIEBACiAJCW1ic3RhdGVfdCAqc3RhdGUpCiAJCXsgcmV0dXJuKCooc2l6ZV90ICopMCk7IH0KIAorI3VuZGVmIHVuZ2V0X3djaF9zcAoraW50CXVuZ2V0X3djaF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IHdjaGFyX3Qgd2NoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1bmdldF93Y2gKIGludAl1bmdldF93Y2goCiAJCWNvbnN0IHdjaGFyX3Qgd2NoKQpAQCAtMjc0NiwxMyArMzI4NCwyOSBAQAogCiAvKiAuL3dpZGVjaGFyL2xpYl92aWRfYXR0ci5jICovCiAKKyN1bmRlZiB2aWRfcHV0c19zcAoraW50CXZpZF9wdXRzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJYXR0cl90CW5ld21vZGUsIAorCQlzaG9ydAlwYWlyLCAKKwkJdm9pZAkqb3B0cywgCisJCU5DVVJTRVNfT1VUQ19zcCBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB2aWRfcHV0cwogaW50CXZpZF9wdXRzKAogCQlhdHRyX3QJbmV3bW9kZSwgCiAJCXNob3J0CXBhaXIsIAogCQl2b2lkCSpvcHRzLCAKLQkJaW50CSgqb3V0YykoCi0JCWludAlwMSkpCisJCU5DVVJTRVNfT1VUQyBvdXRjKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB2aWRfYXR0cl9zcAoraW50CXZpZF9hdHRyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJYXR0cl90CW5ld21vZGUsIAorCQlzaG9ydAlwYWlyLCAKKwkJdm9pZAkqb3B0cykKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdmlkX2F0dHIKQEAgLTI3NjIsNiArMzMxNiwxMSBAQAogCQl2b2lkCSpvcHRzKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0ZXJtX2F0dHJzX3NwCithdHRyX3QJdGVybV9hdHRyc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQorCiAjdW5kZWYgdGVybV9hdHRycwogYXR0cl90CXRlcm1fYXR0cnModm9pZCkKIAkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQpAQCAtMjc4Niw2ICszMzQ1LDEyIEBACiAKIC8qIC4vd2lkZWNoYXIvbGliX3d1bmN0cmwuYyAqLwogCisjdW5kZWYgd3VuY3RybF9zcAord2NoYXJfdAkqd3VuY3RybF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNjaGFyX3QJKndjKQorCQl7IHJldHVybigqKHdjaGFyX3QgKiopMCk7IH0KKwogI3VuZGVmIHd1bmN0cmwKIHdjaGFyX3QJKnd1bmN0cmwoCiAJCWNjaGFyX3QJKndjKQpAQCAtMjgwNSw2ICszMzcwLDI0IEBACiAJCWF0dHJfdAlhdCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19EZWxDaGFyQ29zdF9zcAoraW50CV9uY19EZWxDaGFyQ29zdF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX0luc0NoYXJDb3N0X3NwCitpbnQJX25jX0luc0NoYXJDb3N0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfVXBkYXRlQXR0cnNfc3AKK3ZvaWQJX25jX1VwZGF0ZUF0dHJzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2NoYXJfdCAqYykKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19EZWxDaGFyQ29zdAogaW50CV9uY19EZWxDaGFyQ29zdCgKIAkJaW50CWNvdW50KQpAQCAtMjgxNywxMSArMzQwMCwxNyBAQAogCiAjdW5kZWYgX25jX1VwZGF0ZUF0dHJzCiB2b2lkCV9uY19VcGRhdGVBdHRycygKLQkJY2NoYXJfdAljKQorCQljb25zdCBjY2hhcl90ICpjKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2Jhc2UvbGVnYWN5X2NvZGluZy5jICovCiAKKyN1bmRlZiB1c2VfbGVnYWN5X2NvZGluZ19zcAoraW50CXVzZV9sZWdhY3lfY29kaW5nX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWxldmVsKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1c2VfbGVnYWN5X2NvZGluZwogaW50CXVzZV9sZWdhY3lfY29kaW5nKAogCQlpbnQJbGV2ZWwpCkBAIC0yODI5LDEwICszNDE4LDIyIEBACiAKIC8qIC4vYmFzZS9saWJfZGZ0X2ZnYmcuYyAqLwogCisjdW5kZWYgdXNlX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJdXNlX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB1c2VfZGVmYXVsdF9jb2xvcnMKIGludAl1c2VfZGVmYXVsdF9jb2xvcnModm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwCitpbnQJYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZnLCAKKwkJaW50CWJnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBhc3N1bWVfZGVmYXVsdF9jb2xvcnMKIGludAlhc3N1bWVfZGVmYXVsdF9jb2xvcnMoCiAJCWludAlmZywgCkBAIC0yODQxLDYgKzM0NDIsMTMgQEAKIAogLyogLi90aW5mby9saWJfcHJpbnQuYyAqLwogCisjdW5kZWYgbWNwcmludF9zcAoraW50CW1jcHJpbnRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaGFyCSpkYXRhLCAKKwkJaW50CWxlbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbWNwcmludAogaW50CW1jcHJpbnQoCiAJCWNoYXIJKmRhdGEsIApAQCAtMjg0OSwxOCArMzQ1NywzOSBAQAogCiAvKiAuL2Jhc2UvcmVzaXpldGVybS5jICovCiAKKyN1bmRlZiBpc190ZXJtX3Jlc2l6ZWRfc3AKK05DVVJTRVNfQk9PTCBpc190ZXJtX3Jlc2l6ZWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJVG9MaW5lcywgCisJCWludAlUb0NvbHMpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKwogI3VuZGVmIGlzX3Rlcm1fcmVzaXplZAogTkNVUlNFU19CT09MIGlzX3Rlcm1fcmVzaXplZCgKIAkJaW50CVRvTGluZXMsIAogCQlpbnQJVG9Db2xzKQogCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CiAKKyN1bmRlZiByZXNpemVfdGVybV9zcAoraW50CXJlc2l6ZV90ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNpemVfdGVybQogaW50CXJlc2l6ZV90ZXJtKAogCQlpbnQJVG9MaW5lcywgCiAJCWludAlUb0NvbHMpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHJlc2l6ZXRlcm1fc3AKK2ludAlyZXNpemV0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CVRvTGluZXMsIAorCQlpbnQJVG9Db2xzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNpemV0ZXJtCiBpbnQJcmVzaXpldGVybSgKIAkJaW50CVRvTGluZXMsIApAQCAtMjkwMyw5ICszNTMyLDYgQEAKIAogLyogLi90aW5mby9hY2Nlc3MuYyAqLwogCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxuY19hbGxvYy5oPgotCiAjdW5kZWYgX25jX3Jvb3RuYW1lCiBjaGFyCSpfbmNfcm9vdG5hbWUoCiAJCWNoYXIJKnBhdGgpCkBAIC0yOTY2LDE5ICszNTkyLDQyIEBACiAjdW5kZWYgX25jX2NvcHlfdGVybXR5cGUKIHZvaWQJX25jX2NvcHlfdGVybXR5cGUoCiAJCVRFUk1UWVBFICpkc3QsIAotCQlURVJNVFlQRSAqc3JjKQorCQljb25zdCBURVJNVFlQRSAqc3JjKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL2NvZGVzLmMgKi8KIAogI3VuZGVmIGJvb2xjb2RlcwotY2hhcgkqY29uc3QgYm9vbGNvZGVzW10gPSB7MH07Citjb25zdCBjaGFyICpjb25zdCBib29sY29kZXNbXSA9IHswfTsKICN1bmRlZiBudW1jb2RlcwotY2hhcgkqY29uc3QgbnVtY29kZXNbXSA9IHswfTsKK2NvbnN0IGNoYXIgKmNvbnN0IG51bWNvZGVzW10gPSB7MH07CiAjdW5kZWYgc3RyY29kZXMKLWNoYXIJKmNvbnN0IHN0cmNvZGVzW10gPSB7MH07Citjb25zdCBjaGFyICpjb25zdCBzdHJjb2Rlc1tdID0gezB9OworCisvKiAuL2NvbXBfY2FwdGFiLmMgKi8KKworI3VuZGVmIF9uY19nZXRfdGFibGUKK2NvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpfbmNfZ2V0X3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9oYXNoX3RhYmxlCitjb25zdCBIYXNoVmFsdWUgKl9uY19nZXRfaGFzaF90YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3QgSGFzaFZhbHVlICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2FsaWFzX3RhYmxlCitjb25zdCBzdHJ1Y3QgYWxpYXMgKl9uY19nZXRfYWxpYXNfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBhbGlhcyAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9oYXNoX2luZm8KK2NvbnN0IEhhc2hEYXRhICpfbmNfZ2V0X2hhc2hfaW5mbygKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3QgSGFzaERhdGEgKiopMCk7IH0KIAogLyogLi90aW5mby9jb21wX2Vycm9yLmMgKi8KKwogI3VuZGVmIF9uY19zdXBwcmVzc193YXJuaW5ncwogTkNVUlNFU19CT09MIF9uY19zdXBwcmVzc193YXJuaW5nczsKICN1bmRlZiBfbmNfY3Vycl9saW5lCkBAIC0zMDIzLDYgKzM2NzIsMjEgQEAKIAkJLi4uKQogCQl7IC8qIHZvaWQgKi8gfQogCisvKiAuL3RpbmZvL2NvbXBfaGFzaC5jICovCisKKyN1bmRlZiBfbmNfZmluZF9lbnRyeQorc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQljb25zdCBIYXNoVmFsdWUgKmhhc2hfdGFibGUpCisJCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KKworI3VuZGVmIF9uY19maW5kX3R5cGVfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF90eXBlX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQlpbnQJdHlwZSwgCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKIC8qIC4vdGluZm8vZGJfaXRlcmF0b3IuYyAqLwogCiAjdW5kZWYgX25jX3RpY19kaXIKQEAgLTMxMTYsNiArMzc4MCwxMiBAQAogCQljb25zdCBjaGFyICpuYW1lKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfc2V0ZW52X251bQordm9pZAlfbmNfc2V0ZW52X251bSgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWludAl2YWx1ZSkKKwkJeyAvKiB2b2lkICovIH0KKwogLyogLi90aW5mby9ob21lX3Rlcm1pbmZvLmMgKi8KIAogI3VuZGVmIF9uY19ob21lX3Rlcm1pbmZvCkBAIC0zMTI0LDE1ICszNzk0LDYgQEAKIAogLyogLi90aW5mby9pbml0X2tleXRyeS5jICovCiAKLSNpZiAwCi0KLSNpbmNsdWRlIDxpbml0X2tleXRyeS5oPgotCi0jdW5kZWYgX25jX3RpbmZvX2ZrZXlzCi1jb25zdCBzdHJ1Y3QgdGluZm9fZmtleXMgX25jX3RpbmZvX2ZrZXlzW10gPSB7MH07Ci0KLSNlbmRpZgotCiAjdW5kZWYgX25jX2luaXRfa2V5dHJ5CiB2b2lkCV9uY19pbml0X2tleXRyeSgKIAkJU0NSRUVOCSpzcCkKQEAgLTMxNDMsMTYgKzM4MDQsMTkgQEAKICN1bmRlZiBhY3NfbWFwCiBjaHR5cGUJYWNzX21hcFsxMjhdOwogCisjdW5kZWYgX25jX2luaXRfYWNzX3NwCit2b2lkCV9uY19pbml0X2Fjc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19pbml0X2Fjcwogdm9pZAlfbmNfaW5pdF9hY3Modm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAogLyogLi90aW5mby9saWJfYmF1ZHJhdGUuYyAqLwogCi0jaW5jbHVkZSA8dGVybWNhcC5oPgotCiBzdHJ1Y3Qgc3BlZWQgewotICAgIGludCBzOyAKKyAgICBzaG9ydCBzOyAKICAgICBpbnQgc3A7IAogfTsKIApAQCAtMzE2Niw2ICszODMwLDExIEBACiAJCWludAlCYXVkUmF0ZSkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgYmF1ZHJhdGVfc3AKK2ludAliYXVkcmF0ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgYmF1ZHJhdGUKIGludAliYXVkcmF0ZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CkBAIC0zMTc1LDExICszODQ0LDIzIEBACiAjdW5kZWYgY3VyX3Rlcm0KIFRFUk1JTkFMICpjdXJfdGVybTsKIAorI3VuZGVmIHNldF9jdXJ0ZXJtX3NwCitURVJNSU5BTCAqc2V0X2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKwogI3VuZGVmIHNldF9jdXJ0ZXJtCiBURVJNSU5BTCAqc2V0X2N1cnRlcm0oCiAJCVRFUk1JTkFMICp0ZXJtcCkKIAkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQogCisjdW5kZWYgZGVsX2N1cnRlcm1fc3AKK2ludAlkZWxfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVsX2N1cnRlcm0KIGludAlkZWxfY3VydGVybSgKIAkJVEVSTUlOQUwgKnRlcm1wKQpAQCAtMzIwMiwyNiArMzg4Myw1NiBAQAogI3VuZGVmIF9uY19wcmVzY3JlZW4KIE5DVVJTRVNfUFJFU0NSRUVOIF9uY19wcmVzY3JlZW47CiAKKyN1bmRlZiBfbmNfc2NyZWVuX29mCitTQ1JFRU4JKl9uY19zY3JlZW5fb2YoCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKFNDUkVFTiAqKikwKTsgfQorCiAvKiAuL3RpbmZvL2xpYl9oYXNfY2FwLmMgKi8KIAorI3VuZGVmIGhhc19pY19zcAorTkNVUlNFU19CT09MIGhhc19pY19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaGFzX2ljCiBOQ1VSU0VTX0JPT0wgaGFzX2ljKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAorI3VuZGVmIGhhc19pbF9zcAorTkNVUlNFU19CT09MIGhhc19pbF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCiAjdW5kZWYgaGFzX2lsCiBOQ1VSU0VTX0JPT0wgaGFzX2lsKHZvaWQpCiAJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KIAogLyogLi90aW5mby9saWJfa2VybmVsLmMgKi8KIAorI3VuZGVmIGVyYXNlY2hhcl9zcAorY2hhcgllcmFzZWNoYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKICN1bmRlZiBlcmFzZWNoYXIKIGNoYXIJZXJhc2VjaGFyKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CiAKKyN1bmRlZiBraWxsY2hhcl9zcAorY2hhcglraWxsY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKwogI3VuZGVmIGtpbGxjaGFyCiBjaGFyCWtpbGxjaGFyKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CiAKKyN1bmRlZiBmbHVzaGlucF9zcAoraW50CWZsdXNoaW5wX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBmbHVzaGlucAogaW50CWZsdXNoaW5wKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTMyMzAsMjYgKzM5NDEsMzUgQEAKIAogc3RydWN0IGtuIHsgc2hvcnQgb2Zmc2V0OyBpbnQgY29kZTsgfTsKIAotI3VuZGVmIF9uY19rZXluYW1lCi1jaGFyCSpfbmNfa2V5bmFtZSgKKyN1bmRlZiBrZXluYW1lX3NwCitjb25zdCBjaGFyICprZXluYW1lX3NwKAogCQlTQ1JFRU4JKnNwLCAKIAkJaW50CWMpCi0JCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIGtleW5hbWUKLWNoYXIJKmtleW5hbWUoCitjb25zdCBjaGFyICprZXluYW1lKAogCQlpbnQJYykKLQkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9sb25nbmFtZS5jICovCiAKKyN1bmRlZiBsb25nbmFtZV9zcAorY2hhcgkqbG9uZ25hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgbG9uZ25hbWUKIGNoYXIJKmxvbmduYW1lKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl9uYXBtcy5jICovCiAKLSNpbmNsdWRlIDx0aW1lLmg+CisjdW5kZWYgbmFwbXNfc3AKK2ludAluYXBtc19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgbmFwbXMKIGludAluYXBtcygKQEAgLTMyNzAsNiArMzk5MCwxMiBAQAogCQlOQ1VSU0VTX0JPT0wgZmxhZykKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIGhhbGZkZWxheV9zcAoraW50CWhhbGZkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBoYWxmZGVsYXkKIGludAloYWxmZGVsYXkoCiAJCWludAl0KQpAQCAtMzMwNSw1MyArNDAzMSwxMTUgQEAKIAkJTkNVUlNFU19CT09MIGZsYWcpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIGN1cnNfc2V0X3NwCitpbnQJY3Vyc19zZXRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmlzKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBjdXJzX3NldAogaW50CWN1cnNfc2V0KAogCQlpbnQJdmlzKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0eXBlYWhlYWRfc3AKK2ludAl0eXBlYWhlYWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJZmQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHR5cGVhaGVhZAogaW50CXR5cGVhaGVhZCgKIAkJaW50CWZkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBoYXNfa2V5X3NwCitpbnQJaGFzX2tleV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBoYXNfa2V5CiBpbnQJaGFzX2tleSgKIAkJaW50CWtleWNvZGUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19wdXRwX2ZsdXNoX3NwCitpbnQJX25jX3B1dHBfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19rZXlwYWQKIGludAlfbmNfa2V5cGFkKAogCQlTQ1JFRU4JKnNwLCAKLQkJTkNVUlNFU19CT09MIGZsYWcpCisJCWludAlmbGFnKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIC8qIC4vdGluZm8vbGliX3Jhdy5jICovCiAKKyN1bmRlZiByYXdfc3AKK2ludAlyYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJhdwogaW50CXJhdyh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBjYnJlYWtfc3AKK2ludAljYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGNicmVhawogaW50CWNicmVhayh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBxaWZsdXNoX3NwCit2b2lkCXFpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBxaWZsdXNoCiB2b2lkCXFpZmx1c2godm9pZCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIG5vcmF3X3NwCitpbnQJbm9yYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIG5vcmF3CiBpbnQJbm9yYXcodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgbm9jYnJlYWtfc3AKK2ludAlub2NicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgbm9jYnJlYWsKIGludAlub2NicmVhayh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBub3FpZmx1c2hfc3AKK3ZvaWQJbm9xaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgbm9xaWZsdXNoCiB2b2lkCW5vcWlmbHVzaCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCisjdW5kZWYgaW50cmZsdXNoX3NwCitpbnQJaW50cmZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgaW50cmZsdXNoCiBpbnQJaW50cmZsdXNoKAogCQlXSU5ET1cJKndpbiwgCkBAIC0zMzYwLDEwICs0MTQ4LDYgQEAKIAogLyogLi90aW5mby9saWJfc2V0dXAuYyAqLwogCi0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jaW5jbHVkZSA8bGFuZ2luZm8uaD4KLQogI3VuZGVmIHR0eXR5cGUKIGNoYXIJdHR5dHlwZVsyNTZdOwogI3VuZGVmIExJTkVTCkBAIC0zMzczLDYgKzQxNTcsMTIgQEAKICN1bmRlZiBUQUJTSVpFCiBpbnQJVEFCU0laRTsKIAorI3VuZGVmIHNldF90YWJzaXplX3NwCitpbnQJc2V0X3RhYnNpemVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJdmFsdWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHNldF90YWJzaXplCiBpbnQJc2V0X3RhYnNpemUoCiAJCWludAl2YWx1ZSkKQEAgLTMzODMsMTEgKzQxNzMsMjggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIHVzZV9lbnYKIHZvaWQJdXNlX2VudigKIAkJTkNVUlNFU19CT09MIGYpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCiB2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKIAkJU0NSRUVOCSpzcCwgCkBAIC0zNDAwLDYgKzQyMDcsMTggQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIF9uY19zZXR1cF90aW5mbworaW50CV9uY19zZXR1cF90aW5mbygKKwkJY29uc3QgY2hhciAqY29uc3QgdG4sIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY190aW5mb19jbWRjaAordm9pZAlfbmNfdGluZm9fY21kY2goCisJCVRFUk1JTkFMICp0ZXJtcCwgCisJCWludAlwcm90bykKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIF9uY19nZXRfbG9jYWxlCiBjaGFyCSpfbmNfZ2V0X2xvY2FsZSh2b2lkKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KQEAgLTM0MTUsMTUgKzQyMzQsMTkgQEAKIAogI3VuZGVmIF9uY19zZXR1cHRlcm0KIGludAlfbmNfc2V0dXB0ZXJtKAotCQljaGFyCSp0bmFtZSwgCisJCWNvbnN0IGNoYXIgKnRuYW1lLCAKIAkJaW50CUZpbGVkZXMsIAogCQlpbnQJKmVycnJldCwgCi0JCU5DVVJTRVNfQk9PTCByZXVzZSkKKwkJaW50CXJldXNlKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKwogI3VuZGVmIHNldHVwdGVybQogaW50CXNldHVwdGVybSgKLQkJY2hhcgkqdG5hbWUsIAorCQljb25zdCBjaGFyICp0bmFtZSwgCiAJCWludAlGaWxlZGVzLCAKIAkJaW50CSplcnJyZXQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KQEAgLTM0MzUsMzYgKzQyNTgsNjEgQEAKICN1bmRlZiBCQwogY2hhcgkqQkM7CiAKKyN1bmRlZiB0Z2V0ZW50X3NwCitpbnQJdGdldGVudF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiB0Z2V0ZW50CiBpbnQJdGdldGVudCgKIAkJY2hhcgkqYnVmcCwgCiAJCWNvbnN0IGNoYXIgKm5hbWUpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAotI2lmIDAKLQotI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+Ci0KLSNlbmRpZgorI3VuZGVmIHRnZXRmbGFnX3NwCitpbnQJdGdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgdGdldGZsYWcKIGludAl0Z2V0ZmxhZygKLQkJY2hhcgkqaWQpCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiB0Z2V0bnVtCiBpbnQJdGdldG51bSgKLQkJY2hhcgkqaWQpCisJCWNvbnN0IGNoYXIgKmlkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0Z2V0c3RyX3NwCitjaGFyCSp0Z2V0c3RyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQsIAorCQljaGFyCSoqYXJlYSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKICN1bmRlZiB0Z2V0c3RyCiBjaGFyCSp0Z2V0c3RyKAotCQljaGFyCSppZCwgCisJCWNvbnN0IGNoYXIgKmlkLCAKIAkJY2hhcgkqKmFyZWEpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCiAvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCiAKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgdGVybW5hbWUKIGNoYXIJKnRlcm1uYW1lKHZvaWQpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQpAQCAtMzQ4MCwxOSArNDMyOCwzNyBAQAogCiAvKiAuL3RpbmZvL2xpYl90aS5jICovCiAKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHRpZ2V0ZmxhZwogaW50CXRpZ2V0ZmxhZygKLQkJY2hhcgkqc3RyKQorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0bnVtX3NwCitpbnQJdGlnZXRudW1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRpZ2V0bnVtCiBpbnQJdGlnZXRudW0oCi0JCWNoYXIJKnN0cikKKwkJY29uc3QgY2hhciAqc3RyKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiB0aWdldHN0cl9zcAorY2hhcgkqdGlnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYgdGlnZXRzdHIKIGNoYXIJKnRpZ2V0c3RyKAotCQljaGFyCSpzdHIpCisJCWNvbnN0IGNoYXIgKnN0cikKIAkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CiAKIC8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KQEAgLTM1MDQsMTIgKzQzNzAsMTggQEAKIGludAlfbmNfdHBhcm1fYW5hbHl6ZSgKIAkJY29uc3QgY2hhciAqc3RyaW5nLCAKIAkJY2hhcgkqcF9pc19zWzldLCAKLQkJaW50CSpwb3Bjb3VudCkKKwkJaW50CSpfbmNfcG9wY291bnQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAogI3VuZGVmIHRwYXJtCiBjaGFyCSp0cGFybSgKLQkJY2hhcgkqc3RyaW5nLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAogCQkuLi4pCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCkBAIC0zNTE4LDcgKzQzOTAsNyBAQAogI3VuZGVmIFBDCiBjaGFyCVBDOwogI3VuZGVmIG9zcGVlZAotTkNVUlNFU19PU1BFRUQJb3NwZWVkOworc2hvcnQJb3NwZWVkOwogI3VuZGVmIF9uY19udWxsc19zZW50CiBpbnQJX25jX251bGxzX3NlbnQ7CiAKQEAgLTM1MjcsMjUgKzQzOTksODYgQEAKIAkJU0NSRUVOCSpzcCkKIAkJeyAvKiB2b2lkICovIH0KIAorI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVsYXlfb3V0cHV0CiBpbnQJZGVsYXlfb3V0cHV0KAogCQlpbnQJbXMpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKICN1bmRlZiBfbmNfZmx1c2gKIHZvaWQJX25jX2ZsdXNoKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CiAKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIF9uY19vdXRjaAogaW50CV9uY19vdXRjaCgKIAkJaW50CWNoKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBwdXRwCiBpbnQJcHV0cCgKIAkJY29uc3QgY2hhciAqc3RyaW5nKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgdHB1dHMKIGludAl0cHV0cygKIAkJY29uc3QgY2hhciAqc3RyaW5nLCAKQEAgLTM1NzYsOSArNDUwOSwxNCBAQAogCiAjdW5kZWYgX25jX3JldHJhY2VfYm9vbAogTkNVUlNFU19CT09MIF9uY19yZXRyYWNlX2Jvb2woCi0JCU5DVVJTRVNfQk9PTCBjb2RlKQorCQlpbnQJY29kZSkKIAkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQogCisjdW5kZWYgX25jX3JldHJhY2VfY2hhcgorY2hhcglfbmNfcmV0cmFjZV9jaGFyKAorCQlpbnQJY29kZSkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKwogI3VuZGVmIF9uY19yZXRyYWNlX2ludAogaW50CV9uY19yZXRyYWNlX2ludCgKIAkJaW50CWNvZGUpCkBAIC0zNjAwLDkgKzQ1MzgsOSBAQAogCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KIAogI3VuZGVmIF9uY19yZXRyYWNlX2N2b2lkX3B0cgotdm9pZAkqX25jX3JldHJhY2VfY3ZvaWRfcHRyKAotCQl2b2lkCSpjb2RlKQotCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CiAKICN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgogdm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCkBAIC0zNjMyLDYgKzQ1NzAsMTEgQEAKIAkJYXR0cl90CW5ld21vZGUpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCisjdW5kZWYgX25jX3JldHJhY2VfaW50X2F0dHJfdAoraW50CV9uY19yZXRyYWNlX2ludF9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfcmV0cmFjZV9hdHRyX3QKIGF0dHJfdAlfbmNfcmV0cmFjZV9hdHRyX3QoCiAJCWF0dHJfdAljb2RlKQpAQCAtMzY3NCw3ICs0NjE3LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHVuc2lnbmVkIGludCB2YWw7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07CiB9IEJJVE5BTUVTOwogCiAjdW5kZWYgX25jX3RyYWNlX3R0eW1vZGUKQEAgLTM3MDEsMzYgKzQ2NDQsNzggQEAKIAogLyogLi90aW5mby9saWJfdHR5ZmxhZ3MuYyAqLwogCisjdW5kZWYgX25jX2dldF90dHlfbW9kZV9zcAoraW50CV9uY19nZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfZ2V0X3R0eV9tb2RlCiBpbnQJX25jX2dldF90dHlfbW9kZSgKIAkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgX25jX3NldF90dHlfbW9kZV9zcAoraW50CV9uY19zZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBfbmNfc2V0X3R0eV9tb2RlCiBpbnQJX25jX3NldF90dHlfbW9kZSgKIAkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgZGVmX3NoZWxsX21vZGVfc3AKK2ludAlkZWZfc2hlbGxfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVmX3NoZWxsX21vZGUKIGludAlkZWZfc2hlbGxfbW9kZSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiBkZWZfcHJvZ19tb2RlX3NwCitpbnQJZGVmX3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVmX3Byb2dfbW9kZQogaW50CWRlZl9wcm9nX21vZGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlX3NwCitpbnQJcmVzZXRfcHJvZ19tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiByZXNldF9wcm9nX21vZGUKIGludAlyZXNldF9wcm9nX21vZGUodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCisjdW5kZWYgcmVzZXRfc2hlbGxfbW9kZV9zcAoraW50CXJlc2V0X3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIHJlc2V0X3NoZWxsX21vZGUKIGludAlyZXNldF9zaGVsbF9tb2RlKHZvaWQpCiAJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KIAorI3VuZGVmIHNhdmV0dHlfc3AKK2ludAlzYXZldHR5X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBzYXZldHR5CiBpbnQJc2F2ZXR0eSh2b2lkKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKKyN1bmRlZiByZXNldHR5X3NwCitpbnQJcmVzZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgcmVzZXR0eQogaW50CXJlc2V0dHkodm9pZCkKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpAQCAtMzc2MiwyMSArNDc0NywzOSBAQAogLyogLi9uYW1lcy5jICovCiAKICN1bmRlZiBib29sbmFtZXMKLWNoYXIJKmNvbnN0IGJvb2xuYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3QgYm9vbG5hbWVzW10gPSB7MH07CiAjdW5kZWYgYm9vbGZuYW1lcwotY2hhcgkqY29uc3QgYm9vbGZuYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3QgYm9vbGZuYW1lc1tdID0gezB9OwogI3VuZGVmIG51bW5hbWVzCi1jaGFyCSpjb25zdCBudW1uYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3QgbnVtbmFtZXNbXSA9IHswfTsKICN1bmRlZiBudW1mbmFtZXMKLWNoYXIJKmNvbnN0IG51bWZuYW1lc1tdID0gezB9OworY29uc3QgY2hhciAqY29uc3QgbnVtZm5hbWVzW10gPSB7MH07CiAjdW5kZWYgc3RybmFtZXMKLWNoYXIJKmNvbnN0IHN0cm5hbWVzW10gPSB7MH07Citjb25zdCBjaGFyICpjb25zdCBzdHJuYW1lc1tdID0gezB9OwogI3VuZGVmIHN0cmZuYW1lcwotY2hhcgkqY29uc3Qgc3RyZm5hbWVzW10gPSB7MH07Citjb25zdCBjaGFyICpjb25zdCBzdHJmbmFtZXNbXSA9IHswfTsKKworLyogLi90aW5mby9vYnNvbGV0ZS5jICovCisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcl9zcAordm9pZAlfbmNfc2V0X2J1ZmZlcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKm9mcCwgCisJCWludAlidWZmZXJlZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXRfYnVmZmVyCit2b2lkCV9uY19zZXRfYnVmZmVyKAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CiAKIC8qIC4vdGluZm8vcmVhZF9lbnRyeS5jICovCiAKLSNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKyN1bmRlZiBfbmNfaW5pdF90ZXJtdHlwZQordm9pZAlfbmNfaW5pdF90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IC8qIHZvaWQgKi8gfQogCiAjdW5kZWYgX25jX3JlYWRfdGVybXR5cGUKIGludAlfbmNfcmVhZF90ZXJtdHlwZSgKQEAgLTM4MDAsMjAgKzQ4MDMsOCBAQAogCiAvKiAuL3RpbmZvL3JlYWRfdGVybWNhcC5jICovCiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotI3VuZGVmIF9uY19yZWFkX3Rlcm1jYXBfZW50cnkKLWludAlfbmNfcmVhZF90ZXJtY2FwX2VudHJ5KAotCQljb25zdCBjaGFyICpjb25zdCB0biwgCi0JCVRFUk1UWVBFICpjb25zdCB0cCkKLQkJeyByZXR1cm4oKihpbnQgKikwKTsgfQotCi0vKiAuL3RpbmZvL3NldGJ1Zi5jICovCi0KLSN1bmRlZiBfbmNfc2V0X2J1ZmZlcgotdm9pZAlfbmNfc2V0X2J1ZmZlcigKLQkJRklMRQkqb2ZwLCAKLQkJTkNVUlNFU19CT09MIGJ1ZmZlcmVkKQorI3VuZGVmIF9uY19yZWFkX3Rlcm1jYXAKK3ZvaWQJX25jX3JlYWRfdGVybWNhcCh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQogCiAvKiAuL3RpbmZvL3N0cmluZ3MuYyAqLwpAQCAtMzkwMSwxNiArNDg5MiwxNiBAQAogCiAvKiAuL3VuY3RybC5jICovCiAKLSN1bmRlZiBfbmNfdW5jdHJsCi1jaGFyCSpfbmNfdW5jdHJsKAorI3VuZGVmIHVuY3RybF9zcAorY29uc3QgY2hhciAqdW5jdHJsX3NwKAogCQlTQ1JFRU4JKnNwLCAKIAkJY2h0eXBlCWNoKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKICN1bmRlZiB1bmN0cmwKLWNoYXIJKnVuY3RybCgKK2NvbnN0IGNoYXIgKnVuY3RybCgKIAkJY2h0eXBlCWNoKQotCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CiAKIC8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KIApAQCAtNDAxMSwyNSArNTAwMiw2IEBACiAJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQogCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KIAotLyogLi9jb21wX2NhcHRhYi5jICovCi0KLSNpbmNsdWRlIDxoYXNoc2l6ZS5oPgotCi0jdW5kZWYgX25jX2dldF90YWJsZQotY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKl9uY19nZXRfdGFibGUoCi0JCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQotCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICoqKTApOyB9Ci0KLSN1bmRlZiBfbmNfZ2V0X2hhc2hfdGFibGUKLWNvbnN0IHNob3J0ICpfbmNfZ2V0X2hhc2hfdGFibGUoCi0JCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQotCQl7IHJldHVybigqKGNvbnN0IHNob3J0ICoqKTApOyB9Ci0KLSN1bmRlZiBfbmNfZ2V0X2FsaWFzX3RhYmxlCi1jb25zdCBzdHJ1Y3QgYWxpYXMgKl9uY19nZXRfYWxpYXNfdGFibGUoCi0JCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQotCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBhbGlhcyAqKikwKTsgfQotCiAvKiAuL3RpbmZvL2NvbXBfZXhwYW5kLmMgKi8KIAogI3VuZGVmIF9uY190aWNfZXhwYW5kCkBAIC00MDM5LDIxICs1MDExLDYgQEAKIAkJaW50CW51bWJlcnMpCiAJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQogCi0vKiAuL3RpbmZvL2NvbXBfaGFzaC5jICovCi0KLSN1bmRlZiBfbmNfZmluZF9lbnRyeQotc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX2VudHJ5KAotCQljb25zdCBjaGFyICpzdHJpbmcsIAotCQljb25zdCBzaG9ydCAqaGFzaF90YWJsZSkKLQkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQotCi0jdW5kZWYgX25jX2ZpbmRfdHlwZV9lbnRyeQotc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX3R5cGVfZW50cnkoCi0JCWNvbnN0IGNoYXIgKnN0cmluZywgCi0JCWludAl0eXBlLCAKLQkJY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKnRhYmxlKQotCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9Ci0KIC8qIC4vdGluZm8vY29tcF9wYXJzZS5jICovCiAKICN1bmRlZiBfbmNfY2hlY2tfdGVybXR5cGUyCkBAIC00MDk1LDYgKzUwNTIsOCBAQAogCiAjdW5kZWYgX25jX3N5bnRheAogaW50CV9uY19zeW50YXg7CisjdW5kZWYgX25jX3N0cmljdF9ic2QKK2ludAlfbmNfc3RyaWN0X2JzZDsKICN1bmRlZiBfbmNfY3Vycl9maWxlX3BvcwogbG9uZwlfbmNfY3Vycl9maWxlX3BvczsKICN1bmRlZiBfbmNfY29tbWVudF9zdGFydApAQCAtNDE1MSwxNSArNTExMCwxNSBAQAogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBjaGFyICpmcm9tOwotICAgIGNvbnN0IGNoYXIgKnRvOworICAgIGNvbnN0IGNoYXIgZnJvbVszXTsKKyAgICBjb25zdCBjaGFyIHRvWzZdOwogfSBhc3NvYzsKIAogLyogLi90aW5mby93cml0ZV9lbnRyeS5jICovCiAKICN1bmRlZiBfbmNfc2V0X3dyaXRlZGlyCiB2b2lkCV9uY19zZXRfd3JpdGVkaXIoCi0JCWNoYXIJKmRpcikKKwkJY29uc3QgY2hhciAqZGlyKQogCQl7IC8qIHZvaWQgKi8gfQogCiAjdW5kZWYgX25jX3dyaXRlX2VudHJ5CkBAIC00MTczLDYgKzUxMzIsMTMgQEAKIAogLyogLi9iYXNlL2RlZmluZV9rZXkuYyAqLwogCisjdW5kZWYgZGVmaW5lX2tleV9zcAoraW50CWRlZmluZV9rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCiAjdW5kZWYgZGVmaW5lX2tleQogaW50CWRlZmluZV9rZXkoCiAJCWNvbnN0IGNoYXIgKnN0ciwgCkBAIC00MTg3LDYgKzUxNTMsMTIgQEAKIAogLyogLi9iYXNlL2tleV9kZWZpbmVkLmMgKi8KIAorI3VuZGVmIGtleV9kZWZpbmVkX3NwCitpbnQJa2V5X2RlZmluZWRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwogI3VuZGVmIGtleV9kZWZpbmVkCiBpbnQJa2V5X2RlZmluZWQoCiAJCWNvbnN0IGNoYXIgKnN0cikKQEAgLTQxOTQsNiArNTE2NiwxMyBAQAogCiAvKiAuL2Jhc2Uva2V5Ym91bmQuYyAqLwogCisjdW5kZWYga2V5Ym91bmRfc3AKK2NoYXIJKmtleWJvdW5kX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNvZGUsIAorCQlpbnQJY291bnQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCiAjdW5kZWYga2V5Ym91bmQKIGNoYXIJKmtleWJvdW5kKAogCQlpbnQJY29kZSwgCkBAIC00MjAyLDYgKzUxODEsMTMgQEAKIAogLyogLi9iYXNlL2tleW9rLmMgKi8KIAorI3VuZGVmIGtleW9rX3NwCitpbnQJa2V5b2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKICN1bmRlZiBrZXlvawogaW50CWtleW9rKAogCQlpbnQJYywgCmRpZmYgLS1naXQgYS9uY3Vyc2VzL2xsaWItbHRpYyBiL25jdXJzZXMvbGxpYi1sdGljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzA5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL2xsaWItbHRpYwpAQCAtMCwwICsxLDIxMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWxsb2NfZW50cnkuYyAqLworCisjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19pbml0X2VudHJ5Cit2b2lkCV9uY19pbml0X2VudHJ5KAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfY29weV9lbnRyeQorRU5UUlkJKl9uY19jb3B5X2VudHJ5KAorCQlFTlRSWQkqb2xkcCkKKwkJeyByZXR1cm4oKihFTlRSWSAqKikwKTsgfQorCisjdW5kZWYgX25jX3NhdmVfc3RyCitjaGFyCSpfbmNfc2F2ZV9zdHIoCisJCWNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZykKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfd3JhcF9lbnRyeQordm9pZAlfbmNfd3JhcF9lbnRyeSgKKwkJRU5UUlkJKmNvbnN0IGVwLCAKKwkJTkNVUlNFU19CT09MIGNvcHlfc3RyaW5ncykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tZXJnZV9lbnRyeQordm9pZAlfbmNfbWVyZ2VfZW50cnkoCisJCVRFUk1UWVBFICpjb25zdCB0bywgCisJCVRFUk1UWVBFICpjb25zdCBmcm9tKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2NhcHRvaW5mby5jICovCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjdW5kZWYgX25jX2NhcHRvaW5mbworY2hhcgkqX25jX2NhcHRvaW5mbygKKwkJY29uc3QgY2hhciAqY2FwLCAKKwkJY29uc3QgY2hhciAqcywgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pbmZvdG9jYXAKK2NoYXIJKl9uY19pbmZvdG9jYXAoCisJCWNvbnN0IGNoYXIgKmNhcCwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX2V4cGFuZC5jICovCisKKyN1bmRlZiBfbmNfdGljX2V4cGFuZAorY2hhcgkqX25jX3RpY19leHBhbmQoCisJCWNvbnN0IGNoYXIgKnNyY3AsIAorCQlOQ1VSU0VTX0JPT0wgdGljX2Zvcm1hdCwgCisJCWludAludW1iZXJzKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX3BhcnNlLmMgKi8KKworI3VuZGVmIF9uY19jaGVja190ZXJtdHlwZTIKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSgKKwkJVEVSTVRZUEUgKnAxLCAKKwkJTkNVUlNFU19CT09MIHAyKTsKKyN1bmRlZiBfbmNfY2hlY2tfdGVybXR5cGUKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUpKAorCQlURVJNVFlQRSAqcDEpOworCisjdW5kZWYgX25jX2VudHJ5X21hdGNoCitOQ1VSU0VTX0JPT0wgX25jX2VudHJ5X21hdGNoKAorCQljaGFyCSpuMSwgCisJCWNoYXIJKm4yKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeV9zb3VyY2UKK3ZvaWQJX25jX3JlYWRfZW50cnlfc291cmNlKAorCQlGSUxFCSpmcCwgCisJCWNoYXIJKmJ1ZiwgCisJCWludAlsaXRlcmFsLCAKKwkJTkNVUlNFU19CT09MIHNpbGVudCwgCisJCU5DVVJTRVNfQk9PTCAoKmhvb2spKAorCQlFTlRSWQkqcDEpKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3Jlc29sdmVfdXNlczIKK2ludAlfbmNfcmVzb2x2ZV91c2VzMigKKwkJTkNVUlNFU19CT09MIGZ1bGxyZXNvbHZlLCAKKwkJTkNVUlNFU19CT09MIGxpdGVyYWwpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZXNvbHZlX3VzZXMKK2ludAlfbmNfcmVzb2x2ZV91c2VzKAorCQlOQ1VSU0VTX0JPT0wgZnVsbHJlc29sdmUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9jb21wX3NjYW4uYyAqLworCisjdW5kZWYgX25jX3N5bnRheAoraW50CV9uY19zeW50YXg7CisjdW5kZWYgX25jX3N0cmljdF9ic2QKK2ludAlfbmNfc3RyaWN0X2JzZDsKKyN1bmRlZiBfbmNfY3Vycl9maWxlX3BvcworbG9uZwlfbmNfY3Vycl9maWxlX3BvczsKKyN1bmRlZiBfbmNfY29tbWVudF9zdGFydAorbG9uZwlfbmNfY29tbWVudF9zdGFydDsKKyN1bmRlZiBfbmNfY29tbWVudF9lbmQKK2xvbmcJX25jX2NvbW1lbnRfZW5kOworI3VuZGVmIF9uY19zdGFydF9saW5lCitsb25nCV9uY19zdGFydF9saW5lOworI3VuZGVmIF9uY19jdXJyX3Rva2VuCitzdHJ1Y3QgdG9rZW4gX25jX2N1cnJfdG9rZW47CisjdW5kZWYgX25jX2Rpc2FibGVfcGVyaW9kCitOQ1VSU0VTX0JPT0wgX25jX2Rpc2FibGVfcGVyaW9kOworCisjdW5kZWYgX25jX3Jlc2V0X2lucHV0Cit2b2lkCV9uY19yZXNldF9pbnB1dCgKKwkJRklMRQkqZnAsIAorCQljaGFyCSpidWYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZ2V0X3Rva2VuCitpbnQJX25jX2dldF90b2tlbigKKwkJTkNVUlNFU19CT09MIHNpbGVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RyYW5zX3N0cmluZworaW50CV9uY190cmFuc19zdHJpbmcoCisJCWNoYXIJKnB0ciwgCisJCWNoYXIJKmxhc3QpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXNoX3Rva2VuCit2b2lkCV9uY19wdXNoX3Rva2VuKAorCQlpbnQJdG9rY2xhc3MpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcGFuaWNfbW9kZQordm9pZAlfbmNfcGFuaWNfbW9kZSgKKwkJY2hhcgljaCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9wYXJzZV9lbnRyeS5jICovCisKKyN1bmRlZiBfbmNfcGFyc2VfZW50cnkKK2ludAlfbmNfcGFyc2VfZW50cnkoCisJCXN0cnVjdCBlbnRyeSAqZW50cnlwLCAKKwkJaW50CWxpdGVyYWwsIAorCQlOQ1VSU0VTX0JPT0wgc2lsZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfY2FwY21wCitpbnQJX25jX2NhcGNtcCgKKwkJY29uc3QgY2hhciAqcywgCisJCWNvbnN0IGNoYXIgKnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgZnJvbVszXTsKKyAgICBjb25zdCBjaGFyIHRvWzZdOworfSBhc3NvYzsKKworLyogLi90aW5mby93cml0ZV9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19zZXRfd3JpdGVkaXIKK3ZvaWQJX25jX3NldF93cml0ZWRpcigKKwkJY29uc3QgY2hhciAqZGlyKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3dyaXRlX2VudHJ5Cit2b2lkCV9uY193cml0ZV9lbnRyeSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3RpY193cml0dGVuCitpbnQJX25jX3RpY193cml0dGVuKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbGxpYi1sdGljdCBiL25jdXJzZXMvbGxpYi1sdGljdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2QxNzVjCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy9sbGliLWx0aWN0CkBAIC0wLDAgKzEsMjEyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAyMDEzLW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogTElOVExJQlJBUlkgKi8KKworLyogLi90aW5mby9hbGxvY19lbnRyeS5jICovCisKKyNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorI2luY2x1ZGUgPHRpYy5oPgorCisjdW5kZWYgX25jX2luaXRfZW50cnkKK3ZvaWQJX25jX2luaXRfZW50cnkoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3B5X2VudHJ5CitFTlRSWQkqX25jX2NvcHlfZW50cnkoCisJCUVOVFJZCSpvbGRwKQorCQl7IHJldHVybigqKEVOVFJZICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc2F2ZV9zdHIKK2NoYXIJKl9uY19zYXZlX3N0cigKKwkJY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY193cmFwX2VudHJ5Cit2b2lkCV9uY193cmFwX2VudHJ5KAorCQlFTlRSWQkqY29uc3QgZXAsIAorCQlOQ1VSU0VTX0JPT0wgY29weV9zdHJpbmdzKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX21lcmdlX2VudHJ5Cit2b2lkCV9uY19tZXJnZV9lbnRyeSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRvLCAKKwkJVEVSTVRZUEUgKmNvbnN0IGZyb20pCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vY2FwdG9pbmZvLmMgKi8KKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKyN1bmRlZiBfbmNfY2FwdG9pbmZvCitjaGFyCSpfbmNfY2FwdG9pbmZvKAorCQljb25zdCBjaGFyICpjYXAsIAorCQljb25zdCBjaGFyICpzLCAKKwkJaW50IGNvbnN0IHBhcmFtZXRlcml6ZWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2luZm90b2NhcAorY2hhcgkqX25jX2luZm90b2NhcCgKKwkJY29uc3QgY2hhciAqY2FwLCAKKwkJY29uc3QgY2hhciAqc3RyLCAKKwkJaW50IGNvbnN0IHBhcmFtZXRlcml6ZWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfZXhwYW5kLmMgKi8KKworI3VuZGVmIF9uY190aWNfZXhwYW5kCitjaGFyCSpfbmNfdGljX2V4cGFuZCgKKwkJY29uc3QgY2hhciAqc3JjcCwgCisJCU5DVVJTRVNfQk9PTCB0aWNfZm9ybWF0LCAKKwkJaW50CW51bWJlcnMpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfcGFyc2UuYyAqLworCisjdW5kZWYgX25jX2NoZWNrX3Rlcm10eXBlMgordm9pZAkoKl9uY19jaGVja190ZXJtdHlwZTIpKAorCQlURVJNVFlQRSAqcDEsIAorCQlOQ1VSU0VTX0JPT0wgcDIpOworI3VuZGVmIF9uY19jaGVja190ZXJtdHlwZQordm9pZAkoKl9uY19jaGVja190ZXJtdHlwZSkoCisJCVRFUk1UWVBFICpwMSk7CisKKyN1bmRlZiBfbmNfZW50cnlfbWF0Y2gKK05DVVJTRVNfQk9PTCBfbmNfZW50cnlfbWF0Y2goCisJCWNoYXIJKm4xLCAKKwkJY2hhcgkqbjIpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZWFkX2VudHJ5X3NvdXJjZQordm9pZAlfbmNfcmVhZF9lbnRyeV9zb3VyY2UoCisJCUZJTEUJKmZwLCAKKwkJY2hhcgkqYnVmLCAKKwkJaW50CWxpdGVyYWwsIAorCQlOQ1VSU0VTX0JPT0wgc2lsZW50LCAKKwkJTkNVUlNFU19CT09MICgqaG9vaykoCisJCUVOVFJZCSpwMSkpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmVzb2x2ZV91c2VzMgoraW50CV9uY19yZXNvbHZlX3VzZXMyKAorCQlOQ1VSU0VTX0JPT0wgZnVsbHJlc29sdmUsIAorCQlOQ1VSU0VTX0JPT0wgbGl0ZXJhbCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3Jlc29sdmVfdXNlcworaW50CV9uY19yZXNvbHZlX3VzZXMoCisJCU5DVVJTRVNfQk9PTCBmdWxscmVzb2x2ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfc2Nhbi5jICovCisKKyN1bmRlZiBfbmNfc3ludGF4CitpbnQJX25jX3N5bnRheDsKKyN1bmRlZiBfbmNfc3RyaWN0X2JzZAoraW50CV9uY19zdHJpY3RfYnNkOworI3VuZGVmIF9uY19jdXJyX2ZpbGVfcG9zCitsb25nCV9uY19jdXJyX2ZpbGVfcG9zOworI3VuZGVmIF9uY19jb21tZW50X3N0YXJ0Citsb25nCV9uY19jb21tZW50X3N0YXJ0OworI3VuZGVmIF9uY19jb21tZW50X2VuZAorbG9uZwlfbmNfY29tbWVudF9lbmQ7CisjdW5kZWYgX25jX3N0YXJ0X2xpbmUKK2xvbmcJX25jX3N0YXJ0X2xpbmU7CisjdW5kZWYgX25jX2N1cnJfdG9rZW4KK3N0cnVjdCB0b2tlbiBfbmNfY3Vycl90b2tlbjsKKyN1bmRlZiBfbmNfZGlzYWJsZV9wZXJpb2QKK05DVVJTRVNfQk9PTCBfbmNfZGlzYWJsZV9wZXJpb2Q7CisKKyN1bmRlZiBfbmNfcmVzZXRfaW5wdXQKK3ZvaWQJX25jX3Jlc2V0X2lucHV0KAorCQlGSUxFCSpmcCwgCisJCWNoYXIJKmJ1ZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfdG9rZW4KK2ludAlfbmNfZ2V0X3Rva2VuKAorCQlOQ1VSU0VTX0JPT0wgc2lsZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhbnNfc3RyaW5nCitpbnQJX25jX3RyYW5zX3N0cmluZygKKwkJY2hhcgkqcHRyLCAKKwkJY2hhcgkqbGFzdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1c2hfdG9rZW4KK3ZvaWQJX25jX3B1c2hfdG9rZW4oCisJCWludAl0b2tjbGFzcykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19wYW5pY19tb2RlCit2b2lkCV9uY19wYW5pY19tb2RlKAorCQljaGFyCWNoKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL3BhcnNlX2VudHJ5LmMgKi8KKworI3VuZGVmIF9uY19wYXJzZV9lbnRyeQoraW50CV9uY19wYXJzZV9lbnRyeSgKKwkJc3RydWN0IGVudHJ5ICplbnRyeXAsIAorCQlpbnQJbGl0ZXJhbCwgCisJCU5DVVJTRVNfQk9PTCBzaWxlbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19jYXBjbXAKK2ludAlfbmNfY2FwY21wKAorCQljb25zdCBjaGFyICpzLCAKKwkJY29uc3QgY2hhciAqdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciBmcm9tWzNdOworICAgIGNvbnN0IGNoYXIgdG9bNl07Cit9IGFzc29jOworCisvKiAuL3RpbmZvL3dyaXRlX2VudHJ5LmMgKi8KKworI2luY2x1ZGUgPGhhc2hlZF9kYi5oPgorCisjdW5kZWYgX25jX3NldF93cml0ZWRpcgordm9pZAlfbmNfc2V0X3dyaXRlZGlyKAorCQljb25zdCBjaGFyICpkaXIpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfd3JpdGVfZW50cnkKK3ZvaWQJX25jX3dyaXRlX2VudHJ5KAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdGljX3dyaXR0ZW4KK2ludAlfbmNfdGljX3dyaXR0ZW4odm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9sbGliLWx0aWN0dyBiL25jdXJzZXMvbGxpYi1sdGljdHcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzMDk4MQotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvbGxpYi1sdGljdHcKQEAgLTAsMCArMSwyMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDIwMTItb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMSU5UTElCUkFSWSAqLworCisvKiAuL3RpbmZvL2FsbG9jX2VudHJ5LmMgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisjaW5jbHVkZSA8dGljLmg+CisKKyN1bmRlZiBfbmNfaW5pdF9lbnRyeQordm9pZAlfbmNfaW5pdF9lbnRyeSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2NvcHlfZW50cnkKK0VOVFJZCSpfbmNfY29weV9lbnRyeSgKKwkJRU5UUlkJKm9sZHApCisJCXsgcmV0dXJuKCooRU5UUlkgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYXZlX3N0cgorY2hhcgkqX25jX3NhdmVfc3RyKAorCQljb25zdCBjaGFyICpjb25zdCBzdHJpbmcpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3dyYXBfZW50cnkKK3ZvaWQJX25jX3dyYXBfZW50cnkoCisJCUVOVFJZCSpjb25zdCBlcCwgCisJCU5DVVJTRVNfQk9PTCBjb3B5X3N0cmluZ3MpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbWVyZ2VfZW50cnkKK3ZvaWQJX25jX21lcmdlX2VudHJ5KAorCQlURVJNVFlQRSAqY29uc3QgdG8sIAorCQlURVJNVFlQRSAqY29uc3QgZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9jYXB0b2luZm8uYyAqLworCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI3VuZGVmIF9uY19jYXB0b2luZm8KK2NoYXIJKl9uY19jYXB0b2luZm8oCisJCWNvbnN0IGNoYXIgKmNhcCwgCisJCWNvbnN0IGNoYXIgKnMsIAorCQlpbnQgY29uc3QgcGFyYW1ldGVyaXplZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfaW5mb3RvY2FwCitjaGFyCSpfbmNfaW5mb3RvY2FwKAorCQljb25zdCBjaGFyICpjYXAsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQgY29uc3QgcGFyYW1ldGVyaXplZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vY29tcF9leHBhbmQuYyAqLworCisjdW5kZWYgX25jX3RpY19leHBhbmQKK2NoYXIJKl9uY190aWNfZXhwYW5kKAorCQljb25zdCBjaGFyICpzcmNwLCAKKwkJTkNVUlNFU19CT09MIHRpY19mb3JtYXQsIAorCQlpbnQJbnVtYmVycykKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vY29tcF9wYXJzZS5jICovCisKKyN1bmRlZiBfbmNfY2hlY2tfdGVybXR5cGUyCit2b2lkCSgqX25jX2NoZWNrX3Rlcm10eXBlMikoCisJCVRFUk1UWVBFICpwMSwgCisJCU5DVVJTRVNfQk9PTCBwMik7CisjdW5kZWYgX25jX2NoZWNrX3Rlcm10eXBlCit2b2lkCSgqX25jX2NoZWNrX3Rlcm10eXBlKSgKKwkJVEVSTVRZUEUgKnAxKTsKKworI3VuZGVmIF9uY19lbnRyeV9tYXRjaAorTkNVUlNFU19CT09MIF9uY19lbnRyeV9tYXRjaCgKKwkJY2hhcgkqbjEsIAorCQljaGFyCSpuMikKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3JlYWRfZW50cnlfc291cmNlCit2b2lkCV9uY19yZWFkX2VudHJ5X3NvdXJjZSgKKwkJRklMRQkqZnAsIAorCQljaGFyCSpidWYsIAorCQlpbnQJbGl0ZXJhbCwgCisJCU5DVVJTRVNfQk9PTCBzaWxlbnQsIAorCQlOQ1VSU0VTX0JPT0wgKCpob29rKSgKKwkJRU5UUlkJKnAxKSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19yZXNvbHZlX3VzZXMyCitpbnQJX25jX3Jlc29sdmVfdXNlczIoCisJCU5DVVJTRVNfQk9PTCBmdWxscmVzb2x2ZSwgCisJCU5DVVJTRVNfQk9PTCBsaXRlcmFsKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVzb2x2ZV91c2VzCitpbnQJX25jX3Jlc29sdmVfdXNlcygKKwkJTkNVUlNFU19CT09MIGZ1bGxyZXNvbHZlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vY29tcF9zY2FuLmMgKi8KKworI3VuZGVmIF9uY19zeW50YXgKK2ludAlfbmNfc3ludGF4OworI3VuZGVmIF9uY19zdHJpY3RfYnNkCitpbnQJX25jX3N0cmljdF9ic2Q7CisjdW5kZWYgX25jX2N1cnJfZmlsZV9wb3MKK2xvbmcJX25jX2N1cnJfZmlsZV9wb3M7CisjdW5kZWYgX25jX2NvbW1lbnRfc3RhcnQKK2xvbmcJX25jX2NvbW1lbnRfc3RhcnQ7CisjdW5kZWYgX25jX2NvbW1lbnRfZW5kCitsb25nCV9uY19jb21tZW50X2VuZDsKKyN1bmRlZiBfbmNfc3RhcnRfbGluZQorbG9uZwlfbmNfc3RhcnRfbGluZTsKKyN1bmRlZiBfbmNfY3Vycl90b2tlbgorc3RydWN0IHRva2VuIF9uY19jdXJyX3Rva2VuOworI3VuZGVmIF9uY19kaXNhYmxlX3BlcmlvZAorTkNVUlNFU19CT09MIF9uY19kaXNhYmxlX3BlcmlvZDsKKworI3VuZGVmIF9uY19yZXNldF9pbnB1dAordm9pZAlfbmNfcmVzZXRfaW5wdXQoCisJCUZJTEUJKmZwLCAKKwkJY2hhcgkqYnVmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF90b2tlbgoraW50CV9uY19nZXRfdG9rZW4oCisJCU5DVVJTRVNfQk9PTCBzaWxlbnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY190cmFuc19zdHJpbmcKK2ludAlfbmNfdHJhbnNfc3RyaW5nKAorCQljaGFyCSpwdHIsIAorCQljaGFyCSpsYXN0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHVzaF90b2tlbgordm9pZAlfbmNfcHVzaF90b2tlbigKKwkJaW50CXRva2NsYXNzKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3BhbmljX21vZGUKK3ZvaWQJX25jX3BhbmljX21vZGUoCisJCWNoYXIJY2gpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vcGFyc2VfZW50cnkuYyAqLworCisjdW5kZWYgX25jX3BhcnNlX2VudHJ5CitpbnQJX25jX3BhcnNlX2VudHJ5KAorCQlzdHJ1Y3QgZW50cnkgKmVudHJ5cCwgCisJCWludAlsaXRlcmFsLCAKKwkJTkNVUlNFU19CT09MIHNpbGVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2NhcGNtcAoraW50CV9uY19jYXBjbXAoCisJCWNvbnN0IGNoYXIgKnMsIAorCQljb25zdCBjaGFyICp0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyIGZyb21bM107CisgICAgY29uc3QgY2hhciB0b1s2XTsKK30gYXNzb2M7CisKKy8qIC4vdGluZm8vd3JpdGVfZW50cnkuYyAqLworCisjaW5jbHVkZSA8aGFzaGVkX2RiLmg+CisKKyN1bmRlZiBfbmNfc2V0X3dyaXRlZGlyCit2b2lkCV9uY19zZXRfd3JpdGVkaXIoCisJCWNvbnN0IGNoYXIgKmRpcikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY193cml0ZV9lbnRyeQordm9pZAlfbmNfd3JpdGVfZW50cnkoCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY190aWNfd3JpdHRlbgoraW50CV9uY190aWNfd3JpdHRlbih2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL2xsaWItbHRpY3cgYi9uY3Vyc2VzL2xsaWItbHRpY3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzMDk4MQotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvbGxpYi1sdGljdwpAQCAtMCwwICsxLDIxMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWxsb2NfZW50cnkuYyAqLworCisjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19pbml0X2VudHJ5Cit2b2lkCV9uY19pbml0X2VudHJ5KAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfY29weV9lbnRyeQorRU5UUlkJKl9uY19jb3B5X2VudHJ5KAorCQlFTlRSWQkqb2xkcCkKKwkJeyByZXR1cm4oKihFTlRSWSAqKikwKTsgfQorCisjdW5kZWYgX25jX3NhdmVfc3RyCitjaGFyCSpfbmNfc2F2ZV9zdHIoCisJCWNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZykKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfd3JhcF9lbnRyeQordm9pZAlfbmNfd3JhcF9lbnRyeSgKKwkJRU5UUlkJKmNvbnN0IGVwLCAKKwkJTkNVUlNFU19CT09MIGNvcHlfc3RyaW5ncykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19tZXJnZV9lbnRyeQordm9pZAlfbmNfbWVyZ2VfZW50cnkoCisJCVRFUk1UWVBFICpjb25zdCB0bywgCisJCVRFUk1UWVBFICpjb25zdCBmcm9tKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2NhcHRvaW5mby5jICovCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjdW5kZWYgX25jX2NhcHRvaW5mbworY2hhcgkqX25jX2NhcHRvaW5mbygKKwkJY29uc3QgY2hhciAqY2FwLCAKKwkJY29uc3QgY2hhciAqcywgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pbmZvdG9jYXAKK2NoYXIJKl9uY19pbmZvdG9jYXAoCisJCWNvbnN0IGNoYXIgKmNhcCwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludCBjb25zdCBwYXJhbWV0ZXJpemVkKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX2V4cGFuZC5jICovCisKKyN1bmRlZiBfbmNfdGljX2V4cGFuZAorY2hhcgkqX25jX3RpY19leHBhbmQoCisJCWNvbnN0IGNoYXIgKnNyY3AsIAorCQlOQ1VSU0VTX0JPT0wgdGljX2Zvcm1hdCwgCisJCWludAludW1iZXJzKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9jb21wX3BhcnNlLmMgKi8KKworI3VuZGVmIF9uY19jaGVja190ZXJtdHlwZTIKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSgKKwkJVEVSTVRZUEUgKnAxLCAKKwkJTkNVUlNFU19CT09MIHAyKTsKKyN1bmRlZiBfbmNfY2hlY2tfdGVybXR5cGUKK3ZvaWQJKCpfbmNfY2hlY2tfdGVybXR5cGUpKAorCQlURVJNVFlQRSAqcDEpOworCisjdW5kZWYgX25jX2VudHJ5X21hdGNoCitOQ1VSU0VTX0JPT0wgX25jX2VudHJ5X21hdGNoKAorCQljaGFyCSpuMSwgCisJCWNoYXIJKm4yKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeV9zb3VyY2UKK3ZvaWQJX25jX3JlYWRfZW50cnlfc291cmNlKAorCQlGSUxFCSpmcCwgCisJCWNoYXIJKmJ1ZiwgCisJCWludAlsaXRlcmFsLCAKKwkJTkNVUlNFU19CT09MIHNpbGVudCwgCisJCU5DVVJTRVNfQk9PTCAoKmhvb2spKAorCQlFTlRSWQkqcDEpKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3Jlc29sdmVfdXNlczIKK2ludAlfbmNfcmVzb2x2ZV91c2VzMigKKwkJTkNVUlNFU19CT09MIGZ1bGxyZXNvbHZlLCAKKwkJTkNVUlNFU19CT09MIGxpdGVyYWwpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19yZXNvbHZlX3VzZXMKK2ludAlfbmNfcmVzb2x2ZV91c2VzKAorCQlOQ1VSU0VTX0JPT0wgZnVsbHJlc29sdmUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9jb21wX3NjYW4uYyAqLworCisjdW5kZWYgX25jX3N5bnRheAoraW50CV9uY19zeW50YXg7CisjdW5kZWYgX25jX3N0cmljdF9ic2QKK2ludAlfbmNfc3RyaWN0X2JzZDsKKyN1bmRlZiBfbmNfY3Vycl9maWxlX3BvcworbG9uZwlfbmNfY3Vycl9maWxlX3BvczsKKyN1bmRlZiBfbmNfY29tbWVudF9zdGFydAorbG9uZwlfbmNfY29tbWVudF9zdGFydDsKKyN1bmRlZiBfbmNfY29tbWVudF9lbmQKK2xvbmcJX25jX2NvbW1lbnRfZW5kOworI3VuZGVmIF9uY19zdGFydF9saW5lCitsb25nCV9uY19zdGFydF9saW5lOworI3VuZGVmIF9uY19jdXJyX3Rva2VuCitzdHJ1Y3QgdG9rZW4gX25jX2N1cnJfdG9rZW47CisjdW5kZWYgX25jX2Rpc2FibGVfcGVyaW9kCitOQ1VSU0VTX0JPT0wgX25jX2Rpc2FibGVfcGVyaW9kOworCisjdW5kZWYgX25jX3Jlc2V0X2lucHV0Cit2b2lkCV9uY19yZXNldF9pbnB1dCgKKwkJRklMRQkqZnAsIAorCQljaGFyCSpidWYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZ2V0X3Rva2VuCitpbnQJX25jX2dldF90b2tlbigKKwkJTkNVUlNFU19CT09MIHNpbGVudCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RyYW5zX3N0cmluZworaW50CV9uY190cmFuc19zdHJpbmcoCisJCWNoYXIJKnB0ciwgCisJCWNoYXIJKmxhc3QpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19wdXNoX3Rva2VuCit2b2lkCV9uY19wdXNoX3Rva2VuKAorCQlpbnQJdG9rY2xhc3MpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcGFuaWNfbW9kZQordm9pZAlfbmNfcGFuaWNfbW9kZSgKKwkJY2hhcgljaCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9wYXJzZV9lbnRyeS5jICovCisKKyN1bmRlZiBfbmNfcGFyc2VfZW50cnkKK2ludAlfbmNfcGFyc2VfZW50cnkoCisJCXN0cnVjdCBlbnRyeSAqZW50cnlwLCAKKwkJaW50CWxpdGVyYWwsIAorCQlOQ1VSU0VTX0JPT0wgc2lsZW50KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfY2FwY21wCitpbnQJX25jX2NhcGNtcCgKKwkJY29uc3QgY2hhciAqcywgCisJCWNvbnN0IGNoYXIgKnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgZnJvbVszXTsKKyAgICBjb25zdCBjaGFyIHRvWzZdOworfSBhc3NvYzsKKworLyogLi90aW5mby93cml0ZV9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19zZXRfd3JpdGVkaXIKK3ZvaWQJX25jX3NldF93cml0ZWRpcigKKwkJY29uc3QgY2hhciAqZGlyKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3dyaXRlX2VudHJ5Cit2b2lkCV9uY193cml0ZV9lbnRyeSgKKwkJVEVSTVRZUEUgKmNvbnN0IHRwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3RpY193cml0dGVuCitpbnQJX25jX3RpY193cml0dGVuKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbGxpYi1sdGluZm8gYi9uY3Vyc2VzL2xsaWItbHRpbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMzAzNmIKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL2xsaWItbHRpbmZvCkBAIC0wLDAgKzEsMTUzMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWNjZXNzLmMgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19yb290bmFtZQorY2hhcgkqX25jX3Jvb3RuYW1lKAorCQljaGFyCSpwYXRoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pc19hYnNfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19hYnNfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3BhdGhsYXN0Cit1bnNpZ25lZCBfbmNfcGF0aGxhc3QoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX2Jhc2VuYW1lCitjaGFyCSpfbmNfYmFzZW5hbWUoCisJCWNoYXIJKnBhdGgpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2FjY2VzcworaW50CV9uY19hY2Nlc3MoCisJCWNvbnN0IGNoYXIgKnBhdGgsIAorCQlpbnQJbW9kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2lzX2Rpcl9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2Rpcl9wYXRoKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaXNfZmlsZV9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2ZpbGVfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX2Vudl9hY2Nlc3MKK2ludAlfbmNfZW52X2FjY2Vzcyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vYWRkX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY19hZGRfdG9fdHJ5CitpbnQJX25jX2FkZF90b190cnkoCisJCVRSSUVTCSoqdHJlZSwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9hbGxvY190dHlwZS5jICovCisKKyN1bmRlZiBfbmNfYWxpZ25fdGVybXR5cGUKK3ZvaWQJX25jX2FsaWduX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqdG8sIAorCQlURVJNVFlQRSAqZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3B5X3Rlcm10eXBlCit2b2lkCV9uY19jb3B5X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqZHN0LCAKKwkJY29uc3QgVEVSTVRZUEUgKnNyYykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9jb2Rlcy5jICovCisKKyN1bmRlZiBib29sY29kZXMKK2NvbnN0IGNoYXIgKmNvbnN0IGJvb2xjb2Rlc1tdID0gezB9OworI3VuZGVmIG51bWNvZGVzCitjb25zdCBjaGFyICpjb25zdCBudW1jb2Rlc1tdID0gezB9OworI3VuZGVmIHN0cmNvZGVzCitjb25zdCBjaGFyICpjb25zdCBzdHJjb2Rlc1tdID0gezB9OworCisvKiAuL2NvbXBfY2FwdGFiLmMgKi8KKworI2luY2x1ZGUgPGhhc2hzaXplLmg+CisKKyN1bmRlZiBfbmNfZ2V0X3RhYmxlCitjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqX25jX2dldF90YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF90YWJsZQorY29uc3QgSGFzaFZhbHVlICpfbmNfZ2V0X2hhc2hfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hWYWx1ZSAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQorY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF9pbmZvCitjb25zdCBIYXNoRGF0YSAqX25jX2dldF9oYXNoX2luZm8oCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hEYXRhICoqKTApOyB9CisKKy8qIC4vdGluZm8vY29tcF9lcnJvci5jICovCisKKyN1bmRlZiBfbmNfc3VwcHJlc3Nfd2FybmluZ3MKK05DVVJTRVNfQk9PTCBfbmNfc3VwcHJlc3Nfd2FybmluZ3M7CisjdW5kZWYgX25jX2N1cnJfbGluZQoraW50CV9uY19jdXJyX2xpbmU7CisjdW5kZWYgX25jX2N1cnJfY29sCitpbnQJX25jX2N1cnJfY29sOworCisjdW5kZWYgX25jX2dldF9zb3VyY2UKK2NvbnN0IGNoYXIgKl9uY19nZXRfc291cmNlKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3NldF9zb3VyY2UKK3ZvaWQJX25jX3NldF9zb3VyY2UoCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0X3R5cGUKK3ZvaWQJX25jX3NldF90eXBlKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF90eXBlCit2b2lkCV9uY19nZXRfdHlwZSgKKwkJY2hhcgkqbmFtZSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY193YXJuaW5nCit2b2lkCV9uY193YXJuaW5nKAorCQljb25zdCBjaGFyICpjb25zdCBmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZXJyX2Fib3J0Cit2b2lkCV9uY19lcnJfYWJvcnQoCisJCWNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zeXNlcnJfYWJvcnQKK3ZvaWQJX25jX3N5c2Vycl9hYm9ydCgKKwkJY29uc3QgY2hhciAqY29uc3QgZm10LCAKKwkJLi4uKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2NvbXBfaGFzaC5jICovCisKKyN1bmRlZiBfbmNfZmluZF9lbnRyeQorc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQljb25zdCBIYXNoVmFsdWUgKmhhc2hfdGFibGUpCisJCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KKworI3VuZGVmIF9uY19maW5kX3R5cGVfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF90eXBlX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQlpbnQJdHlwZSwgCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKy8qIC4vdGluZm8vZGJfaXRlcmF0b3IuYyAqLworCisjaW5jbHVkZSA8dGltZS5oPgorCisjdW5kZWYgX25jX3RpY19kaXIKK2NvbnN0IGNoYXIgKl9uY190aWNfZGlyKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19rZWVwX3RpY19kaXIKK3ZvaWQJX25jX2tlZXBfdGljX2RpcigKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19sYXN0X2RiCit2b2lkCV9uY19sYXN0X2RiKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbmV4dF9kYgorY29uc3QgY2hhciAqX25jX25leHRfZGIoCisJCURCRElSUwkqc3RhdGUsIAorCQlpbnQJKm9mZnNldCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmlyc3RfZGIKK3ZvaWQJX25jX2ZpcnN0X2RiKAorCQlEQkRJUlMJKnN0YXRlLCAKKwkJaW50CSpvZmZzZXQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vZG9hbGxvYy5jICovCisKKyN1bmRlZiBfbmNfZG9hbGxvYwordm9pZAkqX25jX2RvYWxsb2MoCisJCXZvaWQJKm9sZHAsIAorCQlzaXplX3QJYW1vdW50KQorCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KKworLyogLi90aW5mby9lbnRyaWVzLmMgKi8KKworI3VuZGVmIF9uY19oZWFkCitFTlRSWQkqX25jX2hlYWQ7CisjdW5kZWYgX25jX3RhaWwKK0VOVFJZCSpfbmNfdGFpbDsKKworI3VuZGVmIF9uY19mcmVlX2VudHJ5Cit2b2lkCV9uY19mcmVlX2VudHJ5KAorCQlFTlRSWQkqaGVhZHAsIAorCQlURVJNVFlQRSAqdHRlcm0pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZnJlZV9lbnRyaWVzCit2b2lkCV9uY19mcmVlX2VudHJpZXMoCisJCUVOVFJZCSpoZWFkcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19kZWxpbmtfZW50cnkKK0VOVFJZCSpfbmNfZGVsaW5rX2VudHJ5KAorCQlFTlRSWQkqaGVhZHAsIAorCQlURVJNVFlQRSAqdHRlcm0pCisJCXsgcmV0dXJuKCooRU5UUlkgKiopMCk7IH0KKworI3VuZGVmIF9uY19sZWFrc190aW5mbwordm9pZAlfbmNfbGVha3NfdGluZm8odm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9mYWxsYmFjay5jICovCisKKyN1bmRlZiBfbmNfZmFsbGJhY2sKK2NvbnN0IFRFUk1UWVBFICpfbmNfZmFsbGJhY2soCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooY29uc3QgVEVSTVRZUEUgKiopMCk7IH0KKworLyogLi90aW5mby9mcmVlX3R0eXBlLmMgKi8KKworI3VuZGVmIF9uY19mcmVlX3Rlcm10eXBlCit2b2lkCV9uY19mcmVlX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3VzZXJfZGVmaW5hYmxlCitOQ1VSU0VTX0JPT0wgX25jX3VzZXJfZGVmaW5hYmxlOworCisjdW5kZWYgdXNlX2V4dGVuZGVkX25hbWVzCitpbnQJdXNlX2V4dGVuZGVkX25hbWVzKAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2dldGVudl9udW0uYyAqLworCisjdW5kZWYgX25jX2dldGVudl9udW0KK2ludAlfbmNfZ2V0ZW52X251bSgKKwkJY29uc3QgY2hhciAqbmFtZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldGVudl9udW0KK3ZvaWQJX25jX3NldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlpbnQJdmFsdWUpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vaG9tZV90ZXJtaW5mby5jICovCisKKyN1bmRlZiBfbmNfaG9tZV90ZXJtaW5mbworY2hhcgkqX25jX2hvbWVfdGVybWluZm8odm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vaW5pdF9rZXl0cnkuYyAqLworCisjaWYgMAorCisjaW5jbHVkZSA8aW5pdF9rZXl0cnkuaD4KKworI3VuZGVmIF9uY190aW5mb19ma2V5cworY29uc3Qgc3RydWN0IHRpbmZvX2ZrZXlzIF9uY190aW5mb19ma2V5c1tdID0gezB9OworCisjZW5kaWYKKworI3VuZGVmIF9uY19pbml0X2tleXRyeQordm9pZAlfbmNfaW5pdF9rZXl0cnkoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vbGliX2Fjcy5jICovCisKKyN1bmRlZiBhY3NfbWFwCitjaHR5cGUJYWNzX21hcFsxMjhdOworCisjdW5kZWYgX25jX2luaXRfYWNzX3NwCit2b2lkCV9uY19pbml0X2Fjc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19pbml0X2Fjcwordm9pZAlfbmNfaW5pdF9hY3Modm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9saWJfYmF1ZHJhdGUuYyAqLworCisjaW5jbHVkZSA8dGVybWNhcC5oPgorCitzdHJ1Y3Qgc3BlZWQgeworICAgIHNob3J0IHM7IAorICAgIGludCBzcDsgCit9OworCisjdW5kZWYgX25jX2JhdWRyYXRlCitpbnQJX25jX2JhdWRyYXRlKAorCQlpbnQJT1NwZWVkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfb3NwZWVkCitpbnQJX25jX29zcGVlZCgKKwkJaW50CUJhdWRSYXRlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZV9zcAoraW50CWJhdWRyYXRlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZQoraW50CWJhdWRyYXRlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfY3VyX3Rlcm0uYyAqLworCisjdW5kZWYgY3VyX3Rlcm0KK1RFUk1JTkFMICpjdXJfdGVybTsKKworI3VuZGVmIHNldF9jdXJ0ZXJtX3NwCitURVJNSU5BTCAqc2V0X2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKworI3VuZGVmIHNldF9jdXJ0ZXJtCitURVJNSU5BTCAqc2V0X2N1cnRlcm0oCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgZGVsX2N1cnRlcm1fc3AKK2ludAlkZWxfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsX2N1cnRlcm0KK2ludAlkZWxfY3VydGVybSgKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2RhdGEuYyAqLworCisjdW5kZWYgc3Rkc2NyCitXSU5ET1cJKnN0ZHNjcjsKKyN1bmRlZiBjdXJzY3IKK1dJTkRPVwkqY3Vyc2NyOworI3VuZGVmIG5ld3NjcgorV0lORE9XCSpuZXdzY3I7CisjdW5kZWYgX25jX3NjcmVlbl9jaGFpbgorU0NSRUVOCSpfbmNfc2NyZWVuX2NoYWluOworI3VuZGVmIFNQCitTQ1JFRU4JKlNQOworI3VuZGVmIF9uY19nbG9iYWxzCitOQ1VSU0VTX0dMT0JBTFMgX25jX2dsb2JhbHM7CisjdW5kZWYgX25jX3ByZXNjcmVlbgorTkNVUlNFU19QUkVTQ1JFRU4gX25jX3ByZXNjcmVlbjsKKworI3VuZGVmIF9uY19zY3JlZW5fb2YKK1NDUkVFTgkqX25jX3NjcmVlbl9vZigKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2hhc19jYXAuYyAqLworCisjdW5kZWYgaGFzX2ljX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2ljX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWMKK05DVVJTRVNfQk9PTCBoYXNfaWModm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2lsX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2lsX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWwKK05DVVJTRVNfQk9PTCBoYXNfaWwodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9rZXJuZWwuYyAqLworCisjdW5kZWYgZXJhc2VjaGFyX3NwCitjaGFyCWVyYXNlY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGVyYXNlY2hhcgorY2hhcgllcmFzZWNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGtpbGxjaGFyX3NwCitjaGFyCWtpbGxjaGFyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQorCisjdW5kZWYga2lsbGNoYXIKK2NoYXIJa2lsbGNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wX3NwCitpbnQJZmx1c2hpbnBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wCitpbnQJZmx1c2hpbnAodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2xpYl9rZXluYW1lLmMgKi8KKworc3RydWN0IGtuIHsgc2hvcnQgb2Zmc2V0OyBpbnQgY29kZTsgfTsKKworI3VuZGVmIGtleW5hbWVfc3AKK2NvbnN0IGNoYXIgKmtleW5hbWVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXluYW1lCitjb25zdCBjaGFyICprZXluYW1lKAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2xvbmduYW1lLmMgKi8KKworI3VuZGVmIGxvbmduYW1lX3NwCitjaGFyCSpsb25nbmFtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBsb25nbmFtZQorY2hhcgkqbG9uZ25hbWUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX25hcG1zLmMgKi8KKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyN1bmRlZiBuYXBtc19zcAoraW50CW5hcG1zX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuYXBtcworaW50CW5hcG1zKAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfb3B0aW9ucy5jICovCisKKyN1bmRlZiBpZGxvaworaW50CWlkbG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpZGNvawordm9pZAlpZGNvaygKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGhhbGZkZWxheV9zcAoraW50CWhhbGZkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYWxmZGVsYXkKK2ludAloYWxmZGVsYXkoCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2RlbGF5CitpbnQJbm9kZWxheSgKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm90aW1lb3V0CitpbnQJbm90aW1lb3V0KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3dGltZW91dAordm9pZAl3dGltZW91dCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJZGVsYXkpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBrZXlwYWQKK2ludAlrZXlwYWQoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1ldGEKK2ludAltZXRhKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3Vyc19zZXQKK2ludAljdXJzX3NldCgKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0eXBlYWhlYWQKK2ludAl0eXBlYWhlYWQoCisJCWludAlmZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleQoraW50CWhhc19rZXkoCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfa2V5cGFkCitpbnQJX25jX2tleXBhZCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Jhdy5jICovCisKKyN1bmRlZiByYXdfc3AKK2ludAlyYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJhdworaW50CXJhdyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjYnJlYWtfc3AKK2ludAljYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNicmVhaworaW50CWNicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBxaWZsdXNoX3NwCit2b2lkCXFpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBxaWZsdXNoCit2b2lkCXFpZmx1c2godm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5vcmF3X3NwCitpbnQJbm9yYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vcmF3CitpbnQJbm9yYXcodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWtfc3AKK2ludAlub2NicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWsKK2ludAlub2NicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub3FpZmx1c2hfc3AKK3ZvaWQJbm9xaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9xaWZsdXNoCit2b2lkCW5vcWlmbHVzaCh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgaW50cmZsdXNoX3NwCitpbnQJaW50cmZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW50cmZsdXNoCitpbnQJaW50cmZsdXNoKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3NldHVwLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisKKyN1bmRlZiB0dHl0eXBlCitjaGFyCXR0eXR5cGVbMjU2XTsKKyN1bmRlZiBMSU5FUworaW50CUxJTkVTOworI3VuZGVmIENPTFMKK2ludAlDT0xTOworI3VuZGVmIFRBQlNJWkUKK2ludAlUQUJTSVpFOworCisjdW5kZWYgc2V0X3RhYnNpemVfc3AKK2ludAlzZXRfdGFic2l6ZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemUKK2ludAlzZXRfdGFic2l6ZSgKKwkJaW50CXZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaGFuZGxlX3NpZ3dpbmNoCitpbnQJX25jX2hhbmRsZV9zaWd3aW5jaCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHVzZV9lbnYKK3ZvaWQJdXNlX2VudigKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCit2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKKwkJU0NSRUVOCSpzcCwgCisJCWludAkqbGluZXAsIAorCQlpbnQJKmNvbHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdXBkYXRlX3NjcmVlbnNpemUKK3ZvaWQJX25jX3VwZGF0ZV9zY3JlZW5zaXplKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldHVwX3RpbmZvCitpbnQJX25jX3NldHVwX3RpbmZvKAorCQljb25zdCBjaGFyICpjb25zdCB0biwgCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RpbmZvX2NtZGNoCit2b2lkCV9uY190aW5mb19jbWRjaCgKKwkJVEVSTUlOQUwgKnRlcm1wLCAKKwkJaW50CXByb3RvKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9sb2NhbGUKK2NoYXIJKl9uY19nZXRfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3VuaWNvZGVfbG9jYWxlCitpbnQJX25jX3VuaWNvZGVfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NhbGVfYnJlYWtzX2FjcworaW50CV9uY19sb2NhbGVfYnJlYWtzX2FjcygKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0dXB0ZXJtCitpbnQJX25jX3NldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0LCAKKwkJaW50CXJldXNlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIHNldHVwdGVybQoraW50CXNldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rlcm1jYXAuYyAqLworCisjdW5kZWYgVVAKK2NoYXIJKlVQOworI3VuZGVmIEJDCitjaGFyCSpCQzsKKworI3VuZGVmIHRnZXRlbnRfc3AKK2ludAl0Z2V0ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2hhcgkqYnVmcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI2lmIDAKKworI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+CisKKyNlbmRpZgorCisjdW5kZWYgdGdldGVudAoraW50CXRnZXRlbnQoCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0ZmxhZ19zcAoraW50CXRnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRmbGFnCitpbnQJdGdldGZsYWcoCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtCitpbnQJdGdldG51bSgKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRzdHJfc3AKK2NoYXIJKnRnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCwgCisJCWNoYXIJKiphcmVhKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRnZXRzdHIKK2NoYXIJKnRnZXRzdHIoCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCisKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGVybW5hbWUKK2NoYXIJKnRlcm1uYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90Z290by5jICovCisKKyN1bmRlZiB0Z290bworY2hhcgkqdGdvdG8oCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAl4LCAKKwkJaW50CXkpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90aS5jICovCisKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0ZmxhZworaW50CXRpZ2V0ZmxhZygKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bV9zcAoraW50CXRpZ2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bQoraW50CXRpZ2V0bnVtKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0c3RyX3NwCitjaGFyCSp0aWdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0aWdldHN0cgorY2hhcgkqdGlnZXRzdHIoCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KKworI3VuZGVmIF9uY190cGFybV9lcnIKK2ludAlfbmNfdHBhcm1fZXJyOworCisjdW5kZWYgX25jX3RwYXJtX2FuYWx5emUKK2ludAlfbmNfdHBhcm1fYW5hbHl6ZSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY2hhcgkqcF9pc19zWzldLCAKKwkJaW50CSpfbmNfcG9wY291bnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRwYXJtCitjaGFyCSp0cGFybSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90cHV0cy5jICovCisKKyN1bmRlZiBQQworY2hhcglQQzsKKyN1bmRlZiBvc3BlZWQKK3Nob3J0CW9zcGVlZDsKKyN1bmRlZiBfbmNfbnVsbHNfc2VudAoraW50CV9uY19udWxsc19zZW50OworCisjdW5kZWYgX25jX3NldF9ub19wYWRkaW5nCit2b2lkCV9uY19zZXRfbm9fcGFkZGluZygKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsYXlfb3V0cHV0CitpbnQJZGVsYXlfb3V0cHV0KAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZmx1c2gKK3ZvaWQJX25jX2ZsdXNoKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19vdXRjaAoraW50CV9uY19vdXRjaCgKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwdXRwCitpbnQJcHV0cCgKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHMKK2ludAl0cHV0cygKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CWFmZmNudCwgCisJCWludAkoKm91dGMpKAorCQlpbnQJcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlLmMgKi8KKworI3VuZGVmIF9uY190cmFjaW5nCit1bnNpZ25lZCBfbmNfdHJhY2luZzsKKyN1bmRlZiBfbmNfdHB1dHNfdHJhY2UKK2NvbnN0IGNoYXIgKl9uY190cHV0c190cmFjZSA9IHswfTsKKyN1bmRlZiBfbmNfb3V0Y2hhcnMKK2xvbmcJX25jX291dGNoYXJzOworCisjdW5kZWYgdHJhY2UKK3ZvaWQJdHJhY2UoCisJCWNvbnN0IHVuc2lnbmVkIGludCB0cmFjZWxldmVsKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX3RyYWNlZgordm9pZAlfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9ib29sCitOQ1VSU0VTX0JPT0wgX25jX3JldHJhY2VfYm9vbCgKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NoYXIKK2NoYXIJX25jX3JldHJhY2VfY2hhcigKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pbnQKK2ludAlfbmNfcmV0cmFjZV9pbnQoCisJCWludAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV91bnNpZ25lZAordW5zaWduZWQgX25jX3JldHJhY2VfdW5zaWduZWQoCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfcHRyCitjaGFyCSpfbmNfcmV0cmFjZV9wdHIoCisJCWNoYXIJKmNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY3B0cgorY29uc3QgY2hhciAqX25jX3JldHJhY2VfY3B0cigKKwkJY29uc3QgY2hhciAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9jdm9pZF9wdHIKK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgordm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCisJCXZvaWQJKmNvZGUpCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2Vfc3AKK1NDUkVFTgkqX25jX3JldHJhY2Vfc3AoCisJCVNDUkVFTgkqY29kZSkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3dpbgorV0lORE9XCSpfbmNfcmV0cmFjZV93aW4oCisJCVdJTkRPVwkqY29kZSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi90cmFjZS9saWJfdHJhY2VhdHIuYyAqLworCisjdW5kZWYgX3RyYWNlYXR0cjIKK2NoYXIJKl90cmFjZWF0dHIyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlYXR0cgorY2hhcgkqX3RyYWNlYXR0cigKKwkJYXR0cl90CW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfaW50X2F0dHJfdAoraW50CV9uY19yZXRyYWNlX2ludF9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9hdHRyX3QKK2F0dHJfdAlfbmNfcmV0cmFjZV9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKKyN1bmRlZiBfbmNfYWx0Y2hhcnNldF9uYW1lCitjb25zdCBjaGFyICpfbmNfYWx0Y2hhcnNldF9uYW1lKAorCQlhdHRyX3QJYXR0ciwgCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfdHJhY2VjaHR5cGUyCitjaGFyCSpfdHJhY2VjaHR5cGUyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNodHlwZQorY2hhcgkqX3RyYWNlY2h0eXBlKAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY2h0eXBlCitjaHR5cGUJX25jX3JldHJhY2VfY2h0eXBlKAorCQljaHR5cGUJY29kZSkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWJpdHMuYyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgaW50IHZhbDsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07Cit9IEJJVE5BTUVTOworCisjdW5kZWYgX25jX3RyYWNlX3R0eW1vZGUKK2NoYXIJKl9uY190cmFjZV90dHltb2RlKAorCQlzdHJ1Y3QgdGVybWlvcyAqdHR5KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY190cmFjZWJpdHMKK2NoYXIJKl9uY190cmFjZWJpdHModm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlY2hyLmMgKi8KKworI3VuZGVmIF9uY190cmFjZWNoYXIKK2NoYXIJKl9uY190cmFjZWNoYXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2hhcgorY2hhcgkqX3RyYWNlY2hhcigKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9saWJfdHR5ZmxhZ3MuYyAqLworCisjdW5kZWYgX25jX2dldF90dHlfbW9kZV9zcAoraW50CV9uY19nZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X3R0eV9tb2RlCitpbnQJX25jX2dldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90dHlfbW9kZV9zcAoraW50CV9uY19zZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0X3R0eV9tb2RlCitpbnQJX25jX3NldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGVfc3AKK2ludAlkZWZfc2hlbGxfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGUKK2ludAlkZWZfc2hlbGxfbW9kZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWZfcHJvZ19tb2RlX3NwCitpbnQJZGVmX3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3Byb2dfbW9kZQoraW50CWRlZl9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlX3NwCitpbnQJcmVzZXRfcHJvZ19tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldF9wcm9nX21vZGUKK2ludAlyZXNldF9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfc2hlbGxfbW9kZV9zcAoraW50CXJlc2V0X3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3NoZWxsX21vZGUKK2ludAlyZXNldF9zaGVsbF9tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNhdmV0dHlfc3AKK2ludAlzYXZldHR5X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzYXZldHR5CitpbnQJc2F2ZXR0eSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldHR5X3NwCitpbnQJcmVzZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXR0eQoraW50CXJlc2V0dHkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3R0eS9saWJfdHdhaXQuYyAqLworCisjdW5kZWYgX25jX3RpbWVkX3dhaXQKK2ludAlfbmNfdGltZWRfd2FpdCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltb2RlLCAKKwkJaW50CW1pbGxpc2Vjb25kcywgCisJCWludAkqdGltZWxlZnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9uYW1lX21hdGNoLmMgKi8KKworI3VuZGVmIF9uY19maXJzdF9uYW1lCitjaGFyCSpfbmNfZmlyc3RfbmFtZSgKKwkJY29uc3QgY2hhciAqY29uc3Qgc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX25hbWVfbWF0Y2gKK2ludAlfbmNfbmFtZV9tYXRjaCgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZWxzdCwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIAorCQljb25zdCBjaGFyICpjb25zdCBkZWxpbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL25hbWVzLmMgKi8KKworI3VuZGVmIGJvb2xuYW1lcworY29uc3QgY2hhciAqY29uc3QgYm9vbG5hbWVzW10gPSB7MH07CisjdW5kZWYgYm9vbGZuYW1lcworY29uc3QgY2hhciAqY29uc3QgYm9vbGZuYW1lc1tdID0gezB9OworI3VuZGVmIG51bW5hbWVzCitjb25zdCBjaGFyICpjb25zdCBudW1uYW1lc1tdID0gezB9OworI3VuZGVmIG51bWZuYW1lcworY29uc3QgY2hhciAqY29uc3QgbnVtZm5hbWVzW10gPSB7MH07CisjdW5kZWYgc3RybmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0IHN0cm5hbWVzW10gPSB7MH07CisjdW5kZWYgc3RyZm5hbWVzCitjb25zdCBjaGFyICpjb25zdCBzdHJmbmFtZXNbXSA9IHswfTsKKworLyogLi90aW5mby9vYnNvbGV0ZS5jICovCisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcl9zcAordm9pZAlfbmNfc2V0X2J1ZmZlcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKm9mcCwgCisJCWludAlidWZmZXJlZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXRfYnVmZmVyCit2b2lkCV9uY19zZXRfYnVmZmVyKAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vcmVhZF9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19pbml0X3Rlcm10eXBlCit2b2lkCV9uY19pbml0X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtdHlwZQoraW50CV9uY19yZWFkX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyLCAKKwkJY2hhcgkqYnVmZmVyLCAKKwkJaW50CWxpbWl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9maWxlX2VudHJ5CitpbnQJX25jX3JlYWRfZmlsZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqcHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeQoraW50CV9uY19yZWFkX2VudHJ5KAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lLCAKKwkJY2hhcgkqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9zdHJpbmdzLmMgKi8KKworI3VuZGVmIF9uY19zdHJfaW5pdAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfaW5pdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNoYXIJKnNyYywgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfbnVsbAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfbnVsbCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfY29weQorc3RyaW5nX2Rlc2MgKl9uY19zdHJfY29weSgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXN0cmluZ19kZXNjICpzcmMpCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYWZlX3N0cmNhdAorTkNVUlNFU19CT09MIF9uY19zYWZlX3N0cmNhdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNvbnN0IGNoYXIgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3NhZmVfc3RyY3B5CitOQ1VSU0VTX0JPT0wgX25jX3NhZmVfc3RyY3B5KAorCQlzdHJpbmdfZGVzYyAqZHN0LCAKKwkJY29uc3QgY2hhciAqc3JjKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vdHJhY2UvdHJhY2VfYnVmLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV9idWYKK2NoYXIJKl9uY190cmFjZV9idWYoCisJCWludAlidWZudW0sIAorCQlzaXplX3QJd2FudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2VfYnVmY2F0CitjaGFyCSpfbmNfdHJhY2VfYnVmY2F0KAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV90cmllcwordm9pZAlfbmNfdHJhY2VfdHJpZXMoCisJCVRSSUVTCSp0cmVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvdHJpZXMuYyAqLworCisjdW5kZWYgX25jX2V4cGFuZF90cnkKK2NoYXIJKl9uY19leHBhbmRfdHJ5KAorCQlUUklFUwkqdHJlZSwgCisJCXVuc2lnbmVkIGNvZGUsIAorCQlpbnQJKmNvdW50LCAKKwkJc2l6ZV90CWxlbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX2tleQoraW50CV9uY19yZW1vdmVfa2V5KAorCQlUUklFUwkqKnRyZWUsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX3N0cmluZworaW50CV9uY19yZW1vdmVfc3RyaW5nKAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby90cmltX3NncjAuYyAqLworCisjdW5kZWYgX25jX3RyaW1fc2dyMAorY2hhcgkqX25jX3RyaW1fc2dyMCgKKwkJVEVSTVRZUEUgKnRwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi91bmN0cmwuYyAqLworCisjdW5kZWYgdW5jdHJsX3NwCitjb25zdCBjaGFyICp1bmN0cmxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgdW5jdHJsCitjb25zdCBjaGFyICp1bmN0cmwoCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KKworI3VuZGVmIF9uY192aXNidWYyCitjb25zdCBjaGFyICpfbmNfdmlzYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNoYXIgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzYnVmCitjb25zdCBjaGFyICpfbmNfdmlzYnVmKAorCQljb25zdCBjaGFyICpidWYpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2J1Zm4KK2NvbnN0IGNoYXIgKl9uY192aXNidWZuKAorCQljb25zdCBjaGFyICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXNjYnVmMgorY29uc3QgY2hhciAqX25jX3Zpc2NidWYyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2h0eXBlICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXNjYnVmCitjb25zdCBjaGFyICpfbmNfdmlzY2J1ZigKKwkJY29uc3QgY2h0eXBlICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2RlZmluZV9rZXkuYyAqLworCisjdW5kZWYgZGVmaW5lX2tleV9zcAoraW50CWRlZmluZV9rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmaW5lX2tleQoraW50CWRlZmluZV9rZXkoCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vaGFzaGVkX2RiLmMgKi8KKworI3VuZGVmIF9uY19oYXNoZWRfZGIKK3ZvaWQJX25jX2hhc2hlZF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2Uva2V5X2RlZmluZWQuYyAqLworCisjdW5kZWYga2V5X2RlZmluZWRfc3AKK2ludAlrZXlfZGVmaW5lZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYga2V5X2RlZmluZWQKK2ludAlrZXlfZGVmaW5lZCgKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9rZXlib3VuZC5jICovCisKKyN1bmRlZiBrZXlib3VuZF9zcAorY2hhcgkqa2V5Ym91bmRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29kZSwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXlib3VuZAorY2hhcgkqa2V5Ym91bmQoCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2tleW9rLmMgKi8KKworI3VuZGVmIGtleW9rX3NwCitpbnQJa2V5b2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBrZXlvaworaW50CWtleW9rKAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS92ZXJzaW9uLmMgKi8KKworI3VuZGVmIGN1cnNlc192ZXJzaW9uCitjb25zdCBjaGFyICpjdXJzZXNfdmVyc2lvbih2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbGxpYi1sdGluZm90IGIvbmN1cnNlcy9sbGliLWx0aW5mb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmMGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvbGxpYi1sdGluZm90CkBAIC0wLDAgKzEsMTYzNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMy0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMy1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWNjZXNzLmMgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19yb290bmFtZQorY2hhcgkqX25jX3Jvb3RuYW1lKAorCQljaGFyCSpwYXRoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pc19hYnNfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19hYnNfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3BhdGhsYXN0Cit1bnNpZ25lZCBfbmNfcGF0aGxhc3QoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX2Jhc2VuYW1lCitjaGFyCSpfbmNfYmFzZW5hbWUoCisJCWNoYXIJKnBhdGgpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2FjY2VzcworaW50CV9uY19hY2Nlc3MoCisJCWNvbnN0IGNoYXIgKnBhdGgsIAorCQlpbnQJbW9kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2lzX2Rpcl9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2Rpcl9wYXRoKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaXNfZmlsZV9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2ZpbGVfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX2Vudl9hY2Nlc3MKK2ludAlfbmNfZW52X2FjY2Vzcyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vYWRkX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY19hZGRfdG9fdHJ5CitpbnQJX25jX2FkZF90b190cnkoCisJCVRSSUVTCSoqdHJlZSwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9hbGxvY190dHlwZS5jICovCisKKyN1bmRlZiBfbmNfYWxpZ25fdGVybXR5cGUKK3ZvaWQJX25jX2FsaWduX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqdG8sIAorCQlURVJNVFlQRSAqZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3B5X3Rlcm10eXBlCit2b2lkCV9uY19jb3B5X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqZHN0LCAKKwkJY29uc3QgVEVSTVRZUEUgKnNyYykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9jb2Rlcy5jICovCisKKyN1bmRlZiBfbmNfYm9vbGNvZGVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX2Jvb2xjb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19udW1jb2RlcworY29uc3QgY2hhciAqY29uc3QgKl9uY19udW1jb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJjb2RlcworY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJjb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9jb21wX2NhcHRhYi5jICovCisKKyNpbmNsdWRlIDxoYXNoc2l6ZS5oPgorCisjdW5kZWYgX25jX2dldF90YWJsZQorY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKl9uY19nZXRfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfdGFibGUKK2NvbnN0IEhhc2hWYWx1ZSAqX25jX2dldF9oYXNoX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoVmFsdWUgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfYWxpYXNfdGFibGUKK2NvbnN0IHN0cnVjdCBhbGlhcyAqX25jX2dldF9hbGlhc190YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IGFsaWFzICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfaW5mbworY29uc3QgSGFzaERhdGEgKl9uY19nZXRfaGFzaF9pbmZvKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoRGF0YSAqKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfZXJyb3IuYyAqLworCisjdW5kZWYgX25jX3N1cHByZXNzX3dhcm5pbmdzCitOQ1VSU0VTX0JPT0wgX25jX3N1cHByZXNzX3dhcm5pbmdzOworI3VuZGVmIF9uY19jdXJyX2xpbmUKK2ludAlfbmNfY3Vycl9saW5lOworI3VuZGVmIF9uY19jdXJyX2NvbAoraW50CV9uY19jdXJyX2NvbDsKKworI3VuZGVmIF9uY19nZXRfc291cmNlCitjb25zdCBjaGFyICpfbmNfZ2V0X3NvdXJjZSh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfc291cmNlCit2b2lkCV9uY19zZXRfc291cmNlKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldF90eXBlCit2b2lkCV9uY19zZXRfdHlwZSgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfdHlwZQordm9pZAlfbmNfZ2V0X3R5cGUoCisJCWNoYXIJKm5hbWUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfd2FybmluZwordm9pZAlfbmNfd2FybmluZygKKwkJY29uc3QgY2hhciAqY29uc3QgZm10LCAKKwkJLi4uKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2Vycl9hYm9ydAordm9pZAlfbmNfZXJyX2Fib3J0KAorCQljb25zdCBjaGFyICpjb25zdCBmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc3lzZXJyX2Fib3J0Cit2b2lkCV9uY19zeXNlcnJfYWJvcnQoCisJCWNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9jb21wX2hhc2guYyAqLworCisjdW5kZWYgX25jX2ZpbmRfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY29uc3QgSGFzaFZhbHVlICpoYXNoX3RhYmxlKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmluZF90eXBlX2VudHJ5CitzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqX25jX2ZpbmRfdHlwZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CXR5cGUsIAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQorCisvKiAuL3RpbmZvL2RiX2l0ZXJhdG9yLmMgKi8KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI3VuZGVmIF9uY190aWNfZGlyCitjb25zdCBjaGFyICpfbmNfdGljX2RpcigKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfa2VlcF90aWNfZGlyCit2b2lkCV9uY19rZWVwX3RpY19kaXIoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbGFzdF9kYgordm9pZAlfbmNfbGFzdF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX25leHRfZGIKK2NvbnN0IGNoYXIgKl9uY19uZXh0X2RiKAorCQlEQkRJUlMJKnN0YXRlLCAKKwkJaW50CSpvZmZzZXQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2ZpcnN0X2RiCit2b2lkCV9uY19maXJzdF9kYigKKwkJREJESVJTCSpzdGF0ZSwgCisJCWludAkqb2Zmc2V0KQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2RvYWxsb2MuYyAqLworCisjdW5kZWYgX25jX2RvYWxsb2MKK3ZvaWQJKl9uY19kb2FsbG9jKAorCQl2b2lkCSpvbGRwLCAKKwkJc2l6ZV90CWFtb3VudCkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vdGluZm8vZW50cmllcy5jICovCisKKyN1bmRlZiBfbmNfaGVhZAorRU5UUlkJKl9uY19oZWFkOworI3VuZGVmIF9uY190YWlsCitFTlRSWQkqX25jX3RhaWw7CisKKyN1bmRlZiBfbmNfZnJlZV9lbnRyeQordm9pZAlfbmNfZnJlZV9lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2ZyZWVfZW50cmllcwordm9pZAlfbmNfZnJlZV9lbnRyaWVzKAorCQlFTlRSWQkqaGVhZHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZGVsaW5rX2VudHJ5CitFTlRSWQkqX25jX2RlbGlua19lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IHJldHVybigqKEVOVFJZICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbGVha3NfdGluZm8KK3ZvaWQJX25jX2xlYWtzX3RpbmZvKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vZmFsbGJhY2suYyAqLworCisjdW5kZWYgX25jX2ZhbGxiYWNrCitjb25zdCBURVJNVFlQRSAqX25jX2ZhbGxiYWNrKAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGNvbnN0IFRFUk1UWVBFICoqKTApOyB9CisKKy8qIC4vdGluZm8vZnJlZV90dHlwZS5jICovCisKKyN1bmRlZiBfbmNfZnJlZV90ZXJtdHlwZQordm9pZAlfbmNfZnJlZV90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKnB0cikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY191c2VyX2RlZmluYWJsZQorTkNVUlNFU19CT09MIF9uY191c2VyX2RlZmluYWJsZTsKKworI3VuZGVmIHVzZV9leHRlbmRlZF9uYW1lcworaW50CXVzZV9leHRlbmRlZF9uYW1lcygKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9nZXRlbnZfbnVtLmMgKi8KKworI3VuZGVmIF9uY19nZXRlbnZfbnVtCitpbnQJX25jX2dldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRlbnZfbnVtCit2b2lkCV9uY19zZXRlbnZfbnVtKAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJaW50CXZhbHVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2hvbWVfdGVybWluZm8uYyAqLworCisjdW5kZWYgX25jX2hvbWVfdGVybWluZm8KK2NoYXIJKl9uY19ob21lX3Rlcm1pbmZvKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2luaXRfa2V5dHJ5LmMgKi8KKworI2lmIDAKKworI2luY2x1ZGUgPGluaXRfa2V5dHJ5Lmg+CisKKyN1bmRlZiBfbmNfdGluZm9fZmtleXMKK2NvbnN0IHN0cnVjdCB0aW5mb19ma2V5cyBfbmNfdGluZm9fZmtleXNbXSA9IHswfTsKKworI2VuZGlmCisKKyN1bmRlZiBfbmNfaW5pdF9rZXl0cnkKK3ZvaWQJX25jX2luaXRfa2V5dHJ5KAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2xpYl9hY3MuYyAqLworCisjdW5kZWYgX25jX2Fjc19tYXAKK2NodHlwZQkqX25jX2Fjc19tYXAodm9pZCkKKwkJeyByZXR1cm4oKihjaHR5cGUgKiopMCk7IH0KKworI3VuZGVmIF9uY19pbml0X2Fjc19zcAordm9pZAlfbmNfaW5pdF9hY3Nfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfaW5pdF9hY3MKK3ZvaWQJX25jX2luaXRfYWNzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vbGliX2JhdWRyYXRlLmMgKi8KKworI2luY2x1ZGUgPHRlcm1jYXAuaD4KKworc3RydWN0IHNwZWVkIHsKKyAgICBzaG9ydCBzOyAKKyAgICBpbnQgc3A7IAorfTsKKworI3VuZGVmIF9uY19iYXVkcmF0ZQoraW50CV9uY19iYXVkcmF0ZSgKKwkJaW50CU9TcGVlZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX29zcGVlZAoraW50CV9uY19vc3BlZWQoCisJCWludAlCYXVkUmF0ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYmF1ZHJhdGVfc3AKK2ludAliYXVkcmF0ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYmF1ZHJhdGUKK2ludAliYXVkcmF0ZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2N1cl90ZXJtLmMgKi8KKworI3VuZGVmIF9uY19nZXRfY3VyX3Rlcm1fc3AKK1RFUk1JTkFMICpfbmNfZ2V0X2N1cl90ZXJtX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2N1cl90ZXJtCitURVJNSU5BTCAqX25jX2dldF9jdXJfdGVybSh2b2lkKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBfbmNfY3VyX3Rlcm0KK1RFUk1JTkFMICpfbmNfY3VyX3Rlcm0odm9pZCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgc2V0X2N1cnRlcm1fc3AKK1RFUk1JTkFMICpzZXRfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgc2V0X2N1cnRlcm0KK1RFUk1JTkFMICpzZXRfY3VydGVybSgKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBkZWxfY3VydGVybV9zcAoraW50CWRlbF9jdXJ0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWxfY3VydGVybQoraW50CWRlbF9jdXJ0ZXJtKAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfZGF0YS5jICovCisKKyN1bmRlZiBfbmNfc3Rkc2NyCitXSU5ET1cJKl9uY19zdGRzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY19jdXJzY3IKK1dJTkRPVwkqX25jX2N1cnNjcih2b2lkKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX25ld3NjcgorV0lORE9XCSpfbmNfbmV3c2NyKHZvaWQpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc2NyZWVuX2NoYWluCitTQ1JFRU4JKl9uY19zY3JlZW5fY2hhaW47CisjdW5kZWYgU1AKK1NDUkVFTgkqU1A7CisjdW5kZWYgX25jX2dsb2JhbHMKK05DVVJTRVNfR0xPQkFMUyBfbmNfZ2xvYmFsczsKKyN1bmRlZiBfbmNfcHJlc2NyZWVuCitOQ1VSU0VTX1BSRVNDUkVFTiBfbmNfcHJlc2NyZWVuOworCisjdW5kZWYgX25jX3NjcmVlbl9vZgorU0NSRUVOCSpfbmNfc2NyZWVuX29mKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19pbml0X3B0aHJlYWRzCit2b2lkCV9uY19pbml0X3B0aHJlYWRzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbXV0ZXhfaW5pdAordm9pZAlfbmNfbXV0ZXhfaW5pdCgKKwkJcHRocmVhZF9tdXRleF90ICpvYmopCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbXV0ZXhfbG9jaworaW50CV9uY19tdXRleF9sb2NrKAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX211dGV4X3RyeWxvY2sKK2ludAlfbmNfbXV0ZXhfdHJ5bG9jaygKKwkJcHRocmVhZF9tdXRleF90ICpvYmopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19tdXRleF91bmxvY2sKK2ludAlfbmNfbXV0ZXhfdW5sb2NrKAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9oYXNfY2FwLmMgKi8KKworI3VuZGVmIGhhc19pY19zcAorTkNVUlNFU19CT09MIGhhc19pY19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2ljCitOQ1VSU0VTX0JPT0wgaGFzX2ljKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGhhc19pbF9zcAorTkNVUlNFU19CT09MIGhhc19pbF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2lsCitOQ1VSU0VTX0JPT0wgaGFzX2lsKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi90aW5mby9saWJfa2VybmVsLmMgKi8KKworI3VuZGVmIGVyYXNlY2hhcl9zcAorY2hhcgllcmFzZWNoYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBlcmFzZWNoYXIKK2NoYXIJZXJhc2VjaGFyKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBraWxsY2hhcl9zcAorY2hhcglraWxsY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGtpbGxjaGFyCitjaGFyCWtpbGxjaGFyKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBmbHVzaGlucF9zcAoraW50CWZsdXNoaW5wX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmbHVzaGlucAoraW50CWZsdXNoaW5wKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9saWJfa2V5bmFtZS5jICovCisKK3N0cnVjdCBrbiB7IHNob3J0IG9mZnNldDsgaW50IGNvZGU7IH07CisKKyN1bmRlZiBrZXluYW1lX3NwCitjb25zdCBjaGFyICprZXluYW1lX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYga2V5bmFtZQorY29uc3QgY2hhciAqa2V5bmFtZSgKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9sb25nbmFtZS5jICovCisKKyN1bmRlZiBsb25nbmFtZV9zcAorY2hhcgkqbG9uZ25hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgbG9uZ25hbWUKK2NoYXIJKmxvbmduYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9uYXBtcy5jICovCisKKyN1bmRlZiBuYXBtc19zcAoraW50CW5hcG1zX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuYXBtcworaW50CW5hcG1zKAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfb3B0aW9ucy5jICovCisKKyN1bmRlZiBpZGxvaworaW50CWlkbG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpZGNvawordm9pZAlpZGNvaygKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGhhbGZkZWxheV9zcAoraW50CWhhbGZkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYWxmZGVsYXkKK2ludAloYWxmZGVsYXkoCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2RlbGF5CitpbnQJbm9kZWxheSgKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm90aW1lb3V0CitpbnQJbm90aW1lb3V0KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3dGltZW91dAordm9pZAl3dGltZW91dCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJZGVsYXkpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBrZXlwYWQKK2ludAlrZXlwYWQoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1ldGEKK2ludAltZXRhKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3Vyc19zZXQKK2ludAljdXJzX3NldCgKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0eXBlYWhlYWQKK2ludAl0eXBlYWhlYWQoCisJCWludAlmZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleQoraW50CWhhc19rZXkoCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfa2V5cGFkCitpbnQJX25jX2tleXBhZCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Jhdy5jICovCisKKyN1bmRlZiByYXdfc3AKK2ludAlyYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJhdworaW50CXJhdyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjYnJlYWtfc3AKK2ludAljYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNicmVhaworaW50CWNicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBxaWZsdXNoX3NwCit2b2lkCXFpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBxaWZsdXNoCit2b2lkCXFpZmx1c2godm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5vcmF3X3NwCitpbnQJbm9yYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vcmF3CitpbnQJbm9yYXcodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWtfc3AKK2ludAlub2NicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWsKK2ludAlub2NicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub3FpZmx1c2hfc3AKK3ZvaWQJbm9xaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9xaWZsdXNoCit2b2lkCW5vcWlmbHVzaCh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgaW50cmZsdXNoX3NwCitpbnQJaW50cmZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW50cmZsdXNoCitpbnQJaW50cmZsdXNoKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3NldHVwLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisKKyN1bmRlZiBfbmNfdHR5dHlwZQorY2hhcgkqX25jX3R0eXR5cGUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcHRyX0xpbmVzCitpbnQJKl9uY19wdHJfTGluZXMoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfTElORVMKK2ludAlfbmNfTElORVModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B0cl9Db2xzCitpbnQJKl9uY19wdHJfQ29scygKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIF9uY19DT0xTCitpbnQJX25jX0NPTFModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B0cl9UYWJzaXplCitpbnQJKl9uY19wdHJfVGFic2l6ZSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIF9uY19UQUJTSVpFCitpbnQJX25jX1RBQlNJWkUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemVfc3AKK2ludAlzZXRfdGFic2l6ZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemUKK2ludAlzZXRfdGFic2l6ZSgKKwkJaW50CXZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaGFuZGxlX3NpZ3dpbmNoCitpbnQJX25jX2hhbmRsZV9zaWd3aW5jaCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHVzZV9lbnYKK3ZvaWQJdXNlX2VudigKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCit2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKKwkJU0NSRUVOCSpzcCwgCisJCWludAkqbGluZXAsIAorCQlpbnQJKmNvbHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdXBkYXRlX3NjcmVlbnNpemUKK3ZvaWQJX25jX3VwZGF0ZV9zY3JlZW5zaXplKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldHVwX3RpbmZvCitpbnQJX25jX3NldHVwX3RpbmZvKAorCQljb25zdCBjaGFyICpjb25zdCB0biwgCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RpbmZvX2NtZGNoCit2b2lkCV9uY190aW5mb19jbWRjaCgKKwkJVEVSTUlOQUwgKnRlcm1wLCAKKwkJaW50CXByb3RvKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9sb2NhbGUKK2NoYXIJKl9uY19nZXRfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3VuaWNvZGVfbG9jYWxlCitpbnQJX25jX3VuaWNvZGVfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NhbGVfYnJlYWtzX2FjcworaW50CV9uY19sb2NhbGVfYnJlYWtzX2FjcygKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0dXB0ZXJtCitpbnQJX25jX3NldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0LCAKKwkJaW50CXJldXNlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIHNldHVwdGVybQoraW50CXNldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rlcm1jYXAuYyAqLworCisjdW5kZWYgVVAKK2NoYXIJKlVQOworI3VuZGVmIEJDCitjaGFyCSpCQzsKKworI3VuZGVmIHRnZXRlbnRfc3AKK2ludAl0Z2V0ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2hhcgkqYnVmcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI2lmIDAKKworI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+CisKKyNlbmRpZgorCisjdW5kZWYgdGdldGVudAoraW50CXRnZXRlbnQoCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0ZmxhZ19zcAoraW50CXRnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRmbGFnCitpbnQJdGdldGZsYWcoCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtCitpbnQJdGdldG51bSgKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRzdHJfc3AKK2NoYXIJKnRnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCwgCisJCWNoYXIJKiphcmVhKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRnZXRzdHIKK2NoYXIJKnRnZXRzdHIoCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCisKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGVybW5hbWUKK2NoYXIJKnRlcm1uYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90Z290by5jICovCisKKyN1bmRlZiB0Z290bworY2hhcgkqdGdvdG8oCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAl4LCAKKwkJaW50CXkpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90aS5jICovCisKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0ZmxhZworaW50CXRpZ2V0ZmxhZygKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bV9zcAoraW50CXRpZ2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bQoraW50CXRpZ2V0bnVtKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0c3RyX3NwCitjaGFyCSp0aWdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0aWdldHN0cgorY2hhcgkqdGlnZXRzdHIoCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KKworI3VuZGVmIF9uY190cGFybV9lcnIKK2ludAlfbmNfdHBhcm1fZXJyOworCisjdW5kZWYgX25jX3RwYXJtX2FuYWx5emUKK2ludAlfbmNfdHBhcm1fYW5hbHl6ZSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY2hhcgkqcF9pc19zWzldLCAKKwkJaW50CSpfbmNfcG9wY291bnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRwYXJtCitjaGFyCSp0cGFybSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90cHV0cy5jICovCisKKyN1bmRlZiBQQworY2hhcglQQzsKKyN1bmRlZiBvc3BlZWQKK3Nob3J0CW9zcGVlZDsKKyN1bmRlZiBfbmNfbnVsbHNfc2VudAoraW50CV9uY19udWxsc19zZW50OworCisjdW5kZWYgX25jX3NldF9ub19wYWRkaW5nCit2b2lkCV9uY19zZXRfbm9fcGFkZGluZygKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsYXlfb3V0cHV0CitpbnQJZGVsYXlfb3V0cHV0KAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZmx1c2gKK3ZvaWQJX25jX2ZsdXNoKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19vdXRjaAoraW50CV9uY19vdXRjaCgKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwdXRwCitpbnQJcHV0cCgKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHMKK2ludAl0cHV0cygKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CWFmZmNudCwgCisJCWludAkoKm91dGMpKAorCQlpbnQJcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlLmMgKi8KKworI3VuZGVmIF9uY190cmFjaW5nCit1bnNpZ25lZCBfbmNfdHJhY2luZzsKKworI3VuZGVmIF9uY19fbmNfdHB1dHNfdHJhY2UKK2NvbnN0IGNoYXIgKl9uY19fbmNfdHB1dHNfdHJhY2Uodm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfX25jX291dGNoYXJzCitsb25nCV9uY19fbmNfb3V0Y2hhcnModm9pZCkKKwkJeyByZXR1cm4oKihsb25nICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfdHB1dHNfdHJhY2UKK3ZvaWQJX25jX3NldF90cHV0c190cmFjZSgKKwkJY29uc3QgY2hhciAqcykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3VudF9vdXRjaGFycwordm9pZAlfbmNfY291bnRfb3V0Y2hhcnMoCisJCWxvbmcJaW5jcmVtZW50KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdHJhY2UKK3ZvaWQJdHJhY2UoCisJCWNvbnN0IHVuc2lnbmVkIGludCB0cmFjZWxldmVsKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX3RyYWNlZgordm9pZAlfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9ib29sCitOQ1VSU0VTX0JPT0wgX25jX3JldHJhY2VfYm9vbCgKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NoYXIKK2NoYXIJX25jX3JldHJhY2VfY2hhcigKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pbnQKK2ludAlfbmNfcmV0cmFjZV9pbnQoCisJCWludAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV91bnNpZ25lZAordW5zaWduZWQgX25jX3JldHJhY2VfdW5zaWduZWQoCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfcHRyCitjaGFyCSpfbmNfcmV0cmFjZV9wdHIoCisJCWNoYXIJKmNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY3B0cgorY29uc3QgY2hhciAqX25jX3JldHJhY2VfY3B0cigKKwkJY29uc3QgY2hhciAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9jdm9pZF9wdHIKK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgordm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCisJCXZvaWQJKmNvZGUpCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2Vfc3AKK1NDUkVFTgkqX25jX3JldHJhY2Vfc3AoCisJCVNDUkVFTgkqY29kZSkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3dpbgorV0lORE9XCSpfbmNfcmV0cmFjZV93aW4oCisJCVdJTkRPVwkqY29kZSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY191c2VfdHJhY2VmCitpbnQJX25jX3VzZV90cmFjZWYoCisJCXVuc2lnbmVkIG1hc2spCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NrZWRfdHJhY2VmCit2b2lkCV9uY19sb2NrZWRfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlYXRyLmMgKi8KKworI3VuZGVmIF90cmFjZWF0dHIyCitjaGFyCSpfdHJhY2VhdHRyMigKKwkJaW50CWJ1Zm51bSwgCisJCWNodHlwZQluZXdtb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWF0dHIKK2NoYXIJKl90cmFjZWF0dHIoCisJCWF0dHJfdAluZXdtb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2ludF9hdHRyX3QKK2ludAlfbmNfcmV0cmFjZV9pbnRfYXR0cl90KAorCQlhdHRyX3QJY29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfYXR0cl90CithdHRyX3QJX25jX3JldHJhY2VfYXR0cl90KAorCQlhdHRyX3QJY29kZSkKKwkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQorCisjdW5kZWYgX25jX2FsdGNoYXJzZXRfbmFtZQorY29uc3QgY2hhciAqX25jX2FsdGNoYXJzZXRfbmFtZSgKKwkJYXR0cl90CWF0dHIsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2h0eXBlMgorY2hhcgkqX3RyYWNlY2h0eXBlMigKKwkJaW50CWJ1Zm51bSwgCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfdHJhY2VjaHR5cGUKK2NoYXIJKl90cmFjZWNodHlwZSgKKwkJY2h0eXBlCWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NodHlwZQorY2h0eXBlCV9uY19yZXRyYWNlX2NodHlwZSgKKwkJY2h0eXBlCWNvZGUpCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworLyogLi90cmFjZS9saWJfdHJhY2ViaXRzLmMgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIGludCB2YWw7CisgICAgY29uc3QgY2hhciBuYW1lWzhdOworfSBCSVROQU1FUzsKKworI3VuZGVmIF9uY190cmFjZV90dHltb2RlCitjaGFyCSpfbmNfdHJhY2VfdHR5bW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKnR0eSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2ViaXRzCitjaGFyCSpfbmNfdHJhY2ViaXRzKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWNoci5jICovCisKKyN1bmRlZiBfbmNfdHJhY2VjaGFyCitjaGFyCSpfbmNfdHJhY2VjaGFyKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNoYXIKK2NoYXIJKl90cmFjZWNoYXIoCisJCWludAljaCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3R0eWZsYWdzLmMgKi8KKworI3VuZGVmIF9uY19nZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfZ2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2dldF90dHlfbW9kZQoraW50CV9uY19nZXRfdHR5X21vZGUoCisJCXN0cnVjdCB0ZXJtaW9zICpidWYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfc2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90dHlfbW9kZQoraW50CV9uY19zZXRfdHR5X21vZGUoCisJCXN0cnVjdCB0ZXJtaW9zICpidWYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9zaGVsbF9tb2RlX3NwCitpbnQJZGVmX3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9zaGVsbF9tb2RlCitpbnQJZGVmX3NoZWxsX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3Byb2dfbW9kZV9zcAoraW50CWRlZl9wcm9nX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9wcm9nX21vZGUKK2ludAlkZWZfcHJvZ19tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3Byb2dfbW9kZV9zcAoraW50CXJlc2V0X3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlCitpbnQJcmVzZXRfcHJvZ19tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3NoZWxsX21vZGVfc3AKK2ludAlyZXNldF9zaGVsbF9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldF9zaGVsbF9tb2RlCitpbnQJcmVzZXRfc2hlbGxfbW9kZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzYXZldHR5X3NwCitpbnQJc2F2ZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2F2ZXR0eQoraW50CXNhdmV0dHkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXR0eV9zcAoraW50CXJlc2V0dHlfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0dHkKK2ludAlyZXNldHR5KHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90dHkvbGliX3R3YWl0LmMgKi8KKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyN1bmRlZiBfbmNfdGltZWRfd2FpdAoraW50CV9uY190aW1lZF93YWl0KAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1vZGUsIAorCQlpbnQJbWlsbGlzZWNvbmRzLCAKKwkJaW50CSp0aW1lbGVmdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL25hbWVfbWF0Y2guYyAqLworCisjdW5kZWYgX25jX2ZpcnN0X25hbWUKK2NoYXIJKl9uY19maXJzdF9uYW1lKAorCQljb25zdCBjaGFyICpjb25zdCBzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbmFtZV9tYXRjaAoraW50CV9uY19uYW1lX21hdGNoKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lbHN0LCAKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZSwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IGRlbGltKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbmFtZXMuYyAqLworCisjdW5kZWYgX25jX2Jvb2xuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfYm9vbGZuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sZm5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX251bW5hbWVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX251bW5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX251bWZuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19udW1mbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3RybmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfc3RybmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3RyZm5hbWVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX3N0cmZuYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9vYnNvbGV0ZS5jICovCisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcl9zcAordm9pZAlfbmNfc2V0X2J1ZmZlcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKm9mcCwgCisJCWludAlidWZmZXJlZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXRfYnVmZmVyCit2b2lkCV9uY19zZXRfYnVmZmVyKAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vcmVhZF9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19pbml0X3Rlcm10eXBlCit2b2lkCV9uY19pbml0X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtdHlwZQoraW50CV9uY19yZWFkX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyLCAKKwkJY2hhcgkqYnVmZmVyLCAKKwkJaW50CWxpbWl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9maWxlX2VudHJ5CitpbnQJX25jX3JlYWRfZmlsZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqcHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeQoraW50CV9uY19yZWFkX2VudHJ5KAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lLCAKKwkJY2hhcgkqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9zdHJpbmdzLmMgKi8KKworI3VuZGVmIF9uY19zdHJfaW5pdAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfaW5pdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNoYXIJKnNyYywgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfbnVsbAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfbnVsbCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfY29weQorc3RyaW5nX2Rlc2MgKl9uY19zdHJfY29weSgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXN0cmluZ19kZXNjICpzcmMpCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYWZlX3N0cmNhdAorTkNVUlNFU19CT09MIF9uY19zYWZlX3N0cmNhdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNvbnN0IGNoYXIgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3NhZmVfc3RyY3B5CitOQ1VSU0VTX0JPT0wgX25jX3NhZmVfc3RyY3B5KAorCQlzdHJpbmdfZGVzYyAqZHN0LCAKKwkJY29uc3QgY2hhciAqc3JjKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vdHJhY2UvdHJhY2VfYnVmLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV9idWYKK2NoYXIJKl9uY190cmFjZV9idWYoCisJCWludAlidWZudW0sIAorCQlzaXplX3QJd2FudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2VfYnVmY2F0CitjaGFyCSpfbmNfdHJhY2VfYnVmY2F0KAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV90cmllcwordm9pZAlfbmNfdHJhY2VfdHJpZXMoCisJCVRSSUVTCSp0cmVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvdHJpZXMuYyAqLworCisjdW5kZWYgX25jX2V4cGFuZF90cnkKK2NoYXIJKl9uY19leHBhbmRfdHJ5KAorCQlUUklFUwkqdHJlZSwgCisJCXVuc2lnbmVkIGNvZGUsIAorCQlpbnQJKmNvdW50LCAKKwkJc2l6ZV90CWxlbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX2tleQoraW50CV9uY19yZW1vdmVfa2V5KAorCQlUUklFUwkqKnRyZWUsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX3N0cmluZworaW50CV9uY19yZW1vdmVfc3RyaW5nKAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby90cmltX3NncjAuYyAqLworCisjdW5kZWYgX25jX3RyaW1fc2dyMAorY2hhcgkqX25jX3RyaW1fc2dyMCgKKwkJVEVSTVRZUEUgKnRwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi91bmN0cmwuYyAqLworCisjdW5kZWYgdW5jdHJsX3NwCitjb25zdCBjaGFyICp1bmN0cmxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgdW5jdHJsCitjb25zdCBjaGFyICp1bmN0cmwoCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KKworI3VuZGVmIF9uY192aXNidWYyCitjb25zdCBjaGFyICpfbmNfdmlzYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNoYXIgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzYnVmCitjb25zdCBjaGFyICpfbmNfdmlzYnVmKAorCQljb25zdCBjaGFyICpidWYpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2J1Zm4KK2NvbnN0IGNoYXIgKl9uY192aXNidWZuKAorCQljb25zdCBjaGFyICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXNjYnVmMgorY29uc3QgY2hhciAqX25jX3Zpc2NidWYyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2h0eXBlICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXNjYnVmCitjb25zdCBjaGFyICpfbmNfdmlzY2J1ZigKKwkJY29uc3QgY2h0eXBlICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2RlZmluZV9rZXkuYyAqLworCisjdW5kZWYgZGVmaW5lX2tleV9zcAoraW50CWRlZmluZV9rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmaW5lX2tleQoraW50CWRlZmluZV9rZXkoCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vaGFzaGVkX2RiLmMgKi8KKworI3VuZGVmIF9uY19oYXNoZWRfZGIKK3ZvaWQJX25jX2hhc2hlZF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2Uva2V5X2RlZmluZWQuYyAqLworCisjdW5kZWYga2V5X2RlZmluZWRfc3AKK2ludAlrZXlfZGVmaW5lZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYga2V5X2RlZmluZWQKK2ludAlrZXlfZGVmaW5lZCgKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9rZXlib3VuZC5jICovCisKKyN1bmRlZiBrZXlib3VuZF9zcAorY2hhcgkqa2V5Ym91bmRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29kZSwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXlib3VuZAorY2hhcgkqa2V5Ym91bmQoCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2tleW9rLmMgKi8KKworI3VuZGVmIGtleW9rX3NwCitpbnQJa2V5b2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBrZXlvaworaW50CWtleW9rKAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS92ZXJzaW9uLmMgKi8KKworI3VuZGVmIGN1cnNlc192ZXJzaW9uCitjb25zdCBjaGFyICpjdXJzZXNfdmVyc2lvbih2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbGxpYi1sdGluZm90dyBiL25jdXJzZXMvbGxpYi1sdGluZm90dwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTZhZGEzCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy9sbGliLWx0aW5mb3R3CkBAIC0wLDAgKzEsMTY2OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWNjZXNzLmMgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19yb290bmFtZQorY2hhcgkqX25jX3Jvb3RuYW1lKAorCQljaGFyCSpwYXRoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pc19hYnNfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19hYnNfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3BhdGhsYXN0Cit1bnNpZ25lZCBfbmNfcGF0aGxhc3QoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX2Jhc2VuYW1lCitjaGFyCSpfbmNfYmFzZW5hbWUoCisJCWNoYXIJKnBhdGgpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2FjY2VzcworaW50CV9uY19hY2Nlc3MoCisJCWNvbnN0IGNoYXIgKnBhdGgsIAorCQlpbnQJbW9kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2lzX2Rpcl9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2Rpcl9wYXRoKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaXNfZmlsZV9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2ZpbGVfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX2Vudl9hY2Nlc3MKK2ludAlfbmNfZW52X2FjY2Vzcyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vYWRkX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY19hZGRfdG9fdHJ5CitpbnQJX25jX2FkZF90b190cnkoCisJCVRSSUVTCSoqdHJlZSwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9hbGxvY190dHlwZS5jICovCisKKyN1bmRlZiBfbmNfYWxpZ25fdGVybXR5cGUKK3ZvaWQJX25jX2FsaWduX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqdG8sIAorCQlURVJNVFlQRSAqZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3B5X3Rlcm10eXBlCit2b2lkCV9uY19jb3B5X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqZHN0LCAKKwkJY29uc3QgVEVSTVRZUEUgKnNyYykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9jb2Rlcy5jICovCisKKyN1bmRlZiBfbmNfYm9vbGNvZGVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX2Jvb2xjb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19udW1jb2RlcworY29uc3QgY2hhciAqY29uc3QgKl9uY19udW1jb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJjb2RlcworY29uc3QgY2hhciAqY29uc3QgKl9uY19zdHJjb2Rlcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9jb21wX2NhcHRhYi5jICovCisKKyNpbmNsdWRlIDxoYXNoc2l6ZS5oPgorCisjdW5kZWYgX25jX2dldF90YWJsZQorY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKl9uY19nZXRfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfdGFibGUKK2NvbnN0IEhhc2hWYWx1ZSAqX25jX2dldF9oYXNoX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoVmFsdWUgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfYWxpYXNfdGFibGUKK2NvbnN0IHN0cnVjdCBhbGlhcyAqX25jX2dldF9hbGlhc190YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IGFsaWFzICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2hhc2hfaW5mbworY29uc3QgSGFzaERhdGEgKl9uY19nZXRfaGFzaF9pbmZvKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBIYXNoRGF0YSAqKikwKTsgfQorCisvKiAuL3RpbmZvL2NvbXBfZXJyb3IuYyAqLworCisjdW5kZWYgX25jX3N1cHByZXNzX3dhcm5pbmdzCitOQ1VSU0VTX0JPT0wgX25jX3N1cHByZXNzX3dhcm5pbmdzOworI3VuZGVmIF9uY19jdXJyX2xpbmUKK2ludAlfbmNfY3Vycl9saW5lOworI3VuZGVmIF9uY19jdXJyX2NvbAoraW50CV9uY19jdXJyX2NvbDsKKworI3VuZGVmIF9uY19nZXRfc291cmNlCitjb25zdCBjaGFyICpfbmNfZ2V0X3NvdXJjZSh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfc291cmNlCit2b2lkCV9uY19zZXRfc291cmNlKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldF90eXBlCit2b2lkCV9uY19zZXRfdHlwZSgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19nZXRfdHlwZQordm9pZAlfbmNfZ2V0X3R5cGUoCisJCWNoYXIJKm5hbWUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfd2FybmluZwordm9pZAlfbmNfd2FybmluZygKKwkJY29uc3QgY2hhciAqY29uc3QgZm10LCAKKwkJLi4uKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2Vycl9hYm9ydAordm9pZAlfbmNfZXJyX2Fib3J0KAorCQljb25zdCBjaGFyICpjb25zdCBmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc3lzZXJyX2Fib3J0Cit2b2lkCV9uY19zeXNlcnJfYWJvcnQoCisJCWNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9jb21wX2hhc2guYyAqLworCisjdW5kZWYgX25jX2ZpbmRfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY29uc3QgSGFzaFZhbHVlICpoYXNoX3RhYmxlKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmluZF90eXBlX2VudHJ5CitzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqX25jX2ZpbmRfdHlwZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CXR5cGUsIAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqKikwKTsgfQorCisvKiAuL3RpbmZvL2RiX2l0ZXJhdG9yLmMgKi8KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI3VuZGVmIF9uY190aWNfZGlyCitjb25zdCBjaGFyICpfbmNfdGljX2RpcigKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfa2VlcF90aWNfZGlyCit2b2lkCV9uY19rZWVwX3RpY19kaXIoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbGFzdF9kYgordm9pZAlfbmNfbGFzdF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX25leHRfZGIKK2NvbnN0IGNoYXIgKl9uY19uZXh0X2RiKAorCQlEQkRJUlMJKnN0YXRlLCAKKwkJaW50CSpvZmZzZXQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2ZpcnN0X2RiCit2b2lkCV9uY19maXJzdF9kYigKKwkJREJESVJTCSpzdGF0ZSwgCisJCWludAkqb2Zmc2V0KQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2RvYWxsb2MuYyAqLworCisjdW5kZWYgX25jX2RvYWxsb2MKK3ZvaWQJKl9uY19kb2FsbG9jKAorCQl2b2lkCSpvbGRwLCAKKwkJc2l6ZV90CWFtb3VudCkKKwkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisKKy8qIC4vdGluZm8vZW50cmllcy5jICovCisKKyN1bmRlZiBfbmNfaGVhZAorRU5UUlkJKl9uY19oZWFkOworI3VuZGVmIF9uY190YWlsCitFTlRSWQkqX25jX3RhaWw7CisKKyN1bmRlZiBfbmNfZnJlZV9lbnRyeQordm9pZAlfbmNfZnJlZV9lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2ZyZWVfZW50cmllcwordm9pZAlfbmNfZnJlZV9lbnRyaWVzKAorCQlFTlRSWQkqaGVhZHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZGVsaW5rX2VudHJ5CitFTlRSWQkqX25jX2RlbGlua19lbnRyeSgKKwkJRU5UUlkJKmhlYWRwLCAKKwkJVEVSTVRZUEUgKnR0ZXJtKQorCQl7IHJldHVybigqKEVOVFJZICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbGVha3NfdGluZm8KK3ZvaWQJX25jX2xlYWtzX3RpbmZvKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vZmFsbGJhY2suYyAqLworCisjdW5kZWYgX25jX2ZhbGxiYWNrCitjb25zdCBURVJNVFlQRSAqX25jX2ZhbGxiYWNrKAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGNvbnN0IFRFUk1UWVBFICoqKTApOyB9CisKKy8qIC4vdGluZm8vZnJlZV90dHlwZS5jICovCisKKyN1bmRlZiBfbmNfZnJlZV90ZXJtdHlwZQordm9pZAlfbmNfZnJlZV90ZXJtdHlwZSgKKwkJVEVSTVRZUEUgKnB0cikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY191c2VyX2RlZmluYWJsZQorTkNVUlNFU19CT09MIF9uY191c2VyX2RlZmluYWJsZTsKKworI3VuZGVmIHVzZV9leHRlbmRlZF9uYW1lcworaW50CXVzZV9leHRlbmRlZF9uYW1lcygKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9nZXRlbnZfbnVtLmMgKi8KKworI3VuZGVmIF9uY19nZXRlbnZfbnVtCitpbnQJX25jX2dldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRlbnZfbnVtCit2b2lkCV9uY19zZXRlbnZfbnVtKAorCQljb25zdCBjaGFyICpuYW1lLCAKKwkJaW50CXZhbHVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2hvbWVfdGVybWluZm8uYyAqLworCisjdW5kZWYgX25jX2hvbWVfdGVybWluZm8KK2NoYXIJKl9uY19ob21lX3Rlcm1pbmZvKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2luaXRfa2V5dHJ5LmMgKi8KKworI2lmIDAKKworI2luY2x1ZGUgPGluaXRfa2V5dHJ5Lmg+CisKKyN1bmRlZiBfbmNfdGluZm9fZmtleXMKK2NvbnN0IHN0cnVjdCB0aW5mb19ma2V5cyBfbmNfdGluZm9fZmtleXNbXSA9IHswfTsKKworI2VuZGlmCisKKyN1bmRlZiBfbmNfaW5pdF9rZXl0cnkKK3ZvaWQJX25jX2luaXRfa2V5dHJ5KAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2xpYl9hY3MuYyAqLworCisjdW5kZWYgX25jX2Fjc19tYXAKK2NodHlwZQkqX25jX2Fjc19tYXAodm9pZCkKKwkJeyByZXR1cm4oKihjaHR5cGUgKiopMCk7IH0KKworI3VuZGVmIF9uY19pbml0X2Fjc19zcAordm9pZAlfbmNfaW5pdF9hY3Nfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfaW5pdF9hY3MKK3ZvaWQJX25jX2luaXRfYWNzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vbGliX2JhdWRyYXRlLmMgKi8KKworI2luY2x1ZGUgPHRlcm1jYXAuaD4KKworc3RydWN0IHNwZWVkIHsKKyAgICBzaG9ydCBzOyAKKyAgICBpbnQgc3A7IAorfTsKKworI3VuZGVmIF9uY19iYXVkcmF0ZQoraW50CV9uY19iYXVkcmF0ZSgKKwkJaW50CU9TcGVlZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX29zcGVlZAoraW50CV9uY19vc3BlZWQoCisJCWludAlCYXVkUmF0ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYmF1ZHJhdGVfc3AKK2ludAliYXVkcmF0ZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgYmF1ZHJhdGUKK2ludAliYXVkcmF0ZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2N1cl90ZXJtLmMgKi8KKworI3VuZGVmIF9uY19nZXRfY3VyX3Rlcm1fc3AKK1RFUk1JTkFMICpfbmNfZ2V0X2N1cl90ZXJtX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X2N1cl90ZXJtCitURVJNSU5BTCAqX25jX2dldF9jdXJfdGVybSh2b2lkKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBfbmNfY3VyX3Rlcm0KK1RFUk1JTkFMICpfbmNfY3VyX3Rlcm0odm9pZCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgc2V0X2N1cnRlcm1fc3AKK1RFUk1JTkFMICpzZXRfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgc2V0X2N1cnRlcm0KK1RFUk1JTkFMICpzZXRfY3VydGVybSgKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKFRFUk1JTkFMICoqKTApOyB9CisKKyN1bmRlZiBkZWxfY3VydGVybV9zcAoraW50CWRlbF9jdXJ0ZXJtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWxfY3VydGVybQoraW50CWRlbF9jdXJ0ZXJtKAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfZGF0YS5jICovCisKKyN1bmRlZiBfbmNfc3Rkc2NyCitXSU5ET1cJKl9uY19zdGRzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY19jdXJzY3IKK1dJTkRPVwkqX25jX2N1cnNjcih2b2lkKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQorCisjdW5kZWYgX25jX25ld3NjcgorV0lORE9XCSpfbmNfbmV3c2NyKHZvaWQpCisJCXsgcmV0dXJuKCooV0lORE9XICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc2NyZWVuX2NoYWluCitTQ1JFRU4JKl9uY19zY3JlZW5fY2hhaW47CisjdW5kZWYgU1AKK1NDUkVFTgkqU1A7CisjdW5kZWYgX25jX2dsb2JhbHMKK05DVVJTRVNfR0xPQkFMUyBfbmNfZ2xvYmFsczsKKyN1bmRlZiBfbmNfcHJlc2NyZWVuCitOQ1VSU0VTX1BSRVNDUkVFTiBfbmNfcHJlc2NyZWVuOworCisjdW5kZWYgX25jX3NjcmVlbl9vZgorU0NSRUVOCSpfbmNfc2NyZWVuX29mKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19pbml0X3B0aHJlYWRzCit2b2lkCV9uY19pbml0X3B0aHJlYWRzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbXV0ZXhfaW5pdAordm9pZAlfbmNfbXV0ZXhfaW5pdCgKKwkJcHRocmVhZF9tdXRleF90ICpvYmopCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbXV0ZXhfbG9jaworaW50CV9uY19tdXRleF9sb2NrKAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX211dGV4X3RyeWxvY2sKK2ludAlfbmNfbXV0ZXhfdHJ5bG9jaygKKwkJcHRocmVhZF9tdXRleF90ICpvYmopCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19tdXRleF91bmxvY2sKK2ludAlfbmNfbXV0ZXhfdW5sb2NrKAorCQlwdGhyZWFkX211dGV4X3QgKm9iaikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9oYXNfY2FwLmMgKi8KKworI3VuZGVmIGhhc19pY19zcAorTkNVUlNFU19CT09MIGhhc19pY19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2ljCitOQ1VSU0VTX0JPT0wgaGFzX2ljKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIGhhc19pbF9zcAorTkNVUlNFU19CT09MIGhhc19pbF9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2lsCitOQ1VSU0VTX0JPT0wgaGFzX2lsKHZvaWQpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworLyogLi90aW5mby9saWJfa2VybmVsLmMgKi8KKworI3VuZGVmIGVyYXNlY2hhcl9zcAorY2hhcgllcmFzZWNoYXJfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBlcmFzZWNoYXIKK2NoYXIJZXJhc2VjaGFyKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBraWxsY2hhcl9zcAorY2hhcglraWxsY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGtpbGxjaGFyCitjaGFyCWtpbGxjaGFyKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBmbHVzaGlucF9zcAoraW50CWZsdXNoaW5wX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBmbHVzaGlucAoraW50CWZsdXNoaW5wKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi9saWJfa2V5bmFtZS5jICovCisKK3N0cnVjdCBrbiB7IHNob3J0IG9mZnNldDsgaW50IGNvZGU7IH07CisKKyN1bmRlZiBrZXluYW1lX3NwCitjb25zdCBjaGFyICprZXluYW1lX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYga2V5bmFtZQorY29uc3QgY2hhciAqa2V5bmFtZSgKKwkJaW50CWMpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9sb25nbmFtZS5jICovCisKKyN1bmRlZiBsb25nbmFtZV9zcAorY2hhcgkqbG9uZ25hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgbG9uZ25hbWUKK2NoYXIJKmxvbmduYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9uYXBtcy5jICovCisKKyN1bmRlZiBuYXBtc19zcAoraW50CW5hcG1zX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuYXBtcworaW50CW5hcG1zKAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfb3B0aW9ucy5jICovCisKKyN1bmRlZiBpZGxvaworaW50CWlkbG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpZGNvawordm9pZAlpZGNvaygKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGhhbGZkZWxheV9zcAoraW50CWhhbGZkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYWxmZGVsYXkKK2ludAloYWxmZGVsYXkoCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2RlbGF5CitpbnQJbm9kZWxheSgKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm90aW1lb3V0CitpbnQJbm90aW1lb3V0KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3dGltZW91dAordm9pZAl3dGltZW91dCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJZGVsYXkpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBrZXlwYWQKK2ludAlrZXlwYWQoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1ldGEKK2ludAltZXRhKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3Vyc19zZXQKK2ludAljdXJzX3NldCgKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0eXBlYWhlYWQKK2ludAl0eXBlYWhlYWQoCisJCWludAlmZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleQoraW50CWhhc19rZXkoCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfa2V5cGFkCitpbnQJX25jX2tleXBhZCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Jhdy5jICovCisKKyN1bmRlZiByYXdfc3AKK2ludAlyYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJhdworaW50CXJhdyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjYnJlYWtfc3AKK2ludAljYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNicmVhaworaW50CWNicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBxaWZsdXNoX3NwCit2b2lkCXFpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBxaWZsdXNoCit2b2lkCXFpZmx1c2godm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5vcmF3X3NwCitpbnQJbm9yYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vcmF3CitpbnQJbm9yYXcodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWtfc3AKK2ludAlub2NicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWsKK2ludAlub2NicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub3FpZmx1c2hfc3AKK3ZvaWQJbm9xaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9xaWZsdXNoCit2b2lkCW5vcWlmbHVzaCh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgaW50cmZsdXNoX3NwCitpbnQJaW50cmZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW50cmZsdXNoCitpbnQJaW50cmZsdXNoKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3NldHVwLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisKKyN1bmRlZiBfbmNfdHR5dHlwZQorY2hhcgkqX25jX3R0eXR5cGUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcHRyX0xpbmVzCitpbnQJKl9uY19wdHJfTGluZXMoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICoqKTApOyB9CisKKyN1bmRlZiBfbmNfTElORVMKK2ludAlfbmNfTElORVModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B0cl9Db2xzCitpbnQJKl9uY19wdHJfQ29scygKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIF9uY19DT0xTCitpbnQJX25jX0NPTFModm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B0cl9UYWJzaXplCitpbnQJKl9uY19wdHJfVGFic2l6ZSgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKiopMCk7IH0KKworI3VuZGVmIF9uY19UQUJTSVpFCitpbnQJX25jX1RBQlNJWkUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemVfc3AKK2ludAlzZXRfdGFic2l6ZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemUKK2ludAlzZXRfdGFic2l6ZSgKKwkJaW50CXZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaGFuZGxlX3NpZ3dpbmNoCitpbnQJX25jX2hhbmRsZV9zaWd3aW5jaCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHVzZV9lbnYKK3ZvaWQJdXNlX2VudigKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCit2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKKwkJU0NSRUVOCSpzcCwgCisJCWludAkqbGluZXAsIAorCQlpbnQJKmNvbHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdXBkYXRlX3NjcmVlbnNpemUKK3ZvaWQJX25jX3VwZGF0ZV9zY3JlZW5zaXplKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldHVwX3RpbmZvCitpbnQJX25jX3NldHVwX3RpbmZvKAorCQljb25zdCBjaGFyICpjb25zdCB0biwgCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RpbmZvX2NtZGNoCit2b2lkCV9uY190aW5mb19jbWRjaCgKKwkJVEVSTUlOQUwgKnRlcm1wLCAKKwkJaW50CXByb3RvKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9sb2NhbGUKK2NoYXIJKl9uY19nZXRfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3VuaWNvZGVfbG9jYWxlCitpbnQJX25jX3VuaWNvZGVfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NhbGVfYnJlYWtzX2FjcworaW50CV9uY19sb2NhbGVfYnJlYWtzX2FjcygKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0dXB0ZXJtCitpbnQJX25jX3NldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0LCAKKwkJaW50CXJldXNlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIHNldHVwdGVybQoraW50CXNldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rlcm1jYXAuYyAqLworCisjdW5kZWYgVVAKK2NoYXIJKlVQOworI3VuZGVmIEJDCitjaGFyCSpCQzsKKworI3VuZGVmIHRnZXRlbnRfc3AKK2ludAl0Z2V0ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2hhcgkqYnVmcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI2lmIDAKKworI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+CisKKyNlbmRpZgorCisjdW5kZWYgdGdldGVudAoraW50CXRnZXRlbnQoCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0ZmxhZ19zcAoraW50CXRnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRmbGFnCitpbnQJdGdldGZsYWcoCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtCitpbnQJdGdldG51bSgKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRzdHJfc3AKK2NoYXIJKnRnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCwgCisJCWNoYXIJKiphcmVhKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRnZXRzdHIKK2NoYXIJKnRnZXRzdHIoCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCisKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGVybW5hbWUKK2NoYXIJKnRlcm1uYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90Z290by5jICovCisKKyN1bmRlZiB0Z290bworY2hhcgkqdGdvdG8oCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAl4LCAKKwkJaW50CXkpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90aS5jICovCisKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0ZmxhZworaW50CXRpZ2V0ZmxhZygKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bV9zcAoraW50CXRpZ2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bQoraW50CXRpZ2V0bnVtKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0c3RyX3NwCitjaGFyCSp0aWdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0aWdldHN0cgorY2hhcgkqdGlnZXRzdHIoCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KKworI3VuZGVmIF9uY190cGFybV9lcnIKK2ludAlfbmNfdHBhcm1fZXJyOworCisjdW5kZWYgX25jX3RwYXJtX2FuYWx5emUKK2ludAlfbmNfdHBhcm1fYW5hbHl6ZSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY2hhcgkqcF9pc19zWzldLCAKKwkJaW50CSpfbmNfcG9wY291bnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRwYXJtCitjaGFyCSp0cGFybSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90cHV0cy5jICovCisKKyN1bmRlZiBQQworY2hhcglQQzsKKyN1bmRlZiBvc3BlZWQKK3Nob3J0CW9zcGVlZDsKKyN1bmRlZiBfbmNfbnVsbHNfc2VudAoraW50CV9uY19udWxsc19zZW50OworCisjdW5kZWYgX25jX3NldF9ub19wYWRkaW5nCit2b2lkCV9uY19zZXRfbm9fcGFkZGluZygKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsYXlfb3V0cHV0CitpbnQJZGVsYXlfb3V0cHV0KAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZmx1c2gKK3ZvaWQJX25jX2ZsdXNoKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19vdXRjaAoraW50CV9uY19vdXRjaCgKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwdXRwCitpbnQJcHV0cCgKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHMKK2ludAl0cHV0cygKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CWFmZmNudCwgCisJCWludAkoKm91dGMpKAorCQlpbnQJcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlLmMgKi8KKworI3VuZGVmIF9uY190cmFjaW5nCit1bnNpZ25lZCBfbmNfdHJhY2luZzsKKworI3VuZGVmIF9uY19fbmNfdHB1dHNfdHJhY2UKK2NvbnN0IGNoYXIgKl9uY19fbmNfdHB1dHNfdHJhY2Uodm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfX25jX291dGNoYXJzCitsb25nCV9uY19fbmNfb3V0Y2hhcnModm9pZCkKKwkJeyByZXR1cm4oKihsb25nICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfdHB1dHNfdHJhY2UKK3ZvaWQJX25jX3NldF90cHV0c190cmFjZSgKKwkJY29uc3QgY2hhciAqcykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3VudF9vdXRjaGFycwordm9pZAlfbmNfY291bnRfb3V0Y2hhcnMoCisJCWxvbmcJaW5jcmVtZW50KQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdHJhY2UKK3ZvaWQJdHJhY2UoCisJCWNvbnN0IHVuc2lnbmVkIGludCB0cmFjZWxldmVsKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX3RyYWNlZgordm9pZAlfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9ib29sCitOQ1VSU0VTX0JPT0wgX25jX3JldHJhY2VfYm9vbCgKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NoYXIKK2NoYXIJX25jX3JldHJhY2VfY2hhcigKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pbnQKK2ludAlfbmNfcmV0cmFjZV9pbnQoCisJCWludAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV91bnNpZ25lZAordW5zaWduZWQgX25jX3JldHJhY2VfdW5zaWduZWQoCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfcHRyCitjaGFyCSpfbmNfcmV0cmFjZV9wdHIoCisJCWNoYXIJKmNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY3B0cgorY29uc3QgY2hhciAqX25jX3JldHJhY2VfY3B0cigKKwkJY29uc3QgY2hhciAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9jdm9pZF9wdHIKK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgordm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCisJCXZvaWQJKmNvZGUpCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2Vfc3AKK1NDUkVFTgkqX25jX3JldHJhY2Vfc3AoCisJCVNDUkVFTgkqY29kZSkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3dpbgorV0lORE9XCSpfbmNfcmV0cmFjZV93aW4oCisJCVdJTkRPVwkqY29kZSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworI3VuZGVmIF9uY191c2VfdHJhY2VmCitpbnQJX25jX3VzZV90cmFjZWYoCisJCXVuc2lnbmVkIG1hc2spCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NrZWRfdHJhY2VmCit2b2lkCV9uY19sb2NrZWRfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlYXRyLmMgKi8KKworI3VuZGVmIF90cmFjZWF0dHIyCitjaGFyCSpfdHJhY2VhdHRyMigKKwkJaW50CWJ1Zm51bSwgCisJCWNodHlwZQluZXdtb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWF0dHIKK2NoYXIJKl90cmFjZWF0dHIoCisJCWF0dHJfdAluZXdtb2RlKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2ludF9hdHRyX3QKK2ludAlfbmNfcmV0cmFjZV9pbnRfYXR0cl90KAorCQlhdHRyX3QJY29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfYXR0cl90CithdHRyX3QJX25jX3JldHJhY2VfYXR0cl90KAorCQlhdHRyX3QJY29kZSkKKwkJeyByZXR1cm4oKihhdHRyX3QgKikwKTsgfQorCisjdW5kZWYgX25jX2FsdGNoYXJzZXRfbmFtZQorY29uc3QgY2hhciAqX25jX2FsdGNoYXJzZXRfbmFtZSgKKwkJYXR0cl90CWF0dHIsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2h0eXBlMgorY2hhcgkqX3RyYWNlY2h0eXBlMigKKwkJaW50CWJ1Zm51bSwgCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfdHJhY2VjaHR5cGUKK2NoYXIJKl90cmFjZWNodHlwZSgKKwkJY2h0eXBlCWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NodHlwZQorY2h0eXBlCV9uY19yZXRyYWNlX2NodHlwZSgKKwkJY2h0eXBlCWNvZGUpCisJCXsgcmV0dXJuKCooY2h0eXBlICopMCk7IH0KKworI3VuZGVmIF90cmFjZWNjaGFyX3QyCitjaGFyCSpfdHJhY2VjY2hhcl90MigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNjaGFyX3QgKmNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNjaGFyX3QKK2NoYXIJKl90cmFjZWNjaGFyX3QoCisJCWNvbnN0IGNjaGFyX3QgKmNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90cmFjZS9saWJfdHJhY2ViaXRzLmMgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIGludCB2YWw7CisgICAgY29uc3QgY2hhciBuYW1lWzhdOworfSBCSVROQU1FUzsKKworI3VuZGVmIF9uY190cmFjZV90dHltb2RlCitjaGFyCSpfbmNfdHJhY2VfdHR5bW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKnR0eSkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2ViaXRzCitjaGFyCSpfbmNfdHJhY2ViaXRzKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWNoci5jICovCisKKyN1bmRlZiBfbmNfdHJhY2VjaGFyCitjaGFyCSpfbmNfdHJhY2VjaGFyKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNoYXIKK2NoYXIJKl90cmFjZWNoYXIoCisJCWludAljaCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3R0eWZsYWdzLmMgKi8KKworI3VuZGVmIF9uY19nZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfZ2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2dldF90dHlfbW9kZQoraW50CV9uY19nZXRfdHR5X21vZGUoCisJCXN0cnVjdCB0ZXJtaW9zICpidWYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19zZXRfdHR5X21vZGVfc3AKK2ludAlfbmNfc2V0X3R0eV9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90dHlfbW9kZQoraW50CV9uY19zZXRfdHR5X21vZGUoCisJCXN0cnVjdCB0ZXJtaW9zICpidWYpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9zaGVsbF9tb2RlX3NwCitpbnQJZGVmX3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9zaGVsbF9tb2RlCitpbnQJZGVmX3NoZWxsX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3Byb2dfbW9kZV9zcAoraW50CWRlZl9wcm9nX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGRlZl9wcm9nX21vZGUKK2ludAlkZWZfcHJvZ19tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3Byb2dfbW9kZV9zcAoraW50CXJlc2V0X3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlCitpbnQJcmVzZXRfcHJvZ19tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3NoZWxsX21vZGVfc3AKK2ludAlyZXNldF9zaGVsbF9tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldF9zaGVsbF9tb2RlCitpbnQJcmVzZXRfc2hlbGxfbW9kZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzYXZldHR5X3NwCitpbnQJc2F2ZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2F2ZXR0eQoraW50CXNhdmV0dHkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXR0eV9zcAoraW50CXJlc2V0dHlfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0dHkKK2ludAlyZXNldHR5KHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90dHkvbGliX3R3YWl0LmMgKi8KKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyN1bmRlZiBfbmNfdGltZWRfd2FpdAoraW50CV9uY190aW1lZF93YWl0KAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1vZGUsIAorCQlpbnQJbWlsbGlzZWNvbmRzLCAKKwkJaW50CSp0aW1lbGVmdCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL25hbWVfbWF0Y2guYyAqLworCisjdW5kZWYgX25jX2ZpcnN0X25hbWUKK2NoYXIJKl9uY19maXJzdF9uYW1lKAorCQljb25zdCBjaGFyICpjb25zdCBzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfbmFtZV9tYXRjaAoraW50CV9uY19uYW1lX21hdGNoKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lbHN0LCAKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZSwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IGRlbGltKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vbmFtZXMuYyAqLworCisjdW5kZWYgX25jX2Jvb2xuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfYm9vbGZuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19ib29sZm5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX251bW5hbWVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX251bW5hbWVzKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX251bWZuYW1lcworY29uc3QgY2hhciAqY29uc3QgKl9uY19udW1mbmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3RybmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0ICpfbmNfc3RybmFtZXModm9pZCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfc3RyZm5hbWVzCitjb25zdCBjaGFyICpjb25zdCAqX25jX3N0cmZuYW1lcyh2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9vYnNvbGV0ZS5jICovCisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcl9zcAordm9pZAlfbmNfc2V0X2J1ZmZlcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKm9mcCwgCisJCWludAlidWZmZXJlZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXRfYnVmZmVyCit2b2lkCV9uY19zZXRfYnVmZmVyKAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vcmVhZF9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19pbml0X3Rlcm10eXBlCit2b2lkCV9uY19pbml0X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtdHlwZQoraW50CV9uY19yZWFkX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyLCAKKwkJY2hhcgkqYnVmZmVyLCAKKwkJaW50CWxpbWl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9maWxlX2VudHJ5CitpbnQJX25jX3JlYWRfZmlsZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqcHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeQoraW50CV9uY19yZWFkX2VudHJ5KAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lLCAKKwkJY2hhcgkqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9zdHJpbmdzLmMgKi8KKworI3VuZGVmIF9uY19zdHJfaW5pdAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfaW5pdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNoYXIJKnNyYywgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfbnVsbAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfbnVsbCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfY29weQorc3RyaW5nX2Rlc2MgKl9uY19zdHJfY29weSgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXN0cmluZ19kZXNjICpzcmMpCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYWZlX3N0cmNhdAorTkNVUlNFU19CT09MIF9uY19zYWZlX3N0cmNhdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNvbnN0IGNoYXIgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3NhZmVfc3RyY3B5CitOQ1VSU0VTX0JPT0wgX25jX3NhZmVfc3RyY3B5KAorCQlzdHJpbmdfZGVzYyAqZHN0LCAKKwkJY29uc3QgY2hhciAqc3JjKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vdHJhY2UvdHJhY2VfYnVmLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV9idWYKK2NoYXIJKl9uY190cmFjZV9idWYoCisJCWludAlidWZudW0sIAorCQlzaXplX3QJd2FudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2VfYnVmY2F0CitjaGFyCSpfbmNfdHJhY2VfYnVmY2F0KAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV90cmllcwordm9pZAlfbmNfdHJhY2VfdHJpZXMoCisJCVRSSUVTCSp0cmVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvdHJpZXMuYyAqLworCisjdW5kZWYgX25jX2V4cGFuZF90cnkKK2NoYXIJKl9uY19leHBhbmRfdHJ5KAorCQlUUklFUwkqdHJlZSwgCisJCXVuc2lnbmVkIGNvZGUsIAorCQlpbnQJKmNvdW50LCAKKwkJc2l6ZV90CWxlbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX2tleQoraW50CV9uY19yZW1vdmVfa2V5KAorCQlUUklFUwkqKnRyZWUsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX3N0cmluZworaW50CV9uY19yZW1vdmVfc3RyaW5nKAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby90cmltX3NncjAuYyAqLworCisjdW5kZWYgX25jX3RyaW1fc2dyMAorY2hhcgkqX25jX3RyaW1fc2dyMCgKKwkJVEVSTVRZUEUgKnRwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi91bmN0cmwuYyAqLworCisjdW5kZWYgdW5jdHJsX3NwCitjb25zdCBjaGFyICp1bmN0cmxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgdW5jdHJsCitjb25zdCBjaGFyICp1bmN0cmwoCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KKworI3VuZGVmIF9uY192aXNidWYyCitjb25zdCBjaGFyICpfbmNfdmlzYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNoYXIgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzYnVmCitjb25zdCBjaGFyICpfbmNfdmlzYnVmKAorCQljb25zdCBjaGFyICpidWYpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2J1Zm4KK2NvbnN0IGNoYXIgKl9uY192aXNidWZuKAorCQljb25zdCBjaGFyICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmMgorY29uc3QgY2hhciAqX25jX3Zpc3didWYyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmCitjb25zdCBjaGFyICpfbmNfdmlzd2J1ZigKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmbgorY29uc3QgY2hhciAqX25jX3Zpc3didWZuKAorCQljb25zdCB3Y2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3aWJ1ZgorY29uc3QgY2hhciAqX25jX3Zpc3dpYnVmKAorCQljb25zdCB3aW50X3QgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzY2J1ZjIKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNjaGFyX3QgKmJ1ZiwgCisJCWludAlsZW4pCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2NidWYKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmKAorCQljb25zdCBjY2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2RlZmluZV9rZXkuYyAqLworCisjdW5kZWYgZGVmaW5lX2tleV9zcAoraW50CWRlZmluZV9rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmaW5lX2tleQoraW50CWRlZmluZV9rZXkoCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vaGFzaGVkX2RiLmMgKi8KKworI3VuZGVmIF9uY19oYXNoZWRfZGIKK3ZvaWQJX25jX2hhc2hlZF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2Uva2V5X2RlZmluZWQuYyAqLworCisjdW5kZWYga2V5X2RlZmluZWRfc3AKK2ludAlrZXlfZGVmaW5lZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYga2V5X2RlZmluZWQKK2ludAlrZXlfZGVmaW5lZCgKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9rZXlib3VuZC5jICovCisKKyN1bmRlZiBrZXlib3VuZF9zcAorY2hhcgkqa2V5Ym91bmRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29kZSwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXlib3VuZAorY2hhcgkqa2V5Ym91bmQoCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2tleW9rLmMgKi8KKworI3VuZGVmIGtleW9rX3NwCitpbnQJa2V5b2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBrZXlvaworaW50CWtleW9rKAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS92ZXJzaW9uLmMgKi8KKworI3VuZGVmIGN1cnNlc192ZXJzaW9uCitjb25zdCBjaGFyICpjdXJzZXNfdmVyc2lvbih2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbGxpYi1sdGluZm93IGIvbmN1cnNlcy9sbGliLWx0aW5mb3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmMzI5NgotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvbGxpYi1sdGluZm93CkBAIC0wLDAgKzEsMTU2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAxMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExJTlRMSUJSQVJZICovCisKKy8qIC4vdGluZm8vYWNjZXNzLmMgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aWMuaD4KKworI3VuZGVmIF9uY19yb290bmFtZQorY2hhcgkqX25jX3Jvb3RuYW1lKAorCQljaGFyCSpwYXRoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19pc19hYnNfcGF0aAorTkNVUlNFU19CT09MIF9uY19pc19hYnNfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3BhdGhsYXN0Cit1bnNpZ25lZCBfbmNfcGF0aGxhc3QoCisJCWNvbnN0IGNoYXIgKnBhdGgpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX2Jhc2VuYW1lCitjaGFyCSpfbmNfYmFzZW5hbWUoCisJCWNoYXIJKnBhdGgpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX2FjY2VzcworaW50CV9uY19hY2Nlc3MoCisJCWNvbnN0IGNoYXIgKnBhdGgsIAorCQlpbnQJbW9kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX2lzX2Rpcl9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2Rpcl9wYXRoKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaXNfZmlsZV9wYXRoCitOQ1VSU0VTX0JPT0wgX25jX2lzX2ZpbGVfcGF0aCgKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX2Vudl9hY2Nlc3MKK2ludAlfbmNfZW52X2FjY2Vzcyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vYWRkX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY19hZGRfdG9fdHJ5CitpbnQJX25jX2FkZF90b190cnkoCisJCVRSSUVTCSoqdHJlZSwgCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9hbGxvY190dHlwZS5jICovCisKKyN1bmRlZiBfbmNfYWxpZ25fdGVybXR5cGUKK3ZvaWQJX25jX2FsaWduX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqdG8sIAorCQlURVJNVFlQRSAqZnJvbSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19jb3B5X3Rlcm10eXBlCit2b2lkCV9uY19jb3B5X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqZHN0LCAKKwkJY29uc3QgVEVSTVRZUEUgKnNyYykKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9jb2Rlcy5jICovCisKKyN1bmRlZiBib29sY29kZXMKK2NvbnN0IGNoYXIgKmNvbnN0IGJvb2xjb2Rlc1tdID0gezB9OworI3VuZGVmIG51bWNvZGVzCitjb25zdCBjaGFyICpjb25zdCBudW1jb2Rlc1tdID0gezB9OworI3VuZGVmIHN0cmNvZGVzCitjb25zdCBjaGFyICpjb25zdCBzdHJjb2Rlc1tdID0gezB9OworCisvKiAuL2NvbXBfY2FwdGFiLmMgKi8KKworI2luY2x1ZGUgPGhhc2hzaXplLmg+CisKKyN1bmRlZiBfbmNfZ2V0X3RhYmxlCitjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqX25jX2dldF90YWJsZSgKKwkJTkNVUlNFU19CT09MIHRlcm1jYXApCisJCXsgcmV0dXJuKCooY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF90YWJsZQorY29uc3QgSGFzaFZhbHVlICpfbmNfZ2V0X2hhc2hfdGFibGUoCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hWYWx1ZSAqKikwKTsgfQorCisjdW5kZWYgX25jX2dldF9hbGlhc190YWJsZQorY29uc3Qgc3RydWN0IGFsaWFzICpfbmNfZ2V0X2FsaWFzX3RhYmxlKAorCQlOQ1VSU0VTX0JPT0wgdGVybWNhcCkKKwkJeyByZXR1cm4oKihjb25zdCBzdHJ1Y3QgYWxpYXMgKiopMCk7IH0KKworI3VuZGVmIF9uY19nZXRfaGFzaF9pbmZvCitjb25zdCBIYXNoRGF0YSAqX25jX2dldF9oYXNoX2luZm8oCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKGNvbnN0IEhhc2hEYXRhICoqKTApOyB9CisKKy8qIC4vdGluZm8vY29tcF9lcnJvci5jICovCisKKyN1bmRlZiBfbmNfc3VwcHJlc3Nfd2FybmluZ3MKK05DVVJTRVNfQk9PTCBfbmNfc3VwcHJlc3Nfd2FybmluZ3M7CisjdW5kZWYgX25jX2N1cnJfbGluZQoraW50CV9uY19jdXJyX2xpbmU7CisjdW5kZWYgX25jX2N1cnJfY29sCitpbnQJX25jX2N1cnJfY29sOworCisjdW5kZWYgX25jX2dldF9zb3VyY2UKK2NvbnN0IGNoYXIgKl9uY19nZXRfc291cmNlKHZvaWQpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3NldF9zb3VyY2UKK3ZvaWQJX25jX3NldF9zb3VyY2UoCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfc2V0X3R5cGUKK3ZvaWQJX25jX3NldF90eXBlKAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF90eXBlCit2b2lkCV9uY19nZXRfdHlwZSgKKwkJY2hhcgkqbmFtZSkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY193YXJuaW5nCit2b2lkCV9uY193YXJuaW5nKAorCQljb25zdCBjaGFyICpjb25zdCBmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZXJyX2Fib3J0Cit2b2lkCV9uY19lcnJfYWJvcnQoCisJCWNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgCisJCS4uLikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zeXNlcnJfYWJvcnQKK3ZvaWQJX25jX3N5c2Vycl9hYm9ydCgKKwkJY29uc3QgY2hhciAqY29uc3QgZm10LCAKKwkJLi4uKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL3RpbmZvL2NvbXBfaGFzaC5jICovCisKKyN1bmRlZiBfbmNfZmluZF9lbnRyeQorc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKl9uY19maW5kX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQljb25zdCBIYXNoVmFsdWUgKmhhc2hfdGFibGUpCisJCXsgcmV0dXJuKCooc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKiopMCk7IH0KKworI3VuZGVmIF9uY19maW5kX3R5cGVfZW50cnkKK3N0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpfbmNfZmluZF90eXBlX2VudHJ5KAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQlpbnQJdHlwZSwgCisJCU5DVVJTRVNfQk9PTCB0ZXJtY2FwKQorCQl7IHJldHVybigqKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICoqKTApOyB9CisKKy8qIC4vdGluZm8vZGJfaXRlcmF0b3IuYyAqLworCisjaW5jbHVkZSA8dGltZS5oPgorCisjdW5kZWYgX25jX3RpY19kaXIKK2NvbnN0IGNoYXIgKl9uY190aWNfZGlyKAorCQljb25zdCBjaGFyICpwYXRoKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY19rZWVwX3RpY19kaXIKK3ZvaWQJX25jX2tlZXBfdGljX2RpcigKKwkJY29uc3QgY2hhciAqcGF0aCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19sYXN0X2RiCit2b2lkCV9uY19sYXN0X2RiKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfbmV4dF9kYgorY29uc3QgY2hhciAqX25jX25leHRfZGIoCisJCURCRElSUwkqc3RhdGUsIAorCQlpbnQJKm9mZnNldCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZmlyc3RfZGIKK3ZvaWQJX25jX2ZpcnN0X2RiKAorCQlEQkRJUlMJKnN0YXRlLCAKKwkJaW50CSpvZmZzZXQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vZG9hbGxvYy5jICovCisKKyN1bmRlZiBfbmNfZG9hbGxvYwordm9pZAkqX25jX2RvYWxsb2MoCisJCXZvaWQJKm9sZHAsIAorCQlzaXplX3QJYW1vdW50KQorCQl7IHJldHVybigqKHZvaWQgKiopMCk7IH0KKworLyogLi90aW5mby9lbnRyaWVzLmMgKi8KKworI3VuZGVmIF9uY19oZWFkCitFTlRSWQkqX25jX2hlYWQ7CisjdW5kZWYgX25jX3RhaWwKK0VOVFJZCSpfbmNfdGFpbDsKKworI3VuZGVmIF9uY19mcmVlX2VudHJ5Cit2b2lkCV9uY19mcmVlX2VudHJ5KAorCQlFTlRSWQkqaGVhZHAsIAorCQlURVJNVFlQRSAqdHRlcm0pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZnJlZV9lbnRyaWVzCit2b2lkCV9uY19mcmVlX2VudHJpZXMoCisJCUVOVFJZCSpoZWFkcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19kZWxpbmtfZW50cnkKK0VOVFJZCSpfbmNfZGVsaW5rX2VudHJ5KAorCQlFTlRSWQkqaGVhZHAsIAorCQlURVJNVFlQRSAqdHRlcm0pCisJCXsgcmV0dXJuKCooRU5UUlkgKiopMCk7IH0KKworI3VuZGVmIF9uY19sZWFrc190aW5mbwordm9pZAlfbmNfbGVha3NfdGluZm8odm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi9mYWxsYmFjay5jICovCisKKyN1bmRlZiBfbmNfZmFsbGJhY2sKK2NvbnN0IFRFUk1UWVBFICpfbmNfZmFsbGJhY2soCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooY29uc3QgVEVSTVRZUEUgKiopMCk7IH0KKworLyogLi90aW5mby9mcmVlX3R0eXBlLmMgKi8KKworI3VuZGVmIF9uY19mcmVlX3Rlcm10eXBlCit2b2lkCV9uY19mcmVlX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3VzZXJfZGVmaW5hYmxlCitOQ1VSU0VTX0JPT0wgX25jX3VzZXJfZGVmaW5hYmxlOworCisjdW5kZWYgdXNlX2V4dGVuZGVkX25hbWVzCitpbnQJdXNlX2V4dGVuZGVkX25hbWVzKAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3RpbmZvL2dldGVudl9udW0uYyAqLworCisjdW5kZWYgX25jX2dldGVudl9udW0KK2ludAlfbmNfZ2V0ZW52X251bSgKKwkJY29uc3QgY2hhciAqbmFtZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldGVudl9udW0KK3ZvaWQJX25jX3NldGVudl9udW0oCisJCWNvbnN0IGNoYXIgKm5hbWUsIAorCQlpbnQJdmFsdWUpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vaG9tZV90ZXJtaW5mby5jICovCisKKyN1bmRlZiBfbmNfaG9tZV90ZXJtaW5mbworY2hhcgkqX25jX2hvbWVfdGVybWluZm8odm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vaW5pdF9rZXl0cnkuYyAqLworCisjaWYgMAorCisjaW5jbHVkZSA8aW5pdF9rZXl0cnkuaD4KKworI3VuZGVmIF9uY190aW5mb19ma2V5cworY29uc3Qgc3RydWN0IHRpbmZvX2ZrZXlzIF9uY190aW5mb19ma2V5c1tdID0gezB9OworCisjZW5kaWYKKworI3VuZGVmIF9uY19pbml0X2tleXRyeQordm9pZAlfbmNfaW5pdF9rZXl0cnkoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vbGliX2Fjcy5jICovCisKKyN1bmRlZiBhY3NfbWFwCitjaHR5cGUJYWNzX21hcFsxMjhdOworCisjdW5kZWYgX25jX2luaXRfYWNzX3NwCit2b2lkCV9uY19pbml0X2Fjc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19pbml0X2Fjcwordm9pZAlfbmNfaW5pdF9hY3Modm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9saWJfYmF1ZHJhdGUuYyAqLworCisjaW5jbHVkZSA8dGVybWNhcC5oPgorCitzdHJ1Y3Qgc3BlZWQgeworICAgIHNob3J0IHM7IAorICAgIGludCBzcDsgCit9OworCisjdW5kZWYgX25jX2JhdWRyYXRlCitpbnQJX25jX2JhdWRyYXRlKAorCQlpbnQJT1NwZWVkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfb3NwZWVkCitpbnQJX25jX29zcGVlZCgKKwkJaW50CUJhdWRSYXRlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZV9zcAoraW50CWJhdWRyYXRlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBiYXVkcmF0ZQoraW50CWJhdWRyYXRlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfY3VyX3Rlcm0uYyAqLworCisjdW5kZWYgY3VyX3Rlcm0KK1RFUk1JTkFMICpjdXJfdGVybTsKKworI3VuZGVmIHNldF9jdXJ0ZXJtX3NwCitURVJNSU5BTCAqc2V0X2N1cnRlcm1fc3AoCisJCVNDUkVFTgkqc3AsIAorCQlURVJNSU5BTCAqdGVybXApCisJCXsgcmV0dXJuKCooVEVSTUlOQUwgKiopMCk7IH0KKworI3VuZGVmIHNldF9jdXJ0ZXJtCitURVJNSU5BTCAqc2V0X2N1cnRlcm0oCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihURVJNSU5BTCAqKikwKTsgfQorCisjdW5kZWYgZGVsX2N1cnRlcm1fc3AKK2ludAlkZWxfY3VydGVybV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCVRFUk1JTkFMICp0ZXJtcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsX2N1cnRlcm0KK2ludAlkZWxfY3VydGVybSgKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2RhdGEuYyAqLworCisjdW5kZWYgc3Rkc2NyCitXSU5ET1cJKnN0ZHNjcjsKKyN1bmRlZiBjdXJzY3IKK1dJTkRPVwkqY3Vyc2NyOworI3VuZGVmIG5ld3NjcgorV0lORE9XCSpuZXdzY3I7CisjdW5kZWYgX25jX3NjcmVlbl9jaGFpbgorU0NSRUVOCSpfbmNfc2NyZWVuX2NoYWluOworI3VuZGVmIFNQCitTQ1JFRU4JKlNQOworI3VuZGVmIF9uY19nbG9iYWxzCitOQ1VSU0VTX0dMT0JBTFMgX25jX2dsb2JhbHM7CisjdW5kZWYgX25jX3ByZXNjcmVlbgorTkNVUlNFU19QUkVTQ1JFRU4gX25jX3ByZXNjcmVlbjsKKworI3VuZGVmIF9uY19zY3JlZW5fb2YKK1NDUkVFTgkqX25jX3NjcmVlbl9vZigKKwkJV0lORE9XCSp3aW4pCisJCXsgcmV0dXJuKCooU0NSRUVOICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2hhc19jYXAuYyAqLworCisjdW5kZWYgaGFzX2ljX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2ljX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWMKK05DVVJTRVNfQk9PTCBoYXNfaWModm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgaGFzX2lsX3NwCitOQ1VSU0VTX0JPT0wgaGFzX2lsX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKyN1bmRlZiBoYXNfaWwKK05DVVJTRVNfQk9PTCBoYXNfaWwodm9pZCkKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl9rZXJuZWwuYyAqLworCisjdW5kZWYgZXJhc2VjaGFyX3NwCitjaGFyCWVyYXNlY2hhcl9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGVyYXNlY2hhcgorY2hhcgllcmFzZWNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGtpbGxjaGFyX3NwCitjaGFyCWtpbGxjaGFyX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGNoYXIgKikwKTsgfQorCisjdW5kZWYga2lsbGNoYXIKK2NoYXIJa2lsbGNoYXIodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wX3NwCitpbnQJZmx1c2hpbnBfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGZsdXNoaW5wCitpbnQJZmx1c2hpbnAodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL2xpYl9rZXluYW1lLmMgKi8KKworc3RydWN0IGtuIHsgc2hvcnQgb2Zmc2V0OyBpbnQgY29kZTsgfTsKKworI3VuZGVmIGtleW5hbWVfc3AKK2NvbnN0IGNoYXIgKmtleW5hbWVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXluYW1lCitjb25zdCBjaGFyICprZXluYW1lKAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX2xvbmduYW1lLmMgKi8KKworI3VuZGVmIGxvbmduYW1lX3NwCitjaGFyCSpsb25nbmFtZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBsb25nbmFtZQorY2hhcgkqbG9uZ25hbWUodm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX25hcG1zLmMgKi8KKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisKKyN1bmRlZiBuYXBtc19zcAoraW50CW5hcG1zX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CW1zKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuYXBtcworaW50CW5hcG1zKAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9saWJfb3B0aW9ucy5jICovCisKKyN1bmRlZiBpZGxvaworaW50CWlkbG9rKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBpZGNvawordm9pZAlpZGNvaygKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGhhbGZkZWxheV9zcAoraW50CWhhbGZkZWxheV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBoYWxmZGVsYXkKK2ludAloYWxmZGVsYXkoCisJCWludAl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub2RlbGF5CitpbnQJbm9kZWxheSgKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm90aW1lb3V0CitpbnQJbm90aW1lb3V0KAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB3dGltZW91dAordm9pZAl3dGltZW91dCgKKwkJV0lORE9XCSp3aW4sIAorCQlpbnQJZGVsYXkpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBrZXlwYWQKK2ludAlrZXlwYWQoCisJCVdJTkRPVwkqd2luLCAKKwkJTkNVUlNFU19CT09MIGZsYWcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG1ldGEKK2ludAltZXRhKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjdXJzX3NldF9zcAoraW50CWN1cnNfc2V0X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgY3Vyc19zZXQKK2ludAljdXJzX3NldCgKKwkJaW50CXZpcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHlwZWFoZWFkX3NwCitpbnQJdHlwZWFoZWFkX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWZkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0eXBlYWhlYWQKK2ludAl0eXBlYWhlYWQoCisJCWludAlmZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleV9zcAoraW50CWhhc19rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaGFzX2tleQoraW50CWhhc19rZXkoCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9mbHVzaF9zcAoraW50CV9uY19wdXRwX2ZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfa2V5cGFkCitpbnQJX25jX2tleXBhZCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAlmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Jhdy5jICovCisKKyN1bmRlZiByYXdfc3AKK2ludAlyYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJhdworaW50CXJhdyh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBjYnJlYWtfc3AKK2ludAljYnJlYWtfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIGNicmVhaworaW50CWNicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBxaWZsdXNoX3NwCit2b2lkCXFpZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBxaWZsdXNoCit2b2lkCXFpZmx1c2godm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIG5vcmF3X3NwCitpbnQJbm9yYXdfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIG5vcmF3CitpbnQJbm9yYXcodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWtfc3AKK2ludAlub2NicmVha19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgbm9jYnJlYWsKK2ludAlub2NicmVhayh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBub3FpZmx1c2hfc3AKK3ZvaWQJbm9xaWZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgbm9xaWZsdXNoCit2b2lkCW5vcWlmbHVzaCh2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgaW50cmZsdXNoX3NwCitpbnQJaW50cmZsdXNoX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJV0lORE9XCSp3aW4sIAorCQlOQ1VSU0VTX0JPT0wgZmxhZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgaW50cmZsdXNoCitpbnQJaW50cmZsdXNoKAorCQlXSU5ET1cJKndpbiwgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3NldHVwLmMgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisKKyN1bmRlZiB0dHl0eXBlCitjaGFyCXR0eXR5cGVbMjU2XTsKKyN1bmRlZiBMSU5FUworaW50CUxJTkVTOworI3VuZGVmIENPTFMKK2ludAlDT0xTOworI3VuZGVmIFRBQlNJWkUKK2ludAlUQUJTSVpFOworCisjdW5kZWYgc2V0X3RhYnNpemVfc3AKK2ludAlzZXRfdGFic2l6ZV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAl2YWx1ZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgc2V0X3RhYnNpemUKK2ludAlzZXRfdGFic2l6ZSgKKwkJaW50CXZhbHVlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfaGFuZGxlX3NpZ3dpbmNoCitpbnQJX25jX2hhbmRsZV9zaWd3aW5jaCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdXNlX2Vudl9zcAordm9pZAl1c2VfZW52X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsX3NwCit2b2lkCXVzZV90aW9jdGxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlOQ1VSU0VTX0JPT0wgZikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIHVzZV9lbnYKK3ZvaWQJdXNlX2VudigKKwkJTkNVUlNFU19CT09MIGYpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiB1c2VfdGlvY3RsCit2b2lkCXVzZV90aW9jdGwoCisJCU5DVVJTRVNfQk9PTCBmKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9zY3JlZW5zaXplCit2b2lkCV9uY19nZXRfc2NyZWVuc2l6ZSgKKwkJU0NSRUVOCSpzcCwgCisJCWludAkqbGluZXAsIAorCQlpbnQJKmNvbHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfdXBkYXRlX3NjcmVlbnNpemUKK3ZvaWQJX25jX3VwZGF0ZV9zY3JlZW5zaXplKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX3NldHVwX3RpbmZvCitpbnQJX25jX3NldHVwX3RpbmZvKAorCQljb25zdCBjaGFyICpjb25zdCB0biwgCisJCVRFUk1UWVBFICpjb25zdCB0cCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3RpbmZvX2NtZGNoCit2b2lkCV9uY190aW5mb19jbWRjaCgKKwkJVEVSTUlOQUwgKnRlcm1wLCAKKwkJaW50CXByb3RvKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2dldF9sb2NhbGUKK2NoYXIJKl9uY19nZXRfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3VuaWNvZGVfbG9jYWxlCitpbnQJX25jX3VuaWNvZGVfbG9jYWxlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19sb2NhbGVfYnJlYWtzX2FjcworaW50CV9uY19sb2NhbGVfYnJlYWtzX2FjcygKKwkJVEVSTUlOQUwgKnRlcm1wKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0dXB0ZXJtCitpbnQJX25jX3NldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0LCAKKwkJaW50CXJldXNlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBuZXdfcHJlc2NyCitTQ1JFRU4JKm5ld19wcmVzY3Iodm9pZCkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIHNldHVwdGVybQoraW50CXNldHVwdGVybSgKKwkJY29uc3QgY2hhciAqdG5hbWUsIAorCQlpbnQJRmlsZWRlcywgCisJCWludAkqZXJycmV0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3Rlcm1jYXAuYyAqLworCisjdW5kZWYgVVAKK2NoYXIJKlVQOworI3VuZGVmIEJDCitjaGFyCSpCQzsKKworI3VuZGVmIHRnZXRlbnRfc3AKK2ludAl0Z2V0ZW50X3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY2hhcgkqYnVmcCwgCisJCWNvbnN0IGNoYXIgKm5hbWUpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI2lmIDAKKworI2luY2x1ZGUgPGNhcGRlZmF1bHRzLmM+CisKKyNlbmRpZgorCisjdW5kZWYgdGdldGVudAoraW50CXRnZXRlbnQoCisJCWNoYXIJKmJ1ZnAsIAorCQljb25zdCBjaGFyICpuYW1lKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0ZmxhZ19zcAoraW50CXRnZXRmbGFnX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRmbGFnCitpbnQJdGdldGZsYWcoCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtX3NwCitpbnQJdGdldG51bV9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKmlkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0Z2V0bnVtCitpbnQJdGdldG51bSgKKwkJY29uc3QgY2hhciAqaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRnZXRzdHJfc3AKK2NoYXIJKnRnZXRzdHJfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICppZCwgCisJCWNoYXIJKiphcmVhKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRnZXRzdHIKK2NoYXIJKnRnZXRzdHIoCisJCWNvbnN0IGNoYXIgKmlkLCAKKwkJY2hhcgkqKmFyZWEpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90ZXJtbmFtZS5jICovCisKKyN1bmRlZiB0ZXJtbmFtZV9zcAorY2hhcgkqdGVybW5hbWVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgdGVybW5hbWUKK2NoYXIJKnRlcm1uYW1lKHZvaWQpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90Z290by5jICovCisKKyN1bmRlZiB0Z290bworY2hhcgkqdGdvdG8oCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAl4LCAKKwkJaW50CXkpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90aS5jICovCisKKyN1bmRlZiB0aWdldGZsYWdfc3AKK2ludAl0aWdldGZsYWdfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0ZmxhZworaW50CXRpZ2V0ZmxhZygKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bV9zcAoraW50CXRpZ2V0bnVtX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiB0aWdldG51bQoraW50CXRpZ2V0bnVtKAorCQljb25zdCBjaGFyICpzdHIpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRpZ2V0c3RyX3NwCitjaGFyCSp0aWdldHN0cl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiB0aWdldHN0cgorY2hhcgkqdGlnZXRzdHIoCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdGluZm8vbGliX3RwYXJtLmMgKi8KKworI3VuZGVmIF9uY190cGFybV9lcnIKK2ludAlfbmNfdHBhcm1fZXJyOworCisjdW5kZWYgX25jX3RwYXJtX2FuYWx5emUKK2ludAlfbmNfdHBhcm1fYW5hbHl6ZSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJY2hhcgkqcF9pc19zWzldLCAKKwkJaW50CSpfbmNfcG9wY291bnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHRwYXJtCitjaGFyCSp0cGFybSgKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJLi4uKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIHRpcGFybQorY2hhcgkqdGlwYXJtKAorCQljb25zdCBjaGFyICpzdHJpbmcsIAorCQkuLi4pCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RpbmZvL2xpYl90cHV0cy5jICovCisKKyN1bmRlZiBQQworY2hhcglQQzsKKyN1bmRlZiBvc3BlZWQKK3Nob3J0CW9zcGVlZDsKKyN1bmRlZiBfbmNfbnVsbHNfc2VudAoraW50CV9uY19udWxsc19zZW50OworCisjdW5kZWYgX25jX3NldF9ub19wYWRkaW5nCit2b2lkCV9uY19zZXRfbm9fcGFkZGluZygKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIGRlbGF5X291dHB1dF9zcAoraW50CWRlbGF5X291dHB1dF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltcykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVsYXlfb3V0cHV0CitpbnQJZGVsYXlfb3V0cHV0KAorCQlpbnQJbXMpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19mbHVzaF9zcAordm9pZAlfbmNfZmx1c2hfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfZmx1c2gKK3ZvaWQJX25jX2ZsdXNoKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfb3V0Y2hfc3AKK2ludAlfbmNfb3V0Y2hfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIF9uY19vdXRjaAoraW50CV9uY19vdXRjaCgKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcl9zcAoraW50CV9uY19wdXRjaGFyX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0Y2hhcgoraW50CV9uY19wdXRjaGFyKAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHB1dHBfc3AKK2ludAlwdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwdXRwCitpbnQJcHV0cCgKKwkJY29uc3QgY2hhciAqc3RyaW5nKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcHV0cF9zcAoraW50CV9uY19wdXRwX3NwKAorCQlTQ1JFRU4JKnNwLCAKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3B1dHAKK2ludAlfbmNfcHV0cCgKKwkJY29uc3QgY2hhciAqbmFtZSwgCisJCWNvbnN0IGNoYXIgKnN0cmluZykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHNfc3AKK2ludAl0cHV0c19zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cmluZywgCisJCWludAlhZmZjbnQsIAorCQlOQ1VSU0VTX09VVENfc3Agb3V0YykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX291dGNfd3JhcHBlcgoraW50CV9uY19vdXRjX3dyYXBwZXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYykKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgdHB1dHMKK2ludAl0cHV0cygKKwkJY29uc3QgY2hhciAqc3RyaW5nLCAKKwkJaW50CWFmZmNudCwgCisJCWludAkoKm91dGMpKAorCQlpbnQJcDEpKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlLmMgKi8KKworI3VuZGVmIF9uY190cmFjaW5nCit1bnNpZ25lZCBfbmNfdHJhY2luZzsKKyN1bmRlZiBfbmNfdHB1dHNfdHJhY2UKK2NvbnN0IGNoYXIgKl9uY190cHV0c190cmFjZSA9IHswfTsKKyN1bmRlZiBfbmNfb3V0Y2hhcnMKK2xvbmcJX25jX291dGNoYXJzOworCisjdW5kZWYgdHJhY2UKK3ZvaWQJdHJhY2UoCisJCWNvbnN0IHVuc2lnbmVkIGludCB0cmFjZWxldmVsKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX3RyYWNlZgordm9pZAlfdHJhY2VmKAorCQljb25zdCBjaGFyICpmbXQsIAorCQkuLi4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9ib29sCitOQ1VSU0VTX0JPT0wgX25jX3JldHJhY2VfYm9vbCgKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooTkNVUlNFU19CT09MICopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX2NoYXIKK2NoYXIJX25jX3JldHJhY2VfY2hhcigKKwkJaW50CWNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9pbnQKK2ludAlfbmNfcmV0cmFjZV9pbnQoCisJCWludAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV91bnNpZ25lZAordW5zaWduZWQgX25jX3JldHJhY2VfdW5zaWduZWQoCisJCXVuc2lnbmVkIGNvZGUpCisJCXsgcmV0dXJuKCoodW5zaWduZWQgKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfcHRyCitjaGFyCSpfbmNfcmV0cmFjZV9wdHIoCisJCWNoYXIJKmNvZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY3B0cgorY29uc3QgY2hhciAqX25jX3JldHJhY2VfY3B0cigKKwkJY29uc3QgY2hhciAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9jdm9pZF9wdHIKK2NvbnN0IHZvaWQgKl9uY19yZXRyYWNlX2N2b2lkX3B0cigKKwkJY29uc3Qgdm9pZCAqY29kZSkKKwkJeyByZXR1cm4oKihjb25zdCB2b2lkICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV92b2lkX3B0cgordm9pZAkqX25jX3JldHJhY2Vfdm9pZF9wdHIoCisJCXZvaWQJKmNvZGUpCisJCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2Vfc3AKK1NDUkVFTgkqX25jX3JldHJhY2Vfc3AoCisJCVNDUkVFTgkqY29kZSkKKwkJeyByZXR1cm4oKihTQ1JFRU4gKiopMCk7IH0KKworI3VuZGVmIF9uY19yZXRyYWNlX3dpbgorV0lORE9XCSpfbmNfcmV0cmFjZV93aW4oCisJCVdJTkRPVwkqY29kZSkKKwkJeyByZXR1cm4oKihXSU5ET1cgKiopMCk7IH0KKworLyogLi90cmFjZS9saWJfdHJhY2VhdHIuYyAqLworCisjdW5kZWYgX3RyYWNlYXR0cjIKK2NoYXIJKl90cmFjZWF0dHIyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlYXR0cgorY2hhcgkqX3RyYWNlYXR0cigKKwkJYXR0cl90CW5ld21vZGUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfaW50X2F0dHJfdAoraW50CV9uY19yZXRyYWNlX2ludF9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmV0cmFjZV9hdHRyX3QKK2F0dHJfdAlfbmNfcmV0cmFjZV9hdHRyX3QoCisJCWF0dHJfdAljb2RlKQorCQl7IHJldHVybigqKGF0dHJfdCAqKTApOyB9CisKKyN1bmRlZiBfbmNfYWx0Y2hhcnNldF9uYW1lCitjb25zdCBjaGFyICpfbmNfYWx0Y2hhcnNldF9uYW1lKAorCQlhdHRyX3QJYXR0ciwgCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfdHJhY2VjaHR5cGUyCitjaGFyCSpfdHJhY2VjaHR5cGUyKAorCQlpbnQJYnVmbnVtLCAKKwkJY2h0eXBlCWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF90cmFjZWNodHlwZQorY2hhcgkqX3RyYWNlY2h0eXBlKAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3JldHJhY2VfY2h0eXBlCitjaHR5cGUJX25jX3JldHJhY2VfY2h0eXBlKAorCQljaHR5cGUJY29kZSkKKwkJeyByZXR1cm4oKihjaHR5cGUgKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2NoYXJfdDIKK2NoYXIJKl90cmFjZWNjaGFyX3QyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2NoYXJfdCAqY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2NoYXJfdAorY2hhcgkqX3RyYWNlY2NoYXJfdCgKKwkJY29uc3QgY2NoYXJfdCAqY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL2xpYl90cmFjZWJpdHMuYyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgaW50IHZhbDsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07Cit9IEJJVE5BTUVTOworCisjdW5kZWYgX25jX3RyYWNlX3R0eW1vZGUKK2NoYXIJKl9uY190cmFjZV90dHltb2RlKAorCQlzdHJ1Y3QgdGVybWlvcyAqdHR5KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY190cmFjZWJpdHMKK2NoYXIJKl9uY190cmFjZWJpdHModm9pZCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvbGliX3RyYWNlY2hyLmMgKi8KKworI3VuZGVmIF9uY190cmFjZWNoYXIKK2NoYXIJKl9uY190cmFjZWNoYXIoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY2gpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX3RyYWNlY2hhcgorY2hhcgkqX3RyYWNlY2hhcigKKwkJaW50CWNoKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi90aW5mby9saWJfdHR5ZmxhZ3MuYyAqLworCisjdW5kZWYgX25jX2dldF90dHlfbW9kZV9zcAoraW50CV9uY19nZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfZ2V0X3R0eV9tb2RlCitpbnQJX25jX2dldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgX25jX3NldF90dHlfbW9kZV9zcAoraW50CV9uY19zZXRfdHR5X21vZGVfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlzdHJ1Y3QgdGVybWlvcyAqYnVmKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfc2V0X3R0eV9tb2RlCitpbnQJX25jX3NldF90dHlfbW9kZSgKKwkJc3RydWN0IHRlcm1pb3MgKmJ1ZikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGVfc3AKK2ludAlkZWZfc2hlbGxfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3NoZWxsX21vZGUKK2ludAlkZWZfc2hlbGxfbW9kZSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBkZWZfcHJvZ19tb2RlX3NwCitpbnQJZGVmX3Byb2dfbW9kZV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmX3Byb2dfbW9kZQoraW50CWRlZl9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfcHJvZ19tb2RlX3NwCitpbnQJcmVzZXRfcHJvZ19tb2RlX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldF9wcm9nX21vZGUKK2ludAlyZXNldF9wcm9nX21vZGUodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXRfc2hlbGxfbW9kZV9zcAoraW50CXJlc2V0X3NoZWxsX21vZGVfc3AoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHJlc2V0X3NoZWxsX21vZGUKK2ludAlyZXNldF9zaGVsbF9tb2RlKHZvaWQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworI3VuZGVmIHNhdmV0dHlfc3AKK2ludAlzYXZldHR5X3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBzYXZldHR5CitpbnQJc2F2ZXR0eSh2b2lkKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiByZXNldHR5X3NwCitpbnQJcmVzZXR0eV9zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgcmVzZXR0eQoraW50CXJlc2V0dHkodm9pZCkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3R0eS9saWJfdHdhaXQuYyAqLworCisjdW5kZWYgX25jX3RpbWVkX3dhaXQKK2ludAlfbmNfdGltZWRfd2FpdCgKKwkJU0NSRUVOCSpzcCwgCisJCWludAltb2RlLCAKKwkJaW50CW1pbGxpc2Vjb25kcywgCisJCWludAkqdGltZWxlZnQpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9uYW1lX21hdGNoLmMgKi8KKworI3VuZGVmIF9uY19maXJzdF9uYW1lCitjaGFyCSpfbmNfZmlyc3RfbmFtZSgKKwkJY29uc3QgY2hhciAqY29uc3Qgc3ApCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX25hbWVfbWF0Y2gKK2ludAlfbmNfbmFtZV9tYXRjaCgKKwkJY29uc3QgY2hhciAqY29uc3QgbmFtZWxzdCwgCisJCWNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIAorCQljb25zdCBjaGFyICpjb25zdCBkZWxpbSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL25hbWVzLmMgKi8KKworI3VuZGVmIGJvb2xuYW1lcworY29uc3QgY2hhciAqY29uc3QgYm9vbG5hbWVzW10gPSB7MH07CisjdW5kZWYgYm9vbGZuYW1lcworY29uc3QgY2hhciAqY29uc3QgYm9vbGZuYW1lc1tdID0gezB9OworI3VuZGVmIG51bW5hbWVzCitjb25zdCBjaGFyICpjb25zdCBudW1uYW1lc1tdID0gezB9OworI3VuZGVmIG51bWZuYW1lcworY29uc3QgY2hhciAqY29uc3QgbnVtZm5hbWVzW10gPSB7MH07CisjdW5kZWYgc3RybmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0IHN0cm5hbWVzW10gPSB7MH07CisjdW5kZWYgc3RyZm5hbWVzCitjb25zdCBjaGFyICpjb25zdCBzdHJmbmFtZXNbXSA9IHswfTsKKworLyogLi90aW5mby9vYnNvbGV0ZS5jICovCisKKyN1bmRlZiBfbmNfc2V0X2J1ZmZlcl9zcAordm9pZAlfbmNfc2V0X2J1ZmZlcl9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCUZJTEUJKm9mcCwgCisJCWludAlidWZmZXJlZCkKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19zZXRfYnVmZmVyCit2b2lkCV9uY19zZXRfYnVmZmVyKAorCQlGSUxFCSpvZnAsIAorCQlpbnQJYnVmZmVyZWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vdGluZm8vcmVhZF9lbnRyeS5jICovCisKKyNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KKworI3VuZGVmIF9uY19pbml0X3Rlcm10eXBlCit2b2lkCV9uY19pbml0X3Rlcm10eXBlKAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtdHlwZQoraW50CV9uY19yZWFkX3Rlcm10eXBlKAorCQlURVJNVFlQRSAqcHRyLCAKKwkJY2hhcgkqYnVmZmVyLCAKKwkJaW50CWxpbWl0KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9maWxlX2VudHJ5CitpbnQJX25jX3JlYWRfZmlsZV9lbnRyeSgKKwkJY29uc3QgY2hhciAqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqcHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVhZF9lbnRyeQoraW50CV9uY19yZWFkX2VudHJ5KAorCQljb25zdCBjaGFyICpjb25zdCBuYW1lLCAKKwkJY2hhcgkqY29uc3QgZmlsZW5hbWUsIAorCQlURVJNVFlQRSAqY29uc3QgdHApCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby9yZWFkX3Rlcm1jYXAuYyAqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyN1bmRlZiBfbmNfcmVhZF90ZXJtY2FwCit2b2lkCV9uY19yZWFkX3Rlcm1jYXAodm9pZCkKKwkJeyAvKiB2b2lkICovIH0KKworLyogLi90aW5mby9zdHJpbmdzLmMgKi8KKworI3VuZGVmIF9uY19zdHJfaW5pdAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfaW5pdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNoYXIJKnNyYywgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfbnVsbAorc3RyaW5nX2Rlc2MgKl9uY19zdHJfbnVsbCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXNpemVfdAlsZW4pCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zdHJfY29weQorc3RyaW5nX2Rlc2MgKl9uY19zdHJfY29weSgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCXN0cmluZ19kZXNjICpzcmMpCisJCXsgcmV0dXJuKCooc3RyaW5nX2Rlc2MgKiopMCk7IH0KKworI3VuZGVmIF9uY19zYWZlX3N0cmNhdAorTkNVUlNFU19CT09MIF9uY19zYWZlX3N0cmNhdCgKKwkJc3RyaW5nX2Rlc2MgKmRzdCwgCisJCWNvbnN0IGNoYXIgKnNyYykKKwkJeyByZXR1cm4oKihOQ1VSU0VTX0JPT0wgKikwKTsgfQorCisjdW5kZWYgX25jX3NhZmVfc3RyY3B5CitOQ1VSU0VTX0JPT0wgX25jX3NhZmVfc3RyY3B5KAorCQlzdHJpbmdfZGVzYyAqZHN0LCAKKwkJY29uc3QgY2hhciAqc3JjKQorCQl7IHJldHVybigqKE5DVVJTRVNfQk9PTCAqKTApOyB9CisKKy8qIC4vdHJhY2UvdHJhY2VfYnVmLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV9idWYKK2NoYXIJKl9uY190cmFjZV9idWYoCisJCWludAlidWZudW0sIAorCQlzaXplX3QJd2FudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdHJhY2VfYnVmY2F0CitjaGFyCSpfbmNfdHJhY2VfYnVmY2F0KAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3QgY2hhciAqdmFsdWUpCisJCXsgcmV0dXJuKCooY2hhciAqKikwKTsgfQorCisvKiAuL3RyYWNlL3RyYWNlX3RyaWVzLmMgKi8KKworI3VuZGVmIF9uY190cmFjZV90cmllcwordm9pZAlfbmNfdHJhY2VfdHJpZXMoCisJCVRSSUVTCSp0cmVlKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2UvdHJpZXMuYyAqLworCisjdW5kZWYgX25jX2V4cGFuZF90cnkKK2NoYXIJKl9uY19leHBhbmRfdHJ5KAorCQlUUklFUwkqdHJlZSwgCisJCXVuc2lnbmVkIGNvZGUsIAorCQlpbnQJKmNvdW50LCAKKwkJc2l6ZV90CWxlbikKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX2tleQoraW50CV9uY19yZW1vdmVfa2V5KAorCQlUUklFUwkqKnRyZWUsIAorCQl1bnNpZ25lZCBjb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBfbmNfcmVtb3ZlX3N0cmluZworaW50CV9uY19yZW1vdmVfc3RyaW5nKAorCQlUUklFUwkqKnRyZWUsIAorCQljb25zdCBjaGFyICpzdHJpbmcpCisJCXsgcmV0dXJuKCooaW50ICopMCk7IH0KKworLyogLi90aW5mby90cmltX3NncjAuYyAqLworCisjdW5kZWYgX25jX3RyaW1fc2dyMAorY2hhcgkqX25jX3RyaW1fc2dyMCgKKwkJVEVSTVRZUEUgKnRwKQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi91bmN0cmwuYyAqLworCisjdW5kZWYgdW5jdHJsX3NwCitjb25zdCBjaGFyICp1bmN0cmxfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljaHR5cGUJY2gpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgdW5jdHJsCitjb25zdCBjaGFyICp1bmN0cmwoCisJCWNodHlwZQljaCkKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKy8qIC4vdHJhY2UvdmlzYnVmLmMgKi8KKworI3VuZGVmIF9uY192aXNidWYyCitjb25zdCBjaGFyICpfbmNfdmlzYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNoYXIgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzYnVmCitjb25zdCBjaGFyICpfbmNfdmlzYnVmKAorCQljb25zdCBjaGFyICpidWYpCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2J1Zm4KK2NvbnN0IGNoYXIgKl9uY192aXNidWZuKAorCQljb25zdCBjaGFyICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmMgorY29uc3QgY2hhciAqX25jX3Zpc3didWYyKAorCQlpbnQJYnVmbnVtLCAKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmCitjb25zdCBjaGFyICpfbmNfdmlzd2J1ZigKKwkJY29uc3Qgd2NoYXJfdCAqYnVmKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3YnVmbgorY29uc3QgY2hhciAqX25jX3Zpc3didWZuKAorCQljb25zdCB3Y2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworI3VuZGVmIF9uY192aXN3aWJ1ZgorY29uc3QgY2hhciAqX25jX3Zpc3dpYnVmKAorCQljb25zdCB3aW50X3QgKmJ1ZikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfdmlzY2J1ZjIKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmMigKKwkJaW50CWJ1Zm51bSwgCisJCWNvbnN0IGNjaGFyX3QgKmJ1ZiwgCisJCWludAlsZW4pCisJCXsgcmV0dXJuKCooY29uc3QgY2hhciAqKikwKTsgfQorCisjdW5kZWYgX25jX3Zpc2NidWYKK2NvbnN0IGNoYXIgKl9uY192aXNjYnVmKAorCQljb25zdCBjY2hhcl90ICpidWYsIAorCQlpbnQJbGVuKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2RlZmluZV9rZXkuYyAqLworCisjdW5kZWYgZGVmaW5lX2tleV9zcAoraW50CWRlZmluZV9rZXlfc3AoCisJCVNDUkVFTgkqc3AsIAorCQljb25zdCBjaGFyICpzdHIsIAorCQlpbnQJa2V5Y29kZSkKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYgZGVmaW5lX2tleQoraW50CWRlZmluZV9rZXkoCisJCWNvbnN0IGNoYXIgKnN0ciwgCisJCWludAlrZXljb2RlKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vdGluZm8vaGFzaGVkX2RiLmMgKi8KKworI3VuZGVmIF9uY19oYXNoZWRfZGIKK3ZvaWQJX25jX2hhc2hlZF9kYih2b2lkKQorCQl7IC8qIHZvaWQgKi8gfQorCisvKiAuL2Jhc2Uva2V5X2RlZmluZWQuYyAqLworCisjdW5kZWYga2V5X2RlZmluZWRfc3AKK2ludAlrZXlfZGVmaW5lZF9zcCgKKwkJU0NSRUVOCSpzcCwgCisJCWNvbnN0IGNoYXIgKnN0cikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisjdW5kZWYga2V5X2RlZmluZWQKK2ludAlrZXlfZGVmaW5lZCgKKwkJY29uc3QgY2hhciAqc3RyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS9rZXlib3VuZC5jICovCisKKyN1bmRlZiBrZXlib3VuZF9zcAorY2hhcgkqa2V5Ym91bmRfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJY29kZSwgCisJCWludAljb3VudCkKKwkJeyByZXR1cm4oKihjaGFyICoqKTApOyB9CisKKyN1bmRlZiBrZXlib3VuZAorY2hhcgkqa2V5Ym91bmQoCisJCWludAljb2RlLCAKKwkJaW50CWNvdW50KQorCQl7IHJldHVybigqKGNoYXIgKiopMCk7IH0KKworLyogLi9iYXNlL2tleW9rLmMgKi8KKworI3VuZGVmIGtleW9rX3NwCitpbnQJa2V5b2tfc3AoCisJCVNDUkVFTgkqc3AsIAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBrZXlvaworaW50CWtleW9rKAorCQlpbnQJYywgCisJCU5DVVJTRVNfQk9PTCBmbGFnKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vYmFzZS92ZXJzaW9uLmMgKi8KKworI3VuZGVmIGN1cnNlc192ZXJzaW9uCitjb25zdCBjaGFyICpjdXJzZXNfdmVyc2lvbih2b2lkKQorCQl7IHJldHVybigqKGNvbnN0IGNoYXIgKiopMCk7IH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvbWFrZV9oYXNoIGIvbmN1cnNlcy9tYWtlX2hhc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRkN2YyYjQuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9tYWtlX2hhc2gKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9uY3Vyc2VzL21ha2Vfa2V5cyBiL25jdXJzZXMvbWFrZV9rZXlzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjNjExMTA1Li4wMDAwMDAwCi0tLSBhL25jdXJzZXMvbWFrZV9rZXlzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy9tb2R1bGVzIGIvbmN1cnNlcy9tb2R1bGVzCmluZGV4IGYyOGVmODEuLmIzYjk3MzIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvbW9kdWxlcworKysgYi9uY3Vyc2VzL21vZHVsZXMKQEAgLTEsNiArMSw2IEBACi0jICRJZDogbW9kdWxlcyx2IDEuMTEyIDIwMDcvMDkvMDggMjI6MDM6MzQgdG9tIEV4cCAkCisjICRJZDogbW9kdWxlcyx2IDEuMTIwIDIwMTMvMDEvMjYgMjI6MTc6NTUgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0zMiwyMDEgKzMyLDIxMyBAQAogCiBAIGJhc2UKICMgTGlicmFyeSBvYmplY3RzCi1oYXJkc2Nyb2xsCWxpYgkJJChzZXJpYWwpCi1oYXNobWFwCQlsaWIJCSQoc2VyaWFsKQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX2FkZGNoCWxpYgkJJChiYXNlKQotbGliX2FkZHN0cglsaWIJCSQoYmFzZSkKLWxpYl9iZWVwCWxpYgkJJChiYXNlKQkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9ia2dkCWxpYgkJJChiYXNlKQotbGliX2JveCAJbGliCQkkKGJhc2UpCi1saWJfY2hnYXQJbGliCQkkKGJhc2UpCi1saWJfY2xlYXIJbGliCQkkKGJhc2UpCi1saWJfY2xlYXJvawlsaWIJCSQoYmFzZSkKLWxpYl9jbHJib3QJbGliCQkkKGJhc2UpCi1saWJfY2xyZW9sCWxpYgkJJChiYXNlKQotbGliX2NvbG9yCWxpYgkJJChiYXNlKQkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9jb2xvcnNldAlsaWIJCSQoYmFzZSkKLWxpYl9kZWxjaAlsaWIJCSQoYmFzZSkKLWxpYl9kZWx3aW4JbGliCQkkKGJhc2UpCi1saWJfZWNobwlsaWIJCSQoYmFzZSkKLWxpYl9lbmR3aW4JbGliCQkkKGJhc2UpCQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX2VyYXNlCWxpYgkJJChiYXNlKQotbGliX2ZsYXNoCWxpYgkJJChiYXNlKQkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9nZW4gCWxpYgkJLgkJLi4vaW5jbHVkZS9jdXJzZXMuaAotbGliX2dldGNoCWxpYgkJJChiYXNlKQotbGliX2dldHN0cglsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfaGxpbmUJbGliCQkkKGJhc2UpCi1saWJfaW1tZWRvawlsaWIJCSQoYmFzZSkKLWxpYl9pbmNoc3RyCWxpYgkJJChiYXNlKQotbGliX2luaXRzY3IJbGliCQkkKGJhc2UpCQkkKElOQ0RJUikvdGljLmgKLWxpYl9pbnNjaAlsaWIJCSQoYmFzZSkKLWxpYl9pbnNkZWwJbGliCQkkKGJhc2UpCi1saWJfaW5zbnN0cglsaWIJCSQoYmFzZSkKLWxpYl9pbnN0cglsaWIJCSQoYmFzZSkKLWxpYl9pc2VuZHdpbglsaWIJCSQoYmFzZSkKLWxpYl9sZWF2ZW9rCWxpYgkJJChiYXNlKQotbGliX21vdXNlCWxpYgkJJChiYXNlKQkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9tb3ZlCWxpYgkJJChiYXNlKQotbGliX212Y3VyCWxpYgkJJChzZXJpYWwpCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90aWMuaAotbGliX212d2luCWxpYgkJJChiYXNlKQotbGliX25ld3Rlcm0JbGliCQkkKGJhc2UpCQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX25ld3dpbglsaWIJCSQoYmFzZSkKLWxpYl9ubAkJbGliCQkkKGJhc2UpCi1saWJfb3ZlcmxheQlsaWIJCSQoYmFzZSkKLWxpYl9wYWQgCWxpYgkJJChiYXNlKQotbGliX3ByaW50dwlsaWIJCSQoYmFzZSkKLWxpYl9yZWRyYXdsbglsaWIJCSQoYmFzZSkKLWxpYl9yZWZyZXNoCWxpYgkJJChiYXNlKQotbGliX3Jlc3RhcnQJbGliCQkkKGJhc2UpCQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX3NjYW53CWxpYgkJJChiYXNlKQotbGliX3NjcmVlbglsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfc2Nyb2xsCWxpYgkJJChiYXNlKQotbGliX3Njcm9sbG9rCWxpYgkJJChiYXNlKQotbGliX3NjcnJlZwlsaWIJCSQoYmFzZSkKLWxpYl9zZXRfdGVybQlsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfc2xrIAlsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfc2xrYXRyX3NldAlsaWIJCSQoYmFzZSkKLWxpYl9zbGthdHJvZiAJbGliCQkkKGJhc2UpCi1saWJfc2xrYXRyb24gCWxpYgkJJChiYXNlKQotbGliX3Nsa2F0cnNldCAJbGliCQkkKGJhc2UpCi1saWJfc2xrYXR0ciAJbGliCQkkKGJhc2UpCi1saWJfc2xrY2xlYXIgCWxpYgkJJChiYXNlKQotbGliX3Nsa2NvbG9yIAlsaWIJCSQoYmFzZSkKLWxpYl9zbGtpbml0IAlsaWIJCSQoYmFzZSkKLWxpYl9zbGtsYWIJbGliCQkkKGJhc2UpCi1saWJfc2xrcmVmcglsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfc2xrc2V0CWxpYgkJJChiYXNlKQotbGliX3Nsa3RvdWNoCWxpYgkJJChiYXNlKQotbGliX3RvdWNoCWxpYgkJJChiYXNlKQotbGliX3RyYWNlZG1wCWxpYgkJJCh0cmFjZSkKLWxpYl90cmFjZW1zZQlsaWIJCSQodHJhY2UpCi1saWJfdHN0cAlsaWIJCSQoc2VyaWFsKQkkKHNyY2RpcikvU2lnQWN0aW9uLmgKLWxpYl91bmdldGNoCWxpYgkJJChiYXNlKQotbGliX3ZpZGF0dHIJbGliCQkkKHNlcmlhbCkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl92bGluZQlsaWIJCSQoYmFzZSkKLWxpYl93YXR0cm9mZglsaWIJCSQoYmFzZSkKLWxpYl93YXR0cm9uCWxpYgkJJChiYXNlKQotbGliX3dpbmNoCWxpYgkJJChiYXNlKQotbGliX3dpbmRvdwlsaWIJCSQoYmFzZSkKLWxpbmtfdGVzdCAJbGliCQkuCQkuLi9pbmNsdWRlL2N1cnNlcy5oCi1uY19wYW5lbAlsaWIJCSQoYmFzZSkKLXNhZmVfc3ByaW50ZglsaWIJCSQoYmFzZSkKLXR0eV91cGRhdGUJbGliCQkkKHNlcmlhbCkJLi4vaW5jbHVkZS90ZXJtLmgKLXZhcmFyZ3MJCWxpYgkJJCh0cmFjZSkKK2hhcmRzY3JvbGwJbGliCQkkKHNlcmlhbCkJJChIRUFERVJfREVQUykKK2hhc2htYXAJCWxpYgkJJChzZXJpYWwpCSQoSEVBREVSX0RFUFMpCitsaWJfYWRkY2gJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2FkZHN0cglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfYmVlcAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfYmtnZAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfYm94IAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfY2hnYXQJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2NsZWFyCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9jbGVhcm9rCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9jbHJib3QJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2NscmVvbAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfY29sb3IJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2xpYl9jb2xvcnNldAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZGVsY2gJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2RlbHdpbglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZWNobwlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZW5kd2luCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9lcmFzZQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZmxhc2gJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2dlbiAJbGliCQkuCQkkKEhFQURFUl9ERVBTKQorbGliX2dldGNoCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykJJChzcmNkaXIpL2ZpZm9fZGVmcy5oCitsaWJfZ2V0c3RyCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9obGluZQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW1tZWRvawlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5jaHN0cglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5pdHNjcglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5zY2gJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2luc2RlbAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5zbnN0cglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5zdHIJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX2lzZW5kd2luCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9sZWF2ZW9rCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9tb3VzZQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorbGliX21vdmUJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX212Y3VyCWxpYgkJJChzZXJpYWwpCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaCAkKHNyY2RpcikvLi4vcHJvZ3MvZHVtcF9lbnRyeS5oCitsaWJfbXZ3aW4JbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX25ld3Rlcm0JbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2xpYl9uZXd3aW4JbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX25sCQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfb3ZlcmxheQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfcGFkIAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfcHJpbnR3CWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9yZWRyYXdsbglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfcmVmcmVzaAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfcmVzdGFydAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2NhbncJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3NjcmVlbglsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2Nyb2xsCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zY3JvbGxvawlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2NycmVnCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zZXRfdGVybQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorbGliX3NsayAJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3Nsa2F0cl9zZXQJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3Nsa2F0cm9mIAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2xrYXRyb24gCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zbGthdHJzZXQgCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zbGthdHRyIAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2xrY2xlYXIgCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zbGtjb2xvciAJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3Nsa2luaXQgCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9zbGtsYWIJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3Nsa3JlZnIJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3Nsa3NldAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2xrdG91Y2gJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3RvdWNoCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl90cmFjZWRtcAlsaWIJCSQodHJhY2UpCSQoSEVBREVSX0RFUFMpCitsaWJfdHJhY2Vtc2UJbGliCQkkKHRyYWNlKQkkKEhFQURFUl9ERVBTKQorbGliX3RzdHAJbGliCQkkKHNlcmlhbCkJJChIRUFERVJfREVQUykJJChzcmNkaXIpL1NpZ0FjdGlvbi5oCitsaWJfdW5nZXRjaAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCSQoc3JjZGlyKS9maWZvX2RlZnMuaAorbGliX3ZpZGF0dHIJbGliCQkkKHNlcmlhbCkJJChIRUFERVJfREVQUykKK2xpYl92bGluZQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfd2F0dHJvZmYJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3dhdHRyb24JbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGliX3dpbmNoCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl93aW5kb3cJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorbGlua190ZXN0IAlsaWIJCS4JCSQoSEVBREVSX0RFUFMpCituY19wYW5lbAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitzYWZlX3NwcmludGYJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQordHR5X3VwZGF0ZQlsaWIJCSQoc2VyaWFsKQkkKEhFQURFUl9ERVBTKQordmFyYXJncwkJbGliCQkkKHRyYWNlKQkkKEhFQURFUl9ERVBTKQogCiAjIE1vZHVsZXMgZm9yIHBvcnRpbmcKLW1lbW1vdmUJCWxpYgkJJChiYXNlKQotdnNzY2FuZiAJbGliCQkkKGJhc2UpCit2c3NjYW5mIAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCiAKICMgYWN0dWFsbHkgYW4gZXh0ZW5zaW9uLCBidXQgd2l0aCBpdHMgb3duIGNvbmZpZ3VyZSBvcHRpb24gKC0tZGlzYWJsZS1sZWFrcykKLWxpYl9mcmVlYWxsCWxpYgkJJChiYXNlKQorbGliX2ZyZWVhbGwJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKIAogIyBYU0kgZXh0ZW5zaW9ucyB0byB0aGUgYmFzZSBsaWJyYXJ5ICh3aWRlLWNoYXJhY3RlcikKIEAgd2lkZWNoYXIKLWNoYXJhYmxlCWxpYgkJJCh3aWRlKQotbGliX2FkZF93Y2gJbGliCQkkKHdpZGUpCi1saWJfYm94X3NldAlsaWIJCSQod2lkZSkKLWxpYl9jY2hhcglsaWIJCSQod2lkZSkKLWxpYl9lcmFzZXdjaGFyCWxpYgkJJCh3aWRlKQotbGliX2dldF93Y2gJbGliCQkkKHdpZGUpCi1saWJfZ2V0X3dzdHIJbGliCQkkKHdpZGUpCi1saWJfaGxpbmVfc2V0CWxpYgkJJCh3aWRlKQotbGliX2luX3djaAlsaWIJCSQod2lkZSkKLWxpYl9pbl93Y2huc3RyCWxpYgkJJCh3aWRlKQotbGliX2luc193Y2gJbGliCQkkKHdpZGUpCi1saWJfaW53c3RyCWxpYgkJJCh3aWRlKQotbGliX2tleV9uYW1lCWxpYgkJJCh3aWRlKQotbGliX3BlY2hvX3djaGFyCWxpYgkJJCh3aWRlKQotbGliX3Nsa193c2V0CWxpYgkJJCh3aWRlKQotbGliX3VuZ2V0X3djaAlsaWIJCSQod2lkZSkKLWxpYl92aWRfYXR0cglsaWIJCSQod2lkZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfdmxpbmVfc2V0CWxpYgkJJCh3aWRlKQotbGliX3dhY3MJbGliCQkkKHdpZGUpCi1saWJfd3VuY3RybAlsaWIJCSQod2lkZSkKK2NoYXJhYmxlCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9hZGRfd2NoCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9ib3hfc2V0CWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9jY2hhcglsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZXJhc2V3Y2hhcglsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZ2V0X3djaAlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfZ2V0X3dzdHIJbGliCQkkKHdpZGUpCQkkKEhFQURFUl9ERVBTKQorbGliX2hsaW5lX3NldAlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfaW5fd2NoCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9pbl93Y2huc3RyCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9pbnNfd2NoCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9pbndzdHIJbGliCQkkKHdpZGUpCQkkKEhFQURFUl9ERVBTKQorbGliX2tleV9uYW1lCWxpYgkJJCh3aWRlKQkJJChIRUFERVJfREVQUykKK2xpYl9wZWNob193Y2hhcglsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfc2xrX3dzZXQJbGliCQkkKHdpZGUpCQkkKEhFQURFUl9ERVBTKQorbGliX3VuZ2V0X3djaAlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfdmlkX2F0dHIJbGliCQkkKHdpZGUpCQkkKEhFQURFUl9ERVBTKQorbGliX3ZsaW5lX3NldAlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfd2FjcwlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfd3VuY3RybAlsaWIJCSQod2lkZSkJCSQoSEVBREVSX0RFUFMpCiAKICMgRXh0ZW5zaW9ucyB0byB0aGUgYmFzZSBsaWJyYXJ5CiBAIGV4dF9mdW5jcwotZXhwYW5kZWQJbGliCQkuCi1sZWdhY3lfY29kaW5nCWxpYgkJJChiYXNlKQkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9kZnRfZmdiZwlsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfcHJpbnQJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaAotcmVzaXpldGVybQlsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCi10cmFjZV94bmFtZXMJbGliCQkkKHRyYWNlKQkuLi9pbmNsdWRlL3Rlcm0uaCAkKElOQ0RJUikvdGVybV9lbnRyeS5oCi11c2Vfc2NyZWVuCWxpYgkJJCh0aW5mbykKLXVzZV93aW5kb3cJbGliCQkkKGJhc2UpCi13cmVzaXplCQlsaWIJCSQoYmFzZSkJCS4uL2luY2x1ZGUvdGVybS5oCitleHBhbmRlZAlsaWIJCS4JCSQoSEVBREVSX0RFUFMpCitsZWdhY3lfY29kaW5nCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK2xpYl9kZnRfZmdiZwlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitsaWJfcHJpbnQJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorcmVzaXpldGVybQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCit0cmFjZV94bmFtZXMJbGliCQkkKHRyYWNlKQkkKEhFQURFUl9ERVBTKQordXNlX3NjcmVlbglsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCit1c2Vfd2luZG93CWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKK3dyZXNpemUJCWxpYgkJJChiYXNlKQkJJChIRUFERVJfREVQUykKIAogIyBTdXBwb3J0IGZvciB0ZXJtY2FwIChhbmQgdGljLCBldGMuKSwgd2hpY2ggY2FuIGJlIGEgc2VwYXJhdGUgbGlicmFyeQogQCB0ZXJtbGliCi1hY2Nlc3MJCWxpYgkJJCh0aW5mbykKLWFkZF90cmllcwlsaWIJCSQodGluZm8pCi1hbGxvY190dHlwZQlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90ZXJtX2VudHJ5LmggJChJTkNESVIpL3RpYy5oCi1jb2RlcwkJbGliCQkuCi1jb21wX2Vycm9yCWxpYgkJJCh0aW5mbykJJChJTkNESVIpL3RpYy5oCi1kYl9pdGVyYXRvcglsaWIJCSQodGluZm8pCSQoSU5DRElSKS90aWMuaAotZG9hbGxvYwkJbGliCQkkKHRpbmZvKQotZW50cmllcwkJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaCAkKElOQ0RJUikvdGljLmgKLWZhbGxiYWNrCWxpYgkJLgkJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3RpYy5oCi1mcmVlX3R0eXBlCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaCAkKElOQ0RJUikvdGljLmgKLWdldGVudl9udW0JbGliCQkkKHRpbmZvKQotaG9tZV90ZXJtaW5mbwlsaWIJCSQodGluZm8pCi1pbml0X2tleXRyeQlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90aWMuaCBpbml0X2tleXRyeS5oCi1saWJfYWNzIAlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfYmF1ZHJhdGUJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX2N1cl90ZXJtCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaAotbGliX2RhdGEJbGliCQkkKHRpbmZvKQotbGliX2hhc19jYXAJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX2tlcm5lbAlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfa2V5bmFtZQlsaWIJCS4JCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfbG9uZ25hbWUJbGliCQkkKHRpbmZvKQotbGliX25hcG1zCWxpYgkJJCh0aW5mbykKLWxpYl9vcHRpb25zCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9yYXcgCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl9zZXR1cAlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90ZXJtX2VudHJ5LmgKLWxpYl90ZXJtY2FwCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaCAkKElOQ0RJUikvdGljLmggJChJTkNESVIpL2NhcGRlZmF1bHRzLmMKLWxpYl90ZXJtbmFtZQlsaWIJCSQodGluZm8pCSQoSU5DRElSKS90aWMuaAotbGliX3Rnb3RvCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3RpYy5oCi1saWJfdGkJCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaCAkKElOQ0RJUikvdGljLmgKLWxpYl90cGFybQlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90aWMuaAotbGliX3RwdXRzCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3RpYy5oCi1saWJfdHJhY2UJbGliCQkkKHRyYWNlKQkkKElOQ0RJUikvdGljLmgKLWxpYl90cmFjZWF0cglsaWIJCSQodHJhY2UpCS4uL2luY2x1ZGUvdGVybS5oCi1saWJfdHJhY2ViaXRzCWxpYgkJJCh0cmFjZSkJLi4vaW5jbHVkZS90ZXJtLmgKLWxpYl90cmFjZWNocglsaWIJCSQodHJhY2UpCi1saWJfdHR5ZmxhZ3MJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaAotbGliX3R3YWl0CWxpYgkJJChzZXJpYWwpCi1uYW1lX21hdGNoCWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3RpYy5oCi1uYW1lcwkJbGliCQkuCi1yZWFkX2VudHJ5CWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaCAkKElOQ0RJUikvdGljLmgKLXJlYWRfdGVybWNhcAlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90ZXJtX2VudHJ5LmggJChJTkNESVIpL3RpYy5oCi1zZXRidWYJCWxpYgkJJCh0aW5mbykKLXN0cmluZ3MJCWxpYgkJJCh0aW5mbykKLXRyYWNlX2J1ZglsaWIJCSQodHJhY2UpCi10cmFjZV90cmllcwlsaWIJCSQodHJhY2UpCi10cmllcwkJbGliCQkkKGJhc2UpCi10cmltX3NncjAJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaCAkKElOQ0RJUikvdGVybV9lbnRyeS5oICQoSU5DRElSKS90aWMuaAotdW5jdHJsCQlsaWIJCS4KLXZpc2J1ZgkJbGliCQkkKHRyYWNlKQkkKElOQ0RJUikvdGljLmgKK2FjY2VzcwkJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2FkZF90cmllcwlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCithbGxvY190dHlwZQlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorY29kZXMJCWxpYgkJLgkJJChIRUFERVJfREVQUykKK2NvbXBfY2FwdGFiCWxpYgkJLgkJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvaGFzaHNpemUuaAorY29tcF9lcnJvcglsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorY29tcF9oYXNoCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvaGFzaHNpemUuaAorZGJfaXRlcmF0b3IJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2RvYWxsb2MJCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykKK2VudHJpZXMJCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCitmYWxsYmFjawlsaWIJCS4JCSQoSEVBREVSX0RFUFMpCitmcmVlX3R0eXBlCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCitnZXRlbnZfbnVtCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykKK2hvbWVfdGVybWluZm8JbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2luaXRfa2V5dHJ5CWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIGluaXRfa2V5dHJ5LmgKK2xpYl9hY3MgCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykKK2xpYl9iYXVkcmF0ZQlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCS4uL2luY2x1ZGUvdGVybWNhcC5oCitsaWJfY3VyX3Rlcm0JbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkuLi9pbmNsdWRlL3Rlcm1jYXAuaAorbGliX2RhdGEJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorbGliX2hhc19jYXAJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorbGliX2tlcm5lbAlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCitsaWJfa2V5bmFtZQlsaWIJCS4JCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorbGliX2xvbmduYW1lCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykKK2xpYl9uYXBtcwlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCitsaWJfb3B0aW9ucwlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCitsaWJfcmF3IAlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCitsaWJfc2V0dXAJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2xpYl90ZXJtY2FwCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvdGVybWNhcC5oICQoSU5DRElSKS9jYXBkZWZhdWx0cy5jCitsaWJfdGVybW5hbWUJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorbGliX3Rnb3RvCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJLi4vaW5jbHVkZS90ZXJtY2FwLmgKK2xpYl90aQkJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2xpYl90cGFybQlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorbGliX3RwdXRzCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvdGVybWNhcC5oCitsaWJfdHJhY2UJbGliCQkkKHRyYWNlKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2xpYl90cmFjZWF0cglsaWIJCSQodHJhY2UpCSQoSEVBREVSX0RFUFMpCitsaWJfdHJhY2ViaXRzCWxpYgkJJCh0cmFjZSkJJChIRUFERVJfREVQUykKK2xpYl90cmFjZWNocglsaWIJCSQodHJhY2UpCSQoSEVBREVSX0RFUFMpCitsaWJfdHR5ZmxhZ3MJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorbGliX3R3YWl0CWxpYgkJJChzZXJpYWwpCSQoSEVBREVSX0RFUFMpCituYW1lX21hdGNoCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCituYW1lcwkJbGliCQkuCQkkKEhFQURFUl9ERVBTKQorb2Jzb2xldGUJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQorcmVhZF9lbnRyeQlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaCAkKElOQ0RJUikvaGFzaGVkX2RiLmgKK3JlYWRfdGVybWNhcAlsaWIJCSQodGluZm8pCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAorc3RyaW5ncwkJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQordHJhY2VfYnVmCWxpYgkJJCh0cmFjZSkJJChIRUFERVJfREVQUykKK3RyYWNlX3RyaWVzCWxpYgkJJCh0cmFjZSkJJChIRUFERVJfREVQUykKK3RyaWVzCQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCit0cmltX3NncjAJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK3VuY3RybAkJbGliCQkuCQkkKEhFQURFUl9ERVBTKQordmlzYnVmCQlsaWIJCSQodHJhY2UpCSQoSEVBREVSX0RFUFMpCSQoSU5DRElSKS90aWMuaAogCiAjIE1vZHVsZXMgdXNlZCBvbmx5IGZvciB0aWMsIG90aGVyIHByb2dyYW1zIHVzaW5nIGludGVybmFsIGludGVyZmFjZXMKIEAgdGljbGliCi1hbGxvY19lbnRyeQlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90ZXJtX2VudHJ5LmggJChJTkNESVIpL3RpYy5oCi1jYXB0b2luZm8JbGliCQkkKHRpbmZvKQkkKElOQ0RJUikvdGljLmgKLWNvbXBfY2FwdGFiCWxpYgkJLgkJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvdGVybS5oIC4uL2luY2x1ZGUvaGFzaHNpemUuaAotY29tcF9leHBhbmQJbGliCQkkKHRpbmZvKQkkKElOQ0RJUikvdGljLmgKLWNvbXBfaGFzaAlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90aWMuaCAuLi9pbmNsdWRlL2hhc2hzaXplLmgKLWNvbXBfcGFyc2UJbGliCQkkKHRpbmZvKQkuLi9pbmNsdWRlL3Rlcm0uaCAkKElOQ0RJUikvdGVybV9lbnRyeS5oICQoSU5DRElSKS90aWMuaAotY29tcF9zY2FuCWxpYgkJJCh0aW5mbykJJChJTkNESVIpL3RpYy5oCi1wYXJzZV9lbnRyeQlsaWIJCSQodGluZm8pCS4uL2luY2x1ZGUvdGVybS5oICQoSU5DRElSKS90ZXJtX2VudHJ5LmggJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvcGFyYW1ldHJpemVkLmggJChJTkNESVIpL2NhcGRlZmF1bHRzLmMKLXdyaXRlX2VudHJ5CWxpYgkJJCh0aW5mbykJLi4vaW5jbHVkZS90ZXJtLmggJChJTkNESVIpL3Rlcm1fZW50cnkuaCAkKElOQ0RJUikvdGljLmgKK2FsbG9jX2VudHJ5CWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCitjYXB0b2luZm8JbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK2NvbXBfZXhwYW5kCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCitjb21wX3BhcnNlCWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oCitjb21wX3NjYW4JbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKK3BhcnNlX2VudHJ5CWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oIC4uL2luY2x1ZGUvcGFyYW1ldHJpemVkLmgKK3dyaXRlX2VudHJ5CWxpYgkJJCh0aW5mbykJJChIRUFERVJfREVQUykJJChJTkNESVIpL3RpYy5oICQoSU5DRElSKS9oYXNoZWRfZGIuaAogCiAjIEV4dGVuc2lvbnMgdG8gdGhlIHRlcm1saWIgbGlicmFyeQogQCBleHRfdGluZm8KLWRlZmluZV9rZXkJbGliCQkkKGJhc2UpCi1oYXNoZWRfZGIJbGliCQkkKHRpbmZvKQota2V5X2RlZmluZWQJbGliCQkkKGJhc2UpCi1rZXlib3VuZAlsaWIJCSQoYmFzZSkKLWtleW9rCQlsaWIJCSQoYmFzZSkKLXZlcnNpb24JCWxpYgkJJChiYXNlKQorZGVmaW5lX2tleQlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitoYXNoZWRfZGIJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmggJChJTkNESVIpL2hhc2hlZF9kYi5oCitrZXlfZGVmaW5lZAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitrZXlib3VuZAlsaWIJCSQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCitrZXlvawkJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQordmVyc2lvbgkJbGliCQkkKGJhc2UpCQkkKEhFQURFUl9ERVBTKQorCisjIFBvcnRpbmcKK0AgcG9ydF9kcml2ZXJzCitsaWJfZHJpdmVyICAgICAgbGliICAgICAgICAgICAgICQoYmFzZSkJCSQoSEVBREVSX0RFUFMpCisKK0AgcG9ydF93aW4zMmNvbgorZ2V0dGltZW9mZGF5CWxpYgkJJCh3aW4zMmNvbikJJChIRUFERVJfREVQUykKK3djd2lkdGgJCWxpYiAgICAgICAgICAgICAkKHdpbjMyY29uKQkkKEhFQURFUl9ERVBTKQord2lkZWNoYXJzCWxpYiAgICAgICAgICAgICAkKHdpZGUpCQkkKEhFQURFUl9ERVBTKQord2luX2RyaXZlcglsaWIgICAgICAgICAgICAgJCh3aW4zMmNvbikJJChIRUFERVJfREVQUykKKworQCBwb3J0X3RpbmZvCit0aW5mb19kcml2ZXIJbGliCQkkKHRpbmZvKQkkKEhFQURFUl9ERVBTKQkkKElOQ0RJUikvdGljLmgKIAogIyB2aWxlOm1ha2Vtb2RlCmRpZmYgLS1naXQgYS9uY3Vyc2VzL25hbWVzLmMgYi9uY3Vyc2VzL25hbWVzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MGU3MzMuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy9uYW1lcy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTM2NSArMCwwIEBACi0vKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBNS25hbWVzLmF3ayAqLwotCi0jaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLQotI2RlZmluZSBJVCBOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdAotCi0KLSNpZiBCUk9LRU5fTElOS0VSIHx8IFVTRV9SRUVOVFJBTlQKLQotI2luY2x1ZGUgPHRlcm0uaD4KLQotc3RhdGljIGNvbnN0IGNoYXIgX25jX25hbWVfYmxvYltdID0gCi0iYndcMCIgImF1dG9fbGVmdF9tYXJnaW5cMCIgImFtXDAiICJhdXRvX3JpZ2h0X21hcmdpblwwIiAieHNiXDAiICJub19lc2NfY3RsY1wwIiBcCi0ieGhwXDAiICJjZW9sX3N0YW5kb3V0X2dsaXRjaFwwIiAieGVubFwwIiAiZWF0X25ld2xpbmVfZ2xpdGNoXDAiICJlb1wwIiBcCi0iZXJhc2Vfb3ZlcnN0cmlrZVwwIiAiZ25cMCIgImdlbmVyaWNfdHlwZVwwIiAiaGNcMCIgImhhcmRfY29weVwwIiAia21cMCIgXAotImhhc19tZXRhX2tleVwwIiAiaHNcMCIgImhhc19zdGF0dXNfbGluZVwwIiAiaW5cMCIgImluc2VydF9udWxsX2dsaXRjaFwwIiBcCi0iZGFcMCIgIm1lbW9yeV9hYm92ZVwwIiAiZGJcMCIgIm1lbW9yeV9iZWxvd1wwIiAibWlyXDAiICJtb3ZlX2luc2VydF9tb2RlXDAiIFwKLSJtc2dyXDAiICJtb3ZlX3N0YW5kb3V0X21vZGVcMCIgIm9zXDAiICJvdmVyX3N0cmlrZVwwIiAiZXNsb2tcMCIgInN0YXR1c19saW5lX2VzY19va1wwIiBcCi0ieHRcMCIgImRlc3RfdGFic19tYWdpY19zbXNvXDAiICJoelwwIiAidGlsZGVfZ2xpdGNoXDAiICJ1bFwwIiAidHJhbnNwYXJlbnRfdW5kZXJsaW5lXDAiIFwKLSJ4b25cMCIgInhvbl94b2ZmXDAiICJueG9uXDAiICJuZWVkc194b25feG9mZlwwIiAibWM1aVwwIiAicHJ0cl9zaWxlbnRcMCIgXAotImNodHNcMCIgImhhcmRfY3Vyc29yXDAiICJucnJtY1wwIiAibm9uX3Jldl9ybWN1cFwwIiAibnBjXDAiICJub19wYWRfY2hhclwwIiBcCi0ibmRzY3JcMCIgIm5vbl9kZXN0X3Njcm9sbF9yZWdpb25cMCIgImNjY1wwIiAiY2FuX2NoYW5nZVwwIiAiYmNlXDAiICJiYWNrX2NvbG9yX2VyYXNlXDAiIFwKLSJobHNcMCIgImh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvblwwIiAieGhwYVwwIiAiY29sX2FkZHJfZ2xpdGNoXDAiICJjcnhtXDAiIFwKLSJjcl9jYW5jZWxzX21pY3JvX21vZGVcMCIgImRhaXN5XDAiICJoYXNfcHJpbnRfd2hlZWxcMCIgInh2cGFcMCIgInJvd19hZGRyX2dsaXRjaFwwIiBcCi0ic2FtXDAiICJzZW1pX2F1dG9fcmlnaHRfbWFyZ2luXDAiICJjcGl4XDAiICJjcGlfY2hhbmdlc19yZXNcMCIgImxwaXhcMCIgXAotImxwaV9jaGFuZ2VzX3Jlc1wwIiAiY29sc1wwIiAiY29sdW1uc1wwIiAiaXRcMCIgImluaXRfdGFic1wwIiAibGluZXNcMCIgXAotImxpbmVzXDAiICJsbVwwIiAibGluZXNfb2ZfbWVtb3J5XDAiICJ4bWNcMCIgIm1hZ2ljX2Nvb2tpZV9nbGl0Y2hcMCIgInBiXDAiIFwKLSJwYWRkaW5nX2JhdWRfcmF0ZVwwIiAidnRcMCIgInZpcnR1YWxfdGVybWluYWxcMCIgIndzbFwwIiAid2lkdGhfc3RhdHVzX2xpbmVcMCIgXAotIm5sYWJcMCIgIm51bV9sYWJlbHNcMCIgImxoXDAiICJsYWJlbF9oZWlnaHRcMCIgImx3XDAiICJsYWJlbF93aWR0aFwwIiBcCi0ibWFcMCIgIm1heF9hdHRyaWJ1dGVzXDAiICJ3bnVtXDAiICJtYXhpbXVtX3dpbmRvd3NcMCIgImNvbG9yc1wwIiAibWF4X2NvbG9yc1wwIiBcCi0icGFpcnNcMCIgIm1heF9wYWlyc1wwIiAibmN2XDAiICJub19jb2xvcl92aWRlb1wwIiAiYnVmc3pcMCIgImJ1ZmZlcl9jYXBhY2l0eVwwIiBcCi0ic3BpbnZcMCIgImRvdF92ZXJ0X3NwYWNpbmdcMCIgInNwaW5oXDAiICJkb3RfaG9yel9zcGFjaW5nXDAiICJtYWRkclwwIiBcCi0ibWF4X21pY3JvX2FkZHJlc3NcMCIgIm1qdW1wXDAiICJtYXhfbWljcm9fanVtcFwwIiAibWNzXDAiICJtaWNyb19jb2xfc2l6ZVwwIiBcCi0ibWxzXDAiICJtaWNyb19saW5lX3NpemVcMCIgIm5waW5zXDAiICJudW1iZXJfb2ZfcGluc1wwIiAib3JjXDAiICJvdXRwdXRfcmVzX2NoYXJcMCIgXAotIm9ybFwwIiAib3V0cHV0X3Jlc19saW5lXDAiICJvcmhpXDAiICJvdXRwdXRfcmVzX2hvcnpfaW5jaFwwIiAib3J2aVwwIiBcCi0ib3V0cHV0X3Jlc192ZXJ0X2luY2hcMCIgImNwc1wwIiAicHJpbnRfcmF0ZVwwIiAid2lkY3NcMCIgIndpZGVfY2hhcl9zaXplXDAiIFwKLSJidG5zXDAiICJidXR0b25zXDAiICJiaXR3aW5cMCIgImJpdF9pbWFnZV9lbnR3aW5pbmdcMCIgImJpdHlwZVwwIiAiYml0X2ltYWdlX3R5cGVcMCIgXAotImNidFwwIiAiYmFja190YWJcMCIgImJlbFwwIiAiYmVsbFwwIiAiY3JcMCIgImNhcnJpYWdlX3JldHVyblwwIiAiY3NyXDAiIFwKLSJjaGFuZ2Vfc2Nyb2xsX3JlZ2lvblwwIiAidGJjXDAiICJjbGVhcl9hbGxfdGFic1wwIiAiY2xlYXJcMCIgImNsZWFyX3NjcmVlblwwIiBcCi0iZWxcMCIgImNscl9lb2xcMCIgImVkXDAiICJjbHJfZW9zXDAiICJocGFcMCIgImNvbHVtbl9hZGRyZXNzXDAiICJjbWRjaFwwIiBcCi0iY29tbWFuZF9jaGFyYWN0ZXJcMCIgImN1cFwwIiAiY3Vyc29yX2FkZHJlc3NcMCIgImN1ZDFcMCIgImN1cnNvcl9kb3duXDAiIFwKLSJob21lXDAiICJjdXJzb3JfaG9tZVwwIiAiY2l2aXNcMCIgImN1cnNvcl9pbnZpc2libGVcMCIgImN1YjFcMCIgImN1cnNvcl9sZWZ0XDAiIFwKLSJtcmN1cFwwIiAiY3Vyc29yX21lbV9hZGRyZXNzXDAiICJjbm9ybVwwIiAiY3Vyc29yX25vcm1hbFwwIiAiY3VmMVwwIiAiY3Vyc29yX3JpZ2h0XDAiIFwKLSJsbFwwIiAiY3Vyc29yX3RvX2xsXDAiICJjdXUxXDAiICJjdXJzb3JfdXBcMCIgImN2dmlzXDAiICJjdXJzb3JfdmlzaWJsZVwwIiBcCi0iZGNoMVwwIiAiZGVsZXRlX2NoYXJhY3RlclwwIiAiZGwxXDAiICJkZWxldGVfbGluZVwwIiAiZHNsXDAiICJkaXNfc3RhdHVzX2xpbmVcMCIgXAotImhkXDAiICJkb3duX2hhbGZfbGluZVwwIiAic21hY3NcMCIgImVudGVyX2FsdF9jaGFyc2V0X21vZGVcMCIgImJsaW5rXDAiIFwKLSJlbnRlcl9ibGlua19tb2RlXDAiICJib2xkXDAiICJlbnRlcl9ib2xkX21vZGVcMCIgInNtY3VwXDAiICJlbnRlcl9jYV9tb2RlXDAiIFwKLSJzbWRjXDAiICJlbnRlcl9kZWxldGVfbW9kZVwwIiAiZGltXDAiICJlbnRlcl9kaW1fbW9kZVwwIiAic21pclwwIiAiZW50ZXJfaW5zZXJ0X21vZGVcMCIgXAotImludmlzXDAiICJlbnRlcl9zZWN1cmVfbW9kZVwwIiAicHJvdFwwIiAiZW50ZXJfcHJvdGVjdGVkX21vZGVcMCIgInJldlwwIiBcCi0iZW50ZXJfcmV2ZXJzZV9tb2RlXDAiICJzbXNvXDAiICJlbnRlcl9zdGFuZG91dF9tb2RlXDAiICJzbXVsXDAiICJlbnRlcl91bmRlcmxpbmVfbW9kZVwwIiBcCi0iZWNoXDAiICJlcmFzZV9jaGFyc1wwIiAicm1hY3NcMCIgImV4aXRfYWx0X2NoYXJzZXRfbW9kZVwwIiAic2dyMFwwIiAiZXhpdF9hdHRyaWJ1dGVfbW9kZVwwIiBcCi0icm1jdXBcMCIgImV4aXRfY2FfbW9kZVwwIiAicm1kY1wwIiAiZXhpdF9kZWxldGVfbW9kZVwwIiAicm1pclwwIiAiZXhpdF9pbnNlcnRfbW9kZVwwIiBcCi0icm1zb1wwIiAiZXhpdF9zdGFuZG91dF9tb2RlXDAiICJybXVsXDAiICJleGl0X3VuZGVybGluZV9tb2RlXDAiICJmbGFzaFwwIiBcCi0iZmxhc2hfc2NyZWVuXDAiICJmZlwwIiAiZm9ybV9mZWVkXDAiICJmc2xcMCIgImZyb21fc3RhdHVzX2xpbmVcMCIgImlzMVwwIiBcCi0iaW5pdF8xc3RyaW5nXDAiICJpczJcMCIgImluaXRfMnN0cmluZ1wwIiAiaXMzXDAiICJpbml0XzNzdHJpbmdcMCIgImlmXDAiIFwKLSJpbml0X2ZpbGVcMCIgImljaDFcMCIgImluc2VydF9jaGFyYWN0ZXJcMCIgImlsMVwwIiAiaW5zZXJ0X2xpbmVcMCIgImlwXDAiIFwKLSJpbnNlcnRfcGFkZGluZ1wwIiAia2JzXDAiICJrZXlfYmFja3NwYWNlXDAiICJrdGJjXDAiICJrZXlfY2F0YWJcMCIgImtjbHJcMCIgXAotImtleV9jbGVhclwwIiAia2N0YWJcMCIgImtleV9jdGFiXDAiICJrZGNoMVwwIiAia2V5X2RjXDAiICJrZGwxXDAiICJrZXlfZGxcMCIgXAotImtjdWQxXDAiICJrZXlfZG93blwwIiAia3JtaXJcMCIgImtleV9laWNcMCIgImtlbFwwIiAia2V5X2VvbFwwIiAia2VkXDAiIFwKLSJrZXlfZW9zXDAiICJrZjBcMCIgImtleV9mMFwwIiAia2YxXDAiICJrZXlfZjFcMCIgImtmMTBcMCIgImtleV9mMTBcMCIgXAotImtmMlwwIiAia2V5X2YyXDAiICJrZjNcMCIgImtleV9mM1wwIiAia2Y0XDAiICJrZXlfZjRcMCIgImtmNVwwIiAia2V5X2Y1XDAiIFwKLSJrZjZcMCIgImtleV9mNlwwIiAia2Y3XDAiICJrZXlfZjdcMCIgImtmOFwwIiAia2V5X2Y4XDAiICJrZjlcMCIgImtleV9mOVwwIiBcCi0ia2hvbWVcMCIgImtleV9ob21lXDAiICJraWNoMVwwIiAia2V5X2ljXDAiICJraWwxXDAiICJrZXlfaWxcMCIgImtjdWIxXDAiIFwKLSJrZXlfbGVmdFwwIiAia2xsXDAiICJrZXlfbGxcMCIgImtucFwwIiAia2V5X25wYWdlXDAiICJrcHBcMCIgImtleV9wcGFnZVwwIiBcCi0ia2N1ZjFcMCIgImtleV9yaWdodFwwIiAia2luZFwwIiAia2V5X3NmXDAiICJrcmlcMCIgImtleV9zclwwIiAia2h0c1wwIiBcCi0ia2V5X3N0YWJcMCIgImtjdXUxXDAiICJrZXlfdXBcMCIgInJta3hcMCIgImtleXBhZF9sb2NhbFwwIiAic21reFwwIiAia2V5cGFkX3htaXRcMCIgXAotImxmMFwwIiAibGFiX2YwXDAiICJsZjFcMCIgImxhYl9mMVwwIiAibGYxMFwwIiAibGFiX2YxMFwwIiAibGYyXDAiICJsYWJfZjJcMCIgXAotImxmM1wwIiAibGFiX2YzXDAiICJsZjRcMCIgImxhYl9mNFwwIiAibGY1XDAiICJsYWJfZjVcMCIgImxmNlwwIiAibGFiX2Y2XDAiIFwKLSJsZjdcMCIgImxhYl9mN1wwIiAibGY4XDAiICJsYWJfZjhcMCIgImxmOVwwIiAibGFiX2Y5XDAiICJybW1cMCIgIm1ldGFfb2ZmXDAiIFwKLSJzbW1cMCIgIm1ldGFfb25cMCIgIm5lbFwwIiAibmV3bGluZVwwIiAicGFkXDAiICJwYWRfY2hhclwwIiAiZGNoXDAiICJwYXJtX2RjaFwwIiBcCi0iZGxcMCIgInBhcm1fZGVsZXRlX2xpbmVcMCIgImN1ZFwwIiAicGFybV9kb3duX2N1cnNvclwwIiAiaWNoXDAiICJwYXJtX2ljaFwwIiBcCi0iaW5kblwwIiAicGFybV9pbmRleFwwIiAiaWxcMCIgInBhcm1faW5zZXJ0X2xpbmVcMCIgImN1YlwwIiAicGFybV9sZWZ0X2N1cnNvclwwIiBcCi0iY3VmXDAiICJwYXJtX3JpZ2h0X2N1cnNvclwwIiAicmluXDAiICJwYXJtX3JpbmRleFwwIiAiY3V1XDAiICJwYXJtX3VwX2N1cnNvclwwIiBcCi0icGZrZXlcMCIgInBrZXlfa2V5XDAiICJwZmxvY1wwIiAicGtleV9sb2NhbFwwIiAicGZ4XDAiICJwa2V5X3htaXRcMCIgIm1jMFwwIiBcCi0icHJpbnRfc2NyZWVuXDAiICJtYzRcMCIgInBydHJfb2ZmXDAiICJtYzVcMCIgInBydHJfb25cMCIgInJlcFwwIiAicmVwZWF0X2NoYXJcMCIgXAotInJzMVwwIiAicmVzZXRfMXN0cmluZ1wwIiAicnMyXDAiICJyZXNldF8yc3RyaW5nXDAiICJyczNcMCIgInJlc2V0XzNzdHJpbmdcMCIgXAotInJmXDAiICJyZXNldF9maWxlXDAiICJyY1wwIiAicmVzdG9yZV9jdXJzb3JcMCIgInZwYVwwIiAicm93X2FkZHJlc3NcMCIgXAotInNjXDAiICJzYXZlX2N1cnNvclwwIiAiaW5kXDAiICJzY3JvbGxfZm9yd2FyZFwwIiAicmlcMCIgInNjcm9sbF9yZXZlcnNlXDAiIFwKLSJzZ3JcMCIgInNldF9hdHRyaWJ1dGVzXDAiICJodHNcMCIgInNldF90YWJcMCIgIndpbmRcMCIgInNldF93aW5kb3dcMCIgXAotImh0XDAiICJ0YWJcMCIgInRzbFwwIiAidG9fc3RhdHVzX2xpbmVcMCIgInVjXDAiICJ1bmRlcmxpbmVfY2hhclwwIiAiaHVcMCIgXAotInVwX2hhbGZfbGluZVwwIiAiaXByb2dcMCIgImluaXRfcHJvZ1wwIiAia2ExXDAiICJrZXlfYTFcMCIgImthM1wwIiAia2V5X2EzXDAiIFwKLSJrYjJcMCIgImtleV9iMlwwIiAia2MxXDAiICJrZXlfYzFcMCIgImtjM1wwIiAia2V5X2MzXDAiICJtYzVwXDAiICJwcnRyX25vblwwIiBcCi0icm1wXDAiICJjaGFyX3BhZGRpbmdcMCIgImFjc2NcMCIgImFjc19jaGFyc1wwIiAicGxuXDAiICJwbGFiX25vcm1cMCIgImtjYnRcMCIgXAotImtleV9idGFiXDAiICJzbXhvblwwIiAiZW50ZXJfeG9uX21vZGVcMCIgInJteG9uXDAiICJleGl0X3hvbl9tb2RlXDAiICJzbWFtXDAiIFwKLSJlbnRlcl9hbV9tb2RlXDAiICJybWFtXDAiICJleGl0X2FtX21vZGVcMCIgInhvbmNcMCIgInhvbl9jaGFyYWN0ZXJcMCIgXAotInhvZmZjXDAiICJ4b2ZmX2NoYXJhY3RlclwwIiAiZW5hY3NcMCIgImVuYV9hY3NcMCIgInNtbG5cMCIgImxhYmVsX29uXDAiIFwKLSJybWxuXDAiICJsYWJlbF9vZmZcMCIgImtiZWdcMCIgImtleV9iZWdcMCIgImtjYW5cMCIgImtleV9jYW5jZWxcMCIgImtjbG9cMCIgXAotImtleV9jbG9zZVwwIiAia2NtZFwwIiAia2V5X2NvbW1hbmRcMCIgImtjcHlcMCIgImtleV9jb3B5XDAiICJrY3J0XDAiICJrZXlfY3JlYXRlXDAiIFwKLSJrZW5kXDAiICJrZXlfZW5kXDAiICJrZW50XDAiICJrZXlfZW50ZXJcMCIgImtleHRcMCIgImtleV9leGl0XDAiICJrZm5kXDAiIFwKLSJrZXlfZmluZFwwIiAia2hscFwwIiAia2V5X2hlbHBcMCIgImttcmtcMCIgImtleV9tYXJrXDAiICJrbXNnXDAiICJrZXlfbWVzc2FnZVwwIiBcCi0ia21vdlwwIiAia2V5X21vdmVcMCIgImtueHRcMCIgImtleV9uZXh0XDAiICJrb3BuXDAiICJrZXlfb3BlblwwIiAia29wdFwwIiBcCi0ia2V5X29wdGlvbnNcMCIgImtwcnZcMCIgImtleV9wcmV2aW91c1wwIiAia3BydFwwIiAia2V5X3ByaW50XDAiICJrcmRvXDAiIFwKLSJrZXlfcmVkb1wwIiAia3JlZlwwIiAia2V5X3JlZmVyZW5jZVwwIiAia3JmclwwIiAia2V5X3JlZnJlc2hcMCIgImtycGxcMCIgXAotImtleV9yZXBsYWNlXDAiICJrcnN0XDAiICJrZXlfcmVzdGFydFwwIiAia3Jlc1wwIiAia2V5X3Jlc3VtZVwwIiAia3NhdlwwIiBcCi0ia2V5X3NhdmVcMCIgImtzcGRcMCIgImtleV9zdXNwZW5kXDAiICJrdW5kXDAiICJrZXlfdW5kb1wwIiAia0JFR1wwIiAia2V5X3NiZWdcMCIgXAotImtDQU5cMCIgImtleV9zY2FuY2VsXDAiICJrQ01EXDAiICJrZXlfc2NvbW1hbmRcMCIgImtDUFlcMCIgImtleV9zY29weVwwIiBcCi0ia0NSVFwwIiAia2V5X3NjcmVhdGVcMCIgImtEQ1wwIiAia2V5X3NkY1wwIiAia0RMXDAiICJrZXlfc2RsXDAiICJrc2x0XDAiIFwKLSJrZXlfc2VsZWN0XDAiICJrRU5EXDAiICJrZXlfc2VuZFwwIiAia0VPTFwwIiAia2V5X3Nlb2xcMCIgImtFWFRcMCIgImtleV9zZXhpdFwwIiBcCi0ia0ZORFwwIiAia2V5X3NmaW5kXDAiICJrSExQXDAiICJrZXlfc2hlbHBcMCIgImtIT01cMCIgImtleV9zaG9tZVwwIiAia0lDXDAiIFwKLSJrZXlfc2ljXDAiICJrTEZUXDAiICJrZXlfc2xlZnRcMCIgImtNU0dcMCIgImtleV9zbWVzc2FnZVwwIiAia01PVlwwIiAia2V5X3Ntb3ZlXDAiIFwKLSJrTlhUXDAiICJrZXlfc25leHRcMCIgImtPUFRcMCIgImtleV9zb3B0aW9uc1wwIiAia1BSVlwwIiAia2V5X3NwcmV2aW91c1wwIiBcCi0ia1BSVFwwIiAia2V5X3NwcmludFwwIiAia1JET1wwIiAia2V5X3NyZWRvXDAiICJrUlBMXDAiICJrZXlfc3JlcGxhY2VcMCIgXAotImtSSVRcMCIgImtleV9zcmlnaHRcMCIgImtSRVNcMCIgImtleV9zcnN1bWVcMCIgImtTQVZcMCIgImtleV9zc2F2ZVwwIiBcCi0ia1NQRFwwIiAia2V5X3NzdXNwZW5kXDAiICJrVU5EXDAiICJrZXlfc3VuZG9cMCIgInJmaVwwIiAicmVxX2Zvcl9pbnB1dFwwIiBcCi0ia2YxMVwwIiAia2V5X2YxMVwwIiAia2YxMlwwIiAia2V5X2YxMlwwIiAia2YxM1wwIiAia2V5X2YxM1wwIiAia2YxNFwwIiBcCi0ia2V5X2YxNFwwIiAia2YxNVwwIiAia2V5X2YxNVwwIiAia2YxNlwwIiAia2V5X2YxNlwwIiAia2YxN1wwIiAia2V5X2YxN1wwIiBcCi0ia2YxOFwwIiAia2V5X2YxOFwwIiAia2YxOVwwIiAia2V5X2YxOVwwIiAia2YyMFwwIiAia2V5X2YyMFwwIiAia2YyMVwwIiBcCi0ia2V5X2YyMVwwIiAia2YyMlwwIiAia2V5X2YyMlwwIiAia2YyM1wwIiAia2V5X2YyM1wwIiAia2YyNFwwIiAia2V5X2YyNFwwIiBcCi0ia2YyNVwwIiAia2V5X2YyNVwwIiAia2YyNlwwIiAia2V5X2YyNlwwIiAia2YyN1wwIiAia2V5X2YyN1wwIiAia2YyOFwwIiBcCi0ia2V5X2YyOFwwIiAia2YyOVwwIiAia2V5X2YyOVwwIiAia2YzMFwwIiAia2V5X2YzMFwwIiAia2YzMVwwIiAia2V5X2YzMVwwIiBcCi0ia2YzMlwwIiAia2V5X2YzMlwwIiAia2YzM1wwIiAia2V5X2YzM1wwIiAia2YzNFwwIiAia2V5X2YzNFwwIiAia2YzNVwwIiBcCi0ia2V5X2YzNVwwIiAia2YzNlwwIiAia2V5X2YzNlwwIiAia2YzN1wwIiAia2V5X2YzN1wwIiAia2YzOFwwIiAia2V5X2YzOFwwIiBcCi0ia2YzOVwwIiAia2V5X2YzOVwwIiAia2Y0MFwwIiAia2V5X2Y0MFwwIiAia2Y0MVwwIiAia2V5X2Y0MVwwIiAia2Y0MlwwIiBcCi0ia2V5X2Y0MlwwIiAia2Y0M1wwIiAia2V5X2Y0M1wwIiAia2Y0NFwwIiAia2V5X2Y0NFwwIiAia2Y0NVwwIiAia2V5X2Y0NVwwIiBcCi0ia2Y0NlwwIiAia2V5X2Y0NlwwIiAia2Y0N1wwIiAia2V5X2Y0N1wwIiAia2Y0OFwwIiAia2V5X2Y0OFwwIiAia2Y0OVwwIiBcCi0ia2V5X2Y0OVwwIiAia2Y1MFwwIiAia2V5X2Y1MFwwIiAia2Y1MVwwIiAia2V5X2Y1MVwwIiAia2Y1MlwwIiAia2V5X2Y1MlwwIiBcCi0ia2Y1M1wwIiAia2V5X2Y1M1wwIiAia2Y1NFwwIiAia2V5X2Y1NFwwIiAia2Y1NVwwIiAia2V5X2Y1NVwwIiAia2Y1NlwwIiBcCi0ia2V5X2Y1NlwwIiAia2Y1N1wwIiAia2V5X2Y1N1wwIiAia2Y1OFwwIiAia2V5X2Y1OFwwIiAia2Y1OVwwIiAia2V5X2Y1OVwwIiBcCi0ia2Y2MFwwIiAia2V5X2Y2MFwwIiAia2Y2MVwwIiAia2V5X2Y2MVwwIiAia2Y2MlwwIiAia2V5X2Y2MlwwIiAia2Y2M1wwIiBcCi0ia2V5X2Y2M1wwIiAiZWwxXDAiICJjbHJfYm9sXDAiICJtZ2NcMCIgImNsZWFyX21hcmdpbnNcMCIgInNtZ2xcMCIgInNldF9sZWZ0X21hcmdpblwwIiBcCi0ic21nclwwIiAic2V0X3JpZ2h0X21hcmdpblwwIiAiZmxuXDAiICJsYWJlbF9mb3JtYXRcMCIgInNjbGtcMCIgInNldF9jbG9ja1wwIiBcCi0iZGNsa1wwIiAiZGlzcGxheV9jbG9ja1wwIiAicm1jbGtcMCIgInJlbW92ZV9jbG9ja1wwIiAiY3dpblwwIiAiY3JlYXRlX3dpbmRvd1wwIiBcCi0id2luZ29cMCIgImdvdG9fd2luZG93XDAiICJodXBcMCIgImhhbmd1cFwwIiAiZGlhbFwwIiAiZGlhbF9waG9uZVwwIiAicWRpYWxcMCIgXAotInF1aWNrX2RpYWxcMCIgInRvbmVcMCIgInRvbmVcMCIgInB1bHNlXDAiICJwdWxzZVwwIiAiaG9va1wwIiAiZmxhc2hfaG9va1wwIiBcCi0icGF1c2VcMCIgImZpeGVkX3BhdXNlXDAiICJ3YWl0XDAiICJ3YWl0X3RvbmVcMCIgInUwXDAiICJ1c2VyMFwwIiAidTFcMCIgXAotInVzZXIxXDAiICJ1MlwwIiAidXNlcjJcMCIgInUzXDAiICJ1c2VyM1wwIiAidTRcMCIgInVzZXI0XDAiICJ1NVwwIiAidXNlcjVcMCIgXAotInU2XDAiICJ1c2VyNlwwIiAidTdcMCIgInVzZXI3XDAiICJ1OFwwIiAidXNlcjhcMCIgInU5XDAiICJ1c2VyOVwwIiAib3BcMCIgXAotIm9yaWdfcGFpclwwIiAib2NcMCIgIm9yaWdfY29sb3JzXDAiICJpbml0Y1wwIiAiaW5pdGlhbGl6ZV9jb2xvclwwIiAiaW5pdHBcMCIgXAotImluaXRpYWxpemVfcGFpclwwIiAic2NwXDAiICJzZXRfY29sb3JfcGFpclwwIiAic2V0ZlwwIiAic2V0X2ZvcmVncm91bmRcMCIgXAotInNldGJcMCIgInNldF9iYWNrZ3JvdW5kXDAiICJjcGlcMCIgImNoYW5nZV9jaGFyX3BpdGNoXDAiICJscGlcMCIgImNoYW5nZV9saW5lX3BpdGNoXDAiIFwKLSJjaHJcMCIgImNoYW5nZV9yZXNfaG9yelwwIiAiY3ZyXDAiICJjaGFuZ2VfcmVzX3ZlcnRcMCIgImRlZmNcMCIgImRlZmluZV9jaGFyXDAiIFwKLSJzd2lkbVwwIiAiZW50ZXJfZG91Ymxld2lkZV9tb2RlXDAiICJzZHJmcVwwIiAiZW50ZXJfZHJhZnRfcXVhbGl0eVwwIiAic2l0bVwwIiBcCi0iZW50ZXJfaXRhbGljc19tb2RlXDAiICJzbG1cMCIgImVudGVyX2xlZnR3YXJkX21vZGVcMCIgInNtaWNtXDAiICJlbnRlcl9taWNyb19tb2RlXDAiIFwKLSJzbmxxXDAiICJlbnRlcl9uZWFyX2xldHRlcl9xdWFsaXR5XDAiICJzbnJtcVwwIiAiZW50ZXJfbm9ybWFsX3F1YWxpdHlcMCIgXAotInNzaG1cMCIgImVudGVyX3NoYWRvd19tb2RlXDAiICJzc3VibVwwIiAiZW50ZXJfc3Vic2NyaXB0X21vZGVcMCIgInNzdXBtXDAiIFwKLSJlbnRlcl9zdXBlcnNjcmlwdF9tb2RlXDAiICJzdW1cMCIgImVudGVyX3Vwd2FyZF9tb2RlXDAiICJyd2lkbVwwIiAiZXhpdF9kb3VibGV3aWRlX21vZGVcMCIgXAotInJpdG1cMCIgImV4aXRfaXRhbGljc19tb2RlXDAiICJybG1cMCIgImV4aXRfbGVmdHdhcmRfbW9kZVwwIiAicm1pY21cMCIgXAotImV4aXRfbWljcm9fbW9kZVwwIiAicnNobVwwIiAiZXhpdF9zaGFkb3dfbW9kZVwwIiAicnN1Ym1cMCIgImV4aXRfc3Vic2NyaXB0X21vZGVcMCIgXAotInJzdXBtXDAiICJleGl0X3N1cGVyc2NyaXB0X21vZGVcMCIgInJ1bVwwIiAiZXhpdF91cHdhcmRfbW9kZVwwIiAibWhwYVwwIiBcCi0ibWljcm9fY29sdW1uX2FkZHJlc3NcMCIgIm1jdWQxXDAiICJtaWNyb19kb3duXDAiICJtY3ViMVwwIiAibWljcm9fbGVmdFwwIiBcCi0ibWN1ZjFcMCIgIm1pY3JvX3JpZ2h0XDAiICJtdnBhXDAiICJtaWNyb19yb3dfYWRkcmVzc1wwIiAibWN1dTFcMCIgIm1pY3JvX3VwXDAiIFwKLSJwb3JkZXJcMCIgIm9yZGVyX29mX3BpbnNcMCIgIm1jdWRcMCIgInBhcm1fZG93bl9taWNyb1wwIiAibWN1YlwwIiAicGFybV9sZWZ0X21pY3JvXDAiIFwKLSJtY3VmXDAiICJwYXJtX3JpZ2h0X21pY3JvXDAiICJtY3V1XDAiICJwYXJtX3VwX21pY3JvXDAiICJzY3NcMCIgInNlbGVjdF9jaGFyX3NldFwwIiBcCi0ic21nYlwwIiAic2V0X2JvdHRvbV9tYXJnaW5cMCIgInNtZ2JwXDAiICJzZXRfYm90dG9tX21hcmdpbl9wYXJtXDAiICJzbWdscFwwIiBcCi0ic2V0X2xlZnRfbWFyZ2luX3Bhcm1cMCIgInNtZ3JwXDAiICJzZXRfcmlnaHRfbWFyZ2luX3Bhcm1cMCIgInNtZ3RcMCIgInNldF90b3BfbWFyZ2luXDAiIFwKLSJzbWd0cFwwIiAic2V0X3RvcF9tYXJnaW5fcGFybVwwIiAic2JpbVwwIiAic3RhcnRfYml0X2ltYWdlXDAiICJzY3NkXDAiIFwKLSJzdGFydF9jaGFyX3NldF9kZWZcMCIgInJiaW1cMCIgInN0b3BfYml0X2ltYWdlXDAiICJyY3NkXDAiICJzdG9wX2NoYXJfc2V0X2RlZlwwIiBcCi0ic3ViY3NcMCIgInN1YnNjcmlwdF9jaGFyYWN0ZXJzXDAiICJzdXBjc1wwIiAic3VwZXJzY3JpcHRfY2hhcmFjdGVyc1wwIiBcCi0iZG9jclwwIiAidGhlc2VfY2F1c2VfY3JcMCIgInplcm9tXDAiICJ6ZXJvX21vdGlvblwwIiAiY3NubVwwIiAiY2hhcl9zZXRfbmFtZXNcMCIgXAotImttb3VzXDAiICJrZXlfbW91c2VcMCIgIm1pbmZvXDAiICJtb3VzZV9pbmZvXDAiICJyZXFtcFwwIiAicmVxX21vdXNlX3Bvc1wwIiBcCi0iZ2V0bVwwIiAiZ2V0X21vdXNlXDAiICJzZXRhZlwwIiAic2V0X2FfZm9yZWdyb3VuZFwwIiAic2V0YWJcMCIgInNldF9hX2JhY2tncm91bmRcMCIgXAotInBmeGxcMCIgInBrZXlfcGxhYlwwIiAiZGV2dFwwIiAiZGV2aWNlX3R5cGVcMCIgImNzaW5cMCIgImNvZGVfc2V0X2luaXRcMCIgXAotInMwZHNcMCIgInNldDBfZGVzX3NlcVwwIiAiczFkc1wwIiAic2V0MV9kZXNfc2VxXDAiICJzMmRzXDAiICJzZXQyX2Rlc19zZXFcMCIgXAotInMzZHNcMCIgInNldDNfZGVzX3NlcVwwIiAic21nbHJcMCIgInNldF9scl9tYXJnaW5cMCIgInNtZ3RiXDAiICJzZXRfdGJfbWFyZ2luXDAiIFwKLSJiaXJlcFwwIiAiYml0X2ltYWdlX3JlcGVhdFwwIiAiYmluZWxcMCIgImJpdF9pbWFnZV9uZXdsaW5lXDAiICJiaWNyXDAiIFwKLSJiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuXDAiICJjb2xvcm5tXDAiICJjb2xvcl9uYW1lc1wwIiAiZGVmYmlcMCIgImRlZmluZV9iaXRfaW1hZ2VfcmVnaW9uXDAiIFwKLSJlbmRiaVwwIiAiZW5kX2JpdF9pbWFnZV9yZWdpb25cMCIgInNldGNvbG9yXDAiICJzZXRfY29sb3JfYmFuZFwwIiAic2xpbmVzXDAiIFwKLSJzZXRfcGFnZV9sZW5ndGhcMCIgImRpc3BjXDAiICJkaXNwbGF5X3BjX2NoYXJcMCIgInNtcGNoXDAiICJlbnRlcl9wY19jaGFyc2V0X21vZGVcMCIgXAotInJtcGNoXDAiICJleGl0X3BjX2NoYXJzZXRfbW9kZVwwIiAic21zY1wwIiAiZW50ZXJfc2NhbmNvZGVfbW9kZVwwIiAicm1zY1wwIiBcCi0iZXhpdF9zY2FuY29kZV9tb2RlXDAiICJwY3RybVwwIiAicGNfdGVybV9vcHRpb25zXDAiICJzY2VzY1wwIiAic2NhbmNvZGVfZXNjYXBlXDAiIFwKLSJzY2VzYVwwIiAiYWx0X3NjYW5jb2RlX2VzY1wwIiAiZWhobG1cMCIgImVudGVyX2hvcml6b250YWxfaGxfbW9kZVwwIiAiZWxobG1cMCIgXAotImVudGVyX2xlZnRfaGxfbW9kZVwwIiAiZWxvaGxtXDAiICJlbnRlcl9sb3dfaGxfbW9kZVwwIiAiZXJobG1cMCIgImVudGVyX3JpZ2h0X2hsX21vZGVcMCIgXAotImV0aGxtXDAiICJlbnRlcl90b3BfaGxfbW9kZVwwIiAiZXZobG1cMCIgImVudGVyX3ZlcnRpY2FsX2hsX21vZGVcMCIgInNncjFcMCIgXAotInNldF9hX2F0dHJpYnV0ZXNcMCIgInNsZW5ndGhcMCIgInNldF9wZ2xlbl9pbmNoXDAiICJPVGkyXDAiICJ0ZXJtY2FwX2luaXQyXDAiIFwKLSJPVHJzXDAiICJ0ZXJtY2FwX3Jlc2V0XDAiICJPVHVnXDAiICJtYWdpY19jb29raWVfZ2xpdGNoX3VsXDAiICJPVGJzXDAiIFwKLSJiYWNrc3BhY2VzX3dpdGhfYnNcMCIgIk9UbnNcMCIgImNydF9ub19zY3JvbGxpbmdcMCIgIk9UbmNcMCIgIm5vX2NvcnJlY3RseV93b3JraW5nX2NyXDAiIFwKLSJPVGRDXDAiICJjYXJyaWFnZV9yZXR1cm5fZGVsYXlcMCIgIk9UZE5cMCIgIm5ld19saW5lX2RlbGF5XDAiICJPVG5sXDAiIFwKLSJsaW5lZmVlZF9pZl9ub3RfbGZcMCIgIk9UYmNcMCIgImJhY2tzcGFjZV9pZl9ub3RfYnNcMCIgIk9UTVRcMCIgImdudV9oYXNfbWV0YV9rZXlcMCIgXAotIk9UTkxcMCIgImxpbmVmZWVkX2lzX25ld2xpbmVcMCIgIk9UZEJcMCIgImJhY2tzcGFjZV9kZWxheVwwIiAiT1RkVFwwIiBcCi0iaG9yaXpvbnRhbF90YWJfZGVsYXlcMCIgIk9Ua25cMCIgIm51bWJlcl9vZl9mdW5jdGlvbl9rZXlzXDAiICJPVGtvXDAiIFwKLSJvdGhlcl9ub25fZnVuY3Rpb25fa2V5c1wwIiAiT1RtYVwwIiAiYXJyb3dfa2V5X21hcFwwIiAiT1RwdFwwIiAiaGFzX2hhcmR3YXJlX3RhYnNcMCIgXAotIk9UeHJcMCIgInJldHVybl9kb2VzX2Nscl9lb2xcMCIgIk9URzJcMCIgImFjc191bGNvcm5lclwwIiAiT1RHM1wwIiAiYWNzX2xsY29ybmVyXDAiIFwKLSJPVEcxXDAiICJhY3NfdXJjb3JuZXJcMCIgIk9URzRcMCIgImFjc19scmNvcm5lclwwIiAiT1RHUlwwIiAiYWNzX2x0ZWVcMCIgXAotIk9UR0xcMCIgImFjc19ydGVlXDAiICJPVEdVXDAiICJhY3NfYnRlZVwwIiAiT1RHRFwwIiAiYWNzX3R0ZWVcMCIgIk9UR0hcMCIgXAotImFjc19obGluZVwwIiAiT1RHVlwwIiAiYWNzX3ZsaW5lXDAiICJPVEdDXDAiICJhY3NfcGx1c1wwIiAibWVtbFwwIiAibWVtb3J5X2xvY2tcMCIgXAotIm1lbXVcMCIgIm1lbW9yeV91bmxvY2tcMCIgImJveDFcMCIgImJveF9jaGFyc18xXDAiIDsKLXN0YXRpYyBjb25zdCBzaG9ydCBfbmNfb2Zmc2V0X2Jvb2xmbmFtZXNbXSA9IHsKLTMsIDIzLCA0NSwgNjEsIDg3LCAxMDksIDEyOSwKLTE0NSwgMTU4LCAxNzQsIDE5MywgMjE1LCAyMzEsCi0yNDgsIDI3MCwgMjkyLCAzMTAsIDMzMiwgMzU2LAotMzcyLCAzOTgsIDQxMiwgNDMyLCA0NDksIDQ2NywKLTQ4NSwgNTAzLCA1MzAsIDU0NSwgNTY2LCA1OTYsCi02MTcsIDY0NSwgNjY2LCA2ODYsIDcxNCwgNzM1LAotODE5MywgODIxNywgODIzOSwgODM2NCwgODM4NiwgODUzNSwgODU1OCwgfTsKLQotc3RhdGljIE5DVVJTRVNfQ09OU1QgY2hhciAqKiBwdHJfYm9vbGZuYW1lcyA9IDA7Ci0KLXN0YXRpYyBjb25zdCBzaG9ydCBfbmNfb2Zmc2V0X2Jvb2xuYW1lc1tdID0gewotMCwgMjAsIDQxLCA1NywgODIsIDEwNiwgMTI2LCAxNDIsIDE1NSwgMTcxLCAxOTAsIDIxMiwgMjI4LCAyNDQsIDI2NSwgMjg5LCAzMDQsIDMyOSwgMzUzLCAzNjksIDM5NCwgNDA3LCA0MjcsIDQ0NCwgNDYxLCA0ODEsIDQ5NywgNTI2LCA1NDEsIDU2MiwgNTkxLCA2MTIsIDYzOSwgNjYxLCA2ODIsIDcwOSwgNzMwLCA4MTg4LCA4MjEyLCA4MjM0LCA4MzU5LCA4MzgxLCA4NTMwLCA4NTUzLCB9OwotCi1zdGF0aWMgTkNVUlNFU19DT05TVCBjaGFyICoqIHB0cl9ib29sbmFtZXMgPSAwOwotCi1zdGF0aWMgY29uc3Qgc2hvcnQgX25jX29mZnNldF9udW1mbmFtZXNbXSA9IHsKLTc1NiwgNzY3LCA3ODMsIDc5MiwgODEyLCA4MzUsCi04NTYsIDg3NywgOTAwLCA5MTQsIDkzMCwgOTQ1LAotOTY1LCA5ODgsIDEwMDUsIDEwMTksIDEwNDAsIDEwNjIsIDEwODUsIDExMDgsIDExMzIsIDExNTEsIDExNzAsCi0xMTkyLCAxMjExLCAxMjMxLCAxMjUyLCAxMjc4LCAxMzAzLCAxMzIwLCAxMzQwLCAxMzU1LCAxMzgyLCA4MTY1LAotODI2OCwgODI5NSwgODQxMSwgODQzMiwKLTg0NTgsIH07Ci0KLXN0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKiogcHRyX251bWZuYW1lcyA9IDA7Ci0KLXN0YXRpYyBjb25zdCBzaG9ydCBfbmNfb2Zmc2V0X251bW5hbWVzW10gPSB7Ci03NTEsIDc2NCwgNzc3LCA3ODksIDgwOCwgODMyLCA4NTMsIDg3MywgODk1LCA5MTEsIDkyNywgOTQyLCA5NjAsIDk4MSwgOTk5LCAxMDE1LCAxMDM0LCAxMDU2LAotMTA3OSwgMTEwMiwgMTEyNiwgMTE0NywgMTE2NiwgMTE4NiwgMTIwNywgMTIyNywgMTI0NywgMTI3MywgMTI5OSwKLTEzMTQsIDEzMzUsIDEzNDgsIDEzNzUsIDgxNjAsIDgyNjMsIDgyOTAsIDg0MDYsIDg0MjcsIDg0NTMsIH07Ci0KLXN0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKiogcHRyX251bW5hbWVzID0gMDsKLQotc3RhdGljIGNvbnN0IHNob3J0IF9uY19vZmZzZXRfc3RyZm5hbWVzW10gPSB7Ci0xNDAxLAotMTQxNCwgMTQyMiwgMTQ0MiwgMTQ2NywgMTQ4OCwgMTUwNCwgMTUxNSwgMTUyNywgMTU0OCwgMTU3MCwgMTU5MCwKLTE2MDcsIDE2MjUsIDE2NDcsIDE2NjUsIDE2OTAsIDE3MDksIDE3MjUsIDE3NDMsIDE3NTksIDE3NzksIDE4MDAsCi0xODE2LCAxODM1LCAxODU2LCAxODg1LCAxOTA3LCAxOTI5LCAxOTQ4LCAxOTcwLCAxOTkwLCAyMDE0LCAyMDM3LAotMjA2MiwgMjA4NiwgMjExMSwgMjEzNiwgMjE1NCwgMjE4MSwgMjIwNywgMjIyNSwgMjI0NywgMjI2OSwgMjI5MywKLTIzMTksIDIzMzUsIDIzNDksIDIzNzAsIDIzODcsIDI0MDQsIDI0MjAsIDI0MzUsIDI0NTYsIDI0NzEsIDI0OTAsCi0yNTA5LCAyNTI0LCAyNTQwLCAyNTU1LCAyNTY3LCAyNTgwLCAyNTk1LCAyNjA3LCAyNjE5LCAyNjMxLCAyNjQyLAotMjY1NCwgMjY2NiwgMjY3NywgMjY4OCwgMjY5OSwgMjcxMCwgMjcyMSwgMjczMiwgMjc0MywgMjc1NiwgMjc3MSwKLTI3ODMsIDI3OTYsIDI4MDksIDI4MjAsIDI4MzQsIDI4NTAsIDI4NjUsIDI4NzYsIDI4ODgsIDI5MDMsIDI5MTUsCi0yOTMzLCAyOTQ5LCAyOTYwLCAyOTcyLCAyOTg0LCAyOTk1LCAzMDA2LCAzMDE3LCAzMDI4LCAzMDM5LCAzMDUwLAotMzA2MSwgMzA3MiwgMzA4NSwgMzA5NywgMzEwOSwgMzEyMiwgMzEzNCwgMzE1NSwgMzE3NiwgMzE5MCwgMzIwNCwKLTMyMjUsIDMyNDYsIDMyNjgsIDMyODQsIDMzMDUsIDMzMjAsIDMzMzUsIDMzNDksIDMzNjYsIDMzNzksIDMzOTEsCi0zNDA3LCAzNDI1LCAzNDQzLCAzNDYwLCAzNDc0LCAzNDkzLCAzNTA4LCAzNTI0LCAzNTQyLCAzNTYxLCAzNTgwLAotMzU5MywgMzYwNywgMzYxNSwgMzYzMywgMzY1MSwgMzY3MCwgMzY4NCwgMzY5NSwgMzcwNiwgMzcxNywgMzcyOCwKLTM3NDAsIDM3NTMsIDM3NzEsIDM3ODUsIDM4MDAsIDM4MTUsIDM4MzYsIDM4NTUsIDM4NzQsIDM4OTIsIDM5MTIsCi0zOTMzLCAzOTQ2LCAzOTYwLCAzOTc1LCAzOTg4LCA0MDA0LCA0MDE5LCA0MDM2LCA0MDUwLCA0MDY2LCA0MDc5LAotNDA5NCwgNDEwOCwgNDEyMiwgNDEzNiwgNDE1MCwgNDE2NywgNDE4MSwgNDE5NSwgNDIwOSwgNDIyNiwgNDI0NCwKLTQyNTksIDQyNzMsIDQyOTIsIDQzMDksIDQzMjYsIDQzNDMsIDQzNTksIDQzNzMsIDQzOTAsIDQ0MDQsIDQ0MTgsCi00NDM1LCA0NDUzLCA0NDY4LCA0NDg0LCA0NDk2LCA0NTA5LCA0NTI1LCA0NTM5LCA0NTUzLCA0NTY4LCA0NTgzLAotNDU5OCwgNDYxMiwgNDYyNSwgNDY0MCwgNDY1OCwgNDY3MywgNDY4OCwgNDcwNiwgNDcyNSwgNDc0MSwgNDc1NiwKLTQ3NzQsIDQ3OTAsIDQ4MDYsIDQ4MjEsIDQ4MzksIDQ4NTMsIDQ4NzIsIDQ4ODUsIDQ4OTgsIDQ5MTEsIDQ5MjQsCi00OTM3LCA0OTUwLCA0OTYzLCA0OTc2LCA0OTg5LCA1MDAyLCA1MDE1LCA1MDI4LCA1MDQxLCA1MDU0LCA1MDY3LAotNTA4MCwgNTA5MywgNTEwNiwgNTExOSwgNTEzMiwgNTE0NSwgNTE1OCwgNTE3MSwgNTE4NCwgNTE5NywgNTIxMCwKLTUyMjMsIDUyMzYsIDUyNDksIDUyNjIsIDUyNzUsIDUyODgsIDUzMDEsIDUzMTQsIDUzMjcsIDUzNDAsIDUzNTMsCi01MzY2LCA1Mzc5LCA1MzkyLCA1NDA1LCA1NDE4LCA1NDMxLCA1NDQ0LCA1NDU3LCA1NDcwLCA1NDgzLCA1NDk2LAotNTUwOSwgNTUyMiwgNTUzNSwgNTU0OCwgNTU2MCwgNTU3MiwgNTU5MSwgNTYxMiwgNTYzMywgNTY1MSwgNTY2NiwKLTU2ODYsIDU3MDQsIDU3MjQsIDU3NDAsIDU3NTIsIDU3NjksIDU3ODUsIDU3OTYsIDU4MDcsIDU4MjQsIDU4NDEsCi01ODU0LCA1ODYzLCA1ODcyLCA1ODgxLCA1ODkwLCA1ODk5LCA1OTA4LCA1OTE3LCA1OTI2LCA1OTM1LCA1OTQ0LAotNTk1NywgNTk3NSwgNTk5OCwgNjAxOCwgNjAzOCwgNjA1OCwgNjA3NywgNjA5OSwgNjEyMSwgNjE0MSwgNjE2MiwKLTYxODAsIDYyMDgsIDYyMzMsIDYyNTYsIDYyODIsIDYzMDQsIDYzMzYsIDYzNjIsIDYzODYsIDY0MTMsIDY0NDAsCi02NDY0LCA2NDkwLCA2NTEyLCA2NTM3LCA2NTU4LCA2NTgxLCA2NjA3LCA2NjMzLCA2NjU1LCA2NjgyLCA2Njk5LAotNjcxNiwgNjczMywgNjc1NywgNjc3MywgNjc5MiwgNjgxMywgNjgzNCwgNjg1NiwgNjg3NCwgNjg5NSwgNjkxOSwKLTY5NDgsIDY5NzUsIDcwMDIsIDcwMjMsIDcwNDgsIDcwNjksIDcwOTMsIDcxMTMsIDcxMzcsIDcxNjQsIDcxOTIsCi03MjEzLCA3MjMwLCA3MjUxLCA3MjY3LCA3Mjg0LCA3MzAzLCA3MzE5LCA3MzQyLCA3MzY0LCA3Mzc5LCA3Mzk2LAotNzQxNSwgNzQzMywgNzQ1MSwgNzQ2OSwgNzQ4OCwgNzUwOCwgNzUyOCwgNzU1MSwgNzU3NCwgNzYwOCwgNzYyNiwKLTc2NTYsIDc2ODYsIDc3MDgsIDc3MzAsIDc3NTIsIDc3ODAsIDc4MDYsIDc4MzEsIDc4NTYsIDc4NzgsIDc5MDAsCi03OTIzLCA3OTU0LCA3OTgwLCA4MDA0LCA4MDMwLCA4MDU0LCA4MDgyLCA4MTA3LCA4MTI3LCA4MTQ2LCA4MzE1LCA4MzM5LCA4NDg3LCA4NTE2LCA4NTgzLCA4NjAxLCA4NjE5LCA4NjM3LCA4NjU1LCA4NjY5LAotODY4MywgODY5NywgODcxMSwgODcyNiwgODc0MSwgODc1NSwgODc3MiwgODc5MSwgfTsKLQotc3RhdGljIE5DVVJTRVNfQ09OU1QgY2hhciAqKiBwdHJfc3RyZm5hbWVzID0gMDsKLQotc3RhdGljIGNvbnN0IHNob3J0IF9uY19vZmZzZXRfc3RybmFtZXNbXSA9IHsKLTEzOTcsIDE0MTAsIDE0MTksIDE0MzgsIDE0NjMsIDE0ODIsIDE1MDEsCi0xNTEyLCAxNTIzLCAxNTQyLCAxNTY2LCAxNTg1LCAxNjAyLCAxNjE5LCAxNjQyLCAxNjU5LCAxNjg0LCAxNzA0LAotMTcyMiwgMTczOCwgMTc1MywgMTc3NCwgMTc5NiwgMTgxMiwgMTgzMiwgMTg1MCwgMTg3OSwgMTkwMiwgMTkyMywKLTE5NDMsIDE5NjYsIDE5ODUsIDIwMDgsIDIwMzIsIDIwNTgsIDIwODEsIDIxMDYsIDIxMzIsIDIxNDgsIDIxNzYsCi0yMjAxLCAyMjIwLCAyMjQyLCAyMjY0LCAyMjg4LCAyMzEzLCAyMzMyLCAyMzQ1LCAyMzY2LCAyMzgzLCAyNDAwLAotMjQxNywgMjQzMCwgMjQ1MiwgMjQ2OCwgMjQ4NiwgMjUwNCwgMjUxOSwgMjUzNCwgMjU0OSwgMjU2MiwgMjU3NCwKLTI1ODksIDI2MDMsIDI2MTUsIDI2MjcsIDI2MzgsIDI2NDksIDI2NjIsIDI2NzMsIDI2ODQsIDI2OTUsIDI3MDYsCi0yNzE3LCAyNzI4LCAyNzM5LCAyNzUwLCAyNzY1LCAyNzc4LCAyNzkwLCAyODA1LCAyODE2LCAyODMwLCAyODQ0LAotMjg2MCwgMjg3MiwgMjg4MywgMjg5NywgMjkxMCwgMjkyOCwgMjk0NSwgMjk1NiwgMjk2NywgMjk4MCwgMjk5MSwKLTMwMDIsIDMwMTMsIDMwMjQsIDMwMzUsIDMwNDYsIDMwNTcsIDMwNjgsIDMwODEsIDMwOTMsIDMxMDUsIDMxMTgsCi0zMTMxLCAzMTUxLCAzMTcyLCAzMTg1LCAzMjAxLCAzMjIxLCAzMjQyLCAzMjY0LCAzMjgwLCAzMjk5LCAzMzE0LAotMzMzMSwgMzM0NSwgMzM2MiwgMzM3NSwgMzM4NywgMzQwMywgMzQyMSwgMzQzOSwgMzQ1NywgMzQ3MSwgMzQ4OSwKLTM1MDUsIDM1MjAsIDM1MzksIDM1NTcsIDM1NzYsIDM1ODgsIDM2MDQsIDM2MTEsIDM2MzAsIDM2NDgsIDM2NjQsCi0zNjgwLCAzNjkxLCAzNzAyLCAzNzEzLCAzNzI0LCAzNzM1LCAzNzQ5LCAzNzY2LCAzNzgxLCAzNzk1LCAzODA5LAotMzgzMCwgMzg1MCwgMzg2OSwgMzg4NywgMzkwNiwgMzkyNywgMzk0MSwgMzk1NSwgMzk3MCwgMzk4MywgMzk5OSwKLTQwMTQsIDQwMzEsIDQwNDUsIDQwNjEsIDQwNzQsIDQwODksIDQxMDMsIDQxMTcsIDQxMzEsIDQxNDUsIDQxNjIsCi00MTc2LCA0MTkwLCA0MjA0LCA0MjIxLCA0MjM5LCA0MjU0LCA0MjY4LCA0Mjg3LCA0MzA0LCA0MzIxLCA0MzM4LAotNDM1NCwgNDM2OCwgNDM4NSwgNDM5OSwgNDQxMywgNDQzMCwgNDQ0OCwgNDQ2MywgNDQ4MCwgNDQ5MiwgNDUwNCwKLTQ1MjAsIDQ1MzQsIDQ1NDgsIDQ1NjMsIDQ1NzgsIDQ1OTMsIDQ2MDgsIDQ2MjAsIDQ2MzUsIDQ2NTMsIDQ2NjgsCi00NjgzLCA0NzAxLCA0NzIwLCA0NzM2LCA0NzUxLCA0NzY5LCA0Nzg1LCA0ODAxLCA0ODE2LCA0ODM0LCA0ODQ5LAotNDg2NywgNDg4MCwgNDg5MywgNDkwNiwgNDkxOSwgNDkzMiwgNDk0NSwgNDk1OCwgNDk3MSwgNDk4NCwgNDk5NywKLTUwMTAsIDUwMjMsIDUwMzYsIDUwNDksIDUwNjIsIDUwNzUsIDUwODgsIDUxMDEsIDUxMTQsIDUxMjcsIDUxNDAsCi01MTUzLCA1MTY2LCA1MTc5LCA1MTkyLCA1MjA1LCA1MjE4LCA1MjMxLCA1MjQ0LCA1MjU3LCA1MjcwLCA1MjgzLAotNTI5NiwgNTMwOSwgNTMyMiwgNTMzNSwgNTM0OCwgNTM2MSwgNTM3NCwgNTM4NywgNTQwMCwgNTQxMywgNTQyNiwKLTU0MzksIDU0NTIsIDU0NjUsIDU0NzgsIDU0OTEsIDU1MDQsIDU1MTcsIDU1MzAsIDU1NDMsIDU1NTYsIDU1NjgsCi01NTg2LCA1NjA3LCA1NjI5LCA1NjQ2LCA1NjYxLCA1NjgwLCA1Njk5LCA1NzE4LCA1NzM2LCA1NzQ3LCA1NzYzLAotNTc4MCwgNTc5MCwgNTgwMiwgNTgxOCwgNTgzNiwgNTg1MSwgNTg2MCwgNTg2OSwgNTg3OCwgNTg4NywgNTg5NiwKLTU5MDUsIDU5MTQsIDU5MjMsIDU5MzIsIDU5NDEsIDU5NTQsIDU5NjksIDU5OTIsIDYwMTQsIDYwMzMsIDYwNTMsCi02MDczLCA2MDk1LCA2MTE3LCA2MTM3LCA2MTU3LCA2MTc0LCA2MjAyLCA2MjI4LCA2MjUyLCA2Mjc2LCA2Mjk5LAotNjMzMCwgNjM1NywgNjM4MCwgNjQwNywgNjQzNiwgNjQ1OCwgNjQ4NSwgNjUwOCwgNjUzMSwgNjU1MywgNjU3NSwKLTY2MDEsIDY2MjksIDY2NTAsIDY2NzYsIDY2OTMsIDY3MTAsIDY3MjgsIDY3NTEsIDY3NjYsIDY3ODcsIDY4MDgsCi02ODI5LCA2ODUxLCA2ODcwLCA2ODkwLCA2OTEzLCA2OTQyLCA2OTY5LCA2OTk3LCA3MDE3LCA3MDQzLCA3MDY0LAotNzA4OCwgNzEwOCwgNzEzMSwgNzE1OCwgNzE4NywgNzIwNywgNzIyNSwgNzI0NSwgNzI2MSwgNzI3OCwgNzI5OCwKLTczMTMsIDczMzYsIDczNTksIDczNzQsIDczOTEsIDc0MTAsIDc0MjgsIDc0NDYsIDc0NjQsIDc0ODIsIDc1MDIsCi03NTIyLCA3NTQ1LCA3NTY5LCA3NjAwLCA3NjIwLCA3NjUwLCA3Njc3LCA3NzAxLCA3NzI0LCA3NzQ2LCA3Nzc0LAotNzgwMSwgNzgyNiwgNzg1MCwgNzg3MiwgNzg5NCwgNzkxNywgNzk0OCwgNzk3MywgNzk5OCwgODAyNCwgODA0OCwKLTgwNzcsIDgwOTksIDgxMjIsIDgxNDEsIDgzMTAsCi04MzM0LCA4NDgyLCA4NTExLCA4NTc4LAotODU5NiwgODYxNCwgODYzMiwgODY1MCwgODY2NCwgODY3OCwgODY5MiwgODcwNiwgODcyMSwgODczNiwgODc1MCwKLTg3NjcsIDg3ODYsIH07Ci0KLXN0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKiogcHRyX3N0cm5hbWVzID0gMDsKLQotCi1zdGF0aWMgSVQgKgotYWxsb2NfYXJyYXkoTkNVUlNFU19DT05TVCBjaGFyICoqKnZhbHVlLCBjb25zdCBzaG9ydCAqb2Zmc2V0cywgdW5zaWduZWQgc2l6ZSkKLXsKLQlpZiAoKnZhbHVlID09IDApIHsKLQkJaWYgKCgqdmFsdWUgPSB0eXBlQ2FsbG9jKE5DVVJTRVNfQ09OU1QgY2hhciAqLCBzaXplICsgMSkpICE9IDApIHsKLQkJCXVuc2lnbmVkIG47Ci0JCQlmb3IgKG4gPSAwOyBuIDwgc2l6ZTsgKytuKSB7Ci0JCQkJKCp2YWx1ZSlbbl0gPSAoTkNVUlNFU19DT05TVCBjaGFyICopIF9uY19uYW1lX2Jsb2IgKyBvZmZzZXRzW25dOwotCQkJfQotCQl9Ci0JfQotCXJldHVybiAqdmFsdWU7Ci19Ci0KLSNkZWZpbmUgRklYKGl0KSBOQ1VSU0VTX0lNUEVYUCBJVCAqIE5DVVJTRVNfQVBJIF9uY18jI2l0KHZvaWQpIHsgcmV0dXJuIGFsbG9jX2FycmF5KCZwdHJfIyNpdCwgX25jX29mZnNldF8jI2l0LCBTSVpFT0YoX25jX29mZnNldF8jI2l0KSk7IH0KLQotRklYKGJvb2xuYW1lcykKLUZJWChib29sZm5hbWVzKQotRklYKG51bW5hbWVzKQotRklYKG51bWZuYW1lcykKLUZJWChzdHJuYW1lcykKLUZJWChzdHJmbmFtZXMpCi0KLQotI2RlZmluZSBGUkVFX0ZJWChpdCkgaWYgKHB0cl8jI2l0KSB7IEZyZWVBbmROdWxsKHB0cl8jI2l0KTsgfQotCi0jaWYgTk9fTEVBS1MKLU5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfbmFtZXNfbGVha3Modm9pZCkKLXsKLUZSRUVfRklYKGJvb2xuYW1lcykKLUZSRUVfRklYKGJvb2xmbmFtZXMpCi1GUkVFX0ZJWChudW1uYW1lcykKLUZSRUVfRklYKG51bWZuYW1lcykKLUZSRUVfRklYKHN0cm5hbWVzKQotRlJFRV9GSVgoc3RyZm5hbWVzKQotfQotI2VuZGlmCi0KLSNlbHNlCi0KLSNkZWZpbmUgRENMKGl0KSBOQ1VSU0VTX0VYUE9SVF9WQVIoSVQpIGl0W10KLQotRENMKGJvb2xuYW1lcykgPSB7Ci0JCSJidyIsCi0JCSJhbSIsCi0JCSJ4c2IiLAotCQkieGhwIiwKLQkJInhlbmwiLAotCQkiZW8iLAotCQkiZ24iLAotCQkiaGMiLAotCQkia20iLAotCQkiaHMiLAotCQkiaW4iLAotCQkiZGEiLAotCQkiZGIiLAotCQkibWlyIiwKLQkJIm1zZ3IiLAotCQkib3MiLAotCQkiZXNsb2siLAotCQkieHQiLAotCQkiaHoiLAotCQkidWwiLAotCQkieG9uIiwKLQkJIm54b24iLAotCQkibWM1aSIsCi0JCSJjaHRzIiwKLQkJIm5ycm1jIiwKLQkJIm5wYyIsCi0JCSJuZHNjciIsCi0JCSJjY2MiLAotCQkiYmNlIiwKLQkJImhscyIsCi0JCSJ4aHBhIiwKLQkJImNyeG0iLAotCQkiZGFpc3kiLAotCQkieHZwYSIsCi0JCSJzYW0iLAotCQkiY3BpeCIsCi0JCSJscGl4IiwKLQkJIk9UYnMiLAotCQkiT1RucyIsCi0JCSJPVG5jIiwKLQkJIk9UTVQiLAotCQkiT1ROTCIsCi0JCSJPVHB0IiwKLQkJIk9UeHIiLAotCi0JCShOQ1VSU0VTX0NPTlNUIGNoYXIgKikwLAotfTsKLQotRENMKGJvb2xmbmFtZXMpID0gewotCQkiYXV0b19sZWZ0X21hcmdpbiIsCi0JCSJhdXRvX3JpZ2h0X21hcmdpbiIsCi0JCSJub19lc2NfY3RsYyIsCi0JCSJjZW9sX3N0YW5kb3V0X2dsaXRjaCIsCi0JCSJlYXRfbmV3bGluZV9nbGl0Y2giLAotCQkiZXJhc2Vfb3ZlcnN0cmlrZSIsCi0JCSJnZW5lcmljX3R5cGUiLAotCQkiaGFyZF9jb3B5IiwKLQkJImhhc19tZXRhX2tleSIsCi0JCSJoYXNfc3RhdHVzX2xpbmUiLAotCQkiaW5zZXJ0X251bGxfZ2xpdGNoIiwKLQkJIm1lbW9yeV9hYm92ZSIsCi0JCSJtZW1vcnlfYmVsb3ciLAotCQkibW92ZV9pbnNlcnRfbW9kZSIsCi0JCSJtb3ZlX3N0YW5kb3V0X21vZGUiLAotCQkib3Zlcl9zdHJpa2UiLAotCQkic3RhdHVzX2xpbmVfZXNjX29rIiwKLQkJImRlc3RfdGFic19tYWdpY19zbXNvIiwKLQkJInRpbGRlX2dsaXRjaCIsCi0JCSJ0cmFuc3BhcmVudF91bmRlcmxpbmUiLAotCQkieG9uX3hvZmYiLAotCQkibmVlZHNfeG9uX3hvZmYiLAotCQkicHJ0cl9zaWxlbnQiLAotCQkiaGFyZF9jdXJzb3IiLAotCQkibm9uX3Jldl9ybWN1cCIsCi0JCSJub19wYWRfY2hhciIsCi0JCSJub25fZGVzdF9zY3JvbGxfcmVnaW9uIiwKLQkJImNhbl9jaGFuZ2UiLAotCQkiYmFja19jb2xvcl9lcmFzZSIsCi0JCSJodWVfbGlnaHRuZXNzX3NhdHVyYXRpb24iLAotCQkiY29sX2FkZHJfZ2xpdGNoIiwKLQkJImNyX2NhbmNlbHNfbWljcm9fbW9kZSIsCi0JCSJoYXNfcHJpbnRfd2hlZWwiLAotCQkicm93X2FkZHJfZ2xpdGNoIiwKLQkJInNlbWlfYXV0b19yaWdodF9tYXJnaW4iLAotCQkiY3BpX2NoYW5nZXNfcmVzIiwKLQkJImxwaV9jaGFuZ2VzX3JlcyIsCi0JCSJiYWNrc3BhY2VzX3dpdGhfYnMiLAotCQkiY3J0X25vX3Njcm9sbGluZyIsCi0JCSJub19jb3JyZWN0bHlfd29ya2luZ19jciIsCi0JCSJnbnVfaGFzX21ldGFfa2V5IiwKLQkJImxpbmVmZWVkX2lzX25ld2xpbmUiLAotCQkiaGFzX2hhcmR3YXJlX3RhYnMiLAotCQkicmV0dXJuX2RvZXNfY2xyX2VvbCIsCi0KLQkJKE5DVVJTRVNfQ09OU1QgY2hhciAqKTAsCi19OwotCi1EQ0wobnVtbmFtZXMpID0gewotCQkiY29scyIsCi0JCSJpdCIsCi0JCSJsaW5lcyIsCi0JCSJsbSIsCi0JCSJ4bWMiLAotCQkicGIiLAotCQkidnQiLAotCQkid3NsIiwKLQkJIm5sYWIiLAotCQkibGgiLAotCQkibHciLAotCQkibWEiLAotCQkid251bSIsCi0JCSJjb2xvcnMiLAotCQkicGFpcnMiLAotCQkibmN2IiwKLQkJImJ1ZnN6IiwKLQkJInNwaW52IiwKLQkJInNwaW5oIiwKLQkJIm1hZGRyIiwKLQkJIm1qdW1wIiwKLQkJIm1jcyIsCi0JCSJtbHMiLAotCQkibnBpbnMiLAotCQkib3JjIiwKLQkJIm9ybCIsCi0JCSJvcmhpIiwKLQkJIm9ydmkiLAotCQkiY3BzIiwKLQkJIndpZGNzIiwKLQkJImJ0bnMiLAotCQkiYml0d2luIiwKLQkJImJpdHlwZSIsCi0JCSJPVHVnIiwKLQkJIk9UZEMiLAotCQkiT1RkTiIsCi0JCSJPVGRCIiwKLQkJIk9UZFQiLAotCQkiT1RrbiIsCi0KLQkJKE5DVVJTRVNfQ09OU1QgY2hhciAqKTAsCi19OwotCi1EQ0wobnVtZm5hbWVzKSA9IHsKLQkJImNvbHVtbnMiLAotCQkiaW5pdF90YWJzIiwKLQkJImxpbmVzIiwKLQkJImxpbmVzX29mX21lbW9yeSIsCi0JCSJtYWdpY19jb29raWVfZ2xpdGNoIiwKLQkJInBhZGRpbmdfYmF1ZF9yYXRlIiwKLQkJInZpcnR1YWxfdGVybWluYWwiLAotCQkid2lkdGhfc3RhdHVzX2xpbmUiLAotCQkibnVtX2xhYmVscyIsCi0JCSJsYWJlbF9oZWlnaHQiLAotCQkibGFiZWxfd2lkdGgiLAotCQkibWF4X2F0dHJpYnV0ZXMiLAotCQkibWF4aW11bV93aW5kb3dzIiwKLQkJIm1heF9jb2xvcnMiLAotCQkibWF4X3BhaXJzIiwKLQkJIm5vX2NvbG9yX3ZpZGVvIiwKLQkJImJ1ZmZlcl9jYXBhY2l0eSIsCi0JCSJkb3RfdmVydF9zcGFjaW5nIiwKLQkJImRvdF9ob3J6X3NwYWNpbmciLAotCQkibWF4X21pY3JvX2FkZHJlc3MiLAotCQkibWF4X21pY3JvX2p1bXAiLAotCQkibWljcm9fY29sX3NpemUiLAotCQkibWljcm9fbGluZV9zaXplIiwKLQkJIm51bWJlcl9vZl9waW5zIiwKLQkJIm91dHB1dF9yZXNfY2hhciIsCi0JCSJvdXRwdXRfcmVzX2xpbmUiLAotCQkib3V0cHV0X3Jlc19ob3J6X2luY2giLAotCQkib3V0cHV0X3Jlc192ZXJ0X2luY2giLAotCQkicHJpbnRfcmF0ZSIsCi0JCSJ3aWRlX2NoYXJfc2l6ZSIsCi0JCSJidXR0b25zIiwKLQkJImJpdF9pbWFnZV9lbnR3aW5pbmciLAotCQkiYml0X2ltYWdlX3R5cGUiLAotCQkibWFnaWNfY29va2llX2dsaXRjaF91bCIsCi0JCSJjYXJyaWFnZV9yZXR1cm5fZGVsYXkiLAotCQkibmV3X2xpbmVfZGVsYXkiLAotCQkiYmFja3NwYWNlX2RlbGF5IiwKLQkJImhvcml6b250YWxfdGFiX2RlbGF5IiwKLQkJIm51bWJlcl9vZl9mdW5jdGlvbl9rZXlzIiwKLQotCQkoTkNVUlNFU19DT05TVCBjaGFyICopMCwKLX07Ci0KLURDTChzdHJuYW1lcykgPSB7Ci0JCSJjYnQiLAotCQkiYmVsIiwKLQkJImNyIiwKLQkJImNzciIsCi0JCSJ0YmMiLAotCQkiY2xlYXIiLAotCQkiZWwiLAotCQkiZWQiLAotCQkiaHBhIiwKLQkJImNtZGNoIiwKLQkJImN1cCIsCi0JCSJjdWQxIiwKLQkJImhvbWUiLAotCQkiY2l2aXMiLAotCQkiY3ViMSIsCi0JCSJtcmN1cCIsCi0JCSJjbm9ybSIsCi0JCSJjdWYxIiwKLQkJImxsIiwKLQkJImN1dTEiLAotCQkiY3Z2aXMiLAotCQkiZGNoMSIsCi0JCSJkbDEiLAotCQkiZHNsIiwKLQkJImhkIiwKLQkJInNtYWNzIiwKLQkJImJsaW5rIiwKLQkJImJvbGQiLAotCQkic21jdXAiLAotCQkic21kYyIsCi0JCSJkaW0iLAotCQkic21pciIsCi0JCSJpbnZpcyIsCi0JCSJwcm90IiwKLQkJInJldiIsCi0JCSJzbXNvIiwKLQkJInNtdWwiLAotCQkiZWNoIiwKLQkJInJtYWNzIiwKLQkJInNncjAiLAotCQkicm1jdXAiLAotCQkicm1kYyIsCi0JCSJybWlyIiwKLQkJInJtc28iLAotCQkicm11bCIsCi0JCSJmbGFzaCIsCi0JCSJmZiIsCi0JCSJmc2wiLAotCQkiaXMxIiwKLQkJImlzMiIsCi0JCSJpczMiLAotCQkiaWYiLAotCQkiaWNoMSIsCi0JCSJpbDEiLAotCQkiaXAiLAotCQkia2JzIiwKLQkJImt0YmMiLAotCQkia2NsciIsCi0JCSJrY3RhYiIsCi0JCSJrZGNoMSIsCi0JCSJrZGwxIiwKLQkJImtjdWQxIiwKLQkJImtybWlyIiwKLQkJImtlbCIsCi0JCSJrZWQiLAotCQkia2YwIiwKLQkJImtmMSIsCi0JCSJrZjEwIiwKLQkJImtmMiIsCi0JCSJrZjMiLAotCQkia2Y0IiwKLQkJImtmNSIsCi0JCSJrZjYiLAotCQkia2Y3IiwKLQkJImtmOCIsCi0JCSJrZjkiLAotCQkia2hvbWUiLAotCQkia2ljaDEiLAotCQkia2lsMSIsCi0JCSJrY3ViMSIsCi0JCSJrbGwiLAotCQkia25wIiwKLQkJImtwcCIsCi0JCSJrY3VmMSIsCi0JCSJraW5kIiwKLQkJImtyaSIsCi0JCSJraHRzIiwKLQkJImtjdXUxIiwKLQkJInJta3giLAotCQkic21reCIsCi0JCSJsZjAiLAotCQkibGYxIiwKLQkJImxmMTAiLAotCQkibGYyIiwKLQkJImxmMyIsCi0JCSJsZjQiLAotCQkibGY1IiwKLQkJImxmNiIsCi0JCSJsZjciLAotCQkibGY4IiwKLQkJImxmOSIsCi0JCSJybW0iLAotCQkic21tIiwKLQkJIm5lbCIsCi0JCSJwYWQiLAotCQkiZGNoIiwKLQkJImRsIiwKLQkJImN1ZCIsCi0JCSJpY2giLAotCQkiaW5kbiIsCi0JCSJpbCIsCi0JCSJjdWIiLAotCQkiY3VmIiwKLQkJInJpbiIsCi0JCSJjdXUiLAotCQkicGZrZXkiLAotCQkicGZsb2MiLAotCQkicGZ4IiwKLQkJIm1jMCIsCi0JCSJtYzQiLAotCQkibWM1IiwKLQkJInJlcCIsCi0JCSJyczEiLAotCQkicnMyIiwKLQkJInJzMyIsCi0JCSJyZiIsCi0JCSJyYyIsCi0JCSJ2cGEiLAotCQkic2MiLAotCQkiaW5kIiwKLQkJInJpIiwKLQkJInNnciIsCi0JCSJodHMiLAotCQkid2luZCIsCi0JCSJodCIsCi0JCSJ0c2wiLAotCQkidWMiLAotCQkiaHUiLAotCQkiaXByb2ciLAotCQkia2ExIiwKLQkJImthMyIsCi0JCSJrYjIiLAotCQkia2MxIiwKLQkJImtjMyIsCi0JCSJtYzVwIiwKLQkJInJtcCIsCi0JCSJhY3NjIiwKLQkJInBsbiIsCi0JCSJrY2J0IiwKLQkJInNteG9uIiwKLQkJInJteG9uIiwKLQkJInNtYW0iLAotCQkicm1hbSIsCi0JCSJ4b25jIiwKLQkJInhvZmZjIiwKLQkJImVuYWNzIiwKLQkJInNtbG4iLAotCQkicm1sbiIsCi0JCSJrYmVnIiwKLQkJImtjYW4iLAotCQkia2NsbyIsCi0JCSJrY21kIiwKLQkJImtjcHkiLAotCQkia2NydCIsCi0JCSJrZW5kIiwKLQkJImtlbnQiLAotCQkia2V4dCIsCi0JCSJrZm5kIiwKLQkJImtobHAiLAotCQkia21yayIsCi0JCSJrbXNnIiwKLQkJImttb3YiLAotCQkia254dCIsCi0JCSJrb3BuIiwKLQkJImtvcHQiLAotCQkia3BydiIsCi0JCSJrcHJ0IiwKLQkJImtyZG8iLAotCQkia3JlZiIsCi0JCSJrcmZyIiwKLQkJImtycGwiLAotCQkia3JzdCIsCi0JCSJrcmVzIiwKLQkJImtzYXYiLAotCQkia3NwZCIsCi0JCSJrdW5kIiwKLQkJImtCRUciLAotCQkia0NBTiIsCi0JCSJrQ01EIiwKLQkJImtDUFkiLAotCQkia0NSVCIsCi0JCSJrREMiLAotCQkia0RMIiwKLQkJImtzbHQiLAotCQkia0VORCIsCi0JCSJrRU9MIiwKLQkJImtFWFQiLAotCQkia0ZORCIsCi0JCSJrSExQIiwKLQkJImtIT00iLAotCQkia0lDIiwKLQkJImtMRlQiLAotCQkia01TRyIsCi0JCSJrTU9WIiwKLQkJImtOWFQiLAotCQkia09QVCIsCi0JCSJrUFJWIiwKLQkJImtQUlQiLAotCQkia1JETyIsCi0JCSJrUlBMIiwKLQkJImtSSVQiLAotCQkia1JFUyIsCi0JCSJrU0FWIiwKLQkJImtTUEQiLAotCQkia1VORCIsCi0JCSJyZmkiLAotCQkia2YxMSIsCi0JCSJrZjEyIiwKLQkJImtmMTMiLAotCQkia2YxNCIsCi0JCSJrZjE1IiwKLQkJImtmMTYiLAotCQkia2YxNyIsCi0JCSJrZjE4IiwKLQkJImtmMTkiLAotCQkia2YyMCIsCi0JCSJrZjIxIiwKLQkJImtmMjIiLAotCQkia2YyMyIsCi0JCSJrZjI0IiwKLQkJImtmMjUiLAotCQkia2YyNiIsCi0JCSJrZjI3IiwKLQkJImtmMjgiLAotCQkia2YyOSIsCi0JCSJrZjMwIiwKLQkJImtmMzEiLAotCQkia2YzMiIsCi0JCSJrZjMzIiwKLQkJImtmMzQiLAotCQkia2YzNSIsCi0JCSJrZjM2IiwKLQkJImtmMzciLAotCQkia2YzOCIsCi0JCSJrZjM5IiwKLQkJImtmNDAiLAotCQkia2Y0MSIsCi0JCSJrZjQyIiwKLQkJImtmNDMiLAotCQkia2Y0NCIsCi0JCSJrZjQ1IiwKLQkJImtmNDYiLAotCQkia2Y0NyIsCi0JCSJrZjQ4IiwKLQkJImtmNDkiLAotCQkia2Y1MCIsCi0JCSJrZjUxIiwKLQkJImtmNTIiLAotCQkia2Y1MyIsCi0JCSJrZjU0IiwKLQkJImtmNTUiLAotCQkia2Y1NiIsCi0JCSJrZjU3IiwKLQkJImtmNTgiLAotCQkia2Y1OSIsCi0JCSJrZjYwIiwKLQkJImtmNjEiLAotCQkia2Y2MiIsCi0JCSJrZjYzIiwKLQkJImVsMSIsCi0JCSJtZ2MiLAotCQkic21nbCIsCi0JCSJzbWdyIiwKLQkJImZsbiIsCi0JCSJzY2xrIiwKLQkJImRjbGsiLAotCQkicm1jbGsiLAotCQkiY3dpbiIsCi0JCSJ3aW5nbyIsCi0JCSJodXAiLAotCQkiZGlhbCIsCi0JCSJxZGlhbCIsCi0JCSJ0b25lIiwKLQkJInB1bHNlIiwKLQkJImhvb2siLAotCQkicGF1c2UiLAotCQkid2FpdCIsCi0JCSJ1MCIsCi0JCSJ1MSIsCi0JCSJ1MiIsCi0JCSJ1MyIsCi0JCSJ1NCIsCi0JCSJ1NSIsCi0JCSJ1NiIsCi0JCSJ1NyIsCi0JCSJ1OCIsCi0JCSJ1OSIsCi0JCSJvcCIsCi0JCSJvYyIsCi0JCSJpbml0YyIsCi0JCSJpbml0cCIsCi0JCSJzY3AiLAotCQkic2V0ZiIsCi0JCSJzZXRiIiwKLQkJImNwaSIsCi0JCSJscGkiLAotCQkiY2hyIiwKLQkJImN2ciIsCi0JCSJkZWZjIiwKLQkJInN3aWRtIiwKLQkJInNkcmZxIiwKLQkJInNpdG0iLAotCQkic2xtIiwKLQkJInNtaWNtIiwKLQkJInNubHEiLAotCQkic25ybXEiLAotCQkic3NobSIsCi0JCSJzc3VibSIsCi0JCSJzc3VwbSIsCi0JCSJzdW0iLAotCQkicndpZG0iLAotCQkicml0bSIsCi0JCSJybG0iLAotCQkicm1pY20iLAotCQkicnNobSIsCi0JCSJyc3VibSIsCi0JCSJyc3VwbSIsCi0JCSJydW0iLAotCQkibWhwYSIsCi0JCSJtY3VkMSIsCi0JCSJtY3ViMSIsCi0JCSJtY3VmMSIsCi0JCSJtdnBhIiwKLQkJIm1jdXUxIiwKLQkJInBvcmRlciIsCi0JCSJtY3VkIiwKLQkJIm1jdWIiLAotCQkibWN1ZiIsCi0JCSJtY3V1IiwKLQkJInNjcyIsCi0JCSJzbWdiIiwKLQkJInNtZ2JwIiwKLQkJInNtZ2xwIiwKLQkJInNtZ3JwIiwKLQkJInNtZ3QiLAotCQkic21ndHAiLAotCQkic2JpbSIsCi0JCSJzY3NkIiwKLQkJInJiaW0iLAotCQkicmNzZCIsCi0JCSJzdWJjcyIsCi0JCSJzdXBjcyIsCi0JCSJkb2NyIiwKLQkJInplcm9tIiwKLQkJImNzbm0iLAotCQkia21vdXMiLAotCQkibWluZm8iLAotCQkicmVxbXAiLAotCQkiZ2V0bSIsCi0JCSJzZXRhZiIsCi0JCSJzZXRhYiIsCi0JCSJwZnhsIiwKLQkJImRldnQiLAotCQkiY3NpbiIsCi0JCSJzMGRzIiwKLQkJInMxZHMiLAotCQkiczJkcyIsCi0JCSJzM2RzIiwKLQkJInNtZ2xyIiwKLQkJInNtZ3RiIiwKLQkJImJpcmVwIiwKLQkJImJpbmVsIiwKLQkJImJpY3IiLAotCQkiY29sb3JubSIsCi0JCSJkZWZiaSIsCi0JCSJlbmRiaSIsCi0JCSJzZXRjb2xvciIsCi0JCSJzbGluZXMiLAotCQkiZGlzcGMiLAotCQkic21wY2giLAotCQkicm1wY2giLAotCQkic21zYyIsCi0JCSJybXNjIiwKLQkJInBjdHJtIiwKLQkJInNjZXNjIiwKLQkJInNjZXNhIiwKLQkJImVoaGxtIiwKLQkJImVsaGxtIiwKLQkJImVsb2hsbSIsCi0JCSJlcmhsbSIsCi0JCSJldGhsbSIsCi0JCSJldmhsbSIsCi0JCSJzZ3IxIiwKLQkJInNsZW5ndGgiLAotCQkiT1RpMiIsCi0JCSJPVHJzIiwKLQkJIk9UbmwiLAotCQkiT1RiYyIsCi0JCSJPVGtvIiwKLQkJIk9UbWEiLAotCQkiT1RHMiIsCi0JCSJPVEczIiwKLQkJIk9URzEiLAotCQkiT1RHNCIsCi0JCSJPVEdSIiwKLQkJIk9UR0wiLAotCQkiT1RHVSIsCi0JCSJPVEdEIiwKLQkJIk9UR0giLAotCQkiT1RHViIsCi0JCSJPVEdDIiwKLQkJIm1lbWwiLAotCQkibWVtdSIsCi0JCSJib3gxIiwKLQotCQkoTkNVUlNFU19DT05TVCBjaGFyICopMCwKLX07Ci0KLURDTChzdHJmbmFtZXMpID0gewotCQkiYmFja190YWIiLAotCQkiYmVsbCIsCi0JCSJjYXJyaWFnZV9yZXR1cm4iLAotCQkiY2hhbmdlX3Njcm9sbF9yZWdpb24iLAotCQkiY2xlYXJfYWxsX3RhYnMiLAotCQkiY2xlYXJfc2NyZWVuIiwKLQkJImNscl9lb2wiLAotCQkiY2xyX2VvcyIsCi0JCSJjb2x1bW5fYWRkcmVzcyIsCi0JCSJjb21tYW5kX2NoYXJhY3RlciIsCi0JCSJjdXJzb3JfYWRkcmVzcyIsCi0JCSJjdXJzb3JfZG93biIsCi0JCSJjdXJzb3JfaG9tZSIsCi0JCSJjdXJzb3JfaW52aXNpYmxlIiwKLQkJImN1cnNvcl9sZWZ0IiwKLQkJImN1cnNvcl9tZW1fYWRkcmVzcyIsCi0JCSJjdXJzb3Jfbm9ybWFsIiwKLQkJImN1cnNvcl9yaWdodCIsCi0JCSJjdXJzb3JfdG9fbGwiLAotCQkiY3Vyc29yX3VwIiwKLQkJImN1cnNvcl92aXNpYmxlIiwKLQkJImRlbGV0ZV9jaGFyYWN0ZXIiLAotCQkiZGVsZXRlX2xpbmUiLAotCQkiZGlzX3N0YXR1c19saW5lIiwKLQkJImRvd25faGFsZl9saW5lIiwKLQkJImVudGVyX2FsdF9jaGFyc2V0X21vZGUiLAotCQkiZW50ZXJfYmxpbmtfbW9kZSIsCi0JCSJlbnRlcl9ib2xkX21vZGUiLAotCQkiZW50ZXJfY2FfbW9kZSIsCi0JCSJlbnRlcl9kZWxldGVfbW9kZSIsCi0JCSJlbnRlcl9kaW1fbW9kZSIsCi0JCSJlbnRlcl9pbnNlcnRfbW9kZSIsCi0JCSJlbnRlcl9zZWN1cmVfbW9kZSIsCi0JCSJlbnRlcl9wcm90ZWN0ZWRfbW9kZSIsCi0JCSJlbnRlcl9yZXZlcnNlX21vZGUiLAotCQkiZW50ZXJfc3RhbmRvdXRfbW9kZSIsCi0JCSJlbnRlcl91bmRlcmxpbmVfbW9kZSIsCi0JCSJlcmFzZV9jaGFycyIsCi0JCSJleGl0X2FsdF9jaGFyc2V0X21vZGUiLAotCQkiZXhpdF9hdHRyaWJ1dGVfbW9kZSIsCi0JCSJleGl0X2NhX21vZGUiLAotCQkiZXhpdF9kZWxldGVfbW9kZSIsCi0JCSJleGl0X2luc2VydF9tb2RlIiwKLQkJImV4aXRfc3RhbmRvdXRfbW9kZSIsCi0JCSJleGl0X3VuZGVybGluZV9tb2RlIiwKLQkJImZsYXNoX3NjcmVlbiIsCi0JCSJmb3JtX2ZlZWQiLAotCQkiZnJvbV9zdGF0dXNfbGluZSIsCi0JCSJpbml0XzFzdHJpbmciLAotCQkiaW5pdF8yc3RyaW5nIiwKLQkJImluaXRfM3N0cmluZyIsCi0JCSJpbml0X2ZpbGUiLAotCQkiaW5zZXJ0X2NoYXJhY3RlciIsCi0JCSJpbnNlcnRfbGluZSIsCi0JCSJpbnNlcnRfcGFkZGluZyIsCi0JCSJrZXlfYmFja3NwYWNlIiwKLQkJImtleV9jYXRhYiIsCi0JCSJrZXlfY2xlYXIiLAotCQkia2V5X2N0YWIiLAotCQkia2V5X2RjIiwKLQkJImtleV9kbCIsCi0JCSJrZXlfZG93biIsCi0JCSJrZXlfZWljIiwKLQkJImtleV9lb2wiLAotCQkia2V5X2VvcyIsCi0JCSJrZXlfZjAiLAotCQkia2V5X2YxIiwKLQkJImtleV9mMTAiLAotCQkia2V5X2YyIiwKLQkJImtleV9mMyIsCi0JCSJrZXlfZjQiLAotCQkia2V5X2Y1IiwKLQkJImtleV9mNiIsCi0JCSJrZXlfZjciLAotCQkia2V5X2Y4IiwKLQkJImtleV9mOSIsCi0JCSJrZXlfaG9tZSIsCi0JCSJrZXlfaWMiLAotCQkia2V5X2lsIiwKLQkJImtleV9sZWZ0IiwKLQkJImtleV9sbCIsCi0JCSJrZXlfbnBhZ2UiLAotCQkia2V5X3BwYWdlIiwKLQkJImtleV9yaWdodCIsCi0JCSJrZXlfc2YiLAotCQkia2V5X3NyIiwKLQkJImtleV9zdGFiIiwKLQkJImtleV91cCIsCi0JCSJrZXlwYWRfbG9jYWwiLAotCQkia2V5cGFkX3htaXQiLAotCQkibGFiX2YwIiwKLQkJImxhYl9mMSIsCi0JCSJsYWJfZjEwIiwKLQkJImxhYl9mMiIsCi0JCSJsYWJfZjMiLAotCQkibGFiX2Y0IiwKLQkJImxhYl9mNSIsCi0JCSJsYWJfZjYiLAotCQkibGFiX2Y3IiwKLQkJImxhYl9mOCIsCi0JCSJsYWJfZjkiLAotCQkibWV0YV9vZmYiLAotCQkibWV0YV9vbiIsCi0JCSJuZXdsaW5lIiwKLQkJInBhZF9jaGFyIiwKLQkJInBhcm1fZGNoIiwKLQkJInBhcm1fZGVsZXRlX2xpbmUiLAotCQkicGFybV9kb3duX2N1cnNvciIsCi0JCSJwYXJtX2ljaCIsCi0JCSJwYXJtX2luZGV4IiwKLQkJInBhcm1faW5zZXJ0X2xpbmUiLAotCQkicGFybV9sZWZ0X2N1cnNvciIsCi0JCSJwYXJtX3JpZ2h0X2N1cnNvciIsCi0JCSJwYXJtX3JpbmRleCIsCi0JCSJwYXJtX3VwX2N1cnNvciIsCi0JCSJwa2V5X2tleSIsCi0JCSJwa2V5X2xvY2FsIiwKLQkJInBrZXlfeG1pdCIsCi0JCSJwcmludF9zY3JlZW4iLAotCQkicHJ0cl9vZmYiLAotCQkicHJ0cl9vbiIsCi0JCSJyZXBlYXRfY2hhciIsCi0JCSJyZXNldF8xc3RyaW5nIiwKLQkJInJlc2V0XzJzdHJpbmciLAotCQkicmVzZXRfM3N0cmluZyIsCi0JCSJyZXNldF9maWxlIiwKLQkJInJlc3RvcmVfY3Vyc29yIiwKLQkJInJvd19hZGRyZXNzIiwKLQkJInNhdmVfY3Vyc29yIiwKLQkJInNjcm9sbF9mb3J3YXJkIiwKLQkJInNjcm9sbF9yZXZlcnNlIiwKLQkJInNldF9hdHRyaWJ1dGVzIiwKLQkJInNldF90YWIiLAotCQkic2V0X3dpbmRvdyIsCi0JCSJ0YWIiLAotCQkidG9fc3RhdHVzX2xpbmUiLAotCQkidW5kZXJsaW5lX2NoYXIiLAotCQkidXBfaGFsZl9saW5lIiwKLQkJImluaXRfcHJvZyIsCi0JCSJrZXlfYTEiLAotCQkia2V5X2EzIiwKLQkJImtleV9iMiIsCi0JCSJrZXlfYzEiLAotCQkia2V5X2MzIiwKLQkJInBydHJfbm9uIiwKLQkJImNoYXJfcGFkZGluZyIsCi0JCSJhY3NfY2hhcnMiLAotCQkicGxhYl9ub3JtIiwKLQkJImtleV9idGFiIiwKLQkJImVudGVyX3hvbl9tb2RlIiwKLQkJImV4aXRfeG9uX21vZGUiLAotCQkiZW50ZXJfYW1fbW9kZSIsCi0JCSJleGl0X2FtX21vZGUiLAotCQkieG9uX2NoYXJhY3RlciIsCi0JCSJ4b2ZmX2NoYXJhY3RlciIsCi0JCSJlbmFfYWNzIiwKLQkJImxhYmVsX29uIiwKLQkJImxhYmVsX29mZiIsCi0JCSJrZXlfYmVnIiwKLQkJImtleV9jYW5jZWwiLAotCQkia2V5X2Nsb3NlIiwKLQkJImtleV9jb21tYW5kIiwKLQkJImtleV9jb3B5IiwKLQkJImtleV9jcmVhdGUiLAotCQkia2V5X2VuZCIsCi0JCSJrZXlfZW50ZXIiLAotCQkia2V5X2V4aXQiLAotCQkia2V5X2ZpbmQiLAotCQkia2V5X2hlbHAiLAotCQkia2V5X21hcmsiLAotCQkia2V5X21lc3NhZ2UiLAotCQkia2V5X21vdmUiLAotCQkia2V5X25leHQiLAotCQkia2V5X29wZW4iLAotCQkia2V5X29wdGlvbnMiLAotCQkia2V5X3ByZXZpb3VzIiwKLQkJImtleV9wcmludCIsCi0JCSJrZXlfcmVkbyIsCi0JCSJrZXlfcmVmZXJlbmNlIiwKLQkJImtleV9yZWZyZXNoIiwKLQkJImtleV9yZXBsYWNlIiwKLQkJImtleV9yZXN0YXJ0IiwKLQkJImtleV9yZXN1bWUiLAotCQkia2V5X3NhdmUiLAotCQkia2V5X3N1c3BlbmQiLAotCQkia2V5X3VuZG8iLAotCQkia2V5X3NiZWciLAotCQkia2V5X3NjYW5jZWwiLAotCQkia2V5X3Njb21tYW5kIiwKLQkJImtleV9zY29weSIsCi0JCSJrZXlfc2NyZWF0ZSIsCi0JCSJrZXlfc2RjIiwKLQkJImtleV9zZGwiLAotCQkia2V5X3NlbGVjdCIsCi0JCSJrZXlfc2VuZCIsCi0JCSJrZXlfc2VvbCIsCi0JCSJrZXlfc2V4aXQiLAotCQkia2V5X3NmaW5kIiwKLQkJImtleV9zaGVscCIsCi0JCSJrZXlfc2hvbWUiLAotCQkia2V5X3NpYyIsCi0JCSJrZXlfc2xlZnQiLAotCQkia2V5X3NtZXNzYWdlIiwKLQkJImtleV9zbW92ZSIsCi0JCSJrZXlfc25leHQiLAotCQkia2V5X3NvcHRpb25zIiwKLQkJImtleV9zcHJldmlvdXMiLAotCQkia2V5X3NwcmludCIsCi0JCSJrZXlfc3JlZG8iLAotCQkia2V5X3NyZXBsYWNlIiwKLQkJImtleV9zcmlnaHQiLAotCQkia2V5X3Nyc3VtZSIsCi0JCSJrZXlfc3NhdmUiLAotCQkia2V5X3NzdXNwZW5kIiwKLQkJImtleV9zdW5kbyIsCi0JCSJyZXFfZm9yX2lucHV0IiwKLQkJImtleV9mMTEiLAotCQkia2V5X2YxMiIsCi0JCSJrZXlfZjEzIiwKLQkJImtleV9mMTQiLAotCQkia2V5X2YxNSIsCi0JCSJrZXlfZjE2IiwKLQkJImtleV9mMTciLAotCQkia2V5X2YxOCIsCi0JCSJrZXlfZjE5IiwKLQkJImtleV9mMjAiLAotCQkia2V5X2YyMSIsCi0JCSJrZXlfZjIyIiwKLQkJImtleV9mMjMiLAotCQkia2V5X2YyNCIsCi0JCSJrZXlfZjI1IiwKLQkJImtleV9mMjYiLAotCQkia2V5X2YyNyIsCi0JCSJrZXlfZjI4IiwKLQkJImtleV9mMjkiLAotCQkia2V5X2YzMCIsCi0JCSJrZXlfZjMxIiwKLQkJImtleV9mMzIiLAotCQkia2V5X2YzMyIsCi0JCSJrZXlfZjM0IiwKLQkJImtleV9mMzUiLAotCQkia2V5X2YzNiIsCi0JCSJrZXlfZjM3IiwKLQkJImtleV9mMzgiLAotCQkia2V5X2YzOSIsCi0JCSJrZXlfZjQwIiwKLQkJImtleV9mNDEiLAotCQkia2V5X2Y0MiIsCi0JCSJrZXlfZjQzIiwKLQkJImtleV9mNDQiLAotCQkia2V5X2Y0NSIsCi0JCSJrZXlfZjQ2IiwKLQkJImtleV9mNDciLAotCQkia2V5X2Y0OCIsCi0JCSJrZXlfZjQ5IiwKLQkJImtleV9mNTAiLAotCQkia2V5X2Y1MSIsCi0JCSJrZXlfZjUyIiwKLQkJImtleV9mNTMiLAotCQkia2V5X2Y1NCIsCi0JCSJrZXlfZjU1IiwKLQkJImtleV9mNTYiLAotCQkia2V5X2Y1NyIsCi0JCSJrZXlfZjU4IiwKLQkJImtleV9mNTkiLAotCQkia2V5X2Y2MCIsCi0JCSJrZXlfZjYxIiwKLQkJImtleV9mNjIiLAotCQkia2V5X2Y2MyIsCi0JCSJjbHJfYm9sIiwKLQkJImNsZWFyX21hcmdpbnMiLAotCQkic2V0X2xlZnRfbWFyZ2luIiwKLQkJInNldF9yaWdodF9tYXJnaW4iLAotCQkibGFiZWxfZm9ybWF0IiwKLQkJInNldF9jbG9jayIsCi0JCSJkaXNwbGF5X2Nsb2NrIiwKLQkJInJlbW92ZV9jbG9jayIsCi0JCSJjcmVhdGVfd2luZG93IiwKLQkJImdvdG9fd2luZG93IiwKLQkJImhhbmd1cCIsCi0JCSJkaWFsX3Bob25lIiwKLQkJInF1aWNrX2RpYWwiLAotCQkidG9uZSIsCi0JCSJwdWxzZSIsCi0JCSJmbGFzaF9ob29rIiwKLQkJImZpeGVkX3BhdXNlIiwKLQkJIndhaXRfdG9uZSIsCi0JCSJ1c2VyMCIsCi0JCSJ1c2VyMSIsCi0JCSJ1c2VyMiIsCi0JCSJ1c2VyMyIsCi0JCSJ1c2VyNCIsCi0JCSJ1c2VyNSIsCi0JCSJ1c2VyNiIsCi0JCSJ1c2VyNyIsCi0JCSJ1c2VyOCIsCi0JCSJ1c2VyOSIsCi0JCSJvcmlnX3BhaXIiLAotCQkib3JpZ19jb2xvcnMiLAotCQkiaW5pdGlhbGl6ZV9jb2xvciIsCi0JCSJpbml0aWFsaXplX3BhaXIiLAotCQkic2V0X2NvbG9yX3BhaXIiLAotCQkic2V0X2ZvcmVncm91bmQiLAotCQkic2V0X2JhY2tncm91bmQiLAotCQkiY2hhbmdlX2NoYXJfcGl0Y2giLAotCQkiY2hhbmdlX2xpbmVfcGl0Y2giLAotCQkiY2hhbmdlX3Jlc19ob3J6IiwKLQkJImNoYW5nZV9yZXNfdmVydCIsCi0JCSJkZWZpbmVfY2hhciIsCi0JCSJlbnRlcl9kb3VibGV3aWRlX21vZGUiLAotCQkiZW50ZXJfZHJhZnRfcXVhbGl0eSIsCi0JCSJlbnRlcl9pdGFsaWNzX21vZGUiLAotCQkiZW50ZXJfbGVmdHdhcmRfbW9kZSIsCi0JCSJlbnRlcl9taWNyb19tb2RlIiwKLQkJImVudGVyX25lYXJfbGV0dGVyX3F1YWxpdHkiLAotCQkiZW50ZXJfbm9ybWFsX3F1YWxpdHkiLAotCQkiZW50ZXJfc2hhZG93X21vZGUiLAotCQkiZW50ZXJfc3Vic2NyaXB0X21vZGUiLAotCQkiZW50ZXJfc3VwZXJzY3JpcHRfbW9kZSIsCi0JCSJlbnRlcl91cHdhcmRfbW9kZSIsCi0JCSJleGl0X2RvdWJsZXdpZGVfbW9kZSIsCi0JCSJleGl0X2l0YWxpY3NfbW9kZSIsCi0JCSJleGl0X2xlZnR3YXJkX21vZGUiLAotCQkiZXhpdF9taWNyb19tb2RlIiwKLQkJImV4aXRfc2hhZG93X21vZGUiLAotCQkiZXhpdF9zdWJzY3JpcHRfbW9kZSIsCi0JCSJleGl0X3N1cGVyc2NyaXB0X21vZGUiLAotCQkiZXhpdF91cHdhcmRfbW9kZSIsCi0JCSJtaWNyb19jb2x1bW5fYWRkcmVzcyIsCi0JCSJtaWNyb19kb3duIiwKLQkJIm1pY3JvX2xlZnQiLAotCQkibWljcm9fcmlnaHQiLAotCQkibWljcm9fcm93X2FkZHJlc3MiLAotCQkibWljcm9fdXAiLAotCQkib3JkZXJfb2ZfcGlucyIsCi0JCSJwYXJtX2Rvd25fbWljcm8iLAotCQkicGFybV9sZWZ0X21pY3JvIiwKLQkJInBhcm1fcmlnaHRfbWljcm8iLAotCQkicGFybV91cF9taWNybyIsCi0JCSJzZWxlY3RfY2hhcl9zZXQiLAotCQkic2V0X2JvdHRvbV9tYXJnaW4iLAotCQkic2V0X2JvdHRvbV9tYXJnaW5fcGFybSIsCi0JCSJzZXRfbGVmdF9tYXJnaW5fcGFybSIsCi0JCSJzZXRfcmlnaHRfbWFyZ2luX3Bhcm0iLAotCQkic2V0X3RvcF9tYXJnaW4iLAotCQkic2V0X3RvcF9tYXJnaW5fcGFybSIsCi0JCSJzdGFydF9iaXRfaW1hZ2UiLAotCQkic3RhcnRfY2hhcl9zZXRfZGVmIiwKLQkJInN0b3BfYml0X2ltYWdlIiwKLQkJInN0b3BfY2hhcl9zZXRfZGVmIiwKLQkJInN1YnNjcmlwdF9jaGFyYWN0ZXJzIiwKLQkJInN1cGVyc2NyaXB0X2NoYXJhY3RlcnMiLAotCQkidGhlc2VfY2F1c2VfY3IiLAotCQkiemVyb19tb3Rpb24iLAotCQkiY2hhcl9zZXRfbmFtZXMiLAotCQkia2V5X21vdXNlIiwKLQkJIm1vdXNlX2luZm8iLAotCQkicmVxX21vdXNlX3BvcyIsCi0JCSJnZXRfbW91c2UiLAotCQkic2V0X2FfZm9yZWdyb3VuZCIsCi0JCSJzZXRfYV9iYWNrZ3JvdW5kIiwKLQkJInBrZXlfcGxhYiIsCi0JCSJkZXZpY2VfdHlwZSIsCi0JCSJjb2RlX3NldF9pbml0IiwKLQkJInNldDBfZGVzX3NlcSIsCi0JCSJzZXQxX2Rlc19zZXEiLAotCQkic2V0Ml9kZXNfc2VxIiwKLQkJInNldDNfZGVzX3NlcSIsCi0JCSJzZXRfbHJfbWFyZ2luIiwKLQkJInNldF90Yl9tYXJnaW4iLAotCQkiYml0X2ltYWdlX3JlcGVhdCIsCi0JCSJiaXRfaW1hZ2VfbmV3bGluZSIsCi0JCSJiaXRfaW1hZ2VfY2FycmlhZ2VfcmV0dXJuIiwKLQkJImNvbG9yX25hbWVzIiwKLQkJImRlZmluZV9iaXRfaW1hZ2VfcmVnaW9uIiwKLQkJImVuZF9iaXRfaW1hZ2VfcmVnaW9uIiwKLQkJInNldF9jb2xvcl9iYW5kIiwKLQkJInNldF9wYWdlX2xlbmd0aCIsCi0JCSJkaXNwbGF5X3BjX2NoYXIiLAotCQkiZW50ZXJfcGNfY2hhcnNldF9tb2RlIiwKLQkJImV4aXRfcGNfY2hhcnNldF9tb2RlIiwKLQkJImVudGVyX3NjYW5jb2RlX21vZGUiLAotCQkiZXhpdF9zY2FuY29kZV9tb2RlIiwKLQkJInBjX3Rlcm1fb3B0aW9ucyIsCi0JCSJzY2FuY29kZV9lc2NhcGUiLAotCQkiYWx0X3NjYW5jb2RlX2VzYyIsCi0JCSJlbnRlcl9ob3Jpem9udGFsX2hsX21vZGUiLAotCQkiZW50ZXJfbGVmdF9obF9tb2RlIiwKLQkJImVudGVyX2xvd19obF9tb2RlIiwKLQkJImVudGVyX3JpZ2h0X2hsX21vZGUiLAotCQkiZW50ZXJfdG9wX2hsX21vZGUiLAotCQkiZW50ZXJfdmVydGljYWxfaGxfbW9kZSIsCi0JCSJzZXRfYV9hdHRyaWJ1dGVzIiwKLQkJInNldF9wZ2xlbl9pbmNoIiwKLQkJInRlcm1jYXBfaW5pdDIiLAotCQkidGVybWNhcF9yZXNldCIsCi0JCSJsaW5lZmVlZF9pZl9ub3RfbGYiLAotCQkiYmFja3NwYWNlX2lmX25vdF9icyIsCi0JCSJvdGhlcl9ub25fZnVuY3Rpb25fa2V5cyIsCi0JCSJhcnJvd19rZXlfbWFwIiwKLQkJImFjc191bGNvcm5lciIsCi0JCSJhY3NfbGxjb3JuZXIiLAotCQkiYWNzX3VyY29ybmVyIiwKLQkJImFjc19scmNvcm5lciIsCi0JCSJhY3NfbHRlZSIsCi0JCSJhY3NfcnRlZSIsCi0JCSJhY3NfYnRlZSIsCi0JCSJhY3NfdHRlZSIsCi0JCSJhY3NfaGxpbmUiLAotCQkiYWNzX3ZsaW5lIiwKLQkJImFjc19wbHVzIiwKLQkJIm1lbW9yeV9sb2NrIiwKLQkJIm1lbW9yeV91bmxvY2siLAotCQkiYm94X2NoYXJzXzEiLAotCi0JCShOQ1VSU0VTX0NPTlNUIGNoYXIgKikwLAotfTsKLQotCi0jZW5kaWYgLyogQlJPS0VOX0xJTktFUiAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9NS2NhcHRhYi5zaCBiL25jdXJzZXMvdGluZm8vTUtjYXB0YWIuc2gKaW5kZXggOThjMDRlOC4uMjBjOTRhNiAxMDA3NTUKLS0tIGEvbmN1cnNlcy90aW5mby9NS2NhcHRhYi5zaAorKysgYi9uY3Vyc2VzL3RpbmZvL01LY2FwdGFiLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC0yNiwxMiArMjYsMTkgQEAKICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgJElkOiBNS2NhcHRhYi5zaCx2IDEuOCAyMDA3LzA4LzEyIDEzOjEzOjUxIHRvbSBFeHAgJAorIyAkSWQ6IE1LY2FwdGFiLnNoLHYgMS4xNCAyMDExLzEwLzIyIDE2OjM0OjUwIHRvbSBFeHAgJAogQVdLPSR7MS1hd2t9CiBPUFQxPSR7Mi0wfQogT1BUMj0kezMtdGluZm8vTUtjYXB0YWIuYXdrfQogREFUQT0kezQtLi4vaW5jbHVkZS9DYXBzfQogCitjYXQgPDxFT0YKKy8qCisgKiBnZW5lcmF0ZWQgYnkgJDAKKyAqLworCitFT0YKKwogY2F0IDw8J0VPRicKIC8qCiAgKgljb21wX2NhcHRhYi5jIC0tIFRoZSBuYW1lcyBvZiB0aGUgY2FwYWJpbGl0aWVzIGluZGV4ZWQgdmlhIGEgaGFzaApAQCAtNDgsNyArNTUsNyBAQAogLi9tYWtlX2hhc2ggMSBpbmZvICRPUFQxIDwkREFUQQogLi9tYWtlX2hhc2ggMyBjYXAgICRPUFQxIDwkREFUQQogCi0kQVdLIC1mICRPUFQyIGJpZ3N0cmluZ3M9JE9QVDEgdGFibGVuYW1lPWNhcGFsaWFzIDwkREFUQSAKKyRBV0sgLWYgJE9QVDIgYmlnc3RyaW5ncz0kT1BUMSB0YWJsZW5hbWU9Y2FwYWxpYXMgPCREQVRBCiAKICRBV0sgLWYgJE9QVDIgYmlnc3RyaW5ncz0kT1BUMSB0YWJsZW5hbWU9aW5mb2FsaWFzIDwkREFUQQogCkBAIC01OCw3ICs2NSw3IEBACiBzdGF0aWMgdm9pZAogbmV4dF9zdHJpbmcoY29uc3QgY2hhciAqc3RyaW5ncywgdW5zaWduZWQgKm9mZnNldCkKIHsKLQkqb2Zmc2V0ICs9IHN0cmxlbihzdHJpbmdzICsgKm9mZnNldCkgKyAxOworICAgICpvZmZzZXQgKz0gKHVuc2lnbmVkKSBzdHJsZW4oc3RyaW5ncyArICpvZmZzZXQpICsgMTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICoKQEAgLTY2LDIxICs3MywyMSBAQAogCQljb25zdCBuYW1lX3RhYmxlX2RhdGEgKnNvdXJjZSwKIAkJY29uc3QgY2hhciAqc3RyaW5ncykKIHsKLQlpZiAoKmFjdHVhbCA9PSAwKSB7Ci0JCSphY3R1YWwgPSB0eXBlQ2FsbG9jKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5LCBDQVBUQUJTSVpFKTsKLQkJaWYgKCphY3R1YWwgIT0gMCkgewotCQkJdW5zaWduZWQgbjsKLQkJCXVuc2lnbmVkIGxlbiA9IDA7Ci0JCQlmb3IgKG4gPSAwOyBuIDwgQ0FQVEFCU0laRTsgKytuKSB7Ci0JCQkJKCphY3R1YWwpW25dLm50ZV9uYW1lID0gc3RyaW5ncyArIGxlbjsKLQkJCQkoKmFjdHVhbClbbl0ubnRlX3R5cGUgPSBzb3VyY2Vbbl0ubnRlX3R5cGU7Ci0JCQkJKCphY3R1YWwpW25dLm50ZV9pbmRleCA9IHNvdXJjZVtuXS5udGVfaW5kZXg7Ci0JCQkJKCphY3R1YWwpW25dLm50ZV9saW5rID0gc291cmNlW25dLm50ZV9saW5rOwotCQkJCW5leHRfc3RyaW5nKHN0cmluZ3MsICZsZW4pOwotCQkJfQotCQl9CisgICAgaWYgKCphY3R1YWwgPT0gMCkgeworCSphY3R1YWwgPSB0eXBlQ2FsbG9jKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5LCBDQVBUQUJTSVpFKTsKKwlpZiAoKmFjdHVhbCAhPSAwKSB7CisJICAgIHVuc2lnbmVkIG47CisJICAgIHVuc2lnbmVkIGxlbiA9IDA7CisJICAgIGZvciAobiA9IDA7IG4gPCBDQVBUQUJTSVpFOyArK24pIHsKKwkJKCphY3R1YWwpW25dLm50ZV9uYW1lID0gc3RyaW5ncyArIGxlbjsKKwkJKCphY3R1YWwpW25dLm50ZV90eXBlID0gc291cmNlW25dLm50ZV90eXBlOworCQkoKmFjdHVhbClbbl0ubnRlX2luZGV4ID0gc291cmNlW25dLm50ZV9pbmRleDsKKwkJKCphY3R1YWwpW25dLm50ZV9saW5rID0gc291cmNlW25dLm50ZV9saW5rOworCQluZXh0X3N0cmluZyhzdHJpbmdzLCAmbGVuKTsKKwkgICAgfQogCX0KLQlyZXR1cm4gKmFjdHVhbDsKKyAgICB9CisgICAgcmV0dXJuICphY3R1YWw7CiB9CiAKICNkZWZpbmUgYWRkX2FsaWFzKGZpZWxkKSBcXApAQCAtOTIsMjAgKzk5LDIwIEBACiBfbmNfYnVpbGRfYWxpYXMoc3RydWN0IGFsaWFzICoqYWN0dWFsLAogCQljb25zdCBhbGlhc190YWJsZV9kYXRhICpzb3VyY2UsCiAJCWNvbnN0IGNoYXIgKnN0cmluZ3MsCi0JCXVuc2lnbmVkIHRhYmxlc2l6ZSkKKwkJc2l6ZV90IHRhYmxlc2l6ZSkKIHsKLQlpZiAoKmFjdHVhbCA9PSAwKSB7Ci0JCSphY3R1YWwgPSB0eXBlQ2FsbG9jKHN0cnVjdCBhbGlhcywgdGFibGVzaXplICsgMSk7Ci0JCWlmICgqYWN0dWFsICE9IDApIHsKLQkJCXVuc2lnbmVkIG47Ci0JCQlmb3IgKG4gPSAwOyBuIDwgdGFibGVzaXplOyArK24pIHsKLQkJCQlhZGRfYWxpYXMoZnJvbSk7Ci0JCQkJYWRkX2FsaWFzKHRvKTsKLQkJCQlhZGRfYWxpYXMoc291cmNlKTsKLQkJCX0KLQkJfQorICAgIGlmICgqYWN0dWFsID09IDApIHsKKwkqYWN0dWFsID0gdHlwZUNhbGxvYyhzdHJ1Y3QgYWxpYXMsIHRhYmxlc2l6ZSArIDEpOworCWlmICgqYWN0dWFsICE9IDApIHsKKwkgICAgc2l6ZV90IG47CisJICAgIGZvciAobiA9IDA7IG4gPCB0YWJsZXNpemU7ICsrbikgeworCQlhZGRfYWxpYXMoZnJvbSk7CisJCWFkZF9hbGlhcyh0byk7CisJCWFkZF9hbGlhcyhzb3VyY2UpOworCSAgICB9CiAJfQotCXJldHVybiAqYWN0dWFsOworICAgIH0KKyAgICByZXR1cm4gKmFjdHVhbDsKIH0KIAogI2RlZmluZSBidWlsZF9uYW1lcyhyb290KSBfbmNfYnVpbGRfbmFtZXMoJl9uY18jI3Jvb3QjI190YWJsZSwgXFwKQEAgLTEyMiwyNyArMTI5LDgyIEBACiAKIE5DVVJTRVNfRVhQT1JUKGNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICopIF9uY19nZXRfdGFibGUgKGJvb2wgdGVybWNhcCkKIHsKLQlyZXR1cm4gdGVybWNhcCA/IGJ1aWxkX25hbWVzKGNhcCkgOiBidWlsZF9uYW1lcyhpbmZvKSA7CisgICAgcmV0dXJuIHRlcm1jYXAgPyBidWlsZF9uYW1lcyhjYXApIDogYnVpbGRfbmFtZXMoaW5mbykgOwogfQogCi1OQ1VSU0VTX0VYUE9SVChjb25zdCBzaG9ydCAqKSBfbmNfZ2V0X2hhc2hfdGFibGUgKGJvb2wgdGVybWNhcCkKKy8qIGVudHJ5cG9pbnQgdXNlZCBieSB0YWNrIChkbyBub3QgYWx0ZXIpICovCitOQ1VSU0VTX0VYUE9SVChjb25zdCBIYXNoVmFsdWUgKikgX25jX2dldF9oYXNoX3RhYmxlIChib29sIHRlcm1jYXApCiB7Ci0JcmV0dXJuIHRlcm1jYXAgPyBfbmNfY2FwX2hhc2hfdGFibGU6IF9uY19pbmZvX2hhc2hfdGFibGUgOworICAgIHJldHVybiB0ZXJtY2FwID8gX25jX2NhcF9oYXNoX3RhYmxlOiBfbmNfaW5mb19oYXNoX3RhYmxlIDsKIH0KIAogTkNVUlNFU19FWFBPUlQoY29uc3Qgc3RydWN0IGFsaWFzICopIF9uY19nZXRfYWxpYXNfdGFibGUgKGJvb2wgdGVybWNhcCkKIHsKLQlyZXR1cm4gdGVybWNhcCA/IGJ1aWxkX2FsaWFzKGNhcCkgOiBidWlsZF9hbGlhcyhpbmZvKSA7CisgICAgcmV0dXJuIHRlcm1jYXAgPyBidWlsZF9hbGlhcyhjYXApIDogYnVpbGRfYWxpYXMoaW5mbykgOworfQorCitzdGF0aWMgSGFzaFZhbHVlCitpbmZvX2hhc2goY29uc3QgY2hhciAqc3RyaW5nKQoreworICAgIGxvbmcgc3VtID0gMDsKKworICAgIERFQlVHKDksICgiaGFzaGluZyAlcyIsIHN0cmluZykpOworICAgIHdoaWxlICgqc3RyaW5nKSB7CisJc3VtICs9IChsb25nKSAoKnN0cmluZyArICgqKHN0cmluZyArIDEpIDw8IDgpKTsKKwlzdHJpbmcrKzsKKyAgICB9CisKKyAgICBERUJVRyg5LCAoInN1bSBpcyAlbGQiLCBzdW0pKTsKKyAgICByZXR1cm4gKEhhc2hWYWx1ZSkgKHN1bSAlIEhBU0hUQUJTSVpFKTsKK30KKworI2RlZmluZSBUQ0FQX0xFTiAyCQkvKiBvbmx5IDEtIG9yIDItY2hhcmFjdGVyIG5hbWVzIGFyZSB1c2VkICovCisKK3N0YXRpYyBIYXNoVmFsdWUKK3RjYXBfaGFzaChjb25zdCBjaGFyICpzdHJpbmcpCit7CisgICAgY2hhciB0ZW1wW1RDQVBfTEVOICsgMV07CisgICAgaW50IGxpbWl0ID0gMDsKKworICAgIHdoaWxlICgqc3RyaW5nKSB7CisJdGVtcFtsaW1pdCsrXSA9ICpzdHJpbmcrKzsKKwlpZiAobGltaXQgPj0gVENBUF9MRU4pCisJICAgIGJyZWFrOworICAgIH0KKyAgICB0ZW1wW2xpbWl0XSA9ICdcMCc7CisgICAgcmV0dXJuIGluZm9faGFzaCh0ZW1wKTsKK30KKworc3RhdGljIGludAorY29tcGFyZV90Y2FwX25hbWVzKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisgICAgcmV0dXJuICFzdHJuY21wKGEsIGIsIChzaXplX3QpIFRDQVBfTEVOKTsKK30KKworc3RhdGljIGludAorY29tcGFyZV9pbmZvX25hbWVzKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisgICAgcmV0dXJuICFzdHJjbXAoYSwgYik7Cit9CisKK3N0YXRpYyBjb25zdCBIYXNoRGF0YSBoYXNoX2RhdGFbMl0gPSB7CisgICAgeyBIQVNIVEFCU0laRSwgX25jX2luZm9faGFzaF90YWJsZSwgaW5mb19oYXNoLCBjb21wYXJlX2luZm9fbmFtZXMgfSwKKyAgICB7IEhBU0hUQUJTSVpFLCBfbmNfY2FwX2hhc2hfdGFibGUsIHRjYXBfaGFzaCwgY29tcGFyZV90Y2FwX25hbWVzIH0KK307CisKK05DVVJTRVNfRVhQT1JUKGNvbnN0IEhhc2hEYXRhICopIF9uY19nZXRfaGFzaF9pbmZvIChib29sIHRlcm1jYXApCit7CisgICAgcmV0dXJuICZoYXNoX2RhdGFbKHRlcm1jYXAgIT0gRkFMU0UpXTsKIH0KIAogI2lmIE5PX0xFQUtTCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfY29tcF9jYXB0YWJfbGVha3Modm9pZCkKIHsKICNpZiAkT1BUMQotCUZyZWVJZk5lZWRlZChfbmNfY2FwX3RhYmxlKTsKLQlGcmVlSWZOZWVkZWQoX25jX2luZm9fdGFibGUpOwotCUZyZWVJZk5lZWRlZChfbmNfY2FwYWxpYXNfdGFibGUpOwotCUZyZWVJZk5lZWRlZChfbmNfaW5mb2FsaWFzX3RhYmxlKTsKKyAgICBGcmVlSWZOZWVkZWQoX25jX2NhcF90YWJsZSk7CisgICAgRnJlZUlmTmVlZGVkKF9uY19pbmZvX3RhYmxlKTsKKyAgICBGcmVlSWZOZWVkZWQoX25jX2NhcGFsaWFzX3RhYmxlKTsKKyAgICBGcmVlSWZOZWVkZWQoX25jX2luZm9hbGlhc190YWJsZSk7CiAjZW5kaWYKIH0KICNlbmRpZiAvKiBOT19MRUFLUyAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9NS2NvZGVzLmF3ayBiL25jdXJzZXMvdGluZm8vTUtjb2Rlcy5hd2sKaW5kZXggYjliYTYzNi4uOTdlNTEzMSAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9NS2NvZGVzLmF3aworKysgYi9uY3Vyc2VzL3RpbmZvL01LY29kZXMuYXdrCkBAIC0xLDUgKzEsNSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjUsNyArMjUsNyBAQAogIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCiAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyAkSWQ6IE1LY29kZXMuYXdrLHYgMS41IDIwMDgvMDYvMjggMjM6MTM6MjUgdG9tIEV4cCAkCisjICRJZDogTUtjb2Rlcy5hd2ssdiAxLjkgMjAxMC8wMS8yMyAxNzo1Nzo0MyB0b20gRXhwICQKIGZ1bmN0aW9uIGxhcmdlX2l0ZW0odmFsdWUpIHsKIAlyZXN1bHQgPSBzcHJpbnRmKCIlZCwiLCBvZmZzZXQpOwogCW9mZnNldCA9IG9mZnNldCArIGxlbmd0aCh2YWx1ZSkgKyAxOwpAQCAtMTAxLDggKzEwMSw2IEBACiAJCXByaW50ICAiIgogCQlwcmludCAgIiNpZiBCUk9LRU5fTElOS0VSIHx8IFVTRV9SRUVOVFJBTlQiCiAJCXByaW50ICAiIgotCQlwcmludCAgIiNpbmNsdWRlIDx0ZXJtLmg+IgotCQlwcmludCAgIiIKIAkJaWYgKGJpZ3N0cmluZ3MpIHsKIAkJCXByaW50ZiAic3RhdGljIGNvbnN0IGNoYXIgX25jX2NvZGVfYmxvYltdID0gXG4iCiAJCQlwcmludGYgIiVzO1xuIiwgYmlnc3RyOwpAQCAtMTE3LDI4ICsxMTUsMzkgQEAKIAkJCXByaW50ICAiCQlpZiAoKCp2YWx1ZSA9IHR5cGVDYWxsb2MoTkNVUlNFU19DT05TVCBjaGFyICosIHNpemUgKyAxKSkgIT0gMCkgeyIKIAkJCXByaW50ICAiCQkJdW5zaWduZWQgbjsiCiAJCQlwcmludCAgIgkJCWZvciAobiA9IDA7IG4gPCBzaXplOyArK24pIHsiCi0JCQlwcmludCAgIgkJCQkoKnZhbHVlKVtuXSA9IF9uY19jb2RlX2Jsb2IgKyBvZmZzZXRzW25dOyIKKwkJCXByaW50ICAiCQkJCSgqdmFsdWUpW25dID0gKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBfbmNfY29kZV9ibG9iICsgb2Zmc2V0c1tuXTsiCiAJCQlwcmludCAgIgkJCX0iCiAJCQlwcmludCAgIgkJfSIKIAkJCXByaW50ICAiCX0iCiAJCQlwcmludCAgIglyZXR1cm4gKnZhbHVlOyIKIAkJCXByaW50ICAifSIKIAkJCXByaW50ICAiIgotCQkJcHJpbnQgICIjZGVmaW5lIEZJWChpdCkgTkNVUlNFU19JTVBFWFAgSVQgKiBOQ1VSU0VTX0FQSSBfbmNfIyNpdCh2b2lkKSB7IHJldHVybiBhbGxvY19hcnJheSgmcHRyXyMjaXQsIF9uY19vZmZzZXRfIyNpdCwgU0laRU9GKF9uY19vZmZzZXRfIyNpdCkpOyB9IgorCQkJcHJpbnQgICIjZGVmaW5lIEZJWChpdCkgTkNVUlNFU19JTVBFWFAgSVQgKiBOQ1VSU0VTX0FQSSBOQ1VSU0VTX1BVQkxJQ19WQVIoaXQpKHZvaWQpIHsgcmV0dXJuIGFsbG9jX2FycmF5KCZwdHJfIyNpdCwgX25jX29mZnNldF8jI2l0LCBTSVpFT0YoX25jX29mZnNldF8jI2l0KSk7IH0iCiAJCX0gZWxzZSB7CiAJCQlwcmludCAgIiNkZWZpbmUgRENMKGl0KSBzdGF0aWMgSVQgZGF0YSMjaXRbXSIKIAkJCXByaW50ICAiIgogCQkJcHJpbnRfc3RyaW5ncygiYm9vbGNvZGVzIiwgc21hbGxfYm9vbGNvZGVzKTsKIAkJCXByaW50X3N0cmluZ3MoIm51bWNvZGVzIiwgc21hbGxfbnVtY29kZXMpOwogCQkJcHJpbnRfc3RyaW5ncygic3RyY29kZXMiLCBzbWFsbF9zdHJjb2Rlcyk7Ci0JCQlwcmludCAgIiNkZWZpbmUgRklYKGl0KSBOQ1VSU0VTX0lNUEVYUCBJVCAqIE5DVVJTRVNfQVBJIF9uY18jI2l0KHZvaWQpIHsgcmV0dXJuIGRhdGEjI2l0OyB9IgorCQkJcHJpbnQgICIjZGVmaW5lIEZJWChpdCkgTkNVUlNFU19JTVBFWFAgSVQgKiBOQ1VSU0VTX0FQSSBOQ1VSU0VTX1BVQkxJQ19WQVIoaXQpKHZvaWQpIHsgcmV0dXJuIGRhdGEjI2l0OyB9IgogCQl9CiAJCXByaW50ICAiIgorCQlwcmludCAgIi8qIHJlbW92ZSBwdWJsaWMgZGVmaW5pdGlvbiB3aGljaCBjb25mbGljdHMgd2l0aCBGSVgoKSAqLyIKKwkJcHJpbnQgICIjdW5kZWYgYm9vbGNvZGVzIgorCQlwcmludCAgIiN1bmRlZiBudW1jb2RlcyIKKwkJcHJpbnQgICIjdW5kZWYgc3RyY29kZXMiCisJCXByaW50ICAiIgorCQlwcmludCAgIi8qIGFkZCBsb2NhbCBkZWZpbml0aW9uICovIgogCQlwcmludCAgIkZJWChib29sY29kZXMpIgogCQlwcmludCAgIkZJWChudW1jb2RlcykiCiAJCXByaW50ICAiRklYKHN0cmNvZGVzKSIKIAkJcHJpbnQgICIiCisJCXByaW50ICAiLyogcmVzdG9yZSB0aGUgcHVibGljIGRlZmluaXRpb24gKi8iCisJCXByaW50ICAiIgogCQlwcmludCAgIiNkZWZpbmUgRlJFRV9GSVgoaXQpIGlmIChwdHJfIyNpdCkgeyBGcmVlQW5kTnVsbChwdHJfIyNpdCk7IH0iCisJCXByaW50ICAiI2RlZmluZSBib29sY29kZXMgIE5DVVJTRVNfUFVCTElDX1ZBUihib29sY29kZXMoKSkiCisJCXByaW50ICAiI2RlZmluZSBudW1jb2RlcyAgIE5DVVJTRVNfUFVCTElDX1ZBUihudW1jb2RlcygpKSIKKwkJcHJpbnQgICIjZGVmaW5lIHN0cmNvZGVzICAgTkNVUlNFU19QVUJMSUNfVkFSKHN0cmNvZGVzKCkpIgogCQlwcmludCAgIiIKIAkJcHJpbnQgICIjaWYgTk9fTEVBS1MiCiAJCXByaW50ICAiTkNVUlNFU19FWFBPUlQodm9pZCkiCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL01LZmFsbGJhY2suc2ggYi9uY3Vyc2VzL3RpbmZvL01LZmFsbGJhY2suc2gKaW5kZXggOWZlYWIzNS4uMTFmMWQyZSAxMDA3NTUKLS0tIGEvbmN1cnNlcy90aW5mby9NS2ZhbGxiYWNrLnNoCisrKyBiL25jdXJzZXMvdGluZm8vTUtmYWxsYmFjay5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtMjYsNyArMjYsNyBAQAogIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCiAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyAkSWQ6IE1LZmFsbGJhY2suc2gsdiAxLjEzIDIwMDYvMDcvMTUgMTY6NTQ6MjAgdG9tIEV4cCAkCisjICRJZDogTUtmYWxsYmFjay5zaCx2IDEuMTUgMjAxMC8wOC8wNyAyMDozMjozNCB0b20gRXhwICQKICMKICMgTUtmYWxsYmFjay5zaCAtLSBjcmVhdGUgZmFsbGJhY2sgdGFibGUgZm9yIGVudHJ5IHJlYWRzCiAjCkBAIC00Miw2ICs0MiwxNyBAQAogdGVybWluZm9fc3JjPSQxCiBzaGlmdAogCit0aWNfcGF0aD0kMQorc2hpZnQKKworY2FzZSAkdGljX3BhdGggaW4gIyh2aQorLyopCisJdGljX2hlYWQ9YGVjaG8gIiR0aWNfcGF0aCIgfCBzZWQgLWUgJ3MsL1teL10qJCwsJ2AKKwlQQVRIPSR0aWNfaGVhZDokUEFUSAorCWV4cG9ydCBQQVRICisJOzsKK2VzYWMKKwogaWYgdGVzdCAkIyAhPSAwIDsgdGhlbgogCXRtcF9pbmZvPXRtcF9pbmZvCiAJZWNobyBjcmVhdGluZyB0ZW1wb3JhcnkgdGVybWluZm8gZGlyZWN0b3J5Li4uID4mMgpAQCAtNTIsNyArNjMsNyBAQAogCVRFUk1JTkZPX0RJUlM9JFRFUk1JTkZPOiR0ZXJtaW5mb19kaXIKIAlleHBvcnQgVEVSTUlORk9fRElSUwogCi0JdGljIC14ICR0ZXJtaW5mb19zcmMgPiYyCisJJHRpY19wYXRoIC14ICR0ZXJtaW5mb19zcmMgPiYyCiBlbHNlCiAJdG1wX2luZm89CiBmaQpAQCAtNjMsNyArNzQsNiBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4KIAogRU9GCiAKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vTUtuYW1lcy5hd2sgYi9uY3Vyc2VzL3RpbmZvL01LbmFtZXMuYXdrCmluZGV4IDdlNTA3NDQuLjc2ODVkMTggMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vTUtuYW1lcy5hd2sKKysrIGIvbmN1cnNlcy90aW5mby9NS25hbWVzLmF3awpAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMjAwNy0yMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI1LDcgKzI1LDcgQEAKICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgJElkOiBNS25hbWVzLmF3ayx2IDEuMjAgMjAwOC8xMC8xMSAyMTowNzo1NiB0b20gRXhwICQKKyMgJElkOiBNS25hbWVzLmF3ayx2IDEuMjIgMjAwOS8wMy8yMSAyMTowMzozOSB0b20gRXhwICQKIGZ1bmN0aW9uIGxhcmdlX2l0ZW0odmFsdWUpIHsKIAlyZXN1bHQgPSBzcHJpbnRmKCIlZCwiLCBvZmZzZXQpOwogCW9mZnNldCA9IG9mZnNldCArIGxlbmd0aCh2YWx1ZSkgKyAxOwpAQCAtMTA3LDggKzEwNyw2IEBACiAJCXByaW50ICAiIgogCQlwcmludCAgIiNpZiBCUk9LRU5fTElOS0VSIHx8IFVTRV9SRUVOVFJBTlQiCiAJCXByaW50ICAiIgotCQlwcmludCAgIiNpbmNsdWRlIDx0ZXJtLmg+IgotCQlwcmludCAgIiIKIAkJaWYgKGJpZ3N0cmluZ3MpIHsKIAkJCXByaW50ZiAic3RhdGljIGNvbnN0IGNoYXIgX25jX25hbWVfYmxvYltdID0gXG4iCiAJCQlwcmludGYgIiVzO1xuIiwgYmlnc3RyOwpAQCAtMTMzLDcgKzEzMSw3IEBACiAJCQlwcmludCAgIglyZXR1cm4gKnZhbHVlOyIKIAkJCXByaW50ICAifSIKIAkJCXByaW50ICAiIgotCQkJcHJpbnQgICIjZGVmaW5lIEZJWChpdCkgTkNVUlNFU19JTVBFWFAgSVQgKiBOQ1VSU0VTX0FQSSBfbmNfIyNpdCh2b2lkKSB7IHJldHVybiBhbGxvY19hcnJheSgmcHRyXyMjaXQsIF9uY19vZmZzZXRfIyNpdCwgU0laRU9GKF9uY19vZmZzZXRfIyNpdCkpOyB9IgorCQkJcHJpbnQgICIjZGVmaW5lIEZJWChpdCkgTkNVUlNFU19JTVBFWFAgSVQgKiBOQ1VSU0VTX0FQSSBOQ1VSU0VTX1BVQkxJQ19WQVIoaXQpKHZvaWQpIHsgcmV0dXJuIGFsbG9jX2FycmF5KCZwdHJfIyNpdCwgX25jX29mZnNldF8jI2l0LCBTSVpFT0YoX25jX29mZnNldF8jI2l0KSk7IH0iCiAJCX0gZWxzZSB7CiAJCQlwcmludCAgIiNkZWZpbmUgRENMKGl0KSBzdGF0aWMgSVQgZGF0YSMjaXRbXSIKIAkJCXByaW50ICAiIgpAQCAtMTQzLDkgKzE0MSwxOCBAQAogCQkJcHJpbnRfc3RyaW5ncygibnVtZm5hbWVzIiwgc21hbGxfbnVtZm5hbWVzKTsKIAkJCXByaW50X3N0cmluZ3MoInN0cm5hbWVzIiwgc21hbGxfc3RybmFtZXMpOwogCQkJcHJpbnRfc3RyaW5ncygic3RyZm5hbWVzIiwgc21hbGxfc3RyZm5hbWVzKTsKLQkJCXByaW50ICAiI2RlZmluZSBGSVgoaXQpIE5DVVJTRVNfSU1QRVhQIElUICogTkNVUlNFU19BUEkgX25jXyMjaXQodm9pZCkgeyByZXR1cm4gZGF0YSMjaXQ7IH0iCisJCQlwcmludCAgIiNkZWZpbmUgRklYKGl0KSBOQ1VSU0VTX0lNUEVYUCBJVCAqIE5DVVJTRVNfQVBJIE5DVVJTRVNfUFVCTElDX1ZBUihpdCkodm9pZCkgeyByZXR1cm4gZGF0YSMjaXQ7IH0iCiAJCX0KIAkJcHJpbnQgICIiCisJCXByaW50ICAiLyogcmVtb3ZlIHB1YmxpYyBkZWZpbml0aW9uIHdoaWNoIGNvbmZsaWN0cyB3aXRoIEZJWCgpICovIgorCQlwcmludCAgIiN1bmRlZiBib29sbmFtZXMiCisJCXByaW50ICAiI3VuZGVmIGJvb2xmbmFtZXMiCisJCXByaW50ICAiI3VuZGVmIG51bW5hbWVzIgorCQlwcmludCAgIiN1bmRlZiBudW1mbmFtZXMiCisJCXByaW50ICAiI3VuZGVmIHN0cm5hbWVzIgorCQlwcmludCAgIiN1bmRlZiBzdHJmbmFtZXMiCisJCXByaW50ICAiIgorCQlwcmludCAgIi8qIGFkZCBsb2NhbCBkZWZpbml0aW9uICovIgogCQlwcmludCAgIkZJWChib29sbmFtZXMpIgogCQlwcmludCAgIkZJWChib29sZm5hbWVzKSIKIAkJcHJpbnQgICJGSVgobnVtbmFtZXMpIgpAQCAtMTUzLDYgKzE2MCwxMyBAQAogCQlwcmludCAgIkZJWChzdHJuYW1lcykiCiAJCXByaW50ICAiRklYKHN0cmZuYW1lcykiCiAJCXByaW50ICAiIgorCQlwcmludCAgIi8qIHJlc3RvcmUgdGhlIHB1YmxpYyBkZWZpbml0aW9uICovIgorCQlwcmludCAgIiNkZWZpbmUgYm9vbG5hbWVzICBOQ1VSU0VTX1BVQkxJQ19WQVIoYm9vbG5hbWVzKCkpIgorCQlwcmludCAgIiNkZWZpbmUgYm9vbGZuYW1lcyBOQ1VSU0VTX1BVQkxJQ19WQVIoYm9vbGZuYW1lcygpKSIKKwkJcHJpbnQgICIjZGVmaW5lIG51bW5hbWVzICAgTkNVUlNFU19QVUJMSUNfVkFSKG51bW5hbWVzKCkpIgorCQlwcmludCAgIiNkZWZpbmUgbnVtZm5hbWVzICBOQ1VSU0VTX1BVQkxJQ19WQVIobnVtZm5hbWVzKCkpIgorCQlwcmludCAgIiNkZWZpbmUgc3RybmFtZXMgICBOQ1VSU0VTX1BVQkxJQ19WQVIoc3RybmFtZXMoKSkiCisJCXByaW50ICAiI2RlZmluZSBzdHJmbmFtZXMgIE5DVVJTRVNfUFVCTElDX1ZBUihzdHJmbmFtZXMoKSkiCiAJCXByaW50ICAiIgogCQlwcmludCAgIiNkZWZpbmUgRlJFRV9GSVgoaXQpIGlmIChwdHJfIyNpdCkgeyBGcmVlQW5kTnVsbChwdHJfIyNpdCk7IH0iCiAJCXByaW50ICAiIgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9hY2Nlc3MuYyBiL25jdXJzZXMvdGluZm8vYWNjZXNzLmMKaW5kZXggY2U4Y2NkYS4uZDk4NzY4NyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9hY2Nlc3MuYworKysgYi9uY3Vyc2VzL3RpbmZvL2FjY2Vzcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzMsMTIgKzMzLDE4IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAogI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAogI2luY2x1ZGUgPHRpYy5oPgotI2luY2x1ZGUgPG5jX2FsbG9jLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBhY2Nlc3MuYyx2IDEuMTQgMjAwNy8xMS8xOCAwMDo1Nzo1MyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGFjY2Vzcy5jLHYgMS4yMyAyMDEyLzA5LzAxIDE5OjIxOjI5IHRvbSBFeHAgJCIpCisKKyNpZmRlZiBfX1RBTkRFTQorI2RlZmluZSBST09UX1VJRCA2NTUzNQorI2VuZGlmCisKKyNpZm5kZWYgUk9PVF9VSUQKKyNkZWZpbmUgUk9PVF9VSUQgMAorI2VuZGlmCiAKICNkZWZpbmUgTE9XRVJDQVNFKGMpICgoaXNhbHBoYShVQ2hhcihjKSkgJiYgaXN1cHBlcihVQ2hhcihjKSkpID8gdG9sb3dlcihVQ2hhcihjKSkgOiAoYykpCiAKQEAgLTU0LDcgKzYwLDcgQEAKICAgICByZXN1bHQgPSB0ZW1wOwogI2lmICFNSVhFRENBU0VfRklMRU5BTUVTCiAgICAgZm9yIChzID0gcmVzdWx0OyAqcyAhPSAnXDAnOyArK3MpIHsKLQkqcyA9IExPV0VSQ0FTRSgqcyk7CisJKnMgPSAoY2hhcikgTE9XRVJDQVNFKCpzKTsKICAgICB9CiAjZW5kaWYKICNpZiBkZWZpbmVkKFBST0dfRVhUKQpAQCAtOTcsNyArMTAzLDcgQEAKIAl0ZXN0ID0gcGF0aDsKICAgICBlbHNlCiAJdGVzdCsrOwotICAgIHJldHVybiAodGVzdCAtIHBhdGgpOworICAgIHJldHVybiAodW5zaWduZWQpICh0ZXN0IC0gcGF0aCk7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKQEAgLTEwOSwyNCArMTE1LDMzIEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQogewotICAgIGlmIChhY2Nlc3MocGF0aCwgbW9kZSkgPCAwKSB7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmIChwYXRoID09IDApIHsKKwlyZXN1bHQgPSAtMTsKKyAgICB9IGVsc2UgaWYgKGFjY2VzcyhwYXRoLCBtb2RlKSA8IDApIHsKIAlpZiAoKG1vZGUgJiBXX09LKSAhPSAwCiAJICAgICYmIGVycm5vID09IEVOT0VOVAogCSAgICAmJiBzdHJsZW4ocGF0aCkgPCBQQVRIX01BWCkgewogCSAgICBjaGFyIGhlYWRbUEFUSF9NQVhdOwotCSAgICBjaGFyICpsZWFmID0gX25jX2Jhc2VuYW1lKHN0cmNweShoZWFkLCBwYXRoKSk7CisJICAgIGNoYXIgKmxlYWY7CiAKKwkgICAgX25jX1NUUkNQWShoZWFkLCBwYXRoLCBzaXplb2YoaGVhZCkpOworCSAgICBsZWFmID0gX25jX2Jhc2VuYW1lKGhlYWQpOwogCSAgICBpZiAobGVhZiA9PSAwKQogCQlsZWFmID0gaGVhZDsKIAkgICAgKmxlYWYgPSAnXDAnOwogCSAgICBpZiAoaGVhZCA9PSBsZWFmKQotCQkodm9pZCkgc3RyY3B5KGhlYWQsICIuIik7CisJCV9uY19TVFJDUFkoaGVhZCwgIi4iLCBzaXplb2YoaGVhZCkpOwogCi0JICAgIHJldHVybiBhY2Nlc3MoaGVhZCwgUl9PSyB8IFdfT0sgfCBYX09LKTsKKwkgICAgcmVzdWx0ID0gYWNjZXNzKGhlYWQsIFJfT0sgfCBXX09LIHwgWF9PSyk7CisJfSBlbHNlIHsKKwkgICAgcmVzdWx0ID0gLTE7CiAJfQotCXJldHVybiAtMTsKKyAgICB9IGVsc2UgeworCXJlc3VsdCA9IDA7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGJvb2wpCkBAIC0xMzYsNyArMTUxLDcgQEAKICAgICBzdHJ1Y3Qgc3RhdCBzYjsKIAogICAgIGlmIChzdGF0KHBhdGgsICZzYikgPT0gMAotCSYmIChzYi5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKSB7CisJJiYgU19JU0RJUihzYi5zdF9tb2RlKSkgewogCXJlc3VsdCA9IFRSVUU7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDksNyArMTY0LDcgQEAKICAgICBzdHJ1Y3Qgc3RhdCBzYjsKIAogICAgIGlmIChzdGF0KHBhdGgsICZzYikgPT0gMAotCSYmIChzYi5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSB7CisJJiYgU19JU1JFRyhzYi5zdF9tb2RlKSkgewogCXJlc3VsdCA9IFRSVUU7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzEsNiArMTg2LDcgQEAKIAl8fCBnZXRnaWQoKSAhPSBnZXRlZ2lkKCkpCiAJcmV0dXJuIEZBTFNFOwogI2VuZGlmCi0gICAgcmV0dXJuIGdldHVpZCgpICE9IDAgJiYgZ2V0ZXVpZCgpICE9IDA7CS8qIC4uLmZpbmFsbHksIGRpc2FsbG93IHJvb3QgKi8KKyAgICAvKiAuLi5maW5hbGx5LCBkaXNhbGxvdyByb290ICovCisgICAgcmV0dXJuIChnZXR1aWQoKSAhPSBST09UX1VJRCkgJiYgKGdldGV1aWQoKSAhPSBST09UX1VJRCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vYWRkX3RyaWVzLmMgYi9uY3Vyc2VzL3RpbmZvL2FkZF90cmllcy5jCmluZGV4IDQ1NWQxNDIuLjI5YTFhNjAgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vYWRkX3RyaWVzLmMKKysrIGIvbmN1cnNlcy90aW5mby9hZGRfdHJpZXMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBhZGRfdHJpZXMuYyx2IDEuOCAyMDA2LzEyLzMwIDIzOjE1OjI2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogYWRkX3RyaWVzLmMsdiAxLjEwIDIwMTAvMTIvMTkgMDE6MzE6MTQgdG9tIEV4cCAkIikKIAogI2RlZmluZSBTRVRfVFJZKGRzdCxzcmMpIGlmICgoZHN0LT5jaCA9ICpzcmMrKykgPT0gMTI4KSBkc3QtPmNoID0gJ1wwJwogI2RlZmluZSBDTVBfVFJZKGEsYikgKChhKT8gKGEgPT0gYikgOiAoYiA9PSAxMjgpKQpAQCAtNTAsNyArNTAsOCBAQAogICAgIFRSSUVTICpwdHIsICpzYXZlZHB0cjsKICAgICB1bnNpZ25lZCBjb25zdCBjaGFyICp0eHQgPSAodW5zaWduZWQgY29uc3QgY2hhciAqKSBzdHI7CiAKLSAgICBUKChUX0NBTExFRCgiX25jX2FkZF90b190cnkoJXAsICVzLCAldSkiKSwgKnRyZWUsIF9uY192aXNidWYoc3RyKSwgY29kZSkpOworICAgIFQoKFRfQ0FMTEVEKCJfbmNfYWRkX3RvX3RyeSglcCwgJXMsICV1KSIpLAorICAgICAgICh2b2lkICopICp0cmVlLCBfbmNfdmlzYnVmKHN0ciksIGNvZGUpKTsKICAgICBpZiAodHh0ID09IDAgfHwgKnR4dCA9PSAnXDAnIHx8IGNvZGUgPT0gMCkKIAlyZXR1cm5Db2RlKEVSUik7CiAKQEAgLTY2LDcgKzY3LDcgQEAKIAogCSAgICBpZiAoQ01QX1RSWShwdHItPmNoLCBjbXApKSB7CiAJCWlmICgqKCsrdHh0KSA9PSAnXDAnKSB7Ci0JCSAgICBwdHItPnZhbHVlID0gY29kZTsKKwkJICAgIHB0ci0+dmFsdWUgPSAodW5zaWduZWQgc2hvcnQpIGNvZGU7CiAJCSAgICByZXR1cm5Db2RlKE9LKTsKIAkJfQogCQlpZiAocHRyLT5jaGlsZCAhPSAwKQpAQCAtMTE1LDYgKzExNiw2IEBACiAJcHRyLT52YWx1ZSA9IDA7CiAgICAgfQogCi0gICAgcHRyLT52YWx1ZSA9IGNvZGU7CisgICAgcHRyLT52YWx1ZSA9ICh1bnNpZ25lZCBzaG9ydCkgY29kZTsKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYwppbmRleCA0NjM4ZTk5Li4xNGVhMzkxIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKKysrIGIvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDYsOSArNDYsOCBAQAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKICNpbmNsdWRlIDx0aWMuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBhbGxvY19lbnRyeS5jLHYgMS40OCAyMDA4LzA4LzE2IDE2OjI1OjMxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogYWxsb2NfZW50cnkuYyx2IDEuNTggMjAxMy8wOC8xNyAxOToyMDozOCB0b20gRXhwICQiKQogCiAjZGVmaW5lIEFCU0VOVF9PRkZTRVQgICAgLTEKICNkZWZpbmUgQ0FOQ0VMTEVEX09GRlNFVCAtMgpAQCAtNjIsNDMgKzYxLDIxIEBACiBfbmNfaW5pdF9lbnRyeShURVJNVFlQRSAqY29uc3QgdHApCiAvKiBpbml0aWFsaXplIGEgdGVybWluYWwgdHlwZSBkYXRhIGJsb2NrICovCiB7Ci0gICAgdW5zaWduZWQgaTsKLQogI2lmIE5PX0xFQUtTCi0gICAgaWYgKHRwID09IDAgJiYgc3RyaW5nYnVmICE9IDApIHsKLQlGcmVlQW5kTnVsbChzdHJpbmdidWYpOworICAgIGlmICh0cCA9PSAwKSB7CisJaWYgKHN0cmluZ2J1ZiAhPSAwKSB7CisJICAgIEZyZWVBbmROdWxsKHN0cmluZ2J1Zik7CisJfQogCXJldHVybjsKICAgICB9CiAjZW5kaWYKIAogICAgIGlmIChzdHJpbmdidWYgPT0gMCkKLQlzdHJpbmdidWYgPSAoY2hhciAqKSBtYWxsb2MoTUFYX1NUUlRBQik7Ci0KLSNpZiBOQ1VSU0VTX1hOQU1FUwotICAgIHRwLT5udW1fQm9vbGVhbnMgPSBCT09MQ09VTlQ7Ci0gICAgdHAtPm51bV9OdW1iZXJzID0gTlVNQ09VTlQ7Ci0gICAgdHAtPm51bV9TdHJpbmdzID0gU1RSQ09VTlQ7Ci0gICAgdHAtPmV4dF9Cb29sZWFucyA9IDA7Ci0gICAgdHAtPmV4dF9OdW1iZXJzID0gMDsKLSAgICB0cC0+ZXh0X1N0cmluZ3MgPSAwOwotI2VuZGlmCi0gICAgaWYgKHRwLT5Cb29sZWFucyA9PSAwKQotCXRwLT5Cb29sZWFucyA9IHR5cGVNYWxsb2MoTkNVUlNFU19TQk9PTCwgQk9PTENPVU5UKTsKLSAgICBpZiAodHAtPk51bWJlcnMgPT0gMCkKLQl0cC0+TnVtYmVycyA9IHR5cGVNYWxsb2Moc2hvcnQsIE5VTUNPVU5UKTsKLSAgICBpZiAodHAtPlN0cmluZ3MgPT0gMCkKLQl0cC0+U3RyaW5ncyA9IHR5cGVNYWxsb2MoY2hhciAqLCBTVFJDT1VOVCk7Ci0KLSAgICBmb3JfZWFjaF9ib29sZWFuKGksIHRwKQotCXRwLT5Cb29sZWFuc1tpXSA9IEZBTFNFOwotCi0gICAgZm9yX2VhY2hfbnVtYmVyKGksIHRwKQotCXRwLT5OdW1iZXJzW2ldID0gQUJTRU5UX05VTUVSSUM7Ci0KLSAgICBmb3JfZWFjaF9zdHJpbmcoaSwgdHApCi0JdHAtPlN0cmluZ3NbaV0gPSBBQlNFTlRfU1RSSU5HOworCVRZUEVfTUFMTE9DKGNoYXIsIChzaXplX3QpIE1BWF9TVFJUQUIsIHN0cmluZ2J1Zik7CiAKICAgICBuZXh0X2ZyZWUgPSAwOworCisgICAgX25jX2luaXRfdGVybXR5cGUodHApOwogfQogCiBOQ1VSU0VTX0VYUE9SVChFTlRSWSAqKQpAQCAtMTMwLDEzICsxMDcsMTMgQEAKIAkgICAgcmVzdWx0ID0gKHN0cmluZ2J1ZiArIG5leHRfZnJlZSAtIDEpOwogCX0KICAgICB9IGVsc2UgaWYgKG5leHRfZnJlZSArIGxlbiA8IE1BWF9TVFJUQUIpIHsKLQlzdHJjcHkoJnN0cmluZ2J1ZltuZXh0X2ZyZWVdLCBzdHJpbmcpOworCV9uY19TVFJDUFkoJnN0cmluZ2J1ZltuZXh0X2ZyZWVdLCBzdHJpbmcsIE1BWF9TVFJUQUIpOwogCURFQlVHKDcsICgiU2F2ZWQgc3RyaW5nICVzIiwgX25jX3Zpc2J1ZihzdHJpbmcpKSk7CiAJREVCVUcoNywgKCJhdCBsb2NhdGlvbiAlZCIsIChpbnQpIG5leHRfZnJlZSkpOwogCW5leHRfZnJlZSArPSBsZW47CiAJcmVzdWx0ID0gKHN0cmluZ2J1ZiArIG9sZF9uZXh0X2ZyZWUpOwogICAgIH0gZWxzZSB7Ci0JX25jX3dhcm5pbmcoIlRvbyBtdWNoIGRhdGEsIHNvbWUgaXMgbG9zdCIpOworCV9uY193YXJuaW5nKCJUb28gbXVjaCBkYXRhLCBzb21lIGlzIGxvc3Q6ICVzIiwgc3RyaW5nKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE4MSw3ICsxNTgsNyBAQAogCSAgICB9IGVsc2UgaWYgKHRwLT5TdHJpbmdzW2ldID09IENBTkNFTExFRF9TVFJJTkcpIHsKIAkJb2Zmc2V0c1tpXSA9IENBTkNFTExFRF9PRkZTRVQ7CiAJICAgIH0gZWxzZSB7Ci0JCW9mZnNldHNbaV0gPSB0cC0+U3RyaW5nc1tpXSAtIHN0cmluZ2J1ZjsKKwkJb2Zmc2V0c1tpXSA9IChpbnQpICh0cC0+U3RyaW5nc1tpXSAtIHN0cmluZ2J1Zik7CiAJICAgIH0KIAl9CiAgICAgfQpAQCAtMTkwLDExICsxNjcsMTAgQEAKIAlpZiAoZXAtPnVzZXNbaV0ubmFtZSA9PSAwKQogCSAgICB1c2VvZmZzZXRzW2ldID0gQUJTRU5UX09GRlNFVDsKIAllbHNlCi0JICAgIHVzZW9mZnNldHNbaV0gPSBlcC0+dXNlc1tpXS5uYW1lIC0gc3RyaW5nYnVmOworCSAgICB1c2VvZmZzZXRzW2ldID0gKGludCkgKGVwLT51c2VzW2ldLm5hbWUgLSBzdHJpbmdidWYpOwogICAgIH0KIAotICAgIGlmICgodHAtPnN0cl90YWJsZSA9IHR5cGVNYWxsb2MoY2hhciwgbmV4dF9mcmVlKSkgPT0gKGNoYXIgKikgMCkKLQkgIF9uY19lcnJfYWJvcnQoTVNHX05PX01FTU9SWSk7CisgICAgVFlQRV9NQUxMT0MoY2hhciwgbmV4dF9mcmVlLCB0cC0+c3RyX3RhYmxlKTsKICAgICAodm9pZCkgbWVtY3B5KHRwLT5zdHJfdGFibGUsIHN0cmluZ2J1ZiwgbmV4dF9mcmVlKTsKIAogICAgIHRwLT50ZXJtX25hbWVzID0gdHAtPnN0cl90YWJsZSArIG47CkBAIC0yMTQsMTcgKzE5MCwxOSBAQAogICAgIGlmICghY29weV9zdHJpbmdzKSB7CiAJaWYgKChuID0gKHVuc2lnbmVkKSBOVU1fRVhUX05BTUVTKHRwKSkgIT0gMCkgewogCSAgICBpZiAobiA8IFNJWkVPRihvZmZzZXRzKSkgewotCQl1bnNpZ25lZCBsZW5ndGggPSAwOworCQlzaXplX3QgbGVuZ3RoID0gMDsKKwkJc2l6ZV90IG9mZnNldDsKIAkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQkgICAgbGVuZ3RoICs9IHN0cmxlbih0cC0+ZXh0X05hbWVzW2ldKSArIDE7Ci0JCSAgICBvZmZzZXRzW2ldID0gdHAtPmV4dF9OYW1lc1tpXSAtIHN0cmluZ2J1ZjsKKwkJICAgIG9mZnNldHNbaV0gPSAoaW50KSAodHAtPmV4dF9OYW1lc1tpXSAtIHN0cmluZ2J1Zik7CiAJCX0KLQkJaWYgKCh0cC0+ZXh0X3N0cl90YWJsZSA9IHR5cGVNYWxsb2MoY2hhciwgbGVuZ3RoKSkgPT0gMCkKLQkJICAgICAgX25jX2Vycl9hYm9ydChNU0dfTk9fTUVNT1JZKTsKLQkJZm9yIChpID0gMCwgbGVuZ3RoID0gMDsgaSA8IG47IGkrKykgewotCQkgICAgdHAtPmV4dF9OYW1lc1tpXSA9IHRwLT5leHRfc3RyX3RhYmxlICsgbGVuZ3RoOwotCQkgICAgc3RyY3B5KHRwLT5leHRfTmFtZXNbaV0sIHN0cmluZ2J1ZiArIG9mZnNldHNbaV0pOwotCQkgICAgbGVuZ3RoICs9IHN0cmxlbih0cC0+ZXh0X05hbWVzW2ldKSArIDE7CisJCVRZUEVfTUFMTE9DKGNoYXIsIGxlbmd0aCwgdHAtPmV4dF9zdHJfdGFibGUpOworCQlmb3IgKGkgPSAwLCBvZmZzZXQgPSAwOyBpIDwgbjsgaSsrKSB7CisJCSAgICB0cC0+ZXh0X05hbWVzW2ldID0gdHAtPmV4dF9zdHJfdGFibGUgKyBvZmZzZXQ7CisJCSAgICBfbmNfU1RSQ1BZKHRwLT5leHRfTmFtZXNbaV0sCisJCQkgICAgICAgc3RyaW5nYnVmICsgb2Zmc2V0c1tpXSwKKwkJCSAgICAgICBsZW5ndGggLSBvZmZzZXQpOworCQkgICAgb2Zmc2V0ICs9IHN0cmxlbih0cC0+ZXh0X05hbWVzW2ldKSArIDE7CiAJCX0KIAkgICAgfQogCX0KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vYWxsb2NfdHR5cGUuYyBiL25jdXJzZXMvdGluZm8vYWxsb2NfdHR5cGUuYwppbmRleCBiMmIwNmQxLi4zNWM5MmRkIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX3R0eXBlLmMKKysrIGIvbmN1cnNlcy90aW5mby9hbGxvY190dHlwZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDEsOSArNDEsOCBAQAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKICNpbmNsdWRlIDx0aWMuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBhbGxvY190dHlwZS5jLHYgMS4xNyAyMDA4LzEwLzEyIDE2OjEyOjAwIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogYWxsb2NfdHR5cGUuYyx2IDEuMjcgMjAxMy8wNi8wOCAxNjo1NDo1MCB0b20gRXhwICQiKQogCiAjaWYgTkNVUlNFU19YTkFNRVMKIC8qCkBAIC05MSw2ICs5MCw5IEBACiAgICAgcmV0dXJuIEZBTFNFOwogfQogCisjZGVmaW5lIEVYVEVORF9OVU0obnVtLCBleHQpIFwKKwl0by0+bnVtID0gKHVuc2lnbmVkIHNob3J0KSAodG8tPm51bSArIChleHQgLSB0by0+ZXh0KSkKKwogc3RhdGljIHZvaWQKIHJlYWxpZ25fZGF0YShURVJNVFlQRSAqdG8sIGNoYXIgKipleHRfTmFtZXMsCiAJICAgICBpbnQgZXh0X0Jvb2xlYW5zLApAQCAtMTAxLDggKzEwMyw4IEBACiAgICAgaW50IGxpbWl0ID0gKHRvLT5leHRfQm9vbGVhbnMgKyB0by0+ZXh0X051bWJlcnMgKyB0by0+ZXh0X1N0cmluZ3MpOwogCiAgICAgaWYgKHRvLT5leHRfQm9vbGVhbnMgIT0gZXh0X0Jvb2xlYW5zKSB7Ci0JdG8tPm51bV9Cb29sZWFucyArPSAoZXh0X0Jvb2xlYW5zIC0gdG8tPmV4dF9Cb29sZWFucyk7Ci0JdG8tPkJvb2xlYW5zID0gdHlwZVJlYWxsb2MoTkNVUlNFU19TQk9PTCwgdG8tPm51bV9Cb29sZWFucywgdG8tPkJvb2xlYW5zKTsKKwlFWFRFTkRfTlVNKG51bV9Cb29sZWFucywgZXh0X0Jvb2xlYW5zKTsKKwlUWVBFX1JFQUxMT0MoTkNVUlNFU19TQk9PTCwgdG8tPm51bV9Cb29sZWFucywgdG8tPkJvb2xlYW5zKTsKIAlmb3IgKG4gPSB0by0+ZXh0X0Jvb2xlYW5zIC0gMSwKIAkgICAgIG0gPSBleHRfQm9vbGVhbnMgLSAxLAogCSAgICAgYmFzZSA9IHRvLT5udW1fQm9vbGVhbnMgLSAobSArIDEpOyBtID49IDA7IG0tLSkgewpAQCAtMTEyLDExICsxMTQsMTIgQEAKIAkJdG8tPkJvb2xlYW5zW2Jhc2UgKyBtXSA9IEZBTFNFOwogCSAgICB9CiAJfQotCXRvLT5leHRfQm9vbGVhbnMgPSBleHRfQm9vbGVhbnM7CisJdG8tPmV4dF9Cb29sZWFucyA9IFVTaG9ydChleHRfQm9vbGVhbnMpOwogICAgIH0KKwogICAgIGlmICh0by0+ZXh0X051bWJlcnMgIT0gZXh0X051bWJlcnMpIHsKLQl0by0+bnVtX051bWJlcnMgKz0gKGV4dF9OdW1iZXJzIC0gdG8tPmV4dF9OdW1iZXJzKTsKLQl0by0+TnVtYmVycyA9IHR5cGVSZWFsbG9jKHNob3J0LCB0by0+bnVtX051bWJlcnMsIHRvLT5OdW1iZXJzKTsKKwlFWFRFTkRfTlVNKG51bV9OdW1iZXJzLCBleHRfTnVtYmVycyk7CisJVFlQRV9SRUFMTE9DKHNob3J0LCB0by0+bnVtX051bWJlcnMsIHRvLT5OdW1iZXJzKTsKIAlmb3IgKG4gPSB0by0+ZXh0X051bWJlcnMgLSAxLAogCSAgICAgbSA9IGV4dF9OdW1iZXJzIC0gMSwKIAkgICAgIGJhc2UgPSB0by0+bnVtX051bWJlcnMgLSAobSArIDEpOyBtID49IDA7IG0tLSkgewpAQCAtMTI2LDExICsxMjksMTEgQEAKIAkJdG8tPk51bWJlcnNbYmFzZSArIG1dID0gQUJTRU5UX05VTUVSSUM7CiAJICAgIH0KIAl9Ci0JdG8tPmV4dF9OdW1iZXJzID0gZXh0X051bWJlcnM7CisJdG8tPmV4dF9OdW1iZXJzID0gVVNob3J0KGV4dF9OdW1iZXJzKTsKICAgICB9CiAgICAgaWYgKHRvLT5leHRfU3RyaW5ncyAhPSBleHRfU3RyaW5ncykgewotCXRvLT5udW1fU3RyaW5ncyArPSAoZXh0X1N0cmluZ3MgLSB0by0+ZXh0X1N0cmluZ3MpOwotCXRvLT5TdHJpbmdzID0gdHlwZVJlYWxsb2MoY2hhciAqLCB0by0+bnVtX1N0cmluZ3MsIHRvLT5TdHJpbmdzKTsKKwlFWFRFTkRfTlVNKG51bV9TdHJpbmdzLCBleHRfU3RyaW5ncyk7CisJVFlQRV9SRUFMTE9DKGNoYXIgKiwgdG8tPm51bV9TdHJpbmdzLCB0by0+U3RyaW5ncyk7CiAJZm9yIChuID0gdG8tPmV4dF9TdHJpbmdzIC0gMSwKIAkgICAgIG0gPSBleHRfU3RyaW5ncyAtIDEsCiAJICAgICBiYXNlID0gdG8tPm51bV9TdHJpbmdzIC0gKG0gKyAxKTsgbSA+PSAwOyBtLS0pIHsKQEAgLTE0MCwxNyArMTQzLDE3IEBACiAJCXRvLT5TdHJpbmdzW2Jhc2UgKyBtXSA9IEFCU0VOVF9TVFJJTkc7CiAJICAgIH0KIAl9Ci0JdG8tPmV4dF9TdHJpbmdzID0gZXh0X1N0cmluZ3M7CisJdG8tPmV4dF9TdHJpbmdzID0gVVNob3J0KGV4dF9TdHJpbmdzKTsKICAgICB9CiB9CiAKIC8qCiAgKiBSZXR1cm5zIHRoZSBmaXJzdCBpbmRleCBpbiBleHRfTmFtZXNbXSBmb3IgdGhlIGdpdmVuIHRva2VuLXR5cGUKICAqLwotc3RhdGljIGludAorc3RhdGljIHVuc2lnbmVkCiBfbmNfZmlyc3RfZXh0X25hbWUoVEVSTVRZUEUgKnRwLCBpbnQgdG9rZW5fdHlwZSkKIHsKLSAgICBpbnQgZmlyc3Q7CisgICAgdW5zaWduZWQgZmlyc3Q7CiAKICAgICBzd2l0Y2ggKHRva2VuX3R5cGUpIHsKICAgICBjYXNlIEJPT0xFQU46CkBAIC0xNjAsNyArMTYzLDcgQEAKIAlmaXJzdCA9IHRwLT5leHRfQm9vbGVhbnM7CiAJYnJlYWs7CiAgICAgY2FzZSBTVFJJTkc6Ci0JZmlyc3QgPSB0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzOworCWZpcnN0ID0gKHVuc2lnbmVkKSAodHAtPmV4dF9Cb29sZWFucyArIHRwLT5leHRfTnVtYmVycyk7CiAJYnJlYWs7CiAgICAgZGVmYXVsdDoKIAlmaXJzdCA9IDA7CkBAIC0xNzIsMTcgKzE3NSwxNyBAQAogLyoKICAqIFJldHVybnMgdGhlIGxhc3QgaW5kZXggaW4gZXh0X05hbWVzW10gZm9yIHRoZSBnaXZlbiB0b2tlbi10eXBlCiAgKi8KLXN0YXRpYyBpbnQKK3N0YXRpYyB1bnNpZ25lZAogX25jX2xhc3RfZXh0X25hbWUoVEVSTVRZUEUgKnRwLCBpbnQgdG9rZW5fdHlwZSkKIHsKLSAgICBpbnQgbGFzdDsKKyAgICB1bnNpZ25lZCBsYXN0OwogCiAgICAgc3dpdGNoICh0b2tlbl90eXBlKSB7CiAgICAgY2FzZSBCT09MRUFOOgogCWxhc3QgPSB0cC0+ZXh0X0Jvb2xlYW5zOwogCWJyZWFrOwogICAgIGNhc2UgTlVNQkVSOgotCWxhc3QgPSB0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzOworCWxhc3QgPSAodW5zaWduZWQpICh0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzKTsKIAlicmVhazsKICAgICBkZWZhdWx0OgogICAgIGNhc2UgU1RSSU5HOgpAQCAtMjA0LDcgKzIwNyw3IEBACiAKICAgICBmb3IgKGogPSBmaXJzdDsgaiA8IGxhc3Q7IGorKykgewogCWlmICghc3RyY21wKG5hbWUsIHRwLT5leHRfTmFtZXNbal0pKSB7Ci0JICAgIHJldHVybiBqOworCSAgICByZXR1cm4gKGludCkgajsKIAl9CiAgICAgfQogICAgIHJldHVybiAtMTsKQEAgLTI0NCw3ICsyNDcsNyBAQAogICAgIGludCBmaXJzdCwgbGFzdDsKIAogICAgIGlmICgoZmlyc3QgPSBfbmNfZmluZF9leHRfbmFtZSh0cCwgbmFtZSwgdG9rZW5fdHlwZSkpID49IDApIHsKLQlsYXN0ID0gTlVNX0VYVF9OQU1FUyh0cCkgLSAxOworCWxhc3QgPSAoaW50KSBOVU1fRVhUX05BTUVTKHRwKSAtIDE7CiAJZm9yIChqID0gZmlyc3Q7IGogPCBsYXN0OyBqKyspIHsKIAkgICAgdHAtPmV4dF9OYW1lc1tqXSA9IHRwLT5leHRfTmFtZXNbaiArIDFdOwogCX0KQEAgLTI1NCwyMiArMjU3LDIyIEBACiAJICAgIGxhc3QgPSB0cC0+bnVtX0Jvb2xlYW5zIC0gMTsKIAkgICAgZm9yIChqID0gZmlyc3Q7IGogPCBsYXN0OyBqKyspCiAJCXRwLT5Cb29sZWFuc1tqXSA9IHRwLT5Cb29sZWFuc1tqICsgMV07Ci0JICAgIHRwLT5leHRfQm9vbGVhbnMgLT0gMTsKLQkgICAgdHAtPm51bV9Cb29sZWFucyAtPSAxOworCSAgICB0cC0+ZXh0X0Jvb2xlYW5zLS07CisJICAgIHRwLT5udW1fQm9vbGVhbnMtLTsKIAkgICAgYnJlYWs7CiAJY2FzZSBOVU1CRVI6CiAJICAgIGxhc3QgPSB0cC0+bnVtX051bWJlcnMgLSAxOwogCSAgICBmb3IgKGogPSBmaXJzdDsgaiA8IGxhc3Q7IGorKykKIAkJdHAtPk51bWJlcnNbal0gPSB0cC0+TnVtYmVyc1tqICsgMV07Ci0JICAgIHRwLT5leHRfTnVtYmVycyAtPSAxOwotCSAgICB0cC0+bnVtX051bWJlcnMgLT0gMTsKKwkgICAgdHAtPmV4dF9OdW1iZXJzLS07CisJICAgIHRwLT5udW1fTnVtYmVycy0tOwogCSAgICBicmVhazsKIAljYXNlIFNUUklORzoKIAkgICAgbGFzdCA9IHRwLT5udW1fU3RyaW5ncyAtIDE7CiAJICAgIGZvciAoaiA9IGZpcnN0OyBqIDwgbGFzdDsgaisrKQogCQl0cC0+U3RyaW5nc1tqXSA9IHRwLT5TdHJpbmdzW2ogKyAxXTsKLQkgICAgdHAtPmV4dF9TdHJpbmdzIC09IDE7Ci0JICAgIHRwLT5udW1fU3RyaW5ncyAtPSAxOworCSAgICB0cC0+ZXh0X1N0cmluZ3MtLTsKKwkgICAgdHAtPm51bV9TdHJpbmdzLS07CiAJICAgIGJyZWFrOwogCX0KIAlyZXR1cm4gVFJVRTsKQEAgLTI5OSwzNiArMzAyLDM2IEBACiAJfQogICAgIH0KIAotICAgIHRwLT5leHRfTmFtZXMgPSB0eXBlUmVhbGxvYyhjaGFyICosIHRvdGFsLCB0cC0+ZXh0X05hbWVzKTsKKyAgICBUWVBFX1JFQUxMT0MoY2hhciAqLCB0b3RhbCwgdHAtPmV4dF9OYW1lcyk7CiAgICAgZm9yIChrID0gdG90YWwgLSAxOyBrID4gajsgay0tKQogCXRwLT5leHRfTmFtZXNba10gPSB0cC0+ZXh0X05hbWVzW2sgLSAxXTsKICAgICB0cC0+ZXh0X05hbWVzW2pdID0gbmFtZTsKLSAgICBqID0gX25jX2V4dF9kYXRhX2luZGV4KHRwLCAoaW50KSBqLCB0b2tlbl90eXBlKTsKKyAgICBqID0gKHVuc2lnbmVkKSBfbmNfZXh0X2RhdGFfaW5kZXgodHAsIChpbnQpIGosIHRva2VuX3R5cGUpOwogCiAgICAgc3dpdGNoICh0b2tlbl90eXBlKSB7CiAgICAgY2FzZSBCT09MRUFOOgotCXRwLT5leHRfQm9vbGVhbnMgKz0gMTsKLQl0cC0+bnVtX0Jvb2xlYW5zICs9IDE7Ci0JdHAtPkJvb2xlYW5zID0gdHlwZVJlYWxsb2MoTkNVUlNFU19TQk9PTCwgdHAtPm51bV9Cb29sZWFucywgdHAtPkJvb2xlYW5zKTsKLQlmb3IgKGsgPSB0cC0+bnVtX0Jvb2xlYW5zIC0gMTsgayA+IGo7IGstLSkKKwl0cC0+ZXh0X0Jvb2xlYW5zKys7CisJdHAtPm51bV9Cb29sZWFucysrOworCVRZUEVfUkVBTExPQyhOQ1VSU0VTX1NCT09MLCB0cC0+bnVtX0Jvb2xlYW5zLCB0cC0+Qm9vbGVhbnMpOworCWZvciAoayA9ICh1bnNpZ25lZCkgKHRwLT5udW1fQm9vbGVhbnMgLSAxKTsgayA+IGo7IGstLSkKIAkgICAgdHAtPkJvb2xlYW5zW2tdID0gdHAtPkJvb2xlYW5zW2sgLSAxXTsKIAlicmVhazsKICAgICBjYXNlIE5VTUJFUjoKLQl0cC0+ZXh0X051bWJlcnMgKz0gMTsKLQl0cC0+bnVtX051bWJlcnMgKz0gMTsKLQl0cC0+TnVtYmVycyA9IHR5cGVSZWFsbG9jKHNob3J0LCB0cC0+bnVtX051bWJlcnMsIHRwLT5OdW1iZXJzKTsKLQlmb3IgKGsgPSB0cC0+bnVtX051bWJlcnMgLSAxOyBrID4gajsgay0tKQorCXRwLT5leHRfTnVtYmVycysrOworCXRwLT5udW1fTnVtYmVycysrOworCVRZUEVfUkVBTExPQyhzaG9ydCwgdHAtPm51bV9OdW1iZXJzLCB0cC0+TnVtYmVycyk7CisJZm9yIChrID0gKHVuc2lnbmVkKSAodHAtPm51bV9OdW1iZXJzIC0gMSk7IGsgPiBqOyBrLS0pCiAJICAgIHRwLT5OdW1iZXJzW2tdID0gdHAtPk51bWJlcnNbayAtIDFdOwogCWJyZWFrOwogICAgIGNhc2UgU1RSSU5HOgotCXRwLT5leHRfU3RyaW5ncyArPSAxOwotCXRwLT5udW1fU3RyaW5ncyArPSAxOwotCXRwLT5TdHJpbmdzID0gdHlwZVJlYWxsb2MoY2hhciAqLCB0cC0+bnVtX1N0cmluZ3MsIHRwLT5TdHJpbmdzKTsKLQlmb3IgKGsgPSB0cC0+bnVtX1N0cmluZ3MgLSAxOyBrID4gajsgay0tKQorCXRwLT5leHRfU3RyaW5ncysrOworCXRwLT5udW1fU3RyaW5ncysrOworCVRZUEVfUkVBTExPQyhjaGFyICosIHRwLT5udW1fU3RyaW5ncywgdHAtPlN0cmluZ3MpOworCWZvciAoayA9ICh1bnNpZ25lZCkgKHRwLT5udW1fU3RyaW5ncyAtIDEpOyBrID4gajsgay0tKQogCSAgICB0cC0+U3RyaW5nc1trXSA9IHRwLT5TdHJpbmdzW2sgLSAxXTsKIAlicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIGo7CisgICAgcmV0dXJuIChpbnQpIGo7CiB9CiAKIC8qCkBAIC0zNDUsMTAgKzM0OCwxMCBAQAogCiAgICAgZm9yIChqID0gZmlyc3Q7IGogPCBsYXN0OykgewogCWNoYXIgKm5hbWUgPSB0by0+ZXh0X05hbWVzW2pdOwotCXVuc2lnbmVkIGpfc3RyID0gdG8tPm51bV9TdHJpbmdzIC0gZmlyc3QgLSB0by0+ZXh0X1N0cmluZ3M7CisJaW50IGpfc3RyID0gdG8tPm51bV9TdHJpbmdzIC0gZmlyc3QgLSB0by0+ZXh0X1N0cmluZ3M7CiAKIAlpZiAodG8tPlN0cmluZ3NbaiArIGpfc3RyXSA9PSBDQU5DRUxMRURfU1RSSU5HKSB7Ci0JICAgIGlmICgoayA9IF9uY19maW5kX2V4dF9uYW1lKGZyb20sIHRvLT5leHRfTmFtZXNbal0sIEJPT0xFQU4pKSA+PSAwKSB7CisJICAgIGlmIChfbmNfZmluZF9leHRfbmFtZShmcm9tLCB0by0+ZXh0X05hbWVzW2pdLCBCT09MRUFOKSA+PSAwKSB7CiAJCWlmIChfbmNfZGVsX2V4dF9uYW1lKHRvLCBuYW1lLCBTVFJJTkcpCiAJCSAgICB8fCBfbmNfZGVsX2V4dF9uYW1lKHRvLCBuYW1lLCBOVU1CRVIpKSB7CiAJCSAgICBrID0gX25jX2luc19leHRfbmFtZSh0bywgbmFtZSwgQk9PTEVBTik7CkBAIC0zNTYsOCArMzU5LDcgQEAKIAkJfSBlbHNlIHsKIAkJICAgIGorKzsKIAkJfQotCSAgICB9IGVsc2UgaWYgKChrID0gX25jX2ZpbmRfZXh0X25hbWUoZnJvbSwgdG8tPmV4dF9OYW1lc1tqXSwKLQkJCQkJICAgICAgTlVNQkVSKSkgPj0gMCkgeworCSAgICB9IGVsc2UgaWYgKF9uY19maW5kX2V4dF9uYW1lKGZyb20sIHRvLT5leHRfTmFtZXNbal0sIE5VTUJFUikgPj0gMCkgewogCQlpZiAoX25jX2RlbF9leHRfbmFtZSh0bywgbmFtZSwgU1RSSU5HKQogCQkgICAgfHwgX25jX2RlbF9leHRfbmFtZSh0bywgbmFtZSwgQk9PTEVBTikpIHsKIAkJICAgIGsgPSBfbmNfaW5zX2V4dF9uYW1lKHRvLCBuYW1lLCBOVU1CRVIpOwpAQCAtMzY1LDggKzM2Nyw3IEBACiAJCX0gZWxzZSB7CiAJCSAgICBqKys7CiAJCX0KLQkgICAgfSBlbHNlIGlmICgoayA9IF9uY19maW5kX2V4dF9uYW1lKGZyb20sIHRvLT5leHRfTmFtZXNbal0sCi0JCQkJCSAgICAgIFNUUklORykpID49IDApIHsKKwkgICAgfSBlbHNlIGlmIChfbmNfZmluZF9leHRfbmFtZShmcm9tLCB0by0+ZXh0X05hbWVzW2pdLCBTVFJJTkcpID49IDApIHsKIAkJaWYgKF9uY19kZWxfZXh0X25hbWUodG8sIG5hbWUsIE5VTUJFUikKIAkJICAgIHx8IF9uY19kZWxfZXh0X25hbWUodG8sIG5hbWUsIEJPT0xFQU4pKSB7CiAJCSAgICBrID0gX25jX2luc19leHRfbmFtZSh0bywgbmFtZSwgU1RSSU5HKTsKQEAgLTM4Niw4ICszODcsOCBAQAogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY19hbGlnbl90ZXJtdHlwZShURVJNVFlQRSAqdG8sIFRFUk1UWVBFICpmcm9tKQogewotICAgIGludCBuYSA9IE5VTV9FWFRfTkFNRVModG8pOwotICAgIGludCBuYiA9IE5VTV9FWFRfTkFNRVMoZnJvbSk7CisgICAgaW50IG5hID0gKGludCkgTlVNX0VYVF9OQU1FUyh0byk7CisgICAgaW50IG5iID0gKGludCkgTlVNX0VYVF9OQU1FUyhmcm9tKTsKICAgICBpbnQgbjsKICAgICBib29sIHNhbWU7CiAgICAgY2hhciAqKmV4dF9OYW1lczsKQEAgLTQxNyw3ICs0MTgsNyBAQAogCSAqIGludG8gaXQsIHVwZGF0aW5nIHRvJ3MgY291bnRzIGZvciBib29sZWFucywgZXRjLiAgRm9ydHVuYXRlbHkgd2UgZG8KIAkgKiB0aGlzIG9ubHkgZm9yIHRoZSB0ZXJtaW5mbyBjb21waWxlciAodGljKSBhbmQgY29tcGFyZXIgKGluZm9jbXApLgogCSAqLwotCWV4dF9OYW1lcyA9IHR5cGVNYWxsb2MoY2hhciAqLCBuYSArIG5iKTsKKwlUWVBFX01BTExPQyhjaGFyICosIChzaXplX3QpKG5hICsgbmIpLCBleHRfTmFtZXMpOwogCiAJaWYgKHRvLT5leHRfU3RyaW5ncyAmJiAoZnJvbS0+ZXh0X0Jvb2xlYW5zICsgZnJvbS0+ZXh0X051bWJlcnMpKQogCSAgICBhZGp1c3RfY2FuY2Vscyh0bywgZnJvbSk7CkBAIC00NjEsOCArNDYyLDggQEAKIAlpZiAobmIgIT0gKGV4dF9Cb29sZWFucyArIGV4dF9OdW1iZXJzICsgZXh0X1N0cmluZ3MpKSB7CiAJICAgIG5iID0gKGV4dF9Cb29sZWFucyArIGV4dF9OdW1iZXJzICsgZXh0X1N0cmluZ3MpOwogCSAgICByZWFsaWduX2RhdGEoZnJvbSwgZXh0X05hbWVzLCBleHRfQm9vbGVhbnMsIGV4dF9OdW1iZXJzLCBleHRfU3RyaW5ncyk7Ci0JICAgIGZyb20tPmV4dF9OYW1lcyA9IHR5cGVSZWFsbG9jKGNoYXIgKiwgbmIsIGZyb20tPmV4dF9OYW1lcyk7Ci0JICAgIG1lbWNweShmcm9tLT5leHRfTmFtZXMsIGV4dF9OYW1lcywgc2l6ZW9mKGNoYXIgKikgKiBuYik7CisJICAgIFRZUEVfUkVBTExPQyhjaGFyICosIChzaXplX3QpIG5iLCBmcm9tLT5leHRfTmFtZXMpOworCSAgICBtZW1jcHkoZnJvbS0+ZXh0X05hbWVzLCBleHRfTmFtZXMsIHNpemVvZihjaGFyICopICogKHNpemVfdCkgbmIpOwogCSAgICBERUJVRygyLCAoInJlYWxpZ25lZCAlZCBleHRlbmRlZCBuYW1lcyBmb3IgJyVzJyAoZnJvbSkiLAogCQkgICAgICBOVU1fRVhUX05BTUVTKGZyb20pLCBmcm9tLT50ZXJtX25hbWVzKSk7CiAJfQpAQCAtNDczLDIyICs0NzQsMjcgQEAKICNlbmRpZgogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX2NvcHlfdGVybXR5cGUoVEVSTVRZUEUgKmRzdCwgVEVSTVRZUEUgKnNyYykKK19uY19jb3B5X3Rlcm10eXBlKFRFUk1UWVBFICpkc3QsIGNvbnN0IFRFUk1UWVBFICpzcmMpCiB7CisjaWYgTkNVUlNFU19YTkFNRVMKICAgICB1bnNpZ25lZCBpOworI2VuZGlmCiAKICAgICAqZHN0ID0gKnNyYzsJCS8qIC4uLnRvIGNvcHkgdGhlIHNpemVzIGFuZCBzdHJpbmctdGFibGVzICovCi0gICAgZHN0LT5Cb29sZWFucyA9IHR5cGVNYWxsb2MoTkNVUlNFU19TQk9PTCwgTlVNX0JPT0xFQU5TKGRzdCkpOwotICAgIGRzdC0+TnVtYmVycyA9IHR5cGVNYWxsb2Moc2hvcnQsIE5VTV9OVU1CRVJTKGRzdCkpOwotICAgIGRzdC0+U3RyaW5ncyA9IHR5cGVNYWxsb2MoY2hhciAqLCBOVU1fU1RSSU5HUyhkc3QpKTsKIAotICAgIC8qIEZJWE1FOiB1c2UgbWVtY3B5IGZvciB0aGVzZSBhbmQgc2ltaWxhciBsb29wcyAqLwotICAgIGZvcl9lYWNoX2Jvb2xlYW4oaSwgZHN0KQotCWRzdC0+Qm9vbGVhbnNbaV0gPSBzcmMtPkJvb2xlYW5zW2ldOwotICAgIGZvcl9lYWNoX251bWJlcihpLCBkc3QpCi0JZHN0LT5OdW1iZXJzW2ldID0gc3JjLT5OdW1iZXJzW2ldOwotICAgIGZvcl9lYWNoX3N0cmluZyhpLCBkc3QpCi0JZHN0LT5TdHJpbmdzW2ldID0gc3JjLT5TdHJpbmdzW2ldOworICAgIFRZUEVfTUFMTE9DKE5DVVJTRVNfU0JPT0wsIE5VTV9CT09MRUFOUyhkc3QpLCBkc3QtPkJvb2xlYW5zKTsKKyAgICBUWVBFX01BTExPQyhzaG9ydCwgTlVNX05VTUJFUlMoZHN0KSwgZHN0LT5OdW1iZXJzKTsKKyAgICBUWVBFX01BTExPQyhjaGFyICosIE5VTV9TVFJJTkdTKGRzdCksIGRzdC0+U3RyaW5ncyk7CisKKyAgICBtZW1jcHkoZHN0LT5Cb29sZWFucywKKwkgICBzcmMtPkJvb2xlYW5zLAorCSAgIE5VTV9CT09MRUFOUyhkc3QpICogc2l6ZW9mKGRzdC0+Qm9vbGVhbnNbMF0pKTsKKyAgICBtZW1jcHkoZHN0LT5OdW1iZXJzLAorCSAgIHNyYy0+TnVtYmVycywKKwkgICBOVU1fTlVNQkVSUyhkc3QpICogc2l6ZW9mKGRzdC0+TnVtYmVyc1swXSkpOworICAgIG1lbWNweShkc3QtPlN0cmluZ3MsCisJICAgc3JjLT5TdHJpbmdzLAorCSAgIE5VTV9TVFJJTkdTKGRzdCkgKiBzaXplb2YoZHN0LT5TdHJpbmdzWzBdKSk7CiAKICAgICAvKiBGSVhNRTogd2UgcHJvYmFibHkgc2hvdWxkIGFsc28gY29weSBzdHJfdGFibGUgYW5kIGV4dF9zdHJfdGFibGUsCiAgICAgICogYnV0IHRpYyBhbmQgaW5mb2NtcCBhcmUgbm90IHdyaXR0ZW4gdG8gZXhwbG9pdCB0aGF0ICh5ZXQpLgpAQCAtNDk2LDExICs1MDIsMTAgQEAKIAogI2lmIE5DVVJTRVNfWE5BTUVTCiAgICAgaWYgKChpID0gTlVNX0VYVF9OQU1FUyhzcmMpKSAhPSAwKSB7Ci0JZHN0LT5leHRfTmFtZXMgPSB0eXBlTWFsbG9jKGNoYXIgKiwgaSk7CisJVFlQRV9NQUxMT0MoY2hhciAqLCBpLCBkc3QtPmV4dF9OYW1lcyk7CiAJbWVtY3B5KGRzdC0+ZXh0X05hbWVzLCBzcmMtPmV4dF9OYW1lcywgaSAqIHNpemVvZihjaGFyICopKTsKICAgICB9IGVsc2UgewogCWRzdC0+ZXh0X05hbWVzID0gMDsKICAgICB9CiAjZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jYXB0b2luZm8uYyBiL25jdXJzZXMvdGluZm8vY2FwdG9pbmZvLmMKaW5kZXggOTMzMDBjMS4uZTAyZTYyMiAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9jYXB0b2luZm8uYworKysgYi9uY3Vyc2VzL3RpbmZvL2NhcHRvaW5mby5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtOTMsNyArOTMsNyBAQAogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8dGljLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBjYXB0b2luZm8uYyx2IDEuNTIgMjAwOC8wOC8xNiAxOToyNDo1MSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGNhcHRvaW5mby5jLHYgMS43NyAyMDEyLzEyLzMwIDAwOjUwOjQwIHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgTUFYX1BVU0hFRAkxNgkvKiBtYXggIyBhcmdzIHdlIGNhbiBwdXNoIG9udG8gdGhlIHN0YWNrICovCiAKQEAgLTExNCw5ICsxMTQsNyBAQAogLyogaW5pdGlhbGl6ZSAnbXlfc3RyaW5nJywgJ215X2xlbmd0aCcgKi8KIHsKICAgICBpZiAobXlfc3RyaW5nID09IDApCi0JbXlfc3RyaW5nID0gdHlwZU1hbGxvYyhjaGFyLCBteV9sZW5ndGggPSAyNTYpOwotICAgIGlmIChteV9zdHJpbmcgPT0gMCkKLQlfbmNfZXJyX2Fib3J0KE1TR19OT19NRU1PUlkpOworCVRZUEVfTUFMTE9DKGNoYXIsIG15X2xlbmd0aCA9IDI1NiwgbXlfc3RyaW5nKTsKIAogICAgICpteV9zdHJpbmcgPSAnXDAnOwogICAgIHJldHVybiBteV9zdHJpbmc7CkBAIC0xMjUsMTUgKzEyMywxNSBAQAogc3RhdGljIGNoYXIgKgogc2F2ZV9zdHJpbmcoY2hhciAqZCwgY29uc3QgY2hhciAqY29uc3QgcykKIHsKLSAgICBzaXplX3QgaGF2ZSA9IChkIC0gbXlfc3RyaW5nKTsKKyAgICBzaXplX3QgaGF2ZSA9IChzaXplX3QpIChkIC0gbXlfc3RyaW5nKTsKICAgICBzaXplX3QgbmVlZCA9IGhhdmUgKyBzdHJsZW4ocykgKyAyOwogICAgIGlmIChuZWVkID4gbXlfbGVuZ3RoKSB7Ci0JbXlfc3RyaW5nID0gKGNoYXIgKikgcmVhbGxvYyhteV9zdHJpbmcsIG15X2xlbmd0aCA9IChuZWVkICsgbmVlZCkpOworCW15X3N0cmluZyA9IChjaGFyICopIF9uY19kb2FsbG9jKG15X3N0cmluZywgbXlfbGVuZ3RoID0gKG5lZWQgKyBuZWVkKSk7CiAJaWYgKG15X3N0cmluZyA9PSAwKQogCSAgICBfbmNfZXJyX2Fib3J0KE1TR19OT19NRU1PUlkpOwogCWQgPSBteV9zdHJpbmcgKyBoYXZlOwogICAgIH0KLSAgICAodm9pZCkgc3RyY3B5KGQsIHMpOworICAgIF9uY19TVFJDUFkoZCwgcywgbXlfbGVuZ3RoIC0gaGF2ZSk7CiAgICAgcmV0dXJuIGQgKyBzdHJsZW4oZCk7CiB9CiAKQEAgLTE5Niw3ICsxOTQsNyBAQAogCWNhc2UgJzMnOgogCSAgICBsZW4gPSAxOwogCSAgICB3aGlsZSAoaXNkaWdpdChVQ2hhcigqc3ApKSkgewotCQljID0gOCAqIGMgKyAoKnNwKysgLSAnMCcpOworCQljID0gKHVuc2lnbmVkIGNoYXIpICg4ICogYyArICgqc3ArKyAtICcwJykpOwogCQlsZW4rKzsKIAkgICAgfQogCSAgICBicmVhazsKQEAgLTIwNyw3ICsyMDUsNyBAQAogCX0KIAlicmVhazsKICAgICBjYXNlICdeJzoKLQljID0gKCorK3NwICYgMHgxZik7CisJYyA9ICh1bnNpZ25lZCBjaGFyKSAoKisrc3AgJiAweDFmKTsKIAlsZW4gPSAyOwogCWJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0yNDAsNiArMjM4LDEyIEBACiAJZWxzZSBpZiAocGFybSA9PSAyKQogCSAgICBwYXJtID0gMTsKICAgICB9CisKKyAgICB3aGlsZSAobi0tKSB7CisJZHAgPSBzYXZlX3N0cmluZyhkcCwgIiVwIik7CisJZHAgPSBzYXZlX2NoYXIoZHAsICcwJyArIHBhcm0pOworICAgIH0KKwogICAgIGlmIChvbnN0YWNrID09IHBhcm0pIHsKIAlpZiAobiA+IDEpIHsKIAkgICAgX25jX3dhcm5pbmcoInN0cmluZyBtYXkgbm90IGJlIG9wdGltYWwiKTsKQEAgLTI1NSwxMSArMjU5LDYgQEAKIAogICAgIG9uc3RhY2sgPSBwYXJtOwogCi0gICAgd2hpbGUgKG4tLSkgewotCWRwID0gc2F2ZV9zdHJpbmcoZHAsICIlcCIpOwotCWRwID0gc2F2ZV9jaGFyKGRwLCAnMCcgKyBwYXJtKTsKLSAgICB9Ci0KICAgICBpZiAoc2Vlbm4gJiYgcGFybSA8IDMpIHsKIAlkcCA9IHNhdmVfc3RyaW5nKGRwLCAiJXs5Nn0lXiIpOwogICAgIH0KQEAgLTQ2OSw3MyArNDY4LDkgQEAKIAkJYnJlYWs7CiAJICAgIH0KIAkgICAgYnJlYWs7Ci0jaWZkZWYgUkVWSVNJQklMSVpFCi0JY2FzZSAnXFwnOgotCSAgICBkcCA9IHNhdmVfY2hhcihkcCwgKnMrKyk7Ci0JICAgIGRwID0gc2F2ZV9jaGFyKGRwLCAqcysrKTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXG4nOgotCSAgICBkcCA9IHNhdmVfc3RyaW5nKGRwLCAiXFxuIik7Ci0JICAgIHMrKzsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXHQnOgotCSAgICBkcCA9IHNhdmVfc3RyaW5nKGRwLCAiXFx0Iik7Ci0JICAgIHMrKzsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXHInOgotCSAgICBkcCA9IHNhdmVfc3RyaW5nKGRwLCAiXFxyIik7Ci0JICAgIHMrKzsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXDIwMCc6Ci0JICAgIGRwID0gc2F2ZV9zdHJpbmcoZHAsICJcXDAiKTsKLQkgICAgcysrOwotCSAgICBicmVhazsKLQljYXNlICdcZic6Ci0JICAgIGRwID0gc2F2ZV9zdHJpbmcoZHAsICJcXGYiKTsKLQkgICAgcysrOwotCSAgICBicmVhazsKLQljYXNlICdcYic6Ci0JICAgIGRwID0gc2F2ZV9zdHJpbmcoZHAsICJcXGIiKTsKLQkgICAgcysrOwotCSAgICBicmVhazsKLQljYXNlICcgJzoKLQkgICAgZHAgPSBzYXZlX3N0cmluZyhkcCwgIlxccyIpOwotCSAgICBzKys7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ14nOgotCSAgICBkcCA9IHNhdmVfc3RyaW5nKGRwLCAiXFxeIik7Ci0JICAgIHMrKzsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnOic6Ci0JICAgIGRwID0gc2F2ZV9zdHJpbmcoZHAsICJcXDoiKTsKLQkgICAgcysrOwotCSAgICBicmVhazsKLQljYXNlICcsJzoKLQkgICAgZHAgPSBzYXZlX3N0cmluZyhkcCwgIlxcLCIpOwotCSAgICBzKys7Ci0JICAgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICAgIGlmICgqcyA9PSAnXDAzMycpIHsKLQkJZHAgPSBzYXZlX3N0cmluZyhkcCwgIlxcRSIpOwotCQlzKys7Ci0JICAgIH0gZWxzZSBpZiAoKnMgPiAwICYmICpzIDwgMzIpIHsKLQkJZHAgPSBzYXZlX2NoYXIoZHAsICdeJyk7Ci0JCWRwID0gc2F2ZV9jaGFyKGRwLCAqcyArICdAJyk7Ci0JCXMrKzsKLQkgICAgfSBlbHNlIGlmICgqcyA8PSAwIHx8ICpzID49IDEyNykgewotCQlkcCA9IHNhdmVfY2hhcihkcCwgJ1xcJyk7Ci0JCWRwID0gc2F2ZV9jaGFyKGRwLCAoKCpzICYgMDMwMCkgPj4gNikgKyAnMCcpOwotCQlkcCA9IHNhdmVfY2hhcihkcCwgKCgqcyAmIDAwNzApID4+IDMpICsgJzAnKTsKLQkJZHAgPSBzYXZlX2NoYXIoZHAsICgqcyAmIDAwMDcpICsgJzAnKTsKLQkJcysrOwotCSAgICB9IGVsc2UKLQkJZHAgPSBzYXZlX2NoYXIoZHAsICpzKyspOwotCSAgICBicmVhazsKLSNlbHNlCiAJZGVmYXVsdDoKIAkgICAgZHAgPSBzYXZlX2NoYXIoZHAsICpzKyspOwogCSAgICBicmVhazsKLSNlbmRpZgogCX0KICAgICB9CiAKQEAgLTU3OCw3ICs1MTMsNyBAQAogCXsKIAkgICAgY2hhciBidWZmZXJbODBdOwogCSAgICBpbnQgdHN0OwotCSAgICBzcHJpbnRmKGJ1ZmZlciwgZm10LCBjaDEsIGNoMik7CisJICAgIF9uY19TUFJJTlRGKGJ1ZmZlciwgX25jX1NMSU1JVChzaXplb2YoYnVmZmVyKSkgZm10LCBjaDEsIGNoMik7CiAJICAgIHRzdCA9IHN0cmxlbihidWZmZXIpIC0gMTsKIAkgICAgYXNzZXJ0KGxlbiA9PSB0c3QpOwogCX0KQEAgLTU5NywxMCArNTMyLDEzIEBACiAJICAgIGJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICdcXCcpOwogCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsIGMxKTsKICAgICB9IGVsc2UgewotCWlmIChjMSA9PSAoYzEgJiAweDFmKSkJLyogaXNjbnRybCgpIHJldHVybnMgVCBvbiAyNTUgKi8KLQkgICAgKHZvaWQpIHN0cmNweSh0ZW1wLCB1bmN0cmwoKGNodHlwZSkgYzEpKTsKLQllbHNlCi0JICAgICh2b2lkKSBzcHJpbnRmKHRlbXAsICJcXCUwM28iLCBjMSk7CisJaWYgKGMxID09IChjMSAmIDB4MWYpKSB7CS8qIGlzY250cmwoKSByZXR1cm5zIFQgb24gMjU1ICovCisJICAgIF9uY19TUFJJTlRGKHRlbXAsIF9uY19TTElNSVQoc2l6ZW9mKHRlbXApKQorCQkJIiUuMjBzIiwgdW5jdHJsKChjaHR5cGUpIGMxKSk7CisJfSBlbHNlIHsKKwkgICAgX25jX1NQUklOVEYodGVtcCwgX25jX1NMSU1JVChzaXplb2YodGVtcCkpCisJCQkiXFwlMDNvIiwgYzEpOworCX0KIAlidWZwdHIgPSBzYXZlX3N0cmluZyhidWZwdHIsIHRlbXApOwogICAgIH0KICAgICByZXR1cm4gYnVmcHRyOwpAQCAtNjQzLDE1ICs1ODEsMTggQEAKICAgICBpbnQgc2Vlbm9uZSA9IDAsIHNlZW50d28gPSAwLCBzYXdfbSA9IDAsIHNhd19uID0gMDsKICAgICBjb25zdCBjaGFyICpwYWRkaW5nOwogICAgIGNvbnN0IGNoYXIgKnRyaW1tZWQgPSAwOworICAgIGludCBpbjAsIGluMSwgaW4yOwogICAgIGNoYXIgY2gxID0gMCwgY2gyID0gMDsKICAgICBjaGFyICpidWZwdHIgPSBpbml0X3N0cmluZygpOworICAgIGNoYXIgb2N0YWxbNF07CiAgICAgaW50IGxlbjsKICAgICBib29sIHN5bnRheF9lcnJvciA9IEZBTFNFOwogCiAgICAgLyogd2UgbWF5IGhhdmUgdG8gbW92ZSBzb21lIHRyYWlsaW5nIG1hbmRhdG9yeSBwYWRkaW5nIHVwIGZyb250ICovCiAgICAgcGFkZGluZyA9IHN0ciArIHN0cmxlbihzdHIpIC0gMTsKLSAgICBpZiAocGFkZGluZyA+IHN0ciAmJiAqcGFkZGluZyA9PSAnPicgJiYgKi0tcGFkZGluZyA9PSAnLycpIHsKLQktLXBhZGRpbmc7CisgICAgaWYgKHBhZGRpbmcgPiBzdHIgJiYgKnBhZGRpbmcgPT0gJz4nKSB7CisJaWYgKCotLXBhZGRpbmcgPT0gJy8nKQorCSAgICAtLXBhZGRpbmc7CiAJd2hpbGUgKGlzZGlnaXQoVUNoYXIoKnBhZGRpbmcpKSB8fCAqcGFkZGluZyA9PSAnLicgfHwgKnBhZGRpbmcgPT0gJyonKQogCSAgICBwYWRkaW5nLS07CiAJaWYgKHBhZGRpbmcgPiBzdHIgJiYgKnBhZGRpbmcgPT0gJzwnICYmICotLXBhZGRpbmcgPT0gJyQnKQpAQCAtNjYyLDEyICs2MDMsOTUgQEAKIAkgICAgYnVmcHRyID0gc2F2ZV9jaGFyKGJ1ZnB0ciwgKnBhZGRpbmcrKyk7CiAgICAgfQogCi0gICAgZm9yICg7ICpzdHIgJiYgc3RyICE9IHRyaW1tZWQ7IHN0cisrKSB7CisgICAgZm9yICg7ICpzdHIgJiYgKCh0cmltbWVkID09IDApIHx8IChzdHIgPCB0cmltbWVkKSk7IHN0cisrKSB7CiAJaW50IGMxLCBjMjsKIAljaGFyICpjcCA9IDA7CiAKLQlpZiAoc3RyWzBdID09ICdcXCcgJiYgKHN0clsxXSA9PSAnXicgfHwgc3RyWzFdID09ICcsJykpIHsKLQkgICAgYnVmcHRyID0gc2F2ZV9jaGFyKGJ1ZnB0ciwgKisrc3RyKTsKKwlpZiAoc3RyWzBdID09ICdeJykgeworCSAgICBpZiAoc3RyWzFdID09ICdcMCcgfHwgKHN0ciArIDEpID09IHRyaW1tZWQpIHsKKwkJYnVmcHRyID0gc2F2ZV9zdHJpbmcoYnVmcHRyLCAiXFwxMzYiKTsKKwkJKytzdHI7CisJICAgIH0gZWxzZSB7CisJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICpzdHIrKyk7CisJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICpzdHIpOworCSAgICB9CisJfSBlbHNlIGlmIChzdHJbMF0gPT0gJ1xcJykgeworCSAgICBpZiAoc3RyWzFdID09ICdcMCcgfHwgKHN0ciArIDEpID09IHRyaW1tZWQpIHsKKwkJYnVmcHRyID0gc2F2ZV9zdHJpbmcoYnVmcHRyLCAiXFwxMzQiKTsKKwkJKytzdHI7CisJICAgIH0gZWxzZSBpZiAoc3RyWzFdID09ICdeJykgeworCQlidWZwdHIgPSBzYXZlX3N0cmluZyhidWZwdHIsICJcXDEzNiIpOworCQkrK3N0cjsKKwkgICAgfSBlbHNlIGlmIChzdHJbMV0gPT0gJywnKSB7CisJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICorK3N0cik7CisJICAgIH0gZWxzZSB7CisJCWludCB4eDEsIHh4MjsKKworCQlidWZwdHIgPSBzYXZlX2NoYXIoYnVmcHRyLCAqc3RyKyspOworCQl4eDEgPSAqc3RyOworCQlpZiAoX25jX3N0cmljdF9ic2QpIHsKKwkJICAgIGlmIChpc2RpZ2l0KFVDaGFyKHh4MSkpKSB7CisJCQlpbnQgcGFkID0gMDsKKworCQkJaWYgKCFpc2RpZ2l0KFVDaGFyKHN0clsxXSkpKQorCQkJICAgIHBhZCA9IDI7CisJCQllbHNlIGlmIChzdHJbMV0gJiYgIWlzZGlnaXQoVUNoYXIoc3RyWzJdKSkpCisJCQkgICAgcGFkID0gMTsKKworCQkJLyoKKwkJCSAqIFRlc3QgZm9yICJcMCIsICJcMDAiIG9yICJcMDAwIiBhbmQgdHJhbnNmb3JtIHRob3NlCisJCQkgKiBpbnRvICJcMjAwIi4KKwkJCSAqLworCQkJaWYgKHh4MSA9PSAnMCcKKwkJCSAgICAmJiAoKHBhZCA9PSAyKSB8fCAoc3RyWzFdID09ICcwJykpCisJCQkgICAgJiYgKChwYWQgPj0gMSkgfHwgKHN0clsyXSA9PSAnMCcpKSkgeworCQkJICAgIHh4MiA9ICcyJzsKKwkJCX0gZWxzZSB7CisJCQkgICAgeHgyID0gJzAnOworCQkJICAgIHBhZCA9IDA7CS8qIEZJWE1FIC0gb3B0aW9uYWxseSBwYWQgdG8gMyBkaWdpdHMgKi8KKwkJCX0KKwkJCXdoaWxlIChwYWQtLSA+IDApIHsKKwkJCSAgICBidWZwdHIgPSBzYXZlX2NoYXIoYnVmcHRyLCB4eDIpOworCQkJICAgIHh4MiA9ICcwJzsKKwkJCX0KKwkJICAgIH0gZWxzZSBpZiAoc3RyY2hyKCJFXFxucnRiZiIsIHh4MSkgPT0gMCkgeworCQkJc3dpdGNoICh4eDEpIHsKKwkJCWNhc2UgJ2UnOgorCQkJICAgIHh4MSA9ICdFJzsKKwkJCSAgICBicmVhazsKKwkJCWNhc2UgJ2wnOgorCQkJICAgIHh4MSA9ICduJzsKKwkJCSAgICBicmVhazsKKwkJCWNhc2UgJ3MnOgorCQkJICAgIGJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICcwJyk7CisJCQkgICAgYnVmcHRyID0gc2F2ZV9jaGFyKGJ1ZnB0ciwgJzQnKTsKKwkJCSAgICB4eDEgPSAnMCc7CisJCQkgICAgYnJlYWs7CisJCQljYXNlICc6JzoKKwkJCSAgICAvKgorCQkJICAgICAqIE5vdGU6IHRlcm1jYXAgZG9jdW1lbnRhdGlvbiBjbGFpbXMgdGhhdCAiOiIKKwkJCSAgICAgKiBtdXN0IGJlIGVzY2FwZWQgYXMgIlwwNzIiLCBob3dldmVyIHRoZQorCQkJICAgICAqIGRvY3VtZW50YXRpb24gaXMgaW5jb3JyZWN0IC0gcmVhZCB0aGUgY29kZS4KKwkJCSAgICAgKiBUaGUgcmVwbGFjZW1lbnQgZG9lcyBub3Qgd29yayByZWxpYWJseSwKKwkJCSAgICAgKiBzbyB0aGUgYWR2aWNlIGlzIG5vdCBoZWxwZnVsLgorCQkJICAgICAqLworCQkJICAgIGJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICcwJyk7CisJCQkgICAgYnVmcHRyID0gc2F2ZV9jaGFyKGJ1ZnB0ciwgJzcnKTsKKwkJCSAgICB4eDEgPSAnMic7CisJCQkgICAgYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJICAgIC8qIHNob3VsZCBub3QgaGFwcGVuLCBidXQgaGFuZGxlIHRoaXMgYW55d2F5ICovCisJCQkgICAgX25jX1NQUklOVEYob2N0YWwsIF9uY19TTElNSVQoc2l6ZW9mKG9jdGFsKSkKKwkJCQkJIiUwM28iLCBVQ2hhcih4eDEpKTsKKwkJCSAgICBidWZwdHIgPSBzYXZlX2NoYXIoYnVmcHRyLCBvY3RhbFswXSk7CisJCQkgICAgYnVmcHRyID0gc2F2ZV9jaGFyKGJ1ZnB0ciwgb2N0YWxbMV0pOworCQkJICAgIHh4MSA9IG9jdGFsWzJdOworCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQl9CisJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsIHh4MSk7CisJICAgIH0KIAl9IGVsc2UgaWYgKHN0clswXSA9PSAnJCcgJiYgc3RyWzFdID09ICc8JykgewkvKiBkaXNjYXJkIHBhZGRpbmcgKi8KIAkgICAgc3RyICs9IDI7CiAJICAgIHdoaWxlIChpc2RpZ2l0KFVDaGFyKCpzdHIpKQpAQCAtNjc3LDYgKzcwMSwyMCBAQAogCQkgICB8fCAqc3RyID09ICc+JykKIAkJc3RyKys7CiAJICAgIC0tc3RyOworCX0gZWxzZSBpZiAoc3NjYW5mKHN0ciwKKwkJCSAgIlslJT8lJXAxJSV7OH0lJTwlJXQlZCUlcDElJWQlJWUlJXAxJSV7MTZ9JSU8JSV0JWQlJXAxJSV7OH0lJS0lJWQlJWUlZDs1OyUlcDElJWQlJTttIiwKKwkJCSAgJmluMCwgJmluMSwgJmluMikgPT0gMworCQkgICAmJiAoKGluMCA9PSA0ICYmIGluMSA9PSAxMCAmJiBpbjIgPT0gNDgpCisJCSAgICAgICB8fCAoaW4wID09IDMgJiYgaW4xID09IDkgJiYgaW4yID09IDM4KSkpIHsKKwkgICAgLyogZHVtYi1kb3duIGFuIG9wdGltaXplZCBjYXNlIGZyb20geHRlcm0tMjU2Y29sb3IgZm9yIHRlcm1jYXAgKi8KKwkgICAgaWYgKChzdHIgPSBzdHJzdHIoc3RyLCAiO20iKSkgPT0gMCkKKwkJYnJlYWs7CQkvKiBjYW5ub3QgaGFwcGVuICovCisJICAgICsrc3RyOworCSAgICBpZiAoaW4yID09IDQ4KSB7CisJCWJ1ZnB0ciA9IHNhdmVfc3RyaW5nKGJ1ZnB0ciwgIls0ODs1OyVkbSIpOworCSAgICB9IGVsc2UgeworCQlidWZwdHIgPSBzYXZlX3N0cmluZyhidWZwdHIsICJbMzg7NTslZG0iKTsKKwkgICAgfQogCX0gZWxzZSBpZiAoc3RyWzBdID09ICclJyAmJiBzdHJbMV0gPT0gJyUnKSB7CS8qIGVzY2FwZWQgJyUnICovCiAJICAgIGJ1ZnB0ciA9IHNhdmVfc3RyaW5nKGJ1ZnB0ciwgIiUlIik7CiAJICAgICsrc3RyOwpAQCAtNjg3LDEzICs3MjUsMTMgQEAKIAkgICAgYnVmcHRyID0gc2F2ZV90Y19pbmVxdWFsaXR5KGJ1ZnB0ciwgYzEsIGMyKTsKIAl9IGVsc2UgaWYgKHNzY2FuZihzdHIsICIlJT8lJXslZH0lJT4lJXQlJSclYyclJSslJTsiLCAmYzEsICZjaDIpID09IDIpIHsKIAkgICAgc3RyID0gc3RyY2hyKHN0ciwgJzsnKTsKLQkgICAgYnVmcHRyID0gc2F2ZV90Y19pbmVxdWFsaXR5KGJ1ZnB0ciwgYzEsIGMyKTsKKwkgICAgYnVmcHRyID0gc2F2ZV90Y19pbmVxdWFsaXR5KGJ1ZnB0ciwgYzEsIGNoMik7CiAJfSBlbHNlIGlmIChzc2NhbmYoc3RyLCAiJSU/JSUnJWMnJSU+JSV0JSV7JWR9JSUrJSU7IiwgJmNoMSwgJmMyKSA9PSAyKSB7CiAJICAgIHN0ciA9IHN0cmNocihzdHIsICc7Jyk7Ci0JICAgIGJ1ZnB0ciA9IHNhdmVfdGNfaW5lcXVhbGl0eShidWZwdHIsIGMxLCBjMik7CisJICAgIGJ1ZnB0ciA9IHNhdmVfdGNfaW5lcXVhbGl0eShidWZwdHIsIGNoMSwgYzIpOwogCX0gZWxzZSBpZiAoc3NjYW5mKHN0ciwgIiUlPyUlJyVjJyUlPiUldCUlJyVjJyUlKyUlOyIsICZjaDEsICZjaDIpID09IDIpIHsKIAkgICAgc3RyID0gc3RyY2hyKHN0ciwgJzsnKTsKLQkgICAgYnVmcHRyID0gc2F2ZV90Y19pbmVxdWFsaXR5KGJ1ZnB0ciwgYzEsIGMyKTsKKwkgICAgYnVmcHRyID0gc2F2ZV90Y19pbmVxdWFsaXR5KGJ1ZnB0ciwgY2gxLCBjaDIpOwogCX0gZWxzZSBpZiAoKGxlbiA9IGJjZF9leHByZXNzaW9uKHN0cikpICE9IDApIHsKIAkgICAgc3RyICs9IGxlbjsKIAkgICAgYnVmcHRyID0gc2F2ZV9zdHJpbmcoYnVmcHRyLCAiJUIiKTsKQEAgLTcwOCwxNSArNzQ2LDE1IEBACiAJICAgIGJ1ZnB0ciA9IHNhdmVfdGNfY2hhcihidWZwdHIsIGMxKTsKIAl9CiAJLyogRklYTUU6IHRoaXMgIndvcmtzIiBmb3IgJ2RlbHRhJyAqLwotCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCAiJXsyfSUqJS0iLCA4KSA9PSAwKSB7CisJZWxzZSBpZiAoc3RybmNtcChzdHIsICIlezJ9JSolLSIsIChzaXplX3QpIDgpID09IDApIHsKIAkgICAgc3RyICs9IDc7CiAJICAgIGJ1ZnB0ciA9IHNhdmVfc3RyaW5nKGJ1ZnB0ciwgIiVEIik7Ci0JfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgIiV7OTZ9JV4iLCA3KSA9PSAwKSB7CisJfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgIiV7OTZ9JV4iLCAoc2l6ZV90KSA3KSA9PSAwKSB7CiAJICAgIHN0ciArPSA2OwogCSAgICBpZiAoc2F3X20rKyA9PSAwKSB7CiAJCWJ1ZnB0ciA9IHNhdmVfc3RyaW5nKGJ1ZnB0ciwgIiVuIik7CiAJICAgIH0KLQl9IGVsc2UgaWYgKHN0cm5jbXAoc3RyLCAiJXsxMjd9JV4iLCA4KSA9PSAwKSB7CisJfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgIiV7MTI3fSVeIiwgKHNpemVfdCkgOCkgPT0gMCkgewogCSAgICBzdHIgKz0gNzsKIAkgICAgaWYgKHNhd19uKysgPT0gMCkgewogCQlidWZwdHIgPSBzYXZlX3N0cmluZyhidWZwdHIsICIlbSIpOwpAQCAtNzM5LDggKzc3NywyNSBAQAogCSAgICBjYXNlICc4JzoKIAkgICAgY2FzZSAnOSc6CiAJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICclJyk7Ci0JCXdoaWxlIChpc2RpZ2l0KFVDaGFyKCpzdHIpKSkKLQkJICAgIGJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsICpzdHIrKyk7CisJCWNoMSA9IDA7CisJCWNoMiA9IDA7CisJCXdoaWxlIChpc2RpZ2l0KFVDaGFyKCpzdHIpKSkgeworCQkgICAgY2gyID0gY2gxOworCQkgICAgY2gxID0gKnN0cisrOworCQkgICAgaWYgKF9uY19zdHJpY3RfYnNkKSB7CisJCQlpZiAoY2gxID4gJzMnKQorCQkJICAgIHJldHVybiAwOworCQkgICAgfSBlbHNlIHsKKwkJCWJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsIGNoMSk7CisJCSAgICB9CisJCX0KKwkJaWYgKF9uY19zdHJpY3RfYnNkKSB7CisJCSAgICBpZiAoY2gyICE9IDAgJiYgY2gyICE9ICcwJykKKwkJCXJldHVybiAwOworCQkgICAgaWYgKGNoMSA8ICcyJykKKwkJCWNoMSA9ICdkJzsKKwkJICAgIGJ1ZnB0ciA9IHNhdmVfY2hhcihidWZwdHIsIGNoMSk7CisJCX0KIAkJaWYgKHN0cmNocigiZG94WC4iLCAqc3RyKSkgewogCQkgICAgaWYgKCpzdHIgIT0gJ2QnKQkvKiB0ZXJtY2FwIGRvZXNuJ3QgaGF2ZSBvY3RhbCwgaGV4ICovCiAJCQlyZXR1cm4gMDsKQEAgLTc2MSw2ICs4MTYsOCBAQAogCQkgKiB0ZXJtY2FwIG5vdGF0aW9uLgogCQkgKi8KIAkgICAgY2FzZSAncyc6CisJCWlmIChfbmNfc3RyaWN0X2JzZCkKKwkJICAgIHJldHVybiAwOwogCQlidWZwdHIgPSBzYXZlX3N0cmluZyhidWZwdHIsICIlcyIpOwogCQlicmVhazsKIApAQCAtNzkzLDcgKzg1MCw3IEBACiAJICogYnV0IHRoYXQgbWF5IG5vdCBiZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCiAJICovCiAJYXNzZXJ0KHN0ciAhPSAwKTsKLQlpZiAoKnN0ciA9PSAnXDAnKQorCWlmIChzdHIgPT0gMCB8fCAqc3RyID09ICdcMCcpCiAJICAgIGJyZWFrOwogCiAgICAgfQkJCQkvKiBlbmR3aGlsZSAoKnN0cikgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9lcnJvci5jIGIvbmN1cnNlcy90aW5mby9jb21wX2Vycm9yLmMKaW5kZXggNTZjMzYyYS4uZmYwYWNjNyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX2Vycm9yLmMKKysrIGIvbmN1cnNlcy90aW5mby9jb21wX2Vycm9yLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MSw3ICs0MSw3IEBACiAKICNpbmNsdWRlIDx0aWMuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGNvbXBfZXJyb3IuYyx2IDEuMzEgMjAwNy8wNC8yMSAyMzozODozMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGNvbXBfZXJyb3IuYyx2IDEuMzYgMjAxMi8wMi8yMiAyMjozNDozMSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVF9WQVIoYm9vbCkgX25jX3N1cHByZXNzX3dhcm5pbmdzID0gRkFMU0U7CiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBfbmNfY3Vycl9saW5lID0gMDsgLyogY3VycmVudCBsaW5lICMgaW4gaW5wdXQgKi8KQEAgLTU5LDcgKzU5LDggQEAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfc2V0X3NvdXJjZShjb25zdCBjaGFyICpjb25zdCBuYW1lKQogewotICAgIFNvdXJjZU5hbWUgPSBuYW1lOworICAgIEZyZWVJZk5lZWRlZChTb3VyY2VOYW1lKTsKKyAgICBTb3VyY2VOYW1lID0gc3RyZHVwKG5hbWUpOwogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQpAQCAtNzAsNyArNzEsNyBAQAogICAgIGlmIChUZXJtVHlwZSAhPSAwKSB7CiAJVGVybVR5cGVbMF0gPSAnXDAnOwogCWlmIChuYW1lKQotCSAgICBzdHJuY2F0KFRlcm1UeXBlLCBuYW1lLCBNQVhfTkFNRV9TSVpFKTsKKwkgICAgc3RybmNhdChUZXJtVHlwZSwgbmFtZSwgKHNpemVfdCkgTUFYX05BTUVfU0laRSk7CiAgICAgfQogfQogCkBAIC04NCw3ICs4NSw3IEBACiAgICAgfQogI2VuZGlmCiAgICAgaWYgKG5hbWUgIT0gMCkKLQlzdHJjcHkobmFtZSwgVGVybVR5cGUgIT0gMCA/IFRlcm1UeXBlIDogIiIpOworCV9uY19TVFJDUFkobmFtZSwgVGVybVR5cGUgIT0gMCA/IFRlcm1UeXBlIDogIiIsIE1BWF9OQU1FX1NJWkUpOwogfQogCiBzdGF0aWMgTkNVUlNFU19JTkxJTkUgdm9pZApAQCAtMTUxLDMgKzE1MiwxMiBAQAogICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICNlbmRpZgogfQorCisjaWYgTk9fTEVBS1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfY29tcF9lcnJvcl9sZWFrcyh2b2lkKQoreworICAgIEZyZWVBbmROdWxsKFNvdXJjZU5hbWUpOworICAgIEZyZWVBbmROdWxsKFRlcm1UeXBlKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX2V4cGFuZC5jIGIvbmN1cnNlcy90aW5mby9jb21wX2V4cGFuZC5jCmluZGV4IDZlNzlhOTIuLjJhYjA2ZWIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9leHBhbmQuYworKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfZXhwYW5kLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDx0aWMuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGNvbXBfZXhwYW5kLmMsdiAxLjIwIDIwMDgvMDgvMTYgMTk6Mjk6NDIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBjb21wX2V4cGFuZC5jLHYgMS4yNSAyMDEyLzAzLzI0IDE4OjM3OjE3IHRvbSBFeHAgJCIpCiAKIHN0YXRpYyBpbnQKIHRyYWlsaW5nX3NwYWNlcyhjb25zdCBjaGFyICpzcmMpCkBAIC00OSw2ICs0OSw4IEBACiAjZGVmaW5lIFJFQUxDVEwocykgKFVDaGFyKCoocykpIDwgMTI3ICYmIGlzY250cmwoVUNoYXIoKihzKSkpKQogI2RlZmluZSBSRUFMUFJJTlQocykgKFVDaGFyKCoocykpIDwgMTI3ICYmIGlzcHJpbnQoVUNoYXIoKihzKSkpKQogCisjZGVmaW5lIFBfTElNSVQocCkgKGxlbmd0aCAtIChzaXplX3QpKHApKQorCiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCiBfbmNfdGljX2V4cGFuZChjb25zdCBjaGFyICpzcmNwLCBib29sIHRpY19mb3JtYXQsIGludCBudW1iZXJzKQogewpAQCAtNjEsMTUgKzYzLDE1IEBACiAgICAgc2l6ZV90IG5lZWQgPSAoMiArIHN0cmxlbihzdHIpKSAqIDQ7CiAgICAgaW50IGNoOwogCi0jaWYgTk9fTEVBS1MKICAgICBpZiAoc3JjcCA9PSAwKSB7CisjaWYgTk9fTEVBS1MKIAlpZiAoYnVmZmVyICE9IDApIHsKIAkgICAgRnJlZUFuZE51bGwoYnVmZmVyKTsKIAkgICAgbGVuZ3RoID0gMDsKIAl9CisjZW5kaWYKIAlyZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYKICAgICBpZiAoYnVmZmVyID09IDAgfHwgbmVlZCA+IGxlbmd0aCkgewogCWlmICgoYnVmZmVyID0gdHlwZVJlYWxsb2MoY2hhciwgbGVuZ3RoID0gbmVlZCwgYnVmZmVyKSkgPT0gMCkKIAkgICAgICByZXR1cm4gMDsKQEAgLTkwLDggKzkyLDkgQEAKIAkJICAgICYmIHN0clsxXSAhPSAnXFwnCiAJCSAgICAmJiBSRUFMUFJJTlQoc3RyICsgMSkKIAkJICAgICYmIHN0clsyXSA9PSBTX1FVT1RFKSB7Ci0JCSAgICBzcHJpbnRmKGJ1ZmZlciArIGJ1ZnAsICJ7JWR9Iiwgc3RyWzFdKTsKLQkJICAgIGJ1ZnAgKz0gc3RybGVuKGJ1ZmZlciArIGJ1ZnApOworCQkgICAgX25jX1NQUklOVEYoYnVmZmVyICsgYnVmcCwgX25jX1NMSU1JVChQX0xJTUlUKGJ1ZnApKQorCQkJCSJ7JWR9Iiwgc3RyWzFdKTsKKwkJICAgIGJ1ZnAgKz0gKGludCkgc3RybGVuKGJ1ZmZlciArIGJ1ZnApOwogCQkgICAgc3RyICs9IDI7CiAJCX0gZWxzZSB7CiAJCSAgICBidWZmZXJbYnVmcCsrXSA9ICpzdHI7CkBAIC0xNzcsMTAgKzE4MCwxMiBAQAogI2RlZmluZSBVbkN0bChjKSAoKGMpICsgJ0AnKQogCWVsc2UgaWYgKFJFQUxDVEwoc3RyKSAmJiBjaCAhPSAnXFwnCiAJCSAmJiAoIWlzbG9uZyB8fCBpc2RpZ2l0KFVDaGFyKHN0clsxXSkpKSkgewotCSAgICAodm9pZCkgc3ByaW50ZigmYnVmZmVyW2J1ZnBdLCAiXiVjIiwgVW5DdGwoY2gpKTsKKwkgICAgX25jX1NQUklOVEYoJmJ1ZmZlcltidWZwXSwgX25jX1NMSU1JVChQX0xJTUlUKGJ1ZnApKQorCQkJIl4lYyIsIFVuQ3RsKGNoKSk7CiAJICAgIGJ1ZnAgKz0gMjsKIAl9IGVsc2UgewotCSAgICAodm9pZCkgc3ByaW50ZigmYnVmZmVyW2J1ZnBdLCAiXFwlMDNvIiwgY2gpOworCSAgICBfbmNfU1BSSU5URigmYnVmZmVyW2J1ZnBdLCBfbmNfU0xJTUlUKFBfTElNSVQoYnVmcCkpCisJCQkiXFwlMDNvIiwgY2gpOwogCSAgICBidWZwICs9IDQ7CiAJfQogCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jIGIvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwppbmRleCBiN2ZiZDA2Li45NTljNmUxIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jCisrKyBiL25jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00NCwxMTAgKzQ0LDM2IEBACiAjaW5jbHVkZSA8dGljLmg+CiAjaW5jbHVkZSA8aGFzaHNpemUuaD4KIAotI2lmZGVmIE1BSU5fUFJPR1JBTQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jdW5kZWYgIERFQlVHCi0jZGVmaW5lIERFQlVHKGxldmVsLCBwYXJhbXMpCS8qbm90aGluZyAqLwotI2VuZGlmCi0KLU1PRFVMRV9JRCgiJElkOiBjb21wX2hhc2guYyx2IDEuMzYgMjAwOC8wOC8xNiAxNzowNjo1MyB0b20gRXhwICQiKQotCi1zdGF0aWMgaW50IGhhc2hfZnVuY3Rpb24oY29uc3QgY2hhciAqKTsKK01PRFVMRV9JRCgiJElkOiBjb21wX2hhc2guYyx2IDEuNDggMjAwOS8wOC8wOCAxNzozNjoyMSB0b20gRXhwICQiKQogCiAvKgotICoJX25jX21ha2VfaGFzaF90YWJsZSgpCi0gKgotICoJVGFrZXMgdGhlIGVudHJpZXMgaW4gdGFibGVbXSBhbmQgaGFzaGVzIHRoZW0gaW50byBoYXNoX3RhYmxlW10KLSAqCWJ5IG5hbWUuICBUaGVyZSBhcmUgQ0FQVEFCU0laRSBlbnRyaWVzIGluIHRhYmxlW10gYW5kIEhBU0hUQUJTSVpFCi0gKglzbG90cyBpbiBoYXNoX3RhYmxlW10uCi0gKgorICogRmluZHMgdGhlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGluIHRoZSBoYXNoIHRhYmxlIGlmIHByZXNlbnQuCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZW50cnkgaW4gdGhlIHRhYmxlIG9yIDAgaWYgbm90IGZvdW5kLgogICovCi0KLSNpZmRlZiBNQUlOX1BST0dSQU0KLQotI3VuZGVmIE1PRFVMRV9JRAotI2RlZmluZSBNT0RVTEVfSUQoaWQpCQkvKm5vdGhpbmcgKi8KLSNpbmNsdWRlIDx0aW5mby9kb2FsbG9jLmM+Ci0KLXN0YXRpYyB2b2lkCi1fbmNfbWFrZV9oYXNoX3RhYmxlKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICp0YWJsZSwKLQkJICAgIHNob3J0ICpoYXNoX3RhYmxlKQotewotICAgIHNob3J0IGk7Ci0gICAgaW50IGhhc2h2YWx1ZTsKLSAgICBpbnQgY29sbGlzaW9ucyA9IDA7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgSEFTSFRBQlNJWkU7IGkrKykgewotCWhhc2hfdGFibGVbaV0gPSAtMTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IENBUFRBQlNJWkU7IGkrKykgewotCWhhc2h2YWx1ZSA9IGhhc2hfZnVuY3Rpb24odGFibGVbaV0ubnRlX25hbWUpOwotCi0JaWYgKGhhc2hfdGFibGVbaGFzaHZhbHVlXSA+PSAwKQotCSAgICBjb2xsaXNpb25zKys7Ci0KLQlpZiAoaGFzaF90YWJsZVtoYXNodmFsdWVdICE9IDApCi0JICAgIHRhYmxlW2ldLm50ZV9saW5rID0gaGFzaF90YWJsZVtoYXNodmFsdWVdOwotCWhhc2hfdGFibGVbaGFzaHZhbHVlXSA9IGk7Ci0gICAgfQotCi0gICAgREVCVUcoNCwgKCJIYXNoIHRhYmxlIGNvbXBsZXRlOiAlZCBjb2xsaXNpb25zIG91dCBvZiAlZCBlbnRyaWVzIiwKLQkgICAgICBjb2xsaXNpb25zLCBDQVBUQUJTSVpFKSk7Ci19Ci0jZW5kaWYKLQotLyoKLSAqCWludCBoYXNoX2Z1bmN0aW9uKHN0cmluZykKLSAqCi0gKglDb21wdXRlcyB0aGUgaGFzaGluZyBmdW5jdGlvbiBvbiB0aGUgZ2l2ZW4gc3RyaW5nLgotICoKLSAqCVRoZSBjdXJyZW50IGhhc2ggZnVuY3Rpb24gaXMgdGhlIHN1bSBvZiBlYWNoIGNvbnNlY3R1dGl2ZSBwYWlyCi0gKglvZiBjaGFyYWN0ZXJzLCB0YWtlbiBhcyB0d28tYnl0ZSBpbnRlZ2VycywgbW9kIEhBU0hUQUJTSVpFLgotICoKLSAqLwotCi1zdGF0aWMgaW50Ci1oYXNoX2Z1bmN0aW9uKGNvbnN0IGNoYXIgKnN0cmluZykKLXsKLSAgICBsb25nIHN1bSA9IDA7Ci0KLSAgICBERUJVRyg5LCAoImhhc2hpbmcgJXMiLCBzdHJpbmcpKTsKLSAgICB3aGlsZSAoKnN0cmluZykgewotCXN1bSArPSAobG9uZykgKCpzdHJpbmcgKyAoKihzdHJpbmcgKyAxKSA8PCA4KSk7Ci0Jc3RyaW5nKys7Ci0gICAgfQotCi0gICAgREVCVUcoOSwgKCJzdW0gaXMgJWxkIiwgc3VtKSk7Ci0gICAgcmV0dXJuIChpbnQpIChzdW0gJSBIQVNIVEFCU0laRSk7Ci19Ci0KLS8qCi0gKglzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqCi0gKglmaW5kX2VudHJ5KHN0cmluZykKLSAqCi0gKglGaW5kcyB0aGUgZW50cnkgZm9yIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGhhc2ggdGFibGUgaWYgcHJlc2VudC4KLSAqCVJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBlbnRyeSBpbiB0aGUgdGFibGUgb3IgMCBpZiBub3QgZm91bmQuCi0gKgotICovCi0KLSNpZm5kZWYgTUFJTl9QUk9HUkFNCisvKiBlbnRyeXBvaW50IHVzZWQgYnkgdGFjayAoZG8gbm90IGFsdGVyKSAqLwogTkNVUlNFU19FWFBPUlQoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKikKIF9uY19maW5kX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZywKLQkgICAgICAgY29uc3Qgc2hvcnQgKmhhc2hfdGFibGUpCisJICAgICAgIGNvbnN0IEhhc2hWYWx1ZSAqIGhhc2hfdGFibGUpCiB7CisgICAgYm9vbCB0ZXJtY2FwID0gKGhhc2hfdGFibGUgIT0gX25jX2dldF9oYXNoX3RhYmxlKEZBTFNFKSk7CisgICAgY29uc3QgSGFzaERhdGEgKmRhdGEgPSBfbmNfZ2V0X2hhc2hfaW5mbyh0ZXJtY2FwKTsKICAgICBpbnQgaGFzaHZhbHVlOwogICAgIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpwdHIgPSAwOwogICAgIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpyZWFsX3RhYmxlOwogCi0gICAgaGFzaHZhbHVlID0gaGFzaF9mdW5jdGlvbihzdHJpbmcpOworICAgIGhhc2h2YWx1ZSA9IGRhdGEtPmhhc2hfb2Yoc3RyaW5nKTsKIAotICAgIGlmIChoYXNoX3RhYmxlW2hhc2h2YWx1ZV0gPj0gMCkgewotCXJlYWxfdGFibGUgPSBfbmNfZ2V0X3RhYmxlKGhhc2hfdGFibGUgIT0gX25jX2dldF9oYXNoX3RhYmxlKEZBTFNFKSk7Ci0JcHRyID0gcmVhbF90YWJsZSArIGhhc2hfdGFibGVbaGFzaHZhbHVlXTsKLQl3aGlsZSAoc3RyY21wKHB0ci0+bnRlX25hbWUsIHN0cmluZykgIT0gMCkgewotCSAgICBpZiAocHRyLT5udGVfbGluayA8IDApCi0JCXJldHVybiAwOwotCSAgICBwdHIgPSByZWFsX3RhYmxlICsgKHB0ci0+bnRlX2xpbmsgKyBoYXNoX3RhYmxlW0hBU0hUQUJTSVpFXSk7CisgICAgaWYgKGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7CisKKwlyZWFsX3RhYmxlID0gX25jX2dldF90YWJsZSh0ZXJtY2FwKTsKKwlwdHIgPSByZWFsX3RhYmxlICsgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdOworCXdoaWxlICghZGF0YS0+Y29tcGFyZV9uYW1lcyhwdHItPm50ZV9uYW1lLCBzdHJpbmcpKSB7CisJICAgIGlmIChwdHItPm50ZV9saW5rIDwgMCkgeworCQlwdHIgPSAwOworCQlicmVhazsKKwkgICAgfQorCSAgICBwdHIgPSByZWFsX3RhYmxlICsgKHB0ci0+bnRlX2xpbmsKKwkJCQkrIGRhdGEtPnRhYmxlX2RhdGFbZGF0YS0+dGFibGVfc2l6ZV0pOwogCX0KICAgICB9CiAKQEAgLTE1NSwyMTYgKzgxLDM0IEBACiB9CiAKIC8qCi0gKglzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqCi0gKglmaW5kX3R5cGVfZW50cnkoc3RyaW5nLCB0eXBlLCB0YWJsZSkKKyAqIEZpbmRzIHRoZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG5hbWUgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBpbiB0aGUgZ2l2ZW4gdGFibGUgaWYKKyAqIHByZXNlbnQgKGFzIGRpc3RpbmN0IGZyb20gX25jX2ZpbmRfZW50cnksIHdoaWNoIGZpbmRzIHRoZSBsYXN0IGVudHJ5CisgKiByZWdhcmRsZXNzIG9mIHR5cGUpLgogICoKLSAqCUZpbmRzIHRoZSBmaXJzdCBlbnRyeSBmb3IgdGhlIGdpdmVuIG5hbWUgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBpbiB0aGUKLSAqCWdpdmVuIHRhYmxlIGlmIHByZXNlbnQgKGFzIGRpc3RpbmN0IGZyb20gZmluZF9lbnRyeSwgd2hpY2ggZmluZHMgdGhlCi0gKgl0aGUgbGFzdCBlbnRyeSByZWdhcmRsZXNzIG9mIHR5cGUpLiAgWW91IGNhbiB1c2UgdGhpcyBpZiB5b3UgZGV0ZWN0Ci0gKglhIG5hbWUgY2xhc2guICBJdCdzIHNsb3dlciwgdGhvdWdoLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVudHJ5Ci0gKglpbiB0aGUgdGFibGUgb3IgMCBpZiBub3QgZm91bmQuCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZW50cnkgaW4gdGhlIHRhYmxlIG9yIDAgaWYgbm90IGZvdW5kLgogICovCi0KIE5DVVJTRVNfRVhQT1JUKHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICopCiBfbmNfZmluZF90eXBlX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZywKIAkJICAgIGludCB0eXBlLAotCQkgICAgY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKnRhYmxlKQorCQkgICAgYm9vbCB0ZXJtY2FwKQogewotICAgIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICpwdHI7CisgICAgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKnB0ciA9IE5VTEw7CisgICAgY29uc3QgSGFzaERhdGEgKmRhdGEgPSBfbmNfZ2V0X2hhc2hfaW5mbyh0ZXJtY2FwKTsKKyAgICBpbnQgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwogCi0gICAgZm9yIChwdHIgPSB0YWJsZTsgcHRyIDwgdGFibGUgKyBDQVBUQUJTSVpFOyBwdHIrKykgewotCWlmIChwdHItPm50ZV90eXBlID09IHR5cGUgJiYgc3RyY21wKHN0cmluZywgcHRyLT5udGVfbmFtZSkgPT0gMCkKLQkgICAgcmV0dXJuIChwdHIpOwotICAgIH0KKyAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKKwljb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqY29uc3QgdGFibGUgPSBfbmNfZ2V0X3RhYmxlKHRlcm1jYXApOwogCi0gICAgcmV0dXJuICgoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKikgTlVMTCk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE1BSU5fUFJPR1JBTQotLyoKLSAqIFRoaXMgZmlsdGVyIHJlYWRzIGZyb20gc3RhbmRhcmQgaW5wdXQgYSBsaXN0IG9mIHRhYi1kZWxpbWl0ZWQgY29sdW1ucywKLSAqIChlLmcuLCBmcm9tIENhcHMuZmlsdGVyZWQpIGNvbXB1dGVzIHRoZSBoYXNoLXZhbHVlIG9mIGEgc3BlY2lmaWVkIGNvbHVtbiBhbmQKLSAqIHdyaXRlcyB0aGUgaGFzaGVkIHRhYmxlcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0gKgotICogQnkgY29tcGlsaW5nIHRoZSBoYXNoIHRhYmxlIGF0IGJ1aWxkIHRpbWUsIHdlJ3JlIGFibGUgdG8gbWFrZSB0aGUgZW50aXJlCi0gKiBzZXQgb2YgdGVybWluZm8gYW5kIHRlcm1jYXAgdGFibGVzIHJlYWRvbmx5IChhbmQgYWxzbyBwcm92aWRlIHNvbWUgcnVudGltZQotICogcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQpLgotICovCi0KLSNkZWZpbmUgTUFYX0NPTFVNTlMgQlVGU0laCS8qIHRoaXMgX2hhc18gdG8gYmUgd29yc3QtY2FzZSAqLwotCi1zdGF0aWMgY2hhciAqKgotcGFyc2VfY29sdW1ucyhjaGFyICpidWZmZXIpCi17Ci0gICAgc3RhdGljIGNoYXIgKipsaXN0OwotCi0gICAgaW50IGNvbCA9IDA7Ci0KLSAgICBpZiAobGlzdCA9PSAwICYmIChsaXN0ID0gdHlwZUNhbGxvYyhjaGFyICosIE1BWF9DT0xVTU5TKSkgPT0gMCkKLQkgIHJldHVybiAoMCk7Ci0KLSAgICBpZiAoKmJ1ZmZlciAhPSAnIycpIHsKLQl3aGlsZSAoKmJ1ZmZlciAhPSAnXDAnKSB7Ci0JICAgIGNoYXIgKnM7Ci0JICAgIGZvciAocyA9IGJ1ZmZlcjsgKCpzICE9ICdcMCcpICYmICFpc3NwYWNlKFVDaGFyKCpzKSk7IHMrKykKLQkJLypFTVBUWSAqLyA7Ci0JICAgIGlmIChzICE9IGJ1ZmZlcikgewotCQljaGFyIG1hcmsgPSAqczsKLQkJKnMgPSAnXDAnOwotCQlpZiAoKHMgLSBidWZmZXIpID4gMQotCQkgICAgJiYgKCpidWZmZXIgPT0gJyInKQotCQkgICAgJiYgKHNbLTFdID09ICciJykpIHsJLyogc3RyaXAgdGhlIHF1b3RlcyAqLwotCQkgICAgYXNzZXJ0KHMgPiBidWZmZXIgKyAxKTsKLQkJICAgIHNbLTFdID0gJ1wwJzsKLQkJICAgIGJ1ZmZlcisrOwotCQl9Ci0JCWxpc3RbY29sXSA9IGJ1ZmZlcjsKLQkJY29sKys7Ci0JCWlmIChtYXJrID09ICdcMCcpCi0JCSAgICBicmVhazsKLQkJd2hpbGUgKCorK3MgJiYgaXNzcGFjZShVQ2hhcigqcykpKQotCQkgICAgLypFTVBUWSAqLyA7Ci0JCWJ1ZmZlciA9IHM7Ci0JICAgIH0gZWxzZQorCXB0ciA9IHRhYmxlICsgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdOworCXdoaWxlIChwdHItPm50ZV90eXBlICE9IHR5cGUKKwkgICAgICAgfHwgIWRhdGEtPmNvbXBhcmVfbmFtZXMocHRyLT5udGVfbmFtZSwgc3RyaW5nKSkgeworCSAgICBpZiAocHRyLT5udGVfbGluayA8IDApIHsKKwkJcHRyID0gMDsKIAkJYnJlYWs7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gY29sID8gbGlzdCA6IDA7Ci19Ci0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKm5hbWVfdGFibGUgPSB0eXBlQ2FsbG9jKHN0cnVjdAotCQkJCQkJICAgICBuYW1lX3RhYmxlX2VudHJ5LCBDQVBUQUJTSVpFKTsKLSAgICBzaG9ydCAqaGFzaF90YWJsZSA9IHR5cGVDYWxsb2Moc2hvcnQsIEhBU0hUQUJTSVpFKTsKLSAgICBjb25zdCBjaGFyICpyb290X25hbWUgPSAiIjsKLSAgICBpbnQgY29sdW1uID0gMDsKLSAgICBpbnQgYmlnc3RyaW5nID0gMDsKLSAgICBpbnQgbjsKLSAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgKnR5cGVuYW1lc1tdID0KLSAgICB7IkJPT0xFQU4iLCAiTlVNQkVSIiwgIlNUUklORyJ9OwotCi0gICAgc2hvcnQgQm9vbENvdW50ID0gMDsKLSAgICBzaG9ydCBOdW1Db3VudCA9IDA7Ci0gICAgc2hvcnQgU3RyQ291bnQgPSAwOwotCi0gICAgLyogVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjb2x1bW4tbnVtYmVyIChzdGFydGluZyB3aXRoIDApLgotICAgICAqIFRoZSBzZWNvbmQgaXMgdGhlIHJvb3QgbmFtZSBvZiB0aGUgdGFibGVzIHRvIGdlbmVyYXRlLgotICAgICAqLwotICAgIGlmIChhcmdjIDw9IDMKLQl8fCAoY29sdW1uID0gYXRvaShhcmd2WzFdKSkgPD0gMAotCXx8IChjb2x1bW4gPj0gTUFYX0NPTFVNTlMpCi0JfHwgKihyb290X25hbWUgPSBhcmd2WzJdKSA9PSAwCi0JfHwgKGJpZ3N0cmluZyA9IGF0b2koYXJndlszXSkpIDwgMAotCXx8IG5hbWVfdGFibGUgPT0gMAotCXx8IGhhc2hfdGFibGUgPT0gMCkgewotCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6IG1ha2VfaGFzaCBjb2x1bW4gcm9vdF9uYW1lIGJpZ3N0cmluZ1xuIik7Ci0JZXhpdChFWElUX0ZBSUxVUkUpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogUmVhZCB0aGUgdGFibGUgaW50byBvdXIgYXJyYXlzLgotICAgICAqLwotICAgIGZvciAobiA9IDA7IChuIDwgQ0FQVEFCU0laRSkgJiYgZmdldHMoYnVmZmVyLCBCVUZTSVosIHN0ZGluKTspIHsKLQljaGFyICoqbGlzdCwgKm5scCA9IHN0cmNocihidWZmZXIsICdcbicpOwotCWlmIChubHApCi0JICAgICpubHAgPSAnXDAnOwotCWxpc3QgPSBwYXJzZV9jb2x1bW5zKGJ1ZmZlcik7Ci0JaWYgKGxpc3QgPT0gMCkJCS8qIGJsYW5rIG9yIGNvbW1lbnQgKi8KLQkgICAgY29udGludWU7Ci0JbmFtZV90YWJsZVtuXS5udGVfbGluayA9IC0xOwkvKiBlbmQtb2YtaGFzaCAqLwotCW5hbWVfdGFibGVbbl0ubnRlX25hbWUgPSBzdHJkdXAobGlzdFtjb2x1bW5dKTsKLQlpZiAoIXN0cmNtcChsaXN0WzJdLCAiYm9vbCIpKSB7Ci0JICAgIG5hbWVfdGFibGVbbl0ubnRlX3R5cGUgPSBCT09MRUFOOwotCSAgICBuYW1lX3RhYmxlW25dLm50ZV9pbmRleCA9IEJvb2xDb3VudCsrOwotCX0gZWxzZSBpZiAoIXN0cmNtcChsaXN0WzJdLCAibnVtIikpIHsKLQkgICAgbmFtZV90YWJsZVtuXS5udGVfdHlwZSA9IE5VTUJFUjsKLQkgICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXggPSBOdW1Db3VudCsrOwotCX0gZWxzZSBpZiAoIXN0cmNtcChsaXN0WzJdLCAic3RyIikpIHsKLQkgICAgbmFtZV90YWJsZVtuXS5udGVfdHlwZSA9IFNUUklORzsKLQkgICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXggPSBTdHJDb3VudCsrOwotCX0gZWxzZSB7Ci0JICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biB0eXBlOiAlc1xuIiwgbGlzdFsyXSk7Ci0JICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLQl9Ci0JbisrOwotICAgIH0KLSAgICBfbmNfbWFrZV9oYXNoX3RhYmxlKG5hbWVfdGFibGUsIGhhc2hfdGFibGUpOwotCi0gICAgLyoKLSAgICAgKiBXcml0ZSB0aGUgY29tcGlsZWQgdGFibGVzIHRvIHN0YW5kYXJkIG91dHB1dAotICAgICAqLwotICAgIGlmIChiaWdzdHJpbmcpIHsKLQlpbnQgbGVuID0gMDsKLQlpbnQgbnh0OwotCi0JcHJpbnRmKCJzdGF0aWMgY29uc3QgY2hhciAlc19uYW1lc190ZXh0W10gPSBcXFxuIiwgcm9vdF9uYW1lKTsKLQlmb3IgKG4gPSAwOyBuIDwgQ0FQVEFCU0laRTsgbisrKSB7Ci0JICAgIG54dCA9IChpbnQpIHN0cmxlbihuYW1lX3RhYmxlW25dLm50ZV9uYW1lKSArIDU7Ci0JICAgIGlmIChueHQgKyBsZW4gPiA3MikgewotCQlwcmludGYoIlxcXG4iKTsKLQkJbGVuID0gMDsKIAkgICAgfQotCSAgICBwcmludGYoIlwiJXNcXDBcIiAiLCBuYW1lX3RhYmxlW25dLm50ZV9uYW1lKTsKLQkgICAgbGVuICs9IG54dDsKKwkgICAgcHRyID0gdGFibGUgKyAocHRyLT5udGVfbGluayArIGRhdGEtPnRhYmxlX2RhdGFbZGF0YS0+dGFibGVfc2l6ZV0pOwogCX0KLQlwcmludGYoIjtcblxuIik7Ci0KLQlsZW4gPSAwOwotCXByaW50Zigic3RhdGljIG5hbWVfdGFibGVfZGF0YSBjb25zdCAlc19uYW1lc19kYXRhW10gPVxuIiwKLQkgICAgICAgcm9vdF9uYW1lKTsKLQlwcmludGYoIntcbiIpOwotCWZvciAobiA9IDA7IG4gPCBDQVBUQUJTSVpFOyBuKyspIHsKLQkgICAgcHJpbnRmKCJcdHsgJTE1ZCxcdCUxMHMsXHQlM2QsICUzZCB9JWNcbiIsCi0JCSAgIGxlbiwKLQkJICAgdHlwZW5hbWVzW25hbWVfdGFibGVbbl0ubnRlX3R5cGVdLAotCQkgICBuYW1lX3RhYmxlW25dLm50ZV9pbmRleCwKLQkJICAgbmFtZV90YWJsZVtuXS5udGVfbGluaywKLQkJICAgbiA8IENBUFRBQlNJWkUgLSAxID8gJywnIDogJyAnKTsKLQkgICAgbGVuICs9IChpbnQpIHN0cmxlbihuYW1lX3RhYmxlW25dLm50ZV9uYW1lKSArIDE7Ci0JfQotCXByaW50ZigifTtcblxuIik7Ci0JcHJpbnRmKCJzdGF0aWMgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKl9uY18lc190YWJsZSA9IDA7XG5cbiIsIHJvb3RfbmFtZSk7Ci0gICAgfSBlbHNlIHsKLQotCXByaW50Zigic3RhdGljIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICVzIF9uY18lc190YWJsZVtdID1cbiIsCi0JICAgICAgIGJpZ3N0cmluZyA/ICIiIDogImNvbnN0IiwKLQkgICAgICAgcm9vdF9uYW1lKTsKLQlwcmludGYoIntcbiIpOwotCWZvciAobiA9IDA7IG4gPCBDQVBUQUJTSVpFOyBuKyspIHsKLQkgICAgc3ByaW50ZihidWZmZXIsICJcIiVzXCIiLAotCQkgICAgbmFtZV90YWJsZVtuXS5udGVfbmFtZSk7Ci0JICAgIHByaW50ZigiXHR7ICUxNXMsXHQlMTBzLFx0JTNkLCAlM2QgfSVjXG4iLAotCQkgICBidWZmZXIsCi0JCSAgIHR5cGVuYW1lc1tuYW1lX3RhYmxlW25dLm50ZV90eXBlXSwKLQkJICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXgsCi0JCSAgIG5hbWVfdGFibGVbbl0ubnRlX2xpbmssCi0JCSAgIG4gPCBDQVBUQUJTSVpFIC0gMSA/ICcsJyA6ICcgJyk7Ci0JfQotCXByaW50ZigifTtcblxuIik7CiAgICAgfQogCi0gICAgcHJpbnRmKCJzdGF0aWMgY29uc3Qgc2hvcnQgX25jXyVzX2hhc2hfdGFibGVbJWRdID1cbiIsCi0JICAgcm9vdF9uYW1lLAotCSAgIEhBU0hUQUJTSVpFICsgMSk7Ci0gICAgcHJpbnRmKCJ7XG4iKTsKLSAgICBmb3IgKG4gPSAwOyBuIDwgSEFTSFRBQlNJWkU7IG4rKykgewotCXByaW50ZigiXHQlM2QsXG4iLCBoYXNoX3RhYmxlW25dKTsKLSAgICB9Ci0gICAgcHJpbnRmKCJcdDBcdC8qIGJhc2Utb2YtdGFibGUgKi9cbiIpOwotICAgIHByaW50ZigifTtcblxuIik7Ci0KLSAgICBwcmludGYoIiNpZiAoQk9PTENPVU5UIT0lZCl8fChOVU1DT1VOVCE9JWQpfHwoU1RSQ09VTlQhPSVkKVxuIiwKLQkgICBCb29sQ291bnQsIE51bUNvdW50LCBTdHJDb3VudCk7Ci0gICAgcHJpbnRmKCIjZXJyb3JcdC0tPiB0ZXJtLmggYW5kIGNvbXBfY2FwdGFiLmMgZGlzYWdyZWUgYWJvdXQgdGhlIDwtLVxuIik7Ci0gICAgcHJpbnRmKCIjZXJyb3JcdC0tPiBudW1iZXJzIG9mIGJvb2xlYW5zLCBudW1iZXJzIGFuZC9vciBzdHJpbmdzIDwtLVxuIik7Ci0gICAgcHJpbnRmKCIjZW5kaWZcblxuIik7Ci0KLSAgICBmcmVlKGhhc2hfdGFibGUpOwotICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgcmV0dXJuIHB0cjsKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYwppbmRleCAzMzI1YTBkLi44MmE2MWE1IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM1LDE1ICszNSwxMCBAQAogLyoKICAqCWNvbXBfcGFyc2UuYyAtLSBwYXJzZXIgZHJpdmVyIGxvb3AgYW5kIHVzZSBoYW5kbGluZy4KICAqCi0gKglfbmNfcmVhZF9lbnRyeV9zb3VyY2UoRklMRSAqLCBsaXRlcmFsLCBib29sLCBib29sICgqaG9vaykoKSkKLSAqCV9uY19yZXNvbHZlX3VzZXMyKHZvaWQpCi0gKglfbmNfZnJlZV9lbnRyaWVzKHZvaWQpCi0gKgogICoJVXNlIHRoaXMgY29kZSBieSBjYWxsaW5nIF9uY19yZWFkX2VudHJ5X3NvdXJjZSgpIG9uIGFzIG1hbnkgc291cmNlCiAgKglmaWxlcyBhcyB5b3UgbGlrZSAoZWl0aGVyIHRlcm1pbmZvIG9yIHRlcm1jYXAgc3ludGF4KS4gIElmIHlvdQogICoJd2FudCB1c2UtcmVzb2x1dGlvbiwgY2FsbCBfbmNfcmVzb2x2ZV91c2VzMigpLiAgVG8gZnJlZSB0aGUgbGlzdAogICoJc3RvcmFnZSwgZG8gX25jX2ZyZWVfZW50cmllcygpLgotICoKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KQEAgLTUxLDkgKzQ2LDggQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8dGljLmg+Ci0jaW5jbHVkZSA8dGVybV9lbnRyeS5oPgogCi1NT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS42OSAyMDA4LzA4LzE2IDIxOjU4OjE2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS45MCAyMDEzLzA4LzMxIDE1OjIyOjMxIHRvbSBFeHAgJCIpCiAKIHN0YXRpYyB2b2lkIHNhbml0eV9jaGVjazIoVEVSTVRZUEUgKiwgYm9vbCk7CiBOQ1VSU0VTX0lNUEVYUCB2b2lkIE5DVVJTRVNfQVBJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSAoVEVSTVRZUEUgKiwgYm9vbCkgPSBzYW5pdHlfY2hlY2syOwpAQCAtNjIsNiArNTYsOCBAQAogc3RhdGljIHZvaWQgc2FuaXR5X2NoZWNrKFRFUk1UWVBFICopOwogTkNVUlNFU19JTVBFWFAgdm9pZCBOQ1VSU0VTX0FQSSgqX25jX2NoZWNrX3Rlcm10eXBlKSAoVEVSTVRZUEUgKikgPSBzYW5pdHlfY2hlY2s7CiAKK3N0YXRpYyB2b2lkIGZpeHVwX2Fjc2MoVEVSTVRZUEUgKiwgaW50KTsKKwogc3RhdGljIHZvaWQKIGVucXVldWUoRU5UUlkgKiBlcCkKIC8qIGFkZCBhbiBlbnRyeSB0byB0aGUgaW4tY29yZSBsaXN0ICovCkBAIC04NywzMSArODMsMTI1IEBACiAJaWYgKGxlbiA+IE1BWF9OQU1FX1NJWkUpCiAJICAgIGxlbiA9IE1BWF9OQU1FX1NJWkU7CiAJKHZvaWQpIHN0cm5jcHkoZHN0LCBzcmMsIGxlbik7Ci0JKHZvaWQpIHN0cmNweShkc3QgKyBsZW4sICJ8Iik7CisJX25jX1NUUkNQWShkc3QgKyBsZW4sICJ8IiwgTUFYX05BTUVfU0laRSk7CiAJc3JjID0gZHN0OwogICAgIH0KICAgICByZXR1cm4gc3JjOwogfQorI2RlZmluZSBGb3JjZUJhcihkc3QsIHNyYykgKChzdHJjaHIoc3JjLCAnfCcpID09IDApID8gZm9yY2VfYmFyKGRzdCwgc3JjKSA6IHNyYykKIAotTkNVUlNFU19FWFBPUlQoYm9vbCkKLV9uY19lbnRyeV9tYXRjaChjaGFyICpuMSwgY2hhciAqbjIpCi0vKiBkbyBhbnkgb2YgdGhlIGFsaWFzZXMgaW4gYSBwYWlyIG9mIHRlcm1pbmFsIG5hbWVzIG1hdGNoPyAqLworI2lmIE5DVVJTRVNfVVNFX1RFUk1DQVAgJiYgTkNVUlNFU19YTkFNRVMKK3N0YXRpYyBjaGFyICoKK3NraXBfaW5kZXgoY2hhciAqbmFtZSkKK3sKKyAgICBjaGFyICpiYXIgPSBzdHJjaHIobmFtZSwgJ3wnKTsKKworICAgIGlmIChiYXIgIT0gMCAmJiAoYmFyIC0gbmFtZSkgPT0gMikKKwluYW1lID0gYmFyICsgMTsKKworICAgIHJldHVybiBuYW1lOworfQorI2VuZGlmCisKK3N0YXRpYyBib29sCitjaGVja19jb2xsaXNpb25zKGNoYXIgKm4xLCBjaGFyICpuMiwgaW50IGNvdW50ZXIpCiB7CiAgICAgY2hhciAqcHN0YXJ0LCAqcXN0YXJ0LCAqcGVuZCwgKnFlbmQ7Ci0gICAgY2hhciBuYzFbTUFYX05BTUVfU0laRSArIDJdLCBuYzJbTUFYX05BTUVfU0laRSArIDJdOworICAgIGNoYXIgbmMxW01BWF9OQU1FX1NJWkUgKyAyXTsKKyAgICBjaGFyIG5jMltNQVhfTkFNRV9TSVpFICsgMl07CiAKLSAgICBuMSA9IGZvcmNlX2JhcihuYzEsIG4xKTsKLSAgICBuMiA9IGZvcmNlX2JhcihuYzIsIG4yKTsKKyAgICBuMSA9IEZvcmNlQmFyKG5jMSwgbjEpOworICAgIG4yID0gRm9yY2VCYXIobmMyLCBuMik7CiAKLSAgICBmb3IgKHBzdGFydCA9IG4xOyAocGVuZCA9IHN0cmNocihwc3RhcnQsICd8JykpOyBwc3RhcnQgPSBwZW5kICsgMSkKLQlmb3IgKHFzdGFydCA9IG4yOyAocWVuZCA9IHN0cmNocihxc3RhcnQsICd8JykpOyBxc3RhcnQgPSBxZW5kICsgMSkKKyNpZiBOQ1VSU0VTX1VTRV9URVJNQ0FQICYmIE5DVVJTRVNfWE5BTUVTCisgICAgaWYgKChfbmNfc3ludGF4ID09IFNZTl9URVJNQ0FQKSAmJiBfbmNfdXNlcl9kZWZpbmFibGUpIHsKKwluMSA9IHNraXBfaW5kZXgobjEpOworCW4yID0gc2tpcF9pbmRleChuMik7CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKHBzdGFydCA9IG4xOyAocGVuZCA9IHN0cmNocihwc3RhcnQsICd8JykpOyBwc3RhcnQgPSBwZW5kICsgMSkgeworCWZvciAocXN0YXJ0ID0gbjI7IChxZW5kID0gc3RyY2hyKHFzdGFydCwgJ3wnKSk7IHFzdGFydCA9IHFlbmQgKyAxKSB7CiAJICAgIGlmICgocGVuZCAtIHBzdGFydCA9PSBxZW5kIC0gcXN0YXJ0KQotCQkmJiBtZW1jbXAocHN0YXJ0LCBxc3RhcnQsIChzaXplX3QpIChwZW5kIC0gcHN0YXJ0KSkgPT0gMCkKKwkJJiYgbWVtY21wKHBzdGFydCwgcXN0YXJ0LCAoc2l6ZV90KSAocGVuZCAtIHBzdGFydCkpID09IDApIHsKKwkJaWYgKGNvdW50ZXIgPiAwKQorCQkgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLCAiTmFtZSBjb2xsaXNpb24gJyUuKnMnIGJldHdlZW5cbiIsCisJCQkJICAgKGludCkgKHBlbmQgLSBwc3RhcnQpLCBwc3RhcnQpOwogCQlyZXR1cm4gKFRSVUUpOworCSAgICB9CisJfQorICAgIH0KIAogICAgIHJldHVybiAoRkFMU0UpOwogfQogCitzdGF0aWMgY2hhciAqCituZXh0X25hbWUoY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoKm5hbWUgIT0gJ1wwJykKKwkrK25hbWU7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3N0YXRpYyBjaGFyICoKK25hbWVfZW5kaW5nKGNoYXIgKm5hbWUpCit7CisgICAgaWYgKCpuYW1lID09ICdcMCcpIHsKKwluYW1lID0gMDsKKyAgICB9IGVsc2UgeworCXdoaWxlICgqbmFtZSAhPSAnXDAnICYmICpuYW1lICE9ICd8JykKKwkgICAgKytuYW1lOworICAgIH0KKyAgICByZXR1cm4gbmFtZTsKK30KKworLyoKKyAqIEVzc2VudGlhbGx5LCBmaW5kIHRoZSBjb25mbGljdCByZXBvcnRlZCBpbiBjaGVja19jb2xsaXNpb25zKCkgYW5kIHJlbW92ZQorICogaXQgZnJvbSB0aGUgc2Vjb25kIG5hbWUsIHVubGVzcyB0aGF0IGhhcHBlbnMgdG8gYmUgdGhlIGxhc3QgYWxpYXMuCisgKi8KK3N0YXRpYyBib29sCityZW1vdmVfY29sbGlzaW9uKGNoYXIgKm4xLCBjaGFyICpuMikKK3sKKyAgICBjaGFyICpwMiA9IG4yOworICAgIGNoYXIgKnBzdGFydCwgKnFzdGFydCwgKnBlbmQsICpxZW5kOworICAgIGJvb2wgcmVtb3ZlZCA9IEZBTFNFOworCisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUCAmJiBOQ1VSU0VTX1hOQU1FUworICAgIGlmICgoX25jX3N5bnRheCA9PSBTWU5fVEVSTUNBUCkgJiYgX25jX3VzZXJfZGVmaW5hYmxlKSB7CisJbjEgPSBza2lwX2luZGV4KG4xKTsKKwlwMiA9IG4yID0gc2tpcF9pbmRleChuMik7CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKHBzdGFydCA9IG4xOyAocGVuZCA9IG5hbWVfZW5kaW5nKHBzdGFydCkpOyBwc3RhcnQgPSBuZXh0X25hbWUocGVuZCkpIHsKKwlmb3IgKHFzdGFydCA9IG4yOyAocWVuZCA9IG5hbWVfZW5kaW5nKHFzdGFydCkpOyBxc3RhcnQgPSBuZXh0X25hbWUocWVuZCkpIHsKKwkgICAgaWYgKChwZW5kIC0gcHN0YXJ0ID09IHFlbmQgLSBxc3RhcnQpCisJCSYmIG1lbWNtcChwc3RhcnQsIHFzdGFydCwgKHNpemVfdCkgKHBlbmQgLSBwc3RhcnQpKSA9PSAwKSB7CisJCWlmIChxc3RhcnQgIT0gcDIgfHwgKnFlbmQgPT0gJ3wnKSB7CisJCSAgICBpZiAoKnFlbmQgPT0gJ3wnKQorCQkJKytxZW5kOworCQkgICAgd2hpbGUgKCgqcXN0YXJ0KysgPSAqcWVuZCsrKSAhPSAnXDAnKSA7CisJCSAgICBmcHJpbnRmKHN0ZGVyciwgIi4uLm5vd1x0JXNcbiIsIHAyKTsKKwkJfSBlbHNlIHsKKwkJICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IHJlbW92ZSBhbGlhcyAnJS4qcydcbiIsCisJCQkgICAgKGludCkgKHFlbmQgLSBxc3RhcnQpLCBxc3RhcnQpOworCQl9CisJCXJlbW92ZWQgPSBUUlVFOworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICByZXR1cm4gcmVtb3ZlZDsKK30KKworLyogZG8gYW55IG9mIHRoZSBhbGlhc2VzIGluIGEgcGFpciBvZiB0ZXJtaW5hbCBuYW1lcyBtYXRjaD8gKi8KK05DVVJTRVNfRVhQT1JUKGJvb2wpCitfbmNfZW50cnlfbWF0Y2goY2hhciAqbjEsIGNoYXIgKm4yKQoreworICAgIHJldHVybiBjaGVja19jb2xsaXNpb25zKG4xLCBuMiwgMCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRW50cnkgY29tcGlsZXIgYW5kIHJlc29sdXRpb24gbG9naWMKQEAgLTE5NywxOSArMjg3LDE5IEBACiAKIAlmb3JfZW50cnlfbGlzdChycCkgewogCSAgICBpZiAocXAgPiBycAotCQkmJiBfbmNfZW50cnlfbWF0Y2gocXAtPnR0ZXJtLnRlcm1fbmFtZXMsIHJwLT50dGVybS50ZXJtX25hbWVzKSkgewotCQltYXRjaGNvdW50Kys7Ci0JCWlmIChtYXRjaGNvdW50ID09IDEpIHsKLQkJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIk5hbWUgY29sbGlzaW9uIGJldHdlZW4gJXMiLAotCQkJCSAgIF9uY19maXJzdF9uYW1lKHFwLT50dGVybS50ZXJtX25hbWVzKSk7Ci0JCSAgICBtdWx0aXBsZXMrKzsKKwkJJiYgY2hlY2tfY29sbGlzaW9ucyhxcC0+dHRlcm0udGVybV9uYW1lcywKKwkJCQkgICAgcnAtPnR0ZXJtLnRlcm1fbmFtZXMsCisJCQkJICAgIG1hdGNoY291bnQgKyAxKSkgeworCQlpZiAoIW1hdGNoY291bnQrKykgeworCQkgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLCAiXHQlc1xuIiwgcnAtPnR0ZXJtLnRlcm1fbmFtZXMpOwogCQl9Ci0JCWlmIChtYXRjaGNvdW50ID49IDEpCi0JCSAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICIgJXMiLCBfbmNfZmlyc3RfbmFtZShycC0+dHRlcm0udGVybV9uYW1lcykpOworCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJhbmRcdCVzXG4iLCBxcC0+dHRlcm0udGVybV9uYW1lcyk7CisJCWlmICghcmVtb3ZlX2NvbGxpc2lvbihycC0+dHRlcm0udGVybV9uYW1lcywKKwkJCQkgICAgICBxcC0+dHRlcm0udGVybV9uYW1lcykpIHsKKwkJICAgICsrbXVsdGlwbGVzOworCQl9CiAJICAgIH0KIAl9Ci0JaWYgKG1hdGNoY291bnQgPj0gMSkKLQkgICAgKHZvaWQpIHB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICB9CiAgICAgaWYgKG11bHRpcGxlcyA+IDApCiAJcmV0dXJuIChGQUxTRSk7CkBAIC0yNTUsOSArMzQ1LDcgQEAKIAkJICAgIERFQlVHKDIsICgiJXM6IHJlc29sdmluZyB1c2U9JXMgKGNvbXBpbGVkKSIsCiAJCQkgICAgICBjaGlsZCwgbG9va2ZvcikpOwogCi0JCSAgICBycCA9IHR5cGVNYWxsb2MoRU5UUlksIDEpOwotCQkgICAgaWYgKHJwID09IDApCi0JCQlfbmNfZXJyX2Fib3J0KE1TR19OT19NRU1PUlkpOworCQkgICAgVFlQRV9NQUxMT0MoRU5UUlksIDEsIHJwKTsKIAkJICAgIHJwLT50dGVybSA9IHRoaXN0ZXJtOwogCQkgICAgcnAtPm51c2VzID0gMDsKIAkJICAgIHJwLT5uZXh0ID0gbGFzdHJlYWQ7CkBAIC0yNzMsNyArMzYxLDcgQEAKIAkJdW5yZXNvbHZlZCsrOwogCQl0b3RhbF91bnJlc29sdmVkKys7CiAKLQkJX25jX2N1cnJfbGluZSA9IGxvb2tsaW5lOworCQlfbmNfY3Vycl9saW5lID0gKGludCkgbG9va2xpbmU7CiAJCV9uY193YXJuaW5nKCJyZXNvbHV0aW9uIG9mIHVzZT0lcyBmYWlsZWQiLCBsb29rZm9yKTsKIAkJcXAtPnVzZXNbaV0ubGluayA9IDA7CiAJICAgIH0KQEAgLTM3NSw5ICs0NjMsMzYgQEAKIAlpZiAoX25jX2NoZWNrX3Rlcm10eXBlICE9IDApIHsKIAkgICAgX25jX2N1cnJfY29sID0gLTE7CiAJICAgIGZvcl9lbnRyeV9saXN0KHFwKSB7Ci0JCV9uY19jdXJyX2xpbmUgPSBxcC0+c3RhcnRsaW5lOworCQlfbmNfY3Vycl9saW5lID0gKGludCkgcXAtPnN0YXJ0bGluZTsKIAkJX25jX3NldF90eXBlKF9uY19maXJzdF9uYW1lKHFwLT50dGVybS50ZXJtX25hbWVzKSk7Ci0JCV9uY19jaGVja190ZXJtdHlwZTIoJnFwLT50dGVybSwgbGl0ZXJhbCk7CisJCS8qCisJCSAqIHRpYyBvdmVycmlkZXMgdGhpcyBmdW5jdGlvbiBwb2ludGVyIHRvIHByb3ZpZGUgbW9yZSB2ZXJib3NlCisJCSAqIGNoZWNraW5nLgorCQkgKi8KKwkJaWYgKF9uY19jaGVja190ZXJtdHlwZTIgIT0gc2FuaXR5X2NoZWNrMikgeworCQkgICAgU0NSRUVOICpzYXZlX1NQID0gU1A7CisJCSAgICBTQ1JFRU4gZmFrZV9zcDsKKwkJICAgIFRFUk1JTkFMIGZha2VfdG07CisJCSAgICBURVJNSU5BTCAqc2F2ZV90bSA9IGN1cl90ZXJtOworCisJCSAgICAvKgorCQkgICAgICogU2V0dXAgc28gdGhhdCB0aWMgY2FuIHVzZSBvcmRpbmFyeSB0ZXJtaW5mbyBpbnRlcmZhY2UKKwkJICAgICAqIHRvIG9idGFpbiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uLgorCQkgICAgICovCisJCSAgICBtZW1zZXQoJmZha2Vfc3AsIDAsIHNpemVvZihmYWtlX3NwKSk7CisJCSAgICBtZW1zZXQoJmZha2VfdG0sIDAsIHNpemVvZihmYWtlX3RtKSk7CisJCSAgICBmYWtlX3NwLl90ZXJtID0gJmZha2VfdG07CisJCSAgICBmYWtlX3RtLnR5cGUgPSBxcC0+dHRlcm07CisJCSAgICBfbmNfc2V0X3NjcmVlbigmZmFrZV9zcCk7CisJCSAgICBzZXRfY3VydGVybSgmZmFrZV90bSk7CisKKwkJICAgIF9uY19jaGVja190ZXJtdHlwZTIoJnFwLT50dGVybSwgbGl0ZXJhbCk7CisKKwkJICAgIF9uY19zZXRfc2NyZWVuKHNhdmVfU1ApOworCQkgICAgc2V0X2N1cnRlcm0oc2F2ZV90bSk7CisJCX0gZWxzZSB7CisJCSAgICBmaXh1cF9hY3NjKCZxcC0+dHRlcm0sIGxpdGVyYWwpOworCQl9CiAJICAgIH0KIAkgICAgREVCVUcoMiwgKCJTQU5JVFkgQ0hFQ0sgRklOSVNIRUQiKSk7CiAJfQpAQCAtNDAyLDYgKzUxNywxNyBAQAogI2RlZmluZSBDVVIgdHAtPgogCiBzdGF0aWMgdm9pZAorZml4dXBfYWNzYyhURVJNVFlQRSAqdHAsIGludCBsaXRlcmFsKQoreworICAgIGlmICghbGl0ZXJhbCkgeworCWlmIChhY3NfY2hhcnMgPT0gMAorCSAgICAmJiBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICE9IDAKKwkgICAgJiYgZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApCisJICAgIGFjc19jaGFycyA9IHN0cmR1cChWVF9BQ1NDKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCiBzYW5pdHlfY2hlY2syKFRFUk1UWVBFICp0cCwgYm9vbCBsaXRlcmFsKQogewogICAgIGlmICghUFJFU0VOVChleGl0X2F0dHJpYnV0ZV9tb2RlKSkgewpAQCAtNDIxLDE2ICs1NDcsMTQgQEAKICNlbmRpZiAvKiBfX1VOVVNFRF9fICovCiAJUEFJUkVEKGVudGVyX3N0YW5kb3V0X21vZGUsIGV4aXRfc3RhbmRvdXRfbW9kZSk7CiAJUEFJUkVEKGVudGVyX3VuZGVybGluZV9tb2RlLCBleGl0X3VuZGVybGluZV9tb2RlKTsKKwlQQUlSRUQoZW50ZXJfaXRhbGljc19tb2RlLCBleGl0X2l0YWxpY3NfbW9kZSk7CiAgICAgfQogCiAgICAgLyogd2UgZG8gdGhpcyBjaGVjay9maXggaW4gcG9zdHByb2Nlc3NfdGVybWNhcCgpLCBidXQgc29tZSBwYWNrYWdlcnMKICAgICAgKiBwcmVmZXIgdG8gYnlwYXNzIGl0Li4uCiAgICAgICovCiAgICAgaWYgKCFsaXRlcmFsKSB7Ci0JaWYgKGFjc19jaGFycyA9PSAwCi0JICAgICYmIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgIT0gMAotCSAgICAmJiBleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkKLQkgICAgYWNzX2NoYXJzID0gc3RyZHVwKFZUX0FDU0MpOworCWZpeHVwX2Fjc2ModHAsIGxpdGVyYWwpOwogCUFORE1JU1NJTkcoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSwgYWNzX2NoYXJzKTsKIAlBTkRNSVNTSU5HKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSwgYWNzX2NoYXJzKTsKICAgICB9CkBAIC00NzMsNyArNTk3LDYgQEAKIHsKICAgICBfbmNfYWxsb2NfZW50cnlfbGVha3MoKTsKICAgICBfbmNfY2FwdG9pbmZvX2xlYWtzKCk7Ci0gICAgX25jX2NvbXBfY2FwdGFiX2xlYWtzKCk7CiAgICAgX25jX2NvbXBfc2Nhbl9sZWFrcygpOwogI2lmIEJST0tFTl9MSU5LRVIgfHwgVVNFX1JFRU5UUkFOVAogICAgIF9uY19uYW1lc19sZWFrcygpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYyBiL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKaW5kZXggNWFkNzUwZi4uZmU2ZThlNyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYworKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDgsMTAgKzQ4LDkgQEAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAjaW5jbHVkZSA8dGljLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBjb21wX3NjYW4uYyx2IDEuODMgMjAwOC8wOC8xNiAxOToyMjo1NSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGNvbXBfc2Nhbi5jLHYgMS4xMDIgMjAxMy8xMS8xNiAxOTo1Nzo1MCB0b20gRXhwICQiKQogCiAvKgogICogTWF4aW11bSBsZW5ndGggb2Ygc3RyaW5nIGNhcGFiaWxpdHkgd2UnbGwgYWNjZXB0IGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLgpAQCAtNjEsMTkgKzYwLDE0IEBACiAKICNkZWZpbmUgaXN3aGl0ZShjaCkJKGNoID09ICcgJyAgfHwgIGNoID09ICdcdCcpCiAKLU5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpCi1fbmNfc3ludGF4ID0gMDsJCQkvKiB0ZXJtY2FwIG9yIHRlcm1pbmZvPyAqLwotTkNVUlNFU19FWFBPUlRfVkFSKGxvbmcpCi1fbmNfY3Vycl9maWxlX3BvcyA9IDA7CQkvKiBmaWxlIG9mZnNldCBvZiBjdXJyZW50IGxpbmUgKi8KLU5DVVJTRVNfRVhQT1JUX1ZBUihsb25nKQotX25jX2NvbW1lbnRfc3RhcnQgPSAwOwkJLyogc3RhcnQgb2YgY29tbWVudCByYW5nZSBiZWZvcmUgbmFtZSAqLwotTkNVUlNFU19FWFBPUlRfVkFSKGxvbmcpCi1fbmNfY29tbWVudF9lbmQgPSAwOwkJLyogZW5kIG9mIGNvbW1lbnQgcmFuZ2UgYmVmb3JlIG5hbWUgKi8KLU5DVVJTRVNfRVhQT1JUX1ZBUihsb25nKQotX25jX3N0YXJ0X2xpbmUgPSAwOwkJLyogc3RhcnQgbGluZSBvZiBjdXJyZW50IGVudHJ5ICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGludCkgX25jX3N5bnRheCA9IDA7ICAgICAgICAgLyogdGVybWNhcCBvciB0ZXJtaW5mbz8gKi8KK05DVVJTRVNfRVhQT1JUX1ZBUiAoaW50KSBfbmNfc3RyaWN0X2JzZCA9IDE7ICAvKiBuY3Vyc2VzIGV4dGVuZGVkIHRlcm1jYXA/ICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGxvbmcpIF9uY19jdXJyX2ZpbGVfcG9zID0gMDsgLyogZmlsZSBvZmZzZXQgb2YgY3VycmVudCBsaW5lICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGxvbmcpIF9uY19jb21tZW50X3N0YXJ0ID0gMDsgLyogc3RhcnQgb2YgY29tbWVudCByYW5nZSBiZWZvcmUgbmFtZSAqLworTkNVUlNFU19FWFBPUlRfVkFSIChsb25nKSBfbmNfY29tbWVudF9lbmQgPSAwOyAgIC8qIGVuZCBvZiBjb21tZW50IHJhbmdlIGJlZm9yZSBuYW1lICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGxvbmcpIF9uY19zdGFydF9saW5lID0gMDsgICAgLyogc3RhcnQgbGluZSBvZiBjdXJyZW50IGVudHJ5ICovCiAKLU5DVVJTRVNfRVhQT1JUX1ZBUihzdHJ1Y3QgdG9rZW4pCi1fbmNfY3Vycl90b2tlbiA9CitOQ1VSU0VTX0VYUE9SVF9WQVIgKHN0cnVjdCB0b2tlbikgX25jX2N1cnJfdG9rZW4gPQogewogICAgIDAsIDAsIDAKIH07CkBAIC05MSw4ICs4NSw3IEBACiBzdGF0aWMgY2hhciAqcHVzaG5hbWU7CiAKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotTkNVUlNFU19FWFBPUlRfVkFSKGJvb2wpCi1fbmNfZGlzYWJsZV9wZXJpb2QgPSBGQUxTRTsJLyogdXNlZCBieSB0aWMgLWEgb3B0aW9uICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGJvb2wpIF9uY19kaXNhYmxlX3BlcmlvZCA9IEZBTFNFOyAvKiB1c2VkIGJ5IHRpYyAtYSBvcHRpb24gKi8KICNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEzNSwxNCArMTI4LDE5IEBACiAgKglSZXR1cm5zIHRoZSBmaW5hbCBub25ibGFuayBjaGFyYWN0ZXIgb24gdGhlIGN1cnJlbnQgaW5wdXQgYnVmZmVyCiAgKi8KIHN0YXRpYyBpbnQKLWxhc3RfY2hhcih2b2lkKQorbGFzdF9jaGFyKGludCBmcm9tX2VuZCkKIHsKICAgICBzaXplX3QgbGVuID0gc3RybGVuKGJ1ZnB0cik7CisgICAgaW50IHJlc3VsdCA9IDA7CisKICAgICB3aGlsZSAobGVuLS0pIHsKLQlpZiAoIWlzc3BhY2UoVUNoYXIoYnVmcHRyW2xlbl0pKSkKLQkgICAgcmV0dXJuIGJ1ZnB0cltsZW5dOworCWlmICghaXNzcGFjZShVQ2hhcihidWZwdHJbbGVuXSkpKSB7CisJICAgIGlmIChmcm9tX2VuZCA8IChpbnQpIGxlbikKKwkJcmVzdWx0ID0gYnVmcHRyWyhpbnQpIGxlbiAtIGZyb21fZW5kXTsKKwkgICAgYnJlYWs7CisJfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKgpAQCAtMjAzLDcgKzIwMSw4IEBACiAJCSAgICByZXN1bHQgPSB0eXBlUmVhbGxvYyhjaGFyLCBhbGxvY2F0ZWQsIHJlc3VsdCk7CiAJCSAgICBpZiAocmVzdWx0ID09IDApCiAJCQlyZXR1cm4gKEVPRik7Ci0JCSAgICBidWZzdGFydCA9IHJlc3VsdDsKKwkJICAgIGlmIChidWZzdGFydCkKKwkJCWJ1ZnN0YXJ0ID0gcmVzdWx0OwogCQl9CiAJCWlmICh1c2VkID09IDApCiAJCSAgICBfbmNfY3Vycl9maWxlX3BvcyA9IGZ0ZWxsKHl5aW4pOwpAQCAtMjExLDEyICsyMTAsMTYgQEAKIAkJaWYgKGZnZXRzKHJlc3VsdCArIHVzZWQsIChpbnQpIChhbGxvY2F0ZWQgLSB1c2VkKSwgeXlpbikgIT0gMCkgewogCQkgICAgYnVmc3RhcnQgPSByZXN1bHQ7CiAJCSAgICBpZiAodXNlZCA9PSAwKSB7CisJCQlpZiAoX25jX2N1cnJfbGluZSA9PSAwCisJCQkgICAgJiYgSVNfVElDX01BR0lDKHJlc3VsdCkpIHsKKwkJCSAgICBfbmNfZXJyX2Fib3J0KCJUaGlzIGlzIGEgY29tcGlsZWQgdGVybWluYWwgZGVzY3JpcHRpb24sIG5vdCBhIHNvdXJjZSIpOworCQkJfQogCQkJX25jX2N1cnJfbGluZSsrOwogCQkJX25jX2N1cnJfY29sID0gMDsKIAkJICAgIH0KIAkJfSBlbHNlIHsKIAkJICAgIGlmICh1c2VkICE9IDApCi0JCQlzdHJjYXQocmVzdWx0LCAiXG4iKTsKKwkJCV9uY19TVFJDQVQocmVzdWx0LCAiXG4iLCBhbGxvY2F0ZWQpOwogCQl9CiAJCWlmICgoYnVmcHRyID0gYnVmc3RhcnQpICE9IDApIHsKIAkJICAgIHVzZWQgPSBzdHJsZW4oYnVmcHRyKTsKQEAgLTI2MCwxMiArMjYzLDEyIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1wdXNoX2JhY2soY2hhciBjKQorcHVzaF9iYWNrKGludCBjKQogLyogcHVzaCBhIGNoYXJhY3RlciBiYWNrIG9udG8gdGhlIGlucHV0IHN0cmVhbSAqLwogewogICAgIGlmIChidWZwdHIgPT0gYnVmc3RhcnQpCiAJX25jX3N5c2Vycl9hYm9ydCgiQ2FuJ3QgYmFja3NwYWNlIG9mZiBiZWdpbm5pbmcgb2YgbGluZSIpOwotICAgICotLWJ1ZnB0ciA9IGM7CisgICAgKi0tYnVmcHRyID0gKGNoYXIpIGM7CiAgICAgX25jX2N1cnJfY29sLS07CiB9CiAKQEAgLTMwMyw2ICszMDYsOCBAQAogCSp0b2tfcHRyKysgPSAoY2hhcikgY2g7IFwKIAkqdG9rX3B0ciA9ICdcMCcKIAorc3RhdGljIGNoYXIgKnRva19idWY7CisKIC8qCiAgKglpbnQKICAqCWdldF90b2tlbigpCkBAIC0zNDAsMTUgKzM0NSwxNCBAQAogX25jX2dldF90b2tlbihib29sIHNpbGVudCkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciB0ZXJtaW5mb19wdW5jdFtdID0gIkAlJiohIyI7Ci0gICAgc3RhdGljIGNoYXIgKnRva19idWY7CiAKLSAgICBjaGFyICphZnRlcl9saXN0OwotICAgIGNoYXIgKmFmdGVyX25hbWU7CisgICAgY2hhciAqYWZ0ZXJfbmFtZTsJCS8qIGFmdGVyIHByaW1hcnkgbmFtZSAqLworICAgIGNoYXIgKmFmdGVyX2xpc3Q7CQkvKiBhZnRlciBwcmltYXJ5IGFuZCBhbGlhcyBsaXN0ICovCiAgICAgY2hhciAqbnVtY2hrOwogICAgIGNoYXIgKnRva19wdHI7CiAgICAgY2hhciAqczsKICAgICBjaGFyIG51bWJ1Zls4MF07Ci0gICAgaW50IGNoOworICAgIGludCBjaCwgYzAsIGMxOwogICAgIGludCBkb3RfZmxhZyA9IEZBTFNFOwogICAgIGludCB0eXBlOwogICAgIGxvbmcgbnVtYmVyOwpAQCAtMzc2LDExICszODAsMTAgQEAKIAogICAgIGlmIChlbmRfb2Zfc3RyZWFtKCkpIHsKIAl5eWluID0gMDsKLQluZXh0X2NoYXIoKTsJCS8qIGZyZWVzIGl0cyBhbGxvY2F0ZWQgbWVtb3J5ICovCisJKHZvaWQpIG5leHRfY2hhcigpOwkvKiBmcmVlcyBpdHMgYWxsb2NhdGVkIG1lbW9yeSAqLwogCWlmICh0b2tfYnVmICE9IDApIHsKIAkgICAgaWYgKF9uY19jdXJyX3Rva2VuLnRrX25hbWUgPT0gdG9rX2J1ZikKIAkJX25jX2N1cnJfdG9rZW4udGtfbmFtZSA9IDA7Ci0JICAgIEZyZWVBbmROdWxsKHRva19idWYpOwogCX0KIAlyZXR1cm4gKEVPRik7CiAgICAgfQpAQCAtMzk0LDYgKzM5Nyw3IEBACiAgICAgfQogCiAgICAgY2ggPSBlYXRfZXNjYXBlZF9uZXdsaW5lKGNoKTsKKyAgICBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcgPSAwOwogCiAjaWZkZWYgVFJBQ0UKICAgICBvbGRfbGluZSA9IF9uY19jdXJyX2xpbmU7CkBAIC00MjgsMTAgKzQzMiwxMCBAQAogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiAJICAgICYmICEoY2ggPT0gJy4nICYmIF9uY19kaXNhYmxlX3BlcmlvZCkKICNlbmRpZgotCSAgICAmJiAhc3RyY2hyKHRlcm1pbmZvX3B1bmN0LCAoY2hhcikgY2gpKSB7CisJICAgICYmICgoc3RyY2hyKSAodGVybWluZm9fcHVuY3QsIChjaGFyKSBjaCkgPT0gMCkpIHsKIAkgICAgaWYgKCFzaWxlbnQpCiAJCV9uY193YXJuaW5nKCJJbGxlZ2FsIGNoYXJhY3RlciAoZXhwZWN0ZWQgYWxwaGFudW1lcmljIG9yICVzKSAtICclcyciLAotCQkJICAgIHRlcm1pbmZvX3B1bmN0LCB1bmN0cmwoKGNodHlwZSkgY2gpKTsKKwkJCSAgICB0ZXJtaW5mb19wdW5jdCwgdW5jdHJsKFVDaGFyKGNoKSkpOwogCSAgICBfbmNfcGFuaWNfbW9kZShzZXBhcmF0b3IpOwogCSAgICBnb3RvIHN0YXJ0X3Rva2VuOwogCX0KQEAgLTQ2MSw3ICs0NjUsNyBAQAogCQkgICAgYWZ0ZXJfbGlzdCA9IHRva19wdHI7CiAJCSAgICBpZiAoYWZ0ZXJfbmFtZSA9PSAwKQogCQkJYWZ0ZXJfbmFtZSA9IHRva19wdHI7Ci0JCX0gZWxzZSBpZiAoY2ggPT0gJzonICYmIGxhc3RfY2hhcigpICE9ICcsJykgeworCQl9IGVsc2UgaWYgKGNoID09ICc6JyAmJiBsYXN0X2NoYXIoMCkgIT0gJywnKSB7CiAJCSAgICBfbmNfc3ludGF4ID0gU1lOX1RFUk1DQVA7CiAJCSAgICBzZXBhcmF0b3IgPSAnOic7CiAJCSAgICBicmVhazsKQEAgLTQ3NSwxOSArNDc5LDcwIEBACiAJCSAgICBpZiAoYWZ0ZXJfbmFtZSA9PSAwKQogCQkJYnJlYWs7CiAJCSAgICAvKgotCQkgICAgICogSWYgd2Ugc2VlIGEgY29tbWEsIHdlIGFzc3VtZSB0aGlzIGlzIHRlcm1pbmZvIHVubGVzcyB3ZQotCQkgICAgICogc3Vic2VxdWVudGx5IHJ1biBpbnRvIGEgY29sb24uICBCdXQgd2UgZG9uJ3Qgc3RvcAotCQkgICAgICogbG9va2luZyBmb3IgYSBjb2xvbiB1bnRpbCBoaXR0aW5nIGEgbmV3bGluZS4gIFRoaXMKLQkJICAgICAqIGFsbG93cyBjb21tYXMgdG8gYmUgZW1iZWRkZWQgaW4gZGVzY3JpcHRpb24gZmllbGRzIG9mCi0JCSAgICAgKiBlaXRoZXIgc3ludGF4LgorCQkgICAgICogV2Ugc2F3IGEgY29tbWEsIGJ1dCBhcmUgbm90IGVudGlyZWx5IHN1cmUgdGhpcyBpcworCQkgICAgICogdGVybWluZm8gZm9ybWF0LCBzaW5jZSB3ZSBjYW4gc3RpbGwgYmUgcGFyc2luZyB0aGUKKwkJICAgICAqIGRlc2NyaXB0aW9uIGZpZWxkIChmb3IgZWl0aGVyIHN5bnRheCkuCisJCSAgICAgKgorCQkgICAgICogQSBwcm9wZXJseSBmb3JtYXR0ZWQgdGVybWNhcCBsaW5lIGVuZHMgd2l0aCBlaXRoZXIgYQorCQkgICAgICogY29sb24sIG9yIGEgYmFja3NsYXNoIGFmdGVyIGEgY29sb24uICBJdCBpcyBwb3NzaWJsZQorCQkgICAgICogdG8gaGF2ZSBhIGJhY2tzbGFzaCBpbiB0aGUgbWlkZGxlIG9mIGEgY2FwYWJpbGl0eSwgYnV0CisJCSAgICAgKiB0aGVuIHRoZXJlIHdvdWxkIGJlIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBvbiB0aGUgbmV4dAorCQkgICAgICogbGluZSAtIHNvbWV0aGluZyB3ZSB3YW50IHRvIGRpc2NvdXJhZ2UuCiAJCSAgICAgKi8KKwkJICAgIGMwID0gbGFzdF9jaGFyKDApOworCQkgICAgYzEgPSBsYXN0X2NoYXIoMSk7CisJCSAgICBpZiAoYzEgIT0gJzonICYmIGMwICE9ICdcXCcgJiYgYzAgIT0gJzonKSB7CisJCQlib29sIGNhcGFiaWxpdHkgPSBGQUxTRTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIGl0IGlzIG5vdCB0ZXJtY2FwLCBhc3N1bWUgdGhlIGxpbmUgaXMgdGVybWluZm8KKwkJCSAqIGZvcm1hdC4gIEhvd2V2ZXIsIHRoZSBjb21tYSBjYW4gYmUgZW1iZWRkZWQgaW4gYQorCQkJICogZGVzY3JpcHRpb24gZmllbGQuICBJdCBhbHNvIGNhbiBiZSBhIHNlcGFyYXRvcgorCQkJICogYmV0d2VlbiBhIGRlc2NyaXB0aW9uIGZpZWxkIGFuZCBhIGNhcGFiaWxpdHkuCisJCQkgKgorCQkJICogSW1wcm92ZSB0aGUgZ3Vlc3MgYnkgY2hlY2tpbmcgaWYgdGhlIG5leHQgd29yZCBhZnRlcgorCQkJICogdGhlIGNvbW1hIGRvZXMgbm90IGxvb2sgbGlrZSBhIGNhcGFiaWxpdHkuICBJbiB0aGF0CisJCQkgKiBjYXNlLCBleHRlbmQgdGhlIGRlc2NyaXB0aW9uIHBhc3QgdGhlIGNvbW1hLgorCQkJICovCisJCQlmb3IgKHMgPSBidWZwdHI7IGlzc3BhY2UoVUNoYXIoKnMpKTsgKytzKSB7CisJCQkgICAgOworCQkJfQorCQkJaWYgKGlzbG93ZXIoVUNoYXIoKnMpKSkgeworCQkJICAgIGNoYXIgKm5hbWUgPSBzOworCQkJICAgIHdoaWxlIChpc2FsbnVtKFVDaGFyKCpzKSkpIHsKKwkJCQkrK3M7CisJCQkgICAgfQorCQkJICAgIGlmICgqcyA9PSAnIycgfHwgKnMgPT0gJz0nIHx8ICpzID09ICdAJykgeworCQkJCS8qCisJCQkJICogQ2hlY2tpbmcgc29sZWx5IHdpdGggc3ludGF4IGFsbG93cyB1cyB0bworCQkJCSAqIHN1cHBvcnQgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIHdpdGggc3RyaW5nCisJCQkJICogdmFsdWVzLgorCQkJCSAqLworCQkJCWNhcGFiaWxpdHkgPSBUUlVFOworCQkJICAgIH0gZWxzZSBpZiAoKnMgPT0gJywnKSB7CisJCQkJYzAgPSAqczsKKwkJCQkqcyA9ICdcMCc7CisJCQkJLyoKKwkJCQkgKiBPdGhlcndpc2UsIHdlIGNhbiBoYW5kbGUgcHJlZGVmaW5lZCBib29sZWFuCisJCQkJICogY2FwYWJpbGl0aWVzLCBzdGlsbCBhaWRlZCBieSBzeW50YXguCisJCQkJICovCisJCQkJaWYgKF9uY19maW5kX2VudHJ5KG5hbWUsCisJCQkJCQkgICBfbmNfZ2V0X2hhc2hfdGFibGUoRkFMU0UpKSkgeworCQkJCSAgICBjYXBhYmlsaXR5ID0gVFJVRTsKKwkJCQl9CisJCQkJKnMgPSAoY2hhcikgYzA7CisJCQkgICAgfQorCQkJfQorCQkJaWYgKGNhcGFiaWxpdHkpIHsKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJICAgIH0KIAkJfSBlbHNlCiAJCSAgICBjaCA9IGVhdF9lc2NhcGVkX25ld2xpbmUoY2gpOwogCiAJCWlmIChPa1RvQWRkKCkpIHsKIAkJICAgIEFkZENoKGNoKTsKIAkJfSBlbHNlIHsKLQkJICAgIGNoID0gRU9GOwogCQkgICAgYnJlYWs7CiAJCX0KIAkgICAgfQpAQCAtNTk2LDcgKzY1MSw3IEBACiAJICAgIGNhc2UgJ0AnOgogCQlpZiAoKGNoID0gbmV4dF9jaGFyKCkpICE9IHNlcGFyYXRvciAmJiAhc2lsZW50KQogCQkgICAgX25jX3dhcm5pbmcoIk1pc3Npbmcgc2VwYXJhdG9yIGFmdGVyIGAlcycsIGhhdmUgJXMiLAotCQkJCXRva19idWYsIHVuY3RybCgoY2h0eXBlKSBjaCkpOworCQkJCXRva19idWYsIHVuY3RybChVQ2hhcihjaCkpKTsKIAkJX25jX2N1cnJfdG9rZW4udGtfbmFtZSA9IHRva19idWY7CiAJCXR5cGUgPSBDQU5DRUw7CiAJCWJyZWFrOwpAQCAtNjE3LDcgKzY3Miw3IEBACiAJCQlfbmNfd2FybmluZygiTWlzc2luZyBzZXBhcmF0b3IiKTsKIAkJfQogCQlfbmNfY3Vycl90b2tlbi50a19uYW1lID0gdG9rX2J1ZjsKLQkJX25jX2N1cnJfdG9rZW4udGtfdmFsbnVtYmVyID0gbnVtYmVyOworCQlfbmNfY3Vycl90b2tlbi50a192YWxudW1iZXIgPSAoaW50KSBudW1iZXI7CiAJCXR5cGUgPSBOVU1CRVI7CiAJCWJyZWFrOwogCkBAIC02MzcsNyArNjkyLDcgQEAKIAkJLyoganVzdCB0byBnZXQgcmlkIG9mIHRoZSBjb21waWxlciB3YXJuaW5nICovCiAJCXR5cGUgPSBVTkRFRjsKIAkJaWYgKCFzaWxlbnQpCi0JCSAgICBfbmNfd2FybmluZygiSWxsZWdhbCBjaGFyYWN0ZXIgLSAnJXMnIiwgdW5jdHJsKChjaHR5cGUpIGNoKSk7CisJCSAgICBfbmNfd2FybmluZygiSWxsZWdhbCBjaGFyYWN0ZXIgLSAnJXMnIiwgdW5jdHJsKFVDaGFyKGNoKSkpOwogCSAgICB9CiAJfQkJCS8qIGVuZCBlbHNlIChmaXJzdF9jb2x1bW4gPT0gRkFMU0UpICovCiAgICAgfQkJCQkvKiBlbmQgZWxzZSAoY2ggIT0gRU9GKSAqLwpAQCAtNzMwLDU3ICs3ODUsNjIgQEAKICAgICBpbnQgY291bnQgPSAwOwogICAgIGludCBudW1iZXIgPSAwOwogICAgIGludCBpLCBjOwotICAgIGNodHlwZSBjaCwgbGFzdF9jaCA9ICdcMCc7CisgICAgaW50IGxhc3RfY2ggPSAnXDAnOwogICAgIGJvb2wgaWdub3JlZCA9IEZBTFNFOwogICAgIGJvb2wgbG9uZ193YXJuaW5nID0gRkFMU0U7CiAKLSAgICB3aGlsZSAoKGNoID0gYyA9IG5leHRfY2hhcigpKSAhPSAoY2h0eXBlKSBzZXBhcmF0b3IgJiYgYyAhPSBFT0YpIHsKKyAgICB3aGlsZSAoKGMgPSBuZXh0X2NoYXIoKSkgIT0gc2VwYXJhdG9yICYmIGMgIT0gRU9GKSB7CiAJaWYgKHB0ciA+PSAobGFzdCAtIDEpKSB7CiAJICAgIGlmIChjICE9IEVPRikgewogCQl3aGlsZSAoKGMgPSBuZXh0X2NoYXIoKSkgIT0gc2VwYXJhdG9yICYmIGMgIT0gRU9GKSB7CiAJCSAgICA7CiAJCX0KLQkJY2ggPSBjOwogCSAgICB9CiAJICAgIGJyZWFrOwogCX0KIAlpZiAoKF9uY19zeW50YXggPT0gU1lOX1RFUk1DQVApICYmIGMgPT0gJ1xuJykKIAkgICAgYnJlYWs7Ci0JaWYgKGNoID09ICdeJyAmJiBsYXN0X2NoICE9ICclJykgewotCSAgICBjaCA9IGMgPSBuZXh0X2NoYXIoKTsKKwlpZiAoYyA9PSAnXicgJiYgbGFzdF9jaCAhPSAnJScpIHsKKwkgICAgYyA9IG5leHRfY2hhcigpOwogCSAgICBpZiAoYyA9PSBFT0YpCiAJCV9uY19lcnJfYWJvcnQoTVNHX05PX0lOUFVUUyk7CiAKLQkgICAgaWYgKCEoaXM3Yml0cyhjaCkgJiYgaXNwcmludChjaCkpKSB7Ci0JCV9uY193YXJuaW5nKCJJbGxlZ2FsIF4gY2hhcmFjdGVyIC0gJyVzJyIsIHVuY3RybChjaCkpOworCSAgICBpZiAoIShpczdiaXRzKGMpICYmIGlzcHJpbnQoYykpKSB7CisJCV9uY193YXJuaW5nKCJJbGxlZ2FsIF4gY2hhcmFjdGVyIC0gJyVzJyIsIHVuY3RybChVQ2hhcihjKSkpOwogCSAgICB9Ci0JICAgIGlmIChjaCA9PSAnPycpIHsKKwkgICAgaWYgKGMgPT0gJz8nICYmIChfbmNfc3ludGF4ICE9IFNZTl9URVJNQ0FQKSkgewogCQkqKHB0cisrKSA9ICdcMTc3JzsKIAkJaWYgKF9uY190cmFjaW5nKQogCQkgICAgX25jX3dhcm5pbmcoIkFsbG93IF4/IGFzIHN5bm9ueW0gZm9yIFxcMTc3Iik7CiAJICAgIH0gZWxzZSB7Ci0JCWlmICgoY2ggJj0gMDM3KSA9PSAwKQotCQkgICAgY2ggPSAxMjg7Ci0JCSoocHRyKyspID0gKGNoYXIpIChjaCk7CisJCWlmICgoYyAmPSAwMzcpID09IDApCisJCSAgICBjID0gMTI4OworCQkqKHB0cisrKSA9IChjaGFyKSAoYyk7CiAJICAgIH0KLQl9IGVsc2UgaWYgKGNoID09ICdcXCcpIHsKLQkgICAgY2ggPSBjID0gbmV4dF9jaGFyKCk7CisJfSBlbHNlIGlmIChjID09ICdcXCcpIHsKKwkgICAgYm9vbCBzdHJpY3RfYnNkID0gKChfbmNfc3ludGF4ID09IFNZTl9URVJNQ0FQKSAmJiBfbmNfc3RyaWN0X2JzZCk7CisKKwkgICAgYyA9IG5leHRfY2hhcigpOwogCSAgICBpZiAoYyA9PSBFT0YpCiAJCV9uY19lcnJfYWJvcnQoTVNHX05PX0lOUFVUUyk7CiAKLQkgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnNycpIHsKLQkJbnVtYmVyID0gY2ggLSAnMCc7CisjZGVmaW5lIGlzb2N0YWwoYykgKChjKSA+PSAnMCcgJiYgKGMpIDw9ICc3JykKKworCSAgICBpZiAoaXNvY3RhbChjKSB8fCAoc3RyaWN0X2JzZCAmJiBpc2RpZ2l0KGMpKSkgeworCQludW1iZXIgPSBjIC0gJzAnOwogCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7Ci0JCSAgICBjaCA9IGMgPSBuZXh0X2NoYXIoKTsKKwkJICAgIGMgPSBuZXh0X2NoYXIoKTsKIAkJICAgIGlmIChjID09IEVPRikKIAkJCV9uY19lcnJfYWJvcnQoTVNHX05PX0lOUFVUUyk7CiAKLQkJICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnNycpIHsKKwkJICAgIGlmICghaXNvY3RhbChjKSkgewogCQkJaWYgKGlzZGlnaXQoYykpIHsKLQkJCSAgICBfbmNfd2FybmluZygiTm9uLW9jdGFsIGRpZ2l0IGAlYycgaW4gXFwgc2VxdWVuY2UiLCBjKTsKLQkJCSAgICAvKiBhbGxvdyB0aGUgZGlnaXQ7IGl0J2xsIGRvIGxlc3MgaGFybSAqLworCQkJICAgIGlmICghc3RyaWN0X2JzZCkgeworCQkJCV9uY193YXJuaW5nKCJOb24tb2N0YWwgZGlnaXQgYCVjJyBpbiBcXCBzZXF1ZW5jZSIsIGMpOworCQkJCS8qIGFsbG93IHRoZSBkaWdpdDsgaXQnbGwgZG8gbGVzcyBoYXJtICovCisJCQkgICAgfQogCQkJfSBlbHNlIHsKLQkJCSAgICBwdXNoX2JhY2soKGNoYXIpIGMpOworCQkJICAgIHB1c2hfYmFjayhjKTsKIAkJCSAgICBicmVhazsKIAkJCX0KIAkJICAgIH0KQEAgLTc4OCwyMSArODQ4LDE2IEBACiAJCSAgICBudW1iZXIgPSBudW1iZXIgKiA4ICsgYyAtICcwJzsKIAkJfQogCi0JCWlmIChudW1iZXIgPT0gMCkKKwkJbnVtYmVyID0gVUNoYXIobnVtYmVyKTsKKwkJaWYgKG51bWJlciA9PSAwICYmICFzdHJpY3RfYnNkKQogCQkgICAgbnVtYmVyID0gMDIwMDsKIAkJKihwdHIrKykgPSAoY2hhcikgbnVtYmVyOwogCSAgICB9IGVsc2UgewogCQlzd2l0Y2ggKGMpIHsKIAkJY2FzZSAnRSc6Ci0JCWNhc2UgJ2UnOgogCQkgICAgKihwdHIrKykgPSAnXDAzMyc7CiAJCSAgICBicmVhazsKIAotCQljYXNlICdhJzoKLQkJICAgICoocHRyKyspID0gJ1wwMDcnOwotCQkgICAgYnJlYWs7Ci0KLQkJY2FzZSAnbCc6CiAJCWNhc2UgJ24nOgogCQkgICAgKihwdHIrKykgPSAnXG4nOwogCQkgICAgYnJlYWs7CkBAIC04MTUsMTAgKzg3MCw2IEBACiAJCSAgICAqKHB0cisrKSA9ICdcMDEwJzsKIAkJICAgIGJyZWFrOwogCi0JCWNhc2UgJ3MnOgotCQkgICAgKihwdHIrKykgPSAnICc7Ci0JCSAgICBicmVhazsKLQogCQljYXNlICdmJzoKIAkJICAgICoocHRyKyspID0gJ1wwMTQnOwogCQkgICAgYnJlYWs7CkBAIC04MzksNDAgKzg5MCw1NyBAQAogCQkgICAgKihwdHIrKykgPSAnLCc7CiAJCSAgICBicmVhazsKIAotCQljYXNlICc6JzoKLQkJICAgICoocHRyKyspID0gJzonOwotCQkgICAgYnJlYWs7Ci0KIAkJY2FzZSAnXG4nOgogCQkgICAgY29udGludWU7CiAKIAkJZGVmYXVsdDoKLQkJICAgIF9uY193YXJuaW5nKCJJbGxlZ2FsIGNoYXJhY3RlciAnJXMnIGluIFxcIHNlcXVlbmNlIiwKLQkJCQl1bmN0cmwoY2gpKTsKKwkJICAgIGlmICgoX25jX3N5bnRheCA9PSBTWU5fVEVSTUlORk8pIHx8ICFfbmNfc3RyaWN0X2JzZCkgeworCQkJc3dpdGNoIChjKSB7CisJCQljYXNlICdhJzoKKwkJCSAgICBjID0gJ1wwMDcnOworCQkJICAgIGJyZWFrOworCQkJY2FzZSAnZSc6CisJCQkgICAgYyA9ICdcMDMzJzsKKwkJCSAgICBicmVhazsKKwkJCWNhc2UgJ2wnOgorCQkJICAgIGMgPSAnXG4nOworCQkJICAgIGJyZWFrOworCQkJY2FzZSAncyc6CisJCQkgICAgYyA9ICcgJzsKKwkJCSAgICBicmVhazsKKwkJCWNhc2UgJzonOgorCQkJICAgIGMgPSAnOic7CisJCQkgICAgYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJICAgIF9uY193YXJuaW5nKCJJbGxlZ2FsIGNoYXJhY3RlciAnJXMnIGluIFxcIHNlcXVlbmNlIiwKKwkJCQkJdW5jdHJsKFVDaGFyKGMpKSk7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCSAgICB9CiAJCSAgICAvKiBGQUxMVEhSVSAqLwogCQljYXNlICd8JzoKLQkJICAgICoocHRyKyspID0gKGNoYXIpIGNoOwotCQl9CQkvKiBlbmRzd2l0Y2ggKGNoKSAqLwotCSAgICB9CQkJLyogZW5kZWxzZSAoY2ggPCAnMCcgfHwgIGNoID4gJzcnKSAqLworCQkgICAgKihwdHIrKykgPSAoY2hhcikgYzsKKwkJfQkJLyogZW5kc3dpdGNoIChjKSAqLworCSAgICB9CQkJLyogZW5kZWxzZSAoYyA8ICcwJyB8fCAgYyA+ICc3JykgKi8KIAl9Ci0JLyogZW5kIGVsc2UgaWYgKGNoID09ICdcXCcpICovCi0JZWxzZSBpZiAoY2ggPT0gJ1xuJyAmJiAoX25jX3N5bnRheCA9PSBTWU5fVEVSTUlORk8pKSB7CisJLyogZW5kIGVsc2UgaWYgKGMgPT0gJ1xcJykgKi8KKwllbHNlIGlmIChjID09ICdcbicgJiYgKF9uY19zeW50YXggPT0gU1lOX1RFUk1JTkZPKSkgewogCSAgICAvKgogCSAgICAgKiBOZXdsaW5lcyBlbWJlZGRlZCBpbiBhIHRlcm1pbmZvIHN0cmluZyBhcmUgaWdub3JlZCwgcHJvdmlkZWQKIAkgICAgICogdGhhdCB0aGUgbmV4dCBsaW5lIGJlZ2lucyB3aXRoIHdoaXRlc3BhY2UuCiAJICAgICAqLwogCSAgICBpZ25vcmVkID0gVFJVRTsKIAl9IGVsc2UgewotCSAgICAqKHB0cisrKSA9IChjaGFyKSBjaDsKKwkgICAgKihwdHIrKykgPSAoY2hhcikgYzsKIAl9CiAKIAlpZiAoIWlnbm9yZWQpIHsKIAkgICAgaWYgKF9uY19jdXJyX2NvbCA8PSAxKSB7Ci0JCXB1c2hfYmFjaygoY2hhcikgY2gpOwotCQljaCA9ICdcbic7CisJCXB1c2hfYmFjayhjKTsKKwkJYyA9ICdcbic7CiAJCWJyZWFrOwogCSAgICB9Ci0JICAgIGxhc3RfY2ggPSBjaDsKKwkgICAgbGFzdF9jaCA9IGM7CiAJICAgIGNvdW50Kys7CiAJfQogCWlnbm9yZWQgPSBGQUxTRTsKQEAgLTg4NSw3ICs5NTMsNyBAQAogCiAgICAgKnB0ciA9ICdcMCc7CiAKLSAgICByZXR1cm4gKGNoKTsKKyAgICByZXR1cm4gKGMpOwogfQogCiAvKgpAQCAtOTQwLDUgKzEwMDgsOCBAQAogICAgIGlmIChwdXNobmFtZSAhPSAwKSB7CiAJRnJlZUFuZE51bGwocHVzaG5hbWUpOwogICAgIH0KKyAgICBpZiAodG9rX2J1ZiAhPSAwKSB7CisJRnJlZUFuZE51bGwodG9rX2J1Zik7CisgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2RiX2l0ZXJhdG9yLmMgYi9uY3Vyc2VzL3RpbmZvL2RiX2l0ZXJhdG9yLmMKaW5kZXggZmRjMmJiMC4uOTRhNDA4MiAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9kYl9pdGVyYXRvci5jCisrKyBiL25jdXJzZXMvdGluZm8vZGJfaXRlcmF0b3IuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM2LDEzICszNiwxNDIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8dGljLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBkYl9pdGVyYXRvci5jLHYgMS42IDIwMDcvMDQvMjIgMDA6MDA6MjYgdG9tIEV4cCAkIikKKyNpZiBVU0VfSEFTSEVEX0RCCisjaW5jbHVkZSA8aGFzaGVkX2RiLmg+CisjZW5kaWYKKworTU9EVUxFX0lEKCIkSWQ6IGRiX2l0ZXJhdG9yLmMsdiAxLjM5IDIwMTQvMTEvMDEgMTQ6NDc6MDAgdG9tIEV4cCAkIikKIAogI2RlZmluZSBIYXZlVGljRGlyZWN0b3J5IF9uY19nbG9iYWxzLmhhdmVfdGljX2RpcmVjdG9yeQogI2RlZmluZSBLZWVwVGljRGlyZWN0b3J5IF9uY19nbG9iYWxzLmtlZXBfdGljX2RpcmVjdG9yeQogI2RlZmluZSBUaWNEaXJlY3RvcnkgICAgIF9uY19nbG9iYWxzLnRpY19kaXJlY3RvcnkKKyNkZWZpbmUgbXlfYmxvYiAgICAgICAgICBfbmNfZ2xvYmFscy5kYmRfYmxvYgorI2RlZmluZSBteV9saXN0ICAgICAgICAgIF9uY19nbG9iYWxzLmRiZF9saXN0CisjZGVmaW5lIG15X3NpemUgICAgICAgICAgX25jX2dsb2JhbHMuZGJkX3NpemUKKyNkZWZpbmUgbXlfdGltZSAgICAgICAgICBfbmNfZ2xvYmFscy5kYmRfdGltZQorI2RlZmluZSBteV92YXJzICAgICAgICAgIF9uY19nbG9iYWxzLmRiZF92YXJzCisKK3N0YXRpYyB2b2lkCithZGRfdG9fYmxvYihjb25zdCBjaGFyICp0ZXh0LCBzaXplX3QgbGltaXQpCit7CisgICAgKHZvaWQpIGxpbWl0OworCisgICAgaWYgKCp0ZXh0ICE9ICdcMCcpIHsKKwljaGFyICpsYXN0ID0gbXlfYmxvYiArIHN0cmxlbihteV9ibG9iKTsKKwlpZiAobGFzdCAhPSBteV9ibG9iKQorCSAgICAqbGFzdCsrID0gTkNVUlNFU19QQVRIU0VQOworCV9uY19TVFJDUFkobGFzdCwgdGV4dCwgbGltaXQpOworICAgIH0KK30KKworc3RhdGljIGJvb2wKK2NoZWNrX2V4aXN0ZW5jZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3RhdCAqc2IpCit7CisgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKKworICAgIGlmIChzdGF0KG5hbWUsIHNiKSA9PSAwCisJJiYgKFNfSVNESVIoc2ItPnN0X21vZGUpIHx8IFNfSVNSRUcoc2ItPnN0X21vZGUpKSkgeworCXJlc3VsdCA9IFRSVUU7CisgICAgfQorI2lmIFVTRV9IQVNIRURfREIKKyAgICBlbHNlIGlmIChzdHJsZW4obmFtZSkgPCBQQVRIX01BWCAtIHNpemVvZihEQk1fU1VGRklYKSkgeworCWNoYXIgdGVtcFtQQVRIX01BWF07CisJX25jX1NQUklOVEYodGVtcCwgX25jX1NMSU1JVChzaXplb2YodGVtcCkpICIlcyVzIiwgbmFtZSwgREJNX1NVRkZJWCk7CisJaWYgKHN0YXQodGVtcCwgc2IpID09IDAgJiYgU19JU1JFRyhzYi0+c3RfbW9kZSkpIHsKKwkgICAgcmVzdWx0ID0gVFJVRTsKKwl9CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFN0b3JlIHRoZSBsYXRlc3QgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gbXlfdmFyc1tdIHNvIHdlIGNhbgorICogZGV0ZWN0IGlmIG9uZSBjaGFuZ2VzLCBpbnZhbGlkYXRpbmcgdGhlIGNhY2hlZCBzZWFyY2gtbGlzdC4KKyAqLworc3RhdGljIGJvb2wKK3VwZGF0ZV9nZXRlbnYoY29uc3QgY2hhciAqbmFtZSwgREJESVJTIHdoaWNoKQoreworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICBpZiAod2hpY2ggPCBkYmRMQVNUKSB7CisJY2hhciAqdmFsdWU7CisKKwlpZiAoKHZhbHVlID0gZ2V0ZW52KG5hbWUpKSA9PSAwIHx8ICh2YWx1ZSA9IHN0cmR1cCh2YWx1ZSkpID09IDApIHsKKwkgICAgOworCX0gZWxzZSBpZiAobXlfdmFyc1t3aGljaF0ubmFtZSA9PSAwIHx8IHN0cmNtcChteV92YXJzW3doaWNoXS5uYW1lLCBuYW1lKSkgeworCSAgICBGcmVlSWZOZWVkZWQobXlfdmFyc1t3aGljaF0udmFsdWUpOworCSAgICBteV92YXJzW3doaWNoXS5uYW1lID0gbmFtZTsKKwkgICAgbXlfdmFyc1t3aGljaF0udmFsdWUgPSB2YWx1ZTsKKwkgICAgcmVzdWx0ID0gVFJVRTsKKwl9IGVsc2UgaWYgKChteV92YXJzW3doaWNoXS52YWx1ZSAhPSAwKSBeICh2YWx1ZSAhPSAwKSkgeworCSAgICBGcmVlSWZOZWVkZWQobXlfdmFyc1t3aGljaF0udmFsdWUpOworCSAgICBteV92YXJzW3doaWNoXS52YWx1ZSA9IHZhbHVlOworCSAgICByZXN1bHQgPSBUUlVFOworCX0gZWxzZSBpZiAodmFsdWUgIT0gMCAmJiBzdHJjbXAodmFsdWUsIG15X3ZhcnNbd2hpY2hdLnZhbHVlKSkgeworCSAgICBGcmVlSWZOZWVkZWQobXlfdmFyc1t3aGljaF0udmFsdWUpOworCSAgICBteV92YXJzW3doaWNoXS52YWx1ZSA9IHZhbHVlOworCSAgICByZXN1bHQgPSBUUlVFOworCX0gZWxzZSB7CisJICAgIGZyZWUodmFsdWUpOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNoYXIgKgorY2FjaGVfZ2V0ZW52KGNvbnN0IGNoYXIgKm5hbWUsIERCRElSUyB3aGljaCkKK3sKKyAgICBjaGFyICpyZXN1bHQgPSAwOworCisgICAgKHZvaWQpIHVwZGF0ZV9nZXRlbnYobmFtZSwgd2hpY2gpOworICAgIGlmICh3aGljaCA8IGRiZExBU1QpIHsKKwlyZXN1bHQgPSBteV92YXJzW3doaWNoXS52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFRoZSBjYWNoZSBleHBpcmVzIGlmIGF0IGxlYXN0IGEgc2Vjb25kIGhhcyBwYXNzZWQgc2luY2UgdGhlIGluaXRpYWwgbG9va3VwLAorICogb3IgaWYgb25lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY2hhbmdlZC4KKyAqCisgKiBPbmx5IGEgZmV3IGFwcGxpY2F0aW9ucyB1c2UgbXVsdGlwbGUgbG9va3VwcyBvZiB0ZXJtaW5hbCBlbnRyaWVzLCBzZWVtcyB0aGF0CisgKiBhc2lkZSBmcm9tIGJ1bGsgSS9PIHN1Y2ggYXMgdGljIGFuZCB0b2UsIHRoYXQgbGVhdmVzIGludGVyYWN0aXZlIHByb2dyYW1zCisgKiB3aGljaCBzaG91bGQgbm90IGJlIG1vZGlmeWluZyB0aGUgdGVybWluYWwgZGF0YWJhc2VzIGluIGEgd2F5IHRoYXQgd291bGQKKyAqIGludmFsaWRhdGUgdGhlIHNlYXJjaC1saXN0LgorICoKKyAqIFRoZSAiMS1zZWNvbmQiIGlzIHRvIGFsbG93IGZvciB1c2VyLWRpcmVjdGVkIGNoYW5nZXMgb3V0c2lkZSB0aGUgcHJvZ3JhbS4KKyAqLworc3RhdGljIGJvb2wKK2NhY2hlX2V4cGlyZWQodm9pZCkKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworICAgIHRpbWVfdCBub3cgPSB0aW1lKCh0aW1lX3QgKikgMCk7CisKKyAgICBpZiAobm93ID4gbXlfdGltZSkgeworCXJlc3VsdCA9IFRSVUU7CisgICAgfSBlbHNlIHsKKwlEQkRJUlMgbjsKKwlmb3IgKG4gPSAoREJESVJTKSAwOyBuIDwgZGJkTEFTVDsgKytuKSB7CisJICAgIGlmIChteV92YXJzW25dLm5hbWUgIT0gMAorCQkmJiB1cGRhdGVfZ2V0ZW52KG15X3ZhcnNbbl0ubmFtZSwgbikpIHsKKwkJcmVzdWx0ID0gVFJVRTsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2NhY2hlKHZvaWQpCit7CisgICAgRnJlZUFuZE51bGwobXlfYmxvYik7CisgICAgRnJlZUFuZE51bGwobXlfbGlzdCk7Cit9CiAKIC8qCiAgKiBSZWNvcmQgdGhlICJvZmZpY2lhbCIgbG9jYXRpb24gb2YgdGhlIHRlcm1pbmZvIGRpcmVjdG9yeSwgYWNjb3JkaW5nIHRvCkBAIC01MSwxNyArMTgwLDIwIEBACiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopCiBfbmNfdGljX2Rpcihjb25zdCBjaGFyICpwYXRoKQogeworICAgIFQoKCJfbmNfdGljX2RpciAlcyIsIE5vbk51bGwocGF0aCkpKTsKICAgICBpZiAoIUtlZXBUaWNEaXJlY3RvcnkpIHsKIAlpZiAocGF0aCAhPSAwKSB7CiAJICAgIFRpY0RpcmVjdG9yeSA9IHBhdGg7CiAJICAgIEhhdmVUaWNEaXJlY3RvcnkgPSBUUlVFOwotCX0gZWxzZSBpZiAoIUhhdmVUaWNEaXJlY3RvcnkgJiYgdXNlX3Rlcm1pbmZvX3ZhcnMoKSkgewotCSAgICBjaGFyICplbnZwOwotCSAgICBpZiAoKGVudnAgPSBnZXRlbnYoIlRFUk1JTkZPIikpICE9IDApCi0JCXJldHVybiBfbmNfdGljX2RpcihlbnZwKTsKKwl9IGVsc2UgaWYgKEhhdmVUaWNEaXJlY3RvcnkgPT0gMCkgeworCSAgICBpZiAodXNlX3Rlcm1pbmZvX3ZhcnMoKSkgeworCQljb25zdCBjaGFyICplbnZwOworCQlpZiAoKGVudnAgPSBnZXRlbnYoIlRFUk1JTkZPIikpICE9IDApCisJCSAgICByZXR1cm4gX25jX3RpY19kaXIoZW52cCk7CisJICAgIH0KIAl9CiAgICAgfQotICAgIHJldHVybiBUaWNEaXJlY3Rvcnk7CisgICAgcmV0dXJuIFRpY0RpcmVjdG9yeSA/IFRpY0RpcmVjdG9yeSA6IFRFUk1JTkZPOwogfQogCiAvKgpAQCAtNzcsNjIgKzIwOSwxNiBAQAogfQogCiAvKgotICogUHJvY2VzcyB0aGUgbGlzdCBvZiA6LXNlcGFyYXRlZCBkaXJlY3RvcmllcywgbG9va2luZyBmb3IgdGhlIHRlcm1pbmFsIHR5cGUuCi0gKiBXZSBkb24ndCB1c2Ugc3RydG9rIGJlY2F1c2UgaXQgZG9lcyBub3Qgc2hvdyB1cyBlbXB0eSB0b2tlbnMuCi0gKi8KLSNkZWZpbmUgVGhpc0RiTGlzdAlfbmNfZ2xvYmFscy5kYmlfbGlzdAotI2RlZmluZSBUaGlzRGJTaXplCV9uY19nbG9iYWxzLmRiaV9zaXplCi0KLS8qCiAgKiBDbGVhbnVwLgogICovCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogX25jX2xhc3RfZGIodm9pZCkKIHsKLSAgICBpZiAoVGhpc0RiTGlzdCAhPSAwKSB7Ci0JRnJlZUFuZE51bGwoVGhpc0RiTGlzdCk7CisgICAgaWYgKG15X2Jsb2IgIT0gMCAmJiBjYWNoZV9leHBpcmVkKCkpIHsKKwlmcmVlX2NhY2hlKCk7CiAgICAgfQotICAgIFRoaXNEYlNpemUgPSAwOwogfQogCi0vKiBUaGUgVEVSTUlORk9fRElSUyB2YWx1ZSwgaWYgZGVmaW5lZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCwgYmVnaW5zIHdpdGggYQotICogIjoiLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIFRFUk1JTkZPLgotICovCi1zdGF0aWMgY29uc3QgY2hhciAqCi1uZXh0X2xpc3RfaXRlbShjb25zdCBjaGFyICpzb3VyY2UsIGludCAqb2Zmc2V0KQotewotICAgIGlmIChzb3VyY2UgIT0gMCkgewotCUZyZWVJZk5lZWRlZChUaGlzRGJMaXN0KTsKLQlUaGlzRGJMaXN0ID0gc3RyZHVwKHNvdXJjZSk7Ci0JVGhpc0RiU2l6ZSA9IHN0cmxlbihzb3VyY2UpOwotICAgIH0KLQotICAgIGlmIChUaGlzRGJMaXN0ICE9IDAgJiYgVGhpc0RiU2l6ZSAmJiAqb2Zmc2V0IDwgVGhpc0RiU2l6ZSkgewotCXN0YXRpYyBjaGFyIHN5c3RlbV9kYltdID0gVEVSTUlORk87Ci0JY2hhciAqcmVzdWx0ID0gVGhpc0RiTGlzdCArICpvZmZzZXQ7Ci0JY2hhciAqbWFya2VyID0gc3RyY2hyKHJlc3VsdCwgTkNVUlNFU19QQVRIU0VQKTsKLQotCS8qCi0JICogUHV0IGEgbnVsbCBvbiB0aGUgbWFya2VyIGlmIGEgc2VwYXJhdG9yIHdhcyBmb3VuZC4gIFNldCB0aGUgb2Zmc2V0Ci0JICogdG8gdGhlIG5leHQgcG9zaXRpb24gYWZ0ZXIgdGhlIG1hcmtlciBzbyB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCi0JICogYWdhaW4sIHVzaW5nIHRoZSBkYXRhIGF0IHRoZSBvZmZzZXQuCi0JICovCi0JaWYgKG1hcmtlciA9PSAwKSB7Ci0JICAgICpvZmZzZXQgKz0gc3RybGVuKHJlc3VsdCkgKyAxOwotCSAgICBtYXJrZXIgPSByZXN1bHQgKyAqb2Zmc2V0OwotCX0gZWxzZSB7Ci0JICAgICptYXJrZXIrKyA9IDA7Ci0JICAgICpvZmZzZXQgPSBtYXJrZXIgLSBUaGlzRGJMaXN0OwotCX0KLQlpZiAoKnJlc3VsdCA9PSAwICYmIHJlc3VsdCAhPSAoVGhpc0RiTGlzdCArIFRoaXNEYlNpemUpKQotCSAgICByZXN1bHQgPSBzeXN0ZW1fZGI7Ci0JcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNkZWZpbmUgTkVYVF9EQkQodmFyLCBvZmZzZXQpIG5leHRfbGlzdF9pdGVtKCgqb2Zmc2V0ID09IDApID8gdmFyIDogMCwgb2Zmc2V0KQotCiAvKgogICogVGhpcyBpcyBhIHNpbXBsZSBpdGVyYXRvciB3aGljaCBhbGxvd3MgdGhlIGNhbGxlciB0byBzdGVwIHRocm91Z2ggdGhlCiAgKiBwb3NzaWJsZSBsb2NhdGlvbnMgZm9yIGEgdGVybWluZm8gZGlyZWN0b3J5LiAgbmN1cnNlcyB1c2VzIHRoaXMgdG8gZmluZApAQCAtMTQyLDg0ICsyMjgsMTg2IEBACiBfbmNfbmV4dF9kYihEQkRJUlMgKiBzdGF0ZSwgaW50ICpvZmZzZXQpCiB7CiAgICAgY29uc3QgY2hhciAqcmVzdWx0OwotICAgIGNoYXIgKmVudnA7CiAKLSAgICB3aGlsZSAoKnN0YXRlIDwgZGJkTEFTVCkgewotCURCRElSUyBuZXh0ID0gKERCRElSUykgKChpbnQpICgqc3RhdGUpICsgMSk7Ci0KKyAgICAodm9pZCkgb2Zmc2V0OworICAgIGlmICgoaW50KSAqc3RhdGUgPCBteV9zaXplCisJJiYgbXlfbGlzdCAhPSAwCisJJiYgbXlfbGlzdFsqc3RhdGVdICE9IDApIHsKKwlyZXN1bHQgPSBteV9saXN0WypzdGF0ZV07CisJKCpzdGF0ZSkrKzsKKyAgICB9IGVsc2UgewogCXJlc3VsdCA9IDA7Ci0KLQlzd2l0Y2ggKCpzdGF0ZSkgewotCWNhc2UgZGJkVElDOgotCSAgICBpZiAoSGF2ZVRpY0RpcmVjdG9yeSkKLQkJcmVzdWx0ID0gX25jX3RpY19kaXIoMCk7Ci0JICAgIGJyZWFrOwotI2lmIFVTRV9EQVRBQkFTRQotCWNhc2UgZGJkRW52T25jZToKLQkgICAgaWYgKHVzZV90ZXJtaW5mb192YXJzKCkpIHsKLQkJaWYgKChlbnZwID0gZ2V0ZW52KCJURVJNSU5GTyIpKSAhPSAwKQotCQkgICAgcmVzdWx0ID0gX25jX3RpY19kaXIoZW52cCk7Ci0JICAgIH0KLQkgICAgYnJlYWs7Ci0JY2FzZSBkYmRIb21lOgotCSAgICBpZiAodXNlX3Rlcm1pbmZvX3ZhcnMoKSkgewotCQlyZXN1bHQgPSBfbmNfaG9tZV90ZXJtaW5mbygpOwotCSAgICB9Ci0JICAgIGJyZWFrOwotCWNhc2UgZGJkRW52TGlzdDoKLQkgICAgaWYgKHVzZV90ZXJtaW5mb192YXJzKCkpIHsKLQkJaWYgKChyZXN1bHQgPSBORVhUX0RCRChnZXRlbnYoIlRFUk1JTkZPX0RJUlMiKSwgb2Zmc2V0KSkgIT0gMCkKLQkJICAgIG5leHQgPSAqc3RhdGU7Ci0JICAgIH0KLQkgICAgYnJlYWs7Ci0JY2FzZSBkYmRDZmdMaXN0OgotI2lmZGVmIFRFUk1JTkZPX0RJUlMKLQkgICAgaWYgKChyZXN1bHQgPSBORVhUX0RCRChURVJNSU5GT19ESVJTLCBvZmZzZXQpKSAhPSAwKQotCQluZXh0ID0gKnN0YXRlOwotI2VuZGlmCi0JICAgIGJyZWFrOwotCWNhc2UgZGJkQ2ZnT25jZToKLSNpZm5kZWYgVEVSTUlORk9fRElSUwotCSAgICByZXN1bHQgPSBURVJNSU5GTzsKLSNlbmRpZgotCSAgICBicmVhazsKLSNlbmRpZiAvKiBVU0VfREFUQUJBU0UgKi8KLSNpZiBVU0VfVEVSTUNBUAotCWNhc2UgZGJkRW52T25jZTI6Ci0JICAgIGlmICh1c2VfdGVybWluZm9fdmFycygpKSB7Ci0JCWlmICgoZW52cCA9IGdldGVudigiVEVSTUNBUCIpKSAhPSAwKQotCQkgICAgcmVzdWx0ID0gX25jX3RpY19kaXIoZW52cCk7Ci0JICAgIH0KLQkgICAgYnJlYWs7Ci0JY2FzZSBkYmRFbnZMaXN0MjoKLQkgICAgaWYgKHVzZV90ZXJtaW5mb192YXJzKCkpIHsKLQkJaWYgKChyZXN1bHQgPSBORVhUX0RCRChnZXRlbnYoIlRFUk1QQVRIIiksIG9mZnNldCkpICE9IDApCi0JCSAgICBuZXh0ID0gKnN0YXRlOwotCSAgICB9Ci0JICAgIGJyZWFrOwotCWNhc2UgZGJkQ2ZnTGlzdDI6Ci0JICAgIGlmICgocmVzdWx0ID0gTkVYVF9EQkQoVEVSTVBBVEgsIG9mZnNldCkpICE9IDApCi0JCW5leHQgPSAqc3RhdGU7Ci0JICAgIGJyZWFrOwotI2VuZGlmIC8qIFVTRV9URVJNQ0FQICovCi0JY2FzZSBkYmRMQVNUOgotCSAgICBicmVhazsKLQl9Ci0JaWYgKCpzdGF0ZSAhPSBuZXh0KSB7Ci0JICAgICpzdGF0ZSA9IG5leHQ7Ci0JICAgICpvZmZzZXQgPSAwOwotCSAgICBfbmNfbGFzdF9kYigpOwotCX0KLQlpZiAocmVzdWx0ICE9IDApIHsKLQkgICAgcmV0dXJuIHJlc3VsdDsKLQl9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIGlmIChyZXN1bHQgIT0gMCkgeworCVQoKCJfbmNfbmV4dF9kYiAlZCAlcyIsICpzdGF0ZSwgcmVzdWx0KSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfZmlyc3RfZGIoREJESVJTICogc3RhdGUsIGludCAqb2Zmc2V0KQogeworICAgIGJvb2wgY2FjaGVfaGFzX2V4cGlyZWQgPSBGQUxTRTsKICAgICAqc3RhdGUgPSBkYmRUSUM7CiAgICAgKm9mZnNldCA9IDA7CisKKyAgICBUKCgiX25jX2ZpcnN0X2RiIikpOworCisgICAgLyogYnVpbGQgYSBibG9iIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBzdHJpbmdzIHdlIHdpbGwgdXNlIGZvciBhIGxvb2t1cAorICAgICAqIHRhYmxlLgorICAgICAqLworICAgIGlmIChteV9ibG9iID09IDAgfHwgKGNhY2hlX2hhc19leHBpcmVkID0gY2FjaGVfZXhwaXJlZCgpKSkgeworCXNpemVfdCBibG9ic2l6ZSA9IDA7CisJY29uc3QgY2hhciAqdmFsdWVzW2RiZExBU1RdOworCXN0cnVjdCBzdGF0ICpteV9zdGF0OworCWludCBqLCBrOworCisJaWYgKGNhY2hlX2hhc19leHBpcmVkKQorCSAgICBmcmVlX2NhY2hlKCk7CisKKwlmb3IgKGogPSAwOyBqIDwgZGJkTEFTVDsgKytqKQorCSAgICB2YWx1ZXNbal0gPSAwOworCisJLyoKKwkgKiBUaGlzIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LCBhbmQgaXMgdXNlZCBvbmx5IHdoZW4gdGljIGlzCisJICogd3JpdGluZyB0byB0aGUgZGF0YWJhc2UsIGFzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuCisJICovCisJdmFsdWVzW2RiZFRJQ10gPSBUaWNEaXJlY3Rvcnk7CisKKyNpZiBOQ1VSU0VTX1VTRV9EQVRBQkFTRQorI2lmZGVmIFRFUk1JTkZPX0RJUlMKKwl2YWx1ZXNbZGJkQ2ZnTGlzdF0gPSBURVJNSU5GT19ESVJTOworI2VuZGlmCisjaWZkZWYgVEVSTUlORk8KKwl2YWx1ZXNbZGJkQ2ZnT25jZV0gPSBURVJNSU5GTzsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBOQ1VSU0VTX1VTRV9URVJNQ0FQCisJdmFsdWVzW2RiZENmZ0xpc3QyXSA9IFRFUk1QQVRIOworI2VuZGlmCisKKwlpZiAodXNlX3Rlcm1pbmZvX3ZhcnMoKSkgeworI2lmIE5DVVJTRVNfVVNFX0RBVEFCQVNFCisJICAgIHZhbHVlc1tkYmRFbnZPbmNlXSA9IGNhY2hlX2dldGVudigiVEVSTUlORk8iLCBkYmRFbnZPbmNlKTsKKwkgICAgdmFsdWVzW2RiZEhvbWVdID0gX25jX2hvbWVfdGVybWluZm8oKTsKKwkgICAgKHZvaWQpIGNhY2hlX2dldGVudigiSE9NRSIsIGRiZEhvbWUpOworCSAgICB2YWx1ZXNbZGJkRW52TGlzdF0gPSBjYWNoZV9nZXRlbnYoIlRFUk1JTkZPX0RJUlMiLCBkYmRFbnZMaXN0KTsKKworI2VuZGlmCisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUAorCSAgICB2YWx1ZXNbZGJkRW52T25jZTJdID0gY2FjaGVfZ2V0ZW52KCJURVJNQ0FQIiwgZGJkRW52T25jZTIpOworCSAgICAvKiBvbmx5IHVzZSAkVEVSTUNBUCBpZiBpdCBpcyBhbiBhYnNvbHV0ZSBwYXRoICovCisJICAgIGlmICh2YWx1ZXNbZGJkRW52T25jZTJdICE9IDAKKwkJJiYgKnZhbHVlc1tkYmRFbnZPbmNlMl0gIT0gJy8nKSB7CisJCXZhbHVlc1tkYmRFbnZPbmNlMl0gPSAwOworCSAgICB9CisJICAgIHZhbHVlc1tkYmRFbnZMaXN0Ml0gPSBjYWNoZV9nZXRlbnYoIlRFUk1QQVRIIiwgZGJkRW52TGlzdDIpOworI2VuZGlmIC8qIE5DVVJTRVNfVVNFX1RFUk1DQVAgKi8KKwl9CisKKwlmb3IgKGogPSAwOyBqIDwgZGJkTEFTVDsgKytqKSB7CisJICAgIGlmICh2YWx1ZXNbal0gPT0gMCkKKwkJdmFsdWVzW2pdID0gIiI7CisJICAgIGJsb2JzaXplICs9IDIgKyBzdHJsZW4odmFsdWVzW2pdKTsKKwl9CisKKwlteV9ibG9iID0gbWFsbG9jKGJsb2JzaXplKTsKKwlpZiAobXlfYmxvYiAhPSAwKSB7CisJICAgICpteV9ibG9iID0gJ1wwJzsKKwkgICAgZm9yIChqID0gMDsgaiA8IGRiZExBU1Q7ICsraikgeworCQlhZGRfdG9fYmxvYih2YWx1ZXNbal0sIGJsb2JzaXplKTsKKwkgICAgfQorCisJICAgIC8qIE5vdywgYnVpbGQgYW4gYXJyYXkgd2hpY2ggd2lsbCBiZSBwb2ludGVycyB0byB0aGUgZGlzdGluY3QKKwkgICAgICogc3RyaW5ncyBpbiB0aGUgYmxvYi4KKwkgICAgICovCisJICAgIGJsb2JzaXplID0gMjsKKwkgICAgZm9yIChqID0gMDsgbXlfYmxvYltqXSAhPSAnXDAnOyArK2opIHsKKwkJaWYgKG15X2Jsb2Jbal0gPT0gTkNVUlNFU19QQVRIU0VQKQorCQkgICAgKytibG9ic2l6ZTsKKwkgICAgfQorCSAgICBteV9saXN0ID0gdHlwZUNhbGxvYyhjaGFyICosIGJsb2JzaXplKTsKKwkgICAgbXlfc3RhdCA9IHR5cGVDYWxsb2Moc3RydWN0IHN0YXQsIGJsb2JzaXplKTsKKwkgICAgaWYgKG15X2xpc3QgIT0gMCAmJiBteV9zdGF0ICE9IDApIHsKKwkJayA9IDA7CisJCW15X2xpc3RbaysrXSA9IG15X2Jsb2I7CisJCWZvciAoaiA9IDA7IG15X2Jsb2Jbal0gIT0gJ1wwJzsgKytqKSB7CisJCSAgICBpZiAobXlfYmxvYltqXSA9PSBOQ1VSU0VTX1BBVEhTRVApIHsKKwkJCW15X2Jsb2Jbal0gPSAnXDAnOworCQkJbXlfbGlzdFtrKytdID0gJm15X2Jsb2JbaiArIDFdOworCQkgICAgfQorCQl9CisKKwkJLyoKKwkJICogRWxpbWluYXRlIGR1cGxpY2F0ZXMgZnJvbSB0aGUgbGlzdC4KKwkJICovCisJCWZvciAoaiA9IDA7IG15X2xpc3Rbal0gIT0gMDsgKytqKSB7CisjaWZkZWYgVEVSTUlORk8KKwkJICAgIGlmICgqbXlfbGlzdFtqXSA9PSAnXDAnKQorCQkJbXlfbGlzdFtqXSA9IHN0cmR1cChURVJNSU5GTyk7CisjZW5kaWYKKwkJICAgIGZvciAoayA9IDA7IGsgPCBqOyArK2spIHsKKwkJCWlmICghc3RyY21wKG15X2xpc3Rbal0sIG15X2xpc3Rba10pKSB7CisJCQkgICAgayA9IGogLSAxOworCQkJICAgIHdoaWxlICgobXlfbGlzdFtqXSA9IG15X2xpc3RbaiArIDFdKSAhPSAwKSB7CisJCQkJKytqOworCQkJICAgIH0KKwkJCSAgICBqID0gazsKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJICAgIH0KKwkJfQorCisJCS8qCisJCSAqIEVsaW1pbmF0ZSBub24tZXhpc3RlbnQgZGF0YWJhc2VzLCBhbmQgdGhvc2UgdGhhdCBoYXBwZW4gdG8KKwkJICogYmUgc3ltbGlua2VkIHRvIGFub3RoZXIgbG9jYXRpb24uCisJCSAqLworCQlmb3IgKGogPSAwOyBteV9saXN0W2pdICE9IDA7ICsraikgeworCQkgICAgYm9vbCBmb3VuZCA9IGNoZWNrX2V4aXN0ZW5jZShteV9saXN0W2pdLCAmbXlfc3RhdFtqXSk7CisjaWYgSEFWRV9MSU5LCisJCSAgICBpZiAoZm91bmQpIHsKKwkJCWZvciAoayA9IDA7IGsgPCBqOyArK2spIHsKKwkJCSAgICBpZiAobXlfc3RhdFtqXS5zdF9kZXYgPT0gbXlfc3RhdFtrXS5zdF9kZXYKKwkJCQkmJiBteV9zdGF0W2pdLnN0X2lubyA9PSBteV9zdGF0W2tdLnN0X2lubykgeworCQkJCWZvdW5kID0gRkFMU0U7CisJCQkJYnJlYWs7CisJCQkgICAgfQorCQkJfQorCQkgICAgfQorI2VuZGlmCisJCSAgICBpZiAoIWZvdW5kKSB7CisJCQlrID0gajsKKwkJCXdoaWxlICgobXlfbGlzdFtrXSA9IG15X2xpc3RbayArIDFdKSAhPSAwKSB7CisJCQkgICAgKytrOworCQkJfQorCQkJLS1qOworCQkgICAgfQorCQl9CisJCW15X3NpemUgPSBqOworCQlteV90aW1lID0gdGltZSgodGltZV90ICopIDApOworCSAgICB9IGVsc2UgeworCQlGcmVlQW5kTnVsbChteV9ibG9iKTsKKwkgICAgfQorCSAgICBmcmVlKG15X3N0YXQpOworCX0KKyAgICB9CiB9CisKKyNpZiBOT19MRUFLUwordm9pZAorX25jX2RiX2l0ZXJhdG9yX2xlYWtzKHZvaWQpCit7CisgICAgREJESVJTIHdoaWNoOworCisgICAgaWYgKG15X2Jsb2IgIT0gMCkKKwlGcmVlQW5kTnVsbChteV9ibG9iKTsKKyAgICBpZiAobXlfbGlzdCAhPSAwKQorCUZyZWVBbmROdWxsKG15X2xpc3QpOworICAgIGZvciAod2hpY2ggPSAwOyAoaW50KSB3aGljaCA8IGRiZExBU1Q7ICsrd2hpY2gpIHsKKwlteV92YXJzW3doaWNoXS5uYW1lID0gMDsKKwlGcmVlSWZOZWVkZWQobXlfdmFyc1t3aGljaF0udmFsdWUpOworCW15X3ZhcnNbd2hpY2hdLnZhbHVlID0gMDsKKyAgICB9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vZG9hbGxvYy5jIGIvbmN1cnNlcy90aW5mby9kb2FsbG9jLmMKaW5kZXggZmUyYTAwOS4uN2M1MDJiMCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9kb2FsbG9jLmMKKysrIGIvbmN1cnNlcy90aW5mby9kb2FsbG9jLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSw3ICszOSw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogZG9hbGxvYy5jLHYgMS44IDIwMDIvMDgvMzEgMjE6NDg6MTEgUGhpbGlwcGUuQmxhaW4gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGRvYWxsb2MuYyx2IDEuMTEgMjAxMi8xMS8wMyAxOToyNzo0MSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkICopCiBfbmNfZG9hbGxvYyh2b2lkICpvbGRwLCBzaXplX3QgYW1vdW50KQpAQCAtNTYsMjAgKzU2LDMgQEAKICAgICB9CiAgICAgcmV0dXJuIG5ld3A7CiB9Ci0KLSNpZiAhSEFWRV9TVFJEVVAKLU5DVVJTRVNfRVhQT1JUKGNoYXIgKikKLV9uY19zdHJkdXAoY29uc3QgY2hhciAqc3JjKQotewotICAgIGNoYXIgKmRzdDsKLSAgICBpZiAoc3JjICE9IDApIHsKLQlkc3QgPSB0eXBlTWFsbG9jKGNoYXIsIHN0cmxlbihzcmMpICsgMSk7Ci0JaWYgKGRzdCAhPSAwKSB7Ci0JICAgICh2b2lkKSBzdHJjcHkoZHN0LCBzcmMpOwotCX0KLSAgICB9IGVsc2UgewotCWRzdCA9IDA7Ci0gICAgfQotICAgIHJldHVybiBkc3Q7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vZW50cmllcy5jIGIvbmN1cnNlcy90aW5mby9lbnRyaWVzLmMKaW5kZXggY2YyYTgzMy4uZTg0MDMzZCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9lbnRyaWVzLmMKKysrIGIvbmN1cnNlcy90aW5mby9lbnRyaWVzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOCw2ICsyOCw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KQEAgLTM1LDkgKzM2LDggQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8dGljLmg+Ci0jaW5jbHVkZSA8dGVybV9lbnRyeS5oPgogCi1NT0RVTEVfSUQoIiRJZDogZW50cmllcy5jLHYgMS44IDIwMDgvMDkvMjcgMTM6MTE6MTAgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBlbnRyaWVzLmMsdiAxLjIxIDIwMTIvMDUvMDUgMjA6MzM6NDQgdG9tIEV4cCAkIikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC05Niw2ICs5Niw5IEBACiAJICAgIGlmIChsYXN0ICE9IDApIHsKIAkJbGFzdC0+bmV4dCA9IGVwLT5uZXh0OwogCSAgICB9CisJICAgIGlmIChlcC0+bmV4dCAhPSAwKSB7CisJCWVwLT5uZXh0LT5sYXN0ID0gbGFzdDsKKwkgICAgfQogCSAgICBpZiAoZXAgPT0gX25jX2hlYWQpIHsKIAkJX25jX2hlYWQgPSBlcC0+bmV4dDsKIAkgICAgfQpAQCAtMTE5LDE4ICsxMjIsMzIgQEAKICNpZiBOT19MRUFLUwogICAgIF9uY19mcmVlX3RwYXJtKCk7CiAgICAgX25jX3RnZXRlbnRfbGVha3MoKTsKKworICAgIGlmIChUZXJtaW5hbE9mKENVUlJFTlRfU0NSRUVOKSAhPSAwKSB7CisJZGVsX2N1cnRlcm0oVGVybWluYWxPZihDVVJSRU5UX1NDUkVFTikpOworICAgIH0KKworICAgIF9uY19jb21wX2NhcHRhYl9sZWFrcygpOwogICAgIF9uY19mcmVlX2VudHJpZXMoX25jX2hlYWQpOwogICAgIF9uY19nZXRfdHlwZSgwKTsKICAgICBfbmNfZmlyc3RfbmFtZSgwKTsKKyAgICBfbmNfZGJfaXRlcmF0b3JfbGVha3MoKTsKICAgICBfbmNfa2V5bmFtZV9sZWFrcygpOwogI2lmIEJST0tFTl9MSU5LRVIgfHwgVVNFX1JFRU5UUkFOVAogICAgIF9uY19uYW1lc19sZWFrcygpOwogICAgIF9uY19jb2Rlc19sZWFrcygpOwogICAgIEZyZWVJZk5lZWRlZChfbmNfcHJlc2NyZWVuLnJlYWxfYWNzX21hcCk7CiAjZW5kaWYKKyAgICBfbmNfY29tcF9lcnJvcl9sZWFrcygpOwogCiAgICAgaWYgKChzID0gX25jX2hvbWVfdGVybWluZm8oKSkgIT0gMCkKIAlmcmVlKHMpOworCisjaWZkZWYgVFJBQ0UKKyAgICB0cmFjZSgwKTsKKyAgICBfbmNfdHJhY2VfYnVmKC0xLCAoc2l6ZV90KSAwKTsKKyNlbmRpZgorCiAjZW5kaWYgLyogTk9fTEVBS1MgKi8KICAgICByZXR1cm5Wb2lkOwogfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9mcmVlX3R0eXBlLmMgYi9uY3Vyc2VzL3RpbmZvL2ZyZWVfdHR5cGUuYwppbmRleCBmYTBmZmYxLi5hZDA1NmJhIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2ZyZWVfdHR5cGUuYworKysgYi9uY3Vyc2VzL3RpbmZvL2ZyZWVfdHR5cGUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQxLDkgKzQxLDggQEAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCiAjaW5jbHVkZSA8dGljLmg+Ci0jaW5jbHVkZSA8dGVybV9lbnRyeS5oPgogCi1NT0RVTEVfSUQoIiRJZDogZnJlZV90dHlwZS5jLHYgMS4xMyAyMDA2LzA2LzI1IDEwOjQ2OjAyIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogZnJlZV90dHlwZS5jLHYgMS4xNSAyMDExLzAyLzA2IDAxOjA4OjMxIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfZnJlZV90ZXJtdHlwZShURVJNVFlQRSAqcHRyKQpAQCAtNzAsNiArNjksNyBAQAogewogICAgIGludCBvbGRmbGFnID0gX25jX3VzZXJfZGVmaW5hYmxlOwogCisgICAgU1RBUlRfVFJBQ0UoKTsKICAgICBUKChUX0NBTExFRCgidXNlX2V4dGVuZGVkX25hbWVzKCVkKSIpLCBmbGFnKSk7CiAgICAgX25jX3VzZXJfZGVmaW5hYmxlID0gZmxhZzsKICAgICByZXR1cm5Cb29sKG9sZGZsYWcpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9nZXRlbnZfbnVtLmMgYi9uY3Vyc2VzL3RpbmZvL2dldGVudl9udW0uYwppbmRleCBhOTBjYzA4Li5kNWUzNWNiIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2dldGVudl9udW0uYworKysgYi9uY3Vyc2VzL3RpbmZvL2dldGVudl9udW0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBnZXRlbnZfbnVtLmMsdiAxLjMgMjAwMC8xMi8xMCAwMjo1NTowNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGdldGVudl9udW0uYyx2IDEuNiAyMDEzLzA5LzI4IDIwOjI1OjA4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIF9uY19nZXRlbnZfbnVtKGNvbnN0IGNoYXIgKm5hbWUpCkBAIC01NCwzICs1NCwyMCBAQAogCiAgICAgcmV0dXJuIChpbnQpIHZhbHVlOwogfQorCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX3NldGVudl9udW0oY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQoreworICAgIGlmIChuYW1lICE9IDAgJiYgdmFsdWUgPj0gMCkgeworCWNoYXIgYnVmZmVyWzEyOF07CisjaWYgSEFWRV9TRVRFTlYKKwlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpICIlZCIsIHZhbHVlKTsKKwlzZXRlbnYobmFtZSwgYnVmZmVyLCAxKTsKKyNlbGlmIEhBVkVfUFVURU5WCisJY2hhciAqczsKKwlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpICIlcz0lZCIsIG5hbWUsIHZhbHVlKTsKKwlpZiAoKHMgPSBzdHJkdXAoYnVmZmVyKSkgIT0gMCkKKwkgICAgcHV0ZW52KHMpOworI2VuZGlmCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9oYXNoZWRfZGIuYyBiL25jdXJzZXMvdGluZm8vaGFzaGVkX2RiLmMKaW5kZXggM2ZjMDRlYS4uYjU5NDIwNSAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9oYXNoZWRfZGIuYworKysgYi9uY3Vyc2VzL3RpbmZvL2hhc2hlZF9kYi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxMSwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNyArMjcsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMjAwNiAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDIwMDYtb24gICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KQEAgLTM2LDEyICszNiw4MSBAQAogCiAjaWYgVVNFX0hBU0hFRF9EQgogCi1NT0RVTEVfSUQoIiRJZDogaGFzaGVkX2RiLmMsdiAxLjEzIDIwMDYvMDgvMTkgMTk6NDg6MzggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBoYXNoZWRfZGIuYyx2IDEuMTcgMjAxMy8xMi8xNSAwMDozMzowMSB0b20gRXhwICQiKQogCiAjaWYgSEFTSEVEX0RCX0FQSSA+PSAyCiBzdGF0aWMgREJDICpjdXJzb3I7CiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgX215Y29ubiB7CisgICAgc3RydWN0IF9teWNvbm4gKm5leHQ7CisgICAgREIgKmRiOworICAgIGNoYXIgKnBhdGg7CisgICAgYm9vbCBtb2RpZnk7Cit9IE1ZQ09OTjsKKworc3RhdGljIE1ZQ09OTiAqY29ubmVjdGlvbnM7CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwKHZvaWQpCit7CisgICAgd2hpbGUgKGNvbm5lY3Rpb25zICE9IDApIHsKKwlfbmNfZGJfY2xvc2UoY29ubmVjdGlvbnMtPmRiKTsKKyAgICB9Cit9CisKK3N0YXRpYyBEQiAqCitmaW5kX2Nvbm5lY3Rpb24oY29uc3QgY2hhciAqcGF0aCwgYm9vbCBtb2RpZnkpCit7CisgICAgREIgKnJlc3VsdCA9IDA7CisgICAgTVlDT05OICpwOworCisgICAgZm9yIChwID0gY29ubmVjdGlvbnM7IHAgIT0gMDsgcCA9IHAtPm5leHQpIHsKKwlpZiAoIXN0cmNtcChwLT5wYXRoLCBwYXRoKSAmJiBwLT5tb2RpZnkgPT0gbW9kaWZ5KSB7CisJICAgIHJlc3VsdCA9IHAtPmRiOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2Ryb3BfY29ubmVjdGlvbihEQiAqIGRiKQoreworICAgIE1ZQ09OTiAqcCwgKnE7CisKKyAgICBmb3IgKHAgPSBjb25uZWN0aW9ucywgcSA9IDA7IHAgIT0gMDsgcSA9IHAsIHAgPSBwLT5uZXh0KSB7CisJaWYgKHAtPmRiID09IGRiKSB7CisJICAgIGlmIChxICE9IDApCisJCXEtPm5leHQgPSBwLT5uZXh0OworCSAgICBlbHNlCisJCWNvbm5lY3Rpb25zID0gcC0+bmV4dDsKKwkgICAgZnJlZShwLT5wYXRoKTsKKwkgICAgZnJlZShwKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK21ha2VfY29ubmVjdGlvbihEQiAqIGRiLCBjb25zdCBjaGFyICpwYXRoLCBib29sIG1vZGlmeSkKK3sKKyAgICBNWUNPTk4gKnAgPSB0eXBlQ2FsbG9jKE1ZQ09OTiwgMSk7CisKKyAgICBpZiAocCAhPSAwKSB7CisJcC0+ZGIgPSBkYjsKKwlwLT5wYXRoID0gc3RyZHVwKHBhdGgpOworCXAtPm1vZGlmeSA9IG1vZGlmeTsKKwlpZiAocC0+cGF0aCAhPSAwKSB7CisJICAgIHAtPm5leHQgPSBjb25uZWN0aW9uczsKKwkgICAgY29ubmVjdGlvbnMgPSBwOworCX0gZWxzZSB7CisJICAgIGZyZWUocCk7CisJfQorICAgIH0KK30KKwogLyoKICAqIE9wZW4gdGhlIGRhdGFiYXNlLgogICovCkBAIC00OSw0OSArMTE4LDYwIEBACiBfbmNfZGJfb3Blbihjb25zdCBjaGFyICpwYXRoLCBib29sIG1vZGlmeSkKIHsKICAgICBEQiAqcmVzdWx0ID0gMDsKLQotI2lmIEhBU0hFRF9EQl9BUEkgPj0gNAotICAgIGRiX2NyZWF0ZSgmcmVzdWx0LCBOVUxMLCAwKTsKLSAgICByZXN1bHQtPm9wZW4ocmVzdWx0LAotCQkgTlVMTCwKLQkJIHBhdGgsCi0JCSBOVUxMLAotCQkgREJfSEFTSCwKLQkJIG1vZGlmeSA/IERCX0NSRUFURSA6IERCX1JET05MWSwKLQkJIDA2NDQpOwotI2VsaWYgSEFTSEVEX0RCX0FQSSA+PSAzCi0gICAgZGJfY3JlYXRlKCZyZXN1bHQsIE5VTEwsIDApOwotICAgIHJlc3VsdC0+b3BlbihyZXN1bHQsCi0JCSBwYXRoLAotCQkgTlVMTCwKLQkJIERCX0hBU0gsCi0JCSBtb2RpZnkgPyBEQl9DUkVBVEUgOiBEQl9SRE9OTFksCi0JCSAwNjQ0KTsKLSNlbGlmIEhBU0hFRF9EQl9BUEkgPj0gMgogICAgIGludCBjb2RlOwogCi0gICAgaWYgKChjb2RlID0gZGJfb3BlbihwYXRoLAotCQkJREJfSEFTSCwKLQkJCW1vZGlmeSA/IERCX0NSRUFURSA6IERCX1JET05MWSwKLQkJCTA2NDQsCi0JCQkoREJfRU5WICopIDAsCi0JCQkoREJfSU5GTyAqKSAwLAotCQkJJnJlc3VsdCkpICE9IDApIHsKLQlUKCgiY2Fubm90IG9wZW4gJXM6ICVzIiwgcGF0aCwgc3RyZXJyb3IoY29kZSkpKTsKLQlyZXN1bHQgPSAwOwotICAgIH0gZWxzZSB7Ci0JVCgoIm9wZW5lZCAlcyIsIHBhdGgpKTsKLSAgICB9CisgICAgaWYgKGNvbm5lY3Rpb25zID09IDApCisJYXRleGl0KGNsZWFudXApOworCisgICAgaWYgKChyZXN1bHQgPSBmaW5kX2Nvbm5lY3Rpb24ocGF0aCwgbW9kaWZ5KSkgPT0gMCkgeworCisjaWYgSEFTSEVEX0RCX0FQSSA+PSA0CisJZGJfY3JlYXRlKCZyZXN1bHQsIE5VTEwsIDApOworCWlmICgoY29kZSA9IHJlc3VsdC0+b3BlbihyZXN1bHQsCisJCQkJIE5VTEwsCisJCQkJIHBhdGgsCisJCQkJIE5VTEwsCisJCQkJIERCX0hBU0gsCisJCQkJIG1vZGlmeSA/IERCX0NSRUFURSA6IERCX1JET05MWSwKKwkJCQkgMDY0NCkpICE9IDApIHsKKwkgICAgcmVzdWx0ID0gMDsKKwl9CisjZWxpZiBIQVNIRURfREJfQVBJID49IDMKKwlkYl9jcmVhdGUoJnJlc3VsdCwgTlVMTCwgMCk7CisJaWYgKChjb2RlID0gcmVzdWx0LT5vcGVuKHJlc3VsdCwKKwkJCQkgcGF0aCwKKwkJCQkgTlVMTCwKKwkJCQkgREJfSEFTSCwKKwkJCQkgbW9kaWZ5ID8gREJfQ1JFQVRFIDogREJfUkRPTkxZLAorCQkJCSAwNjQ0KSkgIT0gMCkgeworCSAgICByZXN1bHQgPSAwOworCX0KKyNlbGlmIEhBU0hFRF9EQl9BUEkgPj0gMgorCWlmICgoY29kZSA9IGRiX29wZW4ocGF0aCwKKwkJCSAgICBEQl9IQVNILAorCQkJICAgIG1vZGlmeSA/IERCX0NSRUFURSA6IERCX1JET05MWSwKKwkJCSAgICAwNjQ0LAorCQkJICAgIChEQl9FTlYgKikgMCwKKwkJCSAgICAoREJfSU5GTyAqKSAwLAorCQkJICAgICZyZXN1bHQpKSAhPSAwKSB7CisJICAgIHJlc3VsdCA9IDA7CisJfQogI2Vsc2UKLSAgICByZXN1bHQgPSBkYm9wZW4ocGF0aCwKLQkJICAgIG1vZGlmeSA/IChPX0NSRUFUIHwgT19SRFdSKSA6IE9fUkRPTkxZLAotCQkgICAgMDY0NCwKLQkJICAgIERCX0hBU0gsCi0JCSAgICBOVUxMKTsKLSAgICBpZiAocmVzdWx0ICE9IDApIHsKLQlUKCgib3BlbmVkICVzIiwgcGF0aCkpOwotICAgIH0KKwlpZiAoKHJlc3VsdCA9IGRib3BlbihwYXRoLAorCQkJICAgICBtb2RpZnkgPyAoT19DUkVBVCB8IE9fUkRXUikgOiBPX1JET05MWSwKKwkJCSAgICAgMDY0NCwKKwkJCSAgICAgREJfSEFTSCwKKwkJCSAgICAgTlVMTCkpID09IDApIHsKKwkgICAgY29kZSA9IGVycm5vOworCX0KICNlbmRpZgorCWlmIChyZXN1bHQgIT0gMCkgeworCSAgICBtYWtlX2Nvbm5lY3Rpb24ocmVzdWx0LCBwYXRoLCBtb2RpZnkpOworCSAgICBUKCgib3BlbmVkICVzIiwgcGF0aCkpOworCX0gZWxzZSB7CisJICAgIFQoKCJjYW5ub3Qgb3BlbiAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihjb2RlKSkpOworCX0KKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTAzLDYgKzE4Myw3IEBACiB7CiAgICAgaW50IHJlc3VsdDsKIAorICAgIGRyb3BfY29ubmVjdGlvbihkYik7CiAjaWYgSEFTSEVEX0RCX0FQSSA+PSAyCiAgICAgcmVzdWx0ID0gZGItPmNsb3NlKGRiLCAwKTsKICNlbHNlCkBAIC0yMDUsNyArMjg2LDcgQEAKIF9uY19kYl9oYXZlX2luZGV4KERCVCAqIGtleSwgREJUICogZGF0YSwgY2hhciAqKmJ1ZmZlciwgaW50ICpzaXplKQogewogICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7Ci0gICAgaW50IHVzZWQgPSBkYXRhLT5zaXplIC0gMTsKKyAgICBpbnQgdXNlZCA9IChpbnQpIGRhdGEtPnNpemUgLSAxOwogICAgIGNoYXIgKmhhdmUgPSAoY2hhciAqKSBkYXRhLT5kYXRhOwogCiAgICAgKHZvaWQpIGtleTsKQEAgLTIyOCw3ICszMDksNyBAQAogX25jX2RiX2hhdmVfZGF0YShEQlQgKiBrZXksIERCVCAqIGRhdGEsIGNoYXIgKipidWZmZXIsIGludCAqc2l6ZSkKIHsKICAgICBib29sIHJlc3VsdCA9IEZBTFNFOwotICAgIGludCB1c2VkID0gZGF0YS0+c2l6ZSAtIDE7CisgICAgaW50IHVzZWQgPSAoaW50KSBkYXRhLT5zaXplIC0gMTsKICAgICBjaGFyICpoYXZlID0gKGNoYXIgKikgZGF0YS0+ZGF0YTsKIAogICAgIGlmICgqaGF2ZSsrID09IDApIHsKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vaG9tZV90ZXJtaW5mby5jIGIvbmN1cnNlcy90aW5mby9ob21lX3Rlcm1pbmZvLmMKaW5kZXggNDUyMWM0YS4uZTc3ZjcxYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9ob21lX3Rlcm1pbmZvLmMKKysrIGIvbmN1cnNlcy90aW5mby9ob21lX3Rlcm1pbmZvLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDx0aWMuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGhvbWVfdGVybWluZm8uYyx2IDEuMTEgMjAwOC8wOC8wMyAyMzo0MzoxMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGhvbWVfdGVybWluZm8uYyx2IDEuMTUgMjAxMi8xMC8yNyAyMTo0OToxNCB0b20gRXhwICQiKQogCiAvKiBuY3Vyc2VzIGV4dGVuc2lvbi4uLmZhbGwgYmFjayBvbiB1c2VyJ3MgcHJpdmF0ZSBkaXJlY3RvcnkgKi8KIApAQCAtNTMsMTEgKzUzLDkgQEAKICAgICBpZiAodXNlX3Rlcm1pbmZvX3ZhcnMoKSkgewogCWlmIChNeUJ1ZmZlciA9PSAwKSB7CiAJICAgIGlmICgoaG9tZSA9IGdldGVudigiSE9NRSIpKSAhPSAwKSB7Ci0JCXVuc2lnbmVkIHdhbnQgPSAoc3RybGVuKGhvbWUpICsgc2l6ZW9mKFBSSVZBVEVfSU5GTykpOwotCQlNeUJ1ZmZlciA9IHR5cGVNYWxsb2MoY2hhciwgd2FudCk7Ci0JCWlmIChNeUJ1ZmZlciA9PSAwKQotCQkgICAgX25jX2Vycl9hYm9ydChNU0dfTk9fTUVNT1JZKTsKLQkJKHZvaWQpIHNwcmludGYoTXlCdWZmZXIsIFBSSVZBVEVfSU5GTywgaG9tZSk7CisJCXNpemVfdCB3YW50ID0gKHN0cmxlbihob21lKSArIHNpemVvZihQUklWQVRFX0lORk8pKTsKKwkJVFlQRV9NQUxMT0MoY2hhciwgd2FudCwgTXlCdWZmZXIpOworCQlfbmNfU1BSSU5URihNeUJ1ZmZlciwgX25jX1NMSU1JVCh3YW50KSBQUklWQVRFX0lORk8sIGhvbWUpOwogCSAgICB9CiAJfQogCXJlc3VsdCA9IE15QnVmZmVyOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9pbml0X2tleXRyeS5jIGIvbmN1cnNlcy90aW5mby9pbml0X2tleXRyeS5jCmluZGV4IDJmNmZlNGYuLmVhNDdiMzggMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vaW5pdF9rZXl0cnkuYworKysgYi9uY3Vyc2VzL3RpbmZvL2luaXRfa2V5dHJ5LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxNiArMjcsOSBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotCi0jaW5jbHVkZSA8dGVybS5oPgotLyoga2V5cGFkX3htaXQsIGtleXBhZF9sb2NhbCwgbWV0YV9vbiwgbWV0YV9vZmYgKi8KLS8qIGN1cnNvcl92aXNpYmxlLGN1cnNvcl9ub3JtYWwsY3Vyc29yX2ludmlzaWJsZSAqLwotCiAjaW5jbHVkZSA8dGljLmg+CQkvKiBzdHJ1Y3QgdGluZm9fZmtleXMgKi8KIAotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KLQotTU9EVUxFX0lEKCIkSWQ6IGluaXRfa2V5dHJ5LmMsdiAxLjEyIDIwMDgvMDUvMjQgMjE6NDQ6NTEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBpbml0X2tleXRyeS5jLHYgMS4xNyAyMDEwLzA0LzI0IDIyOjI5OjU2IHRvbSBFeHAgJCIpCiAKIC8qCiAqKiAgICAgIF9uY19pbml0X2tleXRyeSgpCkBAIC01MCw3ICs0Myw3IEBACiAgKiB0aGFuIGN1cl90ZXJtLgogICovCiAjdW5kZWYgQ1VSCi0jZGVmaW5lIENVUiAoc3AtPl90ZXJtKS0+dHlwZS4KKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCiAKICNpZglCUk9LRU5fTElOS0VSCiAjdW5kZWYJX25jX3RpbmZvX2ZrZXlzCkBAIC03Myw3ICs2Niw3IEBACiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogX25jX2luaXRfa2V5dHJ5KFNDUkVFTiAqc3ApCiB7Ci0gICAgc2l6ZV90IG47CisgICAgdW5zaWduZWQgbjsKIAogICAgIC8qIFRoZSBzcC0+X2tleXRyeSB2YWx1ZSBpcyBpbml0aWFsaXplZCBpbiBuZXd0ZXJtKCksIHdoZXJlIHRoZSBzcAogICAgICAqIHN0cnVjdHVyZSBpcyBjcmVhdGVkLCBiZWNhdXNlIHdlIGNhbiBub3QgdGVsbCB3aGVyZSBrZXlwYWQoKSBvcgpAQCAtOTcsMTIgKzkwLDEzIEBACiAJewogCSAgICBURVJNVFlQRSAqdHAgPSAmKHNwLT5fdGVybS0+dHlwZSk7CiAJICAgIGZvciAobiA9IFNUUkNPVU5UOyBuIDwgTlVNX1NUUklOR1ModHApOyArK24pIHsKLQkJY29uc3QgY2hhciAqbmFtZSA9IEV4dFN0cm5hbWUodHAsIG4sIHN0cm5hbWVzKTsKKwkJY29uc3QgY2hhciAqbmFtZSA9IEV4dFN0cm5hbWUodHAsIChpbnQpIG4sIHN0cm5hbWVzKTsKIAkJY2hhciAqdmFsdWUgPSB0cC0+U3RyaW5nc1tuXTsKIAkJaWYgKG5hbWUgIT0gMAogCQkgICAgJiYgKm5hbWUgPT0gJ2snCiAJCSAgICAmJiB2YWx1ZSAhPSAwCi0JCSAgICAmJiBrZXlfZGVmaW5lZCh2YWx1ZSkgPT0gMCkgeworCQkgICAgJiYgTkNVUlNFU19TUF9OQU1FKGtleV9kZWZpbmVkKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCQkgICAgIHZhbHVlKSA9PSAwKSB7CiAJCSAgICAodm9pZCkgX25jX2FkZF90b190cnkoJihzcC0+X2tleXRyeSksCiAJCQkJCSAgdmFsdWUsCiAJCQkJCSAgbiAtIFNUUkNPVU5UICsgS0VZX01BWCk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl9hY3MuYyBiL25jdXJzZXMvdGluZm8vbGliX2Fjcy5jCmluZGV4IDkxOWU0NzIuLjY5YTE4NTEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX2Fjcy5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX2Fjcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsMTcgKzMwLDIxIEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOCAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4JCS8qIGVuYV9hY3MsIGFjc19jaGFycyAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX2Fjcy5jLHYgMS4zNiAyMDA4LzA4LzE2IDE5OjIyOjU1IHRvbSBFeHAgJCIpCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogbGliX2Fjcy5jLHYgMS40NSAyMDE0LzAzLzA4IDIwOjMyOjU5IHRvbSBFeHAgJCIpCiAKICNpZiBCUk9LRU5fTElOS0VSIHx8IFVTRV9SRUVOVFJBTlQKICNkZWZpbmUgTXlCdWZmZXIgX25jX3ByZXNjcmVlbi5yZWFsX2Fjc19tYXAKLU5DVVJTRVNfRVhQT1JUX1ZBUihjaHR5cGUgKikKLV9uY19hY3NfbWFwKHZvaWQpCitOQ1VSU0VTX0VYUE9SVChjaHR5cGUgKikKK05DVVJTRVNfUFVCTElDX1ZBUihhY3NfbWFwKSAodm9pZCkKIHsKICAgICBpZiAoTXlCdWZmZXIgPT0gMCkKIAlNeUJ1ZmZlciA9IHR5cGVDYWxsb2MoY2h0eXBlLCBBQ1NfTEVOKTsKQEAgLTQ4LDE3ICs1MiwzNSBAQAogfQogI3VuZGVmIE15QnVmZmVyCiAjZWxzZQotTkNVUlNFU19FWFBPUlRfVkFSKGNodHlwZSkgYWNzX21hcFtBQ1NfTEVOXSA9CitOQ1VSU0VTX0VYUE9SVF9WQVIgKGNodHlwZSkgYWNzX21hcFtBQ1NfTEVOXSA9CiB7CiAgICAgMAogfTsKICNlbmRpZgogCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCitOQ1VSU0VTX0VYUE9SVChjaHR5cGUpCitOQ1VSU0VTX1NQX05BTUUoX25jX2Fjc19jaGFyKSAoTkNVUlNFU19TUF9EQ0x4IGludCBjKQoreworICAgIGNodHlwZSAqbWFwOworICAgIGlmIChjIDwgMCB8fCBjID49IEFDU19MRU4pCisJcmV0dXJuIChjaHR5cGUpIDA7CisgICAgbWFwID0gKFNQX1BBUk0gIT0gMCkgPyBTUF9QQVJNLT5fYWNzX21hcCA6CisjaWYgQlJPS0VOX0xJTktFUiB8fCBVU0VfUkVFTlRSQU5UCisJX25jX3ByZXNjcmVlbi5yZWFsX2Fjc19tYXAKKyNlbHNlCisJYWNzX21hcAorI2VuZGlmCisJOworICAgIHJldHVybiBtYXBbY107Cit9CisjZW5kaWYgLyogVVNFX1RFUk1fRFJJVkVSICovCisKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfaW5pdF9hY3Modm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfaW5pdF9hY3MpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgY2h0eXBlICpmYWtlX21hcCA9IGFjc19tYXA7Ci0gICAgY2h0eXBlICpyZWFsX21hcCA9IFNQICE9IDAgPyBTUC0+X2Fjc19tYXAgOiBmYWtlX21hcDsKKyAgICBjaHR5cGUgKnJlYWxfbWFwID0gU1BfUEFSTSAhPSAwID8gU1BfUEFSTS0+X2Fjc19tYXAgOiBmYWtlX21hcDsKICAgICBpbnQgajsKIAogICAgIFQoKCJpbml0aWFsaXppbmcgQUNTIG1hcCIpKTsKQEAgLTcxLDkgKzkzLDkgQEAKICAgICBpZiAocmVhbF9tYXAgIT0gZmFrZV9tYXApIHsKIAlmb3IgKGogPSAxOyBqIDwgQUNTX0xFTjsgKytqKSB7CiAJICAgIHJlYWxfbWFwW2pdID0gMDsKLQkgICAgZmFrZV9tYXBbal0gPSBBX0FMVENIQVJTRVQgfCBqOwotCSAgICBpZiAoU1ApCi0JCVNQLT5fc2NyZWVuX2Fjc19tYXBbal0gPSBGQUxTRTsKKwkgICAgZmFrZV9tYXBbal0gPSBBX0FMVENIQVJTRVQgfCAoY2h0eXBlKSBqOworCSAgICBpZiAoU1BfUEFSTSkKKwkJU1BfUEFSTS0+X3NjcmVlbl9hY3NfbWFwW2pdID0gRkFMU0U7CiAJfQogICAgIH0gZWxzZSB7CiAJZm9yIChqID0gMTsgaiA8IEFDU19MRU47ICsraikgewpAQCAtMTE4LDEwICsxNDAsMzYgQEAKICAgICByZWFsX21hcFsneyddID0gJyonOwkvKiBzaG91bGQgYmUgZ3JlZWsgcGkgKi8KICAgICByZWFsX21hcFsnfCddID0gJyEnOwkvKiBzaG91bGQgYmUgbm90LWVxdWFsICovCiAgICAgcmVhbF9tYXBbJ30nXSA9ICdmJzsJLyogc2hvdWxkIGJlIHBvdW5kLXN0ZXJsaW5nIHN5bWJvbCAqLworICAgIC8qIHRoaWNrLWxpbmUtZHJhd2luZyAqLworICAgIHJlYWxfbWFwWydMJ10gPSAnKyc7CS8qIHVwcGVyIGxlZnQgY29ybmVyICovCisgICAgcmVhbF9tYXBbJ00nXSA9ICcrJzsJLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnSyddID0gJysnOwkvKiB1cHBlciByaWdodCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnSiddID0gJysnOwkvKiBsb3dlciByaWdodCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnVCddID0gJysnOwkvKiB0ZWUgcG9pbnRpbmcgbGVmdCAqLworICAgIHJlYWxfbWFwWydVJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyByaWdodCAqLworICAgIHJlYWxfbWFwWydWJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyB1cCAqLworICAgIHJlYWxfbWFwWydXJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyBkb3duICovCisgICAgcmVhbF9tYXBbJ1EnXSA9ICctJzsJLyogaG9yaXpvbnRhbCBsaW5lICovCisgICAgcmVhbF9tYXBbJ1gnXSA9ICd8JzsJLyogdmVydGljYWwgbGluZSAqLworICAgIHJlYWxfbWFwWydOJ10gPSAnKyc7CS8qIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyICovCisgICAgLyogZG91YmxlLWxpbmUtZHJhd2luZyAqLworICAgIHJlYWxfbWFwWydDJ10gPSAnKyc7CS8qIHVwcGVyIGxlZnQgY29ybmVyICovCisgICAgcmVhbF9tYXBbJ0QnXSA9ICcrJzsJLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnQiddID0gJysnOwkvKiB1cHBlciByaWdodCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnQSddID0gJysnOwkvKiBsb3dlciByaWdodCBjb3JuZXIgKi8KKyAgICByZWFsX21hcFsnRyddID0gJysnOwkvKiB0ZWUgcG9pbnRpbmcgbGVmdCAqLworICAgIHJlYWxfbWFwWydGJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyByaWdodCAqLworICAgIHJlYWxfbWFwWydIJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyB1cCAqLworICAgIHJlYWxfbWFwWydJJ10gPSAnKyc7CS8qIHRlZSBwb2ludGluZyBkb3duICovCisgICAgcmVhbF9tYXBbJ1InXSA9ICctJzsJLyogaG9yaXpvbnRhbCBsaW5lICovCisgICAgcmVhbF9tYXBbJ1knXSA9ICd8JzsJLyogdmVydGljYWwgbGluZSAqLworICAgIHJlYWxfbWFwWydFJ10gPSAnKyc7CS8qIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyICovCiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICBDYWxsRHJpdmVyXzIoU1BfUEFSTSwgdGRfaW5pdGFjcywgcmVhbF9tYXAsIGZha2VfbWFwKTsKKyNlbHNlCiAgICAgaWYgKGVuYV9hY3MgIT0gTlVMTCkgewotCVRQVVRTX1RSQUNFKCJlbmFfYWNzIik7Ci0JcHV0cChlbmFfYWNzKTsKKwlOQ1VSU0VTX1BVVFAyKCJlbmFfYWNzIiwgZW5hX2Fjcyk7CiAgICAgfQogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiAgICAgLyoKQEAgLTE0MCw3ICsxODgsNyBAQAogCXNpemVfdCBpOwogCWZvciAoaSA9IDE7IGkgPCBBQ1NfTEVOOyArK2kpIHsKIAkgICAgaWYgKHJlYWxfbWFwW2ldID09IDApIHsKLQkJcmVhbF9tYXBbaV0gPSBpOworCQlyZWFsX21hcFtpXSA9IChjaHR5cGUpIGk7CiAJCWlmIChyZWFsX21hcCAhPSBmYWtlX21hcCkgewogCQkgICAgaWYgKFNQICE9IDApCiAJCQlTUC0+X3NjcmVlbl9hY3NfbWFwW2ldID0gVFJVRTsKQEAgLTE5MSw0ICsyMzksMTMgQEAKIAlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOwogICAgIH0KICNlbmRpZiAvKiBUUkFDRSAqLworI2VuZGlmCiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX2luaXRfYWNzKHZvaWQpCit7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19pbml0X2FjcykgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9saWJfYmF1ZHJhdGUuYyBiL25jdXJzZXMvdGluZm8vbGliX2JhdWRyYXRlLmMKaW5kZXggYjljZGZkYS4uMWNmNTUwNSAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9saWJfYmF1ZHJhdGUuYworKysgYi9uY3Vyc2VzL3RpbmZvL2xpYl9iYXVkcmF0ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsNyArMzgsNiBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4JCS8qIGN1cl90ZXJtLCBwYWRfY2hhciAqLwogI2luY2x1ZGUgPHRlcm1jYXAuaD4JCS8qIG9zcGVlZCAqLwogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CkBAIC01MCw3ICs0OSw3IEBACiAgKiBvZiB0aGUgaW5kaWNlcyB1cCB0byBCMTE1MjAwIGZpdCBuaWNlbHkgaW4gYSAnc2hvcnQnLCBhbGxvd2luZyB1cyB0byByZXRhaW4KICAqIG9zcGVlZCdzIHR5cGUgZm9yIGNvbXBhdGliaWxpdHkuCiAgKi8KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF92ZXJzaW9uIDwgNzAwMDAwKSkgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKQorI2lmIE5DVVJTRVNfT1NQRUVEX0NPTVBBVCAmJiAoKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfdmVyc2lvbiA8IDcwMDAwMCkpIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKQogI3VuZGVmIEIwCiAjdW5kZWYgQjUwCiAjdW5kZWYgQjc1CkBAIC04MCw3ICs3OSw3IEBACiAjdW5kZWYgVVNFX09MRF9UVFkKICNlbmRpZiAvKiBVU0VfT0xEX1RUWSAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX2JhdWRyYXRlLmMsdiAxLjI3IDIwMDgvMDYvMjggMTU6MTk6MjQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfYmF1ZHJhdGUuYyx2IDEuMzcgMjAxNS8wNi8xNCAwMDozNDoxMiB0b20gRXhwICQiKQogCiAvKgogICoJaW50CkBAIC05MSw1NCArOTAsNTUgQEAKICAqLwogCiBzdHJ1Y3Qgc3BlZWQgewotICAgIGludCBzOwkJCS8qIHZhbHVlIGZvciAnb3NwZWVkJyBpcyBhbiBpbmRleCAqLworICAgIE5DVVJTRVNfT1NQRUVEIHM7CQkvKiB2YWx1ZXMgZm9yICdvc3BlZWQnICovCiAgICAgaW50IHNwOwkJCS8qIHRoZSBhY3R1YWwgc3BlZWQgKi8KIH07CiAKKyNkZWZpbmUgREFUQShudW1iZXIpIHsgQiMjbnVtYmVyLCBudW1iZXIgfQorCiBzdGF0aWMgc3RydWN0IHNwZWVkIGNvbnN0IHNwZWVkc1tdID0KIHsKLSAgICB7QjAsIDB9LAotICAgIHtCNTAsIDUwfSwKLSAgICB7Qjc1LCA3NX0sCi0gICAge0IxMTAsIDExMH0sCi0gICAge0IxMzQsIDEzNH0sCi0gICAge0IxNTAsIDE1MH0sCi0gICAge0IyMDAsIDIwMH0sCi0gICAge0IzMDAsIDMwMH0sCi0gICAge0I2MDAsIDYwMH0sCi0gICAge0IxMjAwLCAxMjAwfSwKLSAgICB7QjE4MDAsIDE4MDB9LAotICAgIHtCMjQwMCwgMjQwMH0sCi0gICAge0I0ODAwLCA0ODAwfSwKLSAgICB7Qjk2MDAsIDk2MDB9LAorICAgIERBVEEoMCksCisgICAgREFUQSg1MCksCisgICAgREFUQSg3NSksCisgICAgREFUQSgxMTApLAorICAgIERBVEEoMTM0KSwKKyAgICBEQVRBKDE1MCksCisgICAgREFUQSgyMDApLAorICAgIERBVEEoMzAwKSwKKyAgICBEQVRBKDYwMCksCisgICAgREFUQSgxMjAwKSwKKyAgICBEQVRBKDE4MDApLAorICAgIERBVEEoMjQwMCksCisgICAgREFUQSg0ODAwKSwKKyAgICBEQVRBKDk2MDApLAogI2lmZGVmIEIxOTIwMAotICAgIHtCMTkyMDAsIDE5MjAwfSwKLSNlbHNlCi0jaWZkZWYgRVhUQQorICAgIERBVEEoMTkyMDApLAorI2VsaWYgZGVmaW5lZChFWFRBKQogICAgIHtFWFRBLCAxOTIwMH0sCiAjZW5kaWYKLSNlbmRpZgogI2lmZGVmIEIzODQwMAotICAgIHtCMzg0MDAsIDM4NDAwfSwKLSNlbHNlCi0jaWZkZWYgRVhUQgorICAgIERBVEEoMzg0MDApLAorI2VsaWYgZGVmaW5lZChFWFRCKQogICAgIHtFWFRCLCAzODQwMH0sCiAjZW5kaWYKLSNlbmRpZgogI2lmZGVmIEI1NzYwMAotICAgIHtCNTc2MDAsIDU3NjAwfSwKKyAgICBEQVRBKDU3NjAwKSwKICNlbmRpZgorICAgIC8qIGlmZGVmIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBPTERfVFRZIGlzIG5vdCBhdmFpbGFibGUgKi8KKyNpZiAhKE5DVVJTRVNfT1NQRUVEX0NPTVBBVCAmJiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPiA3MDAwMDApKQogI2lmZGVmIEIxMTUyMDAKLSAgICB7QjExNTIwMCwgMTE1MjAwfSwKKyAgICBEQVRBKDExNTIwMCksCiAjZW5kaWYKICNpZmRlZiBCMjMwNDAwCi0gICAge0IyMzA0MDAsIDIzMDQwMH0sCisgICAgREFUQSgyMzA0MDApLAogI2VuZGlmCiAjaWZkZWYgQjQ2MDgwMAotICAgIHtCNDYwODAwLCA0NjA4MDB9LAorICAgIERBVEEoNDYwODAwKSwKICNlbmRpZgogI2lmZGVmIEI5MjE2MDAKLSAgICB7QjkyMTYwMCwgOTIxNjAwfSwKKyAgICBEQVRBKDkyMTYwMCksCisjZW5kaWYKICNlbmRpZgogfTsKIApAQCAtMTYxLDE0ICsxNjEsMTQgQEAKICAgICBpZiAocmVzdWx0ID09IEVSUikgewogCWlmIChPU3BlZWQgPj0gMCkgewogCSAgICBmb3IgKGkgPSAwOyBpIDwgU0laRU9GKHNwZWVkcyk7IGkrKykgewotCQlpZiAoc3BlZWRzW2ldLnMgPT0gT1NwZWVkKSB7CisJCWlmICgoaW50KSBzcGVlZHNbaV0ucyA9PSBPU3BlZWQpIHsKIAkJICAgIHJlc3VsdCA9IHNwZWVkc1tpXS5zcDsKIAkJICAgIGJyZWFrOwogCQl9CiAJICAgIH0KIAl9CiAjaWYgIVVTRV9SRUVOVFJBTlQKLQlpZiAoT1NwZWVkID09IGxhc3RfT1NwZWVkKSB7CisJaWYgKE9TcGVlZCAhPSBsYXN0X09TcGVlZCkgewogCSAgICBsYXN0X09TcGVlZCA9IE9TcGVlZDsKIAkgICAgbGFzdF9iYXVkcmF0ZSA9IHJlc3VsdDsKIAl9CkBAIC0xOTUsMTEgKzE5NSwxMSBAQAogfQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1iYXVkcmF0ZSh2b2lkKQorTkNVUlNFU19TUF9OQU1FKGJhdWRyYXRlKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXN1bHQ7CiAKLSAgICBUKChUX0NBTExFRCgiYmF1ZHJhdGUoKSIpKSk7CisgICAgVCgoVF9DQUxMRUQoImJhdWRyYXRlKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKICAgICAvKgogICAgICAqIEluIGRlYnVnZ2luZywgYWxsb3cgdGhlIGVudmlyb25tZW50IHN5bWJvbCB0byBvdmVycmlkZSB3aGVuIHdlJ3JlCkBAIC0yMDcsMzIgKzIwNyw0MSBAQAogICAgICAqIHRoYXQgdGFrZSBpbnRvIGFjY291bnQgY29zdHMgdGhhdCBkZXBlbmQgb24gYmF1ZHJhdGUuCiAgICAgICovCiAjaWZkZWYgVFJBQ0UKLSAgICBpZiAoIWlzYXR0eShmaWxlbm8oU1AgPyBTUC0+X29mcCA6IHN0ZG91dCkpCisgICAgaWYgKElzVmFsaWRUSVNjcmVlbihTUF9QQVJNKQorCSYmICFOQ19JU0FUVFkoZmlsZW5vKFNQX1BBUk0gPyBTUF9QQVJNLT5fb2ZwIDogc3Rkb3V0KSkKIAkmJiBnZXRlbnYoIkJBVURSQVRFIikgIT0gMCkgewogCWludCByZXQ7CiAJaWYgKChyZXQgPSBfbmNfZ2V0ZW52X251bSgiQkFVRFJBVEUiKSkgPD0gMCkKIAkgICAgcmV0ID0gOTYwMDsKLQlvc3BlZWQgPSBfbmNfb3NwZWVkKHJldCk7CisJb3NwZWVkID0gKE5DVVJTRVNfT1NQRUVEKSBfbmNfb3NwZWVkKHJldCk7CiAJcmV0dXJuQ29kZShyZXQpOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKKyAgICBpZiAoSXNWYWxpZFRJU2NyZWVuKFNQX1BBUk0pKSB7CiAjaWZkZWYgVVNFX09MRF9UVFkKLQlyZXN1bHQgPSBjZmdldG9zcGVlZCgmY3VyX3Rlcm0tPk50dHliKTsKLQlvc3BlZWQgPSBfbmNfb3NwZWVkKHJlc3VsdCk7CisJcmVzdWx0ID0gKGludCkgY2ZnZXRvc3BlZWQoJihUZXJtaW5hbE9mKFNQX1BBUk0pLT5OdHR5YikpOworCW9zcGVlZCA9IChOQ1VSU0VTX09TUEVFRCkgX25jX29zcGVlZChyZXN1bHQpOwogI2Vsc2UgLyogIVVTRV9PTERfVFRZICovCiAjaWZkZWYgVEVSTUlPUwotCW9zcGVlZCA9IGNmZ2V0b3NwZWVkKCZjdXJfdGVybS0+TnR0eWIpOworCW9zcGVlZCA9IChOQ1VSU0VTX09TUEVFRCkgY2ZnZXRvc3BlZWQoJihUZXJtaW5hbE9mKFNQX1BBUk0pLT5OdHR5YikpOwogI2Vsc2UKLQlvc3BlZWQgPSBjdXJfdGVybS0+TnR0eWIuc2dfb3NwZWVkOworCW9zcGVlZCA9IChOQ1VSU0VTX09TUEVFRCkgVGVybWluYWxPZihTUF9QQVJNKS0+TnR0eWIuc2dfb3NwZWVkOwogI2VuZGlmCiAJcmVzdWx0ID0gX25jX2JhdWRyYXRlKG9zcGVlZCk7CiAjZW5kaWYKLQljdXJfdGVybS0+X2JhdWRyYXRlID0gcmVzdWx0OworCVRlcm1pbmFsT2YoU1BfUEFSTSktPl9iYXVkcmF0ZSA9IHJlc3VsdDsKICAgICB9IGVsc2UgewogCXJlc3VsdCA9IEVSUjsKICAgICB9CiAKICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitiYXVkcmF0ZSh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoYmF1ZHJhdGUpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX2N1cl90ZXJtLmMgYi9uY3Vyc2VzL3RpbmZvL2xpYl9jdXJfdGVybS5jCmluZGV4IDYyNjU3OGQuLjk5NDFkMTMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX2N1cl90ZXJtLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfY3VyX3Rlcm0uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM3LDY5ICszNywxMzkgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CQkvKiBUVFksIGN1cl90ZXJtICovCiAjaW5jbHVkZSA8dGVybWNhcC5oPgkJLyogb3NwZWVkICovCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfY3VyX3Rlcm0uYyx2IDEuMTggMjAwOC8wOC8xNiAxOToyMjo1NSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9jdXJfdGVybS5jLHYgMS4zMyAyMDE0LzAzLzA4IDIwOjMyOjU5IHRvbSBFeHAgJCIpCiAKICN1bmRlZiBDVVIKICNkZWZpbmUgQ1VSIHRlcm1wLT50eXBlLgogCi0jaWYgQlJPS0VOX0xJTktFUiB8fCBVU0VfUkVFTlRSQU5UCisjaWYgVVNFX1JFRU5UUkFOVAorCitOQ1VSU0VTX0VYUE9SVChURVJNSU5BTCAqKQorTkNVUlNFU19TUF9OQU1FKF9uY19nZXRfY3VyX3Rlcm0pIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgcmV0dXJuICgoMCAhPSBUZXJtaW5hbE9mKFNQX1BBUk0pKSA/IFRlcm1pbmFsT2YoU1BfUEFSTSkgOiBDdXJUZXJtKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKworTkNVUlNFU19FWFBPUlQoVEVSTUlOQUwgKikKK19uY19nZXRfY3VyX3Rlcm0odm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19nZXRfY3VyX3Rlcm0pIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogTkNVUlNFU19FWFBPUlQoVEVSTUlOQUwgKikKIE5DVVJTRVNfUFVCTElDX1ZBUihjdXJfdGVybSkgKHZvaWQpCiB7Ci0gICAgcmV0dXJuIChTUCAhPSAwICYmIFNQLT5fdGVybSAhPSAwKSA/IFNQLT5fdGVybSA6IF9uY19wcmVzY3JlZW4uX2N1cl90ZXJtOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19nZXRfY3VyX3Rlcm0pIChDVVJSRU5UX1NDUkVFTik7CisjZWxzZQorICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoX25jX2dldF9jdXJfdGVybSkgKE5DVVJTRVNfU1BfQVJHKTsKKyNlbmRpZgogfQorCiAjZWxzZQogTkNVUlNFU19FWFBPUlRfVkFSKFRFUk1JTkFMICopIGN1cl90ZXJtID0gMDsKICNlbmRpZgogCiBOQ1VSU0VTX0VYUE9SVChURVJNSU5BTCAqKQotc2V0X2N1cnRlcm0oVEVSTUlOQUwgKiB0ZXJtcCkKK05DVVJTRVNfU1BfTkFNRShzZXRfY3VydGVybSkgKE5DVVJTRVNfU1BfRENMeCBURVJNSU5BTCAqIHRlcm1wKQogewogICAgIFRFUk1JTkFMICpvbGR0ZXJtOwogCi0gICAgVCgoVF9DQUxMRUQoInNldF9jdXJ0ZXJtKCVwKSIpLCB0ZXJtcCkpOworICAgIFQoKFRfQ0FMTEVEKCJzZXRfY3VydGVybSglcCkiKSwgKHZvaWQgKikgdGVybXApKTsKIAogICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwogICAgIG9sZHRlcm0gPSBjdXJfdGVybTsKLSAgICBpZiAoU1ApCi0JU1AtPl90ZXJtID0gdGVybXA7Ci0jaWYgQlJPS0VOX0xJTktFUiB8fCBVU0VfUkVFTlRSQU5UCi0gICAgX25jX3ByZXNjcmVlbi5fY3VyX3Rlcm0gPSB0ZXJtcDsKKyAgICBpZiAoU1BfUEFSTSkKKwlTUF9QQVJNLT5fdGVybSA9IHRlcm1wOworI2lmIFVTRV9SRUVOVFJBTlQKKyAgICBDdXJUZXJtID0gdGVybXA7CiAjZWxzZQogICAgIGN1cl90ZXJtID0gdGVybXA7CiAjZW5kaWYKICAgICBpZiAodGVybXAgIT0gMCkgewotCW9zcGVlZCA9IF9uY19vc3BlZWQodGVybXAtPl9iYXVkcmF0ZSk7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqVENCID0gKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKikgdGVybXA7CisJb3NwZWVkID0gKE5DVVJTRVNfT1NQRUVEKSBfbmNfb3NwZWVkKHRlcm1wLT5fYmF1ZHJhdGUpOworCWlmIChUQ0ItPmRydi0+aXNUZXJtaW5mbyAmJiB0ZXJtcC0+dHlwZS5TdHJpbmdzKSB7CisJICAgIFBDID0gKGNoYXIpICgocGFkX2NoYXIgIT0gTlVMTCkgPyBwYWRfY2hhclswXSA6IDApOworCX0KKwlUQ0ItPmNzcCA9IFNQX1BBUk07CisjZWxzZQorCW9zcGVlZCA9IChOQ1VSU0VTX09TUEVFRCkgX25jX29zcGVlZCh0ZXJtcC0+X2JhdWRyYXRlKTsKIAlpZiAodGVybXAtPnR5cGUuU3RyaW5ncykgewogCSAgICBQQyA9IChjaGFyKSAoKHBhZF9jaGFyICE9IE5VTEwpID8gcGFkX2NoYXJbMF0gOiAwKTsKIAl9CisjZW5kaWYKICAgICB9CiAgICAgX25jX3VubG9ja19nbG9iYWwoY3Vyc2VzKTsKIAotICAgIFQoKFRfUkVUVVJOKCIlcCIpLCBvbGR0ZXJtKSk7CisgICAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopIG9sZHRlcm0pKTsKICAgICByZXR1cm4gKG9sZHRlcm0pOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoVEVSTUlOQUwgKikKK3NldF9jdXJ0ZXJtKFRFUk1JTkFMICogdGVybXApCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShzZXRfY3VydGVybSkgKENVUlJFTlRfU0NSRUVOLCB0ZXJtcCk7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKGRlbF9jdXJ0ZXJtKSAoTkNVUlNFU19TUF9EQ0x4IFRFUk1JTkFMICogdGVybXApCit7CisgICAgaW50IHJjID0gRVJSOworCisgICAgVCgoVF9DQUxMRUQoImRlbF9jdXJ0ZXJtKCVwLCAlcCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgKHZvaWQgKikgdGVybXApKTsKKworICAgIGlmICh0ZXJtcCAhPSAwKSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqVENCID0gKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKikgdGVybXA7CisjZW5kaWYKKwlURVJNSU5BTCAqY3VyID0gKAorI2lmIFVTRV9SRUVOVFJBTlQKKwkJCSAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2dldF9jdXJfdGVybSkgKE5DVVJTRVNfU1BfQVJHKQorI2Vsc2UKKwkJCSAgICBjdXJfdGVybQorI2VuZGlmCisJKTsKKworCV9uY19mcmVlX3Rlcm10eXBlKCYodGVybXAtPnR5cGUpKTsKKwlpZiAodGVybXAgPT0gY3VyKQorCSAgICBOQ1VSU0VTX1NQX05BTUUoc2V0X2N1cnRlcm0pIChOQ1VSU0VTX1NQX0FSR3ggMCk7CisKKwlGcmVlSWZOZWVkZWQodGVybXAtPl90ZXJtbmFtZSk7CisjaWYgVVNFX0hPTUVfVEVSTUlORk8KKwlpZiAoX25jX2dsb2JhbHMuaG9tZV90ZXJtaW5mbyAhPSAwKSB7CisJICAgIEZyZWVBbmROdWxsKF9uY19nbG9iYWxzLmhvbWVfdGVybWluZm8pOworCX0KKyNlbmRpZgorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCWlmIChUQ0ItPmRydikKKwkgICAgVENCLT5kcnYtPnRkX3JlbGVhc2UoVENCKTsKKyNlbmRpZgorCWZyZWUodGVybXApOworCisJcmMgPSBPSzsKKyAgICB9CisgICAgcmV0dXJuQ29kZShyYyk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBkZWxfY3VydGVybShURVJNSU5BTCAqIHRlcm1wKQogewogICAgIGludCByYyA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJkZWxfY3VydGVybSglcCkiKSwgdGVybXApKTsKLQogICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwotICAgIGlmICh0ZXJtcCAhPSAwKSB7Ci0JX25jX2ZyZWVfdGVybXR5cGUoJih0ZXJtcC0+dHlwZSkpOwotCUZyZWVJZk5lZWRlZCh0ZXJtcC0+X3Rlcm1uYW1lKTsKLQlmcmVlKHRlcm1wKTsKLQlpZiAodGVybXAgPT0gY3VyX3Rlcm0pCi0JICAgIHNldF9jdXJ0ZXJtKDApOwotCXJjID0gT0s7Ci0gICAgfQorICAgIHJjID0gTkNVUlNFU19TUF9OQU1FKGRlbF9jdXJ0ZXJtKSAoQ1VSUkVOVF9TQ1JFRU4sIHRlcm1wKTsKICAgICBfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOwogCi0gICAgcmV0dXJuQ29kZShyYyk7CisgICAgcmV0dXJuIChyYyk7CiB9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX2RhdGEuYyBiL25jdXJzZXMvdGluZm8vbGliX2RhdGEuYwppbmRleCBlODQyMDlkLi4wNmI2Zjg4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl9kYXRhLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfZGF0YS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDEsNyArNDIsNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9kYXRhLmMsdiAxLjUyIDIwMDgvMDgvMjMgMjI6MTY6MTUgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfZGF0YS5jLHYgMS42NiAyMDEzLzA4LzI0IDE3OjI4OjI0IHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBPUy8yJ3MgbmF0aXZlIGxpbmtlciBjb21wbGFpbnMgaWYgd2UgZG9uJ3QgaW5pdGlhbGl6ZSBwdWJsaWMgZGF0YSB3aGVuCkBAIC01MSwxNyArNTIsMTcgQEAKIE5DVVJTRVNfRVhQT1JUKFdJTkRPVyAqKQogTkNVUlNFU19QVUJMSUNfVkFSKHN0ZHNjcikgKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFNQID8gU1AtPl9zdGRzY3IgOiAwOworICAgIHJldHVybiBDVVJSRU5UX1NDUkVFTiA/IFN0ZFNjcmVlbihDVVJSRU5UX1NDUkVFTikgOiAwOwogfQogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCiBOQ1VSU0VTX1BVQkxJQ19WQVIoY3Vyc2NyKSAodm9pZCkKIHsKLSAgICByZXR1cm4gU1AgPyBTUC0+X2N1cnNjciA6IDA7CisgICAgcmV0dXJuIENVUlJFTlRfU0NSRUVOID8gQ3VyU2NyZWVuKENVUlJFTlRfU0NSRUVOKSA6IDA7CiB9CiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKIE5DVVJTRVNfUFVCTElDX1ZBUihuZXdzY3IpICh2b2lkKQogewotICAgIHJldHVybiBTUCA/IFNQLT5fbmV3c2NyIDogMDsKKyAgICByZXR1cm4gQ1VSUkVOVF9TQ1JFRU4gPyBOZXdTY3JlZW4oQ1VSUkVOVF9TQ1JFRU4pIDogMDsKIH0KICNlbHNlCiBOQ1VSU0VTX0VYUE9SVF9WQVIoV0lORE9XICopIHN0ZHNjciA9IDA7CkBAIC05Myw3ICs5NCw3IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfYWxsb2Nfc2NyZWVuKHZvaWQpCiB7Ci0gICAgcmV0dXJuICgobXlfc2NyZWVuID0gdHlwZUNhbGxvYyhTQ1JFRU4sIDEpKSAhPSAwKTsKKyAgICByZXR1cm4gKChteV9zY3JlZW4gPSBfbmNfYWxsb2Nfc2NyZWVuX3NwKCkpICE9IDApOwogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQpAQCAtMTAzLDYgKzEwNCw3IEBACiB9CiAKICNlbHNlCisKIE5DVVJTRVNfRVhQT1JUX1ZBUihTQ1JFRU4gKikgU1AgPSBOVUxMOyAvKiBTb21lIGxpbmtlcnMgcmVxdWlyZSBpbml0aWFsaXplZCBkYXRhLi4uICovCiAjZW5kaWYKIC8qICpJTkRFTlQtT0ZGKiAqLwpAQCAtMTEyLDYgKzExNCw3IEBACiAjZGVmaW5lIFRHRVRFTlRfMHMgeyBUR0VURU5UXzAsIFRHRVRFTlRfMCwgVEdFVEVOVF8wLCBUR0VURU5UXzAgfQogCiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19HTE9CQUxTKSBfbmNfZ2xvYmFscyA9IHsKKyAgICAwLAkJCQkvKiBoYXZlX3NpZ3RzdHAgKi8KICAgICAwLAkJCQkvKiBoYXZlX3NpZ3dpbmNoICovCiAgICAgMCwJCQkJLyogY2xlYW51cF9uZXN0ZWQgKi8KIApAQCAtMTIzLDEzICsxMjYsMTQgQEAKIAogICAgIEZBTFNFLAkJCS8qIGhhdmVfdGljX2RpcmVjdG9yeSAqLwogICAgIEZBTFNFLAkJCS8qIGtlZXBfdGljX2RpcmVjdG9yeSAqLwotICAgIFRFUk1JTkZPLAkJCS8qIHRpY19kaXJlY3RvcnkgKi8KKyAgICAwLAkJCQkvKiB0aWNfZGlyZWN0b3J5ICovCiAKICAgICBOVUxMLAkJCS8qIGRiaV9saXN0ICovCiAgICAgMCwJCQkJLyogZGJpX3NpemUgKi8KIAogICAgIE5VTEwsCQkJLyogZmlyc3RfbmFtZSAqLwogICAgIE5VTEwsCQkJLyoga2V5bmFtZV90YWJsZSAqLworICAgIDAsCQkJCS8qIGluaXRfa2V5bmFtZSAqLwogCiAgICAgMCwJCQkJLyogc2xrX2Zvcm1hdCAqLwogCkBAIC0xNDAsNyArMTQ0LDE1IEBACiAgICAgMCwJCQkJLyogdGdldGVudF9pbmRleCAqLwogICAgIDAsCQkJCS8qIHRnZXRlbnRfc2VxdWVuY2UgKi8KIAorICAgIDAsCQkJCS8qIGRiZF9ibG9iICovCisgICAgMCwJCQkJLyogZGJkX2xpc3QgKi8KKyAgICAwLAkJCQkvKiBkYmRfc2l6ZSAqLworICAgIDAsCQkJCS8qIGRiZF90aW1lICovCisgICAgeyB7IDAsIDAgfSB9LAkJLyogZGJkX3ZhcnMgKi8KKworI2lmbmRlZiBVU0VfU1BfV0lORE9XTElTVAogICAgIDAsCQkJCS8qIF9uY193aW5kb3dsaXN0ICovCisjZW5kaWYKIAogI2lmIFVTRV9IT01FX1RFUk1JTkZPCiAgICAgTlVMTCwJCQkvKiBob21lX3Rlcm1pbmZvICovCkBAIC0xNTEsNiArMTYzLDEwIEBACiAgICAgMCwJCQkJLyogc2FmZXByaW50X3Jvd3MgKi8KICNlbmRpZgogCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisgICAgMCwJCQkJLyogdGVybV9kcml2ZXIgKi8KKyNlbmRpZgorCiAjaWZkZWYgVFJBQ0UKICAgICBGQUxTRSwJCQkvKiBpbml0X3RyYWNlICovCiAgICAgQ0hBUlNfMHMsCQkJLyogdHJhY2VfZm5hbWUgKi8KQEAgLTE3NCw3ICsxOTAsOSBAQAogICAgIHsgQ0hBUlNfMHMsIENIQVJTXzBzIH0sCS8qIHRyYWNlYXRyX2NvbG9yX2J1ZiAqLwogICAgIDAsCQkJCS8qIHRyYWNlYXRyX2NvbG9yX3NlbCAqLwogICAgIC0xLAkJCQkvKiB0cmFjZWF0cl9jb2xvcl9sYXN0ICovCi0KKyNpZiAhZGVmaW5lZChVU0VfUFRIUkVBRFMpICYmIFVTRV9SRUVOVFJBTlQKKyAgICAwLAkJCQkvKiBuZXN0ZWRfdHJhY2VmICovCisjZW5kaWYKICNlbmRpZiAvKiBUUkFDRSAqLwogI2lmZGVmIFVTRV9QVEhSRUFEUwogICAgIFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIsCS8qIG11dGV4X2N1cnNlcyAqLwpAQCAtMTgzLDYgKzIwMSw5IEBACiAgICAgMCwJCQkJLyogbmVzdGVkX3RyYWNlZiAqLwogICAgIDAsCQkJCS8qIHVzZV9wdGhyZWFkcyAqLwogI2VuZGlmCisjaWYgVVNFX1BUSFJFQURTX0VJTlRSCisgICAgMCwJCQkJLyogcmVhZF90aHJlYWQgKi8KKyNlbmRpZgogfTsKIAogI2RlZmluZSBTVEFDS19GUkFNRV8wCXsgeyAwIH0sIDAgfQpAQCAtMTk2LDggKzIxNywxMCBAQAogICAgIFRSVUUsCQkJLyogdXNlX2VudiAqLwogICAgIEZBTFNFLAkJCS8qIGZpbHRlcl9tb2RlICovCiAgICAgQV9OT1JNQUwsCQkJLyogcHJldmlvdXNfYXR0ciAqLworI2lmbmRlZiBVU0VfU1BfUklQT0ZGCiAgICAgUklQT0ZGXzBzLAkJCS8qIHJpcG9mZiAqLwogICAgIE5VTEwsCQkJLyogcnNwICovCisjZW5kaWYKICAgICB7CQkJCS8qIHRwYXJtX3N0YXRlICovCiAjaWZkZWYgVFJBQ0UKIAlOVUxMLAkJCS8qIHRuYW1lICovCkBAIC0yMjEsMTkgKzI0NCwzOSBAQAogI2lmIE5DVVJTRVNfTk9fUEFERElORwogICAgIEZBTFNFLAkJCS8qIGZsYWcgdG8gc2V0IGlmIHBhZGRpbmcgZGlzYWJsZWQgICovCiAjZW5kaWYKKyAgICAwLAkJCQkvKiBfb3V0Y2ggKi8KICNpZiBCUk9LRU5fTElOS0VSIHx8IFVTRV9SRUVOVFJBTlQKICAgICBOVUxMLAkJCS8qIHJlYWxfYWNzX21hcCAqLwogICAgIDAsCQkJCS8qIExJTkVTICovCiAgICAgMCwJCQkJLyogQ09MUyAqLworICAgIDgsCQkJCS8qIFRBQlNJWkUgKi8KKyAgICAxMDAwLAkJCS8qIEVTQ0RFTEFZICovCiAgICAgMCwJCQkJLyogY3VyX3Rlcm0gKi8KICNpZmRlZiBUUkFDRQogICAgIDBMLAkJCQkvKiBfb3V0Y2hhcnMgKi8KICAgICBOVUxMLAkJCS8qIF90cHV0c190cmFjZSAqLwogI2VuZGlmCiAjZW5kaWYKKyAgICBGQUxTRSwJCQkvKiB1c2VfdGlvY3RsICovCiB9OwogLyogKklOREVOVC1PTiogKi8KIAorLyoKKyAqIHdnZXRjaCgpIGFuZCBvdGhlciBmdW5jdGlvbnMgd2l0aCBhIFdJTkRPVyogcGFyYW1ldGVyIG1heSB1c2UgYSBTQ1JFRU4qCisgKiBpbnRlcm5hbGx5LCBhbmQgaXQgaXMgdXNlZnVsIHRvIGFsbG93IHRob3NlIHRvIGJlIGludm9rZWQgd2l0aG91dCBzd2l0Y2hpbmcKKyAqIFNDUkVFTidzLCBlLmcuLCBmb3IgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLgorICovCitOQ1VSU0VTX0VYUE9SVChTQ1JFRU4gKikKK19uY19zY3JlZW5fb2YoV0lORE9XICp3aW4pCit7CisgICAgU0NSRUVOICpzcCA9IDA7CisKKyAgICBpZiAod2luICE9IDApIHsKKwlzcCA9IFdJTkRPV19FWFQod2luLCBzY3JlZW4pOworICAgIH0KKyAgICByZXR1cm4gKHNwKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZmRlZiBVU0VfUFRIUkVBRFMKIHN0YXRpYyB2b2lkCkBAIC0zMTQsNyArMzU3LDkgQEAKIAlyZXR1cm4gMDsKICAgICByZXR1cm4gcHRocmVhZF9tdXRleF91bmxvY2sob2JqKTsKIH0KKyNlbmRpZiAvKiBVU0VfUFRIUkVBRFMgKi8KIAorI2lmIGRlZmluZWQoVVNFX1BUSFJFQURTKSB8fCBVU0VfUFRIUkVBRFNfRUlOVFIKICNpZiBVU0VfV0VBS19TWU1CT0xTCiAvKgogICogTkI6IHNpZ3Byb2NtYXNrKDIpIGlzIGdsb2JhbCBidXQgcHRocmVhZF9zaWdtYXNrKDNwKQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9saWJfaGFzX2NhcC5jIGIvbmN1cnNlcy90aW5mby9saWJfaGFzX2NhcC5jCmluZGV4IDBkYzY2YmQuLjE3ZTU5ZDUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX2hhc19jYXAuYworKysgYi9uY3Vyc2VzL3RpbmZvL2xpYl9oYXNfY2FwLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LTIwMDMgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00MSwyNSArNDIsNTMgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLSNpbmNsdWRlIDx0ZXJtLmg+CisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2hhc19jYXAuYyx2IDEuNCAyMDAzLzEwLzI1IDE5OjQzOjU1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2hhc19jYXAuYyx2IDEuMTAgMjAxMy8xMS8xNiAxOTo1NzoyMiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChib29sKQorTkNVUlNFU19TUF9OQU1FKGhhc19pYykgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBib29sIGNvZGUgPSBGQUxTRTsKKworICAgIFQoKFRfQ0FMTEVEKCJoYXNfaWMoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmIChIYXNUSW5mb1Rlcm1pbmFsKFNQX1BBUk0pKSB7CisJY29kZSA9ICgoaW5zZXJ0X2NoYXJhY3RlciB8fCBwYXJtX2ljaAorCQkgfHwgKGVudGVyX2luc2VydF9tb2RlICYmIGV4aXRfaW5zZXJ0X21vZGUpKQorCQkmJiAoZGVsZXRlX2NoYXJhY3RlciB8fCBwYXJtX2RjaCkpID8gVFJVRSA6IEZBTFNFOworICAgIH0KKworICAgIHJldHVybkNvZGUoY29kZSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChib29sKQogaGFzX2ljKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImhhc19pYygpIikpKTsKLSAgICByZXR1cm5Db2RlKGN1cl90ZXJtICYmCi0JICAgICAgIChpbnNlcnRfY2hhcmFjdGVyIHx8IHBhcm1faWNoCi0JCXx8IChlbnRlcl9pbnNlcnRfbW9kZSAmJiBleGl0X2luc2VydF9tb2RlKSkKLQkgICAgICAgJiYgKGRlbGV0ZV9jaGFyYWN0ZXIgfHwgcGFybV9kY2gpKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGhhc19pYykgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChib29sKQorTkNVUlNFU19TUF9OQU1FKGhhc19pbCkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBib29sIGNvZGUgPSBGQUxTRTsKKyAgICBUKChUX0NBTExFRCgiaGFzX2lsKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisgICAgaWYgKEhhc1RJbmZvVGVybWluYWwoU1BfUEFSTSkpIHsKKwljb2RlID0gKChpbnNlcnRfbGluZSB8fCBwYXJtX2luc2VydF9saW5lKQorCQkmJiAoZGVsZXRlX2xpbmUgfHwgcGFybV9kZWxldGVfbGluZSkpID8gVFJVRSA6IEZBTFNFOworICAgIH0KKworICAgIHJldHVybkNvZGUoY29kZSk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChib29sKQogaGFzX2lsKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImhhc19pbCgpIikpKTsKLSAgICByZXR1cm5Db2RlKGN1cl90ZXJtCi0JICAgICAgICYmIChpbnNlcnRfbGluZSB8fCBwYXJtX2luc2VydF9saW5lKQotCSAgICAgICAmJiAoZGVsZXRlX2xpbmUgfHwgcGFybV9kZWxldGVfbGluZSkpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaGFzX2lsKSAoQ1VSUkVOVF9TQ1JFRU4pOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl9rZXJuZWwuYyBiL25jdXJzZXMvdGluZm8vbGliX2tlcm5lbC5jCmluZGV4IDg5ZGMxZTguLjM3ZjcwODQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX2tlcm5lbC5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX2tlcm5lbC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNyArMjksOCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAyMDAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAyMDAyICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00Niw5ICs0Nyw4IEBACiAgKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgkJLyogY3VyX3Rlcm0gKi8KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9rZXJuZWwuYyx2IDEuMjQgMjAwNC8wNS8wOCAxNzoxMToyMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9rZXJuZWwuYyx2IDEuMzEgMjAxMC8xMi8xOSAwMToyMToxOSB0b20gRXhwICQiKQogCiBzdGF0aWMgaW50CiBfbmNfdmRpc2FibGUodm9pZCkKQEAgLTU5LDcgKzU5LDcgQEAKICNlbmRpZgogI2lmIGRlZmluZWQoX1BDX1ZESVNBQkxFKQogICAgIGlmICh2YWx1ZSA9PSAtMSkgewotCXZhbHVlID0gZnBhdGhjb25mKDAsIF9QQ19WRElTQUJMRSk7CisJdmFsdWUgPSAoaW50KSBmcGF0aGNvbmYoMCwgX1BDX1ZESVNBQkxFKTsKIAlpZiAodmFsdWUgPT0gLTEpIHsKIAkgICAgdmFsdWUgPSAwMzc3OwogCX0KQEAgLTc5LDIzICs3OSwzMyBAQAogICovCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIpCi1lcmFzZWNoYXIodm9pZCkKK05DVVJTRVNfU1BfTkFNRShlcmFzZWNoYXIpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJlc3VsdCA9IEVSUjsKLSAgICBUKChUX0NBTExFRCgiZXJhc2VjaGFyKCkiKSkpOworICAgIFRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgeworICAgIFQoKFRfQ0FMTEVEKCJlcmFzZWNoYXIoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKworICAgIGlmICh0ZXJtcCAhPSAwKSB7CiAjaWZkZWYgVEVSTUlPUwotCXJlc3VsdCA9IGN1cl90ZXJtLT5PdHR5Yi5jX2NjW1ZFUkFTRV07CisJcmVzdWx0ID0gdGVybXAtPk90dHliLmNfY2NbVkVSQVNFXTsKIAlpZiAocmVzdWx0ID09IF9uY192ZGlzYWJsZSgpKQogCSAgICByZXN1bHQgPSBFUlI7CiAjZWxzZQotCXJlc3VsdCA9IGN1cl90ZXJtLT5PdHR5Yi5zZ19lcmFzZTsKKwlyZXN1bHQgPSB0ZXJtcC0+T3R0eWIuc2dfZXJhc2U7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuQ29kZShyZXN1bHQpOworICAgIHJldHVybkNoYXIoKGNoYXIpIHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChjaGFyKQorZXJhc2VjaGFyKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShlcmFzZWNoYXIpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogLyoKICAqCWtpbGxjaGFyKCkKICAqCkBAIC0xMDQsMjMgKzExNCwzMyBAQAogICovCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIpCi1raWxsY2hhcih2b2lkKQorTkNVUlNFU19TUF9OQU1FKGtpbGxjaGFyKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXN1bHQgPSBFUlI7Ci0gICAgVCgoVF9DQUxMRUQoImtpbGxjaGFyKCkiKSkpOworICAgIFRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgeworICAgIFQoKFRfQ0FMTEVEKCJraWxsY2hhciglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworCisgICAgaWYgKHRlcm1wICE9IDApIHsKICNpZmRlZiBURVJNSU9TCi0JcmVzdWx0ID0gY3VyX3Rlcm0tPk90dHliLmNfY2NbVktJTExdOworCXJlc3VsdCA9IHRlcm1wLT5PdHR5Yi5jX2NjW1ZLSUxMXTsKIAlpZiAocmVzdWx0ID09IF9uY192ZGlzYWJsZSgpKQogCSAgICByZXN1bHQgPSBFUlI7CiAjZWxzZQotCXJlc3VsdCA9IGN1cl90ZXJtLT5PdHR5Yi5zZ19raWxsOworCXJlc3VsdCA9IHRlcm1wLT5PdHR5Yi5zZ19raWxsOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybkNvZGUocmVzdWx0KTsKKyAgICByZXR1cm5DaGFyKChjaGFyKSByZXN1bHQpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoY2hhcikKK2tpbGxjaGFyKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShraWxsY2hhcikgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCiAvKgogICoJZmx1c2hpbnAoKQogICoKQEAgLTEyOSwyNiArMTQ5LDM2IEBACiAgKi8KIAogTkNVUlNFU19FWFBPUlQoaW50KQotZmx1c2hpbnAodm9pZCkKK05DVVJTRVNfU1BfTkFNRShmbHVzaGlucCkgKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICBUKChUX0NBTExFRCgiZmx1c2hpbnAoKSIpKSk7CisgICAgVEVSTUlOQUwgKnRlcm1wID0gVGVybWluYWxPZihTUF9QQVJNKTsKIAotICAgIGlmIChjdXJfdGVybSAhPSAwKSB7CisgICAgVCgoVF9DQUxMRUQoImZsdXNoaW5wKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisKKyAgICBpZiAodGVybXAgIT0gMCkgewogI2lmZGVmIFRFUk1JT1MKLQl0Y2ZsdXNoKGN1cl90ZXJtLT5GaWxlZGVzLCBUQ0lGTFVTSCk7CisJdGNmbHVzaCh0ZXJtcC0+RmlsZWRlcywgVENJRkxVU0gpOwogI2Vsc2UKIAllcnJubyA9IDA7CiAJZG8gewotCSAgICBpb2N0bChjdXJfdGVybS0+RmlsZWRlcywgVElPQ0ZMVVNILCAwKTsKKwkgICAgaW9jdGwodGVybXAtPkZpbGVkZXMsIFRJT0NGTFVTSCwgMCk7CiAJfSB3aGlsZQogCSAgICAoZXJybm8gPT0gRUlOVFIpOwogI2VuZGlmCi0JaWYgKFNQKSB7Ci0JICAgIFNQLT5fZmlmb2hlYWQgPSAtMTsKLQkgICAgU1AtPl9maWZvdGFpbCA9IDA7Ci0JICAgIFNQLT5fZmlmb3BlZWsgPSAwOworCWlmIChTUF9QQVJNKSB7CisJICAgIFNQX1BBUk0tPl9maWZvaGVhZCA9IC0xOworCSAgICBTUF9QQVJNLT5fZmlmb3RhaWwgPSAwOworCSAgICBTUF9QQVJNLT5fZmlmb3BlZWsgPSAwOwogCX0KIAlyZXR1cm5Db2RlKE9LKTsKICAgICB9CiAgICAgcmV0dXJuQ29kZShFUlIpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorZmx1c2hpbnAodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGZsdXNoaW5wKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl9sb25nbmFtZS5jIGIvbmN1cnNlcy90aW5mby9saWJfbG9uZ25hbWUuYwppbmRleCAxMzAxZWU1Li5mYTIzMWI4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl9sb25nbmFtZS5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX2xvbmduYW1lLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDAsNyArNDIsNDggQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfbG9uZ25hbWUuYyx2IDEuOSAyMDAwLzEyLzEwIDAyOjU1OjA3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2xvbmduYW1lLmMsdiAxLjEzIDIwMTUvMDcvMjUgMjA6MDg6MTQgdG9tIEV4cCAkIikKKworI2lmIFVTRV9SRUVOVFJBTlQKK05DVVJTRVNfRVhQT1JUKGNoYXIgKikKK05DVVJTRVNfU1BfTkFNRShsb25nbmFtZSkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBzdGF0aWMgY2hhciBlbXB0eVtdID0KKyAgICB7J1wwJ307CisgICAgY2hhciAqcHRyOworCisgICAgVCgoVF9DQUxMRUQoImxvbmduYW1lKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisKKyAgICBpZiAoU1BfUEFSTSkgeworCWZvciAocHRyID0gU1BfUEFSTS0+X3R0eXR5cGUgKyBzdHJsZW4oU1BfUEFSTS0+X3R0eXR5cGUpOworCSAgICAgcHRyID4gU1BfUEFSTS0+X3R0eXR5cGU7CisJICAgICBwdHItLSkKKwkgICAgaWYgKCpwdHIgPT0gJ3wnKQorCQlyZXR1cm5QdHIocHRyICsgMSk7CisJcmV0dXJuUHRyKFNQX1BBUk0tPl90dHl0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGVtcHR5OworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoY2hhciAqKQorbG9uZ25hbWUodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKGxvbmduYW1lKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKKyNlbHNlCisKKy8qIGEgZHVtbXkgZW50cnlwb2ludCBpcyBzaW1wbGVyIHRoYW4gZ2VuZXJhdGluZyBhIGNvbmRpdGlvbmFsIGluIGN1cnNlcy5oICovCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoY2hhciAqKQorTkNVUlNFU19TUF9OQU1FKGxvbmduYW1lKSAoTkNVUlNFU19TUF9EQ0wwKQoreworICAgICh2b2lkKSBTUF9QQVJNOworICAgIHJldHVybiBsb25nbmFtZSgpOworfQorI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKIGxvbmduYW1lKHZvaWQpCkBAIC00OSw5ICs5MiwxMSBAQAogCiAgICAgVCgoVF9DQUxMRUQoImxvbmduYW1lKCkiKSkpOwogCi0gICAgZm9yIChwdHIgPSB0dHl0eXBlICsgc3RybGVuKHR0eXR5cGUpOyBwdHIgPiB0dHl0eXBlOyBwdHItLSkKKyAgICBmb3IgKHB0ciA9IHR0eXR5cGUgKyBzdHJsZW4odHR5dHlwZSk7CisJIHB0ciA+IHR0eXR5cGU7CisJIHB0ci0tKQogCWlmICgqcHRyID09ICd8JykKIAkgICAgcmV0dXJuUHRyKHB0ciArIDEpOwotCiAgICAgcmV0dXJuUHRyKHR0eXR5cGUpOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl9uYXBtcy5jIGIvbmN1cnNlcy90aW5mby9saWJfbmFwbXMuYwppbmRleCA0MTdiM2I0Li5kZjE3MzYzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl9uYXBtcy5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX25hcG1zLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDksMTMgKzUxLDIxIEBACiAjZW5kaWYKICNlbmRpZgogCi1NT0RVTEVfSUQoIiRJZDogbGliX25hcG1zLmMsdiAxLjE3IDIwMDgvMDUvMDMgMjE6MzQ6MTMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfbmFwbXMuYyx2IDEuMjQgMjAxNC8wMy8wOCAyMDozMjo1OSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1uYXBtcyhpbnQgbXMpCitOQ1VSU0VTX1NQX05BTUUobmFwbXMpIChOQ1VSU0VTX1NQX0RDTHggaW50IG1zKQogewogICAgIFQoKFRfQ0FMTEVEKCJuYXBtcyglZCkiKSwgbXMpKTsKIAorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGlmIChIYXNUZXJtaW5hbChTUF9QQVJNKSkgeworCUNhbGxEcml2ZXJfMShTUF9QQVJNLCB0ZF9uYXAsIG1zKTsKKyAgICB9CisjZWxzZSAvKiAhVVNFX1RFUk1fRFJJVkVSICovCisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgICh2b2lkKSBzcDsKKyNlbmRpZgogI2lmIEhBVkVfTkFOT1NMRUVQCiAgICAgewogCXN0cnVjdCB0aW1lc3BlYyByZXF1ZXN0LCByZW1haW5pbmc7CkBAIC02OSw2ICs3OSwxNSBAQAogI2Vsc2UKICAgICBfbmNfdGltZWRfd2FpdCgwLCAwLCBtcywgKGludCAqKSAwIEVWRU5UTElTVF8ybmQoMCkpOwogI2VuZGlmCisjZW5kaWYgLyogIVVTRV9URVJNX0RSSVZFUiAqLwogCiAgICAgcmV0dXJuQ29kZShPSyk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCituYXBtcyhpbnQgbXMpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShuYXBtcykgKENVUlJFTlRfU0NSRUVOLCBtcyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX29wdGlvbnMuYyBiL25jdXJzZXMvdGluZm8vbGliX29wdGlvbnMuYwppbmRleCBmM2IxNDg1Li5iNzM2ZDVmIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl9vcHRpb25zLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfb3B0aW9ucy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDEsNTMgKzQyLDcxIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi0jaW5jbHVkZSA8dGVybS5oPgorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9vcHRpb25zLmMsdiAxLjU4IDIwMDgvMDgvMTYgMjE6MjA6NDggV2VybmVyLkZpbmsgRXhwICQiKQotCi1zdGF0aWMgaW50IF9uY19jdXJzX3NldChTQ1JFRU4gKiwgaW50KTsKLXN0YXRpYyBpbnQgX25jX21ldGEoU0NSRUVOICosIGJvb2wpOworTU9EVUxFX0lEKCIkSWQ6IGxpYl9vcHRpb25zLmMsdiAxLjc4IDIwMTQvMDkvMjcgMjE6NTU6MjQgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogaWRsb2soV0lORE9XICp3aW4sIGJvb2wgZmxhZykKIHsKLSAgICBUKChUX0NBTExFRCgiaWRsb2soJXAsJWQpIiksIHdpbiwgZmxhZykpOworICAgIGludCByZXMgPSBFUlI7CisgICAgVCgoVF9DQUxMRUQoImlkbG9rKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIGZsYWcpKTsKIAogICAgIGlmICh3aW4pIHsKLQlfbmNfaWRsb2sgPSB3aW4tPl9pZGxvayA9IChmbGFnICYmIChoYXNfaWwoKSB8fCBjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbikpOwotCXJldHVybkNvZGUoT0spOwotICAgIH0gZWxzZQotCXJldHVybkNvZGUoRVJSKTsKKwlTQ1JFRU4gKnNwID0gX25jX3NjcmVlbl9vZih3aW4pOworCWlmIChzcCAhPSAwCisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJICAgICYmIElzVGVybUluZm8oc3ApCisjZW5kaWYKKwkgICAgKSB7CisJICAgIHNwLT5fbmNfc3BfaWRsb2sgPQorCQl3aW4tPl9pZGxvayA9IChmbGFnICYmIChOQ1VSU0VTX1NQX05BTUUoaGFzX2lsKSAoTkNVUlNFU19TUF9BUkcpCisJCQkJCXx8IGNoYW5nZV9zY3JvbGxfcmVnaW9uKSk7CisJICAgIHJlcyA9IE9LOworCX0KKyAgICB9CisgICAgcmV0dXJuQ29kZShyZXMpOwogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogaWRjb2soV0lORE9XICp3aW4sIGJvb2wgZmxhZykKIHsKLSAgICBUKChUX0NBTExFRCgiaWRjb2soJXAsJWQpIiksIHdpbiwgZmxhZykpOworICAgIFQoKFRfQ0FMTEVEKCJpZGNvayglcCwlZCkiKSwgKHZvaWQgKikgd2luLCBmbGFnKSk7CiAKLSAgICBpZiAod2luKQotCV9uY19pZGNvayA9IHdpbi0+X2lkY29rID0gKGZsYWcgJiYgaGFzX2ljKCkpOwotCisgICAgaWYgKHdpbikgeworCVNDUkVFTiAqc3AgPSBfbmNfc2NyZWVuX29mKHdpbik7CisJc3AtPl9uY19zcF9pZGNvayA9IHdpbi0+X2lkY29rID0gKGZsYWcgJiYgTkNVUlNFU19TUF9OQU1FKGhhc19pYykgKE5DVVJTRVNfU1BfQVJHKSk7CisgICAgfQogICAgIHJldHVyblZvaWQ7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLWhhbGZkZWxheShpbnQgdCkKK05DVVJTRVNfU1BfTkFNRShoYWxmZGVsYXkpIChOQ1VSU0VTX1NQX0RDTHggaW50IHQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImhhbGZkZWxheSglZCkiKSwgdCkpOworICAgIFQoKFRfQ0FMTEVEKCJoYWxmZGVsYXkoJXAsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIHQpKTsKIAotICAgIGlmICh0IDwgMSB8fCB0ID4gMjU1IHx8IFNQID09IDApCisgICAgaWYgKHQgPCAxIHx8IHQgPiAyNTUgfHwgIUlzVmFsaWRUSVNjcmVlbihTUF9QQVJNKSkKIAlyZXR1cm5Db2RlKEVSUik7CiAKLSAgICBjYnJlYWsoKTsKLSAgICBTUC0+X2NicmVhayA9IHQgKyAxOworICAgIE5DVVJTRVNfU1BfTkFNRShjYnJlYWspIChOQ1VSU0VTX1NQX0FSRyk7CisgICAgU1BfUEFSTS0+X2NicmVhayA9IHQgKyAxOwogICAgIHJldHVybkNvZGUoT0spOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQoraGFsZmRlbGF5KGludCB0KQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaGFsZmRlbGF5KSAoQ1VSUkVOVF9TQ1JFRU4sIHQpOworfQorI2VuZGlmCisKIE5DVVJTRVNfRVhQT1JUKGludCkKIG5vZGVsYXkoV0lORE9XICp3aW4sIGJvb2wgZmxhZykKIHsKLSAgICBUKChUX0NBTExFRCgibm9kZWxheSglcCwlZCkiKSwgd2luLCBmbGFnKSk7CisgICAgVCgoVF9DQUxMRUQoIm5vZGVsYXkoJXAsJWQpIiksICh2b2lkICopIHdpbiwgZmxhZykpOwogCiAgICAgaWYgKHdpbikgewogCWlmIChmbGFnID09IFRSVUUpCkBAIC0xMDIsNyArMTIxLDcgQEAKIE5DVVJTRVNfRVhQT1JUKGludCkKIG5vdGltZW91dChXSU5ET1cgKndpbiwgYm9vbCBmKQogewotICAgIFQoKFRfQ0FMTEVEKCJub3RpbWVvdXQoJXAsJWQpIiksIHdpbiwgZikpOworICAgIFQoKFRfQ0FMTEVEKCJub3RpbWVvdXQoJXAsJWQpIiksICh2b2lkICopIHdpbiwgZikpOwogCiAgICAgaWYgKHdpbikgewogCXdpbi0+X25vdGltZW91dCA9IGY7CkBAIC0xMTQsNyArMTMzLDcgQEAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiB3dGltZW91dChXSU5ET1cgKndpbiwgaW50IGRlbGF5KQogewotICAgIFQoKFRfQ0FMTEVEKCJ3dGltZW91dCglcCwlZCkiKSwgd2luLCBkZWxheSkpOworICAgIFQoKFRfQ0FMTEVEKCJ3dGltZW91dCglcCwlZCkiKSwgKHZvaWQgKikgd2luLCBkZWxheSkpOwogCiAgICAgaWYgKHdpbikgewogCXdpbi0+X2RlbGF5ID0gZGVsYXk7CkBAIC0xMjUsMTEgKzE0NCwxMSBAQAogTkNVUlNFU19FWFBPUlQoaW50KQoga2V5cGFkKFdJTkRPVyAqd2luLCBib29sIGZsYWcpCiB7Ci0gICAgVCgoVF9DQUxMRUQoImtleXBhZCglcCwlZCkiKSwgd2luLCBmbGFnKSk7CisgICAgVCgoVF9DQUxMRUQoImtleXBhZCglcCwlZCkiKSwgKHZvaWQgKikgd2luLCBmbGFnKSk7CiAKICAgICBpZiAod2luKSB7CiAJd2luLT5fdXNlX2tleXBhZCA9IGZsYWc7Ci0JcmV0dXJuQ29kZShfbmNfa2V5cGFkKFNQLCBmbGFnKSk7CisJcmV0dXJuQ29kZShfbmNfa2V5cGFkKF9uY19zY3JlZW5fb2Yod2luKSwgZmxhZykpOwogICAgIH0gZWxzZQogCXJldHVybkNvZGUoRVJSKTsKIH0KQEAgLTEzNywzOCArMTU2LDEwNyBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogbWV0YShXSU5ET1cgKndpbiBHQ0NfVU5VU0VELCBib29sIGZsYWcpCiB7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0gRVJSOworICAgIFNDUkVFTiAqc3AgPSAod2luID09IDApID8gQ1VSUkVOVF9TQ1JFRU4gOiBfbmNfc2NyZWVuX29mKHdpbik7CiAKICAgICAvKiBPaywgd2Ugc3RheSByZWxheGVkIGFuZCBkb24ndCBzaWduYWwgYW4gZXJyb3IgaWYgd2luIGlzIE5VTEwgKi8KLSAgICBUKChUX0NBTExFRCgibWV0YSglcCwlZCkiKSwgd2luLCBmbGFnKSk7Ci0gICAgcmVzdWx0ID0gX25jX21ldGEoU1AsIGZsYWcpOworICAgIFQoKFRfQ0FMTEVEKCJtZXRhKCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sIGZsYWcpKTsKKworICAgIC8qIE9rLCB3ZSBzdGF5IHJlbGF4ZWQgYW5kIGRvbid0IHNpZ25hbCBhbiBlcnJvciBpZiB3aW4gaXMgTlVMTCAqLworCisgICAgaWYgKHNwICE9IDApIHsKKwlzcC0+X3VzZV9tZXRhID0gZmxhZzsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlpZiAoSXNUZXJtSW5mbyhzcCkpIHsKKwkgICAgaWYgKGZsYWcpIHsKKwkJTkNVUlNFU19QVVRQMigibWV0YV9vbiIsIG1ldGFfb24pOworCSAgICB9IGVsc2UgeworCQlOQ1VSU0VTX1BVVFAyKCJtZXRhX29mZiIsIG1ldGFfb2ZmKTsKKwkgICAgfQorCX0KKyNlbHNlCisJaWYgKGZsYWcpIHsKKwkgICAgTkNVUlNFU19QVVRQMigibWV0YV9vbiIsIG1ldGFfb24pOworCX0gZWxzZSB7CisJICAgIE5DVVJTRVNfUFVUUDIoIm1ldGFfb2ZmIiwgbWV0YV9vZmYpOworCX0KKyNlbmRpZgorCXJlc3VsdCA9IE9LOworICAgIH0KICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKIC8qIGN1cnNfc2V0KCkgbW92ZWQgaGVyZSB0byBuYXJyb3cgdGhlIGtlcm5lbCBpbnRlcmZhY2UgKi8KIAogTkNVUlNFU19FWFBPUlQoaW50KQotY3Vyc19zZXQoaW50IHZpcykKK05DVVJTRVNfU1BfTkFNRShjdXJzX3NldCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgdmlzKQogewotICAgIGludCByZXN1bHQ7CisgICAgaW50IGNvZGUgPSBFUlI7CisgICAgVCgoVF9DQUxMRUQoImN1cnNfc2V0KCVwLCVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCB2aXMpKTsKIAotICAgIFQoKFRfQ0FMTEVEKCJjdXJzX3NldCglZCkiKSwgdmlzKSk7Ci0gICAgcmVzdWx0ID0gX25jX2N1cnNfc2V0KFNQLCB2aXMpOwotICAgIHJldHVybkNvZGUocmVzdWx0KTsKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmIHZpcyA+PSAwICYmIHZpcyA8PSAyKSB7CisJaW50IGN1cnNvciA9IFNQX1BBUk0tPl9jdXJzb3I7CisJaWYgKHZpcyA9PSBjdXJzb3IpIHsKKwkgICAgY29kZSA9IGN1cnNvcjsKKwl9IGVsc2UgeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCSAgICBjb2RlID0gQ2FsbERyaXZlcl8xKFNQX1BBUk0sIHRkX2N1cnNvclNldCwgdmlzKTsKKyNlbHNlCisJICAgIGlmIChJc1Rlcm1JbmZvKFNQX1BBUk0pKSB7CisJCXN3aXRjaCAodmlzKSB7CisJCWNhc2UgMjoKKwkJICAgIGNvZGUgPSBOQ1VSU0VTX1BVVFAyX0ZMVVNIKCJjdXJzb3JfdmlzaWJsZSIsCisJCQkJCSAgICAgICBjdXJzb3JfdmlzaWJsZSk7CisJCSAgICBicmVhazsKKwkJY2FzZSAxOgorCQkgICAgY29kZSA9IE5DVVJTRVNfUFVUUDJfRkxVU0goImN1cnNvcl9ub3JtYWwiLAorCQkJCQkgICAgICAgY3Vyc29yX25vcm1hbCk7CisJCSAgICBicmVhazsKKwkJY2FzZSAwOgorCQkgICAgY29kZSA9IE5DVVJTRVNfUFVUUDJfRkxVU0goImN1cnNvcl9pbnZpc2libGUiLAorCQkJCQkgICAgICAgY3Vyc29yX2ludmlzaWJsZSk7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9IGVsc2UgeworCQljb2RlID0gRVJSOworCSAgICB9CisjZW5kaWYKKwkgICAgaWYgKGNvZGUgIT0gRVJSKQorCQljb2RlID0gKGN1cnNvciA9PSAtMSA/IDEgOiBjdXJzb3IpOworCSAgICBTUF9QQVJNLT5fY3Vyc29yID0gdmlzOworCX0KKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGludCkKLXR5cGVhaGVhZChpbnQgZmQpCitjdXJzX3NldChpbnQgdmlzKQogewotICAgIFQoKFRfQ0FMTEVEKCJ0eXBlYWhlYWQoJWQpIiksIGZkKSk7Ci0gICAgaWYgKFNQICE9IDApIHsKLQlTUC0+X2NoZWNrZmQgPSBmZDsKKyAgICByZXR1cm4gKE5DVVJTRVNfU1BfTkFNRShjdXJzX3NldCkgKENVUlJFTlRfU0NSRUVOLCB2aXMpKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUodHlwZWFoZWFkKSAoTkNVUlNFU19TUF9EQ0x4IGludCBmZCkKK3sKKyAgICBUKChUX0NBTExFRCgidHlwZWFoZWFkKCVwLCAlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgZmQpKTsKKyAgICBpZiAoSXNWYWxpZFRJU2NyZWVuKFNQX1BBUk0pKSB7CisJU1BfUEFSTS0+X2NoZWNrZmQgPSBmZDsKIAlyZXR1cm5Db2RlKE9LKTsKICAgICB9IGVsc2UgewogCXJldHVybkNvZGUoRVJSKTsKICAgICB9CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit0eXBlYWhlYWQoaW50IGZkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodHlwZWFoZWFkKSAoQ1VSUkVOVF9TQ1JFRU4sIGZkKTsKK30KKyNlbmRpZgorCiAvKgogKiogICAgICBoYXNfa2V5KCkKICoqCkBAIC0xODksNDMgKzI3Nyw1MCBAQAogCQl8fCBoYXNfa2V5X2ludGVybmFsKGtleWNvZGUsIHRwLT5zaWJsaW5nKSk7CiB9CiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKK05DVVJTRVNfRVhQT1JUKGludCkKK1RJTkZPX0hBU19LRVkoU0NSRUVOICpzcCwgaW50IGtleWNvZGUpCit7CisgICAgcmV0dXJuIElzVmFsaWRUSVNjcmVlbihzcCkgPworCWhhc19rZXlfaW50ZXJuYWwoa2V5Y29kZSwgc3AtPl9rZXl0cnkpIDogMDsKK30KKyNlbHNlCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoaGFzX2tleSkgKE5DVVJTRVNfU1BfRENMeCBpbnQga2V5Y29kZSkKK3sKKyAgICBUKChUX0NBTExFRCgiaGFzX2tleSglcCwlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwga2V5Y29kZSkpOworICAgIHJldHVybkNvZGUoU1AgIT0gMCA/IGhhc19rZXlfaW50ZXJuYWwoa2V5Y29kZSwgU1BfUEFSTS0+X2tleXRyeSkgOiBGQUxTRSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBoYXNfa2V5KGludCBrZXljb2RlKQogewotICAgIFQoKFRfQ0FMTEVEKCJoYXNfa2V5KCVkKSIpLCBrZXljb2RlKSk7Ci0gICAgcmV0dXJuQ29kZShTUCAhPSAwID8gaGFzX2tleV9pbnRlcm5hbChrZXljb2RlLCBTUC0+X2tleXRyeSkgOiBGQUxTRSk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShoYXNfa2V5KSAoQ1VSUkVOVF9TQ1JFRU4sIGtleWNvZGUpOwogfQorI2VuZGlmCisjZW5kaWYKICNlbmRpZiAvKiBOQ1VSU0VTX0VYVF9GVU5DUyAqLwogCi0vKgotICogSW50ZXJuYWwgZW50cnlwb2ludHMgdXNlIFNDUkVFTiogcGFyYW1ldGVyIHRvIG9idGFpbiBjYXBhYmlsaXRpZXMgcmF0aGVyCi0gKiB0aGFuIGN1cl90ZXJtLgotICovCi0jdW5kZWYgQ1VSCi0jZGVmaW5lIENVUiAoc3AtPl90ZXJtKS0+dHlwZS4KLQotc3RhdGljIGludAotX25jX3B1dHAoY29uc3QgY2hhciAqbmFtZSBHQ0NfVU5VU0VELCBjb25zdCBjaGFyICp2YWx1ZSkKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShfbmNfcHV0cF9mbHVzaCkgKE5DVVJTRVNfU1BfRENMeAorCQkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgICBpbnQgcmMgPSBFUlI7Ci0KLSAgICBpZiAodmFsdWUpIHsKLQlUUFVUU19UUkFDRShuYW1lKTsKLQlyYyA9IHB1dHAodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQKLV9uY19wdXRwX2ZsdXNoKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotewotICAgIGludCByYyA9IF9uY19wdXRwKG5hbWUsIHZhbHVlKTsKKyAgICBpbnQgcmMgPSBOQ1VSU0VTX1BVVFAyKG5hbWUsIHZhbHVlKTsKICAgICBpZiAocmMgIT0gRVJSKSB7CiAJX25jX2ZsdXNoKCk7CiAgICAgfQogICAgIHJldHVybiByYzsKIH0KIAorI2lmIDAgJiYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorX25jX3B1dHBfZmx1c2goY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0cF9mbHVzaCkgKENVUlJFTlRfU0NSRUVOLCBuYW1lLCB2YWx1ZSk7Cit9CisjZW5kaWYKKwogLyogVHVybiB0aGUga2V5cGFkIG9uL29mZgogICoKICAqIE5vdGU6ICB3ZSBmbHVzaCB0aGUgb3V0cHV0IGJlY2F1c2UgY2hhbmdpbmcgdGhpcyBtb2RlIGNhdXNlcyBzb21lIHRlcm1pbmFscwpAQCAtMjM0LDcgKzMyOSw3IEBACiAgKiB0aGUgdGVybWluYWwgc3RhdGUgX2JlZm9yZV8gc3dpdGNoaW5nIG1vZGVzLgogICovCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1fbmNfa2V5cGFkKFNDUkVFTiAqc3AsIGJvb2wgZmxhZykKK19uY19rZXlwYWQoU0NSRUVOICpzcCwgaW50IGZsYWcpCiB7CiAgICAgaW50IHJjID0gRVJSOwogCkBAIC0yNDUsMTIgKzM0MCwxMiBAQAogCSAqIGhhcyB3Z2V0Y2goKSByZWFkaW5nIGluIG1vcmUgdGhhbiBvbmUgdGhyZWFkLiAgcHV0cCgpIGFuZCBiZWxvdwogCSAqIG1heSB1c2UgU1AgZXhwbGljaXRseS4KIAkgKi8KLQlpZiAoX25jX3VzZV9wdGhyZWFkcyAmJiBzcCAhPSBTUCkgeworCWlmIChfbmNfdXNlX3B0aHJlYWRzICYmIHNwICE9IENVUlJFTlRfU0NSRUVOKSB7CiAJICAgIFNDUkVFTiAqc2F2ZV9zcDsKIAogCSAgICAvKiBjYW5ub3QgdXNlIHVzZV9zY3JlZW4oKSwgc2luY2UgdGhhdCBpcyBub3QgaW4gdGluZm8gbGlicmFyeSAqLwogCSAgICBfbmNfbG9ja19nbG9iYWwoY3Vyc2VzKTsKLQkgICAgc2F2ZV9zcCA9IFNQOworCSAgICBzYXZlX3NwID0gQ1VSUkVOVF9TQ1JFRU47CiAJICAgIF9uY19zZXRfc2NyZWVuKHNwKTsKIAkgICAgcmMgPSBfbmNfa2V5cGFkKHNwLCBmbGFnKTsKIAkgICAgX25jX3NldF9zY3JlZW4oc2F2ZV9zcCk7CkBAIC0yNTgsMTAgKzM1MywxNSBAQAogCX0gZWxzZQogI2VuZGlmCiAJeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCSAgICByYyA9IENhbGxEcml2ZXJfMShzcCwgdGRfa3BhZCwgZmxhZyk7CisJICAgIGlmIChyYyA9PSBPSykKKwkJc3AtPl9rZXlwYWRfb24gPSBmbGFnOworI2Vsc2UKIAkgICAgaWYgKGZsYWcpIHsKLQkJKHZvaWQpIF9uY19wdXRwX2ZsdXNoKCJrZXlwYWRfeG1pdCIsIGtleXBhZF94bWl0KTsKKwkJKHZvaWQpIE5DVVJTRVNfUFVUUDJfRkxVU0goImtleXBhZF94bWl0Iiwga2V5cGFkX3htaXQpOwogCSAgICB9IGVsc2UgaWYgKCFmbGFnICYmIGtleXBhZF9sb2NhbCkgewotCQkodm9pZCkgX25jX3B1dHBfZmx1c2goImtleXBhZF9sb2NhbCIsIGtleXBhZF9sb2NhbCk7CisJCSh2b2lkKSBOQ1VSU0VTX1BVVFAyX0ZMVVNIKCJrZXlwYWRfbG9jYWwiLCBrZXlwYWRfbG9jYWwpOwogCSAgICB9CiAKIAkgICAgaWYgKGZsYWcgJiYgIXNwLT5fdHJpZWQpIHsKQEAgLTI3MCw1OCArMzcwLDggQEAKIAkgICAgfQogCSAgICBzcC0+X2tleXBhZF9vbiA9IGZsYWc7CiAJICAgIHJjID0gT0s7CisjZW5kaWYKIAl9CiAgICAgfQogICAgIHJldHVybiAocmMpOwogfQotCi1zdGF0aWMgaW50Ci1fbmNfY3Vyc19zZXQoU0NSRUVOICpzcCwgaW50IHZpcykKLXsKLSAgICBpbnQgcmVzdWx0ID0gRVJSOwotCi0gICAgVCgoVF9DQUxMRUQoImN1cnNfc2V0KCVkKSIpLCB2aXMpKTsKLSAgICBpZiAoc3AgIT0gMCAmJiB2aXMgPj0gMCAmJiB2aXMgPD0gMikgewotCWludCBjdXJzb3IgPSBzcC0+X2N1cnNvcjsKLQotCWlmICh2aXMgPT0gY3Vyc29yKSB7Ci0JICAgIHJlc3VsdCA9IGN1cnNvcjsKLQl9IGVsc2UgewotCSAgICBzd2l0Y2ggKHZpcykgewotCSAgICBjYXNlIDI6Ci0JCXJlc3VsdCA9IF9uY19wdXRwX2ZsdXNoKCJjdXJzb3JfdmlzaWJsZSIsIGN1cnNvcl92aXNpYmxlKTsKLQkJYnJlYWs7Ci0JICAgIGNhc2UgMToKLQkJcmVzdWx0ID0gX25jX3B1dHBfZmx1c2goImN1cnNvcl9ub3JtYWwiLCBjdXJzb3Jfbm9ybWFsKTsKLQkJYnJlYWs7Ci0JICAgIGNhc2UgMDoKLQkJcmVzdWx0ID0gX25jX3B1dHBfZmx1c2goImN1cnNvcl9pbnZpc2libGUiLCBjdXJzb3JfaW52aXNpYmxlKTsKLQkJYnJlYWs7Ci0JICAgIH0KLQkgICAgaWYgKHJlc3VsdCAhPSBFUlIpCi0JCXJlc3VsdCA9IChjdXJzb3IgPT0gLTEgPyAxIDogY3Vyc29yKTsKLQkgICAgc3AtPl9jdXJzb3IgPSB2aXM7Ci0JfQotICAgIH0KLSAgICByZXR1cm5Db2RlKHJlc3VsdCk7Ci19Ci0KLXN0YXRpYyBpbnQKLV9uY19tZXRhKFNDUkVFTiAqc3AsIGJvb2wgZmxhZykKLXsKLSAgICBpbnQgcmVzdWx0ID0gRVJSOwotCi0gICAgLyogT2ssIHdlIHN0YXkgcmVsYXhlZCBhbmQgZG9uJ3Qgc2lnbmFsIGFuIGVycm9yIGlmIHdpbiBpcyBOVUxMICovCi0KLSAgICBpZiAoU1AgIT0gMCkgewotCVNQLT5fdXNlX21ldGEgPSBmbGFnOwotCi0JaWYgKGZsYWcpIHsKLQkgICAgX25jX3B1dHAoIm1ldGFfb24iLCBtZXRhX29uKTsKLQl9IGVsc2UgewotCSAgICBfbmNfcHV0cCgibWV0YV9vZmYiLCBtZXRhX29mZik7Ci0JfQotCXJlc3VsdCA9IE9LOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9saWJfcHJpbnQuYyBiL25jdXJzZXMvdGluZm8vbGliX3ByaW50LmMKaW5kZXggOTc1YjQ2ZC4uMGRhYjRkNCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9saWJfcHJpbnQuYworKysgYi9uY3Vyc2VzL3RpbmZvL2xpYl9wcmludC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksMjMgKzI5LDMxIEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotI2luY2x1ZGUgPHRlcm0uaD4KKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfcHJpbnQuYyx2IDEuMTYgMjAwNi8xMS8yNiAwMDoyNjozNCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9wcmludC5jLHYgMS4yMyAyMDEyLzAyLzIyIDIyOjM0OjMxIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLW1jcHJpbnQoY2hhciAqZGF0YSwgaW50IGxlbikKK05DVVJTRVNfU1BfTkFNRShtY3ByaW50KSAoTkNVUlNFU19TUF9EQ0x4IGNoYXIgKmRhdGEsIGludCBsZW4pCiAvKiBzaGlwIGJpbmFyeSBjaGFyYWN0ZXIgZGF0YSB0byB0aGUgcHJpbnRlciB2aWEgbWM0L21jNS9tYzVwICovCiB7CisgICAgaW50IHJlc3VsdDsKICAgICBjaGFyICpteWJ1ZiwgKnN3aXRjaG9uOwotICAgIHNpemVfdCBvbnNpemUsIG9mZnNpemUsIHJlczsKKyAgICBzaXplX3Qgb25zaXplLCBvZmZzaXplOworICAgIHNpemVfdCBuZWVkOwogCiAgICAgZXJybm8gPSAwOwotICAgIGlmICghY3VyX3Rlcm0gfHwgKCFwcnRyX25vbiAmJiAoIXBydHJfb24gfHwgIXBydHJfb2ZmKSkpIHsKKyAgICBpZiAoIUhhc1RJbmZvVGVybWluYWwoU1BfUEFSTSkKKwl8fCBsZW4gPD0gMAorCXx8ICghcHJ0cl9ub24gJiYgKCFwcnRyX29uIHx8ICFwcnRyX29mZikpKSB7CiAJZXJybm8gPSBFTk9ERVY7CiAJcmV0dXJuIChFUlIpOwogICAgIH0KQEAgLTYwLDE2ICs2OCwxOCBAQAogCW9mZnNpemUgPSBzdHJsZW4ocHJ0cl9vZmYpOwogICAgIH0KIAorICAgIG5lZWQgPSBvbnNpemUgKyAoc2l6ZV90KSBsZW4gKyBvZmZzaXplOworCiAgICAgaWYgKHN3aXRjaG9uID09IDAKLQl8fCAobXlidWYgPSB0eXBlTWFsbG9jKGNoYXIsIG9uc2l6ZSArIGxlbiArIG9mZnNpemUgKyAxKSkgPT0gMCkgeworCXx8IChteWJ1ZiA9IHR5cGVNYWxsb2MoY2hhciwgbmVlZCArIDEpKSA9PSAwKSB7CiAJZXJybm8gPSBFTk9NRU07CiAJcmV0dXJuIChFUlIpOwogICAgIH0KIAotICAgICh2b2lkKSBzdHJjcHkobXlidWYsIHN3aXRjaG9uKTsKLSAgICBtZW1jcHkobXlidWYgKyBvbnNpemUsIGRhdGEsICh1bnNpZ25lZCkgbGVuKTsKKyAgICBfbmNfU1RSQ1BZKG15YnVmLCBzd2l0Y2hvbiwgbmVlZCk7CisgICAgbWVtY3B5KG15YnVmICsgb25zaXplLCBkYXRhLCAoc2l6ZV90KSBsZW4pOwogICAgIGlmIChvZmZzaXplKQotCSh2b2lkKSBzdHJjcHkobXlidWYgKyBvbnNpemUgKyBsZW4sIHBydHJfb2ZmKTsKKwlfbmNfU1RSQ1BZKG15YnVmICsgb25zaXplICsgbGVuLCBwcnRyX29mZiwgbmVlZCk7CiAKICAgICAvKgogICAgICAqIFdlJ3JlIHJlbHlpbmcgb24gdGhlIGF0b21pY2l0eSBvZiBVTklYIHdyaXRlcyBoZXJlLiAgVGhlCkBAIC03OCwxNSArODgsMjQgQEAKICAgICAgKiBkYXRhIGhhcyBhY3R1YWxseSBiZWVuIHNoaXBwZWQgdG8gdGhlIHRlcm1pbmFsLiAgSWYgdGhlIHdyaXRlKDIpCiAgICAgICogb3BlcmF0aW9uIGlzIHRydWx5IGF0b21pYyB3ZSdyZSBwcm90ZWN0ZWQgZnJvbSB0aGlzLgogICAgICAqLwotICAgIHJlcyA9IHdyaXRlKGN1cl90ZXJtLT5GaWxlZGVzLCBteWJ1Ziwgb25zaXplICsgbGVuICsgb2Zmc2l6ZSk7CisgICAgcmVzdWx0ID0gKGludCkgd3JpdGUoVGVybWluYWxPZihTUF9QQVJNKS0+RmlsZWRlcywgbXlidWYsIG5lZWQpOwogCiAgICAgLyoKICAgICAgKiBCeSBnaXZpbmcgdXAgb3VyIHNjaGVkdWxlciBzbG90IGhlcmUgd2UgaW5jcmVhc2UgdGhlIG9kZHMgdGhhdCB0aGUKICAgICAgKiBrZXJuZWwgd2lsbCBzaGlwIHRoZSBjb250aWd1b3VzIGNsaXN0IGl0ZW1zIGZyb20gdGhlIGxhc3Qgd3JpdGUKICAgICAgKiBpbW1lZGlhdGVseS4KICAgICAgKi8KKyNpZm5kZWYgX19NSU5HVzMyX18KICAgICAodm9pZCkgc2xlZXAoMCk7Ci0KKyNlbmRpZgogICAgIGZyZWUobXlidWYpOwotICAgIHJldHVybiAocmVzKTsKKyAgICByZXR1cm4gKHJlc3VsdCk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTICYmICFkZWZpbmVkKFVTRV9URVJNX0RSSVZFUikKK05DVVJTRVNfRVhQT1JUKGludCkKK21jcHJpbnQoY2hhciAqZGF0YSwgaW50IGxlbikKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKG1jcHJpbnQpIChDVVJSRU5UX1NDUkVFTiwgZGF0YSwgbGVuKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9saWJfcmF3LmMgYi9uY3Vyc2VzL3RpbmZvL2xpYl9yYXcuYwppbmRleCA1OGU3MTg4Li45Mjg2OTJiIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl9yYXcuYworKysgYi9uY3Vyc2VzL3RpbmZvL2xpYl9yYXcuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI5LDcgKzI5LDggQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgMTk5OCBvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5OC1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtNDcsMTMgKzQ4LDggQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBjdXJfdGVybSAqLwogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Jhdy5jLHYgMS4xNCAyMDA3LzA5LzI5IDIxOjUwOjIyIHRvbSBFeHAgJCIpCi0KLSNpZiBTVlI0X1RFUk1JTyAmJiAhZGVmaW5lZChfUE9TSVhfU09VUkNFKQotI2RlZmluZSBfUE9TSVhfU09VUkNFCi0jZW5kaWYKK01PRFVMRV9JRCgiJElkOiBsaWJfcmF3LmMsdiAxLjIxIDIwMTIvMDEvMjEgMTk6MjE6MjkgS08uTXl1bmctSHVuIEV4cCAkIikKIAogI2lmIEhBVkVfU1lTX1RFUk1JT19ICiAjaW5jbHVkZSA8c3lzL3Rlcm1pby5oPgkJLyogbmVlZGVkIGZvciBJU0MgKi8KQEAgLTYxLDExICs1NywxNiBAQAogCiAjaWZkZWYgX19FTVhfXwogI2luY2x1ZGUgPGlvLmg+Ci0jZGVmaW5lIF9uY19zZXRtb2RlKG1vZGUpIHNldG1vZGUoU1AtPl9pZmQsIG1vZGUpCisjZGVmaW5lIF9uY19zZXRtb2RlKG1vZGUpIHNldG1vZGUoU1BfUEFSTS0+X2lmZCwgbW9kZSkKICNlbHNlCiAjZGVmaW5lIF9uY19zZXRtb2RlKG1vZGUpCS8qIG5vdGhpbmcgKi8KICNlbmRpZgogCisjaWYgVVNFX0tMSUJDX0tCRAorI2RlZmluZSBJTkNMX0tCRAorI2luY2x1ZGUgPG9zMi5oPgorI2VuZGlmCisKICNkZWZpbmUgQ09PS0VEX0lOUFVUCShJWE9OfEJSS0lOVHxQQVJNUkspCiAKICNpZmRlZiBUUkFDRQpAQCAtNzcsMTg4ICs3OCwyNTcgQEAKICNlbmRpZiAvKiBUUkFDRSAqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1yYXcodm9pZCkKK05DVVJTRVNfU1BfTkFNRShyYXcpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJlc3VsdCA9IEVSUjsKKyAgICBURVJNSU5BTCAqdGVybXA7CiAKLSAgICBUKChUX0NBTExFRCgicmF3KCkiKSkpOwotCi0gICAgaWYgKFNQICE9IDAgJiYgY3VyX3Rlcm0gIT0gMCkgeworICAgIFQoKFRfQ0FMTEVEKCJyYXcoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICBpZiAoKHRlcm1wID0gVGVybWluYWxPZihTUF9QQVJNKSkgIT0gMCkgewogCVRUWSBidWY7CiAKIAlCRUZPUkUoInJhdyIpOwogCV9uY19zZXRtb2RlKE9fQklOQVJZKTsKIAotCWJ1ZiA9IGN1cl90ZXJtLT5OdHR5YjsKKwlidWYgPSB0ZXJtcC0+TnR0eWI7CiAjaWZkZWYgVEVSTUlPUwotCWJ1Zi5jX2xmbGFnICY9IH4oSUNBTk9OIHwgSVNJRyB8IElFWFRFTik7Ci0JYnVmLmNfaWZsYWcgJj0gfihDT09LRURfSU5QVVQpOworCWJ1Zi5jX2xmbGFnICY9ICh1bnNpZ25lZCkgfihJQ0FOT04gfCBJU0lHIHwgSUVYVEVOKTsKKwlidWYuY19pZmxhZyAmPSAodW5zaWduZWQpIH4oQ09PS0VEX0lOUFVUKTsKIAlidWYuY19jY1tWTUlOXSA9IDE7CiAJYnVmLmNfY2NbVlRJTUVdID0gMDsKICNlbHNlCiAJYnVmLnNnX2ZsYWdzIHw9IFJBVzsKICNlbmRpZgotCWlmICgocmVzdWx0ID0gX25jX3NldF90dHlfbW9kZSgmYnVmKSkgPT0gT0spIHsKLQkgICAgU1AtPl9yYXcgPSBUUlVFOwotCSAgICBTUC0+X2NicmVhayA9IDE7Ci0JICAgIGN1cl90ZXJtLT5OdHR5YiA9IGJ1ZjsKKwlyZXN1bHQgPSBOQ1VSU0VTX1NQX05BTUUoX25jX3NldF90dHlfbW9kZSkgKE5DVVJTRVNfU1BfQVJHeCAmYnVmKTsKKwlpZiAocmVzdWx0ID09IE9LKSB7CisjaWYgVVNFX0tMSUJDX0tCRAorCSAgICBLQkRJTkZPIGtiZGluZm87CisKKwkgICAga2JkaW5mby5jYiA9IHNpemVvZihrYmRpbmZvKTsKKwkgICAgS2JkR2V0U3RhdHVzKCZrYmRpbmZvLCAwKTsKKworCSAgICBrYmRpbmZvLmNiID0gc2l6ZW9mKGtiZGluZm8pOworCSAgICBrYmRpbmZvLmZzTWFzayAmPSB+S0VZQk9BUkRfQVNDSUlfTU9ERTsKKwkgICAga2JkaW5mby5mc01hc2sgfD0gS0VZQk9BUkRfQklOQVJZX01PREU7CisJICAgIEtiZFNldFN0YXR1cygma2JkaW5mbywgMCk7CisjZW5kaWYKKwkgICAgU1BfUEFSTS0+X3JhdyA9IFRSVUU7CisJICAgIFNQX1BBUk0tPl9jYnJlYWsgPSAxOworCSAgICB0ZXJtcC0+TnR0eWIgPSBidWY7CiAJfQogCUFGVEVSKCJyYXciKTsKICAgICB9CiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQotY2JyZWFrKHZvaWQpCityYXcodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHJhdykgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoY2JyZWFrKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXN1bHQgPSBFUlI7CisgICAgVEVSTUlOQUwgKnRlcm1wOwogCi0gICAgVCgoVF9DQUxMRUQoImNicmVhaygpIikpKTsKLQotICAgIGlmIChTUCAhPSAwICYmIGN1cl90ZXJtICE9IDApIHsKKyAgICBUKChUX0NBTExFRCgiY2JyZWFrKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisgICAgaWYgKCh0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSkpICE9IDApIHsKIAlUVFkgYnVmOwogCiAJQkVGT1JFKCJjYnJlYWsiKTsKIAlfbmNfc2V0bW9kZShPX0JJTkFSWSk7CiAKLQlidWYgPSBjdXJfdGVybS0+TnR0eWI7CisJYnVmID0gdGVybXAtPk50dHliOwogI2lmZGVmIFRFUk1JT1MKLQlidWYuY19sZmxhZyAmPSB+SUNBTk9OOwotCWJ1Zi5jX2lmbGFnICY9IH5JQ1JOTDsKKwlidWYuY19sZmxhZyAmPSAodW5zaWduZWQpIH5JQ0FOT047CisJYnVmLmNfaWZsYWcgJj0gKHVuc2lnbmVkKSB+SUNSTkw7CiAJYnVmLmNfbGZsYWcgfD0gSVNJRzsKIAlidWYuY19jY1tWTUlOXSA9IDE7CiAJYnVmLmNfY2NbVlRJTUVdID0gMDsKICNlbHNlCiAJYnVmLnNnX2ZsYWdzIHw9IENCUkVBSzsKICNlbmRpZgotCWlmICgocmVzdWx0ID0gX25jX3NldF90dHlfbW9kZSgmYnVmKSkgPT0gT0spIHsKLQkgICAgU1AtPl9jYnJlYWsgPSAxOwotCSAgICBjdXJfdGVybS0+TnR0eWIgPSBidWY7CisJcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdHR5X21vZGUpIChOQ1VSU0VTX1NQX0FSR3ggJmJ1Zik7CisJaWYgKHJlc3VsdCA9PSBPSykgeworCSAgICBTUF9QQVJNLT5fY2JyZWFrID0gMTsKKwkgICAgdGVybXAtPk50dHliID0gYnVmOwogCX0KIAlBRlRFUigiY2JyZWFrIik7CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK2NicmVhayh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoY2JyZWFrKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKIC8qCiAgKiBOb3RlOgogICogdGhpcyBpbXBsZW1lbnRhdGlvbiBtYXkgYmUgd3JvbmcuICBTZWUgdGhlIGNvbW1lbnQgdW5kZXIgaW50cmZsdXNoKCkuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1xaWZsdXNoKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUocWlmbHVzaCkgKE5DVVJTRVNfU1BfRENMMCkKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcDsKIAotICAgIFQoKFRfQ0FMTEVEKCJxaWZsdXNoKCkiKSkpOwotCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKKyAgICBUKChUX0NBTExFRCgicWlmbHVzaCglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworICAgIGlmICgodGVybXAgPSBUZXJtaW5hbE9mKFNQX1BBUk0pKSAhPSAwKSB7CiAJVFRZIGJ1ZjsKIAogCUJFRk9SRSgicWlmbHVzaCIpOwotCWJ1ZiA9IGN1cl90ZXJtLT5OdHR5YjsKKwlidWYgPSB0ZXJtcC0+TnR0eWI7CiAjaWZkZWYgVEVSTUlPUwotCWJ1Zi5jX2xmbGFnICY9IH4oTk9GTFNIKTsKLQlyZXN1bHQgPSBfbmNfc2V0X3R0eV9tb2RlKCZidWYpOworCWJ1Zi5jX2xmbGFnICY9ICh1bnNpZ25lZCkgfihOT0ZMU0gpOworCXJlc3VsdCA9IE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4ICZidWYpOwogI2Vsc2UKIAkvKiBGSVhNRSAqLwogI2VuZGlmCiAJaWYgKHJlc3VsdCA9PSBPSykKLQkgICAgY3VyX3Rlcm0tPk50dHliID0gYnVmOworCSAgICB0ZXJtcC0+TnR0eWIgPSBidWY7CiAJQUZURVIoInFpZmx1c2giKTsKICAgICB9CiAgICAgcmV0dXJuVm9pZDsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitxaWZsdXNoKHZvaWQpCit7CisgICAgTkNVUlNFU19TUF9OQU1FKHFpZmx1c2gpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogTkNVUlNFU19FWFBPUlQoaW50KQotbm9yYXcodm9pZCkKK05DVVJTRVNfU1BfTkFNRShub3JhdykgKE5DVVJTRVNfU1BfRENMMCkKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcDsKIAotICAgIFQoKFRfQ0FMTEVEKCJub3JhdygpIikpKTsKLQotICAgIGlmIChTUCAhPSAwICYmIGN1cl90ZXJtICE9IDApIHsKKyAgICBUKChUX0NBTExFRCgibm9yYXcoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICBpZiAoKHRlcm1wID0gVGVybWluYWxPZihTUF9QQVJNKSkgIT0gMCkgewogCVRUWSBidWY7CiAKIAlCRUZPUkUoIm5vcmF3Iik7CiAJX25jX3NldG1vZGUoT19URVhUKTsKIAotCWJ1ZiA9IGN1cl90ZXJtLT5OdHR5YjsKKwlidWYgPSB0ZXJtcC0+TnR0eWI7CiAjaWZkZWYgVEVSTUlPUwogCWJ1Zi5jX2xmbGFnIHw9IElTSUcgfCBJQ0FOT04gfAotCSAgICAoY3VyX3Rlcm0tPk90dHliLmNfbGZsYWcgJiBJRVhURU4pOworCSAgICAodGVybXAtPk90dHliLmNfbGZsYWcgJiBJRVhURU4pOwogCWJ1Zi5jX2lmbGFnIHw9IENPT0tFRF9JTlBVVDsKICNlbHNlCiAJYnVmLnNnX2ZsYWdzICY9IH4oUkFXIHwgQ0JSRUFLKTsKICNlbmRpZgotCWlmICgocmVzdWx0ID0gX25jX3NldF90dHlfbW9kZSgmYnVmKSkgPT0gT0spIHsKLQkgICAgU1AtPl9yYXcgPSBGQUxTRTsKLQkgICAgU1AtPl9jYnJlYWsgPSAwOwotCSAgICBjdXJfdGVybS0+TnR0eWIgPSBidWY7CisJcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdHR5X21vZGUpIChOQ1VSU0VTX1NQX0FSR3ggJmJ1Zik7CisJaWYgKHJlc3VsdCA9PSBPSykgeworI2lmIFVTRV9LTElCQ19LQkQKKwkgICAgS0JESU5GTyBrYmRpbmZvOworCisJICAgIGtiZGluZm8uY2IgPSBzaXplb2Yoa2JkaW5mbyk7CisJICAgIEtiZEdldFN0YXR1cygma2JkaW5mbywgMCk7CisKKwkgICAga2JkaW5mby5jYiA9IHNpemVvZihrYmRpbmZvKTsKKwkgICAga2JkaW5mby5mc01hc2sgJj0gfktFWUJPQVJEX0JJTkFSWV9NT0RFOworCSAgICBrYmRpbmZvLmZzTWFzayB8PSBLRVlCT0FSRF9BU0NJSV9NT0RFOworCSAgICBLYmRTZXRTdGF0dXMoJmtiZGluZm8sIDApOworI2VuZGlmCisJICAgIFNQX1BBUk0tPl9yYXcgPSBGQUxTRTsKKwkgICAgU1BfUEFSTS0+X2NicmVhayA9IDA7CisJICAgIHRlcm1wLT5OdHR5YiA9IGJ1ZjsKIAl9CiAJQUZURVIoIm5vcmF3Iik7CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGludCkKLW5vY2JyZWFrKHZvaWQpCitub3Jhdyh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobm9yYXcpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKG5vY2JyZWFrKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCByZXN1bHQgPSBFUlI7CisgICAgVEVSTUlOQUwgKnRlcm1wOwogCi0gICAgVCgoVF9DQUxMRUQoIm5vY2JyZWFrKCkiKSkpOwotCi0gICAgaWYgKFNQICE9IDAgJiYgY3VyX3Rlcm0gIT0gMCkgeworICAgIFQoKFRfQ0FMTEVEKCJub2NicmVhayglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworICAgIGlmICgodGVybXAgPSBUZXJtaW5hbE9mKFNQX1BBUk0pKSAhPSAwKSB7CiAJVFRZIGJ1ZjsKIAogCUJFRk9SRSgibm9jYnJlYWsiKTsKIAlfbmNfc2V0bW9kZShPX1RFWFQpOwogCi0JYnVmID0gY3VyX3Rlcm0tPk50dHliOworCWJ1ZiA9IHRlcm1wLT5OdHR5YjsKICNpZmRlZiBURVJNSU9TCiAJYnVmLmNfbGZsYWcgfD0gSUNBTk9OOwogCWJ1Zi5jX2lmbGFnIHw9IElDUk5MOwogI2Vsc2UKIAlidWYuc2dfZmxhZ3MgJj0gfkNCUkVBSzsKICNlbmRpZgotCWlmICgocmVzdWx0ID0gX25jX3NldF90dHlfbW9kZSgmYnVmKSkgPT0gT0spIHsKLQkgICAgU1AtPl9jYnJlYWsgPSAwOwotCSAgICBjdXJfdGVybS0+TnR0eWIgPSBidWY7CisJcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdHR5X21vZGUpIChOQ1VSU0VTX1NQX0FSR3ggJmJ1Zik7CisJaWYgKHJlc3VsdCA9PSBPSykgeworCSAgICBTUF9QQVJNLT5fY2JyZWFrID0gMDsKKwkgICAgdGVybXAtPk50dHliID0gYnVmOwogCX0KIAlBRlRFUigibm9jYnJlYWsiKTsKICAgICB9CiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQogCi0vKgotICogTm90ZToKLSAqIHRoaXMgaW1wbGVtZW50YXRpb24gbWF5IGJlIHdyb25nLiAgU2VlIHRoZSBjb21tZW50IHVuZGVyIGludHJmbHVzaCgpLgotICovCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorbm9jYnJlYWsodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKG5vY2JyZWFrKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1ub3FpZmx1c2godm9pZCkKK05DVVJTRVNfU1BfTkFNRShub3FpZmx1c2gpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJlc3VsdCA9IEVSUjsKKyAgICBURVJNSU5BTCAqdGVybXA7CiAKLSAgICBUKChUX0NBTExFRCgibm9xaWZsdXNoKCkiKSkpOwotCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKKyAgICBUKChUX0NBTExFRCgibm9xaWZsdXNoKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisgICAgaWYgKCh0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSkpICE9IDApIHsKIAlUVFkgYnVmOwogCiAJQkVGT1JFKCJub3FpZmx1c2giKTsKLQlidWYgPSBjdXJfdGVybS0+TnR0eWI7CisJYnVmID0gdGVybXAtPk50dHliOwogI2lmZGVmIFRFUk1JT1MKIAlidWYuY19sZmxhZyB8PSBOT0ZMU0g7Ci0JcmVzdWx0ID0gX25jX3NldF90dHlfbW9kZSgmYnVmKTsKKwlyZXN1bHQgPSBOQ1VSU0VTX1NQX05BTUUoX25jX3NldF90dHlfbW9kZSkgKE5DVVJTRVNfU1BfQVJHeCAmYnVmKTsKICNlbHNlCiAJLyogRklYTUUgKi8KICNlbmRpZgotCWlmIChyZXN1bHQgPT0gT0spIHsKLQkgICAgY3VyX3Rlcm0tPk50dHliID0gYnVmOwotCX0KKwlpZiAocmVzdWx0ID09IE9LKQorCSAgICB0ZXJtcC0+TnR0eWIgPSBidWY7CiAJQUZURVIoIm5vcWlmbHVzaCIpOwogICAgIH0KICAgICByZXR1cm5Wb2lkOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQodm9pZCkKK25vcWlmbHVzaCh2b2lkKQoreworICAgIE5DVVJTRVNfU1BfTkFNRShub3FpZmx1c2gpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogLyoKICAqIFRoaXMgY2FsbCBkb2VzIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSBxaWZsdXNoKCkvbm9xaWZsdXNoKCkgcGFpci4gIFdlIGtub3cKICAqIGZvciBjZXJ0YWluIHRoYXQgU1ZyMyBpbnRyZmx1c2goKSB0d2Vha3MgdGhlIE5PRkxTSCBiaXQ7IG9uIHRoZSBvdGhlciBoYW5kLApAQCAtMjY3LDMwICszMzcsNDEgQEAKICAqIGN1cnNfaW5vcHRzKDN4KSBpcyB0b28gZXhhY3QgdG8gYmUgY29pbmNpZGVuY2UuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKLWludHJmbHVzaChXSU5ET1cgKndpbiBHQ0NfVU5VU0VELCBib29sIGZsYWcpCitOQ1VSU0VTX1NQX05BTUUoaW50cmZsdXNoKSAoTkNVUlNFU19TUF9EQ0x4IFdJTkRPVyAqd2luIEdDQ19VTlVTRUQsIGJvb2wgZmxhZykKIHsKICAgICBpbnQgcmVzdWx0ID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcDsKIAotICAgIFQoKFRfQ0FMTEVEKCJpbnRyZmx1c2goJWQpIiksIGZsYWcpKTsKKyAgICBUKChUX0NBTExFRCgiaW50cmZsdXNoKCVwLCVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBmbGFnKSk7CisgICAgaWYgKFNQX1BBUk0gPT0gMCkKKwlyZXR1cm5Db2RlKEVSUik7CiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgeworICAgIGlmICgodGVybXAgPSBUZXJtaW5hbE9mKFNQX1BBUk0pKSAhPSAwKSB7CiAJVFRZIGJ1ZjsKIAogCUJFRk9SRSgiaW50cmZsdXNoIik7Ci0JYnVmID0gY3VyX3Rlcm0tPk50dHliOworCWJ1ZiA9IHRlcm1wLT5OdHR5YjsKICNpZmRlZiBURVJNSU9TCiAJaWYgKGZsYWcpCi0JICAgIGJ1Zi5jX2xmbGFnICY9IH4oTk9GTFNIKTsKKwkgICAgYnVmLmNfbGZsYWcgJj0gKHVuc2lnbmVkKSB+KE5PRkxTSCk7CiAJZWxzZQogCSAgICBidWYuY19sZmxhZyB8PSAoTk9GTFNIKTsKLQlyZXN1bHQgPSBfbmNfc2V0X3R0eV9tb2RlKCZidWYpOworCXJlc3VsdCA9IE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4ICZidWYpOwogI2Vsc2UKIAkvKiBGSVhNRSAqLwogI2VuZGlmCiAJaWYgKHJlc3VsdCA9PSBPSykgewotCSAgICBjdXJfdGVybS0+TnR0eWIgPSBidWY7CisJICAgIHRlcm1wLT5OdHR5YiA9IGJ1ZjsKIAl9CiAJQUZURVIoImludHJmbHVzaCIpOwogICAgIH0KICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitpbnRyZmx1c2goV0lORE9XICp3aW4gR0NDX1VOVVNFRCwgYm9vbCBmbGFnKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoaW50cmZsdXNoKSAoQ1VSUkVOVF9TQ1JFRU4sIHdpbiwgZmxhZyk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX3NldHVwLmMgYi9uY3Vyc2VzL3RpbmZvL2xpYl9zZXR1cC5jCmluZGV4IDhjZmFmMTIuLjBhMGExZjUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX3NldHVwLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfc2V0dXAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMwLDMwICszMCwyNSBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgogICogVGVybWluYWwgc2V0dXAgcm91dGluZXMgY29tbW9uIHRvIHRlcm1jYXAgYW5kIHRlcm1pbmZvOgogICoKICAqCQl1c2VfZW52KGJvb2wpCisgKgkJdXNlX3Rpb2N0bChib29sKQogICoJCXNldHVwdGVybShjaGFyICosIGludCwgaW50ICopCiAgKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAjaW5jbHVkZSA8dGljLmg+CQkvKiBmb3IgTUFYX05BTUVfU0laRSAqLwotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KLQotI2lmIFNWUjRfVEVSTUlPICYmICFkZWZpbmVkKF9QT1NJWF9TT1VSQ0UpCi0jZGVmaW5lIF9QT1NJWF9TT1VSQ0UKLSNlbmRpZgogCiAjaWYgSEFWRV9MT0NBTEVfSAogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBsaW5lcywgY29sdW1ucywgY3VyX3Rlcm0gKi8KLQotTU9EVUxFX0lEKCIkSWQ6IGxpYl9zZXR1cC5jLHYgMS4xMTEgMjAwOC8wOC8wMyAyMjo0MjozMyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9zZXR1cC5jLHYgMS4xNjQgMjAxNS8wNi8yNyAxODoxMDo1NSB0b20gRXhwICQiKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTEwOSw2MSArMTA0LDk2IEBACiAgKiBXcmFwIGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhpcyBtb2R1bGUuCiAgKi8KICNpZiBVU0VfUkVFTlRSQU5UCisKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKIE5DVVJTRVNfUFVCTElDX1ZBUih0dHl0eXBlKSAodm9pZCkKIHsKICAgICBzdGF0aWMgY2hhciBlbXB0eVtdID0gIiI7Ci0gICAgcmV0dXJuIGN1cl90ZXJtID8gY3VyX3Rlcm0tPnR5cGUudGVybV9uYW1lcyA6IGVtcHR5OworICAgIGNoYXIgKnJlc3VsdCA9IGVtcHR5OworCisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgIGlmIChDVVJSRU5UX1NDUkVFTikgeworCVRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoQ1VSUkVOVF9TQ1JFRU4pOworCWlmICh0ZXJtcCAhPSAwKSB7CisJICAgIHJlc3VsdCA9IHRlcm1wLT50eXBlLnRlcm1fbmFtZXM7CisJfQorICAgIH0KKyNlbHNlCisgICAgaWYgKGN1cl90ZXJtICE9IDApIHsKKwlyZXN1bHQgPSBjdXJfdGVybS0+dHlwZS50ZXJtX25hbWVzOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CisKIE5DVVJTRVNfRVhQT1JUKGludCAqKQotX25jX3B0cl9MaW5lcyh2b2lkKQorX25jX3B0cl9MaW5lcyhTQ1JFRU4gKnNwKQogewotICAgIHJldHVybiBwdHJMaW5lcygpOworICAgIHJldHVybiBwdHJMaW5lcyhzcCk7CiB9CisKIE5DVVJTRVNfRVhQT1JUKGludCkKIE5DVVJTRVNfUFVCTElDX1ZBUihMSU5FUykgKHZvaWQpCiB7Ci0gICAgcmV0dXJuICpfbmNfcHRyX0xpbmVzKCk7CisgICAgcmV0dXJuICpfbmNfcHRyX0xpbmVzKENVUlJFTlRfU0NSRUVOKTsKIH0KKwogTkNVUlNFU19FWFBPUlQoaW50ICopCi1fbmNfcHRyX0NvbHModm9pZCkKK19uY19wdHJfQ29scyhTQ1JFRU4gKnNwKQogewotICAgIHJldHVybiBwdHJDb2xzKCk7CisgICAgcmV0dXJuIHB0ckNvbHMoc3ApOwogfQorCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MUykgKHZvaWQpCiB7Ci0gICAgcmV0dXJuICpfbmNfcHRyX0NvbHMoKTsKKyAgICByZXR1cm4gKl9uY19wdHJfQ29scyhDVVJSRU5UX1NDUkVFTik7CiB9CisKK05DVVJTRVNfRVhQT1JUKGludCAqKQorX25jX3B0cl9UYWJzaXplKFNDUkVFTiAqc3ApCit7CisgICAgcmV0dXJuIHB0clRhYnNpemUoc3ApOworfQorCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBOQ1VSU0VTX1BVQkxJQ19WQVIoVEFCU0laRSkgKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFNQID8gU1AtPl9UQUJTSVpFIDogODsKKyAgICByZXR1cm4gKl9uY19wdHJfVGFic2l6ZShDVVJSRU5UX1NDUkVFTik7CiB9CiAjZWxzZQogTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIpIHR0eXR5cGVbTkFNRVNJWkVdID0gIiI7CiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBMSU5FUyA9IDA7CiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBDT0xTID0gMDsKLU5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIFRBQlNJWkUgPSAwOworTkNVUlNFU19FWFBPUlRfVkFSKGludCkgVEFCU0laRSA9IDg7CiAjZW5kaWYKIAogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1zZXRfdGFic2l6ZShpbnQgdmFsdWUpCitOQ1VSU0VTX1NQX05BTUUoc2V0X3RhYnNpemUpIChOQ1VSU0VTX1NQX0RDTHggaW50IHZhbHVlKQogewogICAgIGludCBjb2RlID0gT0s7CiAjaWYgVVNFX1JFRU5UUkFOVAotICAgIGlmIChTUCkgewotCVNQLT5fVEFCU0laRSA9IHZhbHVlOworICAgIGlmIChTUF9QQVJNKSB7CisJU1BfUEFSTS0+X1RBQlNJWkUgPSB2YWx1ZTsKICAgICB9IGVsc2UgewogCWNvZGUgPSBFUlI7CiAgICAgfQogI2Vsc2UKKyAgICAodm9pZCkgU1BfUEFSTTsKICAgICBUQUJTSVpFID0gdmFsdWU7CiAjZW5kaWYKICAgICByZXR1cm4gY29kZTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3NldF90YWJzaXplKGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNldF90YWJzaXplKSAoQ1VSUkVOVF9TQ1JFRU4sIHZhbHVlKTsKK30KICNlbmRpZgorI2VuZGlmIC8qIE5DVVJTRVNfRVhUX0ZVTkNTICovCiAKICNpZiBVU0VfU0lHV0lOQ0gKIC8qCkBAIC0xODgsNzggKzIxOCwxNTcgQEAKICNlbmRpZgogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKHVzZV9lbnYpIChOQ1VSU0VTX1NQX0RDTHggYm9vbCBmKQoreworICAgIFQoKFRfQ0FMTEVEKCJ1c2VfZW52KCVwLCVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCAoaW50KSBmKSk7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgIFNUQVJUX1RSQUNFKCk7CisgICAgaWYgKElzUHJlU2NyZWVuKFNQX1BBUk0pKSB7CisJU1BfUEFSTS0+X3VzZV9lbnYgPSBmOworICAgIH0KKyNlbHNlCisgICAgX25jX3ByZXNjcmVlbi51c2VfZW52ID0gZjsKKyNlbmRpZgorICAgIHJldHVyblZvaWQ7Cit9CisKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUodXNlX3Rpb2N0bCkgKE5DVVJTRVNfU1BfRENMeCBib29sIGYpCit7CisgICAgVCgoVF9DQUxMRUQoInVzZV90aW9jdGwoJXAsJWQpIiksICh2b2lkICopIFNQX1BBUk0sIChpbnQpIGYpKTsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBpZiAoSXNQcmVTY3JlZW4oU1BfUEFSTSkpIHsKKwlTUF9QQVJNLT5fdXNlX3Rpb2N0bCA9IGY7CisgICAgfQorI2Vsc2UKKyAgICBfbmNfcHJlc2NyZWVuLnVzZV90aW9jdGwgPSBmOworI2VuZGlmCisgICAgcmV0dXJuVm9pZDsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCiB1c2VfZW52KGJvb2wgZikKIHsKLSAgICBUKChUX0NBTExFRCgidXNlX2VudigpIikpKTsKKyAgICBUKChUX0NBTExFRCgidXNlX2VudiglZCkiKSwgKGludCkgZikpOworICAgIFNUQVJUX1RSQUNFKCk7CiAgICAgX25jX3ByZXNjcmVlbi51c2VfZW52ID0gZjsKICAgICByZXR1cm5Wb2lkOwogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX2dldF9zY3JlZW5zaXplKFNDUkVFTiAqc3AsIGludCAqbGluZXAsIGludCAqY29scCkKK3VzZV90aW9jdGwoYm9vbCBmKQoreworICAgIFQoKFRfQ0FMTEVEKCJ1c2VfdGlvY3RsKCVkKSIpLCAoaW50KSBmKSk7CisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBfbmNfcHJlc2NyZWVuLnVzZV90aW9jdGwgPSBmOworICAgIHJldHVyblZvaWQ7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19nZXRfc2NyZWVuc2l6ZShTQ1JFRU4gKnNwLAorI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCQkgICBURVJNSU5BTCAqIHRlcm1wLAorI2VuZGlmCisJCSAgIGludCAqbGluZXAsIGludCAqY29scCkKIC8qIE9idGFpbiBsaW5lcy9jb2x1bW5zIHZhbHVlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCBhbmQvb3IgdGVybWluZm8gZW50cnkgKi8KIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICBURVJNSU5BTF9DT05UUk9MX0JMT0NLICpUQ0I7CisgICAgaW50IG15X3RhYnNpemU7CisKKyAgICBhc3NlcnQodGVybXAgIT0gMCAmJiBsaW5lcCAhPSAwICYmIGNvbHAgIT0gMCk7CisgICAgVENCID0gKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKikgdGVybXA7CisKKyAgICBteV90YWJzaXplID0gVENCLT5pbmZvLnRhYnNpemU7CisgICAgVENCLT5kcnYtPnRkX3NpemUoVENCLCBsaW5lcCwgY29scCk7CisKKyNpZiBVU0VfUkVFTlRSQU5UCisgICAgaWYgKHNwICE9IDApIHsKKwlzcC0+X1RBQlNJWkUgPSBteV90YWJzaXplOworICAgIH0KKyNlbHNlCisgICAgKHZvaWQpIHNwOworICAgIFRBQlNJWkUgPSBteV90YWJzaXplOworI2VuZGlmCisgICAgVCgoIlRBQlNJWkUgPSAlZCIsIG15X3RhYnNpemUpKTsKKyNlbHNlIC8qICFVU0VfVEVSTV9EUklWRVIgKi8KICAgICBURVJNSU5BTCAqdGVybXAgPSBjdXJfdGVybTsKICAgICBpbnQgbXlfdGFic2l6ZTsKIAogICAgIC8qIGZpZ3VyZSBvdXQgdGhlIHNpemUgb2YgdGhlIHNjcmVlbiAqLwogICAgIFQoKCJzY3JlZW4gc2l6ZTogdGVybWluZm8gbGluZXMgPSAlZCBjb2x1bW5zID0gJWQiLCBsaW5lcywgY29sdW1ucykpOwogCi0gICAgaWYgKCFfbmNfcHJlc2NyZWVuLnVzZV9lbnYpIHsKLQkqbGluZXAgPSAoaW50KSBsaW5lczsKLQkqY29scCA9IChpbnQpIGNvbHVtbnM7Ci0gICAgfSBlbHNlIHsJCQkvKiB1c3VhbGx5IHdhbnQgdG8gcXVlcnkgTElORVMgYW5kIENPTFVNTlMgZnJvbSBlbnZpcm9ubWVudCAqLworICAgICpsaW5lcCA9IChpbnQpIGxpbmVzOworICAgICpjb2xwID0gKGludCkgY29sdW1uczsKKworICAgIGlmIChfbmNfcHJlc2NyZWVuLnVzZV9lbnYgfHwgX25jX3ByZXNjcmVlbi51c2VfdGlvY3RsKSB7CiAJaW50IHZhbHVlOwogCi0JKmxpbmVwID0gKmNvbHAgPSAwOwotCi0JLyogZmlyc3QsIGxvb2sgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotCWlmICgodmFsdWUgPSBfbmNfZ2V0ZW52X251bSgiTElORVMiKSkgPiAwKSB7Ci0JICAgICpsaW5lcCA9IHZhbHVlOwotCX0KLQlpZiAoKHZhbHVlID0gX25jX2dldGVudl9udW0oIkNPTFVNTlMiKSkgPiAwKSB7Ci0JICAgICpjb2xwID0gdmFsdWU7Ci0JfQotCVQoKCJzY3JlZW4gc2l6ZTogZW52aXJvbm1lbnQgTElORVMgPSAlZCBDT0xVTU5TID0gJWQiLCAqbGluZXAsICpjb2xwKSk7Ci0KICNpZmRlZiBfX0VNWF9fCi0JaWYgKCpsaW5lcCA8PSAwIHx8ICpjb2xwIDw9IDApIHsKKwl7CiAJICAgIGludCBzY3JlZW5kYXRhWzJdOwogCSAgICBfc2Nyc2l6ZShzY3JlZW5kYXRhKTsKIAkgICAgKmNvbHAgPSBzY3JlZW5kYXRhWzBdOwotCSAgICAqbGluZXAgPSBzY3JlZW5kYXRhWzFdOworCSAgICAqbGluZXAgPSAoKHNwICE9IDAgJiYgc3AtPl9maWx0ZXJlZCkKKwkJICAgICAgPyAxCisJCSAgICAgIDogc2NyZWVuZGF0YVsxXSk7CiAJICAgIFQoKCJFTVggc2NyZWVuIHNpemU6IGVudmlyb25tZW50IExJTkVTID0gJWQgQ09MVU1OUyA9ICVkIiwKIAkgICAgICAgKmxpbmVwLCAqY29scCkpOwogCX0KICNlbmRpZgogI2lmIEhBVkVfU0laRUNIQU5HRQotCS8qIGlmIHRoYXQgZGlkbid0IHdvcmssIG1heWJlIHdlIGNhbiB0cnkgYXNraW5nIHRoZSBPUyAqLwotCWlmICgqbGluZXAgPD0gMCB8fCAqY29scCA8PSAwKSB7Ci0JICAgIGlmIChpc2F0dHkoY3VyX3Rlcm0tPkZpbGVkZXMpKSB7Ci0JCVNUUlVDVF9XSU5TSVpFIHNpemU7CisJLyogdHJ5IGFza2luZyB0aGUgT1MgKi8KKwlpZiAoTkNfSVNBVFRZKGN1cl90ZXJtLT5GaWxlZGVzKSkgeworCSAgICBTVFJVQ1RfV0lOU0laRSBzaXplOwogCi0JCWVycm5vID0gMDsKLQkJZG8gewotCQkgICAgaWYgKGlvY3RsKGN1cl90ZXJtLT5GaWxlZGVzLCBJT0NUTF9XSU5TSVpFLCAmc2l6ZSkgPCAwCi0JCQkmJiBlcnJubyAhPSBFSU5UUikKLQkJCWdvdG8gZmFpbHVyZTsKLQkJfSB3aGlsZQotCQkgICAgKGVycm5vID09IEVJTlRSKTsKLQotCQkvKgotCQkgKiBTb2xhcmlzIGxldHMgdXNlcnMgb3ZlcnJpZGUgZWl0aGVyIGRpbWVuc2lvbiB3aXRoIGFuCi0JCSAqIGVudmlyb25tZW50IHZhcmlhYmxlLgotCQkgKi8KLQkJaWYgKCpsaW5lcCA8PSAwKQotCQkgICAgKmxpbmVwID0gKHNwICE9IDAgJiYgc3AtPl9maWx0ZXJlZCkgPyAxIDogV0lOU0laRV9ST1dTKHNpemUpOwotCQlpZiAoKmNvbHAgPD0gMCkKKwkgICAgZXJybm8gPSAwOworCSAgICBkbyB7CisJCWlmIChpb2N0bChjdXJfdGVybS0+RmlsZWRlcywgSU9DVExfV0lOU0laRSwgJnNpemUpID49IDApIHsKKwkJICAgICpsaW5lcCA9ICgoc3AgIT0gMCAmJiBzcC0+X2ZpbHRlcmVkKQorCQkJICAgICAgPyAxCisJCQkgICAgICA6IFdJTlNJWkVfUk9XUyhzaXplKSk7CiAJCSAgICAqY29scCA9IFdJTlNJWkVfQ09MUyhzaXplKTsKLQkgICAgfQotCSAgICAvKiBGQUxMVEhSVSAqLwotCSAgZmFpbHVyZTo7CisJCSAgICBUKCgiU1lTIHNjcmVlbiBzaXplOiBlbnZpcm9ubWVudCBMSU5FUyA9ICVkIENPTFVNTlMgPSAlZCIsCisJCSAgICAgICAqbGluZXAsICpjb2xwKSk7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9IHdoaWxlCisJCShlcnJubyA9PSBFSU5UUik7CiAJfQogI2VuZGlmIC8qIEhBVkVfU0laRUNIQU5HRSAqLwogCisJaWYgKF9uY19wcmVzY3JlZW4udXNlX2VudikgeworCSAgICBpZiAoX25jX3ByZXNjcmVlbi51c2VfdGlvY3RsKSB7CisJCS8qCisJCSAqIElmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgdXNlZCwgdXBkYXRlIHRoZW0uCisJCSAqLworCQlpZiAoKHNwID09IDAgfHwgIXNwLT5fZmlsdGVyZWQpICYmIF9uY19nZXRlbnZfbnVtKCJMSU5FUyIpID4gMCkgeworCQkgICAgX25jX3NldGVudl9udW0oIkxJTkVTIiwgKmxpbmVwKTsKKwkJfQorCQlpZiAoX25jX2dldGVudl9udW0oIkNPTFVNTlMiKSA+IDApIHsKKwkJICAgIF9uY19zZXRlbnZfbnVtKCJDT0xVTU5TIiwgKmNvbHApOworCQl9CisJICAgIH0KKworCSAgICAvKgorCSAgICAgKiBGaW5hbGx5LCBsb29rIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisJICAgICAqCisJICAgICAqIFNvbGFyaXMgbGV0cyB1c2VycyBvdmVycmlkZSBlaXRoZXIgZGltZW5zaW9uIHdpdGggYW4gZW52aXJvbm1lbnQKKwkgICAgICogdmFyaWFibGUuCisJICAgICAqLworCSAgICBpZiAoKHZhbHVlID0gX25jX2dldGVudl9udW0oIkxJTkVTIikpID4gMCkgeworCQkqbGluZXAgPSB2YWx1ZTsKKwkJVCgoInNjcmVlbiBzaXplOiBlbnZpcm9ubWVudCBMSU5FUyA9ICVkIiwgKmxpbmVwKSk7CisJICAgIH0KKwkgICAgaWYgKCh2YWx1ZSA9IF9uY19nZXRlbnZfbnVtKCJDT0xVTU5TIikpID4gMCkgeworCQkqY29scCA9IHZhbHVlOworCQlUKCgic2NyZWVuIHNpemU6IGVudmlyb25tZW50IENPTFVNTlMgPSAlZCIsICpjb2xwKSk7CisJICAgIH0KKwl9CisKIAkvKiBpZiB3ZSBjYW4ndCBnZXQgZHluYW1pYyBpbmZvIGFib3V0IHRoZSBzaXplLCB1c2Ugc3RhdGljICovCiAJaWYgKCpsaW5lcCA8PSAwKSB7CiAJICAgICpsaW5lcCA9IChpbnQpIGxpbmVzOwpAQCAtMjk4LDI5ICs0MDcsNDMgQEAKICAgICBUQUJTSVpFID0gbXlfdGFic2l6ZTsKICNlbmRpZgogICAgIFQoKCJUQUJTSVpFID0gJWQiLCBUQUJTSVpFKSk7CisjZW5kaWYgLyogVVNFX1RFUk1fRFJJVkVSICovCiB9CiAKICNpZiBVU0VfU0laRUNIQU5HRQogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY191cGRhdGVfc2NyZWVuc2l6ZShTQ1JFRU4gKnNwKQogewotICAgIFRFUk1JTkFMICp0ZXJtcCA9IGN1cl90ZXJtOwotICAgIGludCBvbGRfbGluZXMgPSBsaW5lczsKICAgICBpbnQgbmV3X2xpbmVzOwotICAgIGludCBvbGRfY29scyA9IGNvbHVtbnM7CiAgICAgaW50IG5ld19jb2xzOwogCi0gICAgX25jX2dldF9zY3JlZW5zaXplKHNwLCAmbmV3X2xpbmVzLCAmbmV3X2NvbHMpOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIGludCBvbGRfbGluZXM7CisgICAgaW50IG9sZF9jb2xzOworCisgICAgYXNzZXJ0KHNwICE9IDApOworCisgICAgQ2FsbERyaXZlcl8yKHNwLCB0ZF9nZXRzaXplLCAmb2xkX2xpbmVzLCAmb2xkX2NvbHMpOworCisjZWxzZQorICAgIFRFUk1JTkFMICp0ZXJtcCA9IGN1cl90ZXJtOworICAgIGludCBvbGRfbGluZXMgPSBsaW5lczsKKyAgICBpbnQgb2xkX2NvbHMgPSBjb2x1bW5zOworI2VuZGlmCisKKyAgICBUSU5GT19HRVRfU0laRShzcCwgc3AtPl90ZXJtLCAmbmV3X2xpbmVzLCAmbmV3X2NvbHMpOwogCiAgICAgLyoKICAgICAgKiBTZWUgaXNfdGVybV9yZXNpemVkKCkgYW5kIHJlc2l6ZXRlcm0oKS4KICAgICAgKiBXZSdyZSBkb2luZyBpdCB0aGlzIHdheSBiZWNhdXNlIHRob3NlIGZ1bmN0aW9ucyBiZWxvbmcgdG8gdGhlIHVwcGVyCiAgICAgICogbmN1cnNlcyBsaWJyYXJ5LCB3aGlsZSB0aGlzIHJlc2lkZXMgaW4gdGhlIGxvd2VyIHRlcm1pbmZvIGxpYnJhcnkuCiAgICAgICovCi0gICAgaWYgKHNwICE9IDAKLQkmJiBzcC0+X3Jlc2l6ZSAhPSAwKSB7Ci0JaWYgKChuZXdfbGluZXMgIT0gb2xkX2xpbmVzKSB8fCAobmV3X2NvbHMgIT0gb2xkX2NvbHMpKQotCSAgICBzcC0+X3Jlc2l6ZShuZXdfbGluZXMsIG5ld19jb2xzKTsKKyAgICBpZiAoc3AgIT0gMCAmJiBzcC0+X3Jlc2l6ZSAhPSAwKSB7CisJaWYgKChuZXdfbGluZXMgIT0gb2xkX2xpbmVzKSB8fCAobmV3X2NvbHMgIT0gb2xkX2NvbHMpKSB7CisJICAgIHNwLT5fcmVzaXplKE5DVVJTRVNfU1BfQVJHeCBuZXdfbGluZXMsIG5ld19jb2xzKTsKKwl9IGVsc2UgaWYgKHNwLT5fc2lnX3dpbmNoICYmIChzcC0+X3VuZ2V0Y2ggIT0gMCkpIHsKKwkgICAgc3AtPl91bmdldGNoKFNQX1BBUk0sIEtFWV9SRVNJWkUpOwkvKiBzbyBhcHBsaWNhdGlvbiBjYW4ga25vdyB0aGlzICovCisJfQogCXNwLT5fc2lnX3dpbmNoID0gRkFMU0U7CiAgICAgfQogfQpAQCAtMzMyLDI5ICs0NTUsMTMgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2RlZmluZSByZXRfZXJyb3IoY29kZSwgZm10LCBhcmcpCWlmIChlcnJyZXQpIHtcCi0JCQkJCSAgICAqZXJycmV0ID0gY29kZTtcCi0JCQkJCSAgICByZXR1cm5Db2RlKEVSUik7XAotCQkJCQl9IGVsc2Uge1wKLQkJCQkJICAgIGZwcmludGYoc3RkZXJyLCBmbXQsIGFyZyk7XAotCQkJCQkgICAgZXhpdChFWElUX0ZBSUxVUkUpO1wKLQkJCQkJfQotCi0jZGVmaW5lIHJldF9lcnJvcjAoY29kZSwgbXNnKQkJaWYgKGVycnJldCkge1wKLQkJCQkJICAgICplcnJyZXQgPSBjb2RlO1wKLQkJCQkJICAgIHJldHVybkNvZGUoRVJSKTtcCi0JCQkJCX0gZWxzZSB7XAotCQkJCQkgICAgZnByaW50ZihzdGRlcnIsIG1zZyk7XAotCQkJCQkgICAgZXhpdChFWElUX0ZBSUxVUkUpO1wKLQkJCQkJfQotCi0jaWYgVVNFX0RBVEFCQVNFIHx8IFVTRV9URVJNQ0FQCisjaWYgTkNVUlNFU19VU0VfREFUQUJBU0UgfHwgTkNVUlNFU19VU0VfVEVSTUNBUAogLyoKICAqIFJldHVybiAxIGlmIGVudHJ5IGZvdW5kLCAwIGlmIG5vdCBmb3VuZCwgLTEgaWYgZGF0YWJhc2Ugbm90IGFjY2Vzc2libGUsCiAgKiBqdXN0IGxpa2UgdGdldGVudCgpLgogICovCi1zdGF0aWMgaW50Ci1ncmFiX2VudHJ5KGNvbnN0IGNoYXIgKmNvbnN0IHRuLCBURVJNVFlQRSAqY29uc3QgdHApCitpbnQKK19uY19zZXR1cF90aW5mbyhjb25zdCBjaGFyICpjb25zdCB0biwgVEVSTVRZUEUgKmNvbnN0IHRwKQogewogICAgIGNoYXIgZmlsZW5hbWVbUEFUSF9NQVhdOwogICAgIGludCBzdGF0dXMgPSBfbmNfcmVhZF9lbnRyeSh0biwgZmlsZW5hbWUsIHRwKTsKQEAgLTM4MSwyOCArNDg4LDI3IEBACiAjZW5kaWYKIAogLyoKLSoqCWRvX3Byb3RvdHlwZSgpCi0qKgogKioJVGFrZSB0aGUgcmVhbCBjb21tYW5kIGNoYXJhY3RlciBvdXQgb2YgdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlCiAqKglhbmQgc3Vic3RpdHV0ZSBpdCBpbiBmb3IgdGhlIHByb3RvdHlwZSBnaXZlbiBpbiAnY29tbWFuZF9jaGFyYWN0ZXInLgogKi8KLXN0YXRpYyB2b2lkCi1kb19wcm90b3R5cGUoVEVSTUlOQUwgKiB0ZXJtcCkKK3ZvaWQKK19uY190aW5mb19jbWRjaChURVJNSU5BTCAqIHRlcm1wLCBpbnQgcHJvdG8pCiB7CiAgICAgdW5zaWduZWQgaTsKICAgICBjaGFyIENDOwotICAgIGNoYXIgcHJvdG87CiAgICAgY2hhciAqdG1wOwogCi0gICAgaWYgKCh0bXAgPSBnZXRlbnYoIkNDIikpICE9IDApIHsKLQlpZiAoKENDID0gKnRtcCkgIT0gMCkgewotCSAgICBwcm90byA9ICpjb21tYW5kX2NoYXJhY3RlcjsKLQotCSAgICBmb3JfZWFjaF9zdHJpbmcoaSwgJih0ZXJtcC0+dHlwZSkpIHsKLQkJZm9yICh0bXAgPSB0ZXJtcC0+dHlwZS5TdHJpbmdzW2ldOyAqdG1wOyB0bXArKykgewotCQkgICAgaWYgKCp0bXAgPT0gcHJvdG8pCi0JCQkqdG1wID0gQ0M7Ci0JCX0KKyAgICAvKgorICAgICAqIE9ubHkgdXNlIHRoZSBjaGFyYWN0ZXIgaWYgdGhlIHN0cmluZyBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIsCisgICAgICogc2luY2UgaXQgaXMgZmFpcmx5IGNvbW1vbiBmb3IgZGV2ZWxvcGVycyB0byBzZXQgdGhlIEMgY29tcGlsZXIKKyAgICAgKiBuYW1lIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIC0gdXNpbmcgdGhlIHNhbWUgc3ltYm9sLgorICAgICAqLworICAgIGlmICgodG1wID0gZ2V0ZW52KCJDQyIpKSAhPSAwICYmIHN0cmxlbih0bXApID09IDEpIHsKKwlDQyA9ICp0bXA7CisJZm9yX2VhY2hfc3RyaW5nKGksICYodGVybXAtPnR5cGUpKSB7CisJICAgIGZvciAodG1wID0gdGVybXAtPnR5cGUuU3RyaW5nc1tpXTsgdG1wICYmICp0bXA7IHRtcCsrKSB7CisJCWlmIChVQ2hhcigqdG1wKSA9PSBwcm90bykKKwkJICAgICp0bXAgPSBDQzsKIAkgICAgfQogCX0KICAgICB9CkBAIC00MzksNyArNTQ1LDkgQEAKIF9uY191bmljb2RlX2xvY2FsZSh2b2lkKQogewogICAgIGludCByZXN1bHQgPSAwOwotI2lmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAorI2lmIGRlZmluZWQoX19NSU5HVzMyX18pICYmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgcmVzdWx0ID0gMTsKKyNlbGlmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAogICAgIGNoYXIgKmVudiA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwogICAgIHJlc3VsdCA9ICFzdHJjbXAoZW52LCAiVVRGLTgiKTsKICAgICBUKCgiX25jX3VuaWNvZGVfbG9jYWxlKCVzKSAtPiVkIiwgZW52LCByZXN1bHQpKTsKQEAgLTQ2NSw0NCArNTczLDc0IEBACiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfbG9jYWxlX2JyZWFrc19hY3MoVEVSTUlOQUwgKiB0ZXJtcCkKIHsKLSAgICBjaGFyICplbnY7CisgICAgY29uc3QgY2hhciAqZW52X25hbWUgPSAiTkNVUlNFU19OT19VVEY4X0FDUyI7CisgICAgY29uc3QgY2hhciAqZW52OworICAgIGludCB2YWx1ZTsKKyAgICBpbnQgcmVzdWx0ID0gMDsKIAotICAgIGlmICgoZW52ID0gZ2V0ZW52KCJOQ1VSU0VTX05PX1VURjhfQUNTIikpICE9IDApIHsKLQlyZXR1cm4gYXRvaShlbnYpOworICAgIFQoKFRfQ0FMTEVEKCJfbmNfbG9jYWxlX2JyZWFrc19hY3M6JWQiKSwgcmVzdWx0KSk7CisgICAgaWYgKGdldGVudihlbnZfbmFtZSkgIT0gMCkgeworCXJlc3VsdCA9IF9uY19nZXRlbnZfbnVtKGVudl9uYW1lKTsKKyAgICB9IGVsc2UgaWYgKCh2YWx1ZSA9IHRpZ2V0bnVtKCJVOCIpKSA+PSAwKSB7CisJcmVzdWx0ID0gdmFsdWU7CQkvKiB1c2UgZXh0ZW5zaW9uIGZlYXR1cmUgKi8KICAgICB9IGVsc2UgaWYgKChlbnYgPSBnZXRlbnYoIlRFUk0iKSkgIT0gMCkgewotCWlmIChzdHJzdHIoZW52LCAibGludXgiKSkKLQkgICAgcmV0dXJuIDE7CQkvKiBhbHdheXMgYnJva2VuICovCi0JaWYgKHN0cnN0cihlbnYsICJzY3JlZW4iKSAhPSAwCi0JICAgICYmICgoZW52ID0gZ2V0ZW52KCJURVJNQ0FQIikpICE9IDAKLQkJJiYgc3Ryc3RyKGVudiwgInNjcmVlbiIpICE9IDApCi0JICAgICYmIHN0cnN0cihlbnYsICJoaElJMDAiKSAhPSAwKSB7CisJaWYgKHN0cnN0cihlbnYsICJsaW51eCIpKSB7CisJICAgIHJlc3VsdCA9IDE7CQkvKiBhbHdheXMgYnJva2VuICovCisJfSBlbHNlIGlmIChzdHJzdHIoZW52LCAic2NyZWVuIikgIT0gMAorCQkgICAmJiAoKGVudiA9IGdldGVudigiVEVSTUNBUCIpKSAhPSAwCisJCSAgICAgICAmJiBzdHJzdHIoZW52LCAic2NyZWVuIikgIT0gMCkKKwkJICAgJiYgc3Ryc3RyKGVudiwgImhoSUkwMCIpICE9IDApIHsKIAkgICAgaWYgKENPTlRST0xfTihlbnRlcl9hbHRfY2hhcnNldF9tb2RlKSB8fAogCQlDT05UUk9MX08oZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkgfHwKIAkJQ09OVFJPTF9OKHNldF9hdHRyaWJ1dGVzKSB8fAotCQlDT05UUk9MX08oc2V0X2F0dHJpYnV0ZXMpKQotCQlyZXR1cm4gMTsKKwkJQ09OVFJPTF9PKHNldF9hdHRyaWJ1dGVzKSkgeworCQlyZXN1bHQgPSAxOworCSAgICB9CiAJfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKLS8qCi0gKiBUaGlzIGVudHJ5cG9pbnQgaXMgY2FsbGVkIGZyb20gdGdldGVudCgpIHRvIGFsbG93IGEgc3BlY2lhbCBjYXNlIG9mIHJldXNpbmcKLSAqIHRoZSBzYW1lIFRFUk1JTkFMIGRhdGEgKHNlZSBjb21tZW50KS4KLSAqLwogTkNVUlNFU19FWFBPUlQoaW50KQotX25jX3NldHVwdGVybShOQ1VSU0VTX0NPTlNUIGNoYXIgKnRuYW1lLCBpbnQgRmlsZWRlcywgaW50ICplcnJyZXQsIGJvb2wgcmV1c2UpCitUSU5GT19TRVRVUF9URVJNKFRFUk1JTkFMICoqIHRwLAorCQkgTkNVUlNFU19DT05TVCBjaGFyICp0bmFtZSwKKwkJIGludCBGaWxlZGVzLAorCQkgaW50ICplcnJyZXQsCisJCSBpbnQgcmV1c2UpCiB7Ci0gICAgVEVSTUlOQUwgKnRlcm1wOworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKlRDQiA9IDA7CisjZWxzZQogICAgIGludCBzdGF0dXM7CisjZW5kaWYKKyAgICBURVJNSU5BTCAqdGVybXA7CisgICAgU0NSRUVOICpzcCA9IDA7CisgICAgaW50IGNvZGUgPSBFUlI7CiAKICAgICBTVEFSVF9UUkFDRSgpOwotICAgIFQoKFRfQ0FMTEVEKCJzZXR1cHRlcm0oJXMsJWQsJXApIiksIF9uY192aXNidWYodG5hbWUpLCBGaWxlZGVzLCBlcnJyZXQpKTsKKworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorICAgIFQoKFRfQ0FMTEVEKCJfbmNfc2V0dXB0ZXJtX2V4KCVwLCVzLCVkLCVwKSIpLAorICAgICAgICh2b2lkICopIHRwLCBfbmNfdmlzYnVmKHRuYW1lKSwgRmlsZWRlcywgKHZvaWQgKikgZXJycmV0KSk7CisKKyAgICBpZiAodHAgPT0gMCkgeworCXJldF9lcnJvcjAoVEdFVEVOVF9FUlIsCisJCSAgICJJbnZhbGlkIHBhcmFtZXRlciwgaW50ZXJuYWwgZXJyb3IuXG4iKTsKKyAgICB9IGVsc2UKKwl0ZXJtcCA9ICp0cDsKKyNlbHNlCisgICAgdGVybXAgPSBjdXJfdGVybTsKKyAgICBUKChUX0NBTExFRCgic2V0dXB0ZXJtKCVzLCVkLCVwKSIpLCBfbmNfdmlzYnVmKHRuYW1lKSwgRmlsZWRlcywgKHZvaWQgKikgZXJycmV0KSk7CisjZW5kaWYKIAogICAgIGlmICh0bmFtZSA9PSAwKSB7CiAJdG5hbWUgPSBnZXRlbnYoIlRFUk0iKTsKIAlpZiAodG5hbWUgPT0gMCB8fCAqdG5hbWUgPT0gJ1wwJykgeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCSAgICB0bmFtZSA9ICJ1bmtub3duIjsKKyNlbHNlCiAJICAgIHJldF9lcnJvcjAoVEdFVEVOVF9FUlIsICJURVJNIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBzZXQuXG4iKTsKKyNlbmRpZgogCX0KICAgICB9CiAKQEAgLTUxOCw3ICs2NTYsNyBAQAogICAgICAqIEFsbG93IG91dHB1dCByZWRpcmVjdGlvbi4gIFRoaXMgaXMgd2hhdCBTVnIzIGRvZXMuICBJZiBzdGRvdXQgaXMKICAgICAgKiBkaXJlY3RlZCB0byBhIGZpbGUsIHNjcmVlbiB1cGRhdGVzIGdvIHRvIHN0YW5kYXJkIGVycm9yLgogICAgICAqLwotICAgIGlmIChGaWxlZGVzID09IFNURE9VVF9GSUxFTk8gJiYgIWlzYXR0eShGaWxlZGVzKSkKKyAgICBpZiAoRmlsZWRlcyA9PSBTVERPVVRfRklMRU5PICYmICFOQ19JU0FUVFkoRmlsZWRlcykpCiAJRmlsZWRlcyA9IFNUREVSUl9GSUxFTk87CiAKICAgICAvKgpAQCAtNTM4LDIyICs2NzYsNDIgQEAKICAgICAgKiBwcm9wZXJseSB3aXRoIHRoaXMgZmVhdHVyZSkuCiAgICAgICovCiAgICAgaWYgKHJldXNlCi0JJiYgKHRlcm1wID0gY3VyX3Rlcm0pICE9IDAKKwkmJiAodGVybXAgIT0gMCkKIAkmJiB0ZXJtcC0+RmlsZWRlcyA9PSBGaWxlZGVzCiAJJiYgdGVybXAtPl90ZXJtbmFtZSAhPSAwCiAJJiYgIXN0cmNtcCh0ZXJtcC0+X3Rlcm1uYW1lLCB0bmFtZSkKIAkmJiBfbmNfbmFtZV9tYXRjaCh0ZXJtcC0+dHlwZS50ZXJtX25hbWVzLCB0bmFtZSwgInwiKSkgewogCVQoKCJyZXVzaW5nIGV4aXN0aW5nIHRlcm1pbmFsIGluZm9ybWF0aW9uIGFuZCBtb2RlLXNldHRpbmdzIikpOworCWNvZGUgPSBPSzsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlUQ0IgPSAoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqKSB0ZXJtcDsKKyNlbmRpZgogICAgIH0gZWxzZSB7Ci0KKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlURVJNSU5BTF9DT05UUk9MX0JMT0NLICpteV90Y2I7CisJbXlfdGNiID0gdHlwZUNhbGxvYyhURVJNSU5BTF9DT05UUk9MX0JMT0NLLCAxKTsKKwl0ZXJtcCA9ICYobXlfdGNiLT50ZXJtKTsKKyNlbHNlCiAJdGVybXAgPSB0eXBlQ2FsbG9jKFRFUk1JTkFMLCAxKTsKLQorI2VuZGlmCiAJaWYgKHRlcm1wID09IDApIHsKIAkgICAgcmV0X2Vycm9yMChUR0VURU5UX0VSUiwKIAkJICAgICAgICJOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgdGVybWluYWwgc3RydWN0dXJlLlxuIik7CiAJfQotI2lmIFVTRV9EQVRBQkFTRSB8fCBVU0VfVEVSTUNBUAotCXN0YXR1cyA9IGdyYWJfZW50cnkodG5hbWUsICZ0ZXJtcC0+dHlwZSk7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJSU5JVF9URVJNX0RSSVZFUigpOworCVRDQiA9IChURVJNSU5BTF9DT05UUk9MX0JMT0NLICopIHRlcm1wOworCWNvZGUgPSBfbmNfZ2xvYmFscy50ZXJtX2RyaXZlcihUQ0IsIHRuYW1lLCBlcnJyZXQpOworCWlmIChjb2RlID09IE9LKSB7CisJICAgIHRlcm1wLT5GaWxlZGVzID0gKHNob3J0KSBGaWxlZGVzOworCSAgICB0ZXJtcC0+X3Rlcm1uYW1lID0gc3RyZHVwKHRuYW1lKTsKKwl9IGVsc2UgeworCSAgICByZXRfZXJyb3IwKGVycnJldCA/ICplcnJyZXQgOiBUR0VURU5UX0VSUiwKKwkJICAgICAgICJDb3VsZCBub3QgZmluZCBhbnkgZHJpdmVyIHRvIGhhbmRsZSB0aGlzIHRlcm1pbmFsLlxuIik7CisJfQorI2Vsc2UKKyNpZiBOQ1VSU0VTX1VTRV9EQVRBQkFTRSB8fCBOQ1VSU0VTX1VTRV9URVJNQ0FQCisJc3RhdHVzID0gX25jX3NldHVwX3RpbmZvKHRuYW1lLCAmdGVybXAtPnR5cGUpOwogI2Vsc2UKIAlzdGF0dXMgPSBUR0VURU5UX05POwogI2VuZGlmCkBAIC01NjMsNyArNzIxLDcgQEAKIAkgICAgY29uc3QgVEVSTVRZUEUgKmZhbGxiYWNrID0gX25jX2ZhbGxiYWNrKHRuYW1lKTsKIAogCSAgICBpZiAoZmFsbGJhY2spIHsKLQkJdGVybXAtPnR5cGUgPSAqZmFsbGJhY2s7CisJCV9uY19jb3B5X3Rlcm10eXBlKCYodGVybXAtPnR5cGUpLCBmYWxsYmFjayk7CiAJCXN0YXR1cyA9IFRHRVRFTlRfWUVTOwogCSAgICB9CiAJfQpAQCAtNTczLDIxICs3MzEsMjEgQEAKIAkgICAgaWYgKHN0YXR1cyA9PSBUR0VURU5UX0VSUikgewogCQlyZXRfZXJyb3IwKHN0YXR1cywgInRlcm1pbmFscyBkYXRhYmFzZSBpcyBpbmFjY2Vzc2libGVcbiIpOwogCSAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBUR0VURU5UX05PKSB7Ci0JCXJldF9lcnJvcihzdGF0dXMsICInJXMnOiB1bmtub3duIHRlcm1pbmFsIHR5cGUuXG4iLCB0bmFtZSk7CisJCXJldF9lcnJvcjEoc3RhdHVzLCAidW5rbm93biB0ZXJtaW5hbCB0eXBlLlxuIiwgdG5hbWUpOwogCSAgICB9CiAJfQogI2lmICFVU0VfUkVFTlRSQU5UCi0Jc3RybmNweSh0dHl0eXBlLCB0ZXJtcC0+dHlwZS50ZXJtX25hbWVzLCBOQU1FU0laRSAtIDEpOworCXN0cm5jcHkodHR5dHlwZSwgdGVybXAtPnR5cGUudGVybV9uYW1lcywgKHNpemVfdCkgKE5BTUVTSVpFIC0gMSkpOwogCXR0eXR5cGVbTkFNRVNJWkUgLSAxXSA9ICdcMCc7CiAjZW5kaWYKIAotCXRlcm1wLT5GaWxlZGVzID0gRmlsZWRlczsKKwl0ZXJtcC0+RmlsZWRlcyA9IChzaG9ydCkgRmlsZWRlczsKIAl0ZXJtcC0+X3Rlcm1uYW1lID0gc3RyZHVwKHRuYW1lKTsKIAogCXNldF9jdXJ0ZXJtKHRlcm1wKTsKIAotCWlmIChjb21tYW5kX2NoYXJhY3RlciAmJiBnZXRlbnYoIkNDIikpCi0JICAgIGRvX3Byb3RvdHlwZSh0ZXJtcCk7CisJaWYgKGNvbW1hbmRfY2hhcmFjdGVyKQorCSAgICBfbmNfdGluZm9fY21kY2godGVybXAsIFVDaGFyKCpjb21tYW5kX2NoYXJhY3RlcikpOwogCiAJLyoKIAkgKiBJZiBhbiBhcHBsaWNhdGlvbiBjYWxscyBzZXR1cHRlcm0oKSByYXRoZXIgdGhhbiBpbml0c2NyKCkgb3IKQEAgLTU5NSwyOSArNzUzLDEwOSBAQAogCSAqIF9uY19zZXR1cHNjcmVlbigpLiAgRG8gaXQgbm93IGFueXdheSwgc28gd2UgY2FuIGluaXRpYWxpemUgdGhlCiAJICogYmF1ZHJhdGUuCiAJICovCi0JaWYgKGlzYXR0eShGaWxlZGVzKSkgeworCWlmIChOQ19JU0FUVFkoRmlsZWRlcykpIHsKIAkgICAgZGVmX3Byb2dfbW9kZSgpOwogCSAgICBiYXVkcmF0ZSgpOwogCX0KKwljb2RlID0gT0s7CisjZW5kaWYKICAgICB9CiAKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICAqdHAgPSB0ZXJtcDsKKyAgICBOQ1VSU0VTX1NQX05BTUUoc2V0X2N1cnRlcm0pIChzcCwgdGVybXApOworICAgIFRDQi0+ZHJ2LT50ZF9pbml0KFRDQik7CisjZWxzZQorICAgIHNwID0gU1A7CisjZW5kaWYKKwogICAgIC8qCiAgICAgICogV2Ugc2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgc2NyZWVuc2l6ZSwganVzdCBpbiBjYXNlLgogICAgICAqLwotICAgIF9uY19nZXRfc2NyZWVuc2l6ZShTUCwgcHRyTGluZXMoKSwgcHRyQ29scygpKTsKKyAgICBUSU5GT19HRVRfU0laRShzcCwgdGVybXAsIHB0ckxpbmVzKHNwKSwgcHRyQ29scyhzcCkpOwogCiAgICAgaWYgKGVycnJldCkKIAkqZXJycmV0ID0gVEdFVEVOVF9ZRVM7CiAKKyNpZm5kZWYgVVNFX1RFUk1fRFJJVkVSCiAgICAgaWYgKGdlbmVyaWNfdHlwZSkgewotCXJldF9lcnJvcihUR0VURU5UX05PLCAiJyVzJzogSSBuZWVkIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLlxuIiwgdG5hbWUpOworCS8qCisJICogQlNEIDQuMydzIHRlcm1jYXAgY29udGFpbnMgbWlzLXR5cGVkICJnbiIgZm9yIHd5OTkuICBEbyBhIHNhbml0eQorCSAqIGNoZWNrIGJlZm9yZSBnaXZpbmcgdXAuCisJICovCisJaWYgKChWQUxJRF9TVFJJTkcoY3Vyc29yX2FkZHJlc3MpCisJICAgICB8fCAoVkFMSURfU1RSSU5HKGN1cnNvcl9kb3duKSAmJiBWQUxJRF9TVFJJTkcoY3Vyc29yX2hvbWUpKSkKKwkgICAgJiYgVkFMSURfU1RSSU5HKGNsZWFyX3NjcmVlbikpIHsKKwkgICAgcmV0X2Vycm9yMShUR0VURU5UX1lFUywgInRlcm1pbmFsIGlzIG5vdCByZWFsbHkgZ2VuZXJpYy5cbiIsIHRuYW1lKTsKKwl9IGVsc2UgeworCSAgICBkZWxfY3VydGVybSh0ZXJtcCk7CisJICAgIHJldF9lcnJvcjEoVEdFVEVOVF9OTywgIkkgbmVlZCBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYy5cbiIsIHRuYW1lKTsKKwl9CisgICAgfSBlbHNlIGlmIChoYXJkX2NvcHkpIHsKKwlyZXRfZXJyb3IxKFRHRVRFTlRfWUVTLCAiSSBjYW4ndCBoYW5kbGUgaGFyZGNvcHkgdGVybWluYWxzLlxuIiwgdG5hbWUpOwogICAgIH0KLSAgICBpZiAoaGFyZF9jb3B5KSB7Ci0JcmV0X2Vycm9yKFRHRVRFTlRfWUVTLCAiJyVzJzogSSBjYW4ndCBoYW5kbGUgaGFyZGNvcHkgdGVybWluYWxzLlxuIiwgdG5hbWUpOwotICAgIH0KLSAgICByZXR1cm5Db2RlKE9LKTsKKyNlbmRpZgorICAgIHJldHVybkNvZGUoY29kZSk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisvKgorICogSW4gY2FzZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBzY3JlZW5zLCB3ZSBuZWVkIHRvIGhhdmUgYSBzY3JlZW4gYmVmb3JlCisgKiBpbml0aWFsaXphdGlvbiBpbiBzZXR1cHNjcmVlbiB0YWtlcyBwbGFjZS4gIFRoaXMgaXMgdG8gZXh0ZW5kIHRoZSBzdWJzdGl0dXRlCisgKiBmb3Igc29tZSBvZiB0aGUgc3R1ZmYgaW4gX25jX3ByZXNjcmVlbiwgZXNwZWNpYWxseSBmb3Igc2xrIGFuZCByaXBvZmYKKyAqIGhhbmRsaW5nIHdoaWNoIHNob3VsZCBiZSBkb25lIHBlciBzY3JlZW4uCisgKi8KK05DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKQorbmV3X3ByZXNjcih2b2lkKQoreworICAgIHN0YXRpYyBTQ1JFRU4gKnNwOworCisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBUKChUX0NBTExFRCgibmV3X3ByZXNjcigpIikpKTsKKworICAgIGlmIChzcCA9PSAwKSB7CisJc3AgPSBfbmNfYWxsb2Nfc2NyZWVuX3NwKCk7CisJaWYgKHNwICE9IDApIHsKKwkgICAgc3AtPnJzcCA9IHNwLT5yaXBwZWRvZmY7CisJICAgIHNwLT5fZmlsdGVyZWQgPSBfbmNfcHJlc2NyZWVuLmZpbHRlcl9tb2RlOworCSAgICBzcC0+X3VzZV9lbnYgPSBfbmNfcHJlc2NyZWVuLnVzZV9lbnY7CisjaWYgTkNVUlNFU19OT19QQURESU5HCisJICAgIHNwLT5fbm9fcGFkZGluZyA9IF9uY19wcmVzY3JlZW4uX25vX3BhZGRpbmc7CisjZW5kaWYKKwkgICAgc3AtPnNsa19mb3JtYXQgPSAwOworCSAgICBzcC0+X3NsayA9IDA7CisJICAgIHNwLT5fcHJlc2NyZWVuID0gVFJVRTsKKwkgICAgU1BfUFJFX0lOSVQoc3ApOworI2lmIFVTRV9SRUVOVFJBTlQKKwkgICAgc3AtPl9UQUJTSVpFID0gX25jX3ByZXNjcmVlbi5fVEFCU0laRTsKKwkgICAgc3AtPl9FU0NERUxBWSA9IF9uY19wcmVzY3JlZW4uX0VTQ0RFTEFZOworI2VuZGlmCisJfQorICAgIH0KKyAgICByZXR1cm5TUChzcCk7Cit9CisjZW5kaWYKKworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorLyoKKyAqIFRoaXMgZW50cnlwb2ludCBpcyBjYWxsZWQgZnJvbSB0Z2V0ZW50KCkgdG8gYWxsb3cgYSBzcGVjaWFsIGNhc2Ugb2YgcmV1c2luZworICogdGhlIHNhbWUgVEVSTUlOQUwgZGF0YSAoc2VlIGNvbW1lbnQpLgorICovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfc2V0dXB0ZXJtKE5DVVJTRVNfQ09OU1QgY2hhciAqdG5hbWUsCisJICAgICAgaW50IEZpbGVkZXMsCisJICAgICAgaW50ICplcnJyZXQsCisJICAgICAgaW50IHJldXNlKQoreworICAgIGludCByZXM7CisgICAgVEVSTUlOQUwgKnRlcm1wID0gMDsKKyAgICByZXMgPSBUSU5GT19TRVRVUF9URVJNKCZ0ZXJtcCwgdG5hbWUsIEZpbGVkZXMsIGVycnJldCwgcmV1c2UpOworICAgIGlmIChFUlIgIT0gcmVzKQorCU5DVVJTRVNfU1BfTkFNRShzZXRfY3VydGVybSkgKENVUlJFTlRfU0NSRUVOX1BSRSwgdGVybXApOworICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKwogLyoKICAqCXNldHVwdGVybSh0ZXJtbmFtZSwgRmlsZWRlcywgZXJycmV0KQogICoKQEAgLTYyNyw1ICs4NjUsNiBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogc2V0dXB0ZXJtKE5DVVJTRVNfQ09OU1QgY2hhciAqdG5hbWUsIGludCBGaWxlZGVzLCBpbnQgKmVycnJldCkKIHsKKyAgICBTVEFSVF9UUkFDRSgpOwogICAgIHJldHVybiBfbmNfc2V0dXB0ZXJtKHRuYW1lLCBGaWxlZGVzLCBlcnJyZXQsIEZBTFNFKTsKIH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX3Rlcm1jYXAuYyBiL25jdXJzZXMvdGluZm8vbGliX3Rlcm1jYXAuYwppbmRleCAyZDI0NWZmLi5mZGZjNDk0IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl90ZXJtY2FwLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfdGVybWNhcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBzb21lIG9mIHRoZSBjb2RlIGluIGhlcmUgd2FzIGNvbnRyaWJ1dGVkIGJ5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogTWFnbnVzIEJlbmd0c3NvbiwgZDZtYmVuZ0BkdGVrLmNoYWxtZXJzLnNlIChOb3YnOTMpICAgICAgICAgICAgICAgICAgICAgICoKQEAgLTQzLDkgKzQ0LDExIEBACiAjaW5jbHVkZSA8dGljLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdGVybWNhcC5jLHYgMS42MyAyMDA4LzA4LzE2IDE5OjIyOjU1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3Rlcm1jYXAuYyx2IDEuODAgMjAxMy8wNi8wOCAxNjo0ODo0NyB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2hhciAqKSBVUCA9IDA7CiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2hhciAqKSBCQyA9IDA7CkBAIC02MCw2ICs2MywxNSBAQAogI2RlZmluZSBMQVNUX1VTRSBNeUNhY2hlW0NhY2hlSW54XS5sYXN0X3VzZWQKICNkZWZpbmUgTEFTVF9TRVEgTXlDYWNoZVtDYWNoZUlueF0uc2VxdWVuY2UKIAorLyoKKyAqIFRlcm1jYXAgbmFtZXMgYXJlIG1hdGNoZWQgb25seSB1c2luZyB0aGUgZmlyc3QgdHdvIGJ5dGVzLgorICogSWdub3JlIGFueSBleHRlbmRlZCBuYW1lcyBsb25nZXIgdGhhbiB0d28gYnl0ZXMsIHRvIGF2b2lkIHByb2JsZW1zCisgKiB3aXRoIGxlZ2FjeSBjb2RlIHdoaWNoIHBhc3NlcyBpbiBwYXJhbWV0ZXJzIHdob3NlIHVzZSBpcyBsb25nIGZvcmdvdHRlbi4KKyAqLworI2RlZmluZSBWYWxpZENhcChjYXApICgoKGNhcClbMF0gIT0gJ1wwJykgJiYgKChjYXApWzFdICE9ICdcMCcpKQorI2RlZmluZSBTYW1lQ2FwKGEsYikgICgoKGEpWzBdID09IChiKVswXSkgJiYgKChhKVsxXSA9PSAoYilbMV0pKQorI2RlZmluZSBWYWxpZEV4dChleHQpIChWYWxpZENhcChleHQpICYmIChleHQpWzJdID09ICdcMCcpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiB0Z2V0ZW50KGJ1ZnAsIHRlcm0pCkBAIC03NiwxNiArODgsMjYgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXRnZXRlbnQoY2hhciAqYnVmcCwgY29uc3QgY2hhciAqbmFtZSkKK05DVVJTRVNfU1BfTkFNRSh0Z2V0ZW50KSAoTkNVUlNFU19TUF9EQ0x4IGNoYXIgKmJ1ZnAsIGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgaW50IGVycmNvZGU7CisgICAgaW50IHJjID0gRVJSOwogICAgIGludCBuOwogICAgIGJvb2wgZm91bmRfY2FjaGUgPSBGQUxTRTsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICBURVJNSU5BTCAqdGVybXAgPSAwOworI2VuZGlmCiAKICAgICBTVEFSVF9UUkFDRSgpOwogICAgIFQoKFRfQ0FMTEVEKCJ0Z2V0ZW50KCkiKSkpOwogCi0gICAgX25jX3NldHVwdGVybSgoTkNVUlNFU19DT05TVCBjaGFyICopIG5hbWUsIFNURE9VVF9GSUxFTk8sICZlcnJjb2RlLCBUUlVFKTsKKyAgICBUSU5GT19TRVRVUF9URVJNKCZ0ZXJtcCwgKE5DVVJTRVNfQ09OU1QgY2hhciAqKSBuYW1lLAorCQkgICAgIFNURE9VVF9GSUxFTk8sICZyYywgVFJVRSk7CisKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKyAgICBpZiAodGVybXAgPT0gMCB8fAorCSEoKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKikgdGVybXApLT5kcnYtPmlzVGVybWluZm8pCisJcmV0dXJuQ29kZShyYyk7CisjZW5kaWYKIAogICAgIC8qCiAgICAgICogSW4gZ2VuZXJhbCB3ZSBjYW5ub3QgdGVsbCBpZiB0aGUgZml4ZWQgc2dyMCBpcyBzdGlsbCB1c2VkIGJ5IHRoZQpAQCAtMTA5LDkgKzEzMSw5IEBACiAJICAgIC8qCiAJICAgICAqIEFsc28gZnJlZSB0aGUgdGVybWluZm8gZGF0YSB0aGF0IHdlIGxvYWRlZCAobXVjaCBiaWdnZXIgbGVhaykuCiAJICAgICAqLwotCSAgICBpZiAoTEFTVF9UUk0gIT0gMCAmJiBMQVNUX1RSTSAhPSBjdXJfdGVybSkgeworCSAgICBpZiAoTEFTVF9UUk0gIT0gMCAmJiBMQVNUX1RSTSAhPSBUZXJtaW5hbE9mKFNQX1BBUk0pKSB7CiAJCVRFUk1JTkFMICp0cm0gPSBMQVNUX1RSTTsKLQkJZGVsX2N1cnRlcm0oTEFTVF9UUk0pOworCQlOQ1VSU0VTX1NQX05BTUUoZGVsX2N1cnRlcm0pIChOQ1VSU0VTX1NQX0FSR3ggTEFTVF9UUk0pOwogCQlmb3IgKENhY2hlSW54ID0gMDsgQ2FjaGVJbnggPCBUR0VURU5UX01BWDsgKytDYWNoZUlueCkKIAkJICAgIGlmIChMQVNUX1RSTSA9PSB0cm0pCiAJCQlMQVNUX1RSTSA9IDA7CkBAIC0xMzEsNyArMTUzLDcgQEAKIAl9CiAJQ2FjaGVJbnggPSBiZXN0OwogICAgIH0KLSAgICBMQVNUX1RSTSA9IGN1cl90ZXJtOworICAgIExBU1RfVFJNID0gVGVybWluYWxPZihTUF9QQVJNKTsKICAgICBMQVNUX1NFUSA9ICsrQ2FjaGVTZXE7CiAKICAgICBQQyA9IDA7CkBAIC0xMzksNyArMTYxLDcgQEAKICAgICBCQyA9IDA7CiAgICAgRklYX1NHUjAgPSAwOwkJLyogZG9uJ3QgZnJlZSBpdCAtIGFwcGxpY2F0aW9uIG1heSBzdGlsbCB1c2UgKi8KIAotICAgIGlmIChlcnJjb2RlID09IDEpIHsKKyAgICBpZiAocmMgPT0gMSkgewogCiAJaWYgKGN1cnNvcl9sZWZ0KQogCSAgICBpZiAoKGJhY2tzcGFjZXNfd2l0aF9icyA9IChjaGFyKSAhc3RyY21wKGN1cnNvcl9sZWZ0LCAiXGIiKSkgPT0gMCkKQEAgLTE1Myw3ICsxNzUsNyBAQAogCWlmIChiYWNrc3BhY2VfaWZfbm90X2JzICE9IE5VTEwpCiAJICAgIEJDID0gYmFja3NwYWNlX2lmX25vdF9iczsKIAotCWlmICgoRklYX1NHUjAgPSBfbmNfdHJpbV9zZ3IwKCYoY3VyX3Rlcm0tPnR5cGUpKSkgIT0gMCkgeworCWlmICgoRklYX1NHUjAgPSBfbmNfdHJpbV9zZ3IwKCYoVGVybWluYWxPZihTUF9QQVJNKS0+dHlwZSkpKSAhPSAwKSB7CiAJICAgIGlmICghc3RyY21wKEZJWF9TR1IwLCBleGl0X2F0dHJpYnV0ZV9tb2RlKSkgewogCQlpZiAoRklYX1NHUjAgIT0gZXhpdF9hdHRyaWJ1dGVfbW9kZSkgewogCQkgICAgZnJlZShGSVhfU0dSMCk7CkBAIC0xNjQsOCArMTg2LDggQEAKIAlMQVNUX0JVRiA9IGJ1ZnA7CiAJTEFTVF9VU0UgPSBUUlVFOwogCi0JU2V0Tm9QYWRkaW5nKFNQKTsKLQkodm9pZCkgYmF1ZHJhdGUoKTsJLyogc2V0cyBvc3BlZWQgYXMgYSBzaWRlLWVmZmVjdCAqLworCVNldE5vUGFkZGluZyhTUF9QQVJNKTsKKwkodm9pZCkgTkNVUlNFU19TUF9OQU1FKGJhdWRyYXRlKSAoTkNVUlNFU19TUF9BUkcpOwkvKiBzZXRzIG9zcGVlZCBhcyBhIHNpZGUtZWZmZWN0ICovCiAKIC8qIExJTlRfUFJFUFJPCiAjaWYgMCovCkBAIC0xNzQsOSArMTk2LDMwIEBACiAjZW5kaWYqLwogCiAgICAgfQotICAgIHJldHVybkNvZGUoZXJyY29kZSk7CisgICAgcmV0dXJuQ29kZShyYyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit0Z2V0ZW50KGNoYXIgKmJ1ZnAsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh0Z2V0ZW50KSAoQ1VSUkVOVF9TQ1JFRU4sIGJ1ZnAsIG5hbWUpOworfQorI2VuZGlmCisKKyNpZiAwCitzdGF0aWMgYm9vbAorc2FtZV90Y25hbWUoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikKK3sKKyAgICBib29sIGNvZGUgPSBTYW1lQ2FwKGEsIGIpOworICAgIGZwcmludGYoc3RkZXJyLCAiY29tcGFyZSglcywlcykgJXNcbiIsIGEsIGIsIGNvZGUgPyAic2FtZSIgOiAiZGlmZiIpOworICAgIHJldHVybiBjb2RlOworfQorCisjZWxzZQorI2RlZmluZSBzYW1lX3RjbmFtZShhLGIpIFNhbWVDYXAoYSxiKQorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiB0Z2V0ZmxhZyhzdHIpCkBAIC0xODcsMjQgKzIzMCw0OCBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogTkNVUlNFU19FWFBPUlQoaW50KQotdGdldGZsYWcoTkNVUlNFU19DT05TVCBjaGFyICppZCkKK05DVVJTRVNfU1BfTkFNRSh0Z2V0ZmxhZykgKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmlkKQogewotICAgIHVuc2lnbmVkIGk7CisgICAgaW50IHJlc3VsdCA9IDA7CQkvKiBTb2xhcmlzIHJldHVybnMgemVybyBmb3IgbWlzc2luZyBmbGFnICovCisgICAgaW50IGogPSAtMTsKIAotICAgIFQoKFRfQ0FMTEVEKCJ0Z2V0ZmxhZyglcykiKSwgaWQpKTsKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgewotCVRFUk1UWVBFICp0cCA9ICYoY3VyX3Rlcm0tPnR5cGUpOwotCWZvcl9lYWNoX2Jvb2xlYW4oaSwgdHApIHsKLQkgICAgY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dEJvb2xuYW1lKHRwLCBpLCBib29sY29kZXMpOwotCSAgICBpZiAoIXN0cm5jbXAoaWQsIGNhcG5hbWUsIDIpKSB7Ci0JCS8qIHNldHVwdGVybSBmb3JjZXMgaW52YWxpZCBib29sZWFucyB0byBmYWxzZSAqLwotCQlyZXR1cm5Db2RlKHRwLT5Cb29sZWFuc1tpXSk7CisgICAgVCgoVF9DQUxMRUQoInRnZXRmbGFnKCVwLCAlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgaWQpKTsKKyAgICBpZiAoSGFzVEluZm9UZXJtaW5hbChTUF9QQVJNKSAmJiBWYWxpZENhcChpZCkpIHsKKwlURVJNVFlQRSAqdHAgPSAmKFRlcm1pbmFsT2YoU1BfUEFSTSktPnR5cGUpOworCXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICplbnRyeV9wdHI7CisKKwllbnRyeV9wdHIgPSBfbmNfZmluZF90eXBlX2VudHJ5KGlkLCBCT09MRUFOLCBUUlVFKTsKKwlpZiAoZW50cnlfcHRyICE9IDApIHsKKwkgICAgaiA9IGVudHJ5X3B0ci0+bnRlX2luZGV4OworCX0KKyNpZiBOQ1VSU0VTX1hOQU1FUworCWVsc2UgeworCSAgICBpbnQgaTsKKwkgICAgZm9yX2VhY2hfZXh0X2Jvb2xlYW4oaSwgdHApIHsKKwkJY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dEJvb2xuYW1lKHRwLCBpLCBib29sY29kZXMpOworCQlpZiAoc2FtZV90Y25hbWUoaWQsIGNhcG5hbWUpICYmIFZhbGlkRXh0KGNhcG5hbWUpKSB7CisJCSAgICBqID0gaTsKKwkJICAgIGJyZWFrOworCQl9CiAJICAgIH0KIAl9CisjZW5kaWYKKwlpZiAoaiA+PSAwKSB7CisJICAgIC8qIG5vdGU6IHNldHVwdGVybSBmb3JjZXMgaW52YWxpZCBib29sZWFucyB0byBmYWxzZSAqLworCSAgICByZXN1bHQgPSB0cC0+Qm9vbGVhbnNbal07CisJfQogICAgIH0KLSAgICByZXR1cm5Db2RlKDApOwkJLyogU29sYXJpcyBkb2VzIHRoaXMgKi8KKyAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit0Z2V0ZmxhZyhOQ1VSU0VTX0NPTlNUIGNoYXIgKmlkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodGdldGZsYWcpIChDVVJSRU5UX1NDUkVFTiwgaWQpOworfQorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiB0Z2V0bnVtKHN0cikKQEAgLTIxNSwyNSArMjgyLDQ4IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi10Z2V0bnVtKE5DVVJTRVNfQ09OU1QgY2hhciAqaWQpCitOQ1VSU0VTX1NQX05BTUUodGdldG51bSkgKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmlkKQogewotICAgIHVuc2lnbmVkIGk7CisgICAgaW50IHJlc3VsdCA9IEFCU0VOVF9OVU1FUklDOworICAgIGludCBqID0gLTE7CiAKLSAgICBUKChUX0NBTExFRCgidGdldG51bSglcykiKSwgaWQpKTsKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgewotCVRFUk1UWVBFICp0cCA9ICYoY3VyX3Rlcm0tPnR5cGUpOwotCWZvcl9lYWNoX251bWJlcihpLCB0cCkgewotCSAgICBjb25zdCBjaGFyICpjYXBuYW1lID0gRXh0TnVtbmFtZSh0cCwgaSwgbnVtY29kZXMpOwotCSAgICBpZiAoIXN0cm5jbXAoaWQsIGNhcG5hbWUsIDIpKSB7Ci0JCWlmICghVkFMSURfTlVNRVJJQyh0cC0+TnVtYmVyc1tpXSkpCi0JCSAgICByZXR1cm5Db2RlKEFCU0VOVF9OVU1FUklDKTsKLQkJcmV0dXJuQ29kZSh0cC0+TnVtYmVyc1tpXSk7CisgICAgVCgoVF9DQUxMRUQoInRnZXRudW0oJXAsICVzKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBpZCkpOworICAgIGlmIChIYXNUSW5mb1Rlcm1pbmFsKFNQX1BBUk0pICYmIFZhbGlkQ2FwKGlkKSkgeworCVRFUk1UWVBFICp0cCA9ICYoVGVybWluYWxPZihTUF9QQVJNKS0+dHlwZSk7CisJc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKmVudHJ5X3B0cjsKKworCWVudHJ5X3B0ciA9IF9uY19maW5kX3R5cGVfZW50cnkoaWQsIE5VTUJFUiwgVFJVRSk7CisJaWYgKGVudHJ5X3B0ciAhPSAwKSB7CisJICAgIGogPSBlbnRyeV9wdHItPm50ZV9pbmRleDsKKwl9CisjaWYgTkNVUlNFU19YTkFNRVMKKwllbHNlIHsKKwkgICAgaW50IGk7CisJICAgIGZvcl9lYWNoX2V4dF9udW1iZXIoaSwgdHApIHsKKwkJY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dE51bW5hbWUodHAsIGksIG51bWNvZGVzKTsKKwkJaWYgKHNhbWVfdGNuYW1lKGlkLCBjYXBuYW1lKSAmJiBWYWxpZEV4dChjYXBuYW1lKSkgeworCQkgICAgaiA9IGk7CisJCSAgICBicmVhazsKKwkJfQogCSAgICB9CiAJfQorI2VuZGlmCisJaWYgKGogPj0gMCkgeworCSAgICBpZiAoVkFMSURfTlVNRVJJQyh0cC0+TnVtYmVyc1tqXSkpCisJCXJlc3VsdCA9IHRwLT5OdW1iZXJzW2pdOworCX0KICAgICB9Ci0gICAgcmV0dXJuQ29kZShBQlNFTlRfTlVNRVJJQyk7CisgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQordGdldG51bShOQ1VSU0VTX0NPTlNUIGNoYXIgKmlkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodGdldG51bSkgKENVUlJFTlRfU0NSRUVOLCBpZCk7Cit9CisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIHRnZXRzdHIoc3RyLCBhcmVhKQpAQCAtMjQ0LDQwICszMzQsNjIgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKLXRnZXRzdHIoTkNVUlNFU19DT05TVCBjaGFyICppZCwgY2hhciAqKmFyZWEpCitOQ1VSU0VTX1NQX05BTUUodGdldHN0cikgKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmlkLCBjaGFyICoqYXJlYSkKIHsKLSAgICB1bnNpZ25lZCBpOwogICAgIGNoYXIgKnJlc3VsdCA9IE5VTEw7CisgICAgaW50IGogPSAtMTsKIAotICAgIFQoKFRfQ0FMTEVEKCJ0Z2V0c3RyKCVzLCVwKSIpLCBpZCwgYXJlYSkpOwotICAgIGlmIChjdXJfdGVybSAhPSAwKSB7Ci0JVEVSTVRZUEUgKnRwID0gJihjdXJfdGVybS0+dHlwZSk7Ci0JZm9yX2VhY2hfc3RyaW5nKGksIHRwKSB7Ci0JICAgIGNvbnN0IGNoYXIgKmNhcG5hbWUgPSBFeHRTdHJuYW1lKHRwLCBpLCBzdHJjb2Rlcyk7Ci0JICAgIGlmICghc3RybmNtcChpZCwgY2FwbmFtZSwgMikpIHsKLQkJcmVzdWx0ID0gdHAtPlN0cmluZ3NbaV07Ci0JCVRSKFRSQUNFX0RBVEFCQVNFLCAoImZvdW5kIG1hdGNoIDogJXMiLCBfbmNfdmlzYnVmKHJlc3VsdCkpKTsKLQkJLyogc2V0dXB0ZXJtIGZvcmNlcyBjYW5jZWxlZCBzdHJpbmdzIHRvIG51bGwgKi8KLQkJaWYgKFZBTElEX1NUUklORyhyZXN1bHQpKSB7Ci0JCSAgICBpZiAocmVzdWx0ID09IGV4aXRfYXR0cmlidXRlX21vZGUKLQkJCSYmIEZJWF9TR1IwICE9IDApIHsKLQkJCXJlc3VsdCA9IEZJWF9TR1IwOwotCQkJVFIoVFJBQ0VfREFUQUJBU0UsICgiYWx0ZXJlZCB0byA6ICVzIiwgX25jX3Zpc2J1ZihyZXN1bHQpKSk7Ci0JCSAgICB9Ci0JCSAgICBpZiAoYXJlYSAhPSAwCi0JCQkmJiAqYXJlYSAhPSAwKSB7Ci0JCQkodm9pZCkgc3RyY3B5KCphcmVhLCByZXN1bHQpOwotCQkJcmVzdWx0ID0gKmFyZWE7Ci0JCQkqYXJlYSArPSBzdHJsZW4oKmFyZWEpICsgMTsKLQkJICAgIH0KKyAgICBUKChUX0NBTExFRCgidGdldHN0ciglcywlcCkiKSwgaWQsICh2b2lkICopIGFyZWEpKTsKKyAgICBpZiAoSGFzVEluZm9UZXJtaW5hbChTUF9QQVJNKSAmJiBWYWxpZENhcChpZCkpIHsKKwlURVJNVFlQRSAqdHAgPSAmKFRlcm1pbmFsT2YoU1BfUEFSTSktPnR5cGUpOworCXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICplbnRyeV9wdHI7CisKKwllbnRyeV9wdHIgPSBfbmNfZmluZF90eXBlX2VudHJ5KGlkLCBTVFJJTkcsIFRSVUUpOworCWlmIChlbnRyeV9wdHIgIT0gMCkgeworCSAgICBqID0gZW50cnlfcHRyLT5udGVfaW5kZXg7CisJfQorI2lmIE5DVVJTRVNfWE5BTUVTCisJZWxzZSB7CisJICAgIGludCBpOworCSAgICBmb3JfZWFjaF9leHRfc3RyaW5nKGksIHRwKSB7CisJCWNvbnN0IGNoYXIgKmNhcG5hbWUgPSBFeHRTdHJuYW1lKHRwLCBpLCBzdHJjb2Rlcyk7CisJCWlmIChzYW1lX3RjbmFtZShpZCwgY2FwbmFtZSkgJiYgVmFsaWRFeHQoY2FwbmFtZSkpIHsKKwkJICAgIGogPSBpOworCQkgICAgYnJlYWs7CiAJCX0KLQkJYnJlYWs7CisJICAgIH0KKwl9CisjZW5kaWYKKwlpZiAoaiA+PSAwKSB7CisJICAgIHJlc3VsdCA9IHRwLT5TdHJpbmdzW2pdOworCSAgICBUUihUUkFDRV9EQVRBQkFTRSwgKCJmb3VuZCBtYXRjaCAlZDogJXMiLCBqLCBfbmNfdmlzYnVmKHJlc3VsdCkpKTsKKwkgICAgLyogc2V0dXB0ZXJtIGZvcmNlcyBjYW5jZWxlZCBzdHJpbmdzIHRvIG51bGwgKi8KKwkgICAgaWYgKFZBTElEX1NUUklORyhyZXN1bHQpKSB7CisJCWlmIChyZXN1bHQgPT0gZXhpdF9hdHRyaWJ1dGVfbW9kZQorCQkgICAgJiYgRklYX1NHUjAgIT0gMCkgeworCQkgICAgcmVzdWx0ID0gRklYX1NHUjA7CisJCSAgICBUUihUUkFDRV9EQVRBQkFTRSwgKCJhbHRlcmVkIHRvIDogJXMiLCBfbmNfdmlzYnVmKHJlc3VsdCkpKTsKKwkJfQorCQlpZiAoYXJlYSAhPSAwCisJCSAgICAmJiAqYXJlYSAhPSAwKSB7CisJCSAgICBfbmNfU1RSQ1BZKCphcmVhLCByZXN1bHQsIDEwMjQpOworCQkgICAgcmVzdWx0ID0gKmFyZWE7CisJCSAgICAqYXJlYSArPSBzdHJsZW4oKmFyZWEpICsgMTsKKwkJfQogCSAgICB9CiAJfQogICAgIH0KICAgICByZXR1cm5QdHIocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGNoYXIgKikKK3RnZXRzdHIoTkNVUlNFU19DT05TVCBjaGFyICppZCwgY2hhciAqKmFyZWEpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh0Z2V0c3RyKSAoQ1VSUkVOVF9TQ1JFRU4sIGlkLCBhcmVhKTsKK30KKyNlbmRpZgorCiAjaWYgTk9fTEVBS1MKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfdGdldGVudF9sZWFrcyh2b2lkKQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9saWJfdGVybW5hbWUuYyBiL25jdXJzZXMvdGluZm8vbGliX3Rlcm1uYW1lLmMKaW5kZXggNzEzZDBiZS4uZTNmNjgyNyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9saWJfdGVybW5hbWUuYworKysgYi9uY3Vyc2VzL3RpbmZvL2xpYl90ZXJtbmFtZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjgsMTcgKzI4LDMxIEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Rlcm1uYW1lLmMsdiAxLjggMjAwMy8xMi8yNyAxODoyMzowMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl90ZXJtbmFtZS5jLHYgMS4xMiAyMDA5LzEwLzI0IDIxOjU2OjU4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKLXRlcm1uYW1lKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUodGVybW5hbWUpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgY2hhciAqbmFtZSA9IDA7CiAKLSAgICBUKChUX0NBTExFRCgidGVybW5hbWUoKSIpKSk7CisgICAgVCgoVF9DQUxMRUQoInRlcm1uYW1lKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgaWYgKFRlcm1pbmFsT2YoU1BfUEFSTSkgIT0gMCkgeworCW5hbWUgPSBUZXJtaW5hbE9mKFNQX1BBUk0pLT5fdGVybW5hbWU7CisgICAgfQorI2Vsc2UKICAgICBpZiAoY3VyX3Rlcm0gIT0gMCkKIAluYW1lID0gY3VyX3Rlcm0tPl90ZXJtbmFtZTsKKyNlbmRpZgogCiAgICAgcmV0dXJuUHRyKG5hbWUpOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoY2hhciAqKQordGVybW5hbWUodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHRlcm1uYW1lKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl90Z290by5jIGIvbmN1cnNlcy90aW5mby9saWJfdGdvdG8uYwppbmRleCBlMDdmNDY0Li4zMWRhZjQ0IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl90Z290by5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX3Rnb3RvLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA4LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDx0ZXJtY2FwLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdGdvdG8uYyx2IDEuMTMgMjAwOC8wOC8xNiAxOToyOTozMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl90Z290by5jLHYgMS4xNiAyMDEyLzAyLzI0IDAyOjA4OjA4IHRvbSBFeHAgJCIpCiAKICNpZiAhUFVSRV9URVJNSU5GTwogc3RhdGljIGJvb2wKQEAgLTE1OSw3ICsxNTksOCBAQAogCQlicmVhazsKIAkgICAgfQogCSAgICBpZiAoZm10ICE9IDApIHsKLQkJc3ByaW50ZihyZXN1bHQgKyB1c2VkLCBmbXQsICp2YWx1ZSsrKTsKKwkJX25jX1NQUklOVEYocmVzdWx0ICsgdXNlZCwgX25jX1NMSU1JVChsZW5ndGggLSB1c2VkKQorCQkJICAgIGZtdCwgKnZhbHVlKyspOwogCQl1c2VkICs9IHN0cmxlbihyZXN1bHQgKyB1c2VkKTsKIAkJZm10ID0gMDsKIAkgICAgfQpAQCAtMTc0LDcgKzE3NSw3IEBACiAgICAgfQogICAgIGlmIChyZXN1bHQgIT0gMCkgewogCWlmIChuZWVkX0JDKSB7Ci0JICAgIHN0cmNweShyZXN1bHQgKyB1c2VkLCBCQyk7CisJICAgIF9uY19TVFJDUFkocmVzdWx0ICsgdXNlZCwgQkMsIGxlbmd0aCAtIHVzZWQpOwogCSAgICB1c2VkICs9IHN0cmxlbihCQyk7CiAJfQogCXJlc3VsdFt1c2VkXSA9ICdcMCc7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl90aS5jIGIvbmN1cnNlcy90aW5mby9saWJfdGkuYwppbmRleCBkZjQ2MGY5Li5lOWFlNzQ2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl90aS5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX3RpLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw3NSArMjksMTU5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi0jaW5jbHVkZSA8dGVybV9lbnRyeS5oPgogI2luY2x1ZGUgPHRpYy5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3RpLmMsdiAxLjIzIDIwMDMvMDUvMjQgMjE6MTA6MjggdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfdGkuYyx2IDEuMzAgMjAxMy8wNi8wOCAxNjo1NTowNSB0b20gRXhwICQiKQogCisjaWYgMAorc3RhdGljIGJvb2wKK3NhbWVfbmFtZShjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiY29tcGFyZSglcywlcylcbiIsIGEsIGIpOworICAgIHJldHVybiAhc3RyY21wKGEsIGIpOworfQorI2Vsc2UKKyNkZWZpbmUgc2FtZV9uYW1lKGEsYikgIXN0cmNtcChhLGIpCisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHRpZ2V0ZmxhZykgKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NPTlNUIGNoYXIgKnN0cikKK3sKKyAgICBpbnQgcmVzdWx0ID0gQUJTRU5UX0JPT0xFQU47CisgICAgaW50IGogPSAtMTsKKworICAgIFQoKFRfQ0FMTEVEKCJ0aWdldGZsYWcoJXAsICVzKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBzdHIpKTsKKworICAgIGlmIChIYXNUSW5mb1Rlcm1pbmFsKFNQX1BBUk0pKSB7CisJVEVSTVRZUEUgKnRwID0gJihUZXJtaW5hbE9mKFNQX1BBUk0pLT50eXBlKTsKKwlzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCAqZW50cnlfcHRyOworCisJZW50cnlfcHRyID0gX25jX2ZpbmRfdHlwZV9lbnRyeShzdHIsIEJPT0xFQU4sIEZBTFNFKTsKKwlpZiAoZW50cnlfcHRyICE9IDApIHsKKwkgICAgaiA9IGVudHJ5X3B0ci0+bnRlX2luZGV4OworCX0KKyNpZiBOQ1VSU0VTX1hOQU1FUworCWVsc2UgeworCSAgICBpbnQgaTsKKwkgICAgZm9yX2VhY2hfZXh0X2Jvb2xlYW4oaSwgdHApIHsKKwkJY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dEJvb2xuYW1lKHRwLCBpLCBib29sbmFtZXMpOworCQlpZiAoc2FtZV9uYW1lKHN0ciwgY2FwbmFtZSkpIHsKKwkJICAgIGogPSBpOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCX0KKyNlbmRpZgorCWlmIChqID49IDApIHsKKwkgICAgLyogbm90ZTogc2V0dXB0ZXJtIGZvcmNlcyBpbnZhbGlkIGJvb2xlYW5zIHRvIGZhbHNlICovCisJICAgIHJlc3VsdCA9IHRwLT5Cb29sZWFuc1tqXTsKKwl9CisgICAgfQorCisgICAgcmV0dXJuQ29kZShyZXN1bHQpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogdGlnZXRmbGFnKE5DVVJTRVNfQ09OU1QgY2hhciAqc3RyKQogewotICAgIHVuc2lnbmVkIGk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh0aWdldGZsYWcpIChDVVJSRU5UX1NDUkVFTiwgc3RyKTsKK30KKyNlbmRpZgogCi0gICAgVCgoVF9DQUxMRUQoInRpZ2V0ZmxhZyglcykiKSwgc3RyKSk7CitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUodGlnZXRudW0pIChOQ1VSU0VTX1NQX0RDTHggTkNVUlNFU19DT05TVCBjaGFyICpzdHIpCit7CisgICAgaW50IGogPSAtMTsKKyAgICBpbnQgcmVzdWx0ID0gQ0FOQ0VMTEVEX05VTUVSSUM7CS8qIFNvbGFyaXMgcmV0dXJucyBhIC0xIG9uIGVycm9yICovCiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgewotCVRFUk1UWVBFICp0cCA9ICYoY3VyX3Rlcm0tPnR5cGUpOwotCWZvcl9lYWNoX2Jvb2xlYW4oaSwgdHApIHsKLQkgICAgY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dEJvb2xuYW1lKHRwLCBpLCBib29sbmFtZXMpOwotCSAgICBpZiAoIXN0cmNtcChzdHIsIGNhcG5hbWUpKSB7Ci0JCS8qIHNldHVwdGVybSBmb3JjZXMgaW52YWxpZCBib29sZWFucyB0byBmYWxzZSAqLwotCQlyZXR1cm5Db2RlKHRwLT5Cb29sZWFuc1tpXSk7CisgICAgVCgoVF9DQUxMRUQoInRpZ2V0bnVtKCVwLCAlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgc3RyKSk7CisKKyAgICBpZiAoSGFzVEluZm9UZXJtaW5hbChTUF9QQVJNKSkgeworCVRFUk1UWVBFICp0cCA9ICYoVGVybWluYWxPZihTUF9QQVJNKS0+dHlwZSk7CisJc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKmVudHJ5X3B0cjsKKworCWVudHJ5X3B0ciA9IF9uY19maW5kX3R5cGVfZW50cnkoc3RyLCBOVU1CRVIsIEZBTFNFKTsKKwlpZiAoZW50cnlfcHRyICE9IDApIHsKKwkgICAgaiA9IGVudHJ5X3B0ci0+bnRlX2luZGV4OworCX0KKyNpZiBOQ1VSU0VTX1hOQU1FUworCWVsc2UgeworCSAgICBpbnQgaTsKKwkgICAgZm9yX2VhY2hfZXh0X251bWJlcihpLCB0cCkgeworCQljb25zdCBjaGFyICpjYXBuYW1lID0gRXh0TnVtbmFtZSh0cCwgaSwgbnVtbmFtZXMpOworCQlpZiAoc2FtZV9uYW1lKHN0ciwgY2FwbmFtZSkpIHsKKwkJICAgIGogPSBpOworCQkgICAgYnJlYWs7CisJCX0KIAkgICAgfQogCX0KKyNlbmRpZgorCWlmIChqID49IDApIHsKKwkgICAgaWYgKFZBTElEX05VTUVSSUModHAtPk51bWJlcnNbal0pKQorCQlyZXN1bHQgPSB0cC0+TnVtYmVyc1tqXTsKKwkgICAgZWxzZQorCQlyZXN1bHQgPSBBQlNFTlRfTlVNRVJJQzsKKwl9CiAgICAgfQogCi0gICAgcmV0dXJuQ29kZShBQlNFTlRfQk9PTEVBTik7CisgICAgcmV0dXJuQ29kZShyZXN1bHQpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogdGlnZXRudW0oTkNVUlNFU19DT05TVCBjaGFyICpzdHIpCiB7Ci0gICAgdW5zaWduZWQgaTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHRpZ2V0bnVtKSAoQ1VSUkVOVF9TQ1JFRU4sIHN0cik7Cit9CisjZW5kaWYKIAotICAgIFQoKFRfQ0FMTEVEKCJ0aWdldG51bSglcykiKSwgc3RyKSk7CitOQ1VSU0VTX0VYUE9SVChjaGFyICopCitOQ1VSU0VTX1NQX05BTUUodGlnZXRzdHIpIChOQ1VSU0VTX1NQX0RDTHggTkNVUlNFU19DT05TVCBjaGFyICpzdHIpCit7CisgICAgY2hhciAqcmVzdWx0ID0gQ0FOQ0VMTEVEX1NUUklORzsKKyAgICBpbnQgaiA9IC0xOwogCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKLQlURVJNVFlQRSAqdHAgPSAmKGN1cl90ZXJtLT50eXBlKTsKLQlmb3JfZWFjaF9udW1iZXIoaSwgdHApIHsKLQkgICAgY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dE51bW5hbWUodHAsIGksIG51bW5hbWVzKTsKLQkgICAgaWYgKCFzdHJjbXAoc3RyLCBjYXBuYW1lKSkgewotCQlpZiAoIVZBTElEX05VTUVSSUModHAtPk51bWJlcnNbaV0pKQotCQkgICAgcmV0dXJuQ29kZShBQlNFTlRfTlVNRVJJQyk7Ci0JCXJldHVybkNvZGUodHAtPk51bWJlcnNbaV0pOworICAgIFQoKFRfQ0FMTEVEKCJ0aWdldHN0ciglcCwgJXMpIiksICh2b2lkICopIFNQX1BBUk0sIHN0cikpOworCisgICAgaWYgKEhhc1RJbmZvVGVybWluYWwoU1BfUEFSTSkpIHsKKwlURVJNVFlQRSAqdHAgPSAmKFRlcm1pbmFsT2YoU1BfUEFSTSktPnR5cGUpOworCXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICplbnRyeV9wdHI7CisKKwllbnRyeV9wdHIgPSBfbmNfZmluZF90eXBlX2VudHJ5KHN0ciwgU1RSSU5HLCBGQUxTRSk7CisJaWYgKGVudHJ5X3B0ciAhPSAwKSB7CisJICAgIGogPSBlbnRyeV9wdHItPm50ZV9pbmRleDsKKwl9CisjaWYgTkNVUlNFU19YTkFNRVMKKwllbHNlIHsKKwkgICAgaW50IGk7CisJICAgIGZvcl9lYWNoX2V4dF9zdHJpbmcoaSwgdHApIHsKKwkJY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dFN0cm5hbWUodHAsIGksIHN0cm5hbWVzKTsKKwkJaWYgKHNhbWVfbmFtZShzdHIsIGNhcG5hbWUpKSB7CisJCSAgICBqID0gaTsKKwkJICAgIGJyZWFrOworCQl9CiAJICAgIH0KIAl9CisjZW5kaWYKKwlpZiAoaiA+PSAwKSB7CisJICAgIC8qIG5vdGU6IHNldHVwdGVybSBmb3JjZXMgY2FuY2VsbGVkIHN0cmluZ3MgdG8gbnVsbCAqLworCSAgICByZXN1bHQgPSB0cC0+U3RyaW5nc1tqXTsKKwl9CiAgICAgfQogCi0gICAgcmV0dXJuQ29kZShDQU5DRUxMRURfTlVNRVJJQyk7CS8qIFNvbGFyaXMgcmV0dXJucyBhIC0xIGluc3RlYWQgKi8KKyAgICByZXR1cm5QdHIocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKIHRpZ2V0c3RyKE5DVVJTRVNfQ09OU1QgY2hhciAqc3RyKQogewotICAgIHVuc2lnbmVkIGk7Ci0KLSAgICBUKChUX0NBTExFRCgidGlnZXRzdHIoJXMpIiksIHN0cikpOwotCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKLQlURVJNVFlQRSAqdHAgPSAmKGN1cl90ZXJtLT50eXBlKTsKLQlmb3JfZWFjaF9zdHJpbmcoaSwgdHApIHsKLQkgICAgY29uc3QgY2hhciAqY2FwbmFtZSA9IEV4dFN0cm5hbWUodHAsIGksIHN0cm5hbWVzKTsKLQkgICAgaWYgKCFzdHJjbXAoc3RyLCBjYXBuYW1lKSkgewotCQkvKiBzZXR1cHRlcm0gZm9yY2VzIGNhbmNlbGxlZCBzdHJpbmdzIHRvIG51bGwgKi8KLQkJcmV0dXJuUHRyKHRwLT5TdHJpbmdzW2ldKTsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgICByZXR1cm5QdHIoQ0FOQ0VMTEVEX1NUUklORyk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh0aWdldHN0cikgKENVUlJFTlRfU0NSRUVOLCBzdHIpOwogfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2xpYl90cGFybS5jIGIvbmN1cnNlcy90aW5mby9saWJfdHBhcm0uYwppbmRleCBiYTJhODQwLi40ZjE4ODU5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL2xpYl90cGFybS5jCisrKyBiL25jdXJzZXMvdGluZm8vbGliX3RwYXJtLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxMCArNDAsOSBAQAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHRlcm0uaD4KICNpbmNsdWRlIDx0aWMuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl90cGFybS5jLHYgMS43NiAyMDA4LzA4LzE2IDE5OjIyOjU1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3RwYXJtLmMsdiAxLjk0IDIwMTUvMDcvMTcgMDE6MDM6MzUgdG9tIEV4cCAkIikKIAogLyoKICAqCWNoYXIgKgpAQCAtNTQsNyArNTMsNyBAQAogICoKICAqCSAgICAgQ3Vyc29yIGFkZHJlc3NpbmcgYW5kIG90aGVyIHN0cmluZ3MgIHJlcXVpcmluZyAgcGFyYW1lLQogICoJdGVycyBpbiB0aGUgdGVybWluYWwgYXJlIGRlc2NyaWJlZCBieSBhIHBhcmFtZXRlcml6ZWQgc3RyaW5nCi0gKgljYXBhYmlsaXR5LCB3aXRoIGxpa2UgZXNjYXBlcyAleCBpbiAgaXQuICAgRm9yICBleGFtcGxlLCAgdG8KKyAqCWNhcGFiaWxpdHksIHdpdGggZXNjYXBlcyBsaWtlICV4IGluICBpdC4gICBGb3IgIGV4YW1wbGUsICB0bwogICoJYWRkcmVzcyAgdGhlICBjdXJzb3IsIHRoZSBjdXAgY2FwYWJpbGl0eSBpcyBnaXZlbiwgdXNpbmcgdHdvCiAgKglwYXJhbWV0ZXJzOiB0aGUgcm93IGFuZCBjb2x1bW4gdG8gIGFkZHJlc3MgIHRvLiAgIChSb3dzICBhbmQKICAqCWNvbHVtbnMgIGFyZSAgbnVtYmVyZWQgIGZyb20gIHplcm8gYW5kIHJlZmVyIHRvIHRoZSBwaHlzaWNhbApAQCAtMTA4LDYgKzEwNyw3IEBACiBOQ1VSU0VTX0VYUE9SVF9WQVIoaW50KSBfbmNfdHBhcm1fZXJyID0gMDsKIAogI2RlZmluZSBUUFModmFyKSBfbmNfcHJlc2NyZWVuLnRwYXJtX3N0YXRlLnZhcgorI2RlZmluZSBwb3Bjb3VudCBfbmNfcG9wY291bnQJLyogd29ya2Fyb3VuZCBmb3IgTmV0QlNEIDYuMCBkZWZlY3QgKi8KIAogI2lmIE5PX0xFQUtTCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQpAQCAtMTI5LDkgKzEyOSw3IEBACiAgICAgbmVlZCArPSBUUFMob3V0X3VzZWQpOwogICAgIGlmIChuZWVkID4gVFBTKG91dF9zaXplKSkgewogCVRQUyhvdXRfc2l6ZSkgPSBuZWVkICogMjsKLQlUUFMob3V0X2J1ZmYpID0gdHlwZVJlYWxsb2MoY2hhciwgVFBTKG91dF9zaXplKSwgVFBTKG91dF9idWZmKSk7Ci0JaWYgKFRQUyhvdXRfYnVmZikgPT0gMCkKLQkgICAgX25jX2Vycl9hYm9ydChNU0dfTk9fTUVNT1JZKTsKKwlUWVBFX1JFQUxMT0MoY2hhciwgVFBTKG91dF9zaXplKSwgVFBTKG91dF9idWZmKSk7CiAgICAgfQogfQogCkBAIC0xNDAsMTEgKzEzOCwxMyBAQAogewogICAgIHNpemVfdCBzX2xlbiA9IHN0cmxlbihzKTsKICAgICBpZiAobGVuID4gKGludCkgc19sZW4pCi0Jc19sZW4gPSBsZW47CisJc19sZW4gPSAoc2l6ZV90KSBsZW47CiAKICAgICBnZXRfc3BhY2Uoc19sZW4gKyAxKTsKIAotICAgICh2b2lkKSBzcHJpbnRmKFRQUyhvdXRfYnVmZikgKyBUUFMob3V0X3VzZWQpLCBmbXQsIHMpOworICAgIF9uY19TUFJJTlRGKFRQUyhvdXRfYnVmZikgKyBUUFMob3V0X3VzZWQpLAorCQlfbmNfU0xJTUlUKFRQUyhvdXRfc2l6ZSkgLSBUUFMob3V0X3VzZWQpKQorCQlmbXQsIHMpOwogICAgIFRQUyhvdXRfdXNlZCkgKz0gc3RybGVuKFRQUyhvdXRfYnVmZikgKyBUUFMob3V0X3VzZWQpKTsKIH0KIApAQCAtMTU0LDkgKzE1NCwxMSBAQAogICAgIGlmIChsZW4gPCAzMCkKIAlsZW4gPSAzMDsJCS8qIGFjdHVhbGx5IGxvZzEwKE1BWF9JTlQpKzEgKi8KIAotICAgIGdldF9zcGFjZSgodW5zaWduZWQpIGxlbiArIDEpOworICAgIGdldF9zcGFjZSgoc2l6ZV90KSBsZW4gKyAxKTsKIAotICAgICh2b2lkKSBzcHJpbnRmKFRQUyhvdXRfYnVmZikgKyBUUFMob3V0X3VzZWQpLCBmbXQsIG51bWJlcik7CisgICAgX25jX1NQUklOVEYoVFBTKG91dF9idWZmKSArIFRQUyhvdXRfdXNlZCksCisJCV9uY19TTElNSVQoVFBTKG91dF9zaXplKSAtIFRQUyhvdXRfdXNlZCkpCisJCWZtdCwgbnVtYmVyKTsKICAgICBUUFMob3V0X3VzZWQpICs9IHN0cmxlbihUUFMob3V0X2J1ZmYpICsgVFBTKG91dF91c2VkKSk7CiB9CiAKQEAgLTE2NSw3ICsxNjcsNyBAQAogewogICAgIGlmIChjID09IDApCiAJYyA9IDAyMDA7Ci0gICAgZ2V0X3NwYWNlKDEpOworICAgIGdldF9zcGFjZSgoc2l6ZV90KSAxKTsKICAgICBUUFMob3V0X2J1ZmYpW1RQUyhvdXRfdXNlZCkrK10gPSAoY2hhcikgYzsKIH0KIApAQCAtMjUxLDYgKzI1Myw5IEBACiAJICAgIGNhc2UgJ3gnOgkJLyogRkFMTFRIUlUgKi8KIAkgICAgY2FzZSAnWCc6CQkvKiBGQUxMVEhSVSAqLwogCSAgICBjYXNlICdzJzoKKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorCSAgICBjYXNlICd1JzoKKyNlbmRpZgogCQkqZm9ybWF0KysgPSAqczsKIAkJZG9uZSA9IFRSVUU7CiAJCWJyZWFrOwpAQCAtMzcwLDYgKzM3NSw5IEBACiAJICAgIGNhc2UgJ3gnOgkJLyogRkFMTFRIUlUgKi8KIAkgICAgY2FzZSAnWCc6CQkvKiBGQUxMVEhSVSAqLwogCSAgICBjYXNlICdjJzoJCS8qIEZBTExUSFJVICovCisjaWZkZWYgRVhQX1hURVJNXzEwMDUKKwkgICAgY2FzZSAndSc6CisjZW5kaWYKIAkJaWYgKGxhc3Rwb3AgPD0gMCkKIAkJICAgIG51bWJlcisrOwogCQlsYXN0cG9wID0gLTE7CkBAIC00NTEsMTggKzQ1OSwyMSBAQAogfQogCiBzdGF0aWMgTkNVUlNFU19JTkxJTkUgY2hhciAqCi10cGFyYW1faW50ZXJuYWwoY29uc3QgY2hhciAqc3RyaW5nLCB2YV9saXN0IGFwKQordHBhcmFtX2ludGVybmFsKGludCB1c2VfVFBBUk1fQVJHLCBjb25zdCBjaGFyICpzdHJpbmcsIHZhX2xpc3QgYXApCiB7CiAgICAgY2hhciAqcF9pc19zW05VTV9QQVJNXTsKICAgICBUUEFSTV9BUkcgcGFyYW1bTlVNX1BBUk1dOwotICAgIGludCBwb3Bjb3VudDsKKyAgICBpbnQgcG9wY291bnQgPSAwOwogICAgIGludCBudW1iZXI7CisgICAgaW50IG51bV9hcmdzOwogICAgIGludCBsZW47CiAgICAgaW50IGxldmVsOwogICAgIGludCB4LCB5OwogICAgIGludCBpOwogICAgIGNvbnN0IGNoYXIgKmNwID0gc3RyaW5nOwogICAgIHNpemVfdCBsZW4yOworICAgIGJvb2wgdGVybWNhcF9oYWNrOworICAgIGJvb2wgaW5jcmVtZW50ZWRfdHdvOwogCiAgICAgaWYgKGNwID09IE5VTEwpCiAJcmV0dXJuIE5VTEw7CkBAIC00NzksNyArNDkwLDE1IEBACiAgICAgaWYgKFRQUyhmbXRfYnVmZikgPT0gMCkKIAlyZXR1cm4gTlVMTDsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBtYXgocG9wY291bnQsIG51bWJlcik7IGkrKykgeworICAgIGluY3JlbWVudGVkX3R3byA9IEZBTFNFOworCisgICAgaWYgKG51bWJlciA+IE5VTV9QQVJNKQorCW51bWJlciA9IE5VTV9QQVJNOworICAgIGlmIChwb3Bjb3VudCA+IE5VTV9QQVJNKQorCXBvcGNvdW50ID0gTlVNX1BBUk07CisgICAgbnVtX2FyZ3MgPSBtYXgocG9wY291bnQsIG51bWJlcik7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2FyZ3M7IGkrKykgewogCS8qCiAJICogQSBmZXcgY2FwcyAoc3VjaCBhcyBwbGFiX25vcm0pIGhhdmUgc3RyaW5nLXZhbHVlZCBwYXJtcy4KIAkgKiBXZSdsbCBoYXZlIHRvIGFzc3VtZSB0aGF0IHRoZSBjYWxsZXIga25vd3MgdGhlIGRpZmZlcmVuY2UsIHNpbmNlCkBAIC00ODksOCArNTA4LDExIEBACiAJICovCiAJaWYgKHBfaXNfc1tpXSAhPSAwKSB7CiAJICAgIHBfaXNfc1tpXSA9IHZhX2FyZyhhcCwgY2hhciAqKTsKLQl9IGVsc2UgeworCSAgICBwYXJhbVtpXSA9IDA7CisJfSBlbHNlIGlmICh1c2VfVFBBUk1fQVJHKSB7CiAJICAgIHBhcmFtW2ldID0gdmFfYXJnKGFwLCBUUEFSTV9BUkcpOworCX0gZWxzZSB7CisJICAgIHBhcmFtW2ldID0gKFRQQVJNX0FSRykgdmFfYXJnKGFwLCBpbnQpOwogCX0KICAgICB9CiAKQEAgLTUwMiwyMiArNTI0LDI0IEBACiAgICAgICogc3R5bGUsIHdoaWNoIG1lYW5zIHRwYXJhbSgpIHdpbGwgZXhwYW5kIHRlcm1jYXAgc3RyaW5ncyBPSy4KICAgICAgKi8KICAgICBUUFMoc3RhY2tfcHRyKSA9IDA7CisgICAgdGVybWNhcF9oYWNrID0gRkFMU0U7CiAgICAgaWYgKHBvcGNvdW50ID09IDApIHsKKwl0ZXJtY2FwX2hhY2sgPSBUUlVFOwogCXBvcGNvdW50ID0gbnVtYmVyOwogCWZvciAoaSA9IG51bWJlciAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJICAgIGlmIChwX2lzX3NbaV0pCiAJCXNwdXNoKHBfaXNfc1tpXSk7CiAJICAgIGVsc2UKLQkJbnB1c2gocGFyYW1baV0pOworCQlucHVzaCgoaW50KSBwYXJhbVtpXSk7CiAJfQogICAgIH0KICNpZmRlZiBUUkFDRQogICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX0NBTExTKSkgewotCWZvciAoaSA9IDA7IGkgPCBwb3Bjb3VudDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IG51bV9hcmdzOyBpKyspIHsKIAkgICAgaWYgKHBfaXNfc1tpXSAhPSAwKQogCQlzYXZlX3RleHQoIiwgJXMiLCBfbmNfdmlzYnVmKHBfaXNfc1tpXSksIDApOwogCSAgICBlbHNlCi0JCXNhdmVfbnVtYmVyKCIsICVkIiwgcGFyYW1baV0sIDApOworCQlzYXZlX251bWJlcigiLCAlZCIsIChpbnQpIHBhcmFtW2ldLCAwKTsKIAl9CiAJX3RyYWNlZihUX0NBTExFRCgiJXMoJXMlcykiKSwgVFBTKHRuYW1lKSwgX25jX3Zpc2J1ZihjcCksIFRQUyhvdXRfYnVmZikpOwogCVRQUyhvdXRfdXNlZCkgPSAwOwpAQCAtNTQ5LDggKzU3MywyMiBAQAogCQlzYXZlX2NoYXIobnBvcCgpKTsKIAkJYnJlYWs7CiAKKyNpZmRlZiBFWFBfWFRFUk1fMTAwNQorCSAgICBjYXNlICd1JzoKKwkJeworCQkgICAgdW5zaWduZWQgY2hhciB0YXJnZXRbMTBdOworCQkgICAgdW5zaWduZWQgc291cmNlID0gKHVuc2lnbmVkKSBucG9wKCk7CisJCSAgICBpbnQgcmMgPSBfbmNfY29udl90b191dGY4KHRhcmdldCwgc291cmNlLCAodW5zaWduZWQpCisJCQkJCSAgICAgIHNpemVvZih0YXJnZXQpKTsKKwkJICAgIGludCBuOworCQkgICAgZm9yIChuID0gMDsgbiA8IHJjOyArK24pIHsKKwkJCXNhdmVfY2hhcih0YXJnZXRbbl0pOworCQkgICAgfQorCQl9CisJCWJyZWFrOworI2VuZGlmCiAJICAgIGNhc2UgJ2wnOgotCQlzYXZlX251bWJlcigiJWQiLCAoaW50KSBzdHJsZW4oc3BvcCgpKSwgMCk7CisJCW5wdXNoKChpbnQpIHN0cmxlbihzcG9wKCkpKTsKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSAncyc6CkBAIC01NjEsMTAgKzU5OSwxMSBAQAogCQljcCsrOwogCQlpID0gKFVDaGFyKCpjcCkgLSAnMScpOwogCQlpZiAoaSA+PSAwICYmIGkgPCBOVU1fUEFSTSkgewotCQkgICAgaWYgKHBfaXNfc1tpXSkKKwkJICAgIGlmIChwX2lzX3NbaV0pIHsKIAkJCXNwdXNoKHBfaXNfc1tpXSk7Ci0JCSAgICBlbHNlCi0JCQlucHVzaChwYXJhbVtpXSk7CisJCSAgICB9IGVsc2UgeworCQkJbnB1c2goKGludCkgcGFyYW1baV0pOworCQkgICAgfQogCQl9CiAJCWJyZWFrOwogCkBAIC02MzMsMTEgKzY3MiwxNSBAQAogCQlicmVhazsKIAogCSAgICBjYXNlICdBJzoKLQkJbnB1c2gobnBvcCgpICYmIG5wb3AoKSk7CisJCXkgPSBucG9wKCk7CisJCXggPSBucG9wKCk7CisJCW5wdXNoKHkgJiYgeCk7CiAJCWJyZWFrOwogCiAJICAgIGNhc2UgJ08nOgotCQlucHVzaChucG9wKCkgfHwgbnBvcCgpKTsKKwkJeSA9IG5wb3AoKTsKKwkJeCA9IG5wb3AoKTsKKwkJbnB1c2goeSB8fCB4KTsKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSAnJic6CkBAIC02NzksMTAgKzcyMiwyNiBAQAogCQlicmVhazsKIAogCSAgICBjYXNlICdpJzoKLQkJaWYgKHBfaXNfc1swXSA9PSAwKQotCQkgICAgcGFyYW1bMF0rKzsKLQkJaWYgKHBfaXNfc1sxXSA9PSAwKQotCQkgICAgcGFyYW1bMV0rKzsKKwkJLyoKKwkJICogSW5jcmVtZW50IHRoZSBmaXJzdCB0d28gcGFyYW1ldGVycyAtLSBpZiB0aGV5IGFyZSBudW1iZXJzCisJCSAqIHJhdGhlciB0aGFuIHN0cmluZ3MuICBBcyBhIHNpZGUgZWZmZWN0LCBhc3NpZ24gaW50byB0aGUKKwkJICogc3RhY2s7IGlmIHRoaXMgaXMgdGVybWNhcCwgdGhlbiB0aGUgc3RhY2sgd2FzIHBvcHVsYXRlZAorCQkgKiB1c2luZyB0aGUgdGVybWNhcCBoYWNrIGFib3ZlIHJhdGhlciB0aGFuIHZpYSB0aGUgdGVybWluZm8KKwkJICogJ3AnIGNhc2UuCisJCSAqLworCQlpZiAoIWluY3JlbWVudGVkX3R3bykgeworCQkgICAgaW5jcmVtZW50ZWRfdHdvID0gVFJVRTsKKwkJICAgIGlmIChwX2lzX3NbMF0gPT0gMCkgeworCQkJcGFyYW1bMF0rKzsKKwkJCWlmICh0ZXJtY2FwX2hhY2spCisJCQkgICAgVFBTKHN0YWNrKVswXS5kYXRhLm51bSA9IChpbnQpIHBhcmFtWzBdOworCQkgICAgfQorCQkgICAgaWYgKHBfaXNfc1sxXSA9PSAwKSB7CisJCQlwYXJhbVsxXSsrOworCQkJaWYgKHRlcm1jYXBfaGFjaykKKwkJCSAgICBUUFMoc3RhY2spWzFdLmRhdGEubnVtID0gKGludCkgcGFyYW1bMV07CisJCSAgICB9CisJCX0KIAkJYnJlYWs7CiAKIAkgICAgY2FzZSAnPyc6CkBAIC03NDgsNyArODA3LDcgQEAKIAljcCsrOwogICAgIH0JCQkJLyogZW5kd2hpbGUgKCpjcCkgKi8KIAotICAgIGdldF9zcGFjZSgxKTsKKyAgICBnZXRfc3BhY2UoKHNpemVfdCkgMSk7CiAgICAgVFBTKG91dF9idWZmKVtUUFMob3V0X3VzZWQpXSA9ICdcMCc7CiAKICAgICBUKChUX1JFVFVSTigiJXMiKSwgX25jX3Zpc2J1ZihUUFMob3V0X2J1ZmYpKSkpOwpAQCAtNzcyLDcgKzgzMSw3IEBACiAjaWZkZWYgVFJBQ0UKICAgICBUUFModG5hbWUpID0gInRwYXJtIjsKICNlbmRpZiAvKiBUUkFDRSAqLwotICAgIHJlc3VsdCA9IHRwYXJhbV9pbnRlcm5hbChzdHJpbmcsIGFwKTsKKyAgICByZXN1bHQgPSB0cGFyYW1faW50ZXJuYWwoVFJVRSwgc3RyaW5nLCBhcCk7CiAgICAgdmFfZW5kKGFwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzkzLDMgKzg1MiwxOSBAQAogICAgIHJldHVybiB0cGFybV92YXJhcmdzKHN0cmluZywgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7CiB9CiAjZW5kaWYgLyogTkNVUlNFU19UUEFSTV9WQVJBUkdTICovCisKK05DVVJTRVNfRVhQT1JUKGNoYXIgKikKK3RpcGFybShjb25zdCBjaGFyICpzdHJpbmcsLi4uKQoreworICAgIHZhX2xpc3QgYXA7CisgICAgY2hhciAqcmVzdWx0OworCisgICAgX25jX3RwYXJtX2VyciA9IDA7CisgICAgdmFfc3RhcnQoYXAsIHN0cmluZyk7CisjaWZkZWYgVFJBQ0UKKyAgICBUUFModG5hbWUpID0gInRpcGFybSI7CisjZW5kaWYgLyogVFJBQ0UgKi8KKyAgICByZXN1bHQgPSB0cGFyYW1faW50ZXJuYWwoRkFMU0UsIHN0cmluZywgYXApOworICAgIHZhX2VuZChhcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX3RwdXRzLmMgYi9uY3Vyc2VzL3RpbmZvL2xpYl90cHV0cy5jCmluZGV4IGE4YjcyNzYuLjA5Y2JiYzIgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX3RwdXRzLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfdHB1dHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMwLDYgKzMwLDcgQEAKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTQxLDEyICs0MiwxNiBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CQkvKiBwYWRkaW5nX2JhdWRfcmF0ZSwgeG9uX3hvZmYgKi8KICNpbmNsdWRlIDx0ZXJtY2FwLmg+CQkvKiBvc3BlZWQgKi8KICNpbmNsdWRlIDx0aWMuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl90cHV0cy5jLHYgMS42NiAyMDA4LzA2LzI4IDEzOjEyOjE1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3RwdXRzLmMsdiAxLjk2IDIwMTUvMDEvMDMgMjM6NTE6MjMgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlRfVkFSKGNoYXIpIFBDID0gMDsgICAgICAgICAgICAgIC8qIHVzZWQgYnkgdGVybWNhcCBsaWJyYXJ5ICovCiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19PU1BFRUQpIG9zcGVlZCA9IDA7ICAgICAgICAvKiB1c2VkIGJ5IHRlcm1jYXAgbGlicmFyeSAqLwpAQCAtNjksNjMgKzc0LDE5NSBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBpbnQgKCpteV9vdXRjaCkgKGludCBjKSA9IF9uY19vdXRjaDsKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIFNldE91dENoKGZ1bmMpIGlmIChTUF9QQVJNKSBTUF9QQVJNLT5fb3V0Y2ggPSBmdW5jOyBlbHNlIF9uY19wcmVzY3JlZW4uX291dGNoID0gZnVuYworI2RlZmluZSBHZXRPdXRDaCgpICAgICAoU1BfUEFSTSA/IFNQX1BBUk0tPl9vdXRjaCA6IF9uY19wcmVzY3JlZW4uX291dGNoKQorI2Vsc2UKKyNkZWZpbmUgU2V0T3V0Q2goZnVuYykgc3RhdGljX291dGNoID0gZnVuYworI2RlZmluZSBHZXRPdXRDaCgpICAgICBzdGF0aWNfb3V0Y2gKK3N0YXRpYyBOQ1VSU0VTX1NQX09VVEMgc3RhdGljX291dGNoID0gTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCk7CisjZW5kaWYKIAogTkNVUlNFU19FWFBPUlQoaW50KQotZGVsYXlfb3V0cHV0KGludCBtcykKK05DVVJTRVNfU1BfTkFNRShkZWxheV9vdXRwdXQpIChOQ1VSU0VTX1NQX0RDTHggaW50IG1zKQogewotICAgIFQoKFRfQ0FMTEVEKCJkZWxheV9vdXRwdXQoJWQpIiksIG1zKSk7CisgICAgVCgoVF9DQUxMRUQoImRlbGF5X291dHB1dCglcCwlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgbXMpKTsKKworICAgIGlmICghSGFzVEluZm9UZXJtaW5hbChTUF9QQVJNKSkKKwlyZXR1cm5Db2RlKEVSUik7CiAKICAgICBpZiAobm9fcGFkX2NoYXIpIHsKLQlfbmNfZmx1c2goKTsKKwlOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoTkNVUlNFU19TUF9BUkcpOwogCW5hcG1zKG1zKTsKICAgICB9IGVsc2UgeworCU5DVVJTRVNfU1BfT1VUQyBteV9vdXRjaCA9IEdldE91dENoKCk7CiAJcmVnaXN0ZXIgaW50IG51bGxjb3VudDsKIAogCW51bGxjb3VudCA9IChtcyAqIF9uY19iYXVkcmF0ZShvc3BlZWQpKSAvIChCQVVEQllURSAqIDEwMDApOwogCWZvciAoX25jX251bGxzX3NlbnQgKz0gbnVsbGNvdW50OyBudWxsY291bnQgPiAwOyBudWxsY291bnQtLSkKLQkgICAgbXlfb3V0Y2goUEMpOwotCWlmIChteV9vdXRjaCA9PSBfbmNfb3V0Y2gpCi0JICAgIF9uY19mbHVzaCgpOworCSAgICBteV9vdXRjaChOQ1VSU0VTX1NQX0FSR3ggUEMpOworCWlmIChteV9vdXRjaCA9PSBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSkKKwkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKE5DVVJTRVNfU1BfQVJHKTsKICAgICB9CiAKICAgICByZXR1cm5Db2RlKE9LKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK2RlbGF5X291dHB1dChpbnQgbXMpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShkZWxheV9vdXRwdXQpIChDVVJSRU5UX1NDUkVFTiwgbXMpOworfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoTkNVUlNFU19TUF9EQ0wwKQoreworICAgIGlmIChTUF9QQVJNICE9IDAgJiYgU1BfUEFSTS0+X29mZCA+PSAwKSB7CisJaWYgKFNQX1BBUk0tPm91dF9pbnVzZSkgeworCSAgICBjaGFyICpidWYgPSBTUF9QQVJNLT5vdXRfYnVmZmVyOworCSAgICBzaXplX3QgYW1vdW50ID0gU1AtPm91dF9pbnVzZTsKKwkgICAgc3NpemVfdCByZXM7CisKKwkgICAgU1AtPm91dF9pbnVzZSA9IDA7CisJICAgIHdoaWxlIChhbW91bnQpIHsKKwkJcmVzID0gd3JpdGUoU1BfUEFSTS0+X29mZCwgYnVmLCBhbW91bnQpOworCisJCWlmIChyZXMgPiAwKSB7CisJCSAgICAvKiBpZiB0aGUgd3JpdGUgd2FzIGluY29tcGxldGUsIHRyeSBhZ2FpbiAqLworCQkgICAgYW1vdW50IC09IChzaXplX3QpIHJlczsKKwkJICAgIGJ1ZiArPSByZXM7CisJCX0gZWxzZSBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisJCSAgICBjb250aW51ZTsKKwkJfSBlbHNlIGlmIChlcnJubyA9PSBFSU5UUikgeworCQkgICAgY29udGludWU7CisJCX0gZWxzZSB7CisJCSAgICBicmVhazsJLyogYW4gZXJyb3Igd2UgY2FuIG5vdCByZWNvdmVyIGZyb20gKi8KKwkJfQorCSAgICB9CisJfQorICAgIH0KK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCiBfbmNfZmx1c2godm9pZCkKIHsKLSAgICAodm9pZCkgZmZsdXNoKE5DX09VVFBVVCk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSAoTkNVUlNFU19TUF9EQ0x4IGludCBjaCkKK3sKKyAgICBpbnQgcmMgPSBPSzsKKworICAgIENPVU5UX09VVENIQVJTKDEpOworCisgICAgaWYgKEhhc1RJbmZvVGVybWluYWwoU1BfUEFSTSkKKwkmJiBTUF9QQVJNICE9IDApIHsKKwlpZiAoU1BfUEFSTS0+b3V0X2J1ZmZlciAhPSAwKSB7CisJICAgIGlmIChTUF9QQVJNLT5vdXRfaW51c2UgKyAxID49IFNQX1BBUk0tPm91dF9saW1pdCkKKwkJTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKE5DVVJTRVNfU1BfQVJHKTsKKwkgICAgU1BfUEFSTS0+b3V0X2J1ZmZlcltTUF9QQVJNLT5vdXRfaW51c2UrK10gPSAoY2hhcikgY2g7CisJfSBlbHNlIHsKKwkgICAgY2hhciB0bXAgPSAoY2hhcikgY2g7CisJICAgIC8qCisJICAgICAqIFBPU0lYIHNheXMgd3JpdGUoKSBpcyBzYWZlIGluIGEgc2lnbmFsIGhhbmRsZXIsIGJ1dCB0aGUKKwkgICAgICogYnVmZmVyZWQgSS9PIGlzIG5vdC4KKwkgICAgICovCisJICAgIGlmICh3cml0ZShmaWxlbm8oTkNfT1VUUFVUKFNQX1BBUk0pKSwgJnRtcCwgKHNpemVfdCkgMSkgPT0gLTEpCisJCXJjID0gRVJSOworCX0KKyAgICB9IGVsc2UgeworCWNoYXIgdG1wID0gKGNoYXIpIGNoOworCWlmICh3cml0ZShmaWxlbm8oc3Rkb3V0KSwgJnRtcCwgKHNpemVfdCkgMSkgPT0gLTEpCisJICAgIHJjID0gRVJSOworICAgIH0KKyAgICByZXR1cm4gcmM7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfb3V0Y2goaW50IGNoKQogewotICAgIENPVU5UX09VVENIQVJTKDEpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSAoQ1VSUkVOVF9TQ1JFRU4sIGNoKTsKK30KKyNlbmRpZgogCi0gICAgaWYgKFNQICE9IDAKLQkmJiBTUC0+X2NsZWFudXApIHsKLQljaGFyIHRtcCA9IGNoOwotCS8qCi0JICogUE9TSVggc2F5cyB3cml0ZSgpIGlzIHNhZmUgaW4gYSBzaWduYWwgaGFuZGxlciwgYnV0IHRoZQotCSAqIGJ1ZmZlcmVkIEkvTyBpcyBub3QuCi0JICovCi0Jd3JpdGUoZmlsZW5vKE5DX09VVFBVVCksICZ0bXAsIDEpOwotICAgIH0gZWxzZSB7Ci0JcHV0YyhjaCwgTkNfT1VUUFVUKTsKLSAgICB9Ci0gICAgcmV0dXJuIE9LOworLyoKKyAqIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHB1dHAgc3BlY2lhbCBjYXNlLgorICovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoX25jX3B1dGNoYXIpIChOQ1VSU0VTX1NQX0RDTHggaW50IGNoKQoreworICAgICh2b2lkKSBTUF9QQVJNOworICAgIHJldHVybiBwdXRjaGFyKGNoKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19wdXRjaGFyKGludCBjaCkKK3sKKyAgICByZXR1cm4gcHV0Y2hhcihjaCk7Cit9CisjZW5kaWYKKworLyoKKyAqIHB1dHAgaXMgc3BlY2lhbCAtIHBlciBkb2N1bWVudGF0aW9uIGl0IGNhbGxzIHRwdXRzIHdpdGggcHV0Y2hhciBhcyB0aGUKKyAqIHBhcmFtZXRlciBmb3Igb3V0cHV0dGluZyBjaGFyYWN0ZXJzLiAgVGhpcyBtZWFucyB0aGF0IGl0IHVzZXMgc3RkaW8sIHdoaWNoCisgKiBpcyBub3Qgc2lnbmFsLXNhZmUuICBBcHBsaWNhdGlvbnMgY2FsbCB0aGlzIGVudHJ5cG9pbnQ7IHdlIGRvIG5vdCBjYWxsIGl0CisgKiBmcm9tIHdpdGhpbiB0aGUgbGlicmFyeS4KKyAqLworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHB1dHApIChOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2hhciAqc3RyaW5nKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICBzdHJpbmcsIDEsIE5DVVJTRVNfU1BfTkFNRShfbmNfcHV0Y2hhcikpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogcHV0cChjb25zdCBjaGFyICpzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRwdXRzKHN0cmluZywgMSwgX25jX291dGNoKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHB1dHApIChDVVJSRU5UX1NDUkVFTiwgc3RyaW5nKTsKK30KKyNlbmRpZgorCisvKgorICogVXNlIHRoZXNlIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuICJwdXRwIiB3aXRoaW4gdGhlIGxpYnJhcnkuCisgKi8KK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShfbmNfcHV0cCkgKE5DVVJTRVNfU1BfRENMeAorCQkJICAgY29uc3QgY2hhciAqbmFtZSBHQ0NfVU5VU0VELAorCQkJICAgY29uc3QgY2hhciAqc3RyaW5nKQoreworICAgIGludCByYyA9IEVSUjsKKworICAgIGlmIChzdHJpbmcgIT0gMCkgeworCVRQVVRTX1RSQUNFKG5hbWUpOworCXJjID0gTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJICAgICBzdHJpbmcsIDEsIE5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpKTsKKyAgICB9CisgICAgcmV0dXJuIHJjOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQotdHB1dHMoY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgYWZmY250LCBpbnQgKCpvdXRjKSAoaW50KSkKK19uY19wdXRwKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN0cmluZykKIHsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19wdXRwKSAoQ1VSUkVOVF9TQ1JFRU4sIG5hbWUsIHN0cmluZyk7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9EQ0x4CisJCQljb25zdCBjaGFyICpzdHJpbmcsCisJCQlpbnQgYWZmY250LAorCQkJTkNVUlNFU19TUF9PVVRDIG91dGMpCit7CisgICAgTkNVUlNFU19TUF9PVVRDIG15X291dGNoID0gR2V0T3V0Q2goKTsKICAgICBib29sIGFsd2F5c19kZWxheTsKICAgICBib29sIG5vcm1hbF9kZWxheTsKICAgICBpbnQgbnVtYmVyOwpAQCAtMTM3LDEwICsyNzQsMTAgQEAKICAgICBjaGFyIGFkZHJidWZbMzJdOwogCiAgICAgaWYgKFVTRV9UUkFDRUYoVFJBQ0VfVFBVVFMpKSB7Ci0JaWYgKG91dGMgPT0gX25jX291dGNoKQotCSAgICAodm9pZCkgc3RyY3B5KGFkZHJidWYsICJfbmNfb3V0Y2giKTsKKwlpZiAob3V0YyA9PSBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSkKKwkgICAgX25jX1NUUkNQWShhZGRyYnVmLCAiX25jX291dGNoIiwgc2l6ZW9mKGFkZHJidWYpKTsKIAllbHNlCi0JICAgICh2b2lkKSBzcHJpbnRmKGFkZHJidWYsICIlcCIsIG91dGMpOworCSAgICBfbmNfU1BSSU5URihhZGRyYnVmLCBfbmNfU0xJTUlUKHNpemVvZihhZGRyYnVmKSkgIiVwIiwgb3V0Yyk7CiAJaWYgKF9uY190cHV0c190cmFjZSkgewogCSAgICBfdHJhY2VmKCJ0cHV0cyglcyA9ICVzLCAlZCwgJXMpIGNhbGxlZCIsIF9uY190cHV0c190cmFjZSwKIAkJICAgIF9uY192aXNidWYoc3RyaW5nKSwgYWZmY250LCBhZGRyYnVmKTsKQEAgLTE1MiwxMCArMjg5LDE5IEBACiAgICAgfQogI2VuZGlmIC8qIFRSQUNFICovCiAKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmICFIYXNUSW5mb1Rlcm1pbmFsKFNQX1BBUk0pKQorCXJldHVybiBFUlI7CisKICAgICBpZiAoIVZBTElEX1NUUklORyhzdHJpbmcpKQogCXJldHVybiBFUlI7CiAKLSAgICBpZiAoY3VyX3Rlcm0gPT0gMCkgeworICAgIGlmICgKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisJICAgKFNQX1BBUk0gIT0gMCAmJiBTUF9QQVJNLT5fdGVybSA9PSAwKQorI2Vsc2UKKwkgICBjdXJfdGVybSA9PSAwCisjZW5kaWYKKwkpIHsKIAlhbHdheXNfZGVsYXkgPSBGQUxTRTsKIAlub3JtYWxfZGVsYXkgPSBUUlVFOwogICAgIH0gZWxzZSB7CkBAIC0xNjQsNyArMzEwLDcgQEAKIAkgICAgIXhvbl94b2ZmCiAJICAgICYmIHBhZGRpbmdfYmF1ZF9yYXRlCiAjaWYgTkNVUlNFU19OT19QQURESU5HCi0JICAgICYmICFHZXROb1BhZGRpbmcoU1ApCisJICAgICYmICFHZXROb1BhZGRpbmcoU1BfUEFSTSkKICNlbmRpZgogCSAgICAmJiAoX25jX2JhdWRyYXRlKG9zcGVlZCkgPj0gcGFkZGluZ19iYXVkX3JhdGUpOwogICAgIH0KQEAgLTE5OCwyNCArMzQ0LDI0IEBACiAgICAgfQogI2VuZGlmIC8qIEJTRF9UUFVUUyAqLwogCi0gICAgbXlfb3V0Y2ggPSBvdXRjOwkJLyogcmVkaXJlY3QgZGVsYXlfb3V0cHV0KCkgKi8KKyAgICBTZXRPdXRDaChvdXRjKTsJCS8qIHJlZGlyZWN0IGRlbGF5X291dHB1dCgpICovCiAgICAgd2hpbGUgKCpzdHJpbmcpIHsKIAlpZiAoKnN0cmluZyAhPSAnJCcpCi0JICAgICgqb3V0YykgKCpzdHJpbmcpOworCSAgICAoKm91dGMpIChOQ1VSU0VTX1NQX0FSR3ggKnN0cmluZyk7CiAJZWxzZSB7CiAJICAgIHN0cmluZysrOwogCSAgICBpZiAoKnN0cmluZyAhPSAnPCcpIHsKLQkJKCpvdXRjKSAoJyQnKTsKKwkJKCpvdXRjKSAoTkNVUlNFU19TUF9BUkd4ICckJyk7CiAJCWlmICgqc3RyaW5nKQotCQkgICAgKCpvdXRjKSAoKnN0cmluZyk7CisJCSAgICAoKm91dGMpIChOQ1VSU0VTX1NQX0FSR3ggKnN0cmluZyk7CiAJICAgIH0gZWxzZSB7CiAJCWJvb2wgbWFuZGF0b3J5OwogCiAJCXN0cmluZysrOwogCQlpZiAoKCFpc2RpZ2l0KFVDaGFyKCpzdHJpbmcpKSAmJiAqc3RyaW5nICE9ICcuJykKIAkJICAgIHx8ICFzdHJjaHIoc3RyaW5nLCAnPicpKSB7Ci0JCSAgICAoKm91dGMpICgnJCcpOwotCQkgICAgKCpvdXRjKSAoJzwnKTsKKwkJICAgICgqb3V0YykgKE5DVVJTRVNfU1BfQVJHeCAnJCcpOworCQkgICAgKCpvdXRjKSAoTkNVUlNFU19TUF9BUkd4ICc8Jyk7CiAJCSAgICBjb250aW51ZTsKIAkJfQogCkBAIC0yNTAsNyArMzk2LDcgQEAKIAkJICAgICYmIChhbHdheXNfZGVsYXkKIAkJCXx8IG5vcm1hbF9kZWxheQogCQkJfHwgbWFuZGF0b3J5KSkKLQkJICAgIGRlbGF5X291dHB1dChudW1iZXIgLyAxMCk7CisJCSAgICBOQ1VSU0VTX1NQX05BTUUoZGVsYXlfb3V0cHV0KSAoTkNVUlNFU19TUF9BUkd4IG51bWJlciAvIDEwKTsKIAogCSAgICB9CQkJLyogZW5kZWxzZSAoKnN0cmluZyA9PSAnPCcpICovCiAJfQkJCS8qIGVuZGVsc2UgKCpzdHJpbmcgPT0gJyQnKSAqLwpAQCAtMjcwLDYgKzQxNiwyNSBAQAogCWRlbGF5X291dHB1dCh0cmFpbHBhZCAvIDEwKTsKICNlbmRpZiAvKiBCU0RfVFBVVFMgKi8KIAotICAgIG15X291dGNoID0gX25jX291dGNoOworICAgIFNldE91dENoKG15X291dGNoKTsKICAgICByZXR1cm4gT0s7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfb3V0Y193cmFwcGVyKFNDUkVFTiAqc3AsIGludCBjKQoreworICAgIGlmICgwID09IHNwKSB7CisJcmV0dXJuIChFUlIpOworICAgIH0gZWxzZSB7CisJcmV0dXJuIHNwLT5qdW1wKGMpOworICAgIH0KK30KKworTkNVUlNFU19FWFBPUlQoaW50KQordHB1dHMoY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgYWZmY250LCBpbnQgKCpvdXRjKSAoaW50KSkKK3sKKyAgICBTZXRTYWZlT3V0Y1dyYXBwZXIob3V0Yyk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeCBzdHJpbmcsIGFmZmNudCwgX25jX291dGNfd3JhcHBlcik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vbGliX3R0eWZsYWdzLmMgYi9uY3Vyc2VzL3RpbmZvL2xpYl90dHlmbGFncy5jCmluZGV4IGEyYjM4YTMuLjQzYmVkMzUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbGliX3R0eWZsYWdzLmMKKysrIGIvbmN1cnNlcy90aW5mby9saWJfdHR5ZmxhZ3MuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM2LDE1OSArMzYsMjQ4IEBACiAgKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgkJLyogY3VyX3Rlcm0gKi8KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl90dHlmbGFncy5jLHYgMS4xOCAyMDA4LzA4LzAzIDIyOjEwOjQ0IHRvbSBFeHAgJCIpCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogbGliX3R0eWZsYWdzLmMsdiAxLjMwIDIwMTQvMDQvMjYgMTg6NDc6MjAganVlcmdlbiBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLV9uY19nZXRfdHR5X21vZGUoVFRZICogYnVmKQorTkNVUlNFU19TUF9OQU1FKF9uY19nZXRfdHR5X21vZGUpIChOQ1VSU0VTX1NQX0RDTHggVFRZICogYnVmKQogewogICAgIGludCByZXN1bHQgPSBPSzsKIAotICAgIGlmIChidWYgPT0gMCkgeworICAgIGlmIChidWYgPT0gMCB8fCBTUF9QQVJNID09IDApIHsKIAlyZXN1bHQgPSBFUlI7CiAgICAgfSBlbHNlIHsKLQlpZiAoY3VyX3Rlcm0gPT0gMCkgeworCVRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CisKKwlpZiAoMCA9PSB0ZXJtcCkgewogCSAgICByZXN1bHQgPSBFUlI7CiAJfSBlbHNlIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwkgICAgcmVzdWx0ID0gQ2FsbERyaXZlcl8yKFNQX1BBUk0sIHRkX3NnbW9kZSwgRkFMU0UsIGJ1Zik7CisjZWxzZQogCSAgICBmb3IgKDs7KSB7Ci0JCWlmIChHRVRfVFRZKGN1cl90ZXJtLT5GaWxlZGVzLCBidWYpICE9IDApIHsKKwkJaWYgKEdFVF9UVFkodGVybXAtPkZpbGVkZXMsIGJ1ZikgIT0gMCkgewogCQkgICAgaWYgKGVycm5vID09IEVJTlRSKQogCQkJY29udGludWU7CiAJCSAgICByZXN1bHQgPSBFUlI7CiAJCX0KIAkJYnJlYWs7CiAJICAgIH0KKyNlbmRpZgogCX0KIAogCWlmIChyZXN1bHQgPT0gRVJSKQogCSAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwogCiAJVFIoVFJBQ0VfQklUUywgKCJfbmNfZ2V0X3R0eV9tb2RlKCVkKTogJXMiLAotCQkJY3VyX3Rlcm0gPyBjdXJfdGVybS0+RmlsZWRlcyA6IC0xLAorCQkJdGVybXAgPyB0ZXJtcC0+RmlsZWRlcyA6IC0xLAogCQkJX25jX3RyYWNlX3R0eW1vZGUoYnVmKSkpOwogICAgIH0KICAgICByZXR1cm4gKHJlc3VsdCk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1fbmNfc2V0X3R0eV9tb2RlKFRUWSAqIGJ1ZikKK19uY19nZXRfdHR5X21vZGUoVFRZICogYnVmKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUoX25jX2dldF90dHlfbW9kZSkgKENVUlJFTlRfU0NSRUVOLCBidWYpOworfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9EQ0x4IFRUWSAqIGJ1ZikKIHsKICAgICBpbnQgcmVzdWx0ID0gT0s7CiAKLSAgICBpZiAoYnVmID09IDApIHsKKyAgICBpZiAoYnVmID09IDAgfHwgU1BfUEFSTSA9PSAwKSB7CiAJcmVzdWx0ID0gRVJSOwogICAgIH0gZWxzZSB7Ci0JaWYgKGN1cl90ZXJtID09IDApIHsKKwlURVJNSU5BTCAqdGVybXAgPSBUZXJtaW5hbE9mKFNQX1BBUk0pOworCisJaWYgKDAgPT0gdGVybXApIHsKIAkgICAgcmVzdWx0ID0gRVJSOwogCX0gZWxzZSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJICAgIHJlc3VsdCA9IENhbGxEcml2ZXJfMihTUF9QQVJNLCB0ZF9zZ21vZGUsIFRSVUUsIGJ1Zik7CisjZWxzZQogCSAgICBmb3IgKDs7KSB7Ci0JCWlmIChTRVRfVFRZKGN1cl90ZXJtLT5GaWxlZGVzLCBidWYpICE9IDApIHsKKwkJaWYgKChTRVRfVFRZKHRlcm1wLT5GaWxlZGVzLCBidWYpICE9IDApCisjaWYgVVNFX0tMSUJDX0tCRAorCQkgICAgJiYgIU5DX0lTQVRUWSh0ZXJtcC0+RmlsZWRlcykKKyNlbmRpZgorCQkgICAgKSB7CiAJCSAgICBpZiAoZXJybm8gPT0gRUlOVFIpCiAJCQljb250aW51ZTsKLQkJICAgIGlmICgoZXJybm8gPT0gRU5PVFRZKSAmJiAoU1AgIT0gMCkpCi0JCQlTUC0+X25vdHR5ID0gVFJVRTsKKwkJICAgIGlmICgoZXJybm8gPT0gRU5PVFRZKSAmJiAoU1BfUEFSTSAhPSAwKSkKKwkJCVNQX1BBUk0tPl9ub3R0eSA9IFRSVUU7CiAJCSAgICByZXN1bHQgPSBFUlI7CiAJCX0KIAkJYnJlYWs7CiAJICAgIH0KKyNlbmRpZgogCX0KIAlUUihUUkFDRV9CSVRTLCAoIl9uY19zZXRfdHR5X21vZGUoJWQpOiAlcyIsCi0JCQljdXJfdGVybSA/IGN1cl90ZXJtLT5GaWxlZGVzIDogLTEsCisJCQl0ZXJtcCA/IHRlcm1wLT5GaWxlZGVzIDogLTEsCiAJCQlfbmNfdHJhY2VfdHR5bW9kZShidWYpKSk7CiAgICAgfQogICAgIHJldHVybiAocmVzdWx0KTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGludCkKLWRlZl9zaGVsbF9tb2RlKHZvaWQpCitfbmNfc2V0X3R0eV9tb2RlKFRUWSAqIGJ1ZikKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19zZXRfdHR5X21vZGUpIChDVVJSRU5UX1NDUkVFTiwgYnVmKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoZGVmX3NoZWxsX21vZGUpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgaW50IHJjID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CiAKLSAgICBUKChUX0NBTExFRCgiZGVmX3NoZWxsX21vZGUoKSIpKSk7CisgICAgVCgoVF9DQUxMRUQoImRlZl9zaGVsbF9tb2RlKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgeworICAgIGlmICh0ZXJtcCAhPSAwKSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJcmMgPSBDYWxsRHJpdmVyXzIoU1BfUEFSTSwgdGRfbW9kZSwgRkFMU0UsIFRSVUUpOworI2Vsc2UKIAkvKgogCSAqIElmIFhUQUJTIHdhcyBvbiwgcmVtb3ZlIHRoZSB0YWIgYW5kIGJhY2t0YWIgY2FwYWJpbGl0aWVzLgogCSAqLwotCWlmIChfbmNfZ2V0X3R0eV9tb2RlKCZjdXJfdGVybS0+T3R0eWIpID09IE9LKSB7CisJaWYgKF9uY19nZXRfdHR5X21vZGUoJnRlcm1wLT5PdHR5YikgPT0gT0spIHsKICNpZmRlZiBURVJNSU9TCi0JICAgIGlmIChjdXJfdGVybS0+T3R0eWIuY19vZmxhZyAmIE9GTEFHU19UQUJTKQorCSAgICBpZiAodGVybXAtPk90dHliLmNfb2ZsYWcgJiBPRkxBR1NfVEFCUykKIAkJdGFiID0gYmFja190YWIgPSBOVUxMOwogI2Vsc2UKLQkgICAgaWYgKGN1cl90ZXJtLT5PdHR5Yi5zZ19mbGFncyAmIFhUQUJTKQorCSAgICBpZiAodGVybXAtPk90dHliLnNnX2ZsYWdzICYgWFRBQlMpCiAJCXRhYiA9IGJhY2tfdGFiID0gTlVMTDsKICNlbmRpZgogCSAgICByYyA9IE9LOwogCX0KKyNlbmRpZgogICAgIH0KICAgICByZXR1cm5Db2RlKHJjKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGludCkKLWRlZl9wcm9nX21vZGUodm9pZCkKK2RlZl9zaGVsbF9tb2RlKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShkZWZfc2hlbGxfbW9kZSkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoZGVmX3Byb2dfbW9kZSkgKE5DVVJTRVNfU1BfRENMMCkKIHsKICAgICBpbnQgcmMgPSBFUlI7CisgICAgVEVSTUlOQUwgKnRlcm1wID0gVGVybWluYWxPZihTUF9QQVJNKTsKIAotICAgIFQoKFRfQ0FMTEVEKCJkZWZfcHJvZ19tb2RlKCkiKSkpOworICAgIFQoKFRfQ0FMTEVEKCJkZWZfcHJvZ19tb2RlKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgeworICAgIGlmICh0ZXJtcCAhPSAwKSB7CisjaWZkZWYgVVNFX1RFUk1fRFJJVkVSCisJcmMgPSBDYWxsRHJpdmVyXzIoU1BfUEFSTSwgdGRfbW9kZSwgVFJVRSwgVFJVRSk7CisjZWxzZQogCS8qCiAJICogVHVybiBvZmYgdGhlIFhUQUJTIGJpdCBpbiB0aGUgdHR5IHN0cnVjdHVyZSBpZiBpdCB3YXMgb24uCiAJICovCi0JaWYgKF9uY19nZXRfdHR5X21vZGUoJmN1cl90ZXJtLT5OdHR5YikgPT0gT0spIHsKKwlpZiAoX25jX2dldF90dHlfbW9kZSgmdGVybXAtPk50dHliKSA9PSBPSykgewogI2lmZGVmIFRFUk1JT1MKLQkgICAgY3VyX3Rlcm0tPk50dHliLmNfb2ZsYWcgJj0gfk9GTEFHU19UQUJTOworCSAgICB0ZXJtcC0+TnR0eWIuY19vZmxhZyAmPSAodW5zaWduZWQpICh+T0ZMQUdTX1RBQlMpOwogI2Vsc2UKLQkgICAgY3VyX3Rlcm0tPk50dHliLnNnX2ZsYWdzICY9IH5YVEFCUzsKKwkgICAgdGVybXAtPk50dHliLnNnX2ZsYWdzICY9ICh1bnNpZ25lZCkgKH5YVEFCUyk7CiAjZW5kaWYKIAkgICAgcmMgPSBPSzsKIAl9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuQ29kZShyYyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitkZWZfcHJvZ19tb2RlKHZvaWQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShkZWZfcHJvZ19tb2RlKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShyZXNldF9wcm9nX21vZGUpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgaW50IHJjID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CisKKyAgICBUKChUX0NBTExFRCgicmVzZXRfcHJvZ19tb2RlKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CisKKyAgICBpZiAodGVybXAgIT0gMCkgeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCXJjID0gQ2FsbERyaXZlcl8yKFNQX1BBUk0sIHRkX21vZGUsIFRSVUUsIEZBTFNFKTsKKyNlbHNlCisJaWYgKF9uY19zZXRfdHR5X21vZGUoJnRlcm1wLT5OdHR5YikgPT0gT0spIHsKKwkgICAgaWYgKFNQX1BBUk0pIHsKKwkJaWYgKFNQX1BBUk0tPl9rZXlwYWRfb24pCisJCSAgICBfbmNfa2V5cGFkKFNQX1BBUk0sIFRSVUUpOworCSAgICB9CisJICAgIHJjID0gT0s7CisJfQorI2VuZGlmCisgICAgfQorICAgIHJldHVybkNvZGUocmMpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogcmVzZXRfcHJvZ19tb2RlKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInJlc2V0X3Byb2dfbW9kZSgpIikpKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHJlc2V0X3Byb2dfbW9kZSkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgogCi0gICAgaWYgKGN1cl90ZXJtICE9IDApIHsKLQlpZiAoX25jX3NldF90dHlfbW9kZSgmY3VyX3Rlcm0tPk50dHliKSA9PSBPSykgewotCSAgICBpZiAoU1ApIHsKLQkJaWYgKFNQLT5fa2V5cGFkX29uKQotCQkgICAgX25jX2tleXBhZChTUCwgVFJVRSk7Ci0JCU5DX0JVRkZFUkVEKFRSVUUpOwotCSAgICB9Ci0JICAgIHJldHVybkNvZGUoT0spOworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHJlc2V0X3NoZWxsX21vZGUpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgaW50IHJjID0gRVJSOworICAgIFRFUk1JTkFMICp0ZXJtcCA9IFRlcm1pbmFsT2YoU1BfUEFSTSk7CisKKyAgICBUKChUX0NBTExFRCgicmVzZXRfc2hlbGxfbW9kZSglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOworCisgICAgaWYgKHRlcm1wICE9IDApIHsKKyNpZmRlZiBVU0VfVEVSTV9EUklWRVIKKwlyYyA9IENhbGxEcml2ZXJfMihTUF9QQVJNLCB0ZF9tb2RlLCBGQUxTRSwgRkFMU0UpOworI2Vsc2UKKwlpZiAoU1BfUEFSTSkgeworCSAgICBfbmNfa2V5cGFkKFNQX1BBUk0sIEZBTFNFKTsKKwkgICAgX25jX2ZsdXNoKCk7CiAJfQorCXJjID0gX25jX3NldF90dHlfbW9kZSgmdGVybXAtPk90dHliKTsKKyNlbmRpZgogICAgIH0KLSAgICByZXR1cm5Db2RlKEVSUik7CisgICAgcmV0dXJuQ29kZShyYyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiByZXNldF9zaGVsbF9tb2RlKHZvaWQpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInJlc2V0X3NoZWxsX21vZGUoKSIpKSk7Ci0KLSAgICBpZiAoY3VyX3Rlcm0gIT0gMCkgewotCWlmIChTUCkgewotCSAgICBfbmNfa2V5cGFkKFNQLCBGQUxTRSk7Ci0JICAgIF9uY19mbHVzaCgpOwotCSAgICBOQ19CVUZGRVJFRChGQUxTRSk7Ci0JfQotCXJldHVybkNvZGUoX25jX3NldF90dHlfbW9kZSgmY3VyX3Rlcm0tPk90dHliKSk7Ci0gICAgfQotICAgIHJldHVybkNvZGUoRVJSKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHJlc2V0X3NoZWxsX21vZGUpIChDVVJSRU5UX1NDUkVFTik7CiB9CisjZW5kaWYKIAogc3RhdGljIFRUWSAqCi1zYXZlZF90dHkodm9pZCkKK3NhdmVkX3R0eShOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgVFRZICpyZXN1bHQgPSAwOwogCi0gICAgaWYgKFNQICE9IDApIHsKLQlyZXN1bHQgPSAmKFNQLT5fc2F2ZWRfdHR5KTsKKyAgICBpZiAoU1BfUEFSTSAhPSAwKSB7CisJcmVzdWx0ID0gKFRUWSAqKSAmIChTUF9QQVJNLT5fc2F2ZWRfdHR5KTsKICAgICB9IGVsc2UgewogCWlmIChfbmNfcHJlc2NyZWVuLnNhdmVkX3R0eSA9PSAwKSB7CiAJICAgIF9uY19wcmVzY3JlZW4uc2F2ZWRfdHR5ID0gdHlwZUNhbGxvYyhUVFksIDEpOwpAQCAtMjA0LDE3ICsyOTMsMzEgQEAKICovCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXNhdmV0dHkodm9pZCkKK05DVVJTRVNfU1BfTkFNRShzYXZldHR5KSAoTkNVUlNFU19TUF9EQ0wwKQogewotICAgIFQoKFRfQ0FMTEVEKCJzYXZldHR5KCkiKSkpOwotCi0gICAgcmV0dXJuQ29kZShfbmNfZ2V0X3R0eV9tb2RlKHNhdmVkX3R0eSgpKSk7CisgICAgVCgoVF9DQUxMRUQoInNhdmV0dHkoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICByZXR1cm5Db2RlKE5DVVJTRVNfU1BfTkFNRShfbmNfZ2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4IHNhdmVkX3R0eShOQ1VSU0VTX1NQX0FSRykpKTsKIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK3NhdmV0dHkodm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHNhdmV0dHkpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHJlc2V0dHkpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgVCgoVF9DQUxMRUQoInJlc2V0dHkoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKKyAgICByZXR1cm5Db2RlKE5DVVJTRVNfU1BfTkFNRShfbmNfc2V0X3R0eV9tb2RlKSAoTkNVUlNFU19TUF9BUkd4IHNhdmVkX3R0eShOQ1VSU0VTX1NQX0FSRykpKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKIE5DVVJTRVNfRVhQT1JUKGludCkKIHJlc2V0dHkodm9pZCkKIHsKLSAgICBUKChUX0NBTExFRCgicmVzZXR0eSgpIikpKTsKLQotICAgIHJldHVybkNvZGUoX25jX3NldF90dHlfbW9kZShzYXZlZF90dHkoKSkpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUocmVzZXR0eSkgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9tYWtlX2hhc2guYyBiL25jdXJzZXMvdGluZm8vbWFrZV9oYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhYzc2NQotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvdGluZm8vbWFrZV9oYXNoLmMKQEAgLTAsMCArMSwzMzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqCW1ha2VfaGFzaC5jIC0tLSBidWlsZC10aW1lIHByb2dyYW0gZm9yIGNvbnN0cnVjdGluZyBjb21wX2NhcHRhYi5jCisgKgorICovCisKKyNpbmNsdWRlIDxidWlsZC5wcml2Lmg+CisKKyNpbmNsdWRlIDx0aWMuaD4KKyNpbmNsdWRlIDxoYXNoc2l6ZS5oPgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworTU9EVUxFX0lEKCIkSWQ6IG1ha2VfaGFzaC5jLHYgMS4xMyAyMDEzLzA5LzI4IDIwOjU1OjQ3IHRvbSBFeHAgJCIpCisKKy8qCisgKglfbmNfbWFrZV9oYXNoX3RhYmxlKCkKKyAqCisgKglUYWtlcyB0aGUgZW50cmllcyBpbiB0YWJsZVtdIGFuZCBoYXNoZXMgdGhlbSBpbnRvIGhhc2hfdGFibGVbXQorICoJYnkgbmFtZS4gIFRoZXJlIGFyZSBDQVBUQUJTSVpFIGVudHJpZXMgaW4gdGFibGVbXSBhbmQgSEFTSFRBQlNJWkUKKyAqCXNsb3RzIGluIGhhc2hfdGFibGVbXS4KKyAqCisgKi8KKworI3VuZGVmIE1PRFVMRV9JRAorI2RlZmluZSBNT0RVTEVfSUQoaWQpCQkvKm5vdGhpbmcgKi8KKyNpbmNsdWRlIDx0aW5mby9kb2FsbG9jLmM+CisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqcykKK3sKKyAgICBwZXJyb3Iocyk7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgY2hhciAqCitzdHJtYWxsb2MoY2hhciAqcykKK3sKKyAgICBzaXplX3QgbmVlZCA9IHN0cmxlbihzKSArIDE7CisgICAgY2hhciAqcmVzdWx0ID0gbWFsbG9jKG5lZWQpOworICAgIGlmIChyZXN1bHQgPT0gMCkKKwlmYWlsZWQoInN0cm1hbGxvYyIpOworICAgIF9uY19TVFJDUFkocmVzdWx0LCBzLCBuZWVkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICoJaW50IGhhc2hfZnVuY3Rpb24oc3RyaW5nKQorICoKKyAqCUNvbXB1dGVzIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIG9uIHRoZSBnaXZlbiBzdHJpbmcuCisgKgorICoJVGhlIGN1cnJlbnQgaGFzaCBmdW5jdGlvbiBpcyB0aGUgc3VtIG9mIGVhY2ggY29uc2VjdHV0aXZlIHBhaXIKKyAqCW9mIGNoYXJhY3RlcnMsIHRha2VuIGFzIHR3by1ieXRlIGludGVnZXJzLCBtb2QgSEFTSFRBQlNJWkUuCisgKgorICovCisKK3N0YXRpYyBpbnQKK2hhc2hfZnVuY3Rpb24oY29uc3QgY2hhciAqc3RyaW5nKQoreworICAgIGxvbmcgc3VtID0gMDsKKworICAgIHdoaWxlICgqc3RyaW5nKSB7CisJc3VtICs9IChsb25nKSAoKnN0cmluZyArICgqKHN0cmluZyArIDEpIDw8IDgpKTsKKwlzdHJpbmcrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKGludCkgKHN1bSAlIEhBU0hUQUJTSVpFKTsKK30KKworc3RhdGljIHZvaWQKK19uY19tYWtlX2hhc2hfdGFibGUoc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKnRhYmxlLAorCQkgICAgSGFzaFZhbHVlICogaGFzaF90YWJsZSkKK3sKKyAgICBzaG9ydCBpOworICAgIGludCBoYXNodmFsdWU7CisgICAgaW50IGNvbGxpc2lvbnMgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IEhBU0hUQUJTSVpFOyBpKyspIHsKKwloYXNoX3RhYmxlW2ldID0gLTE7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBDQVBUQUJTSVpFOyBpKyspIHsKKwloYXNodmFsdWUgPSBoYXNoX2Z1bmN0aW9uKHRhYmxlW2ldLm50ZV9uYW1lKTsKKworCWlmIChoYXNoX3RhYmxlW2hhc2h2YWx1ZV0gPj0gMCkKKwkgICAgY29sbGlzaW9ucysrOworCisJaWYgKGhhc2hfdGFibGVbaGFzaHZhbHVlXSAhPSAwKQorCSAgICB0YWJsZVtpXS5udGVfbGluayA9IGhhc2hfdGFibGVbaGFzaHZhbHVlXTsKKwloYXNoX3RhYmxlW2hhc2h2YWx1ZV0gPSBpOworICAgIH0KKworICAgIHByaW50ZigiLyogJWQgY29sbGlzaW9ucyBvdXQgb2YgJWQgZW50cmllcyAqL1xuIiwgY29sbGlzaW9ucywgQ0FQVEFCU0laRSk7Cit9CisKKy8qCisgKiBUaGlzIGZpbHRlciByZWFkcyBmcm9tIHN0YW5kYXJkIGlucHV0IGEgbGlzdCBvZiB0YWItZGVsaW1pdGVkIGNvbHVtbnMsCisgKiAoZS5nLiwgZnJvbSBDYXBzLmZpbHRlcmVkKSBjb21wdXRlcyB0aGUgaGFzaC12YWx1ZSBvZiBhIHNwZWNpZmllZCBjb2x1bW4gYW5kCisgKiB3cml0ZXMgdGhlIGhhc2hlZCB0YWJsZXMgdG8gc3RhbmRhcmQgb3V0cHV0LgorICoKKyAqIEJ5IGNvbXBpbGluZyB0aGUgaGFzaCB0YWJsZSBhdCBidWlsZCB0aW1lLCB3ZSdyZSBhYmxlIHRvIG1ha2UgdGhlIGVudGlyZQorICogc2V0IG9mIHRlcm1pbmZvIGFuZCB0ZXJtY2FwIHRhYmxlcyByZWFkb25seSAoYW5kIGFsc28gcHJvdmlkZSBzb21lIHJ1bnRpbWUKKyAqIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50KS4KKyAqLworCisjZGVmaW5lIE1BWF9DT0xVTU5TIEJVRlNJWgkvKiB0aGlzIF9oYXNfIHRvIGJlIHdvcnN0LWNhc2UgKi8KKworc3RhdGljIGludAorY291bnRfY29sdW1ucyhjaGFyICoqbGlzdCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBpZiAobGlzdCAhPSAwKSB7CisJd2hpbGUgKCpsaXN0KyspIHsKKwkgICAgKytyZXN1bHQ7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgY2hhciAqKgorcGFyc2VfY29sdW1ucyhjaGFyICpidWZmZXIpCit7CisgICAgc3RhdGljIGNoYXIgKipsaXN0OworCisgICAgaW50IGNvbCA9IDA7CisKKyAgICBpZiAobGlzdCA9PSAwICYmIChsaXN0ID0gdHlwZUNhbGxvYyhjaGFyICosIChNQVhfQ09MVU1OUyArIDEpKSkgPT0gMCkKKwkgIHJldHVybiAoMCk7CisKKyAgICBpZiAoKmJ1ZmZlciAhPSAnIycpIHsKKwl3aGlsZSAoKmJ1ZmZlciAhPSAnXDAnKSB7CisJICAgIGNoYXIgKnM7CisJICAgIGZvciAocyA9IGJ1ZmZlcjsgKCpzICE9ICdcMCcpICYmICFpc3NwYWNlKFVDaGFyKCpzKSk7IHMrKykKKwkJLypFTVBUWSAqLyA7CisJICAgIGlmIChzICE9IGJ1ZmZlcikgeworCQljaGFyIG1hcmsgPSAqczsKKwkJKnMgPSAnXDAnOworCQlpZiAoKHMgLSBidWZmZXIpID4gMQorCQkgICAgJiYgKCpidWZmZXIgPT0gJyInKQorCQkgICAgJiYgKHNbLTFdID09ICciJykpIHsJLyogc3RyaXAgdGhlIHF1b3RlcyAqLworCQkgICAgYXNzZXJ0KHMgPiBidWZmZXIgKyAxKTsKKwkJICAgIHNbLTFdID0gJ1wwJzsKKwkJICAgIGJ1ZmZlcisrOworCQl9CisJCWxpc3RbY29sXSA9IGJ1ZmZlcjsKKwkJY29sKys7CisJCWlmIChtYXJrID09ICdcMCcpCisJCSAgICBicmVhazsKKwkJd2hpbGUgKCorK3MgJiYgaXNzcGFjZShVQ2hhcigqcykpKQorCQkgICAgLypFTVBUWSAqLyA7CisJCWJ1ZmZlciA9IHM7CisJICAgIH0gZWxzZQorCQlicmVhazsKKwl9CisgICAgfQorICAgIHJldHVybiBjb2wgPyBsaXN0IDogMDsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqbmFtZV90YWJsZSA9IHR5cGVDYWxsb2Moc3RydWN0CisJCQkJCQkgICAgIG5hbWVfdGFibGVfZW50cnksIENBUFRBQlNJWkUpOworICAgIEhhc2hWYWx1ZSAqaGFzaF90YWJsZSA9IHR5cGVDYWxsb2MoSGFzaFZhbHVlLCBIQVNIVEFCU0laRSk7CisgICAgY29uc3QgY2hhciAqcm9vdF9uYW1lID0gIiI7CisgICAgaW50IGNvbHVtbiA9IDA7CisgICAgaW50IGJpZ3N0cmluZyA9IDA7CisgICAgaW50IG47CisgICAgY2hhciBidWZmZXJbQlVGU0laXTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0eXBlbmFtZXNbXSA9CisgICAgeyJCT09MRUFOIiwgIk5VTUJFUiIsICJTVFJJTkcifTsKKworICAgIHNob3J0IEJvb2xDb3VudCA9IDA7CisgICAgc2hvcnQgTnVtQ291bnQgPSAwOworICAgIHNob3J0IFN0ckNvdW50ID0gMDsKKworICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29sdW1uLW51bWJlciAoc3RhcnRpbmcgd2l0aCAwKS4KKyAgICAgKiBUaGUgc2Vjb25kIGlzIHRoZSByb290IG5hbWUgb2YgdGhlIHRhYmxlcyB0byBnZW5lcmF0ZS4KKyAgICAgKi8KKyAgICBpZiAoYXJnYyA8PSAzCisJfHwgKGNvbHVtbiA9IGF0b2koYXJndlsxXSkpIDw9IDAKKwl8fCAoY29sdW1uID49IE1BWF9DT0xVTU5TKQorCXx8ICoocm9vdF9uYW1lID0gYXJndlsyXSkgPT0gMAorCXx8IChiaWdzdHJpbmcgPSBhdG9pKGFyZ3ZbM10pKSA8IDAKKwl8fCBuYW1lX3RhYmxlID09IDAKKwl8fCBoYXNoX3RhYmxlID09IDApIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBtYWtlX2hhc2ggY29sdW1uIHJvb3RfbmFtZSBiaWdzdHJpbmdcbiIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlYWQgdGhlIHRhYmxlIGludG8gb3VyIGFycmF5cy4KKyAgICAgKi8KKyAgICBmb3IgKG4gPSAwOyAobiA8IENBUFRBQlNJWkUpICYmIGZnZXRzKGJ1ZmZlciwgQlVGU0laLCBzdGRpbik7KSB7CisJY2hhciAqKmxpc3QsICpubHAgPSBzdHJjaHIoYnVmZmVyLCAnXG4nKTsKKwlpZiAobmxwKQorCSAgICAqbmxwID0gJ1wwJzsKKwlsaXN0ID0gcGFyc2VfY29sdW1ucyhidWZmZXIpOworCWlmIChsaXN0ID09IDApCQkvKiBibGFuayBvciBjb21tZW50ICovCisJICAgIGNvbnRpbnVlOworCWlmIChjb2x1bW4gPiBjb3VudF9jb2x1bW5zKGxpc3QpKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiZXhwZWN0ZWQgJWQgY29sdW1ucywgaGF2ZSAlZDpcbiVzXG4iLAorCQkgICAgY29sdW1uLAorCQkgICAgY291bnRfY29sdW1ucyhsaXN0KSwKKwkJICAgIGJ1ZmZlcik7CisJICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJbmFtZV90YWJsZVtuXS5udGVfbGluayA9IC0xOwkvKiBlbmQtb2YtaGFzaCAqLworCW5hbWVfdGFibGVbbl0ubnRlX25hbWUgPSBzdHJtYWxsb2MobGlzdFtjb2x1bW5dKTsKKwlpZiAoIXN0cmNtcChsaXN0WzJdLCAiYm9vbCIpKSB7CisJICAgIG5hbWVfdGFibGVbbl0ubnRlX3R5cGUgPSBCT09MRUFOOworCSAgICBuYW1lX3RhYmxlW25dLm50ZV9pbmRleCA9IEJvb2xDb3VudCsrOworCX0gZWxzZSBpZiAoIXN0cmNtcChsaXN0WzJdLCAibnVtIikpIHsKKwkgICAgbmFtZV90YWJsZVtuXS5udGVfdHlwZSA9IE5VTUJFUjsKKwkgICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXggPSBOdW1Db3VudCsrOworCX0gZWxzZSBpZiAoIXN0cmNtcChsaXN0WzJdLCAic3RyIikpIHsKKwkgICAgbmFtZV90YWJsZVtuXS5udGVfdHlwZSA9IFNUUklORzsKKwkgICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXggPSBTdHJDb3VudCsrOworCX0gZWxzZSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biB0eXBlOiAlc1xuIiwgbGlzdFsyXSk7CisJICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJbisrOworICAgIH0KKyAgICBfbmNfbWFrZV9oYXNoX3RhYmxlKG5hbWVfdGFibGUsIGhhc2hfdGFibGUpOworCisgICAgLyoKKyAgICAgKiBXcml0ZSB0aGUgY29tcGlsZWQgdGFibGVzIHRvIHN0YW5kYXJkIG91dHB1dAorICAgICAqLworICAgIGlmIChiaWdzdHJpbmcpIHsKKwlpbnQgbGVuID0gMDsKKwlpbnQgbnh0OworCisJcHJpbnRmKCJzdGF0aWMgY29uc3QgY2hhciAlc19uYW1lc190ZXh0W10gPSBcXFxuIiwgcm9vdF9uYW1lKTsKKwlmb3IgKG4gPSAwOyBuIDwgQ0FQVEFCU0laRTsgbisrKSB7CisJICAgIG54dCA9IChpbnQpIHN0cmxlbihuYW1lX3RhYmxlW25dLm50ZV9uYW1lKSArIDU7CisJICAgIGlmIChueHQgKyBsZW4gPiA3MikgeworCQlwcmludGYoIlxcXG4iKTsKKwkJbGVuID0gMDsKKwkgICAgfQorCSAgICBwcmludGYoIlwiJXNcXDBcIiAiLCBuYW1lX3RhYmxlW25dLm50ZV9uYW1lKTsKKwkgICAgbGVuICs9IG54dDsKKwl9CisJcHJpbnRmKCI7XG5cbiIpOworCisJbGVuID0gMDsKKwlwcmludGYoInN0YXRpYyBuYW1lX3RhYmxlX2RhdGEgY29uc3QgJXNfbmFtZXNfZGF0YVtdID1cbiIsCisJICAgICAgIHJvb3RfbmFtZSk7CisJcHJpbnRmKCJ7XG4iKTsKKwlmb3IgKG4gPSAwOyBuIDwgQ0FQVEFCU0laRTsgbisrKSB7CisJICAgIHByaW50ZigiXHR7ICUxNWQsXHQlMTBzLFx0JTNkLCAlM2QgfSVjXG4iLAorCQkgICBsZW4sCisJCSAgIHR5cGVuYW1lc1tuYW1lX3RhYmxlW25dLm50ZV90eXBlXSwKKwkJICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXgsCisJCSAgIG5hbWVfdGFibGVbbl0ubnRlX2xpbmssCisJCSAgIG4gPCBDQVBUQUJTSVpFIC0gMSA/ICcsJyA6ICcgJyk7CisJICAgIGxlbiArPSAoaW50KSBzdHJsZW4obmFtZV90YWJsZVtuXS5udGVfbmFtZSkgKyAxOworCX0KKwlwcmludGYoIn07XG5cbiIpOworCXByaW50Zigic3RhdGljIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpfbmNfJXNfdGFibGUgPSAwO1xuXG4iLCByb290X25hbWUpOworICAgIH0gZWxzZSB7CisKKwlwcmludGYoInN0YXRpYyBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSBjb25zdCBfbmNfJXNfdGFibGVbXSA9XG4iLAorCSAgICAgICByb290X25hbWUpOworCXByaW50Zigie1xuIik7CisJZm9yIChuID0gMDsgbiA8IENBUFRBQlNJWkU7IG4rKykgeworCSAgICBfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpICJcIiVzXCIiLAorCQkJbmFtZV90YWJsZVtuXS5udGVfbmFtZSk7CisJICAgIHByaW50ZigiXHR7ICUxNXMsXHQlMTBzLFx0JTNkLCAlM2QgfSVjXG4iLAorCQkgICBidWZmZXIsCisJCSAgIHR5cGVuYW1lc1tuYW1lX3RhYmxlW25dLm50ZV90eXBlXSwKKwkJICAgbmFtZV90YWJsZVtuXS5udGVfaW5kZXgsCisJCSAgIG5hbWVfdGFibGVbbl0ubnRlX2xpbmssCisJCSAgIG4gPCBDQVBUQUJTSVpFIC0gMSA/ICcsJyA6ICcgJyk7CisJfQorCXByaW50ZigifTtcblxuIik7CisgICAgfQorCisgICAgcHJpbnRmKCJzdGF0aWMgY29uc3QgSGFzaFZhbHVlIF9uY18lc19oYXNoX3RhYmxlWyVkXSA9XG4iLAorCSAgIHJvb3RfbmFtZSwKKwkgICBIQVNIVEFCU0laRSArIDEpOworICAgIHByaW50Zigie1xuIik7CisgICAgZm9yIChuID0gMDsgbiA8IEhBU0hUQUJTSVpFOyBuKyspIHsKKwlwcmludGYoIlx0JTNkLFxuIiwgaGFzaF90YWJsZVtuXSk7CisgICAgfQorICAgIHByaW50ZigiXHQwXHQvKiBiYXNlLW9mLXRhYmxlICovXG4iKTsKKyAgICBwcmludGYoIn07XG5cbiIpOworCisgICAgcHJpbnRmKCIjaWYgKEJPT0xDT1VOVCE9JWQpfHwoTlVNQ09VTlQhPSVkKXx8KFNUUkNPVU5UIT0lZClcbiIsCisJICAgQm9vbENvdW50LCBOdW1Db3VudCwgU3RyQ291bnQpOworICAgIHByaW50ZigiI2Vycm9yXHQtLT4gdGVybS5oIGFuZCBjb21wX2NhcHRhYi5jIGRpc2FncmVlIGFib3V0IHRoZSA8LS1cbiIpOworICAgIHByaW50ZigiI2Vycm9yXHQtLT4gbnVtYmVycyBvZiBib29sZWFucywgbnVtYmVycyBhbmQvb3Igc3RyaW5ncyA8LS1cbiIpOworICAgIHByaW50ZigiI2VuZGlmXG5cbiIpOworCisgICAgZnJlZShoYXNoX3RhYmxlKTsKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9tYWtlX2tleXMuYyBiL25jdXJzZXMvdGluZm8vbWFrZV9rZXlzLmMKaW5kZXggYzA4NGY4Ny4uZmEwYzJmMiAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9tYWtlX2tleXMuYworKysgYi9uY3Vyc2VzL3RpbmZvL21ha2Vfa2V5cy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzcsMTggKzM3LDMzIEBACiAgKi8KIAogI2RlZmluZSBVU0VfVEVSTUxJQiAxCi0jaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKyNpbmNsdWRlIDxidWlsZC5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBtYWtlX2tleXMuYyx2IDEuMTQgMjAwOC8wOC8wMyAyMTo1NzoyMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IG1ha2Vfa2V5cy5jLHYgMS4yMSAyMDE1LzA3LzE2IDAxOjEwOjAzIHRvbSBFeHAgJCIpCiAKICNpbmNsdWRlIDxuYW1lcy5jPgogCi0jZGVmaW5lIFVOS05PV04gKFNJWkVPRihzdHJuYW1lcykgKyBTSVpFT0Yoc3RyZm5hbWVzKSkKK3N0YXRpYyB1bnNpZ25lZAordW5rbm93bih2b2lkKQoreworICAgIHN0YXRpYyB1bnNpZ25lZCByZXN1bHQgPSAwOwogCi1zdGF0aWMgc2l6ZV90CisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisJdW5zaWduZWQgbjsKKwlmb3IgKG4gPSAwOyBzdHJuYW1lc1tuXSAhPSAwOyBuKyspIHsKKwkgICAgKytyZXN1bHQ7CisJfQorCWZvciAobiA9IDA7IHN0cmZuYW1lc1tuXSAhPSAwOyBuKyspIHsKKwkgICAgKytyZXN1bHQ7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdW5zaWduZWQKIGxvb2t1cChjb25zdCBjaGFyICpuYW1lKQogewotICAgIHNpemVfdCBuOworICAgIHVuc2lnbmVkIG47CiAgICAgYm9vbCBmb3VuZCA9IEZBTFNFOwogICAgIGZvciAobiA9IDA7IHN0cm5hbWVzW25dICE9IDA7IG4rKykgewogCWlmICghc3RyY21wKG5hbWUsIHN0cm5hbWVzW25dKSkgewpAQCAtNjQsNyArNzksNyBAQAogCSAgICB9CiAJfQogICAgIH0KLSAgICByZXR1cm4gZm91bmQgPyBuIDogVU5LTk9XTjsKKyAgICByZXR1cm4gZm91bmQgPyBuIDogdW5rbm93bigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNzMsMTAgKzg4LDExIEBACiAgICAgY2hhciBidWZmZXJbQlVGU0laXTsKICAgICBjaGFyIGZyb21bMjU2XTsKICAgICBjaGFyIHRvWzI1Nl07Ci0gICAgaW50IG1heGxlbiA9IDE2OworICAgIHVuc2lnbmVkIGlnbm9yZSA9IHVua25vd24oKTsKKyAgICB1bnNpZ25lZCBtYXhsZW4gPSAxNjsKICAgICBpbnQgc2Nhbm5lZDsKIAotICAgIHdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBpZnApICE9IDApIHsKKyAgICB3aGlsZSAoZmdldHMoYnVmZmVyLCAoaW50KSBzaXplb2YoYnVmZmVyKSwgaWZwKSAhPSAwKSB7CiAJaWYgKCpidWZmZXIgPT0gJyMnKQogCSAgICBjb250aW51ZTsKIApAQCAtODUsMTQgKzEwMSwxNCBAQAogCiAJc2Nhbm5lZCA9IHNzY2FuZihidWZmZXIsICIlMjU1cyAlMjU1cyIsIHRvLCBmcm9tKTsKIAlpZiAoc2Nhbm5lZCA9PSAyKSB7Ci0JICAgIGludCBjb2RlID0gbG9va3VwKGZyb20pOwotCSAgICBpZiAoY29kZSA9PSBVTktOT1dOKQorCSAgICB1bnNpZ25lZCBjb2RlID0gbG9va3VwKGZyb20pOworCSAgICBpZiAoY29kZSA9PSBpZ25vcmUpCiAJCWNvbnRpbnVlOwotCSAgICBpZiAoKGludCkgc3RybGVuKGZyb20pID4gbWF4bGVuKQotCQltYXhsZW4gPSBzdHJsZW4oZnJvbSk7Ci0JICAgIGZwcmludGYob2ZwLCAiXHR7ICU0ZCwgJS0qLipzIH0sXHQvKiAlcyAqL1xuIiwKKwkgICAgaWYgKHN0cmxlbihmcm9tKSA+IG1heGxlbikKKwkJbWF4bGVuID0gKHVuc2lnbmVkKSBzdHJsZW4oZnJvbSk7CisJICAgIGZwcmludGYob2ZwLCAiXHR7ICU0dSwgJS0qLipzIH0sXHQvKiAlcyAqL1xuIiwKIAkJICAgIGNvZGUsCi0JCSAgICBtYXhsZW4sIG1heGxlbiwKKwkJICAgIChpbnQpIG1heGxlbiwgKGludCkgbWF4bGVuLAogCQkgICAgdG8sCiAJCSAgICBmcm9tKTsKIAl9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL25hbWVfbWF0Y2guYyBiL25jdXJzZXMvdGluZm8vbmFtZV9tYXRjaC5jCmluZGV4IGQ1NzY5MDEuLmM2NDg1MzUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vbmFtZV9tYXRjaC5jCisrKyBiL25jdXJzZXMvdGluZm8vbmFtZV9tYXRjaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzEsMjggKzMxLDQwIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogI2luY2x1ZGUgPHRpYy5oPgogCi1NT0RVTEVfSUQoIiRJZDogbmFtZV9tYXRjaC5jLHYgMS4xNyAyMDA4LzA4LzAzIDE5OjQ5OjMzIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbmFtZV9tYXRjaC5jLHYgMS4yMyAyMDEzLzA1LzI1IDIwOjIwOjA4IHRvbSBFeHAgJCIpCiAKLS8qCi0gKglfbmNfZmlyc3RfbmFtZShjaGFyICpuYW1lcykKLSAqCi0gKglFeHRyYWN0IHRoZSBwcmltYXJ5IG5hbWUgZnJvbSBhIGNvbXBpbGVkIGVudHJ5LgotICovCiAjZGVmaW5lIEZpcnN0TmFtZSBfbmNfZ2xvYmFscy5maXJzdF9uYW1lCiAKKyNpZiBOQ1VSU0VTX1VTRV9URVJNQ0FQICYmIE5DVVJTRVNfWE5BTUVTCitzdGF0aWMgY29uc3QgY2hhciAqCitza2lwX2luZGV4KGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaWYgKChfbmNfc3ludGF4ID09IFNZTl9URVJNQ0FQKSAmJiBfbmNfdXNlcl9kZWZpbmFibGUpIHsKKwljb25zdCBjaGFyICpiYXIgPSBzdHJjaHIobmFtZSwgJ3wnKTsKKwlpZiAoYmFyICE9IDAgJiYgKGJhciAtIG5hbWUpID09IDIpCisJICAgIG5hbWUgPSBiYXIgKyAxOworICAgIH0KKyAgICByZXR1cm4gbmFtZTsKK30KKyNlbmRpZgorCisvKgorICogR2V0IHRoZSBwcmltYXJ5IG5hbWUgZnJvbSB0aGUgZ2l2ZW4gbmFtZSBsaXN0LiAgRm9yIHRlcm1pbmZvLCB0aGlzIGlzIHRoZQorICogZmlyc3QgbmFtZS4gIEZvciB0ZXJtY2FwLCB0aGlzIG1heSBiZSB0aGUgc2Vjb25kIG5hbWUsIGlmIHRoZSBmaXJzdCBvbmUKKyAqIGhhcHBlbnMgdG8gYmUgdHdvIGNoYXJhY3RlcnMuCisgKi8KIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKIF9uY19maXJzdF9uYW1lKGNvbnN0IGNoYXIgKmNvbnN0IHNwKQotLyogZ2V0IHRoZSBmaXJzdCBuYW1lIGZyb20gdGhlIGdpdmVuIG5hbWUgbGlzdCAqLwogewogICAgIHVuc2lnbmVkIG47CiAKICNpZiBOT19MRUFLUwogICAgIGlmIChzcCA9PSAwKSB7Ci0JaWYgKEZpcnN0TmFtZSAhPSAwKQorCWlmIChGaXJzdE5hbWUgIT0gMCkgewogCSAgICBGcmVlQW5kTnVsbChGaXJzdE5hbWUpOworCX0KICAgICB9IGVsc2UKICNlbmRpZgogICAgIHsKQEAgLTYwLDggKzcyLDEyIEBACiAJICAgIEZpcnN0TmFtZSA9IHR5cGVNYWxsb2MoY2hhciwgTUFYX05BTUVfU0laRSArIDEpOwogCiAJaWYgKEZpcnN0TmFtZSAhPSAwKSB7CisJICAgIGNvbnN0IGNoYXIgKnNyYyA9IHNwOworI2lmIE5DVVJTRVNfVVNFX1RFUk1DQVAgJiYgTkNVUlNFU19YTkFNRVMKKwkgICAgc3JjID0gc2tpcF9pbmRleChzcCk7CisjZW5kaWYKIAkgICAgZm9yIChuID0gMDsgbiA8IE1BWF9OQU1FX1NJWkU7IG4rKykgewotCQlpZiAoKEZpcnN0TmFtZVtuXSA9IHNwW25dKSA9PSAnXDAnCisJCWlmICgoRmlyc3ROYW1lW25dID0gc3JjW25dKSA9PSAnXDAnCiAJCSAgICB8fCAoRmlyc3ROYW1lW25dID09ICd8JykpCiAJCSAgICBicmVhazsKIAkgICAgfQpAQCAtNzIsMTEgKzg4LDggQEAKIH0KIAogLyoKLSAqCWludCBfbmNfbmFtZV9tYXRjaChuYW1lbGlzdCwgbmFtZSwgZGVsaW0pCi0gKgotICoJSXMgdGhlIGdpdmVuIG5hbWUgbWF0Y2hlZCBpbiBuYW1lbGlzdD8KKyAqIElzIHRoZSBnaXZlbiBuYW1lIG1hdGNoZWQgaW4gbmFtZWxpc3Q/CiAgKi8KLQogTkNVUlNFU19FWFBPUlQoaW50KQogX25jX25hbWVfbWF0Y2goY29uc3QgY2hhciAqY29uc3QgbmFtZWxzdCwgY29uc3QgY2hhciAqY29uc3QgbmFtZSwgY29uc3QgY2hhciAqY29uc3QgZGVsaW0pCiB7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL29ic29sZXRlLmMgYi9uY3Vyc2VzL3RpbmZvL29ic29sZXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0NzZkYwotLS0gL2Rldi9udWxsCisrKyBiL25jdXJzZXMvdGluZm8vb2Jzb2xldGUuYwpAQCAtMCwwICsxLDIzOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAyMDEzLW9uICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyoqCVN1cHBvcnQgZm9yIG9ic29sZXRlL3VudXN1YWwgZmVhdHVyZXMuCisqLworCisjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKworTU9EVUxFX0lEKCIkSWQ6IG9ic29sZXRlLmMsdiAxLjMgMjAxNC8xMC8xMSAwMjozOTozNSB0b20gRXhwICQiKQorCisvKgorICogT2Jzb2xldGUgZW50cnlwb2ludCByZXRhaW5lZCBmb3IgYmluYXJ5IGNvbXBhdGJpbGl0eS4KKyAqLworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2V0X2J1ZmZlcikgKE5DVVJTRVNfU1BfRENMeCBGSUxFICpvZnAsIGludCBidWZmZXJlZCkKK3sKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisgICAgKHZvaWQpIFNQX1BBUk07CisjZW5kaWYKKyAgICAodm9pZCkgb2ZwOworICAgICh2b2lkKSBidWZmZXJlZDsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfc2V0X2J1ZmZlcihGSUxFICpvZnAsIGludCBidWZmZXJlZCkKK3sKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NldF9idWZmZXIpIChDVVJSRU5UX1NDUkVFTiwgb2ZwLCBidWZmZXJlZCk7Cit9CisjZW5kaWYKKworI2lmICFIQVZFX1NUUkRVUAorTkNVUlNFU19FWFBPUlQoY2hhciAqKQorX25jX3N0cmR1cChjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKnJlc3VsdCA9IDA7CisgICAgaWYgKHMgIT0gMCkgeworCXNpemVfdCBuZWVkID0gc3RybGVuKHMpOworCXJlc3VsdCA9IG1hbGxvYyhuZWVkICsgMSk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJICAgIHN0cmNweShyZXN1bHQsIHMpOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWYgVVNFX01ZX01FTU1PVkUKKyNkZWZpbmUgRFNUICgoY2hhciAqKXMxKQorI2RlZmluZSBTUkMgKChjb25zdCBjaGFyICopczIpCitOQ1VSU0VTX0VYUE9SVCh2b2lkICopCitfbmNfbWVtbW92ZSh2b2lkICpzMSwgY29uc3Qgdm9pZCAqczIsIHNpemVfdCBuKQoreworICAgIGlmIChuICE9IDApIHsKKwlpZiAoKERTVCArIG4gPiBTUkMpICYmIChTUkMgKyBuID4gRFNUKSkgeworCSAgICBzdGF0aWMgY2hhciAqYmZyOworCSAgICBzdGF0aWMgc2l6ZV90IGxlbmd0aDsKKwkgICAgcmVnaXN0ZXIgc2l6ZV90IGo7CisJICAgIGlmIChsZW5ndGggPCBuKSB7CisJCWxlbmd0aCA9IChuICogMykgLyAyOworCQliZnIgPSB0eXBlUmVhbGxvYyhjaGFyLCBsZW5ndGgsIGJmcik7CisJICAgIH0KKwkgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykKKwkJYmZyW2pdID0gU1JDW2pdOworCSAgICBzMiA9IGJmcjsKKwl9CisJd2hpbGUgKG4tLSAhPSAwKQorCSAgICBEU1Rbbl0gPSBTUkNbbl07CisgICAgfQorICAgIHJldHVybiBzMTsKK30KKyNlbmRpZiAvKiBVU0VfTVlfTUVNTU9WRSAqLworCisjaWZkZWYgRVhQX1hURVJNXzEwMDUKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19jb252X3RvX3V0ZjgodW5zaWduZWQgY2hhciAqdGFyZ2V0LCB1bnNpZ25lZCBzb3VyY2UsIHVuc2lnbmVkIGxpbWl0KQoreworI2RlZmluZSBDSChuKSBVQ2hhcigoc291cmNlKSA+PiAoKG4pICogOCkpCisgICAgaW50IHJjID0gMDsKKworICAgIGlmIChzb3VyY2UgPD0gMHgwMDAwMDA3ZikKKwlyYyA9IDE7CisgICAgZWxzZSBpZiAoc291cmNlIDw9IDB4MDAwMDA3ZmYpCisJcmMgPSAyOworICAgIGVsc2UgaWYgKHNvdXJjZSA8PSAweDAwMDBmZmZmKQorCXJjID0gMzsKKyAgICBlbHNlIGlmIChzb3VyY2UgPD0gMHgwMDFmZmZmZikKKwlyYyA9IDQ7CisgICAgZWxzZSBpZiAoc291cmNlIDw9IDB4MDNmZmZmZmYpCisJcmMgPSA1OworICAgIGVsc2UJCQkvKiAoc291cmNlIDw9IDB4N2ZmZmZmZmYpICovCisJcmMgPSA2OworCisgICAgaWYgKCh1bnNpZ25lZCkgcmMgPiBsaW1pdCkgewkvKiB3aGF0ZXZlciBpdCBpcywgd2UgY2Fubm90IGRlY29kZSBpdCAqLworCXJjID0gMDsKKyAgICB9CisKKyAgICBpZiAodGFyZ2V0ICE9IDApIHsKKwlzd2l0Y2ggKHJjKSB7CisJY2FzZSAxOgorCSAgICB0YXJnZXRbMF0gPSBDSCgwKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIDI6CisJICAgIHRhcmdldFsxXSA9IFVDaGFyKDB4ODAgfCAoQ0goMCkgJiAweDNmKSk7CisJICAgIHRhcmdldFswXSA9IFVDaGFyKDB4YzAgfCAoQ0goMCkgPj4gNikgfCAoKENIKDEpICYgMHgwNykgPDwgMikpOworCSAgICBicmVhazsKKworCWNhc2UgMzoKKwkgICAgdGFyZ2V0WzJdID0gVUNoYXIoMHg4MCB8IChDSCgwKSAmIDB4M2YpKTsKKwkgICAgdGFyZ2V0WzFdID0gVUNoYXIoMHg4MCB8IChDSCgwKSA+PiA2KSB8ICgoQ0goMSkgJiAweDBmKSA8PCAyKSk7CisJICAgIHRhcmdldFswXSA9IFVDaGFyKDB4ZTAgfCAoKGludCkgKENIKDEpICYgMHhmMCkgPj4gNCkpOworCSAgICBicmVhazsKKworCWNhc2UgNDoKKwkgICAgdGFyZ2V0WzNdID0gVUNoYXIoMHg4MCB8IChDSCgwKSAmIDB4M2YpKTsKKwkgICAgdGFyZ2V0WzJdID0gVUNoYXIoMHg4MCB8IChDSCgwKSA+PiA2KSB8ICgoQ0goMSkgJiAweDBmKSA8PCAyKSk7CisJICAgIHRhcmdldFsxXSA9IFVDaGFyKDB4ODAgfAorCQkJICAgICAgKChpbnQpIChDSCgxKSAmIDB4ZjApID4+IDQpIHwKKwkJCSAgICAgICgoaW50KSAoQ0goMikgJiAweDAzKSA8PCA0KSk7CisJICAgIHRhcmdldFswXSA9IFVDaGFyKDB4ZjAgfCAoKGludCkgKENIKDIpICYgMHgxZikgPj4gMikpOworCSAgICBicmVhazsKKworCWNhc2UgNToKKwkgICAgdGFyZ2V0WzRdID0gVUNoYXIoMHg4MCB8IChDSCgwKSAmIDB4M2YpKTsKKwkgICAgdGFyZ2V0WzNdID0gVUNoYXIoMHg4MCB8IChDSCgwKSA+PiA2KSB8ICgoQ0goMSkgJiAweDBmKSA8PCAyKSk7CisJICAgIHRhcmdldFsyXSA9IFVDaGFyKDB4ODAgfAorCQkJICAgICAgKChpbnQpIChDSCgxKSAmIDB4ZjApID4+IDQpIHwKKwkJCSAgICAgICgoaW50KSAoQ0goMikgJiAweDAzKSA8PCA0KSk7CisJICAgIHRhcmdldFsxXSA9IFVDaGFyKDB4ODAgfCAoQ0goMikgPj4gMikpOworCSAgICB0YXJnZXRbMF0gPSBVQ2hhcigweGY4IHwgKENIKDMpICYgMHgwMykpOworCSAgICBicmVhazsKKworCWNhc2UgNjoKKwkgICAgdGFyZ2V0WzVdID0gVUNoYXIoMHg4MCB8IChDSCgwKSAmIDB4M2YpKTsKKwkgICAgdGFyZ2V0WzRdID0gVUNoYXIoMHg4MCB8IChDSCgwKSA+PiA2KSB8ICgoQ0goMSkgJiAweDBmKSA8PCAyKSk7CisJICAgIHRhcmdldFszXSA9IFVDaGFyKDB4ODAgfCAoQ0goMSkgPj4gNCkgfCAoKENIKDIpICYgMHgwMykgPDwgNCkpOworCSAgICB0YXJnZXRbMl0gPSBVQ2hhcigweDgwIHwgKENIKDIpID4+IDIpKTsKKwkgICAgdGFyZ2V0WzFdID0gVUNoYXIoMHg4MCB8IChDSCgzKSAmIDB4M2YpKTsKKwkgICAgdGFyZ2V0WzBdID0gVUNoYXIoMHhmYyB8ICgoaW50KSAoQ0goMykgJiAweDQwKSA+PiA2KSk7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7CQkJLyogbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBpbiB0YXJnZXQgKi8KKyN1bmRlZiBDSAorfQorCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfY29udl90b191dGYzMih1bnNpZ25lZCAqdGFyZ2V0LCBjb25zdCBjaGFyICpzb3VyY2UsIHVuc2lnbmVkIGxpbWl0KQoreworI2RlZmluZSBDSChuKSBVQ2hhcigoKnRhcmdldCkgPj4gKChuKSAqIDgpKQorICAgIGludCByYyA9IDA7CisgICAgaW50IGo7CisgICAgdW5zaWduZWQgbWFzayA9IDA7CisKKyAgICAvKgorICAgICAqIEZpbmQgdGhlIG51bWJlciBvZiBieXRlcyB3ZSB3aWxsIG5lZWQgZnJvbSB0aGUgc291cmNlLgorICAgICAqLworICAgIGlmICgoKnNvdXJjZSAmIDB4ODApID09IDApIHsKKwlyYyA9IDE7CisJbWFzayA9ICh1bnNpZ25lZCkgKnNvdXJjZTsKKyAgICB9IGVsc2UgaWYgKCgqc291cmNlICYgMHhlMCkgPT0gMHhjMCkgeworCXJjID0gMjsKKwltYXNrID0gKHVuc2lnbmVkKSAoKnNvdXJjZSAmIDB4MWYpOworICAgIH0gZWxzZSBpZiAoKCpzb3VyY2UgJiAweGYwKSA9PSAweGUwKSB7CisJcmMgPSAzOworCW1hc2sgPSAodW5zaWduZWQpICgqc291cmNlICYgMHgwZik7CisgICAgfSBlbHNlIGlmICgoKnNvdXJjZSAmIDB4ZjgpID09IDB4ZjApIHsKKwlyYyA9IDQ7CisJbWFzayA9ICh1bnNpZ25lZCkgKCpzb3VyY2UgJiAweDA3KTsKKyAgICB9IGVsc2UgaWYgKCgqc291cmNlICYgMHhmYykgPT0gMHhmOCkgeworCXJjID0gNTsKKwltYXNrID0gKHVuc2lnbmVkKSAoKnNvdXJjZSAmIDB4MDMpOworICAgIH0gZWxzZSBpZiAoKCpzb3VyY2UgJiAweGZlKSA9PSAweGZjKSB7CisJcmMgPSA2OworCW1hc2sgPSAodW5zaWduZWQpICgqc291cmNlICYgMHgwMSk7CisgICAgfQorCisgICAgaWYgKCh1bnNpZ25lZCkgcmMgPiBsaW1pdCkgewkvKiB3aGF0ZXZlciBpdCBpcywgd2UgY2Fubm90IGRlY29kZSBpdCAqLworCXJjID0gMDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHNhbml0eS1jaGVjay4KKyAgICAgKi8KKyAgICBpZiAocmMgPiAxKSB7CisJZm9yIChqID0gMTsgaiA8IHJjOyBqKyspIHsKKwkgICAgaWYgKChzb3VyY2Vbal0gJiAweGMwKSAhPSAweDgwKQorCQlicmVhazsKKwl9CisJaWYgKGogIT0gcmMpIHsKKwkgICAgcmMgPSAwOworCX0KKyAgICB9CisKKyAgICBpZiAodGFyZ2V0ICE9IDApIHsKKwlpbnQgc2hpZnQgPSAwOworCSp0YXJnZXQgPSAwOworCWZvciAoaiA9IDE7IGogPCByYzsgaisrKSB7CisJICAgICp0YXJnZXQgfD0gKHVuc2lnbmVkKSAoc291cmNlW3JjIC0gal0gJiAweDNmKSA8PCBzaGlmdDsKKwkgICAgc2hpZnQgKz0gNjsKKwl9CisJKnRhcmdldCB8PSBtYXNrIDw8IHNoaWZ0OworICAgIH0KKyAgICByZXR1cm4gcmM7CisjdW5kZWYgQ0gKK30KKyNlbmRpZiAvKiBFWFBfWFRFUk1fMTAwNSAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCmluZGV4IGNmN2E1ZjQuLjBkYzE0MTQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYworKysgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00Niw5ICs0Niw4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHRpYy5oPgotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjY5IDIwMDgvMDgvMTYgMjE6NTI6MDMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS44MCAyMDE1LzA0LzA0IDE0OjE4OjM4IHRvbSBFeHAgJCIpCiAKICNpZmRlZiBMSU5UCiBzdGF0aWMgc2hvcnQgY29uc3QgcGFyYW1ldHJpemVkW10gPQpAQCAtODQsMTMgKzgzLDEzIEBACiAgICAgY2FzZSBOVU1CRVI6CiAJZmlyc3QgPSB0cC0+ZXh0X0Jvb2xlYW5zOwogCWxhc3QgPSB0cC0+ZXh0X051bWJlcnMgKyBmaXJzdDsKLQlvZmZzZXQgPSB0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzOworCW9mZnNldCA9ICh1bnNpZ25lZCkgKHRwLT5leHRfQm9vbGVhbnMgKyB0cC0+ZXh0X051bWJlcnMpOwogCXRpbmRleCA9IHRwLT5udW1fTnVtYmVyczsKIAlicmVhazsKICAgICBjYXNlIFNUUklORzoKLQlmaXJzdCA9IHRwLT5leHRfQm9vbGVhbnMgKyB0cC0+ZXh0X051bWJlcnM7CisJZmlyc3QgPSAodW5zaWduZWQpICh0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzKTsKIAlsYXN0ID0gdHAtPmV4dF9TdHJpbmdzICsgZmlyc3Q7Ci0Jb2Zmc2V0ID0gdHAtPmV4dF9Cb29sZWFucyArIHRwLT5leHRfTnVtYmVycyArIHRwLT5leHRfU3RyaW5nczsKKwlvZmZzZXQgPSAodW5zaWduZWQpICh0cC0+ZXh0X0Jvb2xlYW5zICsgdHAtPmV4dF9OdW1iZXJzICsgdHAtPmV4dF9TdHJpbmdzKTsKIAl0aW5kZXggPSB0cC0+bnVtX1N0cmluZ3M7CiAJYnJlYWs7CiAgICAgY2FzZSBDQU5DRUw6CkBAIC0xMzcsMzIgKzEzNiwzNiBAQAogCSAgICBicmVhazsKIAl9CiAgICAgfQorCisjZGVmaW5lIGZvcl9lYWNoX3ZhbHVlKG1heCkgXAorCWZvciAobGFzdCA9ICh1bnNpZ25lZCkgKG1heCAtIDEpOyBsYXN0ID4gdGluZGV4OyBsYXN0LS0pCisKICAgICBpZiAoIWZvdW5kKSB7CiAJc3dpdGNoICh0b2tlbl90eXBlKSB7CiAJY2FzZSBCT09MRUFOOgotCSAgICB0cC0+ZXh0X0Jvb2xlYW5zICs9IDE7Ci0JICAgIHRwLT5udW1fQm9vbGVhbnMgKz0gMTsKLQkgICAgdHAtPkJvb2xlYW5zID0gdHlwZVJlYWxsb2MoTkNVUlNFU19TQk9PTCwgdHAtPm51bV9Cb29sZWFucywgdHAtPkJvb2xlYW5zKTsKLQkgICAgZm9yIChsYXN0ID0gdHAtPm51bV9Cb29sZWFucyAtIDE7IGxhc3QgPiB0aW5kZXg7IGxhc3QtLSkKKwkgICAgdHAtPmV4dF9Cb29sZWFucysrOworCSAgICB0cC0+bnVtX0Jvb2xlYW5zKys7CisJICAgIFRZUEVfUkVBTExPQyhOQ1VSU0VTX1NCT09MLCB0cC0+bnVtX0Jvb2xlYW5zLCB0cC0+Qm9vbGVhbnMpOworCSAgICBmb3JfZWFjaF92YWx1ZSh0cC0+bnVtX0Jvb2xlYW5zKQogCQl0cC0+Qm9vbGVhbnNbbGFzdF0gPSB0cC0+Qm9vbGVhbnNbbGFzdCAtIDFdOwogCSAgICBicmVhazsKIAljYXNlIE5VTUJFUjoKLQkgICAgdHAtPmV4dF9OdW1iZXJzICs9IDE7Ci0JICAgIHRwLT5udW1fTnVtYmVycyArPSAxOwotCSAgICB0cC0+TnVtYmVycyA9IHR5cGVSZWFsbG9jKHNob3J0LCB0cC0+bnVtX051bWJlcnMsIHRwLT5OdW1iZXJzKTsKLQkgICAgZm9yIChsYXN0ID0gdHAtPm51bV9OdW1iZXJzIC0gMTsgbGFzdCA+IHRpbmRleDsgbGFzdC0tKQorCSAgICB0cC0+ZXh0X051bWJlcnMrKzsKKwkgICAgdHAtPm51bV9OdW1iZXJzKys7CisJICAgIFRZUEVfUkVBTExPQyhzaG9ydCwgdHAtPm51bV9OdW1iZXJzLCB0cC0+TnVtYmVycyk7CisJICAgIGZvcl9lYWNoX3ZhbHVlKHRwLT5udW1fTnVtYmVycykKIAkJdHAtPk51bWJlcnNbbGFzdF0gPSB0cC0+TnVtYmVyc1tsYXN0IC0gMV07CiAJICAgIGJyZWFrOwogCWNhc2UgU1RSSU5HOgotCSAgICB0cC0+ZXh0X1N0cmluZ3MgKz0gMTsKLQkgICAgdHAtPm51bV9TdHJpbmdzICs9IDE7Ci0JICAgIHRwLT5TdHJpbmdzID0gdHlwZVJlYWxsb2MoY2hhciAqLCB0cC0+bnVtX1N0cmluZ3MsIHRwLT5TdHJpbmdzKTsKLQkgICAgZm9yIChsYXN0ID0gdHAtPm51bV9TdHJpbmdzIC0gMTsgbGFzdCA+IHRpbmRleDsgbGFzdC0tKQorCSAgICB0cC0+ZXh0X1N0cmluZ3MrKzsKKwkgICAgdHAtPm51bV9TdHJpbmdzKys7CisJICAgIFRZUEVfUkVBTExPQyhjaGFyICosIHRwLT5udW1fU3RyaW5ncywgdHAtPlN0cmluZ3MpOworCSAgICBmb3JfZWFjaF92YWx1ZSh0cC0+bnVtX1N0cmluZ3MpCiAJCXRwLT5TdHJpbmdzW2xhc3RdID0gdHAtPlN0cmluZ3NbbGFzdCAtIDFdOwogCSAgICBicmVhazsKIAl9CiAJYWN0dWFsID0gTlVNX0VYVF9OQU1FUyh0cCk7Ci0JdHAtPmV4dF9OYW1lcyA9IHR5cGVSZWFsbG9jKGNoYXIgKiwgYWN0dWFsLCB0cC0+ZXh0X05hbWVzKTsKKwlUWVBFX1JFQUxMT0MoY2hhciAqLCBhY3R1YWwsIHRwLT5leHRfTmFtZXMpOwogCXdoaWxlICgtLWFjdHVhbCA+IG9mZnNldCkKIAkgICAgdHAtPmV4dF9OYW1lc1thY3R1YWxdID0gdHAtPmV4dF9OYW1lc1thY3R1YWwgLSAxXTsKIAl0cC0+ZXh0X05hbWVzW29mZnNldF0gPSBfbmNfc2F2ZV9zdHIobmFtZSk7CkBAIC0xNzAsNyArMTczLDcgQEAKIAogICAgIHRlbXAubnRlX25hbWUgPSB0cC0+ZXh0X05hbWVzW29mZnNldF07CiAgICAgdGVtcC5udGVfdHlwZSA9IHRva2VuX3R5cGU7Ci0gICAgdGVtcC5udGVfaW5kZXggPSB0aW5kZXg7CisgICAgdGVtcC5udGVfaW5kZXggPSAoc2hvcnQpIHRpbmRleDsKICAgICB0ZW1wLm50ZV9saW5rID0gLTE7CiAKICAgICByZXR1cm4gJnRlbXA7CkBAIC0yMDAsNiArMjAzLDggQEAKICAJeyBiYWRfdGNfdXNhZ2UgPSBUUlVFOyBcCiAJIF9uY193YXJuaW5nKCJMZWdhY3kgdGVybWNhcCBhbGxvd3Mgb25seSBhIHRyYWlsaW5nIHRjPSBjbGF1c2UiKTsgfQogCisjZGVmaW5lIE1BWF9OVU1CRVIgMHg3ZmZmCS8qIHBvc2l0aXZlIHNob3J0cyBvbmx5ICovCisKIE5DVVJTRVNfRVhQT1JUKGludCkKIF9uY19wYXJzZV9lbnRyeShzdHJ1Y3QgZW50cnkgKmVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQogewpAQCAtMzc5LDE2ICszODQsMTQgQEAKIAkJICAgICYmICFzdHJjbXAoIm1hIiwgX25jX2N1cnJfdG9rZW4udGtfbmFtZSkpIHsKIAkJICAgIC8qIHRlbGwgbWF4X2F0dHJpYnV0ZXMgZnJvbSBhcnJvd19rZXlfbWFwICovCiAJCSAgICBlbnRyeV9wdHIgPSBfbmNfZmluZF90eXBlX2VudHJ5KCJtYSIsIE5VTUJFUiwKLQkJCQkJCSAgICBfbmNfZ2V0X3RhYmxlKF9uY19zeW50YXgKLQkJCQkJCQkJICAhPSAwKSk7CisJCQkJCQkgICAgX25jX3N5bnRheCAhPSAwKTsKIAkJICAgIGFzc2VydChlbnRyeV9wdHIgIT0gMCk7CiAKIAkJfSBlbHNlIGlmICh0b2tlbl90eXBlID09IFNUUklORwogCQkJICAgJiYgIXN0cmNtcCgiTVQiLCBfbmNfY3Vycl90b2tlbi50a19uYW1lKSkgewogCQkgICAgLyogbWFwIHRlcm1pbmZvJ3Mgc3RyaW5nIE1UIHRvIE1UICovCiAJCSAgICBlbnRyeV9wdHIgPSBfbmNfZmluZF90eXBlX2VudHJ5KCJNVCIsIFNUUklORywKLQkJCQkJCSAgICBfbmNfZ2V0X3RhYmxlKF9uY19zeW50YXgKLQkJCQkJCQkJICAhPSAwKSk7CisJCQkJCQkgICAgX25jX3N5bnRheCAhPSAwKTsKIAkJICAgIGFzc2VydChlbnRyeV9wdHIgIT0gMCk7CiAKIAkJfSBlbHNlIGlmICh0b2tlbl90eXBlID09IEJPT0xFQU4KQEAgLTQ0Myw4ICs0NDYsMTIgQEAKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSBOVU1CRVI6Ci0JCWVudHJ5cC0+dHRlcm0uTnVtYmVyc1tlbnRyeV9wdHItPm50ZV9pbmRleF0gPQotCQkgICAgX25jX2N1cnJfdG9rZW4udGtfdmFsbnVtYmVyOworCQlpZiAoX25jX2N1cnJfdG9rZW4udGtfdmFsbnVtYmVyID4gTUFYX05VTUJFUikgeworCQkgICAgZW50cnlwLT50dGVybS5OdW1iZXJzW2VudHJ5X3B0ci0+bnRlX2luZGV4XSA9IE1BWF9OVU1CRVI7CisJCX0gZWxzZSB7CisJCSAgICBlbnRyeXAtPnR0ZXJtLk51bWJlcnNbZW50cnlfcHRyLT5udGVfaW5kZXhdID0KKwkJCShzaG9ydCkgX25jX2N1cnJfdG9rZW4udGtfdmFsbnVtYmVyOworCQl9CiAJCWJyZWFrOwogCiAJICAgIGNhc2UgU1RSSU5HOgpAQCAtNTEwLDkgKzUxNyw5IEBACiBfbmNfY2FwY21wKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKnQpCiAvKiBjb21wYXJlIHR3byBzdHJpbmcgY2FwYWJpbGl0aWVzLCBzdHJpcHBpbmcgb3V0IHBhZGRpbmcgKi8KIHsKLSAgICBpZiAoIXMgJiYgIXQpCisgICAgaWYgKCFWQUxJRF9TVFJJTkcocykgJiYgIVZBTElEX1NUUklORyh0KSkKIAlyZXR1cm4gKDApOwotICAgIGVsc2UgaWYgKCFzIHx8ICF0KQorICAgIGVsc2UgaWYgKCFWQUxJRF9TVFJJTkcocykgfHwgIVZBTElEX1NUUklORyh0KSkKIAlyZXR1cm4gKDEpOwogCiAgICAgZm9yICg7OykgewpAQCAtNTc0LDMyICs1ODEsMzIgQEAKICAqIGxpc3QuICBGb3IgZWFjaCBjYXBhYmlsaXR5LCB3ZSBtYXkgYXNzdW1lIHRoZXJlIGlzIGEga2V5Y2FwIHRoYXQgc2VuZHMgdGhlCiAgKiBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoYXQgY2FwYWJpbGl0eS4KICAqLworI2RlZmluZSBEQVRBKGZyb20sIHRvKSB7IHsgZnJvbSB9LCB7IHRvIH0gfQogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNvbnN0IGNoYXIgKmZyb207Ci0gICAgY29uc3QgY2hhciAqdG87CisgICAgY29uc3QgY2hhciBmcm9tWzNdOworICAgIGNvbnN0IGNoYXIgdG9bNl07CiB9IGFzc29jOwogc3RhdGljIGFzc29jIGNvbnN0IGtvX3hsYXRlW10gPQogewotICAgIHsiYWwiLCAia2lsMSJ9LAkJLyogaW5zZXJ0IGxpbmUga2V5ICAtPiBLRVlfSUwgICAgKi8KLSAgICB7ImJ0IiwgImtjYnQifSwJCS8qIGJhY2sgdGFiICAgICAgICAgLT4gS0VZX0JUQUIgICovCi0gICAgeyJjZCIsICJrZWQifSwJCS8qIGNsZWFyLXRvLWVvcyBrZXkgLT4gS0VZX0VPTCAgICovCi0gICAgeyJjZSIsICJrZWwifSwJCS8qIGNsZWFyLXRvLWVvbCBrZXkgLT4gS0VZX0VPUyAgICovCi0gICAgeyJjbCIsICJrY2xyIn0sCQkvKiBjbGVhciBrZXkgICAgICAgIC0+IEtFWV9DTEVBUiAqLwotICAgIHsiY3QiLCAidGJjIn0sCQkvKiBjbGVhciBhbGwgdGFicyAgIC0+IEtFWV9DQVRBQiAqLwotICAgIHsiZGMiLCAia2RjaDEifSwJCS8qIGRlbGV0ZSBjaGFyICAgICAgLT4gS0VZX0RDICAgICovCi0gICAgeyJkbCIsICJrZGwxIn0sCQkvKiBkZWxldGUgbGluZSAgICAgIC0+IEtFWV9ETCAgICAqLwotICAgIHsiZG8iLCAia2N1ZDEifSwJCS8qIGRvd24ga2V5ICAgICAgICAgLT4gS0VZX0RPV04gICovCi0gICAgeyJlaSIsICJrcm1pciJ9LAkJLyogZXhpdCBpbnNlcnQga2V5ICAtPiBLRVlfRUlDICAgKi8KLSAgICB7ImhvIiwgImtob21lIn0sCQkvKiBob21lIGtleSAgICAgICAgIC0+IEtFWV9IT01FICAqLwotICAgIHsiaWMiLCAia2ljaDEifSwJCS8qIGluc2VydCBjaGFyIGtleSAgLT4gS0VZX0lDICAgICovCi0gICAgeyJpbSIsICJrSUMifSwJCS8qIGluc2VydC1tb2RlIGtleSAgLT4gS0VZX1NJQyAgICovCi0gICAgeyJsZSIsICJrY3ViMSJ9LAkJLyogbGUga2V5ICAgICAgICAgICAtPiBLRVlfTEVGVCAgKi8KLSAgICB7Im5kIiwgImtjdWYxIn0sCQkvKiBuZCBrZXkgICAgICAgICAgIC0+IEtFWV9SSUdIVCAqLwotICAgIHsibmwiLCAia2VudCJ9LAkJLyogbmV3IGxpbmUga2V5ICAgICAtPiBLRVlfRU5URVIgKi8KLSAgICB7InN0IiwgImtodHMifSwJCS8qIHNldC10YWIga2V5ICAgICAgLT4gS0VZX1NUQUIgICovCi0gICAgeyJ0YSIsIENBTkNFTExFRF9TVFJJTkd9LAotICAgIHsidXAiLCAia2N1dTEifSwJCS8qIHVwLWFycm93IGtleSAgICAgLT4gS0VZX1VQICAgICovCi0gICAgeyhjaGFyICopIDAsIChjaGFyICopIDB9LAorICAgIERBVEEoImFsIiwgImtpbDEiKSwJCS8qIGluc2VydCBsaW5lIGtleSAgLT4gS0VZX0lMICAgICovCisgICAgREFUQSgiYnQiLCAia2NidCIpLAkJLyogYmFjayB0YWIgICAgICAgICAtPiBLRVlfQlRBQiAgKi8KKyAgICBEQVRBKCJjZCIsICJrZWQiKSwJCS8qIGNsZWFyLXRvLWVvcyBrZXkgLT4gS0VZX0VPTCAgICovCisgICAgREFUQSgiY2UiLCAia2VsIiksCQkvKiBjbGVhci10by1lb2wga2V5IC0+IEtFWV9FT1MgICAqLworICAgIERBVEEoImNsIiwgImtjbHIiKSwJCS8qIGNsZWFyIGtleSAgICAgICAgLT4gS0VZX0NMRUFSICovCisgICAgREFUQSgiY3QiLCAidGJjIiksCQkvKiBjbGVhciBhbGwgdGFicyAgIC0+IEtFWV9DQVRBQiAqLworICAgIERBVEEoImRjIiwgImtkY2gxIiksCS8qIGRlbGV0ZSBjaGFyICAgICAgLT4gS0VZX0RDICAgICovCisgICAgREFUQSgiZGwiLCAia2RsMSIpLAkJLyogZGVsZXRlIGxpbmUgICAgICAtPiBLRVlfREwgICAgKi8KKyAgICBEQVRBKCJkbyIsICJrY3VkMSIpLAkvKiBkb3duIGtleSAgICAgICAgIC0+IEtFWV9ET1dOICAqLworICAgIERBVEEoImVpIiwgImtybWlyIiksCS8qIGV4aXQgaW5zZXJ0IGtleSAgLT4gS0VZX0VJQyAgICovCisgICAgREFUQSgiaG8iLCAia2hvbWUiKSwJLyogaG9tZSBrZXkgICAgICAgICAtPiBLRVlfSE9NRSAgKi8KKyAgICBEQVRBKCJpYyIsICJraWNoMSIpLAkvKiBpbnNlcnQgY2hhciBrZXkgIC0+IEtFWV9JQyAgICAqLworICAgIERBVEEoImltIiwgImtJQyIpLAkJLyogaW5zZXJ0LW1vZGUga2V5ICAtPiBLRVlfU0lDICAgKi8KKyAgICBEQVRBKCJsZSIsICJrY3ViMSIpLAkvKiBsZSBrZXkgICAgICAgICAgIC0+IEtFWV9MRUZUICAqLworICAgIERBVEEoIm5kIiwgImtjdWYxIiksCS8qIG5kIGtleSAgICAgICAgICAgLT4gS0VZX1JJR0hUICovCisgICAgREFUQSgibmwiLCAia2VudCIpLAkJLyogbmV3IGxpbmUga2V5ICAgICAtPiBLRVlfRU5URVIgKi8KKyAgICBEQVRBKCJzdCIsICJraHRzIiksCQkvKiBzZXQtdGFiIGtleSAgICAgIC0+IEtFWV9TVEFCICAqLworICAgIERBVEEoInRhIiwgIiIpLAorICAgIERBVEEoInVwIiwgImtjdXUxIiksCS8qIHVwLWFycm93IGtleSAgICAgLT4gS0VZX1VQICAgICovCiB9OwogCiAvKgpAQCAtNjUzLDI3ICs2NjAsMzAgQEAKIAogCWlmIChXQU5URUQoY2FycmlhZ2VfcmV0dXJuKSkgewogCSAgICBpZiAoY2FycmlhZ2VfcmV0dXJuX2RlbGF5ID4gMCkgewotCQlzcHJpbnRmKGJ1ZiwgIiVzJDwlZD4iLCBDX0NSLCBjYXJyaWFnZV9yZXR1cm5fZGVsYXkpOworCQlfbmNfU1BSSU5URihidWYsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZikpCisJCQkgICAgIiVzJDwlZD4iLCBDX0NSLCBjYXJyaWFnZV9yZXR1cm5fZGVsYXkpOwogCQljYXJyaWFnZV9yZXR1cm4gPSBfbmNfc2F2ZV9zdHIoYnVmKTsKIAkgICAgfSBlbHNlCiAJCWNhcnJpYWdlX3JldHVybiA9IF9uY19zYXZlX3N0cihDX0NSKTsKIAl9CiAJaWYgKFdBTlRFRChjdXJzb3JfbGVmdCkpIHsKIAkgICAgaWYgKGJhY2tzcGFjZV9kZWxheSA+IDApIHsKLQkJc3ByaW50ZihidWYsICIlcyQ8JWQ+IiwgQ19CUywgYmFja3NwYWNlX2RlbGF5KTsKKwkJX25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKHNpemVvZihidWYpKQorCQkJICAgICIlcyQ8JWQ+IiwgQ19CUywgYmFja3NwYWNlX2RlbGF5KTsKIAkJY3Vyc29yX2xlZnQgPSBfbmNfc2F2ZV9zdHIoYnVmKTsKIAkgICAgfSBlbHNlIGlmIChiYWNrc3BhY2VzX3dpdGhfYnMgPT0gMSkKIAkJY3Vyc29yX2xlZnQgPSBfbmNfc2F2ZV9zdHIoQ19CUyk7CiAJICAgIGVsc2UgaWYgKFBSRVNFTlQoYmFja3NwYWNlX2lmX25vdF9icykpCiAJCWN1cnNvcl9sZWZ0ID0gYmFja3NwYWNlX2lmX25vdF9iczsKIAl9Ci0JLyogdmkgZG9lc24ndCB1c2UgImRvIiwgYnV0IGl0IGRvZXMgc2VlbXMgdG8gdXNlIG5sIChvciAnXG4nKSBpbnN0ZWFkICovCisJLyogdmkgZG9lc24ndCB1c2UgImRvIiwgYnV0IGl0IGRvZXMgc2VlbSB0byB1c2UgbmwgKG9yICdcbicpIGluc3RlYWQgKi8KIAlpZiAoV0FOVEVEKGN1cnNvcl9kb3duKSkgewogCSAgICBpZiAoUFJFU0VOVChsaW5lZmVlZF9pZl9ub3RfbGYpKQogCQljdXJzb3JfZG93biA9IGxpbmVmZWVkX2lmX25vdF9sZjsKIAkgICAgZWxzZSBpZiAobGluZWZlZWRfaXNfbmV3bGluZSAhPSAxKSB7CiAJCWlmIChuZXdfbGluZV9kZWxheSA+IDApIHsKLQkJICAgIHNwcmludGYoYnVmLCAiJXMkPCVkPiIsIENfTEYsIG5ld19saW5lX2RlbGF5KTsKKwkJICAgIF9uY19TUFJJTlRGKGJ1ZiwgX25jX1NMSU1JVChzaXplb2YoYnVmKSkKKwkJCQkiJXMkPCVkPiIsIENfTEYsIG5ld19saW5lX2RlbGF5KTsKIAkJICAgIGN1cnNvcl9kb3duID0gX25jX3NhdmVfc3RyKGJ1Zik7CiAJCX0gZWxzZQogCQkgICAgY3Vyc29yX2Rvd24gPSBfbmNfc2F2ZV9zdHIoQ19MRik7CkBAIC02ODQsNyArNjk0LDggQEAKIAkJY3Vyc29yX2Rvd24gPSBsaW5lZmVlZF9pZl9ub3RfbGY7CiAJICAgIGVsc2UgaWYgKGxpbmVmZWVkX2lzX25ld2xpbmUgIT0gMSkgewogCQlpZiAobmV3X2xpbmVfZGVsYXkgPiAwKSB7Ci0JCSAgICBzcHJpbnRmKGJ1ZiwgIiVzJDwlZD4iLCBDX0xGLCBuZXdfbGluZV9kZWxheSk7CisJCSAgICBfbmNfU1BSSU5URihidWYsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZikpCisJCQkJIiVzJDwlZD4iLCBDX0xGLCBuZXdfbGluZV9kZWxheSk7CiAJCSAgICBzY3JvbGxfZm9yd2FyZCA9IF9uY19zYXZlX3N0cihidWYpOwogCQl9IGVsc2UKIAkJICAgIHNjcm9sbF9mb3J3YXJkID0gX25jX3NhdmVfc3RyKENfTEYpOwpAQCAtNjkzLDcgKzcwNCw4IEBACiAJaWYgKFdBTlRFRChuZXdsaW5lKSkgewogCSAgICBpZiAobGluZWZlZWRfaXNfbmV3bGluZSA9PSAxKSB7CiAJCWlmIChuZXdfbGluZV9kZWxheSA+IDApIHsKLQkJICAgIHNwcmludGYoYnVmLCAiJXMkPCVkPiIsIENfTEYsIG5ld19saW5lX2RlbGF5KTsKKwkJICAgIF9uY19TUFJJTlRGKGJ1ZiwgX25jX1NMSU1JVChzaXplb2YoYnVmKSkKKwkJCQkiJXMkPCVkPiIsIENfTEYsIG5ld19saW5lX2RlbGF5KTsKIAkJICAgIG5ld2xpbmUgPSBfbmNfc2F2ZV9zdHIoYnVmKTsKIAkJfSBlbHNlCiAJCSAgICBuZXdsaW5lID0gX25jX3NhdmVfc3RyKENfTEYpOwpAQCAtNzM1LDcgKzc0Nyw4IEBACiAJICovCiAJaWYgKFdBTlRFRCh0YWIpKSB7CiAJICAgIGlmIChob3Jpem9udGFsX3RhYl9kZWxheSA+IDApIHsKLQkJc3ByaW50ZihidWYsICIlcyQ8JWQ+IiwgQ19IVCwgaG9yaXpvbnRhbF90YWJfZGVsYXkpOworCQlfbmNfU1BSSU5URihidWYsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZikpCisJCQkgICAgIiVzJDwlZD4iLCBDX0hULCBob3Jpem9udGFsX3RhYl9kZWxheSk7CiAJCXRhYiA9IF9uY19zYXZlX3N0cihidWYpOwogCSAgICB9IGVsc2UKIAkJdGFiID0gX25jX3NhdmVfc3RyKENfSFQpOwpAQCAtNzcyLDExICs3ODUsMTAgQEAKICAgICAgKiBpc24ndCBmcm9tIG15dGluZm8uLi4KICAgICAgKi8KICAgICBpZiAoUFJFU0VOVChvdGhlcl9ub25fZnVuY3Rpb25fa2V5cykpIHsKLQljaGFyICpiYXNlID0gb3RoZXJfbm9uX2Z1bmN0aW9uX2tleXM7CisJY2hhciAqYmFzZTsKIAljaGFyICpicCwgKmNwLCAqZHA7CiAJc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKmZyb21fcHRyOwogCXN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICp0b19wdHI7Ci0JYXNzb2MgY29uc3QgKmFwOwogCWNoYXIgYnVmMltNQVhfVEVSTUlORk9fTEVOR1RIXTsKIAlib29sIGZvdW5kaW07CiAKQEAgLTc4OCwxOCArODAwLDIyIEBACiAJZm9yIChiYXNlID0gb3RoZXJfbm9uX2Z1bmN0aW9uX2tleXM7CiAJICAgICAoY3AgPSBzdHJjaHIoYmFzZSwgJywnKSkgIT0gMDsKIAkgICAgIGJhc2UgPSBjcCArIDEpIHsKLQkgICAgc2l6ZV90IGxlbiA9IGNwIC0gYmFzZTsKKwkgICAgc2l6ZV90IGxlbiA9ICh1bnNpZ25lZCkgKGNwIC0gYmFzZSk7CisJICAgIHNpemVfdCBuOworCSAgICBhc3NvYyBjb25zdCAqYXAgPSAwOwogCi0JICAgIGZvciAoYXAgPSBrb194bGF0ZTsgYXAtPmZyb207IGFwKyspIHsKLQkJaWYgKGxlbiA9PSBzdHJsZW4oYXAtPmZyb20pCi0JCSAgICAmJiBzdHJuY21wKGFwLT5mcm9tLCBiYXNlLCBsZW4pID09IDApCisJICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0Yoa29feGxhdGUpOyArK24pIHsKKwkJaWYgKGxlbiA9PSBzdHJsZW4oa29feGxhdGVbbl0uZnJvbSkKKwkJICAgICYmIHN0cm5jbXAoa29feGxhdGVbbl0uZnJvbSwgYmFzZSwgbGVuKSA9PSAwKSB7CisJCSAgICBhcCA9IGtvX3hsYXRlICsgbjsKIAkJICAgIGJyZWFrOworCQl9CiAJICAgIH0KLQkgICAgaWYgKCEoYXAtPmZyb20gJiYgYXAtPnRvKSkgeworCSAgICBpZiAoYXAgPT0gMCkgewogCQlfbmNfd2FybmluZygidW5rbm93biBjYXBhYmlsaXR5IGAlLipzJyBpbiBrbyBzdHJpbmciLAogCQkJICAgIChpbnQpIGxlbiwgYmFzZSk7CiAJCWNvbnRpbnVlOwotCSAgICB9IGVsc2UgaWYgKGFwLT50byA9PSBDQU5DRUxMRURfU1RSSU5HKQkvKiBpZ25vcmUgaXQgKi8KKwkgICAgfSBlbHNlIGlmIChhcC0+dG9bMF0gPT0gJ1wwJykJLyogaWdub3JlIGl0ICovCiAJCWNvbnRpbnVlOwogCiAJICAgIC8qIG5vdyB3ZSBrbm93IHdlIGZvdW5kIGEgbWF0Y2ggaW4ga29fdGFibGUsIHNvLi4uICovCkBAIC04NDAsNyArODU2LDcgQEAKIAkJfSBlbHNlCiAJCSAgICAqZHArKyA9ICpicDsKIAkgICAgfQotCSAgICAqZHArKyA9ICdcMCc7CisJICAgICpkcCA9ICdcMCc7CiAKIAkgICAgdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gX25jX3NhdmVfc3RyKGJ1ZjIpOwogCX0KZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9yZWFkX2VudHJ5LmMKaW5kZXggYjRlYTYxYy4uODFmZGM0NiAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9yZWFkX2VudHJ5LmMKKysrIGIvbmN1cnNlcy90aW5mby9yZWFkX2VudHJ5LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MCwxMyArNDAsMTQgQEAKICNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KIAogI2luY2x1ZGUgPHRpYy5oPgotI2luY2x1ZGUgPHRlcm1fZW50cnkuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHJlYWRfZW50cnkuYyx2IDEuMTAyIDIwMDgvMDgvMDMgMTk6MzM6MDQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiByZWFkX2VudHJ5LmMsdiAxLjEyOSAyMDE1LzA2LzI3IDE2OjE2OjQwIHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgVFlQRV9DQUxMT0ModHlwZSxlbHRzKSB0eXBlQ2FsbG9jKHR5cGUsICh1bnNpZ25lZCkoZWx0cykpCiAKLSNpZiBVU0VfREFUQUJBU0UKKyNkZWZpbmUgTXlOdW1iZXIobikgKHNob3J0KSBMT1dfTVNCKG4pCisKKyNpZiBOQ1VSU0VTX1VTRV9EQVRBQkFTRQogc3RhdGljIHZvaWQKIGNvbnZlcnRfc2hvcnRzKGNoYXIgKmJ1Ziwgc2hvcnQgKk51bWJlcnMsIGludCBjb3VudCkKIHsKQEAgLTU3LDcgKzU4LDcgQEAKIAllbHNlIGlmIChJU19ORUcyKGJ1ZiArIDIgKiBpKSkKIAkgICAgTnVtYmVyc1tpXSA9IENBTkNFTExFRF9OVU1FUklDOwogCWVsc2UKLQkgICAgTnVtYmVyc1tpXSA9IExPV19NU0IoYnVmICsgMiAqIGkpOworCSAgICBOdW1iZXJzW2ldID0gTXlOdW1iZXIoYnVmICsgMiAqIGkpOwogCVRSKFRSQUNFX0RBVEFCQVNFLCAoImdldCBOdW1iZXJzWyVkXT0lZCIsIGksIE51bWJlcnNbaV0pKTsKICAgICB9CiB9CkBAIC03MywxMCArNzQsMTAgQEAKIAkgICAgU3RyaW5nc1tpXSA9IEFCU0VOVF9TVFJJTkc7CiAJfSBlbHNlIGlmIChJU19ORUcyKGJ1ZiArIDIgKiBpKSkgewogCSAgICBTdHJpbmdzW2ldID0gQ0FOQ0VMTEVEX1NUUklORzsKLQl9IGVsc2UgaWYgKChpbnQpIExPV19NU0IoYnVmICsgMiAqIGkpID4gc2l6ZSkgeworCX0gZWxzZSBpZiAoTXlOdW1iZXIoYnVmICsgMiAqIGkpID4gc2l6ZSkgewogCSAgICBTdHJpbmdzW2ldID0gQUJTRU5UX1NUUklORzsKIAl9IGVsc2UgewotCSAgICBTdHJpbmdzW2ldID0gKExPV19NU0IoYnVmICsgMiAqIGkpICsgdGFibGUpOworCSAgICBTdHJpbmdzW2ldID0gKE15TnVtYmVyKGJ1ZiArIDIgKiBpKSArIHRhYmxlKTsKIAkgICAgVFIoVFJBQ0VfREFUQUJBU0UsICgiU3RyaW5nc1slZF0gPSAlcyIsIGksIF9uY192aXNidWYoU3RyaW5nc1tpXSkpKTsKIAl9CiAKQEAgLTk5LDMxICsxMDAsODEgQEAKIAogICAgIGlmIChoYXZlID4gMCkgewogCWlmICgoaW50KSB3YW50ID4gaGF2ZSkKLQkgICAgd2FudCA9IGhhdmU7Ci0JbWVtY3B5KGRzdCwgc3JjICsgKm9mZnNldCwgd2FudCk7Ci0JKm9mZnNldCArPSB3YW50OworCSAgICB3YW50ID0gKHVuc2lnbmVkKSBoYXZlOworCW1lbWNweShkc3QsIHNyYyArICpvZmZzZXQsIChzaXplX3QpIHdhbnQpOworCSpvZmZzZXQgKz0gKGludCkgd2FudDsKICAgICB9IGVsc2UgewogCXdhbnQgPSAwOwogICAgIH0KICAgICByZXR1cm4gKGludCkgd2FudDsKIH0KIAotI2RlZmluZSBSZWFkKGJ1ZiwgY291bnQpIGZha2VfcmVhZChidWZmZXIsICZvZmZzZXQsIGxpbWl0LCBidWYsIGNvdW50KQorI2RlZmluZSBSZWFkKGJ1ZiwgY291bnQpIGZha2VfcmVhZChidWZmZXIsICZvZmZzZXQsIGxpbWl0LCAoY2hhciAqKSBidWYsICh1bnNpZ25lZCkgY291bnQpCiAKICNkZWZpbmUgcmVhZF9zaG9ydHMoYnVmLCBjb3VudCkgXAotCShSZWFkKGJ1ZiwgKHVuc2lnbmVkKSAoY291bnQpKjIpID09IChpbnQpIChjb3VudCkqMikKKwkoUmVhZChidWYsIChjb3VudCkqMikgPT0gKGludCkgKGNvdW50KSoyKQogCiAjZGVmaW5lIGV2ZW5fYm91bmRhcnkodmFsdWUpIFwKICAgICBpZiAoKHZhbHVlKSAlIDIgIT0gMCkgUmVhZChidWYsIDEpCisjZW5kaWYKIAorTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19pbml0X3Rlcm10eXBlKFRFUk1UWVBFICpjb25zdCB0cCkKK3sKKyAgICB1bnNpZ25lZCBpOworCisjaWYgTkNVUlNFU19YTkFNRVMKKyAgICB0cC0+bnVtX0Jvb2xlYW5zID0gQk9PTENPVU5UOworICAgIHRwLT5udW1fTnVtYmVycyA9IE5VTUNPVU5UOworICAgIHRwLT5udW1fU3RyaW5ncyA9IFNUUkNPVU5UOworICAgIHRwLT5leHRfQm9vbGVhbnMgPSAwOworICAgIHRwLT5leHRfTnVtYmVycyA9IDA7CisgICAgdHAtPmV4dF9TdHJpbmdzID0gMDsKKyNlbmRpZgorICAgIGlmICh0cC0+Qm9vbGVhbnMgPT0gMCkKKwlUWVBFX01BTExPQyhOQ1VSU0VTX1NCT09MLCBCT09MQ09VTlQsIHRwLT5Cb29sZWFucyk7CisgICAgaWYgKHRwLT5OdW1iZXJzID09IDApCisJVFlQRV9NQUxMT0Moc2hvcnQsIE5VTUNPVU5ULCB0cC0+TnVtYmVycyk7CisgICAgaWYgKHRwLT5TdHJpbmdzID09IDApCisJVFlQRV9NQUxMT0MoY2hhciAqLCBTVFJDT1VOVCwgdHAtPlN0cmluZ3MpOworCisgICAgZm9yX2VhY2hfYm9vbGVhbihpLCB0cCkKKwl0cC0+Qm9vbGVhbnNbaV0gPSBGQUxTRTsKKworICAgIGZvcl9lYWNoX251bWJlcihpLCB0cCkKKwl0cC0+TnVtYmVyc1tpXSA9IEFCU0VOVF9OVU1FUklDOworCisgICAgZm9yX2VhY2hfc3RyaW5nKGksIHRwKQorCXRwLT5TdHJpbmdzW2ldID0gQUJTRU5UX1NUUklORzsKK30KKworI2lmIE5DVVJTRVNfVVNFX0RBVEFCQVNFCisjaWYgTkNVUlNFU19YTkFNRVMKK3N0YXRpYyBib29sCit2YWxpZF9zaG9ydHMoY2hhciAqYnVmZmVyLCBpbnQgbGltaXQpCit7CisgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKKyAgICBpbnQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgbGltaXQ7ICsrbikgeworCWlmIChNeU51bWJlcihidWZmZXIgKyAobiAqIDIpKSA+IDApIHsKKwkgICAgcmVzdWx0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKy8qCisgKiBSZXR1cm4gVEdFVEVOVF9ZRVMgaWYgcmVhZCwgVEdFVEVOVF9OTyBpZiBub3QgZm91bmQgb3IgZ2FyYmxlZC4KKyAqLwogTkNVUlNFU19FWFBPUlQoaW50KQogX25jX3JlYWRfdGVybXR5cGUoVEVSTVRZUEUgKnB0ciwgY2hhciAqYnVmZmVyLCBpbnQgbGltaXQpCi0vKiByZXR1cm4gMSBpZiByZWFkLCAwIGlmIG5vdCBmb3VuZCBvciBnYXJibGVkICovCiB7CiAgICAgaW50IG9mZnNldCA9IDA7CiAgICAgaW50IG5hbWVfc2l6ZSwgYm9vbF9jb3VudCwgbnVtX2NvdW50LCBzdHJfY291bnQsIHN0cl9zaXplOwogICAgIGludCBpOwotICAgIGNoYXIgYnVmW01BWF9FTlRSWV9TSVpFICsgMV07CisgICAgY2hhciBidWZbTUFYX0VOVFJZX1NJWkUgKyAyXTsKICAgICBjaGFyICpzdHJpbmdfdGFibGU7CiAgICAgdW5zaWduZWQgd2FudCwgaGF2ZTsKIApAQCAtMTM3LDExICsxODgsMTEgQEAKIAlyZXR1cm4gKFRHRVRFTlRfTk8pOwogICAgIH0KIAotICAgIG5hbWVfc2l6ZSA9IExPV19NU0IoYnVmICsgMik7Ci0gICAgYm9vbF9jb3VudCA9IExPV19NU0IoYnVmICsgNCk7Ci0gICAgbnVtX2NvdW50ID0gTE9XX01TQihidWYgKyA2KTsKLSAgICBzdHJfY291bnQgPSBMT1dfTVNCKGJ1ZiArIDgpOwotICAgIHN0cl9zaXplID0gTE9XX01TQihidWYgKyAxMCk7CisgICAgbmFtZV9zaXplID0gTXlOdW1iZXIoYnVmICsgMik7CisgICAgYm9vbF9jb3VudCA9IE15TnVtYmVyKGJ1ZiArIDQpOworICAgIG51bV9jb3VudCA9IE15TnVtYmVyKGJ1ZiArIDYpOworICAgIHN0cl9jb3VudCA9IE15TnVtYmVyKGJ1ZiArIDgpOworICAgIHN0cl9zaXplID0gTXlOdW1iZXIoYnVmICsgMTApOwogCiAgICAgVFIoVFJBQ0VfREFUQUJBU0UsCiAgICAgICAgKCJURVJNVFlQRSBuYW1lX3NpemU9JWQsIGJvb2w9JWQvJWQsIG51bT0lZC8lZCBzdHI9JWQvJWQoJWQpIiwKQEAgLTE1NSwxMCArMjA2LDEwIEBACiAJcmV0dXJuIChUR0VURU5UX05PKTsKICAgICB9CiAKLSAgICB3YW50ID0gc3RyX3NpemUgKyBuYW1lX3NpemUgKyAxOworICAgIHdhbnQgPSAodW5zaWduZWQpIChzdHJfc2l6ZSArIG5hbWVfc2l6ZSArIDEpOwogICAgIGlmIChzdHJfc2l6ZSkgewogCS8qIHRyeSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHN0cmluZyB0YWJsZSAqLwotCWlmIChzdHJfY291bnQgKiAyID49IChpbnQpIHNpemVvZihidWYpCisJaWYgKHN0cl9jb3VudCAqIDIgPj0gTUFYX0VOVFJZX1NJWkUKIAkgICAgfHwgKHN0cmluZ190YWJsZSA9IHR5cGVNYWxsb2MoY2hhciwgd2FudCkpID09IDApIHsKIAkgICAgcmV0dXJuIChUR0VURU5UX05PKTsKIAl9CkBAIC0xNzMsMTQgKzIyNCwxNCBAQAogICAgIHdhbnQgPSBtaW4oTUFYX05BTUVfU0laRSwgKHVuc2lnbmVkKSBuYW1lX3NpemUpOwogICAgIHB0ci0+c3RyX3RhYmxlID0gc3RyaW5nX3RhYmxlOwogICAgIHB0ci0+dGVybV9uYW1lcyA9IHN0cmluZ190YWJsZTsKLSAgICBpZiAoKGhhdmUgPSBSZWFkKHB0ci0+dGVybV9uYW1lcywgd2FudCkpICE9IHdhbnQpIHsKLQltZW1zZXQocHRyLT50ZXJtX25hbWVzICsgaGF2ZSwgMCwgd2FudCAtIGhhdmUpOworICAgIGlmICgoaGF2ZSA9ICh1bnNpZ25lZCkgUmVhZChwdHItPnRlcm1fbmFtZXMsIHdhbnQpKSAhPSB3YW50KSB7CisJbWVtc2V0KHB0ci0+dGVybV9uYW1lcyArIGhhdmUsIDAsIChzaXplX3QpICh3YW50IC0gaGF2ZSkpOwogICAgIH0KICAgICBwdHItPnRlcm1fbmFtZXNbd2FudF0gPSAnXDAnOwogICAgIHN0cmluZ190YWJsZSArPSAod2FudCArIDEpOwogCiAgICAgaWYgKGhhdmUgPiBNQVhfTkFNRV9TSVpFKQotCW9mZnNldCA9IChoYXZlIC0gTUFYX05BTUVfU0laRSk7CisJb2Zmc2V0ID0gKGludCkgKGhhdmUgLSBNQVhfTkFNRV9TSVpFKTsKIAogICAgIC8qIGdyYWIgdGhlIGJvb2xlYW5zICovCiAgICAgaWYgKChwdHItPkJvb2xlYW5zID0gVFlQRV9DQUxMT0MoTkNVUlNFU19TQk9PTCwKQEAgLTIwNCw4ICsyNTUsOSBAQAogICAgIH0KICAgICBjb252ZXJ0X3Nob3J0cyhidWYsIHB0ci0+TnVtYmVycywgbnVtX2NvdW50KTsKIAotICAgIGlmICgocHRyLT5TdHJpbmdzID0gVFlQRV9DQUxMT0MoY2hhciAqLCBtYXgoU1RSQ09VTlQsIHN0cl9jb3VudCkpKSA9PSAwKQotCSAgcmV0dXJuIChUR0VURU5UX05PKTsKKyAgICBpZiAoKHB0ci0+U3RyaW5ncyA9IFRZUEVfQ0FMTE9DKGNoYXIgKiwgbWF4KFNUUkNPVU5ULCBzdHJfY291bnQpKSkgPT0gMCkgeworCXJldHVybiAoVEdFVEVOVF9OTyk7CisgICAgfQogCiAgICAgaWYgKHN0cl9jb3VudCkgewogCS8qIGdyYWIgdGhlIHN0cmluZyBvZmZzZXRzICovCkBAIC0yMTMsOCArMjY1LDkgQEAKIAkgICAgcmV0dXJuIChUR0VURU5UX05PKTsKIAl9CiAJLyogZmluYWxseSwgZ3JhYiB0aGUgc3RyaW5nIHRhYmxlIGl0c2VsZiAqLwotCWlmIChSZWFkKHN0cmluZ190YWJsZSwgKHVuc2lnbmVkKSBzdHJfc2l6ZSkgIT0gc3RyX3NpemUpCisJaWYgKFJlYWQoc3RyaW5nX3RhYmxlLCAodW5zaWduZWQpIHN0cl9zaXplKSAhPSBzdHJfc2l6ZSkgewogCSAgICByZXR1cm4gKFRHRVRFTlRfTk8pOworCX0KIAljb252ZXJ0X3N0cmluZ3MoYnVmLCBwdHItPlN0cmluZ3MsIHN0cl9jb3VudCwgc3RyX3NpemUsIHN0cmluZ190YWJsZSk7CiAgICAgfQogI2lmIE5DVVJTRVNfWE5BTUVTCkBAIC0yMjgsMzIgKzI4MSwzMyBAQAogICAgICAqLwogICAgIGV2ZW5fYm91bmRhcnkoc3RyX3NpemUpOwogICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoIlJFQUQgZXh0ZW5kZWRfaGVhZGVyIEAlZCIsIG9mZnNldCkpOwotICAgIGlmIChfbmNfdXNlcl9kZWZpbmFibGUgJiYgcmVhZF9zaG9ydHMoYnVmLCA1KSkgewotCWludCBleHRfYm9vbF9jb3VudCA9IExPV19NU0IoYnVmICsgMCk7Ci0JaW50IGV4dF9udW1fY291bnQgPSBMT1dfTVNCKGJ1ZiArIDIpOwotCWludCBleHRfc3RyX2NvdW50ID0gTE9XX01TQihidWYgKyA0KTsKLQlpbnQgZXh0X3N0cl9zaXplID0gTE9XX01TQihidWYgKyA2KTsKLQlpbnQgZXh0X3N0cl9saW1pdCA9IExPV19NU0IoYnVmICsgOCk7Ci0JdW5zaWduZWQgbmVlZCA9IChleHRfYm9vbF9jb3VudCArIGV4dF9udW1fY291bnQgKyBleHRfc3RyX2NvdW50KTsKKyAgICBpZiAoX25jX3VzZXJfZGVmaW5hYmxlICYmIHJlYWRfc2hvcnRzKGJ1ZiwgNSkgJiYgdmFsaWRfc2hvcnRzKGJ1ZiwgNSkpIHsKKwlpbnQgZXh0X2Jvb2xfY291bnQgPSBNeU51bWJlcihidWYgKyAwKTsKKwlpbnQgZXh0X251bV9jb3VudCA9IE15TnVtYmVyKGJ1ZiArIDIpOworCWludCBleHRfc3RyX2NvdW50ID0gTXlOdW1iZXIoYnVmICsgNCk7CisJaW50IGV4dF9zdHJfc2l6ZSA9IE15TnVtYmVyKGJ1ZiArIDYpOworCWludCBleHRfc3RyX2xpbWl0ID0gTXlOdW1iZXIoYnVmICsgOCk7CisJdW5zaWduZWQgbmVlZCA9ICh1bnNpZ25lZCkgKGV4dF9ib29sX2NvdW50ICsgZXh0X251bV9jb3VudCArIGV4dF9zdHJfY291bnQpOwogCWludCBiYXNlID0gMDsKIAotCWlmIChuZWVkID49IHNpemVvZihidWYpCi0JICAgIHx8IGV4dF9zdHJfc2l6ZSA+PSAoaW50KSBzaXplb2YoYnVmKQotCSAgICB8fCBleHRfc3RyX2xpbWl0ID49IChpbnQpIHNpemVvZihidWYpCisJaWYgKG5lZWQgPj0gKE1BWF9FTlRSWV9TSVpFIC8gMikKKwkgICAgfHwgZXh0X3N0cl9zaXplID49IE1BWF9FTlRSWV9TSVpFCisJICAgIHx8IGV4dF9zdHJfbGltaXQgPj0gTUFYX0VOVFJZX1NJWkUKIAkgICAgfHwgZXh0X2Jvb2xfY291bnQgPCAwCiAJICAgIHx8IGV4dF9udW1fY291bnQgPCAwCiAJICAgIHx8IGV4dF9zdHJfY291bnQgPCAwCiAJICAgIHx8IGV4dF9zdHJfc2l6ZSA8IDAKLQkgICAgfHwgZXh0X3N0cl9saW1pdCA8IDApCisJICAgIHx8IGV4dF9zdHJfbGltaXQgPCAwKSB7CiAJICAgIHJldHVybiAoVEdFVEVOVF9OTyk7CisJfQogCi0JcHRyLT5udW1fQm9vbGVhbnMgPSBCT09MQ09VTlQgKyBleHRfYm9vbF9jb3VudDsKLQlwdHItPm51bV9OdW1iZXJzID0gTlVNQ09VTlQgKyBleHRfbnVtX2NvdW50OwotCXB0ci0+bnVtX1N0cmluZ3MgPSBTVFJDT1VOVCArIGV4dF9zdHJfY291bnQ7CisJcHRyLT5udW1fQm9vbGVhbnMgPSBVU2hvcnQoQk9PTENPVU5UICsgZXh0X2Jvb2xfY291bnQpOworCXB0ci0+bnVtX051bWJlcnMgPSBVU2hvcnQoTlVNQ09VTlQgKyBleHRfbnVtX2NvdW50KTsKKwlwdHItPm51bV9TdHJpbmdzID0gVVNob3J0KFNUUkNPVU5UICsgZXh0X3N0cl9jb3VudCk7CiAKLQlwdHItPkJvb2xlYW5zID0gdHlwZVJlYWxsb2MoTkNVUlNFU19TQk9PTCwgcHRyLT5udW1fQm9vbGVhbnMsIHB0ci0+Qm9vbGVhbnMpOwotCXB0ci0+TnVtYmVycyA9IHR5cGVSZWFsbG9jKHNob3J0LCBwdHItPm51bV9OdW1iZXJzLCBwdHItPk51bWJlcnMpOwotCXB0ci0+U3RyaW5ncyA9IHR5cGVSZWFsbG9jKGNoYXIgKiwgcHRyLT5udW1fU3RyaW5ncywgcHRyLT5TdHJpbmdzKTsKKwlUWVBFX1JFQUxMT0MoTkNVUlNFU19TQk9PTCwgcHRyLT5udW1fQm9vbGVhbnMsIHB0ci0+Qm9vbGVhbnMpOworCVRZUEVfUkVBTExPQyhzaG9ydCwgcHRyLT5udW1fTnVtYmVycywgcHRyLT5OdW1iZXJzKTsKKwlUWVBFX1JFQUxMT0MoY2hhciAqLCBwdHItPm51bV9TdHJpbmdzLCBwdHItPlN0cmluZ3MpOwogCiAJVFIoVFJBQ0VfREFUQUJBU0UsICgiZXh0ZW5kZWQgaGVhZGVyIGlzICVkLyVkLyVkKCVkOiVkKSIsCiAJCQkgICAgZXh0X2Jvb2xfY291bnQsIGV4dF9udW1fY291bnQsIGV4dF9zdHJfY291bnQsCkBAIC0yNjEsMzkgKzMxNSw0OCBAQAogCiAJVFIoVFJBQ0VfREFUQUJBU0UsICgiUkVBRCAlZCBleHRlbmRlZC1ib29sZWFucyBAJWQiLAogCQkJICAgIGV4dF9ib29sX2NvdW50LCBvZmZzZXQpKTsKLQlpZiAoKHB0ci0+ZXh0X0Jvb2xlYW5zID0gZXh0X2Jvb2xfY291bnQpICE9IDApIHsKKwlpZiAoKHB0ci0+ZXh0X0Jvb2xlYW5zID0gVVNob3J0KGV4dF9ib29sX2NvdW50KSkgIT0gMCkgewogCSAgICBpZiAoUmVhZChwdHItPkJvb2xlYW5zICsgQk9PTENPVU5ULCAodW5zaWduZWQpCi0JCSAgICAgZXh0X2Jvb2xfY291bnQpICE9IGV4dF9ib29sX2NvdW50KQorCQkgICAgIGV4dF9ib29sX2NvdW50KSAhPSBleHRfYm9vbF9jb3VudCkgewogCQlyZXR1cm4gKFRHRVRFTlRfTk8pOworCSAgICB9CiAJfQogCWV2ZW5fYm91bmRhcnkoZXh0X2Jvb2xfY291bnQpOwogCiAJVFIoVFJBQ0VfREFUQUJBU0UsICgiUkVBRCAlZCBleHRlbmRlZC1udW1iZXJzIEAlZCIsCiAJCQkgICAgZXh0X251bV9jb3VudCwgb2Zmc2V0KSk7Ci0JaWYgKChwdHItPmV4dF9OdW1iZXJzID0gZXh0X251bV9jb3VudCkgIT0gMCkgewotCSAgICBpZiAoIXJlYWRfc2hvcnRzKGJ1ZiwgZXh0X251bV9jb3VudCkpCisJaWYgKChwdHItPmV4dF9OdW1iZXJzID0gVVNob3J0KGV4dF9udW1fY291bnQpKSAhPSAwKSB7CisJICAgIGlmICghcmVhZF9zaG9ydHMoYnVmLCBleHRfbnVtX2NvdW50KSkgewogCQlyZXR1cm4gKFRHRVRFTlRfTk8pOworCSAgICB9CiAJICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoIkJlZm9yZSBjb252ZXJ0aW5nIGV4dGVuZGVkLW51bWJlcnMiKSk7CiAJICAgIGNvbnZlcnRfc2hvcnRzKGJ1ZiwgcHRyLT5OdW1iZXJzICsgTlVNQ09VTlQsIGV4dF9udW1fY291bnQpOwogCX0KIAogCVRSKFRSQUNFX0RBVEFCQVNFLCAoIlJFQUQgZXh0ZW5kZWQtb2Zmc2V0cyBAJWQiLCBvZmZzZXQpKTsKLQlpZiAoKGV4dF9zdHJfY291bnQgfHwgbmVlZCkKLQkgICAgJiYgIXJlYWRfc2hvcnRzKGJ1ZiwgZXh0X3N0cl9jb3VudCArIG5lZWQpKQorCWlmICgodW5zaWduZWQpIChleHRfc3RyX2NvdW50ICsgKGludCkgbmVlZCkgPj0gKE1BWF9FTlRSWV9TSVpFIC8gMikpIHsKIAkgICAgcmV0dXJuIChUR0VURU5UX05PKTsKKwl9CisJaWYgKChleHRfc3RyX2NvdW50IHx8IG5lZWQpCisJICAgICYmICFyZWFkX3Nob3J0cyhidWYsIGV4dF9zdHJfY291bnQgKyAoaW50KSBuZWVkKSkgeworCSAgICByZXR1cm4gKFRHRVRFTlRfTk8pOworCX0KIAogCVRSKFRSQUNFX0RBVEFCQVNFLCAoIlJFQUQgJWQgYnl0ZXMgb2YgZXh0ZW5kZWQtc3RyaW5ncyBAJWQiLAogCQkJICAgIGV4dF9zdHJfbGltaXQsIG9mZnNldCkpOwogCiAJaWYgKGV4dF9zdHJfbGltaXQpIHsKLQkgICAgaWYgKChwdHItPmV4dF9zdHJfdGFibGUgPSB0eXBlTWFsbG9jKGNoYXIsIGV4dF9zdHJfbGltaXQpKSA9PSAwKQotCQkgIHJldHVybiAoVEdFVEVOVF9OTyk7Ci0JICAgIGlmIChSZWFkKHB0ci0+ZXh0X3N0cl90YWJsZSwgKHVuc2lnbmVkKSBleHRfc3RyX2xpbWl0KSAhPSBleHRfc3RyX2xpbWl0KQorCSAgICBwdHItPmV4dF9zdHJfdGFibGUgPSB0eXBlTWFsbG9jKGNoYXIsIChzaXplX3QpIGV4dF9zdHJfbGltaXQpOworCSAgICBpZiAocHRyLT5leHRfc3RyX3RhYmxlID09IDApIHsKIAkJcmV0dXJuIChUR0VURU5UX05PKTsKKwkgICAgfQorCSAgICBpZiAoUmVhZChwdHItPmV4dF9zdHJfdGFibGUsICh1bnNpZ25lZCkgZXh0X3N0cl9saW1pdCkgIT0gZXh0X3N0cl9saW1pdCkgeworCQlyZXR1cm4gKFRHRVRFTlRfTk8pOworCSAgICB9CiAJICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoImZpcnN0IGV4dGVuZGVkLXN0cmluZyBpcyAlcyIsIF9uY192aXNidWYocHRyLT5leHRfc3RyX3RhYmxlKSkpOwogCX0KIAotCWlmICgocHRyLT5leHRfU3RyaW5ncyA9IGV4dF9zdHJfY291bnQpICE9IDApIHsKKwlpZiAoKHB0ci0+ZXh0X1N0cmluZ3MgPSBVU2hvcnQoZXh0X3N0cl9jb3VudCkpICE9IDApIHsKIAkgICAgVFIoVFJBQ0VfREFUQUJBU0UsCiAJICAgICAgICgiQmVmb3JlIGNvbXB1dGluZyBleHRlbmRlZC1zdHJpbmcgY2FwYWJpbGl0aWVzIHN0cl9jb3VudD0lZCwgZXh0X3N0cl9jb3VudD0lZCIsCiAJCXN0cl9jb3VudCwgZXh0X3N0cl9jb3VudCkpOwpAQCAtMzA1LDcgKzM2OCw3IEBACiAJCQkJICAgIF9uY192aXNidWYocHRyLT5TdHJpbmdzW2kgKyBzdHJfY291bnRdKSkpOwogCQlwdHItPlN0cmluZ3NbaSArIFNUUkNPVU5UXSA9IHB0ci0+U3RyaW5nc1tpICsgc3RyX2NvdW50XTsKIAkJaWYgKFZBTElEX1NUUklORyhwdHItPlN0cmluZ3NbaSArIFNUUkNPVU5UXSkpCi0JCSAgICBiYXNlICs9IChzdHJsZW4ocHRyLT5TdHJpbmdzW2kgKyBTVFJDT1VOVF0pICsgMSk7CisJCSAgICBiYXNlICs9IChpbnQpIChzdHJsZW4ocHRyLT5TdHJpbmdzW2kgKyBTVFJDT1VOVF0pICsgMSk7CiAJCVRSKFRSQUNFX0RBVEFCQVNFLCAoIi4uLiB0byAgICBbJWRdICVzIiwKIAkJCQkgICAgaSArIFNUUkNPVU5ULAogCQkJCSAgICBfbmNfdmlzYnVmKHB0ci0+U3RyaW5nc1tpICsgU1RSQ09VTlRdKSkpOwpAQCAtMzEzLDEwICszNzYsMTIgQEAKIAl9CiAKIAlpZiAobmVlZCkgewotCSAgICBpZiAoZXh0X3N0cl9jb3VudCA+PSAoTUFYX0VOVFJZX1NJWkUgKiAyKSkKLQkJICByZXR1cm4gKFRHRVRFTlRfTk8pOwotCSAgICBpZiAoKHB0ci0+ZXh0X05hbWVzID0gVFlQRV9DQUxMT0MoY2hhciAqLCBuZWVkKSkgPT0gMCkKLQkJICByZXR1cm4gKFRHRVRFTlRfTk8pOworCSAgICBpZiAoZXh0X3N0cl9jb3VudCA+PSAoTUFYX0VOVFJZX1NJWkUgLyAyKSkgeworCQlyZXR1cm4gKFRHRVRFTlRfTk8pOworCSAgICB9CisJICAgIGlmICgocHRyLT5leHRfTmFtZXMgPSBUWVBFX0NBTExPQyhjaGFyICosIG5lZWQpKSA9PSAwKSB7CisJCXJldHVybiAoVEdFVEVOVF9OTyk7CisJICAgIH0KIAkgICAgVFIoVFJBQ0VfREFUQUJBU0UsCiAJICAgICAgICgiZXh0X05BTUVTIHN0YXJ0aW5nIEAlZCBpbiBleHRlbmRlZF9zdHJpbmdzLCBmaXJzdCA9ICVzIiwKIAkJYmFzZSwgX25jX3Zpc2J1ZihwdHItPmV4dF9zdHJfdGFibGUgKyBiYXNlKSkpOwpAQCAtMzI2LDE3ICszOTEsMTggQEAKIAkJCSAgICBleHRfc3RyX2xpbWl0LCBwdHItPmV4dF9zdHJfdGFibGUgKyBiYXNlKTsKIAl9CiAKLQlUKCgiLi4uZG9uZSByZWFkaW5nIHRlcm1pbmZvIGJvb2wgJWQoJWQpIG51bSAlZCglZCkgc3RyICVkKCVkKSIsCi0JICAgcHRyLT5udW1fQm9vbGVhbnMsIHB0ci0+ZXh0X0Jvb2xlYW5zLAotCSAgIHB0ci0+bnVtX051bWJlcnMsIHB0ci0+ZXh0X051bWJlcnMsCi0JICAgcHRyLT5udW1fU3RyaW5ncywgcHRyLT5leHRfU3RyaW5ncykpOworCVRSKFRSQUNFX0RBVEFCQVNFLAorCSAgICgiLi4uZG9uZSByZWFkaW5nIHRlcm1pbmZvIGJvb2wgJWQoJWQpIG51bSAlZCglZCkgc3RyICVkKCVkKSIsCisJICAgIHB0ci0+bnVtX0Jvb2xlYW5zLCBwdHItPmV4dF9Cb29sZWFucywKKwkgICAgcHRyLT5udW1fTnVtYmVycywgcHRyLT5leHRfTnVtYmVycywKKwkgICAgcHRyLT5udW1fU3RyaW5ncywgcHRyLT5leHRfU3RyaW5ncykpOwogCiAJVFIoVFJBQ0VfREFUQUJBU0UsICgiZXh0ZW5kOiBudW1fQm9vbGVhbnM6JWQiLCBwdHItPm51bV9Cb29sZWFucykpOwogICAgIH0gZWxzZQogI2VuZGlmIC8qIE5DVVJTRVNfWE5BTUVTICovCiAgICAgewotCVQoKCIuLi5kb25lIHJlYWRpbmcgdGVybWluZm8gYm9vbCAlZCBudW0gJWQgc3RyICVkIiwKLQkgICBib29sX2NvdW50LCBudW1fY291bnQsIHN0cl9jb3VudCkpOworCVRSKFRSQUNFX0RBVEFCQVNFLCAoIi4uLmRvbmUgcmVhZGluZyB0ZXJtaW5mbyBib29sICVkIG51bSAlZCBzdHIgJWQiLAorCQkJICAgIGJvb2xfY291bnQsIG51bV9jb3VudCwgc3RyX2NvdW50KSk7CiAjaWYgTkNVUlNFU19YTkFNRVMKIAlUUihUUkFDRV9EQVRBQkFTRSwgKCJub3JtYWw6IG51bV9Cb29sZWFuczolZCIsIHB0ci0+bnVtX0Jvb2xlYW5zKSk7CiAjZW5kaWYKQEAgLTM2NCwzMCArNDMwLDg0IEBACiBfbmNfcmVhZF9maWxlX2VudHJ5KGNvbnN0IGNoYXIgKmNvbnN0IGZpbGVuYW1lLCBURVJNVFlQRSAqcHRyKQogLyogcmV0dXJuIDEgaWYgcmVhZCwgMCBpZiBub3QgZm91bmQgb3IgZ2FyYmxlZCAqLwogewotICAgIGludCBjb2RlLCBmZCA9IC0xOworICAgIEZJTEUgKmZwID0gMDsKKyAgICBpbnQgY29kZTsKICAgICBpbnQgbGltaXQ7CiAgICAgY2hhciBidWZmZXJbTUFYX0VOVFJZX1NJWkUgKyAxXTsKIAogICAgIGlmIChfbmNfYWNjZXNzKGZpbGVuYW1lLCBSX09LKSA8IDAKLQl8fCAoZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSB8IE9fQklOQVJZKSkgPCAwKSB7Ci0JVCgoImNhbm5vdCBvcGVuIHRlcm1pbmZvICVzIChlcnJubz0lZCkiLCBmaWxlbmFtZSwgZXJybm8pKTsKKwl8fCAoZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IDApIHsKKwlUUihUUkFDRV9EQVRBQkFTRSwgKCJjYW5ub3Qgb3BlbiB0ZXJtaW5mbyAlcyAoZXJybm89JWQpIiwgZmlsZW5hbWUsIGVycm5vKSk7CiAJY29kZSA9IFRHRVRFTlRfTk87CiAgICAgfSBlbHNlIHsKLQlpZiAoKGxpbWl0ID0gcmVhZChmZCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpID4gMCkgeworCWlmICgobGltaXQgPSAoaW50KSBmcmVhZChidWZmZXIsIHNpemVvZihjaGFyKSwgc2l6ZW9mKGJ1ZmZlciksIGZwKSkKKwkgICAgPiAwKSB7CiAKLQkgICAgVCgoInJlYWQgdGVybWluZm8gJXMiLCBmaWxlbmFtZSkpOworCSAgICBUUihUUkFDRV9EQVRBQkFTRSwgKCJyZWFkIHRlcm1pbmZvICVzIiwgZmlsZW5hbWUpKTsKIAkgICAgaWYgKChjb2RlID0gX25jX3JlYWRfdGVybXR5cGUocHRyLCBidWZmZXIsIGxpbWl0KSkgPT0gVEdFVEVOVF9OTykgewogCQlfbmNfZnJlZV90ZXJtdHlwZShwdHIpOwogCSAgICB9CiAJfSBlbHNlIHsKIAkgICAgY29kZSA9IFRHRVRFTlRfTk87CiAJfQotCWNsb3NlKGZkKTsKKwlmY2xvc2UoZnApOwogICAgIH0KIAogICAgIHJldHVybiAoY29kZSk7CiB9CiAKKyNpZiBVU0VfSEFTSEVEX0RCCisvKgorICogUmV0dXJuIGlmIGlmIHdlIGNhbiBidWlsZCB0aGUgZmlsZW5hbWUgb2YgYSAiLmRiIiBmaWxlLgorICovCitzdGF0aWMgYm9vbAorbWFrZV9kYl9maWxlbmFtZShjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbGltaXQsIGNvbnN0IGNoYXIgKmNvbnN0IHBhdGgpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc3VmZml4W10gPSBEQk1fU1VGRklYOworCisgICAgc2l6ZV90IGxlbnMgPSBzaXplb2Yoc3VmZml4KSAtIDE7CisgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4ocGF0aCk7CisgICAgc2l6ZV90IHRlc3QgPSBsZW5zICsgc2l6ZTsKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaWYgKHRlc3QgPCBsaW1pdCkgeworCWlmIChzaXplID49IGxlbnMKKwkgICAgJiYgIXN0cmNtcChwYXRoICsgc2l6ZSAtIGxlbnMsIHN1ZmZpeCkpCisJICAgIF9uY19TVFJDUFkoZmlsZW5hbWUsIHBhdGgsIGxpbWl0KTsKKwllbHNlCisJICAgIF9uY19TUFJJTlRGKGZpbGVuYW1lLCBfbmNfU0xJTUlUKGxpbWl0KSAiJXMlcyIsIHBhdGgsIHN1ZmZpeCk7CisJcmVzdWx0ID0gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisvKgorICogUmV0dXJuIHRydWUgaWYgd2UgY2FuIGJ1aWxkIHRoZSBuYW1lIG9mIGEgZmlsZXN5c3RlbSBlbnRyeS4KKyAqLworc3RhdGljIGJvb2wKK21ha2VfZGlyX2ZpbGVuYW1lKGNoYXIgKmZpbGVuYW1lLAorCQkgIHVuc2lnbmVkIGxpbWl0LAorCQkgIGNvbnN0IGNoYXIgKmNvbnN0IHBhdGgsCisJCSAgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUAorICAgIGlmIChfbmNfaXNfZGlyX3BhdGgocGF0aCkpCisjZW5kaWYKKyAgICB7CisJdW5zaWduZWQgbmVlZCA9ICh1bnNpZ25lZCkgKExFQUZfTEVOICsgMyArIHN0cmxlbihwYXRoKSArIHN0cmxlbihuYW1lKSk7CisKKwlpZiAobmVlZCA8PSBsaW1pdCkgeworCSAgICBfbmNfU1BSSU5URihmaWxlbmFtZSwgX25jX1NMSU1JVChsaW1pdCkKKwkJCSIlcy8iIExFQUZfRk1UICIvJXMiLCBwYXRoLCAqbmFtZSwgbmFtZSk7CisJICAgIHJlc3VsdCA9IFRSVUU7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogQnVpbGQgYSB0ZXJtaW5mbyBwYXRobmFtZSBhbmQgdHJ5IHRvIHJlYWQgdGhlIGRhdGEuICBSZXR1cm5zIFRHRVRFTlRfWUVTIG9uCiAgKiBzdWNjZXNzLCBUR0VURU5UX05PIG9uIGZhaWx1cmUuCkBAIC0zOTksMTA3ICs1MTksODIgQEAKIAkJICAgY29uc3QgY2hhciAqbmFtZSwKIAkJICAgVEVSTVRZUEUgKmNvbnN0IHRwKQogewotICAgIGludCByZXN1bHQgPSBUR0VURU5UX05POworICAgIGludCBjb2RlID0gVEdFVEVOVF9OTzsKIAotICAgIC8qCi0gICAgICogSWYgd2UgYXJlIGxvb2tpbmcgaW4gYSBkaXJlY3RvcnksIGFzc3VtZSB0aGUgZW50cnkgaXMgYSBmaWxlIHVuZGVyIHRoYXQsCi0gICAgICogYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgcnVsZXMuCi0gICAgICoKLSAgICAgKiBGSVhNRSAtIGFkZCBjYXNlbGVzcy1maWxlbmFtZSBmaXh1cC4KLSAgICAgKi8KLSAgICBpZiAoX25jX2lzX2Rpcl9wYXRoKHBhdGgpKSB7Ci0JdW5zaWduZWQgbmVlZCA9IDQgKyBzdHJsZW4ocGF0aCkgKyBzdHJsZW4obmFtZSk7Ci0KLQlpZiAobmVlZCA8PSBsaW1pdCkgewotCSAgICAodm9pZCkgc3ByaW50ZihmaWxlbmFtZSwgIiVzLyIgTEVBRl9GTVQgIi8lcyIsIHBhdGgsICpuYW1lLCBuYW1lKTsKLQkgICAgcmVzdWx0ID0gX25jX3JlYWRfZmlsZV9lbnRyeShmaWxlbmFtZSwgdHApOwotCX0KLSAgICB9CiAjaWYgVVNFX0hBU0hFRF9EQgotICAgIGVsc2UgewotCXN0YXRpYyBjb25zdCBjaGFyIHN1ZmZpeFtdID0gREJNX1NVRkZJWDsKLQlEQiAqY2FwZGJwOwotCXVuc2lnbmVkIGxlbnMgPSBzaXplb2Yoc3VmZml4KSAtIDE7Ci0JdW5zaWduZWQgc2l6ZSA9IHN0cmxlbihwYXRoKTsKLQl1bnNpZ25lZCBuZWVkID0gbGVucyArIHNpemU7CisgICAgREIgKmNhcGRicDsKIAotCWlmIChuZWVkIDw9IGxpbWl0KSB7Ci0JICAgIGlmIChzaXplID49IGxlbnMKLQkJJiYgIXN0cmNtcChwYXRoICsgc2l6ZSAtIGxlbnMsIHN1ZmZpeCkpCi0JCSh2b2lkKSBzdHJjcHkoZmlsZW5hbWUsIHBhdGgpOwotCSAgICBlbHNlCi0JCSh2b2lkKSBzcHJpbnRmKGZpbGVuYW1lLCAiJXMlcyIsIHBhdGgsIHN1ZmZpeCk7CisgICAgaWYgKG1ha2VfZGJfZmlsZW5hbWUoZmlsZW5hbWUsIGxpbWl0LCBwYXRoKQorCSYmIChjYXBkYnAgPSBfbmNfZGJfb3BlbihmaWxlbmFtZSwgRkFMU0UpKSAhPSAwKSB7CisKKwlEQlQga2V5LCBkYXRhOworCWludCByZWNjbnQgPSAwOworCWNoYXIgKnNhdmUgPSBzdHJkdXAobmFtZSk7CisKKwltZW1zZXQoJmtleSwgMCwgc2l6ZW9mKGtleSkpOworCWtleS5kYXRhID0gc2F2ZTsKKwlrZXkuc2l6ZSA9IHN0cmxlbihzYXZlKTsKKworCS8qCisJICogVGhpcyBsb29rdXAgY291bGQgcmV0dXJuIHRlcm1jYXAgZGF0YSwgd2hpY2ggd2UgZG8gbm90IHdhbnQuICBXZSBhcmUKKwkgKiBsb29raW5nIGZvciBjb21waWxlZCAoYmluYXJ5KSB0ZXJtaW5mbyBkYXRhLgorCSAqCisJICogY2dldGVudCB1c2VzIGEgdHdvLWxldmVsIGxvb2t1cC4gIE9uIHRoZSBmaXJzdCBpdCB1c2VzIHRoZSBnaXZlbgorCSAqIG5hbWUgdG8gcmV0dXJuIGEgcmVjb3JkIGNvbnRhaW5pbmcgb25seSB0aGUgYWxpYXNlcyBmb3IgYW4gZW50cnkuIAorCSAqIE9uIHRoZSBzZWNvbmQgKHVzaW5nIHRoYXQgbGlzdCBvZiBhbGlhc2VzIGFzIGEga2V5KSwgaXQgcmV0dXJucyB0aGUKKwkgKiBjb250ZW50IG9mIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4gIFdlIGV4cGVjdCBzZWNvbmQgbG9va3VwIHRvCisJICogcmV0dXJuIGRhdGEgYmVnaW5uaW5nIHdpdGggdGhlIHNhbWUgc2V0IG9mIGFsaWFzZXMuCisJICoKKwkgKiBGb3IgY29tcGlsZWQgdGVybWluZm8sIHRoZSBsaXN0IG9mIGFsaWFzZXMgaW4gdGhlIHNlY29uZCBjYXNlIHdpbGwKKwkgKiBiZSBudWxsLXRlcm1pbmF0ZWQuICBBIHRlcm1jYXAgZW50cnkgd2lsbCBub3QgYmUsIGFuZCB3aWxsIHJ1biBvbgorCSAqIGludG8gdGhlIGRlc2NyaXB0aW9uLiAgU28gd2UgY2FuIGVhc2lseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28KKwkgKiAoc291cmNlL2JpbmFyeSkgYnkgY2hlY2tpbmcgdGhlIGxlbmd0aHMuCisJICovCisJd2hpbGUgKF9uY19kYl9nZXQoY2FwZGJwLCAma2V5LCAmZGF0YSkgPT0gMCkgeworCSAgICBpbnQgdXNlZCA9IChpbnQpIGRhdGEuc2l6ZSAtIDE7CisJICAgIGNoYXIgKmhhdmUgPSAoY2hhciAqKSBkYXRhLmRhdGE7CisKKwkgICAgaWYgKCpoYXZlKysgPT0gMCkgeworCQlpZiAoZGF0YS5zaXplID4ga2V5LnNpemUKKwkJICAgICYmIElTX1RJQ19NQUdJQyhoYXZlKSkgeworCQkgICAgY29kZSA9IF9uY19yZWFkX3Rlcm10eXBlKHRwLCBoYXZlLCB1c2VkKTsKKwkJICAgIGlmIChjb2RlID09IFRHRVRFTlRfTk8pIHsKKwkJCV9uY19mcmVlX3Rlcm10eXBlKHRwKTsKKwkJICAgIH0KKwkJfQorCQlicmVhazsKKwkgICAgfQogCiAJICAgIC8qCi0JICAgICAqIEl0IHdvdWxkIGJlIG5pY2UgdG8gb3B0aW1pemUgdGhlIGRib3Blbi9jbG9zZSBhY3Rpdml0eSwgYXMKLQkgICAgICogZG9uZSBpbiB0aGUgY2dldGVudCBpbXBsZW1lbnRhdGlvbiBmb3IgdGM9IGNsYXVzZXMuICBIb3dldmVyLAotCSAgICAgKiBzaW5jZSB3ZSBzdXBwb3J0IG11bHRpcGxlIGRhdGFiYXNlIGxvY2F0aW9ucywgd2UgY2Fubm90IGRvCi0JICAgICAqIHRoYXQuCisJICAgICAqIEp1c3QgaW4gY2FzZSB3ZSBoYXZlIGEgY29ycnVwdCBkYXRhYmFzZSwgZG8gbm90IHdhc3RlIHRpbWUgd2l0aAorCSAgICAgKiBpdC4KIAkgICAgICovCi0JICAgIGlmICgoY2FwZGJwID0gX25jX2RiX29wZW4oZmlsZW5hbWUsIEZBTFNFKSkgIT0gMCkgewotCQlEQlQga2V5LCBkYXRhOwotCQlpbnQgcmVjY250ID0gMDsKLQkJY2hhciAqc2F2ZSA9IHN0cmR1cChuYW1lKTsKKwkgICAgaWYgKCsrcmVjY250ID49IDMpCisJCWJyZWFrOwogCi0JCW1lbXNldCgma2V5LCAwLCBzaXplb2Yoa2V5KSk7Ci0JCWtleS5kYXRhID0gc2F2ZTsKLQkJa2V5LnNpemUgPSBzdHJsZW4oc2F2ZSk7Ci0KLQkJLyoKLQkJICogVGhpcyBsb29rdXAgY291bGQgcmV0dXJuIHRlcm1jYXAgZGF0YSwgd2hpY2ggd2UgZG8gbm90IHdhbnQuIAotCQkgKiBXZSBhcmUgbG9va2luZyBmb3IgY29tcGlsZWQgKGJpbmFyeSkgdGVybWluZm8gZGF0YS4KLQkJICoKLQkJICogY2dldGVudCB1c2VzIGEgdHdvLWxldmVsIGxvb2t1cC4gIE9uIHRoZSBmaXJzdCBpdCB1c2VzIHRoZQotCQkgKiBnaXZlbiBuYW1lIHRvIHJldHVybiBhIHJlY29yZCBjb250YWluaW5nIG9ubHkgdGhlIGFsaWFzZXMKLQkJICogZm9yIGFuIGVudHJ5LiAgT24gdGhlIHNlY29uZCAodXNpbmcgdGhhdCBsaXN0IG9mIGFsaWFzZXMgYXMKLQkJICogYSBrZXkpLCBpdCByZXR1cm5zIHRoZSBjb250ZW50IG9mIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbi4gCi0JCSAqIFdlIGV4cGVjdCBzZWNvbmQgbG9va3VwIHRvIHJldHVybiBkYXRhIGJlZ2lubmluZyB3aXRoIHRoZQotCQkgKiBzYW1lIHNldCBvZiBhbGlhc2VzLgotCQkgKgotCQkgKiBGb3IgY29tcGlsZWQgdGVybWluZm8sIHRoZSBsaXN0IG9mIGFsaWFzZXMgaW4gdGhlIHNlY29uZAotCQkgKiBjYXNlIHdpbGwgYmUgbnVsbC10ZXJtaW5hdGVkLiAgQSB0ZXJtY2FwIGVudHJ5IHdpbGwgbm90IGJlLAotCQkgKiBhbmQgd2lsbCBydW4gb24gaW50byB0aGUgZGVzY3JpcHRpb24uICBTbyB3ZSBjYW4gZWFzaWx5Ci0JCSAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3byAoc291cmNlL2JpbmFyeSkgYnkgY2hlY2tpbmcgdGhlCi0JCSAqIGxlbmd0aHMuCi0JCSAqLwotCQl3aGlsZSAoX25jX2RiX2dldChjYXBkYnAsICZrZXksICZkYXRhKSA9PSAwKSB7Ci0JCSAgICBpbnQgdXNlZCA9IGRhdGEuc2l6ZSAtIDE7Ci0JCSAgICBjaGFyICpoYXZlID0gKGNoYXIgKikgZGF0YS5kYXRhOwotCi0JCSAgICBpZiAoKmhhdmUrKyA9PSAwKSB7Ci0JCQlpZiAoZGF0YS5zaXplID4ga2V5LnNpemUKLQkJCSAgICAmJiBJU19USUNfTUFHSUMoaGF2ZSkpIHsKLQkJCSAgICByZXN1bHQgPSBfbmNfcmVhZF90ZXJtdHlwZSh0cCwgaGF2ZSwgdXNlZCk7Ci0JCQkgICAgaWYgKHJlc3VsdCA9PSBUR0VURU5UX05PKSB7Ci0JCQkJX25jX2ZyZWVfdGVybXR5cGUodHApOwotCQkJICAgIH0KLQkJCX0KLQkJCWJyZWFrOwotCQkgICAgfQotCi0JCSAgICAvKgotCQkgICAgICogSnVzdCBpbiBjYXNlIHdlIGhhdmUgYSBjb3JydXB0IGRhdGFiYXNlLCBkbyBub3Qgd2FzdGUKLQkJICAgICAqIHRpbWUgd2l0aCBpdC4KLQkJICAgICAqLwotCQkgICAgaWYgKCsrcmVjY250ID49IDMpCi0JCQlicmVhazsKLQotCQkgICAgLyoKLQkJICAgICAqIFByZXBhcmUgZm9yIHRoZSBzZWNvbmQgbGV2ZWwuCi0JCSAgICAgKi8KLQkJICAgIGtleS5kYXRhID0gaGF2ZTsKLQkJICAgIGtleS5zaXplID0gdXNlZDsKLQkJfQotCi0JCV9uY19kYl9jbG9zZShjYXBkYnApOwotCQlmcmVlKHNhdmUpOwotCSAgICB9CisJICAgIC8qCisJICAgICAqIFByZXBhcmUgZm9yIHRoZSBzZWNvbmQgbGV2ZWwuCisJICAgICAqLworCSAgICBrZXkuZGF0YSA9IGhhdmU7CisJICAgIGtleS5zaXplID0gdXNlZDsKIAl9CisKKwlmcmVlKHNhdmUpOworICAgIH0gZWxzZQkJCS8qIG1heSBiZSBlaXRoZXIgZmlsZXN5c3RlbSBvciBmbGF0IGZpbGUgKi8KKyNlbmRpZgorICAgIGlmIChtYWtlX2Rpcl9maWxlbmFtZShmaWxlbmFtZSwgbGltaXQsIHBhdGgsIG5hbWUpKSB7CisJY29kZSA9IF9uY19yZWFkX2ZpbGVfZW50cnkoZmlsZW5hbWUsIHRwKTsKKyAgICB9CisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUAorICAgIGVsc2UgaWYgKGNvZGUgIT0gVEdFVEVOVF9ZRVMpIHsKKwljb2RlID0gX25jX3JlYWRfdGVybWNhcF9lbnRyeShuYW1lLCB0cCk7CisJX25jX1NQUklOVEYoZmlsZW5hbWUsIF9uY19TTElNSVQoUEFUSF9NQVgpCisJCSAgICAiJS4qcyIsIFBBVEhfTUFYIC0gMSwgX25jX2dldF9zb3VyY2UoKSk7CiAgICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29kZTsKIH0KLSNlbmRpZiAvKiBVU0VfREFUQUJBU0UgKi8KKyNlbmRpZiAvKiBOQ1VSU0VTX1VTRV9EQVRBQkFTRSAqLwogCiAvKgogICoJX25jX3JlYWRfZW50cnkoY2hhciAqbmFtZSwgY2hhciAqZmlsZW5hbWUsIFRFUk1UWVBFICp0cCkKQEAgLTUxNSwzMCArNjEwLDM2IEBACiB7CiAgICAgaW50IGNvZGUgPSBUR0VURU5UX05POwogCisgICAgX25jX1NQUklOVEYoZmlsZW5hbWUsIF9uY19TTElNSVQoUEFUSF9NQVgpCisJCSIlLipzIiwgUEFUSF9NQVggLSAxLCBuYW1lKTsKKwogICAgIGlmIChzdHJsZW4obmFtZSkgPT0gMAogCXx8IHN0cmNtcChuYW1lLCAiLiIpID09IDAKIAl8fCBzdHJjbXAobmFtZSwgIi4uIikgPT0gMAogCXx8IF9uY19wYXRobGFzdChuYW1lKSAhPSAwCiAJfHwgc3RyY2hyKG5hbWUsIE5DVVJTRVNfUEFUSFNFUCkgIT0gMCkgewotCVQoKCJpbGxlZ2FsIG9yIG1pc3NpbmcgZW50cnkgbmFtZSAnJXMnIiwgbmFtZSkpOworCVRSKFRSQUNFX0RBVEFCQVNFLCAoImlsbGVnYWwgb3IgbWlzc2luZyBlbnRyeSBuYW1lICclcyciLCBuYW1lKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBVU0VfREFUQUJBU0UKLQlEQkRJUlMgc3RhdGUgPSBkYmRUSUM7Ci0JaW50IG9mZnNldCA9IDA7CisjaWYgTkNVUlNFU19VU0VfREFUQUJBU0UKKwlEQkRJUlMgc3RhdGU7CisJaW50IG9mZnNldDsKIAljb25zdCBjaGFyICpwYXRoOwogCisJX25jX2ZpcnN0X2RiKCZzdGF0ZSwgJm9mZnNldCk7CisJY29kZSA9IFRHRVRFTlRfRVJSOwogCXdoaWxlICgocGF0aCA9IF9uY19uZXh0X2RiKCZzdGF0ZSwgJm9mZnNldCkpICE9IDApIHsKKwkgICAgVFIoVFJBQ0VfREFUQUJBU0UsICgiX25jX3JlYWRfdGljX2VudHJ5IHBhdGg9JXMsIG5hbWU9JXMiLCBwYXRoLCBuYW1lKSk7CiAJICAgIGNvZGUgPSBfbmNfcmVhZF90aWNfZW50cnkoZmlsZW5hbWUsIFBBVEhfTUFYLCBwYXRoLCBuYW1lLCB0cCk7CiAJICAgIGlmIChjb2RlID09IFRHRVRFTlRfWUVTKSB7CiAJCV9uY19sYXN0X2RiKCk7CiAJCWJyZWFrOwogCSAgICB9CiAJfQotI2VuZGlmCi0jaWYgVVNFX1RFUk1DQVAKKyNlbGlmIE5DVVJTRVNfVVNFX1RFUk1DQVAKIAlpZiAoY29kZSAhPSBUR0VURU5UX1lFUykgewogCSAgICBjb2RlID0gX25jX3JlYWRfdGVybWNhcF9lbnRyeShuYW1lLCB0cCk7Ci0JICAgIHNwcmludGYoZmlsZW5hbWUsICIlLipzIiwgUEFUSF9NQVggLSAxLCBfbmNfZ2V0X3NvdXJjZSgpKTsKKwkgICAgX25jX1NQUklOVEYoZmlsZW5hbWUsIF9uY19TTElNSVQoUEFUSF9NQVgpCisJCQkiJS4qcyIsIFBBVEhfTUFYIC0gMSwgX25jX2dldF9zb3VyY2UoKSk7CiAJfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9yZWFkX3Rlcm1jYXAuYyBiL25jdXJzZXMvdGluZm8vcmVhZF90ZXJtY2FwLmMKaW5kZXggZDk0ZDFhNC4uNmJmYjIzYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby9yZWFkX3Rlcm1jYXAuYworKysgYi9uY3Vyc2VzL3RpbmZvL3JlYWRfdGVybWNhcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNTQsMTEgKzU0LDkgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx0aWMuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiByZWFkX3Rlcm1jYXAuYyx2IDEuNzEgMjAwNi8wNy8yOSAxMjowNjo1MSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHJlYWRfdGVybWNhcC5jLHYgMS44OSAyMDEzLzEyLzE1IDAwOjMyOjQzIHRvbSBFeHAgJCIpCiAKICNpZiAhUFVSRV9URVJNSU5GTwogCkBAIC03NSwxMCArNzMsMTkgQEAKIAogICAgIGlmICghdXNlX3Rlcm1pbmZvX3ZhcnMoKSB8fCAocmVzdWx0ID0gZ2V0ZW52KCJURVJNUEFUSCIpKSA9PSAwKQogCXJlc3VsdCA9IFRFUk1QQVRIOwotICAgIFQoKCJURVJNUEFUSCBpcyAlcyIsIHJlc3VsdCkpOworICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoIlRFUk1QQVRIIGlzICVzIiwgcmVzdWx0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIE5vdGU6CisgKiBnZXRjYXAoKSwgY2dldGVudCgpLCBldGMuLCBhcmUgQlNEIGZ1bmN0aW9ucy4gIEEgY29weSBvZiB0aG9zZSB3YXMgYWRkZWQgdG8KKyAqIHRoaXMgZmlsZSBpbiBOb3ZlbWJlciAxOTk1LCBkZXJpdmVkIGZyb20gdGhlIEJTRDQuNCBMaXRlIHNvdXJjZXMuCisgKgorICogVGhlIGluaXRpYWwgYWRhcHRhdGlvbiB1c2VzIDUxOCBsaW5lcyBmcm9tIHRoYXQgc291cmNlLgorICogVGhlIGN1cnJlbnQgc291cmNlIChpbiAyMDA5KSB1c2VzIDE4MyBsaW5lcyBvZiBCU0Q0LjQgTGl0ZSAoNDQxIGlnbm9yaW5nCisgKiB3aGl0ZXNwYWNlKS4KKyAqLwogI2lmIFVTRV9HRVRDQVAKIAogI2lmIEhBVkVfQlNEX0NHRVRFTlQKQEAgLTEwNywxMSArMTE0LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKLSAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCiAgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKICAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKQEAgLTE1OCw3ICsxNjEsNyBAQAogCXJldHVybiAoLTEpOwogICAgIH0KICAgICBnb3R0b3ByZWMgPSAwOwotICAgICh2b2lkKSBzdHJjcHkodG9wcmVjLCBlbnQpOworICAgIF9uY19TVFJDUFkodG9wcmVjLCBlbnQsIHRvcHJlY2xlbik7CiAgICAgcmV0dXJuICgwKTsKIH0KIApAQCAtMjkxLDcgKzI5NCw3IEBACiAJICAgIGVycm5vID0gRU5PTUVNOwogCSAgICByZXR1cm4gKFRDX1NZU19FUlIpOwogCX0KLQkodm9pZCkgc3RyY3B5KHJlY29yZCwgdG9wcmVjKTsKKwlfbmNfU1RSQ1BZKHJlY29yZCwgdG9wcmVjLCB0b3ByZWNsZW4gKyBCRlJBRyk7CiAJcnAgPSByZWNvcmQgKyB0b3ByZWNsZW4gKyAxOwogCXJfZW5kID0gcnAgKyBCRlJBRzsKIAljdXJyZW50ID0gaW5fYXJyYXk7CkBAIC0zODAsNyArMzgzLDE0IEBACiAJCQljID0gKmJwKys7CiAJCQlpZiAoYyA9PSAnXG4nKSB7CiAJCQkgICAgbGluZW5vKys7Ci0JCQkgICAgaWYgKHJwID09IHJlY29yZCB8fCAqKHJwIC0gMSkgIT0gJ1xcJykKKwkJCSAgICAvKgorCQkJICAgICAqIFVubGlrZSBCU0QgNC4zLCB0aGlzIGlnbm9yZXMgYSBiYWNrc2xhc2ggYXQgdGhlCisJCQkgICAgICogZW5kIG9mIGEgY29tbWVudC1saW5lLiAgVGhhdCBtYWtlcyBpdCBjb25zaXN0ZW50CisJCQkgICAgICogd2l0aCB0aGUgcmVzdCBvZiBuY3Vyc2VzIC1URAorCQkJICAgICAqLworCQkJICAgIGlmIChycCA9PSByZWNvcmQKKwkJCQl8fCAqcmVjb3JkID09ICcjJworCQkJCXx8ICoocnAgLSAxKSAhPSAnXFwnKQogCQkJCWJyZWFrOwogCQkJfQogCQkJKnJwKysgPSBjOwpAQCAtNDM4LDggKzQ0OCwxMCBAQAogCQlicmVhazsKIAl9CiAKLQlpZiAoIWZvdW5kaXQpCisJaWYgKCFmb3VuZGl0KSB7CisJICAgIGZyZWUocmVjb3JkKTsKIAkgICAgcmV0dXJuIChUQ19OT1RfRk9VTkQpOworCX0KICAgICB9CiAKICAgICAvKgpAQCAtNDUxLDcgKzQ2Myw3IEBACiAJcmVnaXN0ZXIgaW50IG5ld2lsZW47CiAJdW5zaWduZWQgaWxlbjsKIAlpbnQgZGlmZiwgaXJldCwgdGNsZW4sIG9saW5lOwotCWNoYXIgKmljYXAsICpzY2FuLCAqdGMsICp0Y3N0YXJ0LCAqdGNlbmQ7CisJY2hhciAqaWNhcCA9IDAsICpzY2FuLCAqdGMsICp0Y3N0YXJ0LCAqdGNlbmQ7CiAKIAkvKgogCSAqIExvb3AgaW52YXJpYW50czoKQEAgLTQ2NCw4ICs0NzYsOSBAQAogCXNjYW4gPSByZWNvcmQ7CiAJdGNfbm90X3Jlc29sdmVkID0gRkFMU0U7CiAJZm9yICg7OykgewotCSAgICBpZiAoKHRjID0gX25jX2NnZXRjYXAoc2NhbiwgInRjIiwgJz0nKSkgPT0gMCkKKwkgICAgaWYgKCh0YyA9IF9uY19jZ2V0Y2FwKHNjYW4sICJ0YyIsICc9JykpID09IDApIHsKIAkJYnJlYWs7CisJICAgIH0KIAogCSAgICAvKgogCSAgICAgKiBGaW5kIGVuZCBvZiB0Yz1uYW1lIGFuZCBzdG9tcCBvbiB0aGUgdHJhaWxpbmcgYDonCkBAIC00ODIsNiArNDk1LDcgQEAKIAkgICAgdGNsZW4gPSBzIC0gdGNzdGFydDsKIAkgICAgdGNlbmQgPSBzOwogCisJICAgIGljYXAgPSAwOwogCSAgICBpcmV0ID0gX25jX2dldGVudCgmaWNhcCwgJmlsZW4sICZvbGluZSwgY3VycmVudCwgZGJfYXJyYXksIGZkLAogCQkJICAgICAgdGMsIGRlcHRoICsgMSwgMCk7CiAJICAgIG5ld2ljYXAgPSBpY2FwOwkvKiBQdXQgaW50byBhIHJlZ2lzdGVyLiAqLwpAQCAtNDkyLDEyICs1MDYsMTMgQEAKIAkJICAgIGlmIChteWZkKQogCQkJKHZvaWQpIGNsb3NlKGZkKTsKIAkJICAgIGZyZWUocmVjb3JkKTsKKwkJICAgIEZyZWVJZk5lZWRlZChpY2FwKTsKIAkJICAgIHJldHVybiAoaXJldCk7CiAJCX0KLQkJaWYgKGlyZXQgPT0gVENfVU5SRVNPTFZFRCkKKwkJaWYgKGlyZXQgPT0gVENfVU5SRVNPTFZFRCkgewogCQkgICAgdGNfbm90X3Jlc29sdmVkID0gVFJVRTsKLQkJLyogY291bGRuJ3QgcmVzb2x2ZSB0YyAqLwotCQlpZiAoaXJldCA9PSBUQ19OT1RfRk9VTkQpIHsKKwkJICAgIC8qIGNvdWxkbid0IHJlc29sdmUgdGMgKi8KKwkJfSBlbHNlIGlmIChpcmV0ID09IFRDX05PVF9GT1VORCkgewogCQkgICAgKihzIC0gMSkgPSAnOic7CiAJCSAgICBzY2FuID0gcyAtIDE7CiAJCSAgICB0Y19ub3RfcmVzb2x2ZWQgPSBUUlVFOwpAQCAtNTc3LDggKzU5Miw5IEBACiAgICAgfQogCiAgICAgKmNhcCA9IHJlY29yZDsKLSAgICBpZiAodGNfbm90X3Jlc29sdmVkKQorICAgIGlmICh0Y19ub3RfcmVzb2x2ZWQpIHsKIAlyZXR1cm4gKFRDX1VOUkVTT0xWRUQpOworICAgIH0KICAgICByZXR1cm4gKGN1cnJlbnQpOwogfQogCkBAIC02OTMsOCArNzA5LDYgQEAKICNkZWZpbmUJUFZFQ1NJWgkJMzIJLyogbWF4IG51bWJlciBvZiBuYW1lcyBpbiBwYXRoICovCiAjZGVmaW5lIFRCVUZTSVogKDIwNDgqMikKIAotc3RhdGljIGNoYXIgKnRidWY7Ci0KIC8qCiAgKiBPbiBlbnRyeSwgc3JjcCBwb2ludHMgdG8gYSBub24gJzonIGNoYXJhY3RlciB3aGljaCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZQogICogdG9rZW4sIGlmIGFueS4gIFdlJ2xsIHRyeSB0byByZXR1cm4gYSBzdHJpbmcgdGhhdCBkb2Vzbid0IGVuZCB3aXRoIGEgJzonLgpAQCAtNzU2LDcgKzc3MCw3IEBACiAJICAgIGRzdCA9IDA7CiAJICAgIGJyZWFrOwogCX0KLQkqZHN0KysgPSBjaDsKKwkqZHN0KysgPSAoY2hhcikgY2g7CiAgICAgfQogICAgIHJldHVybiBkc3Q7CiB9CkBAIC03NzIsMTggKzc4NiwxNiBAQAogICAgIHJlZ2lzdGVyIGNoYXIgKnA7CiAgICAgcmVnaXN0ZXIgY2hhciAqY3A7CiAgICAgY2hhciAqZHVtbXkgPSBOVUxMOwotICAgIGNoYXIgKipmbmFtZTsKKyAgICBDR0VURU5UX0NPTlNUIGNoYXIgKipmbmFtZTsKICAgICBjaGFyICpob21lOwogICAgIGludCBpOwogICAgIGNoYXIgcGF0aGJ1ZltQQlVGU0laXTsJLyogaG9sZHMgcmF3IHBhdGggb2YgZmlsZW5hbWVzICovCi0gICAgY2hhciAqcGF0aHZlY1tQVkVDU0laXTsJLyogdG8gcG9pbnQgdG8gbmFtZXMgaW4gcGF0aGJ1ZiAqLwotICAgIGNoYXIgKipwdmVjOwkJLyogaG9sZHMgdXNhYmxlIHRhaWwgb2YgcGF0aCB2ZWN0b3IgKi8KKyAgICBDR0VURU5UX0NPTlNUIGNoYXIgKnBhdGh2ZWNbUFZFQ1NJWl07CS8qIHBvaW50IHRvIG5hbWVzIGluIHBhdGhidWYgKi8KICAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKnRlcm1wYXRoOwogICAgIHN0cmluZ19kZXNjIGRlc2M7CiAKKyAgICAqbGluZW5vID0gMTsKICAgICBmbmFtZSA9IHBhdGh2ZWM7Ci0gICAgcHZlYyA9IHBhdGh2ZWM7Ci0gICAgdGJ1ZiA9IGJwOwogICAgIHAgPSBwYXRoYnVmOwogICAgIGNwID0gdXNlX3Rlcm1pbmZvX3ZhcnMoKT8gZ2V0ZW52KCJURVJNQ0FQIikgOiBOVUxMOwogCkBAIC04MDgsMTAgKzgyMCwxMSBAQAogCSAgICBpZiAoKGhvbWUgPSBnZXRlbnYoIkhPTUUiKSkgIT0gMCAmJiAqaG9tZSAhPSAnXDAnCiAJCSYmIHN0cmNocihob21lLCAnICcpID09IDAKIAkJJiYgc3RybGVuKGhvbWUpIDwgc2l6ZW9mKHRlbXApIC0gMTApIHsJLyogc2V0dXAgcGF0aCAqLwotCQlzcHJpbnRmKHRlbXAsICIlcy8iLCBob21lKTsJLyogJEhPTUUgZmlyc3QgKi8KKwkJX25jX1NQUklOVEYodGVtcCwgX25jX1NMSU1JVChzaXplb2YodGVtcCkpCisJCQkgICAgIiVzLyIsIGhvbWUpOwkvKiAkSE9NRSBmaXJzdCAqLwogCSAgICB9CiAJICAgIC8qIGlmIG5vICRIT01FIGxvb2sgaW4gY3VycmVudCBkaXJlY3RvcnkgKi8KLQkgICAgc3RyY2F0KHRlbXAsICIudGVybWNhcCIpOworCSAgICBfbmNfU1RSQ0FUKHRlbXAsICIudGVybWNhcCIsIHNpemVvZih0ZW1wKSk7CiAJICAgIF9uY19zYWZlX3N0cmNhdCgmZGVzYywgdGVtcCk7CiAJICAgIF9uY19zYWZlX3N0cmNhdCgmZGVzYywgIiAiKTsKIAkgICAgX25jX3NhZmVfc3RyY2F0KCZkZXNjLCBnZXRfdGVybXBhdGgoKSk7CkBAIC04MzcsNiArODUwLDkgQEAKIAl9CiAgICAgfQogICAgICpmbmFtZSA9IDA7CQkJLyogbWFyayBlbmQgb2YgdmVjdG9yICovCisjaWYgIUhBVkVfQlNEX0NHRVRFTlQKKyAgICAodm9pZCkgX25jX2NnZXRzZXQoMCk7CisjZW5kaWYKICAgICBpZiAoX25jX2lzX2Fic19wYXRoKGNwKSkgewogCWlmIChfbmNfY2dldHNldChjcCkgPCAwKSB7CiAJICAgIHJldHVybiAoVENfU1lTX0VSUik7CkBAIC04NDksNiArODY1LDcgQEAKICAgICAgKiBlbXB0eSBmaWVsZHMsIGFuZCBtaXN0YWtlbmx5IHVzZSB0aGUgbGFzdCB2YWxpZCBjYXAgZW50cnkgaW5zdGVhZCBvZgogICAgICAqIHRoZSBmaXJzdCAoYnJlYWtzIHRjPSBpbmNsdWRlcykKICAgICAgKi8KKyAgICAqYnAgPSAnXDAnOwogICAgIGlmIChpID49IDApIHsKIAljaGFyICpwZCwgKnBzLCAqdG9rOwogCWludCBlbmRmbGFnID0gRkFMU0U7CkBAIC04NzAsNyArODg3LDcgQEAKIAkgICAgfQogCSAgICBpZiAoaWdub3JlICE9IFRSVUUpIHsKIAkJbGlzdFtjb3VudCsrXSA9IHRvazsKLQkJcGQgPSBjb3B5X3RjX3Rva2VuKHBkLCB0b2ssIFRCVUZTSVogLSAoMiArIHBkIC0gYnApKTsKKwkJcGQgPSBjb3B5X3RjX3Rva2VuKHBkLCB0b2ssIChzaXplX3QpIChUQlVGU0laIC0gKDIgKyBwZCAtIGJwKSkpOwogCQlpZiAocGQgPT0gMCkgewogCQkgICAgaSA9IC0xOwogCQkgICAgYnJlYWs7CkBAIC05MjgsNyArOTQ1LDcgQEAKICAgICBpZiAoY291bnQgPCBNQVhQQVRIUwogCSYmIF9uY19hY2Nlc3MocGF0aCwgUl9PSykgPT0gMCkgewogCXRlcm1wYXRoc1tjb3VudCsrXSA9IHBhdGg7Ci0JVCgoIkFkZGluZyB0ZXJtcGF0aCAlcyIsIHBhdGgpKTsKKwlUUihUUkFDRV9EQVRBQkFTRSwgKCJBZGRpbmcgdGVybXBhdGggJXMiLCBwYXRoKSk7CiAgICAgfQogICAgIHRlcm1wYXRoc1tjb3VudF0gPSAwOwogICAgIGlmIChzYXZlICE9IDApCkBAIC05NTIsMTMgKzk2OSwxMyBAQAogICAgIHN0YXRpYyBjaGFyICpzb3VyY2U7CiAgICAgc3RhdGljIGludCBsaW5lbm87CiAKLSAgICBUKCgicmVhZCB0ZXJtY2FwIGVudHJ5IGZvciAlcyIsIHRuKSk7CisgICAgVFIoVFJBQ0VfREFUQUJBU0UsICgicmVhZCB0ZXJtY2FwIGVudHJ5IGZvciAlcyIsIHRuKSk7CiAKICAgICBpZiAoc3RybGVuKHRuKSA9PSAwCiAJfHwgc3RyY21wKHRuLCAiLiIpID09IDAKIAl8fCBzdHJjbXAodG4sICIuLiIpID09IDAKIAl8fCBfbmNfcGF0aGxhc3QodG4pICE9IDApIHsKLQlUKCgiaWxsZWdhbCBvciBtaXNzaW5nIGVudHJ5IG5hbWUgJyVzJyIsIHRuKSk7CisJVFIoVFJBQ0VfREFUQUJBU0UsICgiaWxsZWdhbCBvciBtaXNzaW5nIGVudHJ5IG5hbWUgJyVzJyIsIHRuKSk7CiAJcmV0dXJuIFRHRVRFTlRfTk87CiAgICAgfQogCkBAIC05NzYsNyArOTkzLDcgQEAKIAlfbmNfY3Vycl9saW5lID0gbGluZW5vOwogCV9uY19zZXRfc291cmNlKHNvdXJjZSk7CiAgICAgfQotICAgIF9uY19yZWFkX2VudHJ5X3NvdXJjZSgoRklMRSAqKSAwLCB0YywgRkFMU0UsIEZBTFNFLCBOVUxMSE9PSyk7CisgICAgX25jX3JlYWRfZW50cnlfc291cmNlKChGSUxFICopIDAsIHRjLCBGQUxTRSwgVFJVRSwgTlVMTEhPT0spOwogI2Vsc2UKICAgICAvKgogICAgICAqIEhlcmUgaXMgd2hhdCB0aGUgNC40QlNEIHRlcm1jYXAoMykgcGFnZSBwcmVzY3JpYmVzOgpAQCAtMTAyMyw3ICsxMDQwLDkgQEAKIAkgICAgbm9ybWFsID0gRkFMU0U7CiAJfSBlbHNlIGlmIChfbmNfbmFtZV9tYXRjaCh0YywgdG4sICJ8OiIpKSB7CS8qIHRyZWF0IGFzIGEgY2FwYWJpbGl0eSBmaWxlICovCiAJICAgIHVzZV9idWZmZXIgPSBUUlVFOwotCSAgICAodm9pZCkgc3ByaW50Zih0Y19idWYsICIlLipzXG4iLCAoaW50KSBzaXplb2YodGNfYnVmKSAtIDIsIHRjKTsKKwkgICAgX25jX1NQUklOVEYodGNfYnVmLAorCQkJX25jX1NMSU1JVChzaXplb2YodGNfYnVmKSkKKwkJCSIlLipzXG4iLCAoaW50KSBzaXplb2YodGNfYnVmKSAtIDIsIHRjKTsKIAkgICAgbm9ybWFsID0gRkFMU0U7CiAJfQogICAgIH0KQEAgLTEwNDUsOCArMTA2NCw5IEBACiAJaWYgKHVzZV90ZXJtaW5mb192YXJzKCkgJiYgKGggPSBnZXRlbnYoIkhPTUUiKSkgIT0gTlVMTCAmJiAqaCAhPSAnXDAnCiAJICAgICYmIChzdHJsZW4oaCkgKyBzaXplb2YoUFJJVkFURV9DQVApKSA8IFBBVEhfTUFYKSB7CiAJICAgIC8qIHVzZXIncyAudGVybWNhcCwgaWYgYW55LCBzaG91bGQgb3ZlcnJpZGUgaXQgKi8KLQkgICAgKHZvaWQpIHN0cmNweShlbnZob21lLCBoKTsKLQkgICAgKHZvaWQpIHNwcmludGYocGF0aGJ1ZiwgUFJJVkFURV9DQVAsIGVudmhvbWUpOworCSAgICBfbmNfU1RSQ1BZKGVudmhvbWUsIGgsIHNpemVvZihlbnZob21lKSk7CisJICAgIF9uY19TUFJJTlRGKHBhdGhidWYsIF9uY19TTElNSVQoc2l6ZW9mKHBhdGhidWYpKQorCQkJUFJJVkFURV9DQVAsIGVudmhvbWUpOwogCSAgICBBRERfVEMocGF0aGJ1ZiwgZmlsZWNvdW50KTsKIAl9CiAgICAgfQpAQCAtMTA1OSw3ICsxMDc5LDcgQEAKICAgICBmb3IgKGogPSAwOyBqIDwgZmlsZWNvdW50OyBqKyspIHsKIAlib29sIG9taXQgPSBGQUxTRTsKIAlpZiAoc3RhdCh0ZXJtcGF0aHNbal0sICZ0ZXN0X3N0YXRbal0pICE9IDAKLQkgICAgfHwgKHRlc3Rfc3RhdFtqXS5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKSB7CisJICAgIHx8ICFTX0lTUkVHKHRlc3Rfc3RhdFtqXS5zdF9tb2RlKSkgewogCSAgICBvbWl0ID0gVFJVRTsKIAl9IGVsc2UgewogCSAgICBmb3IgKGsgPSAwOyBrIDwgajsgaysrKSB7CkBAIC0xMDcxLDcgKzEwOTEsNyBAQAogCSAgICB9CiAJfQogCWlmIChvbWl0KSB7Ci0JICAgIFQoKCJQYXRoICVzIGlzIGEgZHVwbGljYXRlIiwgdGVybXBhdGhzW2pdKSk7CisJICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoIlBhdGggJXMgaXMgYSBkdXBsaWNhdGUiLCB0ZXJtcGF0aHNbal0pKTsKIAkgICAgZm9yIChrID0gaiArIDE7IGsgPCBmaWxlY291bnQ7IGsrKykgewogCQl0ZXJtcGF0aHNbayAtIDFdID0gdGVybXBhdGhzW2tdOwogCQl0ZXN0X3N0YXRbayAtIDFdID0gdGVzdF9zdGF0W2tdOwpAQCAtMTA5Niw3ICsxMTE2LDcgQEAKIAogCWZvciAoaSA9IDA7IGkgPCBmaWxlY291bnQ7IGkrKykgewogCi0JICAgIFQoKCJMb29raW5nIGZvciAlcyBpbiAlcyIsIHRuLCB0ZXJtcGF0aHNbaV0pKTsKKwkgICAgVFIoVFJBQ0VfREFUQUJBU0UsICgiTG9va2luZyBmb3IgJXMgaW4gJXMiLCB0biwgdGVybXBhdGhzW2ldKSk7CiAJICAgIGlmIChfbmNfYWNjZXNzKHRlcm1wYXRoc1tpXSwgUl9PSykgPT0gMAogCQkmJiAoZnAgPSBmb3Blbih0ZXJtcGF0aHNbaV0sICJyIikpICE9IChGSUxFICopIDApIHsKIAkJX25jX3NldF9zb3VyY2UodGVybXBhdGhzW2ldKTsKQEAgLTExMzQsOCArMTE1NCw3IEBACiAJCSAqIGZyb20gdGhlIGxpc3QuCiAJCSAqLwogCQkqdHAgPSBlcC0+dHRlcm07Ci0JCV9uY19kZWxpbmtfZW50cnkoX25jX2hlYWQsICYoZXAtPnR0ZXJtKSk7Ci0JCWZyZWUoZXApOworCQlfbmNfZnJlZV9lbnRyeShfbmNfaGVhZCwgJihlcC0+dHRlcm0pKTsKIAogCQkvKgogCQkgKiBPSywgbm93IHRyeSB0byB3cml0ZSB0aGUgdHlwZSB0byB1c2VyJ3MgdGVybWluZm8gZGlyZWN0b3J5LiAKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vc2V0YnVmLmMgYi9uY3Vyc2VzL3RpbmZvL3NldGJ1Zi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTkxMGU4Li4wMDAwMDAwCi0tLSBhL25jdXJzZXMvdGluZm8vc2V0YnVmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAzLDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCi0gKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgotICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKLSAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgotICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgotICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKLSAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgotICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCi0gKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCi0gKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgotICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKLSAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCi0gKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0qKglzZXRidWYuYwotKioKLSoqCVN1cHBvcnQgZm9yIHNldF90ZXJtKCksIHJlc2V0X3NoZWxsX21vZGUoKSwgcmVzZXRfcHJvZ19tb2RlKCkuCi0qKgotKi8KLQotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0KLU1PRFVMRV9JRCgiJElkOiBzZXRidWYuYyx2IDEuMTMgMjAwNy8wNS8xMiAxOTowNDowMiB0b20gRXhwICQiKQotCi0vKgotICogSWYgdGhlIG91dHB1dCBmaWxlIGRlc2NyaXB0b3IgaXMgY29ubmVjdGVkIHRvIGEgdHR5ICh0aGUgdHlwaWNhbCBjYXNlKSBpdAotICogd2lsbCBwcm9iYWJseSBiZSBsaW5lLWJ1ZmZlcmVkLiAgS2VpdGggQm9zdGljIHBvaW50ZWQgb3V0IHRoYXQgd2UgZG9uJ3Qgd2FudAotICogdGhpczsgaXQgaG9zZXMgcGVvcGxlIHJ1bm5pbmcgb3ZlciBuZXR3b3JrcyBieSBmb3JjaW5nIG91dCBhIGJ1bmNoIG9mIHNtYWxsCi0gKiBwYWNrZXRzIGluc3RlYWQgb2Ygb25lIGJpZyBvbmUsIHNvIHNjcmVlbiB1cGRhdGVzIG9uIHB0eXMgbG9vayBqZXJreS4KLSAqIFJlc3RvcmUgYmxvY2sgYnVmZmVyaW5nIHRvIHByZXZlbnQgdGhpcyBtaW5vciBsb3NzYWdlLgotICoKLSAqIFRoZSBidWZmZXIgc2l6ZSBpcyBhIGNvbXByb21pc2UuICBJZGVhbGx5IHdlJ2QgbGlrZSBhIGJ1ZmZlciB0aGF0IGNhbiBob2xkCi0gKiB0aGUgbWF4aW11bSBwb3NzaWJsZSB1cGRhdGUgc2l6ZSAodGhlIHdob2xlIHNjcmVlbiBwbHVzIGN1cCBjb21tYW5kcyB0bwotICogY2hhbmdlIGxpbmVzIGFzIGl0J3MgcGFpbnRlZCkuICBPbiBhIDY2LWxpbmUgeHRlcm0gdGhpcyBjYW4gYmVjb21lCi0gKiBleGNlc3NpdmUuICBTbyB3ZSBtaW4gaXQgd2l0aCB0aGUgYW1vdW50IG9mIGRhdGEgd2UgdGhpbmsgd2UgY2FuIGdldCB0aHJvdWdoCi0gKiB0d28gRXRoZXJuZXQgcGFja2V0cyAobWF4aW11bSBwYWNrZXQgc2l6ZSAtIDEwMCBmb3IgVENQL0lQIG92ZXJoZWFkKS4KLSAqCi0gKiBXaHkgdHdvIGV0aGVybmV0IHBhY2tldHM/ICBJdCB1c2VkIHRvIGJlIG9uZSwgb24gdGhlIHRoZW9yeSB0aGF0IHNhaWQKLSAqIHBhY2tldHMgZGVmaW5lIHRoZSBtYXhpbXVtIHNpemUgb2YgYXRvbWljIHVwZGF0ZS4gIEJ1dCB0aGF0J3MgbGVzcyB0aGFuIHRoZQotICogMjAwMCBjaGFycyBvbiBhIDI1IHggODAgc2NyZWVuLCBhbmQgd2UgZG9uJ3Qgd2FudCBsb2NhbCB1cGRhdGVzIHRvIGZsaWNrZXIKLSAqIGVpdGhlci4gIFR3byBwYWNrZXQgbGVuZ3RocyB3aWxsIGhhbmRsZSB1cCB0byBhIDM1IHggODAgc2NyZWVuLgotICoKLSAqIFRoZSBtYWdpYyAnNicgaXMgdGhlIGVzdGltYXRlZCBsZW5ndGggb2YgdGhlIGVuZC1vZi1saW5lIGN1cCBzZXF1ZW5jZSB0byBnbwotICogdG8gdGhlIG5leHQgbGluZS4gIEl0J3MgZ2VuZXJvdXMuICBXZSB1c2VkIHRvIG1lc3Mgd2l0aCB0aGUgYnVmZmVyaW5nIGluCi0gKiBpbml0X212Y3VyKCkgYWZ0ZXIgY29zdCBjb21wdXRhdGlvbiwgYnV0IHRoYXQgbG9zdCB0aGUgc2VxdWVuY2VzIGVtaXR0ZWQgYnkKLSAqIGluaXRfYWNzKCkgaW4gc2V0dXBzY3JlZW4oKS4KLSAqCi0gKiAiVGhlIHNldHZidWYgZnVuY3Rpb24gbWF5IGJlIHVzZWQgb25seSBhZnRlciB0aGUgc3RyZWFtIHBvaW50ZWQgdG8gYnkgc3RyZWFtCi0gKiBoYXMgYmVlbiBhc3NvY2lhdGVkIHdpdGggYW4gb3BlbiBmaWxlIGFuZCBiZWZvcmUgYW55IG90aGVyIG9wZXJhdGlvbiBpcwotICogcGVyZm9ybWVkIG9uIHRoZSBzdHJlYW0uIiAoSVNPIDcuOS41LjYuKQotICoKLSAqIEdycnJyLi4uCi0gKgotICogT24gYSBsaWdodGVyIG5vdGUsIG1hbnkgaW1wbGVtZW50YXRpb25zIGRvIGluIGZhY3QgYWxsb3cgYW4gYXBwbGljYXRpb24gdG8KLSAqIHJlc2V0IHRoZSBidWZmZXJpbmcgYWZ0ZXIgaXQgaGFzIGJlZW4gd3JpdHRlbiB0by4gIFdlIHRyeSB0byBkbyB0aGlzIGJlY2F1c2UKLSAqIG90aGVyd2lzZSB3ZSBsZWF2ZSBzdGRvdXQgaW4gYnVmZmVyZWQgbW9kZSBhZnRlciBlbmR3aW4oKSBpcyBjYWxsZWQuICAoVGhpcwotICogYWxzbyBoYXBwZW5zIHdpdGggU1ZyNCBjdXJzZXMpLgotICoKLSAqIFRoZXJlIGFyZSBwcm9zL2NvbnM6Ci0gKgotICogY29uOgotICoJVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgd2UgY2FuIHJlZXN0YWJsaXNoIGJ1ZmZlcmluZyBvbmNlIHdlJ3ZlCi0gKglkcm9wcGVkIGl0LgotICoKLSAqCVdlIF9tYXlfIGxvc2UgZGF0YSBpZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgY29vcmRpbmF0ZSB0aGlzIHdpdGgKLSAqCWZmbHVzaC4KLSAqCi0gKiBwcm86Ci0gKglBbiBpbXBsZW1lbnRhdGlvbiBpcyBtb3JlIGxpa2VseSB0byByZWZ1c2UgdG8gY2hhbmdlIHRoZSBidWZmZXJpbmcgdGhhbgotICoJdG8gZG8gaXQgaW4gb25lIG9mIHRoZSB3YXlzIG1lbnRpb25lZCBhYm92ZS4KLSAqCi0gKglUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaGF2ZSB0aGUgYXBwbGljYXRpb24gdHJ5IHRvIGNoYW5nZSBidWZmZXJpbmcKLSAqCWl0c2VsZiwgd2hpY2ggaXMgY2VydGFpbmx5IG5vIGltcHJvdmVtZW50LgotICoKLSAqIEp1c3QgaW4gY2FzZSBpdCBkb2VzIG5vdCB3b3JrIHdlbGwgb24gYSBwYXJ0aWN1bGFyIHN5c3RlbSwgdGhlIGNhbGxzIHRvCi0gKiBjaGFuZ2UgYnVmZmVyaW5nIGFyZSBhbGwgdmlhIHRoZSBtYWNybyBOQ19CVUZGRVJFRC4gIFNvbWUgaW1wbGVtZW50YXRpb25zCi0gKiBkbyBpbmRlZWQgZ2V0IGNvbmZ1c2VkIGJ5IGNoYW5naW5nIHNldGJ1ZiBvbi9vZmYsIGFuZCB3aWxsIG92ZXJydW4gdGhlCi0gKiBidWZmZXIuICBTbyB3ZSBkaXNhYmxlIHRoaXMgYnkgZGVmYXVsdCAodGhlcmUgbWF5IHlldCBiZSBhIHdvcmthcm91bmQpLgotICovCi1OQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX3NldF9idWZmZXIoRklMRSAqb2ZwLCBib29sIGJ1ZmZlcmVkKQotewotICAgIC8qIG9wdGlvbmFsIG9wdGltaXphdGlvbiBoYWNrIC0tIGRvIGJlZm9yZSBhbnkgb3V0cHV0IHRvIG9mcCAqLwotI2lmIEhBVkVfU0VUVkJVRiB8fCBIQVZFX1NFVEJVRkZFUgotICAgIGlmIChTUC0+X2J1ZmZlcmVkICE9IGJ1ZmZlcmVkKSB7Ci0JdW5zaWduZWQgYnVmX2xlbjsKLQljaGFyICpidWZfcHRyOwotCi0JaWYgKGdldGVudigiTkNVUlNFU19OT19TRVRCVUYiKSAhPSAwKQotCSAgICByZXR1cm47Ci0KLQlmZmx1c2gob2ZwKTsKLSNpZmRlZiBfX0RKR1BQX18KLQlzZXRtb2RlKG9mcCwgT19CSU5BUlkpOwotI2VuZGlmCi0JaWYgKGJ1ZmZlcmVkICE9IDApIHsKLQkgICAgYnVmX2xlbiA9IG1pbihMSU5FUyAqIChDT0xTICsgNiksIDI4MDApOwotCSAgICBpZiAoKGJ1Zl9wdHIgPSBTUC0+X3NldGJ1ZikgPT0gMCkgewotCQlpZiAoKGJ1Zl9wdHIgPSB0eXBlTWFsbG9jKGNoYXIsIGJ1Zl9sZW4pKSA9PSBOVUxMKQotCQkgICAgICByZXR1cm47Ci0JCVNQLT5fc2V0YnVmID0gYnVmX3B0cjsKLQkJLyogRG9uJ3QgdHJ5IHRvIGZyZWUgdGhpcyEgKi8KLQkgICAgfQotI2lmICFVU0VfU0VUQlVGXzAKLQkgICAgZWxzZQotCQlyZXR1cm47Ci0jZW5kaWYKLQl9IGVsc2UgewotI2lmICFVU0VfU0VUQlVGXzAKLQkgICAgcmV0dXJuOwotI2Vsc2UKLQkgICAgYnVmX2xlbiA9IDA7Ci0JICAgIGJ1Zl9wdHIgPSAwOwotI2VuZGlmCi0JfQotCi0jaWYgSEFWRV9TRVRWQlVGCi0jaWZkZWYgU0VUVkJVRl9SRVZFUlNFRAkJLyogcHJlLXN2cjM/ICovCi0JKHZvaWQpIHNldHZidWYob2ZwLCBidWZfcHRyLCBidWZfbGVuLCBidWZfbGVuID8gX0lPRkJGIDogX0lPTEJGKTsKLSNlbHNlCi0JKHZvaWQpIHNldHZidWYob2ZwLCBidWZfcHRyLCBidWZfbGVuID8gX0lPRkJGIDogX0lPTEJGLCBidWZfbGVuKTsKLSNlbmRpZgotI2VsaWYgSEFWRV9TRVRCVUZGRVIKLQkodm9pZCkgc2V0YnVmZmVyKG9mcCwgYnVmX3B0ciwgKGludCkgYnVmX2xlbik7Ci0jZW5kaWYKLQotCVNQLT5fYnVmZmVyZWQgPSBidWZmZXJlZDsKLSAgICB9Ci0jZW5kaWYgLyogSEFWRV9TRVRWQlVGIHx8IEhBVkVfU0VUQlVGRkVSICovCi19CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCmluZGV4IDc4Y2QyZWYuLjM5M2Q4ZTcgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCisrKyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAzLDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNywyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzYsNyArMzYsNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHN0cmluZ3MuYyx2IDEuNiAyMDA3LzA4LzExIDE3OjEyOjE3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogc3RyaW5ncy5jLHYgMS44IDIwMTIvMDIvMjIgMjI6MzQ6MzEgdG9tIEV4cCAkIikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFVzZWZ1bCBzdHJpbmcgZnVuY3Rpb25zIChlc3BlY2lhbGx5IGZvciBtdmN1cikKQEAgLTExMCw3ICsxMTAsNyBAQAogCiAJaWYgKGxlbiA8IGRzdC0+c19zaXplKSB7CiAJICAgIGlmIChkc3QtPnNfdGFpbCAhPSAwKSB7Ci0JCXN0cmNweShkc3QtPnNfdGFpbCwgc3JjKTsKKwkJX25jX1NUUkNQWShkc3QtPnNfdGFpbCwgc3JjLCBkc3QtPnNfc2l6ZSk7CiAJCWRzdC0+c190YWlsICs9IGxlbjsKIAkgICAgfQogCSAgICBkc3QtPnNfc2l6ZSAtPSBsZW47CkBAIC0xMzEsNyArMTMxLDcgQEAKIAogCWlmIChsZW4gPCBkc3QtPnNfc2l6ZSkgewogCSAgICBpZiAoZHN0LT5zX2hlYWQgIT0gMCkgewotCQlzdHJjcHkoZHN0LT5zX2hlYWQsIHNyYyk7CisJCV9uY19TVFJDUFkoZHN0LT5zX2hlYWQsIHNyYywgZHN0LT5zX3NpemUpOwogCQlkc3QtPnNfdGFpbCA9IGRzdC0+c19oZWFkICsgbGVuOwogCSAgICB9CiAJICAgIGRzdC0+c19zaXplID0gZHN0LT5zX2luaXQgLSBsZW47CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3RpbmZvX2RyaXZlci5jIGIvbmN1cnNlcy90aW5mby90aW5mb19kcml2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmExYzIyCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy90aW5mby90aW5mb19kcml2ZXIuYwpAQCAtMCwwICsxLDEzODQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKyNkZWZpbmUgQ1VSICgoVEVSTUlOQUwqKVRDQiktPnR5cGUuCisjaW5jbHVkZSA8dGljLmg+CisKKyNpZiBIQVZFX05BTk9TTEVFUAorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgkJLyogbmVlZGVkIGZvciBNYWNPUyBYIERQMyAqLworI2VuZGlmCisjZW5kaWYKKworI2lmIEhBVkVfU0laRUNIQU5HRQorIyBpZiAhZGVmaW5lZChzdW4pIHx8ICFURVJNSU9TCisjICBpZiBIQVZFX1NZU19JT0NUTF9ICisjICAgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKK01PRFVMRV9JRCgiJElkOiB0aW5mb19kcml2ZXIuYyx2IDEuNDAgMjAxNS8wNi8yNyAwMToyMDo0MSB0b20gRXhwICQiKQorCisvKgorICogU0NPIGRlZmluZXMgVElPQ0dTSVpFIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzdHJ1Y3QuICBPdGhlciBzeXN0ZW1zIChTdW5PUywKKyAqIFNvbGFyaXMsIElSSVgpIGRlZmluZSBUSU9DR1dJTlNaIGFuZCBzdHJ1Y3Qgd2luc2l6ZS4KKyAqLworI2lmZGVmIFRJT0NHU0laRQorIyBkZWZpbmUgSU9DVExfV0lOU0laRSBUSU9DR1NJWkUKKyMgZGVmaW5lIFNUUlVDVF9XSU5TSVpFIHN0cnVjdCB0dHlzaXplCisjIGRlZmluZSBXSU5TSVpFX1JPV1MobikgKGludCluLnRzX2xpbmVzCisjIGRlZmluZSBXSU5TSVpFX0NPTFMobikgKGludCluLnRzX2NvbHMKKyNlbHNlCisjIGlmZGVmIFRJT0NHV0lOU1oKKyMgIGRlZmluZSBJT0NUTF9XSU5TSVpFIFRJT0NHV0lOU1oKKyMgIGRlZmluZSBTVFJVQ1RfV0lOU0laRSBzdHJ1Y3Qgd2luc2l6ZQorIyAgZGVmaW5lIFdJTlNJWkVfUk9XUyhuKSAoaW50KW4ud3Nfcm93CisjICBkZWZpbmUgV0lOU0laRV9DT0xTKG4pIChpbnQpbi53c19jb2wKKyMgZW5kaWYKKyNlbmRpZgorCisvKgorICogVGhlc2Ugc2hvdWxkIGJlIHNjcmVlbiBzdHJ1Y3R1cmUgbWVtYmVycy4gIFRoZXkgbmVlZCB0byBiZSBnbG9iYWxzIGZvcgorICogaGlzdG9yaWNhbCByZWFzb25zLiAgU28gd2UgYXNzaWduIHRoZW0gaW4gc3RhcnRfY29sb3IoKSBhbmQgYWxzbyBpbgorICogc2V0X3Rlcm0oKSdzIHNjcmVlbi1zd2l0Y2hpbmcgbG9naWMuCisgKi8KKyNpZiBVU0VfUkVFTlRSQU5UCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1BVQkxJQ19WQVIoQ09MT1JfUEFJUlMpICh2b2lkKQoreworICAgIHJldHVybiBDVVJSRU5UX1NDUkVFTiA/IENVUlJFTlRfU0NSRUVOLT5fcGFpcl9jb3VudCA6IC0xOworfQorTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19QVUJMSUNfVkFSKENPTE9SUykgKHZvaWQpCit7CisgICAgcmV0dXJuIENVUlJFTlRfU0NSRUVOID8gQ1VSUkVOVF9TQ1JFRU4tPl9jb2xvcl9jb3VudCA6IC0xOworfQorI2Vsc2UKK05DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIENPTE9SX1BBSVJTID0gMDsKK05DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIENPTE9SUyA9IDA7CisjZW5kaWYKKworI2RlZmluZSBUQ0JNQUdJQyBOQ0RSVl9NQUdJQyhOQ0RSVl9USU5GTykKKyNkZWZpbmUgQXNzZXJ0VENCKCkgYXNzZXJ0KFRDQiE9MCAmJiBUQ0ItPm1hZ2ljPT1UQ0JNQUdJQykKKyNkZWZpbmUgU2V0U1AoKSBhc3NlcnQoVENCLT5jc3AhPTApOyBzcCA9IFRDQi0+Y3NwOyAodm9pZCkgc3AKKworLyoKKyAqIFRoaXMgcm91dGluZSBuZWVkcyB0byBkbyBhbGwgdGhlIHdvcmsgdG8gbWFrZSBjdXJzY3IgbG9vaworICogbGlrZSBuZXdzY3IuCisgKi8KK3N0YXRpYyBpbnQKK2Rydl9kb3VwZGF0ZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIEFzc2VydFRDQigpOworICAgIHJldHVybiBUSU5GT19ET1VQREFURShUQ0ItPmNzcCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2Rydl9OYW1lKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgKHZvaWQpIFRDQjsKKyAgICByZXR1cm4gInRpbmZvIjsKK30KKworI3VuZGVmIFNFVFVQX0ZBSUwKKyNkZWZpbmUgU0VUVVBfRkFJTCBGQUxTRQorCitzdGF0aWMgYm9vbAorZHJ2X0NhbkhhbmRsZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBjb25zdCBjaGFyICp0bmFtZSwgaW50ICplcnJyZXQpCit7CisgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKKyAgICBpbnQgc3RhdHVzOworICAgIFRFUk1JTkFMICp0ZXJtcDsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgU1RBUlRfVFJBQ0UoKTsKKyAgICBUKChUX0NBTExFRCgidGluZm86OmRydl9DYW5IYW5kbGUoJXApIiksIFRDQikpOworCisgICAgYXNzZXJ0KFRDQiAhPSAwICYmIHRuYW1lICE9IDApOworICAgIHRlcm1wID0gKFRFUk1JTkFMICopIFRDQjsKKyAgICBzcCA9IFRDQi0+Y3NwOworICAgIFRDQi0+bWFnaWMgPSBUQ0JNQUdJQzsKKworI2lmIChOQ1VSU0VTX1VTRV9EQVRBQkFTRSB8fCBOQ1VSU0VTX1VTRV9URVJNQ0FQKQorICAgIHN0YXR1cyA9IF9uY19zZXR1cF90aW5mbyh0bmFtZSwgJnRlcm1wLT50eXBlKTsKKyNlbHNlCisgICAgc3RhdHVzID0gVEdFVEVOVF9OTzsKKyNlbmRpZgorCisgICAgLyogdHJ5IGZhbGxiYWNrIGxpc3QgaWYgZW50cnkgb24gZGlzayAqLworICAgIGlmIChzdGF0dXMgIT0gVEdFVEVOVF9ZRVMpIHsKKwljb25zdCBURVJNVFlQRSAqZmFsbGJhY2sgPSBfbmNfZmFsbGJhY2sodG5hbWUpOworCisJaWYgKGZhbGxiYWNrKSB7CisJICAgIHRlcm1wLT50eXBlID0gKmZhbGxiYWNrOworCSAgICBzdGF0dXMgPSBUR0VURU5UX1lFUzsKKwl9CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAhPSBUR0VURU5UX1lFUykgeworCU5DVVJTRVNfU1BfTkFNRShkZWxfY3VydGVybSkgKE5DVVJTRVNfU1BfQVJHeCB0ZXJtcCk7CisJaWYgKHN0YXR1cyA9PSBUR0VURU5UX0VSUikgeworCSAgICByZXRfZXJyb3IwKHN0YXR1cywgInRlcm1pbmFscyBkYXRhYmFzZSBpcyBpbmFjY2Vzc2libGVcbiIpOworCX0gZWxzZSBpZiAoc3RhdHVzID09IFRHRVRFTlRfTk8pIHsKKwkgICAgcmV0X2Vycm9yMShzdGF0dXMsICJ1bmtub3duIHRlcm1pbmFsIHR5cGUuXG4iLCB0bmFtZSk7CisJfQorICAgIH0KKyAgICByZXN1bHQgPSBUUlVFOworI2lmICFVU0VfUkVFTlRSQU5UCisgICAgc3RybmNweSh0dHl0eXBlLCB0ZXJtcC0+dHlwZS50ZXJtX25hbWVzLCAoc2l6ZV90KSBOQU1FU0laRSAtIDEpOworICAgIHR0eXR5cGVbTkFNRVNJWkUgLSAxXSA9ICdcMCc7CisjZW5kaWYKKworICAgIGlmIChjb21tYW5kX2NoYXJhY3RlcikKKwlfbmNfdGluZm9fY21kY2godGVybXAsICpjb21tYW5kX2NoYXJhY3Rlcik7CisKKyAgICBpZiAoZ2VuZXJpY190eXBlKSB7CisJLyoKKwkgKiBCU0QgNC4zJ3MgdGVybWNhcCBjb250YWlucyBtaXMtdHlwZWQgImduIiBmb3Igd3k5OS4gIERvIGEgc2FuaXR5CisJICogY2hlY2sgYmVmb3JlIGdpdmluZyB1cC4KKwkgKi8KKwlpZiAoKFZBTElEX1NUUklORyhjdXJzb3JfYWRkcmVzcykKKwkgICAgIHx8IChWQUxJRF9TVFJJTkcoY3Vyc29yX2Rvd24pICYmIFZBTElEX1NUUklORyhjdXJzb3JfaG9tZSkpKQorCSAgICAmJiBWQUxJRF9TVFJJTkcoY2xlYXJfc2NyZWVuKSkgeworCSAgICByZXRfZXJyb3IxKFRHRVRFTlRfWUVTLCAidGVybWluYWwgaXMgbm90IHJlYWxseSBnZW5lcmljLlxuIiwgdG5hbWUpOworCX0gZWxzZSB7CisJICAgIHJldF9lcnJvcjEoVEdFVEVOVF9OTywgIkkgbmVlZCBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYy5cbiIsIHRuYW1lKTsKKwl9CisgICAgfQorICAgIGlmIChoYXJkX2NvcHkpIHsKKwlyZXRfZXJyb3IxKFRHRVRFTlRfWUVTLCAiSSBjYW4ndCBoYW5kbGUgaGFyZGNvcHkgdGVybWluYWxzLlxuIiwgdG5hbWUpOworICAgIH0KKworICAgIHJldHVybkJvb2wocmVzdWx0KTsKK30KKworc3RhdGljIGludAorZHJ2X2RvYmVlcGZsYXNoKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBiZWVwRmxhZykKK3sKKyAgICBTQ1JFRU4gKnNwOworICAgIGludCByZXMgPSBFUlI7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgLyogRklYTUU6IHNob3VsZCBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUgbm90IGluIGFsdGNoYXIgbW9kZSAqLworICAgIGlmIChiZWVwRmxhZykgeworCWlmIChiZWxsKSB7CisJICAgIHJlcyA9IE5DVVJTRVNfUFVUUDIoImJlbGwiLCBiZWxsKTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKHNwKTsKKwl9IGVsc2UgaWYgKGZsYXNoX3NjcmVlbikgeworCSAgICByZXMgPSBOQ1VSU0VTX1BVVFAyKCJmbGFzaF9zY3JlZW4iLCBmbGFzaF9zY3JlZW4pOworCSAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoc3ApOworCX0KKyAgICB9IGVsc2UgeworCWlmIChmbGFzaF9zY3JlZW4pIHsKKwkgICAgcmVzID0gTkNVUlNFU19QVVRQMigiZmxhc2hfc2NyZWVuIiwgZmxhc2hfc2NyZWVuKTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKHNwKTsKKwl9IGVsc2UgaWYgKGJlbGwpIHsKKwkgICAgcmVzID0gTkNVUlNFU19QVVRQMigiYmVsbCIsIGJlbGwpOworCSAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoc3ApOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoKKyAqIFNWcjQgY3Vyc2VzIGlzIGtub3duIHRvIGludGVyY2hhbmdlIGNvbG9yIGNvZGVzICgxLDQpIGFuZCAoMyw2KSwgcG9zc2libHkKKyAqIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBhIHByZS1BTlNJIHNjaGVtZS4gIFRoZSBzYW1lIHNjaGVtZSBpcworICogYWxzbyB1c2VkIGluIHRoZSBGcmVlQlNEIHN5c2NvbnMuCisgKi8KK3N0YXRpYyBpbnQKK3RvZ2dsZWRfY29sb3JzKGludCBjKQoreworICAgIGlmIChjIDwgMTYpIHsKKwlzdGF0aWMgY29uc3QgaW50IHRhYmxlW10gPQorCXswLCA0LCAyLCA2LCAxLCA1LCAzLCA3LAorCSA4LCAxMiwgMTAsIDE0LCA5LCAxMywgMTEsIDE1fTsKKwljID0gdGFibGVbY107CisgICAgfQorICAgIHJldHVybiBjOworfQorCitzdGF0aWMgaW50CitkcnZfcHJpbnQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwgY2hhciAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKyNpZiBOQ1VSU0VTX0VYVF9GVU5DUworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUobWNwcmludCkgKFRDQi0+Y3NwLCBkYXRhLCBsZW4pOworI2Vsc2UKKyAgICByZXR1cm4gRVJSOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2Rydl9kZWZhdWx0Y29sb3JzKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBmZywgaW50IGJnKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgaW50IGNvZGUgPSBFUlI7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgaWYgKHNwICE9IDAgJiYgb3JpZ19wYWlyICYmIG9yaWdfY29sb3JzICYmIChpbml0aWFsaXplX3BhaXIgIT0gMCkpIHsKKyNpZiBOQ1VSU0VTX0VYVF9GVU5DUworCXNwLT5fZGVmYXVsdF9jb2xvciA9IGlzRGVmYXVsdENvbG9yKGZnKSB8fCBpc0RlZmF1bHRDb2xvcihiZyk7CisJc3AtPl9oYXNfc2dyXzM5XzQ5ID0gKE5DVVJTRVNfU1BfTkFNRSh0aWdldGZsYWcpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJCQkgICJBWCIpCisJCQkgICAgICA9PSBUUlVFKTsKKwlzcC0+X2RlZmF1bHRfZmcgPSBpc0RlZmF1bHRDb2xvcihmZykgPyBDT0xPUl9ERUZBVUxUIDogKGZnICYgQ19NQVNLKTsKKwlzcC0+X2RlZmF1bHRfYmcgPSBpc0RlZmF1bHRDb2xvcihiZykgPyBDT0xPUl9ERUZBVUxUIDogKGJnICYgQ19NQVNLKTsKKwlpZiAoc3AtPl9jb2xvcl9wYWlycyAhPSAwKSB7CisJICAgIGJvb2wgc2F2ZSA9IHNwLT5fZGVmYXVsdF9jb2xvcjsKKwkgICAgc3AtPl9kZWZhdWx0X2NvbG9yID0gVFJVRTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKGluaXRfcGFpcikgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQkwLAorCQkJCQkoc2hvcnQpZmcsCisJCQkJCShzaG9ydCliZyk7CisJICAgIHNwLT5fZGVmYXVsdF9jb2xvciA9IHNhdmU7CisJfQorI2VuZGlmCisJY29kZSA9IE9LOworICAgIH0KKyAgICByZXR1cm4gKGNvZGUpOworfQorCitzdGF0aWMgdm9pZAorZHJ2X3NldGNvbG9yKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsCisJICAgICBpbnQgZm9yZSwKKwkgICAgIGludCBjb2xvciwKKwkgICAgIE5DVVJTRVNfU1BfT1VUQyBvdXRjKQoreworICAgIFNDUkVFTiAqc3A7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgaWYgKGZvcmUpIHsKKwlpZiAoc2V0X2FfZm9yZWdyb3VuZCkgeworCSAgICBUUFVUU19UUkFDRSgic2V0X2FfZm9yZWdyb3VuZCIpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgVFBBUk1fMShzZXRfYV9mb3JlZ3JvdW5kLCBjb2xvciksIDEsIG91dGMpOworCX0gZWxzZSB7CisJICAgIFRQVVRTX1RSQUNFKCJzZXRfZm9yZWdyb3VuZCIpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgVFBBUk1fMShzZXRfZm9yZWdyb3VuZCwKKwkJCQkJICAgIHRvZ2dsZWRfY29sb3JzKGNvbG9yKSksIDEsIG91dGMpOworCX0KKyAgICB9IGVsc2UgeworCWlmIChzZXRfYV9iYWNrZ3JvdW5kKSB7CisJICAgIFRQVVRTX1RSQUNFKCJzZXRfYV9iYWNrZ3JvdW5kIik7CisJICAgIE5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCSAgICBUUEFSTV8xKHNldF9hX2JhY2tncm91bmQsIGNvbG9yKSwgMSwgb3V0Yyk7CisJfSBlbHNlIHsKKwkgICAgVFBVVFNfVFJBQ0UoInNldF9iYWNrZ3JvdW5kIik7CisJICAgIE5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCSAgICBUUEFSTV8xKHNldF9iYWNrZ3JvdW5kLAorCQkJCQkgICAgdG9nZ2xlZF9jb2xvcnMoY29sb3IpKSwgMSwgb3V0Yyk7CisJfQorICAgIH0KK30KKworc3RhdGljIGJvb2wKK2Rydl9yZXNjb2woVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQikKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworICAgIFNDUkVFTiAqc3A7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgaWYgKG9yaWdfcGFpciAhPSAwKSB7CisJTkNVUlNFU19QVVRQMigib3JpZ19wYWlyIiwgb3JpZ19wYWlyKTsKKwlyZXN1bHQgPSBUUlVFOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbAorZHJ2X3Jlc2NvbG9ycyhURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIGludCByZXN1bHQgPSBGQUxTRTsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKworICAgIGlmIChvcmlnX2NvbG9ycyAhPSAwKSB7CisJTkNVUlNFU19QVVRQMigib3JpZ19jb2xvcnMiLCBvcmlnX2NvbG9ycyk7CisJcmVzdWx0ID0gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorZHJ2X3NpemUoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwgaW50ICpsaW5lcCwgaW50ICpjb2xwKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgYm9vbCB1c2VFbnYgPSBUUlVFOworICAgIGJvb2wgdXNlVGlvY3RsID0gVFJVRTsKKworICAgIEFzc2VydFRDQigpOworICAgIHNwID0gVENCLT5jc3A7CQkvKiBjYW4gYmUgbnVsbCBoZXJlICovCisKKyAgICBpZiAoc3ApIHsKKwl1c2VFbnYgPSBzcC0+X3VzZV9lbnY7CisJdXNlVGlvY3RsID0gc3AtPl91c2VfdGlvY3RsOworICAgIH0gZWxzZSB7CisJdXNlRW52ID0gX25jX3ByZXNjcmVlbi51c2VfZW52OworCXVzZVRpb2N0bCA9IF9uY19wcmVzY3JlZW4udXNlX3Rpb2N0bDsKKyAgICB9CisKKyAgICAvKiBmaWd1cmUgb3V0IHRoZSBzaXplIG9mIHRoZSBzY3JlZW4gKi8KKyAgICBUKCgic2NyZWVuIHNpemU6IHRlcm1pbmZvIGxpbmVzID0gJWQgY29sdW1ucyA9ICVkIiwgbGluZXMsIGNvbHVtbnMpKTsKKworICAgICpsaW5lcCA9IChpbnQpIGxpbmVzOworICAgICpjb2xwID0gKGludCkgY29sdW1uczsKKworICAgIGlmICh1c2VFbnYgfHwgdXNlVGlvY3RsKSB7CisJaW50IHZhbHVlOworCisjaWZkZWYgX19FTVhfXworCXsKKwkgICAgaW50IHNjcmVlbmRhdGFbMl07CisJICAgIF9zY3JzaXplKHNjcmVlbmRhdGEpOworCSAgICAqY29scCA9IHNjcmVlbmRhdGFbMF07CisJICAgICpsaW5lcCA9ICgoc3AgIT0gMCAmJiBzcC0+X2ZpbHRlcmVkKQorCQkgICAgICA/IDEKKwkJICAgICAgOiBzY3JlZW5kYXRhWzFdKTsKKwkgICAgVCgoIkVNWCBzY3JlZW4gc2l6ZTogZW52aXJvbm1lbnQgTElORVMgPSAlZCBDT0xVTU5TID0gJWQiLAorCSAgICAgICAqbGluZXAsICpjb2xwKSk7CisJfQorI2VuZGlmCisjaWYgSEFWRV9TSVpFQ0hBTkdFCisJLyogdHJ5IGFza2luZyB0aGUgT1MgKi8KKwl7CisJICAgIFRFUk1JTkFMICp0ZXJtcCA9IChURVJNSU5BTCAqKSBUQ0I7CisJICAgIGlmIChOQ19JU0FUVFkodGVybXAtPkZpbGVkZXMpKSB7CisJCVNUUlVDVF9XSU5TSVpFIHNpemU7CisKKwkJZXJybm8gPSAwOworCQlkbyB7CisJCSAgICBpZiAoaW9jdGwodGVybXAtPkZpbGVkZXMsIElPQ1RMX1dJTlNJWkUsICZzaXplKSA+PSAwKSB7CisJCQkqbGluZXAgPSAoKHNwICE9IDAgJiYgc3AtPl9maWx0ZXJlZCkKKwkJCQkgID8gMQorCQkJCSAgOiBXSU5TSVpFX1JPV1Moc2l6ZSkpOworCQkJKmNvbHAgPSBXSU5TSVpFX0NPTFMoc2l6ZSk7CisJCQlUKCgiU1lTIHNjcmVlbiBzaXplOiBlbnZpcm9ubWVudCBMSU5FUyA9ICVkIENPTFVNTlMgPSAlZCIsCisJCQkgICAqbGluZXAsICpjb2xwKSk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfSB3aGlsZQorCQkgICAgKGVycm5vID09IEVJTlRSKTsKKwkgICAgfQorCX0KKyNlbmRpZiAvKiBIQVZFX1NJWkVDSEFOR0UgKi8KKworCWlmICh1c2VFbnYpIHsKKwkgICAgaWYgKHVzZVRpb2N0bCkgeworCQkvKgorCQkgKiBJZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHVzZWQsIHVwZGF0ZSB0aGVtLgorCQkgKi8KKwkJaWYgKChzcCA9PSAwIHx8ICFzcC0+X2ZpbHRlcmVkKSAmJiBfbmNfZ2V0ZW52X251bSgiTElORVMiKSA+IDApIHsKKwkJICAgIF9uY19zZXRlbnZfbnVtKCJMSU5FUyIsICpsaW5lcCk7CisJCX0KKwkJaWYgKF9uY19nZXRlbnZfbnVtKCJDT0xVTU5TIikgPiAwKSB7CisJCSAgICBfbmNfc2V0ZW52X251bSgiQ09MVU1OUyIsICpjb2xwKTsKKwkJfQorCSAgICB9CisKKwkgICAgLyoKKwkgICAgICogRmluYWxseSwgbG9vayBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCSAgICAgKgorCSAgICAgKiBTb2xhcmlzIGxldHMgdXNlcnMgb3ZlcnJpZGUgZWl0aGVyIGRpbWVuc2lvbiB3aXRoIGFuIGVudmlyb25tZW50CisJICAgICAqIHZhcmlhYmxlLgorCSAgICAgKi8KKwkgICAgaWYgKCh2YWx1ZSA9IF9uY19nZXRlbnZfbnVtKCJMSU5FUyIpKSA+IDApIHsKKwkJKmxpbmVwID0gdmFsdWU7CisJCVQoKCJzY3JlZW4gc2l6ZTogZW52aXJvbm1lbnQgTElORVMgPSAlZCIsICpsaW5lcCkpOworCSAgICB9CisJICAgIGlmICgodmFsdWUgPSBfbmNfZ2V0ZW52X251bSgiQ09MVU1OUyIpKSA+IDApIHsKKwkJKmNvbHAgPSB2YWx1ZTsKKwkJVCgoInNjcmVlbiBzaXplOiBlbnZpcm9ubWVudCBDT0xVTU5TID0gJWQiLCAqY29scCkpOworCSAgICB9CisJfQorCisJLyogaWYgd2UgY2FuJ3QgZ2V0IGR5bmFtaWMgaW5mbyBhYm91dCB0aGUgc2l6ZSwgdXNlIHN0YXRpYyAqLworCWlmICgqbGluZXAgPD0gMCkgeworCSAgICAqbGluZXAgPSAoaW50KSBsaW5lczsKKwl9CisJaWYgKCpjb2xwIDw9IDApIHsKKwkgICAgKmNvbHAgPSAoaW50KSBjb2x1bW5zOworCX0KKworCS8qIHRoZSB1bHRpbWF0ZSBmYWxsYmFjaywgYXNzdW1lIGZpeGVkIDI0eDgwIHNpemUgKi8KKwlpZiAoKmxpbmVwIDw9IDApIHsKKwkgICAgKmxpbmVwID0gMjQ7CisJfQorCWlmICgqY29scCA8PSAwKSB7CisJICAgICpjb2xwID0gODA7CisJfQorCisJLyoKKwkgKiBQdXQgdGhlIGRlcml2ZWQgdmFsdWVzIGJhY2sgaW4gdGhlIHNjcmVlbi1zaXplIGNhcHMsIHNvCisJICogdGlnZXRudW0oKSBhbmQgdGdldG51bSgpIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nLgorCSAqLworCWxpbmVzID0gKHNob3J0KSAoKmxpbmVwKTsKKwljb2x1bW5zID0gKHNob3J0KSAoKmNvbHApOworICAgIH0KKworICAgIFQoKCJzY3JlZW4gc2l6ZSBpcyAlZHglZCIsICpsaW5lcCwgKmNvbHApKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXRpYyBpbnQKK2Rydl9nZXRzaXplKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCAqbCwgaW50ICpjKQoreworICAgIEFzc2VydFRDQigpOworICAgIGFzc2VydChsICE9IDAgJiYgYyAhPSAwKTsKKyAgICAqbCA9IGxpbmVzOworICAgICpjID0gY29sdW1uczsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXRpYyBpbnQKK2Rydl9zZXRzaXplKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBsLCBpbnQgYykKK3sKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBsaW5lcyA9IChzaG9ydCkgbDsKKyAgICBjb2x1bW5zID0gKHNob3J0KSBjOworICAgIHJldHVybiBPSzsKK30KKworc3RhdGljIGludAorZHJ2X3NnbW9kZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgc2V0RmxhZywgVFRZICogYnVmKQoreworICAgIFNDUkVFTiAqc3AgPSBUQ0ItPmNzcDsKKyAgICBURVJNSU5BTCAqX3Rlcm0gPSAoVEVSTUlOQUwgKikgVENCOworICAgIGludCByZXN1bHQgPSBPSzsKKworICAgIEFzc2VydFRDQigpOworICAgIGlmIChzZXRGbGFnKSB7CisJZm9yICg7OykgeworCSAgICBpZiAoU0VUX1RUWShfdGVybS0+RmlsZWRlcywgYnVmKSAhPSAwKSB7CisJCWlmIChlcnJubyA9PSBFSU5UUikKKwkJICAgIGNvbnRpbnVlOworCQlpZiAoZXJybm8gPT0gRU5PVFRZKSB7CisJCSAgICBpZiAoc3ApCisJCQlzcC0+X25vdHR5ID0gVFJVRTsKKwkJfQorCQlyZXN1bHQgPSBFUlI7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfQorICAgIH0gZWxzZSB7CisJZm9yICg7OykgeworCSAgICBpZiAoR0VUX1RUWShfdGVybS0+RmlsZWRlcywgYnVmKSAhPSAwKSB7CisJCWlmIChlcnJubyA9PSBFSU5UUikKKwkJICAgIGNvbnRpbnVlOworCQlyZXN1bHQgPSBFUlI7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitkcnZfbW9kZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgcHJvZ0ZsYWcsIGludCBkZWZGbGFnKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgVEVSTUlOQUwgKl90ZXJtID0gKFRFUk1JTkFMICopIFRDQjsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIEFzc2VydFRDQigpOworICAgIHNwID0gVENCLT5jc3A7CisKKyAgICBpZiAocHJvZ0ZsYWcpCQkvKiBwcm9nIG1vZGUgKi8KKyAgICB7CisJaWYgKGRlZkZsYWcpIHsKKwkgICAgLyogZGVmX3Byb2dfbW9kZSAqLworCSAgICAvKgorCSAgICAgKiBUdXJuIG9mZiB0aGUgWFRBQlMgYml0IGluIHRoZSB0dHkgc3RydWN0dXJlIGlmIGl0IHdhcyBvbi4KKwkgICAgICovCisJICAgIGlmICgoZHJ2X3NnbW9kZShUQ0IsIEZBTFNFLCAmKF90ZXJtLT5OdHR5YikpID09IE9LKSkgeworI2lmZGVmIFRFUk1JT1MKKwkJX3Rlcm0tPk50dHliLmNfb2ZsYWcgJj0gKHVuc2lnbmVkKSB+T0ZMQUdTX1RBQlM7CisjZWxzZQorCQlfdGVybS0+TnR0eWIuc2dfZmxhZ3MgJj0gKHVuc2lnbmVkKSB+WFRBQlM7CisjZW5kaWYKKwkJY29kZSA9IE9LOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgLyogcmVzZXRfcHJvZ19tb2RlICovCisJICAgIGlmIChkcnZfc2dtb2RlKFRDQiwgVFJVRSwgJihfdGVybS0+TnR0eWIpKSA9PSBPSykgeworCQlpZiAoc3ApIHsKKwkJICAgIGlmIChzcC0+X2tleXBhZF9vbikKKwkJCV9uY19rZXlwYWQoc3AsIFRSVUUpOworCQl9CisJCWNvZGUgPSBPSzsKKwkgICAgfQorCX0KKyAgICB9IGVsc2UgewkJCS8qIHNoZWxsIG1vZGUgKi8KKwlpZiAoZGVmRmxhZykgeworCSAgICAvKiBkZWZfc2hlbGxfbW9kZSAqLworCSAgICAvKgorCSAgICAgKiBJZiBYVEFCUyB3YXMgb24sIHJlbW92ZSB0aGUgdGFiIGFuZCBiYWNrdGFiIGNhcGFiaWxpdGllcy4KKwkgICAgICovCisJICAgIGlmIChkcnZfc2dtb2RlKFRDQiwgRkFMU0UsICYoX3Rlcm0tPk90dHliKSkgPT0gT0spIHsKKyNpZmRlZiBURVJNSU9TCisJCWlmIChfdGVybS0+T3R0eWIuY19vZmxhZyAmIE9GTEFHU19UQUJTKQorCQkgICAgdGFiID0gYmFja190YWIgPSBOVUxMOworI2Vsc2UKKwkJaWYgKF90ZXJtLT5PdHR5Yi5zZ19mbGFncyAmIFhUQUJTKQorCQkgICAgdGFiID0gYmFja190YWIgPSBOVUxMOworI2VuZGlmCisJCWNvZGUgPSBPSzsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIC8qIHJlc2V0X3NoZWxsX21vZGUgKi8KKwkgICAgaWYgKHNwKSB7CisJCV9uY19rZXlwYWQoc3AsIEZBTFNFKTsKKwkJTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKHNwKTsKKwkgICAgfQorCSAgICBjb2RlID0gZHJ2X3NnbW9kZShUQ0IsIFRSVUUsICYoX3Rlcm0tPk90dHliKSk7CisJfQorICAgIH0KKyAgICByZXR1cm4gKGNvZGUpOworfQorCitzdGF0aWMgdm9pZAorZHJ2X3dyYXAoU0NSRUVOICpzcCkKK3sKKyAgICBpZiAoc3ApIHsKKwlzcC0+X21vdXNlX3dyYXAoc3ApOworCU5DVVJTRVNfU1BfTkFNRShfbmNfc2NyZWVuX3dyYXApIChzcCk7CisJTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl93cmFwKSAoc3ApOwkvKiB3cmFwIHVwIGN1cnNvciBhZGRyZXNzaW5nICovCisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZHJ2X3JlbGVhc2UoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiBHQ0NfVU5VU0VEKQoreworfQorCisjICBkZWZpbmUgU0dSMF9URVNUKG1vZGUpIChtb2RlICE9IDApICYmIChleGl0X2F0dHJpYnV0ZV9tb2RlID09IDAgfHwgc3RyY21wKG1vZGUsIGV4aXRfYXR0cmlidXRlX21vZGUpKQorCitzdGF0aWMgdm9pZAorZHJ2X3NjcmVlbl9pbml0KFNDUkVFTiAqc3ApCit7CisgICAgVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqVENCID0gVENCT2Yoc3ApOworCisgICAgQXNzZXJ0VENCKCk7CisKKyAgICAvKgorICAgICAqIENoZWNrIGZvciBtaXNtYXRjaGVkIGdyYXBoaWMtcmVuZGl0aW9uIGNhcGFiaWxpdGllcy4gIE1vc3QgU1ZyNAorICAgICAqIHRlcm1pbmZvIHRyZWVzIGNvbnRhaW4gZW50cmllcyB0aGF0IGhhdmUgcm11bCBvciBybXNvIGVxdWF0ZWQgdG8KKyAgICAgKiBzZ3IwIChTb2xhcmlzIGN1cnNlcyBjb3BlcyB3aXRoIHRob3NlIGVudHJpZXMpLiAgV2UgZG8gdGhpcyBvbmx5CisgICAgICogZm9yIGN1cnNlcywgc2luY2UgbWFueSB0ZXJtY2FwIGFwcGxpY2F0aW9ucyBhc3N1bWUgdGhhdAorICAgICAqIHNtc28vcm1zbyBhbmQgc211bC9ybXVsIGFyZSBwYWlyZWQsIGFuZCB3aWxsIG5vdCBmdW5jdGlvbgorICAgICAqIHByb3Blcmx5IGlmIHdlIHJlbW92ZSBybXNvIG9yIHJtdWwuICBDdXJzZXMgYXBwbGljYXRpb25zCisgICAgICogc2hvdWxkbid0IGJlIGxvb2tpbmcgYXQgdGhpcyBkZXRhaWwuCisgICAgICovCisgICAgc3AtPl91c2Vfcm1zbyA9IFNHUjBfVEVTVChleGl0X3N0YW5kb3V0X21vZGUpOworICAgIHNwLT5fdXNlX3JtdWwgPSBTR1IwX1RFU1QoZXhpdF91bmRlcmxpbmVfbW9kZSk7CisKKyAgICAvKgorICAgICAqIENoZWNrIHdoZXRoZXIgd2UgY2FuIG9wdGltaXplIHNjcm9sbGluZyB1bmRlciBkdW1iIHRlcm1pbmFscyBpbgorICAgICAqIGNhc2Ugd2UgZG8gbm90IGhhdmUgYW55IG9mIHRoZXNlIGNhcGFiaWxpdGllcywgc2Nyb2xsaW5nCisgICAgICogb3B0aW1pemF0aW9uIHdpbGwgYmUgdXNlbGVzcy4KKyAgICAgKi8KKyAgICBzcC0+X3Njcm9sbGluZyA9ICgoc2Nyb2xsX2ZvcndhcmQgJiYgc2Nyb2xsX3JldmVyc2UpIHx8CisJCSAgICAgICgocGFybV9yaW5kZXggfHwKKwkJCXBhcm1faW5zZXJ0X2xpbmUgfHwKKwkJCWluc2VydF9saW5lKSAmJgorCQkgICAgICAgKHBhcm1faW5kZXggfHwKKwkJCXBhcm1fZGVsZXRlX2xpbmUgfHwKKwkJCWRlbGV0ZV9saW5lKSkpOworCisgICAgTkNVUlNFU19TUF9OQU1FKGJhdWRyYXRlKSAoc3ApOworCisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl9pbml0KSAoc3ApOworICAgIC8qIGluaXRpYWxpemUgdGVybWluYWwgdG8gYSBzYW5lIHN0YXRlICovCisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JlZW5faW5pdCkgKHNwKTsKK30KKworc3RhdGljIHZvaWQKK2Rydl9pbml0KFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgVEVSTUlOQUwgKnRybTsKKworICAgIEFzc2VydFRDQigpOworCisgICAgdHJtID0gKFRFUk1JTkFMICopIFRDQjsKKworICAgIFRDQi0+aW5mby5pbml0Y29sb3IgPSBWQUxJRF9TVFJJTkcoaW5pdGlhbGl6ZV9jb2xvcik7CisgICAgVENCLT5pbmZvLmNhbmNoYW5nZSA9IGNhbl9jaGFuZ2U7CisgICAgVENCLT5pbmZvLmhhc2NvbG9yID0gKChWQUxJRF9OVU1FUklDKG1heF9jb2xvcnMpICYmIFZBTElEX05VTUVSSUMobWF4X3BhaXJzKQorCQkJICAgJiYgKCgoc2V0X2ZvcmVncm91bmQgIT0gTlVMTCkKKwkJCQkmJiAoc2V0X2JhY2tncm91bmQgIT0gTlVMTCkpCisJCQkgICAgICAgfHwgKChzZXRfYV9mb3JlZ3JvdW5kICE9IE5VTEwpCisJCQkJICAgJiYgKHNldF9hX2JhY2tncm91bmQgIT0gTlVMTCkpCisJCQkgICAgICAgfHwgc2V0X2NvbG9yX3BhaXIpKSA/IFRSVUUgOiBGQUxTRSk7CisKKyAgICBUQ0ItPmluZm8uY2FuaW5pdCA9ICEoZXhpdF9jYV9tb2RlICYmIG5vbl9yZXZfcm1jdXApOworCisgICAgVENCLT5pbmZvLm1heHBhaXJzID0gVkFMSURfTlVNRVJJQyhtYXhfcGFpcnMpID8gbWF4X3BhaXJzIDogMDsKKyAgICBUQ0ItPmluZm8ubWF4Y29sb3JzID0gVkFMSURfTlVNRVJJQyhtYXhfY29sb3JzKSA/IG1heF9jb2xvcnMgOiAwOworICAgIFRDQi0+aW5mby5udW1sYWJlbHMgPSBWQUxJRF9OVU1FUklDKG51bV9sYWJlbHMpID8gbnVtX2xhYmVscyA6IDA7CisgICAgVENCLT5pbmZvLmxhYmVsd2lkdGggPSBWQUxJRF9OVU1FUklDKGxhYmVsX3dpZHRoKSA/IGxhYmVsX3dpZHRoIDogMDsKKyAgICBUQ0ItPmluZm8ubGFiZWxoZWlnaHQgPSBWQUxJRF9OVU1FUklDKGxhYmVsX2hlaWdodCkgPyBsYWJlbF9oZWlnaHQgOiAwOworICAgIFRDQi0+aW5mby5ub2NvbG9ydmlkZW8gPSBWQUxJRF9OVU1FUklDKG5vX2NvbG9yX3ZpZGVvKSA/IG5vX2NvbG9yX3ZpZGVvCisJOiAwOworICAgIFRDQi0+aW5mby50YWJzaXplID0gVkFMSURfTlVNRVJJQyhpbml0X3RhYnMpID8gKGludCkgaW5pdF90YWJzIDogODsKKworICAgIFRDQi0+aW5mby5kZWZhdWx0UGFsZXR0ZSA9IGh1ZV9saWdodG5lc3Nfc2F0dXJhdGlvbiA/IF9uY19obHNfcGFsZXR0ZSA6IF9uY19jZ2FfcGFsZXR0ZTsKKworICAgIC8qCisgICAgICogSWYgYW4gYXBwbGljYXRpb24gY2FsbHMgc2V0dXB0ZXJtKCkgcmF0aGVyIHRoYW4gaW5pdHNjcigpIG9yCisgICAgICogbmV3dGVybSgpLCB3ZSB3aWxsIG5vdCBoYXZlIHRoZSBkZWZfcHJvZ19tb2RlKCkgY2FsbCBpbgorICAgICAqIF9uY19zZXR1cHNjcmVlbigpLiAgRG8gaXQgbm93IGFueXdheSwgc28gd2UgY2FuIGluaXRpYWxpemUgdGhlCisgICAgICogYmF1ZHJhdGUuCisgICAgICovCisgICAgaWYgKE5DX0lTQVRUWSh0cm0tPkZpbGVkZXMpKSB7CisJVENCLT5kcnYtPnRkX21vZGUoVENCLCBUUlVFLCBUUlVFKTsKKyAgICB9Cit9CisKKyNkZWZpbmUgTUFYX1BBTEVUVEUJOAorI2RlZmluZSBJblBhbGV0dGUobikJKChuKSA+PSAwICYmIChuKSA8IE1BWF9QQUxFVFRFKQorCitzdGF0aWMgdm9pZAorZHJ2X2luaXRwYWlyKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBwYWlyLCBpbnQgZiwgaW50IGIpCit7CisgICAgU0NSRUVOICpzcDsKKworICAgIEFzc2VydFRDQigpOworICAgIFNldFNQKCk7CisKKyAgICBpZiAoKGluaXRpYWxpemVfcGFpciAhPSBOVUxMKSAmJiBJblBhbGV0dGUoZikgJiYgSW5QYWxldHRlKGIpKSB7CisJY29uc3QgY29sb3JfdCAqdHAgPSBJbmZvT2Yoc3ApLmRlZmF1bHRQYWxldHRlOworCisJVFIoVFJBQ0VfQVRUUlMsCisJICAgKCJpbml0aWFsaXppbmcgcGFpcjogcGFpciA9ICVkLCBmZz0oJWQsJWQsJWQpLCBiZz0oJWQsJWQsJWQpIiwKKwkgICAgcGFpciwKKwkgICAgdHBbZl0ucmVkLCB0cFtmXS5ncmVlbiwgdHBbZl0uYmx1ZSwKKwkgICAgdHBbYl0ucmVkLCB0cFtiXS5ncmVlbiwgdHBbYl0uYmx1ZSkpOworCisJTkNVUlNFU19QVVRQMigiaW5pdGlhbGl6ZV9wYWlyIiwKKwkJICAgICAgVFBBUk1fNyhpbml0aWFsaXplX3BhaXIsCisJCQkgICAgICBwYWlyLAorCQkJICAgICAgdHBbZl0ucmVkLCB0cFtmXS5ncmVlbiwgdHBbZl0uYmx1ZSwKKwkJCSAgICAgIHRwW2JdLnJlZCwgdHBbYl0uZ3JlZW4sIHRwW2JdLmJsdWUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2RlZmF1bHRfZmcoU0NSRUVOICpzcCkKK3sKKyNpZiBOQ1VSU0VTX0VYVF9GVU5DUworICAgIHJldHVybiAoc3AgIT0gMCkgPyBzcC0+X2RlZmF1bHRfZmcgOiBDT0xPUl9XSElURTsKKyNlbHNlCisgICAgcmV0dXJuIENPTE9SX1dISVRFOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2RlZmF1bHRfYmcoU0NSRUVOICpzcCkKK3sKKyNpZiBOQ1VSU0VTX0VYVF9GVU5DUworICAgIHJldHVybiBzcCAhPSAwID8gc3AtPl9kZWZhdWx0X2JnIDogQ09MT1JfQkxBQ0s7CisjZWxzZQorICAgIHJldHVybiBDT0xPUl9CTEFDSzsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAorZHJ2X2luaXRjb2xvcihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCSAgICAgIGludCBjb2xvciwgaW50IHIsIGludCBnLCBpbnQgYikKK3sKKyAgICBTQ1JFRU4gKnNwID0gVENCLT5jc3A7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBpZiAoaW5pdGlhbGl6ZV9jb2xvciAhPSBOVUxMKSB7CisJTkNVUlNFU19QVVRQMigiaW5pdGlhbGl6ZV9jb2xvciIsCisJCSAgICAgIFRQQVJNXzQoaW5pdGlhbGl6ZV9jb2xvciwgY29sb3IsIHIsIGcsIGIpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitkcnZfZG9fY29sb3IoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICAgIGludCBvbGRfcGFpciwKKwkgICAgIGludCBwYWlyLAorCSAgICAgaW50IHJldmVyc2UsCisJICAgICBOQ1VSU0VTX1NQX09VVEMgb3V0YykKK3sKKyAgICBTQ1JFRU4gKnNwID0gVENCLT5jc3A7CisgICAgTkNVUlNFU19DT0xPUl9UIGZnID0gQ09MT1JfREVGQVVMVDsKKyAgICBOQ1VSU0VTX0NPTE9SX1QgYmcgPSBDT0xPUl9ERUZBVUxUOworICAgIE5DVVJTRVNfQ09MT1JfVCBvbGRfZmcsIG9sZF9iZzsKKworICAgIEFzc2VydFRDQigpOworICAgIGlmIChzcCA9PSAwKQorCXJldHVybjsKKworICAgIGlmIChwYWlyIDwgMCB8fCBwYWlyID49IENPTE9SX1BBSVJTKSB7CisJcmV0dXJuOworICAgIH0gZWxzZSBpZiAocGFpciAhPSAwKSB7CisJaWYgKHNldF9jb2xvcl9wYWlyKSB7CisJICAgIFRQVVRTX1RSQUNFKCJzZXRfY29sb3JfcGFpciIpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgVFBBUk1fMShzZXRfY29sb3JfcGFpciwgcGFpciksIDEsIG91dGMpOworCSAgICByZXR1cm47CisJfSBlbHNlIGlmIChzcCAhPSAwKSB7CisJICAgIE5DVVJTRVNfU1BfTkFNRShwYWlyX2NvbnRlbnQpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAgKHNob3J0KSBwYWlyLAorCQkJCQkgICAmZmcsCisJCQkJCSAgICZiZyk7CisJfQorICAgIH0KKworICAgIGlmIChvbGRfcGFpciA+PSAwCisJJiYgc3AgIT0gMAorCSYmIE5DVVJTRVNfU1BfTkFNRShwYWlyX2NvbnRlbnQpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAoc2hvcnQpIG9sZF9wYWlyLAorCQkJCQkgICZvbGRfZmcsCisJCQkJCSAgJm9sZF9iZykgIT1FUlIpIHsKKwlpZiAoKGlzRGVmYXVsdENvbG9yKGZnKSAmJiAhaXNEZWZhdWx0Q29sb3Iob2xkX2ZnKSkKKwkgICAgfHwgKGlzRGVmYXVsdENvbG9yKGJnKSAmJiAhaXNEZWZhdWx0Q29sb3Iob2xkX2JnKSkpIHsKKyNpZiBOQ1VSU0VTX0VYVF9GVU5DUworCSAgICAvKgorCSAgICAgKiBBIG1pbm9yIG9wdGltaXphdGlvbiAtIGJ1dCBleHRlbnNpb24uICBJZiAiQVgiIGlzIHNwZWNpZmllZCBpbgorCSAgICAgKiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24sIHRyZWF0IGl0IGFzIHNjcmVlbidzIGluZGljYXRvciBvZiBFQ01BCisJICAgICAqIFNHUiAzOSBhbmQgU0dSIDQ5LCBhbmQgYXNzdW1lIHRoZSB0d28gc2VxdWVuY2VzIGFyZSBpbmRlcGVuZGVudC4KKwkgICAgICovCisJICAgIGlmIChzcC0+X2hhc19zZ3JfMzlfNDkKKwkJJiYgaXNEZWZhdWx0Q29sb3Iob2xkX2JnKQorCQkmJiAhaXNEZWZhdWx0Q29sb3Iob2xkX2ZnKSkgeworCQlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3ggIlwwMzNbMzltIiwgMSwgb3V0Yyk7CisJICAgIH0gZWxzZSBpZiAoc3AtPl9oYXNfc2dyXzM5XzQ5CisJCSAgICAgICAmJiBpc0RlZmF1bHRDb2xvcihvbGRfZmcpCisJCSAgICAgICAmJiAhaXNEZWZhdWx0Q29sb3Iob2xkX2JnKSkgeworCQlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3ggIlwwMzNbNDltIiwgMSwgb3V0Yyk7CisJICAgIH0gZWxzZQorI2VuZGlmCisJCWRydl9yZXNjb2woVENCKTsKKwl9CisgICAgfSBlbHNlIHsKKwlkcnZfcmVzY29sKFRDQik7CisJaWYgKG9sZF9wYWlyIDwgMCkKKwkgICAgcmV0dXJuOworICAgIH0KKworI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCisgICAgaWYgKGlzRGVmYXVsdENvbG9yKGZnKSkKKwlmZyA9IChOQ1VSU0VTX0NPTE9SX1QpIGRlZmF1bHRfZmcoc3ApOworICAgIGlmIChpc0RlZmF1bHRDb2xvcihiZykpCisJYmcgPSAoTkNVUlNFU19DT0xPUl9UKSBkZWZhdWx0X2JnKHNwKTsKKyNlbmRpZgorCisgICAgaWYgKHJldmVyc2UpIHsKKwlOQ1VSU0VTX0NPTE9SX1QgeHggPSBmZzsKKwlmZyA9IGJnOworCWJnID0geHg7CisgICAgfQorCisgICAgVFIoVFJBQ0VfQVRUUlMsICgic2V0dGluZyBjb2xvcnM6IHBhaXIgPSAlZCwgZmcgPSAlZCwgYmcgPSAlZCIsIHBhaXIsCisJCSAgICAgZmcsIGJnKSk7CisKKyAgICBpZiAoIWlzRGVmYXVsdENvbG9yKGZnKSkgeworCWRydl9zZXRjb2xvcihUQ0IsIFRSVUUsIGZnLCBvdXRjKTsKKyAgICB9CisgICAgaWYgKCFpc0RlZmF1bHRDb2xvcihiZykpIHsKKwlkcnZfc2V0Y29sb3IoVENCLCBGQUxTRSwgYmcsIG91dGMpOworICAgIH0KK30KKworI2RlZmluZSB4dGVybV9rbW91cyAiXDAzM1tNIgorc3RhdGljIHZvaWQKK2luaXRfeHRlcm1fbW91c2UoU0NSRUVOICpzcCkKK3sKKyAgICBzcC0+X21vdXNlX3R5cGUgPSBNX1hURVJNOworICAgIHNwLT5fbW91c2VfeHRlcm1jYXAgPSBOQ1VSU0VTX1NQX05BTUUodGlnZXRzdHIpIChOQ1VSU0VTX1NQX0FSR3ggIlhNIik7CisgICAgaWYgKCFWQUxJRF9TVFJJTkcoc3AtPl9tb3VzZV94dGVybWNhcCkpCisJc3AtPl9tb3VzZV94dGVybWNhcCA9ICJcMDMzWz8xMDAwJT8lcDElezF9JT0ldGglZWwlOyI7Cit9CisKK3N0YXRpYyB2b2lkCitkcnZfaW5pdG1vdXNlKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgU0NSRUVOICpzcDsKKworICAgIEFzc2VydFRDQigpOworICAgIFNldFNQKCk7CisKKyAgICAvKiB3ZSBrbm93IGhvdyB0byByZWNvZ25pemUgbW91c2UgZXZlbnRzIHVuZGVyICJ4dGVybSIgKi8KKyAgICBpZiAoc3AgIT0gMCkgeworCWlmIChrZXlfbW91c2UgIT0gMCkgeworCSAgICBpZiAoIXN0cmNtcChrZXlfbW91c2UsIHh0ZXJtX2ttb3VzKQorCQl8fCBzdHJzdHIoVGVybWluYWxPZihzcCktPnR5cGUudGVybV9uYW1lcywgInh0ZXJtIikgIT0gMCkgeworCQlpbml0X3h0ZXJtX21vdXNlKHNwKTsKKwkgICAgfQorCX0gZWxzZSBpZiAoc3Ryc3RyKFRlcm1pbmFsT2Yoc3ApLT50eXBlLnRlcm1fbmFtZXMsICJ4dGVybSIpICE9IDApIHsKKwkgICAgaWYgKF9uY19hZGRfdG9fdHJ5KCYoc3AtPl9rZXl0cnkpLCB4dGVybV9rbW91cywgS0VZX01PVVNFKSA9PSBPSykKKwkJaW5pdF94dGVybV9tb3VzZShzcCk7CisJfQorICAgIH0KK30KKworc3RhdGljIGludAorZHJ2X3Rlc3Rtb3VzZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCSAgICAgIGludCBkZWxheQorCSAgICAgIEVWRU5UTElTVF8ybmQoX25jX2V2ZW50bGlzdCAqIGV2bCkpCit7CisgICAgaW50IHJjID0gMDsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKworI2lmIFVTRV9TWVNNT1VTRQorICAgIGlmICgoc3AtPl9tb3VzZV90eXBlID09IE1fU1lTTU9VU0UpCisJJiYgKHNwLT5fc3lzbW91c2VfaGVhZCA8IHNwLT5fc3lzbW91c2VfdGFpbCkpIHsKKwlyYyA9IFRXX01PVVNFOworICAgIH0gZWxzZQorI2VuZGlmCisgICAgeworCXJjID0gVENCT2Yoc3ApLT5kcnYtPnRkX3R3YWl0KFRDQk9mKHNwKSwKKwkJCQkgICAgICBUV0FJVF9NQVNLLAorCQkJCSAgICAgIGRlbGF5LAorCQkJCSAgICAgIChpbnQgKikgMAorCQkJCSAgICAgIEVWRU5UTElTVF8ybmQoZXZsKSk7CisjaWYgVVNFX1NZU01PVVNFCisJaWYgKChzcC0+X21vdXNlX3R5cGUgPT0gTV9TWVNNT1VTRSkKKwkgICAgJiYgKHNwLT5fc3lzbW91c2VfaGVhZCA8IHNwLT5fc3lzbW91c2VfdGFpbCkKKwkgICAgJiYgKHJjID09IDApCisJICAgICYmIChlcnJubyA9PSBFSU5UUikpIHsKKwkgICAgcmMgfD0gVFdfTU9VU0U7CisJfQorI2VuZGlmCisgICAgfQorICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludAorZHJ2X212Y3VyKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCB5b2xkLCBpbnQgeG9sZCwgaW50IHluZXcsIGludCB4bmV3KQoreworICAgIFNDUkVFTiAqc3AgPSBUQ0ItPmNzcDsKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cikgKHNwLCB5b2xkLCB4b2xkLCB5bmV3LCB4bmV3KTsKK30KKworc3RhdGljIHZvaWQKK2Rydl9od2xhYmVsKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBsYWJudW0sIGNoYXIgKnRleHQpCit7CisgICAgU0NSRUVOICpzcCA9IFRDQi0+Y3NwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgaWYgKGxhYm51bSA+IDAgJiYgbGFibnVtIDw9IG51bV9sYWJlbHMpIHsKKwlOQ1VSU0VTX1BVVFAyKCJwbGFiX25vcm0iLAorCQkgICAgICBUUEFSTV8yKHBsYWJfbm9ybSwgbGFibnVtLCB0ZXh0KSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZHJ2X2h3bGFiZWxPbk9mZihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgT25GbGFnKQoreworICAgIFNDUkVFTiAqc3AgPSBUQ0ItPmNzcDsKKworICAgIEFzc2VydFRDQigpOworICAgIGlmIChPbkZsYWcpIHsKKwlOQ1VSU0VTX1BVVFAyKCJsYWJlbF9vbiIsIGxhYmVsX29uKTsKKyAgICB9IGVsc2UgeworCU5DVVJTRVNfUFVUUDIoImxhYmVsX29mZiIsIGxhYmVsX29mZik7CisgICAgfQorfQorCitzdGF0aWMgY2h0eXBlCitkcnZfY29uYXR0cihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIFNDUkVFTiAqc3AgPSBUQ0ItPmNzcDsKKyAgICBjaHR5cGUgYXR0cnMgPSBBX05PUk1BTDsKKworICAgIEFzc2VydFRDQigpOworICAgIGlmIChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQorCWF0dHJzIHw9IEFfQUxUQ0hBUlNFVDsKKworICAgIGlmIChlbnRlcl9ibGlua19tb2RlKQorCWF0dHJzIHw9IEFfQkxJTks7CisKKyAgICBpZiAoZW50ZXJfYm9sZF9tb2RlKQorCWF0dHJzIHw9IEFfQk9MRDsKKworICAgIGlmIChlbnRlcl9kaW1fbW9kZSkKKwlhdHRycyB8PSBBX0RJTTsKKworICAgIGlmIChlbnRlcl9yZXZlcnNlX21vZGUpCisJYXR0cnMgfD0gQV9SRVZFUlNFOworCisgICAgaWYgKGVudGVyX3N0YW5kb3V0X21vZGUpCisJYXR0cnMgfD0gQV9TVEFORE9VVDsKKworICAgIGlmIChlbnRlcl9wcm90ZWN0ZWRfbW9kZSkKKwlhdHRycyB8PSBBX1BST1RFQ1Q7CisKKyAgICBpZiAoZW50ZXJfc2VjdXJlX21vZGUpCisJYXR0cnMgfD0gQV9JTlZJUzsKKworICAgIGlmIChlbnRlcl91bmRlcmxpbmVfbW9kZSkKKwlhdHRycyB8PSBBX1VOREVSTElORTsKKworICAgIGlmIChzcCAmJiBzcC0+X2NvbG9yb24pCisJYXR0cnMgfD0gQV9DT0xPUjsKKworI2lmIFVTRV9JVEFMSUMKKyAgICBpZiAoZW50ZXJfaXRhbGljc19tb2RlKQorCWF0dHJzIHw9IEFfSVRBTElDOworI2VuZGlmCisKKyAgICByZXR1cm4gKGF0dHJzKTsKK30KKworc3RhdGljIHZvaWQKK2Rydl9zZXRmaWx0ZXIoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQikKK3sKKyAgICBBc3NlcnRUQ0IoKTsKKworICAgIGNsZWFyX3NjcmVlbiA9IDA7CisgICAgY3Vyc29yX2Rvd24gPSBwYXJtX2Rvd25fY3Vyc29yID0gMDsKKyAgICBjdXJzb3JfYWRkcmVzcyA9IDA7CisgICAgY3Vyc29yX3VwID0gcGFybV91cF9jdXJzb3IgPSAwOworICAgIHJvd19hZGRyZXNzID0gMDsKKyAgICBjdXJzb3JfaG9tZSA9IGNhcnJpYWdlX3JldHVybjsKK30KKworc3RhdGljIHZvaWQKK2Rydl9pbml0YWNzKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGNodHlwZSAqcmVhbF9tYXAsIGNodHlwZSAqZmFrZV9tYXApCit7CisgICAgU0NSRUVOICpzcCA9IFRDQi0+Y3NwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgYXNzZXJ0KHNwICE9IDApOworICAgIGlmIChlbmFfYWNzICE9IE5VTEwpIHsKKwlOQ1VSU0VTX1BVVFAyKCJlbmFfYWNzIiwgZW5hX2Fjcyk7CisgICAgfQorI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCisgICAgLyoKKyAgICAgKiBMaW51eCBjb25zb2xlICJzdXBwb3J0cyIgdGhlICJQQyBST00iIGNoYXJhY3RlciBzZXQgYnkgdGhlIGNvaW5jaWRlbmNlCisgICAgICogdGhhdCBzbXBjaC9ybXBjaCBhbmQgc21hY3Mvcm1hY3MgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMuICBuY3Vyc2VzIGhhcworICAgICAqIG5vIGNvZGVwYWdlIHN1cHBvcnQgKHNlZSBTQ08gTWVyZ2UgZm9yIGFuIGV4YW1wbGUpLiAgT3V0c2lkZSBvZiB0aGUKKyAgICAgKiB2YWx1ZXMgZGVmaW5lZCBpbiBhY3NjLCB0aGVyZSBhcmUgbm8gZGVmaW5pdGlvbnMgZm9yIHRoZSAiUEMgUk9NIgorICAgICAqIGNoYXJhY3RlciBzZXQgKGFzc3VtZWQgYnkgc29tZSBhcHBsaWNhdGlvbnMgdG8gYmUgY29kZXBhZ2UgNDM3KSwgYnV0IHdlCisgICAgICogYWxsb3cgdGhvc2UgYXBwbGljYXRpb25zIHRvIHVzZSB0aG9zZSBjb2RlcG9pbnRzLgorICAgICAqCisgICAgICogdGVzdC9ibHVlLmMgdXNlcyB0aGlzIGZlYXR1cmUuCisgICAgICovCisjZGVmaW5lIFBDSF9LTFVER0UoYSxiKSAoYSAhPSAwICYmIGIgIT0gMCAmJiAhc3RyY21wKGEsYikpCisgICAgaWYgKFBDSF9LTFVER0UoZW50ZXJfcGNfY2hhcnNldF9tb2RlLCBlbnRlcl9hbHRfY2hhcnNldF9tb2RlKSAmJgorCVBDSF9LTFVER0UoZXhpdF9wY19jaGFyc2V0X21vZGUsIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpIHsKKwlzaXplX3QgaTsKKwlmb3IgKGkgPSAxOyBpIDwgQUNTX0xFTjsgKytpKSB7CisJICAgIGlmIChyZWFsX21hcFtpXSA9PSAwKSB7CisJCXJlYWxfbWFwW2ldID0gKGNodHlwZSkgaTsKKwkJaWYgKHJlYWxfbWFwICE9IGZha2VfbWFwKSB7CisJCSAgICBpZiAoc3AgIT0gMCkKKwkJCXNwLT5fc2NyZWVuX2Fjc19tYXBbaV0gPSBUUlVFOworCQl9CisJICAgIH0KKwl9CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoYWNzX2NoYXJzICE9IE5VTEwpIHsKKwlzaXplX3QgaSA9IDA7CisJc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihhY3NfY2hhcnMpOworCisJd2hpbGUgKGkgKyAxIDwgbGVuZ3RoKSB7CisJICAgIGlmIChhY3NfY2hhcnNbaV0gIT0gMCAmJiBVQ2hhcihhY3NfY2hhcnNbaV0pIDwgQUNTX0xFTikgeworCQlyZWFsX21hcFtVQ2hhcihhY3NfY2hhcnNbaV0pXSA9IFVDaGFyKGFjc19jaGFyc1tpICsgMV0pIHwgQV9BTFRDSEFSU0VUOworCQlpZiAoc3AgIT0gMCkKKwkJICAgIHNwLT5fc2NyZWVuX2Fjc19tYXBbVUNoYXIoYWNzX2NoYXJzW2ldKV0gPSBUUlVFOworCSAgICB9CisJICAgIGkgKz0gMjsKKwl9CisgICAgfQorI2lmZGVmIFRSQUNFCisgICAgLyogU2hvdyB0aGUgZXF1aXZhbGVudCBtYXBwaW5nLCBub3RpbmcgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlCisgICAgICogZ2l2ZW4gYXR0cmlidXRlLCB3aGV0aGVyIGJ5IHJlLW9yZGVyaW5nIG9yIGR1cGxpY2F0aW9uLgorICAgICAqLworICAgIGlmIChVU0VfVFJBQ0VGKFRSQUNFX0NBTExTKSkgeworCXNpemVfdCBuLCBtOworCWNoYXIgc2hvd1tBQ1NfTEVOICogMiArIDFdOworCWZvciAobiA9IDEsIG0gPSAwOyBuIDwgQUNTX0xFTjsgbisrKSB7CisJICAgIGlmIChyZWFsX21hcFtuXSAhPSAwKSB7CisJCXNob3dbbSsrXSA9IChjaGFyKSBuOworCQlzaG93W20rK10gPSAoY2hhcikgQ2hDaGFyT2YocmVhbF9tYXBbbl0pOworCSAgICB9CisJfQorCXNob3dbbV0gPSAwOworCWlmIChhY3NfY2hhcnMgPT0gTlVMTCB8fCBzdHJjbXAoYWNzX2NoYXJzLCBzaG93KSkKKwkgICAgX3RyYWNlZigiJXMgYWNzX2NoYXJzICVzIiwKKwkJICAgIChhY3NfY2hhcnMgPT0gTlVMTCkgPyAiTlVMTCIgOiAiUkVBRCIsCisJCSAgICBfbmNfdmlzYnVmKGFjc19jaGFycykpOworCV90cmFjZWYoIiVzIGFjc19jaGFycyAlcyIsCisJCShhY3NfY2hhcnMgPT0gTlVMTCkKKwkJPyAiTlVMTCIKKwkJOiAoc3RyY21wKGFjc19jaGFycywgc2hvdykKKwkJICAgPyAiRElGRiIKKwkJICAgOiAiU0FNRSIpLAorCQlfbmNfdmlzYnVmKHNob3cpKTsKKworCV9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7CisgICAgfQorI2VuZGlmIC8qIFRSQUNFICovCit9CisKKyNkZWZpbmUgRU5TVVJFX1RJTkZPKHNwKSAoVENCT2Yoc3ApLT5kcnYtPmlzVGVybWluZm8pCisKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfY29va2llX2luaXQoU0NSRUVOICpzcCkKK3sKKyAgICBib29sIHN1cHBvcnRfY29va2llcyA9IFVTRV9YTUNfU1VQUE9SVDsKKyAgICBURVJNSU5BTF9DT05UUk9MX0JMT0NLICpUQ0IgPSAoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqKSAoc3AtPl90ZXJtKTsKKworICAgIGlmIChzcCA9PSAwIHx8ICFFTlNVUkVfVElORk8oc3ApKQorCXJldHVybjsKKworI2lmIFVTRV9YTUNfU1VQUE9SVAorICAgIC8qCisgICAgICogSWYgd2UgaGF2ZSBubyBtYWdpYy1jb29raWUgc3VwcG9ydCBjb21waWxlZC1pbiwgb3IgaWYgaXQgaXMgc3VwcHJlc3NlZAorICAgICAqIGluIHRoZSBlbnZpcm9ubWVudCwgcmVzZXQgdGhlIHN1cHBvcnQtZmxhZy4KKyAgICAgKi8KKyAgICBpZiAobWFnaWNfY29va2llX2dsaXRjaCA+PSAwKSB7CisJaWYgKGdldGVudigiTkNVUlNFU19OT19NQUdJQ19DT09LSUUiKSAhPSAwKSB7CisJICAgIHN1cHBvcnRfY29va2llcyA9IEZBTFNFOworCX0KKyAgICB9CisjZW5kaWYKKworICAgIGlmICghc3VwcG9ydF9jb29raWVzICYmIG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPj0gMCkgeworCVQoKCJ3aWxsIGRpc2FibGUgYXR0cmlidXRlcyB0byB3b3JrIHcvbyBtYWdpYyBjb29raWVzIikpOworICAgIH0KKworICAgIGlmIChtYWdpY19jb29raWVfZ2xpdGNoID4gMCkgewkvKiB0dmksIHd5c2UgKi8KKworCXNwLT5feG1jX3RyaWdnZXJzID0gc3AtPl9va19hdHRyaWJ1dGVzICYgWE1DX0NPTkZMSUNUOworI2lmIDAKKwkvKgorCSAqIFdlICJzaG91bGQiIHRyZWF0IGNvbG9ycyBhcyBhbiBhdHRyaWJ1dGUuICBUaGUgd3lzZTM1MCAoYW5kIGl0cworCSAqIGNsb25lcykgYXBwZWFyIHRvIGJlIHRoZSBvbmx5IG9uZXMgdGhhdCBoYXZlIGJvdGggY29sb3JzIGFuZCBtYWdpYworCSAqIGNvb2tpZXMuCisJICovCisJaWYgKGhhc19jb2xvcnMoKSkgeworCSAgICBzcC0+X3htY190cmlnZ2VycyB8PSBBX0NPTE9SOworCX0KKyNlbmRpZgorCXNwLT5feG1jX3N1cHByZXNzID0gc3AtPl94bWNfdHJpZ2dlcnMgJiAoY2h0eXBlKSB+KEFfQk9MRCk7CisKKwlUKCgibWFnaWMgY29va2llIGF0dHJpYnV0ZXMgJXMiLCBfdHJhY2VhdHRyKHNwLT5feG1jX3N1cHByZXNzKSkpOworCS8qCisJICogU3VwcG9ydGluZyBsaW5lLWRyYXdpbmcgbWF5IGJlIHBvc3NpYmxlLiAgQnV0IG1ha2UgdGhlIHJlZ3VsYXIKKwkgKiB2aWRlbyBhdHRyaWJ1dGVzIHdvcmsgZmlyc3QuCisJICovCisJYWNzX2NoYXJzID0gQUJTRU5UX1NUUklORzsKKwllbmFfYWNzID0gQUJTRU5UX1NUUklORzsKKwllbnRlcl9hbHRfY2hhcnNldF9tb2RlID0gQUJTRU5UX1NUUklORzsKKwlleGl0X2FsdF9jaGFyc2V0X21vZGUgPSBBQlNFTlRfU1RSSU5HOworI2lmIFVTRV9YTUNfU1VQUE9SVAorCS8qCisJICogVG8ga2VlcCB0aGUgY29va2llIHN1cHBvcnQgc2ltcGxlLCBzdXBwcmVzcyBhbGwgb2YgdGhlIG9wdGltaXphdGlvbgorCSAqIGhvb2tzIGV4Y2VwdCBmb3IgY2xlYXJfc2NyZWVuIGFuZCB0aGUgY3Vyc29yIGFkZHJlc3NpbmcuCisJICovCisJaWYgKHN1cHBvcnRfY29va2llcykgeworCSAgICBjbHJfZW9sID0gQUJTRU5UX1NUUklORzsKKwkgICAgY2xyX2VvcyA9IEFCU0VOVF9TVFJJTkc7CisJICAgIHNldF9hdHRyaWJ1dGVzID0gQUJTRU5UX1NUUklORzsKKwl9CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPT0gMCkgewkvKiBocHRlcm0gKi8KKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIG1hZ2ljIGNvb2tpZXMgYXJlIG5vdCBzdXBwb3J0ZWQsIGNhbmNlbCB0aGUgc3RyaW5ncyB0aGF0IHNldAorICAgICAqIHZpZGVvIGF0dHJpYnV0ZXMuCisgICAgICovCisgICAgaWYgKCFzdXBwb3J0X2Nvb2tpZXMgJiYgbWFnaWNfY29va2llX2dsaXRjaCA+PSAwKSB7CisJbWFnaWNfY29va2llX2dsaXRjaCA9IEFCU0VOVF9OVU1FUklDOworCXNldF9hdHRyaWJ1dGVzID0gQUJTRU5UX1NUUklORzsKKwllbnRlcl9ibGlua19tb2RlID0gQUJTRU5UX1NUUklORzsKKwllbnRlcl9ib2xkX21vZGUgPSBBQlNFTlRfU1RSSU5HOworCWVudGVyX2RpbV9tb2RlID0gQUJTRU5UX1NUUklORzsKKwllbnRlcl9yZXZlcnNlX21vZGUgPSBBQlNFTlRfU1RSSU5HOworCWVudGVyX3N0YW5kb3V0X21vZGUgPSBBQlNFTlRfU1RSSU5HOworCWVudGVyX3VuZGVybGluZV9tb2RlID0gQUJTRU5UX1NUUklORzsKKyAgICB9CisKKyAgICAvKiBpbml0aWFsaXplIG5vcm1hbCBhY3MgYmVmb3JlIHdpZGUsIHNpbmNlIHdlIHVzZSBtYXBwaW5nIGluIHRoZSBsYXR0ZXIgKi8KKyNpZiAhVVNFX1dJREVDX1NVUFBPUlQKKyAgICBpZiAoX25jX3VuaWNvZGVfbG9jYWxlKCkgJiYgX25jX2xvY2FsZV9icmVha3NfYWNzKHNwLT5fdGVybSkpIHsKKwlhY3NfY2hhcnMgPSBOVUxMOworCWVuYV9hY3MgPSBOVUxMOworCWVudGVyX2FsdF9jaGFyc2V0X21vZGUgPSBOVUxMOworCWV4aXRfYWx0X2NoYXJzZXRfbW9kZSA9IE5VTEw7CisJc2V0X2F0dHJpYnV0ZXMgPSBOVUxMOworICAgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitkcnZfdHdhaXQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgIGludCBtb2RlLAorCSAgaW50IG1pbGxpc2Vjb25kcywKKwkgIGludCAqdGltZWxlZnQKKwkgIEVWRU5UTElTVF8ybmQoX25jX2V2ZW50bGlzdCAqIGV2bCkpCit7CisgICAgU0NSRUVOICpzcDsKKworICAgIEFzc2VydFRDQigpOworICAgIFNldFNQKCk7CisKKyAgICByZXR1cm4gX25jX3RpbWVkX3dhaXQoc3AsIG1vZGUsIG1pbGxpc2Vjb25kcywgdGltZWxlZnQgRVZFTlRMSVNUXzJuZChldmwpKTsKK30KKworc3RhdGljIGludAorZHJ2X3JlYWQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwgaW50ICpidWYpCit7CisgICAgU0NSRUVOICpzcDsKKyAgICB1bnNpZ25lZCBjaGFyIGMyID0gMDsKKyAgICBpbnQgbjsKKworICAgIEFzc2VydFRDQigpOworICAgIGFzc2VydChidWYpOworICAgIFNldFNQKCk7CisKKyMgaWYgVVNFX1BUSFJFQURTX0VJTlRSCisgICAgaWYgKChwdGhyZWFkX3NlbGYpICYmIChwdGhyZWFkX2tpbGwpICYmIChwdGhyZWFkX2VxdWFsKSkKKwlfbmNfZ2xvYmFscy5yZWFkX3RocmVhZCA9IHB0aHJlYWRfc2VsZigpOworIyBlbmRpZgorICAgIG4gPSAoaW50KSByZWFkKHNwLT5faWZkLCAmYzIsIChzaXplX3QpIDEpOworI2lmIFVTRV9QVEhSRUFEU19FSU5UUgorICAgIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkID0gMDsKKyNlbmRpZgorICAgICpidWYgPSAoaW50KSBjMjsKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIGludAorZHJ2X25hcChURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCIEdDQ19VTlVTRUQsIGludCBtcykKK3sKKyNpZiBIQVZFX05BTk9TTEVFUAorICAgIHsKKwlzdHJ1Y3QgdGltZXNwZWMgcmVxdWVzdCwgcmVtYWluaW5nOworCXJlcXVlc3QudHZfc2VjID0gbXMgLyAxMDAwOworCXJlcXVlc3QudHZfbnNlYyA9IChtcyAlIDEwMDApICogMTAwMDAwMDsKKwl3aGlsZSAobmFub3NsZWVwKCZyZXF1ZXN0LCAmcmVtYWluaW5nKSA9PSAtMQorCSAgICAgICAmJiBlcnJubyA9PSBFSU5UUikgeworCSAgICByZXF1ZXN0ID0gcmVtYWluaW5nOworCX0KKyAgICB9CisjZWxzZQorICAgIF9uY190aW1lZF93YWl0KDAsIDAsIG1zLCAoaW50ICopIDAgRVZFTlRMSVNUXzJuZCgwKSk7CisjZW5kaWYKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXRpYyBpbnQKK19fbmNfcHV0cChTQ1JFRU4gKnNwLCBjb25zdCBjaGFyICpuYW1lIEdDQ19VTlVTRUQsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICAgIGludCByYyA9IEVSUjsKKworICAgIGlmICh2YWx1ZSkgeworCXJjID0gTkNVUlNFU19QVVRQMihuYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludAorX19uY19wdXRwX2ZsdXNoKFNDUkVFTiAqc3AsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICAgIGludCByYyA9IF9fbmNfcHV0cChzcCwgbmFtZSwgdmFsdWUpOworICAgIGlmIChyYyAhPSBFUlIpIHsKKwlOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoc3ApOworICAgIH0KKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQKK2Rydl9rcGFkKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBmbGFnKQoreworICAgIGludCByZXQgPSBFUlI7CisgICAgU0NSRUVOICpzcDsKKworICAgIEFzc2VydFRDQigpOworCisgICAgc3AgPSBUQ0ItPmNzcDsKKworICAgIGlmIChzcCkgeworCWlmIChmbGFnKSB7CisJICAgICh2b2lkKSBfX25jX3B1dHBfZmx1c2goc3AsICJrZXlwYWRfeG1pdCIsIGtleXBhZF94bWl0KTsKKwl9IGVsc2UgaWYgKCFmbGFnICYmIGtleXBhZF9sb2NhbCkgeworCSAgICAodm9pZCkgX19uY19wdXRwX2ZsdXNoKHNwLCAia2V5cGFkX2xvY2FsIiwga2V5cGFkX2xvY2FsKTsKKwl9CisJaWYgKGZsYWcgJiYgIXNwLT5fdHJpZWQpIHsKKwkgICAgX25jX2luaXRfa2V5dHJ5KHNwKTsKKwkgICAgc3AtPl90cmllZCA9IFRSVUU7CisJfQorCXJldCA9IE9LOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2Rydl9rZXlvayhURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgYywgaW50IGZsYWcpCit7CisgICAgU0NSRUVOICpzcDsKKyAgICBpbnQgY29kZSA9IEVSUjsKKyAgICBpbnQgY291bnQgPSAwOworICAgIGNoYXIgKnM7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgaWYgKGMgPj0gMCkgeworCXVuc2lnbmVkIGNoID0gKHVuc2lnbmVkKSBjOworCWlmIChmbGFnKSB7CisJICAgIHdoaWxlICgocyA9IF9uY19leHBhbmRfdHJ5KHNwLT5fa2V5X29rLAorCQkJCSAgICAgICBjaCwgJmNvdW50LCAoc2l6ZV90KSAwKSkgIT0gMAorCQkgICAmJiBfbmNfcmVtb3ZlX2tleSgmKHNwLT5fa2V5X29rKSwgY2gpKSB7CisJCWNvZGUgPSBfbmNfYWRkX3RvX3RyeSgmKHNwLT5fa2V5dHJ5KSwgcywgY2gpOworCQlmcmVlKHMpOworCQljb3VudCA9IDA7CisJCWlmIChjb2RlICE9IE9LKQorCQkgICAgYnJlYWs7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICB3aGlsZSAoKHMgPSBfbmNfZXhwYW5kX3RyeShzcC0+X2tleXRyeSwKKwkJCQkgICAgICAgY2gsICZjb3VudCwgKHNpemVfdCkgMCkpICE9IDAKKwkJICAgJiYgX25jX3JlbW92ZV9rZXkoJihzcC0+X2tleXRyeSksIGNoKSkgeworCQljb2RlID0gX25jX2FkZF90b190cnkoJihzcC0+X2tleV9vayksIHMsIGNoKTsKKwkJZnJlZShzKTsKKwkJY291bnQgPSAwOworCQlpZiAoY29kZSAhPSBPSykKKwkJICAgIGJyZWFrOworCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm4gKGNvZGUpOworfQorCitzdGF0aWMgaW50CitkcnZfY3Vyc29yU2V0KFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCB2aXMpCit7CisgICAgU0NSRUVOICpzcDsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIEFzc2VydFRDQigpOworICAgIFNldFNQKCk7CisKKyAgICBUKChUX0NBTExFRCgidGluZm86ZHJ2X2N1cnNvclNldCglcCwlZCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgdmlzKSk7CisKKyAgICBpZiAoU1BfUEFSTSAhPSAwICYmIElzVGVybUluZm8oU1BfUEFSTSkpIHsKKwlzd2l0Y2ggKHZpcykgeworCWNhc2UgMjoKKwkgICAgY29kZSA9IE5DVVJTRVNfUFVUUDJfRkxVU0goImN1cnNvcl92aXNpYmxlIiwgY3Vyc29yX3Zpc2libGUpOworCSAgICBicmVhazsKKwljYXNlIDE6CisJICAgIGNvZGUgPSBOQ1VSU0VTX1BVVFAyX0ZMVVNIKCJjdXJzb3Jfbm9ybWFsIiwgY3Vyc29yX25vcm1hbCk7CisJICAgIGJyZWFrOworCWNhc2UgMDoKKwkgICAgY29kZSA9IE5DVVJTRVNfUFVUUDJfRkxVU0goImN1cnNvcl9pbnZpc2libGUiLCBjdXJzb3JfaW52aXNpYmxlKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0gZWxzZSB7CisJY29kZSA9IEVSUjsKKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKK30KKworc3RhdGljIGJvb2wKK2Rydl9reUV4aXN0KFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBrZXkpCit7CisgICAgYm9vbCByZXMgPSBGQUxTRTsKKworICAgIEFzc2VydFRDQigpOworICAgIGlmIChUQ0ItPmNzcCkKKwlyZXMgPSBUSU5GT19IQVNfS0VZKFRDQi0+Y3NwLCBrZXkpID09IDAgPyBGQUxTRSA6IFRSVUU7CisKKyAgICByZXR1cm4gcmVzOworfQorCitOQ1VSU0VTX0VYUE9SVF9WQVIgKFRFUk1fRFJJVkVSKSBfbmNfVElORk9fRFJJVkVSID0geworICAgIFRSVUUsCisJZHJ2X05hbWUsCQkvKiBOYW1lICovCisJZHJ2X0NhbkhhbmRsZSwJCS8qIENhbkhhbmRsZSAqLworCWRydl9pbml0LAkJLyogaW5pdCAqLworCWRydl9yZWxlYXNlLAkJLyogcmVsZWFzZSAqLworCWRydl9zaXplLAkJLyogc2l6ZSAqLworCWRydl9zZ21vZGUsCQkvKiBzZ21vZGUgKi8KKwlkcnZfY29uYXR0ciwJCS8qIGNvbmF0dHIgKi8KKwlkcnZfbXZjdXIsCQkvKiBod2N1ciAqLworCWRydl9tb2RlLAkJLyogbW9kZSAqLworCWRydl9yZXNjb2wsCQkvKiByZXNjb2wgKi8KKwlkcnZfcmVzY29sb3JzLAkJLyogcmVzY29sb3JzICovCisJZHJ2X3NldGNvbG9yLAkJLyogY29sb3IgKi8KKwlkcnZfZG9iZWVwZmxhc2gsCS8qIGRvQmVlcE9yRmxhc2ggKi8KKwlkcnZfaW5pdHBhaXIsCQkvKiBpbml0cGFpciAqLworCWRydl9pbml0Y29sb3IsCQkvKiBpbml0Y29sb3IgKi8KKwlkcnZfZG9fY29sb3IsCQkvKiBkb2NvbG9yICovCisJZHJ2X2luaXRtb3VzZSwJCS8qIGluaXRtb3VzZSAqLworCWRydl90ZXN0bW91c2UsCQkvKiB0ZXN0bW91c2UgKi8KKwlkcnZfc2V0ZmlsdGVyLAkJLyogc2V0ZmlsdGVyICovCisJZHJ2X2h3bGFiZWwsCQkvKiBod2xhYmVsICovCisJZHJ2X2h3bGFiZWxPbk9mZiwJLyogaHdsYWJlbE9uT2ZmICovCisJZHJ2X2RvdXBkYXRlLAkJLyogdXBkYXRlICovCisJZHJ2X2RlZmF1bHRjb2xvcnMsCS8qIGRlZmF1bHRjb2xvcnMgKi8KKwlkcnZfcHJpbnQsCQkvKiBwcmludCAqLworCWRydl9nZXRzaXplLAkJLyogZ2V0c2l6ZSAqLworCWRydl9zZXRzaXplLAkJLyogc2V0c2l6ZSAqLworCWRydl9pbml0YWNzLAkJLyogaW5pdGFjcyAqLworCWRydl9zY3JlZW5faW5pdCwJLyogc2Npbml0ICovCisJZHJ2X3dyYXAsCQkvKiBzY2V4aXQgKi8KKwlkcnZfdHdhaXQsCQkvKiB0d2FpdCAgKi8KKwlkcnZfcmVhZCwJCS8qIHJlYWQgKi8KKwlkcnZfbmFwLAkJLyogbmFwICovCisJZHJ2X2twYWQsCQkvKiBrcGFkICovCisJZHJ2X2tleW9rLAkJLyoga3lPayAqLworCWRydl9reUV4aXN0LAkJLyoga3lFeGlzdCAqLworCWRydl9jdXJzb3JTZXQJCS8qIGN1cnNvclNldCAqLworfTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMgYi9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCmluZGV4IDgwYzhmNzcuLmVjNWUyYjcgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKKysrIGIvbmN1cnNlcy90aW5mby90cmltX3NncjAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNiwyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM1LDkgKzM1LDggQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8dGljLmg+Ci0jaW5jbHVkZSA8dGVybV9lbnRyeS5oPgogCi1NT0RVTEVfSUQoIiRJZDogdHJpbV9zZ3IwLmMsdiAxLjggMjAwNy8wNC8wNyAxNzoxNDoxMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHRyaW1fc2dyMC5jLHYgMS4xNSAyMDEyLzEyLzE1IDIwOjU3OjE3IHRvbSBFeHAgJCIpCiAKICN1bmRlZiBDVVIKICNkZWZpbmUgQ1VSIHRwLT4KQEAgLTQ5LDIxICs0OCwyOCBAQAogc3RhdGljIGNoYXIgKgogc2V0X2F0dHJpYnV0ZV85KFRFUk1UWVBFICp0cCwgaW50IGZsYWcpCiB7Ci0gICAgY29uc3QgY2hhciAqcmVzdWx0OworICAgIGNvbnN0IGNoYXIgKnZhbHVlOworICAgIGNoYXIgKnJlc3VsdDsKIAotICAgIGlmICgocmVzdWx0ID0gdHBhcm0oc2V0X2F0dHJpYnV0ZXMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGZsYWcpKSA9PSAwKQotCXJlc3VsdCA9ICIiOwotICAgIHJldHVybiBzdHJkdXAocmVzdWx0KTsKKyAgICB2YWx1ZSA9IHRwYXJtKHNldF9hdHRyaWJ1dGVzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBmbGFnKTsKKyAgICBpZiAoUFJFU0VOVCh2YWx1ZSkpCisJcmVzdWx0ID0gc3RyZHVwKHZhbHVlKTsKKyAgICBlbHNlCisJcmVzdWx0ID0gMDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50CiBpc19jc2koY29uc3QgY2hhciAqcykKIHsKLSAgICBpZiAoVUNoYXIoc1swXSkgPT0gQ1NJKQotCXJldHVybiAxOwotICAgIGVsc2UgaWYgKHNbMF0gPT0gRVNDICYmIHNbMV0gPT0gTF9CUkFDSykKLQlyZXR1cm4gMjsKLSAgICByZXR1cm4gMDsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBpZiAocyAhPSAwKSB7CisJaWYgKFVDaGFyKHNbMF0pID09IENTSSkKKwkgICAgcmVzdWx0ID0gMTsKKwllbHNlIGlmIChzWzBdID09IEVTQyAmJiBzWzFdID09IExfQlJBQ0spCisJICAgIHJlc3VsdCA9IDI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBjaGFyICoKQEAgLTk4LDEwICsxMDQsMTAgQEAKIHN0YXRpYyBib29sCiByZXdyaXRlX3NncihjaGFyICpzLCBjaGFyICphdHRyKQogewotICAgIGlmIChQUkVTRU5UKHMpKSB7CisgICAgaWYgKHMgIT0gMCkgewogCWlmIChQUkVTRU5UKGF0dHIpKSB7Ci0JICAgIHVuc2lnbmVkIGxlbl9zID0gc3RybGVuKHMpOwotCSAgICB1bnNpZ25lZCBsZW5fYSA9IHN0cmxlbihhdHRyKTsKKwkgICAgc2l6ZV90IGxlbl9zID0gc3RybGVuKHMpOworCSAgICBzaXplX3QgbGVuX2EgPSBzdHJsZW4oYXR0cik7CiAKIAkgICAgaWYgKGxlbl9zID4gbGVuX2EgJiYgIXN0cm5jbXAoYXR0ciwgcywgbGVuX2EpKSB7CiAJCXVuc2lnbmVkIG47CkBAIC0xMDksNyArMTE1LDcgQEAKIAkJZm9yIChuID0gMDsgbiA8IGxlbl9zIC0gbGVuX2E7ICsrbikgewogCQkgICAgc1tuXSA9IHNbbiArIGxlbl9hXTsKIAkJfQotCQlzdHJjcHkocyArIG4sIGF0dHIpOworCQlfbmNfU1RSQ1BZKHMgKyBuLCBhdHRyLCBzdHJsZW4ocykgKyAxKTsKIAkJVFIoVFJBQ0VfREFUQUJBU0UsICgidG86XG5cdCVzIiwgcykpOwogCSAgICB9CiAJfQpAQCAtMTIyLDMzICsxMjgsMzUgQEAKIHNpbWlsYXJfc2dyKGNoYXIgKmEsIGNoYXIgKmIpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKLSAgICBpbnQgY3NpX2EgPSBpc19jc2koYSk7Ci0gICAgaW50IGNzaV9iID0gaXNfY3NpKGIpOwotICAgIHVuc2lnbmVkIGxlbl9hOwotICAgIHVuc2lnbmVkIGxlbl9iOworICAgIGlmIChhICE9IDAgJiYgYiAhPSAwKSB7CisJaW50IGNzaV9hID0gaXNfY3NpKGEpOworCWludCBjc2lfYiA9IGlzX2NzaShiKTsKKwlzaXplX3QgbGVuX2E7CisJc2l6ZV90IGxlbl9iOwogCi0gICAgVFIoVFJBQ0VfREFUQUJBU0UsICgic2ltaWxhcl9zZ3I6XG5cdCVzXG5cdCVzIiwKLQkJCV9uY192aXNidWYyKDEsIGEpLAotCQkJX25jX3Zpc2J1ZjIoMiwgYikpKTsKLSAgICBpZiAoY3NpX2EgIT0gMCAmJiBjc2lfYiAhPSAwICYmIGNzaV9hID09IGNzaV9iKSB7Ci0JYSArPSBjc2lfYTsKLQliICs9IGNzaV9iOwotCWlmICgqYSAhPSAqYikgewotCSAgICBhID0gc2tpcF96ZXJvKGEpOwotCSAgICBiID0gc2tpcF96ZXJvKGIpOworCVRSKFRSQUNFX0RBVEFCQVNFLCAoInNpbWlsYXJfc2dyOlxuXHQlc1xuXHQlcyIsCisJCQkgICAgX25jX3Zpc2J1ZjIoMSwgYSksCisJCQkgICAgX25jX3Zpc2J1ZjIoMiwgYikpKTsKKwlpZiAoY3NpX2EgIT0gMCAmJiBjc2lfYiAhPSAwICYmIGNzaV9hID09IGNzaV9iKSB7CisJICAgIGEgKz0gY3NpX2E7CisJICAgIGIgKz0gY3NpX2I7CisJICAgIGlmICgqYSAhPSAqYikgeworCQlhID0gc2tpcF96ZXJvKGEpOworCQliID0gc2tpcF96ZXJvKGIpOworCSAgICB9CiAJfQorCWxlbl9hID0gc3RybGVuKGEpOworCWxlbl9iID0gc3RybGVuKGIpOworCWlmIChsZW5fYSAmJiBsZW5fYikgeworCSAgICBpZiAobGVuX2EgPiBsZW5fYikKKwkJcmVzdWx0ID0gKHN0cm5jbXAoYSwgYiwgbGVuX2IpID09IDApOworCSAgICBlbHNlCisJCXJlc3VsdCA9IChzdHJuY21wKGEsIGIsIGxlbl9hKSA9PSAwKTsKKwl9CisJVFIoVFJBQ0VfREFUQUJBU0UsICgiLi4uc2ltaWxhcl9zZ3I6ICVkXG5cdCVzXG5cdCVzIiwgcmVzdWx0LAorCQkJICAgIF9uY192aXNidWYyKDEsIGEpLAorCQkJICAgIF9uY192aXNidWYyKDIsIGIpKSk7CiAgICAgfQotICAgIGxlbl9hID0gc3RybGVuKGEpOwotICAgIGxlbl9iID0gc3RybGVuKGIpOwotICAgIGlmIChsZW5fYSAmJiBsZW5fYikgewotCWlmIChsZW5fYSA+IGxlbl9iKQotCSAgICByZXN1bHQgPSAoc3RybmNtcChhLCBiLCBsZW5fYikgPT0gMCk7Ci0JZWxzZQotCSAgICByZXN1bHQgPSAoc3RybmNtcChhLCBiLCBsZW5fYSkgPT0gMCk7Ci0gICAgfQotICAgIFRSKFRSQUNFX0RBVEFCQVNFLCAoIi4uLnNpbWlsYXJfc2dyOiAlZFxuXHQlc1xuXHQlcyIsIHJlc3VsdCwKLQkJCV9uY192aXNidWYyKDEsIGEpLAotCQkJX25jX3Zpc2J1ZjIoMiwgYikpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzAsMTMgKzE3OCwxMyBAQAogICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJzIGZyb20gJ2Z1bGwnIHRoYXQgd2UgbWF0Y2hlZC4gIElmIGFueSBtaXNtYXRjaAogICogb2NjdXJzLCByZXR1cm4gemVyby4KICAqLwotc3RhdGljIGludAorc3RhdGljIHVuc2lnbmVkCiBjb21wYXJlX3BhcnQoY29uc3QgY2hhciAqcGFydCwgY29uc3QgY2hhciAqZnVsbCkKIHsKICAgICBjb25zdCBjaGFyICpuZXh0X3BhcnQ7CiAgICAgY29uc3QgY2hhciAqbmV4dF9mdWxsOwotICAgIGludCB1c2VkX2Z1bGwgPSAwOwotICAgIGludCB1c2VkX2RlbGF5ID0gMDsKKyAgICB1bnNpZ25lZCB1c2VkX2Z1bGwgPSAwOworICAgIHVuc2lnbmVkIHVzZWRfZGVsYXkgPSAwOwogCiAgICAgd2hpbGUgKCpwYXJ0ICE9IDApIHsKIAlpZiAoKnBhcnQgIT0gKmZ1bGwpIHsKQEAgLTE5OSw3ICsyMDcsNyBAQAogCSAgICBuZXh0X3BhcnQgPSBza2lwX2RlbGF5KHBhcnQpOwogCSAgICBuZXh0X2Z1bGwgPSBza2lwX2RlbGF5KGZ1bGwpOwogCSAgICBpZiAobmV4dF9wYXJ0ICE9IHBhcnQgJiYgbmV4dF9mdWxsICE9IGZ1bGwpIHsKLQkJdXNlZF9kZWxheSArPSAobmV4dF9mdWxsIC0gZnVsbCk7CisJCXVzZWRfZGVsYXkgKz0gKHVuc2lnbmVkKSAobmV4dF9mdWxsIC0gZnVsbCk7CiAJCWZ1bGwgPSBuZXh0X2Z1bGw7CiAJCXBhcnQgPSBuZXh0X3BhcnQ7CiAJCWNvbnRpbnVlOwpAQCAtMjYxLDEwICsyNjksMTEgQEAKIAkJayA9IHN0cmxlbihleGl0X2FsdF9jaGFyc2V0X21vZGUpOwogCQlpZiAoaiA+IGspIHsKIAkJICAgIGZvciAoaSA9IDA7IGkgPD0gKGogLSBrKTsgKytpKSB7Ci0JCQlpbnQgazIgPSBjb21wYXJlX3BhcnQoZXhpdF9hbHRfY2hhcnNldF9tb2RlLCBvZmYgKyBpKTsKKwkJCXVuc2lnbmVkIGsyID0gY29tcGFyZV9wYXJ0KGV4aXRfYWx0X2NoYXJzZXRfbW9kZSwKKwkJCQkJCSAgIG9mZiArIGkpOwogCQkJaWYgKGsyICE9IDApIHsKIAkJCSAgICBmb3VuZCA9IFRSVUU7Ci0JCQkgICAgY2hvcF9vdXQob2ZmLCBpLCBpICsgazIpOworCQkJICAgIGNob3Bfb3V0KG9mZiwgKHVuc2lnbmVkKSBpLCAodW5zaWduZWQpIChpICsgazIpKTsKIAkJCSAgICBicmVhazsKIAkJCX0KIAkJICAgIH0KQEAgLTI3NCwxOCArMjgzLDE4IEBACiAJICAgICAqIFNHUiAxMCB3b3VsZCByZXNldCB0byBub3JtYWwgZm9udC4KIAkgICAgICovCiAJICAgIGlmICghZm91bmQpIHsKLQkJaWYgKChpID0gaXNfY3NpKG9mZikpICE9IDAKKwkJaWYgKChpID0gKHNpemVfdCkgaXNfY3NpKG9mZikpICE9IDAKIAkJICAgICYmIG9mZltzdHJsZW4ob2ZmKSAtIDFdID09ICdtJykgewogCQkgICAgVFIoVFJBQ0VfREFUQUJBU0UsICgibG9va2luZyBmb3IgU0dSIDEwIGluICVzIiwKIAkJCQkJX25jX3Zpc2J1ZihvZmYpKSk7CiAJCSAgICB0bXAgPSBza2lwX3plcm8ob2ZmICsgaSk7CiAJCSAgICBpZiAodG1wWzBdID09ICcxJwogCQkJJiYgc2tpcF96ZXJvKHRtcCArIDEpICE9IHRtcCArIDEpIHsKLQkJCWkgPSB0bXAgLSBvZmY7CisJCQlpID0gKHNpemVfdCkgKHRtcCAtIG9mZik7CiAJCQlpZiAob2ZmW2kgLSAxXSA9PSAnOycpCiAJCQkgICAgaS0tOwotCQkJaiA9IHNraXBfemVybyh0bXAgKyAxKSAtIG9mZjsKLQkJCWkgPSBjaG9wX291dChvZmYsIGksIGopOworCQkJaiA9IChzaXplX3QpIChza2lwX3plcm8odG1wICsgMSkgLSBvZmYpOworCQkJKHZvaWQpIGNob3Bfb3V0KG9mZiwgKHVuc2lnbmVkKSBpLCAodW5zaWduZWQpIGopOwogCQkJZm91bmQgPSBUUlVFOwogCQkgICAgfQogCQl9CkBAIC0yOTMsMTAgKzMwMiwxMCBAQAogCSAgICBpZiAoIWZvdW5kCiAJCSYmICh0bXAgPSBzdHJzdHIoZW5kLCBvZmYpKSAhPSAwCiAJCSYmIHN0cmNtcChlbmQsIG9mZikgIT0gMCkgewotCQlpID0gdG1wIC0gZW5kOworCQlpID0gKHNpemVfdCkgKHRtcCAtIGVuZCk7CiAJCWogPSBzdHJsZW4ob2ZmKTsKIAkJdG1wID0gc3RyZHVwKGVuZCk7Ci0JCWNob3Bfb3V0KHRtcCwgaSwgaik7CisJCWNob3Bfb3V0KHRtcCwgKHVuc2lnbmVkKSBpLCAodW5zaWduZWQpIGopOwogCQlmcmVlKG9mZik7CiAJCXJlc3VsdCA9IHRtcDsKIAkgICAgfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby91c2Vfc2NyZWVuLmMgYi9uY3Vyc2VzL3RpbmZvL3VzZV9zY3JlZW4uYwppbmRleCA2YzNiMTJmLi42YTAyOTdjIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RpbmZvL3VzZV9zY3JlZW4uYworKysgYi9uY3Vyc2VzL3RpbmZvL3VzZV9zY3JlZW4uYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiB1c2Vfc2NyZWVuLmMsdiAxLjYgMjAwOC8wNi8wNyAxOToxNjo1NiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHVzZV9zY3JlZW4uYyx2IDEuOCAyMDA5LzEwLzI0IDIyOjQwOjIwIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHVzZV9zY3JlZW4oU0NSRUVOICpzY3JlZW4sIE5DVVJTRVNfU0NSRUVOX0NCIGZ1bmMsIHZvaWQgKmRhdGEpCkBAIC00MCwxNCArNDAsMTQgQEAKICAgICBTQ1JFRU4gKnNhdmVfU1A7CiAgICAgaW50IGNvZGUgPSBPSzsKIAotICAgIFQoKFRfQ0FMTEVEKCJ1c2Vfc2NyZWVuKCVwLCVwLCVwKSIpLCBzY3JlZW4sIGZ1bmMsIGRhdGEpKTsKKyAgICBUKChUX0NBTExFRCgidXNlX3NjcmVlbiglcCwlcCwlcCkiKSwgKHZvaWQgKikgc2NyZWVuLCBmdW5jLCAodm9pZCAqKSBkYXRhKSk7CiAKICAgICAvKgogICAgICAqIEZJWE1FIC0gYWRkIGEgZmxhZyBzbyBhIGdpdmVuIHRocmVhZCBjYW4gY2hlY2sgaWYgX2l0XyBoYXMgYWxyZWFkeQogICAgICAqIHJlY3VycmVkIHRocm91Z2ggdGhpcyBwb2ludCwgcmV0dXJuIGFuIGVycm9yIGlmIHNvLgogICAgICAqLwogICAgIF9uY19sb2NrX2dsb2JhbChjdXJzZXMpOwotICAgIHNhdmVfU1AgPSBTUDsKKyAgICBzYXZlX1NQID0gQ1VSUkVOVF9TQ1JFRU47CiAgICAgc2V0X3Rlcm0oc2NyZWVuKTsKIAogICAgIGNvZGUgPSBmdW5jKHNjcmVlbiwgZGF0YSk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3dyaXRlX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL3dyaXRlX2VudHJ5LmMKaW5kZXggYjUzYmIyMS4uYjJlZGQ1ZCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90aW5mby93cml0ZV9lbnRyeS5jCisrKyBiL25jdXJzZXMvdGluZm8vd3JpdGVfZW50cnkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDE0ICszOSw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxoYXNoZWRfZGIuaD4KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0KICNpbmNsdWRlIDx0aWMuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+Ci0KLSNpZm5kZWYgU19JU0RJUgotI2RlZmluZSBTX0lTRElSKG1vZGUpICgobW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUikKLSNlbmRpZgogCiAjaWYgMQogI2RlZmluZSBUUkFDRV9PVVQocCkgREVCVUcoMiwgcCkKQEAgLTU0LDcgKzQ3LDcgQEAKICNkZWZpbmUgVFJBQ0VfT1VUKHApCQkvKm5vdGhpbmcgKi8KICNlbmRpZgogCi1NT0RVTEVfSUQoIiRJZDogd3JpdGVfZW50cnkuYyx2IDEuNzIgMjAwOC8wOC8wMyAxOToyNDowMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHdyaXRlX2VudHJ5LmMsdiAxLjkyIDIwMTQvMTEvMDEgMTQ6NDc6MDAgdG9tIEV4cCAkIikKIAogc3RhdGljIGludCB0b3RhbF93cml0dGVuOwogCkBAIC03Nyw3ICs3MCw3IEBACiAgICAgREVCVUcoMSwgKCJDcmVhdGVkICVzIiwgZmlsZW5hbWUpKTsKIAogICAgIGlmICh3cml0ZV9vYmplY3QodHAsIGJ1ZmZlciwgJm9mZnNldCwgbGltaXQpID09IEVSUgotCXx8IGZ3cml0ZShidWZmZXIsIHNpemVvZihjaGFyKSwgb2Zmc2V0LCBmcCkgIT0gb2Zmc2V0KSB7CisJfHwgZndyaXRlKGJ1ZmZlciwgc2l6ZW9mKGNoYXIpLCAoc2l6ZV90KSBvZmZzZXQsIGZwKSAhPSBvZmZzZXQpIHsKIAlfbmNfc3lzZXJyX2Fib3J0KCJlcnJvciB3cml0aW5nICVzLyVzIiwgX25jX3RpY19kaXIoMCksIGZpbGVuYW1lKTsKICAgICB9CiAKQEAgLTEwMCwxMyArOTMsMTMgQEAKICAgICBjaGFyIGRpcltzaXplb2YoTEVBRl9GTVQpXTsKICAgICBjaGFyICpzID0gMDsKIAotICAgIGlmIChjb2RlID09IDAgfHwgKHMgPSBzdHJjaHIoZGlybmFtZXMsIGNvZGUpKSA9PSAwKQorICAgIGlmIChjb2RlID09IDAgfHwgKHMgPSAoc3RyY2hyKSAoZGlybmFtZXMsIGNvZGUpKSA9PSAwKQogCV9uY19lcnJfYWJvcnQoIklsbGVnYWwgdGVybWluZm8gc3ViZGlyZWN0b3J5IFwiIiBMRUFGX0ZNVCAiXCIiLCBjb2RlKTsKIAogICAgIGlmICh2ZXJpZmllZFtzIC0gZGlybmFtZXNdKQogCXJldHVybjsKIAotICAgIHNwcmludGYoZGlyLCBMRUFGX0ZNVCwgY29kZSk7CisgICAgX25jX1NQUklOVEYoZGlyLCBfbmNfU0xJTUlUKHNpemVvZihkaXIpKSBMRUFGX0ZNVCwgY29kZSk7CiAgICAgaWYgKG1ha2VfZGJfcm9vdChkaXIpIDwgMCkgewogCV9uY19lcnJfYWJvcnQoIiVzLyVzOiBwZXJtaXNzaW9uIGRlbmllZCIsIF9uY190aWNfZGlyKDApLCBkaXIpOwogICAgIH0KQEAgLTExNiwzNCArMTA5LDM1IEBACiAjZW5kaWYgLyogIVVTRV9IQVNIRURfREIgKi8KIAogc3RhdGljIGludAotbWFrZV9kYl9wYXRoKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBsaW1pdCkKK21ha2VfZGJfcGF0aChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IGxpbWl0KQogewogICAgIGludCByYyA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnRvcCA9IF9uY190aWNfZGlyKDApOwogCiAgICAgaWYgKHNyYyA9PSB0b3AgfHwgX25jX2lzX2Fic19wYXRoKHNyYykpIHsKIAlpZiAoc3RybGVuKHNyYykgKyAxIDw9IGxpbWl0KSB7Ci0JICAgICh2b2lkKSBzdHJjcHkoZHN0LCBzcmMpOworCSAgICBfbmNfU1RSQ1BZKGRzdCwgc3JjLCBsaW1pdCk7CiAJICAgIHJjID0gMDsKIAl9CiAgICAgfSBlbHNlIHsKIAlpZiAoc3RybGVuKHRvcCkgKyBzdHJsZW4oc3JjKSArIDIgPD0gbGltaXQpIHsKLQkgICAgKHZvaWQpIHNwcmludGYoZHN0LCAiJXMvJXMiLCB0b3AsIHNyYyk7CisJICAgIF9uY19TUFJJTlRGKGRzdCwgX25jX1NMSU1JVChsaW1pdCkgIiVzLyVzIiwgdG9wLCBzcmMpOwogCSAgICByYyA9IDA7CiAJfQogICAgIH0KICNpZiBVU0VfSEFTSEVEX0RCCiAgICAgaWYgKHJjID09IDApIHsKLQlpZiAoX25jX2lzX2Rpcl9wYXRoKGRzdCkpIHsKLQkgICAgcmMgPSAtMTsKLQl9IGVsc2UgewotCSAgICB1bnNpZ25lZCBoYXZlID0gc3RybGVuKGRzdCk7Ci0JICAgIGlmIChoYXZlID4gMyAmJiBzdHJjbXAoZHN0ICsgaGF2ZSAtIDMsIERCTV9TVUZGSVgpKSB7Ci0JCWlmIChoYXZlICsgMyA8PSBsaW1pdCkKLQkJICAgIHN0cmNhdChkc3QsIERCTV9TVUZGSVgpOwotCQllbHNlCi0JCSAgICByYyA9IC0xOworCXN0YXRpYyBjb25zdCBjaGFyIHN1ZmZpeFtdID0gREJNX1NVRkZJWDsKKwlzaXplX3QgaGF2ZSA9IHN0cmxlbihkc3QpOworCXNpemVfdCBuZWVkID0gc3RybGVuKHN1ZmZpeCk7CisJaWYgKGhhdmUgPiBuZWVkICYmIHN0cmNtcChkc3QgKyAoaW50KSAoaGF2ZSAtIG5lZWQpLCBzdWZmaXgpKSB7CisJICAgIGlmIChoYXZlICsgbmVlZCA8PSBsaW1pdCkgeworCQlfbmNfU1RSQ0FUKGRzdCwgc3VmZml4LCBsaW1pdCk7CisJICAgIH0gZWxzZSB7CisJCXJjID0gLTE7CiAJICAgIH0KKwl9IGVsc2UgaWYgKF9uY19pc19kaXJfcGF0aChkc3QpKSB7CisJICAgIHJjID0gLTE7CiAJfQogICAgIH0KICNlbmRpZgpAQCAtMTYzLDE1ICsxNTcsMjAgQEAKICNpZiBVU0VfSEFTSEVEX0RCCiAJREIgKmNhcGRicDsKIAotCWlmICgoY2FwZGJwID0gX25jX2RiX29wZW4oZnVsbHBhdGgsIFRSVUUpKSA9PSBOVUxMKQorCWlmICgoY2FwZGJwID0gX25jX2RiX29wZW4oZnVsbHBhdGgsIFRSVUUpKSA9PSBOVUxMKSB7CiAJICAgIHJjID0gLTE7Ci0JZWxzZSBpZiAoX25jX2RiX2Nsb3NlKGNhcGRicCkgPCAwKQorCX0gZWxzZSBpZiAoX25jX2RiX2Nsb3NlKGNhcGRicCkgPCAwKSB7CiAJICAgIHJjID0gLTE7CisJfQogI2Vsc2UKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwogCiAJaWYgKChyYyA9IHN0YXQocGF0aCwgJnN0YXRidWYpKSA8IDApIHsKLQkgICAgcmMgPSBta2RpcihwYXRoLCAwNzc3KTsKKwkgICAgcmMgPSBta2RpcihwYXRoCisjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pCisJCSAgICAgICAsMDc3NworI2VuZGlmCisJCSk7CiAJfSBlbHNlIGlmIChfbmNfYWNjZXNzKHBhdGgsIFJfT0sgfCBXX09LIHwgWF9PSykgPCAwKSB7CiAJICAgIHJjID0gLTE7CQkvKiBwZXJtaXNzaW9uIGRlbmllZCAqLwogCX0gZWxzZSBpZiAoIShTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpKSB7CkBAIC0xODYsMTMgKzE4NSwxNiBAQAogICogU2V0IHRoZSB3cml0ZSBkaXJlY3RvcnkgZm9yIGNvbXBpbGVkIGVudHJpZXMuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfc2V0X3dyaXRlZGlyKGNoYXIgKmRpcikKK19uY19zZXRfd3JpdGVkaXIoY29uc3QgY2hhciAqZGlyKQogewogICAgIGNvbnN0IGNoYXIgKmRlc3RpbmF0aW9uOwogICAgIGNoYXIgYWN0dWFsW1BBVEhfTUFYXTsKIAogICAgIGlmIChkaXIgPT0gMAotCSYmIHVzZV90ZXJtaW5mb192YXJzKCkpCisjaWZuZGVmIFVTRV9ST09UX0VOVklST04KKwkmJiB1c2VfdGVybWluZm9fdmFycygpCisjZW5kaWYKKwkpCiAJZGlyID0gZ2V0ZW52KCJURVJNSU5GTyIpOwogCiAgICAgaWYgKGRpciAhPSAwKQpAQCAtMjc0LDE2ICsyNzYsMjEgQEAKICAgICBjaGFyIG5hbWVfbGlzdFtNQVhfVEVSTUlORk9fTEVOR1RIXTsKICAgICBjaGFyICpmaXJzdF9uYW1lLCAqb3RoZXJfbmFtZXM7CiAgICAgY2hhciAqcHRyOworICAgIGNoYXIgKnRlcm1fbmFtZXMgPSB0cC0+dGVybV9uYW1lczsKKyAgICBzaXplX3QgbmFtZV9zaXplID0gc3RybGVuKHRlcm1fbmFtZXMpOwogCi0gICAgYXNzZXJ0KHN0cmxlbih0cC0+dGVybV9uYW1lcykgIT0gMCk7Ci0gICAgYXNzZXJ0KHN0cmxlbih0cC0+dGVybV9uYW1lcykgPCBzaXplb2YobmFtZV9saXN0KSk7CisgICAgaWYgKG5hbWVfc2l6ZSA9PSAwKSB7CisJX25jX3N5c2Vycl9hYm9ydCgibm8gdGVybWluYWwgbmFtZSBmb3VuZC4iKTsKKyAgICB9IGVsc2UgaWYgKG5hbWVfc2l6ZSA+PSBzaXplb2YobmFtZV9saXN0KSAtIDEpIHsKKwlfbmNfc3lzZXJyX2Fib3J0KCJ0ZXJtaW5hbCBuYW1lIHRvbyBsb25nOiAlcyIsIHRlcm1fbmFtZXMpOworICAgIH0KIAotICAgICh2b2lkKSBzdHJjcHkobmFtZV9saXN0LCB0cC0+dGVybV9uYW1lcyk7CisgICAgX25jX1NUUkNQWShuYW1lX2xpc3QsIHRlcm1fbmFtZXMsIHNpemVvZihuYW1lX2xpc3QpKTsKICAgICBERUJVRyg3LCAoIk5hbWUgbGlzdCA9ICclcyciLCBuYW1lX2xpc3QpKTsKIAogICAgIGZpcnN0X25hbWUgPSBuYW1lX2xpc3Q7CiAKLSAgICBwdHIgPSAmbmFtZV9saXN0W3N0cmxlbihuYW1lX2xpc3QpIC0gMV07CisgICAgcHRyID0gJm5hbWVfbGlzdFtuYW1lX3NpemUgLSAxXTsKICAgICBvdGhlcl9uYW1lcyA9IHB0ciArIDE7CiAKICAgICB3aGlsZSAocHRyID4gbmFtZV9saXN0ICYmICpwdHIgIT0gJ3wnKQpAQCAtMzE3LDggKzMyNCw4IEBACiAJICAgIGJ1ZmZlclswXSA9IDA7CiAKIAkgICAgbWVtc2V0KCZrZXksIDAsIHNpemVvZihrZXkpKTsKLQkgICAga2V5LmRhdGEgPSB0cC0+dGVybV9uYW1lczsKLQkgICAga2V5LnNpemUgPSBzdHJsZW4odHAtPnRlcm1fbmFtZXMpOworCSAgICBrZXkuZGF0YSA9IHRlcm1fbmFtZXM7CisJICAgIGtleS5zaXplID0gbmFtZV9zaXplOwogCiAJICAgIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKIAkgICAgZGF0YS5kYXRhID0gYnVmZmVyOwpAQCAtMzMxLDEzICszMzgsMTYgQEAKIAkgICAga2V5LmRhdGEgPSBuYW1lX2xpc3Q7CiAJICAgIGtleS5zaXplID0gc3RybGVuKG5hbWVfbGlzdCk7CiAKLQkgICAgc3RyY3B5KGJ1ZmZlciArIDEsIHRwLT50ZXJtX25hbWVzKTsKLQkgICAgZGF0YS5zaXplID0gc3RybGVuKHRwLT50ZXJtX25hbWVzKSArIDE7CisJICAgIF9uY19TVFJDUFkoYnVmZmVyICsgMSwKKwkJICAgICAgIHRlcm1fbmFtZXMsCisJCSAgICAgICBzaXplb2YoYnVmZmVyKSAtIDEpOworCSAgICBkYXRhLnNpemUgPSBuYW1lX3NpemUgKyAxOwogCiAJICAgIF9uY19kYl9wdXQoY2FwZGIsICZrZXksICZkYXRhKTsKIAogCSAgICB3aGlsZSAoKm90aGVyX25hbWVzICE9ICdcMCcpIHsKIAkJcHRyID0gb3RoZXJfbmFtZXMrKzsKKwkJYXNzZXJ0KHB0ciA8IGJ1ZmZlciArIHNpemVvZihidWZmZXIpIC0gMSk7CiAJCXdoaWxlICgqb3RoZXJfbmFtZXMgIT0gJ3wnICYmICpvdGhlcl9uYW1lcyAhPSAnXDAnKQogCQkgICAgb3RoZXJfbmFtZXMrKzsKIApAQCAtMzQ5LDcgKzM1OSw2IEBACiAKIAkJX25jX2RiX3B1dChjYXBkYiwgJmtleSwgJmRhdGEpOwogCSAgICB9Ci0JICAgIF9uY19kYl9jbG9zZShjYXBkYik7CiAJfQogICAgIH0KICNlbHNlIC8qICFVU0VfSEFTSEVEX0RCICovCkBAIC0zNTcsMTAgKzM2NiwxMSBAQAogCXN0YXJ0X3RpbWUgPSAwOwogICAgIH0KIAotICAgIGlmIChzdHJsZW4oZmlyc3RfbmFtZSkgPj0gc2l6ZW9mKGZpbGVuYW1lKSAtIDMpCisgICAgaWYgKHN0cmxlbihmaXJzdF9uYW1lKSA+PSBzaXplb2YoZmlsZW5hbWUpIC0gKDIgKyBMRUFGX0xFTikpCiAJX25jX3dhcm5pbmcoInRlcm1pbmFsIG5hbWUgdG9vIGxvbmcuIik7CiAKLSAgICBzcHJpbnRmKGZpbGVuYW1lLCBMRUFGX0ZNVCAiLyVzIiwgZmlyc3RfbmFtZVswXSwgZmlyc3RfbmFtZSk7CisgICAgX25jX1NQUklOVEYoZmlsZW5hbWUsIF9uY19TTElNSVQoc2l6ZW9mKGZpbGVuYW1lKSkKKwkJTEVBRl9GTVQgIi8lcyIsIGZpcnN0X25hbWVbMF0sIGZpcnN0X25hbWUpOwogCiAgICAgLyoKICAgICAgKiBIYXMgdGhpcyBwcmltYXJ5IG5hbWUgYmVlbiB3cml0dGVuIHNpbmNlIHRoZSBmaXJzdCBjYWxsIHRvCkBAIC0zNzAsNyArMzgwLDIyIEBACiAgICAgaWYgKHN0YXJ0X3RpbWUgPiAwICYmCiAJc3RhdChmaWxlbmFtZSwgJnN0YXRidWYpID49IDAKIAkmJiBzdGF0YnVmLnN0X210aW1lID49IHN0YXJ0X3RpbWUpIHsKKyNpZiBIQVZFX0xJTksgJiYgIVVTRV9TWU1MSU5LUworCS8qCisJICogSWYgdGhlIGZpbGUgaGFzIG1vcmUgdGhhbiBvbmUgbGluaywgdGhlIHJlYXNvbiBmb3IgdGhlIHByZXZpb3VzCisJICogd3JpdGUgY291bGQgYmUgdGhhdCB0aGUgY3VycmVudCBwcmltYXJ5IG5hbWUgdXNlZCB0byBiZSBhbiBhbGlhcyBmb3IKKwkgKiB0aGUgcHJldmlvdXMgZW50cnkuICBJbiB0aGF0IGNhc2UsIHVubGluayB0aGUgZmlsZSBzbyB0aGF0IHdlIHdpbGwKKwkgKiBub3QgbW9kaWZ5IHRoZSBwcmV2aW91cyBlbnRyeSBhcyB3ZSB3cml0ZSB0aGlzIG9uZS4KKwkgKi8KKwlpZiAoc3RhdGJ1Zi5zdF9ubGluayA+IDEpIHsKKwkgICAgX25jX3dhcm5pbmcoIm5hbWUgcmVkZWZpbmVkLiIpOworCSAgICB1bmxpbmsoZmlsZW5hbWUpOworCX0gZWxzZSB7CisJICAgIF9uY193YXJuaW5nKCJuYW1lIG11bHRpcGx5IGRlZmluZWQuIik7CisJfQorI2Vsc2UKIAlfbmNfd2FybmluZygibmFtZSBtdWx0aXBseSBkZWZpbmVkLiIpOworI2VuZGlmCiAgICAgfQogCiAgICAgY2hlY2tfd3JpdGVhYmxlKGZpcnN0X25hbWVbMF0pOwpAQCAtMzg1LDE0ICs0MTAsMTMgQEAKICAgICB9CiAgICAgd2hpbGUgKCpvdGhlcl9uYW1lcyAhPSAnXDAnKSB7CiAJcHRyID0gb3RoZXJfbmFtZXMrKzsKLQlhc3NlcnQocHRyIDwgYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKIAl3aGlsZSAoKm90aGVyX25hbWVzICE9ICd8JyAmJiAqb3RoZXJfbmFtZXMgIT0gJ1wwJykKIAkgICAgb3RoZXJfbmFtZXMrKzsKIAogCWlmICgqb3RoZXJfbmFtZXMgIT0gJ1wwJykKIAkgICAgKihvdGhlcl9uYW1lcysrKSA9ICdcMCc7CiAKLQlpZiAoc3RybGVuKHB0cikgPiBzaXplb2YobGlua25hbWUpIC0gMykgeworCWlmIChzdHJsZW4ocHRyKSA+IHNpemVvZihsaW5rbmFtZSkgLSAoMiArIExFQUZfTEVOKSkgewogCSAgICBfbmNfd2FybmluZygidGVybWluYWwgYWxpYXMgJXMgdG9vIGxvbmcuIiwgcHRyKTsKIAkgICAgY29udGludWU7CiAJfQpAQCAtNDAyLDcgKzQyNiw4IEBACiAJfQogCiAJY2hlY2tfd3JpdGVhYmxlKHB0clswXSk7Ci0Jc3ByaW50ZihsaW5rbmFtZSwgTEVBRl9GTVQgIi8lcyIsIHB0clswXSwgcHRyKTsKKwlfbmNfU1BSSU5URihsaW5rbmFtZSwgX25jX1NMSU1JVChzaXplb2YobGlua25hbWUpKQorCQkgICAgTEVBRl9GTVQgIi8lcyIsIHB0clswXSwgcHRyKTsKIAogCWlmIChzdHJjbXAoZmlsZW5hbWUsIGxpbmtuYW1lKSA9PSAwKSB7CiAJICAgIF9uY193YXJuaW5nKCJzZWxmLXN5bm9ueW0gaWdub3JlZCIpOwpAQCAtNDE0LDggKzQzOSwxMiBAQAogCXsKIAkgICAgaW50IGNvZGU7CiAjaWYgVVNFX1NZTUxJTktTCi0JICAgIHN0cmNweShzeW1saW5rbmFtZSwgIi4uLyIpOwotCSAgICBzdHJuY2F0KHN5bWxpbmtuYW1lLCBmaWxlbmFtZSwgc2l6ZW9mKHN5bWxpbmtuYW1lKSAtIDQpOworCSAgICBpZiAoZmlyc3RfbmFtZVswXSA9PSBsaW5rbmFtZVswXSkKKwkJc3RybmNweShzeW1saW5rbmFtZSwgZmlyc3RfbmFtZSwgc2l6ZW9mKHN5bWxpbmtuYW1lKSAtIDEpOworCSAgICBlbHNlIHsKKwkJX25jX1NUUkNQWShzeW1saW5rbmFtZSwgIi4uLyIsIHNpemVvZihzdXltbGlua25hbWUpKTsKKwkJc3RybmNhdChzeW1saW5rbmFtZSwgZmlsZW5hbWUsIHNpemVvZihzeW1saW5rbmFtZSkgLSA0KTsKKwkgICAgfQogCSAgICBzeW1saW5rbmFtZVtzaXplb2Yoc3ltbGlua25hbWUpIC0gMV0gPSAnXDAnOwogI2VuZGlmIC8qIFVTRV9TWU1MSU5LUyAqLwogI2lmIEhBVkVfUkVNT1ZFCkBAIC00NjAsNDIgKzQ4OSw0MyBAQAogI2VuZGlmIC8qIFVTRV9IQVNIRURfREIgKi8KIH0KIAotc3RhdGljIHVuc2lnbmVkCitzdGF0aWMgc2l6ZV90CiBmYWtlX3dyaXRlKGNoYXIgKmRzdCwKIAkgICB1bnNpZ25lZCAqb2Zmc2V0LAotCSAgIHVuc2lnbmVkIGxpbWl0LAorCSAgIHNpemVfdCBsaW1pdCwKIAkgICBjaGFyICpzcmMsCi0JICAgdW5zaWduZWQgd2FudCwKLQkgICB1bnNpZ25lZCBzaXplKQorCSAgIHNpemVfdCB3YW50LAorCSAgIHNpemVfdCBzaXplKQogewotICAgIGludCBoYXZlID0gKGxpbWl0IC0gKm9mZnNldCk7CisgICAgc2l6ZV90IGhhdmUgPSAobGltaXQgLSAqb2Zmc2V0KTsKIAogICAgIHdhbnQgKj0gc2l6ZTsKICAgICBpZiAoaGF2ZSA+IDApIHsKLQlpZiAoKGludCkgd2FudCA+IGhhdmUpCisJaWYgKHdhbnQgPiBoYXZlKQogCSAgICB3YW50ID0gaGF2ZTsKIAltZW1jcHkoZHN0ICsgKm9mZnNldCwgc3JjLCB3YW50KTsKLQkqb2Zmc2V0ICs9IHdhbnQ7CisJKm9mZnNldCArPSAodW5zaWduZWQpIHdhbnQ7CiAgICAgfSBlbHNlIHsKIAl3YW50ID0gMDsKICAgICB9Ci0gICAgcmV0dXJuIChpbnQpICh3YW50IC8gc2l6ZSk7CisgICAgcmV0dXJuICh3YW50IC8gc2l6ZSk7CiB9CiAKLSNkZWZpbmUgV3JpdGUoYnVmLCBzaXplLCBjb3VudCkgZmFrZV93cml0ZShidWZmZXIsIG9mZnNldCwgbGltaXQsIChjaGFyICopIGJ1ZiwgY291bnQsIHNpemUpCisjZGVmaW5lIFdyaXRlKGJ1Ziwgc2l6ZSwgY291bnQpIGZha2Vfd3JpdGUoYnVmZmVyLCBvZmZzZXQsIChzaXplX3QpIGxpbWl0LCAoY2hhciAqKSBidWYsIChzaXplX3QpIGNvdW50LCAoc2l6ZV90KSBzaXplKQogCiAjdW5kZWYgTElUVExFX0VORElBTgkJLyogQlNEL09TIGRlZmluZXMgdGhpcyBhcyBhIGZlYXR1cmUgbWFjcm8gKi8KICNkZWZpbmUgSEkoeCkJCQkoKHgpIC8gMjU2KQogI2RlZmluZSBMTyh4KQkJCSgoeCkgJSAyNTYpCi0jZGVmaW5lIExJVFRMRV9FTkRJQU4ocCwgeCkJKHApWzBdID0gTE8oeCksIChwKVsxXSA9IEhJKHgpCisjZGVmaW5lIExJVFRMRV9FTkRJQU4ocCwgeCkJKHApWzBdID0gKHVuc2lnbmVkIGNoYXIpTE8oeCksICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwKVsxXSA9ICh1bnNpZ25lZCBjaGFyKUhJKHgpCiAKICNkZWZpbmUgV1JJVEVfU1RSSU5HKHN0cikgKFdyaXRlKHN0ciwgc2l6ZW9mKGNoYXIpLCBzdHJsZW4oc3RyKSArIDEpID09IHN0cmxlbihzdHIpICsgMSkKIAogc3RhdGljIGludAotY29tcHV0ZV9vZmZzZXRzKGNoYXIgKipTdHJpbmdzLCB1bnNpZ25lZCBzdHJtYXgsIHNob3J0ICpvZmZzZXRzKQorY29tcHV0ZV9vZmZzZXRzKGNoYXIgKipTdHJpbmdzLCBzaXplX3Qgc3RybWF4LCBzaG9ydCAqb2Zmc2V0cykKIHsKLSAgICBzaXplX3QgbmV4dGZyZWUgPSAwOwotICAgIHVuc2lnbmVkIGk7CisgICAgaW50IG5leHRmcmVlID0gMDsKKyAgICBzaXplX3QgaTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzdHJtYXg7IGkrKykgewogCWlmIChTdHJpbmdzW2ldID09IEFCU0VOVF9TVFJJTkcpIHsKQEAgLTUwMyw4ICs1MzMsOCBAQAogCX0gZWxzZSBpZiAoU3RyaW5nc1tpXSA9PSBDQU5DRUxMRURfU1RSSU5HKSB7CiAJICAgIG9mZnNldHNbaV0gPSAtMjsKIAl9IGVsc2UgewotCSAgICBvZmZzZXRzW2ldID0gbmV4dGZyZWU7Ci0JICAgIG5leHRmcmVlICs9IHN0cmxlbihTdHJpbmdzW2ldKSArIDE7CisJICAgIG9mZnNldHNbaV0gPSAoc2hvcnQpIG5leHRmcmVlOworCSAgICBuZXh0ZnJlZSArPSAoaW50KSBzdHJsZW4oU3RyaW5nc1tpXSkgKyAxOwogCSAgICBUUkFDRV9PVVQoKCJwdXQgU3RyaW5nc1slZF09JXMoJWQpIiwgKGludCkgaSwKIAkJICAgICAgIF9uY192aXNidWYoU3RyaW5nc1tpXSksIChpbnQpIG5leHRmcmVlKSk7CiAJfQpAQCAtNTEzLDkgKzU0Myw5IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1jb252ZXJ0X3Nob3J0cyh1bnNpZ25lZCBjaGFyICpidWYsIHNob3J0ICpOdW1iZXJzLCB1bnNpZ25lZCBjb3VudCkKK2NvbnZlcnRfc2hvcnRzKHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2hvcnQgKk51bWJlcnMsIHNpemVfdCBjb3VudCkKIHsKLSAgICB1bnNpZ25lZCBpOworICAgIHNpemVfdCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAJaWYgKE51bWJlcnNbaV0gPT0gQUJTRU5UX05VTUVSSUMpIHsJLyogSEkvTE8gd29uJ3Qgd29yayAqLwogCSAgICBidWZbMiAqIGldID0gYnVmWzIgKiBpICsgMV0gPSAwMzc3OwpAQCAtNTI0LDcgKzU1NCw3IEBACiAJICAgIGJ1ZlsyICogaSArIDFdID0gMDM3NzsKIAl9IGVsc2UgewogCSAgICBMSVRUTEVfRU5ESUFOKGJ1ZiArIDIgKiBpLCBOdW1iZXJzW2ldKTsKLQkgICAgVFJBQ0VfT1VUKCgicHV0IE51bWJlcnNbJWRdPSVkIiwgaSwgTnVtYmVyc1tpXSkpOworCSAgICBUUkFDRV9PVVQoKCJwdXQgTnVtYmVyc1sldV09JWQiLCAodW5zaWduZWQpIGksIE51bWJlcnNbaV0pKTsKIAl9CiAgICAgfQogfQpAQCAtNTM2LDggKzU2Niw4IEBACiBzdGF0aWMgdW5zaWduZWQKIGV4dGVuZGVkX0Jvb2xlYW5zKFRFUk1UWVBFICp0cCkKIHsKLSAgICB1bnNpZ25lZCBzaG9ydCByZXN1bHQgPSAwOwotICAgIHVuc2lnbmVkIHNob3J0IGk7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICB1bnNpZ25lZCBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHRwLT5leHRfQm9vbGVhbnM7ICsraSkgewogCWlmICh0cC0+Qm9vbGVhbnNbQk9PTENPVU5UICsgaV0gPT0gVFJVRSkKQEAgLTU0OSw4ICs1NzksOCBAQAogc3RhdGljIHVuc2lnbmVkCiBleHRlbmRlZF9OdW1iZXJzKFRFUk1UWVBFICp0cCkKIHsKLSAgICB1bnNpZ25lZCBzaG9ydCByZXN1bHQgPSAwOwotICAgIHVuc2lnbmVkIHNob3J0IGk7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICB1bnNpZ25lZCBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHRwLT5leHRfTnVtYmVyczsgKytpKSB7CiAJaWYgKHRwLT5OdW1iZXJzW05VTUNPVU5UICsgaV0gIT0gQUJTRU5UX05VTUVSSUMpCkBAIC01NjcsNyArNTk3LDcgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCB0cC0+ZXh0X1N0cmluZ3M7ICsraSkgewogCWlmICh0cC0+U3RyaW5nc1tTVFJDT1VOVCArIGldICE9IEFCU0VOVF9TVFJJTkcpCi0JICAgIHJlc3VsdCA9IChpICsgMSk7CisJICAgIHJlc3VsdCA9ICh1bnNpZ25lZCBzaG9ydCkgKGkgKyAxKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU5Nyw3ICs2MjcsNyBAQAogICAgIHNpemVfdCBuYW1lbGVuLCBib29sbWF4LCBudW1tYXgsIHN0cm1heDsKICAgICBjaGFyIHplcm8gPSAnXDAnOwogICAgIHNpemVfdCBpOwotICAgIHNob3J0IG5leHRmcmVlOworICAgIGludCBuZXh0ZnJlZTsKICAgICBzaG9ydCBvZmZzZXRzW01BWF9FTlRSWV9TSVpFIC8gMl07CiAgICAgdW5zaWduZWQgY2hhciBidWZbTUFYX0VOVFJZX1NJWkVdOwogICAgIHVuc2lnbmVkIGxhc3RfYm9vbCA9IEJPT0xXUklURTsKQEAgLTY5MCwxMyArNzIwLDEzIEBACiAKICNpZiBOQ1VSU0VTX1hOQU1FUwogICAgIGlmIChleHRlbmRlZF9vYmplY3QodHApKSB7Ci0JdW5zaWduZWQgZXh0Y250ID0gTlVNX0VYVF9OQU1FUyh0cCk7CisJdW5zaWduZWQgZXh0Y250ID0gKHVuc2lnbmVkKSBOVU1fRVhUX05BTUVTKHRwKTsKIAogCWlmIChldmVuX2JvdW5kYXJ5KG5leHRmcmVlKSkKIAkgICAgcmV0dXJuIChFUlIpOwogCiAJbmV4dGZyZWUgPSBjb21wdXRlX29mZnNldHModHAtPlN0cmluZ3MgKyBTVFJDT1VOVCwKLQkJCQkgICB0cC0+ZXh0X1N0cmluZ3MsCisJCQkJICAgKHNpemVfdCkgdHAtPmV4dF9TdHJpbmdzLAogCQkJCSAgIG9mZnNldHMpOwogCVRSQUNFX09VVCgoImFmdGVyIGV4dGVuZGVkIHN0cmluZyBjYXBhYmlsaXRpZXMsIG5leHRmcmVlPSVkIiwgbmV4dGZyZWUpKTsKIApAQCAtNzA0LDcgKzczNCw3IEBACiAJICAgIHJldHVybiAoRVJSKTsKIAogCW5leHRmcmVlICs9IGNvbXB1dGVfb2Zmc2V0cyh0cC0+ZXh0X05hbWVzLAotCQkJCSAgICBleHRjbnQsCisJCQkJICAgIChzaXplX3QpIGV4dGNudCwKIAkJCQkgICAgb2Zmc2V0cyArIHRwLT5leHRfU3RyaW5ncyk7CiAJVFJBQ0VfT1VUKCgiYWZ0ZXIgZXh0ZW5kZWQgY2FwbmFtZXMsIG5leHRmcmVlPSVkIiwgbmV4dGZyZWUpKTsKIAlzdHJtYXggPSB0cC0+ZXh0X1N0cmluZ3MgKyBleHRjbnQ7CkBAIC03MzIsNyArNzYyLDcgQEAKIAogCVRSQUNFX09VVCgoIldSSVRFICVkIG51bWJlcnMgQCVkIiwgdHAtPmV4dF9OdW1iZXJzLCAqb2Zmc2V0KSk7CiAJaWYgKHRwLT5leHRfTnVtYmVycykgewotCSAgICBjb252ZXJ0X3Nob3J0cyhidWYsIHRwLT5OdW1iZXJzICsgTlVNQ09VTlQsIHRwLT5leHRfTnVtYmVycyk7CisJICAgIGNvbnZlcnRfc2hvcnRzKGJ1ZiwgdHAtPk51bWJlcnMgKyBOVU1DT1VOVCwgKHNpemVfdCkgdHAtPmV4dF9OdW1iZXJzKTsKIAkgICAgaWYgKFdyaXRlKGJ1ZiwgMiwgdHAtPmV4dF9OdW1iZXJzKSAhPSB0cC0+ZXh0X051bWJlcnMpCiAJCXJldHVybiAoRVJSKTsKIAl9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZS5jIGIvbmN1cnNlcy90cmFjZS9saWJfdHJhY2UuYwppbmRleCA3NDNiMWY2Li5jZWMwMWRlIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZS5jCisrKyBiL25jdXJzZXMvdHJhY2UvbGliX3RyYWNlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC00Niw3ICs0Nyw3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3RyYWNlLmMsdiAxLjcxIDIwMDgvMDgvMjMgMTg6MDQ6MjkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfdHJhY2UuYyx2IDEuODIgMjAxMy8wNy8wNiAxOTo0MjowOSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVF9WQVIodW5zaWduZWQpIF9uY190cmFjaW5nID0gMDsgLyogYWx3YXlzIGRlZmluZSB0aGlzICovCiAKQEAgLTU2LDI2ICs1NywyNiBAQAogTkNVUlNFU19FWFBPUlQoY29uc3QgY2hhciAqKQogTkNVUlNFU19QVUJMSUNfVkFSKF9uY190cHV0c190cmFjZSkgKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFNQID8gU1AtPl90cHV0c190cmFjZSA6IF9uY19wcmVzY3JlZW4uX3RwdXRzX3RyYWNlOworICAgIHJldHVybiBDVVJSRU5UX1NDUkVFTiA/IENVUlJFTlRfU0NSRUVOLT5fdHB1dHNfdHJhY2UgOiBfbmNfcHJlc2NyZWVuLl90cHV0c190cmFjZTsKIH0KIE5DVVJTRVNfRVhQT1JUKGxvbmcpCiBOQ1VSU0VTX1BVQkxJQ19WQVIoX25jX291dGNoYXJzKSAodm9pZCkKIHsKLSAgICByZXR1cm4gU1AgPyBTUC0+X291dGNoYXJzIDogX25jX3ByZXNjcmVlbi5fb3V0Y2hhcnM7CisgICAgcmV0dXJuIENVUlJFTlRfU0NSRUVOID8gQ1VSUkVOVF9TQ1JFRU4tPl9vdXRjaGFycyA6IF9uY19wcmVzY3JlZW4uX291dGNoYXJzOwogfQogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY19zZXRfdHB1dHNfdHJhY2UoY29uc3QgY2hhciAqcykKIHsKLSAgICBpZiAoU1ApCi0JU1AtPl90cHV0c190cmFjZSA9IHM7CisgICAgaWYgKENVUlJFTlRfU0NSRUVOKQorCUNVUlJFTlRfU0NSRUVOLT5fdHB1dHNfdHJhY2UgPSBzOwogICAgIGVsc2UKIAlfbmNfcHJlc2NyZWVuLl90cHV0c190cmFjZSA9IHM7CiB9CiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogX25jX2NvdW50X291dGNoYXJzKGxvbmcgaW5jcmVtZW50KQogewotICAgIGlmIChTUCkKLQlTUC0+X291dGNoYXJzICs9IGluY3JlbWVudDsKKyAgICBpZiAoQ1VSUkVOVF9TQ1JFRU4pCisJQ1VSUkVOVF9TQ1JFRU4tPl9vdXRjaGFycyArPSBpbmNyZW1lbnQ7CiAgICAgZWxzZQogCV9uY19wcmVzY3JlZW4uX291dGNoYXJzICs9IGluY3JlbWVudDsKIH0KQEAgLTk1LDE2ICs5NiwxNiBAQAogCWNvbnN0IGNoYXIgKm1vZGUgPSBfbmNfZ2xvYmFscy5pbml0X3RyYWNlID8gImFiIiA6ICJ3YiI7CiAKIAlpZiAoVHJhY2VQYXRoWzBdID09ICdcMCcpIHsKLQkgICAgaW50IHNpemUgPSBzaXplb2YoVHJhY2VQYXRoKSAtIDEyOworCSAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihUcmFjZVBhdGgpIC0gMTI7CiAJICAgIGlmIChnZXRjd2QoVHJhY2VQYXRoLCBzaXplKSA9PSAwKSB7CiAJCXBlcnJvcigiY3Vyc2VzOiBDYW4ndCBnZXQgd29ya2luZyBkaXJlY3RvcnkiKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCSAgICB9CiAJICAgIFRyYWNlUGF0aFtzaXplXSA9ICdcMCc7CiAJICAgIGFzc2VydChzdHJsZW4oVHJhY2VQYXRoKSA8PSBzaXplKTsKLQkgICAgc3RyY2F0KFRyYWNlUGF0aCwgIi90cmFjZSIpOworCSAgICBfbmNfU1RSQ0FUKFRyYWNlUGF0aCwgIi90cmFjZSIsIHNpemVvZihUcmFjZVBhdGgpKTsKIAkgICAgaWYgKF9uY19pc19kaXJfcGF0aChUcmFjZVBhdGgpKSB7Ci0JCXN0cmNhdChUcmFjZVBhdGgsICIubG9nIik7CisJCV9uY19TVFJDQVQoVHJhY2VQYXRoLCAiLmxvZyIsIHNpemVvZihUcmFjZVBhdGgpKTsKIAkgICAgfQogCX0KIApAQCAtMTIwLDggKzEyMSw4IEBACiAJICogZW5kIG9mIGVhY2ggbGluZS4gIFRoaXMgaXMgdXNlZnVsIGluIGNhc2UgdGhlIHByb2dyYW0gZGllcy4gCiAJICovCiAjaWYgSEFWRV9TRVRWQlVGCQkvKiBBTlNJICovCi0JKHZvaWQpIHNldHZidWYoVHJhY2VGUCwgKGNoYXIgKikgMCwgX0lPTEJGLCAwKTsKLSNlbGlmIEhBVkVfU0VUQlVGCQkvKiBQT1NJWCAqLworCSh2b2lkKSBzZXR2YnVmKFRyYWNlRlAsIChjaGFyICopIDAsIF9JT0xCRiwgKHNpemVfdCkgMCk7CisjZWxpZiBIQVZFX1NFVEJVRiAvKiBQT1NJWCAqLwogCSh2b2lkKSBzZXRidWZmZXIoVHJhY2VGUCwgKGNoYXIgKikgMCk7CiAjZW5kaWYKIAlfdHJhY2VmKCJUUkFDSU5HIE5DVVJTRVMgdmVyc2lvbiAlcy4lZCAodHJhY2VsZXZlbD0lI3gpIiwKQEAgLTE4Myw3ICsxODQsMTEgQEAKICMgaWYgVVNFX1dFQUtfU1lNQk9MUwogCWlmICgocHRocmVhZF9zZWxmKSkKICMgZW5kaWYKLQkgICAgZnByaW50ZihUcmFjZUZQLCAiJSNseDoiLCAobG9uZykgKHZvaWQgKikgcHRocmVhZF9zZWxmKCkpOworI2lmZGVmIF9fTUlOR1czMl9fCisJICAgIGZwcmludGYoVHJhY2VGUCwgIiUjbHg6IiwgKGxvbmcpIChpbnRwdHJfdCkgcHRocmVhZF9zZWxmKCkucCk7CisjZWxzZQorCSAgICBmcHJpbnRmKFRyYWNlRlAsICIlI2x4OiIsIChsb25nKSAoaW50cHRyX3QpIHB0aHJlYWRfc2VsZigpKTsKKyNlbmRpZgogI2VuZGlmCiAJaWYgKGJlZm9yZSB8fCBhZnRlcikgewogCSAgICBpbnQgbjsKQEAgLTIxMywxMiArMjE4LDIwIEBACiAKIC8qIFRyYWNlICdib29sJyByZXR1cm4tdmFsdWVzICovCiBOQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0JPT0wpCi1fbmNfcmV0cmFjZV9ib29sKE5DVVJTRVNfQk9PTCBjb2RlKQorX25jX3JldHJhY2VfYm9vbChpbnQgY29kZSkKIHsKICAgICBUKChUX1JFVFVSTigiJXMiKSwgY29kZSA/ICJUUlVFIiA6ICJGQUxTRSIpKTsKICAgICByZXR1cm4gY29kZTsKIH0KIAorLyogVHJhY2UgJ2NoYXInIHJldHVybi12YWx1ZXMgKi8KK05DVVJTRVNfRVhQT1JUKGNoYXIpCitfbmNfcmV0cmFjZV9jaGFyKGludCBjb2RlKQoreworICAgIFQoKFRfUkVUVVJOKCIlYyIpLCBjb2RlKSk7CisgICAgcmV0dXJuIChjaGFyKSBjb2RlOworfQorCiAvKiBUcmFjZSAnaW50JyByZXR1cm4tdmFsdWVzICovCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfcmV0cmFjZV9pbnQoaW50IGNvZGUpCkBAIC0yNzEsNyArMjg0LDcgQEAKIE5DVVJTRVNfRVhQT1JUKFNDUkVFTiAqKQogX25jX3JldHJhY2Vfc3AoU0NSRUVOICpjb2RlKQogewotICAgIFQoKFRfUkVUVVJOKCIlcCIpLCBjb2RlKSk7CisgICAgVCgoVF9SRVRVUk4oIiVwIiksICh2b2lkICopIGNvZGUpKTsKICAgICByZXR1cm4gY29kZTsKIH0KIApAQCAtMjc5LDcgKzI5Miw3IEBACiBOQ1VSU0VTX0VYUE9SVChXSU5ET1cgKikKIF9uY19yZXRyYWNlX3dpbihXSU5ET1cgKmNvZGUpCiB7Ci0gICAgVCgoVF9SRVRVUk4oIiVwIiksIGNvZGUpKTsKKyAgICBUKChUX1JFVFVSTigiJXAiKSwgKHZvaWQgKikgY29kZSkpOwogICAgIHJldHVybiBjb2RlOwogfQogCkBAIC0zMjYsOCArMzM5LDkgQEAKICAgICBfbmNfdmFfdHJhY2VmKGZtdCwgYXApOwogICAgIHZhX2VuZChhcCk7CiAKLSAgICBpZiAoLS0oX25jX2dsb2JhbHMubmVzdGVkX3RyYWNlZikgPT0gMCkKKyAgICBpZiAoLS0oX25jX2dsb2JhbHMubmVzdGVkX3RyYWNlZikgPT0gMCkgewogCV9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7CisgICAgfQogfQogI2VuZGlmIC8qIFVTRV9SRUVOVFJBTlQgKi8KIApkaWZmIC0tZ2l0IGEvbmN1cnNlcy90cmFjZS9saWJfdHJhY2VhdHIuYyBiL25jdXJzZXMvdHJhY2UvbGliX3RyYWNlYXRyLmMKaW5kZXggNDVhMDNjZS4uMjQ3NzJkOCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90cmFjZS9saWJfdHJhY2VhdHIuYworKysgYi9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWF0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogVGhvbWFzIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMzcsMTIgKzM4LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgkJLyogYWNzX2NoYXJzICovCiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdHJhY2VhdHIuYyx2IDEuNjMgMjAwOC8wOC8wMyAxNjoyNDo1MyB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKKworTU9EVUxFX0lEKCIkSWQ6IGxpYl90cmFjZWF0ci5jLHYgMS44MyAyMDE1LzA0LzA0IDEzOjQxOjM3IHRvbSBFeHAgJCIpCiAKICNkZWZpbmUgQ09MT1JfT0YoYykgKChjIDwgMCkgPyAiZGVmYXVsdCIgOiAoYyA+IDcgPyBjb2xvcl9vZihjKSA6IGNvbG9yc1tjXS5uYW1lKSkKIAorI2RlZmluZSBUUkFDRV9CVUZfU0laRShudW0pIChfbmNfZ2xvYmFscy50cmFjZWJ1Zl9wdHJbbnVtXS5zaXplKQorI2RlZmluZSBDT0xPUl9CVUZfU0laRShudW0pIChzaXplb2YobXlfYnVmZmVyW251bV0pKQorCiAjaWZkZWYgVFJBQ0UKIAogc3RhdGljIGNvbnN0IGNoYXIgbF9icmFjZVtdID0gU3RyaW5nT2YoTF9CUkFDRSk7CkBAIC02MSw5ICs2OCwxMiBAQAogCW15X2NhY2hlZCA9IGM7CiAJbXlfc2VsZWN0ID0gIW15X3NlbGVjdDsKIAlpZiAoYyA9PSBDT0xPUl9ERUZBVUxUKQotCSAgICBzdHJjcHkobXlfYnVmZmVyW215X3NlbGVjdF0sICJkZWZhdWx0Iik7CisJICAgIF9uY19TVFJDUFkobXlfYnVmZmVyW215X3NlbGVjdF0sICJkZWZhdWx0IiwKKwkJICAgICAgIENPTE9SX0JVRl9TSVpFKG15X3NlbGVjdCkpOwogCWVsc2UKLQkgICAgc3ByaW50ZihteV9idWZmZXJbbXlfc2VsZWN0XSwgImNvbG9yJWQiLCBjKTsKKwkgICAgX25jX1NQUklOVEYobXlfYnVmZmVyW215X3NlbGVjdF0sCisJCQlfbmNfU0xJTUlUKENPTE9SX0JVRl9TSVpFKG15X3NlbGVjdCkpCisJCQkiY29sb3IlZCIsIGMpOwogICAgIH0KICAgICByZXR1cm4gbXlfYnVmZmVyW215X3NlbGVjdF07CiB9CkBAIC03NSw3OCArODUsNzkgQEAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKIF90cmFjZWF0dHIyKGludCBidWZudW0sIGNodHlwZSBuZXdtb2RlKQogeworI2RlZmluZSBEQVRBKG5hbWUpIHsgbmFtZSwgeyAjbmFtZSB9IH0KICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAl1bnNpZ25lZCBpbnQgdmFsOwotCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2hhciBuYW1lWzE0XTsKICAgICB9IG5hbWVzW10gPQogICAgIHsKLQkvKiAqSU5ERU5ULU9GRiogKi8KLQl7IEFfU1RBTkRPVVQsCQkiQV9TVEFORE9VVCIgfSwKLQl7IEFfVU5ERVJMSU5FLAkJIkFfVU5ERVJMSU5FIiB9LAotCXsgQV9SRVZFUlNFLAkJIkFfUkVWRVJTRSIgfSwKLQl7IEFfQkxJTkssCQkiQV9CTElOSyIgfSwKLQl7IEFfRElNLAkJIkFfRElNIiB9LAotCXsgQV9CT0xELAkJIkFfQk9MRCIgfSwKLQl7IEFfQUxUQ0hBUlNFVCwJCSJBX0FMVENIQVJTRVQiIH0sCi0JeyBBX0lOVklTLAkJIkFfSU5WSVMiIH0sCi0JeyBBX1BST1RFQ1QsCQkiQV9QUk9URUNUIiB9LAotCXsgQV9DSEFSVEVYVCwJCSJBX0NIQVJURVhUIiB9LAotCXsgQV9OT1JNQUwsCQkiQV9OT1JNQUwiIH0sCi0JeyBBX0NPTE9SLAkJIkFfQ09MT1IiIH0sCi0JLyogKklOREVOVC1PTiogKi8KLQorCURBVEEoQV9TVEFORE9VVCksCisJICAgIERBVEEoQV9VTkRFUkxJTkUpLAorCSAgICBEQVRBKEFfUkVWRVJTRSksCisJICAgIERBVEEoQV9CTElOSyksCisJICAgIERBVEEoQV9ESU0pLAorCSAgICBEQVRBKEFfQk9MRCksCisJICAgIERBVEEoQV9BTFRDSEFSU0VUKSwKKwkgICAgREFUQShBX0lOVklTKSwKKwkgICAgREFUQShBX1BST1RFQ1QpLAorCSAgICBEQVRBKEFfQ0hBUlRFWFQpLAorCSAgICBEQVRBKEFfTk9STUFMKSwKKwkgICAgREFUQShBX0NPTE9SKSwKKyNpZiBVU0VfSVRBTElDCisJICAgIERBVEEoQV9JVEFMSUMpLAorI2VuZGlmCiAgICAgfQogI2lmbmRlZiBVU0VfVEVSTUxJQgogICAgICwKIAljb2xvcnNbXSA9CiAgICAgewotCS8qICpJTkRFTlQtT0ZGKiAqLwotCXsgQ09MT1JfQkxBQ0ssCQkiQ09MT1JfQkxBQ0siIH0sCi0JeyBDT0xPUl9SRUQsCQkiQ09MT1JfUkVEIiB9LAotCXsgQ09MT1JfR1JFRU4sCQkiQ09MT1JfR1JFRU4iIH0sCi0JeyBDT0xPUl9ZRUxMT1csCQkiQ09MT1JfWUVMTE9XIiB9LAotCXsgQ09MT1JfQkxVRSwJCSJDT0xPUl9CTFVFIiB9LAotCXsgQ09MT1JfTUFHRU5UQSwJIkNPTE9SX01BR0VOVEEiIH0sCi0JeyBDT0xPUl9DWUFOLAkJIkNPTE9SX0NZQU4iIH0sCi0JeyBDT0xPUl9XSElURSwJCSJDT0xPUl9XSElURSIgfSwKLQkvKiAqSU5ERU5ULU9OKiAqLwotCisJREFUQShDT0xPUl9CTEFDSyksCisJICAgIERBVEEoQ09MT1JfUkVEKSwKKwkgICAgREFUQShDT0xPUl9HUkVFTiksCisJICAgIERBVEEoQ09MT1JfWUVMTE9XKSwKKwkgICAgREFUQShDT0xPUl9CTFVFKSwKKwkgICAgREFUQShDT0xPUl9NQUdFTlRBKSwKKwkgICAgREFUQShDT0xPUl9DWUFOKSwKKwkgICAgREFUQShDT0xPUl9XSElURSksCiAgICAgfQogI2VuZGlmIC8qICFVU0VfVEVSTUxJQiAqLwogICAgIDsKKyN1bmRlZiBEQVRBCiAgICAgc2l6ZV90IG47CiAgICAgY2hhciB0ZW1wWzgwXTsKLSAgICBjaGFyICpyZXN1bHQgPSBfbmNfdHJhY2VfYnVmKGJ1Zm51bSwgQlVGU0laKTsKKyAgICBjaGFyICpyZXN1bHQgPSBfbmNfdHJhY2VfYnVmKGJ1Zm51bSwgKHNpemVfdCkgQlVGU0laKTsKIAogICAgIGlmIChyZXN1bHQgIT0gMCkgewogCXVuc2lnbmVkIHNhdmVfbmNfdHJhY2luZyA9IF9uY190cmFjaW5nOwogCiAJX25jX3RyYWNpbmcgPSAwOwogCi0Jc3RyY3B5KHJlc3VsdCwgbF9icmFjZSk7CisJX25jX1NUUkNQWShyZXN1bHQsIGxfYnJhY2UsIFRSQUNFX0JVRl9TSVpFKGJ1Zm51bSkpOwogCiAJZm9yIChuID0gMDsgbiA8IFNJWkVPRihuYW1lcyk7IG4rKykgewogCSAgICBpZiAoKG5ld21vZGUgJiBuYW1lc1tuXS52YWwpICE9IDApIHsKIAkJaWYgKHJlc3VsdFsxXSAhPSAnXDAnKQotCQkgICAgcmVzdWx0ID0gX25jX3RyYWNlX2J1ZmNhdChidWZudW0sICJ8Iik7CisJCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sICJ8Iik7CiAJCXJlc3VsdCA9IF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCBuYW1lc1tuXS5uYW1lKTsKIAogCQlpZiAobmFtZXNbbl0udmFsID09IEFfQ09MT1IpIHsKLQkJICAgIHNob3J0IHBhaXJudW0gPSBQQUlSX05VTUJFUihuZXdtb2RlKTsKKwkJICAgIHNob3J0IHBhaXJudW0gPSAoc2hvcnQpIFBhaXJOdW1iZXIobmV3bW9kZSk7CiAjaWZkZWYgVVNFX1RFUk1MSUIKIAkJICAgIC8qIHBhaXJfY29udGVudCBsaXZlcyBpbiBsaWJuY3Vyc2VzICovCi0JCSAgICAodm9pZCkgc3ByaW50Zih0ZW1wLCAieyVkfSIsIHBhaXJudW0pOworCQkgICAgX25jX1NQUklOVEYodGVtcCwgX25jX1NMSU1JVChzaXplb2YodGVtcCkpCisJCQkJInslZH0iLCBwYWlybnVtKTsKICNlbHNlCi0JCSAgICBzaG9ydCBmZywgYmc7CisJCSAgICBOQ1VSU0VTX0NPTE9SX1QgZmcsIGJnOwogCiAJCSAgICBpZiAocGFpcl9jb250ZW50KHBhaXJudW0sICZmZywgJmJnKSA9PSBPSykgewotCQkJKHZvaWQpIHNwcmludGYodGVtcCwKLQkJCQkgICAgICAgInslZCA9IHslcywgJXN9fSIsCi0JCQkJICAgICAgIHBhaXJudW0sCi0JCQkJICAgICAgIENPTE9SX09GKGZnKSwKLQkJCQkgICAgICAgQ09MT1JfT0YoYmcpKTsKKwkJCV9uY19TUFJJTlRGKHRlbXAsIF9uY19TTElNSVQoc2l6ZW9mKHRlbXApKQorCQkJCSAgICAieyVkID0geyVzLCAlc319IiwKKwkJCQkgICAgcGFpcm51bSwKKwkJCQkgICAgQ09MT1JfT0YoZmcpLAorCQkJCSAgICBDT0xPUl9PRihiZykpOwogCQkgICAgfSBlbHNlIHsKLQkJCSh2b2lkKSBzcHJpbnRmKHRlbXAsICJ7JWR9IiwgcGFpcm51bSk7CisJCQlfbmNfU1BSSU5URih0ZW1wLCBfbmNfU0xJTUlUKHNpemVvZih0ZW1wKSkKKwkJCQkgICAgInslZH0iLCBwYWlybnVtKTsKIAkJICAgIH0KICNlbmRpZgogCQkgICAgcmVzdWx0ID0gX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIHRlbXApOwpAQCAtMTcyLDYgKzE4MywxNCBAQAogfQogCiAvKiBUcmFjZSAnaW50JyByZXR1cm4tdmFsdWVzICovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfcmV0cmFjZV9pbnRfYXR0cl90KGF0dHJfdCBjb2RlKQoreworICAgIFQoKFRfUkVUVVJOKCIlcyIpLCBfdHJhY2VhdHRyKGNvZGUpKSk7CisgICAgcmV0dXJuIChpbnQpIGNvZGU7Cit9CisKKy8qIFRyYWNlICdhdHRyX3QnIHJldHVybi12YWx1ZXMgKi8KIE5DVVJTRVNfRVhQT1JUKGF0dHJfdCkKIF9uY19yZXRyYWNlX2F0dHJfdChhdHRyX3QgY29kZSkKIHsKQEAgLTE4Miw2OCArMjAxLDc2IEBACiBjb25zdCBjaGFyICoKIF9uY19hbHRjaGFyc2V0X25hbWUoYXR0cl90IGF0dHIsIGNodHlwZSBjaCkKIHsKKyNkZWZpbmUgREFUQShjb2RlLCBuYW1lKSB7IGNvZGUsIHsgI25hbWUgfSB9CiAgICAgdHlwZWRlZiBzdHJ1Y3QgewogCXVuc2lnbmVkIGludCB2YWw7Ci0JY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBjaGFyIG5hbWVbMTNdOwogICAgIH0gQUxUX05BTUVTOworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgICBTQ1JFRU4gKnNwID0gQ1VSUkVOVF9TQ1JFRU47CisjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgQUxUX05BTUVTIG5hbWVzW10gPQogICAgIHsKLQl7J2wnLCAiQUNTX1VMQ09STkVSIn0sCS8qIHVwcGVyIGxlZnQgY29ybmVyICovCi0JeydtJywgIkFDU19MTENPUk5FUiJ9LAkvKiBsb3dlciBsZWZ0IGNvcm5lciAqLwotCXsnaycsICJBQ1NfVVJDT1JORVIifSwJLyogdXBwZXIgcmlnaHQgY29ybmVyICovCi0JeydqJywgIkFDU19MUkNPUk5FUiJ9LAkvKiBsb3dlciByaWdodCBjb3JuZXIgKi8KLQl7J3QnLCAiQUNTX0xURUUifSwJLyogdGVlIHBvaW50aW5nIHJpZ2h0ICovCi0Jeyd1JywgIkFDU19SVEVFIn0sCS8qIHRlZSBwb2ludGluZyBsZWZ0ICovCi0Jeyd2JywgIkFDU19CVEVFIn0sCS8qIHRlZSBwb2ludGluZyB1cCAqLwotCXsndycsICJBQ1NfVFRFRSJ9LAkvKiB0ZWUgcG9pbnRpbmcgZG93biAqLwotCXsncScsICJBQ1NfSExJTkUifSwJLyogaG9yaXpvbnRhbCBsaW5lICovCi0Jeyd4JywgIkFDU19WTElORSJ9LAkvKiB2ZXJ0aWNhbCBsaW5lICovCi0JeyduJywgIkFDU19QTFVTIn0sCS8qIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyICovCi0JeydvJywgIkFDU19TMSJ9LAkvKiBzY2FuIGxpbmUgMSAqLwotCXsncycsICJBQ1NfUzkifSwJLyogc2NhbiBsaW5lIDkgKi8KLQl7J2AnLCAiQUNTX0RJQU1PTkQifSwJLyogZGlhbW9uZCAqLwotCXsnYScsICJBQ1NfQ0tCT0FSRCJ9LAkvKiBjaGVja2VyIGJvYXJkIChzdGlwcGxlKSAqLwotCXsnZicsICJBQ1NfREVHUkVFIn0sCS8qIGRlZ3JlZSBzeW1ib2wgKi8KLQl7J2cnLCAiQUNTX1BMTUlOVVMifSwJLyogcGx1cy9taW51cyAqLwotCXsnficsICJBQ1NfQlVMTEVUIn0sCS8qIGJ1bGxldCAqLwotCXsnLCcsICJBQ1NfTEFSUk9XIn0sCS8qIGFycm93IHBvaW50aW5nIGxlZnQgKi8KLQl7JysnLCAiQUNTX1JBUlJPVyJ9LAkvKiBhcnJvdyBwb2ludGluZyByaWdodCAqLwotCXsnLicsICJBQ1NfREFSUk9XIn0sCS8qIGFycm93IHBvaW50aW5nIGRvd24gKi8KLQl7Jy0nLCAiQUNTX1VBUlJPVyJ9LAkvKiBhcnJvdyBwb2ludGluZyB1cCAqLwotCXsnaCcsICJBQ1NfQk9BUkQifSwJLyogYm9hcmQgb2Ygc3F1YXJlcyAqLwotCXsnaScsICJBQ1NfTEFOVEVSTiJ9LAkvKiBsYW50ZXJuIHN5bWJvbCAqLwotCXsnMCcsICJBQ1NfQkxPQ0sifSwJLyogc29saWQgc3F1YXJlIGJsb2NrICovCi0JeydwJywgIkFDU19TMyJ9LAkvKiBzY2FuIGxpbmUgMyAqLwotCXsncicsICJBQ1NfUzcifSwJLyogc2NhbiBsaW5lIDcgKi8KLQl7J3knLCAiQUNTX0xFUVVBTCJ9LAkvKiBsZXNzL2VxdWFsICovCi0Jeyd6JywgIkFDU19HRVFVQUwifSwJLyogZ3JlYXRlci9lcXVhbCAqLwotCXsneycsICJBQ1NfUEkifSwJLyogUGkgKi8KLQl7J3wnLCAiQUNTX05FUVVBTCJ9LAkvKiBub3QgZXF1YWwgKi8KLQl7J30nLCAiQUNTX1NURVJMSU5HIn0sCS8qIFVLIHBvdW5kIHNpZ24gKi8KLQl7J1wwJywgKGNoYXIgKikgMH0KKwlEQVRBKCdsJywgQUNTX1VMQ09STkVSKSwJLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KKwlEQVRBKCdtJywgQUNTX0xMQ09STkVSKSwJLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KKwlEQVRBKCdrJywgQUNTX1VSQ09STkVSKSwJLyogdXBwZXIgcmlnaHQgY29ybmVyICovCisJREFUQSgnaicsIEFDU19MUkNPUk5FUiksCS8qIGxvd2VyIHJpZ2h0IGNvcm5lciAqLworCURBVEEoJ3QnLCBBQ1NfTFRFRSksCS8qIHRlZSBwb2ludGluZyByaWdodCAqLworCURBVEEoJ3UnLCBBQ1NfUlRFRSksCS8qIHRlZSBwb2ludGluZyBsZWZ0ICovCisJREFUQSgndicsIEFDU19CVEVFKSwJLyogdGVlIHBvaW50aW5nIHVwICovCisJREFUQSgndycsIEFDU19UVEVFKSwJLyogdGVlIHBvaW50aW5nIGRvd24gKi8KKwlEQVRBKCdxJywgQUNTX0hMSU5FKSwJLyogaG9yaXpvbnRhbCBsaW5lICovCisJREFUQSgneCcsIEFDU19WTElORSksCS8qIHZlcnRpY2FsIGxpbmUgKi8KKwlEQVRBKCduJywgQUNTX1BMVVMpLAkvKiBsYXJnZSBwbHVzIG9yIGNyb3Nzb3ZlciAqLworCURBVEEoJ28nLCBBQ1NfUzEpLAkvKiBzY2FuIGxpbmUgMSAqLworCURBVEEoJ3MnLCBBQ1NfUzkpLAkvKiBzY2FuIGxpbmUgOSAqLworCURBVEEoJ2AnLCBBQ1NfRElBTU9ORCksCS8qIGRpYW1vbmQgKi8KKwlEQVRBKCdhJywgQUNTX0NLQk9BUkQpLAkvKiBjaGVja2VyIGJvYXJkIChzdGlwcGxlKSAqLworCURBVEEoJ2YnLCBBQ1NfREVHUkVFKSwJLyogZGVncmVlIHN5bWJvbCAqLworCURBVEEoJ2cnLCBBQ1NfUExNSU5VUyksCS8qIHBsdXMvbWludXMgKi8KKwlEQVRBKCd+JywgQUNTX0JVTExFVCksCS8qIGJ1bGxldCAqLworCURBVEEoJywnLCBBQ1NfTEFSUk9XKSwJLyogYXJyb3cgcG9pbnRpbmcgbGVmdCAqLworCURBVEEoJysnLCBBQ1NfUkFSUk9XKSwJLyogYXJyb3cgcG9pbnRpbmcgcmlnaHQgKi8KKwlEQVRBKCcuJywgQUNTX0RBUlJPVyksCS8qIGFycm93IHBvaW50aW5nIGRvd24gKi8KKwlEQVRBKCctJywgQUNTX1VBUlJPVyksCS8qIGFycm93IHBvaW50aW5nIHVwICovCisJREFUQSgnaCcsIEFDU19CT0FSRCksCS8qIGJvYXJkIG9mIHNxdWFyZXMgKi8KKwlEQVRBKCdpJywgQUNTX0xBTlRFUk4pLAkvKiBsYW50ZXJuIHN5bWJvbCAqLworCURBVEEoJzAnLCBBQ1NfQkxPQ0spLAkvKiBzb2xpZCBzcXVhcmUgYmxvY2sgKi8KKwlEQVRBKCdwJywgQUNTX1MzKSwJLyogc2NhbiBsaW5lIDMgKi8KKwlEQVRBKCdyJywgQUNTX1M3KSwJLyogc2NhbiBsaW5lIDcgKi8KKwlEQVRBKCd5JywgQUNTX0xFUVVBTCksCS8qIGxlc3MvZXF1YWwgKi8KKwlEQVRBKCd6JywgQUNTX0dFUVVBTCksCS8qIGdyZWF0ZXIvZXF1YWwgKi8KKwlEQVRBKCd7JywgQUNTX1BJKSwJLyogUGkgKi8KKwlEQVRBKCd8JywgQUNTX05FUVVBTCksCS8qIG5vdCBlcXVhbCAqLworCURBVEEoJ30nLCBBQ1NfU1RFUkxJTkcpLAkvKiBVSyBwb3VuZCBzaWduICovCiAgICAgfTsKKyN1bmRlZiBEQVRBCiAKICAgICBjb25zdCBjaGFyICpyZXN1bHQgPSAwOwogCi0gICAgaWYgKChhdHRyICYgQV9BTFRDSEFSU0VUKSAmJiAoYWNzX2NoYXJzICE9IDApKSB7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgICh2b2lkKSBzcDsKKyNlbmRpZgorICAgIGlmIChTUF9QQVJNICE9IDAgJiYgKGF0dHIgJiBBX0FMVENIQVJTRVQpICYmIChhY3NfY2hhcnMgIT0gMCkpIHsKIAljaGFyICpjcDsKIAljaGFyICpmb3VuZCA9IDA7Ci0JY29uc3QgQUxUX05BTUVTICpzcDsKKwlzaXplX3QgbjsKIAogCWZvciAoY3AgPSBhY3NfY2hhcnM7IGNwWzBdICYmIGNwWzFdOyBjcCArPSAyKSB7Ci0JICAgIGlmIChDaENoYXJPZihjcFsxXSkgPT0gQ2hDaGFyT2YoY2gpKSB7CisJICAgIGlmIChDaENoYXJPZihVQ2hhcihjcFsxXSkpID09IENoQ2hhck9mKGNoKSkgewogCQlmb3VuZCA9IGNwOwogCQkvKiBkb24ndCBleGl0IGZyb20gbG9vcCAtIHRoZXJlIG1heSBiZSByZWRlZmluaXRpb25zICovCiAJICAgIH0KIAl9CiAKIAlpZiAoZm91bmQgIT0gMCkgewotCSAgICBjaCA9IENoQ2hhck9mKCpmb3VuZCk7Ci0JICAgIGZvciAoc3AgPSBuYW1lczsgc3AtPnZhbDsgc3ArKykKLQkJaWYgKHNwLT52YWwgPT0gY2gpIHsKLQkJICAgIHJlc3VsdCA9IHNwLT5uYW1lOworCSAgICBjaCA9IENoQ2hhck9mKFVDaGFyKCpmb3VuZCkpOworCSAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKG5hbWVzKTsgKytuKSB7CisJCWlmIChuYW1lc1tuXS52YWwgPT0gY2gpIHsKKwkJICAgIHJlc3VsdCA9IG5hbWVzW25dLm5hbWU7CiAJCSAgICBicmVhazsKIAkJfQorCSAgICB9CiAJfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjUzLDE0ICsyODAsMTYgQEAKIF90cmFjZWNodHlwZTIoaW50IGJ1Zm51bSwgY2h0eXBlIGNoKQogewogICAgIGNvbnN0IGNoYXIgKmZvdW5kOwotICAgIGNoYXIgKnJlc3VsdCA9IF9uY190cmFjZV9idWYoYnVmbnVtLCBCVUZTSVopOworICAgIGNoYXIgKnJlc3VsdCA9IF9uY190cmFjZV9idWYoYnVmbnVtLCAoc2l6ZV90KSBCVUZTSVopOwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKSB7Ci0Jc3RyY3B5KHJlc3VsdCwgbF9icmFjZSk7CisJX25jX1NUUkNQWShyZXN1bHQsIGxfYnJhY2UsIFRSQUNFX0JVRl9TSVpFKGJ1Zm51bSkpOwogCWlmICgoZm91bmQgPSBfbmNfYWx0Y2hhcnNldF9uYW1lKENoQXR0ck9mKGNoKSwgY2gpKSAhPSAwKSB7CiAJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZm91bmQpOwogCX0gZWxzZQotCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIF9uY190cmFjZWNoYXIoU1AsIChpbnQpIENoQ2hhck9mKGNoKSkpOworCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sCisJCQkJICAgIF9uY190cmFjZWNoYXIoQ1VSUkVOVF9TQ1JFRU4sCisJCQkJCQkgIChpbnQpIENoQ2hhck9mKGNoKSkpOwogCiAJaWYgKENoQXR0ck9mKGNoKSAhPSBBX05PUk1BTCkgewogCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sICIgfCAiKTsKQEAgLTI5MSwxMiArMzIwLDEyIEBACiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCiBfdHJhY2VjY2hhcl90MihpbnQgYnVmbnVtLCBjb25zdCBjY2hhcl90ICpjaCkKIHsKLSAgICBjaGFyICpyZXN1bHQgPSBfbmNfdHJhY2VfYnVmKGJ1Zm51bSwgQlVGU0laKTsKKyAgICBjaGFyICpyZXN1bHQgPSBfbmNfdHJhY2VfYnVmKGJ1Zm51bSwgKHNpemVfdCkgQlVGU0laKTsKICAgICBhdHRyX3QgYXR0cjsKICAgICBjb25zdCBjaGFyICpmb3VuZDsKIAogICAgIGlmIChyZXN1bHQgIT0gMCkgewotCXN0cmNweShyZXN1bHQsIGxfYnJhY2UpOworCV9uY19TVFJDUFkocmVzdWx0LCBsX2JyYWNlLCBUUkFDRV9CVUZfU0laRShidWZudW0pKTsKIAlpZiAoY2ggIT0gMCkgewogCSAgICBhdHRyID0gQXR0ck9mRChjaCk7CiAJICAgIGlmICgoZm91bmQgPSBfbmNfYWx0Y2hhcnNldF9uYW1lKGF0dHIsIChjaHR5cGUpIENoYXJPZkQoY2gpKSkgIT0gMCkgewpAQCAtMzEzLDE0ICszNDIsMTcgQEAKIAkJKHZvaWQpIF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCAieyAiKTsKIAkJZm9yIChQVVRDX2kgPSAwOyBQVVRDX2kgPCBDQ0hBUldfTUFYOyArK1BVVENfaSkgewogCQkgICAgUFVUQ19jaCA9IGNoLT5jaGFyc1tQVVRDX2ldOwotCQkgICAgaWYgKFBVVENfY2ggPT0gTCdcMCcpCisJCSAgICBpZiAoUFVUQ19jaCA9PSBMJ1wwJykgeworCQkJaWYgKFBVVENfaSA9PSAwKQorCQkJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgIlxcMDAwIik7CiAJCQlicmVhazsKLQkJICAgIFBVVENfbiA9IHdjcnRvbWIoUFVUQ19idWYsIGNoLT5jaGFyc1tQVVRDX2ldLCAmUFVUX3N0KTsKKwkJICAgIH0KKwkJICAgIFBVVENfbiA9IChpbnQpIHdjcnRvbWIoUFVUQ19idWYsIGNoLT5jaGFyc1tQVVRDX2ldLCAmUFVUX3N0KTsKIAkJICAgIGlmIChQVVRDX24gPD0gMCkgewogCQkJaWYgKFBVVENfY2ggIT0gTCdcMCcpIHsKIAkJCSAgICAvKiBpdCBjb3VsZCBub3QgYmUgYSBtdWx0aWJ5dGUgc2VxdWVuY2UgKi8KIAkJCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sCi0JCQkJCQkgICAgX25jX3RyYWNlY2hhcihTUCwKKwkJCQkJCSAgICBfbmNfdHJhY2VjaGFyKENVUlJFTlRfU0NSRUVOLAogCQkJCQkJCQkgIFVDaGFyKGNoLT5jaGFyc1tQVVRDX2ldKSkpOwogCQkJfQogCQkJYnJlYWs7CkBAIC0zMjksNyArMzYxLDcgQEAKIAkJCWlmIChuKQogCQkJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgIiwgIik7CiAJCQkodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sCi0JCQkJCQlfbmNfdHJhY2VjaGFyKFNQLAorCQkJCQkJX25jX3RyYWNlY2hhcihDVVJSRU5UX1NDUkVFTiwKIAkJCQkJCQkgICAgICBVQ2hhcihQVVRDX2J1ZltuXSkpKTsKIAkJICAgIH0KIAkJfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90cmFjZS9saWJfdHJhY2ViaXRzLmMgYi9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWJpdHMuYwppbmRleCBjYzQ0MWIzLi5mODgwYjY3IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWJpdHMuYworKysgYi9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWJpdHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTMzLDEzICszMyw4IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgkJLyogY3VyX3Rlcm0gKi8KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl90cmFjZWJpdHMuYyx2IDEuMTcgMjAwOC8wOC8wMyAxNjowOToyNiB0b20gRXhwICQiKQotCi0jaWYgU1ZSNF9URVJNSU8gJiYgIWRlZmluZWQoX1BPU0lYX1NPVVJDRSkKLSNkZWZpbmUgX1BPU0lYX1NPVVJDRQotI2VuZGlmCitNT0RVTEVfSUQoIiRJZDogbGliX3RyYWNlYml0cy5jLHYgMS4yNiAyMDE1LzA0LzE5IDE0OjU4OjM5IHRvbSBFeHAgJCIpCiAKICNpZiBIQVZFX1NZU19URVJNSU9fSAogI2luY2x1ZGUgPHN5cy90ZXJtaW8uaD4JCS8qIG5lZWRlZCBmb3IgSVNDICovCkBAIC03OCwyNSArNzMsMjcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHVuc2lnbmVkIGludCB2YWw7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyIG5hbWVbOF07CiB9IEJJVE5BTUVTOwogCisjZGVmaW5lIFRSQUNFX0JVRl9TSVpFKG51bSkgKF9uY19nbG9iYWxzLnRyYWNlYnVmX3B0cltudW1dLnNpemUpCisKIHN0YXRpYyB2b2lkCiBsb29rdXBfYml0cyhjaGFyICpidWYsIGNvbnN0IEJJVE5BTUVTICogdGFibGUsIGNvbnN0IGNoYXIgKmxhYmVsLCB1bnNpZ25lZCBpbnQgdmFsKQogewogICAgIGNvbnN0IEJJVE5BTUVTICpzcDsKIAotICAgICh2b2lkKSBzdHJjYXQoYnVmLCBsYWJlbCk7Ci0gICAgKHZvaWQpIHN0cmNhdChidWYsICI6IHsiKTsKLSAgICBmb3IgKHNwID0gdGFibGU7IHNwLT5uYW1lOyBzcCsrKQorICAgIF9uY19TVFJDQVQoYnVmLCBsYWJlbCwgVFJBQ0VfQlVGX1NJWkUoMCkpOworICAgIF9uY19TVFJDQVQoYnVmLCAiOiB7IiwgVFJBQ0VfQlVGX1NJWkUoMCkpOworICAgIGZvciAoc3AgPSB0YWJsZTsgc3AtPm5hbWVbMF07IHNwKyspCiAJaWYgKHNwLT52YWwgIT0gMAogCSAgICAmJiAodmFsICYgc3AtPnZhbCkgPT0gc3AtPnZhbCkgewotCSAgICAodm9pZCkgc3RyY2F0KGJ1Ziwgc3AtPm5hbWUpOwotCSAgICAodm9pZCkgc3RyY2F0KGJ1ZiwgIiwgIik7CisJICAgIF9uY19TVFJDQVQoYnVmLCBzcC0+bmFtZSwgVFJBQ0VfQlVGX1NJWkUoMCkpOworCSAgICBfbmNfU1RSQ0FUKGJ1ZiwgIiwgIiwgVFJBQ0VfQlVGX1NJWkUoMCkpOwogCX0KICAgICBpZiAoYnVmW3N0cmxlbihidWYpIC0gMl0gPT0gJywnKQogCWJ1ZltzdHJsZW4oYnVmKSAtIDJdID0gJ1wwJzsKLSAgICAodm9pZCkgc3RyY2F0KGJ1ZiwgIn0gIik7CisgICAgX25jX1NUUkNBVChidWYsICJ9ICIsIFRSQUNFX0JVRl9TSVpFKDApKTsKIH0KIAogTkNVUlNFU19FWFBPUlQoY2hhciAqKQpAQCAtMTA2LDU2ICsxMDMsNTkgQEAKICAgICBjaGFyICpidWY7CiAKICNpZmRlZiBURVJNSU9TCisjZGVmaW5lIERBVEEobmFtZSkgICAgICAgIHsgbmFtZSwgeyAjbmFtZSB9IH0KKyNkZWZpbmUgREFUQTIobmFtZSxuYW1lMikgeyBuYW1lLCB7ICNuYW1lMiB9IH0KKyNkZWZpbmUgREFUQVgoKSAgICAgICAgICAgeyAwLCAgICB7ICIiIH0gfQogICAgIHN0YXRpYyBjb25zdCBCSVROQU1FUyBpZmxhZ3NbXSA9CiAgICAgewotCXtCUktJTlQsICJCUktJTlQifSwKLQl7SUdOQlJLLCAiSUdOQlJLIn0sCi0Je0lHTlBBUiwgIklHTlBBUiJ9LAotCXtQQVJNUkssICJQQVJNUksifSwKLQl7SU5QQ0ssICJJTlBDSyJ9LAotCXtJU1RSSVAsICJJU1RSSVAifSwKLQl7SU5MQ1IsICJJTkxDUiJ9LAotCXtJR05DUiwgIklHTkMifSwKLQl7SUNSTkwsICJJQ1JOTCJ9LAotCXtJWE9OLCAiSVhPTiJ9LAotCXtJWE9GRiwgIklYT0ZGIn0sCi0JezAsIE5VTEx9CisJREFUQShCUktJTlQpLAorCURBVEEoSUdOQlJLKSwKKwlEQVRBKElHTlBBUiksCisJREFUQShQQVJNUkspLAorCURBVEEoSU5QQ0spLAorCURBVEEoSVNUUklQKSwKKwlEQVRBKElOTENSKSwKKwlEQVRBKElHTkNSKSwKKwlEQVRBKElDUk5MKSwKKwlEQVRBKElYT04pLAorCURBVEEoSVhPRkYpLAorCURBVEFYKCkKICNkZWZpbmUgQUxMSU4JKEJSS0lOVHxJR05CUkt8SUdOUEFSfFBBUk1SS3xJTlBDS3xJU1RSSVB8SU5MQ1J8SUdOQ1J8SUNSTkx8SVhPTnxJWE9GRikKICAgICB9LCBvZmxhZ3NbXSA9CiAgICAgewotCXtPUE9TVCwgIk9QT1NUIn0sCi0Je09GTEFHU19UQUJTLCAiWFRBQlMifSwKLQl7T05MQ1IsICJPTkxDUiJ9LAotCXtPQ1JOTCwgIk9DUk5MIn0sCi0Je09OT0NSLCAiT05PQ1IifSwKLQl7T05MUkVULCAiT05MUkVUIn0sCi0JezAsIE5VTEx9CisJREFUQShPUE9TVCksCisJREFUQTIoT0ZMQUdTX1RBQlMsIFhUQUJTKSwKKwlEQVRBKE9OTENSKSwKKwlEQVRBKE9DUk5MKSwKKwlEQVRBKE9OT0NSKSwKKwlEQVRBKE9OTFJFVCksCisJREFUQVgoKQogI2RlZmluZSBBTExPVVQJKE9QT1NUfE9GTEFHU19UQUJTfE9OTENSfE9DUk5MfE9OT0NSfE9OTFJFVCkKICAgICB9LCBjZmxhZ3NbXSA9CiAgICAgewotCXtDTE9DQUwsICJDTE9DQUwifSwKLQl7Q1JFQUQsICJDUkVBRCJ9LAotCXtDU1RPUEIsICJDU1RPUEIifSwKKwlEQVRBKENMT0NBTCksCisJREFUQShDUkVBRCksCisJREFUQShDU1RPUEIpLAogI2lmICFkZWZpbmVkKENTNSkgfHwgIWRlZmluZWQoQ1M4KQotCXtDU0laRSwgIkNTSVpFIn0sCisJREFUQShDU0laRSksCiAjZW5kaWYKLQl7SFVQQ0wsICJIVVBDTCJ9LAotCXtQQVJFTkIsICJQQVJFTkIifSwKLQl7UEFST0REIHwgUEFSRU5CLCAiUEFST0REIn0sCS8qIGNvbmNlc3Npb24gdG8gcmVhZGFiaWxpdHkgKi8KLQl7MCwgTlVMTH0KKwlEQVRBKEhVUENMKSwKKwlEQVRBKFBBUkVOQiksCisJREFUQTIoUEFST0REIHwgUEFSRU5CLCBQQVJPREQpLAorCURBVEFYKCkKICNkZWZpbmUgQUxMQ1RSTAkoQ0xPQ0FMfENSRUFEfENTSVpFfENTVE9QQnxIVVBDTHxQQVJFTkJ8UEFST0REKQogICAgIH0sIGxmbGFnc1tdID0KICAgICB7Ci0Je0VDSE8sICJFQ0hPIn0sCi0Je0VDSE9FIHwgRUNITywgIkVDSE9FIn0sCS8qIGNvbmNlc3Npb24gdG8gcmVhZGFiaWxpdHkgKi8KLQl7RUNIT0sgfCBFQ0hPLCAiRUNIT0sifSwJLyogY29uY2Vzc2lvbiB0byByZWFkYWJpbGl0eSAqLwotCXtFQ0hPTkwsICJFQ0hPTkwifSwKLQl7SUNBTk9OLCAiSUNBTk9OIn0sCi0Je0lTSUcsICJJU0lHIn0sCi0Je05PRkxTSCwgIk5PRkxTSCJ9LAotCXtUT1NUT1AsICJUT1NUT1AifSwKLQl7SUVYVEVOLCAiSUVYVEVOIn0sCi0JezAsIE5VTEx9CisJREFUQShFQ0hPKSwKKwlEQVRBMihFQ0hPRSB8IEVDSE8sIEVDSE9FKSwKKwlEQVRBMihFQ0hPSyB8IEVDSE8sIEVDSE9LKSwKKwlEQVRBKEVDSE9OTCksCisJREFUQShJQ0FOT04pLAorCURBVEEoSVNJRyksCisJREFUQShOT0ZMU0gpLAorCURBVEEoVE9TVE9QKSwKKwlEQVRBKElFWFRFTiksCisJREFUQVgoKQogI2RlZmluZSBBTExMT0NBTAkoRUNIT3xFQ0hPTkx8SUNBTk9OfElTSUd8Tk9GTFNIfFRPU1RPUHxJRVhURU4pCiAgICAgfTsKIApAQCAtMTc4LDExICsxNzgsMTEgQEAKIAogI2lmIGRlZmluZWQoQ1M1KSAmJiBkZWZpbmVkKENTOCkKIAl7Ci0JICAgIHN0YXRpYyBzdHJ1Y3QgeworCSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAkJaW50IHZhbHVlOwotCQljb25zdCBjaGFyICpuYW1lOworCQljb25zdCBjaGFyIG5hbWVbNV07CiAJICAgIH0gY3NpemVzW10gPSB7Ci0jZGVmaW5lIENTX0RBVEEobmFtZSkgeyBuYW1lLCAjbmFtZSAiICIgfQorI2RlZmluZSBDU19EQVRBKG5hbWUpIHsgbmFtZSwgeyAjbmFtZSAiICIgfSB9CiAJCUNTX0RBVEEoQ1M1KSwKICNpZmRlZiBDUzYKIAkJICAgIENTX0RBVEEoQ1M2KSwKQEAgLTE5Myw3ICsxOTMsNyBAQAogCQkgICAgQ1NfREFUQShDUzgpLAogCSAgICB9OwogCSAgICBjb25zdCBjaGFyICpyZXN1bHQgPSAiQ1NJWkU/ICI7Ci0JICAgIGludCB2YWx1ZSA9ICh0dHktPmNfY2ZsYWcgJiBDU0laRSk7CisJICAgIGludCB2YWx1ZSA9IChpbnQpICh0dHktPmNfY2ZsYWcgJiBDU0laRSk7CiAJICAgIHVuc2lnbmVkIG47CiAKIAkgICAgaWYgKHZhbHVlICE9IDApIHsKQEAgLTIwNCw3ICsyMDQsNyBAQAogCQkgICAgfQogCQl9CiAJICAgIH0KLQkgICAgc3RyY2F0KGJ1ZiwgcmVzdWx0KTsKKwkgICAgX25jX1NUUkNBVChidWYsIHJlc3VsdCwgVFJBQ0VfQlVGX1NJWkUoMCkpOwogCX0KICNlbmRpZgogCkBAIC0yMzEsMTcgKzIzMSwxNyBAQAogCiAgICAgc3RhdGljIGNvbnN0IEJJVE5BTUVTIGNmbGFnc1tdID0KICAgICB7Ci0Je0NCUkVBSywgIkNCUkVBSyJ9LAotCXtDUk1PRCwgIkNSTU9EIn0sCi0Je0VDSE8sICJFQ0hPIn0sCi0Je0VWRU5QLCAiRVZFTlAifSwKLQl7TENBU0UsICJMQ0FTRSJ9LAotCXtMTElUT1VULCAiTExJVE9VVCJ9LAotCXtPRERQLCAiT0REUCJ9LAotCXtSQVcsICJSQVcifSwKLQl7VEFOREVNLCAiVEFOREVNIn0sCi0Je1hUQUJTLCAiWFRBQlMifSwKLQl7MCwgTlVMTH0KKwlEQVRBKENCUkVBSyksCisJREFUQShDUk1PRCksCisJREFUQShFQ0hPKSwKKwlEQVRBKEVWRU5QKSwKKwlEQVRBKExDQVNFKSwKKwlEQVRBKExMSVRPVVQpLAorCURBVEEoT0REUCksCisJREFUQShSQVcpLAorCURBVEEoVEFOREVNKSwKKwlEQVRBKFhUQUJTKSwKKwlEQVRBWCgpCiAjZGVmaW5lIEFMTENUUkwJKENCUkVBS3xDUk1PRHxFQ0hPfEVWRU5QfExDQVNFfExMSVRPVVR8T0REUHxSQVd8VEFOREVNfFhUQUJTKQogICAgIH07CiAKQEAgLTI2Miw1ICsyNjIsNSBAQAogICAgIHJldHVybiBfbmNfdHJhY2VfdHR5bW9kZSgmKGN1cl90ZXJtLT5OdHR5YikpOwogfQogI2Vsc2UKLUVNUFRZX01PRFVMRShfbmNfdHJhY2ViaXRzKQorRU1QVFlfTU9EVUxFKF9uY19lbXB0eV9saWJfdHJhY2ViaXRzKQogI2VuZGlmIC8qIFRSQUNFICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWNoci5jIGIvbmN1cnNlcy90cmFjZS9saWJfdHJhY2VjaHIuYwppbmRleCA3OWNmMDNiLi44OTc3Zjc1IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWNoci5jCisrKyBiL25jdXJzZXMvdHJhY2UvbGliX3RyYWNlY2hyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSwxMCArMzksMTIgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdHJhY2VjaHIuYyx2IDEuMTkgMjAwOC8wOC8wMyAxNTozOToyOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl90cmFjZWNoci5jLHYgMS4yMiAyMDEyLzAyLzIyIDIyOjQwOjI0IHRvbSBFeHAgJCIpCiAKICNpZmRlZiBUUkFDRQogCisjZGVmaW5lIE15QnVmU2l6ZSBzaXplb2YoX25jX2dsb2JhbHMudHJhY2VjaHJfYnVmKQorCiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCiBfbmNfdHJhY2VjaGFyKFNDUkVFTiAqc3AsIGludCBjaCkKIHsKQEAgLTUyLDIyICs1NCwyNSBAQAogCQkgICAgICA6IF9uY19nbG9iYWxzLnRyYWNlY2hyX2J1Zik7CiAKICAgICBpZiAoY2ggPiBLRVlfTUlOIHx8IGNoIDwgMCkgewotCW5hbWUgPSBfbmNfa2V5bmFtZShzcCwgY2gpOworCW5hbWUgPSBzYWZlX2tleW5hbWUoU1BfUEFSTSwgY2gpOwogCWlmIChuYW1lID09IDAgfHwgKm5hbWUgPT0gJ1wwJykKIAkgICAgbmFtZSA9ICJOVUxMIjsKLQkodm9pZCkgc3ByaW50ZihNeUJ1ZmZlciwgIiclLjMwcycgPSAlIzAzbyIsIG5hbWUsIGNoKTsKKwlfbmNfU1BSSU5URihNeUJ1ZmZlciwgX25jX1NMSU1JVChNeUJ1ZlNpemUpCisJCSAgICAiJyUuMzBzJyA9ICUjMDNvIiwgbmFtZSwgY2gpOwogICAgIH0gZWxzZSBpZiAoIWlzOGJpdHMoY2gpIHx8ICFpc3ByaW50KFVDaGFyKGNoKSkpIHsKIAkvKgogCSAqIHdvcmthcm91bmQgZm9yIGdsaWJjIGJ1ZzoKIAkgKiBzcHJpbnRmIGNoYW5nZXMgdGhlIHJlc3VsdCBmcm9tIHVuY3RybCgpIHRvIGFuIGVtcHR5IHN0cmluZyBpZiBpdAogCSAqIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSB2YWxpZCBtdWx0aWJ5dGUgc2VxdWVuY2UuCiAJICovCi0JKHZvaWQpIHNwcmludGYoTXlCdWZmZXIsICIlIzAzbyIsIGNoKTsKKwlfbmNfU1BSSU5URihNeUJ1ZmZlciwgX25jX1NMSU1JVChNeUJ1ZlNpemUpCisJCSAgICAiJSMwM28iLCBjaCk7CiAgICAgfSBlbHNlIHsKLQluYW1lID0gX25jX3VuY3RybChzcCwgKGNodHlwZSkgY2gpOworCW5hbWUgPSBzYWZlX3VuY3RybChTUF9QQVJNLCAoY2h0eXBlKSBjaCk7CiAJaWYgKG5hbWUgPT0gMCB8fCAqbmFtZSA9PSAwKQogCSAgICBuYW1lID0gIm51bGwiOwkvKiBzaG91bGRuJ3QgaGFwcGVuICovCi0JKHZvaWQpIHNwcmludGYoTXlCdWZmZXIsICInJS4zMHMnID0gJSMwM28iLCBuYW1lLCBjaCk7CisJX25jX1NQUklOVEYoTXlCdWZmZXIsIF9uY19TTElNSVQoTXlCdWZTaXplKQorCQkgICAgIiclLjMwcycgPSAlIzAzbyIsIG5hbWUsIGNoKTsKICAgICB9CiAgICAgcmV0dXJuIChNeUJ1ZmZlcik7CiB9CkBAIC03NSw3ICs4MCw3IEBACiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCiBfdHJhY2VjaGFyKGludCBjaCkKIHsKLSAgICByZXR1cm4gX25jX3RyYWNlY2hhcihTUCwgY2gpOworICAgIHJldHVybiBfbmNfdHJhY2VjaGFyKENVUlJFTlRfU0NSRUVOLCBjaCk7CiB9CiAjZWxzZQogRU1QVFlfTU9EVUxFKF9uY19saWJfdHJhY2VjaHIpCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWRtcC5jIGIvbmN1cnNlcy90cmFjZS9saWJfdHJhY2VkbXAuYwppbmRleCA1ODczMmEwLi4wZmRhMTViIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZWRtcC5jCisrKyBiL25jdXJzZXMvdHJhY2UvbGliX3RyYWNlZG1wLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3RyYWNlZG1wLmMsdiAxLjMxIDIwMDgvMDgvMTYgMTk6MzA6NTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfdHJhY2VkbXAuYyx2IDEuMzQgMjAxMi8xMC8yNyAyMDo1NDo0MiB0b20gRXhwICQiKQogCiAjaWZkZWYgVFJBQ0UKIApAQCAtNjgsOCArNjgsMTAgQEAKICAgICBpZiAod2lkdGggPCB3aW4tPl9tYXh4KQogCSsrd2lkdGg7CiAgICAgaWYgKCsrd2lkdGggKyAxID4gKGludCkgbXlfbGVuZ3RoKSB7Ci0JbXlfbGVuZ3RoID0gMiAqICh3aWR0aCArIDEpOworCW15X2xlbmd0aCA9ICh1bnNpZ25lZCkgKDIgKiAod2lkdGggKyAxKSk7CiAJbXlfYnVmZmVyID0gdHlwZVJlYWxsb2MoY2hhciwgbXlfbGVuZ3RoLCBteV9idWZmZXIpOworCWlmIChteV9idWZmZXIgPT0gMCkKKwkgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAobiA9IDA7IG4gPD0gd2luLT5fbWF4eTsgKytuKSB7CkBAIC04Miw3ICs4NCw3IEBACiAJICogd2UgbWFwIHRob3NlIHRvICcuJyBhbmQgJz8nIHJlc3BlY3RpdmVseS4KIAkgKi8KIAlmb3IgKGogPSAwOyBqIDwgd2lkdGg7ICsraikgewotCSAgICBjaHR5cGUgdGVzdCA9IENoYXJPZih3aW4tPl9saW5lW25dLnRleHRbal0pOworCSAgICBjaHR5cGUgdGVzdCA9IChjaHR5cGUpIENoYXJPZih3aW4tPl9saW5lW25dLnRleHRbal0pOwogCSAgICBlcFtqXSA9IChjaGFyKSAoKFVDaGFyKHRlc3QpID09IHRlc3QKICNpZiBVU0VfV0lERUNfU1VQUE9SVAogCQkJICAgICAmJiAod2luLT5fbGluZVtuXS50ZXh0W2pdLmNoYXJzWzFdID09IDApCkBAIC0xNTMsNyArMTU1LDcgQEAKIAogCWZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKIAkgICAgY29uc3QgY2hhciAqaGV4ID0gIiAxMjM0NTY3ODlBQkNERUYiOwotCSAgICBhdHRyX3QgbWFzayA9ICgweGYgPDwgKChpICsgNCkgKiA0KSk7CisJICAgIGF0dHJfdCBtYXNrID0gKGF0dHJfdCkgKDB4ZiA8PCAoKGkgKyA0KSAqIDQpKTsKIAogCSAgICBoYXZlYXR0cnMgPSBGQUxTRTsKIAkgICAgZm9yIChqID0gMDsgaiA8IHdpZHRoOyArK2opCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZW1zZS5jIGIvbmN1cnNlcy90cmFjZS9saWJfdHJhY2Vtc2UuYwppbmRleCA3NGNjMTc3Li5jNjJiNzFhIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL2xpYl90cmFjZW1zZS5jCisrKyBiL25jdXJzZXMvdHJhY2UvbGliX3RyYWNlbXNlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOCwyMyArMzgsMjIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdHJhY2Vtc2UuYyx2IDEuMTUgMjAwOC8wOC8wMyAxNTozOToyOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl90cmFjZW1zZS5jLHYgMS4yMiAyMDE0LzEwLzEwIDA5OjA2OjI2IHRvbSBFeHAgJCIpCiAKICNpZmRlZiBUUkFDRQogCiAjZGVmaW5lIG15X2J1ZmZlciBzcC0+dHJhY2Vtc2VfYnVmCiAKIE5DVVJTRVNfRVhQT1JUKGNoYXIgKikKLV9uY190cmFjZW1vdXNlKFNDUkVFTiAqc3AsIE1FVkVOVCBjb25zdCAqZXApCitfbmNfdHJhY2VfbW1hc2tfdChTQ1JFRU4gKnNwLCBtbWFza190IGNvZGUpCiB7Ci0gICAgKHZvaWQpIHNwcmludGYobXlfYnVmZmVyLCBUUkFDRU1TRV9GTVQsCi0JCSAgIGVwLT5pZCwKLQkJICAgZXAtPngsCi0JCSAgIGVwLT55LAotCQkgICBlcC0+eiwKLQkJICAgKHVuc2lnbmVkIGxvbmcpIGVwLT5ic3RhdGUpOwotCi0jZGVmaW5lIFNIT1cobSwgcykgaWYgKChlcC0+YnN0YXRlICYgbSkgPT0gbSkgc3RyY2F0KHN0cmNhdChteV9idWZmZXIsIHMpLCAiLCAiKQorI2RlZmluZSBTSE9XKG0sIHMpIFwKKyAgICBpZiAoKGNvZGUgJiBtKSA9PSBtKSB7IFwKKwlzaXplX3QgbiA9IHN0cmxlbihteV9idWZmZXIpOyBcCisJaWYgKG4gJiYgKG15X2J1ZmZlcltuLTFdICE9ICd7JykpIFwKKwlfbmNfU1RSQ0FUKG15X2J1ZmZlciwgIiwgIiwgc2l6ZW9mKG15X2J1ZmZlcikpOyBcCisJX25jX1NUUkNBVChteV9idWZmZXIsIHMsIHNpemVvZihteV9idWZmZXIpKTsgXAorICAgIH0KIAogICAgIFNIT1coQlVUVE9OMV9SRUxFQVNFRCwgInJlbGVhc2UtMSIpOwogICAgIFNIT1coQlVUVE9OMV9QUkVTU0VELCAicHJlc3MtMSIpOwpAQCAtMTEwLDE0ICsxMDksNDcgQEAKIAogICAgIGlmIChteV9idWZmZXJbc3RybGVuKG15X2J1ZmZlcikgLSAxXSA9PSAnICcpCiAJbXlfYnVmZmVyW3N0cmxlbihteV9idWZmZXIpIC0gMl0gPSAnXDAnOwotICAgICh2b2lkKSBzdHJjYXQobXlfYnVmZmVyLCAifSIpOworCiAgICAgcmV0dXJuIChteV9idWZmZXIpOwogfQogCiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCitfbmNfdHJhY2Vtb3VzZShTQ1JFRU4gKnNwLCBNRVZFTlQgY29uc3QgKmVwKQoreworICAgIGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoc3AgIT0gMCkgeworCV9uY19TUFJJTlRGKG15X2J1ZmZlciwgX25jX1NMSU1JVChzaXplb2YobXlfYnVmZmVyKSkKKwkJICAgIFRSQUNFTVNFX0ZNVCwKKwkJICAgIGVwLT5pZCwKKwkJICAgIGVwLT54LAorCQkgICAgZXAtPnksCisJCSAgICBlcC0+eiwKKwkJICAgICh1bnNpZ25lZCBsb25nKSBlcC0+YnN0YXRlKTsKKworCSh2b2lkKSBfbmNfdHJhY2VfbW1hc2tfdChzcCwgZXAtPmJzdGF0ZSk7CisJX25jX1NUUkNBVChteV9idWZmZXIsICJ9Iiwgc2l6ZW9mKG15X2J1ZmZlcikpOworCXJlc3VsdCA9IChteV9idWZmZXIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitOQ1VSU0VTX0VYUE9SVChtbWFza190KQorX25jX3JldHJhY2VfbW1hc2tfdChTQ1JFRU4gKnNwLCBtbWFza190IGNvZGUpCit7CisgICAgaWYgKHNwICE9IDApIHsKKwkqbXlfYnVmZmVyID0gJ1wwJzsKKwlUKChUX1JFVFVSTigieyVzfSIpLCBfbmNfdHJhY2VfbW1hc2tfdChzcCwgY29kZSkpKTsKKyAgICB9IGVsc2UgeworCVQoKFRfUkVUVVJOKCJ7P30iKSkpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworTkNVUlNFU19FWFBPUlQoY2hhciAqKQogX3RyYWNlbW91c2UoTUVWRU5UIGNvbnN0ICplcCkKIHsKLSAgICByZXR1cm4gX25jX3RyYWNlbW91c2UoU1AsIGVwKTsKKyAgICByZXR1cm4gX25jX3RyYWNlbW91c2UoQ1VSUkVOVF9TQ1JFRU4sIGVwKTsKIH0KIAogI2Vsc2UgLyogIVRSQUNFICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL3RyYWNlX2J1Zi5jIGIvbmN1cnNlcy90cmFjZS90cmFjZV9idWYuYwppbmRleCA2MzQ1YWNjLi44NGE3YTBjIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL3RyYWNlX2J1Zi5jCisrKyBiL25jdXJzZXMvdHJhY2UvdHJhY2VfYnVmLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNSw3ICszNSw5IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogdHJhY2VfYnVmLmMsdiAxLjE0IDIwMDgvMDgvMDMgMTU6MTM6NTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB0cmFjZV9idWYuYyx2IDEuMjAgMjAxMi8wMi8yMiAyMjozNDozMSB0b20gRXhwICQiKQorCisjaWZkZWYgVFJBQ0UKIAogI2RlZmluZSBNeUxpc3QgX25jX2dsb2JhbHMudHJhY2VidWZfcHRyCiAjZGVmaW5lIE15U2l6ZSBfbmNfZ2xvYmFscy50cmFjZWJ1Zl91c2VkCkBAIC00Nyw3ICs0OSw3IEBACiAKICAgICBpZiAoYnVmbnVtID49IDApIHsKIAlpZiAoKHNpemVfdCkgKGJ1Zm51bSArIDEpID4gTXlTaXplKSB7Ci0JICAgIHNpemVfdCBuZWVkID0gKGJ1Zm51bSArIDEpICogMjsKKwkgICAgc2l6ZV90IG5lZWQgPSAoc2l6ZV90KSAoYnVmbnVtICsgMSkgKiAyOwogCSAgICBpZiAoKE15TGlzdCA9IHR5cGVSZWFsbG9jKFRSQUNFQlVGLCBuZWVkLCBNeUxpc3QpKSAhPSAwKSB7CiAJCXdoaWxlIChuZWVkID4gTXlTaXplKQogCQkgICAgTXlMaXN0W015U2l6ZSsrXS50ZXh0ID0gMDsKQEAgLTEwMSwxNCArMTAzLDE4IEBACiBOQ1VSU0VTX0VYUE9SVChjaGFyICopCiBfbmNfdHJhY2VfYnVmY2F0KGludCBidWZudW0sIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICAgIGNoYXIgKmJ1ZmZlciA9IF9uY190cmFjZV9hbGxvYyhidWZudW0sIDApOworICAgIGNoYXIgKmJ1ZmZlciA9IF9uY190cmFjZV9hbGxvYyhidWZudW0sIChzaXplX3QpIDApOwogICAgIGlmIChidWZmZXIgIT0gMCkgewogCXNpemVfdCBoYXZlID0gc3RybGVuKGJ1ZmZlcik7CisJc2l6ZV90IG5lZWQgPSBzdHJsZW4odmFsdWUpICsgaGF2ZTsKIAotCWJ1ZmZlciA9IF9uY190cmFjZV9hbGxvYyhidWZudW0sIDEgKyBoYXZlICsgc3RybGVuKHZhbHVlKSk7CisJYnVmZmVyID0gX25jX3RyYWNlX2FsbG9jKGJ1Zm51bSwgMSArIG5lZWQpOwogCWlmIChidWZmZXIgIT0gMCkKLQkgICAgKHZvaWQpIHN0cmNweShidWZmZXIgKyBoYXZlLCB2YWx1ZSk7CisJICAgIF9uY19TVFJDUFkoYnVmZmVyICsgaGF2ZSwgdmFsdWUsIG5lZWQpOwogCiAgICAgfQogICAgIHJldHVybiBidWZmZXI7CiB9CisjZWxzZQorRU1QVFlfTU9EVUxFKF9uY19lbXB0eV90cmFjZV9idWYpCisjZW5kaWYgLyogVFJBQ0UgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvdHJhY2UvdHJhY2VfdHJpZXMuYyBiL25jdXJzZXMvdHJhY2UvdHJhY2VfdHJpZXMuYwppbmRleCBmODEzYWJhLi41MGJhMDE2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL3RyYWNlX3RyaWVzLmMKKysrIGIvbmN1cnNlcy90cmFjZS90cmFjZV90cmllcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjcsNyArMjcsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDxkaWNrZXlAY2xhcmsubmV0PiAxOTk5ICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoKICAqCXRyYWNlX3RyaWVzLmMgLSBUcmFjaW5nL0RlYnVnZ2luZyBidWZmZXJzIChrZXljb2RlIHRyaWVzLXRyZWVzKQpAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IHRyYWNlX3RyaWVzLmMsdiAxLjEzIDIwMDgvMDgvMDMgMTU6NDM6MzAgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB0cmFjZV90cmllcy5jLHYgMS4xNyAyMDEyLzEwLzI3IDIwOjUwOjUwIHRvbSBFeHAgJCIpCiAKICNpZmRlZiBUUkFDRQogI2RlZmluZSBteV9idWZmZXIgX25jX2dsb2JhbHMudHJhY2V0cnlfYnVmCkBAIC00NiwzMyArNDYsMzYgQEAKIHsKICAgICBpZiAobGV2ZWwgPiBteV9sZW5ndGgpIHsKIAlteV9sZW5ndGggPSAobGV2ZWwgKyAxKSAqIDQ7Ci0JbXlfYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcmVhbGxvYyhteV9idWZmZXIsIG15X2xlbmd0aCk7CisJbXlfYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgX25jX2RvYWxsb2MobXlfYnVmZmVyLCBteV9sZW5ndGgpOwogICAgIH0KIAotICAgIHdoaWxlICh0cmVlICE9IDApIHsKLQlpZiAoKG15X2J1ZmZlcltsZXZlbF0gPSB0cmVlLT5jaCkgPT0gMCkKLQkgICAgbXlfYnVmZmVyW2xldmVsXSA9IDEyODsKLQlteV9idWZmZXJbbGV2ZWwgKyAxXSA9IDA7Ci0JaWYgKHRyZWUtPnZhbHVlICE9IDApIHsKLQkgICAgX3RyYWNlZigiJTVkOiAlcyAoJXMpIiwgdHJlZS0+dmFsdWUsCi0JCSAgICBfbmNfdmlzYnVmKChjaGFyICopIG15X2J1ZmZlciksIGtleW5hbWUodHJlZS0+dmFsdWUpKTsKKyAgICBpZiAobXlfYnVmZmVyICE9IDApIHsKKwl3aGlsZSAodHJlZSAhPSAwKSB7CisJICAgIGlmICgobXlfYnVmZmVyW2xldmVsXSA9IHRyZWUtPmNoKSA9PSAwKQorCQlteV9idWZmZXJbbGV2ZWxdID0gMTI4OworCSAgICBteV9idWZmZXJbbGV2ZWwgKyAxXSA9IDA7CisJICAgIGlmICh0cmVlLT52YWx1ZSAhPSAwKSB7CisJCV90cmFjZWYoIiU1ZDogJXMgKCVzKSIsIHRyZWUtPnZhbHVlLAorCQkJX25jX3Zpc2J1ZigoY2hhciAqKSBteV9idWZmZXIpLCBrZXluYW1lKHRyZWUtPnZhbHVlKSk7CisJICAgIH0KKwkgICAgaWYgKHRyZWUtPmNoaWxkKQorCQlyZWN1cl90cmllcyh0cmVlLT5jaGlsZCwgbGV2ZWwgKyAxKTsKKwkgICAgdHJlZSA9IHRyZWUtPnNpYmxpbmc7CiAJfQotCWlmICh0cmVlLT5jaGlsZCkKLQkgICAgcmVjdXJfdHJpZXModHJlZS0+Y2hpbGQsIGxldmVsICsgMSk7Ci0JdHJlZSA9IHRyZWUtPnNpYmxpbmc7CiAgICAgfQogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQogX25jX3RyYWNlX3RyaWVzKFRSSUVTICogdHJlZSkKIHsKLSAgICBteV9idWZmZXIgPSB0eXBlTWFsbG9jKHVuc2lnbmVkIGNoYXIsIG15X2xlbmd0aCA9IDgwKTsKLSAgICBfdHJhY2VmKCJCRUdJTiB0cmllcyAlcCIsIHRyZWUpOwotICAgIHJlY3VyX3RyaWVzKHRyZWUsIDApOwotICAgIF90cmFjZWYoIi4gLiAuIHRyaWVzICVwIiwgdHJlZSk7Ci0gICAgZnJlZShteV9idWZmZXIpOworICAgIGlmICgobXlfYnVmZmVyID0gdHlwZU1hbGxvYyh1bnNpZ25lZCBjaGFyLCBteV9sZW5ndGggPSA4MCkpICE9IDApIHsKKwlfdHJhY2VmKCJCRUdJTiB0cmllcyAlcCIsICh2b2lkICopIHRyZWUpOworCXJlY3VyX3RyaWVzKHRyZWUsIDApOworCV90cmFjZWYoIi4gLiAuIHRyaWVzICVwIiwgKHZvaWQgKikgdHJlZSk7CisJZnJlZShteV9idWZmZXIpOworICAgIH0KIH0KIAogI2Vsc2UKLUVNUFRZX01PRFVMRShfbmNfdHJhY2VfdHJpZXMpCitFTVBUWV9NT0RVTEUoX25jX2VtcHR5X3RyYWNlX3RyaWVzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3RyYWNlL3RyYWNlX3huYW1lcy5jIGIvbmN1cnNlcy90cmFjZS90cmFjZV94bmFtZXMuYwppbmRleCA5YjBiNTkyLi4zOGE0ODczIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3RyYWNlL3RyYWNlX3huYW1lcy5jCisrKyBiL25jdXJzZXMvdHJhY2UvdHJhY2VfeG5hbWVzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk5LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAwLDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNCwxMiArMzQsMTEgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiB0cmFjZV94bmFtZXMuYyx2IDEuNSAyMDAwLzEyLzEwIDAzOjAyOjQ1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogdHJhY2VfeG5hbWVzLmMsdiAxLjYgMjAxMC8wMS8yMyAxNzo1OToyNyB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX3RyYWNlX3huYW1lcyhURVJNVFlQRSAqIHRwIEdDQ19VTlVTRUQpCitfbmNfdHJhY2VfeG5hbWVzKFRFUk1UWVBFICp0cCBHQ0NfVU5VU0VEKQogewogI2lmZGVmIFRSQUNFCiAjaWYgTkNVUlNFU19YTkFNRVMKZGlmZiAtLWdpdCBhL25jdXJzZXMvdHJhY2UvdmFyYXJncy5jIGIvbmN1cnNlcy90cmFjZS92YXJhcmdzLmMKaW5kZXggZjRlZTQ2Ny4uNjYyNTJkOCAxMDA2NDQKLS0tIGEvbmN1cnNlcy90cmFjZS92YXJhcmdzLmMKKysrIGIvbmN1cnNlcy90cmFjZS92YXJhcmdzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA4LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCi1NT0RVTEVfSUQoIiRJZDogdmFyYXJncy5jLHYgMS43IDIwMDgvMDgvMDMgMTU6NDI6NDkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB2YXJhcmdzLmMsdiAxLjExIDIwMTIvMTAvMjcgMjE6MDM6MjggdG9tIEV4cCAkIikKIAogI2lmZGVmIFRSQUNFCiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBhdFVua25vd24gPSAwLCBhdEludGVnZXIsIGF0RmxvYXQsIGF0UG9pbnQsIGF0U3RyaW5nCiB9IEFSR1RZUEU7CiAKLSNkZWZpbmUgVkFfSU5UKHR5cGUpIGl2YWwgPSB2YV9hcmcoYXAsIHR5cGUpCisjZGVmaW5lIFZBX0lOVCh0eXBlKSBpdmFsID0gKGludCkgdmFfYXJnKGFwLCB0eXBlKQogI2RlZmluZSBWQV9GTFQodHlwZSkgZnZhbCA9IHZhX2FyZyhhcCwgdHlwZSkKICNkZWZpbmUgVkFfUFRSKHR5cGUpIHB2YWwgPSAoY2hhciAqKXZhX2FyZyhhcCwgdHlwZSkKICNkZWZpbmUgVkFfU1RSKHR5cGUpIHN2YWwgPSB2YV9hcmcoYXAsIHR5cGUpCkBAIC0xNDksMjUgKzE0OSwzMiBAQAogCQkJcGFyYW0gPSBidWZmZXI7CiAJCQlzd2l0Y2ggKHVzZWQpIHsKIAkJCWNhc2UgYXRJbnRlZ2VyOgotCQkJICAgIHNwcmludGYoYnVmZmVyLCAiJWQiLCBpdmFsKTsKKwkJCSAgICBfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkJCSIlZCIsIGl2YWwpOwogCQkJICAgIGJyZWFrOwogCQkJY2FzZSBhdEZsb2F0OgotCQkJICAgIHNwcmludGYoYnVmZmVyLCAiJWYiLCBmdmFsKTsKKwkJCSAgICBfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkJCSIlZiIsIGZ2YWwpOwogCQkJICAgIGJyZWFrOwogCQkJY2FzZSBhdFBvaW50OgotCQkJICAgIHNwcmludGYoYnVmZmVyLCAiJXAiLCBwdmFsKTsKKwkJCSAgICBfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkJCSIlcCIsIHB2YWwpOwogCQkJICAgIGJyZWFrOwogCQkJY2FzZSBhdFN0cmluZzoKIAkJCSAgICBwYXJhbSA9IF9uY192aXNidWYyKDEsIHN2YWwpOwogCQkJICAgIGJyZWFrOwogCQkJY2FzZSBhdFVua25vd246CiAJCQlkZWZhdWx0OgotCQkJICAgIHN0cmNweShidWZmZXIsICI/Iik7CisJCQkgICAgX25jX1NUUkNQWShidWZmZXIsICI/Iiwgc2l6ZW9mKGJ1ZmZlcikpOwogCQkJICAgIGJyZWFrOwogCQkJfQogCQkJTXlMZW5ndGggKz0gc3RybGVuKHBhcmFtKSArIDI7CiAJCQlNeUJ1ZmZlciA9IHR5cGVSZWFsbG9jKGNoYXIsIE15TGVuZ3RoLCBNeUJ1ZmZlcik7Ci0JCQlzcHJpbnRmKE15QnVmZmVyICsgc3RybGVuKE15QnVmZmVyKSwgIiwgJXMiLCBwYXJhbSk7CisJCQlpZiAoTXlCdWZmZXIgIT0gMCkgeworCQkJICAgIF9uY19TUFJJTlRGKE15QnVmZmVyICsgc3RybGVuKE15QnVmZmVyKSwKKwkJCQkJX25jX1NMSU1JVChNeUxlbmd0aCAtIHN0cmxlbihNeUJ1ZmZlcikpCisJCQkJCSIsICVzIiwgcGFyYW0pOworCQkJfQogCQkgICAgfQogCQl9CiAJCXVzZWQgPSBhdFVua25vd247CkBAIC0xNzcsNyArMTg0LDcgQEAKIAl9CiAgICAgfQogCi0gICAgcmV0dXJuIChNeUJ1ZmZlcik7CisgICAgcmV0dXJuIChNeUJ1ZmZlciA/IE15QnVmZmVyIDogZHVtbXkpOwogfQogI2Vsc2UKIEVNUFRZX01PRFVMRShfbmNfdmFyYXJncykKZGlmZiAtLWdpdCBhL25jdXJzZXMvdHJhY2UvdmlzYnVmLmMgYi9uY3Vyc2VzL3RyYWNlL3Zpc2J1Zi5jCmluZGV4IGJmOWZiMTQuLmZlYzA2NDMgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdHJhY2UvdmlzYnVmLmMKKysrIGIvbmN1cnNlcy90cmFjZS92aXNidWYuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTIsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQyLDEwICs0MiwxMiBAQAogI2luY2x1ZGUgPHRpYy5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLU1PRFVMRV9JRCgiJElkOiB2aXNidWYuYyx2IDEuMzIgMjAwOC8wOC8wNCAyMzowNzozOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHZpc2J1Zi5jLHYgMS40NCAyMDE0LzA5LzI1IDA4OjUxOjEzIHRvbSBFeHAgJCIpCisKKyNkZWZpbmUgTlVNX1ZJU0JVRlMgNAogCiAjZGVmaW5lIE5vcm1hbExlbihsZW4pIChzaXplX3QpICgoKHNpemVfdCkobGVuKSArIDEpICogNCkKLSNkZWZpbmUgV2lkZUxlbihsZW4pICAgKHNpemVfdCkgKCgoc2l6ZV90KShsZW4pICsgMSkgKiA0ICogTUJfQ1VSX01BWCkKKyNkZWZpbmUgV2lkZUxlbihsZW4pICAgKHNpemVfdCkgKCgoc2l6ZV90KShsZW4pICsgMSkgKiA0ICogKHNpemVfdCkgTUJfQ1VSX01BWCkKIAogI2lmZGVmIFRSQUNFCiBzdGF0aWMgY29uc3QgY2hhciBkX3F1b3RlW10gPSBTdHJpbmdPZihEX1FVT1RFKTsKQEAgLTUzLDEzICs1NSwyMSBAQAogc3RhdGljIGNvbnN0IGNoYXIgcl9icmFjZVtdID0gU3RyaW5nT2YoUl9CUkFDRSk7CiAjZW5kaWYKIAorI2lmIFVTRV9TVFJJTkdfSEFDS1MgJiYgSEFWRV9TTlBSSU5URgorI2RlZmluZSBWaXNDaGFyKHRwLCBjaHIsIGxpbWl0KSBfbmNfdmlzY2hhcih0cCwgY2hyLCBsaW1pdCkKKyNkZWZpbmUgTElNSVRfQVJHICxzaXplX3QgbGltaXQKKyNlbHNlCisjZGVmaW5lIFZpc0NoYXIodHAsIGNociwgbGltaXQpIF9uY192aXNjaGFyKHRwLCBjaHIpCisjZGVmaW5lIExJTUlUX0FSRwkJLyogbm90aGluZyAqLworI2VuZGlmCisKIHN0YXRpYyBjaGFyICoKLV9uY192aXNjaGFyKGNoYXIgKnRwLCB1bnNpZ25lZCBjKQorX25jX3Zpc2NoYXIoY2hhciAqdHAsIHVuc2lnbmVkIGMgTElNSVRfQVJHKQogewogICAgIGlmIChjID09ICciJyB8fCBjID09ICdcXCcpIHsKIAkqdHArKyA9ICdcXCc7CiAJKnRwKysgPSAoY2hhcikgYzsKLSAgICB9IGVsc2UgaWYgKGlzN2JpdHMoYykgJiYgKGlzZ3JhcGgoYykgfHwgYyA9PSAnICcpKSB7CisgICAgfSBlbHNlIGlmIChpczdiaXRzKChpbnQpIGMpICYmIChpc2dyYXBoKChpbnQpIGMpIHx8IGMgPT0gJyAnKSkgewogCSp0cCsrID0gKGNoYXIpIGM7CiAgICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKIAkqdHArKyA9ICdcXCc7CkBAIC04Miw3ICs5Miw4IEBACiAJKnRwKysgPSAnXic7CiAJKnRwKysgPSAoY2hhcikgKCdAJyArIGMpOwogICAgIH0gZWxzZSB7Ci0Jc3ByaW50Zih0cCwgIlxcJTAzbG8iLCAodW5zaWduZWQgbG9uZykgQ2hDaGFyT2YoYykpOworCV9uY19TUFJJTlRGKHRwLCBfbmNfU0xJTUlUKGxpbWl0KQorCQkgICAgIlxcJTAzbG8iLCAodW5zaWduZWQgbG9uZykgQ2hDaGFyT2YoYykpOwogCXRwICs9IHN0cmxlbih0cCk7CiAgICAgfQogICAgICp0cCA9IDA7CkBAIC05Miw5ICsxMDMsMTAgQEAKIHN0YXRpYyBjb25zdCBjaGFyICoKIF9uY192aXNidWYybihpbnQgYnVmbnVtLCBjb25zdCBjaGFyICpidWYsIGludCBsZW4pCiB7Ci0gICAgY29uc3QgY2hhciAqdmJ1ZjsKKyAgICBjb25zdCBjaGFyICp2YnVmID0gMDsKICAgICBjaGFyICp0cDsKICAgICBpbnQgYzsKKyAgICBpbnQgY291bnQ7CiAKICAgICBpZiAoYnVmID09IDApCiAJcmV0dXJuICgiKG51bGwpIik7CkBAIC0xMDQsMjIgKzExNiwzMCBAQAogICAgIGlmIChsZW4gPCAwKQogCWxlbiA9IChpbnQpIHN0cmxlbihidWYpOwogCisgICAgY291bnQgPSBsZW47CiAjaWZkZWYgVFJBQ0UKICAgICB2YnVmID0gdHAgPSBfbmNfdHJhY2VfYnVmKGJ1Zm51bSwgTm9ybWFsTGVuKGxlbikpOwogI2Vsc2UKICAgICB7Ci0Jc3RhdGljIGNoYXIgKm15YnVmWzRdOwotCW15YnVmW2J1Zm51bV0gPSB0eXBlUmVhbGxvYyhjaGFyLCBOb3JtYWxMZW4obGVuKSwgbXlidWZbYnVmbnVtXSk7Ci0JdmJ1ZiA9IHRwID0gbXlidWZbYnVmbnVtXTsKKwlzdGF0aWMgY2hhciAqbXlidWZbTlVNX1ZJU0JVRlNdOworCWlmIChidWZudW0gPCAwKSB7CisJICAgIGZvciAoYyA9IDA7IGMgPCBOVU1fVklTQlVGUzsgKytjKSB7CisJCUZyZWVBbmROdWxsKG15YnVmW2NdKTsKKwkgICAgfQorCSAgICB0cCA9IDA7CisJfSBlbHNlIHsKKwkgICAgbXlidWZbYnVmbnVtXSA9IHR5cGVSZWFsbG9jKGNoYXIsIE5vcm1hbExlbihsZW4pLCBteWJ1ZltidWZudW1dKTsKKwkgICAgdmJ1ZiA9IHRwID0gbXlidWZbYnVmbnVtXTsKKwl9CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKHRwICE9IDApIHsKIAkqdHArKyA9IERfUVVPVEU7Ci0Jd2hpbGUgKCgtLWxlbiA+PSAwKSAmJiAoYyA9ICpidWYrKykgIT0gJ1wwJykgewotCSAgICB0cCA9IF9uY192aXNjaGFyKHRwLCBVQ2hhcihjKSk7CisJd2hpbGUgKCgtLWNvdW50ID49IDApICYmIChjID0gKmJ1ZisrKSAhPSAnXDAnKSB7CisJICAgIHRwID0gVmlzQ2hhcih0cCwgVUNoYXIoYyksIE5vcm1hbExlbihsZW4pKTsKIAl9CiAJKnRwKysgPSBEX1FVT1RFOwotCSp0cCsrID0gJ1wwJzsKKwkqdHAgPSAnXDAnOwogICAgIH0gZWxzZSB7CiAJdmJ1ZiA9ICgiKF9uY192aXNidWYybiBmYWlsZWQpIik7CiAgICAgfQpAQCAtMTY2LDYgKzE4Niw3IEBACiAgICAgY29uc3QgY2hhciAqdmJ1ZjsKICAgICBjaGFyICp0cDsKICAgICB3Y2hhcl90IGM7CisgICAgaW50IGNvdW50OwogCiAgICAgaWYgKGJ1ZiA9PSAwKQogCXJldHVybiAoIihudWxsKSIpOwpAQCAtMTczLDMwICsxOTQsMzIgQEAKICAgICBpZiAobGVuIDwgMCkKIAlsZW4gPSAoaW50KSB3Y3NsZW4oYnVmKTsKIAorICAgIGNvdW50ID0gbGVuOwogI2lmZGVmIFRSQUNFCiAgICAgdmJ1ZiA9IHRwID0gX25jX3RyYWNlX2J1ZihidWZudW0sIFdpZGVMZW4obGVuKSk7CiAjZWxzZQogICAgIHsKLQlzdGF0aWMgY2hhciAqbXlidWZbMl07CisJc3RhdGljIGNoYXIgKm15YnVmW05VTV9WSVNCVUZTXTsKIAlteWJ1ZltidWZudW1dID0gdHlwZVJlYWxsb2MoY2hhciwgV2lkZUxlbihsZW4pLCBteWJ1ZltidWZudW1dKTsKIAl2YnVmID0gdHAgPSBteWJ1ZltidWZudW1dOwogICAgIH0KICNlbmRpZgogICAgIGlmICh0cCAhPSAwKSB7CiAJKnRwKysgPSBEX1FVT1RFOwotCXdoaWxlICgoLS1sZW4gPj0gMCkgJiYgKGMgPSAqYnVmKyspICE9ICdcMCcpIHsKKwl3aGlsZSAoKC0tY291bnQgPj0gMCkgJiYgKGMgPSAqYnVmKyspICE9ICdcMCcpIHsKIAkgICAgY2hhciB0ZW1wW0NDSEFSV19NQVggKyA4MF07CiAJICAgIGludCBqID0gd2N0b21iKHRlbXAsIGMpLCBrOwogCSAgICBpZiAoaiA8PSAwKSB7Ci0JCXNwcmludGYodGVtcCwgIlxcdSUwOFgiLCAodW5zaWduZWQpIGMpOworCQlfbmNfU1BSSU5URih0ZW1wLCBfbmNfU0xJTUlUKHNpemVvZih0ZW1wKSkKKwkJCSAgICAiXFx1JTA4WCIsICh1bnNpZ25lZCkgYyk7CiAJCWogPSAoaW50KSBzdHJsZW4odGVtcCk7CiAJICAgIH0KIAkgICAgZm9yIChrID0gMDsgayA8IGo7ICsraykgewotCQl0cCA9IF9uY192aXNjaGFyKHRwLCBVQ2hhcih0ZW1wW2tdKSk7CisJCXRwID0gVmlzQ2hhcih0cCwgVUNoYXIodGVtcFtrXSksIFdpZGVMZW4obGVuKSk7CiAJICAgIH0KIAl9CiAJKnRwKysgPSBEX1FVT1RFOwotCSp0cCsrID0gJ1wwJzsKKwkqdHAgPSAnXDAnOwogICAgIH0gZWxzZSB7CiAJdmJ1ZiA9ICgiKF9uY192aXN3YnVmMm4gZmFpbGVkKSIpOwogICAgIH0KQEAgLTIyOSw3ICsyNTIsOSBAQAogICAgIHN0YXRpYyB1bnNpZ25lZCBteWxlbjsKICAgICB1bnNpZ25lZCBuOwogCi0gICAgZm9yIChuID0gMDsgYnVmW25dICE9IDA7ICsrbikgOworICAgIGZvciAobiA9IDA7IGJ1ZltuXSAhPSAwOyArK24pIHsKKwk7CQkJLyogZW1wdHkgKi8KKyAgICB9CiAgICAgaWYgKG15bGVuIDwgKytuKSB7CiAJbXlsZW4gPSBuICsgODA7CiAJaWYgKG15YnVmICE9IDApCkBAIC0yMzcsOCArMjYyLDEyIEBACiAJZWxzZQogCSAgICBteWJ1ZiA9IHR5cGVNYWxsb2Mod2NoYXJfdCwgbXlsZW4pOwogICAgIH0KLSAgICBmb3IgKG4gPSAwOyBidWZbbl0gIT0gMDsgKytuKQotCW15YnVmW25dID0gKHdjaGFyX3QpIGJ1ZltuXTsKKyAgICBpZiAobXlidWYgIT0gMCkgeworCWZvciAobiA9IDA7IGJ1ZltuXSAhPSAwOyArK24pIHsKKwkgICAgbXlidWZbbl0gPSAod2NoYXJfdCkgYnVmW25dOworCX0KKwlteWJ1ZltuXSA9IEwnXDAnOworICAgIH0KIAogICAgIHJldHVybiBfbmNfdmlzd2J1ZjIoMCwgbXlidWYpOwogfQpAQCAtMjQ4LDcgKzI3Nyw3IEBACiBOQ1VSU0VTX0VYUE9SVChjb25zdCBjaGFyICopCiBfbmNfdmlzY2J1ZjIoaW50IGJ1Zm51bSwgY29uc3QgTkNVUlNFU19DSF9UICogYnVmLCBpbnQgbGVuKQogewotICAgIGNoYXIgKnJlc3VsdCA9IF9uY190cmFjZV9idWYoYnVmbnVtLCBCVUZTSVopOworICAgIGNoYXIgKnJlc3VsdCA9IF9uY190cmFjZV9idWYoYnVmbnVtLCAoc2l6ZV90KSBCVUZTSVopOwogICAgIGludCBmaXJzdDsKICAgICBjb25zdCBjaGFyICpmb3VuZDsKIApAQCAtMjc0LDEyICszMDMsMTIgQEAKIAkJfQogCSAgICB9CiAKLQkgICAgcmVzdWx0ID0gX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIGxfYnJhY2UpOwotCSAgICByZXN1bHQgPSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZF9xdW90ZSk7CisJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgbF9icmFjZSk7CisJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZF9xdW90ZSk7CiAJICAgIGZvciAoaiA9IGZpcnN0OyBqIDw9IGxhc3Q7ICsraikgewogCQlmb3VuZCA9IF9uY19hbHRjaGFyc2V0X25hbWUoYXR0ciwgKGNodHlwZSkgQ2hhck9mKGJ1ZltqXSkpOwogCQlpZiAoZm91bmQgIT0gMCkgewotCQkgICAgcmVzdWx0ID0gX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIGZvdW5kKTsKKwkJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZm91bmQpOwogCQkgICAgYXR0ciAmPSB+QV9BTFRDSEFSU0VUOwogCQl9IGVsc2UKICNpZiBVU0VfV0lERUNfU1VQUE9SVApAQCAtMjkxLDMwICszMjAsMzQgQEAKIAkJCWludCBrOwogCiAJCQlQVVRDX2NoID0gYnVmW2pdLmNoYXJzW1BVVENfaV07Ci0JCQlpZiAoUFVUQ19jaCA9PSBMJ1wwJykKKwkJCWlmIChQVVRDX2NoID09IEwnXDAnKSB7CisJCQkgICAgaWYgKFBVVENfaSA9PSAwKQorCQkJCSh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgIlxcMDAwIik7CiAJCQkgICAgYnJlYWs7Ci0JCQlQVVRDX24gPSAoaW50KSB3Y3J0b21iKFBVVENfYnVmLCBidWZbal0uY2hhcnNbUFVUQ19pXSwgJlBVVF9zdCk7CisJCQl9CisJCQlQVVRDX24gPSAoaW50KSB3Y3J0b21iKFBVVENfYnVmLAorCQkJCQkgICAgICAgYnVmW2pdLmNoYXJzW1BVVENfaV0sICZQVVRfc3QpOwogCQkJaWYgKFBVVENfbiA8PSAwKQogCQkJICAgIGJyZWFrOwogCQkJZm9yIChrID0gMDsgayA8IFBVVENfbjsgaysrKSB7CiAJCQkgICAgY2hhciB0ZW1wWzgwXTsKLQkJCSAgICBfbmNfdmlzY2hhcih0ZW1wLCBVQ2hhcihQVVRDX2J1ZltrXSkpOwotCQkJICAgIHJlc3VsdCA9IF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCB0ZW1wKTsKKwkJCSAgICBWaXNDaGFyKHRlbXAsIFVDaGFyKFBVVENfYnVmW2tdKSwgc2l6ZW9mKHRlbXApKTsKKwkJCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIHRlbXApOwogCQkJfQogCQkgICAgfQogCQl9CiAjZWxzZQogCQl7CiAJCSAgICBjaGFyIHRlbXBbODBdOwotCQkgICAgX25jX3Zpc2NoYXIodGVtcCwgVUNoYXIoYnVmW2pdKSk7Ci0JCSAgICByZXN1bHQgPSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgdGVtcCk7CisJCSAgICBWaXNDaGFyKHRlbXAsIFVDaGFyKGJ1ZltqXSksIHNpemVvZih0ZW1wKSk7CisJCSAgICAodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sIHRlbXApOwogCQl9CiAjZW5kaWYgLyogVVNFX1dJREVDX1NVUFBPUlQgKi8KIAkgICAgfQotCSAgICByZXN1bHQgPSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZF9xdW90ZSk7CisJICAgICh2b2lkKSBfbmNfdHJhY2VfYnVmY2F0KGJ1Zm51bSwgZF9xdW90ZSk7CiAJICAgIGlmIChhdHRyICE9IEFfTk9STUFMKSB7Ci0JCXJlc3VsdCA9IF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCAiIHwgIik7Ci0JCXJlc3VsdCA9IF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCBfdHJhY2VhdHRyMihidWZudW0gKyAyMCwgYXR0cikpOworCQkodm9pZCkgX25jX3RyYWNlX2J1ZmNhdChidWZudW0sICIgfCAiKTsKKwkJKHZvaWQpIF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCBfdHJhY2VhdHRyMihidWZudW0gKyAyMCwgYXR0cikpOwogCSAgICB9CiAJICAgIHJlc3VsdCA9IF9uY190cmFjZV9idWZjYXQoYnVmbnVtLCByX2JyYWNlKTsKIAkgICAgZmlyc3QgPSBsYXN0ICsgMTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvdHR5L01LZXhwYW5kZWQuc2ggYi9uY3Vyc2VzL3R0eS9NS2V4cGFuZGVkLnNoCmluZGV4IGJmOWFjZjIuLjdhNWY1OTkgMTAwNzU1Ci0tLSBhL25jdXJzZXMvdHR5L01LZXhwYW5kZWQuc2gKKysrIGIvbmN1cnNlcy90dHkvTUtleHBhbmRlZC5zaApAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI3LDkgKzI3LDkgQEAKICMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCi0jIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGNsYXJrLm5ldD4gMTk5NworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXksIDE5OTctb24KICMKLSMgJElkOiBNS2V4cGFuZGVkLnNoLHYgMS4xMSAyMDA1LzAxLzAyIDAxOjA2OjQwIHRvbSBFeHAgJAorIyAkSWQ6IE1LZXhwYW5kZWQuc2gsdiAxLjE3IDIwMTAvMDEvMjMgMTc6NTc6NDMgdG9tIEV4cCAkCiAjCiAjIFNjcmlwdCB0byBnZW5lcmF0ZSAnZXhwYW5kZWQuYycsIGEgZHVtbXkgc291cmNlIHRoYXQgY29udGFpbnMgZnVuY3Rpb25zCiAjIGNvcnJlc3BvbmRpbmcgdG8gY29tcGxleCBtYWNyb3MgdXNlZCBpbiB0aGlzIGxpYnJhcnkuICBCeSBtYWtpbmcgZnVuY3Rpb25zLApAQCAtNTIsOCArNTIsMTMgQEAKIAogY2F0IDw8RU9GCiAvKiBnZW5lcmF0ZWQgYnkgTUtleHBhbmRlZC5zaCAqLworI2RlZmluZSBORUVEX05DVVJTRVNfQ0hfVCAxCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CisKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCisKICNpZiBOQ1VSU0VTX0VYUEFOREVECiBFT0YKIApAQCAtNjgsMjkgKzczLDU5IEBACiAjdW5kZWYgRkFMU0UKIC8qIHRoaXMgaXMgYSBtYXJrZXIgKi8KIElHTk9SRQotTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3RvZ2dsZV9hdHRyX29uIChhdHRyX3QgKlMsIGF0dHJfdCBhdCkKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfdG9nZ2xlX2F0dHJfb24gKGF0dHJfdCAqUywgYXR0cl90IGF0KQogewogCXRvZ2dsZV9hdHRyX29uKCpTLGF0KTsKIH0KLU5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190b2dnbGVfYXR0cl9vZmYgKGF0dHJfdCAqUywgYXR0cl90IGF0KSAKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY190b2dnbGVfYXR0cl9vZmYgKGF0dHJfdCAqUywgYXR0cl90IGF0KSAKIHsKIAl0b2dnbGVfYXR0cl9vZmYoKlMsYXQpOwogfQotTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfRGVsQ2hhckNvc3QgKGludCBjb3VudCkKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKF9uY19EZWxDaGFyQ29zdCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgY291bnQpCiB7Ci0JcmV0dXJuIERlbENoYXJDb3N0KGNvdW50KTsKKwlyZXR1cm4gRGVsQ2hhckNvc3QoU1BfUEFSTSwgY291bnQpOwogfQotTkNVUlNFU19FWFBPUlQoaW50KSBfbmNfSW5zQ2hhckNvc3QgKGludCBjb3VudCkKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKF9uY19JbnNDaGFyQ29zdCkgKE5DVVJTRVNfU1BfRENMeCBpbnQgY291bnQpCiB7Ci0JcmV0dXJuIEluc0NoYXJDb3N0KGNvdW50KTsKKwlyZXR1cm4gSW5zQ2hhckNvc3QoU1BfUEFSTSwgY291bnQpOwogfQotTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX1VwZGF0ZUF0dHJzIChOQ1VSU0VTX0NIX1QgYykKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfVXBkYXRlQXR0cnMpIChOQ1VSU0VTX1NQX0RDTHggQ0FSR19DSF9UIGMpCiB7Ci0JVXBkYXRlQXR0cnMoYyk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgQ0hERVJFRihjKSk7CiB9CisKK0BpZl9OQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfRGVsQ2hhckNvc3QgKGludCBjb3VudCkKK3sKKwlyZXR1cm4gTkNVUlNFU19TUF9OQU1FKF9uY19EZWxDaGFyQ29zdCkgKENVUlJFTlRfU0NSRUVOLCBjb3VudCk7Cit9CisKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19JbnNDaGFyQ29zdCAoaW50IGNvdW50KQoreworCXJldHVybiBOQ1VSU0VTX1NQX05BTUUoX25jX0luc0NoYXJDb3N0KShDVVJSRU5UX1NDUkVFTiwgY291bnQpOworfQorCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX1VwZGF0ZUF0dHJzIChDQVJHX0NIX1QgYykKK3sKKwlOQ1VSU0VTX1NQX05BTUUoX25jX1VwZGF0ZUF0dHJzKShDVVJSRU5UX1NDUkVFTixjKTsKK30KK0BlbmRpZgogRU9GCiAKLSRwcmVwcm9jZXNzb3IgJFRNUCAyPi9kZXYvbnVsbCB8IHNlZCAtZSAnMSwvXklHTk9SRSQvZCcKKyRwcmVwcm9jZXNzb3IgJFRNUCAyPi9kZXYvbnVsbCB8IFwKKwlzZWQgLWUgJzEsL15JR05PUkUkL2QnIC1lICdzL15ALyMvJyAtZSAncy9eI2lmXy8jaWYgLycKIAogY2F0IDw8RU9GCiAjZWxzZSAvKiAhIE5DVVJTRVNfRVhQQU5ERUQgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvdHR5L2hhcmRzY3JvbGwuYyBiL25jdXJzZXMvdHR5L2hhcmRzY3JvbGwuYwppbmRleCAyYzQwOTk3Li5kNmYyOGQ2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3R0eS9oYXJkc2Nyb2xsLmMKKysrIGIvbmN1cnNlcy90dHkvaGFyZHNjcm9sbC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMTQ3LDkwICsxNDcsMTA0IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogaGFyZHNjcm9sbC5jLHYgMS40MiAyMDA4LzA4LzAzIDIzOjQ5OjMwIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogaGFyZHNjcm9sbC5jLHYgMS41MiAyMDE1LzA3LzI1IDIwOjEzOjA3IHRvbSBFeHAgJCIpCiAKICNpZiBkZWZpbmVkKFNDUk9MTERFQlVHKSB8fCBkZWZpbmVkKEhBU0hERUJVRykKIAogIyB1bmRlZiBzY3JlZW5fbGluZXMKLSMgZGVmaW5lIHNjcmVlbl9saW5lcyBNQVhMSU5FUwotTkNVUlNFU19FWFBPUlRfVkFSKGludCkKLW9sZG51bXNbTUFYTElORVNdOwotIyBkZWZpbmUgT0xETlVNKG4pCW9sZG51bXNbbl0KKyMgZGVmaW5lIHNjcmVlbl9saW5lcyhzcCkgTUFYTElORVMKK05DVVJTRVNfRVhQT1JUX1ZBUiAoaW50KQorICBvbGRudW1zW01BWExJTkVTXTsKKyMgZGVmaW5lIE9MRE5VTShzcCxuKQlvbGRudW1zW25dCiAjIGRlZmluZSBfdHJhY2VmCXByaW50ZgogIyB1bmRlZiBUUgogIyBkZWZpbmUgVFIobiwgYSkJaWYgKF9uY190cmFjaW5nICYgKG4pKSB7IF90cmFjZWYgYSA7IHB1dGNoYXIoJ1xuJyk7IH0KIAotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUih1bnNpZ25lZCkgX25jX3RyYWNpbmc7CitleHRlcm4JCQkJTkNVUlNFU19FWFBPUlRfVkFSKHVuc2lnbmVkKSBfbmNfdHJhY2luZzsKIAogI2Vsc2UgLyogbm8gZGVidWcgKi8KIAogLyogT0xETlVNKG4pIGluZGljYXRlcyB3aGljaCBsaW5lIHdpbGwgYmUgc2hpZnRlZCB0byB0aGUgcG9zaXRpb24gbi4KICAgIGlmIE9MRE5VTShuKSA9PSBfTkVXSU5ERVgsIHRoZW4gdGhlIGxpbmUgbiBpbiBuZXcsIG5vdCBzaGlmdGVkIGZyb20KICAgIHNvbWV3aGVyZS4gKi8KLU5DVVJTRVNfRVhQT1JUX1ZBUihpbnQgKikKLV9uY19vbGRudW1zID0gMDsJCS8qIG9ic29sZXRlOiBrZWVwIGZvciBBQkkgY29tcGF0ICovCitOQ1VSU0VTX0VYUE9SVF9WQVIgKGludCAqKQorICBfbmNfb2xkbnVtcyA9IDA7CQkvKiBvYnNvbGV0ZToga2VlcCBmb3IgQUJJIGNvbXBhdCAqLwogCiAjIGlmIFVTRV9IQVNITUFQCi0jICBkZWZpbmUgb2xkbnVtcyAgICAgICBTUC0+X29sZG51bV9saXN0Ci0jICBkZWZpbmUgT0xETlVNKG4pCW9sZG51bXNbbl0KLSMgZWxzZQkJCQkvKiAhVVNFX0hBU0hNQVAgKi8KLSMgIGRlZmluZSBPTEROVU0obikJbmV3c2NyLT5fbGluZVtuXS5vbGRpbmRleAotIyBlbmRpZgkJCQkvKiAhVVNFX0hBU0hNQVAgKi8KKyMgIGRlZmluZSBvbGRudW1zKHNwKSAgIChzcCktPl9vbGRudW1fbGlzdAorIyAgZGVmaW5lIE9MRE5VTShzcCxuKQlvbGRudW1zKHNwKVtuXQorIyBlbHNlIC8qICFVU0VfSEFTSE1BUCAqLworIyAgZGVmaW5lIE9MRE5VTShzcCxuKQlOZXdTY3JlZW4oc3ApLT5fbGluZVtuXS5vbGRpbmRleAorIyBlbmRpZgkvKiAhVVNFX0hBU0hNQVAgKi8KIAotI2RlZmluZSBPTEROVU1fU0laRSAgICAgU1AtPl9vbGRudW1fc2l6ZQorI2RlZmluZSBPTEROVU1fU0laRShzcCkgKHNwKS0+X29sZG51bV9zaXplCiAKICNlbmRpZiAvKiBkZWZpbmVkKFNDUk9MTERFQlVHKSB8fCBkZWZpbmVkKEhBU0hERUJVRykgKi8KIAogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19zY3JvbGxfb3B0aW1pemUodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsX29wdGltaXplKSAoTkNVUlNFU19TUF9EQ0wwKQogLyogc2Nyb2xsIG9wdGltaXphdGlvbiB0byB0cmFuc2Zvcm0gY3Vyc2NyIHRvIG5ld3NjciAqLwogewogICAgIGludCBpOwogICAgIGludCBzdGFydCwgZW5kLCBzaGlmdDsKIAotICAgIFRSKFRSQUNFX0lDQUxMUywgKFRfQ0FMTEVEKCJfbmNfc2Nyb2xsX29wdGltaXplIikpKTsKKyAgICBUUihUUkFDRV9JQ0FMTFMsIChUX0NBTExFRCgiX25jX3Njcm9sbF9vcHRpbWl6ZSglcCkiKSwgKHZvaWQgKikgU1BfUEFSTSkpOwogCiAjaWYgIWRlZmluZWQoU0NST0xMREVCVUcpICYmICFkZWZpbmVkKEhBU0hERUJVRykKICNpZiBVU0VfSEFTSE1BUAogICAgIC8qIGdldCBlbm91Z2ggc3RvcmFnZSAqLwotICAgIGlmIChPTEROVU1fU0laRSA8IHNjcmVlbl9saW5lcykgewotCWludCAqbmV3X29sZG51bXMgPSB0eXBlUmVhbGxvYyhpbnQsIHNjcmVlbl9saW5lcywgb2xkbnVtcyk7CisgICAgYXNzZXJ0KE9MRE5VTV9TSVpFKFNQX1BBUk0pID49IDApOworICAgIGFzc2VydChzY3JlZW5fbGluZXMoU1BfUEFSTSkgPiAwKTsKKyAgICBpZiAoKG9sZG51bXMoU1BfUEFSTSkgPT0gMCkKKwl8fCAoT0xETlVNX1NJWkUoU1BfUEFSTSkgPCBzY3JlZW5fbGluZXMoU1BfUEFSTSkpKSB7CisJaW50IG5lZWRfbGluZXMgPSAoKE9MRE5VTV9TSVpFKFNQX1BBUk0pIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pKQorCQkJICA/IHNjcmVlbl9saW5lcyhTUF9QQVJNKQorCQkJICA6IE9MRE5VTV9TSVpFKFNQX1BBUk0pKTsKKwlpbnQgKm5ld19vbGRudW1zID0gdHlwZVJlYWxsb2MoaW50LAorCQkJCSAgICAgICAoc2l6ZV90KSBuZWVkX2xpbmVzLAorCQkJCSAgICAgICBvbGRudW1zKFNQX1BBUk0pKTsKIAlpZiAoIW5ld19vbGRudW1zKQogCSAgICByZXR1cm47Ci0Jb2xkbnVtcyA9IG5ld19vbGRudW1zOwotCU9MRE5VTV9TSVpFID0gc2NyZWVuX2xpbmVzOworCW9sZG51bXMoU1BfUEFSTSkgPSBuZXdfb2xkbnVtczsKKwlPTEROVU1fU0laRShTUF9QQVJNKSA9IG5lZWRfbGluZXM7CiAgICAgfQogICAgIC8qIGNhbGN1bGF0ZSB0aGUgaW5kaWNlcyAqLwotICAgIF9uY19oYXNoX21hcCgpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfaGFzaF9tYXApIChOQ1VSU0VTX1NQX0FSRyk7CiAjZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5lZChTQ1JPTExERUJVRykgJiYgIWRlZmluZWQoSEFTSERFQlVHKSAqLwogCiAjaWZkZWYgVFJBQ0UKICAgICBpZiAoVVNFX1RSQUNFRihUUkFDRV9VUERBVEUgfCBUUkFDRV9NT1ZFKSkgewotCV9uY19saW5lZHVtcCgpOworCU5DVVJTRVNfU1BfTkFNRShfbmNfbGluZWR1bXApIChOQ1VSU0VTX1NQX0FSRyk7CiAJX25jX3VubG9ja19nbG9iYWwodHJhY2VmKTsKICAgICB9CiAjZW5kaWYgLyogVFJBQ0UgKi8KIAogICAgIC8qIHBhc3MgMSAtIGZyb20gdG9wIHRvIGJvdHRvbSBzY3JvbGxpbmcgdXAgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzOykgewotCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzICYmIChPTEROVU0oaSkgPT0gX05FV0lOREVYIHx8IE9MRE5VTShpKSA8PSBpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOykgeworCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pCisJICAgICAgICYmIChPTEROVU0oU1BfUEFSTSwgaSkgPT0gX05FV0lOREVYIHx8IE9MRE5VTShTUF9QQVJNLCBpKSA8PSBpKSkKIAkgICAgaSsrOwotCWlmIChpID49IHNjcmVlbl9saW5lcykKKwlpZiAoaSA+PSBzY3JlZW5fbGluZXMoU1BfUEFSTSkpCiAJICAgIGJyZWFrOwogCi0Jc2hpZnQgPSBPTEROVU0oaSkgLSBpOwkvKiBzaGlmdCA+IDAgKi8KKwlzaGlmdCA9IE9MRE5VTShTUF9QQVJNLCBpKSAtIGk7CQkvKiBzaGlmdCA+IDAgKi8KIAlzdGFydCA9IGk7CiAKIAlpKys7Ci0Jd2hpbGUgKGkgPCBzY3JlZW5fbGluZXMgJiYgT0xETlVNKGkpICE9IF9ORVdJTkRFWCAmJiBPTEROVU0oaSkgLSBpCi0JICAgICAgID09IHNoaWZ0KQorCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pCisJICAgICAgICYmIE9MRE5VTShTUF9QQVJNLCBpKSAhPSBfTkVXSU5ERVgKKwkgICAgICAgJiYgT0xETlVNKFNQX1BBUk0sIGkpIC0gaSA9PSBzaGlmdCkKIAkgICAgaSsrOwogCWVuZCA9IGkgLSAxICsgc2hpZnQ7CiAKIAlUUihUUkFDRV9VUERBVEUgfCBUUkFDRV9NT1ZFLCAoInNjcm9sbCBbJWQsICVkXSBieSAlZCIsIHN0YXJ0LCBlbmQsIHNoaWZ0KSk7CiAjaWYgIWRlZmluZWQoU0NST0xMREVCVUcpICYmICFkZWZpbmVkKEhBU0hERUJVRykKLQlpZiAoX25jX3Njcm9sbG4oc2hpZnQsIHN0YXJ0LCBlbmQsIHNjcmVlbl9saW5lcyAtIDEpID09IEVSUikgeworCWlmIChOQ1VSU0VTX1NQX05BTUUoX25jX3Njcm9sbG4pIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICBzaGlmdCwKKwkJCQkJICBzdGFydCwKKwkJCQkJICBlbmQsCisJCQkJCSAgc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSkgPT0gRVJSKSB7CiAJICAgIFRSKFRSQUNFX1VQREFURSB8IFRSQUNFX01PVkUsICgidW5hYmxlIHRvIHNjcm9sbCIpKTsKIAkgICAgY29udGludWU7CiAJfQpAQCAtMjM4LDIzICsyNTIsMzMgQEAKICAgICB9CiAKICAgICAvKiBwYXNzIDIgLSBmcm9tIGJvdHRvbSB0byB0b3Agc2Nyb2xsaW5nIGRvd24gKi8KLSAgICBmb3IgKGkgPSBzY3JlZW5fbGluZXMgLSAxOyBpID49IDA7KSB7Ci0Jd2hpbGUgKGkgPj0gMCAmJiAoT0xETlVNKGkpID09IF9ORVdJTkRFWCB8fCBPTEROVU0oaSkgPj0gaSkpCisgICAgZm9yIChpID0gc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMTsgaSA+PSAwOykgeworCXdoaWxlIChpID49IDAKKwkgICAgICAgJiYgKE9MRE5VTShTUF9QQVJNLCBpKSA9PSBfTkVXSU5ERVgKKwkJICAgfHwgT0xETlVNKFNQX1BBUk0sIGkpID49IGkpKSB7CiAJICAgIGktLTsKKwl9CiAJaWYgKGkgPCAwKQogCSAgICBicmVhazsKIAotCXNoaWZ0ID0gT0xETlVNKGkpIC0gaTsJLyogc2hpZnQgPCAwICovCisJc2hpZnQgPSBPTEROVU0oU1BfUEFSTSwgaSkgLSBpOwkJLyogc2hpZnQgPCAwICovCiAJZW5kID0gaTsKIAogCWktLTsKLQl3aGlsZSAoaSA+PSAwICYmIE9MRE5VTShpKSAhPSBfTkVXSU5ERVggJiYgT0xETlVNKGkpIC0gaSA9PSBzaGlmdCkKKwl3aGlsZSAoaSA+PSAwCisJICAgICAgICYmIE9MRE5VTShTUF9QQVJNLCBpKSAhPSBfTkVXSU5ERVgKKwkgICAgICAgJiYgT0xETlVNKFNQX1BBUk0sIGkpIC0gaSA9PSBzaGlmdCkgewogCSAgICBpLS07CisJfQogCXN0YXJ0ID0gaSArIDEgLSAoLXNoaWZ0KTsKIAogCVRSKFRSQUNFX1VQREFURSB8IFRSQUNFX01PVkUsICgic2Nyb2xsIFslZCwgJWRdIGJ5ICVkIiwgc3RhcnQsIGVuZCwgc2hpZnQpKTsKICNpZiAhZGVmaW5lZChTQ1JPTExERUJVRykgJiYgIWRlZmluZWQoSEFTSERFQlVHKQotCWlmIChfbmNfc2Nyb2xsbihzaGlmdCwgc3RhcnQsIGVuZCwgc2NyZWVuX2xpbmVzIC0gMSkgPT0gRVJSKSB7CisJaWYgKE5DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsbikgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQkgIHNoaWZ0LAorCQkJCQkgIHN0YXJ0LAorCQkJCQkgIGVuZCwKKwkJCQkJICBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSAxKSA9PSBFUlIpIHsKIAkgICAgVFIoVFJBQ0VfVVBEQVRFIHwgVFJBQ0VfTU9WRSwgKCJ1bmFibGUgdG8gc2Nyb2xsIikpOwogCSAgICBjb250aW51ZTsKIAl9CkBAIC0yNjMsMjQgKzI4Nyw0NCBAQAogICAgIFRSKFRSQUNFX0lDQUxMUywgKFRfUkVUVVJOKCIiKSkpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19zY3JvbGxfb3B0aW1pemUodm9pZCkKK3sKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3Njcm9sbF9vcHRpbWl6ZSkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChUUkFDRSkgfHwgZGVmaW5lZChTQ1JPTExERUJVRykgfHwgZGVmaW5lZChIQVNIREVCVUcpCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX2xpbmVkdW1wKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUoX25jX2xpbmVkdW1wKSAoTkNVUlNFU19TUF9EQ0wwKQogLyogZHVtcCB0aGUgc3RhdGUgb2YgdGhlIHJlYWwgYW5kIHZpcnR1YWwgb2xkbnVtIGZpZWxkcyAqLwogewogICAgIGludCBuOwogICAgIGNoYXIgKmJ1ZiA9IDA7Ci0gICAgc2l6ZV90IHdhbnQgPSAoc2NyZWVuX2xpbmVzICsgMSkgKiA0OworICAgIHNpemVfdCB3YW50ID0gKChzaXplX3QpIHNjcmVlbl9saW5lcyhTUF9QQVJNKSArIDEpICogNDsKKyAgICAodm9pZCkgU1BfUEFSTTsKIAogICAgIGlmICgoYnVmID0gdHlwZU1hbGxvYyhjaGFyLCB3YW50KSkgIT0gMCkgewogCi0JKHZvaWQpIHN0cmNweShidWYsICJ2aXJ0Iik7Ci0JZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lczsgbisrKQotCSAgICAodm9pZCkgc3ByaW50ZihidWYgKyBzdHJsZW4oYnVmKSwgIiAlMDJkIiwgT0xETlVNKG4pKTsKLQlUUihUUkFDRV9VUERBVEUgfCBUUkFDRV9NT1ZFLCAoYnVmKSk7CisJKmJ1ZiA9ICdcMCc7CisJZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgbisrKQorCSAgICBfbmNfU1BSSU5URihidWYgKyBzdHJsZW4oYnVmKSwKKwkJCV9uY19TTElNSVQod2FudCAtIHN0cmxlbihidWYpKQorCQkJIiAlMDJkIiwgT0xETlVNKFNQX1BBUk0sIG4pKTsKKwlUUihUUkFDRV9VUERBVEUgfCBUUkFDRV9NT1ZFLCAoInZpcnQgJXMiLCBidWYpKTsKIAlmcmVlKGJ1Zik7CiAgICAgfQogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19saW5lZHVtcCh2b2lkKQoreworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfbGluZWR1bXApIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8qIGRlZmluZWQoVFJBQ0UpIHx8IGRlZmluZWQoU0NST0xMREVCVUcpICovCiAKICNpZmRlZiBTQ1JPTExERUJVRwpAQCAtMjk2LDcgKzM0MCw3IEBACiAgICAgZm9yICg7OykgewogCWludCBuOwogCi0JZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lczsgbisrKQorCWZvciAobiA9IDA7IG4gPCBzY3JlZW5fbGluZXMoc3ApOyBuKyspCiAJICAgIG9sZG51bXNbbl0gPSBfTkVXSU5ERVg7CiAKIAkvKiBncmFiIHRoZSB0ZXN0IHZlY3RvciAqLwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90dHkvaGFzaG1hcC5jIGIvbmN1cnNlcy90dHkvaGFzaG1hcC5jCmluZGV4IDliNjBkZjYuLjhjMGZkZmQgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvdHR5L2hhc2htYXAuYworKysgYi9uY3Vyc2VzL3R0eS9oYXNobWFwLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTY4LDQwICs2OCw0NyBAQAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4JCS8qIGZvciBiYWNrX2NvbG9yX2VyYXNlICovCiAKLU1PRFVMRV9JRCgiJElkOiBoYXNobWFwLmMsdiAxLjU2IDIwMDcvMTAvMTMgMTg6NDc6MjUgTWlyb3NsYXYuTGljaHZhciBFeHAgJCIpCisjaWZuZGVmIENVUgorI2RlZmluZSBDVVIgU1BfVEVSTVRZUEUKKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogaGFzaG1hcC5jLHYgMS42NSAyMDE1LzA3LzI1IDIwOjEzOjU2IHRvbSBFeHAgJCIpCiAKICNpZmRlZiBIQVNIREVCVUcKIAogIyBkZWZpbmUgX3RyYWNlZglwcmludGYKICMgdW5kZWYgVFIKKyMgaWZkZWYgVFJBQ0UKICMgZGVmaW5lIFRSKG4sIGEpCWlmIChfbmNfdHJhY2luZyAmIChuKSkgeyBfdHJhY2VmIGEgOyBwdXRjaGFyKCdcbicpOyB9CisjIGVsc2UKKyMgZGVmaW5lIFRSKG4sIGEpCXsgX3RyYWNlZiBhIDsgcHV0Y2hhcignXG4nKTsgfQorIyBlbmRpZgogIyB1bmRlZiBzY3JlZW5fbGluZXMKLSMgZGVmaW5lIHNjcmVlbl9saW5lcyBNQVhMSU5FUwotIyBkZWZpbmUgVEVYVFdJRFRICTEKKyMgZGVmaW5lIHNjcmVlbl9saW5lcyhzcCkgTUFYTElORVMKKyMgZGVmaW5lIFRFWFRXSURUSChzcCkJMQogaW50IG9sZG51bXNbTUFYTElORVNdLCByZWFsbGluZXNbTUFYTElORVNdOwotc3RhdGljIE5DVVJTRVNfQ0hfVCBvbGR0ZXh0W01BWExJTkVTXVtURVhUV0lEVEhdOwotc3RhdGljIE5DVVJTRVNfQ0hfVCBuZXd0ZXh0W01BWExJTkVTXVtURVhUV0lEVEhdOwotIyBkZWZpbmUgT0xETlVNKG4pCW9sZG51bXNbbl0KLSMgZGVmaW5lIE9MRFRFWFQobikJb2xkdGV4dFtuXQotIyBkZWZpbmUgTkVXVEVYVChtKQluZXd0ZXh0W21dCi0jIGRlZmluZSBQRU5ESU5HKG4pICAgICAxCitzdGF0aWMgTkNVUlNFU19DSF9UIG9sZHRleHRbTUFYTElORVNdW1RFWFRXSURUSChzcCldOworc3RhdGljIE5DVVJTRVNfQ0hfVCBuZXd0ZXh0W01BWExJTkVTXVtURVhUV0lEVEgoc3ApXTsKKyMgZGVmaW5lIE9MRE5VTShzcCxuKQlvbGRudW1zW25dCisjIGRlZmluZSBPTERURVhUKHNwLG4pCW9sZHRleHRbbl0KKyMgZGVmaW5lIE5FV1RFWFQoc3AsbSkJbmV3dGV4dFttXQorIyBkZWZpbmUgUEVORElORyhzcCxuKSAgMQogCiAjZWxzZSAvKiAhSEFTSERFQlVHICovCiAKLSMgZGVmaW5lIE9MRE5VTShuKQlTUC0+X29sZG51bV9saXN0W25dCi0jIGRlZmluZSBPTERURVhUKG4pCWN1cnNjci0+X2xpbmVbbl0udGV4dAotIyBkZWZpbmUgTkVXVEVYVChtKQluZXdzY3ItPl9saW5lW21dLnRleHQKLSMgZGVmaW5lIFRFWFRXSURUSAkoY3Vyc2NyLT5fbWF4eCsxKQotIyBkZWZpbmUgUEVORElORyhuKSAgICAgKG5ld3Njci0+X2xpbmVbbl0uZmlyc3RjaGFyICE9IF9OT0NIQU5HRSkKKyMgZGVmaW5lIE9MRE5VTShzcCxuKQkoc3ApLT5fb2xkbnVtX2xpc3Rbbl0KKyMgZGVmaW5lIE9MRFRFWFQoc3AsbikJQ3VyU2NyZWVuKHNwKS0+X2xpbmVbbl0udGV4dAorIyBkZWZpbmUgTkVXVEVYVChzcCxtKQlOZXdTY3JlZW4oc3ApLT5fbGluZVttXS50ZXh0CisjIGRlZmluZSBURVhUV0lEVEgoc3ApCShDdXJTY3JlZW4oc3ApLT5fbWF4eCArIDEpCisjIGRlZmluZSBQRU5ESU5HKHNwLG4pICAoTmV3U2NyZWVuKHNwKS0+X2xpbmVbbl0uZmlyc3RjaGFyICE9IF9OT0NIQU5HRSkKIAogI2VuZGlmIC8qICFIQVNIREVCVUcgKi8KIAotI2RlZmluZSBvbGRoYXNoCQkoU1AtPm9sZGhhc2gpCi0jZGVmaW5lIG5ld2hhc2gJCShTUC0+bmV3aGFzaCkKLSNkZWZpbmUgaGFzaHRhYgkJKFNQLT5oYXNodGFiKQotI2RlZmluZSBsaW5lc19hbGxvYwkoU1AtPmhhc2h0YWJfbGVuKQorI2RlZmluZSBvbGRoYXNoKHNwKQkoKHNwKS0+b2xkaGFzaCkKKyNkZWZpbmUgbmV3aGFzaChzcCkJKChzcCktPm5ld2hhc2gpCisjZGVmaW5lIGhhc2h0YWIoc3ApCSgoc3ApLT5oYXNodGFiKQorI2RlZmluZSBsaW5lc19hbGxvYyhzcCkJKChzcCktPmhhc2h0YWJfbGVuKQogCiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKICNkZWZpbmUgSEFTSF9WQUwoY2gpIChjaC5jaGFyc1swXSkKQEAgLTExMiwyNiArMTE5LDI5IEBACiBzdGF0aWMgY29uc3QgTkNVUlNFU19DSF9UIGJsYW5rY2hhciA9IE5ld0NoYXIoQkxBTktfVEVYVCk7CiAKIHN0YXRpYyBOQ1VSU0VTX0lOTElORSB1bnNpZ25lZCBsb25nCi1oYXNoKE5DVVJTRVNfQ0hfVCAqIHRleHQpCitoYXNoKFNDUkVFTiAqc3AsIE5DVVJTRVNfQ0hfVCAqIHRleHQpCiB7CiAgICAgaW50IGk7CiAgICAgTkNVUlNFU19DSF9UIGNoOwogICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsKLSAgICBmb3IgKGkgPSBURVhUV0lEVEg7IGkgPiAwOyBpLS0pIHsKKyAgICAodm9pZCkgc3A7CisKKyAgICBmb3IgKGkgPSBURVhUV0lEVEgoc3ApOyBpID4gMDsgaS0tKSB7CiAJY2ggPSAqdGV4dCsrOwotCXJlc3VsdCArPSAocmVzdWx0IDw8IDUpICsgSEFTSF9WQUwoY2gpOworCXJlc3VsdCArPSAocmVzdWx0IDw8IDUpICsgKHVuc2lnbmVkIGxvbmcpIEhBU0hfVkFMKGNoKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogYXBwcm94aW1hdGUgdXBkYXRlIGNvc3QgKi8KIHN0YXRpYyBpbnQKLXVwZGF0ZV9jb3N0KE5DVVJTRVNfQ0hfVCAqIGZyb20sIE5DVVJTRVNfQ0hfVCAqIHRvKQordXBkYXRlX2Nvc3QoU0NSRUVOICpzcCwgTkNVUlNFU19DSF9UICogZnJvbSwgTkNVUlNFU19DSF9UICogdG8pCiB7CiAgICAgaW50IGNvc3QgPSAwOwogICAgIGludCBpOworICAgICh2b2lkKSBzcDsKIAotICAgIGZvciAoaSA9IFRFWFRXSURUSDsgaSA+IDA7IGktLSwgZnJvbSsrLCB0bysrKQorICAgIGZvciAoaSA9IFRFWFRXSURUSChzcCk7IGkgPiAwOyBpLS0sIGZyb20rKywgdG8rKykKIAlpZiAoIShDaGFyRXEoKmZyb20sICp0bykpKQogCSAgICBjb3N0Kys7CiAKQEAgLTEzOSwxNiArMTQ5LDE3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXVwZGF0ZV9jb3N0X2Zyb21fYmxhbmsoTkNVUlNFU19DSF9UICogdG8pCit1cGRhdGVfY29zdF9mcm9tX2JsYW5rKFNDUkVFTiAqc3AsIE5DVVJTRVNfQ0hfVCAqIHRvKQogewogICAgIGludCBjb3N0ID0gMDsKICAgICBpbnQgaTsKICAgICBOQ1VSU0VTX0NIX1QgYmxhbmsgPSBibGFua2NoYXI7CisgICAgKHZvaWQpIHNwOwogCiAgICAgaWYgKGJhY2tfY29sb3JfZXJhc2UpCiAJU2V0UGFpcihibGFuaywgR2V0UGFpcihzdGRzY3ItPl9uY19ia2dkKSk7CiAKLSAgICBmb3IgKGkgPSBURVhUV0lEVEg7IGkgPiAwOyBpLS0sIHRvKyspCisgICAgZm9yIChpID0gVEVYVFdJRFRIKHNwKTsgaSA+IDA7IGktLSwgdG8rKykKIAlpZiAoIShDaGFyRXEoYmxhbmssICp0bykpKQogCSAgICBjb3N0Kys7CiAKQEAgLTE2MCwxNCArMTcxLDE0IEBACiAgKiBlZmZlY3RpdmUuICdibGFuaycgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmUgJ3RvJyB3b3VsZCBiZWNvbWUgYmxhbmsuCiAgKi8KIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBib29sCi1jb3N0X2VmZmVjdGl2ZShjb25zdCBpbnQgZnJvbSwgY29uc3QgaW50IHRvLCBjb25zdCBib29sIGJsYW5rKQorY29zdF9lZmZlY3RpdmUoU0NSRUVOICpzcCwgY29uc3QgaW50IGZyb20sIGNvbnN0IGludCB0bywgY29uc3QgaW50IGJsYW5rKQogewogICAgIGludCBuZXdfZnJvbTsKIAogICAgIGlmIChmcm9tID09IHRvKQogCXJldHVybiBGQUxTRTsKIAotICAgIG5ld19mcm9tID0gT0xETlVNKGZyb20pOworICAgIG5ld19mcm9tID0gT0xETlVNKHNwLCBmcm9tKTsKICAgICBpZiAobmV3X2Zyb20gPT0gX05FV0lOREVYKQogCW5ld19mcm9tID0gZnJvbTsKIApAQCAtMTc1LDE2ICsxODYsMTcgQEAKICAgICAgKiBPbiB0aGUgbGVmdCBzaWRlIG9mID49IGlzIHRoZSBjb3N0IGJlZm9yZSBtb3Zpbmc7CiAgICAgICogb24gdGhlIHJpZ2h0IHNpZGUgLS0gY29zdCBhZnRlciBtb3ZpbmcuCiAgICAgICovCi0gICAgcmV0dXJuICgoKGJsYW5rID8gdXBkYXRlX2Nvc3RfZnJvbV9ibGFuayhORVdURVhUKHRvKSkKLQkgICAgICA6IHVwZGF0ZV9jb3N0KE9MRFRFWFQodG8pLCBORVdURVhUKHRvKSkpCi0JICAgICArIHVwZGF0ZV9jb3N0KE9MRFRFWFQobmV3X2Zyb20pLCBORVdURVhUKGZyb20pKSkKLQkgICAgPj0gKChuZXdfZnJvbSA9PSBmcm9tID8gdXBkYXRlX2Nvc3RfZnJvbV9ibGFuayhORVdURVhUKGZyb20pKQotCQkgOiB1cGRhdGVfY29zdChPTERURVhUKG5ld19mcm9tKSwgTkVXVEVYVChmcm9tKSkpCi0JCSsgdXBkYXRlX2Nvc3QoT0xEVEVYVChmcm9tKSwgTkVXVEVYVCh0bykpKSkgPyBUUlVFIDogRkFMU0U7CisgICAgcmV0dXJuICgoKGJsYW5rID8gdXBkYXRlX2Nvc3RfZnJvbV9ibGFuayhzcCwgTkVXVEVYVChzcCwgdG8pKQorCSAgICAgIDogdXBkYXRlX2Nvc3Qoc3AsIE9MRFRFWFQoc3AsIHRvKSwgTkVXVEVYVChzcCwgdG8pKSkKKwkgICAgICsgdXBkYXRlX2Nvc3Qoc3AsIE9MRFRFWFQoc3AsIG5ld19mcm9tKSwgTkVXVEVYVChzcCwgZnJvbSkpKQorCSAgICA+PSAoKG5ld19mcm9tID09IGZyb20gPyB1cGRhdGVfY29zdF9mcm9tX2JsYW5rKHNwLCBORVdURVhUKHNwLCBmcm9tKSkKKwkJIDogdXBkYXRlX2Nvc3Qoc3AsIE9MRFRFWFQoc3AsIG5ld19mcm9tKSwgTkVXVEVYVChzcCwgZnJvbSkpKQorCQkrIHVwZGF0ZV9jb3N0KHNwLCBPTERURVhUKHNwLCBmcm9tKSwgTkVXVEVYVChzcCwgdG8pKSkpCisJPyBUUlVFIDogRkFMU0U7CiB9CiAKIHN0YXRpYyB2b2lkCi1ncm93X2h1bmtzKHZvaWQpCitncm93X2h1bmtzKFNDUkVFTiAqc3ApCiB7CiAgICAgaW50IHN0YXJ0LCBlbmQsIHNoaWZ0OwogICAgIGludCBiYWNrX2xpbWl0LCBmb3J3YXJkX2xpbWl0OwkvKiBsaW1pdHMgZm9yIGNlbGxzIHRvIGZpbGwgKi8KQEAgLTIwMCwzNSArMjEyLDM2IEBACiAgICAgYmFja19yZWZfbGltaXQgPSAwOwogCiAgICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBzY3JlZW5fbGluZXMgJiYgT0xETlVNKGkpID09IF9ORVdJTkRFWCkKKyAgICB3aGlsZSAoaSA8IHNjcmVlbl9saW5lcyhzcCkgJiYgT0xETlVNKHNwLCBpKSA9PSBfTkVXSU5ERVgpCiAJaSsrOwotICAgIGZvciAoOyBpIDwgc2NyZWVuX2xpbmVzOyBpID0gbmV4dF9odW5rKSB7CisgICAgZm9yICg7IGkgPCBzY3JlZW5fbGluZXMoc3ApOyBpID0gbmV4dF9odW5rKSB7CiAJc3RhcnQgPSBpOwotCXNoaWZ0ID0gT0xETlVNKGkpIC0gaTsKKwlzaGlmdCA9IE9MRE5VTShzcCwgaSkgLSBpOwogCiAJLyogZ2V0IGZvcndhcmQgbGltaXQgKi8KIAlpID0gc3RhcnQgKyAxOwotCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzICYmIE9MRE5VTShpKSAhPSBfTkVXSU5ERVggJiYgT0xETlVNKGkpIC0gaQotCSAgICAgICA9PSBzaGlmdCkKKwl3aGlsZSAoaSA8IHNjcmVlbl9saW5lcyhzcCkKKwkgICAgICAgJiYgT0xETlVNKHNwLCBpKSAhPSBfTkVXSU5ERVgKKwkgICAgICAgJiYgT0xETlVNKHNwLCBpKSAtIGkgPT0gc2hpZnQpCiAJICAgIGkrKzsKIAllbmQgPSBpOwotCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzICYmIE9MRE5VTShpKSA9PSBfTkVXSU5ERVgpCisJd2hpbGUgKGkgPCBzY3JlZW5fbGluZXMoc3ApICYmIE9MRE5VTShzcCwgaSkgPT0gX05FV0lOREVYKQogCSAgICBpKys7CiAJbmV4dF9odW5rID0gaTsKIAlmb3J3YXJkX2xpbWl0ID0gaTsKLQlpZiAoaSA+PSBzY3JlZW5fbGluZXMgfHwgT0xETlVNKGkpID49IGkpCisJaWYgKGkgPj0gc2NyZWVuX2xpbmVzKHNwKSB8fCBPTEROVU0oc3AsIGkpID49IGkpCiAJICAgIGZvcndhcmRfcmVmX2xpbWl0ID0gaTsKIAllbHNlCi0JICAgIGZvcndhcmRfcmVmX2xpbWl0ID0gT0xETlVNKGkpOworCSAgICBmb3J3YXJkX3JlZl9saW1pdCA9IE9MRE5VTShzcCwgaSk7CiAKIAlpID0gc3RhcnQgLSAxOwogCS8qIGdyb3cgYmFjayAqLwogCWlmIChzaGlmdCA8IDApCiAJICAgIGJhY2tfbGltaXQgPSBiYWNrX3JlZl9saW1pdCArICgtc2hpZnQpOwogCXdoaWxlIChpID49IGJhY2tfbGltaXQpIHsKLQkgICAgaWYgKG5ld2hhc2hbaV0gPT0gb2xkaGFzaFtpICsgc2hpZnRdCi0JCXx8IGNvc3RfZWZmZWN0aXZlKGkgKyBzaGlmdCwgaSwgc2hpZnQgPCAwKSkgewotCQlPTEROVU0oaSkgPSBpICsgc2hpZnQ7CisJICAgIGlmIChuZXdoYXNoKHNwKVtpXSA9PSBvbGRoYXNoKHNwKVtpICsgc2hpZnRdCisJCXx8IGNvc3RfZWZmZWN0aXZlKHNwLCBpICsgc2hpZnQsIGksIHNoaWZ0IDwgMCkpIHsKKwkJT0xETlVNKHNwLCBpKSA9IGkgKyBzaGlmdDsKIAkJVFIoVFJBQ0VfVVBEQVRFIHwgVFJBQ0VfTU9WRSwKIAkJICAgKCJjb25uZWN0ZWQgbmV3IGxpbmUgJWQgdG8gb2xkIGxpbmUgJWQgKGJhY2t3YXJkIGNvbnRpbnVhdGlvbikiLAogCQkgICAgaSwgaSArIHNoaWZ0KSk7CkBAIC0yNDYsOSArMjU5LDkgQEAKIAlpZiAoc2hpZnQgPiAwKQogCSAgICBmb3J3YXJkX2xpbWl0ID0gZm9yd2FyZF9yZWZfbGltaXQgLSBzaGlmdDsKIAl3aGlsZSAoaSA8IGZvcndhcmRfbGltaXQpIHsKLQkgICAgaWYgKG5ld2hhc2hbaV0gPT0gb2xkaGFzaFtpICsgc2hpZnRdCi0JCXx8IGNvc3RfZWZmZWN0aXZlKGkgKyBzaGlmdCwgaSwgc2hpZnQgPiAwKSkgewotCQlPTEROVU0oaSkgPSBpICsgc2hpZnQ7CisJICAgIGlmIChuZXdoYXNoKHNwKVtpXSA9PSBvbGRoYXNoKHNwKVtpICsgc2hpZnRdCisJCXx8IGNvc3RfZWZmZWN0aXZlKHNwLCBpICsgc2hpZnQsIGksIHNoaWZ0ID4gMCkpIHsKKwkJT0xETlVNKHNwLCBpKSA9IGkgKyBzaGlmdDsKIAkJVFIoVFJBQ0VfVVBEQVRFIHwgVFJBQ0VfTU9WRSwKIAkJICAgKCJjb25uZWN0ZWQgbmV3IGxpbmUgJWQgdG8gb2xkIGxpbmUgJWQgKGZvcndhcmQgY29udGludWF0aW9uKSIsCiAJCSAgICBpLCBpICsgc2hpZnQpKTsKQEAgLTI2OCw1MSArMjgxLDU0IEBACiB9CiAKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfaGFzaF9tYXAodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfaGFzaF9tYXApIChOQ1VSU0VTX1NQX0RDTDApCiB7Ci0gICAgSEFTSE1BUCAqc3A7CisgICAgSEFTSE1BUCAqaHNwOwogICAgIHJlZ2lzdGVyIGludCBpOwogICAgIGludCBzdGFydCwgc2hpZnQsIHNpemU7CiAKLSAgICBpZiAoc2NyZWVuX2xpbmVzID4gbGluZXNfYWxsb2MpIHsKLQlpZiAoaGFzaHRhYikKLQkgICAgZnJlZShoYXNodGFiKTsKLQloYXNodGFiID0gdHlwZU1hbGxvYyhIQVNITUFQLCAoc2NyZWVuX2xpbmVzICsgMSkgKiAyKTsKLQlpZiAoIWhhc2h0YWIpIHsKLQkgICAgaWYgKG9sZGhhc2gpIHsKLQkJRnJlZUFuZE51bGwob2xkaGFzaCk7CisgICAgaWYgKHNjcmVlbl9saW5lcyhTUF9QQVJNKSA+IGxpbmVzX2FsbG9jKFNQX1BBUk0pKSB7CisJaWYgKGhhc2h0YWIoU1BfUEFSTSkpCisJICAgIGZyZWUoaGFzaHRhYihTUF9QQVJNKSk7CisJaGFzaHRhYihTUF9QQVJNKSA9IHR5cGVNYWxsb2MoSEFTSE1BUCwKKwkJCQkgICAgICAoKHNpemVfdCkgc2NyZWVuX2xpbmVzKFNQX1BBUk0pICsgMSkgKiAyKTsKKwlpZiAoIWhhc2h0YWIoU1BfUEFSTSkpIHsKKwkgICAgaWYgKG9sZGhhc2goU1BfUEFSTSkpIHsKKwkJRnJlZUFuZE51bGwob2xkaGFzaChTUF9QQVJNKSk7CiAJICAgIH0KLQkgICAgbGluZXNfYWxsb2MgPSAwOworCSAgICBsaW5lc19hbGxvYyhTUF9QQVJNKSA9IDA7CiAJICAgIHJldHVybjsKIAl9Ci0JbGluZXNfYWxsb2MgPSBzY3JlZW5fbGluZXM7CisJbGluZXNfYWxsb2MoU1BfUEFSTSkgPSBzY3JlZW5fbGluZXMoU1BfUEFSTSk7CiAgICAgfQogCi0gICAgaWYgKG9sZGhhc2ggJiYgbmV3aGFzaCkgeworICAgIGlmIChvbGRoYXNoKFNQX1BBUk0pICYmIG5ld2hhc2goU1BfUEFSTSkpIHsKIAkvKiByZS1oYXNoIG9ubHkgY2hhbmdlZCBsaW5lcyAqLwotCWZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXM7IGkrKykgewotCSAgICBpZiAoUEVORElORyhpKSkKLQkJbmV3aGFzaFtpXSA9IGhhc2goTkVXVEVYVChpKSk7CisJZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgaSsrKSB7CisJICAgIGlmIChQRU5ESU5HKFNQX1BBUk0sIGkpKQorCQluZXdoYXNoKFNQX1BBUk0pW2ldID0gaGFzaChTUF9QQVJNLCBORVdURVhUKFNQX1BBUk0sIGkpKTsKIAl9CiAgICAgfSBlbHNlIHsKIAkvKiByZS1oYXNoIGFsbCAqLwotCWlmIChvbGRoYXNoID09IDApCi0JICAgIG9sZGhhc2ggPSB0eXBlQ2FsbG9jKHVuc2lnbmVkIGxvbmcsICh1bnNpZ25lZCkgc2NyZWVuX2xpbmVzKTsKLQlpZiAobmV3aGFzaCA9PSAwKQotCSAgICBuZXdoYXNoID0gdHlwZUNhbGxvYyh1bnNpZ25lZCBsb25nLCAodW5zaWduZWQpIHNjcmVlbl9saW5lcyk7Ci0JaWYgKCFvbGRoYXNoIHx8ICFuZXdoYXNoKQorCWlmIChvbGRoYXNoKFNQX1BBUk0pID09IDApCisJICAgIG9sZGhhc2goU1BfUEFSTSkgPSB0eXBlQ2FsbG9jKHVuc2lnbmVkIGxvbmcsCisJCQkJCSAgICAoc2l6ZV90KSBzY3JlZW5fbGluZXMoU1BfUEFSTSkpOworCWlmIChuZXdoYXNoKFNQX1BBUk0pID09IDApCisJICAgIG5ld2hhc2goU1BfUEFSTSkgPSB0eXBlQ2FsbG9jKHVuc2lnbmVkIGxvbmcsCisJCQkJCSAgICAoc2l6ZV90KSBzY3JlZW5fbGluZXMoU1BfUEFSTSkpOworCWlmICghb2xkaGFzaChTUF9QQVJNKSB8fCAhbmV3aGFzaChTUF9QQVJNKSkKIAkgICAgcmV0dXJuOwkJLyogbWFsbG9jIGZhaWx1cmUgKi8KLQlmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzOyBpKyspIHsKLQkgICAgbmV3aGFzaFtpXSA9IGhhc2goTkVXVEVYVChpKSk7Ci0JICAgIG9sZGhhc2hbaV0gPSBoYXNoKE9MRFRFWFQoaSkpOworCWZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXMoU1BfUEFSTSk7IGkrKykgeworCSAgICBuZXdoYXNoKFNQX1BBUk0pW2ldID0gaGFzaChTUF9QQVJNLCBORVdURVhUKFNQX1BBUk0sIGkpKTsKKwkgICAgb2xkaGFzaChTUF9QQVJNKVtpXSA9IGhhc2goU1BfUEFSTSwgT0xEVEVYVChTUF9QQVJNLCBpKSk7CiAJfQogICAgIH0KIAogI2lmZGVmIEhBU0hfVkVSSUZZCi0gICAgZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lczsgaSsrKSB7Ci0JaWYgKG5ld2hhc2hbaV0gIT0gaGFzaChORVdURVhUKGkpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBpKyspIHsKKwlpZiAobmV3aGFzaChTUF9QQVJNKVtpXSAhPSBoYXNoKFNQX1BBUk0sIE5FV1RFWFQoU1BfUEFSTSwgaSkpKQogCSAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIGluIG5ld2hhc2hbJWRdXG4iLCBpKTsKLQlpZiAob2xkaGFzaFtpXSAhPSBoYXNoKE9MRFRFWFQoaSkpKQorCWlmIChvbGRoYXNoKFNQX1BBUk0pW2ldICE9IGhhc2goU1BfUEFSTSwgT0xEVEVYVChTUF9QQVJNLCBpKSkpCiAJICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3IgaW4gb2xkaGFzaFslZF1cbiIsIGkpOwogICAgIH0KICNlbmRpZgpAQCAtMzIwLDI4ICszMzYsMzAgQEAKICAgICAvKgogICAgICAqIFNldCB1cCBhbmQgY291bnQgbGluZS1oYXNoIHZhbHVlcy4KICAgICAgKi8KLSAgICBtZW1zZXQoaGFzaHRhYiwgJ1wwJywgc2l6ZW9mKCpoYXNodGFiKSAqIChzY3JlZW5fbGluZXMgKyAxKSAqIDIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXM7IGkrKykgewotCXVuc2lnbmVkIGxvbmcgaGFzaHZhbCA9IG9sZGhhc2hbaV07CisgICAgbWVtc2V0KGhhc2h0YWIoU1BfUEFSTSksICdcMCcsCisJICAgc2l6ZW9mKCooaGFzaHRhYihTUF9QQVJNKSkpCisJICAgKiAoKHNpemVfdCkgc2NyZWVuX2xpbmVzKFNQX1BBUk0pICsgMSkgKiAyKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBpKyspIHsKKwl1bnNpZ25lZCBsb25nIGhhc2h2YWwgPSBvbGRoYXNoKFNQX1BBUk0pW2ldOwogCi0JZm9yIChzcCA9IGhhc2h0YWI7IHNwLT5oYXNodmFsOyBzcCsrKQotCSAgICBpZiAoc3AtPmhhc2h2YWwgPT0gaGFzaHZhbCkKKwlmb3IgKGhzcCA9IGhhc2h0YWIoU1BfUEFSTSk7IGhzcC0+aGFzaHZhbDsgaHNwKyspCisJICAgIGlmIChoc3AtPmhhc2h2YWwgPT0gaGFzaHZhbCkKIAkJYnJlYWs7Ci0Jc3AtPmhhc2h2YWwgPSBoYXNodmFsOwkvKiBpbiBjYXNlIHRoaXMgaXMgYSBuZXcgZW50cnkgKi8KLQlzcC0+b2xkY291bnQrKzsKLQlzcC0+b2xkaW5kZXggPSBpOworCWhzcC0+aGFzaHZhbCA9IGhhc2h2YWw7CS8qIGluIGNhc2UgdGhpcyBpcyBhIG5ldyBlbnRyeSAqLworCWhzcC0+b2xkY291bnQrKzsKKwloc3AtPm9sZGluZGV4ID0gaTsKICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lczsgaSsrKSB7Ci0JdW5zaWduZWQgbG9uZyBoYXNodmFsID0gbmV3aGFzaFtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBpKyspIHsKKwl1bnNpZ25lZCBsb25nIGhhc2h2YWwgPSBuZXdoYXNoKFNQX1BBUk0pW2ldOwogCi0JZm9yIChzcCA9IGhhc2h0YWI7IHNwLT5oYXNodmFsOyBzcCsrKQotCSAgICBpZiAoc3AtPmhhc2h2YWwgPT0gaGFzaHZhbCkKKwlmb3IgKGhzcCA9IGhhc2h0YWIoU1BfUEFSTSk7IGhzcC0+aGFzaHZhbDsgaHNwKyspCisJICAgIGlmIChoc3AtPmhhc2h2YWwgPT0gaGFzaHZhbCkKIAkJYnJlYWs7Ci0Jc3AtPmhhc2h2YWwgPSBoYXNodmFsOwkvKiBpbiBjYXNlIHRoaXMgaXMgYSBuZXcgZW50cnkgKi8KLQlzcC0+bmV3Y291bnQrKzsKLQlzcC0+bmV3aW5kZXggPSBpOworCWhzcC0+aGFzaHZhbCA9IGhhc2h2YWw7CS8qIGluIGNhc2UgdGhpcyBpcyBhIG5ldyBlbnRyeSAqLworCWhzcC0+bmV3Y291bnQrKzsKKwloc3AtPm5ld2luZGV4ID0gaTsKIAotCU9MRE5VTShpKSA9IF9ORVdJTkRFWDsJLyogaW5pdGlhbGl6ZSBvbGQgaW5kaWNlcyBhcnJheSAqLworCU9MRE5VTShTUF9QQVJNLCBpKSA9IF9ORVdJTkRFWDsJCS8qIGluaXRpYWxpemUgb2xkIGluZGljZXMgYXJyYXkgKi8KICAgICB9CiAKICAgICAvKgpAQCAtMzUxLDE2ICszNjksMTYgQEAKICAgICAgKiBleHRlbmRpbmcgaHVua3MgYnkgY29zdF9lZmZlY3RpdmUuIE90aGVyd2lzZSwgaXQgZG9lcyBub3QKICAgICAgKiBoYXZlIGFueSBzaWRlIGVmZmVjdHMuCiAgICAgICovCi0gICAgZm9yIChzcCA9IGhhc2h0YWI7IHNwLT5oYXNodmFsOyBzcCsrKQotCWlmIChzcC0+b2xkY291bnQgPT0gMSAmJiBzcC0+bmV3Y291bnQgPT0gMQotCSAgICAmJiBzcC0+b2xkaW5kZXggIT0gc3AtPm5ld2luZGV4KSB7CisgICAgZm9yIChoc3AgPSBoYXNodGFiKFNQX1BBUk0pOyBoc3AtPmhhc2h2YWw7IGhzcCsrKQorCWlmIChoc3AtPm9sZGNvdW50ID09IDEgJiYgaHNwLT5uZXdjb3VudCA9PSAxCisJICAgICYmIGhzcC0+b2xkaW5kZXggIT0gaHNwLT5uZXdpbmRleCkgewogCSAgICBUUihUUkFDRV9VUERBVEUgfCBUUkFDRV9NT1ZFLAogCSAgICAgICAoIm5ldyBsaW5lICVkIGlzIGhhc2gtaWRlbnRpY2FsIHRvIG9sZCBsaW5lICVkICh1bmlxdWUpIiwKLQkJc3AtPm5ld2luZGV4LCBzcC0+b2xkaW5kZXgpKTsKLQkgICAgT0xETlVNKHNwLT5uZXdpbmRleCkgPSBzcC0+b2xkaW5kZXg7CisJCWhzcC0+bmV3aW5kZXgsIGhzcC0+b2xkaW5kZXgpKTsKKwkgICAgT0xETlVNKFNQX1BBUk0sIGhzcC0+bmV3aW5kZXgpID0gaHNwLT5vbGRpbmRleDsKIAl9CiAKLSAgICBncm93X2h1bmtzKCk7CisgICAgZ3Jvd19odW5rcyhTUF9QQVJNKTsKIAogICAgIC8qCiAgICAgICogRWxpbWluYXRlIGJhZCBvciBpbXBvc3NpYmxlIHNoaWZ0cyAtLSB0aGlzIGluY2x1ZGVzIHJlbW92aW5nCkBAIC0zNjgsNTggKzM4Niw4MyBAQAogICAgICAqIHRob3NlIHdoaWNoIGFyZSB0byBiZSBtb3ZlZCB0b28gZmFyLCB0aGV5IGFyZSBsaWtlbHkgdG8gZGVzdHJveQogICAgICAqIG1vcmUgdGhhbiBjYXJyeS4KICAgICAgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzOykgewotCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzICYmIE9MRE5VTShpKSA9PSBfTkVXSU5ERVgpCisgICAgZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTspIHsKKwl3aGlsZSAoaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKSAmJiBPTEROVU0oU1BfUEFSTSwgaSkgPT0gX05FV0lOREVYKQogCSAgICBpKys7Ci0JaWYgKGkgPj0gc2NyZWVuX2xpbmVzKQorCWlmIChpID49IHNjcmVlbl9saW5lcyhTUF9QQVJNKSkKIAkgICAgYnJlYWs7CiAJc3RhcnQgPSBpOwotCXNoaWZ0ID0gT0xETlVNKGkpIC0gaTsKKwlzaGlmdCA9IE9MRE5VTShTUF9QQVJNLCBpKSAtIGk7CiAJaSsrOwotCXdoaWxlIChpIDwgc2NyZWVuX2xpbmVzICYmIE9MRE5VTShpKSAhPSBfTkVXSU5ERVggJiYgT0xETlVNKGkpIC0gaQotCSAgICAgICA9PSBzaGlmdCkKKwl3aGlsZSAoaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKQorCSAgICAgICAmJiBPTEROVU0oU1BfUEFSTSwgaSkgIT0gX05FV0lOREVYCisJICAgICAgICYmIE9MRE5VTShTUF9QQVJNLCBpKSAtIGkgPT0gc2hpZnQpCiAJICAgIGkrKzsKIAlzaXplID0gaSAtIHN0YXJ0OwogCWlmIChzaXplIDwgMyB8fCBzaXplICsgbWluKHNpemUgLyA4LCAyKSA8IGFicyhzaGlmdCkpIHsKIAkgICAgd2hpbGUgKHN0YXJ0IDwgaSkgewotCQlPTEROVU0oc3RhcnQpID0gX05FV0lOREVYOworCQlPTEROVU0oU1BfUEFSTSwgc3RhcnQpID0gX05FV0lOREVYOwogCQlzdGFydCsrOwogCSAgICB9CiAJfQogICAgIH0KIAogICAgIC8qIEFmdGVyIGNsZWFyaW5nIGludmFsaWQgaHVua3MsIHRyeSBncm93IHRoZSByZXN0LiAqLwotICAgIGdyb3dfaHVua3MoKTsKKyAgICBncm93X2h1bmtzKFNQX1BBUk0pOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQodm9pZCkKK19uY19oYXNoX21hcCh2b2lkKQoreworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfaGFzaF9tYXApIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfbWFrZV9vbGRoYXNoKSAoTkNVUlNFU19TUF9EQ0x4IGludCBpKQoreworICAgIGlmIChvbGRoYXNoKFNQX1BBUk0pKQorCW9sZGhhc2goU1BfUEFSTSlbaV0gPSBoYXNoKFNQX1BBUk0sIE9MRFRFWFQoU1BfUEFSTSwgaSkpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY19tYWtlX29sZGhhc2goaW50IGkpCiB7Ci0gICAgaWYgKG9sZGhhc2gpCi0Jb2xkaGFzaFtpXSA9IGhhc2goT0xEVEVYVChpKSk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19tYWtlX29sZGhhc2gpIChDVVJSRU5UX1NDUkVFTiwgaSk7CiB9CisjZW5kaWYKIAogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19zY3JvbGxfb2xkaGFzaChpbnQgbiwgaW50IHRvcCwgaW50IGJvdCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsX29sZGhhc2gpIChOQ1VSU0VTX1NQX0RDTHggaW50IG4sIGludCB0b3AsIGludCBib3QpCiB7CiAgICAgc2l6ZV90IHNpemU7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIW9sZGhhc2gpCisgICAgaWYgKCFvbGRoYXNoKFNQX1BBUk0pKQogCXJldHVybjsKIAotICAgIHNpemUgPSBzaXplb2YoKm9sZGhhc2gpICogKGJvdCAtIHRvcCArIDEgLSBhYnMobikpOworICAgIHNpemUgPSBzaXplb2YoKihvbGRoYXNoKFNQX1BBUk0pKSkgKiAoc2l6ZV90KSAoYm90IC0gdG9wICsgMSAtIGFicyhuKSk7CiAgICAgaWYgKG4gPiAwKSB7Ci0JbWVtbW92ZShvbGRoYXNoICsgdG9wLCBvbGRoYXNoICsgdG9wICsgbiwgc2l6ZSk7CisJbWVtbW92ZShvbGRoYXNoKFNQX1BBUk0pICsgdG9wLCBvbGRoYXNoKFNQX1BBUk0pICsgdG9wICsgbiwgc2l6ZSk7CiAJZm9yIChpID0gYm90OyBpID4gYm90IC0gbjsgaS0tKQotCSAgICBvbGRoYXNoW2ldID0gaGFzaChPTERURVhUKGkpKTsKKwkgICAgb2xkaGFzaChTUF9QQVJNKVtpXSA9IGhhc2goU1BfUEFSTSwgT0xEVEVYVChTUF9QQVJNLCBpKSk7CiAgICAgfSBlbHNlIHsKLQltZW1tb3ZlKG9sZGhhc2ggKyB0b3AgLSBuLCBvbGRoYXNoICsgdG9wLCBzaXplKTsKKwltZW1tb3ZlKG9sZGhhc2goU1BfUEFSTSkgKyB0b3AgLSBuLCBvbGRoYXNoKFNQX1BBUk0pICsgdG9wLCBzaXplKTsKIAlmb3IgKGkgPSB0b3A7IGkgPCB0b3AgLSBuOyBpKyspCi0JICAgIG9sZGhhc2hbaV0gPSBoYXNoKE9MRFRFWFQoaSkpOworCSAgICBvbGRoYXNoKFNQX1BBUk0pW2ldID0gaGFzaChTUF9QQVJNLCBPTERURVhUKFNQX1BBUk0sIGkpKTsKICAgICB9CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX3Njcm9sbF9vbGRoYXNoKGludCBuLCBpbnQgdG9wLCBpbnQgYm90KQoreworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsX29sZGhhc2gpIChDVVJSRU5UX1NDUkVFTiwgbiwgdG9wLCBib3QpOworfQorI2VuZGlmCisKICNpZmRlZiBIQVNIREVCVUcKIHN0YXRpYyB2b2lkCiB1c2FnZSh2b2lkKQpAQCAtNDUxLDEzICs0OTQsMTMgQEAKIAlyZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICh2b2lkKSBfbmNfYWxsb2Nfc2NyZWVuKCk7CiAKLSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzOyBuKyspIHsKKyAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzKHNwKTsgbisrKSB7CiAJcmVhbGxpbmVzW25dID0gbjsKIAlvbGRudW1zW25dID0gX05FV0lOREVYOwogCUNoYXJPZihvbGR0ZXh0W25dWzBdKSA9IENoYXJPZihuZXd0ZXh0W25dWzBdKSA9ICcuJzsKICAgICB9CiAKLSAgICBpZiAoaXNhdHR5KGZpbGVubyhzdGRpbikpKQorICAgIGlmIChOQ19JU0FUVFkoZmlsZW5vKHN0ZGluKSkpCiAJdXNhZ2UoKTsKIAogI2lmZGVmIFRSQUNFCkBAIC00NzQsNyArNTE3LDcgQEAKIAkgICAgYnJlYWs7CiAKIAljYXNlICdsJzoJCS8qIGdldCBpbml0aWFsIGxpbmUgbnVtYmVyIHZlY3RvciAqLwotCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzOyBuKyspIHsKKwkgICAgZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lcyhzcCk7IG4rKykgewogCQlyZWFsbGluZXNbbl0gPSBuOwogCQlvbGRudW1zW25dID0gX05FV0lOREVYOwogCSAgICB9CkBAIC00ODcsOSArNTMwLDkgQEAKIAkgICAgYnJlYWs7CiAKIAljYXNlICduJzoJCS8qIHVzZSBmb2xsb3dpbmcgbGV0dGVycyBhcyB0ZXh0IG9mIG5ldyBsaW5lcyAqLwotCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzOyBuKyspCisJICAgIGZvciAobiA9IDA7IG4gPCBzY3JlZW5fbGluZXMoc3ApOyBuKyspCiAJCUNoYXJPZihuZXd0ZXh0W25dWzBdKSA9ICcuJzsKLQkgICAgZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lczsgbisrKQorCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzKHNwKTsgbisrKQogCQlpZiAobGluZVtuICsgMV0gPT0gJ1xuJykKIAkJICAgIGJyZWFrOwogCQllbHNlCkBAIC00OTcsOSArNTQwLDkgQEAKIAkgICAgYnJlYWs7CiAKIAljYXNlICdvJzoJCS8qIHVzZSBmb2xsb3dpbmcgbGV0dGVycyBhcyB0ZXh0IG9mIG9sZCBsaW5lcyAqLwotCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzOyBuKyspCisJICAgIGZvciAobiA9IDA7IG4gPCBzY3JlZW5fbGluZXMoc3ApOyBuKyspCiAJCUNoYXJPZihvbGR0ZXh0W25dWzBdKSA9ICcuJzsKLQkgICAgZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lczsgbisrKQorCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzKHNwKTsgbisrKQogCQlpZiAobGluZVtuICsgMV0gPT0gJ1xuJykKIAkJICAgIGJyZWFrOwogCQllbHNlCkBAIC01MTEsMTIgKzU1NCwxMiBAQAogCSAgICBfbmNfbGluZWR1bXAoKTsKICNlbmRpZgogCSAgICAodm9pZCkgZnB1dHMoIk9sZCBsaW5lczogWyIsIHN0ZG91dCk7Ci0JICAgIGZvciAobiA9IDA7IG4gPCBzY3JlZW5fbGluZXM7IG4rKykKKwkgICAgZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lcyhzcCk7IG4rKykKIAkJcHV0Y2hhcihDaGFyT2Yob2xkdGV4dFtuXVswXSkpOwogCSAgICBwdXRjaGFyKCddJyk7CiAJICAgIHB1dGNoYXIoJ1xuJyk7CiAJICAgICh2b2lkKSBmcHV0cygiTmV3IGxpbmVzOiBbIiwgc3Rkb3V0KTsKLQkgICAgZm9yIChuID0gMDsgbiA8IHNjcmVlbl9saW5lczsgbisrKQorCSAgICBmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2xpbmVzKHNwKTsgbisrKQogCQlwdXRjaGFyKENoYXJPZihuZXd0ZXh0W25dWzBdKSk7CiAJICAgIHB1dGNoYXIoJ10nKTsKIAkgICAgcHV0Y2hhcignXG4nKTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvdHR5L2xpYl9tdmN1ci5jIGIvbmN1cnNlcy90dHkvbGliX212Y3VyLmMKaW5kZXggOGU2NmZhMy4uMGIzMzAwYiAxMDA2NDQKLS0tIGEvbmN1cnNlcy90dHkvbGliX212Y3VyLmMKKysrIGIvbmN1cnNlcy90dHkvbGliX212Y3VyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCw2ICszMCw3IEBACiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5MiwxOTk1ICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOSAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0xMDksOCArMTEwLDggQEAKICAqIExPTkdfRElTVCBhbmQgKGIpIGZ1cnRoZXIgaW53YXJkIGZyb20gdGhlIHJpZ2h0IG9yIGxlZnQgZWRnZSB0aGFuIExPTkdfRElTVCwKICAqIHdlJ2xsIGNvbnNpZGVyIG5vbmxvY2FsLgogICovCi0jZGVmaW5lIE5PVF9MT0NBTChmeSwgZngsIHR5LCB0eCkJKCh0eCA+IExPTkdfRElTVCkgXAotIAkJICYmICh0eCA8IHNjcmVlbl9jb2x1bW5zIC0gMSAtIExPTkdfRElTVCkgXAorI2RlZmluZSBOT1RfTE9DQUwoc3AsIGZ5LCBmeCwgdHksIHR4KQkoKHR4ID4gTE9OR19ESVNUKSBcCisJCSAmJiAodHggPCBzY3JlZW5fY29sdW1ucyhzcCkgLSAxIC0gTE9OR19ESVNUKSBcCiAJCSAmJiAoYWJzKHR5LWZ5KSArIGFicyh0eC1meCkgPiBMT05HX0RJU1QpKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTUyLDEzICsxNTMsMjEgQEAKICAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9tdmN1ci5jLHYgMS4xMTMgMjAwOC8wOC8xNiAxOTozMDo1OCB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKIAotI2RlZmluZSBXQU5UX0NIQVIoeSwgeCkJU1AtPl9uZXdzY3ItPl9saW5lW3ldLnRleHRbeF0JLyogZGVzaXJlZCBzdGF0ZSAqLwotI2RlZmluZSBCQVVEUkFURQljdXJfdGVybS0+X2JhdWRyYXRlCS8qIGJpdHMgcGVyIHNlY29uZCAqLworTU9EVUxFX0lEKCIkSWQ6IGxpYl9tdmN1ci5jLHYgMS4xMzYgMjAxNS8wNy8yNSAyMDoxNDo1NyB0b20gRXhwICQiKQorCisjZGVmaW5lIFdBTlRfQ0hBUihzcCwgeSwgeCkgTmV3U2NyZWVuKHNwKS0+X2xpbmVbeV0udGV4dFt4XQkvKiBkZXNpcmVkIHN0YXRlICovCisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIEJBVURSQVRFKHNwKQlzcC0+X3Rlcm0tPl9iYXVkcmF0ZQkvKiBiaXRzIHBlciBzZWNvbmQgKi8KKyNlbHNlCisjZGVmaW5lIEJBVURSQVRFKHNwKQljdXJfdGVybS0+X2JhdWRyYXRlCS8qIGJpdHMgcGVyIHNlY29uZCAqLworI2VuZGlmCiAKICNpZiBkZWZpbmVkKE1BSU4pIHx8IGRlZmluZWQoTkNVUlNFU19URVNUKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CkBAIC0xNjcsOSArMTc2LDEyIEBACiBzdGF0aWMgZmxvYXQgZGlmZjsKICNlbmRpZiAvKiBNQUlOICovCiAKKyN1bmRlZiBOQ1VSU0VTX09VVENfRlVOQworI2RlZmluZSBOQ1VSU0VTX09VVENfRlVOQyBteU91dENoCisKICNkZWZpbmUgT1BUX1NJWkUgNTEyCiAKLXN0YXRpYyBpbnQgbm9ybWFsaXplZF9jb3N0KGNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgaW50IGFmZmNudCk7CitzdGF0aWMgaW50IG5vcm1hbGl6ZWRfY29zdChOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2hhciAqY29uc3QgY2FwLCBpbnQgYWZmY250KTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xNzksMzQgKzE5MSwzNCBAQAogCiAjaWZkZWYgVFJBQ0UKIHN0YXRpYyBpbnQKLXRyYWNlX2Nvc3Rfb2YoY29uc3QgY2hhciAqY2FwbmFtZSwgY29uc3QgY2hhciAqY2FwLCBpbnQgYWZmY250KQordHJhY2VfY29zdF9vZihOQ1VSU0VTX1NQX0RDTHggY29uc3QgY2hhciAqY2FwbmFtZSwgY29uc3QgY2hhciAqY2FwLCBpbnQgYWZmY250KQogewotICAgIGludCByZXN1bHQgPSBfbmNfbXNlY19jb3N0KGNhcCwgYWZmY250KTsKKyAgICBpbnQgcmVzdWx0ID0gTkNVUlNFU19TUF9OQU1FKF9uY19tc2VjX2Nvc3QpIChOQ1VSU0VTX1NQX0FSR3ggY2FwLCBhZmZjbnQpOwogICAgIFRSKFRSQUNFX0NIQVJQVVQgfCBUUkFDRV9NT1ZFLAogICAgICAgICgiQ29zdE9mICVzICVkICVzIiwgY2FwbmFtZSwgcmVzdWx0LCBfbmNfdmlzYnVmKGNhcCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2RlZmluZSBDb3N0T2YoY2FwLGFmZmNudCkgdHJhY2VfY29zdF9vZigjY2FwLGNhcCxhZmZjbnQpOworI2RlZmluZSBDb3N0T2YoY2FwLGFmZmNudCkgdHJhY2VfY29zdF9vZihOQ1VSU0VTX1NQX0FSR3ggI2NhcCwgY2FwLCBhZmZjbnQpCiAKIHN0YXRpYyBpbnQKLXRyYWNlX25vcm1hbGl6ZWRfY29zdChjb25zdCBjaGFyICpjYXBuYW1lLCBjb25zdCBjaGFyICpjYXAsIGludCBhZmZjbnQpCit0cmFjZV9ub3JtYWxpemVkX2Nvc3QoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IGNoYXIgKmNhcG5hbWUsIGNvbnN0IGNoYXIgKmNhcCwgaW50IGFmZmNudCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gbm9ybWFsaXplZF9jb3N0KGNhcCwgYWZmY250KTsKKyAgICBpbnQgcmVzdWx0ID0gbm9ybWFsaXplZF9jb3N0KE5DVVJTRVNfU1BfQVJHeCBjYXAsIGFmZmNudCk7CiAgICAgVFIoVFJBQ0VfQ0hBUlBVVCB8IFRSQUNFX01PVkUsCiAgICAgICAgKCJOb3JtYWxpemVkQ29zdCAlcyAlZCAlcyIsIGNhcG5hbWUsIHJlc3VsdCwgX25jX3Zpc2J1ZihjYXApKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNkZWZpbmUgTm9ybWFsaXplZENvc3QoY2FwLGFmZmNudCkgdHJhY2Vfbm9ybWFsaXplZF9jb3N0KCNjYXAsY2FwLGFmZmNudCk7CisjZGVmaW5lIE5vcm1hbGl6ZWRDb3N0KGNhcCxhZmZjbnQpIHRyYWNlX25vcm1hbGl6ZWRfY29zdChOQ1VSU0VTX1NQX0FSR3ggI2NhcCwgY2FwLCBhZmZjbnQpCiAKICNlbHNlCiAKLSNkZWZpbmUgQ29zdE9mKGNhcCxhZmZjbnQpIF9uY19tc2VjX2Nvc3QoY2FwLGFmZmNudCk7Ci0jZGVmaW5lIE5vcm1hbGl6ZWRDb3N0KGNhcCxhZmZjbnQpIG5vcm1hbGl6ZWRfY29zdChjYXAsYWZmY250KTsKKyNkZWZpbmUgQ29zdE9mKGNhcCxhZmZjbnQpIE5DVVJTRVNfU1BfTkFNRShfbmNfbXNlY19jb3N0KShOQ1VSU0VTX1NQX0FSR3ggY2FwLCBhZmZjbnQpCisjZGVmaW5lIE5vcm1hbGl6ZWRDb3N0KGNhcCxhZmZjbnQpIG5vcm1hbGl6ZWRfY29zdChOQ1VSU0VTX1NQX0FSR3ggY2FwLCBhZmZjbnQpCiAKICNlbmRpZgogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1fbmNfbXNlY19jb3N0KGNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgaW50IGFmZmNudCkKK05DVVJTRVNfU1BfTkFNRShfbmNfbXNlY19jb3N0KSAoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IGNoYXIgKmNvbnN0IGNhcCwgaW50IGFmZmNudCkKIC8qIGNvbXB1dGUgdGhlIGNvc3Qgb2YgYSBnaXZlbiBvcGVyYXRpb24gKi8KIHsKICAgICBpZiAoY2FwID09IDApCkBAIC0yMjIsNTMgKzIzNCw2NSBAQAogCiAJCWZvciAoY3AgKz0gMjsgKmNwICE9ICc+JzsgY3ArKykgewogCQkgICAgaWYgKGlzZGlnaXQoVUNoYXIoKmNwKSkpCi0JCQludW1iZXIgPSBudW1iZXIgKiAxMCArICgqY3AgLSAnMCcpOworCQkJbnVtYmVyID0gbnVtYmVyICogMTAgKyAoZmxvYXQpICgqY3AgLSAnMCcpOwogCQkgICAgZWxzZSBpZiAoKmNwID09ICcqJykKLQkJCW51bWJlciAqPSBhZmZjbnQ7CisJCQludW1iZXIgKj0gKGZsb2F0KSBhZmZjbnQ7CiAJCSAgICBlbHNlIGlmICgqY3AgPT0gJy4nICYmICgqKytjcCAhPSAnPicpICYmIGlzZGlnaXQoVUNoYXIoKmNwKSkpCi0JCQludW1iZXIgKz0gKCpjcCAtICcwJykgLyAxMC4wOworCQkJbnVtYmVyICs9IChmbG9hdCkgKCgqY3AgLSAnMCcpIC8gMTAuMCk7CiAJCX0KIAogI2lmIE5DVVJTRVNfTk9fUEFERElORwotCQlpZiAoIUdldE5vUGFkZGluZyhTUCkpCisJCWlmICghR2V0Tm9QYWRkaW5nKFNQX1BBUk0pKQogI2VuZGlmCiAJCSAgICBjdW1fY29zdCArPSBudW1iZXIgKiAxMDsKLQkgICAgfSBlbHNlCi0JCWN1bV9jb3N0ICs9IFNQLT5fY2hhcl9wYWRkaW5nOworCSAgICB9IGVsc2UgaWYgKFNQX1BBUk0pIHsKKwkJY3VtX2Nvc3QgKz0gKGZsb2F0KSBTUF9QQVJNLT5fY2hhcl9wYWRkaW5nOworCSAgICB9CiAJfQogCiAJcmV0dXJuICgoaW50KSBjdW1fY29zdCk7CiAgICAgfQogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQorX25jX21zZWNfY29zdChjb25zdCBjaGFyICpjb25zdCBjYXAsIGludCBhZmZjbnQpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfbXNlY19jb3N0KSAoQ1VSUkVOVF9TQ1JFRU4sIGNhcCwgYWZmY250KTsKK30KKyNlbmRpZgorCiBzdGF0aWMgaW50Ci1ub3JtYWxpemVkX2Nvc3QoY29uc3QgY2hhciAqY29uc3QgY2FwLCBpbnQgYWZmY250KQorbm9ybWFsaXplZF9jb3N0KE5DVVJTRVNfU1BfRENMeCBjb25zdCBjaGFyICpjb25zdCBjYXAsIGludCBhZmZjbnQpCiAvKiBjb21wdXRlIHRoZSBlZmZlY3RpdmUgY2hhcmFjdGVyLWNvdW50IGZvciBhbiBvcGVyYXRpb24gKHJvdW5kIHVwKSAqLwogewotICAgIGludCBjb3N0ID0gX25jX21zZWNfY29zdChjYXAsIGFmZmNudCk7CisgICAgaW50IGNvc3QgPSBOQ1VSU0VTX1NQX05BTUUoX25jX21zZWNfY29zdCkgKE5DVVJTRVNfU1BfQVJHeCBjYXAsIGFmZmNudCk7CiAgICAgaWYgKGNvc3QgIT0gSU5GSU5JVFkpCi0JY29zdCA9IChjb3N0ICsgU1AtPl9jaGFyX3BhZGRpbmcgLSAxKSAvIFNQLT5fY2hhcl9wYWRkaW5nOworCWNvc3QgPSAoY29zdCArIFNQX1BBUk0tPl9jaGFyX3BhZGRpbmcgLSAxKSAvIFNQX1BBUk0tPl9jaGFyX3BhZGRpbmc7CiAgICAgcmV0dXJuIGNvc3Q7CiB9CiAKIHN0YXRpYyB2b2lkCi1yZXNldF9zY3JvbGxfcmVnaW9uKHZvaWQpCityZXNldF9zY3JvbGxfcmVnaW9uKE5DVVJTRVNfU1BfRENMMCkKIC8qIFNldCB0aGUgc2Nyb2xsLXJlZ2lvbiB0byBhIGtub3duIHN0YXRlICh0aGUgZGVmYXVsdCkgKi8KIHsKICAgICBpZiAoY2hhbmdlX3Njcm9sbF9yZWdpb24pIHsKLQlUUFVUU19UUkFDRSgiY2hhbmdlX3Njcm9sbF9yZWdpb24iKTsKLQlwdXRwKFRQQVJNXzIoY2hhbmdlX3Njcm9sbF9yZWdpb24sIDAsIHNjcmVlbl9saW5lcyAtIDEpKTsKKwlOQ1VSU0VTX1BVVFAyKCJjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiIsCisJCSAgICAgIFRQQVJNXzIoY2hhbmdlX3Njcm9sbF9yZWdpb24sCisJCQkgICAgICAwLCBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSAxKSk7CiAgICAgfQogfQogCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX212Y3VyX3Jlc3VtZSh2b2lkKQorTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl9yZXN1bWUpIChOQ1VSU0VTX1NQX0RDTDApCiAvKiB3aGF0IHRvIGRvIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgYW5kIGFmdGVyIGVhY2ggc2hlbGxvdXQgKi8KIHsKKyAgICBpZiAoIVNQX1BBUk0gfHwgIUlzVGVybUluZm8oU1BfUEFSTSkpCisJcmV0dXJuOworCiAgICAgLyogaW5pdGlhbGl6ZSBzY3JlZW4gZm9yIGN1cnNvciBhY2Nlc3MgKi8KICAgICBpZiAoZW50ZXJfY2FfbW9kZSkgewotCVRQVVRTX1RSQUNFKCJlbnRlcl9jYV9tb2RlIik7Ci0JcHV0cChlbnRlcl9jYV9tb2RlKTsKKwlOQ1VSU0VTX1BVVFAyKCJlbnRlcl9jYV9tb2RlIiwgZW50ZXJfY2FfbW9kZSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTI4MCw1MyArMzA0LDY0IEBACiAgICAgICogdGhleSBrbm93IHRoZSBzY3JlZW4gc2l6ZS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91J3JlIHJ1bm5pbmcKICAgICAgKiBhIHZ0MTAwIGVtdWxhdGlvbiB0aHJvdWdoIHh0ZXJtLgogICAgICAqLwotICAgIHJlc2V0X3Njcm9sbF9yZWdpb24oKTsKLSAgICBTUC0+X2N1cnNyb3cgPSBTUC0+X2N1cnNjb2wgPSAtMTsKKyAgICByZXNldF9zY3JvbGxfcmVnaW9uKE5DVVJTRVNfU1BfQVJHKTsKKyAgICBTUF9QQVJNLT5fY3Vyc3JvdyA9IFNQX1BBUk0tPl9jdXJzY29sID0gLTE7CiAKICAgICAvKiByZXN0b3JlIGN1cnNvciBzaGFwZSAqLwotICAgIGlmIChTUC0+X2N1cnNvciAhPSAtMSkgewotCWludCBjdXJzb3IgPSBTUC0+X2N1cnNvcjsKLQlTUC0+X2N1cnNvciA9IC0xOwotCWN1cnNfc2V0KGN1cnNvcik7CisgICAgaWYgKFNQX1BBUk0tPl9jdXJzb3IgIT0gLTEpIHsKKwlpbnQgY3Vyc29yID0gU1BfUEFSTS0+X2N1cnNvcjsKKwlTUF9QQVJNLT5fY3Vyc29yID0gLTE7CisJTkNVUlNFU19TUF9OQU1FKGN1cnNfc2V0KSAoTkNVUlNFU19TUF9BUkd4IGN1cnNvcik7CiAgICAgfQogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19tdmN1cl9pbml0KHZvaWQpCitfbmNfbXZjdXJfcmVzdW1lKHZvaWQpCit7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl9yZXN1bWUpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXJfaW5pdCkgKE5DVVJTRVNfU1BfRENMMCkKIC8qIGluaXRpYWxpemUgdGhlIGNvc3Qgc3RydWN0dXJlICovCiB7Ci0gICAgaWYgKGlzYXR0eShmaWxlbm8oU1AtPl9vZnApKSkKLQlTUC0+X2NoYXJfcGFkZGluZyA9ICgoQkFVREJZVEUgKiAxMDAwICogMTApCi0JCQkgICAgIC8gKEJBVURSQVRFID4gMCA/IEJBVURSQVRFIDogOTYwMCkpOwotICAgIGVsc2UKLQlTUC0+X2NoYXJfcGFkZGluZyA9IDE7CS8qIG11c3QgYmUgbm9uemVybyAqLwotICAgIGlmIChTUC0+X2NoYXJfcGFkZGluZyA8PSAwKQotCVNQLT5fY2hhcl9wYWRkaW5nID0gMTsJLyogbXVzdCBiZSBub256ZXJvICovCi0gICAgVFIoVFJBQ0VfQ0hBUlBVVCB8IFRSQUNFX01PVkUsICgiY2hhcl9wYWRkaW5nICVkIG1zZWNzIiwgU1AtPl9jaGFyX3BhZGRpbmcpKTsKKyAgICBpZiAoU1BfUEFSTS0+X29mcCAmJiBOQ19JU0FUVFkoZmlsZW5vKFNQX1BBUk0tPl9vZnApKSkgeworCVNQX1BBUk0tPl9jaGFyX3BhZGRpbmcgPSAoKEJBVURCWVRFICogMTAwMCAqIDEwKQorCQkJCSAgLyAoQkFVRFJBVEUoU1BfUEFSTSkgPiAwCisJCQkJICAgICA/IEJBVURSQVRFKFNQX1BBUk0pCisJCQkJICAgICA6IDk2MDApKTsKKyAgICB9IGVsc2UgeworCVNQX1BBUk0tPl9jaGFyX3BhZGRpbmcgPSAxOwkvKiBtdXN0IGJlIG5vbnplcm8gKi8KKyAgICB9CisgICAgaWYgKFNQX1BBUk0tPl9jaGFyX3BhZGRpbmcgPD0gMCkKKwlTUF9QQVJNLT5fY2hhcl9wYWRkaW5nID0gMTsJLyogbXVzdCBiZSBub256ZXJvICovCisgICAgVFIoVFJBQ0VfQ0hBUlBVVCB8IFRSQUNFX01PVkUsICgiY2hhcl9wYWRkaW5nICVkIG1zZWNzIiwgU1BfUEFSTS0+X2NoYXJfcGFkZGluZykpOwogCiAgICAgLyogbm9uLXBhcmFtZXRlcml6ZWQgbG9jYWwtbW90aW9uIHN0cmluZ3MgKi8KLSAgICBTUC0+X2NyX2Nvc3QgPSBDb3N0T2YoY2FycmlhZ2VfcmV0dXJuLCAwKTsKLSAgICBTUC0+X2hvbWVfY29zdCA9IENvc3RPZihjdXJzb3JfaG9tZSwgMCk7Ci0gICAgU1AtPl9sbF9jb3N0ID0gQ29zdE9mKGN1cnNvcl90b19sbCwgMCk7CisgICAgU1BfUEFSTS0+X2NyX2Nvc3QgPSBDb3N0T2YoY2FycmlhZ2VfcmV0dXJuLCAwKTsKKyAgICBTUF9QQVJNLT5faG9tZV9jb3N0ID0gQ29zdE9mKGN1cnNvcl9ob21lLCAwKTsKKyAgICBTUF9QQVJNLT5fbGxfY29zdCA9IENvc3RPZihjdXJzb3JfdG9fbGwsIDApOwogI2lmIFVTRV9IQVJEX1RBQlMKICAgICBpZiAoZ2V0ZW52KCJOQ1VSU0VTX05PX0hBUkRfVEFCUyIpID09IDApIHsKLQlTUC0+X2h0X2Nvc3QgPSBDb3N0T2YodGFiLCAwKTsKLQlTUC0+X2NidF9jb3N0ID0gQ29zdE9mKGJhY2tfdGFiLCAwKTsKKwlTUF9QQVJNLT5faHRfY29zdCA9IENvc3RPZih0YWIsIDApOworCVNQX1BBUk0tPl9jYnRfY29zdCA9IENvc3RPZihiYWNrX3RhYiwgMCk7CiAgICAgfSBlbHNlIHsKLQlTUC0+X2h0X2Nvc3QgPSBJTkZJTklUWTsKLQlTUC0+X2NidF9jb3N0ID0gSU5GSU5JVFk7CisJU1BfUEFSTS0+X2h0X2Nvc3QgPSBJTkZJTklUWTsKKwlTUF9QQVJNLT5fY2J0X2Nvc3QgPSBJTkZJTklUWTsKICAgICB9CiAjZW5kaWYgLyogVVNFX0hBUkRfVEFCUyAqLwotICAgIFNQLT5fY3ViMV9jb3N0ID0gQ29zdE9mKGN1cnNvcl9sZWZ0LCAwKTsKLSAgICBTUC0+X2N1ZjFfY29zdCA9IENvc3RPZihjdXJzb3JfcmlnaHQsIDApOwotICAgIFNQLT5fY3VkMV9jb3N0ID0gQ29zdE9mKGN1cnNvcl9kb3duLCAwKTsKLSAgICBTUC0+X2N1dTFfY29zdCA9IENvc3RPZihjdXJzb3JfdXAsIDApOworICAgIFNQX1BBUk0tPl9jdWIxX2Nvc3QgPSBDb3N0T2YoY3Vyc29yX2xlZnQsIDApOworICAgIFNQX1BBUk0tPl9jdWYxX2Nvc3QgPSBDb3N0T2YoY3Vyc29yX3JpZ2h0LCAwKTsKKyAgICBTUF9QQVJNLT5fY3VkMV9jb3N0ID0gQ29zdE9mKGN1cnNvcl9kb3duLCAwKTsKKyAgICBTUF9QQVJNLT5fY3V1MV9jb3N0ID0gQ29zdE9mKGN1cnNvcl91cCwgMCk7CiAKLSAgICBTUC0+X3NtaXJfY29zdCA9IENvc3RPZihlbnRlcl9pbnNlcnRfbW9kZSwgMCk7Ci0gICAgU1AtPl9ybWlyX2Nvc3QgPSBDb3N0T2YoZXhpdF9pbnNlcnRfbW9kZSwgMCk7Ci0gICAgU1AtPl9pcF9jb3N0ID0gMDsKKyAgICBTUF9QQVJNLT5fc21pcl9jb3N0ID0gQ29zdE9mKGVudGVyX2luc2VydF9tb2RlLCAwKTsKKyAgICBTUF9QQVJNLT5fcm1pcl9jb3N0ID0gQ29zdE9mKGV4aXRfaW5zZXJ0X21vZGUsIDApOworICAgIFNQX1BBUk0tPl9pcF9jb3N0ID0gMDsKICAgICBpZiAoaW5zZXJ0X3BhZGRpbmcpIHsKLQlTUC0+X2lwX2Nvc3QgPSBDb3N0T2YoaW5zZXJ0X3BhZGRpbmcsIDApOworCVNQX1BBUk0tPl9pcF9jb3N0ID0gQ29zdE9mKGluc2VydF9wYWRkaW5nLCAwKTsKICAgICB9CiAKICAgICAvKgpAQCAtMzM1LDcgKzM3MCw3IEBACiAgICAgICogY2FuIHRyZWF0IGl0IGxpa2UgYWJzb2x1dGUgc2NyZWVuIGFkZHJlc3NpbmcuICBUaGlzIHNlZW1zIHRvIGJlIHRydWUKICAgICAgKiBmb3IgYWxsIGN1cnNvcl9tZW1fYWRkcmVzcyB0ZXJtaW5hbCB0eXBlcyBpbiB0aGUgdGVybWluZm8gZGF0YWJhc2UuCiAgICAgICovCi0gICAgU1AtPl9hZGRyZXNzX2N1cnNvciA9IGN1cnNvcl9hZGRyZXNzID8gY3Vyc29yX2FkZHJlc3MgOiBjdXJzb3JfbWVtX2FkZHJlc3M7CisgICAgU1BfUEFSTS0+X2FkZHJlc3NfY3Vyc29yID0gY3Vyc29yX2FkZHJlc3MgPyBjdXJzb3JfYWRkcmVzcyA6IGN1cnNvcl9tZW1fYWRkcmVzczsKIAogICAgIC8qCiAgICAgICogUGFyYW1ldHJpemVkIGxvY2FsLW1vdGlvbiBzdHJpbmdzLiAgVGhpcyBzdGF0aWMgY29zdCBjb21wdXRhdGlvbgpAQCAtMzYxLDQwICszOTYsNDMgQEAKICAgICAgKiBBbGwgdGhlc2UgYXZlcmFnZXMgZGVwZW5kIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYWxsIHBhcmFtZXRlciB2YWx1ZXMKICAgICAgKiBhcmUgZXF1YWxseSBwcm9iYWJsZS4KICAgICAgKi8KLSAgICBTUC0+X2N1cF9jb3N0ID0gQ29zdE9mKFRQQVJNXzIoU1AtPl9hZGRyZXNzX2N1cnNvciwgMjMsIDIzKSwgMSk7Ci0gICAgU1AtPl9jdWJfY29zdCA9IENvc3RPZihUUEFSTV8xKHBhcm1fbGVmdF9jdXJzb3IsIDIzKSwgMSk7Ci0gICAgU1AtPl9jdWZfY29zdCA9IENvc3RPZihUUEFSTV8xKHBhcm1fcmlnaHRfY3Vyc29yLCAyMyksIDEpOwotICAgIFNQLT5fY3VkX2Nvc3QgPSBDb3N0T2YoVFBBUk1fMShwYXJtX2Rvd25fY3Vyc29yLCAyMyksIDEpOwotICAgIFNQLT5fY3V1X2Nvc3QgPSBDb3N0T2YoVFBBUk1fMShwYXJtX3VwX2N1cnNvciwgMjMpLCAxKTsKLSAgICBTUC0+X2hwYV9jb3N0ID0gQ29zdE9mKFRQQVJNXzEoY29sdW1uX2FkZHJlc3MsIDIzKSwgMSk7Ci0gICAgU1AtPl92cGFfY29zdCA9IENvc3RPZihUUEFSTV8xKHJvd19hZGRyZXNzLCAyMyksIDEpOworICAgIFNQX1BBUk0tPl9jdXBfY29zdCA9IENvc3RPZihUUEFSTV8yKFNQX1BBUk0tPl9hZGRyZXNzX2N1cnNvciwgMjMsIDIzKSwgMSk7CisgICAgU1BfUEFSTS0+X2N1Yl9jb3N0ID0gQ29zdE9mKFRQQVJNXzEocGFybV9sZWZ0X2N1cnNvciwgMjMpLCAxKTsKKyAgICBTUF9QQVJNLT5fY3VmX2Nvc3QgPSBDb3N0T2YoVFBBUk1fMShwYXJtX3JpZ2h0X2N1cnNvciwgMjMpLCAxKTsKKyAgICBTUF9QQVJNLT5fY3VkX2Nvc3QgPSBDb3N0T2YoVFBBUk1fMShwYXJtX2Rvd25fY3Vyc29yLCAyMyksIDEpOworICAgIFNQX1BBUk0tPl9jdXVfY29zdCA9IENvc3RPZihUUEFSTV8xKHBhcm1fdXBfY3Vyc29yLCAyMyksIDEpOworICAgIFNQX1BBUk0tPl9ocGFfY29zdCA9IENvc3RPZihUUEFSTV8xKGNvbHVtbl9hZGRyZXNzLCAyMyksIDEpOworICAgIFNQX1BBUk0tPl92cGFfY29zdCA9IENvc3RPZihUUEFSTV8xKHJvd19hZGRyZXNzLCAyMyksIDEpOwogCiAgICAgLyogbm9uLXBhcmFtZXRlcml6ZWQgc2NyZWVuLXVwZGF0ZSBzdHJpbmdzICovCi0gICAgU1AtPl9lZF9jb3N0ID0gTm9ybWFsaXplZENvc3QoY2xyX2VvcywgMSk7Ci0gICAgU1AtPl9lbF9jb3N0ID0gTm9ybWFsaXplZENvc3QoY2xyX2VvbCwgMSk7Ci0gICAgU1AtPl9lbDFfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KGNscl9ib2wsIDEpOwotICAgIFNQLT5fZGNoMV9jb3N0ID0gTm9ybWFsaXplZENvc3QoZGVsZXRlX2NoYXJhY3RlciwgMSk7Ci0gICAgU1AtPl9pY2gxX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChpbnNlcnRfY2hhcmFjdGVyLCAxKTsKKyAgICBTUF9QQVJNLT5fZWRfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KGNscl9lb3MsIDEpOworICAgIFNQX1BBUk0tPl9lbF9jb3N0ID0gTm9ybWFsaXplZENvc3QoY2xyX2VvbCwgMSk7CisgICAgU1BfUEFSTS0+X2VsMV9jb3N0ID0gTm9ybWFsaXplZENvc3QoY2xyX2JvbCwgMSk7CisgICAgU1BfUEFSTS0+X2RjaDFfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KGRlbGV0ZV9jaGFyYWN0ZXIsIDEpOworICAgIFNQX1BBUk0tPl9pY2gxX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChpbnNlcnRfY2hhcmFjdGVyLCAxKTsKIAogICAgIC8qCiAgICAgICogSWYgdGhpcyBpcyBhIGJjZS10ZXJtaW5hbCwgd2Ugd2FudCB0byBiaWFzIHRoZSBjaG9pY2Ugc28gd2UgdXNlIGNscl9lb2wKICAgICAgKiByYXRoZXIgdGhhbiBzcGFjZXMgYXQgdGhlIGVuZCBvZiBhIGxpbmUuCiAgICAgICovCiAgICAgaWYgKGJhY2tfY29sb3JfZXJhc2UpCi0JU1AtPl9lbF9jb3N0ID0gMDsKKwlTUF9QQVJNLT5fZWxfY29zdCA9IDA7CiAKICAgICAvKiBwYXJhbWV0ZXJpemVkIHNjcmVlbi11cGRhdGUgc3RyaW5ncyAqLwotICAgIFNQLT5fZGNoX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChUUEFSTV8xKHBhcm1fZGNoLCAyMyksIDEpOwotICAgIFNQLT5faWNoX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChUUEFSTV8xKHBhcm1faWNoLCAyMyksIDEpOwotICAgIFNQLT5fZWNoX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChUUEFSTV8xKGVyYXNlX2NoYXJzLCAyMyksIDEpOwotICAgIFNQLT5fcmVwX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChUUEFSTV8yKHJlcGVhdF9jaGFyLCAnICcsIDIzKSwgMSk7CisgICAgU1BfUEFSTS0+X2RjaF9jb3N0ID0gTm9ybWFsaXplZENvc3QoVFBBUk1fMShwYXJtX2RjaCwgMjMpLCAxKTsKKyAgICBTUF9QQVJNLT5faWNoX2Nvc3QgPSBOb3JtYWxpemVkQ29zdChUUEFSTV8xKHBhcm1faWNoLCAyMyksIDEpOworICAgIFNQX1BBUk0tPl9lY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KFRQQVJNXzEoZXJhc2VfY2hhcnMsIDIzKSwgMSk7CisgICAgU1BfUEFSTS0+X3JlcF9jb3N0ID0gTm9ybWFsaXplZENvc3QoVFBBUk1fMihyZXBlYXRfY2hhciwgJyAnLCAyMyksIDEpOwogCi0gICAgU1AtPl9jdXBfY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KFRQQVJNXzIoU1AtPl9hZGRyZXNzX2N1cnNvciwgMjMsIDIzKSwgMSk7Ci0gICAgU1AtPl9ocGFfY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KFRQQVJNXzEoY29sdW1uX2FkZHJlc3MsIDIzKSwgMSk7Ci0gICAgU1AtPl9jdWZfY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KFRQQVJNXzEocGFybV9yaWdodF9jdXJzb3IsIDIzKSwgMSk7Ci0gICAgU1AtPl9pbmxpbmVfY29zdCA9IG1pbihTUC0+X2N1cF9jaF9jb3N0LAotCQkJICAgbWluKFNQLT5faHBhX2NoX2Nvc3QsCi0JCQkgICAgICAgU1AtPl9jdWZfY2hfY29zdCkpOworICAgIFNQX1BBUk0tPl9jdXBfY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KAorCQkJCQkgICAgICBUUEFSTV8yKFNQX1BBUk0tPl9hZGRyZXNzX2N1cnNvciwKKwkJCQkJCSAgICAgIDIzLCAyMyksCisJCQkJCSAgICAgIDEpOworICAgIFNQX1BBUk0tPl9ocGFfY2hfY29zdCA9IE5vcm1hbGl6ZWRDb3N0KFRQQVJNXzEoY29sdW1uX2FkZHJlc3MsIDIzKSwgMSk7CisgICAgU1BfUEFSTS0+X2N1Zl9jaF9jb3N0ID0gTm9ybWFsaXplZENvc3QoVFBBUk1fMShwYXJtX3JpZ2h0X2N1cnNvciwgMjMpLCAxKTsKKyAgICBTUF9QQVJNLT5faW5saW5lX2Nvc3QgPSBtaW4oU1BfUEFSTS0+X2N1cF9jaF9jb3N0LAorCQkJCW1pbihTUF9QQVJNLT5faHBhX2NoX2Nvc3QsCisJCQkJICAgIFNQX1BBUk0tPl9jdWZfY2hfY29zdCkpOwogCiAgICAgLyoKICAgICAgKiBJZiBzYXZlX2N1cnNvciBpcyB1c2VkIHdpdGhpbiBlbnRlcl9jYV9tb2RlLCB3ZSBzaG91bGQgbm90IHVzZSBpdCBmb3IKQEAgLTQxMSwzMCArNDQ5LDQwIEBACiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBBIGRpZmZlcmVudCwgcG9zc2libHkgYmV0dGVyIHdheSB0byBhcnJhbmdlIHRoaXMgd291bGQgYmUgdG8gc2V0Ci0gICAgICogU1AtPl9lbmR3aW4gPSBUUlVFIGF0IHdpbmRvdyBpbml0aWFsaXphdGlvbiB0aW1lIGFuZCBsZXQgdGhpcyBiZQorICAgICAqIEEgZGlmZmVyZW50LCBwb3NzaWJseSBiZXR0ZXIgd2F5IHRvIGFycmFuZ2UgdGhpcyB3b3VsZCBiZSB0byBzZXQgdGhlCisgICAgICogU0NSRUVOJ3MgX2VuZHdpbiB0byBUUlVFIGF0IHdpbmRvdyBpbml0aWFsaXphdGlvbiB0aW1lIGFuZCBsZXQgdGhpcyBiZQogICAgICAqIGNhbGxlZCBieSBkb3VwZGF0ZSdzIHJldHVybi1mcm9tLXNoZWxsb3V0IGNvZGUuCiAgICAgICovCi0gICAgX25jX212Y3VyX3Jlc3VtZSgpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXJfcmVzdW1lKSAoTkNVUlNFU19TUF9BUkcpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19tdmN1cl93cmFwKHZvaWQpCitfbmNfbXZjdXJfaW5pdCh2b2lkKQoreworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXJfaW5pdCkgKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl93cmFwKSAoTkNVUlNFU19TUF9EQ0wwKQogLyogd3JhcCB1cCBjdXJzb3ItYWRkcmVzc2luZyBtb2RlICovCiB7CiAgICAgLyogbGVhdmUgY3Vyc29yIGF0IHNjcmVlbiBib3R0b20gKi8KLSAgICBtdmN1cigtMSwgLTEsIHNjcmVlbl9saW5lcyAtIDEsIDApOworICAgIFRJTkZPX01WQ1VSKE5DVVJTRVNfU1BfQVJHeCAtMSwgLTEsIHNjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDEsIDApOworCisgICAgaWYgKCFTUF9QQVJNIHx8ICFJc1Rlcm1JbmZvKFNQX1BBUk0pKQorCXJldHVybjsKIAogICAgIC8qIHNldCBjdXJzb3IgdG8gbm9ybWFsIG1vZGUgKi8KLSAgICBpZiAoU1AtPl9jdXJzb3IgIT0gLTEpIHsKLQlpbnQgY3Vyc29yID0gU1AtPl9jdXJzb3I7Ci0JY3Vyc19zZXQoMSk7Ci0JU1AtPl9jdXJzb3IgPSBjdXJzb3I7CisgICAgaWYgKFNQX1BBUk0tPl9jdXJzb3IgIT0gLTEpIHsKKwlpbnQgY3Vyc29yID0gU1BfUEFSTS0+X2N1cnNvcjsKKwlOQ1VSU0VTX1NQX05BTUUoY3Vyc19zZXQpIChOQ1VSU0VTX1NQX0FSR3ggMSk7CisJU1BfUEFSTS0+X2N1cnNvciA9IGN1cnNvcjsKICAgICB9CiAKICAgICBpZiAoZXhpdF9jYV9tb2RlKSB7Ci0JVFBVVFNfVFJBQ0UoImV4aXRfY2FfbW9kZSIpOwotCXB1dHAoZXhpdF9jYV9tb2RlKTsKKwlOQ1VSU0VTX1BVVFAyKCJleGl0X2NhX21vZGUiLCBleGl0X2NhX21vZGUpOwogICAgIH0KICAgICAvKgogICAgICAqIFJlc2V0IHRlcm1pbmFsJ3MgdGFiIGNvdW50ZXIuICBUaGVyZSdzIGEgbG9uZy10aW1lIGJ1ZyB0aGF0CkBAIC00NDQsOSArNDkyLDE3IEBACiAgICAgICogZXNjYXBlIHNlcXVlbmNlcyB0aGF0IHJlc2V0IHRoaW5ncyBhcyBjb2x1bW4gcG9zaXRpb25zLgogICAgICAqIFV0dGVyIGEgXHIgdG8gcmVzZXQgdGhpcyBpbnZpc2libHkuCiAgICAgICovCi0gICAgX25jX291dGNoKCdccicpOworICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpIChOQ1VSU0VTX1NQX0FSR3ggJ1xyJyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX212Y3VyX3dyYXAodm9pZCkKK3sKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyX3dyYXApIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBPcHRpbWl6ZWQgY3Vyc29yIG1vdmVtZW50CkBAIC00NTksNyArNTE1LDcgQEAKIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBpbnQKIHJlcGVhdGVkX2FwcGVuZChzdHJpbmdfZGVzYyAqIHRhcmdldCwgaW50IHRvdGFsLCBpbnQgbnVtLCBpbnQgcmVwZWF0LCBjb25zdCBjaGFyICpzcmMpCiB7Ci0gICAgc2l6ZV90IG5lZWQgPSByZXBlYXQgKiBzdHJsZW4oc3JjKTsKKyAgICBzaXplX3QgbmVlZCA9IChzaXplX3QpIHJlcGVhdCAqIHN0cmxlbihzcmMpOwogCiAgICAgaWYgKG5lZWQgPCB0YXJnZXQtPnNfc2l6ZSkgewogCXdoaWxlIChyZXBlYXQtLSA+IDApIHsKQEAgLTQ4Niw4ICs1NDIsMTMgQEAKICNkZWZpbmUgTEFTVFRBQihmcikJKChmciA+IDApID8gKChmciAtIDEpIC8gaW5pdF90YWJzKSAqIGluaXRfdGFicyA6IC0xKQogCiBzdGF0aWMgaW50Ci1yZWxhdGl2ZV9tb3ZlKHN0cmluZ19kZXNjICogdGFyZ2V0LCBpbnQgZnJvbV95LCBpbnQgZnJvbV94LCBpbnQgdG9feSwgaW50Ci0JICAgICAgdG9feCwgYm9vbCBvdncpCityZWxhdGl2ZV9tb3ZlKE5DVVJTRVNfU1BfRENMeAorCSAgICAgIHN0cmluZ19kZXNjICogdGFyZ2V0LAorCSAgICAgIGludCBmcm9tX3ksCisJICAgICAgaW50IGZyb21feCwKKwkgICAgICBpbnQgdG9feSwKKwkgICAgICBpbnQgdG9feCwKKwkgICAgICBpbnQgb3Z3KQogLyogbW92ZSB2aWEgbG9jYWwgbW90aW9ucyAoY3V1L2N1dTEvY3VkL2N1ZDEvY3ViMS9jdWIvY3VmMS9jdWYvdnBhL2hwYSkgKi8KIHsKICAgICBzdHJpbmdfZGVzYyBzYXZlOwpAQCAtNTAwLDM4ICs1NjEsMzggQEAKIAogCWlmIChyb3dfYWRkcmVzcyAhPSAwCiAJICAgICYmIF9uY19zYWZlX3N0cmNhdCh0YXJnZXQsIFRQQVJNXzEocm93X2FkZHJlc3MsIHRvX3kpKSkgewotCSAgICB2Y29zdCA9IFNQLT5fdnBhX2Nvc3Q7CisJICAgIHZjb3N0ID0gU1BfUEFSTS0+X3ZwYV9jb3N0OwogCX0KIAogCWlmICh0b195ID4gZnJvbV95KSB7CiAJICAgIG4gPSAodG9feSAtIGZyb21feSk7CiAKIAkgICAgaWYgKHBhcm1fZG93bl9jdXJzb3IKLQkJJiYgU1AtPl9jdWRfY29zdCA8IHZjb3N0CisJCSYmIFNQX1BBUk0tPl9jdWRfY29zdCA8IHZjb3N0CiAJCSYmIF9uY19zYWZlX3N0cmNhdChfbmNfc3RyX2NvcHkodGFyZ2V0LCAmc2F2ZSksCiAJCQkJICAgVFBBUk1fMShwYXJtX2Rvd25fY3Vyc29yLCBuKSkpIHsKLQkJdmNvc3QgPSBTUC0+X2N1ZF9jb3N0OworCQl2Y29zdCA9IFNQX1BBUk0tPl9jdWRfY29zdDsKIAkgICAgfQogCiAJICAgIGlmIChjdXJzb3JfZG93bgotCQkmJiAoKmN1cnNvcl9kb3duICE9ICdcbicgfHwgU1AtPl9ubCkKLQkJJiYgKG4gKiBTUC0+X2N1ZDFfY29zdCA8IHZjb3N0KSkgeworCQkmJiAoKmN1cnNvcl9kb3duICE9ICdcbicgfHwgU1BfUEFSTS0+X25sKQorCQkmJiAobiAqIFNQX1BBUk0tPl9jdWQxX2Nvc3QgPCB2Y29zdCkpIHsKIAkJdmNvc3QgPSByZXBlYXRlZF9hcHBlbmQoX25jX3N0cl9jb3B5KHRhcmdldCwgJnNhdmUpLCAwLAotCQkJCQlTUC0+X2N1ZDFfY29zdCwgbiwgY3Vyc29yX2Rvd24pOworCQkJCQlTUF9QQVJNLT5fY3VkMV9jb3N0LCBuLCBjdXJzb3JfZG93bik7CiAJICAgIH0KIAl9IGVsc2UgewkJLyogKHRvX3kgPCBmcm9tX3kpICovCiAJICAgIG4gPSAoZnJvbV95IC0gdG9feSk7CiAKIAkgICAgaWYgKHBhcm1fdXBfY3Vyc29yCi0JCSYmIFNQLT5fY3V1X2Nvc3QgPCB2Y29zdAorCQkmJiBTUF9QQVJNLT5fY3V1X2Nvc3QgPCB2Y29zdAogCQkmJiBfbmNfc2FmZV9zdHJjYXQoX25jX3N0cl9jb3B5KHRhcmdldCwgJnNhdmUpLAogCQkJCSAgIFRQQVJNXzEocGFybV91cF9jdXJzb3IsIG4pKSkgewotCQl2Y29zdCA9IFNQLT5fY3V1X2Nvc3Q7CisJCXZjb3N0ID0gU1BfUEFSTS0+X2N1dV9jb3N0OwogCSAgICB9CiAKLQkgICAgaWYgKGN1cnNvcl91cCAmJiAobiAqIFNQLT5fY3V1MV9jb3N0IDwgdmNvc3QpKSB7CisJICAgIGlmIChjdXJzb3JfdXAgJiYgKG4gKiBTUF9QQVJNLT5fY3V1MV9jb3N0IDwgdmNvc3QpKSB7CiAJCXZjb3N0ID0gcmVwZWF0ZWRfYXBwZW5kKF9uY19zdHJfY29weSh0YXJnZXQsICZzYXZlKSwgMCwKLQkJCQkJU1AtPl9jdXUxX2Nvc3QsIG4sIGN1cnNvcl91cCk7CisJCQkJCVNQX1BBUk0tPl9jdXUxX2Nvc3QsIG4sIGN1cnNvcl91cCk7CiAJICAgIH0KIAl9CiAKQEAgLTU1MCwxNyArNjExLDE3IEBACiAJaWYgKGNvbHVtbl9hZGRyZXNzCiAJICAgICYmIF9uY19zYWZlX3N0cmNhdChfbmNfc3RyX2NvcHkodGFyZ2V0LCAmc2F2ZSksCiAJCQkgICAgICAgVFBBUk1fMShjb2x1bW5fYWRkcmVzcywgdG9feCkpKSB7Ci0JICAgIGhjb3N0ID0gU1AtPl9ocGFfY29zdDsKKwkgICAgaGNvc3QgPSBTUF9QQVJNLT5faHBhX2Nvc3Q7CiAJfQogCiAJaWYgKHRvX3ggPiBmcm9tX3gpIHsKIAkgICAgbiA9IHRvX3ggLSBmcm9tX3g7CiAKIAkgICAgaWYgKHBhcm1fcmlnaHRfY3Vyc29yCi0JCSYmIFNQLT5fY3VmX2Nvc3QgPCBoY29zdAorCQkmJiBTUF9QQVJNLT5fY3VmX2Nvc3QgPCBoY29zdAogCQkmJiBfbmNfc2FmZV9zdHJjYXQoX25jX3N0cl9jb3B5KHRhcmdldCwgJnNhdmUpLAogCQkJCSAgIFRQQVJNXzEocGFybV9yaWdodF9jdXJzb3IsIG4pKSkgewotCQloY29zdCA9IFNQLT5fY3VmX2Nvc3Q7CisJCWhjb3N0ID0gU1BfUEFSTS0+X2N1Zl9jb3N0OwogCSAgICB9CiAKIAkgICAgaWYgKGN1cnNvcl9yaWdodCkgewpAQCAtNTc1LDcgKzYzNiw3IEBACiAKIAkJICAgIGZvciAoZnIgPSBmcm9tX3g7IChueHQgPSBORVhUVEFCKGZyKSkgPD0gdG9feDsgZnIgPSBueHQpIHsKIAkJCWxoY29zdCA9IHJlcGVhdGVkX2FwcGVuZCgmY2hlY2ssIGxoY29zdCwKLQkJCQkJCSBTUC0+X2h0X2Nvc3QsIDEsIHRhYik7CisJCQkJCQkgU1BfUEFSTS0+X2h0X2Nvc3QsIDEsIHRhYik7CiAJCQlpZiAobGhjb3N0ID09IElORklOSVRZKQogCQkJICAgIGJyZWFrOwogCQkgICAgfQpAQCAtNTk5LDcgKzY2MCw3IEBACiAJCSAgICAmJiBuIDwgKGludCkgY2hlY2suc19zaXplCiAJCSAgICAmJiB2Y29zdCA9PSAwCiAJCSAgICAmJiBzdHJbMF0gPT0gJ1wwJykgewotCQkgICAgaW50IHdhbnRlZCA9IENoYXJPZihXQU5UX0NIQVIodG9feSwgZnJvbV94KSk7CisJCSAgICBpbnQgd2FudGVkID0gQ2hhck9mKFdBTlRfQ0hBUihTUF9QQVJNLCB0b195LCBmcm9tX3gpKTsKIAkJICAgIGlmIChpczhiaXRzKHdhbnRlZCkgJiYgaXNkaWdpdCh3YW50ZWQpKQogCQkJb3Z3ID0gRkFMU0U7CiAJCX0KQEAgLTYxNiw4ICs2NzcsOCBAQAogCQkgICAgaW50IGk7CiAKIAkJICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJCU5DVVJTRVNfQ0hfVCBjaCA9IFdBTlRfQ0hBUih0b195LCBmcm9tX3ggKyBpKTsKLQkJCWlmICghU2FtZUF0dHJPZihjaCwgU0NSRUVOX0FUVFJTKFNQKSkKKwkJCU5DVVJTRVNfQ0hfVCBjaCA9IFdBTlRfQ0hBUihTUF9QQVJNLCB0b195LCBmcm9tX3ggKyBpKTsKKwkJCWlmICghU2FtZUF0dHJPZihjaCwgU0NSRUVOX0FUVFJTKFNQX1BBUk0pKQogI2lmIFVTRV9XSURFQ19TVVBQT1JUCiAJCQkgICAgfHwgIUNoYXJhYmxlKGNoKQogI2VuZGlmCkBAIC02MzEsMTMgKzY5MiwxMyBAQAogCQkgICAgaW50IGk7CiAKIAkJICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0JCQkqY2hlY2suc190YWlsKysgPSAoY2hhcikgQ2hhck9mKFdBTlRfQ0hBUih0b195LAorCQkJKmNoZWNrLnNfdGFpbCsrID0gKGNoYXIpIENoYXJPZihXQU5UX0NIQVIoU1BfUEFSTSwgdG9feSwKIAkJCQkJCQkJICBmcm9tX3ggKyBpKSk7CiAJCSAgICAqY2hlY2suc190YWlsID0gJ1wwJzsKLQkJICAgIGNoZWNrLnNfc2l6ZSAtPSBuOwotCQkgICAgbGhjb3N0ICs9IG4gKiBTUC0+X2NoYXJfcGFkZGluZzsKKwkJICAgIGNoZWNrLnNfc2l6ZSAtPSAoc2l6ZV90KSBuOworCQkgICAgbGhjb3N0ICs9IG4gKiBTUF9QQVJNLT5fY2hhcl9wYWRkaW5nOwogCQl9IGVsc2UgewotCQkgICAgbGhjb3N0ID0gcmVwZWF0ZWRfYXBwZW5kKCZjaGVjaywgbGhjb3N0LCBTUC0+X2N1ZjFfY29zdCwKKwkJICAgIGxoY29zdCA9IHJlcGVhdGVkX2FwcGVuZCgmY2hlY2ssIGxoY29zdCwgU1BfUEFSTS0+X2N1ZjFfY29zdCwKIAkJCQkJICAgICBuLCBjdXJzb3JfcmlnaHQpOwogCQl9CiAKQEAgLTY1MCwxMCArNzExLDEwIEBACiAJICAgIG4gPSBmcm9tX3ggLSB0b194OwogCiAJICAgIGlmIChwYXJtX2xlZnRfY3Vyc29yCi0JCSYmIFNQLT5fY3ViX2Nvc3QgPCBoY29zdAorCQkmJiBTUF9QQVJNLT5fY3ViX2Nvc3QgPCBoY29zdAogCQkmJiBfbmNfc2FmZV9zdHJjYXQoX25jX3N0cl9jb3B5KHRhcmdldCwgJnNhdmUpLAogCQkJCSAgIFRQQVJNXzEocGFybV9sZWZ0X2N1cnNvciwgbikpKSB7Ci0JCWhjb3N0ID0gU1AtPl9jdWJfY29zdDsKKwkJaGNvc3QgPSBTUF9QQVJNLT5fY3ViX2Nvc3Q7CiAJICAgIH0KIAogCSAgICBpZiAoY3Vyc29yX2xlZnQpIHsKQEAgLTY2Nyw3ICs3MjgsOCBAQAogCiAJCSAgICBmb3IgKGZyID0gZnJvbV94OyAobnh0ID0gTEFTVFRBQihmcikpID49IHRvX3g7IGZyID0gbnh0KSB7CiAJCQlsaGNvc3QgPSByZXBlYXRlZF9hcHBlbmQoJmNoZWNrLCBsaGNvc3QsCi0JCQkJCQkgU1AtPl9jYnRfY29zdCwgMSwgYmFja190YWIpOworCQkJCQkJIFNQX1BBUk0tPl9jYnRfY29zdCwKKwkJCQkJCSAxLCBiYWNrX3RhYik7CiAJCQlpZiAobGhjb3N0ID09IElORklOSVRZKQogCQkJICAgIGJyZWFrOwogCQkgICAgfQpAQCAtNjc2LDcgKzczOCw5IEBACiAJCX0KICNlbmRpZiAvKiBVU0VfSEFSRF9UQUJTICovCiAKLQkJbGhjb3N0ID0gcmVwZWF0ZWRfYXBwZW5kKCZjaGVjaywgbGhjb3N0LCBTUC0+X2N1YjFfY29zdCwgbiwgY3Vyc29yX2xlZnQpOworCQlsaGNvc3QgPSByZXBlYXRlZF9hcHBlbmQoJmNoZWNrLCBsaGNvc3QsCisJCQkJCSBTUF9QQVJNLT5fY3ViMV9jb3N0LAorCQkJCQkgbiwgY3Vyc29yX2xlZnQpOwogCiAJCWlmIChsaGNvc3QgPCBoY29zdAogCQkgICAgJiYgX25jX3NhZmVfc3RyY2F0KF9uY19zdHJfY29weSh0YXJnZXQsICZzYXZlKSwgc3RyKSkgewpAQCAtNzA1LDcgKzc2OSwxMCBAQAogICovCiAKIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBpbnQKLW9uc2NyZWVuX212Y3VyKGludCB5b2xkLCBpbnQgeG9sZCwgaW50IHluZXcsIGludCB4bmV3LCBib29sIG92dykKK29uc2NyZWVuX212Y3VyKE5DVVJTRVNfU1BfRENMeAorCSAgICAgICBpbnQgeW9sZCwgaW50IHhvbGQsCisJICAgICAgIGludCB5bmV3LCBpbnQgeG5ldywgaW50IG92dywKKwkgICAgICAgTkNVUlNFU19TUF9PVVRDIG15T3V0Q2gpCiAvKiBvbnNjcmVlbiBtb3ZlIGZyb20gKHlvbGQsIHhvbGQpIHRvICh5bmV3LCB4bmV3KSAqLwogewogICAgIHN0cmluZ19kZXNjIHJlc3VsdDsKQEAgLTcyMyw5ICs3OTAsOSBAQAogI2RlZmluZSBJbml0UmVzdWx0IF9uY19zdHJfaW5pdCgmcmVzdWx0LCBidWZmZXIsIHNpemVvZihidWZmZXIpKQogCiAgICAgLyogdGFjdGljICMwOiB1c2UgZGlyZWN0IGN1cnNvciBhZGRyZXNzaW5nICovCi0gICAgaWYgKF9uY19zYWZlX3N0cmNweShJbml0UmVzdWx0LCBUUEFSTV8yKFNQLT5fYWRkcmVzc19jdXJzb3IsIHluZXcsIHhuZXcpKSkgeworICAgIGlmIChfbmNfc2FmZV9zdHJjcHkoSW5pdFJlc3VsdCwgVFBBUk1fMihTUF9QQVJNLT5fYWRkcmVzc19jdXJzb3IsIHluZXcsIHhuZXcpKSkgewogCXRhY3RpYyA9IDA7Ci0JdXNlY29zdCA9IFNQLT5fY3VwX2Nvc3Q7CisJdXNlY29zdCA9IFNQX1BBUk0tPl9jdXBfY29zdDsKIAogI2lmIGRlZmluZWQoVFJBQ0UpIHx8IGRlZmluZWQoTkNVUlNFU19URVNUKQogCWlmICghKF9uY19vcHRpbWl6ZV9lbmFibGUgJiBPUFRJTUlaRV9NVkNVUikpCkBAIC03NDAsNyArODA3LDcgQEAKIAkgKiAobGlrZSwgc2F5LCBsb2NhbC1tb3ZlbWVudCBcbiBnZXR0aW5nIG1hcHBlZCB0byBzb21lIG9ic2N1cmUKIAkgKiBjaGFyYWN0ZXIgYmVjYXVzZSBBX0FMVENIQVJTRVQgaXMgb24pLgogCSAqLwotCWlmICh5b2xkID09IC0xIHx8IHhvbGQgPT0gLTEgfHwgTk9UX0xPQ0FMKHlvbGQsIHhvbGQsIHluZXcsIHhuZXcpKSB7CisJaWYgKHlvbGQgPT0gLTEgfHwgeG9sZCA9PSAtMSB8fCBOT1RfTE9DQUwoU1BfUEFSTSwgeW9sZCwgeG9sZCwgeW5ldywgeG5ldykpIHsKICNpZiBkZWZpbmVkKE1BSU4pIHx8IGRlZmluZWQoTkNVUlNFU19URVNUKQogCSAgICBpZiAoIXByb2ZpbGluZykgewogCQkodm9pZCkgZnB1dHMoIm5vbmxvY2FsXG4iLCBzdGRlcnIpOwpAQCAtNzU0LDggKzgyMSwxMCBAQAogI2lmbmRlZiBOT19PUFRJTUlaRQogICAgIC8qIHRhY3RpYyAjMTogdXNlIGxvY2FsIG1vdmVtZW50ICovCiAgICAgaWYgKHlvbGQgIT0gLTEgJiYgeG9sZCAhPSAtMQotCSYmICgobmV3Y29zdCA9IHJlbGF0aXZlX21vdmUoTnVsbFJlc3VsdCwgeW9sZCwgeG9sZCwgeW5ldywgeG5ldywKLQkJCQkgICAgIG92dykpICE9IElORklOSVRZKQorCSYmICgobmV3Y29zdCA9IHJlbGF0aXZlX21vdmUoTkNVUlNFU19TUF9BUkd4CisJCQkJICAgICBOdWxsUmVzdWx0LAorCQkJCSAgICAgeW9sZCwgeG9sZCwKKwkJCQkgICAgIHluZXcsIHhuZXcsIG92dykpICE9IElORklOSVRZKQogCSYmIG5ld2Nvc3QgPCB1c2Vjb3N0KSB7CiAJdGFjdGljID0gMTsKIAl1c2Vjb3N0ID0gbmV3Y29zdDsKQEAgLTc2Myw0MiArODMyLDUxIEBACiAKICAgICAvKiB0YWN0aWMgIzI6IHVzZSBjYXJyaWFnZS1yZXR1cm4gKyBsb2NhbCBtb3ZlbWVudCAqLwogICAgIGlmICh5b2xkICE9IC0xICYmIGNhcnJpYWdlX3JldHVybgotCSYmICgobmV3Y29zdCA9IHJlbGF0aXZlX21vdmUoTnVsbFJlc3VsdCwgeW9sZCwgMCwgeW5ldywgeG5ldywgb3Z3KSkKLQkgICAgIT0gSU5GSU5JVFkpCi0JJiYgU1AtPl9jcl9jb3N0ICsgbmV3Y29zdCA8IHVzZWNvc3QpIHsKKwkmJiAoKG5ld2Nvc3QgPSByZWxhdGl2ZV9tb3ZlKE5DVVJTRVNfU1BfQVJHeAorCQkJCSAgICAgTnVsbFJlc3VsdCwKKwkJCQkgICAgIHlvbGQsIDAsCisJCQkJICAgICB5bmV3LCB4bmV3LCBvdncpKSAhPSBJTkZJTklUWSkKKwkmJiBTUF9QQVJNLT5fY3JfY29zdCArIG5ld2Nvc3QgPCB1c2Vjb3N0KSB7CiAJdGFjdGljID0gMjsKLQl1c2Vjb3N0ID0gU1AtPl9jcl9jb3N0ICsgbmV3Y29zdDsKKwl1c2Vjb3N0ID0gU1BfUEFSTS0+X2NyX2Nvc3QgKyBuZXdjb3N0OwogICAgIH0KIAogICAgIC8qIHRhY3RpYyAjMzogdXNlIGhvbWUtY3Vyc29yICsgbG9jYWwgbW92ZW1lbnQgKi8KICAgICBpZiAoY3Vyc29yX2hvbWUKLQkmJiAoKG5ld2Nvc3QgPSByZWxhdGl2ZV9tb3ZlKE51bGxSZXN1bHQsIDAsIDAsIHluZXcsIHhuZXcsIG92dykpICE9IElORklOSVRZKQotCSYmIFNQLT5faG9tZV9jb3N0ICsgbmV3Y29zdCA8IHVzZWNvc3QpIHsKKwkmJiAoKG5ld2Nvc3QgPSByZWxhdGl2ZV9tb3ZlKE5DVVJTRVNfU1BfQVJHeAorCQkJCSAgICAgTnVsbFJlc3VsdCwKKwkJCQkgICAgIDAsIDAsCisJCQkJICAgICB5bmV3LCB4bmV3LCBvdncpKSAhPSBJTkZJTklUWSkKKwkmJiBTUF9QQVJNLT5faG9tZV9jb3N0ICsgbmV3Y29zdCA8IHVzZWNvc3QpIHsKIAl0YWN0aWMgPSAzOwotCXVzZWNvc3QgPSBTUC0+X2hvbWVfY29zdCArIG5ld2Nvc3Q7CisJdXNlY29zdCA9IFNQX1BBUk0tPl9ob21lX2Nvc3QgKyBuZXdjb3N0OwogICAgIH0KIAogICAgIC8qIHRhY3RpYyAjNDogdXNlIGhvbWUtZG93biArIGxvY2FsIG1vdmVtZW50ICovCiAgICAgaWYgKGN1cnNvcl90b19sbAotCSYmICgobmV3Y29zdCA9IHJlbGF0aXZlX21vdmUoTnVsbFJlc3VsdCwgc2NyZWVuX2xpbmVzIC0gMSwgMCwgeW5ldywKLQkJCQkgICAgIHhuZXcsIG92dykpICE9IElORklOSVRZKQotCSYmIFNQLT5fbGxfY29zdCArIG5ld2Nvc3QgPCB1c2Vjb3N0KSB7CisJJiYgKChuZXdjb3N0ID0gcmVsYXRpdmVfbW92ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgIE51bGxSZXN1bHQsCisJCQkJICAgICBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSAxLCAwLAorCQkJCSAgICAgeW5ldywgeG5ldywgb3Z3KSkgIT0gSU5GSU5JVFkpCisJJiYgU1BfUEFSTS0+X2xsX2Nvc3QgKyBuZXdjb3N0IDwgdXNlY29zdCkgewogCXRhY3RpYyA9IDQ7Ci0JdXNlY29zdCA9IFNQLT5fbGxfY29zdCArIG5ld2Nvc3Q7CisJdXNlY29zdCA9IFNQX1BBUk0tPl9sbF9jb3N0ICsgbmV3Y29zdDsKICAgICB9CiAKICAgICAvKgogICAgICAqIHRhY3RpYyAjNTogdXNlIGxlZnQgbWFyZ2luIGZvciB3cmFwIHRvIHJpZ2h0LWhhbmQgc2lkZSwKICAgICAgKiB1bmxlc3Mgc3RyYW5nZSB3cmFwIGJlaGF2aW9yIGluZGljYXRlZCBieSB4ZW5sIG1pZ2h0IGhvc2UgdXMuCiAgICAgICovCi0gICAgdDVfY3JfY29zdCA9ICh4b2xkID4gMCA/IFNQLT5fY3JfY29zdCA6IDApOworICAgIHQ1X2NyX2Nvc3QgPSAoeG9sZCA+IDAgPyBTUF9QQVJNLT5fY3JfY29zdCA6IDApOwogICAgIGlmIChhdXRvX2xlZnRfbWFyZ2luICYmICFlYXRfbmV3bGluZV9nbGl0Y2gKIAkmJiB5b2xkID4gMCAmJiBjdXJzb3JfbGVmdAotCSYmICgobmV3Y29zdCA9IHJlbGF0aXZlX21vdmUoTnVsbFJlc3VsdCwgeW9sZCAtIDEsIHNjcmVlbl9jb2x1bW5zIC0KLQkJCQkgICAgIDEsIHluZXcsIHhuZXcsIG92dykpICE9IElORklOSVRZKQotCSYmIHQ1X2NyX2Nvc3QgKyBTUC0+X2N1YjFfY29zdCArIG5ld2Nvc3QgPCB1c2Vjb3N0KSB7CisJJiYgKChuZXdjb3N0ID0gcmVsYXRpdmVfbW92ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgIE51bGxSZXN1bHQsCisJCQkJICAgICB5b2xkIC0gMSwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgLSAxLAorCQkJCSAgICAgeW5ldywgeG5ldywgb3Z3KSkgIT0gSU5GSU5JVFkpCisJJiYgdDVfY3JfY29zdCArIFNQX1BBUk0tPl9jdWIxX2Nvc3QgKyBuZXdjb3N0IDwgdXNlY29zdCkgewogCXRhY3RpYyA9IDU7Ci0JdXNlY29zdCA9IHQ1X2NyX2Nvc3QgKyBTUC0+X2N1YjFfY29zdCArIG5ld2Nvc3Q7CisJdXNlY29zdCA9IHQ1X2NyX2Nvc3QgKyBTUF9QQVJNLT5fY3ViMV9jb3N0ICsgbmV3Y29zdDsKICAgICB9CiAKICAgICAvKgpAQCAtODA4LDI2ICs4ODYsMzkgQEAKIAlJbml0UmVzdWx0OwogICAgIHN3aXRjaCAodGFjdGljKSB7CiAgICAgY2FzZSAxOgotCSh2b2lkKSByZWxhdGl2ZV9tb3ZlKCZyZXN1bHQsIHlvbGQsIHhvbGQsIHluZXcsIHhuZXcsIG92dyk7CisJKHZvaWQpIHJlbGF0aXZlX21vdmUoTkNVUlNFU19TUF9BUkd4CisJCQkgICAgICZyZXN1bHQsCisJCQkgICAgIHlvbGQsIHhvbGQsCisJCQkgICAgIHluZXcsIHhuZXcsIG92dyk7CiAJYnJlYWs7CiAgICAgY2FzZSAyOgogCSh2b2lkKSBfbmNfc2FmZV9zdHJjcHkoJnJlc3VsdCwgY2FycmlhZ2VfcmV0dXJuKTsKLQkodm9pZCkgcmVsYXRpdmVfbW92ZSgmcmVzdWx0LCB5b2xkLCAwLCB5bmV3LCB4bmV3LCBvdncpOworCSh2b2lkKSByZWxhdGl2ZV9tb3ZlKE5DVVJTRVNfU1BfQVJHeAorCQkJICAgICAmcmVzdWx0LAorCQkJICAgICB5b2xkLCAwLAorCQkJICAgICB5bmV3LCB4bmV3LCBvdncpOwogCWJyZWFrOwogICAgIGNhc2UgMzoKIAkodm9pZCkgX25jX3NhZmVfc3RyY3B5KCZyZXN1bHQsIGN1cnNvcl9ob21lKTsKLQkodm9pZCkgcmVsYXRpdmVfbW92ZSgmcmVzdWx0LCAwLCAwLCB5bmV3LCB4bmV3LCBvdncpOworCSh2b2lkKSByZWxhdGl2ZV9tb3ZlKE5DVVJTRVNfU1BfQVJHeAorCQkJICAgICAmcmVzdWx0LCAwLCAwLAorCQkJICAgICB5bmV3LCB4bmV3LCBvdncpOwogCWJyZWFrOwogICAgIGNhc2UgNDoKIAkodm9pZCkgX25jX3NhZmVfc3RyY3B5KCZyZXN1bHQsIGN1cnNvcl90b19sbCk7Ci0JKHZvaWQpIHJlbGF0aXZlX21vdmUoJnJlc3VsdCwgc2NyZWVuX2xpbmVzIC0gMSwgMCwgeW5ldywgeG5ldywgb3Z3KTsKKwkodm9pZCkgcmVsYXRpdmVfbW92ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCSAgICAgJnJlc3VsdCwKKwkJCSAgICAgc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSwgMCwKKwkJCSAgICAgeW5ldywgeG5ldywgb3Z3KTsKIAlicmVhazsKICAgICBjYXNlIDU6CiAJaWYgKHhvbGQgPiAwKQogCSAgICAodm9pZCkgX25jX3NhZmVfc3RyY2F0KCZyZXN1bHQsIGNhcnJpYWdlX3JldHVybik7CiAJKHZvaWQpIF9uY19zYWZlX3N0cmNhdCgmcmVzdWx0LCBjdXJzb3JfbGVmdCk7Ci0JKHZvaWQpIHJlbGF0aXZlX21vdmUoJnJlc3VsdCwgeW9sZCAtIDEsIHNjcmVlbl9jb2x1bW5zIC0gMSwgeW5ldywKLQkJCSAgICAgeG5ldywgb3Z3KTsKKwkodm9pZCkgcmVsYXRpdmVfbW92ZShOQ1VSU0VTX1NQX0FSR3gKKwkJCSAgICAgJnJlc3VsdCwKKwkJCSAgICAgeW9sZCAtIDEsIHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMSwKKwkJCSAgICAgeW5ldywgeG5ldywgb3Z3KTsKIAlicmVhazsKICAgICB9CiAjZW5kaWYgLyogIU5PX09QVElNSVpFICovCkBAIC04NDUsMjUgKzkzNiwzMiBAQAogCiAgICAgaWYgKHVzZWNvc3QgIT0gSU5GSU5JVFkpIHsKIAlUUFVUU19UUkFDRSgibXZjdXIiKTsKLQl0cHV0cyhidWZmZXIsIDEsIF9uY19vdXRjaCk7Ci0JU1AtPl9jdXJzcm93ID0geW5ldzsKLQlTUC0+X2N1cnNjb2wgPSB4bmV3OworCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCWJ1ZmZlciwgMSwgbXlPdXRDaCk7CisJU1BfUEFSTS0+X2N1cnNyb3cgPSB5bmV3OworCVNQX1BBUk0tPl9jdXJzY29sID0geG5ldzsKIAlyZXR1cm4gKE9LKTsKICAgICB9IGVsc2UKIAlyZXR1cm4gKEVSUik7CiB9CiAKLU5DVVJTRVNfRVhQT1JUKGludCkKLW12Y3VyKGludCB5b2xkLCBpbnQgeG9sZCwgaW50IHluZXcsIGludCB4bmV3KQotLyogb3B0aW1pemVkIGN1cnNvciBtb3ZlIGZyb20gKHlvbGQsIHhvbGQpIHRvICh5bmV3LCB4bmV3KSAqLworLyoKKyAqIG9wdGltaXplZCBjdXJzb3IgbW92ZSBmcm9tICh5b2xkLCB4b2xkKSB0byAoeW5ldywgeG5ldykKKyAqLworc3RhdGljIGludAorX25jX3JlYWxfbXZjdXIoTkNVUlNFU19TUF9EQ0x4CisJICAgICAgIGludCB5b2xkLCBpbnQgeG9sZCwKKwkgICAgICAgaW50IHluZXcsIGludCB4bmV3LAorCSAgICAgICBOQ1VSU0VTX1NQX09VVEMgbXlPdXRDaCwKKwkgICAgICAgaW50IG92dykKIHsKICAgICBOQ1VSU0VTX0NIX1Qgb2xkYXR0cjsKICAgICBpbnQgY29kZTsKIAotICAgIFRSKFRSQUNFX0NBTExTIHwgVFJBQ0VfTU9WRSwgKFRfQ0FMTEVEKCJtdmN1ciglZCwlZCwlZCwlZCkiKSwKLQkJCQkgIHlvbGQsIHhvbGQsIHluZXcsIHhuZXcpKTsKKyAgICBUUihUUkFDRV9DQUxMUyB8IFRSQUNFX01PVkUsIChUX0NBTExFRCgiX25jX3RpbmZvX212Y3VyKCVwLCVkLCVkLCVkLCVkKSIpLAorCQkJCSAgKHZvaWQgKikgU1BfUEFSTSwgeW9sZCwgeG9sZCwgeW5ldywgeG5ldykpOwogCi0gICAgaWYgKFNQID09IDApIHsKKyAgICBpZiAoU1BfUEFSTSA9PSAwKSB7CiAJY29kZSA9IEVSUjsKICAgICB9IGVsc2UgaWYgKHlvbGQgPT0geW5ldyAmJiB4b2xkID09IHhuZXcpIHsKIAljb2RlID0gT0s7CkBAIC04NzQsOSArOTcyLDkgQEAKIAkgKiBjb2x1bW4gcG9zaXRpb24gaW1wbGllZCBieSB3cmFwYXJvdW5kIG9yIHRoZSBsYWNrIHRoZXJlb2YgYW5kCiAJICogcm9sbGluZyB1cCB0aGUgc2NyZWVuIHRvIGdldCB5bmV3IG9uIHRoZSBzY3JlZW4uCiAJICovCi0JaWYgKHhuZXcgPj0gc2NyZWVuX2NvbHVtbnMpIHsKLQkgICAgeW5ldyArPSB4bmV3IC8gc2NyZWVuX2NvbHVtbnM7Ci0JICAgIHhuZXcgJT0gc2NyZWVuX2NvbHVtbnM7CisJaWYgKHhuZXcgPj0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkpIHsKKwkgICAgeW5ldyArPSB4bmV3IC8gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7CisJICAgIHhuZXcgJT0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7CiAJfQogCiAJLyoKQEAgLTg4NCwzOCArOTgyLDM4IEBACiAJICogY2hhcmFjdGVyIHNldCAtLSB0aGVzZSBoYXZlIGEgc3Ryb25nIHRlbmRlbmN5IHRvIHNjcmV3IHVwIHRoZSBDUiAmCiAJICogTEYgdXNlZCBmb3IgbG9jYWwgY2hhcmFjdGVyIG1vdGlvbnMhCiAJICovCi0Jb2xkYXR0ciA9IFNDUkVFTl9BVFRSUyhTUCk7CisJb2xkYXR0ciA9IFNDUkVFTl9BVFRSUyhTUF9QQVJNKTsKIAlpZiAoKEF0dHJPZihvbGRhdHRyKSAmIEFfQUxUQ0hBUlNFVCkKIAkgICAgfHwgKEF0dHJPZihvbGRhdHRyKSAmJiAhbW92ZV9zdGFuZG91dF9tb2RlKSkgewogCSAgICBUUihUUkFDRV9DSEFSUFVULCAoInR1cm5pbmcgb2ZmICglI2x4KSAlcyBiZWZvcmUgbW92ZSIsCiAJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpIEF0dHJPZihvbGRhdHRyKSwKIAkJCSAgICAgICBfdHJhY2VhdHRyKEF0dHJPZihvbGRhdHRyKSkpKTsKLQkgICAgKHZvaWQpIFZJREFUVFIoQV9OT1JNQUwsIDApOworCSAgICAodm9pZCkgVklEQVRUUihTUF9QQVJNLCBBX05PUk1BTCwgMCk7CiAJfQogCi0JaWYgKHhvbGQgPj0gc2NyZWVuX2NvbHVtbnMpIHsKKwlpZiAoeG9sZCA+PSBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSkgewogCSAgICBpbnQgbDsKIAotCSAgICBpZiAoU1AtPl9ubCkgewotCQlsID0gKHhvbGQgKyAxKSAvIHNjcmVlbl9jb2x1bW5zOworCSAgICBpZiAoU1BfUEFSTS0+X25sKSB7CisJCWwgPSAoeG9sZCArIDEpIC8gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7CiAJCXlvbGQgKz0gbDsKLQkJaWYgKHlvbGQgPj0gc2NyZWVuX2xpbmVzKQotCQkgICAgbCAtPSAoeW9sZCAtIHNjcmVlbl9saW5lcyAtIDEpOworCQlpZiAoeW9sZCA+PSBzY3JlZW5fbGluZXMoU1BfUEFSTSkpCisJCSAgICBsIC09ICh5b2xkIC0gc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSk7CiAKIAkJaWYgKGwgPiAwKSB7CiAJCSAgICBpZiAoY2FycmlhZ2VfcmV0dXJuKSB7Ci0JCQlUUFVUU19UUkFDRSgiY2FycmlhZ2VfcmV0dXJuIik7Ci0JCQlwdXRwKGNhcnJpYWdlX3JldHVybik7Ci0JCSAgICB9IGVsc2UKLQkJCV9uY19vdXRjaCgnXHInKTsKKwkJCU5DVVJTRVNfUFVUUDIoImNhcnJpYWdlX3JldHVybiIsIGNhcnJpYWdlX3JldHVybik7CisJCSAgICB9IGVsc2UgeworCQkJbXlPdXRDaChOQ1VSU0VTX1NQX0FSR3ggJ1xyJyk7CisJCSAgICB9CiAJCSAgICB4b2xkID0gMDsKIAogCQkgICAgd2hpbGUgKGwgPiAwKSB7CiAJCQlpZiAobmV3bGluZSkgewotCQkJICAgIFRQVVRTX1RSQUNFKCJuZXdsaW5lIik7Ci0JCQkgICAgcHV0cChuZXdsaW5lKTsKLQkJCX0gZWxzZQotCQkJICAgIF9uY19vdXRjaCgnXG4nKTsKKwkJCSAgICBOQ1VSU0VTX1BVVFAyKCJuZXdsaW5lIiwgbmV3bGluZSk7CisJCQl9IGVsc2UgeworCQkJICAgIG15T3V0Q2goTkNVUlNFU19TUF9BUkd4ICdcbicpOworCQkJfQogCQkJbC0tOwogCQkgICAgfQogCQl9CkBAIC05MjksMjcgKzEwMjcsODggQEAKIAkgICAgfQogCX0KIAotCWlmICh5b2xkID4gc2NyZWVuX2xpbmVzIC0gMSkKLQkgICAgeW9sZCA9IHNjcmVlbl9saW5lcyAtIDE7Ci0JaWYgKHluZXcgPiBzY3JlZW5fbGluZXMgLSAxKQotCSAgICB5bmV3ID0gc2NyZWVuX2xpbmVzIC0gMTsKKwlpZiAoeW9sZCA+IHNjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDEpCisJICAgIHlvbGQgPSBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSAxOworCWlmICh5bmV3ID4gc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSkKKwkgICAgeW5ldyA9IHNjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDE7CiAKIAkvKiBkZXN0aW5hdGlvbiBsb2NhdGlvbiBpcyBvbiBzY3JlZW4gbm93ICovCi0JY29kZSA9IG9uc2NyZWVuX212Y3VyKHlvbGQsIHhvbGQsIHluZXcsIHhuZXcsIFRSVUUpOworCWNvZGUgPSBvbnNjcmVlbl9tdmN1cihOQ1VSU0VTX1NQX0FSR3ggeW9sZCwgeG9sZCwgeW5ldywgeG5ldywgb3Z3LCBteU91dENoKTsKIAogCS8qCiAJICogUmVzdG9yZSBhdHRyaWJ1dGVzIGlmIHdlIGRpc2FibGVkIHRoZW0gYmVmb3JlIG1vdmluZy4KIAkgKi8KLQlpZiAoIVNhbWVBdHRyT2Yob2xkYXR0ciwgU0NSRUVOX0FUVFJTKFNQKSkpIHsKKwlpZiAoIVNhbWVBdHRyT2Yob2xkYXR0ciwgU0NSRUVOX0FUVFJTKFNQX1BBUk0pKSkgewogCSAgICBUUihUUkFDRV9DSEFSUFVULCAoInR1cm5pbmcgb24gKCUjbHgpICVzIGFmdGVyIG1vdmUiLAogCQkJICAgICAgICh1bnNpZ25lZCBsb25nKSBBdHRyT2Yob2xkYXR0ciksCiAJCQkgICAgICAgX3RyYWNlYXR0cihBdHRyT2Yob2xkYXR0cikpKSk7Ci0JICAgICh2b2lkKSBWSURBVFRSKEF0dHJPZihvbGRhdHRyKSwgR2V0UGFpcihvbGRhdHRyKSk7CisJICAgICh2b2lkKSBWSURBVFRSKFNQX1BBUk0sIEF0dHJPZihvbGRhdHRyKSwgR2V0UGFpcihvbGRhdHRyKSk7CiAJfQogICAgIH0KICAgICByZXR1cm5Db2RlKGNvZGUpOwogfQogCisvKgorICogVGhlc2UgZW50cnlwb2ludHMgYXJlIHVzZWQgd2l0aGluIHRoZSBsaWJyYXJ5LgorICovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitOQ1VSU0VTX1NQX05BTUUoX25jX212Y3VyKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICAgaW50IHlvbGQsIGludCB4b2xkLAorCQkJICAgIGludCB5bmV3LCBpbnQgeG5ldykKK3sKKyAgICByZXR1cm4gX25jX3JlYWxfbXZjdXIoTkNVUlNFU19TUF9BUkd4IHlvbGQsIHhvbGQsIHluZXcsIHhuZXcsCisJCQkgIE5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpLAorCQkJICBUUlVFKTsKK30KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGludCkKK19uY19tdmN1cihpbnQgeW9sZCwgaW50IHhvbGQsCisJICBpbnQgeW5ldywgaW50IHhuZXcpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXIpIChDVVJSRU5UX1NDUkVFTiwgeW9sZCwgeG9sZCwgeW5ldywgeG5ldyk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX1RFUk1fRFJJVkVSKQorLyoKKyAqIFRoZSB0ZXJtaW5hbCBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZXh0ZXJuYWwgIm12Y3VyKCkiLgorICovCitOQ1VSU0VTX0VYUE9SVChpbnQpCitUSU5GT19NVkNVUihOQ1VSU0VTX1NQX0RDTHggaW50IHlvbGQsIGludCB4b2xkLCBpbnQgeW5ldywgaW50IHhuZXcpCit7CisgICAgcmV0dXJuIF9uY19yZWFsX212Y3VyKE5DVVJTRVNfU1BfQVJHeAorCQkJICB5b2xkLCB4b2xkLAorCQkJICB5bmV3LCB4bmV3LAorCQkJICBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSwKKwkJCSAgVFJVRSk7Cit9CisKKyNlbHNlIC8qICFVU0VfVEVSTV9EUklWRVIgKi8KKworLyoKKyAqIFRoZXNlIGVudHJ5cG9pbnRzIHN1cHBvcnQgdXNlcnMgb2YgdGhlIGxpYnJhcnkuCisgKi8KK05DVVJTRVNfRVhQT1JUKGludCkKK05DVVJTRVNfU1BfTkFNRShtdmN1cikgKE5DVVJTRVNfU1BfRENMeCBpbnQgeW9sZCwgaW50IHhvbGQsIGludCB5bmV3LAorCQkJaW50IHhuZXcpCit7CisgICAgcmV0dXJuIF9uY19yZWFsX212Y3VyKE5DVVJTRVNfU1BfQVJHeAorCQkJICB5b2xkLCB4b2xkLAorCQkJICB5bmV3LCB4bmV3LAorCQkJICBOQ1VSU0VTX1NQX05BTUUoX25jX3B1dGNoYXIpLAorCQkJICBGQUxTRSk7Cit9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCittdmN1cihpbnQgeW9sZCwgaW50IHhvbGQsIGludCB5bmV3LCBpbnQgeG5ldykKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKG12Y3VyKSAoQ1VSUkVOVF9TQ1JFRU4sIHlvbGQsIHhvbGQsIHluZXcsIHhuZXcpOworfQorI2VuZGlmCisjZW5kaWYgLyogVVNFX1RFUk1fRFJJVkVSICovCisKICNpZiBkZWZpbmVkKFRSQUNFKSB8fCBkZWZpbmVkKE5DVVJTRVNfVEVTVCkKIE5DVVJTRVNfRVhQT1JUX1ZBUihpbnQpIF9uY19vcHRpbWl6ZV9lbmFibGUgPSBPUFRJTUlaRV9BTEw7CiAjZW5kaWYKQEAgLTEwMjgsNyArMTE4Nyw2IEBACiAgICAgYmF1ZHJhdGUoKTsKIAogICAgIF9uY19tdmN1cl9pbml0KCk7Ci0gICAgTkNfQlVGRkVSRUQoRkFMU0UpOwogCiAgICAgKHZvaWQpIHB1dHMoIlRoZSBtdmN1ciB0ZXN0ZXIuICBUeXBlID8gZm9yIGhlbHAiKTsKIApAQCAtMTEyMCw3ICsxMjc4LDcgQEAKIAkJfQogCSAgICB9CiAJfSBlbHNlIGlmIChidWZbMF0gPT0gJ2knKSB7Ci0JICAgIGR1bXBfaW5pdCgoY2hhciAqKSBOVUxMLCBGX1RFUk1JTkZPLCBTX1RFUk1JTkZPLCA3MCwgMCwgRkFMU0UpOworCSAgICBkdW1wX2luaXQoTlVMTCwgRl9URVJNSU5GTywgU19URVJNSU5GTywgNzAsIDAsIDAsIEZBTFNFLCBGQUxTRSk7CiAJICAgIGR1bXBfZW50cnkoJmN1cl90ZXJtLT50eXBlLCBGQUxTRSwgVFJVRSwgMCwgMCk7CiAJICAgIHB1dGNoYXIoJ1xuJyk7CiAJfSBlbHNlIGlmIChidWZbMF0gPT0gJ28nKSB7CkBAIC0xMjEyLDI1ICsxMzcwLDI1IEBACiAJCQkgICBzcGVlZHNbaV0sIG92ZXJoZWFkLCB0b3RhbGVzdCk7CiAJICAgIH0KIAl9IGVsc2UgaWYgKGJ1ZlswXSA9PSAnYycpIHsKLQkgICAgKHZvaWQpIHByaW50ZigiY2hhciBwYWRkaW5nOiAlZFxuIiwgU1AtPl9jaGFyX3BhZGRpbmcpOwotCSAgICAodm9pZCkgcHJpbnRmKCJjciBjb3N0OiAlZFxuIiwgU1AtPl9jcl9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3VwIGNvc3Q6ICVkXG4iLCBTUC0+X2N1cF9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiaG9tZSBjb3N0OiAlZFxuIiwgU1AtPl9ob21lX2Nvc3QpOwotCSAgICAodm9pZCkgcHJpbnRmKCJsbCBjb3N0OiAlZFxuIiwgU1AtPl9sbF9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiY2hhciBwYWRkaW5nOiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9jaGFyX3BhZGRpbmcpOworCSAgICAodm9pZCkgcHJpbnRmKCJjciBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9jcl9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiY3VwIGNvc3Q6ICVkXG4iLCBDVVJSRU5UX1NDUkVFTi0+X2N1cF9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiaG9tZSBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9ob21lX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJsbCBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9sbF9jb3N0KTsKICNpZiBVU0VfSEFSRF9UQUJTCi0JICAgICh2b2lkKSBwcmludGYoImh0IGNvc3Q6ICVkXG4iLCBTUC0+X2h0X2Nvc3QpOwotCSAgICAodm9pZCkgcHJpbnRmKCJjYnQgY29zdDogJWRcbiIsIFNQLT5fY2J0X2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJodCBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9odF9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiY2J0IGNvc3Q6ICVkXG4iLCBDVVJSRU5UX1NDUkVFTi0+X2NidF9jb3N0KTsKICNlbmRpZiAvKiBVU0VfSEFSRF9UQUJTICovCi0JICAgICh2b2lkKSBwcmludGYoImN1YjEgY29zdDogJWRcbiIsIFNQLT5fY3ViMV9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3VmMSBjb3N0OiAlZFxuIiwgU1AtPl9jdWYxX2Nvc3QpOwotCSAgICAodm9pZCkgcHJpbnRmKCJjdWQxIGNvc3Q6ICVkXG4iLCBTUC0+X2N1ZDFfY29zdCk7Ci0JICAgICh2b2lkKSBwcmludGYoImN1dTEgY29zdDogJWRcbiIsIFNQLT5fY3V1MV9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3ViIGNvc3Q6ICVkXG4iLCBTUC0+X2N1Yl9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3VmIGNvc3Q6ICVkXG4iLCBTUC0+X2N1Zl9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3VkIGNvc3Q6ICVkXG4iLCBTUC0+X2N1ZF9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiY3V1IGNvc3Q6ICVkXG4iLCBTUC0+X2N1dV9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigiaHBhIGNvc3Q6ICVkXG4iLCBTUC0+X2hwYV9jb3N0KTsKLQkgICAgKHZvaWQpIHByaW50ZigidnBhIGNvc3Q6ICVkXG4iLCBTUC0+X3ZwYV9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiY3ViMSBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9jdWIxX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJjdWYxIGNvc3Q6ICVkXG4iLCBDVVJSRU5UX1NDUkVFTi0+X2N1ZjFfY29zdCk7CisJICAgICh2b2lkKSBwcmludGYoImN1ZDEgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fY3VkMV9jb3N0KTsKKwkgICAgKHZvaWQpIHByaW50ZigiY3V1MSBjb3N0OiAlZFxuIiwgQ1VSUkVOVF9TQ1JFRU4tPl9jdXUxX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJjdWIgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fY3ViX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJjdWYgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fY3VmX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJjdWQgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fY3VkX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJjdXUgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fY3V1X2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJocGEgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5faHBhX2Nvc3QpOworCSAgICAodm9pZCkgcHJpbnRmKCJ2cGEgY29zdDogJWRcbiIsIENVUlJFTlRfU0NSRUVOLT5fdnBhX2Nvc3QpOwogCX0gZWxzZSBpZiAoYnVmWzBdID09ICd4JyB8fCBidWZbMF0gPT0gJ3EnKQogCSAgICBicmVhazsKIAllbHNlCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3R0eS9saWJfdHN0cC5jIGIvbmN1cnNlcy90dHkvbGliX3RzdHAuYwppbmRleCAwNmM4NDExLi44NjI0Yjc2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3R0eS9saWJfdHN0cC5jCisrKyBiL25jdXJzZXMvdHR5L2xpYl90c3RwLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC00MiwxMSArNDIsNyBAQAogCiAjaW5jbHVkZSA8U2lnQWN0aW9uLmg+CiAKLSNpZiBTVlI0X0FDVElPTiAmJiAhZGVmaW5lZChfUE9TSVhfU09VUkNFKQotI2RlZmluZSBfUE9TSVhfU09VUkNFCi0jZW5kaWYKLQotTU9EVUxFX0lEKCIkSWQ6IGxpYl90c3RwLmMsdiAxLjM3IDIwMDgvMDUvMDMgMTY6MjQ6NTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfdHN0cC5jLHYgMS40OCAyMDE0LzA0LzI2IDE4OjQ3OjM1IGp1ZXJnZW4gRXhwICQiKQogCiAjaWYgZGVmaW5lZChTSUdUU1RQKSAmJiAoSEFWRV9TSUdBQ1RJT04gfHwgSEFWRV9TSUdWRUMpCiAjZGVmaW5lIFVTRV9TSUdUU1RQIDEKQEAgLTU5LDE2ICs1NSwyMCBAQAogc2lnbmFsX25hbWUoaW50IHNpZykKIHsKICAgICBzd2l0Y2ggKHNpZykgeworI2lmZGVmIFNJR0FMUk0KICAgICBjYXNlIFNJR0FMUk06CiAJcmV0dXJuICJTSUdBTFJNIjsKKyNlbmRpZgogI2lmZGVmIFNJR0NPTlQKICAgICBjYXNlIFNJR0NPTlQ6CiAJcmV0dXJuICJTSUdDT05UIjsKICNlbmRpZgogICAgIGNhc2UgU0lHSU5UOgogCXJldHVybiAiU0lHSU5UIjsKKyNpZmRlZiBTSUdRVUlUCiAgICAgY2FzZSBTSUdRVUlUOgogCXJldHVybiAiU0lHUVVJVCI7CisjZW5kaWYKICAgICBjYXNlIFNJR1RFUk06CiAJcmV0dXJuICJTSUdURVJNIjsKICNpZmRlZiBTSUdUU1RQCkBAIC0xMzQsOCArMTM0LDkgQEAKIAogI2lmIFVTRV9TSUdUU1RQCiBzdGF0aWMgdm9pZAotdHN0cChpbnQgZHVtbXkgR0NDX1VOVVNFRCkKK2hhbmRsZV9TSUdUU1RQKGludCBkdW1teSBHQ0NfVU5VU0VEKQogeworICAgIFNDUkVFTiAqc3AgPSBDVVJSRU5UX1NDUkVFTjsKICAgICBzaWdzZXRfdCBtYXNrLCBvbWFzazsKICAgICBzaWdhY3Rpb25fdCBhY3QsIG9hY3Q7CiAKQEAgLTE0Myw3ICsxNDQsOCBAQAogICAgIGludCBzaWd0dG91X2Jsb2NrZWQ7CiAjZW5kaWYKIAotICAgIFQoKCJ0c3RwKCkgY2FsbGVkIikpOworICAgIF9uY19nbG9iYWxzLmhhdmVfc2lndHN0cCA9IDE7CisgICAgVCgoImhhbmRsZV9TSUdUU1RQKCkgY2FsbGVkIikpOwogCiAgICAgLyoKICAgICAgKiBUaGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwcm9nX21vZGUgdHR5IGJpdHMsIHNvIHNhdmUgdGhlbS4KQEAgLTE1NCwxMSArMTU2LDExIEBACiAgICAgICogcGFyZW50IHdhcyBzdG9wcGVkIGJlZm9yZSB1cywgYW5kIHdlIHdvdWxkIGxpa2VseSBwaWNrIHVwIHRoZQogICAgICAqIHNldHRpbmdzIGFscmVhZHkgbW9kaWZpZWQgYnkgdGhlIHNoZWxsLgogICAgICAqLwotICAgIGlmIChTUCAhPSAwICYmICFTUC0+X2VuZHdpbikJLyogZG9uJ3QgZG8gdGhpcyBpZiB3ZSdyZSBub3QgaW4gY3Vyc2VzICovCisgICAgaWYgKHNwICE9IDAgJiYgIXNwLT5fZW5kd2luKQkvKiBkb24ndCBkbyB0aGlzIGlmIHdlJ3JlIG5vdCBpbiBjdXJzZXMgKi8KICNpZiBIQVZFX1RDR0VUUEdSUAogCWlmICh0Y2dldHBncnAoU1RESU5fRklMRU5PKSA9PSBnZXRwZ3JwKCkpCiAjZW5kaWYKLQkgICAgZGVmX3Byb2dfbW9kZSgpOworCSAgICBOQ1VSU0VTX1NQX05BTUUoZGVmX3Byb2dfbW9kZSkgKE5DVVJTRVNfU1BfQVJHKTsKIAogICAgIC8qCiAgICAgICogQmxvY2sgd2luZG93IGNoYW5nZSBhbmQgdGltZXIgc2lnbmFscy4gIFRoZSBsYXR0ZXIKQEAgLTE2Niw3ICsxNjgsOSBAQAogICAgICAqIHRvIHJlcGFpbnQgdGhlIHNjcmVlbi4KICAgICAgKi8KICAgICAodm9pZCkgc2lnZW1wdHlzZXQoJm1hc2spOworI2lmZGVmIFNJR0FMUk0KICAgICAodm9pZCkgc2lnYWRkc2V0KCZtYXNrLCBTSUdBTFJNKTsKKyNlbmRpZgogI2lmIFVTRV9TSUdXSU5DSAogICAgICh2b2lkKSBzaWdhZGRzZXQoJm1hc2ssIFNJR1dJTkNIKTsKICNlbmRpZgpAQCAtMTg1LDcgKzE4OSw3IEBACiAgICAgICogRW5kIHdpbmRvdyBtb2RlLCB3aGljaCBhbHNvIHJlc2V0cyB0aGUgdGVybWluYWwgc3RhdGUgdG8gdGhlCiAgICAgICogb3JpZ2luYWwgKHByZS1jdXJzZXMpIG1vZGVzLgogICAgICAqLwotICAgIGVuZHdpbigpOworICAgIE5DVVJTRVNfU1BfTkFNRShlbmR3aW4pIChOQ1VSU0VTX1NQX0FSRyk7CiAKICAgICAvKiBVbmJsb2NrIFNJR1RTVFAuICovCiAgICAgKHZvaWQpIHNpZ2VtcHR5c2V0KCZtYXNrKTsKQEAgLTIxMiwxOSArMjE2LDE5IEBACiAKICAgICBUKCgiU0lHQ09OVCByZWNlaXZlZCIpKTsKICAgICBzaWdhY3Rpb24oU0lHVFNUUCwgJm9hY3QsIE5VTEwpOwotICAgIGZsdXNoaW5wKCk7CisgICAgTkNVUlNFU19TUF9OQU1FKGZsdXNoaW5wKSAoTkNVUlNFU19TUF9BUkcpOwogCiAgICAgLyoKICAgICAgKiBJZiB0aGUgdXNlciBtb2RpZmllZCB0aGUgdHR5IHN0YXRlIHdoaWxlIHN1c3BlbmRlZCwgaGUgd2FudHMKICAgICAgKiB0aG9zZSBjaGFuZ2VzIHRvIHN0aWNrLiAgU28gc2F2ZSB0aGUgbmV3ICJkZWZhdWx0IiB0ZXJtaW5hbCBzdGF0ZS4KICAgICAgKi8KLSAgICBkZWZfc2hlbGxfbW9kZSgpOworICAgIE5DVVJTRVNfU1BfTkFNRShkZWZfc2hlbGxfbW9kZSkgKE5DVVJTRVNfU1BfQVJHKTsKIAogICAgIC8qCiAgICAgICogVGhpcyByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBkb3VwZGF0ZSgpIHdpbGwgcmVzdG9yZSB0aGUKICAgICAgKiBwcm9ncmFtLW1vZGUgdHR5IHN0YXRlLCBhbmQgaXNzdWUgZW50ZXJfY2FfbW9kZSBpZiBuZWVkIGJlLgogICAgICAqLwotICAgIGRvdXBkYXRlKCk7CisgICAgTkNVUlNFU19TUF9OQU1FKGRvdXBkYXRlKSAoTkNVUlNFU19TUF9BUkcpOwogCiAgICAgLyogUmVzZXQgdGhlIHNpZ25hbHMuICovCiAgICAgKHZvaWQpIHNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb21hc2ssIE5VTEwpOwpAQCAtMjMyLDE2ICsyMzYsMjQgQEAKICNlbmRpZiAvKiBVU0VfU0lHVFNUUCAqLwogCiBzdGF0aWMgdm9pZAotY2xlYW51cChpbnQgc2lnKQoraGFuZGxlX1NJR0lOVChpbnQgc2lnKQogeworICAgIFNDUkVFTiAqc3AgPSBDVVJSRU5UX1NDUkVFTjsKKwogICAgIC8qCi0gICAgICogQWN0dWFsbHksIGRvaW5nIGFueSBzb3J0IG9mIEkvTyBmcm9tIHdpdGhpbiBhbiBzaWduYWwgaGFuZGxlciBpcwotICAgICAqICJ1bnNhZmUiLiAgQnV0IHdlJ2xsIF90cnlfIHRvIGNsZWFuIHVwIHRoZSBzY3JlZW4gYW5kIHRlcm1pbmFsCi0gICAgICogc2V0dGluZ3Mgb24gdGhlIHdheSBvdXQuCisgICAgICogTXVjaCBvZiB0aGlzIGlzIHVuc2FmZSBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuICBCdXQgd2UnbGwgX3RyeV8gdG8gY2xlYW4KKyAgICAgKiB1cCB0aGUgc2NyZWVuIGFuZCB0ZXJtaW5hbCBzZXR0aW5ncyBvbiB0aGUgd2F5IG91dC4KKyAgICAgKgorICAgICAqIFRoZXJlIGFyZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIHByb2JsZW1zOgorICAgICAqIDEpIFdhbGtpbmcgdGhlIFNDUkVFTiBsaXN0IGlzIHVuc2FmZSwgc2luY2UgYWxsIGxpc3QgbWFuYWdlbWVudAorICAgICAqICAgIGlzIGRvbmUgd2l0aG91dCBhbnkgc2lnbmFsIGJsb2NraW5nLgorICAgICAqIDIpIE9uIHN5c3RlbXMgd2hpY2ggaGF2ZSBSRUVOVFJBTlQgdHVybmVkIG9uLCBzZXRfdGVybSgpIHVzZXMKKyAgICAgKiAgICBfbmNfbG9ja19nbG9iYWwoKSB3aGljaCBjb3VsZCBkZWFkbG9jayBvciBtaXNiZWhhdmUgaW4gb3RoZXIgd2F5cy4KKyAgICAgKiAzKSBlbmR3aW4oKSBjYWxscyBhbGwgc29ydHMgb2Ygc3R1ZmYsIG1hbnkgb2Ygd2hpY2ggdXNlIHN0ZGlvIG9yCisgICAgICogICAgb3RoZXIgbGlicmFyeSBmdW5jdGlvbnMgd2hpY2ggYXJlIGNsZWFybHkgdW5zYWZlLgogICAgICAqLwogICAgIGlmICghX25jX2dsb2JhbHMuY2xlYW51cF9uZXN0ZWQrKwotCSYmIChzaWcgPT0gU0lHSU5UCi0JICAgIHx8IHNpZyA9PSBTSUdRVUlUKSkgeworCSYmIChzaWcgPT0gU0lHSU5UIHx8IHNpZyA9PSBTSUdURVJNKSkgewogI2lmIEhBVkVfU0lHQUNUSU9OIHx8IEhBVkVfU0lHVkVDCiAJc2lnYWN0aW9uX3QgYWN0OwogCXNpZ2VtcHR5c2V0KCZhY3Quc2FfbWFzayk7CkBAIC0yNTUsMjUgKzI2NywzMSBAQAogCSAgICBTQ1JFRU4gKnNjYW47CiAJICAgIGZvciAoZWFjaF9zY3JlZW4oc2NhbikpIHsKIAkJaWYgKHNjYW4tPl9vZnAgIT0gMAotCQkgICAgJiYgaXNhdHR5KGZpbGVubyhzY2FuLT5fb2ZwKSkpIHsKLQkJICAgIHNjYW4tPl9jbGVhbnVwID0gVFJVRTsKLQkJICAgIHNjYW4tPl9vdXRjaCA9IF9uY19vdXRjaDsKKwkJICAgICYmIE5DX0lTQVRUWShmaWxlbm8oc2Nhbi0+X29mcCkpKSB7CisJCSAgICBzY2FuLT5fb3V0Y2ggPSBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKTsKIAkJfQogCQlzZXRfdGVybShzY2FuKTsKLQkJZW5kd2luKCk7Ci0JCWlmIChTUCkKLQkJICAgIFNQLT5fZW5kd2luID0gRkFMU0U7CS8qIGluIGNhc2Ugd2UgaGF2ZSBhbiBhdGV4aXQhICovCisJCU5DVVJTRVNfU1BfTkFNRShlbmR3aW4pIChOQ1VSU0VTX1NQX0FSRyk7CisJCWlmIChzcCkKKwkJICAgIHNwLT5fZW5kd2luID0gRkFMU0U7CS8qIGluIGNhc2Ugb2YgcmV1c2UgKi8KIAkgICAgfQogCX0KICAgICB9Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgIF9leGl0KEVYSVRfRkFJTFVSRSk7CiB9CiAKICNpZiBVU0VfU0lHV0lOQ0gKIHN0YXRpYyB2b2lkCi1zaWd3aW5jaChpbnQgc2lnIEdDQ19VTlVTRUQpCitoYW5kbGVfU0lHV0lOQ0goaW50IHNpZyBHQ0NfVU5VU0VEKQogewogICAgIF9uY19nbG9iYWxzLmhhdmVfc2lnd2luY2ggPSAxOworIyBpZiBVU0VfUFRIUkVBRFNfRUlOVFIKKyAgICBpZiAoX25jX2dsb2JhbHMucmVhZF90aHJlYWQpIHsKKwlpZiAoIXB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkKSkKKwkgICAgcHRocmVhZF9raWxsKF9uY19nbG9iYWxzLnJlYWRfdGhyZWFkLCBTSUdXSU5DSCk7CisJX25jX2dsb2JhbHMucmVhZF90aHJlYWQgPSAwOworICAgIH0KKyMgZW5kaWYKIH0KICNlbmRpZiAvKiBVU0VfU0lHV0lOQ0ggKi8KIApAQCAtMjgyLDcgKzMwMCw3IEBACiAgKiBoYW5kbGVyLgogICovCiBzdGF0aWMgaW50Ci1DYXRjaElmRGVmYXVsdChpbnQgc2lnLCBSRVRTSUdUWVBFICgqaGFuZGxlcikgKGludCkpCitDYXRjaElmRGVmYXVsdChpbnQgc2lnLCB2b2lkICgqaGFuZGxlcikgKGludCkpCiB7CiAgICAgaW50IHJlc3VsdDsKICNpZiBIQVZFX1NJR0FDVElPTiB8fCBIQVZFX1NJR1ZFQwpAQCAtMzEyLDcgKzMzMCw3IEBACiAJcmVzdWx0ID0gRkFMU0U7CiAgICAgfQogI2Vsc2UgLyogIUhBVkVfU0lHQUNUSU9OICovCi0gICAgUkVUU0lHVFlQRSAoKm9oYW5kbGVyKSAoaW50KTsKKyAgICB2b2lkICgqb2hhbmRsZXIpIChpbnQpOwogCiAgICAgb2hhbmRsZXIgPSBzaWduYWwoc2lnLCBTSUdfSUdOKTsKICAgICBpZiAob2hhbmRsZXIgPT0gU0lHX0RGTApAQCAtMzQ1LDcgKzM2Myw3IEBACiAgKiB0aGUgY2FsbGVyIGxhdGVyIGNoYW5nZXMgaXRzIG1pbmQsIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSBjb3JyZWN0LgogICovCiBOQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX3NpZ25hbF9oYW5kbGVyKGJvb2wgZW5hYmxlKQorX25jX3NpZ25hbF9oYW5kbGVyKGludCBlbmFibGUpCiB7CiAgICAgVCgoVF9DQUxMRUQoIl9uY19zaWduYWxfaGFuZGxlciglZCkiKSwgZW5hYmxlKSk7CiAjaWYgVVNFX1NJR1RTVFAJCQkvKiBYZW5peCAyLnggZG9lc24ndCBoYXZlIFNJR1RTVFAsIGZvciBleGFtcGxlICovCkBAIC0zNjYsNyArMzg0LDcgQEAKICNpZmRlZiBTQV9SRVNUQVJUCiAJCW5ld19zaWdhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfUkVTVEFSVDsKICNlbmRpZiAvKiBTQV9SRVNUQVJUICovCi0JCW5ld19zaWdhY3Rpb24uc2FfaGFuZGxlciA9IHRzdHA7CisJCW5ld19zaWdhY3Rpb24uc2FfaGFuZGxlciA9IGhhbmRsZV9TSUdUU1RQOwogCQkodm9pZCkgc2lnYWN0aW9uKFNJR1RTVFAsICZuZXdfc2lnYWN0aW9uLCBOVUxMKTsKIAkgICAgfSBlbHNlIHsKIAkJaWdub3JlX3RzdHAgPSBUUlVFOwpAQCAtMzc3LDEwICszOTUsMTAgQEAKIAogICAgIGlmICghX25jX2dsb2JhbHMuaW5pdF9zaWduYWxzKSB7CiAJaWYgKGVuYWJsZSkgewotCSAgICBDYXRjaElmRGVmYXVsdChTSUdJTlQsIGNsZWFudXApOwotCSAgICBDYXRjaElmRGVmYXVsdChTSUdURVJNLCBjbGVhbnVwKTsKKwkgICAgQ2F0Y2hJZkRlZmF1bHQoU0lHSU5ULCBoYW5kbGVfU0lHSU5UKTsKKwkgICAgQ2F0Y2hJZkRlZmF1bHQoU0lHVEVSTSwgaGFuZGxlX1NJR0lOVCk7CiAjaWYgVVNFX1NJR1dJTkNICi0JICAgIENhdGNoSWZEZWZhdWx0KFNJR1dJTkNILCBzaWd3aW5jaCk7CisJICAgIENhdGNoSWZEZWZhdWx0KFNJR1dJTkNILCBoYW5kbGVfU0lHV0lOQ0gpOwogI2VuZGlmCiAJICAgIF9uY19nbG9iYWxzLmluaXRfc2lnbmFscyA9IFRSVUU7CiAJfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy90dHkvbGliX3R3YWl0LmMgYi9uY3Vyc2VzL3R0eS9saWJfdHdhaXQuYwppbmRleCAxNmQxMmVkLi4xNWQwN2MzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3R0eS9saWJfdHdhaXQuYworKysgYi9uY3Vyc2VzL3R0eS9saWJfdHdhaXQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTUzLDYgKzUzLDExIEBACiAjaW5jbHVkZSA8T1MuaD4KICNlbmRpZgogCisjaWYgVVNFX0tMSUJDX0tCRAorI2RlZmluZSBJTkNMX0tCRAorI2luY2x1ZGUgPG9zMi5oPgorI2VuZGlmCisKICNpZiBVU0VfRlVOQ19QT0xMCiAjIGlmIEhBVkVfU1lTX1RJTUVfSAogIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTY1LDEzICs3MCwxNSBAQAogIyAgaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgogIyBlbmRpZgogI2VuZGlmCi0KKyNpZmRlZiBfX01JTkdXMzJfXworIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgogI3VuZGVmIENVUgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3R3YWl0LmMsdiAxLjU5IDIwMDgvMDgvMzAgMjA6MDg6MTkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfdHdhaXQuYyx2IDEuNzAgMjAxNS8wNy8wNCAyMTowMTowMiB0b20gRXhwICQiKQogCiBzdGF0aWMgbG9uZwotX25jX2dldHRpbWUoVGltZVR5cGUgKiB0MCwgYm9vbCBmaXJzdCkKK19uY19nZXR0aW1lKFRpbWVUeXBlICogdDAsIGludCBmaXJzdCkKIHsKICAgICBsb25nIHJlczsKIApAQCAtOTUsNyArMTAyLDcgQEAKICAgICBpZiAoZmlyc3QpIHsKIAkqdDAgPSB0MTsKICAgICB9Ci0gICAgcmVzID0gKHQxIC0gKnQwKSAqIDEwMDA7CisgICAgcmVzID0gKGxvbmcpICgodDEgLSAqdDApICogMTAwMCk7CiAjZW5kaWYKICAgICBUUihUUkFDRV9JRVZFTlQsICgiJXMgdGltZTogJWxkIG1zZWMiLCBmaXJzdCA/ICJnZXQiIDogImVsYXBzZWQiLCByZXMpKTsKICAgICByZXR1cm4gcmVzOwpAQCAtMTE0LDcgKzEyMSw3IEBACiAJICAgIF9uY19ldmVudCAqZXYgPSBldmwtPmV2ZW50c1tuXTsKIAogCSAgICBpZiAoZXYtPnR5cGUgPT0gX05DX0VWRU5UX1RJTUVPVVRfTVNFQykgewotCQlldmVudF9kZWxheSA9IGV2LT5kYXRhLnRpbWVvdXRfbXNlYzsKKwkJZXZlbnRfZGVsYXkgPSAoaW50KSBldi0+ZGF0YS50aW1lb3V0X21zZWM7CiAJCWlmIChldmVudF9kZWxheSA8IDApCiAJCSAgICBldmVudF9kZWxheSA9IElOVF9NQVg7CS8qIEZJWE1FIElzIHRoaXMgZGVmaW5lZD8gKi8KIAkgICAgfQpAQCAtMTI0LDE1ICsxMzEsMjcgQEAKIH0KICNlbmRpZiAvKiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMgKi8KIAorI2lmIChVU0VfRlVOQ19QT0xMIHx8IEhBVkVfU0VMRUNUKQorIyAgZGVmaW5lIE1BWUJFX1VOVVNFRAorI2Vsc2UKKyMgIGRlZmluZSBNQVlCRV9VTlVTRUQgR0NDX1VOVVNFRAorI2VuZGlmCisKKyNpZiAoVVNFX0ZVTkNfUE9MTCB8fCBIQVZFX1NFTEVDVCkKKyMgIGRlZmluZSBNQVlCRV9VTlVTRUQKKyNlbHNlCisjICBkZWZpbmUgTUFZQkVfVU5VU0VEIEdDQ19VTlVTRUQKKyNlbmRpZgorCiAvKgogICogV2FpdCBhIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCByZXR1cm5pbmcgbm9uemVybyBpZiB0aGUgdGltZXIKICAqIGRpZG4ndCBleHBpcmUgYmVmb3JlIHRoZXJlIGlzIGFjdGl2aXR5IG9uIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9ycy4KICAqIFRoZSBmaWxlLWRlc2NyaXB0b3JzIGFyZSBzcGVjaWZpZWQgYnkgdGhlIG1vZGU6Ci0gKgkwIC0gbm9uZSAoYWJzb2x1dGUgdGltZSkKLSAqCTEgLSBuY3Vyc2VzJyBub3JtYWwgaW5wdXQtZGVzY3JpcHRvcgotICoJMiAtIG1vdXNlIGRlc2NyaXB0b3IsIGlmIGFueQotICoJMyAtIGVpdGhlciBpbnB1dCBvciBtb3VzZS4KLSAqCisgKglUV19OT05FICAgIDAgLSBub25lIChhYnNvbHV0ZSB0aW1lKQorICoJVFdfSU5QVVQgICAxIC0gbmN1cnNlcycgbm9ybWFsIGlucHV0LWRlc2NyaXB0b3IKKyAqCVRXX01PVVNFICAgMiAtIG1vdXNlIGRlc2NyaXB0b3IsIGlmIGFueQorICoJVFdfQU5ZICAgICAzIC0gZWl0aGVyIGlucHV0IG9yIG1vdXNlLgorICogICAgICBUV19FVkVOVCAgIDQgLQogICogRXhwZXJpbWVudGFsOiAgaWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTIGlzIGRlZmluZWQsIChtb2RlICYgNCkgZGV0ZXJtaW5lcwogICogd2hldGhlciB0byBwYXkgYXR0ZW50aW9uIHRvIGV2bCBhcmd1bWVudC4gIElmIHNldCwgdGhlIHNtYWxsZXN0IG9mCiAgKiBtaWxsaXNlY29uZCBhbmQgb2YgdGltZW91dCBvZiBldmwgaXMgdGFrZW4uCkBAIC0xNDMsMTYgKzE2MiwxOCBAQAogICogZGVzY3JpcHRvcnMuCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKLV9uY190aW1lZF93YWl0KFNDUkVFTiAqc3AsCi0JICAgICAgIGludCBtb2RlLAorX25jX3RpbWVkX3dhaXQoU0NSRUVOICpzcCBNQVlCRV9VTlVTRUQsCisJICAgICAgIGludCBtb2RlIE1BWUJFX1VOVVNFRCwKIAkgICAgICAgaW50IG1pbGxpc2Vjb25kcywKIAkgICAgICAgaW50ICp0aW1lbGVmdAogCSAgICAgICBFVkVOVExJU1RfMm5kKF9uY19ldmVudGxpc3QgKiBldmwpKQogewotICAgIGludCBmZDsKICAgICBpbnQgY291bnQ7Ci0gICAgaW50IHJlc3VsdCA9IDA7CisgICAgaW50IHJlc3VsdCA9IFRXX05PTkU7CiAgICAgVGltZVR5cGUgdDA7CisjaWYgKFVTRV9GVU5DX1BPTEwgfHwgSEFWRV9TRUxFQ1QpCisgICAgaW50IGZkOworI2VuZGlmCiAKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKICAgICBpbnQgdGltZW91dF9pc19ldmVudCA9IDA7CkBAIC0xNjgsMTMgKzE4OSwxOSBAQAogICAgIGZkX3NldCBzZXQ7CiAjZW5kaWYKIAorI2lmIFVTRV9LTElCQ19LQkQKKyAgICBmZF9zZXQgc2F2ZWRfc2V0OworICAgIEtCREtFWUlORk8ga2k7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisjZW5kaWYKKwogICAgIGxvbmcgc3RhcnR0aW1lLCByZXR1cm50aW1lOwogCiAgICAgVFIoVFJBQ0VfSUVWRU5ULCAoInN0YXJ0IHR3YWl0OiAlZCBtaWxsaXNlY29uZHMsIG1vZGU6ICVkIiwKIAkJICAgICAgbWlsbGlzZWNvbmRzLCBtb2RlKSk7CiAKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSAgICBpZiAobW9kZSAmIDQpIHsKKyAgICBpZiAobW9kZSAmIFRXX0VWRU5UKSB7CiAJaW50IGV2ZW50X2RlbGF5ID0gX25jX2V2ZW50bGlzdF90aW1lb3V0KGV2bCk7CiAKIAlpZiAoZXZlbnRfZGVsYXkgPj0gMApAQCAtMTkxLDkgKzIxOCwxMCBAQAogICAgIHN0YXJ0dGltZSA9IF9uY19nZXR0aW1lKCZ0MCwgVFJVRSk7CiAKICAgICBjb3VudCA9IDA7CisgICAgKHZvaWQpIGNvdW50OwogCiAjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCi0gICAgaWYgKChtb2RlICYgNCkgJiYgZXZsKQorICAgIGlmICgobW9kZSAmIFRXX0VWRU5UKSAmJiBldmwpCiAJZXZsLT5yZXN1bHRfZmxhZ3MgPSAwOwogI2VuZGlmCiAKQEAgLTIwMSwyMyArMjI5LDI3IEBACiAgICAgbWVtc2V0KGZkX2xpc3QsIDAsIHNpemVvZihmZF9saXN0KSk7CiAKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSAgICBpZiAoKG1vZGUgJiA0KSAmJiBldmwpCi0JZmRzID0gdHlwZU1hbGxvYyhzdHJ1Y3QgcG9sbGZkLCBNSU5fRkRTICsgZXZsLT5jb3VudCk7CisgICAgaWYgKChtb2RlICYgVFdfRVZFTlQpICYmIGV2bCkgeworCWlmIChmZHMgPT0gZmRfbGlzdCkKKwkgICAgZmRzID0gdHlwZU1hbGxvYyhzdHJ1Y3QgcG9sbGZkLCBNSU5fRkRTICsgZXZsLT5jb3VudCk7CisJaWYgKGZkcyA9PSAwKQorCSAgICByZXR1cm4gVFdfTk9ORTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGlmIChtb2RlICYgMSkgeworICAgIGlmIChtb2RlICYgVFdfSU5QVVQpIHsKIAlmZHNbY291bnRdLmZkID0gc3AtPl9pZmQ7CiAJZmRzW2NvdW50XS5ldmVudHMgPSBQT0xMSU47CiAJY291bnQrKzsKICAgICB9Ci0gICAgaWYgKChtb2RlICYgMikKKyAgICBpZiAoKG1vZGUgJiBUV19NT1VTRSkKIAkmJiAoZmQgPSBzcC0+X21vdXNlX2ZkKSA+PSAwKSB7CiAJZmRzW2NvdW50XS5mZCA9IGZkOwogCWZkc1tjb3VudF0uZXZlbnRzID0gUE9MTElOOwogCWNvdW50Kys7CiAgICAgfQogI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwotICAgIGlmICgobW9kZSAmIDQpICYmIGV2bCkgeworICAgIGlmICgobW9kZSAmIFRXX0VWRU5UKSAmJiBldmwpIHsKIAlmb3IgKG4gPSAwOyBuIDwgZXZsLT5jb3VudDsgKytuKSB7CiAJICAgIF9uY19ldmVudCAqZXYgPSBldmwtPmV2ZW50c1tuXTsKIApAQCAtMjMxLDEwICsyNjMsMTAgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHJlc3VsdCA9IHBvbGwoZmRzLCAodW5zaWduZWQpIGNvdW50LCBtaWxsaXNlY29uZHMpOworICAgIHJlc3VsdCA9IHBvbGwoZmRzLCAoc2l6ZV90KSBjb3VudCwgbWlsbGlzZWNvbmRzKTsKIAogI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwotICAgIGlmICgobW9kZSAmIDQpICYmIGV2bCkgeworICAgIGlmICgobW9kZSAmIFRXX0VWRU5UKSAmJiBldmwpIHsKIAlpbnQgYzsKIAogCWlmICghcmVzdWx0KQpAQCAtMjU4LDEwICsyOTAsNiBAQAogCSAgICB9CiAJfQogICAgIH0KLQotICAgIGlmIChmZHMgIT0gZmRfbGlzdCkKLQlmcmVlKChjaGFyICopIGZkcyk7Ci0KICNlbmRpZgogCiAjZWxpZiBkZWZpbmVkKF9fQkVPU19fKQpAQCAtMjc2LDggKzMwNCw4IEBACiAgICAgICoKICAgICAgKiBGSVhNRTogdGhpcyBhc3N1bWVzIG1vZGUmMSBpZiBtaWxsaXNlY29uZHMgPCAwIChzZWUgbGliX2dldGNoLmMpLgogICAgICAqLwotICAgIHJlc3VsdCA9IDA7Ci0gICAgaWYgKG1vZGUgJiAxKSB7CisgICAgcmVzdWx0ID0gVFdfTk9ORTsKKyAgICBpZiAobW9kZSAmIFRXX0lOUFVUKSB7CiAJaW50IHN0ZXAgPSAobWlsbGlzZWNvbmRzIDwgMCkgPyAwIDogNTAwMDsKIAliaWd0aW1lX3QgZDsKIAliaWd0aW1lX3QgdXNlY29uZHMgPSBtaWxsaXNlY29uZHMgKiAxMDAwOwpAQCAtMzEzLDE3ICszNDEsMTkgQEAKICAgICAgKi8KICAgICBGRF9aRVJPKCZzZXQpOwogCi0gICAgaWYgKG1vZGUgJiAxKSB7CisjaWYgIVVTRV9LTElCQ19LQkQKKyAgICBpZiAobW9kZSAmIFRXX0lOUFVUKSB7CiAJRkRfU0VUKHNwLT5faWZkLCAmc2V0KTsKIAljb3VudCA9IHNwLT5faWZkICsgMTsKICAgICB9Ci0gICAgaWYgKChtb2RlICYgMikKKyNlbmRpZgorICAgIGlmICgobW9kZSAmIFRXX01PVVNFKQogCSYmIChmZCA9IHNwLT5fbW91c2VfZmQpID49IDApIHsKIAlGRF9TRVQoZmQsICZzZXQpOwogCWNvdW50ID0gbWF4KGZkLCBjb3VudCkgKyAxOwogICAgIH0KICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSAgICBpZiAoKG1vZGUgJiA0KSAmJiBldmwpIHsKKyAgICBpZiAoKG1vZGUgJiBUV19FVkVOVCkgJiYgZXZsKSB7CiAJZm9yIChuID0gMDsgbiA8IGV2bC0+Y291bnQ7ICsrbikgewogCSAgICBfbmNfZXZlbnQgKmV2ID0gZXZsLT5ldmVudHNbbl07CiAKQEAgLTMzNiw2ICszNjYsMzEgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmIFVTRV9LTElCQ19LQkQKKyAgICBmb3IgKHNhdmVkX3NldCA9IHNldDs7IHNldCA9IHNhdmVkX3NldCkgeworCWlmICgobW9kZSAmIFRXX0lOUFVUKQorCSAgICAmJiAoc3AtPl9leHRlbmRlZF9rZXkKKwkJfHwgKEtiZFBlZWsoJmtpLCAwKSA9PSAwCisJCSAgICAmJiAoa2kuZmJTdGF0dXMgJiBLQkRUUkZfRklOQUxfQ0hBUl9JTikpKSkgeworCSAgICBGRF9aRVJPKCZzZXQpOworCSAgICBGRF9TRVQoc3AtPl9pZmQsICZzZXQpOworCSAgICByZXN1bHQgPSAxOworCSAgICBicmVhazsKKwl9CisKKwl0di50dl9zZWMgPSAwOworCXR2LnR2X3VzZWMgPSAobWlsbGlzZWNvbmRzID09IDApID8gMCA6ICgxMCAqIDEwMDApOworCisJaWYgKChyZXN1bHQgPSBzZWxlY3QoY291bnQsICZzZXQsIE5VTEwsIE5VTEwsICZ0dikpICE9IDApCisJICAgIGJyZWFrOworCisJLyogVGltZSBvdXQgPyAqLworCWlmIChtaWxsaXNlY29uZHMgPj0gMCAmJiBfbmNfZ2V0dGltZSgmdDAsIEZBTFNFKSA+PSBtaWxsaXNlY29uZHMpIHsKKwkgICAgcmVzdWx0ID0gMDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyNlbHNlCiAgICAgaWYgKG1pbGxpc2Vjb25kcyA+PSAwKSB7CiAJc3RydWN0IHRpbWV2YWwgbnRpbWVvdXQ7CiAJbnRpbWVvdXQudHZfc2VjID0gbWlsbGlzZWNvbmRzIC8gMTAwMDsKQEAgLTM0NCw5ICszOTksMTAgQEAKICAgICB9IGVsc2UgewogCXJlc3VsdCA9IHNlbGVjdChjb3VudCwgJnNldCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgfQorI2VuZGlmCiAKICNpZmRlZiBOQ1VSU0VTX1dHRVRDSF9FVkVOVFMKLSAgICBpZiAoKG1vZGUgJiA0KSAmJiBldmwpIHsKKyAgICBpZiAoKG1vZGUgJiBUV19FVkVOVCkgJiYgZXZsKSB7CiAJZXZsLT5yZXN1bHRfZmxhZ3MgPSAwOwogCWZvciAobiA9IDA7IG4gPCBldmwtPmNvdW50OyArK24pIHsKIAkgICAgX25jX2V2ZW50ICpldiA9IGV2bC0+ZXZlbnRzW25dOwpAQCAtMzcwLDcgKzQyNiw3IEBACiAgICAgcmV0dXJudGltZSA9IF9uY19nZXR0aW1lKCZ0MCwgRkFMU0UpOwogCiAgICAgaWYgKG1pbGxpc2Vjb25kcyA+PSAwKQotCW1pbGxpc2Vjb25kcyAtPSAocmV0dXJudGltZSAtIHN0YXJ0dGltZSk7CisJbWlsbGlzZWNvbmRzIC09IChpbnQpIChyZXR1cm50aW1lIC0gc3RhcnR0aW1lKTsKIAogI2lmZGVmIE5DVVJTRVNfV0dFVENIX0VWRU5UUwogICAgIGlmIChldmwpIHsKQEAgLTQyOCwyMiArNDg0LDI5IEBACiAJCX0KIAkgICAgfQogI2VsaWYgZGVmaW5lZChfX0JFT1NfXykKLQkgICAgcmVzdWx0ID0gMTsJCS8qIHJlZHVuZGFudCwgYnV0IHNpbXBsZSAqLworCSAgICByZXN1bHQgPSBUV19JTlBVVDsJLyogcmVkdW5kYW50LCBidXQgc2ltcGxlICovCiAjZWxpZiBIQVZFX1NFTEVDVAotCSAgICBpZiAoKG1vZGUgJiAyKQorCSAgICBpZiAoKG1vZGUgJiBUV19NT1VTRSkKIAkJJiYgKGZkID0gc3AtPl9tb3VzZV9mZCkgPj0gMAogCQkmJiBGRF9JU1NFVChmZCwgJnNldCkpCi0JCXJlc3VsdCB8PSAyOwotCSAgICBpZiAoKG1vZGUgJiAxKQorCQlyZXN1bHQgfD0gVFdfTU9VU0U7CisJICAgIGlmICgobW9kZSAmIFRXX0lOUFVUKQogCQkmJiBGRF9JU1NFVChzcC0+X2lmZCwgJnNldCkpCi0JCXJlc3VsdCB8PSAxOworCQlyZXN1bHQgfD0gVFdfSU5QVVQ7CiAjZW5kaWYKIAl9IGVsc2UKIAkgICAgcmVzdWx0ID0gMDsKICAgICB9CiAjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCi0gICAgaWYgKChtb2RlICYgNCkgJiYgZXZsICYmIGV2bC0+cmVzdWx0X2ZsYWdzKQotCXJlc3VsdCB8PSA0OworICAgIGlmICgobW9kZSAmIFRXX0VWRU5UKSAmJiBldmwgJiYgZXZsLT5yZXN1bHRfZmxhZ3MpCisJcmVzdWx0IHw9IFRXX0VWRU5UOworI2VuZGlmCisKKyNpZiBVU0VfRlVOQ19QT0xMCisjaWZkZWYgTkNVUlNFU19XR0VUQ0hfRVZFTlRTCisgICAgaWYgKGZkcyAhPSBmZF9saXN0KQorCWZyZWUoKGNoYXIgKikgZmRzKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICByZXR1cm4gKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3R0eS9saWJfdmlkYXR0ci5jIGIvbmN1cnNlcy90dHkvbGliX3ZpZGF0dHIuYwppbmRleCBhYzJhNzRmLi4xODRkOWI5IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3R0eS9saWJfdmlkYXR0ci5jCisrKyBiL25jdXJzZXMvdHR5L2xpYl92aWRhdHRyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw3ICsyOSw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5NiBvbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAyMDA5ICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTYzLDU1ICs2NCw2OSBAQAogICovCiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgotI2luY2x1ZGUgPHRlcm0uaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl92aWRhdHRyLmMsdiAxLjQ5IDIwMDcvMDYvMzAgMjE6NTg6MDQgdG9tIEV4cCAkIikKKyNpZm5kZWYgQ1VSCisjZGVmaW5lIENVUiBTUF9URVJNVFlQRQorI2VuZGlmCiAKLSNkZWZpbmUgZG9QdXQobW9kZSkgVFBVVFNfVFJBQ0UoI21vZGUpOyB0cHV0cyhtb2RlLCAxLCBvdXRjKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl92aWRhdHRyLmMsdiAxLjcxIDIwMTQvMDkvMDQgMjI6MDE6MjcgdG9tIEV4cCAkIikKIAotI2RlZmluZSBUdXJuT24obWFzayxtb2RlKSBcCisjZGVmaW5lIGRvUHV0KG1vZGUpIFwKKwlUUFVUU19UUkFDRSgjbW9kZSk7IFwKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3ggbW9kZSwgMSwgb3V0YykKKworI2RlZmluZSBUdXJuT24obWFzaywgbW9kZSkgXAogCWlmICgodHVybl9vbiAmIG1hc2spICYmIG1vZGUpIHsgZG9QdXQobW9kZSk7IH0KIAotI2RlZmluZSBUdXJuT2ZmKG1hc2ssbW9kZSkgXAorI2RlZmluZSBUdXJuT2ZmKG1hc2ssIG1vZGUpIFwKIAlpZiAoKHR1cm5fb2ZmICYgbWFzaykgJiYgbW9kZSkgeyBkb1B1dChtb2RlKTsgdHVybl9vZmYgJj0gfm1hc2s7IH0KIAogCS8qIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgc2NyZWVuLCBhc3N1bWUgd2UgKmNhbiogZG8gY29sb3IgKi8KLSNkZWZpbmUgU2V0Q29sb3JzSWYod2h5LG9sZF9hdHRyKSBcCisjZGVmaW5lIFNldENvbG9yc0lmKHdoeSwgb2xkX2F0dHIpIFwKIAlpZiAoY2FuX2NvbG9yICYmICh3aHkpKSB7IFwKLQkJaW50IG9sZF9wYWlyID0gUEFJUl9OVU1CRVIob2xkX2F0dHIpOyBcCisJCWludCBvbGRfcGFpciA9IFBhaXJOdW1iZXIob2xkX2F0dHIpOyBcCiAJCVRSKFRSQUNFX0FUVFJTLCAoIm9sZCBwYWlyID0gJWQgLS0gbmV3IHBhaXIgPSAlZCIsIG9sZF9wYWlyLCBwYWlyKSk7IFwKIAkJaWYgKChwYWlyICE9IG9sZF9wYWlyKSBcCiAJCSB8fCAoZml4X3BhaXIwICYmIChwYWlyID09IDApKSBcCiAJCSB8fCAocmV2ZXJzZSBeICgob2xkX2F0dHIgJiBBX1JFVkVSU0UpICE9IDApKSkgeyBcCi0JCQlfbmNfZG9fY29sb3Iob2xkX3BhaXIsIHBhaXIsIHJldmVyc2UsIG91dGMpOyBcCisJCSAgICAgTkNVUlNFU19TUF9OQU1FKF9uY19kb19jb2xvcikgKE5DVVJTRVNfU1BfQVJHeCBcCisJCQkJICAgICAoc2hvcnQpIG9sZF9wYWlyLCBcCisJCQkJICAgICAoc2hvcnQpIHBhaXIsIFwKKwkJCQkgICAgIHJldmVyc2UsIG91dGMpOyBcCiAJCX0gXAogCX0KIAogI2RlZmluZSBQcmV2aW91c0F0dHIgX25jX3ByZXNjcmVlbi5wcmV2aW91c19hdHRyCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXZpZHB1dHMoY2h0eXBlIG5ld21vZGUsIGludCAoKm91dGMpIChpbnQpKQorTkNVUlNFU19TUF9OQU1FKHZpZHB1dHMpIChOQ1VSU0VTX1NQX0RDTHgKKwkJCSAgY2h0eXBlIG5ld21vZGUsCisJCQkgIE5DVVJTRVNfU1BfT1VUQyBvdXRjKQogewogICAgIGF0dHJfdCB0dXJuX29uLCB0dXJuX29mZjsKICAgICBpbnQgcGFpcjsKICAgICBib29sIHJldmVyc2UgPSBGQUxTRTsKLSAgICBib29sIGNhbl9jb2xvciA9IChTUCA9PSAwIHx8IFNQLT5fY29sb3Jvbik7CisgICAgYm9vbCBjYW5fY29sb3IgPSAoU1BfUEFSTSA9PSAwIHx8IFNQX1BBUk0tPl9jb2xvcm9uKTsKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotICAgIGJvb2wgZml4X3BhaXIwID0gKFNQICE9IDAgJiYgU1AtPl9jb2xvcm9uICYmICFTUC0+X2RlZmF1bHRfY29sb3IpOworICAgIGJvb2wgZml4X3BhaXIwID0gKFNQX1BBUk0gIT0gMCAmJiBTUF9QQVJNLT5fY29sb3JvbiAmJiAhU1BfUEFSTS0+X2RlZmF1bHRfY29sb3IpOwogI2Vsc2UKICNkZWZpbmUgZml4X3BhaXIwIEZBTFNFCiAjZW5kaWYKIAogICAgIG5ld21vZGUgJj0gQV9BVFRSSUJVVEVTOwotICAgIFQoKFRfQ0FMTEVEKCJ2aWRwdXRzKCVzKSIpLCBfdHJhY2VhdHRyKG5ld21vZGUpKSk7CisKKyAgICBUKChUX0NBTExFRCgidmlkcHV0cyglcCwlcykiKSwgKHZvaWQgKikgU1BfUEFSTSwgX3RyYWNlYXR0cihuZXdtb2RlKSkpOworCisgICAgaWYgKCFJc1Rlcm1JbmZvKFNQX1BBUk0pKQorCXJldHVybkNvZGUoRVJSKTsKIAogICAgIC8qIHRoaXMgYWxsb3dzIHVzIHRvIGdvIG9uIHdoZXRoZXIgb3Igbm90IG5ld3Rlcm0oKSBoYXMgYmVlbiBjYWxsZWQgKi8KLSAgICBpZiAoU1ApCi0JUHJldmlvdXNBdHRyID0gQXR0ck9mKFNDUkVFTl9BVFRSUyhTUCkpOworICAgIGlmIChTUF9QQVJNKQorCVByZXZpb3VzQXR0ciA9IEF0dHJPZihTQ1JFRU5fQVRUUlMoU1BfUEFSTSkpOwogCiAgICAgVFIoVFJBQ0VfQVRUUlMsICgicHJldmlvdXMgYXR0cmlidXRlIHdhcyAlcyIsIF90cmFjZWF0dHIoUHJldmlvdXNBdHRyKSkpOwogCi0gICAgaWYgKChTUCAhPSAwKQorICAgIGlmICgoU1BfUEFSTSAhPSAwKQogCSYmIChtYWdpY19jb29raWVfZ2xpdGNoID4gMCkpIHsKICNpZiBVU0VfWE1DX1NVUFBPUlQKIAlzdGF0aWMgY29uc3QgY2h0eXBlIHRhYmxlW10gPQpAQCAtMTI0LDYgKzEzOSw5IEBACiAJICAgIEFfQk9MRCwKIAkgICAgQV9JTlZJUywKIAkgICAgQV9QUk9URUNULAorI2lmIFVTRV9JVEFMSUMKKwkgICAgQV9JVEFMSUMsCisjZW5kaWYKIAl9OwogCXVuc2lnbmVkIG47CiAJaW50IHVzZWQgPSAwOwpAQCAtMTM1LDcgKzE1Myw3IEBACiAJICogdGhlIHRlcm1pbmZvIG1heF9hdHRyaWJ1dGVzIHZhbHVlLgogCSAqLwogCWZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyArK24pIHsKLQkgICAgaWYgKCh0YWJsZVtuXSAmIFNQLT5fb2tfYXR0cmlidXRlcykgPT0gMCkgeworCSAgICBpZiAoKHRhYmxlW25dICYgU1BfUEFSTS0+X29rX2F0dHJpYnV0ZXMpID09IDApIHsKIAkJbmV3bW9kZSAmPSB+dGFibGVbbl07CiAJICAgIH0gZWxzZSBpZiAoKHRhYmxlW25dICYgbmV3bW9kZSkgIT0gMCkgewogCQlpZiAodXNlZCsrID49IGxpbWl0KSB7CkBAIC0xNDgsNyArMTY2LDcgQEAKIAkgICAgfQogCX0KICNlbHNlCi0JbmV3bW9kZSAmPSB+KFNQLT5feG1jX3N1cHByZXNzKTsKKwluZXdtb2RlICY9IH4oU1BfUEFSTS0+X3htY19zdXBwcmVzcyk7CiAjZW5kaWYKIAlUUihUUkFDRV9BVFRSUywgKCJzdXBwcmVzc2VkIGF0dHJpYnV0ZSBpcyAlcyIsIF90cmFjZWF0dHIobmV3bW9kZSkpKTsKICAgICB9CkBAIC0xNzIsNyArMTkwLDcgQEAKIAkgKiBBX0FMVENIQVJTRVQgKDI1NikgZG93biAyIHRvIGxpbmUgdXAuICBXZSB1c2UgdGhlIE5DVVJTRVNfQklUUwogCSAqIG1hY3JvIHNvIHRoaXMgd2lsbCB3b3JrIHByb3Blcmx5IGZvciB0aGUgd2lkZS1jaGFyYWN0ZXIgbGF5b3V0LgogCSAqLwotCXVuc2lnbmVkIHZhbHVlID0gbm9fY29sb3JfdmlkZW87CisJdW5zaWduZWQgdmFsdWUgPSAodW5zaWduZWQpIG5vX2NvbG9yX3ZpZGVvOwogCWF0dHJfdCBtYXNrID0gTkNVUlNFU19CSVRTKCh2YWx1ZSAmIDYzKQogCQkJCSAgIHwgKCh2YWx1ZSAmIDE5MikgPDwgMSkKIAkJCQkgICB8ICgodmFsdWUgJiAyNTYpID4+IDIpLCA4KTsKQEAgLTE4OCwxNCArMjA2LDE0IEBACiAgICAgaWYgKG5ld21vZGUgPT0gUHJldmlvdXNBdHRyKQogCXJldHVybkNvZGUoT0spOwogCi0gICAgcGFpciA9IFBBSVJfTlVNQkVSKG5ld21vZGUpOworICAgIHBhaXIgPSBQYWlyTnVtYmVyKG5ld21vZGUpOwogCiAgICAgaWYgKHJldmVyc2UpIHsKIAluZXdtb2RlICY9IH5BX1JFVkVSU0U7CiAgICAgfQogCiAgICAgdHVybl9vZmYgPSAofm5ld21vZGUgJiBQcmV2aW91c0F0dHIpICYgQUxMX0JVVF9DT0xPUjsKLSAgICB0dXJuX29uID0gKG5ld21vZGUgJiB+UHJldmlvdXNBdHRyKSAmIEFMTF9CVVRfQ09MT1I7CisgICAgdHVybl9vbiA9IChuZXdtb2RlICYgfihQcmV2aW91c0F0dHIgJiBUUEFSTV9BVFRSKSkgJiBBTExfQlVUX0NPTE9SOwogCiAgICAgU2V0Q29sb3JzSWYoKChwYWlyID09IDApICYmICFmaXhfcGFpcjApLCBQcmV2aW91c0F0dHIpOwogCkBAIC0yMDgsMTIgKzIyNiwxNyBAQAogCSAgICBpZiAoZXhpdF9hdHRyaWJ1dGVfbW9kZSkgewogCQlkb1B1dChleGl0X2F0dHJpYnV0ZV9tb2RlKTsKIAkgICAgfSBlbHNlIHsKLQkJaWYgKCFTUCB8fCBTUC0+X3VzZV9ybXVsKSB7CisJCWlmICghU1BfUEFSTSB8fCBTUF9QQVJNLT5fdXNlX3JtdWwpIHsKIAkJICAgIFR1cm5PZmYoQV9VTkRFUkxJTkUsIGV4aXRfdW5kZXJsaW5lX21vZGUpOwogCQl9Ci0JCWlmICghU1AgfHwgU1AtPl91c2Vfcm1zbykgeworCQlpZiAoIVNQX1BBUk0gfHwgU1BfUEFSTS0+X3VzZV9ybXNvKSB7CiAJCSAgICBUdXJuT2ZmKEFfU1RBTkRPVVQsIGV4aXRfc3RhbmRvdXRfbW9kZSk7CiAJCX0KKyNpZiBVU0VfSVRBTElDCisJCWlmICghU1BfUEFSTSB8fCBTUF9QQVJNLT5fdXNlX3JpdG0pIHsKKwkJICAgIFR1cm5PZmYoQV9JVEFMSUMsIGV4aXRfaXRhbGljc19tb2RlKTsKKwkJfQorI2VuZGlmCiAJICAgIH0KIAkgICAgUHJldmlvdXNBdHRyICY9IEFMTF9CVVRfQ09MT1I7CiAJfQpAQCAtMjIyLDE4ICsyNDUsMjkgQEAKICAgICB9IGVsc2UgaWYgKHNldF9hdHRyaWJ1dGVzKSB7CiAJaWYgKHR1cm5fb24gfHwgdHVybl9vZmYpIHsKIAkgICAgVFBVVFNfVFJBQ0UoInNldF9hdHRyaWJ1dGVzIik7Ci0JICAgIHRwdXRzKHRwYXJtKHNldF9hdHRyaWJ1dGVzLAotCQkJKG5ld21vZGUgJiBBX1NUQU5ET1VUKSAhPSAwLAotCQkJKG5ld21vZGUgJiBBX1VOREVSTElORSkgIT0gMCwKLQkJCShuZXdtb2RlICYgQV9SRVZFUlNFKSAhPSAwLAotCQkJKG5ld21vZGUgJiBBX0JMSU5LKSAhPSAwLAotCQkJKG5ld21vZGUgJiBBX0RJTSkgIT0gMCwKLQkJCShuZXdtb2RlICYgQV9CT0xEKSAhPSAwLAotCQkJKG5ld21vZGUgJiBBX0lOVklTKSAhPSAwLAotCQkJKG5ld21vZGUgJiBBX1BST1RFQ1QpICE9IDAsCi0JCQkobmV3bW9kZSAmIEFfQUxUQ0hBUlNFVCkgIT0gMCksIDEsIG91dGMpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgdHBhcm0oc2V0X2F0dHJpYnV0ZXMsCisJCQkJCSAgKG5ld21vZGUgJiBBX1NUQU5ET1VUKSAhPSAwLAorCQkJCQkgIChuZXdtb2RlICYgQV9VTkRFUkxJTkUpICE9IDAsCisJCQkJCSAgKG5ld21vZGUgJiBBX1JFVkVSU0UpICE9IDAsCisJCQkJCSAgKG5ld21vZGUgJiBBX0JMSU5LKSAhPSAwLAorCQkJCQkgIChuZXdtb2RlICYgQV9ESU0pICE9IDAsCisJCQkJCSAgKG5ld21vZGUgJiBBX0JPTEQpICE9IDAsCisJCQkJCSAgKG5ld21vZGUgJiBBX0lOVklTKSAhPSAwLAorCQkJCQkgIChuZXdtb2RlICYgQV9QUk9URUNUKSAhPSAwLAorCQkJCQkgIChuZXdtb2RlICYgQV9BTFRDSEFSU0VUKSAhPSAwKSwKKwkJCQkgICAgMSwgb3V0Yyk7CiAJICAgIFByZXZpb3VzQXR0ciAmPSBBTExfQlVUX0NPTE9SOwogCX0KKyNpZiBVU0VfSVRBTElDCisJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcml0bSkgeworCSAgICBpZiAodHVybl9vbiAmIEFfSVRBTElDKSB7CisJCVR1cm5PbihBX0lUQUxJQywgZW50ZXJfaXRhbGljc19tb2RlKTsKKwkgICAgfSBlbHNlIGlmICh0dXJuX29mZiAmIEFfSVRBTElDKSB7CisJCVR1cm5PZmYoQV9JVEFMSUMsIGV4aXRfaXRhbGljc19tb2RlKTsKKwkgICAgfQorCX0KKyNlbmRpZgogCVNldENvbG9yc0lmKChwYWlyICE9IDApIHx8IGZpeF9wYWlyMCwgUHJldmlvdXNBdHRyKTsKICAgICB9IGVsc2UgewogCkBAIC0yNDEsMTQgKzI3NSwxOCBAQAogCiAJVHVybk9mZihBX0FMVENIQVJTRVQsIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSk7CiAKLQlpZiAoIVNQIHx8IFNQLT5fdXNlX3JtdWwpIHsKKwlpZiAoIVNQX1BBUk0gfHwgU1BfUEFSTS0+X3VzZV9ybXVsKSB7CiAJICAgIFR1cm5PZmYoQV9VTkRFUkxJTkUsIGV4aXRfdW5kZXJsaW5lX21vZGUpOwogCX0KIAotCWlmICghU1AgfHwgU1AtPl91c2Vfcm1zbykgeworCWlmICghU1BfUEFSTSB8fCBTUF9QQVJNLT5fdXNlX3Jtc28pIHsKIAkgICAgVHVybk9mZihBX1NUQU5ET1VULCBleGl0X3N0YW5kb3V0X21vZGUpOwogCX0KLQorI2lmIFVTRV9JVEFMSUMKKwlpZiAoIVNQX1BBUk0gfHwgU1BfUEFSTS0+X3VzZV9yaXRtKSB7CisJICAgIFR1cm5PZmYoQV9JVEFMSUMsIGV4aXRfaXRhbGljc19tb2RlKTsKKwl9CisjZW5kaWYKIAlpZiAodHVybl9vZmYgJiYgZXhpdF9hdHRyaWJ1dGVfbW9kZSkgewogCSAgICBkb1B1dChleGl0X2F0dHJpYnV0ZV9tb2RlKTsKIAkgICAgdHVybl9vbiB8PSAobmV3bW9kZSAmIEFMTF9CVVRfQ09MT1IpOwpAQCAtMjY3LDYgKzMwNSw5IEBACiAJVHVybk9uKEFfUFJPVEVDVCwJZW50ZXJfcHJvdGVjdGVkX21vZGUpOwogCVR1cm5PbihBX0lOVklTLAkJZW50ZXJfc2VjdXJlX21vZGUpOwogCVR1cm5PbihBX1VOREVSTElORSwJZW50ZXJfdW5kZXJsaW5lX21vZGUpOworI2lmIFVTRV9JVEFMSUMKKwlUdXJuT24oQV9JVEFMSUMsCWVudGVyX2l0YWxpY3NfbW9kZSk7CisjZW5kaWYKICNpZiBVU0VfV0lERUNfU1VQUE9SVAogCVR1cm5PbihBX0hPUklaT05UQUwsCWVudGVyX2hvcml6b250YWxfaGxfbW9kZSk7CiAJVHVybk9uKEFfTEVGVCwJCWVudGVyX2xlZnRfaGxfbW9kZSk7CkBAIC0yODIsNTcgKzMyMyw5OCBAQAogICAgIGlmIChyZXZlcnNlKQogCW5ld21vZGUgfD0gQV9SRVZFUlNFOwogCi0gICAgaWYgKFNQKQotCVNldEF0dHIoU0NSRUVOX0FUVFJTKFNQKSwgbmV3bW9kZSk7CisgICAgaWYgKFNQX1BBUk0pCisJU2V0QXR0cihTQ1JFRU5fQVRUUlMoU1BfUEFSTSksIG5ld21vZGUpOwogICAgIGVsc2UKIAlQcmV2aW91c0F0dHIgPSBuZXdtb2RlOwogCiAgICAgcmV0dXJuQ29kZShPSyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit2aWRwdXRzKGNodHlwZSBuZXdtb2RlLCBOQ1VSU0VTX09VVEMgb3V0YykKK3sKKyAgICBTZXRTYWZlT3V0Y1dyYXBwZXIob3V0Yyk7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh2aWRwdXRzKSAoQ1VSUkVOVF9TQ1JFRU4sCisJCQkJICAgICBuZXdtb2RlLAorCQkJCSAgICAgX25jX291dGNfd3JhcHBlcik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQoaW50KQorTkNVUlNFU19TUF9OQU1FKHZpZGF0dHIpIChOQ1VSU0VTX1NQX0RDTHggY2h0eXBlIG5ld21vZGUpCit7CisgICAgVCgoVF9DQUxMRUQoInZpZGF0dHIoJXAsJXMpIiksICh2b2lkICopIFNQX1BBUk0sIF90cmFjZWF0dHIobmV3bW9kZSkpKTsKKyAgICByZXR1cm5Db2RlKE5DVVJTRVNfU1BfTkFNRSh2aWRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCSBuZXdtb2RlLAorCQkJCQkgTkNVUlNFU19TUF9OQU1FKF9uY19wdXRjaGFyKSkpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQoaW50KQogdmlkYXR0cihjaHR5cGUgbmV3bW9kZSkKIHsKLSAgICBUKChUX0NBTExFRCgidmlkYXR0ciglcykiKSwgX3RyYWNlYXR0cihuZXdtb2RlKSkpOwotCi0gICAgcmV0dXJuQ29kZSh2aWRwdXRzKG5ld21vZGUsIF9uY19vdXRjaCkpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodmlkYXR0cikgKENVUlJFTlRfU0NSRUVOLCBuZXdtb2RlKTsKIH0KKyNlbmRpZgogCiBOQ1VSU0VTX0VYUE9SVChjaHR5cGUpCi10ZXJtYXR0cnModm9pZCkKK05DVVJTRVNfU1BfTkFNRSh0ZXJtYXR0cnMpIChOQ1VSU0VTX1NQX0RDTDApCiB7CiAgICAgY2h0eXBlIGF0dHJzID0gQV9OT1JNQUw7CiAKLSAgICBUKChUX0NBTExFRCgidGVybWF0dHJzKCkiKSkpOwotICAgIGlmIChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQotCWF0dHJzIHw9IEFfQUxUQ0hBUlNFVDsKKyAgICBUKChUX0NBTExFRCgidGVybWF0dHJzKCVwKSIpLCAodm9pZCAqKSBTUF9QQVJNKSk7CiAKLSAgICBpZiAoZW50ZXJfYmxpbmtfbW9kZSkKLQlhdHRycyB8PSBBX0JMSU5LOworICAgIGlmIChIYXNUZXJtaW5hbChTUF9QQVJNKSkgeworI2lmZGVmIFVTRV9URVJNX0RSSVZFUgorCWF0dHJzID0gQ2FsbERyaXZlcihTUF9QQVJNLCB0ZF9jb25hdHRyKTsKKyNlbHNlIC8qICEgVVNFX1RFUk1fRFJJVkVSICovCiAKLSAgICBpZiAoZW50ZXJfYm9sZF9tb2RlKQotCWF0dHJzIHw9IEFfQk9MRDsKKwlpZiAoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkKKwkgICAgYXR0cnMgfD0gQV9BTFRDSEFSU0VUOwogCi0gICAgaWYgKGVudGVyX2RpbV9tb2RlKQotCWF0dHJzIHw9IEFfRElNOworCWlmIChlbnRlcl9ibGlua19tb2RlKQorCSAgICBhdHRycyB8PSBBX0JMSU5LOwogCi0gICAgaWYgKGVudGVyX3JldmVyc2VfbW9kZSkKLQlhdHRycyB8PSBBX1JFVkVSU0U7CisJaWYgKGVudGVyX2JvbGRfbW9kZSkKKwkgICAgYXR0cnMgfD0gQV9CT0xEOwogCi0gICAgaWYgKGVudGVyX3N0YW5kb3V0X21vZGUpCi0JYXR0cnMgfD0gQV9TVEFORE9VVDsKKwlpZiAoZW50ZXJfZGltX21vZGUpCisJICAgIGF0dHJzIHw9IEFfRElNOwogCi0gICAgaWYgKGVudGVyX3Byb3RlY3RlZF9tb2RlKQotCWF0dHJzIHw9IEFfUFJPVEVDVDsKKwlpZiAoZW50ZXJfcmV2ZXJzZV9tb2RlKQorCSAgICBhdHRycyB8PSBBX1JFVkVSU0U7CiAKLSAgICBpZiAoZW50ZXJfc2VjdXJlX21vZGUpCi0JYXR0cnMgfD0gQV9JTlZJUzsKKwlpZiAoZW50ZXJfc3RhbmRvdXRfbW9kZSkKKwkgICAgYXR0cnMgfD0gQV9TVEFORE9VVDsKIAotICAgIGlmIChlbnRlcl91bmRlcmxpbmVfbW9kZSkKLQlhdHRycyB8PSBBX1VOREVSTElORTsKKwlpZiAoZW50ZXJfcHJvdGVjdGVkX21vZGUpCisJICAgIGF0dHJzIHw9IEFfUFJPVEVDVDsKIAotICAgIGlmIChTUC0+X2NvbG9yb24pCi0JYXR0cnMgfD0gQV9DT0xPUjsKKwlpZiAoZW50ZXJfc2VjdXJlX21vZGUpCisJICAgIGF0dHJzIHw9IEFfSU5WSVM7CiAKLSAgICByZXR1cm5DaGFyKGF0dHJzKTsKKwlpZiAoZW50ZXJfdW5kZXJsaW5lX21vZGUpCisJICAgIGF0dHJzIHw9IEFfVU5ERVJMSU5FOworCisJaWYgKFNQX1BBUk0tPl9jb2xvcm9uKQorCSAgICBhdHRycyB8PSBBX0NPTE9SOworCisjaWYgVVNFX0lUQUxJQworCWlmIChlbnRlcl9pdGFsaWNzX21vZGUpCisJICAgIGF0dHJzIHw9IEFfSVRBTElDOworI2VuZGlmCisKKyNlbmRpZiAvKiBVU0VfVEVSTV9EUklWRVIgKi8KKyAgICB9CisgICAgcmV0dXJuQ2h0eXBlKGF0dHJzKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGNodHlwZSkKK3Rlcm1hdHRycyh2b2lkKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodGVybWF0dHJzKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3R0eS90dHlfZGlzcGxheS5oIGIvbmN1cnNlcy90dHkvdHR5X2Rpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM0NWEwOC4uMDAwMDAwMAotLS0gYS9uY3Vyc2VzL3R0eS90dHlfZGlzcGxheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgotICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCi0gKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKLSAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCi0gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKLSAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCi0gKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgotICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgotICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKLSAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCi0gKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0KLSNpZm5kZWYgVFRZX0RJU1BMQVlfSAotI2RlZmluZSBUVFlfRElTUExBWV9IIDEKLQotLyoKLSAqICRJZDogdHR5X2Rpc3BsYXkuaCx2IDEuNiAyMDA1LzAxLzAxIDIzOjQxOjEyIHRvbSBFeHAgJAotICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9iZWVwICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfdHR5X2NoZWNrX3Jlc2l6ZSAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9jdXJzb3IgKGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9mbGFzaCAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9pbml0X2NvbG9yIChpbnQsaW50LGludCxpbnQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGJvb2wpIF9uY190dHlfaW5pdF9wYWlyIChpbnQsaW50LGludCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9zbGtfaGlkZSAoYm9vbCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9zbGtfdXBkYXRlIChpbnQsY29uc3QgY2hhciAqKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfdHR5X3N0YXJ0X2NvbG9yICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfdHR5X2Rpc3BsYXlfcmVzdW1lICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfdHR5X2Rpc3BsYXlfc3VzcGVuZCAodm9pZCk7Ci1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3R0eV9kaXNwb3NlICh2b2lkKTsJLyogZnJlZXMgU1AtPl90ZXJtICovCi1leHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX3R0eV9zd2l0Y2hfdG8gKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190dHlfdXBkYXRlICh2b2lkKTsKLQotc3RydWN0IHR0eV9kaXNwbGF5X2RhdGEgewotCWludCAgICAgICAgICAgICBfZmlmb2hvbGQ7ICAgICAgLyogc2V0IGlmIGJyZWFrb3V0IG1hcmtlZCAgICAgICAgICAgKi8KLQl1bnNpZ25lZCBsb25nICAgX2N1cnJlbnRfYXR0cjsgIC8qIHRlcm1pbmFsIGF0dHJpYnV0ZSBjdXJyZW50IHNldCAgICovCi0JaW50ICAgICAgICAgICAgIF9jdXJzcm93OyAgICAgICAvKiBwaHlzaWNhbCBjdXJzb3Igcm93ICgtMT11bmtub3duKSAqLwotCWludCAgICAgICAgICAgICBfY3Vyc2NvbDsgICAgICAgLyogcGh5c2ljYWwgY3Vyc29yIGNvbHVtbiAgICAgICAgICAgKi8KLQotCS8qIGN1cnNvciBtb3ZlbWVudCBjb3N0czsgdW5pdHMgYXJlIDEwdGhzIG9mIG1pbGxpc2Vjb25kcyAqLwotCWludCAgICAgICAgICAgICBfY2hhcl9wYWRkaW5nOyAgLyogY29zdCBvZiBjaGFyYWN0ZXIgcHV0ICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2NyX2Nvc3Q7ICAgICAgIC8qIGNvc3Qgb2YgKGNhcnJpYWdlX3JldHVybikgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9jdXBfY29zdDsgICAgICAvKiBjb3N0IG9mIChjdXJzb3JfYWRkcmVzcykgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfaG9tZV9jb3N0OyAgICAgLyogY29zdCBvZiAoY3Vyc29yX2hvbWUpICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2xsX2Nvc3Q7ICAgICAgIC8qIGNvc3Qgb2YgKGN1cnNvcl90b19sbCkgICAgICAgICAgICovCi0jaWYgVVNFX0hBUkRfVEFCUwotCWludCAgICAgICAgICAgICBfaHRfY29zdDsgICAgICAgLyogY29zdCBvZiAodGFiKSAgICAgICAgICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2NidF9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKGJhY2t0YWIpICAgICAgICAgICAgICAgICovCi0jZW5kaWYgLyogVVNFX0hBUkRfVEFCUyAqLwotCWludCAgICAgICAgICAgICBfY3ViMV9jb3N0OyAgICAgLyogY29zdCBvZiAoY3Vyc29yX2xlZnQpICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2N1ZjFfY29zdDsgICAgIC8qIGNvc3Qgb2YgKGN1cnNvcl9yaWdodCkgICAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9jdWQxX2Nvc3Q7ICAgICAvKiBjb3N0IG9mIChjdXJzb3JfZG93bikgICAgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfY3V1MV9jb3N0OyAgICAgLyogY29zdCBvZiAoY3Vyc29yX3VwKSAgICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2N1Yl9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKHBhcm1fY3Vyc29yX2xlZnQpICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9jdWZfY29zdDsgICAgICAvKiBjb3N0IG9mIChwYXJtX2N1cnNvcl9yaWdodCkgICAgICAqLwotCWludCAgICAgICAgICAgICBfY3VkX2Nvc3Q7ICAgICAgLyogY29zdCBvZiAocGFybV9jdXJzb3JfZG93bikgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2N1dV9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKHBhcm1fY3Vyc29yX3VwKSAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9ocGFfY29zdDsgICAgICAvKiBjb3N0IG9mIChjb2x1bW5fYWRkcmVzcykgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfdnBhX2Nvc3Q7ICAgICAgLyogY29zdCBvZiAocm93X2FkZHJlc3MpICAgICAgICAgICAgKi8KLQkvKiB1c2VkIGluIGxpYl9kb3VwZGF0ZS5jLCBtdXN0IGJlIGNoYXJzICovCi0JaW50ICAgICAgICAgICAgIF9lZF9jb3N0OyAgICAgICAvKiBjb3N0IG9mIChjbHJfZW9zKSAgICAgICAgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfZWxfY29zdDsgICAgICAgLyogY29zdCBvZiAoY2xyX2VvbCkgICAgICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2VsMV9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKGNscl9ib2wpICAgICAgICAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9kY2gxX2Nvc3Q7ICAgICAvKiBjb3N0IG9mIChkZWxldGVfY2hhcmFjdGVyKSAgICAgICAqLwotCWludCAgICAgICAgICAgICBfaWNoMV9jb3N0OyAgICAgLyogY29zdCBvZiAoaW5zZXJ0X2NoYXJhY3RlcikgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2RjaF9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKHBhcm1fZGNoKSAgICAgICAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9pY2hfY29zdDsgICAgICAvKiBjb3N0IG9mIChwYXJtX2ljaCkgICAgICAgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfZWNoX2Nvc3Q7ICAgICAgLyogY29zdCBvZiAoZXJhc2VfY2hhcnMpICAgICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX3JlcF9jb3N0OyAgICAgIC8qIGNvc3Qgb2YgKHJlcGVhdF9jaGFyKSAgICAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9ocGFfY2hfY29zdDsgICAvKiBjb3N0IG9mIChjb2x1bW5fYWRkcmVzcykgICAgICAgICAqLwotCWludCAgICAgICAgICAgICBfY3VwX2NoX2Nvc3Q7ICAgLyogY29zdCBvZiAoY3Vyc29yX2FkZHJlc3MpICAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX3NtaXJfY29zdDsJLyogY29zdCBvZiAoZW50ZXJfaW5zZXJ0X21vZGUpICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX3JtaXJfY29zdDsJLyogY29zdCBvZiAoZXhpdF9pbnNlcnRfbW9kZSkgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2lwX2Nvc3Q7ICAgICAgIC8qIGNvc3Qgb2YgKGluc2VydF9wYWRkaW5nKSAgICAgICAgICovCi0JLyogdXNlZCBpbiBsaWJfbXZjdXIuYyAqLwotCWNoYXIgKiAgICAgICAgICBfYWRkcmVzc19jdXJzb3I7Ci0JaW50ICAgICAgICAgICAgIF9jYXJyaWFnZV9yZXR1cm5fbGVuZ3RoOwotCWludCAgICAgICAgICAgICBfY3Vyc29yX2hvbWVfbGVuZ3RoOwotCWludCAgICAgICAgICAgICBfY3Vyc29yX3RvX2xsX2xlbmd0aDsKLQotCWNodHlwZSAgICAgICAgICBfeG1jX3N1cHByZXNzOyAgLyogYXR0cmlidXRlcyB0byBzdXBwcmVzcyBpZiB4bWMgICAgICovCi0JY2h0eXBlICAgICAgICAgIF94bWNfdHJpZ2dlcnM7ICAvKiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgaWYgeG1jICAgICAgKi8KLQotCWJvb2wgICAgICAgICAgICBfc2lnX3dpbmNoOwotfTsKLQotCi0jZGVmaW5lIERlbENoYXJDb3N0KGNvdW50KSBcCi0JCSgocGFybV9kY2ggIT0gMCkgXAotCQk/IEQtPl9kY2hfY29zdCBcCi0JCTogKChkZWxldGVfY2hhcmFjdGVyICE9IDApIFwKLQkJCT8gKEQtPl9kY2gxX2Nvc3QgKiBjb3VudCkgXAotCQkJOiBJTkZJTklUWSkpCi0KLSNkZWZpbmUgSW5zQ2hhckNvc3QoY291bnQpIFwKLQkJKChwYXJtX2ljaCAhPSAwKSBcCi0JCT8gRC0+X2ljaF9jb3N0IFwKLQkJOiAoKGVudGVyX2luc2VydF9tb2RlICYmIGV4aXRfaW5zZXJ0X21vZGUpIFwKLQkJICA/IEQtPl9zbWlyX2Nvc3QgKyBELT5fcm1pcl9jb3N0ICsgKEQtPl9pcF9jb3N0ICogY291bnQpIFwKLQkJICA6ICgoaW5zZXJ0X2NoYXJhY3RlciAhPSAwKSBcCi0JCSAgICA/ICgoRC0+X2ljaDFfY29zdCArIEQtPl9pcF9jb3N0KSAqIGNvdW50KSBcCi0JCSAgICA6IElORklOSVRZKSkpCi0KLSNpZiBVU0VfWE1DX1NVUFBPUlQKLSNkZWZpbmUgVXBkYXRlQXR0cnMoYykJaWYgKCFTYW1lQXR0ck9mKEQtPl9jdXJyZW50X2F0dHIsIEF0dHJPZihjKSkpIHsgXAotCQkJCWF0dHJfdCBjaGcgPSBELT5fY3VycmVudF9hdHRyOyBcCi0JCQkJdmlkYXR0cihBdHRyT2YoYykpOyBcCi0JCQkJaWYgKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggPiAwIFwKLQkJCQkgJiYgWE1DX0NIQU5HRVMoKGNoZyBeIEQtPl9jdXJyZW50X2F0dHIpKSkgeyBcCi0JCQkJCVQoKCIlcyBAJWQgYmVmb3JlIGdsaXRjaCAlZCwlZCIsIFwKLQkJCQkJCV9fRklMRV9fLCBfX0xJTkVfXywgXAotCQkJCQkJRC0+X2N1cnNyb3csIFwKLQkJCQkJCUQtPl9jdXJzY29sKSk7IFwKLQkJCQkJX25jX2RvX3htY19nbGl0Y2goY2hnKTsgXAotCQkJCX0gXAotCQkJfQotI2Vsc2UKLSNkZWZpbmUgVXBkYXRlQXR0cnMoYykJaWYgKCFTYW1lQXR0ck9mKEQtPl9jdXJyZW50X2F0dHIsIEF0dHJPZihjKSkpIFwKLQkJCQl2aWRhdHRyKEF0dHJPZihjKSk7Ci0jZW5kaWYKLQotI2RlZmluZSBYTUNfQ0hBTkdFUyhjKSAoKGMpICYgRC0+X3htY19zdXBwcmVzcykKLQotI2VuZGlmIC8qIFRUWV9ESVNQTEFZX0ggKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvdHR5L3R0eV9pbnB1dC5oIGIvbmN1cnNlcy90dHkvdHR5X2lucHV0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MjA3OTMuLjAwMDAwMDAKLS0tIGEvbmN1cnNlcy90dHkvdHR5X2lucHV0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLSAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCi0gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgotICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCi0gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCi0gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgotICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCi0gKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgotICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKLSAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKLSAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCi0gKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgotICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogJElkOiB0dHlfaW5wdXQuaCx2IDEuMiAyMDAwLzEyLzEwIDAyOjI2OjUxIHRvbSBFeHAgJAotICovCi0KLSNpZm5kZWYgVFRZX0lOUFVUX0gKLSNkZWZpbmUgVFRZX0lOUFVUX0ggMQotCi1leHRlcm4gTkNVUlNFU19FWFBPUlQoYm9vbCkgX25jX3R0eV9tb3VzZV9tYXNrIChtbWFza190KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVChib29sKSBfbmNfdHR5X3BlbmRpbmcgKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgIF9uY190dHlfbmV4dF9ldmVudCAoaW50KTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfdHR5X2ZsYWdzX2NoYW5nZWQgKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190dHlfZmx1c2ggKHZvaWQpOwotZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpIF9uY190dHlfaW5wdXRfcmVzdW1lICh2b2lkKTsKLWV4dGVybiBOQ1VSU0VTX0VYUE9SVCh2b2lkKSBfbmNfdHR5X2lucHV0X3N1c3BlbmQgKHZvaWQpOwotCi1zdHJ1Y3QgdHR5X2lucHV0X2RhdGEgewotCWludCAgICAgICAgICAgICBfaWZkOyAgICAgICAgICAgLyogaW5wdXQgZmlsZSBwdHIgZm9yIHNjcmVlbiAgICAgICAgKi8KLQlpbnQgICAgICAgICAgICAgX2tleXBhZF94bWl0OyAgIC8qIGN1cnJlbnQgdGVybWluYWwgc3RhdGUgICAgICAgICAgICovCi0JaW50ICAgICAgICAgICAgIF9tZXRhX29uOyAgICAgICAvKiBjdXJyZW50IHRlcm1pbmFsIHN0YXRlICAgICAgICAgICAqLwotCi0JLyoKLQkgKiBUaGVzZSBhcmUgdGhlIGRhdGEgdGhhdCBzdXBwb3J0IHRoZSBtb3VzZSBpbnRlcmZhY2UuCi0JICovCi0JYm9vbCAgICAgICAgICAgICgqX21vdXNlX2V2ZW50KSAoU0NSRUVOICopOwotCWJvb2wgICAgICAgICAgICAoKl9tb3VzZV9pbmxpbmUpKFNDUkVFTiAqKTsKLQlib29sICAgICAgICAgICAgKCpfbW91c2VfcGFyc2UpIChpbnQpOwotCXZvaWQgICAgICAgICAgICAoKl9tb3VzZV9yZXN1bWUpKFNDUkVFTiAqKTsKLQl2b2lkICAgICAgICAgICAgKCpfbW91c2Vfd3JhcCkgIChTQ1JFRU4gKik7Ci0JaW50ICAgICAgICAgICAgIF9tb3VzZV9mZDsgICAgICAvKiBmaWxlLWRlc2NyaXB0b3IsIGlmIGFueSAqLwotCWludCAgICAgICAgICAgICBtb3VzZXR5cGU7Ci19OwotCi0jZW5kaWYgLyogVFRZX0lOUFVUX0ggKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvdHR5L3R0eV91cGRhdGUuYyBiL25jdXJzZXMvdHR5L3R0eV91cGRhdGUuYwppbmRleCA2YTNhMGM4Li5lNjZmNzE2IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3R0eS90dHlfdXBkYXRlLmMKKysrIGIvbmN1cnNlcy90dHkvdHR5X3VwZGF0ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzAsNiArMzAsNyBAQAogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTIsMTk5NSAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDkgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zOCwxMiArMzksMTYgQEAKICAqCiAgKiAJVGhlIHJvdXRpbmUgZG91cGRhdGUoKSBhbmQgaXRzIGRlcGVuZGVudHMuCiAgKiAJQWxsIHBoeXNpY2FsIG91dHB1dCBpcyBjb25jZW50cmF0ZWQgaGVyZSAoZXhjZXB0IF9uY19vdXRjaCgpCi0gICoJaW4gbGliX3RwdXRzLmMpLgorICoJaW4gbGliX3RwdXRzLmMpLgogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKKwogI2lmIGRlZmluZWQgX19IQUlLVV9fICYmIGRlZmluZWQgX19CRU9TX18KICN1bmRlZiBfX0JFT1NfXwogI2VuZGlmCkBAIC03Niw5ICs4MSw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogdHR5X3VwZGF0ZS5jLHYgMS4yNDYgMjAwOC8wOC8zMCAyMDowODoxOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHR0eV91cGRhdGUuYyx2IDEuMjgwIDIwMTQvMDgvMjMgMTk6MjU6MTggdG9tIEV4cCAkIikKIAogLyoKICAqIFRoaXMgZGVmaW5lIGNvbnRyb2xzIHRoZSBsaW5lLWJyZWFrb3V0IG9wdGltaXphdGlvbi4gIEV2ZXJ5IG9uY2UgaW4gYQpAQCAtOTEsNyArOTUsNyBAQAogICovCiAjZGVmaW5lIENIRUNLX0lOVEVSVkFMCTUKIAotI2RlZmluZSBGSUxMX0JDRSgpIChTUC0+X2NvbG9yb24gJiYgIVNQLT5fZGVmYXVsdF9jb2xvciAmJiAhYmFja19jb2xvcl9lcmFzZSkKKyNkZWZpbmUgRklMTF9CQ0Uoc3ApIChzcC0+X2NvbG9yb24gJiYgIXNwLT5fZGVmYXVsdF9jb2xvciAmJiAhYmFja19jb2xvcl9lcmFzZSkKIAogc3RhdGljIGNvbnN0IE5DVVJTRVNfQ0hfVCBibGFua2NoYXIgPSBOZXdDaGFyKEJMQU5LX1RFWFQpOwogc3RhdGljIE5DVVJTRVNfQ0hfVCBub3JtYWwgPSBOZXdDaGFyKEJMQU5LX1RFWFQpOwpAQCAtMTAzLDEzICsxMDcsMjMgQEAKICAqLwogLyogI2RlZmluZSBQT1NJVElPTl9ERUJVRyAqLwogCi1zdGF0aWMgTkNVUlNFU19JTkxJTkUgTkNVUlNFU19DSF9UIENsckJsYW5rKFdJTkRPVyAqd2luKTsKK3N0YXRpYyBOQ1VSU0VTX0lOTElORSBOQ1VSU0VTX0NIX1QgQ2xyQmxhbmsoTkNVUlNFU19TUF9EQ0x4IFdJTkRPVyAqd2luKTsKKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK3N0YXRpYyBpbnQgQ2xyQm90dG9tKFNDUkVFTiAqLCBpbnQgdG90YWwpOworc3RhdGljIHZvaWQgQ2xlYXJTY3JlZW4oU0NSRUVOICosIE5DVVJTRVNfQ0hfVCBibGFuayk7CitzdGF0aWMgdm9pZCBDbHJVcGRhdGUoU0NSRUVOICopOworc3RhdGljIHZvaWQgRGVsQ2hhcihTQ1JFRU4gKiwgaW50IGNvdW50KTsKK3N0YXRpYyB2b2lkIEluc1N0cihTQ1JFRU4gKiwgTkNVUlNFU19DSF9UICogbGluZSwgaW50IGNvdW50KTsKK3N0YXRpYyB2b2lkIFRyYW5zZm9ybUxpbmUoU0NSRUVOICosIGludCBjb25zdCBsaW5lbm8pOworI2Vsc2UKIHN0YXRpYyBpbnQgQ2xyQm90dG9tKGludCB0b3RhbCk7CiBzdGF0aWMgdm9pZCBDbGVhclNjcmVlbihOQ1VSU0VTX0NIX1QgYmxhbmspOwogc3RhdGljIHZvaWQgQ2xyVXBkYXRlKHZvaWQpOwogc3RhdGljIHZvaWQgRGVsQ2hhcihpbnQgY291bnQpOwogc3RhdGljIHZvaWQgSW5zU3RyKE5DVVJTRVNfQ0hfVCAqIGxpbmUsIGludCBjb3VudCk7CiBzdGF0aWMgdm9pZCBUcmFuc2Zvcm1MaW5lKGludCBjb25zdCBsaW5lbm8pOworI2VuZGlmCiAKICNpZmRlZiBQT1NJVElPTl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExOSw3ICsxMzMsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1wb3NpdGlvbl9jaGVjayhpbnQgZXhwZWN0ZWRfeSwgaW50IGV4cGVjdGVkX3gsIGNoYXIgKmxlZ2VuZCkKK3Bvc2l0aW9uX2NoZWNrKE5DVVJTRVNfU1BfRENMeCBpbnQgZXhwZWN0ZWRfeSwgaW50IGV4cGVjdGVkX3gsIGNoYXIgKmxlZ2VuZCkKIC8qIGNoZWNrIHRvIHNlZSBpZiB0aGUgcmVhbCBjdXJzb3IgcG9zaXRpb24gbWF0Y2hlcyB0aGUgdmlydHVhbCAqLwogewogICAgIGNoYXIgYnVmWzIwXTsKQEAgLTEyOSwxMCArMTQzLDkgQEAKICAgICBpZiAoIV9uY190cmFjaW5nIHx8IChleHBlY3RlZF95IDwgMCAmJiBleHBlY3RlZF94IDwgMCkpCiAJcmV0dXJuOwogCi0gICAgX25jX2ZsdXNoKCk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKE5DVVJTRVNfU1BfQVJHKTsKICAgICBtZW1zZXQoYnVmLCAnXDAnLCBzaXplb2YoYnVmKSk7Ci0gICAgcHV0cCgiXDAzM1s2biIpOwkJLyogb25seSB3b3JrcyBvbiBBTlNJLWNvbXBhdGlibGVzICovCi0gICAgX25jX2ZsdXNoKCk7CisgICAgTkNVUlNFU19QVVRQMl9GTFVTSCgiY3ByIiwgIlwwMzNbNm4iKTsJLyogb25seSB3b3JrcyBvbiBBTlNJLWNvbXBhdGlibGVzICovCiAgICAgKihzID0gYnVmKSA9IDA7CiAgICAgZG8gewogCWludCBhc2sgPSBzaXplb2YoYnVmKSAtIDEgLSAocyAtIGJ1Zik7CkBAIC0xNTIsOCArMTY1LDEyIEBACiAJaWYgKGV4cGVjdGVkX3kgPCAwKQogCSAgICBleHBlY3RlZF95ID0geSAtIDE7CiAJaWYgKHkgLSAxICE9IGV4cGVjdGVkX3kgfHwgeCAtIDEgIT0gZXhwZWN0ZWRfeCkgewotCSAgICBiZWVwKCk7Ci0JICAgIHRwdXRzKHRwYXJtKCJcMDMzWyVkOyVkSCIsIGV4cGVjdGVkX3kgKyAxLCBleHBlY3RlZF94ICsgMSksIDEsIF9uY19vdXRjaCk7CisJICAgIE5DVVJTRVNfU1BfTkFNRShiZWVwKSAoTkNVUlNFU19TUF9BUkcpOworCSAgICBOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgdHBhcm0oIlwwMzNbJWQ7JWRIIiwKKwkJCQkJICBleHBlY3RlZF95ICsgMSwKKwkJCQkJICBleHBlY3RlZF94ICsgMSksCisJCQkJICAgIDEsIE5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpKTsKIAkgICAgX3RyYWNlZigicG9zaXRpb24gc2VlbiAoJWQsICVkKSBkb2Vzbid0IG1hdGNoIGV4cGVjdGVkIG9uZSAoJWQsICVkKSBpbiAlcyIsCiAJCSAgICB5IC0gMSwgeCAtIDEsIGV4cGVjdGVkX3ksIGV4cGVjdGVkX3gsIGxlZ2VuZCk7CiAJfSBlbHNlIHsKQEAgLTE3MiwyOSArMTg5LDM4IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIE5DVVJTRVNfSU5MSU5FIHZvaWQKLUdvVG8oaW50IGNvbnN0IHJvdywgaW50IGNvbnN0IGNvbCkKK0dvVG8oTkNVUlNFU19TUF9EQ0x4IGludCBjb25zdCByb3csIGludCBjb25zdCBjb2wpCiB7Ci0gICAgVFIoVFJBQ0VfTU9WRSwgKCJHb1RvKCVkLCAlZCkgZnJvbSAoJWQsICVkKSIsCi0JCSAgICByb3csIGNvbCwgU1AtPl9jdXJzcm93LCBTUC0+X2N1cnNjb2wpKTsKKyAgICBUUihUUkFDRV9NT1ZFLCAoIkdvVG8oJXAsICVkLCAlZCkgZnJvbSAoJWQsICVkKSIsCisJCSAgICAodm9pZCAqKSBTUF9QQVJNLCByb3csIGNvbCwgU1BfUEFSTS0+X2N1cnNyb3csIFNQX1BBUk0tPl9jdXJzY29sKSk7CiAKLSAgICBwb3NpdGlvbl9jaGVjayhTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCwgIkdvVG8iKTsKKyAgICBwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJICAgU1BfUEFSTS0+X2N1cnNyb3csCisJCSAgIFNQX1BBUk0tPl9jdXJzY29sLCAiR29UbyIpOwogCi0gICAgbXZjdXIoU1AtPl9jdXJzcm93LCBTUC0+X2N1cnNjb2wsIHJvdywgY29sKTsKLSAgICBwb3NpdGlvbl9jaGVjayhTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCwgIkdvVG8yIik7CisgICAgVElORk9fTVZDVVIoTkNVUlNFU19TUF9BUkd4CisJCVNQX1BBUk0tPl9jdXJzcm93LAorCQlTUF9QQVJNLT5fY3Vyc2NvbCwKKwkJcm93LCBjb2wpOworICAgIHBvc2l0aW9uX2NoZWNrKE5DVVJTRVNfU1BfQVJHeAorCQkgICBTUF9QQVJNLT5fY3Vyc3JvdywKKwkJICAgU1BfUEFSTS0+X2N1cnNjb2wsICJHb1RvMiIpOwogfQogCiBzdGF0aWMgTkNVUlNFU19JTkxJTkUgdm9pZAotUHV0QXR0ckNoYXIoQ0FSR19DSF9UIGNoKQorUHV0QXR0ckNoYXIoTkNVUlNFU19TUF9EQ0x4IENBUkdfQ0hfVCBjaCkKIHsKICAgICBpbnQgY2hsZW4gPSAxOwogICAgIE5DVVJTRVNfQ0hfVCBteV9jaDsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAogICAgIFBVVENfREFUQTsKKyNlbmRpZgogICAgIE5DVVJTRVNfQ0hfVCB0aWxkZTsKICAgICBOQ1VSU0VTX0NIX1QgYXR0ciA9IENIREVSRUYoY2gpOwogCiAgICAgVFIoVFJBQ0VfQ0hBUlBVVCwgKCJQdXRBdHRyQ2hhciglcykgYXQgKCVkLCAlZCkiLAogCQkgICAgICAgX3RyYWNlY2hfdChjaCksCi0JCSAgICAgICBTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCkpOworCQkgICAgICAgU1BfUEFSTS0+X2N1cnNyb3csIFNQX1BBUk0tPl9jdXJzY29sKSk7CiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKICAgICAvKgogICAgICAqIElmIHRoaXMgaXMgbm90IGEgdmFsaWQgY2hhcmFjdGVyLCB0aGVyZSBpcyBub3RoaW5nIG1vcmUgdG8gZG8uCkBAIC0yMjQsMTIgKzI1MCwxMiBAQAogCSAqLwogCWlmIChpczhiaXRzKENoYXJPZihDSERFUkVGKGNoKSkpCiAJICAgICYmIChpc3ByaW50KENoYXJPZihDSERFUkVGKGNoKSkpCi0JCXx8IChTUC0+X2xlZ2FjeV9jb2RpbmcgPiAwICYmIENoYXJPZihDSERFUkVGKGNoKSkgPj0gMTYwKQotCQl8fCAoU1AtPl9sZWdhY3lfY29kaW5nID4gMSAmJiBDaGFyT2YoQ0hERVJFRihjaCkpID49IDEyOCkKKwkJfHwgKFNQX1BBUk0tPl9sZWdhY3lfY29kaW5nID4gMCAmJiBDaGFyT2YoQ0hERVJFRihjaCkpID49IDE2MCkKKwkJfHwgKFNQX1BBUk0tPl9sZWdhY3lfY29kaW5nID4gMSAmJiBDaGFyT2YoQ0hERVJFRihjaCkpID49IDEyOCkKIAkJfHwgKEF0dHJPZihhdHRyKSAmIEFfQUxUQ0hBUlNFVAogCQkgICAgJiYgKChDaGFyT2ZEKGNoKSA8IEFDU19MRU4KLQkJCSAmJiBTUC0+X2Fjc19tYXAgIT0gMAotCQkJICYmIFNQLT5fYWNzX21hcFtDaGFyT2ZEKGNoKV0gIT0gMCkKKwkJCSAmJiBTUF9QQVJNLT5fYWNzX21hcCAhPSAwCisJCQkgJiYgU1BfUEFSTS0+X2Fjc19tYXBbQ2hhck9mRChjaCldICE9IDApCiAJCQl8fCAoQ2hhck9mRChjaCkgPj0gMTI4KSkpKSkgewogCSAgICA7CiAJfSBlbHNlIHsKQEAgLTI0MSw3ICsyNjcsNyBAQAogI2VuZGlmCiAKICAgICBpZiAoKEF0dHJPZihhdHRyKSAmIEFfQUxUQ0hBUlNFVCkKLQkmJiBTUC0+X2Fjc19tYXAgIT0gMAorCSYmIFNQX1BBUk0tPl9hY3NfbWFwICE9IDAKIAkmJiBDaGFyT2ZEKGNoKSA8IEFDU19MRU4pIHsKIAlteV9jaCA9IENIREVSRUYoY2gpOwkvKiB3b3JrIGFyb3VuZCBjb25zdCBwYXJhbSAqLwogI2lmIFVTRV9XSURFQ19TVVBQT1JUCkBAIC0yNTEsOCArMjc3LDEzIEBACiAJICogY2hhcmFjdGVyLCBhbmQgdXNlcyB0aGUgd2lkZS1jaGFyYWN0ZXIgbWFwcGluZyB3aGVuIHdlIGV4cGVjdCB0aGUKIAkgKiBub3JtYWwgb25lIHRvIGJlIGJyb2tlbiAoYnkgbWlzLWRlc2lnbiA7LSkuCiAJICovCi0JaWYgKFNQLT5fc2NyZWVuX2Fjc19maXgKLQkgICAgJiYgU1AtPl9zY3JlZW5fYWNzX21hcFtDaGFyT2YobXlfY2gpXSkgeworCWlmIChTUF9QQVJNLT5fc2NyZWVuX2Fjc19maXgKKwkgICAgJiYgU1BfUEFSTS0+X3NjcmVlbl9hY3NfbWFwW0NoYXJPZihteV9jaCldKSB7CisJICAgIFJlbUF0dHIoYXR0ciwgQV9BTFRDSEFSU0VUKTsKKwkgICAgbXlfY2ggPSBfbmNfd2Fjc1tDaGFyT2YobXlfY2gpXTsKKwl9IGVsc2UgaWYgKFNQX1BBUk0tPl9zY3JlZW5fdW5pY29kZQorCQkgICAmJiAhU1BfUEFSTS0+X3NjcmVlbl9hY3NfbWFwW0NoYXJPZihteV9jaCldCisJCSAgICYmIF9uY193YWNzW0NoYXJPZihteV9jaCldLmNoYXJzWzBdKSB7CiAJICAgIFJlbUF0dHIoYXR0ciwgQV9BTFRDSEFSU0VUKTsKIAkgICAgbXlfY2ggPSBfbmNfd2Fjc1tDaGFyT2YobXlfY2gpXTsKIAl9CkBAIC0yNjUsMTUgKzI5NiwxNCBAQAogCSAqLwogCWlmIChBdHRyT2YoYXR0cikgJiBBX0FMVENIQVJTRVQpIHsKIAkgICAgaW50IGogPSBDaGFyT2ZEKGNoKTsKLQkgICAgY2h0eXBlIHRlbXAgPSBVQ2hhcihTUC0+X2Fjc19tYXBbal0pOworCSAgICBjaHR5cGUgdGVtcCA9IFVDaGFyKFNQX1BBUk0tPl9hY3NfbWFwW2pdKTsKIAotCSAgICBpZiAoIShTUC0+X3NjcmVlbl9hY3NfbWFwW2pdKSkgewotCQlSZW1BdHRyKGF0dHIsIEFfQUxUQ0hBUlNFVCk7Ci0JCWlmICh0ZW1wID09IDApCi0JCSAgICB0ZW1wID0gJyAnOwotCSAgICB9Ci0JICAgIGlmICh0ZW1wICE9IDApCisJICAgIGlmICh0ZW1wICE9IDApIHsKIAkJU2V0Q2hhcihteV9jaCwgdGVtcCwgQXR0ck9mKGF0dHIpKTsKKwkgICAgfSBlbHNlIHsKKwkJbXlfY2ggPSBDSERFUkVGKGNoKTsKKwkJUmVtQXR0cihhdHRyLCBBX0FMVENIQVJTRVQpOworCSAgICB9CiAJfQogCWNoID0gQ0hSRUYobXlfY2gpOwogICAgIH0KQEAgLTI4MiwyOCArMzEyLDE5IEBACiAJY2ggPSBDSFJFRih0aWxkZSk7CiAgICAgfQogCi0gICAgVXBkYXRlQXR0cnMoYXR0cik7CisgICAgVXBkYXRlQXR0cnMoU1BfUEFSTSwgYXR0cik7CisgICAgUFVUQyhDSERFUkVGKGNoKSk7CiAjaWYgIVVTRV9XSURFQ19TVVBQT1JUCi0gICAgLyogRklYTUUgLSB3ZSBkbyB0aGlzIHNwZWNpYWwgY2FzZSBmb3Igc2lnbmFsIGhhbmRsaW5nLCBzaG91bGQgc2VlIGhvdyB0bwotICAgICAqIG1ha2UgaXQgd29yayBmb3Igd2lkZSBjaGFyYWN0ZXJzLgotICAgICAqLwotICAgIGlmIChTUC0+X291dGNoICE9IDApIHsKLQlTUC0+X291dGNoKFVDaGFyKGNoKSk7Ci0gICAgfSBlbHNlCisgICAgQ09VTlRfT1VUQ0hBUlMoMSk7CiAjZW5kaWYKLSAgICB7Ci0JUFVUQyhDSERFUkVGKGNoKSwgU1AtPl9vZnApOwkvKiBtYWNybydzIGZhc3Rlc3QuLi4gKi8KLQlDT1VOVF9PVVRDSEFSUygxKTsKLSAgICB9Ci0gICAgU1AtPl9jdXJzY29sICs9IGNobGVuOworICAgIFNQX1BBUk0tPl9jdXJzY29sICs9IGNobGVuOwogICAgIGlmIChjaGFyX3BhZGRpbmcpIHsKLQlUUFVUU19UUkFDRSgiY2hhcl9wYWRkaW5nIik7Ci0JcHV0cChjaGFyX3BhZGRpbmcpOworCU5DVVJTRVNfUFVUUDIoImNoYXJfcGFkZGluZyIsIGNoYXJfcGFkZGluZyk7CiAgICAgfQogfQogCiBzdGF0aWMgYm9vbAotY2hlY2tfcGVuZGluZyh2b2lkKQorY2hlY2tfcGVuZGluZyhOQ1VSU0VTX1NQX0RDTDApCiAvKiBjaGVjayBmb3IgcGVuZGluZyBpbnB1dCAqLwogewogICAgIGJvb2wgaGF2ZV9wZW5kaW5nID0gRkFMU0U7CkBAIC0zMTMsMTUgKzMzNCwxNSBAQAogICAgICAqIGhhdmUgdGhlIHJlZnJlc2hpbmcgc2xvdyBkb3duIGRyYXN0aWNhbGx5IChvciBzdG9wKSBpZiB0aGVyZSdzIGFuCiAgICAgICogdW5yZWFkIGNoYXJhY3RlciBhdmFpbGFibGUuCiAgICAgICovCi0gICAgaWYgKFNQLT5fZmlmb2hvbGQgIT0gMCkKKyAgICBpZiAoU1BfUEFSTS0+X2ZpZm9ob2xkICE9IDApCiAJcmV0dXJuIEZBTFNFOwogCi0gICAgaWYgKFNQLT5fY2hlY2tmZCA+PSAwKSB7CisgICAgaWYgKFNQX1BBUk0tPl9jaGVja2ZkID49IDApIHsKICNpZiBVU0VfRlVOQ19QT0xMCiAJc3RydWN0IHBvbGxmZCBmZHNbMV07Ci0JZmRzWzBdLmZkID0gU1AtPl9jaGVja2ZkOworCWZkc1swXS5mZCA9IFNQX1BBUk0tPl9jaGVja2ZkOwogCWZkc1swXS5ldmVudHMgPSBQT0xMSU47Ci0JaWYgKHBvbGwoZmRzLCAxLCAwKSA+IDApIHsKKwlpZiAocG9sbChmZHMsIChzaXplX3QpIDEsIDApID4gMCkgewogCSAgICBoYXZlX3BlbmRpbmcgPSBUUlVFOwogCX0KICNlbGlmIGRlZmluZWQoX19CRU9TX18pCkBAIC0zNDcsNDMgKzM2OCw1MCBAQAogCSAgICBrdGltZW91dC50dl91c2VjID0gMDsKIAogCUZEX1pFUk8oJmZkc2V0KTsKLQlGRF9TRVQoU1AtPl9jaGVja2ZkLCAmZmRzZXQpOwotCWlmIChzZWxlY3QoU1AtPl9jaGVja2ZkICsgMSwgJmZkc2V0LCBOVUxMLCBOVUxMLCAma3RpbWVvdXQpICE9IDApIHsKKwlGRF9TRVQoU1BfUEFSTS0+X2NoZWNrZmQsICZmZHNldCk7CisJaWYgKHNlbGVjdChTUF9QQVJNLT5fY2hlY2tmZCArIDEsICZmZHNldCwgTlVMTCwgTlVMTCwgJmt0aW1lb3V0KSAhPSAwKSB7CiAJICAgIGhhdmVfcGVuZGluZyA9IFRSVUU7CiAJfQogI2VuZGlmCiAgICAgfQogICAgIGlmIChoYXZlX3BlbmRpbmcpIHsKLQlTUC0+X2ZpZm9ob2xkID0gNTsKLQlfbmNfZmx1c2goKTsKKwlTUF9QQVJNLT5fZmlmb2hvbGQgPSA1OworCU5DVVJTRVNfU1BfTkFNRShfbmNfZmx1c2gpIChOQ1VSU0VTX1NQX0FSRyk7CiAgICAgfQogICAgIHJldHVybiBGQUxTRTsKIH0KIAogLyogcHV0IGNoYXIgYXQgbG93ZXIgcmlnaHQgY29ybmVyICovCiBzdGF0aWMgdm9pZAotUHV0Q2hhckxSKGNvbnN0IEFSR19DSF9UIGNoKQorUHV0Q2hhckxSKE5DVVJTRVNfU1BfRENMeCBjb25zdCBBUkdfQ0hfVCBjaCkKIHsKICAgICBpZiAoIWF1dG9fcmlnaHRfbWFyZ2luKSB7CiAJLyogd2UgY2FuIHB1dCB0aGUgY2hhciBkaXJlY3RseSAqLwotCVB1dEF0dHJDaGFyKGNoKTsKKwlQdXRBdHRyQ2hhcihOQ1VSU0VTX1NQX0FSR3ggY2gpOwogICAgIH0gZWxzZSBpZiAoZW50ZXJfYW1fbW9kZSAmJiBleGl0X2FtX21vZGUpIHsKIAkvKiB3ZSBjYW4gc3VwcHJlc3MgYXV0b21hcmdpbiAqLwotCVRQVVRTX1RSQUNFKCJleGl0X2FtX21vZGUiKTsKLQlwdXRwKGV4aXRfYW1fbW9kZSk7CisJTkNVUlNFU19QVVRQMigiZXhpdF9hbV9tb2RlIiwgZXhpdF9hbV9tb2RlKTsKIAotCVB1dEF0dHJDaGFyKGNoKTsKLQlTUC0+X2N1cnNjb2wtLTsKLQlwb3NpdGlvbl9jaGVjayhTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCwgImV4aXRfYW1fbW9kZSIpOworCVB1dEF0dHJDaGFyKE5DVVJTRVNfU1BfQVJHeCBjaCk7CisJU1BfUEFSTS0+X2N1cnNjb2wtLTsKKwlwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJICAgICAgIFNQX1BBUk0tPl9jdXJzcm93LAorCQkgICAgICAgU1BfUEFSTS0+X2N1cnNjb2wsCisJCSAgICAgICAiZXhpdF9hbV9tb2RlIik7CiAKLQlUUFVUU19UUkFDRSgiZW50ZXJfYW1fbW9kZSIpOwotCXB1dHAoZW50ZXJfYW1fbW9kZSk7CisJTkNVUlNFU19QVVRQMigiZW50ZXJfYW1fbW9kZSIsIGVudGVyX2FtX21vZGUpOwogICAgIH0gZWxzZSBpZiAoKGVudGVyX2luc2VydF9tb2RlICYmIGV4aXRfaW5zZXJ0X21vZGUpCiAJICAgICAgIHx8IGluc2VydF9jaGFyYWN0ZXIgfHwgcGFybV9pY2gpIHsKLQlHb1RvKHNjcmVlbl9saW5lcyAtIDEsIHNjcmVlbl9jb2x1bW5zIC0gMik7Ci0JUHV0QXR0ckNoYXIoY2gpOwotCUdvVG8oc2NyZWVuX2xpbmVzIC0gMSwgc2NyZWVuX2NvbHVtbnMgLSAyKTsKLQlJbnNTdHIobmV3c2NyLT5fbGluZVtzY3JlZW5fbGluZXMgLSAxXS50ZXh0ICsgc2NyZWVuX2NvbHVtbnMgLSAyLCAxKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeAorCSAgICAgc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSwKKwkgICAgIHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMik7CisJUHV0QXR0ckNoYXIoTkNVUlNFU19TUF9BUkd4IGNoKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeAorCSAgICAgc2NyZWVuX2xpbmVzKFNQX1BBUk0pIC0gMSwKKwkgICAgIHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMik7CisJSW5zU3RyKE5DVVJTRVNfU1BfQVJHeAorCSAgICAgICBOZXdTY3JlZW4oU1BfUEFSTSktPl9saW5lW3NjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDFdLnRleHQgKworCSAgICAgICBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSAtIDIsIDEpOwogICAgIH0KIH0KIApAQCAtMzkxLDcgKzQxOSw3IEBACiAgKiBXcmFwIHRoZSBjdXJzb3IgcG9zaXRpb24sIGkuZS4sIGFkdmFuY2UgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lLgogICovCiBzdGF0aWMgdm9pZAotd3JhcF9jdXJzb3Iodm9pZCkKK3dyYXBfY3Vyc29yKE5DVVJTRVNfU1BfRENMMCkKIHsKICAgICBpZiAoZWF0X25ld2xpbmVfZ2xpdGNoKSB7CiAJLyoKQEAgLTQwNyw0MCArNDM1LDQ3IEBACiAJICogaXQncyBzYWZlIHRvIGp1c3QgdGVsbCB0aGUgY29kZSB0aGF0IHRoZSBjdXJzb3IgaXMgaW4gaHlwZXJzcGFjZSBhbmQKIAkgKiBsZXQgdGhlIG5leHQgbXZjdXIoKSBjYWxsIHN0cmFpZ2h0ZW4gdGhpbmdzIG91dC4KIAkgKi8KLQlTUC0+X2N1cnNjb2wgPSAtMTsKLQlTUC0+X2N1cnNyb3cgPSAtMTsKKwlTUF9QQVJNLT5fY3Vyc2NvbCA9IC0xOworCVNQX1BBUk0tPl9jdXJzcm93ID0gLTE7CiAgICAgfSBlbHNlIGlmIChhdXRvX3JpZ2h0X21hcmdpbikgewotCVNQLT5fY3Vyc2NvbCA9IDA7Ci0JU1AtPl9jdXJzcm93Kys7CisJU1BfUEFSTS0+X2N1cnNjb2wgPSAwOworCVNQX1BBUk0tPl9jdXJzcm93Kys7CiAJLyoKIAkgKiBXZSd2ZSBhY3R1YWxseSBtb3ZlZCAtIGJ1dCBtYXkgaGF2ZSB0byB3b3JrIGFyb3VuZCBwcm9ibGVtcyB3aXRoCiAJICogdmlkZW8gYXR0cmlidXRlcyBub3Qgd29ya2luZy4KIAkgKi8KLQlpZiAoIW1vdmVfc3RhbmRvdXRfbW9kZSAmJiBBdHRyT2YoU0NSRUVOX0FUVFJTKFNQKSkpIHsKKwlpZiAoIW1vdmVfc3RhbmRvdXRfbW9kZSAmJiBBdHRyT2YoU0NSRUVOX0FUVFJTKFNQX1BBUk0pKSkgewogCSAgICBUUihUUkFDRV9DSEFSUFVULCAoInR1cm5pbmcgb2ZmICglI2x4KSAlcyBiZWZvcmUgd3JhcHBpbmciLAotCQkJICAgICAgICh1bnNpZ25lZCBsb25nKSBBdHRyT2YoU0NSRUVOX0FUVFJTKFNQKSksCi0JCQkgICAgICAgX3RyYWNlYXR0cihBdHRyT2YoU0NSRUVOX0FUVFJTKFNQKSkpKSk7Ci0JICAgICh2b2lkKSBWSURBVFRSKEFfTk9STUFMLCAwKTsKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZykgQXR0ck9mKFNDUkVFTl9BVFRSUyhTUF9QQVJNKSksCisJCQkgICAgICAgX3RyYWNlYXR0cihBdHRyT2YoU0NSRUVOX0FUVFJTKFNQX1BBUk0pKSkpKTsKKwkgICAgKHZvaWQpIFZJREFUVFIoU1BfUEFSTSwgQV9OT1JNQUwsIDApOwogCX0KICAgICB9IGVsc2UgewotCVNQLT5fY3Vyc2NvbC0tOworCVNQX1BBUk0tPl9jdXJzY29sLS07CiAgICAgfQotICAgIHBvc2l0aW9uX2NoZWNrKFNQLT5fY3Vyc3JvdywgU1AtPl9jdXJzY29sLCAid3JhcF9jdXJzb3IiKTsKKyAgICBwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJICAgU1BfUEFSTS0+X2N1cnNyb3csCisJCSAgIFNQX1BBUk0tPl9jdXJzY29sLAorCQkgICAid3JhcF9jdXJzb3IiKTsKIH0KIAogc3RhdGljIE5DVVJTRVNfSU5MSU5FIHZvaWQKLVB1dENoYXIoY29uc3QgQVJHX0NIX1QgY2gpCitQdXRDaGFyKE5DVVJTRVNfU1BfRENMeCBjb25zdCBBUkdfQ0hfVCBjaCkKIC8qIGluc2VydCBjaGFyYWN0ZXIsIGhhbmRsaW5nIGF1dG9tYXJnaW4gc3R1ZmYgKi8KIHsKLSAgICBpZiAoU1AtPl9jdXJzcm93ID09IHNjcmVlbl9saW5lcyAtIDEgJiYgU1AtPl9jdXJzY29sID09IHNjcmVlbl9jb2x1bW5zIC0gMSkKLQlQdXRDaGFyTFIoY2gpOwotICAgIGVsc2UKLQlQdXRBdHRyQ2hhcihjaCk7CisgICAgaWYgKFNQX1BBUk0tPl9jdXJzcm93ID09IHNjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDEgJiYKKwlTUF9QQVJNLT5fY3Vyc2NvbCA9PSBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSAtIDEpIHsKKwlQdXRDaGFyTFIoTkNVUlNFU19TUF9BUkd4IGNoKTsKKyAgICB9IGVsc2UgeworCVB1dEF0dHJDaGFyKE5DVVJTRVNfU1BfQVJHeCBjaCk7CisgICAgfQogCi0gICAgaWYgKFNQLT5fY3Vyc2NvbCA+PSBzY3JlZW5fY29sdW1ucykKLQl3cmFwX2N1cnNvcigpOworICAgIGlmIChTUF9QQVJNLT5fY3Vyc2NvbCA+PSBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSkKKwl3cmFwX2N1cnNvcihOQ1VSU0VTX1NQX0FSRyk7CiAKLSAgICBwb3NpdGlvbl9jaGVjayhTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCwgIlB1dENoYXIiKTsKKyAgICBwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJICAgU1BfUEFSTS0+X2N1cnNyb3csCisJCSAgIFNQX1BBUk0tPl9jdXJzY29sLCAiUHV0Q2hhciIpOwogfQogCiAvKgpAQCAtNDUwLDIxICs0ODUsMjQgQEAKICAqIG9yIGNhbiBiZSBvdXRwdXQgYnkgY2xlYXJpbmcgKEFfQ09MT1IgaW4gY2FzZSBvZiBiY2UtdGVybWluYWwpIGFyZSBleGNsdWRlZC4KICAqLwogc3RhdGljIE5DVVJTRVNfSU5MSU5FIGJvb2wKLWNhbl9jbGVhcl93aXRoKEFSR19DSF9UIGNoKQorY2FuX2NsZWFyX3dpdGgoTkNVUlNFU19TUF9EQ0x4IEFSR19DSF9UIGNoKQogewotICAgIGlmICghYmFja19jb2xvcl9lcmFzZSAmJiBTUC0+X2NvbG9yb24pIHsKKyAgICBpZiAoIWJhY2tfY29sb3JfZXJhc2UgJiYgU1BfUEFSTS0+X2NvbG9yb24pIHsKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwogCWludCBwYWlyOwogCi0JaWYgKCFTUC0+X2RlZmF1bHRfY29sb3IpCisJaWYgKCFTUF9QQVJNLT5fZGVmYXVsdF9jb2xvcikKIAkgICAgcmV0dXJuIEZBTFNFOwotCWlmIChTUC0+X2RlZmF1bHRfZmcgIT0gQ19NQVNLIHx8IFNQLT5fZGVmYXVsdF9iZyAhPSBDX01BU0spCisJaWYgKFNQX1BBUk0tPl9kZWZhdWx0X2ZnICE9IENfTUFTSyB8fCBTUF9QQVJNLT5fZGVmYXVsdF9iZyAhPSBDX01BU0spCiAJICAgIHJldHVybiBGQUxTRTsKIAlpZiAoKHBhaXIgPSBHZXRQYWlyKENIREVSRUYoY2gpKSkgIT0gMCkgewotCSAgICBzaG9ydCBmZywgYmc7Ci0JICAgIHBhaXJfY29udGVudChwYWlyLCAmZmcsICZiZyk7Ci0JICAgIGlmIChmZyAhPSBDX01BU0sgfHwgYmcgIT0gQ19NQVNLKQorCSAgICBOQ1VSU0VTX0NPTE9SX1QgZmcsIGJnOworCSAgICBpZiAoTkNVUlNFU19TUF9OQU1FKHBhaXJfY29udGVudCkgKE5DVVJTRVNfU1BfQVJHeAorCQkJCQkgICAgICAgKHNob3J0KSBwYWlyLAorCQkJCQkgICAgICAgJmZnLCAmYmcpID09IEVSUgorCQl8fCAoZmcgIT0gQ19NQVNLIHx8IGJnICE9IENfTUFTSykpIHsKIAkJcmV0dXJuIEZBTFNFOworCSAgICB9CiAJfQogI2Vsc2UKIAlpZiAoQXR0ck9mRChjaCkgJiBBX0NPTE9SKQpAQCAtNDg4LDcgKzUyNiw3IEBACiAgKiBUaGlzIGNvZGUgaXMgb3B0aW1pemVkIHVzaW5nIGVjaCBhbmQgcmVwLgogICovCiBzdGF0aWMgaW50Ci1FbWl0UmFuZ2UoY29uc3QgTkNVUlNFU19DSF9UICogbnRleHQsIGludCBudW0pCitFbWl0UmFuZ2UoTkNVUlNFU19TUF9EQ0x4IGNvbnN0IE5DVVJTRVNfQ0hfVCAqIG50ZXh0LCBpbnQgbnVtKQogewogICAgIGludCBpOwogCkBAIC01MDAsMTMgKzUzOCwxMyBAQAogCSAgICBOQ1VSU0VTX0NIX1QgbnRleHQwOwogCiAJICAgIHdoaWxlIChudW0gPiAxICYmICFDaGFyRXEobnRleHRbMF0sIG50ZXh0WzFdKSkgewotCQlQdXRDaGFyKENIUkVGKG50ZXh0WzBdKSk7CisJCVB1dENoYXIoTkNVUlNFU19TUF9BUkd4IENIUkVGKG50ZXh0WzBdKSk7CiAJCW50ZXh0Kys7CiAJCW51bS0tOwogCSAgICB9CiAJICAgIG50ZXh0MCA9IG50ZXh0WzBdOwogCSAgICBpZiAobnVtID09IDEpIHsKLQkJUHV0Q2hhcihDSFJFRihudGV4dDApKTsKKwkJUHV0Q2hhcihOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYobnRleHQwKSk7CiAJCXJldHVybiAwOwogCSAgICB9CiAJICAgIHJ1bmNvdW50ID0gMjsKQEAgLTUyMywxMCArNTYxLDEwIEBACiAJICAgICAqIHdoaWNoIGl0IHdvdWxkIGJlIG1hcmdpbmFsbHkgYWR2YW50YWdlb3VzLgogCSAgICAgKi8KIAkgICAgaWYgKGVyYXNlX2NoYXJzCi0JCSYmIHJ1bmNvdW50ID4gU1AtPl9lY2hfY29zdCArIFNQLT5fY3VwX2NoX2Nvc3QKLQkJJiYgY2FuX2NsZWFyX3dpdGgoQ0hSRUYobnRleHQwKSkpIHsKLQkJVXBkYXRlQXR0cnMobnRleHQwKTsKLQkJcHV0cChUUEFSTV8xKGVyYXNlX2NoYXJzLCBydW5jb3VudCkpOworCQkmJiBydW5jb3VudCA+IFNQX1BBUk0tPl9lY2hfY29zdCArIFNQX1BBUk0tPl9jdXBfY2hfY29zdAorCQkmJiBjYW5fY2xlYXJfd2l0aChOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYobnRleHQwKSkpIHsKKwkJVXBkYXRlQXR0cnMoU1BfUEFSTSwgbnRleHQwKTsKKwkJTkNVUlNFU19QVVRQMigiZXJhc2VfY2hhcnMiLCBUUEFSTV8xKGVyYXNlX2NoYXJzLCBydW5jb3VudCkpOwogCiAJCS8qCiAJCSAqIElmIHRoaXMgaXMgdGhlIGxhc3QgcGFydCBvZiB0aGUgZ2l2ZW4gaW50ZXJ2YWwsCkBAIC01MzQsMjcgKzU3MiwzNCBAQAogCQkgKiBsYXN0IHVwZGF0ZSBvbiB0aGUgbGluZS4KIAkJICovCiAJCWlmIChydW5jb3VudCA8IG51bSkgewotCQkgICAgR29UbyhTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCArIHJ1bmNvdW50KTsKKwkJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4CisJCQkgU1BfUEFSTS0+X2N1cnNyb3csCisJCQkgU1BfUEFSTS0+X2N1cnNjb2wgKyBydW5jb3VudCk7CiAJCX0gZWxzZSB7CiAJCSAgICByZXR1cm4gMTsJLyogY3Vyc29yIHN0YXlzIGluIHRoZSBtaWRkbGUgKi8KIAkJfQotCSAgICB9IGVsc2UgaWYgKHJlcGVhdF9jaGFyICYmIHJ1bmNvdW50ID4gU1AtPl9yZXBfY29zdCkgewotCQlib29sIHdyYXBfcG9zc2libGUgPSAoU1AtPl9jdXJzY29sICsgcnVuY291bnQgPj0gc2NyZWVuX2NvbHVtbnMpOworCSAgICB9IGVsc2UgaWYgKHJlcGVhdF9jaGFyICYmIHJ1bmNvdW50ID4gU1BfUEFSTS0+X3JlcF9jb3N0KSB7CisJCWJvb2wgd3JhcF9wb3NzaWJsZSA9IChTUF9QQVJNLT5fY3Vyc2NvbCArIHJ1bmNvdW50ID49CisJCQkJICAgICAgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkpOwogCQlpbnQgcmVwX2NvdW50ID0gcnVuY291bnQ7CiAKIAkJaWYgKHdyYXBfcG9zc2libGUpCiAJCSAgICByZXBfY291bnQtLTsKIAotCQlVcGRhdGVBdHRycyhudGV4dDApOwotCQl0cHV0cyhUUEFSTV8yKHJlcGVhdF9jaGFyLCBDaGFyT2YobnRleHQwKSwgcmVwX2NvdW50KSwKLQkJICAgICAgcmVwX2NvdW50LCBfbmNfb3V0Y2gpOwotCQlTUC0+X2N1cnNjb2wgKz0gcmVwX2NvdW50OworCQlVcGRhdGVBdHRycyhTUF9QQVJNLCBudGV4dDApOworCQlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJVFBBUk1fMihyZXBlYXRfY2hhciwKKwkJCQkJCUNoYXJPZihudGV4dDApLAorCQkJCQkJcmVwX2NvdW50KSwKKwkJCQkJcmVwX2NvdW50LAorCQkJCQlOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CisJCVNQX1BBUk0tPl9jdXJzY29sICs9IHJlcF9jb3VudDsKIAogCQlpZiAod3JhcF9wb3NzaWJsZSkKLQkJICAgIFB1dENoYXIoQ0hSRUYobnRleHQwKSk7CisJCSAgICBQdXRDaGFyKE5DVVJTRVNfU1BfQVJHeCBDSFJFRihudGV4dDApKTsKIAkgICAgfSBlbHNlIHsKIAkJZm9yIChpID0gMDsgaSA8IHJ1bmNvdW50OyBpKyspCi0JCSAgICBQdXRDaGFyKENIUkVGKG50ZXh0W2ldKSk7CisJCSAgICBQdXRDaGFyKE5DVVJTRVNfU1BfQVJHeCBDSFJFRihudGV4dFtpXSkpOwogCSAgICB9CiAJICAgIG50ZXh0ICs9IHJ1bmNvdW50OwogCSAgICBudW0gLT0gcnVuY291bnQ7CkBAIC01NjMsNyArNjA4LDcgQEAKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCi0JUHV0Q2hhcihDSFJFRihudGV4dFtpXSkpOworCVB1dENoYXIoTkNVUlNFU19TUF9BUkd4IENIUkVGKG50ZXh0W2ldKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTU3NiwzOSArNjIxLDQ2IEBACiAgKiBSZXR1cm5zOiBzYW1lIGFzIEVtaXRSYW5nZQogICovCiBzdGF0aWMgaW50Ci1QdXRSYW5nZShjb25zdCBOQ1VSU0VTX0NIX1QgKiBvdGV4dCwKK1B1dFJhbmdlKE5DVVJTRVNfU1BfRENMeAorCSBjb25zdCBOQ1VSU0VTX0NIX1QgKiBvdGV4dCwKIAkgY29uc3QgTkNVUlNFU19DSF9UICogbnRleHQsCiAJIGludCByb3csCiAJIGludCBmaXJzdCwgaW50IGxhc3QpCiB7CiAgICAgaW50IGksIGosIHNhbWU7CisgICAgaW50IHJjOwogCi0gICAgVFIoVFJBQ0VfQ0hBUlBVVCwgKCJQdXRSYW5nZSglcCwgJXAsICVkLCAlZCwgJWQpIiwKLQkJICAgICAgIG90ZXh0LCBudGV4dCwgcm93LCBmaXJzdCwgbGFzdCkpOworICAgIFRSKFRSQUNFX0NIQVJQVVQsICgiUHV0UmFuZ2UoJXAsICVwLCAlcCwgJWQsICVkLCAlZCkiLAorCQkgICAgICAgKHZvaWQgKikgU1BfUEFSTSwKKwkJICAgICAgIChjb25zdCB2b2lkICopIG90ZXh0LAorCQkgICAgICAgKGNvbnN0IHZvaWQgKikgbnRleHQsCisJCSAgICAgICByb3csIGZpcnN0LCBsYXN0KSk7CiAKICAgICBpZiAob3RleHQgIT0gbnRleHQKLQkmJiAobGFzdCAtIGZpcnN0ICsgMSkgPiBTUC0+X2lubGluZV9jb3N0KSB7CisJJiYgKGxhc3QgLSBmaXJzdCArIDEpID4gU1BfUEFSTS0+X2lubGluZV9jb3N0KSB7CiAJZm9yIChqID0gZmlyc3QsIHNhbWUgPSAwOyBqIDw9IGxhc3Q7IGorKykgewogCSAgICBpZiAoIXNhbWUgJiYgaXNXaWRlY0V4dChvdGV4dFtqXSkpCiAJCWNvbnRpbnVlOwogCSAgICBpZiAoQ2hhckVxKG90ZXh0W2pdLCBudGV4dFtqXSkpIHsKIAkJc2FtZSsrOwogCSAgICB9IGVsc2UgewotCQlpZiAoc2FtZSA+IFNQLT5faW5saW5lX2Nvc3QpIHsKLQkJICAgIEVtaXRSYW5nZShudGV4dCArIGZpcnN0LCBqIC0gc2FtZSAtIGZpcnN0KTsKLQkJICAgIEdvVG8ocm93LCBmaXJzdCA9IGopOworCQlpZiAoc2FtZSA+IFNQX1BBUk0tPl9pbmxpbmVfY29zdCkgeworCQkgICAgRW1pdFJhbmdlKE5DVVJTRVNfU1BfQVJHeCBudGV4dCArIGZpcnN0LCBqIC0gc2FtZSAtIGZpcnN0KTsKKwkJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IHJvdywgZmlyc3QgPSBqKTsKIAkJfQogCQlzYW1lID0gMDsKIAkgICAgfQogCX0KLQlpID0gRW1pdFJhbmdlKG50ZXh0ICsgZmlyc3QsIGogLSBzYW1lIC0gZmlyc3QpOworCWkgPSBFbWl0UmFuZ2UoTkNVUlNFU19TUF9BUkd4IG50ZXh0ICsgZmlyc3QsIGogLSBzYW1lIC0gZmlyc3QpOwogCS8qCiAJICogQWx3YXlzIHJldHVybiAxIGZvciB0aGUgbmV4dCBHb1RvKCkgYWZ0ZXIgYSBQdXRSYW5nZSgpIGlmIHdlIGZvdW5kCiAJICogaWRlbnRpY2FsIGNoYXJhY3RlcnMgYXQgZW5kIG9mIGludGVydmFsCiAJICovCi0JcmV0dXJuIChzYW1lID09IDAgPyBpIDogMSk7CisJcmMgPSAoc2FtZSA9PSAwID8gaSA6IDEpOworICAgIH0gZWxzZSB7CisJcmMgPSBFbWl0UmFuZ2UoTkNVUlNFU19TUF9BUkd4IG50ZXh0ICsgZmlyc3QsIGxhc3QgLSBmaXJzdCArIDEpOwogICAgIH0KLSAgICByZXR1cm4gRW1pdFJhbmdlKG50ZXh0ICsgZmlyc3QsIGxhc3QgLSBmaXJzdCArIDEpOworICAgIHJldHVybiByYzsKIH0KIAogLyogbGVhdmUgdW5icmFja2V0ZWQgaGVyZSBzbyAnaW5kZW50JyB3b3JrcyAqLwpAQCAtNjE4LDcgKzY3MCw3IEBACiAJCWlmX1VTRV9TQ1JPTExfSElOVFMod2luLT5fbGluZVtyb3ddLm9sZGluZGV4ID0gcm93KQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1kb3VwZGF0ZSh2b2lkKQorVElORk9fRE9VUERBVEUoTkNVUlNFU19TUF9EQ0wwKQogewogICAgIGludCBpOwogICAgIGludCBub25lbXB0eTsKQEAgLTYyNiwzMCArNjc4LDUyIEBACiAgICAgc3RydWN0IHRtcyBiZWZvcmUsIGFmdGVyOwogI2VuZGlmIC8qIFVTRV9UUkFDRV9USU1FUyAqLwogCi0gICAgVCgoVF9DQUxMRUQoImRvdXBkYXRlKCkiKSkpOworICAgIFQoKFRfQ0FMTEVEKCJfbmNfdGluZm86ZG91cGRhdGUoJXApIiksICh2b2lkICopIFNQX1BBUk0pKTsKIAotICAgIGlmIChjdXJzY3IgPT0gMAotCXx8IG5ld3NjciA9PSAwKQorICAgIGlmIChTUF9QQVJNID09IDApCisJcmV0dXJuQ29kZShFUlIpOworCisjaWYgIVVTRV9SRUVOVFJBTlQKKyAgICAvKgorICAgICAqIEl0IGlzICJsZWdhbCIgYnV0IHVubGlrZWx5IHRoYXQgYW4gYXBwbGljYXRpb24gY291bGQgYXNzaWduIGEgbmV3CisgICAgICogdmFsdWUgdG8gb25lIG9mIHRoZSBzdGFuZGFyZCB3aW5kb3dzLiAgQ2hlY2sgZm9yIHRoYXQgcG9zc2liaWxpdHkKKyAgICAgKiBhbmQgdHJ5IHRvIHJlY292ZXIuCisgICAgICoKKyAgICAgKiBXZSBkbyBub3QgYWxsb3cgYXBwbGljYXRpb25zIHRvIGFzc2lnbiBuZXcgdmFsdWVzIGluIHRoZSByZWVudHJhbnQKKyAgICAgKiBtb2RlbC4KKyAgICAgKi8KKyNkZWZpbmUgU3luY1NjcmVlbnMoaW50ZXJuYWwsZXhwb3J0ZWQpIFwKKwlpZiAoaW50ZXJuYWwgPT0gMCkgaW50ZXJuYWwgPSBleHBvcnRlZDsgXAorCWlmIChpbnRlcm5hbCAhPSBleHBvcnRlZCkgZXhwb3J0ZWQgPSBpbnRlcm5hbAorCisgICAgU3luY1NjcmVlbnMoQ3VyU2NyZWVuKFNQX1BBUk0pLCBjdXJzY3IpOworICAgIFN5bmNTY3JlZW5zKE5ld1NjcmVlbihTUF9QQVJNKSwgbmV3c2NyKTsKKyAgICBTeW5jU2NyZWVucyhTdGRTY3JlZW4oU1BfUEFSTSksIHN0ZHNjcik7CisjZW5kaWYKKworICAgIGlmIChDdXJTY3JlZW4oU1BfUEFSTSkgPT0gMAorCXx8IE5ld1NjcmVlbihTUF9QQVJNKSA9PSAwCisJfHwgU3RkU2NyZWVuKFNQX1BBUk0pID09IDApCiAJcmV0dXJuQ29kZShFUlIpOwogCiAjaWZkZWYgVFJBQ0UKICAgICBpZiAoVVNFX1RSQUNFRihUUkFDRV9VUERBVEUpKSB7Ci0JaWYgKGN1cnNjci0+X2NsZWFyKQorCWlmIChDdXJTY3JlZW4oU1BfUEFSTSktPl9jbGVhcikKIAkgICAgX3RyYWNlZigiY3Vyc2NyIGlzIGNsZWFyIik7CiAJZWxzZQotCSAgICBfdHJhY2VkdW1wKCJjdXJzY3IiLCBjdXJzY3IpOwotCV90cmFjZWR1bXAoIm5ld3NjciIsIG5ld3Njcik7CisJICAgIF90cmFjZWR1bXAoImN1cnNjciIsIEN1clNjcmVlbihTUF9QQVJNKSk7CisJX3RyYWNlZHVtcCgibmV3c2NyIiwgTmV3U2NyZWVuKFNQX1BBUk0pKTsKIAlfbmNfdW5sb2NrX2dsb2JhbCh0cmFjZWYpOwogICAgIH0KICNlbmRpZiAvKiBUUkFDRSAqLwogCiAgICAgX25jX3NpZ25hbF9oYW5kbGVyKEZBTFNFKTsKIAotICAgIGlmIChTUC0+X2ZpZm9ob2xkKQotCVNQLT5fZmlmb2hvbGQtLTsKKyAgICBpZiAoU1BfUEFSTS0+X2ZpZm9ob2xkKQorCVNQX1BBUk0tPl9maWZvaG9sZC0tOwogCiAjaWYgVVNFX1NJWkVDSEFOR0UKLSAgICBpZiAoU1AtPl9lbmR3aW4gfHwgX25jX2hhbmRsZV9zaWd3aW5jaChTUCkpIHsKKyAgICBpZiAoU1BfUEFSTS0+X2VuZHdpbiB8fCBfbmNfaGFuZGxlX3NpZ3dpbmNoKFNQX1BBUk0pKSB7CiAJLyoKIAkgKiBUaGlzIGlzIGEgdHJhbnNwYXJlbnQgZXh0ZW5zaW9uOiAgWFNJIGRvZXMgbm90IGFkZHJlc3MgaXQsCiAJICogYW5kIGFwcGxpY2F0aW9ucyBuZWVkIG5vdCBrbm93IHRoYXQgbmN1cnNlcyBjYW4gZG8gaXQuCkBAIC02NTgsMjAgKzczMiwyMCBAQAogCSAqICh0aGlzIGNhbiBoYXBwZW4gaW4gYW4geHRlcm0sIGZvciBleGFtcGxlKSwgYW5kIHJlc2l6ZSB0aGUKIAkgKiBuY3Vyc2VzIGRhdGEgc3RydWN0dXJlcyBhY2NvcmRpbmdseS4KIAkgKi8KLQlfbmNfdXBkYXRlX3NjcmVlbnNpemUoU1ApOworCV9uY191cGRhdGVfc2NyZWVuc2l6ZShTUF9QQVJNKTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChTUC0+X2VuZHdpbikgeworICAgIGlmIChTUF9QQVJNLT5fZW5kd2luKSB7CiAKIAlUKCgiY29taW5nIGJhY2sgZnJvbSBzaGVsbCBtb2RlIikpOwotCXJlc2V0X3Byb2dfbW9kZSgpOworCU5DVVJTRVNfU1BfTkFNRShyZXNldF9wcm9nX21vZGUpIChOQ1VSU0VTX1NQX0FSRyk7CiAKLQlfbmNfbXZjdXJfcmVzdW1lKCk7Ci0JX25jX3NjcmVlbl9yZXN1bWUoKTsKLQlTUC0+X21vdXNlX3Jlc3VtZShTUCk7CisJTkNVUlNFU19TUF9OQU1FKF9uY19tdmN1cl9yZXN1bWUpIChOQ1VSU0VTX1NQX0FSRyk7CisJTkNVUlNFU19TUF9OQU1FKF9uY19zY3JlZW5fcmVzdW1lKSAoTkNVUlNFU19TUF9BUkcpOworCVNQX1BBUk0tPl9tb3VzZV9yZXN1bWUoU1BfUEFSTSk7CiAKLQlTUC0+X2VuZHdpbiA9IEZBTFNFOworCVNQX1BBUk0tPl9lbmR3aW4gPSBGQUxTRTsKICAgICB9CiAjaWYgVVNFX1RSQUNFX1RJTUVTCiAgICAgLyogemVybyB0aGUgbWV0ZXJpbmcgbWFjaGluZXJ5ICovCkBAIC02OTUsMTEgKzc2OSwxMSBAQAogCWludCBqLCBrOwogCWF0dHJfdCByYXR0ciA9IEFfTk9STUFMOwogCi0JZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lczsgaSsrKSB7Ci0JICAgIGZvciAoaiA9IDA7IGogPCBzY3JlZW5fY29sdW1uczsgaisrKSB7CisJZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgaSsrKSB7CisJICAgIGZvciAoaiA9IDA7IGogPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgaisrKSB7CiAJCWJvb2wgZmFpbGVkID0gRkFMU0U7Ci0JCU5DVVJTRVNfQ0hfVCAqdGhpc2xpbmUgPSBuZXdzY3ItPl9saW5lW2ldLnRleHQ7Ci0JCWF0dHJfdCB0aGlzYXR0ciA9IEF0dHJPZih0aGlzbGluZVtqXSkgJiBTUC0+X3htY190cmlnZ2VyczsKKwkJTkNVUlNFU19DSF9UICp0aGlzbGluZSA9IE5ld1NjcmVlbihTUF9QQVJNKS0+X2xpbmVbaV0udGV4dDsKKwkJYXR0cl90IHRoaXNhdHRyID0gQXR0ck9mKHRoaXNsaW5lW2pdKSAmIFNQX1BBUk0tPl94bWNfdHJpZ2dlcnM7CiAJCWF0dHJfdCB0dXJub24gPSB0aGlzYXR0ciAmIH5yYXR0cjsKIAogCQkvKiBpcyBhbiBhdHRyaWJ1dGUgdHVybmVkIG9uIGhlcmU/ICovCkBAIC03MTcsOCArNzkxLDggQEAKIAkJICogdGhlcmUncyBlbm91Z2ggcm9vbSB0byBzZXQgdGhlIGF0dHJpYnV0ZSBiZWZvcmUgdGhlIGZpcnN0CiAJCSAqIG5vbi1ibGFuayBpbiB0aGUgcnVuLgogCQkgKi8KLSNkZWZpbmUgU0FGRShhKQkoISgoYSkgJiBTUC0+X3htY190cmlnZ2VycykpCi0JCWlmIChJU0JMQU5LKHRoaXNsaW5lW2pdKSAmJiBTQUZFKHR1cm5vbikpIHsKKyNkZWZpbmUgU0FGRShzY3IsYSkJKCEoKGEpICYgKHNjciktPl94bWNfdHJpZ2dlcnMpKQorCQlpZiAoSVNCTEFOSyh0aGlzbGluZVtqXSkgJiYgU0FGRShTUF9QQVJNLCB0dXJub24pKSB7CiAJCSAgICBSZW1BdHRyKHRoaXNsaW5lW2pdLCB0dXJub24pOwogCQkgICAgY29udGludWU7CiAJCX0KQEAgLTcyNywxNCArODAxLDE0IEBACiAJCWZvciAoayA9IDE7IGsgPD0gbWFnaWNfY29va2llX2dsaXRjaDsgaysrKSB7CiAJCSAgICBpZiAoaiAtIGsgPCAwCiAJCQl8fCAhSVNCTEFOSyh0aGlzbGluZVtqIC0ga10pCi0JCQl8fCAhU0FGRShBdHRyT2YodGhpc2xpbmVbaiAtIGtdKSkpIHsKKwkJCXx8ICFTQUZFKFNQX1BBUk0sIEF0dHJPZih0aGlzbGluZVtqIC0ga10pKSkgewogCQkJZmFpbGVkID0gVFJVRTsKIAkJCVRSKFRSQUNFX0FUVFJTLCAoIk5vIHJvb20gYXQgc3RhcnQgaW4gJWQsJWQlcyVzIiwKIAkJCQkJIGksIGogLSBrLAogCQkJCQkgKElTQkxBTksodGhpc2xpbmVbaiAtIGtdKQogCQkJCQkgID8gIiIKIAkJCQkJICA6ICI6bm9uYmxhbmsiKSwKLQkJCQkJIChTQUZFKEF0dHJPZih0aGlzbGluZVtqIC0ga10pKQorCQkJCQkgKFNBRkUoU1BfUEFSTSwgQXR0ck9mKHRoaXNsaW5lW2ogLSBrXSkpCiAJCQkJCSAgPyAiIgogCQkJCQkgIDogIjp1bnNhZmUiKSkpOwogCQkJYnJlYWs7CkBAIC03NDUsMTAgKzgxOSwxMSBAQAogCQkgICAgaW50IG0sIG4gPSBqOwogCiAJCSAgICAvKiBmaW5kIGVuZCBvZiBzcGFuLCBpZiBpdCdzIG9uc2NyZWVuICovCi0JCSAgICBmb3IgKG0gPSBpOyBtIDwgc2NyZWVuX2xpbmVzOyBtKyspIHsKLQkJCWZvciAoOyBuIDwgc2NyZWVuX2NvbHVtbnM7IG4rKykgewotCQkJICAgIGF0dHJfdCB0ZXN0YXR0ciA9IEF0dHJPZihuZXdzY3ItPl9saW5lW21dLnRleHRbbl0pOwotCQkJICAgIGlmICgodGVzdGF0dHIgJiBTUC0+X3htY190cmlnZ2VycykgPT0gcmF0dHIpIHsKKwkJICAgIGZvciAobSA9IGk7IG0gPCBzY3JlZW5fbGluZXMoU1BfUEFSTSk7IG0rKykgeworCQkJZm9yICg7IG4gPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgbisrKSB7CisJCQkgICAgYXR0cl90IHRlc3RhdHRyID0KKwkJCSAgICBBdHRyT2YoTmV3U2NyZWVuKFNQX1BBUk0pLT5fbGluZVttXS50ZXh0W25dKTsKKwkJCSAgICBpZiAoKHRlc3RhdHRyICYgU1BfUEFSTS0+X3htY190cmlnZ2VycykgPT0gcmF0dHIpIHsKIAkJCQllbmRfb25zY3JlZW4gPSBUUlVFOwogCQkJCVRSKFRSQUNFX0FUVFJTLAogCQkJCSAgICgiUmFuZ2UgYXR0cmlidXRlZCB3aXRoICVzIGVuZHMgYXQgKCVkLCAlZCkiLApAQCAtNzY0LDcgKzgzOSw4IEBACiAJCSAgZm91bmRpdDo7CiAKIAkJICAgIGlmIChlbmRfb25zY3JlZW4pIHsKLQkJCU5DVVJTRVNfQ0hfVCAqbGFzdGxpbmUgPSBuZXdzY3ItPl9saW5lW21dLnRleHQ7CisJCQlOQ1VSU0VTX0NIX1QgKmxhc3RsaW5lID0KKwkJCU5ld1NjcmVlbihTUF9QQVJNKS0+X2xpbmVbbV0udGV4dDsKIAogCQkJLyoKIAkJCSAqIElmIHRoZXJlIGFyZSBzYWZlbHktYXR0cmlidXRlZCBibGFua3MgYXQgdGhlIGVuZCBvZgpAQCAtNzczLDE1ICs4NDksMTUgQEAKIAkJCSAqLwogCQkJd2hpbGUgKG4gPj0gMAogCQkJICAgICAgICYmIElTQkxBTksobGFzdGxpbmVbbl0pCi0JCQkgICAgICAgJiYgU0FGRShBdHRyT2YobGFzdGxpbmVbbl0pKSkgeworCQkJICAgICAgICYmIFNBRkUoU1BfUEFSTSwgQXR0ck9mKGxhc3RsaW5lW25dKSkpIHsKIAkJCSAgICBSZW1BdHRyKGxhc3RsaW5lW24tLV0sIHR1cm5vbik7CiAJCQl9CiAKIAkJCS8qIGNoZWNrIHRoYXQgdGhlcmUncyBlbm91Z2ggcm9vbSBhdCBlbmQgb2Ygc3BhbiAqLwogCQkJZm9yIChrID0gMTsgayA8PSBtYWdpY19jb29raWVfZ2xpdGNoOyBrKyspIHsKLQkJCSAgICBpZiAobiArIGsgPj0gc2NyZWVuX2NvbHVtbnMKKwkJCSAgICBpZiAobiArIGsgPj0gc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkKIAkJCQl8fCAhSVNCTEFOSyhsYXN0bGluZVtuICsga10pCi0JCQkJfHwgIVNBRkUoQXR0ck9mKGxhc3RsaW5lW24gKyBrXSkpKSB7CisJCQkJfHwgIVNBRkUoU1BfUEFSTSwgQXR0ck9mKGxhc3RsaW5lW24gKyBrXSkpKSB7CiAJCQkJZmFpbGVkID0gVFJVRTsKIAkJCQlUUihUUkFDRV9BVFRSUywKIAkJCQkgICAoIk5vIHJvb20gYXQgZW5kIGluICVkLCVkJXMlcyIsCkBAIC03ODksNyArODY1LDcgQEAKIAkJCQkgICAgKElTQkxBTksobGFzdGxpbmVbbiArIGtdKQogCQkJCSAgICAgPyAiIgogCQkJCSAgICAgOiAiOm5vbmJsYW5rIiksCi0JCQkJICAgIChTQUZFKEF0dHJPZihsYXN0bGluZVtuICsga10pKQorCQkJCSAgICAoU0FGRShTUF9QQVJNLCBBdHRyT2YobGFzdGxpbmVbbiArIGtdKSkKIAkJCQkgICAgID8gIiIKIAkJCQkgICAgIDogIjp1bnNhZmUiKSkpOwogCQkJCWJyZWFrOwpAQCAtODA2LDEyICs4ODIsMTIgQEAKIAkJCV90cmFjZWF0dHIodHVybm9uKSwgaSwgaikpOwogCiAJCSAgICAvKiB0dXJuIG9mZiBuZXcgYXR0cmlidXRlcyBvdmVyIHNwYW4gKi8KLQkJICAgIGZvciAocCA9IGk7IHAgPCBzY3JlZW5fbGluZXM7IHArKykgewotCQkJZm9yICg7IHEgPCBzY3JlZW5fY29sdW1uczsgcSsrKSB7CisJCSAgICBmb3IgKHAgPSBpOyBwIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBwKyspIHsKKwkJCWZvciAoOyBxIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7IHErKykgewogCQkJICAgIGF0dHJfdCB0ZXN0YXR0ciA9IEF0dHJPZihuZXdzY3ItPl9saW5lW3BdLnRleHRbcV0pOwotCQkJICAgIGlmICgodGVzdGF0dHIgJiBTUC0+X3htY190cmlnZ2VycykgPT0gcmF0dHIpCisJCQkgICAgaWYgKCh0ZXN0YXR0ciAmIFNQX1BBUk0tPl94bWNfdHJpZ2dlcnMpID09IHJhdHRyKQogCQkJCWdvdG8gZm91bmRlbmQ7Ci0JCQkgICAgUmVtQXR0cihuZXdzY3ItPl9saW5lW3BdLnRleHRbcV0sIHR1cm5vbik7CisJCQkgICAgUmVtQXR0cihOZXdTY3JlZW4oU1BfUEFSTSktPl9saW5lW3BdLnRleHRbcV0sIHR1cm5vbik7CiAJCQl9CiAJCQlxID0gMDsKIAkJICAgIH0KQEAgLTgzNyw3ICs5MTMsNyBAQAogCS8qIHNob3cgYWx0ZXJlZCBoaWdobGlnaHRzIGFmdGVyIG1hZ2ljLWNvb2tpZSBjaGVjayAqLwogCWlmIChVU0VfVFJBQ0VGKFRSQUNFX1VQREFURSkpIHsKIAkgICAgX3RyYWNlZigiQWZ0ZXIgbWFnaWMtY29va2llIGNoZWNrLi4uIik7Ci0JICAgIF90cmFjZWR1bXAoIm5ld3NjciIsIG5ld3Njcik7CisJICAgIF90cmFjZWR1bXAoIm5ld3NjciIsIE5ld1NjcmVlbihTUF9QQVJNKSk7CiAJICAgIF9uY191bmxvY2tfZ2xvYmFsKHRyYWNlZik7CiAJfQogI2VuZGlmIC8qIFRSQUNFICovCkBAIC04NDUsMjMgKzkyMSwyMyBAQAogI2VuZGlmIC8qIFVTRV9YTUNfU1VQUE9SVCAqLwogCiAgICAgbm9uZW1wdHkgPSAwOwotICAgIGlmIChjdXJzY3ItPl9jbGVhciB8fCBuZXdzY3ItPl9jbGVhcikgewkvKiBmb3JjZSByZWZyZXNoID8gKi8KLQlDbHJVcGRhdGUoKTsKLQljdXJzY3ItPl9jbGVhciA9IEZBTFNFOwkvKiByZXNldCBmbGFnICovCi0JbmV3c2NyLT5fY2xlYXIgPSBGQUxTRTsJLyogcmVzZXQgZmxhZyAqLworICAgIGlmIChDdXJTY3JlZW4oU1BfUEFSTSktPl9jbGVhciB8fCBOZXdTY3JlZW4oU1BfUEFSTSktPl9jbGVhcikgewkvKiBmb3JjZSByZWZyZXNoID8gKi8KKwlDbHJVcGRhdGUoTkNVUlNFU19TUF9BUkcpOworCUN1clNjcmVlbihTUF9QQVJNKS0+X2NsZWFyID0gRkFMU0U7CS8qIHJlc2V0IGZsYWcgKi8KKwlOZXdTY3JlZW4oU1BfUEFSTSktPl9jbGVhciA9IEZBTFNFOwkvKiByZXNldCBmbGFnICovCiAgICAgfSBlbHNlIHsKIAlpbnQgY2hhbmdlZGxpbmVzID0gQ0hFQ0tfSU5URVJWQUw7CiAKLQlpZiAoY2hlY2tfcGVuZGluZygpKQorCWlmIChjaGVja19wZW5kaW5nKE5DVVJTRVNfU1BfQVJHKSkKIAkgICAgZ290byBjbGVhbnVwOwogCi0Jbm9uZW1wdHkgPSBtaW4oc2NyZWVuX2xpbmVzLCBuZXdzY3ItPl9tYXh5ICsgMSk7CisJbm9uZW1wdHkgPSBtaW4oc2NyZWVuX2xpbmVzKFNQX1BBUk0pLCBOZXdTY3JlZW4oU1BfUEFSTSktPl9tYXh5ICsgMSk7CiAKLQlpZiAoU1AtPl9zY3JvbGxpbmcpIHsKLQkgICAgX25jX3Njcm9sbF9vcHRpbWl6ZSgpOworCWlmIChTUF9QQVJNLT5fc2Nyb2xsaW5nKSB7CisJICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsX29wdGltaXplKSAoTkNVUlNFU19TUF9BUkcpOwogCX0KIAotCW5vbmVtcHR5ID0gQ2xyQm90dG9tKG5vbmVtcHR5KTsKKwlub25lbXB0eSA9IENsckJvdHRvbShOQ1VSU0VTX1NQX0FSR3ggbm9uZW1wdHkpOwogCiAJVFIoVFJBQ0VfVVBEQVRFLCAoIlRyYW5zZm9ybWluZyBsaW5lcywgbm9uZW1wdHkgJWQiLCBub25lbXB0eSkpOwogCWZvciAoaSA9IDA7IGkgPCBub25lbXB0eTsgaSsrKSB7CkBAIC04NjksNyArOTQ1LDcgQEAKIAkgICAgICogSGVyZSBpcyBvdXIgbGluZS1icmVha291dCBvcHRpbWl6YXRpb24uCiAJICAgICAqLwogCSAgICBpZiAoY2hhbmdlZGxpbmVzID09IENIRUNLX0lOVEVSVkFMKSB7Ci0JCWlmIChjaGVja19wZW5kaW5nKCkpCisJCWlmIChjaGVja19wZW5kaW5nKE5DVVJTRVNfU1BfQVJHKSkKIAkJICAgIGdvdG8gY2xlYW51cDsKIAkJY2hhbmdlZGxpbmVzID0gMDsKIAkgICAgfQpAQCAtODgwLDM1ICs5NTYsMzUgQEAKIAkgICAgICogaXMgbm9ybWFsbHkgc2V0IGJ5IF9uY19zY3JvbGxfd2luZG93IGluIHRoZQogCSAgICAgKiB2ZXJ0aWNhbC1tb3ZlbWVudCBvcHRpbWl6YXRpb24gY29kZSwKIAkgICAgICovCi0JICAgIGlmIChuZXdzY3ItPl9saW5lW2ldLmZpcnN0Y2hhciAhPSBfTk9DSEFOR0UKLQkJfHwgY3Vyc2NyLT5fbGluZVtpXS5maXJzdGNoYXIgIT0gX05PQ0hBTkdFKSB7Ci0JCVRyYW5zZm9ybUxpbmUoaSk7CisJICAgIGlmIChOZXdTY3JlZW4oU1BfUEFSTSktPl9saW5lW2ldLmZpcnN0Y2hhciAhPSBfTk9DSEFOR0UKKwkJfHwgQ3VyU2NyZWVuKFNQX1BBUk0pLT5fbGluZVtpXS5maXJzdGNoYXIgIT0gX05PQ0hBTkdFKSB7CisJCVRyYW5zZm9ybUxpbmUoTkNVUlNFU19TUF9BUkd4IGkpOwogCQljaGFuZ2VkbGluZXMrKzsKIAkgICAgfQogCiAJICAgIC8qIG1hcmsgbGluZSBjaGFuZ2VkIHN1Y2Nlc3NmdWxseSAqLwotCSAgICBpZiAoaSA8PSBuZXdzY3ItPl9tYXh5KSB7Ci0JCU1BUktfTk9DSEFOR0UobmV3c2NyLCBpKTsKKwkgICAgaWYgKGkgPD0gTmV3U2NyZWVuKFNQX1BBUk0pLT5fbWF4eSkgeworCQlNQVJLX05PQ0hBTkdFKE5ld1NjcmVlbihTUF9QQVJNKSwgaSk7CiAJICAgIH0KLQkgICAgaWYgKGkgPD0gY3Vyc2NyLT5fbWF4eSkgewotCQlNQVJLX05PQ0hBTkdFKGN1cnNjciwgaSk7CisJICAgIGlmIChpIDw9IEN1clNjcmVlbihTUF9QQVJNKS0+X21heHkpIHsKKwkJTUFSS19OT0NIQU5HRShDdXJTY3JlZW4oU1BfUEFSTSksIGkpOwogCSAgICB9CiAJfQogICAgIH0KIAogICAgIC8qIHB1dCBldmVyeXRoaW5nIGJhY2sgaW4gc3luYyAqLwotICAgIGZvciAoaSA9IG5vbmVtcHR5OyBpIDw9IG5ld3Njci0+X21heHk7IGkrKykgewotCU1BUktfTk9DSEFOR0UobmV3c2NyLCBpKTsKKyAgICBmb3IgKGkgPSBub25lbXB0eTsgaSA8PSBOZXdTY3JlZW4oU1BfUEFSTSktPl9tYXh5OyBpKyspIHsKKwlNQVJLX05PQ0hBTkdFKE5ld1NjcmVlbihTUF9QQVJNKSwgaSk7CiAgICAgfQotICAgIGZvciAoaSA9IG5vbmVtcHR5OyBpIDw9IGN1cnNjci0+X21heHk7IGkrKykgewotCU1BUktfTk9DSEFOR0UoY3Vyc2NyLCBpKTsKKyAgICBmb3IgKGkgPSBub25lbXB0eTsgaSA8PSBDdXJTY3JlZW4oU1BfUEFSTSktPl9tYXh5OyBpKyspIHsKKwlNQVJLX05PQ0hBTkdFKEN1clNjcmVlbihTUF9QQVJNKSwgaSk7CiAgICAgfQogCi0gICAgaWYgKCFuZXdzY3ItPl9sZWF2ZW9rKSB7Ci0JY3Vyc2NyLT5fY3VyeCA9IG5ld3Njci0+X2N1cng7Ci0JY3Vyc2NyLT5fY3VyeSA9IG5ld3Njci0+X2N1cnk7CisgICAgaWYgKCFOZXdTY3JlZW4oU1BfUEFSTSktPl9sZWF2ZW9rKSB7CisJQ3VyU2NyZWVuKFNQX1BBUk0pLT5fY3VyeCA9IE5ld1NjcmVlbihTUF9QQVJNKS0+X2N1cng7CisJQ3VyU2NyZWVuKFNQX1BBUk0pLT5fY3VyeSA9IE5ld1NjcmVlbihTUF9QQVJNKS0+X2N1cnk7CiAKLQlHb1RvKGN1cnNjci0+X2N1cnksIGN1cnNjci0+X2N1cngpOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IEN1clNjcmVlbihTUF9QQVJNKS0+X2N1cnksIEN1clNjcmVlbihTUF9QQVJNKS0+X2N1cngpOwogICAgIH0KIAogICBjbGVhbnVwOgpAQCAtOTIxLDEwICs5OTcsMTAgQEAKICNpZiBVU0VfWE1DX1NVUFBPUlQKICAgICBpZiAobWFnaWNfY29va2llX2dsaXRjaCAhPSAwKQogI2VuZGlmCi0JVXBkYXRlQXR0cnMobm9ybWFsKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBub3JtYWwpOwogCi0gICAgX25jX2ZsdXNoKCk7Ci0gICAgV0lORE9XX0FUVFJTKGN1cnNjcikgPSBXSU5ET1dfQVRUUlMobmV3c2NyKTsKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX2ZsdXNoKSAoTkNVUlNFU19TUF9BUkcpOworICAgIFdJTkRPV19BVFRSUyhDdXJTY3JlZW4oU1BfUEFSTSkpID0gV0lORE9XX0FUVFJTKE5ld1NjcmVlbihTUF9QQVJNKSk7CiAKICNpZiBVU0VfVFJBQ0VfVElNRVMKICAgICAodm9pZCkgdGltZXMoJmFmdGVyKTsKQEAgLTk0MCw2ICsxMDE2LDE0IEBACiAgICAgcmV0dXJuQ29kZShPSyk7CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTICYmICFkZWZpbmVkKFVTRV9URVJNX0RSSVZFUikKK05DVVJTRVNfRVhQT1JUKGludCkKK2RvdXBkYXRlKHZvaWQpCit7CisgICAgcmV0dXJuIFRJTkZPX0RPVVBEQVRFKENVUlJFTlRfU0NSRUVOKTsKK30KKyNlbmRpZgorCiAvKgogICoJQ2xyQmxhbmsod2luKQogICoKQEAgLTk1MSwxNCArMTAzNSwxNCBAQAogICoJaW4gdGhlIHdia2dkKCkgY2FsbC4gIEFzc3VtZSAnc3Rkc2NyJyBmb3IgdGhpcyBjYXNlLgogICovCiAjZGVmaW5lIEJDRV9BVFRSUyAoQV9OT1JNQUx8QV9DT0xPUikKLSNkZWZpbmUgQkNFX0JLR0Qod2luKSAoKCh3aW4pID09IGN1cnNjciA/IHN0ZHNjciA6ICh3aW4pKS0+X25jX2JrZ2QpCisjZGVmaW5lIEJDRV9CS0dEKHNwLHdpbikgKCgod2luKSA9PSBDdXJTY3JlZW4oc3ApID8gU3RkU2NyZWVuKHNwKSA6ICh3aW4pKS0+X25jX2JrZ2QpCiAKIHN0YXRpYyBOQ1VSU0VTX0lOTElORSBOQ1VSU0VTX0NIX1QKLUNsckJsYW5rKFdJTkRPVyAqd2luKQorQ2xyQmxhbmsoTkNVUlNFU19TUF9EQ0x4IFdJTkRPVyAqd2luKQogewogICAgIE5DVVJTRVNfQ0hfVCBibGFuayA9IGJsYW5rY2hhcjsKICAgICBpZiAoYmFja19jb2xvcl9lcmFzZSkKLQlBZGRBdHRyKGJsYW5rLCAoQXR0ck9mKEJDRV9CS0dEKHdpbikpICYgQkNFX0FUVFJTKSk7CisJQWRkQXR0cihibGFuaywgKEF0dHJPZihCQ0VfQktHRChTUF9QQVJNLCB3aW4pKSAmIEJDRV9BVFRSUykpOwogICAgIHJldHVybiBibGFuazsKIH0KIApAQCAtOTcwLDIzICsxMDU0LDI0IEBACiAqLwogCiBzdGF0aWMgdm9pZAotQ2xyVXBkYXRlKHZvaWQpCitDbHJVcGRhdGUoTkNVUlNFU19TUF9EQ0wwKQogewotICAgIGludCBpOwotICAgIE5DVVJTRVNfQ0hfVCBibGFuayA9IENsckJsYW5rKHN0ZHNjcik7Ci0gICAgaW50IG5vbmVtcHR5ID0gbWluKHNjcmVlbl9saW5lcywgbmV3c2NyLT5fbWF4eSArIDEpOwotCiAgICAgVFIoVFJBQ0VfVVBEQVRFLCAoVF9DQUxMRUQoIkNsclVwZGF0ZSIpKSk7CisgICAgaWYgKDAgIT0gU1BfUEFSTSkgeworCWludCBpOworCU5DVVJTRVNfQ0hfVCBibGFuayA9IENsckJsYW5rKE5DVVJTRVNfU1BfQVJHeCBTdGRTY3JlZW4oU1BfUEFSTSkpOworCWludCBub25lbXB0eSA9IG1pbihzY3JlZW5fbGluZXMoU1BfUEFSTSksCisJCQkgICBOZXdTY3JlZW4oU1BfUEFSTSktPl9tYXh5ICsgMSk7CiAKLSAgICBDbGVhclNjcmVlbihibGFuayk7CisJQ2xlYXJTY3JlZW4oTkNVUlNFU19TUF9BUkd4IGJsYW5rKTsKIAotICAgIFRSKFRSQUNFX1VQREFURSwgKCJ1cGRhdGluZyBzY3JlZW4gZnJvbSBzY3JhdGNoIikpOworCVRSKFRSQUNFX1VQREFURSwgKCJ1cGRhdGluZyBzY3JlZW4gZnJvbSBzY3JhdGNoIikpOwogCi0gICAgbm9uZW1wdHkgPSBDbHJCb3R0b20obm9uZW1wdHkpOworCW5vbmVtcHR5ID0gQ2xyQm90dG9tKE5DVVJTRVNfU1BfQVJHeCBub25lbXB0eSk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbm9uZW1wdHk7IGkrKykKLQlUcmFuc2Zvcm1MaW5lKGkpOwotCisJZm9yIChpID0gMDsgaSA8IG5vbmVtcHR5OyBpKyspCisJICAgIFRyYW5zZm9ybUxpbmUoTkNVUlNFU19TUF9BUkd4IGkpOworICAgIH0KICAgICBUUihUUkFDRV9VUERBVEUsIChUX1JFVFVSTigiIikpKTsKIH0KIApAQCAtOTk3LDE1ICsxMDgyLDE2IEBACiAqLwogCiBzdGF0aWMgdm9pZAotQ2xyVG9FT0woTkNVUlNFU19DSF9UIGJsYW5rLCBib29sIG5lZWRjbGVhcikKK0NsclRvRU9MKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NIX1QgYmxhbmssIGludCBuZWVkY2xlYXIpCiB7CiAgICAgaW50IGo7CiAKLSAgICBpZiAoY3Vyc2NyICE9IDAKLQkmJiBTUC0+X2N1cnNyb3cgPj0gMCkgewotCWZvciAoaiA9IFNQLT5fY3Vyc2NvbDsgaiA8IHNjcmVlbl9jb2x1bW5zOyBqKyspIHsKKyAgICBpZiAoQ3VyU2NyZWVuKFNQX1BBUk0pICE9IDAKKwkmJiBTUF9QQVJNLT5fY3Vyc3JvdyA+PSAwKSB7CisJZm9yIChqID0gU1BfUEFSTS0+X2N1cnNjb2w7IGogPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgaisrKSB7CiAJICAgIGlmIChqID49IDApIHsKLQkJTkNVUlNFU19DSF9UICpjcCA9ICYoY3Vyc2NyLT5fbGluZVtTUC0+X2N1cnNyb3ddLnRleHRbal0pOworCQlOQ1VSU0VTX0NIX1QgKmNwID0KKwkJJihDdXJTY3JlZW4oU1BfUEFSTSktPl9saW5lW1NQX1BBUk0tPl9jdXJzcm93XS50ZXh0W2pdKTsKIAogCQlpZiAoIUNoYXJFcSgqY3AsIGJsYW5rKSkgewogCQkgICAgKmNwID0gYmxhbms7CkBAIC0xMDEzLDE5ICsxMDk5LDE2IEBACiAJCX0KIAkgICAgfQogCX0KLSAgICB9IGVsc2UgewotCW5lZWRjbGVhciA9IFRSVUU7CiAgICAgfQogCiAgICAgaWYgKG5lZWRjbGVhcikgewotCVVwZGF0ZUF0dHJzKGJsYW5rKTsKLQlUUFVUU19UUkFDRSgiY2xyX2VvbCIpOwotCWlmIChjbHJfZW9sICYmIFNQLT5fZWxfY29zdCA8PSAoc2NyZWVuX2NvbHVtbnMgLSBTUC0+X2N1cnNjb2wpKSB7Ci0JICAgIHB1dHAoY2xyX2VvbCk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOworCWlmIChjbHJfZW9sICYmIFNQX1BBUk0tPl9lbF9jb3N0IDw9IChzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSAtIFNQX1BBUk0tPl9jdXJzY29sKSkgeworCSAgICBOQ1VSU0VTX1BVVFAyKCJjbHJfZW9sIiwgY2xyX2VvbCk7CiAJfSBlbHNlIHsKLQkgICAgaW50IGNvdW50ID0gKHNjcmVlbl9jb2x1bW5zIC0gU1AtPl9jdXJzY29sKTsKKwkgICAgaW50IGNvdW50ID0gKHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gU1BfUEFSTS0+X2N1cnNjb2wpOwogCSAgICB3aGlsZSAoY291bnQtLSA+IDApCi0JCVB1dENoYXIoQ0hSRUYoYmxhbmspKTsKKwkJUHV0Q2hhcihOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYoYmxhbmspKTsKIAl9CiAgICAgfQogfQpAQCAtMTAzNywyMyArMTEyMCwzMSBAQAogKi8KIAogc3RhdGljIHZvaWQKLUNsclRvRU9TKE5DVVJTRVNfQ0hfVCBibGFuaykKK0NsclRvRU9TKE5DVVJTRVNfU1BfRENMeCBOQ1VSU0VTX0NIX1QgYmxhbmspCiB7CiAgICAgaW50IHJvdywgY29sOwogCi0gICAgcm93ID0gU1AtPl9jdXJzcm93OwotICAgIGNvbCA9IFNQLT5fY3Vyc2NvbDsKKyAgICByb3cgPSBTUF9QQVJNLT5fY3Vyc3JvdzsKKyAgICBjb2wgPSBTUF9QQVJNLT5fY3Vyc2NvbDsKIAotICAgIFVwZGF0ZUF0dHJzKGJsYW5rKTsKKyAgICBpZiAocm93IDwgMCkKKwlyb3cgPSAwOworICAgIGlmIChjb2wgPCAwKQorCWNvbCA9IDA7CisKKyAgICBVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAgICAgVFBVVFNfVFJBQ0UoImNscl9lb3MiKTsKLSAgICB0cHV0cyhjbHJfZW9zLCBzY3JlZW5fbGluZXMgLSByb3csIF9uY19vdXRjaCk7CisgICAgTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkgICAgY2xyX2VvcywKKwkJCSAgICBzY3JlZW5fbGluZXMoU1BfUEFSTSkgLSByb3csCisJCQkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOwogCi0gICAgd2hpbGUgKGNvbCA8IHNjcmVlbl9jb2x1bW5zKQotCWN1cnNjci0+X2xpbmVbcm93XS50ZXh0W2NvbCsrXSA9IGJsYW5rOworICAgIHdoaWxlIChjb2wgPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSkKKwlDdXJTY3JlZW4oU1BfUEFSTSktPl9saW5lW3Jvd10udGV4dFtjb2wrK10gPSBibGFuazsKIAotICAgIGZvciAocm93Kys7IHJvdyA8IHNjcmVlbl9saW5lczsgcm93KyspIHsKLQlmb3IgKGNvbCA9IDA7IGNvbCA8IHNjcmVlbl9jb2x1bW5zOyBjb2wrKykKLQkgICAgY3Vyc2NyLT5fbGluZVtyb3ddLnRleHRbY29sXSA9IGJsYW5rOworICAgIGZvciAocm93Kys7IHJvdyA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgcm93KyspIHsKKwlmb3IgKGNvbCA9IDA7IGNvbCA8IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pOyBjb2wrKykKKwkgICAgQ3VyU2NyZWVuKFNQX1BBUk0pLT5fbGluZVtyb3ddLnRleHRbY29sXSA9IGJsYW5rOwogICAgIH0KIH0KIApAQCAtMTA2NSwyNiArMTE1NiwyNiBAQAogICoJc2NyZWVuLCBjaGVja2luZyBpZiBlYWNoIGlzIGJsYW5rLCBhbmQgb25lIG9yIG1vcmUgYXJlIGNoYW5nZWQuCiAgKi8KIHN0YXRpYyBpbnQKLUNsckJvdHRvbShpbnQgdG90YWwpCitDbHJCb3R0b20oTkNVUlNFU19TUF9EQ0x4IGludCB0b3RhbCkKIHsKICAgICBpbnQgcm93OwogICAgIGludCBjb2w7CiAgICAgaW50IHRvcCA9IHRvdGFsOwotICAgIGludCBsYXN0ID0gbWluKHNjcmVlbl9jb2x1bW5zLCBuZXdzY3ItPl9tYXh4ICsgMSk7Ci0gICAgTkNVUlNFU19DSF9UIGJsYW5rID0gbmV3c2NyLT5fbGluZVt0b3RhbCAtIDFdLnRleHRbbGFzdCAtIDFdOworICAgIGludCBsYXN0ID0gbWluKHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pLCBOZXdTY3JlZW4oU1BfUEFSTSktPl9tYXh4ICsgMSk7CisgICAgTkNVUlNFU19DSF9UIGJsYW5rID0gTmV3U2NyZWVuKFNQX1BBUk0pLT5fbGluZVt0b3RhbCAtIDFdLnRleHRbbGFzdCAtIDFdOwogICAgIGJvb2wgb2s7CiAKLSAgICBpZiAoY2xyX2VvcyAmJiBjYW5fY2xlYXJfd2l0aChDSFJFRihibGFuaykpKSB7CisgICAgaWYgKGNscl9lb3MgJiYgY2FuX2NsZWFyX3dpdGgoTkNVUlNFU19TUF9BUkd4IENIUkVGKGJsYW5rKSkpIHsKIAogCWZvciAocm93ID0gdG90YWwgLSAxOyByb3cgPj0gMDsgcm93LS0pIHsKIAkgICAgZm9yIChjb2wgPSAwLCBvayA9IFRSVUU7IG9rICYmIGNvbCA8IGxhc3Q7IGNvbCsrKSB7Ci0JCW9rID0gKENoYXJFcShuZXdzY3ItPl9saW5lW3Jvd10udGV4dFtjb2xdLCBibGFuaykpOworCQlvayA9IChDaGFyRXEoTmV3U2NyZWVuKFNQX1BBUk0pLT5fbGluZVtyb3ddLnRleHRbY29sXSwgYmxhbmspKTsKIAkgICAgfQogCSAgICBpZiAoIW9rKQogCQlicmVhazsKIAogCSAgICBmb3IgKGNvbCA9IDA7IG9rICYmIGNvbCA8IGxhc3Q7IGNvbCsrKSB7Ci0JCW9rID0gKENoYXJFcShjdXJzY3ItPl9saW5lW3Jvd10udGV4dFtjb2xdLCBibGFuaykpOworCQlvayA9IChDaGFyRXEoQ3VyU2NyZWVuKFNQX1BBUk0pLT5fbGluZVtyb3ddLnRleHRbY29sXSwgYmxhbmspKTsKIAkgICAgfQogCSAgICBpZiAoIW9rKQogCQl0b3AgPSByb3c7CkBAIC0xMDkyLDExICsxMTgzLDExIEBACiAKIAkvKiBkb24ndCB1c2UgY2xyX2VvcyBmb3IganVzdCBvbmUgbGluZSBpZiBjbHJfZW9sIGF2YWlsYWJsZSAqLwogCWlmICh0b3AgPCB0b3RhbCkgewotCSAgICBHb1RvKHRvcCwgMCk7Ci0JICAgIENsclRvRU9TKGJsYW5rKTsKLQkgICAgaWYgKFNQLT5vbGRoYXNoICYmIFNQLT5uZXdoYXNoKSB7Ci0JCWZvciAocm93ID0gdG9wOyByb3cgPCBzY3JlZW5fbGluZXM7IHJvdysrKQotCQkgICAgU1AtPm9sZGhhc2hbcm93XSA9IFNQLT5uZXdoYXNoW3Jvd107CisJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IHRvcCwgMCk7CisJICAgIENsclRvRU9TKE5DVVJTRVNfU1BfQVJHeCBibGFuayk7CisJICAgIGlmIChTUF9QQVJNLT5vbGRoYXNoICYmIFNQX1BBUk0tPm5ld2hhc2gpIHsKKwkJZm9yIChyb3cgPSB0b3A7IHJvdyA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgcm93KyspCisJCSAgICBTUF9QQVJNLT5vbGRoYXNoW3Jvd10gPSBTUF9QQVJNLT5uZXdoYXNoW3Jvd107CiAJICAgIH0KIAl9CiAgICAgfQpAQCAtMTEwNSwyMiArMTE5NiwyMiBAQAogCiAjaWYgVVNFX1hNQ19TVVBQT1JUCiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKLSNkZWZpbmUgY2hlY2tfeG1jX3RyYW5zaXRpb24oYSwgYikgXAotICAgICgoKChhKS0+YXR0ciBeIChiKS0+YXR0cikgJiB+KChhKS0+YXR0cikgJiBTUC0+X3htY190cmlnZ2VycykgIT0gMCkKLSNkZWZpbmUgeG1jX3R1cm5fb24oYSxiKSBjaGVja194bWNfdHJhbnNpdGlvbigmKGEpLCAmKGIpKQorI2RlZmluZSBjaGVja194bWNfdHJhbnNpdGlvbihzcCwgYSwgYikJCQkJCVwKKyAgICAoKCgoYSktPmF0dHIgXiAoYiktPmF0dHIpICYgfigoYSktPmF0dHIpICYgKHNwKS0+X3htY190cmlnZ2VycykgIT0gMCkKKyNkZWZpbmUgeG1jX3R1cm5fb24oc3AsYSxiKSBjaGVja194bWNfdHJhbnNpdGlvbihzcCwmKGEpLCAmKGIpKQogI2Vsc2UKLSNkZWZpbmUgeG1jX3R1cm5fb24oYSxiKSAoKCgoYSleKGIpKSAmIH4oYSkgJiBTUC0+X3htY190cmlnZ2VycykgIT0gMCkKKyNkZWZpbmUgeG1jX3R1cm5fb24oc3AsYSxiKSAoKCgoYSleKGIpKSAmIH4oYSkgJiAoc3ApLT5feG1jX3RyaWdnZXJzKSAhPSAwKQogI2VuZGlmCiAKLSNkZWZpbmUgeG1jX25ldyhyLGMpIG5ld3Njci0+X2xpbmVbcl0udGV4dFtjXQotI2RlZmluZSB4bWNfdHVybl9vZmYoYSxiKSB4bWNfdHVybl9vbihiLGEpCisjZGVmaW5lIHhtY19uZXcoc3AscixjKSBOZXdTY3JlZW4oc3ApLT5fbGluZVtyXS50ZXh0W2NdCisjZGVmaW5lIHhtY190dXJuX29mZihzcCxhLGIpIHhtY190dXJuX29uKHNwLGIsYSkKICNlbmRpZiAvKiBVU0VfWE1DX1NVUFBPUlQgKi8KIAogLyoKICoqCVRyYW5zZm9ybUxpbmUobGluZW5vKQogKioKICoqCVRyYW5zZm9ybSB0aGUgZ2l2ZW4gbGluZSBpbiBjdXJzY3IgdG8gdGhlIG9uZSBpbiBuZXdzY3IsIHVzaW5nCi0qKglJbnNlcnQvRGVsZXRlIENoYXJhY3RlciBpZiBfbmNfaWRjb2sgJiYgaGFzX2ljKCkuCisqKglJbnNlcnQvRGVsZXRlIENoYXJhY3RlciBpZiBpZGNvayAmJiBoYXNfaWMoKS4KICoqCiAqKgkJZmlyc3RDaGFyID0gcG9zaXRpb24gb2YgZmlyc3QgZGlmZmVyZW50IGNoYXJhY3RlciBpbiBsaW5lCiAqKgkJb0xhc3RDaGFyID0gcG9zaXRpb24gb2YgbGFzdCBkaWZmZXJlbnQgY2hhcmFjdGVyIGluIG9sZCBsaW5lCkBAIC0xMTM1LDE5ICsxMjI2LDE5IEBACiAqLwogCiBzdGF0aWMgdm9pZAotVHJhbnNmb3JtTGluZShpbnQgY29uc3QgbGluZW5vKQorVHJhbnNmb3JtTGluZShOQ1VSU0VTX1NQX0RDTHggaW50IGNvbnN0IGxpbmVubykKIHsKICAgICBpbnQgZmlyc3RDaGFyLCBvTGFzdENoYXIsIG5MYXN0Q2hhcjsKLSAgICBOQ1VSU0VTX0NIX1QgKm5ld0xpbmUgPSBuZXdzY3ItPl9saW5lW2xpbmVub10udGV4dDsKLSAgICBOQ1VSU0VTX0NIX1QgKm9sZExpbmUgPSBjdXJzY3ItPl9saW5lW2xpbmVub10udGV4dDsKKyAgICBOQ1VSU0VTX0NIX1QgKm5ld0xpbmUgPSBOZXdTY3JlZW4oU1BfUEFSTSktPl9saW5lW2xpbmVub10udGV4dDsKKyAgICBOQ1VSU0VTX0NIX1QgKm9sZExpbmUgPSBDdXJTY3JlZW4oU1BfUEFSTSktPl9saW5lW2xpbmVub10udGV4dDsKICAgICBpbnQgbjsKICAgICBib29sIGF0dHJjaGFuZ2VkID0gRkFMU0U7CiAKLSAgICBUUihUUkFDRV9VUERBVEUsIChUX0NBTExFRCgiVHJhbnNmb3JtTGluZSglZCkiKSwgbGluZW5vKSk7CisgICAgVFIoVFJBQ0VfVVBEQVRFLCAoVF9DQUxMRUQoIlRyYW5zZm9ybUxpbmUoJXAsICVkKSIpLCAodm9pZCAqKSBTUF9QQVJNLCBsaW5lbm8pKTsKIAogICAgIC8qIGNvcHkgbmV3IGhhc2ggdmFsdWUgdG8gb2xkIG9uZSAqLwotICAgIGlmIChTUC0+b2xkaGFzaCAmJiBTUC0+bmV3aGFzaCkKLQlTUC0+b2xkaGFzaFtsaW5lbm9dID0gU1AtPm5ld2hhc2hbbGluZW5vXTsKKyAgICBpZiAoU1BfUEFSTS0+b2xkaGFzaCAmJiBTUF9QQVJNLT5uZXdoYXNoKQorCVNQX1BBUk0tPm9sZGhhc2hbbGluZW5vXSA9IFNQX1BBUk0tPm5ld2hhc2hbbGluZW5vXTsKIAogICAgIC8qCiAgICAgICogSWYgd2UgaGF2ZSBjb2xvcnMsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgdHdvIGNvbG9yIHBhaXJzCkBAIC0xMTU1LDE5ICsxMjQ2LDIwIEBACiAgICAgICogZm9yIHRoaXMgY2FzZSwgYW5kIHVwZGF0ZSB0aGUgb2xkIGxpbmUgd2l0aCB0aGUgbmV3IGxpbmUncyBjb2xvcnMgd2hlbgogICAgICAqIHRoZXkgYXJlIGVxdWl2YWxlbnQuCiAgICAgICovCi0gICAgaWYgKFNQLT5fY29sb3JvbikgeworICAgIGlmIChTUF9QQVJNLT5fY29sb3JvbikgewogCWludCBvbGRQYWlyOwogCWludCBuZXdQYWlyOwogCi0JZm9yIChuID0gMDsgbiA8IHNjcmVlbl9jb2x1bW5zOyBuKyspIHsKKwlmb3IgKG4gPSAwOyBuIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7IG4rKykgewogCSAgICBpZiAoIUNoYXJFcShuZXdMaW5lW25dLCBvbGRMaW5lW25dKSkgewogCQlvbGRQYWlyID0gR2V0UGFpcihvbGRMaW5lW25dKTsKIAkJbmV3UGFpciA9IEdldFBhaXIobmV3TGluZVtuXSk7CiAJCWlmIChvbGRQYWlyICE9IG5ld1BhaXIKIAkJICAgICYmIHVuQ29sb3Iob2xkTGluZVtuXSkgPT0gdW5Db2xvcihuZXdMaW5lW25dKSkgewotCQkgICAgaWYgKG9sZFBhaXIgPCBDT0xPUl9QQUlSUwotCQkJJiYgbmV3UGFpciA8IENPTE9SX1BBSVJTCi0JCQkmJiBTUC0+X2NvbG9yX3BhaXJzW29sZFBhaXJdID09IFNQLT5fY29sb3JfcGFpcnNbbmV3UGFpcl0pIHsKKwkJICAgIGlmIChvbGRQYWlyIDwgU1BfUEFSTS0+X3BhaXJfbGltaXQKKwkJCSYmIG5ld1BhaXIgPCBTUF9QQVJNLT5fcGFpcl9saW1pdAorCQkJJiYgKFNQX1BBUk0tPl9jb2xvcl9wYWlyc1tvbGRQYWlyXSA9PQorCQkJICAgIFNQX1BBUk0tPl9jb2xvcl9wYWlyc1tuZXdQYWlyXSkpIHsKIAkJCVNldFBhaXIob2xkTGluZVtuXSwgR2V0UGFpcihuZXdMaW5lW25dKSk7CiAJCSAgICB9CiAJCX0KQEAgLTExNzcsNyArMTI2OSw3IEBACiAKICAgICBpZiAoY2VvbF9zdGFuZG91dF9nbGl0Y2ggJiYgY2xyX2VvbCkgewogCWZpcnN0Q2hhciA9IDA7Ci0Jd2hpbGUgKGZpcnN0Q2hhciA8IHNjcmVlbl9jb2x1bW5zKSB7CisJd2hpbGUgKGZpcnN0Q2hhciA8IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pKSB7CiAJICAgIGlmICghU2FtZUF0dHJPZihuZXdMaW5lW2ZpcnN0Q2hhcl0sIG9sZExpbmVbZmlyc3RDaGFyXSkpIHsKIAkJYXR0cmNoYW5nZWQgPSBUUlVFOwogCQlicmVhazsKQEAgLTExODksOSArMTI4MSwxMyBAQAogICAgIGZpcnN0Q2hhciA9IDA7CiAKICAgICBpZiAoYXR0cmNoYW5nZWQpIHsJCS8qIHdlIG1heSBoYXZlIHRvIGRpc3JlZ2FyZCB0aGUgd2hvbGUgbGluZSAqLwotCUdvVG8obGluZW5vLCBmaXJzdENoYXIpOwotCUNsclRvRU9MKENsckJsYW5rKGN1cnNjciksIEZBTFNFKTsKLQlQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sIDAsIChzY3JlZW5fY29sdW1ucyAtIDEpKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeCBsaW5lbm8sIGZpcnN0Q2hhcik7CisJQ2xyVG9FT0woTkNVUlNFU19TUF9BUkd4CisJCSBDbHJCbGFuayhOQ1VSU0VTX1NQX0FSR3gKKwkJCSAgQ3VyU2NyZWVuKFNQX1BBUk0pKSwgRkFMU0UpOworCVB1dFJhbmdlKE5DVVJTRVNfU1BfQVJHeAorCQkgb2xkTGluZSwgbmV3TGluZSwgbGluZW5vLCAwLAorCQkgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgLSAxKTsKICNpZiBVU0VfWE1DX1NVUFBPUlQKIAogCS8qCkBAIC0xMjA2LDggKzEzMDIsOCBAQAogCSAqIGZvbGxvd2luZyBvcGVyYXRpb24uCiAJICovCiAgICAgfSBlbHNlIGlmIChtYWdpY19jb29raWVfZ2xpdGNoID4gMCkgewotCUdvVG8obGluZW5vLCBmaXJzdENoYXIpOwotCWZvciAobiA9IDA7IG4gPCBzY3JlZW5fY29sdW1uczsgbisrKSB7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBmaXJzdENoYXIpOworCWZvciAobiA9IDA7IG4gPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgbisrKSB7CiAJICAgIGludCBtID0gbiArIG1hZ2ljX2Nvb2tpZV9nbGl0Y2g7CiAKIAkgICAgLyogY2hlY2sgZm9yIHR1cm4tb246CkBAIC0xMjE2LDI2ICsxMzEyLDMwIEBACiAJICAgICAqLwogCSAgICBpZiAoSVNCTEFOSyhuZXdMaW5lW25dKQogCQkmJiAoKG4gPiAwCi0JCSAgICAgJiYgeG1jX3R1cm5fb24obmV3TGluZVtuIC0gMV0sIG5ld0xpbmVbbl0pKQorCQkgICAgICYmIHhtY190dXJuX29uKFNQX1BBUk0sIG5ld0xpbmVbbiAtIDFdLCBuZXdMaW5lW25dKSkKIAkJICAgIHx8IChuID09IDAKIAkJCSYmIGxpbmVubyA+IDAKLQkJCSYmIHhtY190dXJuX29uKHhtY19uZXcobGluZW5vIC0gMSwgc2NyZWVuX2NvbHVtbnMgLSAxKSwKKwkJCSYmIHhtY190dXJuX29uKFNQX1BBUk0sCisJCQkJICAgICAgIHhtY19uZXcoU1BfUEFSTSwgbGluZW5vIC0gMSwKKwkJCQkJICAgICAgIHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMSksCiAJCQkJICAgICAgIG5ld0xpbmVbbl0pKSkpIHsKIAkJbiA9IG07CiAJICAgIH0KIAotCSAgICBQdXRDaGFyKENIUkVGKG5ld0xpbmVbbl0pKTsKKwkgICAgUHV0Q2hhcihOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYobmV3TGluZVtuXSkpOwogCiAJICAgIC8qIGNoZWNrIGZvciB0dXJuLW9mZjoKIAkgICAgICogSWYgd2UgYXJlIHdyaXRpbmcgYW4gYXR0cmlidXRlZCBub24tYmxhbmssIHdoZXJlIHRoZQogCSAgICAgKiBuZXh0IGNlbGwgaXMgYmxhbmssIGFuZCBub3QgYXR0cmlidXRlZC4KIAkgICAgICovCiAJICAgIGlmICghSVNCTEFOSyhuZXdMaW5lW25dKQotCQkmJiAoKG4gKyAxIDwgc2NyZWVuX2NvbHVtbnMKLQkJICAgICAmJiB4bWNfdHVybl9vZmYobmV3TGluZVtuXSwgbmV3TGluZVtuICsgMV0pKQotCQkgICAgfHwgKG4gKyAxID49IHNjcmVlbl9jb2x1bW5zCi0JCQkmJiBsaW5lbm8gKyAxIDwgc2NyZWVuX2xpbmVzCi0JCQkmJiB4bWNfdHVybl9vZmYobmV3TGluZVtuXSwgeG1jX25ldyhsaW5lbm8gKyAxLCAwKSkpKSkgeworCQkmJiAoKG4gKyAxIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkKKwkJICAgICAmJiB4bWNfdHVybl9vZmYoU1BfUEFSTSwgbmV3TGluZVtuXSwgbmV3TGluZVtuICsgMV0pKQorCQkgICAgfHwgKG4gKyAxID49IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pCisJCQkmJiBsaW5lbm8gKyAxIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pCisJCQkmJiB4bWNfdHVybl9vZmYoU1BfUEFSTSwKKwkJCQkJbmV3TGluZVtuXSwKKwkJCQkJeG1jX25ldyhTUF9QQVJNLCBsaW5lbm8gKyAxLCAwKSkpKSkgewogCQluID0gbTsKIAkgICAgfQogCkBAIC0xMjQ2LDM4ICsxMzQ2LDQwIEBACiAKIAkvKiBpdCBtYXkgYmUgY2hlYXAgdG8gY2xlYXIgbGVhZGluZyB3aGl0ZXNwYWNlIHdpdGggY2xyX2JvbCAqLwogCWJsYW5rID0gbmV3TGluZVswXTsKLQlpZiAoY2xyX2JvbCAmJiBjYW5fY2xlYXJfd2l0aChDSFJFRihibGFuaykpKSB7CisJaWYgKGNscl9ib2wgJiYgY2FuX2NsZWFyX3dpdGgoTkNVUlNFU19TUF9BUkd4IENIUkVGKGJsYW5rKSkpIHsKIAkgICAgaW50IG9GaXJzdENoYXIsIG5GaXJzdENoYXI7CiAKLQkgICAgZm9yIChvRmlyc3RDaGFyID0gMDsgb0ZpcnN0Q2hhciA8IHNjcmVlbl9jb2x1bW5zOyBvRmlyc3RDaGFyKyspCisJICAgIGZvciAob0ZpcnN0Q2hhciA9IDA7CisJCSBvRmlyc3RDaGFyIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7CisJCSBvRmlyc3RDaGFyKyspCiAJCWlmICghQ2hhckVxKG9sZExpbmVbb0ZpcnN0Q2hhcl0sIGJsYW5rKSkKIAkJICAgIGJyZWFrOwotCSAgICBmb3IgKG5GaXJzdENoYXIgPSAwOyBuRmlyc3RDaGFyIDwgc2NyZWVuX2NvbHVtbnM7IG5GaXJzdENoYXIrKykKKwkgICAgZm9yIChuRmlyc3RDaGFyID0gMDsKKwkJIG5GaXJzdENoYXIgPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsKKwkJIG5GaXJzdENoYXIrKykKIAkJaWYgKCFDaGFyRXEobmV3TGluZVtuRmlyc3RDaGFyXSwgYmxhbmspKQogCQkgICAgYnJlYWs7CiAKIAkgICAgaWYgKG5GaXJzdENoYXIgPT0gb0ZpcnN0Q2hhcikgewogCQlmaXJzdENoYXIgPSBuRmlyc3RDaGFyOwogCQkvKiBmaW5kIHRoZSBmaXJzdCBkaWZmZXJpbmcgY2hhcmFjdGVyICovCi0JCXdoaWxlIChmaXJzdENoYXIgPCBzY3JlZW5fY29sdW1ucworCQl3aGlsZSAoZmlyc3RDaGFyIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkKIAkJICAgICAgICYmIENoYXJFcShuZXdMaW5lW2ZpcnN0Q2hhcl0sIG9sZExpbmVbZmlyc3RDaGFyXSkpCiAJCSAgICBmaXJzdENoYXIrKzsKIAkgICAgfSBlbHNlIGlmIChvRmlyc3RDaGFyID4gbkZpcnN0Q2hhcikgewogCQlmaXJzdENoYXIgPSBuRmlyc3RDaGFyOwogCSAgICB9IGVsc2UgewkJLyogb0ZpcnN0Q2hhciA8IG5GaXJzdENoYXIgKi8KIAkJZmlyc3RDaGFyID0gb0ZpcnN0Q2hhcjsKLQkJaWYgKFNQLT5fZWwxX2Nvc3QgPCBuRmlyc3RDaGFyIC0gb0ZpcnN0Q2hhcikgewotCQkgICAgaWYgKG5GaXJzdENoYXIgPj0gc2NyZWVuX2NvbHVtbnMKLQkJCSYmIFNQLT5fZWxfY29zdCA8PSBTUC0+X2VsMV9jb3N0KSB7Ci0JCQlHb1RvKGxpbmVubywgMCk7Ci0JCQlVcGRhdGVBdHRycyhibGFuayk7Ci0JCQlUUFVUU19UUkFDRSgiY2xyX2VvbCIpOwotCQkJcHV0cChjbHJfZW9sKTsKKwkJaWYgKFNQX1BBUk0tPl9lbDFfY29zdCA8IG5GaXJzdENoYXIgLSBvRmlyc3RDaGFyKSB7CisJCSAgICBpZiAobkZpcnN0Q2hhciA+PSBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKQorCQkJJiYgU1BfUEFSTS0+X2VsX2Nvc3QgPD0gU1BfUEFSTS0+X2VsMV9jb3N0KSB7CisJCQlHb1RvKE5DVVJTRVNfU1BfQVJHeCBsaW5lbm8sIDApOworCQkJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOworCQkJTkNVUlNFU19QVVRQMigiY2xyX2VvbCIsIGNscl9lb2wpOwogCQkgICAgfSBlbHNlIHsKLQkJCUdvVG8obGluZW5vLCBuRmlyc3RDaGFyIC0gMSk7Ci0JCQlVcGRhdGVBdHRycyhibGFuayk7Ci0JCQlUUFVUU19UUkFDRSgiY2xyX2JvbCIpOwotCQkJcHV0cChjbHJfYm9sKTsKKwkJCUdvVG8oTkNVUlNFU19TUF9BUkd4IGxpbmVubywgbkZpcnN0Q2hhciAtIDEpOworCQkJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOworCQkJTkNVUlNFU19QVVRQMigiY2xyX2JvbCIsIGNscl9ib2wpOwogCQkgICAgfQogCiAJCSAgICB3aGlsZSAoZmlyc3RDaGFyIDwgbkZpcnN0Q2hhcikKQEAgLTEyODYsNjQgKzEzODgsODEgQEAKIAkgICAgfQogCX0gZWxzZSB7CiAJICAgIC8qIGZpbmQgdGhlIGZpcnN0IGRpZmZlcmluZyBjaGFyYWN0ZXIgKi8KLQkgICAgd2hpbGUgKGZpcnN0Q2hhciA8IHNjcmVlbl9jb2x1bW5zCisJICAgIHdoaWxlIChmaXJzdENoYXIgPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKQogCQkgICAmJiBDaGFyRXEobmV3TGluZVtmaXJzdENoYXJdLCBvbGRMaW5lW2ZpcnN0Q2hhcl0pKQogCQlmaXJzdENoYXIrKzsKIAl9CiAJLyogaWYgdGhlcmUgd2Fzbid0IG9uZSwgd2UncmUgZG9uZSAqLwotCWlmIChmaXJzdENoYXIgPj0gc2NyZWVuX2NvbHVtbnMpIHsKKwlpZiAoZmlyc3RDaGFyID49IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pKSB7CiAJICAgIFRSKFRSQUNFX1VQREFURSwgKFRfUkVUVVJOKCIiKSkpOwogCSAgICByZXR1cm47CiAJfQogCi0JYmxhbmsgPSBuZXdMaW5lW3NjcmVlbl9jb2x1bW5zIC0gMV07CisJYmxhbmsgPSBuZXdMaW5lW3NjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMV07CiAKLQlpZiAoIWNhbl9jbGVhcl93aXRoKENIUkVGKGJsYW5rKSkpIHsKKwlpZiAoIWNhbl9jbGVhcl93aXRoKE5DVVJTRVNfU1BfQVJHeCBDSFJFRihibGFuaykpKSB7CiAJICAgIC8qIGZpbmQgdGhlIGxhc3QgZGlmZmVyaW5nIGNoYXJhY3RlciAqLwotCSAgICBuTGFzdENoYXIgPSBzY3JlZW5fY29sdW1ucyAtIDE7CisJICAgIG5MYXN0Q2hhciA9IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMTsKIAogCSAgICB3aGlsZSAobkxhc3RDaGFyID4gZmlyc3RDaGFyCiAJCSAgICYmIENoYXJFcShuZXdMaW5lW25MYXN0Q2hhcl0sIG9sZExpbmVbbkxhc3RDaGFyXSkpCiAJCW5MYXN0Q2hhci0tOwogCiAJICAgIGlmIChuTGFzdENoYXIgPj0gZmlyc3RDaGFyKSB7Ci0JCUdvVG8obGluZW5vLCBmaXJzdENoYXIpOwotCQlQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sIGZpcnN0Q2hhciwgbkxhc3RDaGFyKTsKKwkJR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBmaXJzdENoYXIpOworCQlQdXRSYW5nZShOQ1VSU0VTX1NQX0FSR3gKKwkJCSBvbGRMaW5lLAorCQkJIG5ld0xpbmUsCisJCQkgbGluZW5vLAorCQkJIGZpcnN0Q2hhciwKKwkJCSBuTGFzdENoYXIpOwogCQltZW1jcHkob2xkTGluZSArIGZpcnN0Q2hhciwKIAkJICAgICAgIG5ld0xpbmUgKyBmaXJzdENoYXIsCi0JCSAgICAgICAobkxhc3RDaGFyIC0gZmlyc3RDaGFyICsgMSkgKiBzaXplb2YoTkNVUlNFU19DSF9UKSk7CisJCSAgICAgICAodW5zaWduZWQpIChuTGFzdENoYXIgLSBmaXJzdENoYXIgKyAxKSAqIHNpemVvZihOQ1VSU0VTX0NIX1QpKTsKIAkgICAgfQogCSAgICBUUihUUkFDRV9VUERBVEUsIChUX1JFVFVSTigiIikpKTsKIAkgICAgcmV0dXJuOwogCX0KIAogCS8qIGZpbmQgbGFzdCBub24tYmxhbmsgY2hhcmFjdGVyIG9uIG9sZCBsaW5lICovCi0Jb0xhc3RDaGFyID0gc2NyZWVuX2NvbHVtbnMgLSAxOworCW9MYXN0Q2hhciA9IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pIC0gMTsKIAl3aGlsZSAob0xhc3RDaGFyID4gZmlyc3RDaGFyICYmIENoYXJFcShvbGRMaW5lW29MYXN0Q2hhcl0sIGJsYW5rKSkKIAkgICAgb0xhc3RDaGFyLS07CiAKIAkvKiBmaW5kIGxhc3Qgbm9uLWJsYW5rIGNoYXJhY3RlciBvbiBuZXcgbGluZSAqLwotCW5MYXN0Q2hhciA9IHNjcmVlbl9jb2x1bW5zIC0gMTsKKwluTGFzdENoYXIgPSBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSAtIDE7CiAJd2hpbGUgKG5MYXN0Q2hhciA+IGZpcnN0Q2hhciAmJiBDaGFyRXEobmV3TGluZVtuTGFzdENoYXJdLCBibGFuaykpCiAJICAgIG5MYXN0Q2hhci0tOwogCiAJaWYgKChuTGFzdENoYXIgPT0gZmlyc3RDaGFyKQotCSAgICAmJiAoU1AtPl9lbF9jb3N0IDwgKG9MYXN0Q2hhciAtIG5MYXN0Q2hhcikpKSB7Ci0JICAgIEdvVG8obGluZW5vLCBmaXJzdENoYXIpOworCSAgICAmJiAoU1BfUEFSTS0+X2VsX2Nvc3QgPCAob0xhc3RDaGFyIC0gbkxhc3RDaGFyKSkpIHsKKwkgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBmaXJzdENoYXIpOwogCSAgICBpZiAoIUNoYXJFcShuZXdMaW5lW2ZpcnN0Q2hhcl0sIGJsYW5rKSkKLQkJUHV0Q2hhcihDSFJFRihuZXdMaW5lW2ZpcnN0Q2hhcl0pKTsKLQkgICAgQ2xyVG9FT0woYmxhbmssIEZBTFNFKTsKKwkJUHV0Q2hhcihOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYobmV3TGluZVtmaXJzdENoYXJdKSk7CisJICAgIENsclRvRU9MKE5DVVJTRVNfU1BfQVJHeCBibGFuaywgRkFMU0UpOwogCX0gZWxzZSBpZiAoKG5MYXN0Q2hhciAhPSBvTGFzdENoYXIpCiAJCSAgICYmICghQ2hhckVxKG5ld0xpbmVbbkxhc3RDaGFyXSwgb2xkTGluZVtvTGFzdENoYXJdKQotCQkgICAgICAgfHwgIShfbmNfaWRjb2sgJiYgaGFzX2ljKCkpKSkgewotCSAgICBHb1RvKGxpbmVubywgZmlyc3RDaGFyKTsKLQkgICAgaWYgKChvTGFzdENoYXIgLSBuTGFzdENoYXIpID4gU1AtPl9lbF9jb3N0KSB7Ci0JCWlmIChQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sIGZpcnN0Q2hhciwgbkxhc3RDaGFyKSkKLQkJICAgIEdvVG8obGluZW5vLCBuTGFzdENoYXIgKyAxKTsKLQkJQ2xyVG9FT0woYmxhbmssIEZBTFNFKTsKKwkJICAgICAgIHx8ICEoU1BfUEFSTS0+X25jX3NwX2lkY29rCisJCQkgICAgJiYgTkNVUlNFU19TUF9OQU1FKGhhc19pYykgKE5DVVJTRVNfU1BfQVJHKSkpKSB7CisJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IGxpbmVubywgZmlyc3RDaGFyKTsKKwkgICAgaWYgKChvTGFzdENoYXIgLSBuTGFzdENoYXIpID4gU1BfUEFSTS0+X2VsX2Nvc3QpIHsKKwkJaWYgKFB1dFJhbmdlKE5DVVJTRVNfU1BfQVJHeAorCQkJICAgICBvbGRMaW5lLAorCQkJICAgICBuZXdMaW5lLAorCQkJICAgICBsaW5lbm8sCisJCQkgICAgIGZpcnN0Q2hhciwKKwkJCSAgICAgbkxhc3RDaGFyKSkgeworCQkgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBuTGFzdENoYXIgKyAxKTsKKwkJfQorCQlDbHJUb0VPTChOQ1VSU0VTX1NQX0FSR3ggYmxhbmssIEZBTFNFKTsKIAkgICAgfSBlbHNlIHsKIAkJbiA9IG1heChuTGFzdENoYXIsIG9MYXN0Q2hhcik7Ci0JCVB1dFJhbmdlKG9sZExpbmUsIG5ld0xpbmUsIGxpbmVubywgZmlyc3RDaGFyLCBuKTsKKwkJUHV0UmFuZ2UoTkNVUlNFU19TUF9BUkd4CisJCQkgb2xkTGluZSwKKwkJCSBuZXdMaW5lLAorCQkJIGxpbmVubywKKwkJCSBmaXJzdENoYXIsCisJCQkgbik7CiAJICAgIH0KIAl9IGVsc2UgewogCSAgICBpbnQgbkxhc3ROb25ibGFuayA9IG5MYXN0Q2hhcjsKQEAgLTEzNjQsMzMgKzE0ODMsNTIgQEAKIAogCSAgICBuID0gbWluKG9MYXN0Q2hhciwgbkxhc3RDaGFyKTsKIAkgICAgaWYgKG4gPj0gZmlyc3RDaGFyKSB7Ci0JCUdvVG8obGluZW5vLCBmaXJzdENoYXIpOwotCQlQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sIGZpcnN0Q2hhciwgbik7CisJCUdvVG8oTkNVUlNFU19TUF9BUkd4IGxpbmVubywgZmlyc3RDaGFyKTsKKwkJUHV0UmFuZ2UoTkNVUlNFU19TUF9BUkd4CisJCQkgb2xkTGluZSwKKwkJCSBuZXdMaW5lLAorCQkJIGxpbmVubywKKwkJCSBmaXJzdENoYXIsCisJCQkgbik7CiAJICAgIH0KIAogCSAgICBpZiAob0xhc3RDaGFyIDwgbkxhc3RDaGFyKSB7CiAJCWludCBtID0gbWF4KG5MYXN0Tm9uYmxhbmssIG9MYXN0Tm9uYmxhbmspOwogI2lmIFVTRV9XSURFQ19TVVBQT1JUCi0JCXdoaWxlIChpc1dpZGVjRXh0KG5ld0xpbmVbbiArIDFdKSAmJiBuKSB7Ci0JCSAgICAtLW47Ci0JCSAgICAtLW9MYXN0Q2hhcjsKKwkJaWYgKG4pIHsKKwkJICAgIHdoaWxlIChpc1dpZGVjRXh0KG5ld0xpbmVbbiArIDFdKSAmJiBuKSB7CisJCQktLW47CisJCQktLW9MYXN0Q2hhcjsJLyogaW5jcmVhc2UgY29zdCAqLworCQkgICAgfQorCQl9IGVsc2UgaWYgKG4gPj0gZmlyc3RDaGFyICYmCisJCQkgICBpc1dpZGVjQmFzZShuZXdMaW5lW25dKSkgeworCQkgICAgd2hpbGUgKGlzV2lkZWNFeHQobmV3TGluZVtuICsgMV0pKSB7CisJCQkrK247CisJCQkrK29MYXN0Q2hhcjsJLyogZGVjcmVhc2UgY29zdCAqLworCQkgICAgfQogCQl9CiAjZW5kaWYKLQkJR29UbyhsaW5lbm8sIG4gKyAxKTsKKwkJR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBuICsgMSk7CiAJCWlmICgobkxhc3RDaGFyIDwgbkxhc3ROb25ibGFuaykKLQkJICAgIHx8IEluc0NoYXJDb3N0KG5MYXN0Q2hhciAtIG9MYXN0Q2hhcikgPiAobSAtIG4pKSB7Ci0JCSAgICBQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sIG4gKyAxLCBtKTsKKwkJICAgIHx8IEluc0NoYXJDb3N0KFNQX1BBUk0sIG5MYXN0Q2hhciAtIG9MYXN0Q2hhcikgPiAobSAtIG4pKSB7CisJCSAgICBQdXRSYW5nZShOQ1VSU0VTX1NQX0FSR3gKKwkJCSAgICAgb2xkTGluZSwKKwkJCSAgICAgbmV3TGluZSwKKwkJCSAgICAgbGluZW5vLAorCQkJICAgICBuICsgMSwKKwkJCSAgICAgbSk7CiAJCX0gZWxzZSB7Ci0JCSAgICBJbnNTdHIoJm5ld0xpbmVbbiArIDFdLCBuTGFzdENoYXIgLSBvTGFzdENoYXIpOworCQkgICAgSW5zU3RyKE5DVVJTRVNfU1BfQVJHeCAmbmV3TGluZVtuICsgMV0sIG5MYXN0Q2hhciAtIG9MYXN0Q2hhcik7CiAJCX0KIAkgICAgfSBlbHNlIGlmIChvTGFzdENoYXIgPiBuTGFzdENoYXIpIHsKLQkJR29UbyhsaW5lbm8sIG4gKyAxKTsKLQkJaWYgKERlbENoYXJDb3N0KG9MYXN0Q2hhciAtIG5MYXN0Q2hhcikKLQkJICAgID4gU1AtPl9lbF9jb3N0ICsgbkxhc3ROb25ibGFuayAtIChuICsgMSkpIHsKLQkJICAgIGlmIChQdXRSYW5nZShvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sCi0JCQkJIG4gKyAxLCBuTGFzdE5vbmJsYW5rKSkKLQkJCUdvVG8obGluZW5vLCBuTGFzdE5vbmJsYW5rICsgMSk7Ci0JCSAgICBDbHJUb0VPTChibGFuaywgRkFMU0UpOworCQlHb1RvKE5DVVJTRVNfU1BfQVJHeCBsaW5lbm8sIG4gKyAxKTsKKwkJaWYgKERlbENoYXJDb3N0KFNQX1BBUk0sIG9MYXN0Q2hhciAtIG5MYXN0Q2hhcikKKwkJICAgID4gU1BfUEFSTS0+X2VsX2Nvc3QgKyBuTGFzdE5vbmJsYW5rIC0gKG4gKyAxKSkgeworCQkgICAgaWYgKFB1dFJhbmdlKE5DVVJTRVNfU1BfQVJHeCBvbGRMaW5lLCBuZXdMaW5lLCBsaW5lbm8sCisJCQkJIG4gKyAxLCBuTGFzdE5vbmJsYW5rKSkgeworCQkJR29UbyhOQ1VSU0VTX1NQX0FSR3ggbGluZW5vLCBuTGFzdE5vbmJsYW5rICsgMSk7CisJCSAgICB9CisJCSAgICBDbHJUb0VPTChOQ1VSU0VTX1NQX0FSR3ggYmxhbmssIEZBTFNFKTsKIAkJfSBlbHNlIHsKIAkJICAgIC8qCiAJCSAgICAgKiBUaGUgZGVsZXRlLWNoYXIgc2VxdWVuY2Ugd2lsbApAQCAtMTQwMCwxOCArMTUzOCwxOCBAQAogCQkgICAgICogc2V0dGluZyB0aGUgdmlkZW8gYXR0cmlidXRlcyBmcm9tCiAJCSAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgb24gdGhlIHJvdy4KIAkJICAgICAqLwotCQkgICAgVXBkYXRlQXR0cnMoYmxhbmspOwotCQkgICAgRGVsQ2hhcihvTGFzdENoYXIgLSBuTGFzdENoYXIpOworCQkgICAgVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOworCQkgICAgRGVsQ2hhcihOQ1VSU0VTX1NQX0FSR3ggb0xhc3RDaGFyIC0gbkxhc3RDaGFyKTsKIAkJfQogCSAgICB9CiAJfQogICAgIH0KIAogICAgIC8qIHVwZGF0ZSB0aGUgY29kZSdzIGludGVybmFsIHJlcHJlc2VudGF0aW9uICovCi0gICAgaWYgKHNjcmVlbl9jb2x1bW5zID4gZmlyc3RDaGFyKQorICAgIGlmIChzY3JlZW5fY29sdW1ucyhTUF9QQVJNKSA+IGZpcnN0Q2hhcikKIAltZW1jcHkob2xkTGluZSArIGZpcnN0Q2hhciwKIAkgICAgICAgbmV3TGluZSArIGZpcnN0Q2hhciwKLQkgICAgICAgKHNjcmVlbl9jb2x1bW5zIC0gZmlyc3RDaGFyKSAqIHNpemVvZihOQ1VSU0VTX0NIX1QpKTsKKwkgICAgICAgKHVuc2lnbmVkKSAoc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSkgLSBmaXJzdENoYXIpICogc2l6ZW9mKE5DVVJTRVNfQ0hfVCkpOwogICAgIFRSKFRSQUNFX1VQREFURSwgKFRfUkVUVVJOKCIiKSkpOwogICAgIHJldHVybjsKIH0KQEAgLTE0MjQsNyArMTU2Miw3IEBACiAqLwogCiBzdGF0aWMgdm9pZAotQ2xlYXJTY3JlZW4oTkNVUlNFU19DSF9UIGJsYW5rKQorQ2xlYXJTY3JlZW4oTkNVUlNFU19TUF9EQ0x4IE5DVVJTRVNfQ0hfVCBibGFuaykKIHsKICAgICBpbnQgaSwgajsKICAgICBib29sIGZhc3RfY2xlYXIgPSAoY2xlYXJfc2NyZWVuIHx8IGNscl9lb3MgfHwgY2xyX2VvbCk7CkBAIC0xNDMyLDkgKzE1NzAsMTMgQEAKICAgICBUUihUUkFDRV9VUERBVEUsICgiQ2xlYXJTY3JlZW4oKSBjYWxsZWQiKSk7CiAKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotICAgIGlmIChTUC0+X2NvbG9yb24KLQkmJiAhU1AtPl9kZWZhdWx0X2NvbG9yKSB7Ci0JX25jX2RvX2NvbG9yKEdFVF9TQ1JFRU5fUEFJUihTUCksIDAsIEZBTFNFLCBfbmNfb3V0Y2gpOworICAgIGlmIChTUF9QQVJNLT5fY29sb3JvbgorCSYmICFTUF9QQVJNLT5fZGVmYXVsdF9jb2xvcikgeworCU5DVVJTRVNfU1BfTkFNRShfbmNfZG9fY29sb3IpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgICAgKHNob3J0KSBHRVRfU0NSRUVOX1BBSVIoU1BfUEFSTSksCisJCQkJICAgICAgIDAsCisJCQkJICAgICAgIEZBTFNFLAorCQkJCSAgICAgICBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CiAJaWYgKCFiYWNrX2NvbG9yX2VyYXNlKSB7CiAJICAgIGZhc3RfY2xlYXIgPSBGQUxTRTsKIAl9CkBAIC0xNDQzLDQyICsxNTg1LDQ0IEBACiAKICAgICBpZiAoZmFzdF9jbGVhcikgewogCWlmIChjbGVhcl9zY3JlZW4pIHsKLQkgICAgVXBkYXRlQXR0cnMoYmxhbmspOwotCSAgICBUUFVUU19UUkFDRSgiY2xlYXJfc2NyZWVuIik7Ci0JICAgIHB1dHAoY2xlYXJfc2NyZWVuKTsKLQkgICAgU1AtPl9jdXJzcm93ID0gU1AtPl9jdXJzY29sID0gMDsKLQkgICAgcG9zaXRpb25fY2hlY2soU1AtPl9jdXJzcm93LCBTUC0+X2N1cnNjb2wsICJDbGVhclNjcmVlbiIpOworCSAgICBVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CisJICAgIE5DVVJTRVNfUFVUUDIoImNsZWFyX3NjcmVlbiIsIGNsZWFyX3NjcmVlbik7CisJICAgIFNQX1BBUk0tPl9jdXJzcm93ID0gU1BfUEFSTS0+X2N1cnNjb2wgPSAwOworCSAgICBwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJCSAgIFNQX1BBUk0tPl9jdXJzcm93LAorCQkJICAgU1BfUEFSTS0+X2N1cnNjb2wsCisJCQkgICAiQ2xlYXJTY3JlZW4iKTsKIAl9IGVsc2UgaWYgKGNscl9lb3MpIHsKLQkgICAgU1AtPl9jdXJzcm93ID0gU1AtPl9jdXJzY29sID0gLTE7Ci0JICAgIEdvVG8oMCwgMCk7Ci0KLQkgICAgVXBkYXRlQXR0cnMoYmxhbmspOworCSAgICBTUF9QQVJNLT5fY3Vyc3JvdyA9IFNQX1BBUk0tPl9jdXJzY29sID0gLTE7CisJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IDAsIDApOworCSAgICBVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAJICAgIFRQVVRTX1RSQUNFKCJjbHJfZW9zIik7Ci0JICAgIHRwdXRzKGNscl9lb3MsIHNjcmVlbl9saW5lcywgX25jX291dGNoKTsKKwkgICAgTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJICAgIGNscl9lb3MsCisJCQkJICAgIHNjcmVlbl9saW5lcyhTUF9QQVJNKSwKKwkJCQkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOwogCX0gZWxzZSBpZiAoY2xyX2VvbCkgewotCSAgICBTUC0+X2N1cnNyb3cgPSBTUC0+X2N1cnNjb2wgPSAtMTsKLQotCSAgICBVcGRhdGVBdHRycyhibGFuayk7Ci0JICAgIGZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXM7IGkrKykgewotCQlHb1RvKGksIDApOwotCQlUUFVUU19UUkFDRSgiY2xyX2VvbCIpOwotCQlwdXRwKGNscl9lb2wpOworCSAgICBTUF9QQVJNLT5fY3Vyc3JvdyA9IFNQX1BBUk0tPl9jdXJzY29sID0gLTE7CisJICAgIFVwZGF0ZUF0dHJzKFNQX1BBUk0sIGJsYW5rKTsKKwkgICAgZm9yIChpID0gMDsgaSA8IHNjcmVlbl9saW5lcyhTUF9QQVJNKTsgaSsrKSB7CisJCUdvVG8oTkNVUlNFU19TUF9BUkd4IGksIDApOworCQlOQ1VSU0VTX1BVVFAyKCJjbHJfZW9sIiwgY2xyX2VvbCk7CiAJICAgIH0KLQkgICAgR29UbygwLCAwKTsKKwkgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggMCwgMCk7CiAJfQogICAgIH0gZWxzZSB7Ci0JVXBkYXRlQXR0cnMoYmxhbmspOwotCWZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXM7IGkrKykgewotCSAgICBHb1RvKGksIDApOwotCSAgICBmb3IgKGogPSAwOyBqIDwgc2NyZWVuX2NvbHVtbnM7IGorKykKLQkJUHV0Q2hhcihDSFJFRihibGFuaykpOworCVVwZGF0ZUF0dHJzKFNQX1BBUk0sIGJsYW5rKTsKKwlmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBpKyspIHsKKwkgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggaSwgMCk7CisJICAgIGZvciAoaiA9IDA7IGogPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgaisrKQorCQlQdXRDaGFyKE5DVVJTRVNfU1BfQVJHeCBDSFJFRihibGFuaykpOwogCX0KLQlHb1RvKDAsIDApOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IDAsIDApOwogICAgIH0KIAotICAgIGZvciAoaSA9IDA7IGkgPCBzY3JlZW5fbGluZXM7IGkrKykgewotCWZvciAoaiA9IDA7IGogPCBzY3JlZW5fY29sdW1uczsgaisrKQotCSAgICBjdXJzY3ItPl9saW5lW2ldLnRleHRbal0gPSBibGFuazsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2NyZWVuX2xpbmVzKFNQX1BBUk0pOyBpKyspIHsKKwlmb3IgKGogPSAwOyBqIDwgc2NyZWVuX2NvbHVtbnMoU1BfUEFSTSk7IGorKykKKwkgICAgQ3VyU2NyZWVuKFNQX1BBUk0pLT5fbGluZVtpXS50ZXh0W2pdID0gYmxhbms7CiAgICAgfQogCiAgICAgVFIoVFJBQ0VfVVBEQVRFLCAoInNjcmVlbiBjbGVhcmVkIikpOwpAQCAtMTQ5Miw0OSArMTYzNiw1MSBAQAogKi8KIAogc3RhdGljIHZvaWQKLUluc1N0cihOQ1VSU0VTX0NIX1QgKiBsaW5lLCBpbnQgY291bnQpCitJbnNTdHIoTkNVUlNFU19TUF9EQ0x4IE5DVVJTRVNfQ0hfVCAqIGxpbmUsIGludCBjb3VudCkKIHsKLSAgICBUUihUUkFDRV9VUERBVEUsICgiSW5zU3RyKCVwLCVkKSBjYWxsZWQiLCBsaW5lLCBjb3VudCkpOworICAgIFRSKFRSQUNFX1VQREFURSwgKCJJbnNTdHIoJXAsICVwLCVkKSBjYWxsZWQiLAorCQkgICAgICAodm9pZCAqKSBTUF9QQVJNLAorCQkgICAgICAodm9pZCAqKSBsaW5lLCBjb3VudCkpOwogCiAgICAgLyogUHJlZmVyIHBhcm1faWNoIGFzIGl0IGhhcyB0aGUgc21hbGxlc3QgY29zdCAtIG5vIG5lZWQgdG8gc2hpZnQKICAgICAgKiB0aGUgd2hvbGUgbGluZSBvbiBlYWNoIGNoYXJhY3Rlci4gKi8KICAgICAvKiBUaGUgb3JkZXIgbXVzdCBtYXRjaCB0aGF0IG9mIEluc0NoYXJDb3N0LiAqLwogICAgIGlmIChwYXJtX2ljaCkgewogCVRQVVRTX1RSQUNFKCJwYXJtX2ljaCIpOwotCXRwdXRzKFRQQVJNXzEocGFybV9pY2gsIGNvdW50KSwgY291bnQsIF9uY19vdXRjaCk7CisJTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJVFBBUk1fMShwYXJtX2ljaCwgY291bnQpLAorCQkJCWNvdW50LAorCQkJCU5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpKTsKIAl3aGlsZSAoY291bnQpIHsKLQkgICAgUHV0QXR0ckNoYXIoQ0hSRUYoKmxpbmUpKTsKKwkgICAgUHV0QXR0ckNoYXIoTkNVUlNFU19TUF9BUkd4IENIUkVGKCpsaW5lKSk7CiAJICAgIGxpbmUrKzsKIAkgICAgY291bnQtLTsKIAl9CiAgICAgfSBlbHNlIGlmIChlbnRlcl9pbnNlcnRfbW9kZSAmJiBleGl0X2luc2VydF9tb2RlKSB7Ci0JVFBVVFNfVFJBQ0UoImVudGVyX2luc2VydF9tb2RlIik7Ci0JcHV0cChlbnRlcl9pbnNlcnRfbW9kZSk7CisJTkNVUlNFU19QVVRQMigiZW50ZXJfaW5zZXJ0X21vZGUiLCBlbnRlcl9pbnNlcnRfbW9kZSk7CiAJd2hpbGUgKGNvdW50KSB7Ci0JICAgIFB1dEF0dHJDaGFyKENIUkVGKCpsaW5lKSk7CisJICAgIFB1dEF0dHJDaGFyKE5DVVJTRVNfU1BfQVJHeCBDSFJFRigqbGluZSkpOwogCSAgICBpZiAoaW5zZXJ0X3BhZGRpbmcpIHsKLQkJVFBVVFNfVFJBQ0UoImluc2VydF9wYWRkaW5nIik7Ci0JCXB1dHAoaW5zZXJ0X3BhZGRpbmcpOworCQlOQ1VSU0VTX1BVVFAyKCJpbnNlcnRfcGFkZGluZyIsIGluc2VydF9wYWRkaW5nKTsKIAkgICAgfQogCSAgICBsaW5lKys7CiAJICAgIGNvdW50LS07CiAJfQotCVRQVVRTX1RSQUNFKCJleGl0X2luc2VydF9tb2RlIik7Ci0JcHV0cChleGl0X2luc2VydF9tb2RlKTsKKwlOQ1VSU0VTX1BVVFAyKCJleGl0X2luc2VydF9tb2RlIiwgZXhpdF9pbnNlcnRfbW9kZSk7CiAgICAgfSBlbHNlIHsKIAl3aGlsZSAoY291bnQpIHsKLQkgICAgVFBVVFNfVFJBQ0UoImluc2VydF9jaGFyYWN0ZXIiKTsKLQkgICAgcHV0cChpbnNlcnRfY2hhcmFjdGVyKTsKLQkgICAgUHV0QXR0ckNoYXIoQ0hSRUYoKmxpbmUpKTsKKwkgICAgTkNVUlNFU19QVVRQMigiaW5zZXJ0X2NoYXJhY3RlciIsIGluc2VydF9jaGFyYWN0ZXIpOworCSAgICBQdXRBdHRyQ2hhcihOQ1VSU0VTX1NQX0FSR3ggQ0hSRUYoKmxpbmUpKTsKIAkgICAgaWYgKGluc2VydF9wYWRkaW5nKSB7Ci0JCVRQVVRTX1RSQUNFKCJpbnNlcnRfcGFkZGluZyIpOwotCQlwdXRwKGluc2VydF9wYWRkaW5nKTsKKwkJTkNVUlNFU19QVVRQMigiaW5zZXJ0X3BhZGRpbmciLCBpbnNlcnRfcGFkZGluZyk7CiAJICAgIH0KIAkgICAgbGluZSsrOwogCSAgICBjb3VudC0tOwogCX0KICAgICB9Ci0gICAgcG9zaXRpb25fY2hlY2soU1AtPl9jdXJzcm93LCBTUC0+X2N1cnNjb2wsICJJbnNTdHIiKTsKKyAgICBwb3NpdGlvbl9jaGVjayhOQ1VSU0VTX1NQX0FSR3gKKwkJICAgU1BfUEFSTS0+X2N1cnNyb3csCisJCSAgIFNQX1BBUk0tPl9jdXJzY29sLCAiSW5zU3RyIik7CiB9CiAKIC8qCkBAIC0xNTQ1LDIyICsxNjkxLDI0IEBACiAqLwogCiBzdGF0aWMgdm9pZAotRGVsQ2hhcihpbnQgY291bnQpCitEZWxDaGFyKE5DVVJTRVNfU1BfRENMeCBpbnQgY291bnQpCiB7CiAgICAgaW50IG47CiAKLSAgICBUUihUUkFDRV9VUERBVEUsICgiRGVsQ2hhciglZCkgY2FsbGVkLCBwb3NpdGlvbiA9ICglbGQsJWxkKSIsCi0JCSAgICAgIGNvdW50LAotCQkgICAgICAobG9uZykgbmV3c2NyLT5fY3VyeSwKLQkJICAgICAgKGxvbmcpIG5ld3Njci0+X2N1cngpKTsKKyAgICBUUihUUkFDRV9VUERBVEUsICgiRGVsQ2hhciglcCwgJWQpIGNhbGxlZCwgcG9zaXRpb24gPSAoJWxkLCVsZCkiLAorCQkgICAgICAodm9pZCAqKSBTUF9QQVJNLCBjb3VudCwKKwkJICAgICAgKGxvbmcpIE5ld1NjcmVlbihTUF9QQVJNKS0+X2N1cnksCisJCSAgICAgIChsb25nKSBOZXdTY3JlZW4oU1BfUEFSTSktPl9jdXJ4KSk7CiAKICAgICBpZiAocGFybV9kY2gpIHsKIAlUUFVUU19UUkFDRSgicGFybV9kY2giKTsKLQl0cHV0cyhUUEFSTV8xKHBhcm1fZGNoLCBjb3VudCksIGNvdW50LCBfbmNfb3V0Y2gpOworCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCVRQQVJNXzEocGFybV9kY2gsIGNvdW50KSwKKwkJCQljb3VudCwKKwkJCQlOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CiAgICAgfSBlbHNlIHsKIAlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgewotCSAgICBUUFVUU19UUkFDRSgiZGVsZXRlX2NoYXJhY3RlciIpOwotCSAgICBwdXRwKGRlbGV0ZV9jaGFyYWN0ZXIpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJkZWxldGVfY2hhcmFjdGVyIiwgZGVsZXRlX2NoYXJhY3Rlcik7CiAJfQogICAgIH0KIH0KQEAgLTE1OTksNTQgKzE3NDcsNjIgQEAKIAogLyogVHJ5IHRvIHNjcm9sbCB1cCBhc3N1bWluZyBnaXZlbiBjc3IgKG1pbnksIG1heHkpLiBSZXR1cm5zIEVSUiBvbiBmYWlsdXJlICovCiBzdGF0aWMgaW50Ci1zY3JvbGxfY3NyX2ZvcndhcmQoaW50IG4sIGludCB0b3AsIGludCBib3QsIGludCBtaW55LCBpbnQgbWF4eSwgTkNVUlNFU19DSF9UIGJsYW5rKQorc2Nyb2xsX2Nzcl9mb3J3YXJkKE5DVVJTRVNfU1BfRENMeAorCQkgICBpbnQgbiwKKwkJICAgaW50IHRvcCwKKwkJICAgaW50IGJvdCwKKwkJICAgaW50IG1pbnksCisJCSAgIGludCBtYXh5LAorCQkgICBOQ1VSU0VTX0NIX1QgYmxhbmspCiB7CiAgICAgaW50IGk7CiAKICAgICBpZiAobiA9PSAxICYmIHNjcm9sbF9mb3J3YXJkICYmIHRvcCA9PSBtaW55ICYmIGJvdCA9PSBtYXh5KSB7Ci0JR29Ubyhib3QsIDApOwotCVVwZGF0ZUF0dHJzKGJsYW5rKTsKLQlUUFVUU19UUkFDRSgic2Nyb2xsX2ZvcndhcmQiKTsKLQlwdXRwKHNjcm9sbF9mb3J3YXJkKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeCBib3QsIDApOworCVVwZGF0ZUF0dHJzKFNQX1BBUk0sIGJsYW5rKTsKKwlOQ1VSU0VTX1BVVFAyKCJzY3JvbGxfZm9yd2FyZCIsIHNjcm9sbF9mb3J3YXJkKTsKICAgICB9IGVsc2UgaWYgKG4gPT0gMSAmJiBkZWxldGVfbGluZSAmJiBib3QgPT0gbWF4eSkgewotCUdvVG8odG9wLCAwKTsKLQlVcGRhdGVBdHRycyhibGFuayk7Ci0JVFBVVFNfVFJBQ0UoImRlbGV0ZV9saW5lIik7Ci0JcHV0cChkZWxldGVfbGluZSk7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggdG9wLCAwKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CisJTkNVUlNFU19QVVRQMigiZGVsZXRlX2xpbmUiLCBkZWxldGVfbGluZSk7CiAgICAgfSBlbHNlIGlmIChwYXJtX2luZGV4ICYmIHRvcCA9PSBtaW55ICYmIGJvdCA9PSBtYXh5KSB7Ci0JR29Ubyhib3QsIDApOwotCVVwZGF0ZUF0dHJzKGJsYW5rKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeCBib3QsIDApOworCVVwZGF0ZUF0dHJzKFNQX1BBUk0sIGJsYW5rKTsKIAlUUFVUU19UUkFDRSgicGFybV9pbmRleCIpOwotCXRwdXRzKFRQQVJNXzIocGFybV9pbmRleCwgbiwgMCksIG4sIF9uY19vdXRjaCk7CisJTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJVFBBUk1fMihwYXJtX2luZGV4LCBuLCAwKSwKKwkJCQluLAorCQkJCU5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpKTsKICAgICB9IGVsc2UgaWYgKHBhcm1fZGVsZXRlX2xpbmUgJiYgYm90ID09IG1heHkpIHsKLQlHb1RvKHRvcCwgMCk7Ci0JVXBkYXRlQXR0cnMoYmxhbmspOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IHRvcCwgMCk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOwogCVRQVVRTX1RSQUNFKCJwYXJtX2RlbGV0ZV9saW5lIik7Ci0JdHB1dHMoVFBBUk1fMihwYXJtX2RlbGV0ZV9saW5lLCBuLCAwKSwgbiwgX25jX291dGNoKTsKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQlUUEFSTV8yKHBhcm1fZGVsZXRlX2xpbmUsIG4sIDApLAorCQkJCW4sCisJCQkJTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOwogICAgIH0gZWxzZSBpZiAoc2Nyb2xsX2ZvcndhcmQgJiYgdG9wID09IG1pbnkgJiYgYm90ID09IG1heHkpIHsKLQlHb1RvKGJvdCwgMCk7Ci0JVXBkYXRlQXR0cnMoYmxhbmspOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IGJvdCwgMCk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkgICAgVFBVVFNfVFJBQ0UoInNjcm9sbF9mb3J3YXJkIik7Ci0JICAgIHB1dHAoc2Nyb2xsX2ZvcndhcmQpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJzY3JvbGxfZm9yd2FyZCIsIHNjcm9sbF9mb3J3YXJkKTsKIAl9CiAgICAgfSBlbHNlIGlmIChkZWxldGVfbGluZSAmJiBib3QgPT0gbWF4eSkgewotCUdvVG8odG9wLCAwKTsKLQlVcGRhdGVBdHRycyhibGFuayk7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggdG9wLCAwKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCSAgICBUUFVUU19UUkFDRSgiZGVsZXRlX2xpbmUiKTsKLQkgICAgcHV0cChkZWxldGVfbGluZSk7CisJICAgIE5DVVJTRVNfUFVUUDIoImRlbGV0ZV9saW5lIiwgZGVsZXRlX2xpbmUpOwogCX0KICAgICB9IGVsc2UKIAlyZXR1cm4gRVJSOwogCiAjaWYgTkNVUlNFU19FWFRfRlVOQ1MKLSAgICBpZiAoRklMTF9CQ0UoKSkgeworICAgIGlmIChGSUxMX0JDRShTUF9QQVJNKSkgewogCWludCBqOwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkgICAgR29Ubyhib3QgLSBpLCAwKTsKLQkgICAgZm9yIChqID0gMDsgaiA8IHNjcmVlbl9jb2x1bW5zOyBqKyspCi0JCVB1dENoYXIoQ0hSRUYoYmxhbmspKTsKKwkgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggYm90IC0gaSwgMCk7CisJICAgIGZvciAoaiA9IDA7IGogPCBzY3JlZW5fY29sdW1ucyhTUF9QQVJNKTsgaisrKQorCQlQdXRDaGFyKE5DVVJTRVNfU1BfQVJHeCBDSFJFRihibGFuaykpOwogCX0KICAgICB9CiAjZW5kaWYKQEAgLTE2NTYsNTUgKzE4MTIsNjIgQEAKIC8qIFRyeSB0byBzY3JvbGwgZG93biBhc3N1bWluZyBnaXZlbiBjc3IgKG1pbnksIG1heHkpLiBSZXR1cm5zIEVSUiBvbiBmYWlsdXJlICovCiAvKiBuID4gMCAqLwogc3RhdGljIGludAotc2Nyb2xsX2Nzcl9iYWNrd2FyZChpbnQgbiwgaW50IHRvcCwgaW50IGJvdCwgaW50IG1pbnksIGludCBtYXh5LAorc2Nyb2xsX2Nzcl9iYWNrd2FyZChOQ1VSU0VTX1NQX0RDTHgKKwkJICAgIGludCBuLAorCQkgICAgaW50IHRvcCwKKwkJICAgIGludCBib3QsCisJCSAgICBpbnQgbWlueSwKKwkJICAgIGludCBtYXh5LAogCQkgICAgTkNVUlNFU19DSF9UIGJsYW5rKQogewogICAgIGludCBpOwogCiAgICAgaWYgKG4gPT0gMSAmJiBzY3JvbGxfcmV2ZXJzZSAmJiB0b3AgPT0gbWlueSAmJiBib3QgPT0gbWF4eSkgewotCUdvVG8odG9wLCAwKTsKLQlVcGRhdGVBdHRycyhibGFuayk7Ci0JVFBVVFNfVFJBQ0UoInNjcm9sbF9yZXZlcnNlIik7Ci0JcHV0cChzY3JvbGxfcmV2ZXJzZSk7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggdG9wLCAwKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CisJTkNVUlNFU19QVVRQMigic2Nyb2xsX3JldmVyc2UiLCBzY3JvbGxfcmV2ZXJzZSk7CiAgICAgfSBlbHNlIGlmIChuID09IDEgJiYgaW5zZXJ0X2xpbmUgJiYgYm90ID09IG1heHkpIHsKLQlHb1RvKHRvcCwgMCk7Ci0JVXBkYXRlQXR0cnMoYmxhbmspOwotCVRQVVRTX1RSQUNFKCJpbnNlcnRfbGluZSIpOwotCXB1dHAoaW5zZXJ0X2xpbmUpOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IHRvcCwgMCk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOworCU5DVVJTRVNfUFVUUDIoImluc2VydF9saW5lIiwgaW5zZXJ0X2xpbmUpOwogICAgIH0gZWxzZSBpZiAocGFybV9yaW5kZXggJiYgdG9wID09IG1pbnkgJiYgYm90ID09IG1heHkpIHsKLQlHb1RvKHRvcCwgMCk7Ci0JVXBkYXRlQXR0cnMoYmxhbmspOworCUdvVG8oTkNVUlNFU19TUF9BUkd4IHRvcCwgMCk7CisJVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOwogCVRQVVRTX1RSQUNFKCJwYXJtX3JpbmRleCIpOwotCXRwdXRzKFRQQVJNXzIocGFybV9yaW5kZXgsIG4sIDApLCBuLCBfbmNfb3V0Y2gpOworCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCVRQQVJNXzIocGFybV9yaW5kZXgsIG4sIDApLAorCQkJCW4sCisJCQkJTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOwogICAgIH0gZWxzZSBpZiAocGFybV9pbnNlcnRfbGluZSAmJiBib3QgPT0gbWF4eSkgewotCUdvVG8odG9wLCAwKTsKLQlVcGRhdGVBdHRycyhibGFuayk7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggdG9wLCAwKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAJVFBVVFNfVFJBQ0UoInBhcm1faW5zZXJ0X2xpbmUiKTsKLQl0cHV0cyhUUEFSTV8yKHBhcm1faW5zZXJ0X2xpbmUsIG4sIDApLCBuLCBfbmNfb3V0Y2gpOworCU5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCVRQQVJNXzIocGFybV9pbnNlcnRfbGluZSwgbiwgMCksCisJCQkJbiwKKwkJCQlOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CiAgICAgfSBlbHNlIGlmIChzY3JvbGxfcmV2ZXJzZSAmJiB0b3AgPT0gbWlueSAmJiBib3QgPT0gbWF4eSkgewotCUdvVG8odG9wLCAwKTsKLQlVcGRhdGVBdHRycyhibGFuayk7CisJR29UbyhOQ1VSU0VTX1NQX0FSR3ggdG9wLCAwKTsKKwlVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCSAgICBUUFVUU19UUkFDRSgic2Nyb2xsX3JldmVyc2UiKTsKLQkgICAgcHV0cChzY3JvbGxfcmV2ZXJzZSk7CisJICAgIE5DVVJTRVNfUFVUUDIoInNjcm9sbF9yZXZlcnNlIiwgc2Nyb2xsX3JldmVyc2UpOwogCX0KICAgICB9IGVsc2UgaWYgKGluc2VydF9saW5lICYmIGJvdCA9PSBtYXh5KSB7Ci0JR29Ubyh0b3AsIDApOwotCVVwZGF0ZUF0dHJzKGJsYW5rKTsKKwlHb1RvKE5DVVJTRVNfU1BfQVJHeCB0b3AsIDApOworCVVwZGF0ZUF0dHJzKFNQX1BBUk0sIGJsYW5rKTsKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JICAgIFRQVVRTX1RSQUNFKCJpbnNlcnRfbGluZSIpOwotCSAgICBwdXRwKGluc2VydF9saW5lKTsKKwkgICAgTkNVUlNFU19QVVRQMigiaW5zZXJ0X2xpbmUiLCBpbnNlcnRfbGluZSk7CiAJfQogICAgIH0gZWxzZQogCXJldHVybiBFUlI7CiAKICNpZiBOQ1VSU0VTX0VYVF9GVU5DUwotICAgIGlmIChGSUxMX0JDRSgpKSB7CisgICAgaWYgKEZJTExfQkNFKFNQX1BBUk0pKSB7CiAJaW50IGo7CiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotCSAgICBHb1RvKHRvcCArIGksIDApOwotCSAgICBmb3IgKGogPSAwOyBqIDwgc2NyZWVuX2NvbHVtbnM7IGorKykKLQkJUHV0Q2hhcihDSFJFRihibGFuaykpOworCSAgICBHb1RvKE5DVVJTRVNfU1BfQVJHeCB0b3AgKyBpLCAwKTsKKwkgICAgZm9yIChqID0gMDsgaiA8IHNjcmVlbl9jb2x1bW5zKFNQX1BBUk0pOyBqKyspCisJCVB1dENoYXIoTkNVUlNFU19TUF9BUkd4IENIUkVGKGJsYW5rKSk7CiAJfQogICAgIH0KICNlbmRpZgpAQCAtMTcxNCw0MCArMTg3Nyw0MiBAQAogLyogc2Nyb2xsIGJ5IHVzaW5nIGRlbGV0ZV9saW5lIGF0IGRlbCBhbmQgaW5zZXJ0X2xpbmUgYXQgaW5zICovCiAvKiBuID4gMCAqLwogc3RhdGljIGludAotc2Nyb2xsX2lkbChpbnQgbiwgaW50IGRlbCwgaW50IGlucywgTkNVUlNFU19DSF9UIGJsYW5rKQorc2Nyb2xsX2lkbChOQ1VSU0VTX1NQX0RDTHggaW50IG4sIGludCBkZWwsIGludCBpbnMsIE5DVVJTRVNfQ0hfVCBibGFuaykKIHsKICAgICBpbnQgaTsKIAogICAgIGlmICghKChwYXJtX2RlbGV0ZV9saW5lIHx8IGRlbGV0ZV9saW5lKSAmJiAocGFybV9pbnNlcnRfbGluZSB8fCBpbnNlcnRfbGluZSkpKQogCXJldHVybiBFUlI7CiAKLSAgICBHb1RvKGRlbCwgMCk7Ci0gICAgVXBkYXRlQXR0cnMoYmxhbmspOworICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IGRlbCwgMCk7CisgICAgVXBkYXRlQXR0cnMoU1BfUEFSTSwgYmxhbmspOwogICAgIGlmIChuID09IDEgJiYgZGVsZXRlX2xpbmUpIHsKLQlUUFVUU19UUkFDRSgiZGVsZXRlX2xpbmUiKTsKLQlwdXRwKGRlbGV0ZV9saW5lKTsKKwlOQ1VSU0VTX1BVVFAyKCJkZWxldGVfbGluZSIsIGRlbGV0ZV9saW5lKTsKICAgICB9IGVsc2UgaWYgKHBhcm1fZGVsZXRlX2xpbmUpIHsKIAlUUFVUU19UUkFDRSgicGFybV9kZWxldGVfbGluZSIpOwotCXRwdXRzKFRQQVJNXzIocGFybV9kZWxldGVfbGluZSwgbiwgMCksIG4sIF9uY19vdXRjaCk7CisJTkNVUlNFU19TUF9OQU1FKHRwdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJVFBBUk1fMihwYXJtX2RlbGV0ZV9saW5lLCBuLCAwKSwKKwkJCQluLAorCQkJCU5DVVJTRVNfU1BfTkFNRShfbmNfb3V0Y2gpKTsKICAgICB9IGVsc2UgewkJCS8qIGlmIChkZWxldGVfbGluZSkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JICAgIFRQVVRTX1RSQUNFKCJkZWxldGVfbGluZSIpOwotCSAgICBwdXRwKGRlbGV0ZV9saW5lKTsKKwkgICAgTkNVUlNFU19QVVRQMigiZGVsZXRlX2xpbmUiLCBkZWxldGVfbGluZSk7CiAJfQogICAgIH0KIAotICAgIEdvVG8oaW5zLCAwKTsKLSAgICBVcGRhdGVBdHRycyhibGFuayk7CisgICAgR29UbyhOQ1VSU0VTX1NQX0FSR3ggaW5zLCAwKTsKKyAgICBVcGRhdGVBdHRycyhTUF9QQVJNLCBibGFuayk7CiAgICAgaWYgKG4gPT0gMSAmJiBpbnNlcnRfbGluZSkgewotCVRQVVRTX1RSQUNFKCJpbnNlcnRfbGluZSIpOwotCXB1dHAoaW5zZXJ0X2xpbmUpOworCU5DVVJTRVNfUFVUUDIoImluc2VydF9saW5lIiwgaW5zZXJ0X2xpbmUpOwogICAgIH0gZWxzZSBpZiAocGFybV9pbnNlcnRfbGluZSkgewogCVRQVVRTX1RSQUNFKCJwYXJtX2luc2VydF9saW5lIik7Ci0JdHB1dHMoVFBBUk1fMihwYXJtX2luc2VydF9saW5lLCBuLCAwKSwgbiwgX25jX291dGNoKTsKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQlUUEFSTV8yKHBhcm1faW5zZXJ0X2xpbmUsIG4sIDApLAorCQkJCW4sCisJCQkJTkNVUlNFU19TUF9OQU1FKF9uY19vdXRjaCkpOwogICAgIH0gZWxzZSB7CQkJLyogaWYgKGluc2VydF9saW5lKSAqLwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkgICAgVFBVVFNfVFJBQ0UoImluc2VydF9saW5lIik7Ci0JICAgIHB1dHAoaW5zZXJ0X2xpbmUpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJpbnNlcnRfbGluZSIsIGluc2VydF9saW5lKTsKIAl9CiAgICAgfQogCkBAIC0xNzYzLDE1ICsxOTI4LDI1IEBACiAgKiBzYXZlL3Jlc3RvcmUgY3Vyc29yIGNhcGFiaWxpdGllcyBpZiB0aGUgdGVybWluYWwgaGFzIHRoZW0uCiAgKi8KIE5DVVJTRVNfRVhQT1JUKGludCkKLV9uY19zY3JvbGxuKGludCBuLCBpbnQgdG9wLCBpbnQgYm90LCBpbnQgbWF4eSkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsbikgKE5DVVJTRVNfU1BfRENMeAorCQkJICAgICAgaW50IG4sCisJCQkgICAgICBpbnQgdG9wLAorCQkJICAgICAgaW50IGJvdCwKKwkJCSAgICAgIGludCBtYXh5KQogLyogc2Nyb2xsIHJlZ2lvbiBmcm9tIHRvcCB0byBib3QgYnkgbiBsaW5lcyAqLwogewotICAgIE5DVVJTRVNfQ0hfVCBibGFuayA9IENsckJsYW5rKHN0ZHNjcik7CisgICAgTkNVUlNFU19DSF9UIGJsYW5rOwogICAgIGludCBpOwogICAgIGJvb2wgY3Vyc29yX3NhdmVkID0gRkFMU0U7CiAgICAgaW50IHJlczsKIAotICAgIFRSKFRSQUNFX01PVkUsICgibXZjdXJfc2Nyb2xsbiglZCwgJWQsICVkLCAlZCkiLCBuLCB0b3AsIGJvdCwgbWF4eSkpOworICAgIFRSKFRSQUNFX01PVkUsICgiX25jX3Njcm9sbG4oJXAsICVkLCAlZCwgJWQsICVkKSIsCisJCSAgICAodm9pZCAqKSBTUF9QQVJNLCBuLCB0b3AsIGJvdCwgbWF4eSkpOworCisgICAgaWYgKCFJc1ZhbGlkU2NyZWVuKFNQX1BBUk0pKQorCXJldHVybiAoRVJSKTsKKworICAgIGJsYW5rID0gQ2xyQmxhbmsoTkNVUlNFU19TUF9BUkd4IFN0ZFNjcmVlbihTUF9QQVJNKSk7CiAKICNpZiBVU0VfWE1DX1NVUFBPUlQKICAgICAvKgpAQCAtMTc4NywzNCArMTk2MiwzMiBAQAogCSAqIEV4cGxpY2l0bHkgY2xlYXIgaWYgc3R1ZmYgcHVzaGVkIG9mZiB0b3Agb2YgcmVnaW9uIG1pZ2h0CiAJICogYmUgc2F2ZWQgYnkgdGhlIHRlcm1pbmFsLgogCSAqLwotCXJlcyA9IHNjcm9sbF9jc3JfZm9yd2FyZChuLCB0b3AsIGJvdCwgMCwgbWF4eSwgYmxhbmspOworCXJlcyA9IHNjcm9sbF9jc3JfZm9yd2FyZChOQ1VSU0VTX1NQX0FSR3ggbiwgdG9wLCBib3QsIDAsIG1heHksIGJsYW5rKTsKIAogCWlmIChyZXMgPT0gRVJSICYmIGNoYW5nZV9zY3JvbGxfcmVnaW9uKSB7CiAJICAgIGlmICgoKChuID09IDEgJiYgc2Nyb2xsX2ZvcndhcmQpIHx8IHBhcm1faW5kZXgpCi0JCSAmJiAoU1AtPl9jdXJzcm93ID09IGJvdCB8fCBTUC0+X2N1cnNyb3cgPT0gYm90IC0gMSkpCisJCSAmJiAoU1BfUEFSTS0+X2N1cnNyb3cgPT0gYm90IHx8IFNQX1BBUk0tPl9jdXJzcm93ID09IGJvdCAtIDEpKQogCQkmJiBzYXZlX2N1cnNvciAmJiByZXN0b3JlX2N1cnNvcikgewogCQljdXJzb3Jfc2F2ZWQgPSBUUlVFOwotCQlUUFVUU19UUkFDRSgic2F2ZV9jdXJzb3IiKTsKLQkJcHV0cChzYXZlX2N1cnNvcik7CisJCU5DVVJTRVNfUFVUUDIoInNhdmVfY3Vyc29yIiwgc2F2ZV9jdXJzb3IpOwogCSAgICB9Ci0JICAgIFRQVVRTX1RSQUNFKCJjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiIpOwotCSAgICBwdXRwKFRQQVJNXzIoY2hhbmdlX3Njcm9sbF9yZWdpb24sIHRvcCwgYm90KSk7CisJICAgIE5DVVJTRVNfUFVUUDIoImNoYW5nZV9zY3JvbGxfcmVnaW9uIiwKKwkJCSAgVFBBUk1fMihjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiwgdG9wLCBib3QpKTsKIAkgICAgaWYgKGN1cnNvcl9zYXZlZCkgewotCQlUUFVUU19UUkFDRSgicmVzdG9yZV9jdXJzb3IiKTsKLQkJcHV0cChyZXN0b3JlX2N1cnNvcik7CisJCU5DVVJTRVNfUFVUUDIoInJlc3RvcmVfY3Vyc29yIiwgcmVzdG9yZV9jdXJzb3IpOwogCSAgICB9IGVsc2UgewotCQlTUC0+X2N1cnNyb3cgPSBTUC0+X2N1cnNjb2wgPSAtMTsKKwkJU1BfUEFSTS0+X2N1cnNyb3cgPSBTUF9QQVJNLT5fY3Vyc2NvbCA9IC0xOwogCSAgICB9CiAKLQkgICAgcmVzID0gc2Nyb2xsX2Nzcl9mb3J3YXJkKG4sIHRvcCwgYm90LCB0b3AsIGJvdCwgYmxhbmspOworCSAgICByZXMgPSBzY3JvbGxfY3NyX2ZvcndhcmQoTkNVUlNFU19TUF9BUkd4IG4sIHRvcCwgYm90LCB0b3AsIGJvdCwgYmxhbmspOwogCi0JICAgIFRQVVRTX1RSQUNFKCJjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiIpOwotCSAgICBwdXRwKFRQQVJNXzIoY2hhbmdlX3Njcm9sbF9yZWdpb24sIDAsIG1heHkpKTsKLQkgICAgU1AtPl9jdXJzcm93ID0gU1AtPl9jdXJzY29sID0gLTE7CisJICAgIE5DVVJTRVNfUFVUUDIoImNoYW5nZV9zY3JvbGxfcmVnaW9uIiwKKwkJCSAgVFBBUk1fMihjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiwgMCwgbWF4eSkpOworCSAgICBTUF9QQVJNLT5fY3Vyc3JvdyA9IFNQX1BBUk0tPl9jdXJzY29sID0gLTE7CiAJfQogCi0JaWYgKHJlcyA9PSBFUlIgJiYgX25jX2lkbG9rKQotCSAgICByZXMgPSBzY3JvbGxfaWRsKG4sIHRvcCwgYm90IC0gbiArIDEsIGJsYW5rKTsKKwlpZiAocmVzID09IEVSUiAmJiBTUF9QQVJNLT5fbmNfc3BfaWRsb2spCisJICAgIHJlcyA9IHNjcm9sbF9pZGwoTkNVUlNFU19TUF9BUkd4IG4sIHRvcCwgYm90IC0gbiArIDEsIGJsYW5rKTsKIAogCS8qCiAJICogQ2xlYXIgdGhlIG5ld2x5IHNoaWZ0ZWQtaW4gdGV4dC4KQEAgLTE4MjMsNDQgKzE5OTYsNDUgQEAKIAkgICAgJiYgKG5vbl9kZXN0X3Njcm9sbF9yZWdpb24gfHwgKG1lbW9yeV9iZWxvdyAmJiBib3QgPT0gbWF4eSkpKSB7CiAJICAgIHN0YXRpYyBjb25zdCBOQ1VSU0VTX0NIX1QgYmxhbmsyID0gTmV3Q2hhcihCTEFOS19URVhUKTsKIAkgICAgaWYgKGJvdCA9PSBtYXh5ICYmIGNscl9lb3MpIHsKLQkJR29Ubyhib3QgLSBuICsgMSwgMCk7Ci0JCUNsclRvRU9TKGJsYW5rMik7CisJCUdvVG8oTkNVUlNFU19TUF9BUkd4IGJvdCAtIG4gKyAxLCAwKTsKKwkJQ2xyVG9FT1MoTkNVUlNFU19TUF9BUkd4IGJsYW5rMik7CiAJICAgIH0gZWxzZSB7CiAJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJICAgIEdvVG8oYm90IC0gaSwgMCk7Ci0JCSAgICBDbHJUb0VPTChibGFuazIsIEZBTFNFKTsKKwkJICAgIEdvVG8oTkNVUlNFU19TUF9BUkd4IGJvdCAtIGksIDApOworCQkgICAgQ2xyVG9FT0woTkNVUlNFU19TUF9BUkd4IGJsYW5rMiwgRkFMU0UpOwogCQl9CiAJICAgIH0KIAl9CiAKICAgICB9IGVsc2UgewkJCS8qIChuIDwgMCkgLSBzY3JvbGwgZG93biAoYmFja3dhcmQpICovCi0JcmVzID0gc2Nyb2xsX2Nzcl9iYWNrd2FyZCgtbiwgdG9wLCBib3QsIDAsIG1heHksIGJsYW5rKTsKKwlyZXMgPSBzY3JvbGxfY3NyX2JhY2t3YXJkKE5DVVJTRVNfU1BfQVJHeCAtbiwgdG9wLCBib3QsIDAsIG1heHksIGJsYW5rKTsKIAogCWlmIChyZXMgPT0gRVJSICYmIGNoYW5nZV9zY3JvbGxfcmVnaW9uKSB7Ci0JICAgIGlmICh0b3AgIT0gMCAmJiAoU1AtPl9jdXJzcm93ID09IHRvcCB8fCBTUC0+X2N1cnNyb3cgPT0gdG9wIC0gMSkKKwkgICAgaWYgKHRvcCAhPSAwCisJCSYmIChTUF9QQVJNLT5fY3Vyc3JvdyA9PSB0b3AgfHwKKwkJICAgIFNQX1BBUk0tPl9jdXJzcm93ID09IHRvcCAtIDEpCiAJCSYmIHNhdmVfY3Vyc29yICYmIHJlc3RvcmVfY3Vyc29yKSB7CiAJCWN1cnNvcl9zYXZlZCA9IFRSVUU7Ci0JCVRQVVRTX1RSQUNFKCJzYXZlX2N1cnNvciIpOwotCQlwdXRwKHNhdmVfY3Vyc29yKTsKKwkJTkNVUlNFU19QVVRQMigic2F2ZV9jdXJzb3IiLCBzYXZlX2N1cnNvcik7CiAJICAgIH0KLQkgICAgVFBVVFNfVFJBQ0UoImNoYW5nZV9zY3JvbGxfcmVnaW9uIik7Ci0JICAgIHB1dHAoVFBBUk1fMihjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiwgdG9wLCBib3QpKTsKKwkgICAgTkNVUlNFU19QVVRQMigiY2hhbmdlX3Njcm9sbF9yZWdpb24iLAorCQkJICBUUEFSTV8yKGNoYW5nZV9zY3JvbGxfcmVnaW9uLCB0b3AsIGJvdCkpOwogCSAgICBpZiAoY3Vyc29yX3NhdmVkKSB7Ci0JCVRQVVRTX1RSQUNFKCJyZXN0b3JlX2N1cnNvciIpOwotCQlwdXRwKHJlc3RvcmVfY3Vyc29yKTsKKwkJTkNVUlNFU19QVVRQMigicmVzdG9yZV9jdXJzb3IiLCByZXN0b3JlX2N1cnNvcik7CiAJICAgIH0gZWxzZSB7Ci0JCVNQLT5fY3Vyc3JvdyA9IFNQLT5fY3Vyc2NvbCA9IC0xOworCQlTUF9QQVJNLT5fY3Vyc3JvdyA9IFNQX1BBUk0tPl9jdXJzY29sID0gLTE7CiAJICAgIH0KIAotCSAgICByZXMgPSBzY3JvbGxfY3NyX2JhY2t3YXJkKC1uLCB0b3AsIGJvdCwgdG9wLCBib3QsIGJsYW5rKTsKKwkgICAgcmVzID0gc2Nyb2xsX2Nzcl9iYWNrd2FyZChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgICAgICAtbiwgdG9wLCBib3QsIHRvcCwgYm90LCBibGFuayk7CiAKLQkgICAgVFBVVFNfVFJBQ0UoImNoYW5nZV9zY3JvbGxfcmVnaW9uIik7Ci0JICAgIHB1dHAoVFBBUk1fMihjaGFuZ2Vfc2Nyb2xsX3JlZ2lvbiwgMCwgbWF4eSkpOwotCSAgICBTUC0+X2N1cnNyb3cgPSBTUC0+X2N1cnNjb2wgPSAtMTsKKwkgICAgTkNVUlNFU19QVVRQMigiY2hhbmdlX3Njcm9sbF9yZWdpb24iLAorCQkJICBUUEFSTV8yKGNoYW5nZV9zY3JvbGxfcmVnaW9uLCAwLCBtYXh5KSk7CisJICAgIFNQX1BBUk0tPl9jdXJzcm93ID0gU1BfUEFSTS0+X2N1cnNjb2wgPSAtMTsKIAl9CiAKLQlpZiAocmVzID09IEVSUiAmJiBfbmNfaWRsb2spCi0JICAgIHJlcyA9IHNjcm9sbF9pZGwoLW4sIGJvdCArIG4gKyAxLCB0b3AsIGJsYW5rKTsKKwlpZiAocmVzID09IEVSUiAmJiBTUF9QQVJNLT5fbmNfc3BfaWRsb2spCisJICAgIHJlcyA9IHNjcm9sbF9pZGwoTkNVUlNFU19TUF9BUkd4IC1uLCBib3QgKyBuICsgMSwgdG9wLCBibGFuayk7CiAKIAkvKgogCSAqIENsZWFyIHRoZSBuZXdseSBzaGlmdGVkLWluIHRleHQuCkBAIC0xODY5LDggKzIwNDMsOCBAQAogCSAgICAmJiAobm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvbiB8fCAobWVtb3J5X2Fib3ZlICYmIHRvcCA9PSAwKSkpIHsKIAkgICAgc3RhdGljIGNvbnN0IE5DVVJTRVNfQ0hfVCBibGFuazIgPSBOZXdDaGFyKEJMQU5LX1RFWFQpOwogCSAgICBmb3IgKGkgPSAwOyBpIDwgLW47IGkrKykgewotCQlHb1RvKGkgKyB0b3AsIDApOwotCQlDbHJUb0VPTChibGFuazIsIEZBTFNFKTsKKwkJR29UbyhOQ1VSU0VTX1NQX0FSR3ggaSArIHRvcCwgMCk7CisJCUNsclRvRU9MKE5DVVJTRVNfU1BfQVJHeCBibGFuazIsIEZBTFNFKTsKIAkgICAgfQogCX0KICAgICB9CkBAIC0xODc4LDk5ICsyMDUyLDE2NSBAQAogICAgIGlmIChyZXMgPT0gRVJSKQogCXJldHVybiAoRVJSKTsKIAotICAgIF9uY19zY3JvbGxfd2luZG93KGN1cnNjciwgbiwgdG9wLCBib3QsIGJsYW5rKTsKKyAgICBfbmNfc2Nyb2xsX3dpbmRvdyhDdXJTY3JlZW4oU1BfUEFSTSksIG4sCisJCSAgICAgIChOQ1VSU0VTX1NJWkVfVCkgdG9wLAorCQkgICAgICAoTkNVUlNFU19TSVpFX1QpIGJvdCwKKwkJICAgICAgYmxhbmspOwogCiAgICAgLyogc2hpZnQgaGFzaCB2YWx1ZXMgdG9vIC0gdGhleSBjYW4gYmUgcmV1c2VkICovCi0gICAgX25jX3Njcm9sbF9vbGRoYXNoKG4sIHRvcCwgYm90KTsKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3Njcm9sbF9vbGRoYXNoKSAoTkNVUlNFU19TUF9BUkd4IG4sIHRvcCwgYm90KTsKIAogICAgIHJldHVybiAoT0spOwogfQogCi1OQ1VSU0VTX0VYUE9SVCh2b2lkKQotX25jX3NjcmVlbl9yZXN1bWUodm9pZCkKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCitfbmNfc2Nyb2xsbihpbnQgbiwgaW50IHRvcCwgaW50IGJvdCwgaW50IG1heHkpCiB7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRShfbmNfc2Nyb2xsbikgKENVUlJFTlRfU0NSRUVOLCBuLCB0b3AsIGJvdCwgbWF4eSk7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2NyZWVuX3Jlc3VtZSkgKE5DVVJTRVNfU1BfRENMMCkKK3sKKyAgICBhc3NlcnQoU1BfUEFSTSk7CisKICAgICAvKiBtYWtlIHN1cmUgdGVybWluYWwgaXMgaW4gYSBzYW5lIGtub3duIHN0YXRlICovCi0gICAgU2V0QXR0cihTQ1JFRU5fQVRUUlMoU1ApLCBBX05PUk1BTCk7Ci0gICAgbmV3c2NyLT5fY2xlYXIgPSBUUlVFOworICAgIFNldEF0dHIoU0NSRUVOX0FUVFJTKFNQX1BBUk0pLCBBX05PUk1BTCk7CisgICAgTmV3U2NyZWVuKFNQX1BBUk0pLT5fY2xlYXIgPSBUUlVFOwogCiAgICAgLyogcmVzZXQgY29sb3IgcGFpcnMgYW5kIGRlZmluaXRpb25zICovCi0gICAgaWYgKFNQLT5fY29sb3JvbiB8fCBTUC0+X2NvbG9yX2RlZnMpCi0JX25jX3Jlc2V0X2NvbG9ycygpOworICAgIGlmIChTUF9QQVJNLT5fY29sb3JvbiB8fCBTUF9QQVJNLT5fY29sb3JfZGVmcykKKwlOQ1VSU0VTX1NQX05BTUUoX25jX3Jlc2V0X2NvbG9ycykgKE5DVVJTRVNfU1BfQVJHKTsKIAogICAgIC8qIHJlc3RvcmUgdXNlci1kZWZpbmVkIGNvbG9ycywgaWYgYW55ICovCi0gICAgaWYgKFNQLT5fY29sb3JfZGVmcyA8IDApIHsKKyAgICBpZiAoU1BfUEFSTS0+X2NvbG9yX2RlZnMgPCAwKSB7CiAJaW50IG47Ci0JU1AtPl9jb2xvcl9kZWZzID0gLShTUC0+X2NvbG9yX2RlZnMpOwotCWZvciAobiA9IDA7IG4gPCBTUC0+X2NvbG9yX2RlZnM7ICsrbikgewotCSAgICBpZiAoU1AtPl9jb2xvcl90YWJsZVtuXS5pbml0KSB7Ci0JCWluaXRfY29sb3IobiwKLQkJCSAgIFNQLT5fY29sb3JfdGFibGVbbl0uciwKLQkJCSAgIFNQLT5fY29sb3JfdGFibGVbbl0uZywKLQkJCSAgIFNQLT5fY29sb3JfdGFibGVbbl0uYik7CisJU1BfUEFSTS0+X2NvbG9yX2RlZnMgPSAtKFNQX1BBUk0tPl9jb2xvcl9kZWZzKTsKKwlmb3IgKG4gPSAwOyBuIDwgU1BfUEFSTS0+X2NvbG9yX2RlZnM7ICsrbikgeworCSAgICBpZiAoU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLmluaXQpIHsKKwkJTkNVUlNFU19TUF9OQU1FKGluaXRfY29sb3IpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAgICAoc2hvcnQpIG4sCisJCQkJCSAgICAgU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLnIsCisJCQkJCSAgICAgU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLmcsCisJCQkJCSAgICAgU1BfUEFSTS0+X2NvbG9yX3RhYmxlW25dLmIpOwogCSAgICB9CiAJfQogICAgIH0KIAogICAgIGlmIChleGl0X2F0dHJpYnV0ZV9tb2RlKQotCXB1dHAoZXhpdF9hdHRyaWJ1dGVfbW9kZSk7CisJTkNVUlNFU19QVVRQMigiZXhpdF9hdHRyaWJ1dGVfbW9kZSIsIGV4aXRfYXR0cmlidXRlX21vZGUpOwogICAgIGVsc2UgewogCS8qIHR1cm4gb2ZmIGF0dHJpYnV0ZXMgKi8KIAlpZiAoZXhpdF9hbHRfY2hhcnNldF9tb2RlKQotCSAgICBwdXRwKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSk7CisJICAgIE5DVVJTRVNfUFVUUDIoImV4aXRfYWx0X2NoYXJzZXRfbW9kZSIsIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSk7CiAJaWYgKGV4aXRfc3RhbmRvdXRfbW9kZSkKLQkgICAgcHV0cChleGl0X3N0YW5kb3V0X21vZGUpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJleGl0X3N0YW5kb3V0X21vZGUiLCBleGl0X3N0YW5kb3V0X21vZGUpOwogCWlmIChleGl0X3VuZGVybGluZV9tb2RlKQotCSAgICBwdXRwKGV4aXRfdW5kZXJsaW5lX21vZGUpOworCSAgICBOQ1VSU0VTX1BVVFAyKCJleGl0X3VuZGVybGluZV9tb2RlIiwgZXhpdF91bmRlcmxpbmVfbW9kZSk7CiAgICAgfQogICAgIGlmIChleGl0X2luc2VydF9tb2RlKQotCXB1dHAoZXhpdF9pbnNlcnRfbW9kZSk7Ci0gICAgaWYgKGVudGVyX2FtX21vZGUgJiYgZXhpdF9hbV9tb2RlKQotCXB1dHAoYXV0b19yaWdodF9tYXJnaW4gPyBlbnRlcl9hbV9tb2RlIDogZXhpdF9hbV9tb2RlKTsKKwlOQ1VSU0VTX1BVVFAyKCJleGl0X2luc2VydF9tb2RlIiwgZXhpdF9pbnNlcnRfbW9kZSk7CisgICAgaWYgKGVudGVyX2FtX21vZGUgJiYgZXhpdF9hbV9tb2RlKSB7CisJaWYgKGF1dG9fcmlnaHRfbWFyZ2luKSB7CisJICAgIE5DVVJTRVNfUFVUUDIoImVudGVyX2FtX21vZGUiLCBlbnRlcl9hbV9tb2RlKTsKKwl9IGVsc2UgeworCSAgICBOQ1VSU0VTX1BVVFAyKCJleGl0X2FtX21vZGUiLCBleGl0X2FtX21vZGUpOworCX0KKyAgICB9CiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVCh2b2lkKQorX25jX3NjcmVlbl9yZXN1bWUodm9pZCkKK3sKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NjcmVlbl9yZXN1bWUpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKKworTkNVUlNFU19FWFBPUlQodm9pZCkKK05DVVJTRVNfU1BfTkFNRShfbmNfc2NyZWVuX2luaXQpIChOQ1VSU0VTX1NQX0RDTDApCit7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JlZW5fcmVzdW1lKSAoTkNVUlNFU19TUF9BUkcpOworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUwogTkNVUlNFU19FWFBPUlQodm9pZCkKIF9uY19zY3JlZW5faW5pdCh2b2lkKQogewotICAgIF9uY19zY3JlZW5fcmVzdW1lKCk7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19zY3JlZW5faW5pdCkgKENVUlJFTlRfU0NSRUVOKTsKIH0KKyNlbmRpZgogCiAvKiB3cmFwIHVwIHNjcmVlbiBoYW5kbGluZyAqLwogTkNVUlNFU19FWFBPUlQodm9pZCkKLV9uY19zY3JlZW5fd3JhcCh2b2lkKQorTkNVUlNFU19TUF9OQU1FKF9uY19zY3JlZW5fd3JhcCkgKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICBVcGRhdGVBdHRycyhub3JtYWwpOworICAgIGlmIChTUF9QQVJNICE9IDApIHsKKworCVVwZGF0ZUF0dHJzKFNQX1BBUk0sIG5vcm1hbCk7CiAjaWYgTkNVUlNFU19FWFRfRlVOQ1MKLSAgICBpZiAoU1AtPl9jb2xvcm9uCi0JJiYgIVNQLT5fZGVmYXVsdF9jb2xvcikgewotCXN0YXRpYyBjb25zdCBOQ1VSU0VTX0NIX1QgYmxhbmsgPSBOZXdDaGFyKEJMQU5LX1RFWFQpOwotCVNQLT5fZGVmYXVsdF9jb2xvciA9IFRSVUU7Ci0JX25jX2RvX2NvbG9yKC0xLCAwLCBGQUxTRSwgX25jX291dGNoKTsKLQlTUC0+X2RlZmF1bHRfY29sb3IgPSBGQUxTRTsKKwlpZiAoU1BfUEFSTS0+X2NvbG9yb24KKwkgICAgJiYgIVNQX1BBUk0tPl9kZWZhdWx0X2NvbG9yKSB7CisJICAgIHN0YXRpYyBjb25zdCBOQ1VSU0VTX0NIX1QgYmxhbmsgPSBOZXdDaGFyKEJMQU5LX1RFWFQpOworCSAgICBTUF9QQVJNLT5fZGVmYXVsdF9jb2xvciA9IFRSVUU7CisJICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfZG9fY29sb3IpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkJICAgLTEsCisJCQkJCSAgIDAsCisJCQkJCSAgIEZBTFNFLAorCQkJCQkgICBOQ1VSU0VTX1NQX05BTUUoX25jX291dGNoKSk7CisJICAgIFNQX1BBUk0tPl9kZWZhdWx0X2NvbG9yID0gRkFMU0U7CiAKLQltdmN1cihTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCwgc2NyZWVuX2xpbmVzIC0gMSwgMCk7CisJICAgIFRJTkZPX01WQ1VSKE5DVVJTRVNfU1BfQVJHeAorCQkJU1BfUEFSTS0+X2N1cnNyb3csCisJCQlTUF9QQVJNLT5fY3Vyc2NvbCwKKwkJCXNjcmVlbl9saW5lcyhTUF9QQVJNKSAtIDEsCisJCQkwKTsKIAotCUNsclRvRU9MKGJsYW5rLCBUUlVFKTsKLSAgICB9CisJICAgIENsclRvRU9MKE5DVVJTRVNfU1BfQVJHeCBibGFuaywgVFJVRSk7CisJfQogI2VuZGlmCi0gICAgaWYgKFNQLT5fY29sb3JfZGVmcykgewotCV9uY19yZXNldF9jb2xvcnMoKTsKKwlpZiAoU1BfUEFSTS0+X2NvbG9yX2RlZnMpIHsKKwkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19yZXNldF9jb2xvcnMpIChOQ1VSU0VTX1NQX0FSRyk7CisJfQogICAgIH0KIH0KIAorI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfc2NyZWVuX3dyYXAodm9pZCkKK3sKKyAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NjcmVlbl93cmFwKSAoQ1VSUkVOVF9TQ1JFRU4pOworfQorI2VuZGlmCisKICNpZiBVU0VfWE1DX1NVUFBPUlQKIE5DVVJTRVNfRVhQT1JUKHZvaWQpCi1fbmNfZG9feG1jX2dsaXRjaChhdHRyX3QgcHJldmlvdXMpCitOQ1VSU0VTX1NQX05BTUUoX25jX2RvX3htY19nbGl0Y2gpIChOQ1VSU0VTX1NQX0RDTHggYXR0cl90IHByZXZpb3VzKQogewotICAgIGF0dHJfdCBjaGcgPSBYTUNfQ0hBTkdFUyhwcmV2aW91cyBeIEF0dHJPZihTQ1JFRU5fQVRUUlMoU1ApKSk7CisgICAgaWYgKFNQX1BBUk0gIT0gMCkgeworCWF0dHJfdCBjaGcgPSBYTUNfQ0hBTkdFUyhwcmV2aW91cyBeIEF0dHJPZihTQ1JFRU5fQVRUUlMoU1BfUEFSTSkpKTsKIAotICAgIHdoaWxlIChjaGcgIT0gMCkgewotCWlmIChjaGcgJiAxKSB7Ci0JICAgIFNQLT5fY3Vyc2NvbCArPSBtYWdpY19jb29raWVfZ2xpdGNoOwotCSAgICBpZiAoU1AtPl9jdXJzY29sID49IFNQLT5fY29sdW1ucykKLQkJd3JhcF9jdXJzb3IoKTsKLQkgICAgVFIoVFJBQ0VfVVBEQVRFLCAoImJ1bXBlZCB0byAlZCwlZCBhZnRlciBjb29raWUiLCBTUC0+X2N1cnNyb3csIFNQLT5fY3Vyc2NvbCkpOworCXdoaWxlIChjaGcgIT0gMCkgeworCSAgICBpZiAoY2hnICYgMSkgeworCQlTUF9QQVJNLT5fY3Vyc2NvbCArPSBtYWdpY19jb29raWVfZ2xpdGNoOworCQlpZiAoU1BfUEFSTS0+X2N1cnNjb2wgPj0gU1BfUEFSTS0+X2NvbHVtbnMpCisJCSAgICB3cmFwX2N1cnNvcihOQ1VSU0VTX1NQX0FSRyk7CisJCVRSKFRSQUNFX1VQREFURSwgKCJidW1wZWQgdG8gJWQsJWQgYWZ0ZXIgY29va2llIiwKKwkJCQkgIFNQX1BBUk0tPl9jdXJzcm93LCBTUF9QQVJNLT5fY3Vyc2NvbCkpOworCSAgICB9CisJICAgIGNoZyA+Pj0gMTsKIAl9Ci0JY2hnID4+PSAxOwogICAgIH0KIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKHZvaWQpCitfbmNfZG9feG1jX2dsaXRjaChhdHRyX3QgcHJldmlvdXMpCit7CisgICAgTkNVUlNFU19TUF9OQU1FKF9uY19kb194bWNfZ2xpdGNoKSAoQ1VSUkVOVF9TQ1JFRU4sIHByZXZpb3VzKTsKK30KKyNlbmRpZgorCiAjZW5kaWYgLyogVVNFX1hNQ19TVVBQT1JUICovCmRpZmYgLS1naXQgYS9uY3Vyc2VzL3VuY3RybC5jIGIvbmN1cnNlcy91bmN0cmwuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYzYjE3Ni4uMDAwMDAwMAotLS0gYS9uY3Vyc2VzL3VuY3RybC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qIGdlbmVyYXRlZCBieSBNS3VuY3RybC5hd2sgKi8KLQotI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KLQotI2lmIFVTRV9XSURFQ19TVVBQT1JUCi0jaWYgSEFWRV9XQ1RZUEVfSAotI2luY2x1ZGUgPHdjdHlwZS5oPgotI2VuZGlmCi0jZW5kaWYKLQotI3VuZGVmIHVuY3RybAotCi1OQ1VSU0VTX0VYUE9SVChOQ1VSU0VTX0NPTlNUIGNoYXIgKikgX25jX3VuY3RybCAoU0NSRUVOICpzcCwgY2h0eXBlIGNoKQotewotc3RhdGljIGNvbnN0IHNob3J0IHVuY3RybF90YWJsZVtdID0gewotICAgICAgIDAsICAgMywgICA2LCAgIDksICAxMiwgIDE1LCAgMTgsICAyMSwKLSAgICAgIDI0LCAgMjcsICAzMCwgIDMzLCAgMzYsICAzOSwgIDQyLCAgNDUsCi0gICAgICA0OCwgIDUxLCAgNTQsICA1NywgIDYwLCAgNjMsICA2NiwgIDY5LAotICAgICAgNzIsICA3NSwgIDc4LCAgODEsICA4NCwgIDg3LCAgOTAsICA5MywKLSAgICAgIDk2LCAgOTgsIDEwMCwgMTAyLCAxMDQsIDEwNiwgMTA4LCAxMTAsCi0gICAgIDExMiwgMTE0LCAxMTYsIDExOCwgMTIwLCAxMjIsIDEyNCwgMTI2LAotICAgICAxMjgsIDEzMCwgMTMyLCAxMzQsIDEzNiwgMTM4LCAxNDAsIDE0MiwKLSAgICAgMTQ0LCAxNDYsIDE0OCwgMTUwLCAxNTIsIDE1NCwgMTU2LCAxNTgsCi0gICAgIDE2MCwgMTYyLCAxNjQsIDE2NiwgMTY4LCAxNzAsIDE3MiwgMTc0LAotICAgICAxNzYsIDE3OCwgMTgwLCAxODIsIDE4NCwgMTg2LCAxODgsIDE5MCwKLSAgICAgMTkyLCAxOTQsIDE5NiwgMTk4LCAyMDAsIDIwMiwgMjA0LCAyMDYsCi0gICAgIDIwOCwgMjEwLCAyMTIsIDIxNCwgMjE2LCAyMTgsIDIyMCwgMjIyLAotICAgICAyMjQsIDIyNiwgMjI4LCAyMzAsIDIzMiwgMjM0LCAyMzYsIDIzOCwKLSAgICAgMjQwLCAyNDIsIDI0NCwgMjQ2LCAyNDgsIDI1MCwgMjUyLCAyNTQsCi0gICAgIDI1NiwgMjU4LCAyNjAsIDI2MiwgMjY0LCAyNjYsIDI2OCwgMjcwLAotICAgICAyNzIsIDI3NCwgMjc2LCAyNzgsIDI4MCwgMjgyLCAyODQsIDI4NiwKLSAgICAgMjg5LCAyOTIsIDI5NSwgMjk4LCAzMDEsIDMwNCwgMzA3LCAzMTAsCi0gICAgIDMxMywgMzE2LCAzMTksIDMyMiwgMzI1LCAzMjgsIDMzMSwgMzM0LAotICAgICAzMzcsIDM0MCwgMzQzLCAzNDYsIDM0OSwgMzUyLCAzNTUsIDM1OCwKLSAgICAgMzYxLCAzNjQsIDM2NywgMzcwLCAzNzMsIDM3NiwgMzc5LCAzODIsCi0gICAgIDM4NSwgMzg5LCAzOTMsIDM5NywgNDAxLCA0MDUsIDQwOSwgNDEzLAotICAgICA0MTcsIDQyMSwgNDI1LCA0MjksIDQzMywgNDM3LCA0NDEsIDQ0NSwKLSAgICAgNDQ5LCA0NTMsIDQ1NywgNDYxLCA0NjUsIDQ2OSwgNDczLCA0NzcsCi0gICAgIDQ4MSwgNDg1LCA0ODksIDQ5MywgNDk3LCA1MDEsIDUwNSwgNTA5LAotICAgICA1MTMsIDUxNywgNTIxLCA1MjUsIDUyOSwgNTMzLCA1MzcsIDU0MSwKLSAgICAgNTQ1LCA1NDksIDU1MywgNTU3LCA1NjEsIDU2NSwgNTY5LCA1NzMsCi0gICAgIDU3NywgNTgxLCA1ODUsIDU4OSwgNTkzLCA1OTcsIDYwMSwgNjA1LAotICAgICA2MDksIDYxMywgNjE3LCA2MjEsIDYyNSwgNjI5LCA2MzMsIDYzNywKLSAgICAgNjQxLCA2NDUsIDY0OSwgNjUzLCA2NTcsIDY2MSwgNjY1LCA2NjksCi0gICAgIDY3MywgNjc3LCA2ODEsIDY4NSwgNjg5LCA2OTMsIDY5NywgNzAxLAotICAgICA3MDUsIDcwOSwgNzEzLCA3MTcsIDcyMSwgNzI1LCA3MjksIDczMywKLSAgICAgNzM3LCA3NDEsIDc0NSwgNzQ5LCA3NTMsIDc1NywgNzYxLCA3NjUsfTsKLQotI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCi1zdGF0aWMgY29uc3Qgc2hvcnQgdW5jdHJsX2MxW10gPSB7Ci0gICAgIDc2OCwgNzcwLCA3NzIsIDc3NCwgNzc2LCA3NzgsIDc4MCwgNzgyLAotICAgICA3ODQsIDc4NiwgNzg4LCA3OTAsIDc5MiwgNzk0LCA3OTYsIDc5OCwKLSAgICAgODAwLCA4MDIsIDgwNCwgODA2LCA4MDgsIDgxMCwgODEyLCA4MTQsCi0gICAgIDgxNiwgODE4LCA4MjAsIDgyMiwgODI0LCA4MjYsIDgyOCwgODMwLAotICAgICA4MzIsIDgzNCwgODM2LCA4MzgsIDg0MCwgODQyLCA4NDQsIDg0NiwKLSAgICAgODQ4LCA4NTAsIDg1MiwgODU0LCA4NTYsIDg1OCwgODYwLCA4NjIsCi0gICAgIDg2NCwgODY2LCA4NjgsIDg3MCwgODcyLCA4NzQsIDg3NiwgODc4LAotICAgICA4ODAsIDg4MiwgODg0LCA4ODYsIDg4OCwgODkwLCA4OTIsIDg5NCwKLSAgICAgODk2LCA4OTgsIDkwMCwgOTAyLCA5MDQsIDkwNiwgOTA4LCA5MTAsCi0gICAgIDkxMiwgOTE0LCA5MTYsIDkxOCwgOTIwLCA5MjIsIDkyNCwgOTI2LAotICAgICA5MjgsIDkzMCwgOTMyLCA5MzQsIDkzNiwgOTM4LCA5NDAsIDk0MiwKLSAgICAgOTQ0LCA5NDYsIDk0OCwgOTUwLCA5NTIsIDk1NCwgOTU2LCA5NTgsCi0gICAgIDk2MCwgOTYyLCA5NjQsIDk2NiwgOTY4LCA5NzAsIDk3MiwgOTc0LAotICAgICA5NzYsIDk3OCwgOTgwLCA5ODIsIDk4NCwgOTg2LCA5ODgsIDk5MCwKLSAgICAgOTkyLCA5OTQsIDk5NiwgOTk4LDEwMDAsMTAwMiwxMDA0LDEwMDYsCi0gICAgMTAwOCwxMDEwLDEwMTIsMTAxNCwxMDE2LDEwMTgsMTAyMCwxMDIyLH07Ci0jZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KLQotc3RhdGljIGNvbnN0IGNoYXIgdW5jdHJsX2Jsb2JbXSA9IAotICAgICJeXDEwMFwwXlwxMDFcMF5cMTAyXDBeXDEwM1wwXlwxMDRcMF5cMTA1XDBeXDEwNlwwXlwxMDdcMCIKLSAgICAiXlwxMTBcMF5cMTExXDBeXDExMlwwXlwxMTNcMF5cMTE0XDBeXDExNVwwXlwxMTZcMF5cMTE3XDAiCi0gICAgIl5cMTIwXDBeXDEyMVwwXlwxMjJcMF5cMTIzXDBeXDEyNFwwXlwxMjVcMF5cMTI2XDBeXDEyN1wwIgotICAgICJeXDEzMFwwXlwxMzFcMF5cMTMyXDBeXDEzM1wwXlwxMzRcMF5cMTM1XDBeXDEzNlwwXlwxMzdcMCIKLSAgICAiXDA0MFwwXDA0MVwwXDA0MlwwXDA0M1wwXDA0NFwwXDA0NVwwXDA0NlwwXDA0N1wwIgotICAgICJcMDUwXDBcMDUxXDBcMDUyXDBcMDUzXDBcMDU0XDBcMDU1XDBcMDU2XDBcMDU3XDAiCi0gICAgIlwwNjBcMFwwNjFcMFwwNjJcMFwwNjNcMFwwNjRcMFwwNjVcMFwwNjZcMFwwNjdcMCIKLSAgICAiXDA3MFwwXDA3MVwwXDA3MlwwXDA3M1wwXDA3NFwwXDA3NVwwXDA3NlwwXDA3N1wwIgotICAgICJcMTAwXDBcMTAxXDBcMTAyXDBcMTAzXDBcMTA0XDBcMTA1XDBcMTA2XDBcMTA3XDAiCi0gICAgIlwxMTBcMFwxMTFcMFwxMTJcMFwxMTNcMFwxMTRcMFwxMTVcMFwxMTZcMFwxMTdcMCIKLSAgICAiXDEyMFwwXDEyMVwwXDEyMlwwXDEyM1wwXDEyNFwwXDEyNVwwXDEyNlwwXDEyN1wwIgotICAgICJcMTMwXDBcMTMxXDBcMTMyXDBcMTMzXDBcMTM0XDBcMTM1XDBcMTM2XDBcMTM3XDAiCi0gICAgIlwxNDBcMFwxNDFcMFwxNDJcMFwxNDNcMFwxNDRcMFwxNDVcMFwxNDZcMFwxNDdcMCIKLSAgICAiXDE1MFwwXDE1MVwwXDE1MlwwXDE1M1wwXDE1NFwwXDE1NVwwXDE1NlwwXDE1N1wwIgotICAgICJcMTYwXDBcMTYxXDBcMTYyXDBcMTYzXDBcMTY0XDBcMTY1XDBcMTY2XDBcMTY3XDAiCi0gICAgIlwxNzBcMFwxNzFcMFwxNzJcMFwxNzNcMFwxNzRcMFwxNzVcMFwxNzZcMF4/XDAiCi0gICAgIn5cMTAwXDB+XDEwMVwwflwxMDJcMH5cMTAzXDB+XDEwNFwwflwxMDVcMH5cMTA2XDB+XDEwN1wwIgotICAgICJ+XDExMFwwflwxMTFcMH5cMTEyXDB+XDExM1wwflwxMTRcMH5cMTE1XDB+XDExNlwwflwxMTdcMCIKLSAgICAiflwxMjBcMH5cMTIxXDB+XDEyMlwwflwxMjNcMH5cMTI0XDB+XDEyNVwwflwxMjZcMH5cMTI3XDAiCi0gICAgIn5cMTMwXDB+XDEzMVwwflwxMzJcMH5cMTMzXDB+XDEzNFwwflwxMzVcMH5cMTM2XDB+XDEzN1wwIgotICAgICJNLVwwNDBcME0tXDA0MVwwTS1cMDQyXDBNLVwwNDNcME0tXDA0NFwwTS1cMDQ1XDBNLVwwNDZcME0tXDA0N1wwIgotICAgICJNLVwwNTBcME0tXDA1MVwwTS1cMDUyXDBNLVwwNTNcME0tXDA1NFwwTS1cMDU1XDBNLVwwNTZcME0tXDA1N1wwIgotICAgICJNLVwwNjBcME0tXDA2MVwwTS1cMDYyXDBNLVwwNjNcME0tXDA2NFwwTS1cMDY1XDBNLVwwNjZcME0tXDA2N1wwIgotICAgICJNLVwwNzBcME0tXDA3MVwwTS1cMDcyXDBNLVwwNzNcME0tXDA3NFwwTS1cMDc1XDBNLVwwNzZcME0tXDA3N1wwIgotICAgICJNLVwxMDBcME0tXDEwMVwwTS1cMTAyXDBNLVwxMDNcME0tXDEwNFwwTS1cMTA1XDBNLVwxMDZcME0tXDEwN1wwIgotICAgICJNLVwxMTBcME0tXDExMVwwTS1cMTEyXDBNLVwxMTNcME0tXDExNFwwTS1cMTE1XDBNLVwxMTZcME0tXDExN1wwIgotICAgICJNLVwxMjBcME0tXDEyMVwwTS1cMTIyXDBNLVwxMjNcME0tXDEyNFwwTS1cMTI1XDBNLVwxMjZcME0tXDEyN1wwIgotICAgICJNLVwxMzBcME0tXDEzMVwwTS1cMTMyXDBNLVwxMzNcME0tXDEzNFwwTS1cMTM1XDBNLVwxMzZcME0tXDEzN1wwIgotICAgICJNLVwxNDBcME0tXDE0MVwwTS1cMTQyXDBNLVwxNDNcME0tXDE0NFwwTS1cMTQ1XDBNLVwxNDZcME0tXDE0N1wwIgotICAgICJNLVwxNTBcME0tXDE1MVwwTS1cMTUyXDBNLVwxNTNcME0tXDE1NFwwTS1cMTU1XDBNLVwxNTZcME0tXDE1N1wwIgotICAgICJNLVwxNjBcME0tXDE2MVwwTS1cMTYyXDBNLVwxNjNcME0tXDE2NFwwTS1cMTY1XDBNLVwxNjZcME0tXDE2N1wwIgotICAgICJNLVwxNzBcME0tXDE3MVwwTS1cMTcyXDBNLVwxNzNcME0tXDE3NFwwTS1cMTc1XDBNLVwxNzZcMH4/XDAiCi0vKiBwcmludGFibGUgdmFsdWVzIGluIDEyOC0yNTUgcmFuZ2UgKi8KLSAgICAiXDIwMFwwXDIwMVwwXDIwMlwwXDIwM1wwXDIwNFwwXDIwNVwwXDIwNlwwXDIwN1wwIgotICAgICJcMjEwXDBcMjExXDBcMjEyXDBcMjEzXDBcMjE0XDBcMjE1XDBcMjE2XDBcMjE3XDAiCi0gICAgIlwyMjBcMFwyMjFcMFwyMjJcMFwyMjNcMFwyMjRcMFwyMjVcMFwyMjZcMFwyMjdcMCIKLSAgICAiXDIzMFwwXDIzMVwwXDIzMlwwXDIzM1wwXDIzNFwwXDIzNVwwXDIzNlwwXDIzN1wwIgotICAgICJcMjQwXDBcMjQxXDBcMjQyXDBcMjQzXDBcMjQ0XDBcMjQ1XDBcMjQ2XDBcMjQ3XDAiCi0gICAgIlwyNTBcMFwyNTFcMFwyNTJcMFwyNTNcMFwyNTRcMFwyNTVcMFwyNTZcMFwyNTdcMCIKLSAgICAiXDI2MFwwXDI2MVwwXDI2MlwwXDI2M1wwXDI2NFwwXDI2NVwwXDI2NlwwXDI2N1wwIgotICAgICJcMjcwXDBcMjcxXDBcMjcyXDBcMjczXDBcMjc0XDBcMjc1XDBcMjc2XDBcMjc3XDAiCi0gICAgIlwzMDBcMFwzMDFcMFwzMDJcMFwzMDNcMFwzMDRcMFwzMDVcMFwzMDZcMFwzMDdcMCIKLSAgICAiXDMxMFwwXDMxMVwwXDMxMlwwXDMxM1wwXDMxNFwwXDMxNVwwXDMxNlwwXDMxN1wwIgotICAgICJcMzIwXDBcMzIxXDBcMzIyXDBcMzIzXDBcMzI0XDBcMzI1XDBcMzI2XDBcMzI3XDAiCi0gICAgIlwzMzBcMFwzMzFcMFwzMzJcMFwzMzNcMFwzMzRcMFwzMzVcMFwzMzZcMFwzMzdcMCIKLSAgICAiXDM0MFwwXDM0MVwwXDM0MlwwXDM0M1wwXDM0NFwwXDM0NVwwXDM0NlwwXDM0N1wwIgotICAgICJcMzUwXDBcMzUxXDBcMzUyXDBcMzUzXDBcMzU0XDBcMzU1XDBcMzU2XDBcMzU3XDAiCi0gICAgIlwzNjBcMFwzNjFcMFwzNjJcMFwzNjNcMFwzNjRcMFwzNjVcMFwzNjZcMFwzNjdcMCIKLSAgICAiXDM3MFwwXDM3MVwwXDM3MlwwXDM3M1wwXDM3NFwwXDM3NVwwXDM3NlwwXDM3N1wwIgotOwotCi0JaW50IGNoZWNrID0gQ2hDaGFyT2YoY2gpOwotCWNvbnN0IGNoYXIgKnJlc3VsdDsKLQotCWlmIChjaGVjayA+PSAwICYmIGNoZWNrIDwgKGludClTSVpFT0YodW5jdHJsX3RhYmxlKSkgewotI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCi0JCWlmICgoc3AgIT0gMCkKLQkJICYmIChzcC0+X2xlZ2FjeV9jb2RpbmcgPiAxKQotCQkgJiYgKGNoZWNrID49IDEyOCkKLQkJICYmIChjaGVjayA8IDE2MCkpCi0JCQlyZXN1bHQgPSB1bmN0cmxfYmxvYiArIHVuY3RybF9jMVtjaGVjayAtIDEyOF07Ci0JCWVsc2UKLSNpZiBVU0VfV0lERUNfU1VQUE9SVAotCQlpZiAoKGNoZWNrID49IDE2MCkKLQkJICYmIChjaGVjayA8IDI1NikKLQkJICYmICgoc3AgIT0gMCkKLQkJICAmJiAoKHNwLT5fbGVnYWN5X2NvZGluZyA+IDApCi0JCSAgIHx8IChzcC0+X2xlZ2FjeV9jb2RpbmcgPT0gMAotCQkgICAgICAgJiYgKGlzcHJpbnQoY2hlY2spIHx8IGlzd3ByaW50KGNoZWNrKSkpKSkpCi0JCQlyZXN1bHQgPSB1bmN0cmxfYmxvYiArIHVuY3RybF9jMVtjaGVjayAtIDEyOF07Ci0JCWVsc2UKLSNlbHNlCi0JCWlmICgoY2hlY2sgPj0gMTYwKQotCQkgJiYgKGNoZWNrIDwgMjU2KQotCQkgJiYgKChzcCAhPSAwKQotCQkgICYmICgoc3AtPl9sZWdhY3lfY29kaW5nID4gMCkKLQkJICAgfHwgKHNwLT5fbGVnYWN5X2NvZGluZyA9PSAwCi0JCSAgICAgICAmJiBpc3ByaW50KGNoZWNrKSkpKSkKLQkJCXJlc3VsdCA9IHVuY3RybF9ibG9iICsgdW5jdHJsX2MxW2NoZWNrIC0gMTI4XTsKLQkJZWxzZQotI2VuZGlmIC8qIFVTRV9XSURFQ19TVVBQT1JUICovCi0jZW5kaWYgLyogTkNVUlNFU19FWFRfRlVOQ1MgKi8KLQkJCXJlc3VsdCA9IHVuY3RybF9ibG9iICsgdW5jdHJsX3RhYmxlW2NoZWNrXTsKLQl9IGVsc2UgewotCQlyZXN1bHQgPSAwOwotCX0KLQlyZXR1cm4gKE5DVVJTRVNfQ09OU1QgY2hhciAqKXJlc3VsdDsKLX0KLQotTkNVUlNFU19FWFBPUlQoTkNVUlNFU19DT05TVCBjaGFyICopIHVuY3RybCAoY2h0eXBlIGNoKQotewotCXJldHVybiBfbmNfdW5jdHJsKFNQLCBjaCk7Ci19CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3djd2lkdGguaCBiL25jdXJzZXMvd2N3aWR0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNjExNzAKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL3djd2lkdGguaApAQCAtMCwwICsxLDMxMiBAQAorLyoKKyAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2Ygd2N3aWR0aCgpIGFuZCB3Y3N3aWR0aCgpIChkZWZpbmVkIGluCisgKiBJRUVFIFN0ZCAxMDAyLjEtMjAwMSkgZm9yIFVuaWNvZGUuCisgKgorICogaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA3OTA0OTc1L2Z1bmN0aW9ucy93Y3dpZHRoLmh0bWwKKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwNDk3NS9mdW5jdGlvbnMvd2Nzd2lkdGguaHRtbAorICoKKyAqIEluIGZpeGVkLXdpZHRoIG91dHB1dCBkZXZpY2VzLCBMYXRpbiBjaGFyYWN0ZXJzIGFsbCBvY2N1cHkgYSBzaW5nbGUKKyAqICJjZWxsIiBwb3NpdGlvbiBvZiBlcXVhbCB3aWR0aCwgd2hlcmVhcyBpZGVvZ3JhcGhpYyBDSksgY2hhcmFjdGVycworICogb2NjdXB5IHR3byBzdWNoIGNlbGxzLiBJbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gdGVybWluYWwtbGluZQorICogYXBwbGljYXRpb25zIGFuZCAodGVsZXR5cGUtc3R5bGUpIGNoYXJhY3RlciB0ZXJtaW5hbHMgdXNpbmcgdGhlCisgKiBVVEYtOCBlbmNvZGluZyByZXF1aXJlcyBhZ3JlZW1lbnQgb24gd2hpY2ggY2hhcmFjdGVyIHNob3VsZCBhZHZhbmNlCisgKiB0aGUgY3Vyc29yIGJ5IGhvdyBtYW55IGNlbGwgcG9zaXRpb25zLiBObyBlc3RhYmxpc2hlZCBmb3JtYWwKKyAqIHN0YW5kYXJkcyBleGlzdCBhdCBwcmVzZW50IG9uIHdoaWNoIFVuaWNvZGUgY2hhcmFjdGVyIHNoYWxsIG9jY3VweQorICogaG93IG1hbnkgY2VsbCBwb3NpdGlvbnMgb24gY2hhcmFjdGVyIHRlcm1pbmFscy4gVGhlc2Ugcm91dGluZXMgYXJlCisgKiBhIGZpcnN0IGF0dGVtcHQgb2YgZGVmaW5pbmcgc3VjaCBiZWhhdmlvciBiYXNlZCBvbiBzaW1wbGUgcnVsZXMKKyAqIGFwcGxpZWQgdG8gZGF0YSBwcm92aWRlZCBieSB0aGUgVW5pY29kZSBDb25zb3J0aXVtLgorICoKKyAqIEZvciBzb21lIGdyYXBoaWNhbCBjaGFyYWN0ZXJzLCB0aGUgVW5pY29kZSBzdGFuZGFyZCBleHBsaWNpdGx5CisgKiBkZWZpbmVzIGEgY2hhcmFjdGVyLWNlbGwgd2lkdGggdmlhIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBFYXN0IEFzaWFuCisgKiBGdWxsV2lkdGggKEYpLCBXaWRlIChXKSwgSGFsZi13aWR0aCAoSCksIGFuZCBOYXJyb3cgKE5hKSBjbGFzc2VzLgorICogSW4gYWxsIHRoZXNlIGNhc2VzLCB0aGVyZSBpcyBubyBhbWJpZ3VpdHkgYWJvdXQgd2hpY2ggd2lkdGggYQorICogdGVybWluYWwgc2hhbGwgdXNlLiBGb3IgY2hhcmFjdGVycyBpbiB0aGUgRWFzdCBBc2lhbiBBbWJpZ3VvdXMgKEEpCisgKiBjbGFzcywgdGhlIHdpZHRoIGNob2ljZSBkZXBlbmRzIHB1cmVseSBvbiBhIHByZWZlcmVuY2Ugb2YgYmFja3dhcmQKKyAqIGNvbXBhdGliaWxpdHkgd2l0aCBlaXRoZXIgaGlzdG9yaWMgQ0pLIG9yIFdlc3Rlcm4gcHJhY3RpY2UuCisgKiBDaG9vc2luZyBzaW5nbGUtd2lkdGggZm9yIHRoZXNlIGNoYXJhY3RlcnMgaXMgZWFzeSB0byBqdXN0aWZ5IGFzCisgKiB0aGUgYXBwcm9wcmlhdGUgbG9uZy10ZXJtIHNvbHV0aW9uLCBhcyB0aGUgQ0pLIHByYWN0aWNlIG9mCisgKiBkaXNwbGF5aW5nIHRoZXNlIGNoYXJhY3RlcnMgYXMgZG91YmxlLXdpZHRoIGNvbWVzIGZyb20gaGlzdG9yaWMKKyAqIGltcGxlbWVudGF0aW9uIHNpbXBsaWNpdHkgKDgtYml0IGVuY29kZWQgY2hhcmFjdGVycyB3ZXJlIGRpc3BsYXllZAorICogc2luZ2xlLXdpZHRoIGFuZCAxNi1iaXQgb25lcyBkb3VibGUtd2lkdGgsIGV2ZW4gZm9yIEdyZWVrLAorICogQ3lyaWxsaWMsIGV0Yy4pIGFuZCBub3QgYW55IHR5cG9ncmFwaGljIGNvbnNpZGVyYXRpb25zLgorICoKKyAqIE11Y2ggbGVzcyBjbGVhciBpcyB0aGUgY2hvaWNlIG9mIHdpZHRoIGZvciB0aGUgTm90IEVhc3QgQXNpYW4KKyAqIChOZXV0cmFsKSBjbGFzcy4gRXhpc3RpbmcgcHJhY3RpY2UgZG9lcyBub3QgZGljdGF0ZSBhIHdpZHRoIGZvciBhbnkKKyAqIG9mIHRoZXNlIGNoYXJhY3RlcnMuIEl0IHdvdWxkIG5ldmVydGhlbGVzcyBtYWtlIHNlbnNlCisgKiB0eXBvZ3JhcGhpY2FsbHkgdG8gYWxsb2NhdGUgdHdvIGNoYXJhY3RlciBjZWxscyB0byBjaGFyYWN0ZXJzIHN1Y2gKKyAqIGFzIGZvciBpbnN0YW5jZSBFTSBTUEFDRSBvciBWT0xVTUUgSU5URUdSQUwsIHdoaWNoIGNhbm5vdCBiZQorICogcmVwcmVzZW50ZWQgYWRlcXVhdGVseSB3aXRoIGEgc2luZ2xlLXdpZHRoIGdseXBoLiBUaGUgZm9sbG93aW5nCisgKiByb3V0aW5lcyBhdCBwcmVzZW50IG1lcmVseSBhc3NpZ24gYSBzaW5nbGUtY2VsbCB3aWR0aCB0byBhbGwKKyAqIG5ldXRyYWwgY2hhcmFjdGVycywgaW4gdGhlIGludGVyZXN0IG9mIHNpbXBsaWNpdHkuIFRoaXMgaXMgbm90CisgKiBlbnRpcmVseSBzYXRpc2ZhY3RvcnkgYW5kIHNob3VsZCBiZSByZWNvbnNpZGVyZWQgYmVmb3JlCisgKiBlc3RhYmxpc2hpbmcgYSBmb3JtYWwgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBBdCB0aGUgbW9tZW50LCB0aGUKKyAqIGRlY2lzaW9uIHdoaWNoIE5vdCBFYXN0IEFzaWFuIChOZXV0cmFsKSBjaGFyYWN0ZXJzIHNob3VsZCBiZQorICogcmVwcmVzZW50ZWQgYnkgZG91YmxlLXdpZHRoIGdseXBocyBjYW5ub3QgeWV0IGJlIGFuc3dlcmVkIGJ5CisgKiBhcHBseWluZyBhIHNpbXBsZSBydWxlIGZyb20gdGhlIFVuaWNvZGUgZGF0YWJhc2UgY29udGVudC4gU2V0dGluZworICogdXAgYSBwcm9wZXIgc3RhbmRhcmQgZm9yIHRoZSBiZWhhdmlvciBvZiBVVEYtOCBjaGFyYWN0ZXIgdGVybWluYWxzCisgKiB3aWxsIHJlcXVpcmUgYSBjYXJlZnVsIGFuYWx5c2lzIG5vdCBvbmx5IG9mIGVhY2ggVW5pY29kZSBjaGFyYWN0ZXIsCisgKiBidXQgYWxzbyBvZiBlYWNoIHByZXNlbnRhdGlvbiBmb3JtLCBzb21ldGhpbmcgdGhlIGF1dGhvciBvZiB0aGVzZQorICogcm91dGluZXMgaGFzIGF2b2lkZWQgdG8gZG8gc28gZmFyLgorICoKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTEvCisgKgorICogTWFya3VzIEt1aG4gLS0gMjAwNy0wNS0yNiAoVW5pY29kZSA1LjApCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICogZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4gVGhlIGF1dGhvcgorICogZGlzY2xhaW1zIGFsbCB3YXJyYW50aWVzIHdpdGggcmVnYXJkIHRvIHRoaXMgc29mdHdhcmUuCisgKgorICogTGF0ZXN0IHZlcnNpb246IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91Y3Mvd2N3aWR0aC5jCisgKi8KKworI2luY2x1ZGUgPHdjaGFyLmg+CisKK3N0cnVjdCBpbnRlcnZhbCB7CisgIGludCBmaXJzdDsKKyAgaW50IGxhc3Q7Cit9OworCisvKiBhdXhpbGlhcnkgZnVuY3Rpb24gZm9yIGJpbmFyeSBzZWFyY2ggaW4gaW50ZXJ2YWwgdGFibGUgKi8KK3N0YXRpYyBpbnQgYmlzZWFyY2god2NoYXJfdCB1Y3MsIGNvbnN0IHN0cnVjdCBpbnRlcnZhbCAqdGFibGUsIGludCBtYXgpIHsKKyAgaW50IG1pbiA9IDA7CisgIGludCBtaWQ7CisKKyAgaWYgKHVjcyA8IHRhYmxlWzBdLmZpcnN0IHx8IHVjcyA+IHRhYmxlW21heF0ubGFzdCkKKyAgICByZXR1cm4gMDsKKyAgd2hpbGUgKG1heCA+PSBtaW4pIHsKKyAgICBtaWQgPSAobWluICsgbWF4KSAvIDI7CisgICAgaWYgKHVjcyA+IHRhYmxlW21pZF0ubGFzdCkKKyAgICAgIG1pbiA9IG1pZCArIDE7CisgICAgZWxzZSBpZiAodWNzIDwgdGFibGVbbWlkXS5maXJzdCkKKyAgICAgIG1heCA9IG1pZCAtIDE7CisgICAgZWxzZQorICAgICAgcmV0dXJuIDE7CisgIH0KKworICByZXR1cm4gMDsKK30KKworCisvKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgZGVmaW5lIHRoZSBjb2x1bW4gd2lkdGggb2YgYW4gSVNPIDEwNjQ2CisgKiBjaGFyYWN0ZXIgYXMgZm9sbG93czoKKyAqCisgKiAgICAtIFRoZSBudWxsIGNoYXJhY3RlciAoVSswMDAwKSBoYXMgYSBjb2x1bW4gd2lkdGggb2YgMC4KKyAqCisgKiAgICAtIE90aGVyIEMwL0MxIGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgREVMIHdpbGwgbGVhZCB0byBhIHJldHVybgorICogICAgICB2YWx1ZSBvZiAtMS4KKyAqCisgKiAgICAtIE5vbi1zcGFjaW5nIGFuZCBlbmNsb3NpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgKGdlbmVyYWwKKyAqICAgICAgY2F0ZWdvcnkgY29kZSBNbiBvciBNZSBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSkgaGF2ZSBhCisgKiAgICAgIGNvbHVtbiB3aWR0aCBvZiAwLgorICoKKyAqICAgIC0gU09GVCBIWVBIRU4gKFUrMDBBRCkgaGFzIGEgY29sdW1uIHdpZHRoIG9mIDEuCisgKgorICogICAgLSBPdGhlciBmb3JtYXQgY2hhcmFjdGVycyAoZ2VuZXJhbCBjYXRlZ29yeSBjb2RlIENmIGluIHRoZSBVbmljb2RlCisgKiAgICAgIGRhdGFiYXNlKSBhbmQgWkVSTyBXSURUSCBTUEFDRSAoVSsyMDBCKSBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDAuCisgKgorICogICAgLSBIYW5ndWwgSmFtbyBtZWRpYWwgdm93ZWxzIGFuZCBmaW5hbCBjb25zb25hbnRzIChVKzExNjAtVSsxMUZGKQorICogICAgICBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDAuCisgKgorICogICAgLSBTcGFjaW5nIGNoYXJhY3RlcnMgaW4gdGhlIEVhc3QgQXNpYW4gV2lkZSAoVykgb3IgRWFzdCBBc2lhbgorICogICAgICBGdWxsLXdpZHRoIChGKSBjYXRlZ29yeSBhcyBkZWZpbmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsCisgKiAgICAgIFJlcG9ydCAjMTEgaGF2ZSBhIGNvbHVtbiB3aWR0aCBvZiAyLgorICoKKyAqICAgIC0gQWxsIHJlbWFpbmluZyBjaGFyYWN0ZXJzIChpbmNsdWRpbmcgYWxsIHByaW50YWJsZQorICogICAgICBJU08gODg1OS0xIGFuZCBXR0w0IGNoYXJhY3RlcnMsIFVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXJzLAorICogICAgICBldGMuKSBoYXZlIGEgY29sdW1uIHdpZHRoIG9mIDEuCisgKgorICogVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgd2NoYXJfdCBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVkCisgKiBpbiBJU08gMTA2NDYuCisgKi8KKworaW50IG1rX3djd2lkdGgod2NoYXJfdCB1Y3MpCit7CisgIC8qIHNvcnRlZCBsaXN0IG9mIG5vbi1vdmVybGFwcGluZyBpbnRlcnZhbHMgb2Ygbm9uLXNwYWNpbmcgY2hhcmFjdGVycyAqLworICAvKiBnZW5lcmF0ZWQgYnkgInVuaXNldCArY2F0PU1lICtjYXQ9TW4gK2NhdD1DZiAtMDBBRCArMTE2MC0xMUZGICsyMDBCIGMiICovCisgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgY29tYmluaW5nW10gPSB7CisgICAgeyAweDAzMDAsIDB4MDM2RiB9LCB7IDB4MDQ4MywgMHgwNDg2IH0sIHsgMHgwNDg4LCAweDA0ODkgfSwKKyAgICB7IDB4MDU5MSwgMHgwNUJEIH0sIHsgMHgwNUJGLCAweDA1QkYgfSwgeyAweDA1QzEsIDB4MDVDMiB9LAorICAgIHsgMHgwNUM0LCAweDA1QzUgfSwgeyAweDA1QzcsIDB4MDVDNyB9LCB7IDB4MDYwMCwgMHgwNjAzIH0sCisgICAgeyAweDA2MTAsIDB4MDYxNSB9LCB7IDB4MDY0QiwgMHgwNjVFIH0sIHsgMHgwNjcwLCAweDA2NzAgfSwKKyAgICB7IDB4MDZENiwgMHgwNkU0IH0sIHsgMHgwNkU3LCAweDA2RTggfSwgeyAweDA2RUEsIDB4MDZFRCB9LAorICAgIHsgMHgwNzBGLCAweDA3MEYgfSwgeyAweDA3MTEsIDB4MDcxMSB9LCB7IDB4MDczMCwgMHgwNzRBIH0sCisgICAgeyAweDA3QTYsIDB4MDdCMCB9LCB7IDB4MDdFQiwgMHgwN0YzIH0sIHsgMHgwOTAxLCAweDA5MDIgfSwKKyAgICB7IDB4MDkzQywgMHgwOTNDIH0sIHsgMHgwOTQxLCAweDA5NDggfSwgeyAweDA5NEQsIDB4MDk0RCB9LAorICAgIHsgMHgwOTUxLCAweDA5NTQgfSwgeyAweDA5NjIsIDB4MDk2MyB9LCB7IDB4MDk4MSwgMHgwOTgxIH0sCisgICAgeyAweDA5QkMsIDB4MDlCQyB9LCB7IDB4MDlDMSwgMHgwOUM0IH0sIHsgMHgwOUNELCAweDA5Q0QgfSwKKyAgICB7IDB4MDlFMiwgMHgwOUUzIH0sIHsgMHgwQTAxLCAweDBBMDIgfSwgeyAweDBBM0MsIDB4MEEzQyB9LAorICAgIHsgMHgwQTQxLCAweDBBNDIgfSwgeyAweDBBNDcsIDB4MEE0OCB9LCB7IDB4MEE0QiwgMHgwQTREIH0sCisgICAgeyAweDBBNzAsIDB4MEE3MSB9LCB7IDB4MEE4MSwgMHgwQTgyIH0sIHsgMHgwQUJDLCAweDBBQkMgfSwKKyAgICB7IDB4MEFDMSwgMHgwQUM1IH0sIHsgMHgwQUM3LCAweDBBQzggfSwgeyAweDBBQ0QsIDB4MEFDRCB9LAorICAgIHsgMHgwQUUyLCAweDBBRTMgfSwgeyAweDBCMDEsIDB4MEIwMSB9LCB7IDB4MEIzQywgMHgwQjNDIH0sCisgICAgeyAweDBCM0YsIDB4MEIzRiB9LCB7IDB4MEI0MSwgMHgwQjQzIH0sIHsgMHgwQjRELCAweDBCNEQgfSwKKyAgICB7IDB4MEI1NiwgMHgwQjU2IH0sIHsgMHgwQjgyLCAweDBCODIgfSwgeyAweDBCQzAsIDB4MEJDMCB9LAorICAgIHsgMHgwQkNELCAweDBCQ0QgfSwgeyAweDBDM0UsIDB4MEM0MCB9LCB7IDB4MEM0NiwgMHgwQzQ4IH0sCisgICAgeyAweDBDNEEsIDB4MEM0RCB9LCB7IDB4MEM1NSwgMHgwQzU2IH0sIHsgMHgwQ0JDLCAweDBDQkMgfSwKKyAgICB7IDB4MENCRiwgMHgwQ0JGIH0sIHsgMHgwQ0M2LCAweDBDQzYgfSwgeyAweDBDQ0MsIDB4MENDRCB9LAorICAgIHsgMHgwQ0UyLCAweDBDRTMgfSwgeyAweDBENDEsIDB4MEQ0MyB9LCB7IDB4MEQ0RCwgMHgwRDREIH0sCisgICAgeyAweDBEQ0EsIDB4MERDQSB9LCB7IDB4MEREMiwgMHgwREQ0IH0sIHsgMHgwREQ2LCAweDBERDYgfSwKKyAgICB7IDB4MEUzMSwgMHgwRTMxIH0sIHsgMHgwRTM0LCAweDBFM0EgfSwgeyAweDBFNDcsIDB4MEU0RSB9LAorICAgIHsgMHgwRUIxLCAweDBFQjEgfSwgeyAweDBFQjQsIDB4MEVCOSB9LCB7IDB4MEVCQiwgMHgwRUJDIH0sCisgICAgeyAweDBFQzgsIDB4MEVDRCB9LCB7IDB4MEYxOCwgMHgwRjE5IH0sIHsgMHgwRjM1LCAweDBGMzUgfSwKKyAgICB7IDB4MEYzNywgMHgwRjM3IH0sIHsgMHgwRjM5LCAweDBGMzkgfSwgeyAweDBGNzEsIDB4MEY3RSB9LAorICAgIHsgMHgwRjgwLCAweDBGODQgfSwgeyAweDBGODYsIDB4MEY4NyB9LCB7IDB4MEY5MCwgMHgwRjk3IH0sCisgICAgeyAweDBGOTksIDB4MEZCQyB9LCB7IDB4MEZDNiwgMHgwRkM2IH0sIHsgMHgxMDJELCAweDEwMzAgfSwKKyAgICB7IDB4MTAzMiwgMHgxMDMyIH0sIHsgMHgxMDM2LCAweDEwMzcgfSwgeyAweDEwMzksIDB4MTAzOSB9LAorICAgIHsgMHgxMDU4LCAweDEwNTkgfSwgeyAweDExNjAsIDB4MTFGRiB9LCB7IDB4MTM1RiwgMHgxMzVGIH0sCisgICAgeyAweDE3MTIsIDB4MTcxNCB9LCB7IDB4MTczMiwgMHgxNzM0IH0sIHsgMHgxNzUyLCAweDE3NTMgfSwKKyAgICB7IDB4MTc3MiwgMHgxNzczIH0sIHsgMHgxN0I0LCAweDE3QjUgfSwgeyAweDE3QjcsIDB4MTdCRCB9LAorICAgIHsgMHgxN0M2LCAweDE3QzYgfSwgeyAweDE3QzksIDB4MTdEMyB9LCB7IDB4MTdERCwgMHgxN0REIH0sCisgICAgeyAweDE4MEIsIDB4MTgwRCB9LCB7IDB4MThBOSwgMHgxOEE5IH0sIHsgMHgxOTIwLCAweDE5MjIgfSwKKyAgICB7IDB4MTkyNywgMHgxOTI4IH0sIHsgMHgxOTMyLCAweDE5MzIgfSwgeyAweDE5MzksIDB4MTkzQiB9LAorICAgIHsgMHgxQTE3LCAweDFBMTggfSwgeyAweDFCMDAsIDB4MUIwMyB9LCB7IDB4MUIzNCwgMHgxQjM0IH0sCisgICAgeyAweDFCMzYsIDB4MUIzQSB9LCB7IDB4MUIzQywgMHgxQjNDIH0sIHsgMHgxQjQyLCAweDFCNDIgfSwKKyAgICB7IDB4MUI2QiwgMHgxQjczIH0sIHsgMHgxREMwLCAweDFEQ0EgfSwgeyAweDFERkUsIDB4MURGRiB9LAorICAgIHsgMHgyMDBCLCAweDIwMEYgfSwgeyAweDIwMkEsIDB4MjAyRSB9LCB7IDB4MjA2MCwgMHgyMDYzIH0sCisgICAgeyAweDIwNkEsIDB4MjA2RiB9LCB7IDB4MjBEMCwgMHgyMEVGIH0sIHsgMHgzMDJBLCAweDMwMkYgfSwKKyAgICB7IDB4MzA5OSwgMHgzMDlBIH0sIHsgMHhBODA2LCAweEE4MDYgfSwgeyAweEE4MEIsIDB4QTgwQiB9LAorICAgIHsgMHhBODI1LCAweEE4MjYgfSwgeyAweEZCMUUsIDB4RkIxRSB9LCB7IDB4RkUwMCwgMHhGRTBGIH0sCisgICAgeyAweEZFMjAsIDB4RkUyMyB9LCB7IDB4RkVGRiwgMHhGRUZGIH0sIHsgMHhGRkY5LCAweEZGRkIgfSwKKyAgICB7IDB4MTBBMDEsIDB4MTBBMDMgfSwgeyAweDEwQTA1LCAweDEwQTA2IH0sIHsgMHgxMEEwQywgMHgxMEEwRiB9LAorICAgIHsgMHgxMEEzOCwgMHgxMEEzQSB9LCB7IDB4MTBBM0YsIDB4MTBBM0YgfSwgeyAweDFEMTY3LCAweDFEMTY5IH0sCisgICAgeyAweDFEMTczLCAweDFEMTgyIH0sIHsgMHgxRDE4NSwgMHgxRDE4QiB9LCB7IDB4MUQxQUEsIDB4MUQxQUQgfSwKKyAgICB7IDB4MUQyNDIsIDB4MUQyNDQgfSwgeyAweEUwMDAxLCAweEUwMDAxIH0sIHsgMHhFMDAyMCwgMHhFMDA3RiB9LAorICAgIHsgMHhFMDEwMCwgMHhFMDFFRiB9CisgIH07CisKKyAgLyogdGVzdCBmb3IgOC1iaXQgY29udHJvbCBjaGFyYWN0ZXJzICovCisgIGlmICh1Y3MgPT0gMCkKKyAgICByZXR1cm4gMDsKKyAgaWYgKHVjcyA8IDMyIHx8ICh1Y3MgPj0gMHg3ZiAmJiB1Y3MgPCAweGEwKSkKKyAgICByZXR1cm4gLTE7CisKKyAgLyogYmluYXJ5IHNlYXJjaCBpbiB0YWJsZSBvZiBub24tc3BhY2luZyBjaGFyYWN0ZXJzICovCisgIGlmIChiaXNlYXJjaCh1Y3MsIGNvbWJpbmluZywKKwkgICAgICAgc2l6ZW9mKGNvbWJpbmluZykgLyBzaXplb2Yoc3RydWN0IGludGVydmFsKSAtIDEpKQorICAgIHJldHVybiAwOworCisgIC8qIGlmIHdlIGFycml2ZSBoZXJlLCB1Y3MgaXMgbm90IGEgY29tYmluaW5nIG9yIEMwL0MxIGNvbnRyb2wgY2hhcmFjdGVyICovCisKKyAgcmV0dXJuIDEgKyAKKyAgICAodWNzID49IDB4MTEwMCAmJgorICAgICAodWNzIDw9IDB4MTE1ZiB8fCAgICAgICAgICAgICAgICAgICAgLyogSGFuZ3VsIEphbW8gaW5pdC4gY29uc29uYW50cyAqLworICAgICAgdWNzID09IDB4MjMyOSB8fCB1Y3MgPT0gMHgyMzJhIHx8CisgICAgICAodWNzID49IDB4MmU4MCAmJiB1Y3MgPD0gMHhhNGNmICYmCisgICAgICAgdWNzICE9IDB4MzAzZikgICAgICAgICAgICAgICAgICAgICAvKiBDSksgLi4uIFlpICovCisgICAgICB8fCAodWNzID49IDB4YWMwMCAmJiB1Y3MgPD0gMHhkN2EzKSAvKiBIYW5ndWwgU3lsbGFibGVzICovCisgICAgICB8fCAodWNzID49IDB4ZjkwMCAmJiB1Y3MgPD0gMHhmYWZmKSAvKiBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzICovCisgICAgICB8fCAodWNzID49IDB4ZmUxMCAmJiB1Y3MgPD0gMHhmZTE5KSAvKiBWZXJ0aWNhbCBmb3JtcyAqLworICAgICAgfHwgKHVjcyA+PSAweGZlMzAgJiYgdWNzIDw9IDB4ZmU2ZikgLyogQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMgKi8KKyAgICAgIHx8ICh1Y3MgPj0gMHhmZjAwICYmIHVjcyA8PSAweGZmNjApIC8qIEZ1bGx3aWR0aCBGb3JtcyAqLworICAgICAgfHwgKHVjcyA+PSAweGZmZTAgJiYgdWNzIDw9IDB4ZmZlNikKKyNpZiAhZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgfHwgKFNJWkVPRl9XQ0hBUl9UID49IDQpCisgICAgICB8fCAodWNzID49IDB4MjAwMDAgJiYgdWNzIDw9IDB4MmZmZmQpCisgICAgICB8fCAodWNzID49IDB4MzAwMDAgJiYgdWNzIDw9IDB4M2ZmZmQpCisjZW5kaWYKKyAgICAgICkpOworfQorCisKK2ludCBta193Y3N3aWR0aChjb25zdCB3Y2hhcl90ICpwd2NzLCBzaXplX3QgbikKK3sKKyAgaW50IHcsIHdpZHRoID0gMDsKKworICBmb3IgKDsqcHdjcyAmJiBuLS0gPiAwOyBwd2NzKyspCisgICAgaWYgKCh3ID0gbWtfd2N3aWR0aCgqcHdjcykpIDwgMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICB3aWR0aCArPSB3OworCisgIHJldHVybiB3aWR0aDsKK30KKworCisvKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIG1rX3djd2lkdGgoKSBhbmQKKyAqIG1rX3djc3dpZHRoKCksIGV4Y2VwdCB0aGF0IHNwYWNpbmcgY2hhcmFjdGVycyBpbiB0aGUgRWFzdCBBc2lhbgorICogQW1iaWd1b3VzIChBKSBjYXRlZ29yeSBhcyBkZWZpbmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAjMTEKKyAqIGhhdmUgYSBjb2x1bW4gd2lkdGggb2YgMi4gVGhpcyB2YXJpYW50IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgdXNlcnMgb2YKKyAqIENKSyBsZWdhY3kgZW5jb2RpbmdzIHdobyB3YW50IHRvIG1pZ3JhdGUgdG8gVUNTIHdpdGhvdXQgY2hhbmdpbmcKKyAqIHRoZSB0cmFkaXRpb25hbCB0ZXJtaW5hbCBjaGFyYWN0ZXItd2lkdGggYmVoYXZpb3VyLiBJdCBpcyBub3QKKyAqIG90aGVyd2lzZSByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuCisgKi8KK2ludCBta193Y3dpZHRoX2Nqayh3Y2hhcl90IHVjcykKK3sKKyAgLyogc29ydGVkIGxpc3Qgb2Ygbm9uLW92ZXJsYXBwaW5nIGludGVydmFscyBvZiBFYXN0IEFzaWFuIEFtYmlndW91cworICAgKiBjaGFyYWN0ZXJzLCBnZW5lcmF0ZWQgYnkgInVuaXNldCArV0lEVEgtQSAtY2F0PU1lIC1jYXQ9TW4gLWNhdD1DZiBjIiAqLworICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVydmFsIGFtYmlndW91c1tdID0geworICAgIHsgMHgwMEExLCAweDAwQTEgfSwgeyAweDAwQTQsIDB4MDBBNCB9LCB7IDB4MDBBNywgMHgwMEE4IH0sCisgICAgeyAweDAwQUEsIDB4MDBBQSB9LCB7IDB4MDBBRSwgMHgwMEFFIH0sIHsgMHgwMEIwLCAweDAwQjQgfSwKKyAgICB7IDB4MDBCNiwgMHgwMEJBIH0sIHsgMHgwMEJDLCAweDAwQkYgfSwgeyAweDAwQzYsIDB4MDBDNiB9LAorICAgIHsgMHgwMEQwLCAweDAwRDAgfSwgeyAweDAwRDcsIDB4MDBEOCB9LCB7IDB4MDBERSwgMHgwMEUxIH0sCisgICAgeyAweDAwRTYsIDB4MDBFNiB9LCB7IDB4MDBFOCwgMHgwMEVBIH0sIHsgMHgwMEVDLCAweDAwRUQgfSwKKyAgICB7IDB4MDBGMCwgMHgwMEYwIH0sIHsgMHgwMEYyLCAweDAwRjMgfSwgeyAweDAwRjcsIDB4MDBGQSB9LAorICAgIHsgMHgwMEZDLCAweDAwRkMgfSwgeyAweDAwRkUsIDB4MDBGRSB9LCB7IDB4MDEwMSwgMHgwMTAxIH0sCisgICAgeyAweDAxMTEsIDB4MDExMSB9LCB7IDB4MDExMywgMHgwMTEzIH0sIHsgMHgwMTFCLCAweDAxMUIgfSwKKyAgICB7IDB4MDEyNiwgMHgwMTI3IH0sIHsgMHgwMTJCLCAweDAxMkIgfSwgeyAweDAxMzEsIDB4MDEzMyB9LAorICAgIHsgMHgwMTM4LCAweDAxMzggfSwgeyAweDAxM0YsIDB4MDE0MiB9LCB7IDB4MDE0NCwgMHgwMTQ0IH0sCisgICAgeyAweDAxNDgsIDB4MDE0QiB9LCB7IDB4MDE0RCwgMHgwMTREIH0sIHsgMHgwMTUyLCAweDAxNTMgfSwKKyAgICB7IDB4MDE2NiwgMHgwMTY3IH0sIHsgMHgwMTZCLCAweDAxNkIgfSwgeyAweDAxQ0UsIDB4MDFDRSB9LAorICAgIHsgMHgwMUQwLCAweDAxRDAgfSwgeyAweDAxRDIsIDB4MDFEMiB9LCB7IDB4MDFENCwgMHgwMUQ0IH0sCisgICAgeyAweDAxRDYsIDB4MDFENiB9LCB7IDB4MDFEOCwgMHgwMUQ4IH0sIHsgMHgwMURBLCAweDAxREEgfSwKKyAgICB7IDB4MDFEQywgMHgwMURDIH0sIHsgMHgwMjUxLCAweDAyNTEgfSwgeyAweDAyNjEsIDB4MDI2MSB9LAorICAgIHsgMHgwMkM0LCAweDAyQzQgfSwgeyAweDAyQzcsIDB4MDJDNyB9LCB7IDB4MDJDOSwgMHgwMkNCIH0sCisgICAgeyAweDAyQ0QsIDB4MDJDRCB9LCB7IDB4MDJEMCwgMHgwMkQwIH0sIHsgMHgwMkQ4LCAweDAyREIgfSwKKyAgICB7IDB4MDJERCwgMHgwMkREIH0sIHsgMHgwMkRGLCAweDAyREYgfSwgeyAweDAzOTEsIDB4MDNBMSB9LAorICAgIHsgMHgwM0EzLCAweDAzQTkgfSwgeyAweDAzQjEsIDB4MDNDMSB9LCB7IDB4MDNDMywgMHgwM0M5IH0sCisgICAgeyAweDA0MDEsIDB4MDQwMSB9LCB7IDB4MDQxMCwgMHgwNDRGIH0sIHsgMHgwNDUxLCAweDA0NTEgfSwKKyAgICB7IDB4MjAxMCwgMHgyMDEwIH0sIHsgMHgyMDEzLCAweDIwMTYgfSwgeyAweDIwMTgsIDB4MjAxOSB9LAorICAgIHsgMHgyMDFDLCAweDIwMUQgfSwgeyAweDIwMjAsIDB4MjAyMiB9LCB7IDB4MjAyNCwgMHgyMDI3IH0sCisgICAgeyAweDIwMzAsIDB4MjAzMCB9LCB7IDB4MjAzMiwgMHgyMDMzIH0sIHsgMHgyMDM1LCAweDIwMzUgfSwKKyAgICB7IDB4MjAzQiwgMHgyMDNCIH0sIHsgMHgyMDNFLCAweDIwM0UgfSwgeyAweDIwNzQsIDB4MjA3NCB9LAorICAgIHsgMHgyMDdGLCAweDIwN0YgfSwgeyAweDIwODEsIDB4MjA4NCB9LCB7IDB4MjBBQywgMHgyMEFDIH0sCisgICAgeyAweDIxMDMsIDB4MjEwMyB9LCB7IDB4MjEwNSwgMHgyMTA1IH0sIHsgMHgyMTA5LCAweDIxMDkgfSwKKyAgICB7IDB4MjExMywgMHgyMTEzIH0sIHsgMHgyMTE2LCAweDIxMTYgfSwgeyAweDIxMjEsIDB4MjEyMiB9LAorICAgIHsgMHgyMTI2LCAweDIxMjYgfSwgeyAweDIxMkIsIDB4MjEyQiB9LCB7IDB4MjE1MywgMHgyMTU0IH0sCisgICAgeyAweDIxNUIsIDB4MjE1RSB9LCB7IDB4MjE2MCwgMHgyMTZCIH0sIHsgMHgyMTcwLCAweDIxNzkgfSwKKyAgICB7IDB4MjE5MCwgMHgyMTk5IH0sIHsgMHgyMUI4LCAweDIxQjkgfSwgeyAweDIxRDIsIDB4MjFEMiB9LAorICAgIHsgMHgyMUQ0LCAweDIxRDQgfSwgeyAweDIxRTcsIDB4MjFFNyB9LCB7IDB4MjIwMCwgMHgyMjAwIH0sCisgICAgeyAweDIyMDIsIDB4MjIwMyB9LCB7IDB4MjIwNywgMHgyMjA4IH0sIHsgMHgyMjBCLCAweDIyMEIgfSwKKyAgICB7IDB4MjIwRiwgMHgyMjBGIH0sIHsgMHgyMjExLCAweDIyMTEgfSwgeyAweDIyMTUsIDB4MjIxNSB9LAorICAgIHsgMHgyMjFBLCAweDIyMUEgfSwgeyAweDIyMUQsIDB4MjIyMCB9LCB7IDB4MjIyMywgMHgyMjIzIH0sCisgICAgeyAweDIyMjUsIDB4MjIyNSB9LCB7IDB4MjIyNywgMHgyMjJDIH0sIHsgMHgyMjJFLCAweDIyMkUgfSwKKyAgICB7IDB4MjIzNCwgMHgyMjM3IH0sIHsgMHgyMjNDLCAweDIyM0QgfSwgeyAweDIyNDgsIDB4MjI0OCB9LAorICAgIHsgMHgyMjRDLCAweDIyNEMgfSwgeyAweDIyNTIsIDB4MjI1MiB9LCB7IDB4MjI2MCwgMHgyMjYxIH0sCisgICAgeyAweDIyNjQsIDB4MjI2NyB9LCB7IDB4MjI2QSwgMHgyMjZCIH0sIHsgMHgyMjZFLCAweDIyNkYgfSwKKyAgICB7IDB4MjI4MiwgMHgyMjgzIH0sIHsgMHgyMjg2LCAweDIyODcgfSwgeyAweDIyOTUsIDB4MjI5NSB9LAorICAgIHsgMHgyMjk5LCAweDIyOTkgfSwgeyAweDIyQTUsIDB4MjJBNSB9LCB7IDB4MjJCRiwgMHgyMkJGIH0sCisgICAgeyAweDIzMTIsIDB4MjMxMiB9LCB7IDB4MjQ2MCwgMHgyNEU5IH0sIHsgMHgyNEVCLCAweDI1NEIgfSwKKyAgICB7IDB4MjU1MCwgMHgyNTczIH0sIHsgMHgyNTgwLCAweDI1OEYgfSwgeyAweDI1OTIsIDB4MjU5NSB9LAorICAgIHsgMHgyNUEwLCAweDI1QTEgfSwgeyAweDI1QTMsIDB4MjVBOSB9LCB7IDB4MjVCMiwgMHgyNUIzIH0sCisgICAgeyAweDI1QjYsIDB4MjVCNyB9LCB7IDB4MjVCQywgMHgyNUJEIH0sIHsgMHgyNUMwLCAweDI1QzEgfSwKKyAgICB7IDB4MjVDNiwgMHgyNUM4IH0sIHsgMHgyNUNCLCAweDI1Q0IgfSwgeyAweDI1Q0UsIDB4MjVEMSB9LAorICAgIHsgMHgyNUUyLCAweDI1RTUgfSwgeyAweDI1RUYsIDB4MjVFRiB9LCB7IDB4MjYwNSwgMHgyNjA2IH0sCisgICAgeyAweDI2MDksIDB4MjYwOSB9LCB7IDB4MjYwRSwgMHgyNjBGIH0sIHsgMHgyNjE0LCAweDI2MTUgfSwKKyAgICB7IDB4MjYxQywgMHgyNjFDIH0sIHsgMHgyNjFFLCAweDI2MUUgfSwgeyAweDI2NDAsIDB4MjY0MCB9LAorICAgIHsgMHgyNjQyLCAweDI2NDIgfSwgeyAweDI2NjAsIDB4MjY2MSB9LCB7IDB4MjY2MywgMHgyNjY1IH0sCisgICAgeyAweDI2NjcsIDB4MjY2QSB9LCB7IDB4MjY2QywgMHgyNjZEIH0sIHsgMHgyNjZGLCAweDI2NkYgfSwKKyAgICB7IDB4MjczRCwgMHgyNzNEIH0sIHsgMHgyNzc2LCAweDI3N0YgfSwgeyAweEUwMDAsIDB4RjhGRiB9LAorICAgIHsgMHhGRkZELCAweEZGRkQgfSwgeyAweEYwMDAwLCAweEZGRkZEIH0sIHsgMHgxMDAwMDAsIDB4MTBGRkZEIH0KKyAgfTsKKworICAvKiBiaW5hcnkgc2VhcmNoIGluIHRhYmxlIG9mIG5vbi1zcGFjaW5nIGNoYXJhY3RlcnMgKi8KKyAgaWYgKGJpc2VhcmNoKHVjcywgYW1iaWd1b3VzLAorCSAgICAgICBzaXplb2YoYW1iaWd1b3VzKSAvIHNpemVvZihzdHJ1Y3QgaW50ZXJ2YWwpIC0gMSkpCisgICAgcmV0dXJuIDI7CisKKyAgcmV0dXJuIG1rX3djd2lkdGgodWNzKTsKK30KKworCitpbnQgbWtfd2Nzd2lkdGhfY2prKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQoreworICBpbnQgdywgd2lkdGggPSAwOworCisgIGZvciAoOypwd2NzICYmIG4tLSA+IDA7IHB3Y3MrKykKKyAgICBpZiAoKHcgPSBta193Y3dpZHRoX2NqaygqcHdjcykpIDwgMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICB3aWR0aCArPSB3OworCisgIHJldHVybiB3aWR0aDsKK30KZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX2FkZF93Y2guYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2FkZF93Y2guYwppbmRleCA5M2I0MWJiLi4zOGQzMTMwIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9hZGRfd2NoLmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfYWRkX3djaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsMzkgKzM1LDM4NyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9hZGRfd2NoLmMsdiAxLjYgMjAwNi8xMi8wMiAyMToxOToxNyB0b20gRXhwICQiKQorI2lmIEhBVkVfV0NUWVBFX0gKKyNpbmNsdWRlIDx3Y3R5cGUuaD4KKyNlbmRpZgorCitNT0RVTEVfSUQoIiRJZDogbGliX2FkZF93Y2guYyx2IDEuMTIgMjAxMS8wMy8yMiAwOTozMToxNSBQZXRyLlBhdmx1IEV4cCAkIikKKworLyogY2xvbmUvYWRhcHQgbGliX2FkZGNoLmMgKi8KK3N0YXRpYyBjb25zdCBjY2hhcl90IGJsYW5rY2hhciA9IE5ld0NoYXIoQkxBTktfVEVYVCk7CisKKy8qCisgKiBVZ2x5IG1pY3JvdHdlYWtpbmcgYWxlcnQuICBFdmVyeXRoaW5nIGZyb20gaGVyZSB0byBlbmQgb2YgbW9kdWxlIGlzCisgKiBsaWtlbHkgdG8gYmUgc3BlZWQtY3JpdGljYWwgLS0gcHJvZmlsaW5nIGRhdGEgc3VyZSBzYXlzIGl0IGlzIQorICogTW9zdCBvZiB0aGUgaW1wb3J0YW50IHNjcmVlbi1wYWludGluZyBmdW5jdGlvbnMgYXJlIHNoZWxscyBhcm91bmQKKyAqIHdhZGRfd2NoKCkuICBTbyB3ZSBtYWtlIGV2ZXJ5IGVmZm9ydCB0byByZWR1Y2UgZnVuY3Rpb24tY2FsbCBvdmVyaGVhZAorICogYnkgaW5saW5pbmcgc3R1ZmYsIGV2ZW4gYXQgdGhlIGNvc3Qgb2YgbWFraW5nIHdyYXBwZWQgY29waWVzIGZvcgorICogZXhwb3J0LiAgQWxzbyB3ZSBzdXBwbHkgc29tZSBpbnRlcm5hbCB2ZXJzaW9ucyB0aGF0IGRvbid0IGNhbGwgdGhlCisgKiB3aW5kb3cgc3luYyBob29rLCBmb3IgdXNlIGJ5IHN0cmluZy1wdXQgZnVuY3Rpb25zLgorICovCisKKy8qIFJldHVybiBiaXQgbWFzayBmb3IgY2xlYXJpbmcgY29sb3IgcGFpciBudW1iZXIgaWYgZ2l2ZW4gY2ggaGFzIGNvbG9yICovCisjZGVmaW5lIENPTE9SX01BU0soY2gpICh+KGF0dHJfdCkoKGNoKSAmIEFfQ09MT1IgPyBBX0NPTE9SIDogMCkpCisKK3N0YXRpYyBOQ1VSU0VTX0lOTElORSBjY2hhcl90CityZW5kZXJfY2hhcihXSU5ET1cgKndpbiwgY2NoYXJfdCBjaCkKKy8qIGNvbXB1dGUgYSByZW5kaXRpb24gb2YgdGhlIGdpdmVuIGNoYXIgY29ycmVjdCBmb3IgdGhlIGN1cnJlbnQgY29udGV4dCAqLworeworICAgIGF0dHJfdCBhID0gV0lORE9XX0FUVFJTKHdpbik7CisgICAgaW50IHBhaXIgPSBHZXRQYWlyKGNoKTsKKworICAgIGlmIChJU0JMQU5LKGNoKQorCSYmIEF0dHJPZihjaCkgPT0gQV9OT1JNQUwKKwkmJiBwYWlyID09IDApIHsKKwkvKiBjb2xvci9wYWlyIGluIGF0dHJzIGhhcyBwcmVjZWRlbmNlIG92ZXIgYmtncm5kICovCisJY2ggPSB3aW4tPl9uY19ia2dkOworCVNldEF0dHIoY2gsIGEgfCBBdHRyT2Yod2luLT5fbmNfYmtnZCkpOworCWlmICgocGFpciA9IEdFVF9XSU5ET1dfUEFJUih3aW4pKSA9PSAwKQorCSAgICBwYWlyID0gR2V0UGFpcih3aW4tPl9uY19ia2dkKTsKKwlTZXRQYWlyKGNoLCBwYWlyKTsKKyAgICB9IGVsc2UgeworCS8qIGNvbG9yIGluIGF0dHJzIGhhcyBwcmVjZWRlbmNlIG92ZXIgYmtncm5kICovCisJYSB8PSBBdHRyT2Yod2luLT5fbmNfYmtnZCkgJiBDT0xPUl9NQVNLKGEpOworCS8qIGNvbG9yIGluIGNoIGhhcyBwcmVjZWRlbmNlICovCisJaWYgKHBhaXIgPT0gMCkgeworCSAgICBpZiAoKHBhaXIgPSBHRVRfV0lORE9XX1BBSVIod2luKSkgPT0gMCkKKwkJcGFpciA9IEdldFBhaXIod2luLT5fbmNfYmtnZCk7CisJfQorCUFkZEF0dHIoY2gsIChhICYgQ09MT1JfTUFTSyhBdHRyT2YoY2gpKSkpOworCVNldFBhaXIoY2gsIHBhaXIpOworICAgIH0KKworICAgIFRSKFRSQUNFX1ZJUlRQVVQsCisgICAgICAgKCJyZW5kZXJfY2hhciBia2cgJXMgKCVkKSwgYXR0cnMgJXMgKCVkKSAtPiBjaCAlcyAoJWQpIiwKKwlfdHJhY2VjaF90MigxLCBDSFJFRih3aW4tPl9uY19ia2dkKSksCisJR2V0UGFpcih3aW4tPl9uY19ia2dkKSwKKwlfdHJhY2VhdHRyKFdJTkRPV19BVFRSUyh3aW4pKSwKKwlHRVRfV0lORE9XX1BBSVIod2luKSwKKwlfdHJhY2VjaF90MigzLCBDSFJFRihjaCkpLAorCUdldFBhaXIoY2gpKSk7CisKKyAgICByZXR1cm4gKGNoKTsKK30KKworLyogY2hlY2sgaWYgcG9zaXRpb24gaXMgbGVnYWw7IGlmIG5vdCwgcmV0dXJuIGVycm9yICovCisjaWZuZGVmIE5ERUJVRwkJCS8qIHRyZWF0IHRoaXMgbGlrZSBhbiBhc3NlcnRpb24gKi8KKyNkZWZpbmUgQ0hFQ0tfUE9TSVRJT04od2luLCB4LCB5KSBcCisJaWYgKHkgPiB3aW4tPl9tYXh5IFwKKwkgfHwgeCA+IHdpbi0+X21heHggXAorCSB8fCB5IDwgMCBcCisJIHx8IHggPCAwKSB7IFwKKwkJVFIoVFJBQ0VfVklSVFBVVCwgKCJBbGVydCEgV2luPSVwIF9jdXJ4ID0gJWQsIF9jdXJ5ID0gJWQgIiBcCisJCQkJICAgIihfbWF4eCA9ICVkLCBfbWF4eSA9ICVkKSIsIHdpbiwgeCwgeSwgXAorCQkJCSAgIHdpbi0+X21heHgsIHdpbi0+X21heHkpKTsgXAorCQlyZXR1cm4oRVJSKTsgXAorCX0KKyNlbHNlCisjZGVmaW5lIENIRUNLX1BPU0lUSU9OKHdpbiwgeCwgeSkJLyogbm90aGluZyAqLworI2VuZGlmCisKK3N0YXRpYyBib29sCituZXdsaW5lX2ZvcmNlc19zY3JvbGwoV0lORE9XICp3aW4sIE5DVVJTRVNfU0laRV9UICogeXBvcykKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaWYgKCp5cG9zID49IHdpbi0+X3JlZ3RvcCAmJiAqeXBvcyA9PSB3aW4tPl9yZWdib3R0b20pIHsKKwkqeXBvcyA9IHdpbi0+X3JlZ2JvdHRvbTsKKwlyZXN1bHQgPSBUUlVFOworICAgIH0gZWxzZSB7CisJKnlwb3MgPSAoTkNVUlNFU19TSVpFX1QpICgqeXBvcyArIDEpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogVGhlIF9XUkFQUEVEIGZsYWcgaXMgdXNlZnVsIG9ubHkgZm9yIHRlbGxpbmcgYW4gYXBwbGljYXRpb24gdGhhdCB3ZSd2ZSBqdXN0CisgKiB3cmFwcGVkIHRoZSBjdXJzb3IuICBXZSBkb24ndCBkbyBhbnl0aGluZyB3aXRoIHRoaXMgZmxhZyBleGNlcHQgc2V0IGl0IHdoZW4KKyAqIHdyYXBwaW5nLCBhbmQgY2xlYXIgaXQgd2hlbmV2ZXIgd2UgbW92ZSB0aGUgY3Vyc29yLiAgSWYgd2UgdHJ5IHRvIHdyYXAgYXQKKyAqIHRoZSBsb3dlci1yaWdodCBjb3JuZXIgb2YgYSB3aW5kb3csIHdlIGNhbm5vdCBtb3ZlIHRoZSBjdXJzb3IgKHNpbmNlIHRoYXQKKyAqIHdvdWxkbid0IGJlIGxlZ2FsKS4gIFNvIHdlIHJldHVybiBhbiBlcnJvciAod2hpY2ggaXMgd2hhdCBTVnI0IGRvZXMpLiAKKyAqIFVubGlrZSBTVnI0LCB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IGFkZCBhIGNoYXJhY3RlciB0byB0aGUgbG93ZXItcmlnaHQgY29ybmVyCisgKiAoU29sYXJpcyAyLjYgZG9lcyB0aGlzIGFsc28sIGhvd2V2ZXIpLgorICovCitzdGF0aWMgaW50Cit3cmFwX3RvX25leHRfbGluZShXSU5ET1cgKndpbikKK3sKKyAgICB3aW4tPl9mbGFncyB8PSBfV1JBUFBFRDsKKyAgICBpZiAobmV3bGluZV9mb3JjZXNfc2Nyb2xsKHdpbiwgJih3aW4tPl9jdXJ5KSkpIHsKKwl3aW4tPl9jdXJ4ID0gd2luLT5fbWF4eDsKKwlpZiAoIXdpbi0+X3Njcm9sbCkKKwkgICAgcmV0dXJuIChFUlIpOworCXNjcm9sbCh3aW4pOworICAgIH0KKyAgICB3aW4tPl9jdXJ4ID0gMDsKKyAgICByZXR1cm4gKE9LKTsKK30KKworc3RhdGljIGludCB3YWRkX3djaF9saXRlcmFsKFdJTkRPVyAqLCBjY2hhcl90KTsKKy8qCisgKiBGaWxsIHRoZSBnaXZlbiBudW1iZXIgb2YgY2VsbHMgd2l0aCBibGFua3MgdXNpbmcgdGhlIGN1cnJlbnQgYmFja2dyb3VuZAorICogcmVuZGl0aW9uLiAgVGhpcyBzYXZlcy9yZXN0b3JlcyB0aGUgY3VycmVudCB4LXBvc2l0aW9uLgorICovCitzdGF0aWMgdm9pZAorZmlsbF9jZWxscyhXSU5ET1cgKndpbiwgaW50IGNvdW50KQoreworICAgIGNjaGFyX3QgYmxhbmsgPSBibGFua2NoYXI7CisgICAgaW50IHNhdmVfeCA9IHdpbi0+X2N1cng7CisgICAgaW50IHNhdmVfeSA9IHdpbi0+X2N1cnk7CisKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKwlpZiAod2FkZF93Y2hfbGl0ZXJhbCh3aW4sIGJsYW5rKSA9PSBFUlIpCisJICAgIGJyZWFrOworICAgIH0KKyAgICB3aW4tPl9jdXJ4ID0gKE5DVVJTRVNfU0laRV9UKSBzYXZlX3g7CisgICAgd2luLT5fY3VyeSA9IChOQ1VSU0VTX1NJWkVfVCkgc2F2ZV95OworfQorCitzdGF0aWMgaW50Cit3YWRkX3djaF9saXRlcmFsKFdJTkRPVyAqd2luLCBjY2hhcl90IGNoKQoreworICAgIGludCB4OworICAgIGludCB5OworICAgIHN0cnVjdCBsZGF0ICpsaW5lOworCisgICAgeCA9IHdpbi0+X2N1cng7CisgICAgeSA9IHdpbi0+X2N1cnk7CisKKyAgICBDSEVDS19QT1NJVElPTih3aW4sIHgsIHkpOworCisgICAgY2ggPSByZW5kZXJfY2hhcih3aW4sIGNoKTsKKworICAgIGxpbmUgPSB3aW4tPl9saW5lICsgeTsKKworICAgIENIQU5HRURfQ0VMTChsaW5lLCB4KTsKKworICAgIC8qCisgICAgICogTm9uLXNwYWNpbmcgY2hhcmFjdGVycyBhcmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgY2VsbC4KKyAgICAgKgorICAgICAqIFNwYWNpbmcgY2hhcmFjdGVycyB0aGF0IGFyZSB3aWRlciB0aGFuIG9uZSBjb2x1bW4gcmVxdWlyZSBzb21lIGRpc3BsYXkKKyAgICAgKiBhZGp1c3RtZW50cy4KKyAgICAgKi8KKyAgICB7CisJaW50IGxlbiA9IHdjd2lkdGgoQ2hhck9mKGNoKSk7CisJaW50IGk7CisJaW50IGo7CisJd2NoYXJfdCAqY2hhcnM7CisKKwlpZiAobGVuID09IDApIHsJCS8qIG5vbi1zcGFjaW5nICovCisJICAgIGlmICgoeCA+IDAgJiYgeSA+PSAwKQorCQl8fCAod2luLT5fbWF4eCA+PSAwICYmIHdpbi0+X2N1cnkgPj0gMSkpIHsKKwkJaWYgKHggPiAwICYmIHkgPj0gMCkKKwkJICAgIGNoYXJzID0gKHdpbi0+X2xpbmVbeV0udGV4dFt4IC0gMV0uY2hhcnMpOworCQllbHNlCisJCSAgICBjaGFycyA9ICh3aW4tPl9saW5lW3kgLSAxXS50ZXh0W3dpbi0+X21heHhdLmNoYXJzKTsKKwkJZm9yIChpID0gMDsgaSA8IENDSEFSV19NQVg7ICsraSkgeworCQkgICAgaWYgKGNoYXJzW2ldID09IDApIHsKKwkJCVRSKFRSQUNFX1ZJUlRQVVQsCisJCQkgICAoImFkZGVkIG5vbi1zcGFjaW5nICVkOiAleCIsCisJCQkgICAgeCwgKGludCkgQ2hhck9mKGNoKSkpOworCQkJY2hhcnNbaV0gPSBDaGFyT2YoY2gpOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBnb3RvIHRlc3R3cmFwcGluZzsKKwl9IGVsc2UgaWYgKGxlbiA+IDEpIHsJLyogbXVsdGktY29sdW1uIGNoYXJhY3RlcnMgKi8KKwkgICAgLyoKKwkgICAgICogQ2hlY2sgaWYgdGhlIGNoYXJhY3RlciB3aWxsIGZpdCBvbiB0aGUgY3VycmVudCBsaW5lLiAgSWYgaXQgZG9lcworCSAgICAgKiBub3QgZml0LCBmaWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUgd2l0aCBibGFua3MuICBhbmQKKwkgICAgICogbW92ZSB0byB0aGUgbmV4dCBsaW5lLgorCSAgICAgKi8KKwkgICAgaWYgKGxlbiA+IHdpbi0+X21heHggKyAxKSB7CisJCVRSKFRSQUNFX1ZJUlRQVVQsICgiY2hhcmFjdGVyIHdpbGwgbm90IGZpdCIpKTsKKwkJcmV0dXJuIEVSUjsKKwkgICAgfSBlbHNlIGlmICh4ICsgbGVuID4gd2luLT5fbWF4eCArIDEpIHsKKwkJaW50IGNvdW50ID0gd2luLT5fbWF4eCArIDEgLSB4OworCQlUUihUUkFDRV9WSVJUUFVULCAoImZpbGwgJWQgcmVtYWluaW5nIGNlbGxzIiwgY291bnQpKTsKKwkJZmlsbF9jZWxscyh3aW4sIGNvdW50KTsKKwkJaWYgKHdyYXBfdG9fbmV4dF9saW5lKHdpbikgPT0gRVJSKQorCQkgICAgcmV0dXJuIEVSUjsKKwkJeCA9IHdpbi0+X2N1cng7CisJCXkgPSB3aW4tPl9jdXJ5OworCQlsaW5lID0gd2luLT5fbGluZSArIHk7CisJICAgIH0KKwkgICAgLyoKKwkgICAgICogQ2hlY2sgZm9yIGNlbGxzIHdoaWNoIGFyZSBvcnBoYW5lZCBieSBhZGRpbmcgdGhpcyBjaGFyYWN0ZXIsIHNldAorCSAgICAgKiB0aG9zZSB0byBibGFua3MuCisJICAgICAqCisJICAgICAqIEZJWE1FOiB0aGlzIGFjdHVhbGx5IGNvdWxkIGZpbGwgai1pIGNlbGxzLCBtb3JlIGNvbXBsaWNhdGVkIHRvCisJICAgICAqIHNldHVwIHRob3VnaC4KKwkgICAgICovCisJICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworCQlpZiAoaXNXaWRlY0Jhc2Uod2luLT5fbGluZVt5XS50ZXh0W3ggKyBpXSkpIHsKKwkJICAgIGJyZWFrOworCQl9IGVsc2UgaWYgKGlzV2lkZWNFeHQod2luLT5fbGluZVt5XS50ZXh0W3ggKyBpXSkpIHsKKwkJICAgIGZvciAoaiA9IGk7IHggKyBqIDw9IHdpbi0+X21heHg7ICsraikgeworCQkJaWYgKCFpc1dpZGVjRXh0KHdpbi0+X2xpbmVbeV0udGV4dFt4ICsgal0pKSB7CisJCQkgICAgVFIoVFJBQ0VfVklSVFBVVCwgKCJmaWxsICVkIG9ycGhhbiBjZWxscyIsIGopKTsKKwkJCSAgICBmaWxsX2NlbGxzKHdpbiwgaik7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIC8qCisJICAgICAqIEZpbmFsbHksIGFkZCB0aGUgY2VsbHMgZm9yIHRoaXMgY2hhcmFjdGVyLgorCSAgICAgKi8KKwkgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisJCWNjaGFyX3QgdmFsdWUgPSBjaDsKKwkJU2V0V2lkZWNFeHQodmFsdWUsIGkpOworCQlUUihUUkFDRV9WSVJUUFVULCAoIm11bHRpY29sdW1uICVkOiVkICglZCwlZCkiLAorCQkJCSAgIGkgKyAxLCBsZW4sCisJCQkJICAgd2luLT5fYmVneSArIHksIHdpbi0+X2JlZ3ggKyB4KSk7CisJCWxpbmUtPnRleHRbeF0gPSB2YWx1ZTsKKwkJQ0hBTkdFRF9DRUxMKGxpbmUsIHgpOworCQkrK3g7CisJICAgIH0KKwkgICAgZ290byB0ZXN0d3JhcHBpbmc7CisJfQorICAgIH0KKworICAgIC8qCisgICAgICogU2luZ2xlLWNvbHVtbiBjaGFyYWN0ZXJzLgorICAgICAqLworICAgIGxpbmUtPnRleHRbeCsrXSA9IGNoOworICAgIC8qCisgICAgICogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgZm9yIHdpZGUtY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgdGVzdHdyYXBwaW5nOgorCisgICAgVFIoVFJBQ0VfVklSVFBVVCwgKCJjZWxsICglbGQsICVsZC4uJWQpID0gJXMiLAorCQkgICAgICAgKGxvbmcpIHdpbi0+X2N1cnksIChsb25nKSB3aW4tPl9jdXJ4LCB4IC0gMSwKKwkJICAgICAgIF90cmFjZWNoX3QoQ0hSRUYoY2gpKSkpOworCisgICAgaWYgKHggPiB3aW4tPl9tYXh4KSB7CisJcmV0dXJuIHdyYXBfdG9fbmV4dF9saW5lKHdpbik7CisgICAgfQorICAgIHdpbi0+X2N1cnggPSAoTkNVUlNFU19TSVpFX1QpIHg7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0aWMgTkNVUlNFU19JTkxJTkUgaW50Cit3YWRkX3djaF9ub3N5bmMoV0lORE9XICp3aW4sIGNjaGFyX3QgY2gpCisvKiB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIC0tIGFkZCBhIGNoYXJhY3RlciB0byB0aGUgZ2l2ZW4gd2luZG93ICovCit7CisgICAgTkNVUlNFU19TSVpFX1QgeCwgeTsKKyAgICB3Y2hhcl90ICpzOworICAgIGludCB0YWJzaXplID0gODsKKyNpZiBVU0VfUkVFTlRSQU5UCisgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBJZiB3ZSBhcmUgdXNpbmcgdGhlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0LCBmb3JnZXQgYWJvdXQgbG9jYWxlLgorICAgICAqIE90aGVyd2lzZSwgaWYgdGhlIGxvY2FsZSBjbGFpbXMgdGhlIGNvZGUgaXMgcHJpbnRhYmxlLCB0cmVhdCBpdCB0aGF0CisgICAgICogd2F5LgorICAgICAqLworICAgIGlmICgoQXR0ck9mKGNoKSAmIEFfQUxUQ0hBUlNFVCkKKwl8fCBpc3dwcmludCgod2ludF90KSBDaGFyT2YoY2gpKSkKKwlyZXR1cm4gd2FkZF93Y2hfbGl0ZXJhbCh3aW4sIGNoKTsKKworICAgIC8qCisgICAgICogSGFuZGxlIGNhcnJpYWdlIGNvbnRyb2wgYW5kIG90aGVyIGNvZGVzIHRoYXQgYXJlIG5vdCBwcmludGFibGUsIG9yIGFyZQorICAgICAqIGtub3duIHRvIGV4cGFuZCB0byBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gdW5jdHJsKCkuCisgICAgICovCisgICAgeCA9IHdpbi0+X2N1cng7CisgICAgeSA9IHdpbi0+X2N1cnk7CisKKyAgICBzd2l0Y2ggKENoYXJPZihjaCkpIHsKKyAgICBjYXNlICdcdCc6CisjaWYgVVNFX1JFRU5UUkFOVAorCXRhYnNpemUgPSAqcHRyVGFic2l6ZShzcCk7CisjZWxzZQorCXRhYnNpemUgPSBUQUJTSVpFOworI2VuZGlmCisJeCA9IChOQ1VSU0VTX1NJWkVfVCkgKHggKyAodGFic2l6ZSAtICh4ICUgdGFic2l6ZSkpKTsKKwkvKgorCSAqIFNwYWNlLWZpbGwgdGhlIHRhYiBvbiB0aGUgYm90dG9tIGxpbmUgc28gdGhhdCB3ZSdsbCBnZXQgdGhlCisJICogImNvcnJlY3QiIGN1cnNvciBwb3NpdGlvbi4KKwkgKi8KKwlpZiAoKCF3aW4tPl9zY3JvbGwgJiYgKHkgPT0gd2luLT5fcmVnYm90dG9tKSkKKwkgICAgfHwgKHggPD0gd2luLT5fbWF4eCkpIHsKKwkgICAgY2NoYXJfdCBibGFuayA9IGJsYW5rY2hhcjsKKwkgICAgQWRkQXR0cihibGFuaywgQXR0ck9mKGNoKSk7CisJICAgIHdoaWxlICh3aW4tPl9jdXJ4IDwgeCkgeworCQlpZiAod2FkZF93Y2hfbGl0ZXJhbCh3aW4sIGJsYW5rKSA9PSBFUlIpCisJCSAgICByZXR1cm4gKEVSUik7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfSBlbHNlIHsKKwkgICAgd2NscnRvZW9sKHdpbik7CisJICAgIHdpbi0+X2ZsYWdzIHw9IF9XUkFQUEVEOworCSAgICBpZiAobmV3bGluZV9mb3JjZXNfc2Nyb2xsKHdpbiwgJnkpKSB7CisJCXggPSB3aW4tPl9tYXh4OworCQlpZiAod2luLT5fc2Nyb2xsKSB7CisJCSAgICBzY3JvbGwod2luKTsKKwkJICAgIHggPSAwOworCQl9CisJICAgIH0gZWxzZSB7CisJCXggPSAwOworCSAgICB9CisJfQorCWJyZWFrOworICAgIGNhc2UgJ1xuJzoKKwl3Y2xydG9lb2wod2luKTsKKwlpZiAobmV3bGluZV9mb3JjZXNfc2Nyb2xsKHdpbiwgJnkpKSB7CisJICAgIGlmICh3aW4tPl9zY3JvbGwpCisJCXNjcm9sbCh3aW4pOworCSAgICBlbHNlCisJCXJldHVybiAoRVJSKTsKKwl9CisJLyogRkFMTFRIUlUgKi8KKyAgICBjYXNlICdccic6CisJeCA9IDA7CisJd2luLT5fZmxhZ3MgJj0gfl9XUkFQUEVEOworCWJyZWFrOworICAgIGNhc2UgJ1xiJzoKKwlpZiAoeCA9PSAwKQorCSAgICByZXR1cm4gKE9LKTsKKwl4LS07CisJd2luLT5fZmxhZ3MgJj0gfl9XUkFQUEVEOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJaWYgKChzID0gd3VuY3RybCgmY2gpKSAhPSAwKSB7CisJICAgIHdoaWxlICgqcykgeworCQljY2hhcl90IHNjaDsKKwkJU2V0Q2hhcihzY2gsICpzKyssIEF0dHJPZihjaCkpOworCQlpZl9FWFRfQ09MT1JTKFNldFBhaXIoc2NoLCBHZXRQYWlyKGNoKSkpOworCQlpZiAod2FkZF93Y2hfbGl0ZXJhbCh3aW4sIHNjaCkgPT0gRVJSKQorCQkgICAgcmV0dXJuIEVSUjsKKwkgICAgfQorCSAgICByZXR1cm4gT0s7CisJfQorCXJldHVybiBFUlI7CisgICAgfQorCisgICAgd2luLT5fY3VyeCA9IHg7CisgICAgd2luLT5fY3VyeSA9IHk7CisKKyAgICByZXR1cm4gT0s7Cit9CisKKy8qCisgKiBUaGUgdmVyc2lvbnMgYmVsb3cgY2FsbCBfbmNfc3luY2hvb2soKS4gIFdlIHdhbnRlZCB0byBhdm9pZCB0aGlzIGluIHRoZQorICogdmVyc2lvbiBleHBvcnRlZCBmb3Igc3RyaW5nIHB1dHM7IHRoZXknbGwgY2FsbCBfbmNfc3luY2hvb2sgb25jZSBhdCBlbmQKKyAqIG9mIHJ1bi4KKyAqLworCisvKiBUaGVzZSBhcmUgYWN0dWFsIGVudHJ5IHBvaW50cyAqLwogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3YWRkX3djaChXSU5ET1cgKndpbiwgY29uc3QgY2NoYXJfdCAqd2NoKQogewotICAgIFBVVENfREFUQTsKLSAgICBpbnQgbjsKICAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX0NBTExFRCgid2FkZF93Y2goJXAsICVzKSIpLCB3aW4sCi0JCQkJICAgICAgX3RyYWNlY2hfdCh3Y2gpKSk7CisgICAgVFIoVFJBQ0VfVklSVFBVVCB8IFRSQUNFX0NDQUxMUywgKFRfQ0FMTEVEKCJ3YWRkX3djaCglcCwgJXMpIiksCisJCQkJICAgICAgKHZvaWQgKikgd2luLAorCQkJCSAgICAgIF90cmFjZWNjaGFyX3Qod2NoKSkpOwogCi0gICAgaWYgKHdpbiAhPSAwKSB7Ci0JUFVUQ19JTklUOwotCWZvciAoUFVUQ19pID0gMDsgUFVUQ19pIDwgQ0NIQVJXX01BWDsgKytQVVRDX2kpIHsKLQkgICAgYXR0cl90IGF0dHJzID0gKHdjaC0+YXR0ciAmIEFfQVRUUklCVVRFUyk7Ci0KLQkgICAgaWYgKChQVVRDX2NoID0gd2NoLT5jaGFyc1tQVVRDX2ldKSA9PSBMJ1wwJykKLQkJYnJlYWs7Ci0JICAgIGlmICgoUFVUQ19uID0gd2NydG9tYihQVVRDX2J1ZiwgUFVUQ19jaCwgJlBVVF9zdCkpIDw9IDApIHsKLQkJY29kZSA9IEVSUjsKLQkJaWYgKGlzOGJpdHMoUFVUQ19jaCkpCi0JCSAgICBjb2RlID0gd2FkZGNoKHdpbiwgVUNoYXIoUFVUQ19jaCkgfCBhdHRycyk7Ci0JCWJyZWFrOwotCSAgICB9Ci0JICAgIGZvciAobiA9IDA7IG4gPCBQVVRDX247IG4rKykgewotCQlpZiAoKGNvZGUgPSB3YWRkY2god2luLCBVQ2hhcihQVVRDX2J1ZltuXSkgfCBhdHRycykpID09IEVSUikgewotCQkgICAgYnJlYWs7Ci0JCX0KLQkgICAgfQotCSAgICBpZiAoY29kZSA9PSBFUlIpCi0JCWJyZWFrOwotCX0KKyAgICBpZiAod2luICYmICh3YWRkX3djaF9ub3N5bmMod2luLCAqd2NoKSAhPSBFUlIpKSB7CisJX25jX3N5bmNob29rKHdpbik7CisJY29kZSA9IE9LOwogICAgIH0KIAogICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX1JFVFVSTigiJWQiKSwgY29kZSkpOwpAQCAtNzcsMzcgKzQyNSwxOSBAQAogTkNVUlNFU19FWFBPUlQoaW50KQogd2VjaG9fd2NoYXIoV0lORE9XICp3aW4sIGNvbnN0IGNjaGFyX3QgKndjaCkKIHsKLSAgICBQVVRDX0RBVEE7Ci0gICAgaW50IG47CiAgICAgaW50IGNvZGUgPSBFUlI7CiAKLSAgICBUUihUUkFDRV9WSVJUUFVUIHwgVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoIndlY2hvX3djaGFyKCVwLCAlcykiKSwgd2luLAotCQkJCSAgICAgIF90cmFjZWNoX3Qod2NoKSkpOworICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX0NBTExFRCgid2VjaG9jaGFyKCVwLCAlcykiKSwKKwkJCQkgICAgICAodm9pZCAqKSB3aW4sCisJCQkJICAgICAgX3RyYWNlY2NoYXJfdCh3Y2gpKSk7CiAKLSAgICBpZiAod2luICE9IDApIHsKLQlQVVRDX0lOSVQ7Ci0JZm9yIChQVVRDX2kgPSAwOyBQVVRDX2kgPCBDQ0hBUldfTUFYOyArK1BVVENfaSkgewotCSAgICBhdHRyX3QgYXR0cnMgPSAod2NoLT5hdHRyICYgQV9BVFRSSUJVVEVTKTsKLQotCSAgICBpZiAoKFBVVENfY2ggPSB3Y2gtPmNoYXJzW1BVVENfaV0pID09IEwnXDAnKQotCQlicmVhazsKLQkgICAgaWYgKChQVVRDX24gPSB3Y3J0b21iKFBVVENfYnVmLCBQVVRDX2NoLCAmUFVUX3N0KSkgPD0gMCkgewotCQljb2RlID0gRVJSOwotCQlpZiAoaXM4Yml0cyhQVVRDX2NoKSkKLQkJICAgIGNvZGUgPSB3YWRkY2god2luLCBVQ2hhcihQVVRDX2NoKSB8IGF0dHJzKTsKLQkJYnJlYWs7Ci0JICAgIH0KLQkgICAgZm9yIChuID0gMDsgbiA8IFBVVENfbjsgbisrKSB7Ci0JCWlmICgoY29kZSA9IHdhZGRjaCh3aW4sIFVDaGFyKFBVVENfYnVmW25dKSB8IGF0dHJzKSkgPT0gRVJSKSB7Ci0JCSAgICBicmVhazsKLQkJfQotCSAgICB9Ci0JICAgIGlmIChjb2RlID09IEVSUikKLQkJYnJlYWs7Ci0JfQotCXdyZWZyZXNoKHdpbik7CisgICAgaWYgKHdpbiAmJiAod2FkZF93Y2hfbm9zeW5jKHdpbiwgKndjaCkgIT0gRVJSKSkgeworCWJvb2wgc2F2ZV9pbW1lZCA9IHdpbi0+X2ltbWVkOworCXdpbi0+X2ltbWVkID0gVFJVRTsKKwlfbmNfc3luY2hvb2sod2luKTsKKwl3aW4tPl9pbW1lZCA9IHNhdmVfaW1tZWQ7CisJY29kZSA9IE9LOwogICAgIH0KLQogICAgIFRSKFRSQUNFX1ZJUlRQVVQgfCBUUkFDRV9DQ0FMTFMsIChUX1JFVFVSTigiJWQiKSwgY29kZSkpOwogICAgIHJldHVybiAoY29kZSk7CiB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9ib3hfc2V0LmMgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9ib3hfc2V0LmMKaW5kZXggMzVmY2U0Ni4uZjllNzAxZiAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfYm94X3NldC5jCisrKyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2JveF9zZXQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDksMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfYm94X3NldC5jLHYgMS40IDIwMDMvMTIvMDYgMTg6MDI6MTMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfYm94X3NldC5jLHYgMS42IDIwMTEvMDYvMjUgMTk6MDI6MDcgVmFzc2lsaS5Db3VyemFraXMgRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiB3Ym9yZGVyX3NldChXSU5ET1cgKndpbiwKQEAgLTUyLDggKzUyLDggQEAKICAgICBOQ1VSU0VTX1NJWkVfVCBlbmR4LCBlbmR5OwogICAgIE5DVVJTRVNfQ0hfVCB3bHMsIHdycywgd3RzLCB3YnMsIHd0bCwgd3RyLCB3YmwsIHdicjsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3Ym9yZGVyKCVwLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzKSIpLAotICAgICAgIHdpbiwKKyAgICBUKChUX0NBTExFRCgid2JvcmRlcl9zZXQoJXAsJXMsJXMsJXMsJXMsJXMsJXMsJXMsJXMpIiksCisgICAgICAgKHZvaWQgKikgd2luLAogICAgICAgIF90cmFjZWNoX3QyKDEsIGxzKSwKICAgICAgICBfdHJhY2VjaF90MigyLCBycyksCiAgICAgICAgX3RyYWNlY2hfdDIoMywgdHMpLApkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfY2NoYXIuYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2NjaGFyLmMKaW5kZXggYjRhMGMzNy4uNjU0YmViYiAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfY2NoYXIuYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9jY2hhci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA1LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9jY2hhci5jLHYgMS4xMiAyMDA3LzA1LzEyIDE5OjAzOjA2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2NjaGFyLmMsdiAxLjI3IDIwMTQvMDIvMDEgMjI6MTA6NDIgdG9tIEV4cCAkIikKIAogLyogCiAgKiBUaGUgU3VTdjIgZGVzY3JpcHRpb24gbGVhdmVzIHNvbWUgcm9vbSBmb3IgaW50ZXJwcmV0YXRpb24uICBXZSdsbCBhc3N1bWUgd2NoCkBAIC00NywyMCArNDcsMjAgQEAKIHNldGNjaGFyKGNjaGFyX3QgKndjdmFsLAogCSBjb25zdCB3Y2hhcl90ICp3Y2gsCiAJIGNvbnN0IGF0dHJfdCBhdHRycywKLQkgc2hvcnQgY29sb3JfcGFpciwKKwkgTkNVUlNFU19QQUlSU19UIGNvbG9yX3BhaXIsCiAJIGNvbnN0IHZvaWQgKm9wdHMpCiB7Ci0gICAgaW50IGk7Ci0gICAgaW50IGxlbjsKKyAgICB1bnNpZ25lZCBpOworICAgIHVuc2lnbmVkIGxlbjsKICAgICBpbnQgY29kZSA9IE9LOwogCiAgICAgVFIoVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoInNldGNjaGFyKCVwLCVzLCVsdSwlZCwlcCkiKSwKLQkJICAgICAgd2N2YWwsIF9uY192aXN3YnVmKHdjaCksCi0JCSAgICAgICh1bnNpZ25lZCBsb25nKSBhdHRycywgY29sb3JfcGFpciwgb3B0cykpOworCQkgICAgICAodm9pZCAqKSB3Y3ZhbCwgX25jX3Zpc3didWYod2NoKSwKKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIGF0dHJzLCAoaW50KSBjb2xvcl9wYWlyLCBvcHRzKSk7CiAKLSAgICBsZW4gPSB3Y3NsZW4od2NoKTsKICAgICBpZiAob3B0cyAhPSBOVUxMCi0JfHwgKGxlbiA+IDEgJiYgd2N3aWR0aCh3Y2hbMF0pIDwgMCkpIHsKKwl8fCB3Y2ggPT0gTlVMTAorCXx8ICgobGVuID0gKHVuc2lnbmVkKSB3Y3NsZW4od2NoKSkgPiAxICYmIHdjd2lkdGgod2NoWzBdKSA8IDApKSB7CiAJY29kZSA9IEVSUjsKICAgICB9IGVsc2UgewogCWlmIChsZW4gPiBDQ0hBUldfTUFYKQpAQCAtODAsNyArODAsNyBAQAogCW1lbXNldCh3Y3ZhbCwgMCwgc2l6ZW9mKCp3Y3ZhbCkpOwogCiAJaWYgKGxlbiAhPSAwKSB7Ci0JICAgIFNldEF0dHIoKndjdmFsLCBhdHRycyB8IENPTE9SX1BBSVIoY29sb3JfcGFpcikpOworCSAgICBTZXRBdHRyKCp3Y3ZhbCwgYXR0cnMpOwogCSAgICBTZXRQYWlyKENIREVSRUYod2N2YWwpLCBjb2xvcl9wYWlyKTsKIAkgICAgbWVtY3B5KCZ3Y3ZhbC0+Y2hhcnMsIHdjaCwgbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKIAkgICAgVFIoVFJBQ0VfQ0NBTExTLCAoImNvcHkgJWQgd2NoYXJzLCBmaXJzdCBpcyAlcyIsIGxlbiwKQEAgLTk2LDcgKzk2LDcgQEAKIGdldGNjaGFyKGNvbnN0IGNjaGFyX3QgKndjdmFsLAogCSB3Y2hhcl90ICp3Y2gsCiAJIGF0dHJfdCAqYXR0cnMsCi0JIHNob3J0ICpjb2xvcl9wYWlyLAorCSBOQ1VSU0VTX1BBSVJTX1QgKmNvbG9yX3BhaXIsCiAJIHZvaWQgKm9wdHMpCiB7CiAgICAgd2NoYXJfdCAqd3A7CkBAIC0xMDQsMjEgKzEwNCwyOSBAQAogICAgIGludCBjb2RlID0gRVJSOwogCiAgICAgVFIoVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoImdldGNjaGFyKCVwLCVwLCVwLCVwLCVwKSIpLAotCQkgICAgICB3Y3ZhbCwgd2NoLCBhdHRycywgY29sb3JfcGFpciwgb3B0cykpOworCQkgICAgICAoY29uc3Qgdm9pZCAqKSB3Y3ZhbCwKKwkJICAgICAgKHZvaWQgKikgd2NoLAorCQkgICAgICAodm9pZCAqKSBhdHRycywKKwkJICAgICAgKHZvaWQgKikgY29sb3JfcGFpciwKKwkJICAgICAgb3B0cykpOwogCi0gICAgaWYgKG9wdHMgPT0gTlVMTCkgewotCWxlbiA9ICh3cCA9IHdtZW1jaHIod2N2YWwtPmNoYXJzLCBMJ1wwJywgQ0NIQVJXX01BWCkpCi0JICAgID8gd3AgLSB3Y3ZhbC0+Y2hhcnMKLQkgICAgOiBDQ0hBUldfTUFYOworICAgIGlmIChvcHRzID09IE5VTEwgJiYgd2N2YWwgIT0gTlVMTCkgeworCWxlbiA9ICgod3AgPSB3bWVtY2hyKHdjdmFsLT5jaGFycywgTCdcMCcsIChzaXplX3QpIENDSEFSV19NQVgpKQorCSAgICAgICA/IChpbnQpICh3cCAtIHdjdmFsLT5jaGFycykKKwkgICAgICAgOiBDQ0hBUldfTUFYKTsKIAogCWlmICh3Y2ggPT0gTlVMTCkgewotCSAgICBjb2RlID0gbGVuOworCSAgICAvKgorCSAgICAgKiBJZiB0aGUgdmFsdWUgaXMgYSBudWxsLCBzZXQgdGhlIGxlbmd0aCB0byAxLgorCSAgICAgKiBJZiB0aGUgdmFsdWUgaXMgbm90IGEgbnVsbCwgcmV0dXJuIHRoZSBsZW5ndGggcGx1cyAxIGZvciBudWxsLgorCSAgICAgKi8KKwkgICAgY29kZSA9IChsZW4gPCBDQ0hBUldfTUFYKSA/IChsZW4gKyAxKSA6IENDSEFSV19NQVg7CiAJfSBlbHNlIGlmIChhdHRycyA9PSAwIHx8IGNvbG9yX3BhaXIgPT0gMCkgewogCSAgICBjb2RlID0gRVJSOwogCX0gZWxzZSBpZiAobGVuID49IDApIHsKIAkgICAgKmF0dHJzID0gQXR0ck9mKCp3Y3ZhbCkgJiBBX0FUVFJJQlVURVM7Ci0JICAgICpjb2xvcl9wYWlyID0gR2V0UGFpcigqd2N2YWwpOwotCSAgICB3bWVtY3B5KHdjaCwgd2N2YWwtPmNoYXJzLCAodW5zaWduZWQpIGxlbik7CisJICAgICpjb2xvcl9wYWlyID0gKE5DVVJTRVNfUEFJUlNfVCkgR2V0UGFpcigqd2N2YWwpOworCSAgICB3bWVtY3B5KHdjaCwgd2N2YWwtPmNoYXJzLCAoc2l6ZV90KSBsZW4pOwogCSAgICB3Y2hbbGVuXSA9IEwnXDAnOwogCSAgICBjb2RlID0gT0s7CiAJfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfZXJhc2V3Y2hhci5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfZXJhc2V3Y2hhci5jCmluZGV4IDdkNjQ1NTMuLmRkY2UyN2EgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvd2lkZWNoYXIvbGliX2VyYXNld2NoYXIuYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9lcmFzZXdjaGFyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2VyYXNld2NoYXIuYyx2IDEuMSAyMDAyLzA1LzExIDIwOjM4OjA2IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2VyYXNld2NoYXIuYyx2IDEuMyAyMDE0LzAyLzIzIDAxOjIxOjA4IHRvbSBFeHAgJCIpCiAKIC8qCiAgKgllcmFzZXdjaGFyKCkKQEAgLTQyLDE0ICs0MiwxNCBAQAogICovCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLWVyYXNld2NoYXIod2NoYXJfdCAqIHdjaCkKK2VyYXNld2NoYXIod2NoYXJfdCAqd2NoKQogewogICAgIGludCB2YWx1ZTsKICAgICBpbnQgcmVzdWx0ID0gRVJSOwogCiAgICAgVCgoVF9DQUxMRUQoImVyYXNld2NoYXIoKSIpKSk7CiAgICAgaWYgKCh2YWx1ZSA9IGVyYXNlY2hhcigpKSAhPSBFUlIpIHsKLQkqd2NoID0gdmFsdWU7CisJKndjaCA9ICh3Y2hhcl90KSB2YWx1ZTsKIAlyZXN1bHQgPSBPSzsKICAgICB9CiAgICAgcmV0dXJuQ29kZShyZXN1bHQpOwpAQCAtNjMsMTQgKzYzLDE0IEBACiAgKi8KIAogTkNVUlNFU19FWFBPUlQoaW50KQota2lsbHdjaGFyKHdjaGFyX3QgKiB3Y2gpCitraWxsd2NoYXIod2NoYXJfdCAqd2NoKQogewogICAgIGludCB2YWx1ZTsKICAgICBpbnQgcmVzdWx0ID0gRVJSOwogCiAgICAgVCgoVF9DQUxMRUQoImtpbGx3Y2hhcigpIikpKTsKICAgICBpZiAoKHZhbHVlID0ga2lsbGNoYXIoKSkgIT0gRVJSKSB7Ci0JKndjaCA9IHZhbHVlOworCSp3Y2ggPSAod2NoYXJfdCkgdmFsdWU7CiAJcmVzdWx0ID0gT0s7CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX2dldF93Y2guYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2dldF93Y2guYwppbmRleCA2Y2YzMTI5Li43MWQ1NjAzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9nZXRfd2NoLmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfZ2V0X3djaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDAsMjIgKzQwLDcgQEAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfZ2V0X3djaC5jLHYgMS4xNyAyMDA4LzA4LzE2IDE5OjIyOjU1IHRvbSBFeHAgJCIpCi0KLSNpZiBIQVZFX01CVE9XQyAmJiBIQVZFX01CTEVOCi0jZGVmaW5lIHJlc2V0X21ieXRlcyhzdGF0ZSkgbWJsZW4oTlVMTCwgMCksIG1idG93YyhOVUxMLCBOVUxMLCAwKQotI2RlZmluZSBjb3VudF9tYnl0ZXMoYnVmZmVyLGxlbmd0aCxzdGF0ZSkgbWJsZW4oYnVmZmVyLGxlbmd0aCkKLSNkZWZpbmUgY2hlY2tfbWJ5dGVzKHdjaCxidWZmZXIsbGVuZ3RoLHN0YXRlKSBcCi0JKGludCkgbWJ0b3djKCZ3Y2gsIGJ1ZmZlciwgbGVuZ3RoKQotI2RlZmluZSBzdGF0ZV91bnVzZWQKLSNlbGlmIEhBVkVfTUJSVE9XQyAmJiBIQVZFX01CUkxFTgotI2RlZmluZSByZXNldF9tYnl0ZXMoc3RhdGUpIGluaXRfbWIoc3RhdGUpCi0jZGVmaW5lIGNvdW50X21ieXRlcyhidWZmZXIsbGVuZ3RoLHN0YXRlKSBtYnJsZW4oYnVmZmVyLGxlbmd0aCwmc3RhdGUpCi0jZGVmaW5lIGNoZWNrX21ieXRlcyh3Y2gsYnVmZmVyLGxlbmd0aCxzdGF0ZSkgXAotCShpbnQpIG1icnRvd2MoJndjaCwgYnVmZmVyLCBsZW5ndGgsICZzdGF0ZSkKLSNlbHNlCi1tYWtlIGFuIGVycm9yCi0jZW5kaWYKK01PRFVMRV9JRCgiJElkOiBsaWJfZ2V0X3djaC5jLHYgMS4yMyAyMDExLzA1LzI4IDIzOjAwOjI5IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdnZXRfd2NoKFdJTkRPVyAqd2luLCB3aW50X3QgKnJlc3VsdCkKQEAgLTY1LDEzICs1MCwxMyBAQAogICAgIGNoYXIgYnVmZmVyWyhNQl9MRU5fTUFYICogOSkgKyAxXTsJLyogYWxsb3cgc29tZSByZWR1bmRhbnQgc2hpZnRzICovCiAgICAgaW50IHN0YXR1czsKICAgICBzaXplX3QgY291bnQgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CisgICAgaW50IHZhbHVlID0gMDsKICAgICB3Y2hhcl90IHdjaDsKICNpZm5kZWYgc3RhdGVfdW51c2VkCiAgICAgbWJzdGF0ZV90IHN0YXRlOwogI2VuZGlmCiAKLSAgICBUKChUX0NBTExFRCgid2dldF93Y2goJXApIiksIHdpbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3Z2V0X3djaCglcCkiKSwgKHZvaWQgKikgd2luKSk7CiAKICAgICAvKgogICAgICAqIFdlIGNhbiBnZXQgYSBzdHJlYW0gb2Ygc2luZ2xlLWJ5dGUgY2hhcmFjdGVycyBhbmQgS0VZX3h4eCBjb2RlcyBmcm9tCkBAIC05NSwxMiArODAsMTIgQEAKIAkJICogd2hldGhlciB0aGUgaW1wcm92ZW1lbnQgd291bGQgYmUgd29ydGggdGhlIGVmZm9ydC4KIAkJICovCiAJCWlmIChjb3VudCAhPSAwKSB7Ci0JCSAgICBfbmNfdW5nZXRjaChzcCwgKGludCkgdmFsdWUpOworCQkgICAgc2FmZV91bmdldGNoKFNQX1BBUk0sIHZhbHVlKTsKIAkJICAgIGNvZGUgPSBFUlI7CiAJCX0KIAkJYnJlYWs7CiAJICAgIH0gZWxzZSBpZiAoY291bnQgKyAxID49IHNpemVvZihidWZmZXIpKSB7Ci0JCV9uY191bmdldGNoKHNwLCAoaW50KSB2YWx1ZSk7CisJCXNhZmVfdW5nZXRjaChTUF9QQVJNLCB2YWx1ZSk7CiAJCWNvZGUgPSBFUlI7CiAJCWJyZWFrOwogCSAgICB9IGVsc2UgewpAQCAtMTExLDcgKzk2LDcgQEAKIAkJICAgIHJlc2V0X21ieXRlcyhzdGF0ZSk7CiAJCSAgICBpZiAoY2hlY2tfbWJ5dGVzKHdjaCwgYnVmZmVyLCBjb3VudCwgc3RhdGUpICE9IHN0YXR1cykgewogCQkJY29kZSA9IEVSUjsJLyogdGhlIHR3byBjYWxscyBzaG91bGQgbWF0Y2ggKi8KLQkJCV9uY191bmdldGNoKHNwLCAoaW50KSB2YWx1ZSk7CisJCQlzYWZlX3VuZ2V0Y2goU1BfUEFSTSwgdmFsdWUpOwogCQkgICAgfQogCQkgICAgdmFsdWUgPSB3Y2g7CiAJCSAgICBicmVhazsKQEAgLTEyMSw4ICsxMDYsMTEgQEAKICAgICB9IGVsc2UgewogCWNvZGUgPSBFUlI7CiAgICAgfQotICAgICpyZXN1bHQgPSB2YWx1ZTsKKworICAgIGlmIChyZXN1bHQgIT0gMCkKKwkqcmVzdWx0ID0gKHdpbnRfdCkgdmFsdWU7CisKICAgICBfbmNfdW5sb2NrX2dsb2JhbChjdXJzZXMpOwotICAgIFQoKCJyZXN1bHQgJSNsbyIsIHZhbHVlKSk7CisgICAgVCgoInJlc3VsdCAlI28iLCB2YWx1ZSkpOwogICAgIHJldHVybkNvZGUoY29kZSk7CiB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9nZXRfd3N0ci5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfZ2V0X3dzdHIuYwppbmRleCBiYWE3MGE1Li4yN2NkYWUwIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9nZXRfd3N0ci5jCisrKyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2dldF93c3RyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDQsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA5LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOCw5ICszOCw4IEBACiAqLwogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KLSNpbmNsdWRlIDx0ZXJtLmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfZ2V0X3dzdHIuYyx2IDEuMTAgMjAwOC8wOC8xNiAxOToyNTozMyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9nZXRfd3N0ci5jLHYgMS4xMyAyMDExLzEwLzIyIDE2OjMxOjM1IHRvbSBFeHAgJCIpCiAKIHN0YXRpYyBpbnQKIHdhZGRfd2ludChXSU5ET1cgKndpbiwgd2ludF90ICpzcmMpCkBAIC01MCw3ICs0OSw3IEBACiAKICAgICB3Y2hbMF0gPSAod2NoYXJfdCkgKCpzcmMpOwogICAgIHdjaFsxXSA9IDA7Ci0gICAgc2V0Y2NoYXIoJnRtcCwgd2NoLCBBX05PUk1BTCwgMCwgTlVMTCk7CisgICAgc2V0Y2NoYXIoJnRtcCwgd2NoLCBBX05PUk1BTCwgKHNob3J0KSAwLCBOVUxMKTsKICAgICByZXR1cm4gd2FkZF93Y2god2luLCAmdG1wKTsKIH0KIApAQCAtNTksNyArNTgsNyBAQAogICogb3Igb3RoZXIgY2hhcmFjdGVyLCBhbmQgaGFuZGxlcyByZXZlcnNlIHdyYXBhcm91bmQuCiAgKi8KIHN0YXRpYyB3aW50X3QgKgotV2lwZU91dChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCB3aW50X3QgKmZpcnN0LCB3aW50X3QgKmxhc3QsIGJvb2wgZWNob2VkKQorV2lwZU91dChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCB3aW50X3QgKmZpcnN0LCB3aW50X3QgKmxhc3QsIGludCBlY2hvZWQpCiB7CiAgICAgaWYgKGxhc3QgPiBmaXJzdCkgewogCSotLWxhc3QgPSAnXDAnOwpAQCAtOTYsNyArOTUsNyBAQAogICAgIHdpbnRfdCBjaDsKICAgICBpbnQgeSwgeCwgY29kZTsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3Z2V0bl93c3RyKCVwLCVwLCAlZCkiKSwgd2luLCBzdHIsIG1heGxlbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3Z2V0bl93c3RyKCVwLCVwLCAlZCkiKSwgKHZvaWQgKikgd2luLCAodm9pZCAqKSBzdHIsIG1heGxlbikpOwogCiAgICAgaWYgKCF3aW4pCiAJcmV0dXJuQ29kZShFUlIpOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfaGxpbmVfc2V0LmMgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9obGluZV9zZXQuYwppbmRleCA0MzE3NWRlLi5kYTkyYjgzIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9obGluZV9zZXQuYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9obGluZV9zZXQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDksMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDE2ICszOSwxNiBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9obGluZV9zZXQuYyx2IDEuMiAyMDAyLzAzLzIzIDIxOjM1OjM0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2hsaW5lX3NldC5jLHYgMS40IDIwMTAvMTIvMTkgMDE6NDU6MDMgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQotd2hsaW5lX3NldChXSU5ET1cgKndpbiwgY29uc3QgY2NoYXJfdCAqIGNoLCBpbnQgbikKK3dobGluZV9zZXQoV0lORE9XICp3aW4sIGNvbnN0IGNjaGFyX3QgKmNoLCBpbnQgbikKIHsKICAgICBpbnQgY29kZSA9IEVSUjsKLSAgICBOQ1VSU0VTX1NJWkVfVCBzdGFydDsKLSAgICBOQ1VSU0VTX1NJWkVfVCBlbmQ7CisgICAgaW50IHN0YXJ0OworICAgIGludCBlbmQ7CiAKLSAgICBUKChUX0NBTExFRCgid2hsaW5lX3NldCglcCwlcywlZCkiKSwgd2luLCBfdHJhY2VjY2hhcl90KGNoKSwgbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3aGxpbmVfc2V0KCVwLCVzLCVkKSIpLCAodm9pZCAqKSB3aW4sIF90cmFjZWNjaGFyX3QoY2gpLCBuKSk7CiAKICAgICBpZiAod2luKSB7CiAJc3RydWN0IGxkYXQgKmxpbmUgPSAmKHdpbi0+X2xpbmVbd2luLT5fY3VyeV0pOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfaW5fd2NoLmMgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbl93Y2guYwppbmRleCA1Y2Q5MmUzLi5iMjM5NjUwIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbl93Y2guYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbl93Y2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDYsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfaW5fd2NoLmMsdiAxLjQgMjAwNi8wOS8wMyAxNTo0MToyMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbl93Y2guYyx2IDEuNSAyMDA5LzEwLzI0IDIyOjM3OjU1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdpbl93Y2goV0lORE9XICp3aW4sIGNjaGFyX3QgKndjdmFsKQpAQCAtNDcsNyArNDcsNyBAQAogICAgIGludCByb3csIGNvbDsKICAgICBpbnQgY29kZSA9IE9LOwogCi0gICAgVFIoVFJBQ0VfQ0NBTExTLCAoVF9DQUxMRUQoIndpbl93Y2goJXAsJXApIiksIHdpbiwgd2N2YWwpKTsKKyAgICBUUihUUkFDRV9DQ0FMTFMsIChUX0NBTExFRCgid2luX3djaCglcCwlcCkiKSwgKHZvaWQgKikgd2luLCAodm9pZCAqKSB3Y3ZhbCkpOwogICAgIGlmICh3aW4gIT0gMAogCSYmIHdjdmFsICE9IDApIHsKIAlnZXR5eCh3aW4sIHJvdywgY29sKTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX2luX3djaG5zdHIuYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2luX3djaG5zdHIuYwppbmRleCBlOWYwNjQ2Li41N2NjMmNhIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbl93Y2huc3RyLmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfaW5fd2NobnN0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0LTIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNywyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzksMTQgKzM5LDE0IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX2luX3djaG5zdHIuYyx2IDEuNyAyMDA3LzAyLzExIDAxOjAwOjAwIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2luX3djaG5zdHIuYyx2IDEuOCAyMDA5LzEwLzI0IDIyOjM3OjQ4IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHdpbl93Y2huc3RyKFdJTkRPVyAqd2luLCBjY2hhcl90ICp3Y2hzdHIsIGludCBuKQogewogICAgIGludCBjb2RlID0gT0s7CiAKLSAgICBUKChUX0NBTExFRCgid2luX3djaG5zdHIoJXAsJXAsJWQpIiksIHdpbiwgd2Noc3RyLCBuKSk7CisgICAgVCgoVF9DQUxMRUQoIndpbl93Y2huc3RyKCVwLCVwLCVkKSIpLCAodm9pZCAqKSB3aW4sICh2b2lkICopIHdjaHN0ciwgbikpOwogICAgIGlmICh3aW4gIT0gMAogCSYmIHdjaHN0ciAhPSAwKSB7CiAJTkNVUlNFU19DSF9UICpzcmM7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbnNfd2NoLmMgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbnNfd2NoLmMKaW5kZXggYzNkMDQyMC4uMmFhNzFhNSAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfaW5zX3djaC5jCisrKyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2luc193Y2guYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDM5ICszOSw0NCBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbnNfd2NoLmMsdiAxLjggMjAwNS8xMi8wMyAyMDoyNDoxOSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbnNfd2NoLmMsdiAxLjE3IDIwMTEvMTAvMjIgMTY6MzQ6NTAgdG9tIEV4cCAkIikKIAogLyoKICAqIEluc2VydCB0aGUgZ2l2ZW4gY2hhcmFjdGVyLCB1cGRhdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbiB0byBzaW1wbGlmeQogICogaW5zZXJ0aW5nIGEgc3RyaW5nLgogICovCi1zdGF0aWMgaW50CitOQ1VSU0VTX0VYUE9SVChpbnQpCiBfbmNfaW5zZXJ0X3djaChXSU5ET1cgKndpbiwgY29uc3QgY2NoYXJfdCAqd2NoKQogewogICAgIGludCBjZWxscyA9IHdjd2lkdGgoQ2hhck9mKENIREVSRUYod2NoKSkpOwogICAgIGludCBjZWxsOworICAgIGludCBjb2RlID0gT0s7CiAKLSAgICBpZiAoY2VsbHMgPD0gMCkKLQljZWxscyA9IDE7CisgICAgaWYgKGNlbGxzIDwgMCkgeworCWNvZGUgPSB3aW5zY2god2luLCAoY2h0eXBlKSBDaGFyT2YoQ0hERVJFRih3Y2gpKSk7CisgICAgfSBlbHNlIHsKKwlpZiAoY2VsbHMgPT0gMCkKKwkgICAgY2VsbHMgPSAxOwogCi0gICAgaWYgKHdpbi0+X2N1cnggPD0gd2luLT5fbWF4eCkgewotCXN0cnVjdCBsZGF0ICpsaW5lID0gJih3aW4tPl9saW5lW3dpbi0+X2N1cnldKTsKLQlOQ1VSU0VTX0NIX1QgKmVuZCA9ICYobGluZS0+dGV4dFt3aW4tPl9jdXJ4XSk7Ci0JTkNVUlNFU19DSF9UICp0ZW1wMSA9ICYobGluZS0+dGV4dFt3aW4tPl9tYXh4XSk7Ci0JTkNVUlNFU19DSF9UICp0ZW1wMiA9IHRlbXAxIC0gY2VsbHM7CisJaWYgKHdpbi0+X2N1cnggPD0gd2luLT5fbWF4eCkgeworCSAgICBzdHJ1Y3QgbGRhdCAqbGluZSA9ICYod2luLT5fbGluZVt3aW4tPl9jdXJ5XSk7CisJICAgIE5DVVJTRVNfQ0hfVCAqZW5kID0gJihsaW5lLT50ZXh0W3dpbi0+X2N1cnhdKTsKKwkgICAgTkNVUlNFU19DSF9UICp0ZW1wMSA9ICYobGluZS0+dGV4dFt3aW4tPl9tYXh4XSk7CisJICAgIE5DVVJTRVNfQ0hfVCAqdGVtcDIgPSB0ZW1wMSAtIGNlbGxzOwogCi0JQ0hBTkdFRF9UT19FT0wobGluZSwgd2luLT5fY3VyeCwgd2luLT5fbWF4eCk7Ci0Jd2hpbGUgKHRlbXAxID4gZW5kKQotCSAgICAqdGVtcDEtLSA9ICp0ZW1wMi0tOworCSAgICBDSEFOR0VEX1RPX0VPTChsaW5lLCB3aW4tPl9jdXJ4LCB3aW4tPl9tYXh4KTsKKwkgICAgd2hpbGUgKHRlbXAxID4gZW5kKQorCQkqdGVtcDEtLSA9ICp0ZW1wMi0tOwogCi0JKnRlbXAxID0gX25jX3JlbmRlcih3aW4sICp3Y2gpOwotCWZvciAoY2VsbCA9IDE7IGNlbGwgPCBjZWxsczsgKytjZWxsKSB7Ci0JICAgIFNldFdpZGVjRXh0KHRlbXAxW2NlbGxdLCBjZWxsKTsKKwkgICAgKnRlbXAxID0gX25jX3JlbmRlcih3aW4sICp3Y2gpOworCSAgICBmb3IgKGNlbGwgPSAxOyBjZWxsIDwgY2VsbHM7ICsrY2VsbCkgeworCQlTZXRXaWRlY0V4dCh0ZW1wMVtjZWxsXSwgY2VsbCk7CisJICAgIH0KKworCSAgICB3aW4tPl9jdXJ4Kys7CiAJfQotCi0Jd2luLT5fY3VyeCsrOwogICAgIH0KLSAgICByZXR1cm4gT0s7CisgICAgcmV0dXJuIGNvZGU7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKQEAgLTgxLDcgKzg2LDcgQEAKICAgICBOQ1VSU0VTX1NJWkVfVCBveDsKICAgICBpbnQgY29kZSA9IEVSUjsKIAotICAgIFQoKFRfQ0FMTEVEKCJ3aW5zX3djaCglcCwgJXMpIiksIHdpbiwgX3RyYWNlY2NoYXJfdCh3Y2gpKSk7CisgICAgVCgoVF9DQUxMRUQoIndpbnNfd2NoKCVwLCAlcykiKSwgKHZvaWQgKikgd2luLCBfdHJhY2VjY2hhcl90KHdjaCkpKTsKIAogICAgIGlmICh3aW4gIT0gMCkgewogCW95ID0gd2luLT5fY3VyeTsKQEAgLTEwNCwzMiArMTA5LDM1IEBACiAgICAgTkNVUlNFU19TSVpFX1Qgb3g7CiAgICAgY29uc3Qgd2NoYXJfdCAqY3A7CiAKLSAgICBUKChUX0NBTExFRCgid2luc19ud3N0ciglcCwlcywlZCkiKSwgd2luLCBfbmNfdmlzd2J1Zm4od3N0ciwgbiksIG4pKTsKKyAgICBUKChUX0NBTExFRCgid2luc19ud3N0ciglcCwlcywlZCkiKSwKKyAgICAgICAodm9pZCAqKSB3aW4sIF9uY192aXN3YnVmbih3c3RyLCBuKSwgbikpOwogCiAgICAgaWYgKHdpbiAhPSAwCiAJJiYgd3N0ciAhPSAwKSB7CiAJaWYgKG4gPCAxKQotCSAgICBuID0gd2NzbGVuKHdzdHIpOworCSAgICBuID0gKGludCkgd2NzbGVuKHdzdHIpOwogCWNvZGUgPSBPSzsKIAlpZiAobiA+IDApIHsKKwkgICAgU0NSRUVOICpzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsKKwogCSAgICBveSA9IHdpbi0+X2N1cnk7CiAJICAgIG94ID0gd2luLT5fY3VyeDsKIAkgICAgZm9yIChjcCA9IHdzdHI7ICpjcCAmJiAoKGNwIC0gd3N0cikgPCBuKTsgY3ArKykgewogCQlpbnQgbGVuID0gd2N3aWR0aCgqY3ApOwogCi0JCWlmIChsZW4gIT0gMSB8fCAhaXM4Yml0cygqY3ApKSB7CisJCWlmICgobGVuID49IDAgJiYgbGVuICE9IDEpIHx8ICFpczdiaXRzKCpjcCkpIHsKIAkJICAgIGNjaGFyX3QgdG1wX2NjaGFyOwogCQkgICAgd2NoYXJfdCB0bXBfd2NoYXIgPSAqY3A7CiAJCSAgICBtZW1zZXQoJnRtcF9jY2hhciwgMCwgc2l6ZW9mKHRtcF9jY2hhcikpOwogCQkgICAgKHZvaWQpIHNldGNjaGFyKCZ0bXBfY2NoYXIsCiAJCQkJICAgICZ0bXBfd2NoYXIsCiAJCQkJICAgIFdBX05PUk1BTCwKLQkJCQkgICAgMCwKKwkJCQkgICAgKHNob3J0KSAwLAogCQkJCSAgICAodm9pZCAqKSAwKTsKIAkJICAgIGNvZGUgPSBfbmNfaW5zZXJ0X3djaCh3aW4sICZ0bXBfY2NoYXIpOwogCQl9IGVsc2UgewogCQkgICAgLyogdGFicywgb3RoZXIgQVNDSUkgc3R1ZmYgKi8KLQkJICAgIGNvZGUgPSBfbmNfaW5zZXJ0X2NoKHdpbiwgKGNodHlwZSkgKCpjcCkpOworCQkgICAgY29kZSA9IF9uY19pbnNlcnRfY2goc3AsIHdpbiwgKGNodHlwZSkgKCpjcCkpOwogCQl9CiAJCWlmIChjb2RlICE9IE9LKQogCQkgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9pbndzdHIuYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2lud3N0ci5jCmluZGV4IDIyMDdhNWYuLmE0ZjViOGUgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvd2lkZWNoYXIvbGliX2lud3N0ci5jCisrKyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX2lud3N0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwOSwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzksNyArMzksNyBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGxpYl9pbndzdHIuYyx2IDEuNCAyMDA0LzEwLzIzIDIwOjQxOjI4IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX2lud3N0ci5jLHYgMS42IDIwMTEvMDUvMjggMjI6NDk6NDkgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogd2lubndzdHIoV0lORE9XICp3aW4sIHdjaGFyX3QgKndzdHIsIGludCBuKQpAQCAtNTAsNyArNTAsNyBAQAogICAgIGNjaGFyX3QgKnRleHQ7CiAgICAgd2NoYXJfdCB3Y2g7CiAKLSAgICBUKChUX0NBTExFRCgid2lubndzdHIoJXAsJXAsJWQpIiksIHdpbiwgd3N0ciwgbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3aW5ud3N0ciglcCwlcCwlZCkiKSwgKHZvaWQgKikgd2luLCAodm9pZCAqKSB3c3RyLCBuKSk7CiAgICAgaWYgKHdzdHIgIT0gMCkgewogCWlmICh3aW4pIHsKIAkgICAgZ2V0eXgod2luLCByb3csIGNvbCk7CkBAIC05Myw4ICs5MywxMyBAQAogd2lud3N0cihXSU5ET1cgKndpbiwgd2NoYXJfdCAqd3N0cikKIHsKICAgICBpbnQgcmVzdWx0ID0gT0s7Ci0gICAgVCgoVF9DQUxMRUQoIndpbndzdHIoJXAsJXApIiksIHdpbiwgd3N0cikpOwotICAgIGlmICh3aW5ud3N0cih3aW4sIHdzdHIsIENDSEFSV19NQVggKiAod2luLT5fbWF4eCAtIHdpbi0+X2N1cnggKyAxKSkgPT0gRVJSKQorCisgICAgVCgoVF9DQUxMRUQoIndpbndzdHIoJXAsJXApIiksICh2b2lkICopIHdpbiwgKHZvaWQgKikgd3N0cikpOworICAgIGlmICh3aW4gPT0gMCkgewogCXJlc3VsdCA9IEVSUjsKKyAgICB9IGVsc2UgaWYgKHdpbm53c3RyKHdpbiwgd3N0ciwKKwkJCUNDSEFSV19NQVggKiAod2luLT5fbWF4eCAtIHdpbi0+X2N1cnggKyAxKSkgPT0gRVJSKSB7CisJcmVzdWx0ID0gRVJSOworICAgIH0KICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9wZWNob193Y2hhci5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfcGVjaG9fd2NoYXIuYwppbmRleCBlNjEyNzc1Li5iNmRhN2E4IDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9wZWNob193Y2hhci5jCisrKyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX3BlY2hvX3djaGFyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfcGVjaG9fd2NoYXIuYyx2IDEuMSAyMDA0LzAxLzAzIDIxOjQyOjAxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3BlY2hvX3djaGFyLmMsdiAxLjIgMjAwOS8xMC8yNCAyMjo0MzozMiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi1wZWNob193Y2hhcihXSU5ET1cgKnBhZCwgY29uc3QgY2NoYXJfdCAqIHdjaCkKK3BlY2hvX3djaGFyKFdJTkRPVyAqcGFkLCBjb25zdCBjY2hhcl90ICp3Y2gpCiB7Ci0gICAgVCgoVF9DQUxMRUQoInBlY2hvX3djaGFyKCVwLCAlcykiKSwgcGFkLCBfdHJhY2VjaF90KHdjaCkpKTsKKyAgICBUKChUX0NBTExFRCgicGVjaG9fd2NoYXIoJXAsICVzKSIpLCAodm9pZCAqKSBwYWQsIF90cmFjZWNoX3Qod2NoKSkpOwogCiAgICAgaWYgKHBhZCA9PSAwKQogCXJldHVybkNvZGUoRVJSKTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3Nsa193c2V0LmMgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl9zbGtfd3NldC5jCmluZGV4IDY0NmI1ZDkuLjg5Mjc1NTYgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3Nsa193c2V0LmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfc2xrX3dzZXQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDIsMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDx3Y3R5cGUuaD4KICNlbmRpZgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3Nsa193c2V0LmMsdiAxLjExIDIwMDUvMDEvMTYgMDE6MDM6NTMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBsaWJfc2xrX3dzZXQuYyx2IDEuMTMgMjAxMS8xMC8yMiAxNTo1MjoyMCB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBzbGtfd3NldChpbnQgaSwgY29uc3Qgd2NoYXJfdCAqYXN0ciwgaW50IGZvcm1hdCkKQEAgLTUzLDE5ICs1MywyMSBAQAogCiAgICAgVCgoVF9DQUxMRUQoInNsa193c2V0KCVkLCAlcywgJWQpIiksIGksIF9uY192aXN3YnVmKGFzdHIpLCBmb3JtYXQpKTsKIAotICAgIGluaXRfbWIoc3RhdGUpOwotICAgIHN0ciA9IGFzdHI7Ci0gICAgaWYgKChhcmdsZW4gPSB3Y3NydG9tYnMoTlVMTCwgJnN0ciwgMCwgJnN0YXRlKSkgIT0gKHNpemVfdCkgLTEpIHsKLQlpZiAoKG15c3RyID0gKGNoYXIgKikgX25jX2RvYWxsb2MoMCwgYXJnbGVuICsgMSkpICE9IDApIHsKLQkgICAgc3RyID0gYXN0cjsKLQkgICAgaWYgKHdjc3J0b21icyhteXN0ciwgJnN0ciwgYXJnbGVuLCAmc3RhdGUpICE9IChzaXplX3QpIC0xKSB7Ci0JCS8qIGdsaWJjIGRvY3VtZW50YXRpb24gY2xhaW1zIHRoYXQgdGhlIHRlcm1pbmF0aW5nIEwnXDAnCi0JCSAqIGlzIHdyaXR0ZW4sIGJ1dCBpdCBpcyBub3QuLi4KLQkJICovCi0JCW15c3RyW2FyZ2xlbl0gPSAwOwotCQlyZXN1bHQgPSBzbGtfc2V0KGksIG15c3RyLCBmb3JtYXQpOworICAgIGlmIChhc3RyICE9IDApIHsKKwlpbml0X21iKHN0YXRlKTsKKwlzdHIgPSBhc3RyOworCWlmICgoYXJnbGVuID0gd2NzcnRvbWJzKE5VTEwsICZzdHIsIChzaXplX3QpIDAsICZzdGF0ZSkpICE9IChzaXplX3QpIC0xKSB7CisJICAgIGlmICgobXlzdHIgPSAoY2hhciAqKSBfbmNfZG9hbGxvYygwLCBhcmdsZW4gKyAxKSkgIT0gMCkgeworCQlzdHIgPSBhc3RyOworCQlpZiAod2NzcnRvbWJzKG15c3RyLCAmc3RyLCBhcmdsZW4sICZzdGF0ZSkgIT0gKHNpemVfdCkgLTEpIHsKKwkJICAgIC8qIGdsaWJjIGRvY3VtZW50YXRpb24gY2xhaW1zIHRoYXQgdGhlIHRlcm1pbmF0aW5nIEwnXDAnCisJCSAgICAgKiBpcyB3cml0dGVuLCBidXQgaXQgaXMgbm90Li4uCisJCSAgICAgKi8KKwkJICAgIG15c3RyW2FyZ2xlbl0gPSAwOworCQkgICAgcmVzdWx0ID0gc2xrX3NldChpLCBteXN0ciwgZm9ybWF0KTsKKwkJfQorCQlmcmVlKG15c3RyKTsKIAkgICAgfQotCSAgICBmcmVlKG15c3RyKTsKIAl9CiAgICAgfQogICAgIHJldHVybkNvZGUocmVzdWx0KTsKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3VuZ2V0X3djaC5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfdW5nZXRfd2NoLmMKaW5kZXggYmIyYzRhMC4uZDVhZTYwOCAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfdW5nZXRfd2NoLmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfdW5nZXRfd2NoLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSw3ICszOSw3IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3VuZ2V0X3djaC5jLHYgMS4xMCAyMDA4LzA2LzA3IDE0OjUwOjM3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3VuZ2V0X3djaC5jLHYgMS4xNSAyMDExLzEwLzIyIDE2OjM0OjUwIHRvbSBFeHAgJCIpCiAKIC8qCiAgKiBXcmFwcGVyIGZvciB3Y3J0b21iKCkgd2hpY2ggb2J0YWlucyB0aGUgbGVuZ3RoIG5lZWRlZCBmb3IgdGhlIGdpdmVuCkBAIC01NSwyNCArNTUsMjQgQEAKIAljb25zdCB3Y2hhcl90ICp0ZW1wcCA9IHRlbXA7CiAJdGVtcFswXSA9IHNvdXJjZTsKIAl0ZW1wWzFdID0gMDsKLQlyZXN1bHQgPSB3Y3NydG9tYnMoTlVMTCwgJnRlbXBwLCAwLCBzdGF0ZSk7CisJcmVzdWx0ID0gKGludCkgd2NzcnRvbWJzKE5VTEwsICZ0ZW1wcCwgKHNpemVfdCkgMCwgc3RhdGUpOwogICAgIH0gZWxzZSB7Ci0JcmVzdWx0ID0gd2NydG9tYih0YXJnZXQsIHNvdXJjZSwgc3RhdGUpOworCXJlc3VsdCA9IChpbnQpIHdjcnRvbWIodGFyZ2V0LCBzb3VyY2UsIHN0YXRlKTsKICAgICB9CiAgICAgaWYgKCFpc0VJTFNFUShyZXN1bHQpICYmIChyZXN1bHQgPT0gMCkpCiAJcmVzdWx0ID0gMTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAoc2l6ZV90KSByZXN1bHQ7CiB9CiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXVuZ2V0X3djaChjb25zdCB3Y2hhcl90IHdjaCkKK05DVVJTRVNfU1BfTkFNRSh1bmdldF93Y2gpIChOQ1VSU0VTX1NQX0RDTHggY29uc3Qgd2NoYXJfdCB3Y2gpCiB7CiAgICAgaW50IHJlc3VsdCA9IE9LOwogICAgIG1ic3RhdGVfdCBzdGF0ZTsKICAgICBzaXplX3QgbGVuZ3RoOwogICAgIGludCBuOwogCi0gICAgVCgoVF9DQUxMRUQoInVuZ2V0X3djaCglI2x4KSIpLCAodW5zaWduZWQgbG9uZykgd2NoKSk7CisgICAgVCgoVF9DQUxMRUQoInVuZ2V0X3djaCglcCwgJSNseCkiKSwgKHZvaWQgKikgU1BfUEFSTSwgKHVuc2lnbmVkIGxvbmcpIHdjaCkpOwogCiAgICAgaW5pdF9tYihzdGF0ZSk7CiAgICAgbGVuZ3RoID0gX25jX3djcnRvbWIoMCwgd2NoLCAmc3RhdGUpOwpAQCAtODMsMTAgKzgzLDEyIEBACiAKIAlpZiAoKHN0cmluZyA9IChjaGFyICopIG1hbGxvYyhsZW5ndGgpKSAhPSAwKSB7CiAJICAgIGluaXRfbWIoc3RhdGUpOwotCSAgICB3Y3J0b21iKHN0cmluZywgd2NoLCAmc3RhdGUpOworCSAgICAvKiBpZ25vcmUgdGhlIHJlc3VsdCwgc2luY2Ugd2UgYWxyZWFkeSB2YWxpZGF0ZWQgdGhlIGNoYXJhY3RlciAqLworCSAgICBJR05PUkVfUkMoKGludCkgd2NydG9tYihzdHJpbmcsIHdjaCwgJnN0YXRlKSk7CiAKIAkgICAgZm9yIChuID0gKGludCkgKGxlbmd0aCAtIDEpOyBuID49IDA7IC0tbikgewotCQlpZiAoX25jX3VuZ2V0Y2goU1AsIHN0cmluZ1tuXSkgIT0gT0spIHsKKwkJaWYgKE5DVVJTRVNfU1BfTkFNRSh1bmdldGNoKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCSAgICAgIFVDaGFyKHN0cmluZ1tuXSkpICE9T0spIHsKIAkJICAgIHJlc3VsdCA9IEVSUjsKIAkJICAgIGJyZWFrOwogCQl9CkBAIC0xMDEsMyArMTAzLDExIEBACiAKICAgICByZXR1cm5Db2RlKHJlc3VsdCk7CiB9CisKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit1bmdldF93Y2goY29uc3Qgd2NoYXJfdCB3Y2gpCit7CisgICAgcmV0dXJuIE5DVVJTRVNfU1BfTkFNRSh1bmdldF93Y2gpIChDVVJSRU5UX1NDUkVFTiwgd2NoKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfdmlkX2F0dHIuYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX3ZpZF9hdHRyLmMKaW5kZXggMWRjNjc5ZS4uODBjMWVhNCAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfdmlkX2F0dHIuYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl92aWRfYXR0ci5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzEsMTYgKzMxLDIxIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3ZpZF9hdHRyLmMsdiAxLjUgMjAwNy8wNi8zMCAyMjowMzowMiB0b20gRXhwICQiKQorI2lmbmRlZiBDVVIKKyNkZWZpbmUgQ1VSIFNQX1RFUk1UWVBFCisjZW5kaWYKIAotI2RlZmluZSBkb1B1dChtb2RlKSBUUFVUU19UUkFDRSgjbW9kZSk7IHRwdXRzKG1vZGUsIDEsIG91dGMpCitNT0RVTEVfSUQoIiRJZDogbGliX3ZpZF9hdHRyLmMsdiAxLjIzIDIwMTQvMDYvMDcgMjI6MTM6NDYgdG9tIEV4cCAkIikKIAotI2RlZmluZSBUdXJuT24obWFzayxtb2RlKSBcCisjZGVmaW5lIGRvUHV0KG1vZGUpIFwKKwlUUFVUU19UUkFDRSgjbW9kZSk7IFwKKwlOQ1VSU0VTX1NQX05BTUUodHB1dHMpIChOQ1VSU0VTX1NQX0FSR3ggbW9kZSwgMSwgb3V0YykKKworI2RlZmluZSBUdXJuT24obWFzaywgbW9kZSkgXAogCWlmICgodHVybl9vbiAmIG1hc2spICYmIG1vZGUpIHsgZG9QdXQobW9kZSk7IH0KIAotI2RlZmluZSBUdXJuT2ZmKG1hc2ssbW9kZSkgXAorI2RlZmluZSBUdXJuT2ZmKG1hc2ssIG1vZGUpIFwKIAlpZiAoKHR1cm5fb2ZmICYgbWFzaykgJiYgbW9kZSkgeyBkb1B1dChtb2RlKTsgdHVybl9vZmYgJj0gfm1hc2s7IH0KIAogCS8qIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgc2NyZWVuLCBhc3N1bWUgd2UgKmNhbiogZG8gY29sb3IgKi8KQEAgLTUwLDE0ICs1NSwyMiBAQAogCQlpZiAoKHBhaXIgIT0gb2xkX3BhaXIpIFwKIAkJIHx8IChmaXhfcGFpcjAgJiYgKHBhaXIgPT0gMCkpIFwKIAkJIHx8IChyZXZlcnNlIF4gKChvbGRfYXR0ciAmIEFfUkVWRVJTRSkgIT0gMCkpKSB7IFwKLQkJCV9uY19kb19jb2xvcihvbGRfcGFpciwgcGFpciwgcmV2ZXJzZSwgb3V0Yyk7IFwKKwkJICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfZG9fY29sb3IpIChOQ1VSU0VTX1NQX0FSR3ggXAorCQkJCQkJICAgb2xkX3BhaXIsIHBhaXIsIFwKKwkJCQkJCSAgIHJldmVyc2UsIG91dGMpOyBcCiAJCX0gXAogCX0KIAotI2RlZmluZSBzZXRfY29sb3IobW9kZSwgcGFpcikgbW9kZSAmPSBBTExfQlVUX0NPTE9SOyBtb2RlIHw9IENPTE9SX1BBSVIocGFpcikKKyNkZWZpbmUgc2V0X2NvbG9yKG1vZGUsIHBhaXIpIFwKKwltb2RlICY9IEFMTF9CVVRfQ09MT1I7IFwKKwltb2RlIHw9IChhdHRyX3QpIENvbG9yUGFpcihwYWlyKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCi12aWRfcHV0cyhhdHRyX3QgbmV3bW9kZSwgc2hvcnQgcGFpciwgdm9pZCAqb3B0cyBHQ0NfVU5VU0VELCBpbnQgKCpvdXRjKSAoaW50KSkKK05DVVJTRVNfU1BfTkFNRSh2aWRfcHV0cykgKE5DVVJTRVNfU1BfRENMeAorCQkJICAgYXR0cl90IG5ld21vZGUsCisJCQkgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciwKKwkJCSAgIHZvaWQgKm9wdHMgR0NDX1VOVVNFRCwKKwkJCSAgIE5DVVJTRVNfU1BfT1VUQyBvdXRjKQogewogI2lmIE5DVVJTRVNfRVhUX0NPTE9SUwogICAgIHN0YXRpYyBhdHRyX3QgcHJldmlvdXNfYXR0ciA9IEFfTk9STUFMOwpAQCAtNjUsOSArNzgsOSBAQAogCiAgICAgYXR0cl90IHR1cm5fb24sIHR1cm5fb2ZmOwogICAgIGJvb2wgcmV2ZXJzZSA9IEZBTFNFOwotICAgIGJvb2wgY2FuX2NvbG9yID0gKFNQID09IDAgfHwgU1AtPl9jb2xvcm9uKTsKKyAgICBib29sIGNhbl9jb2xvciA9IChTUF9QQVJNID09IDAgfHwgU1BfUEFSTS0+X2NvbG9yb24pOwogI2lmIE5DVVJTRVNfRVhUX0ZVTkNTCi0gICAgYm9vbCBmaXhfcGFpcjAgPSAoU1AgIT0gMCAmJiBTUC0+X2NvbG9yb24gJiYgIVNQLT5fZGVmYXVsdF9jb2xvcik7CisgICAgYm9vbCBmaXhfcGFpcjAgPSAoU1BfUEFSTSAhPSAwICYmIFNQX1BBUk0tPl9jb2xvcm9uICYmICFTUF9QQVJNLT5fZGVmYXVsdF9jb2xvcik7CiAjZWxzZQogI2RlZmluZSBmaXhfcGFpcjAgRkFMU0UKICNlbmRpZgpAQCAtNzYsMTggKzg5LDE4IEBACiAgICAgVCgoVF9DQUxMRUQoInZpZF9wdXRzKCVzLCVkKSIpLCBfdHJhY2VhdHRyKG5ld21vZGUpLCBwYWlyKSk7CiAKICAgICAvKiB0aGlzIGFsbG93cyB1cyB0byBnbyBvbiB3aGV0aGVyIG9yIG5vdCBuZXd0ZXJtKCkgaGFzIGJlZW4gY2FsbGVkICovCi0gICAgaWYgKFNQKSB7Ci0JcHJldmlvdXNfYXR0ciA9IEF0dHJPZihTQ1JFRU5fQVRUUlMoU1ApKTsKLQlwcmV2aW91c19wYWlyID0gR2V0UGFpcihTQ1JFRU5fQVRUUlMoU1ApKTsKKyAgICBpZiAoU1BfUEFSTSkgeworCXByZXZpb3VzX2F0dHIgPSBBdHRyT2YoU0NSRUVOX0FUVFJTKFNQX1BBUk0pKTsKKwlwcmV2aW91c19wYWlyID0gR2V0UGFpcihTQ1JFRU5fQVRUUlMoU1BfUEFSTSkpOwogICAgIH0KIAogICAgIFRSKFRSQUNFX0FUVFJTLCAoInByZXZpb3VzIGF0dHJpYnV0ZSB3YXMgJXMsICVkIiwKIAkJICAgICBfdHJhY2VhdHRyKHByZXZpb3VzX2F0dHIpLCBwcmV2aW91c19wYWlyKSk7CiAKICNpZiAhVVNFX1hNQ19TVVBQT1JUCi0gICAgaWYgKChTUCAhPSAwKQorICAgIGlmICgoU1BfUEFSTSAhPSAwKQogCSYmIChtYWdpY19jb29raWVfZ2xpdGNoID4gMCkpCi0JbmV3bW9kZSAmPSB+KFNQLT5feG1jX3N1cHByZXNzKTsKKwluZXdtb2RlICY9IH4oU1BfUEFSTS0+X3htY19zdXBwcmVzcyk7CiAjZW5kaWYKIAogICAgIC8qCkBAIC0xMDksNyArMTIyLDcgQEAKIAkgKiBBX0FMVENIQVJTRVQgKDI1NikgZG93biAyIHRvIGxpbmUgdXAuICBXZSB1c2UgdGhlIE5DVVJTRVNfQklUUwogCSAqIG1hY3JvIHNvIHRoaXMgd2lsbCB3b3JrIHByb3Blcmx5IGZvciB0aGUgd2lkZS1jaGFyYWN0ZXIgbGF5b3V0LgogCSAqLwotCXVuc2lnbmVkIHZhbHVlID0gbm9fY29sb3JfdmlkZW87CisJdW5zaWduZWQgdmFsdWUgPSAodW5zaWduZWQpIG5vX2NvbG9yX3ZpZGVvOwogCWF0dHJfdCBtYXNrID0gTkNVUlNFU19CSVRTKCh2YWx1ZSAmIDYzKQogCQkJCSAgIHwgKCh2YWx1ZSAmIDE5MikgPDwgMSkKIAkJCQkgICB8ICgodmFsdWUgJiAyNTYpID4+IDIpLCA4KTsKQEAgLTEzMSw3ICsxNDQsNyBAQAogICAgIH0KIAogICAgIHR1cm5fb2ZmID0gKH5uZXdtb2RlICYgcHJldmlvdXNfYXR0cikgJiBBTExfQlVUX0NPTE9SOwotICAgIHR1cm5fb24gPSAobmV3bW9kZSAmIH5wcmV2aW91c19hdHRyKSAmIEFMTF9CVVRfQ09MT1I7CisgICAgdHVybl9vbiA9IChuZXdtb2RlICYgfihwcmV2aW91c19hdHRyICYgVFBBUk1fQVRUUikpICYgQUxMX0JVVF9DT0xPUjsKIAogICAgIFNldENvbG9yc0lmKCgocGFpciA9PSAwKSAmJiAhZml4X3BhaXIwKSwgcHJldmlvdXNfYXR0ciwgcHJldmlvdXNfcGFpcik7CiAKQEAgLTE0NCwxMiArMTU3LDE3IEBACiAJICAgIGlmIChleGl0X2F0dHJpYnV0ZV9tb2RlKSB7CiAJCWRvUHV0KGV4aXRfYXR0cmlidXRlX21vZGUpOwogCSAgICB9IGVsc2UgewotCQlpZiAoIVNQIHx8IFNQLT5fdXNlX3JtdWwpIHsKKwkJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcm11bCkgewogCQkgICAgVHVybk9mZihBX1VOREVSTElORSwgZXhpdF91bmRlcmxpbmVfbW9kZSk7CiAJCX0KLQkJaWYgKCFTUCB8fCBTUC0+X3VzZV9ybXNvKSB7CisJCWlmICghU1BfUEFSTSB8fCBTUF9QQVJNLT5fdXNlX3Jtc28pIHsKIAkJICAgIFR1cm5PZmYoQV9TVEFORE9VVCwgZXhpdF9zdGFuZG91dF9tb2RlKTsKIAkJfQorI2lmIFVTRV9JVEFMSUMKKwkJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcml0bSkgeworCQkgICAgVHVybk9mZihBX0lUQUxJQywgZXhpdF9pdGFsaWNzX21vZGUpOworCQl9CisjZW5kaWYKIAkgICAgfQogCSAgICBwcmV2aW91c19hdHRyICY9IEFMTF9CVVRfQ09MT1I7CiAJICAgIHByZXZpb3VzX3BhaXIgPSAwOwpAQCAtMTU5LDE5ICsxNzcsMzAgQEAKICAgICB9IGVsc2UgaWYgKHNldF9hdHRyaWJ1dGVzKSB7CiAJaWYgKHR1cm5fb24gfHwgdHVybl9vZmYpIHsKIAkgICAgVFBVVFNfVFJBQ0UoInNldF9hdHRyaWJ1dGVzIik7Ci0JICAgIHRwdXRzKFRQQVJNXzkoc2V0X2F0dHJpYnV0ZXMsCi0JCQkgIChuZXdtb2RlICYgQV9TVEFORE9VVCkgIT0gMCwKLQkJCSAgKG5ld21vZGUgJiBBX1VOREVSTElORSkgIT0gMCwKLQkJCSAgKG5ld21vZGUgJiBBX1JFVkVSU0UpICE9IDAsCi0JCQkgIChuZXdtb2RlICYgQV9CTElOSykgIT0gMCwKLQkJCSAgKG5ld21vZGUgJiBBX0RJTSkgIT0gMCwKLQkJCSAgKG5ld21vZGUgJiBBX0JPTEQpICE9IDAsCi0JCQkgIChuZXdtb2RlICYgQV9JTlZJUykgIT0gMCwKLQkJCSAgKG5ld21vZGUgJiBBX1BST1RFQ1QpICE9IDAsCi0JCQkgIChuZXdtb2RlICYgQV9BTFRDSEFSU0VUKSAhPSAwKSwgMSwgb3V0Yyk7CisJICAgIE5DVVJTRVNfU1BfTkFNRSh0cHV0cykgKE5DVVJTRVNfU1BfQVJHeAorCQkJCSAgICBUUEFSTV85KHNldF9hdHRyaWJ1dGVzLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX1NUQU5ET1VUKSAhPSAwLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX1VOREVSTElORSkgIT0gMCwKKwkJCQkJICAgIChuZXdtb2RlICYgQV9SRVZFUlNFKSAhPSAwLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX0JMSU5LKSAhPSAwLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX0RJTSkgIT0gMCwKKwkJCQkJICAgIChuZXdtb2RlICYgQV9CT0xEKSAhPSAwLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX0lOVklTKSAhPSAwLAorCQkJCQkgICAgKG5ld21vZGUgJiBBX1BST1RFQ1QpICE9IDAsCisJCQkJCSAgICAobmV3bW9kZSAmIEFfQUxUQ0hBUlNFVCkgIT0gMCksCisJCQkJICAgIDEsIG91dGMpOwogCSAgICBwcmV2aW91c19hdHRyICY9IEFMTF9CVVRfQ09MT1I7CiAJICAgIHByZXZpb3VzX3BhaXIgPSAwOwogCX0KKyNpZiBVU0VfSVRBTElDCisJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcml0bSkgeworCSAgICBpZiAodHVybl9vbiAmIEFfSVRBTElDKSB7CisJCVR1cm5PbihBX0lUQUxJQywgZW50ZXJfaXRhbGljc19tb2RlKTsKKwkgICAgfSBlbHNlIGlmICh0dXJuX29mZiAmIEFfSVRBTElDKSB7CisJCVR1cm5PZmYoQV9JVEFMSUMsIGV4aXRfaXRhbGljc19tb2RlKTsKKwkgICAgfQorCX0KKyNlbmRpZgogCVNldENvbG9yc0lmKChwYWlyICE9IDApIHx8IGZpeF9wYWlyMCwgcHJldmlvdXNfYXR0ciwgcHJldmlvdXNfcGFpcik7CiAgICAgfSBlbHNlIHsKIApAQCAtMTc5LDE0ICsyMDgsMTggQEAKIAogCVR1cm5PZmYoQV9BTFRDSEFSU0VULCBleGl0X2FsdF9jaGFyc2V0X21vZGUpOwogCi0JaWYgKCFTUCB8fCBTUC0+X3VzZV9ybXVsKSB7CisJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcm11bCkgewogCSAgICBUdXJuT2ZmKEFfVU5ERVJMSU5FLCBleGl0X3VuZGVybGluZV9tb2RlKTsKIAl9CiAKLQlpZiAoIVNQIHx8IFNQLT5fdXNlX3Jtc28pIHsKKwlpZiAoIVNQX1BBUk0gfHwgU1BfUEFSTS0+X3VzZV9ybXNvKSB7CiAJICAgIFR1cm5PZmYoQV9TVEFORE9VVCwgZXhpdF9zdGFuZG91dF9tb2RlKTsKIAl9Ci0KKyNpZiBVU0VfSVRBTElDCisJaWYgKCFTUF9QQVJNIHx8IFNQX1BBUk0tPl91c2Vfcml0bSkgeworCSAgICBUdXJuT2ZmKEFfSVRBTElDLCBleGl0X2l0YWxpY3NfbW9kZSk7CisJfQorI2VuZGlmCiAJaWYgKHR1cm5fb2ZmICYmIGV4aXRfYXR0cmlidXRlX21vZGUpIHsKIAkgICAgZG9QdXQoZXhpdF9hdHRyaWJ1dGVfbW9kZSk7CiAJICAgIHR1cm5fb24gfD0gKG5ld21vZGUgJiBBTExfQlVUX0NPTE9SKTsKQEAgLTIwNiw2ICsyMzksOSBAQAogCVR1cm5PbihBX1BST1RFQ1QsCWVudGVyX3Byb3RlY3RlZF9tb2RlKTsKIAlUdXJuT24oQV9JTlZJUywJCWVudGVyX3NlY3VyZV9tb2RlKTsKIAlUdXJuT24oQV9VTkRFUkxJTkUsCWVudGVyX3VuZGVybGluZV9tb2RlKTsKKyNpZiBVU0VfSVRBTElDCisJVHVybk9uKEFfSVRBTElDLAllbnRlcl9pdGFsaWNzX21vZGUpOworI2VuZGlmCiAjaWYgVVNFX1dJREVDX1NVUFBPUlQKIAlUdXJuT24oQV9IT1JJWk9OVEFMLAllbnRlcl9ob3Jpem9udGFsX2hsX21vZGUpOwogCVR1cm5PbihBX0xFRlQsCQllbnRlcl9sZWZ0X2hsX21vZGUpOwpAQCAtMjIxLDkgKzI1Nyw5IEBACiAgICAgaWYgKHJldmVyc2UpCiAJbmV3bW9kZSB8PSBBX1JFVkVSU0U7CiAKLSAgICBpZiAoU1ApIHsKLQlTZXRBdHRyKFNDUkVFTl9BVFRSUyhTUCksIG5ld21vZGUpOwotCVNldFBhaXIoU0NSRUVOX0FUVFJTKFNQKSwgcGFpcik7CisgICAgaWYgKFNQX1BBUk0pIHsKKwlTZXRBdHRyKFNDUkVFTl9BVFRSUyhTUF9QQVJNKSwgbmV3bW9kZSk7CisJU2V0UGFpcihTQ1JFRU5fQVRUUlMoU1BfUEFSTSksIHBhaXIpOwogICAgIH0gZWxzZSB7CiAJcHJldmlvdXNfYXR0ciA9IG5ld21vZGU7CiAJcHJldmlvdXNfcGFpciA9IHBhaXI7CkBAIC0yMzEsNDUgKzI2Nyw4NiBAQAogCiAgICAgcmV0dXJuQ29kZShPSyk7CiAjZWxzZQotICAgIFQoKFRfQ0FMTEVEKCJ2aWRfcHV0cyglcywlZCkiKSwgX3RyYWNlYXR0cihuZXdtb2RlKSwgcGFpcikpOworICAgIFQoKFRfQ0FMTEVEKCJ2aWRfcHV0cyglcywlZCkiKSwgX3RyYWNlYXR0cihuZXdtb2RlKSwgKGludCkgcGFpcikpOwogICAgIHNldF9jb2xvcihuZXdtb2RlLCBwYWlyKTsKLSAgICByZXR1cm5Db2RlKHZpZHB1dHMobmV3bW9kZSwgb3V0YykpOworICAgIHJldHVybkNvZGUoTkNVUlNFU19TUF9OQU1FKHZpZHB1dHMpIChOQ1VSU0VTX1NQX0FSR3ggbmV3bW9kZSwgb3V0YykpOwogI2VuZGlmCiB9CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitOQ1VSU0VTX0VYUE9SVChpbnQpCit2aWRfcHV0cyhhdHRyX3QgbmV3bW9kZSwKKwkgTkNVUlNFU19QQUlSU19UIHBhaXIsCisJIHZvaWQgKm9wdHMgR0NDX1VOVVNFRCwKKwkgTkNVUlNFU19PVVRDIG91dGMpCit7CisgICAgU2V0U2FmZU91dGNXcmFwcGVyKG91dGMpOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodmlkX3B1dHMpIChDVVJSRU5UX1NDUkVFTiwKKwkJCQkgICAgICBuZXdtb2RlLAorCQkJCSAgICAgIHBhaXIsCisJCQkJICAgICAgb3B0cywKKwkJCQkgICAgICBfbmNfb3V0Y193cmFwcGVyKTsKK30KKyNlbmRpZgorCiAjdW5kZWYgdmlkX2F0dHIKIE5DVVJTRVNfRVhQT1JUKGludCkKLXZpZF9hdHRyKGF0dHJfdCBuZXdtb2RlLCBzaG9ydCBwYWlyLCB2b2lkICpvcHRzKQorTkNVUlNFU19TUF9OQU1FKHZpZF9hdHRyKSAoTkNVUlNFU19TUF9EQ0x4CisJCQkgICBhdHRyX3QgbmV3bW9kZSwKKwkJCSAgIE5DVVJTRVNfUEFJUlNfVCBwYWlyLAorCQkJICAgdm9pZCAqb3B0cykKIHsKLSAgICBUKChUX0NBTExFRCgidmlkX2F0dHIoJXMsJWQpIiksIF90cmFjZWF0dHIobmV3bW9kZSksIHBhaXIpKTsKLSAgICByZXR1cm5Db2RlKHZpZF9wdXRzKG5ld21vZGUsIHBhaXIsIG9wdHMsIF9uY19vdXRjaCkpOworICAgIFQoKFRfQ0FMTEVEKCJ2aWRfYXR0ciglcywlZCkiKSwgX3RyYWNlYXR0cihuZXdtb2RlKSwgKGludCkgcGFpcikpOworICAgIHJldHVybkNvZGUoTkNVUlNFU19TUF9OQU1FKHZpZF9wdXRzKSAoTkNVUlNFU19TUF9BUkd4CisJCQkJCSAgbmV3bW9kZSwKKwkJCQkJICBwYWlyLAorCQkJCQkgIG9wdHMsCisJCQkJCSAgTkNVUlNFU19TUF9OQU1FKF9uY19wdXRjaGFyKSkpOwogfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQoaW50KQordmlkX2F0dHIoYXR0cl90IG5ld21vZGUsIE5DVVJTRVNfUEFJUlNfVCBwYWlyLCB2b2lkICpvcHRzKQoreworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUodmlkX2F0dHIpIChDVVJSRU5UX1NDUkVFTiwgbmV3bW9kZSwgcGFpciwgb3B0cyk7Cit9CisjZW5kaWYKKwogLyoKICAqIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc2FtZSBtYXNrIHZhbHVlcyBmb3IgQV94eHggYW5kIFdBX3h4eCwgc28KICAqIHdlIGNhbiB1c2UgdGVybWF0dHJzKCkgZm9yIHBhcnQgb2YgdGhlIGxvZ2ljLgogICovCiBOQ1VSU0VTX0VYUE9SVChhdHRyX3QpCi10ZXJtX2F0dHJzKHZvaWQpCitOQ1VSU0VTX1NQX05BTUUodGVybV9hdHRycykgKE5DVVJTRVNfU1BfRENMMCkKIHsKLSAgICBhdHRyX3QgYXR0cnM7CisgICAgYXR0cl90IGF0dHJzID0gMDsKIAogICAgIFQoKFRfQ0FMTEVEKCJ0ZXJtX2F0dHJzKCkiKSkpOwotICAgIGF0dHJzID0gdGVybWF0dHJzKCk7CisgICAgaWYgKFNQX1BBUk0pIHsKKwlhdHRycyA9IE5DVVJTRVNfU1BfTkFNRSh0ZXJtYXR0cnMpIChOQ1VSU0VTX1NQX0FSRyk7CiAKLSAgICAvKiB0aGVzZSBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIHdpZGUtY2hhcmFjdGVyIG1vZGUgKi8KLSAgICBpZiAoZW50ZXJfaG9yaXpvbnRhbF9obF9tb2RlKQotCWF0dHJzIHw9IFdBX0hPUklaT05UQUw7Ci0gICAgaWYgKGVudGVyX2xlZnRfaGxfbW9kZSkKLQlhdHRycyB8PSBXQV9MRUZUOwotICAgIGlmIChlbnRlcl9sb3dfaGxfbW9kZSkKLQlhdHRycyB8PSBXQV9MT1c7Ci0gICAgaWYgKGVudGVyX3JpZ2h0X2hsX21vZGUpCi0JYXR0cnMgfD0gV0FfUklHSFQ7Ci0gICAgaWYgKGVudGVyX3RvcF9obF9tb2RlKQotCWF0dHJzIHw9IFdBX1RPUDsKLSAgICBpZiAoZW50ZXJfdmVydGljYWxfaGxfbW9kZSkKLQlhdHRycyB8PSBXQV9WRVJUSUNBTDsKKwkvKiB0aGVzZSBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIHdpZGUtY2hhcmFjdGVyIG1vZGUgKi8KKwlpZiAoZW50ZXJfaG9yaXpvbnRhbF9obF9tb2RlKQorCSAgICBhdHRycyB8PSBXQV9IT1JJWk9OVEFMOworCWlmIChlbnRlcl9sZWZ0X2hsX21vZGUpCisJICAgIGF0dHJzIHw9IFdBX0xFRlQ7CisJaWYgKGVudGVyX2xvd19obF9tb2RlKQorCSAgICBhdHRycyB8PSBXQV9MT1c7CisJaWYgKGVudGVyX3JpZ2h0X2hsX21vZGUpCisJICAgIGF0dHJzIHw9IFdBX1JJR0hUOworCWlmIChlbnRlcl90b3BfaGxfbW9kZSkKKwkgICAgYXR0cnMgfD0gV0FfVE9QOworCWlmIChlbnRlcl92ZXJ0aWNhbF9obF9tb2RlKQorCSAgICBhdHRycyB8PSBXQV9WRVJUSUNBTDsKKyAgICB9CiAKICAgICByZXR1cm5BdHRyKGF0dHJzKTsKIH0KKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKGF0dHJfdCkKK3Rlcm1fYXR0cnModm9pZCkKK3sKKyAgICByZXR1cm4gTkNVUlNFU19TUF9OQU1FKHRlcm1fYXR0cnMpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3ZsaW5lX3NldC5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfdmxpbmVfc2V0LmMKaW5kZXggYWY0MmRmMS4uOTE3Y2FhYyAxMDA2NDQKLS0tIGEvbmN1cnNlcy93aWRlY2hhci9saWJfdmxpbmVfc2V0LmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfdmxpbmVfc2V0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSwxNiArMzksMTYgQEAKIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CiAKLU1PRFVMRV9JRCgiJElkOiBsaWJfdmxpbmVfc2V0LmMsdiAxLjIgMjAwMi8wMy8yMyAyMTozNjowMSB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl92bGluZV9zZXQuYyx2IDEuNCAyMDEwLzEyLzE5IDAxOjUwOjUwIHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKLXd2bGluZV9zZXQoV0lORE9XICp3aW4sIGNvbnN0IGNjaGFyX3QgKiBjaCwgaW50IG4pCit3dmxpbmVfc2V0KFdJTkRPVyAqd2luLCBjb25zdCBjY2hhcl90ICpjaCwgaW50IG4pCiB7CiAgICAgaW50IGNvZGUgPSBFUlI7Ci0gICAgTkNVUlNFU19TSVpFX1Qgcm93LCBjb2w7Ci0gICAgTkNVUlNFU19TSVpFX1QgZW5kOworICAgIGludCByb3csIGNvbDsKKyAgICBpbnQgZW5kOwogCi0gICAgVCgoVF9DQUxMRUQoInd2bGluZSglcCwlcywlZCkiKSwgd2luLCBfdHJhY2VjY2hhcl90KGNoKSwgbikpOworICAgIFQoKFRfQ0FMTEVEKCJ3dmxpbmUoJXAsJXMsJWQpIiksICh2b2lkICopIHdpbiwgX3RyYWNlY2NoYXJfdChjaCksIG4pKTsKIAogICAgIGlmICh3aW4pIHsKIAlOQ1VSU0VTX0NIX1Qgd2NoOwpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aWRlY2hhci9saWJfd2Fjcy5jIGIvbmN1cnNlcy93aWRlY2hhci9saWJfd2Fjcy5jCmluZGV4IGZlODkzYjQuLmRjM2FmMjEgMTAwNjQ0Ci0tLSBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3dhY3MuYworKysgYi9uY3Vyc2VzL3dpZGVjaGFyL2xpYl93YWNzLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMSw5ICszMSw4IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0jaW5jbHVkZSA8dGVybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3dhY3MuYyx2IDEuNyAyMDA2LzEyLzE3IDE1OjE2OjE3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogbGliX3dhY3MuYyx2IDEuMTQgMjAxNC8wMi8yMyAwMToyMTowOCB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVF9WQVIoY2NoYXJfdCkgKiBfbmNfd2FjcyA9IDA7CiAKQEAgLTQyLDcgKzQxLDcgQEAKIHsKICAgICAvKiAqSU5ERU5ULU9GRiogKi8KICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKLQlpbnQJbWFwOworCXVuc2lnbmVkIG1hcDsKIAlpbnQJdmFsdWVbMl07CiAgICAgfSB0YWJsZVtdID0gewogCS8qIFZUMTAwIHN5bWJvbHMgKi8KQEAgLTgwLDYgKzc5LDMwIEBACiAJeyAneycsCXsgJyonLAkweDAzYzAgfX0sCS8qIGdyZWVrIHBpICovCiAJeyAnfCcsCXsgJyEnLAkweDIyNjAgfX0sCS8qIG5vdC1lcXVhbCAqLwogCXsgJ30nLAl7ICdmJywJMHgwMGEzIH19LAkvKiBwb3VuZC1zdGVybGluZyBzeW1ib2wgKi8KKwkvKiB0aGljay1saW5lLWRyYXdpbmcgKi8KKwl7ICdMJywJeyAnKycsCTB4MjUwZiB9fSwJLyogdXBwZXIgbGVmdCBjb3JuZXIgKi8KKwl7ICdNJywJeyAnKycsCTB4MjUxNyB9fSwJLyogbG93ZXIgbGVmdCBjb3JuZXIgKi8KKwl7ICdLJywJeyAnKycsCTB4MjUxMyB9fSwJLyogdXBwZXIgcmlnaHQgY29ybmVyICovCisJeyAnSicsCXsgJysnLAkweDI1MWIgfX0sCS8qIGxvd2VyIHJpZ2h0IGNvcm5lciAqLworCXsgJ1QnLAl7ICcrJywJMHgyNTIzIH19LAkvKiB0ZWUgcG9pbnRpbmcgbGVmdCAqLworCXsgJ1UnLAl7ICcrJywJMHgyNTJiIH19LAkvKiB0ZWUgcG9pbnRpbmcgcmlnaHQgKi8KKwl7ICdWJywJeyAnKycsCTB4MjUzYiB9fSwJLyogdGVlIHBvaW50aW5nIHVwICovCisJeyAnVycsCXsgJysnLAkweDI1MzMgfX0sCS8qIHRlZSBwb2ludGluZyBkb3duICovCisJeyAnUScsCXsgJy0nLAkweDI1MDEgfX0sCS8qIGhvcml6b250YWwgbGluZSAqLworCXsgJ1gnLAl7ICd8JywJMHgyNTAzIH19LAkvKiB2ZXJ0aWNhbCBsaW5lICovCisJeyAnTicsCXsgJysnLAkweDI1NGIgfX0sCS8qIGxhcmdlIHBsdXMgb3IgY3Jvc3NvdmVyICovCisJLyogZG91YmxlLWxpbmUtZHJhd2luZyAqLworCXsgJ0MnLAl7ICcrJywJMHgyNTU0IH19LAkvKiB1cHBlciBsZWZ0IGNvcm5lciAqLworCXsgJ0QnLAl7ICcrJywJMHgyNTVhIH19LAkvKiBsb3dlciBsZWZ0IGNvcm5lciAqLworCXsgJ0InLAl7ICcrJywJMHgyNTU3IH19LAkvKiB1cHBlciByaWdodCBjb3JuZXIgKi8KKwl7ICdBJywJeyAnKycsCTB4MjU1ZCB9fSwJLyogbG93ZXIgcmlnaHQgY29ybmVyICovCisJeyAnRycsCXsgJysnLAkweDI1NjMgfX0sCS8qIHRlZSBwb2ludGluZyBsZWZ0ICovCisJeyAnRicsCXsgJysnLAkweDI1NjAgfX0sCS8qIHRlZSBwb2ludGluZyByaWdodCAqLworCXsgJ0gnLAl7ICcrJywJMHgyNTY5IH19LAkvKiB0ZWUgcG9pbnRpbmcgdXAgKi8KKwl7ICdJJywJeyAnKycsCTB4MjU2NiB9fSwJLyogdGVlIHBvaW50aW5nIGRvd24gKi8KKwl7ICdSJywJeyAnLScsCTB4MjU1MCB9fSwJLyogaG9yaXpvbnRhbCBsaW5lICovCisJeyAnWScsCXsgJ3wnLAkweDI1NTEgfX0sCS8qIHZlcnRpY2FsIGxpbmUgKi8KKwl7ICdFJywJeyAnKycsCTB4MjU2YyB9fSwJLyogbGFyZ2UgcGx1cyBvciBjcm9zc292ZXIgKi8KICAgICB9OwogICAgIC8qICpJTkRFTlQtT04qICovCiAKQEAgLTk2LDIyICsxMTksMjQgQEAKICAgICBUKCgiaW5pdGlhbGl6aW5nIFdJREUtQUNTIG1hcCAoVW5pY29kZSBpcyVzIGFjdGl2ZSkiLAogICAgICAgIGFjdGl2ZSA/ICIiIDogIiBub3QiKSk7CiAKLSAgICBfbmNfd2FjcyA9IHR5cGVDYWxsb2MoY2NoYXJfdCwgQUNTX0xFTik7Ci0gICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YWJsZSk7ICsrbikgewotCWludCB3aWRlID0gd2N3aWR0aCh0YWJsZVtuXS52YWx1ZVthY3RpdmVdKTsKKyAgICBpZiAoKF9uY193YWNzID0gdHlwZUNhbGxvYyhjY2hhcl90LCBBQ1NfTEVOKSkgIT0gMCkgewogCi0JbSA9IHRhYmxlW25dLm1hcDsKLQlpZiAoYWN0aXZlICYmICh3aWRlID09IDEpKSB7Ci0JICAgIFNldENoYXIoX25jX3dhY3NbbV0sIHRhYmxlW25dLnZhbHVlW2FjdGl2ZV0sIEFfTk9STUFMKTsKLQl9IGVsc2UgaWYgKGFjc19tYXBbbV0gJiBBX0FMVENIQVJTRVQpIHsKLQkgICAgU2V0Q2hhcihfbmNfd2Fjc1ttXSwgbSwgQV9BTFRDSEFSU0VUKTsKLQl9IGVsc2UgewotCSAgICBTZXRDaGFyKF9uY193YWNzW21dLCB0YWJsZVtuXS52YWx1ZVswXSwgQV9OT1JNQUwpOworCWZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyArK24pIHsKKwkgICAgaW50IHdpZGUgPSB3Y3dpZHRoKCh3Y2hhcl90KSB0YWJsZVtuXS52YWx1ZVthY3RpdmVdKTsKKworCSAgICBtID0gdGFibGVbbl0ubWFwOworCSAgICBpZiAoYWN0aXZlICYmICh3aWRlID09IDEpKSB7CisJCVNldENoYXIoX25jX3dhY3NbbV0sIHRhYmxlW25dLnZhbHVlWzFdLCBBX05PUk1BTCk7CisJICAgIH0gZWxzZSBpZiAoYWNzX21hcFttXSAmIEFfQUxUQ0hBUlNFVCkgeworCQlTZXRDaGFyKF9uY193YWNzW21dLCBtLCBBX0FMVENIQVJTRVQpOworCSAgICB9IGVsc2UgeworCQlTZXRDaGFyKF9uY193YWNzW21dLCB0YWJsZVtuXS52YWx1ZVswXSwgQV9OT1JNQUwpOworCSAgICB9CisKKwkgICAgVCgoIiMlZCwgU2V0Q2hhciglYywgJSMwNHgpID0gJXMiLAorCSAgICAgICBuLCBtLAorCSAgICAgICB0YWJsZVtuXS52YWx1ZVthY3RpdmVdLAorCSAgICAgICBfdHJhY2VjY2hhcl90KCZfbmNfd2Fjc1ttXSkpKTsKIAl9Ci0KLQlUKCgiIyVkLCBTZXRDaGFyKCVjLCAlIzA0eCkgPSAlcyIsCi0JICAgbiwgbSwKLQkgICB0YWJsZVtuXS52YWx1ZVthY3RpdmVdLAotCSAgIF90cmFjZWNjaGFyX3QoJl9uY193YWNzW21dKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvbGliX3d1bmN0cmwuYyBiL25jdXJzZXMvd2lkZWNoYXIvbGliX3d1bmN0cmwuYwppbmRleCBiZTIyNTlhLi40NWQ0OTUyIDEwMDY0NAotLS0gYS9uY3Vyc2VzL3dpZGVjaGFyL2xpYl93dW5jdHJsLmMKKysrIGIvbmN1cnNlcy93aWRlY2hhci9saWJfd3VuY3RybC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA1LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzUsMjEgKzM1LDM2IEBACiAKICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgogCi1NT0RVTEVfSUQoIiRJZDogbGliX3d1bmN0cmwuYyx2IDEuMTIgMjAwNy8wNi8xMiAyMDoyMjozMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGxpYl93dW5jdHJsLmMsdiAxLjE2IDIwMTIvMTIvMTUgMjA6NTM6NDIgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQod2NoYXJfdCAqKQorTkNVUlNFU19TUF9OQU1FKHd1bmN0cmwpIChOQ1VSU0VTX1NQX0RDTHggY2NoYXJfdCAqd2MpCit7CisgICAgc3RhdGljIHdjaGFyX3Qgc3RyW0NDSEFSV19NQVggKyAxXSwgKndzcDsKKyAgICB3Y2hhcl90ICpyZXN1bHQ7CisKKyAgICBpZiAod2MgPT0gMCkgeworCXJlc3VsdCA9IDA7CisgICAgfSBlbHNlIGlmIChTUF9QQVJNICE9IDAgJiYgQ2hhcmFibGUoKndjKSkgeworCWNvbnN0IGNoYXIgKnAgPQorCU5DVVJTRVNfU1BfTkFNRSh1bmN0cmwpIChOQ1VSU0VTX1NQX0FSR3gKKwkJCQkgKHVuc2lnbmVkKSBfbmNfdG9fY2hhcigod2ludF90KUNoYXJPZigqd2MpKSk7CisKKwlmb3IgKHdzcCA9IHN0cjsgKnA7ICsrcCkgeworCSAgICAqd3NwKysgPSAod2NoYXJfdCkgX25jX3RvX3dpZGVjaGFyKCpwKTsKKwl9CisJKndzcCA9IDA7CisJcmVzdWx0ID0gc3RyOworICAgIH0gZWxzZSB7CisJcmVzdWx0ID0gd2MtPmNoYXJzOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQod2NoYXJfdCAqKQogd3VuY3RybChjY2hhcl90ICp3YykKIHsKLSAgICBzdGF0aWMgd2NoYXJfdCBzdHJbQ0NIQVJXX01BWCArIDFdLCAqc3A7Ci0KLSAgICBpZiAoQ2hhcmFibGUoKndjKSkgewotCWNvbnN0IGNoYXIgKnAgPSB1bmN0cmwoKHVuc2lnbmVkKSBfbmNfdG9fY2hhcigod2ludF90KSBDaGFyT2YoKndjKSkpOwotCi0JZm9yIChzcCA9IHN0cjsgKnA7ICsrcCkgewotCSAgICAqc3ArKyA9IF9uY190b193aWRlY2hhcigqcCk7Ci0JfQotCSpzcCA9IDA7Ci0JcmV0dXJuIHN0cjsKLSAgICB9IGVsc2UKLQlyZXR1cm4gd2MtPmNoYXJzOworICAgIHJldHVybiBOQ1VSU0VTX1NQX05BTUUod3VuY3RybCkgKENVUlJFTlRfU0NSRUVOLCB3Yyk7CiB9CisjZW5kaWYKZGlmZiAtLWdpdCBhL25jdXJzZXMvd2lkZWNoYXIvd2lkZWNoYXJzLmMgYi9uY3Vyc2VzL3dpZGVjaGFyL3dpZGVjaGFycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NTFlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL3dpZGVjaGFyL3dpZGVjaGFycy5jCkBAIC0wLDAgKzEsMTUyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8Y3Vyc2VzLnByaXYuaD4KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisKK01PRFVMRV9JRCgiJElkOiB3aWRlY2hhcnMuYyx2IDEuNSAyMDEzLzAzLzAyIDE4OjU1OjUxIHRvbSBFeHAgJCIpCisKKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorLyoKKyAqIE1pbkdXIGhhcyB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMsIGJ1dCB0aGV5IGRvIG5vdCB3b3JrIGNvcnJlY3RseS4KKyAqLworCitpbnQKK19uY19tYnRvd2Mod2NoYXJfdCAqcHdjLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbikKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBjb3VudDsKKyAgICBpbnQgdHJ5OworCisgICAgaWYgKHMgIT0gMCAmJiBuICE9IDApIHsKKwkvKgorCSAqIE11bHRpQnl0ZVRvV2lkZUNoYXIoKSBjYW4gZGVjaWRlIHRvIHJldHVybiBtb3JlIHRoYW4gb25lCisJICogd2lkZS1jaGFyYWN0ZXIuICBXZSB3YW50IG9ubHkgb25lLiAgSWdub3JlIGFueSB0cmFpbGluZyBudWxsLCBib3RoCisJICogaW4gdGhlIGluaXRpYWwgY291bnQgYW5kIGluIHRoZSBjb252ZXJzaW9uLgorCSAqLworCWNvdW50ID0gMDsKKwlmb3IgKHRyeSA9IDE7IHRyeSA8PSAoaW50KSBuOyArK3RyeSkgeworCSAgICBjb3VudCA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwKKwkJCQkJTUJfRVJSX0lOVkFMSURfQ0hBUlMsCisJCQkJCXMsCisJCQkJCXRyeSwKKwkJCQkJcHdjLAorCQkJCQkwKTsKKwkgICAgVFIoVFJBQ0VfQklUUywgKCIuLi50cnkgJWQ6JWQiLCB0cnksIGNvdW50KSk7CisJICAgIGlmIChjb3VudCA+IDApIHsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisJaWYgKGNvdW50IDwgMSB8fCBjb3VudCA+IDIpIHsKKwkgICAgcmVzdWx0ID0gLTE7CisJfSBlbHNlIHsKKwkgICAgd2NoYXJfdCBhY3R1YWxbMl07CisJICAgIG1lbXNldCgmYWN0dWFsLCAwLCBzaXplb2YoYWN0dWFsKSk7CisJICAgIGNvdW50ID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LAorCQkJCQlNQl9FUlJfSU5WQUxJRF9DSEFSUywKKwkJCQkJcywKKwkJCQkJdHJ5LAorCQkJCQlhY3R1YWwsCisJCQkJCTIpOworCSAgICBUUihUUkFDRV9CSVRTLCAoIlx0d2luMzIgLT4lI3gsICUjeCIsIGFjdHVhbFswXSwgYWN0dWFsWzFdKSk7CisJICAgICpwd2MgPSBhY3R1YWxbMF07CisJICAgIGlmIChhY3R1YWxbMV0gIT0gMCkKKwkJcmVzdWx0ID0gLTE7CisJICAgIGVsc2UKKwkJcmVzdWx0ID0gdHJ5OworCX0KKyAgICB9IGVsc2UgeworCXJlc3VsdCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfbmNfbWJsZW4oY29uc3QgY2hhciAqcywgc2l6ZV90IG4pCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIGludCBjb3VudDsKKyAgICB3Y2hhcl90IHRlbXA7CisKKyAgICBpZiAocyAhPSAwICYmIG4gIT0gMCkgeworCWNvdW50ID0gX25jX21idG93YygmdGVtcCwgcywgbik7CisJaWYgKGNvdW50ID09IDEpIHsKKwkgICAgaW50IGNoZWNrID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LAorCQkJCQkgICAgMCwKKwkJCQkJICAgICZ0ZW1wLAorCQkJCQkgICAgMSwKKwkJCQkJICAgIE5VTEwsCisJCQkJCSAgICAwLAkvKiBjb21wdXRlIGxlbmd0aCBvbmx5ICovCisJCQkJCSAgICBOVUxMLAorCQkJCQkgICAgTlVMTCk7CisJICAgIFRSKFRSQUNFX0JJVFMsICgiXHRjaGVjayAtPiVkXG4iLCBjaGVjaykpOworCSAgICBpZiAoY2hlY2sgPiAwICYmIChzaXplX3QpIGNoZWNrIDw9IG4pIHsKKwkJcmVzdWx0ID0gY2hlY2s7CisJICAgIH0KKwl9CisgICAgfSBlbHNlIHsKKwlyZXN1bHQgPSAwOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBfX01JTkdXX05PVEhST1cKK19uY193Y3RvbWIoY2hhciAqcywgd2NoYXJfdCB3YykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBjaGVjazsKKworICAgIGNoZWNrID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LAorCQkJCTAsCisJCQkJJndjLAorCQkJCTEsCisJCQkJTlVMTCwKKwkJCQkwLAkvKiBjb21wdXRlIGxlbmd0aCBvbmx5ICovCisJCQkJTlVMTCwKKwkJCQlOVUxMKTsKKyAgICBpZiAoY2hlY2sgPiAwKSB7CisJcmVzdWx0ID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LAorCQkJCSAgICAgMCwKKwkJCQkgICAgICZ3YywKKwkJCQkgICAgIDEsCisJCQkJICAgICBzLAorCQkJCSAgICAgY2hlY2sgKyAxLAorCQkJCSAgICAgTlVMTCwKKwkJCQkgICAgIE5VTEwpOworICAgIH0gZWxzZSB7CisJcmVzdWx0ID0gLTE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiBfX01JTkdXMzJfXyAqLworCisjZW5kaWYgLyogVVNFX1dJREVDX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL25jdXJzZXMvd2luMzJjb24vZ2V0dGltZW9mZGF5LmMgYi9uY3Vyc2VzL3dpbjMyY29uL2dldHRpbWVvZmRheS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NzA0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9uY3Vyc2VzL3dpbjMyY29uL2dldHRpbWVvZmRheS5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBXSU5WRVIKKyMgIHVuZGVmIFdJTlZFUgorI2VuZGlmCisjZGVmaW5lIFdJTlZFUiAweDA1MDEKKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKK01PRFVMRV9JRCgiJElkOiBnZXR0aW1lb2ZkYXkuYyx2IDEuMyAyMDE0LzA0LzI2IDE5OjQxOjM0IGp1ZXJnZW4gRXhwICQiKQorCisjZGVmaW5lIEpBTjE5NzAgMTE2NDQ0NzM2MDAwMDAwMDAwTEwJLyogdGhlIHZhbHVlIGZvciAwMS8wMS8xOTcwIDAwOjAwICovCisKK2ludAorZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqdHogR0NDX1VOVVNFRCkKK3sKKyAgICB1bmlvbiB7CisJRklMRVRJTUUgZnQ7CisJbG9uZyBsb25nIHNpbmNlMTYwMTsJLyogdGltZSBzaW5jZSAxIEphbiAxNjAxIGluIDEwMG5zIHVuaXRzICovCisgICAgfSBkYXRhOworCisgICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJmRhdGEuZnQpOworICAgIHR2LT50dl91c2VjID0gKGxvbmcpICgoZGF0YS5zaW5jZTE2MDEgLyAxMExMKSAlIDEwMDAwMDBMTCk7CisgICAgdHYtPnR2X3NlYyA9IChsb25nKSAoKGRhdGEuc2luY2UxNjAxIC0gSkFOMTk3MCkgLyAxMDAwMDAwMExMKTsKKyAgICByZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aW4zMmNvbi93Y3dpZHRoLmMgYi9uY3Vyc2VzL3dpbjMyY29uL3djd2lkdGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGVmNjRhCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy93aW4zMmNvbi93Y3dpZHRoLmMKQEAgLTAsMCArMSw1MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorCitNT0RVTEVfSUQoIiRJZDogd2N3aWR0aC5jLHYgMS4yIDIwMTAvMDgvMDcgMjA6NTI6NDMgdG9tIEV4cCAkIikKKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisjZGVmaW5lIG1rX3djd2lkdGgodWNzKSAgICAgICAgICBfbmNfd2N3aWR0aCh1Y3MpCisjZGVmaW5lIG1rX3djc3dpZHRoKHB3Y3MsIG4pICAgICBfbmNfd2Nzd2lkdGgocHdjcywgbikKKyNkZWZpbmUgbWtfd2N3aWR0aF9jamsodWNzKSAgICAgIF9uY193Y3dpZHRoX2Nqayh1Y3MpCisjZGVmaW5lIG1rX3djc3dpZHRoX2Nqayhwd2NzLCBuKSBfbmNfd2Nzd2lkdGhfY2prKHB3Y3MsIG4pCisKK2V4dGVybiBpbnQgbWtfd2N3aWR0aCh3Y2hhcl90KTsKK2V4dGVybiBpbnQgbWtfd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOworZXh0ZXJuIGludCBta193Y3dpZHRoX2Nqayh3Y2hhcl90KTsKK2V4dGVybiBpbnQgbWtfd2Nzd2lkdGhfY2prKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKKworI2luY2x1ZGUgPHdjd2lkdGguaD4KKyNlbHNlCit2b2lkIF9uY19lbXB0eV93Y3dpZHRoKHZvaWQpOwordm9pZAorX25jX2VtcHR5X3djd2lkdGgodm9pZCkKK3sKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbmN1cnNlcy93aW4zMmNvbi93aW5fZHJpdmVyLmMgYi9uY3Vyc2VzL3dpbjMyY29uL3dpbl9kcml2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNjZmVkCi0tLSAvZGV2L251bGwKKysrIGIvbmN1cnNlcy93aW4zMmNvbi93aW5fZHJpdmVyLmMKQEAgLTAsMCArMSwyMjY0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogIEF1dGhvcjogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFRPRE8gLSBHZXRNb3VzZVBvcyhQT0lOVCAqIHJlc3VsdCkgZnJvbSBudGNvbmlvLmMKKyAqIFRPRE8gLSBpbXBsZW1lbnQgbm9kZWxheQorICogVE9ETyAtIGltcHJvdmUgc2NyZWVuLXJlcGFpbnRpbmcgcGVyZm9ybWFuY2UsIHVzaW5nIGltcGxpZWQgd3JhcGFyb3VuZCB0byByZWR1Y2Ugd3JpdGUncworICogVE9ETyAtIG1ha2UgaXQgb3B0aW9uYWwgd2hldGhlciBzY3JlZW4gaXMgcmVzdG9yZWQgb3Igbm90IHdoZW4gbm9uLWJ1ZmZlcmVkCisgKi8KKworI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+CisKKyNpZmRlZiBfX01JTkdXMzJfXworI2luY2x1ZGUgPHRjaGFyLmg+CisjZWxzZQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxpby5oPgorCisjZGVmaW5lIFBTQVBJX1ZFUlNJT04gMgorI2luY2x1ZGUgPHBzYXBpLmg+CisKKyNkZWZpbmUgQ1VSIG15X3Rlcm0udHlwZS4KKworTU9EVUxFX0lEKCIkSWQ6IHdpbl9kcml2ZXIuYyx2IDEuNTUgMjAxNS8wMi8yOCAyMTozMDoyMyB0b20gRXhwICQiKQorCisjaWZuZGVmIF9fR05VQ19fCisjICBlcnJvciBXZSBuZWVkIEdDQyB0byBjb21waWxlIGZvciBNaW5HVworI2VuZGlmCisKKyNkZWZpbmUgV0lOTUFHSUMgTkNEUlZfTUFHSUMoTkNEUlZfV0lOQ09OU09MRSkKKworI2RlZmluZSBFWFBfT1BUSU1JWkUgMAorCisjZGVmaW5lIGFycmF5X2xlbmd0aChhKSAoc2l6ZW9mKGEpL3NpemVvZihhWzBdKSkKKworc3RhdGljIGJvb2wgSW5pdENvbnNvbGUodm9pZCk7CitzdGF0aWMgYm9vbCBva0NvbnNvbGVIYW5kbGUoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqKTsKKworI2RlZmluZSBBc3NlcnRUQ0IoKSBhc3NlcnQoVENCICE9IDAgJiYgKFRDQi0+bWFnaWMgPT0gV0lOTUFHSUMpKQorI2RlZmluZSBTZXRTUCgpICAgICBhc3NlcnQoVENCLT5jc3AgIT0gMCk7IHNwID0gVENCLT5jc3A7ICh2b2lkKSBzcAorCisjZGVmaW5lIEdlbk1hcCh2S2V5LGtleSkgTUFLRUxPTkcoa2V5LCB2S2V5KQorCisjZGVmaW5lIEFkanVzdFkoKSAoQ09OLmJ1ZmZlcmVkID8gMCA6IChpbnQpIENPTi5TQkkuc3JXaW5kb3cuVG9wKQorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKyNkZWZpbmUgd3JpdGVfc2NyZWVuIFdyaXRlQ29uc29sZU91dHB1dFcKKyNkZWZpbmUgcmVhZF9zY3JlZW4gIFJlYWRDb25zb2xlT3V0cHV0VworI2Vsc2UKKyNkZWZpbmUgd3JpdGVfc2NyZWVuIFdyaXRlQ29uc29sZU91dHB1dAorI2RlZmluZSByZWFkX3NjcmVlbiAgUmVhZENvbnNvbGVPdXRwdXQKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgTE9ORyBrZXlsaXN0W10gPQoreworICAgIEdlbk1hcChWS19QUklPUiwgS0VZX1BQQUdFKSwKKyAgICBHZW5NYXAoVktfTkVYVCwgS0VZX05QQUdFKSwKKyAgICBHZW5NYXAoVktfRU5ELCBLRVlfRU5EKSwKKyAgICBHZW5NYXAoVktfSE9NRSwgS0VZX0hPTUUpLAorICAgIEdlbk1hcChWS19MRUZULCBLRVlfTEVGVCksCisgICAgR2VuTWFwKFZLX1VQLCBLRVlfVVApLAorICAgIEdlbk1hcChWS19SSUdIVCwgS0VZX1JJR0hUKSwKKyAgICBHZW5NYXAoVktfRE9XTiwgS0VZX0RPV04pLAorICAgIEdlbk1hcChWS19ERUxFVEUsIEtFWV9EQyksCisgICAgR2VuTWFwKFZLX0lOU0VSVCwgS0VZX0lDKQorfTsKK3N0YXRpYyBjb25zdCBMT05HIGFuc2lfa2V5c1tdID0KK3sKKyAgICBHZW5NYXAoVktfUFJJT1IsICdJJyksCisgICAgR2VuTWFwKFZLX05FWFQsICdRJyksCisgICAgR2VuTWFwKFZLX0VORCwgJ08nKSwKKyAgICBHZW5NYXAoVktfSE9NRSwgJ0gnKSwKKyAgICBHZW5NYXAoVktfTEVGVCwgJ0snKSwKKyAgICBHZW5NYXAoVktfVVAsICdIJyksCisgICAgR2VuTWFwKFZLX1JJR0hULCAnTScpLAorICAgIEdlbk1hcChWS19ET1dOLCAnUCcpLAorICAgIEdlbk1hcChWS19ERUxFVEUsICdTJyksCisgICAgR2VuTWFwKFZLX0lOU0VSVCwgJ1InKQorfTsKKyNkZWZpbmUgTl9JTkkgKChpbnQpYXJyYXlfbGVuZ3RoKGtleWxpc3QpKQorI2RlZmluZSBGS0VZUyAyNAorI2RlZmluZSBNQVBTSVpFIChGS0VZUyArIE5fSU5JKQorI2RlZmluZSBOVU1QQUlSUyA2NAorCisvKiAgIEEgcHJvY2VzcyBjYW4gb25seSBoYXZlIGEgc2luZ2xlIGNvbnNvbGUsIHNvIGl0J3Mgc2FmZQorICAgICB0byBtYWludGFpbiBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IGl0IGluIGEgc2luZ2xlCisgICAgIHN0YXRpYyBzdHJ1Y3R1cmUuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgeworICAgIEJPT0wgaW5pdGlhbGl6ZWQ7CisgICAgQk9PTCBidWZmZXJlZDsKKyAgICBCT09MIHdpbmRvd19vbmx5OworICAgIEJPT0wgcHJvZ01vZGU7CisgICAgQk9PTCBpc01pblRUWTsKKyAgICBCT09MIGlzVGVybUluZm9Db25zb2xlOworICAgIEhBTkRMRSBvdXQ7CisgICAgSEFORExFIGlucDsKKyAgICBIQU5ETEUgaGRsOworICAgIEhBTkRMRSBsYXN0T3V0OworICAgIGludCBudW1CdXR0b25zOworICAgIERXT1JEIGFuc2lfbWFwW01BUFNJWkVdOworICAgIERXT1JEIG1hcFtNQVBTSVpFXTsKKyAgICBEV09SRCBybWFwW01BUFNJWkVdOworICAgIFdPUkQgcGFpcnNbTlVNUEFJUlNdOworICAgIENPT1JEIG9yaWdpbjsKKyAgICBDSEFSX0lORk8gKnNhdmVfc2NyZWVuOworICAgIENPT1JEIHNhdmVfc2l6ZTsKKyAgICBTTUFMTF9SRUNUIHNhdmVfcmVnaW9uOworICAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIFNCSTsKKyAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBzYXZlX1NCSTsKKyAgICBDT05TT0xFX0NVUlNPUl9JTkZPIHNhdmVfQ0k7Cit9IENPTjsKKworc3RhdGljIEJPT0wgY29uc29sZV9pbml0aWFsaXplZCA9IEZBTFNFOworCitzdGF0aWMgV09SRAorTWFwQ29sb3IoYm9vbCBmb3JlLCBpbnQgY29sb3IpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBfY21hcFtdID0KKyAgICB7MCwgNCwgMiwgNiwgMSwgNSwgMywgN307CisgICAgaW50IGE7CisgICAgaWYgKGNvbG9yIDwgMCB8fCBjb2xvciA+IDcpCisJYSA9IGZvcmUgPyA3IDogMDsKKyAgICBlbHNlCisJYSA9IF9jbWFwW2NvbG9yXTsKKyAgICBpZiAoIWZvcmUpCisJYSA9IGEgPDwgNDsKKyAgICByZXR1cm4gKFdPUkQpIGE7Cit9CisKKyNkZWZpbmUgUmV2QXR0cihhdHRyKSBcCisJICAgICAgIChXT1JEKSAoKChhdHRyKSAmIDB4ZmYwMCkgfCBcCisJCSAgICAgICgoKChhdHRyKSAmIDB4MDcpIDw8IDQpIHwgXAorCQkgICAgICAgKCgoYXR0cikgJiAweDcwKSA+PiA0KSkpCisKK3N0YXRpYyBXT1JECitNYXBBdHRyKFdPUkQgcmVzLCBhdHRyX3QgY2gpCit7CisgICAgaWYgKGNoICYgQV9DT0xPUikgeworCWludCBwOworCisJcCA9IFBhaXJOdW1iZXIoY2gpOworCWlmIChwID4gMCAmJiBwIDwgTlVNUEFJUlMpIHsKKwkgICAgV09SRCBhOworCSAgICBhID0gQ09OLnBhaXJzW3BdOworCSAgICByZXMgPSAoV09SRCkgKChyZXMgJiAweGZmMDApIHwgYSk7CisJfQorICAgIH0KKworICAgIGlmIChjaCAmIEFfUkVWRVJTRSkgeworCXJlcyA9IFJldkF0dHIocmVzKTsKKyAgICB9CisKKyAgICBpZiAoY2ggJiBBX1NUQU5ET1VUKSB7CisJcmVzID0gUmV2QXR0cihyZXMpIHwgQkFDS0dST1VORF9JTlRFTlNJVFk7CisgICAgfQorCisgICAgaWYgKGNoICYgQV9CT0xEKQorCXJlcyB8PSBGT1JFR1JPVU5EX0lOVEVOU0lUWTsKKworICAgIGlmIChjaCAmIEFfRElNKQorCXJlcyB8PSBCQUNLR1JPVU5EX0lOVEVOU0lUWTsKKworICAgIHJldHVybiByZXM7Cit9CisKKyNpZiAwCQkJCS8qIGRlZiBUUkFDRSAqLworc3RhdGljIHZvaWQKK2R1bXBfc2NyZWVuKGNvbnN0IGNoYXIgKmZuLCBpbnQgbG4pCit7CisgICAgaW50IG1heF9jZWxscyA9IChDT04uU0JJLmR3U2l6ZS5ZICogKDEgKyBDT04uU0JJLmR3U2l6ZS5YKSkgKyAxOworICAgIGNoYXIgb3V0cHV0W21heF9jZWxsc107CisgICAgQ0hBUl9JTkZPIHNhdmVfc2NyZWVuW21heF9jZWxsc107CisgICAgQ09PUkQgc2F2ZV9zaXplOworICAgIFNNQUxMX1JFQ1Qgc2F2ZV9yZWdpb247CisgICAgQ09PUkQgYnVmZmVyQ29vcmQ7CisKKyAgICBUKCgiZHVtcF9zY3JlZW4gJXNAJWQiLCBmbiwgbG4pKTsKKworICAgIHNhdmVfcmVnaW9uLlRvcCA9IENPTi5TQkkuc3JXaW5kb3cuVG9wOworICAgIHNhdmVfcmVnaW9uLkxlZnQgPSBDT04uU0JJLnNyV2luZG93LkxlZnQ7CisgICAgc2F2ZV9yZWdpb24uQm90dG9tID0gQ09OLlNCSS5zcldpbmRvdy5Cb3R0b207CisgICAgc2F2ZV9yZWdpb24uUmlnaHQgPSBDT04uU0JJLnNyV2luZG93LlJpZ2h0OworCisgICAgc2F2ZV9zaXplLlggPSAoU0hPUlQpIChzYXZlX3JlZ2lvbi5SaWdodCAtIHNhdmVfcmVnaW9uLkxlZnQgKyAxKTsKKyAgICBzYXZlX3NpemUuWSA9IChTSE9SVCkgKHNhdmVfcmVnaW9uLkJvdHRvbSAtIHNhdmVfcmVnaW9uLlRvcCArIDEpOworCisgICAgYnVmZmVyQ29vcmQuWCA9IGJ1ZmZlckNvb3JkLlkgPSAwOworCisgICAgaWYgKHJlYWRfc2NyZWVuKENPTi5oZGwsCisJCSAgICBzYXZlX3NjcmVlbiwKKwkJICAgIHNhdmVfc2l6ZSwKKwkJICAgIGJ1ZmZlckNvb3JkLAorCQkgICAgJnNhdmVfcmVnaW9uKSkgeworCWludCBpLCBqOworCWludCBpaiA9IDA7CisJaW50IGsgPSAwOworCisJZm9yIChpID0gc2F2ZV9yZWdpb24uVG9wOyBpIDw9IHNhdmVfcmVnaW9uLkJvdHRvbTsgKytpKSB7CisJICAgIGZvciAoaiA9IHNhdmVfcmVnaW9uLkxlZnQ7IGogPD0gc2F2ZV9yZWdpb24uUmlnaHQ7ICsraikgeworCQlvdXRwdXRbaysrXSA9IHNhdmVfc2NyZWVuW2lqKytdLkNoYXIuQXNjaWlDaGFyOworCSAgICB9CisJICAgIG91dHB1dFtrKytdID0gJ1xuJzsKKwl9CisJb3V0cHV0W2tdID0gMDsKKworCVQoKCJEVU1QOiAlZCwlZCAtICVkLCVkIiwKKwkgICBzYXZlX3JlZ2lvbi5Ub3AsCisJICAgc2F2ZV9yZWdpb24uTGVmdCwKKwkgICBzYXZlX3JlZ2lvbi5Cb3R0b20sCisJICAgc2F2ZV9yZWdpb24uUmlnaHQpKTsKKwlUKCgiJXMiLCBvdXRwdXQpKTsKKyAgICB9Cit9CisKKyNlbHNlCisjZGVmaW5lIGR1bXBfc2NyZWVuKGZuLGxuKQkvKiBub3RoaW5nICovCisjZW5kaWYKKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisvKgorICogVE9ETzogc3VwcG9ydCBzdXJyb2dhdGUgcGFpcnMKKyAqIFRPRE86IHN1cHBvcnQgY29tYmluaW5nIGNoYXJhY3RlcnMKKyAqIFRPRE86IHN1cHBvcnQgYWNzYworICogVE9ETzogX25jX3dhY3Mgc2hvdWxkIGJlIHBhcnQgb2Ygc3AuCisgKi8KK3N0YXRpYyBCT09MCitjb25fd3JpdGUxNihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgeSwgaW50IHgsIGNjaGFyX3QgKnN0ciwgaW50IGxpbWl0KQoreworICAgIGludCBhY3R1YWwgPSAwOworICAgIENIQVJfSU5GTyBjaVtsaW1pdF07CisgICAgQ09PUkQgbG9jLCBzaXo7CisgICAgU01BTExfUkVDVCByZWM7CisgICAgaW50IGk7CisgICAgY2NoYXJfdCBjaDsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKworICAgIGZvciAoaSA9IGFjdHVhbCA9IDA7IGkgPCBsaW1pdDsgaSsrKSB7CisJY2ggPSBzdHJbaV07CisJaWYgKGlzV2lkZWNFeHQoY2gpKQorCSAgICBjb250aW51ZTsKKwljaVthY3R1YWxdLkNoYXIuVW5pY29kZUNoYXIgPSBDaGFyT2YoY2gpOworCWNpW2FjdHVhbF0uQXR0cmlidXRlcyA9IE1hcEF0dHIoQ09OLlNCSS53QXR0cmlidXRlcywKKwkJCQkJQXR0ck9mKGNoKSk7CisJaWYgKEF0dHJPZihjaCkgJiBBX0FMVENIQVJTRVQpIHsKKwkgICAgaWYgKF9uY193YWNzKSB7CisJCWludCB3aGljaCA9IENoYXJPZihjaCk7CisJCWlmICh3aGljaCA+IDAKKwkJICAgICYmIHdoaWNoIDwgQUNTX0xFTgorCQkgICAgJiYgQ2hhck9mKF9uY193YWNzW3doaWNoXSkgIT0gMCkgeworCQkgICAgY2lbYWN0dWFsXS5DaGFyLlVuaWNvZGVDaGFyID0gQ2hhck9mKF9uY193YWNzW3doaWNoXSk7CisJCX0gZWxzZSB7CisJCSAgICBjaVthY3R1YWxdLkNoYXIuVW5pY29kZUNoYXIgPSAnICc7CisJCX0KKwkgICAgfQorCX0KKwkrK2FjdHVhbDsKKyAgICB9CisKKyAgICBsb2MuWCA9IChTSE9SVCkgMDsKKyAgICBsb2MuWSA9IChTSE9SVCkgMDsKKyAgICBzaXouWCA9IChTSE9SVCkgYWN0dWFsOworICAgIHNpei5ZID0gMTsKKworICAgIHJlYy5MZWZ0ID0gKFNIT1JUKSB4OworICAgIHJlYy5Ub3AgPSAoU0hPUlQpICh5ICsgQWRqdXN0WSgpKTsKKyAgICByZWMuUmlnaHQgPSAoU0hPUlQpICh4ICsgbGltaXQgLSAxKTsKKyAgICByZWMuQm90dG9tID0gcmVjLlRvcDsKKworICAgIHJldHVybiB3cml0ZV9zY3JlZW4oQ09OLmhkbCwgY2ksIHNpeiwgbG9jLCAmcmVjKTsKK30KKyNkZWZpbmUgY29uX3dyaXRlKHRjYiwgeSwgeCwgc3RyLCBuKSBjb25fd3JpdGUxNih0Y2IsIHksIHgsIHN0ciwgbikKKyNlbHNlCitzdGF0aWMgQk9PTAorY29uX3dyaXRlOChURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgeSwgaW50IHgsIGNodHlwZSAqc3RyLCBpbnQgbikKK3sKKyAgICBDSEFSX0lORk8gY2lbbl07CisgICAgQ09PUkQgbG9jLCBzaXo7CisgICAgU01BTExfUkVDVCByZWM7CisgICAgaW50IGk7CisgICAgY2h0eXBlIGNoOworICAgIFNDUkVFTiAqc3A7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCWNoID0gc3RyW2ldOworCWNpW2ldLkNoYXIuQXNjaWlDaGFyID0gQ2hDaGFyT2YoY2gpOworCWNpW2ldLkF0dHJpYnV0ZXMgPSBNYXBBdHRyKENPTi5TQkkud0F0dHJpYnV0ZXMsCisJCQkJICAgQ2hBdHRyT2YoY2gpKTsKKwlpZiAoQ2hBdHRyT2YoY2gpICYgQV9BTFRDSEFSU0VUKSB7CisJICAgIGlmIChzcC0+X2Fjc19tYXApCisJCWNpW2ldLkNoYXIuQXNjaWlDaGFyID0KKwkJQ2hDaGFyT2YoTkNVUlNFU19TUF9OQU1FKF9uY19hY3NfY2hhcikgKHNwLCBDaENoYXJPZihjaCkpKTsKKwl9CisgICAgfQorCisgICAgbG9jLlggPSAoc2hvcnQpIDA7CisgICAgbG9jLlkgPSAoc2hvcnQpIDA7CisgICAgc2l6LlggPSAoc2hvcnQpIG47CisgICAgc2l6LlkgPSAxOworCisgICAgcmVjLkxlZnQgPSAoc2hvcnQpIHg7CisgICAgcmVjLlRvcCA9IChzaG9ydCkgeTsKKyAgICByZWMuUmlnaHQgPSAoc2hvcnQpICh4ICsgbiAtIDEpOworICAgIHJlYy5Cb3R0b20gPSByZWMuVG9wOworCisgICAgcmV0dXJuIHdyaXRlX3NjcmVlbihDT04uaGRsLCBjaSwgc2l6LCBsb2MsICZyZWMpOworfQorI2RlZmluZSBjb25fd3JpdGUodGNiLCB5LCB4LCBzdHIsIG4pIGNvbl93cml0ZTgodGNiLCB5LCB4LCBzdHIsIG4pCisjZW5kaWYKKworI2lmIEVYUF9PUFRJTUlaRQorLyoKKyAqIENvbXBhcmluZyBuZXcvY3VycmVudCBzY3JlZW5zLCBkZXRlcm1pbmUgdGhlIGxhc3QgY29sdW1uLWluZGV4IGZvciBhIGNoYW5nZQorICogYmVnaW5uaW5nIG9uIHRoZSBnaXZlbiByb3csY29sIHBvc2l0aW9uLiAgVW5saWtlIGEgc2VyaWFsIHRlcm1pbmFsLCB0aGVyZSBpcworICogbm8gY29zdCBmb3IgIm1vdmluZyIgdGhlICJjdXJzb3IiIG9uIHRoZSBsaW5lIGFzIHdlIHVwZGF0ZSBpdC4KKyAqLworc3RhdGljIGludAorZmluZF9lbmRfb2ZfY2hhbmdlKFNDUkVFTiAqc3AsIGludCByb3csIGludCBjb2wpCit7CisgICAgaW50IHJlc3VsdCA9IGNvbDsKKyAgICBzdHJ1Y3QgbGRhdCAqY3VyZGF0ID0gQ3VyU2NyZWVuKHNwKS0+X2xpbmUgKyByb3c7CisgICAgc3RydWN0IGxkYXQgKm5ld2RhdCA9IE5ld1NjcmVlbihzcCktPl9saW5lICsgcm93OworCisgICAgd2hpbGUgKGNvbCA8PSBuZXdkYXQtPmxhc3RjaGFyKSB7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwlpZiAoaXNXaWRlY0V4dChjdXJkYXQtPnRleHRbY29sXSkgfHwgaXNXaWRlY0V4dChuZXdkYXQtPnRleHRbY29sXSkpIHsKKwkgICAgcmVzdWx0ID0gY29sOworCX0gZWxzZSBpZiAobWVtY21wKCZjdXJkYXQtPnRleHRbY29sXSwKKwkJCSAgJm5ld2RhdC0+dGV4dFtjb2xdLAorCQkJICBzaXplb2YoY3VyZGF0LT50ZXh0WzBdKSkpIHsKKwkgICAgcmVzdWx0ID0gY29sOworCX0gZWxzZSB7CisJICAgIGJyZWFrOworCX0KKyNlbHNlCisJaWYgKGN1cmRhdC0+dGV4dFtjb2xdICE9IG5ld2RhdC0+dGV4dFtjb2xdKSB7CisJICAgIHJlc3VsdCA9IGNvbDsKKwl9IGVsc2UgeworCSAgICBicmVhazsKKwl9CisjZW5kaWYKKwkrK2NvbDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEdpdmVuIGEgcm93LGNvbCBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIGEgY2hhbmdlLWNodW5rLCBsb29rIGZvciB0aGUKKyAqIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBjaGFuZ2UtY2h1bmsuCisgKi8KK3N0YXRpYyBpbnQKK2ZpbmRfbmV4dF9jaGFuZ2UoU0NSRUVOICpzcCwgaW50IHJvdywgaW50IGNvbCkKK3sKKyAgICBzdHJ1Y3QgbGRhdCAqY3VyZGF0ID0gQ3VyU2NyZWVuKHNwKS0+X2xpbmUgKyByb3c7CisgICAgc3RydWN0IGxkYXQgKm5ld2RhdCA9IE5ld1NjcmVlbihzcCktPl9saW5lICsgcm93OworICAgIGludCByZXN1bHQgPSBuZXdkYXQtPmxhc3RjaGFyICsgMTsKKworICAgIHdoaWxlICgrK2NvbCA8PSBuZXdkYXQtPmxhc3RjaGFyKSB7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwlpZiAoaXNXaWRlY0V4dChjdXJkYXQtPnRleHRbY29sXSkgIT0gaXNXaWRlY0V4dChuZXdkYXQtPnRleHRbY29sXSkpIHsKKwkgICAgcmVzdWx0ID0gY29sOworCSAgICBicmVhazsKKwl9IGVsc2UgaWYgKG1lbWNtcCgmY3VyZGF0LT50ZXh0W2NvbF0sCisJCQkgICZuZXdkYXQtPnRleHRbY29sXSwKKwkJCSAgc2l6ZW9mKGN1cmRhdC0+dGV4dFswXSkpKSB7CisJICAgIHJlc3VsdCA9IGNvbDsKKwkgICAgYnJlYWs7CisJfQorI2Vsc2UKKwlpZiAoY3VyZGF0LT50ZXh0W2NvbF0gIT0gbmV3ZGF0LT50ZXh0W2NvbF0pIHsKKwkgICAgcmVzdWx0ID0gY29sOworCSAgICBicmVhazsKKwl9CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2RlZmluZSBFbmRDaGFuZ2UoZmlyc3QpIFwKKwlmaW5kX2VuZF9vZl9jaGFuZ2Uoc3AsIHksIGZpcnN0KQorI2RlZmluZSBOZXh0Q2hhbmdlKGxhc3QpIFwKKwlmaW5kX25leHRfY2hhbmdlKHNwLCB5LCBsYXN0KQorCisjZW5kaWYgLyogRVhQX09QVElNSVpFICovCisKKyNkZWZpbmUgTUFSS19OT0NIQU5HRSh3aW4scm93KSBcCisJCXdpbi0+X2xpbmVbcm93XS5maXJzdGNoYXIgPSBfTk9DSEFOR0U7IFwKKwkJd2luLT5fbGluZVtyb3ddLmxhc3RjaGFyICA9IF9OT0NIQU5HRQorCitzdGF0aWMgdm9pZAorc2VsZWN0QWN0aXZlSGFuZGxlKHZvaWQpCit7CisgICAgaWYgKENPTi5sYXN0T3V0ICE9IENPTi5oZGwpIHsKKwlDT04ubGFzdE91dCA9IENPTi5oZGw7CisJU2V0Q29uc29sZUFjdGl2ZVNjcmVlbkJ1ZmZlcihDT04ubGFzdE91dCk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbAorcmVzdG9yZV9vcmlnaW5hbF9zY3JlZW4odm9pZCkKK3sKKyAgICBDT09SRCBidWZmZXJDb29yZDsKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworICAgIFNNQUxMX1JFQ1Qgc2F2ZV9yZWdpb24gPSBDT04uc2F2ZV9yZWdpb247CisKKyAgICBUKCgiLi4uIHJlc3RvcmluZyAlcyIsIENPTi53aW5kb3dfb25seSA/ICJ3aW5kb3ciIDogImVudGlyZSBidWZmZXIiKSk7CisKKyAgICBidWZmZXJDb29yZC5YID0gKFNIT1JUKSAoQ09OLndpbmRvd19vbmx5ID8gQ09OLlNCSS5zcldpbmRvdy5MZWZ0IDogMCk7CisgICAgYnVmZmVyQ29vcmQuWSA9IChTSE9SVCkgKENPTi53aW5kb3dfb25seSA/IENPTi5TQkkuc3JXaW5kb3cuVG9wIDogMCk7CisKKyAgICBpZiAod3JpdGVfc2NyZWVuKENPTi5oZGwsCisJCSAgICAgQ09OLnNhdmVfc2NyZWVuLAorCQkgICAgIENPTi5zYXZlX3NpemUsCisJCSAgICAgYnVmZmVyQ29vcmQsCisJCSAgICAgJnNhdmVfcmVnaW9uKSkgeworCXJlc3VsdCA9IFRSVUU7CisJbXZjdXIoLTEsIC0xLCBMSU5FUyAtIDIsIDApOworCVQoKCIuLi4gcmVzdG9yZSBvcmlnaW5hbCBzY3JlZW4gY29udGVudHMgb2sgJWR4JWQgKCVkLCVkIC0gJWQsJWQpIiwKKwkgICBDT04uc2F2ZV9zaXplLlksCisJICAgQ09OLnNhdmVfc2l6ZS5YLAorCSAgIHNhdmVfcmVnaW9uLlRvcCwKKwkgICBzYXZlX3JlZ2lvbi5MZWZ0LAorCSAgIHNhdmVfcmVnaW9uLkJvdHRvbSwKKwkgICBzYXZlX3JlZ2lvbi5SaWdodCkpOworICAgIH0gZWxzZSB7CisJVCgoIi4uLiByZXN0b3JlIG9yaWdpbmFsIHNjcmVlbiBjb250ZW50cyBlcnIiKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3djb25fbmFtZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgICh2b2lkKSBUQ0I7CisgICAgcmV0dXJuICJ3aW4zMmNvbnNvbGUiOworfQorCitzdGF0aWMgaW50Cit3Y29uX2RvdXBkYXRlKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgaW50IHJlc3VsdCA9IEVSUjsKKyAgICBpbnQgeSwgbm9uZW1wdHksIG4sIHgwLCB4MSwgV2lkdGgsIEhlaWdodDsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgVCgoVF9DQUxMRUQoIndpbjMyY29uOjp3Y29uX2RvdXBkYXRlKCVwKSIpLCBUQ0IpKTsKKyAgICBpZiAob2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKwlTZXRTUCgpOworCisJV2lkdGggPSBzY3JlZW5fY29sdW1ucyhzcCk7CisJSGVpZ2h0ID0gc2NyZWVuX2xpbmVzKHNwKTsKKwlub25lbXB0eSA9IG1pbihIZWlnaHQsIE5ld1NjcmVlbihzcCktPl9tYXh5ICsgMSk7CisKKwlUKCgiLi4uICVkeCVkIGNsZWFyIGN1cjolZCBuZXc6JWQiLAorCSAgIEhlaWdodCwgV2lkdGgsCisJICAgQ3VyU2NyZWVuKHNwKS0+X2NsZWFyLAorCSAgIE5ld1NjcmVlbihzcCktPl9jbGVhcikpOworCisJaWYgKFNQX1BBUk0tPl9lbmR3aW4pIHsKKworCSAgICBUKCgiY29taW5nIGJhY2sgZnJvbSBzaGVsbCBtb2RlIikpOworCSAgICBOQ1VSU0VTX1NQX05BTUUocmVzZXRfcHJvZ19tb2RlKSAoTkNVUlNFU19TUF9BUkcpOworCisJICAgIE5DVVJTRVNfU1BfTkFNRShfbmNfbXZjdXJfcmVzdW1lKSAoTkNVUlNFU19TUF9BUkcpOworCSAgICBOQ1VSU0VTX1NQX05BTUUoX25jX3NjcmVlbl9yZXN1bWUpIChOQ1VSU0VTX1NQX0FSRyk7CisJICAgIFNQX1BBUk0tPl9tb3VzZV9yZXN1bWUoU1BfUEFSTSk7CisKKwkgICAgU1BfUEFSTS0+X2VuZHdpbiA9IEZBTFNFOworCX0KKworCWlmICgoQ3VyU2NyZWVuKHNwKS0+X2NsZWFyIHx8IE5ld1NjcmVlbihzcCktPl9jbGVhcikpIHsKKwkgICAgaW50IHg7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwkgICAgY2NoYXJfdCBlbXB0eVtXaWR0aF07CisJICAgIHdjaGFyX3QgYmxhbmtbMl0gPQorCSAgICB7CisJCUwnICcsIEwnXDAnCisJICAgIH07CisKKwkgICAgZm9yICh4ID0gMDsgeCA8IFdpZHRoOyB4KyspCisJCXNldGNjaGFyKCZlbXB0eVt4XSwgYmxhbmssIDAsIDAsIDApOworI2Vsc2UKKwkgICAgY2h0eXBlIGVtcHR5W1dpZHRoXTsKKworCSAgICBmb3IgKHggPSAwOyB4IDwgV2lkdGg7IHgrKykKKwkJZW1wdHlbeF0gPSAnICc7CisjZW5kaWYKKworCSAgICBmb3IgKHkgPSAwOyB5IDwgbm9uZW1wdHk7IHkrKykgeworCQljb25fd3JpdGUoVENCLCB5LCAwLCBlbXB0eSwgV2lkdGgpOworCQltZW1jcHkoZW1wdHksCisJCSAgICAgICBDdXJTY3JlZW4oc3ApLT5fbGluZVt5XS50ZXh0LAorCQkgICAgICAgKHNpemVfdCkgV2lkdGggKiBzaXplb2YoZW1wdHlbMF0pKTsKKwkgICAgfQorCSAgICBDdXJTY3JlZW4oc3ApLT5fY2xlYXIgPSBGQUxTRTsKKwkgICAgTmV3U2NyZWVuKHNwKS0+X2NsZWFyID0gRkFMU0U7CisJICAgIHRvdWNod2luKE5ld1NjcmVlbihzcCkpOworCSAgICBUKCgiLi4uIGNsZWFyZWQgJWR4JWQgbGluZXMgQCVkIG9mIHNjcmVlbiIsIG5vbmVtcHR5LCBXaWR0aCwKKwkgICAgICAgQWRqdXN0WSgpKSk7CisJfQorCisJZm9yICh5ID0gMDsgeSA8IG5vbmVtcHR5OyB5KyspIHsKKwkgICAgeDAgPSBOZXdTY3JlZW4oc3ApLT5fbGluZVt5XS5maXJzdGNoYXI7CisJICAgIGlmICh4MCAhPSBfTk9DSEFOR0UpIHsKKyNpZiBFWFBfT1BUSU1JWkUKKwkJaW50IHgyOworCQlpbnQgbGltaXQgPSBOZXdTY3JlZW4oc3ApLT5fbGluZVt5XS5sYXN0Y2hhcjsKKwkJd2hpbGUgKCh4MSA9IEVuZENoYW5nZSh4MCkpIDw9IGxpbWl0KSB7CisJCSAgICB3aGlsZSAoKHgyID0gTmV4dENoYW5nZSh4MSkpIDw9IGxpbWl0ICYmIHgyIDw9ICh4MSArIDIpKSB7CisJCQl4MSA9IHgyOworCQkgICAgfQorCQkgICAgbiA9IHgxIC0geDAgKyAxOworCQkgICAgbWVtY3B5KCZDdXJTY3JlZW4oc3ApLT5fbGluZVt5XS50ZXh0W3gwXSwKKwkJCSAgICZOZXdTY3JlZW4oc3ApLT5fbGluZVt5XS50ZXh0W3gwXSwKKwkJCSAgIG4gKiBzaXplb2YoQ3VyU2NyZWVuKHNwKS0+X2xpbmVbeV0udGV4dFt4MF0pKTsKKwkJICAgIGNvbl93cml0ZShUQ0IsCisJCQkgICAgICB5LAorCQkJICAgICAgeDAsCisJCQkgICAgICAmQ3VyU2NyZWVuKHNwKS0+X2xpbmVbeV0udGV4dFt4MF0sIG4pOworCQkgICAgeDAgPSBOZXh0Q2hhbmdlKHgxKTsKKwkJfQorCisJCS8qIG1hcmsgbGluZSBjaGFuZ2VkIHN1Y2Nlc3NmdWxseSAqLworCQlpZiAoeSA8PSBOZXdTY3JlZW4oc3ApLT5fbWF4eSkgeworCQkgICAgTUFSS19OT0NIQU5HRShOZXdTY3JlZW4oc3ApLCB5KTsKKwkJfQorCQlpZiAoeSA8PSBDdXJTY3JlZW4oc3ApLT5fbWF4eSkgeworCQkgICAgTUFSS19OT0NIQU5HRShDdXJTY3JlZW4oc3ApLCB5KTsKKwkJfQorI2Vsc2UKKwkJeDEgPSBOZXdTY3JlZW4oc3ApLT5fbGluZVt5XS5sYXN0Y2hhcjsKKwkJbiA9IHgxIC0geDAgKyAxOworCQlpZiAobiA+IDApIHsKKwkJICAgIG1lbWNweSgmQ3VyU2NyZWVuKHNwKS0+X2xpbmVbeV0udGV4dFt4MF0sCisJCQkgICAmTmV3U2NyZWVuKHNwKS0+X2xpbmVbeV0udGV4dFt4MF0sCisJCQkgICAoc2l6ZV90KSBuICogc2l6ZW9mKEN1clNjcmVlbihzcCktPl9saW5lW3ldLnRleHRbeDBdKSk7CisJCSAgICBjb25fd3JpdGUoVENCLAorCQkJICAgICAgeSwKKwkJCSAgICAgIHgwLAorCQkJICAgICAgJkN1clNjcmVlbihzcCktPl9saW5lW3ldLnRleHRbeDBdLCBuKTsKKworCQkgICAgLyogbWFyayBsaW5lIGNoYW5nZWQgc3VjY2Vzc2Z1bGx5ICovCisJCSAgICBpZiAoeSA8PSBOZXdTY3JlZW4oc3ApLT5fbWF4eSkgeworCQkJTUFSS19OT0NIQU5HRShOZXdTY3JlZW4oc3ApLCB5KTsKKwkJICAgIH0KKwkJICAgIGlmICh5IDw9IEN1clNjcmVlbihzcCktPl9tYXh5KSB7CisJCQlNQVJLX05PQ0hBTkdFKEN1clNjcmVlbihzcCksIHkpOworCQkgICAgfQorCQl9CisjZW5kaWYKKwkgICAgfQorCX0KKworCS8qIHB1dCBldmVyeXRoaW5nIGJhY2sgaW4gc3luYyAqLworCWZvciAoeSA9IG5vbmVtcHR5OyB5IDw9IE5ld1NjcmVlbihzcCktPl9tYXh5OyB5KyspIHsKKwkgICAgTUFSS19OT0NIQU5HRShOZXdTY3JlZW4oc3ApLCB5KTsKKwl9CisJZm9yICh5ID0gbm9uZW1wdHk7IHkgPD0gQ3VyU2NyZWVuKHNwKS0+X21heHk7IHkrKykgeworCSAgICBNQVJLX05PQ0hBTkdFKEN1clNjcmVlbihzcCksIHkpOworCX0KKworCWlmICghTmV3U2NyZWVuKHNwKS0+X2xlYXZlb2spIHsKKwkgICAgQ3VyU2NyZWVuKHNwKS0+X2N1cnggPSBOZXdTY3JlZW4oc3ApLT5fY3VyeDsKKwkgICAgQ3VyU2NyZWVuKHNwKS0+X2N1cnkgPSBOZXdTY3JlZW4oc3ApLT5fY3VyeTsKKworCSAgICBUQ0ItPmRydi0+dGRfaHdjdXIoVENCLAorCQkJICAgICAgIDAsIDAsCisJCQkgICAgICAgQ3VyU2NyZWVuKHNwKS0+X2N1cnksIEN1clNjcmVlbihzcCktPl9jdXJ4KTsKKwl9CisJc2VsZWN0QWN0aXZlSGFuZGxlKCk7CisJcmVzdWx0ID0gT0s7CisgICAgfQorICAgIHJldHVybkNvZGUocmVzdWx0KTsKK30KKworc3RhdGljIGJvb2wKK3djb25fQ2FuSGFuZGxlKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsCisJICAgICAgIGNvbnN0IGNoYXIgKnRuYW1lLAorCSAgICAgICBpbnQgKmVycnJldCBHQ0NfVU5VU0VEKQoreworICAgIGJvb2wgY29kZSA9IEZBTFNFOworCisgICAgVCgoVF9DQUxMRUQoIndpbjMyY29uOjp3Y29uX0NhbkhhbmRsZSglcCkiKSwgVENCKSk7CisKKyAgICBhc3NlcnQoKFRDQiAhPSAwKSAmJiAodG5hbWUgIT0gMCkpOworCisgICAgVENCLT5tYWdpYyA9IFdJTk1BR0lDOworCisgICAgaWYgKHRuYW1lID09IDAgfHwgKnRuYW1lID09IDApCisJY29kZSA9IFRSVUU7CisgICAgZWxzZSBpZiAodG5hbWUgIT0gMCAmJiAqdG5hbWUgPT0gJyMnKSB7CisJLyoKKwkgKiBVc2UgIiMiIChhIGNoYXJhY3RlciB3aGljaCBjYW5ub3QgYmVnaW4gYSB0ZXJtaW5hbCdzIG5hbWUpIHRvCisJICogc2VsZWN0IHNwZWNpZmljIGRyaXZlciBmcm9tIHRoZSB0YWJsZS4KKwkgKgorCSAqIEluIHByaW5jaXBsZSwgd2UgY291bGQgaGF2ZSBtb3JlIHRoYW4gb25lIG5vbi10ZXJtaW5mbyBkcml2ZXIsCisJICogZS5nLiwgIndpbjMyZ3VpIi4KKwkgKi8KKwlzaXplX3QgbiA9IHN0cmxlbih0bmFtZSArIDEpOworCWlmIChuICE9IDAKKwkgICAgJiYgKChzdHJuY21wKHRuYW1lICsgMSwgIndpbjMyY29uc29sZSIsIG4pID09IDApCisJCXx8IChzdHJuY21wKHRuYW1lICsgMSwgIndpbjMyY29uIiwgbikgPT0gMCkpKSB7CisJICAgIGNvZGUgPSBUUlVFOworCX0KKyAgICB9IGVsc2UgaWYgKHRuYW1lICE9IDAgJiYgc3RyaWNtcCh0bmFtZSwgInVua25vd24iKSA9PSAwKSB7CisJY29kZSA9IFRSVUU7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGludGVudGlvbmFsLCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBicmVha2FnZSBvZiBhcHBsaWNhdGlvbnMKKyAgICAgKiB1c2luZyA8dGVybS5oPiBzeW1ib2xzLgorICAgICAqLworICAgIGlmIChjb2RlICYmIChUQ0ItPnRlcm0udHlwZS5Cb29sZWFucyA9PSAwKSkgeworCV9uY19pbml0X3Rlcm10eXBlKCYoVENCLT50ZXJtLnR5cGUpKTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGUpIHsKKwlpZiAoX25jX21pbmd3X2lzY29uc29sZSgwKSkKKwkgICAgQ09OLmlzVGVybUluZm9Db25zb2xlID0gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuQm9vbChjb2RlKTsKK30KKworc3RhdGljIGludAord2Nvbl9kb2JlZXBmbGFzaChURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCQkgaW50IGJlZXBGbGFnKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgaW50IHJlcyA9IEVSUjsKKworICAgIGludCBoaWdoID0gKENPTi5TQkkuc3JXaW5kb3cuQm90dG9tIC0gQ09OLlNCSS5zcldpbmRvdy5Ub3AgKyAxKTsKKyAgICBpbnQgd2lkZSA9IChDT04uU0JJLnNyV2luZG93LlJpZ2h0IC0gQ09OLlNCSS5zcldpbmRvdy5MZWZ0ICsgMSk7CisgICAgaW50IG1heF9jZWxscyA9IChoaWdoICogd2lkZSk7CisgICAgaW50IGk7CisKKyAgICBDSEFSX0lORk8gdGhpc19zY3JlZW5bbWF4X2NlbGxzXTsKKyAgICBDSEFSX0lORk8gdGhhdF9zY3JlZW5bbWF4X2NlbGxzXTsKKyAgICBDT09SRCB0aGlzX3NpemU7CisgICAgU01BTExfUkVDVCB0aGlzX3JlZ2lvbjsKKyAgICBDT09SRCBidWZmZXJDb29yZDsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisJdGhpc19yZWdpb24uVG9wID0gQ09OLlNCSS5zcldpbmRvdy5Ub3A7CisJdGhpc19yZWdpb24uTGVmdCA9IENPTi5TQkkuc3JXaW5kb3cuTGVmdDsKKwl0aGlzX3JlZ2lvbi5Cb3R0b20gPSBDT04uU0JJLnNyV2luZG93LkJvdHRvbTsKKwl0aGlzX3JlZ2lvbi5SaWdodCA9IENPTi5TQkkuc3JXaW5kb3cuUmlnaHQ7CisKKwl0aGlzX3NpemUuWCA9IChTSE9SVCkgd2lkZTsKKwl0aGlzX3NpemUuWSA9IChTSE9SVCkgaGlnaDsKKworCWJ1ZmZlckNvb3JkLlggPSB0aGlzX3JlZ2lvbi5MZWZ0OworCWJ1ZmZlckNvb3JkLlkgPSB0aGlzX3JlZ2lvbi5Ub3A7CisKKwlpZiAoIWJlZXBGbGFnICYmCisJICAgIHJlYWRfc2NyZWVuKENPTi5oZGwsCisJCQl0aGlzX3NjcmVlbiwKKwkJCXRoaXNfc2l6ZSwKKwkJCWJ1ZmZlckNvb3JkLAorCQkJJnRoaXNfcmVnaW9uKSkgeworCisJICAgIG1lbWNweSh0aGF0X3NjcmVlbiwgdGhpc19zY3JlZW4sIHNpemVvZih0aGF0X3NjcmVlbikpOworCisJICAgIGZvciAoaSA9IDA7IGkgPCBtYXhfY2VsbHM7IGkrKykgeworCQl0aGF0X3NjcmVlbltpXS5BdHRyaWJ1dGVzID0gUmV2QXR0cih0aGF0X3NjcmVlbltpXS5BdHRyaWJ1dGVzKTsKKwkgICAgfQorCisJICAgIHdyaXRlX3NjcmVlbihDT04uaGRsLCB0aGF0X3NjcmVlbiwgdGhpc19zaXplLCBidWZmZXJDb29yZCwgJnRoaXNfcmVnaW9uKTsKKwkgICAgU2xlZXAoMjAwKTsKKwkgICAgd3JpdGVfc2NyZWVuKENPTi5oZGwsIHRoaXNfc2NyZWVuLCB0aGlzX3NpemUsIGJ1ZmZlckNvb3JkLCAmdGhpc19yZWdpb24pOworCisJfSBlbHNlIHsKKwkgICAgTWVzc2FnZUJlZXAoTUJfSUNPTldBUk5JTkcpOwkvKiBNQl9PSyBtaWdodCBiZSBiZXR0ZXIgKi8KKwl9CisJcmVzID0gT0s7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKK3djb25fcHJpbnQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICBjaGFyICpkYXRhIEdDQ19VTlVTRUQsCisJICAgaW50IGxlbiBHQ0NfVU5VU0VEKQoreworICAgIFNDUkVFTiAqc3A7CisKKyAgICBBc3NlcnRUQ0IoKTsKKyAgICBTZXRTUCgpOworCisgICAgcmV0dXJuIEVSUjsKK30KKworc3RhdGljIGludAord2Nvbl9kZWZhdWx0Y29sb3JzKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsCisJCSAgIGludCBmZyBHQ0NfVU5VU0VELAorCQkgICBpbnQgYmcgR0NDX1VOVVNFRCkKK3sKKyAgICBTQ1JFRU4gKnNwOworICAgIGludCBjb2RlID0gRVJSOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKworICAgIHJldHVybiAoY29kZSk7Cit9CisKK3N0YXRpYyBib29sCitnZXRfU0JJKHZvaWQpCit7CisgICAgYm9vbCByYyA9IEZBTFNFOworICAgIGlmIChHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhDT04uaGRsLCAmKENPTi5TQkkpKSkgeworCVQoKCJHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyIpKTsKKwlUKCgiLi4uIGJ1ZmZlcihYOiVkIFk6JWQpIiwKKwkgICBDT04uU0JJLmR3U2l6ZS5YLAorCSAgIENPTi5TQkkuZHdTaXplLlkpKTsKKwlUKCgiLi4uIHdpbmRvdyhYOiVkIFk6JWQpIiwKKwkgICBDT04uU0JJLmR3TWF4aW11bVdpbmRvd1NpemUuWCwKKwkgICBDT04uU0JJLmR3TWF4aW11bVdpbmRvd1NpemUuWSkpOworCVQoKCIuLi4gY3Vyc29yKFg6JWQgWTolZCkiLAorCSAgIENPTi5TQkkuZHdDdXJzb3JQb3NpdGlvbi5YLAorCSAgIENPTi5TQkkuZHdDdXJzb3JQb3NpdGlvbi5ZKSk7CisJVCgoIi4uLiBkaXNwbGF5KFRvcDolZCBCb3R0b206JWQgTGVmdDolZCBSaWdodDolZCkiLAorCSAgIENPTi5TQkkuc3JXaW5kb3cuVG9wLAorCSAgIENPTi5TQkkuc3JXaW5kb3cuQm90dG9tLAorCSAgIENPTi5TQkkuc3JXaW5kb3cuTGVmdCwKKwkgICBDT04uU0JJLnNyV2luZG93LlJpZ2h0KSk7CisJaWYgKENPTi5idWZmZXJlZCkgeworCSAgICBDT04ub3JpZ2luLlggPSAwOworCSAgICBDT04ub3JpZ2luLlkgPSAwOworCX0gZWxzZSB7CisJICAgIENPTi5vcmlnaW4uWCA9IENPTi5TQkkuc3JXaW5kb3cuTGVmdDsKKwkgICAgQ09OLm9yaWdpbi5ZID0gQ09OLlNCSS5zcldpbmRvdy5Ub3A7CisJfQorCXJjID0gVFJVRTsKKyAgICB9IGVsc2UgeworCVQoKCJHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyBFUlIiKSk7CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQKK3djb25fc2V0Y29sb3IoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICAgICBpbnQgZm9yZSwKKwkgICAgICBpbnQgY29sb3IsCisJICAgICAgaW50ICgqb3V0YykgKFNDUkVFTiAqLCBpbnQpIEdDQ19VTlVTRUQpCit7CisgICAgaWYgKG9rQ29uc29sZUhhbmRsZShUQ0IpKSB7CisJV09SRCBhID0gTWFwQ29sb3IoZm9yZSwgY29sb3IpOworCWEgfD0gKFdPUkQpICgoQ09OLlNCSS53QXR0cmlidXRlcykgJiAoZm9yZSA/IDB4ZmZmOCA6IDB4ZmY4ZikpOworCVNldENvbnNvbGVUZXh0QXR0cmlidXRlKENPTi5oZGwsIGEpOworCWdldF9TQkkoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sCit3Y29uX3Jlc2NvbChURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIGJvb2wgcmVzID0gRkFMU0U7CisKKyAgICBpZiAob2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKwlXT1JEIGEgPSBGT1JFR1JPVU5EX0JMVUUgfCBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfR1JFRU47CisJU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoQ09OLmhkbCwgYSk7CisJZ2V0X1NCSSgpOworCXJlcyA9IFRSVUU7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBib29sCit3Y29uX3Jlc2NvbG9ycyhURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIGludCByZXN1bHQgPSBGQUxTRTsKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK3djb25fc2l6ZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgKkxpbmVzLCBpbnQgKkNvbHMpCit7CisgICAgaW50IHJlc3VsdCA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJ3aW4zMmNvbjo6d2Nvbl9zaXplKCVwKSIpLCBUQ0IpKTsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSAmJgorCUxpbmVzICE9IE5VTEwgJiYKKwlDb2xzICE9IE5VTEwpIHsKKwlpZiAoQ09OLmJ1ZmZlcmVkKSB7CisJICAgICpMaW5lcyA9IChpbnQpIChDT04uU0JJLmR3U2l6ZS5ZKTsKKwkgICAgKkNvbHMgPSAoaW50KSAoQ09OLlNCSS5kd1NpemUuWCk7CisJfSBlbHNlIHsKKwkgICAgKkxpbmVzID0gKGludCkgKENPTi5TQkkuc3JXaW5kb3cuQm90dG9tICsgMSAtCisJCQkgICAgQ09OLlNCSS5zcldpbmRvdy5Ub3ApOworCSAgICAqQ29scyA9IChpbnQpIChDT04uU0JJLnNyV2luZG93LlJpZ2h0ICsgMSAtCisJCQkgICBDT04uU0JJLnNyV2luZG93LkxlZnQpOworCX0KKwlyZXN1bHQgPSBPSzsKKyAgICB9CisgICAgcmV0dXJuQ29kZShyZXN1bHQpOworfQorCitzdGF0aWMgaW50Cit3Y29uX3NldHNpemUoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiBHQ0NfVU5VU0VELAorCSAgICAgaW50IGwgR0NDX1VOVVNFRCwKKwkgICAgIGludCBjIEdDQ19VTlVTRUQpCit7CisgICAgQXNzZXJ0VENCKCk7CisgICAgcmV0dXJuIEVSUjsKK30KKworc3RhdGljIGludAord2Nvbl9zZ21vZGUoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwgaW50IHNldEZsYWcsIFRUWSAqIGJ1ZikKK3sKKyAgICBEV09SRCBkd0ZsYWcgPSAwOworICAgIHRjZmxhZ190IGlmbGFnOworICAgIHRjZmxhZ190IGxmbGFnOworICAgIGludCByZXN1bHQgPSBFUlI7CisKKyAgICBpZiAoYnVmICE9IE5VTEwgJiYgb2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKworCWlmIChzZXRGbGFnKSB7CisJICAgIGlmbGFnID0gYnVmLT5jX2lmbGFnOworCSAgICBsZmxhZyA9IGJ1Zi0+Y19sZmxhZzsKKworCSAgICBHZXRDb25zb2xlTW9kZShDT04uaW5wLCAmZHdGbGFnKTsKKworCSAgICBpZiAobGZsYWcgJiBJQ0FOT04pCisJCWR3RmxhZyB8PSBFTkFCTEVfTElORV9JTlBVVDsKKwkgICAgZWxzZQorCQlkd0ZsYWcgJj0gKERXT1JEKSAofkVOQUJMRV9MSU5FX0lOUFVUKTsKKworCSAgICBpZiAobGZsYWcgJiBFQ0hPKQorCQlkd0ZsYWcgfD0gRU5BQkxFX0VDSE9fSU5QVVQ7CisJICAgIGVsc2UKKwkJZHdGbGFnICY9IChEV09SRCkgKH5FTkFCTEVfRUNIT19JTlBVVCk7CisKKwkgICAgaWYgKGlmbGFnICYgQlJLSU5UKQorCQlkd0ZsYWcgfD0gRU5BQkxFX1BST0NFU1NFRF9JTlBVVDsKKwkgICAgZWxzZQorCQlkd0ZsYWcgJj0gKERXT1JEKSAofkVOQUJMRV9QUk9DRVNTRURfSU5QVVQpOworCisJICAgIGR3RmxhZyB8PSBFTkFCTEVfTU9VU0VfSU5QVVQ7CisKKwkgICAgYnVmLT5jX2lmbGFnID0gaWZsYWc7CisJICAgIGJ1Zi0+Y19sZmxhZyA9IGxmbGFnOworCSAgICBTZXRDb25zb2xlTW9kZShDT04uaW5wLCBkd0ZsYWcpOworCSAgICBUQ0ItPnRlcm0uTnR0eWIgPSAqYnVmOworCX0gZWxzZSB7CisJICAgIGlmbGFnID0gVENCLT50ZXJtLk50dHliLmNfaWZsYWc7CisJICAgIGxmbGFnID0gVENCLT50ZXJtLk50dHliLmNfbGZsYWc7CisJICAgIEdldENvbnNvbGVNb2RlKENPTi5pbnAsICZkd0ZsYWcpOworCisJICAgIGlmIChkd0ZsYWcgJiBFTkFCTEVfTElORV9JTlBVVCkKKwkJbGZsYWcgfD0gSUNBTk9OOworCSAgICBlbHNlCisJCWxmbGFnICY9ICh0Y2ZsYWdfdCkgKH5JQ0FOT04pOworCisJICAgIGlmIChkd0ZsYWcgJiBFTkFCTEVfRUNIT19JTlBVVCkKKwkJbGZsYWcgfD0gRUNITzsKKwkgICAgZWxzZQorCQlsZmxhZyAmPSAodGNmbGFnX3QpICh+RUNITyk7CisKKwkgICAgaWYgKGR3RmxhZyAmIEVOQUJMRV9QUk9DRVNTRURfSU5QVVQpCisJCWlmbGFnIHw9IEJSS0lOVDsKKwkgICAgZWxzZQorCQlpZmxhZyAmPSAodGNmbGFnX3QpICh+QlJLSU5UKTsKKworCSAgICBUQ0ItPnRlcm0uTnR0eWIuY19pZmxhZyA9IGlmbGFnOworCSAgICBUQ0ItPnRlcm0uTnR0eWIuY19sZmxhZyA9IGxmbGFnOworCisJICAgICpidWYgPSBUQ0ItPnRlcm0uTnR0eWI7CisJfQorCXJlc3VsdCA9IE9LOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZGVmaW5lIE1JTl9XSURFIDgwCisjZGVmaW5lIE1JTl9ISUdIIDI0CisKKy8qCisgKiBJbiAibm9ybWFsIiBtb2RlLCByZXNldCB0aGUgYnVmZmVyLSBhbmQgd2luZG93LXNpemVzIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgdmFsdWVzLgorICovCitzdGF0aWMgdm9pZAorc2V0X3Njcm9sbGJhY2soYm9vbCBub3JtYWwsIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPICogaW5mbykKK3sKKyAgICBTTUFMTF9SRUNUIHJlY3Q7CisgICAgQ09PUkQgY29vcmQ7CisgICAgYm9vbCBjaGFuZ2VkID0gRkFMU0U7CisKKyAgICBUKChUX0NBTExFRCgid2luMzJjb246OnNldF9zY3JvbGxiYWNrKCVzKSIpLAorICAgICAgIChub3JtYWwKKwk/ICJub3JtYWwiCisJOiAiYXBwbGljYXRpb24iKSkpOworCisgICAgVCgoIi4uLiBTQkkuc3JXaW5kb3cgJWQsJWQgLi4gJWQsJWQiLAorICAgICAgIGluZm8tPnNyV2luZG93LlRvcCwKKyAgICAgICBpbmZvLT5zcldpbmRvdy5MZWZ0LAorICAgICAgIGluZm8tPnNyV2luZG93LkJvdHRvbSwKKyAgICAgICBpbmZvLT5zcldpbmRvdy5SaWdodCkpOworICAgIFQoKCIuLi4gU0JJLmR3U2l6ZSAlZHglZCIsCisgICAgICAgaW5mby0+ZHdTaXplLlksCisgICAgICAgaW5mby0+ZHdTaXplLlgpKTsKKworICAgIGlmIChub3JtYWwpIHsKKwlyZWN0ID0gaW5mby0+c3JXaW5kb3c7CisJY29vcmQgPSBpbmZvLT5kd1NpemU7CisJaWYgKG1lbWNtcChpbmZvLCAmQ09OLlNCSSwgc2l6ZW9mKCppbmZvKSkgIT0gMCkgeworCSAgICBjaGFuZ2VkID0gVFJVRTsKKwkgICAgQ09OLlNCSSA9ICppbmZvOworCX0KKyAgICB9IGVsc2UgeworCWludCBoaWdoID0gaW5mby0+c3JXaW5kb3cuQm90dG9tIC0gaW5mby0+c3JXaW5kb3cuVG9wICsgMTsKKwlpbnQgd2lkZSA9IGluZm8tPnNyV2luZG93LlJpZ2h0IC0gaW5mby0+c3JXaW5kb3cuTGVmdCArIDE7CisKKwlpZiAoaGlnaCA8IE1JTl9ISUdIKSB7CisJICAgIFQoKCIuLi4gaGVpZ2h0ICVkIDwgJWQiLCBoaWdoLCBNSU5fSElHSCkpOworCSAgICBoaWdoID0gTUlOX0hJR0g7CisJICAgIGNoYW5nZWQgPSBUUlVFOworCX0KKwlpZiAod2lkZSA8IE1JTl9XSURFKSB7CisJICAgIFQoKCIuLi4gd2lkdGggJWQgPCAlZCIsIHdpZGUsIE1JTl9XSURFKSk7CisJICAgIHdpZGUgPSBNSU5fV0lERTsKKwkgICAgY2hhbmdlZCA9IFRSVUU7CisJfQorCisJcmVjdC5MZWZ0ID0KKwkgICAgcmVjdC5Ub3AgPSAwOworCXJlY3QuUmlnaHQgPSAoU0hPUlQpICh3aWRlIC0gMSk7CisJcmVjdC5Cb3R0b20gPSAoU0hPUlQpIChoaWdoIC0gMSk7CisKKwljb29yZC5YID0gKFNIT1JUKSB3aWRlOworCWNvb3JkLlkgPSAoU0hPUlQpIGhpZ2g7CisKKwlpZiAoaW5mby0+ZHdTaXplLlkgIT0gaGlnaCB8fAorCSAgICBpbmZvLT5kd1NpemUuWCAhPSB3aWRlIHx8CisJICAgIGluZm8tPnNyV2luZG93LlRvcCAhPSAwIHx8CisJICAgIGluZm8tPnNyV2luZG93LkxlZnQgIT0gMCkgeworCSAgICBjaGFuZ2VkID0gVFJVRTsKKwl9CisKKyAgICB9CisKKyAgICBpZiAoY2hhbmdlZCkgeworCVQoKCIuLi4gY29vcmQgJWQsJWQiLCBjb29yZC5ZLCBjb29yZC5YKSk7CisJVCgoIi4uLiByZWN0ICVkLCVkIC0gJWQsJWQiLAorCSAgIHJlY3QuVG9wLCByZWN0LkxlZnQsCisJICAgcmVjdC5Cb3R0b20sIHJlY3QuUmlnaHQpKTsKKwlTZXRDb25zb2xlU2NyZWVuQnVmZmVyU2l6ZShDT04uaGRsLCBjb29yZCk7CS8qIGR3U2l6ZSAqLworCVNldENvbnNvbGVXaW5kb3dJbmZvKENPTi5oZGwsIFRSVUUsICZyZWN0KTsJLyogc3JXaW5kb3cgKi8KKwlnZXRfU0JJKCk7CisgICAgfQorICAgIHJldHVyblZvaWQ7Cit9CisKK3N0YXRpYyBpbnQKK3djb25fbW9kZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLCBpbnQgcHJvZ0ZsYWcsIGludCBkZWZGbGFnKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgVEVSTUlOQUwgKl90ZXJtID0gKFRFUk1JTkFMICopIFRDQjsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCXNwID0gVENCLT5jc3A7CisKKwlUKChUX0NBTExFRCgid2luMzJjb246Ondjb25fbW9kZSglcCwgcHJvZz0lZCwgZGVmPSVkKSIpLAorCSAgIFRDQiwgcHJvZ0ZsYWcsIGRlZkZsYWcpKTsKKworCUNPTi5wcm9nTW9kZSA9IHByb2dGbGFnOworCUNPTi5sYXN0T3V0ID0gcHJvZ0ZsYWcgPyBDT04uaGRsIDogQ09OLm91dDsKKwlTZXRDb25zb2xlQWN0aXZlU2NyZWVuQnVmZmVyKENPTi5sYXN0T3V0KTsKKworCWlmIChwcm9nRmxhZykgLyogcHJvZyBtb2RlICovICB7CisJICAgIGlmIChkZWZGbGFnKSB7CisJCWlmICgod2Nvbl9zZ21vZGUoVENCLCBGQUxTRSwgJihfdGVybS0+TnR0eWIpKSA9PSBPSykpIHsKKwkJICAgIF90ZXJtLT5OdHR5Yi5jX29mbGFnICY9ICh0Y2ZsYWdfdCkgKH5PRkxBR1NfVEFCUyk7CisJCSAgICBjb2RlID0gT0s7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJLyogcmVzZXRfcHJvZ19tb2RlICovCisJCWlmICh3Y29uX3NnbW9kZShUQ0IsIFRSVUUsICYoX3Rlcm0tPk50dHliKSkgPT0gT0spIHsKKwkJICAgIGlmIChzcCkgeworCQkJaWYgKHNwLT5fa2V5cGFkX29uKQorCQkJICAgIF9uY19rZXlwYWQoc3AsIFRSVUUpOworCQkgICAgfQorCQkgICAgaWYgKCFDT04uYnVmZmVyZWQpIHsKKwkJCXNldF9zY3JvbGxiYWNrKEZBTFNFLCAmQ09OLlNCSSk7CisJCSAgICB9CisJCSAgICBjb2RlID0gT0s7CisJCX0KKwkgICAgfQorCSAgICBUKCgiLi4uIGJ1ZmZlcmVkOiVkLCBjbGVhcjolZCIsIENPTi5idWZmZXJlZCwgQ3VyU2NyZWVuKHNwKS0+X2NsZWFyKSk7CisJfSBlbHNlIHsJCS8qIHNoZWxsIG1vZGUgKi8KKwkgICAgaWYgKGRlZkZsYWcpIHsKKwkJLyogZGVmX3NoZWxsX21vZGUgKi8KKwkJaWYgKHdjb25fc2dtb2RlKFRDQiwgRkFMU0UsICYoX3Rlcm0tPk90dHliKSkgPT0gT0spIHsKKwkJICAgIGNvZGUgPSBPSzsKKwkJfQorCSAgICB9IGVsc2UgeworCQkvKiByZXNldF9zaGVsbF9tb2RlICovCisJCWlmIChzcCkgeworCQkgICAgX25jX2tleXBhZChzcCwgRkFMU0UpOworCQkgICAgTkNVUlNFU19TUF9OQU1FKF9uY19mbHVzaCkgKHNwKTsKKwkJfQorCQljb2RlID0gd2Nvbl9zZ21vZGUoVENCLCBUUlVFLCAmKF90ZXJtLT5PdHR5YikpOworCQlpZiAoIUNPTi5idWZmZXJlZCkgeworCQkgICAgc2V0X3Njcm9sbGJhY2soVFJVRSwgJkNPTi5zYXZlX1NCSSk7CisJCSAgICBpZiAoIXJlc3RvcmVfb3JpZ2luYWxfc2NyZWVuKCkpCisJCQljb2RlID0gRVJSOworCQl9CisJCVNldENvbnNvbGVDdXJzb3JJbmZvKENPTi5oZGwsICZDT04uc2F2ZV9DSSk7CisJICAgIH0KKwl9CisKKyAgICB9CisgICAgcmV0dXJuQ29kZShjb2RlKTsKK30KKworc3RhdGljIHZvaWQKK3djb25fc2NyZWVuX2luaXQoU0NSRUVOICpzcCBHQ0NfVU5VU0VEKQoreworfQorCitzdGF0aWMgdm9pZAord2Nvbl93cmFwKFNDUkVFTiAqc3AgR0NDX1VOVVNFRCkKK3sKK30KKworc3RhdGljIGludAorcmtleWNvbXBhcmUoY29uc3Qgdm9pZCAqZWwxLCBjb25zdCB2b2lkICplbDIpCit7CisgICAgV09SRCBrZXkxID0gKExPV09SRCgoKigoY29uc3QgTE9ORyAqKSBlbDEpKSkpICYgMHg3ZmZmOworICAgIFdPUkQga2V5MiA9IChMT1dPUkQoKCooKGNvbnN0IExPTkcgKikgZWwyKSkpKSAmIDB4N2ZmZjsKKworICAgIHJldHVybiAoKGtleTEgPCBrZXkyKSA/IC0xIDogKChrZXkxID09IGtleTIpID8gMCA6IDEpKTsKK30KKworc3RhdGljIGludAora2V5Y29tcGFyZShjb25zdCB2b2lkICplbDEsIGNvbnN0IHZvaWQgKmVsMikKK3sKKyAgICBXT1JEIGtleTEgPSBISVdPUkQoKCooKGNvbnN0IExPTkcgKikgZWwxKSkpOworICAgIFdPUkQga2V5MiA9IEhJV09SRCgoKigoY29uc3QgTE9ORyAqKSBlbDIpKSk7CisKKyAgICByZXR1cm4gKChrZXkxIDwga2V5MikgPyAtMSA6ICgoa2V5MSA9PSBrZXkyKSA/IDAgOiAxKSk7Cit9CisKK3N0YXRpYyBpbnQKK01hcEtleShXT1JEIHZLZXkpCit7CisgICAgV09SRCBuS2V5ID0gMDsKKyAgICB2b2lkICpyZXM7CisgICAgTE9ORyBrZXkgPSBHZW5NYXAodktleSwgMCk7CisgICAgaW50IGNvZGUgPSAtMTsKKworICAgIHJlcyA9IGJzZWFyY2goJmtleSwKKwkJICBDT04ubWFwLAorCQkgIChzaXplX3QpIChOX0lOSSArIEZLRVlTKSwKKwkJICBzaXplb2Yoa2V5bGlzdFswXSksCisJCSAga2V5Y29tcGFyZSk7CisgICAgaWYgKHJlcykgeworCWtleSA9ICooKExPTkcgKikgcmVzKTsKKwluS2V5ID0gTE9XT1JEKGtleSk7CisJY29kZSA9IChpbnQpIChuS2V5ICYgMHg3ZmZmKTsKKwlpZiAobktleSAmIDB4ODAwMCkKKwkgICAgY29kZSA9IC1jb2RlOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworc3RhdGljIGludAorQW5zaUtleShXT1JEIHZLZXkpCit7CisgICAgV09SRCBuS2V5ID0gMDsKKyAgICB2b2lkICpyZXM7CisgICAgTE9ORyBrZXkgPSBHZW5NYXAodktleSwgMCk7CisgICAgaW50IGNvZGUgPSAtMTsKKworICAgIHJlcyA9IGJzZWFyY2goJmtleSwKKwkJICBDT04uYW5zaV9tYXAsCisJCSAgKHNpemVfdCkgKE5fSU5JICsgRktFWVMpLAorCQkgIHNpemVvZihrZXlsaXN0WzBdKSwKKwkJICBrZXljb21wYXJlKTsKKyAgICBpZiAocmVzKSB7CisJa2V5ID0gKigoTE9ORyAqKSByZXMpOworCW5LZXkgPSBMT1dPUkQoa2V5KTsKKwljb2RlID0gKGludCkgKG5LZXkgJiAweDdmZmYpOworCWlmIChuS2V5ICYgMHg4MDAwKQorCSAgICBjb2RlID0gLWNvZGU7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgdm9pZAord2Nvbl9yZWxlYXNlKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgVCgoVF9DQUxMRUQoIndpbjMyY29uOjp3Y29uX3JlbGVhc2UoJXApIiksIFRDQikpOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgaWYgKFRDQi0+cHJvcCkKKwlmcmVlKFRDQi0+cHJvcCk7CisKKyAgICByZXR1cm5Wb2lkOworfQorCitzdGF0aWMgYm9vbAorcmVhZF9zY3JlZW5fZGF0YSh2b2lkKQoreworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisgICAgQ09PUkQgYnVmZmVyQ29vcmQ7CisgICAgc2l6ZV90IHdhbnQ7CisKKyAgICBDT04uc2F2ZV9zaXplLlggPSAoU0hPUlQpIChDT04uc2F2ZV9yZWdpb24uUmlnaHQKKwkJCSAgICAgICAtIENPTi5zYXZlX3JlZ2lvbi5MZWZ0ICsgMSk7CisgICAgQ09OLnNhdmVfc2l6ZS5ZID0gKFNIT1JUKSAoQ09OLnNhdmVfcmVnaW9uLkJvdHRvbQorCQkJICAgICAgIC0gQ09OLnNhdmVfcmVnaW9uLlRvcCArIDEpOworCisgICAgd2FudCA9IChzaXplX3QpIChDT04uc2F2ZV9zaXplLlggKiBDT04uc2F2ZV9zaXplLlkpOworCisgICAgaWYgKChDT04uc2F2ZV9zY3JlZW4gPSBtYWxsb2Mod2FudCAqIHNpemVvZihDSEFSX0lORk8pKSkgIT0gMCkgeworCWJ1ZmZlckNvb3JkLlggPSAoU0hPUlQpIChDT04ud2luZG93X29ubHkgPyBDT04uU0JJLnNyV2luZG93LkxlZnQgOiAwKTsKKwlidWZmZXJDb29yZC5ZID0gKFNIT1JUKSAoQ09OLndpbmRvd19vbmx5ID8gQ09OLlNCSS5zcldpbmRvdy5Ub3AgOiAwKTsKKworCVQoKCIuLi4gcmVhZGluZyBjb25zb2xlICVzICVkeCVkIGludG8gJWQsJWQgLSAlZCwlZCBhdCAlZCwlZCIsCisJICAgQ09OLndpbmRvd19vbmx5ID8gIndpbmRvdyIgOiAiYnVmZmVyIiwKKwkgICBDT04uc2F2ZV9zaXplLlksIENPTi5zYXZlX3NpemUuWCwKKwkgICBDT04uc2F2ZV9yZWdpb24uVG9wLAorCSAgIENPTi5zYXZlX3JlZ2lvbi5MZWZ0LAorCSAgIENPTi5zYXZlX3JlZ2lvbi5Cb3R0b20sCisJICAgQ09OLnNhdmVfcmVnaW9uLlJpZ2h0LAorCSAgIGJ1ZmZlckNvb3JkLlksCisJICAgYnVmZmVyQ29vcmQuWCkpOworCisJaWYgKHJlYWRfc2NyZWVuKENPTi5oZGwsCisJCQlDT04uc2F2ZV9zY3JlZW4sCisJCQlDT04uc2F2ZV9zaXplLAorCQkJYnVmZmVyQ29vcmQsCisJCQkmQ09OLnNhdmVfcmVnaW9uKSkgeworCSAgICByZXN1bHQgPSBUUlVFOworCX0gZWxzZSB7CisJICAgIFQoKCIgZXJyb3IgJSNseCIsICh1bnNpZ25lZCBsb25nKSBHZXRMYXN0RXJyb3IoKSkpOworCSAgICBGcmVlQW5kTnVsbChDT04uc2F2ZV9zY3JlZW4pOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQXR0ZW1wdCB0byBzYXZlIHRoZSBzY3JlZW4gY29udGVudHMuICBQREN1cnNlcyBkb2VzIHRoaXMgaWYKKyAqIFBEQ19SRVNUT1JFX1NDUkVFTiBpcyBzZXQsIGdpdmluZyB0aGUgc2FtZSB2aXN1YWwgYXBwZWFyYW5jZSBvbgorICogcmVzdG9yYXRpb24gYXMgaWYgdGhlIGxpYnJhcnkgaGFkIGFsbG9jYXRlZCBhIGNvbnNvbGUgYnVmZmVyLiAgTVNETgorICogc2F5cyB0aGF0IHRoZSBkYXRhIHdoaWNoIGNhbiBiZSByZWFkIGlzIGxpbWl0ZWQgdG8gNjRLYiAoYW5kIG1heSBiZQorICogbGVzcykuCisgKi8KK3N0YXRpYyBib29sCitzYXZlX29yaWdpbmFsX3NjcmVlbih2b2lkKQoreworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICBDT04uc2F2ZV9yZWdpb24uVG9wID0gMDsKKyAgICBDT04uc2F2ZV9yZWdpb24uTGVmdCA9IDA7CisgICAgQ09OLnNhdmVfcmVnaW9uLkJvdHRvbSA9IChTSE9SVCkgKENPTi5TQkkuZHdTaXplLlkgLSAxKTsKKyAgICBDT04uc2F2ZV9yZWdpb24uUmlnaHQgPSAoU0hPUlQpIChDT04uU0JJLmR3U2l6ZS5YIC0gMSk7CisKKyAgICBpZiAocmVhZF9zY3JlZW5fZGF0YSgpKSB7CisJcmVzdWx0ID0gVFJVRTsKKyAgICB9IGVsc2UgeworCisJQ09OLnNhdmVfcmVnaW9uLlRvcCA9IENPTi5TQkkuc3JXaW5kb3cuVG9wOworCUNPTi5zYXZlX3JlZ2lvbi5MZWZ0ID0gQ09OLlNCSS5zcldpbmRvdy5MZWZ0OworCUNPTi5zYXZlX3JlZ2lvbi5Cb3R0b20gPSBDT04uU0JJLnNyV2luZG93LkJvdHRvbTsKKwlDT04uc2F2ZV9yZWdpb24uUmlnaHQgPSBDT04uU0JJLnNyV2luZG93LlJpZ2h0OworCisJQ09OLndpbmRvd19vbmx5ID0gVFJVRTsKKworCWlmIChyZWFkX3NjcmVlbl9kYXRhKCkpIHsKKwkgICAgcmVzdWx0ID0gVFJVRTsKKwl9CisgICAgfQorCisgICAgVCgoIi4uLiBzYXZlIG9yaWdpbmFsIHNjcmVlbiBjb250ZW50cyAlcyIsIHJlc3VsdCA/ICJvayIgOiAiZXJyIikpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCit3Y29uX2luaXQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQikKK3sKKyAgICBUKChUX0NBTExFRCgid2luMzJjb246Ondjb25faW5pdCglcCkiKSwgVENCKSk7CisKKyAgICBBc3NlcnRUQ0IoKTsKKworICAgIGlmIChUQ0IpIHsKKwlpZiAoIUluaXRDb25zb2xlKCkpIHsKKwkgICAgcmV0dXJuVm9pZDsKKwl9CisKKwlUQ0ItPmluZm8uaW5pdGNvbG9yID0gVFJVRTsKKwlUQ0ItPmluZm8uY2FuY2hhbmdlID0gRkFMU0U7CisJVENCLT5pbmZvLmhhc2NvbG9yID0gVFJVRTsKKwlUQ0ItPmluZm8uY2FuaW5pdCA9IFRSVUU7CisKKwlUQ0ItPmluZm8ubWF4cGFpcnMgPSBOVU1QQUlSUzsKKwlUQ0ItPmluZm8ubWF4Y29sb3JzID0gODsKKwlUQ0ItPmluZm8ubnVtbGFiZWxzID0gMDsKKwlUQ0ItPmluZm8ubGFiZWx3aWR0aCA9IDA7CisJVENCLT5pbmZvLmxhYmVsaGVpZ2h0ID0gMDsKKwlUQ0ItPmluZm8ubm9jb2xvcnZpZGVvID0gMTsKKwlUQ0ItPmluZm8udGFic2l6ZSA9IDg7CisKKwlUQ0ItPmluZm8ubnVtYnV0dG9ucyA9IENPTi5udW1CdXR0b25zOworCVRDQi0+aW5mby5kZWZhdWx0UGFsZXR0ZSA9IF9uY19jZ2FfcGFsZXR0ZTsKKworICAgIH0KKyAgICByZXR1cm5Wb2lkOworfQorCitzdGF0aWMgdm9pZAord2Nvbl9pbml0cGFpcihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCSAgICAgIGludCBwYWlyLAorCSAgICAgIGludCBmLAorCSAgICAgIGludCBiKQoreworICAgIFNDUkVFTiAqc3A7CisKKyAgICBpZiAob2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKwlTZXRTUCgpOworCisJaWYgKChwYWlyID4gMCkgJiYgKHBhaXIgPCBOVU1QQUlSUykgJiYgKGYgPj0gMCkgJiYgKGYgPCA4KQorCSAgICAmJiAoYiA+PSAwKSAmJiAoYiA8IDgpKSB7CisJICAgIENPTi5wYWlyc1twYWlyXSA9IE1hcENvbG9yKHRydWUsIGYpIHwgTWFwQ29sb3IoZmFsc2UsIGIpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit3Y29uX2luaXRjb2xvcihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCSAgICAgICBpbnQgY29sb3IgR0NDX1VOVVNFRCwKKwkgICAgICAgaW50IHIgR0NDX1VOVVNFRCwKKwkgICAgICAgaW50IGcgR0NDX1VOVVNFRCwKKwkgICAgICAgaW50IGIgR0NDX1VOVVNFRCkKK3sKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKK30KKworc3RhdGljIHZvaWQKK3djb25fZG9fY29sb3IoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICAgICBpbnQgb2xkX3BhaXIgR0NDX1VOVVNFRCwKKwkgICAgICBpbnQgcGFpciBHQ0NfVU5VU0VELAorCSAgICAgIGludCByZXZlcnNlIEdDQ19VTlVTRUQsCisJICAgICAgaW50ICgqb3V0YykgKFNDUkVFTiAqLCBpbnQpIEdDQ19VTlVTRUQKKykKK3sKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKK30KKworc3RhdGljIHZvaWQKK3djb25faW5pdG1vdXNlKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IpCit7CisgICAgU0NSRUVOICpzcDsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwlzcC0+X21vdXNlX3R5cGUgPSBNX1RFUk1fRFJJVkVSOworICAgIH0KK30KKworc3RhdGljIGludAord2Nvbl90ZXN0bW91c2UoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwgaW50IGRlbGF5KQoreworICAgIGludCByYyA9IDA7CisgICAgU0NSRUVOICpzcDsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwlpZiAoc3AtPl9kcnZfbW91c2VfaGVhZCA8IHNwLT5fZHJ2X21vdXNlX3RhaWwpIHsKKwkgICAgcmMgPSBUV19NT1VTRTsKKwl9IGVsc2UgeworCSAgICByYyA9IFRDQk9mKHNwKS0+ZHJ2LT50ZF90d2FpdChUQ0JPZihzcCksCisJCQkJCSAgVFdBSVRfTUFTSywKKwkJCQkJICBkZWxheSwKKwkJCQkJICAoaW50ICopIDAKKwkJCQkJICBFVkVOVExJU1RfMm5kKGV2bCkpOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQKK3djb25fbXZjdXIoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICBpbnQgeW9sZCBHQ0NfVU5VU0VELCBpbnQgeG9sZCBHQ0NfVU5VU0VELAorCSAgIGludCB5LCBpbnQgeCkKK3sKKyAgICBpbnQgcmV0ID0gRVJSOworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCUNPT1JEIGxvYzsKKwlsb2MuWCA9IChzaG9ydCkgeDsKKwlsb2MuWSA9IChzaG9ydCkgKHkgKyBBZGp1c3RZKCkpOworCVNldENvbnNvbGVDdXJzb3JQb3NpdGlvbihDT04uaGRsLCBsb2MpOworCXJldCA9IE9LOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAord2Nvbl9od2xhYmVsKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsCisJICAgICBpbnQgbGFibnVtIEdDQ19VTlVTRUQsCisJICAgICBjaGFyICp0ZXh0IEdDQ19VTlVTRUQpCit7CisgICAgU0NSRUVOICpzcDsKKworICAgIEFzc2VydFRDQigpOworICAgIFNldFNQKCk7Cit9CisKK3N0YXRpYyB2b2lkCit3Y29uX2h3bGFiZWxPbk9mZihURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCQkgIGludCBPbkZsYWcgR0NDX1VOVVNFRCkKK3sKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKK30KKworc3RhdGljIGNodHlwZQord2Nvbl9jb25hdHRyKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IgR0NDX1VOVVNFRCkKK3sKKyAgICBjaHR5cGUgcmVzID0gQV9OT1JNQUw7CisgICAgcmVzIHw9IChBX0JPTEQgfCBBX0RJTSB8IEFfUkVWRVJTRSB8IEFfU1RBTkRPVVQgfCBBX0NPTE9SKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgdm9pZAord2Nvbl9zZXRmaWx0ZXIoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQikKK3sKKyAgICBTQ1JFRU4gKnNwOworCisgICAgQXNzZXJ0VENCKCk7CisgICAgU2V0U1AoKTsKK30KKworc3RhdGljIHZvaWQKK3djb25faW5pdGFjcyhURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCLAorCSAgICAgY2h0eXBlICpyZWFsX21hcCBHQ0NfVU5VU0VELAorCSAgICAgY2h0eXBlICpmYWtlX21hcCBHQ0NfVU5VU0VEKQoreworI2RlZmluZSBEQVRBKGEsYikgeyBhLCBiIH0KKyAgICBzdGF0aWMgc3RydWN0IHsKKwlpbnQgYWNzX2NvZGU7CisJaW50IHVzZV9jb2RlOworICAgIH0gdGFibGVbXSA9IHsKKwlEQVRBKCdhJywgMHhiMSksCS8qIEFDU19DS0JPQVJEICAqLworCSAgICBEQVRBKCdmJywgMHhmOCksCS8qIEFDU19ERUdSRUUgICAqLworCSAgICBEQVRBKCdnJywgMHhmMSksCS8qIEFDU19QTE1JTlVTICAqLworCSAgICBEQVRBKCdqJywgMHhkOSksCS8qIEFDU19MUkNPUk5FUiAqLworCSAgICBEQVRBKCdsJywgMHhkYSksCS8qIEFDU19VTENPUk5FUiAqLworCSAgICBEQVRBKCdrJywgMHhiZiksCS8qIEFDU19VUkNPUk5FUiAqLworCSAgICBEQVRBKCdtJywgMHhjMCksCS8qIEFDU19MTENPUk5FUiAqLworCSAgICBEQVRBKCduJywgMHhjNSksCS8qIEFDU19QTFVTICAgICAqLworCSAgICBEQVRBKCdxJywgMHhjNCksCS8qIEFDU19ITElORSAgICAqLworCSAgICBEQVRBKCd0JywgMHhjMyksCS8qIEFDU19MVEVFICAgICAqLworCSAgICBEQVRBKCd1JywgMHhiNCksCS8qIEFDU19SVEVFICAgICAqLworCSAgICBEQVRBKCd2JywgMHhjMSksCS8qIEFDU19CVEVFICAgICAqLworCSAgICBEQVRBKCd3JywgMHhjMiksCS8qIEFDU19UVEVFICAgICAqLworCSAgICBEQVRBKCd4JywgMHhiMyksCS8qIEFDU19WTElORSAgICAqLworCSAgICBEQVRBKCd5JywgMHhmMyksCS8qIEFDU19MRVFVQUwgICAqLworCSAgICBEQVRBKCd6JywgMHhmMiksCS8qIEFDU19HRVFVQUwgICAqLworCSAgICBEQVRBKCcwJywgMHhkYiksCS8qIEFDU19CTE9DSyAgICAqLworCSAgICBEQVRBKCd7JywgMHhlMyksCS8qIEFDU19QSSAgICAgICAqLworCSAgICBEQVRBKCd9JywgMHg5YyksCS8qIEFDU19TVEVSTElORyAqLworCSAgICBEQVRBKCcsJywgMHhhZSksCS8qIEFDU19MQVJST1cgICAqLworCSAgICBEQVRBKCcrJywgMHhhZiksCS8qIEFDU19SQVJST1cgICAqLworCSAgICBEQVRBKCd+JywgMHhmOSksCS8qIEFDU19CVUxMRVQgICAqLworICAgIH07CisjdW5kZWYgREFUQQorICAgIHVuc2lnbmVkIG47CisKKyAgICBTQ1JFRU4gKnNwOworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwlmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRhYmxlKTsgKytuKSB7CisJICAgIHJlYWxfbWFwW3RhYmxlW25dLmFjc19jb2RlXSA9IChjaHR5cGUpIHRhYmxlW25dLnVzZV9jb2RlIHwgQV9BTFRDSEFSU0VUOworCSAgICBpZiAoc3AgIT0gMCkKKwkJc3AtPl9zY3JlZW5fYWNzX21hcFt0YWJsZVtuXS5hY3NfY29kZV0gPSBUUlVFOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyBVTE9OR0xPTkcKK3RkaWZmKEZJTEVUSU1FIGZzdGFydCwgRklMRVRJTUUgZmVuZCkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiB1c3RhcnQ7CisgICAgVUxBUkdFX0lOVEVHRVIgdWVuZDsKKyAgICBVTE9OR0xPTkcgZGlmZjsKKworICAgIHVzdGFydC5Mb3dQYXJ0ID0gZnN0YXJ0LmR3TG93RGF0ZVRpbWU7CisgICAgdXN0YXJ0LkhpZ2hQYXJ0ID0gZnN0YXJ0LmR3SGlnaERhdGVUaW1lOworICAgIHVlbmQuTG93UGFydCA9IGZlbmQuZHdMb3dEYXRlVGltZTsKKyAgICB1ZW5kLkhpZ2hQYXJ0ID0gZmVuZC5kd0hpZ2hEYXRlVGltZTsKKworICAgIGRpZmYgPSAodWVuZC5RdWFkUGFydCAtIHVzdGFydC5RdWFkUGFydCkgLyAxMDAwMDsKKyAgICByZXR1cm4gZGlmZjsKK30KKworc3RhdGljIGludAorQWRqdXN0KGludCBtaWxsaXNlY29uZHMsIGludCBkaWZmKQoreworICAgIGlmIChtaWxsaXNlY29uZHMgIT0gSU5GSU5JVFkpIHsKKwltaWxsaXNlY29uZHMgLT0gZGlmZjsKKwlpZiAobWlsbGlzZWNvbmRzIDwgMCkKKwkgICAgbWlsbGlzZWNvbmRzID0gMDsKKyAgICB9CisgICAgcmV0dXJuIG1pbGxpc2Vjb25kczsKK30KKworI2RlZmluZSBCVVRUT05fTUFTSyAoRlJPTV9MRUZUXzFTVF9CVVRUT05fUFJFU1NFRCB8IFwKKwkJICAgICBGUk9NX0xFRlRfMk5EX0JVVFRPTl9QUkVTU0VEIHwgXAorCQkgICAgIEZST01fTEVGVF8zUkRfQlVUVE9OX1BSRVNTRUQgfCBcCisJCSAgICAgRlJPTV9MRUZUXzRUSF9CVVRUT05fUFJFU1NFRCB8IFwKKwkJICAgICBSSUdIVE1PU1RfQlVUVE9OX1BSRVNTRUQpCisKK3N0YXRpYyBpbnQKK2RlY29kZV9tb3VzZShTQ1JFRU4gKnNwLCBpbnQgbWFzaykKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgICh2b2lkKSBzcDsKKyAgICBhc3NlcnQoc3AgJiYgY29uc29sZV9pbml0aWFsaXplZCk7CisKKyAgICBpZiAobWFzayAmIEZST01fTEVGVF8xU1RfQlVUVE9OX1BSRVNTRUQpCisJcmVzdWx0IHw9IEJVVFRPTjFfUFJFU1NFRDsKKyAgICBpZiAobWFzayAmIEZST01fTEVGVF8yTkRfQlVUVE9OX1BSRVNTRUQpCisJcmVzdWx0IHw9IEJVVFRPTjJfUFJFU1NFRDsKKyAgICBpZiAobWFzayAmIEZST01fTEVGVF8zUkRfQlVUVE9OX1BSRVNTRUQpCisJcmVzdWx0IHw9IEJVVFRPTjNfUFJFU1NFRDsKKyAgICBpZiAobWFzayAmIEZST01fTEVGVF80VEhfQlVUVE9OX1BSRVNTRUQpCisJcmVzdWx0IHw9IEJVVFRPTjRfUFJFU1NFRDsKKworICAgIGlmIChtYXNrICYgUklHSFRNT1NUX0JVVFRPTl9QUkVTU0VEKSB7CisJc3dpdGNoIChDT04ubnVtQnV0dG9ucykgeworCWNhc2UgMToKKwkgICAgcmVzdWx0IHw9IEJVVFRPTjFfUFJFU1NFRDsKKwkgICAgYnJlYWs7CisJY2FzZSAyOgorCSAgICByZXN1bHQgfD0gQlVUVE9OMl9QUkVTU0VEOworCSAgICBicmVhazsKKwljYXNlIDM6CisJICAgIHJlc3VsdCB8PSBCVVRUT04zX1BSRVNTRUQ7CisJICAgIGJyZWFrOworCWNhc2UgNDoKKwkgICAgcmVzdWx0IHw9IEJVVFRPTjRfUFJFU1NFRDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnNvbGVfdHdhaXQoCisJCSBTQ1JFRU4gKnNwLAorCQkgSEFORExFIGZkLAorCQkgaW50IG1vZGUsCisJCSBpbnQgbWlsbGlzZWNvbmRzLAorCQkgaW50ICp0aW1lbGVmdAorCQkgRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0ICogZXZsKSkKK3sKKyAgICBJTlBVVF9SRUNPUkQgaW5wX3JlYzsKKyAgICBCT09MIGI7CisgICAgRFdPUkQgblJlYWQgPSAwLCByYyA9IChEV09SRCkgKC0xKTsKKyAgICBpbnQgY29kZSA9IDA7CisgICAgRklMRVRJTUUgZnN0YXJ0OworICAgIEZJTEVUSU1FIGZlbmQ7CisgICAgaW50IGRpZmY7CisgICAgYm9vbCBpc0ltbWVkID0gKG1pbGxpc2Vjb25kcyA9PSAwKTsKKworI2RlZmluZSBDT05TVU1FKCkgUmVhZENvbnNvbGVJbnB1dChmZCwmaW5wX3JlYywxLCZuUmVhZCkKKworICAgIGFzc2VydChzcCk7CisKKyAgICBUUihUUkFDRV9JRVZFTlQsICgic3RhcnQgdHdhaXQ6ICVkIG1pbGxpc2Vjb25kcywgbW9kZTogJWQiLAorCQkgICAgICBtaWxsaXNlY29uZHMsIG1vZGUpKTsKKworICAgIGlmIChtaWxsaXNlY29uZHMgPCAwKQorCW1pbGxpc2Vjb25kcyA9IElORklOSVRZOworCisgICAgbWVtc2V0KCZpbnBfcmVjLCAwLCBzaXplb2YoaW5wX3JlYykpOworCisgICAgd2hpbGUgKHRydWUpIHsKKwlHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZnN0YXJ0KTsKKwlyYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoZmQsIChEV09SRCkgbWlsbGlzZWNvbmRzKTsKKwlHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZmVuZCk7CisJZGlmZiA9IChpbnQpIHRkaWZmKGZzdGFydCwgZmVuZCk7CisJbWlsbGlzZWNvbmRzID0gQWRqdXN0KG1pbGxpc2Vjb25kcywgZGlmZik7CisKKwlpZiAoIWlzSW1tZWQgJiYgbWlsbGlzZWNvbmRzIDw9IDApCisJICAgIGJyZWFrOworCisJaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKKwkgICAgaWYgKG1vZGUpIHsKKwkJYiA9IEdldE51bWJlck9mQ29uc29sZUlucHV0RXZlbnRzKGZkLCAmblJlYWQpOworCQlpZiAoYiAmJiBuUmVhZCA+IDApIHsKKwkJICAgIGIgPSBQZWVrQ29uc29sZUlucHV0KGZkLCAmaW5wX3JlYywgMSwgJm5SZWFkKTsKKwkJICAgIGlmIChiICYmIG5SZWFkID4gMCkgeworCQkJc3dpdGNoIChpbnBfcmVjLkV2ZW50VHlwZSkgeworCQkJY2FzZSBLRVlfRVZFTlQ6CisJCQkgICAgaWYgKG1vZGUgJiBUV19JTlBVVCkgeworCQkJCVdPUkQgdmsgPSBpbnBfcmVjLkV2ZW50LktleUV2ZW50LndWaXJ0dWFsS2V5Q29kZTsKKwkJCQljaGFyIGNoID0gaW5wX3JlYy5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXI7CisKKwkJCQlpZiAoaW5wX3JlYy5FdmVudC5LZXlFdmVudC5iS2V5RG93bikgeworCQkJCSAgICBpZiAoMCA9PSBjaCkgeworCQkJCQlpbnQgbktleSA9IE1hcEtleSh2ayk7CisJCQkJCWlmIChuS2V5IDwgMCkgeworCQkJCQkgICAgQ09OU1VNRSgpOworCQkJCQkgICAgY29udGludWU7CisJCQkJCX0KKwkJCQkgICAgfQorCQkJCSAgICBjb2RlID0gVFdfSU5QVVQ7CisJCQkJICAgIGdvdG8gZW5kOworCQkJCX0gZWxzZSB7CisJCQkJICAgIENPTlNVTUUoKTsKKwkJCQl9CisJCQkgICAgfQorCQkJICAgIGNvbnRpbnVlOworCQkJY2FzZSBNT1VTRV9FVkVOVDoKKwkJCSAgICBpZiAoZGVjb2RlX21vdXNlKHNwLAorCQkJCQkgICAgIChpbnBfcmVjLkV2ZW50Lk1vdXNlRXZlbnQuZHdCdXR0b25TdGF0ZQorCQkJCQkgICAgICAmIEJVVFRPTl9NQVNLKSkgPT0gMCkgeworCQkJCUNPTlNVTUUoKTsKKwkJCSAgICB9IGVsc2UgaWYgKG1vZGUgJiBUV19NT1VTRSkgeworCQkJCWNvZGUgPSBUV19NT1VTRTsKKwkJCQlnb3RvIGVuZDsKKwkJCSAgICB9CisJCQkgICAgY29udGludWU7CisJCQkgICAgLyogZS5nLiwgRk9DVVNfRVZFTlQgKi8KKwkJCWRlZmF1bHQ6CisJCQkgICAgQ09OU1VNRSgpOworCQkJICAgIHNlbGVjdEFjdGl2ZUhhbmRsZSgpOworCQkJICAgIGNvbnRpbnVlOworCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKwkgICAgY29udGludWU7CisJfSBlbHNlIHsKKwkgICAgaWYgKHJjICE9IFdBSVRfVElNRU9VVCkgeworCQljb2RlID0gLTE7CisJCWJyZWFrOworCSAgICB9IGVsc2UgeworCQljb2RlID0gMDsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICBlbmQ6CisKKyAgICBUUihUUkFDRV9JRVZFTlQsICgiZW5kIHR3YWl0OiByZXR1cm5lZCAlZCAoJWQpLCByZW1haW5pbmcgdGltZSAlZCBtc2VjIiwKKwkJICAgICAgY29kZSwgZXJybm8sIG1pbGxpc2Vjb25kcykpOworCisgICAgaWYgKHRpbWVsZWZ0KQorCSp0aW1lbGVmdCA9IG1pbGxpc2Vjb25kczsKKworICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgaW50Cit3Y29uX3R3YWl0KFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsCisJICAgaW50IG1vZGUsCisJICAgaW50IG1pbGxpc2Vjb25kcywKKwkgICBpbnQgKnRpbWVsZWZ0CisJICAgRVZFTlRMSVNUXzJuZChfbmNfZXZlbnRsaXN0ICogZXZsKSkKK3sKKyAgICBTQ1JFRU4gKnNwOworICAgIGludCBjb2RlID0gMDsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwljb2RlID0gY29uc29sZV90d2FpdChzcCwKKwkJCSAgICAgQ09OLmlucCwKKwkJCSAgICAgbW9kZSwKKwkJCSAgICAgbWlsbGlzZWNvbmRzLAorCQkJICAgICB0aW1lbGVmdCBFVkVOVExJU1RfMm5kKF9uY19ldmVudGxpc3QgKiBldmwpKTsKKyAgICB9CisgICAgcmV0dXJuIGNvZGU7Cit9CisKK3N0YXRpYyBib29sCitoYW5kbGVfbW91c2UoU0NSRUVOICpzcCwgTU9VU0VfRVZFTlRfUkVDT1JEIG1lcikKK3sKKyAgICBNRVZFTlQgd29yazsKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgYXNzZXJ0KHNwKTsKKworICAgIHNwLT5fZHJ2X21vdXNlX29sZF9idXR0b25zID0gc3AtPl9kcnZfbW91c2VfbmV3X2J1dHRvbnM7CisgICAgc3AtPl9kcnZfbW91c2VfbmV3X2J1dHRvbnMgPSBtZXIuZHdCdXR0b25TdGF0ZSAmIEJVVFRPTl9NQVNLOworCisgICAgLyoKKyAgICAgKiBXZSdyZSBvbmx5IGludGVyZXN0ZWQgaWYgdGhlIGJ1dHRvbiBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkLgorICAgICAqIEZJWE1FOiBpbXBsZW1lbnQgY29udGludW91cyBldmVudC10cmFja2luZy4KKyAgICAgKi8KKyAgICBpZiAoc3AtPl9kcnZfbW91c2VfbmV3X2J1dHRvbnMgIT0gc3AtPl9kcnZfbW91c2Vfb2xkX2J1dHRvbnMpIHsKKworCW1lbXNldCgmd29yaywgMCwgc2l6ZW9mKHdvcmspKTsKKworCWlmIChzcC0+X2Rydl9tb3VzZV9uZXdfYnV0dG9ucykgeworCisJICAgIHdvcmsuYnN0YXRlIHw9IChtbWFza190KSBkZWNvZGVfbW91c2Uoc3AsIHNwLT5fZHJ2X21vdXNlX25ld19idXR0b25zKTsKKworCX0gZWxzZSB7CisKKwkgICAgLyogY2Y6IEJVVFRPTl9QUkVTU0VELCBCVVRUT05fUkVMRUFTRUQgKi8KKwkgICAgd29yay5ic3RhdGUgfD0gKG1tYXNrX3QpIChkZWNvZGVfbW91c2Uoc3AsCisJCQkJCQkgICBzcC0+X2Rydl9tb3VzZV9vbGRfYnV0dG9ucykKKwkJCQkgICAgICA+PiAxKTsKKworCSAgICByZXN1bHQgPSBUUlVFOworCX0KKworCXdvcmsueCA9IG1lci5kd01vdXNlUG9zaXRpb24uWDsKKwl3b3JrLnkgPSBtZXIuZHdNb3VzZVBvc2l0aW9uLlkgLSBBZGp1c3RZKCk7CisKKwlzcC0+X2Rydl9tb3VzZV9maWZvW3NwLT5fZHJ2X21vdXNlX3RhaWxdID0gd29yazsKKwlzcC0+X2Rydl9tb3VzZV90YWlsICs9IDE7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAord2Nvbl9yZWFkKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCAqYnVmKQoreworICAgIFNDUkVFTiAqc3A7CisgICAgaW50IG4gPSAtMTsKKworICAgIFQoKFRfQ0FMTEVEKCJ3aW4zMmNvbjo6d2Nvbl9yZWFkKCVwKSIpLCBUQ0IpKTsKKworICAgIGFzc2VydChidWYpOworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwluID0gX25jX21pbmd3X2NvbnNvbGVfcmVhZChzcCwgQ09OLmlucCwgYnVmKTsKKyAgICB9CisgICAgcmV0dXJuQ29kZShuKTsKK30KKworc3RhdGljIGludAord2Nvbl9uYXAoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiBHQ0NfVU5VU0VELCBpbnQgbXMpCit7CisgICAgVCgoVF9DQUxMRUQoIndpbjMyY29uOjp3Y29uX25hcCglcCwgJWQpIiksIFRDQiwgbXMpKTsKKyAgICBTbGVlcCgoRFdPUkQpIG1zKTsKKyAgICByZXR1cm5Db2RlKE9LKTsKK30KKworc3RhdGljIGludAord2Nvbl9jdXJzb3JTZXQoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiBHQ0NfVU5VU0VELCBpbnQgbW9kZSkKK3sKKyAgICBpbnQgcmVzID0gLTE7CisKKyAgICBUKChUX0NBTExFRCgid2luMzJjb246d2Nvbl9jdXJzb3JTZXQoJWQpIiksIG1vZGUpKTsKKyAgICBpZiAob2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKwlDT05TT0xFX0NVUlNPUl9JTkZPIHRoaXNfQ0kgPSBDT04uc2F2ZV9DSTsKKwlzd2l0Y2ggKG1vZGUpIHsKKwljYXNlIDA6CisJICAgIHRoaXNfQ0kuYlZpc2libGUgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJY2FzZSAxOgorCSAgICBicmVhazsKKwljYXNlIDI6CisJICAgIHRoaXNfQ0kuZHdTaXplID0gMTAwOworCSAgICBicmVhazsKKwl9CisJU2V0Q29uc29sZUN1cnNvckluZm8oQ09OLmhkbCwgJnRoaXNfQ0kpOworICAgIH0KKyAgICByZXR1cm5Db2RlKHJlcyk7Cit9CisKK3N0YXRpYyBib29sCit3Y29uX2t5RXhpc3QoVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiBHQ0NfVU5VU0VELCBpbnQga2V5Y29kZSkKK3sKKyAgICBXT1JEIG5LZXk7CisgICAgdm9pZCAqcmVzOworICAgIGJvb2wgZm91bmQgPSBGQUxTRTsKKyAgICBMT05HIGtleSA9IEdlbk1hcCgwLCAoV09SRCkga2V5Y29kZSk7CisKKyAgICBUKChUX0NBTExFRCgid2luMzJjb246Ondjb25fa3lFeGlzdCglZCkiKSwga2V5Y29kZSkpOworICAgIHJlcyA9IGJzZWFyY2goJmtleSwKKwkJICBDT04ucm1hcCwKKwkJICAoc2l6ZV90KSAoTl9JTkkgKyBGS0VZUyksCisJCSAgc2l6ZW9mKGtleWxpc3RbMF0pLAorCQkgIHJrZXljb21wYXJlKTsKKyAgICBpZiAocmVzKSB7CisJa2V5ID0gKigoTE9ORyAqKSByZXMpOworCW5LZXkgPSBMT1dPUkQoa2V5KTsKKwlpZiAoIShuS2V5ICYgMHg4MDAwKSkKKwkgICAgZm91bmQgPSBUUlVFOworICAgIH0KKyAgICByZXR1cm5Db2RlKGZvdW5kKTsKK30KKworc3RhdGljIGludAord2Nvbl9rcGFkKFRFUk1JTkFMX0NPTlRST0xfQkxPQ0sgKiBUQ0IsIGludCBmbGFnIEdDQ19VTlVTRUQpCit7CisgICAgU0NSRUVOICpzcDsKKyAgICBpbnQgY29kZSA9IEVSUjsKKworICAgIFQoKFRfQ0FMTEVEKCJ3aW4zMmNvbjo6d2Nvbl9rcGFkKCVwLCAlZCkiKSwgVENCLCBmbGFnKSk7CisKKyAgICBpZiAob2tDb25zb2xlSGFuZGxlKFRDQikpIHsKKwlTZXRTUCgpOworCisJaWYgKHNwKSB7CisJICAgIGNvZGUgPSBPSzsKKwl9CisgICAgfQorICAgIHJldHVybkNvZGUoY29kZSk7Cit9CisKK3N0YXRpYyBpbnQKK3djb25fa2V5b2soVEVSTUlOQUxfQ09OVFJPTF9CTE9DSyAqIFRDQiwKKwkgICBpbnQga2V5Y29kZSwKKwkgICBpbnQgZmxhZykKK3sKKyAgICBpbnQgY29kZSA9IEVSUjsKKyAgICBTQ1JFRU4gKnNwOworICAgIFdPUkQgbktleTsKKyAgICBXT1JEIHZLZXk7CisgICAgdm9pZCAqcmVzOworICAgIExPTkcga2V5ID0gR2VuTWFwKDAsIChXT1JEKSBrZXljb2RlKTsKKworICAgIFQoKFRfQ0FMTEVEKCJ3aW4zMmNvbjo6d2Nvbl9rZXlvayglcCwgJWQsICVkKSIpLCBUQ0IsIGtleWNvZGUsIGZsYWcpKTsKKworICAgIGlmIChva0NvbnNvbGVIYW5kbGUoVENCKSkgeworCVNldFNQKCk7CisKKwlpZiAoc3ApIHsKKwkgICAgcmVzID0gYnNlYXJjaCgma2V5LAorCQkJICBDT04ucm1hcCwKKwkJCSAgKHNpemVfdCkgKE5fSU5JICsgRktFWVMpLAorCQkJICBzaXplb2Yoa2V5bGlzdFswXSksCisJCQkgIHJrZXljb21wYXJlKTsKKwkgICAgaWYgKHJlcykgeworCQlrZXkgPSAqKChMT05HICopIHJlcyk7CisJCXZLZXkgPSBISVdPUkQoa2V5KTsKKwkJbktleSA9IChMT1dPUkQoa2V5KSkgJiAweDdmZmY7CisJCWlmICghZmxhZykKKwkJICAgIG5LZXkgfD0gMHg4MDAwOworCQkqKExPTkcgKikgcmVzID0gR2VuTWFwKHZLZXksIG5LZXkpOworCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm5Db2RlKGNvZGUpOworfQorCitOQ1VSU0VTX0VYUE9SVF9WQVIgKFRFUk1fRFJJVkVSKSBfbmNfV0lOX0RSSVZFUiA9IHsKKyAgICBGQUxTRSwKKwl3Y29uX25hbWUsCQkvKiBOYW1lICovCisJd2Nvbl9DYW5IYW5kbGUsCQkvKiBDYW5IYW5kbGUgKi8KKwl3Y29uX2luaXQsCQkvKiBpbml0ICovCisJd2Nvbl9yZWxlYXNlLAkJLyogcmVsZWFzZSAqLworCXdjb25fc2l6ZSwJCS8qIHNpemUgKi8KKwl3Y29uX3NnbW9kZSwJCS8qIHNnbW9kZSAqLworCXdjb25fY29uYXR0ciwJCS8qIGNvbmF0dHIgKi8KKwl3Y29uX212Y3VyLAkJLyogaHdjdXIgKi8KKwl3Y29uX21vZGUsCQkvKiBtb2RlICovCisJd2Nvbl9yZXNjb2wsCQkvKiByZXNjb2wgKi8KKwl3Y29uX3Jlc2NvbG9ycywJCS8qIHJlc2NvbG9ycyAqLworCXdjb25fc2V0Y29sb3IsCQkvKiBjb2xvciAqLworCXdjb25fZG9iZWVwZmxhc2gsCS8qIERvQmVlcEZsYXNoICovCisJd2Nvbl9pbml0cGFpciwJCS8qIGluaXRwYWlyICovCisJd2Nvbl9pbml0Y29sb3IsCQkvKiBpbml0Y29sb3IgKi8KKwl3Y29uX2RvX2NvbG9yLAkJLyogZG9jb2xvciAqLworCXdjb25faW5pdG1vdXNlLAkJLyogaW5pdG1vdXNlICovCisJd2Nvbl90ZXN0bW91c2UsCQkvKiB0ZXN0bW91c2UgKi8KKwl3Y29uX3NldGZpbHRlciwJCS8qIHNldGZpbHRlciAqLworCXdjb25faHdsYWJlbCwJCS8qIGh3bGFiZWwgKi8KKwl3Y29uX2h3bGFiZWxPbk9mZiwJLyogaHdsYWJlbE9uT2ZmICovCisJd2Nvbl9kb3VwZGF0ZSwJCS8qIHVwZGF0ZSAqLworCXdjb25fZGVmYXVsdGNvbG9ycywJLyogZGVmYXVsdGNvbG9ycyAqLworCXdjb25fcHJpbnQsCQkvKiBwcmludCAqLworCXdjb25fc2l6ZSwJCS8qIGdldHNpemUgKi8KKwl3Y29uX3NldHNpemUsCQkvKiBzZXRzaXplICovCisJd2Nvbl9pbml0YWNzLAkJLyogaW5pdGFjcyAqLworCXdjb25fc2NyZWVuX2luaXQsCS8qIHNjaW5pdCAqLworCXdjb25fd3JhcCwJCS8qIHNjZXhpdCAqLworCXdjb25fdHdhaXQsCQkvKiB0d2FpdCAqLworCXdjb25fcmVhZCwJCS8qIHJlYWQgKi8KKwl3Y29uX25hcCwJCS8qIG5hcCAqLworCXdjb25fa3BhZCwJCS8qIGtwYWQgKi8KKwl3Y29uX2tleW9rLAkJLyoga3lPayAqLworCXdjb25fa3lFeGlzdCwJCS8qIGt5RXhpc3QgKi8KKwl3Y29uX2N1cnNvclNldAkJLyogY3Vyc29yU2V0ICovCit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIEhBTkRMRQorZ2V0X2hhbmRsZShpbnQgZmQpCit7CisgICAgaW50cHRyX3QgdmFsdWUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgcmV0dXJuIChIQU5ETEUpIHZhbHVlOworfQorCisjaWYgV0lOVkVSID49IDB4MDYwMAorLyogICBUaGlzIGZ1bmN0aW9uIHRlc3RzLCB3aGV0aGVyIG9yIG5vdCB0aGUgbmN1cnNlcyBhcHBsaWNhdGlvbgorICAgICBpcyBydW5uaW5nIGFzIGEgZGVzY2VuZGFudCBvZiBNU1lTMi9jeWd3aW4gbWludHR5IHRlcm1pbmFsCisgICAgIGFwcGxpY2F0aW9uLiBtaW50dHkgZG9lc24ndCB1c2UgV2luZG93cyBDb25zb2xlIGZvciBpdCdzIHNjcmVlbgorICAgICBJL08sIHNvIHRoZSBuYXRpdmUgV2luZG93cyBfaXNhdHR5IGRvZXNuJ3QgcmVjb2duaXplIGl0IGFzCisgICAgIGNoYXJhY3RlciBkZXZpY2UuIEJ1dCB3ZSBjYW4gZGlzY292ZXIgd2UgYXJlIGF0IHRoZSBlbmQgb2YgYW4KKyAgICAgUGlwZSBhbmQgY2FuIHF1ZXJ5IHRvIHNlcnZlciBzaWRlIG9mIHRoZSBwaXBlLCBsb29raW5nIHdoZXRoZXIKKyAgICAgb3Igbm90IHRoaXMgaXMgbWludHR5LgorICovCitzdGF0aWMgaW50CitfaXNtaW50dHkoaW50IGZkLCBMUEhBTkRMRSBwTWluVFRZKQoreworICAgIEhBTkRMRSBoYW5kbGUgPSBnZXRfaGFuZGxlKGZkKTsKKyAgICBEV09SRCBkdzsKKyAgICBpbnQgY29kZSA9IDA7CisKKyAgICBUKChUX0NBTExFRCgid2luMzJjb246Ol9pc21pbnR0eSglZCwgJXApIiksIGZkLCBwTWluVFRZKSk7CisKKyAgICBpZiAoaGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisJZHcgPSBHZXRGaWxlVHlwZShoYW5kbGUpOworCWlmIChkdyA9PSBGSUxFX1RZUEVfUElQRSkgeworCSAgICBpZiAoR2V0TmFtZWRQaXBlSW5mbyhoYW5kbGUsIDAsIDAsIDAsIDApKSB7CisJCVVMT05HIHBQaWQ7CisJCS8qIFJlcXVpcmVzIE5UNiAqLworCQlpZiAoR2V0TmFtZWRQaXBlU2VydmVyUHJvY2Vzc0lkKGhhbmRsZSwgJnBQaWQpKSB7CisJCSAgICBUQ0hBUiBidWZbTUFYX1BBVEhdOworCQkgICAgRFdPUkQgbGVuID0gMDsKKwkJICAgIC8qIFRoZXNlIHNlY3VyaXR5IGF0dHJpYnV0ZXMgbWF5IGFsbG93IHVzIHRvCisJCSAgICAgICBjcmVhdGUgYSByZW1vdGUgdGhyZWFkIGluIG1pbnR0eSB0byBtYW5pcHVsYXRlCisJCSAgICAgICB0aGUgdGVybWluYWwgc3RhdGUgcmVtb3RlbHkgKi8KKwkJICAgIEhBTkRMRSBwSGFuZGxlID0gT3BlblByb2Nlc3MoCisJCQkJCQkgICAgUFJPQ0VTU19DUkVBVEVfVEhSRUFECisJCQkJCQkgICAgfCBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OCisJCQkJCQkgICAgfCBQUk9DRVNTX1ZNX09QRVJBVElPTgorCQkJCQkJICAgIHwgUFJPQ0VTU19WTV9XUklURQorCQkJCQkJICAgIHwgUFJPQ0VTU19WTV9SRUFELAorCQkJCQkJICAgIEZBTFNFLAorCQkJCQkJICAgIHBQaWQpOworCQkgICAgaWYgKHBNaW5UVFkpCisJCQkqcE1pblRUWSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworCQkgICAgaWYgKHBIYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKwkJCWlmICgobGVuID0gR2V0UHJvY2Vzc0ltYWdlRmlsZU5hbWUoCisJCQkJCQkJICAgICAgcEhhbmRsZSwKKwkJCQkJCQkgICAgICBidWYsCisJCQkJCQkJICAgICAgKERXT1JEKQorCQkJCQkJCSAgICAgIGFycmF5X2xlbmd0aChidWYpKSkpIHsKKwkJCSAgICBUQ0hBUiAqcG9zID0gX3Rjc3JjaHIoYnVmLCBfVCgnXFwnKSk7CisJCQkgICAgaWYgKHBvcykgeworCQkJCXBvcysrOworCQkJCWlmIChfdGNzbmljbXAocG9zLCBfVEVYVCgibWludHR5LmV4ZSIpLCAxMCkKKwkJCQkgICAgPT0gMCkgeworCQkJCSAgICBpZiAocE1pblRUWSkKKwkJCQkJKnBNaW5UVFkgPSBwSGFuZGxlOworCQkJCSAgICBjb2RlID0gMTsKKwkJCQl9CisJCQkgICAgfQorCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKwl9CisgICAgfQorICAgIHJldHVybkNvZGUoY29kZSk7Cit9CisjZW5kaWYKKworLyogICBCb3Jyb3dlZCBmcm9tIGFuc2ljb24gcHJvamVjdC4KKyAgICAgQ2hlY2sgd2hldGhlciBvciBub3QgYW4gSS9PIGhhbmRsZSBpcyBhc3NvY2lhdGVkIHdpdGgKKyAgICAgYSBXaW5kb3dzIGNvbnNvbGUuCisqLworc3RhdGljIEJPT0wKK0lzQ29uc29sZUhhbmRsZShIQU5ETEUgaGRsKQoreworICAgIERXT1JEIGR3RmxhZyA9IDA7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBpZiAoIUdldENvbnNvbGVNb2RlKGhkbCwgJmR3RmxhZykpIHsKKwlyZXN1bHQgPSAoaW50KSBXcml0ZUNvbnNvbGVBKGhkbCwgTlVMTCwgMCwgJmR3RmxhZywgTlVMTCk7CisgICAgfSBlbHNlIHsKKwlyZXN1bHQgPSAoaW50KSAoZHdGbGFnICYgRU5BQkxFX1BST0NFU1NFRF9PVVRQVVQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiAgIE91ciByZXBsYWNlbWVudCBmb3IgdGhlIHN5c3RlbXMgX2lzYXR0eSB0byBpbmNsdWRlIGFsc28KKyAgICAgYSB0ZXN0IGZvciBtaW50dHkuIFRoaXMgaXMgY2FsbGVkIGZyb20gdGhlIE5DX0lTQVRUWSBtYWNybworICAgICBkZWZpbmVkIGluIGN1cnNlcy5wcml2LmgKKyAqLworaW50CitfbmNfbWluZ3dfaXNhdHR5KGludCBmZCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworI2lmZGVmIF9fTUlORzMyX18KKyNkZWZpbmUgU3lzSVNBVFRZKGZkKSBfaXNhdHR5KGZkKQorI2Vsc2UKKyNkZWZpbmUgU3lzSVNBVFRZKGZkKSBpc2F0dHkoZmQpCisjZW5kaWYKKyAgICBpZiAoU3lzSVNBVFRZKGZkKSkgeworCXJlc3VsdCA9IDE7CisgICAgfSBlbHNlIHsKKyNpZiBXSU5WRVIgPj0gMHgwNjAwCisJcmVzdWx0ID0gX2lzbWludHR5KGZkLCBOVUxMKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiAgIFRoaXMgaXMgdXNlZCB3aGVuIHJ1bm5pbmcgaW4gdGVybWluZm8gbW9kZSB0byBkaXNjb3ZlciwKKyAgICAgd2hldGhlciBvciBub3QgdGhlICJ0ZXJtaW5hbCIgaXMgYWN0dWFsbHkgYSBXaW5kb3dzCisgICAgIENvbnNvbGUuIEl0J3MgdGhlIHJlc3BvbnNpYmlsdHkgb2YgdGhlIGNvbnNvbGUgdG8gZGVhbAorICAgICB3aXRoIHRoZSB0ZXJtaW5hbCBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgYXJlIHNlbnQgYnkKKyAgICAgdGVybWluZm8uCisgKi8KK2ludAorX25jX21pbmd3X2lzY29uc29sZShpbnQgZmQpCit7CisgICAgSEFORExFIGhkbCA9IGdldF9oYW5kbGUoZmQpOworICAgIGludCBjb2RlID0gMDsKKworICAgIFQoKFRfQ0FMTEVEKCJ3aW4zMmNvbjo6X25jX21pbmd3X2lzY29uc29sZSglZCkiKSwgZmQpKTsKKworICAgIGNvZGUgPSAoaW50KSBJc0NvbnNvbGVIYW5kbGUoaGRsKTsKKworICAgIHJldHVybkNvZGUoY29kZSk7Cit9CisKKyNkZWZpbmUgVENfUFJPTE9HVUUoZmQpIFwKKyAgICBTQ1JFRU4gKnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFRFUk1JTkFMICp0ZXJtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IGNvZGUgPSBFUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX25jX3NjcmVlbl9jaGFpbiA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZm9yIChlYWNoX3NjcmVlbihzcCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNwLT5fdGVybSAmJiAoc3AtPl90ZXJtLT5GaWxlZGVzID09IGZkKSkgeyAgICAgICAgXAorICAgICAgICAgICAgdGVybSA9IHNwLT5fdGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXNzZXJ0KHRlcm0gIT0gMCkKKworaW50CitfbmNfbWluZ3dfdGNzZXRhdHRyKAorCQkgICAgICAgaW50IGZkLAorCQkgICAgICAgaW50IG9wdGlvbmFsX2FjdGlvbiBHQ0NfVU5VU0VELAorCQkgICAgICAgY29uc3Qgc3RydWN0IHRlcm1pb3MgKmFyZykKK3sKKyAgICBUQ19QUk9MT0dVRShmZCk7CisKKyAgICBpZiAoX25jX21pbmd3X2lzY29uc29sZShmZCkpIHsKKwlEV09SRCBkd0ZsYWcgPSAwOworCUhBTkRMRSBvZmQgPSBnZXRfaGFuZGxlKGZkKTsKKwlpZiAob2ZkICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisJICAgIGlmIChhcmcpIHsKKwkJaWYgKGFyZy0+Y19sZmxhZyAmIElDQU5PTikKKwkJICAgIGR3RmxhZyB8PSBFTkFCTEVfTElORV9JTlBVVDsKKwkJZWxzZQorCQkgICAgZHdGbGFnID0gZHdGbGFnICYgKERXT1JEKSAofkVOQUJMRV9MSU5FX0lOUFVUKTsKKworCQlpZiAoYXJnLT5jX2xmbGFnICYgRUNITykKKwkJICAgIGR3RmxhZyA9IGR3RmxhZyB8IEVOQUJMRV9FQ0hPX0lOUFVUOworCQllbHNlCisJCSAgICBkd0ZsYWcgPSBkd0ZsYWcgJiAoRFdPUkQpICh+RU5BQkxFX0VDSE9fSU5QVVQpOworCisJCWlmIChhcmctPmNfaWZsYWcgJiBCUktJTlQpCisJCSAgICBkd0ZsYWcgfD0gRU5BQkxFX1BST0NFU1NFRF9JTlBVVDsKKwkJZWxzZQorCQkgICAgZHdGbGFnID0gZHdGbGFnICYgKERXT1JEKSAofkVOQUJMRV9QUk9DRVNTRURfSU5QVVQpOworCSAgICB9CisJICAgIGR3RmxhZyB8PSBFTkFCTEVfTU9VU0VfSU5QVVQ7CisJICAgIFNldENvbnNvbGVNb2RlKG9mZCwgZHdGbGFnKTsKKwkgICAgY29kZSA9IE9LOworCX0KKyAgICB9CisgICAgaWYgKGFyZykKKwl0ZXJtLT5OdHR5YiA9ICphcmc7CisKKyAgICByZXR1cm4gY29kZTsKK30KKworaW50CitfbmNfbWluZ3dfdGNnZXRhdHRyKGludCBmZCwgc3RydWN0IHRlcm1pb3MgKmFyZykKK3sKKyAgICBUQ19QUk9MT0dVRShmZCk7CisKKyAgICBpZiAoX25jX21pbmd3X2lzY29uc29sZShmZCkpIHsKKwlpZiAoYXJnKQorCSAgICAqYXJnID0gdGVybS0+TnR0eWI7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitpbnQKK19uY19taW5nd190Y2ZsdXNoKGludCBmZCwgaW50IHF1ZXVlKQoreworICAgIFRDX1BST0xPR1VFKGZkKTsKKyAgICAodm9pZCkgdGVybTsKKworICAgIGlmIChfbmNfbWluZ3dfaXNjb25zb2xlKGZkKSkgeworCWlmIChxdWV1ZSA9PSBUQ0lGTFVTSCkgeworCSAgICBCT09MIGIgPSBGbHVzaENvbnNvbGVJbnB1dEJ1ZmZlcihHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSkpOworCSAgICBpZiAoIWIpCisJCXJldHVybiAoaW50KSBHZXRMYXN0RXJyb3IoKTsKKwl9CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitpbnQKK19uY19taW5nd190ZXN0bW91c2UoCisJCSAgICAgICBTQ1JFRU4gKnNwLAorCQkgICAgICAgSEFORExFIGZkLAorCQkgICAgICAgaW50IGRlbGF5KQoreworICAgIGludCByYyA9IDA7CisKKyAgICBhc3NlcnQoc3ApOworCisgICAgaWYgKHNwLT5fZHJ2X21vdXNlX2hlYWQgPCBzcC0+X2Rydl9tb3VzZV90YWlsKSB7CisJcmMgPSBUV19NT1VTRTsKKyAgICB9IGVsc2UgeworCXJjID0gY29uc29sZV90d2FpdChzcCwKKwkJCSAgIGZkLAorCQkJICAgVFdBSVRfTUFTSywKKwkJCSAgIGRlbGF5LAorCQkJICAgKGludCAqKSAwCisJCQkgICBFVkVOVExJU1RfMm5kKGV2bCkpOworICAgIH0KKyAgICByZXR1cm4gcmM7Cit9CisKK2ludAorX25jX21pbmd3X2NvbnNvbGVfcmVhZCgKKwkJCSAgU0NSRUVOICpzcCwKKwkJCSAgSEFORExFIGZkLAorCQkJICBpbnQgKmJ1ZikKK3sKKyAgICBpbnQgcmMgPSAtMTsKKyAgICBJTlBVVF9SRUNPUkQgaW5wX3JlYzsKKyAgICBCT09MIGI7CisgICAgRFdPUkQgblJlYWQ7CisgICAgV09SRCB2azsKKworICAgIGFzc2VydChzcCk7CisgICAgYXNzZXJ0KGJ1Zik7CisKKyAgICBtZW1zZXQoJmlucF9yZWMsIDAsIHNpemVvZihpbnBfcmVjKSk7CisKKyAgICBUKChUX0NBTExFRCgiX25jX21pbmd3X2NvbnNvbGVfcmVhZCglcCkiKSwgc3ApKTsKKworICAgIHdoaWxlICgoYiA9IFJlYWRDb25zb2xlSW5wdXQoZmQsICZpbnBfcmVjLCAxLCAmblJlYWQpKSkgeworCWlmIChiICYmIG5SZWFkID4gMCkgeworCSAgICBpZiAocmMgPCAwKQorCQlyYyA9IDA7CisJICAgIHJjICs9IG5SZWFkOworCSAgICBpZiAoaW5wX3JlYy5FdmVudFR5cGUgPT0gS0VZX0VWRU5UKSB7CisJCWlmICghaW5wX3JlYy5FdmVudC5LZXlFdmVudC5iS2V5RG93bikKKwkJICAgIGNvbnRpbnVlOworCQkqYnVmID0gKGludCkgaW5wX3JlYy5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXI7CisJCXZrID0gaW5wX3JlYy5FdmVudC5LZXlFdmVudC53VmlydHVhbEtleUNvZGU7CisJCS8qCisJCSAqIFRoZXJlIGFyZSAyNCB2aXJ0dWFsIGZ1bmN0aW9uLWtleXMsIGFuZCB0eXBpY2FsbHkKKwkJICogMTIgZnVuY3Rpb24ta2V5cyBvbiBhIGtleWJvYXJkLiAgVXNlIHRoZSBzaGlmdC1tb2RpZmllcgorCQkgKiB0byBwcm92aWRlIHRoZSByZW1haW5pbmcgMTIga2V5cy4KKwkJICovCisJCWlmICh2ayA+PSBWS19GMSAmJiB2ayA8PSBWS19GMTIpIHsKKwkJICAgIGlmIChpbnBfcmVjLkV2ZW50LktleUV2ZW50LmR3Q29udHJvbEtleVN0YXRlICYgU0hJRlRfUFJFU1NFRCkgeworCQkJdmsgPSAoV09SRCkgKHZrICsgMTIpOworCQkgICAgfQorCQl9CisJCWlmICgqYnVmID09IDApIHsKKwkJICAgIGludCBrZXkgPSBNYXBLZXkodmspOworCQkgICAgaWYgKGtleSA8IDApCisJCQljb250aW51ZTsKKwkJICAgIGlmIChzcC0+X2tleXBhZF9vbikgeworCQkJKmJ1ZiA9IGtleTsKKwkJICAgIH0gZWxzZSB7CisJCQl1bmdldGNoKCdcMCcpOworCQkJKmJ1ZiA9IEFuc2lLZXkodmspOworCQkgICAgfQorCQl9CisJCWJyZWFrOworCSAgICB9IGVsc2UgaWYgKGlucF9yZWMuRXZlbnRUeXBlID09IE1PVVNFX0VWRU5UKSB7CisJCWlmIChoYW5kbGVfbW91c2Uoc3AsCisJCQkJIGlucF9yZWMuRXZlbnQuTW91c2VFdmVudCkpIHsKKwkJICAgICpidWYgPSBLRVlfTU9VU0U7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIGNvbnRpbnVlOworCX0KKyAgICB9CisgICAgcmV0dXJuQ29kZShyYyk7Cit9CisKK3N0YXRpYyBib29sCitJbml0Q29uc29sZSh2b2lkKQoreworICAgIC8qIGluaXRhbGl6ZSBvbmNlLCBvciBub3QgYXQgYWxsICovCisgICAgaWYgKCFjb25zb2xlX2luaXRpYWxpemVkKSB7CisJaW50IGk7CisJRFdPUkQgbnVtX2J1dHRvbnM7CisJV09SRCBhOworCUJPT0wgYnVmZmVyZWQgPSBUUlVFOworCUJPT0wgYjsKKworCVNUQVJUX1RSQUNFKCk7CisJaWYgKF9uY19taW5nd19pc2F0dHkoMCkpIHsKKwkgICAgQ09OLmlzTWluVFRZID0gVFJVRTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgKE5fSU5JICsgRktFWVMpOyBpKyspIHsKKwkgICAgaWYgKGkgPCBOX0lOSSkgeworCQlDT04ucm1hcFtpXSA9IENPTi5tYXBbaV0gPQorCQkgICAgKERXT1JEKSBrZXlsaXN0W2ldOworCQlDT04uYW5zaV9tYXBbaV0gPSAoRFdPUkQpIGFuc2lfa2V5c1tpXTsKKwkgICAgfSBlbHNlIHsKKwkJQ09OLnJtYXBbaV0gPSBDT04ubWFwW2ldID0KKwkJICAgIChEV09SRCkgR2VuTWFwKChWS19GMSArIChpIC0gTl9JTkkpKSwKKwkJCQkgICAoS0VZX0YoMSkgKyAoaSAtIE5fSU5JKSkpOworCQlDT04uYW5zaV9tYXBbaV0gPQorCQkgICAgKERXT1JEKSBHZW5NYXAoKFZLX0YxICsgKGkgLSBOX0lOSSkpLAorCQkJCSAgICgnOycgKyAoaSAtIE5fSU5JKSkpOworCSAgICB9CisJfQorCXFzb3J0KENPTi5hbnNpX21hcCwKKwkgICAgICAoc2l6ZV90KSAoTUFQU0laRSksCisJICAgICAgc2l6ZW9mKGtleWxpc3RbMF0pLAorCSAgICAgIGtleWNvbXBhcmUpOworCXFzb3J0KENPTi5tYXAsCisJICAgICAgKHNpemVfdCkgKE1BUFNJWkUpLAorCSAgICAgIHNpemVvZihrZXlsaXN0WzBdKSwKKwkgICAgICBrZXljb21wYXJlKTsKKwlxc29ydChDT04ucm1hcCwKKwkgICAgICAoc2l6ZV90KSAoTUFQU0laRSksCisJICAgICAgc2l6ZW9mKGtleWxpc3RbMF0pLAorCSAgICAgIHJrZXljb21wYXJlKTsKKworCWlmIChHZXROdW1iZXJPZkNvbnNvbGVNb3VzZUJ1dHRvbnMoJm51bV9idXR0b25zKSkgeworCSAgICBDT04ubnVtQnV0dG9ucyA9IChpbnQpIG51bV9idXR0b25zOworCX0gZWxzZSB7CisJICAgIENPTi5udW1CdXR0b25zID0gMTsKKwl9CisKKwlhID0gTWFwQ29sb3IodHJ1ZSwgQ09MT1JfV0hJVEUpIHwgTWFwQ29sb3IoZmFsc2UsIENPTE9SX0JMQUNLKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlVNUEFJUlM7IGkrKykKKwkgICAgQ09OLnBhaXJzW2ldID0gYTsKKworCUNPTi5pbnAgPSBHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSk7CisJQ09OLm91dCA9IEdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7CisKKwliID0gQWxsb2NDb25zb2xlKCk7CisKKwlpZiAoIWIpCisJICAgIGIgPSBBdHRhY2hDb25zb2xlKEFUVEFDSF9QQVJFTlRfUFJPQ0VTUyk7CisKKwlpZiAoZ2V0ZW52KCJOQ0dEQiIpIHx8IGdldGVudigiTkNVUlNFU19DT05TT0xFMiIpKSB7CisJICAgIFQoKCIuLi4gd2lsbCBub3QgYnVmZmVyIGNvbnNvbGUiKSk7CisJICAgIGJ1ZmZlcmVkID0gRkFMU0U7CisJICAgIENPTi5oZGwgPSBDT04ub3V0OworCX0gZWxzZSB7CisJICAgIFQoKCIuLi4gY3JlYXRpbmcgY29uc29sZSBidWZmZXIiKSk7CisJICAgIENPTi5oZGwgPSBDcmVhdGVDb25zb2xlU2NyZWVuQnVmZmVyKEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsCisJCQkJCQkwLAorCQkJCQkJTlVMTCwKKwkJCQkJCUNPTlNPTEVfVEVYVE1PREVfQlVGRkVSLAorCQkJCQkJTlVMTCk7CisJfQorCisJaWYgKENPTi5oZGwgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKwkgICAgQ09OLmJ1ZmZlcmVkID0gYnVmZmVyZWQ7CisJICAgIGdldF9TQkkoKTsKKwkgICAgQ09OLnNhdmVfU0JJID0gQ09OLlNCSTsKKwkgICAgaWYgKCFidWZmZXJlZCkgeworCQlzYXZlX29yaWdpbmFsX3NjcmVlbigpOworCQlzZXRfc2Nyb2xsYmFjayhGQUxTRSwgJkNPTi5TQkkpOworCSAgICB9CisJICAgIEdldENvbnNvbGVDdXJzb3JJbmZvKENPTi5oZGwsICZDT04uc2F2ZV9DSSk7CisJICAgIFQoKCIuLi4gaW5pdGlhbCBjdXJzb3IgaXMgJXN2aXNpYmxlLCAlZCUlIiwKKwkgICAgICAgKENPTi5zYXZlX0NJLmJWaXNpYmxlID8gIiIgOiAibm90LSIpLAorCSAgICAgICAoaW50KSBDT04uc2F2ZV9DSS5kd1NpemUpKTsKKwl9CisKKwljb25zb2xlX2luaXRpYWxpemVkID0gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIChDT04uaGRsICE9IElOVkFMSURfSEFORExFX1ZBTFVFKTsKK30KKworc3RhdGljIGJvb2wKK29rQ29uc29sZUhhbmRsZShURVJNSU5BTF9DT05UUk9MX0JMT0NLICogVENCKQoreworICAgIHJldHVybiAoKFRDQiAhPSAwKSAmJgorCSAgICAoVENCLT5tYWdpYyA9PSBXSU5NQUdJQykgJiYKKwkgICAgSW5pdENvbnNvbGUoKSk7Cit9CisKKy8qCisgKiBXaGlsZSBhIGNvbnN0cnVjdG9yIHdvdWxkIGVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGluaXRpYWxpemVkLCB0aGF0IHdpbGwKKyAqIGludGVyZmVyZSB3aXRoIGFwcGxpY2F0aW9ucyB0aGF0IG1heSBjb21iaW5lIHRoaXMgd2l0aCBHVUkgaW50ZXJmYWNlcy4KKyAqLworI2lmIDAKK3N0YXRpYworX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKQorICAgICB2b2lkIF9lbnRlcl9jb25zb2xlKHZvaWQpCit7CisgICAgKHZvaWQpIEluaXRDb25zb2xlKCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NoYW5nZWxvZyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NoYW5nZWxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODc1YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4tbWluZ3cvY2hhbmdlbG9nCkBAIC0wLDAgKzEsMTEgQEAKK25jdXJzZXM2ICg2LjArMjAxNTA4MDgpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogbGF0ZXN0IHdlZWtseSBwYXRjaAorCisgLS0gVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PiAgVGh1LCAwNiBBdWcgMjAxNSAxOToxMzozOSAtMDQwMAorCituY3Vyc2VzNiAoNS45LTIwMTMxMDA1KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIGluaXRpYWwgcmVsZWFzZQorCisgLS0gVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PiAgU2F0LCAwNSBPY3QgMjAxMyAxMzozNToyOSAtMDQwMApkaWZmIC0tZ2l0IGEvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29tcGF0IGIvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29tcGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDZmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb21wYXQKQEAgLTAsMCArMSBAQAorNQpkaWZmIC0tZ2l0IGEvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29udHJvbCBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMyYTMzZQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvbnRyb2wKQEAgLTAsMCArMSwxNiBAQAorU291cmNlOiBuY3Vyc2VzNgorU2VjdGlvbjogbGliZGV2ZWwKK1ByaW9yaXR5OiBvcHRpb25hbAorTWFpbnRhaW5lcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgorSG9tZXBhZ2U6IGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLworQnVpbGQtRGVwZW5kczogZGViaGVscGVyICg+PSA3KQorU3RhbmRhcmRzLVZlcnNpb246IDMuOC4yCisKK1BhY2thZ2U6IG1pbmd3MzItbmN1cnNlczYKK0FyY2hpdGVjdHVyZTogYW55CitEZXBlbmRzOiAke21pc2M6RGVwZW5kc30KK0Rlc2NyaXB0aW9uOiBzaGFyZWQgbGlicmFyaWVzIGZvciB0ZXJtaW5hbCBoYW5kbGluZworIFRoZSBuY3Vyc2VzIGxpYnJhcnkgcm91dGluZXMgYXJlIGEgdGVybWluYWwtaW5kZXBlbmRlbnQgbWV0aG9kIG9mCisgdXBkYXRpbmcgY2hhcmFjdGVyIHNjcmVlbnMgd2l0aCByZWFzb25hYmxlIG9wdGltaXphdGlvbi4KKyAuCisgVGhpcyBwYWNrYWdlIGlzIHVzZWQgZm9yIHRlc3RpbmcgQUJJIDYgd2l0aCB0aGUgTWluR1cgMzItYml0IHBvcnQuCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb3B5cmlnaHQgYi9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYjNlNQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvcHlyaWdodApAQCAtMCwwICsxLDk5IEBACitVcHN0cmVhbSBzb3VyY2UgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5odG1sCitUaGlzIHBhY2thZ2UgaXMgdXNlZCBmb3IgdGVzdGluZyBidWlsZHMgb2YgbmN1cnNlcy4KKworQ3VycmVudCBuY3Vyc2VzIG1haW50YWluZXI6IFRob21hcyBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6ICoKK0NvcHlyaWdodDogMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitMaWNlbmNlOiBYMTEKKworRmlsZXM6IGFjbG9jYWwubTQgcGFja2FnZQorQ29weXJpZ2h0OiAxOTk2LTIwMTQsMjAxNSBieSBUaG9tYXMgRS4gRGlja2V5CitMaWNlbmNlOiBYMTEKKworRmlsZXM6IGRvYy9odG1sL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbAorQ29weXJpZ2h0OiAyMDAxIGJ5IFByYWRlZXAgUGFkYWxhCitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgICAgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICAgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAgICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgICAgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgICAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgorICAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgorICAgIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlCisgICAgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuCisgICAgYXV0aG9yaXphdGlvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6IGluc3RhbGwtc2gKK0NvcHlyaWdodDogIDE5OTQgWCBDb25zb3J0aXVtCitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAgICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAgICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICAgIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICAgIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgICAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICAgIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAgICBYIENPTlNPUlRJVU0gQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOCisgICAgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDLQorICAgIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKyAgICBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiB0aGUgWCBDb25zb3J0aXVtIHNoYWxsIG5vdAorICAgIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorICAgIGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBYIENvbnNvci0KKyAgICB0aXVtLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGaWxlczogcHJvZ3MvdHNldC5jIG5jdXJzZXMvdGluZm8vcmVhZF90ZXJtY2FwLmMKK0NvcHlyaWdodDogMTk4MCwxOTkxLDE5OTIsMTk5MyBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorTGljZW5zZTogQlNECisKKyAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgICBhcmUgbWV0OgorICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgICAgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAgICBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAgICBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAgICBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgICAgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICAgIFNVQ0ggREFNQUdFLgorCistLSB2aWxlOiB0eHRtb2RlIGZpbGUtZW5jb2Rpbmc9dXRmLTgKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuLW1pbmd3L3J1bGVzIGIvcGFja2FnZS9kZWJpYW4tbWluZ3cvcnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmFjNGM0MwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L3J1bGVzCkBAIC0wLDAgKzEsMTM2IEBACisjIS91c3IvYmluL21ha2UgLWYKKyMgTWFkZSB3aXRoIHRoZSBhaWQgb2YgZGhfbWFrZSwgYnkgQ3JhaWcgU21hbGwKKyMgU2FtcGxlIGRlYmlhbi9ydWxlcyB0aGF0IHVzZXMgZGViaGVscGVyLiBHTlUgY29weXJpZ2h0IDE5OTcgYnkgSm9leSBIZXNzLgorIyBTb21lIGxpbmVzIHRha2VuIGZyb20gZGVibWFrZSwgYnkgQ3Jpc3RvcGggTGFtZXRlci4KKworIyBVbmNvbW1lbnQgdGhpcyB0byB0dXJuIG9uIHZlcmJvc2UgbW9kZS4KKyNleHBvcnQgREhfVkVSQk9TRT0xCisKKyMgVGhlc2UgYXJlIHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZyBhbmQgZm9yIHNhdmluZyB0aGUgY29uZmlndXJlIHNjcmlwdAorIyBmcm9tIGhhdmluZyB0byBndWVzcyBvdXIgcGxhdGZvcm0gKHNpbmNlIHdlIGtub3cgaXQgYWxyZWFkeSkKK0RFQl9IT1NUX0dOVV9UWVBFICAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9IT1NUX0dOVV9UWVBFKQorREVCX0JVSUxEX0dOVV9UWVBFICA/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0JVSUxEX0dOVV9UWVBFKQorCitCVUlMRF9DQyA9IGdjYworCitDQ19OT1JNQUwgPSAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1Xc2hhZG93IC1XY29udmVyc2lvbgorQ0NfU1RSSUNUID0gJChDQ19OT1JNQUwpIC1XIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LWFsaWduIC1XY2FzdC1xdWFsIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVduZXN0ZWQtZXh0ZXJucyAtV3BvaW50ZXItYXJpdGggLVd3cml0ZS1zdHJpbmdzIC1hbnNpIC1wZWRhbnRpYworCitUQVJHRVQgICAgPSBpNjg2LXc2NC1taW5ndzMyCitNSU5HV19CSU4gPSAvdXNyL2JpbgorTUlOR1dfVE9QID0gL3Vzci8kKFRBUkdFVCkKK01JTkdXX1RNUCA9ICQoQ1VSRElSKS9kZWJpYW4vbWluZ3czMi1uY3Vyc2VzNgorCitDRkxBR1MgPSAkKENDX05PUk1BTCkKKworQ09ORklHX09QVElPTlMgPSBcCisJLS1kaXNhYmxlLWVjaG8gXAorCS0tZGlzYWJsZS1kYi1pbnN0YWxsIFwKKwktLWRpc2FibGUtZ2V0Y2FwIFwKKwktLWRpc2FibGUtaGFyZC10YWJzIFwKKwktLWRpc2FibGUtbGVha3MgXAorCS0tZGlzYWJsZS1tYWNyb3MgXAorCS0tZGlzYWJsZS1vdmVyd3JpdGUgXAorCS0tZGlzYWJsZS10ZXJtY2FwIFwKKwktLWVuYWJsZS1pbnRlcm9wIFwKKwktLWVuYWJsZS1wYy1maWxlcyBcCisJLS1lbmFibGUtdGVybS1kcml2ZXIgXAorCS0tZW5hYmxlLXdhcm5pbmdzIFwKKwktLWVuYWJsZS13aWRlYyBcCisJLS12ZXJib3NlIFwKKwktLXdpdGgtYWJpLXZlcnNpb249NiBcCisJLS13aXRoLWN4eC1zaGFyZWQgXAorCS0td2l0aC1kZXZlbG9wIFwKKwktLXdpdGgtZmFsbGJhY2tzPXVua25vd24scnh2dCBcCisJLS13aXRoLXNoYXJlZCBcCisJLS13aXRoLXRyYWNlIFwKKwktLXdpdGgteHRlcm0ta2JzPURFTCBcCisJLS13aXRob3V0LWFkYSBcCisJLS13aXRob3V0LWRlYnVnIFwKKwktLXdpdGhvdXQtbWFucGFnZXMgXAorCS0td2l0aG91dC1wcm9ncyBcCisJLS13aXRob3V0LXRlc3RzCisKK2V4cG9ydCBDRkxBR1MgQlVJTERfQ0MKKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgbm9vcHQsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBDRkxBR1MgKz0gLU8wCitlbHNlCisgICAgICAgIENGTEFHUyArPSAtTzIKK2VuZGlmCitpZmVxICgsJChmaW5kc3RyaW5nIG5vc3RyaXAsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBJTlNUQUxMX1BST0dSQU0gKz0gLXMKK2VuZGlmCisKK2NvbmZpZ3VyZTogY29uZmlndXJlLXN0YW1wCitjb25maWd1cmUtc3RhbXA6CisJZGhfdGVzdGRpcgorCisJQ0M9JChUQVJHRVQpLWdjYyBcCisJQ0ZMQUdTPSIkKENGTEFHUykiIFwKKwkuL2NvbmZpZ3VyZSBcCisJCS0taG9zdD0kKFRBUkdFVCkgXAorCQktLXRhcmdldD0kKFRBUkdFVCkgXAorCQktLXByZWZpeD0kKE1JTkdXX1RPUCkgXAorCQktLXdpdGgtYnVpbGQtY2M9JChCVUlMRF9DQykgXAorCQktLXdpdGgtcGtnLWNvbmZpZy1saWJkaXI9L3Vzci8kKFRBUkdFVCkvbGliL3BrZ2NvbmZpZyBcCisJCSQoQ09ORklHX09QVElPTlMpCisKKwl0b3VjaCBjb25maWd1cmUtc3RhbXAKKworYnVpbGQ6IGJ1aWxkLXN0YW1wCitidWlsZC1zdGFtcDogY29uZmlndXJlLXN0YW1wCisJZGhfdGVzdGRpcgorCisJJChNQUtFKQorCisJdG91Y2ggYnVpbGQtc3RhbXAKKworY2xlYW46CisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisKKwlbICEgLWYgbWFrZWZpbGUgXSB8fCAkKE1BS0UpIGRpc3RjbGVhbgorCisJcm0gLWYgY29uZmlndXJlLXN0YW1wIGJ1aWxkLXN0YW1wIGluc3RhbGwtc3RhbXAKKworCWRoX2NsZWFuCisKK2luc3RhbGw6IGluc3RhbGwtc3RhbXAKK2luc3RhbGwtc3RhbXA6IGJ1aWxkLXN0YW1wCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfY2xlYW4gLWsKKwlkaF9pbnN0YWxsZGlycworCisJJChNQUtFKSBpbnN0YWxsLmxpYnMgREVTVERJUj0kKE1JTkdXX1RNUCkKKworCW1rZGlyIC1wICQoTUlOR1dfVE1QKSQoTUlOR1dfQklOKQorCWZvciBuYW1lIGluICQoTUlOR1dfVE1QKSQoTUlOR1dfVE9QKS9iaW4vKi1jb25maWc7IFwKKwlkbyBcCisJCWJhc2U9YGJhc2VuYW1lICQkbmFtZWA7IFwKKwkJbG4gLXYgJCRuYW1lICQoTUlOR1dfVE1QKSQoTUlOR1dfQklOKS8kKFRBUkdFVCktJCRiYXNlOyBcCisJZG9uZQorCisJdG91Y2ggaW5zdGFsbC1zdGFtcAorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWluZGVwOiBidWlsZCBpbnN0YWxsCisjIE5vIGJpbmFyeS1pbmRlcCB0YXJnZXQuCisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWFyY2g6IGJ1aWxkIGluc3RhbGwKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyBORVdTCisJIyBkaF9zdHJpcAorCWRoX2NvbXByZXNzCisJZGhfZml4cGVybXMKKwlkaF9pbnN0YWxsZGViCisJZGhfc2hsaWJkZXBzCisJZGhfZ2VuY29udHJvbAorCWRoX21kNXN1bXMKKwlkaF9idWlsZGRlYgorCitiaW5hcnk6IGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaAorLlBIT05ZOiBidWlsZCBjbGVhbiBiaW5hcnktaW5kZXAgYmluYXJ5LWFyY2ggYmluYXJ5IGluc3RhbGwgaW5zdGFsbC1zdGFtcApkaWZmIC0tZ2l0IGEvcGFja2FnZS9kZWJpYW4tbWluZ3cvc291cmNlL2Zvcm1hdCBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L3NvdXJjZS9mb3JtYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhZTlkYgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L3NvdXJjZS9mb3JtYXQKQEAgLTAsMCArMSBAQAorMy4wIChuYXRpdmUpCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi1taW5ndy93YXRjaCBiL3BhY2thZ2UvZGViaWFuLW1pbmd3L3dhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NWE5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL2RlYmlhbi1taW5ndy93YXRjaApAQCAtMCwwICsxLDQgQEAKK3ZlcnNpb249MworCitvcHRzPXBhc3NpdmUgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9jdXJyZW50L25jdXJzZXNcLnRhci5neiBcCisgZGViaWFuICB1dXBkYXRlCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NoYW5nZWxvZyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY2hhbmdlbG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NzVhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NoYW5nZWxvZwpAQCAtMCwwICsxLDExIEBACituY3Vyc2VzNiAoNi4wKzIwMTUwODA4KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIGxhdGVzdCB3ZWVrbHkgcGF0Y2gKKworIC0tIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4gIFRodSwgMDYgQXVnIDIwMTUgMTk6MTM6MzkgLTA0MDAKKworbmN1cnNlczYgKDUuOS0yMDEzMTAwNSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBpbml0aWFsIHJlbGVhc2UKKworIC0tIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4gIFNhdCwgMDUgT2N0IDIwMTMgMTM6MzU6MjkgLTA0MDAKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29tcGF0IGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb21wYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkNmZmOAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29tcGF0CkBAIC0wLDAgKzEgQEAKKzUKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29udHJvbCBiL3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTdlZDFmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb250cm9sCkBAIC0wLDAgKzEsMTYgQEAKK1NvdXJjZTogbmN1cnNlczYKK1NlY3Rpb246IGxpYmRldmVsCitQcmlvcml0eTogb3B0aW9uYWwKK01haW50YWluZXI6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KK0hvbWVwYWdlOiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KK0J1aWxkLURlcGVuZHM6IGRlYmhlbHBlciAoPj0gNykKK1N0YW5kYXJkcy1WZXJzaW9uOiAzLjguMgorCitQYWNrYWdlOiBtaW5ndzY0LW5jdXJzZXM2CitBcmNoaXRlY3R1cmU6IGFueQorRGVwZW5kczogJHttaXNjOkRlcGVuZHN9CitEZXNjcmlwdGlvbjogc2hhcmVkIGxpYnJhcmllcyBmb3IgdGVybWluYWwgaGFuZGxpbmcKKyBUaGUgbmN1cnNlcyBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBhIHRlcm1pbmFsLWluZGVwZW5kZW50IG1ldGhvZCBvZgorIHVwZGF0aW5nIGNoYXJhY3RlciBzY3JlZW5zIHdpdGggcmVhc29uYWJsZSBvcHRpbWl6YXRpb24uCisgLgorIFRoaXMgcGFja2FnZSBpcyB1c2VkIGZvciB0ZXN0aW5nIEFCSSA2IHdpdGggdGhlIE1pbkdXIDY0LWJpdCBwb3J0LgpkaWZmIC0tZ2l0IGEvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQgYi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2NiM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQKQEAgLTAsMCArMSw5OSBAQAorVXBzdHJlYW0gc291cmNlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuaHRtbAorVGhpcyBwYWNrYWdlIGlzIHVzZWQgZm9yIHRlc3RpbmcgYnVpbGRzIG9mIG5jdXJzZXMuCisKK0N1cnJlbnQgbmN1cnNlcyBtYWludGFpbmVyOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiAqCitDb3B5cmlnaHQ6IDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorTGljZW5jZTogWDExCisKK0ZpbGVzOiBhY2xvY2FsLm00IHBhY2thZ2UKK0NvcHlyaWdodDogMTk5Ni0yMDE0LDIwMTUgYnkgVGhvbWFzIEUuIERpY2tleQorTGljZW5jZTogWDExCisKK0ZpbGVzOiBkb2MvaHRtbC9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwKK0NvcHlyaWdodDogMjAwMSBieSBQcmFkZWVwIFBhZGFsYQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICAgIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICAgIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAgICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICAgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgICBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IKKyAgICBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworICAgIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZQorICAgIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICAgIGF1dGhvcml6YXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiBpbnN0YWxsLXNoCitDb3B5cmlnaHQ6ICAxOTk0IFggQ29uc29ydGl1bQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgICAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAgICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAgICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICAgIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgICAgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICAgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQy0KKyAgICBUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFggQ29uc29ydGl1bSBzaGFsbCBub3QKKyAgICBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbC0KKyAgICBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisgICAgdGl1bS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6IHByb2dzL3RzZXQuYyBuY3Vyc2VzL3RpbmZvL3JlYWRfdGVybWNhcC5jCitDb3B5cmlnaHQ6IDE5ODAsMTk5MSwxOTkyLDE5OTMgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KK0xpY2Vuc2U6IEJTRAorCisgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICAgYXJlIG1ldDoKKyAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKyAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICAgIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgICAgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgICAgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICAgIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAgICBTVUNIIERBTUFHRS4KKworLS0gdmlsZTogdHh0bW9kZSBmaWxlLWVuY29kaW5nPXV0Zi04CmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3J1bGVzIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNGEyMWEzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9ydWxlcwpAQCAtMCwwICsxLDEzNiBAQAorIyEvdXNyL2Jpbi9tYWtlIC1mCisjIE1hZGUgd2l0aCB0aGUgYWlkIG9mIGRoX21ha2UsIGJ5IENyYWlnIFNtYWxsCisjIFNhbXBsZSBkZWJpYW4vcnVsZXMgdGhhdCB1c2VzIGRlYmhlbHBlci4gR05VIGNvcHlyaWdodCAxOTk3IGJ5IEpvZXkgSGVzcy4KKyMgU29tZSBsaW5lcyB0YWtlbiBmcm9tIGRlYm1ha2UsIGJ5IENyaXN0b3BoIExhbWV0ZXIuCisKKyMgVW5jb21tZW50IHRoaXMgdG8gdHVybiBvbiB2ZXJib3NlIG1vZGUuCisjZXhwb3J0IERIX1ZFUkJPU0U9MQorCisjIFRoZXNlIGFyZSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcgYW5kIGZvciBzYXZpbmcgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyMgZnJvbSBoYXZpbmcgdG8gZ3Vlc3Mgb3VyIHBsYXRmb3JtIChzaW5jZSB3ZSBrbm93IGl0IGFscmVhZHkpCitERUJfSE9TVF9HTlVfVFlQRSAgID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9HTlVfVFlQRSkKK0RFQl9CVUlMRF9HTlVfVFlQRSAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9CVUlMRF9HTlVfVFlQRSkKKworQlVJTERfQ0MgPSBnY2MKKworQ0NfTk9STUFMID0gLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV3NoYWRvdyAtV2NvbnZlcnNpb24KK0NDX1NUUklDVCA9ICQoQ0NfTk9STUFMKSAtVyAtV2JhZC1mdW5jdGlvbi1jYXN0IC1XY2FzdC1hbGlnbiAtV2Nhc3QtcXVhbCAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbmVzdGVkLWV4dGVybnMgLVdwb2ludGVyLWFyaXRoIC1Xd3JpdGUtc3RyaW5ncyAtYW5zaSAtcGVkYW50aWMKKworVEFSR0VUICAgID0geDg2XzY0LXc2NC1taW5ndzMyCitNSU5HV19CSU4gPSAvdXNyL2JpbgorTUlOR1dfVE9QID0gL3Vzci8kKFRBUkdFVCkKK01JTkdXX1RNUCA9ICQoQ1VSRElSKS9kZWJpYW4vbWluZ3c2NC1uY3Vyc2VzNgorCitDRkxBR1MgPSAkKENDX05PUk1BTCkKKworQ09ORklHX09QVElPTlMgPSBcCisJLS1kaXNhYmxlLWVjaG8gXAorCS0tZGlzYWJsZS1kYi1pbnN0YWxsIFwKKwktLWRpc2FibGUtZ2V0Y2FwIFwKKwktLWRpc2FibGUtaGFyZC10YWJzIFwKKwktLWRpc2FibGUtbGVha3MgXAorCS0tZGlzYWJsZS1tYWNyb3MgXAorCS0tZGlzYWJsZS1vdmVyd3JpdGUgXAorCS0tZGlzYWJsZS10ZXJtY2FwIFwKKwktLWVuYWJsZS1pbnRlcm9wIFwKKwktLWVuYWJsZS1wYy1maWxlcyBcCisJLS1lbmFibGUtdGVybS1kcml2ZXIgXAorCS0tZW5hYmxlLXdhcm5pbmdzIFwKKwktLWVuYWJsZS13aWRlYyBcCisJLS12ZXJib3NlIFwKKwktLXdpdGgtYWJpLXZlcnNpb249NiBcCisJLS13aXRoLWN4eC1zaGFyZWQgXAorCS0td2l0aC1kZXZlbG9wIFwKKwktLXdpdGgtZmFsbGJhY2tzPXVua25vd24scnh2dCBcCisJLS13aXRoLXNoYXJlZCBcCisJLS13aXRoLXRyYWNlIFwKKwktLXdpdGgteHRlcm0ta2JzPURFTCBcCisJLS13aXRob3V0LWFkYSBcCisJLS13aXRob3V0LWRlYnVnIFwKKwktLXdpdGhvdXQtbWFucGFnZXMgXAorCS0td2l0aG91dC1wcm9ncyBcCisJLS13aXRob3V0LXRlc3RzCisKK2V4cG9ydCBDRkxBR1MgQlVJTERfQ0MKKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgbm9vcHQsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBDRkxBR1MgKz0gLU8wCitlbHNlCisgICAgICAgIENGTEFHUyArPSAtTzIKK2VuZGlmCitpZmVxICgsJChmaW5kc3RyaW5nIG5vc3RyaXAsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBJTlNUQUxMX1BST0dSQU0gKz0gLXMKK2VuZGlmCisKK2NvbmZpZ3VyZTogY29uZmlndXJlLXN0YW1wCitjb25maWd1cmUtc3RhbXA6CisJZGhfdGVzdGRpcgorCisJQ0M9JChUQVJHRVQpLWdjYyBcCisJQ0ZMQUdTPSIkKENGTEFHUykiIFwKKwkuL2NvbmZpZ3VyZSBcCisJCS0taG9zdD0kKFRBUkdFVCkgXAorCQktLXRhcmdldD0kKFRBUkdFVCkgXAorCQktLXByZWZpeD0kKE1JTkdXX1RPUCkgXAorCQktLXdpdGgtYnVpbGQtY2M9JChCVUlMRF9DQykgXAorCQktLXdpdGgtcGtnLWNvbmZpZy1saWJkaXI9L3Vzci8kKFRBUkdFVCkvbGliL3BrZ2NvbmZpZyBcCisJCSQoQ09ORklHX09QVElPTlMpCisKKwl0b3VjaCBjb25maWd1cmUtc3RhbXAKKworYnVpbGQ6IGJ1aWxkLXN0YW1wCitidWlsZC1zdGFtcDogY29uZmlndXJlLXN0YW1wCisJZGhfdGVzdGRpcgorCisJJChNQUtFKQorCisJdG91Y2ggYnVpbGQtc3RhbXAKKworY2xlYW46CisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisKKwlbICEgLWYgbWFrZWZpbGUgXSB8fCAkKE1BS0UpIGRpc3RjbGVhbgorCisJcm0gLWYgY29uZmlndXJlLXN0YW1wIGJ1aWxkLXN0YW1wIGluc3RhbGwtc3RhbXAKKworCWRoX2NsZWFuCisKK2luc3RhbGw6IGluc3RhbGwtc3RhbXAKK2luc3RhbGwtc3RhbXA6IGJ1aWxkLXN0YW1wCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfY2xlYW4gLWsKKwlkaF9pbnN0YWxsZGlycworCisJJChNQUtFKSBpbnN0YWxsLmxpYnMgREVTVERJUj0kKE1JTkdXX1RNUCkKKworCW1rZGlyIC1wICQoTUlOR1dfVE1QKSQoTUlOR1dfQklOKQorCWZvciBuYW1lIGluICQoTUlOR1dfVE1QKSQoTUlOR1dfVE9QKS9iaW4vKi1jb25maWc7IFwKKwlkbyBcCisJCWJhc2U9YGJhc2VuYW1lICQkbmFtZWA7IFwKKwkJbG4gLXYgJCRuYW1lICQoTUlOR1dfVE1QKSQoTUlOR1dfQklOKS8kKFRBUkdFVCktJCRiYXNlOyBcCisJZG9uZQorCisJdG91Y2ggaW5zdGFsbC1zdGFtcAorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWluZGVwOiBidWlsZCBpbnN0YWxsCisjIE5vIGJpbmFyeS1pbmRlcCB0YXJnZXQuCisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWFyY2g6IGJ1aWxkIGluc3RhbGwKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyBORVdTCisJIyBkaF9zdHJpcAorCWRoX2NvbXByZXNzCisJZGhfZml4cGVybXMKKwlkaF9pbnN0YWxsZGViCisJZGhfc2hsaWJkZXBzCisJZGhfZ2VuY29udHJvbAorCWRoX21kNXN1bXMKKwlkaF9idWlsZGRlYgorCitiaW5hcnk6IGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaAorLlBIT05ZOiBidWlsZCBjbGVhbiBiaW5hcnktaW5kZXAgYmluYXJ5LWFyY2ggYmluYXJ5IGluc3RhbGwgaW5zdGFsbC1zdGFtcApkaWZmIC0tZ2l0IGEvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9zb3VyY2UvZm9ybWF0IGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9zb3VyY2UvZm9ybWF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YWU5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3NvdXJjZS9mb3JtYXQKQEAgLTAsMCArMSBAQAorMy4wIChuYXRpdmUpCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3dhdGNoIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC93YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDVhOTk2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC93YXRjaApAQCAtMCwwICsxLDQgQEAKK3ZlcnNpb249MworCitvcHRzPXBhc3NpdmUgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9jdXJyZW50L25jdXJzZXNcLnRhci5neiBcCisgZGViaWFuICB1dXBkYXRlCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi9jaGFuZ2Vsb2cgYi9wYWNrYWdlL2RlYmlhbi9jaGFuZ2Vsb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY0NjRlMAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuL2NoYW5nZWxvZwpAQCAtMCwwICsxLDExIEBACituY3Vyc2VzNiAoNi4wKzIwMTUwODA4KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIGxhdGVzdCB3ZWVrbHkgcGF0Y2gKKworIC0tIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4gIFRodSwgMDYgQXVnIDIwMTUgMTk6MTM6MzkgLTA0MDAKKworbmN1cnNlczYgKDUuOS0yMDEyMDYwOCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBpbml0aWFsIHJlbGVhc2UKKworIC0tIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4gIEZyaSwgMDggSnVuIDIwMTIgMDc6NTQ6MjkgLTA0MDAKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuL2NvbXBhdCBiL3BhY2thZ2UvZGViaWFuL2NvbXBhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ2ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4vY29tcGF0CkBAIC0wLDAgKzEgQEAKKzUKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuL2NvbnRyb2wgYi9wYWNrYWdlL2RlYmlhbi9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNmU4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL2RlYmlhbi9jb250cm9sCkBAIC0wLDAgKzEsMjUgQEAKK1NvdXJjZTogbmN1cnNlczYKK1NlY3Rpb246IGxpYmRldmVsCitQcmlvcml0eTogb3B0aW9uYWwKK01haW50YWluZXI6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KK0hvbWVwYWdlOiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KK0J1aWxkLURlcGVuZHM6IGRlYmhlbHBlciAoPj0gNykKK1N0YW5kYXJkcy1WZXJzaW9uOiAzLjguMgorCitQYWNrYWdlOiBuY3Vyc2VzNgorQXJjaGl0ZWN0dXJlOiBhbnkKK0RlcGVuZHM6ICR7bWlzYzpEZXBlbmRzfQorRGVzY3JpcHRpb246IHNoYXJlZCBsaWJyYXJpZXMgZm9yIHRlcm1pbmFsIGhhbmRsaW5nCisgVGhlIG5jdXJzZXMgbGlicmFyeSByb3V0aW5lcyBhcmUgYSB0ZXJtaW5hbC1pbmRlcGVuZGVudCBtZXRob2Qgb2YKKyB1cGRhdGluZyBjaGFyYWN0ZXIgc2NyZWVucyB3aXRoIHJlYXNvbmFibGUgb3B0aW1pemF0aW9uLgorIC4KKyBUaGlzIHBhY2thZ2UgaXMgdXNlZCBmb3IgdGVzdGluZyBBQkkgNi4KKworUGFja2FnZTogbmN1cnNlc3Q2CitBcmNoaXRlY3R1cmU6IGFueQorRGVwZW5kczogJHttaXNjOkRlcGVuZHN9CitEZXNjcmlwdGlvbjogc2hhcmVkIGxpYnJhcmllcyBmb3IgdGVybWluYWwgaGFuZGxpbmcKKyBUaGUgbmN1cnNlcyBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBhIHRlcm1pbmFsLWluZGVwZW5kZW50IG1ldGhvZCBvZgorIHVwZGF0aW5nIGNoYXJhY3RlciBzY3JlZW5zIHdpdGggcmVhc29uYWJsZSBvcHRpbWl6YXRpb24uCisgLgorIFRoaXMgcGFja2FnZSBpcyB1c2VkIGZvciB0ZXN0aW5nIEFCSSA2IHdpdGggcHRocmVhZHMuCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQgYi9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYjNlNQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodApAQCAtMCwwICsxLDk5IEBACitVcHN0cmVhbSBzb3VyY2UgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5odG1sCitUaGlzIHBhY2thZ2UgaXMgdXNlZCBmb3IgdGVzdGluZyBidWlsZHMgb2YgbmN1cnNlcy4KKworQ3VycmVudCBuY3Vyc2VzIG1haW50YWluZXI6IFRob21hcyBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6ICoKK0NvcHlyaWdodDogMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitMaWNlbmNlOiBYMTEKKworRmlsZXM6IGFjbG9jYWwubTQgcGFja2FnZQorQ29weXJpZ2h0OiAxOTk2LTIwMTQsMjAxNSBieSBUaG9tYXMgRS4gRGlja2V5CitMaWNlbmNlOiBYMTEKKworRmlsZXM6IGRvYy9odG1sL05DVVJTRVMtUHJvZ3JhbW1pbmctSE9XVE8uaHRtbAorQ29weXJpZ2h0OiAyMDAxIGJ5IFByYWRlZXAgUGFkYWxhCitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgICAgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICAgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAgICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgICAgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgICAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgorICAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgorICAgIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlCisgICAgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuCisgICAgYXV0aG9yaXphdGlvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6IGluc3RhbGwtc2gKK0NvcHlyaWdodDogIDE5OTQgWCBDb25zb3J0aXVtCitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAgICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAgICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICAgIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICAgIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgICAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICAgIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAgICBYIENPTlNPUlRJVU0gQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOCisgICAgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDLQorICAgIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKyAgICBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiB0aGUgWCBDb25zb3J0aXVtIHNoYWxsIG5vdAorICAgIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorICAgIGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBYIENvbnNvci0KKyAgICB0aXVtLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGaWxlczogcHJvZ3MvdHNldC5jIG5jdXJzZXMvdGluZm8vcmVhZF90ZXJtY2FwLmMKK0NvcHlyaWdodDogMTk4MCwxOTkxLDE5OTIsMTk5MyBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorTGljZW5zZTogQlNECisKKyAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAgICBhcmUgbWV0OgorICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgICAgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAgICBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAgICBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAgICBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgICAgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICAgIFNVQ0ggREFNQUdFLgorCistLSB2aWxlOiB0eHRtb2RlIGZpbGUtZW5jb2Rpbmc9dXRmLTgKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuL3J1bGVzIGIvcGFja2FnZS9kZWJpYW4vcnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTc3ZmQ2OQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuL3J1bGVzCkBAIC0wLDAgKzEsMjA3IEBACisjIS91c3IvYmluL21ha2UgLWYKKyMgTWFkZSB3aXRoIHRoZSBhaWQgb2YgZGhfbWFrZSwgYnkgQ3JhaWcgU21hbGwKKyMgU2FtcGxlIGRlYmlhbi9ydWxlcyB0aGF0IHVzZXMgZGViaGVscGVyLiBHTlUgY29weXJpZ2h0IDE5OTcgYnkgSm9leSBIZXNzLgorIyBTb21lIGxpbmVzIHRha2VuIGZyb20gZGVibWFrZSwgYnkgQ3Jpc3RvcGggTGFtZXRlci4KKworIyBVbmNvbW1lbnQgdGhpcyB0byB0dXJuIG9uIHZlcmJvc2UgbW9kZS4KKyNleHBvcnQgREhfVkVSQk9TRT0xCisKKyMgcGFja2FnZXMKK1BBQ0tBR0VTLmluZGVwID0gIyBuY3Vyc2VzNi1kb2NzCitQQUNLQUdFUy5hcmNoICA9IG5jdXJzZXM2IG5jdXJzZXN0NgorCisjIFRoZXNlIGFyZSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcgYW5kIGZvciBzYXZpbmcgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyMgZnJvbSBoYXZpbmcgdG8gZ3Vlc3Mgb3VyIHBsYXRmb3JtIChzaW5jZSB3ZSBrbm93IGl0IGFscmVhZHkpCitERUJfSE9TVF9HTlVfVFlQRSAgID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9HTlVfVFlQRSkKK0RFQl9CVUlMRF9HTlVfVFlQRSAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9CVUlMRF9HTlVfVFlQRSkKKworQ0NfTk9STUFMID0gLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV3NoYWRvdyAtV2NvbnZlcnNpb24KK0NDX1NUUklDVCA9ICQoQ0NfTk9STUFMKSAtVyAtV2JhZC1mdW5jdGlvbi1jYXN0IC1XY2FzdC1hbGlnbiAtV2Nhc3QtcXVhbCAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbmVzdGVkLWV4dGVybnMgLVdwb2ludGVyLWFyaXRoIC1Xd3JpdGUtc3RyaW5ncyAtYW5zaSAtcGVkYW50aWMKKworTVlfQUJJPTYKK01ZX0RJUj0vdXNyCitNWURBVEE9L3Vzci9sb2NhbC9uY3Vyc2VzL3NoYXJlL3Rlcm1pbmZvCitOT1JNQUxfRElSPSQoQ1VSRElSKS9kZWJpYW4vbmN1cnNlcyQoTVlfQUJJKQorVEhSRUFEX0RJUj0kKENVUkRJUikvZGViaWFuL25jdXJzZXN0JChNWV9BQkkpCisKK0NGTEFHUyAgID0gJChzaGVsbCBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ0ZMQUdTKSAkKENDX05PUk1BTCkKK0NQUEZMQUdTID0gJChzaGVsbCBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ1BQRkxBR1MpCitMREZMQUdTICA9ICQoc2hlbGwgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1MpCisKK2lmbmVxICgkKE1ZX0RJUiksL3VzcikKKwlSUEFUSF9FTlYgPSBSUEFUSF9MSVNUPS4uL2xpYjokKE1ZX0RJUikvbGliCisJUlBBVEhfT1BUID0gLS1lbmFibGUtcnBhdGgKK2Vsc2UKKwlSUEFUSF9FTlYgPQorCVJQQVRIX09QVCA9IC0tZGlzYWJsZS1ycGF0aCAtLWRpc2FibGUtcnBhdGgtaGFjaworZW5kaWYKKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgbm9vcHQsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBDRkxBR1MgKz0gLU8wCitlbHNlCisgICAgICAgIENGTEFHUyArPSAtTzIKK2VuZGlmCitpZmVxICgsJChmaW5kc3RyaW5nIG5vc3RyaXAsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBJTlNUQUxMX1BST0dSQU0gKz0gLXMKK2VuZGlmCisKK3ZlcmJvc2UgPSAjIC12CisKK2NvbmZpZ3VyZSA9IFwKKwkkKFJQQVRIX0VOVikgXAorCUNGTEFHUz0iJChDRkxBR1MpIiBcCisJQ1BQRkxBR1M9IiQoQ1BQRkxBR1MpIiBcCisJTERGTEFHUz0iJChMREZMQUdTKSIgLi4vLi4vY29uZmlndXJlICQoUlBBVEhfT1BUKSBcCisJCS0taG9zdD0kKERFQl9IT1NUX0dOVV9UWVBFKSBcCisJCS0tYnVpbGQ9JChERUJfQlVJTERfR05VX1RZUEUpIFwKKwkJLS1wcmVmaXg9JChNWV9ESVIpIFwKKwkJLS13aXRoLWRlZmF1bHQtdGVybWluZm8tZGlyPSQoTVlEQVRBKSBcCisJCS0td2l0aC10ZXJtaW5mby1kaXJzPSQoTVlEQVRBKTovdXNyL3NoYXJlL3Rlcm1pbmZvIFwKKwkJLS1kaXNhYmxlLWVjaG8gXAorCQktLWRpc2FibGUtZ2V0Y2FwIFwKKwkJLS1kaXNhYmxlLWxlYWtzIFwKKwkJLS1kaXNhYmxlLW1hY3JvcyAgXAorCQktLWRpc2FibGUtb3ZlcndyaXRlICBcCisJCS0tZGlzYWJsZS10ZXJtY2FwIFwKKwkJLS1lbmFibGUtaGFyZC10YWJzIFwKKwkJLS1lbmFibGUtcGMtZmlsZXMgXAorCQktLWVuYWJsZS13YXJuaW5ncyBcCisJCS0tZW5hYmxlLXdnZXRjaC1ldmVudHMgXAorCQktLWVuYWJsZS13aWRlYyBcCisJCS0tcHJvZ3JhbS1zdWZmaXg9JChNWV9BQkkpIFwKKwkJLS12ZXJib3NlIFwKKwkJLS13aXRoLWFiaS12ZXJzaW9uPSQoTVlfQUJJKSBcCisJCS0td2l0aC1kZXZlbG9wIFwKKwkJLS13aXRoLWV4dHJhLXN1ZmZpeD0kKE1ZX0FCSSkgXAorCQktLXdpdGgtc2hhcmVkIFwKKwkJLS13aXRoLXRlcm1saWIgXAorCQktLXdpdGgtdGljbGliIFwKKwkJLS13aXRoLXRyYWNlIFwKKwkJLS13aXRoLWN4eC1zaGFyZWQgXAorCQktLXdpdGgtdmVyc2lvbmVkLXN5bXMgXAorCQktLXdpdGgteHRlcm0ta2JzPURFTCBcCisJCS0td2l0aG91dC1hZGEgXAorCQktLXdpdGhvdXQtZGVidWcgXAorCQktLXdpdGhvdXQtbm9ybWFsCisKK05DVVJTRVM2X0RJUiA9ICQoQ1VSRElSKS9kZWJpYW4vbmN1cnNlczYKK05DVVJTRVNUNl9ESVIgPSAkKENVUkRJUikvZGViaWFuL25jdXJzZXN0NgorCisuUEhPTlk6IGFsbCBjb25maWcgYnVpbGQgaW5zdGFsbCBiaW5hcnkgY2xlYW4gY29uZmlnLWluZGVwIGNvbmZpZy1hcmNoIFwKKyAgICBidWlsZC1pbmRlcCBidWlsZC1hcmNoIGluc3RhbGwtaW5kZXAgaW5zdGFsbC1hcmNoIGJpbmFyeS1pbmRlcCBcCisgICAgYmluYXJ5LWFyY2gKKworYWxsOiBidWlsZAorCitjb25maWc6IGNvbmZpZy1pbmRlcCBjb25maWctYXJjaAorYnVpbGQ6IGJ1aWxkLWluZGVwIGJ1aWxkLWFyY2gKK2luc3RhbGw6IGluc3RhbGwtaW5kZXAgaW5zdGFsbC1hcmNoCitiaW5hcnk6IGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaAorY2xlYW46CisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfY2xlYW4gJCh2ZXJib3NlKQorCXJtIC1yZiB0CisKK2NvbmZpZy1pbmRlcDogJChQQUNLQUdFUy5pbmRlcDolPWNvbmZpZy0lLXN0YW1wKQorY29uZmlnLWFyY2g6ICQoUEFDS0FHRVMuYXJjaDolPWNvbmZpZy0lLXN0YW1wKQorCitidWlsZC1pbmRlcDogJChQQUNLQUdFUy5pbmRlcDolPWJ1aWxkLSUtc3RhbXApCitidWlsZC1hcmNoOiAkKFBBQ0tBR0VTLmFyY2g6JT1idWlsZC0lLXN0YW1wKQorCitpbnN0YWxsLWluZGVwOiAkKFBBQ0tBR0VTLmluZGVwOiU9aW5zdGFsbC0lLXN0YW1wKQoraW5zdGFsbC1hcmNoOiAkKFBBQ0tBR0VTLmFyY2g6JT1pbnN0YWxsLSUtc3RhbXApCisKK2NvbmZpZy1uY3Vyc2VzNi1zdGFtcDoKKwlkaF90ZXN0ZGlyCisJcm0gLXJmIHQvbmN1cnNlczYKKwlta2RpciAtcCB0L25jdXJzZXM2CisJY2QgdC9uY3Vyc2VzNjsgJChjb25maWd1cmUpCisJdG91Y2ggJEAKKworY29uZmlnLW5jdXJzZXN0Ni1zdGFtcDoKKwlkaF90ZXN0ZGlyCisJcm0gLXJmIHQvbmN1cnNlc3Q2CisJbWtkaXIgLXAgdC9uY3Vyc2VzdDYKKwljZCB0L25jdXJzZXN0NjsgJChjb25maWd1cmUpIFwKKwkJLS1lbmFibGUtaW50ZXJvcCBcCisJCS0tZW5hYmxlLXNwLWZ1bmNzIFwKKwkJLS1wcm9ncmFtLXN1ZmZpeD10JChNWV9BQkkpIFwKKwkJLS13aXRoLXB0aHJlYWQKKwl0b3VjaCAkQAorCitidWlsZC1uY3Vyc2VzNi1zdGFtcDogY29uZmlnLW5jdXJzZXM2LXN0YW1wCisJZGhfdGVzdGRpcgorCisJJChNQUtFKSAtQyB0L25jdXJzZXM2CisKKwl0b3VjaCAkQAorCitidWlsZC1uY3Vyc2VzdDYtc3RhbXA6IGNvbmZpZy1uY3Vyc2VzdDYtc3RhbXAKKwlkaF90ZXN0ZGlyCisKKwkkKE1BS0UpIC1DIHQvbmN1cnNlc3Q2CisKKwl0b3VjaCAkQAorCitpbnN0YWxsLW5jdXJzZXM2LXN0YW1wOiBidWlsZC1uY3Vyc2VzNi1zdGFtcAorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCWRoX2luc3RhbGxkaXJzICQodmVyYm9zZSkKKwlkaF9wcmVwICAgICAgICAkKHZlcmJvc2UpIC1wbmN1cnNlczYKKworCSQoTUFLRSkgLUMgdC9uY3Vyc2VzNiBpbnN0YWxsLmxpYnMgaW5zdGFsbC5wcm9ncyBERVNURElSPSQoTkNVUlNFUzZfRElSKQorCSQoTUFLRSkgLUMgdC9uY3Vyc2VzNi90ZXN0IG5jdXJzZXMgTE9DQUxfTElCRElSPSQoTVlfRElSKS9saWIKKworCW12IHQvbmN1cnNlczYvdGVzdC9uY3Vyc2VzICQoTkNVUlNFUzZfRElSKSQoTVlfRElSKS9iaW4vbmN1cnNlcyQoTVlfQUJJKQorCisJdG91Y2ggJEAKKworaW5zdGFsbC1uY3Vyc2VzdDYtc3RhbXA6IGJ1aWxkLW5jdXJzZXN0Ni1zdGFtcAorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCWRoX2luc3RhbGxkaXJzICQodmVyYm9zZSkKKwlkaF9wcmVwICAgICAgICAkKHZlcmJvc2UpIC1wbmN1cnNlc3Q2CisKKwkkKE1BS0UpIC1DIHQvbmN1cnNlc3Q2IGluc3RhbGwubGlicyBpbnN0YWxsLnByb2dzIERFU1RESVI9JChOQ1VSU0VTVDZfRElSKQorCSQoTUFLRSkgLUMgdC9uY3Vyc2VzdDYvdGVzdCBuY3Vyc2VzIExPQ0FMX0xJQkRJUj0kKE1ZX0RJUikvbGliCisKKwltdiB0L25jdXJzZXN0Ni90ZXN0L25jdXJzZXMgJChOQ1VSU0VTVDZfRElSKSQoTVlfRElSKS9iaW4vbmN1cnNlc3QkKE1ZX0FCSSkKKworCXRvdWNoICRACisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGhlcmUuCitiaW5hcnktaW5kZXA6IGluc3RhbGwtaW5kZXAKK2lmbmVxICgkKFBBQ0tBR0VTLmluZGVwKSwpCisJcm0gLWYgJChQQUNLQUdFUy5pbmRlcDolPWluc3RhbGwtJS1zdGFtcCkKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9pbnN0YWxsZG9jcyAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCisJZGhfaW5zdGFsbG1hbiAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX2luc3RhbGxleGFtcGxlcyAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpIE5FV1MKKwlkaF9jb21wcmVzcyAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCisJZGhfZml4cGVybXMgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX2luc3RhbGxkZWIgICAgICAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKKwlkaF9nZW5jb250cm9sICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCisJZGhfbWQ1c3VtcyAgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX2J1aWxkZGViICAgICAgICAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKK2VuZGlmCisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWFyY2g6IGluc3RhbGwtYXJjaAoraWZuZXEgKCQoUEFDS0FHRVMuYXJjaCksKQorCXJtIC1mICQoUEFDS0FHRVMuYXJjaDolPWluc3RhbGwtJS1zdGFtcCkKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkgIE5FV1MKKwlkaF9zdHJpcCAgICAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9jb21wcmVzcyAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9maXhwZXJtcyAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9pbnN0YWxsZGViICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9tYWtlc2hsaWJzICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9zaGxpYmRlcHMgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9nZW5jb250cm9sICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9tZDVzdW1zICAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKKwlkaF9idWlsZGRlYiAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuYXJjaDolPS1wJSkKK2VuZGlmCmRpZmYgLS1naXQgYS9wYWNrYWdlL2RlYmlhbi9zb3VyY2UvZm9ybWF0IGIvcGFja2FnZS9kZWJpYW4vc291cmNlL2Zvcm1hdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWFlOWRiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9kZWJpYW4vc291cmNlL2Zvcm1hdApAQCAtMCwwICsxIEBACiszLjAgKG5hdGl2ZSkKZGlmZiAtLWdpdCBhL3BhY2thZ2UvZGViaWFuL3dhdGNoIGIvcGFja2FnZS9kZWJpYW4vd2F0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ1YTk5NgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvZGViaWFuL3dhdGNoCkBAIC0wLDAgKzEsNCBAQAordmVyc2lvbj0zCisKK29wdHM9cGFzc2l2ZSBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL2N1cnJlbnQvbmN1cnNlc1wudGFyLmd6IFwKKyBkZWJpYW4gIHV1cGRhdGUKZGlmZiAtLWdpdCBhL3BhY2thZ2UvbWluZ3ctbmN1cnNlcy5uc2kgYi9wYWNrYWdlL21pbmd3LW5jdXJzZXMubnNpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MzU0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL21pbmd3LW5jdXJzZXMubnNpCkBAIC0wLDAgKzEsMTkwIEBACis7ICRJZDogbWluZ3ctbmN1cnNlcy5uc2ksdiAxLjExNyAyMDE1LzA4LzA2IDIzOjEzOjM5IHRvbSBFeHAgJA0KKw0KKzsgVE9ETyBhZGQgZXhhbXBsZXMNCis7IFRPRE8gYnVtcCBBQkkgdG8gNg0KKw0KKzsgRGVmaW5lIHRoZSBhcHBsaWNhdGlvbiBuYW1lDQorIWRlZmluZSBBUFBOQU1FICJuY3Vyc2VzIg0KKyFkZWZpbmUgRVhFTkFNRSAibmN1cnNlcy5leGUiDQorDQorIWRlZmluZSBWRVJTSU9OX01BSk9SICI2Ig0KKyFkZWZpbmUgVkVSU0lPTl9NSU5PUiAiMCINCishZGVmaW5lIFZFUlNJT05fWVlZWSAgIjIwMTUiDQorIWRlZmluZSBWRVJTSU9OX01NREQgICIwODA4Ig0KKyFkZWZpbmUgVkVSU0lPTl9QQVRDSCAke1ZFUlNJT05fWVlZWX0ke1ZFUlNJT05fTU1ERH0NCisNCishZGVmaW5lIE1ZX0FCSSAgICI1Ig0KKyFkZWZpbmUgTVlfTU9ERUwgInciDQorDQorIWRlZmluZSBTVUJLRVkgIm5jdXJzZXMiDQorDQorIWRlZmluZSBJTlNUQUxMICIke0FQUE5BTUV9IChDb25zb2xlKSINCishZGVmaW5lIFZFUlNJT04gJHtWRVJTSU9OX01BSk9SfS4ke1ZFUlNJT05fTUlOT1J9DQorIWRlZmluZSBWRVJTSU9OX0ZVTEwgICR7VkVSU0lPTn0tJHtWRVJTSU9OX1BBVENIfQ0KKw0KKzsgTWFpbiBJbnN0YWxsIHNldHRpbmdzDQorTmFtZSAiJHtJTlNUQUxMfSINCitJbnN0YWxsRGlyICJjOlxtaW5ndyINCitJbnN0YWxsRGlyUmVnS2V5IEhLTE0gIlNvZnR3YXJlXCR7U1VCS0VZfSIgIiRJTlNURElSXGJpbiINCitPdXRGaWxlICJOU0lTLU91dHB1dFwke0FQUE5BTUV9LSR7VkVSU0lPTl9GVUxMfS1zZXR1cC5leGUiDQorDQorQ1JDQ2hlY2sgb24NCitTZXRDb21wcmVzc29yIC9TT0xJRCBsem1hDQorDQorVklBZGRWZXJzaW9uS2V5IFByb2R1Y3ROYW1lICIke1NVQktFWX0iDQorVklBZGRWZXJzaW9uS2V5IENvbXBhbnlOYW1lICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQiDQorVklBZGRWZXJzaW9uS2V5IEZpbGVEZXNjcmlwdGlvbiAiTkN1cnNlcyBJbnN0YWxsZXIgKE1pbkdXKSINCitWSUFkZFZlcnNpb25LZXkgRmlsZVZlcnNpb24gJHtWRVJTSU9OX0ZVTEx9DQorVklBZGRWZXJzaW9uS2V5IFByb2R1Y3RWZXJzaW9uICR7VkVSU0lPTl9GVUxMfQ0KK1ZJQWRkVmVyc2lvbktleSBDb21tZW50cyAiVGhpcyBpbnN0YWxsZXIgd2FzIGJ1aWx0IHdpdGggTlNJUyBhbmQgY3Jvc3MtY29tcGlsaW5nIHRvIE1pbkdXLiINCitWSUFkZFZlcnNpb25LZXkgSW50ZXJuYWxOYW1lICIke0FQUE5BTUV9LSR7VkVSU0lPTl9GVUxMfS1zZXR1cC5leGUiDQorOyBUaGlzIGlzIGEgZG90dGVkIHNldCBvZiBudW1iZXJzIGxpbWl0ZWQgdG8gMTYtYml0cyBlYWNoDQorVklQcm9kdWN0VmVyc2lvbiAiJHtWRVJTSU9OX01BSk9SfS4ke1ZFUlNJT05fTUlOT1J9LiR7VkVSU0lPTl9ZWVlZfS4ke1ZFUlNJT05fTU1ERH0iDQorDQorOyBNb2Rlcm4gaW50ZXJmYWNlIHNldHRpbmdzDQorIWluY2x1ZGUgIk1VSS5uc2giDQorDQorIWRlZmluZSBNVUlfQUJPUlRXQVJOSU5HDQorOyFkZWZpbmUgTVVJX0ZJTklTSFBBR0VfUlVODQorOyIkSU5TVERJUlxiaW5cJHtFWEVOQU1FfSINCisNCishaW5zZXJ0bWFjcm8gTVVJX1BBR0VfV0VMQ09NRQ0KKyFpbnNlcnRtYWNybyBNVUlfUEFHRV9MSUNFTlNFICIuLlxDT1BZSU5HIg0KKyFpbnNlcnRtYWNybyBNVUlfUEFHRV9DT01QT05FTlRTDQorIWluc2VydG1hY3JvIE1VSV9QQUdFX0RJUkVDVE9SWQ0KKyFpbnNlcnRtYWNybyBNVUlfUEFHRV9JTlNURklMRVMNCishaW5zZXJ0bWFjcm8gTVVJX1BBR0VfRklOSVNIDQorDQorIWluc2VydG1hY3JvIE1VSV9VTlBBR0VfQ09ORklSTQ0KKyFpbnNlcnRtYWNybyBNVUlfVU5QQUdFX0lOU1RGSUxFUw0KKw0KKzsgU2V0IGxhbmd1YWdlcyAoZmlyc3QgaXMgZGVmYXVsdCBsYW5ndWFnZSkNCishaW5zZXJ0bWFjcm8gTVVJX0xBTkdVQUdFICJFbmdsaXNoIg0KKyFpbnNlcnRtYWNybyBNVUlfUkVTRVJWRUZJTEVfTEFOR0RMTA0KKw0KK0luc3RUeXBlICJGdWxsIgkJOyBTZWN0aW9uSW4gMQ0KK0luc3RUeXBlICJUeXBpY2FsIgk7IFNlY3Rpb25JbiAyDQorSW5zdFR5cGUgIk1pbmltYWwiCTsgU2VjdGlvbkluIDMNCisNCitTZWN0aW9uICIke0FQUE5BTUV9IiBTZWN0aW9uMQ0KKw0KKwlTZWN0aW9uSW4gMSAyIDMNCisNCisJOyBTZXQgU2VjdGlvbiBwcm9wZXJ0aWVzDQorCVNldE92ZXJ3cml0ZSBvbg0KKw0KKwk7IFNldCBTZWN0aW9uIEZpbGVzIGFuZCBTaG9ydGN1dHMNCisJU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIg0KKw0KKwlGaWxlICIuXGJpblwqLmRsbCINCisNCisJU2V0T3V0UGF0aCAiJElOU1RESVJcc2hhcmVcJHtBUFBOQU1FfSINCisJRmlsZSAvb25hbWU9UkVBRE1FLnR4dCAiLi5cUkVBRE1FIg0KKwlGaWxlIC9vbmFtZT1SRUFETUUtbWluZ3cudHh0ICIuLlxSRUFETUUubWluZ3ciDQorDQorCUNyZWF0ZURpcmVjdG9yeSAiJFNNUFJPR1JBTVNcJHtJTlNUQUxMfSINCisJQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCR7SU5TVEFMTH1cJHtBUFBOQU1FfS5sbmsiICIkSU5TVERJUlxiaW5cJHtFWEVOQU1FfSINCisJQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCR7SU5TVEFMTH1cVW5pbnN0YWxsLmxuayIgIiRJTlNURElSXHVuaW5zdGFsbC5leGUiDQorDQorU2VjdGlvbkVuZA0KKw0KK1NlY3Rpb24gImRldmVsb3BtZW50IiBTZWN0aW9uMg0KKw0KKwlTZWN0aW9uSW4gMSAyDQorDQorCTsgU2V0IFNlY3Rpb24gcHJvcGVydGllcw0KKwlTZXRPdmVyd3JpdGUgb24NCisNCisJOyBTZXQgU2VjdGlvbiBGaWxlcyBhbmQgU2hvcnRjdXRzDQorCVNldE91dFBhdGggIiRJTlNURElSXHNoYXJlXCR7QVBQTkFNRX0iDQorDQorCVNldE91dFBhdGggIiRJTlNURElSXGluY2x1ZGVcJHtBUFBOQU1FfSR7TVlfTU9ERUx9Ig0KKw0KKwlGaWxlICIuXGluY2x1ZGVcJHtBUFBOQU1FfSR7TVlfTU9ERUx9XCouaCINCisNCisJU2V0T3V0UGF0aCAiJElOU1RESVJcbGliIg0KKw0KKwlGaWxlICIuXGxpYlwqLmEiDQorDQorU2VjdGlvbkVuZA0KKw0KK1NlY3Rpb24gImV4YW1wbGVzIiBTZWN0aW9uMw0KKw0KKwlTZWN0aW9uSW4gMQ0KKw0KKwk7IFNldCBTZWN0aW9uIHByb3BlcnRpZXMNCisJU2V0T3ZlcndyaXRlIG9uDQorDQorCTsgU2V0IFNlY3Rpb24gRmlsZXMgYW5kIFNob3J0Y3V0cw0KKwlTZXRPdXRQYXRoICIkSU5TVERJUlxsaWJcJHtBUFBOQU1FfSINCisNCitTZWN0aW9uRW5kDQorDQorU2VjdGlvbiAtRmluaXNoU2VjdGlvbg0KKw0KKwlXcml0ZVJlZ1N0ciBIS0xNICJTb2Z0d2FyZVwke1NVQktFWX0iICIiICIkSU5TVERJUiINCisJV3JpdGVSZWdTdHIgSEtMTSAiU29mdHdhcmVcJHtTVUJLRVl9IiAiRW52aXJvbm1lbnQiICIiDQorCVdyaXRlUmVnU3RyIEhLTE0gIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwke0lOU1RBTEx9IiAiRGlzcGxheU5hbWUiICIke0FQUE5BTUV9ICR7VkVSU0lPTl9GVUxMfSAoQ29uc29sZSkiDQorCVdyaXRlUmVnU3RyIEhLTE0gIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwke0lOU1RBTEx9IiAiVW5pbnN0YWxsU3RyaW5nIiAiJElOU1RESVJcdW5pbnN0YWxsLmV4ZSINCisJV3JpdGVVbmluc3RhbGxlciAiJElOU1RESVJcdW5pbnN0YWxsLmV4ZSINCisNCitTZWN0aW9uRW5kDQorDQorOyBNb2Rlcm4gaW5zdGFsbCBjb21wb25lbnQgZGVzY3JpcHRpb25zDQorIWluc2VydG1hY3JvIE1VSV9GVU5DVElPTl9ERVNDUklQVElPTl9CRUdJTg0KKwkhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWN0aW9uMX0gIiR7U1VCS0VZfSBydW50aW1lIg0KKwkhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWN0aW9uMn0gIkRldmVsb3BtZW50IGhlYWRlcnMgYW5kIGxpYnJhcmllcyINCisJIWluc2VydG1hY3JvIE1VSV9ERVNDUklQVElPTl9URVhUICR7U2VjdGlvbjN9ICJFeGFtcGxlcyINCishaW5zZXJ0bWFjcm8gTVVJX0ZVTkNUSU9OX0RFU0NSSVBUSU9OX0VORA0KKw0KKztVbmluc3RhbGwgc2VjdGlvbg0KK1NlY3Rpb24gVW5pbnN0YWxsDQorDQorCTtSZW1vdmUgZnJvbSByZWdpc3RyeS4uLg0KKwlEZWxldGVSZWdLZXkgSEtMTSAiU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCR7SU5TVEFMTH0iDQorCURlbGV0ZVJlZ0tleSBIS0xNICJTT0ZUV0FSRVwke1NVQktFWX0iDQorDQorCTsgRGVsZXRlIHNlbGYNCisJRGVsZXRlICIkSU5TVERJUlx1bmluc3RhbGwuZXhlIg0KKw0KKwk7IERlbGV0ZSBTaG9ydGN1dHMNCisJRGVsZXRlICIkU01QUk9HUkFNU1wke0lOU1RBTEx9XCR7QVBQTkFNRX0ubG5rIg0KKwlEZWxldGUgIiRTTVBST0dSQU1TXCR7SU5TVEFMTH1cVW5pbnN0YWxsLmxuayINCisNCisJOyBDbGVhbiB1cCBhcHBsaWNhdGlvbg0KKwlEZWxldGUgIiRJTlNURElSXGJpblxsaWJmb3JtJHtNWV9NT0RFTH0ke01ZX0FCSX0uZGxsIg0KKwlEZWxldGUgIiRJTlNURElSXGJpblxsaWJtZW51JHtNWV9NT0RFTH0ke01ZX0FCSX0uZGxsIg0KKwlEZWxldGUgIiRJTlNURElSXGJpblxsaWJuY3Vyc2VzKyske01ZX01PREVMfSR7TVlfQUJJfS5kbGwiDQorCURlbGV0ZSAiJElOU1RESVJcYmluXGxpYm5jdXJzZXMke01ZX01PREVMfSR7TVlfQUJJfS5kbGwiDQorCURlbGV0ZSAiJElOU1RESVJcYmluXGxpYnBhbmVsJHtNWV9NT0RFTH0ke01ZX0FCSX0uZGxsIg0KKw0KKwlEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcJHtBUFBOQU1FfSR7TVlfTU9ERUx9XCouaCINCisNCisJRGVsZXRlICIkSU5TVERJUlxsaWJcbGliZm9ybSR7TVlfTU9ERUx9LmEiDQorCURlbGV0ZSAiJElOU1RESVJcbGliXGxpYm1lbnUke01ZX01PREVMfS5hIg0KKwlEZWxldGUgIiRJTlNURElSXGxpYlxsaWJuY3Vyc2VzKyske01ZX01PREVMfS5hIg0KKwlEZWxldGUgIiRJTlNURElSXGxpYlxsaWJuY3Vyc2VzJHtNWV9NT0RFTH0uYSINCisJRGVsZXRlICIkSU5TVERJUlxsaWJcbGlicGFuZWwke01ZX01PREVMfS5hIg0KKw0KKwlEZWxldGUgIiRJTlNURElSXGxpYlxsaWJmb3JtJHtNWV9NT0RFTH0uZGxsLmEiDQorCURlbGV0ZSAiJElOU1RESVJcbGliXGxpYm1lbnUke01ZX01PREVMfS5kbGwuYSINCisJRGVsZXRlICIkSU5TVERJUlxsaWJcbGlibmN1cnNlcysrJHtNWV9NT0RFTH0uZGxsLmEiDQorCURlbGV0ZSAiJElOU1RESVJcbGliXGxpYm5jdXJzZXMke01ZX01PREVMfS5kbGwuYSINCisJRGVsZXRlICIkSU5TVERJUlxsaWJcbGlicGFuZWwke01ZX01PREVMfS5kbGwuYSINCisNCisJRGVsZXRlICIkSU5TVERJUlxsaWJcJHtBUFBOQU1FfVwqLmV4ZSINCisNCisJRGVsZXRlICIkSU5TVERJUlxzaGFyZVwke0FQUE5BTUV9XCouKiINCisNCisJOyBSZW1vdmUgcmVtYWluaW5nIGRpcmVjdG9yaWVzDQorCVJNRGlyICIkU01QUk9HUkFNU1wke0lOU1RBTEx9Ig0KKwlSTURpciAiJElOU1RESVJcc2hhcmVcJHtBUFBOQU1FfSINCisJUk1EaXIgIiRJTlNURElSXHNoYXJlIg0KKwlSTURpciAiJElOU1RESVJcbGliXCR7QVBQTkFNRX0iDQorCVJNRGlyICIkSU5TVERJUlxsaWIiDQorCVJNRGlyICIkSU5TVERJUlxpbmNsdWRlXCR7QVBQTkFNRX0ke01ZX01PREVMfSINCisJUk1EaXIgIiRJTlNURElSXGluY2x1ZGUiDQorCVJNRGlyICIkSU5TVERJUlxiaW4iDQorCVJNRGlyICIkSU5TVERJUlwiDQorDQorU2VjdGlvbkVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BhY2thZ2UvbWluZ3ctbmN1cnNlcy5zcGVjIGIvcGFja2FnZS9taW5ndy1uY3Vyc2VzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzZDY4NQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvbWluZ3ctbmN1cnNlcy5zcGVjCkBAIC0wLDAgKzEsMTQzIEBACislP21pbmd3X3BhY2thZ2VfaGVhZGVyCisKK1N1bW1hcnk6IHNoYXJlZCBsaWJyYXJpZXMgZm9yIHRlcm1pbmFsIGhhbmRsaW5nCitOYW1lOiBtaW5ndzMyLW5jdXJzZXM2CitWZXJzaW9uOiA2LjAKK1JlbGVhc2U6IDIwMTUwODA4CitMaWNlbnNlOiBYMTEKK0dyb3VwOiBEZXZlbG9wbWVudC9MaWJyYXJpZXMKK1NvdXJjZTogbmN1cnNlcy0le3ZlcnNpb259LSV7cmVsZWFzZX0udGd6CisjIFVSTDogaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCisKK0J1aWxkUmVxdWlyZXM6ICBtaW5ndzMyLWZpbGVzeXN0ZW0gPj0gOTUKK0J1aWxkUmVxdWlyZXM6ICBtaW5ndzMyLWdjYworQnVpbGRSZXF1aXJlczogIG1pbmd3MzItYmludXRpbHMKKworQnVpbGRSZXF1aXJlczogIG1pbmd3NjQtZmlsZXN5c3RlbSA+PSA5NQorQnVpbGRSZXF1aXJlczogIG1pbmd3NjQtZ2NjCitCdWlsZFJlcXVpcmVzOiAgbWluZ3c2NC1iaW51dGlscworCislZGVmaW5lIENDX05PUk1BTCAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1Xc2hhZG93IC1XY29udmVyc2lvbgorJWRlZmluZSBDQ19TVFJJQ1QgJXtDQ19OT1JNQUx9IC1XIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LWFsaWduIC1XY2FzdC1xdWFsIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVduZXN0ZWQtZXh0ZXJucyAtV3BvaW50ZXItYXJpdGggLVd3cml0ZS1zdHJpbmdzIC1hbnNpIC1wZWRhbnRpYworCislZGVzY3JpcHRpb24gLW4gbWluZ3czMi1uY3Vyc2VzNgorQ3Jvc3MtY29tcGlsaW5nIHN1cHBvcnQgZm9yIG5jdXJzZXMgdG8gbWluZ3czMi4KKworVGhlIG5jdXJzZXMgbGlicmFyeSByb3V0aW5lcyBhcmUgYSB0ZXJtaW5hbC1pbmRlcGVuZGVudCBtZXRob2Qgb2YKK3VwZGF0aW5nIGNoYXJhY3RlciBzY3JlZW5zIHdpdGggcmVhc29uYWJsZSBvcHRpbWl6YXRpb24uCisKK1RoaXMgcGFja2FnZSBpcyB1c2VkIGZvciB0ZXN0aW5nIEFCSSA2IHdpdGggY3Jvc3MtY29tcGlsZXMgdG8gTWluR1cuCisKKyVwYWNrYWdlIC1uIG1pbmd3NjQtbmN1cnNlczYKK1N1bW1hcnk6ICAgICAgICBDdXJzZXMgbGlicmFyeSBmb3IgTWluR1c2NAorCislZGVzY3JpcHRpb24gLW4gbWluZ3c2NC1uY3Vyc2VzNgorQ3Jvc3MtY29tcGlsaW5nIHN1cHBvcnQgZm9yIG5jdXJzZXMgdG8gbWluZ3c2NC4KKworVGhlIG5jdXJzZXMgbGlicmFyeSByb3V0aW5lcyBhcmUgYSB0ZXJtaW5hbC1pbmRlcGVuZGVudCBtZXRob2Qgb2YKK3VwZGF0aW5nIGNoYXJhY3RlciBzY3JlZW5zIHdpdGggcmVhc29uYWJsZSBvcHRpbWl6YXRpb24uCisKK1RoaXMgcGFja2FnZSBpcyB1c2VkIGZvciB0ZXN0aW5nIEFCSSA2IHdpdGggY3Jvc3MtY29tcGlsZXMgdG8gTWluR1cuCisKKyVwcmVwCisKKyVkZWZpbmUgQ0ZHX09QVFMgXFxcCisJLS1kaXNhYmxlLWVjaG8gXFxcCisJLS1kaXNhYmxlLWRiLWluc3RhbGwgXFxcCisJLS1kaXNhYmxlLWdldGNhcCBcXFwKKwktLWRpc2FibGUtaGFyZC10YWJzIFxcXAorCS0tZGlzYWJsZS1sZWFrcyBcXFwKKwktLWRpc2FibGUtbWFjcm9zIFxcXAorCS0tZGlzYWJsZS1vdmVyd3JpdGUgXFxcCisJLS1kaXNhYmxlLXRlcm1jYXAgXFxcCisJLS1lbmFibGUtY29uc3QgXFxcCisJLS1lbmFibGUtZXh0LWNvbG9ycyBcXFwKKwktLWVuYWJsZS1leHQtbW91c2UgXFxcCisJLS1lbmFibGUtZXh0LXB1dHdpbiBcXFwKKwktLWVuYWJsZS1pbnRlcm9wIFxcXAorCS0tZW5hYmxlLXNwLWZ1bmNzIFxcXAorCS0tZW5hYmxlLXRlcm0tZHJpdmVyIFxcXAorCS0tZW5hYmxlLXdhcm5pbmdzIFxcXAorCS0tZW5hYmxlLXdpZGVjIFxcXAorCS0tdmVyYm9zZSBcXFwKKwktLXdpdGgtY3h4LXNoYXJlZCBcXFwKKwktLXdpdGgtZGV2ZWxvcCBcXFwKKwktLXdpdGgtZmFsbGJhY2tzPXVua25vd24scnh2dCBcXFwKKwktLXdpdGgtc2hhcmVkIFxcXAorCS0td2l0aC10cGFybS1hcmc9aW50cHRyX3QgXFxcCisJLS13aXRoLXRyYWNlIFxcXAorCS0td2l0aC14dGVybS1rYnM9REVMIFxcXAorCS0td2l0aG91dC1hZGEgXFxcCisJLS13aXRob3V0LWRlYnVnIFxcXAorCS0td2l0aC1pbnN0YWxsLXByZWZpeD0kUlBNX0JVSUxEX1JPT1QgXFxcCisJLS13aXRob3V0LW1hbnBhZ2VzIFxcXAorCS0td2l0aG91dC1wcm9ncyBcXFwKKwktLXdpdGhvdXQtdGVzdHMKKworJWRlZmluZSBkZWJ1Z19wYWNrYWdlICV7bmlsfQorJXNldHVwIC1xIC1uIG5jdXJzZXMtJXt2ZXJzaW9ufS0le3JlbGVhc2V9CisKKyVidWlsZAorbWtkaXIgQlVJTEQtVzMyCitwdXNoZCBCVUlMRC1XMzIKK0NGTEFHUz0iJXtDQ19OT1JNQUx9IiBcCitDQz0le21pbmd3MzJfY2N9IFwKKyVtaW5ndzMyX2NvbmZpZ3VyZSAle0NGR19PUFRTfQorbWFrZQorcG9wZAorCitta2RpciBCVUlMRC1XNjQKK3B1c2hkIEJVSUxELVc2NAorQ0ZMQUdTPSIle0NDX05PUk1BTH0iIFwKK0NDPSV7bWluZ3c2NF9jY30gXAorJW1pbmd3NjRfY29uZmlndXJlICV7Q0ZHX09QVFN9CittYWtlCitwb3BkCisKKyVpbnN0YWxsCitybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKK21rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0KKworcHVzaGQgQlVJTEQtVzMyCisle21pbmd3MzJfbWFrZX0gaW5zdGFsbC5saWJzCitmb3IgbmFtZSBpbiAkUlBNX0JVSUxEX1JPT1Qle21pbmd3MzJfYmluZGlyfS8qLWNvbmZpZzsgXAorCWRvIFwKKwkJYmFzZT1gYmFzZW5hbWUgJG5hbWVgOyBcCisJCWxuIC12ICRuYW1lICRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0vJXttaW5ndzMyX3RhcmdldH0tJGJhc2U7IFwKKwlkb25lCitwb3BkCisKK3B1c2hkIEJVSUxELVc2NAorJXttaW5ndzY0X21ha2V9IGluc3RhbGwubGlicworZm9yIG5hbWUgaW4gJFJQTV9CVUlMRF9ST09UJXttaW5ndzY0X2JpbmRpcn0vKi1jb25maWc7IFwKKwlkbyBcCisJCWJhc2U9YGJhc2VuYW1lICRuYW1lYDsgXAorCQlsbiAtdiAkbmFtZSAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9LyV7bWluZ3c2NF90YXJnZXR9LSRiYXNlOyBcCisJZG9uZQorcG9wZAorCislY2xlYW4KK3JtIC1yZiAkUlBNX0JVSUxEX1JPT1QKKworJWZpbGVzIC1uIG1pbmd3MzItbmN1cnNlczYKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCisle19iaW5kaXJ9LyV7bWluZ3czMl90YXJnZXR9LSoKKyV7bWluZ3czMl9iaW5kaXJ9LyoKKyV7bWluZ3czMl9pbmNsdWRlZGlyfS8qCisle21pbmd3MzJfbGliZGlyfS8qCisKKyVmaWxlcyAtbiBtaW5ndzY0LW5jdXJzZXM2CislZGVmYXR0cigtLHJvb3Qscm9vdCwtKQorJXtfYmluZGlyfS8le21pbmd3NjRfdGFyZ2V0fS0qCisle21pbmd3NjRfYmluZGlyfS8qCisle21pbmd3NjRfaW5jbHVkZWRpcn0vKgorJXttaW5ndzY0X2xpYmRpcn0vKgorCislY2hhbmdlbG9nCisKKyogU2F0IFNlcCAyMCAyMDE0IFRob21hcyBFLiBEaWNrZXkKKy0gYWRqdXN0IGluc3RhbGwtcnVsZXMgZm9yIG5jdXJzZXMqLWNvbmZpZworCisqIFNhdCBBdWcgMDMgMjAxMyBUaG9tYXMgRS4gRGlja2V5CistIGluaXRpYWwgdmVyc2lvbiwgdXNpbmcgbWluZ3ctcGRjdXJzZXMgcGFja2FnZSBhcyBhIGd1aWRlLgpkaWZmIC0tZ2l0IGEvcGFja2FnZS9uY3Vyc2VzLm1hcCBiL3BhY2thZ2UvbmN1cnNlcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU5NDg0ZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvbmN1cnNlcy5tYXAKQEAgLTAsMCArMSwxMTQ5IEBACisjICRJZDogbmN1cnNlcy5tYXAsdiAxLjM0IDIwMTUvMDYvMjcgMjI6Mjg6NTAgdG9tIEV4cCAkCisjIHNjcmlwdCBmb3Igc2hhcmVkIGxpYnJhcnkgc3ltYm9sLXZlcnNpb25pbmcgdXNpbmcgbGQKKyMKKyMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbmN1LW1hcHN5bXMKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuMC4xOTk5MTAyMykKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS4xLjIwMDAwNzA4KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuMi4yMDAwMTAyMSkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjMuMjAwMjEwMTkpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS40LjIwMDQwMjA4KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNS4yMDA1MTAxMCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjYuMjAwNjEyMTcpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjcuMjAwODExMDIpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjguMjAxMTAyMjYpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTEwNDA0KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOS4yMDE1MDUzMCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjIENvbmZpZ3VyZSBvcHRpb25zICg2LjAuY3VycmVudCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisKK05DVVJTRVNfNS4wLjE5OTkxMDIzIHsKKwlnbG9iYWw6CisJCUNPTE9SUzsKKwkJQ09MT1JfUEFJUjsKKwkJQ09MT1JfUEFJUlM7CisJCUVTQ0RFTEFZOworCQlQQUlSX05VTUJFUjsKKwkJVFlQRV9BTE5VTTsKKwkJVFlQRV9BTFBIQTsKKwkJVFlQRV9FTlVNOworCQlUWVBFX0lOVEVHRVI7CisJCVRZUEVfSVBWNDsKKwkJVFlQRV9OVU1FUklDOworCQlUWVBFX1JFR0VYUDsKKwkJX25jX0RlZmF1bHRfRmllbGQ7CSMgZGVwcmVjYXRlZCBpbiBBQkk2CisJCV9uY19EZWZhdWx0X0Zvcm07CSMgZGVwcmVjYXRlZCBpbiBBQkk2CisJCV9uY19mcmVlX2FuZF9leGl0OworCQlfbmNfaGFzX21vdXNlOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfcGFuZWxob29rOworCQlfbmNfcmlwb2ZmbGluZTsKKwkJYWRkY2g7CisJCWFkZGNobnN0cjsKKwkJYWRkY2hzdHI7CisJCWFkZG5zdHI7CisJCWFkZHN0cjsKKwkJYXR0cl9nZXQ7CisJCWF0dHJfb2ZmOworCQlhdHRyX29uOworCQlhdHRyX3NldDsKKwkJYXR0cm9mZjsKKwkJYXR0cm9uOworCQlhdHRyc2V0OworCQliZWVwOworCQlia2dkOworCQlia2dkc2V0OworCQlib3JkZXI7CisJCWJvdHRvbV9wYW5lbDsKKwkJYm94OworCQljYW5fY2hhbmdlX2NvbG9yOworCQljaGdhdDsKKwkJY2xlYXI7CisJCWNsZWFyb2s7CisJCWNscnRvYm90OworCQljbHJ0b2VvbDsKKwkJY29sb3JfY29udGVudDsKKwkJY29sb3Jfc2V0OworCQljb3B5d2luOworCQljdXJyZW50X2ZpZWxkOworCQljdXJyZW50X2l0ZW07CisJCWRhdGFfYWhlYWQ7CisJCWRhdGFfYmVoaW5kOworCQlkZWxfcGFuZWw7CisJCWRlbGNoOworCQlkZWxldGVsbjsKKwkJZGVsc2NyZWVuOworCQlkZWx3aW47CisJCWRlcndpbjsKKwkJZG91cGRhdGU7CisJCWR1cF9maWVsZDsKKwkJZHVwd2luOworCQlkeW5hbWljX2ZpZWxkX2luZm87CisJCWVjaG87CisJCWVjaG9jaGFyOworCQllbmR3aW47CisJCWZpZWxkX2FyZzsKKwkJZmllbGRfYmFjazsKKwkJZmllbGRfYnVmZmVyOworCQlmaWVsZF9jb3VudDsKKwkJZmllbGRfZm9yZTsKKwkJZmllbGRfaW5kZXg7CisJCWZpZWxkX2luZm87CisJCWZpZWxkX2luaXQ7CisJCWZpZWxkX2p1c3Q7CisJCWZpZWxkX29wdHM7CisJCWZpZWxkX29wdHNfb2ZmOworCQlmaWVsZF9vcHRzX29uOworCQlmaWVsZF9wYWQ7CisJCWZpZWxkX3N0YXR1czsKKwkJZmllbGRfdGVybTsKKwkJZmllbGRfdHlwZTsKKwkJZmllbGRfdXNlcnB0cjsKKwkJZmlsdGVyOworCQlmbGFzaDsKKwkJZm9ybV9kcml2ZXI7CisJCWZvcm1fZmllbGRzOworCQlmb3JtX2luaXQ7CisJCWZvcm1fb3B0czsKKwkJZm9ybV9vcHRzX29mZjsKKwkJZm9ybV9vcHRzX29uOworCQlmb3JtX3BhZ2U7CisJCWZvcm1fcmVxdWVzdF9ieV9uYW1lOworCQlmb3JtX3JlcXVlc3RfbmFtZTsKKwkJZm9ybV9zdWI7CisJCWZvcm1fdGVybTsKKwkJZm9ybV91c2VycHRyOworCQlmb3JtX3dpbjsKKwkJZnJlZV9maWVsZDsKKwkJZnJlZV9maWVsZHR5cGU7CisJCWZyZWVfZm9ybTsKKwkJZnJlZV9pdGVtOworCQlmcmVlX21lbnU7CisJCWdldGJrZ2Q7CisJCWdldGNoOworCQlnZXRtb3VzZTsKKwkJZ2V0bnN0cjsKKwkJZ2V0c3RyOworCQlnZXR3aW47CisJCWhhc19jb2xvcnM7CisJCWhpZGVfcGFuZWw7CisJCWhsaW5lOworCQlpbW1lZG9rOworCQlpbmNoOworCQlpbmNobnN0cjsKKwkJaW5jaHN0cjsKKwkJaW5pdF9jb2xvcjsKKwkJaW5pdF9wYWlyOworCQlpbml0c2NyOworCQlpbm5zdHI7CisJCWluc2NoOworCQlpbnNkZWxsbjsKKwkJaW5zZXJ0bG47CisJCWluc25zdHI7CisJCWluc3N0cjsKKwkJaW5zdHI7CisJCWlzX2xpbmV0b3VjaGVkOworCQlpc193aW50b3VjaGVkOworCQlpc2VuZHdpbjsKKwkJaXRlbV9jb3VudDsKKwkJaXRlbV9kZXNjcmlwdGlvbjsKKwkJaXRlbV9pbmRleDsKKwkJaXRlbV9pbml0OworCQlpdGVtX25hbWU7CisJCWl0ZW1fb3B0czsKKwkJaXRlbV9vcHRzX29mZjsKKwkJaXRlbV9vcHRzX29uOworCQlpdGVtX3Rlcm07CisJCWl0ZW1fdXNlcnB0cjsKKwkJaXRlbV92YWx1ZTsKKwkJaXRlbV92aXNpYmxlOworCQlsZWF2ZW9rOworCQlsaW5rX2ZpZWxkOworCQlsaW5rX2ZpZWxkdHlwZTsKKwkJbWNwcmludDsKKwkJbWVudV9iYWNrOworCQltZW51X2RyaXZlcjsKKwkJbWVudV9mb3JlOworCQltZW51X2Zvcm1hdDsKKwkJbWVudV9ncmV5OworCQltZW51X2luaXQ7CisJCW1lbnVfaXRlbXM7CisJCW1lbnVfbWFyazsKKwkJbWVudV9vcHRzOworCQltZW51X29wdHNfb2ZmOworCQltZW51X29wdHNfb247CisJCW1lbnVfcGFkOworCQltZW51X3BhdHRlcm47CisJCW1lbnVfcmVxdWVzdF9ieV9uYW1lOworCQltZW51X3JlcXVlc3RfbmFtZTsKKwkJbWVudV9zcGFjaW5nOworCQltZW51X3N1YjsKKwkJbWVudV90ZXJtOworCQltZW51X3VzZXJwdHI7CisJCW1lbnVfd2luOworCQltb3VzZV90cmFmbzsKKwkJbW91c2VpbnRlcnZhbDsKKwkJbW91c2VtYXNrOworCQltb3ZlOworCQltb3ZlX2ZpZWxkOworCQltb3ZlX3BhbmVsOworCQltdmFkZGNoOworCQltdmFkZGNobnN0cjsKKwkJbXZhZGRjaHN0cjsKKwkJbXZhZGRuc3RyOworCQltdmFkZHN0cjsKKwkJbXZjaGdhdDsKKwkJbXZjdXI7CisJCW12ZGVsY2g7CisJCW12ZGVyd2luOworCQltdmdldGNoOworCQltdmdldG5zdHI7CisJCW12Z2V0c3RyOworCQltdmhsaW5lOworCQltdmluY2g7CisJCW12aW5jaG5zdHI7CisJCW12aW5jaHN0cjsKKwkJbXZpbm5zdHI7CisJCW12aW5zY2g7CisJCW12aW5zbnN0cjsKKwkJbXZpbnNzdHI7CisJCW12aW5zdHI7CisJCW12cHJpbnR3OworCQltdnNjYW53OworCQltdnZsaW5lOworCQltdndhZGRjaDsKKwkJbXZ3YWRkY2huc3RyOworCQltdndhZGRjaHN0cjsKKwkJbXZ3YWRkbnN0cjsKKwkJbXZ3YWRkc3RyOworCQltdndjaGdhdDsKKwkJbXZ3ZGVsY2g7CisJCW12d2dldGNoOworCQltdndnZXRuc3RyOworCQltdndnZXRzdHI7CisJCW12d2hsaW5lOworCQltdndpbjsKKwkJbXZ3aW5jaDsKKwkJbXZ3aW5jaG5zdHI7CisJCW12d2luY2hzdHI7CisJCW12d2lubnN0cjsKKwkJbXZ3aW5zY2g7CisJCW12d2luc25zdHI7CisJCW12d2luc3N0cjsKKwkJbXZ3aW5zdHI7CisJCW12d3ByaW50dzsKKwkJbXZ3c2Nhbnc7CisJCW12d3ZsaW5lOworCQluZXdfZmllbGQ7CisJCW5ld19maWVsZHR5cGU7CisJCW5ld19mb3JtOworCQluZXdfaXRlbTsKKwkJbmV3X21lbnU7CisJCW5ld19wYWdlOworCQluZXdfcGFuZWw7CisJCW5ld3BhZDsKKwkJbmV3dGVybTsKKwkJbmV3d2luOworCQlubDsKKwkJbm9lY2hvOworCQlub25sOworCQlvdmVybGF5OworCQlvdmVyd3JpdGU7CisJCXBhaXJfY29udGVudDsKKwkJcGFuZWxfYWJvdmU7CisJCXBhbmVsX2JlbG93OworCQlwYW5lbF9oaWRkZW47CisJCXBhbmVsX3VzZXJwdHI7CisJCXBhbmVsX3dpbmRvdzsKKwkJcGVjaG9jaGFyOworCQlwbm91dHJlZnJlc2g7CisJCXBvc19mb3JtX2N1cnNvcjsKKwkJcG9zX21lbnVfY3Vyc29yOworCQlwb3N0X2Zvcm07CisJCXBvc3RfbWVudTsKKwkJcHJlZnJlc2g7CisJCXByaW50dzsKKwkJcHV0d2luOworCQlyZWRyYXd3aW47CisJCXJlZnJlc2g7CisJCXJlcGxhY2VfcGFuZWw7CisJCXJlc2l6ZXRlcm07CisJCXJlc3RhcnR0ZXJtOworCQlyaXBvZmZsaW5lOworCQlzY2FsZV9mb3JtOworCQlzY2FsZV9tZW51OworCQlzY2FudzsKKwkJc2NyX2R1bXA7CisJCXNjcl9pbml0OworCQlzY3JfcmVzdG9yZTsKKwkJc2NyX3NldDsKKwkJc2NybDsKKwkJc2Nyb2xsOworCQlzY3JvbGxvazsKKwkJc2V0X2N1cnJlbnRfZmllbGQ7CisJCXNldF9jdXJyZW50X2l0ZW07CisJCXNldF9maWVsZF9iYWNrOworCQlzZXRfZmllbGRfYnVmZmVyOworCQlzZXRfZmllbGRfZm9yZTsKKwkJc2V0X2ZpZWxkX2luaXQ7CisJCXNldF9maWVsZF9qdXN0OworCQlzZXRfZmllbGRfb3B0czsKKwkJc2V0X2ZpZWxkX3BhZDsKKwkJc2V0X2ZpZWxkX3N0YXR1czsKKwkJc2V0X2ZpZWxkX3Rlcm07CisJCXNldF9maWVsZF90eXBlOworCQlzZXRfZmllbGRfdXNlcnB0cjsKKwkJc2V0X2ZpZWxkdHlwZV9hcmc7CisJCXNldF9maWVsZHR5cGVfY2hvaWNlOworCQlzZXRfZm9ybV9maWVsZHM7CisJCXNldF9mb3JtX2luaXQ7CisJCXNldF9mb3JtX29wdHM7CisJCXNldF9mb3JtX3BhZ2U7CisJCXNldF9mb3JtX3N1YjsKKwkJc2V0X2Zvcm1fdGVybTsKKwkJc2V0X2Zvcm1fdXNlcnB0cjsKKwkJc2V0X2Zvcm1fd2luOworCQlzZXRfaXRlbV9pbml0OworCQlzZXRfaXRlbV9vcHRzOworCQlzZXRfaXRlbV90ZXJtOworCQlzZXRfaXRlbV91c2VycHRyOworCQlzZXRfaXRlbV92YWx1ZTsKKwkJc2V0X21heF9maWVsZDsKKwkJc2V0X21lbnVfYmFjazsKKwkJc2V0X21lbnVfZm9yZTsKKwkJc2V0X21lbnVfZm9ybWF0OworCQlzZXRfbWVudV9ncmV5OworCQlzZXRfbWVudV9pbml0OworCQlzZXRfbWVudV9pdGVtczsKKwkJc2V0X21lbnVfbWFyazsKKwkJc2V0X21lbnVfb3B0czsKKwkJc2V0X21lbnVfcGFkOworCQlzZXRfbWVudV9wYXR0ZXJuOworCQlzZXRfbWVudV9zcGFjaW5nOworCQlzZXRfbWVudV9zdWI7CisJCXNldF9tZW51X3Rlcm07CisJCXNldF9tZW51X3VzZXJwdHI7CisJCXNldF9tZW51X3dpbjsKKwkJc2V0X25ld19wYWdlOworCQlzZXRfcGFuZWxfdXNlcnB0cjsKKwkJc2V0X3Rlcm07CisJCXNldF90b3Bfcm93OworCQlzZXRzY3JyZWc7CisJCXNob3dfcGFuZWw7CisJCXNsa19hdHRyOworCQlzbGtfYXR0cl9vZmY7CisJCXNsa19hdHRyX29uOworCQlzbGtfYXR0cl9zZXQ7CisJCXNsa19hdHRyb2ZmOworCQlzbGtfYXR0cm9uOworCQlzbGtfYXR0cnNldDsKKwkJc2xrX2NsZWFyOworCQlzbGtfY29sb3I7CisJCXNsa19pbml0OworCQlzbGtfbGFiZWw7CisJCXNsa19ub3V0cmVmcmVzaDsKKwkJc2xrX3JlZnJlc2g7CisJCXNsa19yZXN0b3JlOworCQlzbGtfc2V0OworCQlzbGtfdG91Y2g7CisJCXN0YW5kZW5kOworCQlzdGFuZG91dDsKKwkJc3RhcnRfY29sb3I7CisJCXN1YnBhZDsKKwkJc3Vid2luOworCQlzeW5jb2s7CisJCXRlcm1hdHRyczsKKwkJdGltZW91dDsKKwkJdG9wX3BhbmVsOworCQl0b3Bfcm93OworCQl1bmdldGNoOworCQl1bmdldG1vdXNlOworCQl1bnBvc3RfZm9ybTsKKwkJdW5wb3N0X21lbnU7CisJCXVudG91Y2h3aW47CisJCXVwZGF0ZV9wYW5lbHM7CisJCXVzZV9kZWZhdWx0X2NvbG9yczsKKwkJdmlkX2F0dHI7CisJCXZpZGF0dHI7CisJCXZpZHB1dHM7CisJCXZsaW5lOworCQl2d19wcmludHc7CisJCXZ3X3NjYW53OworCQl2d3ByaW50dzsKKwkJdndzY2FudzsKKwkJd2FkZGNoOworCQl3YWRkY2huc3RyOworCQl3YWRkY2hzdHI7CisJCXdhZGRuc3RyOworCQl3YWRkc3RyOworCQl3YXR0cl9nZXQ7CisJCXdhdHRyX29mZjsKKwkJd2F0dHJfb247CisJCXdhdHRyX3NldDsKKwkJd2F0dHJvZmY7CisJCXdhdHRyb247CisJCXdhdHRyc2V0OworCQl3YmtnZDsKKwkJd2JrZ2RzZXQ7CisJCXdib3JkZXI7CisJCXdjaGdhdDsKKwkJd2NsZWFyOworCQl3Y2xydG9ib3Q7CisJCXdjbHJ0b2VvbDsKKwkJd2NvbG9yX3NldDsKKwkJd2N1cnN5bmN1cDsKKwkJd2RlbGNoOworCQl3ZGVsZXRlbG47CisJCXdlY2hvY2hhcjsKKwkJd2VuY2xvc2U7CisJCXdlcmFzZTsKKwkJd2dldGNoOworCQl3Z2V0bnN0cjsKKwkJd2dldHN0cjsKKwkJd2hsaW5lOworCQl3aW5jaDsKKwkJd2luY2huc3RyOworCQl3aW5jaHN0cjsKKwkJd2lubnN0cjsKKwkJd2luc2NoOworCQl3aW5zZGVsbG47CisJCXdpbnNlcnRsbjsKKwkJd2luc25zdHI7CisJCXdpbnNzdHI7CisJCXdpbnN0cjsKKwkJd21vdXNlX3RyYWZvOworCQl3bW92ZTsKKwkJd25vdXRyZWZyZXNoOworCQl3cHJpbnR3OworCQl3cmVkcmF3bG47CisJCXdyZWZyZXNoOworCQl3cmVzaXplOworCQl3c2Nhbnc7CisJCXdzY3JsOworCQl3c2V0c2NycmVnOworCQl3c3RhbmRlbmQ7CisJCXdzdGFuZG91dDsKKwkJd3N5bmNkb3duOworCQl3c3luY3VwOworCQl3dG91Y2hsbjsKKwkJd3ZsaW5lOworCWxvY2FsOgorCQlfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aDsKKwkJX25jX0Nvbm5lY3RfSXRlbXM7CisJCV9uY19Db3B5X0FyZ3VtZW50OworCQlfbmNfQ29weV9UeXBlOworCQlfbmNfRGVmYXVsdF9GaWVsZFR5cGU7CisJCV9uY19EZWZhdWx0X0l0ZW07CisJCV9uY19EZWZhdWx0X01lbnU7CisJCV9uY19EaXNjb25uZWN0X0l0ZW1zOworCQlfbmNfRHJhd19NZW51OworCQlfbmNfRmlyc3RfQWN0aXZlX0ZpZWxkOworCQlfbmNfRnJlZV9Bcmd1bWVudDsKKwkJX25jX0ZyZWVfVHlwZTsKKwkJX25jX0ludGVybmFsX1ZhbGlkYXRpb247CisJCV9uY19MaW5rX0l0ZW1zOworCQlfbmNfTWFrZV9Bcmd1bWVudDsKKwkJX25jX01hdGNoX05leHRfQ2hhcmFjdGVyX0luX0l0ZW1fTmFtZTsKKwkJX25jX05ld19Ub3BSb3dfYW5kX0N1cnJlbnRJdGVtOworCQlfbmNfUG9zaXRpb25fRm9ybV9DdXJzb3I7CisJCV9uY19Qb3N0X0l0ZW07CisJCV9uY19SZWZyZXNoX0N1cnJlbnRfRmllbGQ7CisJCV9uY19TZXRfQ3VycmVudF9GaWVsZDsKKwkJX25jX1NldF9Gb3JtX1BhZ2U7CisJCV9uY19TaG93X01lbnU7CisJCV9uY19TeW5jaHJvbml6ZV9BdHRyaWJ1dGVzOworCQlfbmNfU3luY2hyb25pemVfT3B0aW9uczsKKwkJX25jX2JhY2tncm91bmQ7CisJCV9uY19kb19jb2xvcjsKKwkJX25jX2V4cGFuZGVkOworCQlfbmNfZnJlZXdpbjsKKwkJX25jX2hhc2hfbWFwOworCQlfbmNfbGliX3RyYWNlYXRyOworCQlfbmNfbGliX3RyYWNlZG1wOworCQlfbmNfbGliX3RyYWNlbW91c2U7CisJCV9uY19tYWtlX29sZGhhc2g7CisJCV9uY19tYWtlbmV3OworCQlfbmNfbWVtbW92ZTsKKwkJX25jX21lbnVfY3Vyc29yX3BvczsKKwkJX25jX21zZWNfY29zdDsKKwkJX25jX212Y3VyX2luaXQ7CisJCV9uY19tdmN1cl9yZXN1bWU7CisJCV9uY19tdmN1cl93cmFwOworCQlfbmNfb2xkbnVtczsKKwkJX25jX291dHN0cjsKKwkJX25jX3ByaW50Zl9zdHJpbmc7CisJCV9uY19yZW5kZXI7CisJCV9uY19zY3JlZW5faW5pdDsKKwkJX25jX3NjcmVlbl9yZXN1bWU7CisJCV9uY19zY3JlZW5fd3JhcDsKKwkJX25jX3Njcm9sbF9vbGRoYXNoOworCQlfbmNfc2Nyb2xsX29wdGltaXplOworCQlfbmNfc2Nyb2xsX3dpbmRvdzsKKwkJX25jX3Njcm9sbG47CisJCV9uY19zZXR1cHNjcmVlbjsKKwkJX25jX3NpZ2FjdGlvbjsKKwkJX25jX3NpZ25hbF9oYW5kbGVyOworCQlfbmNfc2xrX2Zvcm1hdDsKKwkJX25jX3Nsa19pbml0aWFsaXplOworCQlfbmNfc3luY2hvb2s7CisJCV9uY190cmFjZV94bmFtZXM7CisJCV9uY192c3NjYW5mOworCQlfbmNfd2FkZGNoX25vc3luYzsKK307CisKK05DVVJTRVNfNS4xLjIwMDAwNzA4IHsKKwlnbG9iYWw6CisJCWFzc3VtZV9kZWZhdWx0X2NvbG9yczsKKwkJZXJhc2U7CisJCXRvdWNobGluZTsKKwkJdG91Y2h3aW47Cit9IE5DVVJTRVNfNS4wLjE5OTkxMDIzOworCitOQ1VSU0VTXzUuMy4yMDAyMTAxOSB7CisJZ2xvYmFsOgorCQlpc190ZXJtX3Jlc2l6ZWQ7CisJCXJlc2l6ZV90ZXJtOworCWxvY2FsOgorCQlfbmNfcmVzZXRfY29sb3JzOworCQlfbmNfdmFyYXJnczsKKwkJX25jX3dnZXRjaDsKK30gTkNVUlNFU181LjEuMjAwMDA3MDg7CisKK05DVVJTRVNfNS40LjIwMDQwMjA4IHsKKwlnbG9iYWw6CisJCV9uY19vcHRpbWl6ZV9lbmFibGU7CisJbG9jYWw6CisJCV9uY19Ub3VjaGxpbmU7CisJCV9uY19Ub3VjaHBhbjsKKwkJX25jX1dub3V0cmVmcmVzaDsKKwkJX25jX2RQYW5lbDsKKwkJX25jX2RTdGFjazsKKwkJX25jX2ZpZm9fZHVtcDsKKwkJX25jX2luc2VydF9jaDsKKwkJX25jX2xpbmVkdW1wOworCQlfbmNfbXlfdmlzYnVmOworCQlfdHJhY2VkdW1wOworCQlfdHJhY2Vtb3VzZTsKK30gTkNVUlNFU181LjMuMjAwMjEwMTk7CisKK05DVVJTRVNfNS41LjIwMDUxMDEwIHsKKwlsb2NhbDoKKwkJX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoOworCQlfbmNfcmV0cmFjZV9maWVsZDsKKwkJX25jX3JldHJhY2VfZmllbGRfcHRyOworCQlfbmNfcmV0cmFjZV9maWVsZF90eXBlOworCQlfbmNfcmV0cmFjZV9mb3JtOworCQlfbmNfcmV0cmFjZV9mb3JtX2hvb2s7CisJCV9uY19yZXRyYWNlX2l0ZW07CisJCV9uY19yZXRyYWNlX2l0ZW1fb3B0czsKKwkJX25jX3JldHJhY2VfaXRlbV9wdHI7CisJCV9uY19yZXRyYWNlX21lbnU7CisJCV9uY19yZXRyYWNlX21lbnVfaG9vazsKKwkJX25jX3JldHJhY2VfbWVudV9vcHRzOworCQlfbmNfcmV0cmFjZV9wYW5lbDsKK30gTkNVUlNFU181LjQuMjAwNDAyMDg7CisKK05DVVJTRVNfNS42LjIwMDYxMjE3IHsKKwlnbG9iYWw6CisJCWdldGJlZ3g7CisJCWdldGJlZ3k7CisJCWdldGN1cng7CisJCWdldGN1cnk7CisJCWdldG1heHg7CisJCWdldG1heHk7CisJCWdldHBhcng7CisJCWdldHBhcnk7CisJCW5vZmlsdGVyOworCQl1c2VfbGVnYWN5X2NvZGluZzsKKwkJd2dldGNoX2V2ZW50czsKKwkJd2dldG5zdHJfZXZlbnRzOworfSBOQ1VSU0VTXzUuNS4yMDA1MTAxMDsKKworTkNVUlNFU181LjcuMjAwODExMDIgeworCWdsb2JhbDoKKwkJZ2V0YXR0cnM7CisJCWlzX2NsZWFyZWQ7CisJCWlzX2lkY29rOworCQlpc19pZGxvazsKKwkJaXNfaW1tZWRvazsKKwkJaXNfa2V5cGFkOworCQlpc19sZWF2ZW9rOworCQlpc19ub2RlbGF5OworCQlpc19ub3RpbWVvdXQ7CisJCWlzX3Njcm9sbG9rOworCQlpc19zeW5jb2s7CisJCXNldF9lc2NkZWxheTsKKwkJdXNlX3NjcmVlbjsKKwkJdXNlX3dpbmRvdzsKKwkJd2dldHBhcmVudDsKKwkJd2dldHNjcnJlZzsKKwlsb2NhbDoKKwkJX25jX3RyYWNlbW91c2U7CisJCV9uY191bmdldGNoOworfSBOQ1VSU0VTXzUuNi4yMDA2MTIxNzsKKworTkNVUlNFU181LjguMjAxMTAyMjYgeworCWdsb2JhbDoKKwkJX25jX3BhbmVsaG9va19zcDsKKwkJYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwOworCQliZWVwX3NwOworCQljYW5fY2hhbmdlX2NvbG9yX3NwOworCQljZWlsaW5nX3BhbmVsOworCQljb2xvcl9jb250ZW50X3NwOworCQlkb3VwZGF0ZV9zcDsKKwkJZWNob19zcDsKKwkJZW5kd2luX3NwOworCQlmaWx0ZXJfc3A7CisJCWZsYXNoX3NwOworCQlnZXRfZXNjZGVsYXk7CisJCWdldF9lc2NkZWxheV9zcDsKKwkJZ2V0bW91c2Vfc3A7CisJCWdldHdpbl9zcDsKKwkJZ3JvdW5kX3BhbmVsOworCQloYXNfY29sb3JzX3NwOworCQloYXNfbW91c2U7CisJCWhhc19tb3VzZV9zcDsKKwkJaW5pdF9jb2xvcl9zcDsKKwkJaW5pdF9wYWlyX3NwOworCQlpc19wYWQ7CisJCWlzX3N1YndpbjsKKwkJaXNfdGVybV9yZXNpemVkX3NwOworCQlpc2VuZHdpbl9zcDsKKwkJbWNwcmludF9zcDsKKwkJbW91c2VpbnRlcnZhbF9zcDsKKwkJbW91c2VtYXNrX3NwOworCQltdmN1cl9zcDsKKwkJbmV3X2Zvcm1fc3A7CisJCW5ld19tZW51X3NwOworCQluZXdwYWRfc3A7CisJCW5ld3Rlcm1fc3A7CisJCW5ld3dpbl9zcDsKKwkJbmxfc3A7CisJCW5vZWNob19zcDsKKwkJbm9maWx0ZXJfc3A7CisJCW5vbmxfc3A7CisJCXBhaXJfY29udGVudF9zcDsKKwkJcmVzaXplX3Rlcm1fc3A7CisJCXJlc2l6ZXRlcm1fc3A7CisJCXJlc3RhcnR0ZXJtX3NwOworCQlyaXBvZmZsaW5lX3NwOworCQlzY3JfaW5pdF9zcDsKKwkJc2NyX3Jlc3RvcmVfc3A7CisJCXNjcl9zZXRfc3A7CisJCXNldF9lc2NkZWxheV9zcDsKKwkJc2xrX2F0dHJfc2V0X3NwOworCQlzbGtfYXR0cl9zcDsKKwkJc2xrX2F0dHJvZmZfc3A7CisJCXNsa19hdHRyb25fc3A7CisJCXNsa19hdHRyc2V0X3NwOworCQlzbGtfY2xlYXJfc3A7CisJCXNsa19jb2xvcl9zcDsKKwkJc2xrX2luaXRfc3A7CisJCXNsa19sYWJlbF9zcDsKKwkJc2xrX25vdXRyZWZyZXNoX3NwOworCQlzbGtfcmVmcmVzaF9zcDsKKwkJc2xrX3Jlc3RvcmVfc3A7CisJCXNsa19zZXRfc3A7CisJCXNsa190b3VjaF9zcDsKKwkJc3RhcnRfY29sb3Jfc3A7CisJCXRlcm1hdHRyc19zcDsKKwkJdW5nZXRjaF9zcDsKKwkJdW5nZXRtb3VzZV9zcDsKKwkJdXBkYXRlX3BhbmVsc19zcDsKKwkJdXNlX2RlZmF1bHRfY29sb3JzX3NwOworCQl1c2VfbGVnYWN5X2NvZGluZ19zcDsKKwkJdmlkYXR0cl9zcDsKKwkJdmlkcHV0c19zcDsKKwlsb2NhbDoKKwkJX25jX1RZUEVfQUxOVU07CisJCV9uY19UWVBFX0FMUEhBOworCQlfbmNfVFlQRV9FTlVNOworCQlfbmNfVFlQRV9JTlRFR0VSOworCQlfbmNfVFlQRV9JUFY0OworCQlfbmNfVFlQRV9OVU1FUklDOworCQlfbmNfVFlQRV9SRUdFWFA7CisJCV9uY19jdXJzY3Jfb2Y7CisJCV9uY19kb19jb2xvcl9zcDsKKwkJX25jX2Zvcm1fY3Vyc29yOworCQlfbmNfZm9ybWF0X3Nsa3M7CisJCV9uY19mcmVlX2FuZF9leGl0X3NwOworCQlfbmNfZnJlZWFsbF9zcDsKKwkJX25jX2Z0eV9nZW5lcmljOworCQlfbmNfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19nZXRfZmllbGRidWZmZXI7CisJCV9uY19oYXNoX21hcF9zcDsKKwkJX25jX2xpbmVkdW1wX3NwOworCQlfbmNfbWFrZV9vbGRoYXNoX3NwOworCQlfbmNfbWFrZW5ld19zcDsKKwkJX25jX21zZWNfY29zdF9zcDsKKwkJX25jX212Y3VyX2luaXRfc3A7CisJCV9uY19tdmN1cl9yZXN1bWVfc3A7CisJCV9uY19tdmN1cl93cmFwX3NwOworCQlfbmNfbmV3c2NyX29mOworCQlfbmNfcHJpbnRmX3N0cmluZ19zcDsKKwkJX25jX3Jlc2V0X2NvbG9yc19zcDsKKwkJX25jX3JldHJhY2VfbW1hc2tfdDsKKwkJX25jX3JpcG9mZmxpbmVfc3A7CisJCV9uY19zY3JlZW5faW5pdF9zcDsKKwkJX25jX3NjcmVlbl9yZXN1bWVfc3A7CisJCV9uY19zY3JlZW5fd3JhcF9zcDsKKwkJX25jX3Njcm9sbF9vbGRoYXNoX3NwOworCQlfbmNfc2Nyb2xsX29wdGltaXplX3NwOworCQlfbmNfc2Nyb2xsbl9zcDsKKwkJX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZTsKKwkJX25jX3NldHVwc2NyZWVuX3NwOworCQlfbmNfc3Rkc2NyX29mOworfSBOQ1VSU0VTXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJd2dldGRlbGF5OworCWxvY2FsOgorCQlfKjsKKwkJX25jX212Y3VyOworCQlfbmNfbXZjdXJfc3A7CisJCV9uY190cmFjZV9tbWFza190OworfSBOQ1VSU0VTXzUuOC4yMDExMDIyNjsKKworTkNVUlNFU19USUNfNS4wLjE5OTkxMDIzIHsKKwlnbG9iYWw6CisJCV9uY19jYXBjbXA7CisJCV9uY19jaGVja190ZXJtdHlwZTsKKwkJX25jX2VudHJ5X21hdGNoOworCQlfbmNfaW5mb3RvY2FwOworCQlfbmNfcmVhZF9lbnRyeV9zb3VyY2U7CisJCV9uY19yZXNldF9pbnB1dDsKKwkJX25jX3Jlc29sdmVfdXNlczsKKwkJX25jX3NldF93cml0ZWRpcjsKKwkJX25jX3N5bnRheDsKKwkJX25jX3RpY19leHBhbmQ7CisJCV9uY190aWNfd3JpdHRlbjsKKwkJX25jX3RyYW5zX3N0cmluZzsKKwkJX25jX3dyaXRlX2VudHJ5OworCWxvY2FsOgorCQlfbmNfY2FwdG9pbmZvOworCQlfbmNfY29tbWVudF9lbmQ7CisJCV9uY19jb21tZW50X3N0YXJ0OworCQlfbmNfY29weV9lbnRyeTsKKwkJX25jX2N1cnJfZmlsZV9wb3M7CisJCV9uY19jdXJyX3Rva2VuOworCQlfbmNfZ2V0X3Rva2VuOworCQlfbmNfaW5pdF9lbnRyeTsKKwkJX25jX21lcmdlX2VudHJ5OworCQlfbmNfcGFuaWNfbW9kZTsKKwkJX25jX3BhcnNlX2VudHJ5OworCQlfbmNfcHVzaF90b2tlbjsKKwkJX25jX3NhdmVfc3RyOworCQlfbmNfc3RhcnRfbGluZTsKKwkJX25jX3dyYXBfZW50cnk7Cit9OworCitOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDggeworCWdsb2JhbDoKKwkJX25jX2Rpc2FibGVfcGVyaW9kOworfSBOQ1VSU0VTX1RJQ181LjAuMTk5OTEwMjM7CisKK05DVVJTRVNfVElDXzUuNS4yMDA1MTAxMCB7CisJZ2xvYmFsOgorCQlfbmNfYWxsb2NfZW50cnlfbGVha3M7CisJCV9uY19jYXB0b2luZm9fbGVha3M7CisJCV9uY19jaGVja190ZXJtdHlwZTI7CisJCV9uY19jb21wX3NjYW5fbGVha3M7CisJCV9uY19yZXNvbHZlX3VzZXMyOworfSBOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDg7CisKK05DVVJTRVNfVElDXzUuNy4yMDA4MTEwMiB7CisJZ2xvYmFsOgorCQlfbmNfZnJlZV90aWM7CisJbG9jYWw6CisJCV9uY19jb21wX2NhcHRhYl9sZWFrczsKKwkJX25jX2xlYWtzX3RpYzsKK30gTkNVUlNFU19USUNfNS41LjIwMDUxMDEwOworCitOQ1VSU0VTX1RJQ181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJX25jX3N0cmljdF9ic2Q7Cit9IE5DVVJTRVNfVElDXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU19USU5GT181LjAuMTk5OTEwMjMgeworCWdsb2JhbDoKKwkJQkM7CisJCUNPTFM7CisJCUxJTkVTOworCQlQQzsKKwkJU1A7CisJCVRBQlNJWkU7CisJCVVQOworCQlfbmNfYWNjZXNzOworCQlfbmNfYWRkX3RvX3RyeTsKKwkJX25jX2NvcHlfdGVybXR5cGU7CisJCV9uY19jdXJyX2NvbDsKKwkJX25jX2N1cnJfbGluZTsKKwkJX25jX2RvYWxsb2M7CisJCV9uY19lcnJfYWJvcnQ7CisJCV9uY19mYWxsYmFjazsKKwkJX25jX2ZpbmRfZW50cnk7CisJCV9uY19maW5kX3R5cGVfZW50cnk7CisJCV9uY19maXJzdF9uYW1lOworCQlfbmNfZnJlZV9lbnRyaWVzOworCQlfbmNfZnJlZV90ZXJtdHlwZTsKKwkJX25jX2ZyZWVfdHBhcm07CisJCV9uY19mcmVlYWxsOworCQlfbmNfZ2V0X2hhc2hfdGFibGU7CisJCV9uY19nZXRfdGFibGU7CisJCV9uY19nZXRfdHR5X21vZGU7CisJCV9uY19nZXRfdHlwZTsKKwkJX25jX2dldGVudl9udW07CisJCV9uY19oZWFkOworCQlfbmNfaG9tZV90ZXJtaW5mbzsKKwkJX25jX2luZm9faGFzaF90YWJsZTsKKwkJX25jX2luaXRfYWNzOworCQlfbmNfa2VlcF90aWNfZGlyOworCQlfbmNfa2V5cGFkOworCQlfbmNfbmFtZV9tYXRjaDsKKwkJX25jX291dGNoOworCQlfbmNfcmVhZF9lbnRyeTsKKwkJX25jX3JlYWRfZmlsZV9lbnRyeTsKKwkJX25jX3NjcmVlbl9jaGFpbjsKKwkJX25jX3NldF9idWZmZXI7CisJCV9uY19zZXRfc291cmNlOworCQlfbmNfc2V0X3R0eV9tb2RlOworCQlfbmNfc2V0X3R5cGU7CisJCV9uY19zdXBwcmVzc193YXJuaW5nczsKKwkJX25jX3N5c2Vycl9hYm9ydDsKKwkJX25jX3RhaWw7CisJCV9uY190aWNfZGlyOworCQlfbmNfdGltZWRfd2FpdDsKKwkJX25jX3RpbmZvX2ZrZXlzZjsKKwkJX25jX3RyYWNlX2J1ZjsKKwkJX25jX3RyYWNpbmc7CisJCV9uY191cGRhdGVfc2NyZWVuc2l6ZTsKKwkJX25jX3Zpc2J1ZjsKKwkJX25jX3Zpc2J1ZjI7CisJCV9uY193YXJuaW5nOworCQlfdHJhY2VjaGFyOworCQlhY3NfbWFwOworCQliYXVkcmF0ZTsKKwkJYm9vbGNvZGVzOworCQlib29sZm5hbWVzOworCQlib29sbmFtZXM7CisJCWNicmVhazsKKwkJY3VyX3Rlcm07CisJCWN1cnNfc2V0OworCQljdXJzY3I7CisJCWN1cnNlc192ZXJzaW9uOworCQlkZWZfcHJvZ19tb2RlOworCQlkZWZfc2hlbGxfbW9kZTsKKwkJZGVmaW5lX2tleTsKKwkJZGVsX2N1cnRlcm07CisJCWRlbGF5X291dHB1dDsKKwkJZXJhc2VjaGFyOworCQlmbHVzaGlucDsKKwkJaGFsZmRlbGF5OworCQloYXNfaWM7CisJCWhhc19pbDsKKwkJaGFzX2tleTsKKwkJaWRjb2s7CisJCWlkbG9rOworCQlpbnRyZmx1c2g7CisJCWtleWJvdW5kOworCQlrZXluYW1lOworCQlrZXlvazsKKwkJa2V5cGFkOworCQlraWxsY2hhcjsKKwkJbG9uZ25hbWU7CisJCW1ldGE7CisJCW5hcG1zOworCQluZXdzY3I7CisJCW5vY2JyZWFrOworCQlub2RlbGF5OworCQlub3FpZmx1c2g7CisJCW5vcmF3OworCQlub3RpbWVvdXQ7CisJCW51bWNvZGVzOworCQludW1mbmFtZXM7CisJCW51bW5hbWVzOworCQlvc3BlZWQ7CisJCXB1dHA7CisJCXFpZmx1c2g7CisJCXJhdzsKKwkJcmVzZXRfcHJvZ19tb2RlOworCQlyZXNldF9zaGVsbF9tb2RlOworCQlyZXNldHR5OworCQlzYXZldHR5OworCQlzZXRfY3VydGVybTsKKwkJc2V0dXB0ZXJtOworCQlzdGRzY3I7CisJCXN0cmNvZGVzOworCQlzdHJmbmFtZXM7CisJCXN0cm5hbWVzOworCQl0ZXJtbmFtZTsKKwkJdGdldGVudDsKKwkJdGdldGZsYWc7CisJCXRnZXRudW07CisJCXRnZXRzdHI7CisJCXRnb3RvOworCQl0aWdldGZsYWc7CisJCXRpZ2V0bnVtOworCQl0aWdldHN0cjsKKwkJdHBhcm07CisJCXRwdXRzOworCQl0cmFjZTsKKwkJdHR5dHlwZTsKKwkJdHlwZWFoZWFkOworCQl1bmN0cmw7CisJCXVzZV9lbnY7CisJCXd0aW1lb3V0OworCWxvY2FsOgorCQlfbmNfYmF1ZHJhdGU7CisJCV9uY19jYXBfaGFzaF90YWJsZTsKKwkJX25jX2NhcGFsaWFzX3RhYmxlOworCQlfbmNfZXhwYW5kX3RyeTsKKwkJX25jX2luZm9hbGlhc190YWJsZTsKKwkJX25jX2luaXRfa2V5dHJ5OworCQlfbmNfa2V5X25hbWVzOworCQlfbmNfbnVsbHNfc2VudDsKKwkJX25jX29zcGVlZDsKKwkJX25jX3JlYWRfdGVybWNhcDsKKwkJX25jX3JlYWRfdGVybWNhcF9lbnRyeTsKKwkJX25jX3JlbW92ZV9rZXk7CisJCV9uY19yZW1vdmVfc3RyaW5nOworCQlfbmNfdHJhY2VfdHJpZXM7CisJCV9uY190cmFjZWJpdHM7Cit9OworCitOQ1VSU0VTX1RJTkZPXzUuMS4yMDAwMDcwOCB7CisJZ2xvYmFsOgorCQlfbmNfYWxpZ25fdGVybXR5cGU7CisJCV9uY19mbHVzaDsKKwkJX25jX3RpbmZvX2ZrZXlzOworCQlfbmNfdXNlcl9kZWZpbmFibGU7CisJCXVzZV9leHRlbmRlZF9uYW1lczsKK30gTkNVUlNFU19USU5GT181LjAuMTk5OTEwMjM7CisKK05DVVJTRVNfVElORk9fNS4yLjIwMDAxMDIxIHsKKwlnbG9iYWw6CisJCV9uY19iYXNlbmFtZTsKKwkJX25jX2Vudl9hY2Nlc3M7CisJCV9uY19zYWZlX3N0cmNhdDsKKwkJX25jX3NhZmVfc3RyY3B5OworCQlfbmNfc3RyX2NvcHk7CisJCV9uY19zdHJfaW5pdDsKKwkJX25jX3N0cl9udWxsOworfSBOQ1VSU0VTX1RJTkZPXzUuMS4yMDAwMDcwODsKKworTkNVUlNFU19USU5GT181LjMuMjAwMjEwMTkgeworCWdsb2JhbDoKKwkJX25jX3Jvb3RuYW1lOworCQlfbmNfdHBhcm1fZXJyOworCQlfbmNfdmlzYnVmbjsKK30gTkNVUlNFU19USU5GT181LjIuMjAwMDEwMjE7CisKK05DVVJTRVNfVElORk9fNS40LjIwMDQwMjA4IHsKKwlnbG9iYWw6CisJCV9uY19nZXRfbG9jYWxlOworCQlfbmNfbG9jYWxlX2JyZWFrc19hY3M7CisJCV9uY19vdXRjaGFyczsKKwkJX25jX3BhdGhsYXN0OworCQlfbmNfcmV0cmFjZV9hdHRyX3Q7CisJCV9uY19yZXRyYWNlX2Jvb2w7CisJCV9uY19yZXRyYWNlX2NodHlwZTsKKwkJX25jX3JldHJhY2VfaW50OworCQlfbmNfcmV0cmFjZV9wdHI7CisJCV9uY19yZXRyYWNlX3NwOworCQlfbmNfcmV0cmFjZV91bnNpZ25lZDsKKwkJX25jX3JldHJhY2Vfd2luOworCQlfbmNfdHBhcm1fYW5hbHl6ZTsKKwkJX25jX3RwdXRzX3RyYWNlOworCQlfbmNfdHJhY2VfYnVmY2F0OworCQlfbmNfdW5pY29kZV9sb2NhbGU7CisJCV90cmFjZWF0dHI7CisJCV90cmFjZWF0dHIyOworCQlfdHJhY2VjaHR5cGU7CisJCV90cmFjZWNodHlwZTI7CisJCV90cmFjZWY7CisJCWtleV9kZWZpbmVkOworCWxvY2FsOgorCQlfbmNfYWx0Y2hhcnNldF9uYW1lOworCQlfbmNfdHJhY2VfdHR5bW9kZTsKK30gTkNVUlNFU19USU5GT181LjMuMjAwMjEwMTk7CisKK05DVVJTRVNfVElORk9fNS41LjIwMDUxMDEwIHsKKwlnbG9iYWw6CisJCV9uY19nZXRfc291cmNlOworCQlfbmNfcmV0cmFjZV9jcHRyOworCQlfbmNfcmV0cmFjZV9jdm9pZF9wdHI7CisJCV9uY19yZXRyYWNlX3ZvaWRfcHRyOworCQlfbmNfc2V0dXB0ZXJtOworCQlfbmNfdHJpbV9zZ3IwOworCWxvY2FsOgorCQlfbmNfZGVsaW5rX2VudHJ5OworCQlfbmNfZnJlZV9lbnRyeTsKK30gTkNVUlNFU19USU5GT181LjQuMjAwNDAyMDg7CisKK05DVVJTRVNfVElORk9fNS42LjIwMDYxMjE3IHsKKwlnbG9iYWw6CisJCV9uY19kYl9jbG9zZTsKKwkJX25jX2RiX2ZpcnN0OworCQlfbmNfZGJfaGF2ZV9kYXRhOworCQlfbmNfZGJfbmV4dDsKKwkJX25jX2RiX29wZW47CisJCV9uY19kYl9wdXQ7CisJCV9uY19ldmVudGxpc3RfdGltZW91dDsKKwkJX25jX2ZpcnN0X2RiOworCQlfbmNfaGFuZGxlX3NpZ3dpbmNoOworCQlfbmNfaXNfYWJzX3BhdGg7CisJCV9uY19pc19kaXJfcGF0aDsKKwkJX25jX2lzX2ZpbGVfcGF0aDsKKwkJX25jX2tleW5hbWVfbGVha3M7CisJCV9uY19sYXN0X2RiOworCQlfbmNfbmV4dF9kYjsKKwkJX25jX3JlYWRfdGVybXR5cGU7CisJCV9uY190Z2V0ZW50X2xlYWtzOworCQlfbmNfdmlzY2J1ZjsKKwlsb2NhbDoKKwkJX25jX2RiX2dldDsKKwkJX25jX2RiX2hhdmVfaW5kZXg7CisJCV9uY19oYXNoZWRfZGI7CisJCV9uY192aXNjYnVmMjsKK30gTkNVUlNFU19USU5GT181LjUuMjAwNTEwMTA7CisKK05DVVJTRVNfVElORk9fNS43LjIwMDgxMTAyIHsKKwlnbG9iYWw6CisJCV9uY19mcmVlX3RpbmZvOworCQlfbmNfZ2V0X2FsaWFzX3RhYmxlOworCQlfbmNfZ2V0X3NjcmVlbnNpemU7CisJCV9uY19nbG9iYWxzOworCQlfbmNfbGVha3NfdGluZm87CisJCV9uY19wcmVzY3JlZW47CisJCV9uY19zY3JlZW5fb2Y7CisJCV9uY19zZXRfbm9fcGFkZGluZzsKKwkJX25jX3RyYWNlY2hhcjsKKwkJc2V0X3RhYnNpemU7CisJbG9jYWw6CisJCV9uY19rZXluYW1lOworCQlfbmNfdW5jdHJsOworfSBOQ1VSU0VTX1RJTkZPXzUuNi4yMDA2MTIxNzsKKworTkNVUlNFU19USU5GT181LjguMjAxMTAyMjYgeworCWdsb2JhbDoKKwkJX25jX2ZsdXNoX3NwOworCQlfbmNfZ2V0X3R0eV9tb2RlX3NwOworCQlfbmNfaW5pdF9hY3Nfc3A7CisJCV9uY19vdXRjX3dyYXBwZXI7CisJCV9uY19vdXRjaF9zcDsKKwkJX25jX3B1dHA7CisJCV9uY19wdXRwX2ZsdXNoOworCQlfbmNfcHV0cF9mbHVzaF9zcDsKKwkJX25jX3B1dHBfc3A7CisJCV9uY19yZXRyYWNlX2ludF9hdHRyX3Q7CisJCV9uY19zZXRfYnVmZmVyX3NwOworCQlfbmNfc2V0X3R0eV9tb2RlX3NwOworCQliYXVkcmF0ZV9zcDsKKwkJY2JyZWFrX3NwOworCQljdXJzX3NldF9zcDsKKwkJZGVmX3Byb2dfbW9kZV9zcDsKKwkJZGVmX3NoZWxsX21vZGVfc3A7CisJCWRlZmluZV9rZXlfc3A7CisJCWRlbF9jdXJ0ZXJtX3NwOworCQlkZWxheV9vdXRwdXRfc3A7CisJCWVyYXNlY2hhcl9zcDsKKwkJZmx1c2hpbnBfc3A7CisJCWhhbGZkZWxheV9zcDsKKwkJaGFzX2ljX3NwOworCQloYXNfaWxfc3A7CisJCWhhc19rZXlfc3A7CisJCWludHJmbHVzaF9zcDsKKwkJa2V5X2RlZmluZWRfc3A7CisJCWtleWJvdW5kX3NwOworCQlrZXluYW1lX3NwOworCQlrZXlva19zcDsKKwkJa2lsbGNoYXJfc3A7CisJCW5hcG1zX3NwOworCQluZXdfcHJlc2NyOworCQlub2NicmVha19zcDsKKwkJbm9xaWZsdXNoX3NwOworCQlub3Jhd19zcDsKKwkJcHV0cF9zcDsKKwkJcWlmbHVzaF9zcDsKKwkJcmF3X3NwOworCQlyZXNldF9wcm9nX21vZGVfc3A7CisJCXJlc2V0X3NoZWxsX21vZGVfc3A7CisJCXJlc2V0dHlfc3A7CisJCXNhdmV0dHlfc3A7CisJCXNldF9jdXJ0ZXJtX3NwOworCQlzZXRfdGFic2l6ZV9zcDsKKwkJdGVybW5hbWVfc3A7CisJCXRnZXRlbnRfc3A7CisJCXRnZXRmbGFnX3NwOworCQl0Z2V0bnVtX3NwOworCQl0Z2V0c3RyX3NwOworCQl0aWdldGZsYWdfc3A7CisJCXRpZ2V0bnVtX3NwOworCQl0aWdldHN0cl9zcDsKKwkJdGlwYXJtOworCQl0cHV0c19zcDsKKwkJdHlwZWFoZWFkX3NwOworCQl1bmN0cmxfc3A7CisJCXVzZV9lbnZfc3A7CisJbG9jYWw6CisJCV9uY19nZXRfaGFzaF9pbmZvOworCQlfbmNfcmV0cmFjZV9jaGFyOworCQlfbmNfc2V0dXBfdGluZm87CisJCV9uY190aW5mb19jbWRjaDsKK30gTkNVUlNFU19USU5GT181LjcuMjAwODExMDI7CisKK05DVVJTRVNfVElORk9fNS45LjIwMTUwNTMwIHsKKwlnbG9iYWw6CisJCV9uY19pbml0X3Rlcm10eXBlOworCQlfbmNfcHV0Y2hhcjsKKwkJX25jX3B1dGNoYXJfc3A7CisJCXVzZV90aW9jdGw7CisJCXVzZV90aW9jdGxfc3A7CisJbG9jYWw6CisJCV8qOworCQlfbmNfY29tcF9lcnJvcl9sZWFrczsKKwkJX25jX2RiX2l0ZXJhdG9yX2xlYWtzOworCQlfbmNfc2V0ZW52X251bTsKK30gTkNVUlNFU19USU5GT181LjguMjAxMTAyMjY7CmRpZmYgLS1naXQgYS9wYWNrYWdlL25jdXJzZXMuc3BlYyBiL3BhY2thZ2UvbmN1cnNlcy5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNWM3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL25jdXJzZXMuc3BlYwpAQCAtMCwwICsxLDEwOCBAQAorU3VtbWFyeTogc2hhcmVkIGxpYnJhcmllcyBmb3IgdGVybWluYWwgaGFuZGxpbmcKK05hbWU6IG5jdXJzZXM2CitWZXJzaW9uOiA2LjAKK1JlbGVhc2U6IDIwMTUwODA4CitMaWNlbnNlOiBYMTEKK0dyb3VwOiBEZXZlbG9wbWVudC9MaWJyYXJpZXMKK1NvdXJjZTogbmN1cnNlcy0le3ZlcnNpb259LSV7cmVsZWFzZX0udGd6CisjIFVSTDogaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCisKKyVkZWZpbmUgQ0NfTk9STUFMIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzaGFkb3cgLVdjb252ZXJzaW9uCislZGVmaW5lIENDX1NUUklDVCAle0NDX05PUk1BTH0gLVcgLVdiYWQtZnVuY3Rpb24tY2FzdCAtV2Nhc3QtYWxpZ24gLVdjYXN0LXF1YWwgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV25lc3RlZC1leHRlcm5zIC1XcG9pbnRlci1hcml0aCAtV3dyaXRlLXN0cmluZ3MgLWFuc2kgLXBlZGFudGljCisKKyVnbG9iYWwgTVlfQUJJIDYKKworIyBzYXZlIHZhbHVlIGJlZm9yZSByZWRlZmluaW5nCislZ2xvYmFsIHN5c19saWJkaXIgJXtfbGliZGlyfQorCisjIHdhcyByZWRlZmluZWQuLi4KKyNnbG9iYWwgX3ByZWZpeCAvdXNyL2xvY2FsL25jdXJzZXMje01ZX0FCSX0KKworJWdsb2JhbCBNWV9QS0cgJXtzeXNfbGliZGlyfS9wa2djb25maWcKKyVkZWZpbmUgTVlEQVRBIC91c3IvbG9jYWwvbmN1cnNlcy9zaGFyZS90ZXJtaW5mbworCislZGVzY3JpcHRpb24KK1RoZSBuY3Vyc2VzIGxpYnJhcnkgcm91dGluZXMgYXJlIGEgdGVybWluYWwtaW5kZXBlbmRlbnQgbWV0aG9kIG9mCit1cGRhdGluZyBjaGFyYWN0ZXIgc2NyZWVucyB3aXRoIHJlYXNvbmFibGUgb3B0aW1pemF0aW9uLgorCitUaGlzIHBhY2thZ2UgaXMgdXNlZCBmb3IgdGVzdGluZyBBQkkgJXtNWV9BQkl9LgorCislcHJlcAorCislZGVmaW5lIGRlYnVnX3BhY2thZ2UgJXtuaWx9Cislc2V0dXAgLXEgLW4gbmN1cnNlcy0le3ZlcnNpb259LSV7cmVsZWFzZX0KKworJWJ1aWxkCitDRkxBR1M9IiV7Q0NfTk9STUFMfSIgXAorUlBBVEhfTElTVD0uLi9saWI6JXtfcHJlZml4fS9saWIgXAorJWNvbmZpZ3VyZSBcCisJLS10YXJnZXQgJXtfdGFyZ2V0X3BsYXRmb3JtfSBcCisJLS1wcmVmaXg9JXtfcHJlZml4fSBcCisJLS1pbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScgXAorCS0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0le01ZREFUQX0gXAorCS0td2l0aC1pbnN0YWxsLXByZWZpeD0kUlBNX0JVSUxEX1JPT1QgXAorCS0td2l0aC10ZXJtaW5mby1kaXJzPSV7TVlEQVRBfTovdXNyL3NoYXJlL3Rlcm1pbmZvIFwKKwktLWRpc2FibGUtZWNobyBcCisJLS1kaXNhYmxlLWdldGNhcCBcCisJLS1kaXNhYmxlLWxlYWtzIFwKKwktLWRpc2FibGUtbWFjcm9zICBcCisJLS1kaXNhYmxlLW92ZXJ3cml0ZSAgXAorCS0tZGlzYWJsZS10ZXJtY2FwIFwKKwktLWVuYWJsZS1oYXJkLXRhYnMgXAorCS0tZW5hYmxlLXBjLWZpbGVzIFwKKwktLWVuYWJsZS1ycGF0aCBcCisJLS1lbmFibGUtd2FybmluZ3MgXAorCS0tZW5hYmxlLXdnZXRjaC1ldmVudHMgXAorCS0tZW5hYmxlLXdpZGVjIFwKKwktLXZlcmJvc2UgXAorCS0tcHJvZ3JhbS1zdWZmaXg9JXtNWV9BQkl9IFwKKwktLXdpdGgtYWJpLXZlcnNpb249JXtNWV9BQkl9IFwKKwktLXdpdGgtZGV2ZWxvcCBcCisJLS13aXRoLXNoYXJlZCBcCisJLS13aXRoLXRlcm1saWIgXAorCS0td2l0aC10aWNsaWIgXAorCS0td2l0aC10cmFjZSBcCisJLS13aXRoLWN4eC1zaGFyZWQgXAorCS0td2l0aC1leHRyYS1zdWZmaXg9JXtNWV9BQkl9IFwKKwktLXdpdGgtcGtnLWNvbmZpZy1saWJkaXI9JXtNWV9QS0d9IFwKKwktLXdpdGgtdmVyc2lvbmVkLXN5bXMgXAorCS0td2l0aC14dGVybS1rYnM9REVMIFwKKwktLXdpdGhvdXQtYWRhIFwKKwktLXdpdGhvdXQtZGVidWcgXAorCS0td2l0aG91dC1ub3JtYWwKKworbWFrZQorCislaW5zdGFsbAorcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCittYWtlIGluc3RhbGwubGlicyBpbnN0YWxsLnByb2dzCitybSAtZiB0ZXN0L25jdXJzZXMKKyggY2QgdGVzdCAmJiBtYWtlIG5jdXJzZXMgTE9DQUxfTElCRElSPSV7X2xpYmRpcn0gJiYgbXYgbmN1cnNlcyAkUlBNX0JVSUxEX1JPT1QvJXtfYmluZGlyfS9uY3Vyc2VzJXtNWV9BQkl9ICkKKworJWNsZWFuCitybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKKyVmaWxlcworJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKKyV7X2JpbmRpcn0vKgorJXtfaW5jbHVkZWRpcn0vKgorJXtfbGliZGlyfS8qCisle01ZX1BLR30vKi5wYworCislY2hhbmdlbG9nCisKKyogU3VuIEFwciAyNiAyMDE1IFRob21hcyBFLiBEaWNrZXkKKy0gbW92ZSBwYWNrYWdlIHRvIC91c3IKKworKiBTdW4gQXByIDEyIDIwMTUgVGhvbWFzIEUuIERpY2tleQorLSBmYWN0b3Itb3V0IE1ZX0FCSQorCisqIFNhdCBNYXIgMDkgMjAxMyBUaG9tYXMgRS4gRGlja2V5CistIGFkZCAtLXdpdGgtY3h4LXNoYXJlZCBvcHRpb24gdG8gZGVtb25zdHJhdGUgYysrIGJpbmRpbmcgYXMgc2hhcmVkIGxpYnJhcnkKKworKiBTYXQgT2N0IDI3IDIwMTIgVGhvbWFzIEUuIERpY2tleQorLSBhZGQgbmN1cnNlcyBwcm9ncmFtIGFzICJuY3Vyc2VzNiIgdG8gcHJvdmlkZSBkZW1vbnN0cmF0aW9uLgorCisqIEZyaSBKdW4gMDggMjAxMiBUaG9tYXMgRS4gRGlja2V5CistIGluaXRpYWwgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL3BhY2thZ2UvbmN1cnNlcy5zeW0gYi9wYWNrYWdlL25jdXJzZXMuc3ltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMmNiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL25jdXJzZXMuc3ltCkBAIC0wLDAgKzEsODU2IEBACisjICRJZDogbmN1cnNlcy5zeW0sdiAxLjIzIDIwMTUvMDYvMjcgMjI6MzA6NDQgdG9tIEV4cCAkCisjIHNjcmlwdCBmb3Igc2hhcmVkIGxpYnJhcnkgc3ltYm9sLXZpc2liaWxpdHkgdXNpbmcgbGlidG9vbAorIworIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBuY3UtbWFwc3ltcworIyBDb25maWd1cmUgb3B0aW9ucyAoNS4wLjE5OTkxMDIzKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjEuMjAwMDA3MDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS4yLjIwMDAxMDIxKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuMy4yMDAyMTAxOSkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjQuMjAwNDAyMDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS41LjIwMDUxMDEwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNi4yMDA2MTIxNykKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNy4yMDA4MTEwMikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOC4yMDExMDIyNikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxMTA0MDQpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTUwNTMwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDYuMC5jdXJyZW50KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKK0JDCitDT0xPUlMKK0NPTE9SX1BBSVIKK0NPTE9SX1BBSVJTCitDT0xTCitFU0NERUxBWQorTElORVMKK1BBSVJfTlVNQkVSCitQQworU1AKK1RBQlNJWkUKK1RZUEVfQUxOVU0KK1RZUEVfQUxQSEEKK1RZUEVfRU5VTQorVFlQRV9JTlRFR0VSCitUWVBFX0lQVjQKK1RZUEVfTlVNRVJJQworVFlQRV9SRUdFWFAKK1VQCitfbmNfRGVmYXVsdF9GaWVsZAorX25jX0RlZmF1bHRfRm9ybQorX25jX2FjY2VzcworX25jX2FkZF90b190cnkKK19uY19hbGlnbl90ZXJtdHlwZQorX25jX2FsbG9jX2VudHJ5X2xlYWtzCitfbmNfYmFzZW5hbWUKK19uY19jYXBjbXAKK19uY19jYXB0b2luZm9fbGVha3MKK19uY19jaGVja190ZXJtdHlwZQorX25jX2NoZWNrX3Rlcm10eXBlMgorX25jX2NvbXBfc2Nhbl9sZWFrcworX25jX2NvcHlfdGVybXR5cGUKK19uY19jdXJyX2NvbAorX25jX2N1cnJfbGluZQorX25jX2RiX2Nsb3NlCitfbmNfZGJfZmlyc3QKK19uY19kYl9oYXZlX2RhdGEKK19uY19kYl9uZXh0CitfbmNfZGJfb3BlbgorX25jX2RiX3B1dAorX25jX2Rpc2FibGVfcGVyaW9kCitfbmNfZG9hbGxvYworX25jX2VudHJ5X21hdGNoCitfbmNfZW52X2FjY2VzcworX25jX2Vycl9hYm9ydAorX25jX2V2ZW50bGlzdF90aW1lb3V0CitfbmNfZmFsbGJhY2sKK19uY19maW5kX2VudHJ5CitfbmNfZmluZF90eXBlX2VudHJ5CitfbmNfZmlyc3RfZGIKK19uY19maXJzdF9uYW1lCitfbmNfZmx1c2gKK19uY19mbHVzaF9zcAorX25jX2ZyZWVfYW5kX2V4aXQKK19uY19mcmVlX2VudHJpZXMKK19uY19mcmVlX3Rlcm10eXBlCitfbmNfZnJlZV90aWMKK19uY19mcmVlX3RpbmZvCitfbmNfZnJlZV90cGFybQorX25jX2ZyZWVhbGwKK19uY19nZXRfYWxpYXNfdGFibGUKK19uY19nZXRfaGFzaF90YWJsZQorX25jX2dldF9sb2NhbGUKK19uY19nZXRfc2NyZWVuc2l6ZQorX25jX2dldF9zb3VyY2UKK19uY19nZXRfdGFibGUKK19uY19nZXRfdHR5X21vZGUKK19uY19nZXRfdHR5X21vZGVfc3AKK19uY19nZXRfdHlwZQorX25jX2dldGVudl9udW0KK19uY19nbG9iYWxzCitfbmNfaGFuZGxlX3NpZ3dpbmNoCitfbmNfaGFzX21vdXNlCitfbmNfaGVhZAorX25jX2hvbWVfdGVybWluZm8KK19uY19pbmZvX2hhc2hfdGFibGUKK19uY19pbmZvdG9jYXAKK19uY19pbml0X2FjcworX25jX2luaXRfYWNzX3NwCitfbmNfaW5pdF90ZXJtdHlwZQorX25jX2lzX2Fic19wYXRoCitfbmNfaXNfZGlyX3BhdGgKK19uY19pc19maWxlX3BhdGgKK19uY19rZWVwX3RpY19kaXIKK19uY19rZXluYW1lX2xlYWtzCitfbmNfa2V5cGFkCitfbmNfbGFzdF9kYgorX25jX2xlYWtzX3RpbmZvCitfbmNfbG9jYWxlX2JyZWFrc19hY3MKK19uY19uYW1lX21hdGNoCitfbmNfbmV4dF9kYgorX25jX29wdGltaXplX2VuYWJsZQorX25jX291dGNfd3JhcHBlcgorX25jX291dGNoCitfbmNfb3V0Y2hfc3AKK19uY19vdXRjaGFycworX25jX3BhbmVsaG9vaworX25jX3BhbmVsaG9va19zcAorX25jX3BhdGhsYXN0CitfbmNfcHJlc2NyZWVuCitfbmNfcHV0Y2hhcgorX25jX3B1dGNoYXJfc3AKK19uY19wdXRwCitfbmNfcHV0cF9mbHVzaAorX25jX3B1dHBfZmx1c2hfc3AKK19uY19wdXRwX3NwCitfbmNfcmVhZF9lbnRyeQorX25jX3JlYWRfZW50cnlfc291cmNlCitfbmNfcmVhZF9maWxlX2VudHJ5CitfbmNfcmVhZF90ZXJtdHlwZQorX25jX3Jlc2V0X2lucHV0CitfbmNfcmVzb2x2ZV91c2VzCitfbmNfcmVzb2x2ZV91c2VzMgorX25jX3JldHJhY2VfYXR0cl90CitfbmNfcmV0cmFjZV9ib29sCitfbmNfcmV0cmFjZV9jaHR5cGUKK19uY19yZXRyYWNlX2NwdHIKK19uY19yZXRyYWNlX2N2b2lkX3B0cgorX25jX3JldHJhY2VfaW50CitfbmNfcmV0cmFjZV9pbnRfYXR0cl90CitfbmNfcmV0cmFjZV9wdHIKK19uY19yZXRyYWNlX3NwCitfbmNfcmV0cmFjZV91bnNpZ25lZAorX25jX3JldHJhY2Vfdm9pZF9wdHIKK19uY19yZXRyYWNlX3dpbgorX25jX3JpcG9mZmxpbmUKK19uY19yb290bmFtZQorX25jX3NhZmVfc3RyY2F0CitfbmNfc2FmZV9zdHJjcHkKK19uY19zY3JlZW5fY2hhaW4KK19uY19zY3JlZW5fb2YKK19uY19zZXRfYnVmZmVyCitfbmNfc2V0X2J1ZmZlcl9zcAorX25jX3NldF9ub19wYWRkaW5nCitfbmNfc2V0X3NvdXJjZQorX25jX3NldF90dHlfbW9kZQorX25jX3NldF90dHlfbW9kZV9zcAorX25jX3NldF90eXBlCitfbmNfc2V0X3dyaXRlZGlyCitfbmNfc2V0dXB0ZXJtCitfbmNfc3RyX2NvcHkKK19uY19zdHJfaW5pdAorX25jX3N0cl9udWxsCitfbmNfc3RyaWN0X2JzZAorX25jX3N1cHByZXNzX3dhcm5pbmdzCitfbmNfc3ludGF4CitfbmNfc3lzZXJyX2Fib3J0CitfbmNfdGFpbAorX25jX3RnZXRlbnRfbGVha3MKK19uY190aWNfZGlyCitfbmNfdGljX2V4cGFuZAorX25jX3RpY193cml0dGVuCitfbmNfdGltZWRfd2FpdAorX25jX3RpbmZvX2ZrZXlzCitfbmNfdGluZm9fZmtleXNmCitfbmNfdHBhcm1fYW5hbHl6ZQorX25jX3RwYXJtX2VycgorX25jX3RwdXRzX3RyYWNlCitfbmNfdHJhY2VfYnVmCitfbmNfdHJhY2VfYnVmY2F0CitfbmNfdHJhY2VjaGFyCitfbmNfdHJhY2luZworX25jX3RyYW5zX3N0cmluZworX25jX3RyaW1fc2dyMAorX25jX3VuaWNvZGVfbG9jYWxlCitfbmNfdXBkYXRlX3NjcmVlbnNpemUKK19uY191c2VyX2RlZmluYWJsZQorX25jX3Zpc2J1ZgorX25jX3Zpc2J1ZjIKK19uY192aXNidWZuCitfbmNfdmlzY2J1ZgorX25jX3dhcm5pbmcKK19uY193cml0ZV9lbnRyeQorX3RyYWNlYXR0cgorX3RyYWNlYXR0cjIKK190cmFjZWNoYXIKK190cmFjZWNodHlwZQorX3RyYWNlY2h0eXBlMgorX3RyYWNlZgorYWNzX21hcAorYWRkY2gKK2FkZGNobnN0cgorYWRkY2hzdHIKK2FkZG5zdHIKK2FkZHN0cgorYXNzdW1lX2RlZmF1bHRfY29sb3JzCithc3N1bWVfZGVmYXVsdF9jb2xvcnNfc3AKK2F0dHJfZ2V0CithdHRyX29mZgorYXR0cl9vbgorYXR0cl9zZXQKK2F0dHJvZmYKK2F0dHJvbgorYXR0cnNldAorYmF1ZHJhdGUKK2JhdWRyYXRlX3NwCitiZWVwCitiZWVwX3NwCitia2dkCitia2dkc2V0Citib29sY29kZXMKK2Jvb2xmbmFtZXMKK2Jvb2xuYW1lcworYm9yZGVyCitib3R0b21fcGFuZWwKK2JveAorY2FuX2NoYW5nZV9jb2xvcgorY2FuX2NoYW5nZV9jb2xvcl9zcAorY2JyZWFrCitjYnJlYWtfc3AKK2NlaWxpbmdfcGFuZWwKK2NoZ2F0CitjbGVhcgorY2xlYXJvaworY2xydG9ib3QKK2NscnRvZW9sCitjb2xvcl9jb250ZW50Citjb2xvcl9jb250ZW50X3NwCitjb2xvcl9zZXQKK2NvcHl3aW4KK2N1cl90ZXJtCitjdXJyZW50X2ZpZWxkCitjdXJyZW50X2l0ZW0KK2N1cnNfc2V0CitjdXJzX3NldF9zcAorY3Vyc2NyCitjdXJzZXNfdmVyc2lvbgorZGF0YV9haGVhZAorZGF0YV9iZWhpbmQKK2RlZl9wcm9nX21vZGUKK2RlZl9wcm9nX21vZGVfc3AKK2RlZl9zaGVsbF9tb2RlCitkZWZfc2hlbGxfbW9kZV9zcAorZGVmaW5lX2tleQorZGVmaW5lX2tleV9zcAorZGVsX2N1cnRlcm0KK2RlbF9jdXJ0ZXJtX3NwCitkZWxfcGFuZWwKK2RlbGF5X291dHB1dAorZGVsYXlfb3V0cHV0X3NwCitkZWxjaAorZGVsZXRlbG4KK2RlbHNjcmVlbgorZGVsd2luCitkZXJ3aW4KK2RvdXBkYXRlCitkb3VwZGF0ZV9zcAorZHVwX2ZpZWxkCitkdXB3aW4KK2R5bmFtaWNfZmllbGRfaW5mbworZWNobworZWNob19zcAorZWNob2NoYXIKK2VuZHdpbgorZW5kd2luX3NwCitlcmFzZQorZXJhc2VjaGFyCitlcmFzZWNoYXJfc3AKK2ZpZWxkX2FyZworZmllbGRfYmFjaworZmllbGRfYnVmZmVyCitmaWVsZF9jb3VudAorZmllbGRfZm9yZQorZmllbGRfaW5kZXgKK2ZpZWxkX2luZm8KK2ZpZWxkX2luaXQKK2ZpZWxkX2p1c3QKK2ZpZWxkX29wdHMKK2ZpZWxkX29wdHNfb2ZmCitmaWVsZF9vcHRzX29uCitmaWVsZF9wYWQKK2ZpZWxkX3N0YXR1cworZmllbGRfdGVybQorZmllbGRfdHlwZQorZmllbGRfdXNlcnB0cgorZmlsdGVyCitmaWx0ZXJfc3AKK2ZsYXNoCitmbGFzaF9zcAorZmx1c2hpbnAKK2ZsdXNoaW5wX3NwCitmb3JtX2RyaXZlcgorZm9ybV9maWVsZHMKK2Zvcm1faW5pdAorZm9ybV9vcHRzCitmb3JtX29wdHNfb2ZmCitmb3JtX29wdHNfb24KK2Zvcm1fcGFnZQorZm9ybV9yZXF1ZXN0X2J5X25hbWUKK2Zvcm1fcmVxdWVzdF9uYW1lCitmb3JtX3N1YgorZm9ybV90ZXJtCitmb3JtX3VzZXJwdHIKK2Zvcm1fd2luCitmcmVlX2ZpZWxkCitmcmVlX2ZpZWxkdHlwZQorZnJlZV9mb3JtCitmcmVlX2l0ZW0KK2ZyZWVfbWVudQorZ2V0X2VzY2RlbGF5CitnZXRfZXNjZGVsYXlfc3AKK2dldGF0dHJzCitnZXRiZWd4CitnZXRiZWd5CitnZXRia2dkCitnZXRjaAorZ2V0Y3VyeAorZ2V0Y3VyeQorZ2V0bWF4eAorZ2V0bWF4eQorZ2V0bW91c2UKK2dldG1vdXNlX3NwCitnZXRuc3RyCitnZXRwYXJ4CitnZXRwYXJ5CitnZXRzdHIKK2dldHdpbgorZ2V0d2luX3NwCitncm91bmRfcGFuZWwKK2hhbGZkZWxheQoraGFsZmRlbGF5X3NwCitoYXNfY29sb3JzCitoYXNfY29sb3JzX3NwCitoYXNfaWMKK2hhc19pY19zcAoraGFzX2lsCitoYXNfaWxfc3AKK2hhc19rZXkKK2hhc19rZXlfc3AKK2hhc19tb3VzZQoraGFzX21vdXNlX3NwCitoaWRlX3BhbmVsCitobGluZQoraWRjb2sKK2lkbG9rCitpbW1lZG9rCitpbmNoCitpbmNobnN0cgoraW5jaHN0cgoraW5pdF9jb2xvcgoraW5pdF9jb2xvcl9zcAoraW5pdF9wYWlyCitpbml0X3BhaXJfc3AKK2luaXRzY3IKK2lubnN0cgoraW5zY2gKK2luc2RlbGxuCitpbnNlcnRsbgoraW5zbnN0cgoraW5zc3RyCitpbnN0cgoraW50cmZsdXNoCitpbnRyZmx1c2hfc3AKK2lzX2NsZWFyZWQKK2lzX2lkY29rCitpc19pZGxvaworaXNfaW1tZWRvaworaXNfa2V5cGFkCitpc19sZWF2ZW9rCitpc19saW5ldG91Y2hlZAoraXNfbm9kZWxheQoraXNfbm90aW1lb3V0Citpc19wYWQKK2lzX3Njcm9sbG9rCitpc19zdWJ3aW4KK2lzX3N5bmNvaworaXNfdGVybV9yZXNpemVkCitpc190ZXJtX3Jlc2l6ZWRfc3AKK2lzX3dpbnRvdWNoZWQKK2lzZW5kd2luCitpc2VuZHdpbl9zcAoraXRlbV9jb3VudAoraXRlbV9kZXNjcmlwdGlvbgoraXRlbV9pbmRleAoraXRlbV9pbml0CitpdGVtX25hbWUKK2l0ZW1fb3B0cworaXRlbV9vcHRzX29mZgoraXRlbV9vcHRzX29uCitpdGVtX3Rlcm0KK2l0ZW1fdXNlcnB0cgoraXRlbV92YWx1ZQoraXRlbV92aXNpYmxlCitrZXlfZGVmaW5lZAora2V5X2RlZmluZWRfc3AKK2tleWJvdW5kCitrZXlib3VuZF9zcAora2V5bmFtZQora2V5bmFtZV9zcAora2V5b2sKK2tleW9rX3NwCitrZXlwYWQKK2tpbGxjaGFyCitraWxsY2hhcl9zcAorbGVhdmVvaworbGlua19maWVsZAorbGlua19maWVsZHR5cGUKK2xvbmduYW1lCittY3ByaW50CittY3ByaW50X3NwCittZW51X2JhY2sKK21lbnVfZHJpdmVyCittZW51X2ZvcmUKK21lbnVfZm9ybWF0CittZW51X2dyZXkKK21lbnVfaW5pdAorbWVudV9pdGVtcworbWVudV9tYXJrCittZW51X29wdHMKK21lbnVfb3B0c19vZmYKK21lbnVfb3B0c19vbgorbWVudV9wYWQKK21lbnVfcGF0dGVybgorbWVudV9yZXF1ZXN0X2J5X25hbWUKK21lbnVfcmVxdWVzdF9uYW1lCittZW51X3NwYWNpbmcKK21lbnVfc3ViCittZW51X3Rlcm0KK21lbnVfdXNlcnB0cgorbWVudV93aW4KK21ldGEKK21vdXNlX3RyYWZvCittb3VzZWludGVydmFsCittb3VzZWludGVydmFsX3NwCittb3VzZW1hc2sKK21vdXNlbWFza19zcAorbW92ZQorbW92ZV9maWVsZAorbW92ZV9wYW5lbAorbXZhZGRjaAorbXZhZGRjaG5zdHIKK212YWRkY2hzdHIKK212YWRkbnN0cgorbXZhZGRzdHIKK212Y2hnYXQKK212Y3VyCittdmN1cl9zcAorbXZkZWxjaAorbXZkZXJ3aW4KK212Z2V0Y2gKK212Z2V0bnN0cgorbXZnZXRzdHIKK212aGxpbmUKK212aW5jaAorbXZpbmNobnN0cgorbXZpbmNoc3RyCittdmlubnN0cgorbXZpbnNjaAorbXZpbnNuc3RyCittdmluc3N0cgorbXZpbnN0cgorbXZwcmludHcKK212c2NhbncKK212dmxpbmUKK212d2FkZGNoCittdndhZGRjaG5zdHIKK212d2FkZGNoc3RyCittdndhZGRuc3RyCittdndhZGRzdHIKK212d2NoZ2F0CittdndkZWxjaAorbXZ3Z2V0Y2gKK212d2dldG5zdHIKK212d2dldHN0cgorbXZ3aGxpbmUKK212d2luCittdndpbmNoCittdndpbmNobnN0cgorbXZ3aW5jaHN0cgorbXZ3aW5uc3RyCittdndpbnNjaAorbXZ3aW5zbnN0cgorbXZ3aW5zc3RyCittdndpbnN0cgorbXZ3cHJpbnR3CittdndzY2FudworbXZ3dmxpbmUKK25hcG1zCituYXBtc19zcAorbmV3X2ZpZWxkCituZXdfZmllbGR0eXBlCituZXdfZm9ybQorbmV3X2Zvcm1fc3AKK25ld19pdGVtCituZXdfbWVudQorbmV3X21lbnVfc3AKK25ld19wYWdlCituZXdfcGFuZWwKK25ld19wcmVzY3IKK25ld3BhZAorbmV3cGFkX3NwCituZXdzY3IKK25ld3Rlcm0KK25ld3Rlcm1fc3AKK25ld3dpbgorbmV3d2luX3NwCitubAorbmxfc3AKK25vY2JyZWFrCitub2NicmVha19zcAorbm9kZWxheQorbm9lY2hvCitub2VjaG9fc3AKK25vZmlsdGVyCitub2ZpbHRlcl9zcAorbm9ubAorbm9ubF9zcAorbm9xaWZsdXNoCitub3FpZmx1c2hfc3AKK25vcmF3Citub3Jhd19zcAorbm90aW1lb3V0CitudW1jb2RlcworbnVtZm5hbWVzCitudW1uYW1lcworb3NwZWVkCitvdmVybGF5CitvdmVyd3JpdGUKK3BhaXJfY29udGVudAorcGFpcl9jb250ZW50X3NwCitwYW5lbF9hYm92ZQorcGFuZWxfYmVsb3cKK3BhbmVsX2hpZGRlbgorcGFuZWxfdXNlcnB0cgorcGFuZWxfd2luZG93CitwZWNob2NoYXIKK3Bub3V0cmVmcmVzaAorcG9zX2Zvcm1fY3Vyc29yCitwb3NfbWVudV9jdXJzb3IKK3Bvc3RfZm9ybQorcG9zdF9tZW51CitwcmVmcmVzaAorcHJpbnR3CitwdXRwCitwdXRwX3NwCitwdXR3aW4KK3FpZmx1c2gKK3FpZmx1c2hfc3AKK3JhdworcmF3X3NwCityZWRyYXd3aW4KK3JlZnJlc2gKK3JlcGxhY2VfcGFuZWwKK3Jlc2V0X3Byb2dfbW9kZQorcmVzZXRfcHJvZ19tb2RlX3NwCityZXNldF9zaGVsbF9tb2RlCityZXNldF9zaGVsbF9tb2RlX3NwCityZXNldHR5CityZXNldHR5X3NwCityZXNpemVfdGVybQorcmVzaXplX3Rlcm1fc3AKK3Jlc2l6ZXRlcm0KK3Jlc2l6ZXRlcm1fc3AKK3Jlc3RhcnR0ZXJtCityZXN0YXJ0dGVybV9zcAorcmlwb2ZmbGluZQorcmlwb2ZmbGluZV9zcAorc2F2ZXR0eQorc2F2ZXR0eV9zcAorc2NhbGVfZm9ybQorc2NhbGVfbWVudQorc2NhbncKK3Njcl9kdW1wCitzY3JfaW5pdAorc2NyX2luaXRfc3AKK3Njcl9yZXN0b3JlCitzY3JfcmVzdG9yZV9zcAorc2NyX3NldAorc2NyX3NldF9zcAorc2NybAorc2Nyb2xsCitzY3JvbGxvaworc2V0X2N1cnJlbnRfZmllbGQKK3NldF9jdXJyZW50X2l0ZW0KK3NldF9jdXJ0ZXJtCitzZXRfY3VydGVybV9zcAorc2V0X2VzY2RlbGF5CitzZXRfZXNjZGVsYXlfc3AKK3NldF9maWVsZF9iYWNrCitzZXRfZmllbGRfYnVmZmVyCitzZXRfZmllbGRfZm9yZQorc2V0X2ZpZWxkX2luaXQKK3NldF9maWVsZF9qdXN0CitzZXRfZmllbGRfb3B0cworc2V0X2ZpZWxkX3BhZAorc2V0X2ZpZWxkX3N0YXR1cworc2V0X2ZpZWxkX3Rlcm0KK3NldF9maWVsZF90eXBlCitzZXRfZmllbGRfdXNlcnB0cgorc2V0X2ZpZWxkdHlwZV9hcmcKK3NldF9maWVsZHR5cGVfY2hvaWNlCitzZXRfZm9ybV9maWVsZHMKK3NldF9mb3JtX2luaXQKK3NldF9mb3JtX29wdHMKK3NldF9mb3JtX3BhZ2UKK3NldF9mb3JtX3N1Ygorc2V0X2Zvcm1fdGVybQorc2V0X2Zvcm1fdXNlcnB0cgorc2V0X2Zvcm1fd2luCitzZXRfaXRlbV9pbml0CitzZXRfaXRlbV9vcHRzCitzZXRfaXRlbV90ZXJtCitzZXRfaXRlbV91c2VycHRyCitzZXRfaXRlbV92YWx1ZQorc2V0X21heF9maWVsZAorc2V0X21lbnVfYmFjaworc2V0X21lbnVfZm9yZQorc2V0X21lbnVfZm9ybWF0CitzZXRfbWVudV9ncmV5CitzZXRfbWVudV9pbml0CitzZXRfbWVudV9pdGVtcworc2V0X21lbnVfbWFyaworc2V0X21lbnVfb3B0cworc2V0X21lbnVfcGFkCitzZXRfbWVudV9wYXR0ZXJuCitzZXRfbWVudV9zcGFjaW5nCitzZXRfbWVudV9zdWIKK3NldF9tZW51X3Rlcm0KK3NldF9tZW51X3VzZXJwdHIKK3NldF9tZW51X3dpbgorc2V0X25ld19wYWdlCitzZXRfcGFuZWxfdXNlcnB0cgorc2V0X3RhYnNpemUKK3NldF90YWJzaXplX3NwCitzZXRfdGVybQorc2V0X3RvcF9yb3cKK3NldHNjcnJlZworc2V0dXB0ZXJtCitzaG93X3BhbmVsCitzbGtfYXR0cgorc2xrX2F0dHJfb2ZmCitzbGtfYXR0cl9vbgorc2xrX2F0dHJfc2V0CitzbGtfYXR0cl9zZXRfc3AKK3Nsa19hdHRyX3NwCitzbGtfYXR0cm9mZgorc2xrX2F0dHJvZmZfc3AKK3Nsa19hdHRyb24KK3Nsa19hdHRyb25fc3AKK3Nsa19hdHRyc2V0CitzbGtfYXR0cnNldF9zcAorc2xrX2NsZWFyCitzbGtfY2xlYXJfc3AKK3Nsa19jb2xvcgorc2xrX2NvbG9yX3NwCitzbGtfaW5pdAorc2xrX2luaXRfc3AKK3Nsa19sYWJlbAorc2xrX2xhYmVsX3NwCitzbGtfbm91dHJlZnJlc2gKK3Nsa19ub3V0cmVmcmVzaF9zcAorc2xrX3JlZnJlc2gKK3Nsa19yZWZyZXNoX3NwCitzbGtfcmVzdG9yZQorc2xrX3Jlc3RvcmVfc3AKK3Nsa19zZXQKK3Nsa19zZXRfc3AKK3Nsa190b3VjaAorc2xrX3RvdWNoX3NwCitzdGFuZGVuZAorc3RhbmRvdXQKK3N0YXJ0X2NvbG9yCitzdGFydF9jb2xvcl9zcAorc3Rkc2NyCitzdHJjb2Rlcworc3RyZm5hbWVzCitzdHJuYW1lcworc3VicGFkCitzdWJ3aW4KK3N5bmNvawordGVybWF0dHJzCit0ZXJtYXR0cnNfc3AKK3Rlcm1uYW1lCit0ZXJtbmFtZV9zcAordGdldGVudAordGdldGVudF9zcAordGdldGZsYWcKK3RnZXRmbGFnX3NwCit0Z2V0bnVtCit0Z2V0bnVtX3NwCit0Z2V0c3RyCit0Z2V0c3RyX3NwCit0Z290bwordGlnZXRmbGFnCit0aWdldGZsYWdfc3AKK3RpZ2V0bnVtCit0aWdldG51bV9zcAordGlnZXRzdHIKK3RpZ2V0c3RyX3NwCit0aW1lb3V0Cit0aXBhcm0KK3RvcF9wYW5lbAordG9wX3JvdwordG91Y2hsaW5lCit0b3VjaHdpbgordHBhcm0KK3RwdXRzCit0cHV0c19zcAordHJhY2UKK3R0eXR5cGUKK3R5cGVhaGVhZAordHlwZWFoZWFkX3NwCit1bmN0cmwKK3VuY3RybF9zcAordW5nZXRjaAordW5nZXRjaF9zcAordW5nZXRtb3VzZQordW5nZXRtb3VzZV9zcAordW5wb3N0X2Zvcm0KK3VucG9zdF9tZW51Cit1bnRvdWNod2luCit1cGRhdGVfcGFuZWxzCit1cGRhdGVfcGFuZWxzX3NwCit1c2VfZGVmYXVsdF9jb2xvcnMKK3VzZV9kZWZhdWx0X2NvbG9yc19zcAordXNlX2VudgordXNlX2Vudl9zcAordXNlX2V4dGVuZGVkX25hbWVzCit1c2VfbGVnYWN5X2NvZGluZwordXNlX2xlZ2FjeV9jb2Rpbmdfc3AKK3VzZV9zY3JlZW4KK3VzZV90aW9jdGwKK3VzZV90aW9jdGxfc3AKK3VzZV93aW5kb3cKK3ZpZF9hdHRyCit2aWRhdHRyCit2aWRhdHRyX3NwCit2aWRwdXRzCit2aWRwdXRzX3NwCit2bGluZQordndfcHJpbnR3Cit2d19zY2FudwordndwcmludHcKK3Z3c2NhbncKK3dhZGRjaAord2FkZGNobnN0cgord2FkZGNoc3RyCit3YWRkbnN0cgord2FkZHN0cgord2F0dHJfZ2V0Cit3YXR0cl9vZmYKK3dhdHRyX29uCit3YXR0cl9zZXQKK3dhdHRyb2ZmCit3YXR0cm9uCit3YXR0cnNldAord2JrZ2QKK3dia2dkc2V0Cit3Ym9yZGVyCit3Y2hnYXQKK3djbGVhcgord2NscnRvYm90Cit3Y2xydG9lb2wKK3djb2xvcl9zZXQKK3djdXJzeW5jdXAKK3dkZWxjaAord2RlbGV0ZWxuCit3ZWNob2NoYXIKK3dlbmNsb3NlCit3ZXJhc2UKK3dnZXRjaAord2dldGNoX2V2ZW50cword2dldGRlbGF5Cit3Z2V0bnN0cgord2dldG5zdHJfZXZlbnRzCit3Z2V0cGFyZW50Cit3Z2V0c2NycmVnCit3Z2V0c3RyCit3aGxpbmUKK3dpbmNoCit3aW5jaG5zdHIKK3dpbmNoc3RyCit3aW5uc3RyCit3aW5zY2gKK3dpbnNkZWxsbgord2luc2VydGxuCit3aW5zbnN0cgord2luc3N0cgord2luc3RyCit3bW91c2VfdHJhZm8KK3dtb3ZlCit3bm91dHJlZnJlc2gKK3dwcmludHcKK3dyZWRyYXdsbgord3JlZnJlc2gKK3dyZXNpemUKK3dzY2Fudword3NjcmwKK3dzZXRzY3JyZWcKK3dzdGFuZGVuZAord3N0YW5kb3V0Cit3c3luY2Rvd24KK3dzeW5jdXAKK3d0aW1lb3V0Cit3dG91Y2hsbgord3ZsaW5lCmRpZmYgLS1naXQgYS9wYWNrYWdlL25jdXJzZXN0Lm1hcCBiL3BhY2thZ2UvbmN1cnNlc3QubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NmI4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL25jdXJzZXN0Lm1hcApAQCAtMCwwICsxLDExMTEgQEAKKyMgJElkOiBuY3Vyc2VzdC5tYXAsdiAxLjMwIDIwMTUvMDcvMTEgMTM6MDE6MTAgdG9tIEV4cCAkCisjIHNjcmlwdCBmb3Igc2hhcmVkIGxpYnJhcnkgc3ltYm9sLXZlcnNpb25pbmcgdXNpbmcgbGQKKyMKKyMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbmN1LW1hcHN5bXMKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNy4yMDA4MTEwMikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOC4yMDExMDIyNikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTEwNDA0KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxNTA1MzApCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjIENvbmZpZ3VyZSBvcHRpb25zICg2LjAuY3VycmVudCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKworTkNVUlNFU19USUNfNS4wLjE5OTkxMDIzIHsKKwlnbG9iYWw6CisJCV9uY19jYXBjbXA7CisJCV9uY19jaGVja190ZXJtdHlwZTsKKwkJX25jX2VudHJ5X21hdGNoOworCQlfbmNfaW5mb3RvY2FwOworCQlfbmNfcmVhZF9lbnRyeV9zb3VyY2U7CisJCV9uY19yZXNldF9pbnB1dDsKKwkJX25jX3Jlc29sdmVfdXNlczsKKwkJX25jX3NldF93cml0ZWRpcjsKKwkJX25jX3N5bnRheDsKKwkJX25jX3RpY19leHBhbmQ7CisJCV9uY190aWNfd3JpdHRlbjsKKwkJX25jX3RyYW5zX3N0cmluZzsKKwkJX25jX3dyaXRlX2VudHJ5OworCWxvY2FsOgorCQlfbmNfY2FwdG9pbmZvOworCQlfbmNfY29tbWVudF9lbmQ7CisJCV9uY19jb21tZW50X3N0YXJ0OworCQlfbmNfY29weV9lbnRyeTsKKwkJX25jX2N1cnJfZmlsZV9wb3M7CisJCV9uY19jdXJyX3Rva2VuOworCQlfbmNfZ2V0X3Rva2VuOworCQlfbmNfaW5pdF9lbnRyeTsKKwkJX25jX21lcmdlX2VudHJ5OworCQlfbmNfcGFuaWNfbW9kZTsKKwkJX25jX3BhcnNlX2VudHJ5OworCQlfbmNfcHVzaF90b2tlbjsKKwkJX25jX3NhdmVfc3RyOworCQlfbmNfc3RhcnRfbGluZTsKKwkJX25jX3dyYXBfZW50cnk7Cit9OworCitOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDggeworCWdsb2JhbDoKKwkJX25jX2Rpc2FibGVfcGVyaW9kOworfSBOQ1VSU0VTX1RJQ181LjAuMTk5OTEwMjM7CisKK05DVVJTRVNfVElDXzUuNS4yMDA1MTAxMCB7CisJZ2xvYmFsOgorCQlfbmNfYWxsb2NfZW50cnlfbGVha3M7CisJCV9uY19jYXB0b2luZm9fbGVha3M7CisJCV9uY19jaGVja190ZXJtdHlwZTI7CisJCV9uY19jb21wX3NjYW5fbGVha3M7CisJCV9uY19yZXNvbHZlX3VzZXMyOworfSBOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDg7CisKK05DVVJTRVNfVElDXzUuNy4yMDA4MTEwMiB7CisJZ2xvYmFsOgorCQlfbmNfZnJlZV90aWM7CisJbG9jYWw6CisJCV9uY19jb21wX2NhcHRhYl9sZWFrczsKKwkJX25jX2xlYWtzX3RpYzsKK30gTkNVUlNFU19USUNfNS41LjIwMDUxMDEwOworCitOQ1VSU0VTX1RJQ181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJX25jX3N0cmljdF9ic2Q7Cit9IE5DVVJTRVNfVElDXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU19USU5GT181LjAuMTk5OTEwMjMgeworCWdsb2JhbDoKKwkJQkM7CisJCVBDOworCQlTUDsKKwkJVVA7CisJCV9uY19hY2Nlc3M7CisJCV9uY19hZGRfdG9fdHJ5OworCQlfbmNfY29weV90ZXJtdHlwZTsKKwkJX25jX2N1cnJfY29sOworCQlfbmNfY3Vycl9saW5lOworCQlfbmNfZG9hbGxvYzsKKwkJX25jX2Vycl9hYm9ydDsKKwkJX25jX2ZhbGxiYWNrOworCQlfbmNfZmluZF9lbnRyeTsKKwkJX25jX2ZpbmRfdHlwZV9lbnRyeTsKKwkJX25jX2ZpcnN0X25hbWU7CisJCV9uY19mcmVlX2VudHJpZXM7CisJCV9uY19mcmVlX3Rlcm10eXBlOworCQlfbmNfZnJlZV90cGFybTsKKwkJX25jX2ZyZWVhbGw7CisJCV9uY19nZXRfaGFzaF90YWJsZTsKKwkJX25jX2dldF90YWJsZTsKKwkJX25jX2dldF90dHlfbW9kZTsKKwkJX25jX2dldF90eXBlOworCQlfbmNfZ2V0ZW52X251bTsKKwkJX25jX2hlYWQ7CisJCV9uY19ob21lX3Rlcm1pbmZvOworCQlfbmNfaW5pdF9hY3M7CisJCV9uY19rZWVwX3RpY19kaXI7CisJCV9uY19rZXlwYWQ7CisJCV9uY19uYW1lX21hdGNoOworCQlfbmNfb3V0Y2g7CisJCV9uY19yZWFkX2VudHJ5OworCQlfbmNfcmVhZF9maWxlX2VudHJ5OworCQlfbmNfc2NyZWVuX2NoYWluOworCQlfbmNfc2V0X2J1ZmZlcjsKKwkJX25jX3NldF9zb3VyY2U7CisJCV9uY19zZXRfdHR5X21vZGU7CisJCV9uY19zZXRfdHlwZTsKKwkJX25jX3N1cHByZXNzX3dhcm5pbmdzOworCQlfbmNfc3lzZXJyX2Fib3J0OworCQlfbmNfdGFpbDsKKwkJX25jX3RpY19kaXI7CisJCV9uY190aW1lZF93YWl0OworCQlfbmNfdHJhY2VfYnVmOworCQlfbmNfdHJhY2luZzsKKwkJX25jX3VwZGF0ZV9zY3JlZW5zaXplOworCQlfbmNfdmlzYnVmOworCQlfbmNfdmlzYnVmMjsKKwkJX25jX3dhcm5pbmc7CisJCV90cmFjZWNoYXI7CisJCWJhdWRyYXRlOworCQljYnJlYWs7CisJCWN1cnNfc2V0OworCQljdXJzZXNfdmVyc2lvbjsKKwkJZGVmX3Byb2dfbW9kZTsKKwkJZGVmX3NoZWxsX21vZGU7CisJCWRlZmluZV9rZXk7CisJCWRlbF9jdXJ0ZXJtOworCQlkZWxheV9vdXRwdXQ7CisJCWVyYXNlY2hhcjsKKwkJZmx1c2hpbnA7CisJCWhhbGZkZWxheTsKKwkJaGFzX2ljOworCQloYXNfaWw7CisJCWhhc19rZXk7CisJCWlkY29rOworCQlpZGxvazsKKwkJaW50cmZsdXNoOworCQlrZXlib3VuZDsKKwkJa2V5bmFtZTsKKwkJa2V5b2s7CisJCWtleXBhZDsKKwkJa2lsbGNoYXI7CisJCWxvbmduYW1lOworCQltZXRhOworCQluYXBtczsKKwkJbm9jYnJlYWs7CisJCW5vZGVsYXk7CisJCW5vcWlmbHVzaDsKKwkJbm9yYXc7CisJCW5vdGltZW91dDsKKwkJb3NwZWVkOworCQlwdXRwOworCQlxaWZsdXNoOworCQlyYXc7CisJCXJlc2V0X3Byb2dfbW9kZTsKKwkJcmVzZXRfc2hlbGxfbW9kZTsKKwkJcmVzZXR0eTsKKwkJc2F2ZXR0eTsKKwkJc2V0X2N1cnRlcm07CisJCXNldHVwdGVybTsKKwkJdGVybW5hbWU7CisJCXRnZXRlbnQ7CisJCXRnZXRmbGFnOworCQl0Z2V0bnVtOworCQl0Z2V0c3RyOworCQl0Z290bzsKKwkJdGlnZXRmbGFnOworCQl0aWdldG51bTsKKwkJdGlnZXRzdHI7CisJCXRwYXJtOworCQl0cHV0czsKKwkJdHJhY2U7CisJCXR5cGVhaGVhZDsKKwkJdW5jdHJsOworCQl1c2VfZW52OworCQl3dGltZW91dDsKKwlsb2NhbDoKKwkJX25jX2JhdWRyYXRlOworCQlfbmNfZXhwYW5kX3RyeTsKKwkJX25jX2luaXRfa2V5dHJ5OworCQlfbmNfbnVsbHNfc2VudDsKKwkJX25jX29zcGVlZDsKKwkJX25jX3JlYWRfdGVybWNhcDsKKwkJX25jX3JlYWRfdGVybWNhcF9lbnRyeTsKKwkJX25jX3JlbW92ZV9rZXk7CisJCV9uY19yZW1vdmVfc3RyaW5nOworCQlfbmNfdHJhY2VfdHJpZXM7CisJCV9uY190cmFjZWJpdHM7Cit9OworCitOQ1VSU0VTX1RJTkZPXzUuMS4yMDAwMDcwOCB7CisJZ2xvYmFsOgorCQlfbmNfYWxpZ25fdGVybXR5cGU7CisJCV9uY19mbHVzaDsKKwkJX25jX3RpbmZvX2ZrZXlzOworCQlfbmNfdXNlcl9kZWZpbmFibGU7CisJCXVzZV9leHRlbmRlZF9uYW1lczsKK30gTkNVUlNFU19USU5GT181LjAuMTk5OTEwMjM7CisKK05DVVJTRVNfVElORk9fNS4yLjIwMDAxMDIxIHsKKwlnbG9iYWw6CisJCV9uY19iYXNlbmFtZTsKKwkJX25jX2Vudl9hY2Nlc3M7CisJCV9uY19zYWZlX3N0cmNhdDsKKwkJX25jX3NhZmVfc3RyY3B5OworCQlfbmNfc3RyX2NvcHk7CisJCV9uY19zdHJfaW5pdDsKKwkJX25jX3N0cl9udWxsOworfSBOQ1VSU0VTX1RJTkZPXzUuMS4yMDAwMDcwODsKKworTkNVUlNFU19USU5GT181LjMuMjAwMjEwMTkgeworCWdsb2JhbDoKKwkJX25jX3Jvb3RuYW1lOworCQlfbmNfdHBhcm1fZXJyOworCQlfbmNfdmlzYnVmbjsKK30gTkNVUlNFU19USU5GT181LjIuMjAwMDEwMjE7CisKK05DVVJTRVNfVElORk9fNS40LjIwMDQwMjA4IHsKKwlnbG9iYWw6CisJCV9uY19nZXRfbG9jYWxlOworCQlfbmNfbG9jYWxlX2JyZWFrc19hY3M7CisJCV9uY19wYXRobGFzdDsKKwkJX25jX3JldHJhY2VfYXR0cl90OworCQlfbmNfcmV0cmFjZV9ib29sOworCQlfbmNfcmV0cmFjZV9jaHR5cGU7CisJCV9uY19yZXRyYWNlX2ludDsKKwkJX25jX3JldHJhY2VfcHRyOworCQlfbmNfcmV0cmFjZV9zcDsKKwkJX25jX3JldHJhY2VfdW5zaWduZWQ7CisJCV9uY19yZXRyYWNlX3dpbjsKKwkJX25jX3RwYXJtX2FuYWx5emU7CisJCV9uY190cmFjZV9idWZjYXQ7CisJCV9uY191bmljb2RlX2xvY2FsZTsKKwkJX3RyYWNlYXR0cjsKKwkJX3RyYWNlYXR0cjI7CisJCV90cmFjZWNodHlwZTsKKwkJX3RyYWNlY2h0eXBlMjsKKwkJX3RyYWNlZjsKKwkJa2V5X2RlZmluZWQ7CisJbG9jYWw6CisJCV9uY19hbHRjaGFyc2V0X25hbWU7CisJCV9uY190cmFjZV90dHltb2RlOworfSBOQ1VSU0VTX1RJTkZPXzUuMy4yMDAyMTAxOTsKKworTkNVUlNFU19USU5GT181LjUuMjAwNTEwMTAgeworCWdsb2JhbDoKKwkJX25jX2dldF9zb3VyY2U7CisJCV9uY19yZXRyYWNlX2NwdHI7CisJCV9uY19yZXRyYWNlX2N2b2lkX3B0cjsKKwkJX25jX3JldHJhY2Vfdm9pZF9wdHI7CisJCV9uY19zZXR1cHRlcm07CisJCV9uY190cmltX3NncjA7CisJbG9jYWw6CisJCV9uY19kZWxpbmtfZW50cnk7CisJCV9uY19mcmVlX2VudHJ5OworfSBOQ1VSU0VTX1RJTkZPXzUuNC4yMDA0MDIwODsKKworTkNVUlNFU19USU5GT181LjYuMjAwNjEyMTcgeworCWdsb2JhbDoKKwkJX25jX2RiX2Nsb3NlOworCQlfbmNfZGJfZmlyc3Q7CisJCV9uY19kYl9oYXZlX2RhdGE7CisJCV9uY19kYl9uZXh0OworCQlfbmNfZGJfb3BlbjsKKwkJX25jX2RiX3B1dDsKKwkJX25jX2V2ZW50bGlzdF90aW1lb3V0OworCQlfbmNfZmlyc3RfZGI7CisJCV9uY19oYW5kbGVfc2lnd2luY2g7CisJCV9uY19pc19hYnNfcGF0aDsKKwkJX25jX2lzX2Rpcl9wYXRoOworCQlfbmNfaXNfZmlsZV9wYXRoOworCQlfbmNfa2V5bmFtZV9sZWFrczsKKwkJX25jX2xhc3RfZGI7CisJCV9uY19uZXh0X2RiOworCQlfbmNfcmVhZF90ZXJtdHlwZTsKKwkJX25jX3RnZXRlbnRfbGVha3M7CisJCV9uY192aXNjYnVmOworCWxvY2FsOgorCQlfbmNfZGJfZ2V0OworCQlfbmNfZGJfaGF2ZV9pbmRleDsKKwkJX25jX2hhc2hlZF9kYjsKKwkJX25jX3Zpc2NidWYyOworfSBOQ1VSU0VTX1RJTkZPXzUuNS4yMDA1MTAxMDsKKworTkNVUlNFU19USU5GT181LjcuMjAwODExMDIgeworCWdsb2JhbDoKKwkJX25jX0NPTFM7CisJCV9uY19MSU5FUzsKKwkJX25jX1RBQlNJWkU7CisJCV9uY19fbmNfb3V0Y2hhcnM7CisJCV9uY19hY3NfbWFwOworCQlfbmNfYm9vbGNvZGVzOworCQlfbmNfYm9vbGZuYW1lczsKKwkJX25jX2Jvb2xuYW1lczsKKwkJX25jX2NvZGVzX2xlYWtzOworCQlfbmNfY291bnRfb3V0Y2hhcnM7CisJCV9uY19jdXJfdGVybTsKKwkJX25jX2N1cnNjcjsKKwkJX25jX2ZyZWVfdGluZm87CisJCV9uY19nZXRfYWxpYXNfdGFibGU7CisJCV9uY19nZXRfc2NyZWVuc2l6ZTsKKwkJX25jX2dsb2JhbHM7CisJCV9uY19pbml0X3B0aHJlYWRzOworCQlfbmNfbGVha3NfdGluZm87CisJCV9uY19sb2NrZWRfdHJhY2VmOworCQlfbmNfbXV0ZXhfbG9jazsKKwkJX25jX211dGV4X3RyeWxvY2s7CisJCV9uY19tdXRleF91bmxvY2s7CisJCV9uY19uYW1lc19sZWFrczsKKwkJX25jX25ld3NjcjsKKwkJX25jX251bWNvZGVzOworCQlfbmNfbnVtZm5hbWVzOworCQlfbmNfbnVtbmFtZXM7CisJCV9uY19wcmVzY3JlZW47CisJCV9uY19wdHJfQ29sczsKKwkJX25jX3B0cl9MaW5lczsKKwkJX25jX3NjcmVlbl9vZjsKKwkJX25jX3NldF9ub19wYWRkaW5nOworCQlfbmNfc2V0X3RwdXRzX3RyYWNlOworCQlfbmNfc3Rkc2NyOworCQlfbmNfc3RyY29kZXM7CisJCV9uY19zdHJmbmFtZXM7CisJCV9uY19zdHJuYW1lczsKKwkJX25jX3RyYWNlY2hhcjsKKwkJX25jX3R0eXR5cGU7CisJCV9uY191c2VfdHJhY2VmOworCQlzZXRfdGFic2l6ZTsKKwlsb2NhbDoKKwkJX25jX19uY190cHV0c190cmFjZTsKKwkJX25jX2tleW5hbWU7CisJCV9uY19tdXRleF9pbml0OworCQlfbmNfdW5jdHJsOworfSBOQ1VSU0VTX1RJTkZPXzUuNi4yMDA2MTIxNzsKKworTkNVUlNFU19USU5GT181LjguMjAxMTAyMjYgeworCWdsb2JhbDoKKwkJX25jX2ZsdXNoX3NwOworCQlfbmNfZ2V0X3R0eV9tb2RlX3NwOworCQlfbmNfaW5pdF9hY3Nfc3A7CisJCV9uY19vdXRjX3dyYXBwZXI7CisJCV9uY19vdXRjaF9zcDsKKwkJX25jX3B1dHA7CisJCV9uY19wdXRwX2ZsdXNoOworCQlfbmNfcHV0cF9mbHVzaF9zcDsKKwkJX25jX3B1dHBfc3A7CisJCV9uY19yZXRyYWNlX2ludF9hdHRyX3Q7CisJCV9uY19zZXRfYnVmZmVyX3NwOworCQlfbmNfc2V0X3R0eV9tb2RlX3NwOworCQlfbmNfc2lncHJvY21hc2s7CisJCWJhdWRyYXRlX3NwOworCQljYnJlYWtfc3A7CisJCWN1cnNfc2V0X3NwOworCQlkZWZfcHJvZ19tb2RlX3NwOworCQlkZWZfc2hlbGxfbW9kZV9zcDsKKwkJZGVmaW5lX2tleV9zcDsKKwkJZGVsX2N1cnRlcm1fc3A7CisJCWRlbGF5X291dHB1dF9zcDsKKwkJZXJhc2VjaGFyX3NwOworCQlmbHVzaGlucF9zcDsKKwkJaGFsZmRlbGF5X3NwOworCQloYXNfaWNfc3A7CisJCWhhc19pbF9zcDsKKwkJaGFzX2tleV9zcDsKKwkJaW50cmZsdXNoX3NwOworCQlrZXlfZGVmaW5lZF9zcDsKKwkJa2V5Ym91bmRfc3A7CisJCWtleW5hbWVfc3A7CisJCWtleW9rX3NwOworCQlraWxsY2hhcl9zcDsKKwkJbG9uZ25hbWVfc3A7CisJCW5hcG1zX3NwOworCQluZXdfcHJlc2NyOworCQlub2NicmVha19zcDsKKwkJbm9xaWZsdXNoX3NwOworCQlub3Jhd19zcDsKKwkJcHV0cF9zcDsKKwkJcWlmbHVzaF9zcDsKKwkJcmF3X3NwOworCQlyZXNldF9wcm9nX21vZGVfc3A7CisJCXJlc2V0X3NoZWxsX21vZGVfc3A7CisJCXJlc2V0dHlfc3A7CisJCXNhdmV0dHlfc3A7CisJCXNldF9jdXJ0ZXJtX3NwOworCQlzZXRfdGFic2l6ZV9zcDsKKwkJdGVybW5hbWVfc3A7CisJCXRnZXRlbnRfc3A7CisJCXRnZXRmbGFnX3NwOworCQl0Z2V0bnVtX3NwOworCQl0Z2V0c3RyX3NwOworCQl0aWdldGZsYWdfc3A7CisJCXRpZ2V0bnVtX3NwOworCQl0aWdldHN0cl9zcDsKKwkJdGlwYXJtOworCQl0cHV0c19zcDsKKwkJdHlwZWFoZWFkX3NwOworCQl1bmN0cmxfc3A7CisJCXVzZV9lbnZfc3A7CisJbG9jYWw6CisJCV9uY19nZXRfY3VyX3Rlcm07CisJCV9uY19nZXRfY3VyX3Rlcm1fc3A7CisJCV9uY19nZXRfaGFzaF9pbmZvOworCQlfbmNfcHRyX1RhYnNpemU7CisJCV9uY19yZXRyYWNlX2NoYXI7CisJCV9uY19zZXR1cF90aW5mbzsKKwkJX25jX3RpbmZvX2NtZGNoOworfSBOQ1VSU0VTX1RJTkZPXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU19USU5GT181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJX25jX2luaXRfdGVybXR5cGU7CisJCV9uY19wdXRjaGFyOworCQlfbmNfcHV0Y2hhcl9zcDsKKwkJdXNlX3Rpb2N0bDsKKwkJdXNlX3Rpb2N0bF9zcDsKKwlsb2NhbDoKKwkJXyo7CisJCV9uY19jb21wX2Vycm9yX2xlYWtzOworCQlfbmNfZGJfaXRlcmF0b3JfbGVha3M7CisJCV9uY19zZXRlbnZfbnVtOworfSBOQ1VSU0VTX1RJTkZPXzUuOC4yMDExMDIyNjsKKworTkNVUlNFU1RfNS43LjIwMDgxMTAyIHsKKwlnbG9iYWw6CisJCUNPTE9SX1BBSVI7CisJCVBBSVJfTlVNQkVSOworCQlUWVBFX0FMTlVNOworCQlUWVBFX0FMUEhBOworCQlUWVBFX0VOVU07CisJCVRZUEVfSU5URUdFUjsKKwkJVFlQRV9JUFY0OworCQlUWVBFX05VTUVSSUM7CisJCVRZUEVfUkVHRVhQOworCQlfbmNfQ09MT1JTOworCQlfbmNfQ09MT1JfUEFJUlM7CisJCV9uY19EZWZhdWx0X0ZpZWxkOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfRGVmYXVsdF9Gb3JtOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfRVNDREVMQVk7CisJCV9uY19mcmVlX2FuZF9leGl0OworCQlfbmNfaGFzX21vdXNlOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfb3B0aW1pemVfZW5hYmxlOworCQlfbmNfcGFuZWxob29rOworCQlfbmNfcmlwb2ZmbGluZTsKKwkJYWRkY2g7CisJCWFkZGNobnN0cjsKKwkJYWRkY2hzdHI7CisJCWFkZG5zdHI7CisJCWFkZHN0cjsKKwkJYXNzdW1lX2RlZmF1bHRfY29sb3JzOworCQlhdHRyX2dldDsKKwkJYXR0cl9vZmY7CisJCWF0dHJfb247CisJCWF0dHJfc2V0OworCQlhdHRyb2ZmOworCQlhdHRyb247CisJCWF0dHJzZXQ7CisJCWJlZXA7CisJCWJrZ2Q7CisJCWJrZ2RzZXQ7CisJCWJvcmRlcjsKKwkJYm90dG9tX3BhbmVsOworCQlib3g7CisJCWNhbl9jaGFuZ2VfY29sb3I7CisJCWNoZ2F0OworCQljbGVhcjsKKwkJY2xlYXJvazsKKwkJY2xydG9ib3Q7CisJCWNscnRvZW9sOworCQljb2xvcl9jb250ZW50OworCQljb2xvcl9zZXQ7CisJCWNvcHl3aW47CisJCWN1cnJlbnRfZmllbGQ7CisJCWN1cnJlbnRfaXRlbTsKKwkJZGF0YV9haGVhZDsKKwkJZGF0YV9iZWhpbmQ7CisJCWRlbF9wYW5lbDsKKwkJZGVsY2g7CisJCWRlbGV0ZWxuOworCQlkZWxzY3JlZW47CisJCWRlbHdpbjsKKwkJZGVyd2luOworCQlkb3VwZGF0ZTsKKwkJZHVwX2ZpZWxkOworCQlkdXB3aW47CisJCWR5bmFtaWNfZmllbGRfaW5mbzsKKwkJZWNobzsKKwkJZWNob2NoYXI7CisJCWVuZHdpbjsKKwkJZXJhc2U7CisJCWZpZWxkX2FyZzsKKwkJZmllbGRfYmFjazsKKwkJZmllbGRfYnVmZmVyOworCQlmaWVsZF9jb3VudDsKKwkJZmllbGRfZm9yZTsKKwkJZmllbGRfaW5kZXg7CisJCWZpZWxkX2luZm87CisJCWZpZWxkX2luaXQ7CisJCWZpZWxkX2p1c3Q7CisJCWZpZWxkX29wdHM7CisJCWZpZWxkX29wdHNfb2ZmOworCQlmaWVsZF9vcHRzX29uOworCQlmaWVsZF9wYWQ7CisJCWZpZWxkX3N0YXR1czsKKwkJZmllbGRfdGVybTsKKwkJZmllbGRfdHlwZTsKKwkJZmllbGRfdXNlcnB0cjsKKwkJZmlsdGVyOworCQlmbGFzaDsKKwkJZm9ybV9kcml2ZXI7CisJCWZvcm1fZmllbGRzOworCQlmb3JtX2luaXQ7CisJCWZvcm1fb3B0czsKKwkJZm9ybV9vcHRzX29mZjsKKwkJZm9ybV9vcHRzX29uOworCQlmb3JtX3BhZ2U7CisJCWZvcm1fcmVxdWVzdF9ieV9uYW1lOworCQlmb3JtX3JlcXVlc3RfbmFtZTsKKwkJZm9ybV9zdWI7CisJCWZvcm1fdGVybTsKKwkJZm9ybV91c2VycHRyOworCQlmb3JtX3dpbjsKKwkJZnJlZV9maWVsZDsKKwkJZnJlZV9maWVsZHR5cGU7CisJCWZyZWVfZm9ybTsKKwkJZnJlZV9pdGVtOworCQlmcmVlX21lbnU7CisJCWdldGF0dHJzOworCQlnZXRiZWd4OworCQlnZXRiZWd5OworCQlnZXRia2dkOworCQlnZXRjaDsKKwkJZ2V0Y3VyeDsKKwkJZ2V0Y3VyeTsKKwkJZ2V0bWF4eDsKKwkJZ2V0bWF4eTsKKwkJZ2V0bW91c2U7CisJCWdldG5zdHI7CisJCWdldHBhcng7CisJCWdldHBhcnk7CisJCWdldHN0cjsKKwkJZ2V0d2luOworCQloYXNfY29sb3JzOworCQloaWRlX3BhbmVsOworCQlobGluZTsKKwkJaW1tZWRvazsKKwkJaW5jaDsKKwkJaW5jaG5zdHI7CisJCWluY2hzdHI7CisJCWluaXRfY29sb3I7CisJCWluaXRfcGFpcjsKKwkJaW5pdHNjcjsKKwkJaW5uc3RyOworCQlpbnNjaDsKKwkJaW5zZGVsbG47CisJCWluc2VydGxuOworCQlpbnNuc3RyOworCQlpbnNzdHI7CisJCWluc3RyOworCQlpc19jbGVhcmVkOworCQlpc19pZGNvazsKKwkJaXNfaWRsb2s7CisJCWlzX2ltbWVkb2s7CisJCWlzX2tleXBhZDsKKwkJaXNfbGVhdmVvazsKKwkJaXNfbGluZXRvdWNoZWQ7CisJCWlzX25vZGVsYXk7CisJCWlzX25vdGltZW91dDsKKwkJaXNfc2Nyb2xsb2s7CisJCWlzX3N5bmNvazsKKwkJaXNfdGVybV9yZXNpemVkOworCQlpc193aW50b3VjaGVkOworCQlpc2VuZHdpbjsKKwkJaXRlbV9jb3VudDsKKwkJaXRlbV9kZXNjcmlwdGlvbjsKKwkJaXRlbV9pbmRleDsKKwkJaXRlbV9pbml0OworCQlpdGVtX25hbWU7CisJCWl0ZW1fb3B0czsKKwkJaXRlbV9vcHRzX29mZjsKKwkJaXRlbV9vcHRzX29uOworCQlpdGVtX3Rlcm07CisJCWl0ZW1fdXNlcnB0cjsKKwkJaXRlbV92YWx1ZTsKKwkJaXRlbV92aXNpYmxlOworCQlsZWF2ZW9rOworCQlsaW5rX2ZpZWxkOworCQlsaW5rX2ZpZWxkdHlwZTsKKwkJbWNwcmludDsKKwkJbWVudV9iYWNrOworCQltZW51X2RyaXZlcjsKKwkJbWVudV9mb3JlOworCQltZW51X2Zvcm1hdDsKKwkJbWVudV9ncmV5OworCQltZW51X2luaXQ7CisJCW1lbnVfaXRlbXM7CisJCW1lbnVfbWFyazsKKwkJbWVudV9vcHRzOworCQltZW51X29wdHNfb2ZmOworCQltZW51X29wdHNfb247CisJCW1lbnVfcGFkOworCQltZW51X3BhdHRlcm47CisJCW1lbnVfcmVxdWVzdF9ieV9uYW1lOworCQltZW51X3JlcXVlc3RfbmFtZTsKKwkJbWVudV9zcGFjaW5nOworCQltZW51X3N1YjsKKwkJbWVudV90ZXJtOworCQltZW51X3VzZXJwdHI7CisJCW1lbnVfd2luOworCQltb3VzZV90cmFmbzsKKwkJbW91c2VpbnRlcnZhbDsKKwkJbW91c2VtYXNrOworCQltb3ZlOworCQltb3ZlX2ZpZWxkOworCQltb3ZlX3BhbmVsOworCQltdmFkZGNoOworCQltdmFkZGNobnN0cjsKKwkJbXZhZGRjaHN0cjsKKwkJbXZhZGRuc3RyOworCQltdmFkZHN0cjsKKwkJbXZjaGdhdDsKKwkJbXZjdXI7CisJCW12ZGVsY2g7CisJCW12ZGVyd2luOworCQltdmdldGNoOworCQltdmdldG5zdHI7CisJCW12Z2V0c3RyOworCQltdmhsaW5lOworCQltdmluY2g7CisJCW12aW5jaG5zdHI7CisJCW12aW5jaHN0cjsKKwkJbXZpbm5zdHI7CisJCW12aW5zY2g7CisJCW12aW5zbnN0cjsKKwkJbXZpbnNzdHI7CisJCW12aW5zdHI7CisJCW12cHJpbnR3OworCQltdnNjYW53OworCQltdnZsaW5lOworCQltdndhZGRjaDsKKwkJbXZ3YWRkY2huc3RyOworCQltdndhZGRjaHN0cjsKKwkJbXZ3YWRkbnN0cjsKKwkJbXZ3YWRkc3RyOworCQltdndjaGdhdDsKKwkJbXZ3ZGVsY2g7CisJCW12d2dldGNoOworCQltdndnZXRuc3RyOworCQltdndnZXRzdHI7CisJCW12d2hsaW5lOworCQltdndpbjsKKwkJbXZ3aW5jaDsKKwkJbXZ3aW5jaG5zdHI7CisJCW12d2luY2hzdHI7CisJCW12d2lubnN0cjsKKwkJbXZ3aW5zY2g7CisJCW12d2luc25zdHI7CisJCW12d2luc3N0cjsKKwkJbXZ3aW5zdHI7CisJCW12d3ByaW50dzsKKwkJbXZ3c2Nhbnc7CisJCW12d3ZsaW5lOworCQluZXdfZmllbGQ7CisJCW5ld19maWVsZHR5cGU7CisJCW5ld19mb3JtOworCQluZXdfaXRlbTsKKwkJbmV3X21lbnU7CisJCW5ld19wYWdlOworCQluZXdfcGFuZWw7CisJCW5ld3BhZDsKKwkJbmV3dGVybTsKKwkJbmV3d2luOworCQlubDsKKwkJbm9lY2hvOworCQlub2ZpbHRlcjsKKwkJbm9ubDsKKwkJb3ZlcmxheTsKKwkJb3ZlcndyaXRlOworCQlwYWlyX2NvbnRlbnQ7CisJCXBhbmVsX2Fib3ZlOworCQlwYW5lbF9iZWxvdzsKKwkJcGFuZWxfaGlkZGVuOworCQlwYW5lbF91c2VycHRyOworCQlwYW5lbF93aW5kb3c7CisJCXBlY2hvY2hhcjsKKwkJcG5vdXRyZWZyZXNoOworCQlwb3NfZm9ybV9jdXJzb3I7CisJCXBvc19tZW51X2N1cnNvcjsKKwkJcG9zdF9mb3JtOworCQlwb3N0X21lbnU7CisJCXByZWZyZXNoOworCQlwcmludHc7CisJCXB1dHdpbjsKKwkJcmVkcmF3d2luOworCQlyZWZyZXNoOworCQlyZXBsYWNlX3BhbmVsOworCQlyZXNpemVfdGVybTsKKwkJcmVzaXpldGVybTsKKwkJcmVzdGFydHRlcm07CisJCXJpcG9mZmxpbmU7CisJCXNjYWxlX2Zvcm07CisJCXNjYWxlX21lbnU7CisJCXNjYW53OworCQlzY3JfZHVtcDsKKwkJc2NyX2luaXQ7CisJCXNjcl9yZXN0b3JlOworCQlzY3Jfc2V0OworCQlzY3JsOworCQlzY3JvbGw7CisJCXNjcm9sbG9rOworCQlzZXRfY3VycmVudF9maWVsZDsKKwkJc2V0X2N1cnJlbnRfaXRlbTsKKwkJc2V0X2VzY2RlbGF5OworCQlzZXRfZmllbGRfYmFjazsKKwkJc2V0X2ZpZWxkX2J1ZmZlcjsKKwkJc2V0X2ZpZWxkX2ZvcmU7CisJCXNldF9maWVsZF9pbml0OworCQlzZXRfZmllbGRfanVzdDsKKwkJc2V0X2ZpZWxkX29wdHM7CisJCXNldF9maWVsZF9wYWQ7CisJCXNldF9maWVsZF9zdGF0dXM7CisJCXNldF9maWVsZF90ZXJtOworCQlzZXRfZmllbGRfdHlwZTsKKwkJc2V0X2ZpZWxkX3VzZXJwdHI7CisJCXNldF9maWVsZHR5cGVfYXJnOworCQlzZXRfZmllbGR0eXBlX2Nob2ljZTsKKwkJc2V0X2Zvcm1fZmllbGRzOworCQlzZXRfZm9ybV9pbml0OworCQlzZXRfZm9ybV9vcHRzOworCQlzZXRfZm9ybV9wYWdlOworCQlzZXRfZm9ybV9zdWI7CisJCXNldF9mb3JtX3Rlcm07CisJCXNldF9mb3JtX3VzZXJwdHI7CisJCXNldF9mb3JtX3dpbjsKKwkJc2V0X2l0ZW1faW5pdDsKKwkJc2V0X2l0ZW1fb3B0czsKKwkJc2V0X2l0ZW1fdGVybTsKKwkJc2V0X2l0ZW1fdXNlcnB0cjsKKwkJc2V0X2l0ZW1fdmFsdWU7CisJCXNldF9tYXhfZmllbGQ7CisJCXNldF9tZW51X2JhY2s7CisJCXNldF9tZW51X2ZvcmU7CisJCXNldF9tZW51X2Zvcm1hdDsKKwkJc2V0X21lbnVfZ3JleTsKKwkJc2V0X21lbnVfaW5pdDsKKwkJc2V0X21lbnVfaXRlbXM7CisJCXNldF9tZW51X21hcms7CisJCXNldF9tZW51X29wdHM7CisJCXNldF9tZW51X3BhZDsKKwkJc2V0X21lbnVfcGF0dGVybjsKKwkJc2V0X21lbnVfc3BhY2luZzsKKwkJc2V0X21lbnVfc3ViOworCQlzZXRfbWVudV90ZXJtOworCQlzZXRfbWVudV91c2VycHRyOworCQlzZXRfbWVudV93aW47CisJCXNldF9uZXdfcGFnZTsKKwkJc2V0X3BhbmVsX3VzZXJwdHI7CisJCXNldF90ZXJtOworCQlzZXRfdG9wX3JvdzsKKwkJc2V0c2NycmVnOworCQlzaG93X3BhbmVsOworCQlzbGtfYXR0cjsKKwkJc2xrX2F0dHJfc2V0OworCQlzbGtfYXR0cm9mZjsKKwkJc2xrX2F0dHJvbjsKKwkJc2xrX2F0dHJzZXQ7CisJCXNsa19jbGVhcjsKKwkJc2xrX2NvbG9yOworCQlzbGtfaW5pdDsKKwkJc2xrX2xhYmVsOworCQlzbGtfbm91dHJlZnJlc2g7CisJCXNsa19yZWZyZXNoOworCQlzbGtfcmVzdG9yZTsKKwkJc2xrX3NldDsKKwkJc2xrX3RvdWNoOworCQlzdGFuZGVuZDsKKwkJc3RhbmRvdXQ7CisJCXN0YXJ0X2NvbG9yOworCQlzdWJwYWQ7CisJCXN1YndpbjsKKwkJc3luY29rOworCQl0ZXJtYXR0cnM7CisJCXRpbWVvdXQ7CisJCXRvcF9wYW5lbDsKKwkJdG9wX3JvdzsKKwkJdG91Y2hsaW5lOworCQl0b3VjaHdpbjsKKwkJdW5nZXRjaDsKKwkJdW5nZXRtb3VzZTsKKwkJdW5wb3N0X2Zvcm07CisJCXVucG9zdF9tZW51OworCQl1bnRvdWNod2luOworCQl1cGRhdGVfcGFuZWxzOworCQl1c2VfZGVmYXVsdF9jb2xvcnM7CisJCXVzZV9sZWdhY3lfY29kaW5nOworCQl1c2Vfc2NyZWVuOworCQl1c2Vfd2luZG93OworCQl2aWRhdHRyOworCQl2aWRwdXRzOworCQl2bGluZTsKKwkJdndfcHJpbnR3OworCQl2d19zY2FudzsKKwkJdndwcmludHc7CisJCXZ3c2Nhbnc7CisJCXdhZGRjaDsKKwkJd2FkZGNobnN0cjsKKwkJd2FkZGNoc3RyOworCQl3YWRkbnN0cjsKKwkJd2FkZHN0cjsKKwkJd2F0dHJfZ2V0OworCQl3YXR0cl9vZmY7CisJCXdhdHRyX29uOworCQl3YXR0cl9zZXQ7CisJCXdhdHRyb2ZmOworCQl3YXR0cm9uOworCQl3YXR0cnNldDsKKwkJd2JrZ2Q7CisJCXdia2dkc2V0OworCQl3Ym9yZGVyOworCQl3Y2hnYXQ7CisJCXdjbGVhcjsKKwkJd2NscnRvYm90OworCQl3Y2xydG9lb2w7CisJCXdjb2xvcl9zZXQ7CisJCXdjdXJzeW5jdXA7CisJCXdkZWxjaDsKKwkJd2RlbGV0ZWxuOworCQl3ZWNob2NoYXI7CisJCXdlbmNsb3NlOworCQl3ZXJhc2U7CisJCXdnZXRjaDsKKwkJd2dldGNoX2V2ZW50czsKKwkJd2dldG5zdHI7CisJCXdnZXRuc3RyX2V2ZW50czsKKwkJd2dldHBhcmVudDsKKwkJd2dldHNjcnJlZzsKKwkJd2dldHN0cjsKKwkJd2hsaW5lOworCQl3aW5jaDsKKwkJd2luY2huc3RyOworCQl3aW5jaHN0cjsKKwkJd2lubnN0cjsKKwkJd2luc2NoOworCQl3aW5zZGVsbG47CisJCXdpbnNlcnRsbjsKKwkJd2luc25zdHI7CisJCXdpbnNzdHI7CisJCXdpbnN0cjsKKwkJd21vdXNlX3RyYWZvOworCQl3bW92ZTsKKwkJd25vdXRyZWZyZXNoOworCQl3cHJpbnR3OworCQl3cmVkcmF3bG47CisJCXdyZWZyZXNoOworCQl3cmVzaXplOworCQl3c2Nhbnc7CisJCXdzY3JsOworCQl3c2V0c2NycmVnOworCQl3c3RhbmRlbmQ7CisJCXdzdGFuZG91dDsKKwkJd3N5bmNkb3duOworCQl3c3luY3VwOworCQl3dG91Y2hsbjsKKwkJd3ZsaW5lOworCWxvY2FsOgorCQlfbmNfQ2FsY3VsYXRlX0l0ZW1fTGVuZ3RoX2FuZF9XaWR0aDsKKwkJX25jX0NhbGN1bGF0ZV9UZXh0X1dpZHRoOworCQlfbmNfQ29ubmVjdF9JdGVtczsKKwkJX25jX0NvcHlfQXJndW1lbnQ7CisJCV9uY19Db3B5X1R5cGU7CisJCV9uY19EZWZhdWx0X0ZpZWxkVHlwZTsKKwkJX25jX0RlZmF1bHRfSXRlbTsKKwkJX25jX0RlZmF1bHRfTWVudTsKKwkJX25jX0Rpc2Nvbm5lY3RfSXRlbXM7CisJCV9uY19EcmF3X01lbnU7CisJCV9uY19GaXJzdF9BY3RpdmVfRmllbGQ7CisJCV9uY19GcmVlX0FyZ3VtZW50OworCQlfbmNfRnJlZV9UeXBlOworCQlfbmNfSW50ZXJuYWxfVmFsaWRhdGlvbjsKKwkJX25jX0xpbmtfSXRlbXM7CisJCV9uY19NYWtlX0FyZ3VtZW50OworCQlfbmNfTWF0Y2hfTmV4dF9DaGFyYWN0ZXJfSW5fSXRlbV9OYW1lOworCQlfbmNfTmV3X1RvcFJvd19hbmRfQ3VycmVudEl0ZW07CisJCV9uY19Qb3NpdGlvbl9Gb3JtX0N1cnNvcjsKKwkJX25jX1Bvc3RfSXRlbTsKKwkJX25jX1JlZnJlc2hfQ3VycmVudF9GaWVsZDsKKwkJX25jX1NldF9DdXJyZW50X0ZpZWxkOworCQlfbmNfU2V0X0Zvcm1fUGFnZTsKKwkJX25jX1Nob3dfTWVudTsKKwkJX25jX1N5bmNocm9uaXplX0F0dHJpYnV0ZXM7CisJCV9uY19TeW5jaHJvbml6ZV9PcHRpb25zOworCQlfbmNfVG91Y2hsaW5lOworCQlfbmNfVG91Y2hwYW47CisJCV9uY19Xbm91dHJlZnJlc2g7CisJCV9uY19kUGFuZWw7CisJCV9uY19kU3RhY2s7CisJCV9uY19kb19jb2xvcjsKKwkJX25jX2V4cGFuZGVkOworCQlfbmNfZmlmb19kdW1wOworCQlfbmNfZnJlZXdpbjsKKwkJX25jX2hhc2hfbWFwOworCQlfbmNfaW5zZXJ0X2NoOworCQlfbmNfbGluZWR1bXA7CisJCV9uY19tYWtlX29sZGhhc2g7CisJCV9uY19tYWtlbmV3OworCQlfbmNfbWVtbW92ZTsKKwkJX25jX21lbnVfY3Vyc29yX3BvczsKKwkJX25jX21zZWNfY29zdDsKKwkJX25jX212Y3VyX2luaXQ7CisJCV9uY19tdmN1cl9yZXN1bWU7CisJCV9uY19tdmN1cl93cmFwOworCQlfbmNfbXlfdmlzYnVmOworCQlfbmNfb2xkbnVtczsKKwkJX25jX3ByaW50Zl9zdHJpbmc7CisJCV9uY19yZW5kZXI7CisJCV9uY19yZXNldF9jb2xvcnM7CisJCV9uY19yZXRyYWNlX2ZpZWxkOworCQlfbmNfcmV0cmFjZV9maWVsZF9wdHI7CisJCV9uY19yZXRyYWNlX2ZpZWxkX3R5cGU7CisJCV9uY19yZXRyYWNlX2Zvcm07CisJCV9uY19yZXRyYWNlX2Zvcm1faG9vazsKKwkJX25jX3JldHJhY2VfaXRlbTsKKwkJX25jX3JldHJhY2VfaXRlbV9vcHRzOworCQlfbmNfcmV0cmFjZV9pdGVtX3B0cjsKKwkJX25jX3JldHJhY2VfbWVudTsKKwkJX25jX3JldHJhY2VfbWVudV9ob29rOworCQlfbmNfcmV0cmFjZV9tZW51X29wdHM7CisJCV9uY19yZXRyYWNlX3BhbmVsOworCQlfbmNfc2NyZWVuX2luaXQ7CisJCV9uY19zY3JlZW5fcmVzdW1lOworCQlfbmNfc2NyZWVuX3dyYXA7CisJCV9uY19zY3JvbGxfb2xkaGFzaDsKKwkJX25jX3Njcm9sbF9vcHRpbWl6ZTsKKwkJX25jX3Njcm9sbF93aW5kb3c7CisJCV9uY19zY3JvbGxuOworCQlfbmNfc2V0dXBzY3JlZW47CisJCV9uY19zaWduYWxfaGFuZGxlcjsKKwkJX25jX3Nsa19pbml0aWFsaXplOworCQlfbmNfc3luY2hvb2s7CisJCV9uY190cmFjZV94bmFtZXM7CisJCV9uY190cmFjZW1vdXNlOworCQlfbmNfdW5nZXRjaDsKKwkJX25jX3ZhcmFyZ3M7CisJCV9uY192c3NjYW5mOworCQlfbmNfd2FkZGNoX25vc3luYzsKKwkJX25jX3dnZXRjaDsKKwkJX3RyYWNlZHVtcDsKKwkJX3RyYWNlbW91c2U7Cit9OworCitOQ1VSU0VTVF81LjguMjAxMTAyMjYgeworCWdsb2JhbDoKKwkJX25jX3BhbmVsaG9va19zcDsKKwkJYXNzdW1lX2RlZmF1bHRfY29sb3JzX3NwOworCQliZWVwX3NwOworCQljYW5fY2hhbmdlX2NvbG9yX3NwOworCQljZWlsaW5nX3BhbmVsOworCQljb2xvcl9jb250ZW50X3NwOworCQlkb3VwZGF0ZV9zcDsKKwkJZWNob19zcDsKKwkJZW5kd2luX3NwOworCQlmaWx0ZXJfc3A7CisJCWZsYXNoX3NwOworCQlnZXRfZXNjZGVsYXk7CisJCWdldF9lc2NkZWxheV9zcDsKKwkJZ2V0bW91c2Vfc3A7CisJCWdldHdpbl9zcDsKKwkJZ3JvdW5kX3BhbmVsOworCQloYXNfY29sb3JzX3NwOworCQloYXNfbW91c2U7CisJCWhhc19tb3VzZV9zcDsKKwkJaW5pdF9jb2xvcl9zcDsKKwkJaW5pdF9wYWlyX3NwOworCQlpc19wYWQ7CisJCWlzX3N1YndpbjsKKwkJaXNfdGVybV9yZXNpemVkX3NwOworCQlpc2VuZHdpbl9zcDsKKwkJbWNwcmludF9zcDsKKwkJbW91c2VpbnRlcnZhbF9zcDsKKwkJbW91c2VtYXNrX3NwOworCQltdmN1cl9zcDsKKwkJbmV3X2Zvcm1fc3A7CisJCW5ld19tZW51X3NwOworCQluZXdwYWRfc3A7CisJCW5ld3Rlcm1fc3A7CisJCW5ld3dpbl9zcDsKKwkJbmxfc3A7CisJCW5vZWNob19zcDsKKwkJbm9maWx0ZXJfc3A7CisJCW5vbmxfc3A7CisJCXBhaXJfY29udGVudF9zcDsKKwkJcmVzaXplX3Rlcm1fc3A7CisJCXJlc2l6ZXRlcm1fc3A7CisJCXJlc3RhcnR0ZXJtX3NwOworCQlyaXBvZmZsaW5lX3NwOworCQlzY3JfaW5pdF9zcDsKKwkJc2NyX3Jlc3RvcmVfc3A7CisJCXNjcl9zZXRfc3A7CisJCXNldF9lc2NkZWxheV9zcDsKKwkJc2xrX2F0dHJfc2V0X3NwOworCQlzbGtfYXR0cl9zcDsKKwkJc2xrX2F0dHJvZmZfc3A7CisJCXNsa19hdHRyb25fc3A7CisJCXNsa19hdHRyc2V0X3NwOworCQlzbGtfY2xlYXJfc3A7CisJCXNsa19jb2xvcl9zcDsKKwkJc2xrX2luaXRfc3A7CisJCXNsa19sYWJlbF9zcDsKKwkJc2xrX25vdXRyZWZyZXNoX3NwOworCQlzbGtfcmVmcmVzaF9zcDsKKwkJc2xrX3Jlc3RvcmVfc3A7CisJCXNsa19zZXRfc3A7CisJCXNsa190b3VjaF9zcDsKKwkJc3RhcnRfY29sb3Jfc3A7CisJCXRlcm1hdHRyc19zcDsKKwkJdW5nZXRjaF9zcDsKKwkJdW5nZXRtb3VzZV9zcDsKKwkJdXBkYXRlX3BhbmVsc19zcDsKKwkJdXNlX2RlZmF1bHRfY29sb3JzX3NwOworCQl1c2VfbGVnYWN5X2NvZGluZ19zcDsKKwkJdmlkYXR0cl9zcDsKKwkJdmlkcHV0c19zcDsKKwlsb2NhbDoKKwkJX25jX1RZUEVfQUxOVU07CisJCV9uY19UWVBFX0FMUEhBOworCQlfbmNfVFlQRV9FTlVNOworCQlfbmNfVFlQRV9JTlRFR0VSOworCQlfbmNfVFlQRV9JUFY0OworCQlfbmNfVFlQRV9OVU1FUklDOworCQlfbmNfVFlQRV9SRUdFWFA7CisJCV9uY19jdXJzY3Jfb2Y7CisJCV9uY19kb19jb2xvcl9zcDsKKwkJX25jX2Zvcm1fY3Vyc29yOworCQlfbmNfZm9ybWF0X3Nsa3M7CisJCV9uY19mcmVlX2FuZF9leGl0X3NwOworCQlfbmNfZnJlZWFsbF9zcDsKKwkJX25jX2Z0eV9nZW5lcmljOworCQlfbmNfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19nZXRfZmllbGRidWZmZXI7CisJCV9uY19oYXNoX21hcF9zcDsKKwkJX25jX2xpbmVkdW1wX3NwOworCQlfbmNfbWFrZV9vbGRoYXNoX3NwOworCQlfbmNfbWFrZW5ld19zcDsKKwkJX25jX21zZWNfY29zdF9zcDsKKwkJX25jX212Y3VyX2luaXRfc3A7CisJCV9uY19tdmN1cl9yZXN1bWVfc3A7CisJCV9uY19tdmN1cl93cmFwX3NwOworCQlfbmNfbmV3c2NyX29mOworCQlfbmNfcHJpbnRmX3N0cmluZ19zcDsKKwkJX25jX3B0cl9Fc2NkZWxheTsKKwkJX25jX3Jlc2V0X2NvbG9yc19zcDsKKwkJX25jX3JldHJhY2VfbW1hc2tfdDsKKwkJX25jX3JpcG9mZmxpbmVfc3A7CisJCV9uY19zY3JlZW5faW5pdF9zcDsKKwkJX25jX3NjcmVlbl9yZXN1bWVfc3A7CisJCV9uY19zY3JlZW5fd3JhcF9zcDsKKwkJX25jX3Njcm9sbF9vbGRoYXNoX3NwOworCQlfbmNfc2Nyb2xsX29wdGltaXplX3NwOworCQlfbmNfc2Nyb2xsbl9zcDsKKwkJX25jX3NldF9nZW5lcmljX2ZpZWxkdHlwZTsKKwkJX25jX3NldHVwc2NyZWVuX3NwOworCQlfbmNfc3Rkc2NyX29mOworfSBOQ1VSU0VTVF81LjcuMjAwODExMDI7CisKK05DVVJTRVNUXzUuOS4yMDE1MDUzMCB7CisJZ2xvYmFsOgorCQl3Z2V0ZGVsYXk7CisJbG9jYWw6CisJCV8qOworCQlfbmNfbXZjdXI7CisJCV9uY19tdmN1cl9zcDsKKwkJX25jX3RyYWNlX21tYXNrX3Q7Cit9IE5DVVJTRVNUXzUuOC4yMDExMDIyNjsKZGlmZiAtLWdpdCBhL3BhY2thZ2UvbmN1cnNlc3Quc3ltIGIvcGFja2FnZS9uY3Vyc2VzdC5zeW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMyZjIwOQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvbmN1cnNlc3Quc3ltCkBAIC0wLDAgKzEsODQwIEBACisjICRJZDogbmN1cnNlc3Quc3ltLHYgMS4yNSAyMDE1LzA3LzExIDIzOjMzOjUwIHRvbSBFeHAgJAorIyBzY3JpcHQgZm9yIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbC12aXNpYmlsaXR5IHVzaW5nIGxpYnRvb2wKKyMKKyMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbmN1LW1hcHN5bXMKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNy4yMDA4MTEwMikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOC4yMDExMDIyNikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTEwNDA0KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxNTA1MzApCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjIENvbmZpZ3VyZSBvcHRpb25zICg2LjAuY3VycmVudCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKK0JDCitDT0xPUl9QQUlSCitQQUlSX05VTUJFUgorUEMKK1NQCitUWVBFX0FMTlVNCitUWVBFX0FMUEhBCitUWVBFX0VOVU0KK1RZUEVfSU5URUdFUgorVFlQRV9JUFY0CitUWVBFX05VTUVSSUMKK1RZUEVfUkVHRVhQCitVUAorX25jX0NPTE9SUworX25jX0NPTE9SX1BBSVJTCitfbmNfQ09MUworX25jX0RlZmF1bHRfRmllbGQKK19uY19EZWZhdWx0X0Zvcm0KK19uY19FU0NERUxBWQorX25jX0xJTkVTCitfbmNfVEFCU0laRQorX25jX19uY19vdXRjaGFycworX25jX2FjY2VzcworX25jX2Fjc19tYXAKK19uY19hZGRfdG9fdHJ5CitfbmNfYWxpZ25fdGVybXR5cGUKK19uY19iYXNlbmFtZQorX25jX2Jvb2xjb2RlcworX25jX2Jvb2xmbmFtZXMKK19uY19ib29sbmFtZXMKK19uY19jYXBjbXAKK19uY19jaGVja190ZXJtdHlwZTIKK19uY19jb2Rlc19sZWFrcworX25jX2NvcHlfdGVybXR5cGUKK19uY19jb3VudF9vdXRjaGFycworX25jX2N1cl90ZXJtCitfbmNfY3Vycl9jb2wKK19uY19jdXJyX2xpbmUKK19uY19jdXJzY3IKK19uY19kYl9jbG9zZQorX25jX2RiX2ZpcnN0CitfbmNfZGJfaGF2ZV9kYXRhCitfbmNfZGJfbmV4dAorX25jX2RiX29wZW4KK19uY19kYl9wdXQKK19uY19kaXNhYmxlX3BlcmlvZAorX25jX2RvYWxsb2MKK19uY19lbnRyeV9tYXRjaAorX25jX2Vudl9hY2Nlc3MKK19uY19lcnJfYWJvcnQKK19uY19ldmVudGxpc3RfdGltZW91dAorX25jX2ZhbGxiYWNrCitfbmNfZmluZF9lbnRyeQorX25jX2ZpbmRfdHlwZV9lbnRyeQorX25jX2ZpcnN0X2RiCitfbmNfZmlyc3RfbmFtZQorX25jX2ZsdXNoCitfbmNfZmx1c2hfc3AKK19uY19mcmVlX2FuZF9leGl0CitfbmNfZnJlZV9lbnRyaWVzCitfbmNfZnJlZV90ZXJtdHlwZQorX25jX2ZyZWVfdGljCitfbmNfZnJlZV90aW5mbworX25jX2ZyZWVhbGwKK19uY19nZXRfYWxpYXNfdGFibGUKK19uY19nZXRfaGFzaF90YWJsZQorX25jX2dldF9sb2NhbGUKK19uY19nZXRfc2NyZWVuc2l6ZQorX25jX2dldF9zb3VyY2UKK19uY19nZXRfdGFibGUKK19uY19nZXRfdHR5X21vZGUKK19uY19nZXRfdHR5X21vZGVfc3AKK19uY19nZXRfdHlwZQorX25jX2dldGVudl9udW0KK19uY19nbG9iYWxzCitfbmNfaGFuZGxlX3NpZ3dpbmNoCitfbmNfaGFzX21vdXNlCitfbmNfaGVhZAorX25jX2hvbWVfdGVybWluZm8KK19uY19pbmZvdG9jYXAKK19uY19pbml0X2FjcworX25jX2luaXRfYWNzX3NwCitfbmNfaW5pdF9wdGhyZWFkcworX25jX2luaXRfdGVybXR5cGUKK19uY19pc19hYnNfcGF0aAorX25jX2lzX2Rpcl9wYXRoCitfbmNfaXNfZmlsZV9wYXRoCitfbmNfa2VlcF90aWNfZGlyCitfbmNfa2V5cGFkCitfbmNfbGFzdF9kYgorX25jX2xlYWtzX3RpbmZvCitfbmNfbG9jYWxlX2JyZWFrc19hY3MKK19uY19sb2NrZWRfdHJhY2VmCitfbmNfbXV0ZXhfbG9jaworX25jX211dGV4X3RyeWxvY2sKK19uY19tdXRleF91bmxvY2sKK19uY19uYW1lX21hdGNoCitfbmNfbmFtZXNfbGVha3MKK19uY19uZXdzY3IKK19uY19uZXh0X2RiCitfbmNfbnVtY29kZXMKK19uY19udW1mbmFtZXMKK19uY19udW1uYW1lcworX25jX29wdGltaXplX2VuYWJsZQorX25jX291dGNfd3JhcHBlcgorX25jX291dGNoCitfbmNfb3V0Y2hfc3AKK19uY19wYW5lbGhvb2sKK19uY19wYW5lbGhvb2tfc3AKK19uY19wYXRobGFzdAorX25jX3ByZXNjcmVlbgorX25jX3B0cl9Db2xzCitfbmNfcHRyX0xpbmVzCitfbmNfcHV0Y2hhcgorX25jX3B1dGNoYXJfc3AKK19uY19wdXRwCitfbmNfcHV0cF9mbHVzaAorX25jX3B1dHBfZmx1c2hfc3AKK19uY19wdXRwX3NwCitfbmNfcmVhZF9lbnRyeQorX25jX3JlYWRfZW50cnlfc291cmNlCitfbmNfcmVhZF9maWxlX2VudHJ5CitfbmNfcmVhZF90ZXJtdHlwZQorX25jX3Jlc2V0X2lucHV0CitfbmNfcmVzb2x2ZV91c2VzMgorX25jX3JldHJhY2VfYXR0cl90CitfbmNfcmV0cmFjZV9ib29sCitfbmNfcmV0cmFjZV9jaHR5cGUKK19uY19yZXRyYWNlX2NwdHIKK19uY19yZXRyYWNlX2N2b2lkX3B0cgorX25jX3JldHJhY2VfaW50CitfbmNfcmV0cmFjZV9pbnRfYXR0cl90CitfbmNfcmV0cmFjZV9wdHIKK19uY19yZXRyYWNlX3NwCitfbmNfcmV0cmFjZV91bnNpZ25lZAorX25jX3JldHJhY2Vfdm9pZF9wdHIKK19uY19yZXRyYWNlX3dpbgorX25jX3JpcG9mZmxpbmUKK19uY19yb290bmFtZQorX25jX3NhZmVfc3RyY2F0CitfbmNfc2FmZV9zdHJjcHkKK19uY19zY3JlZW5fY2hhaW4KK19uY19zY3JlZW5fb2YKK19uY19zZXRfYnVmZmVyCitfbmNfc2V0X2J1ZmZlcl9zcAorX25jX3NldF9ub19wYWRkaW5nCitfbmNfc2V0X3NvdXJjZQorX25jX3NldF90cHV0c190cmFjZQorX25jX3NldF90dHlfbW9kZQorX25jX3NldF90dHlfbW9kZV9zcAorX25jX3NldF90eXBlCitfbmNfc2V0X3dyaXRlZGlyCitfbmNfc2V0dXB0ZXJtCitfbmNfc2lncHJvY21hc2sKK19uY19zdGRzY3IKK19uY19zdHJfY29weQorX25jX3N0cl9pbml0CitfbmNfc3RyX251bGwKK19uY19zdHJjb2RlcworX25jX3N0cmZuYW1lcworX25jX3N0cmljdF9ic2QKK19uY19zdHJuYW1lcworX25jX3N1cHByZXNzX3dhcm5pbmdzCitfbmNfc3ludGF4CitfbmNfc3lzZXJyX2Fib3J0CitfbmNfdGFpbAorX25jX3RpY19kaXIKK19uY190aWNfZXhwYW5kCitfbmNfdGljX3dyaXR0ZW4KK19uY190aW1lZF93YWl0CitfbmNfdGluZm9fZmtleXMKK19uY190cGFybV9hbmFseXplCitfbmNfdHBhcm1fZXJyCitfbmNfdHJhY2VfYnVmCitfbmNfdHJhY2VjaGFyCitfbmNfdHJhY2luZworX25jX3RyYW5zX3N0cmluZworX25jX3RyaW1fc2dyMAorX25jX3R0eXR5cGUKK19uY191bmljb2RlX2xvY2FsZQorX25jX3VwZGF0ZV9zY3JlZW5zaXplCitfbmNfdXNlX3RyYWNlZgorX25jX3VzZXJfZGVmaW5hYmxlCitfbmNfdmlzYnVmCitfbmNfdmlzYnVmMgorX25jX3Zpc2J1Zm4KK19uY192aXNjYnVmCitfbmNfd2FybmluZworX25jX3dyaXRlX2VudHJ5CitfdHJhY2VhdHRyCitfdHJhY2VhdHRyMgorX3RyYWNlY2h0eXBlCitfdHJhY2VjaHR5cGUyCitfdHJhY2VmCithZGRjaAorYWRkY2huc3RyCithZGRjaHN0cgorYWRkbnN0cgorYWRkc3RyCithc3N1bWVfZGVmYXVsdF9jb2xvcnMKK2Fzc3VtZV9kZWZhdWx0X2NvbG9yc19zcAorYXR0cl9nZXQKK2F0dHJfb2ZmCithdHRyX29uCithdHRyX3NldAorYXR0cm9mZgorYXR0cm9uCithdHRyc2V0CitiYXVkcmF0ZQorYmF1ZHJhdGVfc3AKK2JlZXAKK2JlZXBfc3AKK2JrZ2QKK2JrZ2RzZXQKK2JvcmRlcgorYm90dG9tX3BhbmVsCitib3gKK2Nhbl9jaGFuZ2VfY29sb3IKK2Nhbl9jaGFuZ2VfY29sb3Jfc3AKK2NicmVhaworY2JyZWFrX3NwCitjZWlsaW5nX3BhbmVsCitjaGdhdAorY2xlYXIKK2NsZWFyb2sKK2NscnRvYm90CitjbHJ0b2VvbAorY29sb3JfY29udGVudAorY29sb3JfY29udGVudF9zcAorY29sb3Jfc2V0Citjb3B5d2luCitjdXJyZW50X2ZpZWxkCitjdXJyZW50X2l0ZW0KK2N1cnNfc2V0CitjdXJzX3NldF9zcAorY3Vyc2VzX3ZlcnNpb24KK2RhdGFfYWhlYWQKK2RhdGFfYmVoaW5kCitkZWZfcHJvZ19tb2RlCitkZWZfcHJvZ19tb2RlX3NwCitkZWZfc2hlbGxfbW9kZQorZGVmX3NoZWxsX21vZGVfc3AKK2RlZmluZV9rZXkKK2RlZmluZV9rZXlfc3AKK2RlbF9jdXJ0ZXJtCitkZWxfY3VydGVybV9zcAorZGVsX3BhbmVsCitkZWxheV9vdXRwdXQKK2RlbGF5X291dHB1dF9zcAorZGVsY2gKK2RlbGV0ZWxuCitkZWxzY3JlZW4KK2RlbHdpbgorZGVyd2luCitkb3VwZGF0ZQorZG91cGRhdGVfc3AKK2R1cF9maWVsZAorZHVwd2luCitkeW5hbWljX2ZpZWxkX2luZm8KK2VjaG8KK2VjaG9fc3AKK2VjaG9jaGFyCitlbmR3aW4KK2VuZHdpbl9zcAorZXJhc2UKK2VyYXNlY2hhcgorZXJhc2VjaGFyX3NwCitmaWVsZF9hcmcKK2ZpZWxkX2JhY2sKK2ZpZWxkX2J1ZmZlcgorZmllbGRfY291bnQKK2ZpZWxkX2ZvcmUKK2ZpZWxkX2luZGV4CitmaWVsZF9pbmZvCitmaWVsZF9pbml0CitmaWVsZF9qdXN0CitmaWVsZF9vcHRzCitmaWVsZF9vcHRzX29mZgorZmllbGRfb3B0c19vbgorZmllbGRfcGFkCitmaWVsZF9zdGF0dXMKK2ZpZWxkX3Rlcm0KK2ZpZWxkX3R5cGUKK2ZpZWxkX3VzZXJwdHIKK2ZpbHRlcgorZmlsdGVyX3NwCitmbGFzaAorZmxhc2hfc3AKK2ZsdXNoaW5wCitmbHVzaGlucF9zcAorZm9ybV9kcml2ZXIKK2Zvcm1fZmllbGRzCitmb3JtX2luaXQKK2Zvcm1fb3B0cworZm9ybV9vcHRzX29mZgorZm9ybV9vcHRzX29uCitmb3JtX3BhZ2UKK2Zvcm1fcmVxdWVzdF9ieV9uYW1lCitmb3JtX3JlcXVlc3RfbmFtZQorZm9ybV9zdWIKK2Zvcm1fdGVybQorZm9ybV91c2VycHRyCitmb3JtX3dpbgorZnJlZV9maWVsZAorZnJlZV9maWVsZHR5cGUKK2ZyZWVfZm9ybQorZnJlZV9pdGVtCitmcmVlX21lbnUKK2dldF9lc2NkZWxheQorZ2V0X2VzY2RlbGF5X3NwCitnZXRhdHRycworZ2V0YmVneAorZ2V0YmVneQorZ2V0YmtnZAorZ2V0Y2gKK2dldGN1cngKK2dldGN1cnkKK2dldG1heHgKK2dldG1heHkKK2dldG1vdXNlCitnZXRtb3VzZV9zcAorZ2V0bnN0cgorZ2V0cGFyeAorZ2V0cGFyeQorZ2V0c3RyCitnZXR3aW4KK2dldHdpbl9zcAorZ3JvdW5kX3BhbmVsCitoYWxmZGVsYXkKK2hhbGZkZWxheV9zcAoraGFzX2NvbG9ycworaGFzX2NvbG9yc19zcAoraGFzX2ljCitoYXNfaWNfc3AKK2hhc19pbAoraGFzX2lsX3NwCitoYXNfa2V5CitoYXNfa2V5X3NwCitoYXNfbW91c2UKK2hhc19tb3VzZV9zcAoraGlkZV9wYW5lbAoraGxpbmUKK2lkY29rCitpZGxvaworaW1tZWRvaworaW5jaAoraW5jaG5zdHIKK2luY2hzdHIKK2luaXRfY29sb3IKK2luaXRfY29sb3Jfc3AKK2luaXRfcGFpcgoraW5pdF9wYWlyX3NwCitpbml0c2NyCitpbm5zdHIKK2luc2NoCitpbnNkZWxsbgoraW5zZXJ0bG4KK2luc25zdHIKK2luc3N0cgoraW5zdHIKK2ludHJmbHVzaAoraW50cmZsdXNoX3NwCitpc19jbGVhcmVkCitpc19pZGNvaworaXNfaWRsb2sKK2lzX2ltbWVkb2sKK2lzX2tleXBhZAoraXNfbGVhdmVvaworaXNfbGluZXRvdWNoZWQKK2lzX25vZGVsYXkKK2lzX25vdGltZW91dAoraXNfcGFkCitpc19zY3JvbGxvaworaXNfc3Vid2luCitpc19zeW5jb2sKK2lzX3Rlcm1fcmVzaXplZAoraXNfdGVybV9yZXNpemVkX3NwCitpc193aW50b3VjaGVkCitpc2VuZHdpbgoraXNlbmR3aW5fc3AKK2l0ZW1fY291bnQKK2l0ZW1fZGVzY3JpcHRpb24KK2l0ZW1faW5kZXgKK2l0ZW1faW5pdAoraXRlbV9uYW1lCitpdGVtX29wdHMKK2l0ZW1fb3B0c19vZmYKK2l0ZW1fb3B0c19vbgoraXRlbV90ZXJtCitpdGVtX3VzZXJwdHIKK2l0ZW1fdmFsdWUKK2l0ZW1fdmlzaWJsZQora2V5X2RlZmluZWQKK2tleV9kZWZpbmVkX3NwCitrZXlib3VuZAora2V5Ym91bmRfc3AKK2tleW5hbWUKK2tleW5hbWVfc3AKK2tleW9rCitrZXlva19zcAora2V5cGFkCitraWxsY2hhcgora2lsbGNoYXJfc3AKK2xlYXZlb2sKK2xpbmtfZmllbGQKK2xpbmtfZmllbGR0eXBlCitsb25nbmFtZQorbG9uZ25hbWVfc3AKK21jcHJpbnQKK21jcHJpbnRfc3AKK21lbnVfYmFjaworbWVudV9kcml2ZXIKK21lbnVfZm9yZQorbWVudV9mb3JtYXQKK21lbnVfZ3JleQorbWVudV9pbml0CittZW51X2l0ZW1zCittZW51X21hcmsKK21lbnVfb3B0cworbWVudV9vcHRzX29mZgorbWVudV9vcHRzX29uCittZW51X3BhZAorbWVudV9wYXR0ZXJuCittZW51X3JlcXVlc3RfYnlfbmFtZQorbWVudV9yZXF1ZXN0X25hbWUKK21lbnVfc3BhY2luZworbWVudV9zdWIKK21lbnVfdGVybQorbWVudV91c2VycHRyCittZW51X3dpbgorbWV0YQorbW91c2VfdHJhZm8KK21vdXNlaW50ZXJ2YWwKK21vdXNlaW50ZXJ2YWxfc3AKK21vdXNlbWFzaworbW91c2VtYXNrX3NwCittb3ZlCittb3ZlX2ZpZWxkCittb3ZlX3BhbmVsCittdmFkZGNoCittdmFkZGNobnN0cgorbXZhZGRjaHN0cgorbXZhZGRuc3RyCittdmFkZHN0cgorbXZjaGdhdAorbXZjdXIKK212Y3VyX3NwCittdmRlbGNoCittdmRlcndpbgorbXZnZXRjaAorbXZnZXRuc3RyCittdmdldHN0cgorbXZobGluZQorbXZpbmNoCittdmluY2huc3RyCittdmluY2hzdHIKK212aW5uc3RyCittdmluc2NoCittdmluc25zdHIKK212aW5zc3RyCittdmluc3RyCittdnByaW50dworbXZzY2FudworbXZ2bGluZQorbXZ3YWRkY2gKK212d2FkZGNobnN0cgorbXZ3YWRkY2hzdHIKK212d2FkZG5zdHIKK212d2FkZHN0cgorbXZ3Y2hnYXQKK212d2RlbGNoCittdndnZXRjaAorbXZ3Z2V0bnN0cgorbXZ3Z2V0c3RyCittdndobGluZQorbXZ3aW4KK212d2luY2gKK212d2luY2huc3RyCittdndpbmNoc3RyCittdndpbm5zdHIKK212d2luc2NoCittdndpbnNuc3RyCittdndpbnNzdHIKK212d2luc3RyCittdndwcmludHcKK212d3NjYW53Cittdnd2bGluZQorbmFwbXMKK25hcG1zX3NwCituZXdfZmllbGQKK25ld19maWVsZHR5cGUKK25ld19mb3JtCituZXdfZm9ybV9zcAorbmV3X2l0ZW0KK25ld19tZW51CituZXdfbWVudV9zcAorbmV3X3BhZ2UKK25ld19wYW5lbAorbmV3X3ByZXNjcgorbmV3cGFkCituZXdwYWRfc3AKK25ld3Rlcm0KK25ld3Rlcm1fc3AKK25ld3dpbgorbmV3d2luX3NwCitubAorbmxfc3AKK25vY2JyZWFrCitub2NicmVha19zcAorbm9kZWxheQorbm9lY2hvCitub2VjaG9fc3AKK25vZmlsdGVyCitub2ZpbHRlcl9zcAorbm9ubAorbm9ubF9zcAorbm9xaWZsdXNoCitub3FpZmx1c2hfc3AKK25vcmF3Citub3Jhd19zcAorbm90aW1lb3V0Citvc3BlZWQKK292ZXJsYXkKK292ZXJ3cml0ZQorcGFpcl9jb250ZW50CitwYWlyX2NvbnRlbnRfc3AKK3BhbmVsX2Fib3ZlCitwYW5lbF9iZWxvdworcGFuZWxfaGlkZGVuCitwYW5lbF91c2VycHRyCitwYW5lbF93aW5kb3cKK3BlY2hvY2hhcgorcG5vdXRyZWZyZXNoCitwb3NfZm9ybV9jdXJzb3IKK3Bvc19tZW51X2N1cnNvcgorcG9zdF9mb3JtCitwb3N0X21lbnUKK3ByZWZyZXNoCitwcmludHcKK3B1dHAKK3B1dHBfc3AKK3B1dHdpbgorcWlmbHVzaAorcWlmbHVzaF9zcAorcmF3CityYXdfc3AKK3JlZHJhd3dpbgorcmVmcmVzaAorcmVwbGFjZV9wYW5lbAorcmVzZXRfcHJvZ19tb2RlCityZXNldF9wcm9nX21vZGVfc3AKK3Jlc2V0X3NoZWxsX21vZGUKK3Jlc2V0X3NoZWxsX21vZGVfc3AKK3Jlc2V0dHkKK3Jlc2V0dHlfc3AKK3Jlc2l6ZV90ZXJtCityZXNpemVfdGVybV9zcAorcmVzaXpldGVybQorcmVzaXpldGVybV9zcAorcmVzdGFydHRlcm0KK3Jlc3RhcnR0ZXJtX3NwCityaXBvZmZsaW5lCityaXBvZmZsaW5lX3NwCitzYXZldHR5CitzYXZldHR5X3NwCitzY2FsZV9mb3JtCitzY2FsZV9tZW51CitzY2Fudworc2NyX2R1bXAKK3Njcl9pbml0CitzY3JfaW5pdF9zcAorc2NyX3Jlc3RvcmUKK3Njcl9yZXN0b3JlX3NwCitzY3Jfc2V0CitzY3Jfc2V0X3NwCitzY3JsCitzY3JvbGwKK3Njcm9sbG9rCitzZXRfY3VycmVudF9maWVsZAorc2V0X2N1cnJlbnRfaXRlbQorc2V0X2N1cnRlcm0KK3NldF9jdXJ0ZXJtX3NwCitzZXRfZXNjZGVsYXkKK3NldF9lc2NkZWxheV9zcAorc2V0X2ZpZWxkX2JhY2sKK3NldF9maWVsZF9idWZmZXIKK3NldF9maWVsZF9mb3JlCitzZXRfZmllbGRfaW5pdAorc2V0X2ZpZWxkX2p1c3QKK3NldF9maWVsZF9vcHRzCitzZXRfZmllbGRfcGFkCitzZXRfZmllbGRfc3RhdHVzCitzZXRfZmllbGRfdGVybQorc2V0X2ZpZWxkX3R5cGUKK3NldF9maWVsZF91c2VycHRyCitzZXRfZmllbGR0eXBlX2FyZworc2V0X2ZpZWxkdHlwZV9jaG9pY2UKK3NldF9mb3JtX2ZpZWxkcworc2V0X2Zvcm1faW5pdAorc2V0X2Zvcm1fb3B0cworc2V0X2Zvcm1fcGFnZQorc2V0X2Zvcm1fc3ViCitzZXRfZm9ybV90ZXJtCitzZXRfZm9ybV91c2VycHRyCitzZXRfZm9ybV93aW4KK3NldF9pdGVtX2luaXQKK3NldF9pdGVtX29wdHMKK3NldF9pdGVtX3Rlcm0KK3NldF9pdGVtX3VzZXJwdHIKK3NldF9pdGVtX3ZhbHVlCitzZXRfbWF4X2ZpZWxkCitzZXRfbWVudV9iYWNrCitzZXRfbWVudV9mb3JlCitzZXRfbWVudV9mb3JtYXQKK3NldF9tZW51X2dyZXkKK3NldF9tZW51X2luaXQKK3NldF9tZW51X2l0ZW1zCitzZXRfbWVudV9tYXJrCitzZXRfbWVudV9vcHRzCitzZXRfbWVudV9wYWQKK3NldF9tZW51X3BhdHRlcm4KK3NldF9tZW51X3NwYWNpbmcKK3NldF9tZW51X3N1Ygorc2V0X21lbnVfdGVybQorc2V0X21lbnVfdXNlcnB0cgorc2V0X21lbnVfd2luCitzZXRfbmV3X3BhZ2UKK3NldF9wYW5lbF91c2VycHRyCitzZXRfdGFic2l6ZQorc2V0X3RhYnNpemVfc3AKK3NldF90ZXJtCitzZXRfdG9wX3Jvdworc2V0c2NycmVnCitzZXR1cHRlcm0KK3Nob3dfcGFuZWwKK3Nsa19hdHRyCitzbGtfYXR0cl9zZXQKK3Nsa19hdHRyX3NldF9zcAorc2xrX2F0dHJfc3AKK3Nsa19hdHRyb2ZmCitzbGtfYXR0cm9mZl9zcAorc2xrX2F0dHJvbgorc2xrX2F0dHJvbl9zcAorc2xrX2F0dHJzZXQKK3Nsa19hdHRyc2V0X3NwCitzbGtfY2xlYXIKK3Nsa19jbGVhcl9zcAorc2xrX2NvbG9yCitzbGtfY29sb3Jfc3AKK3Nsa19pbml0CitzbGtfaW5pdF9zcAorc2xrX2xhYmVsCitzbGtfbGFiZWxfc3AKK3Nsa19ub3V0cmVmcmVzaAorc2xrX25vdXRyZWZyZXNoX3NwCitzbGtfcmVmcmVzaAorc2xrX3JlZnJlc2hfc3AKK3Nsa19yZXN0b3JlCitzbGtfcmVzdG9yZV9zcAorc2xrX3NldAorc2xrX3NldF9zcAorc2xrX3RvdWNoCitzbGtfdG91Y2hfc3AKK3N0YW5kZW5kCitzdGFuZG91dAorc3RhcnRfY29sb3IKK3N0YXJ0X2NvbG9yX3NwCitzdWJwYWQKK3N1Yndpbgorc3luY29rCit0ZXJtYXR0cnMKK3Rlcm1hdHRyc19zcAordGVybW5hbWUKK3Rlcm1uYW1lX3NwCit0Z2V0ZW50Cit0Z2V0ZW50X3NwCit0Z2V0ZmxhZwordGdldGZsYWdfc3AKK3RnZXRudW0KK3RnZXRudW1fc3AKK3RnZXRzdHIKK3RnZXRzdHJfc3AKK3Rnb3RvCit0aWdldGZsYWcKK3RpZ2V0ZmxhZ19zcAordGlnZXRudW0KK3RpZ2V0bnVtX3NwCit0aWdldHN0cgordGlnZXRzdHJfc3AKK3RpbWVvdXQKK3RpcGFybQordG9wX3BhbmVsCit0b3Bfcm93Cit0b3VjaGxpbmUKK3RvdWNod2luCit0cGFybQordHB1dHMKK3RwdXRzX3NwCit0cmFjZQordHlwZWFoZWFkCit0eXBlYWhlYWRfc3AKK3VuY3RybAordW5jdHJsX3NwCit1bmdldGNoCit1bmdldGNoX3NwCit1bmdldG1vdXNlCit1bmdldG1vdXNlX3NwCit1bnBvc3RfZm9ybQordW5wb3N0X21lbnUKK3VudG91Y2h3aW4KK3VwZGF0ZV9wYW5lbHMKK3VwZGF0ZV9wYW5lbHNfc3AKK3VzZV9kZWZhdWx0X2NvbG9ycwordXNlX2RlZmF1bHRfY29sb3JzX3NwCit1c2VfZW52Cit1c2VfZW52X3NwCit1c2VfZXh0ZW5kZWRfbmFtZXMKK3VzZV9sZWdhY3lfY29kaW5nCit1c2VfbGVnYWN5X2NvZGluZ19zcAordXNlX3NjcmVlbgordXNlX3Rpb2N0bAordXNlX3Rpb2N0bF9zcAordXNlX3dpbmRvdwordmlkYXR0cgordmlkYXR0cl9zcAordmlkcHV0cwordmlkcHV0c19zcAordmxpbmUKK3Z3X3ByaW50dwordndfc2NhbncKK3Z3cHJpbnR3Cit2d3NjYW53Cit3YWRkY2gKK3dhZGRjaG5zdHIKK3dhZGRjaHN0cgord2FkZG5zdHIKK3dhZGRzdHIKK3dhdHRyX2dldAord2F0dHJfb2ZmCit3YXR0cl9vbgord2F0dHJfc2V0Cit3YXR0cm9mZgord2F0dHJvbgord2F0dHJzZXQKK3dia2dkCit3YmtnZHNldAord2JvcmRlcgord2NoZ2F0Cit3Y2xlYXIKK3djbHJ0b2JvdAord2NscnRvZW9sCit3Y29sb3Jfc2V0Cit3Y3Vyc3luY3VwCit3ZGVsY2gKK3dkZWxldGVsbgord2VjaG9jaGFyCit3ZW5jbG9zZQord2VyYXNlCit3Z2V0Y2gKK3dnZXRjaF9ldmVudHMKK3dnZXRkZWxheQord2dldG5zdHIKK3dnZXRuc3RyX2V2ZW50cword2dldHBhcmVudAord2dldHNjcnJlZword2dldHN0cgord2hsaW5lCit3aW5jaAord2luY2huc3RyCit3aW5jaHN0cgord2lubnN0cgord2luc2NoCit3aW5zZGVsbG4KK3dpbnNlcnRsbgord2luc25zdHIKK3dpbnNzdHIKK3dpbnN0cgord21vdXNlX3RyYWZvCit3bW92ZQord25vdXRyZWZyZXNoCit3cHJpbnR3Cit3cmVkcmF3bG4KK3dyZWZyZXNoCit3cmVzaXplCit3c2NhbncKK3dzY3JsCit3c2V0c2NycmVnCit3c3RhbmRlbmQKK3dzdGFuZG91dAord3N5bmNkb3duCit3c3luY3VwCit3dGltZW91dAord3RvdWNobG4KK3d2bGluZQpkaWZmIC0tZ2l0IGEvcGFja2FnZS9uY3Vyc2VzdHcubWFwIGIvcGFja2FnZS9uY3Vyc2VzdHcubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNjc4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL25jdXJzZXN0dy5tYXAKQEAgLTAsMCArMSwxMjMwIEBACisjICRJZDogbmN1cnNlc3R3Lm1hcCx2IDEuMzEgMjAxNS8wNy8xMSAxMzowMjo0NCB0b20gRXhwICQKKyMgc2NyaXB0IGZvciBzaGFyZWQgbGlicmFyeSBzeW1ib2wtdmVyc2lvbmluZyB1c2luZyBsZAorIworIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBuY3UtbWFwc3ltcworIyBDb25maWd1cmUgb3B0aW9ucyAoNS43LjIwMDgxMTAyKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS44LjIwMTEwMjI2KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxMTA0MDQpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOS4yMDE1MDUzMCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDYuMC5jdXJyZW50KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorCitOQ1VSU0VTX1RJQ181LjAuMTk5OTEwMjMgeworCWdsb2JhbDoKKwkJX25jX2NhcGNtcDsKKwkJX25jX2NoZWNrX3Rlcm10eXBlOworCQlfbmNfZW50cnlfbWF0Y2g7CisJCV9uY19pbmZvdG9jYXA7CisJCV9uY19yZWFkX2VudHJ5X3NvdXJjZTsKKwkJX25jX3Jlc2V0X2lucHV0OworCQlfbmNfcmVzb2x2ZV91c2VzOworCQlfbmNfc2V0X3dyaXRlZGlyOworCQlfbmNfc3ludGF4OworCQlfbmNfdGljX2V4cGFuZDsKKwkJX25jX3RpY193cml0dGVuOworCQlfbmNfdHJhbnNfc3RyaW5nOworCQlfbmNfd3JpdGVfZW50cnk7CisJbG9jYWw6CisJCV9uY19jYXB0b2luZm87CisJCV9uY19jb21tZW50X2VuZDsKKwkJX25jX2NvbW1lbnRfc3RhcnQ7CisJCV9uY19jb3B5X2VudHJ5OworCQlfbmNfY3Vycl9maWxlX3BvczsKKwkJX25jX2N1cnJfdG9rZW47CisJCV9uY19nZXRfdG9rZW47CisJCV9uY19pbml0X2VudHJ5OworCQlfbmNfbWVyZ2VfZW50cnk7CisJCV9uY19wYW5pY19tb2RlOworCQlfbmNfcGFyc2VfZW50cnk7CisJCV9uY19wdXNoX3Rva2VuOworCQlfbmNfc2F2ZV9zdHI7CisJCV9uY19zdGFydF9saW5lOworCQlfbmNfd3JhcF9lbnRyeTsKK307CisKK05DVVJTRVNfVElDXzUuMS4yMDAwMDcwOCB7CisJZ2xvYmFsOgorCQlfbmNfZGlzYWJsZV9wZXJpb2Q7Cit9IE5DVVJTRVNfVElDXzUuMC4xOTk5MTAyMzsKKworTkNVUlNFU19USUNfNS41LjIwMDUxMDEwIHsKKwlnbG9iYWw6CisJCV9uY19hbGxvY19lbnRyeV9sZWFrczsKKwkJX25jX2NhcHRvaW5mb19sZWFrczsKKwkJX25jX2NoZWNrX3Rlcm10eXBlMjsKKwkJX25jX2NvbXBfc2Nhbl9sZWFrczsKKwkJX25jX3Jlc29sdmVfdXNlczI7Cit9IE5DVVJTRVNfVElDXzUuMS4yMDAwMDcwODsKKworTkNVUlNFU19USUNfNS43LjIwMDgxMTAyIHsKKwlnbG9iYWw6CisJCV9uY19mcmVlX3RpYzsKKwlsb2NhbDoKKwkJX25jX2NvbXBfY2FwdGFiX2xlYWtzOworCQlfbmNfbGVha3NfdGljOworfSBOQ1VSU0VTX1RJQ181LjUuMjAwNTEwMTA7CisKK05DVVJTRVNfVElDXzUuOS4yMDE1MDUzMCB7CisJZ2xvYmFsOgorCQlfbmNfc3RyaWN0X2JzZDsKK30gTkNVUlNFU19USUNfNS43LjIwMDgxMTAyOworCitOQ1VSU0VTX1RJTkZPXzUuMC4xOTk5MTAyMyB7CisJZ2xvYmFsOgorCQlCQzsKKwkJUEM7CisJCVNQOworCQlVUDsKKwkJX25jX2FjY2VzczsKKwkJX25jX2FkZF90b190cnk7CisJCV9uY19jb3B5X3Rlcm10eXBlOworCQlfbmNfY3Vycl9jb2w7CisJCV9uY19jdXJyX2xpbmU7CisJCV9uY19kb2FsbG9jOworCQlfbmNfZXJyX2Fib3J0OworCQlfbmNfZmFsbGJhY2s7CisJCV9uY19maW5kX2VudHJ5OworCQlfbmNfZmluZF90eXBlX2VudHJ5OworCQlfbmNfZmlyc3RfbmFtZTsKKwkJX25jX2ZyZWVfZW50cmllczsKKwkJX25jX2ZyZWVfdGVybXR5cGU7CisJCV9uY19mcmVlX3RwYXJtOworCQlfbmNfZnJlZWFsbDsKKwkJX25jX2dldF9oYXNoX3RhYmxlOworCQlfbmNfZ2V0X3RhYmxlOworCQlfbmNfZ2V0X3R0eV9tb2RlOworCQlfbmNfZ2V0X3R5cGU7CisJCV9uY19nZXRlbnZfbnVtOworCQlfbmNfaGVhZDsKKwkJX25jX2hvbWVfdGVybWluZm87CisJCV9uY19pbml0X2FjczsKKwkJX25jX2tlZXBfdGljX2RpcjsKKwkJX25jX2tleXBhZDsKKwkJX25jX25hbWVfbWF0Y2g7CisJCV9uY19vdXRjaDsKKwkJX25jX3JlYWRfZW50cnk7CisJCV9uY19yZWFkX2ZpbGVfZW50cnk7CisJCV9uY19zY3JlZW5fY2hhaW47CisJCV9uY19zZXRfYnVmZmVyOworCQlfbmNfc2V0X3NvdXJjZTsKKwkJX25jX3NldF90dHlfbW9kZTsKKwkJX25jX3NldF90eXBlOworCQlfbmNfc3VwcHJlc3Nfd2FybmluZ3M7CisJCV9uY19zeXNlcnJfYWJvcnQ7CisJCV9uY190YWlsOworCQlfbmNfdGljX2RpcjsKKwkJX25jX3RpbWVkX3dhaXQ7CisJCV9uY190cmFjZV9idWY7CisJCV9uY190cmFjaW5nOworCQlfbmNfdXBkYXRlX3NjcmVlbnNpemU7CisJCV9uY192aXNidWY7CisJCV9uY192aXNidWYyOworCQlfbmNfd2FybmluZzsKKwkJX3RyYWNlY2hhcjsKKwkJYmF1ZHJhdGU7CisJCWNicmVhazsKKwkJY3Vyc19zZXQ7CisJCWN1cnNlc192ZXJzaW9uOworCQlkZWZfcHJvZ19tb2RlOworCQlkZWZfc2hlbGxfbW9kZTsKKwkJZGVmaW5lX2tleTsKKwkJZGVsX2N1cnRlcm07CisJCWRlbGF5X291dHB1dDsKKwkJZXJhc2VjaGFyOworCQlmbHVzaGlucDsKKwkJaGFsZmRlbGF5OworCQloYXNfaWM7CisJCWhhc19pbDsKKwkJaGFzX2tleTsKKwkJaWRjb2s7CisJCWlkbG9rOworCQlpbnRyZmx1c2g7CisJCWtleWJvdW5kOworCQlrZXluYW1lOworCQlrZXlvazsKKwkJa2V5cGFkOworCQlraWxsY2hhcjsKKwkJbG9uZ25hbWU7CisJCW1ldGE7CisJCW5hcG1zOworCQlub2NicmVhazsKKwkJbm9kZWxheTsKKwkJbm9xaWZsdXNoOworCQlub3JhdzsKKwkJbm90aW1lb3V0OworCQlvc3BlZWQ7CisJCXB1dHA7CisJCXFpZmx1c2g7CisJCXJhdzsKKwkJcmVzZXRfcHJvZ19tb2RlOworCQlyZXNldF9zaGVsbF9tb2RlOworCQlyZXNldHR5OworCQlzYXZldHR5OworCQlzZXRfY3VydGVybTsKKwkJc2V0dXB0ZXJtOworCQl0ZXJtbmFtZTsKKwkJdGdldGVudDsKKwkJdGdldGZsYWc7CisJCXRnZXRudW07CisJCXRnZXRzdHI7CisJCXRnb3RvOworCQl0aWdldGZsYWc7CisJCXRpZ2V0bnVtOworCQl0aWdldHN0cjsKKwkJdHBhcm07CisJCXRwdXRzOworCQl0cmFjZTsKKwkJdHlwZWFoZWFkOworCQl1bmN0cmw7CisJCXVzZV9lbnY7CisJCXd0aW1lb3V0OworCWxvY2FsOgorCQlfbmNfYmF1ZHJhdGU7CisJCV9uY19leHBhbmRfdHJ5OworCQlfbmNfaW5pdF9rZXl0cnk7CisJCV9uY19udWxsc19zZW50OworCQlfbmNfb3NwZWVkOworCQlfbmNfcmVhZF90ZXJtY2FwOworCQlfbmNfcmVhZF90ZXJtY2FwX2VudHJ5OworCQlfbmNfcmVtb3ZlX2tleTsKKwkJX25jX3JlbW92ZV9zdHJpbmc7CisJCV9uY190cmFjZV90cmllczsKKwkJX25jX3RyYWNlYml0czsKK307CisKK05DVVJTRVNfVElORk9fNS4xLjIwMDAwNzA4IHsKKwlnbG9iYWw6CisJCV9uY19hbGlnbl90ZXJtdHlwZTsKKwkJX25jX2ZsdXNoOworCQlfbmNfdGluZm9fZmtleXM7CisJCV9uY191c2VyX2RlZmluYWJsZTsKKwkJdXNlX2V4dGVuZGVkX25hbWVzOworfSBOQ1VSU0VTX1RJTkZPXzUuMC4xOTk5MTAyMzsKKworTkNVUlNFU19USU5GT181LjIuMjAwMDEwMjEgeworCWdsb2JhbDoKKwkJX25jX2Jhc2VuYW1lOworCQlfbmNfZW52X2FjY2VzczsKKwkJX25jX3NhZmVfc3RyY2F0OworCQlfbmNfc2FmZV9zdHJjcHk7CisJCV9uY19zdHJfY29weTsKKwkJX25jX3N0cl9pbml0OworCQlfbmNfc3RyX251bGw7Cit9IE5DVVJTRVNfVElORk9fNS4xLjIwMDAwNzA4OworCitOQ1VSU0VTX1RJTkZPXzUuMy4yMDAyMTAxOSB7CisJZ2xvYmFsOgorCQlfbmNfcm9vdG5hbWU7CisJCV9uY190cGFybV9lcnI7CisJCV9uY192aXNidWZuOworfSBOQ1VSU0VTX1RJTkZPXzUuMi4yMDAwMTAyMTsKKworTkNVUlNFU19USU5GT181LjQuMjAwNDAyMDggeworCWdsb2JhbDoKKwkJX25jX2dldF9sb2NhbGU7CisJCV9uY19sb2NhbGVfYnJlYWtzX2FjczsKKwkJX25jX3BhdGhsYXN0OworCQlfbmNfcmV0cmFjZV9hdHRyX3Q7CisJCV9uY19yZXRyYWNlX2Jvb2w7CisJCV9uY19yZXRyYWNlX2NodHlwZTsKKwkJX25jX3JldHJhY2VfaW50OworCQlfbmNfcmV0cmFjZV9wdHI7CisJCV9uY19yZXRyYWNlX3NwOworCQlfbmNfcmV0cmFjZV91bnNpZ25lZDsKKwkJX25jX3JldHJhY2Vfd2luOworCQlfbmNfdHBhcm1fYW5hbHl6ZTsKKwkJX25jX3RyYWNlX2J1ZmNhdDsKKwkJX25jX3VuaWNvZGVfbG9jYWxlOworCQlfdHJhY2VhdHRyOworCQlfdHJhY2VhdHRyMjsKKwkJX3RyYWNlY2h0eXBlOworCQlfdHJhY2VjaHR5cGUyOworCQlfdHJhY2VmOworCQlrZXlfZGVmaW5lZDsKKwlsb2NhbDoKKwkJX25jX2FsdGNoYXJzZXRfbmFtZTsKKwkJX25jX3RyYWNlX3R0eW1vZGU7Cit9IE5DVVJTRVNfVElORk9fNS4zLjIwMDIxMDE5OworCitOQ1VSU0VTX1RJTkZPXzUuNS4yMDA1MTAxMCB7CisJZ2xvYmFsOgorCQlfbmNfZ2V0X3NvdXJjZTsKKwkJX25jX3JldHJhY2VfY3B0cjsKKwkJX25jX3JldHJhY2VfY3ZvaWRfcHRyOworCQlfbmNfcmV0cmFjZV92b2lkX3B0cjsKKwkJX25jX3NldHVwdGVybTsKKwkJX25jX3RyaW1fc2dyMDsKKwlsb2NhbDoKKwkJX25jX2RlbGlua19lbnRyeTsKKwkJX25jX2ZyZWVfZW50cnk7Cit9IE5DVVJTRVNfVElORk9fNS40LjIwMDQwMjA4OworCitOQ1VSU0VTX1RJTkZPXzUuNi4yMDA2MTIxNyB7CisJZ2xvYmFsOgorCQlfbmNfZGJfY2xvc2U7CisJCV9uY19kYl9maXJzdDsKKwkJX25jX2RiX2hhdmVfZGF0YTsKKwkJX25jX2RiX25leHQ7CisJCV9uY19kYl9vcGVuOworCQlfbmNfZGJfcHV0OworCQlfbmNfZXZlbnRsaXN0X3RpbWVvdXQ7CisJCV9uY19maXJzdF9kYjsKKwkJX25jX2hhbmRsZV9zaWd3aW5jaDsKKwkJX25jX2lzX2Fic19wYXRoOworCQlfbmNfaXNfZGlyX3BhdGg7CisJCV9uY19pc19maWxlX3BhdGg7CisJCV9uY19rZXluYW1lX2xlYWtzOworCQlfbmNfbGFzdF9kYjsKKwkJX25jX25leHRfZGI7CisJCV9uY19yZWFkX3Rlcm10eXBlOworCQlfbmNfdGdldGVudF9sZWFrczsKKwkJX25jX3Zpc2NidWY7CisJbG9jYWw6CisJCV9uY19kYl9nZXQ7CisJCV9uY19kYl9oYXZlX2luZGV4OworCQlfbmNfaGFzaGVkX2RiOworCQlfbmNfdmlzY2J1ZjI7Cit9IE5DVVJTRVNfVElORk9fNS41LjIwMDUxMDEwOworCitOQ1VSU0VTX1RJTkZPXzUuNy4yMDA4MTEwMiB7CisJZ2xvYmFsOgorCQlfbmNfQ09MUzsKKwkJX25jX0xJTkVTOworCQlfbmNfVEFCU0laRTsKKwkJX25jX19uY19vdXRjaGFyczsKKwkJX25jX2Fjc19tYXA7CisJCV9uY19ib29sY29kZXM7CisJCV9uY19ib29sZm5hbWVzOworCQlfbmNfYm9vbG5hbWVzOworCQlfbmNfY29kZXNfbGVha3M7CisJCV9uY19jb3VudF9vdXRjaGFyczsKKwkJX25jX2N1cl90ZXJtOworCQlfbmNfY3Vyc2NyOworCQlfbmNfZnJlZV90aW5mbzsKKwkJX25jX2dldF9hbGlhc190YWJsZTsKKwkJX25jX2dldF9zY3JlZW5zaXplOworCQlfbmNfZ2xvYmFsczsKKwkJX25jX2luaXRfcHRocmVhZHM7CisJCV9uY19sZWFrc190aW5mbzsKKwkJX25jX2xvY2tlZF90cmFjZWY7CisJCV9uY19tdXRleF9sb2NrOworCQlfbmNfbXV0ZXhfdHJ5bG9jazsKKwkJX25jX211dGV4X3VubG9jazsKKwkJX25jX25hbWVzX2xlYWtzOworCQlfbmNfbmV3c2NyOworCQlfbmNfbnVtY29kZXM7CisJCV9uY19udW1mbmFtZXM7CisJCV9uY19udW1uYW1lczsKKwkJX25jX3ByZXNjcmVlbjsKKwkJX25jX3B0cl9Db2xzOworCQlfbmNfcHRyX0xpbmVzOworCQlfbmNfc2NyZWVuX29mOworCQlfbmNfc2V0X25vX3BhZGRpbmc7CisJCV9uY19zZXRfdHB1dHNfdHJhY2U7CisJCV9uY19zdGRzY3I7CisJCV9uY19zdHJjb2RlczsKKwkJX25jX3N0cmZuYW1lczsKKwkJX25jX3N0cm5hbWVzOworCQlfbmNfdHJhY2VjaGFyOworCQlfbmNfdHR5dHlwZTsKKwkJX25jX3VzZV90cmFjZWY7CisJCV9uY192aXN3YnVmOworCQlfbmNfdmlzd2J1Zm47CisJCV9uY192aXN3aWJ1ZjsKKwkJX3RyYWNlY2NoYXJfdDsKKwkJX3RyYWNlY2NoYXJfdDI7CisJCXNldF90YWJzaXplOworCWxvY2FsOgorCQlfbmNfX25jX3RwdXRzX3RyYWNlOworCQlfbmNfa2V5bmFtZTsKKwkJX25jX211dGV4X2luaXQ7CisJCV9uY191bmN0cmw7CisJCV9uY192aXN3YnVmMjsKK30gTkNVUlNFU19USU5GT181LjYuMjAwNjEyMTc7CisKK05DVVJTRVNfVElORk9fNS44LjIwMTEwMjI2IHsKKwlnbG9iYWw6CisJCV9uY19mbHVzaF9zcDsKKwkJX25jX2dldF90dHlfbW9kZV9zcDsKKwkJX25jX2luaXRfYWNzX3NwOworCQlfbmNfb3V0Y193cmFwcGVyOworCQlfbmNfb3V0Y2hfc3A7CisJCV9uY19wdXRwOworCQlfbmNfcHV0cF9mbHVzaDsKKwkJX25jX3B1dHBfZmx1c2hfc3A7CisJCV9uY19wdXRwX3NwOworCQlfbmNfcmV0cmFjZV9pbnRfYXR0cl90OworCQlfbmNfc2V0X2J1ZmZlcl9zcDsKKwkJX25jX3NldF90dHlfbW9kZV9zcDsKKwkJX25jX3NpZ3Byb2NtYXNrOworCQliYXVkcmF0ZV9zcDsKKwkJY2JyZWFrX3NwOworCQljdXJzX3NldF9zcDsKKwkJZGVmX3Byb2dfbW9kZV9zcDsKKwkJZGVmX3NoZWxsX21vZGVfc3A7CisJCWRlZmluZV9rZXlfc3A7CisJCWRlbF9jdXJ0ZXJtX3NwOworCQlkZWxheV9vdXRwdXRfc3A7CisJCWVyYXNlY2hhcl9zcDsKKwkJZmx1c2hpbnBfc3A7CisJCWhhbGZkZWxheV9zcDsKKwkJaGFzX2ljX3NwOworCQloYXNfaWxfc3A7CisJCWhhc19rZXlfc3A7CisJCWludHJmbHVzaF9zcDsKKwkJa2V5X2RlZmluZWRfc3A7CisJCWtleWJvdW5kX3NwOworCQlrZXluYW1lX3NwOworCQlrZXlva19zcDsKKwkJa2lsbGNoYXJfc3A7CisJCWxvbmduYW1lX3NwOworCQluYXBtc19zcDsKKwkJbmV3X3ByZXNjcjsKKwkJbm9jYnJlYWtfc3A7CisJCW5vcWlmbHVzaF9zcDsKKwkJbm9yYXdfc3A7CisJCXB1dHBfc3A7CisJCXFpZmx1c2hfc3A7CisJCXJhd19zcDsKKwkJcmVzZXRfcHJvZ19tb2RlX3NwOworCQlyZXNldF9zaGVsbF9tb2RlX3NwOworCQlyZXNldHR5X3NwOworCQlzYXZldHR5X3NwOworCQlzZXRfY3VydGVybV9zcDsKKwkJc2V0X3RhYnNpemVfc3A7CisJCXRlcm1uYW1lX3NwOworCQl0Z2V0ZW50X3NwOworCQl0Z2V0ZmxhZ19zcDsKKwkJdGdldG51bV9zcDsKKwkJdGdldHN0cl9zcDsKKwkJdGlnZXRmbGFnX3NwOworCQl0aWdldG51bV9zcDsKKwkJdGlnZXRzdHJfc3A7CisJCXRpcGFybTsKKwkJdHB1dHNfc3A7CisJCXR5cGVhaGVhZF9zcDsKKwkJdW5jdHJsX3NwOworCQl1c2VfZW52X3NwOworCWxvY2FsOgorCQlfbmNfZ2V0X2N1cl90ZXJtOworCQlfbmNfZ2V0X2N1cl90ZXJtX3NwOworCQlfbmNfZ2V0X2hhc2hfaW5mbzsKKwkJX25jX3B0cl9UYWJzaXplOworCQlfbmNfcmV0cmFjZV9jaGFyOworCQlfbmNfc2V0dXBfdGluZm87CisJCV9uY190aW5mb19jbWRjaDsKK30gTkNVUlNFU19USU5GT181LjcuMjAwODExMDI7CisKK05DVVJTRVNfVElORk9fNS45LjIwMTUwNTMwIHsKKwlnbG9iYWw6CisJCV9uY19pbml0X3Rlcm10eXBlOworCQlfbmNfcHV0Y2hhcjsKKwkJX25jX3B1dGNoYXJfc3A7CisJCXVzZV90aW9jdGw7CisJCXVzZV90aW9jdGxfc3A7CisJbG9jYWw6CisJCV8qOworCQlfbmNfY29tcF9lcnJvcl9sZWFrczsKKwkJX25jX2RiX2l0ZXJhdG9yX2xlYWtzOworCQlfbmNfc2V0ZW52X251bTsKK30gTkNVUlNFU19USU5GT181LjguMjAxMTAyMjY7CisKK05DVVJTRVNUV181LjcuMjAwODExMDIgeworCWdsb2JhbDoKKwkJQ09MT1JfUEFJUjsKKwkJUEFJUl9OVU1CRVI7CisJCVRZUEVfQUxOVU07CisJCVRZUEVfQUxQSEE7CisJCVRZUEVfRU5VTTsKKwkJVFlQRV9JTlRFR0VSOworCQlUWVBFX0lQVjQ7CisJCVRZUEVfTlVNRVJJQzsKKwkJVFlQRV9SRUdFWFA7CisJCV9uY19DT0xPUlM7CisJCV9uY19DT0xPUl9QQUlSUzsKKwkJX25jX0RlZmF1bHRfRmllbGQ7CSMgZGVwcmVjYXRlZCBpbiBBQkk2CisJCV9uY19EZWZhdWx0X0Zvcm07CSMgZGVwcmVjYXRlZCBpbiBBQkk2CisJCV9uY19FU0NERUxBWTsKKwkJX25jX2ZyZWVfYW5kX2V4aXQ7CisJCV9uY19oYXNfbW91c2U7CSMgZGVwcmVjYXRlZCBpbiBBQkk2CisJCV9uY19vcHRpbWl6ZV9lbmFibGU7CisJCV9uY19wYW5lbGhvb2s7CisJCV9uY19yaXBvZmZsaW5lOworCQlfbmNfd2FjczsKKwkJX25jX3djcnRvbWI7CisJCWFkZF93Y2g7CisJCWFkZF93Y2huc3RyOworCQlhZGRfd2Noc3RyOworCQlhZGRjaDsKKwkJYWRkY2huc3RyOworCQlhZGRjaHN0cjsKKwkJYWRkbnN0cjsKKwkJYWRkbndzdHI7CisJCWFkZHN0cjsKKwkJYWRkd3N0cjsKKwkJYXNzdW1lX2RlZmF1bHRfY29sb3JzOworCQlhdHRyX2dldDsKKwkJYXR0cl9vZmY7CisJCWF0dHJfb247CisJCWF0dHJfc2V0OworCQlhdHRyb2ZmOworCQlhdHRyb247CisJCWF0dHJzZXQ7CisJCWJlZXA7CisJCWJrZ2Q7CisJCWJrZ2RzZXQ7CisJCWJrZ3JuZDsKKwkJYmtncm5kc2V0OworCQlib3JkZXI7CisJCWJvcmRlcl9zZXQ7CisJCWJvdHRvbV9wYW5lbDsKKwkJYm94OworCQlib3hfc2V0OworCQljYW5fY2hhbmdlX2NvbG9yOworCQljaGdhdDsKKwkJY2xlYXI7CisJCWNsZWFyb2s7CisJCWNscnRvYm90OworCQljbHJ0b2VvbDsKKwkJY29sb3JfY29udGVudDsKKwkJY29sb3Jfc2V0OworCQljb3B5d2luOworCQljdXJyZW50X2ZpZWxkOworCQljdXJyZW50X2l0ZW07CisJCWRhdGFfYWhlYWQ7CisJCWRhdGFfYmVoaW5kOworCQlkZWxfcGFuZWw7CisJCWRlbGNoOworCQlkZWxldGVsbjsKKwkJZGVsc2NyZWVuOworCQlkZWx3aW47CisJCWRlcndpbjsKKwkJZG91cGRhdGU7CisJCWR1cF9maWVsZDsKKwkJZHVwd2luOworCQlkeW5hbWljX2ZpZWxkX2luZm87CisJCWVjaG87CisJCWVjaG9fd2NoYXI7CisJCWVjaG9jaGFyOworCQllbmR3aW47CisJCWVyYXNlOworCQllcmFzZXdjaGFyOworCQlmaWVsZF9hcmc7CisJCWZpZWxkX2JhY2s7CisJCWZpZWxkX2J1ZmZlcjsKKwkJZmllbGRfY291bnQ7CisJCWZpZWxkX2ZvcmU7CisJCWZpZWxkX2luZGV4OworCQlmaWVsZF9pbmZvOworCQlmaWVsZF9pbml0OworCQlmaWVsZF9qdXN0OworCQlmaWVsZF9vcHRzOworCQlmaWVsZF9vcHRzX29mZjsKKwkJZmllbGRfb3B0c19vbjsKKwkJZmllbGRfcGFkOworCQlmaWVsZF9zdGF0dXM7CisJCWZpZWxkX3Rlcm07CisJCWZpZWxkX3R5cGU7CisJCWZpZWxkX3VzZXJwdHI7CisJCWZpbHRlcjsKKwkJZmxhc2g7CisJCWZvcm1fZHJpdmVyOworCQlmb3JtX2ZpZWxkczsKKwkJZm9ybV9pbml0OworCQlmb3JtX29wdHM7CisJCWZvcm1fb3B0c19vZmY7CisJCWZvcm1fb3B0c19vbjsKKwkJZm9ybV9wYWdlOworCQlmb3JtX3JlcXVlc3RfYnlfbmFtZTsKKwkJZm9ybV9yZXF1ZXN0X25hbWU7CisJCWZvcm1fc3ViOworCQlmb3JtX3Rlcm07CisJCWZvcm1fdXNlcnB0cjsKKwkJZm9ybV93aW47CisJCWZyZWVfZmllbGQ7CisJCWZyZWVfZmllbGR0eXBlOworCQlmcmVlX2Zvcm07CisJCWZyZWVfaXRlbTsKKwkJZnJlZV9tZW51OworCQlnZXRfd2NoOworCQlnZXRfd3N0cjsKKwkJZ2V0YXR0cnM7CisJCWdldGJlZ3g7CisJCWdldGJlZ3k7CisJCWdldGJrZ2Q7CisJCWdldGJrZ3JuZDsKKwkJZ2V0Y2NoYXI7CisJCWdldGNoOworCQlnZXRjdXJ4OworCQlnZXRjdXJ5OworCQlnZXRtYXh4OworCQlnZXRtYXh5OworCQlnZXRtb3VzZTsKKwkJZ2V0bl93c3RyOworCQlnZXRuc3RyOworCQlnZXRwYXJ4OworCQlnZXRwYXJ5OworCQlnZXRzdHI7CisJCWdldHdpbjsKKwkJaGFzX2NvbG9yczsKKwkJaGlkZV9wYW5lbDsKKwkJaGxpbmU7CisJCWhsaW5lX3NldDsKKwkJaW1tZWRvazsKKwkJaW5fd2NoOworCQlpbl93Y2huc3RyOworCQlpbl93Y2hzdHI7CisJCWluY2g7CisJCWluY2huc3RyOworCQlpbmNoc3RyOworCQlpbml0X2NvbG9yOworCQlpbml0X3BhaXI7CisJCWluaXRzY3I7CisJCWlubnN0cjsKKwkJaW5ud3N0cjsKKwkJaW5zX253c3RyOworCQlpbnNfd2NoOworCQlpbnNfd3N0cjsKKwkJaW5zY2g7CisJCWluc2RlbGxuOworCQlpbnNlcnRsbjsKKwkJaW5zbnN0cjsKKwkJaW5zc3RyOworCQlpbnN0cjsKKwkJaW53c3RyOworCQlpc19jbGVhcmVkOworCQlpc19pZGNvazsKKwkJaXNfaWRsb2s7CisJCWlzX2ltbWVkb2s7CisJCWlzX2tleXBhZDsKKwkJaXNfbGVhdmVvazsKKwkJaXNfbGluZXRvdWNoZWQ7CisJCWlzX25vZGVsYXk7CisJCWlzX25vdGltZW91dDsKKwkJaXNfc2Nyb2xsb2s7CisJCWlzX3N5bmNvazsKKwkJaXNfdGVybV9yZXNpemVkOworCQlpc193aW50b3VjaGVkOworCQlpc2VuZHdpbjsKKwkJaXRlbV9jb3VudDsKKwkJaXRlbV9kZXNjcmlwdGlvbjsKKwkJaXRlbV9pbmRleDsKKwkJaXRlbV9pbml0OworCQlpdGVtX25hbWU7CisJCWl0ZW1fb3B0czsKKwkJaXRlbV9vcHRzX29mZjsKKwkJaXRlbV9vcHRzX29uOworCQlpdGVtX3Rlcm07CisJCWl0ZW1fdXNlcnB0cjsKKwkJaXRlbV92YWx1ZTsKKwkJaXRlbV92aXNpYmxlOworCQlrZXlfbmFtZTsKKwkJa2lsbHdjaGFyOworCQlsZWF2ZW9rOworCQlsaW5rX2ZpZWxkOworCQlsaW5rX2ZpZWxkdHlwZTsKKwkJbWNwcmludDsKKwkJbWVudV9iYWNrOworCQltZW51X2RyaXZlcjsKKwkJbWVudV9mb3JlOworCQltZW51X2Zvcm1hdDsKKwkJbWVudV9ncmV5OworCQltZW51X2luaXQ7CisJCW1lbnVfaXRlbXM7CisJCW1lbnVfbWFyazsKKwkJbWVudV9vcHRzOworCQltZW51X29wdHNfb2ZmOworCQltZW51X29wdHNfb247CisJCW1lbnVfcGFkOworCQltZW51X3BhdHRlcm47CisJCW1lbnVfcmVxdWVzdF9ieV9uYW1lOworCQltZW51X3JlcXVlc3RfbmFtZTsKKwkJbWVudV9zcGFjaW5nOworCQltZW51X3N1YjsKKwkJbWVudV90ZXJtOworCQltZW51X3VzZXJwdHI7CisJCW1lbnVfd2luOworCQltb3VzZV90cmFmbzsKKwkJbW91c2VpbnRlcnZhbDsKKwkJbW91c2VtYXNrOworCQltb3ZlOworCQltb3ZlX2ZpZWxkOworCQltb3ZlX3BhbmVsOworCQltdmFkZF93Y2g7CisJCW12YWRkX3djaG5zdHI7CisJCW12YWRkX3djaHN0cjsKKwkJbXZhZGRjaDsKKwkJbXZhZGRjaG5zdHI7CisJCW12YWRkY2hzdHI7CisJCW12YWRkbnN0cjsKKwkJbXZhZGRud3N0cjsKKwkJbXZhZGRzdHI7CisJCW12YWRkd3N0cjsKKwkJbXZjaGdhdDsKKwkJbXZjdXI7CisJCW12ZGVsY2g7CisJCW12ZGVyd2luOworCQltdmdldF93Y2g7CisJCW12Z2V0X3dzdHI7CisJCW12Z2V0Y2g7CisJCW12Z2V0bl93c3RyOworCQltdmdldG5zdHI7CisJCW12Z2V0c3RyOworCQltdmhsaW5lOworCQltdmhsaW5lX3NldDsKKwkJbXZpbl93Y2g7CisJCW12aW5fd2NobnN0cjsKKwkJbXZpbl93Y2hzdHI7CisJCW12aW5jaDsKKwkJbXZpbmNobnN0cjsKKwkJbXZpbmNoc3RyOworCQltdmlubnN0cjsKKwkJbXZpbm53c3RyOworCQltdmluc19ud3N0cjsKKwkJbXZpbnNfd2NoOworCQltdmluc193c3RyOworCQltdmluc2NoOworCQltdmluc25zdHI7CisJCW12aW5zc3RyOworCQltdmluc3RyOworCQltdmlud3N0cjsKKwkJbXZwcmludHc7CisJCW12c2Nhbnc7CisJCW12dmxpbmU7CisJCW12dmxpbmVfc2V0OworCQltdndhZGRfd2NoOworCQltdndhZGRfd2NobnN0cjsKKwkJbXZ3YWRkX3djaHN0cjsKKwkJbXZ3YWRkY2g7CisJCW12d2FkZGNobnN0cjsKKwkJbXZ3YWRkY2hzdHI7CisJCW12d2FkZG5zdHI7CisJCW12d2FkZG53c3RyOworCQltdndhZGRzdHI7CisJCW12d2FkZHdzdHI7CisJCW12d2NoZ2F0OworCQltdndkZWxjaDsKKwkJbXZ3Z2V0X3djaDsKKwkJbXZ3Z2V0X3dzdHI7CisJCW12d2dldGNoOworCQltdndnZXRuX3dzdHI7CisJCW12d2dldG5zdHI7CisJCW12d2dldHN0cjsKKwkJbXZ3aGxpbmU7CisJCW12d2hsaW5lX3NldDsKKwkJbXZ3aW47CisJCW12d2luX3djaDsKKwkJbXZ3aW5fd2NobnN0cjsKKwkJbXZ3aW5fd2Noc3RyOworCQltdndpbmNoOworCQltdndpbmNobnN0cjsKKwkJbXZ3aW5jaHN0cjsKKwkJbXZ3aW5uc3RyOworCQltdndpbm53c3RyOworCQltdndpbnNfbndzdHI7CisJCW12d2luc193Y2g7CisJCW12d2luc193c3RyOworCQltdndpbnNjaDsKKwkJbXZ3aW5zbnN0cjsKKwkJbXZ3aW5zc3RyOworCQltdndpbnN0cjsKKwkJbXZ3aW53c3RyOworCQltdndwcmludHc7CisJCW12d3NjYW53OworCQltdnd2bGluZTsKKwkJbXZ3dmxpbmVfc2V0OworCQluZXdfZmllbGQ7CisJCW5ld19maWVsZHR5cGU7CisJCW5ld19mb3JtOworCQluZXdfaXRlbTsKKwkJbmV3X21lbnU7CisJCW5ld19wYWdlOworCQluZXdfcGFuZWw7CisJCW5ld3BhZDsKKwkJbmV3dGVybTsKKwkJbmV3d2luOworCQlubDsKKwkJbm9lY2hvOworCQlub2ZpbHRlcjsKKwkJbm9ubDsKKwkJb3ZlcmxheTsKKwkJb3ZlcndyaXRlOworCQlwYWlyX2NvbnRlbnQ7CisJCXBhbmVsX2Fib3ZlOworCQlwYW5lbF9iZWxvdzsKKwkJcGFuZWxfaGlkZGVuOworCQlwYW5lbF91c2VycHRyOworCQlwYW5lbF93aW5kb3c7CisJCXBlY2hvX3djaGFyOworCQlwZWNob2NoYXI7CisJCXBub3V0cmVmcmVzaDsKKwkJcG9zX2Zvcm1fY3Vyc29yOworCQlwb3NfbWVudV9jdXJzb3I7CisJCXBvc3RfZm9ybTsKKwkJcG9zdF9tZW51OworCQlwcmVmcmVzaDsKKwkJcHJpbnR3OworCQlwdXR3aW47CisJCXJlZHJhd3dpbjsKKwkJcmVmcmVzaDsKKwkJcmVwbGFjZV9wYW5lbDsKKwkJcmVzaXplX3Rlcm07CisJCXJlc2l6ZXRlcm07CisJCXJlc3RhcnR0ZXJtOworCQlyaXBvZmZsaW5lOworCQlzY2FsZV9mb3JtOworCQlzY2FsZV9tZW51OworCQlzY2FudzsKKwkJc2NyX2R1bXA7CisJCXNjcl9pbml0OworCQlzY3JfcmVzdG9yZTsKKwkJc2NyX3NldDsKKwkJc2NybDsKKwkJc2Nyb2xsOworCQlzY3JvbGxvazsKKwkJc2V0X2N1cnJlbnRfZmllbGQ7CisJCXNldF9jdXJyZW50X2l0ZW07CisJCXNldF9lc2NkZWxheTsKKwkJc2V0X2ZpZWxkX2JhY2s7CisJCXNldF9maWVsZF9idWZmZXI7CisJCXNldF9maWVsZF9mb3JlOworCQlzZXRfZmllbGRfaW5pdDsKKwkJc2V0X2ZpZWxkX2p1c3Q7CisJCXNldF9maWVsZF9vcHRzOworCQlzZXRfZmllbGRfcGFkOworCQlzZXRfZmllbGRfc3RhdHVzOworCQlzZXRfZmllbGRfdGVybTsKKwkJc2V0X2ZpZWxkX3R5cGU7CisJCXNldF9maWVsZF91c2VycHRyOworCQlzZXRfZmllbGR0eXBlX2FyZzsKKwkJc2V0X2ZpZWxkdHlwZV9jaG9pY2U7CisJCXNldF9mb3JtX2ZpZWxkczsKKwkJc2V0X2Zvcm1faW5pdDsKKwkJc2V0X2Zvcm1fb3B0czsKKwkJc2V0X2Zvcm1fcGFnZTsKKwkJc2V0X2Zvcm1fc3ViOworCQlzZXRfZm9ybV90ZXJtOworCQlzZXRfZm9ybV91c2VycHRyOworCQlzZXRfZm9ybV93aW47CisJCXNldF9pdGVtX2luaXQ7CisJCXNldF9pdGVtX29wdHM7CisJCXNldF9pdGVtX3Rlcm07CisJCXNldF9pdGVtX3VzZXJwdHI7CisJCXNldF9pdGVtX3ZhbHVlOworCQlzZXRfbWF4X2ZpZWxkOworCQlzZXRfbWVudV9iYWNrOworCQlzZXRfbWVudV9mb3JlOworCQlzZXRfbWVudV9mb3JtYXQ7CisJCXNldF9tZW51X2dyZXk7CisJCXNldF9tZW51X2luaXQ7CisJCXNldF9tZW51X2l0ZW1zOworCQlzZXRfbWVudV9tYXJrOworCQlzZXRfbWVudV9vcHRzOworCQlzZXRfbWVudV9wYWQ7CisJCXNldF9tZW51X3BhdHRlcm47CisJCXNldF9tZW51X3NwYWNpbmc7CisJCXNldF9tZW51X3N1YjsKKwkJc2V0X21lbnVfdGVybTsKKwkJc2V0X21lbnVfdXNlcnB0cjsKKwkJc2V0X21lbnVfd2luOworCQlzZXRfbmV3X3BhZ2U7CisJCXNldF9wYW5lbF91c2VycHRyOworCQlzZXRfdGVybTsKKwkJc2V0X3RvcF9yb3c7CisJCXNldGNjaGFyOworCQlzZXRzY3JyZWc7CisJCXNob3dfcGFuZWw7CisJCXNsa19hdHRyOworCQlzbGtfYXR0cl9vZmY7CisJCXNsa19hdHRyX29uOworCQlzbGtfYXR0cl9zZXQ7CisJCXNsa19hdHRyb2ZmOworCQlzbGtfYXR0cm9uOworCQlzbGtfYXR0cnNldDsKKwkJc2xrX2NsZWFyOworCQlzbGtfY29sb3I7CisJCXNsa19pbml0OworCQlzbGtfbGFiZWw7CisJCXNsa19ub3V0cmVmcmVzaDsKKwkJc2xrX3JlZnJlc2g7CisJCXNsa19yZXN0b3JlOworCQlzbGtfc2V0OworCQlzbGtfdG91Y2g7CisJCXNsa193c2V0OworCQlzdGFuZGVuZDsKKwkJc3RhbmRvdXQ7CisJCXN0YXJ0X2NvbG9yOworCQlzdWJwYWQ7CisJCXN1YndpbjsKKwkJc3luY29rOworCQl0ZXJtX2F0dHJzOworCQl0ZXJtYXR0cnM7CisJCXRpbWVvdXQ7CisJCXRvcF9wYW5lbDsKKwkJdG9wX3JvdzsKKwkJdG91Y2hsaW5lOworCQl0b3VjaHdpbjsKKwkJdW5nZXRfd2NoOworCQl1bmdldGNoOworCQl1bmdldG1vdXNlOworCQl1bnBvc3RfZm9ybTsKKwkJdW5wb3N0X21lbnU7CisJCXVudG91Y2h3aW47CisJCXVwZGF0ZV9wYW5lbHM7CisJCXVzZV9kZWZhdWx0X2NvbG9yczsKKwkJdXNlX2xlZ2FjeV9jb2Rpbmc7CisJCXVzZV9zY3JlZW47CisJCXVzZV93aW5kb3c7CisJCXZpZF9hdHRyOworCQl2aWRfcHV0czsKKwkJdmlkYXR0cjsKKwkJdmlkcHV0czsKKwkJdmxpbmU7CisJCXZsaW5lX3NldDsKKwkJdndfcHJpbnR3OworCQl2d19zY2FudzsKKwkJdndwcmludHc7CisJCXZ3c2Nhbnc7CisJCXdhZGRfd2NoOworCQl3YWRkX3djaG5zdHI7CisJCXdhZGRfd2Noc3RyOworCQl3YWRkY2g7CisJCXdhZGRjaG5zdHI7CisJCXdhZGRjaHN0cjsKKwkJd2FkZG5zdHI7CisJCXdhZGRud3N0cjsKKwkJd2FkZHN0cjsKKwkJd2FkZHdzdHI7CisJCXdhdHRyX2dldDsKKwkJd2F0dHJfb2ZmOworCQl3YXR0cl9vbjsKKwkJd2F0dHJfc2V0OworCQl3YXR0cm9mZjsKKwkJd2F0dHJvbjsKKwkJd2F0dHJzZXQ7CisJCXdia2dkOworCQl3YmtnZHNldDsKKwkJd2JrZ3JuZDsKKwkJd2JrZ3JuZHNldDsKKwkJd2JvcmRlcjsKKwkJd2JvcmRlcl9zZXQ7CisJCXdjaGdhdDsKKwkJd2NsZWFyOworCQl3Y2xydG9ib3Q7CisJCXdjbHJ0b2VvbDsKKwkJd2NvbG9yX3NldDsKKwkJd2N1cnN5bmN1cDsKKwkJd2RlbGNoOworCQl3ZGVsZXRlbG47CisJCXdlY2hvX3djaGFyOworCQl3ZWNob2NoYXI7CisJCXdlbmNsb3NlOworCQl3ZXJhc2U7CisJCXdnZXRfd2NoOworCQl3Z2V0X3dzdHI7CisJCXdnZXRia2dybmQ7CisJCXdnZXRjaDsKKwkJd2dldGNoX2V2ZW50czsKKwkJd2dldG5fd3N0cjsKKwkJd2dldG5zdHI7CisJCXdnZXRuc3RyX2V2ZW50czsKKwkJd2dldHBhcmVudDsKKwkJd2dldHNjcnJlZzsKKwkJd2dldHN0cjsKKwkJd2hsaW5lOworCQl3aGxpbmVfc2V0OworCQl3aW5fd2NoOworCQl3aW5fd2NobnN0cjsKKwkJd2luX3djaHN0cjsKKwkJd2luY2g7CisJCXdpbmNobnN0cjsKKwkJd2luY2hzdHI7CisJCXdpbm5zdHI7CisJCXdpbm53c3RyOworCQl3aW5zX253c3RyOworCQl3aW5zX3djaDsKKwkJd2luc193c3RyOworCQl3aW5zY2g7CisJCXdpbnNkZWxsbjsKKwkJd2luc2VydGxuOworCQl3aW5zbnN0cjsKKwkJd2luc3N0cjsKKwkJd2luc3RyOworCQl3aW53c3RyOworCQl3bW91c2VfdHJhZm87CisJCXdtb3ZlOworCQl3bm91dHJlZnJlc2g7CisJCXdwcmludHc7CisJCXdyZWRyYXdsbjsKKwkJd3JlZnJlc2g7CisJCXdyZXNpemU7CisJCXdzY2FudzsKKwkJd3Njcmw7CisJCXdzZXRzY3JyZWc7CisJCXdzdGFuZGVuZDsKKwkJd3N0YW5kb3V0OworCQl3c3luY2Rvd247CisJCXdzeW5jdXA7CisJCXd0b3VjaGxuOworCQl3dW5jdHJsOworCQl3dmxpbmU7CisJCXd2bGluZV9zZXQ7CisJbG9jYWw6CisJCV9uY19DYWxjdWxhdGVfSXRlbV9MZW5ndGhfYW5kX1dpZHRoOworCQlfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGg7CisJCV9uY19Db25uZWN0X0l0ZW1zOworCQlfbmNfQ29weV9Bcmd1bWVudDsKKwkJX25jX0NvcHlfVHlwZTsKKwkJX25jX0RlZmF1bHRfRmllbGRUeXBlOworCQlfbmNfRGVmYXVsdF9JdGVtOworCQlfbmNfRGVmYXVsdF9NZW51OworCQlfbmNfRGlzY29ubmVjdF9JdGVtczsKKwkJX25jX0RyYXdfTWVudTsKKwkJX25jX0ZpcnN0X0FjdGl2ZV9GaWVsZDsKKwkJX25jX0ZyZWVfQXJndW1lbnQ7CisJCV9uY19GcmVlX1R5cGU7CisJCV9uY19JbnRlcm5hbF9WYWxpZGF0aW9uOworCQlfbmNfTGlua19JdGVtczsKKwkJX25jX01ha2VfQXJndW1lbnQ7CisJCV9uY19NYXRjaF9OZXh0X0NoYXJhY3Rlcl9Jbl9JdGVtX05hbWU7CisJCV9uY19OZXdfVG9wUm93X2FuZF9DdXJyZW50SXRlbTsKKwkJX25jX1Bvc2l0aW9uX0Zvcm1fQ3Vyc29yOworCQlfbmNfUG9zdF9JdGVtOworCQlfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkOworCQlfbmNfU2V0X0N1cnJlbnRfRmllbGQ7CisJCV9uY19TZXRfRm9ybV9QYWdlOworCQlfbmNfU2hvd19NZW51OworCQlfbmNfU3luY2hyb25pemVfQXR0cmlidXRlczsKKwkJX25jX1N5bmNocm9uaXplX09wdGlvbnM7CisJCV9uY19Ub3VjaGxpbmU7CisJCV9uY19Ub3VjaHBhbjsKKwkJX25jX1dpZGVuX1N0cmluZzsKKwkJX25jX1dub3V0cmVmcmVzaDsKKwkJX25jX2J1aWxkX3djaDsKKwkJX25jX2RQYW5lbDsKKwkJX25jX2RTdGFjazsKKwkJX25jX2RvX2NvbG9yOworCQlfbmNfZXhwYW5kZWQ7CisJCV9uY19maWZvX2R1bXA7CisJCV9uY19mcmVld2luOworCQlfbmNfaGFzaF9tYXA7CisJCV9uY19pbml0X3dhY3M7CisJCV9uY19pbnNlcnRfY2g7CisJCV9uY19pc19jaGFyYWJsZTsKKwkJX25jX2xpbmVkdW1wOworCQlfbmNfbWFrZV9vbGRoYXNoOworCQlfbmNfbWFrZW5ldzsKKwkJX25jX21lbW1vdmU7CisJCV9uY19tZW51X2N1cnNvcl9wb3M7CisJCV9uY19tc2VjX2Nvc3Q7CisJCV9uY19tdmN1cl9pbml0OworCQlfbmNfbXZjdXJfcmVzdW1lOworCQlfbmNfbXZjdXJfd3JhcDsKKwkJX25jX215X3Zpc2J1ZjsKKwkJX25jX29sZG51bXM7CisJCV9uY19wcmludGZfc3RyaW5nOworCQlfbmNfcmVuZGVyOworCQlfbmNfcmVzZXRfY29sb3JzOworCQlfbmNfcmV0cmFjZV9maWVsZDsKKwkJX25jX3JldHJhY2VfZmllbGRfcHRyOworCQlfbmNfcmV0cmFjZV9maWVsZF90eXBlOworCQlfbmNfcmV0cmFjZV9mb3JtOworCQlfbmNfcmV0cmFjZV9mb3JtX2hvb2s7CisJCV9uY19yZXRyYWNlX2l0ZW07CisJCV9uY19yZXRyYWNlX2l0ZW1fb3B0czsKKwkJX25jX3JldHJhY2VfaXRlbV9wdHI7CisJCV9uY19yZXRyYWNlX21lbnU7CisJCV9uY19yZXRyYWNlX21lbnVfaG9vazsKKwkJX25jX3JldHJhY2VfbWVudV9vcHRzOworCQlfbmNfcmV0cmFjZV9wYW5lbDsKKwkJX25jX3NjcmVlbl9pbml0OworCQlfbmNfc2NyZWVuX3Jlc3VtZTsKKwkJX25jX3NjcmVlbl93cmFwOworCQlfbmNfc2Nyb2xsX29sZGhhc2g7CisJCV9uY19zY3JvbGxfb3B0aW1pemU7CisJCV9uY19zY3JvbGxfd2luZG93OworCQlfbmNfc2Nyb2xsbjsKKwkJX25jX3NldHVwc2NyZWVuOworCQlfbmNfc2lnbmFsX2hhbmRsZXI7CisJCV9uY19zbGtfaW5pdGlhbGl6ZTsKKwkJX25jX3N5bmNob29rOworCQlfbmNfdG9fY2hhcjsKKwkJX25jX3RvX3dpZGVjaGFyOworCQlfbmNfdHJhY2VfeG5hbWVzOworCQlfbmNfdHJhY2Vtb3VzZTsKKwkJX25jX3VuZ2V0Y2g7CisJCV9uY192YXJhcmdzOworCQlfbmNfdnNzY2FuZjsKKwkJX25jX3dhZGRjaF9ub3N5bmM7CisJCV9uY193Y2hzdHJsZW47CisJCV9uY193Z2V0Y2g7CisJCV90cmFjZWR1bXA7CisJCV90cmFjZW1vdXNlOworfTsKKworTkNVUlNFU1RXXzUuOC4yMDExMDIyNiB7CisJZ2xvYmFsOgorCQlfbmNfcGFuZWxob29rX3NwOworCQlhc3N1bWVfZGVmYXVsdF9jb2xvcnNfc3A7CisJCWJlZXBfc3A7CisJCWNhbl9jaGFuZ2VfY29sb3Jfc3A7CisJCWNlaWxpbmdfcGFuZWw7CisJCWNvbG9yX2NvbnRlbnRfc3A7CisJCWRvdXBkYXRlX3NwOworCQllY2hvX3NwOworCQllbmR3aW5fc3A7CisJCWZpbHRlcl9zcDsKKwkJZmxhc2hfc3A7CisJCWdldF9lc2NkZWxheTsKKwkJZ2V0X2VzY2RlbGF5X3NwOworCQlnZXRtb3VzZV9zcDsKKwkJZ2V0d2luX3NwOworCQlncm91bmRfcGFuZWw7CisJCWhhc19jb2xvcnNfc3A7CisJCWhhc19tb3VzZTsKKwkJaGFzX21vdXNlX3NwOworCQlpbml0X2NvbG9yX3NwOworCQlpbml0X3BhaXJfc3A7CisJCWlzX3BhZDsKKwkJaXNfc3Vid2luOworCQlpc190ZXJtX3Jlc2l6ZWRfc3A7CisJCWlzZW5kd2luX3NwOworCQltY3ByaW50X3NwOworCQltb3VzZWludGVydmFsX3NwOworCQltb3VzZW1hc2tfc3A7CisJCW12Y3VyX3NwOworCQluZXdfZm9ybV9zcDsKKwkJbmV3X21lbnVfc3A7CisJCW5ld3BhZF9zcDsKKwkJbmV3dGVybV9zcDsKKwkJbmV3d2luX3NwOworCQlubF9zcDsKKwkJbm9lY2hvX3NwOworCQlub2ZpbHRlcl9zcDsKKwkJbm9ubF9zcDsKKwkJcGFpcl9jb250ZW50X3NwOworCQlyZXNpemVfdGVybV9zcDsKKwkJcmVzaXpldGVybV9zcDsKKwkJcmVzdGFydHRlcm1fc3A7CisJCXJpcG9mZmxpbmVfc3A7CisJCXNjcl9pbml0X3NwOworCQlzY3JfcmVzdG9yZV9zcDsKKwkJc2NyX3NldF9zcDsKKwkJc2V0X2VzY2RlbGF5X3NwOworCQlzbGtfYXR0cl9zZXRfc3A7CisJCXNsa19hdHRyX3NwOworCQlzbGtfYXR0cm9mZl9zcDsKKwkJc2xrX2F0dHJvbl9zcDsKKwkJc2xrX2F0dHJzZXRfc3A7CisJCXNsa19jbGVhcl9zcDsKKwkJc2xrX2NvbG9yX3NwOworCQlzbGtfaW5pdF9zcDsKKwkJc2xrX2xhYmVsX3NwOworCQlzbGtfbm91dHJlZnJlc2hfc3A7CisJCXNsa19yZWZyZXNoX3NwOworCQlzbGtfcmVzdG9yZV9zcDsKKwkJc2xrX3NldF9zcDsKKwkJc2xrX3RvdWNoX3NwOworCQlzdGFydF9jb2xvcl9zcDsKKwkJdGVybV9hdHRyc19zcDsKKwkJdGVybWF0dHJzX3NwOworCQl1bmdldF93Y2hfc3A7CisJCXVuZ2V0Y2hfc3A7CisJCXVuZ2V0bW91c2Vfc3A7CisJCXVwZGF0ZV9wYW5lbHNfc3A7CisJCXVzZV9kZWZhdWx0X2NvbG9yc19zcDsKKwkJdXNlX2xlZ2FjeV9jb2Rpbmdfc3A7CisJCXZpZF9hdHRyX3NwOworCQl2aWRfcHV0c19zcDsKKwkJdmlkYXR0cl9zcDsKKwkJdmlkcHV0c19zcDsKKwkJd3VuY3RybF9zcDsKKwlsb2NhbDoKKwkJX25jX1RZUEVfQUxOVU07CisJCV9uY19UWVBFX0FMUEhBOworCQlfbmNfVFlQRV9FTlVNOworCQlfbmNfVFlQRV9JTlRFR0VSOworCQlfbmNfVFlQRV9JUFY0OworCQlfbmNfVFlQRV9OVU1FUklDOworCQlfbmNfVFlQRV9SRUdFWFA7CisJCV9uY19jdXJzY3Jfb2Y7CisJCV9uY19kb19jb2xvcl9zcDsKKwkJX25jX2Zvcm1fY3Vyc29yOworCQlfbmNfZm9ybWF0X3Nsa3M7CisJCV9uY19mcmVlX2FuZF9leGl0X3NwOworCQlfbmNfZnJlZWFsbF9zcDsKKwkJX25jX2Z0eV9nZW5lcmljOworCQlfbmNfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19nZXRfZmllbGRidWZmZXI7CisJCV9uY19oYXNoX21hcF9zcDsKKwkJX25jX2luc2VydF93Y2g7CisJCV9uY19saW5lZHVtcF9zcDsKKwkJX25jX21ha2Vfb2xkaGFzaF9zcDsKKwkJX25jX21ha2VuZXdfc3A7CisJCV9uY19tc2VjX2Nvc3Rfc3A7CisJCV9uY19tdmN1cl9pbml0X3NwOworCQlfbmNfbXZjdXJfcmVzdW1lX3NwOworCQlfbmNfbXZjdXJfd3JhcF9zcDsKKwkJX25jX25ld3Njcl9vZjsKKwkJX25jX3ByaW50Zl9zdHJpbmdfc3A7CisJCV9uY19wdHJfRXNjZGVsYXk7CisJCV9uY19yZXNldF9jb2xvcnNfc3A7CisJCV9uY19yZXRyYWNlX21tYXNrX3Q7CisJCV9uY19yaXBvZmZsaW5lX3NwOworCQlfbmNfc2NyZWVuX2luaXRfc3A7CisJCV9uY19zY3JlZW5fcmVzdW1lX3NwOworCQlfbmNfc2NyZWVuX3dyYXBfc3A7CisJCV9uY19zY3JvbGxfb2xkaGFzaF9zcDsKKwkJX25jX3Njcm9sbF9vcHRpbWl6ZV9zcDsKKwkJX25jX3Njcm9sbG5fc3A7CisJCV9uY19zZXRfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19zZXR1cHNjcmVlbl9zcDsKKwkJX25jX3N0ZHNjcl9vZjsKK30gTkNVUlNFU1RXXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU1RXXzUuOS4yMDE1MDUzMCB7CisJZ2xvYmFsOgorCQlmb3JtX2RyaXZlcl93OworCQl3Z2V0ZGVsYXk7CisJbG9jYWw6CisJCV8qOworCQlfbmNfbXZjdXI7CisJCV9uY19tdmN1cl9zcDsKKwkJX25jX3RyYWNlX21tYXNrX3Q7Cit9IE5DVVJTRVNUV181LjguMjAxMTAyMjY7CmRpZmYgLS1naXQgYS9wYWNrYWdlL25jdXJzZXN0dy5zeW0gYi9wYWNrYWdlL25jdXJzZXN0dy5zeW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3NTY1MwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2UvbmN1cnNlc3R3LnN5bQpAQCAtMCwwICsxLDk1MCBAQAorIyAkSWQ6IG5jdXJzZXN0dy5zeW0sdiAxLjIzIDIwMTUvMDcvMTEgMjM6MzM6MzUgdG9tIEV4cCAkCisjIHNjcmlwdCBmb3Igc2hhcmVkIGxpYnJhcnkgc3ltYm9sLXZpc2liaWxpdHkgdXNpbmcgbGlidG9vbAorIworIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBuY3UtbWFwc3ltcworIyBDb25maWd1cmUgb3B0aW9ucyAoNS43LjIwMDgxMTAyKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS44LjIwMTEwMjI2KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxMTA0MDQpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1yZWVudHJhbnQgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOS4yMDE1MDUzMCkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXJlZW50cmFudCAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXB0aHJlYWQgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDYuMC5jdXJyZW50KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1pbnRlcm9wIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtcmVlbnRyYW50IC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2Vhay1zeW1ib2xzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13ZWFrLXN5bWJvbHMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC1wdGhyZWFkIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdlYWstc3ltYm9scyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtcHRocmVhZCAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZQorQkMKK0NPTE9SX1BBSVIKK1BBSVJfTlVNQkVSCitQQworU1AKK1RZUEVfQUxOVU0KK1RZUEVfQUxQSEEKK1RZUEVfRU5VTQorVFlQRV9JTlRFR0VSCitUWVBFX0lQVjQKK1RZUEVfTlVNRVJJQworVFlQRV9SRUdFWFAKK1VQCitfbmNfQ09MT1JTCitfbmNfQ09MT1JfUEFJUlMKK19uY19DT0xTCitfbmNfRGVmYXVsdF9GaWVsZAorX25jX0RlZmF1bHRfRm9ybQorX25jX0VTQ0RFTEFZCitfbmNfTElORVMKK19uY19UQUJTSVpFCitfbmNfX25jX291dGNoYXJzCitfbmNfYWNjZXNzCitfbmNfYWNzX21hcAorX25jX2FkZF90b190cnkKK19uY19hbGlnbl90ZXJtdHlwZQorX25jX2Jhc2VuYW1lCitfbmNfYm9vbGNvZGVzCitfbmNfYm9vbGZuYW1lcworX25jX2Jvb2xuYW1lcworX25jX2NhcGNtcAorX25jX2NoZWNrX3Rlcm10eXBlMgorX25jX2NvZGVzX2xlYWtzCitfbmNfY29weV90ZXJtdHlwZQorX25jX2NvdW50X291dGNoYXJzCitfbmNfY3VyX3Rlcm0KK19uY19jdXJyX2NvbAorX25jX2N1cnJfbGluZQorX25jX2N1cnNjcgorX25jX2RiX2Nsb3NlCitfbmNfZGJfZmlyc3QKK19uY19kYl9oYXZlX2RhdGEKK19uY19kYl9uZXh0CitfbmNfZGJfb3BlbgorX25jX2RiX3B1dAorX25jX2Rpc2FibGVfcGVyaW9kCitfbmNfZG9hbGxvYworX25jX2VudHJ5X21hdGNoCitfbmNfZW52X2FjY2VzcworX25jX2Vycl9hYm9ydAorX25jX2V2ZW50bGlzdF90aW1lb3V0CitfbmNfZmFsbGJhY2sKK19uY19maW5kX2VudHJ5CitfbmNfZmluZF90eXBlX2VudHJ5CitfbmNfZmlyc3RfZGIKK19uY19maXJzdF9uYW1lCitfbmNfZmx1c2gKK19uY19mbHVzaF9zcAorX25jX2ZyZWVfYW5kX2V4aXQKK19uY19mcmVlX2VudHJpZXMKK19uY19mcmVlX3Rlcm10eXBlCitfbmNfZnJlZV90aWMKK19uY19mcmVlX3RpbmZvCitfbmNfZnJlZWFsbAorX25jX2dldF9hbGlhc190YWJsZQorX25jX2dldF9oYXNoX3RhYmxlCitfbmNfZ2V0X2xvY2FsZQorX25jX2dldF9zY3JlZW5zaXplCitfbmNfZ2V0X3NvdXJjZQorX25jX2dldF90YWJsZQorX25jX2dldF90dHlfbW9kZQorX25jX2dldF90dHlfbW9kZV9zcAorX25jX2dldF90eXBlCitfbmNfZ2V0ZW52X251bQorX25jX2dsb2JhbHMKK19uY19oYW5kbGVfc2lnd2luY2gKK19uY19oYXNfbW91c2UKK19uY19oZWFkCitfbmNfaG9tZV90ZXJtaW5mbworX25jX2luZm90b2NhcAorX25jX2luaXRfYWNzCitfbmNfaW5pdF9hY3Nfc3AKK19uY19pbml0X3B0aHJlYWRzCitfbmNfaW5pdF90ZXJtdHlwZQorX25jX2lzX2Fic19wYXRoCitfbmNfaXNfZGlyX3BhdGgKK19uY19pc19maWxlX3BhdGgKK19uY19rZWVwX3RpY19kaXIKK19uY19rZXlwYWQKK19uY19sYXN0X2RiCitfbmNfbGVha3NfdGluZm8KK19uY19sb2NhbGVfYnJlYWtzX2FjcworX25jX2xvY2tlZF90cmFjZWYKK19uY19tdXRleF9sb2NrCitfbmNfbXV0ZXhfdHJ5bG9jaworX25jX211dGV4X3VubG9jaworX25jX25hbWVfbWF0Y2gKK19uY19uYW1lc19sZWFrcworX25jX25ld3NjcgorX25jX25leHRfZGIKK19uY19udW1jb2RlcworX25jX251bWZuYW1lcworX25jX251bW5hbWVzCitfbmNfb3B0aW1pemVfZW5hYmxlCitfbmNfb3V0Y193cmFwcGVyCitfbmNfb3V0Y2gKK19uY19vdXRjaF9zcAorX25jX3BhbmVsaG9vaworX25jX3BhbmVsaG9va19zcAorX25jX3BhdGhsYXN0CitfbmNfcHJlc2NyZWVuCitfbmNfcHRyX0NvbHMKK19uY19wdHJfTGluZXMKK19uY19wdXRjaGFyCitfbmNfcHV0Y2hhcl9zcAorX25jX3B1dHAKK19uY19wdXRwX2ZsdXNoCitfbmNfcHV0cF9mbHVzaF9zcAorX25jX3B1dHBfc3AKK19uY19yZWFkX2VudHJ5CitfbmNfcmVhZF9lbnRyeV9zb3VyY2UKK19uY19yZWFkX2ZpbGVfZW50cnkKK19uY19yZWFkX3Rlcm10eXBlCitfbmNfcmVzZXRfaW5wdXQKK19uY19yZXNvbHZlX3VzZXMyCitfbmNfcmV0cmFjZV9hdHRyX3QKK19uY19yZXRyYWNlX2Jvb2wKK19uY19yZXRyYWNlX2NodHlwZQorX25jX3JldHJhY2VfY3B0cgorX25jX3JldHJhY2VfY3ZvaWRfcHRyCitfbmNfcmV0cmFjZV9pbnQKK19uY19yZXRyYWNlX2ludF9hdHRyX3QKK19uY19yZXRyYWNlX3B0cgorX25jX3JldHJhY2Vfc3AKK19uY19yZXRyYWNlX3Vuc2lnbmVkCitfbmNfcmV0cmFjZV92b2lkX3B0cgorX25jX3JldHJhY2Vfd2luCitfbmNfcmlwb2ZmbGluZQorX25jX3Jvb3RuYW1lCitfbmNfc2FmZV9zdHJjYXQKK19uY19zYWZlX3N0cmNweQorX25jX3NjcmVlbl9jaGFpbgorX25jX3NjcmVlbl9vZgorX25jX3NldF9idWZmZXIKK19uY19zZXRfYnVmZmVyX3NwCitfbmNfc2V0X25vX3BhZGRpbmcKK19uY19zZXRfc291cmNlCitfbmNfc2V0X3RwdXRzX3RyYWNlCitfbmNfc2V0X3R0eV9tb2RlCitfbmNfc2V0X3R0eV9tb2RlX3NwCitfbmNfc2V0X3R5cGUKK19uY19zZXRfd3JpdGVkaXIKK19uY19zZXR1cHRlcm0KK19uY19zaWdwcm9jbWFzaworX25jX3N0ZHNjcgorX25jX3N0cl9jb3B5CitfbmNfc3RyX2luaXQKK19uY19zdHJfbnVsbAorX25jX3N0cmNvZGVzCitfbmNfc3RyZm5hbWVzCitfbmNfc3RyaWN0X2JzZAorX25jX3N0cm5hbWVzCitfbmNfc3VwcHJlc3Nfd2FybmluZ3MKK19uY19zeW50YXgKK19uY19zeXNlcnJfYWJvcnQKK19uY190YWlsCitfbmNfdGljX2RpcgorX25jX3RpY19leHBhbmQKK19uY190aWNfd3JpdHRlbgorX25jX3RpbWVkX3dhaXQKK19uY190aW5mb19ma2V5cworX25jX3RwYXJtX2FuYWx5emUKK19uY190cGFybV9lcnIKK19uY190cmFjZV9idWYKK19uY190cmFjZWNoYXIKK19uY190cmFjaW5nCitfbmNfdHJhbnNfc3RyaW5nCitfbmNfdHJpbV9zZ3IwCitfbmNfdHR5dHlwZQorX25jX3VuaWNvZGVfbG9jYWxlCitfbmNfdXBkYXRlX3NjcmVlbnNpemUKK19uY191c2VfdHJhY2VmCitfbmNfdXNlcl9kZWZpbmFibGUKK19uY192aXNidWYKK19uY192aXNidWYyCitfbmNfdmlzYnVmbgorX25jX3Zpc2NidWYKK19uY192aXN3YnVmCitfbmNfdmlzd2J1Zm4KK19uY192aXN3aWJ1ZgorX25jX3dhY3MKK19uY193YXJuaW5nCitfbmNfd2NydG9tYgorX25jX3dyaXRlX2VudHJ5CitfdHJhY2VhdHRyCitfdHJhY2VhdHRyMgorX3RyYWNlY2NoYXJfdAorX3RyYWNlY2NoYXJfdDIKK190cmFjZWNodHlwZQorX3RyYWNlY2h0eXBlMgorX3RyYWNlZgorYWRkX3djaAorYWRkX3djaG5zdHIKK2FkZF93Y2hzdHIKK2FkZGNoCithZGRjaG5zdHIKK2FkZGNoc3RyCithZGRuc3RyCithZGRud3N0cgorYWRkc3RyCithZGR3c3RyCithc3N1bWVfZGVmYXVsdF9jb2xvcnMKK2Fzc3VtZV9kZWZhdWx0X2NvbG9yc19zcAorYXR0cl9nZXQKK2F0dHJfb2ZmCithdHRyX29uCithdHRyX3NldAorYXR0cm9mZgorYXR0cm9uCithdHRyc2V0CitiYXVkcmF0ZQorYmF1ZHJhdGVfc3AKK2JlZXAKK2JlZXBfc3AKK2JrZ2QKK2JrZ2RzZXQKK2JrZ3JuZAorYmtncm5kc2V0Citib3JkZXIKK2JvcmRlcl9zZXQKK2JvdHRvbV9wYW5lbAorYm94Citib3hfc2V0CitjYW5fY2hhbmdlX2NvbG9yCitjYW5fY2hhbmdlX2NvbG9yX3NwCitjYnJlYWsKK2NicmVha19zcAorY2VpbGluZ19wYW5lbAorY2hnYXQKK2NsZWFyCitjbGVhcm9rCitjbHJ0b2JvdAorY2xydG9lb2wKK2NvbG9yX2NvbnRlbnQKK2NvbG9yX2NvbnRlbnRfc3AKK2NvbG9yX3NldAorY29weXdpbgorY3VycmVudF9maWVsZAorY3VycmVudF9pdGVtCitjdXJzX3NldAorY3Vyc19zZXRfc3AKK2N1cnNlc192ZXJzaW9uCitkYXRhX2FoZWFkCitkYXRhX2JlaGluZAorZGVmX3Byb2dfbW9kZQorZGVmX3Byb2dfbW9kZV9zcAorZGVmX3NoZWxsX21vZGUKK2RlZl9zaGVsbF9tb2RlX3NwCitkZWZpbmVfa2V5CitkZWZpbmVfa2V5X3NwCitkZWxfY3VydGVybQorZGVsX2N1cnRlcm1fc3AKK2RlbF9wYW5lbAorZGVsYXlfb3V0cHV0CitkZWxheV9vdXRwdXRfc3AKK2RlbGNoCitkZWxldGVsbgorZGVsc2NyZWVuCitkZWx3aW4KK2RlcndpbgorZG91cGRhdGUKK2RvdXBkYXRlX3NwCitkdXBfZmllbGQKK2R1cHdpbgorZHluYW1pY19maWVsZF9pbmZvCitlY2hvCitlY2hvX3NwCitlY2hvX3djaGFyCitlY2hvY2hhcgorZW5kd2luCitlbmR3aW5fc3AKK2VyYXNlCitlcmFzZWNoYXIKK2VyYXNlY2hhcl9zcAorZXJhc2V3Y2hhcgorZmllbGRfYXJnCitmaWVsZF9iYWNrCitmaWVsZF9idWZmZXIKK2ZpZWxkX2NvdW50CitmaWVsZF9mb3JlCitmaWVsZF9pbmRleAorZmllbGRfaW5mbworZmllbGRfaW5pdAorZmllbGRfanVzdAorZmllbGRfb3B0cworZmllbGRfb3B0c19vZmYKK2ZpZWxkX29wdHNfb24KK2ZpZWxkX3BhZAorZmllbGRfc3RhdHVzCitmaWVsZF90ZXJtCitmaWVsZF90eXBlCitmaWVsZF91c2VycHRyCitmaWx0ZXIKK2ZpbHRlcl9zcAorZmxhc2gKK2ZsYXNoX3NwCitmbHVzaGlucAorZmx1c2hpbnBfc3AKK2Zvcm1fZHJpdmVyCitmb3JtX2RyaXZlcl93Citmb3JtX2ZpZWxkcworZm9ybV9pbml0Citmb3JtX29wdHMKK2Zvcm1fb3B0c19vZmYKK2Zvcm1fb3B0c19vbgorZm9ybV9wYWdlCitmb3JtX3JlcXVlc3RfYnlfbmFtZQorZm9ybV9yZXF1ZXN0X25hbWUKK2Zvcm1fc3ViCitmb3JtX3Rlcm0KK2Zvcm1fdXNlcnB0cgorZm9ybV93aW4KK2ZyZWVfZmllbGQKK2ZyZWVfZmllbGR0eXBlCitmcmVlX2Zvcm0KK2ZyZWVfaXRlbQorZnJlZV9tZW51CitnZXRfZXNjZGVsYXkKK2dldF9lc2NkZWxheV9zcAorZ2V0X3djaAorZ2V0X3dzdHIKK2dldGF0dHJzCitnZXRiZWd4CitnZXRiZWd5CitnZXRia2dkCitnZXRia2dybmQKK2dldGNjaGFyCitnZXRjaAorZ2V0Y3VyeAorZ2V0Y3VyeQorZ2V0bWF4eAorZ2V0bWF4eQorZ2V0bW91c2UKK2dldG1vdXNlX3NwCitnZXRuX3dzdHIKK2dldG5zdHIKK2dldHBhcngKK2dldHBhcnkKK2dldHN0cgorZ2V0d2luCitnZXR3aW5fc3AKK2dyb3VuZF9wYW5lbAoraGFsZmRlbGF5CitoYWxmZGVsYXlfc3AKK2hhc19jb2xvcnMKK2hhc19jb2xvcnNfc3AKK2hhc19pYworaGFzX2ljX3NwCitoYXNfaWwKK2hhc19pbF9zcAoraGFzX2tleQoraGFzX2tleV9zcAoraGFzX21vdXNlCitoYXNfbW91c2Vfc3AKK2hpZGVfcGFuZWwKK2hsaW5lCitobGluZV9zZXQKK2lkY29rCitpZGxvaworaW1tZWRvaworaW5fd2NoCitpbl93Y2huc3RyCitpbl93Y2hzdHIKK2luY2gKK2luY2huc3RyCitpbmNoc3RyCitpbml0X2NvbG9yCitpbml0X2NvbG9yX3NwCitpbml0X3BhaXIKK2luaXRfcGFpcl9zcAoraW5pdHNjcgoraW5uc3RyCitpbm53c3RyCitpbnNfbndzdHIKK2luc193Y2gKK2luc193c3RyCitpbnNjaAoraW5zZGVsbG4KK2luc2VydGxuCitpbnNuc3RyCitpbnNzdHIKK2luc3RyCitpbnRyZmx1c2gKK2ludHJmbHVzaF9zcAoraW53c3RyCitpc19jbGVhcmVkCitpc19pZGNvaworaXNfaWRsb2sKK2lzX2ltbWVkb2sKK2lzX2tleXBhZAoraXNfbGVhdmVvaworaXNfbGluZXRvdWNoZWQKK2lzX25vZGVsYXkKK2lzX25vdGltZW91dAoraXNfcGFkCitpc19zY3JvbGxvaworaXNfc3Vid2luCitpc19zeW5jb2sKK2lzX3Rlcm1fcmVzaXplZAoraXNfdGVybV9yZXNpemVkX3NwCitpc193aW50b3VjaGVkCitpc2VuZHdpbgoraXNlbmR3aW5fc3AKK2l0ZW1fY291bnQKK2l0ZW1fZGVzY3JpcHRpb24KK2l0ZW1faW5kZXgKK2l0ZW1faW5pdAoraXRlbV9uYW1lCitpdGVtX29wdHMKK2l0ZW1fb3B0c19vZmYKK2l0ZW1fb3B0c19vbgoraXRlbV90ZXJtCitpdGVtX3VzZXJwdHIKK2l0ZW1fdmFsdWUKK2l0ZW1fdmlzaWJsZQora2V5X2RlZmluZWQKK2tleV9kZWZpbmVkX3NwCitrZXlfbmFtZQora2V5Ym91bmQKK2tleWJvdW5kX3NwCitrZXluYW1lCitrZXluYW1lX3NwCitrZXlvawora2V5b2tfc3AKK2tleXBhZAora2lsbGNoYXIKK2tpbGxjaGFyX3NwCitraWxsd2NoYXIKK2xlYXZlb2sKK2xpbmtfZmllbGQKK2xpbmtfZmllbGR0eXBlCitsb25nbmFtZQorbG9uZ25hbWVfc3AKK21jcHJpbnQKK21jcHJpbnRfc3AKK21lbnVfYmFjaworbWVudV9kcml2ZXIKK21lbnVfZm9yZQorbWVudV9mb3JtYXQKK21lbnVfZ3JleQorbWVudV9pbml0CittZW51X2l0ZW1zCittZW51X21hcmsKK21lbnVfb3B0cworbWVudV9vcHRzX29mZgorbWVudV9vcHRzX29uCittZW51X3BhZAorbWVudV9wYXR0ZXJuCittZW51X3JlcXVlc3RfYnlfbmFtZQorbWVudV9yZXF1ZXN0X25hbWUKK21lbnVfc3BhY2luZworbWVudV9zdWIKK21lbnVfdGVybQorbWVudV91c2VycHRyCittZW51X3dpbgorbWV0YQorbW91c2VfdHJhZm8KK21vdXNlaW50ZXJ2YWwKK21vdXNlaW50ZXJ2YWxfc3AKK21vdXNlbWFzaworbW91c2VtYXNrX3NwCittb3ZlCittb3ZlX2ZpZWxkCittb3ZlX3BhbmVsCittdmFkZF93Y2gKK212YWRkX3djaG5zdHIKK212YWRkX3djaHN0cgorbXZhZGRjaAorbXZhZGRjaG5zdHIKK212YWRkY2hzdHIKK212YWRkbnN0cgorbXZhZGRud3N0cgorbXZhZGRzdHIKK212YWRkd3N0cgorbXZjaGdhdAorbXZjdXIKK212Y3VyX3NwCittdmRlbGNoCittdmRlcndpbgorbXZnZXRfd2NoCittdmdldF93c3RyCittdmdldGNoCittdmdldG5fd3N0cgorbXZnZXRuc3RyCittdmdldHN0cgorbXZobGluZQorbXZobGluZV9zZXQKK212aW5fd2NoCittdmluX3djaG5zdHIKK212aW5fd2Noc3RyCittdmluY2gKK212aW5jaG5zdHIKK212aW5jaHN0cgorbXZpbm5zdHIKK212aW5ud3N0cgorbXZpbnNfbndzdHIKK212aW5zX3djaAorbXZpbnNfd3N0cgorbXZpbnNjaAorbXZpbnNuc3RyCittdmluc3N0cgorbXZpbnN0cgorbXZpbndzdHIKK212cHJpbnR3CittdnNjYW53CittdnZsaW5lCittdnZsaW5lX3NldAorbXZ3YWRkX3djaAorbXZ3YWRkX3djaG5zdHIKK212d2FkZF93Y2hzdHIKK212d2FkZGNoCittdndhZGRjaG5zdHIKK212d2FkZGNoc3RyCittdndhZGRuc3RyCittdndhZGRud3N0cgorbXZ3YWRkc3RyCittdndhZGR3c3RyCittdndjaGdhdAorbXZ3ZGVsY2gKK212d2dldF93Y2gKK212d2dldF93c3RyCittdndnZXRjaAorbXZ3Z2V0bl93c3RyCittdndnZXRuc3RyCittdndnZXRzdHIKK212d2hsaW5lCittdndobGluZV9zZXQKK212d2luCittdndpbl93Y2gKK212d2luX3djaG5zdHIKK212d2luX3djaHN0cgorbXZ3aW5jaAorbXZ3aW5jaG5zdHIKK212d2luY2hzdHIKK212d2lubnN0cgorbXZ3aW5ud3N0cgorbXZ3aW5zX253c3RyCittdndpbnNfd2NoCittdndpbnNfd3N0cgorbXZ3aW5zY2gKK212d2luc25zdHIKK212d2luc3N0cgorbXZ3aW5zdHIKK212d2lud3N0cgorbXZ3cHJpbnR3CittdndzY2FudworbXZ3dmxpbmUKK212d3ZsaW5lX3NldAorbmFwbXMKK25hcG1zX3NwCituZXdfZmllbGQKK25ld19maWVsZHR5cGUKK25ld19mb3JtCituZXdfZm9ybV9zcAorbmV3X2l0ZW0KK25ld19tZW51CituZXdfbWVudV9zcAorbmV3X3BhZ2UKK25ld19wYW5lbAorbmV3X3ByZXNjcgorbmV3cGFkCituZXdwYWRfc3AKK25ld3Rlcm0KK25ld3Rlcm1fc3AKK25ld3dpbgorbmV3d2luX3NwCitubAorbmxfc3AKK25vY2JyZWFrCitub2NicmVha19zcAorbm9kZWxheQorbm9lY2hvCitub2VjaG9fc3AKK25vZmlsdGVyCitub2ZpbHRlcl9zcAorbm9ubAorbm9ubF9zcAorbm9xaWZsdXNoCitub3FpZmx1c2hfc3AKK25vcmF3Citub3Jhd19zcAorbm90aW1lb3V0Citvc3BlZWQKK292ZXJsYXkKK292ZXJ3cml0ZQorcGFpcl9jb250ZW50CitwYWlyX2NvbnRlbnRfc3AKK3BhbmVsX2Fib3ZlCitwYW5lbF9iZWxvdworcGFuZWxfaGlkZGVuCitwYW5lbF91c2VycHRyCitwYW5lbF93aW5kb3cKK3BlY2hvX3djaGFyCitwZWNob2NoYXIKK3Bub3V0cmVmcmVzaAorcG9zX2Zvcm1fY3Vyc29yCitwb3NfbWVudV9jdXJzb3IKK3Bvc3RfZm9ybQorcG9zdF9tZW51CitwcmVmcmVzaAorcHJpbnR3CitwdXRwCitwdXRwX3NwCitwdXR3aW4KK3FpZmx1c2gKK3FpZmx1c2hfc3AKK3JhdworcmF3X3NwCityZWRyYXd3aW4KK3JlZnJlc2gKK3JlcGxhY2VfcGFuZWwKK3Jlc2V0X3Byb2dfbW9kZQorcmVzZXRfcHJvZ19tb2RlX3NwCityZXNldF9zaGVsbF9tb2RlCityZXNldF9zaGVsbF9tb2RlX3NwCityZXNldHR5CityZXNldHR5X3NwCityZXNpemVfdGVybQorcmVzaXplX3Rlcm1fc3AKK3Jlc2l6ZXRlcm0KK3Jlc2l6ZXRlcm1fc3AKK3Jlc3RhcnR0ZXJtCityZXN0YXJ0dGVybV9zcAorcmlwb2ZmbGluZQorcmlwb2ZmbGluZV9zcAorc2F2ZXR0eQorc2F2ZXR0eV9zcAorc2NhbGVfZm9ybQorc2NhbGVfbWVudQorc2NhbncKK3Njcl9kdW1wCitzY3JfaW5pdAorc2NyX2luaXRfc3AKK3Njcl9yZXN0b3JlCitzY3JfcmVzdG9yZV9zcAorc2NyX3NldAorc2NyX3NldF9zcAorc2NybAorc2Nyb2xsCitzY3JvbGxvaworc2V0X2N1cnJlbnRfZmllbGQKK3NldF9jdXJyZW50X2l0ZW0KK3NldF9jdXJ0ZXJtCitzZXRfY3VydGVybV9zcAorc2V0X2VzY2RlbGF5CitzZXRfZXNjZGVsYXlfc3AKK3NldF9maWVsZF9iYWNrCitzZXRfZmllbGRfYnVmZmVyCitzZXRfZmllbGRfZm9yZQorc2V0X2ZpZWxkX2luaXQKK3NldF9maWVsZF9qdXN0CitzZXRfZmllbGRfb3B0cworc2V0X2ZpZWxkX3BhZAorc2V0X2ZpZWxkX3N0YXR1cworc2V0X2ZpZWxkX3Rlcm0KK3NldF9maWVsZF90eXBlCitzZXRfZmllbGRfdXNlcnB0cgorc2V0X2ZpZWxkdHlwZV9hcmcKK3NldF9maWVsZHR5cGVfY2hvaWNlCitzZXRfZm9ybV9maWVsZHMKK3NldF9mb3JtX2luaXQKK3NldF9mb3JtX29wdHMKK3NldF9mb3JtX3BhZ2UKK3NldF9mb3JtX3N1Ygorc2V0X2Zvcm1fdGVybQorc2V0X2Zvcm1fdXNlcnB0cgorc2V0X2Zvcm1fd2luCitzZXRfaXRlbV9pbml0CitzZXRfaXRlbV9vcHRzCitzZXRfaXRlbV90ZXJtCitzZXRfaXRlbV91c2VycHRyCitzZXRfaXRlbV92YWx1ZQorc2V0X21heF9maWVsZAorc2V0X21lbnVfYmFjaworc2V0X21lbnVfZm9yZQorc2V0X21lbnVfZm9ybWF0CitzZXRfbWVudV9ncmV5CitzZXRfbWVudV9pbml0CitzZXRfbWVudV9pdGVtcworc2V0X21lbnVfbWFyaworc2V0X21lbnVfb3B0cworc2V0X21lbnVfcGFkCitzZXRfbWVudV9wYXR0ZXJuCitzZXRfbWVudV9zcGFjaW5nCitzZXRfbWVudV9zdWIKK3NldF9tZW51X3Rlcm0KK3NldF9tZW51X3VzZXJwdHIKK3NldF9tZW51X3dpbgorc2V0X25ld19wYWdlCitzZXRfcGFuZWxfdXNlcnB0cgorc2V0X3RhYnNpemUKK3NldF90YWJzaXplX3NwCitzZXRfdGVybQorc2V0X3RvcF9yb3cKK3NldGNjaGFyCitzZXRzY3JyZWcKK3NldHVwdGVybQorc2hvd19wYW5lbAorc2xrX2F0dHIKK3Nsa19hdHRyX29mZgorc2xrX2F0dHJfb24KK3Nsa19hdHRyX3NldAorc2xrX2F0dHJfc2V0X3NwCitzbGtfYXR0cl9zcAorc2xrX2F0dHJvZmYKK3Nsa19hdHRyb2ZmX3NwCitzbGtfYXR0cm9uCitzbGtfYXR0cm9uX3NwCitzbGtfYXR0cnNldAorc2xrX2F0dHJzZXRfc3AKK3Nsa19jbGVhcgorc2xrX2NsZWFyX3NwCitzbGtfY29sb3IKK3Nsa19jb2xvcl9zcAorc2xrX2luaXQKK3Nsa19pbml0X3NwCitzbGtfbGFiZWwKK3Nsa19sYWJlbF9zcAorc2xrX25vdXRyZWZyZXNoCitzbGtfbm91dHJlZnJlc2hfc3AKK3Nsa19yZWZyZXNoCitzbGtfcmVmcmVzaF9zcAorc2xrX3Jlc3RvcmUKK3Nsa19yZXN0b3JlX3NwCitzbGtfc2V0CitzbGtfc2V0X3NwCitzbGtfdG91Y2gKK3Nsa190b3VjaF9zcAorc2xrX3dzZXQKK3N0YW5kZW5kCitzdGFuZG91dAorc3RhcnRfY29sb3IKK3N0YXJ0X2NvbG9yX3NwCitzdWJwYWQKK3N1Yndpbgorc3luY29rCit0ZXJtX2F0dHJzCit0ZXJtX2F0dHJzX3NwCit0ZXJtYXR0cnMKK3Rlcm1hdHRyc19zcAordGVybW5hbWUKK3Rlcm1uYW1lX3NwCit0Z2V0ZW50Cit0Z2V0ZW50X3NwCit0Z2V0ZmxhZwordGdldGZsYWdfc3AKK3RnZXRudW0KK3RnZXRudW1fc3AKK3RnZXRzdHIKK3RnZXRzdHJfc3AKK3Rnb3RvCit0aWdldGZsYWcKK3RpZ2V0ZmxhZ19zcAordGlnZXRudW0KK3RpZ2V0bnVtX3NwCit0aWdldHN0cgordGlnZXRzdHJfc3AKK3RpbWVvdXQKK3RpcGFybQordG9wX3BhbmVsCit0b3Bfcm93Cit0b3VjaGxpbmUKK3RvdWNod2luCit0cGFybQordHB1dHMKK3RwdXRzX3NwCit0cmFjZQordHlwZWFoZWFkCit0eXBlYWhlYWRfc3AKK3VuY3RybAordW5jdHJsX3NwCit1bmdldF93Y2gKK3VuZ2V0X3djaF9zcAordW5nZXRjaAordW5nZXRjaF9zcAordW5nZXRtb3VzZQordW5nZXRtb3VzZV9zcAordW5wb3N0X2Zvcm0KK3VucG9zdF9tZW51Cit1bnRvdWNod2luCit1cGRhdGVfcGFuZWxzCit1cGRhdGVfcGFuZWxzX3NwCit1c2VfZGVmYXVsdF9jb2xvcnMKK3VzZV9kZWZhdWx0X2NvbG9yc19zcAordXNlX2VudgordXNlX2Vudl9zcAordXNlX2V4dGVuZGVkX25hbWVzCit1c2VfbGVnYWN5X2NvZGluZwordXNlX2xlZ2FjeV9jb2Rpbmdfc3AKK3VzZV9zY3JlZW4KK3VzZV90aW9jdGwKK3VzZV90aW9jdGxfc3AKK3VzZV93aW5kb3cKK3ZpZF9hdHRyCit2aWRfYXR0cl9zcAordmlkX3B1dHMKK3ZpZF9wdXRzX3NwCit2aWRhdHRyCit2aWRhdHRyX3NwCit2aWRwdXRzCit2aWRwdXRzX3NwCit2bGluZQordmxpbmVfc2V0Cit2d19wcmludHcKK3Z3X3NjYW53Cit2d3ByaW50dwordndzY2Fudword2FkZF93Y2gKK3dhZGRfd2NobnN0cgord2FkZF93Y2hzdHIKK3dhZGRjaAord2FkZGNobnN0cgord2FkZGNoc3RyCit3YWRkbnN0cgord2FkZG53c3RyCit3YWRkc3RyCit3YWRkd3N0cgord2F0dHJfZ2V0Cit3YXR0cl9vZmYKK3dhdHRyX29uCit3YXR0cl9zZXQKK3dhdHRyb2ZmCit3YXR0cm9uCit3YXR0cnNldAord2JrZ2QKK3dia2dkc2V0Cit3Ymtncm5kCit3Ymtncm5kc2V0Cit3Ym9yZGVyCit3Ym9yZGVyX3NldAord2NoZ2F0Cit3Y2xlYXIKK3djbHJ0b2JvdAord2NscnRvZW9sCit3Y29sb3Jfc2V0Cit3Y3Vyc3luY3VwCit3ZGVsY2gKK3dkZWxldGVsbgord2VjaG9fd2NoYXIKK3dlY2hvY2hhcgord2VuY2xvc2UKK3dlcmFzZQord2dldF93Y2gKK3dnZXRfd3N0cgord2dldGJrZ3JuZAord2dldGNoCit3Z2V0Y2hfZXZlbnRzCit3Z2V0ZGVsYXkKK3dnZXRuX3dzdHIKK3dnZXRuc3RyCit3Z2V0bnN0cl9ldmVudHMKK3dnZXRwYXJlbnQKK3dnZXRzY3JyZWcKK3dnZXRzdHIKK3dobGluZQord2hsaW5lX3NldAord2luX3djaAord2luX3djaG5zdHIKK3dpbl93Y2hzdHIKK3dpbmNoCit3aW5jaG5zdHIKK3dpbmNoc3RyCit3aW5uc3RyCit3aW5ud3N0cgord2luc19ud3N0cgord2luc193Y2gKK3dpbnNfd3N0cgord2luc2NoCit3aW5zZGVsbG4KK3dpbnNlcnRsbgord2luc25zdHIKK3dpbnNzdHIKK3dpbnN0cgord2lud3N0cgord21vdXNlX3RyYWZvCit3bW92ZQord25vdXRyZWZyZXNoCit3cHJpbnR3Cit3cmVkcmF3bG4KK3dyZWZyZXNoCit3cmVzaXplCit3c2NhbncKK3dzY3JsCit3c2V0c2NycmVnCit3c3RhbmRlbmQKK3dzdGFuZG91dAord3N5bmNkb3duCit3c3luY3VwCit3dGltZW91dAord3RvdWNobG4KK3d1bmN0cmwKK3d1bmN0cmxfc3AKK3d2bGluZQord3ZsaW5lX3NldApkaWZmIC0tZ2l0IGEvcGFja2FnZS9uY3Vyc2Vzdy5tYXAgYi9wYWNrYWdlL25jdXJzZXN3Lm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTg3NzZlCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZS9uY3Vyc2Vzdy5tYXAKQEAgLTAsMCArMSwxMjU0IEBACisjICRJZDogbmN1cnNlc3cubWFwLHYgMS4zNiAyMDE1LzA2LzI3IDIyOjI2OjUyIHRvbSBFeHAgJAorIyBzY3JpcHQgZm9yIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbC12ZXJzaW9uaW5nIHVzaW5nIGxkCisjCisjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IG5jdS1tYXBzeW1zCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjEuMjAwMDA3MDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS4yLjIwMDAxMDIxKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuMy4yMDAyMTAxOSkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjQuMjAwNDAyMDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS41LjIwMDUxMDEwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNi4yMDA2MTIxNykKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNy4yMDA4MTEwMikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOC4yMDExMDIyNikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxMTA0MDQpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTUwNTMwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDYuMC5jdXJyZW50KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKworTkNVUlNFU19USUNfNS4wLjE5OTkxMDIzIHsKKwlnbG9iYWw6CisJCV9uY19jYXBjbXA7CisJCV9uY19jaGVja190ZXJtdHlwZTsKKwkJX25jX2VudHJ5X21hdGNoOworCQlfbmNfaW5mb3RvY2FwOworCQlfbmNfcmVhZF9lbnRyeV9zb3VyY2U7CisJCV9uY19yZXNldF9pbnB1dDsKKwkJX25jX3Jlc29sdmVfdXNlczsKKwkJX25jX3NldF93cml0ZWRpcjsKKwkJX25jX3N5bnRheDsKKwkJX25jX3RpY19leHBhbmQ7CisJCV9uY190aWNfd3JpdHRlbjsKKwkJX25jX3RyYW5zX3N0cmluZzsKKwkJX25jX3dyaXRlX2VudHJ5OworCWxvY2FsOgorCQlfbmNfY2FwdG9pbmZvOworCQlfbmNfY29tbWVudF9lbmQ7CisJCV9uY19jb21tZW50X3N0YXJ0OworCQlfbmNfY29weV9lbnRyeTsKKwkJX25jX2N1cnJfZmlsZV9wb3M7CisJCV9uY19jdXJyX3Rva2VuOworCQlfbmNfZ2V0X3Rva2VuOworCQlfbmNfaW5pdF9lbnRyeTsKKwkJX25jX21lcmdlX2VudHJ5OworCQlfbmNfcGFuaWNfbW9kZTsKKwkJX25jX3BhcnNlX2VudHJ5OworCQlfbmNfcHVzaF90b2tlbjsKKwkJX25jX3NhdmVfc3RyOworCQlfbmNfc3RhcnRfbGluZTsKKwkJX25jX3dyYXBfZW50cnk7Cit9OworCitOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDggeworCWdsb2JhbDoKKwkJX25jX2Rpc2FibGVfcGVyaW9kOworfSBOQ1VSU0VTX1RJQ181LjAuMTk5OTEwMjM7CisKK05DVVJTRVNfVElDXzUuNS4yMDA1MTAxMCB7CisJZ2xvYmFsOgorCQlfbmNfYWxsb2NfZW50cnlfbGVha3M7CisJCV9uY19jYXB0b2luZm9fbGVha3M7CisJCV9uY19jaGVja190ZXJtdHlwZTI7CisJCV9uY19jb21wX3NjYW5fbGVha3M7CisJCV9uY19yZXNvbHZlX3VzZXMyOworfSBOQ1VSU0VTX1RJQ181LjEuMjAwMDA3MDg7CisKK05DVVJTRVNfVElDXzUuNy4yMDA4MTEwMiB7CisJZ2xvYmFsOgorCQlfbmNfZnJlZV90aWM7CisJbG9jYWw6CisJCV9uY19jb21wX2NhcHRhYl9sZWFrczsKKwkJX25jX2xlYWtzX3RpYzsKK30gTkNVUlNFU19USUNfNS41LjIwMDUxMDEwOworCitOQ1VSU0VTX1RJQ181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJX25jX3N0cmljdF9ic2Q7Cit9IE5DVVJTRVNfVElDXzUuNy4yMDA4MTEwMjsKKworTkNVUlNFU19USU5GT181LjAuMTk5OTEwMjMgeworCWdsb2JhbDoKKwkJQkM7CisJCUNPTFM7CisJCUxJTkVTOworCQlQQzsKKwkJU1A7CisJCVRBQlNJWkU7CisJCVVQOworCQlfbmNfYWNjZXNzOworCQlfbmNfYWRkX3RvX3RyeTsKKwkJX25jX2NvcHlfdGVybXR5cGU7CisJCV9uY19jdXJyX2NvbDsKKwkJX25jX2N1cnJfbGluZTsKKwkJX25jX2RvYWxsb2M7CisJCV9uY19lcnJfYWJvcnQ7CisJCV9uY19mYWxsYmFjazsKKwkJX25jX2ZpbmRfZW50cnk7CisJCV9uY19maW5kX3R5cGVfZW50cnk7CisJCV9uY19maXJzdF9uYW1lOworCQlfbmNfZnJlZV9lbnRyaWVzOworCQlfbmNfZnJlZV90ZXJtdHlwZTsKKwkJX25jX2ZyZWVfdHBhcm07CisJCV9uY19mcmVlYWxsOworCQlfbmNfZ2V0X2hhc2hfdGFibGU7CisJCV9uY19nZXRfdGFibGU7CisJCV9uY19nZXRfdHR5X21vZGU7CisJCV9uY19nZXRfdHlwZTsKKwkJX25jX2dldGVudl9udW07CisJCV9uY19oZWFkOworCQlfbmNfaG9tZV90ZXJtaW5mbzsKKwkJX25jX2luZm9faGFzaF90YWJsZTsKKwkJX25jX2luaXRfYWNzOworCQlfbmNfa2VlcF90aWNfZGlyOworCQlfbmNfa2V5cGFkOworCQlfbmNfbmFtZV9tYXRjaDsKKwkJX25jX291dGNoOworCQlfbmNfcmVhZF9lbnRyeTsKKwkJX25jX3JlYWRfZmlsZV9lbnRyeTsKKwkJX25jX3NjcmVlbl9jaGFpbjsKKwkJX25jX3NldF9idWZmZXI7CisJCV9uY19zZXRfc291cmNlOworCQlfbmNfc2V0X3R0eV9tb2RlOworCQlfbmNfc2V0X3R5cGU7CisJCV9uY19zdXBwcmVzc193YXJuaW5nczsKKwkJX25jX3N5c2Vycl9hYm9ydDsKKwkJX25jX3RhaWw7CisJCV9uY190aWNfZGlyOworCQlfbmNfdGltZWRfd2FpdDsKKwkJX25jX3RyYWNlX2J1ZjsKKwkJX25jX3RyYWNpbmc7CisJCV9uY191cGRhdGVfc2NyZWVuc2l6ZTsKKwkJX25jX3Zpc2J1ZjsKKwkJX25jX3Zpc2J1ZjI7CisJCV9uY193YXJuaW5nOworCQlfdHJhY2VjaGFyOworCQlhY3NfbWFwOworCQliYXVkcmF0ZTsKKwkJYm9vbGNvZGVzOworCQlib29sZm5hbWVzOworCQlib29sbmFtZXM7CisJCWNicmVhazsKKwkJY3VyX3Rlcm07CisJCWN1cnNfc2V0OworCQljdXJzY3I7CisJCWN1cnNlc192ZXJzaW9uOworCQlkZWZfcHJvZ19tb2RlOworCQlkZWZfc2hlbGxfbW9kZTsKKwkJZGVmaW5lX2tleTsKKwkJZGVsX2N1cnRlcm07CisJCWRlbGF5X291dHB1dDsKKwkJZXJhc2VjaGFyOworCQlmbHVzaGlucDsKKwkJaGFsZmRlbGF5OworCQloYXNfaWM7CisJCWhhc19pbDsKKwkJaGFzX2tleTsKKwkJaWRjb2s7CisJCWlkbG9rOworCQlpbnRyZmx1c2g7CisJCWtleWJvdW5kOworCQlrZXluYW1lOworCQlrZXlvazsKKwkJa2V5cGFkOworCQlraWxsY2hhcjsKKwkJbG9uZ25hbWU7CisJCW1ldGE7CisJCW5hcG1zOworCQluZXdzY3I7CisJCW5vY2JyZWFrOworCQlub2RlbGF5OworCQlub3FpZmx1c2g7CisJCW5vcmF3OworCQlub3RpbWVvdXQ7CisJCW51bWNvZGVzOworCQludW1mbmFtZXM7CisJCW51bW5hbWVzOworCQlvc3BlZWQ7CisJCXB1dHA7CisJCXFpZmx1c2g7CisJCXJhdzsKKwkJcmVzZXRfcHJvZ19tb2RlOworCQlyZXNldF9zaGVsbF9tb2RlOworCQlyZXNldHR5OworCQlzYXZldHR5OworCQlzZXRfY3VydGVybTsKKwkJc2V0dXB0ZXJtOworCQlzdGRzY3I7CisJCXN0cmNvZGVzOworCQlzdHJmbmFtZXM7CisJCXN0cm5hbWVzOworCQl0ZXJtbmFtZTsKKwkJdGdldGVudDsKKwkJdGdldGZsYWc7CisJCXRnZXRudW07CisJCXRnZXRzdHI7CisJCXRnb3RvOworCQl0aWdldGZsYWc7CisJCXRpZ2V0bnVtOworCQl0aWdldHN0cjsKKwkJdHBhcm07CisJCXRwdXRzOworCQl0cmFjZTsKKwkJdHR5dHlwZTsKKwkJdHlwZWFoZWFkOworCQl1bmN0cmw7CisJCXVzZV9lbnY7CisJCXd0aW1lb3V0OworCWxvY2FsOgorCQlfbmNfYmF1ZHJhdGU7CisJCV9uY19jYXBfaGFzaF90YWJsZTsKKwkJX25jX2NhcGFsaWFzX3RhYmxlOworCQlfbmNfZXhwYW5kX3RyeTsKKwkJX25jX2luZm9hbGlhc190YWJsZTsKKwkJX25jX2luaXRfa2V5dHJ5OworCQlfbmNfa2V5X25hbWVzOworCQlfbmNfbnVsbHNfc2VudDsKKwkJX25jX29zcGVlZDsKKwkJX25jX3JlYWRfdGVybWNhcDsKKwkJX25jX3JlYWRfdGVybWNhcF9lbnRyeTsKKwkJX25jX3JlbW92ZV9rZXk7CisJCV9uY19yZW1vdmVfc3RyaW5nOworCQlfbmNfdHJhY2VfdHJpZXM7CisJCV9uY190cmFjZWJpdHM7Cit9OworCitOQ1VSU0VTX1RJTkZPXzUuMS4yMDAwMDcwOCB7CisJZ2xvYmFsOgorCQlfbmNfYWxpZ25fdGVybXR5cGU7CisJCV9uY19mbHVzaDsKKwkJX25jX3RpbmZvX2ZrZXlzOworCQlfbmNfdXNlcl9kZWZpbmFibGU7CisJCV9uY191dGY4X291dGNoOworCQl1c2VfZXh0ZW5kZWRfbmFtZXM7Cit9IE5DVVJTRVNfVElORk9fNS4wLjE5OTkxMDIzOworCitOQ1VSU0VTX1RJTkZPXzUuMi4yMDAwMTAyMSB7CisJZ2xvYmFsOgorCQlfbmNfYmFzZW5hbWU7CisJCV9uY19lbnZfYWNjZXNzOworCQlfbmNfc2FmZV9zdHJjYXQ7CisJCV9uY19zYWZlX3N0cmNweTsKKwkJX25jX3N0cl9jb3B5OworCQlfbmNfc3RyX2luaXQ7CisJCV9uY19zdHJfbnVsbDsKK30gTkNVUlNFU19USU5GT181LjEuMjAwMDA3MDg7CisKK05DVVJTRVNfVElORk9fNS4zLjIwMDIxMDE5IHsKKwlnbG9iYWw6CisJCV9uY19yb290bmFtZTsKKwkJX25jX3RwYXJtX2VycjsKKwkJX25jX3Zpc2J1Zm47Cit9IE5DVVJTRVNfVElORk9fNS4yLjIwMDAxMDIxOworCitOQ1VSU0VTX1RJTkZPXzUuNC4yMDA0MDIwOCB7CisJZ2xvYmFsOgorCQlfbmNfYWx0Y2hhcnNldF9uYW1lOworCQlfbmNfZ2V0X2xvY2FsZTsKKwkJX25jX2xvY2FsZV9icmVha3NfYWNzOworCQlfbmNfb3V0Y2hhcnM7CisJCV9uY19wYXRobGFzdDsKKwkJX25jX3JldHJhY2VfYXR0cl90OworCQlfbmNfcmV0cmFjZV9ib29sOworCQlfbmNfcmV0cmFjZV9jaHR5cGU7CisJCV9uY19yZXRyYWNlX2ludDsKKwkJX25jX3JldHJhY2VfcHRyOworCQlfbmNfcmV0cmFjZV9zcDsKKwkJX25jX3JldHJhY2VfdW5zaWduZWQ7CisJCV9uY19yZXRyYWNlX3dpbjsKKwkJX25jX3RwYXJtX2FuYWx5emU7CisJCV9uY190cHV0c190cmFjZTsKKwkJX25jX3RyYWNlX2J1ZmNhdDsKKwkJX25jX3VuaWNvZGVfbG9jYWxlOworCQlfbmNfdmlzd2J1ZjsKKwkJX25jX3Zpc3didWZuOworCQlfdHJhY2VhdHRyOworCQlfdHJhY2VhdHRyMjsKKwkJX3RyYWNlY2NoYXJfdDsKKwkJX3RyYWNlY2NoYXJfdDI7CisJCV90cmFjZWNodHlwZTsKKwkJX3RyYWNlY2h0eXBlMjsKKwkJX3RyYWNlZjsKKwkJa2V5X2RlZmluZWQ7CisJbG9jYWw6CisJCV9uY190cmFjZV90dHltb2RlOworCQlfbmNfdmlzd2J1ZjI7Cit9IE5DVVJTRVNfVElORk9fNS4zLjIwMDIxMDE5OworCitOQ1VSU0VTX1RJTkZPXzUuNS4yMDA1MTAxMCB7CisJZ2xvYmFsOgorCQlfbmNfZ2V0X3NvdXJjZTsKKwkJX25jX3JldHJhY2VfY3B0cjsKKwkJX25jX3JldHJhY2VfY3ZvaWRfcHRyOworCQlfbmNfcmV0cmFjZV92b2lkX3B0cjsKKwkJX25jX3NldHVwdGVybTsKKwkJX25jX3RyaW1fc2dyMDsKKwkJX25jX3Zpc3dpYnVmOworCWxvY2FsOgorCQlfbmNfZGVsaW5rX2VudHJ5OworCQlfbmNfZnJlZV9lbnRyeTsKK30gTkNVUlNFU19USU5GT181LjQuMjAwNDAyMDg7CisKK05DVVJTRVNfVElORk9fNS42LjIwMDYxMjE3IHsKKwlnbG9iYWw6CisJCV9uY19kYl9jbG9zZTsKKwkJX25jX2RiX2ZpcnN0OworCQlfbmNfZGJfaGF2ZV9kYXRhOworCQlfbmNfZGJfbmV4dDsKKwkJX25jX2RiX29wZW47CisJCV9uY19kYl9wdXQ7CisJCV9uY19ldmVudGxpc3RfdGltZW91dDsKKwkJX25jX2ZpcnN0X2RiOworCQlfbmNfaGFuZGxlX3NpZ3dpbmNoOworCQlfbmNfaXNfYWJzX3BhdGg7CisJCV9uY19pc19kaXJfcGF0aDsKKwkJX25jX2lzX2ZpbGVfcGF0aDsKKwkJX25jX2tleW5hbWVfbGVha3M7CisJCV9uY19sYXN0X2RiOworCQlfbmNfbmV4dF9kYjsKKwkJX25jX3JlYWRfdGVybXR5cGU7CisJCV9uY190Z2V0ZW50X2xlYWtzOworCQlfbmNfdmlzY2J1ZjsKKwlsb2NhbDoKKwkJX25jX2RiX2dldDsKKwkJX25jX2RiX2hhdmVfaW5kZXg7CisJCV9uY19oYXNoZWRfZGI7CisJCV9uY192aXNjYnVmMjsKK30gTkNVUlNFU19USU5GT181LjUuMjAwNTEwMTA7CisKK05DVVJTRVNfVElORk9fNS43LjIwMDgxMTAyIHsKKwlnbG9iYWw6CisJCV9uY19mcmVlX3RpbmZvOworCQlfbmNfZ2V0X2FsaWFzX3RhYmxlOworCQlfbmNfZ2V0X3NjcmVlbnNpemU7CisJCV9uY19nbG9iYWxzOworCQlfbmNfbGVha3NfdGluZm87CisJCV9uY19wcmVzY3JlZW47CisJCV9uY19zY3JlZW5fb2Y7CisJCV9uY19zZXRfbm9fcGFkZGluZzsKKwkJX25jX3RyYWNlY2hhcjsKKwkJc2V0X3RhYnNpemU7CisJbG9jYWw6CisJCV9uY19rZXluYW1lOworCQlfbmNfdW5jdHJsOworfSBOQ1VSU0VTX1RJTkZPXzUuNi4yMDA2MTIxNzsKKworTkNVUlNFU19USU5GT181LjguMjAxMTAyMjYgeworCWdsb2JhbDoKKwkJX25jX2ZsdXNoX3NwOworCQlfbmNfZ2V0X3R0eV9tb2RlX3NwOworCQlfbmNfaW5pdF9hY3Nfc3A7CisJCV9uY19vdXRjX3dyYXBwZXI7CisJCV9uY19vdXRjaF9zcDsKKwkJX25jX3B1dHA7CisJCV9uY19wdXRwX2ZsdXNoOworCQlfbmNfcHV0cF9mbHVzaF9zcDsKKwkJX25jX3B1dHBfc3A7CisJCV9uY19yZXRyYWNlX2ludF9hdHRyX3Q7CisJCV9uY19zZXRfYnVmZmVyX3NwOworCQlfbmNfc2V0X3R0eV9tb2RlX3NwOworCQliYXVkcmF0ZV9zcDsKKwkJY2JyZWFrX3NwOworCQljdXJzX3NldF9zcDsKKwkJZGVmX3Byb2dfbW9kZV9zcDsKKwkJZGVmX3NoZWxsX21vZGVfc3A7CisJCWRlZmluZV9rZXlfc3A7CisJCWRlbF9jdXJ0ZXJtX3NwOworCQlkZWxheV9vdXRwdXRfc3A7CisJCWVyYXNlY2hhcl9zcDsKKwkJZmx1c2hpbnBfc3A7CisJCWhhbGZkZWxheV9zcDsKKwkJaGFzX2ljX3NwOworCQloYXNfaWxfc3A7CisJCWhhc19rZXlfc3A7CisJCWludHJmbHVzaF9zcDsKKwkJa2V5X2RlZmluZWRfc3A7CisJCWtleWJvdW5kX3NwOworCQlrZXluYW1lX3NwOworCQlrZXlva19zcDsKKwkJa2lsbGNoYXJfc3A7CisJCW5hcG1zX3NwOworCQluZXdfcHJlc2NyOworCQlub2NicmVha19zcDsKKwkJbm9xaWZsdXNoX3NwOworCQlub3Jhd19zcDsKKwkJcHV0cF9zcDsKKwkJcWlmbHVzaF9zcDsKKwkJcmF3X3NwOworCQlyZXNldF9wcm9nX21vZGVfc3A7CisJCXJlc2V0X3NoZWxsX21vZGVfc3A7CisJCXJlc2V0dHlfc3A7CisJCXNhdmV0dHlfc3A7CisJCXNldF9jdXJ0ZXJtX3NwOworCQlzZXRfdGFic2l6ZV9zcDsKKwkJdGVybW5hbWVfc3A7CisJCXRnZXRlbnRfc3A7CisJCXRnZXRmbGFnX3NwOworCQl0Z2V0bnVtX3NwOworCQl0Z2V0c3RyX3NwOworCQl0aWdldGZsYWdfc3A7CisJCXRpZ2V0bnVtX3NwOworCQl0aWdldHN0cl9zcDsKKwkJdGlwYXJtOworCQl0cHV0c19zcDsKKwkJdHlwZWFoZWFkX3NwOworCQl1bmN0cmxfc3A7CisJCXVzZV9lbnZfc3A7CisJbG9jYWw6CisJCV9uY19nZXRfaGFzaF9pbmZvOworCQlfbmNfcmV0cmFjZV9jaGFyOworCQlfbmNfc2V0dXBfdGluZm87CisJCV9uY190aW5mb19jbWRjaDsKK30gTkNVUlNFU19USU5GT181LjcuMjAwODExMDI7CisKK05DVVJTRVNfVElORk9fNS45LjIwMTUwNTMwIHsKKwlnbG9iYWw6CisJCV9uY19pbml0X3Rlcm10eXBlOworCQlfbmNfcHV0Y2hhcjsKKwkJX25jX3B1dGNoYXJfc3A7CisJCXVzZV90aW9jdGw7CisJCXVzZV90aW9jdGxfc3A7CisJbG9jYWw6CisJCV8qOworCQlfbmNfY29tcF9lcnJvcl9sZWFrczsKKwkJX25jX2RiX2l0ZXJhdG9yX2xlYWtzOworCQlfbmNfc2V0ZW52X251bTsKK30gTkNVUlNFU19USU5GT181LjguMjAxMTAyMjY7CisKK05DVVJTRVNXXzUuMS4yMDAwMDcwOCB7CisJZ2xvYmFsOgorCQlDT0xPUlM7CisJCUNPTE9SX1BBSVI7CisJCUNPTE9SX1BBSVJTOworCQlFU0NERUxBWTsKKwkJUEFJUl9OVU1CRVI7CisJCVRZUEVfQUxOVU07CisJCVRZUEVfQUxQSEE7CisJCVRZUEVfRU5VTTsKKwkJVFlQRV9JTlRFR0VSOworCQlUWVBFX0lQVjQ7CisJCVRZUEVfTlVNRVJJQzsKKwkJVFlQRV9SRUdFWFA7CisJCV9uY19EZWZhdWx0X0ZpZWxkOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfRGVmYXVsdF9Gb3JtOwkjIGRlcHJlY2F0ZWQgaW4gQUJJNgorCQlfbmNfZnJlZV9hbmRfZXhpdDsKKwkJX25jX2hhc19tb3VzZTsJIyBkZXByZWNhdGVkIGluIEFCSTYKKwkJX25jX3BhbmVsaG9vazsKKwkJX25jX3JpcG9mZmxpbmU7CisJCWFkZGNoOworCQlhZGRjaG5zdHI7CisJCWFkZGNoc3RyOworCQlhZGRuc3RyOworCQlhZGRzdHI7CisJCWFzc3VtZV9kZWZhdWx0X2NvbG9yczsKKwkJYXR0cl9nZXQ7CisJCWF0dHJfb2ZmOworCQlhdHRyX29uOworCQlhdHRyX3NldDsKKwkJYXR0cm9mZjsKKwkJYXR0cm9uOworCQlhdHRyc2V0OworCQliZWVwOworCQlia2dkOworCQlia2dkc2V0OworCQlib3JkZXI7CisJCWJvdHRvbV9wYW5lbDsKKwkJYm94OworCQljYW5fY2hhbmdlX2NvbG9yOworCQljaGdhdDsKKwkJY2xlYXI7CisJCWNsZWFyb2s7CisJCWNscnRvYm90OworCQljbHJ0b2VvbDsKKwkJY29sb3JfY29udGVudDsKKwkJY29sb3Jfc2V0OworCQljb3B5d2luOworCQljdXJyZW50X2ZpZWxkOworCQljdXJyZW50X2l0ZW07CisJCWRhdGFfYWhlYWQ7CisJCWRhdGFfYmVoaW5kOworCQlkZWxfcGFuZWw7CisJCWRlbGNoOworCQlkZWxldGVsbjsKKwkJZGVsc2NyZWVuOworCQlkZWx3aW47CisJCWRlcndpbjsKKwkJZG91cGRhdGU7CisJCWR1cF9maWVsZDsKKwkJZHVwd2luOworCQlkeW5hbWljX2ZpZWxkX2luZm87CisJCWVjaG87CisJCWVjaG9jaGFyOworCQllbmR3aW47CisJCWVyYXNlOworCQlmaWVsZF9hcmc7CisJCWZpZWxkX2JhY2s7CisJCWZpZWxkX2J1ZmZlcjsKKwkJZmllbGRfY291bnQ7CisJCWZpZWxkX2ZvcmU7CisJCWZpZWxkX2luZGV4OworCQlmaWVsZF9pbmZvOworCQlmaWVsZF9pbml0OworCQlmaWVsZF9qdXN0OworCQlmaWVsZF9vcHRzOworCQlmaWVsZF9vcHRzX29mZjsKKwkJZmllbGRfb3B0c19vbjsKKwkJZmllbGRfcGFkOworCQlmaWVsZF9zdGF0dXM7CisJCWZpZWxkX3Rlcm07CisJCWZpZWxkX3R5cGU7CisJCWZpZWxkX3VzZXJwdHI7CisJCWZpbHRlcjsKKwkJZmxhc2g7CisJCWZvcm1fZHJpdmVyOworCQlmb3JtX2ZpZWxkczsKKwkJZm9ybV9pbml0OworCQlmb3JtX29wdHM7CisJCWZvcm1fb3B0c19vZmY7CisJCWZvcm1fb3B0c19vbjsKKwkJZm9ybV9wYWdlOworCQlmb3JtX3JlcXVlc3RfYnlfbmFtZTsKKwkJZm9ybV9yZXF1ZXN0X25hbWU7CisJCWZvcm1fc3ViOworCQlmb3JtX3Rlcm07CisJCWZvcm1fdXNlcnB0cjsKKwkJZm9ybV93aW47CisJCWZyZWVfZmllbGQ7CisJCWZyZWVfZmllbGR0eXBlOworCQlmcmVlX2Zvcm07CisJCWZyZWVfaXRlbTsKKwkJZnJlZV9tZW51OworCQlnZXRia2dkOworCQlnZXRjaDsKKwkJZ2V0bW91c2U7CisJCWdldG5zdHI7CisJCWdldHN0cjsKKwkJZ2V0d2luOworCQloYXNfY29sb3JzOworCQloaWRlX3BhbmVsOworCQlobGluZTsKKwkJaW1tZWRvazsKKwkJaW5jaDsKKwkJaW5jaG5zdHI7CisJCWluY2hzdHI7CisJCWluaXRfY29sb3I7CisJCWluaXRfcGFpcjsKKwkJaW5pdHNjcjsKKwkJaW5uc3RyOworCQlpbnNjaDsKKwkJaW5zZGVsbG47CisJCWluc2VydGxuOworCQlpbnNuc3RyOworCQlpbnNzdHI7CisJCWluc3RyOworCQlpc19saW5ldG91Y2hlZDsKKwkJaXNfd2ludG91Y2hlZDsKKwkJaXNlbmR3aW47CisJCWl0ZW1fY291bnQ7CisJCWl0ZW1fZGVzY3JpcHRpb247CisJCWl0ZW1faW5kZXg7CisJCWl0ZW1faW5pdDsKKwkJaXRlbV9uYW1lOworCQlpdGVtX29wdHM7CisJCWl0ZW1fb3B0c19vZmY7CisJCWl0ZW1fb3B0c19vbjsKKwkJaXRlbV90ZXJtOworCQlpdGVtX3VzZXJwdHI7CisJCWl0ZW1fdmFsdWU7CisJCWl0ZW1fdmlzaWJsZTsKKwkJbGVhdmVvazsKKwkJbGlua19maWVsZDsKKwkJbGlua19maWVsZHR5cGU7CisJCW1jcHJpbnQ7CisJCW1lbnVfYmFjazsKKwkJbWVudV9kcml2ZXI7CisJCW1lbnVfZm9yZTsKKwkJbWVudV9mb3JtYXQ7CisJCW1lbnVfZ3JleTsKKwkJbWVudV9pbml0OworCQltZW51X2l0ZW1zOworCQltZW51X21hcms7CisJCW1lbnVfb3B0czsKKwkJbWVudV9vcHRzX29mZjsKKwkJbWVudV9vcHRzX29uOworCQltZW51X3BhZDsKKwkJbWVudV9wYXR0ZXJuOworCQltZW51X3JlcXVlc3RfYnlfbmFtZTsKKwkJbWVudV9yZXF1ZXN0X25hbWU7CisJCW1lbnVfc3BhY2luZzsKKwkJbWVudV9zdWI7CisJCW1lbnVfdGVybTsKKwkJbWVudV91c2VycHRyOworCQltZW51X3dpbjsKKwkJbW91c2VfdHJhZm87CisJCW1vdXNlaW50ZXJ2YWw7CisJCW1vdXNlbWFzazsKKwkJbW92ZTsKKwkJbW92ZV9maWVsZDsKKwkJbW92ZV9wYW5lbDsKKwkJbXZhZGRjaDsKKwkJbXZhZGRjaG5zdHI7CisJCW12YWRkY2hzdHI7CisJCW12YWRkbnN0cjsKKwkJbXZhZGRzdHI7CisJCW12Y2hnYXQ7CisJCW12Y3VyOworCQltdmRlbGNoOworCQltdmRlcndpbjsKKwkJbXZnZXRjaDsKKwkJbXZnZXRuc3RyOworCQltdmdldHN0cjsKKwkJbXZobGluZTsKKwkJbXZpbmNoOworCQltdmluY2huc3RyOworCQltdmluY2hzdHI7CisJCW12aW5uc3RyOworCQltdmluc2NoOworCQltdmluc25zdHI7CisJCW12aW5zc3RyOworCQltdmluc3RyOworCQltdnByaW50dzsKKwkJbXZzY2FudzsKKwkJbXZ2bGluZTsKKwkJbXZ3YWRkY2g7CisJCW12d2FkZGNobnN0cjsKKwkJbXZ3YWRkY2hzdHI7CisJCW12d2FkZG5zdHI7CisJCW12d2FkZHN0cjsKKwkJbXZ3Y2hnYXQ7CisJCW12d2RlbGNoOworCQltdndnZXRjaDsKKwkJbXZ3Z2V0bnN0cjsKKwkJbXZ3Z2V0c3RyOworCQltdndobGluZTsKKwkJbXZ3aW47CisJCW12d2luY2g7CisJCW12d2luY2huc3RyOworCQltdndpbmNoc3RyOworCQltdndpbm5zdHI7CisJCW12d2luc2NoOworCQltdndpbnNuc3RyOworCQltdndpbnNzdHI7CisJCW12d2luc3RyOworCQltdndwcmludHc7CisJCW12d3NjYW53OworCQltdnd2bGluZTsKKwkJbmV3X2ZpZWxkOworCQluZXdfZmllbGR0eXBlOworCQluZXdfZm9ybTsKKwkJbmV3X2l0ZW07CisJCW5ld19tZW51OworCQluZXdfcGFnZTsKKwkJbmV3X3BhbmVsOworCQluZXdwYWQ7CisJCW5ld3Rlcm07CisJCW5ld3dpbjsKKwkJbmw7CisJCW5vZWNobzsKKwkJbm9ubDsKKwkJb3ZlcmxheTsKKwkJb3ZlcndyaXRlOworCQlwYWlyX2NvbnRlbnQ7CisJCXBhbmVsX2Fib3ZlOworCQlwYW5lbF9iZWxvdzsKKwkJcGFuZWxfaGlkZGVuOworCQlwYW5lbF91c2VycHRyOworCQlwYW5lbF93aW5kb3c7CisJCXBlY2hvY2hhcjsKKwkJcG5vdXRyZWZyZXNoOworCQlwb3NfZm9ybV9jdXJzb3I7CisJCXBvc19tZW51X2N1cnNvcjsKKwkJcG9zdF9mb3JtOworCQlwb3N0X21lbnU7CisJCXByZWZyZXNoOworCQlwcmludHc7CisJCXB1dHdpbjsKKwkJcmVkcmF3d2luOworCQlyZWZyZXNoOworCQlyZXBsYWNlX3BhbmVsOworCQlyZXNpemV0ZXJtOworCQlyZXN0YXJ0dGVybTsKKwkJcmlwb2ZmbGluZTsKKwkJc2NhbGVfZm9ybTsKKwkJc2NhbGVfbWVudTsKKwkJc2Nhbnc7CisJCXNjcl9kdW1wOworCQlzY3JfaW5pdDsKKwkJc2NyX3Jlc3RvcmU7CisJCXNjcl9zZXQ7CisJCXNjcmw7CisJCXNjcm9sbDsKKwkJc2Nyb2xsb2s7CisJCXNldF9jdXJyZW50X2ZpZWxkOworCQlzZXRfY3VycmVudF9pdGVtOworCQlzZXRfZmllbGRfYmFjazsKKwkJc2V0X2ZpZWxkX2J1ZmZlcjsKKwkJc2V0X2ZpZWxkX2ZvcmU7CisJCXNldF9maWVsZF9pbml0OworCQlzZXRfZmllbGRfanVzdDsKKwkJc2V0X2ZpZWxkX29wdHM7CisJCXNldF9maWVsZF9wYWQ7CisJCXNldF9maWVsZF9zdGF0dXM7CisJCXNldF9maWVsZF90ZXJtOworCQlzZXRfZmllbGRfdHlwZTsKKwkJc2V0X2ZpZWxkX3VzZXJwdHI7CisJCXNldF9maWVsZHR5cGVfYXJnOworCQlzZXRfZmllbGR0eXBlX2Nob2ljZTsKKwkJc2V0X2Zvcm1fZmllbGRzOworCQlzZXRfZm9ybV9pbml0OworCQlzZXRfZm9ybV9vcHRzOworCQlzZXRfZm9ybV9wYWdlOworCQlzZXRfZm9ybV9zdWI7CisJCXNldF9mb3JtX3Rlcm07CisJCXNldF9mb3JtX3VzZXJwdHI7CisJCXNldF9mb3JtX3dpbjsKKwkJc2V0X2l0ZW1faW5pdDsKKwkJc2V0X2l0ZW1fb3B0czsKKwkJc2V0X2l0ZW1fdGVybTsKKwkJc2V0X2l0ZW1fdXNlcnB0cjsKKwkJc2V0X2l0ZW1fdmFsdWU7CisJCXNldF9tYXhfZmllbGQ7CisJCXNldF9tZW51X2JhY2s7CisJCXNldF9tZW51X2ZvcmU7CisJCXNldF9tZW51X2Zvcm1hdDsKKwkJc2V0X21lbnVfZ3JleTsKKwkJc2V0X21lbnVfaW5pdDsKKwkJc2V0X21lbnVfaXRlbXM7CisJCXNldF9tZW51X21hcms7CisJCXNldF9tZW51X29wdHM7CisJCXNldF9tZW51X3BhZDsKKwkJc2V0X21lbnVfcGF0dGVybjsKKwkJc2V0X21lbnVfc3BhY2luZzsKKwkJc2V0X21lbnVfc3ViOworCQlzZXRfbWVudV90ZXJtOworCQlzZXRfbWVudV91c2VycHRyOworCQlzZXRfbWVudV93aW47CisJCXNldF9uZXdfcGFnZTsKKwkJc2V0X3BhbmVsX3VzZXJwdHI7CisJCXNldF90ZXJtOworCQlzZXRfdG9wX3JvdzsKKwkJc2V0c2NycmVnOworCQlzaG93X3BhbmVsOworCQlzbGtfYXR0cjsKKwkJc2xrX2F0dHJfb2ZmOworCQlzbGtfYXR0cl9vbjsKKwkJc2xrX2F0dHJfc2V0OworCQlzbGtfYXR0cm9mZjsKKwkJc2xrX2F0dHJvbjsKKwkJc2xrX2F0dHJzZXQ7CisJCXNsa19jbGVhcjsKKwkJc2xrX2NvbG9yOworCQlzbGtfaW5pdDsKKwkJc2xrX2xhYmVsOworCQlzbGtfbm91dHJlZnJlc2g7CisJCXNsa19yZWZyZXNoOworCQlzbGtfcmVzdG9yZTsKKwkJc2xrX3NldDsKKwkJc2xrX3RvdWNoOworCQlzdGFuZGVuZDsKKwkJc3RhbmRvdXQ7CisJCXN0YXJ0X2NvbG9yOworCQlzdWJwYWQ7CisJCXN1YndpbjsKKwkJc3luY29rOworCQl0ZXJtYXR0cnM7CisJCXRpbWVvdXQ7CisJCXRvcF9wYW5lbDsKKwkJdG9wX3JvdzsKKwkJdG91Y2hsaW5lOworCQl0b3VjaHdpbjsKKwkJdW5nZXRjaDsKKwkJdW5nZXRtb3VzZTsKKwkJdW5wb3N0X2Zvcm07CisJCXVucG9zdF9tZW51OworCQl1bnRvdWNod2luOworCQl1cGRhdGVfcGFuZWxzOworCQl1c2VfZGVmYXVsdF9jb2xvcnM7CisJCXZpZF9hdHRyOworCQl2aWRhdHRyOworCQl2aWRwdXRzOworCQl2bGluZTsKKwkJdndfcHJpbnR3OworCQl2d19zY2FudzsKKwkJdndwcmludHc7CisJCXZ3c2Nhbnc7CisJCXdhZGRjaDsKKwkJd2FkZGNobnN0cjsKKwkJd2FkZGNoc3RyOworCQl3YWRkbnN0cjsKKwkJd2FkZHN0cjsKKwkJd2F0dHJfZ2V0OworCQl3YXR0cl9vZmY7CisJCXdhdHRyX29uOworCQl3YXR0cl9zZXQ7CisJCXdhdHRyb2ZmOworCQl3YXR0cm9uOworCQl3YXR0cnNldDsKKwkJd2JrZ2Q7CisJCXdia2dkc2V0OworCQl3Ym9yZGVyOworCQl3Y2hnYXQ7CisJCXdjbGVhcjsKKwkJd2NscnRvYm90OworCQl3Y2xydG9lb2w7CisJCXdjb2xvcl9zZXQ7CisJCXdjdXJzeW5jdXA7CisJCXdkZWxjaDsKKwkJd2RlbGV0ZWxuOworCQl3ZWNob2NoYXI7CisJCXdlbmNsb3NlOworCQl3ZXJhc2U7CisJCXdnZXRjaDsKKwkJd2dldG5zdHI7CisJCXdnZXRzdHI7CisJCXdobGluZTsKKwkJd2luY2g7CisJCXdpbmNobnN0cjsKKwkJd2luY2hzdHI7CisJCXdpbm5zdHI7CisJCXdpbnNjaDsKKwkJd2luc2RlbGxuOworCQl3aW5zZXJ0bG47CisJCXdpbnNuc3RyOworCQl3aW5zc3RyOworCQl3aW5zdHI7CisJCXdtb3VzZV90cmFmbzsKKwkJd21vdmU7CisJCXdub3V0cmVmcmVzaDsKKwkJd3ByaW50dzsKKwkJd3JlZHJhd2xuOworCQl3cmVmcmVzaDsKKwkJd3Jlc2l6ZTsKKwkJd3NjYW53OworCQl3c2NybDsKKwkJd3NldHNjcnJlZzsKKwkJd3N0YW5kZW5kOworCQl3c3RhbmRvdXQ7CisJCXdzeW5jZG93bjsKKwkJd3N5bmN1cDsKKwkJd3RvdWNobG47CisJCXd2bGluZTsKKwlsb2NhbDoKKwkJX25jX0NhbGN1bGF0ZV9JdGVtX0xlbmd0aF9hbmRfV2lkdGg7CisJCV9uY19Db25uZWN0X0l0ZW1zOworCQlfbmNfQ29weV9Bcmd1bWVudDsKKwkJX25jX0NvcHlfVHlwZTsKKwkJX25jX0RlZmF1bHRfRmllbGRUeXBlOworCQlfbmNfRGVmYXVsdF9JdGVtOworCQlfbmNfRGVmYXVsdF9NZW51OworCQlfbmNfRGlzY29ubmVjdF9JdGVtczsKKwkJX25jX0RyYXdfTWVudTsKKwkJX25jX0ZpcnN0X0FjdGl2ZV9GaWVsZDsKKwkJX25jX0ZyZWVfQXJndW1lbnQ7CisJCV9uY19GcmVlX1R5cGU7CisJCV9uY19JbnRlcm5hbF9WYWxpZGF0aW9uOworCQlfbmNfTGlua19JdGVtczsKKwkJX25jX01ha2VfQXJndW1lbnQ7CisJCV9uY19NYXRjaF9OZXh0X0NoYXJhY3Rlcl9Jbl9JdGVtX05hbWU7CisJCV9uY19OZXdfVG9wUm93X2FuZF9DdXJyZW50SXRlbTsKKwkJX25jX1Bvc2l0aW9uX0Zvcm1fQ3Vyc29yOworCQlfbmNfUG9zdF9JdGVtOworCQlfbmNfUmVmcmVzaF9DdXJyZW50X0ZpZWxkOworCQlfbmNfU2V0X0N1cnJlbnRfRmllbGQ7CisJCV9uY19TZXRfRm9ybV9QYWdlOworCQlfbmNfU2hvd19NZW51OworCQlfbmNfU3luY2hyb25pemVfQXR0cmlidXRlczsKKwkJX25jX1N5bmNocm9uaXplX09wdGlvbnM7CisJCV9uY19iYWNrZ3JvdW5kOworCQlfbmNfZG9fY29sb3I7CisJCV9uY19leHBhbmRlZDsKKwkJX25jX2ZyZWV3aW47CisJCV9uY19oYXNoX21hcDsKKwkJX25jX21ha2Vfb2xkaGFzaDsKKwkJX25jX21ha2VuZXc7CisJCV9uY19tZW1tb3ZlOworCQlfbmNfbWVudV9jdXJzb3JfcG9zOworCQlfbmNfbXNlY19jb3N0OworCQlfbmNfbXZjdXJfaW5pdDsKKwkJX25jX212Y3VyX3Jlc3VtZTsKKwkJX25jX212Y3VyX3dyYXA7CisJCV9uY19vbGRudW1zOworCQlfbmNfb3V0c3RyOworCQlfbmNfcHJpbnRmX3N0cmluZzsKKwkJX25jX3JlbmRlcjsKKwkJX25jX3NjcmVlbl9pbml0OworCQlfbmNfc2NyZWVuX3Jlc3VtZTsKKwkJX25jX3NjcmVlbl93cmFwOworCQlfbmNfc2Nyb2xsX29sZGhhc2g7CisJCV9uY19zY3JvbGxfb3B0aW1pemU7CisJCV9uY19zY3JvbGxfd2luZG93OworCQlfbmNfc2Nyb2xsbjsKKwkJX25jX3NldHVwc2NyZWVuOworCQlfbmNfc2lnYWN0aW9uOworCQlfbmNfc2lnbmFsX2hhbmRsZXI7CisJCV9uY19zbGtfZm9ybWF0OworCQlfbmNfc2xrX2luaXRpYWxpemU7CisJCV9uY19zeW5jaG9vazsKKwkJX25jX3Zzc2NhbmY7CisJCV9uY193YWRkY2hfbm9zeW5jOworfTsKKworTkNVUlNFU1dfNS4zLjIwMDIxMDE5IHsKKwlnbG9iYWw6CisJCV9uY193YWNzOworCQlfbmNfd2Noc3RybGVuOworCQlhZGRfd2NoOworCQlhZGRfd2NobnN0cjsKKwkJYWRkX3djaHN0cjsKKwkJYWRkbndzdHI7CisJCWFkZHdzdHI7CisJCWJrZ3JuZDsKKwkJYmtncm5kc2V0OworCQlib3JkZXJfc2V0OworCQlib3hfc2V0OworCQllY2hvX3djaGFyOworCQllcmFzZXdjaGFyOworCQlnZXRfd2NoOworCQlnZXRfd3N0cjsKKwkJZ2V0Ymtncm5kOworCQlnZXRjY2hhcjsKKwkJZ2V0bl93c3RyOworCQlobGluZV9zZXQ7CisJCWluX3djaDsKKwkJaW5fd2NobnN0cjsKKwkJaW5fd2Noc3RyOworCQlpbm53c3RyOworCQlpbnNfbndzdHI7CisJCWluc193Y2g7CisJCWluc193c3RyOworCQlpbndzdHI7CisJCWlzX3Rlcm1fcmVzaXplZDsKKwkJa2V5X25hbWU7CisJCWtpbGx3Y2hhcjsKKwkJbXZhZGRfd2NoOworCQltdmFkZF93Y2huc3RyOworCQltdmFkZF93Y2hzdHI7CisJCW12YWRkbndzdHI7CisJCW12YWRkd3N0cjsKKwkJbXZnZXRfd2NoOworCQltdmdldF93c3RyOworCQltdmdldG5fd3N0cjsKKwkJbXZobGluZV9zZXQ7CisJCW12aW5fd2NoOworCQltdmluX3djaG5zdHI7CisJCW12aW5fd2Noc3RyOworCQltdmlubndzdHI7CisJCW12aW5zX253c3RyOworCQltdmluc193Y2g7CisJCW12aW5zX3dzdHI7CisJCW12aW53c3RyOworCQltdnZsaW5lX3NldDsKKwkJbXZ3YWRkX3djaDsKKwkJbXZ3YWRkX3djaG5zdHI7CisJCW12d2FkZF93Y2hzdHI7CisJCW12d2FkZG53c3RyOworCQltdndhZGR3c3RyOworCQltdndnZXRfd2NoOworCQltdndnZXRfd3N0cjsKKwkJbXZ3Z2V0bl93c3RyOworCQltdndobGluZV9zZXQ7CisJCW12d2luX3djaDsKKwkJbXZ3aW5fd2NobnN0cjsKKwkJbXZ3aW5fd2Noc3RyOworCQltdndpbm53c3RyOworCQltdndpbnNfbndzdHI7CisJCW12d2luc193Y2g7CisJCW12d2luc193c3RyOworCQltdndpbndzdHI7CisJCW12d3ZsaW5lX3NldDsKKwkJcmVzaXplX3Rlcm07CisJCXNldGNjaGFyOworCQl0ZXJtX2F0dHJzOworCQl1bmdldF93Y2g7CisJCXZpZF9wdXRzOworCQl2bGluZV9zZXQ7CisJCXdhZGRfd2NoOworCQl3YWRkX3djaG5zdHI7CisJCXdhZGRfd2Noc3RyOworCQl3YWRkbndzdHI7CisJCXdhZGR3c3RyOworCQl3Ymtncm5kOworCQl3Ymtncm5kc2V0OworCQl3Ym9yZGVyX3NldDsKKwkJd2VjaG9fd2NoYXI7CisJCXdnZXRfd2NoOworCQl3Z2V0X3dzdHI7CisJCXdnZXRuX3dzdHI7CisJCXdobGluZV9zZXQ7CisJCXdpbl93Y2g7CisJCXdpbl93Y2huc3RyOworCQl3aW5fd2Noc3RyOworCQl3aW5ud3N0cjsKKwkJd2luc19ud3N0cjsKKwkJd2luc193Y2g7CisJCXdpbnNfd3N0cjsKKwkJd2lud3N0cjsKKwkJd3VuY3RybDsKKwkJd3ZsaW5lX3NldDsKKwlsb2NhbDoKKwkJX25jX2luaXRfd2FjczsKKwkJX25jX3Jlc2V0X2NvbG9yczsKKwkJX25jX3ZhcmFyZ3M7CisJCV9uY193Z2V0Y2g7Cit9IE5DVVJTRVNXXzUuMS4yMDAwMDcwODsKKworTkNVUlNFU1dfNS40LjIwMDQwMjA4IHsKKwlnbG9iYWw6CisJCV9uY19vcHRpbWl6ZV9lbmFibGU7CisJCXBlY2hvX3djaGFyOworCQlzbGtfd3NldDsKKwlsb2NhbDoKKwkJX25jX1RvdWNobGluZTsKKwkJX25jX1RvdWNocGFuOworCQlfbmNfV25vdXRyZWZyZXNoOworCQlfbmNfZFBhbmVsOworCQlfbmNfZFN0YWNrOworCQlfbmNfZmlmb19kdW1wOworCQlfbmNfaW5zZXJ0X2NoOworCQlfbmNfaXNfY2hhcmFibGU7CisJCV9uY19saW5lZHVtcDsKKwkJX25jX215X3Zpc2J1ZjsKKwkJX25jX3RvX2NoYXI7CisJCV9uY190b193aWRlY2hhcjsKKwkJX25jX3RyYWNlX3huYW1lczsKKwkJX3RyYWNlZHVtcDsKKwkJX3RyYWNlbW91c2U7Cit9IE5DVVJTRVNXXzUuMy4yMDAyMTAxOTsKKworTkNVUlNFU1dfNS41LjIwMDUxMDEwIHsKKwlnbG9iYWw6CisJCV9uY193Y3J0b21iOworCWxvY2FsOgorCQlfbmNfQ2FsY3VsYXRlX1RleHRfV2lkdGg7CisJCV9uY19XaWRlbl9TdHJpbmc7CisJCV9uY19idWlsZF93Y2g7CisJCV9uY19yZXRyYWNlX2ZpZWxkOworCQlfbmNfcmV0cmFjZV9maWVsZF9wdHI7CisJCV9uY19yZXRyYWNlX2ZpZWxkX3R5cGU7CisJCV9uY19yZXRyYWNlX2Zvcm07CisJCV9uY19yZXRyYWNlX2Zvcm1faG9vazsKKwkJX25jX3JldHJhY2VfaXRlbTsKKwkJX25jX3JldHJhY2VfaXRlbV9vcHRzOworCQlfbmNfcmV0cmFjZV9pdGVtX3B0cjsKKwkJX25jX3JldHJhY2VfbWVudTsKKwkJX25jX3JldHJhY2VfbWVudV9ob29rOworCQlfbmNfcmV0cmFjZV9tZW51X29wdHM7CisJCV9uY19yZXRyYWNlX3BhbmVsOworfSBOQ1VSU0VTV181LjQuMjAwNDAyMDg7CisKK05DVVJTRVNXXzUuNi4yMDA2MTIxNyB7CisJZ2xvYmFsOgorCQlnZXRiZWd4OworCQlnZXRiZWd5OworCQlnZXRjdXJ4OworCQlnZXRjdXJ5OworCQlnZXRtYXh4OworCQlnZXRtYXh5OworCQlnZXRwYXJ4OworCQlnZXRwYXJ5OworCQlub2ZpbHRlcjsKKwkJdXNlX2xlZ2FjeV9jb2Rpbmc7CisJCXdnZXRia2dybmQ7CisJCXdnZXRjaF9ldmVudHM7CisJCXdnZXRuc3RyX2V2ZW50czsKK30gTkNVUlNFU1dfNS41LjIwMDUxMDEwOworCitOQ1VSU0VTV181LjcuMjAwODExMDIgeworCWdsb2JhbDoKKwkJZ2V0YXR0cnM7CisJCWlzX2NsZWFyZWQ7CisJCWlzX2lkY29rOworCQlpc19pZGxvazsKKwkJaXNfaW1tZWRvazsKKwkJaXNfa2V5cGFkOworCQlpc19sZWF2ZW9rOworCQlpc19ub2RlbGF5OworCQlpc19ub3RpbWVvdXQ7CisJCWlzX3Njcm9sbG9rOworCQlpc19zeW5jb2s7CisJCXNldF9lc2NkZWxheTsKKwkJdXNlX3NjcmVlbjsKKwkJdXNlX3dpbmRvdzsKKwkJd2dldHBhcmVudDsKKwkJd2dldHNjcnJlZzsKKwlsb2NhbDoKKwkJX25jX3RyYWNlbW91c2U7CisJCV9uY191bmdldGNoOworfSBOQ1VSU0VTV181LjYuMjAwNjEyMTc7CisKK05DVVJTRVNXXzUuOC4yMDExMDIyNiB7CisJZ2xvYmFsOgorCQlfbmNfcGFuZWxob29rX3NwOworCQlhc3N1bWVfZGVmYXVsdF9jb2xvcnNfc3A7CisJCWJlZXBfc3A7CisJCWNhbl9jaGFuZ2VfY29sb3Jfc3A7CisJCWNlaWxpbmdfcGFuZWw7CisJCWNvbG9yX2NvbnRlbnRfc3A7CisJCWRvdXBkYXRlX3NwOworCQllY2hvX3NwOworCQllbmR3aW5fc3A7CisJCWZpbHRlcl9zcDsKKwkJZmxhc2hfc3A7CisJCWdldF9lc2NkZWxheTsKKwkJZ2V0X2VzY2RlbGF5X3NwOworCQlnZXRtb3VzZV9zcDsKKwkJZ2V0d2luX3NwOworCQlncm91bmRfcGFuZWw7CisJCWhhc19jb2xvcnNfc3A7CisJCWhhc19tb3VzZTsKKwkJaGFzX21vdXNlX3NwOworCQlpbml0X2NvbG9yX3NwOworCQlpbml0X3BhaXJfc3A7CisJCWlzX3BhZDsKKwkJaXNfc3Vid2luOworCQlpc190ZXJtX3Jlc2l6ZWRfc3A7CisJCWlzZW5kd2luX3NwOworCQltY3ByaW50X3NwOworCQltb3VzZWludGVydmFsX3NwOworCQltb3VzZW1hc2tfc3A7CisJCW12Y3VyX3NwOworCQluZXdfZm9ybV9zcDsKKwkJbmV3X21lbnVfc3A7CisJCW5ld3BhZF9zcDsKKwkJbmV3dGVybV9zcDsKKwkJbmV3d2luX3NwOworCQlubF9zcDsKKwkJbm9lY2hvX3NwOworCQlub2ZpbHRlcl9zcDsKKwkJbm9ubF9zcDsKKwkJcGFpcl9jb250ZW50X3NwOworCQlyZXNpemVfdGVybV9zcDsKKwkJcmVzaXpldGVybV9zcDsKKwkJcmVzdGFydHRlcm1fc3A7CisJCXJpcG9mZmxpbmVfc3A7CisJCXNjcl9pbml0X3NwOworCQlzY3JfcmVzdG9yZV9zcDsKKwkJc2NyX3NldF9zcDsKKwkJc2V0X2VzY2RlbGF5X3NwOworCQlzbGtfYXR0cl9zZXRfc3A7CisJCXNsa19hdHRyX3NwOworCQlzbGtfYXR0cm9mZl9zcDsKKwkJc2xrX2F0dHJvbl9zcDsKKwkJc2xrX2F0dHJzZXRfc3A7CisJCXNsa19jbGVhcl9zcDsKKwkJc2xrX2NvbG9yX3NwOworCQlzbGtfaW5pdF9zcDsKKwkJc2xrX2xhYmVsX3NwOworCQlzbGtfbm91dHJlZnJlc2hfc3A7CisJCXNsa19yZWZyZXNoX3NwOworCQlzbGtfcmVzdG9yZV9zcDsKKwkJc2xrX3NldF9zcDsKKwkJc2xrX3RvdWNoX3NwOworCQlzdGFydF9jb2xvcl9zcDsKKwkJdGVybV9hdHRyc19zcDsKKwkJdGVybWF0dHJzX3NwOworCQl1bmdldF93Y2hfc3A7CisJCXVuZ2V0Y2hfc3A7CisJCXVuZ2V0bW91c2Vfc3A7CisJCXVwZGF0ZV9wYW5lbHNfc3A7CisJCXVzZV9kZWZhdWx0X2NvbG9yc19zcDsKKwkJdXNlX2xlZ2FjeV9jb2Rpbmdfc3A7CisJCXZpZF9hdHRyX3NwOworCQl2aWRfcHV0c19zcDsKKwkJdmlkYXR0cl9zcDsKKwkJdmlkcHV0c19zcDsKKwkJd3VuY3RybF9zcDsKKwlsb2NhbDoKKwkJX25jX1RZUEVfQUxOVU07CisJCV9uY19UWVBFX0FMUEhBOworCQlfbmNfVFlQRV9FTlVNOworCQlfbmNfVFlQRV9JTlRFR0VSOworCQlfbmNfVFlQRV9JUFY0OworCQlfbmNfVFlQRV9OVU1FUklDOworCQlfbmNfVFlQRV9SRUdFWFA7CisJCV9uY19jdXJzY3Jfb2Y7CisJCV9uY19kb19jb2xvcl9zcDsKKwkJX25jX2Zvcm1fY3Vyc29yOworCQlfbmNfZm9ybWF0X3Nsa3M7CisJCV9uY19mcmVlX2FuZF9leGl0X3NwOworCQlfbmNfZnJlZWFsbF9zcDsKKwkJX25jX2Z0eV9nZW5lcmljOworCQlfbmNfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19nZXRfZmllbGRidWZmZXI7CisJCV9uY19oYXNoX21hcF9zcDsKKwkJX25jX2luc2VydF93Y2g7CisJCV9uY19saW5lZHVtcF9zcDsKKwkJX25jX21ha2Vfb2xkaGFzaF9zcDsKKwkJX25jX21ha2VuZXdfc3A7CisJCV9uY19tc2VjX2Nvc3Rfc3A7CisJCV9uY19tdmN1cl9pbml0X3NwOworCQlfbmNfbXZjdXJfcmVzdW1lX3NwOworCQlfbmNfbXZjdXJfd3JhcF9zcDsKKwkJX25jX25ld3Njcl9vZjsKKwkJX25jX3ByaW50Zl9zdHJpbmdfc3A7CisJCV9uY19yZXNldF9jb2xvcnNfc3A7CisJCV9uY19yZXRyYWNlX21tYXNrX3Q7CisJCV9uY19yaXBvZmZsaW5lX3NwOworCQlfbmNfc2NyZWVuX2luaXRfc3A7CisJCV9uY19zY3JlZW5fcmVzdW1lX3NwOworCQlfbmNfc2NyZWVuX3dyYXBfc3A7CisJCV9uY19zY3JvbGxfb2xkaGFzaF9zcDsKKwkJX25jX3Njcm9sbF9vcHRpbWl6ZV9zcDsKKwkJX25jX3Njcm9sbG5fc3A7CisJCV9uY19zZXRfZ2VuZXJpY19maWVsZHR5cGU7CisJCV9uY19zZXR1cHNjcmVlbl9zcDsKKwkJX25jX3N0ZHNjcl9vZjsKK30gTkNVUlNFU1dfNS43LjIwMDgxMTAyOworCitOQ1VSU0VTV181LjkuMjAxNTA1MzAgeworCWdsb2JhbDoKKwkJZm9ybV9kcml2ZXJfdzsKKwkJd2dldGRlbGF5OworCWxvY2FsOgorCQlfKjsKKwkJX25jX212Y3VyOworCQlfbmNfbXZjdXJfc3A7CisJCV9uY190cmFjZV9tbWFza190OworfSBOQ1VSU0VTV181LjguMjAxMTAyMjY7CmRpZmYgLS1naXQgYS9wYWNrYWdlL25jdXJzZXN3LnN5bSBiL3BhY2thZ2UvbmN1cnNlc3cuc3ltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZWJhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlL25jdXJzZXN3LnN5bQpAQCAtMCwwICsxLDk2MCBAQAorIyAkSWQ6IG5jdXJzZXN3LnN5bSx2IDEuMjQgMjAxNS8wNi8yNyAyMjozMDoyOSB0b20gRXhwICQKKyMgc2NyaXB0IGZvciBzaGFyZWQgbGlicmFyeSBzeW1ib2wtdmlzaWJpbGl0eSB1c2luZyBsaWJ0b29sCisjCisjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IG5jdS1tYXBzeW1zCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjEuMjAwMDA3MDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS4yLjIwMDAxMDIxKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuMy4yMDAyMTAxOSkKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjQuMjAwNDAyMDgpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS41LjIwMDUxMDEwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNi4yMDA2MTIxNykKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuNy4yMDA4MTEwMikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2dldGNoLWV2ZW50cyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDUuOC4yMDExMDIyNikKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1nZXRjYXAgLS1lbmFibGUtZ2V0Y2FwLWNhY2hlIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS10ZXJtY2FwIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtaW50ZXJvcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdnZXRjaC1ldmVudHMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWhhc2hlZC1kYiAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdGljbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjIENvbmZpZ3VyZSBvcHRpb25zICg1LjkuMjAxMTA0MDQpCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtZ2V0Y2FwIC0tZW5hYmxlLWdldGNhcC1jYWNoZSAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtdGVybWNhcCAtLWVuYWJsZS13aWRlYyAtLXdpdGgtdGVybWxpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS1zcC1mdW5jcyAtLWVuYWJsZS13aWRlYyAtLXdpdGgtYnJva2VuX2xpbmtlciAtLXdpdGgtaGFzaGVkLWRiIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZSAtLXdpdGhvdXQtY3h4LWJpbmRpbmcKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtc3AtZnVuY3MgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UgLS13aXRob3V0LWN4eC1iaW5kaW5nCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC10ZXJtbGliIC0td2l0aC10aWNsaWIgLS13aXRoLXRyYWNlIC0td2l0aG91dC1jeHgtYmluZGluZworIyBDb25maWd1cmUgb3B0aW9ucyAoNS45LjIwMTUwNTMwKQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMgQ29uZmlndXJlIG9wdGlvbnMgKDYuMC5jdXJyZW50KQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWdldGNhcCAtLWVuYWJsZS1nZXRjYXAtY2FjaGUgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXRlcm1jYXAgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLWludGVyb3AgLS1lbmFibGUtd2lkZWMgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1icm9rZW5fbGlua2VyIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRyYWNlCisjCS0tZGlzYWJsZS1nZXRjYXAgLS1kaXNhYmxlLWxlYWtzIC0tZGlzYWJsZS1yb290LWVudmlyb24gLS1kaXNhYmxlLXRlcm1jYXAgLS1lbmFibGUtaGFyZC10YWJzIC0tZW5hYmxlLXNwLWZ1bmNzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC10ZXJtbGliIC0td2l0aC10cmFjZQorIwktLWRpc2FibGUtZ2V0Y2FwIC0tZGlzYWJsZS1sZWFrcyAtLWRpc2FibGUtcm9vdC1lbnZpcm9uIC0tZGlzYWJsZS10ZXJtY2FwIC0tZW5hYmxlLWhhcmQtdGFicyAtLWVuYWJsZS13Z2V0Y2gtZXZlbnRzIC0tZW5hYmxlLXdpZGVjIC0td2l0aC1oYXNoZWQtZGIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKKyMJLS1kaXNhYmxlLWdldGNhcCAtLWRpc2FibGUtbGVha3MgLS1kaXNhYmxlLXJvb3QtZW52aXJvbiAtLWRpc2FibGUtdGVybWNhcCAtLWVuYWJsZS1oYXJkLXRhYnMgLS1lbmFibGUtd2lkZWMgLS13aXRoLWJyb2tlbl9saW5rZXIgLS13aXRoLXRlcm1saWIgLS13aXRoLXRpY2xpYiAtLXdpdGgtdHJhY2UKK0JDCitDT0xPUlMKK0NPTE9SX1BBSVIKK0NPTE9SX1BBSVJTCitDT0xTCitFU0NERUxBWQorTElORVMKK1BBSVJfTlVNQkVSCitQQworU1AKK1RBQlNJWkUKK1RZUEVfQUxOVU0KK1RZUEVfQUxQSEEKK1RZUEVfRU5VTQorVFlQRV9JTlRFR0VSCitUWVBFX0lQVjQKK1RZUEVfTlVNRVJJQworVFlQRV9SRUdFWFAKK1VQCitfbmNfRGVmYXVsdF9GaWVsZAorX25jX0RlZmF1bHRfRm9ybQorX25jX2FjY2VzcworX25jX2FkZF90b190cnkKK19uY19hbGlnbl90ZXJtdHlwZQorX25jX2FsbG9jX2VudHJ5X2xlYWtzCitfbmNfYWx0Y2hhcnNldF9uYW1lCitfbmNfYmFzZW5hbWUKK19uY19jYXBjbXAKK19uY19jYXB0b2luZm9fbGVha3MKK19uY19jaGVja190ZXJtdHlwZQorX25jX2NoZWNrX3Rlcm10eXBlMgorX25jX2NvbXBfc2Nhbl9sZWFrcworX25jX2NvcHlfdGVybXR5cGUKK19uY19jdXJyX2NvbAorX25jX2N1cnJfbGluZQorX25jX2RiX2Nsb3NlCitfbmNfZGJfZmlyc3QKK19uY19kYl9oYXZlX2RhdGEKK19uY19kYl9uZXh0CitfbmNfZGJfb3BlbgorX25jX2RiX3B1dAorX25jX2Rpc2FibGVfcGVyaW9kCitfbmNfZG9hbGxvYworX25jX2VudHJ5X21hdGNoCitfbmNfZW52X2FjY2VzcworX25jX2Vycl9hYm9ydAorX25jX2V2ZW50bGlzdF90aW1lb3V0CitfbmNfZmFsbGJhY2sKK19uY19maW5kX2VudHJ5CitfbmNfZmluZF90eXBlX2VudHJ5CitfbmNfZmlyc3RfZGIKK19uY19maXJzdF9uYW1lCitfbmNfZmx1c2gKK19uY19mbHVzaF9zcAorX25jX2ZyZWVfYW5kX2V4aXQKK19uY19mcmVlX2VudHJpZXMKK19uY19mcmVlX3Rlcm10eXBlCitfbmNfZnJlZV90aWMKK19uY19mcmVlX3RpbmZvCitfbmNfZnJlZV90cGFybQorX25jX2ZyZWVhbGwKK19uY19nZXRfYWxpYXNfdGFibGUKK19uY19nZXRfaGFzaF90YWJsZQorX25jX2dldF9sb2NhbGUKK19uY19nZXRfc2NyZWVuc2l6ZQorX25jX2dldF9zb3VyY2UKK19uY19nZXRfdGFibGUKK19uY19nZXRfdHR5X21vZGUKK19uY19nZXRfdHR5X21vZGVfc3AKK19uY19nZXRfdHlwZQorX25jX2dldGVudl9udW0KK19uY19nbG9iYWxzCitfbmNfaGFuZGxlX3NpZ3dpbmNoCitfbmNfaGFzX21vdXNlCitfbmNfaGVhZAorX25jX2hvbWVfdGVybWluZm8KK19uY19pbmZvX2hhc2hfdGFibGUKK19uY19pbmZvdG9jYXAKK19uY19pbml0X2FjcworX25jX2luaXRfYWNzX3NwCitfbmNfaW5pdF90ZXJtdHlwZQorX25jX2lzX2Fic19wYXRoCitfbmNfaXNfZGlyX3BhdGgKK19uY19pc19maWxlX3BhdGgKK19uY19rZWVwX3RpY19kaXIKK19uY19rZXluYW1lX2xlYWtzCitfbmNfa2V5cGFkCitfbmNfbGFzdF9kYgorX25jX2xlYWtzX3RpbmZvCitfbmNfbG9jYWxlX2JyZWFrc19hY3MKK19uY19uYW1lX21hdGNoCitfbmNfbmV4dF9kYgorX25jX29wdGltaXplX2VuYWJsZQorX25jX291dGNfd3JhcHBlcgorX25jX291dGNoCitfbmNfb3V0Y2hfc3AKK19uY19vdXRjaGFycworX25jX3BhbmVsaG9vaworX25jX3BhbmVsaG9va19zcAorX25jX3BhdGhsYXN0CitfbmNfcHJlc2NyZWVuCitfbmNfcHV0Y2hhcgorX25jX3B1dGNoYXJfc3AKK19uY19wdXRwCitfbmNfcHV0cF9mbHVzaAorX25jX3B1dHBfZmx1c2hfc3AKK19uY19wdXRwX3NwCitfbmNfcmVhZF9lbnRyeQorX25jX3JlYWRfZW50cnlfc291cmNlCitfbmNfcmVhZF9maWxlX2VudHJ5CitfbmNfcmVhZF90ZXJtdHlwZQorX25jX3Jlc2V0X2lucHV0CitfbmNfcmVzb2x2ZV91c2VzCitfbmNfcmVzb2x2ZV91c2VzMgorX25jX3JldHJhY2VfYXR0cl90CitfbmNfcmV0cmFjZV9ib29sCitfbmNfcmV0cmFjZV9jaHR5cGUKK19uY19yZXRyYWNlX2NwdHIKK19uY19yZXRyYWNlX2N2b2lkX3B0cgorX25jX3JldHJhY2VfaW50CitfbmNfcmV0cmFjZV9pbnRfYXR0cl90CitfbmNfcmV0cmFjZV9wdHIKK19uY19yZXRyYWNlX3NwCitfbmNfcmV0cmFjZV91bnNpZ25lZAorX25jX3JldHJhY2Vfdm9pZF9wdHIKK19uY19yZXRyYWNlX3dpbgorX25jX3JpcG9mZmxpbmUKK19uY19yb290bmFtZQorX25jX3NhZmVfc3RyY2F0CitfbmNfc2FmZV9zdHJjcHkKK19uY19zY3JlZW5fY2hhaW4KK19uY19zY3JlZW5fb2YKK19uY19zZXRfYnVmZmVyCitfbmNfc2V0X2J1ZmZlcl9zcAorX25jX3NldF9ub19wYWRkaW5nCitfbmNfc2V0X3NvdXJjZQorX25jX3NldF90dHlfbW9kZQorX25jX3NldF90dHlfbW9kZV9zcAorX25jX3NldF90eXBlCitfbmNfc2V0X3dyaXRlZGlyCitfbmNfc2V0dXB0ZXJtCitfbmNfc3RyX2NvcHkKK19uY19zdHJfaW5pdAorX25jX3N0cl9udWxsCitfbmNfc3RyaWN0X2JzZAorX25jX3N1cHByZXNzX3dhcm5pbmdzCitfbmNfc3ludGF4CitfbmNfc3lzZXJyX2Fib3J0CitfbmNfdGFpbAorX25jX3RnZXRlbnRfbGVha3MKK19uY190aWNfZGlyCitfbmNfdGljX2V4cGFuZAorX25jX3RpY193cml0dGVuCitfbmNfdGltZWRfd2FpdAorX25jX3RpbmZvX2ZrZXlzCitfbmNfdHBhcm1fYW5hbHl6ZQorX25jX3RwYXJtX2VycgorX25jX3RwdXRzX3RyYWNlCitfbmNfdHJhY2VfYnVmCitfbmNfdHJhY2VfYnVmY2F0CitfbmNfdHJhY2VjaGFyCitfbmNfdHJhY2luZworX25jX3RyYW5zX3N0cmluZworX25jX3RyaW1fc2dyMAorX25jX3VuaWNvZGVfbG9jYWxlCitfbmNfdXBkYXRlX3NjcmVlbnNpemUKK19uY191c2VyX2RlZmluYWJsZQorX25jX3V0Zjhfb3V0Y2gKK19uY192aXNidWYKK19uY192aXNidWYyCitfbmNfdmlzYnVmbgorX25jX3Zpc2NidWYKK19uY192aXN3YnVmCitfbmNfdmlzd2J1Zm4KK19uY192aXN3aWJ1ZgorX25jX3dhY3MKK19uY193YXJuaW5nCitfbmNfd2Noc3RybGVuCitfbmNfd2NydG9tYgorX25jX3dyaXRlX2VudHJ5CitfdHJhY2VhdHRyCitfdHJhY2VhdHRyMgorX3RyYWNlY2NoYXJfdAorX3RyYWNlY2NoYXJfdDIKK190cmFjZWNoYXIKK190cmFjZWNodHlwZQorX3RyYWNlY2h0eXBlMgorX3RyYWNlZgorYWNzX21hcAorYWRkX3djaAorYWRkX3djaG5zdHIKK2FkZF93Y2hzdHIKK2FkZGNoCithZGRjaG5zdHIKK2FkZGNoc3RyCithZGRuc3RyCithZGRud3N0cgorYWRkc3RyCithZGR3c3RyCithc3N1bWVfZGVmYXVsdF9jb2xvcnMKK2Fzc3VtZV9kZWZhdWx0X2NvbG9yc19zcAorYXR0cl9nZXQKK2F0dHJfb2ZmCithdHRyX29uCithdHRyX3NldAorYXR0cm9mZgorYXR0cm9uCithdHRyc2V0CitiYXVkcmF0ZQorYmF1ZHJhdGVfc3AKK2JlZXAKK2JlZXBfc3AKK2JrZ2QKK2JrZ2RzZXQKK2JrZ3JuZAorYmtncm5kc2V0Citib29sY29kZXMKK2Jvb2xmbmFtZXMKK2Jvb2xuYW1lcworYm9yZGVyCitib3JkZXJfc2V0Citib3R0b21fcGFuZWwKK2JveAorYm94X3NldAorY2FuX2NoYW5nZV9jb2xvcgorY2FuX2NoYW5nZV9jb2xvcl9zcAorY2JyZWFrCitjYnJlYWtfc3AKK2NlaWxpbmdfcGFuZWwKK2NoZ2F0CitjbGVhcgorY2xlYXJvaworY2xydG9ib3QKK2NscnRvZW9sCitjb2xvcl9jb250ZW50Citjb2xvcl9jb250ZW50X3NwCitjb2xvcl9zZXQKK2NvcHl3aW4KK2N1cl90ZXJtCitjdXJyZW50X2ZpZWxkCitjdXJyZW50X2l0ZW0KK2N1cnNfc2V0CitjdXJzX3NldF9zcAorY3Vyc2NyCitjdXJzZXNfdmVyc2lvbgorZGF0YV9haGVhZAorZGF0YV9iZWhpbmQKK2RlZl9wcm9nX21vZGUKK2RlZl9wcm9nX21vZGVfc3AKK2RlZl9zaGVsbF9tb2RlCitkZWZfc2hlbGxfbW9kZV9zcAorZGVmaW5lX2tleQorZGVmaW5lX2tleV9zcAorZGVsX2N1cnRlcm0KK2RlbF9jdXJ0ZXJtX3NwCitkZWxfcGFuZWwKK2RlbGF5X291dHB1dAorZGVsYXlfb3V0cHV0X3NwCitkZWxjaAorZGVsZXRlbG4KK2RlbHNjcmVlbgorZGVsd2luCitkZXJ3aW4KK2RvdXBkYXRlCitkb3VwZGF0ZV9zcAorZHVwX2ZpZWxkCitkdXB3aW4KK2R5bmFtaWNfZmllbGRfaW5mbworZWNobworZWNob19zcAorZWNob193Y2hhcgorZWNob2NoYXIKK2VuZHdpbgorZW5kd2luX3NwCitlcmFzZQorZXJhc2VjaGFyCitlcmFzZWNoYXJfc3AKK2VyYXNld2NoYXIKK2ZpZWxkX2FyZworZmllbGRfYmFjaworZmllbGRfYnVmZmVyCitmaWVsZF9jb3VudAorZmllbGRfZm9yZQorZmllbGRfaW5kZXgKK2ZpZWxkX2luZm8KK2ZpZWxkX2luaXQKK2ZpZWxkX2p1c3QKK2ZpZWxkX29wdHMKK2ZpZWxkX29wdHNfb2ZmCitmaWVsZF9vcHRzX29uCitmaWVsZF9wYWQKK2ZpZWxkX3N0YXR1cworZmllbGRfdGVybQorZmllbGRfdHlwZQorZmllbGRfdXNlcnB0cgorZmlsdGVyCitmaWx0ZXJfc3AKK2ZsYXNoCitmbGFzaF9zcAorZmx1c2hpbnAKK2ZsdXNoaW5wX3NwCitmb3JtX2RyaXZlcgorZm9ybV9kcml2ZXJfdworZm9ybV9maWVsZHMKK2Zvcm1faW5pdAorZm9ybV9vcHRzCitmb3JtX29wdHNfb2ZmCitmb3JtX29wdHNfb24KK2Zvcm1fcGFnZQorZm9ybV9yZXF1ZXN0X2J5X25hbWUKK2Zvcm1fcmVxdWVzdF9uYW1lCitmb3JtX3N1YgorZm9ybV90ZXJtCitmb3JtX3VzZXJwdHIKK2Zvcm1fd2luCitmcmVlX2ZpZWxkCitmcmVlX2ZpZWxkdHlwZQorZnJlZV9mb3JtCitmcmVlX2l0ZW0KK2ZyZWVfbWVudQorZ2V0X2VzY2RlbGF5CitnZXRfZXNjZGVsYXlfc3AKK2dldF93Y2gKK2dldF93c3RyCitnZXRhdHRycworZ2V0YmVneAorZ2V0YmVneQorZ2V0YmtnZAorZ2V0Ymtncm5kCitnZXRjY2hhcgorZ2V0Y2gKK2dldGN1cngKK2dldGN1cnkKK2dldG1heHgKK2dldG1heHkKK2dldG1vdXNlCitnZXRtb3VzZV9zcAorZ2V0bl93c3RyCitnZXRuc3RyCitnZXRwYXJ4CitnZXRwYXJ5CitnZXRzdHIKK2dldHdpbgorZ2V0d2luX3NwCitncm91bmRfcGFuZWwKK2hhbGZkZWxheQoraGFsZmRlbGF5X3NwCitoYXNfY29sb3JzCitoYXNfY29sb3JzX3NwCitoYXNfaWMKK2hhc19pY19zcAoraGFzX2lsCitoYXNfaWxfc3AKK2hhc19rZXkKK2hhc19rZXlfc3AKK2hhc19tb3VzZQoraGFzX21vdXNlX3NwCitoaWRlX3BhbmVsCitobGluZQoraGxpbmVfc2V0CitpZGNvaworaWRsb2sKK2ltbWVkb2sKK2luX3djaAoraW5fd2NobnN0cgoraW5fd2Noc3RyCitpbmNoCitpbmNobnN0cgoraW5jaHN0cgoraW5pdF9jb2xvcgoraW5pdF9jb2xvcl9zcAoraW5pdF9wYWlyCitpbml0X3BhaXJfc3AKK2luaXRzY3IKK2lubnN0cgoraW5ud3N0cgoraW5zX253c3RyCitpbnNfd2NoCitpbnNfd3N0cgoraW5zY2gKK2luc2RlbGxuCitpbnNlcnRsbgoraW5zbnN0cgoraW5zc3RyCitpbnN0cgoraW50cmZsdXNoCitpbnRyZmx1c2hfc3AKK2lud3N0cgoraXNfY2xlYXJlZAoraXNfaWRjb2sKK2lzX2lkbG9rCitpc19pbW1lZG9rCitpc19rZXlwYWQKK2lzX2xlYXZlb2sKK2lzX2xpbmV0b3VjaGVkCitpc19ub2RlbGF5Citpc19ub3RpbWVvdXQKK2lzX3BhZAoraXNfc2Nyb2xsb2sKK2lzX3N1YndpbgoraXNfc3luY29rCitpc190ZXJtX3Jlc2l6ZWQKK2lzX3Rlcm1fcmVzaXplZF9zcAoraXNfd2ludG91Y2hlZAoraXNlbmR3aW4KK2lzZW5kd2luX3NwCitpdGVtX2NvdW50CitpdGVtX2Rlc2NyaXB0aW9uCitpdGVtX2luZGV4CitpdGVtX2luaXQKK2l0ZW1fbmFtZQoraXRlbV9vcHRzCitpdGVtX29wdHNfb2ZmCitpdGVtX29wdHNfb24KK2l0ZW1fdGVybQoraXRlbV91c2VycHRyCitpdGVtX3ZhbHVlCitpdGVtX3Zpc2libGUKK2tleV9kZWZpbmVkCitrZXlfZGVmaW5lZF9zcAora2V5X25hbWUKK2tleWJvdW5kCitrZXlib3VuZF9zcAora2V5bmFtZQora2V5bmFtZV9zcAora2V5b2sKK2tleW9rX3NwCitrZXlwYWQKK2tpbGxjaGFyCitraWxsY2hhcl9zcAora2lsbHdjaGFyCitsZWF2ZW9rCitsaW5rX2ZpZWxkCitsaW5rX2ZpZWxkdHlwZQorbG9uZ25hbWUKK21jcHJpbnQKK21jcHJpbnRfc3AKK21lbnVfYmFjaworbWVudV9kcml2ZXIKK21lbnVfZm9yZQorbWVudV9mb3JtYXQKK21lbnVfZ3JleQorbWVudV9pbml0CittZW51X2l0ZW1zCittZW51X21hcmsKK21lbnVfb3B0cworbWVudV9vcHRzX29mZgorbWVudV9vcHRzX29uCittZW51X3BhZAorbWVudV9wYXR0ZXJuCittZW51X3JlcXVlc3RfYnlfbmFtZQorbWVudV9yZXF1ZXN0X25hbWUKK21lbnVfc3BhY2luZworbWVudV9zdWIKK21lbnVfdGVybQorbWVudV91c2VycHRyCittZW51X3dpbgorbWV0YQorbW91c2VfdHJhZm8KK21vdXNlaW50ZXJ2YWwKK21vdXNlaW50ZXJ2YWxfc3AKK21vdXNlbWFzaworbW91c2VtYXNrX3NwCittb3ZlCittb3ZlX2ZpZWxkCittb3ZlX3BhbmVsCittdmFkZF93Y2gKK212YWRkX3djaG5zdHIKK212YWRkX3djaHN0cgorbXZhZGRjaAorbXZhZGRjaG5zdHIKK212YWRkY2hzdHIKK212YWRkbnN0cgorbXZhZGRud3N0cgorbXZhZGRzdHIKK212YWRkd3N0cgorbXZjaGdhdAorbXZjdXIKK212Y3VyX3NwCittdmRlbGNoCittdmRlcndpbgorbXZnZXRfd2NoCittdmdldF93c3RyCittdmdldGNoCittdmdldG5fd3N0cgorbXZnZXRuc3RyCittdmdldHN0cgorbXZobGluZQorbXZobGluZV9zZXQKK212aW5fd2NoCittdmluX3djaG5zdHIKK212aW5fd2Noc3RyCittdmluY2gKK212aW5jaG5zdHIKK212aW5jaHN0cgorbXZpbm5zdHIKK212aW5ud3N0cgorbXZpbnNfbndzdHIKK212aW5zX3djaAorbXZpbnNfd3N0cgorbXZpbnNjaAorbXZpbnNuc3RyCittdmluc3N0cgorbXZpbnN0cgorbXZpbndzdHIKK212cHJpbnR3CittdnNjYW53CittdnZsaW5lCittdnZsaW5lX3NldAorbXZ3YWRkX3djaAorbXZ3YWRkX3djaG5zdHIKK212d2FkZF93Y2hzdHIKK212d2FkZGNoCittdndhZGRjaG5zdHIKK212d2FkZGNoc3RyCittdndhZGRuc3RyCittdndhZGRud3N0cgorbXZ3YWRkc3RyCittdndhZGR3c3RyCittdndjaGdhdAorbXZ3ZGVsY2gKK212d2dldF93Y2gKK212d2dldF93c3RyCittdndnZXRjaAorbXZ3Z2V0bl93c3RyCittdndnZXRuc3RyCittdndnZXRzdHIKK212d2hsaW5lCittdndobGluZV9zZXQKK212d2luCittdndpbl93Y2gKK212d2luX3djaG5zdHIKK212d2luX3djaHN0cgorbXZ3aW5jaAorbXZ3aW5jaG5zdHIKK212d2luY2hzdHIKK212d2lubnN0cgorbXZ3aW5ud3N0cgorbXZ3aW5zX253c3RyCittdndpbnNfd2NoCittdndpbnNfd3N0cgorbXZ3aW5zY2gKK212d2luc25zdHIKK212d2luc3N0cgorbXZ3aW5zdHIKK212d2lud3N0cgorbXZ3cHJpbnR3CittdndzY2FudworbXZ3dmxpbmUKK212d3ZsaW5lX3NldAorbmFwbXMKK25hcG1zX3NwCituZXdfZmllbGQKK25ld19maWVsZHR5cGUKK25ld19mb3JtCituZXdfZm9ybV9zcAorbmV3X2l0ZW0KK25ld19tZW51CituZXdfbWVudV9zcAorbmV3X3BhZ2UKK25ld19wYW5lbAorbmV3X3ByZXNjcgorbmV3cGFkCituZXdwYWRfc3AKK25ld3NjcgorbmV3dGVybQorbmV3dGVybV9zcAorbmV3d2luCituZXd3aW5fc3AKK25sCitubF9zcAorbm9jYnJlYWsKK25vY2JyZWFrX3NwCitub2RlbGF5Citub2VjaG8KK25vZWNob19zcAorbm9maWx0ZXIKK25vZmlsdGVyX3NwCitub25sCitub25sX3NwCitub3FpZmx1c2gKK25vcWlmbHVzaF9zcAorbm9yYXcKK25vcmF3X3NwCitub3RpbWVvdXQKK251bWNvZGVzCitudW1mbmFtZXMKK251bW5hbWVzCitvc3BlZWQKK292ZXJsYXkKK292ZXJ3cml0ZQorcGFpcl9jb250ZW50CitwYWlyX2NvbnRlbnRfc3AKK3BhbmVsX2Fib3ZlCitwYW5lbF9iZWxvdworcGFuZWxfaGlkZGVuCitwYW5lbF91c2VycHRyCitwYW5lbF93aW5kb3cKK3BlY2hvX3djaGFyCitwZWNob2NoYXIKK3Bub3V0cmVmcmVzaAorcG9zX2Zvcm1fY3Vyc29yCitwb3NfbWVudV9jdXJzb3IKK3Bvc3RfZm9ybQorcG9zdF9tZW51CitwcmVmcmVzaAorcHJpbnR3CitwdXRwCitwdXRwX3NwCitwdXR3aW4KK3FpZmx1c2gKK3FpZmx1c2hfc3AKK3JhdworcmF3X3NwCityZWRyYXd3aW4KK3JlZnJlc2gKK3JlcGxhY2VfcGFuZWwKK3Jlc2V0X3Byb2dfbW9kZQorcmVzZXRfcHJvZ19tb2RlX3NwCityZXNldF9zaGVsbF9tb2RlCityZXNldF9zaGVsbF9tb2RlX3NwCityZXNldHR5CityZXNldHR5X3NwCityZXNpemVfdGVybQorcmVzaXplX3Rlcm1fc3AKK3Jlc2l6ZXRlcm0KK3Jlc2l6ZXRlcm1fc3AKK3Jlc3RhcnR0ZXJtCityZXN0YXJ0dGVybV9zcAorcmlwb2ZmbGluZQorcmlwb2ZmbGluZV9zcAorc2F2ZXR0eQorc2F2ZXR0eV9zcAorc2NhbGVfZm9ybQorc2NhbGVfbWVudQorc2NhbncKK3Njcl9kdW1wCitzY3JfaW5pdAorc2NyX2luaXRfc3AKK3Njcl9yZXN0b3JlCitzY3JfcmVzdG9yZV9zcAorc2NyX3NldAorc2NyX3NldF9zcAorc2NybAorc2Nyb2xsCitzY3JvbGxvaworc2V0X2N1cnJlbnRfZmllbGQKK3NldF9jdXJyZW50X2l0ZW0KK3NldF9jdXJ0ZXJtCitzZXRfY3VydGVybV9zcAorc2V0X2VzY2RlbGF5CitzZXRfZXNjZGVsYXlfc3AKK3NldF9maWVsZF9iYWNrCitzZXRfZmllbGRfYnVmZmVyCitzZXRfZmllbGRfZm9yZQorc2V0X2ZpZWxkX2luaXQKK3NldF9maWVsZF9qdXN0CitzZXRfZmllbGRfb3B0cworc2V0X2ZpZWxkX3BhZAorc2V0X2ZpZWxkX3N0YXR1cworc2V0X2ZpZWxkX3Rlcm0KK3NldF9maWVsZF90eXBlCitzZXRfZmllbGRfdXNlcnB0cgorc2V0X2ZpZWxkdHlwZV9hcmcKK3NldF9maWVsZHR5cGVfY2hvaWNlCitzZXRfZm9ybV9maWVsZHMKK3NldF9mb3JtX2luaXQKK3NldF9mb3JtX29wdHMKK3NldF9mb3JtX3BhZ2UKK3NldF9mb3JtX3N1Ygorc2V0X2Zvcm1fdGVybQorc2V0X2Zvcm1fdXNlcnB0cgorc2V0X2Zvcm1fd2luCitzZXRfaXRlbV9pbml0CitzZXRfaXRlbV9vcHRzCitzZXRfaXRlbV90ZXJtCitzZXRfaXRlbV91c2VycHRyCitzZXRfaXRlbV92YWx1ZQorc2V0X21heF9maWVsZAorc2V0X21lbnVfYmFjaworc2V0X21lbnVfZm9yZQorc2V0X21lbnVfZm9ybWF0CitzZXRfbWVudV9ncmV5CitzZXRfbWVudV9pbml0CitzZXRfbWVudV9pdGVtcworc2V0X21lbnVfbWFyaworc2V0X21lbnVfb3B0cworc2V0X21lbnVfcGFkCitzZXRfbWVudV9wYXR0ZXJuCitzZXRfbWVudV9zcGFjaW5nCitzZXRfbWVudV9zdWIKK3NldF9tZW51X3Rlcm0KK3NldF9tZW51X3VzZXJwdHIKK3NldF9tZW51X3dpbgorc2V0X25ld19wYWdlCitzZXRfcGFuZWxfdXNlcnB0cgorc2V0X3RhYnNpemUKK3NldF90YWJzaXplX3NwCitzZXRfdGVybQorc2V0X3RvcF9yb3cKK3NldGNjaGFyCitzZXRzY3JyZWcKK3NldHVwdGVybQorc2hvd19wYW5lbAorc2xrX2F0dHIKK3Nsa19hdHRyX29mZgorc2xrX2F0dHJfb24KK3Nsa19hdHRyX3NldAorc2xrX2F0dHJfc2V0X3NwCitzbGtfYXR0cl9zcAorc2xrX2F0dHJvZmYKK3Nsa19hdHRyb2ZmX3NwCitzbGtfYXR0cm9uCitzbGtfYXR0cm9uX3NwCitzbGtfYXR0cnNldAorc2xrX2F0dHJzZXRfc3AKK3Nsa19jbGVhcgorc2xrX2NsZWFyX3NwCitzbGtfY29sb3IKK3Nsa19jb2xvcl9zcAorc2xrX2luaXQKK3Nsa19pbml0X3NwCitzbGtfbGFiZWwKK3Nsa19sYWJlbF9zcAorc2xrX25vdXRyZWZyZXNoCitzbGtfbm91dHJlZnJlc2hfc3AKK3Nsa19yZWZyZXNoCitzbGtfcmVmcmVzaF9zcAorc2xrX3Jlc3RvcmUKK3Nsa19yZXN0b3JlX3NwCitzbGtfc2V0CitzbGtfc2V0X3NwCitzbGtfdG91Y2gKK3Nsa190b3VjaF9zcAorc2xrX3dzZXQKK3N0YW5kZW5kCitzdGFuZG91dAorc3RhcnRfY29sb3IKK3N0YXJ0X2NvbG9yX3NwCitzdGRzY3IKK3N0cmNvZGVzCitzdHJmbmFtZXMKK3N0cm5hbWVzCitzdWJwYWQKK3N1Yndpbgorc3luY29rCit0ZXJtX2F0dHJzCit0ZXJtX2F0dHJzX3NwCit0ZXJtYXR0cnMKK3Rlcm1hdHRyc19zcAordGVybW5hbWUKK3Rlcm1uYW1lX3NwCit0Z2V0ZW50Cit0Z2V0ZW50X3NwCit0Z2V0ZmxhZwordGdldGZsYWdfc3AKK3RnZXRudW0KK3RnZXRudW1fc3AKK3RnZXRzdHIKK3RnZXRzdHJfc3AKK3Rnb3RvCit0aWdldGZsYWcKK3RpZ2V0ZmxhZ19zcAordGlnZXRudW0KK3RpZ2V0bnVtX3NwCit0aWdldHN0cgordGlnZXRzdHJfc3AKK3RpbWVvdXQKK3RpcGFybQordG9wX3BhbmVsCit0b3Bfcm93Cit0b3VjaGxpbmUKK3RvdWNod2luCit0cGFybQordHB1dHMKK3RwdXRzX3NwCit0cmFjZQordHR5dHlwZQordHlwZWFoZWFkCit0eXBlYWhlYWRfc3AKK3VuY3RybAordW5jdHJsX3NwCit1bmdldF93Y2gKK3VuZ2V0X3djaF9zcAordW5nZXRjaAordW5nZXRjaF9zcAordW5nZXRtb3VzZQordW5nZXRtb3VzZV9zcAordW5wb3N0X2Zvcm0KK3VucG9zdF9tZW51Cit1bnRvdWNod2luCit1cGRhdGVfcGFuZWxzCit1cGRhdGVfcGFuZWxzX3NwCit1c2VfZGVmYXVsdF9jb2xvcnMKK3VzZV9kZWZhdWx0X2NvbG9yc19zcAordXNlX2VudgordXNlX2Vudl9zcAordXNlX2V4dGVuZGVkX25hbWVzCit1c2VfbGVnYWN5X2NvZGluZwordXNlX2xlZ2FjeV9jb2Rpbmdfc3AKK3VzZV9zY3JlZW4KK3VzZV90aW9jdGwKK3VzZV90aW9jdGxfc3AKK3VzZV93aW5kb3cKK3ZpZF9hdHRyCit2aWRfYXR0cl9zcAordmlkX3B1dHMKK3ZpZF9wdXRzX3NwCit2aWRhdHRyCit2aWRhdHRyX3NwCit2aWRwdXRzCit2aWRwdXRzX3NwCit2bGluZQordmxpbmVfc2V0Cit2d19wcmludHcKK3Z3X3NjYW53Cit2d3ByaW50dwordndzY2Fudword2FkZF93Y2gKK3dhZGRfd2NobnN0cgord2FkZF93Y2hzdHIKK3dhZGRjaAord2FkZGNobnN0cgord2FkZGNoc3RyCit3YWRkbnN0cgord2FkZG53c3RyCit3YWRkc3RyCit3YWRkd3N0cgord2F0dHJfZ2V0Cit3YXR0cl9vZmYKK3dhdHRyX29uCit3YXR0cl9zZXQKK3dhdHRyb2ZmCit3YXR0cm9uCit3YXR0cnNldAord2JrZ2QKK3dia2dkc2V0Cit3Ymtncm5kCit3Ymtncm5kc2V0Cit3Ym9yZGVyCit3Ym9yZGVyX3NldAord2NoZ2F0Cit3Y2xlYXIKK3djbHJ0b2JvdAord2NscnRvZW9sCit3Y29sb3Jfc2V0Cit3Y3Vyc3luY3VwCit3ZGVsY2gKK3dkZWxldGVsbgord2VjaG9fd2NoYXIKK3dlY2hvY2hhcgord2VuY2xvc2UKK3dlcmFzZQord2dldF93Y2gKK3dnZXRfd3N0cgord2dldGJrZ3JuZAord2dldGNoCit3Z2V0Y2hfZXZlbnRzCit3Z2V0ZGVsYXkKK3dnZXRuX3dzdHIKK3dnZXRuc3RyCit3Z2V0bnN0cl9ldmVudHMKK3dnZXRwYXJlbnQKK3dnZXRzY3JyZWcKK3dnZXRzdHIKK3dobGluZQord2hsaW5lX3NldAord2luX3djaAord2luX3djaG5zdHIKK3dpbl93Y2hzdHIKK3dpbmNoCit3aW5jaG5zdHIKK3dpbmNoc3RyCit3aW5uc3RyCit3aW5ud3N0cgord2luc19ud3N0cgord2luc193Y2gKK3dpbnNfd3N0cgord2luc2NoCit3aW5zZGVsbG4KK3dpbnNlcnRsbgord2luc25zdHIKK3dpbnNzdHIKK3dpbnN0cgord2lud3N0cgord21vdXNlX3RyYWZvCit3bW92ZQord25vdXRyZWZyZXNoCit3cHJpbnR3Cit3cmVkcmF3bG4KK3dyZWZyZXNoCit3cmVzaXplCit3c2NhbncKK3dzY3JsCit3c2V0c2NycmVnCit3c3RhbmRlbmQKK3dzdGFuZG91dAord3N5bmNkb3duCit3c3luY3VwCit3dGltZW91dAord3RvdWNobG4KK3d1bmN0cmwKK3d1bmN0cmxfc3AKK3d2bGluZQord3ZsaW5lX3NldApkaWZmIC0tZ2l0IGEvcGFuZWwvTWFrZWZpbGUgYi9wYW5lbC9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRhOGUzZC4uMDAwMDAwMAotLS0gYS9wYW5lbC9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDQ5MiArMCwwIEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjUyIDIwMDcvMDQvMjggMTQ6NTY6MTEgdG9tIEV4cCAkCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKLSMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwotIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCi0jIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKLSMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIwotIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCi0jIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCi0jIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCi0jIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKLSMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIwotIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCi0jIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKLSMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIwotIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIwotIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCi0jIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKLSMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAxOTk2LW9uCi0jCi0jIE1ha2VmaWxlIGZvciBwYW5lbHMgc291cmNlIGNvZGUuCi0jCi0jIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZzoKLSMJbGlicmFyaWVzIChub3JtYWwvZGVidWcvcHJvZmlsZS9zaGFyZWQpCi0jCi0jIFRoZSB2YXJpYWJsZSAnc3JjZGlyJyByZWZlcnMgdG8gdGhlIHNvdXJjZS1kaXN0cmlidXRpb24sIGFuZCBjYW4gYmUgc2V0IHdpdGgKLSMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnkgIi0tc3JjZGlyPURJUiIuCi0jCi0jIFRoZSBydWxlcyBhcmUgb3JnYW5pemVkIHRvIHByb2R1Y2UgdGhlIGxpYnJhcmllcyBmb3IgdGhlIGNvbmZpZ3VyZWQgbW9kZWxzLAotCi0jIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgotLlNVRkZJWEVTOgotCi1TSEVMTAkJPSAvYmluL3NoCi1USElTCQk9IE1ha2VmaWxlCi0KLXgJCT0gCi1vCQk9IC5vCi0KLU1PREVMCQk9IG5vcm1hbAotREVTVERJUgkJPSAKLXNyY2RpcgkJPSAuCi1wcmVmaXgJCT0gL3Vzci9sb2NhbAotZXhlY19wcmVmaXgJPSAke3ByZWZpeH0KLWJpbmRpcgkJPSAke2V4ZWNfcHJlZml4fS9iaW4KLWxpYmRpcgkJPSAke2V4ZWNfcHJlZml4fS9saWIKLWluY2x1ZGVkaXIJPSAke3ByZWZpeH0vaW5jbHVkZS9uY3Vyc2VzCi1kYXRhZGlyCQk9ICR7cHJlZml4fS9zaGFyZQotCi1MSUJUT09MCQk9IAotTElCVE9PTF9DTEVBTgk9IAotTElCVE9PTF9DT01QSUxFCT0gCi1MSUJUT09MX0xJTksJPSAke0NDfQotTElCVE9PTF9JTlNUQUxMCT0gCi1MSUJUT09MX1VOSU5TVEFMTCA9IAotCi1JTlNUQUxMCQk9IC91c3IvYmluL2luc3RhbGwgLWMKLUlOU1RBTExfTElCCT0gL3Vzci9iaW4vaW5zdGFsbCAtYyAtbSA2NDQKLUlOU1RBTExfUFJPRwk9ICR7SU5TVEFMTH0KLUlOU1RBTExfREFUQQk9ICR7SU5TVEFMTH0gLW0gNjQ0Ci0KLUFSCQk9IGFybS1lYWJpLWFyCi1BUl9PUFRTCQk9IHJ2Ci1BV0sJCT0gbWF3awotTEQJCT0gYXJtLWVhYmktbGQKLUxOX1MJCT0gbG4gLXMKLQotQ0MJCT0gYWdjYy5wbAotQ1BQCQk9IGFnY2MucGwgLUUKLUNGTEFHUwkJPSAtTzIgLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZT0xMjAwCi0KLUNQUEZMQUdTCT0gLUkuLi9uY3Vyc2VzIC1ESEFWRV9DT05GSUdfSCAtSS4gLUkuLi9pbmNsdWRlICAtVV9YT1BFTl9TT1VSQ0UgLURfWE9QRU5fU09VUkNFPTUwMCAtVV9QT1NJWF9DX1NPVVJDRSAtRF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMIC1ETkRFQlVHIC1JJHtpbmNsdWRlZGlyfQotCi1DQ0ZMQUdTCQk9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQotCi1DRkxBR1NfTElCVE9PTAk9ICQoQ0NGTEFHUykKLUNGTEFHU19OT1JNQUwJPSAkKENDRkxBR1MpCi1DRkxBR1NfREVCVUcJPSAkKENDRkxBR1MpIC1nIC1EVFJBQ0UKLUNGTEFHU19QUk9GSUxFCT0gJChDQ0ZMQUdTKSAtcGcKLUNGTEFHU19TSEFSRUQJPSAkKENDRkxBR1MpIHVua25vd24KLQotQ0ZMQUdTX0RFRkFVTFQJPSAkKENGTEFHU19OT1JNQUwpCi0KLUxJTksJCT0gJChMSUJUT09MX0xJTkspCi1MREZMQUdTCQk9ICAgCi0KLVNITElCX0RJUlMJPSAtTC4uL2xpYgotU0hMSUJfTElTVAk9ICQoU0hMSUJfRElSUykgLWxuY3Vyc2VzIAotCi1NS19TSEFSRURfTElCCT0gZWNobyB1bmtub3duCi0KLU5DVVJTRVNfTUFKT1IJPSA1Ci1OQ1VSU0VTX01JTk9SCT0gNwotUkVMX1ZFUlNJT04JPSA1LjcKLUFCSV9WRVJTSU9OCT0gNQotCi1SQU5MSUIJCT0gYXJtLWVhYmktcmFubGliCi0KLUxJQlJBUklFUwk9ICAuLi9saWIvbGlicGFuZWwuYSAuLi9saWIvbGlicGFuZWxfZy5hCi0KLUxJTlQJCT0gCi1MSU5UX09QVFMJPSAKLUxJTlRfTElCUwk9IC1scGFuZWwgLWxuY3Vyc2VzIAotCi1BVVRPX1NSQwk9IFwKLQkJLi4vaW5jbHVkZS9wYW5lbC5oCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1hbGwgXAotbGlicyBcCi1pbnN0YWxsIDo6CSQoQVVUT19TUkMpICQoTElCUkFSSUVTKQotCi1zb3VyY2VzOgkkKEFVVE9fU1JDKQotCi0kKERFU1RESVIpJChiaW5kaXIpIFwKLSQoREVTVERJUikkKGxpYmRpcikgOgotCXNoICQoc3JjZGlyKS8uLi9ta2RpcnMuc2ggJEAKLQotIyBtYWtlIGEgY29weSB0byBzaW1wbGlmeSBpbmNsdWRlLXBhdGhzIHdoaWxlIHN0aWxsIGtlZXBpbmcgcGFuZWwncyBpbmNsdWRlCi0jIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuCi0uLi9pbmNsdWRlL3BhbmVsLmggOiAkKHNyY2RpcikvcGFuZWwuaAotCS1ybSAtZiAkQAotCWNwICQoc3JjZGlyKS9wYW5lbC5oICRACi0KLVBBTkVMX1BSSVZfSCA9IFwKLQkkKHNyY2RpcikvcGFuZWwucHJpdi5oIFwKLQkkKHNyY2RpcikvcGFuZWwuaAotCi10YWdzOgotCWN0YWdzICouW2NoXQotCi1UQUdTOgotCWV0YWdzICouW2NoXQotCi1tb3N0bHljbGVhbiA6OgotCS1ybSAtZiBjb3JlIHRhZ3MgVEFHUyAqfiAqLmJhayAqLmkgKi5sbiAqLmF0YWMgdHJhY2UKLQotY2xlYW4gOjogbW9zdGx5Y2xlYW4KLQktcm0gLWYgJChBVVRPX1NSQykKLQotZGlzdGNsZWFuIDo6IGNsZWFuCi0JLXJtIC1mIE1ha2VmaWxlCi0KLXJlYWxjbGVhbiA6OiBkaXN0Y2xlYW4KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIGdlbmVyYXRlZCBieSBtay0wdGguYXdrCi0jICAgbGlibmFtZTogICAgcGFuZWwKLSMgICBzdWJzZXRzOiAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLQotLlNVRkZJWEVTOiAuYyAuY2MgLmggLmkgLmlpCi0uYy5pIDoKLQkkKENQUCkgJChDUFBGTEFHUykgJDwgPiRACi0uY2MuaWkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLS5oLmkgOgotCSQoQ1BQKSAkKENQUEZMQUdTKSAkPCA+JEAKLQotQ19TUkMgPSBcCi0JJChzcmNkaXIpL3BhbmVsLmMgXAotCSQoc3JjZGlyKS9wX2Fib3ZlLmMgXAotCSQoc3JjZGlyKS9wX2JlbG93LmMgXAotCSQoc3JjZGlyKS9wX2JvdHRvbS5jIFwKLQkkKHNyY2RpcikvcF9kZWxldGUuYyBcCi0JJChzcmNkaXIpL3BfaGlkZS5jIFwKLQkkKHNyY2RpcikvcF9oaWRkZW4uYyBcCi0JJChzcmNkaXIpL3BfbW92ZS5jIFwKLQkkKHNyY2RpcikvcF9uZXcuYyBcCi0JJChzcmNkaXIpL3BfcmVwbGFjZS5jIFwKLQkkKHNyY2RpcikvcF9zaG93LmMgXAotCSQoc3JjZGlyKS9wX3RvcC5jIFwKLQkkKHNyY2RpcikvcF91cGRhdGUuYyBcCi0JJChzcmNkaXIpL3BfdXNlci5jIFwKLQkkKHNyY2RpcikvcF93aW4uYwotCi0jIFByb2R1Y2luZyBsbGliLWxwYW5lbCBpcyB0aW1lLWNvbnN1bWluZywgc28gdGhlcmUncyBubyBkaXJlY3QtZGVwZW5kZW5jeSBmb3IKLSMgaXQgaW4gdGhlIGxpbnRsaWIgcnVsZS4gIFdlJ2xsIG9ubHkgcmVtb3ZlIGluIHRoZSBjbGVhbmVzdCBzZXR1cC4KLWNsZWFuIDo6Ci0Jcm0gLWYgbGxpYi1scGFuZWwuKgotCi1yZWFsY2xlYW4gOjoKLQlybSAtZiBsbGliLWxwYW5lbAotCi1sbGliLWxwYW5lbCA6ICQoQ19TUkMpCi0JY3Byb3RvIC1hIC1sIC1ETkNVUlNFU19FTkFCTEVfU1REQk9PTF9IPTAgLURMSU5UICQoQ1BQRkxBR1MpICQoQ19TUkMpID4kQAotCi1saW50bGliIDoKLQlzaCAkKHNyY2RpcikvLi4vbWlzYy9tYWtlbGxpYiBwYW5lbCAkKENQUEZMQUdTKQotbGludCA6Ci0JJChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJChDX1NSQykgJChMSU5UX0xJQlMpCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTFzdC5hd2sgKHN1YnNldD10aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MpCi0jICBuYW1lOiAgICAgICAgICBwYW5lbAotIyAgdHJhY2VzOiAgICAgICAgREVCVUcKLSMgIE1PREVMOiAgICAgICAgIE5PUk1BTAotIyAgbW9kZWw6ICAgICAgICAgb2JqZWN0cwotIyAgcHJlZml4OiAgICAgICAgbGliCi0jICBzdWZmaXg6ICAgICAgICAuYQotIyAgc3Vic2V0OiAgICAgICAgdGljbGliK3Rlcm1saWIrZXh0X3RpbmZvK2Jhc2UrZXh0X2Z1bmNzCi0jICBTaGxpYlZlcjogICAgICBhdXRvCi0jICBTaGxpYlZlckluZml4OiBubwotIyAgVGVybWxpYlJvb3Q6ICAgbmN1cnNlcwotIyAgVGVybWxpYlN1ZmZpeDogLmEKLSMgIFJlTGluazogICAgICAgIAotIyAgRG9MaW5rczogICAgICAgbm8KLSMgIHJtU29Mb2NzOiAgICAgIG5vCi0jICBsZGNvbmZpZzogICAgICA6Ci0jICBvdmVyd3JpdGU6ICAgICBubwotIyAgZGVwZW5kOiAgICAgICAgLi4vaW5jbHVkZS9uY3Vyc2VzX2NmZy5oIC4vcGFuZWwucHJpdi5oCi0jICBob3N0OiAgICAgICAgICBhcm0tdW5rbm93bi1lYWJpCi0KLU5PUk1BTF9PQkpTID0gXAotCS4uL29iamVjdHMvcGFuZWwkbyBcCi0JLi4vb2JqZWN0cy9wX2Fib3ZlJG8gXAotCS4uL29iamVjdHMvcF9iZWxvdyRvIFwKLQkuLi9vYmplY3RzL3BfYm90dG9tJG8gXAotCS4uL29iamVjdHMvcF9kZWxldGUkbyBcCi0JLi4vb2JqZWN0cy9wX2hpZGUkbyBcCi0JLi4vb2JqZWN0cy9wX2hpZGRlbiRvIFwKLQkuLi9vYmplY3RzL3BfbW92ZSRvIFwKLQkuLi9vYmplY3RzL3BfbmV3JG8gXAotCS4uL29iamVjdHMvcF9yZXBsYWNlJG8gXAotCS4uL29iamVjdHMvcF9zaG93JG8gXAotCS4uL29iamVjdHMvcF90b3AkbyBcCi0JLi4vb2JqZWN0cy9wX3VwZGF0ZSRvIFwKLQkuLi9vYmplY3RzL3BfdXNlciRvIFwKLQkuLi9vYmplY3RzL3Bfd2luJG8KLQotJChOT1JNQUxfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9wYW5lbC5wcml2LmgKLQotLi4vbGliL2xpYnBhbmVsLmEgOiAkKE5PUk1BTF9PQkpTKQotCSQoQVIpICQoQVJfT1BUUykgJEAgJD8KLQkkKFJBTkxJQikgJEAKLQotaW5zdGFsbCBcCi1pbnN0YWxsLmxpYnMgXAotaW5zdGFsbC5wYW5lbCA6OiAkKERFU1RESVIpJChsaWJkaXIpIC4uL2xpYi9saWJwYW5lbC5hCi0JQGVjaG8gaW5zdGFsbGluZyAuLi9saWIvbGlicGFuZWwuYSBhcyAkKERFU1RESVIpJChsaWJkaXIpL2xpYnBhbmVsLmEKLQkkKElOU1RBTExfREFUQSkgLi4vbGliL2xpYnBhbmVsLmEgJChERVNURElSKSQobGliZGlyKS9saWJwYW5lbC5hCi0JJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGlicGFuZWwuYQotCi11bmluc3RhbGwgXAotdW5pbnN0YWxsLmxpYnMgXAotdW5pbnN0YWxsLnBhbmVsIDo6Ci0JQGVjaG8gdW5pbnN0YWxsaW5nICQoREVTVERJUikkKGxpYmRpcikvbGlicGFuZWwuYQotCS1Acm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJwYW5lbC5hCi0KLWNsZWFuIDo6Ci0JLXJtIC1mIC4uL2xpYi9saWJwYW5lbC5hCi0KLW1vc3RseWNsZWFuOjoKLQktcm0gLWYgJChOT1JNQUxfT0JKUykKLQotIyBnZW5lcmF0ZWQgYnkgbWstMm5kLmF3awotIyAgIG1vZGVsOiAgICAgIG9iamVjdHMKLSMgICBNT0RFTDogICAgICBOT1JNQUwKLSMgICBlY2hvOiAgICAgICB5ZXMKLSMgICBzdWJzZXQ6ICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgICBjcmVuYW1lczogICB5ZXMKLSMgICBjeHhyZW5hbWVzOiBubwotIyAgIHRyYWNlczogICAgIERFQlVHCi0jICAgc3JjZGlyOiAgICAgLgotCi0uLi9vYmplY3RzL3BhbmVsJG8gOgkkKHNyY2RpcikvcGFuZWwuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wYW5lbC5jIC1vIC4uL29iamVjdHMvcGFuZWwkbwotCi0uLi9vYmplY3RzL3BfYWJvdmUkbyA6CSQoc3JjZGlyKS9wX2Fib3ZlLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vcGFuZWwvcF9hYm92ZS5jIC1vIC4uL29iamVjdHMvcF9hYm92ZSRvCi0KLS4uL29iamVjdHMvcF9iZWxvdyRvIDoJJChzcmNkaXIpL3BfYmVsb3cuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wX2JlbG93LmMgLW8gLi4vb2JqZWN0cy9wX2JlbG93JG8KLQotLi4vb2JqZWN0cy9wX2JvdHRvbSRvIDoJJChzcmNkaXIpL3BfYm90dG9tLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vcGFuZWwvcF9ib3R0b20uYyAtbyAuLi9vYmplY3RzL3BfYm90dG9tJG8KLQotLi4vb2JqZWN0cy9wX2RlbGV0ZSRvIDoJJChzcmNkaXIpL3BfZGVsZXRlLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vcGFuZWwvcF9kZWxldGUuYyAtbyAuLi9vYmplY3RzL3BfZGVsZXRlJG8KLQotLi4vb2JqZWN0cy9wX2hpZGUkbyA6CSQoc3JjZGlyKS9wX2hpZGUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wX2hpZGUuYyAtbyAuLi9vYmplY3RzL3BfaGlkZSRvCi0KLS4uL29iamVjdHMvcF9oaWRkZW4kbyA6CSQoc3JjZGlyKS9wX2hpZGRlbi5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL3BhbmVsL3BfaGlkZGVuLmMgLW8gLi4vb2JqZWN0cy9wX2hpZGRlbiRvCi0KLS4uL29iamVjdHMvcF9tb3ZlJG8gOgkkKHNyY2RpcikvcF9tb3ZlLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vcGFuZWwvcF9tb3ZlLmMgLW8gLi4vb2JqZWN0cy9wX21vdmUkbwotCi0uLi9vYmplY3RzL3BfbmV3JG8gOgkkKHNyY2RpcikvcF9uZXcuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wX25ldy5jIC1vIC4uL29iamVjdHMvcF9uZXckbwotCi0uLi9vYmplY3RzL3BfcmVwbGFjZSRvIDoJJChzcmNkaXIpL3BfcmVwbGFjZS5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL3BhbmVsL3BfcmVwbGFjZS5jIC1vIC4uL29iamVjdHMvcF9yZXBsYWNlJG8KLQotLi4vb2JqZWN0cy9wX3Nob3ckbyA6CSQoc3JjZGlyKS9wX3Nob3cuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wX3Nob3cuYyAtbyAuLi9vYmplY3RzL3Bfc2hvdyRvCi0KLS4uL29iamVjdHMvcF90b3AkbyA6CSQoc3JjZGlyKS9wX3RvcC5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL3BhbmVsL3BfdG9wLmMgLW8gLi4vb2JqZWN0cy9wX3RvcCRvCi0KLS4uL29iamVjdHMvcF91cGRhdGUkbyA6CSQoc3JjZGlyKS9wX3VwZGF0ZS5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19OT1JNQUwpIC1jIC4uL3BhbmVsL3BfdXBkYXRlLmMgLW8gLi4vb2JqZWN0cy9wX3VwZGF0ZSRvCi0KLS4uL29iamVjdHMvcF91c2VyJG8gOgkkKHNyY2RpcikvcF91c2VyLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX05PUk1BTCkgLWMgLi4vcGFuZWwvcF91c2VyLmMgLW8gLi4vb2JqZWN0cy9wX3VzZXIkbwotCi0uLi9vYmplY3RzL3Bfd2luJG8gOgkkKHNyY2RpcikvcF93aW4uYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfTk9STUFMKSAtYyAuLi9wYW5lbC9wX3dpbi5jIC1vIC4uL29iamVjdHMvcF93aW4kbwotCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLTFzdC5hd2sgKHN1YnNldD10aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MpCi0jICBuYW1lOiAgICAgICAgICBwYW5lbAotIyAgdHJhY2VzOiAgICAgICAgREVCVUcKLSMgIE1PREVMOiAgICAgICAgIERFQlVHCi0jICBtb2RlbDogICAgICAgICBvYmpfZwotIyAgcHJlZml4OiAgICAgICAgbGliCi0jICBzdWZmaXg6ICAgICAgICBfZy5hCi0jICBzdWJzZXQ6ICAgICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgIFNobGliVmVyOiAgICAgIGF1dG8KLSMgIFNobGliVmVySW5maXg6IG5vCi0jICBUZXJtbGliUm9vdDogICBuY3Vyc2VzCi0jICBUZXJtbGliU3VmZml4OiAuYQotIyAgUmVMaW5rOiAgICAgICAgCi0jICBEb0xpbmtzOiAgICAgICBubwotIyAgcm1Tb0xvY3M6ICAgICAgbm8KLSMgIGxkY29uZmlnOiAgICAgIDoKLSMgIG92ZXJ3cml0ZTogICAgIG5vCi0jICBkZXBlbmQ6ICAgICAgICAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9wYW5lbC5wcml2LmgKLSMgIGhvc3Q6ICAgICAgICAgIGFybS11bmtub3duLWVhYmkKLQotREVCVUdfT0JKUyA9IFwKLQkuLi9vYmpfZy9wYW5lbCRvIFwKLQkuLi9vYmpfZy9wX2Fib3ZlJG8gXAotCS4uL29ial9nL3BfYmVsb3ckbyBcCi0JLi4vb2JqX2cvcF9ib3R0b20kbyBcCi0JLi4vb2JqX2cvcF9kZWxldGUkbyBcCi0JLi4vb2JqX2cvcF9oaWRlJG8gXAotCS4uL29ial9nL3BfaGlkZGVuJG8gXAotCS4uL29ial9nL3BfbW92ZSRvIFwKLQkuLi9vYmpfZy9wX25ldyRvIFwKLQkuLi9vYmpfZy9wX3JlcGxhY2UkbyBcCi0JLi4vb2JqX2cvcF9zaG93JG8gXAotCS4uL29ial9nL3BfdG9wJG8gXAotCS4uL29ial9nL3BfdXBkYXRlJG8gXAotCS4uL29ial9nL3BfdXNlciRvIFwKLQkuLi9vYmpfZy9wX3dpbiRvCi0KLSQoREVCVUdfT0JKUykgOiAuLi9pbmNsdWRlL25jdXJzZXNfY2ZnLmggLi9wYW5lbC5wcml2LmgKLQotLi4vbGliL2xpYnBhbmVsX2cuYSA6ICQoREVCVUdfT0JKUykKLQkkKEFSKSAkKEFSX09QVFMpICRAICQ/Ci0JJChSQU5MSUIpICRACi0KLWluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKLWluc3RhbGwucGFuZWwgOjogJChERVNURElSKSQobGliZGlyKSAuLi9saWIvbGlicGFuZWxfZy5hCi0JQGVjaG8gaW5zdGFsbGluZyAuLi9saWIvbGlicGFuZWxfZy5hIGFzICQoREVTVERJUikkKGxpYmRpcikvbGlicGFuZWxfZy5hCi0JJChJTlNUQUxMX0RBVEEpIC4uL2xpYi9saWJwYW5lbF9nLmEgJChERVNURElSKSQobGliZGlyKS9saWJwYW5lbF9nLmEKLQkkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS9saWJwYW5lbF9nLmEKLQotdW5pbnN0YWxsIFwKLXVuaW5zdGFsbC5saWJzIFwKLXVuaW5zdGFsbC5wYW5lbCA6OgotCUBlY2hvIHVuaW5zdGFsbGluZyAkKERFU1RESVIpJChsaWJkaXIpL2xpYnBhbmVsX2cuYQotCS1Acm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJwYW5lbF9nLmEKLQotY2xlYW4gOjoKLQktcm0gLWYgLi4vbGliL2xpYnBhbmVsX2cuYQotCi1tb3N0bHljbGVhbjo6Ci0JLXJtIC1mICQoREVCVUdfT0JKUykKLQotIyBnZW5lcmF0ZWQgYnkgbWstMm5kLmF3awotIyAgIG1vZGVsOiAgICAgIG9ial9nCi0jICAgTU9ERUw6ICAgICAgREVCVUcKLSMgICBlY2hvOiAgICAgICB5ZXMKLSMgICBzdWJzZXQ6ICAgICB0aWNsaWIrdGVybWxpYitleHRfdGluZm8rYmFzZStleHRfZnVuY3MKLSMgICBjcmVuYW1lczogICB5ZXMKLSMgICBjeHhyZW5hbWVzOiBubwotIyAgIHRyYWNlczogICAgIERFQlVHCi0jICAgc3JjZGlyOiAgICAgLgotCi0uLi9vYmpfZy9wYW5lbCRvIDoJJChzcmNkaXIpL3BhbmVsLmMgXAotCQkJJChQQU5FTF9QUklWX0gpCi0JJChMSUJUT09MX0NPTVBJTEUpICQoQ0MpICQoQ0ZMQUdTX0RFQlVHKSAtYyAuLi9wYW5lbC9wYW5lbC5jIC1vIC4uL29ial9nL3BhbmVsJG8KLQotLi4vb2JqX2cvcF9hYm92ZSRvIDoJJChzcmNkaXIpL3BfYWJvdmUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfYWJvdmUuYyAtbyAuLi9vYmpfZy9wX2Fib3ZlJG8KLQotLi4vb2JqX2cvcF9iZWxvdyRvIDoJJChzcmNkaXIpL3BfYmVsb3cuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfYmVsb3cuYyAtbyAuLi9vYmpfZy9wX2JlbG93JG8KLQotLi4vb2JqX2cvcF9ib3R0b20kbyA6CSQoc3JjZGlyKS9wX2JvdHRvbS5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vcGFuZWwvcF9ib3R0b20uYyAtbyAuLi9vYmpfZy9wX2JvdHRvbSRvCi0KLS4uL29ial9nL3BfZGVsZXRlJG8gOgkkKHNyY2RpcikvcF9kZWxldGUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfZGVsZXRlLmMgLW8gLi4vb2JqX2cvcF9kZWxldGUkbwotCi0uLi9vYmpfZy9wX2hpZGUkbyA6CSQoc3JjZGlyKS9wX2hpZGUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfaGlkZS5jIC1vIC4uL29ial9nL3BfaGlkZSRvCi0KLS4uL29ial9nL3BfaGlkZGVuJG8gOgkkKHNyY2RpcikvcF9oaWRkZW4uYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfaGlkZGVuLmMgLW8gLi4vb2JqX2cvcF9oaWRkZW4kbwotCi0uLi9vYmpfZy9wX21vdmUkbyA6CSQoc3JjZGlyKS9wX21vdmUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfbW92ZS5jIC1vIC4uL29ial9nL3BfbW92ZSRvCi0KLS4uL29ial9nL3BfbmV3JG8gOgkkKHNyY2RpcikvcF9uZXcuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfbmV3LmMgLW8gLi4vb2JqX2cvcF9uZXckbwotCi0uLi9vYmpfZy9wX3JlcGxhY2UkbyA6CSQoc3JjZGlyKS9wX3JlcGxhY2UuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfcmVwbGFjZS5jIC1vIC4uL29ial9nL3BfcmVwbGFjZSRvCi0KLS4uL29ial9nL3Bfc2hvdyRvIDoJJChzcmNkaXIpL3Bfc2hvdy5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vcGFuZWwvcF9zaG93LmMgLW8gLi4vb2JqX2cvcF9zaG93JG8KLQotLi4vb2JqX2cvcF90b3AkbyA6CSQoc3JjZGlyKS9wX3RvcC5jIFwKLQkJCSQoUEFORUxfUFJJVl9IKQotCSQoTElCVE9PTF9DT01QSUxFKSAkKENDKSAkKENGTEFHU19ERUJVRykgLWMgLi4vcGFuZWwvcF90b3AuYyAtbyAuLi9vYmpfZy9wX3RvcCRvCi0KLS4uL29ial9nL3BfdXBkYXRlJG8gOgkkKHNyY2RpcikvcF91cGRhdGUuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfdXBkYXRlLmMgLW8gLi4vb2JqX2cvcF91cGRhdGUkbwotCi0uLi9vYmpfZy9wX3VzZXIkbyA6CSQoc3JjZGlyKS9wX3VzZXIuYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3BfdXNlci5jIC1vIC4uL29ial9nL3BfdXNlciRvCi0KLS4uL29ial9nL3Bfd2luJG8gOgkkKHNyY2RpcikvcF93aW4uYyBcCi0JCQkkKFBBTkVMX1BSSVZfSCkKLQkkKExJQlRPT0xfQ09NUElMRSkgJChDQykgJChDRkxBR1NfREVCVUcpIC1jIC4uL3BhbmVsL3Bfd2luLmMgLW8gLi4vb2JqX2cvcF93aW4kbwotCi0KLSMgZ2VuZXJhdGVkIGJ5IG1rLWhkci5hd2sKLSMgIHN1YnNldDogICAgIHRpY2xpYit0ZXJtbGliK2V4dF90aW5mbytiYXNlK2V4dF9mdW5jcwotIyAgY29tcGF0OiAgICAgeWVzCi0KLSR7REVTVERJUn0ke2luY2x1ZGVkaXJ9IDoKLQlzaCAke3NyY2Rpcn0vLi4vbWtkaXJzLnNoICRACi0KLWluc3RhbGwgXAotaW5zdGFsbC5saWJzIFwKLWluc3RhbGwuaW5jbHVkZXMgOjogJHtBVVRPX1NSQ30gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gXAotCQkkKHNyY2RpcikvcGFuZWwuaAotCUAgKGNkICR7REVTVERJUn0ke2luY2x1ZGVkaXJ9ICYmIHJtIC1mIHBhbmVsLmgpIDsgLi4vaGVhZGVycy5zaCAke0lOU1RBTExfREFUQX0gJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJHtzcmNkaXJ9ICQoc3JjZGlyKS9wYW5lbC5oCi0KLXVuaW5zdGFsbCBcCi11bmluc3RhbGwubGlicyBcCi11bmluc3RhbGwuaW5jbHVkZXMgOjoKLQktQCAoY2QgJHtERVNURElSfSR7aW5jbHVkZWRpcn0gJiYgcm0gLWYgcGFuZWwuaCkKLWRlcGVuZCA6ICR7QVVUT19TUkN9Ci0JbWFrZWRlcGVuZCAtLSAke0NQUEZMQUdTfSAtLSAke0NfU1JDfQotCi0jIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCmRpZmYgLS1naXQgYS9wYW5lbC9NYWtlZmlsZS5pbiBiL3BhbmVsL01ha2VmaWxlLmluCmluZGV4IDg5ZGJlZWEuLjVlZDRiMDIgMTAwNjQ0Ci0tLSBhL3BhbmVsL01ha2VmaWxlLmluCisrKyBiL3BhbmVsL01ha2VmaWxlLmluCkBAIC0xLDYgKzEsNiBAQAotIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS41MiAyMDA3LzA0LzI4IDE0OjU2OjExIHRvbSBFeHAgJAorIyAkSWQ6IE1ha2VmaWxlLmluLHYgMS42OSAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKICMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIwpAQCAtNDIsNyArNDIsOCBAQAogIyB0dXJuIG9mZiBfYWxsXyBzdWZmaXggcnVsZXM7IHdlJ2xsIGdlbmVyYXRlIG91ciBvd24KIC5TVUZGSVhFUzoKIAotU0hFTEwJCT0gL2Jpbi9zaAorU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKIFRISVMJCT0gTWFrZWZpbGUKIAogeAkJPSBARVhFRVhUQApAQCAtNTAsMjAgKzUxLDI5IEBACiAKIE1PREVMCQk9IEBERlRfTFdSX01PREVMQAogREVTVERJUgkJPSBAREVTVERJUkAKK3RvcF9zcmNkaXIJPSBAdG9wX3NyY2RpckAKIHNyY2RpcgkJPSBAc3JjZGlyQAogcHJlZml4CQk9IEBwcmVmaXhACiBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKIGJpbmRpcgkJPSBAYmluZGlyQAogbGliZGlyCQk9IEBsaWJkaXJACiBpbmNsdWRlZGlyCT0gQGluY2x1ZGVkaXJACitkYXRhcm9vdGRpcgk9IEBkYXRhcm9vdGRpckAKIGRhdGFkaXIJCT0gQGRhdGFkaXJACitpbmNsdWRlc3ViZGlyCT0gQGluY2x1ZGVzdWJkaXJACisKK0lOQ0xVREVESVIJPSAkKERFU1RESVIpJChpbmNsdWRlZGlyKSQoaW5jbHVkZXN1YmRpcikKKworUEFDS0FHRQkJPSBAUEFDS0FHRUAKIAogTElCVE9PTAkJPSBATElCVE9PTEAKK0xJQlRPT0xfT1BUUwk9IEBMSUJUT09MX09QVFNAIEBFWFBPUlRfU1lNU0AKIExJQlRPT0xfQ0xFQU4JPSBATElCX0NMRUFOQAogTElCVE9PTF9DT01QSUxFCT0gQExJQl9DT01QSUxFQAogTElCVE9PTF9MSU5LCT0gQExJQl9MSU5LQAogTElCVE9PTF9JTlNUQUxMCT0gQExJQl9JTlNUQUxMQAogTElCVE9PTF9VTklOU1RBTEwgPSBATElCX1VOSU5TVEFMTEAKK0xUX1VOREVGCT0gQExUX1VOREVGQAogCiBJTlNUQUxMCQk9IEBJTlNUQUxMQAogSU5TVEFMTF9MSUIJPSBASU5TVEFMTEAgQElOU1RBTExfTElCQApAQCAtNzEsMTYgKzgxLDE5IEBACiBJTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQAogCiBBUgkJPSBAQVJACi1BUl9PUFRTCQk9IEBBUl9PUFRTQAorQVJGTEFHUwkJPSBAQVJGTEFHU0AKIEFXSwkJPSBAQVdLQAogTEQJCT0gQExEQAogTE5fUwkJPSBATE5fU0AKIAorQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAorCiBDQwkJPSBAQ0NACiBDUFAJCT0gQENQUEAKIENGTEFHUwkJPSBAQ0ZMQUdTQAogCi1DUFBGTEFHUwk9IC1JQHRvcF9zcmNkaXJAL25jdXJzZXMgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKK0NQUEZMQUdTCT0gLUkke3RvcF9zcmNkaXJ9L25jdXJzZXMgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKIAogQ0NGTEFHUwkJPSAkKENQUEZMQUdTKSAkKENGTEFHUykKIApAQCAtOTYsOCArMTA5LDExIEBACiBMREZMQUdTCQk9IEBMREZMQUdTQCBATERfTU9ERUxAIEBMSUJTQAogCiBTSExJQl9ESVJTCT0gLUwuLi9saWIKLVNITElCX0xJU1QJPSAkKFNITElCX0RJUlMpIC1sbmN1cnNlc0BMSUJfU1VGRklYQCBAU0hMSUJfTElTVEAKK1NITElCX0xJU1QJPSAkKFNITElCX0RJUlMpIC1sbmN1cnNlc0BVU0VfTElCX1NVRkZJWEAgQFNITElCX0xJU1RACiAKK1JQQVRIX0xJU1QJPSBAUlBBVEhfTElTVEAKK1JFU1VMVElOR19TWU1TCT0gQFJFU1VMVElOR19TWU1TQAorVkVSU0lPTkVEX1NZTVMJPSBAVkVSU0lPTkVEX1NZTVNACiBNS19TSEFSRURfTElCCT0gQE1LX1NIQVJFRF9MSUJACiAKIE5DVVJTRVNfTUFKT1IJPSBATkNVUlNFU19NQUpPUkAKQEAgLTEwNyw3ICsxMjMsNyBAQAogCiBSQU5MSUIJCT0gQExJQl9QUkVQQAogCi1MSUJSQVJJRVMJPSBATElCU19UT19NQUtFQAorTElCUkFSSUVTCT0gQExpYnNfVG9fTWFrZUAKIAogTElOVAkJPSBATElOVEAKIExJTlRfT1BUUwk9IEBMSU5UX09QVFNACkBAIC0xMjUsNyArMTQxLDcgQEAKIAogJChERVNURElSKSQoYmluZGlyKSBcCiAkKERFU1RESVIpJChsaWJkaXIpIDoKLQlzaCAkKHNyY2RpcikvLi4vbWtkaXJzLnNoICRACisJbWtkaXIgLXAgJEAKIAogIyBtYWtlIGEgY29weSB0byBzaW1wbGlmeSBpbmNsdWRlLXBhdGhzIHdoaWxlIHN0aWxsIGtlZXBpbmcgcGFuZWwncyBpbmNsdWRlCiAjIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuCkBAIC0xMzMsMjEgKzE0OSwyMiBAQAogCS1ybSAtZiAkQAogCWNwICQoc3JjZGlyKS9wYW5lbC5oICRACiAKLVBBTkVMX1BSSVZfSCA9IFwKK0hFQURFUl9ERVBTID0gXAogCSQoc3JjZGlyKS9wYW5lbC5wcml2LmggXAogCSQoc3JjZGlyKS9wYW5lbC5oCiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCisJJChDVEFHUykgKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgogCS1ybSAtZiAkKEFVVE9fU1JDKQorCS1ybSAtcmYgLmxpYnMgKi5kU1lNCiAKIGRpc3RjbGVhbiA6OiBjbGVhbgogCS1ybSAtZiBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvcGFuZWwvbGxpYi1scGFuZWwgYi9wYW5lbC9sbGliLWxwYW5lbAppbmRleCBkZTQ5YzIzLi4wMmUxMDU0IDEwMDY0NAotLS0gYS9wYW5lbC9sbGliLWxwYW5lbAorKysgYi9wYW5lbC9sbGliLWxwYW5lbApAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI3LDEzICsyNywxMyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAxOTk3LDIwMDIsMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAxOTk2LW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogTElOVExJQlJBUlkgKi8KIAogLyogLi9wYW5lbC5jICovCiAKLSNpbmNsdWRlICJwYW5lbC5wcml2LmgiCisjaW5jbHVkZSA8cGFuZWwucHJpdi5oPgogCiAjdW5kZWYgX25jX3JldHJhY2VfcGFuZWwKIFBBTkVMCSpfbmNfcmV0cmFjZV9wYW5lbCgKQEAgLTc3LDYgKzc3LDExIEBACiAKIC8qIC4vcF9hYm92ZS5jICovCiAKKyN1bmRlZiBncm91bmRfcGFuZWwKK1BBTkVMCSpncm91bmRfcGFuZWwoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKwogI3VuZGVmIHBhbmVsX2Fib3ZlCiBQQU5FTAkqcGFuZWxfYWJvdmUoCiAJCWNvbnN0IFBBTkVMICpwYW4pCkBAIC04NCw2ICs4OSwxMSBAQAogCiAvKiAuL3BfYmVsb3cuYyAqLwogCisjdW5kZWYgY2VpbGluZ19wYW5lbAorUEFORUwJKmNlaWxpbmdfcGFuZWwoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKwogI3VuZGVmIHBhbmVsX2JlbG93CiBQQU5FTAkqcGFuZWxfYmVsb3coCiAJCWNvbnN0IFBBTkVMICpwYW4pCkBAIC0xNTcsNiArMTY3LDExIEBACiAKIC8qIC4vcF91cGRhdGUuYyAqLwogCisjdW5kZWYgdXBkYXRlX3BhbmVsc19zcAordm9pZAl1cGRhdGVfcGFuZWxzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCiAjdW5kZWYgdXBkYXRlX3BhbmVscwogdm9pZAl1cGRhdGVfcGFuZWxzKHZvaWQpCiAJCXsgLyogdm9pZCAqLyB9CkBAIC0xNjYsMTMgKzE4MSwxMyBAQAogI3VuZGVmIHNldF9wYW5lbF91c2VycHRyCiBpbnQJc2V0X3BhbmVsX3VzZXJwdHIoCiAJCVBBTkVMCSpwYW4sIAotCQl2b2lkCSp1cHRyKQorCQljb25zdCB2b2lkICp1cHRyKQogCQl7IHJldHVybigqKGludCAqKTApOyB9CiAKICN1bmRlZiBwYW5lbF91c2VycHRyCi12b2lkCSpwYW5lbF91c2VycHRyKAorY29uc3Qgdm9pZCAqcGFuZWxfdXNlcnB0cigKIAkJY29uc3QgUEFORUwgKnBhbikKLQkJeyByZXR1cm4oKih2b2lkICoqKTApOyB9CisJCXsgcmV0dXJuKCooY29uc3Qgdm9pZCAqKikwKTsgfQogCiAvKiAuL3Bfd2luLmMgKi8KIApkaWZmIC0tZ2l0IGEvcGFuZWwvbGxpYi1scGFuZWx0IGIvcGFuZWwvbGxpYi1scGFuZWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTQxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9wYW5lbC9sbGliLWxwYW5lbHQKQEAgLTAsMCArMSwxOTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDIwMTAtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMSU5UTElCUkFSWSAqLworCisvKiAuL3BhbmVsLmMgKi8KKworI2luY2x1ZGUgPHBhbmVsLnByaXYuaD4KKworI3VuZGVmIF9uY19yZXRyYWNlX3BhbmVsCitQQU5FTAkqX25jX3JldHJhY2VfcGFuZWwoCisJCVBBTkVMCSpwYW4pCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworI3VuZGVmIF9uY19teV92aXNidWYKK2NvbnN0IGNoYXIgKl9uY19teV92aXNidWYoCisJCWNvbnN0IHZvaWQgKnB0cikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZFBhbmVsCit2b2lkCV9uY19kUGFuZWwoCisJCWNvbnN0IGNoYXIgKnRleHQsIAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2RTdGFjawordm9pZAlfbmNfZFN0YWNrKAorCQljb25zdCBjaGFyICpmbXQsIAorCQlpbnQJbnVtLCAKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Xbm91dHJlZnJlc2gKK3ZvaWQJX25jX1dub3V0cmVmcmVzaCgKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Ub3VjaHBhbgordm9pZAlfbmNfVG91Y2hwYW4oCisJCWNvbnN0IFBBTkVMICpwYW4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfVG91Y2hsaW5lCit2b2lkCV9uY19Ub3VjaGxpbmUoCisJCWNvbnN0IFBBTkVMICpwYW4sIAorCQlpbnQJc3RhcnQsIAorCQlpbnQJY291bnQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vcF9hYm92ZS5jICovCisKKyN1bmRlZiBncm91bmRfcGFuZWwKK1BBTkVMCSpncm91bmRfcGFuZWwoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworI3VuZGVmIHBhbmVsX2Fib3ZlCitQQU5FTAkqcGFuZWxfYWJvdmUoCisJCWNvbnN0IFBBTkVMICpwYW4pCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworLyogLi9wX2JlbG93LmMgKi8KKworI3VuZGVmIGNlaWxpbmdfcGFuZWwKK1BBTkVMCSpjZWlsaW5nX3BhbmVsKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKKyN1bmRlZiBwYW5lbF9iZWxvdworUEFORUwJKnBhbmVsX2JlbG93KAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKKy8qIC4vcF9ib3R0b20uYyAqLworCisjdW5kZWYgYm90dG9tX3BhbmVsCitpbnQJYm90dG9tX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9kZWxldGUuYyAqLworCisjdW5kZWYgZGVsX3BhbmVsCitpbnQJZGVsX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9oaWRlLmMgKi8KKworI3VuZGVmIGhpZGVfcGFuZWwKK2ludAloaWRlX3BhbmVsKAorCQkgUEFORUwJKnBhbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3BfaGlkZGVuLmMgKi8KKworI3VuZGVmIHBhbmVsX2hpZGRlbgoraW50CXBhbmVsX2hpZGRlbigKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3BfbW92ZS5jICovCisKKyN1bmRlZiBtb3ZlX3BhbmVsCitpbnQJbW92ZV9wYW5lbCgKKwkJUEFORUwJKnBhbiwgCisJCWludAlzdGFydHksIAorCQlpbnQJc3RhcnR4KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9uZXcuYyAqLworCisjdW5kZWYgbmV3X3BhbmVsCitQQU5FTAkqbmV3X3BhbmVsKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihQQU5FTCAqKikwKTsgfQorCisvKiAuL3BfcmVwbGFjZS5jICovCisKKyN1bmRlZiByZXBsYWNlX3BhbmVsCitpbnQJcmVwbGFjZV9wYW5lbCgKKwkJUEFORUwJKnBhbiwgCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9zaG93LmMgKi8KKworI3VuZGVmIHNob3dfcGFuZWwKK2ludAlzaG93X3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF90b3AuYyAqLworCisjdW5kZWYgdG9wX3BhbmVsCitpbnQJdG9wX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF91cGRhdGUuYyAqLworCisjdW5kZWYgdXBkYXRlX3BhbmVsc19zcAordm9pZAl1cGRhdGVfcGFuZWxzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdXBkYXRlX3BhbmVscwordm9pZAl1cGRhdGVfcGFuZWxzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vcF91c2VyLmMgKi8KKworI3VuZGVmIHNldF9wYW5lbF91c2VycHRyCitpbnQJc2V0X3BhbmVsX3VzZXJwdHIoCisJCVBBTkVMCSpwYW4sIAorCQljb25zdCB2b2lkICp1cHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwYW5lbF91c2VycHRyCitjb25zdCB2b2lkICpwYW5lbF91c2VycHRyKAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKGNvbnN0IHZvaWQgKiopMCk7IH0KKworLyogLi9wX3dpbi5jICovCisKKyN1bmRlZiBwYW5lbF93aW5kb3cKK1dJTkRPVwkqcGFuZWxfd2luZG93KAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQpkaWZmIC0tZ2l0IGEvcGFuZWwvbGxpYi1scGFuZWx0dyBiL3BhbmVsL2xsaWItbHBhbmVsdHcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhNDE3NQotLS0gL2Rldi9udWxsCisrKyBiL3BhbmVsL2xsaWItbHBhbmVsdHcKQEAgLTAsMCArMSwxOTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgIDIwMTAtb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMSU5UTElCUkFSWSAqLworCisvKiAuL3BhbmVsLmMgKi8KKworI2luY2x1ZGUgPHBhbmVsLnByaXYuaD4KKworI3VuZGVmIF9uY19yZXRyYWNlX3BhbmVsCitQQU5FTAkqX25jX3JldHJhY2VfcGFuZWwoCisJCVBBTkVMCSpwYW4pCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworI3VuZGVmIF9uY19teV92aXNidWYKK2NvbnN0IGNoYXIgKl9uY19teV92aXNidWYoCisJCWNvbnN0IHZvaWQgKnB0cikKKwkJeyByZXR1cm4oKihjb25zdCBjaGFyICoqKTApOyB9CisKKyN1bmRlZiBfbmNfZFBhbmVsCit2b2lkCV9uY19kUGFuZWwoCisJCWNvbnN0IGNoYXIgKnRleHQsIAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgX25jX2RTdGFjawordm9pZAlfbmNfZFN0YWNrKAorCQljb25zdCBjaGFyICpmbXQsIAorCQlpbnQJbnVtLCAKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Xbm91dHJlZnJlc2gKK3ZvaWQJX25jX1dub3V0cmVmcmVzaCgKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyAvKiB2b2lkICovIH0KKworI3VuZGVmIF9uY19Ub3VjaHBhbgordm9pZAlfbmNfVG91Y2hwYW4oCisJCWNvbnN0IFBBTkVMICpwYW4pCisJCXsgLyogdm9pZCAqLyB9CisKKyN1bmRlZiBfbmNfVG91Y2hsaW5lCit2b2lkCV9uY19Ub3VjaGxpbmUoCisJCWNvbnN0IFBBTkVMICpwYW4sIAorCQlpbnQJc3RhcnQsIAorCQlpbnQJY291bnQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vcF9hYm92ZS5jICovCisKKyN1bmRlZiBncm91bmRfcGFuZWwKK1BBTkVMCSpncm91bmRfcGFuZWwoCisJCVNDUkVFTgkqc3ApCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworI3VuZGVmIHBhbmVsX2Fib3ZlCitQQU5FTAkqcGFuZWxfYWJvdmUoCisJCWNvbnN0IFBBTkVMICpwYW4pCisJCXsgcmV0dXJuKCooUEFORUwgKiopMCk7IH0KKworLyogLi9wX2JlbG93LmMgKi8KKworI3VuZGVmIGNlaWxpbmdfcGFuZWwKK1BBTkVMCSpjZWlsaW5nX3BhbmVsKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKKyN1bmRlZiBwYW5lbF9iZWxvdworUEFORUwJKnBhbmVsX2JlbG93KAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKKy8qIC4vcF9ib3R0b20uYyAqLworCisjdW5kZWYgYm90dG9tX3BhbmVsCitpbnQJYm90dG9tX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9kZWxldGUuYyAqLworCisjdW5kZWYgZGVsX3BhbmVsCitpbnQJZGVsX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9oaWRlLmMgKi8KKworI3VuZGVmIGhpZGVfcGFuZWwKK2ludAloaWRlX3BhbmVsKAorCQkgUEFORUwJKnBhbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3BfaGlkZGVuLmMgKi8KKworI3VuZGVmIHBhbmVsX2hpZGRlbgoraW50CXBhbmVsX2hpZGRlbigKKwkJY29uc3QgUEFORUwgKnBhbikKKwkJeyByZXR1cm4oKihpbnQgKikwKTsgfQorCisvKiAuL3BfbW92ZS5jICovCisKKyN1bmRlZiBtb3ZlX3BhbmVsCitpbnQJbW92ZV9wYW5lbCgKKwkJUEFORUwJKnBhbiwgCisJCWludAlzdGFydHksIAorCQlpbnQJc3RhcnR4KQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9uZXcuYyAqLworCisjdW5kZWYgbmV3X3BhbmVsCitQQU5FTAkqbmV3X3BhbmVsKAorCQlXSU5ET1cJKndpbikKKwkJeyByZXR1cm4oKihQQU5FTCAqKikwKTsgfQorCisvKiAuL3BfcmVwbGFjZS5jICovCisKKyN1bmRlZiByZXBsYWNlX3BhbmVsCitpbnQJcmVwbGFjZV9wYW5lbCgKKwkJUEFORUwJKnBhbiwgCisJCVdJTkRPVwkqd2luKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF9zaG93LmMgKi8KKworI3VuZGVmIHNob3dfcGFuZWwKK2ludAlzaG93X3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF90b3AuYyAqLworCisjdW5kZWYgdG9wX3BhbmVsCitpbnQJdG9wX3BhbmVsKAorCQlQQU5FTAkqcGFuKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKy8qIC4vcF91cGRhdGUuYyAqLworCisjdW5kZWYgdXBkYXRlX3BhbmVsc19zcAordm9pZAl1cGRhdGVfcGFuZWxzX3NwKAorCQlTQ1JFRU4JKnNwKQorCQl7IC8qIHZvaWQgKi8gfQorCisjdW5kZWYgdXBkYXRlX3BhbmVscwordm9pZAl1cGRhdGVfcGFuZWxzKHZvaWQpCisJCXsgLyogdm9pZCAqLyB9CisKKy8qIC4vcF91c2VyLmMgKi8KKworI3VuZGVmIHNldF9wYW5lbF91c2VycHRyCitpbnQJc2V0X3BhbmVsX3VzZXJwdHIoCisJCVBBTkVMCSpwYW4sIAorCQljb25zdCB2b2lkICp1cHRyKQorCQl7IHJldHVybigqKGludCAqKTApOyB9CisKKyN1bmRlZiBwYW5lbF91c2VycHRyCitjb25zdCB2b2lkICpwYW5lbF91c2VycHRyKAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKGNvbnN0IHZvaWQgKiopMCk7IH0KKworLyogLi9wX3dpbi5jICovCisKKyN1bmRlZiBwYW5lbF93aW5kb3cKK1dJTkRPVwkqcGFuZWxfd2luZG93KAorCQljb25zdCBQQU5FTCAqcGFuKQorCQl7IHJldHVybigqKFdJTkRPVyAqKikwKTsgfQpkaWZmIC0tZ2l0IGEvcGFuZWwvbGxpYi1scGFuZWx3IGIvcGFuZWwvbGxpYi1scGFuZWx3CmluZGV4IDQ4YmQxZTAuLjRkNjY4OGUgMTAwNjQ0Ci0tLSBhL3BhbmVsL2xsaWItbHBhbmVsdworKysgYi9wYW5lbC9sbGliLWxwYW5lbHcKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yNywxMyArMjcsMTMgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgMjAwMiwyMDA1ICAgICAgICAgICAgICAgICAgICoKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgMjAwMi1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIExJTlRMSUJSQVJZICovCiAKIC8qIC4vcGFuZWwuYyAqLwogCi0jaW5jbHVkZSAicGFuZWwucHJpdi5oIgorI2luY2x1ZGUgPHBhbmVsLnByaXYuaD4KIAogI3VuZGVmIF9uY19yZXRyYWNlX3BhbmVsCiBQQU5FTAkqX25jX3JldHJhY2VfcGFuZWwoCkBAIC03Nyw2ICs3NywxMSBAQAogCiAvKiAuL3BfYWJvdmUuYyAqLwogCisjdW5kZWYgZ3JvdW5kX3BhbmVsCitQQU5FTAkqZ3JvdW5kX3BhbmVsKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKICN1bmRlZiBwYW5lbF9hYm92ZQogUEFORUwJKnBhbmVsX2Fib3ZlKAogCQljb25zdCBQQU5FTCAqcGFuKQpAQCAtODQsNiArODksMTEgQEAKIAogLyogLi9wX2JlbG93LmMgKi8KIAorI3VuZGVmIGNlaWxpbmdfcGFuZWwKK1BBTkVMCSpjZWlsaW5nX3BhbmVsKAorCQlTQ1JFRU4JKnNwKQorCQl7IHJldHVybigqKFBBTkVMICoqKTApOyB9CisKICN1bmRlZiBwYW5lbF9iZWxvdwogUEFORUwJKnBhbmVsX2JlbG93KAogCQljb25zdCBQQU5FTCAqcGFuKQpAQCAtMTU3LDYgKzE2NywxMSBAQAogCiAvKiAuL3BfdXBkYXRlLmMgKi8KIAorI3VuZGVmIHVwZGF0ZV9wYW5lbHNfc3AKK3ZvaWQJdXBkYXRlX3BhbmVsc19zcCgKKwkJU0NSRUVOCSpzcCkKKwkJeyAvKiB2b2lkICovIH0KKwogI3VuZGVmIHVwZGF0ZV9wYW5lbHMKIHZvaWQJdXBkYXRlX3BhbmVscyh2b2lkKQogCQl7IC8qIHZvaWQgKi8gfQpAQCAtMTY2LDEzICsxODEsMTMgQEAKICN1bmRlZiBzZXRfcGFuZWxfdXNlcnB0cgogaW50CXNldF9wYW5lbF91c2VycHRyKAogCQlQQU5FTAkqcGFuLCAKLQkJdm9pZAkqdXB0cikKKwkJY29uc3Qgdm9pZCAqdXB0cikKIAkJeyByZXR1cm4oKihpbnQgKikwKTsgfQogCiAjdW5kZWYgcGFuZWxfdXNlcnB0cgotdm9pZAkqcGFuZWxfdXNlcnB0cigKK2NvbnN0IHZvaWQgKnBhbmVsX3VzZXJwdHIoCiAJCWNvbnN0IFBBTkVMICpwYW4pCi0JCXsgcmV0dXJuKCoodm9pZCAqKikwKTsgfQorCQl7IHJldHVybigqKGNvbnN0IHZvaWQgKiopMCk7IH0KIAogLyogLi9wX3dpbi5jICovCiAKZGlmZiAtLWdpdCBhL3BhbmVsL21vZHVsZXMgYi9wYW5lbC9tb2R1bGVzCmluZGV4IGQwZjdhNzkuLmNkM2Y1NDUgMTAwNjQ0Ci0tLSBhL3BhbmVsL21vZHVsZXMKKysrIGIvcGFuZWwvbW9kdWxlcwpAQCAtMSw2ICsxLDYgQEAKLSMgJElkOiBtb2R1bGVzLHYgMS45IDIwMDYvMTIvMjQgMDA6NTM6MTcgdG9tIEV4cCAkCisjICRJZDogbW9kdWxlcyx2IDEuMTAgMjAxMC8wMS8yMyAxNjozMToxNiB0b20gRXhwICQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTMyLDIwICszMiwyMCBAQAogCiBAIGJhc2UKICMgTGlicmFyeSBvYmplY3RzCi1wYW5lbAkJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX2Fib3ZlCQlsaWIJCSQoc3JjZGlyKQkkKFBBTkVMX1BSSVZfSCkKLXBfYmVsb3cJCWxpYgkJJChzcmNkaXIpCSQoUEFORUxfUFJJVl9IKQotcF9ib3R0b20JbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX2RlbGV0ZQlsaWIJCSQoc3JjZGlyKQkkKFBBTkVMX1BSSVZfSCkKLXBfaGlkZQkJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX2hpZGRlbglsaWIJCSQoc3JjZGlyKQkkKFBBTkVMX1BSSVZfSCkKLXBfbW92ZQkJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX25ldwkJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX3JlcGxhY2UJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX3Nob3cJCWxpYgkJJChzcmNkaXIpCSQoUEFORUxfUFJJVl9IKQotcF90b3AJCWxpYgkJJChzcmNkaXIpCSQoUEFORUxfUFJJVl9IKQotcF91cGRhdGUJbGliCQkkKHNyY2RpcikJJChQQU5FTF9QUklWX0gpCi1wX3VzZXIJCWxpYgkJJChzcmNkaXIpCSQoUEFORUxfUFJJVl9IKQotcF93aW4JCWxpYgkJJChzcmNkaXIpCSQoUEFORUxfUFJJVl9IKQorcGFuZWwJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX2Fib3ZlCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorcF9iZWxvdwkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3BfYm90dG9tCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX2RlbGV0ZQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorcF9oaWRlCQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorcF9oaWRkZW4JbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3BfbW92ZQkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3BfbmV3CQlsaWIJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorcF9yZXBsYWNlCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX3Nob3cJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX3RvcAkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3BfdXBkYXRlCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX3VzZXIJCWxpYgkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitwX3dpbgkJbGliCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKIAogIyB2aWxlOm1ha2Vtb2RlCmRpZmYgLS1naXQgYS9wYW5lbC9wX2Fib3ZlLmMgYi9wYW5lbC9wX2Fib3ZlLmMKaW5kZXggMzI0OTVmNi4uNzYyMDlmZSAxMDA2NDQKLS0tIGEvcGFuZWwvcF9hYm92ZS5jCisrKyBiL3BhbmVsL3BfYWJvdmUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTI5LDI0ICsyOSw1NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTk1ICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDE5OTctMTk5OSwyMDA4ICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBwX2Fib3ZlLmMKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfYWJvdmUuYyx2IDEuNiAyMDA1LzAyLzE5IDE2OjQ0OjU3IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogcF9hYm92ZS5jLHYgMS45IDIwMTIvMDMvMTAgMjM6NDM6NDEgdG9tIEV4cCAkIikKKworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKK05DVVJTRVNfRVhQT1JUKFBBTkVMICopCitncm91bmRfcGFuZWwoU0NSRUVOICogc3ApCit7CisgIFQoKFRfQ0FMTEVEKCJncm91bmRfcGFuZWwoJXApIiksICh2b2lkICopc3ApKTsKKyAgaWYgKHNwKQorICAgIHsKKyAgICAgIHN0cnVjdCBwYW5lbGhvb2sgKnBoID0gTkNVUlNFU19TUF9OQU1FKF9uY19wYW5lbGhvb2spIChzcCk7CisKKyAgICAgIGlmIChfbmNfYm90dG9tX3BhbmVsKQkvKiB0aGlzIGlzIHRoZSBwc2V1ZG8gcGFuZWwgKi8KKwlyZXR1cm5QYW5lbChfbmNfYm90dG9tX3BhbmVsLT5hYm92ZSk7CisgICAgICBlbHNlCisJcmV0dXJuUGFuZWwoMCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgaWYgKDAgPT0gQ1VSUkVOVF9TQ1JFRU4pCisJcmV0dXJuUGFuZWwoMCk7CisgICAgICBlbHNlCisJcmV0dXJuUGFuZWwoZ3JvdW5kX3BhbmVsKENVUlJFTlRfU0NSRUVOKSk7CisgICAgfQorfQorI2VuZGlmCiAKIE5DVVJTRVNfRVhQT1JUKFBBTkVMICopCiBwYW5lbF9hYm92ZShjb25zdCBQQU5FTCAqIHBhbikKIHsKLSAgVCgoVF9DQUxMRUQoInBhbmVsX2Fib3ZlKCVwKSIpLCBwYW4pKTsKLSAgaWYgKCFwYW4pCisgIFBBTkVMICpyZXN1bHQ7CisKKyAgVCgoVF9DQUxMRUQoInBhbmVsX2Fib3ZlKCVwKSIpLCAoY29uc3Qgdm9pZCAqKXBhbikpOworICBpZiAocGFuKQorICAgIHJlc3VsdCA9IHBhbi0+YWJvdmU7CisgIGVsc2UKICAgICB7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgICAgcmVzdWx0ID0gZ3JvdW5kX3BhbmVsKENVUlJFTlRfU0NSRUVOKTsKKyNlbHNlCiAgICAgICAvKiBpZiB0b3AgYW5kIGJvdHRvbSBhcmUgZXF1YWwsIHdlIGhhdmUgbm8gb3Igb25seSB0aGUgcHNldWRvIHBhbmVsOwogICAgICAgICAgaWYgbm90LCB3ZSByZXR1cm4gdGhlIHBhbmVsIGFib3ZlIHRoZSBwc2V1ZG8gcGFuZWwgKi8KLSAgICAgIHJldHVyblBhbmVsKEVNUFRZX1NUQUNLKCk/IChQQU5FTCAqKSAwIDogX25jX2JvdHRvbV9wYW5lbC0+YWJvdmUpOworICAgICAgcmVzdWx0ID0gRU1QVFlfU1RBQ0soKT8gKFBBTkVMICopIDAgOiBfbmNfYm90dG9tX3BhbmVsLT5hYm92ZTsKKyNlbmRpZgogICAgIH0KLSAgZWxzZQotICAgIHJldHVyblBhbmVsKHBhbi0+YWJvdmUpOworICByZXR1cm5QYW5lbChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF9iZWxvdy5jIGIvcGFuZWwvcF9iZWxvdy5jCmluZGV4IGM0YjI0MTAuLjkxM2VmYTkgMTAwNjQ0Ci0tLSBhL3BhbmVsL3BfYmVsb3cuYworKysgYi9wYW5lbC9wX2JlbG93LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSwyNiArMjksNTcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5NSAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAxOTk3LTE5OTksMjAwOCAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogcF9iZWxvdy5jCiAgKi8KICNpbmNsdWRlICJwYW5lbC5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBwX2JlbG93LmMsdiAxLjYgMjAwNS8wMi8xOSAxNjo0NToxMCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHBfYmVsb3cuYyx2IDEuOSAyMDEyLzAzLzEwIDIzOjQzOjQxIHRvbSBFeHAgJCIpCiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCiBOQ1VSU0VTX0VYUE9SVChQQU5FTCAqKQotcGFuZWxfYmVsb3coY29uc3QgUEFORUwgKiBwYW4pCitjZWlsaW5nX3BhbmVsKFNDUkVFTiAqIHNwKQogewotICBUKChUX0NBTExFRCgicGFuZWxfYmVsb3coJXApIiksIHBhbikpOwotICBpZiAoIXBhbikKKyAgVCgoVF9DQUxMRUQoImNlaWxpbmdfcGFuZWwoJXApIiksICh2b2lkICopc3ApKTsKKyAgaWYgKHNwKQogICAgIHsKKyAgICAgIHN0cnVjdCBwYW5lbGhvb2sgKnBoID0gTkNVUlNFU19TUF9OQU1FKF9uY19wYW5lbGhvb2spIChzcCk7CisKICAgICAgIC8qIGlmIHRvcCBhbmQgYm90dG9tIGFyZSBlcXVhbCwgd2UgaGF2ZSBubyBvciBvbmx5IHRoZSBwc2V1ZG8gcGFuZWwgKi8KICAgICAgIHJldHVyblBhbmVsKEVNUFRZX1NUQUNLKCk/IChQQU5FTCAqKSAwIDogX25jX3RvcF9wYW5lbCk7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgLyogd2UgbXVzdCBub3QgcmV0dXJuIHRoZSBwc2V1ZG8gcGFuZWwgKi8KLSAgICAgIHJldHVyblBhbmVsKElzX1BzZXVkbyhwYW4tPmJlbG93KSA/IChQQU5FTCAqKSAwIDogcGFuLT5iZWxvdyk7CisgICAgICBpZiAoMCA9PSBDVVJSRU5UX1NDUkVFTikKKwlyZXR1cm5QYW5lbCgwKTsKKyAgICAgIGVsc2UKKwlyZXR1cm5QYW5lbChjZWlsaW5nX3BhbmVsKENVUlJFTlRfU0NSRUVOKSk7CiAgICAgfQogfQorI2VuZGlmCisKK05DVVJTRVNfRVhQT1JUKFBBTkVMICopCitwYW5lbF9iZWxvdyhjb25zdCBQQU5FTCAqIHBhbikKK3sKKyAgUEFORUwgKnJlc3VsdDsKKworICBUKChUX0NBTExFRCgicGFuZWxfYmVsb3coJXApIiksIChjb25zdCB2b2lkICopcGFuKSk7CisgIGlmIChwYW4pCisgICAgeworICAgICAgR2V0SG9vayhwYW4pOworICAgICAgLyogd2UgbXVzdCBub3QgcmV0dXJuIHRoZSBwc2V1ZG8gcGFuZWwgKi8KKyAgICAgIHJlc3VsdCA9IElzX1BzZXVkbyhwYW4tPmJlbG93KSA/IChQQU5FTCAqKSAwIDogcGFuLT5iZWxvdzsKKyAgICB9CisgIGVsc2UKKyAgICB7CisjaWYgTkNVUlNFU19TUF9GVU5DUworICAgICAgcmVzdWx0ID0gY2VpbGluZ19wYW5lbChDVVJSRU5UX1NDUkVFTik7CisjZWxzZQorICAgICAgLyogaWYgdG9wIGFuZCBib3R0b20gYXJlIGVxdWFsLCB3ZSBoYXZlIG5vIG9yIG9ubHkgdGhlIHBzZXVkbyBwYW5lbCAqLworICAgICAgcmVzdWx0ID0gRU1QVFlfU1RBQ0soKT8gKFBBTkVMICopIDAgOiBfbmNfdG9wX3BhbmVsOworI2VuZGlmCisgICAgfQorICByZXR1cm5QYW5lbChyZXN1bHQpOworfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF9ib3R0b20uYyBiL3BhbmVsL3BfYm90dG9tLmMKaW5kZXggYjg2MWZkOS4uZGI4MTQ0MSAxMDA2NDQKLS0tIGEvcGFuZWwvcF9ib3R0b20uYworKysgYi9wYW5lbC9wX2JvdHRvbS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNiArMjksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTk1ICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDE5OTctMTk5OSwyMDA4ICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBwX2JvdHRvbS5jCkBAIC0zNiwxNiArMzcsMTcgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfYm90dG9tLmMsdiAxLjExIDIwMDUvMDIvMTkgMTY6Mzg6MTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX2JvdHRvbS5jLHYgMS4xMyAyMDEwLzAxLzIzIDIxOjIyOjE2IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIGJvdHRvbV9wYW5lbChQQU5FTCAqIHBhbikKIHsKICAgaW50IGVyciA9IE9LOwogCi0gIFQoKFRfQ0FMTEVEKCJib3R0b21fcGFuZWwoJXApIiksIHBhbikpOworICBUKChUX0NBTExFRCgiYm90dG9tX3BhbmVsKCVwKSIpLCAodm9pZCAqKXBhbikpOwogICBpZiAocGFuKQogICAgIHsKKyAgICAgIEdldEhvb2socGFuKTsKICAgICAgIGlmICghSXNfQm90dG9tKHBhbikpCiAJewogCmRpZmYgLS1naXQgYS9wYW5lbC9wX2RlbGV0ZS5jIGIvcGFuZWwvcF9kZWxldGUuYwppbmRleCAyNGVlMjZiLi4zOWIwNTUzIDEwMDY0NAotLS0gYS9wYW5lbC9wX2RlbGV0ZS5jCisrKyBiL3BhbmVsL3BfZGVsZXRlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTUgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMTk5OSwyMDA4ICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHBfZGVsZXRlLmMKQEAgLTM2LDE5ICszNywyMiBAQAogICovCiAjaW5jbHVkZSAicGFuZWwucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogcF9kZWxldGUuYyx2IDEuOCAyMDA1LzAyLzE5IDE2OjM4OjQ1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogcF9kZWxldGUuYyx2IDEuMTAgMjAxMC8wMS8yMyAyMToyMjoxNiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBkZWxfcGFuZWwoUEFORUwgKiBwYW4pCiB7CiAgIGludCBlcnIgPSBPSzsKIAotICBUKChUX0NBTExFRCgiZGVsX3BhbmVsKCVwKSIpLCBwYW4pKTsKKyAgVCgoVF9DQUxMRUQoImRlbF9wYW5lbCglcCkiKSwgKHZvaWQgKilwYW4pKTsKICAgaWYgKHBhbikKICAgICB7CiAgICAgICBkQnVnKCgiLS0+IGRlbF9wYW5lbCAlcyIsIFVTRVJfUFRSKHBhbi0+dXNlcikpKTsKLSAgICAgIEhJREVfUEFORUwocGFuLCBlcnIsIE9LKTsKLSAgICAgIGZyZWUoKHZvaWQgKilwYW4pOworICAgICAgeworCUdldEhvb2socGFuKTsKKwlISURFX1BBTkVMKHBhbiwgZXJyLCBPSyk7CisJZnJlZSgodm9pZCAqKXBhbik7CisgICAgICB9CiAgICAgfQogICBlbHNlCiAgICAgZXJyID0gRVJSOwpkaWZmIC0tZ2l0IGEvcGFuZWwvcF9oaWRkZW4uYyBiL3BhbmVsL3BfaGlkZGVuLmMKaW5kZXggNjI0YzA3ZC4uMDFiNjliOSAxMDA2NDQKLS0tIGEvcGFuZWwvcF9oaWRkZW4uYworKysgYi9wYW5lbC9wX2hpZGRlbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNiArMjksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTk1ICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDE5OTctMTk5OSwyMDA4ICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBwX2hpZGRlbi5jCkBAIC0zNiwxMyArMzcsMTggQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfaGlkZGVuLmMsdiAxLjcgMjAwNS8wMi8xOSAxNjozOToxNyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHBfaGlkZGVuLmMsdiAxLjkgMjAxMC8wMS8yMyAyMToyMjoxNSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBwYW5lbF9oaWRkZW4oY29uc3QgUEFORUwgKiBwYW4pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJwYW5lbF9oaWRkZW4oJXApIiksIHBhbikpOwotICBpZiAoIXBhbikKLSAgICByZXR1cm5Db2RlKEVSUik7Ci0gIHJldHVybkNvZGUoSVNfTElOS0VEKHBhbikgPyBGQUxTRSA6IFRSVUUpOworICBpbnQgcmMgPSBFUlI7CisKKyAgVCgoVF9DQUxMRUQoInBhbmVsX2hpZGRlbiglcCkiKSwgKGNvbnN0IHZvaWQgKilwYW4pKTsKKyAgaWYgKHBhbikKKyAgICB7CisgICAgICBHZXRIb29rKHBhbik7CisgICAgICByYyA9IChJU19MSU5LRUQocGFuKSA/IEZBTFNFIDogVFJVRSk7CisgICAgfQorICByZXR1cm5Db2RlKHJjKTsKIH0KZGlmZiAtLWdpdCBhL3BhbmVsL3BfaGlkZS5jIGIvcGFuZWwvcF9oaWRlLmMKaW5kZXggMDhkODg1My4uN2I3ODBkNCAxMDA2NDQKLS0tIGEvcGFuZWwvcF9oaWRlLmMKKysrIGIvcGFuZWwvcF9oaWRlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNiwyMyArMzYsMjcgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfaGlkZS5jLHYgMS45IDIwMDUvMDIvMTkgMTY6Mzk6NDEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX2hpZGUuYyx2IDEuMTEgMjAxMC8wMS8yMyAyMToyMjoxNiB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBoaWRlX3BhbmVsKHJlZ2lzdGVyIFBBTkVMICogcGFuKQogewotICBpbnQgZXJyID0gT0s7CisgIGludCBlcnIgPSBFUlI7CiAKLSAgVCgoVF9DQUxMRUQoImhpZGVfcGFuZWwoJXApIiksIHBhbikpOwotICBpZiAoIXBhbikKLSAgICByZXR1cm5Db2RlKEVSUik7CisgIFQoKFRfQ0FMTEVEKCJoaWRlX3BhbmVsKCVwKSIpLCAodm9pZCAqKXBhbikpOwogCi0gIGRCdWcoKCItLT4gaGlkZV9wYW5lbCAlcyIsIFVTRVJfUFRSKHBhbi0+dXNlcikpKTsKLSAgZFN0YWNrKCI8dSVkPiIsIDEsIHBhbik7CisgIGlmIChwYW4pCisgICAgeworICAgICAgR2V0SG9vayhwYW4pOwogCi0gIEhJREVfUEFORUwocGFuLCBlcnIsIEVSUik7CisgICAgICBkQnVnKCgiLS0+IGhpZGVfcGFuZWwgJXMiLCBVU0VSX1BUUihwYW4tPnVzZXIpKSk7CisgICAgICBkU3RhY2soIjx1JWQ+IiwgMSwgcGFuKTsKIAotICBkU3RhY2soIjx1JWQ+IiwgOSwgcGFuKTsKKyAgICAgIEhJREVfUEFORUwocGFuLCBlcnIsIEVSUik7CiAKKyAgICAgIGVyciA9IE9LOworCisgICAgICBkU3RhY2soIjx1JWQ+IiwgOSwgcGFuKTsKKyAgICB9CiAgIHJldHVybkNvZGUoZXJyKTsKIH0KZGlmZiAtLWdpdCBhL3BhbmVsL3BfbW92ZS5jIGIvcGFuZWwvcF9tb3ZlLmMKaW5kZXggMzgxOGU4Yy4uYWRhZTY0NSAxMDA2NDQKLS0tIGEvcGFuZWwvcF9tb3ZlLmMKKysrIGIvcGFuZWwvcF9tb3ZlLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSw2ICsyOSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIEF1dGhvcjogWmV5ZCBNLiBCZW4tSGFsaW0gPHptYmVuaGFsQG5ldGNvbS5jb20+IDE5OTUgICAgICAgICAgICAgICAgICAgICoKICAqICAgICBhbmQ6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgYW5kOiBKdWVyZ2VuIFBmZWlmZXIgICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ny0xOTk5LDIwMDkgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHBfbW92ZS5jCkBAIC0zNiwyMSArMzcsMjQgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfbW92ZS5jLHYgMS45IDIwMDUvMDIvMTkgMTY6NDY6NDkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX21vdmUuYyx2IDEuMTEgMjAxMC8wMS8yMyAyMToyMjoxNSB0b20gRXhwICQiKQogCiBOQ1VSU0VTX0VYUE9SVChpbnQpCiBtb3ZlX3BhbmVsKFBBTkVMICogcGFuLCBpbnQgc3RhcnR5LCBpbnQgc3RhcnR4KQogewotICBUKChUX0NBTExFRCgibW92ZV9wYW5lbCglcCwlZCwlZCkiKSwgcGFuLCBzdGFydHksIHN0YXJ0eCkpOworICBpbnQgcmMgPSBFUlI7CiAKLSAgaWYgKCFwYW4pCi0gICAgcmV0dXJuQ29kZShFUlIpOworICBUKChUX0NBTExFRCgibW92ZV9wYW5lbCglcCwlZCwlZCkiKSwgKHZvaWQgKilwYW4sIHN0YXJ0eSwgc3RhcnR4KSk7CiAKLSAgaWYgKElTX0xJTktFRChwYW4pKQorICBpZiAocGFuKQogICAgIHsKLSAgICAgIFRvdWNocGFuKHBhbik7Ci0gICAgICBQQU5FTF9VUERBVEUocGFuLCAoUEFORUwgKikgMCk7CisgICAgICBHZXRIb29rKHBhbik7CisgICAgICBpZiAoSVNfTElOS0VEKHBhbikpCisJeworCSAgVG91Y2hwYW4ocGFuKTsKKwkgIFBBTkVMX1VQREFURShwYW4sIChQQU5FTCAqKSAwKTsKKwl9CisgICAgICByYyA9IG12d2luKHBhbi0+d2luLCBzdGFydHksIHN0YXJ0eCk7CiAgICAgfQotCi0gIHJldHVybkNvZGUobXZ3aW4ocGFuLT53aW4sIHN0YXJ0eSwgc3RhcnR4KSk7CisgIHJldHVybkNvZGUocmMpOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF9uZXcuYyBiL3BhbmVsL3BfbmV3LmMKaW5kZXggMjcxOTMxNi4uMjM1MzM2YyAxMDA2NDQKLS0tIGEvcGFuZWwvcF9uZXcuYworKysgYi9wYW5lbC9wX25ldy5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzgsNyArMzgsNyBAQAogICovCiAjaW5jbHVkZSAicGFuZWwucHJpdi5oIgogCi1NT0RVTEVfSUQoIiRJZDogcF9uZXcuYyx2IDEuMTAgMjAwOC8wOC8wNCAxODoyNTo0OCB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHBfbmV3LmMsdiAxLjE2IDIwMTAvMDEvMjMgMjE6MjI6MTYgdG9tIEV4cCAkIikKIAogI2lmZGVmIFRSQUNFCiBzdGF0aWMgY2hhciAqc3Rkc2NyX2lkOwpAQCAtNTAsMjAgKzUwLDI3IEBACiAgIEVzdGFibGlzaCB0aGUgcHNldWRvIHBhbmVsIGZvciBzdGRzY3IgaWYgbmVjZXNzYXJ5LgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogc3RhdGljIFBBTkVMICoKLXJvb3RfcGFuZWwodm9pZCkKK3Jvb3RfcGFuZWwoTkNVUlNFU19TUF9EQ0wwKQogeworI2lmIE5DVVJTRVNfU1BfRlVOQ1MKKyAgc3RydWN0IHBhbmVsaG9vayAqcGggPSBOQ1VSU0VTX1NQX05BTUUoX25jX3BhbmVsaG9vaykgKHNwKTsKKworI2VsaWYgTk9fTEVBS1MKKyAgc3RydWN0IHBhbmVsaG9vayAqcGggPSBfbmNfcGFuZWxob29rKCk7CisjZW5kaWYKKwogICBpZiAoX25jX3N0ZHNjcl9wc2V1ZG9fcGFuZWwgPT0gKFBBTkVMICopIDApCiAgICAgewogCi0gICAgICBhc3NlcnQoc3Rkc2NyICYmICFfbmNfYm90dG9tX3BhbmVsICYmICFfbmNfdG9wX3BhbmVsKTsKKyAgICAgIGFzc2VydChTUF9QQVJNICYmIFNQX1BBUk0tPl9zdGRzY3IgJiYgIV9uY19ib3R0b21fcGFuZWwgJiYgIV9uY190b3BfcGFuZWwpOwogI2lmIE5PX0xFQUtTCi0gICAgICBfbmNfcGFuZWxob29rKCktPmRlc3Ryb3kgPSBkZWxfcGFuZWw7CisgICAgICBwaC0+ZGVzdHJveSA9IGRlbF9wYW5lbDsKICNlbmRpZgotICAgICAgX25jX3N0ZHNjcl9wc2V1ZG9fcGFuZWwgPSAoUEFORUwgKikgbWFsbG9jKHNpemVvZihQQU5FTCkpOworICAgICAgX25jX3N0ZHNjcl9wc2V1ZG9fcGFuZWwgPSB0eXBlTWFsbG9jKFBBTkVMLCAxKTsKICAgICAgIGlmIChfbmNfc3Rkc2NyX3BzZXVkb19wYW5lbCAhPSAwKQogCXsKIAkgIFBBTkVMICpwYW4gPSBfbmNfc3Rkc2NyX3BzZXVkb19wYW5lbDsKLQkgIFdJTkRPVyAqd2luID0gc3Rkc2NyOworCSAgV0lORE9XICp3aW4gPSBTUF9QQVJNLT5fc3Rkc2NyOwogCiAJICBwYW4tPndpbiA9IHdpbjsKIAkgIHBhbi0+YmVsb3cgPSAoUEFORUwgKikgMDsKQEAgLTg2LDE2ICs5MywxOCBAQAogewogICBQQU5FTCAqcGFuID0gKFBBTkVMICopIDA7CiAKLSAgVCgoVF9DQUxMRUQoIm5ld19wYW5lbCglcCkiKSwgd2luKSk7CisgIEdldFdpbmRvd0hvb2sod2luKTsKKworICBUKChUX0NBTExFRCgibmV3X3BhbmVsKCVwKSIpLCAodm9pZCAqKXdpbikpOwogCiAgIGlmICghd2luKQogICAgIHJldHVyblBhbmVsKHBhbik7CiAKICAgaWYgKCFfbmNfc3Rkc2NyX3BzZXVkb19wYW5lbCkKLSAgICAodm9pZClyb290X3BhbmVsKCk7CisgICAgKHZvaWQpcm9vdF9wYW5lbChOQ1VSU0VTX1NQX0FSRyk7CiAgIGFzc2VydChfbmNfc3Rkc2NyX3BzZXVkb19wYW5lbCk7CiAKLSAgaWYgKCEod2luLT5fZmxhZ3MgJiBfSVNQQUQpICYmIChwYW4gPSAoUEFORUwgKikgbWFsbG9jKHNpemVvZihQQU5FTCkpKSkKKyAgaWYgKCEod2luLT5fZmxhZ3MgJiBfSVNQQUQpICYmIChwYW4gPSB0eXBlTWFsbG9jKFBBTkVMLCAxKSkpCiAgICAgewogICAgICAgcGFuLT53aW4gPSB3aW47CiAgICAgICBwYW4tPmFib3ZlID0gKFBBTkVMICopIDA7CmRpZmYgLS1naXQgYS9wYW5lbC9wX3JlcGxhY2UuYyBiL3BhbmVsL3BfcmVwbGFjZS5jCmluZGV4IDVkMGQyOTUuLmQzNzMzZWQgMTAwNjQ0Ci0tLSBhL3BhbmVsL3BfcmVwbGFjZS5jCisrKyBiL3BhbmVsL3BfcmVwbGFjZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzYsMjMgKzM2LDI1IEBACiAgKi8KICNpbmNsdWRlICJwYW5lbC5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBwX3JlcGxhY2UuYyx2IDEuOSAyMDA1LzAyLzE5IDE2OjQxOjMxIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogcF9yZXBsYWNlLmMsdiAxLjExIDIwMTAvMDEvMjMgMjE6MjI6MTYgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogcmVwbGFjZV9wYW5lbChQQU5FTCAqIHBhbiwgV0lORE9XICp3aW4pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJyZXBsYWNlX3BhbmVsKCVwLCVwKSIpLCBwYW4sIHdpbikpOworICBpbnQgcmMgPSBFUlI7CiAKLSAgaWYgKCFwYW4pCi0gICAgcmV0dXJuQ29kZShFUlIpOworICBUKChUX0NBTExFRCgicmVwbGFjZV9wYW5lbCglcCwlcCkiKSwgKHZvaWQgKilwYW4sICh2b2lkICopd2luKSk7CiAKLSAgaWYgKElTX0xJTktFRChwYW4pKQorICBpZiAocGFuKQogICAgIHsKLSAgICAgIFRvdWNocGFuKHBhbik7Ci0gICAgICBQQU5FTF9VUERBVEUocGFuLCAoUEFORUwgKikgMCk7CisgICAgICBHZXRIb29rKHBhbik7CisgICAgICBpZiAoSVNfTElOS0VEKHBhbikpCisJeworCSAgVG91Y2hwYW4ocGFuKTsKKwkgIFBBTkVMX1VQREFURShwYW4sIChQQU5FTCAqKSAwKTsKKwl9CisgICAgICBwYW4tPndpbiA9IHdpbjsKKyAgICAgIHJjID0gT0s7CiAgICAgfQotCi0gIHBhbi0+d2luID0gd2luOwotCi0gIHJldHVybkNvZGUoT0spOworICByZXR1cm5Db2RlKHJjKTsKIH0KZGlmZiAtLWdpdCBhL3BhbmVsL3Bfc2hvdy5jIGIvcGFuZWwvcF9zaG93LmMKaW5kZXggMzVlZWUyMy4uZDViMDliZCAxMDA2NDQKLS0tIGEvcGFuZWwvcF9zaG93LmMKKysrIGIvcGFuZWwvcF9zaG93LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNiwzNCArMzYsMzcgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfc2hvdy5jLHYgMS4xMSAyMDA1LzAyLzE5IDE2OjQyOjAyIHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogcF9zaG93LmMsdiAxLjEzIDIwMTAvMDEvMjMgMjE6MjI6MTYgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogc2hvd19wYW5lbChQQU5FTCAqIHBhbikKIHsKLSAgaW50IGVyciA9IE9LOworICBpbnQgZXJyID0gRVJSOwogCi0gIFQoKFRfQ0FMTEVEKCJzaG93X3BhbmVsKCVwKSIpLCBwYW4pKTsKKyAgVCgoVF9DQUxMRUQoInNob3dfcGFuZWwoJXApIiksICh2b2lkICopcGFuKSk7CiAKLSAgaWYgKCFwYW4pCi0gICAgcmV0dXJuQ29kZShFUlIpOworICBpZiAocGFuKQorICAgIHsKKyAgICAgIEdldEhvb2socGFuKTsKIAotICBpZiAoSXNfVG9wKHBhbikpCi0gICAgcmV0dXJuQ29kZShPSyk7CisgICAgICBpZiAoSXNfVG9wKHBhbikpCisJcmV0dXJuQ29kZShPSyk7CiAKLSAgZEJ1ZygoIi0tPiBzaG93X3BhbmVsICVzIiwgVVNFUl9QVFIocGFuLT51c2VyKSkpOworICAgICAgZEJ1ZygoIi0tPiBzaG93X3BhbmVsICVzIiwgVVNFUl9QVFIocGFuLT51c2VyKSkpOwogCi0gIEhJREVfUEFORUwocGFuLCBlcnIsIE9LKTsKKyAgICAgIEhJREVfUEFORUwocGFuLCBlcnIsIE9LKTsKIAotICBkU3RhY2soIjxsdCVkPiIsIDEsIHBhbik7Ci0gIGFzc2VydChfbmNfYm90dG9tX3BhbmVsID09IF9uY19zdGRzY3JfcHNldWRvX3BhbmVsKTsKKyAgICAgIGRTdGFjaygiPGx0JWQ+IiwgMSwgcGFuKTsKKyAgICAgIGFzc2VydChfbmNfYm90dG9tX3BhbmVsID09IF9uY19zdGRzY3JfcHNldWRvX3BhbmVsKTsKIAotICBfbmNfdG9wX3BhbmVsLT5hYm92ZSA9IHBhbjsKLSAgcGFuLT5iZWxvdyA9IF9uY190b3BfcGFuZWw7Ci0gIHBhbi0+YWJvdmUgPSAoUEFORUwgKikgMDsKLSAgX25jX3RvcF9wYW5lbCA9IHBhbjsKKyAgICAgIF9uY190b3BfcGFuZWwtPmFib3ZlID0gcGFuOworICAgICAgcGFuLT5iZWxvdyA9IF9uY190b3BfcGFuZWw7CisgICAgICBwYW4tPmFib3ZlID0gKFBBTkVMICopIDA7CisgICAgICBfbmNfdG9wX3BhbmVsID0gcGFuOwogCi0gIGRTdGFjaygiPGx0JWQ+IiwgOSwgcGFuKTsKKyAgICAgIGVyciA9IE9LOwogCi0gIHJldHVybkNvZGUoT0spOworICAgICAgZFN0YWNrKCI8bHQlZD4iLCA5LCBwYW4pOworICAgIH0KKyAgcmV0dXJuQ29kZShlcnIpOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF90b3AuYyBiL3BhbmVsL3BfdG9wLmMKaW5kZXggOGJkMWQ5Zi4uZmRjZGVlOSAxMDA2NDQKLS0tIGEvcGFuZWwvcF90b3AuYworKysgYi9wYW5lbC9wX3RvcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzYsMTEgKzM2LDExIEBACiAgKi8KICNpbmNsdWRlICJwYW5lbC5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBwX3RvcC5jLHYgMS41IDIwMDUvMDIvMTkgMTY6NDI6MjMgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX3RvcC5jLHYgMS42IDIwMTAvMDEvMjMgMjE6MjI6MTYgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoaW50KQogdG9wX3BhbmVsKFBBTkVMICogcGFuKQogewotICBUKChUX0NBTExFRCgidG9wX3BhbmVsKCVwKSIpLCBwYW4pKTsKKyAgVCgoVF9DQUxMRUQoInRvcF9wYW5lbCglcCkiKSwgKHZvaWQgKilwYW4pKTsKICAgcmV0dXJuQ29kZShzaG93X3BhbmVsKHBhbikpOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF91cGRhdGUuYyBiL3BhbmVsL3BfdXBkYXRlLmMKaW5kZXggNTk2NzcxOC4uYTJmNDUwNiAxMDA2NDQKLS0tIGEvcGFuZWwvcF91cGRhdGUuYworKysgYi9wYW5lbC9wX3VwZGF0ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNiArMjksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTk1ICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogSnVlcmdlbiBQZmVpZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDE5OTctMTk5OSwyMDA4ICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBwX3VwZGF0ZS5jCkBAIC0zNiwyOCArMzcsNDIgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfdXBkYXRlLmMsdiAxLjkgMjAwNS8wMi8xOSAxNjo0OTo0NyB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IHBfdXBkYXRlLmMsdiAxLjExIDIwMTAvMDEvMjMgMjE6MjI6MTYgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQodm9pZCkKLXVwZGF0ZV9wYW5lbHModm9pZCkKK05DVVJTRVNfU1BfTkFNRSh1cGRhdGVfcGFuZWxzKSAoTkNVUlNFU19TUF9EQ0wwKQogewogICBQQU5FTCAqcGFuOwogCi0gIFQoKFRfQ0FMTEVEKCJ1cGRhdGVfcGFuZWxzKCkiKSkpOworICBUKChUX0NBTExFRCgidXBkYXRlX3BhbmVscyglcCkiKSwgKHZvaWQgKilTUF9QQVJNKSk7CiAgIGRCdWcoKCItLT4gdXBkYXRlX3BhbmVscyIpKTsKLSAgcGFuID0gX25jX2JvdHRvbV9wYW5lbDsKLSAgd2hpbGUgKHBhbiAmJiBwYW4tPmFib3ZlKQotICAgIHsKLSAgICAgIFBBTkVMX1VQREFURShwYW4sIHBhbi0+YWJvdmUpOwotICAgICAgcGFuID0gcGFuLT5hYm92ZTsKLSAgICB9CiAKLSAgcGFuID0gX25jX2JvdHRvbV9wYW5lbDsKLSAgd2hpbGUgKHBhbikKKyAgaWYgKFNQX1BBUk0pCiAgICAgewotICAgICAgV25vdXRyZWZyZXNoKHBhbik7Ci0gICAgICBwYW4gPSBwYW4tPmFib3ZlOworICAgICAgR2V0U2NyZWVuSG9vayhTUF9QQVJNKTsKKworICAgICAgcGFuID0gX25jX2JvdHRvbV9wYW5lbDsKKyAgICAgIHdoaWxlIChwYW4gJiYgcGFuLT5hYm92ZSkKKwl7CisJICBQQU5FTF9VUERBVEUocGFuLCBwYW4tPmFib3ZlKTsKKwkgIHBhbiA9IHBhbi0+YWJvdmU7CisJfQorCisgICAgICBwYW4gPSBfbmNfYm90dG9tX3BhbmVsOworICAgICAgd2hpbGUgKHBhbikKKwl7CisJICBXbm91dHJlZnJlc2gocGFuKTsKKwkgIHBhbiA9IHBhbi0+YWJvdmU7CisJfQogICAgIH0KIAogICByZXR1cm5Wb2lkOwogfQorCisjaWYgTkNVUlNFU19TUF9GVU5DUworTkNVUlNFU19FWFBPUlQodm9pZCkKK3VwZGF0ZV9wYW5lbHModm9pZCkKK3sKKyAgTkNVUlNFU19TUF9OQU1FKHVwZGF0ZV9wYW5lbHMpIChDVVJSRU5UX1NDUkVFTik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3BhbmVsL3BfdXNlci5jIGIvcGFuZWwvcF91c2VyLmMKaW5kZXggZmZhMjVmOC4uZGViNWJkZiAxMDA2NDQKLS0tIGEvcGFuZWwvcF91c2VyLmMKKysrIGIvcGFuZWwvcF91c2VyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zNiwxMiArMzYsMTIgQEAKICAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBfdXNlci5jLHYgMS42IDIwMDUvMDIvMTkgMTY6NTI6NDQgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX3VzZXIuYyx2IDEuOCAyMDEwLzAxLzIzIDIzOjE4OjM1IHRvbSBFeHAgJCIpCiAKIE5DVVJTRVNfRVhQT1JUKGludCkKIHNldF9wYW5lbF91c2VycHRyKFBBTkVMICogcGFuLCBOQ1VSU0VTX0NPTlNUIHZvaWQgKnVwdHIpCiB7Ci0gIFQoKFRfQ0FMTEVEKCJzZXRfcGFuZWxfdXNlcnB0ciglcCwlcCkiKSwgcGFuLCB1cHRyKSk7CisgIFQoKFRfQ0FMTEVEKCJzZXRfcGFuZWxfdXNlcnB0ciglcCwlcCkiKSwgKHZvaWQgKilwYW4sIChOQ1VSU0VTX0NPTlNUIHZvaWQgKil1cHRyKSk7CiAgIGlmICghcGFuKQogICAgIHJldHVybkNvZGUoRVJSKTsKICAgcGFuLT51c2VyID0gdXB0cjsKQEAgLTUxLDYgKzUxLDYgQEAKIE5DVVJTRVNfRVhQT1JUKE5DVVJTRVNfQ09OU1Qgdm9pZCAqKQogcGFuZWxfdXNlcnB0cihjb25zdCBQQU5FTCAqIHBhbikKIHsKLSAgVCgoVF9DQUxMRUQoInBhbmVsX3VzZXJwdHIoJXApIiksIHBhbikpOworICBUKChUX0NBTExFRCgicGFuZWxfdXNlcnB0ciglcCkiKSwgKGNvbnN0IHZvaWQgKilwYW4pKTsKICAgcmV0dXJuQ1ZvaWRQdHIocGFuID8gcGFuLT51c2VyIDogKE5DVVJTRVNfQ09OU1Qgdm9pZCAqKTApOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcF93aW4uYyBiL3BhbmVsL3Bfd2luLmMKaW5kZXggZTdkMmNlYS4uNjY0M2Q1YyAxMDA2NDQKLS0tIGEvcGFuZWwvcF93aW4uYworKysgYi9wYW5lbC9wX3dpbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMzYsMTEgKzM2LDExIEBACiAgKi8KICNpbmNsdWRlICJwYW5lbC5wcml2LmgiCiAKLU1PRFVMRV9JRCgiJElkOiBwX3dpbi5jLHYgMS41IDIwMDUvMDIvMTkgMTY6NDQ6MTYgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwX3dpbi5jLHYgMS42IDIwMTAvMDEvMjMgMjE6MjI6MTUgdG9tIEV4cCAkIikKIAogTkNVUlNFU19FWFBPUlQoV0lORE9XICopCiBwYW5lbF93aW5kb3coY29uc3QgUEFORUwgKiBwYW4pCiB7Ci0gIFQoKFRfQ0FMTEVEKCJwYW5lbF93aW5kb3coJXApIiksIHBhbikpOworICBUKChUX0NBTExFRCgicGFuZWxfd2luZG93KCVwKSIpLCAoY29uc3Qgdm9pZCAqKXBhbikpOwogICByZXR1cm5XaW4ocGFuID8gcGFuLT53aW4gOiAoV0lORE9XICopMCk7CiB9CmRpZmYgLS1naXQgYS9wYW5lbC9wYW5lbC5jIGIvcGFuZWwvcGFuZWwuYwppbmRleCAxNmE4MDgzLi45N2JlYmNhIDEwMDY0NAotLS0gYS9wYW5lbC9wYW5lbC5jCisrKyBiL3BhbmVsL3BhbmVsLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0yOSwxMiArMjksMTQgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5NSAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LTE5OTksMjAwOCAgICAgICAgICAqCisgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHBhbmVsLmMgLS0gaW1wbGVtZW50YXRpb24gb2YgcGFuZWxzIGxpYnJhcnksIHNvbWUgY29yZSByb3V0aW5lcyAqLwogI2luY2x1ZGUgInBhbmVsLnByaXYuaCIKIAotTU9EVUxFX0lEKCIkSWQ6IHBhbmVsLmMsdiAxLjIzIDIwMDUvMDIvMTkgMTg6MDQ6MzEgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBwYW5lbC5jLHYgMS4yNiAyMDEyLzAyLzIzIDEwOjAyOjE1IHRvbSBFeHAgJCIpCiAKIC8qKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAlfbmNfcmV0cmFjZV9wYW5lbCAocGFuKQpAQCAtNDMsNyArNDUsNyBAQAogTkNVUlNFU19FWFBPUlQoUEFORUwgKikKIF9uY19yZXRyYWNlX3BhbmVsKFBBTkVMICogcGFuKQogewotICBUKChUX1JFVFVSTigiJXAiKSwgcGFuKSk7CisgIFQoKFRfUkVUVVJOKCIlcCIpLCAodm9pZCAqKXBhbikpOwogICByZXR1cm4gcGFuOwogfQogI2VuZGlmCkBAIC01OSw5ICs2MSw5IEBACiAgIGNoYXIgdGVtcFszMl07CiAKICAgaWYgKHB0ciAhPSAwKQotICAgIHNwcmludGYodGVtcCwgInB0cjolcCIsIHB0cik7CisgICAgX25jX1NQUklOVEYodGVtcCwgX25jX1NMSU1JVChzaXplb2YodGVtcCkpICJwdHI6JXAiLCBwdHIpOwogICBlbHNlCi0gICAgc3RyY3B5KHRlbXAsICI8bnVsbD4iKTsKKyAgICBfbmNfU1RSQ1BZKHRlbXAsICI8bnVsbD4iLCBzaXplb2YodGVtcCkpOwogICByZXR1cm4gX25jX3Zpc2J1Zih0ZW1wKTsKIH0KICNlbmRpZgpAQCAtOTEsNyArOTMsOSBAQAogewogICBjaGFyIHM4MFs4MF07CiAKLSAgc3ByaW50ZihzODAsIGZtdCwgbnVtLCBwYW4pOworICBHZXRQYW5lbEhvb2socGFuKTsKKworICBfbmNfU1BSSU5URihzODAsIF9uY19TTElNSVQoc2l6ZW9mKHM4MCkpIGZtdCwgbnVtLCBwYW4pOwogICBfdHJhY2VmKCIlcyBiPSVzIHQ9JXMiLCBzODAsCiAJICAoX25jX2JvdHRvbV9wYW5lbCkgPyBVU0VSX1BUUihfbmNfYm90dG9tX3BhbmVsLT51c2VyKSA6ICItLSIsCiAJICAoX25jX3RvcF9wYW5lbCkgPyBVU0VSX1BUUihfbmNfdG9wX3BhbmVsLT51c2VyKSA6ICItLSIpOwpAQCAtMTM5LDcgKzE0Myw3IEBACiB7CiAgIGNoYXIgczgwWzgwXTsKIAotICBzcHJpbnRmKHM4MCwgIlRvdWNobGluZSBzPSVkIGM9JWQiLCBzdGFydCwgY291bnQpOworICBfbmNfU1BSSU5URihzODAsIF9uY19TTElNSVQoc2l6ZW9mKHM4MCkpICJUb3VjaGxpbmUgcz0lZCBjPSVkIiwgc3RhcnQsIGNvdW50KTsKICAgZFBhbmVsKHM4MCwgcGFuKTsKICAgdG91Y2hsaW5lKHBhbi0+d2luLCBzdGFydCwgY291bnQpOwogfQpkaWZmIC0tZ2l0IGEvcGFuZWwvcGFuZWwuaCBiL3BhbmVsL3BhbmVsLmgKaW5kZXggMWUwMjA5MS4uNmVkMjA2MSAxMDA2NDQKLS0tIGEvcGFuZWwvcGFuZWwuaAorKysgYi9wYW5lbC9wYW5lbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksOSArMjksMTAgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgQXV0aG9yOiBaZXlkIE0uIEJlbi1IYWxpbSA8em1iZW5oYWxAbmV0Y29tLmNvbT4gMTk5NSAgICAgICAgICAgICAgICAgICAgKgogICogICAgIGFuZDogRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICBhbmQ6IEp1ZXJnZW4gUGZlaWZlciAgICAgICAgICAgICAgICAgICAgICAgICAxOTk2LTE5OTksMjAwOCAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogJElkOiBwYW5lbC5oLHYgMS4xMCAyMDA2LzA1LzI3IDE5OjQ5OjQwIHRvbSBFeHAgJCAqLworLyogJElkOiBwYW5lbC5oLHYgMS4xMSAyMDA5LzA0LzExIDE5OjUwOjQwIHRvbSBFeHAgJCAqLwogCiAvKiBwYW5lbC5oIC0tIGludGVyZmFjZSBmaWxlIGZvciBwYW5lbHMgbGlicmFyeSAqLwogCkBAIC02OCw2ICs2OSwxMyBAQAogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHJlcGxhY2VfcGFuZWwgKFBBTkVMICosV0lORE9XICopOwogZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKGludCkgICAgIHBhbmVsX2hpZGRlbiAoY29uc3QgUEFORUwgKik7CiAKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCitleHRlcm4gTkNVUlNFU19FWFBPUlQoUEFORUwgKikgZ3JvdW5kX3BhbmVsKFNDUkVFTiAqKTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVChQQU5FTCAqKSBjZWlsaW5nX3BhbmVsKFNDUkVFTiAqKTsKKworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUKHZvaWQpICAgIE5DVVJTRVNfU1BfTkFNRSh1cGRhdGVfcGFuZWxzKSAoU0NSRUVOKik7CisjZW5kaWYKKwogI2lmCWRlZmluZWQoX19jcGx1c3BsdXMpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BhbmVsL3BhbmVsLnByaXYuaCBiL3BhbmVsL3BhbmVsLnByaXYuaAppbmRleCA0ZmI4MTQ0Li4xMTU2YzcyIDEwMDY0NAotLS0gYS9wYW5lbC9wYW5lbC5wcml2LmgKKysrIGIvcGFuZWwvcGFuZWwucHJpdi5oCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjYsMTAgKzI2LDExIEBACiAgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qICRJZDogcGFuZWwucHJpdi5oLHYgMS4yMiAyMDA4LzA5LzI3IDIyOjM2OjExIHRvbSBFeHAgJCAqLworLyogJElkOiBwYW5lbC5wcml2LmgsdiAxLjI2IDIwMTQvMTEvMDEgMTQ6NDg6MDMgdG9tIEV4cCAkICovCiAKICNpZm5kZWYgTkNVUlNFU19QQU5FTF9QUklWX0gKICNkZWZpbmUgTkNVUlNFU19QQU5FTF9QUklWX0ggMQorLyogKklOREVOVC1PRkYqICovCiAKICNpZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgpAQCAtMzksOSArNDAsMTEgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgImN1cnNlcy5wcml2LmgiCitzdHJ1Y3Qgc2NyZWVuOyAgICAgICAgICAgICAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiAqLworCisjaW5jbHVkZSAiY3Vyc2VzLnByaXYuaCIgICAgLyogaW5jbHVkZXMgbmNfcGFuZWwuaCAqLwogI2luY2x1ZGUgInBhbmVsLmgiCi0jaW5jbHVkZSA8bmNfcGFuZWwuaD4KKwogCiAjaWYgVVNFX1JDU19JRFMKICMgIGRlZmluZSBNT0RVTEVfSUQoaWQpIHN0YXRpYyBjb25zdCBjaGFyIElkZW50W10gPSBpZDsKQEAgLTU4LDcgKzYxLDcgQEAKICMgICAgZGVmaW5lIFVTRVJfUFRSKHB0cikgX25jX215X3Zpc2J1ZigoY29uc3QgY2hhciAqKXB0cikKICMgIGVuZGlmCiAKLSMgIGRlZmluZSByZXR1cm5QYW5lbChjb2RlKQlUUkFDRV9SRVRVUk4oY29kZSxwYW5lbCkKKyMgIGRlZmluZSByZXR1cm5QYW5lbChjb2RlKQlUUkFDRV9SRVRVUk4xKGNvZGUscGFuZWwpCiAKICAgIGV4dGVybiBOQ1VSU0VTX0VYUE9SVChQQU5FTCAqKSBfbmNfcmV0cmFjZV9wYW5lbCAoUEFORUwgKik7CiAgICBleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgX25jX2RQYW5lbCAoY29uc3QgY2hhciosIGNvbnN0IFBBTkVMKik7CkBAIC04MywxNCArODYsMzggQEAKICMgIGRlZmluZSBUb3VjaGxpbmUocGFuLHN0YXJ0LGNvdW50KSB0b3VjaGxpbmUoKHBhbiktPndpbixzdGFydCxjb3VudCkKICNlbmRpZgogCi0jZGVmaW5lIF9uY19zdGRzY3JfcHNldWRvX3BhbmVsIF9uY19wYW5lbGhvb2soKS0+c3Rkc2NyX3BzZXVkb19wYW5lbAotI2RlZmluZSBfbmNfdG9wX3BhbmVsIF9uY19wYW5lbGhvb2soKS0+dG9wX3BhbmVsCi0jZGVmaW5lIF9uY19ib3R0b21fcGFuZWwgX25jX3BhbmVsaG9vaygpLT5ib3R0b21fcGFuZWwKKyNpZiBOQ1VSU0VTX1NQX0ZVTkNTCisjZGVmaW5lIEdldFNjcmVlbkhvb2soc3ApIFwKKwkJCXN0cnVjdCBwYW5lbGhvb2sqIHBoID0gTkNVUlNFU19TUF9OQU1FKF9uY19wYW5lbGhvb2spKHNwKQorI2RlZmluZSBHZXRQYW5lbEhvb2socGFuKSBcCisJCQlHZXRTY3JlZW5Ib29rKHBhbiA/IF9uY19zY3JlZW5fb2YoKHBhbiktPndpbikgOiAwKQorI2RlZmluZSBHZXRXaW5kb3dIb29rKHdpbikgXAorCQkJU0NSRUVOKiBzcCA9IF9uY19zY3JlZW5fb2Yod2luKTsgXAorCQkJR2V0U2NyZWVuSG9vayhzcCkKKyNkZWZpbmUgR2V0SG9vayhwYW4pCVNDUkVFTiogc3AgPSBfbmNfc2NyZWVuX29mKHBhbi0+d2luKTsgXAorCQkJR2V0U2NyZWVuSG9vayhzcCkKIAotI2RlZmluZSBFTVBUWV9TVEFDSygpIChfbmNfdG9wX3BhbmVsPT1fbmNfYm90dG9tX3BhbmVsKQotI2RlZmluZSBJc19Cb3R0b20ocCkgICgoKHApIT0oUEFORUwqKTApICYmICFFTVBUWV9TVEFDSygpICYmIChfbmNfYm90dG9tX3BhbmVsLT5hYm92ZT09KHApKSkKLSNkZWZpbmUgSXNfVG9wKHApICgoKHApIT0oUEFORUwqKTApICYmICFFTVBUWV9TVEFDSygpICYmIChfbmNfdG9wX3BhbmVsPT0ocCkpKQotI2RlZmluZSBJc19Qc2V1ZG8ocCkgKChwKSAmJiAoKHApPT1fbmNfYm90dG9tX3BhbmVsKSkKKyNkZWZpbmUgX25jX3N0ZHNjcl9wc2V1ZG9fcGFuZWwgKChwaCktPnN0ZHNjcl9wc2V1ZG9fcGFuZWwpCisjZGVmaW5lIF9uY190b3BfcGFuZWwgICAgICAgICAgICgocGgpLT50b3BfcGFuZWwpCisjZGVmaW5lIF9uY19ib3R0b21fcGFuZWwgICAgICAgICgocGgpLT5ib3R0b21fcGFuZWwpCisKKyNlbHNlCS8qICFOQ1VSU0VTX1NQX0ZVTkNTICovCisKKyNkZWZpbmUgR2V0U2NyZWVuSG9vayhzcCkgLyogbm90aGluZyAqLworI2RlZmluZSBHZXRQYW5lbEhvb2socGFuKSAvKiBub3RoaW5nICovCisjZGVmaW5lIEdldFdpbmRvd0hvb2sod2luKSAvKiBub3RoaW5nICovCisjZGVmaW5lIEdldEhvb2socGFuKSAvKiBub3RoaW5nICovCisKKyNkZWZpbmUgX25jX3N0ZHNjcl9wc2V1ZG9fcGFuZWwgX25jX3BhbmVsaG9vaygpLT5zdGRzY3JfcHNldWRvX3BhbmVsCisjZGVmaW5lIF9uY190b3BfcGFuZWwgICAgICAgICAgIF9uY19wYW5lbGhvb2soKS0+dG9wX3BhbmVsCisjZGVmaW5lIF9uY19ib3R0b21fcGFuZWwgICAgICAgIF9uY19wYW5lbGhvb2soKS0+Ym90dG9tX3BhbmVsCisKKyNlbmRpZgkvKiBOQ1VSU0VTX1NQX0ZVTkNTICovCisKKyNkZWZpbmUgRU1QVFlfU1RBQ0soKSAoX25jX3RvcF9wYW5lbCA9PSBfbmNfYm90dG9tX3BhbmVsKQorI2RlZmluZSBJc19Cb3R0b20ocCkgICgoKHApICE9IChQQU5FTCopMCkgJiYgIUVNUFRZX1NUQUNLKCkgJiYgKF9uY19ib3R0b21fcGFuZWwtPmFib3ZlID09IChwKSkpCisjZGVmaW5lIElzX1RvcChwKSAgICAgKCgocCkgIT0gKFBBTkVMKikwKSAmJiAhRU1QVFlfU1RBQ0soKSAmJiAoX25jX3RvcF9wYW5lbCA9PSAocCkpKQorI2RlZmluZSBJc19Qc2V1ZG8ocCkgICgoKHApICE9IChQQU5FTCopMCkgJiYgKChwKSA9PSBfbmNfYm90dG9tX3BhbmVsKSkKIAogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCUlTX0xJTktFRChwYW4pIC0gY2hlY2sgdG8gc2VlIGlmIHBhbmVsIGlzIGluIHRoZSBzdGFjawpAQCAtMTIyLDcgKzE0OSw3IEBACiAgICBpeDIgPSAoUEVORFgocGFuMSkgICA8IFBFTkRYKHBhbjIpKSAgID8gUEVORFgocGFuMSkgICA6IFBFTkRYKHBhbjIpO1wKICAgIGl5MSA9IChQU1RBUlRZKHBhbjEpIDwgUFNUQVJUWShwYW4yKSkgPyBQU1RBUlRZKHBhbjIpIDogUFNUQVJUWShwYW4xKTtcCiAgICBpeTIgPSAoUEVORFkocGFuMSkgICA8IFBFTkRZKHBhbjIpKSAgID8gUEVORFkocGFuMSkgICA6IFBFTkRZKHBhbjIpO1wKLSAgIGFzc2VydCgoaXgxPD1peDIpICYmIChpeTE8PWl5MikpO1wKKyAgIGFzc2VydCgoaXgxPD1peDIpICYmIChpeTE8PWl5MikpCiAKIAogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM0LDE0ICsxNjEsMTQgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZGVmaW5lIFBBTkVMX1VQREFURShwYW4scGFuc3RhcnQpXAogeyAgUEFORUwqIHBhbjIgPSAoKHBhbnN0YXJ0KSA/IChwYW5zdGFydCkgOiBfbmNfYm90dG9tX3BhbmVsKTtcCi0gICB3aGlsZShwYW4yKSB7XAorICAgd2hpbGUocGFuMiAmJiBwYW4yLT53aW4pIHtcCiAgICAgICBpZiAoKHBhbjIgIT0gcGFuKSAmJiBQQU5FTFNfT1ZFUkxBUFBFRChwYW4scGFuMikpIHtcCi0gICAgICAgIGludCB5LGl4MSxpeDIsaXkxLGl5MjtcCi0gICAgICAgIENPTVBVVEVfSU5URVJTRUNUSU9OKHBhbixwYW4yLGl4MSxpeDIsaXkxLGl5Mik7XAorICAgICAgICBpbnQgeSwgaXgxLCBpeDIsIGl5MSwgaXkyO1wKKyAgICAgICAgQ09NUFVURV9JTlRFUlNFQ1RJT04ocGFuLCBwYW4yLCBpeDEsIGl4MiwgaXkxLCBpeTIpO1wKIAlmb3IoeSA9IGl5MTsgeSA8PSBpeTI7IHkrKykge1wKIAkgIGlmIChpc19saW5ldG91Y2hlZChwYW4tPndpbix5IC0gUFNUQVJUWShwYW4pKSkge1wKICAgICAgICAgICAgIHN0cnVjdCBsZGF0KiBsaW5lID0gJihwYW4yLT53aW4tPl9saW5lW3kgLSBQU1RBUlRZKHBhbjIpXSk7XAotICAgICAgICAgICAgQ0hBTkdFRF9SQU5HRShsaW5lLGl4MS1QU1RBUlRYKHBhbjIpLGl4Mi1QU1RBUlRYKHBhbjIpKTtcCisgICAgICAgICAgICBDSEFOR0VEX1JBTkdFKGxpbmUsIGl4MSAtIFBTVEFSVFgocGFuMiksIGl4MiAtIFBTVEFSVFgocGFuMikpO1wKICAgICAgICAgICB9XAogCX1cCiAgICAgICB9XApAQCAtMTgwLDQgKzIwNywxMCBAQAogICAgICAgZXJyID0gZXJyX2lmX3VubGlua2VkO1wKICAgfQogCisjaWYgTkNVUlNFU19TUF9GVU5DUworLyogVGhlc2UgbWF5IGJlY29tZSBsYXRlciByZW5hbWVkIGFuZCBwYXJ0IG9mIHBhbmVsLmggYW5kIHRoZSBwdWJsaWMgQVBJICovCitleHRlcm4gTkNVUlNFU19FWFBPUlQodm9pZCkgTkNVUlNFU19TUF9OQU1FKF9uY191cGRhdGVfcGFuZWxzKShTQ1JFRU4qKTsKKyNlbmRpZgorLyogKklOREVOVC1PTiogKi8KKwogI2VuZGlmIC8qIE5DVVJTRVNfUEFORUxfUFJJVl9IICovCmRpZmYgLS1naXQgYS9wcm9ncy9NS3Rlcm1zb3J0LnNoIGIvcHJvZ3MvTUt0ZXJtc29ydC5zaAppbmRleCAyMjQ3ZjE0Li45ZjVkYjI3IDEwMDc1NQotLS0gYS9wcm9ncy9NS3Rlcm1zb3J0LnNoCisrKyBiL3Byb2dzL01LdGVybXNvcnQuc2gKQEAgLTEsMTAgKzEsMTAgQEAKICMhL2Jpbi9zaAotIyAkSWQ6IE1LdGVybXNvcnQuc2gsdiAxLjEwIDIwMDgvMDcvMTIgMjA6MjI6NTQgdG9tIEV4cCAkCisjICRJZDogTUt0ZXJtc29ydC5zaCx2IDEuMTEgMjAxNS8wNy8wNCAyMzo1OTo1NCB0b20gRXhwICQKICMKICMgTUt0ZXJtc29ydC5zaCAtLSBnZW5lcmF0ZSBpbmRpcmVjdGlvbiB2ZWN0b3JzIGZvciB0aGUgdmFyaW91cyBzb3J0IG1ldGhvZHMKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA4LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTEzOSwyNCArMTM5LDMwIEBACiAKIGVjaG8gInN0YXRpYyBjb25zdCBib29sIGJvb2xfZnJvbV90ZXJtY2FwW10gPSB7IjsKICRBV0sgPCREQVRBICcKLSQzID09ICJib29sIiAmJiBzdWJzdHIoJDcsIDEsIDEpID09ICItIiAgICAgICB7cHJpbnQgIlx0RkFMU0UsXHQvKiAiLCAkMiwgIiAqLyI7fQotJDMgPT0gImJvb2wiICYmIHN1YnN0cigkNywgMSwgMSkgPT0gIlkiICAgICAgIHtwcmludCAiXHRUUlVFLFx0LyogIiwgJDIsICIgKi8iO30KK0JFR0lOIHsgY291bnQgPSAwOyB2YWxpZCA9IDA7IH0KKyQzID09ICJib29sIiAmJiBzdWJzdHIoJDcsIDEsIDEpID09ICItIiAgICAgICB7cHJpbnQgIlx0RkFMU0UsXHQvKiAiLCAkMiwgIiAqLyI7IGNvdW50Kys7IH0KKyQzID09ICJib29sIiAmJiBzdWJzdHIoJDcsIDEsIDEpID09ICJZIiAgICAgICB7cHJpbnQgIlx0VFJVRSxcdC8qICIsICQyLCAiICovIjsgdmFsaWQgPSBjb3VudCsrOyB9CitFTkQgeyBwcmludGYgIiNkZWZpbmUgT0tfYm9vbF9mcm9tX3Rlcm1jYXAgJWRcbiIsIHZhbGlkOyB9CiAnCiBlY2hvICJ9OyI7CiBlY2hvICIiOwogCiBlY2hvICJzdGF0aWMgY29uc3QgYm9vbCBudW1fZnJvbV90ZXJtY2FwW10gPSB7IjsKICRBV0sgPCREQVRBICcKLSQzID09ICJudW0iICYmIHN1YnN0cigkNywgMSwgMSkgPT0gIi0iICAgICAgICB7cHJpbnQgIlx0RkFMU0UsXHQvKiAiLCAkMiwgIiAqLyI7fQotJDMgPT0gIm51bSIgJiYgc3Vic3RyKCQ3LCAxLCAxKSA9PSAiWSIgICAgICAgIHtwcmludCAiXHRUUlVFLFx0LyogIiwgJDIsICIgKi8iO30KK0JFR0lOIHsgY291bnQgPSAwOyB2YWxpZCA9IDA7IH0KKyQzID09ICJudW0iICYmIHN1YnN0cigkNywgMSwgMSkgPT0gIi0iICAgICAgICB7cHJpbnQgIlx0RkFMU0UsXHQvKiAiLCAkMiwgIiAqLyI7IGNvdW50Kys7IH0KKyQzID09ICJudW0iICYmIHN1YnN0cigkNywgMSwgMSkgPT0gIlkiICAgICAgICB7cHJpbnQgIlx0VFJVRSxcdC8qICIsICQyLCAiICovIjsgdmFsaWQgPSBjb3VudCsrOyB9CitFTkQgeyBwcmludGYgIiNkZWZpbmUgT0tfbnVtX2Zyb21fdGVybWNhcCAlZFxuIiwgdmFsaWQ7IH0KICcKIGVjaG8gIn07IjsKIGVjaG8gIiI7CiAKIGVjaG8gInN0YXRpYyBjb25zdCBib29sIHN0cl9mcm9tX3Rlcm1jYXBbXSA9IHsiOwogJEFXSyA8JERBVEEgJwotJDMgPT0gInN0ciIgJiYgc3Vic3RyKCQ3LCAxLCAxKSA9PSAiLSIgICAgICAgIHtwcmludCAiXHRGQUxTRSxcdC8qICIsICQyLCAiICovIjt9Ci0kMyA9PSAic3RyIiAmJiBzdWJzdHIoJDcsIDEsIDEpID09ICJZIiAgICAgICAge3ByaW50ICJcdFRSVUUsXHQvKiAiLCAkMiwgIiAqLyI7fQorQkVHSU4geyBjb3VudCA9IDA7IHZhbGlkID0gMDsgfQorJDMgPT0gInN0ciIgJiYgc3Vic3RyKCQ3LCAxLCAxKSA9PSAiLSIgICAgICAgIHtwcmludCAiXHRGQUxTRSxcdC8qICIsICQyLCAiICovIjsgY291bnQrKzsgfQorJDMgPT0gInN0ciIgJiYgc3Vic3RyKCQ3LCAxLCAxKSA9PSAiWSIgICAgICAgIHtwcmludCAiXHRUUlVFLFx0LyogIiwgJDIsICIgKi8iOyB2YWxpZCA9IGNvdW50Kys7IH0KK0VORCB7IHByaW50ZiAiI2RlZmluZSBPS19zdHJfZnJvbV90ZXJtY2FwICVkXG4iLCB2YWxpZDsgfQogJwogZWNobyAifTsiOwogZWNobyAiIjsKZGlmZiAtLWdpdCBhL3Byb2dzL01ha2VmaWxlLmluIGIvcHJvZ3MvTWFrZWZpbGUuaW4KaW5kZXggODg2ZmQ1Yi4uNjYzYTVhMCAxMDA2NDQKLS0tIGEvcHJvZ3MvTWFrZWZpbGUuaW4KKysrIGIvcHJvZ3MvTWFrZWZpbGUuaW4KQEAgLTEsNiArMSw2IEBACi0jICRJZDogTWFrZWZpbGUuaW4sdiAxLjc5IDIwMDgvMDkvMDcgMTM6NTg6NTUgdG9tIEV4cCAkCisjICRJZDogTWFrZWZpbGUuaW4sdiAxLjk1IDIwMTUvMDgvMDUgMDk6MjQ6MDYgdG9tIEV4cCAkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwogIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCkBAIC00Miw3ICs0Miw4IEBACiAjIHR1cm4gb2ZmIF9hbGxfIHN1ZmZpeCBydWxlczsgd2UnbGwgZ2VuZXJhdGUgb3VyIG93bgogLlNVRkZJWEVTOgogCi1TSEVMTAkJPSAvYmluL3NoCitTSEVMTAkJPSBAU0hFTExACitWUEFUSAkJPSBAc3JjZGlyQAogVEhJUwkJPSBNYWtlZmlsZQogCiBDRl9NRkxBR1MgCT0gQGNmX2N2X21ha2VmbGFnc0AKQEAgLTYwLDkgKzYxLDE2IEBACiBiaW5kaXIJCT0gQGJpbmRpckAKIGxpYmRpcgkJPSBAbGliZGlyQAogaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQAorZGF0YXJvb3RkaXIJPSBAZGF0YXJvb3RkaXJACiBkYXRhZGlyCQk9IEBkYXRhZGlyQAoraW5jbHVkZXN1YmRpcgk9IEBpbmNsdWRlc3ViZGlyQAorCitJTkNMVURFRElSCT0gJChERVNURElSKSQoaW5jbHVkZWRpcikkKGluY2x1ZGVzdWJkaXIpCisKK1BBQ0tBR0UJCT0gQFBBQ0tBR0VACiAKIExJQlRPT0wJCT0gQExJQlRPT0xACitMSUJUT09MX09QVFMJPSBATElCVE9PTF9PUFRTQAogTElCVE9PTF9DTEVBTgk9IEBMSUJfQ0xFQU5ACiBMSUJUT09MX0NPTVBJTEUJPSBATElCX0NPTVBJTEVACiBMSUJUT09MX0xJTksJPSBATElCX0xJTktACkBAIC03NiwxMiArODQsMTUgQEAKIEFXSwkJPSBAQVdLQAogTE5fUwkJPSBATE5fU0AKIAorQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAorCiBDQwkJPSBAQ0NACiBDUFAJCT0gQENQUEAKIENGTEFHUwkJPSBAQ0ZMQUdTQAogCiBJTkNESVIJCT0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi1DUFBGTEFHUwk9IC1JLi4vcHJvZ3MgLUkkKHNyY2RpcikgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKK0NQUEZMQUdTCT0gLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKIAogQ0NGTEFHUwkJPSAkKENQUEZMQUdTKSAkKENGTEFHUykKIApAQCAtMTAwLDIwICsxMTEsMjEgQEAKIExECQk9IEBMREAKIExJTksJCT0gQExJTktfUFJPR1NAICQoTElCVE9PTF9MSU5LKQogTERGTEFHUwkJPSBARVhUUkFfTERGTEFHU0AgQExERkxBR1NACitSUEFUSF9MSVNUCT0gQFJQQVRIX0xJU1RACiAKIExERkxBR1NfTElCVE9PTAk9ICQoTERGTEFHUykgJChDRkxBR1NfTElCVE9PTCkKIExERkxBR1NfTk9STUFMCT0gJChMREZMQUdTKSAkKENGTEFHU19OT1JNQUwpCiBMREZMQUdTX0RFQlVHCT0gJChMREZMQUdTKSAkKENGTEFHU19ERUJVRykKLUxERkxBR1NfUFJPRklMRQk9ICQoTERGTEFHUykgJChDRkxBR1NfUFJPRklMRSkgCitMREZMQUdTX1BST0ZJTEUJPSAkKExERkxBR1MpICQoQ0ZMQUdTX1BST0ZJTEUpCiBMREZMQUdTX1NIQVJFRAk9ICQoTERGTEFHUykgJChDRkxBR1NfU0hBUkVEKSBATERfU0hBUkVEX09QVFNACiAKIExERkxBR1NfREVGQVVMVAk9ICQoTERGTEFHU19AREZUX1VQUl9NT0RFTEApCiAKLUxJQlNfVElDCT0gQExERkxBR1NfU1RBVElDQCBAVElDU19BUkdTQCBAVElORk9fQVJHU0AgQExERkxBR1NfU0hBUkVEQCBATERfTU9ERUxAIEBMSUJTQAotTERGTEFHU19USUMJPSAkKExERkxBR1NfQERGVF9VUFJfTU9ERUxAKSAkKExJQlNfVElDKQorTElCU19USUMJPSBAVElORk9fTERGTEFHU0AgQExERkxBR1NfU1RBVElDQCBAVElDU19MSUJTQCBAVElORk9fTElCU0AgQExERkxBR1NfU0hBUkVEQCBATERfTU9ERUxAIEBMSUJTQAorTERGTEFHU19USUMJPSBAVElDU19MREZMQUdTQCAkKExERkxBR1NfQERGVF9VUFJfTU9ERUxAKSAkKExJQlNfVElDKQogCi1MSUJTX1RJTkZPCT0gQExERkxBR1NfU1RBVElDQCBAVElORk9fQVJHU0AgQExERkxBR1NfU0hBUkVEQCBATERfTU9ERUxAIEBMSUJTQAotTERGTEFHU19USU5GTwk9ICQoTERGTEFHU19AREZUX1VQUl9NT0RFTEApICQoTElCU19USU5GTykKK0xJQlNfVElORk8JPSBATERGTEFHU19TVEFUSUNAIEBUSU5GT19MSUJTQCBATERGTEFHU19TSEFSRURAIEBMRF9NT0RFTEAgQExJQlNACitMREZMQUdTX1RJTkZPCT0gQFRJTkZPX0xERkxBR1NAICQoTERGTEFHU19AREZUX1VQUl9NT0RFTEApICQoTElCU19USU5GTykKIAogTElOVAkJPSBATElOVEAKIExJTlRfT1BUUwk9IEBMSU5UX09QVFNACkBAIC0xMjQsNyArMTM2LDcgQEAKIAl0cmFuc2Zvcm0uaAogCiAjIHRpYyByZWxpZXMgb24gZGlyZWN0IGFjY2VzcyB0byB0aGUgdGVybWluZm8gZGF0YWJhc2UKLUdFVF9QUk9HUyA9IGluZm9jbXAkeCBjbGVhciR4IHRwdXQkeCB0c2V0JHggdG9lJHgKK0dFVF9QUk9HUyA9IGluZm9jbXAkeCBjbGVhciR4IHRhYnMkeCB0cHV0JHggdHNldCR4IHRvZSR4CiBQVVRfUFJPR1MgPSBATUFLRV9URVJNSU5GT0AgdGljJHgKIFBST0dTID0gJChQVVRfUFJPR1MpICQoR0VUX1BST0dTKQogCkBAIC0xNTksNiArMTcxLDcgQEAKIGFjdHVhbF9pbmZvdG9jYXAgPSBgZWNobyBpbmZvdG9jYXAkeHwgJChUUkFOU0ZPUk0pYAogYWN0dWFsX2luaXQgICAgICA9IGBlY2hvIGluaXQkeHwgICAgICAkKFRSQU5TRk9STSlgCiBhY3R1YWxfcmVzZXQgICAgID0gYGVjaG8gcmVzZXQkeHwgICAgICQoVFJBTlNGT1JNKWAKK2FjdHVhbF90YWJzICAgICAgPSBgZWNobyB0YWJzJHh8ICAgICAgJChUUkFOU0ZPUk0pYAogYWN0dWFsX3RpYyAgICAgICA9IGBlY2hvIHRpYyR4fCAgICAgICAkKFRSQU5TRk9STSlgCiBhY3R1YWxfdG9lICAgICAgID0gYGVjaG8gdG9lJHh8ICAgICAgICQoVFJBTlNGT1JNKWAKIGFjdHVhbF90cHV0ICAgICAgPSBgZWNobyB0cHV0JHh8ICAgICAgJChUUkFOU0ZPUk0pYApAQCAtMTcxLDEwICsxODQsMTYgQEAKIGRlZmluZV9yZXNldCAgICAgPSBgZWNobyByZXNldHwgICAgICAgJChUUkFOU0ZPUk0pYAogCiB0cmFuc2Zvcm0uaCA6Ci0JZWNobyAiI2RlZmluZSBQUk9HX0NBUFRPSU5GTyBcIiQoZGVmaW5lX2NhcHRvaW5mbylcIiIgPiRACi0JZWNobyAiI2RlZmluZSBQUk9HX0lORk9UT0NBUCBcIiQoZGVmaW5lX2luZm90b2NhcClcIiIgPj4kQAotCWVjaG8gIiNkZWZpbmUgUFJPR19SRVNFVCAgICAgXCIkKGRlZmluZV9yZXNldClcIiIgICAgID4+JEAKLQllY2hvICIjZGVmaW5lIFBST0dfSU5JVCAgICAgIFwiJChkZWZpbmVfaW5pdClcIiIgICAgICA+PiRACisJZWNobyAiI2lmbmRlZiBfX1RSQU5TRk9STV9IIgkJCQkJPiRACisJZWNobyAiI2RlZmluZSBfX1RSQU5TRk9STV9IIDEiCQkJCQk+PiRACisJZWNobyAiI2luY2x1ZGUgPHByb2dzLnByaXYuaD4iCQkJCQk+PiRACisJZWNobyAiZXh0ZXJuIGJvb2wgc2FtZV9wcm9ncmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsiCT4+JEAKKwktJChTSEVMTCkgLWMgJ2lmIHRlc3QgLW4gIiR4IiA7IHRoZW4gZWNobyAiI2RlZmluZSBTVUZGSVhfSUdOT1JFRCBcIiR4XCIiPj4kQDsgZmknCisJZWNobyAiI2RlZmluZSBQUk9HX0NBUFRPSU5GTyBcIiQoZGVmaW5lX2NhcHRvaW5mbylcIiIJCT4+JEAKKwllY2hvICIjZGVmaW5lIFBST0dfSU5GT1RPQ0FQIFwiJChkZWZpbmVfaW5mb3RvY2FwKVwiIgkJPj4kQAorCWVjaG8gIiNkZWZpbmUgUFJPR19SRVNFVCAgICAgXCIkKGRlZmluZV9yZXNldClcIiIJCT4+JEAKKwllY2hvICIjZGVmaW5lIFBST0dfSU5JVCAgICAgIFwiJChkZWZpbmVfaW5pdClcIiIJCT4+JEAKKwllY2hvICIjZW5kaWYgLyogX19UUkFOU0ZPUk1fSCAqLyIJCQkJPj4kQAogCiBpbnN0YWxsLnByb2dzOiAkKEFVVE9fU1JDKSAkKFBST0dTKSAkKERFU1RESVIpJChiaW5kaXIpCiBATUFLRV9URVJNSU5GT0AJJChMSUJUT09MX0lOU1RBTEwpICQoSU5TVEFMTF9QUk9HKSB0aWMkeCAgICAgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF90aWMpCkBAIC0xODcsNiArMjA2LDcgQEAKIEBNQUtFX1RFUk1JTkZPQAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiAkKExOX1MpICQoYWN0dWFsX3RpYykgJChhY3R1YWxfY2FwdG9pbmZvKSkKIAkkKExJQlRPT0xfSU5TVEFMTCkgJChJTlNUQUxMX1BST0cpIGluZm9jbXAkeCAkKERFU1RESVIpJChiaW5kaXIpLyQoYWN0dWFsX2luZm9jbXApCiAJJChMSUJUT09MX0lOU1RBTEwpICQoSU5TVEFMTF9QUk9HKSBjbGVhciR4ICAgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF9jbGVhcikKKwkkKExJQlRPT0xfSU5TVEFMTCkgJChJTlNUQUxMX1BST0cpIHRhYnMkeCAgICAkKERFU1RESVIpJChiaW5kaXIpLyQoYWN0dWFsX3RhYnMpCiAJJChMSUJUT09MX0lOU1RBTEwpICQoSU5TVEFMTF9QUk9HKSB0cHV0JHggICAgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF90cHV0KQogCSQoTElCVE9PTF9JTlNUQUxMKSAkKElOU1RBTExfUFJPRykgdHNldCR4ICAgICQoREVTVERJUikkKGJpbmRpcikvJChhY3R1YWxfdHNldCkKIAlAZWNobyAibGlua2luZyAkKGFjdHVhbF9yZXNldCkgdG8gJChhY3R1YWxfdHNldCkiCkBAIC0yMDAsMTIgKzIyMCwxMyBAQAogQE1BS0VfVEVSTUlORk9ACS1Acm0gLWYgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF9pbmZvdG9jYXApCiAJLUAkKExJQlRPT0xfQ0xFQU4pIHJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJChhY3R1YWxfaW5mb2NtcCkKIAktQCQoTElCVE9PTF9DTEVBTikgcm0gLWYgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF9jbGVhcikKKwktQCQoTElCVE9PTF9DTEVBTikgcm0gLWYgJChERVNURElSKSQoYmluZGlyKS8kKGFjdHVhbF90YWJzKQogCS1AJChMSUJUT09MX0NMRUFOKSBybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoYWN0dWFsX3RwdXQpCiAJLUAkKExJQlRPT0xfQ0xFQU4pIHJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJChhY3R1YWxfdHNldCkKIAktQHJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJChhY3R1YWxfcmVzZXQpCiAKICQoREVTVERJUikkKGJpbmRpcikgOgotCXNoICQoc3JjZGlyKS8uLi9ta2RpcnMuc2ggJEAKKwlta2RpciAtcCAkQAogCiAjCiAjIFV0aWxpdGllcyBub3JtYWxseSBidWlsdCBieSBtYWtlIGFsbCBzdGFydCBoZXJlCkBAIC0yMTMsNjMgKzIzNCw3NCBAQAogCiBERVBTX1RJQyA9IFwKIAkkKE1PREVMKS90aWMkbyBcCi0JJChNT0RFTCkvZHVtcF9lbnRyeSRvCisJJChNT0RFTCkvZHVtcF9lbnRyeSRvIFwKKwkkKE1PREVMKS90cGFybV90eXBlJG8gXAorCSQoTU9ERUwpL3RyYW5zZm9ybSRvCiAKIHRpYyR4OiAkKERFUFNfVElDKSAkKERFUFNfQ1VSU0VTKSB0cmFuc2Zvcm0uaAotCUBFQ0hPX0xJTktAICQoTElOSykgJChERVBTX1RJQykgJChMREZMQUdTX1RJQykgLW8gJEAKKwlARUNIT19MREAgJChMSU5LKSAkKERFUFNfVElDKSAkKExERkxBR1NfVElDKSAtbyAkQAogCiBERVBTX1RPRSA9IFwKIAkkKE1PREVMKS90b2UkbwogCiB0b2UkeDogJChERVBTX1RPRSkgJChERVBTX0NVUlNFUykKLQlARUNIT19MSU5LQCAkKExJTkspICQoREVQU19UT0UpICQoTERGTEFHU19USUMpIC1vICRACisJQEVDSE9fTERAICQoTElOSykgJChERVBTX1RPRSkgJChMREZMQUdTX1RJQykgLW8gJEAKIAogREVQU19DTEVBUiA9IFwKIAkkKE1PREVMKS9jbGVhciRvCiAKIGNsZWFyJHg6ICQoREVQU19DTEVBUikgJChERVBTX0NVUlNFUykKLQlARUNIT19MSU5LQCAkKExJTkspICQoREVQU19DTEVBUikgJChMREZMQUdTX1RJTkZPKSAtbyAkQAorCUBFQ0hPX0xEQCAkKExJTkspICQoREVQU19DTEVBUikgJChMREZMQUdTX1RJTkZPKSAtbyAkQAorCitERVBTX1RBQlMgPSBcCisJJChNT0RFTCkvdGFicyRvCisKK3RhYnMkeDogJChERVBTX1RBQlMpICQoREVQU19UQUJTKQorCUBFQ0hPX0xEQCAkKExJTkspICQoREVQU19UQUJTKSAkKExERkxBR1NfVElORk8pIC1vICRACiAKIERFUFNfVFBVVCA9IFwKLQkkKE1PREVMKS90cHV0JG8KKwkkKE1PREVMKS90cHV0JG8gXAorCSQoTU9ERUwpL3RwYXJtX3R5cGUkbyBcCisJJChNT0RFTCkvdHJhbnNmb3JtJG8KIAogdHB1dCR4OiAkKERFUFNfVFBVVCkgJChERVBTX0NVUlNFUykgdHJhbnNmb3JtLmgKLQlARUNIT19MSU5LQCAkKExJTkspICQoREVQU19UUFVUKSAkKExERkxBR1NfVElORk8pIC1vICRACisJQEVDSE9fTERAICQoTElOSykgJChERVBTX1RQVVQpICQoTERGTEFHU19USU5GTykgLW8gJEAKIAogREVQU19JTkZPQ01QID0gXAogCSQoTU9ERUwpL2luZm9jbXAkbyBcCiAJJChNT0RFTCkvZHVtcF9lbnRyeSRvCiAKIGluZm9jbXAkeDogJChERVBTX0lORk9DTVApICQoREVQU19DVVJTRVMpCi0JQEVDSE9fTElOS0AgJChMSU5LKSAkKERFUFNfSU5GT0NNUCkgJChMREZMQUdTX1RJQykgLW8gJEAKKwlARUNIT19MREAgJChMSU5LKSAkKERFUFNfSU5GT0NNUCkgJChMREZMQUdTX1RJQykgLW8gJEAKIAogREVQU19UU0VUID0gXAotCSQoTU9ERUwpL3RzZXQkbworCSQoTU9ERUwpL3RzZXQkbyBcCisJJChNT0RFTCkvdHJhbnNmb3JtJG8KIAogdHNldCR4OiAkKERFUFNfVFNFVCkgJChERVBTX0NVUlNFUykgdHJhbnNmb3JtLmgKLQlARUNIT19MSU5LQCAkKExJTkspICQoREVQU19UU0VUKSAkKExERkxBR1NfVElORk8pIC1vICRACisJQEVDSE9fTERAICQoTElOSykgJChERVBTX1RTRVQpICQoTERGTEFHU19USU5GTykgLW8gJEAKIAogdGVybXNvcnQuYzogJChzcmNkaXIpL01LdGVybXNvcnQuc2gKLQlzaCAkKHNyY2RpcikvTUt0ZXJtc29ydC5zaCAkKEFXSykgJChzcmNkaXIpLy4uL2luY2x1ZGUvQFRFUk1JTkZPX0NBUFNAID4kQAorCSQoU0hFTEwpICQoc3JjZGlyKS9NS3Rlcm1zb3J0LnNoICQoQVdLKSAkKHNyY2RpcikvLi4vaW5jbHVkZS9AVEVSTUlORk9fQ0FQU0AgPiRACiAKICMKICMgVXRpbGl0eSBwcm9kdWN0aW9ucyBzdGFydCBoZXJlCiAjCiAKIHRhZ3M6Ci0JY3RhZ3MgKi5bY2hdCisJJChDVEFHUykgKi5bY2hdCiAKIEBNQUtFX1VQUEVSX1RBR1NAVEFHUzoKLUBNQUtFX1VQUEVSX1RBR1NACWV0YWdzICouW2NoXQorQE1BS0VfVVBQRVJfVEFHU0AJJChFVEFHUykgKi5bY2hdCiAKIG1vc3RseWNsZWFuIDo6CiAJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZQogCiBjbGVhbiA6OiBtb3N0bHljbGVhbgotCS1zaCAtYyAiaWYgdGVzdCAtbiAnJHgnIDsgdGhlbiAkKE1BS0UpIGNsZWFuIHg9Jyc7IGZpIgorCS0kKFNIRUxMKSAtYyAiaWYgdGVzdCAtbiAnJHgnIDsgdGhlbiAkKE1BS0UpIGNsZWFuIHg9Jyc7IGZpIgogCS1ybSAtZiAkKEFVVE9fU1JDKQogCS1ybSAtZiAkKFBST0dTKQotCS1ybSAtcmYgLmxpYnMKKwktcm0gLXJmIC5saWJzICouZFNZTQogCiBkaXN0Y2xlYW4gOjogY2xlYW4KIAktcm0gLWYgTWFrZWZpbGUKQEAgLTI4OSw2ICszMjEsNyBAQAogQE1BS0VfVEVSTUlORk9ACSQoTElOVCkgJChMSU5UX09QVFMpICQoQ1BQRkxBR1MpICQoc3JjZGlyKS90b2UuYyAgICAgJChzcmNkaXIpL2R1bXBfZW50cnkuYyAkKExJTlRfTElCUykKIAkkKExJTlQpICQoTElOVF9PUFRTKSAkKENQUEZMQUdTKSAkKHNyY2RpcikvY2xlYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgJChMSU5UX0xJQlMpCiAJJChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJChzcmNkaXIpL2luZm9jbXAuYyAkKHNyY2RpcikvZHVtcF9lbnRyeS5jICQoTElOVF9MSUJTKQorCSQoTElOVCkgJChMSU5UX09QVFMpICQoQ1BQRkxBR1MpICQoc3JjZGlyKS90YWJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAkKExJTlRfTElCUykKIAkkKExJTlQpICQoTElOVF9PUFRTKSAkKENQUEZMQUdTKSAkKHNyY2RpcikvdHB1dC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgJChMSU5UX0xJQlMpCiAJJChMSU5UKSAkKExJTlRfT1BUUykgJChDUFBGTEFHUykgJChzcmNkaXIpL3RzZXQuYyAgICAkKHNyY2RpcikvZHVtcF9lbnRyeS5jICQoTElOVF9MSUJTKQogCmRpZmYgLS1naXQgYS9wcm9ncy9jYXBjb252ZXJ0IGIvcHJvZ3MvY2FwY29udmVydAppbmRleCA4MTk5YmJmLi5lYjM4MmUwIDEwMDc1NQotLS0gYS9wcm9ncy9jYXBjb252ZXJ0CisrKyBiL3Byb2dzL2NhcGNvbnZlcnQKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDA2LDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTI2LDcgKzI2LDcgQEAKICMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwogIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgJElkOiBjYXBjb252ZXJ0LHYgMS40IDIwMDYvMDQvMjIgMjE6NDY6MTcgdG9tIEV4cCAkCisjICRJZDogY2FwY29udmVydCx2IDEuNSAyMDExLzExLzEyIDIzOjI4OjA3IFJvYmVydC5NaWxsYW4gRXhwICQKICMKICMgY2FwY29udmVydCAtLSBhdXRvbWF0ZWQgY29udmVyc2lvbiBmcm9tIHRlcm1jYXAgdG8gdGVybWluZm8KICMKQEAgLTc3LDE2ICs3NywxOCBAQAogCQkjIEFzc3VtZXMgdGhlIHRlcm1pbmZvIG1hc3RlciBjb3ZlcnMgYWxsIGNhbm5lZCB0ZXJtaW5hbCB0eXBlcwogCQlleGl0OwogCWZpCi0JaWYgdGVzdCAiJFRFUk0iID0gInh0ZXJtIgotCXRoZW4KKwljYXNlICRURVJNIGluCisJeHRlcm0gfCB4dGVybS0qKQogCQllY2hvICJZb3UgYXJlIHJ1bm5pbmcgeHRlcm0sIHdoaWNoIHVzdWFsbHkgc2V0cyBURVJNQ0FQIGl0c2VsZi4iCiAJCWVjaG8gIldlIGNhbiBpZ25vcmUgdGhpcywgYmVjYXVzZSB0ZXJtaW5mbyBrbm93cyBhYm91dCB4dGVybS4iCiAJCWVjaG8gIlNvIHlvdSB3aWxsIGp1c3QgdXNlIHRoZSBzeXN0ZW0td2lkZSB0ZXJtaW5mbyB0cmVlLiIKLQkJZXhpdDsKLQllbHNlCisJCWV4aXQKKwkJOzsKKwkqKQogCQllY2hvICJXZSB3aWxsIGhhdmUgdG8gbWFrZSBhIGxvY2FsIG9uZSBmb3IgeW91IGFueXdheSwgdG8gY2FwdHVyZSB0aGUgZWZmZWN0IgogCQllY2hvICJvZiB5b3VyIFRFUk1DQVAgdmFyaWFibGUuIgotCWZpCisJCTs7CisJZXNhYwogZWxzZQogCWVjaG8gIk5vIHN5c3RlbS13aWRlIHRlcm1pbmZvIHRyZWUuICBXZSB3aWxsIG1ha2UgeW91IGEgbG9jYWwgb25lLiIKIGZpCkBAIC0xMDksNyArMTExLDcgQEAKIGZvciB4IGluICRQQVRIIC4KIGRvCiAJaWYgdGVzdCAkT1BUICR4L3RpYwotCXRoZW4gCisJdGhlbgogCQlUSUM9JHgvdGljCiAJCWJyZWFrCiAJZmkKQEAgLTE0MSw3ICsxNDMsNyBAQAogdGhlbgogCWVjaG8gIkl0IGFwcGVhcnMgeW91IGFscmVhZHkgaGF2ZSBhIHByaXZhdGUgdGVybWluZm8gZGlyZWN0b3J5IgogCWVjaG8gImF0ICRIT01FLy50ZXJtaW5mbzsgdGhpcyBzZWVtcyBvZGQsIGJlY2F1c2UgVEVSTUlORk8iCi0JZWNobyAiaXMgbm90IGRlZmluZWQuICBJIGFtIG5vdCBnb2luZyB0byBzZWNvbmQtZ3Vlc3MgdGhpcyAtLSBpZiB5b3UiIAorCWVjaG8gImlzIG5vdCBkZWZpbmVkLiAgSSBhbSBub3QgZ29pbmcgdG8gc2Vjb25kLWd1ZXNzIHRoaXMgLS0gaWYgeW91IgogCWVjaG8gInJlYWxseSB3YW50IG1lIHRvIHRyeSBhdXRvLWNvbmZpZ3VyaW5nIGZvciB5b3UsIHJlbW92ZSBvciIKIAllY2hvICJyZW5hbWUgJEhPTUUvdGVybWluZm8gYW5kIHJ1biBtZSBhZ2Fpbi4iCiAJZXhpdDsKQEAgLTIxNCw3ICsyMTYsNyBAQAogIwogZWNobyAiWW91IG5vdyBoYXZlIGEgcHJpdmF0ZSB0cmVlIHVuZGVyICRIT01FLy50ZXJtaW5mbzsiCiBlY2hvICJ0aGUgbmN1cnNlcyBsaWJyYXJ5IHdpbGwgYXV0b21hdGljYWxseSByZWFkIGZyb20gaXQsIgotZWNobyAiYW5kIG5jdXJzZXMgdGljIHdpbGwgYXV0b21hdGljYWxseSBjb21waWxlIGVudHJpZXMgdG8gaXQuIiAKK2VjaG8gImFuZCBuY3Vyc2VzIHRpYyB3aWxsIGF1dG9tYXRpY2FsbHkgY29tcGlsZSBlbnRyaWVzIHRvIGl0LiIKIAogIyBXZSdyZSBkb25lIHVubGVzcyB1c2VyIGhhcyBhIC50ZXJtY2FwIGZpbGUgb3IgZXF1aXZhbGVudCBuYW1lZCBieSBURVJNQ0FQCiBpZiB0ZXN0IC16ICIkVEVSTUNBUCIKQEAgLTIzNSw3ICsyMzcsNyBAQAogCWVjaG8gIkRvbmUuIgogCWVjaG8gIk5vdGUgdGhhdCBlZGl0aW5nICRIT01FLy50ZXJtY2FwIHdpbGwgbm8gbG9uZ2VyIGNoYW5nZSB0aGUgZGF0YSBjdXJzZXMgc2Vlcy4iCiBlbGlmIHRlc3QgLWYgIiRURVJNQ0FQIgotdGhlbiAKK3RoZW4KIAllY2hvICJZb3VyIFRFUk1DQVAgbmFtZXMgdGhlIGZpbGUgJFRFUk1DQVAuICBJIHdpbGwgY29tcGlsZSB0aGF0LiIKIAlldmFsICRUSUMgJFRFUk1DQVAKIAllY2hvICJEb25lLiIKZGlmZiAtLWdpdCBhL3Byb2dzL2NsZWFyIGIvcHJvZ3MvY2xlYXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJlOGQxMjEuLjAwMDAwMDAKLS0tIGEvcHJvZ3MvY2xlYXIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wcm9ncy9jbGVhci5jIGIvcHJvZ3MvY2xlYXIuYwppbmRleCA5ZjVhNTQzLi40YWM1MDNlIDEwMDY0NAotLS0gYS9wcm9ncy9jbGVhci5jCisrKyBiL3Byb2dzL2NsZWFyLmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zOSw3ICszOSw3IEBACiAjZGVmaW5lIFVTRV9MSUJUSU5GTwogI2luY2x1ZGUgPHByb2dzLnByaXYuaD4KIAotTU9EVUxFX0lEKCIkSWQ6IGNsZWFyLmMsdiAxLjExIDIwMDcvMTAvMTMgMjI6MTY6MDIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiBjbGVhci5jLHYgMS4xMyAyMDEzLzA2LzIyIDIyOjIwOjU0IHRvbSBFeHAgJCIpCiAKIHN0YXRpYyBpbnQKIHB1dGNoKGludCBjKQpAQCAtNTIsNyArNTIsMTUgQEAKIAlpbnQgYXJnYyBHQ0NfVU5VU0VELAogCWNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCiB7CisgICAgY2hhciAqRTM7CisKICAgICBzZXR1cHRlcm0oKGNoYXIgKikgMCwgU1RET1VUX0ZJTEVOTywgKGludCAqKSAwKTsKKworICAgIC8qIENsZWFyIHRoZSBzY3JvbGxiYWNrIGJ1ZmZlciBpZiBwb3NzaWJsZS4gKi8KKyAgICBFMyA9IHRpZ2V0c3RyKCJFMyIpOworICAgIGlmIChFMykKKwkodm9pZCkgdHB1dHMoRTMsIGxpbmVzID4gMCA/IGxpbmVzIDogMSwgcHV0Y2gpOworCiAgICAgRXhpdFByb2dyYW0oKHRwdXRzKGNsZWFyX3NjcmVlbiwgbGluZXMgPiAwID8gbGluZXMgOiAxLCBwdXRjaCkgPT0gRVJSKQogCQk/IEVYSVRfRkFJTFVSRQogCQk6IEVYSVRfU1VDQ0VTUyk7CmRpZmYgLS1naXQgYS9wcm9ncy9kdW1wX2VudHJ5LmMgYi9wcm9ncy9kdW1wX2VudHJ5LmMKaW5kZXggYmQyNDIyMC4uZDU5YTkyNSAxMDA2NDQKLS0tIGEvcHJvZ3MvZHVtcF9lbnRyeS5jCisrKyBiL3Byb2dzL2R1bXBfZW50cnkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJ0ZXJtc29ydC5jIgkJLyogdGhpcyBDIGZpbGUgaXMgZ2VuZXJhdGVkICovCiAjaW5jbHVkZSA8cGFyYW1ldHJpemVkLmg+CS8qIHNvIGlzIHRoaXMgKi8KIAotTU9EVUxFX0lEKCIkSWQ6IGR1bXBfZW50cnkuYyx2IDEuODggMjAwOC8wOC8wNCAxMjozNjoxMiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGR1bXBfZW50cnkuYyx2IDEuMTE4IDIwMTUvMDcvMDcgMDg6MDY6MzkgV2VybmVyLkZpbmsgRXhwICQiKQogCiAjZGVmaW5lIElOREVOVAkJCTgKICNkZWZpbmUgRElTQ0FSRChzdHJpbmcpIHN0cmluZyA9IEFCU0VOVF9TVFJJTkcKQEAgLTU3LDkgKzU3LDExIEBACiBzdGF0aWMgaW50IG91dGZvcm07CQkvKiBvdXRwdXQgZm9ybWF0IHRvIHVzZSAqLwogc3RhdGljIGludCBzb3J0bW9kZTsJCS8qIHNvcnQgbW9kZSB0byB1c2UgKi8KIHN0YXRpYyBpbnQgd2lkdGggPSA2MDsJCS8qIG1heCBsaW5lIHdpZHRoIGZvciBsaXN0aW5ncyAqLworc3RhdGljIGludCBoZWlnaHQgPSA2NTUzNTsJLyogbWF4IG51bWJlciBvZiBsaW5lcyBmb3IgbGlzdGluZ3MgKi8KIHN0YXRpYyBpbnQgY29sdW1uOwkJLyogY3VycmVudCBjb2x1bW4sIGxpbWl0ZWQgYnkgJ3dpZHRoJyAqLwogc3RhdGljIGludCBvbGRjb2w7CQkvKiBsYXN0IHZhbHVlIG9mIGNvbHVtbiBiZWZvcmUgd3JhcCAqLwogc3RhdGljIGJvb2wgcHJldHR5OwkJLyogdHJ1ZSBpZiB3ZSBmb3JtYXQgaWYtdGhlbi1lbHNlIHN0cmluZ3MgKi8KK3N0YXRpYyBib29sIGNoZWNraW5nOwkJLyogdHJ1ZSBpZiB3ZSBhcmUgY2hlY2tpbmcgZm9yIHRpYyAqLwogCiBzdGF0aWMgY2hhciAqc2F2ZV9zZ3I7CiAKQEAgLTcyLDcgKzc0LDcgQEAKIHN0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKmNvbnN0ICpudW1fbmFtZXM7CiBzdGF0aWMgTkNVUlNFU19DT05TVCBjaGFyICpjb25zdCAqc3RyX25hbWVzOwogCi1zdGF0aWMgY29uc3QgY2hhciAqc2VwYXJhdG9yLCAqdHJhaWxlcjsKK3N0YXRpYyBjb25zdCBjaGFyICpzZXBhcmF0b3IgPSAiIiwgKnRyYWlsZXIgPSAiIjsKIAogLyogY292ZXIgdmFyaW91cyBwb3J0cyBhbmQgdmFyaWFudHMgb2YgdGVybWluZm8gKi8KICNkZWZpbmUgVl9BTExDQVBTCTAJLyogYWxsIGNhcGFiaWxpdGllcyAoU1ZyNCwgWFNJLCBuY3Vyc2VzKSAqLwpAQCAtOTksNiArMTAxLDE1IEBACiAjZGVmaW5lIFN0ckluZGlyZWN0KGopICAoKHNvcnRtb2RlID09IFNfTk9TT1JUKSA/IChqKSA6IHN0cl9pbmRpcmVjdFtqXSkKICNlbmRpZgogCitzdGF0aWMgdm9pZCBmYWlsZWQoY29uc3QgY2hhciAqKSBHQ0NfTk9SRVRVUk47CisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqcykKK3sKKyAgICBwZXJyb3Iocyk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKwogc3RhdGljIHZvaWQKIHN0cm5jcHlfRFlOKERZTkJVRiAqIGRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3QgbmVlZCkKIHsKQEAgLTEwNiw2ICsxMTcsOCBAQAogICAgIGlmICh3YW50ID4gZHN0LT5zaXplKSB7CiAJZHN0LT5zaXplICs9ICh3YW50ICsgMTAyNCk7CS8qIGJlIGdlbmVyb3VzICovCiAJZHN0LT50ZXh0ID0gdHlwZVJlYWxsb2MoY2hhciwgZHN0LT5zaXplLCBkc3QtPnRleHQpOworCWlmIChkc3QtPnRleHQgPT0gMCkKKwkgICAgZmFpbGVkKCJzdHJuY3B5X0RZTiIpOwogICAgIH0KICAgICAodm9pZCkgc3RybmNweShkc3QtPnRleHQgKyBkc3QtPnVzZWQsIHNyYywgbmVlZCk7CiAgICAgZHN0LT51c2VkICs9IG5lZWQ7CkBAIC0xNDMsMTcgKzE1NiwxNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgTmFtZVRyYW5zKGNoZWNrLHJlc3VsdCkgXAotCSAgICBpZiAoT2tJbmRleChucC0+bnRlX2luZGV4LCBjaGVjaykgXAorCSAgICBpZiAoKG5wLT5udGVfaW5kZXggPD0gT0tfICMjIGNoZWNrKSBcCiAJCSYmIGNoZWNrW25wLT5udGVfaW5kZXhdKSBcCiAJCXJldHVybiAocmVzdWx0W25wLT5udGVfaW5kZXhdKQogCiBOQ1VSU0VTX0NPTlNUIGNoYXIgKgogbmFtZXRyYW5zKGNvbnN0IGNoYXIgKm5hbWUpCi0vKiB0cmFuc2xhdGUgYSBjYXBhYmlsaXR5IG5hbWUgZnJvbSB0ZXJtY2FwIHRvIHRlcm1pbmZvICovCisvKiB0cmFuc2xhdGUgYSBjYXBhYmlsaXR5IG5hbWUgdG8gdGVybWNhcCBmcm9tIHRlcm1pbmZvICovCiB7CiAgICAgY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKm5wOwogCi0gICAgaWYgKChucCA9IF9uY19maW5kX2VudHJ5KG5hbWUsIF9uY19nZXRfaGFzaF90YWJsZSgwKSkpICE9IDApCisgICAgaWYgKChucCA9IF9uY19maW5kX2VudHJ5KG5hbWUsIF9uY19nZXRfaGFzaF90YWJsZSgwKSkpICE9IDApIHsKIAlzd2l0Y2ggKG5wLT5udGVfdHlwZSkgewogCWNhc2UgQk9PTEVBTjoKIAkgICAgTmFtZVRyYW5zKGJvb2xfZnJvbV90ZXJtY2FwLCBib29sY29kZXMpOwpAQCAtMTY3LDE3ICsxODAsMjYgQEAKIAkgICAgTmFtZVRyYW5zKHN0cl9mcm9tX3Rlcm1jYXAsIHN0cmNvZGVzKTsKIAkgICAgYnJlYWs7CiAJfQorICAgIH0KIAogICAgIHJldHVybiAoMCk7CiB9CiAKIHZvaWQKLWR1bXBfaW5pdChjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgbW9kZSwgaW50IHNvcnQsIGludCB0d2lkdGgsIGludCB0cmFjZXZhbCwKLQkgIGJvb2wgZm9ybWF0dGVkKQorZHVtcF9pbml0KGNvbnN0IGNoYXIgKnZlcnNpb24sCisJICBpbnQgbW9kZSwKKwkgIGludCBzb3J0LAorCSAgaW50IHR3aWR0aCwKKwkgIGludCB0aGVpZ2h0LAorCSAgdW5zaWduZWQgdHJhY2V2YWwsCisJICBib29sIGZvcm1hdHRlZCwKKwkgIGJvb2wgY2hlY2spCiAvKiBzZXQgdXAgZm9yIGVudHJ5IGRpc3BsYXkgKi8KIHsKICAgICB3aWR0aCA9IHR3aWR0aDsKKyAgICBoZWlnaHQgPSB0aGVpZ2h0OwogICAgIHByZXR0eSA9IGZvcm1hdHRlZDsKKyAgICBjaGVja2luZyA9IGNoZWNrOwogCiAgICAgLyogdmVyc2lvbnMgKi8KICAgICBpZiAodmVyc2lvbiA9PSAwKQpAQCAtMjAxLDcgKzIyMyw3IEBACiAJYm9vbF9uYW1lcyA9IGJvb2xuYW1lczsKIAludW1fbmFtZXMgPSBudW1uYW1lczsKIAlzdHJfbmFtZXMgPSBzdHJuYW1lczsKLQlzZXBhcmF0b3IgPSB0d2lkdGggPyAiLCAiIDogIiwiOworCXNlcGFyYXRvciA9ICh0d2lkdGggPiAwICYmIHRoZWlnaHQgPiAxKSA/ICIsICIgOiAiLCI7CiAJdHJhaWxlciA9ICJcblx0IjsKIAlicmVhazsKIApAQCAtMjA5LDcgKzIzMSw3IEBACiAJYm9vbF9uYW1lcyA9IGJvb2xmbmFtZXM7CiAJbnVtX25hbWVzID0gbnVtZm5hbWVzOwogCXN0cl9uYW1lcyA9IHN0cmZuYW1lczsKLQlzZXBhcmF0b3IgPSB0d2lkdGggPyAiLCAiIDogIiwiOworCXNlcGFyYXRvciA9ICh0d2lkdGggPiAwICYmIHRoZWlnaHQgPiAxKSA/ICIsICIgOiAiLCI7CiAJdHJhaWxlciA9ICJcblx0IjsKIAlicmVhazsKIApAQCAtMjkxLDcgKzMxMywxMSBAQAogc3RhdGljIHZvaWQgc2V0X29ic29sZXRlX3Rlcm1jYXBzKFRFUk1UWVBFICp0cCk7CiAKIC8qIGlzIHRoaXMgdGhlIGluZGV4IG9mIGEgZnVuY3Rpb24ga2V5IHN0cmluZz8gKi8KLSNkZWZpbmUgRk5LRVkoaSkJKCgoaSk8PSA2NSAmJiAoaSk+PSA3NSkgfHwgKChpKTw9IDIxNiAmJiAoaSk+PSAyNjgpKQorI2RlZmluZSBGTktFWShpKSBcCisgICAgKCgoaSkgPj0gU1RSX0lEWChrZXlfZjApICYmIFwKKyAgICAgIChpKSA8PSBTVFJfSURYKGtleV9mOSkpIHx8IFwKKyAgICAgKChpKSA+PSBTVFJfSURYKGtleV9mMTEpICYmIFwKKyAgICAgIChpKSA8PSBTVFJfSURYKGtleV9mNjMpKSkKIAogLyoKICAqIElmIHdlIGNvbmZpZ3VyZSB3aXRoIGEgZGlmZmVyZW50IENhcHMgZmlsZSwgdGhlIG9mZnNldHMgaW50byB0aGUgYXJyYXlzCkBAIC0zOTMsOCArNDE5LDggQEAKIHN0YXRpYyB2b2lkCiB3cmFwX2NvbmNhdChjb25zdCBjaGFyICpzcmMpCiB7Ci0gICAgdW5zaWduZWQgbmVlZCA9IHN0cmxlbihzcmMpOwotICAgIHVuc2lnbmVkIHdhbnQgPSBzdHJsZW4oc2VwYXJhdG9yKSArIG5lZWQ7CisgICAgc2l6ZV90IG5lZWQgPSBzdHJsZW4oc3JjKTsKKyAgICBzaXplX3Qgd2FudCA9IHN0cmxlbihzZXBhcmF0b3IpICsgbmVlZDsKIAogICAgIGlmIChjb2x1bW4gPiBJTkRFTlQKIAkmJiBjb2x1bW4gKyAoaW50KSB3YW50ID4gd2lkdGgpIHsKQEAgLTQ0NSwxMCArNDcxLDEwIEBACiAgICAgaW50IG47CiAKICAgICBmb3IgKG4gPSAwOyBuIDwgbGV2ZWw7IG4rKykKLQlzdHJuY3B5X0RZTihidWZmZXIsICJcdCIsIDEpOworCXN0cm5jcHlfRFlOKGJ1ZmZlciwgIlx0IiwgKHNpemVfdCkgMSk7CiB9CiAKLXN0YXRpYyBib29sCitib29sCiBoYXNfcGFyYW1zKGNvbnN0IGNoYXIgKnNyYykKIHsKICAgICBib29sIHJlc3VsdCA9IEZBTFNFOwpAQCAtNDU4LDkgKzQ4NCw5IEBACiAgICAgYm9vbCBwYXJhbXMgPSBGQUxTRTsKIAogICAgIGZvciAobiA9IDA7IG4gPCBsZW4gLSAxOyArK24pIHsKLQlpZiAoIXN0cm5jbXAoc3JjICsgbiwgIiVwIiwgMikpIHsKKwlpZiAoIXN0cm5jbXAoc3JjICsgbiwgIiVwIiwgKHNpemVfdCkgMikpIHsKIAkgICAgcGFyYW1zID0gVFJVRTsKLQl9IGVsc2UgaWYgKCFzdHJuY21wKHNyYyArIG4sICIlOyIsIDIpKSB7CisJfSBlbHNlIGlmICghc3RybmNtcChzcmMgKyBuLCAiJTsiLCAoc2l6ZV90KSAyKSkgewogCSAgICBpZnRoZW4gPSBUUlVFOwogCSAgICByZXN1bHQgPSBwYXJhbXM7CiAJICAgIGJyZWFrOwpAQCAtNDczLDcgKzQ5OSw3IEBACiB9CiAKIHN0YXRpYyBjaGFyICoKLWZtdF9jb21wbGV4KGNoYXIgKnNyYywgaW50IGxldmVsKQorZm10X2NvbXBsZXgoVEVSTVRZUEUgKnR0ZXJtLCBjb25zdCBjaGFyICpjYXBhYmlsaXR5LCBjaGFyICpzcmMsIGludCBsZXZlbCkKIHsKICAgICBib29sIHBlcmNlbnQgPSBGQUxTRTsKICAgICBib29sIHBhcmFtcyA9IGhhc19wYXJhbXMoc3JjKTsKQEAgLTQ4Miw3ICs1MDgsNyBAQAogCXN3aXRjaCAoKnNyYykgewogCWNhc2UgJ1xcJzoKIAkgICAgcGVyY2VudCA9IEZBTFNFOwotCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCBzcmMrKywgMSk7CisJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsIHNyYysrLCAoc2l6ZV90KSAxKTsKIAkgICAgYnJlYWs7CiAJY2FzZSAnJSc6CiAJICAgIHBlcmNlbnQgPSBUUlVFOwpAQCAtNDk2LDI2ICs1MjIsMjkgQEAKIAkJLyogdHJlYXQgYSAiJWUiIGFzIGVsc2UtaWYsIG9uIHRoZSBzYW1lIGxldmVsICovCiAJCWlmICgqc3JjID09ICdlJykgewogCQkgICAgaW5kZW50X0RZTigmdG1wYnVmLCBsZXZlbCk7Ci0JCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCAiJSIsIDEpOwotCQkgICAgc3RybmNweV9EWU4oJnRtcGJ1Ziwgc3JjLCAxKTsKKwkJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsICIlIiwgKHNpemVfdCkgMSk7CisJCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCBzcmMsIChzaXplX3QpIDEpOwogCQkgICAgc3JjKys7CiAJCSAgICBwYXJhbXMgPSBoYXNfcGFyYW1zKHNyYyk7CiAJCSAgICBpZiAoIXBhcmFtcyAmJiAqc3JjICE9ICdcMCcgJiYgKnNyYyAhPSAnJScpIHsKLQkJCXN0cm5jcHlfRFlOKCZ0bXBidWYsICJcbiIsIDEpOworCQkJc3RybmNweV9EWU4oJnRtcGJ1ZiwgIlxuIiwgKHNpemVfdCkgMSk7CiAJCQlpbmRlbnRfRFlOKCZ0bXBidWYsIGxldmVsICsgMSk7CiAJCSAgICB9CiAJCX0gZWxzZSB7CiAJCSAgICBpbmRlbnRfRFlOKCZ0bXBidWYsIGxldmVsICsgMSk7Ci0JCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCAiJSIsIDEpOwotCQkgICAgc3RybmNweV9EWU4oJnRtcGJ1Ziwgc3JjLCAxKTsKKwkJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsICIlIiwgKHNpemVfdCkgMSk7CisJCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCBzcmMsIChzaXplX3QpIDEpOwogCQkgICAgaWYgKCpzcmMrKyA9PSAnPycpIHsKLQkJCXNyYyA9IGZtdF9jb21wbGV4KHNyYywgbGV2ZWwgKyAxKTsKKwkJCXNyYyA9IGZtdF9jb21wbGV4KHR0ZXJtLCBjYXBhYmlsaXR5LCBzcmMsIGxldmVsICsgMSk7CiAJCQlpZiAoKnNyYyAhPSAnXDAnICYmICpzcmMgIT0gJyUnKSB7Ci0JCQkgICAgc3RybmNweV9EWU4oJnRtcGJ1ZiwgIlxuIiwgMSk7CisJCQkgICAgc3RybmNweV9EWU4oJnRtcGJ1ZiwgIlxuIiwgKHNpemVfdCkgMSk7CiAJCQkgICAgaW5kZW50X0RZTigmdG1wYnVmLCBsZXZlbCArIDEpOwogCQkJfQogCQkgICAgfSBlbHNlIGlmIChsZXZlbCA9PSAxKSB7Ci0JCQlfbmNfd2FybmluZygiJSUlYyB3aXRob3V0ICUlPyIsICpzcmMpOworCQkJaWYgKGNoZWNraW5nKQorCQkJICAgIF9uY193YXJuaW5nKCIlczogJSUlYyB3aXRob3V0ICUlPyBpbiAlcyIsCisJCQkJCV9uY19maXJzdF9uYW1lKHR0ZXJtLT50ZXJtX25hbWVzKSwKKwkJCQkJKnNyYywgY2FwYWJpbGl0eSk7CiAJCSAgICB9CiAJCX0KIAkJY29udGludWU7CkBAIC01MjcsMzEgKzU1Niw0MCBAQAogCQlpZiAobGV2ZWwgPiAxKSB7CiAJCSAgICB0bXBidWYudGV4dFt0bXBidWYudXNlZCAtIDFdID0gJ1xuJzsKIAkJICAgIGluZGVudF9EWU4oJnRtcGJ1ZiwgbGV2ZWwpOwotCQkgICAgc3RybmNweV9EWU4oJnRtcGJ1ZiwgIiUiLCAxKTsKLQkJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsIHNyYysrLCAxKTsKKwkJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsICIlIiwgKHNpemVfdCkgMSk7CisJCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCBzcmMrKywgKHNpemVfdCkgMSk7CisJCSAgICBpZiAoc3JjWzBdID09ICclJworCQkJJiYgc3JjWzFdICE9ICdcMCcKKwkJCSYmIChzdHJjaHIoIj9lOyIsIHNyY1sxXSkpID09IDApIHsKKwkJCXRtcGJ1Zi50ZXh0W3RtcGJ1Zi51c2VkKytdID0gJ1xuJzsKKwkJCWluZGVudF9EWU4oJnRtcGJ1ZiwgbGV2ZWwpOworCQkgICAgfQogCQkgICAgcmV0dXJuIHNyYzsKIAkJfQotCQlfbmNfd2FybmluZygiJSU7IHdpdGhvdXQgJSU/Iik7CisJCWlmIChjaGVja2luZykKKwkJICAgIF9uY193YXJuaW5nKCIlczogJSU7IHdpdGhvdXQgJSU/IGluICVzIiwKKwkJCQlfbmNfZmlyc3RfbmFtZSh0dGVybS0+dGVybV9uYW1lcyksCisJCQkJY2FwYWJpbGl0eSk7CiAJICAgIH0KIAkgICAgYnJlYWs7CiAJY2FzZSAncCc6CiAJICAgIGlmIChwZXJjZW50ICYmIHBhcmFtcykgewogCQl0bXBidWYudGV4dFt0bXBidWYudXNlZCAtIDFdID0gJ1xuJzsKIAkJaW5kZW50X0RZTigmdG1wYnVmLCBsZXZlbCArIDEpOwotCQlzdHJuY3B5X0RZTigmdG1wYnVmLCAiJSIsIDEpOworCQlzdHJuY3B5X0RZTigmdG1wYnVmLCAiJSIsIChzaXplX3QpIDEpOwogCSAgICB9CiAJICAgIHBhcmFtcyA9IEZBTFNFOwogCSAgICBwZXJjZW50ID0gRkFMU0U7CiAJICAgIGJyZWFrOwogCWNhc2UgJyAnOgotCSAgICBzdHJuY3B5X0RZTigmdG1wYnVmLCAiXFxzIiwgMik7CisJICAgIHN0cm5jcHlfRFlOKCZ0bXBidWYsICJcXHMiLCAoc2l6ZV90KSAyKTsKIAkgICAgKytzcmM7CiAJICAgIGNvbnRpbnVlOwogCWRlZmF1bHQ6CiAJICAgIHBlcmNlbnQgPSBGQUxTRTsKIAkgICAgYnJlYWs7CiAJfQotCXN0cm5jcHlfRFlOKCZ0bXBidWYsIHNyYysrLCAxKTsKKwlzdHJuY3B5X0RZTigmdG1wYnVmLCBzcmMrKywgKHNpemVfdCkgMSk7CiAgICAgfQogICAgIHJldHVybiBzcmM7CiB9CkBAIC01NjIsOSArNjAwLDkgQEAKIGludAogZm10X2VudHJ5KFRFUk1UWVBFICp0dGVybSwKIAkgIFByZWRGdW5jIHByZWQsCi0JICBib29sIGNvbnRlbnRfb25seSwKLQkgIGJvb2wgc3VwcHJlc3NfdW50cmFuc2xhdGFibGUsCi0JICBib29sIGluZm9kdW1wLAorCSAgaW50IGNvbnRlbnRfb25seSwKKwkgIGludCBzdXBwcmVzc191bnRyYW5zbGF0YWJsZSwKKwkgIGludCBpbmZvZHVtcCwKIAkgIGludCBudW1iZXJzKQogewogICAgIFByZWRJZHggaSwgajsKQEAgLTU5MywxNCArNjMxLDI4IEBACiAJY29sdW1uID0gSU5ERU5UOwkvKiBGSVhNRTogd29ya2Fyb3VuZCB0byBwcmV2ZW50IGVtcHR5IGxpbmVzICovCiAgICAgfSBlbHNlIHsKIAlzdHJjcHlfRFlOKCZvdXRidWYsIHR0ZXJtLT50ZXJtX25hbWVzKTsKKworCS8qCisJICogQ29sb24gaXMgbGVnYWwgaW4gdGVybWluZm8gZGVzY3JpcHRpb25zLCBidXQgbm90IGluIHRlcm1jYXAuCisJICovCisJaWYgKCFpbmZvZHVtcCkgeworCSAgICBjaGFyICpwID0gb3V0YnVmLnRleHQ7CisJICAgIHdoaWxlICgqcCkgeworCQlpZiAoKnAgPT0gJzonKSB7CisJCSAgICAqcCA9ICc9JzsKKwkJfQorCQkrK3A7CisJICAgIH0KKwl9CiAJc3RyY3B5X0RZTigmb3V0YnVmLCBzZXBhcmF0b3IpOwogCWNvbHVtbiA9IChpbnQpIG91dGJ1Zi51c2VkOwotCWZvcmNlX3dyYXAoKTsKKwlpZiAoaGVpZ2h0ID4gMSkKKwkgICAgZm9yY2Vfd3JhcCgpOwogICAgIH0KIAogICAgIGZvcl9lYWNoX2Jvb2xlYW4oaiwgdHRlcm0pIHsKIAlpID0gQm9vbEluZGlyZWN0KGopOwotCW5hbWUgPSBFeHRCb29sbmFtZSh0dGVybSwgaSwgYm9vbF9uYW1lcyk7CisJbmFtZSA9IEV4dEJvb2xuYW1lKHR0ZXJtLCAoaW50KSBpLCBib29sX25hbWVzKTsKIAlhc3NlcnQoc3RybGVuKG5hbWUpIDwgc2l6ZW9mKGJ1ZmZlcikgLSBFWFRSQV9DQVApOwogCiAJaWYgKCF2ZXJzaW9uX2ZpbHRlcihCT09MRUFOLCBpKSkKQEAgLTYxMCwyMSArNjYyLDIxIEBACiAKIAlwcmVkdmFsID0gcHJlZChCT09MRUFOLCBpKTsKIAlpZiAocHJlZHZhbCAhPSBGQUlMKSB7Ci0JICAgICh2b2lkKSBzdHJjcHkoYnVmZmVyLCBuYW1lKTsKKwkgICAgX25jX1NUUkNQWShidWZmZXIsIG5hbWUsIHNpemVvZihidWZmZXIpKTsKIAkgICAgaWYgKHByZWR2YWwgPD0gMCkKLQkJKHZvaWQpIHN0cmNhdChidWZmZXIsICJAIik7CisJCV9uY19TVFJDQVQoYnVmZmVyLCAiQCIsIHNpemVvZihidWZmZXIpKTsKIAkgICAgZWxzZSBpZiAoaSArIDEgPiBudW1fYm9vbHMpCiAJCW51bV9ib29scyA9IGkgKyAxOwogCSAgICBXUkFQX0NPTkNBVDsKIAl9CiAgICAgfQogCi0gICAgaWYgKGNvbHVtbiAhPSBJTkRFTlQpCisgICAgaWYgKGNvbHVtbiAhPSBJTkRFTlQgJiYgaGVpZ2h0ID4gMSkKIAlmb3JjZV93cmFwKCk7CiAKICAgICBmb3JfZWFjaF9udW1iZXIoaiwgdHRlcm0pIHsKIAlpID0gTnVtSW5kaXJlY3Qoaik7Ci0JbmFtZSA9IEV4dE51bW5hbWUodHRlcm0sIGksIG51bV9uYW1lcyk7CisJbmFtZSA9IEV4dE51bW5hbWUodHRlcm0sIChpbnQpIGksIG51bV9uYW1lcyk7CiAJYXNzZXJ0KHN0cmxlbihuYW1lKSA8IHNpemVvZihidWZmZXIpIC0gRVhUUkFfQ0FQKTsKIAogCWlmICghdmVyc2lvbl9maWx0ZXIoTlVNQkVSLCBpKSkKQEAgLTYzNSw5ICs2ODcsMTEgQEAKIAlwcmVkdmFsID0gcHJlZChOVU1CRVIsIGkpOwogCWlmIChwcmVkdmFsICE9IEZBSUwpIHsKIAkgICAgaWYgKHR0ZXJtLT5OdW1iZXJzW2ldIDwgMCkgewotCQlzcHJpbnRmKGJ1ZmZlciwgIiVzQCIsIG5hbWUpOworCQlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkgICAgIiVzQCIsIG5hbWUpOwogCSAgICB9IGVsc2UgewotCQlzcHJpbnRmKGJ1ZmZlciwgIiVzIyVkIiwgbmFtZSwgdHRlcm0tPk51bWJlcnNbaV0pOworCQlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkgICAgIiVzIyVkIiwgbmFtZSwgdHRlcm0tPk51bWJlcnNbaV0pOwogCQlpZiAoaSArIDEgPiBudW1fdmFsdWVzKQogCQkgICAgbnVtX3ZhbHVlcyA9IGkgKyAxOwogCSAgICB9CkBAIC02NDUsNyArNjk5LDcgQEAKIAl9CiAgICAgfQogCi0gICAgaWYgKGNvbHVtbiAhPSBJTkRFTlQpCisgICAgaWYgKGNvbHVtbiAhPSBJTkRFTlQgJiYgaGVpZ2h0ID4gMSkKIAlmb3JjZV93cmFwKCk7CiAKICAgICBsZW4gKz0gKGludCkgKG51bV9ib29scwpAQCAtNjcwLDcgKzcyNCw3IEBACiAKICAgICBmb3JfZWFjaF9zdHJpbmcoaiwgdHRlcm0pIHsKIAlpID0gU3RySW5kaXJlY3Qoaik7Ci0JbmFtZSA9IEV4dFN0cm5hbWUodHRlcm0sIGksIHN0cl9uYW1lcyk7CisJbmFtZSA9IEV4dFN0cm5hbWUodHRlcm0sIChpbnQpIGksIHN0cl9uYW1lcyk7CiAJYXNzZXJ0KHN0cmxlbihuYW1lKSA8IHNpemVvZihidWZmZXIpIC0gRVhUUkFfQ0FQKTsKIAogCWNhcGFiaWxpdHkgPSB0dGVybS0+U3RyaW5nc1tpXTsKQEAgLTY5OCwxNCArNzUyLDE0IEBACiAJICAgIGlmIChQUkVTRU5UKGluc2VydF9jaGFyYWN0ZXIpIHx8IFBSRVNFTlQocGFybV9pY2gpKSB7CiAJCWlmIChTQU1FX0NBUChpLCBlbnRlcl9pbnNlcnRfbW9kZSkKIAkJICAgICYmIGVudGVyX2luc2VydF9tb2RlID09IEFCU0VOVF9TVFJJTkcpIHsKLQkJICAgICh2b2lkKSBzdHJjcHkoYnVmZmVyLCAiaW09Iik7CisJCSAgICBfbmNfU1RSQ1BZKGJ1ZmZlciwgImltPSIsIHNpemVvZihidWZmZXIpKTsKIAkJICAgIFdSQVBfQ09OQ0FUOwogCQkgICAgY29udGludWU7CiAJCX0KIAogCQlpZiAoU0FNRV9DQVAoaSwgZXhpdF9pbnNlcnRfbW9kZSkKIAkJICAgICYmIGV4aXRfaW5zZXJ0X21vZGUgPT0gQUJTRU5UX1NUUklORykgewotCQkgICAgKHZvaWQpIHN0cmNweShidWZmZXIsICJlaT0iKTsKKwkJICAgIF9uY19TVFJDUFkoYnVmZmVyLCAiZWk9Iiwgc2l6ZW9mKGJ1ZmZlcikpOwogCQkgICAgV1JBUF9DT05DQVQ7CiAJCSAgICBjb250aW51ZTsKIAkJfQpAQCAtNzI0LDYgKzc3OCwxMCBAQAogCQkgICAgdHJpbW1lZF9zZ3IwID0gX25jX3RyaW1fc2dyMCh0dGVybSk7CiAJCSAgICBpZiAoc3RyY21wKGNhcGFiaWxpdHksIHRyaW1tZWRfc2dyMCkpCiAJCQljYXBhYmlsaXR5ID0gdHJpbW1lZF9zZ3IwOworCQkgICAgZWxzZSB7CisJCQlpZiAodHJpbW1lZF9zZ3IwICE9IGV4aXRfYXR0cmlidXRlX21vZGUpCisJCQkgICAgZnJlZSh0cmltbWVkX3NncjApOworCQkgICAgfQogCiAJCSAgICBzZXRfYXR0cmlidXRlcyA9IG15X3NncjsKIAkJfQpAQCAtNzM5LDI0ICs3OTcsMjkgQEAKIAkJbnVtX3N0cmluZ3MgPSBpICsgMTsKIAogCSAgICBpZiAoIVZBTElEX1NUUklORyhjYXBhYmlsaXR5KSkgewotCQlzcHJpbnRmKGJ1ZmZlciwgIiVzQCIsIG5hbWUpOworCQlfbmNfU1BSSU5URihidWZmZXIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpCisJCQkgICAgIiVzQCIsIG5hbWUpOwogCQlXUkFQX0NPTkNBVDsKIAkgICAgfSBlbHNlIGlmIChvdXRmb3JtID09IEZfVEVSTUNBUCB8fCBvdXRmb3JtID09IEZfVENPTlZFUlIpIHsKLQkJaW50IHBhcmFtcyA9ICgoaSA8IChpbnQpIFNJWkVPRihwYXJhbWV0cml6ZWQpKQotCQkJICAgICAgPyBwYXJhbWV0cml6ZWRbaV0KLQkJCSAgICAgIDogMCk7CiAJCWNoYXIgKnNyY2NhcCA9IF9uY190aWNfZXhwYW5kKGNhcGFiaWxpdHksIFRSVUUsIG51bWJlcnMpOworCQlpbnQgcGFyYW1zID0gKCgoaSA8IChpbnQpIFNJWkVPRihwYXJhbWV0cml6ZWQpKSAmJgorCQkJICAgICAgIChpIDwgU1RSQ09VTlQpKQorCQkJICAgICAgPyBwYXJhbWV0cml6ZWRbaV0KKwkJCSAgICAgIDogKCgqc3JjY2FwID09ICdrJykKKwkJCQkgPyAwCisJCQkJIDogaGFzX3BhcmFtcyhzcmNjYXApKSk7CiAJCWNoYXIgKmN2ID0gX25jX2luZm90b2NhcChuYW1lLCBzcmNjYXAsIHBhcmFtcyk7CiAKIAkJaWYgKGN2ID09IDApIHsKIAkJICAgIGlmIChvdXRmb3JtID09IEZfVENPTlZFUlIpIHsKLQkJCXNwcmludGYoYnVmZmVyLCAiJXM9ISEhICVzIFdJTEwgTk9UIENPTlZFUlQgISEhIiwKLQkJCQluYW1lLCBzcmNjYXApOworCQkJX25jX1NQUklOVEYoYnVmZmVyLCBfbmNfU0xJTUlUKHNpemVvZihidWZmZXIpKQorCQkJCSAgICAiJXM9ISEhICVzIFdJTEwgTk9UIENPTlZFUlQgISEhIiwKKwkJCQkgICAgbmFtZSwgc3JjY2FwKTsKIAkJICAgIH0gZWxzZSBpZiAoc3VwcHJlc3NfdW50cmFuc2xhdGFibGUpIHsKIAkJCWNvbnRpbnVlOwogCQkgICAgfSBlbHNlIHsKIAkJCWNoYXIgKnMgPSBzcmNjYXAsICpkID0gYnVmZmVyOwotCQkJc3ByaW50ZihkLCAiLi4lcz0iLCBuYW1lKTsKKwkJCV9uY19TUFJJTlRGKGQsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZmZlcikpICIuLiVzPSIsIG5hbWUpOwogCQkJZCArPSBzdHJsZW4oZCk7CiAJCQl3aGlsZSAoKCpkID0gKnMrKykgIT0gMCkgewogCQkJICAgIGlmICgqZCA9PSAnOicpIHsKQEAgLTc2OSw3ICs4MzIsOCBAQAogCQkJfQogCQkgICAgfQogCQl9IGVsc2UgewotCQkgICAgc3ByaW50ZihidWZmZXIsICIlcz0lcyIsIG5hbWUsIGN2KTsKKwkJICAgIF9uY19TUFJJTlRGKGJ1ZmZlciwgX25jX1NMSU1JVChzaXplb2YoYnVmZmVyKSkKKwkJCQkiJXM9JXMiLCBuYW1lLCBjdik7CiAJCX0KIAkJbGVuICs9IChpbnQpIHN0cmxlbihjYXBhYmlsaXR5KSArIDE7CiAJCVdSQVBfQ09OQ0FUOwpAQCAtNzgzLDcgKzg0Nyw3IEBACiAJCWlmIChwcmV0dHkKIAkJICAgICYmIChvdXRmb3JtID09IEZfVEVSTUlORk8KIAkJCXx8IG91dGZvcm0gPT0gRl9WQVJJQUJMRSkpIHsKLQkJICAgIGZtdF9jb21wbGV4KHNyYywgMSk7CisJCSAgICBmbXRfY29tcGxleCh0dGVybSwgbmFtZSwgc3JjLCAxKTsKIAkJfSBlbHNlIHsKIAkJICAgIHN0cmNweV9EWU4oJnRtcGJ1Ziwgc3JjKTsKIAkJfQpAQCAtNzkzLDcgKzg1Nyw5IEBACiAJICAgIH0KIAl9CiAJLyogZS5nLiwgdHJpbW1lZF9zZ3IwICovCi0JaWYgKGNhcGFiaWxpdHkgIT0gdHRlcm0tPlN0cmluZ3NbaV0pCisJaWYgKGNhcGFiaWxpdHkgIT0gQUJTRU5UX1NUUklORyAmJgorCSAgICBjYXBhYmlsaXR5ICE9IENBTkNFTExFRF9TVFJJTkcgJiYKKwkgICAgY2FwYWJpbGl0eSAhPSB0dGVybS0+U3RyaW5nc1tpXSkKIAkgICAgZnJlZShjYXBhYmlsaXR5KTsKICAgICB9CiAgICAgbGVuICs9IChpbnQpIChudW1fc3RyaW5ncyAqIDIpOwpAQCAtODA1LDExICs4NzEsMTMgQEAKICAgICAgKi8KICAgICBpZiAodHZlcnNpb24gPT0gVl9IUFVYKSB7CiAJaWYgKFZBTElEX1NUUklORyhtZW1vcnlfbG9jaykpIHsKLQkgICAgKHZvaWQpIHNwcmludGYoYnVmZmVyLCAibWVtbD0lcyIsIG1lbW9yeV9sb2NrKTsKKwkgICAgX25jX1NQUklOVEYoYnVmZmVyLCBfbmNfU0xJTUlUKHNpemVvZihidWZmZXIpKQorCQkJIm1lbWw9JXMiLCBtZW1vcnlfbG9jayk7CiAJICAgIFdSQVBfQ09OQ0FUOwogCX0KIAlpZiAoVkFMSURfU1RSSU5HKG1lbW9yeV91bmxvY2spKSB7Ci0JICAgICh2b2lkKSBzcHJpbnRmKGJ1ZmZlciwgIm1lbXU9JXMiLCBtZW1vcnlfdW5sb2NrKTsKKwkgICAgX25jX1NQUklOVEYoYnVmZmVyLCBfbmNfU0xJTUlUKHNpemVvZihidWZmZXIpKQorCQkJIm1lbXU9JXMiLCBtZW1vcnlfdW5sb2NrKTsKIAkgICAgV1JBUF9DT05DQVQ7CiAJfQogICAgIH0gZWxzZSBpZiAodHZlcnNpb24gPT0gVl9BSVgpIHsKQEAgLTgyMSw3ICs4ODksNyBAQAogCiAJICAgIHRwID0gYm94Y2hhcnM7CiAJICAgIGZvciAoY3AgPSBhY3N0cmFuczsgKmNwOyBjcCsrKSB7Ci0JCXNwID0gc3RyY2hyKGFjc19jaGFycywgKmNwKTsKKwkJc3AgPSAoc3RyY2hyKSAoYWNzX2NoYXJzLCAqY3ApOwogCQlpZiAoc3ApCiAJCSAgICAqdHArKyA9IHNwWzFdOwogCQllbHNlIHsKQEAgLTgzMiw5ICs5MDAsNDEgQEAKIAkgICAgdHBbMF0gPSAnXDAnOwogCiAJICAgIGlmIChib3hfb2spIHsKLQkJKHZvaWQpIHN0cmNweShidWZmZXIsICJib3gxPSIpOwotCQkodm9pZCkgc3RyY2F0KGJ1ZmZlciwgX25jX3RpY19leHBhbmQoYm94Y2hhcnMsCi0JCQkJCQkgICAgIG91dGZvcm0gPT0gRl9URVJNSU5GTywgbnVtYmVycykpOworCQljaGFyICp0bXAgPSBfbmNfdGljX2V4cGFuZChib3hjaGFycywKKwkJCQkJICAgKG91dGZvcm0gPT0gRl9URVJNSU5GTyksCisJCQkJCSAgIG51bWJlcnMpOworCQlfbmNfU1RSQ1BZKGJ1ZmZlciwgImJveDE9Iiwgc2l6ZW9mKGJ1ZmZlcikpOworCQl3aGlsZSAoKnRtcCAhPSAnXDAnKSB7CisJCSAgICBzaXplX3QgaGF2ZSA9IHN0cmxlbihidWZmZXIpOworCQkgICAgc2l6ZV90IG5leHQgPSBzdHJsZW4odG1wKTsKKwkJICAgIHNpemVfdCB3YW50ID0gaGF2ZSArIG5leHQgKyAxOworCQkgICAgc2l6ZV90IGxhc3QgPSBuZXh0OworCQkgICAgY2hhciBzYXZlID0gJ1wwJzsKKworCQkgICAgLyoKKwkJICAgICAqIElmIHRoZSBleHBhbmRlZCBzdHJpbmcgaXMgdG9vIGxvbmcgZm9yIHRoZSBidWZmZXIsCisJCSAgICAgKiBjaG9wIGl0IG9mZiBhbmQgc2F2ZSB0aGUgbG9jYXRpb24gd2hlcmUgd2UgY2hvcHBlZCBpdC4KKwkJICAgICAqLworCQkgICAgaWYgKHdhbnQgPj0gc2l6ZW9mKGJ1ZmZlcikpIHsKKwkJCXNhdmUgPSB0bXBbbGFzdF07CisJCQl0bXBbbGFzdF0gPSAnXDAnOworCQkgICAgfQorCQkgICAgX25jX1NUUkNBVChidWZmZXIsIHRtcCwgc2l6ZW9mKGJ1ZmZlcikpOworCisJCSAgICAvKgorCQkgICAgICogSWYgd2UgY2hvcHBlZCB0aGUgYnVmZmVyLCByZXBsYWNlIHRoZSBtaXNzaW5nIHBpZWNlIGFuZAorCQkgICAgICogc2hpZnQgZXZlcnl0aGluZyB0byBhcHBlbmQgdGhlIHJlbWFpbmRlci4KKwkJICAgICAqLworCQkgICAgaWYgKHNhdmUgIT0gJ1wwJykgeworCQkJbmV4dCA9IDA7CisJCQl0bXBbbGFzdF0gPSBzYXZlOworCQkJd2hpbGUgKCh0bXBbbmV4dF0gPSB0bXBbbGFzdCArIG5leHRdKSAhPSAnXDAnKSB7CisJCQkgICAgKytuZXh0OworCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCWJyZWFrOworCQkgICAgfQorCQl9CiAJCVdSQVBfQ09OQ0FUOwogCSAgICB9CiAJfQpAQCAtODQ2LDcgKzk0Niw3IEBACiAgICAgICovCiAgICAgaWYgKG91dGNvdW50KSB7CiAJYm9vbCB0cmltbWVkID0gRkFMU0U7Ci0JaiA9IG91dGJ1Zi51c2VkOworCWogPSAoUHJlZElkeCkgb3V0YnVmLnVzZWQ7CiAJaWYgKGogPj0gMgogCSAgICAmJiBvdXRidWYudGV4dFtqIC0gMV0gPT0gJ1x0JwogCSAgICAmJiBvdXRidWYudGV4dFtqIC0gMl0gPT0gJ1xuJykgewpAQCAtOTI2LDcgKzEwMjYsNyBAQAogICAgIGNoYXIgbmFtZVsxMF07CiAKICAgICBmb3IgKG4gPSAwOyBuIDw9IDEwOyArK24pIHsKLQlzcHJpbnRmKG5hbWUsICJsZiVkIiwgbik7CisJX25jX1NQUklOVEYobmFtZSwgX25jX1NMSU1JVChzaXplb2YobmFtZSkpICJsZiVkIiwgbik7CiAJaWYgKChjYXAgPSBmaW5kX3N0cmluZyh0dGVybSwgbmFtZSkpICE9IEFCU0VOVF9TVFJJTkcKIAkgICAgJiYga2lsbF9zdHJpbmcodHRlcm0sIGNhcCkpIHsKIAkgICAgdGFyZ2V0IC09IChpbnQpIChzdHJsZW4oY2FwKSArIDUpOwpAQCAtOTUxLDcgKzEwNTEsNyBAQAogICAgIGNoYXIgbmFtZVsxMF07CiAKICAgICBmb3IgKG4gPSA2MDsgbiA+PSAwOyAtLW4pIHsKLQlzcHJpbnRmKG5hbWUsICJrZiVkIiwgbik7CisJX25jX1NQUklOVEYobmFtZSwgX25jX1NMSU1JVChzaXplb2YobmFtZSkpICJrZiVkIiwgbik7CiAJaWYgKChjYXAgPSBmaW5kX3N0cmluZyh0dGVybSwgbmFtZSkpICE9IEFCU0VOVF9TVFJJTkcKIAkgICAgJiYga2lsbF9zdHJpbmcodHRlcm0sIGNhcCkpIHsKIAkgICAgdGFyZ2V0IC09IChpbnQpIChzdHJsZW4oY2FwKSArIDUpOwpAQCAtMTAxNyw4ICsxMTE3LDggQEAKICAqLwogdm9pZAogZHVtcF9lbnRyeShURVJNVFlQRSAqdHRlcm0sCi0JICAgYm9vbCBzdXBwcmVzc191bnRyYW5zbGF0YWJsZSwKLQkgICBib29sIGxpbWl0ZWQsCisJICAgaW50IHN1cHByZXNzX3VudHJhbnNsYXRhYmxlLAorCSAgIGludCBsaW1pdGVkLAogCSAgIGludCBudW1iZXJzLAogCSAgIFByZWRGdW5jIHByZWQpCiB7CkBAIC0xMDQwLDcgKzExNDAsNyBAQAogCiAgICAgc2F2ZV9zZ3IgPSBzZXRfYXR0cmlidXRlczsKIAotICAgIGlmICgoKGxlbiA9IEZNVF9FTlRSWSgpKSA+IGNyaXRsZW4pCisgICAgaWYgKChGTVRfRU5UUlkoKSA+IGNyaXRsZW4pCiAJJiYgbGltaXRlZCkgewogCiAJc2F2ZV90dGVybSA9ICp0dGVybTsKQEAgLTEwNDksNyArMTE0OSw3IEBACiAJCSAgICAgY3JpdGxlbik7CiAJICAgIHN1cHByZXNzX3VudHJhbnNsYXRhYmxlID0gVFJVRTsKIAl9Ci0JaWYgKChsZW4gPSBGTVRfRU5UUlkoKSkgPiBjcml0bGVuKSB7CisJaWYgKEZNVF9FTlRSWSgpID4gY3JpdGxlbikgewogCSAgICAvKgogCSAgICAgKiBXZSBwaWNrIG9uIHNnciBiZWNhdXNlIGl0J3MgYSBuaWNlIGxvbmcgc3RyaW5nIGNhcGFiaWxpdHkgdGhhdAogCSAgICAgKiBpcyByZWFsbHkganVzdCBhbiBvcHRpbWl6YXRpb24gaGFjay4gIEFub3RoZXIgZ29vZCBjYW5kaWRhdGUgaXMKQEAgLTEwNjQsNyArMTE2NCw3IEBACiAJICAgICAqLwogCSAgICB1bnNpZ25lZCBuOwogCSAgICBmb3IgKG4gPSBTVFJDT1VOVDsgbiA8IE5VTV9TVFJJTkdTKHR0ZXJtKTsgbisrKSB7Ci0JCWNvbnN0IGNoYXIgKm5hbWUgPSBFeHRTdHJuYW1lKHR0ZXJtLCBuLCBzdHJuYW1lcyk7CisJCWNvbnN0IGNoYXIgKm5hbWUgPSBFeHRTdHJuYW1lKHR0ZXJtLCAoaW50KSBuLCBzdHJuYW1lcyk7CiAKIAkJaWYgKFZBTElEX1NUUklORyh0dGVybS0+U3RyaW5nc1tuXSkpIHsKIAkJICAgIHNldF9hdHRyaWJ1dGVzID0gQUJTRU5UX1NUUklORzsKQEAgLTEwNzUsNyArMTE3NSw3IEBACiAJCQkJIGNyaXRsZW4pOwogCQkgICAgfQogCQkgICAgY2hhbmdlZCA9IFRSVUU7Ci0JCSAgICBpZiAoKGxlbiA9IEZNVF9FTlRSWSgpKSA8PSBjcml0bGVuKQorCQkgICAgaWYgKEZNVF9FTlRSWSgpIDw9IGNyaXRsZW4pCiAJCQlicmVhazsKIAkJfQogCSAgICB9CkBAIC0xMDg2LDcgKzExODYsNyBAQAogCQkJIGNyaXRsZW4pOwogCQljaGFuZ2VkID0gVFJVRTsKIAkgICAgfQotCSAgICBpZiAoIWNoYW5nZWQgfHwgKChsZW4gPSBGTVRfRU5UUlkoKSkgPiBjcml0bGVuKSkgeworCSAgICBpZiAoIWNoYW5nZWQgfHwgKEZNVF9FTlRSWSgpID4gY3JpdGxlbikpIHsKIAkJaWYgKHB1cmdlZF9hY3ModHRlcm0pKSB7CiAJCSAgICBhY3NfY2hhcnMgPSBBQlNFTlRfU1RSSU5HOwogCQkgICAgU0hPV19XSFkoIiMgKGFjc2MgcmVtb3ZlZCB0byBmaXQgZW50cnkgd2l0aGluICVkIGJ5dGVzKVxuIiwKQEAgLTEwOTQsNyArMTE5NCw3IEBACiAJCSAgICBjaGFuZ2VkID0gVFJVRTsKIAkJfQogCSAgICB9Ci0JICAgIGlmICghY2hhbmdlZCB8fCAoKGxlbiA9IEZNVF9FTlRSWSgpKSA+IGNyaXRsZW4pKSB7CisJICAgIGlmICghY2hhbmdlZCB8fCAoRk1UX0VOVFJZKCkgPiBjcml0bGVuKSkgewogCQlpbnQgb2xkdmVyc2lvbiA9IHR2ZXJzaW9uOwogCiAJCXR2ZXJzaW9uID0gVl9CU0Q7CkBAIC0xMTMwLDcgKzEyMzAsNyBAQAogICAgIH0gZWxzZSBpZiAoIXZlcnNpb25fZmlsdGVyKFNUUklORywgU1RSX0lEWChhY3NfY2hhcnMpKSkgewogCXNhdmVfdHRlcm0gPSAqdHRlcm07CiAJaWYgKHB1cmdlZF9hY3ModHRlcm0pKSB7Ci0JICAgIGxlbiA9IEZNVF9FTlRSWSgpOworCSAgICAodm9pZCkgRk1UX0VOVFJZKCk7CiAJfQogCSp0dGVybSA9IHNhdmVfdHRlcm07CiAgICAgfQpAQCAtMTE0NCwyMSArMTI0NCw0NSBAQAogCiAgICAgaWYgKG91dGZvcm0gPT0gRl9URVJNQ0FQIHx8IG91dGZvcm0gPT0gRl9UQ09OVkVSUikKIAl0cmltX3RyYWlsaW5nKCk7Ci0gICAgKHZvaWQpIHNwcmludGYoYnVmZmVyLCAiJXMlcyIsIGluZm9kdW1wID8gInVzZT0iIDogInRjPSIsIG5hbWUpOworICAgIF9uY19TUFJJTlRGKGJ1ZmZlciwgX25jX1NMSU1JVChzaXplb2YoYnVmZmVyKSkKKwkJIiVzJXMiLCBpbmZvZHVtcCA/ICJ1c2U9IiA6ICJ0Yz0iLCBuYW1lKTsKICAgICB3cmFwX2NvbmNhdChidWZmZXIpOwogfQogCiBpbnQKIHNob3dfZW50cnkodm9pZCkKIHsKLSAgICB0cmltX3RyYWlsaW5nKCk7CisgICAgLyoKKyAgICAgKiBUcmltIGFueSByZW1haW5pbmcgd2hpdGVzcGFjZS4KKyAgICAgKi8KKyAgICBpZiAob3V0YnVmLnVzZWQgIT0gMCkgeworCWJvb2wgaW5mb2R1bXAgPSAob3V0Zm9ybSAhPSBGX1RFUk1DQVAgJiYgb3V0Zm9ybSAhPSBGX1RDT05WRVJSKTsKKwljaGFyIGRlbGltID0gKGNoYXIpIChpbmZvZHVtcCA/ICcsJyA6ICc6Jyk7CisJaW50IGo7CisKKwlmb3IgKGogPSAoaW50KSBvdXRidWYudXNlZCAtIDE7IGogPiAwOyAtLWopIHsKKwkgICAgY2hhciBjaCA9IG91dGJ1Zi50ZXh0W2pdOworCSAgICBpZiAoY2ggPT0gJ1xuJykgeworCQk7CisJICAgIH0gZWxzZSBpZiAoaXNzcGFjZShVQ2hhcihjaCkpKSB7CisJCW91dGJ1Zi51c2VkID0gKHNpemVfdCkgajsKKwkgICAgfSBlbHNlIGlmICghaW5mb2R1bXAgJiYgY2ggPT0gJ1xcJykgeworCQlvdXRidWYudXNlZCA9IChzaXplX3QpIGo7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gZGVsaW0gJiYgKGogPT0gMCB8fCBvdXRidWYudGV4dFtqIC0gMV0gIT0gJ1xcJykpIHsKKwkJb3V0YnVmLnVzZWQgPSAoc2l6ZV90KSAoaiArIDEpOworCSAgICB9IGVsc2UgeworCQlicmVhazsKKwkgICAgfQorCX0KKwlvdXRidWYudGV4dFtvdXRidWYudXNlZF0gPSAnXDAnOworICAgIH0KICAgICAodm9pZCkgZnB1dHMob3V0YnVmLnRleHQsIHN0ZG91dCk7CiAgICAgcHV0Y2hhcignXG4nKTsKICAgICByZXR1cm4gKGludCkgb3V0YnVmLnVzZWQ7CiB9CiAKIHZvaWQKLWNvbXBhcmVfZW50cnkodm9pZCAoKmhvb2spIChQcmVkVHlwZSB0LCBQcmVkSWR4IGksIGNvbnN0IGNoYXIgKm5hbWUpLAorY29tcGFyZV9lbnRyeShQcmVkSG9vayBob29rLAogCSAgICAgIFRFUk1UWVBFICp0cCBHQ0NfVU5VU0VELAogCSAgICAgIGJvb2wgcXVpZXQpCiAvKiBjb21wYXJlIHR3byBlbnRyaWVzICovCkBAIC0xMTcwLDcgKzEyOTQsNyBAQAogCWZwdXRzKCIgICAgY29tcGFyaW5nIGJvb2xlYW5zLlxuIiwgc3Rkb3V0KTsKICAgICBmb3JfZWFjaF9ib29sZWFuKGosIHRwKSB7CiAJaSA9IEJvb2xJbmRpcmVjdChqKTsKLQluYW1lID0gRXh0Qm9vbG5hbWUodHAsIGksIGJvb2xfbmFtZXMpOworCW5hbWUgPSBFeHRCb29sbmFtZSh0cCwgKGludCkgaSwgYm9vbF9uYW1lcyk7CiAKIAlpZiAoaXNPYnNvbGV0ZShvdXRmb3JtLCBuYW1lKSkKIAkgICAgY29udGludWU7CkBAIC0xMTgyLDcgKzEzMDYsNyBAQAogCWZwdXRzKCIgICAgY29tcGFyaW5nIG51bWJlcnMuXG4iLCBzdGRvdXQpOwogICAgIGZvcl9lYWNoX251bWJlcihqLCB0cCkgewogCWkgPSBOdW1JbmRpcmVjdChqKTsKLQluYW1lID0gRXh0TnVtbmFtZSh0cCwgaSwgbnVtX25hbWVzKTsKKwluYW1lID0gRXh0TnVtbmFtZSh0cCwgKGludCkgaSwgbnVtX25hbWVzKTsKIAogCWlmIChpc09ic29sZXRlKG91dGZvcm0sIG5hbWUpKQogCSAgICBjb250aW51ZTsKQEAgLTExOTQsNyArMTMxOCw3IEBACiAJZnB1dHMoIiAgICBjb21wYXJpbmcgc3RyaW5ncy5cbiIsIHN0ZG91dCk7CiAgICAgZm9yX2VhY2hfc3RyaW5nKGosIHRwKSB7CiAJaSA9IFN0ckluZGlyZWN0KGopOwotCW5hbWUgPSBFeHRTdHJuYW1lKHRwLCBpLCBzdHJfbmFtZXMpOworCW5hbWUgPSBFeHRTdHJuYW1lKHRwLCAoaW50KSBpLCBzdHJfbmFtZXMpOwogCiAJaWYgKGlzT2Jzb2xldGUob3V0Zm9ybSwgbmFtZSkpCiAJICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvcHJvZ3MvZHVtcF9lbnRyeS5oIGIvcHJvZ3MvZHVtcF9lbnRyeS5oCmluZGV4IGI5OWEzN2EuLjhiMWViZDIgMTAwNjQ0Ci0tLSBhL3Byb2dzL2R1bXBfZW50cnkuaAorKysgYi9wcm9ncy9kdW1wX2VudHJ5LmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDYsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMiw5ICszMiw4IEBACiAgKiAgICAgYW5kOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMTk5Ni1vbiAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyoKLSAqICRJZDogZHVtcF9lbnRyeS5oLHYgMS4zMCAyMDA4LzA3LzEyIDIwOjIzOjAzIHRvbSBFeHAgJAorICogJElkOiBkdW1wX2VudHJ5LmgsdiAxLjM1IDIwMTUvMDUvMjcgMDA6NTY6NTQgdG9tIEV4cCAkCiAgKgogICogRHVtcCBjb250cm9sIGRlZmluaXRpb25zIGFuZCB2YXJpYWJsZXMKICAqLwpAQCAtNjQsMTYgKzYzLDE4IEBACiAKIHR5cGVkZWYgdW5zaWduZWQgUHJlZFR5cGU7CiB0eXBlZGVmIHVuc2lnbmVkIFByZWRJZHg7Ci10eXBlZGVmIGludCAoKlByZWRGdW5jKShQcmVkVHlwZSwgUHJlZElkeCk7Cit0eXBlZGVmIGludCAoKlByZWRGdW5jKSAoUHJlZFR5cGUsIFByZWRJZHgpOwordHlwZWRlZiB2b2lkICgqUHJlZEhvb2spIChQcmVkVHlwZSwgUHJlZElkeCwgY29uc3QgY2hhciAqKTsKIAogZXh0ZXJuIE5DVVJTRVNfQ09OU1QgY2hhciAqbmFtZXRyYW5zKGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gaW50IGZtdF9lbnRyeShURVJNVFlQRSAqLCBQcmVkRnVuYywgYm9vbCwgYm9vbCwgYm9vbCwgaW50KTsKK2V4dGVybiBib29sIGhhc19wYXJhbXMoY29uc3QgY2hhciAqc3JjKTsKK2V4dGVybiBpbnQgZm10X2VudHJ5KFRFUk1UWVBFICosIFByZWRGdW5jLCBpbnQsIGludCwgaW50LCBpbnQpOwogZXh0ZXJuIGludCBzaG93X2VudHJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgY29tcGFyZV9lbnRyeSh2b2lkICgqKShQcmVkVHlwZSwgUHJlZElkeCwgY29uc3QgY2hhciAqKSwgVEVSTVRZUEUgKiwgYm9vbCk7Ci1leHRlcm4gdm9pZCBkdW1wX2VudHJ5KFRFUk1UWVBFICosIGJvb2wsIGJvb2wsIGludCwgUHJlZEZ1bmMpOwotZXh0ZXJuIHZvaWQgZHVtcF9pbml0KGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIGludCwgaW50LCBib29sKTsKK2V4dGVybiB2b2lkIGNvbXBhcmVfZW50cnkoUHJlZEhvb2ssIFRFUk1UWVBFICosIGJvb2wpOworZXh0ZXJuIHZvaWQgZHVtcF9lbnRyeShURVJNVFlQRSAqLCBpbnQsIGludCwgaW50LCBQcmVkRnVuYyk7CitleHRlcm4gdm9pZCBkdW1wX2luaXQoY29uc3QgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVuc2lnbmVkLCBib29sLCBib29sKTsKIGV4dGVybiB2b2lkIGR1bXBfdXNlcyhjb25zdCBjaGFyICosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcmVwYWlyX2Fjc2MoVEVSTVRZUEUgKiB0cCk7CitleHRlcm4gdm9pZCByZXBhaXJfYWNzYyhURVJNVFlQRSAqdHApOwogCiAjZGVmaW5lIEZBSUwJLTEKIApkaWZmIC0tZ2l0IGEvcHJvZ3MvaW5mb2NtcCBiL3Byb2dzL2luZm9jbXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQyMDYwZGUuLjAwMDAwMDAKLS0tIGEvcHJvZ3MvaW5mb2NtcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Byb2dzL2luZm9jbXAuYyBiL3Byb2dzL2luZm9jbXAuYwppbmRleCA4NDk4OWZmLi5kM2ZkYzUyIDEwMDY0NAotLS0gYS9wcm9ncy9pbmZvY21wLmMKKysrIGIvcHJvZ3MvaW5mb2NtcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDIsNyArNDIsNyBAQAogCiAjaW5jbHVkZSA8ZHVtcF9lbnRyeS5oPgogCi1NT0RVTEVfSUQoIiRJZDogaW5mb2NtcC5jLHYgMS4xMDMgMjAwOC8wOC8xNiAyMjowNDo1NiB0b20gRXhwICQiKQorTU9EVUxFX0lEKCIkSWQ6IGluZm9jbXAuYyx2IDEuMTMzIDIwMTUvMDUvMjcgMDA6NTc6NDEgdG9tIEV4cCAkIikKIAogI2RlZmluZSBMX0NVUkwgInsiCiAjZGVmaW5lIFJfQ1VSTCAifSIKQEAgLTcwLDggKzcwLDkgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpzX2Fic2VudCA9ICJOVUxMIjsKIHN0YXRpYyBjb25zdCBjaGFyICpzX2NhbmNlbCA9ICJOVUxMIjsKIHN0YXRpYyBjb25zdCBjaGFyICp0dmVyc2lvbjsJLyogdGVybWluZm8gdmVyc2lvbiBzZWxlY3RlZCAqLwotc3RhdGljIGludCBpdHJhY2U7CQkvKiB0cmFjZSBmbGFnIGZvciBkZWJ1Z2dpbmcgKi8KK3N0YXRpYyB1bnNpZ25lZCBpdHJhY2U7CQkvKiB0cmFjZSBmbGFnIGZvciBkZWJ1Z2dpbmcgKi8KIHN0YXRpYyBpbnQgbXdpZHRoID0gNjA7CitzdGF0aWMgaW50IG1oZWlnaHQgPSA2NTUzNTsKIHN0YXRpYyBpbnQgbnVtYmVycyA9IDA7CQkvKiBmb3JtYXQgIiUnY2hhciciIHRvL2Zyb20gIiV7bnVtYmVyfSIgKi8KIHN0YXRpYyBpbnQgb3V0Zm9ybSA9IEZfVEVSTUlORk87CS8qIG91dHB1dCBmb3JtYXQgKi8KIHN0YXRpYyBpbnQgc29ydG1vZGU7CQkvKiBzb3J0X21vZGUgKi8KQEAgLTg2LDI3ICs4Nyw1MiBAQAogc3RhdGljIGJvb2wgaWdub3JlcGFkczsJCS8qIGlnbm9yZSBwYWQgcHJlZml4ZXMgd2hlbiBkaWZmaW5nICovCiAKICNpZiBOT19MRUFLUworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgRU5UUlkgKmhlYWQ7CisgICAgRU5UUlkgKnRhaWw7Cit9IEVOVEVSRUQ7CisKK3N0YXRpYyBFTlRFUkVEICplbnRlcmVkOworCiAjdW5kZWYgRXhpdFByb2dyYW0KIHN0YXRpYyB2b2lkIEV4aXRQcm9ncmFtKGludCBjb2RlKSBHQ0NfTk9SRVRVUk47CiAvKiBwcm90b3R5cGUgaXMgdG8gZ2V0IGdjYyB0byBhY2NlcHQgdGhlIG5vcmV0dXJuIGF0dHJpYnV0ZSAqLwogc3RhdGljIHZvaWQKIEV4aXRQcm9ncmFtKGludCBjb2RlKQogewotICAgIHdoaWxlICh0ZXJtY291bnQtLSA+IDApCi0JX25jX2ZyZWVfdGVybXR5cGUoJmVudHJpZXNbdGVybWNvdW50XS50dGVybSk7CisgICAgaW50IG47CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgdGVybWNvdW50OyArK24pIHsKKwlFTlRSWSAqbmV3X2hlYWQgPSBfbmNfaGVhZDsKKwlFTlRSWSAqbmV3X3RhaWwgPSBfbmNfdGFpbDsKKwlfbmNfaGVhZCA9IGVudGVyZWRbbl0uaGVhZDsKKwlfbmNfdGFpbCA9IGVudGVyZWRbbl0udGFpbDsKKwlfbmNfZnJlZV9lbnRyaWVzKGVudGVyZWRbbl0uaGVhZCk7CisJX25jX2hlYWQgPSBuZXdfaGVhZDsKKwlfbmNfdGFpbCA9IG5ld190YWlsOworICAgIH0KICAgICBfbmNfbGVha3NfZHVtcF9lbnRyeSgpOwogICAgIGZyZWUoZW50cmllcyk7CisgICAgZnJlZShlbnRlcmVkKTsKICAgICBfbmNfZnJlZV90aWMoY29kZSk7CiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQKK2ZhaWxlZChjb25zdCBjaGFyICpzKQoreworICAgIHBlcnJvcihzKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCiBzdGF0aWMgY2hhciAqCiBjYW5vbmljYWxfbmFtZShjaGFyICpwdHIsIGNoYXIgKmJ1ZikKIC8qIGV4dHJhY3QgdGhlIHRlcm1pbmFsIHR5cGUncyBwcmltYXJ5IG5hbWUgKi8KIHsKICAgICBjaGFyICpicDsKIAotICAgICh2b2lkKSBzdHJjcHkoYnVmLCBwdHIpOworICAgIF9uY19TVFJDUFkoYnVmLCBwdHIsIE5BTUVTSVpFKTsKICAgICBpZiAoKGJwID0gc3RyY2hyKGJ1ZiwgJ3wnKSkgIT0gMCkKIAkqYnAgPSAnXDAnOwogCkBAIC0zMDcsMTMgKzMzMywxMyBAQAogewogICAgIHN3aXRjaCAodmFsKSB7CiAgICAgY2FzZSBBQlNFTlRfTlVNRVJJQzoKLQlzdHJjcHkoYnVmLCBzX2Fic2VudCk7CisJX25jX1NUUkNQWShidWYsIHNfYWJzZW50LCBNQVhfU1RSSU5HKTsKIAlicmVhazsKICAgICBjYXNlIENBTkNFTExFRF9OVU1FUklDOgotCXN0cmNweShidWYsIHNfY2FuY2VsKTsKKwlfbmNfU1RSQ1BZKGJ1Ziwgc19jYW5jZWwsIE1BWF9TVFJJTkcpOwogCWJyZWFrOwogICAgIGRlZmF1bHQ6Ci0Jc3ByaW50ZihidWYsICIlZCIsIHZhbCk7CisJX25jX1NQUklOVEYoYnVmLCBfbmNfU0xJTUlUKE1BWF9TVFJJTkcpICIlZCIsIHZhbCk7CiAJYnJlYWs7CiAgICAgfQogfQpAQCAtMzIzLDMxICszNDksOTQgQEAKIC8qIGRpc3BsYXkgdGhlIHZhbHVlIG9mIGEgc3RyaW5nIGNhcGFiaWxpdHkgKi8KIHsKICAgICBpZiAodmFsID09IEFCU0VOVF9TVFJJTkcpCi0Jc3RyY3B5KGJ1Ziwgc19hYnNlbnQpOworCV9uY19TVFJDUFkoYnVmLCBzX2Fic2VudCwgTUFYX1NUUklORyk7CiAgICAgZWxzZSBpZiAodmFsID09IENBTkNFTExFRF9TVFJJTkcpCi0Jc3RyY3B5KGJ1Ziwgc19jYW5jZWwpOworCV9uY19TVFJDUFkoYnVmLCBzX2NhbmNlbCwgTUFYX1NUUklORyk7CiAgICAgZWxzZSB7Ci0Jc3ByaW50ZihidWYsICInJS4qcyciLCBNQVhfU1RSSU5HIC0gMywgVElDX0VYUEFORCh2YWwpKTsKKwlfbmNfU1BSSU5URihidWYsIF9uY19TTElNSVQoTUFYX1NUUklORykKKwkJICAgICInJS4qcyciLCBNQVhfU1RSSU5HIC0gMywgVElDX0VYUEFORCh2YWwpKTsKICAgICB9CiB9CiAKKy8qCisgKiBTaG93ICJjb21wYXJpbmcuLi4iIG1lc3NhZ2UgZm9yIHRoZSBnaXZlbiB0ZXJtaW5hbCBuYW1lcy4KKyAqLworc3RhdGljIHZvaWQKK3Nob3dfY29tcGFyaW5nKGNoYXIgKipuYW1lcykKK3sKKyAgICBpZiAoaXRyYWNlKSB7CisJc3dpdGNoIChjb21wYXJlKSB7CisJY2FzZSBDX0RJRkZFUkVOQ0U6CisJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiBkdW1waW5nIGRpZmZlcmVuY2VzXG4iLCBfbmNfcHJvZ25hbWUpOworCSAgICBicmVhazsKKworCWNhc2UgQ19DT01NT046CisJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiBkdW1waW5nIGNvbW1vbiBjYXBhYmlsaXRpZXNcbiIsIF9uY19wcm9nbmFtZSk7CisJICAgIGJyZWFrOworCisJY2FzZSBDX05BTkQ6CisJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiBkdW1waW5nIGRpZmZlcmVuY2VzXG4iLCBfbmNfcHJvZ25hbWUpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIGlmICgqbmFtZXMpIHsKKwlwcmludGYoImNvbXBhcmluZyAlcyIsICpuYW1lcysrKTsKKwlpZiAoKm5hbWVzKSB7CisJICAgIHByaW50ZigiIHRvICVzIiwgKm5hbWVzKyspOworCSAgICB3aGlsZSAoKm5hbWVzKSB7CisJCXByaW50ZigiLCAlcyIsICpuYW1lcysrKTsKKwkgICAgfQorCX0KKwlwcmludGYoIi5cbiIpOworICAgIH0KK30KKworLyoKKyAqIG5jdXJzZXMgc3RvcmVzIHR3byB0eXBlcyBvZiBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzOgorICogYSkgY2FwYWJpbGl0aWVzIGxpc3RlZCBwYXN0IHRoZSAiU1RPUC1IRVJFIiBjb21tZW50IGluIHRoZSBDYXBzIGZpbGUuIAorICogICAgVGhlc2UgYXJlIHVzZWQgaW4gdGhlIHRlcm1pbmZvIHNvdXJjZSBmaWxlIHRvIHByb3ZpZGUgZGF0YSBmb3IgdGVybWNhcHMsCisgKiAgICBlLmcuLCB3aGVuIHRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgY2FwYWJpbGl0eSBpbiB0ZXJtaW5mbywgYXMgd2VsbCBhcyBmb3IKKyAqICAgIHdpZGVseS11c2VkIG5vbi1zdGFuZGFyZCBjYXBhYmlsaXRpZXMuCisgKiBiKSB1c2VyLWRlZmluYWJsZSBjYXBhYmlsaXRpZXMsIHZpYSAidGljIC14Ii4KKyAqCisgKiBIb3dldmVyLCBpZiAiLXgiIGlzIG9taXR0ZWQgZnJvbSB0aGUgdGljIGNvbW1hbmQsIGJvdGggdHlwZXMgb2YKKyAqIG5vbi1zdGFuZGFyZCBjYXBhYmlsaXR5IGFyZSBub3QgbG9hZGVkIGludG8gdGhlIHRlcm1pbmZvIGRhdGFiYXNlLiAgVGhpcworICogbWFjcm8gaXMgdXNlZCBmb3IgbGltaXQtY2hlY2tzIGFnYWluc3QgdGhlIHN5bWJvbHMgdGhhdCB0aWMgdXNlcyB0byBvbWl0CisgKiB0aGUgdHdvIHR5cGVzIG9mIG5vbi1zdGFuZGFyZCBlbnRyeS4KKyAqLworI2lmIE5DVVJTRVNfWE5BTUVTCisjZGVmaW5lIGNoZWNrX3VzZXJfZGVmaW5hYmxlKG4sbGltaXQpIGlmICghX25jX3VzZXJfZGVmaW5hYmxlICYmIChuKSA+IChsaW1pdCkpIGJyZWFrCisjZWxzZQorI2RlZmluZSBjaGVja191c2VyX2RlZmluYWJsZShuLGxpbWl0KSBpZiAoKG4pID4gKGxpbWl0KSkgYnJlYWsKKyNlbmRpZgorCisvKgorICogVXNlIHRoZXNlIG1hY3JvcyB0byBzaW1wbGlmeSBsb29wcyBvbiBDX0NPTU1PTiBhbmQgQ19OQU5EOgorICovCisjZGVmaW5lIGZvcl9lYWNoX2VudHJ5KCkgd2hpbGUgKGVudHJpZXNbZXh0cmFdLnR0ZXJtLnRlcm1fbmFtZXMpCisjZGVmaW5lIG5leHRfZW50cnkgICAgICAgICAgICgmKGVudHJpZXNbZXh0cmErK10udHRlcm0pKQorCiBzdGF0aWMgdm9pZAogY29tcGFyZV9wcmVkaWNhdGUoUHJlZFR5cGUgdHlwZSwgUHJlZElkeCBpZHgsIGNvbnN0IGNoYXIgKm5hbWUpCiAvKiBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gdXNlIGZvciBlbnRyeSBkaWZmZXJlbmNlIHJlcG9ydHMgKi8KIHsKLSAgICByZWdpc3RlciBFTlRSWSAqZTEgPSAmZW50cmllc1swXTsKLSAgICByZWdpc3RlciBFTlRSWSAqZTIgPSAmZW50cmllc1sxXTsKLSAgICBjaGFyIGJ1ZjFbTUFYX1NUUklOR10sIGJ1ZjJbTUFYX1NUUklOR107CisgICAgRU5UUlkgKmUxID0gJmVudHJpZXNbMF07CisgICAgRU5UUlkgKmUyID0gJmVudHJpZXNbMV07CisgICAgY2hhciBidWYxW01BWF9TVFJJTkddOworICAgIGNoYXIgYnVmMltNQVhfU1RSSU5HXTsKICAgICBpbnQgYjEsIGIyOwogICAgIGludCBuMSwgbjI7CiAgICAgY2hhciAqczEsICpzMjsKKyAgICBib29sIGZvdW5kOworICAgIGludCBleHRyYSA9IDE7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENNUF9CT09MRUFOOgorCWNoZWNrX3VzZXJfZGVmaW5hYmxlKGlkeCwgQk9PTFdSSVRFKTsKIAliMSA9IGUxLT50dGVybS5Cb29sZWFuc1tpZHhdOwotCWIyID0gZTItPnR0ZXJtLkJvb2xlYW5zW2lkeF07CiAJc3dpdGNoIChjb21wYXJlKSB7CiAJY2FzZSBDX0RJRkZFUkVOQ0U6CisJICAgIGIyID0gbmV4dF9lbnRyeS0+Qm9vbGVhbnNbaWR4XTsKIAkgICAgaWYgKCEoYjEgPT0gQUJTRU5UX0JPT0xFQU4gJiYgYjIgPT0gQUJTRU5UX0JPT0xFQU4pICYmIGIxICE9IGIyKQogCQkodm9pZCkgcHJpbnRmKCJcdCVzOiAlcyVzJXMuXG4iLAogCQkJICAgICAgbmFtZSwKQEAgLTM1Nyw0NSArNDQ2LDkzIEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSBDX0NPTU1PTjoKLQkgICAgaWYgKGIxID09IGIyICYmIGIxICE9IEFCU0VOVF9CT09MRUFOKQotCQkodm9pZCkgcHJpbnRmKCJcdCVzPSAlcy5cbiIsIG5hbWUsIGR1bXBfYm9vbGVhbihiMSkpOworCSAgICBpZiAoYjEgIT0gQUJTRU5UX0JPT0xFQU4pIHsKKwkJZm91bmQgPSBUUlVFOworCQlmb3JfZWFjaF9lbnRyeSgpIHsKKwkJICAgIGIyID0gbmV4dF9lbnRyeS0+Qm9vbGVhbnNbaWR4XTsKKwkJICAgIGlmIChiMSAhPSBiMikgeworCQkJZm91bmQgPSBGQUxTRTsKKwkJCWJyZWFrOworCQkgICAgfQorCQl9CisJCWlmIChmb3VuZCkgeworCQkgICAgKHZvaWQpIHByaW50ZigiXHQlcz0gJXMuXG4iLCBuYW1lLCBkdW1wX2Jvb2xlYW4oYjEpKTsKKwkJfQorCSAgICB9CiAJICAgIGJyZWFrOwogCiAJY2FzZSBDX05BTkQ6Ci0JICAgIGlmIChiMSA9PSBBQlNFTlRfQk9PTEVBTiAmJiBiMiA9PSBBQlNFTlRfQk9PTEVBTikKLQkJKHZvaWQpIHByaW50ZigiXHQhJXMuXG4iLCBuYW1lKTsKKwkgICAgaWYgKGIxID09IEFCU0VOVF9CT09MRUFOKSB7CisJCWZvdW5kID0gVFJVRTsKKwkJZm9yX2VhY2hfZW50cnkoKSB7CisJCSAgICBiMiA9IG5leHRfZW50cnktPkJvb2xlYW5zW2lkeF07CisJCSAgICBpZiAoYjEgIT0gYjIpIHsKKwkJCWZvdW5kID0gRkFMU0U7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCQlpZiAoZm91bmQpIHsKKwkJICAgICh2b2lkKSBwcmludGYoIlx0ISVzLlxuIiwgbmFtZSk7CisJCX0KKwkgICAgfQogCSAgICBicmVhazsKIAl9CiAJYnJlYWs7CiAKICAgICBjYXNlIENNUF9OVU1CRVI6CisJY2hlY2tfdXNlcl9kZWZpbmFibGUoaWR4LCBOVU1XUklURSk7CiAJbjEgPSBlMS0+dHRlcm0uTnVtYmVyc1tpZHhdOwotCW4yID0gZTItPnR0ZXJtLk51bWJlcnNbaWR4XTsKLQlkdW1wX251bWVyaWMobjEsIGJ1ZjEpOwotCWR1bXBfbnVtZXJpYyhuMiwgYnVmMik7CiAJc3dpdGNoIChjb21wYXJlKSB7CiAJY2FzZSBDX0RJRkZFUkVOQ0U6Ci0JICAgIGlmICghKChuMSA9PSBBQlNFTlRfTlVNRVJJQyAmJiBuMiA9PSBBQlNFTlRfTlVNRVJJQykpICYmIG4xICE9IG4yKQorCSAgICBuMiA9IG5leHRfZW50cnktPk51bWJlcnNbaWR4XTsKKwkgICAgaWYgKCEoKG4xID09IEFCU0VOVF9OVU1FUklDICYmIG4yID09IEFCU0VOVF9OVU1FUklDKSkgJiYgbjEgIT0gbjIpIHsKKwkJZHVtcF9udW1lcmljKG4xLCBidWYxKTsKKwkJZHVtcF9udW1lcmljKG4yLCBidWYyKTsKIAkJKHZvaWQpIHByaW50ZigiXHQlczogJXMsICVzLlxuIiwgbmFtZSwgYnVmMSwgYnVmMik7CisJICAgIH0KIAkgICAgYnJlYWs7CiAKIAljYXNlIENfQ09NTU9OOgotCSAgICBpZiAobjEgIT0gQUJTRU5UX05VTUVSSUMgJiYgbjIgIT0gQUJTRU5UX05VTUVSSUMgJiYgbjEgPT0gbjIpCi0JCSh2b2lkKSBwcmludGYoIlx0JXM9ICVzLlxuIiwgbmFtZSwgYnVmMSk7CisJICAgIGlmIChuMSAhPSBBQlNFTlRfTlVNRVJJQykgeworCQlmb3VuZCA9IFRSVUU7CisJCWZvcl9lYWNoX2VudHJ5KCkgeworCQkgICAgbjIgPSBuZXh0X2VudHJ5LT5OdW1iZXJzW2lkeF07CisJCSAgICBpZiAobjEgIT0gbjIpIHsKKwkJCWZvdW5kID0gRkFMU0U7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCQlpZiAoZm91bmQpIHsKKwkJICAgIGR1bXBfbnVtZXJpYyhuMSwgYnVmMSk7CisJCSAgICAodm9pZCkgcHJpbnRmKCJcdCVzPSAlcy5cbiIsIG5hbWUsIGJ1ZjEpOworCQl9CisJICAgIH0KIAkgICAgYnJlYWs7CiAKIAljYXNlIENfTkFORDoKLQkgICAgaWYgKG4xID09IEFCU0VOVF9OVU1FUklDICYmIG4yID09IEFCU0VOVF9OVU1FUklDKQotCQkodm9pZCkgcHJpbnRmKCJcdCElcy5cbiIsIG5hbWUpOworCSAgICBpZiAobjEgPT0gQUJTRU5UX05VTUVSSUMpIHsKKwkJZm91bmQgPSBUUlVFOworCQlmb3JfZWFjaF9lbnRyeSgpIHsKKwkJICAgIG4yID0gbmV4dF9lbnRyeS0+TnVtYmVyc1tpZHhdOworCQkgICAgaWYgKG4xICE9IG4yKSB7CisJCQlmb3VuZCA9IEZBTFNFOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkJaWYgKGZvdW5kKSB7CisJCSAgICAodm9pZCkgcHJpbnRmKCJcdCElcy5cbiIsIG5hbWUpOworCQl9CisJICAgIH0KIAkgICAgYnJlYWs7CiAJfQogCWJyZWFrOwogCiAgICAgY2FzZSBDTVBfU1RSSU5HOgorCWNoZWNrX3VzZXJfZGVmaW5hYmxlKGlkeCwgU1RSV1JJVEUpOwogCXMxID0gZTEtPnR0ZXJtLlN0cmluZ3NbaWR4XTsKLQlzMiA9IGUyLT50dGVybS5TdHJpbmdzW2lkeF07CiAJc3dpdGNoIChjb21wYXJlKSB7CiAJY2FzZSBDX0RJRkZFUkVOQ0U6CisJICAgIHMyID0gbmV4dF9lbnRyeS0+U3RyaW5nc1tpZHhdOwogCSAgICBpZiAoY2FwY21wKGlkeCwgczEsIHMyKSkgewogCQlkdW1wX3N0cmluZyhzMSwgYnVmMSk7CiAJCWR1bXBfc3RyaW5nKHMyLCBidWYyKTsKQEAgLTQwNSwxMyArNTQyLDM1IEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSBDX0NPTU1PTjoKLQkgICAgaWYgKHMxICYmIHMyICYmICFjYXBjbXAoaWR4LCBzMSwgczIpKQotCQkodm9pZCkgcHJpbnRmKCJcdCVzPSAnJXMnLlxuIiwgbmFtZSwgVElDX0VYUEFORChzMSkpOworCSAgICBpZiAoczEgIT0gQUJTRU5UX1NUUklORykgeworCQlmb3VuZCA9IFRSVUU7CisJCWZvcl9lYWNoX2VudHJ5KCkgeworCQkgICAgczIgPSBuZXh0X2VudHJ5LT5TdHJpbmdzW2lkeF07CisJCSAgICBpZiAoY2FwY21wKGlkeCwgczEsIHMyKSAhPSAwKSB7CisJCQlmb3VuZCA9IEZBTFNFOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkJaWYgKGZvdW5kKSB7CisJCSAgICAodm9pZCkgcHJpbnRmKCJcdCVzPSAnJXMnLlxuIiwgbmFtZSwgVElDX0VYUEFORChzMSkpOworCQl9CisJICAgIH0KIAkgICAgYnJlYWs7CiAKIAljYXNlIENfTkFORDoKLQkgICAgaWYgKCFzMSAmJiAhczIpCi0JCSh2b2lkKSBwcmludGYoIlx0ISVzLlxuIiwgbmFtZSk7CisJICAgIGlmIChzMSA9PSBBQlNFTlRfU1RSSU5HKSB7CisJCWZvdW5kID0gVFJVRTsKKwkJZm9yX2VhY2hfZW50cnkoKSB7CisJCSAgICBzMiA9IG5leHRfZW50cnktPlN0cmluZ3NbaWR4XTsKKwkJICAgIGlmIChzMiAhPSBzMSkgeworCQkJZm91bmQgPSBGQUxTRTsKKwkJCWJyZWFrOworCQkgICAgfQorCQl9CisJCWlmIChmb3VuZCkgeworCQkgICAgKHZvaWQpIHByaW50ZigiXHQhJXMuXG4iLCBuYW1lKTsKKwkJfQorCSAgICB9CiAJICAgIGJyZWFrOwogCX0KIAlicmVhazsKQEAgLTQzMCwxNiArNTg5LDM3IEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSBDX0NPTU1PTjoKLQkgICAgaWYgKGUxLT5udXNlcyAmJiBlMi0+bnVzZXMgJiYgdXNlZXEoZTEsIGUyKSkgewotCQkodm9pZCkgZnB1dHMoIlx0dXNlOiAiLCBzdGRvdXQpOwotCQlwcmludF91c2VzKGUxLCBzdGRvdXQpOwotCQlmcHV0cygiLlxuIiwgc3Rkb3V0KTsKKwkgICAgaWYgKGUxLT5udXNlcykgeworCQlmb3VuZCA9IFRSVUU7CisJCWZvcl9lYWNoX2VudHJ5KCkgeworCQkgICAgZTIgPSAmZW50cmllc1tleHRyYSsrXTsKKwkJICAgIGlmIChlMi0+bnVzZXMgIT0gZTEtPm51c2VzIHx8ICF1c2VlcShlMSwgZTIpKSB7CisJCQlmb3VuZCA9IEZBTFNFOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkJaWYgKGZvdW5kKSB7CisJCSAgICAodm9pZCkgZnB1dHMoIlx0dXNlOiAiLCBzdGRvdXQpOworCQkgICAgcHJpbnRfdXNlcyhlMSwgc3Rkb3V0KTsKKwkJICAgIGZwdXRzKCIuXG4iLCBzdGRvdXQpOworCQl9CiAJICAgIH0KIAkgICAgYnJlYWs7CiAKIAljYXNlIENfTkFORDoKLQkgICAgaWYgKCFlMS0+bnVzZXMgJiYgIWUyLT5udXNlcykKLQkJKHZvaWQpIHByaW50ZigiXHQhdXNlLlxuIik7CisJICAgIGlmICghZTEtPm51c2VzKSB7CisJCWZvdW5kID0gVFJVRTsKKwkJZm9yX2VhY2hfZW50cnkoKSB7CisJCSAgICBlMiA9ICZlbnRyaWVzW2V4dHJhKytdOworCQkgICAgaWYgKGUyLT5udXNlcyAhPSBlMS0+bnVzZXMpIHsKKwkJCWZvdW5kID0gRkFMU0U7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCQlpZiAoZm91bmQpIHsKKwkJICAgICh2b2lkKSBwcmludGYoIlx0IXVzZS5cbiIpOworCQl9CisJICAgIH0KIAkgICAgYnJlYWs7CiAJfQogICAgIH0KQEAgLTQ1MSw5OSArNjMxLDEwNCBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNkZWZpbmUgREFUQShmcm9tLCB0bykgeyB7IGZyb20gfSwgeyB0byB9IH0KKyNkZWZpbmUgREFUQVgoKSAgICAgICAgREFUQSgiIiwgIiIpCisKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBjaGFyICpmcm9tOwotICAgIGNvbnN0IGNoYXIgKnRvOworICAgIGNvbnN0IGNoYXIgZnJvbVs0XTsKKyAgICBjb25zdCBjaGFyIHRvWzEyXTsKIH0gYXNzb2M7CiAKIHN0YXRpYyBjb25zdCBhc3NvYyBzdGRfY2Fwc1tdID0KIHsKICAgICAvKiB0aGVzZSBhcmUgc3BlY2lmaWVkIGJ5IFguMzY0IGFuZCBpQkNTMiAqLwotICAgIHsiXDAzM2MiLCAiUklTIn0sCQkvKiBmdWxsIHJlc2V0ICovCi0gICAgeyJcMDMzNyIsICJTQyJ9LAkJLyogc2F2ZSBjdXJzb3IgKi8KLSAgICB7IlwwMzM4IiwgIlJDIn0sCQkvKiByZXN0b3JlIGN1cnNvciAqLwotICAgIHsiXDAzM1tyIiwgIlJTUiJ9LAkJLyogbm90IGFuIFguMzY0IG1uZW1vbmljICovCi0gICAgeyJcMDMzW20iLCAiU0dSMCJ9LAkJLyogbm90IGFuIFguMzY0IG1uZW1vbmljICovCi0gICAgeyJcMDMzWzJKIiwgIkVEMiJ9LAkJLyogY2xlYXIgcGFnZSAqLworICAgIERBVEEoIlwwMzNjIiwgIlJJUyIpLAkvKiBmdWxsIHJlc2V0ICovCisgICAgREFUQSgiXDAzMzciLCAiU0MiKSwJLyogc2F2ZSBjdXJzb3IgKi8KKyAgICBEQVRBKCJcMDMzOCIsICJSQyIpLAkvKiByZXN0b3JlIGN1cnNvciAqLworICAgIERBVEEoIlwwMzNbciIsICJSU1IiKSwJLyogbm90IGFuIFguMzY0IG1uZW1vbmljICovCisgICAgREFUQSgiXDAzM1ttIiwgIlNHUjAiKSwJLyogbm90IGFuIFguMzY0IG1uZW1vbmljICovCisgICAgREFUQSgiXDAzM1sySiIsICJFRDIiKSwJLyogY2xlYXIgcGFnZSAqLwogCiAgICAgLyogdGhpcyBncm91cCBpcyBzcGVjaWZpZWQgYnkgSVNPIDIwMjIgKi8KLSAgICB7IlwwMzMoMCIsICJJU08gREVDIEcwIn0sCS8qIGVuYWJsZSBERUMgZ3JhcGhpY3MgZm9yIEcwICovCi0gICAgeyJcMDMzKEEiLCAiSVNPIFVLIEcwIn0sCS8qIGVuYWJsZSBVSyBjaGFycyBmb3IgRzAgKi8KLSAgICB7IlwwMzMoQiIsICJJU08gVVMgRzAifSwJLyogZW5hYmxlIFVTIGNoYXJzIGZvciBHMCAqLwotICAgIHsiXDAzMykwIiwgIklTTyBERUMgRzEifSwJLyogZW5hYmxlIERFQyBncmFwaGljcyBmb3IgRzEgKi8KLSAgICB7IlwwMzMpQSIsICJJU08gVUsgRzEifSwJLyogZW5hYmxlIFVLIGNoYXJzIGZvciBHMSAqLwotICAgIHsiXDAzMylCIiwgIklTTyBVUyBHMSJ9LAkvKiBlbmFibGUgVVMgY2hhcnMgZm9yIEcxICovCisgICAgREFUQSgiXDAzMygwIiwgIklTTyBERUMgRzAiKSwJLyogZW5hYmxlIERFQyBncmFwaGljcyBmb3IgRzAgKi8KKyAgICBEQVRBKCJcMDMzKEEiLCAiSVNPIFVLIEcwIiksCS8qIGVuYWJsZSBVSyBjaGFycyBmb3IgRzAgKi8KKyAgICBEQVRBKCJcMDMzKEIiLCAiSVNPIFVTIEcwIiksCS8qIGVuYWJsZSBVUyBjaGFycyBmb3IgRzAgKi8KKyAgICBEQVRBKCJcMDMzKTAiLCAiSVNPIERFQyBHMSIpLAkvKiBlbmFibGUgREVDIGdyYXBoaWNzIGZvciBHMSAqLworICAgIERBVEEoIlwwMzMpQSIsICJJU08gVUsgRzEiKSwJLyogZW5hYmxlIFVLIGNoYXJzIGZvciBHMSAqLworICAgIERBVEEoIlwwMzMpQiIsICJJU08gVVMgRzEiKSwJLyogZW5hYmxlIFVTIGNoYXJzIGZvciBHMSAqLwogCiAgICAgLyogdGhlc2UgYXJlIERFQyBwcml2YXRlIGNvbnRyb2xzIHdpZGVseSBzdXBwb3J0ZWQgYnkgZW11bGF0b3JzICovCi0gICAgeyJcMDMzPSIsICJERUNQQU0ifSwJLyogYXBwbGljYXRpb24ga2V5cGFkIG1vZGUgKi8KLSAgICB7IlwwMzM+IiwgIkRFQ1BOTSJ9LAkvKiBub3JtYWwga2V5cGFkIG1vZGUgKi8KLSAgICB7IlwwMzM8IiwgIkRFQ0FOU0kifSwJLyogZW50ZXIgQU5TSSBtb2RlICovCi0gICAgeyJcMDMzWyFwIiwgIkRFQ1NUUiJ9LAkvKiBzb2Z0IHJlc2V0ICovCi0gICAgeyJcMDMzIEYiLCAiUzdDMVQifSwJLyogNy1iaXQgY29udHJvbHMgKi8KKyAgICBEQVRBKCJcMDMzPSIsICJERUNQQU0iKSwJLyogYXBwbGljYXRpb24ga2V5cGFkIG1vZGUgKi8KKyAgICBEQVRBKCJcMDMzPiIsICJERUNQTk0iKSwJLyogbm9ybWFsIGtleXBhZCBtb2RlICovCisgICAgREFUQSgiXDAzMzwiLCAiREVDQU5TSSIpLAkvKiBlbnRlciBBTlNJIG1vZGUgKi8KKyAgICBEQVRBKCJcMDMzWyFwIiwgIkRFQ1NUUiIpLAkvKiBzb2Z0IHJlc2V0ICovCisgICAgREFUQSgiXDAzMyBGIiwgIlM3QzFUIiksCS8qIDctYml0IGNvbnRyb2xzICovCiAKLSAgICB7KGNoYXIgKikgMCwgKGNoYXIgKikgMH0KKyAgICBEQVRBWCgpCiB9OwogCiBzdGF0aWMgY29uc3QgYXNzb2Mgc3RkX21vZGVzW10gPQogLyogRUNNQSBcRVsgLi4uIFtobF0gbW9kZXMgcmVjb2duaXplZCBieSBtYW55IGVtdWxhdG9ycyAqLwogewotICAgIHsiMiIsICJBTSJ9LAkJLyoga2V5Ym9hcmQgYWN0aW9uIG1vZGUgKi8KLSAgICB7IjQiLCAiSVJNIn0sCQkvKiBpbnNlcnQvcmVwbGFjZSBtb2RlICovCi0gICAgeyIxMiIsICJTUk0ifSwJCS8qIHNlbmQvcmVjZWl2ZSBtb2RlICovCi0gICAgeyIyMCIsICJMTk0ifSwJCS8qIGxpbmVmZWVkIG1vZGUgKi8KLSAgICB7KGNoYXIgKikgMCwgKGNoYXIgKikgMH0KKyAgICBEQVRBKCIyIiwgIkFNIiksCQkvKiBrZXlib2FyZCBhY3Rpb24gbW9kZSAqLworICAgIERBVEEoIjQiLCAiSVJNIiksCQkvKiBpbnNlcnQvcmVwbGFjZSBtb2RlICovCisgICAgREFUQSgiMTIiLCAiU1JNIiksCQkvKiBzZW5kL3JlY2VpdmUgbW9kZSAqLworICAgIERBVEEoIjIwIiwgIkxOTSIpLAkJLyogbGluZWZlZWQgbW9kZSAqLworICAgIERBVEFYKCkKIH07CiAKIHN0YXRpYyBjb25zdCBhc3NvYyBwcml2YXRlX21vZGVzW10gPQogLyogREVDIFxFWyAuLi4gW2hsXSBtb2RlcyByZWNvZ25pemVkIGJ5IG1hbnkgZW11bGF0b3JzICovCiB7Ci0gICAgeyIxIiwgIkNLTSJ9LAkJLyogYXBwbGljYXRpb24gY3Vyc29yIGtleXMgKi8KLSAgICB7IjIiLCAiQU5NIn0sCQkvKiBzZXQgVlQ1MiBtb2RlICovCi0gICAgeyIzIiwgIkNPTE0ifSwJCS8qIDEzMi1jb2x1bW4gbW9kZSAqLwotICAgIHsiNCIsICJTQ0xNIn0sCQkvKiBzbW9vdGggc2Nyb2xsICovCi0gICAgeyI1IiwgIlNDTk0ifSwJCS8qIHJldmVyc2UgdmlkZW8gbW9kZSAqLwotICAgIHsiNiIsICJPTSJ9LAkJLyogb3JpZ2luIG1vZGUgKi8KLSAgICB7IjciLCAiQVdNIn0sCQkvKiB3cmFwYXJvdW5kIG1vZGUgKi8KLSAgICB7IjgiLCAiQVJNIn0sCQkvKiBhdXRvLXJlcGVhdCBtb2RlICovCi0gICAgeyhjaGFyICopIDAsIChjaGFyICopIDB9CisgICAgREFUQSgiMSIsICJDS00iKSwJCS8qIGFwcGxpY2F0aW9uIGN1cnNvciBrZXlzICovCisgICAgREFUQSgiMiIsICJBTk0iKSwJCS8qIHNldCBWVDUyIG1vZGUgKi8KKyAgICBEQVRBKCIzIiwgIkNPTE0iKSwJCS8qIDEzMi1jb2x1bW4gbW9kZSAqLworICAgIERBVEEoIjQiLCAiU0NMTSIpLAkJLyogc21vb3RoIHNjcm9sbCAqLworICAgIERBVEEoIjUiLCAiU0NOTSIpLAkJLyogcmV2ZXJzZSB2aWRlbyBtb2RlICovCisgICAgREFUQSgiNiIsICJPTSIpLAkJLyogb3JpZ2luIG1vZGUgKi8KKyAgICBEQVRBKCI3IiwgIkFXTSIpLAkJLyogd3JhcGFyb3VuZCBtb2RlICovCisgICAgREFUQSgiOCIsICJBUk0iKSwJCS8qIGF1dG8tcmVwZWF0IG1vZGUgKi8KKyAgICBEQVRBWCgpCiB9OwogCiBzdGF0aWMgY29uc3QgYXNzb2MgZWNtYV9oaWdobGlnaHRzW10gPQogLyogcmVjb2duaXplIEVDTUEgYXR0cmlidXRlIHNlcXVlbmNlcyAqLwogewotICAgIHsiMCIsICJOT1JNQUwifSwJCS8qIG5vcm1hbCAqLwotICAgIHsiMSIsICIrQk9MRCJ9LAkJLyogYm9sZCBvbiAqLwotICAgIHsiMiIsICIrRElNIn0sCQkvKiBkaW0gb24gKi8KLSAgICB7IjMiLCAiK0lUQUxJQyJ9LAkJLyogaXRhbGljIG9uICovCi0gICAgeyI0IiwgIitVTkRFUkxJTkUifSwJLyogdW5kZXJsaW5lIG9uICovCi0gICAgeyI1IiwgIitCTElOSyJ9LAkJLyogYmxpbmsgb24gKi8KLSAgICB7IjYiLCAiK0ZBU1RCTElOSyJ9LAkvKiBmYXN0Ymxpbmsgb24gKi8KLSAgICB7IjciLCAiK1JFVkVSU0UifSwJCS8qIHJldmVyc2Ugb24gKi8KLSAgICB7IjgiLCAiK0lOVklTSUJMRSJ9LAkvKiBpbnZpc2libGUgb24gKi8KLSAgICB7IjkiLCAiK0RFTEVURUQifSwJCS8qIGRlbGV0ZWQgb24gKi8KLSAgICB7IjEwIiwgIk1BSU4tRk9OVCJ9LAkvKiBzZWxlY3QgcHJpbWFyeSBmb250ICovCi0gICAgeyIxMSIsICJBTFQtRk9OVC0xIn0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAxICovCi0gICAgeyIxMiIsICJBTFQtRk9OVC0yIn0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAyICovCi0gICAgeyIxMyIsICJBTFQtRk9OVC0zIn0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAzICovCi0gICAgeyIxNCIsICJBTFQtRk9OVC00In0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCA0ICovCi0gICAgeyIxNSIsICJBTFQtRk9OVC01In0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCA1ICovCi0gICAgeyIxNiIsICJBTFQtRk9OVC02In0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCA2ICovCi0gICAgeyIxNyIsICJBTFQtRk9OVC03In0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCA3ICovCi0gICAgeyIxOCIsICJBTFQtRk9OVC0xIn0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAxICovCi0gICAgeyIxOSIsICJBTFQtRk9OVC0xIn0sCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAxICovCi0gICAgeyIyMCIsICJGUkFLVFVSIn0sCQkvKiBGcmFrdHVyIGZvbnQgKi8KLSAgICB7IjIxIiwgIkRPVUJMRVVOREVSIn0sCS8qIGRvdWJsZSB1bmRlcmxpbmUgKi8KLSAgICB7IjIyIiwgIi1ESU0ifSwJCS8qIGRpbSBvZmYgKi8KLSAgICB7IjIzIiwgIi1JVEFMSUMifSwJCS8qIGl0YWxpYyBvZmYgKi8KLSAgICB7IjI0IiwgIi1VTkRFUkxJTkUifSwJLyogdW5kZXJsaW5lIG9mZiAqLwotICAgIHsiMjUiLCAiLUJMSU5LIn0sCQkvKiBibGluayBvZmYgKi8KLSAgICB7IjI2IiwgIi1GQVNUQkxJTksifSwJLyogZmFzdGJsaW5rIG9mZiAqLwotICAgIHsiMjciLCAiLVJFVkVSU0UifSwJCS8qIHJldmVyc2Ugb2ZmICovCi0gICAgeyIyOCIsICItSU5WSVNJQkxFIn0sCS8qIGludmlzaWJsZSBvZmYgKi8KLSAgICB7IjI5IiwgIi1ERUxFVEVEIn0sCQkvKiBkZWxldGVkIG9mZiAqLwotICAgIHsoY2hhciAqKSAwLCAoY2hhciAqKSAwfQorICAgIERBVEEoIjAiLCAiTk9STUFMIiksCS8qIG5vcm1hbCAqLworICAgIERBVEEoIjEiLCAiK0JPTEQiKSwJCS8qIGJvbGQgb24gKi8KKyAgICBEQVRBKCIyIiwgIitESU0iKSwJCS8qIGRpbSBvbiAqLworICAgIERBVEEoIjMiLCAiK0lUQUxJQyIpLAkvKiBpdGFsaWMgb24gKi8KKyAgICBEQVRBKCI0IiwgIitVTkRFUkxJTkUiKSwJLyogdW5kZXJsaW5lIG9uICovCisgICAgREFUQSgiNSIsICIrQkxJTksiKSwJLyogYmxpbmsgb24gKi8KKyAgICBEQVRBKCI2IiwgIitGQVNUQkxJTksiKSwJLyogZmFzdGJsaW5rIG9uICovCisgICAgREFUQSgiNyIsICIrUkVWRVJTRSIpLAkvKiByZXZlcnNlIG9uICovCisgICAgREFUQSgiOCIsICIrSU5WSVNJQkxFIiksCS8qIGludmlzaWJsZSBvbiAqLworICAgIERBVEEoIjkiLCAiK0RFTEVURUQiKSwJLyogZGVsZXRlZCBvbiAqLworICAgIERBVEEoIjEwIiwgIk1BSU4tRk9OVCIpLAkvKiBzZWxlY3QgcHJpbWFyeSBmb250ICovCisgICAgREFUQSgiMTEiLCAiQUxULUZPTlQtMSIpLAkvKiBzZWxlY3QgYWx0ZXJuYXRlIGZvbnQgMSAqLworICAgIERBVEEoIjEyIiwgIkFMVC1GT05ULTIiKSwJLyogc2VsZWN0IGFsdGVybmF0ZSBmb250IDIgKi8KKyAgICBEQVRBKCIxMyIsICJBTFQtRk9OVC0zIiksCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAzICovCisgICAgREFUQSgiMTQiLCAiQUxULUZPTlQtNCIpLAkvKiBzZWxlY3QgYWx0ZXJuYXRlIGZvbnQgNCAqLworICAgIERBVEEoIjE1IiwgIkFMVC1GT05ULTUiKSwJLyogc2VsZWN0IGFsdGVybmF0ZSBmb250IDUgKi8KKyAgICBEQVRBKCIxNiIsICJBTFQtRk9OVC02IiksCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCA2ICovCisgICAgREFUQSgiMTciLCAiQUxULUZPTlQtNyIpLAkvKiBzZWxlY3QgYWx0ZXJuYXRlIGZvbnQgNyAqLworICAgIERBVEEoIjE4IiwgIkFMVC1GT05ULTEiKSwJLyogc2VsZWN0IGFsdGVybmF0ZSBmb250IDEgKi8KKyAgICBEQVRBKCIxOSIsICJBTFQtRk9OVC0xIiksCS8qIHNlbGVjdCBhbHRlcm5hdGUgZm9udCAxICovCisgICAgREFUQSgiMjAiLCAiRlJBS1RVUiIpLAkvKiBGcmFrdHVyIGZvbnQgKi8KKyAgICBEQVRBKCIyMSIsICJET1VCTEVVTkRFUiIpLAkvKiBkb3VibGUgdW5kZXJsaW5lICovCisgICAgREFUQSgiMjIiLCAiLURJTSIpLAkJLyogZGltIG9mZiAqLworICAgIERBVEEoIjIzIiwgIi1JVEFMSUMiKSwJLyogaXRhbGljIG9mZiAqLworICAgIERBVEEoIjI0IiwgIi1VTkRFUkxJTkUiKSwJLyogdW5kZXJsaW5lIG9mZiAqLworICAgIERBVEEoIjI1IiwgIi1CTElOSyIpLAkvKiBibGluayBvZmYgKi8KKyAgICBEQVRBKCIyNiIsICItRkFTVEJMSU5LIiksCS8qIGZhc3RibGluayBvZmYgKi8KKyAgICBEQVRBKCIyNyIsICItUkVWRVJTRSIpLAkvKiByZXZlcnNlIG9mZiAqLworICAgIERBVEEoIjI4IiwgIi1JTlZJU0lCTEUiKSwJLyogaW52aXNpYmxlIG9mZiAqLworICAgIERBVEEoIjI5IiwgIi1ERUxFVEVEIiksCS8qIGRlbGV0ZWQgb2ZmICovCisgICAgREFUQVgoKQogfTsKIAorI3VuZGVmIERBVEEKKwogc3RhdGljIGludAogc2tpcF9jc2koY29uc3QgY2hhciAqY2FwKQogewpAQCAtNTU2LDcgKzc0MSw3IEBACiB9CiAKIHN0YXRpYyBib29sCi1zYW1lX3BhcmFtKGNvbnN0IGNoYXIgKnRhYmxlLCBjb25zdCBjaGFyICpwYXJhbSwgdW5zaWduZWQgbGVuZ3RoKQorc2FtZV9wYXJhbShjb25zdCBjaGFyICp0YWJsZSwgY29uc3QgY2hhciAqcGFyYW0sIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKICAgICBpZiAoc3RybmNtcCh0YWJsZSwgcGFyYW0sIGxlbmd0aCkgPT0gMCkgewpAQCAtNTc3LDE5ICs3NjIsMTkgQEAKIAlkbyB7CiAJICAgIGJvb2wgZm91bmQgPSBGQUxTRTsKIAotCSAgICBmb3IgKGFwID0gdGFibGU7IGFwLT5mcm9tOyBhcCsrKSB7CisJICAgIGZvciAoYXAgPSB0YWJsZTsgYXAtPmZyb21bMF07IGFwKyspIHsKIAkJc2l6ZV90IHRsZW4gPSBzdHJsZW4oYXAtPmZyb20pOwogCiAJCWlmIChzYW1lX3BhcmFtKGFwLT5mcm9tLCBlcCwgdGxlbikpIHsKLQkJICAgICh2b2lkKSBzdHJjYXQoZHN0LCBhcC0+dG8pOworCQkgICAgX25jX1NUUkNBVChkc3QsIGFwLT50bywgTUFYX1RFUk1JTkZPX0xFTkdUSCk7CiAJCSAgICBmb3VuZCA9IFRSVUU7CiAJCSAgICBicmVhazsKIAkJfQogCSAgICB9CiAKIAkgICAgaWYgKCFmb3VuZCkKLQkJKHZvaWQpIHN0cmNhdChkc3QsIGVwKTsKLQkgICAgKHZvaWQpIHN0cmNhdChkc3QsICI7Iik7CisJCV9uY19TVFJDQVQoZHN0LCBlcCwgTUFYX1RFUk1JTkZPX0xFTkdUSCk7CisJICAgIF9uY19TVFJDQVQoZHN0LCAiOyIsIE1BWF9URVJNSU5GT19MRU5HVEgpOwogCX0gd2hpbGUKIAkgICAgKChlcCA9IHN0cnRvaygoY2hhciAqKSAwLCAiOyIpKSk7CiAKQEAgLTYwOCw3ICs3OTMsNyBAQAogICAgIGNvbnN0IGFzc29jICphcDsKICAgICBpbnQgdHBfbGluZXMgPSB0cC0+TnVtYmVyc1syXTsKIAotICAgIGlmIChjYXAgPT0gQUJTRU5UX1NUUklORyB8fCBjYXAgPT0gQ0FOQ0VMTEVEX1NUUklORykKKyAgICBpZiAoIVZBTElEX1NUUklORyhjYXApKQogCXJldHVybjsKICAgICAodm9pZCkgcHJpbnRmKCIlczogIiwgbmFtZSk7CiAKQEAgLTYyNCwxMiArODA5LDEzIEBACiAJZm9yIChpID0gMDsgaSA8IFNUUkNPVU5UOyBpKyspIHsKIAkgICAgY2hhciAqY3AgPSB0cC0+U3RyaW5nc1tpXTsKIAotCSAgICAvKiBkb24ndCB1c2Ugc29mdC1rZXkgY2FwYWJpbGl0aWVzICovCi0JICAgIGlmIChzdHJuYW1lc1tpXVswXSA9PSAnaycgJiYgc3RybmFtZXNbaV1bMF0gPT0gJ2YnKQorCSAgICAvKiBkb24ndCB1c2UgZnVuY3Rpb24ta2V5IGNhcGFiaWxpdGllcyAqLworCSAgICBpZiAoc3RybmFtZXNbaV1bMF0gPT0gJ2snICYmIHN0cm5hbWVzW2ldWzFdID09ICdmJykKIAkJY29udGludWU7CiAKLQkgICAgaWYgKGNwICE9IEFCU0VOVF9TVFJJTkcgJiYgY3AgIT0gQ0FOQ0VMTEVEX1NUUklORyAmJiBjcFswXSAmJiBjcAotCQkhPSBjYXApIHsKKwkgICAgaWYgKFZBTElEX1NUUklORyhjcCkgJiYKKwkJY3BbMF0gIT0gJ1wwJyAmJgorCQljcCAhPSBjYXApIHsKIAkJbGVuID0gc3RybGVuKGNwKTsKIAkJKHZvaWQpIHN0cm5jcHkoYnVmMiwgc3AsIGxlbik7CiAJCWJ1ZjJbbGVuXSA9ICdcMCc7CkBAIC02MzcsNyArODIzLDcgQEAKIAkJaWYgKF9uY19jYXBjbXAoY3AsIGJ1ZjIpKQogCQkgICAgY29udGludWU7CiAKLSNkZWZpbmUgSVNSUyhzKQkoIXN0cm5jbXAoKHMpLCAiaXMiLCAyKSB8fCAhc3RybmNtcCgocyksICJycyIsIDIpKQorI2RlZmluZSBJU1JTKHMpCSghc3RybmNtcCgocyksICJpcyIsIChzaXplX3QpIDIpIHx8ICFzdHJuY21wKChzKSwgInJzIiwgKHNpemVfdCkgMikpCiAJCS8qCiAJCSAqIFRoZW9yZXRpY2FsbHkgd2UganVzdCBwYXNzZWQgdGhlIHRlc3QgZm9yIHRyYW5zbGF0aW9uCiAJCSAqIChlcXVhbGl0eSBvbmNlIHRoZSBwYWRkaW5nIGlzIHN0cmlwcGVkKS4gIEhvd2V2ZXIsIHRoZXJlCkBAIC02NTgsNyArODQ0LDcgQEAKIAkvKiBub3cgY2hlY2sgdGhlIHN0YW5kYXJkIGNhcGFiaWxpdGllcyAqLwogCWlmICghZXhwYW5zaW9uKSB7CiAJICAgIGNzaSA9IHNraXBfY3NpKHNwKTsKLQkgICAgZm9yIChhcCA9IHN0ZF9jYXBzOyBhcC0+ZnJvbTsgYXArKykgeworCSAgICBmb3IgKGFwID0gc3RkX2NhcHM7IGFwLT5mcm9tWzBdOyBhcCsrKSB7CiAJCXNpemVfdCBhZGogPSAoc2l6ZV90KSAoY3NpID8gMiA6IDApOwogCiAJCWxlbiA9IHN0cmxlbihhcC0+ZnJvbSk7CkBAIC02NzcsMTIgKzg2MywxNiBAQAogCS8qIG5vdyBjaGVjayBmb3Igc3RhbmRhcmQtbW9kZSBzZXF1ZW5jZXMgKi8KIAlpZiAoIWV4cGFuc2lvbgogCSAgICAmJiAoY3NpID0gc2tpcF9jc2koc3ApKSAhPSAwCi0JICAgICYmIChsZW4gPSBzdHJzcG4oc3AgKyBjc2ksICIwMTIzNDU2Nzg5OyIpKQorCSAgICAmJiAobGVuID0gKHN0cnNwbikgKHNwICsgY3NpLCAiMDEyMzQ1Njc4OTsiKSkKIAkgICAgJiYgKGxlbiA8IHNpemVvZihidWYzKSkKIAkgICAgJiYgKG5leHQgPSAoc2l6ZV90KSBjc2kgKyBsZW4pCiAJICAgICYmICgoc3BbbmV4dF0gPT0gJ2gnKSB8fCAoc3BbbmV4dF0gPT0gJ2wnKSkpIHsKIAotCSAgICAodm9pZCkgc3RyY3B5KGJ1ZjIsIChzcFtuZXh0XSA9PSAnaCcpID8gIkVDTUErIiA6ICJFQ01BLSIpOworCSAgICBfbmNfU1RSQ1BZKGJ1ZjIsCisJCSAgICAgICAoKHNwW25leHRdID09ICdoJykKKwkJCT8gIkVDTUErIgorCQkJOiAiRUNNQS0iKSwKKwkJICAgICAgIHNpemVvZihidWYyKSk7CiAJICAgICh2b2lkKSBzdHJuY3B5KGJ1ZjMsIHNwICsgY3NpLCBsZW4pOwogCSAgICBidWYzW2xlbl0gPSAnXDAnOwogCSAgICBsZW4gKz0gKHNpemVfdCkgY3NpICsgMTsKQEAgLTY5NCwxMiArODg0LDE2IEBACiAJaWYgKCFleHBhbnNpb24KIAkgICAgJiYgKGNzaSA9IHNraXBfY3NpKHNwKSkgIT0gMAogCSAgICAmJiBzcFtjc2ldID09ICc/JwotCSAgICAmJiAobGVuID0gc3Ryc3BuKHNwICsgY3NpICsgMSwgIjAxMjM0NTY3ODk7IikpCisJICAgICYmIChsZW4gPSAoc3Ryc3BuKSAoc3AgKyBjc2kgKyAxLCAiMDEyMzQ1Njc4OTsiKSkKIAkgICAgJiYgKGxlbiA8IHNpemVvZihidWYzKSkKIAkgICAgJiYgKG5leHQgPSAoc2l6ZV90KSBjc2kgKyAxICsgbGVuKQogCSAgICAmJiAoKHNwW25leHRdID09ICdoJykgfHwgKHNwW25leHRdID09ICdsJykpKSB7CiAKLQkgICAgKHZvaWQpIHN0cmNweShidWYyLCAoc3BbbmV4dF0gPT0gJ2gnKSA/ICJERUMrIiA6ICJERUMtIik7CisJICAgIF9uY19TVFJDUFkoYnVmMiwKKwkJICAgICAgICgoc3BbbmV4dF0gPT0gJ2gnKQorCQkJPyAiREVDKyIKKwkJCTogIkRFQy0iKSwKKwkJICAgICAgIHNpemVvZihidWYyKSk7CiAJICAgICh2b2lkKSBzdHJuY3B5KGJ1ZjMsIHNwICsgY3NpICsgMSwgbGVuKTsKIAkgICAgYnVmM1tsZW5dID0gJ1wwJzsKIAkgICAgbGVuICs9IChzaXplX3QpIGNzaSArIDI7CkBAIC03MTAsMTIgKzkwNCwxMiBAQAogCS8qIG5vdyBjaGVjayBmb3IgRUNNQSBoaWdobGlnaHQgc2VxdWVuY2VzICovCiAJaWYgKCFleHBhbnNpb24KIAkgICAgJiYgKGNzaSA9IHNraXBfY3NpKHNwKSkgIT0gMAotCSAgICAmJiAobGVuID0gc3Ryc3BuKHNwICsgY3NpLCAiMDEyMzQ1Njc4OTsiKSkgIT0gMAorCSAgICAmJiAobGVuID0gKHN0cnNwbikgKHNwICsgY3NpLCAiMDEyMzQ1Njc4OTsiKSkgIT0gMAogCSAgICAmJiAobGVuIDwgc2l6ZW9mKGJ1ZjMpKQogCSAgICAmJiAobmV4dCA9IChzaXplX3QpIGNzaSArIGxlbikKIAkgICAgJiYgc3BbbmV4dF0gPT0gJ20nKSB7CiAKLQkgICAgKHZvaWQpIHN0cmNweShidWYyLCAiU0dSOiIpOworCSAgICBfbmNfU1RSQ1BZKGJ1ZjIsICJTR1I6Iiwgc2l6ZW9mKGJ1ZjIpKTsKIAkgICAgKHZvaWQpIHN0cm5jcHkoYnVmMywgc3AgKyBjc2ksIGxlbik7CiAJICAgIGJ1ZjNbbGVuXSA9ICdcMCc7CiAJICAgIGxlbiArPSAoc2l6ZV90KSBjc2kgKyAxOwpAQCAtNzI3LDggKzkyMSw4IEBACiAJICAgICYmIChjc2kgPSBza2lwX2NzaShzcCkpICE9IDAKIAkgICAgJiYgc3BbY3NpXSA9PSAnbScpIHsKIAkgICAgbGVuID0gKHNpemVfdCkgY3NpICsgMTsKLQkgICAgKHZvaWQpIHN0cmNweShidWYyLCAiU0dSOiIpOwotCSAgICBzdHJjYXQoYnVmMiwgZWNtYV9oaWdobGlnaHRzWzBdLnRvKTsKKwkgICAgX25jX1NUUkNQWShidWYyLCAiU0dSOiIsIHNpemVvZihidWYyKSk7CisJICAgIF9uY19TVFJDQVQoYnVmMiwgZWNtYV9oaWdobGlnaHRzWzBdLnRvLCBzaXplb2YoYnVmMikpOwogCSAgICBleHBhbnNpb24gPSBidWYyOwogCX0KIApAQCAtNzM5LDcgKzkzMyw3IEBACiAJCWV4cGFuc2lvbiA9ICJSU1IiOwogCQlsZW4gPSAxOwogCSAgICB9IGVsc2UgewotCQkodm9pZCkgc3ByaW50ZihidWYyLCAiMTslZHIiLCB0cF9saW5lcyk7CisJCV9uY19TUFJJTlRGKGJ1ZjIsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZjIpKSAiMTslZHIiLCB0cF9saW5lcyk7CiAJCWxlbiA9IHN0cmxlbihidWYyKTsKIAkJaWYgKHN0cm5jbXAoYnVmMiwgc3AgKyBjc2ksIGxlbikgPT0gMCkKIAkJICAgIGV4cGFuc2lvbiA9ICJSU1IiOwpAQCAtNzUwLDEyICs5NDQsMTIgQEAKIAkvKiBub3cgY2hlY2sgZm9yIGhvbWUtZG93biAqLwogCWlmICghZXhwYW5zaW9uCiAJICAgICYmIChjc2kgPSBza2lwX2NzaShzcCkpICE9IDApIHsKLQkgICAgKHZvaWQpIHNwcmludGYoYnVmMiwgIiVkOzFIIiwgdHBfbGluZXMpOworCSAgICBfbmNfU1BSSU5URihidWYyLCBfbmNfU0xJTUlUKHNpemVvZihidWYyKSkgIiVkOzFIIiwgdHBfbGluZXMpOwogCSAgICBsZW4gPSBzdHJsZW4oYnVmMik7CiAJICAgIGlmIChzdHJuY21wKGJ1ZjIsIHNwICsgY3NpLCBsZW4pID09IDApIHsKIAkJZXhwYW5zaW9uID0gIkxMIjsKIAkgICAgfSBlbHNlIHsKLQkJKHZvaWQpIHNwcmludGYoYnVmMiwgIiVkSCIsIHRwX2xpbmVzKTsKKwkJX25jX1NQUklOVEYoYnVmMiwgX25jX1NMSU1JVChzaXplb2YoYnVmMikpICIlZEgiLCB0cF9saW5lcyk7CiAJCWxlbiA9IHN0cmxlbihidWYyKTsKIAkJaWYgKHN0cm5jbXAoYnVmMiwgc3AgKyBjc2ksIGxlbikgPT0gMCkgewogCQkgICAgZXhwYW5zaW9uID0gIkxMIjsKQEAgLTc5NSwxMiArOTg5LDE2IEBACiAgICAgaW50IGksIG47CiAKICAgICBtZW1zZXQoaGVhZHMsIDAsIHNpemVvZihoZWFkcykpOwotICAgIGR1bXBfaW5pdCgoY2hhciAqKSAwLCBGX0xJVEVSQUwsIFNfVEVSTUlORk8sIDAsIGl0cmFjZSwgRkFMU0UpOworICAgIGR1bXBfaW5pdCgoY2hhciAqKSAwLCBGX0xJVEVSQUwsIFNfVEVSTUlORk8sIDAsIDY1NTM1LCBpdHJhY2UsIEZBTFNFLCBGQUxTRSk7CiAKICAgICBmb3IgKG4gPSAwOyBuIDwgYXJnYyAmJiBuIDwgTUFYQ09NUEFSRTsgbisrKSB7CiAJaWYgKGZyZW9wZW4oYXJndltuXSwgInIiLCBzdGRpbikgPT0gMCkKIAkgICAgX25jX2Vycl9hYm9ydCgiQ2FuJ3Qgb3BlbiAlcyIsIGFyZ3Zbbl0pOwogCisjaWYgTk9fTEVBS1MKKwllbnRlcmVkW25dLmhlYWQgPSBfbmNfaGVhZDsKKwllbnRlcmVkW25dLnRhaWwgPSBfbmNfdGFpbDsKKyNlbmRpZgogCV9uY19oZWFkID0gX25jX3RhaWwgPSAwOwogCiAJLyogcGFyc2UgZW50cmllcyBvdXQgb2YgdGhlIHNvdXJjZSBmaWxlICovCkBAIC04OTQsOCArMTA5Miw2IEBACiAKICAgICAodm9pZCkgcHJpbnRmKCJUaGUgZm9sbG93aW5nIGVudHJpZXMgYXJlIGVxdWl2YWxlbnQ6XG4iKTsKICAgICBmb3IgKHFwID0gaGVhZHNbMF07IHFwOyBxcCA9IHFwLT5uZXh0KSB7Ci0JcnAgPSBxcC0+Y3Jvc3NsaW5rc1swXTsKLQogCWlmIChxcC0+bmNyb3NzbGlua3MgPT0gMSkgewogCSAgICBycCA9IHFwLT5jcm9zc2xpbmtzWzBdOwogCkBAIC05MjcsNiArMTEyMywxMSBAQAogI2VuZGlmCiAJICAgIGlmICghKGVudHJ5ZXEoJnFwLT50dGVybSwgJnJwLT50dGVybSkgJiYgdXNlZXEocXAsIHJwKSkpIHsKIAkJY2hhciBuYW1lMVtOQU1FU0laRV0sIG5hbWUyW05BTUVTSVpFXTsKKwkJY2hhciAqbmFtZXNbM107CisKKwkJbmFtZXNbMF0gPSBuYW1lMTsKKwkJbmFtZXNbMV0gPSBuYW1lMjsKKwkJbmFtZXNbMl0gPSAwOwogCiAJCWVudHJpZXNbMF0gPSAqcXA7CiAJCWVudHJpZXNbMV0gPSAqcnA7CkBAIC05MzYsMjkgKzExMzcsMTcgQEAKIAogCQlzd2l0Y2ggKGNvbXBhcmUpIHsKIAkJY2FzZSBDX0RJRkZFUkVOQ0U6Ci0JCSAgICBpZiAoaXRyYWNlKQotCQkJKHZvaWQpIGZwcmludGYoc3RkZXJyLAotCQkJCSAgICAgICAiJXM6IGR1bXBpbmcgZGlmZmVyZW5jZXNcbiIsCi0JCQkJICAgICAgIF9uY19wcm9nbmFtZSk7Ci0JCSAgICAodm9pZCkgcHJpbnRmKCJjb21wYXJpbmcgJXMgdG8gJXMuXG4iLCBuYW1lMSwgbmFtZTIpOworCQkgICAgc2hvd19jb21wYXJpbmcobmFtZXMpOwogCQkgICAgY29tcGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVudHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAJCSAgICBicmVhazsKIAogCQljYXNlIENfQ09NTU9OOgotCQkgICAgaWYgKGl0cmFjZSkKLQkJCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKLQkJCQkgICAgICAgIiVzOiBkdW1waW5nIGNvbW1vbiBjYXBhYmlsaXRpZXNcbiIsCi0JCQkJICAgICAgIF9uY19wcm9nbmFtZSk7Ci0JCSAgICAodm9pZCkgcHJpbnRmKCJjb21wYXJpbmcgJXMgdG8gJXMuXG4iLCBuYW1lMSwgbmFtZTIpOworCQkgICAgc2hvd19jb21wYXJpbmcobmFtZXMpOwogCQkgICAgY29tcGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVudHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAJCSAgICBicmVhazsKIAogCQljYXNlIENfTkFORDoKLQkJICAgIGlmIChpdHJhY2UpCi0JCQkodm9pZCkgZnByaW50ZihzdGRlcnIsCi0JCQkJICAgICAgICIlczogZHVtcGluZyBkaWZmZXJlbmNlc1xuIiwKLQkJCQkgICAgICAgX25jX3Byb2duYW1lKTsKLQkJICAgICh2b2lkKSBwcmludGYoImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIG5hbWUxLCBuYW1lMik7CisJCSAgICBzaG93X2NvbXBhcmluZyhuYW1lcyk7CiAJCSAgICBjb21wYXJlX2VudHJ5KGNvbXBhcmVfcHJlZGljYXRlLCAmZW50cmllcy0+dHRlcm0sIHF1aWV0KTsKIAkJICAgIGJyZWFrOwogCkBAIC05NzEsMTkgKzExNjAsMjggQEAKIHN0YXRpYyB2b2lkCiB1c2FnZSh2b2lkKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisjZGVmaW5lIERBVEEocykgcyAiXG4iCisgICAgc3RhdGljIGNvbnN0IGNoYXIgaGVhZFtdID0KICAgICB7Ci0JIlVzYWdlOiBpbmZvY21wIFtvcHRpb25zXSBbLUEgZGlyZWN0b3J5XSBbLUIgZGlyZWN0b3J5XSBbdGVybW5hbWUuLi5dIgotCSwiIgotCSwiT3B0aW9uczoiCisJREFUQSgiVXNhZ2U6IGluZm9jbXAgW29wdGlvbnNdIFstQSBkaXJlY3RvcnldIFstQiBkaXJlY3RvcnldIFt0ZXJtbmFtZS4uLl0iKQorCURBVEEoIiIpCisJREFUQSgiT3B0aW9uczoiKQorICAgIH07CisjdW5kZWYgREFUQQorI2RlZmluZSBEQVRBKHMpIHMKKyAgICBzdGF0aWMgY29uc3QgY2hhciBvcHRpb25zW11bNDVdID0KKyAgICB7CisJIiAgLTAgICAgcHJpbnQgc2luZ2xlLXJvdyIKIAksIiAgLTEgICAgcHJpbnQgc2luZ2xlLWNvbHVtbiIKKwksIiAgLUsgICAgdXNlIHRlcm1jYXAtbmFtZXMgYW5kIEJTRCBzeW50YXgiCiAJLCIgIC1DICAgIHVzZSB0ZXJtY2FwLW5hbWVzIgogCSwiICAtRiAgICBjb21wYXJlIHRlcm1pbmZvLWZpbGVzIgogCSwiICAtSSAgICB1c2UgdGVybWluZm8tbmFtZXMiCiAJLCIgIC1MICAgIHVzZSBsb25nIG5hbWVzIgogCSwiICAtUiBzdWJzZXQgKHNlZSBtYW5wYWdlKSIKIAksIiAgLVQgICAgZWxpbWluYXRlIHNpemUgbGltaXRzICh0ZXN0KSIKLQksIiAgLVUgICAgZWxpbWluYXRlIHBvc3QtcHJvY2Vzc2luZyBvZiBlbnRyaWVzIgorCSwiICAtVSAgICBkbyBub3QgcG9zdC1wcm9jZXNzIGVudHJpZXMiCisJLCIgIC1EICAgIHByaW50IGRhdGFiYXNlIGxvY2F0aW9ucyIKIAksIiAgLVYgICAgcHJpbnQgdmVyc2lvbiIKICNpZiBOQ1VSU0VTX1hOQU1FUwogCSwiICAtYSAgICB3aXRoIC1GLCBsaXN0IGNvbW1lbnRlZC1vdXQgY2FwcyIKQEAgLTEwMTAsMjAgKzEyMDgsMjEgQEAKIAksIiAgLXYgbnVtYmVyICAodmVyYm9zZSkiCiAJLCIgIC13IG51bWJlciAgKHdpZHRoKSIKICNpZiBOQ1VSU0VTX1hOQU1FUwotCSwiICAteCAgICB0cmVhdCB1bmtub3duIGNhcGFiaWxpdGllcyBhcyB1c2VyLWRlZmluZWQiCisJLCIgIC14ICAgIHVua25vd24gY2FwYWJpbGl0aWVzIGFyZSB1c2VyLWRlZmluZWQiCiAjZW5kaWYKICAgICB9OwotICAgIGNvbnN0IHNpemVfdCBmaXJzdCA9IDM7Ci0gICAgY29uc3Qgc2l6ZV90IGxhc3QgPSBTSVpFT0YodGJsKTsKLSAgICBjb25zdCBzaXplX3QgbGVmdCA9IChsYXN0IC0gZmlyc3QgKyAxKSAvIDIgKyBmaXJzdDsKKyN1bmRlZiBEQVRBCisgICAgY29uc3Qgc2l6ZV90IGxhc3QgPSBTSVpFT0Yob3B0aW9ucyk7CisgICAgY29uc3Qgc2l6ZV90IGxlZnQgPSAobGFzdCArIDEpIC8gMjsKICAgICBzaXplX3QgbjsKIAorICAgIGZwdXRzKGhlYWQsIHN0ZGVycik7CiAgICAgZm9yIChuID0gMDsgbiA8IGxlZnQ7IG4rKykgewotCXNpemVfdCBtID0gKG4gPCBmaXJzdCkgPyBsYXN0IDogbiArIGxlZnQgLSBmaXJzdDsKKwlzaXplX3QgbSA9IG4gKyBsZWZ0OwogCWlmIChtIDwgbGFzdCkKLQkgICAgZnByaW50ZihzdGRlcnIsICIlLTQwLjQwcyVzXG4iLCB0Ymxbbl0sIHRibFttXSk7CisJICAgIGZwcmludGYoc3RkZXJyLCAiJS00MC40MHMlc1xuIiwgb3B0aW9uc1tuXSwgb3B0aW9uc1ttXSk7CiAJZWxzZQotCSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworCSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBvcHRpb25zW25dKTsKICAgICB9CiAgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKIH0KQEAgLTEwMzIsMTkgKzEyMzEsMjUgQEAKIGFueV9pbml0aWFsaXplcihjb25zdCBjaGFyICpmbXQsIGNvbnN0IGNoYXIgKnR5cGUpCiB7CiAgICAgc3RhdGljIGNoYXIgKmluaXRpYWxpemVyOworICAgIHN0YXRpYyBzaXplX3QgbmVlZDsKICAgICBjaGFyICpzOwogCi0gICAgaWYgKGluaXRpYWxpemVyID09IDApCi0JaW5pdGlhbGl6ZXIgPSAoY2hhciAqKSBtYWxsb2Moc3RybGVuKGVudHJpZXMtPnR0ZXJtLnRlcm1fbmFtZXMpICsKLQkJCQkgICAgICBzdHJsZW4odHlwZSkgKyBzdHJsZW4oZm10KSk7CisgICAgaWYgKGluaXRpYWxpemVyID09IDApIHsKKwluZWVkID0gKHN0cmxlbihlbnRyaWVzLT50dGVybS50ZXJtX25hbWVzKQorCQkrIHN0cmxlbih0eXBlKQorCQkrIHN0cmxlbihmbXQpKTsKKwlpbml0aWFsaXplciA9IChjaGFyICopIG1hbGxvYyhuZWVkICsgMSk7CisJaWYgKGluaXRpYWxpemVyID09IDApCisJICAgIGZhaWxlZCgiYW55X2luaXRpYWxpemVyIik7CisgICAgfQogCi0gICAgKHZvaWQpIHN0cmNweShpbml0aWFsaXplciwgZW50cmllcy0+dHRlcm0udGVybV9uYW1lcyk7CisgICAgX25jX1NUUkNQWShpbml0aWFsaXplciwgZW50cmllcy0+dHRlcm0udGVybV9uYW1lcywgbmVlZCk7CiAgICAgZm9yIChzID0gaW5pdGlhbGl6ZXI7ICpzICE9IDAgJiYgKnMgIT0gJ3wnOyBzKyspIHsKIAlpZiAoIWlzYWxudW0oVUNoYXIoKnMpKSkKIAkgICAgKnMgPSAnXyc7CiAgICAgfQogICAgICpzID0gMDsKLSAgICAodm9pZCkgc3ByaW50ZihzLCBmbXQsIHR5cGUpOworICAgIF9uY19TUFJJTlRGKHMsIF9uY19TTElNSVQobmVlZCkgZm10LCB0eXBlKTsKICAgICByZXR1cm4gaW5pdGlhbGl6ZXI7CiB9CiAKQEAgLTEwNzUsOSArMTI4MCwxMCBAQAogCiAJaWYgKFZBTElEX1NUUklORyh0ZXJtLT5TdHJpbmdzW25dKSkgewogCSAgICB0cCA9IGJ1ZjsKKyNkZWZpbmUgVFBfTElNSVQJKChNQVhfU1RSSU5HIC0gNSkgLSAoc2l6ZV90KSh0cCAtIGJ1ZikpCiAJICAgICp0cCsrID0gJyInOwogCSAgICBmb3IgKHNwID0gdGVybS0+U3RyaW5nc1tuXTsKLQkJICpzcCAhPSAwICYmICh0cCAtIGJ1ZikgPCBNQVhfU1RSSU5HIC0gNjsKKwkJICpzcCAhPSAwICYmIFRQX0xJTUlUID4gMjsKIAkJIHNwKyspIHsKIAkJaWYgKGlzYXNjaWkoVUNoYXIoKnNwKSkKIAkJICAgICYmIGlzcHJpbnQoVUNoYXIoKnNwKSkKQEAgLTEwODUsMTQgKzEyOTEsMTUgQEAKIAkJICAgICYmICpzcCAhPSAnIicpCiAJCSAgICAqdHArKyA9ICpzcDsKIAkJZWxzZSB7Ci0JCSAgICAodm9pZCkgc3ByaW50Zih0cCwgIlxcJTAzbyIsIFVDaGFyKCpzcCkpOworCQkgICAgX25jX1NQUklOVEYodHAsIF9uY19TTElNSVQoVFBfTElNSVQpICJcXCUwM28iLCBVQ2hhcigqc3ApKTsKIAkJICAgIHRwICs9IDQ7CiAJCX0KIAkgICAgfQogCSAgICAqdHArKyA9ICciJzsKIAkgICAgKnRwID0gJ1wwJzsKIAkgICAgKHZvaWQpIHByaW50Zigic3RhdGljIGNoYXIgJS0yMHNbXSA9ICVzO1xuIiwKLQkJCSAgc3RyaW5nX3ZhcmlhYmxlKEV4dFN0cm5hbWUodGVybSwgbiwgc3RybmFtZXMpKSwgYnVmKTsKKwkJCSAgc3RyaW5nX3ZhcmlhYmxlKEV4dFN0cm5hbWUodGVybSwgKGludCkgbiwgc3RybmFtZXMpKSwKKwkJCSAgYnVmKTsKIAl9CiAgICAgfQogICAgIHByaW50ZigiXG4iKTsKQEAgLTExMTgsNyArMTMyNSw3IEBACiAJICAgIGJyZWFrOwogCX0KIAkodm9pZCkgcHJpbnRmKCJcdC8qICUzdTogJS04cyAqL1x0JXMsXG4iLAotCQkgICAgICBuLCBFeHRCb29sbmFtZSh0ZXJtLCBuLCBib29sbmFtZXMpLCBzdHIpOworCQkgICAgICBuLCBFeHRCb29sbmFtZSh0ZXJtLCAoaW50KSBuLCBib29sbmFtZXMpLCBzdHIpOwogICAgIH0KICAgICAodm9pZCkgcHJpbnRmKCIlcztcbiIsIFJfQ1VSTCk7CiAKQEAgLTExMzQsMTIgKzEzNDEsMTIgQEAKIAkgICAgc3RyID0gIkNBTkNFTExFRF9OVU1FUklDIjsKIAkgICAgYnJlYWs7CiAJZGVmYXVsdDoKLQkgICAgc3ByaW50ZihidWYsICIlZCIsIHRlcm0tPk51bWJlcnNbbl0pOworCSAgICBfbmNfU1BSSU5URihidWYsIF9uY19TTElNSVQoc2l6ZW9mKGJ1ZikpICIlZCIsIHRlcm0tPk51bWJlcnNbbl0pOwogCSAgICBzdHIgPSBidWY7CiAJICAgIGJyZWFrOwogCX0KIAkodm9pZCkgcHJpbnRmKCJcdC8qICUzdTogJS04cyAqL1x0JXMsXG4iLCBuLAotCQkgICAgICBFeHROdW1uYW1lKHRlcm0sIG4sIG51bW5hbWVzKSwgc3RyKTsKKwkJICAgICAgRXh0TnVtbmFtZSh0ZXJtLCAoaW50KSBuLCBudW1uYW1lcyksIHN0cik7CiAgICAgfQogICAgICh2b2lkKSBwcmludGYoIiVzO1xuIiwgUl9DVVJMKTsKIApAQCAtMTE1MiwxMCArMTM1OSwxMCBAQAogCWVsc2UgaWYgKHRlcm0tPlN0cmluZ3Nbbl0gPT0gQ0FOQ0VMTEVEX1NUUklORykKIAkgICAgc3RyID0gIkNBTkNFTExFRF9TVFJJTkciOwogCWVsc2UgewotCSAgICBzdHIgPSBzdHJpbmdfdmFyaWFibGUoRXh0U3RybmFtZSh0ZXJtLCBuLCBzdHJuYW1lcykpOworCSAgICBzdHIgPSBzdHJpbmdfdmFyaWFibGUoRXh0U3RybmFtZSh0ZXJtLCAoaW50KSBuLCBzdHJuYW1lcykpOwogCX0KIAkodm9pZCkgcHJpbnRmKCJcdC8qICUzdTogJS04cyAqL1x0JXMsXG4iLCBuLAotCQkgICAgICBFeHRTdHJuYW1lKHRlcm0sIG4sIHN0cm5hbWVzKSwgc3RyKTsKKwkJICAgICAgRXh0U3RybmFtZSh0ZXJtLCAoaW50KSBuLCBzdHJuYW1lcyksIHN0cik7CiAgICAgfQogICAgICh2b2lkKSBwcmludGYoIiVzO1xuIiwgUl9DVVJMKTsKIApAQCAtMTE2NywxNSArMTM3NCwxNSBAQAogCQkgICAgICBuYW1lX2luaXRpYWxpemVyKCJzdHJpbmdfZXh0IiksIExfQ1VSTCk7CiAJZm9yIChuID0gQk9PTENPVU5UOyBuIDwgTlVNX0JPT0xFQU5TKHRlcm0pOyArK24pIHsKIAkgICAgKHZvaWQpIHByaW50ZigiXHQvKiAlM3U6IGJvb2wgKi9cdFwiJXNcIixcbiIsCi0JCQkgIG4sIEV4dEJvb2xuYW1lKHRlcm0sIG4sIGJvb2xuYW1lcykpOworCQkJICBuLCBFeHRCb29sbmFtZSh0ZXJtLCAoaW50KSBuLCBib29sbmFtZXMpKTsKIAl9CiAJZm9yIChuID0gTlVNQ09VTlQ7IG4gPCBOVU1fTlVNQkVSUyh0ZXJtKTsgKytuKSB7CiAJICAgICh2b2lkKSBwcmludGYoIlx0LyogJTN1OiBudW0gKi9cdFwiJXNcIixcbiIsCi0JCQkgIG4sIEV4dE51bW5hbWUodGVybSwgbiwgbnVtbmFtZXMpKTsKKwkJCSAgbiwgRXh0TnVtbmFtZSh0ZXJtLCAoaW50KSBuLCBudW1uYW1lcykpOwogCX0KIAlmb3IgKG4gPSBTVFJDT1VOVDsgbiA8IE5VTV9TVFJJTkdTKHRlcm0pOyArK24pIHsKIAkgICAgKHZvaWQpIHByaW50ZigiXHQvKiAlM3U6IHN0ciAqL1x0XCIlc1wiLFxuIiwKLQkJCSAgbiwgRXh0U3RybmFtZSh0ZXJtLCBuLCBzdHJuYW1lcykpOworCQkJICBuLCBFeHRTdHJuYW1lKHRlcm0sIChpbnQpIG4sIHN0cm5hbWVzKSk7CiAJfQogCSh2b2lkKSBwcmludGYoIiVzO1xuIiwgUl9DVVJMKTsKICAgICB9CkBAIC0xMjQ5LDEyICsxNDU2LDM4IEBACiAgICAgcmV0dXJuIHRlcm1pbmFsOwogfQogCisvKgorICogU2hvdyB0aGUgZGF0YWJhc2VzIHRoYXQgaW5mb2NtcCBrbm93cyBhYm91dC4gIFRoZSBsb2NhdGlvbiB0byB3aGljaCBpdCB3cml0ZXMgaXMKKyAqLworc3RhdGljIHZvaWQKK3Nob3dfZGF0YWJhc2VzKHZvaWQpCit7CisgICAgREJESVJTIHN0YXRlOworICAgIGludCBvZmZzZXQ7CisgICAgY29uc3QgY2hhciAqcGF0aDI7CisKKyAgICBfbmNfZmlyc3RfZGIoJnN0YXRlLCAmb2Zmc2V0KTsKKyAgICB3aGlsZSAoKHBhdGgyID0gX25jX25leHRfZGIoJnN0YXRlLCAmb2Zmc2V0KSkgIT0gMCkgeworCXByaW50ZigiJXNcbiIsIHBhdGgyKTsKKyAgICB9CisgICAgX25jX2xhc3RfZGIoKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIE1haW4gc2VxdWVuY2UKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWYgTk9fTEVBS1MKKyNkZWZpbmUgTUFJTl9MRUFLUygpIFwKKyAgICBmcmVlKG15YXJndik7IFwKKyAgICBmcmVlKHRmaWxlKTsgXAorICAgIGZyZWUodG5hbWUpCisjZWxzZQorI2RlZmluZSBNQUlOX0xFQUtTKCkJCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKQEAgLTEyNjIsNyArMTQ5NSw3IEBACiAgICAgLyogQWxzbyBhdm9pZCBvdmVyZmxvd2luZyBzbWFsbGVyIHN0YWNrcyBvbiBzeXN0ZW1zIGxpa2UgQW1pZ2FPUyAqLwogICAgIHBhdGggKnRmaWxlID0gMDsKICAgICBjaGFyICoqdG5hbWUgPSAwOwotICAgIGludCBtYXh0ZXJtczsKKyAgICBzaXplX3QgbWF4dGVybXM7CiAKICAgICBjaGFyICoqbXlhcmd2OwogCkBAIC0xMjgwLDE4ICsxNTEzLDI3IEBACiAjaWYgTkNVUlNFU19YTkFNRVMKICAgICB1c2VfZXh0ZW5kZWRfbmFtZXMoRkFMU0UpOwogI2VuZGlmCisgICAgX25jX3N0cmljdF9ic2QgPSAwOwogCiAgICAgX25jX3Byb2duYW1lID0gX25jX3Jvb3RuYW1lKGFyZ3ZbMF0pOwogCiAgICAgLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHNwYWNlIHRvIGFkZCB0d28gdGVybWluYWwgZW50cmllcyAqLwogICAgIG15YXJndiA9IHR5cGVDYWxsb2MoY2hhciAqLCAoc2l6ZV90KSAoYXJnYyArIDMpKTsKKyAgICBpZiAobXlhcmd2ID09IDApCisJZmFpbGVkKCJteWFyZ3YiKTsKKwogICAgIG1lbWNweShteWFyZ3YsIGFyZ3YsIChzaXplb2YoY2hhciAqKSAqIChzaXplX3QpIGFyZ2MpKTsKICAgICBhcmd2ID0gbXlhcmd2OwogCiAgICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsCiAJCSAgICAgICBhcmd2LAotCQkgICAgICAgIjFBOmFCOkNjZEVlRmZHZ0lpTGxucHFSOnJzOlR0VXVWdjp3OngiKSkgIT0gLTEpIHsKKwkJICAgICAgICIwMUE6YUI6Q2NEZEVlRmZHZ0lpS0xsbnBxUjpyczpUdFV1VnY6dzp4IikpICE9IC0xKSB7CiAJc3dpdGNoIChjKSB7CisJY2FzZSAnMCc6CisJICAgIG13aWR0aCA9IDY1NTM1OworCSAgICBtaGVpZ2h0ID0gMTsKKwkgICAgYnJlYWs7CisKIAljYXNlICcxJzoKIAkgICAgbXdpZHRoID0gMDsKIAkgICAgYnJlYWs7CkBAIC0xMzEwLDYgKzE1NTIsOSBAQAogCSAgICByZXN0ZGlyID0gb3B0YXJnOwogCSAgICBicmVhazsKIAorCWNhc2UgJ0snOgorCSAgICBfbmNfc3RyaWN0X2JzZCA9IDE7CisJICAgIC8qIEZBTExUSFJVICovCiAJY2FzZSAnQyc6CiAJICAgIG91dGZvcm0gPSBGX1RFUk1DQVA7CiAJICAgIHR2ZXJzaW9uID0gIkJTRCI7CkBAIC0xMzE3LDYgKzE1NjIsMTEgQEAKIAkJc29ydG1vZGUgPSBTX1RFUk1DQVA7CiAJICAgIGJyZWFrOwogCisJY2FzZSAnRCc6CisJICAgIHNob3dfZGF0YWJhc2VzKCk7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7CisJICAgIGJyZWFrOworCiAJY2FzZSAnYyc6CiAJICAgIGNvbXBhcmUgPSBDX0NPTU1PTjsKIAkgICAgYnJlYWs7CkBAIC0xNDM0LDcgKzE2ODQsNyBAQAogCSAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOwogCiAJY2FzZSAndic6Ci0JICAgIGl0cmFjZSA9IG9wdGFyZ190b19udW1iZXIoKTsKKwkgICAgaXRyYWNlID0gKHVuc2lnbmVkKSBvcHRhcmdfdG9fbnVtYmVyKCk7CiAJICAgIHNldF90cmFjZV9sZXZlbChpdHJhY2UpOwogCSAgICBicmVhazsKIApAQCAtMTQ1MywxMCArMTcwMywxNyBAQAogCX0KICAgICB9CiAKLSAgICBtYXh0ZXJtcyA9IChhcmdjICsgMiAtIG9wdGluZCk7Ci0gICAgdGZpbGUgPSB0eXBlTWFsbG9jKHBhdGgsIG1heHRlcm1zKTsKLSAgICB0bmFtZSA9IHR5cGVDYWxsb2MoY2hhciAqLCBtYXh0ZXJtcyk7Ci0gICAgZW50cmllcyA9IHR5cGVDYWxsb2MoRU5UUlksIG1heHRlcm1zKTsKKyAgICBtYXh0ZXJtcyA9IChzaXplX3QpIChhcmdjICsgMiAtIG9wdGluZCk7CisgICAgaWYgKCh0ZmlsZSA9IHR5cGVNYWxsb2MocGF0aCwgbWF4dGVybXMpKSA9PSAwKQorCWZhaWxlZCgidGZpbGUiKTsKKyAgICBpZiAoKHRuYW1lID0gdHlwZUNhbGxvYyhjaGFyICosIG1heHRlcm1zKSkgPT0gMCkKKwkgIGZhaWxlZCgidG5hbWUiKTsKKyAgICBpZiAoKGVudHJpZXMgPSB0eXBlQ2FsbG9jKEVOVFJZLCBtYXh0ZXJtcykpID09IDApCisJZmFpbGVkKCJlbnRyaWVzIik7CisjaWYgTk9fTEVBS1MKKyAgICBpZiAoKGVudGVyZWQgPSB0eXBlQ2FsbG9jKEVOVEVSRUQsIG1heHRlcm1zKSkgPT0gMCkKKwlmYWlsZWQoImVudGVyZWQiKTsKKyNlbmRpZgogCiAgICAgaWYgKHRmaWxlID09IDAKIAl8fCB0bmFtZSA9PSAwCkBAIC0xNDY5LDkgKzE3MjYsNiBAQAogICAgIGlmIChzb3J0bW9kZSA9PSBTX0RFRkFVTFQpCiAJc29ydG1vZGUgPSBTX1RFUk1JTkZPOwogCi0gICAgLyogc2V0IHVwIGZvciBkaXNwbGF5ICovCi0gICAgZHVtcF9pbml0KHR2ZXJzaW9uLCBvdXRmb3JtLCBzb3J0bW9kZSwgbXdpZHRoLCBpdHJhY2UsIGZvcm1hdHRlZCk7Ci0KICAgICAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgdGVybWluYWwgbmFtZSB0byB3b3JrIHdpdGggKi8KICAgICBpZiAob3B0aW5kID49IGFyZ2MpCiAJYXJndlthcmdjKytdID0gdGVybWluYWxfZW52KCk7CkBAIC0xNDgwLDkgKzE3MzQsMjQgQEAKICAgICBpZiAoY29tcGFyZSAhPSBDX0RFRkFVTFQgJiYgb3B0aW5kID49IGFyZ2MgLSAxKQogCWFyZ3ZbYXJnYysrXSA9IHRlcm1pbmFsX2VudigpOwogCisgICAgLyogZXhhY3RseSBvbmUgdGVybWluYWwgbmFtZSB3aXRoIG5vIG9wdGlvbnMgbWVhbnMgZGlzcGxheSBpdCAqLwogICAgIC8qIGV4YWN0bHkgdHdvIHRlcm1pbmFsIG5hbWVzIHdpdGggbm8gb3B0aW9ucyBtZWFucyBkbyAtZCAqLwotICAgIGlmIChhcmdjIC0gb3B0aW5kID09IDIgJiYgY29tcGFyZSA9PSBDX0RFRkFVTFQpCi0JY29tcGFyZSA9IENfRElGRkVSRU5DRTsKKyAgICBpZiAoY29tcGFyZSA9PSBDX0RFRkFVTFQpIHsKKwlzd2l0Y2ggKGFyZ2MgLSBvcHRpbmQpIHsKKwlkZWZhdWx0OgorCSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0b28gbWFueSBuYW1lcyB0byBjb21wYXJlXG4iLCBfbmNfcHJvZ25hbWUpOworCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCWNhc2UgMToKKwkgICAgYnJlYWs7CisJY2FzZSAyOgorCSAgICBjb21wYXJlID0gQ19ESUZGRVJFTkNFOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgLyogc2V0IHVwIGZvciBkaXNwbGF5ICovCisgICAgZHVtcF9pbml0KHR2ZXJzaW9uLCBvdXRmb3JtLCBzb3J0bW9kZSwgbXdpZHRoLCBtaGVpZ2h0LCBpdHJhY2UsCisJICAgICAgZm9ybWF0dGVkLCBGQUxTRSk7CiAKICAgICBpZiAoIWZpbGVjb21wYXJlKSB7CiAJLyogZ3JhYiB0aGUgZW50cmllcyAqLwpAQCAtMTQ5NCwxNSArMTc2MywxNyBAQAogCSAgICB0bmFtZVt0ZXJtY291bnRdID0gYXJndltvcHRpbmRdOwogCiAJICAgIGlmIChkaXJlY3RvcnkpIHsKLSNpZiBVU0VfREFUQUJBU0UKKyNpZiBOQ1VSU0VTX1VTRV9EQVRBQkFTRQogI2lmIE1JWEVEQ0FTRV9GSUxFTkFNRVMKICNkZWZpbmUgTEVBRl9GTVQgIiVjIgogI2Vsc2UKICNkZWZpbmUgTEVBRl9GTVQgIiUwMngiCiAjZW5kaWYKLQkJKHZvaWQpIHNwcmludGYodGZpbGVbdGVybWNvdW50XSwgIiVzLyIgTEVBRl9GTVQgIi8lcyIsCi0JCQkgICAgICAgZGlyZWN0b3J5LAotCQkJICAgICAgIFVDaGFyKCphcmd2W29wdGluZF0pLCBhcmd2W29wdGluZF0pOworCQlfbmNfU1BSSU5URih0ZmlsZVt0ZXJtY291bnRdLAorCQkJICAgIF9uY19TTElNSVQoc2l6ZW9mKHBhdGgpKQorCQkJICAgICIlcy8iIExFQUZfRk1UICIvJXMiLAorCQkJICAgIGRpcmVjdG9yeSwKKwkJCSAgICBVQ2hhcigqYXJndltvcHRpbmRdKSwgYXJndltvcHRpbmRdKTsKIAkJaWYgKGl0cmFjZSkKIAkJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKIAkJCQkgICAiJXM6IHJlYWRpbmcgZW50cnkgJXMgZnJvbSBmaWxlICVzXG4iLApAQCAtMTUxNCw2ICsxNzg1LDcgQEAKICNlbHNlCiAJCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0ZXJtaW5mbyBmaWxlcyBub3Qgc3VwcG9ydGVkXG4iLAogCQkJICAgICAgIF9uY19wcm9nbmFtZSk7CisJCU1BSU5fTEVBS1MoKTsKIAkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKICNlbmRpZgogCSAgICB9IGVsc2UgewpAQCAtMTUyNiw3ICsxNzk4LDYgQEAKIAkJc3RhdHVzID0gX25jX3JlYWRfZW50cnkodG5hbWVbdGVybWNvdW50XSwKIAkJCQkJdGZpbGVbdGVybWNvdW50XSwKIAkJCQkJJmVudHJpZXNbdGVybWNvdW50XS50dGVybSk7Ci0JCWRpcmVjdG9yeSA9IFRFUk1JTkZPOwkvKiBmb3IgZXJyb3IgbWVzc2FnZSAqLwogCSAgICB9CiAKIAkgICAgaWYgKHN0YXR1cyA8PSAwKSB7CkBAIC0xNTM0LDYgKzE4MDUsNyBAQAogCQkJICAgICAgICIlczogY291bGRuJ3Qgb3BlbiB0ZXJtaW5mbyBmaWxlICVzLlxuIiwKIAkJCSAgICAgICBfbmNfcHJvZ25hbWUsCiAJCQkgICAgICAgdGZpbGVbdGVybWNvdW50XSk7CisJCU1BSU5fTEVBS1MoKTsKIAkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKIAkgICAgfQogCSAgICByZXBhaXJfYWNzYygmZW50cmllc1t0ZXJtY291bnRdLnR0ZXJtKTsKQEAgLTE1NjUsNiArMTgzNyw4IEBACiAJICAgIGFuYWx5emVfc3RyaW5nKCJyczMiLCByZXNldF8zc3RyaW5nLCAmZW50cmllc1swXS50dGVybSk7CiAJICAgIGFuYWx5emVfc3RyaW5nKCJzbWN1cCIsIGVudGVyX2NhX21vZGUsICZlbnRyaWVzWzBdLnR0ZXJtKTsKIAkgICAgYW5hbHl6ZV9zdHJpbmcoInJtY3VwIiwgZXhpdF9jYV9tb2RlLCAmZW50cmllc1swXS50dGVybSk7CisJICAgIGFuYWx5emVfc3RyaW5nKCJzbWt4Iiwga2V5cGFkX3htaXQsICZlbnRyaWVzWzBdLnR0ZXJtKTsKKwkgICAgYW5hbHl6ZV9zdHJpbmcoInJta3giLCBrZXlwYWRfbG9jYWwsICZlbnRyaWVzWzBdLnR0ZXJtKTsKICN1bmRlZiBDVVIKIAl9IGVsc2UgewogCkBAIC0xNTkxLDI3ICsxODY1LDE3IEBACiAJCWJyZWFrOwogCiAJICAgIGNhc2UgQ19ESUZGRVJFTkNFOgotCQlpZiAoaXRyYWNlKQotCQkgICAgKHZvaWQpIGZwcmludGYoc3RkZXJyLCAiJXM6IGR1bXBpbmcgZGlmZmVyZW5jZXNcbiIsIF9uY19wcm9nbmFtZSk7Ci0JCSh2b2lkKSBwcmludGYoImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIHRuYW1lWzBdLCB0bmFtZVsxXSk7CisJCXNob3dfY29tcGFyaW5nKHRuYW1lKTsKIAkJY29tcGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVudHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAJCWJyZWFrOwogCiAJICAgIGNhc2UgQ19DT01NT046Ci0JCWlmIChpdHJhY2UpCi0JCSAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCi0JCQkJICAgIiVzOiBkdW1waW5nIGNvbW1vbiBjYXBhYmlsaXRpZXNcbiIsCi0JCQkJICAgX25jX3Byb2duYW1lKTsKLQkJKHZvaWQpIHByaW50ZigiY29tcGFyaW5nICVzIHRvICVzLlxuIiwgdG5hbWVbMF0sIHRuYW1lWzFdKTsKKwkJc2hvd19jb21wYXJpbmcodG5hbWUpOwogCQljb21wYXJlX2VudHJ5KGNvbXBhcmVfcHJlZGljYXRlLCAmZW50cmllcy0+dHRlcm0sIHF1aWV0KTsKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSBDX05BTkQ6Ci0JCWlmIChpdHJhY2UpCi0JCSAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCi0JCQkJICAgIiVzOiBkdW1waW5nIGRpZmZlcmVuY2VzXG4iLAotCQkJCSAgIF9uY19wcm9nbmFtZSk7Ci0JCSh2b2lkKSBwcmludGYoImNvbXBhcmluZyAlcyB0byAlcy5cbiIsIHRuYW1lWzBdLCB0bmFtZVsxXSk7CisJCXNob3dfY29tcGFyaW5nKHRuYW1lKTsKIAkJY29tcGFyZV9lbnRyeShjb21wYXJlX3ByZWRpY2F0ZSwgJmVudHJpZXMtPnR0ZXJtLCBxdWlldCk7CiAJCWJyZWFrOwogCkBAIC0xNjMyLDIxICsxODk2LDE4IEBACiAJCWJyZWFrOwogCSAgICB9CiAJfQotICAgIH0gZWxzZSBpZiAoY29tcGFyZSA9PSBDX1VTRUFMTCkKKyAgICB9IGVsc2UgaWYgKGNvbXBhcmUgPT0gQ19VU0VBTEwpIHsKIAkodm9pZCkgZnByaW50ZihzdGRlcnIsICJTb3JyeSwgLXUgZG9lc24ndCB3b3JrIHdpdGggLUZcbiIpOwotICAgIGVsc2UgaWYgKGNvbXBhcmUgPT0gQ19ERUZBVUxUKQorICAgIH0gZWxzZSBpZiAoY29tcGFyZSA9PSBDX0RFRkFVTFQpIHsKIAkodm9pZCkgZnByaW50ZihzdGRlcnIsICJVc2UgYHRpYyAtW0NJXSA8ZmlsZT4nIGZvciB0aGlzLlxuIik7Ci0gICAgZWxzZSBpZiAoYXJnYyAtIG9wdGluZCAhPSAyKQorICAgIH0gZWxzZSBpZiAoYXJnYyAtIG9wdGluZCAhPSAyKSB7CiAJKHZvaWQpIGZwcmludGYoc3RkZXJyLAogCQkgICAgICAgIkZpbGUgY29tcGFyaXNvbiBuZWVkcyBleGFjdGx5IHR3byBmaWxlIGFyZ3VtZW50cy5cbiIpOwotICAgIGVsc2UKKyAgICB9IGVsc2UgewogCWZpbGVfY29tcGFyaXNvbihhcmdjIC0gb3B0aW5kLCBhcmd2ICsgb3B0aW5kKTsKKyAgICB9CiAKLSNpZiBOT19MRUFLUwotICAgIGZyZWUobXlhcmd2KTsKLSAgICBmcmVlKHRmaWxlKTsKLSAgICBmcmVlKHRuYW1lKTsKLSNlbmRpZgorICAgIE1BSU5fTEVBS1MoKTsKICAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOwogfQogCmRpZmYgLS1naXQgYS9wcm9ncy9tb2R1bGVzIGIvcHJvZ3MvbW9kdWxlcwppbmRleCAzYjRmM2I2Li5jMDlkMmE2IDEwMDY0NAotLS0gYS9wcm9ncy9tb2R1bGVzCisrKyBiL3Byb2dzL21vZHVsZXMKQEAgLTEsNyArMSw3IEBACi0jICRJZDogbW9kdWxlcyx2IDEuMTMgMjAwNi8xMi8yNCAwMDo1MzoyMSB0b20gRXhwICQKKyMgJElkOiBtb2R1bGVzLHYgMS4xOCAyMDE0LzA1LzIxIDE3OjAxOjI4IHRvbSBFeHAgJAogIyBQcm9ncmFtIG1vZHVsZXMgKHNvbWUgYXJlIGluIG5jdXJzZXMgbGliISkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDEwLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCiAjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKQEAgLTMzLDExICszMywxNCBAQAogCiBAIGJhc2UKIGNsZWFyCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCi10aWMJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykgdHJhbnNmb3JtLmggJChzcmNkaXIpL2R1bXBfZW50cnkuaAotdG9lCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpICAgICAgICAgICAgICQoc3JjZGlyKS9kdW1wX2VudHJ5LmgKK3RpYwkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKSB0cmFuc2Zvcm0uaCAkKHNyY2RpcikvZHVtcF9lbnRyeS5oICQoc3JjZGlyKS90cGFybV90eXBlLmgKK3RvZQkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKSAgICAgICAgICAgICAkKElOQ0RJUikvaGFzaGVkX2RiLmgKIGR1bXBfZW50cnkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKSAgICAgICAgICAgICAkKHNyY2RpcikvZHVtcF9lbnRyeS5oIC4uL2luY2x1ZGUvcGFyYW1ldHJpemVkLmggJChJTkNESVIpL2NhcGRlZmF1bHRzLmMgdGVybXNvcnQuYwogaW5mb2NtcAkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKSAgICAgICAgICAgICAkKHNyY2RpcikvZHVtcF9lbnRyeS5oCi10cHV0CQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpIHRyYW5zZm9ybS5oIHRlcm1zb3J0LmMKK3RhYnMJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3RwYXJtX3R5cGUJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKSAgICAgICAgICAgICAkKHNyY2RpcikvdHBhcm1fdHlwZS5oCit0cHV0CQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpIHRyYW5zZm9ybS5oICQoc3JjZGlyKS9kdW1wX2VudHJ5LmggJChzcmNkaXIpL3RwYXJtX3R5cGUuaCB0ZXJtc29ydC5jCiB0c2V0CQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpIHRyYW5zZm9ybS5oICQoc3JjZGlyKS9kdW1wX2VudHJ5LmggLi4vaW5jbHVkZS90ZXJtY2FwLmgKK3RyYW5zZm9ybQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpIHRyYW5zZm9ybS5oCiAKICMgdmlsZTptYWtlbW9kZQpkaWZmIC0tZ2l0IGEvcHJvZ3MvcHJvZ3MucHJpdi5oIGIvcHJvZ3MvcHJvZ3MucHJpdi5oCmluZGV4IGYwZWE0NjAuLjc4NmZlNTUgMTAwNjQ0Ci0tLSBhL3Byb2dzL3Byb2dzLnByaXYuaAorKysgYi9wcm9ncy9wcm9ncy5wcml2LmgKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMCwxOSArMzAsMjIgQEAKICAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgIDE5OTctb24gICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCi0gKiAkSWQ6IHByb2dzLnByaXYuaCx2IDEuMzQgMjAwOC8wOC8wMyAxNzo0MzowNSB0b20gRXhwICQKKyAqICRJZDogcHJvZ3MucHJpdi5oLHYgMS40MSAyMDE1LzA1LzIzIDIzOjUzOjU1IHRvbSBFeHAgJAogICoKICAqCXByb2dzLnByaXYuaAogICoKICAqCUhlYWRlciBmaWxlIGZvciBjdXJzZXMgdXRpbGl0eSBwcm9ncmFtcwogICovCiAKKyNpZm5kZWYgUFJPR1NfUFJJVl9ICisjZGVmaW5lIFBST0dTX1BSSVZfSCAxCisKICNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgogCiAjaWYgVVNFX1JDU19JRFMKICNkZWZpbmUgTU9EVUxFX0lEKGlkKSBzdGF0aWMgY29uc3QgY2hhciBJZGVudFtdID0gaWQ7CiAjZWxzZQotI2RlZmluZSBNT0RVTEVfSUQoaWQpIC8qbm90aGluZyovCisjZGVmaW5lIE1PRFVMRV9JRChpZCkJCS8qbm90aGluZyAqLwogI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTkwLDYgKzkzLDE0IEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmIEhBVkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TVERJTlRfSAorIyAgaW5jbHVkZSA8c3RkaW50Lmg+CisjIGVuZGlmCisjZW5kaWYKKwogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAKQEAgLTk5LDcgKzExMCw3IEBACiAKICNpZiBIQVZFX0dFVE9QVF9ICiAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0jZWxzZQorI2VsaWYgIWRlZmluZWQoSEFWRV9HRVRPUFRfSEVBREVSKQogLyogJ2dldG9wdCgpJyBtYXkgYmUgcHJvdG90eXBlZCBpbiA8c3RkbGliLmg+LCBidXQgZGVjbGFyaW5nIGl0cwogICogdmFyaWFibGVzIGRvZXNuJ3QgaHVydC4KICAqLwpAQCAtMTA5LDkgKzEyMCwxMSBAQAogCiAjaW5jbHVkZSA8Y3Vyc2VzLmg+CiAjaW5jbHVkZSA8dGVybV9lbnRyeS5oPgorI2luY2x1ZGUgPG5jX3Rlcm1pb3MuaD4KICNpbmNsdWRlIDx0aWMuaD4KICNpbmNsdWRlIDxuY190cGFybS5oPgogCisjaW5jbHVkZSA8bmNfc3RyaW5nLmg+CiAjaW5jbHVkZSA8bmNfYWxsb2MuaD4KICNpZiBIQVZFX05DX0ZSRUVBTEwKICN1bmRlZiBFeGl0UHJvZ3JhbQpAQCAtMTIyLDYgKzEzNSwxMiBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0ZPUlRJRllfU09VUkNFKQorI2RlZmluZSBJR05PUkVfUkMoZnVuYykgZXJybm8gPSAoaW50KSBmdW5jCisjZWxzZQorI2RlZmluZSBJR05PUkVfUkMoZnVuYykgKHZvaWQpIGZ1bmMKKyNlbmRpZiAvKiBnY2Mgd29ya2Fyb3VuZHMgKi8KKwogLyogdXN1YWxseSBpbiA8dW5pc3RkLmg+ICovCiAjaWZuZGVmIFNURE9VVF9GSUxFTk8KICNkZWZpbmUgU1RET1VUX0ZJTEVOTyAxCkBAIC0xNzEsNyArMTkwLDcgQEAKICMgZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCiAjICBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgogIyBlbHNlCi0jICBkZWZpbmUgUEFUSF9NQVggMjU1CS8qIHRoZSBQb3NpeCBtaW5pbXVtIHBhdGhzaXplICovCisjICBkZWZpbmUgUEFUSF9NQVggMjU1CQkvKiB0aGUgUG9zaXggbWluaW11bSBwYXRoc2l6ZSAqLwogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTE4MywxMCArMjAyLDEyIEBACiAjIGlmICgneictJ2EnID09IDI1KSAmJiAoJ3onIDwgMTI3KSAmJiAoJ1onLSdBJyA9PSAyNSkgJiYgKCdaJyA8IDEyNykgJiYgKCc5JyA8IDEyNykKICMgIGRlZmluZSBpc2FzY2lpKGMpIChVQ2hhcihjKSA8PSAxMjcpCiAjIGVsc2UKLSMgIGRlZmluZSBpc2FzY2lpKGMpIDEJLyogbm90IHJlYWxseSBhc2NpaSBhbnl3YXkgKi8KKyMgIGRlZmluZSBpc2FzY2lpKGMpIDEJCS8qIG5vdCByZWFsbHkgYXNjaWkgYW55d2F5ICovCiAjIGVuZGlmCiAjZW5kaWYKIAogI2RlZmluZSBVQ2hhcihjKSAgICAoKHVuc2lnbmVkIGNoYXIpKGMpKQogCiAjZGVmaW5lIFNJWkVPRih2KSAoc2l6ZW9mKHYpL3NpemVvZih2WzBdKSkKKworI2VuZGlmIC8qIFBST0dTX1BSSVZfSCAqLwpkaWZmIC0tZ2l0IGEvcHJvZ3MvdGFicy5jIGIvcHJvZ3MvdGFicy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NzRjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9ncy90YWJzLmMKQEAgLTAsMCArMSw1NDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgMjAwOCAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiB0YWJzLmMgLS0gIHNldCB0ZXJtaW5hbCBoYXJkLXRhYnN0b3BzCisgKi8KKworI2RlZmluZSBVU0VfTElCVElORk8KKyNpbmNsdWRlIDxwcm9ncy5wcml2Lmg+CisKK01PRFVMRV9JRCgiJElkOiB0YWJzLmMsdiAxLjM3IDIwMTUvMDcvMDQgMjE6MTQ6NDIgdG9tIEV4cCAkIikKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkgR0NDX05PUkVUVVJOOworCitzdGF0aWMgY2hhciAqcHJnX25hbWU7CitzdGF0aWMgaW50IG1heF9jb2xzOworCitzdGF0aWMgdm9pZAorZmFpbGVkKGNvbnN0IGNoYXIgKnMpCit7CisgICAgcGVycm9yKHMpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyBpbnQKK3B1dGNoKGludCBjKQoreworICAgIHJldHVybiBwdXRjaGFyKGMpOworfQorCitzdGF0aWMgdm9pZAorZG9fdGFicyhpbnQgKnRhYl9saXN0KQoreworICAgIGludCBsYXN0ID0gMTsKKyAgICBpbnQgc3RvcDsKKworICAgIHB1dGNoYXIoJ1xyJyk7CisgICAgd2hpbGUgKChzdG9wID0gKnRhYl9saXN0KyspID4gMCkgeworCWlmIChsYXN0IDwgc3RvcCkgeworCSAgICB3aGlsZSAobGFzdCsrIDwgc3RvcCkgeworCQlpZiAobGFzdCA+IG1heF9jb2xzKQorCQkgICAgYnJlYWs7CisJCXB1dGNoYXIoJyAnKTsKKwkgICAgfQorCX0KKwlpZiAoc3RvcCA8PSBtYXhfY29scykgeworCSAgICB0cHV0cyh0cGFybShzZXRfdGFiLCBzdG9wKSwgMSwgcHV0Y2gpOworCSAgICBsYXN0ID0gc3RvcDsKKwl9IGVsc2UgeworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIHB1dGNoYXIoJ1xyJyk7Cit9CisKK3N0YXRpYyBpbnQgKgorZGVjb2RlX3RhYnMoY29uc3QgY2hhciAqdGFiX2xpc3QpCit7CisgICAgaW50ICpyZXN1bHQgPSB0eXBlQ2FsbG9jKGludCwgc3RybGVuKHRhYl9saXN0KSArICh1bnNpZ25lZCkgbWF4X2NvbHMpOworICAgIGludCBuID0gMDsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIGludCBwcmlvciA9IDA7CisgICAgaW50IGNoOworCisgICAgaWYgKHJlc3VsdCA9PSAwKQorCWZhaWxlZCgiZGVjb2RlX3RhYnMiKTsKKworICAgIHdoaWxlICgoY2ggPSAqdGFiX2xpc3QrKykgIT0gJ1wwJykgeworCWlmIChpc2RpZ2l0KFVDaGFyKGNoKSkpIHsKKwkgICAgdmFsdWUgKj0gMTA7CisJICAgIHZhbHVlICs9IChjaCAtICcwJyk7CisJfSBlbHNlIGlmIChjaCA9PSAnLCcpIHsKKwkgICAgcmVzdWx0W25dID0gdmFsdWUgKyBwcmlvcjsKKwkgICAgaWYgKG4gPiAwICYmIHJlc3VsdFtuXSA8PSByZXN1bHRbbiAtIDFdKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJIiVzOiB0YWItc3RvcHMgYXJlIG5vdCBpbiBpbmNyZWFzaW5nIG9yZGVyOiAlZCAlZFxuIiwKKwkJCXByZ19uYW1lLCB2YWx1ZSwgcmVzdWx0W24gLSAxXSk7CisJCWZyZWUocmVzdWx0KTsKKwkJcmVzdWx0ID0gMDsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgKytuOworCSAgICB2YWx1ZSA9IDA7CisJICAgIHByaW9yID0gMDsKKwl9IGVsc2UgaWYgKGNoID09ICcrJykgeworCSAgICBpZiAobikKKwkJcHJpb3IgPSByZXN1bHRbbiAtIDFdOworCX0KKyAgICB9CisKKyAgICBpZiAocmVzdWx0ICE9IDApIHsKKwkvKgorCSAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCB0aGVuIGl0IGlzIGFuIG9wdGlvbiBzdWNoIGFzICItOCIuCisJICovCisJaWYgKChuID09IDApICYmICh2YWx1ZSA+IDApKSB7CisJICAgIGludCBzdGVwID0gdmFsdWU7CisJICAgIHZhbHVlID0gMTsKKwkgICAgd2hpbGUgKG4gPCBtYXhfY29scyAtIDEpIHsKKwkJcmVzdWx0W24rK10gPSB2YWx1ZTsKKwkJdmFsdWUgKz0gc3RlcDsKKwkgICAgfQorCX0KKworCS8qCisJICogQWRkIHRoZSBsYXN0IHZhbHVlLCBpZiBhbnkuCisJICovCisJcmVzdWx0W24rK10gPSB2YWx1ZSArIHByaW9yOworCXJlc3VsdFtuXSA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3ByaW50X3J1bGVyKGludCAqdGFiX2xpc3QpCit7CisgICAgaW50IGxhc3QgPSAwOworICAgIGludCBzdG9wOworICAgIGludCBuOworCisgICAgLyogZmlyc3QgcHJpbnQgYSByZWFkYWJsZSBydWxlciAqLworICAgIGZvciAobiA9IDA7IG4gPCBtYXhfY29sczsgbiArPSAxMCkgeworCWludCBjaCA9IDEgKyAobiAvIDEwKTsKKwljaGFyIGJ1ZmZlclsyMF07CisJX25jX1NQUklOVEYoYnVmZmVyLCBfbmNfU0xJTUlUKHNpemVvZihidWZmZXIpKQorCQkgICAgIi0tLS0rLS0tLSVjIiwKKwkJICAgICgoY2ggPCAxMCkKKwkJICAgICA/IChjaCArICcwJykKKwkJICAgICA6IChjaCArICdBJyAtIDEwKSkpOworCXByaW50ZigiJS4qcyIsICgobWF4X2NvbHMgLSBuKSA+IDEwKSA/IDEwIDogKG1heF9jb2xzIC0gbiksIGJ1ZmZlcik7CisgICAgfQorICAgIHB1dGNoYXIoJ1xuJyk7CisKKyAgICAvKiBub3csIHByaW50ICcqJyBmb3IgZWFjaCBzdG9wICovCisgICAgZm9yIChuID0gMCwgbGFzdCA9IDA7ICh0YWJfbGlzdFtuXSA+IDApICYmIChsYXN0IDwgbWF4X2NvbHMpOyArK24pIHsKKwlzdG9wID0gdGFiX2xpc3Rbbl07CisJd2hpbGUgKCsrbGFzdCA8IHN0b3ApIHsKKwkgICAgaWYgKGxhc3QgPD0gbWF4X2NvbHMpIHsKKwkJcHV0Y2hhcignLScpOworCSAgICB9IGVsc2UgeworCQlicmVhazsKKwkgICAgfQorCX0KKwlpZiAobGFzdCA8PSBtYXhfY29scykgeworCSAgICBwdXRjaGFyKCcqJyk7CisJICAgIGxhc3QgPSBzdG9wOworCX0gZWxzZSB7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgd2hpbGUgKCsrbGFzdCA8PSBtYXhfY29scykKKwlwdXRjaGFyKCctJyk7CisgICAgcHV0Y2hhcignXG4nKTsKK30KKworLyoKKyAqIFdyaXRlIGFuICcqJyBvbiBlYWNoIHRhYnN0b3AsIHRvIGRlbW9uc3RyYXRlIHdoZXRoZXIgaXQgbGluZXMgdXAgd2l0aCB0aGUKKyAqIHJ1bGVyLgorICovCitzdGF0aWMgdm9pZAord3JpdGVfdGFicyhpbnQgKnRhYl9saXN0KQoreworICAgIGludCBzdG9wOworCisgICAgd2hpbGUgKChzdG9wID0gKnRhYl9saXN0KyspID4gMCAmJiBzdG9wIDw9IG1heF9jb2xzKSB7CisJZnB1dHMoKHN0b3AgPT0gMSkgPyAiKiIgOiAiXHQqIiwgc3Rkb3V0KTsKKyAgICB9OworICAgIC8qIGFsc28gc2hvdyBhIHRhYiBfcGFzdF8gdGhlIHN0b3BzICovCisgICAgaWYgKHN0b3AgPCBtYXhfY29scykKKwlmcHV0cygiXHQrIiwgc3Rkb3V0KTsKKyAgICBwdXRjaGFyKCdcbicpOworfQorCisvKgorICogVHJpbSBsZWFkaW5nL3RyYWlsaW5nIGJsYW5rcywgYXMgd2VsbCBhcyBibGFua3MgYWZ0ZXIgYSBjb21tYS4KKyAqIENvbnZlcnQgZW1iZWRkZWQgYmxhbmtzIHRvIGNvbW1hcy4KKyAqLworc3RhdGljIGNoYXIgKgordHJpbW1lZF90YWJfbGlzdChjb25zdCBjaGFyICpzb3VyY2UpCit7CisgICAgY2hhciAqcmVzdWx0ID0gc3RyZHVwKHNvdXJjZSk7CisgICAgaW50IGNoLCBqLCBrLCBsYXN0OworCisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisJZm9yIChqID0gayA9IGxhc3QgPSAwOyByZXN1bHRbal0gIT0gMDsgKytqKSB7CisJICAgIGNoID0gVUNoYXIocmVzdWx0W2pdKTsKKwkgICAgaWYgKGlzc3BhY2UoY2gpKSB7CisJCWlmIChsYXN0ID09ICdcMCcpIHsKKwkJICAgIGNvbnRpbnVlOworCQl9IGVsc2UgaWYgKGlzZGlnaXQobGFzdCkgfHwgbGFzdCA9PSAnLCcpIHsKKwkJICAgIGNoID0gJywnOworCQl9CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gJywnKSB7CisJCTsKKwkgICAgfSBlbHNlIHsKKwkJaWYgKGxhc3QgPT0gJywnKQorCQkgICAgcmVzdWx0W2srK10gPSAoY2hhcikgbGFzdDsKKwkJcmVzdWx0W2srK10gPSAoY2hhcikgY2g7CisJICAgIH0KKwkgICAgbGFzdCA9IGNoOworCX0KKwlyZXN1bHRba10gPSAnXDAnOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbAorY29tbWFfaXNfbmVlZGVkKGNvbnN0IGNoYXIgKnNvdXJjZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaWYgKHNvdXJjZSAhPSAwKSB7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihzb3VyY2UpOworCWlmIChsZW4gIT0gMCkKKwkgICAgcmVzdWx0ID0gKHNvdXJjZVtsZW4gLSAxXSAhPSAnLCcpOworICAgIH0gZWxzZSB7CisJcmVzdWx0ID0gRkFMU0U7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBBZGQgYSBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIHRvIHRoZSB0YWItbGlzdC4gIEl0IGNhbiBiZSBibGFuay0gb3IgY29tbWEtCisgKiBzZXBhcmF0ZWQgKG9yIGEgbWl4dHVyZSkuICBGb3Igc2ltcGxpY2l0eSwgZW1wdHkgdGFicyBhcmUgaWdub3JlZCwgZS5nLiwKKyAqCXRhYnMgMSwsNiwxMQorICoJdGFicyAxLDYsMTEKKyAqIGFyZSB0cmVhdGVkIHRoZSBzYW1lLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCithZGRfdG9fdGFiX2xpc3QoY2hhciAqKmFwcGVuZCwgY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgY2hhciAqcmVzdWx0ID0gKmFwcGVuZDsKKyAgICBjaGFyICpjb3BpZWQgPSB0cmltbWVkX3RhYl9saXN0KHZhbHVlKTsKKworICAgIGlmIChjb3BpZWQgIT0gMCAmJiAqY29waWVkICE9ICdcMCcpIHsKKwljb25zdCBjaGFyICpjb21tYSA9ICIsIjsKKwlzaXplX3QgbmVlZCA9IDEgKyBzdHJsZW4oY29waWVkKTsKKworCWlmICgqY29waWVkID09ICcsJykKKwkgICAgY29tbWEgPSAiIjsKKwllbHNlIGlmICghY29tbWFfaXNfbmVlZGVkKCphcHBlbmQpKQorCSAgICBjb21tYSA9ICIiOworCisJbmVlZCArPSBzdHJsZW4oY29tbWEpOworCWlmICgqYXBwZW5kICE9IDApCisJICAgIG5lZWQgKz0gc3RybGVuKCphcHBlbmQpOworCisJcmVzdWx0ID0gbWFsbG9jKG5lZWQpOworCWlmIChyZXN1bHQgPT0gMCkKKwkgICAgZmFpbGVkKCJhZGRfdG9fdGFiX2xpc3QiKTsKKworCSpyZXN1bHQgPSAnXDAnOworCWlmICgqYXBwZW5kICE9IDApIHsKKwkgICAgX25jX1NUUkNQWShyZXN1bHQsICphcHBlbmQsIG5lZWQpOworCSAgICBmcmVlKCphcHBlbmQpOworCX0KKwlfbmNfU1RSQ0FUKHJlc3VsdCwgY29tbWEsIG5lZWQpOworCV9uY19TVFJDQVQocmVzdWx0LCBjb3BpZWQsIG5lZWQpOworCisJKmFwcGVuZCA9IHJlc3VsdDsKKyAgICB9CisgICAgZnJlZShjb3BpZWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDaGVjayBmb3IgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIHRoZSB0YWItbGlzdC4KKyAqLworc3RhdGljIGJvb2wKK2xlZ2FsX3RhYl9saXN0KGNvbnN0IGNoYXIgKnRhYl9saXN0KQoreworICAgIGJvb2wgcmVzdWx0ID0gVFJVRTsKKworICAgIGlmICh0YWJfbGlzdCAhPSAwICYmICp0YWJfbGlzdCAhPSAnXDAnKSB7CisJaWYgKGNvbW1hX2lzX25lZWRlZCh0YWJfbGlzdCkpIHsKKwkgICAgaW50IG4sIGNoOworCSAgICBmb3IgKG4gPSAwOyB0YWJfbGlzdFtuXSAhPSAnXDAnOyArK24pIHsKKwkJY2ggPSBVQ2hhcih0YWJfbGlzdFtuXSk7CisJCWlmICghKGlzZGlnaXQoY2gpIHx8IGNoID09ICcsJyB8fCBjaCA9PSAnKycpKSB7CisJCSAgICBmcHJpbnRmKHN0ZGVyciwKKwkJCSAgICAiJXM6IHVuZXhwZWN0ZWQgY2hhcmFjdGVyIGZvdW5kICclYydcbiIsCisJCQkgICAgcHJnX25hbWUsIGNoKTsKKwkJICAgIHJlc3VsdCA9IEZBTFNFOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHRyYWlsaW5nIGNvbW1hIGZvdW5kICclcydcbiIsIHByZ19uYW1lLCB0YWJfbGlzdCk7CisJICAgIHJlc3VsdCA9IEZBTFNFOworCX0KKyAgICB9IGVsc2UgeworCWZwcmludGYoc3RkZXJyLCAiJXM6IG5vIHRhYi1saXN0IGdpdmVuXG4iLCBwcmdfbmFtZSk7CisJcmVzdWx0ID0gRkFMU0U7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjaGFyICoKK3NraXBfbGlzdChjaGFyICp2YWx1ZSkKK3sKKyAgICB3aGlsZSAoKnZhbHVlICE9ICdcMCcgJiYKKwkgICAoaXNkaWdpdChVQ2hhcigqdmFsdWUpKSB8fAorCSAgICBpc3NwYWNlKFVDaGFyKCp2YWx1ZSkpIHx8CisJICAgIHN0cmNocigiKywiLCBVQ2hhcigqdmFsdWUpKSAhPSAwKSkgeworCSsrdmFsdWU7CisgICAgfQorICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisjZGVmaW5lIERBVEEocykgcyAiXG4iCisgICAgc3RhdGljIGNvbnN0IGNoYXIgbXNnW10gPQorICAgIHsKKwlEQVRBKCJVc2FnZTogdGFicyBbb3B0aW9uc10gW3RhYnN0b3AtbGlzdF0iKQorCURBVEEoIiIpCisJREFUQSgiT3B0aW9uczoiKQorCURBVEEoIiAgLTAgICAgICAgcmVzZXQgdGFicyIpCisJREFUQSgiICAtOCAgICAgICBzZXQgdGFicyB0byBzdGFuZGFyZCBpbnRlcnZhbCIpCisJREFUQSgiICAtYSAgICAgICBBc3NlbWJsZXIsIElCTSBTLzM3MCwgZmlyc3QgZm9ybWF0IikKKwlEQVRBKCIgIC1hMiAgICAgIEFzc2VtYmxlciwgSUJNIFMvMzcwLCBzZWNvbmQgZm9ybWF0IikKKwlEQVRBKCIgIC1jICAgICAgIENPQk9MLCBub3JtYWwgZm9ybWF0IikKKwlEQVRBKCIgIC1jMiAgICAgIENPQk9MIGNvbXBhY3QgZm9ybWF0IikKKwlEQVRBKCIgIC1jMyAgICAgIENPQk9MIGNvbXBhY3QgZm9ybWF0IGV4dGVuZGVkIikKKwlEQVRBKCIgIC1kICAgICAgIGRlYnVnIChzaG93IHJ1bGVyIHdpdGggZXhwZWN0ZWQvYWN0dWFsIHRhYiBwb3NpdGlvbnMpIikKKwlEQVRBKCIgIC1mICAgICAgIEZPUlRSQU4iKQorCURBVEEoIiAgLW4gICAgICAgbm8tb3AgKGRvIG5vdCBtb2RpZnkgdGVybWluYWwgc2V0dGluZ3MpIikKKwlEQVRBKCIgIC1wICAgICAgIFBML0kiKQorCURBVEEoIiAgLXMgICAgICAgU05PQk9MIikKKwlEQVRBKCIgIC11ICAgICAgIFVOSVZBQyAxMTAwIEFzc2VtYmxlciIpCisJREFUQSgiICAtVCBuYW1lICB1c2UgdGVybWluYWwgdHlwZSAnbmFtZSciKQorCURBVEEoIiAgLVYgICAgICAgcHJpbnQgdmVyc2lvbiIpCisJREFUQSgiIikKKwlEQVRBKCJBIHRhYnN0b3AtbGlzdCBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29sdW1uIG51bWJlcnMsIGUuZy4sIDEsMTEsMjEiKQorCURBVEEoIm9yIDEsKzEwLCsxMCB3aGljaCBpcyB0aGUgc2FtZS4iKQorICAgIH07CisjdW5kZWYgREFUQQorCisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZnB1dHMobXNnLCBzdGRlcnIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCByYyA9IEVYSVRfRkFJTFVSRTsKKyAgICBib29sIGRlYnVnID0gRkFMU0U7CisgICAgYm9vbCBub19vcCA9IEZBTFNFOworICAgIGludCBuLCBjaDsKKyAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKnRlcm1fbmFtZSA9IDA7CisgICAgY2hhciAqYXBwZW5kID0gMDsKKyAgICBjb25zdCBjaGFyICp0YWJfbGlzdCA9IDA7CisKKyAgICBwcmdfbmFtZSA9IF9uY19yb290bmFtZShhcmd2WzBdKTsKKworICAgIGlmICgodGVybV9uYW1lID0gZ2V0ZW52KCJURVJNIikpID09IDApCisJdGVybV9uYW1lID0gImFuc2krdGFicyI7CisKKyAgICAvKiBjYW5ub3QgdXNlIGdldG9wdCwgc2luY2Ugc29tZSBvcHRpb25zIGFyZSB0d28tY2hhcmFjdGVyICovCisgICAgZm9yIChuID0gMTsgbiA8IGFyZ2M7ICsrbikgeworCWNoYXIgKm9wdGlvbiA9IGFyZ3Zbbl07CisJc3dpdGNoIChvcHRpb25bMF0pIHsKKwljYXNlICctJzoKKwkgICAgd2hpbGUgKChjaCA9ICorK29wdGlvbikgIT0gJ1wwJykgeworCQlzd2l0Y2ggKGNoKSB7CisJCWNhc2UgJ2EnOgorCQkgICAgc3dpdGNoICgqKytvcHRpb24pIHsKKwkJICAgIGRlZmF1bHQ6CisJCSAgICBjYXNlICdcMCc6CisJCQl0YWJfbGlzdCA9ICIxLDEwLDE2LDM2LDcyIjsKKwkJCW9wdGlvbi0tOworCQkJLyogQXNzZW1ibGVyLCBJQk0gUy8zNzAsIGZpcnN0IGZvcm1hdCAqLworCQkJYnJlYWs7CisJCSAgICBjYXNlICcyJzoKKwkJCXRhYl9saXN0ID0gIjEsMTAsMTYsNDAsNzIiOworCQkJLyogQXNzZW1ibGVyLCBJQk0gUy8zNzAsIHNlY29uZCBmb3JtYXQgKi8KKwkJCWJyZWFrOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkgICAgc3dpdGNoICgqKytvcHRpb24pIHsKKwkJICAgIGRlZmF1bHQ6CisJCSAgICBjYXNlICdcMCc6CisJCQl0YWJfbGlzdCA9ICIxLDgsMTIsMTYsMjAsNTUiOworCQkJb3B0aW9uLS07CisJCQkvKiBDT0JPTCwgbm9ybWFsIGZvcm1hdCAqLworCQkJYnJlYWs7CisJCSAgICBjYXNlICcyJzoKKwkJCXRhYl9saXN0ID0gIjEsNiwxMCwxNCw0OSI7CisJCQkvKiBDT0JPTCBjb21wYWN0IGZvcm1hdCAqLworCQkJYnJlYWs7CisJCSAgICBjYXNlICczJzoKKwkJCXRhYl9saXN0ID0gIjEsNiwxMCwxNCwxOCwyMiwyNiwzMCwzNCwzOCw0Miw0Niw1MCw1NCw1OCw2Miw2NyI7CisJCQkvKiBDT0JPTCBjb21wYWN0IGZvcm1hdCBleHRlbmRlZCAqLworCQkJYnJlYWs7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSAnZCc6CS8qIG5jdXJzZXMgZXh0ZW5zaW9uICovCisJCSAgICBkZWJ1ZyA9IFRSVUU7CisJCSAgICBicmVhazsKKwkJY2FzZSAnZic6CisJCSAgICB0YWJfbGlzdCA9ICIxLDcsMTEsMTUsMTksMjMiOworCQkgICAgLyogRk9SVFJBTiAqLworCQkgICAgYnJlYWs7CisJCWNhc2UgJ24nOgkvKiBuY3Vyc2VzIGV4dGVuc2lvbiAqLworCQkgICAgbm9fb3AgPSBUUlVFOworCQkgICAgYnJlYWs7CisJCWNhc2UgJ3AnOgorCQkgICAgdGFiX2xpc3QgPSAiMSw1LDksMTMsMTcsMjEsMjUsMjksMzMsMzcsNDEsNDUsNDksNTMsNTcsNjEiOworCQkgICAgLyogUEwvSSAqLworCQkgICAgYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkgICAgdGFiX2xpc3QgPSAiMSwxMCw1NSI7CisJCSAgICAvKiBTTk9CT0wgKi8KKwkJICAgIGJyZWFrOworCQljYXNlICd1JzoKKwkJICAgIHRhYl9saXN0ID0gIjEsMTIsMjAsNDQiOworCQkgICAgLyogVU5JVkFDIDExMDAgQXNzZW1ibGVyICovCisJCSAgICBicmVhazsKKwkJY2FzZSAnVCc6CisJCSAgICArK247CisJCSAgICBpZiAoKisrb3B0aW9uICE9ICdcMCcpIHsKKwkJCXRlcm1fbmFtZSA9IG9wdGlvbjsKKwkJICAgIH0gZWxzZSB7CisJCQl0ZXJtX25hbWUgPSBhcmd2W24rK107CisJCQlvcHRpb24tLTsKKwkJICAgIH0KKwkJICAgIG9wdGlvbiArPSAoKGludCkgc3RybGVuKG9wdGlvbikpIC0gMTsKKwkJICAgIGNvbnRpbnVlOworCQljYXNlICdWJzoKKwkJICAgIHB1dHMoY3Vyc2VzX3ZlcnNpb24oKSk7CisJCSAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworCQlkZWZhdWx0OgorCQkgICAgaWYgKGlzZGlnaXQoVUNoYXIoKm9wdGlvbikpKSB7CisJCQljaGFyICpjb3B5ID0gc3RyZHVwKG9wdGlvbik7CisJCQkqc2tpcF9saXN0KGNvcHkpID0gJ1wwJzsKKwkJCXRhYl9saXN0ID0gY29weTsKKwkJCW9wdGlvbiA9IHNraXBfbGlzdChvcHRpb24pIC0gMTsKKwkJICAgIH0gZWxzZSB7CisJCQl1c2FnZSgpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICcrJzoKKwkgICAgd2hpbGUgKChjaCA9ICorK29wdGlvbikgIT0gJ1wwJykgeworCQlzd2l0Y2ggKGNoKSB7CisJCWNhc2UgJ20nOgorCQkgICAgLyoKKwkJICAgICAqIFRoZSAiK21YWFgiIG9wdGlvbiBpcyB1bmltcGxlbWVudGVkIGJlY2F1c2Ugb25seSB0aGUgbG9uZy1vYnNvbGV0ZQorCQkgICAgICogYXR0NTEwZCBpbXBsZW1lbnRzIHNtZ2wsIHdoaWNoIGlzIG5lZWRlZCB0byBzdXBwb3J0CisJCSAgICAgKiB0aGlzIG9wdGlvbi4KKwkJICAgICAqLworCQkgICAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgICAvKiBzcGVjaWFsIGNhc2Ugb2YgcmVsYXRpdmUgc3RvcHMgc2VwYXJhdGVkIGJ5IHNwYWNlcz8gKi8KKwkJICAgIGlmIChvcHRpb24gPT0gYXJndltuXSArIDEpIHsKKwkJCXRhYl9saXN0ID0gYWRkX3RvX3RhYl9saXN0KCZhcHBlbmQsIGFyZ3Zbbl0pOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBpZiAoYXBwZW5kICE9IDApIHsKKwkJaWYgKHRhYl9saXN0ICE9IChjb25zdCBjaGFyICopIGFwcGVuZCkgeworCQkgICAgLyogb25lIG9mIHRoZSBwcmVkZWZpbmVkIG9wdGlvbnMgd2FzIHVzZWQgKi8KKwkJICAgIGZyZWUoYXBwZW5kKTsKKwkJICAgIGFwcGVuZCA9IDA7CisJCX0KKwkgICAgfQorCSAgICB0YWJfbGlzdCA9IGFkZF90b190YWJfbGlzdCgmYXBwZW5kLCBvcHRpb24pOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgc2V0dXB0ZXJtKHRlcm1fbmFtZSwgU1RET1VUX0ZJTEVOTywgKGludCAqKSAwKTsKKworICAgIG1heF9jb2xzID0gKGNvbHVtbnMgPiAwKSA/IGNvbHVtbnMgOiA4MDsKKworICAgIGlmICghVkFMSURfU1RSSU5HKGNsZWFyX2FsbF90YWJzKSkgeworCWZwcmludGYoc3RkZXJyLAorCQkiJXM6IHRlcm1pbmFsIHR5cGUgJyVzJyBjYW5ub3QgcmVzZXQgdGFic1xuIiwKKwkJcHJnX25hbWUsIHRlcm1fbmFtZSk7CisgICAgfSBlbHNlIGlmICghVkFMSURfU1RSSU5HKHNldF90YWIpKSB7CisJZnByaW50ZihzdGRlcnIsCisJCSIlczogdGVybWluYWwgdHlwZSAnJXMnIGNhbm5vdCBzZXQgdGFic1xuIiwKKwkJcHJnX25hbWUsIHRlcm1fbmFtZSk7CisgICAgfSBlbHNlIGlmIChsZWdhbF90YWJfbGlzdCh0YWJfbGlzdCkpIHsKKwlpbnQgKmxpc3QgPSBkZWNvZGVfdGFicyh0YWJfbGlzdCk7CisKKwlpZiAoIW5vX29wKQorCSAgICB0cHV0cyhjbGVhcl9hbGxfdGFicywgMSwgcHV0Y2gpOworCisJaWYgKGxpc3QgIT0gMCkgeworCSAgICBpZiAoIW5vX29wKQorCQlkb190YWJzKGxpc3QpOworCSAgICBpZiAoZGVidWcpIHsKKwkJZmZsdXNoKHN0ZGVycik7CisJCXByaW50ZigidGFicyAlc1xuIiwgdGFiX2xpc3QpOworCQlwcmludF9ydWxlcihsaXN0KTsKKwkJd3JpdGVfdGFicyhsaXN0KTsKKwkgICAgfQorCSAgICBmcmVlKGxpc3QpOworCX0gZWxzZSBpZiAoZGVidWcpIHsKKwkgICAgZmZsdXNoKHN0ZGVycik7CisJICAgIHByaW50ZigidGFicyAlc1xuIiwgdGFiX2xpc3QpOworCX0KKwlyYyA9IEVYSVRfU1VDQ0VTUzsKKyAgICB9CisgICAgaWYgKGFwcGVuZCAhPSAwKQorCWZyZWUoYXBwZW5kKTsKKyAgICBFeGl0UHJvZ3JhbShyYyk7Cit9CmRpZmYgLS1naXQgYS9wcm9ncy90ZXJtc29ydC5jIGIvcHJvZ3MvdGVybXNvcnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNkODBmOC4uMDAwMDAwMAotLS0gYS9wcm9ncy90ZXJtc29ydC5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE2MyArMCwwIEBACi0vKgotICogdGVybXNvcnQuYyAtLS0gc29ydCBvcmRlciBhcnJheXMgZm9yIHVzZSBieSBpbmZvY21wLgotICoKLSAqIE5vdGU6IHRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgdXNpbmcgTUt0ZXJtc29ydC5zaCwgZG8gbm90IGVkaXQgYnkgaGFuZC4KLSAqLwotc3RhdGljIGNvbnN0IFByZWRJZHggYm9vbF90ZXJtaW5mb19zb3J0W10gPSB7Ci0JIDQwICwJLyogIE9UTVQgICovCi0JIDQxICwJLyogIE9UTkwgICovCi0JIDM3ICwJLyogIE9UYnMgICovCi0JIDM5ICwJLyogIE9UbmMgICovCi0JIDM4ICwJLyogIE9UbnMgICovCi0JIDQyICwJLyogIE9UcHQgICovCi0JIDQzICwJLyogIE9UeHIgICovCi0JIDEgLAkvKiAgYW0gICovCi0JIDI4ICwJLyogIGJjZSAgKi8KLQkgMCAsCS8qICBidyAgKi8KLQkgMjcgLAkvKiAgY2NjICAqLwotCSAyMyAsCS8qICBjaHRzICAqLwotCSAzNSAsCS8qICBjcGl4ICAqLwotCSAzMSAsCS8qICBjcnhtICAqLwotCSAxMSAsCS8qICBkYSAgKi8KLQkgMzIgLAkvKiAgZGFpc3kgICovCi0JIDEyICwJLyogIGRiICAqLwotCSA1ICwJLyogIGVvICAqLwotCSAxNiAsCS8qICBlc2xvayAgKi8KLQkgNiAsCS8qICBnbiAgKi8KLQkgNyAsCS8qICBoYyAgKi8KLQkgMjkgLAkvKiAgaGxzICAqLwotCSA5ICwJLyogIGhzICAqLwotCSAxOCAsCS8qICBoeiAgKi8KLQkgMTAgLAkvKiAgaW4gICovCi0JIDggLAkvKiAga20gICovCi0JIDM2ICwJLyogIGxwaXggICovCi0JIDIyICwJLyogIG1jNWkgICovCi0JIDEzICwJLyogIG1pciAgKi8KLQkgMTQgLAkvKiAgbXNnciAgKi8KLQkgMjYgLAkvKiAgbmRzY3IgICovCi0JIDI1ICwJLyogIG5wYyAgKi8KLQkgMjQgLAkvKiAgbnJybWMgICovCi0JIDIxICwJLyogIG54b24gICovCi0JIDE1ICwJLyogIG9zICAqLwotCSAzNCAsCS8qICBzYW0gICovCi0JIDE5ICwJLyogIHVsICAqLwotCSA0ICwJLyogIHhlbmwgICovCi0JIDMgLAkvKiAgeGhwICAqLwotCSAzMCAsCS8qICB4aHBhICAqLwotCSAyMCAsCS8qICB4b24gICovCi0JIDIgLAkvKiAgeHNiICAqLwotCSAxNyAsCS8qICB4dCAgKi8KLQkgMzMgLAkvKiAgeHZwYSAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBQcmVkSWR4IG51bV90ZXJtaW5mb19zb3J0W10gPSB7Ci0JIDM2ICwJLyogIE9UZEIgICovCi0JIDM0ICwJLyogIE9UZEMgICovCi0JIDM1ICwJLyogIE9UZE4gICovCi0JIDM3ICwJLyogIE9UZFQgICovCi0JIDM4ICwJLyogIE9Ua24gICovCi0JIDMzICwJLyogIE9UdWcgICovCi0JIDMxICwJLyogIGJpdHdpbiAgKi8KLQkgMzIgLAkvKiAgYml0eXBlICAqLwotCSAzMCAsCS8qICBidG5zICAqLwotCSAxNiAsCS8qICBidWZzeiAgKi8KLQkgMTMgLAkvKiAgY29sb3JzICAqLwotCSAwICwJLyogIGNvbHMgICovCi0JIDI4ICwJLyogIGNwcyAgKi8KLQkgMSAsCS8qICBpdCAgKi8KLQkgOSAsCS8qICBsaCAgKi8KLQkgMiAsCS8qICBsaW5lcyAgKi8KLQkgMyAsCS8qICBsbSAgKi8KLQkgMTAgLAkvKiAgbHcgICovCi0JIDExICwJLyogIG1hICAqLwotCSAxOSAsCS8qICBtYWRkciAgKi8KLQkgMjEgLAkvKiAgbWNzICAqLwotCSAyMCAsCS8qICBtanVtcCAgKi8KLQkgMjIgLAkvKiAgbWxzICAqLwotCSAxNSAsCS8qICBuY3YgICovCi0JIDggLAkvKiAgbmxhYiAgKi8KLQkgMjMgLAkvKiAgbnBpbnMgICovCi0JIDI0ICwJLyogIG9yYyAgKi8KLQkgMjYgLAkvKiAgb3JoaSAgKi8KLQkgMjUgLAkvKiAgb3JsICAqLwotCSAyNyAsCS8qICBvcnZpICAqLwotCSAxNCAsCS8qICBwYWlycyAgKi8KLQkgNSAsCS8qICBwYiAgKi8KLQkgMTggLAkvKiAgc3BpbmggICovCi0JIDE3ICwJLyogIHNwaW52ICAqLwotCSA2ICwJLyogIHZ0ICAqLwotCSAyOSAsCS8qICB3aWRjcyAgKi8KLQkgMTIgLAkvKiAgd251bSAgKi8KLQkgNyAsCS8qICB3c2wgICovCi0JIDQgLAkvKiAgeG1jICAqLwotfTsKLQotc3RhdGljIGNvbnN0IFByZWRJZHggc3RyX3Rlcm1pbmZvX3NvcnRbXSA9IHsKLQkgNDAyICwJLyogIE9URzEgICovCi0JIDQwMCAsCS8qICBPVEcyICAqLwotCSA0MDEgLAkvKiAgT1RHMyAgKi8KLQkgNDAzICwJLyogIE9URzQgICovCi0JIDQxMCAsCS8qICBPVEdDICAqLwotCSA0MDcgLAkvKiAgT1RHRCAgKi8KLQkgNDA4ICwJLyogIE9UR0ggICovCi0JIDQwNSAsCS8qICBPVEdMICAqLwotCSA0MDQgLAkvKiAgT1RHUiAgKi8KLQkgNDA2ICwJLyogIE9UR1UgICovCi0JIDQwOSAsCS8qICBPVEdWICAqLwotCSAzOTcgLAkvKiAgT1RiYyAgKi8KLQkgMzk0ICwJLyogIE9UaTIgICovCi0JIDM5OCAsCS8qICBPVGtvICAqLwotCSAzOTkgLAkvKiAgT1RtYSAgKi8KLQkgMzk2ICwJLyogIE9UbmwgICovCi0JIDM5NSAsCS8qICBPVHJzICAqLwotCSAxNDYgLAkvKiAgYWNzYyAgKi8KLQkgMSAsCS8qICBiZWwgICovCi0JIDM3MiAsCS8qICBiaWNyICAqLwotCSAzNzEgLAkvKiAgYmluZWwgICovCi0JIDM3MCAsCS8qICBiaXJlcCAgKi8KLQkgMjYgLAkvKiAgYmxpbmsgICovCi0JIDI3ICwJLyogIGJvbGQgICovCi0JIDQxMyAsCS8qICBib3gxICAqLwotCSAwICwJLyogIGNidCAgKi8KLQkgMzA2ICwJLyogIGNociAgKi8KLQkgMTMgLAkvKiAgY2l2aXMgICovCi0JIDUgLAkvKiAgY2xlYXIgICovCi0JIDkgLAkvKiAgY21kY2ggICovCi0JIDE2ICwJLyogIGNub3JtICAqLwotCSAzNzMgLAkvKiAgY29sb3JubSAgKi8KLQkgMzA0ICwJLyogIGNwaSAgKi8KLQkgMiAsCS8qICBjciAgKi8KLQkgMzYzICwJLyogIGNzaW4gICovCi0JIDM1NCAsCS8qICBjc25tICAqLwotCSAzICwJLyogIGNzciAgKi8KLQkgMTExICwJLyogIGN1YiAgKi8KLQkgMTQgLAkvKiAgY3ViMSAgKi8KLQkgMTA3ICwJLyogIGN1ZCAgKi8KLQkgMTEgLAkvKiAgY3VkMSAgKi8KLQkgMTEyICwJLyogIGN1ZiAgKi8KLQkgMTcgLAkvKiAgY3VmMSAgKi8KLQkgMTAgLAkvKiAgY3VwICAqLwotCSAxMTQgLAkvKiAgY3V1ICAqLwotCSAxOSAsCS8qICBjdXUxICAqLwotCSAzMDcgLAkvKiAgY3ZyICAqLwotCSAyMCAsCS8qICBjdnZpcyAgKi8KLQkgMjc3ICwJLyogIGN3aW4gICovCi0JIDEwNSAsCS8qICBkY2ggICovCi0JIDIxICwJLyogIGRjaDEgICovCi0JIDI3NSAsCS8qICBkY2xrICAqLwotCSAzNzQgLAkvKiAgZGVmYmkgICovCi0JIDMwOCAsCS8qICBkZWZjICAqLwotCSAzNjIgLAkvKiAgZGV2dCAgKi8KLQkgMjgwICwJLyogIGRpYWwgICovCi0JIDMwICwJLyogIGRpbSAgKi8KLQkgMzc4ICwJLyogIGRpc3BjICAqLwotCSAxMDYgLAkvKiAgZGwgICovCi0JIDIyICwJLyogIGRsMSAgKi8KLQkgMzUyICwJLyogIGRvY3IgICovCi0JIDIzICwJLyogIGRzbCAgKi8KLQkgMzcgLAkvKiAgZWNoICAqLwotCSA3ICwJLyogIGVkICAqLwotCSAzODYgLAkvKiAgZWhobG0gICovCi0JIDYgLAkvKiAgZWwgICovCi0JIDI2OSAsCS8qICBlbDEgICovCi0JIDM4NyAsCS8qICBlbGhsbSAgKi8KLQkgMzg4ICwJLyogIGVsb2hsbSAgKi8KLQkgMTU1ICwJLyogIGVuYWNzICAqLwotCSAzNzUgLAkvKiAgZW5kYmkgICovCi0JIDM4OSAsCS8qICBlcmhsbSAgKi8KLQkgMzkwICwJLyogIGV0aGxtICAqLwotCSAzOTEgLAkvKiAgZXZobG0gICovCi0JIDQ2ICwJLyogIGZmICAqLwotCSA0NSAsCS8qICBmbGFzaCAgKi8KLQkgMjczICwJLyogIGZsbiAgKi8KLQkgNDcgLAkvKiAgZnNsICAqLwotCSAzNTggLAkvKiAgZ2V0bSAgKi8KLQkgMjQgLAkvKiAgaGQgICovCi0JIDEyICwJLyogIGhvbWUgICovCi0JIDI4NCAsCS8qICBob29rICAqLwotCSA4ICwJLyogIGhwYSAgKi8KLQkgMTM0ICwJLyogIGh0ICAqLwotCSAxMzIgLAkvKiAgaHRzICAqLwotCSAxMzcgLAkvKiAgaHUgICovCi0JIDI3OSAsCS8qICBodXAgICovCi0JIDEwOCAsCS8qICBpY2ggICovCi0JIDUyICwJLyogIGljaDEgICovCi0JIDUxICwJLyogIGlmICAqLwotCSAxMTAgLAkvKiAgaWwgICovCi0JIDUzICwJLyogIGlsMSAgKi8KLQkgMTI5ICwJLyogIGluZCAgKi8KLQkgMTA5ICwJLyogIGluZG4gICovCi0JIDI5OSAsCS8qICBpbml0YyAgKi8KLQkgMzAwICwJLyogIGluaXRwICAqLwotCSAzMiAsCS8qICBpbnZpcyAgKi8KLQkgNTQgLAkvKiAgaXAgICovCi0JIDEzOCAsCS8qICBpcHJvZyAgKi8KLQkgNDggLAkvKiAgaXMxICAqLwotCSA0OSAsCS8qICBpczIgICovCi0JIDUwICwJLyogIGlzMyAgKi8KLQkgMTg2ICwJLyogIGtCRUcgICovCi0JIDE4NyAsCS8qICBrQ0FOICAqLwotCSAxODggLAkvKiAga0NNRCAgKi8KLQkgMTg5ICwJLyogIGtDUFkgICovCi0JIDE5MCAsCS8qICBrQ1JUICAqLwotCSAxOTEgLAkvKiAga0RDICAqLwotCSAxOTIgLAkvKiAga0RMICAqLwotCSAxOTQgLAkvKiAga0VORCAgKi8KLQkgMTk1ICwJLyogIGtFT0wgICovCi0JIDE5NiAsCS8qICBrRVhUICAqLwotCSAxOTcgLAkvKiAga0ZORCAgKi8KLQkgMTk4ICwJLyogIGtITFAgICovCi0JIDE5OSAsCS8qICBrSE9NICAqLwotCSAyMDAgLAkvKiAga0lDICAqLwotCSAyMDEgLAkvKiAga0xGVCAgKi8KLQkgMjAzICwJLyogIGtNT1YgICovCi0JIDIwMiAsCS8qICBrTVNHICAqLwotCSAyMDQgLAkvKiAga05YVCAgKi8KLQkgMjA1ICwJLyogIGtPUFQgICovCi0JIDIwNyAsCS8qICBrUFJUICAqLwotCSAyMDYgLAkvKiAga1BSViAgKi8KLQkgMjA4ICwJLyogIGtSRE8gICovCi0JIDIxMSAsCS8qICBrUkVTICAqLwotCSAyMTAgLAkvKiAga1JJVCAgKi8KLQkgMjA5ICwJLyogIGtSUEwgICovCi0JIDIxMiAsCS8qICBrU0FWICAqLwotCSAyMTMgLAkvKiAga1NQRCAgKi8KLQkgMjE0ICwJLyogIGtVTkQgICovCi0JIDEzOSAsCS8qICBrYTEgICovCi0JIDE0MCAsCS8qICBrYTMgICovCi0JIDE0MSAsCS8qICBrYjIgICovCi0JIDE1OCAsCS8qICBrYmVnICAqLwotCSA1NSAsCS8qICBrYnMgICovCi0JIDE0MiAsCS8qICBrYzEgICovCi0JIDE0MyAsCS8qICBrYzMgICovCi0JIDE1OSAsCS8qICBrY2FuICAqLwotCSAxNDggLAkvKiAga2NidCAgKi8KLQkgMTYwICwJLyogIGtjbG8gICovCi0JIDU3ICwJLyogIGtjbHIgICovCi0JIDE2MSAsCS8qICBrY21kICAqLwotCSAxNjIgLAkvKiAga2NweSAgKi8KLQkgMTYzICwJLyogIGtjcnQgICovCi0JIDU4ICwJLyogIGtjdGFiICAqLwotCSA3OSAsCS8qICBrY3ViMSAgKi8KLQkgNjEgLAkvKiAga2N1ZDEgICovCi0JIDgzICwJLyogIGtjdWYxICAqLwotCSA4NyAsCS8qICBrY3V1MSAgKi8KLQkgNTkgLAkvKiAga2RjaDEgICovCi0JIDYwICwJLyogIGtkbDEgICovCi0JIDY0ICwJLyogIGtlZCAgKi8KLQkgNjMgLAkvKiAga2VsICAqLwotCSAxNjQgLAkvKiAga2VuZCAgKi8KLQkgMTY1ICwJLyogIGtlbnQgICovCi0JIDE2NiAsCS8qICBrZXh0ICAqLwotCSA2NSAsCS8qICBrZjAgICovCi0JIDY2ICwJLyogIGtmMSAgKi8KLQkgNjcgLAkvKiAga2YxMCAgKi8KLQkgMjE2ICwJLyogIGtmMTEgICovCi0JIDIxNyAsCS8qICBrZjEyICAqLwotCSAyMTggLAkvKiAga2YxMyAgKi8KLQkgMjE5ICwJLyogIGtmMTQgICovCi0JIDIyMCAsCS8qICBrZjE1ICAqLwotCSAyMjEgLAkvKiAga2YxNiAgKi8KLQkgMjIyICwJLyogIGtmMTcgICovCi0JIDIyMyAsCS8qICBrZjE4ICAqLwotCSAyMjQgLAkvKiAga2YxOSAgKi8KLQkgNjggLAkvKiAga2YyICAqLwotCSAyMjUgLAkvKiAga2YyMCAgKi8KLQkgMjI2ICwJLyogIGtmMjEgICovCi0JIDIyNyAsCS8qICBrZjIyICAqLwotCSAyMjggLAkvKiAga2YyMyAgKi8KLQkgMjI5ICwJLyogIGtmMjQgICovCi0JIDIzMCAsCS8qICBrZjI1ICAqLwotCSAyMzEgLAkvKiAga2YyNiAgKi8KLQkgMjMyICwJLyogIGtmMjcgICovCi0JIDIzMyAsCS8qICBrZjI4ICAqLwotCSAyMzQgLAkvKiAga2YyOSAgKi8KLQkgNjkgLAkvKiAga2YzICAqLwotCSAyMzUgLAkvKiAga2YzMCAgKi8KLQkgMjM2ICwJLyogIGtmMzEgICovCi0JIDIzNyAsCS8qICBrZjMyICAqLwotCSAyMzggLAkvKiAga2YzMyAgKi8KLQkgMjM5ICwJLyogIGtmMzQgICovCi0JIDI0MCAsCS8qICBrZjM1ICAqLwotCSAyNDEgLAkvKiAga2YzNiAgKi8KLQkgMjQyICwJLyogIGtmMzcgICovCi0JIDI0MyAsCS8qICBrZjM4ICAqLwotCSAyNDQgLAkvKiAga2YzOSAgKi8KLQkgNzAgLAkvKiAga2Y0ICAqLwotCSAyNDUgLAkvKiAga2Y0MCAgKi8KLQkgMjQ2ICwJLyogIGtmNDEgICovCi0JIDI0NyAsCS8qICBrZjQyICAqLwotCSAyNDggLAkvKiAga2Y0MyAgKi8KLQkgMjQ5ICwJLyogIGtmNDQgICovCi0JIDI1MCAsCS8qICBrZjQ1ICAqLwotCSAyNTEgLAkvKiAga2Y0NiAgKi8KLQkgMjUyICwJLyogIGtmNDcgICovCi0JIDI1MyAsCS8qICBrZjQ4ICAqLwotCSAyNTQgLAkvKiAga2Y0OSAgKi8KLQkgNzEgLAkvKiAga2Y1ICAqLwotCSAyNTUgLAkvKiAga2Y1MCAgKi8KLQkgMjU2ICwJLyogIGtmNTEgICovCi0JIDI1NyAsCS8qICBrZjUyICAqLwotCSAyNTggLAkvKiAga2Y1MyAgKi8KLQkgMjU5ICwJLyogIGtmNTQgICovCi0JIDI2MCAsCS8qICBrZjU1ICAqLwotCSAyNjEgLAkvKiAga2Y1NiAgKi8KLQkgMjYyICwJLyogIGtmNTcgICovCi0JIDI2MyAsCS8qICBrZjU4ICAqLwotCSAyNjQgLAkvKiAga2Y1OSAgKi8KLQkgNzIgLAkvKiAga2Y2ICAqLwotCSAyNjUgLAkvKiAga2Y2MCAgKi8KLQkgMjY2ICwJLyogIGtmNjEgICovCi0JIDI2NyAsCS8qICBrZjYyICAqLwotCSAyNjggLAkvKiAga2Y2MyAgKi8KLQkgNzMgLAkvKiAga2Y3ICAqLwotCSA3NCAsCS8qICBrZjggICovCi0JIDc1ICwJLyogIGtmOSAgKi8KLQkgMTY3ICwJLyogIGtmbmQgICovCi0JIDE2OCAsCS8qICBraGxwICAqLwotCSA3NiAsCS8qICBraG9tZSAgKi8KLQkgODYgLAkvKiAga2h0cyAgKi8KLQkgNzcgLAkvKiAga2ljaDEgICovCi0JIDc4ICwJLyogIGtpbDEgICovCi0JIDg0ICwJLyogIGtpbmQgICovCi0JIDgwICwJLyogIGtsbCAgKi8KLQkgMzU1ICwJLyogIGttb3VzICAqLwotCSAxNzEgLAkvKiAga21vdiAgKi8KLQkgMTY5ICwJLyogIGttcmsgICovCi0JIDE3MCAsCS8qICBrbXNnICAqLwotCSA4MSAsCS8qICBrbnAgICovCi0JIDE3MiAsCS8qICBrbnh0ICAqLwotCSAxNzMgLAkvKiAga29wbiAgKi8KLQkgMTc0ICwJLyogIGtvcHQgICovCi0JIDgyICwJLyogIGtwcCAgKi8KLQkgMTc2ICwJLyogIGtwcnQgICovCi0JIDE3NSAsCS8qICBrcHJ2ICAqLwotCSAxNzcgLAkvKiAga3JkbyAgKi8KLQkgMTc4ICwJLyogIGtyZWYgICovCi0JIDE4MiAsCS8qICBrcmVzICAqLwotCSAxNzkgLAkvKiAga3JmciAgKi8KLQkgODUgLAkvKiAga3JpICAqLwotCSA2MiAsCS8qICBrcm1pciAgKi8KLQkgMTgwICwJLyogIGtycGwgICovCi0JIDE4MSAsCS8qICBrcnN0ICAqLwotCSAxODMgLAkvKiAga3NhdiAgKi8KLQkgMTkzICwJLyogIGtzbHQgICovCi0JIDE4NCAsCS8qICBrc3BkICAqLwotCSA1NiAsCS8qICBrdGJjICAqLwotCSAxODUgLAkvKiAga3VuZCAgKi8KLQkgOTAgLAkvKiAgbGYwICAqLwotCSA5MSAsCS8qICBsZjEgICovCi0JIDkyICwJLyogIGxmMTAgICovCi0JIDkzICwJLyogIGxmMiAgKi8KLQkgOTQgLAkvKiAgbGYzICAqLwotCSA5NSAsCS8qICBsZjQgICovCi0JIDk2ICwJLyogIGxmNSAgKi8KLQkgOTcgLAkvKiAgbGY2ICAqLwotCSA5OCAsCS8qICBsZjcgICovCi0JIDk5ICwJLyogIGxmOCAgKi8KLQkgMTAwICwJLyogIGxmOSAgKi8KLQkgMTggLAkvKiAgbGwgICovCi0JIDMwNSAsCS8qICBscGkgICovCi0JIDExOCAsCS8qICBtYzAgICovCi0JIDExOSAsCS8qICBtYzQgICovCi0JIDEyMCAsCS8qICBtYzUgICovCi0JIDE0NCAsCS8qICBtYzVwICAqLwotCSAzMzYgLAkvKiAgbWN1YiAgKi8KLQkgMzMwICwJLyogIG1jdWIxICAqLwotCSAzMzUgLAkvKiAgbWN1ZCAgKi8KLQkgMzI5ICwJLyogIG1jdWQxICAqLwotCSAzMzcgLAkvKiAgbWN1ZiAgKi8KLQkgMzMxICwJLyogIG1jdWYxICAqLwotCSAzMzggLAkvKiAgbWN1dSAgKi8KLQkgMzMzICwJLyogIG1jdXUxICAqLwotCSA0MTEgLAkvKiAgbWVtbCAgKi8KLQkgNDEyICwJLyogIG1lbXUgICovCi0JIDI3MCAsCS8qICBtZ2MgICovCi0JIDMyOCAsCS8qICBtaHBhICAqLwotCSAzNTYgLAkvKiAgbWluZm8gICovCi0JIDE1ICwJLyogIG1yY3VwICAqLwotCSAzMzIgLAkvKiAgbXZwYSAgKi8KLQkgMTAzICwJLyogIG5lbCAgKi8KLQkgMjk4ICwJLyogIG9jICAqLwotCSAyOTcgLAkvKiAgb3AgICovCi0JIDEwNCAsCS8qICBwYWQgICovCi0JIDI4NSAsCS8qICBwYXVzZSAgKi8KLQkgMzgzICwJLyogIHBjdHJtICAqLwotCSAxMTUgLAkvKiAgcGZrZXkgICovCi0JIDExNiAsCS8qICBwZmxvYyAgKi8KLQkgMTE3ICwJLyogIHBmeCAgKi8KLQkgMzYxICwJLyogIHBmeGwgICovCi0JIDE0NyAsCS8qICBwbG4gICovCi0JIDMzNCAsCS8qICBwb3JkZXIgICovCi0JIDMzICwJLyogIHByb3QgICovCi0JIDI4MyAsCS8qICBwdWxzZSAgKi8KLQkgMjgxICwJLyogIHFkaWFsICAqLwotCSAzNDggLAkvKiAgcmJpbSAgKi8KLQkgMTI2ICwJLyogIHJjICAqLwotCSAzNDkgLAkvKiAgcmNzZCAgKi8KLQkgMTIxICwJLyogIHJlcCAgKi8KLQkgMzU3ICwJLyogIHJlcW1wICAqLwotCSAzNCAsCS8qICByZXYgICovCi0JIDEyNSAsCS8qICByZiAgKi8KLQkgMjE1ICwJLyogIHJmaSAgKi8KLQkgMTMwICwJLyogIHJpICAqLwotCSAxMTMgLAkvKiAgcmluICAqLwotCSAzMjEgLAkvKiAgcml0bSAgKi8KLQkgMzIyICwJLyogIHJsbSAgKi8KLQkgMzggLAkvKiAgcm1hY3MgICovCi0JIDE1MiAsCS8qICBybWFtICAqLwotCSAyNzYgLAkvKiAgcm1jbGsgICovCi0JIDQwICwJLyogIHJtY3VwICAqLwotCSA0MSAsCS8qICBybWRjICAqLwotCSAzMjMgLAkvKiAgcm1pY20gICovCi0JIDQyICwJLyogIHJtaXIgICovCi0JIDg4ICwJLyogIHJta3ggICovCi0JIDE1NyAsCS8qICBybWxuICAqLwotCSAxMDEgLAkvKiAgcm1tICAqLwotCSAxNDUgLAkvKiAgcm1wICAqLwotCSAzODAgLAkvKiAgcm1wY2ggICovCi0JIDM4MiAsCS8qICBybXNjICAqLwotCSA0MyAsCS8qICBybXNvICAqLwotCSA0NCAsCS8qICBybXVsICAqLwotCSAxNTAgLAkvKiAgcm14b24gICovCi0JIDEyMiAsCS8qICByczEgICovCi0JIDEyMyAsCS8qICByczIgICovCi0JIDEyNCAsCS8qICByczMgICovCi0JIDMyNCAsCS8qICByc2htICAqLwotCSAzMjUgLAkvKiAgcnN1Ym0gICovCi0JIDMyNiAsCS8qICByc3VwbSAgKi8KLQkgMzI3ICwJLyogIHJ1bSAgKi8KLQkgMzIwICwJLyogIHJ3aWRtICAqLwotCSAzNjQgLAkvKiAgczBkcyAgKi8KLQkgMzY1ICwJLyogIHMxZHMgICovCi0JIDM2NiAsCS8qICBzMmRzICAqLwotCSAzNjcgLAkvKiAgczNkcyAgKi8KLQkgMzQ2ICwJLyogIHNiaW0gICovCi0JIDEyOCAsCS8qICBzYyAgKi8KLQkgMzg1ICwJLyogIHNjZXNhICAqLwotCSAzODQgLAkvKiAgc2Nlc2MgICovCi0JIDI3NCAsCS8qICBzY2xrICAqLwotCSAzMDEgLAkvKiAgc2NwICAqLwotCSAzMzkgLAkvKiAgc2NzICAqLwotCSAzNDcgLAkvKiAgc2NzZCAgKi8KLQkgMzEwICwJLyogIHNkcmZxICAqLwotCSAzNjAgLAkvKiAgc2V0YWIgICovCi0JIDM1OSAsCS8qICBzZXRhZiAgKi8KLQkgMzAzICwJLyogIHNldGIgICovCi0JIDM3NiAsCS8qICBzZXRjb2xvciAgKi8KLQkgMzAyICwJLyogIHNldGYgICovCi0JIDEzMSAsCS8qICBzZ3IgICovCi0JIDM5ICwJLyogIHNncjAgICovCi0JIDM5MiAsCS8qICBzZ3IxICAqLwotCSAzMTEgLAkvKiAgc2l0bSAgKi8KLQkgMzkzICwJLyogIHNsZW5ndGggICovCi0JIDM3NyAsCS8qICBzbGluZXMgICovCi0JIDMxMiAsCS8qICBzbG0gICovCi0JIDI1ICwJLyogIHNtYWNzICAqLwotCSAxNTEgLAkvKiAgc21hbSAgKi8KLQkgMjggLAkvKiAgc21jdXAgICovCi0JIDI5ICwJLyogIHNtZGMgICovCi0JIDM0MCAsCS8qICBzbWdiICAqLwotCSAzNDEgLAkvKiAgc21nYnAgICovCi0JIDI3MSAsCS8qICBzbWdsICAqLwotCSAzNDIgLAkvKiAgc21nbHAgICovCi0JIDM2OCAsCS8qICBzbWdsciAgKi8KLQkgMjcyICwJLyogIHNtZ3IgICovCi0JIDM0MyAsCS8qICBzbWdycCAgKi8KLQkgMzQ0ICwJLyogIHNtZ3QgICovCi0JIDM2OSAsCS8qICBzbWd0YiAgKi8KLQkgMzQ1ICwJLyogIHNtZ3RwICAqLwotCSAzMTMgLAkvKiAgc21pY20gICovCi0JIDMxICwJLyogIHNtaXIgICovCi0JIDg5ICwJLyogIHNta3ggICovCi0JIDE1NiAsCS8qICBzbWxuICAqLwotCSAxMDIgLAkvKiAgc21tICAqLwotCSAzNzkgLAkvKiAgc21wY2ggICovCi0JIDM4MSAsCS8qICBzbXNjICAqLwotCSAzNSAsCS8qICBzbXNvICAqLwotCSAzNiAsCS8qICBzbXVsICAqLwotCSAxNDkgLAkvKiAgc214b24gICovCi0JIDMxNCAsCS8qICBzbmxxICAqLwotCSAzMTUgLAkvKiAgc25ybXEgICovCi0JIDMxNiAsCS8qICBzc2htICAqLwotCSAzMTcgLAkvKiAgc3N1Ym0gICovCi0JIDMxOCAsCS8qICBzc3VwbSAgKi8KLQkgMzUwICwJLyogIHN1YmNzICAqLwotCSAzMTkgLAkvKiAgc3VtICAqLwotCSAzNTEgLAkvKiAgc3VwY3MgICovCi0JIDMwOSAsCS8qICBzd2lkbSAgKi8KLQkgNCAsCS8qICB0YmMgICovCi0JIDI4MiAsCS8qICB0b25lICAqLwotCSAxMzUgLAkvKiAgdHNsICAqLwotCSAyODcgLAkvKiAgdTAgICovCi0JIDI4OCAsCS8qICB1MSAgKi8KLQkgMjg5ICwJLyogIHUyICAqLwotCSAyOTAgLAkvKiAgdTMgICovCi0JIDI5MSAsCS8qICB1NCAgKi8KLQkgMjkyICwJLyogIHU1ICAqLwotCSAyOTMgLAkvKiAgdTYgICovCi0JIDI5NCAsCS8qICB1NyAgKi8KLQkgMjk1ICwJLyogIHU4ICAqLwotCSAyOTYgLAkvKiAgdTkgICovCi0JIDEzNiAsCS8qICB1YyAgKi8KLQkgMTI3ICwJLyogIHZwYSAgKi8KLQkgMjg2ICwJLyogIHdhaXQgICovCi0JIDEzMyAsCS8qICB3aW5kICAqLwotCSAyNzggLAkvKiAgd2luZ28gICovCi0JIDE1NCAsCS8qICB4b2ZmYyAgKi8KLQkgMTUzICwJLyogIHhvbmMgICovCi0JIDM1MyAsCS8qICB6ZXJvbSAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBQcmVkSWR4IGJvb2xfdmFyaWFibGVfc29ydFtdID0gewotCSAwICwJLyogIGF1dG9fbGVmdF9tYXJnaW4gICovCi0JIDEgLAkvKiAgYXV0b19yaWdodF9tYXJnaW4gICovCi0JIDI4ICwJLyogIGJhY2tfY29sb3JfZXJhc2UgICovCi0JIDM3ICwJLyogIGJhY2tzcGFjZXNfd2l0aF9icyAgKi8KLQkgMjcgLAkvKiAgY2FuX2NoYW5nZSAgKi8KLQkgMyAsCS8qICBjZW9sX3N0YW5kb3V0X2dsaXRjaCAgKi8KLQkgMzAgLAkvKiAgY29sX2FkZHJfZ2xpdGNoICAqLwotCSAzNSAsCS8qICBjcGlfY2hhbmdlc19yZXMgICovCi0JIDMxICwJLyogIGNyX2NhbmNlbHNfbWljcm9fbW9kZSAgKi8KLQkgMzggLAkvKiAgY3J0X25vX3Njcm9sbGluZyAgKi8KLQkgMTcgLAkvKiAgZGVzdF90YWJzX21hZ2ljX3Ntc28gICovCi0JIDQgLAkvKiAgZWF0X25ld2xpbmVfZ2xpdGNoICAqLwotCSA1ICwJLyogIGVyYXNlX292ZXJzdHJpa2UgICovCi0JIDYgLAkvKiAgZ2VuZXJpY190eXBlICAqLwotCSA0MCAsCS8qICBnbnVfaGFzX21ldGFfa2V5ICAqLwotCSA3ICwJLyogIGhhcmRfY29weSAgKi8KLQkgMjMgLAkvKiAgaGFyZF9jdXJzb3IgICovCi0JIDQyICwJLyogIGhhc19oYXJkd2FyZV90YWJzICAqLwotCSA4ICwJLyogIGhhc19tZXRhX2tleSAgKi8KLQkgMzIgLAkvKiAgaGFzX3ByaW50X3doZWVsICAqLwotCSA5ICwJLyogIGhhc19zdGF0dXNfbGluZSAgKi8KLQkgMjkgLAkvKiAgaHVlX2xpZ2h0bmVzc19zYXR1cmF0aW9uICAqLwotCSAxMCAsCS8qICBpbnNlcnRfbnVsbF9nbGl0Y2ggICovCi0JIDQxICwJLyogIGxpbmVmZWVkX2lzX25ld2xpbmUgICovCi0JIDM2ICwJLyogIGxwaV9jaGFuZ2VzX3JlcyAgKi8KLQkgMTEgLAkvKiAgbWVtb3J5X2Fib3ZlICAqLwotCSAxMiAsCS8qICBtZW1vcnlfYmVsb3cgICovCi0JIDEzICwJLyogIG1vdmVfaW5zZXJ0X21vZGUgICovCi0JIDE0ICwJLyogIG1vdmVfc3RhbmRvdXRfbW9kZSAgKi8KLQkgMjEgLAkvKiAgbmVlZHNfeG9uX3hvZmYgICovCi0JIDM5ICwJLyogIG5vX2NvcnJlY3RseV93b3JraW5nX2NyICAqLwotCSAyICwJLyogIG5vX2VzY19jdGxjICAqLwotCSAyNSAsCS8qICBub19wYWRfY2hhciAgKi8KLQkgMjYgLAkvKiAgbm9uX2Rlc3Rfc2Nyb2xsX3JlZ2lvbiAgKi8KLQkgMjQgLAkvKiAgbm9uX3Jldl9ybWN1cCAgKi8KLQkgMTUgLAkvKiAgb3Zlcl9zdHJpa2UgICovCi0JIDIyICwJLyogIHBydHJfc2lsZW50ICAqLwotCSA0MyAsCS8qICByZXR1cm5fZG9lc19jbHJfZW9sICAqLwotCSAzMyAsCS8qICByb3dfYWRkcl9nbGl0Y2ggICovCi0JIDM0ICwJLyogIHNlbWlfYXV0b19yaWdodF9tYXJnaW4gICovCi0JIDE2ICwJLyogIHN0YXR1c19saW5lX2VzY19vayAgKi8KLQkgMTggLAkvKiAgdGlsZGVfZ2xpdGNoICAqLwotCSAxOSAsCS8qICB0cmFuc3BhcmVudF91bmRlcmxpbmUgICovCi0JIDIwICwJLyogIHhvbl94b2ZmICAqLwotfTsKLQotc3RhdGljIGNvbnN0IFByZWRJZHggbnVtX3ZhcmlhYmxlX3NvcnRbXSA9IHsKLQkgMzYgLAkvKiAgYmFja3NwYWNlX2RlbGF5ICAqLwotCSAzMSAsCS8qICBiaXRfaW1hZ2VfZW50d2luaW5nICAqLwotCSAzMiAsCS8qICBiaXRfaW1hZ2VfdHlwZSAgKi8KLQkgMTYgLAkvKiAgYnVmZmVyX2NhcGFjaXR5ICAqLwotCSAzMCAsCS8qICBidXR0b25zICAqLwotCSAzNCAsCS8qICBjYXJyaWFnZV9yZXR1cm5fZGVsYXkgICovCi0JIDAgLAkvKiAgY29sdW1ucyAgKi8KLQkgMTggLAkvKiAgZG90X2hvcnpfc3BhY2luZyAgKi8KLQkgMTcgLAkvKiAgZG90X3ZlcnRfc3BhY2luZyAgKi8KLQkgMzcgLAkvKiAgaG9yaXpvbnRhbF90YWJfZGVsYXkgICovCi0JIDEgLAkvKiAgaW5pdF90YWJzICAqLwotCSA5ICwJLyogIGxhYmVsX2hlaWdodCAgKi8KLQkgMTAgLAkvKiAgbGFiZWxfd2lkdGggICovCi0JIDIgLAkvKiAgbGluZXMgICovCi0JIDMgLAkvKiAgbGluZXNfb2ZfbWVtb3J5ICAqLwotCSA0ICwJLyogIG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggICovCi0JIDMzICwJLyogIG1hZ2ljX2Nvb2tpZV9nbGl0Y2hfdWwgICovCi0JIDExICwJLyogIG1heF9hdHRyaWJ1dGVzICAqLwotCSAxMyAsCS8qICBtYXhfY29sb3JzICAqLwotCSAxOSAsCS8qICBtYXhfbWljcm9fYWRkcmVzcyAgKi8KLQkgMjAgLAkvKiAgbWF4X21pY3JvX2p1bXAgICovCi0JIDE0ICwJLyogIG1heF9wYWlycyAgKi8KLQkgMTIgLAkvKiAgbWF4aW11bV93aW5kb3dzICAqLwotCSAyMSAsCS8qICBtaWNyb19jb2xfc2l6ZSAgKi8KLQkgMjIgLAkvKiAgbWljcm9fbGluZV9zaXplICAqLwotCSAzNSAsCS8qICBuZXdfbGluZV9kZWxheSAgKi8KLQkgMTUgLAkvKiAgbm9fY29sb3JfdmlkZW8gICovCi0JIDggLAkvKiAgbnVtX2xhYmVscyAgKi8KLQkgMzggLAkvKiAgbnVtYmVyX29mX2Z1bmN0aW9uX2tleXMgICovCi0JIDIzICwJLyogIG51bWJlcl9vZl9waW5zICAqLwotCSAyNCAsCS8qICBvdXRwdXRfcmVzX2NoYXIgICovCi0JIDI2ICwJLyogIG91dHB1dF9yZXNfaG9yel9pbmNoICAqLwotCSAyNSAsCS8qICBvdXRwdXRfcmVzX2xpbmUgICovCi0JIDI3ICwJLyogIG91dHB1dF9yZXNfdmVydF9pbmNoICAqLwotCSA1ICwJLyogIHBhZGRpbmdfYmF1ZF9yYXRlICAqLwotCSAyOCAsCS8qICBwcmludF9yYXRlICAqLwotCSA2ICwJLyogIHZpcnR1YWxfdGVybWluYWwgICovCi0JIDI5ICwJLyogIHdpZGVfY2hhcl9zaXplICAqLwotCSA3ICwJLyogIHdpZHRoX3N0YXR1c19saW5lICAqLwotfTsKLQotc3RhdGljIGNvbnN0IFByZWRJZHggc3RyX3ZhcmlhYmxlX3NvcnRbXSA9IHsKLQkgNDA2ICwJLyogIGFjc19idGVlICAqLwotCSAxNDYgLAkvKiAgYWNzX2NoYXJzICAqLwotCSA0MDggLAkvKiAgYWNzX2hsaW5lICAqLwotCSA0MDEgLAkvKiAgYWNzX2xsY29ybmVyICAqLwotCSA0MDMgLAkvKiAgYWNzX2xyY29ybmVyICAqLwotCSA0MDQgLAkvKiAgYWNzX2x0ZWUgICovCi0JIDQxMCAsCS8qICBhY3NfcGx1cyAgKi8KLQkgNDA1ICwJLyogIGFjc19ydGVlICAqLwotCSA0MDcgLAkvKiAgYWNzX3R0ZWUgICovCi0JIDQwMCAsCS8qICBhY3NfdWxjb3JuZXIgICovCi0JIDQwMiAsCS8qICBhY3NfdXJjb3JuZXIgICovCi0JIDQwOSAsCS8qICBhY3NfdmxpbmUgICovCi0JIDM4NSAsCS8qICBhbHRfc2NhbmNvZGVfZXNjICAqLwotCSAzOTkgLAkvKiAgYXJyb3dfa2V5X21hcCAgKi8KLQkgMCAsCS8qICBiYWNrX3RhYiAgKi8KLQkgMzk3ICwJLyogIGJhY2tzcGFjZV9pZl9ub3RfYnMgICovCi0JIDEgLAkvKiAgYmVsbCAgKi8KLQkgMzcyICwJLyogIGJpdF9pbWFnZV9jYXJyaWFnZV9yZXR1cm4gICovCi0JIDM3MSAsCS8qICBiaXRfaW1hZ2VfbmV3bGluZSAgKi8KLQkgMzcwICwJLyogIGJpdF9pbWFnZV9yZXBlYXQgICovCi0JIDQxMyAsCS8qICBib3hfY2hhcnNfMSAgKi8KLQkgMiAsCS8qICBjYXJyaWFnZV9yZXR1cm4gICovCi0JIDMwNCAsCS8qICBjaGFuZ2VfY2hhcl9waXRjaCAgKi8KLQkgMzA1ICwJLyogIGNoYW5nZV9saW5lX3BpdGNoICAqLwotCSAzMDYgLAkvKiAgY2hhbmdlX3Jlc19ob3J6ICAqLwotCSAzMDcgLAkvKiAgY2hhbmdlX3Jlc192ZXJ0ICAqLwotCSAzICwJLyogIGNoYW5nZV9zY3JvbGxfcmVnaW9uICAqLwotCSAxNDUgLAkvKiAgY2hhcl9wYWRkaW5nICAqLwotCSAzNTQgLAkvKiAgY2hhcl9zZXRfbmFtZXMgICovCi0JIDQgLAkvKiAgY2xlYXJfYWxsX3RhYnMgICovCi0JIDI3MCAsCS8qICBjbGVhcl9tYXJnaW5zICAqLwotCSA1ICwJLyogIGNsZWFyX3NjcmVlbiAgKi8KLQkgMjY5ICwJLyogIGNscl9ib2wgICovCi0JIDYgLAkvKiAgY2xyX2VvbCAgKi8KLQkgNyAsCS8qICBjbHJfZW9zICAqLwotCSAzNjMgLAkvKiAgY29kZV9zZXRfaW5pdCAgKi8KLQkgMzczICwJLyogIGNvbG9yX25hbWVzICAqLwotCSA4ICwJLyogIGNvbHVtbl9hZGRyZXNzICAqLwotCSA5ICwJLyogIGNvbW1hbmRfY2hhcmFjdGVyICAqLwotCSAyNzcgLAkvKiAgY3JlYXRlX3dpbmRvdyAgKi8KLQkgMTAgLAkvKiAgY3Vyc29yX2FkZHJlc3MgICovCi0JIDExICwJLyogIGN1cnNvcl9kb3duICAqLwotCSAxMiAsCS8qICBjdXJzb3JfaG9tZSAgKi8KLQkgMTMgLAkvKiAgY3Vyc29yX2ludmlzaWJsZSAgKi8KLQkgMTQgLAkvKiAgY3Vyc29yX2xlZnQgICovCi0JIDE1ICwJLyogIGN1cnNvcl9tZW1fYWRkcmVzcyAgKi8KLQkgMTYgLAkvKiAgY3Vyc29yX25vcm1hbCAgKi8KLQkgMTcgLAkvKiAgY3Vyc29yX3JpZ2h0ICAqLwotCSAxOCAsCS8qICBjdXJzb3JfdG9fbGwgICovCi0JIDE5ICwJLyogIGN1cnNvcl91cCAgKi8KLQkgMjAgLAkvKiAgY3Vyc29yX3Zpc2libGUgICovCi0JIDM3NCAsCS8qICBkZWZpbmVfYml0X2ltYWdlX3JlZ2lvbiAgKi8KLQkgMzA4ICwJLyogIGRlZmluZV9jaGFyICAqLwotCSAyMSAsCS8qICBkZWxldGVfY2hhcmFjdGVyICAqLwotCSAyMiAsCS8qICBkZWxldGVfbGluZSAgKi8KLQkgMzYyICwJLyogIGRldmljZV90eXBlICAqLwotCSAyODAgLAkvKiAgZGlhbF9waG9uZSAgKi8KLQkgMjMgLAkvKiAgZGlzX3N0YXR1c19saW5lICAqLwotCSAyNzUgLAkvKiAgZGlzcGxheV9jbG9jayAgKi8KLQkgMzc4ICwJLyogIGRpc3BsYXlfcGNfY2hhciAgKi8KLQkgMjQgLAkvKiAgZG93bl9oYWxmX2xpbmUgICovCi0JIDE1NSAsCS8qICBlbmFfYWNzICAqLwotCSAzNzUgLAkvKiAgZW5kX2JpdF9pbWFnZV9yZWdpb24gICovCi0JIDI1ICwJLyogIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgICovCi0JIDE1MSAsCS8qICBlbnRlcl9hbV9tb2RlICAqLwotCSAyNiAsCS8qICBlbnRlcl9ibGlua19tb2RlICAqLwotCSAyNyAsCS8qICBlbnRlcl9ib2xkX21vZGUgICovCi0JIDI4ICwJLyogIGVudGVyX2NhX21vZGUgICovCi0JIDI5ICwJLyogIGVudGVyX2RlbGV0ZV9tb2RlICAqLwotCSAzMCAsCS8qICBlbnRlcl9kaW1fbW9kZSAgKi8KLQkgMzA5ICwJLyogIGVudGVyX2RvdWJsZXdpZGVfbW9kZSAgKi8KLQkgMzEwICwJLyogIGVudGVyX2RyYWZ0X3F1YWxpdHkgICovCi0JIDM4NiAsCS8qICBlbnRlcl9ob3Jpem9udGFsX2hsX21vZGUgICovCi0JIDMxICwJLyogIGVudGVyX2luc2VydF9tb2RlICAqLwotCSAzMTEgLAkvKiAgZW50ZXJfaXRhbGljc19tb2RlICAqLwotCSAzODcgLAkvKiAgZW50ZXJfbGVmdF9obF9tb2RlICAqLwotCSAzMTIgLAkvKiAgZW50ZXJfbGVmdHdhcmRfbW9kZSAgKi8KLQkgMzg4ICwJLyogIGVudGVyX2xvd19obF9tb2RlICAqLwotCSAzMTMgLAkvKiAgZW50ZXJfbWljcm9fbW9kZSAgKi8KLQkgMzE0ICwJLyogIGVudGVyX25lYXJfbGV0dGVyX3F1YWxpdHkgICovCi0JIDMxNSAsCS8qICBlbnRlcl9ub3JtYWxfcXVhbGl0eSAgKi8KLQkgMzc5ICwJLyogIGVudGVyX3BjX2NoYXJzZXRfbW9kZSAgKi8KLQkgMzMgLAkvKiAgZW50ZXJfcHJvdGVjdGVkX21vZGUgICovCi0JIDM0ICwJLyogIGVudGVyX3JldmVyc2VfbW9kZSAgKi8KLQkgMzg5ICwJLyogIGVudGVyX3JpZ2h0X2hsX21vZGUgICovCi0JIDM4MSAsCS8qICBlbnRlcl9zY2FuY29kZV9tb2RlICAqLwotCSAzMiAsCS8qICBlbnRlcl9zZWN1cmVfbW9kZSAgKi8KLQkgMzE2ICwJLyogIGVudGVyX3NoYWRvd19tb2RlICAqLwotCSAzNSAsCS8qICBlbnRlcl9zdGFuZG91dF9tb2RlICAqLwotCSAzMTcgLAkvKiAgZW50ZXJfc3Vic2NyaXB0X21vZGUgICovCi0JIDMxOCAsCS8qICBlbnRlcl9zdXBlcnNjcmlwdF9tb2RlICAqLwotCSAzOTAgLAkvKiAgZW50ZXJfdG9wX2hsX21vZGUgICovCi0JIDM2ICwJLyogIGVudGVyX3VuZGVybGluZV9tb2RlICAqLwotCSAzMTkgLAkvKiAgZW50ZXJfdXB3YXJkX21vZGUgICovCi0JIDM5MSAsCS8qICBlbnRlcl92ZXJ0aWNhbF9obF9tb2RlICAqLwotCSAxNDkgLAkvKiAgZW50ZXJfeG9uX21vZGUgICovCi0JIDM3ICwJLyogIGVyYXNlX2NoYXJzICAqLwotCSAzOCAsCS8qICBleGl0X2FsdF9jaGFyc2V0X21vZGUgICovCi0JIDE1MiAsCS8qICBleGl0X2FtX21vZGUgICovCi0JIDM5ICwJLyogIGV4aXRfYXR0cmlidXRlX21vZGUgICovCi0JIDQwICwJLyogIGV4aXRfY2FfbW9kZSAgKi8KLQkgNDEgLAkvKiAgZXhpdF9kZWxldGVfbW9kZSAgKi8KLQkgMzIwICwJLyogIGV4aXRfZG91Ymxld2lkZV9tb2RlICAqLwotCSA0MiAsCS8qICBleGl0X2luc2VydF9tb2RlICAqLwotCSAzMjEgLAkvKiAgZXhpdF9pdGFsaWNzX21vZGUgICovCi0JIDMyMiAsCS8qICBleGl0X2xlZnR3YXJkX21vZGUgICovCi0JIDMyMyAsCS8qICBleGl0X21pY3JvX21vZGUgICovCi0JIDM4MCAsCS8qICBleGl0X3BjX2NoYXJzZXRfbW9kZSAgKi8KLQkgMzgyICwJLyogIGV4aXRfc2NhbmNvZGVfbW9kZSAgKi8KLQkgMzI0ICwJLyogIGV4aXRfc2hhZG93X21vZGUgICovCi0JIDQzICwJLyogIGV4aXRfc3RhbmRvdXRfbW9kZSAgKi8KLQkgMzI1ICwJLyogIGV4aXRfc3Vic2NyaXB0X21vZGUgICovCi0JIDMyNiAsCS8qICBleGl0X3N1cGVyc2NyaXB0X21vZGUgICovCi0JIDQ0ICwJLyogIGV4aXRfdW5kZXJsaW5lX21vZGUgICovCi0JIDMyNyAsCS8qICBleGl0X3Vwd2FyZF9tb2RlICAqLwotCSAxNTAgLAkvKiAgZXhpdF94b25fbW9kZSAgKi8KLQkgMjg1ICwJLyogIGZpeGVkX3BhdXNlICAqLwotCSAyODQgLAkvKiAgZmxhc2hfaG9vayAgKi8KLQkgNDUgLAkvKiAgZmxhc2hfc2NyZWVuICAqLwotCSA0NiAsCS8qICBmb3JtX2ZlZWQgICovCi0JIDQ3ICwJLyogIGZyb21fc3RhdHVzX2xpbmUgICovCi0JIDM1OCAsCS8qICBnZXRfbW91c2UgICovCi0JIDI3OCAsCS8qICBnb3RvX3dpbmRvdyAgKi8KLQkgMjc5ICwJLyogIGhhbmd1cCAgKi8KLQkgNDggLAkvKiAgaW5pdF8xc3RyaW5nICAqLwotCSA0OSAsCS8qICBpbml0XzJzdHJpbmcgICovCi0JIDUwICwJLyogIGluaXRfM3N0cmluZyAgKi8KLQkgNTEgLAkvKiAgaW5pdF9maWxlICAqLwotCSAxMzggLAkvKiAgaW5pdF9wcm9nICAqLwotCSAyOTkgLAkvKiAgaW5pdGlhbGl6ZV9jb2xvciAgKi8KLQkgMzAwICwJLyogIGluaXRpYWxpemVfcGFpciAgKi8KLQkgNTIgLAkvKiAgaW5zZXJ0X2NoYXJhY3RlciAgKi8KLQkgNTMgLAkvKiAgaW5zZXJ0X2xpbmUgICovCi0JIDU0ICwJLyogIGluc2VydF9wYWRkaW5nICAqLwotCSAxMzkgLAkvKiAga2V5X2ExICAqLwotCSAxNDAgLAkvKiAga2V5X2EzICAqLwotCSAxNDEgLAkvKiAga2V5X2IyICAqLwotCSA1NSAsCS8qICBrZXlfYmFja3NwYWNlICAqLwotCSAxNTggLAkvKiAga2V5X2JlZyAgKi8KLQkgMTQ4ICwJLyogIGtleV9idGFiICAqLwotCSAxNDIgLAkvKiAga2V5X2MxICAqLwotCSAxNDMgLAkvKiAga2V5X2MzICAqLwotCSAxNTkgLAkvKiAga2V5X2NhbmNlbCAgKi8KLQkgNTYgLAkvKiAga2V5X2NhdGFiICAqLwotCSA1NyAsCS8qICBrZXlfY2xlYXIgICovCi0JIDE2MCAsCS8qICBrZXlfY2xvc2UgICovCi0JIDE2MSAsCS8qICBrZXlfY29tbWFuZCAgKi8KLQkgMTYyICwJLyogIGtleV9jb3B5ICAqLwotCSAxNjMgLAkvKiAga2V5X2NyZWF0ZSAgKi8KLQkgNTggLAkvKiAga2V5X2N0YWIgICovCi0JIDU5ICwJLyogIGtleV9kYyAgKi8KLQkgNjAgLAkvKiAga2V5X2RsICAqLwotCSA2MSAsCS8qICBrZXlfZG93biAgKi8KLQkgNjIgLAkvKiAga2V5X2VpYyAgKi8KLQkgMTY0ICwJLyogIGtleV9lbmQgICovCi0JIDE2NSAsCS8qICBrZXlfZW50ZXIgICovCi0JIDYzICwJLyogIGtleV9lb2wgICovCi0JIDY0ICwJLyogIGtleV9lb3MgICovCi0JIDE2NiAsCS8qICBrZXlfZXhpdCAgKi8KLQkgNjUgLAkvKiAga2V5X2YwICAqLwotCSA2NiAsCS8qICBrZXlfZjEgICovCi0JIDY3ICwJLyogIGtleV9mMTAgICovCi0JIDIxNiAsCS8qICBrZXlfZjExICAqLwotCSAyMTcgLAkvKiAga2V5X2YxMiAgKi8KLQkgMjE4ICwJLyogIGtleV9mMTMgICovCi0JIDIxOSAsCS8qICBrZXlfZjE0ICAqLwotCSAyMjAgLAkvKiAga2V5X2YxNSAgKi8KLQkgMjIxICwJLyogIGtleV9mMTYgICovCi0JIDIyMiAsCS8qICBrZXlfZjE3ICAqLwotCSAyMjMgLAkvKiAga2V5X2YxOCAgKi8KLQkgMjI0ICwJLyogIGtleV9mMTkgICovCi0JIDY4ICwJLyogIGtleV9mMiAgKi8KLQkgMjI1ICwJLyogIGtleV9mMjAgICovCi0JIDIyNiAsCS8qICBrZXlfZjIxICAqLwotCSAyMjcgLAkvKiAga2V5X2YyMiAgKi8KLQkgMjI4ICwJLyogIGtleV9mMjMgICovCi0JIDIyOSAsCS8qICBrZXlfZjI0ICAqLwotCSAyMzAgLAkvKiAga2V5X2YyNSAgKi8KLQkgMjMxICwJLyogIGtleV9mMjYgICovCi0JIDIzMiAsCS8qICBrZXlfZjI3ICAqLwotCSAyMzMgLAkvKiAga2V5X2YyOCAgKi8KLQkgMjM0ICwJLyogIGtleV9mMjkgICovCi0JIDY5ICwJLyogIGtleV9mMyAgKi8KLQkgMjM1ICwJLyogIGtleV9mMzAgICovCi0JIDIzNiAsCS8qICBrZXlfZjMxICAqLwotCSAyMzcgLAkvKiAga2V5X2YzMiAgKi8KLQkgMjM4ICwJLyogIGtleV9mMzMgICovCi0JIDIzOSAsCS8qICBrZXlfZjM0ICAqLwotCSAyNDAgLAkvKiAga2V5X2YzNSAgKi8KLQkgMjQxICwJLyogIGtleV9mMzYgICovCi0JIDI0MiAsCS8qICBrZXlfZjM3ICAqLwotCSAyNDMgLAkvKiAga2V5X2YzOCAgKi8KLQkgMjQ0ICwJLyogIGtleV9mMzkgICovCi0JIDcwICwJLyogIGtleV9mNCAgKi8KLQkgMjQ1ICwJLyogIGtleV9mNDAgICovCi0JIDI0NiAsCS8qICBrZXlfZjQxICAqLwotCSAyNDcgLAkvKiAga2V5X2Y0MiAgKi8KLQkgMjQ4ICwJLyogIGtleV9mNDMgICovCi0JIDI0OSAsCS8qICBrZXlfZjQ0ICAqLwotCSAyNTAgLAkvKiAga2V5X2Y0NSAgKi8KLQkgMjUxICwJLyogIGtleV9mNDYgICovCi0JIDI1MiAsCS8qICBrZXlfZjQ3ICAqLwotCSAyNTMgLAkvKiAga2V5X2Y0OCAgKi8KLQkgMjU0ICwJLyogIGtleV9mNDkgICovCi0JIDcxICwJLyogIGtleV9mNSAgKi8KLQkgMjU1ICwJLyogIGtleV9mNTAgICovCi0JIDI1NiAsCS8qICBrZXlfZjUxICAqLwotCSAyNTcgLAkvKiAga2V5X2Y1MiAgKi8KLQkgMjU4ICwJLyogIGtleV9mNTMgICovCi0JIDI1OSAsCS8qICBrZXlfZjU0ICAqLwotCSAyNjAgLAkvKiAga2V5X2Y1NSAgKi8KLQkgMjYxICwJLyogIGtleV9mNTYgICovCi0JIDI2MiAsCS8qICBrZXlfZjU3ICAqLwotCSAyNjMgLAkvKiAga2V5X2Y1OCAgKi8KLQkgMjY0ICwJLyogIGtleV9mNTkgICovCi0JIDcyICwJLyogIGtleV9mNiAgKi8KLQkgMjY1ICwJLyogIGtleV9mNjAgICovCi0JIDI2NiAsCS8qICBrZXlfZjYxICAqLwotCSAyNjcgLAkvKiAga2V5X2Y2MiAgKi8KLQkgMjY4ICwJLyogIGtleV9mNjMgICovCi0JIDczICwJLyogIGtleV9mNyAgKi8KLQkgNzQgLAkvKiAga2V5X2Y4ICAqLwotCSA3NSAsCS8qICBrZXlfZjkgICovCi0JIDE2NyAsCS8qICBrZXlfZmluZCAgKi8KLQkgMTY4ICwJLyogIGtleV9oZWxwICAqLwotCSA3NiAsCS8qICBrZXlfaG9tZSAgKi8KLQkgNzcgLAkvKiAga2V5X2ljICAqLwotCSA3OCAsCS8qICBrZXlfaWwgICovCi0JIDc5ICwJLyogIGtleV9sZWZ0ICAqLwotCSA4MCAsCS8qICBrZXlfbGwgICovCi0JIDE2OSAsCS8qICBrZXlfbWFyayAgKi8KLQkgMTcwICwJLyogIGtleV9tZXNzYWdlICAqLwotCSAzNTUgLAkvKiAga2V5X21vdXNlICAqLwotCSAxNzEgLAkvKiAga2V5X21vdmUgICovCi0JIDE3MiAsCS8qICBrZXlfbmV4dCAgKi8KLQkgODEgLAkvKiAga2V5X25wYWdlICAqLwotCSAxNzMgLAkvKiAga2V5X29wZW4gICovCi0JIDE3NCAsCS8qICBrZXlfb3B0aW9ucyAgKi8KLQkgODIgLAkvKiAga2V5X3BwYWdlICAqLwotCSAxNzUgLAkvKiAga2V5X3ByZXZpb3VzICAqLwotCSAxNzYgLAkvKiAga2V5X3ByaW50ICAqLwotCSAxNzcgLAkvKiAga2V5X3JlZG8gICovCi0JIDE3OCAsCS8qICBrZXlfcmVmZXJlbmNlICAqLwotCSAxNzkgLAkvKiAga2V5X3JlZnJlc2ggICovCi0JIDE4MCAsCS8qICBrZXlfcmVwbGFjZSAgKi8KLQkgMTgxICwJLyogIGtleV9yZXN0YXJ0ICAqLwotCSAxODIgLAkvKiAga2V5X3Jlc3VtZSAgKi8KLQkgODMgLAkvKiAga2V5X3JpZ2h0ICAqLwotCSAxODMgLAkvKiAga2V5X3NhdmUgICovCi0JIDE4NiAsCS8qICBrZXlfc2JlZyAgKi8KLQkgMTg3ICwJLyogIGtleV9zY2FuY2VsICAqLwotCSAxODggLAkvKiAga2V5X3Njb21tYW5kICAqLwotCSAxODkgLAkvKiAga2V5X3Njb3B5ICAqLwotCSAxOTAgLAkvKiAga2V5X3NjcmVhdGUgICovCi0JIDE5MSAsCS8qICBrZXlfc2RjICAqLwotCSAxOTIgLAkvKiAga2V5X3NkbCAgKi8KLQkgMTkzICwJLyogIGtleV9zZWxlY3QgICovCi0JIDE5NCAsCS8qICBrZXlfc2VuZCAgKi8KLQkgMTk1ICwJLyogIGtleV9zZW9sICAqLwotCSAxOTYgLAkvKiAga2V5X3NleGl0ICAqLwotCSA4NCAsCS8qICBrZXlfc2YgICovCi0JIDE5NyAsCS8qICBrZXlfc2ZpbmQgICovCi0JIDE5OCAsCS8qICBrZXlfc2hlbHAgICovCi0JIDE5OSAsCS8qICBrZXlfc2hvbWUgICovCi0JIDIwMCAsCS8qICBrZXlfc2ljICAqLwotCSAyMDEgLAkvKiAga2V5X3NsZWZ0ICAqLwotCSAyMDIgLAkvKiAga2V5X3NtZXNzYWdlICAqLwotCSAyMDMgLAkvKiAga2V5X3Ntb3ZlICAqLwotCSAyMDQgLAkvKiAga2V5X3NuZXh0ICAqLwotCSAyMDUgLAkvKiAga2V5X3NvcHRpb25zICAqLwotCSAyMDYgLAkvKiAga2V5X3NwcmV2aW91cyAgKi8KLQkgMjA3ICwJLyogIGtleV9zcHJpbnQgICovCi0JIDg1ICwJLyogIGtleV9zciAgKi8KLQkgMjA4ICwJLyogIGtleV9zcmVkbyAgKi8KLQkgMjA5ICwJLyogIGtleV9zcmVwbGFjZSAgKi8KLQkgMjEwICwJLyogIGtleV9zcmlnaHQgICovCi0JIDIxMSAsCS8qICBrZXlfc3JzdW1lICAqLwotCSAyMTIgLAkvKiAga2V5X3NzYXZlICAqLwotCSAyMTMgLAkvKiAga2V5X3NzdXNwZW5kICAqLwotCSA4NiAsCS8qICBrZXlfc3RhYiAgKi8KLQkgMjE0ICwJLyogIGtleV9zdW5kbyAgKi8KLQkgMTg0ICwJLyogIGtleV9zdXNwZW5kICAqLwotCSAxODUgLAkvKiAga2V5X3VuZG8gICovCi0JIDg3ICwJLyogIGtleV91cCAgKi8KLQkgODggLAkvKiAga2V5cGFkX2xvY2FsICAqLwotCSA4OSAsCS8qICBrZXlwYWRfeG1pdCAgKi8KLQkgOTAgLAkvKiAgbGFiX2YwICAqLwotCSA5MSAsCS8qICBsYWJfZjEgICovCi0JIDkyICwJLyogIGxhYl9mMTAgICovCi0JIDkzICwJLyogIGxhYl9mMiAgKi8KLQkgOTQgLAkvKiAgbGFiX2YzICAqLwotCSA5NSAsCS8qICBsYWJfZjQgICovCi0JIDk2ICwJLyogIGxhYl9mNSAgKi8KLQkgOTcgLAkvKiAgbGFiX2Y2ICAqLwotCSA5OCAsCS8qICBsYWJfZjcgICovCi0JIDk5ICwJLyogIGxhYl9mOCAgKi8KLQkgMTAwICwJLyogIGxhYl9mOSAgKi8KLQkgMjczICwJLyogIGxhYmVsX2Zvcm1hdCAgKi8KLQkgMTU3ICwJLyogIGxhYmVsX29mZiAgKi8KLQkgMTU2ICwJLyogIGxhYmVsX29uICAqLwotCSAzOTYgLAkvKiAgbGluZWZlZWRfaWZfbm90X2xmICAqLwotCSA0MTEgLAkvKiAgbWVtb3J5X2xvY2sgICovCi0JIDQxMiAsCS8qICBtZW1vcnlfdW5sb2NrICAqLwotCSAxMDEgLAkvKiAgbWV0YV9vZmYgICovCi0JIDEwMiAsCS8qICBtZXRhX29uICAqLwotCSAzMjggLAkvKiAgbWljcm9fY29sdW1uX2FkZHJlc3MgICovCi0JIDMyOSAsCS8qICBtaWNyb19kb3duICAqLwotCSAzMzAgLAkvKiAgbWljcm9fbGVmdCAgKi8KLQkgMzMxICwJLyogIG1pY3JvX3JpZ2h0ICAqLwotCSAzMzIgLAkvKiAgbWljcm9fcm93X2FkZHJlc3MgICovCi0JIDMzMyAsCS8qICBtaWNyb191cCAgKi8KLQkgMzU2ICwJLyogIG1vdXNlX2luZm8gICovCi0JIDEwMyAsCS8qICBuZXdsaW5lICAqLwotCSAzMzQgLAkvKiAgb3JkZXJfb2ZfcGlucyAgKi8KLQkgMjk4ICwJLyogIG9yaWdfY29sb3JzICAqLwotCSAyOTcgLAkvKiAgb3JpZ19wYWlyICAqLwotCSAzOTggLAkvKiAgb3RoZXJfbm9uX2Z1bmN0aW9uX2tleXMgICovCi0JIDEwNCAsCS8qICBwYWRfY2hhciAgKi8KLQkgMTA1ICwJLyogIHBhcm1fZGNoICAqLwotCSAxMDYgLAkvKiAgcGFybV9kZWxldGVfbGluZSAgKi8KLQkgMTA3ICwJLyogIHBhcm1fZG93bl9jdXJzb3IgICovCi0JIDMzNSAsCS8qICBwYXJtX2Rvd25fbWljcm8gICovCi0JIDEwOCAsCS8qICBwYXJtX2ljaCAgKi8KLQkgMTA5ICwJLyogIHBhcm1faW5kZXggICovCi0JIDExMCAsCS8qICBwYXJtX2luc2VydF9saW5lICAqLwotCSAxMTEgLAkvKiAgcGFybV9sZWZ0X2N1cnNvciAgKi8KLQkgMzM2ICwJLyogIHBhcm1fbGVmdF9taWNybyAgKi8KLQkgMTEyICwJLyogIHBhcm1fcmlnaHRfY3Vyc29yICAqLwotCSAzMzcgLAkvKiAgcGFybV9yaWdodF9taWNybyAgKi8KLQkgMTEzICwJLyogIHBhcm1fcmluZGV4ICAqLwotCSAxMTQgLAkvKiAgcGFybV91cF9jdXJzb3IgICovCi0JIDMzOCAsCS8qICBwYXJtX3VwX21pY3JvICAqLwotCSAzODMgLAkvKiAgcGNfdGVybV9vcHRpb25zICAqLwotCSAxMTUgLAkvKiAgcGtleV9rZXkgICovCi0JIDExNiAsCS8qICBwa2V5X2xvY2FsICAqLwotCSAzNjEgLAkvKiAgcGtleV9wbGFiICAqLwotCSAxMTcgLAkvKiAgcGtleV94bWl0ICAqLwotCSAxNDcgLAkvKiAgcGxhYl9ub3JtICAqLwotCSAxMTggLAkvKiAgcHJpbnRfc2NyZWVuICAqLwotCSAxNDQgLAkvKiAgcHJ0cl9ub24gICovCi0JIDExOSAsCS8qICBwcnRyX29mZiAgKi8KLQkgMTIwICwJLyogIHBydHJfb24gICovCi0JIDI4MyAsCS8qICBwdWxzZSAgKi8KLQkgMjgxICwJLyogIHF1aWNrX2RpYWwgICovCi0JIDI3NiAsCS8qICByZW1vdmVfY2xvY2sgICovCi0JIDEyMSAsCS8qICByZXBlYXRfY2hhciAgKi8KLQkgMjE1ICwJLyogIHJlcV9mb3JfaW5wdXQgICovCi0JIDM1NyAsCS8qICByZXFfbW91c2VfcG9zICAqLwotCSAxMjIgLAkvKiAgcmVzZXRfMXN0cmluZyAgKi8KLQkgMTIzICwJLyogIHJlc2V0XzJzdHJpbmcgICovCi0JIDEyNCAsCS8qICByZXNldF8zc3RyaW5nICAqLwotCSAxMjUgLAkvKiAgcmVzZXRfZmlsZSAgKi8KLQkgMTI2ICwJLyogIHJlc3RvcmVfY3Vyc29yICAqLwotCSAxMjcgLAkvKiAgcm93X2FkZHJlc3MgICovCi0JIDEyOCAsCS8qICBzYXZlX2N1cnNvciAgKi8KLQkgMzg0ICwJLyogIHNjYW5jb2RlX2VzY2FwZSAgKi8KLQkgMTI5ICwJLyogIHNjcm9sbF9mb3J3YXJkICAqLwotCSAxMzAgLAkvKiAgc2Nyb2xsX3JldmVyc2UgICovCi0JIDMzOSAsCS8qICBzZWxlY3RfY2hhcl9zZXQgICovCi0JIDM2NCAsCS8qICBzZXQwX2Rlc19zZXEgICovCi0JIDM2NSAsCS8qICBzZXQxX2Rlc19zZXEgICovCi0JIDM2NiAsCS8qICBzZXQyX2Rlc19zZXEgICovCi0JIDM2NyAsCS8qICBzZXQzX2Rlc19zZXEgICovCi0JIDM5MiAsCS8qICBzZXRfYV9hdHRyaWJ1dGVzICAqLwotCSAzNjAgLAkvKiAgc2V0X2FfYmFja2dyb3VuZCAgKi8KLQkgMzU5ICwJLyogIHNldF9hX2ZvcmVncm91bmQgICovCi0JIDEzMSAsCS8qICBzZXRfYXR0cmlidXRlcyAgKi8KLQkgMzAzICwJLyogIHNldF9iYWNrZ3JvdW5kICAqLwotCSAzNDAgLAkvKiAgc2V0X2JvdHRvbV9tYXJnaW4gICovCi0JIDM0MSAsCS8qICBzZXRfYm90dG9tX21hcmdpbl9wYXJtICAqLwotCSAyNzQgLAkvKiAgc2V0X2Nsb2NrICAqLwotCSAzNzYgLAkvKiAgc2V0X2NvbG9yX2JhbmQgICovCi0JIDMwMSAsCS8qICBzZXRfY29sb3JfcGFpciAgKi8KLQkgMzAyICwJLyogIHNldF9mb3JlZ3JvdW5kICAqLwotCSAyNzEgLAkvKiAgc2V0X2xlZnRfbWFyZ2luICAqLwotCSAzNDIgLAkvKiAgc2V0X2xlZnRfbWFyZ2luX3Bhcm0gICovCi0JIDM2OCAsCS8qICBzZXRfbHJfbWFyZ2luICAqLwotCSAzNzcgLAkvKiAgc2V0X3BhZ2VfbGVuZ3RoICAqLwotCSAzOTMgLAkvKiAgc2V0X3BnbGVuX2luY2ggICovCi0JIDI3MiAsCS8qICBzZXRfcmlnaHRfbWFyZ2luICAqLwotCSAzNDMgLAkvKiAgc2V0X3JpZ2h0X21hcmdpbl9wYXJtICAqLwotCSAxMzIgLAkvKiAgc2V0X3RhYiAgKi8KLQkgMzY5ICwJLyogIHNldF90Yl9tYXJnaW4gICovCi0JIDM0NCAsCS8qICBzZXRfdG9wX21hcmdpbiAgKi8KLQkgMzQ1ICwJLyogIHNldF90b3BfbWFyZ2luX3Bhcm0gICovCi0JIDEzMyAsCS8qICBzZXRfd2luZG93ICAqLwotCSAzNDYgLAkvKiAgc3RhcnRfYml0X2ltYWdlICAqLwotCSAzNDcgLAkvKiAgc3RhcnRfY2hhcl9zZXRfZGVmICAqLwotCSAzNDggLAkvKiAgc3RvcF9iaXRfaW1hZ2UgICovCi0JIDM0OSAsCS8qICBzdG9wX2NoYXJfc2V0X2RlZiAgKi8KLQkgMzUwICwJLyogIHN1YnNjcmlwdF9jaGFyYWN0ZXJzICAqLwotCSAzNTEgLAkvKiAgc3VwZXJzY3JpcHRfY2hhcmFjdGVycyAgKi8KLQkgMTM0ICwJLyogIHRhYiAgKi8KLQkgMzk0ICwJLyogIHRlcm1jYXBfaW5pdDIgICovCi0JIDM5NSAsCS8qICB0ZXJtY2FwX3Jlc2V0ICAqLwotCSAzNTIgLAkvKiAgdGhlc2VfY2F1c2VfY3IgICovCi0JIDEzNSAsCS8qICB0b19zdGF0dXNfbGluZSAgKi8KLQkgMjgyICwJLyogIHRvbmUgICovCi0JIDEzNiAsCS8qICB1bmRlcmxpbmVfY2hhciAgKi8KLQkgMTM3ICwJLyogIHVwX2hhbGZfbGluZSAgKi8KLQkgMjg3ICwJLyogIHVzZXIwICAqLwotCSAyODggLAkvKiAgdXNlcjEgICovCi0JIDI4OSAsCS8qICB1c2VyMiAgKi8KLQkgMjkwICwJLyogIHVzZXIzICAqLwotCSAyOTEgLAkvKiAgdXNlcjQgICovCi0JIDI5MiAsCS8qICB1c2VyNSAgKi8KLQkgMjkzICwJLyogIHVzZXI2ICAqLwotCSAyOTQgLAkvKiAgdXNlcjcgICovCi0JIDI5NSAsCS8qICB1c2VyOCAgKi8KLQkgMjk2ICwJLyogIHVzZXI5ICAqLwotCSAyODYgLAkvKiAgd2FpdF90b25lICAqLwotCSAxNTQgLAkvKiAgeG9mZl9jaGFyYWN0ZXIgICovCi0JIDE1MyAsCS8qICB4b25fY2hhcmFjdGVyICAqLwotCSAzNTMgLAkvKiAgemVyb19tb3Rpb24gICovCi19OwotCi1zdGF0aWMgY29uc3QgUHJlZElkeCBib29sX3Rlcm1jYXBfc29ydFtdID0gewotCSAyMiAsCS8qICA1aSAgKi8KLQkgMjMgLAkvKiAgSEMgICovCi0JIDQwICwJLyogIE1UICAqLwotCSAyNiAsCS8qICBORCAgKi8KLQkgNDEgLAkvKiAgTkwgICovCi0JIDI1ICwJLyogIE5QICAqLwotCSAyNCAsCS8qICBOUiAgKi8KLQkgMzAgLAkvKiAgWUEgICovCi0JIDMxICwJLyogIFlCICAqLwotCSAzMiAsCS8qICBZQyAgKi8KLQkgMzMgLAkvKiAgWUQgICovCi0JIDM0ICwJLyogIFlFICAqLwotCSAzNSAsCS8qICBZRiAgKi8KLQkgMzYgLAkvKiAgWUcgICovCi0JIDEgLAkvKiAgYW0gICovCi0JIDM3ICwJLyogIGJzICAqLwotCSAwICwJLyogIGJ3ICAqLwotCSAyNyAsCS8qICBjYyAgKi8KLQkgMTEgLAkvKiAgZGEgICovCi0JIDEyICwJLyogIGRiICAqLwotCSA1ICwJLyogIGVvICAqLwotCSAxNiAsCS8qICBlcyAgKi8KLQkgNiAsCS8qICBnbiAgKi8KLQkgNyAsCS8qICBoYyAgKi8KLQkgMjkgLAkvKiAgaGwgICovCi0JIDkgLAkvKiAgaHMgICovCi0JIDE4ICwJLyogIGh6ICAqLwotCSAxMCAsCS8qICBpbiAgKi8KLQkgOCAsCS8qICBrbSAgKi8KLQkgMTMgLAkvKiAgbWkgICovCi0JIDE0ICwJLyogIG1zICAqLwotCSAzOSAsCS8qICBuYyAgKi8KLQkgMzggLAkvKiAgbnMgICovCi0JIDIxICwJLyogIG54ICAqLwotCSAxNSAsCS8qICBvcyAgKi8KLQkgNDIgLAkvKiAgcHQgICovCi0JIDE5ICwJLyogIHVsICAqLwotCSAyOCAsCS8qICB1dCAgKi8KLQkgMiAsCS8qICB4YiAgKi8KLQkgNCAsCS8qICB4biAgKi8KLQkgMjAgLAkvKiAgeG8gICovCi0JIDQzICwJLyogIHhyICAqLwotCSAzICwJLyogIHhzICAqLwotCSAxNyAsCS8qICB4dCAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBQcmVkSWR4IG51bV90ZXJtY2FwX3NvcnRbXSA9IHsKLQkgMzAgLAkvKiAgQlQgICovCi0JIDEzICwJLyogIENvICAqLwotCSAxMiAsCS8qICBNVyAgKi8KLQkgMTUgLAkvKiAgTkMgICovCi0JIDggLAkvKiAgTmwgICovCi0JIDE2ICwJLyogIFlhICAqLwotCSAxNyAsCS8qICBZYiAgKi8KLQkgMTggLAkvKiAgWWMgICovCi0JIDE5ICwJLyogIFlkICAqLwotCSAyMCAsCS8qICBZZSAgKi8KLQkgMjEgLAkvKiAgWWYgICovCi0JIDIyICwJLyogIFlnICAqLwotCSAyMyAsCS8qICBZaCAgKi8KLQkgMjQgLAkvKiAgWWkgICovCi0JIDI1ICwJLyogIFlqICAqLwotCSAyNiAsCS8qICBZayAgKi8KLQkgMjcgLAkvKiAgWWwgICovCi0JIDI4ICwJLyogIFltICAqLwotCSAyOSAsCS8qICBZbiAgKi8KLQkgMzEgLAkvKiAgWW8gICovCi0JIDMyICwJLyogIFlwICAqLwotCSAwICwJLyogIGNvICAqLwotCSAzNiAsCS8qICBkQiAgKi8KLQkgMzQgLAkvKiAgZEMgICovCi0JIDM1ICwJLyogIGROICAqLwotCSAzNyAsCS8qICBkVCAgKi8KLQkgMSAsCS8qICBpdCAgKi8KLQkgMzggLAkvKiAga24gICovCi0JIDkgLAkvKiAgbGggICovCi0JIDIgLAkvKiAgbGkgICovCi0JIDMgLAkvKiAgbG0gICovCi0JIDEwICwJLyogIGx3ICAqLwotCSAxMSAsCS8qICBtYSAgKi8KLQkgMTQgLAkvKiAgcGEgICovCi0JIDUgLAkvKiAgcGIgICovCi0JIDQgLAkvKiAgc2cgICovCi0JIDMzICwJLyogIHVnICAqLwotCSA2ICwJLyogIHZ0ICAqLwotCSA3ICwJLyogIHdzICAqLwotfTsKLQotc3RhdGljIGNvbnN0IFByZWRJZHggc3RyX3Rlcm1jYXBfc29ydFtdID0gewotCSAyMTIgLAkvKiAgITEgICovCi0JIDIxMyAsCS8qICAhMiAgKi8KLQkgMjE0ICwJLyogICEzICAqLwotCSAxOTggLAkvKiAgIzEgICovCi0JIDE5OSAsCS8qICAjMiAgKi8KLQkgMjAwICwJLyogICMzICAqLwotCSAyMDEgLAkvKiAgIzQgICovCi0JIDE3NyAsCS8qICAlMCAgKi8KLQkgMTY4ICwJLyogICUxICAqLwotCSAxNjkgLAkvKiAgJTIgICovCi0JIDE3MCAsCS8qICAlMyAgKi8KLQkgMTcxICwJLyogICU0ICAqLwotCSAxNzIgLAkvKiAgJTUgICovCi0JIDE3MyAsCS8qICAlNiAgKi8KLQkgMTc0ICwJLyogICU3ICAqLwotCSAxNzUgLAkvKiAgJTggICovCi0JIDE3NiAsCS8qICAlOSAgKi8KLQkgMjAyICwJLyogICVhICAqLwotCSAyMDMgLAkvKiAgJWIgICovCi0JIDIwNCAsCS8qICAlYyAgKi8KLQkgMjA1ICwJLyogICVkICAqLwotCSAyMDYgLAkvKiAgJWUgICovCi0JIDIwNyAsCS8qICAlZiAgKi8KLQkgMjA4ICwJLyogICVnICAqLwotCSAyMDkgLAkvKiAgJWggICovCi0JIDIxMCAsCS8qICAlaSAgKi8KLQkgMjExICwJLyogICVqICAqLwotCSAxODcgLAkvKiAgJjAgICovCi0JIDE3OCAsCS8qICAmMSAgKi8KLQkgMTc5ICwJLyogICYyICAqLwotCSAxODAgLAkvKiAgJjMgICovCi0JIDE4MSAsCS8qICAmNCAgKi8KLQkgMTgyICwJLyogICY1ICAqLwotCSAxODMgLAkvKiAgJjYgICovCi0JIDE4NCAsCS8qICAmNyAgKi8KLQkgMTg1ICwJLyogICY4ICAqLwotCSAxODYgLAkvKiAgJjkgICovCi0JIDE5NyAsCS8qICAqMCAgKi8KLQkgMTg4ICwJLyogICoxICAqLwotCSAxODkgLAkvKiAgKjIgICovCi0JIDE5MCAsCS8qICAqMyAgKi8KLQkgMTkxICwJLyogICo0ICAqLwotCSAxOTIgLAkvKiAgKjUgICovCi0JIDE5MyAsCS8qICAqNiAgKi8KLQkgMTk0ICwJLyogICo3ICAqLwotCSAxOTUgLAkvKiAgKjggICovCi0JIDE5NiAsCS8qICAqOSAgKi8KLQkgMTY3ICwJLyogIEAwICAqLwotCSAxNTggLAkvKiAgQDEgICovCi0JIDE1OSAsCS8qICBAMiAgKi8KLQkgMTYwICwJLyogIEAzICAqLwotCSAxNjEgLAkvKiAgQDQgICovCi0JIDE2MiAsCS8qICBANSAgKi8KLQkgMTYzICwJLyogIEA2ICAqLwotCSAxNjQgLAkvKiAgQDcgICovCi0JIDE2NSAsCS8qICBAOCAgKi8KLQkgMTY2ICwJLyogIEA5ICAqLwotCSAzNjAgLAkvKiAgQUIgICovCi0JIDM1OSAsCS8qICBBRiAgKi8KLQkgMTEwICwJLyogIEFMICAqLwotCSA5ICwJLyogIENDICAqLwotCSAxNSAsCS8qICBDTSAgKi8KLQkgMjc3ICwJLyogIENXICAqLwotCSAxMDUgLAkvKiAgREMgICovCi0JIDI4MCAsCS8qICBESSAgKi8KLQkgMjc1ICwJLyogIERLICAqLwotCSAxMDYgLAkvKiAgREwgICovCi0JIDEwNyAsCS8qICBETyAgKi8KLQkgMjE2ICwJLyogIEYxICAqLwotCSAyMTcgLAkvKiAgRjIgICovCi0JIDIxOCAsCS8qICBGMyAgKi8KLQkgMjE5ICwJLyogIEY0ICAqLwotCSAyMjAgLAkvKiAgRjUgICovCi0JIDIyMSAsCS8qICBGNiAgKi8KLQkgMjIyICwJLyogIEY3ICAqLwotCSAyMjMgLAkvKiAgRjggICovCi0JIDIyNCAsCS8qICBGOSAgKi8KLQkgMjI1ICwJLyogIEZBICAqLwotCSAyMjYgLAkvKiAgRkIgICovCi0JIDIyNyAsCS8qICBGQyAgKi8KLQkgMjI4ICwJLyogIEZEICAqLwotCSAyMjkgLAkvKiAgRkUgICovCi0JIDIzMCAsCS8qICBGRiAgKi8KLQkgMjMxICwJLyogIEZHICAqLwotCSAyMzIgLAkvKiAgRkggICovCi0JIDIzMyAsCS8qICBGSSAgKi8KLQkgMjM0ICwJLyogIEZKICAqLwotCSAyMzUgLAkvKiAgRksgICovCi0JIDIzNiAsCS8qICBGTCAgKi8KLQkgMjM3ICwJLyogIEZNICAqLwotCSAyMzggLAkvKiAgRk4gICovCi0JIDIzOSAsCS8qICBGTyAgKi8KLQkgMjQwICwJLyogIEZQICAqLwotCSAyNDEgLAkvKiAgRlEgICovCi0JIDI0MiAsCS8qICBGUiAgKi8KLQkgMjQzICwJLyogIEZTICAqLwotCSAyNDQgLAkvKiAgRlQgICovCi0JIDI0NSAsCS8qICBGVSAgKi8KLQkgMjQ2ICwJLyogIEZWICAqLwotCSAyNDcgLAkvKiAgRlcgICovCi0JIDI0OCAsCS8qICBGWCAgKi8KLQkgMjQ5ICwJLyogIEZZICAqLwotCSAyNTAgLAkvKiAgRlogICovCi0JIDI1MSAsCS8qICBGYSAgKi8KLQkgMjUyICwJLyogIEZiICAqLwotCSAyNTMgLAkvKiAgRmMgICovCi0JIDI1NCAsCS8qICBGZCAgKi8KLQkgMjU1ICwJLyogIEZlICAqLwotCSAyNTYgLAkvKiAgRmYgICovCi0JIDI1NyAsCS8qICBGZyAgKi8KLQkgMjU4ICwJLyogIEZoICAqLwotCSAyNTkgLAkvKiAgRmkgICovCi0JIDI2MCAsCS8qICBGaiAgKi8KLQkgMjYxICwJLyogIEZrICAqLwotCSAyNjIgLAkvKiAgRmwgICovCi0JIDI2MyAsCS8qICBGbSAgKi8KLQkgMjY0ICwJLyogIEZuICAqLwotCSAyNjUgLAkvKiAgRm8gICovCi0JIDI2NiAsCS8qICBGcCAgKi8KLQkgMjY3ICwJLyogIEZxICAqLwotCSAyNjggLAkvKiAgRnIgICovCi0JIDQwMiAsCS8qICBHMSAgKi8KLQkgNDAwICwJLyogIEcyICAqLwotCSA0MDEgLAkvKiAgRzMgICovCi0JIDQwMyAsCS8qICBHNCAgKi8KLQkgNDEwICwJLyogIEdDICAqLwotCSA0MDcgLAkvKiAgR0QgICovCi0JIDQwOCAsCS8qICBHSCAgKi8KLQkgNDA1ICwJLyogIEdMICAqLwotCSA0MDQgLAkvKiAgR1IgICovCi0JIDQwNiAsCS8qICBHVSAgKi8KLQkgNDA5ICwJLyogIEdWICAqLwotCSAzNTggLAkvKiAgR20gICovCi0JIDI3OSAsCS8qICBIVSAgKi8KLQkgMTA4ICwJLyogIElDICAqLwotCSAyOTkgLAkvKiAgSWMgICovCi0JIDMwMCAsCS8qICBJcCAgKi8KLQkgMTM5ICwJLyogIEsxICAqLwotCSAxNDEgLAkvKiAgSzIgICovCi0JIDE0MCAsCS8qICBLMyAgKi8KLQkgMTQyICwJLyogIEs0ICAqLwotCSAxNDMgLAkvKiAgSzUgICovCi0JIDM1NSAsCS8qICBLbSAgKi8KLQkgMTExICwJLyogIExFICAqLwotCSAxNTcgLAkvKiAgTEYgICovCi0JIDE1NiAsCS8qICBMTyAgKi8KLQkgMjczICwJLyogIExmICAqLwotCSAyNzAgLAkvKiAgTUMgICovCi0JIDI3MSAsCS8qICBNTCAgKi8KLQkgMzY4ICwJLyogIE1MICAqLwotCSAyNzIgLAkvKiAgTVIgICovCi0JIDM2OSAsCS8qICBNVCAgKi8KLQkgMzU2ICwJLyogIE1pICAqLwotCSAyODUgLAkvKiAgUEEgICovCi0JIDI4MyAsCS8qICBQVSAgKi8KLQkgMjgxICwJLyogIFFEICAqLwotCSAxNTIgLAkvKiAgUkEgICovCi0JIDI3NiAsCS8qICBSQyAgKi8KLQkgMjE1ICwJLyogIFJGICAqLwotCSAxMTIgLAkvKiAgUkkgICovCi0JIDM1NyAsCS8qICBSUSAgKi8KLQkgMTUwICwJLyogIFJYICAqLwotCSAzNzggLAkvKiAgUzEgICovCi0JIDM3OSAsCS8qICBTMiAgKi8KLQkgMzgwICwJLyogIFMzICAqLwotCSAzODEgLAkvKiAgUzQgICovCi0JIDM4MiAsCS8qICBTNSAgKi8KLQkgMzgzICwJLyogIFM2ICAqLwotCSAzODQgLAkvKiAgUzcgICovCi0JIDM4NSAsCS8qICBTOCAgKi8KLQkgMTUxICwJLyogIFNBICAqLwotCSAyNzQgLAkvKiAgU0MgICovCi0JIDEwOSAsCS8qICBTRiAgKi8KLQkgMTEzICwJLyogIFNSICAqLwotCSAxNDkgLAkvKiAgU1ggICovCi0JIDMwMyAsCS8qICBTYiAgKi8KLQkgMzAyICwJLyogIFNmICAqLwotCSAyODIgLAkvKiAgVE8gICovCi0JIDExNCAsCS8qICBVUCAgKi8KLQkgMjg2ICwJLyogIFdBICAqLwotCSAyNzggLAkvKiAgV0cgICovCi0JIDE1NCAsCS8qICBYRiAgKi8KLQkgMTUzICwJLyogIFhOICAqLwotCSAzODYgLAkvKiAgWGggICovCi0JIDM4NyAsCS8qICBYbCAgKi8KLQkgMzg4ICwJLyogIFhvICAqLwotCSAzODkgLAkvKiAgWHIgICovCi0JIDM5MCAsCS8qICBYdCAgKi8KLQkgMzkxICwJLyogIFh2ICAqLwotCSAzNzAgLAkvKiAgWHkgICovCi0JIDM3NyAsCS8qICBZWiAgKi8KLQkgMzcyICwJLyogIFl2ICAqLwotCSAzNzMgLAkvKiAgWXcgICovCi0JIDM3NCAsCS8qICBZeCAgKi8KLQkgMzc1ICwJLyogIFl5ICAqLwotCSAzNzYgLAkvKiAgWXogICovCi0JIDMwNCAsCS8qICBaQSAgKi8KLQkgMzA1ICwJLyogIFpCICAqLwotCSAzMDYgLAkvKiAgWkMgICovCi0JIDMwNyAsCS8qICBaRCAgKi8KLQkgMzA4ICwJLyogIFpFICAqLwotCSAzMDkgLAkvKiAgWkYgICovCi0JIDMxMCAsCS8qICBaRyAgKi8KLQkgMzExICwJLyogIFpIICAqLwotCSAzMTIgLAkvKiAgWkkgICovCi0JIDMxMyAsCS8qICBaSiAgKi8KLQkgMzE0ICwJLyogIFpLICAqLwotCSAzMTUgLAkvKiAgWkwgICovCi0JIDMxNiAsCS8qICBaTSAgKi8KLQkgMzE3ICwJLyogIFpOICAqLwotCSAzMTggLAkvKiAgWk8gICovCi0JIDMxOSAsCS8qICBaUCAgKi8KLQkgMzIwICwJLyogIFpRICAqLwotCSAzMjEgLAkvKiAgWlIgICovCi0JIDMyMiAsCS8qICBaUyAgKi8KLQkgMzIzICwJLyogIFpUICAqLwotCSAzMjQgLAkvKiAgWlUgICovCi0JIDMyNSAsCS8qICBaViAgKi8KLQkgMzI2ICwJLyogIFpXICAqLwotCSAzMjcgLAkvKiAgWlggICovCi0JIDMyOCAsCS8qICBaWSAgKi8KLQkgMzI5ICwJLyogIFpaICAqLwotCSAzMzAgLAkvKiAgWmEgICovCi0JIDMzMSAsCS8qICBaYiAgKi8KLQkgMzMyICwJLyogIFpjICAqLwotCSAzMzMgLAkvKiAgWmQgICovCi0JIDMzNCAsCS8qICBaZSAgKi8KLQkgMzM1ICwJLyogIFpmICAqLwotCSAzMzYgLAkvKiAgWmcgICovCi0JIDMzNyAsCS8qICBaaCAgKi8KLQkgMzM4ICwJLyogIFppICAqLwotCSAzMzkgLAkvKiAgWmogICovCi0JIDM0MCAsCS8qICBaayAgKi8KLQkgMzQxICwJLyogIFpsICAqLwotCSAzNDIgLAkvKiAgWm0gICovCi0JIDM0MyAsCS8qICBabiAgKi8KLQkgMzQ0ICwJLyogIFpvICAqLwotCSAzNDUgLAkvKiAgWnAgICovCi0JIDM0NiAsCS8qICBacSAgKi8KLQkgMzQ3ICwJLyogIFpyICAqLwotCSAzNDggLAkvKiAgWnMgICovCi0JIDM0OSAsCS8qICBadCAgKi8KLQkgMzUwICwJLyogIFp1ICAqLwotCSAzNTEgLAkvKiAgWnYgICovCi0JIDM1MiAsCS8qICBadyAgKi8KLQkgMzUzICwJLyogIFp4ICAqLwotCSAzNTQgLAkvKiAgWnkgICovCi0JIDM3MSAsCS8qICBaeiAgKi8KLQkgMTQ2ICwJLyogIGFjICAqLwotCSAzOCAsCS8qICBhZSAgKi8KLQkgNTMgLAkvKiAgYWwgICovCi0JIDI1ICwJLyogIGFzICAqLwotCSAzOTcgLAkvKiAgYmMgICovCi0JIDEgLAkvKiAgYmwgICovCi0JIDAgLAkvKiAgYnQgICovCi0JIDQxMyAsCS8qICBieCAgKi8KLQkgMjY5ICwJLyogIGNiICAqLwotCSA3ICwJLyogIGNkICAqLwotCSA2ICwJLyogIGNlICAqLwotCSA4ICwJLyogIGNoICAqLwotCSAzNjMgLAkvKiAgY2kgICovCi0JIDUgLAkvKiAgY2wgICovCi0JIDEwICwJLyogIGNtICAqLwotCSAyICwJLyogIGNyICAqLwotCSAzICwJLyogIGNzICAqLwotCSA0ICwJLyogIGN0ICAqLwotCSAxMjcgLAkvKiAgY3YgICovCi0JIDIxICwJLyogIGRjICAqLwotCSAyMiAsCS8qICBkbCAgKi8KLQkgMjkgLAkvKiAgZG0gICovCi0JIDExICwJLyogIGRvICAqLwotCSAyMyAsCS8qICBkcyAgKi8KLQkgMzYyICwJLyogIGR2ICAqLwotCSAxNTUgLAkvKiAgZUEgICovCi0JIDM3ICwJLyogIGVjICAqLwotCSA0MSAsCS8qICBlZCAgKi8KLQkgNDIgLAkvKiAgZWkgICovCi0JIDQ2ICwJLyogIGZmICAqLwotCSAyODQgLAkvKiAgZmggICovCi0JIDQ3ICwJLyogIGZzICAqLwotCSAyNCAsCS8qICBoZCAgKi8KLQkgMTIgLAkvKiAgaG8gICovCi0JIDEzNyAsCS8qICBodSAgKi8KLQkgNDggLAkvKiAgaTEgICovCi0JIDM5NCAsCS8qICBpMiAgKi8KLQkgNTAgLAkvKiAgaTMgICovCi0JIDEzOCAsCS8qICBpUCAgKi8KLQkgNTIgLAkvKiAgaWMgICovCi0JIDUxICwJLyogIGlmICAqLwotCSAzMSAsCS8qICBpbSAgKi8KLQkgNTQgLAkvKiAgaXAgICovCi0JIDQ5ICwJLyogIGlzICAqLwotCSA2NSAsCS8qICBrMCAgKi8KLQkgNjYgLAkvKiAgazEgICovCi0JIDY4ICwJLyogIGsyICAqLwotCSA2OSAsCS8qICBrMyAgKi8KLQkgNzAgLAkvKiAgazQgICovCi0JIDcxICwJLyogIGs1ICAqLwotCSA3MiAsCS8qICBrNiAgKi8KLQkgNzMgLAkvKiAgazcgICovCi0JIDc0ICwJLyogIGs4ICAqLwotCSA3NSAsCS8qICBrOSAgKi8KLQkgNjcgLAkvKiAgazsgICovCi0JIDc4ICwJLyogIGtBICAqLwotCSAxNDggLAkvKiAga0IgICovCi0JIDU3ICwJLyogIGtDICAqLwotCSA1OSAsCS8qICBrRCAgKi8KLQkgNjMgLAkvKiAga0UgICovCi0JIDg0ICwJLyogIGtGICAqLwotCSA4MCAsCS8qICBrSCAgKi8KLQkgNzcgLAkvKiAga0kgICovCi0JIDYwICwJLyogIGtMICAqLwotCSA2MiAsCS8qICBrTSAgKi8KLQkgODEgLAkvKiAga04gICovCi0JIDgyICwJLyogIGtQICAqLwotCSA4NSAsCS8qICBrUiAgKi8KLQkgNjQgLAkvKiAga1MgICovCi0JIDg2ICwJLyogIGtUICAqLwotCSA1NiAsCS8qICBrYSAgKi8KLQkgNTUgLAkvKiAga2IgICovCi0JIDYxICwJLyogIGtkICAqLwotCSA4OCAsCS8qICBrZSAgKi8KLQkgNzYgLAkvKiAga2ggICovCi0JIDc5ICwJLyogIGtsICAqLwotCSAzOTggLAkvKiAga28gICovCi0JIDgzICwJLyogIGtyICAqLwotCSA4OSAsCS8qICBrcyAgKi8KLQkgNTggLAkvKiAga3QgICovCi0JIDg3ICwJLyogIGt1ICAqLwotCSA5MCAsCS8qICBsMCAgKi8KLQkgOTEgLAkvKiAgbDEgICovCi0JIDkzICwJLyogIGwyICAqLwotCSA5NCAsCS8qICBsMyAgKi8KLQkgOTUgLAkvKiAgbDQgICovCi0JIDk2ICwJLyogIGw1ICAqLwotCSA5NyAsCS8qICBsNiAgKi8KLQkgOTggLAkvKiAgbDcgICovCi0JIDk5ICwJLyogIGw4ICAqLwotCSAxMDAgLAkvKiAgbDkgICovCi0JIDkyICwJLyogIGxhICAqLwotCSAxNCAsCS8qICBsZSAgKi8KLQkgMTggLAkvKiAgbGwgICovCi0JIDM5OSAsCS8qICBtYSAgKi8KLQkgMjYgLAkvKiAgbWIgICovCi0JIDI3ICwJLyogIG1kICAqLwotCSAzOSAsCS8qICBtZSAgKi8KLQkgMzAgLAkvKiAgbWggICovCi0JIDMyICwJLyogIG1rICAqLwotCSA0MTEgLAkvKiAgbWwgICovCi0JIDEwMiAsCS8qICBtbSAgKi8KLQkgMTAxICwJLyogIG1vICAqLwotCSAzMyAsCS8qICBtcCAgKi8KLQkgMzQgLAkvKiAgbXIgICovCi0JIDQxMiAsCS8qICBtdSAgKi8KLQkgMTcgLAkvKiAgbmQgICovCi0JIDM5NiAsCS8qICBubCAgKi8KLQkgMTAzICwJLyogIG53ICAqLwotCSAyOTggLAkvKiAgb2MgICovCi0JIDI5NyAsCS8qICBvcCAgKi8KLQkgMTQ0ICwJLyogIHBPICAqLwotCSAxMDQgLAkvKiAgcGMgICovCi0JIDExOSAsCS8qICBwZiAgKi8KLQkgMTE1ICwJLyogIHBrICAqLwotCSAxMTYgLAkvKiAgcGwgICovCi0JIDE0NyAsCS8qICBwbiAgKi8KLQkgMTIwICwJLyogIHBvICAqLwotCSAxMTggLAkvKiAgcHMgICovCi0JIDExNyAsCS8qICBweCAgKi8KLQkgMTIyICwJLyogIHIxICAqLwotCSAxMjMgLAkvKiAgcjIgICovCi0JIDEyNCAsCS8qICByMyAgKi8KLQkgMTQ1ICwJLyogIHJQICAqLwotCSAxMjYgLAkvKiAgcmMgICovCi0JIDEyNSAsCS8qICByZiAgKi8KLQkgMTIxICwJLyogIHJwICAqLwotCSAzOTUgLAkvKiAgcnMgICovCi0JIDM2NCAsCS8qICBzMCAgKi8KLQkgMzY1ICwJLyogIHMxICAqLwotCSAzNjYgLAkvKiAgczIgICovCi0JIDM2NyAsCS8qICBzMyAgKi8KLQkgMzkyICwJLyogIHNBICAqLwotCSAzOTMgLAkvKiAgc0wgICovCi0JIDEzMSAsCS8qICBzYSAgKi8KLQkgMTI4ICwJLyogIHNjICAqLwotCSA0MyAsCS8qICBzZSAgKi8KLQkgMTI5ICwJLyogIHNmICAqLwotCSAzNSAsCS8qICBzbyAgKi8KLQkgMzAxICwJLyogIHNwICAqLwotCSAxMzAgLAkvKiAgc3IgICovCi0JIDEzMiAsCS8qICBzdCAgKi8KLQkgMTM0ICwJLyogIHRhICAqLwotCSA0MCAsCS8qICB0ZSAgKi8KLQkgMjggLAkvKiAgdGkgICovCi0JIDEzNSAsCS8qICB0cyAgKi8KLQkgMjg3ICwJLyogIHUwICAqLwotCSAyODggLAkvKiAgdTEgICovCi0JIDI4OSAsCS8qICB1MiAgKi8KLQkgMjkwICwJLyogIHUzICAqLwotCSAyOTEgLAkvKiAgdTQgICovCi0JIDI5MiAsCS8qICB1NSAgKi8KLQkgMjkzICwJLyogIHU2ICAqLwotCSAyOTQgLAkvKiAgdTcgICovCi0JIDI5NSAsCS8qICB1OCAgKi8KLQkgMjk2ICwJLyogIHU5ICAqLwotCSAxMzYgLAkvKiAgdWMgICovCi0JIDQ0ICwJLyogIHVlICAqLwotCSAxOSAsCS8qICB1cCAgKi8KLQkgMzYgLAkvKiAgdXMgICovCi0JIDQ1ICwJLyogIHZiICAqLwotCSAxNiAsCS8qICB2ZSAgKi8KLQkgMTMgLAkvKiAgdmkgICovCi0JIDIwICwJLyogIHZzICAqLwotCSAxMzMgLAkvKiAgd2kgICovCi0JIDM2MSAsCS8qICB4bCAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBib29sIGJvb2xfZnJvbV90ZXJtY2FwW10gPSB7Ci0JVFJVRSwJLyogIGJ3ICAqLwotCVRSVUUsCS8qICBhbSAgKi8KLQlUUlVFLAkvKiAgeHNiICAqLwotCVRSVUUsCS8qICB4aHAgICovCi0JVFJVRSwJLyogIHhlbmwgICovCi0JVFJVRSwJLyogIGVvICAqLwotCVRSVUUsCS8qICBnbiAgKi8KLQlUUlVFLAkvKiAgaGMgICovCi0JVFJVRSwJLyogIGttICAqLwotCVRSVUUsCS8qICBocyAgKi8KLQlUUlVFLAkvKiAgaW4gICovCi0JVFJVRSwJLyogIGRhICAqLwotCVRSVUUsCS8qICBkYiAgKi8KLQlUUlVFLAkvKiAgbWlyICAqLwotCVRSVUUsCS8qICBtc2dyICAqLwotCVRSVUUsCS8qICBvcyAgKi8KLQlUUlVFLAkvKiAgZXNsb2sgICovCi0JVFJVRSwJLyogIHh0ICAqLwotCVRSVUUsCS8qICBoeiAgKi8KLQlUUlVFLAkvKiAgdWwgICovCi0JVFJVRSwJLyogIHhvbiAgKi8KLQlGQUxTRSwJLyogIG54b24gICovCi0JRkFMU0UsCS8qICBtYzVpICAqLwotCUZBTFNFLAkvKiAgY2h0cyAgKi8KLQlGQUxTRSwJLyogIG5ycm1jICAqLwotCUZBTFNFLAkvKiAgbnBjICAqLwotCUZBTFNFLAkvKiAgbmRzY3IgICovCi0JRkFMU0UsCS8qICBjY2MgICovCi0JRkFMU0UsCS8qICBiY2UgICovCi0JRkFMU0UsCS8qICBobHMgICovCi0JRkFMU0UsCS8qICB4aHBhICAqLwotCUZBTFNFLAkvKiAgY3J4bSAgKi8KLQlGQUxTRSwJLyogIGRhaXN5ICAqLwotCUZBTFNFLAkvKiAgeHZwYSAgKi8KLQlGQUxTRSwJLyogIHNhbSAgKi8KLQlGQUxTRSwJLyogIGNwaXggICovCi0JRkFMU0UsCS8qICBscGl4ICAqLwotCVRSVUUsCS8qICBPVGJzICAqLwotCVRSVUUsCS8qICBPVG5zICAqLwotCVRSVUUsCS8qICBPVG5jICAqLwotCUZBTFNFLAkvKiAgT1RNVCAgKi8KLQlUUlVFLAkvKiAgT1ROTCAgKi8KLQlUUlVFLAkvKiAgT1RwdCAgKi8KLQlUUlVFLAkvKiAgT1R4ciAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBib29sIG51bV9mcm9tX3Rlcm1jYXBbXSA9IHsKLQlUUlVFLAkvKiAgY29scyAgKi8KLQlUUlVFLAkvKiAgaXQgICovCi0JVFJVRSwJLyogIGxpbmVzICAqLwotCVRSVUUsCS8qICBsbSAgKi8KLQlUUlVFLAkvKiAgeG1jICAqLwotCVRSVUUsCS8qICBwYiAgKi8KLQlUUlVFLAkvKiAgdnQgICovCi0JVFJVRSwJLyogIHdzbCAgKi8KLQlGQUxTRSwJLyogIG5sYWIgICovCi0JRkFMU0UsCS8qICBsaCAgKi8KLQlGQUxTRSwJLyogIGx3ICAqLwotCVRSVUUsCS8qICBtYSAgKi8KLQlGQUxTRSwJLyogIHdudW0gICovCi0JRkFMU0UsCS8qICBjb2xvcnMgICovCi0JRkFMU0UsCS8qICBwYWlycyAgKi8KLQlGQUxTRSwJLyogIG5jdiAgKi8KLQlGQUxTRSwJLyogIGJ1ZnN6ICAqLwotCUZBTFNFLAkvKiAgc3BpbnYgICovCi0JRkFMU0UsCS8qICBzcGluaCAgKi8KLQlGQUxTRSwJLyogIG1hZGRyICAqLwotCUZBTFNFLAkvKiAgbWp1bXAgICovCi0JRkFMU0UsCS8qICBtY3MgICovCi0JRkFMU0UsCS8qICBtbHMgICovCi0JRkFMU0UsCS8qICBucGlucyAgKi8KLQlGQUxTRSwJLyogIG9yYyAgKi8KLQlGQUxTRSwJLyogIG9ybCAgKi8KLQlGQUxTRSwJLyogIG9yaGkgICovCi0JRkFMU0UsCS8qICBvcnZpICAqLwotCUZBTFNFLAkvKiAgY3BzICAqLwotCUZBTFNFLAkvKiAgd2lkY3MgICovCi0JRkFMU0UsCS8qICBidG5zICAqLwotCUZBTFNFLAkvKiAgYml0d2luICAqLwotCUZBTFNFLAkvKiAgYml0eXBlICAqLwotCVRSVUUsCS8qICBPVHVnICAqLwotCVRSVUUsCS8qICBPVGRDICAqLwotCVRSVUUsCS8qICBPVGROICAqLwotCVRSVUUsCS8qICBPVGRCICAqLwotCVRSVUUsCS8qICBPVGRUICAqLwotCUZBTFNFLAkvKiAgT1RrbiAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBib29sIHN0cl9mcm9tX3Rlcm1jYXBbXSA9IHsKLQlUUlVFLAkvKiAgY2J0ICAqLwotCVRSVUUsCS8qICBiZWwgICovCi0JVFJVRSwJLyogIGNyICAqLwotCVRSVUUsCS8qICBjc3IgICovCi0JVFJVRSwJLyogIHRiYyAgKi8KLQlUUlVFLAkvKiAgY2xlYXIgICovCi0JVFJVRSwJLyogIGVsICAqLwotCVRSVUUsCS8qICBlZCAgKi8KLQlGQUxTRSwJLyogIGhwYSAgKi8KLQlUUlVFLAkvKiAgY21kY2ggICovCi0JVFJVRSwJLyogIGN1cCAgKi8KLQlUUlVFLAkvKiAgY3VkMSAgKi8KLQlUUlVFLAkvKiAgaG9tZSAgKi8KLQlUUlVFLAkvKiAgY2l2aXMgICovCi0JVFJVRSwJLyogIGN1YjEgICovCi0JVFJVRSwJLyogIG1yY3VwICAqLwotCVRSVUUsCS8qICBjbm9ybSAgKi8KLQlUUlVFLAkvKiAgY3VmMSAgKi8KLQlUUlVFLAkvKiAgbGwgICovCi0JVFJVRSwJLyogIGN1dTEgICovCi0JVFJVRSwJLyogIGN2dmlzICAqLwotCVRSVUUsCS8qICBkY2gxICAqLwotCVRSVUUsCS8qICBkbDEgICovCi0JVFJVRSwJLyogIGRzbCAgKi8KLQlUUlVFLAkvKiAgaGQgICovCi0JVFJVRSwJLyogIHNtYWNzICAqLwotCVRSVUUsCS8qICBibGluayAgKi8KLQlUUlVFLAkvKiAgYm9sZCAgKi8KLQlUUlVFLAkvKiAgc21jdXAgICovCi0JVFJVRSwJLyogIHNtZGMgICovCi0JVFJVRSwJLyogIGRpbSAgKi8KLQlUUlVFLAkvKiAgc21pciAgKi8KLQlGQUxTRSwJLyogIGludmlzICAqLwotCUZBTFNFLAkvKiAgcHJvdCAgKi8KLQlUUlVFLAkvKiAgcmV2ICAqLwotCVRSVUUsCS8qICBzbXNvICAqLwotCVRSVUUsCS8qICBzbXVsICAqLwotCVRSVUUsCS8qICBlY2ggICovCi0JVFJVRSwJLyogIHJtYWNzICAqLwotCVRSVUUsCS8qICBzZ3IwICAqLwotCVRSVUUsCS8qICBybWN1cCAgKi8KLQlUUlVFLAkvKiAgcm1kYyAgKi8KLQlUUlVFLAkvKiAgcm1pciAgKi8KLQlUUlVFLAkvKiAgcm1zbyAgKi8KLQlUUlVFLAkvKiAgcm11bCAgKi8KLQlUUlVFLAkvKiAgZmxhc2ggICovCi0JVFJVRSwJLyogIGZmICAqLwotCVRSVUUsCS8qICBmc2wgICovCi0JVFJVRSwJLyogIGlzMSAgKi8KLQlUUlVFLAkvKiAgaXMyICAqLwotCVRSVUUsCS8qICBpczMgICovCi0JVFJVRSwJLyogIGlmICAqLwotCVRSVUUsCS8qICBpY2gxICAqLwotCVRSVUUsCS8qICBpbDEgICovCi0JVFJVRSwJLyogIGlwICAqLwotCVRSVUUsCS8qICBrYnMgICovCi0JRkFMU0UsCS8qICBrdGJjICAqLwotCUZBTFNFLAkvKiAga2NsciAgKi8KLQlGQUxTRSwJLyogIGtjdGFiICAqLwotCVRSVUUsCS8qICBrZGNoMSAgKi8KLQlGQUxTRSwJLyogIGtkbDEgICovCi0JVFJVRSwJLyogIGtjdWQxICAqLwotCUZBTFNFLAkvKiAga3JtaXIgICovCi0JRkFMU0UsCS8qICBrZWwgICovCi0JRkFMU0UsCS8qICBrZWQgICovCi0JVFJVRSwJLyogIGtmMCAgKi8KLQlUUlVFLAkvKiAga2YxICAqLwotCUZBTFNFLAkvKiAga2YxMCAgKi8KLQlUUlVFLAkvKiAga2YyICAqLwotCVRSVUUsCS8qICBrZjMgICovCi0JVFJVRSwJLyogIGtmNCAgKi8KLQlUUlVFLAkvKiAga2Y1ICAqLwotCVRSVUUsCS8qICBrZjYgICovCi0JVFJVRSwJLyogIGtmNyAgKi8KLQlUUlVFLAkvKiAga2Y4ICAqLwotCVRSVUUsCS8qICBrZjkgICovCi0JVFJVRSwJLyogIGtob21lICAqLwotCVRSVUUsCS8qICBraWNoMSAgKi8KLQlGQUxTRSwJLyogIGtpbDEgICovCi0JVFJVRSwJLyogIGtjdWIxICAqLwotCVRSVUUsCS8qICBrbGwgICovCi0JVFJVRSwJLyogIGtucCAgKi8KLQlUUlVFLAkvKiAga3BwICAqLwotCVRSVUUsCS8qICBrY3VmMSAgKi8KLQlGQUxTRSwJLyogIGtpbmQgICovCi0JRkFMU0UsCS8qICBrcmkgICovCi0JRkFMU0UsCS8qICBraHRzICAqLwotCVRSVUUsCS8qICBrY3V1MSAgKi8KLQlUUlVFLAkvKiAgcm1reCAgKi8KLQlUUlVFLAkvKiAgc21reCAgKi8KLQlGQUxTRSwJLyogIGxmMCAgKi8KLQlGQUxTRSwJLyogIGxmMSAgKi8KLQlGQUxTRSwJLyogIGxmMTAgICovCi0JRkFMU0UsCS8qICBsZjIgICovCi0JRkFMU0UsCS8qICBsZjMgICovCi0JRkFMU0UsCS8qICBsZjQgICovCi0JRkFMU0UsCS8qICBsZjUgICovCi0JRkFMU0UsCS8qICBsZjYgICovCi0JRkFMU0UsCS8qICBsZjcgICovCi0JRkFMU0UsCS8qICBsZjggICovCi0JRkFMU0UsCS8qICBsZjkgICovCi0JVFJVRSwJLyogIHJtbSAgKi8KLQlUUlVFLAkvKiAgc21tICAqLwotCVRSVUUsCS8qICBuZWwgICovCi0JVFJVRSwJLyogIHBhZCAgKi8KLQlUUlVFLAkvKiAgZGNoICAqLwotCVRSVUUsCS8qICBkbCAgKi8KLQlUUlVFLAkvKiAgY3VkICAqLwotCVRSVUUsCS8qICBpY2ggICovCi0JVFJVRSwJLyogIGluZG4gICovCi0JVFJVRSwJLyogIGlsICAqLwotCVRSVUUsCS8qICBjdWIgICovCi0JVFJVRSwJLyogIGN1ZiAgKi8KLQlUUlVFLAkvKiAgcmluICAqLwotCVRSVUUsCS8qICBjdXUgICovCi0JRkFMU0UsCS8qICBwZmtleSAgKi8KLQlGQUxTRSwJLyogIHBmbG9jICAqLwotCUZBTFNFLAkvKiAgcGZ4ICAqLwotCUZBTFNFLAkvKiAgbWMwICAqLwotCUZBTFNFLAkvKiAgbWM0ICAqLwotCUZBTFNFLAkvKiAgbWM1ICAqLwotCVRSVUUsCS8qICByZXAgICovCi0JRkFMU0UsCS8qICByczEgICovCi0JRkFMU0UsCS8qICByczIgICovCi0JRkFMU0UsCS8qICByczMgICovCi0JRkFMU0UsCS8qICByZiAgKi8KLQlUUlVFLAkvKiAgcmMgICovCi0JRkFMU0UsCS8qICB2cGEgICovCi0JVFJVRSwJLyogIHNjICAqLwotCVRSVUUsCS8qICBpbmQgICovCi0JVFJVRSwJLyogIHJpICAqLwotCVRSVUUsCS8qICBzZ3IgICovCi0JVFJVRSwJLyogIGh0cyAgKi8KLQlGQUxTRSwJLyogIHdpbmQgICovCi0JVFJVRSwJLyogIGh0ICAqLwotCVRSVUUsCS8qICB0c2wgICovCi0JVFJVRSwJLyogIHVjICAqLwotCVRSVUUsCS8qICBodSAgKi8KLQlGQUxTRSwJLyogIGlwcm9nICAqLwotCVRSVUUsCS8qICBrYTEgICovCi0JVFJVRSwJLyogIGthMyAgKi8KLQlUUlVFLAkvKiAga2IyICAqLwotCVRSVUUsCS8qICBrYzEgICovCi0JVFJVRSwJLyogIGtjMyAgKi8KLQlGQUxTRSwJLyogIG1jNXAgICovCi0JRkFMU0UsCS8qICBybXAgICovCi0JRkFMU0UsCS8qICBhY3NjICAqLwotCUZBTFNFLAkvKiAgcGxuICAqLwotCUZBTFNFLAkvKiAga2NidCAgKi8KLQlGQUxTRSwJLyogIHNteG9uICAqLwotCUZBTFNFLAkvKiAgcm14b24gICovCi0JRkFMU0UsCS8qICBzbWFtICAqLwotCUZBTFNFLAkvKiAgcm1hbSAgKi8KLQlGQUxTRSwJLyogIHhvbmMgICovCi0JRkFMU0UsCS8qICB4b2ZmYyAgKi8KLQlGQUxTRSwJLyogIGVuYWNzICAqLwotCUZBTFNFLAkvKiAgc21sbiAgKi8KLQlGQUxTRSwJLyogIHJtbG4gICovCi0JRkFMU0UsCS8qICBrYmVnICAqLwotCUZBTFNFLAkvKiAga2NhbiAgKi8KLQlGQUxTRSwJLyogIGtjbG8gICovCi0JRkFMU0UsCS8qICBrY21kICAqLwotCUZBTFNFLAkvKiAga2NweSAgKi8KLQlGQUxTRSwJLyogIGtjcnQgICovCi0JRkFMU0UsCS8qICBrZW5kICAqLwotCUZBTFNFLAkvKiAga2VudCAgKi8KLQlGQUxTRSwJLyogIGtleHQgICovCi0JRkFMU0UsCS8qICBrZm5kICAqLwotCUZBTFNFLAkvKiAga2hscCAgKi8KLQlGQUxTRSwJLyogIGttcmsgICovCi0JRkFMU0UsCS8qICBrbXNnICAqLwotCUZBTFNFLAkvKiAga21vdiAgKi8KLQlGQUxTRSwJLyogIGtueHQgICovCi0JRkFMU0UsCS8qICBrb3BuICAqLwotCUZBTFNFLAkvKiAga29wdCAgKi8KLQlGQUxTRSwJLyogIGtwcnYgICovCi0JRkFMU0UsCS8qICBrcHJ0ICAqLwotCUZBTFNFLAkvKiAga3JkbyAgKi8KLQlGQUxTRSwJLyogIGtyZWYgICovCi0JRkFMU0UsCS8qICBrcmZyICAqLwotCUZBTFNFLAkvKiAga3JwbCAgKi8KLQlGQUxTRSwJLyogIGtyc3QgICovCi0JRkFMU0UsCS8qICBrcmVzICAqLwotCUZBTFNFLAkvKiAga3NhdiAgKi8KLQlGQUxTRSwJLyogIGtzcGQgICovCi0JRkFMU0UsCS8qICBrdW5kICAqLwotCUZBTFNFLAkvKiAga0JFRyAgKi8KLQlGQUxTRSwJLyogIGtDQU4gICovCi0JRkFMU0UsCS8qICBrQ01EICAqLwotCUZBTFNFLAkvKiAga0NQWSAgKi8KLQlGQUxTRSwJLyogIGtDUlQgICovCi0JRkFMU0UsCS8qICBrREMgICovCi0JRkFMU0UsCS8qICBrREwgICovCi0JRkFMU0UsCS8qICBrc2x0ICAqLwotCUZBTFNFLAkvKiAga0VORCAgKi8KLQlGQUxTRSwJLyogIGtFT0wgICovCi0JRkFMU0UsCS8qICBrRVhUICAqLwotCUZBTFNFLAkvKiAga0ZORCAgKi8KLQlGQUxTRSwJLyogIGtITFAgICovCi0JRkFMU0UsCS8qICBrSE9NICAqLwotCUZBTFNFLAkvKiAga0lDICAqLwotCUZBTFNFLAkvKiAga0xGVCAgKi8KLQlGQUxTRSwJLyogIGtNU0cgICovCi0JRkFMU0UsCS8qICBrTU9WICAqLwotCUZBTFNFLAkvKiAga05YVCAgKi8KLQlGQUxTRSwJLyogIGtPUFQgICovCi0JRkFMU0UsCS8qICBrUFJWICAqLwotCUZBTFNFLAkvKiAga1BSVCAgKi8KLQlGQUxTRSwJLyogIGtSRE8gICovCi0JRkFMU0UsCS8qICBrUlBMICAqLwotCUZBTFNFLAkvKiAga1JJVCAgKi8KLQlGQUxTRSwJLyogIGtSRVMgICovCi0JRkFMU0UsCS8qICBrU0FWICAqLwotCUZBTFNFLAkvKiAga1NQRCAgKi8KLQlGQUxTRSwJLyogIGtVTkQgICovCi0JRkFMU0UsCS8qICByZmkgICovCi0JRkFMU0UsCS8qICBrZjExICAqLwotCUZBTFNFLAkvKiAga2YxMiAgKi8KLQlGQUxTRSwJLyogIGtmMTMgICovCi0JRkFMU0UsCS8qICBrZjE0ICAqLwotCUZBTFNFLAkvKiAga2YxNSAgKi8KLQlGQUxTRSwJLyogIGtmMTYgICovCi0JRkFMU0UsCS8qICBrZjE3ICAqLwotCUZBTFNFLAkvKiAga2YxOCAgKi8KLQlGQUxTRSwJLyogIGtmMTkgICovCi0JRkFMU0UsCS8qICBrZjIwICAqLwotCUZBTFNFLAkvKiAga2YyMSAgKi8KLQlGQUxTRSwJLyogIGtmMjIgICovCi0JRkFMU0UsCS8qICBrZjIzICAqLwotCUZBTFNFLAkvKiAga2YyNCAgKi8KLQlGQUxTRSwJLyogIGtmMjUgICovCi0JRkFMU0UsCS8qICBrZjI2ICAqLwotCUZBTFNFLAkvKiAga2YyNyAgKi8KLQlGQUxTRSwJLyogIGtmMjggICovCi0JRkFMU0UsCS8qICBrZjI5ICAqLwotCUZBTFNFLAkvKiAga2YzMCAgKi8KLQlGQUxTRSwJLyogIGtmMzEgICovCi0JRkFMU0UsCS8qICBrZjMyICAqLwotCUZBTFNFLAkvKiAga2YzMyAgKi8KLQlGQUxTRSwJLyogIGtmMzQgICovCi0JRkFMU0UsCS8qICBrZjM1ICAqLwotCUZBTFNFLAkvKiAga2YzNiAgKi8KLQlGQUxTRSwJLyogIGtmMzcgICovCi0JRkFMU0UsCS8qICBrZjM4ICAqLwotCUZBTFNFLAkvKiAga2YzOSAgKi8KLQlGQUxTRSwJLyogIGtmNDAgICovCi0JRkFMU0UsCS8qICBrZjQxICAqLwotCUZBTFNFLAkvKiAga2Y0MiAgKi8KLQlGQUxTRSwJLyogIGtmNDMgICovCi0JRkFMU0UsCS8qICBrZjQ0ICAqLwotCUZBTFNFLAkvKiAga2Y0NSAgKi8KLQlGQUxTRSwJLyogIGtmNDYgICovCi0JRkFMU0UsCS8qICBrZjQ3ICAqLwotCUZBTFNFLAkvKiAga2Y0OCAgKi8KLQlGQUxTRSwJLyogIGtmNDkgICovCi0JRkFMU0UsCS8qICBrZjUwICAqLwotCUZBTFNFLAkvKiAga2Y1MSAgKi8KLQlGQUxTRSwJLyogIGtmNTIgICovCi0JRkFMU0UsCS8qICBrZjUzICAqLwotCUZBTFNFLAkvKiAga2Y1NCAgKi8KLQlGQUxTRSwJLyogIGtmNTUgICovCi0JRkFMU0UsCS8qICBrZjU2ICAqLwotCUZBTFNFLAkvKiAga2Y1NyAgKi8KLQlGQUxTRSwJLyogIGtmNTggICovCi0JRkFMU0UsCS8qICBrZjU5ICAqLwotCUZBTFNFLAkvKiAga2Y2MCAgKi8KLQlGQUxTRSwJLyogIGtmNjEgICovCi0JRkFMU0UsCS8qICBrZjYyICAqLwotCUZBTFNFLAkvKiAga2Y2MyAgKi8KLQlGQUxTRSwJLyogIGVsMSAgKi8KLQlGQUxTRSwJLyogIG1nYyAgKi8KLQlGQUxTRSwJLyogIHNtZ2wgICovCi0JRkFMU0UsCS8qICBzbWdyICAqLwotCUZBTFNFLAkvKiAgZmxuICAqLwotCUZBTFNFLAkvKiAgc2NsayAgKi8KLQlGQUxTRSwJLyogIGRjbGsgICovCi0JRkFMU0UsCS8qICBybWNsayAgKi8KLQlGQUxTRSwJLyogIGN3aW4gICovCi0JRkFMU0UsCS8qICB3aW5nbyAgKi8KLQlGQUxTRSwJLyogIGh1cCAgKi8KLQlGQUxTRSwJLyogIGRpYWwgICovCi0JRkFMU0UsCS8qICBxZGlhbCAgKi8KLQlGQUxTRSwJLyogIHRvbmUgICovCi0JRkFMU0UsCS8qICBwdWxzZSAgKi8KLQlGQUxTRSwJLyogIGhvb2sgICovCi0JRkFMU0UsCS8qICBwYXVzZSAgKi8KLQlGQUxTRSwJLyogIHdhaXQgICovCi0JRkFMU0UsCS8qICB1MCAgKi8KLQlGQUxTRSwJLyogIHUxICAqLwotCUZBTFNFLAkvKiAgdTIgICovCi0JRkFMU0UsCS8qICB1MyAgKi8KLQlGQUxTRSwJLyogIHU0ICAqLwotCUZBTFNFLAkvKiAgdTUgICovCi0JRkFMU0UsCS8qICB1NiAgKi8KLQlGQUxTRSwJLyogIHU3ICAqLwotCUZBTFNFLAkvKiAgdTggICovCi0JRkFMU0UsCS8qICB1OSAgKi8KLQlGQUxTRSwJLyogIG9wICAqLwotCUZBTFNFLAkvKiAgb2MgICovCi0JRkFMU0UsCS8qICBpbml0YyAgKi8KLQlGQUxTRSwJLyogIGluaXRwICAqLwotCUZBTFNFLAkvKiAgc2NwICAqLwotCUZBTFNFLAkvKiAgc2V0ZiAgKi8KLQlGQUxTRSwJLyogIHNldGIgICovCi0JRkFMU0UsCS8qICBjcGkgICovCi0JRkFMU0UsCS8qICBscGkgICovCi0JRkFMU0UsCS8qICBjaHIgICovCi0JRkFMU0UsCS8qICBjdnIgICovCi0JRkFMU0UsCS8qICBkZWZjICAqLwotCUZBTFNFLAkvKiAgc3dpZG0gICovCi0JRkFMU0UsCS8qICBzZHJmcSAgKi8KLQlGQUxTRSwJLyogIHNpdG0gICovCi0JRkFMU0UsCS8qICBzbG0gICovCi0JRkFMU0UsCS8qICBzbWljbSAgKi8KLQlGQUxTRSwJLyogIHNubHEgICovCi0JRkFMU0UsCS8qICBzbnJtcSAgKi8KLQlGQUxTRSwJLyogIHNzaG0gICovCi0JRkFMU0UsCS8qICBzc3VibSAgKi8KLQlGQUxTRSwJLyogIHNzdXBtICAqLwotCUZBTFNFLAkvKiAgc3VtICAqLwotCUZBTFNFLAkvKiAgcndpZG0gICovCi0JRkFMU0UsCS8qICByaXRtICAqLwotCUZBTFNFLAkvKiAgcmxtICAqLwotCUZBTFNFLAkvKiAgcm1pY20gICovCi0JRkFMU0UsCS8qICByc2htICAqLwotCUZBTFNFLAkvKiAgcnN1Ym0gICovCi0JRkFMU0UsCS8qICByc3VwbSAgKi8KLQlGQUxTRSwJLyogIHJ1bSAgKi8KLQlGQUxTRSwJLyogIG1ocGEgICovCi0JRkFMU0UsCS8qICBtY3VkMSAgKi8KLQlGQUxTRSwJLyogIG1jdWIxICAqLwotCUZBTFNFLAkvKiAgbWN1ZjEgICovCi0JRkFMU0UsCS8qICBtdnBhICAqLwotCUZBTFNFLAkvKiAgbWN1dTEgICovCi0JRkFMU0UsCS8qICBwb3JkZXIgICovCi0JRkFMU0UsCS8qICBtY3VkICAqLwotCUZBTFNFLAkvKiAgbWN1YiAgKi8KLQlGQUxTRSwJLyogIG1jdWYgICovCi0JRkFMU0UsCS8qICBtY3V1ICAqLwotCUZBTFNFLAkvKiAgc2NzICAqLwotCUZBTFNFLAkvKiAgc21nYiAgKi8KLQlGQUxTRSwJLyogIHNtZ2JwICAqLwotCUZBTFNFLAkvKiAgc21nbHAgICovCi0JRkFMU0UsCS8qICBzbWdycCAgKi8KLQlGQUxTRSwJLyogIHNtZ3QgICovCi0JRkFMU0UsCS8qICBzbWd0cCAgKi8KLQlGQUxTRSwJLyogIHNiaW0gICovCi0JRkFMU0UsCS8qICBzY3NkICAqLwotCUZBTFNFLAkvKiAgcmJpbSAgKi8KLQlGQUxTRSwJLyogIHJjc2QgICovCi0JRkFMU0UsCS8qICBzdWJjcyAgKi8KLQlGQUxTRSwJLyogIHN1cGNzICAqLwotCUZBTFNFLAkvKiAgZG9jciAgKi8KLQlGQUxTRSwJLyogIHplcm9tICAqLwotCUZBTFNFLAkvKiAgY3NubSAgKi8KLQlGQUxTRSwJLyogIGttb3VzICAqLwotCUZBTFNFLAkvKiAgbWluZm8gICovCi0JRkFMU0UsCS8qICByZXFtcCAgKi8KLQlGQUxTRSwJLyogIGdldG0gICovCi0JRkFMU0UsCS8qICBzZXRhZiAgKi8KLQlGQUxTRSwJLyogIHNldGFiICAqLwotCUZBTFNFLAkvKiAgcGZ4bCAgKi8KLQlGQUxTRSwJLyogIGRldnQgICovCi0JRkFMU0UsCS8qICBjc2luICAqLwotCUZBTFNFLAkvKiAgczBkcyAgKi8KLQlGQUxTRSwJLyogIHMxZHMgICovCi0JRkFMU0UsCS8qICBzMmRzICAqLwotCUZBTFNFLAkvKiAgczNkcyAgKi8KLQlGQUxTRSwJLyogIHNtZ2xyICAqLwotCUZBTFNFLAkvKiAgc21ndGIgICovCi0JRkFMU0UsCS8qICBiaXJlcCAgKi8KLQlGQUxTRSwJLyogIGJpbmVsICAqLwotCUZBTFNFLAkvKiAgYmljciAgKi8KLQlGQUxTRSwJLyogIGNvbG9ybm0gICovCi0JRkFMU0UsCS8qICBkZWZiaSAgKi8KLQlGQUxTRSwJLyogIGVuZGJpICAqLwotCUZBTFNFLAkvKiAgc2V0Y29sb3IgICovCi0JRkFMU0UsCS8qICBzbGluZXMgICovCi0JRkFMU0UsCS8qICBkaXNwYyAgKi8KLQlGQUxTRSwJLyogIHNtcGNoICAqLwotCUZBTFNFLAkvKiAgcm1wY2ggICovCi0JRkFMU0UsCS8qICBzbXNjICAqLwotCUZBTFNFLAkvKiAgcm1zYyAgKi8KLQlGQUxTRSwJLyogIHBjdHJtICAqLwotCUZBTFNFLAkvKiAgc2Nlc2MgICovCi0JRkFMU0UsCS8qICBzY2VzYSAgKi8KLQlGQUxTRSwJLyogIGVoaGxtICAqLwotCUZBTFNFLAkvKiAgZWxobG0gICovCi0JRkFMU0UsCS8qICBlbG9obG0gICovCi0JRkFMU0UsCS8qICBlcmhsbSAgKi8KLQlGQUxTRSwJLyogIGV0aGxtICAqLwotCUZBTFNFLAkvKiAgZXZobG0gICovCi0JRkFMU0UsCS8qICBzZ3IxICAqLwotCUZBTFNFLAkvKiAgc2xlbmd0aCAgKi8KLQlUUlVFLAkvKiAgT1RpMiAgKi8KLQlUUlVFLAkvKiAgT1RycyAgKi8KLQlUUlVFLAkvKiAgT1RubCAgKi8KLQlUUlVFLAkvKiAgT1RiYyAgKi8KLQlGQUxTRSwJLyogIE9Ua28gICovCi0JVFJVRSwJLyogIE9UbWEgICovCi0JRkFMU0UsCS8qICBPVEcyICAqLwotCUZBTFNFLAkvKiAgT1RHMyAgKi8KLQlGQUxTRSwJLyogIE9URzEgICovCi0JRkFMU0UsCS8qICBPVEc0ICAqLwotCUZBTFNFLAkvKiAgT1RHUiAgKi8KLQlGQUxTRSwJLyogIE9UR0wgICovCi0JRkFMU0UsCS8qICBPVEdVICAqLwotCUZBTFNFLAkvKiAgT1RHRCAgKi8KLQlGQUxTRSwJLyogIE9UR0ggICovCi0JRkFMU0UsCS8qICBPVEdWICAqLwotCUZBTFNFLAkvKiAgT1RHQyAgKi8KLQlGQUxTRSwJLyogIG1lbWwgICovCi0JRkFMU0UsCS8qICBtZW11ICAqLwotCUZBTFNFLAkvKiAgcGxuICAqLwotCUZBTFNFLAkvKiAgc21sbiAgKi8KLQlGQUxTRSwJLyogIHJtbG4gICovCi0JRkFMU0UsCS8qICBrZjExICAqLwotCUZBTFNFLAkvKiAga2YxMiAgKi8KLQlGQUxTRSwJLyogIGtmMTMgICovCi0JRkFMU0UsCS8qICBrZjE0ICAqLwotCUZBTFNFLAkvKiAga2YxNSAgKi8KLQlGQUxTRSwJLyogIGtmMTYgICovCi0JRkFMU0UsCS8qICBrZjE3ICAqLwotCUZBTFNFLAkvKiAga2YxOCAgKi8KLQlGQUxTRSwJLyogIGtmMTkgICovCi0JRkFMU0UsCS8qICBrZjIwICAqLwotCUZBTFNFLAkvKiAga2YyMSAgKi8KLQlGQUxTRSwJLyogIGtmMjIgICovCi0JRkFMU0UsCS8qICBrZjIzICAqLwotCUZBTFNFLAkvKiAga2YyNCAgKi8KLQlGQUxTRSwJLyogIGtmMjUgICovCi0JRkFMU0UsCS8qICBrZjI2ICAqLwotCUZBTFNFLAkvKiAga2YyNyAgKi8KLQlGQUxTRSwJLyogIGtmMjggICovCi0JRkFMU0UsCS8qICBrZjI5ICAqLwotCUZBTFNFLAkvKiAga2YzMCAgKi8KLQlGQUxTRSwJLyogIGtmMzEgICovCi0JRkFMU0UsCS8qICBrZjMyICAqLwotCUZBTFNFLAkvKiAga2YzMyAgKi8KLQlGQUxTRSwJLyogIGtmMzQgICovCi0JRkFMU0UsCS8qICBrZjM1ICAqLwotCUZBTFNFLAkvKiAga2YzNiAgKi8KLQlGQUxTRSwJLyogIGtmMzcgICovCi0JRkFMU0UsCS8qICBrZjM4ICAqLwotCUZBTFNFLAkvKiAga2YzOSAgKi8KLQlGQUxTRSwJLyogIGtmNDAgICovCi0JRkFMU0UsCS8qICBrZjQxICAqLwotCUZBTFNFLAkvKiAga2Y0MiAgKi8KLQlGQUxTRSwJLyogIGtmNDMgICovCi0JRkFMU0UsCS8qICBrZjQ0ICAqLwotCUZBTFNFLAkvKiAga2Y0NSAgKi8KLQlGQUxTRSwJLyogIGtmNDYgICovCi0JRkFMU0UsCS8qICBrZjQ3ICAqLwotCUZBTFNFLAkvKiAga2Y0OCAgKi8KLQlGQUxTRSwJLyogIGtmNDkgICovCi0JRkFMU0UsCS8qICBrZjUwICAqLwotCUZBTFNFLAkvKiAga2Y1MSAgKi8KLQlGQUxTRSwJLyogIGtmNTIgICovCi0JRkFMU0UsCS8qICBrZjUzICAqLwotCUZBTFNFLAkvKiAga2Y1NCAgKi8KLQlGQUxTRSwJLyogIGtmNTUgICovCi0JRkFMU0UsCS8qICBrZjU2ICAqLwotCUZBTFNFLAkvKiAga2Y1NyAgKi8KLQlGQUxTRSwJLyogIGtmNTggICovCi0JRkFMU0UsCS8qICBrZjU5ICAqLwotCUZBTFNFLAkvKiAga2Y2MCAgKi8KLQlGQUxTRSwJLyogIGtmNjEgICovCi0JRkFMU0UsCS8qICBrZjYyICAqLwotCUZBTFNFLAkvKiAga2Y2MyAgKi8KLQlGQUxTRSwJLyogIGJveDEgICovCi0JRkFMU0UsCS8qICBib3gyICAqLwotCUZBTFNFLAkvKiAgYmF0dDEgICovCi0JRkFMU0UsCS8qICBiYXR0MiAgKi8KLQlGQUxTRSwJLyogIGNvbGIwICAqLwotCUZBTFNFLAkvKiAgY29sYjEgICovCi0JRkFMU0UsCS8qICBjb2xiMiAgKi8KLQlGQUxTRSwJLyogIGNvbGIzICAqLwotCUZBTFNFLAkvKiAgY29sYjQgICovCi0JRkFMU0UsCS8qICBjb2xiNSAgKi8KLQlGQUxTRSwJLyogIGNvbGI2ICAqLwotCUZBTFNFLAkvKiAgY29sYjcgICovCi0JRkFMU0UsCS8qICBjb2xmMCAgKi8KLQlGQUxTRSwJLyogIGNvbGYxICAqLwotCUZBTFNFLAkvKiAgY29sZjIgICovCi0JRkFMU0UsCS8qICBjb2xmMyAgKi8KLQlGQUxTRSwJLyogIGNvbGY0ICAqLwotCUZBTFNFLAkvKiAgY29sZjUgICovCi0JRkFMU0UsCS8qICBjb2xmNiAgKi8KLQlGQUxTRSwJLyogIGNvbGY3ICAqLwotCUZBTFNFLAkvKiAgZm9udDAgICovCi0JRkFMU0UsCS8qICBmb250MSAgKi8KLQlGQUxTRSwJLyogIGZvbnQyICAqLwotCUZBTFNFLAkvKiAgZm9udDMgICovCi0JRkFMU0UsCS8qICBmb250NCAgKi8KLQlGQUxTRSwJLyogIGZvbnQ1ICAqLwotCUZBTFNFLAkvKiAgZm9udDYgICovCi0JRkFMU0UsCS8qICBmb250NyAgKi8KLQlGQUxTRSwJLyogIGtidGFiICAqLwotCUZBTFNFLAkvKiAga2RvICAqLwotCUZBTFNFLAkvKiAga2NtZCAgKi8KLQlGQUxTRSwJLyogIGtjcG4gICovCi0JRkFMU0UsCS8qICBrZW5kICAqLwotCUZBTFNFLAkvKiAga2hscCAgKi8KLQlGQUxTRSwJLyogIGtubCAgKi8KLQlGQUxTRSwJLyogIGtucG4gICovCi0JRkFMU0UsCS8qICBrcHBuICAqLwotCUZBTFNFLAkvKiAga3BwbiAgKi8KLQlGQUxTRSwJLyogIGtxdWl0ICAqLwotCUZBTFNFLAkvKiAga3NlbCAgKi8KLQlGQUxTRSwJLyogIGtzY2wgICovCi0JRkFMU0UsCS8qICBrc2NyICAqLwotCUZBTFNFLAkvKiAga3RhYiAgKi8KLQlGQUxTRSwJLyogIGttcGYxICAqLwotCUZBTFNFLAkvKiAga21wdDEgICovCi0JRkFMU0UsCS8qICBrbXBmMiAgKi8KLQlGQUxTRSwJLyogIGttcHQyICAqLwotCUZBTFNFLAkvKiAga21wZjMgICovCi0JRkFMU0UsCS8qICBrbXB0MyAgKi8KLQlGQUxTRSwJLyogIGttcGY0ICAqLwotCUZBTFNFLAkvKiAga21wdDQgICovCi0JRkFMU0UsCS8qICBrbXBmNSAgKi8KLQlGQUxTRSwJLyogIGttcHQ1ICAqLwotCUZBTFNFLAkvKiAgYXBzdHIgICovCi0JRkFMU0UsCS8qICBrbXBmNiAgKi8KLQlGQUxTRSwJLyogIGttcHQ2ICAqLwotCUZBTFNFLAkvKiAga21wZjcgICovCi0JRkFMU0UsCS8qICBrbXB0NyAgKi8KLQlGQUxTRSwJLyogIGttcGY4ICAqLwotCUZBTFNFLAkvKiAga21wdDggICovCi0JRkFMU0UsCS8qICBrbXBmOSAgKi8KLQlGQUxTRSwJLyogIGttcHQ5ICAqLwotCUZBTFNFLAkvKiAga3NmMSAgKi8KLQlGQUxTRSwJLyogIGtzZjIgICovCi0JRkFMU0UsCS8qICBrc2YzICAqLwotCUZBTFNFLAkvKiAga3NmNCAgKi8KLQlGQUxTRSwJLyogIGtzZjUgICovCi0JRkFMU0UsCS8qICBrc2Y2ICAqLwotCUZBTFNFLAkvKiAga3NmNyAgKi8KLQlGQUxTRSwJLyogIGtzZjggICovCi0JRkFMU0UsCS8qICBrc2Y5ICAqLwotCUZBTFNFLAkvKiAga3NmMTAgICovCi0JRkFMU0UsCS8qICBrZjExICAqLwotCUZBTFNFLAkvKiAga2YxMiAgKi8KLQlGQUxTRSwJLyogIGthY3QgICovCi0JRkFMU0UsCS8qICB0b3BsICAqLwotCUZBTFNFLAkvKiAgYnRtbCAgKi8KLQlGQUxTRSwJLyogIHJ2ZXJ0ICAqLwotCUZBTFNFLAkvKiAgbHZlcnQgICovCi19OwotCmRpZmYgLS1naXQgYS9wcm9ncy90aWMgYi9wcm9ncy90aWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdmZWVmZDIuLjAwMDAwMDAKLS0tIGEvcHJvZ3MvdGljCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcHJvZ3MvdGljLmMgYi9wcm9ncy90aWMuYwppbmRleCA4MmJjM2VhLi4xMGNjNGQyIDEwMDY0NAotLS0gYS9wcm9ncy90aWMuYworKysgYi9wcm9ncy90aWMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNywyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKQEAgLTM1LDYgKzM1LDcgQEAKIC8qCiAgKgl0aWMuYyAtLS0gTWFpbiBwcm9ncmFtIGZvciB0ZXJtaW5mbyBjb21waWxlcgogICoJCQlieSBFcmljIFMuIFJheW1vbmQKKyAqCQkJYW5kIFRob21hcyBFIERpY2tleQogICoKICAqLwogCkBAIC00Miw5ICs0MywxNCBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKICNpbmNsdWRlIDxkdW1wX2VudHJ5Lmg+CisjaW5jbHVkZSA8dHBhcm1fdHlwZS5oPgorI2luY2x1ZGUgPGhhc2hlZF9kYi5oPgorI2luY2x1ZGUgPHBhcmFtZXRyaXplZC5oPgogI2luY2x1ZGUgPHRyYW5zZm9ybS5oPgogCi1NT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjEzNyAyMDA4LzA5LzEzIDE2OjU5OjI0IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjIxMSAyMDE1LzA3LzA0IDIxOjEyOjQxIHRvbSBFeHAgJCIpCisKKyNkZWZpbmUgU1RESU5fTkFNRSAiPHN0ZGluPiIKIAogY29uc3QgY2hhciAqX25jX3Byb2duYW1lID0gInRpYyI7CiAKQEAgLTUzLDYgKzU5LDcgQEAKIHN0YXRpYyBib29sIGNhcGR1bXAgPSBGQUxTRTsJLyogcnVubmluZyBhcyBpbmZvdG9jYXA/ICovCiBzdGF0aWMgYm9vbCBpbmZvZHVtcCA9IEZBTFNFOwkvKiBydW5uaW5nIGFzIGNhcHRvaW5mbz8gKi8KIHN0YXRpYyBib29sIHNob3dzdW1tYXJ5ID0gRkFMU0U7CitzdGF0aWMgY2hhciAqKm5hbWVsc3QgPSAwOwogc3RhdGljIGNvbnN0IGNoYXIgKnRvX3JlbW92ZTsKIAogc3RhdGljIHZvaWQgKCpzYXZlX2NoZWNrX3Rlcm10eXBlKSAoVEVSTVRZUEUgKiwgYm9vbCk7CkBAIC02OSwxMSArNzYsMTMgQEAKIDFcCiBhXAogQ1wKK0RcCiBjXAogZlwKIEdcCiBnXAogSVwKK0tcCiBMXAogTlwKIHJcCkBAIC05OSw4ICsxMDgsMTAgQEAKICNlbmRpZgogCiBzdGF0aWMgdm9pZAotY2xlYW51cChjaGFyICoqbmFtZWxzdCBHQ0NfVU5VU0VEKQorY2xlYW51cCh2b2lkKQogeworICAgIGludCByYzsKKwogI2lmIE5PX0xFQUtTCiAgICAgZnJlZV9uYW1lbGlzdChuYW1lbHN0KTsKICNlbmRpZgpAQCAtMTA4LDEwICsxMTksMTIgQEAKIAlmY2xvc2UodG1wX2ZwKTsKICAgICBpZiAodG9fcmVtb3ZlICE9IDApIHsKICNpZiBIQVZFX1JFTU9WRQotCXJlbW92ZSh0b19yZW1vdmUpOworCXJjID0gcmVtb3ZlKHRvX3JlbW92ZSk7CiAjZWxzZQotCXVubGluayh0b19yZW1vdmUpOworCXJjID0gdW5saW5rKHRvX3JlbW92ZSk7CiAjZW5kaWYKKwlpZiAocmMgIT0gMCkKKwkgICAgcGVycm9yKHRvX3JlbW92ZSk7CiAgICAgfQogfQogCkBAIC0xMTksNjEgKzEzMiw2MCBAQAogZmFpbGVkKGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBwZXJyb3IobXNnKTsKLSAgICBjbGVhbnVwKChjaGFyICoqKSAwKTsKICAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOwogfQogCiBzdGF0aWMgdm9pZAogdXNhZ2Uodm9pZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdGJsW10gPQorI2RlZmluZSBEQVRBKHMpIHMgIlxuIgorICAgIHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvbnNfc3RyaW5nW10gPQogICAgIHsKLQkiT3B0aW9uczoiLAotCSIgIC0xICAgICAgICAgZm9ybWF0IHRyYW5zbGF0aW9uIG91dHB1dCBvbmUgY2FwYWJpbGl0eSBwZXIgbGluZSIsCisJREFUQSgiT3B0aW9uczoiKQorCURBVEEoIiAgLTEgICAgICAgICBmb3JtYXQgdHJhbnNsYXRpb24gb3V0cHV0IG9uZSBjYXBhYmlsaXR5IHBlciBsaW5lIikKICNpZiBOQ1VSU0VTX1hOQU1FUwotCSIgIC1hICAgICAgICAgcmV0YWluIGNvbW1lbnRlZC1vdXQgY2FwYWJpbGl0aWVzIChzZXRzIC14IGFsc28pIiwKKwlEQVRBKCIgIC1hICAgICAgICAgcmV0YWluIGNvbW1lbnRlZC1vdXQgY2FwYWJpbGl0aWVzIChzZXRzIC14IGFsc28pIikKICNlbmRpZgotCSIgIC1DICAgICAgICAgdHJhbnNsYXRlIGVudHJpZXMgdG8gdGVybWNhcCBzb3VyY2UgZm9ybSIsCi0JIiAgLWMgICAgICAgICBjaGVjayBvbmx5LCB2YWxpZGF0ZSBpbnB1dCB3aXRob3V0IGNvbXBpbGluZyBvciB0cmFuc2xhdGluZyIsCi0JIiAgLWU8bmFtZXM+ICB0cmFuc2xhdGUvY29tcGlsZSBvbmx5IGVudHJpZXMgbmFtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3QiLAotCSIgIC1mICAgICAgICAgZm9ybWF0IGNvbXBsZXggc3RyaW5ncyBmb3IgcmVhZGFiaWxpdHkiLAotCSIgIC1HICAgICAgICAgZm9ybWF0ICV7bnVtYmVyfSB0byAlJ2NoYXInIiwKLQkiICAtZyAgICAgICAgIGZvcm1hdCAlJ2NoYXInIHRvICV7bnVtYmVyfSIsCi0JIiAgLUkgICAgICAgICB0cmFuc2xhdGUgZW50cmllcyB0byB0ZXJtaW5mbyBzb3VyY2UgZm9ybSIsCi0JIiAgLUwgICAgICAgICB0cmFuc2xhdGUgZW50cmllcyB0byBmdWxsIHRlcm1pbmZvIHNvdXJjZSBmb3JtIiwKLQkiICAtTiAgICAgICAgIGRpc2FibGUgc21hcnQgZGVmYXVsdHMgZm9yIHNvdXJjZSB0cmFuc2xhdGlvbiIsCi0JIiAgLW88ZGlyPiAgICBzZXQgb3V0cHV0IGRpcmVjdG9yeSBmb3IgY29tcGlsZWQgZW50cnkgd3JpdGVzIiwKLQkiICAtUjxuYW1lPiAgIHJlc3RyaWN0IHRyYW5zbGF0aW9uIHRvIGdpdmVuIHRlcm1pbmZvL3Rlcm1jYXAgdmVyc2lvbiIsCi0JIiAgLXIgICAgICAgICBmb3JjZSByZXNvbHV0aW9uIG9mIGFsbCB1c2UgZW50cmllcyBpbiBzb3VyY2UgdHJhbnNsYXRpb24iLAotCSIgIC1zICAgICAgICAgcHJpbnQgc3VtbWFyeSBzdGF0aXN0aWNzIiwKLQkiICAtVCAgICAgICAgIHJlbW92ZSBzaXplLXJlc3RyaWN0aW9ucyBvbiBjb21waWxlZCBkZXNjcmlwdGlvbiIsCisJREFUQSgiICAtQyAgICAgICAgIHRyYW5zbGF0ZSBlbnRyaWVzIHRvIHRlcm1jYXAgc291cmNlIGZvcm0iKQorCURBVEEoIiAgLUQgICAgICAgICBwcmludCBsaXN0IG9mIHRpYydzIGRhdGFiYXNlIGxvY2F0aW9ucyAoZmlyc3QgbXVzdCBiZSB3cml0YWJsZSkiKQorCURBVEEoIiAgLWMgICAgICAgICBjaGVjayBvbmx5LCB2YWxpZGF0ZSBpbnB1dCB3aXRob3V0IGNvbXBpbGluZyBvciB0cmFuc2xhdGluZyIpCisJREFUQSgiICAtZTxuYW1lcz4gIHRyYW5zbGF0ZS9jb21waWxlIG9ubHkgZW50cmllcyBuYW1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdCIpCisJREFUQSgiICAtZiAgICAgICAgIGZvcm1hdCBjb21wbGV4IHN0cmluZ3MgZm9yIHJlYWRhYmlsaXR5IikKKwlEQVRBKCIgIC1HICAgICAgICAgZm9ybWF0ICV7bnVtYmVyfSB0byAlJ2NoYXInIikKKwlEQVRBKCIgIC1nICAgICAgICAgZm9ybWF0ICUnY2hhcicgdG8gJXtudW1iZXJ9IikKKwlEQVRBKCIgIC1JICAgICAgICAgdHJhbnNsYXRlIGVudHJpZXMgdG8gdGVybWluZm8gc291cmNlIGZvcm0iKQorCURBVEEoIiAgLUsgICAgICAgICB0cmFuc2xhdGUgZW50cmllcyB0byB0ZXJtY2FwIHNvdXJjZSBmb3JtIHdpdGggQlNEIHN5bnRheCIpCisJREFUQSgiICAtTCAgICAgICAgIHRyYW5zbGF0ZSBlbnRyaWVzIHRvIGZ1bGwgdGVybWluZm8gc291cmNlIGZvcm0iKQorCURBVEEoIiAgLU4gICAgICAgICBkaXNhYmxlIHNtYXJ0IGRlZmF1bHRzIGZvciBzb3VyY2UgdHJhbnNsYXRpb24iKQorCURBVEEoIiAgLW88ZGlyPiAgICBzZXQgb3V0cHV0IGRpcmVjdG9yeSBmb3IgY29tcGlsZWQgZW50cnkgd3JpdGVzIikKKwlEQVRBKCIgIC1SPG5hbWU+ICAgcmVzdHJpY3QgdHJhbnNsYXRpb24gdG8gZ2l2ZW4gdGVybWluZm8vdGVybWNhcCB2ZXJzaW9uIikKKwlEQVRBKCIgIC1yICAgICAgICAgZm9yY2UgcmVzb2x1dGlvbiBvZiBhbGwgdXNlIGVudHJpZXMgaW4gc291cmNlIHRyYW5zbGF0aW9uIikKKwlEQVRBKCIgIC1zICAgICAgICAgcHJpbnQgc3VtbWFyeSBzdGF0aXN0aWNzIikKKwlEQVRBKCIgIC1UICAgICAgICAgcmVtb3ZlIHNpemUtcmVzdHJpY3Rpb25zIG9uIGNvbXBpbGVkIGRlc2NyaXB0aW9uIikKICNpZiBOQ1VSU0VTX1hOQU1FUwotCSIgIC10ICAgICAgICAgc3VwcHJlc3MgY29tbWVudGVkLW91dCBjYXBhYmlsaXRpZXMiLAorCURBVEEoIiAgLXQgICAgICAgICBzdXBwcmVzcyBjb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcyIpCiAjZW5kaWYKLQkiICAtVSAgICAgICAgIHN1cHByZXNzIHBvc3QtcHJvY2Vzc2luZyBvZiBlbnRyaWVzIiwKLQkiICAtViAgICAgICAgIHByaW50IHZlcnNpb24iLAotCSIgIC12W25dICAgICAgc2V0IHZlcmJvc2l0eSBsZXZlbCIsCi0JIiAgLXdbbl0gICAgICBzZXQgZm9ybWF0IHdpZHRoIGZvciB0cmFuc2xhdGlvbiBvdXRwdXQiLAorCURBVEEoIiAgLVUgICAgICAgICBzdXBwcmVzcyBwb3N0LXByb2Nlc3Npbmcgb2YgZW50cmllcyIpCisJREFUQSgiICAtViAgICAgICAgIHByaW50IHZlcnNpb24iKQorCURBVEEoIiAgLXZbbl0gICAgICBzZXQgdmVyYm9zaXR5IGxldmVsIikKKwlEQVRBKCIgIC13W25dICAgICAgc2V0IGZvcm1hdCB3aWR0aCBmb3IgdHJhbnNsYXRpb24gb3V0cHV0IikKICNpZiBOQ1VSU0VTX1hOQU1FUwotCSIgIC14ICAgICAgICAgdHJlYXQgdW5rbm93biBjYXBhYmlsaXRpZXMgYXMgdXNlci1kZWZpbmVkIiwKKwlEQVRBKCIgIC14ICAgICAgICAgdHJlYXQgdW5rbm93biBjYXBhYmlsaXRpZXMgYXMgdXNlci1kZWZpbmVkIikKICNlbmRpZgotCSIiLAotCSJQYXJhbWV0ZXJzOiIsCi0JIiAgPGZpbGU+ICAgICBmaWxlIHRvIHRyYW5zbGF0ZSBvciBjb21waWxlIgorCURBVEEoIiIpCisJREFUQSgiUGFyYW1ldGVyczoiKQorCURBVEEoIiAgPGZpbGU+ICAgICBmaWxlIHRvIHRyYW5zbGF0ZSBvciBjb21waWxlIikKICAgICB9OwotICAgIHNpemVfdCBqOworI3VuZGVmIERBVEEKIAogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzICVzXG4iLCBfbmNfcHJvZ25hbWUsIHVzYWdlX3N0cmluZyk7Ci0gICAgZm9yIChqID0gMDsgaiA8IFNJWkVPRih0YmwpOyBqKyspIHsKLQlmcHV0cyh0Ymxbal0sIHN0ZGVycik7Ci0JcHV0YygnXG4nLCBzdGRlcnIpOwotICAgIH0KKyAgICBmcHV0cyhvcHRpb25zX3N0cmluZywgc3RkZXJyKTsKICAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOwogfQogCiAjZGVmaW5lIExfQlJBQ0UgJ3snCiAjZGVmaW5lIFJfQlJBQ0UgJ30nCi0jZGVmaW5lIFNfUVVPVEUgJ1wnJzsKKyNkZWZpbmUgU19RVU9URSAnXCcnCiAKIHN0YXRpYyB2b2lkCiB3cml0ZV9pdChFTlRSWSAqIGVwKQpAQCAtMjE2LDEyICsyMjgsMTIgQEAKIAkgICAgfQogCSAgICAqZCA9IDA7CiAJICAgIGlmIChzdHJsZW4ocmVzdWx0KSA8IHN0cmxlbihzKSkKLQkJc3RyY3B5KHMsIHJlc3VsdCk7CisJCV9uY19TVFJDUFkocywgcmVzdWx0LCBzdHJsZW4ocykgKyAxKTsKIAl9CiAgICAgfQogCiAgICAgX25jX3NldF90eXBlKF9uY19maXJzdF9uYW1lKGVwLT50dGVybS50ZXJtX25hbWVzKSk7Ci0gICAgX25jX2N1cnJfbGluZSA9IGVwLT5zdGFydGxpbmU7CisgICAgX25jX2N1cnJfbGluZSA9IChpbnQpIGVwLT5zdGFydGxpbmU7CiAgICAgX25jX3dyaXRlX2VudHJ5KCZlcC0+dHRlcm0pOwogfQogCkBAIC0yODYsOCArMjk4LDEwIEBACiAgICAgaWYgKGluX25hbWUpIHsKIAlpZiAodXNlZCArIDEgPj0gaGF2ZSkgewogCSAgICBoYXZlICs9IDEzMjsKLQkgICAgbmFtZWJ1ZiA9IHR5cGVSZWFsbG9jKGNoYXIsIGhhdmUsIG5hbWVidWYpOwotCSAgICBzdWZmaXggPSB0eXBlUmVhbGxvYyhjaGFyLCBoYXZlLCBzdWZmaXgpOworCSAgICBpZiAoKG5hbWVidWYgPSB0eXBlUmVhbGxvYyhjaGFyLCBoYXZlLCBuYW1lYnVmKSkgPT0gMCkKKwkJICBmYWlsZWQoInB1dF90cmFuc2xhdGUgbmFtZWJ1ZiIpOworCSAgICBpZiAoKHN1ZmZpeCA9IHR5cGVSZWFsbG9jKGNoYXIsIGhhdmUsIHN1ZmZpeCkpID09IDApCisJCSAgZmFpbGVkKCJwdXRfdHJhbnNsYXRlIHN1ZmZpeCIpOwogCX0KIAlpZiAoYyA9PSAnXG4nIHx8IGMgPT0gJ0AnKSB7CiAJICAgIG5hbWVidWZbdXNlZCsrXSA9ICdcMCc7CkBAIC0zMDgsNyArMzIyLDcgQEAKIAkgICAgaWYgKCh1cCA9IHN0cmNocihuYW1lYnVmLCAnIycpKSAhPSAwCiAJCXx8ICh1cCA9IHN0cmNocihuYW1lYnVmLCAnPScpKSAhPSAwCiAJCXx8ICgodXAgPSBzdHJjaHIobmFtZWJ1ZiwgJ0AnKSkgIT0gMCAmJiB1cFsxXSA9PSAnPicpKSB7Ci0JCSh2b2lkKSBzdHJjcHkoc3VmZml4LCB1cCk7CisJCV9uY19TVFJDUFkoc3VmZml4LCB1cCwgaGF2ZSk7CiAJCSp1cCA9ICdcMCc7CiAJICAgIH0KIApAQCAtMzM5LDMyICszNTMsMTIyIEBACiBzdGF0aWMgY2hhciAqCiBzdHJpcHBlZChjaGFyICpzcmMpCiB7CisgICAgY2hhciAqZHN0ID0gMDsKKwogICAgIHdoaWxlIChpc3NwYWNlKFVDaGFyKCpzcmMpKSkKIAlzcmMrKzsKKwogICAgIGlmICgqc3JjICE9ICdcMCcpIHsKLQljaGFyICpkc3QgPSBzdHJjcHkoKGNoYXIgKikgbWFsbG9jKHN0cmxlbihzcmMpICsgMSksIHNyYyk7Ci0Jc2l6ZV90IGxlbiA9IHN0cmxlbihkc3QpOwotCXdoaWxlICgtLWxlbiAhPSAwICYmIGlzc3BhY2UoVUNoYXIoZHN0W2xlbl0pKSkKLQkgICAgZHN0W2xlbl0gPSAnXDAnOwotCXJldHVybiBkc3Q7CisJc2l6ZV90IGxlbjsKKworCWlmICgoZHN0ID0gc3RyZHVwKHNyYykpID09IE5VTEwpIHsKKwkgICAgZmFpbGVkKCJzdHJkdXAiKTsKKwl9IGVsc2UgeworCSAgICBsZW4gPSBzdHJsZW4oZHN0KTsKKwkgICAgd2hpbGUgKC0tbGVuICE9IDAgJiYgaXNzcGFjZShVQ2hhcihkc3RbbGVuXSkpKQorCQlkc3RbbGVuXSA9ICdcMCc7CisJfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZHN0OwogfQogCiBzdGF0aWMgRklMRSAqCi1vcGVuX2lucHV0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorb3Blbl90ZW1wZmlsZShjaGFyICpmaWxlbmFtZSkKIHsKLSAgICBGSUxFICpmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOwotICAgIHN0cnVjdCBzdGF0IHNiOworICAgIEZJTEUgKnJlc3VsdCA9IDA7CiAKLSAgICBpZiAoZnAgPT0gMCkgewotCWZwcmludGYoc3RkZXJyLCAiJXM6IENhbid0IG9wZW4gJXNcbiIsIF9uY19wcm9nbmFtZSwgZmlsZW5hbWUpOwotCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisgICAgX25jX1NUUkNQWShmaWxlbmFtZSwgIi90bXAvWFhYWFhYIiwgUEFUSF9NQVgpOworI2lmIEhBVkVfTUtTVEVNUAorICAgIHsKKwlpbnQgb2xkbWFzayA9IChpbnQpIHVtYXNrKDA3Nyk7CisJaW50IGZkID0gbWtzdGVtcChmaWxlbmFtZSk7CisJaWYgKGZkID49IDApCisJICAgIHJlc3VsdCA9IGZkb3BlbihmZCwgInciKTsKKwl1bWFzaygobW9kZV90KSBvbGRtYXNrKTsKICAgICB9Ci0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzYikgPCAwCi0JfHwgKHNiLnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUcpIHsKKyNlbHNlCisgICAgaWYgKHRtcG5hbShmaWxlbmFtZSkgIT0gMCkKKwlyZXN1bHQgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBGSUxFICoKK2NvcHlfaW5wdXQoRklMRSAqc291cmNlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqYWx0X2ZpbGUpCit7CisgICAgY2hhciBteV9hbHRmaWxlW1BBVEhfTUFYXTsKKyAgICBGSUxFICpyZXN1bHQgPSAwOworICAgIEZJTEUgKnRhcmdldCA9IDA7CisgICAgaW50IGNoOworCisgICAgaWYgKGFsdF9maWxlID09IDApCisJYWx0X2ZpbGUgPSBteV9hbHRmaWxlOworCisgICAgaWYgKHNvdXJjZSA9PSAwKSB7CisJZmFpbGVkKCJjb3B5X2lucHV0IChzb3VyY2UpIik7CisgICAgfSBlbHNlIGlmICgodGFyZ2V0ID0gb3Blbl90ZW1wZmlsZShhbHRfZmlsZSkpID09IDApIHsKKwlmYWlsZWQoImNvcHlfaW5wdXQgKHRhcmdldCkiKTsKKyAgICB9IGVsc2UgeworCWNsZWFyZXJyKHNvdXJjZSk7CisJZm9yICg7OykgeworCSAgICBjaCA9IGZnZXRjKHNvdXJjZSk7CisJICAgIGlmIChmZW9mKHNvdXJjZSkpIHsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSBpZiAoZmVycm9yKHNvdXJjZSkpIHsKKwkJZmFpbGVkKGZpbGVuYW1lKTsKKwkgICAgfSBlbHNlIGlmIChjaCA9PSAwKSB7CisJCS8qIGRvbid0IGxvb3AgaW4gY2FzZSBzb21lb25lIHdhbnRzIHRvIGNvbnZlcnQgL2Rldi96ZXJvICovCisJCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIGlzIG5vdCBhIHRleHQtZmlsZVxuIiwgX25jX3Byb2duYW1lLCBmaWxlbmFtZSk7CisJCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJICAgIH0KKwkgICAgZnB1dGMoY2gsIHRhcmdldCk7CisJfQorCWZjbG9zZShzb3VyY2UpOworCS8qCisJICogcmV3aW5kKCkgZG9lcyBub3QgZm9yY2UgdGhlIHRhcmdldCBmaWxlJ3MgZGF0YSB0byBkaXNrIChub3QgZG9lcworCSAqIGZmbHVzaCgpLi4uKS4gIFNvIG9wZW4gYSBzZWNvbmQgc3RyZWFtIG9uIHRoZSBkYXRhIGFuZCB0aGVuIGNsb3NlCisJICogdGhlIG9uZSB0aGF0IHdlIHdlcmUgd3JpdGluZyBvbiBiZWZvcmUgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZQorCSAqIHNlY29uZCBzdHJlYW0uCisJICovCisJcmVzdWx0ID0gZm9wZW4oYWx0X2ZpbGUsICJyKyIpOworCWZjbG9zZSh0YXJnZXQpOworCXRvX3JlbW92ZSA9IHN0cmR1cChhbHRfZmlsZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBGSUxFICoKK29wZW5faW5wdXQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKmFsdF9maWxlKQoreworICAgIEZJTEUgKmZwOworICAgIHN0cnVjdCBzdGF0IHNiOworICAgIGludCBtb2RlOworCisgICAgaWYgKCFzdHJjbXAoZmlsZW5hbWUsICItIikpIHsKKwlmcCA9IGNvcHlfaW5wdXQoc3RkaW4sIFNURElOX05BTUUsIGFsdF9maWxlKTsKKyAgICB9IGVsc2UgaWYgKHN0YXQoZmlsZW5hbWUsICZzYikgPCAwKSB7CisJZnByaW50ZihzdGRlcnIsICIlczogJXMgJXNcbiIsIF9uY19wcm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9IGVsc2UgaWYgKChtb2RlID0gKHNiLnN0X21vZGUgJiBTX0lGTVQpKSA9PSBTX0lGRElSCisJICAgICAgIHx8IChtb2RlICE9IFNfSUZSRUcgJiYgbW9kZSAhPSBTX0lGQ0hSICYmIG1vZGUgIT0gU19JRklGTykpIHsKIAlmcHJpbnRmKHN0ZGVyciwgIiVzOiAlcyBpcyBub3QgYSBmaWxlXG4iLCBfbmNfcHJvZ25hbWUsIGZpbGVuYW1lKTsKIAlFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworICAgIH0gZWxzZSB7CisJZnAgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKKworCWlmIChmcCA9PSAwKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IENhbid0IG9wZW4gJXNcbiIsIF9uY19wcm9nbmFtZSwgZmlsZW5hbWUpOworCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAobW9kZSAhPSBTX0lGUkVHKSB7CisJICAgIGlmIChhbHRfZmlsZSAhPSAwKSB7CisJCUZJTEUgKmZwMiA9IGNvcHlfaW5wdXQoZnAsIGZpbGVuYW1lLCBhbHRfZmlsZSk7CisJCWZwID0gZnAyOworCSAgICB9IGVsc2UgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiAlcyBpcyBub3QgYSBmaWxlXG4iLCBfbmNfcHJvZ25hbWUsIGZpbGVuYW1lKTsKKwkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwkgICAgfQorCX0KICAgICB9CiAgICAgcmV0dXJuIGZwOwogfQpAQCAtMzgyLDcgKzQ4Niw3IEBACiAgICAgaWYgKHNyYyA9PSAwKSB7CiAJLyogRU1QVFkgKi8gOwogICAgIH0gZWxzZSBpZiAoc3RyY2hyKHNyYywgJy8nKSAhPSAwKSB7CQkvKiBhIGZpbGVuYW1lICovCi0JRklMRSAqZnAgPSBvcGVuX2lucHV0KHNyYyk7CisJRklMRSAqZnAgPSBvcGVuX2lucHV0KHNyYywgKGNoYXIgKikgMCk7CiAKIAlmb3IgKHBhc3MgPSAxOyBwYXNzIDw9IDI7IHBhc3MrKykgewogCSAgICBubiA9IDA7CkBAIC0zOTYsNyArNTAwLDggQEAKIAkJfQogCSAgICB9CiAJICAgIGlmIChwYXNzID09IDEpIHsKLQkJZHN0ID0gdHlwZUNhbGxvYyhjaGFyICosIG5uICsgMSk7CisJCWlmICgoZHN0ID0gdHlwZUNhbGxvYyhjaGFyICosIG5uICsgMSkpID09IDApCisJCSAgICAgIGZhaWxlZCgibWFrZV9uYW1lbGlzdCIpOwogCQlyZXdpbmQoZnApOwogCSAgICB9CiAJfQpAQCAtNDE4LDggKzUyMywxMCBAQAogCQlpZiAobWFyayA9PSAnXDAnKQogCQkgICAgYnJlYWs7CiAJICAgIH0KLQkgICAgaWYgKHBhc3MgPT0gMSkKLQkJZHN0ID0gdHlwZUNhbGxvYyhjaGFyICosIG5uICsgMSk7CisJICAgIGlmIChwYXNzID09IDEpIHsKKwkJaWYgKChkc3QgPSB0eXBlQ2FsbG9jKGNoYXIgKiwgbm4gKyAxKSkgPT0gMCkKKwkJICAgICAgZmFpbGVkKCJtYWtlX25hbWVsaXN0Iik7CisJICAgIH0KIAl9CiAgICAgfQogICAgIGlmIChzaG93c3VtbWFyeSAmJiAoZHN0ICE9IDApKSB7CkBAIC00NDksMjYgKzU1NiwxMTggQEAKICAgICByZXR1cm4gKGNvZGUpOwogfQogCi1zdGF0aWMgRklMRSAqCi1vcGVuX3RlbXBmaWxlKGNoYXIgKm5hbWUpCitzdGF0aWMgY2hhciAqCit2YWxpZF9kYl9wYXRoKGNvbnN0IGNoYXIgKm5vbWluYWwpCiB7Ci0gICAgRklMRSAqcmVzdWx0ID0gMDsKLSNpZiBIQVZFX01LU1RFTVAKLSAgICBpbnQgZmQgPSBta3N0ZW1wKG5hbWUpOwotICAgIGlmIChmZCA+PSAwKQotCXJlc3VsdCA9IGZkb3BlbihmZCwgInciKTsKKyAgICBzdHJ1Y3Qgc3RhdCBzYjsKKyNpZiBVU0VfSEFTSEVEX0RCCisgICAgY2hhciBzdWZmaXhbXSA9IERCTV9TVUZGSVg7CisgICAgc2l6ZV90IG5lZWQgPSBzdHJsZW4obm9taW5hbCkgKyBzaXplb2Yoc3VmZml4KTsKKyAgICBjaGFyICpyZXN1bHQgPSBtYWxsb2MobmVlZCk7CisKKyAgICBpZiAocmVzdWx0ID09IDApCisJZmFpbGVkKCJ2YWxpZF9kYl9wYXRoIik7CisgICAgX25jX1NUUkNQWShyZXN1bHQsIG5vbWluYWwsIG5lZWQpOworICAgIGlmIChzdHJjbXAocmVzdWx0ICsgbmVlZCAtIHNpemVvZihzdWZmaXgpLCBzdWZmaXgpKSB7CisJX25jX1NUUkNBVChyZXN1bHQsIHN1ZmZpeCwgbmVlZCk7CisgICAgfQogI2Vsc2UKLSAgICBpZiAodG1wbmFtKG5hbWUpICE9IDApCi0JcmVzdWx0ID0gZm9wZW4obmFtZSwgInciKTsKKyAgICBjaGFyICpyZXN1bHQgPSBzdHJkdXAobm9taW5hbCk7CiAjZW5kaWYKKworICAgIERFQlVHKDEsICgiKiogc3RhdCglcykiLCByZXN1bHQpKTsKKyAgICBpZiAoc3RhdChyZXN1bHQsICZzYikgPj0gMCkgeworI2lmIFVTRV9IQVNIRURfREIKKwlpZiAoIVNfSVNSRUcoc2Iuc3RfbW9kZSkKKwkgICAgfHwgYWNjZXNzKHJlc3VsdCwgUl9PSyB8IFdfT0spICE9IDApIHsKKwkgICAgREVCVUcoMSwgKCIuLi5ub3QgYSB3cml0YWJsZSBmaWxlIikpOworCSAgICBmcmVlKHJlc3VsdCk7CisJICAgIHJlc3VsdCA9IDA7CisJfQorI2Vsc2UKKwlpZiAoIVNfSVNESVIoc2Iuc3RfbW9kZSkKKwkgICAgfHwgYWNjZXNzKHJlc3VsdCwgUl9PSyB8IFdfT0sgfCBYX09LKSAhPSAwKSB7CisJICAgIERFQlVHKDEsICgiLi4ubm90IGEgd3JpdGFibGUgZGlyZWN0b3J5IikpOworCSAgICBmcmVlKHJlc3VsdCk7CisJICAgIHJlc3VsdCA9IDA7CisJfQorI2VuZGlmCisgICAgfSBlbHNlIHsKKwkvKiBjaGVjayBpZiBwYXJlbnQgaXMgZGlyZWN0b3J5IGFuZCBpcyB3cml0YWJsZSAqLworCXVuc2lnbmVkIGxlYWYgPSBfbmNfcGF0aGxhc3QocmVzdWx0KTsKKworCURFQlVHKDEsICgiLi4ubm90IGZvdW5kIikpOworCWlmIChsZWFmKSB7CisJICAgIGNoYXIgc2F2ZSA9IHJlc3VsdFtsZWFmXTsKKwkgICAgcmVzdWx0W2xlYWZdID0gMDsKKwkgICAgaWYgKHN0YXQocmVzdWx0LCAmc2IpID49IDAKKwkJJiYgU19JU0RJUihzYi5zdF9tb2RlKQorCQkmJiBhY2Nlc3MocmVzdWx0LCBSX09LIHwgV19PSyB8IFhfT0spID09IDApIHsKKwkJcmVzdWx0W2xlYWZdID0gc2F2ZTsKKwkgICAgfSBlbHNlIHsKKwkJREVCVUcoMSwgKCIuLi5wYXJlbnQgZGlyZWN0b3J5ICVzIGlzIG5vdCB3cml0YWJsZSIsIHJlc3VsdCkpOworCQlmcmVlKHJlc3VsdCk7CisJCXJlc3VsdCA9IDA7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBERUJVRygxLCAoIi4uLiBubyBwYXJlbnQgZGlyZWN0b3J5IikpOworCSAgICBmcmVlKHJlc3VsdCk7CisJICAgIHJlc3VsdCA9IDA7CisJfQorICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogU2hvdyB0aGUgZGF0YWJhc2VzIHRvIHdoaWNoIHRpYyBjb3VsZCB3cml0ZS4gIFRoZSBsb2NhdGlvbiB0byB3aGljaCBpdAorICogd3JpdGVzIGlzIGFsd2F5cyB0aGUgZmlyc3Qgb25lLiAgSWYgbm9uZSBhcmUgd3JpdGFibGUsIHByaW50IGFuIGVycm9yCisgKiBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorc2hvd19kYXRhYmFzZXMoY29uc3QgY2hhciAqb3V0ZGlyKQoreworICAgIGJvb2wgc3BlY2lmaWMgPSAob3V0ZGlyICE9IDApIHx8IGdldGVudigiVEVSTUlORk8iKSAhPSAwOworICAgIGNoYXIgKnJlc3VsdDsKKyAgICBjb25zdCBjaGFyICp0cmllZCA9IDA7CisKKyAgICBpZiAob3V0ZGlyID09IDApIHsKKwlvdXRkaXIgPSBfbmNfdGljX2RpcigwKTsKKyAgICB9CisgICAgaWYgKChyZXN1bHQgPSB2YWxpZF9kYl9wYXRoKG91dGRpcikpICE9IDApIHsKKwlwcmludGYoIiVzXG4iLCByZXN1bHQpOworCWZyZWUocmVzdWx0KTsKKyAgICB9IGVsc2UgeworCXRyaWVkID0gb3V0ZGlyOworICAgIH0KKworICAgIGlmICgob3V0ZGlyID0gX25jX2hvbWVfdGVybWluZm8oKSkpIHsKKwlpZiAoKHJlc3VsdCA9IHZhbGlkX2RiX3BhdGgob3V0ZGlyKSkgIT0gMCkgeworCSAgICBwcmludGYoIiVzXG4iLCByZXN1bHQpOworCSAgICBmcmVlKHJlc3VsdCk7CisJfSBlbHNlIGlmICghc3BlY2lmaWMpIHsKKwkgICAgdHJpZWQgPSBvdXRkaXI7CisJfQorICAgIH0KKworICAgIC8qCisgICAgICogSWYgd2UgY2FuIHdyaXRlIGluIG5laXRoZXIgbG9jYXRpb24sIGdpdmUgYW4gZXJyb3IgbWVzc2FnZS4KKyAgICAgKi8KKyAgICBpZiAodHJpZWQpIHsKKwlmZmx1c2goc3Rkb3V0KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAlcyAobm8gcGVybWlzc2lvbilcbiIsIF9uY19wcm9nbmFtZSwgdHJpZWQpOworCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisgICAgfQorfQorCisjZGVmaW5lIFZ0b1RyYWNlKG9wdCkgKHVuc2lnbmVkKSAoKG9wdCA+IDApID8gb3B0IDogKG9wdCA9PSAwKSkKKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgY2hhciBteV90bXBuYW1lW1BBVEhfTUFYXTsKLSAgICBpbnQgdl9vcHQgPSAtMSwgZGVidWdfbGV2ZWw7CisgICAgY2hhciBteV9hbHRmaWxlW1BBVEhfTUFYXTsKKyAgICBpbnQgdl9vcHQgPSAtMTsKKyAgICB1bnNpZ25lZCBkZWJ1Z19sZXZlbDsKICAgICBpbnQgc21hcnRfZGVmYXVsdHMgPSBUUlVFOwogICAgIGNoYXIgKnRlcm1jYXA7CiAgICAgRU5UUlkgKnFwOwpAQCAtNDc5LDYgKzY3OCw3IEBACiAgICAgaW50IHNvcnRtb2RlID0gU19URVJNSU5GTzsJLyogc29ydF9tb2RlICovCiAKICAgICBpbnQgd2lkdGggPSA2MDsKKyAgICBpbnQgaGVpZ2h0ID0gNjU1MzU7CiAgICAgYm9vbCBmb3JtYXR0ZWQgPSBGQUxTRTsJLyogcmVmb3JtYXQgY29tcGxleCBzdHJpbmdzPyAqLwogICAgIGJvb2wgbGl0ZXJhbCA9IEZBTFNFOwkvKiBzdXBwcmVzcyBwb3N0LXByb2Nlc3Npbmc/ICovCiAgICAgaW50IG51bWJlcnMgPSAwOwkJLyogZm9ybWF0ICIlJ2NoYXInIiB0by9mcm9tICIle251bWJlcn0iICovCkBAIC00ODYsNyArNjg2LDYgQEAKICAgICBib29sIGxpbWl0ZWQgPSBUUlVFOwogICAgIGNoYXIgKnR2ZXJzaW9uID0gKGNoYXIgKikgTlVMTDsKICAgICBjb25zdCBjaGFyICpzb3VyY2VfZmlsZSA9ICJ0ZXJtaW5mbyI7Ci0gICAgY2hhciAqKm5hbWVsc3QgPSAwOwogICAgIGNoYXIgKm91dGRpciA9IChjaGFyICopIE5VTEw7CiAgICAgYm9vbCBjaGVja19vbmx5ID0gRkFMU0U7CiAgICAgYm9vbCBzdXBwcmVzc191bnRyYW5zbGF0YWJsZSA9IEZBTFNFOwpAQCAtNDk0LDE4ICs2OTMsMjAgQEAKICAgICBsb2dfZnAgPSBzdGRlcnI7CiAKICAgICBfbmNfcHJvZ25hbWUgPSBfbmNfcm9vdG5hbWUoYXJndlswXSk7CisgICAgYXRleGl0KGNsZWFudXApOwogCi0gICAgaWYgKChpbmZvZHVtcCA9IChzdHJjbXAoX25jX3Byb2duYW1lLCBQUk9HX0NBUFRPSU5GTykgPT0gMCkpICE9IEZBTFNFKSB7CisgICAgaWYgKChpbmZvZHVtcCA9IHNhbWVfcHJvZ3JhbShfbmNfcHJvZ25hbWUsIFBST0dfQ0FQVE9JTkZPKSkgIT0gRkFMU0UpIHsKIAlvdXRmb3JtID0gRl9URVJNSU5GTzsKIAlzb3J0bW9kZSA9IFNfVEVSTUlORk87CiAgICAgfQotICAgIGlmICgoY2FwZHVtcCA9IChzdHJjbXAoX25jX3Byb2duYW1lLCBQUk9HX0lORk9UT0NBUCkgPT0gMCkpICE9IEZBTFNFKSB7CisgICAgaWYgKChjYXBkdW1wID0gc2FtZV9wcm9ncmFtKF9uY19wcm9nbmFtZSwgUFJPR19JTkZPVE9DQVApKSAhPSBGQUxTRSkgewogCW91dGZvcm0gPSBGX1RFUk1DQVA7CiAJc29ydG1vZGUgPSBTX1RFUk1DQVA7CiAgICAgfQogI2lmIE5DVVJTRVNfWE5BTUVTCiAgICAgdXNlX2V4dGVuZGVkX25hbWVzKEZBTFNFKTsKICNlbmRpZgorICAgIF9uY19zdHJpY3RfYnNkID0gMDsKIAogICAgIC8qCiAgICAgICogUHJvY2Vzc2luZyBhcmd1bWVudHMgaXMgYSBsaXR0bGUgY29tcGxpY2F0ZWQsIHNpbmNlIHNvbWVvbmUgbWFkZSBhCkBAIC01MTMsNyArNzE0LDcgQEAKICAgICAgKiBiZSBvcHRpb25hbC4KICAgICAgKi8KICAgICB3aGlsZSAoKHRoaXNfb3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsCi0JCQkgICAgICAiMDEyMzQ1Njc4OUNJTE5SOlRVVmFjZTpmR2dvOnJzdHZ3eCIpKSAhPSAtMSkgeworCQkJICAgICAgIjAxMjM0NTY3ODlDRElLTE5SOlRVVmFjZTpmR2dvOnJzdHZ3eCIpKSAhPSAtMSkgewogCWlmIChpc2RpZ2l0KHRoaXNfb3B0KSkgewogCSAgICBzd2l0Y2ggKGxhc3Rfb3B0KSB7CiAJICAgIGNhc2UgJ3YnOgpAQCAtNTIzLDE5ICs3MjQsNDAgQEAKIAkJd2lkdGggPSAod2lkdGggKiAxMCkgKyAodGhpc19vcHQgLSAnMCcpOwogCQlicmVhazsKIAkgICAgZGVmYXVsdDoKLQkJaWYgKHRoaXNfb3B0ICE9ICcxJykKKwkJc3dpdGNoICh0aGlzX29wdCkgeworCQljYXNlICcwJzoKKwkJICAgIGxhc3Rfb3B0ID0gdGhpc19vcHQ7CisJCSAgICB3aWR0aCA9IDY1NTM1OworCQkgICAgaGVpZ2h0ID0gMTsKKwkJICAgIGJyZWFrOworCQljYXNlICcxJzoKKwkJICAgIGxhc3Rfb3B0ID0gdGhpc19vcHQ7CisJCSAgICB3aWR0aCA9IDA7CisJCSAgICBicmVhazsKKwkJZGVmYXVsdDoKIAkJICAgIHVzYWdlKCk7Ci0JCWxhc3Rfb3B0ID0gdGhpc19vcHQ7Ci0JCXdpZHRoID0gMDsKKwkJfQogCSAgICB9CiAJICAgIGNvbnRpbnVlOwogCX0KIAlzd2l0Y2ggKHRoaXNfb3B0KSB7CisJY2FzZSAnSyc6CisJICAgIF9uY19zdHJpY3RfYnNkID0gMTsKKwkgICAgLyogdGhlIGluaXRpYWwgdmVyc2lvbiBvZiAtSyBpbiAyMDExMDczMCBmZWxsLXRocnUgaGVyZSwgYnV0IHRoZQorCSAgICAgKiBzYW1lIGZsYWcgaXMgdXNlZnVsIHdoZW4gcmVhZGluZyBzb3VyY2VzIC1URAorCSAgICAgKi8KKwkgICAgYnJlYWs7CiAJY2FzZSAnQyc6CiAJICAgIGNhcGR1bXAgPSBUUlVFOwogCSAgICBvdXRmb3JtID0gRl9URVJNQ0FQOwogCSAgICBzb3J0bW9kZSA9IFNfVEVSTUNBUDsKIAkgICAgYnJlYWs7CisJY2FzZSAnRCc6CisJICAgIGRlYnVnX2xldmVsID0gVnRvVHJhY2Uodl9vcHQpOworCSAgICBzZXRfdHJhY2VfbGV2ZWwoZGVidWdfbGV2ZWwpOworCSAgICBzaG93X2RhdGFiYXNlcyhvdXRkaXIpOworCSAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworCSAgICBicmVhazsKIAljYXNlICdJJzoKIAkgICAgaW5mb2R1bXAgPSBUUlVFOwogCSAgICBvdXRmb3JtID0gRl9URVJNSU5GTzsKQEAgLTU2MSw3ICs3ODMsNiBAQAogCSAgICBicmVhazsKIAljYXNlICdWJzoKIAkgICAgcHV0cyhjdXJzZXNfdmVyc2lvbigpKTsKLQkgICAgY2xlYW51cChuYW1lbHN0KTsKIAkgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKIAljYXNlICdjJzoKIAkgICAgY2hlY2tfb25seSA9IFRSVUU7CkBAIC02MTEsNyArODMyLDcgQEAKIAlsYXN0X29wdCA9IHRoaXNfb3B0OwogICAgIH0KIAotICAgIGRlYnVnX2xldmVsID0gKHZfb3B0ID4gMCkgPyB2X29wdCA6ICh2X29wdCA9PSAwKTsKKyAgICBkZWJ1Z19sZXZlbCA9IFZ0b1RyYWNlKHZfb3B0KTsKICAgICBzZXRfdHJhY2VfbGV2ZWwoZGVidWdfbGV2ZWwpOwogCiAgICAgaWYgKF9uY190cmFjaW5nKSB7CkBAIC02MzEsOCArODUyLDggQEAKICAgICAgKi8KICAgICBpZiAobmFtZWxzdCAmJiAoIWluZm9kdW1wICYmICFjYXBkdW1wKSkgewogCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKLQkJICAgICAgICJTb3JyeSwgLWUgY2FuJ3QgYmUgdXNlZCB3aXRob3V0IC1JIG9yIC1DXG4iKTsKLQljbGVhbnVwKG5hbWVsc3QpOworCQkgICAgICAgIiVzOiBTb3JyeSwgLWUgY2FuJ3QgYmUgdXNlZCB3aXRob3V0IC1JIG9yIC1DXG4iLAorCQkgICAgICAgX25jX3Byb2duYW1lKTsKIAlFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOwogICAgIH0KICNlbmRpZiAvKiBIQVZFX0JJR19DT1JFICovCkBAIC02NTYsMTYgKzg3NywxNiBAQAogCQlpZiAoYWNjZXNzKHRlcm1jYXAsIEZfT0spID09IDApIHsKIAkJICAgIC8qIGZpbGUgZXhpc3RzICovCiAJCSAgICBzb3VyY2VfZmlsZSA9IHRlcm1jYXA7Ci0JCX0gZWxzZSBpZiAoKHRtcF9mcCA9IG9wZW5fdGVtcGZpbGUoc3RyY3B5KG15X3RtcG5hbWUsCi0JCQkJCQkJICAiL3RtcC9YWFhYWFgiKSkpCi0JCQkgICAhPSAwKSB7Ci0JCSAgICBzb3VyY2VfZmlsZSA9IG15X3RtcG5hbWU7Ci0JCSAgICBmcHJpbnRmKHRtcF9mcCwgIiVzXG4iLCB0ZXJtY2FwKTsKLQkJICAgIGZjbG9zZSh0bXBfZnApOwotCQkgICAgdG1wX2ZwID0gb3Blbl9pbnB1dChzb3VyY2VfZmlsZSk7Ci0JCSAgICB0b19yZW1vdmUgPSBzb3VyY2VfZmlsZTsKIAkJfSBlbHNlIHsKLQkJICAgIGZhaWxlZCgidG1wbmFtIik7CisJCSAgICBpZiAoKHRtcF9mcCA9IG9wZW5fdGVtcGZpbGUobXlfdG1wbmFtZSkpICE9IDApIHsKKwkJCXNvdXJjZV9maWxlID0gbXlfdG1wbmFtZTsKKwkJCWZwcmludGYodG1wX2ZwLCAiJXNcbiIsIHRlcm1jYXApOworCQkJZmNsb3NlKHRtcF9mcCk7CisJCQl0bXBfZnAgPSBvcGVuX2lucHV0KHNvdXJjZV9maWxlLCAoY2hhciAqKSAwKTsKKwkJCXRvX3JlbW92ZSA9IHNvdXJjZV9maWxlOworCQkgICAgfSBlbHNlIHsKKwkJCWZhaWxlZCgidG1wbmFtIik7CisJCSAgICB9CiAJCX0KIAkgICAgfQogCX0gZWxzZSB7CkBAIC02NzUsMjQgKzg5NiwyOSBAQAogCQkgICAgX25jX3Byb2duYW1lLAogCQkgICAgX25jX3Byb2duYW1lLAogCQkgICAgdXNhZ2Vfc3RyaW5nKTsKLQkgICAgY2xlYW51cChuYW1lbHN0KTsKIAkgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKIAl9CiAgICAgfQogCi0gICAgaWYgKHRtcF9mcCA9PSAwKQotCXRtcF9mcCA9IG9wZW5faW5wdXQoc291cmNlX2ZpbGUpOworICAgIGlmICh0bXBfZnAgPT0gMCkgeworCXRtcF9mcCA9IG9wZW5faW5wdXQoc291cmNlX2ZpbGUsIG15X2FsdGZpbGUpOworCWlmICghc3RyY21wKHNvdXJjZV9maWxlLCAiLSIpKSB7CisJICAgIHNvdXJjZV9maWxlID0gU1RESU5fTkFNRTsKKwl9CisgICAgfQogCi0gICAgaWYgKGluZm9kdW1wKQorICAgIGlmIChpbmZvZHVtcCB8fCBjaGVja19vbmx5KSB7CiAJZHVtcF9pbml0KHR2ZXJzaW9uLAogCQkgIHNtYXJ0X2RlZmF1bHRzCiAJCSAgPyBvdXRmb3JtCiAJCSAgOiBGX0xJVEVSQUwsCi0JCSAgc29ydG1vZGUsIHdpZHRoLCBkZWJ1Z19sZXZlbCwgZm9ybWF0dGVkKTsKLSAgICBlbHNlIGlmIChjYXBkdW1wKQorCQkgIHNvcnRtb2RlLCB3aWR0aCwgaGVpZ2h0LCBkZWJ1Z19sZXZlbCwgZm9ybWF0dGVkIHx8CisJCSAgY2hlY2tfb25seSwgY2hlY2tfb25seSk7CisgICAgfSBlbHNlIGlmIChjYXBkdW1wKSB7CiAJZHVtcF9pbml0KHR2ZXJzaW9uLAogCQkgIG91dGZvcm0sCi0JCSAgc29ydG1vZGUsIHdpZHRoLCBkZWJ1Z19sZXZlbCwgRkFMU0UpOworCQkgIHNvcnRtb2RlLCB3aWR0aCwgaGVpZ2h0LCBkZWJ1Z19sZXZlbCwgRkFMU0UsIEZBTFNFKTsKKyAgICB9CiAKICAgICAvKiBwYXJzZSBlbnRyaWVzIG91dCBvZiB0aGUgc291cmNlIGZpbGUgKi8KICAgICBfbmNfc2V0X3NvdXJjZShzb3VyY2VfZmlsZSk7CkBAIC03MDksMTMgKzkzNSwxMiBAQAogICAgIC8qIGRvIHVzZSByZXNvbHV0aW9uICovCiAgICAgaWYgKGNoZWNrX29ubHkgfHwgKCFpbmZvZHVtcCAmJiAhY2FwZHVtcCkgfHwgZm9yY2VyZXNvbHZlKSB7CiAJaWYgKCFfbmNfcmVzb2x2ZV91c2VzMihUUlVFLCBsaXRlcmFsKSAmJiAhY2hlY2tfb25seSkgewotCSAgICBjbGVhbnVwKG5hbWVsc3QpOwogCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOwogCX0KICAgICB9CiAKICAgICAvKiBsZW5ndGggY2hlY2sgKi8KLSAgICBpZiAoY2hlY2tfb25seSAmJiAoY2FwZHVtcCB8fCBpbmZvZHVtcCkpIHsKKyAgICBpZiAoY2hlY2tfb25seSAmJiBsaW1pdGVkICYmIChjYXBkdW1wIHx8IGluZm9kdW1wKSkgewogCWZvcl9lbnRyeV9saXN0KHFwKSB7CiAJICAgIGlmIChtYXRjaGVzKG5hbWVsc3QsIHFwLT50dGVybS50ZXJtX25hbWVzKSkgewogCQlpbnQgbGVuID0gZm10X2VudHJ5KCZxcC0+dHRlcm0sIE5VTEwsIEZBTFNFLCBUUlVFLCBpbmZvZHVtcCwgbnVtYmVycyk7CkBAIC03MzAsNyArOTU1LDIxIEBACiAgICAgfQogCiAgICAgLyogd3JpdGUgb3IgZHVtcCBhbGwgZW50cmllcyAqLwotICAgIGlmICghY2hlY2tfb25seSkgeworICAgIGlmIChjaGVja19vbmx5KSB7CisJLyogdGhpcyBpcyBpbiBjYXNlIGluZm90b2NhcCgpIGdlbmVyYXRlcyB3YXJuaW5ncyAqLworCV9uY19jdXJyX2NvbCA9IF9uY19jdXJyX2xpbmUgPSAtMTsKKworCWZvcl9lbnRyeV9saXN0KHFwKSB7CisJICAgIGlmIChtYXRjaGVzKG5hbWVsc3QsIHFwLT50dGVybS50ZXJtX25hbWVzKSkgeworCQkvKiB0aGlzIGlzIGluIGNhc2UgaW5mb3RvY2FwKCkgZ2VuZXJhdGVzIHdhcm5pbmdzICovCisJCV9uY19zZXRfdHlwZShfbmNfZmlyc3RfbmFtZShxcC0+dHRlcm0udGVybV9uYW1lcykpOworCQlfbmNfY3Vycl9saW5lID0gKGludCkgcXAtPnN0YXJ0bGluZTsKKwkJcmVwYWlyX2Fjc2MoJnFwLT50dGVybSk7CisJCWR1bXBfZW50cnkoJnFwLT50dGVybSwgc3VwcHJlc3NfdW50cmFuc2xhdGFibGUsCisJCQkgICBsaW1pdGVkLCBudW1iZXJzLCBOVUxMKTsKKwkgICAgfQorCX0KKyAgICB9IGVsc2UgewogCWlmICghaW5mb2R1bXAgJiYgIWNhcGR1bXApIHsKIAkgICAgX25jX3NldF93cml0ZWRpcihvdXRkaXIpOwogCSAgICBmb3JfZW50cnlfbGlzdChxcCkgewpAQCAtNzQzLDcgKzk4Miw3IEBACiAKIAkgICAgZm9yX2VudHJ5X2xpc3QocXApIHsKIAkJaWYgKG1hdGNoZXMobmFtZWxzdCwgcXAtPnR0ZXJtLnRlcm1fbmFtZXMpKSB7Ci0JCSAgICBpbnQgaiA9IHFwLT5jZW5kIC0gcXAtPmNzdGFydDsKKwkJICAgIGxvbmcgaiA9IHFwLT5jZW5kIC0gcXAtPmNzdGFydDsKIAkJICAgIGludCBsZW4gPSAwOwogCiAJCSAgICAvKiB0aGlzIGlzIGluIGNhc2UgaW5mb3RvY2FwKCkgZ2VuZXJhdGVzIHdhcm5pbmdzICovCkBAIC03NTcsOSArOTk2LDEwIEBACiAJCQkgICAgcHV0X3RyYW5zbGF0ZShmZ2V0Yyh0bXBfZnApKTsKIAkJICAgIH0KIAorCQkgICAgcmVwYWlyX2Fjc2MoJnFwLT50dGVybSk7CiAJCSAgICBkdW1wX2VudHJ5KCZxcC0+dHRlcm0sIHN1cHByZXNzX3VudHJhbnNsYXRhYmxlLAogCQkJICAgICAgIGxpbWl0ZWQsIG51bWJlcnMsIE5VTEwpOwotCQkgICAgZm9yIChqID0gMDsgaiA8IChpbnQpIHFwLT5udXNlczsgaisrKQorCQkgICAgZm9yIChqID0gMDsgaiA8IChsb25nKSBxcC0+bnVzZXM7IGorKykKIAkJCWR1bXBfdXNlcyhxcC0+dXNlc1tqXS5uYW1lLCAhY2FwZHVtcCk7CiAJCSAgICBsZW4gPSBzaG93X2VudHJ5KCk7CiAJCSAgICBpZiAoZGVidWdfbGV2ZWwgIT0gMCAmJiAhbGltaXRlZCkKQEAgLTgwMyw3ICsxMDQzLDYgQEAKIAllbHNlCiAJICAgIGZwcmludGYobG9nX2ZwLCAiTm8gZW50cmllcyB3cml0dGVuXG4iKTsKICAgICB9Ci0gICAgY2xlYW51cChuYW1lbHN0KTsKICAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOwogfQogCkBAIC04OTAsNiArMTEyOSwxNyBAQAogCWlmICghVkFMSURfU1RSSU5HKG9yaWdfcGFpcikgJiYgIVZBTElEX1NUUklORyhvcmlnX2NvbG9ycykpCiAJICAgIF9uY193YXJuaW5nKCJleHBlY3RlZCBlaXRoZXIgb3Avb2Mgc3RyaW5nIGZvciByZXNldHRpbmcgY29sb3JzIik7CiAgICAgfQorICAgIGlmIChjYW5fY2hhbmdlKSB7CisJaWYgKCFWQUxJRF9TVFJJTkcoaW5pdGlhbGl6ZV9wYWlyKSAmJgorCSAgICAhVkFMSURfU1RSSU5HKGluaXRpYWxpemVfY29sb3IpKSB7CisJICAgIF9uY193YXJuaW5nKCJleHBlY3RlZCBpbml0YyBvciBpbml0cCBiZWNhdXNlIGNjYyBpcyBnaXZlbiIpOworCX0KKyAgICB9IGVsc2UgeworCWlmIChWQUxJRF9TVFJJTkcoaW5pdGlhbGl6ZV9wYWlyKSB8fAorCSAgICBWQUxJRF9TVFJJTkcoaW5pdGlhbGl6ZV9jb2xvcikpIHsKKwkgICAgX25jX3dhcm5pbmcoImV4cGVjdGVkIGNjYyBiZWNhdXNlIGluaXRjIGlzIGdpdmVuIik7CisJfQorICAgIH0KIH0KIAogc3RhdGljIGNoYXIKQEAgLTkwNywyMiArMTE1NywyMjcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgbG9uZwoga2V5cGFkX2luZGV4KGNvbnN0IGNoYXIgKnN0cmluZykKIHsKICAgICBjaGFyICp0ZXN0OwogICAgIGNvbnN0IGNoYXIgKmxpc3QgPSAiUFFSU3d4eW10dXZscXJzUHBuIjsJLyogYXBwLWtleXBhZCBleGNlcHQgIkVudGVyIiAqLwogICAgIGludCBjaDsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgbG9uZyByZXN1bHQgPSAtMTsKIAogICAgIGlmICgoY2ggPSBrZXlwYWRfZmluYWwoc3RyaW5nKSkgIT0gJ1wwJykgewotCXRlc3QgPSBzdHJjaHIobGlzdCwgY2gpOworCXRlc3QgPSAoc3RyY2hyKSAobGlzdCwgY2gpOwogCWlmICh0ZXN0ICE9IDApCi0JICAgIHJlc3VsdCA9ICh0ZXN0IC0gbGlzdCk7CisJICAgIHJlc3VsdCA9IChsb25nKSAodGVzdCAtIGxpc3QpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogbGlzdFtdIGlzIGRvd24sIHVwLCBsZWZ0LCByaWdodAorICogImxlZnQiIG1heSBiZSBeSCByYXRoZXIgdGhhbiBcRVtECisgKiAiZG93biIgbWF5IGJlIF5KIHJhdGhlciB0aGFuIFxFW0IKKyAqIEJ1dCB1cC9yaWdodCBhcmUgZ2VuZXJhbGx5IGNvbnNpc3RlbnRseSBlc2NhcGUgc2VxdWVuY2VzIGZvciBBTlNJIHRlcm1pbmFscy4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2Fuc2lfY3Vyc29yKGNoYXIgKmxpc3RbNF0pCit7CisgICAgaW50IGosIGs7CisgICAgaW50IHdhbnQ7CisgICAgc2l6ZV90IHByZWZpeCA9IDA7CisgICAgc2l6ZV90IHN1ZmZpeDsKKyAgICBib29sIHNraXBbNF07CisgICAgYm9vbCByZXBlYXRlZCA9IEZBTFNFOworCisgICAgZm9yIChqID0gMDsgaiA8IDQ7ICsraikgeworCXNraXBbal0gPSBGQUxTRTsKKwlmb3IgKGsgPSAwOyBrIDwgajsgKytrKSB7CisJICAgIGlmIChqICE9IGsKKwkJJiYgIXN0cmNtcChsaXN0W2pdLCBsaXN0W2tdKSkgeworCQljaGFyICp2YWx1ZSA9IF9uY190aWNfZXhwYW5kKGxpc3Rba10sIFRSVUUsIDApOworCQlfbmNfd2FybmluZygicmVwZWF0ZWQgY3Vyc29yIGNvbnRyb2wgJXNcbiIsIHZhbHVlKTsKKwkJcmVwZWF0ZWQgPSBUUlVFOworCSAgICB9CisJfQorICAgIH0KKyAgICBpZiAoIXJlcGVhdGVkKSB7CisJY2hhciAqdXAgPSBsaXN0WzFdOworCisJaWYgKFVDaGFyKHVwWzBdKSA9PSAnXDAzMycpIHsKKwkgICAgaWYgKHVwWzFdID09ICdbJykgeworCQlwcmVmaXggPSAyOworCSAgICB9IGVsc2UgeworCQlwcmVmaXggPSAxOworCSAgICB9CisJfSBlbHNlIGlmIChVQ2hhcih1cFswXSkgPT0gVUNoYXIoJ1wyMzMnKSkgeworCSAgICBwcmVmaXggPSAxOworCX0KKwlpZiAocHJlZml4KSB7CisJICAgIHN1ZmZpeCA9IHByZWZpeDsKKwkgICAgd2hpbGUgKHVwW3N1ZmZpeF0gJiYgaXNkaWdpdChVQ2hhcih1cFtzdWZmaXhdKSkpCisJCSsrc3VmZml4OworCX0KKwlpZiAocHJlZml4ICYmIHVwW3N1ZmZpeF0gPT0gJ0EnKSB7CisJICAgIHNraXBbMV0gPSBUUlVFOworCSAgICBpZiAoIXN0cmNtcChsaXN0WzBdLCAiXG4iKSkKKwkJc2tpcFswXSA9IFRSVUU7CisJICAgIGlmICghc3RyY21wKGxpc3RbMl0sICJcYiIpKQorCQlza2lwWzJdID0gVFJVRTsKKworCSAgICBmb3IgKGogPSAwOyBqIDwgNDsgKytqKSB7CisJCWlmIChza2lwW2pdIHx8IHN0cmxlbihsaXN0W2pdKSA9PSAxKQorCQkgICAgY29udGludWU7CisJCWlmIChtZW1jbXAobGlzdFtqXSwgdXAsIHByZWZpeCkpIHsKKwkJICAgIGNoYXIgKnZhbHVlID0gX25jX3RpY19leHBhbmQobGlzdFtqXSwgVFJVRSwgMCk7CisJCSAgICBfbmNfd2FybmluZygiaW5jb25zaXN0ZW50IHByZWZpeCBmb3IgJXNcbiIsIHZhbHVlKTsKKwkJICAgIGNvbnRpbnVlOworCQl9CisJCWlmIChzdHJsZW4obGlzdFtqXSkgPCBzdWZmaXgpIHsKKwkJICAgIGNoYXIgKnZhbHVlID0gX25jX3RpY19leHBhbmQobGlzdFtqXSwgVFJVRSwgMCk7CisJCSAgICBfbmNfd2FybmluZygiaW5jb25zaXN0ZW50IGxlbmd0aCBmb3IgJXMsIGV4cGVjdGVkICVkXG4iLAorCQkJCXZhbHVlLCAoaW50KSBzdWZmaXggKyAxKTsKKwkJICAgIGNvbnRpbnVlOworCQl9CisJCXdhbnQgPSAiQkFEQyJbal07CisJCWlmIChsaXN0W2pdW3N1ZmZpeF0gIT0gd2FudCkgeworCQkgICAgY2hhciAqdmFsdWUgPSBfbmNfdGljX2V4cGFuZChsaXN0W2pdLCBUUlVFLCAwKTsKKwkJICAgIF9uY193YXJuaW5nKCJpbmNvbnNpc3RlbnQgc3VmZml4IGZvciAlcywgZXhwZWN0ZWQgJWMsIGhhdmUgJWNcbiIsCisJCQkJdmFsdWUsIHdhbnQsIGxpc3Rbal1bc3VmZml4XSk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9Cit9CisKKyNkZWZpbmUgRVhQRUNURUQobmFtZSkgaWYgKCFQUkVTRU5UKG5hbWUpKSBfbmNfd2FybmluZygiZXhwZWN0ZWQgIiAjbmFtZSkKKyNkZWZpbmUgVU5FWFBFQ1RFRChuYW1lKSBpZiAoUFJFU0VOVChuYW1lKSkgX25jX3dhcm5pbmcoInVuZXhwZWN0ZWQgIiAjbmFtZSAiLCBmb3IgJXMiLCB3aHkpCisKK3N0YXRpYyB2b2lkCitjaGVja19ub2FkZHJlc3MoVEVSTVRZUEUgKnRwLCBjb25zdCBjaGFyICp3aHkpCit7CisgICAgVU5FWFBFQ1RFRChjb2x1bW5fYWRkcmVzcyk7CisgICAgVU5FWFBFQ1RFRChjdXJzb3JfYWRkcmVzcyk7CisgICAgVU5FWFBFQ1RFRChjdXJzb3JfaG9tZSk7CisgICAgVU5FWFBFQ1RFRChjdXJzb3JfbWVtX2FkZHJlc3MpOworICAgIFVORVhQRUNURUQoY3Vyc29yX3RvX2xsKTsKKyAgICBVTkVYUEVDVEVEKHJvd19hZGRyZXNzKTsKKyAgICBVTkVYUEVDVEVEKHJvd19hZGRyZXNzKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX2N1cnNvcihURVJNVFlQRSAqdHApCit7CisgICAgaW50IGNvdW50OworICAgIGNoYXIgKmxpc3RbNF07CisKKyAgICBpZiAoaGFyZF9jb3B5KSB7CisJY2hlY2tfbm9hZGRyZXNzKHRwLCAiaGFyZF9jb3B5Iik7CisgICAgfSBlbHNlIGlmIChnZW5lcmljX3R5cGUpIHsKKwljaGVja19ub2FkZHJlc3ModHAsICJnZW5lcmljX3R5cGUiKTsKKyAgICB9IGVsc2UgaWYgKHN0cmNocih0cC0+dGVybV9uYW1lcywgJysnKSA9PSAwKSB7CisJaW50IHkgPSAwOworCWludCB4ID0gMDsKKwlpZiAoUFJFU0VOVChjb2x1bW5fYWRkcmVzcykpCisJICAgICsreTsKKwlpZiAoUFJFU0VOVChjdXJzb3JfYWRkcmVzcykpCisJICAgIHkgPSB4ID0gMTA7CisJaWYgKFBSRVNFTlQoY3Vyc29yX2hvbWUpKQorCSAgICArK3ksICsreDsKKwlpZiAoUFJFU0VOVChjdXJzb3JfbWVtX2FkZHJlc3MpKQorCSAgICB5ID0geCA9IDEwOworCWlmIChQUkVTRU5UKGN1cnNvcl90b19sbCkpCisJICAgICsreSwgKyt4OworCWlmIChQUkVTRU5UKHJvd19hZGRyZXNzKSkKKwkgICAgKyt4OworCWlmIChQUkVTRU5UKGN1cnNvcl9kb3duKSkKKwkgICAgKyt5OworCWlmIChQUkVTRU5UKGN1cnNvcl91cCkpCisJICAgICsreTsKKwlpZiAoUFJFU0VOVChjdXJzb3JfbGVmdCkpCisJICAgICsreDsKKwlpZiAoUFJFU0VOVChjdXJzb3JfcmlnaHQpKQorCSAgICArK3g7CisJaWYgKHggPCAyICYmIHkgPCAyKSB7CisJICAgIF9uY193YXJuaW5nKCJ0ZXJtaW5hbCBsYWNrcyBjdXJzb3IgYWRkcmVzc2luZyIpOworCX0gZWxzZSB7CisJICAgIGlmICh4IDwgMikKKwkJX25jX3dhcm5pbmcoInRlcm1pbmFsIGxhY2tzIGN1cnNvciBjb2x1bW4tYWRkcmVzc2luZyIpOworCSAgICBpZiAoeSA8IDIpCisJCV9uY193YXJuaW5nKCJ0ZXJtaW5hbCBsYWNrcyBjdXJzb3Igcm93LWFkZHJlc3NpbmciKTsKKwl9CisgICAgfQorCisgICAgLyogaXQgaXMgcmFyZSB0byBoYXZlIGFuIGluc2VydC1saW5lIGZlYXR1cmUgd2l0aG91dCBhIG1hdGNoaW5nIGRlbGV0ZSAqLworICAgIEFORE1JU1NJTkcocGFybV9pbnNlcnRfbGluZSwgaW5zZXJ0X2xpbmUpOworICAgIEFORE1JU1NJTkcocGFybV9kZWxldGVfbGluZSwgZGVsZXRlX2xpbmUpOworICAgIEFORE1JU1NJTkcocGFybV9pbnNlcnRfbGluZSwgcGFybV9kZWxldGVfbGluZSk7CisKKyAgICAvKiBpZiB3ZSBoYXZlIGEgcGFyYW1ldGVyaXplZCBmb3JtLCB0aGVuIHRoZSBub24tcGFyYW1ldGVyaXplZCBpcyBlYXN5ICovCisgICAgQU5ETUlTU0lORyhwYXJtX2Rvd25fY3Vyc29yLCBjdXJzb3JfZG93bik7CisgICAgQU5ETUlTU0lORyhwYXJtX3VwX2N1cnNvciwgY3Vyc29yX3VwKTsKKyAgICBBTkRNSVNTSU5HKHBhcm1fbGVmdF9jdXJzb3IsIGN1cnNvcl9sZWZ0KTsKKyAgICBBTkRNSVNTSU5HKHBhcm1fcmlnaHRfY3Vyc29yLCBjdXJzb3JfcmlnaHQpOworCisgICAgLyogR2l2ZW4gYW55IG9mIGEgc2V0IG9mIGN1cnNvciBtb3ZlbWVudCwgdGhlIHdob2xlIHNldCBzaG91bGQgYmUgcHJlc2VudC4KKyAgICAgKiBUZWNobmljYWxseSB0aGlzIGlzIG5vdCB0cnVlICh3ZSBjb3VsZCB1c2UgY3Vyc29yX2FkZHJlc3MgdG8gZmlsbCBpbgorICAgICAqIHVuc3VwcG9ydGVkIGNvbnRyb2xzKSwgYnV0IGl0IGlzIGxpa2VseS4KKyAgICAgKi8KKyAgICBjb3VudCA9IDA7CisgICAgaWYgKFBSRVNFTlQocGFybV9kb3duX2N1cnNvcikpIHsKKwlsaXN0W2NvdW50KytdID0gcGFybV9kb3duX2N1cnNvcjsKKyAgICB9CisgICAgaWYgKFBSRVNFTlQocGFybV91cF9jdXJzb3IpKSB7CisJbGlzdFtjb3VudCsrXSA9IHBhcm1fdXBfY3Vyc29yOworICAgIH0KKyAgICBpZiAoUFJFU0VOVChwYXJtX2xlZnRfY3Vyc29yKSkgeworCWxpc3RbY291bnQrK10gPSBwYXJtX2xlZnRfY3Vyc29yOworICAgIH0KKyAgICBpZiAoUFJFU0VOVChwYXJtX3JpZ2h0X2N1cnNvcikpIHsKKwlsaXN0W2NvdW50KytdID0gcGFybV9yaWdodF9jdXJzb3I7CisgICAgfQorICAgIGlmIChjb3VudCA9PSA0KSB7CisJY2hlY2tfYW5zaV9jdXJzb3IobGlzdCk7CisgICAgfSBlbHNlIGlmIChjb3VudCAhPSAwKSB7CisJRVhQRUNURUQocGFybV9kb3duX2N1cnNvcik7CisJRVhQRUNURUQocGFybV91cF9jdXJzb3IpOworCUVYUEVDVEVEKHBhcm1fbGVmdF9jdXJzb3IpOworCUVYUEVDVEVEKHBhcm1fcmlnaHRfY3Vyc29yKTsKKyAgICB9CisKKyAgICBjb3VudCA9IDA7CisgICAgaWYgKFBSRVNFTlQoY3Vyc29yX2Rvd24pKSB7CisJbGlzdFtjb3VudCsrXSA9IGN1cnNvcl9kb3duOworICAgIH0KKyAgICBpZiAoUFJFU0VOVChjdXJzb3JfdXApKSB7CisJbGlzdFtjb3VudCsrXSA9IGN1cnNvcl91cDsKKyAgICB9CisgICAgaWYgKFBSRVNFTlQoY3Vyc29yX2xlZnQpKSB7CisJbGlzdFtjb3VudCsrXSA9IGN1cnNvcl9sZWZ0OworICAgIH0KKyAgICBpZiAoUFJFU0VOVChjdXJzb3JfcmlnaHQpKSB7CisJbGlzdFtjb3VudCsrXSA9IGN1cnNvcl9yaWdodDsKKyAgICB9CisgICAgaWYgKGNvdW50ID09IDQpIHsKKwljaGVja19hbnNpX2N1cnNvcihsaXN0KTsKKyAgICB9IGVsc2UgaWYgKGNvdW50ICE9IDApIHsKKwljb3VudCA9IDA7CisJaWYgKFBSRVNFTlQoY3Vyc29yX2Rvd24pICYmIHN0cmNtcChjdXJzb3JfZG93biwgIlxuIikpCisJICAgICsrY291bnQ7CisJaWYgKFBSRVNFTlQoY3Vyc29yX2xlZnQpICYmIHN0cmNtcChjdXJzb3JfbGVmdCwgIlxiIikpCisJICAgICsrY291bnQ7CisJaWYgKFBSRVNFTlQoY3Vyc29yX3VwKSAmJiBzdHJsZW4oY3Vyc29yX3VwKSA+IDEpCisJICAgICsrY291bnQ7CisJaWYgKFBSRVNFTlQoY3Vyc29yX3JpZ2h0KSAmJiBzdHJsZW4oY3Vyc29yX3JpZ2h0KSA+IDEpCisJICAgICsrY291bnQ7CisJaWYgKGNvdW50KSB7CisJICAgIEVYUEVDVEVEKGN1cnNvcl9kb3duKTsKKwkgICAgRVhQRUNURUQoY3Vyc29yX3VwKTsKKwkgICAgRVhQRUNURUQoY3Vyc29yX2xlZnQpOworCSAgICBFWFBFQ1RFRChjdXJzb3JfcmlnaHQpOworCX0KKyAgICB9Cit9CisKICNkZWZpbmUgTUFYX0tQIDUKIC8qCiAgKiBEbyBhIHF1aWNrIHNhbml0eS1jaGVjayBmb3IgdnQxMDAtc3R5bGUga2V5cGFkcyB0byBzZWUgaWYgdGhlIDUta2V5IGtleXBhZApAQCAtOTM5LDExICsxMzk0LDExIEBACiAJVkFMSURfU1RSSU5HKGtleV9jMSkgJiYKIAlWQUxJRF9TVFJJTkcoa2V5X2MzKSkgewogCWNoYXIgZmluYWxbTUFYX0tQICsgMV07Ci0JaW50IGxpc3RbTUFYX0tQXTsKKwlsb25nIGxpc3RbTUFYX0tQXTsKIAlpbnQgaW5jcmVhc2UgPSAwOwogCWludCBqLCBrLCBrazsKLQlpbnQgbGFzdDsKLQlpbnQgdGVzdDsKKwlsb25nIGxhc3Q7CisJbG9uZyB0ZXN0OwogCiAJZmluYWxbMF0gPSBrZXlwYWRfZmluYWwoa2V5X2ExKTsKIAlmaW5hbFsxXSA9IGtleXBhZF9maW5hbChrZXlfYTMpOwpAQCAtOTkxLDE5ICsxNDQ2LDE5IEBACiAJCWFzc2VydChzdHJsZW4oc2hvdykgPCAoTUFYX0tQICogNCkpOwogCQlzd2l0Y2ggKGtrKSB7CiAJCWNhc2UgMDoKLQkJICAgIHN0cmNhdChzaG93LCAiIGthMSIpOworCQkgICAgX25jX1NUUkNBVChzaG93LCAiIGthMSIsIHNpemVvZihzaG93KSk7CiAJCSAgICBicmVhazsKIAkJY2FzZSAxOgotCQkgICAgc3RyY2F0KHNob3csICIga2EzIik7CisJCSAgICBfbmNfU1RSQ0FUKHNob3csICIga2EzIiwgc2l6ZW9mKHNob3cpKTsKIAkJICAgIGJyZWFrOwogCQljYXNlIDI6Ci0JCSAgICBzdHJjYXQoc2hvdywgIiBrYjIiKTsKKwkJICAgIF9uY19TVFJDQVQoc2hvdywgIiBrYjIiLCBzaXplb2Yoc2hvdykpOwogCQkgICAgYnJlYWs7CiAJCWNhc2UgMzoKLQkJICAgIHN0cmNhdChzaG93LCAiIGtjMSIpOworCQkgICAgX25jX1NUUkNBVChzaG93LCAiIGtjMSIsIHNpemVvZihzaG93KSk7CiAJCSAgICBicmVhazsKIAkJY2FzZSA0OgotCQkgICAgc3RyY2F0KHNob3csICIga2MzIik7CisJCSAgICBfbmNfU1RSQ0FUKHNob3csICIga2MzIiwgc2l6ZW9mKHNob3cpKTsKIAkJICAgIGJyZWFrOwogCQl9CiAJICAgIH0KQEAgLTEwMTgsMTggKzE0NzMsMTE4IEBACiAJICAgICAgIFZBTElEX1NUUklORyhrZXlfYzMpKSB7CiAJc2hvd1swXSA9ICdcMCc7CiAJaWYgKGtleXBhZF9pbmRleChrZXlfYTEpID49IDApCi0JICAgIHN0cmNhdChzaG93LCAiIGthMSIpOworCSAgICBfbmNfU1RSQ0FUKHNob3csICIga2ExIiwgc2l6ZW9mKHNob3cpKTsKIAlpZiAoa2V5cGFkX2luZGV4KGtleV9hMykgPj0gMCkKLQkgICAgc3RyY2F0KHNob3csICIga2EzIik7CisJICAgIF9uY19TVFJDQVQoc2hvdywgIiBrYTMiLCBzaXplb2Yoc2hvdykpOwogCWlmIChrZXlwYWRfaW5kZXgoa2V5X2IyKSA+PSAwKQotCSAgICBzdHJjYXQoc2hvdywgIiBrYjIiKTsKKwkgICAgX25jX1NUUkNBVChzaG93LCAiIGtiMiIsIHNpemVvZihzaG93KSk7CiAJaWYgKGtleXBhZF9pbmRleChrZXlfYzEpID49IDApCi0JICAgIHN0cmNhdChzaG93LCAiIGtjMSIpOworCSAgICBfbmNfU1RSQ0FUKHNob3csICIga2MxIiwgc2l6ZW9mKHNob3cpKTsKIAlpZiAoa2V5cGFkX2luZGV4KGtleV9jMykgPj0gMCkKLQkgICAgc3RyY2F0KHNob3csICIga2MzIik7CisJICAgIF9uY19TVFJDQVQoc2hvdywgIiBrYzMiLCBzaXplb2Yoc2hvdykpOwogCWlmICgqc2hvdyAhPSAnXDAnKQogCSAgICBfbmNfd2FybmluZygidnQxMDAga2V5cGFkIG1hcCBpbmNvbXBsZXRlOiVzIiwgc2hvdyk7CiAgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGVzZSB3YXJuaW5ncyBhcmUgdXNlZnVsIGZvciBjb25zaXN0ZW5jeSBjaGVja3MgLSBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICogdGhlcmUgYXJlIHJlYWwgdGVybWluYWxzIHdpdGggbWlzbWF0Y2hlcyBpbiB0aGVzZQorICAgICAqLworICAgIEFORE1JU1NJTkcoa2V5X2ljLCBrZXlfZGMpOworfQorCitzdGF0aWMgdm9pZAorY2hlY2tfcHJpbnRlcihURVJNVFlQRSAqdHApCit7CisgICAgUEFJUkVEKGVudGVyX2RvdWJsZXdpZGVfbW9kZSwgZXhpdF9kb3VibGV3aWRlX21vZGUpOworICAgIFBBSVJFRChlbnRlcl9pdGFsaWNzX21vZGUsIGV4aXRfaXRhbGljc19tb2RlKTsKKyAgICBQQUlSRUQoZW50ZXJfbGVmdHdhcmRfbW9kZSwgZXhpdF9sZWZ0d2FyZF9tb2RlKTsKKyAgICBQQUlSRUQoZW50ZXJfbWljcm9fbW9kZSwgZXhpdF9taWNyb19tb2RlKTsKKyAgICBQQUlSRUQoZW50ZXJfc2hhZG93X21vZGUsIGV4aXRfc2hhZG93X21vZGUpOworICAgIFBBSVJFRChlbnRlcl9zdWJzY3JpcHRfbW9kZSwgZXhpdF9zdWJzY3JpcHRfbW9kZSk7CisgICAgUEFJUkVEKGVudGVyX3N1cGVyc2NyaXB0X21vZGUsIGV4aXRfc3VwZXJzY3JpcHRfbW9kZSk7CisgICAgUEFJUkVEKGVudGVyX3Vwd2FyZF9tb2RlLCBleGl0X3Vwd2FyZF9tb2RlKTsKKworICAgIEFORE1JU1NJTkcoc3RhcnRfY2hhcl9zZXRfZGVmLCBzdG9wX2NoYXJfc2V0X2RlZik7CisKKyAgICAvKiBpZiB3ZSBoYXZlIGEgcGFyYW1ldGVyaXplZCBmb3JtLCB0aGVuIHRoZSBub24tcGFyYW1ldGVyaXplZCBpcyBlYXN5ICovCisgICAgQU5ETUlTU0lORyhzZXRfYm90dG9tX21hcmdpbl9wYXJtLCBzZXRfYm90dG9tX21hcmdpbik7CisgICAgQU5ETUlTU0lORyhzZXRfbGVmdF9tYXJnaW5fcGFybSwgc2V0X2xlZnRfbWFyZ2luKTsKKyAgICBBTkRNSVNTSU5HKHNldF9yaWdodF9tYXJnaW5fcGFybSwgc2V0X3JpZ2h0X21hcmdpbik7CisgICAgQU5ETUlTU0lORyhzZXRfdG9wX21hcmdpbl9wYXJtLCBzZXRfdG9wX21hcmdpbik7CisKKyAgICBBTkRNSVNTSU5HKHBhcm1fZG93bl9taWNybywgbWljcm9fZG93bik7CisgICAgQU5ETUlTU0lORyhwYXJtX2xlZnRfbWljcm8sIG1pY3JvX2xlZnQpOworICAgIEFORE1JU1NJTkcocGFybV9yaWdodF9taWNybywgbWljcm9fcmlnaHQpOworICAgIEFORE1JU1NJTkcocGFybV91cF9taWNybywgbWljcm9fdXApOworfQorCitzdGF0aWMgYm9vbAordXNlc19TR1JfMzlfNDkoY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgcmV0dXJuIChzdHJzdHIodmFsdWUsICIzOTs0OSIpICE9IDAKKwkgICAgfHwgc3Ryc3RyKHZhbHVlLCAiNDk7MzkiKSAhPSAwKTsKK30KKworLyoKKyAqIENoZWNrIGNvbnNpc3RlbmN5IG9mIHRlcm1jYXAgZXh0ZW5zaW9ucyByZWxhdGVkIHRvICJzY3JlZW4iLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfc2NyZWVuKFRFUk1UWVBFICp0cCkKK3sKKyNpZiBOQ1VSU0VTX1hOQU1FUworICAgIGlmIChfbmNfdXNlcl9kZWZpbmFibGUpIHsKKwlpbnQgaGF2ZV9YVCA9IHRpZ2V0ZmxhZygiWFQiKTsKKwlpbnQgaGF2ZV9YTSA9IHRpZ2V0ZmxhZygiWE0iKTsKKwlpbnQgaGF2ZV9iY2UgPSBiYWNrX2NvbG9yX2VyYXNlOworCWJvb2wgaGF2ZV9rbW91c2UgPSBGQUxTRTsKKwlib29sIHVzZV9zZ3JfMzlfNDkgPSBGQUxTRTsKKwljaGFyICpuYW1lID0gX25jX2ZpcnN0X25hbWUodHAtPnRlcm1fbmFtZXMpOworCisJaWYgKCFWQUxJRF9CT09MRUFOKGhhdmVfYmNlKSkgeworCSAgICBoYXZlX2JjZSA9IEZBTFNFOworCX0KKwlpZiAoIVZBTElEX0JPT0xFQU4oaGF2ZV9YTSkpIHsKKwkgICAgaGF2ZV9YTSA9IEZBTFNFOworCX0KKwlpZiAoIVZBTElEX0JPT0xFQU4oaGF2ZV9YVCkpIHsKKwkgICAgaGF2ZV9YVCA9IEZBTFNFOworCX0KKwlpZiAoVkFMSURfU1RSSU5HKGtleV9tb3VzZSkpIHsKKwkgICAgaGF2ZV9rbW91c2UgPSAhc3RyY21wKCJcMDMzW00iLCBrZXlfbW91c2UpOworCX0KKwlpZiAoVkFMSURfU1RSSU5HKG9yaWdfY29sb3JzKSkgeworCSAgICB1c2Vfc2dyXzM5XzQ5ID0gdXNlc19TR1JfMzlfNDkob3JpZ19jb2xvcnMpOworCX0gZWxzZSBpZiAoVkFMSURfU1RSSU5HKG9yaWdfcGFpcikpIHsKKwkgICAgdXNlX3Nncl8zOV80OSA9IHVzZXNfU0dSXzM5XzQ5KG9yaWdfcGFpcik7CisJfQorCisJaWYgKGhhdmVfWE0gJiYgaGF2ZV9YVCkgeworCSAgICBfbmNfd2FybmluZygiU2NyZWVuJ3MgWFQgY2FwYWJpbGl0eSBjb25mbGljdHMgd2l0aCBYTSIpOworCX0gZWxzZSBpZiAoaGF2ZV9YVAorCQkgICAmJiBzdHJzdHIobmFtZSwgInNjcmVlbiIpICE9IDAKKwkJICAgJiYgc3RyY2hyKG5hbWUsICcuJykgIT0gMCkgeworCSAgICBfbmNfd2FybmluZygiU2NyZWVuJ3MgXCJzY3JlZW5cIiBlbnRyaWVzIHNob3VsZCBub3QgaGF2ZSBYVCBzZXQiKTsKKwl9IGVsc2UgaWYgKGhhdmVfWFQpIHsKKwkgICAgaWYgKCFoYXZlX2ttb3VzZSAmJiBoYXZlX2JjZSkgeworCQlpZiAoVkFMSURfU1RSSU5HKGtleV9tb3VzZSkpIHsKKwkJICAgIF9uY193YXJuaW5nKCJWYWx1ZSBvZiBrbW91cyBpbmNvbnNpc3RlbnQgd2l0aCBzY3JlZW4ncyB1c2FnZSIpOworCQl9IGVsc2UgeworCQkgICAgX25jX3dhcm5pbmcoIkV4cGVjdGVkIGttb3VzIGNhcGFiaWxpdHkgd2l0aCBYVCIpOworCQl9CisJICAgIH0KKwkgICAgaWYgKCFoYXZlX2JjZSAmJiBtYXhfY29sb3JzID4gMCkKKwkJX25jX3dhcm5pbmcoIkV4cGVjdGVkIGJjZSBjYXBhYmlsaXR5IHdpdGggWFQiKTsKKwkgICAgaWYgKCF1c2Vfc2dyXzM5XzQ5ICYmIGhhdmVfYmNlICYmIG1heF9jb2xvcnMgPiAwKQorCQlfbmNfd2FybmluZygiRXhwZWN0ZWQgb3JpZ19jb2xvcnMgY2FwYWJpbGl0eSB3aXRoIFhUIHRvIGhhdmUgMzkvNDkgcGFyYW1ldGVycyIpOworCSAgICBpZiAoVkFMSURfU1RSSU5HKHRvX3N0YXR1c19saW5lKSkKKwkJX25jX3dhcm5pbmcoIlwidHNsXCIgY2FwYWJpbGl0eSBpcyByZWR1bmRhbnQsIGdpdmVuIFhUIik7CisJfSBlbHNlIHsKKwkgICAgaWYgKGhhdmVfa21vdXNlICYmICFoYXZlX1hNKQorCQlfbmNfd2FybmluZygiRXhwZWN0ZWQgWFQgdG8gYmUgc2V0LCBnaXZlbiBrbW91cyIpOworCX0KKyAgICB9CisjZW5kaWYKIH0KIAogLyoKQEAgLTEwMzgsNzggKzE1OTMsODEgQEAKIHN0YXRpYyBpbnQKIGV4cGVjdGVkX3BhcmFtcyhjb25zdCBjaGFyICpuYW1lKQogeworI2RlZmluZSBEQVRBKG5hbWUsY291bnQpIHsgeyBuYW1lIH0sIGNvdW50IH0KICAgICAvKiAqSU5ERU5ULU9GRiogKi8KICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKLQljb25zdCBjaGFyICpuYW1lOworCWNvbnN0IGNoYXIgbmFtZVs5XTsKIAlpbnQgY291bnQ7CiAgICAgfSB0YWJsZVtdID0gewotCXsgIlMwIiwJCQkxIH0sCS8qICdzY3JlZW4nIGV4dGVuc2lvbiAqLwotCXsgImJpcmVwIiwJCTIgfSwKLQl7ICJjaHIiLAkJMSB9LAotCXsgImNvbG9ybm0iLAkJMSB9LAotCXsgImNwaSIsCQkxIH0sCi0JeyAiY3NubSIsCQkxIH0sCi0JeyAiY3NyIiwJCTIgfSwKLQl7ICJjdWIiLAkJMSB9LAotCXsgImN1ZCIsCQkxIH0sCi0JeyAiY3VmIiwJCTEgfSwKLQl7ICJjdXAiLAkJMiB9LAotCXsgImN1dSIsCQkxIH0sCi0JeyAiY3ZyIiwJCTEgfSwKLQl7ICJjd2luIiwJCTUgfSwKLQl7ICJkY2giLAkJMSB9LAotCXsgImRlZmMiLAkJMyB9LAotCXsgImRpYWwiLAkJMSB9LAotCXsgImRpc3BjIiwJCTEgfSwKLQl7ICJkbCIsCQkJMSB9LAotCXsgImVjaCIsCQkxIH0sCi0JeyAiZ2V0bSIsCQkxIH0sCi0JeyAiaHBhIiwJCTEgfSwKLQl7ICJpY2giLAkJMSB9LAotCXsgImlsIiwJCQkxIH0sCi0JeyAiaW5kbiIsCQkxIH0sCi0JeyAiaW5pdGMiLAkJNCB9LAotCXsgImluaXRwIiwJCTcgfSwKLQl7ICJscGkiLAkJMSB9LAotCXsgIm1jNXAiLAkJMSB9LAotCXsgIm1yY3VwIiwJCTIgfSwKLQl7ICJtdnBhIiwJCTEgfSwKLQl7ICJwZmtleSIsCQkyIH0sCi0JeyAicGZsb2MiLAkJMiB9LAotCXsgInBmeCIsCQkyIH0sCi0JeyAicGZ4bCIsCQkzIH0sCi0JeyAicGxuIiwJCTIgfSwKLQl7ICJxZGlhbCIsCQkxIH0sCi0JeyAicmNzZCIsCQkxIH0sCi0JeyAicmVwIiwJCTIgfSwKLQl7ICJyaW4iLAkJMSB9LAotCXsgInNjbGsiLAkJMyB9LAotCXsgInNjcCIsCQkxIH0sCi0JeyAic2NzIiwJCTEgfSwKLQl7ICJzY3NkIiwJCTIgfSwKLQl7ICJzZXRhYiIsCQkxIH0sCi0JeyAic2V0YWYiLAkJMSB9LAotCXsgInNldGIiLAkJMSB9LAotCXsgInNldGNvbG9yIiwJCTEgfSwKLQl7ICJzZXRmIiwJCTEgfSwKLQl7ICJzZ3IiLAkJOSB9LAotCXsgInNncjEiLAkJNiB9LAotCXsgInNsZW5ndGgiLAkJMSB9LAotCXsgInNsaW5lcyIsCQkxIH0sCi0JeyAic21nYnAiLAkJMSB9LAkvKiAyIGlmIHNtZ3RwIGlzIG5vdCBnaXZlbiAqLwotCXsgInNtZ2xwIiwJCTEgfSwKLQl7ICJzbWdsciIsCQkyIH0sCi0JeyAic21ncnAiLAkJMSB9LAotCXsgInNtZ3RiIiwJCTIgfSwKLQl7ICJzbWd0cCIsCQkxIH0sCi0JeyAidHNsIiwJCTEgfSwKLQl7ICJ1NiIsCQkJLTEgfSwKLQl7ICJ2cGEiLAkJMSB9LAotCXsgIndpbmQiLAkJNCB9LAotCXsgIndpbmdvIiwJCTEgfSwKKwlEQVRBKCAiUzAiLAkJMSApLAkvKiAnc2NyZWVuJyBleHRlbnNpb24gKi8KKwlEQVRBKCAiYmlyZXAiLAkJMiApLAorCURBVEEoICJjaHIiLAkJMSApLAorCURBVEEoICJjb2xvcm5tIiwJMSApLAorCURBVEEoICJjcGkiLAkJMSApLAorCURBVEEoICJjc25tIiwJCTEgKSwKKwlEQVRBKCAiY3NyIiwJCTIgKSwKKwlEQVRBKCAiY3ViIiwJCTEgKSwKKwlEQVRBKCAiY3VkIiwJCTEgKSwKKwlEQVRBKCAiY3VmIiwJCTEgKSwKKwlEQVRBKCAiY3VwIiwJCTIgKSwKKwlEQVRBKCAiY3V1IiwJCTEgKSwKKwlEQVRBKCAiY3ZyIiwJCTEgKSwKKwlEQVRBKCAiY3dpbiIsCQk1ICksCisJREFUQSggImRjaCIsCQkxICksCisJREFUQSggImRlZmMiLAkJMyApLAorCURBVEEoICJkaWFsIiwJCTEgKSwKKwlEQVRBKCAiZGlzcGMiLAkJMSApLAorCURBVEEoICJkbCIsCQkxICksCisJREFUQSggImVjaCIsCQkxICksCisJREFUQSggImdldG0iLAkJMSApLAorCURBVEEoICJocGEiLAkJMSApLAorCURBVEEoICJpY2giLAkJMSApLAorCURBVEEoICJpbCIsCQkxICksCisJREFUQSggImluZG4iLAkJMSApLAorCURBVEEoICJpbml0YyIsCQk0ICksCisJREFUQSggImluaXRwIiwJCTcgKSwKKwlEQVRBKCAibHBpIiwJCTEgKSwKKwlEQVRBKCAibWM1cCIsCQkxICksCisJREFUQSggIm1yY3VwIiwJCTIgKSwKKwlEQVRBKCAibXZwYSIsCQkxICksCisJREFUQSggInBma2V5IiwJCTIgKSwKKwlEQVRBKCAicGZsb2MiLAkJMiApLAorCURBVEEoICJwZngiLAkJMiApLAorCURBVEEoICJwZnhsIiwJCTMgKSwKKwlEQVRBKCAicGxuIiwJCTIgKSwKKwlEQVRBKCAicWRpYWwiLAkJMSApLAorCURBVEEoICJyY3NkIiwJCTEgKSwKKwlEQVRBKCAicmVwIiwJCTIgKSwKKwlEQVRBKCAicmluIiwJCTEgKSwKKwlEQVRBKCAic2NsayIsCQkzICksCisJREFUQSggInNjcCIsCQkxICksCisJREFUQSggInNjcyIsCQkxICksCisJREFUQSggInNjc2QiLAkJMiApLAorCURBVEEoICJzZXRhYiIsCQkxICksCisJREFUQSggInNldGFmIiwJCTEgKSwKKwlEQVRBKCAic2V0YiIsCQkxICksCisJREFUQSggInNldGNvbG9yIiwJMSApLAorCURBVEEoICJzZXRmIiwJCTEgKSwKKwlEQVRBKCAic2dyIiwJCTkgKSwKKwlEQVRBKCAic2dyMSIsCQk2ICksCisJREFUQSggInNsZW5ndGgiLAkxICksCisJREFUQSggInNsaW5lcyIsCQkxICksCisJREFUQSggInNtZ2JwIiwJCTEgKSwJLyogMiBpZiBzbWd0cCBpcyBub3QgZ2l2ZW4gKi8KKwlEQVRBKCAic21nbHAiLAkJMSApLAorCURBVEEoICJzbWdsciIsCQkyICksCisJREFUQSggInNtZ3JwIiwJCTEgKSwKKwlEQVRBKCAic21ndGIiLAkJMiApLAorCURBVEEoICJzbWd0cCIsCQkxICksCisJREFUQSggInRzbCIsCQkxICksCisJREFUQSggInU2IiwJCS0xICksCisJREFUQSggInZwYSIsCQkxICksCisJREFUQSggIndpbmQiLAkJNCApLAorCURBVEEoICJ3aW5nbyIsCQkxICksCiAgICAgfTsKICAgICAvKiAqSU5ERU5ULU9OKiAqLwogCisjdW5kZWYgREFUQQorCiAgICAgdW5zaWduZWQgbjsKICAgICBpbnQgcmVzdWx0ID0gMDsJCS8qIGZ1bmN0aW9uLWtleXMsIGV0Yy4sIHVzZSBub25lICovCiAKQEAgLTExMzQsNyArMTY5Miw3IEBACiAgICAgaW50IGV4cGVjdGVkID0gZXhwZWN0ZWRfcGFyYW1zKG5hbWUpOwogICAgIGludCBhY3R1YWwgPSAwOwogICAgIGludCBuOwotICAgIGJvb2wgcGFyYW1zWzEwXTsKKyAgICBib29sIHBhcmFtc1tOVU1fUEFSTV07CiAgICAgY2hhciAqcyA9IHZhbHVlOwogCiAjaWZkZWYgc2V0X3RvcF9tYXJnaW5fcGFybQpAQCAtMTE0Myw3ICsxNzAxLDcgQEAKIAlleHBlY3RlZCA9IDI7CiAjZW5kaWYKIAotICAgIGZvciAobiA9IDA7IG4gPCAxMDsgbisrKQorICAgIGZvciAobiA9IDA7IG4gPCBOVU1fUEFSTTsgbisrKQogCXBhcmFtc1tuXSA9IEZBTFNFOwogCiAgICAgd2hpbGUgKCpzICE9IDApIHsKQEAgLTExODIsNiArMTc0MCwyMjggQEAKIH0KIAogc3RhdGljIGNoYXIgKgorY2hlY2tfMV9pbmZvdG9jYXAoY29uc3QgY2hhciAqbmFtZSwgTkNVUlNFU19DT05TVCBjaGFyICp2YWx1ZSwgaW50IGNvdW50KQoreworICAgIGludCBrOworICAgIGludCBpZ25vcmVkOworICAgIGxvbmcgbnVtYmVyc1sxICsgTlVNX1BBUk1dOworICAgIGNoYXIgKnN0cmluZ3NbMSArIE5VTV9QQVJNXTsKKyAgICBjaGFyICpwX2lzX3NbTlVNX1BBUk1dOworICAgIGNoYXIgKnJlc3VsdDsKKyAgICBjaGFyIGJsb2JbTlVNX1BBUk0gKiAxMF07CisgICAgY2hhciAqbmV4dCA9IGJsb2I7CisKKyAgICAqbmV4dCsrID0gJ1wwJzsKKyAgICBmb3IgKGsgPSAxOyBrIDw9IE5VTV9QQVJNOyBrKyspIHsKKwludW1iZXJzW2tdID0gY291bnQ7CisJc3ByaW50ZihuZXh0LCAiWFlaJWQiLCBjb3VudCk7CisJc3RyaW5nc1trXSA9IG5leHQ7CisJbmV4dCArPSBzdHJsZW4obmV4dCkgKyAxOworICAgIH0KKworICAgIHN3aXRjaCAodHBhcm1fdHlwZShuYW1lKSkgeworICAgIGNhc2UgTnVtX1N0cjoKKwlyZXN1bHQgPSBUUEFSTV8yKHZhbHVlLCBudW1iZXJzWzFdLCBzdHJpbmdzWzJdKTsKKwlicmVhazsKKyAgICBjYXNlIE51bV9TdHJfU3RyOgorCXJlc3VsdCA9IFRQQVJNXzModmFsdWUsIG51bWJlcnNbMV0sIHN0cmluZ3NbMl0sIHN0cmluZ3NbM10pOworCWJyZWFrOworICAgIGNhc2UgTnVtYmVyczoKKyAgICBkZWZhdWx0OgorCSh2b2lkKSBfbmNfdHBhcm1fYW5hbHl6ZSh2YWx1ZSwgcF9pc19zLCAmaWdub3JlZCk7CisjZGVmaW5lIG15UGFyYW0obikgKHBfaXNfc1tuIC0gMV0gIT0gMCA/ICgoVFBBUk1fQVJHKSBzdHJpbmdzW25dKSA6IG51bWJlcnNbbl0pCisJcmVzdWx0ID0gVFBBUk1fOSh2YWx1ZSwKKwkJCSBteVBhcmFtKDEpLAorCQkJIG15UGFyYW0oMiksCisJCQkgbXlQYXJhbSgzKSwKKwkJCSBteVBhcmFtKDQpLAorCQkJIG15UGFyYW0oNSksCisJCQkgbXlQYXJhbSg2KSwKKwkJCSBteVBhcmFtKDcpLAorCQkJIG15UGFyYW0oOCksCisJCQkgbXlQYXJhbSg5KSk7CisJYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNkZWZpbmUgSXNEZWxheShjaCkgKChjaCkgPT0gJy4nIHx8IGlzZGlnaXQoVUNoYXIoY2gpKSkKKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfZGVsYXlfdmFsdWUoY29uc3QgY2hhciAqc3JjLCBkb3VibGUgKmRlbGF5cywgaW50ICphbHdheXMpCit7CisgICAgaW50IHN0YXIgPSAwOworCisgICAgKmRlbGF5cyA9IDAuMDsKKyAgICBpZiAoYWx3YXlzKQorCSphbHdheXMgPSAwOworCisgICAgd2hpbGUgKGlzZGlnaXQoVUNoYXIoKnNyYykpKSB7CisJKCpkZWxheXMpID0gKCpkZWxheXMpICogMTAgKyAoKnNyYysrIC0gJzAnKTsKKyAgICB9CisgICAgaWYgKCpzcmMgPT0gJy4nKSB7CisJaW50IGdvdGRvdCA9IDE7CisKKwkrK3NyYzsKKwl3aGlsZSAoaXNkaWdpdChVQ2hhcigqc3JjKSkpIHsKKwkgICAgZ290ZG90ICo9IDEwOworCSAgICAoKmRlbGF5cykgKz0gKCpzcmMrKyAtICcwJykgLyBnb3Rkb3Q7CisJfQorICAgIH0KKyAgICB3aGlsZSAoKnNyYyA9PSAnKicgfHwgKnNyYyA9PSAnLycpIHsKKwlpZiAoYWx3YXlzID09IDAgJiYgKnNyYyA9PSAnLycpCisJICAgIGJyZWFrOworCWlmICgqc3JjKysgPT0gJyonKSB7CisJICAgIHN0YXIgPSAxOworCX0gZWxzZSB7CisJICAgICphbHdheXMgPSAxOworCX0KKyAgICB9CisgICAgaWYgKHN0YXIpCisJKmRlbGF5cyA9IC0oKmRlbGF5cyk7CisgICAgcmV0dXJuIHNyYzsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfdGlfZGVsYXkoY29uc3QgY2hhciAqdGksIGRvdWJsZSAqZGVsYXlzKQoreworICAgICpkZWxheXMgPSAwLjA7CisgICAgd2hpbGUgKCp0aSAhPSAnXDAnKSB7CisJaWYgKCp0aSA9PSAnXFwnKSB7CisJICAgICsrdGk7CisJfQorCWlmICh0aVswXSA9PSAnJCcKKwkgICAgJiYgdGlbMV0gPT0gJzwnCisJICAgICYmIElzRGVsYXkoVUNoYXIodGlbMl0pKSkgeworCSAgICBpbnQgaWdub3JlZDsKKwkgICAgY29uc3QgY2hhciAqbGFzdCA9IHBhcnNlX2RlbGF5X3ZhbHVlKHRpICsgMiwgZGVsYXlzLCAmaWdub3JlZCk7CisJICAgIGlmICgqbGFzdCA9PSAnPicpIHsKKwkJdGkgPSBsYXN0OworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgKyt0aTsKKwl9CisgICAgfQorICAgIHJldHVybiB0aTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfdGNfZGVsYXkoY29uc3QgY2hhciAqdGMsIGRvdWJsZSAqZGVsYXlzKQoreworICAgIHJldHVybiBwYXJzZV9kZWxheV92YWx1ZSh0YywgZGVsYXlzLCAoaW50ICopIDApOworfQorCisvKgorICogQ29tcGFyZSB0ZXJtaW5mby0gYW5kIHRlcm1jYXAtc3RyaW5ncywgZmFjdG9yaW5nIG91dCBkZWxheXMuCisgKi8KK3N0YXRpYyBib29sCitzYW1lX3RpX3RjKGNvbnN0IGNoYXIgKnRpLCBjb25zdCBjaGFyICp0YywgYm9vbCAqIGVtYmVkZGVkKQoreworICAgIGJvb2wgc2FtZSA9IFRSVUU7CisgICAgZG91YmxlIHRpX2RlbGF5ID0gMC4wOworICAgIGRvdWJsZSB0Y19kZWxheSA9IDAuMDsKKyAgICBjb25zdCBjaGFyICp0aV9sYXN0OworCisgICAgKmVtYmVkZGVkID0gRkFMU0U7CisgICAgdGlfbGFzdCA9IHBhcnNlX3RpX2RlbGF5KHRpLCAmdGlfZGVsYXkpOworICAgIHRjID0gcGFyc2VfdGNfZGVsYXkodGMsICZ0Y19kZWxheSk7CisKKyAgICB3aGlsZSAoKHRpIDwgdGlfbGFzdCkgJiYgKnRjKSB7CisJaWYgKCp0aSA9PSAnXFwnICYmIGlzcHVuY3QoVUNoYXIodGlbMV0pKSkgeworCSAgICArK3RpOworCSAgICBpZiAoKCp0aSA9PSAnXicpICYmICFzdHJuY21wKHRjLCAiXFwxMzYiLCA0KSkgeworCQl0aSArPSAxOworCQl0YyArPSA0OworCQljb250aW51ZTsKKwkgICAgfQorCX0gZWxzZSBpZiAodGlbMF0gPT0gJyQnICYmIHRpWzFdID09ICc8JykgeworCSAgICBkb3VibGUgbm9fZGVsYXk7CisJICAgIGNvbnN0IGNoYXIgKnNzID0gcGFyc2VfdGlfZGVsYXkodGksICZub19kZWxheSk7CisJICAgIGlmIChzcyAhPSB0aSkgeworCQkqZW1iZWRkZWQgPSBUUlVFOworCQl0aSA9IHNzOworCQljb250aW51ZTsKKwkgICAgfQorCX0KKwlpZiAoKnRjID09ICdcXCcgJiYgaXNwdW5jdChVQ2hhcih0Y1sxXSkpKSB7CisJICAgICsrdGM7CisJfQorCWlmICgqdGkrKyAhPSAqdGMrKykgeworCSAgICBzYW1lID0gRkFMU0U7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgICBpZiAoKmVtYmVkZGVkKSB7CisJaWYgKHNhbWUpIHsKKwkgICAgc2FtZSA9IEZBTFNFOworCX0gZWxzZSB7CisJICAgICplbWJlZGRlZCA9IEZBTFNFOwkvKiByZXBvcnQgb25seSBvbmUgcHJvYmxlbSAqLworCX0KKyAgICB9CisKKyAgICByZXR1cm4gc2FtZTsKK30KKworLyoKKyAqIENoZWNrIHRlcm1pbmZvIHRvIHRlcm1jYXAgdHJhbnNsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19pbmZvdG9jYXAoVEVSTVRZUEUgKnRwLCBpbnQgaSwgY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgY29uc3QgY2hhciAqbmFtZSA9IEV4dFN0cm5hbWUodHAsIGksIHN0cm5hbWVzKTsKKyAgICBpbnQgcGFyYW1zID0gKCgoaSA8IChpbnQpIFNJWkVPRihwYXJhbWV0cml6ZWQpKSAmJgorCQkgICAoaSA8IFNUUkNPVU5UKSkKKwkJICA/IHBhcmFtZXRyaXplZFtpXQorCQkgIDogKCgqdmFsdWUgPT0gJ2snKQorCQkgICAgID8gMAorCQkgICAgIDogaGFzX3BhcmFtcyh2YWx1ZSkpKTsKKyAgICBpbnQgdG9fY2hhciA9IDA7CisgICAgY2hhciAqdGlfdmFsdWU7CisgICAgY2hhciAqdGNfdmFsdWU7CisgICAgYm9vbCBlbWJlZGRlZDsKKworICAgIGlmICgodGlfdmFsdWUgPSBfbmNfdGljX2V4cGFuZCh2YWx1ZSwgVFJVRSwgdG9fY2hhcikpID09IEFCU0VOVF9TVFJJTkcpIHsKKwlfbmNfd2FybmluZygidGljLWV4cGFuc2lvbiBvZiAlcyBmYWlsZWQiLCBuYW1lKTsKKyAgICB9IGVsc2UgaWYgKCh0Y192YWx1ZSA9IF9uY19pbmZvdG9jYXAobmFtZSwgdGlfdmFsdWUsIHBhcmFtcykpID09IEFCU0VOVF9TVFJJTkcpIHsKKwlfbmNfd2FybmluZygidGljLWNvbnZlcnNpb24gb2YgJXMgZmFpbGVkIiwgbmFtZSk7CisgICAgfSBlbHNlIGlmIChwYXJhbXMgPiAwKSB7CisJaW50IGxpbWl0ID0gNTsKKwlpbnQgY291bnQ7CisJYm9vbCBmaXJzdCA9IFRSVUU7CisKKwlpZiAoIXN0cmNtcChuYW1lLCAic2V0ZiIpCisJICAgIHx8ICFzdHJjbXAobmFtZSwgInNldGIiKQorCSAgICB8fCAhc3RyY21wKG5hbWUsICJzZXRhZiIpCisJICAgIHx8ICFzdHJjbXAobmFtZSwgInNldGFiIikpIHsKKwkgICAgbGltaXQgPSBtYXhfY29sb3JzOworCX0KKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBsaW1pdDsgKytjb3VudCkgeworCSAgICBjaGFyICp0aV9jaGVjayA9IGNoZWNrXzFfaW5mb3RvY2FwKG5hbWUsIHRpX3ZhbHVlLCBjb3VudCk7CisJICAgIGNoYXIgKnRjX2NoZWNrID0gY2hlY2tfMV9pbmZvdG9jYXAobmFtZSwgdGNfdmFsdWUsIGNvdW50KTsKKworCSAgICBpZiAoc3RyY21wKHRpX2NoZWNrLCB0Y19jaGVjaykpIHsKKwkJaWYgKGZpcnN0KSB7CisJCSAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNrX2luZm90b2NhcCglcylcbiIsIG5hbWUpOworCQkgICAgZnByaW50ZihzdGRlcnIsICIuLi50aSAnJXMnXG4iLCB0aV92YWx1ZSk7CisJCSAgICBmcHJpbnRmKHN0ZGVyciwgIi4uLnRjICclcydcbiIsIHRjX3ZhbHVlKTsKKwkJICAgIGZpcnN0ID0gRkFMU0U7CisJCX0KKwkJX25jX3dhcm5pbmcoInRwYXJtLWNvbnZlcnNpb24gb2YgJXMoJWQpIGRpZmZlcnMgYmV0d2VlblxuXHR0ZXJtaW5mbyAlc1xuXHR0ZXJtY2FwICAlcyIsCisJCQkgICAgbmFtZSwgY291bnQsIHRpX2NoZWNrLCB0Y19jaGVjayk7CisJICAgIH0KKwl9CisgICAgfSBlbHNlIGlmIChwYXJhbXMgPT0gMCAmJiAhc2FtZV90aV90Yyh0aV92YWx1ZSwgdGNfdmFsdWUsICZlbWJlZGRlZCkpIHsKKwlpZiAoZW1iZWRkZWQpIHsKKwkgICAgX25jX3dhcm5pbmcoInRlcm1jYXAgZXF1aXZhbGVudCBvZiAlcyBjYW5ub3QgdXNlIGVtYmVkZGVkIGRlbGF5IiwgbmFtZSk7CisJfSBlbHNlIHsKKwkgICAgX25jX3dhcm5pbmcoInRpYy1jb252ZXJzaW9uIG9mICVzIGNoYW5nZWQgdmFsdWVcblx0ZnJvbSAlc1xuXHR0byAgICVzIiwKKwkJCW5hbWUsIHRpX3ZhbHVlLCB0Y192YWx1ZSk7CisJfQorICAgIH0KK30KKworc3RhdGljIGNoYXIgKgogc2tpcF9kZWxheShjaGFyICpzKQogewogICAgIHdoaWxlICgqcyA9PSAnLycgfHwgaXNkaWdpdChVQ2hhcigqcykpKQpAQCAtMTIzNSwxOSArMjAxNSwyMSBAQAogc3RhdGljIGJvb2wKIHNpbWlsYXJfc2dyKGludCBudW0sIGNoYXIgKmEsIGNoYXIgKmIpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKm5hbWVzW10gPQorI2RlZmluZSBEQVRBKG5hbWUpIHsgI25hbWUgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyIG5hbWVzW11bMTFdID0KICAgICB7Ci0JIm5vbmUiCi0JLCJzdGFuZG91dCIKLQksInVuZGVybGluZSIKLQksInJldmVyc2UiCi0JLCJibGluayIKLQksImRpbSIKLQksImJvbGQiCi0JLCJpbnZpcyIKLQksInByb3RlY3QiCi0JLCJhbHRjaGFyc2V0IgorCURBVEEobm9uZSksCisJREFUQShzdGFuZG91dCksCisJREFUQSh1bmRlcmxpbmUpLAorCURBVEEocmV2ZXJzZSksCisJREFUQShibGluayksCisJREFUQShkaW0pLAorCURBVEEoYm9sZCksCisJREFUQShpbnZpcyksCisJREFUQShwcm90ZWN0KSwKKwlEQVRBKGFsdGNoYXJzZXQpLAogICAgIH07CisjdW5kZWYgREFUQQogICAgIGNoYXIgKmJhc2VfYSA9IGE7CiAgICAgY2hhciAqYmFzZV9iID0gYjsKICAgICBpbnQgZGVsYXlpbmcgPSAwOwpAQCAtMTI2OCw2ICsyMDUwLDggQEAKIAkgICAgfSBlbHNlIGlmIChkZWxheWluZykgewogCQlhID0gc2tpcF9kZWxheShhKTsKIAkJYiA9IHNraXBfZGVsYXkoYik7CisJICAgIH0gZWxzZSBpZiAoKCpiID09ICcwJyB8fCAoKmIgPT0gJzsnKSkgJiYgKmEgPT0gJ20nKSB7CisJCWIrKzsKIAkgICAgfSBlbHNlIHsKIAkJYSsrOwogCSAgICB9CkBAIC0xMzQxLDkgKzIxMjUsOSBAQAogc2hvd193aGVyZSh1bnNpZ25lZCBsZXZlbCkKIHsKICAgICBpZiAoX25jX3RyYWNpbmcgPj0gREVCVUdfTEVWRUwobGV2ZWwpKSB7Ci0JY2hhciBteV9uYW1lWzI1Nl07CisJY2hhciBteV9uYW1lW01BWF9OQU1FX1NJWkVdOwogCV9uY19nZXRfdHlwZShteV9uYW1lKTsKLQlmcHJpbnRmKHN0ZGVyciwgIlwiJXNcIiwgbGluZSAlZCwgJyVzJyAiLAorCV90cmFjZWYoIlwiJXNcIiwgbGluZSAlZCwgJyVzJyIsCiAJCV9uY19nZXRfc291cmNlKCksCiAJCV9uY19jdXJyX2xpbmUsIG15X25hbWUpOwogICAgIH0KQEAgLTEzNTMsNjUgKzIxMzcsMTM3IEBACiAjZGVmaW5lIHNob3dfd2hlcmUobGV2ZWwpCS8qIG5vdGhpbmcgKi8KICNlbmRpZgogCi0vKiBvdGhlciBzYW5pdHktY2hlY2tzICh0aGluZ3MgdGhhdCB3ZSBkb24ndCB3YW50IGluIHRoZSBub3JtYWwKLSAqIGxvZ2ljIHRoYXQgcmVhZHMgYSB0ZXJtaW5mbyBlbnRyeSkKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQga2V5Y29kZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKnZhbHVlOworfSBOQU1FX1ZBTFVFOworCitzdGF0aWMgTkFNRV9WQUxVRSAqCitnZXRfZmtleV9saXN0KFRFUk1UWVBFICp0cCkKK3sKKyAgICBOQU1FX1ZBTFVFICpyZXN1bHQgPSB0eXBlTWFsbG9jKE5BTUVfVkFMVUUsIE5VTV9TVFJJTkdTKHRwKSArIDEpOworICAgIGNvbnN0IHN0cnVjdCB0aW5mb19ma2V5cyAqYWxsX2ZrZXlzID0gX25jX3RpbmZvX2ZrZXlzOworICAgIGludCB1c2VkID0gMDsKKyAgICBpbnQgajsKKworICAgIGlmIChyZXN1bHQgPT0gMCkKKwlmYWlsZWQoImdldF9ma2V5X2xpc3QiKTsKKworICAgIGZvciAoaiA9IDA7IGFsbF9ma2V5c1tqXS5jb2RlOyBqKyspIHsKKwljaGFyICphID0gdHAtPlN0cmluZ3NbYWxsX2ZrZXlzW2pdLm9mZnNldF07CisJaWYgKFZBTElEX1NUUklORyhhKSkgeworCSAgICByZXN1bHRbdXNlZF0ua2V5Y29kZSA9IChpbnQpIGFsbF9ma2V5c1tqXS5jb2RlOworCSAgICByZXN1bHRbdXNlZF0ubmFtZSA9IHN0cm5hbWVzW2FsbF9ma2V5c1tqXS5vZmZzZXRdOworCSAgICByZXN1bHRbdXNlZF0udmFsdWUgPSBhOworCSAgICArK3VzZWQ7CisJfQorICAgIH0KKyNpZiBOQ1VSU0VTX1hOQU1FUworICAgIGZvciAoaiA9IFNUUkNPVU5UOyBqIDwgTlVNX1NUUklOR1ModHApOyArK2opIHsKKwljb25zdCBjaGFyICpuYW1lID0gRXh0U3RybmFtZSh0cCwgaiwgc3RybmFtZXMpOworCWlmICgqbmFtZSA9PSAnaycpIHsKKwkgICAgcmVzdWx0W3VzZWRdLmtleWNvZGUgPSAtMTsKKwkgICAgcmVzdWx0W3VzZWRdLm5hbWUgPSBuYW1lOworCSAgICByZXN1bHRbdXNlZF0udmFsdWUgPSB0cC0+U3RyaW5nc1tqXTsKKwkgICAgKyt1c2VkOworCX0KKyAgICB9CisjZW5kaWYKKyAgICByZXN1bHRbdXNlZF0ua2V5Y29kZSA9IDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfZmtleV9uYW1lKE5BTUVfVkFMVUUgKiBkYXRhKQoreworICAgIGlmIChkYXRhLT5rZXljb2RlID4gMCkgeworCWZwcmludGYoc3RkZXJyLCAiICVzIiwga2V5bmFtZShkYXRhLT5rZXljb2RlKSk7CisJZnByaW50ZihzdGRlcnIsICIgKGNhcGFiaWxpdHkgXCIlc1wiKSIsIGRhdGEtPm5hbWUpOworICAgIH0gZWxzZSB7CisJZnByaW50ZihzdGRlcnIsICIgY2FwYWJpbGl0eSBcIiVzXCIiLCBkYXRhLT5uYW1lKTsKKyAgICB9Cit9CisKKy8qCisgKiBBIHRlcm1pbmFsIGVudHJ5IG1heSBjb250YWluIG1vcmUgdGhhbiBvbmUga2V5Y29kZSBhc3NpZ25lZCB0byBhIGdpdmVuCisgKiBzdHJpbmcgKGUuZy4sIEtFWV9FTkQgYW5kIEtFWV9MTCkuICBCdXQgY3Vyc2VzIHdpbGwgb25seSByZXR1cm4gb25lICh0aGUKKyAqIGxhc3Qgb25lIGFzc2lnbmVkKS4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3Rlcm10eXBlKFRFUk1UWVBFICp0cCwgYm9vbCBsaXRlcmFsKQorY2hlY2tfY29uZmxpY3QoVEVSTVRZUEUgKnRwKQogewogICAgIGJvb2wgY29uZmxpY3QgPSBGQUxTRTsKICAgICB1bnNpZ25lZCBqLCBrOwotICAgIGNoYXIgZmtleXNbU1RSQ09VTlRdOwogCi0gICAgLyoKLSAgICAgKiBBIHRlcm1pbmFsIGVudHJ5IG1heSBjb250YWluIG1vcmUgdGhhbiBvbmUga2V5Y29kZSBhc3NpZ25lZCB0bwotICAgICAqIGEgZ2l2ZW4gc3RyaW5nIChlLmcuLCBLRVlfRU5EIGFuZCBLRVlfTEwpLiAgQnV0IGN1cnNlcyB3aWxsIG9ubHkKLSAgICAgKiByZXR1cm4gb25lICh0aGUgbGFzdCBvbmUgYXNzaWduZWQpLgotICAgICAqLwogICAgIGlmICghKF9uY19zeW50YXggPT0gU1lOX1RFUk1DQVAgJiYgY2FwZHVtcCkpIHsKLQltZW1zZXQoZmtleXMsIDAsIHNpemVvZihma2V5cykpOwotCWZvciAoaiA9IDA7IF9uY190aW5mb19ma2V5c1tqXS5jb2RlOyBqKyspIHsKLQkgICAgY2hhciAqYSA9IHRwLT5TdHJpbmdzW19uY190aW5mb19ma2V5c1tqXS5vZmZzZXRdOworCWNoYXIgKmNoZWNrID0gY2FsbG9jKChzaXplX3QpIChOVU1fU1RSSU5HUyh0cCkgKyAxKSwgc2l6ZW9mKGNoYXIpKTsKKwlOQU1FX1ZBTFVFICpnaXZlbiA9IGdldF9ma2V5X2xpc3QodHApOworCisJaWYgKGNoZWNrID09IDApCisJICAgIGZhaWxlZCgiY2hlY2tfdGVybXR5cGUiKTsKKworCWZvciAoaiA9IDA7IGdpdmVuW2pdLmtleWNvZGU7ICsraikgeworCSAgICBjb25zdCBjaGFyICphID0gZ2l2ZW5bal0udmFsdWU7CiAJICAgIGJvb2wgZmlyc3QgPSBUUlVFOwotCSAgICBpZiAoIVZBTElEX1NUUklORyhhKSkKLQkJY29udGludWU7Ci0JICAgIGZvciAoayA9IGogKyAxOyBfbmNfdGluZm9fZmtleXNba10uY29kZTsgaysrKSB7Ci0JCWNoYXIgKmIgPSB0cC0+U3RyaW5nc1tfbmNfdGluZm9fZmtleXNba10ub2Zmc2V0XTsKLQkJaWYgKCFWQUxJRF9TVFJJTkcoYikKLQkJICAgIHx8IGZrZXlzW2tdKQorCisJICAgIGZvciAoayA9IGogKyAxOyBnaXZlbltrXS5rZXljb2RlOyBrKyspIHsKKwkJY29uc3QgY2hhciAqYiA9IGdpdmVuW2tdLnZhbHVlOworCQlpZiAoY2hlY2tba10pCiAJCSAgICBjb250aW51ZTsKIAkJaWYgKCFfbmNfY2FwY21wKGEsIGIpKSB7Ci0JCSAgICBma2V5c1tqXSA9IDE7Ci0JCSAgICBma2V5c1trXSA9IDE7CisJCSAgICBjaGVja1tqXSA9IDE7CisJCSAgICBjaGVja1trXSA9IDE7CiAJCSAgICBpZiAoZmlyc3QpIHsKIAkJCWlmICghY29uZmxpY3QpIHsKIAkJCSAgICBfbmNfd2FybmluZygiQ29uZmxpY3Rpbmcga2V5IGRlZmluaXRpb25zICh1c2luZyB0aGUgbGFzdCkiKTsKIAkJCSAgICBjb25mbGljdCA9IFRSVUU7CiAJCQl9Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIi4uLiAlcyBpcyB0aGUgc2FtZSBhcyAlcyIsCi0JCQkJa2V5bmFtZSgoaW50KSBfbmNfdGluZm9fZmtleXNbal0uY29kZSksCi0JCQkJa2V5bmFtZSgoaW50KSBfbmNfdGluZm9fZmtleXNba10uY29kZSkpOworCQkJZnByaW50ZihzdGRlcnIsICIuLi4iKTsKKwkJCXNob3dfZmtleV9uYW1lKGdpdmVuICsgaik7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiBpcyB0aGUgc2FtZSBhcyIpOworCQkJc2hvd19ma2V5X25hbWUoZ2l2ZW4gKyBrKTsKIAkJCWZpcnN0ID0gRkFMU0U7CiAJCSAgICB9IGVsc2UgewotCQkJZnByaW50ZihzdGRlcnIsICIsICVzIiwKLQkJCQlrZXluYW1lKChpbnQpIF9uY190aW5mb19ma2V5c1trXS5jb2RlKSk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiwgIik7CisJCQlzaG93X2ZrZXlfbmFtZShnaXZlbiArIGspOwogCQkgICAgfQogCQl9CiAJICAgIH0KIAkgICAgaWYgKCFmaXJzdCkKIAkJZnByaW50ZihzdGRlcnIsICJcbiIpOwogCX0KKwlmcmVlKGdpdmVuKTsKKwlmcmVlKGNoZWNrKTsKICAgICB9Cit9CiAKLSAgICBmb3IgKGogPSAwOyBqIDwgTlVNX1NUUklOR1ModHApOyBqKyspIHsKKy8qIG90aGVyIHNhbml0eS1jaGVja3MgKHRoaW5ncyB0aGF0IHdlIGRvbid0IHdhbnQgaW4gdGhlIG5vcm1hbAorICogbG9naWMgdGhhdCByZWFkcyBhIHRlcm1pbmZvIGVudHJ5KQorICovCitzdGF0aWMgdm9pZAorY2hlY2tfdGVybXR5cGUoVEVSTVRZUEUgKnRwLCBib29sIGxpdGVyYWwpCit7CisgICAgdW5zaWduZWQgajsKKworICAgIGNoZWNrX2NvbmZsaWN0KHRwKTsKKworICAgIGZvcl9lYWNoX3N0cmluZyhqLCB0cCkgewogCWNoYXIgKmEgPSB0cC0+U3RyaW5nc1tqXTsKLQlpZiAoVkFMSURfU1RSSU5HKGEpKQotCSAgICBjaGVja19wYXJhbXModHAsIEV4dFN0cm5hbWUodHAsIGosIHN0cm5hbWVzKSwgYSk7CisJaWYgKFZBTElEX1NUUklORyhhKSkgeworCSAgICBjaGVja19wYXJhbXModHAsIEV4dFN0cm5hbWUodHAsIChpbnQpIGosIHN0cm5hbWVzKSwgYSk7CisJICAgIGlmIChjYXBkdW1wKSB7CisJCWNoZWNrX2luZm90b2NhcCh0cCwgKGludCkgaiwgYSk7CisJICAgIH0KKwl9CiAgICAgfQogCiAgICAgY2hlY2tfYWNzKHRwKTsKICAgICBjaGVja19jb2xvcnModHApOworICAgIGNoZWNrX2N1cnNvcih0cCk7CiAgICAgY2hlY2tfa2V5cGFkKHRwKTsKKyAgICBjaGVja19wcmludGVyKHRwKTsKKyAgICBjaGVja19zY3JlZW4odHApOwogCiAgICAgLyoKICAgICAgKiBUaGVzZSBtYXkgYmUgbWlzbWF0Y2hlZCBiZWNhdXNlIHRoZSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiByZWxpZXMgb24KQEAgLTE0MzIsNiArMjI4OCwxMSBAQAogICAgIEFORE1JU1NJTkcoY2hhbmdlX3Njcm9sbF9yZWdpb24sIHNhdmVfY3Vyc29yKTsKICAgICBBTkRNSVNTSU5HKGNoYW5nZV9zY3JvbGxfcmVnaW9uLCByZXN0b3JlX2N1cnNvcik7CiAKKyAgICAvKgorICAgICAqIElmIHdlIGNhbiBjbGVhciB0YWJzLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBpbml0aWFsaXplIHRoZW0uCisgICAgICovCisgICAgQU5ETUlTU0lORyhjbGVhcl9hbGxfdGFicywgc2V0X3RhYik7CisKICAgICBpZiAoUFJFU0VOVChzZXRfYXR0cmlidXRlcykpIHsKIAljaGFyICp6ZXJvID0gMDsKIApAQCAtMTQ3NiwxMyArMjMzNywxNSBAQAogCQkgICAgICAoIndpbGwgdHJpbSBzZ3IwXG5cdG9yaWdpbmFsIHNncjA9JXNcblx0dHJpbW1lZCAgc2dyMD0lcyIsCiAJCSAgICAgICBfbmNfdmlzYnVmMigxLCBleGl0X2F0dHJpYnV0ZV9tb2RlKSwKIAkJICAgICAgIF9uY192aXNidWYyKDIsIGNoZWNrX3NncjApKSk7Ci0JCWZyZWUoY2hlY2tfc2dyMCk7CiAJICAgIH0gZWxzZSB7CiAJCURFQlVHKDIsCiAJCSAgICAgICgid2lsbCBub3QgdHJpbSBzZ3IwXG5cdG9yaWdpbmFsIHNncjA9JXMiLAogCQkgICAgICAgX25jX3Zpc2J1ZihleGl0X2F0dHJpYnV0ZV9tb2RlKSkpOwogCSAgICB9CiAJfQorCWlmIChjaGVja19zZ3IwICE9IGV4aXRfYXR0cmlidXRlX21vZGUpIHsKKwkgICAgZnJlZShjaGVja19zZ3IwKTsKKwl9CiAgICAgfQogI2lmZGVmIFRSQUNFCiAgICAgc2hvd193aGVyZSgyKTsKZGlmZiAtLWdpdCBhL3Byb2dzL3RvZSBiL3Byb2dzL3RvZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTAwNDlhNi4uMDAwMDAwMAotLS0gYS9wcm9ncy90b2UKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wcm9ncy90b2UuYyBiL3Byb2dzL3RvZS5jCmluZGV4IDhhZjZmMzcuLjBkMjk5YjQgMTAwNjQ0Ci0tLSBhL3Byb2dzL3RvZS5jCisrKyBiL3Byb2dzL3RvZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtNDQsMTIgKzQ0LDIzIEBACiAjaW5jbHVkZSA8aGFzaGVkX2RiLmg+CiAjZW5kaWYKIAotTU9EVUxFX0lEKCIkSWQ6IHRvZS5jLHYgMS41MSAyMDA4LzA4LzE2IDIxOjUzOjI1IHRvbSBFeHAgJCIpCitNT0RVTEVfSUQoIiRJZDogdG9lLmMsdiAxLjc0IDIwMTMvMTIvMTUgMDE6MDg6MjggdG9tIEV4cCAkIikKIAogI2RlZmluZSBpc0RvdG5hbWUobmFtZSkgKCFzdHJjbXAobmFtZSwgIi4iKSB8fCAhc3RyY21wKG5hbWUsICIuLiIpKQogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGRiX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tzdW07CisgICAgY2hhciAqdGVybV9uYW1lOworICAgIGNoYXIgKmRlc2NyaXB0aW9uOworfSBURVJNREFUQTsKKwogY29uc3QgY2hhciAqX25jX3Byb2duYW1lOwogCitzdGF0aWMgVEVSTURBVEEgKnB0cl90ZXJtZGF0YTsJLyogYXJyYXkgb2YgdGVybWluYWwgZGF0YSAqLworc3RhdGljIHNpemVfdCB1c2VfdGVybWRhdGE7CS8qIGFjdHVhbCB1c2FnZSBpbiBwdHJfdGVybWRhdGFbXSAqLworc3RhdGljIHNpemVfdCBsZW5fdGVybWRhdGE7CS8qIGFsbG9jYXRlZCBzaXplIG9mIHB0cl90ZXJtZGF0YVtdICovCisKICNpZiBOT19MRUFLUwogI3VuZGVmIEV4aXRQcm9ncmFtCiBzdGF0aWMgdm9pZCBFeGl0UHJvZ3JhbShpbnQgY29kZSkgR0NDX05PUkVUVVJOOwpAQCAtNjEsNiArNzIsMTU5IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgZmFpbGVkKGNvbnN0IGNoYXIgKikgR0NDX05PUkVUVVJOOworCitzdGF0aWMgdm9pZAorZmFpbGVkKGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgICBwZXJyb3IobXNnKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgY2hhciAqCitzdHJtYWxsb2MoY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgY2hhciAqcmVzdWx0ID0gc3RyZHVwKHZhbHVlKTsKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKwlmYWlsZWQoInN0cm1hbGxvYyIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVEVSTURBVEEgKgorbmV3X3Rlcm1kYXRhKHZvaWQpCit7CisgICAgc2l6ZV90IHdhbnQgPSB1c2VfdGVybWRhdGEgKyAxOworCisgICAgaWYgKHdhbnQgPj0gbGVuX3Rlcm1kYXRhKSB7CisJbGVuX3Rlcm1kYXRhID0gKDIgKiB3YW50KSArIDEwOworCXB0cl90ZXJtZGF0YSA9IHR5cGVSZWFsbG9jKFRFUk1EQVRBLCBsZW5fdGVybWRhdGEsIHB0cl90ZXJtZGF0YSk7CisJaWYgKHB0cl90ZXJtZGF0YSA9PSAwKQorCSAgICBmYWlsZWQoInB0cl90ZXJtZGF0YSIpOworICAgIH0KKworICAgIHJldHVybiBwdHJfdGVybWRhdGEgKyB1c2VfdGVybWRhdGErKzsKK30KKworc3RhdGljIGludAorY29tcGFyZV90ZXJtZGF0YShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworICAgIGNvbnN0IFRFUk1EQVRBICpwID0gKGNvbnN0IFRFUk1EQVRBICopIGE7CisgICAgY29uc3QgVEVSTURBVEEgKnEgPSAoY29uc3QgVEVSTURBVEEgKikgYjsKKyAgICBpbnQgcmVzdWx0ID0gc3RyY21wKHAtPnRlcm1fbmFtZSwgcS0+dGVybV9uYW1lKTsKKworICAgIGlmIChyZXN1bHQgPT0gMCkgeworCXJlc3VsdCA9IChwLT5kYl9pbmRleCAtIHEtPmRiX2luZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFNvcnQgdGhlIGFycmF5IG9mIFRFUk1EQVRBIGFuZCBwcmludCBpdC4gIElmIG1vcmUgdGhhbiBvbmUgZGF0YWJhc2UgaXMgYmVpbmcKKyAqIHJlcG9ydGVkLCBhZGQgYSBjb2x1bW4gdG8gc2hvdyB3aGljaCBkYXRhYmFzZSBoYXMgYSBnaXZlbiBlbnRyeS4KKyAqLworc3RhdGljIHZvaWQKK3Nob3dfdGVybWRhdGEoaW50IGVhcmdjLCBjaGFyICoqZWFyZ3YpCit7CisgICAgaW50IGosIGs7CisgICAgc2l6ZV90IG47CisKKyAgICBpZiAodXNlX3Rlcm1kYXRhKSB7CisJaWYgKGVhcmdjID4gMSkgeworCSAgICBmb3IgKGogPSAwOyBqIDwgZWFyZ2M7ICsraikgeworCQlmb3IgKGsgPSAwOyBrIDw9IGo7ICsraykgeworCQkgICAgcHJpbnRmKCItLSIpOworCQl9CisJCXByaW50ZigiPiAiKTsKKwkJcHJpbnRmKCIlc1xuIiwgZWFyZ3Zbal0pOworCSAgICB9CisJfQorCWlmICh1c2VfdGVybWRhdGEgPiAxKQorCSAgICBxc29ydChwdHJfdGVybWRhdGEsIHVzZV90ZXJtZGF0YSwgc2l6ZW9mKFRFUk1EQVRBKSwgY29tcGFyZV90ZXJtZGF0YSk7CisJZm9yIChuID0gMDsgbiA8IHVzZV90ZXJtZGF0YTsgKytuKSB7CisKKwkgICAgLyoKKwkgICAgICogSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBkYXRhYmFzZSwgc2hvdyBob3cgdGhleSBkaWZmZXIuCisJICAgICAqLworCSAgICBpZiAoZWFyZ2MgPiAxKSB7CisJCXVuc2lnbmVkIGxvbmcgY2hlY2sgPSAwOworCQlrID0gMDsKKwkJZm9yICg7OykgeworCQkgICAgZm9yICg7IGsgPCBwdHJfdGVybWRhdGFbbl0uZGJfaW5kZXg7ICsraykgeworCQkJcHJpbnRmKCItLSIpOworCQkgICAgfQorCisJCSAgICAvKgorCQkgICAgICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgZW50cnksIG9yIGl0cyBjaGVja3N1bSBkaWZmZXJzCisJCSAgICAgKiBmcm9tIHRoZSBmaXJzdCBlbnRyeSdzIGNoZWNrc3VtLCBwcmludCAiKiIuIE90aGVyd2lzZQorCQkgICAgICogaXQgbG9va3MgZW5vdWdoIGxpa2UgYSBkdXBsaWNhdGUgdG8gcHJpbnQgIisiLgorCQkgICAgICovCisJCSAgICBwcmludGYoIiVjLSIsICgoY2hlY2sgPT0gMAorCQkJCSAgICB8fCAoY2hlY2sgIT0gcHRyX3Rlcm1kYXRhW25dLmNoZWNrc3VtKSkKKwkJCQkgICA/ICcqJworCQkJCSAgIDogJysnKSk7CisJCSAgICBjaGVjayA9IHB0cl90ZXJtZGF0YVtuXS5jaGVja3N1bTsKKworCQkgICAgKytrOworCQkgICAgaWYgKChuICsgMSkgPj0gdXNlX3Rlcm1kYXRhCisJCQl8fCBzdHJjbXAocHRyX3Rlcm1kYXRhW25dLnRlcm1fbmFtZSwKKwkJCQkgIHB0cl90ZXJtZGF0YVtuICsgMV0udGVybV9uYW1lKSkgeworCQkJYnJlYWs7CisJCSAgICB9CisJCSAgICArK247CisJCX0KKwkJZm9yICg7IGsgPCBlYXJnYzsgKytrKSB7CisJCSAgICBwcmludGYoIi0tIik7CisJCX0KKwkJcHJpbnRmKCI6XHQiKTsKKwkgICAgfQorCisJICAgICh2b2lkKSBwcmludGYoIiUtMTBzXHQlc1xuIiwKKwkJCSAgcHRyX3Rlcm1kYXRhW25dLnRlcm1fbmFtZSwKKwkJCSAgcHRyX3Rlcm1kYXRhW25dLmRlc2NyaXB0aW9uKTsKKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZnJlZV90ZXJtZGF0YSh2b2lkKQoreworICAgIGlmIChwdHJfdGVybWRhdGEgIT0gMCkgeworCXdoaWxlICh1c2VfdGVybWRhdGEgIT0gMCkgeworCSAgICAtLXVzZV90ZXJtZGF0YTsKKwkgICAgZnJlZShwdHJfdGVybWRhdGFbdXNlX3Rlcm1kYXRhXS50ZXJtX25hbWUpOworCSAgICBmcmVlKHB0cl90ZXJtZGF0YVt1c2VfdGVybWRhdGFdLmRlc2NyaXB0aW9uKTsKKwl9CisJZnJlZShwdHJfdGVybWRhdGEpOworCXB0cl90ZXJtZGF0YSA9IDA7CisgICAgfQorICAgIHVzZV90ZXJtZGF0YSA9IDA7CisgICAgbGVuX3Rlcm1kYXRhID0gMDsKK30KKworc3RhdGljIGNoYXIgKioKK2FsbG9jQXJndihzaXplX3QgY291bnQpCit7CisgICAgY2hhciAqKnJlc3VsdCA9IHR5cGVDYWxsb2MoY2hhciAqLCBjb3VudCArIDEpOworICAgIGlmIChyZXN1bHQgPT0gMCkKKwlmYWlsZWQoInJlYWxsb2MgZWFyZ3YiKTsKKworICAgIGFzc2VydChyZXN1bHQgIT0gMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVBcmd2KGNoYXIgKiphcmd2KQoreworICAgIGlmIChhcmd2KSB7CisJaW50IGNvdW50ID0gMDsKKwl3aGlsZSAoYXJndltjb3VudF0pIHsKKwkgICAgZnJlZShhcmd2W2NvdW50KytdKTsKKwl9CisJZnJlZShhcmd2KTsKKyAgICB9Cit9CisKICNpZiBVU0VfSEFTSEVEX0RCCiBzdGF0aWMgYm9vbAogbWFrZV9kYl9uYW1lKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBsaW1pdCkKQEAgLTY4LDY3ICsyMzIsMTAwIEBACiAgICAgc3RhdGljIGNvbnN0IGNoYXIgc3VmZml4W10gPSBEQk1fU1VGRklYOwogCiAgICAgYm9vbCByZXN1bHQgPSBGQUxTRTsKLSAgICB1bnNpZ25lZCBsZW5zID0gc2l6ZW9mKHN1ZmZpeCkgLSAxOwotICAgIHVuc2lnbmVkIHNpemUgPSBzdHJsZW4oc3JjKTsKLSAgICB1bnNpZ25lZCBuZWVkID0gbGVucyArIHNpemU7CisgICAgc2l6ZV90IGxlbnMgPSBzaXplb2Yoc3VmZml4KSAtIDE7CisgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4oc3JjKTsKKyAgICBzaXplX3QgbmVlZCA9IGxlbnMgKyBzaXplOwogCiAgICAgaWYgKG5lZWQgPD0gbGltaXQpIHsKIAlpZiAoc2l6ZSA+PSBsZW5zCi0JICAgICYmICFzdHJjbXAoc3JjICsgc2l6ZSAtIGxlbnMsIHN1ZmZpeCkpCi0JICAgICh2b2lkKSBzdHJjcHkoZHN0LCBzcmMpOwotCWVsc2UKLQkgICAgKHZvaWQpIHNwcmludGYoZHN0LCAiJXMlcyIsIHNyYywgc3VmZml4KTsKLQlyZXN1bHQgPSBUUlVFOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KLXN0YXRpYyBib29sCi1pc19kYXRhYmFzZShjb25zdCBjaGFyICpwYXRoKQotewotICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7Ci0jaWYgVVNFX0RBVEFCQVNFCi0gICAgaWYgKF9uY19pc19kaXJfcGF0aChwYXRoKSAmJiBhY2Nlc3MocGF0aCwgUl9PSyB8IFhfT0spID09IDApIHsKLQlyZXN1bHQgPSBUUlVFOwotICAgIH0KLSNlbmRpZgotI2lmIFVTRV9URVJNQ0FQCi0gICAgaWYgKF9uY19pc19maWxlX3BhdGgocGF0aCkgJiYgYWNjZXNzKHBhdGgsIFJfT0spID09IDApIHsKLQlyZXN1bHQgPSBUUlVFOwotICAgIH0KLSNlbmRpZgotI2lmIFVTRV9IQVNIRURfREIKLSAgICBpZiAoIXJlc3VsdCkgewotCWNoYXIgZmlsZW5hbWVbUEFUSF9NQVhdOwotCWlmIChfbmNfaXNfZmlsZV9wYXRoKHBhdGgpICYmIGFjY2VzcyhwYXRoLCBSX09LKSA9PSAwKSB7Ci0JICAgIHJlc3VsdCA9IFRSVUU7Ci0JfSBlbHNlIGlmIChtYWtlX2RiX25hbWUoZmlsZW5hbWUsIHBhdGgsIHNpemVvZihmaWxlbmFtZSkpKSB7Ci0JICAgIGlmIChfbmNfaXNfZmlsZV9wYXRoKGZpbGVuYW1lKSAmJiBhY2Nlc3MoZmlsZW5hbWUsIFJfT0spID09IDApIHsKLQkJcmVzdWx0ID0gVFJVRTsKLQkgICAgfQorCSAgICAmJiAhc3RyY21wKHNyYyArIHNpemUgLSBsZW5zLCBzdWZmaXgpKSB7CisJICAgIF9uY19TVFJDUFkoZHN0LCBzcmMsIFBBVEhfTUFYKTsKKwl9IGVsc2UgeworCSAgICBfbmNfU1BSSU5URihkc3QsIF9uY19TTElNSVQoUEFUSF9NQVgpICIlcyVzIiwgc3JjLCBzdWZmaXgpOwogCX0KKwlyZXN1bHQgPSBUUlVFOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYKIAotc3RhdGljIHZvaWQKLWRlc2Nob29rKGNvbnN0IGNoYXIgKmNuLCBURVJNVFlQRSAqdHApCi0vKiBkaXNwbGF5IGEgZGVzY3JpcHRpb24gZm9yIHRoZSB0eXBlICovCit0eXBlZGVmIHZvaWQgKERlc2NIb29rKSAoaW50IC8qIGRiX2luZGV4ICovICwKKwkJCSBpbnQgLyogZGJfbGltaXQgKi8gLAorCQkJIGNvbnN0IGNoYXIgKiAvKiB0ZXJtX25hbWUgKi8gLAorCQkJIFRFUk1UWVBFICogLyogdGVybSAqLyApOworCitzdGF0aWMgY29uc3QgY2hhciAqCit0ZXJtX2Rlc2NyaXB0aW9uKFRFUk1UWVBFICp0cCkKIHsKICAgICBjb25zdCBjaGFyICpkZXNjOwogCi0gICAgaWYgKChkZXNjID0gc3RycmNocih0cC0+dGVybV9uYW1lcywgJ3wnKSkgPT0gMCB8fCAqKytkZXNjID09ICdcMCcpCisgICAgaWYgKHRwLT50ZXJtX25hbWVzID09IDAKKwl8fCAoZGVzYyA9IHN0cnJjaHIodHAtPnRlcm1fbmFtZXMsICd8JykpID09IDAKKwl8fCAoKisrZGVzYyA9PSAnXDAnKSkgewogCWRlc2MgPSAiKE5vIGRlc2NyaXB0aW9uKSI7CisgICAgfQogCi0gICAgKHZvaWQpIHByaW50ZigiJS0xMHNcdCVzXG4iLCBjbiwgZGVzYyk7CisgICAgcmV0dXJuIGRlc2M7CiB9CiAKLSNpZiBVU0VfVEVSTUNBUAorLyogZGlzcGxheSBhIGRlc2NyaXB0aW9uIGZvciB0aGUgdHlwZSAqLwogc3RhdGljIHZvaWQKLXNob3dfdGVybWNhcChjaGFyICpidWZmZXIsCi0JICAgICB2b2lkICgqaG9vaykgKGNvbnN0IGNoYXIgKiwgVEVSTVRZUEUgKnRwKSkKK2Rlc2Nob29rKGludCBkYl9pbmRleCwgaW50IGRiX2xpbWl0LCBjb25zdCBjaGFyICp0ZXJtX25hbWUsIFRFUk1UWVBFICp0cCkKK3sKKyAgICAodm9pZCkgZGJfaW5kZXg7CisgICAgKHZvaWQpIGRiX2xpbWl0OworICAgICh2b2lkKSBwcmludGYoIiUtMTBzXHQlc1xuIiwgdGVybV9uYW1lLCB0ZXJtX2Rlc2NyaXB0aW9uKHRwKSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitzdHJpbmdfc3VtKGNvbnN0IGNoYXIgKnZhbHVlKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsKKworICAgIGlmICgoaW50cHRyX3QpIHZhbHVlID09IChpbnRwdHJfdCkgKC0xKSkgeworCXJlc3VsdCA9IH5yZXN1bHQ7CisgICAgfSBlbHNlIGlmICh2YWx1ZSkgeworCXdoaWxlICgqdmFsdWUpIHsKKwkgICAgcmVzdWx0ICs9IFVDaGFyKCp2YWx1ZSk7CisJICAgICsrdmFsdWU7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworY2hlY2tzdW1fb2YoVEVSTVRZUEUgKnRwKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gc3RyaW5nX3N1bSh0cC0+dGVybV9uYW1lcyk7CisgICAgdW5zaWduZWQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fQk9PTEVBTlModHApOyBpKyspIHsKKwlyZXN1bHQgKz0gKHVuc2lnbmVkIGxvbmcpICh0cC0+Qm9vbGVhbnNbaV0pOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX05VTUJFUlModHApOyBpKyspIHsKKwlyZXN1bHQgKz0gKHVuc2lnbmVkIGxvbmcpICh0cC0+TnVtYmVyc1tpXSk7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fU1RSSU5HUyh0cCk7IGkrKykgeworCXJlc3VsdCArPSBzdHJpbmdfc3VtKHRwLT5TdHJpbmdzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogY29sbGVjdCBkYXRhLCB0byBzb3J0IGJlZm9yZSBkaXNwbGF5ICovCitzdGF0aWMgdm9pZAorc29ydGhvb2soaW50IGRiX2luZGV4LCBpbnQgZGJfbGltaXQsIGNvbnN0IGNoYXIgKnRlcm1fbmFtZSwgVEVSTVRZUEUgKnRwKQoreworICAgIFRFUk1EQVRBICpkYXRhID0gbmV3X3Rlcm1kYXRhKCk7CisKKyAgICBkYXRhLT5kYl9pbmRleCA9IGRiX2luZGV4OworICAgIGRhdGEtPmNoZWNrc3VtID0gKChkYl9saW1pdCA+IDEpID8gY2hlY2tzdW1fb2YodHApIDogMCk7CisgICAgZGF0YS0+dGVybV9uYW1lID0gc3RybWFsbG9jKHRlcm1fbmFtZSk7CisgICAgZGF0YS0+ZGVzY3JpcHRpb24gPSBzdHJtYWxsb2ModGVybV9kZXNjcmlwdGlvbih0cCkpOworfQorCisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUAorc3RhdGljIHZvaWQKK3Nob3dfdGVybWNhcChpbnQgZGJfaW5kZXgsIGludCBkYl9saW1pdCwgY2hhciAqYnVmZmVyLCBEZXNjSG9vayBob29rKQogewogICAgIFRFUk1UWVBFIGRhdGE7CiAgICAgY2hhciAqbmV4dCA9IHN0cmNocihidWZmZXIsICc6Jyk7CkBAIC0xNDIsMjYgKzMzOSw0MiBAQAogICAgIGlmIChsYXN0KQogCSsrbGFzdDsKIAotICAgIGRhdGEudGVybV9uYW1lcyA9IHN0cmR1cChidWZmZXIpOworICAgIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKKyAgICBkYXRhLnRlcm1fbmFtZXMgPSBzdHJtYWxsb2MoYnVmZmVyKTsKICAgICB3aGlsZSAoKG5leHQgPSBzdHJ0b2sobGlzdCwgInwiKSkgIT0gMCkgewogCWlmIChuZXh0ICE9IGxhc3QpCi0JICAgIGhvb2sobmV4dCwgJmRhdGEpOworCSAgICBob29rKGRiX2luZGV4LCBkYl9saW1pdCwgbmV4dCwgJmRhdGEpOwogCWxpc3QgPSAwOwogICAgIH0KICAgICBmcmVlKGRhdGEudGVybV9uYW1lcyk7CiB9CiAjZW5kaWYKIAorI2lmIE5DVVJTRVNfVVNFX0RBVEFCQVNFCitzdGF0aWMgY2hhciAqCitjb3B5X2VudHJ5bmFtZShESVJFTlQgKiBzcmMpCit7CisgICAgc2l6ZV90IGxlbiA9IE5BTUxFTihzcmMpOworICAgIGNoYXIgKnJlc3VsdCA9IG1hbGxvYyhsZW4gKyAxKTsKKyAgICBpZiAocmVzdWx0ID09IDApCisJZmFpbGVkKCJjb3B5IGVudHJ5bmFtZSIpOworICAgIG1lbWNweShyZXN1bHQsIHNyYy0+ZF9uYW1lLCBsZW4pOworICAgIHJlc3VsdFtsZW5dID0gJ1wwJzsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwogc3RhdGljIGludAogdHlwZWxpc3QoaW50IGVhcmdjLCBjaGFyICplYXJndltdLAotCSBib29sIHZlcmJvc2l0eSwKLQkgdm9pZCAoKmhvb2spIChjb25zdCBjaGFyICosIFRFUk1UWVBFICp0cCkpCisJIGludCB2ZXJib3NpdHksCisJIERlc2NIb29rIGhvb2spCiAvKiBhcHBseSBhIGZ1bmN0aW9uIHRvIGVhY2ggZW50cnkgaW4gZ2l2ZW4gdGVybWluZm8gZGlyZWN0b3JpZXMgKi8KIHsKICAgICBpbnQgaTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBlYXJnYzsgaSsrKSB7Ci0jaWYgVVNFX0RBVEFCQVNFCisjaWYgTkNVUlNFU19VU0VfREFUQUJBU0UKIAlpZiAoX25jX2lzX2Rpcl9wYXRoKGVhcmd2W2ldKSkgewogCSAgICBjaGFyICpjd2RfYnVmID0gMDsKIAkgICAgRElSICp0ZXJtZGlyOwpAQCAtMTcyLDI4ICszODUsMzUgQEAKIAkJKHZvaWQpIGZwcmludGYoc3RkZXJyLAogCQkJICAgICAgICIlczogY2FuJ3Qgb3BlbiB0ZXJtaW5mbyBkaXJlY3RvcnkgJXNcbiIsCiAJCQkgICAgICAgX25jX3Byb2duYW1lLCBlYXJndltpXSk7Ci0JCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKLQkgICAgfSBlbHNlIGlmICh2ZXJib3NpdHkpCisJCWNvbnRpbnVlOworCSAgICB9CisKKwkgICAgaWYgKHZlcmJvc2l0eSkKIAkJKHZvaWQpIHByaW50ZigiI1xuIyVzOlxuI1xuIiwgZWFyZ3ZbaV0pOwogCiAJICAgIHdoaWxlICgoc3ViZGlyID0gcmVhZGRpcih0ZXJtZGlyKSkgIT0gMCkgewotCQlzaXplX3QgbGVuID0gTkFNTEVOKHN1YmRpcik7Ci0JCXNpemVfdCBjd2RfbGVuID0gbGVuICsgc3RybGVuKGVhcmd2W2ldKSArIDM7Ci0JCWNoYXIgbmFtZV8xW1BBVEhfTUFYXTsKKwkJc2l6ZV90IGN3ZF9sZW47CisJCWNoYXIgKm5hbWVfMTsKIAkJRElSICplbnRyeWRpcjsKIAkJRElSRU5UICplbnRyeTsKIAotCQljd2RfYnVmID0gdHlwZVJlYWxsb2MoY2hhciwgY3dkX2xlbiwgY3dkX2J1Zik7Ci0JCWlmIChjd2RfYnVmID09IDApIHsKLQkJICAgIHBlcnJvcigicmVhbGxvYyBjd2RfYnVmIik7CisJCW5hbWVfMSA9IGNvcHlfZW50cnluYW1lKHN1YmRpcik7CisJCWlmIChpc0RvdG5hbWUobmFtZV8xKSkgeworCQkgICAgZnJlZShuYW1lXzEpOwogCQkgICAgY29udGludWU7CiAJCX0KIAotCQlzdHJuY3B5KG5hbWVfMSwgc3ViZGlyLT5kX25hbWUsIGxlbilbbGVuXSA9ICdcMCc7Ci0JCWlmIChpc0RvdG5hbWUobmFtZV8xKSkKLQkJICAgIGNvbnRpbnVlOworCQljd2RfbGVuID0gTkFNTEVOKHN1YmRpcikgKyBzdHJsZW4oZWFyZ3ZbaV0pICsgMzsKKwkJY3dkX2J1ZiA9IHR5cGVSZWFsbG9jKGNoYXIsIGN3ZF9sZW4sIGN3ZF9idWYpOworCQlpZiAoY3dkX2J1ZiA9PSAwKQorCQkgICAgZmFpbGVkKCJyZWFsbG9jIGN3ZF9idWYiKTsKIAotCQkodm9pZCkgc3ByaW50Zihjd2RfYnVmLCAiJXMvJS4qcy8iLCBlYXJndltpXSwgKGludCkgbGVuLCBuYW1lXzEpOworCQlhc3NlcnQoY3dkX2J1ZiAhPSAwKTsKKworCQlfbmNfU1BSSU5URihjd2RfYnVmLCBfbmNfU0xJTUlUKGN3ZF9sZW4pCisJCQkgICAgIiVzLyVzLyIsIGVhcmd2W2ldLCBuYW1lXzEpOworCQlmcmVlKG5hbWVfMSk7CisKIAkJaWYgKGNoZGlyKGN3ZF9idWYpICE9IDApCiAJCSAgICBjb250aW51ZTsKIApAQCAtMjAzLDE1ICs0MjMsMTYgQEAKIAkJICAgIGNvbnRpbnVlOwogCQl9CiAJCXdoaWxlICgoZW50cnkgPSByZWFkZGlyKGVudHJ5ZGlyKSkgIT0gMCkgewotCQkgICAgY2hhciBuYW1lXzJbUEFUSF9NQVhdOworCQkgICAgY2hhciAqbmFtZV8yOwogCQkgICAgVEVSTVRZUEUgbHRlcm07CiAJCSAgICBjaGFyICpjbjsKIAkJICAgIGludCBzdGF0dXM7CiAKLQkJICAgIGxlbiA9IE5BTUxFTihlbnRyeSk7Ci0JCSAgICBzdHJuY3B5KG5hbWVfMiwgZW50cnktPmRfbmFtZSwgbGVuKVtsZW5dID0gJ1wwJzsKLQkJICAgIGlmIChpc0RvdG5hbWUobmFtZV8yKSB8fCAhX25jX2lzX2ZpbGVfcGF0aChuYW1lXzIpKQorCQkgICAgbmFtZV8yID0gY29weV9lbnRyeW5hbWUoZW50cnkpOworCQkgICAgaWYgKGlzRG90bmFtZShuYW1lXzIpIHx8ICFfbmNfaXNfZmlsZV9wYXRoKG5hbWVfMikpIHsKKwkJCWZyZWUobmFtZV8yKTsKIAkJCWNvbnRpbnVlOworCQkgICAgfQogCiAJCSAgICBzdGF0dXMgPSBfbmNfcmVhZF9maWxlX2VudHJ5KG5hbWVfMiwgJmx0ZXJtKTsKIAkJICAgIGlmIChzdGF0dXMgPD0gMCkgewpAQCAtMjE5LDYgKzQ0MCwxMCBAQAogCQkJKHZvaWQpIGZwcmludGYoc3RkZXJyLAogCQkJCSAgICAgICAiJXM6IGNvdWxkbid0IG9wZW4gdGVybWluZm8gZmlsZSAlcy5cbiIsCiAJCQkJICAgICAgIF9uY19wcm9nbmFtZSwgbmFtZV8yKTsKKwkJCWZyZWUoY3dkX2J1Zik7CisJCQlmcmVlKG5hbWVfMik7CisJCQljbG9zZWRpcihlbnRyeWRpcik7CisJCQljbG9zZWRpcih0ZXJtZGlyKTsKIAkJCXJldHVybiAoRVhJVF9GQUlMVVJFKTsKIAkJICAgIH0KIApAQCAtMjI2LDIxICs0NTEsMjYgQEAKIAkJICAgIGNuID0gX25jX2ZpcnN0X25hbWUobHRlcm0udGVybV9uYW1lcyk7CiAJCSAgICBpZiAoIXN0cmNtcChjbiwgbmFtZV8yKSkgewogCQkJLyogYXBwbHkgdGhlIHNlbGVjdGVkIGhvb2sgZnVuY3Rpb24gKi8KLQkJCSgqaG9vaykgKGNuLCAmbHRlcm0pOworCQkJaG9vayhpLCBlYXJnYywgY24sICZsdGVybSk7CiAJCSAgICB9CiAJCSAgICBfbmNfZnJlZV90ZXJtdHlwZSgmbHRlcm0pOworCQkgICAgZnJlZShuYW1lXzIpOwogCQl9CiAJCWNsb3NlZGlyKGVudHJ5ZGlyKTsKIAkgICAgfQogCSAgICBjbG9zZWRpcih0ZXJtZGlyKTsKIAkgICAgaWYgKGN3ZF9idWYgIT0gMCkKIAkJZnJlZShjd2RfYnVmKTsKKwkgICAgY29udGludWU7CiAJfQogI2lmIFVTRV9IQVNIRURfREIKIAllbHNlIHsKIAkgICAgREIgKmNhcGRicDsKIAkgICAgY2hhciBmaWxlbmFtZVtQQVRIX01BWF07CiAKKwkgICAgaWYgKHZlcmJvc2l0eSkKKwkJKHZvaWQpIHByaW50ZigiI1xuIyVzOlxuI1xuIiwgZWFyZ3ZbaV0pOworCiAJICAgIGlmIChtYWtlX2RiX25hbWUoZmlsZW5hbWUsIGVhcmd2W2ldLCBzaXplb2YoZmlsZW5hbWUpKSkgewogCQlpZiAoKGNhcGRicCA9IF9uY19kYl9vcGVuKGZpbGVuYW1lLCBGQUxTRSkpICE9IDApIHsKIAkJICAgIERCVCBrZXksIGRhdGE7CkBAIC0yNTgsNyArNDg4LDcgQEAKIAkJCQkvKiBvbmx5IHZpc2l0IHRoaW5ncyBvbmNlLCBieSBwcmltYXJ5IG5hbWUgKi8KIAkJCQljbiA9IF9uY19maXJzdF9uYW1lKGx0ZXJtLnRlcm1fbmFtZXMpOwogCQkJCS8qIGFwcGx5IHRoZSBzZWxlY3RlZCBob29rIGZ1bmN0aW9uICovCi0JCQkJKCpob29rKSAoY24sICZsdGVybSk7CisJCQkJaG9vayhpLCBlYXJnYywgY24sICZsdGVybSk7CiAJCQkJX25jX2ZyZWVfdGVybXR5cGUoJmx0ZXJtKTsKIAkJCSAgICB9CiAJCQl9CkBAIC0yNjYsNDQgKzQ5Niw1MSBAQAogCQkgICAgfQogCiAJCSAgICBfbmNfZGJfY2xvc2UoY2FwZGJwKTsKKwkJICAgIGNvbnRpbnVlOwogCQl9CiAJICAgIH0KIAl9CiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRV9URVJNQ0FQCisjaWYgTkNVUlNFU19VU0VfVEVSTUNBUAogI2lmIEhBVkVfQlNEX0NHRVRFTlQKLQljaGFyICpkYl9hcnJheVsyXTsKLQljaGFyICpidWZmZXIgPSAwOworCXsKKwkgICAgQ0dFVEVOVF9DT05TVCBjaGFyICpkYl9hcnJheVsyXTsKKwkgICAgY2hhciAqYnVmZmVyID0gMDsKIAotCWlmICh2ZXJib3NpdHkpCi0JICAgICh2b2lkKSBwcmludGYoIiNcbiMlczpcbiNcbiIsIGVhcmd2W2ldKTsKKwkgICAgaWYgKHZlcmJvc2l0eSkKKwkJKHZvaWQpIHByaW50ZigiI1xuIyVzOlxuI1xuIiwgZWFyZ3ZbaV0pOwogCi0JZGJfYXJyYXlbMF0gPSBlYXJndltpXTsKLQlkYl9hcnJheVsxXSA9IDA7CisJICAgIGRiX2FycmF5WzBdID0gZWFyZ3ZbaV07CisJICAgIGRiX2FycmF5WzFdID0gMDsKIAotCWlmIChjZ2V0Zmlyc3QoJmJ1ZmZlciwgZGJfYXJyYXkpKSB7Ci0JICAgIHNob3dfdGVybWNhcChidWZmZXIsIGhvb2spOwotCSAgICBmcmVlKGJ1ZmZlcik7Ci0JICAgIHdoaWxlIChjZ2V0bmV4dCgmYnVmZmVyLCBkYl9hcnJheSkpIHsKLQkJc2hvd190ZXJtY2FwKGJ1ZmZlciwgaG9vayk7CisJICAgIGlmIChjZ2V0Zmlyc3QoJmJ1ZmZlciwgZGJfYXJyYXkpID4gMCkgeworCQlzaG93X3Rlcm1jYXAoaSwgZWFyZ2MsIGJ1ZmZlciwgaG9vayk7CiAJCWZyZWUoYnVmZmVyKTsKKwkJd2hpbGUgKGNnZXRuZXh0KCZidWZmZXIsIGRiX2FycmF5KSA+IDApIHsKKwkJICAgIHNob3dfdGVybWNhcChpLCBlYXJnYywgYnVmZmVyLCBob29rKTsKKwkJICAgIGZyZWUoYnVmZmVyKTsKKwkJfQorCQljZ2V0Y2xvc2UoKTsKKwkJY29udGludWU7CiAJICAgIH0KIAl9Ci0JY2dldGNsb3NlKCk7CiAjZWxzZQogCS8qIHNjYW4gdGVybWNhcCB0ZXh0LWZpbGUgb25seSAqLwogCWlmIChfbmNfaXNfZmlsZV9wYXRoKGVhcmd2W2ldKSkgewogCSAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKIAkgICAgRklMRSAqZnA7CiAKKwkgICAgaWYgKHZlcmJvc2l0eSkKKwkJKHZvaWQpIHByaW50ZigiI1xuIyVzOlxuI1xuIiwgZWFyZ3ZbaV0pOworCiAJICAgIGlmICgoZnAgPSBmb3BlbihlYXJndltpXSwgInIiKSkgIT0gMCkgewogCQl3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZnApICE9IDApIHsKIAkJICAgIGlmICgqYnVmZmVyID09ICcjJykKIAkJCWNvbnRpbnVlOwogCQkgICAgaWYgKGlzc3BhY2UoKmJ1ZmZlcikpCiAJCQljb250aW51ZTsKLQkJICAgIHNob3dfdGVybWNhcChidWZmZXIsIGhvb2spOworCQkgICAgc2hvd190ZXJtY2FwKGksIGVhcmdjLCBidWZmZXIsIGhvb2spOwogCQl9CiAJCWZjbG9zZShmcCk7CiAJICAgIH0KQEAgLTMxMiwxMyArNTQ5LDE4IEBACiAjZW5kaWYKICAgICB9CiAKKyAgICBpZiAoaG9vayA9PSBzb3J0aG9vaykgeworCXNob3dfdGVybWRhdGEoZWFyZ2MsIGVhcmd2KTsKKwlmcmVlX3Rlcm1kYXRhKCk7CisgICAgfQorCiAgICAgcmV0dXJuIChFWElUX1NVQ0NFU1MpOwogfQogCiBzdGF0aWMgdm9pZAogdXNhZ2Uodm9pZCkKIHsKLSAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy1haHVVVl0gWy12IG5dIFtmaWxlLi4uXVxuIiwgX25jX3Byb2duYW1lKTsKKyAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy1haHN1VVZdIFstdiBuXSBbZmlsZS4uLl1cbiIsIF9uY19wcm9nbmFtZSk7CiAgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKIH0KIApAQCAtMzMzLDIzICs1NzUsMjQgQEAKICAgICB1bnNpZ25lZCBpOwogICAgIGludCBjb2RlOwogICAgIGludCB0aGlzX29wdCwgbGFzdF9vcHQgPSAnPyc7Ci0gICAgaW50IHZfb3B0ID0gMDsKKyAgICB1bnNpZ25lZCB2X29wdCA9IDA7CisgICAgRGVzY0hvb2sgKmhvb2sgPSBkZXNjaG9vazsKIAogICAgIF9uY19wcm9nbmFtZSA9IF9uY19yb290bmFtZShhcmd2WzBdKTsKIAotICAgIHdoaWxlICgodGhpc19vcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIjAxMjM0NTY3ODlhaHU6dlU6ViIpKSAhPSAtMSkgeworICAgIHdoaWxlICgodGhpc19vcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIjAxMjM0NTY3ODlhaHN1OnZVOlYiKSkgIT0gLTEpIHsKIAkvKiBoYW5kbGUgb3B0aW9uYWwgcGFyYW1ldGVyICovCiAJaWYgKGlzZGlnaXQodGhpc19vcHQpKSB7CiAJICAgIHN3aXRjaCAobGFzdF9vcHQpIHsKIAkgICAgY2FzZSAndic6Ci0JCXZfb3B0ID0gKHRoaXNfb3B0IC0gJzAnKTsKKwkJdl9vcHQgPSAodW5zaWduZWQpICh0aGlzX29wdCAtICcwJyk7CiAJCWJyZWFrOwogCSAgICBkZWZhdWx0OgogCQlpZiAoaXNkaWdpdChsYXN0X29wdCkpCiAJCSAgICB2X29wdCAqPSAxMDsKIAkJZWxzZQogCQkgICAgdl9vcHQgPSAwOwotCQl2X29wdCArPSAodGhpc19vcHQgLSAnMCcpOworCQl2X29wdCArPSAodW5zaWduZWQpICh0aGlzX29wdCAtICcwJyk7CiAJCWxhc3Rfb3B0ID0gdGhpc19vcHQ7CiAJICAgIH0KIAkgICAgY29udGludWU7CkBAIC0zNjEsNiArNjA0LDkgQEAKIAljYXNlICdoJzoKIAkgICAgaGVhZGVyID0gVFJVRTsKIAkgICAgYnJlYWs7CisJY2FzZSAncyc6CisJICAgIGhvb2sgPSBzb3J0aG9vazsKKwkgICAgYnJlYWs7CiAJY2FzZSAndSc6CiAJICAgIGRpcmVjdF9kZXBlbmRlbmNpZXMgPSBUUlVFOwogCSAgICByZXBvcnRfZmlsZSA9IG9wdGFyZzsKQEAgLTQ0Myw3ICs2ODksNyBAQAogICAgICAqIElmIHdlIGdldCB0aGlzIGZhciwgdXNlciB3YW50cyBhIHNpbXBsZSB0ZXJtaW5hbCB0eXBlIGxpc3RpbmcuCiAgICAgICovCiAgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKLQljb2RlID0gdHlwZWxpc3QoYXJnYyAtIG9wdGluZCwgYXJndiArIG9wdGluZCwgaGVhZGVyLCBkZXNjaG9vayk7CisJY29kZSA9IHR5cGVsaXN0KGFyZ2MgLSBvcHRpbmQsIGFyZ3YgKyBvcHRpbmQsIGhlYWRlciwgaG9vayk7CiAgICAgfSBlbHNlIGlmIChhbGxfZGlycykgewogCURCRElSUyBzdGF0ZTsKIAlpbnQgb2Zmc2V0OwpAQCAtNDUzLDYwICs2OTksNDEgQEAKIAogCWNvZGUgPSBFWElUX0ZBSUxVUkU7CiAJZm9yIChwYXNzID0gMDsgcGFzcyA8IDI7ICsrcGFzcykgewotCSAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisJICAgIHNpemVfdCBjb3VudCA9IDA7CiAKIAkgICAgX25jX2ZpcnN0X2RiKCZzdGF0ZSwgJm9mZnNldCk7CiAJICAgIHdoaWxlICgocGF0aCA9IF9uY19uZXh0X2RiKCZzdGF0ZSwgJm9mZnNldCkpICE9IDApIHsKLQkJaWYgKCFpc19kYXRhYmFzZShwYXRoKSkgewotCQkgICAgOwotCQl9IGVsc2UgaWYgKGVhcmd2ICE9IDApIHsKLQkJICAgIHVuc2lnbmVkIG47Ci0JCSAgICBpbnQgZm91bmQgPSBGQUxTRTsKLQotCQkgICAgLyogZWxpbWluYXRlIGR1cGxpY2F0ZXMgKi8KLQkJICAgIGZvciAobiA9IDA7IG4gPCBjb3VudDsgKytuKSB7Ci0JCQlpZiAoIXN0cmNtcChwYXRoLCBlYXJndltuXSkpIHsKLQkJCSAgICBmb3VuZCA9IFRSVUU7Ci0JCQkgICAgYnJlYWs7Ci0JCQl9Ci0JCSAgICB9Ci0JCSAgICBpZiAoIWZvdW5kKSB7Ci0JCQllYXJndltjb3VudF0gPSBzdHJkdXAocGF0aCk7Ci0JCQkrK2NvdW50OwotCQkgICAgfQotCQl9IGVsc2UgewotCQkgICAgKytjb3VudDsKKwkJaWYgKHBhc3MpIHsKKwkJICAgIGVhcmd2W2NvdW50XSA9IHN0cm1hbGxvYyhwYXRoKTsKIAkJfQorCQkrK2NvdW50OwogCSAgICB9CiAJICAgIGlmICghcGFzcykgewotCQllYXJndiA9IHR5cGVDYWxsb2MoY2hhciAqLCBjb3VudCArIDEpOworCQllYXJndiA9IGFsbG9jQXJndihjb3VudCk7CisJCWlmIChlYXJndiA9PSAwKQorCQkgICAgZmFpbGVkKCJlYXJndiIpOwogCSAgICB9IGVsc2UgewotCQljb2RlID0gdHlwZWxpc3QoKGludCkgY291bnQsIGVhcmd2LCBoZWFkZXIsIGRlc2Nob29rKTsKLQkJd2hpbGUgKGNvdW50LS0gPiAwKQotCQkgICAgZnJlZShlYXJndltjb3VudF0pOwotCQlmcmVlKGVhcmd2KTsKKwkJY29kZSA9IHR5cGVsaXN0KChpbnQpIGNvdW50LCBlYXJndiwgaGVhZGVyLCBob29rKTsKKwkJZnJlZUFyZ3YoZWFyZ3YpOwogCSAgICB9CiAJfQogICAgIH0gZWxzZSB7CiAJREJESVJTIHN0YXRlOwogCWludCBvZmZzZXQ7CiAJY29uc3QgY2hhciAqcGF0aDsKLQljaGFyICplYXJndlszXTsKLQlpbnQgY291bnQgPSAwOworCWNoYXIgKiplYXJndiA9IGFsbG9jQXJndigoc2l6ZV90KSAyKTsKKwlzaXplX3QgY291bnQgPSAwOwogCisJaWYgKGVhcmd2ID09IDApCisJICAgIGZhaWxlZCgiZWFyZ3YiKTsKIAlfbmNfZmlyc3RfZGIoJnN0YXRlLCAmb2Zmc2V0KTsKLQl3aGlsZSAoKHBhdGggPSBfbmNfbmV4dF9kYigmc3RhdGUsICZvZmZzZXQpKSAhPSAwKSB7Ci0JICAgIGlmIChpc19kYXRhYmFzZShwYXRoKSkgewotCQllYXJndltjb3VudCsrXSA9IHN0cmR1cChwYXRoKTsKLQkJYnJlYWs7Ci0JICAgIH0KKwlpZiAoKHBhdGggPSBfbmNfbmV4dF9kYigmc3RhdGUsICZvZmZzZXQpKSAhPSAwKSB7CisJICAgIGVhcmd2W2NvdW50KytdID0gc3RybWFsbG9jKHBhdGgpOwogCX0KLQllYXJndltjb3VudF0gPSAwOwogCi0JY29kZSA9IHR5cGVsaXN0KGNvdW50LCBlYXJndiwgaGVhZGVyLCBkZXNjaG9vayk7CisJY29kZSA9IHR5cGVsaXN0KChpbnQpIGNvdW50LCBlYXJndiwgaGVhZGVyLCBob29rKTsKIAotCXdoaWxlIChjb3VudC0tID4gMCkKLQkgICAgZnJlZShlYXJndltjb3VudF0pOworCWZyZWVBcmd2KGVhcmd2KTsKICAgICB9CiAgICAgX25jX2xhc3RfZGIoKTsKIApkaWZmIC0tZ2l0IGEvcHJvZ3MvdHBhcm1fdHlwZS5jIGIvcHJvZ3MvdHBhcm1fdHlwZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNWU0M2MKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9ncy90cGFybV90eXBlLmMKQEAgLTAsMCArMSw3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPHRwYXJtX3R5cGUuaD4KKworTU9EVUxFX0lEKCIkSWQ6IHRwYXJtX3R5cGUuYyx2IDEuMiAyMDE1LzA0LzA0IDE1OjAxOjEzIHRvbSBFeHAgJCIpCisKKy8qCisgKiBMb29rdXAgdGhlIHR5cGUgb2YgY2FsbCB3ZSBzaG91bGQgbWFrZSB0byB0cGFybSgpLiAgVGhpcyBpZ25vcmVzIHRoZSBhY3R1YWwKKyAqIHRlcm1pbmZvIGNhcGFiaWxpdHkgKGJhZCwgYmVjYXVzZSBpdCBpcyBub3QgZXh0ZW5zaWJsZSksIGJ1dCBtYWtlcyB0aGlzCisgKiBjb2RlIHBvcnRhYmxlIHRvIHBsYXRmb3JtcyB3aGVyZSBzaXplb2YoaW50KSAhPSBzaXplb2YoY2hhciAqKS4KKyAqLworVFBhcmFtcwordHBhcm1fdHlwZShjb25zdCBjaGFyICpuYW1lKQoreworI2RlZmluZSBURChjb2RlLCBsb25nbmFtZSwgdGksIHRjKSBcCisgICAgCXtjb2RlLCB7bG9uZ25hbWV9IH0sIFwKKwl7Y29kZSwge3RpfSB9LCBcCisJe2NvZGUsIHt0Y30gfQorICAgIFRQYXJhbXMgcmVzdWx0ID0gTnVtYmVyczsKKyAgICAvKiAqSU5ERU5ULU9GRiogKi8KKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwlUUGFyYW1zIGNvZGU7CisJY29uc3QgY2hhciBuYW1lWzEyXTsKKyAgICB9IHRhYmxlW10gPSB7CisJVEQoTnVtX1N0ciwJInBrZXlfa2V5IiwJInBma2V5IiwJInBrIiksCisJVEQoTnVtX1N0ciwJInBrZXlfbG9jYWwiLAkicGZsb2MiLAkicGwiKSwKKwlURChOdW1fU3RyLAkicGtleV94bWl0IiwJInBmeCIsCQkicHgiKSwKKwlURChOdW1fU3RyLAkicGxhYl9ub3JtIiwJInBsbiIsCQkicG4iKSwKKwlURChOdW1fU3RyX1N0ciwgInBrZXlfcGxhYiIsCSJwZnhsIiwJCSJ4bCIpLAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YWJsZSk7IG4rKykgeworCWlmICghc3RyY21wKG5hbWUsIHRhYmxlW25dLm5hbWUpKSB7CisJICAgIHJlc3VsdCA9IHRhYmxlW25dLmNvZGU7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3Byb2dzL3RwYXJtX3R5cGUuaCBiL3Byb2dzL3RwYXJtX3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTQzMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvcHJvZ3MvdHBhcm1fdHlwZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiAkSWQ6IHRwYXJtX3R5cGUuaCx2IDEuMSAyMDE0LzA1LzIxIDE2OjU3OjU2IHRvbSBFeHAgJAorICoKKyAqIGRldGVybWluZSBleHBlY3RlZC9hY3R1YWwgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gc2V0dXAgZm9yIHRwYXJtCisgKi8KKyNpZm5kZWYgVFBBUk1fVFlQRV9ICisjZGVmaW5lIFRQQVJNX1RZUEVfSCAxCisKKyNkZWZpbmUgVVNFX0xJQlRJTkZPCisjaW5jbHVkZSA8cHJvZ3MucHJpdi5oPgorCit0eXBlZGVmIGVudW0geworICAgIE51bWJlcnMgPSAwCisgICAgLE51bV9TdHIKKyAgICAsTnVtX1N0cl9TdHIKK30gVFBhcmFtczsKKworZXh0ZXJuIFRQYXJhbXMgdHBhcm1fdHlwZShjb25zdCBjaGFyICpuYW1lKTsKKworI2VuZGlmIC8qIFRQQVJNX1RZUEVfSCAqLwpkaWZmIC0tZ2l0IGEvcHJvZ3MvdHB1dCBiL3Byb2dzL3RwdXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMzMjhiY2QuLjAwMDAwMDAKLS0tIGEvcHJvZ3MvdHB1dAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Byb2dzL3RwdXQuYyBiL3Byb2dzL3RwdXQuYwppbmRleCAwMjJkNDk0Li5mMjVjYmFmIDEwMDY0NAotLS0gYS9wcm9ncy90cHV0LmMKKysrIGIvcHJvZ3MvdHB1dC5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA3LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgpAQCAtMjksNiArMjksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBBdXRob3I6IFpleWQgTS4gQmVuLUhhbGltIDx6bWJlbmhhbEBuZXRjb20uY29tPiAxOTkyLDE5OTUgICAgICAgICAgICAgICAqCiAgKiAgICAgYW5kOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIGFuZDogVGhvbWFzIEUuIERpY2tleSAgICAgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgpAQCAtMzgsOCArMzksNyBAQAogICogUm9zcyBSaWRnZSdzIG15dGluZm8gcGFja2FnZS4KICAqLwogCi0jZGVmaW5lIFVTRV9MSUJUSU5GTwotI2luY2x1ZGUgPHByb2dzLnByaXYuaD4KKyNpbmNsdWRlIDx0cGFybV90eXBlLmg+CiAKICNpZiAhUFVSRV9URVJNSU5GTwogI2luY2x1ZGUgPGR1bXBfZW50cnkuaD4KQEAgLTQ3LDE4ICs0NywxMiBAQAogI2VuZGlmCiAjaW5jbHVkZSA8dHJhbnNmb3JtLmg+CiAKLU1PRFVMRV9JRCgiJElkOiB0cHV0LmMsdiAxLjQyIDIwMDgvMDcvMTMgMTE6MDU6MTIgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB0cHV0LmMsdiAxLjUxIDIwMTUvMDUvMjMgMjM6NDI6NTUgdG9tIEV4cCAkIikKIAogI2RlZmluZSBQVVRTKHMpCQlmcHV0cyhzLCBzdGRvdXQpCiAjZGVmaW5lIFBVVENIQVIoYykJcHV0Y2hhcihjKQogI2RlZmluZSBGTFVTSAkJZmZsdXNoKHN0ZG91dCkKIAotdHlwZWRlZiBlbnVtIHsKLSAgICBOdW1iZXJzID0gMAotICAgICxOdW1fU3RyCi0gICAgLE51bV9TdHJfU3RyCi19IFRQYXJhbXM7Ci0KIHN0YXRpYyBjaGFyICpwcmdfbmFtZTsKIHN0YXRpYyBib29sIGlzX2luaXQgPSBGQUxTRTsKIHN0YXRpYyBib29sIGlzX3Jlc2V0ID0gRkFMU0U7CkBAIC04Niw0NCArODAsOCBAQAogc3RhdGljIHZvaWQKIGNoZWNrX2FsaWFzZXMoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBpc19pbml0ID0gKHN0cmNtcChuYW1lLCBQUk9HX0lOSVQpID09IDApOwotICAgIGlzX3Jlc2V0ID0gKHN0cmNtcChuYW1lLCBQUk9HX1JFU0VUKSA9PSAwKTsKLX0KLQotLyoKLSAqIExvb2t1cCB0aGUgdHlwZSBvZiBjYWxsIHdlIHNob3VsZCBtYWtlIHRvIHRwYXJtKCkuICBUaGlzIGlnbm9yZXMgdGhlIGFjdHVhbAotICogdGVybWluZm8gY2FwYWJpbGl0eSAoYmFkLCBiZWNhdXNlIGl0IGlzIG5vdCBleHRlbnNpYmxlKSwgYnV0IG1ha2VzIHRoaXMKLSAqIGNvZGUgcG9ydGFibGUgdG8gcGxhdGZvcm1zIHdoZXJlIHNpemVvZihpbnQpICE9IHNpemVvZihjaGFyICopLgotICoKLSAqIEZJWE1FOiBJZiB3ZSB3YW50IGV4dGVuc2liaWxpdHksIGFuYWx5emUgdGhlIGNhcGFiaWxpdHkgc3RyaW5nIGFzIHdlIGRvCi0gKiBpbiB0cGFybSgpIHRvIGRlY2lkZSBob3cgdG8gcGFyc2UgdGhlIHZhcmFyZ3MgbGlzdC4KLSAqLwotc3RhdGljIFRQYXJhbXMKLXRwYXJtX3R5cGUoY29uc3QgY2hhciAqbmFtZSkKLXsKLSNkZWZpbmUgVEQoY29kZSwgbG9uZ25hbWUsIHRpLCB0Yykge2NvZGUsbG9uZ25hbWV9LHtjb2RlLHRpfSx7Y29kZSx0Y30KLSAgICBUUGFyYW1zIHJlc3VsdCA9IE51bWJlcnM7Ci0gICAgLyogKklOREVOVC1PRkYqICovCi0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Ci0JVFBhcmFtcyBjb2RlOwotCWNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgfSB0YWJsZVtdID0gewotCVREKE51bV9TdHIsCSJwa2V5X2tleSIsCSJwZmtleSIsCSJwayIpLAotCVREKE51bV9TdHIsCSJwa2V5X2xvY2FsIiwJInBmbG9jIiwJInBsIiksCi0JVEQoTnVtX1N0ciwJInBrZXlfeG1pdCIsCSJwZngiLAkJInB4IiksCi0JVEQoTnVtX1N0ciwJInBsYWJfbm9ybSIsCSJwbG4iLAkJInBuIiksCi0JVEQoTnVtX1N0cl9TdHIsICJwa2V5X3BsYWIiLAkicGZ4bCIsCQkieGwiKSwKLSAgICB9OwotICAgIC8qICpJTkRFTlQtT04qICovCi0KLSAgICB1bnNpZ25lZCBuOwotICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyBuKyspIHsKLQlpZiAoIXN0cmNtcChuYW1lLCB0YWJsZVtuXS5uYW1lKSkgewotCSAgICByZXN1bHQgPSB0YWJsZVtuXS5jb2RlOwotCSAgICBicmVhazsKLQl9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgaXNfaW5pdCA9IHNhbWVfcHJvZ3JhbShuYW1lLCBQUk9HX0lOSVQpOworICAgIGlzX3Jlc2V0ID0gc2FtZV9wcm9ncmFtKG5hbWUsIFBST0dfUkVTRVQpOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTMsMTMgKzExMSwxNiBAQAogICAgIGludCBpLCBqLCBjOwogICAgIGludCBzdGF0dXM7CiAgICAgRklMRSAqZjsKKyNpZiAhUFVSRV9URVJNSU5GTworICAgIGJvb2wgdGVybWNhcCA9IEZBTFNFOworI2VuZGlmCiAKICAgICBpZiAoKG5hbWUgPSBhcmd2WzBdKSA9PSAwKQogCW5hbWUgPSAiIjsKICAgICBjaGVja19hbGlhc2VzKG5hbWUpOwogICAgIGlmIChpc19yZXNldCB8fCBpc19pbml0KSB7CiAJaWYgKGluaXRfcHJvZyAhPSAwKSB7Ci0JICAgIHN5c3RlbShpbml0X3Byb2cpOworCSAgICBJR05PUkVfUkMoc3lzdGVtKGluaXRfcHJvZykpOwogCX0KIAlGTFVTSDsKIApAQCAtMjY1LDQwICsyMjYsNDUgQEAKIAlyZXR1cm4gMDsKICAgICB9CiAjaWYgIVBVUkVfVEVSTUlORk8KLSAgICB7Ci0JY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKm5wOwotCi0JaWYgKChucCA9IF9uY19maW5kX2VudHJ5KG5hbWUsIF9uY19nZXRfaGFzaF90YWJsZSgxKSkpICE9IDApCi0JICAgIHN3aXRjaCAobnAtPm50ZV90eXBlKSB7Ci0JICAgIGNhc2UgQk9PTEVBTjoKLQkJaWYgKGJvb2xfZnJvbV90ZXJtY2FwW25wLT5udGVfaW5kZXhdKQotCQkgICAgbmFtZSA9IGJvb2xuYW1lc1tucC0+bnRlX2luZGV4XTsKLQkJYnJlYWs7Ci0KLQkgICAgY2FzZSBOVU1CRVI6Ci0JCWlmIChudW1fZnJvbV90ZXJtY2FwW25wLT5udGVfaW5kZXhdKQotCQkgICAgbmFtZSA9IG51bW5hbWVzW25wLT5udGVfaW5kZXhdOwotCQlicmVhazsKLQotCSAgICBjYXNlIFNUUklORzoKLQkJaWYgKHN0cl9mcm9tX3Rlcm1jYXBbbnAtPm50ZV9pbmRleF0pCi0JCSAgICBuYW1lID0gc3RybmFtZXNbbnAtPm50ZV9pbmRleF07Ci0JCWJyZWFrOwotCSAgICB9Ci0gICAgfQorICByZXRyeToKICNlbmRpZgotCiAgICAgaWYgKChzdGF0dXMgPSB0aWdldGZsYWcobmFtZSkpICE9IC0xKSB7CiAJcmV0dXJuIGV4aXRfY29kZShCT09MRUFOLCBzdGF0dXMpOwogICAgIH0gZWxzZSBpZiAoKHN0YXR1cyA9IHRpZ2V0bnVtKG5hbWUpKSAhPSBDQU5DRUxMRURfTlVNRVJJQykgewogCSh2b2lkKSBwcmludGYoIiVkXG4iLCBzdGF0dXMpOwogCXJldHVybiBleGl0X2NvZGUoTlVNQkVSLCAwKTsKICAgICB9IGVsc2UgaWYgKChzID0gdGlnZXRzdHIobmFtZSkpID09IENBTkNFTExFRF9TVFJJTkcpIHsKKyNpZiAhUFVSRV9URVJNSU5GTworCWlmICghdGVybWNhcCkgeworCSAgICBjb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqbnA7CisKKwkgICAgdGVybWNhcCA9IFRSVUU7CisJICAgIGlmICgobnAgPSBfbmNfZmluZF9lbnRyeShuYW1lLCBfbmNfZ2V0X2hhc2hfdGFibGUodGVybWNhcCkpKSAhPSAwKSB7CisJCXN3aXRjaCAobnAtPm50ZV90eXBlKSB7CisJCWNhc2UgQk9PTEVBTjoKKwkJICAgIGlmIChib29sX2Zyb21fdGVybWNhcFtucC0+bnRlX2luZGV4XSkKKwkJCW5hbWUgPSBib29sbmFtZXNbbnAtPm50ZV9pbmRleF07CisJCSAgICBicmVhazsKKworCQljYXNlIE5VTUJFUjoKKwkJICAgIGlmIChudW1fZnJvbV90ZXJtY2FwW25wLT5udGVfaW5kZXhdKQorCQkJbmFtZSA9IG51bW5hbWVzW25wLT5udGVfaW5kZXhdOworCQkgICAgYnJlYWs7CisKKwkJY2FzZSBTVFJJTkc6CisJCSAgICBpZiAoc3RyX2Zyb21fdGVybWNhcFtucC0+bnRlX2luZGV4XSkKKwkJCW5hbWUgPSBzdHJuYW1lc1tucC0+bnRlX2luZGV4XTsKKwkJICAgIGJyZWFrOworCQl9CisJCWdvdG8gcmV0cnk7CisJICAgIH0KKwl9CisjZW5kaWYKIAlxdWl0KDQsICJ1bmtub3duIHRlcm1pbmZvIGNhcGFiaWxpdHkgJyVzJyIsIG5hbWUpOwogICAgIH0gZWxzZSBpZiAocyAhPSBBQlNFTlRfU1RSSU5HKSB7CiAJaWYgKGFyZ2MgPiAxKSB7CiAJICAgIGludCBrOwotCSAgICBpbnQgcG9wY291bnQ7CisJICAgIGludCBpZ25vcmVkOwogCSAgICBsb25nIG51bWJlcnNbMSArIE5VTV9QQVJNXTsKIAkgICAgY2hhciAqc3RyaW5nc1sxICsgTlVNX1BBUk1dOwogCSAgICBjaGFyICpwX2lzX3NbTlVNX1BBUk1dOwpAQCAtMzI5LDggKzI5NSw4IEBACiAJCWJyZWFrOwogCSAgICBjYXNlIE51bWJlcnM6CiAJICAgIGRlZmF1bHQ6Ci0JCSh2b2lkKSBfbmNfdHBhcm1fYW5hbHl6ZShzLCBwX2lzX3MsICZwb3Bjb3VudCk7Ci0jZGVmaW5lIG15UGFyYW0obikgKHBfaXNfc1tuIC0gMV0gIT0gMCA/ICgobG9uZykgc3RyaW5nc1tuXSkgOiBudW1iZXJzW25dKQorCQkodm9pZCkgX25jX3RwYXJtX2FuYWx5emUocywgcF9pc19zLCAmaWdub3JlZCk7CisjZGVmaW5lIG15UGFyYW0obikgKHBfaXNfc1tuIC0gMV0gIT0gMCA/ICgoVFBBUk1fQVJHKSBzdHJpbmdzW25dKSA6IG51bWJlcnNbbl0pCiAJCXMgPSBUUEFSTV85KHMsCiAJCQkgICAgbXlQYXJhbSgxKSwKIAkJCSAgICBteVBhcmFtKDIpLApkaWZmIC0tZ2l0IGEvcHJvZ3MvdHJhbnNmb3JtLmMgYi9wcm9ncy90cmFuc2Zvcm0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDU1N2YwCi0tLSAvZGV2L251bGwKKysrIGIvcHJvZ3MvdHJhbnNmb3JtLmMKQEAgLTAsMCArMSw3OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwLDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlIDxwcm9ncy5wcml2Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDx0cmFuc2Zvcm0uaD4KKworTU9EVUxFX0lEKCIkSWQ6IHRyYW5zZm9ybS5jLHYgMS4zIDIwMTEvMDUvMTQgMjI6NDE6MTcgdG9tIEV4cCAkIikKKworI2lmZGVmIFNVRkZJWF9JR05PUkVECitzdGF0aWMgdm9pZAordHJpbV9zdWZmaXgoY29uc3QgY2hhciAqYSwgc2l6ZV90ICpsZW4pCit7CisgICAgY29uc3QgY2hhciBpZ25vcmVbXSA9IFNVRkZJWF9JR05PUkVEOworCisgICAgaWYgKHNpemVvZihpZ25vcmUpICE9IDApIHsKKwlib29sIHRyaW0gPSBGQUxTRTsKKwlzaXplX3QgbmVlZCA9IChzaXplb2YoaWdub3JlKSAtIDEpOworCisJaWYgKCpsZW4gPiBuZWVkKSB7CisJICAgIHNpemVfdCBmaXJzdCA9ICpsZW4gLSBuZWVkOworCSAgICBzaXplX3QgbjsKKwkgICAgdHJpbSA9IFRSVUU7CisJICAgIGZvciAobiA9IGZpcnN0OyBuIDwgKmxlbjsgKytuKSB7CisJCWlmICh0b2xvd2VyKFVDaGFyKGFbbl0pKSAhPSB0b2xvd2VyKFVDaGFyKGlnbm9yZVtuIC0gZmlyc3RdKSkpIHsKKwkJICAgIHRyaW0gPSBGQUxTRTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgaWYgKHRyaW0pIHsKKwkJKmxlbiAtPSBuZWVkOworCSAgICB9CisJfQorICAgIH0KK30KKyNlbHNlCisjZGVmaW5lIHRyaW1fc3VmZml4KGEsIGxlbikJLyogbm90aGluZyAqLworI2VuZGlmCisKK2Jvb2wKK3NhbWVfcHJvZ3JhbShjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKQoreworICAgIHNpemVfdCBsZW5fYSA9IHN0cmxlbihhKTsKKyAgICBzaXplX3QgbGVuX2IgPSBzdHJsZW4oYik7CisKKyAgICB0cmltX3N1ZmZpeChhLCAmbGVuX2EpOworICAgIHRyaW1fc3VmZml4KGIsICZsZW5fYik7CisKKyAgICByZXR1cm4gKGxlbl9hID09IGxlbl9iKSAmJiAoc3RybmNtcChhLCBiLCBsZW5fYSkgPT0gMCk7Cit9CmRpZmYgLS1naXQgYS9wcm9ncy90cmFuc2Zvcm0uaCBiL3Byb2dzL3RyYW5zZm9ybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmU3ZTQzLi4wMDAwMDAwCi0tLSBhL3Byb2dzL3RyYW5zZm9ybS5oCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jZGVmaW5lIFBST0dfQ0FQVE9JTkZPICJjYXB0b2luZm8iCi0jZGVmaW5lIFBST0dfSU5GT1RPQ0FQICJpbmZvdG9jYXAiCi0jZGVmaW5lIFBST0dfUkVTRVQgICAgICJyZXNldCIKLSNkZWZpbmUgUFJPR19JTklUICAgICAgImluaXQiCmRpZmYgLS1naXQgYS9wcm9ncy90c2V0IGIvcHJvZ3MvdHNldApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGFiMGI5Ny4uMDAwMDAwMAotLS0gYS9wcm9ncy90c2V0CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcHJvZ3MvdHNldC5jIGIvcHJvZ3MvdHNldC5jCmluZGV4IDZhNGQyZDYuLjlhMDViM2QgMTAwNjQ0Ci0tLSBhL3Byb2dzL3RzZXQuYworKysgYi9wcm9ncy90c2V0LmMKQEAgLTEsNSArMSw1IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCkBAIC0zMyw2ICszMywyMiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCisgKiBOb3RlczoKKyAqIFRoZSBpbml0aWFsIGFkYXB0YXRpb24gZnJvbSA0LjRCU0QgTGl0ZSBzb3VyY2VzIGluIFNlcHRlbWJlciAxOTk1IHVzZWQgNjg2CisgKiBsaW5lcyBmcm9tIHRoYXQgdmVyc2lvbiwgYW5kIG1hZGUgY2hhbmdlcy9hZGRpdGlvbnMgZm9yIDE1MCBsaW5lcy4gIFRoZXJlCisgKiB3YXMgbm8gcmVmb3JtYXR0aW5nLCBzbyB3aXRoL3dpdGhvdXQgaWdub3Jpbmcgd2hpdGVzcGFjZSwgdGhlIGFtb3VudCBvZgorICogY2hhbmdlIGlzIHRoZSBzYW1lLgorICoKKyAqIENvbXBhcmluZyB3aXRoIGN1cnJlbnQgKDIwMDkpIHNvdXJjZSwgZXhjbHVkaW5nIHRoaXMgY29tbWVudDoKKyAqIGEpIDIwOSBsaW5lcyBtYXRjaCBpZGVudGljYWxseSB0byB0aGUgNC40QlNEIExpdGUgc291cmNlcywgd2l0aCA3NzEgbGluZXMKKyAqICAgIGNoYW5nZWQvYWRkZWQuCisgKiBhKSBJZ25vcmluZyB3aGl0ZXNwYWNlLCB0aGUgY3VycmVudCB2ZXJzaW9uIHN0aWxsIHVzZXMgNTE2IGxpbmVzIGZyb20gdGhlCisgKiAgICA0LjRCU0QgTGl0ZSBzb3VyY2VzLCB3aXRoIDQwMiBsaW5lcyBjaGFuZ2VkL2FkZGVkLgorICoKKyAqIFJheW1vbmQncyBvcmlnaW5hbCBjb21tZW50IG9uIHRoaXMgZm9sbG93cy4uLgorICovCisKKy8qCiAgKiB0c2V0LmMgLSB0ZXJtaW5hbCBpbml0aWFsaXphdGlvbiB1dGlsaXR5CiAgKgogICogVGhpcyBjb2RlIHdhcyBtb3N0bHkgc3dpcGVkIGZyb20gNC40QlNEIHRzZXQsIHdpdGggc29tZSBvYnNvbGVzY2VudApAQCAtNTIsMTEgKzY4LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBVbml2ZXJzaXR5IG9mCi0gKglDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KLSAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwogICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCkBAIC0xMDcsNyArMTE5LDcgQEAKICNpbmNsdWRlIDxkdW1wX2VudHJ5Lmg+CiAjaW5jbHVkZSA8dHJhbnNmb3JtLmg+CiAKLU1PRFVMRV9JRCgiJElkOiB0c2V0LmMsdiAxLjc2IDIwMDgvMTAvMTEgMTk6MjY6MTkgdG9tIEV4cCAkIikKK01PRFVMRV9JRCgiJElkOiB0c2V0LmMsdiAxLjk2IDIwMTUvMDQvMTIgMTU6MzY6MDYgdG9tIEV4cCAkIikKIAogLyoKICAqIFNDTyBkZWZpbmVzIFRJT0NHU0laRSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc3RydWN0LiAgT3RoZXIgc3lzdGVtcyAoU3VuT1MsCkBAIC0xMjksMTEgKzE0MSwxNyBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpZm5kZWYgZW52aXJvbgogZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworI2VuZGlmCiAKICN1bmRlZiBDVFJMCiAjZGVmaW5lIENUUkwoeCkJKCh4KSAmIDB4MWYpCiAKK3N0YXRpYyB2b2lkIGZhaWxlZChjb25zdCBjaGFyICopIEdDQ19OT1JFVFVSTjsKK3N0YXRpYyB2b2lkIGV4aXRfZXJyb3Iodm9pZCkgR0NDX05PUkVUVVJOOworc3RhdGljIHZvaWQgZXJyKGNvbnN0IGNoYXIgKiwuLi4pIEdDQ19OT1JFVFVSTjsKKwogY29uc3QgY2hhciAqX25jX3Byb2duYW1lID0gInRzZXQiOwogCiBzdGF0aWMgVFRZIG1vZGUsIG9sZG1vZGUsIG9yaWdpbmFsOwpAQCAtMTQ2LDcgKzE2NCwxMCBAQAogc3RhdGljIGludCB0ZXJhc2VjaGFyID0gLTE7CS8qIG5ldyBlcmFzZSBjaGFyYWN0ZXIgKi8KIHN0YXRpYyBpbnQgaW50cmNoYXIgPSAtMTsJLyogbmV3IGludGVycnVwdCBjaGFyYWN0ZXIgKi8KIHN0YXRpYyBpbnQgdGtpbGxjaGFyID0gLTE7CS8qIG5ldyBraWxsIGNoYXJhY3RlciAqLworCisjaWYgSEFWRV9TSVpFQ0hBTkdFCiBzdGF0aWMgaW50IHRsaW5lcywgdGNvbHVtbnM7CS8qIHdpbmRvdyBzaXplICovCisjZW5kaWYKIAogI2RlZmluZSBMT1dFUkNBU0UoYykgKChpc2FscGhhKFVDaGFyKGMpKSAmJiBpc3VwcGVyKFVDaGFyKGMpKSkgPyB0b2xvd2VyKFVDaGFyKGMpKSA6IChjKSkKIApAQCAtMTg5LDEzICsyMTAsMTMgQEAKIGZhaWxlZChjb25zdCBjaGFyICptc2cpCiB7CiAgICAgY2hhciB0ZW1wW0JVRlNJWl07Ci0gICAgdW5zaWduZWQgbGVuID0gc3RybGVuKF9uY19wcm9nbmFtZSkgKyAyOworICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oX25jX3Byb2duYW1lKSArIDI7CiAKICAgICBpZiAoKGludCkgbGVuIDwgKGludCkgc2l6ZW9mKHRlbXApIC0gMTIpIHsKLQlzdHJjcHkodGVtcCwgX25jX3Byb2duYW1lKTsKLQlzdHJjYXQodGVtcCwgIjogIik7CisJX25jX1NUUkNQWSh0ZW1wLCBfbmNfcHJvZ25hbWUsIHNpemVvZih0ZW1wKSk7CisJX25jX1NUUkNBVCh0ZW1wLCAiOiAiLCBzaXplb2YodGVtcCkpOwogICAgIH0gZWxzZSB7Ci0Jc3RyY3B5KHRlbXAsICJ0c2V0OiAiKTsKKwlfbmNfU1RSQ1BZKHRlbXAsICJ0c2V0OiAiLCBzaXplb2YodGVtcCkpOwogICAgIH0KICAgICBwZXJyb3Ioc3RybmNhdCh0ZW1wLCBtc2csIHNpemVvZih0ZW1wKSAtIHN0cmxlbih0ZW1wKSAtIDIpKTsKICAgICBleGl0X2Vycm9yKCk7CkBAIC0yODYsODcgKzMwNyw4OSBAQAogCiBzdGF0aWMgTUFQICpjdXIsICptYXBsaXN0OwogCisjZGVmaW5lIERBVEEobmFtZSx2YWx1ZSkgeyB7IG5hbWUgfSwgdmFsdWUgfQorCiB0eXBlZGVmIHN0cnVjdCBzcGVlZHMgewotICAgIGNvbnN0IGNoYXIgKnN0cmluZzsKKyAgICBjb25zdCBjaGFyIHN0cmluZ1s3XTsKICAgICBpbnQgc3BlZWQ7CiB9IFNQRUVEUzsKIAogc3RhdGljIGNvbnN0IFNQRUVEUyBzcGVlZHNbXSA9CiB7Ci0gICAgeyIwIiwgQjB9LAotICAgIHsiNTAiLCBCNTB9LAotICAgIHsiNzUiLCBCNzV9LAotICAgIHsiMTEwIiwgQjExMH0sCi0gICAgeyIxMzQiLCBCMTM0fSwKLSAgICB7IjEzNC41IiwgQjEzNH0sCi0gICAgeyIxNTAiLCBCMTUwfSwKLSAgICB7IjIwMCIsIEIyMDB9LAotICAgIHsiMzAwIiwgQjMwMH0sCi0gICAgeyI2MDAiLCBCNjAwfSwKLSAgICB7IjEyMDAiLCBCMTIwMH0sCi0gICAgeyIxODAwIiwgQjE4MDB9LAotICAgIHsiMjQwMCIsIEIyNDAwfSwKLSAgICB7IjQ4MDAiLCBCNDgwMH0sCi0gICAgeyI5NjAwIiwgQjk2MDB9LAorICAgIERBVEEoIjAiLCBCMCksCisgICAgREFUQSgiNTAiLCBCNTApLAorICAgIERBVEEoIjc1IiwgQjc1KSwKKyAgICBEQVRBKCIxMTAiLCBCMTEwKSwKKyAgICBEQVRBKCIxMzQiLCBCMTM0KSwKKyAgICBEQVRBKCIxMzQuNSIsIEIxMzQpLAorICAgIERBVEEoIjE1MCIsIEIxNTApLAorICAgIERBVEEoIjIwMCIsIEIyMDApLAorICAgIERBVEEoIjMwMCIsIEIzMDApLAorICAgIERBVEEoIjYwMCIsIEI2MDApLAorICAgIERBVEEoIjEyMDAiLCBCMTIwMCksCisgICAgREFUQSgiMTgwMCIsIEIxODAwKSwKKyAgICBEQVRBKCIyNDAwIiwgQjI0MDApLAorICAgIERBVEEoIjQ4MDAiLCBCNDgwMCksCisgICAgREFUQSgiOTYwMCIsIEI5NjAwKSwKICAgICAvKiBzZ3R0eWIgbWF5IGRlZmluZSB1cCB0byB0aGlzIHBvaW50ICovCiAjaWZkZWYgQjE5MjAwCi0gICAgeyIxOTIwMCIsIEIxOTIwMH0sCisgICAgREFUQSgiMTkyMDAiLCBCMTkyMDApLAogI2VuZGlmCiAjaWZkZWYgQjM4NDAwCi0gICAgeyIzODQwMCIsIEIzODQwMH0sCisgICAgREFUQSgiMzg0MDAiLCBCMzg0MDApLAogI2VuZGlmCiAjaWZkZWYgQjE5MjAwCi0gICAgeyIxOTIwMCIsIEIxOTIwMH0sCisgICAgREFUQSgiMTkyMDAiLCBCMTkyMDApLAogI2VuZGlmCiAjaWZkZWYgQjM4NDAwCi0gICAgeyIzODQwMCIsIEIzODQwMH0sCisgICAgREFUQSgiMzg0MDAiLCBCMzg0MDApLAogI2VuZGlmCiAjaWZkZWYgQjE5MjAwCi0gICAgeyIxOTIwMCIsIEIxOTIwMH0sCisgICAgREFUQSgiMTkyMDAiLCBCMTkyMDApLAogI2Vsc2UKICNpZmRlZiBFWFRBCi0gICAgeyIxOTIwMCIsIEVYVEF9LAorICAgIERBVEEoIjE5MjAwIiwgRVhUQSksCiAjZW5kaWYKICNlbmRpZgogI2lmZGVmIEIzODQwMAotICAgIHsiMzg0MDAiLCBCMzg0MDB9LAorICAgIERBVEEoIjM4NDAwIiwgQjM4NDAwKSwKICNlbHNlCiAjaWZkZWYgRVhUQgotICAgIHsiMzg0MDAiLCBFWFRCfSwKKyAgICBEQVRBKCIzODQwMCIsIEVYVEIpLAogI2VuZGlmCiAjZW5kaWYKICNpZmRlZiBCNTc2MDAKLSAgICB7IjU3NjAwIiwgQjU3NjAwfSwKKyAgICBEQVRBKCI1NzYwMCIsIEI1NzYwMCksCiAjZW5kaWYKICNpZmRlZiBCMTE1MjAwCi0gICAgeyIxMTUyMDAiLCBCMTE1MjAwfSwKKyAgICBEQVRBKCIxMTUyMDAiLCBCMTE1MjAwKSwKICNlbmRpZgogI2lmZGVmIEIyMzA0MDAKLSAgICB7IjIzMDQwMCIsIEIyMzA0MDB9LAorICAgIERBVEEoIjIzMDQwMCIsIEIyMzA0MDApLAogI2VuZGlmCiAjaWZkZWYgQjQ2MDgwMAotICAgIHsiNDYwODAwIiwgQjQ2MDgwMH0sCisgICAgREFUQSgiNDYwODAwIiwgQjQ2MDgwMCksCiAjZW5kaWYKLSAgICB7KGNoYXIgKikgMCwgMH0KIH07CisjdW5kZWYgREFUQQogCiBzdGF0aWMgaW50CiB0YmF1ZHJhdGUoY2hhciAqcmF0ZSkKIHsKLSAgICBjb25zdCBTUEVFRFMgKnNwOwotICAgIGludCBmb3VuZCA9IEZBTFNFOworICAgIGNvbnN0IFNQRUVEUyAqc3AgPSAwOworICAgIHNpemVfdCBuOwogCiAgICAgLyogVGhlIGJhdWRyYXRlIG51bWJlciBjYW4gYmUgcHJlY2VkZWQgYnkgYSAnQicsIHdoaWNoIGlzIGlnbm9yZWQuICovCiAgICAgaWYgKCpyYXRlID09ICdCJykKIAkrK3JhdGU7CiAKLSAgICBmb3IgKHNwID0gc3BlZWRzOyBzcC0+c3RyaW5nOyArK3NwKSB7Ci0JaWYgKCFDYXNlbGVzc0NtcChyYXRlLCBzcC0+c3RyaW5nKSkgewotCSAgICBmb3VuZCA9IFRSVUU7CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihzcGVlZHMpOyArK24pIHsKKwlpZiAoIUNhc2VsZXNzQ21wKHJhdGUsIHNwZWVkc1tuXS5zdHJpbmcpKSB7CisJICAgIHNwID0gc3BlZWRzICsgbjsKIAkgICAgYnJlYWs7CiAJfQogICAgIH0KLSAgICBpZiAoIWZvdW5kKQorICAgIGlmIChzcCA9PSAwKQogCWVycigidW5rbm93biBiYXVkIHJhdGUgJXMiLCByYXRlKTsKICAgICByZXR1cm4gKHNwLT5zcGVlZCk7CiB9CkBAIC0zODUsOSArNDA4LDEzIEBACiAgICAgY2hhciAqYmFzZSA9IDA7CiAKICAgICBjb3B5ID0gc3RyZHVwKGFyZyk7Ci0gICAgbWFwcCA9IChNQVAgKikgbWFsbG9jKHNpemVvZihNQVApKTsKKyAgICBtYXBwID0gdHlwZU1hbGxvYyhNQVAsIDEpOwogICAgIGlmIChjb3B5ID09IDAgfHwgbWFwcCA9PSAwKQogCWZhaWxlZCgibWFsbG9jIik7CisKKyAgICBhc3NlcnQoY29weSAhPSAwKTsKKyAgICBhc3NlcnQobWFwcCAhPSAwKTsKKwogICAgIG1hcHAtPm5leHQgPSAwOwogICAgIGlmIChtYXBsaXN0ID09IDApCiAJY3VyID0gbWFwbGlzdCA9IG1hcHA7CkBAIC00NDksOSArNDc2LDYgQEAKIAltYXBwLT5zcGVlZCA9IHRiYXVkcmF0ZShwKTsKICAgICB9CiAKLSAgICBpZiAoYXJnID09IChjaGFyICopIDApCS8qIE5vbi1vcHRpb25hbCB0eXBlLiAqLwotCWdvdG8gYmFkbW9wdDsKLQogICAgIG1hcHAtPnR5cGUgPSBhcmc7CiAKICAgICAvKiBUZXJtaW5hdGUgcG9ydHR5cGUsIGlmIHNwZWNpZmllZC4gKi8KQEAgLTUwOSwxOSArNTMzLDE5IEBACiAJCW1hdGNoID0gVFJVRTsKIAkJYnJlYWs7CiAJICAgIGNhc2UgRVE6Ci0JCW1hdGNoID0gKG9zcGVlZCA9PSBtYXBwLT5zcGVlZCk7CisJCW1hdGNoID0gKChpbnQpIG9zcGVlZCA9PSBtYXBwLT5zcGVlZCk7CiAJCWJyZWFrOwogCSAgICBjYXNlIEdFOgotCQltYXRjaCA9IChvc3BlZWQgPj0gbWFwcC0+c3BlZWQpOworCQltYXRjaCA9ICgoaW50KSBvc3BlZWQgPj0gbWFwcC0+c3BlZWQpOwogCQlicmVhazsKIAkgICAgY2FzZSBHVDoKLQkJbWF0Y2ggPSAob3NwZWVkID4gbWFwcC0+c3BlZWQpOworCQltYXRjaCA9ICgoaW50KSBvc3BlZWQgPiBtYXBwLT5zcGVlZCk7CiAJCWJyZWFrOwogCSAgICBjYXNlIExFOgotCQltYXRjaCA9IChvc3BlZWQgPD0gbWFwcC0+c3BlZWQpOworCQltYXRjaCA9ICgoaW50KSBvc3BlZWQgPD0gbWFwcC0+c3BlZWQpOwogCQlicmVhazsKIAkgICAgY2FzZSBMVDoKLQkJbWF0Y2ggPSAob3NwZWVkIDwgbWFwcC0+c3BlZWQpOworCQltYXRjaCA9ICgoaW50KSBvc3BlZWQgPCBtYXBwLT5zcGVlZCk7CiAJCWJyZWFrOwogCSAgICBkZWZhdWx0OgogCQltYXRjaCA9IEZBTFNFOwpAQCAtNjEzLDEzICs2MzcsMTQgQEAKICAgICAgKiByZWFsIGVudHJ5IGZyb20gL2V0Yy90ZXJtY2FwLiAgVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGJlaW5nIGZvb2xlZAogICAgICAqIGJ5IG91dCBvZiBkYXRlIHN0dWZmIGluIHRoZSBlbnZpcm9ubWVudC4KICAgICAgKi8KLSAgZm91bmQ6aWYgKChwID0gZ2V0ZW52KCJURVJNQ0FQIikpICE9IDAgJiYgIV9uY19pc19hYnNfcGF0aChwKSkgeworICBmb3VuZDoKKyAgICBpZiAoKHAgPSBnZXRlbnYoIlRFUk1DQVAiKSkgIT0gMCAmJiAhX25jX2lzX2Fic19wYXRoKHApKSB7CiAJLyogJ3Vuc2V0ZW52KCJURVJNQ0FQIiknIGlzIG5vdCBwb3J0YWJsZS4KIAkgKiBUaGUgJ2Vudmlyb24nIGFycmF5IGlzIGJldHRlci4KIAkgKi8KIAlpbnQgbjsKIAlmb3IgKG4gPSAwOyBlbnZpcm9uW25dICE9IDA7IG4rKykgewotCSAgICBpZiAoIXN0cm5jbXAoIlRFUk1DQVA9IiwgZW52aXJvbltuXSwgOCkpIHsKKwkgICAgaWYgKCFzdHJuY21wKCJURVJNQ0FQPSIsIGVudmlyb25bbl0sIChzaXplX3QpIDgpKSB7CiAJCXdoaWxlICgoZW52aXJvbltuXSA9IGVudmlyb25bbiArIDFdKSAhPSAwKSB7CiAJCSAgICBuKys7CiAJCX0KQEAgLTcyMiw3ICs3NDcsNyBAQAogI2RlZmluZSBESVNBQkxFRCh2YWwpICAgKChpbnQpKHZhbCkgPD0gMCkKICNlbmRpZgogCi0jZGVmaW5lIENISyh2YWwsIGRmdCkgICAoRElTQUJMRUQodmFsKSA/IGRmdCA6IHZhbCkKKyNkZWZpbmUgQ0hLKHZhbCwgZGZ0KSAgICh1bnNpZ25lZCBjaGFyKSAoRElTQUJMRUQodmFsKSA/IGRmdCA6IHZhbCkKIAogc3RhdGljIGJvb2wgc2V0X3RhYnModm9pZCk7CiAKQEAgLTc3MCwxNCArNzk1LDE0IEBACiAgICAgbW9kZS5jX2NjW1ZXRVJBU0VdID0gQ0hLKG1vZGUuY19jY1tWV0VSQVNFXSwgQ1dFUkFTRSk7CiAjZW5kaWYKIAotICAgIG1vZGUuY19pZmxhZyAmPSB+KElHTkJSSyB8IFBBUk1SSyB8IElOUENLIHwgSVNUUklQIHwgSU5MQ1IgfCBJR05DUgorICAgIG1vZGUuY19pZmxhZyAmPSB+KCh1bnNpZ25lZCkgKElHTkJSSyB8IFBBUk1SSyB8IElOUENLIHwgSVNUUklQIHwgSU5MQ1IgfCBJR05DUgogI2lmZGVmIElVQ0xDCi0JCSAgICAgIHwgSVVDTEMKKwkJCQkgIHwgSVVDTEMKICNlbmRpZgogI2lmZGVmIElYQU5ZCi0JCSAgICAgIHwgSVhBTlkKKwkJCQkgIHwgSVhBTlkKICNlbmRpZgotCQkgICAgICB8IElYT0ZGKTsKKwkJCQkgIHwgSVhPRkYpKTsKIAogICAgIG1vZGUuY19pZmxhZyB8PSAoQlJLSU5UIHwgSUdOUEFSIHwgSUNSTkwgfCBJWE9OCiAjaWZkZWYgSU1BWEJFTApAQCAtNzg1LDQ0ICs4MTAsNDQgQEAKICNlbmRpZgogCSk7CiAKLSAgICBtb2RlLmNfb2ZsYWcgJj0gfigwCisgICAgbW9kZS5jX29mbGFnICY9IH4oKHVuc2lnbmVkKSAoMAogI2lmZGVmIE9MQ1VDCi0JCSAgICAgIHwgT0xDVUMKKwkJCQkgIHwgT0xDVUMKICNlbmRpZgogI2lmZGVmIE9DUk5MCi0JCSAgICAgIHwgT0NSTkwKKwkJCQkgIHwgT0NSTkwKICNlbmRpZgogI2lmZGVmIE9OT0NSCi0JCSAgICAgIHwgT05PQ1IKKwkJCQkgIHwgT05PQ1IKICNlbmRpZgogI2lmZGVmIE9OTFJFVAotCQkgICAgICB8IE9OTFJFVAorCQkJCSAgfCBPTkxSRVQKICNlbmRpZgogI2lmZGVmIE9GSUxMCi0JCSAgICAgIHwgT0ZJTEwKKwkJCQkgIHwgT0ZJTEwKICNlbmRpZgogI2lmZGVmIE9GREVMCi0JCSAgICAgIHwgT0ZERUwKKwkJCQkgIHwgT0ZERUwKICNlbmRpZgogI2lmZGVmIE5MRExZCi0JCSAgICAgIHwgTkxETFkKKwkJCQkgIHwgTkxETFkKICNlbmRpZgogI2lmZGVmIENSRExZCi0JCSAgICAgIHwgQ1JETFkKKwkJCQkgIHwgQ1JETFkKICNlbmRpZgogI2lmZGVmIFRBQkRMWQotCQkgICAgICB8IFRBQkRMWQorCQkJCSAgfCBUQUJETFkKICNlbmRpZgogI2lmZGVmIEJTRExZCi0JCSAgICAgIHwgQlNETFkKKwkJCQkgIHwgQlNETFkKICNlbmRpZgogI2lmZGVmIFZURExZCi0JCSAgICAgIHwgVlRETFkKKwkJCQkgIHwgVlRETFkKICNlbmRpZgogI2lmZGVmIEZGRExZCi0JCSAgICAgIHwgRkZETFkKKwkJCQkgIHwgRkZETFkKICNlbmRpZgotCSk7CisJCSAgICAgICkpOwogCiAgICAgbW9kZS5jX29mbGFnIHw9IChPUE9TVAogI2lmZGVmIE9OTENSCkBAIC04MzAsMTkgKzg1NSwxOSBAQAogI2VuZGlmCiAJKTsKIAotICAgIG1vZGUuY19jZmxhZyAmPSB+KENTSVpFIHwgQ1NUT1BCIHwgUEFSRU5CIHwgUEFST0REIHwgQ0xPQ0FMKTsKKyAgICBtb2RlLmNfY2ZsYWcgJj0gfigodW5zaWduZWQpIChDU0laRSB8IENTVE9QQiB8IFBBUkVOQiB8IFBBUk9ERCB8IENMT0NBTCkpOwogICAgIG1vZGUuY19jZmxhZyB8PSAoQ1M4IHwgQ1JFQUQpOwotICAgIG1vZGUuY19sZmxhZyAmPSB+KEVDSE9OTCB8IE5PRkxTSAorICAgIG1vZGUuY19sZmxhZyAmPSB+KCh1bnNpZ25lZCkgKEVDSE9OTCB8IE5PRkxTSAogI2lmZGVmIFRPU1RPUAotCQkgICAgICB8IFRPU1RPUAorCQkJCSAgfCBUT1NUT1AKICNlbmRpZgogI2lmZGVmIEVDSE9QVFIKLQkJICAgICAgfCBFQ0hPUFJUCisJCQkJICB8IEVDSE9QUlQKICNlbmRpZgogI2lmZGVmIFhDQVNFCi0JCSAgICAgIHwgWENBU0UKKwkJCQkgIHwgWENBU0UKICNlbmRpZgotCSk7CisJCSAgICAgICkpOwogCiAgICAgbW9kZS5jX2xmbGFnIHw9IChJU0lHIHwgSUNBTk9OIHwgRUNITyB8IEVDSE9FIHwgRUNIT0sKICNpZmRlZiBFQ0hPQ1RMCkBAIC04ODksMTQgKzkxNCwyMyBAQAogc2V0X2NvbnRyb2xfY2hhcnModm9pZCkKIHsKICNpZmRlZiBURVJNSU9TCi0gICAgaWYgKERJU0FCTEVEKG1vZGUuY19jY1tWRVJBU0VdKSB8fCB0ZXJhc2VjaGFyID49IDApCi0JbW9kZS5jX2NjW1ZFUkFTRV0gPSAodGVyYXNlY2hhciA+PSAwKSA/IHRlcmFzZWNoYXIgOiBkZWZhdWx0X2VyYXNlKCk7CisgICAgaWYgKERJU0FCTEVEKG1vZGUuY19jY1tWRVJBU0VdKSB8fCB0ZXJhc2VjaGFyID49IDApIHsKKwltb2RlLmNfY2NbVkVSQVNFXSA9IFVDaGFyKCh0ZXJhc2VjaGFyID49IDApCisJCQkJICA/IHRlcmFzZWNoYXIKKwkJCQkgIDogZGVmYXVsdF9lcmFzZSgpKTsKKyAgICB9CiAKLSAgICBpZiAoRElTQUJMRUQobW9kZS5jX2NjW1ZJTlRSXSkgfHwgaW50cmNoYXIgPj0gMCkKLQltb2RlLmNfY2NbVklOVFJdID0gKGludHJjaGFyID49IDApID8gaW50cmNoYXIgOiBDSU5UUjsKKyAgICBpZiAoRElTQUJMRUQobW9kZS5jX2NjW1ZJTlRSXSkgfHwgaW50cmNoYXIgPj0gMCkgeworCW1vZGUuY19jY1tWSU5UUl0gPSBVQ2hhcigoaW50cmNoYXIgPj0gMCkKKwkJCQkgPyBpbnRyY2hhcgorCQkJCSA6IENJTlRSKTsKKyAgICB9CiAKLSAgICBpZiAoRElTQUJMRUQobW9kZS5jX2NjW1ZLSUxMXSkgfHwgdGtpbGxjaGFyID49IDApCi0JbW9kZS5jX2NjW1ZLSUxMXSA9ICh0a2lsbGNoYXIgPj0gMCkgPyB0a2lsbGNoYXIgOiBDS0lMTDsKKyAgICBpZiAoRElTQUJMRUQobW9kZS5jX2NjW1ZLSUxMXSkgfHwgdGtpbGxjaGFyID49IDApIHsKKwltb2RlLmNfY2NbVktJTExdID0gVUNoYXIoKHRraWxsY2hhciA+PSAwKQorCQkJCSA/IHRraWxsY2hhcgorCQkJCSA6IENLSUxMKTsKKyAgICB9CiAjZW5kaWYKIH0KIApAQCAtOTUyLDkgKzk4Niw5IEBACiAgICAgaWYgKG5ld2xpbmUgIT0gKGNoYXIgKikgMCAmJiBuZXdsaW5lWzBdID09ICdcbicgJiYgIW5ld2xpbmVbMV0pIHsKIAkvKiBOZXdsaW5lLCBub3QgbGluZWZlZWQuICovCiAjaWZkZWYgT05MQ1IKLQltb2RlLmNfb2ZsYWcgJj0gfk9OTENSOworCW1vZGUuY19vZmxhZyAmPSB+KCh1bnNpZ25lZCkgT05MQ1IpOwogI2VuZGlmCi0JbW9kZS5jX2lmbGFnICY9IH5JQ1JOTDsKKwltb2RlLmNfaWZsYWcgJj0gfigodW5zaWduZWQpIElDUk5MKTsKICAgICB9CiAjaWZkZWYgX19PQlNPTEVURV9fCiAgICAgaWYgKHRnZXRmbGFnKCJIRCIpKQkJLyogSGFsZiBkdXBsZXguICovCkBAIC0xMDI1LDExICsxMDU5LDE4IEBACiB7CiAgICAgaWYgKHNldF90YWIgJiYgY2xlYXJfYWxsX3RhYnMpIHsKIAlpbnQgYzsKKwlpbnQgbGltID0KKyNpZiBIQVZFX1NJWkVDSEFOR0UKKwl0Y29sdW1ucworI2Vsc2UKKwljb2x1bW5zCisjZW5kaWYKKwkgOwogCiAJKHZvaWQpIHB1dGMoJ1xyJywgc3RkZXJyKTsJLyogRm9yY2UgdG8gbGVmdCBtYXJnaW4uICovCiAJdHB1dHMoY2xlYXJfYWxsX3RhYnMsIDAsIG91dGMpOwogCi0JZm9yIChjID0gODsgYyA8IHRjb2x1bW5zOyBjICs9IDgpIHsKKwlmb3IgKGMgPSA4OyBjIDwgbGltOyBjICs9IDgpIHsKIAkgICAgLyogR2V0IHRvIHRoZSByaWdodCBjb2x1bW4uICBJbiBCU0QgdHNldCwgdGhpcwogCSAgICAgKiB1c2VkIHRvIHRyeSBhIGJ1bmNoIG9mIGhhbGYtY2xldmVyIHRoaW5ncwogCSAgICAgKiB3aXRoIGN1cCBhbmQgaHBhLCBmb3IgYW4gYXZlcmFnZSBzYXZpbmcgb2YKQEAgLTExMjgsMjYgKzExNjksMjYgQEAKIHN0YXRpYyB2b2lkCiB1c2FnZSh2b2lkKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisjZGVmaW5lIERBVEEocykgcyAiXG4iCisgICAgc3RhdGljIGNvbnN0IGNoYXIgbXNnW10gPQogICAgIHsKLQkiIgotCSwiT3B0aW9uczoiCi0JLCIgIC1jICAgICAgICAgIHNldCBjb250cm9sIGNoYXJhY3RlcnMiCi0JLCIgIC1lIGNoICAgICAgIGVyYXNlIGNoYXJhY3RlciIKLQksIiAgLUkgICAgICAgICAgbm8gaW5pdGlhbGl6YXRpb24gc3RyaW5ncyIKLQksIiAgLWkgY2ggICAgICAgaW50ZXJydXB0IGNoYXJhY3RlciIKLQksIiAgLWsgY2ggICAgICAga2lsbCBjaGFyYWN0ZXIiCi0JLCIgIC1tIG1hcHBpbmcgIG1hcCBpZGVudGlmaWVyIHRvIHR5cGUiCi0JLCIgIC1RICAgICAgICAgIGRvIG5vdCBvdXRwdXQgY29udHJvbCBrZXkgc2V0dGluZ3MiCi0JLCIgIC1yICAgICAgICAgIGRpc3BsYXkgdGVybSBvbiBzdGRlcnIiCi0JLCIgIC1zICAgICAgICAgIG91dHB1dCBURVJNIHNldCBjb21tYW5kIgotCSwiICAtViAgICAgICAgICBwcmludCBjdXJzZXMtdmVyc2lvbiIKLQksIiAgLXcgICAgICAgICAgc2V0IHdpbmRvdy1zaXplIgorCURBVEEoIiIpCisJREFUQSgiT3B0aW9uczoiKQorCURBVEEoIiAgLWMgICAgICAgICAgc2V0IGNvbnRyb2wgY2hhcmFjdGVycyIpCisJREFUQSgiICAtZSBjaCAgICAgICBlcmFzZSBjaGFyYWN0ZXIiKQorCURBVEEoIiAgLUkgICAgICAgICAgbm8gaW5pdGlhbGl6YXRpb24gc3RyaW5ncyIpCisJREFUQSgiICAtaSBjaCAgICAgICBpbnRlcnJ1cHQgY2hhcmFjdGVyIikKKwlEQVRBKCIgIC1rIGNoICAgICAgIGtpbGwgY2hhcmFjdGVyIikKKwlEQVRBKCIgIC1tIG1hcHBpbmcgIG1hcCBpZGVudGlmaWVyIHRvIHR5cGUiKQorCURBVEEoIiAgLVEgICAgICAgICAgZG8gbm90IG91dHB1dCBjb250cm9sIGtleSBzZXR0aW5ncyIpCisJREFUQSgiICAtciAgICAgICAgICBkaXNwbGF5IHRlcm0gb24gc3RkZXJyIikKKwlEQVRBKCIgIC1zICAgICAgICAgIG91dHB1dCBURVJNIHNldCBjb21tYW5kIikKKwlEQVRBKCIgIC1WICAgICAgICAgIHByaW50IGN1cnNlcy12ZXJzaW9uIikKKwlEQVRBKCIgIC13ICAgICAgICAgIHNldCB3aW5kb3ctc2l6ZSIpCiAgICAgfTsKLSAgICB1bnNpZ25lZCBuOworI3VuZGVmIERBVEEKICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW29wdGlvbnNdIFt0ZXJtaW5hbF1cbiIsIF9uY19wcm9nbmFtZSk7Ci0gICAgZm9yIChuID0gMDsgbiA8IHNpemVvZih0YmwpIC8gc2l6ZW9mKHRibFswXSk7ICsrbikKLQlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIGZwdXRzKG1zZywgc3RkZXJyKTsKICAgICBleGl0X2Vycm9yKCk7CiAgICAgLyogTk9UUkVBQ0hFRCAqLwogfQpAQCAtMTI0NywxOCArMTI4OCwxOCBAQAogICAgIG9zcGVlZCA9IChOQ1VSU0VTX09TUEVFRCkgbW9kZS5zZ19vc3BlZWQ7CiAjZW5kaWYKIAotICAgIGlmICghc3RyY21wKF9uY19wcm9nbmFtZSwgUFJPR19SRVNFVCkpIHsKKyAgICBpZiAoc2FtZV9wcm9ncmFtKF9uY19wcm9nbmFtZSwgUFJPR19SRVNFVCkpIHsKIAlpc3Jlc2V0ID0gVFJVRTsKIAlyZXNldF9tb2RlKCk7CiAgICAgfQogCi0gICAgdHR5cGUgPSBnZXRfdGVybWNhcF9lbnRyeSgqYXJndik7CisgICAgKHZvaWQpIGdldF90ZXJtY2FwX2VudHJ5KCphcmd2KTsKIAogICAgIGlmICghbm9zZXQpIHsKKyNpZiBIQVZFX1NJWkVDSEFOR0UKIAl0Y29sdW1ucyA9IGNvbHVtbnM7CiAJdGxpbmVzID0gbGluZXM7CiAKLSNpZiBIQVZFX1NJWkVDSEFOR0UKIAlpZiAob3B0X3cpIHsKIAkgICAgU1RSVUNUX1dJTlNJWkUgd2luOwogCSAgICAvKiBTZXQgd2luZG93IHNpemUgaWYgbm90IHNldCBhbHJlYWR5ICovCkBAIC0xMjY2LDggKzEzMDcsOCBAQAogCSAgICBpZiAoV0lOU0laRV9ST1dTKHdpbikgPT0gMCAmJgogCQlXSU5TSVpFX0NPTFMod2luKSA9PSAwICYmCiAJCXRsaW5lcyA+IDAgJiYgdGNvbHVtbnMgPiAwKSB7Ci0JCVdJTlNJWkVfUk9XUyh3aW4pID0gdGxpbmVzOwotCQlXSU5TSVpFX0NPTFMod2luKSA9IHRjb2x1bW5zOworCQlXSU5TSVpFX1JPV1Mod2luKSA9ICh1bnNpZ25lZCBzaG9ydCkgdGxpbmVzOworCQlXSU5TSVpFX0NPTFMod2luKSA9ICh1bnNpZ25lZCBzaG9ydCkgdGNvbHVtbnM7CiAJCSh2b2lkKSBpb2N0bChTVERFUlJfRklMRU5PLCBJT0NUTF9TRVRfV0lOU0laRSwgJndpbik7CiAJICAgIH0KIAl9CmRpZmYgLS1naXQgYS90YXItY29weS5zaCBiL3Rhci1jb3B5LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZGYxYmMxLi4wMDAwMDAwCi0tLSBhL3Rhci1jb3B5LnNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotIyEvYmluL3NoCi0jICRJZDogdGFyLWNvcHkuc2gsdiAxLjUgMjAwMy8xMC8yNSAxNDo0MDowNyB0b20gRXhwICQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDE5OTgsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIwotIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCi0jIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKLSMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIwotIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCi0jIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKLSMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKLSMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKLSMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIwotIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCi0jIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIwotIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCi0jIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCi0jIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKLSMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIwotIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5Ci0jCi0jIENvcHkgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHVzaW5nICd0YXInLCBzbyB0aGF0IHRoZWlyIGRhdGVzIGFuZCBsaW5rcyBhcmUKLSMgcHJlc2VydmVkCi0jCi0jIFBhcmFtZXRlcnM6Ci0jCSQxID0gZmlsZXMgdG8gY29weQotIwkkMiA9IHNvdXJjZSBkaXJlY3RvcnkKLSMJJDMgPSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkKLSMKLSNET0lUPWVjaG8KLURPSVQ9ZXZhbAotCi1pZiB0ZXN0ICQjICE9IDMgOyB0aGVuCi0JZWNobyAiVXNhZ2U6ICQwIGZpbGVzIHNvdXJjZSB0YXJnZXQiCi0JZXhpdCAxCi1lbGlmIHRlc3QgISAtZCAiJDIiIDsgdGhlbgotCWVjaG8gIlNvdXJjZSBkaXJlY3Rvcnkgbm90IGZvdW5kOiAkMiIKLQlleGl0IDEKLWVsaWYgdGVzdCAhIC1kICIkMyIgOyB0aGVuCi0JZWNobyAiVGFyZ2V0IGRpcmVjdG9yeSBub3QgZm91bmQ6ICQzIgotCWV4aXQgMQotZmkKLQotV0Q9YHB3ZGAKLQotVE1QPSRXRC9jb3B5JCQKLQotY2QgJDIKLVRFU1Q9YGxzIC1kICQxIDI+L2Rldi9udWxsYAotaWYgdGVzdCAteiAiJFRFU1QiCi10aGVuCi0JZWNobyAiLi4uIG5vIG1hdGNoIGZvciBcIiQxXCIgaW4gJDIiCi1lbHNlCi0JZWNobyAiLi4uIGluc3RhbGxpbmcgZmlsZXMgbWF0Y2hpbmcgXCIkMVwiIGluICQyIgotCXRyYXAgInJtIC1mICRUTVAiIDAgMSAyIDUgMTUKLQlpZiAoIHRhciBjZiAkVE1QICQxICkKLQl0aGVuCi0JCWNkICQzCi0JCUxJU1Q9YHRhciB0ZiAkVE1QIDI+JjFgCi0JCSRET0lUIHJtIC1yZiAkTElTVCAyPi9kZXYvbnVsbAotCQkkRE9JVCB0YXIgeHZmICRUTVAKLQllbHNlCi0JCWVjaG8gIkNhbm5vdCBjcmVhdGUgdGFyIG9mICQxIGZpbGVzIgotCQlleGl0IDEKLQlmaQotZmkKZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUuaW4gYi90ZXN0L01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTFjN2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMTM4IEBACisjICRJZDogTWFrZWZpbGUuaW4sdiAxLjExNSAyMDE1LzA4LzA1IDIzOjE1OjQxIHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgMTk5Ni1vbgorIworIyBNYWtlZmlsZSBmb3IgbmN1cnNlcyB0ZXN0cy4KKworIyB0dXJuIG9mZiBfYWxsXyBzdWZmaXggcnVsZXM7IHdlJ2xsIGdlbmVyYXRlIG91ciBvd24KKy5TVUZGSVhFUzoKKworU0hFTEwJCT0gQFNIRUxMQAorVlBBVEgJCT0gQHNyY2RpckAKKworQFNFVF9NQUtFQAorCitkZXN0ZGlyCQk9Cit4CQk9IEBFWEVFWFRACitvCQk9IC5AT0JKRVhUQAorCitNT0RFTAkJPSAuLi9AREZUX09CSl9TVUJESVJACit0b3Bfc3JjZGlyCT0gQHRvcF9zcmNkaXJACitzcmNkaXIJCT0gQHNyY2RpckAKK3ByZWZpeAkJPSBAcHJlZml4QAorZXhlY19wcmVmaXgJPSBAZXhlY19wcmVmaXhACitkYXRhcm9vdGRpcgk9IEBkYXRhcm9vdGRpckAKKworYmluZGlyCQk9IEBiaW5kaXJACitsaWJkaXIJCT0gQGxpYmRpckAKK2luY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKK2luY2x1ZGVzdWJkaXIJPSBAaW5jbHVkZXN1YmRpckAKKworQklORElSCQk9ICQoREVTVERJUikkKGJpbmRpcikKK0xJQkRJUgkJPSAkKERFU1RESVIpJChsaWJkaXIpCitJTkNMVURFRElSCT0gJChERVNURElSKSQoaW5jbHVkZWRpcikkKGluY2x1ZGVzdWJkaXIpCisKK1BBQ0tBR0UJCT0gQFBBQ0tBR0VACisKK0xJQlRPT0wJCT0gQExJQlRPT0xACitMSUJUT09MX09QVFMJPSBATElCVE9PTF9PUFRTQAorTElCVE9PTF9DTEVBTgk9IEBMSUJfQ0xFQU5ACitMSUJUT09MX0NPTVBJTEUJPSBATElCX0NPTVBJTEVACitMSUJUT09MX0xJTksJPSBATElCX0xJTktACisKK0lOU1RBTEwJCT0gQElOU1RBTExACitJTlNUQUxMX1BST0cJPSBASU5TVEFMTF9QUk9HUkFNQAordHJhbnNmb3JtCT0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACitUUkFOU0ZPUk0JPSBzZWQgJ3MvJHgkJC8vJ3xzZWQgJyQodHJhbnNmb3JtKSd8c2VkICdzLyQkLyR4LycKKworQ1RBR1MJCT0gQENUQUdTQAorRVRBR1MJCT0gQEVUQUdTQAorCitDQwkJPSBAQ0NACitDUFAJCT0gQENQUEAKKworQ0ZMQUdTCQk9IEBDRkxBR1NAIEBFWFRSQV9DRkxBR1NACitDUFBGTEFHUwk9IC1JLiAtSSQoc3JjZGlyKSAtSS4uL3Rlc3QgLURIQVZFX0NPTkZJR19IIEBDUFBGTEFHU0AKKworQ0NGTEFHUwkJPSAkKENQUEZMQUdTKSAkKENGTEFHUykKKworQ0ZMQUdTX0xJQlRPT0wJPSAkKENDRkxBR1MpCitDRkxBR1NfTk9STUFMCT0gJChDQ0ZMQUdTKQorQ0ZMQUdTX0RFQlVHCT0gJChDQ0ZMQUdTKSBAQ0NfR19PUFRAIC1EVFJBQ0UKK0NGTEFHU19QUk9GSUxFCT0gJChDQ0ZMQUdTKSAtcGcKK0NGTEFHU19TSEFSRUQJPSAkKENDRkxBR1MpIEBDQ19TSEFSRURfT1BUU0AKKworQ0ZMQUdTX0RFRkFVTFQJPSAkKENGTEFHU19AREZUX1VQUl9NT0RFTEApCisKK1JFTF9WRVJTSU9OCT0gQGNmX2N2X3JlbF92ZXJzaW9uQAorQUJJX1ZFUlNJT04JPSBAY2ZfY3ZfYWJpX3ZlcnNpb25ACitMT0NBTF9MSUJESVIJPSBAdG9wX2J1aWxkZGlyQC9saWIKK0xPQ0FMX0xJQlMJPSBAVEVTVF9ERVBTQAorTUFUSF9MSUIJPSBATUFUSF9MSUJACitURVNUX0xJQlMJPSBAVEVTVF9MSUJTQAorCitMRAkJPSBATERACitMSU5LCQk9IEBMSU5LX1RFU1RTQCAkKExJQlRPT0xfTElOSykgJChDRkxBR1MpCisKK0xERkxBR1MJCT0gQExEX01PREVMQCBATE9DQUxfTERGTEFHU0AgQExERkxBR1NACisKK0xERkxBR1NfTElCVE9PTAk9ICQoTERGTEFHUykgJChDRkxBR1NfTElCVE9PTCkKK0xERkxBR1NfTk9STUFMCT0gJChMREZMQUdTKSAkKENGTEFHU19OT1JNQUwpCitMREZMQUdTX0RFQlVHCT0gJChMREZMQUdTKSAkKENGTEFHU19ERUJVRykKK0xERkxBR1NfUFJPRklMRQk9ICQoTERGTEFHUykgJChDRkxBR1NfUFJPRklMRSkKK0xERkxBR1NfU0hBUkVECT0gJChMREZMQUdTKSAkKENGTEFHU19TSEFSRUQpIEBMRF9TSEFSRURfT1BUU0AKKworVEVTVF9BUkdTCT0gQExERkxBR1NfU1RBVElDQCBAVEVTVF9BUkdTQCBATERGTEFHU19TSEFSRURACisKKyMgdXNlIHRoZXNlIGZvciBsaW5raW5nIHdpdGggYWxsIG9mIHRoZSBsaWJyYXJpZXMKK0xJQlNfREVGQVVMVAk9ICQoVEVTVF9BUkdTKSBATElCU0AgJChURVNUX0xJQlMpICQoTUFUSF9MSUIpCitMREZMQUdTX0RFRkFVTFQJPSAkKExERkxBR1NfQERGVF9VUFJfTU9ERUxAKSAkKExJQlNfREVGQVVMVCkKKworIyB1c2UgdGhlc2UgZm9yIGxpbmtpbmcgd2l0aCB0aGUgKG4pY3Vyc2VzIGxpYnJhcnkgYW5kIHBvc3NpYmx5IHB0aHJlYWRzCitMSUJTX1RIUkVBRFMJPSBgZWNobyAiJChURVNUX0FSR1MpIEBMSUJTQCIgfCBzZWQgLWUgJ3MvLWxmb3JtLiotbHBhbmVsW14gXSovLydgICQoVEVTVF9MSUJTKSAkKE1BVEhfTElCKSBAUFRIUkVBREAKK0xERkxBR1NfVEhSRUFEUwk9ICQoTERGTEFHU19AREZUX1VQUl9NT0RFTEApICQoTElCU19USFJFQURTKQorCisjIHVzZSB0aGVzZSBmb3IgbGlua2luZyB3aXRoIHRoZSAobiljdXJzZXMgbGlicmFyeQorTElCU19DVVJTRVMJPSBgZWNobyAiJChURVNUX0FSR1MpIEBMSUJTQCIgfCBzZWQgLWUgJ3MvLWxmb3JtLiotbHBhbmVsW14gXSovLydgICQoVEVTVF9MSUJTKSAkKE1BVEhfTElCKQorTERGTEFHU19DVVJTRVMJPSAkKExERkxBR1NfQERGVF9VUFJfTU9ERUxAKSAkKExJQlNfQ1VSU0VTKQorCisjIHVzZSB0aGVzZSBmb3IgbGlua2luZyB3aXRoIHRoZSB0aW5mbyBsaWJyYXJ5IGlmIHdlIGhhdmUgaXQsIG9yIGN1cnNlcyBsaWJyYXJ5IGlmIG5vdAorTElCU19USU5GTwk9IEBMREZMQUdTX1NUQVRJQ0AgQFRJTkZPX0xJQlNAIEBMREZMQUdTX1NIQVJFREAgQExJQlNAICQoVEVTVF9MSUJTKSAkKE1BVEhfTElCKQorTERGTEFHU19USU5GTwk9IEBUSU5GT19MREZMQUdTQCAkKExERkxBR1NfQERGVF9VUFJfTU9ERUxAKSAkKExJQlNfVElORk8pCisKK0xJTlQJCT0gQExJTlRACitMSU5UX09QVFMJPSBATElOVF9PUFRTQAorTElOVF9MSUJTCT0gLWxmb3JtIC1sbWVudSAtbHBhbmVsIC1sbmN1cnNlcyBATElCU0AKKworSEVBREVSX0RFUFMJPSBcCisJLi4vaW5jbHVkZS9jdXJzZXMuaCBcCisJLi4vaW5jbHVkZS90ZXJtLmgKKworIyBUaGUgcmVzdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgInByb2dyYW1zIiBhbmQgIm1vZHVsZXMiIGZpbGVzLi4uCmRpZmYgLS1naXQgYS90ZXN0L1JFQURNRSBiL3Rlc3QvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiY2M1NjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L1JFQURNRQpAQCAtMCwwICsxLDgyMSBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAtLQorLS0gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICAtLQorLS0gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICAtLQorLS0gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICAtLQorLS0gZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyAtLQorLS0gb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkICAtLQorLS0gdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICAtLQorLS0gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICAtLQorLS0gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICAtLQorLS0gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiAtLQorLS0gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICAgICAtLQorLS0gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICAtLQorLS0gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSAtLQorLS0gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAtLQorLS0gaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICAtLQorLS0gc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAtLQorLS0gYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gJElkOiBSRUFETUUsdiAxLjUyIDIwMTUvMDcvMTEgMTQ6MTc6MDEgdG9tIEV4cCAkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwcm9ncmFtcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmUgdXNlZCB0byB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBuY3Vyc2VzLgorU29tZSBhcmUgaW50ZXJlc3RpbmcgaW4gdGhlbXNlbHZlcywgd2hpbGUgb3RoZXJzIG1lcmVseSBzaG93IGhvdyBzb21lIG9mCit0aGUgbGlicmFyeSBjYWxscyBhcmUgdXNlZC4gIFNvbWUgZGF0ZSBiYWNrIHRvIHRoZSBpbml0aWFsIHJlbGVhc2VzIG9mCituY3Vyc2VzIGR1cmluZyB0aGUgbWlkLTE5OTBzLCBzdWNoIGFzOgorCisJYmx1ZSAgICAgICAtIEJsdWUgTW9vbiwgYSBuaWZ0eSBzb2xpdGFpcmUgKHVzZXMgY29sb3IpCisJYnMuYyAgICAgICAtIHRoZSBnYW1lIG9mIEJhdHRsZXNoaXBzICh1c2VzIGNvbG9yKQorCWZpcmV3b3JrLmMgLSBtdWx0aS1jb2xvcmVkIGZpcmV3b3JrcyAodXNlcyBjb2xvcikKKwlnZGMuYyAgICAgIC0gR3JlYXQgRGlnaXRhbCBDbG9jayAodXNlcyBjb2xvcikKKwloYW5vaS5jICAgIC0gdGhlIGdhbWUgb2YgaGFub2kgKHVzZXMgY29sb3IgZXNzZW50aWFsbHkpCisJa25pZ2h0LmMgICAtIHRoZSBnYW1lIG9mIEtuaWdodCdzIFRvdXIgKHVzZXMgY29sb3IpCisJbHJ0ZXN0LmMgICAtIHRlc3Qgb2YgYWNjZXNzIHRvIHRoZSBsb3dlci1yaWdodCBjb3JuZXIKKwluY3Vyc2VzLmMgIC0gbXVsdGktdGVzdCBwcm9ncmFtICh1c2VzIGNvbG9yKQorCW5ld2RlbW8uYyAgLSBhbm90aGVyIHRlc3QgZnJvbSBQREN1cnNlcyAodXNlcyBjb2xvcikKKwlyYWluLmMgICAgIC0gcmFpbiBkcm9wcyBrZWVwIGZhbGxpbmcgb24gbXkgaGVhZC4uLgorCXRjbG9jay5jICAgLSBhbmFsb2cvZGlnaXRhbCBjbG9jaworCXRlc3RjdXJzLmMgLSBhIHRlc3QgZnJvbSB0aGUgUERDdXJzZXMgcGVvcGxlICh1c2VzIGNvbG9yKQorCXRyYWNlbXVuY2ggLSBQZXJsIHNjcmlwdCB0byBtYWtlIHRyYWNlIHNjcmlwdHMgZWFzaWVyIHRvIHJlYWQKKwl3b3JtLmMgICAgIC0gd29ybXMgcnVuIGFsbCBvdmVyIHlvdXIgc2NyZWVuICh1c2VzIGNvbG9yKQorCXhtYXMuYyAgICAgLSBYbWFzIGdyZWV0aW5nIGNhcmQKKworQmVzaWRlcyBiZWluZyBidWlsdCBhcyBwYXJ0IG9mIG5jdXJzZXMsIHRoZSBwcm9ncmFtcyBhcmUgYWxzbyBwYWNrYWdlZCBhcworIm5jdXJzZXMtZXhhbXBsZXMiLiAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhlIHByb2dyYW1zIGhhdmUgYmVlbiBhZGp1c3RlZCB0bworYWxsb3cgdGhlbSB0byBidWlsZCB3aXRoIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMsIHRvIHByb3ZpZGUgYSB3YXkgdG8KK2NvbXBhcmUgdGhvc2Ugd2l0aCBuY3Vyc2VzLgorCitZb3UgY2FuIGJ1aWxkIHRoZSBwcm9ncmFtcyBieQorCisJLi9jb25maWd1cmUKKwltYWtlCisKK1RoZSBjb25maWd1cmUgc2NyaXB0IGhhcyBzZXZlcmFsIG9wdGlvbnMgd2hpY2ggYWxsb3cgeW91IHRvIHRlbGwgaXQgbW9yZQorYWJvdXQgdGhlIGN1cnNlcyBpbXBsZW1lbnRhdGlvbiBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgZXhhbXBsZXMuCitVc2UKKworCS4vY29uZmlndXJlIC0taGVscAorCit0byBsaXN0IHRoZSBvcHRpb25zLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIHByb2dyYW1zIHByb3ZpZGUgZXhhbXBsZXMgb2YgdXNlLCBidXQgZG8gbm90IGNvbXByaXNlIGEgY29tcGxldGUgc2V0IG9mCit0ZXN0cy4gIEhlcmUgaXMgYSBsaXN0IG9mIGxpYnJhcnkgZXh0ZXJuYWxzLCBub3RpbmcgdGhvc2UgdGhhdCBhcmUgdXNlZDoKKworCitsaWJmb3JtOgorLS0tLS0tLQorVFlQRV9BTE5VTQkJCXRlc3Q6IGRlbW9fZm9ybXMKK1RZUEVfQUxQSEEJCQl0ZXN0OiBkZW1vX2Zvcm1zIG5jdXJzZXMKK1RZUEVfRU5VTQkJCXRlc3Q6IGRlbW9fZm9ybXMKK1RZUEVfSU5URUdFUgkJCXRlc3Q6IGRlbW9fZm9ybXMKK1RZUEVfSVBWNAkJCXRlc3Q6IGRlbW9fZm9ybXMKK1RZUEVfTlVNRVJJQwkJCXRlc3Q6IGRlbW9fZm9ybXMKK1RZUEVfUkVHRVhQCQkJdGVzdDogZGVtb19mb3JtcworY3VycmVudF9maWVsZAkJCXRlc3Q6IGRlbW9fZm9ybXMgZWRpdF9maWVsZCBuY3Vyc2VzCitkYXRhX2FoZWFkCQkJdGVzdDogZGVtb19mb3JtcworZGF0YV9iZWhpbmQJCQl0ZXN0OiBkZW1vX2Zvcm1zCitkdXBfZmllbGQJCQktCitkeW5hbWljX2ZpZWxkX2luZm8JCXRlc3Q6IGRlbW9fZm9ybXMKK2ZpZWxkX2FyZwkJCXRlc3Q6IGRlbW9fZm9ybXMKK2ZpZWxkX2JhY2sJCQl0ZXN0OiBkZW1vX2Zvcm1zIGVkaXRfZmllbGQKK2ZpZWxkX2J1ZmZlcgkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZm9ybXMgbmN1cnNlcworZmllbGRfY291bnQJCQl0ZXN0OiBkZW1vX2Zvcm1zCitmaWVsZF9mb3JlCQkJdGVzdDogZGVtb19mb3JtcworZmllbGRfaW5kZXgJCQl0ZXN0OiBkZW1vX2Zvcm1zCitmaWVsZF9pbmZvCQkJdGVzdDogZWRpdF9maWVsZCBuY3Vyc2VzCitmaWVsZF9pbml0CQkJLQorZmllbGRfanVzdAkJCS0KK2ZpZWxkX29wdHMJCQl0ZXN0OiBkZW1vX2Zvcm1zIG5jdXJzZXMKK2ZpZWxkX29wdHNfb2ZmCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBmb3JtX2RyaXZlcl93CitmaWVsZF9vcHRzX29uCQkJdGVzdDogZGVtb19mb3JtcworZmllbGRfcGFkCQkJdGVzdDogZGVtb19mb3JtcworZmllbGRfc3RhdHVzCQkJdGVzdDogZGVtb19mb3JtcworZmllbGRfdGVybQkJCS0KK2ZpZWxkX3R5cGUJCQl0ZXN0OiBkZW1vX2Zvcm1zCitmaWVsZF91c2VycHRyCQkJdGVzdDogZGVtb19mb3JtcyBlZGl0X2ZpZWxkIG5jdXJzZXMKK2Zvcm1fZHJpdmVyCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBlZGl0X2ZpZWxkIG5jdXJzZXMKK2Zvcm1fZHJpdmVyX3cJCQl0ZXN0OiBmb3JtX2RyaXZlcl93Citmb3JtX2ZpZWxkcwkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZm9ybXMKK2Zvcm1faW5pdAkJCS0KK2Zvcm1fb3B0cwkJCS0KK2Zvcm1fb3B0c19vZmYJCQktCitmb3JtX29wdHNfb24JCQktCitmb3JtX3BhZ2UJCQl0ZXN0OiBkZW1vX2Zvcm1zCitmb3JtX3JlcXVlc3RfYnlfbmFtZQkJLQorZm9ybV9yZXF1ZXN0X25hbWUJCXRlc3Q6IGVkaXRfZmllbGQKK2Zvcm1fc3ViCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBuY3Vyc2VzCitmb3JtX3Rlcm0JCQktCitmb3JtX3VzZXJwdHIJCQktCitmb3JtX3dpbgkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZm9ybXMgZWRpdF9maWVsZCBuY3Vyc2VzCitmcmVlX2ZpZWxkCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBmb3JtX2RyaXZlcl93IG5jdXJzZXMKK2ZyZWVfZmllbGR0eXBlCQkJdGVzdDogbmN1cnNlcworZnJlZV9mb3JtCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBmb3JtX2RyaXZlcl93IG5jdXJzZXMKK2xpbmtfZmllbGQJCQktCitsaW5rX2ZpZWxkdHlwZQkJCS0KK21vdmVfZmllbGQJCQktCituZXdfZmllbGQJCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX2Zvcm1zIGZvcm1fZHJpdmVyX3cgbmN1cnNlcworbmV3X2ZpZWxkdHlwZQkJCXRlc3Q6IG5jdXJzZXMKK25ld19mb3JtCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBmb3JtX2RyaXZlcl93IG5jdXJzZXMKK25ld19mb3JtX3NwCQkJLQorbmV3X3BhZ2UJCQl0ZXN0OiBkZW1vX2Zvcm1zCitwb3NfZm9ybV9jdXJzb3IJCQktCitwb3N0X2Zvcm0JCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX2Zvcm1zIGZvcm1fZHJpdmVyX3cgbmN1cnNlcworc2NhbGVfZm9ybQkJCXRlc3Q6IGRlbW9fZm9ybXMgbmN1cnNlcworc2V0X2N1cnJlbnRfZmllbGQJCXRlc3Q6IGRlbW9fZm9ybXMKK3NldF9maWVsZF9iYWNrCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBlZGl0X2ZpZWxkIGZvcm1fZHJpdmVyX3cgbmN1cnNlcworc2V0X2ZpZWxkX2J1ZmZlcgkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBlZGl0X2ZpZWxkIG5jdXJzZXMKK3NldF9maWVsZF9mb3JlCQkJdGVzdDogZGVtb19mb3Jtcworc2V0X2ZpZWxkX2luaXQJCQktCitzZXRfZmllbGRfanVzdAkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZm9ybXMKK3NldF9maWVsZF9vcHRzCQkJdGVzdDogZGVtb19mb3JtcyBuY3Vyc2VzCitzZXRfZmllbGRfcGFkCQkJdGVzdDogZGVtb19mb3Jtcworc2V0X2ZpZWxkX3N0YXR1cwkJdGVzdDogZGVtb19mb3Jtcworc2V0X2ZpZWxkX3Rlcm0JCQktCitzZXRfZmllbGRfdHlwZQkJCXRlc3Q6IGRlbW9fZm9ybXMgbmN1cnNlcworc2V0X2ZpZWxkX3VzZXJwdHIJCXRlc3Q6IGVkaXRfZmllbGQgbmN1cnNlcworc2V0X2ZpZWxkdHlwZV9hcmcJCS0KK3NldF9maWVsZHR5cGVfY2hvaWNlCQktCitzZXRfZm9ybV9maWVsZHMJCQktCitzZXRfZm9ybV9pbml0CQkJLQorc2V0X2Zvcm1fb3B0cwkJCS0KK3NldF9mb3JtX3BhZ2UJCQktCitzZXRfZm9ybV9zdWIJCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX2Zvcm1zIG5jdXJzZXMKK3NldF9mb3JtX3Rlcm0JCQktCitzZXRfZm9ybV91c2VycHRyCQktCitzZXRfZm9ybV93aW4JCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX2Zvcm1zIG5jdXJzZXMKK3NldF9tYXhfZmllbGQJCQl0ZXN0OiBkZW1vX2Zvcm1zCitzZXRfbmV3X3BhZ2UJCQl0ZXN0OiBkZW1vX2Zvcm1zCit1bnBvc3RfZm9ybQkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZm9ybXMgZm9ybV9kcml2ZXJfdyBuY3Vyc2VzCisKK2xpYm1lbnU6CistLS0tLS0tCitjdXJyZW50X2l0ZW0JCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK2ZyZWVfaXRlbQkJCXRlc3Q6IG5jdXJzZXMKK2ZyZWVfbWVudQkJCXRlc3Q6IGRlbW9fbWVudXMgbmN1cnNlcworaXRlbV9jb3VudAkJCXRlc3Q6IGRlbW9fbWVudXMKK2l0ZW1fZGVzY3JpcHRpb24JCS0KK2l0ZW1faW5kZXgJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK2l0ZW1faW5pdAkJCS0KK2l0ZW1fbmFtZQkJCXRlc3Q6IGRlbW9fbWVudXMgbmN1cnNlcworaXRlbV9vcHRzCQkJLQoraXRlbV9vcHRzX29mZgkJCS0KK2l0ZW1fb3B0c19vbgkJCS0KK2l0ZW1fdGVybQkJCS0KK2l0ZW1fdXNlcnB0cgkJCXRlc3Q6IGRlbW9fbWVudXMKK2l0ZW1fdmFsdWUJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK2l0ZW1fdmlzaWJsZQkJCS0KK21lbnVfYmFjawkJCS0KK21lbnVfZHJpdmVyCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCittZW51X2ZvcmUJCQktCittZW51X2Zvcm1hdAkJCS0KK21lbnVfZ3JleQkJCS0KK21lbnVfaW5pdAkJCS0KK21lbnVfaXRlbXMJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK21lbnVfbWFyawkJCXRlc3Q6IGRlbW9fbWVudXMKK21lbnVfb3B0cwkJCS0KK21lbnVfb3B0c19vZmYJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK21lbnVfb3B0c19vbgkJCXRlc3Q6IGRlbW9fbWVudXMKK21lbnVfcGFkCQkJLQorbWVudV9wYXR0ZXJuCQkJdGVzdDogZGVtb19tZW51cworbWVudV9yZXF1ZXN0X2J5X25hbWUJCS0KK21lbnVfcmVxdWVzdF9uYW1lCQktCittZW51X3NwYWNpbmcJCQl0ZXN0OiBkZW1vX21lbnVzCittZW51X3N1YgkJCXRlc3Q6IGRlbW9fbWVudXMKK21lbnVfdGVybQkJCS0KK21lbnVfdXNlcnB0cgkJCS0KK21lbnVfd2luCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCituZXdfaXRlbQkJCXRlc3Q6IGRlbW9fbWVudXMgbmN1cnNlcworbmV3X21lbnUJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK25ld19tZW51X3NwCQkJLQorcG9zX21lbnVfY3Vyc29yCQkJbGliOiBtZW51Citwb3N0X21lbnUJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK3NjYWxlX21lbnUJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK3NldF9jdXJyZW50X2l0ZW0JCS0KK3NldF9pdGVtX2luaXQJCQl0ZXN0OiBkZW1vX21lbnVzCitzZXRfaXRlbV9vcHRzCQkJLQorc2V0X2l0ZW1fdGVybQkJCXRlc3Q6IGRlbW9fbWVudXMKK3NldF9pdGVtX3VzZXJwdHIJCXRlc3Q6IGRlbW9fbWVudXMKK3NldF9pdGVtX3ZhbHVlCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCitzZXRfbWVudV9iYWNrCQkJdGVzdDogZGVtb19tZW51cworc2V0X21lbnVfZm9yZQkJCXRlc3Q6IGRlbW9fbWVudXMKK3NldF9tZW51X2Zvcm1hdAkJCXRlc3Q6IGRlbW9fbWVudXMgbmN1cnNlcworc2V0X21lbnVfZ3JleQkJCS0KK3NldF9tZW51X2luaXQJCQl0ZXN0OiBkZW1vX21lbnVzCitzZXRfbWVudV9pdGVtcwkJCS0KK3NldF9tZW51X21hcmsJCQl0ZXN0OiBkZW1vX21lbnVzCitzZXRfbWVudV9vcHRzCQkJLQorc2V0X21lbnVfcGFkCQkJLQorc2V0X21lbnVfcGF0dGVybgkJLQorc2V0X21lbnVfc3BhY2luZwkJLQorc2V0X21lbnVfc3ViCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCitzZXRfbWVudV90ZXJtCQkJdGVzdDogZGVtb19tZW51cworc2V0X21lbnVfdXNlcnB0cgkJLQorc2V0X21lbnVfd2luCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCitzZXRfdG9wX3JvdwkJCS0KK3RvcF9yb3cJCQkJLQordW5wb3N0X21lbnUJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKKworbGlibmN1cnNlczoKKy0tLS0tLS0tLS0KK0JDCQkJCXRlc3Q6IGRlbW9fdGVybWNhcAorQ09MT1JTCQkJCXRlc3Q6IGRvdHNfY3Vyc2VzIGVjaG9jaGFyIG5jdXJzZXMgc2F2ZXNjcmVlbiB4bWFzCitDT0xPUl9QQUlSCQkJdGVzdDogYmFja2dyb3VuZCBibHVlIGJzIGNhcmRmaWxlIGNsaXBfcHJpbnR3IGRlbW9fZm9ybXMgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkb3RzX2N1cnNlcyBlY2hvY2hhciBmaWx0ZXIgZmlyZXdvcmsgZ2RjIGhhbm9pIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga25pZ2h0IG5jdXJzZXMgbmV3ZGVtbyByYWluIHNhdmVzY3JlZW4gdGNsb2NrIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0YWRkY2ggdGVzdGN1cnMgdmlldyB3b3JtIHhtYXMKK0NPTE9SX1BBSVJTCQkJdGVzdDogZG90c19jdXJzZXMgZWNob2NoYXIgbmN1cnNlcyBuZXdkZW1vIHNhdmVzY3JlZW4KK0NPTFMJCQkJdGVzdDogY2FyZGZpbGUgZGVtb19hbHRrZXlzIGRlbW9fZGVma2V5IGRlbW9fZm9ybXMgZGVtb19rZXlvayBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRpdHRvIGRvdHNfY3Vyc2VzIGVjaG9jaGFyIGVkaXRfZmllbGQgZmlyZXdvcmsgZm9sZGtleXMgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2VydHMgbHJ0ZXN0IG1vdmV3aW5kb3cgbmN1cnNlcyBuZXdkZW1vIHJhaW4gc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB2aWV3IHdvcm0KK0VTQ0RFTEFZCQkJdGVzdDogdGVzdF9vcGFxdWUKK0xJTkVTCQkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fZGVma2V5IGRlbW9fa2V5b2sgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkaXR0byBkb3RzX2N1cnNlcyBlY2hvY2hhciBlZGl0X2ZpZWxkIGZpcmV3b3JrIGhhbm9pIGhhc2h0ZXN0IGluY2hfd2lkZSBpbmNocyBpbnNfd2lkZSBpbnNlcnRzIGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgbmV3ZGVtbyByYWluIHNhdmVzY3JlZW4gdGNsb2NrIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMgdmlldyB3b3JtIHhtYXMKK1BBSVJfTlVNQkVSCQkJdGVzdDogbmN1cnNlcworUEMJCQkJdGVzdDogZGVtb190ZXJtY2FwCitTUAkJCQlsaWI6IGZvcm0KK1RBQlNJWkUJCQkJdGVzdDogdGVzdF9vcGFxdWUKK1VQCQkJCXRlc3Q6IGRlbW9fdGVybWNhcAorYWNzX21hcAkJCQl0ZXN0OiBiYWNrZ3JvdW5kIGdkYyBpbnNfd2lkZSBpbnNlcnRzIGtuaWdodCBtb3Zld2luZG93IG5jdXJzZXMgbmV3ZGVtbyBzYXZlc2NyZWVuIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0Y3VycworYWRkX3djaAkJCQl0ZXN0OiBkZW1vX3BhbmVscyBuY3Vyc2VzIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZHdzdHIKK2FkZF93Y2huc3RyCQkJdGVzdDogdGVzdF9hZGRfd2Noc3RyCithZGRfd2Noc3RyCQkJdGVzdDogdGVzdF9hZGRfd2Noc3RyIHZpZXcKK2FkZGNoCQkJCXRlc3Q6IGJhY2tncm91bmQgYmx1ZSBicyBkb3RzX2N1cnNlcyBlY2hvY2hhciBoYXNodGVzdCBuY3Vyc2VzIHNhdmVzY3JlZW4gdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3Rfb3BhcXVlIHRlc3RhZGRjaCB2aWV3IHdvcm0KK2FkZGNobnN0cgkJCXRlc3Q6IHRlc3RfYWRkY2hzdHIKK2FkZGNoc3RyCQkJdGVzdDogdGVzdF9hZGRjaHN0cgorYWRkbnN0cgkJCQl0ZXN0OiB0ZXN0X2FkZHN0cgorYWRkbndzdHIJCQl0ZXN0OiBuY3Vyc2VzIHRlc3RfYWRkd3N0cgorYWRkc3RyCQkJCXRlc3Q6IGJsdWUgYnMgY2FyZGZpbGUgZ2RjIGhhbm9pIGxydGVzdCBuY3Vyc2VzIHRlc3RfYWRkc3RyCithZGR3c3RyCQkJCXRlc3Q6IHRlc3RfYWRkd3N0cgorYXNzdW1lX2RlZmF1bHRfY29sb3JzCQl0ZXN0OiBiYWNrZ3JvdW5kIG5jdXJzZXMKK2Fzc3VtZV9kZWZhdWx0X2NvbG9yc19zcAktCithdHRyX2dldAkJCS0KK2F0dHJfb2ZmCQkJdGVzdDogbmN1cnNlcworYXR0cl9vbgkJCQl0ZXN0OiBuY3Vyc2VzCithdHRyX3NldAkJCXRlc3Q6IG5jdXJzZXMKK2F0dHJvZmYJCQkJdGVzdDogZG90c19jdXJzZXMgZWNob2NoYXIgZmlsdGVyIGdkYyBuY3Vyc2VzIHRjbG9jaworYXR0cm9uCQkJCXRlc3Q6IGJzIGRvdHNfY3Vyc2VzIGVjaG9jaGFyIGZpbHRlciBnZGMgbmN1cnNlcworYXR0cnNldAkJCQl0ZXN0OiBicyBmaXJld29yayBnZGMgaGFub2kgaW5zZGVsbG4gbmN1cnNlcyByYWluIHRjbG9jayB0ZXN0YWRkY2ggdGVzdGN1cnMKK2JhdWRyYXRlCQkJbGliOiBuY3Vyc2VzCitiYXVkcmF0ZV9zcAkJCWxpYjogbmN1cnNlcworYmVlcAkJCQl0ZXN0OiBibHVlIGJzIGNhcmRmaWxlIGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fZm9ybXMgZGVtb19tZW51cyBkZW1vX3BhbmVscyBlZGl0X2ZpZWxkIGhhbm9pIGluY2hfd2lkZSBpbmNocyBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGtuaWdodCBtb3Zld2luZG93IG5jdXJzZXMgc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB2aWV3IHhtYXMKK2JlZXBfc3AJCQkJbGliOiBuY3Vyc2VzCitia2dkCQkJCXRlc3Q6IGJhY2tncm91bmQgY2FyZGZpbGUgZGVtb19mb3JtcyBuY3Vyc2VzIHNhdmVzY3JlZW4gdGNsb2NrIHZpZXcKK2JrZ2RzZXQJCQkJdGVzdDogYmFja2dyb3VuZCBuY3Vyc2VzIHRlc3RhZGRjaAorYmtncm5kCQkJCXRlc3Q6IG5jdXJzZXMKK2JrZ3JuZHNldAkJCXRlc3Q6IG5jdXJzZXMKK2Jvb2xjb2RlcwkJCXRlc3Q6IGRlbW9fdGVybWNhcCB0ZXN0X2FycmF5cyBwcm9nczogZHVtcF9lbnRyeQorYm9vbGZuYW1lcwkJCXRlc3Q6IGRlbW9fdGVybWluZm8gdGVzdF9hcnJheXMgcHJvZ3M6IGR1bXBfZW50cnkKK2Jvb2xuYW1lcwkJCXRlc3Q6IGRlbW9fdGVybWNhcCBkZW1vX3Rlcm1pbmZvIHRlc3RfYXJyYXlzIHByb2dzOiBkdW1wX2VudHJ5IGluZm9jbXAKK2JvcmRlcgkJCQktCitib3JkZXJfc2V0CQkJLQorYm94CQkJCXRlc3Q6IGNhcmRmaWxlIGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fZm9ybXMgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkaXR0byBlZGl0X2ZpZWxkIGluY2hfd2lkZSBpbmNocyBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGxydGVzdCBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHNhdmVzY3JlZW4gdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycworYm94X3NldAkJCQl0ZXN0OiBuY3Vyc2VzCitjYW5fY2hhbmdlX2NvbG9yCQl0ZXN0OiBuY3Vyc2VzCitjYW5fY2hhbmdlX2NvbG9yX3NwCQktCitjYnJlYWsJCQkJdGVzdDogYmFja2dyb3VuZCBibHVlIGJzIGNhcmRmaWxlIGNoZ2F0IGNsaXBfcHJpbnR3IGNvbG9yX3NldCBkZW1vX2FsdGtleXMgZGVtb19kZWZrZXkgZGVtb19mb3JtcyBkZW1vX2tleW9rIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZGl0dG8gZmlsdGVyIGZpcmV3b3JrIGZvbGRrZXlzIGZvcm1fZHJpdmVyX3cgZ2RjIGhhbm9pIGhhc2h0ZXN0IGluY2hfd2lkZSBpbmNocyBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGtuaWdodCBscnRlc3QgbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcworY2JyZWFrX3NwCQkJbGliOiBuY3Vyc2VzCitjaGdhdAkJCQl0ZXN0OiBjaGdhdAorY2xlYXIJCQkJdGVzdDogYmx1ZSBicyBnZGMgbmN1cnNlcyB0ZXN0Y3VycyB4bWFzCitjbGVhcm9rCQkJCXRlc3Q6IGJzIGtuaWdodAorY2xydG9ib3QJCQl0ZXN0OiBkZW1vX21lbnVzIG5jdXJzZXMKK2NscnRvZW9sCQkJdGVzdDogYmx1ZSBicyBkZW1vX2FsdGtleXMgZm9sZGtleXMgZm9ybV9kcml2ZXJfdyBoYW5vaSBoYXNodGVzdCBtb3Zld2luZG93IG5jdXJzZXMgdmlldworY29sb3JfY29udGVudAkJCXRlc3Q6IG5jdXJzZXMKK2NvbG9yX2NvbnRlbnRfc3AJCS0KK2NvbG9yX3NldAkJCXRlc3Q6IGNvbG9yX3NldCBuY3Vyc2VzCitjb3B5d2luCQkJCXRlc3Q6IG5jdXJzZXMgdGVzdGN1cnMKK2N1cl90ZXJtCQkJdGVzdDogZGVtb190ZXJtY2FwIGRlbW9fdGVybWluZm8gZG90cyBkb3RzX212Y3VyIGxydGVzdCB0ZXN0X3ZpZF9wdXRzIHRlc3RfdmlkcHV0cyBwcm9nczogY2xlYXIgdGFicyB0cHV0IHRzZXQKK2N1cnNfc2V0CQkJdGVzdDogZWNob2NoYXIgZmlyZXdvcmsgZ2RjIGhhbm9pIGxydGVzdCBuY3Vyc2VzIG5ld2RlbW8gcmFpbiBzYXZlc2NyZWVuIHRjbG9jayB0ZXN0Y3VycyB3b3JtIHhtYXMKK2N1cnNfc2V0X3NwCQkJbGliOiBuY3Vyc2VzCitjdXJzY3IJCQkJdGVzdDogZGVtb19wYW5lbHMgZWRpdF9maWVsZCBrbmlnaHQgbHJ0ZXN0IG5jdXJzZXMgc2F2ZXNjcmVlbiB0Y2xvY2sgdmlldworY3Vyc2VzX3ZlcnNpb24JCQl0ZXN0OiBuY3Vyc2VzIHByb2dzOiBpbmZvY21wIHRhYnMgdGljIHRvZSB0cHV0IHRzZXQKK2RlZl9wcm9nX21vZGUJCQl0ZXN0OiBicyBuY3Vyc2VzCitkZWZfcHJvZ19tb2RlX3NwCQlsaWI6IG5jdXJzZXMKK2RlZl9zaGVsbF9tb2RlCQkJLQorZGVmX3NoZWxsX21vZGVfc3AJCWxpYjogbmN1cnNlcworZGVmaW5lX2tleQkJCXRlc3Q6IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBmb2xka2V5cworZGVmaW5lX2tleV9zcAkJCS0KK2RlbF9jdXJ0ZXJtCQkJdGVzdDogZGVtb190ZXJtaW5mbworZGVsX2N1cnRlcm1fc3AJCQlsaWI6IG5jdXJzZXMKK2RlbGF5X291dHB1dAkJCXRlc3Q6IG5ld2RlbW8KK2RlbGF5X291dHB1dF9zcAkJCS0KK2RlbGNoCQkJCS0KK2RlbGV0ZWxuCQkJdGVzdDogaW5zZGVsbG4KK2RlbHNjcmVlbgkJCXRlc3Q6IGRpdHRvIGRvdHNfbXZjdXIKK2RlbHdpbgkJCQl0ZXN0OiBjYXJkZmlsZSBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX2Zvcm1zIGRlbW9fcGFuZWxzIGVkaXRfZmllbGQgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMgbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHNhdmVzY3JlZW4gdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycworZGVyd2luCQkJCXRlc3Q6IGNhcmRmaWxlIGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fZm9ybXMgZGVtb19tZW51cyBkaXR0byBpbmNoX3dpZGUgaW5jaHMgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBtb3Zld2luZG93IG5jdXJzZXMgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZQorZG91cGRhdGUJCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRpdHRvIGVkaXRfZmllbGQgaW5zX3dpZGUgaW5zZXJ0cyBrbmlnaHQgbW92ZXdpbmRvdyBuY3Vyc2VzIHJlZHJhdyBzYXZlc2NyZWVuIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyCitkb3VwZGF0ZV9zcAkJCWxpYjogbmN1cnNlcworZHVwd2luCQkJCXRlc3Q6IGVkaXRfZmllbGQKK2VjaG8JCQkJdGVzdDogYnMgaGFub2kgbmN1cnNlcyB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RjdXJzIHRlc3RzY2FudworZWNob19zcAkJCQlsaWI6IG5jdXJzZXMKK2VjaG9fd2NoYXIJCQl0ZXN0OiBuY3Vyc2VzCitlY2hvY2hhcgkJCXRlc3Q6IGVjaG9jaGFyIG5jdXJzZXMKK2VuZHdpbgkJCQl0ZXN0OiBiYWNrZ3JvdW5kIGJsdWUgYnMgY2FyZGZpbGUgY2hnYXQgY2xpcF9wcmludHcgY29sb3Jfc2V0IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBkZW1vX2Zvcm1zIGRlbW9fa2V5b2sgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkaXR0byBkb3RzX2N1cnNlcyBkb3RzX212Y3VyIGVjaG9jaGFyIGZpbHRlciBmaXJld29yayBmaXJzdGxhc3QgZm9sZGtleXMgZm9ybV9kcml2ZXJfdyBnZGMgaGFub2kgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga2V5X25hbWVzIGtleW5hbWVzIGtuaWdodCBscnRlc3QgbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmFpbiByZWRyYXcgc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0YWRkY2ggdGVzdGN1cnMgdGVzdHNjYW53IHZpZXcgd29ybSB4bWFzCitlbmR3aW5fc3AJCQlsaWI6IG5jdXJzZXMKK2VyYXNlCQkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fbWVudXMgZmlsdGVyIGZpcmV3b3JrIGZpcnN0bGFzdCBoYW5vaSBscnRlc3QgbmN1cnNlcyB0Y2xvY2sgdGVzdF9vcGFxdWUgdGVzdGN1cnMKK2VyYXNlY2hhcgkJCWxpYjogbmN1cnNlcworZXJhc2VjaGFyX3NwCQkJbGliOiBuY3Vyc2VzCitlcmFzZXdjaGFyCQkJLQorZmlsdGVyCQkJCXRlc3Q6IGZpbHRlcgorZmlsdGVyX3NwCQkJLQorZmxhc2gJCQkJdGVzdDogY2FyZGZpbGUgbHJ0ZXN0IG1vdmV3aW5kb3cgbmN1cnNlcyB0Y2xvY2sgdGVzdGN1cnMKK2ZsYXNoX3NwCQkJLQorZmx1c2hpbnAJCQl0ZXN0OiBuY3Vyc2VzIG5ld2RlbW8gdGVzdGN1cnMKK2ZsdXNoaW5wX3NwCQkJbGliOiBuY3Vyc2VzCitnZXRfZXNjZGVsYXkJCQktCitnZXRfZXNjZGVsYXlfc3AJCQktCitnZXRfd2NoCQkJCXRlc3Q6IGZvcm1fZHJpdmVyX3cKK2dldF93c3RyCQkJdGVzdDogdGVzdF9nZXRfd3N0cgorZ2V0YXR0cnMJCQktCitnZXRiZWd4CQkJCXRlc3Q6IGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fbWVudXMgZGVtb19wYW5lbHMgaW5zZGVsbG4gbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHRlc3RjdXJzCitnZXRiZWd5CQkJCXRlc3Q6IGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fbWVudXMgZGVtb19wYW5lbHMgaW5zZGVsbG4gbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHRlc3RjdXJzCitnZXRia2dkCQkJCXRlc3Q6IG5jdXJzZXMKK2dldGJrZ3JuZAkJCXRlc3Q6IG5jdXJzZXMKK2dldGNjaGFyCQkJdGVzdDogbmN1cnNlcyB2aWV3CitnZXRjaAkJCQl0ZXN0OiBiYWNrZ3JvdW5kIGJsdWUgYnMgY2hnYXQgY29sb3Jfc2V0IGRlbW9fYWx0a2V5cyBmaWx0ZXIgZmlyZXdvcmsgZmlyc3RsYXN0IGZvbGRrZXlzIGhhbm9pIGhhc2h0ZXN0IGluc2RlbGxuIGxydGVzdCBzYXZlc2NyZWVuIHRjbG9jayB0ZXN0X29wYXF1ZSB0ZXN0YWRkY2ggdGVzdGN1cnMgdmlldyB4bWFzCitnZXRjdXJ4CQkJCXRlc3Q6IGJzIGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBkZW1vX3BhbmVscyBmaXJzdGxhc3QgZm9sZGtleXMgaW5zZGVsbG4gbW92ZXdpbmRvdyBuY3Vyc2VzIHJlZHJhdyBzYXZlc2NyZWVuIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMKK2dldGN1cnkJCQkJdGVzdDogYnMgY2hnYXQgY2xpcF9wcmludHcgZGVtb19hbHRrZXlzIGRlbW9fZGVma2V5IGRlbW9fcGFuZWxzIGVkaXRfZmllbGQgZmlyc3RsYXN0IGZvbGRrZXlzIGluc2RlbGxuIG1vdmV3aW5kb3cgbmN1cnNlcyByZWRyYXcgc2F2ZXNjcmVlbiB0ZXN0X29wYXF1ZSB0ZXN0Y3VycworZ2V0bWF4eAkJCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX3BhbmVscyBpbmNoX3dpZGUgaW5jaHMgaW5zZGVsbG4gbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycworZ2V0bWF4eQkJCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX2Zvcm1zIGRlbW9fcGFuZWxzIGluY2hfd2lkZSBpbmNocyBpbnNkZWxsbiBtb3Zld2luZG93IG5jdXJzZXMgbmV3ZGVtbyByZWRyYXcgdGVzdF9nZXRfd3N0ciB0ZXN0X2dldHN0ciB0ZXN0X2luc3RyIHRlc3RfaW53c3RyIHRlc3Rfb3BhcXVlIHRlc3RjdXJzCitnZXRtb3VzZQkJCXRlc3Q6IGJzIGtuaWdodCBtb3Zld2luZG93IG5jdXJzZXMgdGVzdGN1cnMKK2dldG1vdXNlX3NwCQkJLQorZ2V0bl93c3RyCQkJdGVzdDogdGVzdF9nZXRfd3N0cgorZ2V0bnN0cgkJCQl0ZXN0OiBmaWx0ZXIgbmN1cnNlcyB0ZXN0X2dldHN0cgorZ2V0cGFyeAkJCQl0ZXN0OiBtb3Zld2luZG93CitnZXRwYXJ5CQkJCXRlc3Q6IG1vdmV3aW5kb3cKK2dldHN0cgkJCQl0ZXN0OiB0ZXN0X2dldHN0cgorZ2V0d2luCQkJCXRlc3Q6IG5jdXJzZXMKK2dldHdpbl9zcAkJCS0KK2hhbGZkZWxheQkJCXRlc3Q6IHZpZXcKK2hhbGZkZWxheV9zcAkJCS0KK2hhc19jb2xvcnMJCQl0ZXN0OiBiYWNrZ3JvdW5kIGJzIGNhcmRmaWxlIGNoZ2F0IGNsaXBfcHJpbnR3IGNvbG9yX3NldCBkZW1vX2Zvcm1zIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZG90c19jdXJzZXMgZWNob2NoYXIgZmlsdGVyIGZpcmV3b3JrIGdkYyBoYW5vaSBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGtuaWdodCBuY3Vyc2VzIG5ld2RlbW8gcmFpbiBzYXZlc2NyZWVuIHRjbG9jayB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdGN1cnMgdmlldyB3b3JtIHhtYXMKK2hhc19jb2xvcnNfc3AJCQlsaWI6IG5jdXJzZXMKK2hhc19pYwkJCQl0ZXN0OiBscnRlc3QKK2hhc19pY19zcAkJCWxpYjogbmN1cnNlcworaGFzX2lsCQkJCS0KK2hhc19pbF9zcAkJCWxpYjogbmN1cnNlcworaGFzX2tleQkJCQktCitoYXNfa2V5X3NwCQkJbGliOiBuY3Vyc2VzCitoYXNfbW91c2UJCQktCitoYXNfbW91c2Vfc3AJCQktCitobGluZQkJCQl0ZXN0OiBnZGMgbmN1cnNlcworaGxpbmVfc2V0CQkJLQoraWRjb2sJCQkJdGVzdDogdGVzdF9vcGFxdWUKK2lkbG9rCQkJCXRlc3Q6IG5jdXJzZXMgdGVzdF9vcGFxdWUgdGVzdHNjYW53IHZpZXcKK2ltbWVkb2sJCQkJdGVzdDogdGVzdF9vcGFxdWUKK2luX3djaAkJCQl0ZXN0OiBpbmNoX3dpZGUKK2luX3djaG5zdHIJCQl0ZXN0OiBpbmNoX3dpZGUKK2luX3djaHN0cgkJCXRlc3Q6IGluY2hfd2lkZQoraW5jaAkJCQl0ZXN0OiBpbmNocworaW5jaG5zdHIJCQl0ZXN0OiBpbmNocworaW5jaHN0cgkJCQl0ZXN0OiBpbmNocworaW5pdF9jb2xvcgkJCXRlc3Q6IG5jdXJzZXMKK2luaXRfY29sb3Jfc3AJCQlsaWI6IG5jdXJzZXMKK2luaXRfcGFpcgkJCXRlc3Q6IGJhY2tncm91bmQgYmx1ZSBicyBjYXJkZmlsZSBjaGdhdCBjbGlwX3ByaW50dyBjb2xvcl9zZXQgZGVtb19mb3JtcyBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRvdHNfY3Vyc2VzIGVjaG9jaGFyIGZpbHRlciBmaXJld29yayBnZGMgaGFub2kgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBrbmlnaHQgbmN1cnNlcyBuZXdkZW1vIHJhaW4gc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RhZGRjaCB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcworaW5pdF9wYWlyX3NwCQkJLQoraW5pdHNjcgkJCQl0ZXN0OiBiYWNrZ3JvdW5kIGJsdWUgYnMgY2FyZGZpbGUgY2hnYXQgY2xpcF9wcmludHcgY29sb3Jfc2V0IGRlbW9fZGVma2V5IGRlbW9fZm9ybXMgZGVtb19rZXlvayBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRvdHNfY3Vyc2VzIGVjaG9jaGFyIGZpbHRlciBmaXJld29yayBmaXJzdGxhc3QgZm9ybV9kcml2ZXJfdyBnZGMgaGFub2kgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga25pZ2h0IGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgbmV3ZGVtbyByYWluIHJlZHJhdyBzYXZlc2NyZWVuIHRjbG9jayB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9nZXRfd3N0ciB0ZXN0X2dldHN0ciB0ZXN0X2luc3RyIHRlc3RfaW53c3RyIHRlc3Rfb3BhcXVlIHRlc3RhZGRjaCB0ZXN0Y3VycyB0ZXN0c2NhbncgdmlldyB3b3JtIHhtYXMKK2lubnN0cgkJCQl0ZXN0OiB0ZXN0X2luc3RyCitpbm53c3RyCQkJCXRlc3Q6IHRlc3RfaW53c3RyCitpbnNfbndzdHIJCQl0ZXN0OiBpbnNfd2lkZQoraW5zX3djaAkJCQl0ZXN0OiBpbnNfd2lkZQoraW5zX3dzdHIJCQl0ZXN0OiBpbnNfd2lkZQoraW5zY2gJCQkJdGVzdDogaW5zX3dpZGUgaW5zZXJ0cworaW5zZGVsbG4JCQl0ZXN0OiBpbnNkZWxsbgoraW5zZXJ0bG4JCQl0ZXN0OiBpbnNkZWxsbgoraW5zbnN0cgkJCQl0ZXN0OiBpbnNlcnRzCitpbnNzdHIJCQkJdGVzdDogaW5zZXJ0cworaW5zdHIJCQkJdGVzdDogdGVzdF9pbnN0cgoraW50cmZsdXNoCQkJdGVzdDogZGVtb19mb3JtcyBtb3Zld2luZG93CitpbnRyZmx1c2hfc3AJCQktCitpbndzdHIJCQkJdGVzdDogdGVzdF9pbndzdHIKK2lzX2NsZWFyZWQJCQl0ZXN0OiB0ZXN0X29wYXF1ZQoraXNfaWRjb2sJCQl0ZXN0OiB0ZXN0X29wYXF1ZQoraXNfaWRsb2sJCQl0ZXN0OiB0ZXN0X29wYXF1ZQoraXNfaW1tZWRvawkJCXRlc3Q6IHRlc3Rfb3BhcXVlCitpc19rZXlwYWQJCQl0ZXN0OiB0ZXN0X29wYXF1ZQoraXNfbGVhdmVvawkJCXRlc3Q6IHRlc3Rfb3BhcXVlCitpc19saW5ldG91Y2hlZAkJCWxpYjogZm9ybQoraXNfbm9kZWxheQkJCXRlc3Q6IHRlc3Rfb3BhcXVlCitpc19ub3RpbWVvdXQJCQl0ZXN0OiB0ZXN0X29wYXF1ZQoraXNfcGFkCQkJCS0KK2lzX3Njcm9sbG9rCQkJdGVzdDogdGVzdF9vcGFxdWUKK2lzX3N1YndpbgkJCS0KK2lzX3N5bmNvawkJCXRlc3Q6IHRlc3Rfb3BhcXVlCitpc190ZXJtX3Jlc2l6ZWQJCQktCitpc190ZXJtX3Jlc2l6ZWRfc3AJCS0KK2lzX3dpbnRvdWNoZWQJCQlsaWI6IG5jdXJzZXMKK2lzZW5kd2luCQkJLQoraXNlbmR3aW5fc3AJCQktCitrZXlfZGVmaW5lZAkJCXRlc3Q6IGRlbW9fZGVma2V5IGZvbGRrZXlzCitrZXlfZGVmaW5lZF9zcAkJCWxpYjogbmN1cnNlcwora2V5X25hbWUJCQl0ZXN0OiBrZXlfbmFtZXMgbmN1cnNlcwora2V5Ym91bmQJCQl0ZXN0OiBkZW1vX2FsdGtleXMgZGVtb19kZWZrZXkKK2tleWJvdW5kX3NwCQkJbGliOiBuY3Vyc2VzCitrZXluYW1lCQkJCXRlc3Q6IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBkZW1vX2tleW9rIGRlbW9fbWVudXMgZWRpdF9maWVsZCBmb2xka2V5cyBrZXluYW1lcyBtb3Zld2luZG93IG5jdXJzZXMgcmVkcmF3IHRlc3RfZ2V0c3RyIHRlc3RjdXJzIHZpZXcgcHJvZ3M6IHRpYwora2V5bmFtZV9zcAkJCWxpYjogbmN1cnNlcwora2V5b2sJCQkJdGVzdDogZGVtb19rZXlvayBmb2xka2V5cwora2V5b2tfc3AJCQlsaWI6IG5jdXJzZXMKK2tleXBhZAkJCQl0ZXN0OiBicyBjYXJkZmlsZSBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX2FsdGtleXMgZGVtb19kZWZrZXkgZGVtb19mb3JtcyBkZW1vX2tleW9rIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZGl0dG8gZWRpdF9maWVsZCBmaWx0ZXIgZmlyZXdvcmsgZm9sZGtleXMgZm9ybV9kcml2ZXJfdyBoYXNodGVzdCBpbmNoX3dpZGUgaW5jaHMgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBrZXlfbmFtZXMga2V5bmFtZXMga25pZ2h0IGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgcmVkcmF3IHNhdmVzY3JlZW4gdGNsb2NrIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMgdGVzdHNjYW53IHZpZXcKK2tpbGxjaGFyCQkJbGliOiBuY3Vyc2VzCitraWxsY2hhcl9zcAkJCWxpYjogbmN1cnNlcwora2lsbHdjaGFyCQkJLQorbGVhdmVvawkJCQl0ZXN0OiBoYW5vaSB0ZXN0X29wYXF1ZQorbG9uZ25hbWUJCQl0ZXN0OiB0ZXN0Y3VycyBwcm9nczogdHB1dAorbWNwcmludAkJCQktCittY3ByaW50X3NwCQkJLQorbWV0YQkJCQl0ZXN0OiBrZXlfbmFtZXMga2V5bmFtZXMgbmN1cnNlcworbW91c2VfdHJhZm8JCQktCittb3VzZWludGVydmFsCQkJLQorbW91c2VpbnRlcnZhbF9zcAkJLQorbW91c2VtYXNrCQkJdGVzdDogYnMgZGVtb19mb3JtcyBkZW1vX21lbnVzIGtuaWdodCBtb3Zld2luZG93IG5jdXJzZXMgdGVzdGN1cnMKK21vdXNlbWFza19zcAkJCS0KK21vdmUJCQkJdGVzdDogYmx1ZSBicyBjYXJkZmlsZSBjaGdhdCBkZW1vX2FsdGtleXMgZGVtb19tZW51cyBkb3RzX2N1cnNlcyBlY2hvY2hhciBmb2xka2V5cyBnZGMgaGFub2kgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2VydHMga25pZ2h0IGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgc2F2ZXNjcmVlbiB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9nZXRfd3N0ciB0ZXN0X2dldHN0ciB0ZXN0X2luc3RyIHRlc3RfaW53c3RyIHRlc3Rfb3BhcXVlIHRlc3RzY2FudyB2aWV3IHhtYXMKK212YWRkX3djaAkJCXRlc3Q6IG5jdXJzZXMgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkd3N0cgorbXZhZGRfd2NobnN0cgkJCXRlc3Q6IHRlc3RfYWRkX3djaHN0cgorbXZhZGRfd2Noc3RyCQkJdGVzdDogdGVzdF9hZGRfd2Noc3RyCittdmFkZGNoCQkJCXRlc3Q6IGJzIGdkYyBoYW5vaSBscnRlc3QgbmN1cnNlcyByYWluIHRjbG9jayB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgeG1hcworbXZhZGRjaG5zdHIJCQl0ZXN0OiBnZGMgdGVzdF9hZGRjaHN0cgorbXZhZGRjaHN0cgkJCXRlc3Q6IHRlc3RfYWRkY2hzdHIKK212YWRkbnN0cgkJCXRlc3Q6IHRlc3RfYWRkc3RyCittdmFkZG53c3RyCQkJdGVzdDogdGVzdF9hZGR3c3RyCittdmFkZHN0cgkJCXRlc3Q6IGJzIGRlbW9fZm9ybXMgZ2RjIGhhbm9pIGtuaWdodCBuY3Vyc2VzIHJhaW4gdGNsb2NrIHRlc3RfYWRkc3RyIHRlc3RjdXJzIHhtYXMKK212YWRkd3N0cgkJCXRlc3Q6IHRlc3RfYWRkd3N0cgorbXZjaGdhdAkJCQl0ZXN0OiBjaGdhdAorbXZjdXIJCQkJdGVzdDogZG90c19tdmN1ciByZWRyYXcKK212Y3VyX3NwCQkJLQorbXZkZWxjaAkJCQktCittdmRlcndpbgkJCXRlc3Q6IG1vdmV3aW5kb3cKK212Z2V0X3djaAkJCS0KK212Z2V0X3dzdHIJCQl0ZXN0OiB0ZXN0X2dldF93c3RyCittdmdldGNoCQkJCS0KK212Z2V0bl93c3RyCQkJdGVzdDogdGVzdF9nZXRfd3N0cgorbXZnZXRuc3RyCQkJdGVzdDogdGVzdF9nZXRzdHIKK212Z2V0c3RyCQkJdGVzdDogdGVzdF9nZXRzdHIKK212aGxpbmUJCQkJdGVzdDogbmN1cnNlcworbXZobGluZV9zZXQJCQl0ZXN0OiBuY3Vyc2VzCittdmluX3djaAkJCXRlc3Q6IGluY2hfd2lkZQorbXZpbl93Y2huc3RyCQkJdGVzdDogaW5jaF93aWRlCittdmluX3djaHN0cgkJCXRlc3Q6IGluY2hfd2lkZQorbXZpbmNoCQkJCXRlc3Q6IGluY2hzCittdmluY2huc3RyCQkJdGVzdDogZ2RjIGluY2hzCittdmluY2hzdHIJCQl0ZXN0OiBpbmNocworbXZpbm5zdHIJCQl0ZXN0OiB0ZXN0X2luc3RyCittdmlubndzdHIJCQl0ZXN0OiB0ZXN0X2lud3N0cgorbXZpbnNfbndzdHIJCQl0ZXN0OiBpbnNfd2lkZQorbXZpbnNfd2NoCQkJdGVzdDogaW5zX3dpZGUKK212aW5zX3dzdHIJCQl0ZXN0OiBpbnNfd2lkZQorbXZpbnNjaAkJCQl0ZXN0OiBpbnNfd2lkZSBpbnNlcnRzCittdmluc25zdHIJCQl0ZXN0OiBpbnNlcnRzCittdmluc3N0cgkJCXRlc3Q6IGluc2VydHMKK212aW5zdHIJCQkJdGVzdDogdGVzdF9pbnN0cgorbXZpbndzdHIJCQl0ZXN0OiB0ZXN0X2lud3N0cgorbXZwcmludHcJCQl0ZXN0OiBiYWNrZ3JvdW5kIGJzIGZpcmV3b3JrIGZvcm1fZHJpdmVyX3cgaGFub2kgbmN1cnNlcyBzYXZlc2NyZWVuIHRjbG9jayB2aWV3CittdnNjYW53CQkJCS0KK212dmxpbmUJCQkJdGVzdDogbmN1cnNlcworbXZ2bGluZV9zZXQJCQl0ZXN0OiBuY3Vyc2VzCittdndhZGRfd2NoCQkJdGVzdDogdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkd3N0cgorbXZ3YWRkX3djaG5zdHIJCQl0ZXN0OiB0ZXN0X2FkZF93Y2hzdHIKK212d2FkZF93Y2hzdHIJCQl0ZXN0OiBpbmNoX3dpZGUgdGVzdF9hZGRfd2Noc3RyCittdndhZGRjaAkJCXRlc3Q6IG1vdmV3aW5kb3cgbmV3ZGVtbyB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdGN1cnMgeG1hcworbXZ3YWRkY2huc3RyCQkJdGVzdDogdGVzdF9hZGRjaHN0cgorbXZ3YWRkY2hzdHIJCQl0ZXN0OiBpbmNocyB0ZXN0X2FkZGNoc3RyCittdndhZGRuc3RyCQkJdGVzdDogbmV3ZGVtbyB0ZXN0X2FkZHN0ciB0ZXN0Y3VycworbXZ3YWRkbndzdHIJCQl0ZXN0OiB0ZXN0X2FkZHdzdHIKK212d2FkZHN0cgkJCXRlc3Q6IGRpdHRvIGZpcnN0bGFzdCBpbnNfd2lkZSBpbnNlcnRzIGtuaWdodCBuY3Vyc2VzIG5ld2RlbW8gdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfaW5zdHIgdGVzdGN1cnMgeG1hcworbXZ3YWRkd3N0cgkJCXRlc3Q6IHRlc3RfYWRkd3N0ciB0ZXN0X2lud3N0cgorbXZ3Y2hnYXQJCQl0ZXN0OiBjaGdhdAorbXZ3ZGVsY2gJCQl0ZXN0OiBuY3Vyc2VzCittdndnZXRfd2NoCQkJLQorbXZ3Z2V0X3dzdHIJCQl0ZXN0OiB0ZXN0X2dldF93c3RyCittdndnZXRjaAkJCXRlc3Q6IGluY2hfd2lkZSBpbmNocyB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUKK212d2dldG5fd3N0cgkJCXRlc3Q6IHRlc3RfZ2V0X3dzdHIKK212d2dldG5zdHIJCQl0ZXN0OiB0ZXN0X2dldHN0cgorbXZ3Z2V0c3RyCQkJdGVzdDogdGVzdF9nZXRzdHIKK212d2hsaW5lCQkJdGVzdDogbW92ZXdpbmRvdworbXZ3aGxpbmVfc2V0CQkJLQorbXZ3aW4JCQkJdGVzdDogY2FyZGZpbGUgZGVtb19tZW51cyBtb3Zld2luZG93IHRlc3RjdXJzIHhtYXMKK212d2luX3djaAkJCXRlc3Q6IGluY2hfd2lkZQorbXZ3aW5fd2NobnN0cgkJCXRlc3Q6IGluY2hfd2lkZQorbXZ3aW5fd2Noc3RyCQkJdGVzdDogaW5jaF93aWRlCittdndpbmNoCQkJCXRlc3Q6IGluY2hzIG5ld2RlbW8gdGVzdGN1cnMKK212d2luY2huc3RyCQkJdGVzdDogaW5jaHMKK212d2luY2hzdHIJCQl0ZXN0OiBpbmNocworbXZ3aW5uc3RyCQkJdGVzdDogdGVzdF9pbnN0ciB0ZXN0Y3VycworbXZ3aW5ud3N0cgkJCXRlc3Q6IHRlc3RfaW53c3RyCittdndpbnNfbndzdHIJCQl0ZXN0OiBpbnNfd2lkZQorbXZ3aW5zX3djaAkJCXRlc3Q6IGluc193aWRlCittdndpbnNfd3N0cgkJCXRlc3Q6IGluc193aWRlCittdndpbnNjaAkJCXRlc3Q6IGluc193aWRlIGluc2VydHMKK212d2luc25zdHIJCQl0ZXN0OiBpbnNlcnRzCittdndpbnNzdHIJCQl0ZXN0OiBpbnNlcnRzIHRlc3RjdXJzCittdndpbnN0cgkJCXRlc3Q6IHRlc3RfaW5zdHIKK212d2lud3N0cgkJCXRlc3Q6IHRlc3RfaW53c3RyCittdndwcmludHcJCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGluY2hfd2lkZSBpbmNocyBpbnNkZWxsbiBuY3Vyc2VzIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdGN1cnMKK212d3NjYW53CQkJdGVzdDogdGVzdGN1cnMKK212d3ZsaW5lCQkJdGVzdDogaW5zX3dpZGUgaW5zZXJ0cyBtb3Zld2luZG93IHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0cgorbXZ3dmxpbmVfc2V0CQkJLQorbmFwbXMJCQkJdGVzdDogZGVtb19wYW5lbHMgZGl0dG8gZG90cyBkb3RzX2N1cnNlcyBkb3RzX212Y3VyIGVjaG9jaGFyIGZpcmV3b3JrIGdkYyBoYW5vaSBscnRlc3QgbmN1cnNlcyByYWlscm9hZCByYWluIHRjbG9jayB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcyBwcm9nczogdHNldAorbmFwbXNfc3AJCQktCituZXdfcHJlc2NyCQkJbGliOiBuY3Vyc2VzCituZXdwYWQJCQkJdGVzdDogZWRpdF9maWVsZCBuY3Vyc2VzIHRlc3RjdXJzCituZXdwYWRfc3AJCQlsaWI6IG5jdXJzZXMKK25ld3NjcgkJCQlsaWI6IG5jdXJzZXMKK25ld3Rlcm0JCQkJdGVzdDogZGVtb19hbHRrZXlzIGRpdHRvIGRvdHNfbXZjdXIgZmlsdGVyIGZvbGRrZXlzIGdkYyBrZXlfbmFtZXMga2V5bmFtZXMgdGVzdF9zZXR1cHRlcm0KK25ld3Rlcm1fc3AJCQktCituZXd3aW4JCQkJdGVzdDogY2FyZGZpbGUgY2hnYXQgY2xpcF9wcmludHcgZGVtb19kZWZrZXkgZGVtb19mb3JtcyBkZW1vX2tleW9rIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZGl0dG8gZWRpdF9maWVsZCBmaXJzdGxhc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga25pZ2h0IG1vdmV3aW5kb3cgbmN1cnNlcyBuZXdkZW1vIHJlZHJhdyBzYXZlc2NyZWVuIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMgeG1hcworbmV3d2luX3NwCQkJbGliOiBuY3Vyc2VzCitubAkJCQl0ZXN0OiBkZW1vX2Zvcm1zIG5jdXJzZXMgcmFpbiB0ZXN0Y3Vycworbmxfc3AJCQkJbGliOiBuY3Vyc2VzCitub2NicmVhawkJCXRlc3Q6IHRlc3RjdXJzCitub2NicmVha19zcAkJCWxpYjogbmN1cnNlcworbm9kZWxheQkJCQl0ZXN0OiBkaXR0byBmaXJld29yayBnZGMgbHJ0ZXN0IG5jdXJzZXMgbmV3ZGVtbyByYWluIHRjbG9jayB0ZXN0X29wYXF1ZSB2aWV3IHdvcm0geG1hcworbm9lY2hvCQkJCXRlc3Q6IGJhY2tncm91bmQgYnMgY2FyZGZpbGUgY2hnYXQgY2xpcF9wcmludHcgY29sb3Jfc2V0IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBkZW1vX2Zvcm1zIGRlbW9fa2V5b2sgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkaXR0byBmaXJld29yayBmaXJzdGxhc3QgZm9sZGtleXMgZm9ybV9kcml2ZXJfdyBnZGMgaGFub2kgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga25pZ2h0IGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgcmFpbiByZWRyYXcgc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcworbm9lY2hvX3NwCQkJbGliOiBuY3Vyc2VzCitub2ZpbHRlcgkJCS0KK25vZmlsdGVyX3NwCQkJLQorbm9ubAkJCQl0ZXN0OiBicyBkZW1vX2Zvcm1zIGhhc2h0ZXN0IG1vdmV3aW5kb3cgbmN1cnNlcyB2aWV3IHdvcm0geG1hcworbm9ubF9zcAkJCQlsaWI6IG5jdXJzZXMKK25vcWlmbHVzaAkJCS0KK25vcWlmbHVzaF9zcAkJCS0KK25vcmF3CQkJCXRlc3Q6IGRlbW9fZm9ybXMgZGVtb19tZW51cyBuY3Vyc2VzIHRlc3RjdXJzCitub3Jhd19zcAkJCWxpYjogbmN1cnNlcworbm90aW1lb3V0CQkJdGVzdDogdGVzdF9vcGFxdWUKK251bWNvZGVzCQkJdGVzdDogZGVtb190ZXJtY2FwIHRlc3RfYXJyYXlzIHByb2dzOiBkdW1wX2VudHJ5CitudW1mbmFtZXMJCQl0ZXN0OiBkZW1vX3Rlcm1pbmZvIHRlc3RfYXJyYXlzIHByb2dzOiBkdW1wX2VudHJ5CitudW1uYW1lcwkJCXRlc3Q6IGRlbW9fdGVybWNhcCBkZW1vX3Rlcm1pbmZvIHRlc3RfYXJyYXlzIHByb2dzOiBkdW1wX2VudHJ5IGluZm9jbXAKK29zcGVlZAkJCQl0ZXN0OiBkZW1vX3Rlcm1jYXAgcHJvZ3M6IHRzZXQKK292ZXJsYXkJCQkJdGVzdDogbmN1cnNlcyB0ZXN0Y3VycyB4bWFzCitvdmVyd3JpdGUJCQl0ZXN0OiBuY3Vyc2VzIHNhdmVzY3JlZW4KK3BhaXJfY29udGVudAkJCXRlc3Q6IGJhY2tncm91bmQgY29sb3Jfc2V0CitwYWlyX2NvbnRlbnRfc3AJCQlsaWI6IG5jdXJzZXMKK3BlY2hvX3djaGFyCQkJLQorcGVjaG9jaGFyCQkJLQorcG5vdXRyZWZyZXNoCQkJdGVzdDogZWRpdF9maWVsZCBuY3Vyc2VzCitwcmVmcmVzaAkJCXRlc3Q6IHRlc3RjdXJzCitwcmludHcJCQkJdGVzdDogYmFja2dyb3VuZCBibHVlIGJzIGNvbG9yX3NldCBkZW1vX2FsdGtleXMgZGVtb19kZWZrZXkgZGVtb19rZXlvayBmaWx0ZXIgZm9sZGtleXMgbmN1cnNlcyBzYXZlc2NyZWVuIHRlc3RjdXJzIHRlc3RzY2FudyB2aWV3CitwdXRwCQkJCXByb2dzOiB0cHV0CitwdXRwX3NwCQkJCS0KK3B1dHdpbgkJCQl0ZXN0OiBuY3Vyc2VzCitxaWZsdXNoCQkJCS0KK3FpZmx1c2hfc3AJCQktCityYXcJCQkJdGVzdDogZGVtb19mb3JtcyBuY3Vyc2VzIHJlZHJhdyB0ZXN0Y3VycworcmF3X3NwCQkJCWxpYjogbmN1cnNlcworcmVkcmF3d2luCQkJdGVzdDogcmVkcmF3IHZpZXcKK3JlZnJlc2gJCQkJdGVzdDogYmx1ZSBicyBkZW1vX2RlZmtleSBkZW1vX2Zvcm1zIGRlbW9fa2V5b2sgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkb3RzX2N1cnNlcyBlY2hvY2hhciBmaWx0ZXIgZmlyc3RsYXN0IGZvcm1fZHJpdmVyX3cgZ2RjIGhhbm9pIGhhc2h0ZXN0IGxydGVzdCBtb3Zld2luZG93IG5jdXJzZXMgc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdGN1cnMgdmlldyB4bWFzCityZXNldF9wcm9nX21vZGUJCQl0ZXN0OiBmaWx0ZXIgbmN1cnNlcworcmVzZXRfcHJvZ19tb2RlX3NwCQlsaWI6IG5jdXJzZXMKK3Jlc2V0X3NoZWxsX21vZGUJCXRlc3Q6IGJzIGZpbHRlciBzYXZlc2NyZWVuIHRlc3Rfc2V0dXB0ZXJtCityZXNldF9zaGVsbF9tb2RlX3NwCQlsaWI6IG5jdXJzZXMKK3Jlc2V0dHkJCQkJLQorcmVzZXR0eV9zcAkJCS0KK3Jlc2l6ZV90ZXJtCQkJdGVzdDogdmlldworcmVzaXplX3Rlcm1fc3AJCQktCityZXNpemV0ZXJtCQkJLQorcmVzaXpldGVybV9zcAkJCWxpYjogbmN1cnNlcworcmVzdGFydHRlcm0JCQl0ZXN0OiB0ZXN0X3NldHVwdGVybQorcmVzdGFydHRlcm1fc3AJCQktCityaXBvZmZsaW5lCQkJdGVzdDogZGVtb19tZW51cyBuY3Vyc2VzCityaXBvZmZsaW5lX3NwCQkJLQorc2F2ZXR0eQkJCQktCitzYXZldHR5X3NwCQkJLQorc2NhbncJCQkJdGVzdDogdGVzdGN1cnMgdGVzdHNjYW53CitzY3JfZHVtcAkJCXRlc3Q6IHNhdmVzY3JlZW4KK3Njcl9pbml0CQkJdGVzdDogc2F2ZXNjcmVlbgorc2NyX2luaXRfc3AJCQktCitzY3JfcmVzdG9yZQkJCXRlc3Q6IHNhdmVzY3JlZW4KK3Njcl9yZXN0b3JlX3NwCQkJLQorc2NyX3NldAkJCQl0ZXN0OiBzYXZlc2NyZWVuCitzY3Jfc2V0X3NwCQkJLQorc2NybAkJCQl0ZXN0OiB2aWV3CitzY3JvbGwJCQkJdGVzdDogdGVzdGN1cnMKK3Njcm9sbG9rCQkJdGVzdDogY2xpcF9wcmludHcgZGVtb19hbHRrZXlzIGRlbW9fZGVma2V5IGRlbW9fa2V5b2sgZGVtb19wYW5lbHMgZGl0dG8gZm9sZGtleXMgaGFzaHRlc3Qga25pZ2h0IG5jdXJzZXMgcmVkcmF3IHRlc3Rfb3BhcXVlIHRlc3RjdXJzIHRlc3RzY2FudyB2aWV3CitzZXRfY3VydGVybQkJCWxpYjogbmN1cnNlcworc2V0X2N1cnRlcm1fc3AJCQktCitzZXRfZXNjZGVsYXkJCQl0ZXN0OiB0ZXN0X29wYXF1ZQorc2V0X2VzY2RlbGF5X3NwCQkJbGliOiBuY3Vyc2VzCitzZXRfdGFic2l6ZQkJCXRlc3Q6IHRlc3Rfb3BhcXVlCitzZXRfdGFic2l6ZV9zcAkJCS0KK3NldF90ZXJtCQkJbGliOiBuY3Vyc2VzCitzZXRjY2hhcgkJCXRlc3Q6IGRlbW9fcGFuZWxzIGluc193aWRlIG5jdXJzZXMgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkd3N0ciB2aWV3CitzZXRzY3JyZWcJCQl0ZXN0OiB2aWV3CitzZXR1cHRlcm0JCQl0ZXN0OiBkZW1vX3Rlcm1pbmZvIGRvdHMgdGVzdF9zZXR1cHRlcm0gdGVzdF92aWRfcHV0cyB0ZXN0X3ZpZHB1dHMgcHJvZ3M6IGNsZWFyIHRhYnMgdHB1dCB0c2V0CitzbGtfYXR0cgkJCS0KK3Nsa19hdHRyX29mZgkJCS0KK3Nsa19hdHRyX29uCQkJLQorc2xrX2F0dHJfc2V0CQkJdGVzdDogbmN1cnNlcworc2xrX2F0dHJfc2V0X3NwCQkJLQorc2xrX2F0dHJfc3AJCQktCitzbGtfYXR0cm9mZgkJCWxpYjogbmN1cnNlcworc2xrX2F0dHJvZmZfc3AJCQktCitzbGtfYXR0cm9uCQkJbGliOiBuY3Vyc2VzCitzbGtfYXR0cm9uX3NwCQkJLQorc2xrX2F0dHJzZXQJCQl0ZXN0OiBuY3Vyc2VzCitzbGtfYXR0cnNldF9zcAkJCS0KK3Nsa19jbGVhcgkJCXRlc3Q6IG5jdXJzZXMKK3Nsa19jbGVhcl9zcAkJCS0KK3Nsa19jb2xvcgkJCXRlc3Q6IG5jdXJzZXMKK3Nsa19jb2xvcl9zcAkJCS0KK3Nsa19pbml0CQkJdGVzdDogbmN1cnNlcworc2xrX2luaXRfc3AJCQktCitzbGtfbGFiZWwJCQl0ZXN0OiBuY3Vyc2VzCitzbGtfbGFiZWxfc3AJCQktCitzbGtfbm91dHJlZnJlc2gJCQl0ZXN0OiBuY3Vyc2VzCitzbGtfbm91dHJlZnJlc2hfc3AJCS0KK3Nsa19yZWZyZXNoCQkJdGVzdDogbmN1cnNlcworc2xrX3JlZnJlc2hfc3AJCQlsaWI6IG5jdXJzZXMKK3Nsa19yZXN0b3JlCQkJdGVzdDogbmN1cnNlcworc2xrX3Jlc3RvcmVfc3AJCQlsaWI6IG5jdXJzZXMKK3Nsa19zZXQJCQkJdGVzdDogbmN1cnNlcworc2xrX3NldF9zcAkJCS0KK3Nsa190b3VjaAkJCXRlc3Q6IG5jdXJzZXMKK3Nsa190b3VjaF9zcAkJCWxpYjogbmN1cnNlcworc2xrX3dzZXQJCQl0ZXN0OiBuY3Vyc2VzCitzdGFuZGVuZAkJCXRlc3Q6IGJsdWUgZ2RjIG5jdXJzZXMKK3N0YW5kb3V0CQkJdGVzdDogYmx1ZSBuY3Vyc2VzCitzdGFydF9jb2xvcgkJCXRlc3Q6IGJhY2tncm91bmQgYmx1ZSBicyBjYXJkZmlsZSBjaGdhdCBjbGlwX3ByaW50dyBjb2xvcl9zZXQgZGVtb19mb3JtcyBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRvdHNfY3Vyc2VzIGVjaG9jaGFyIGZpbHRlciBmaXJld29yayBnZGMgaGFub2kgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBrbmlnaHQgbmN1cnNlcyBuZXdkZW1vIHJhaW4gc2F2ZXNjcmVlbiB0Y2xvY2sgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RhZGRjaCB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcworc3RhcnRfY29sb3Jfc3AJCQktCitzdGRzY3IJCQkJdGVzdDogYnMgY2hnYXQgY2xpcF9wcmludHcgZGVtb19hbHRrZXlzIGRlbW9fZm9ybXMgZGVtb19tZW51cyBkZW1vX3BhbmVscyBkaXR0byBmaWx0ZXIgZmlyZXdvcmsgZm9sZGtleXMgZm9ybV9kcml2ZXJfdyBnZGMgaGFub2kgaGFzaHRlc3QgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga2V5X25hbWVzIGtleW5hbWVzIGtuaWdodCBscnRlc3QgbW92ZXdpbmRvdyBuY3Vyc2VzIHJhaW4gcmVkcmF3IHNhdmVzY3JlZW4gdGNsb2NrIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMgdGVzdHNjYW53IHZpZXcgd29ybSB4bWFzCitzdHJjb2RlcwkJCXRlc3Q6IGRlbW9fdGVybWNhcCB0ZXN0X2FycmF5cyBwcm9nczogZHVtcF9lbnRyeQorc3RyZm5hbWVzCQkJdGVzdDogZGVtb190ZXJtaW5mbyB0ZXN0X2FycmF5cyBwcm9nczogZHVtcF9lbnRyeQorc3RybmFtZXMJCQl0ZXN0OiBkZW1vX3Rlcm1jYXAgZGVtb190ZXJtaW5mbyBmb2xka2V5cyB0ZXN0X2FycmF5cyBwcm9nczogZHVtcF9lbnRyeSBpbmZvY21wIHRpYworc3VicGFkCQkJCXRlc3Q6IHRlc3RjdXJzCitzdWJ3aW4JCQkJdGVzdDogbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gdGVzdGN1cnMKK3N5bmNvawkJCQl0ZXN0OiB0ZXN0X29wYXF1ZQordGVybV9hdHRycwkJCXRlc3Q6IG5jdXJzZXMKK3Rlcm1fYXR0cnNfc3AJCQktCit0ZXJtYXR0cnMJCQl0ZXN0OiBuY3Vyc2VzIHRlc3RjdXJzCit0ZXJtYXR0cnNfc3AJCQlsaWI6IG5jdXJzZXMKK3Rlcm1uYW1lCQkJdGVzdDogdGVzdGN1cnMKK3Rlcm1uYW1lX3NwCQkJbGliOiBuY3Vyc2VzCit0Z2V0ZW50CQkJCXRlc3Q6IGRlbW9fdGVybWNhcCBkb3RzX3Rlcm1jYXAgcmFpbHJvYWQKK3RnZXRlbnRfc3AJCQktCit0Z2V0ZmxhZwkJCXRlc3Q6IGRlbW9fdGVybWNhcAordGdldGZsYWdfc3AJCQktCit0Z2V0bnVtCQkJCXRlc3Q6IGRlbW9fdGVybWNhcCBkb3RzX3Rlcm1jYXAgcmFpbHJvYWQKK3RnZXRudW1fc3AJCQktCit0Z2V0c3RyCQkJCXRlc3Q6IGRlbW9fdGVybWNhcCBkb3RzX3Rlcm1jYXAgcmFpbHJvYWQKK3RnZXRzdHJfc3AJCQktCit0Z290bwkJCQl0ZXN0OiBkb3RzX3Rlcm1jYXAgcmFpbHJvYWQKK3RpZ2V0ZmxhZwkJCXRlc3Q6IGRlbW9fdGVybWluZm8gcHJvZ3M6IHRpYyB0cHV0Cit0aWdldGZsYWdfc3AJCQktCit0aWdldG51bQkJCXRlc3Q6IGRlbW9fdGVybWluZm8gbmN1cnNlcyBwcm9nczogdHB1dAordGlnZXRudW1fc3AJCQktCit0aWdldHN0cgkJCXRlc3Q6IGRlbW9fZGVma2V5IGRlbW9fdGVybWluZm8gZm9sZGtleXMgdGVzdGN1cnMgcHJvZ3M6IGNsZWFyIHRwdXQKK3RpZ2V0c3RyX3NwCQkJLQordGltZW91dAkJCQl0ZXN0OiByYWluIHNhdmVzY3JlZW4KK3RpcGFybQkJCQktCit0b3VjaGxpbmUJCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBpbnNkZWxsbgordG91Y2h3aW4JCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX21lbnVzIGVkaXRfZmllbGQgZmlsdGVyIGZpcnN0bGFzdCBpbmNoX3dpZGUgaW5jaHMgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBtb3Zld2luZG93IG5jdXJzZXMgcmVkcmF3IHNhdmVzY3JlZW4gdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0X29wYXF1ZSB4bWFzCit0cGFybQkJCQl0ZXN0OiBkb3RzIGRvdHNfbXZjdXIgcHJvZ3M6IHRhYnMgdGljIHRwdXQKK3RwdXRzCQkJCXRlc3Q6IGRvdHMgZG90c19tdmN1ciBkb3RzX3Rlcm1jYXAgcmFpbHJvYWQgdGVzdF92aWRfcHV0cyB0ZXN0X3ZpZHB1dHMgcHJvZ3M6IGNsZWFyIHRhYnMgdHNldAordHB1dHNfc3AJCQlsaWI6IG5jdXJzZXMKK3RyYWNlCQkJCXRlc3Q6IGRlbW9fbWVudXMgaGFzaHRlc3QgbHJ0ZXN0IG5jdXJzZXMgdGVzdGN1cnMgdmlldyB3b3JtCit0dHl0eXBlCQkJCXRlc3Q6IGRlbW9fdGVybWluZm8KK3R5cGVhaGVhZAkJCXRlc3Q6IHRlc3RjdXJzCit0eXBlYWhlYWRfc3AJCQlsaWI6IG5jdXJzZXMKK3VuY3RybAkJCQl0ZXN0OiBuY3Vyc2VzIHJlZHJhdyB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0Y3VycwordW5jdHJsX3NwCQkJbGliOiBuY3Vyc2VzCit1bmdldF93Y2gJCQktCit1bmdldF93Y2hfc3AJCQktCit1bmdldGNoCQkJCXRlc3Q6IGJzIGtuaWdodAordW5nZXRjaF9zcAkJCWxpYjogbmN1cnNlcwordW5nZXRtb3VzZQkJCS0KK3VuZ2V0bW91c2Vfc3AJCQktCit1bnRvdWNod2luCQkJbGliOiBmb3JtCit1c2VfZGVmYXVsdF9jb2xvcnMJCXRlc3Q6IGJhY2tncm91bmQgZmlsdGVyIGZpcmV3b3JrIGdkYyBoYW5vaSBrbmlnaHQgbmN1cnNlcyByYWluIHRjbG9jayB3b3JtIHhtYXMKK3VzZV9kZWZhdWx0X2NvbG9yc19zcAkJLQordXNlX2VudgkJCQl0ZXN0OiBuY3Vyc2VzIHByb2dzOiB0cHV0Cit1c2VfZW52X3NwCQkJLQordXNlX2V4dGVuZGVkX25hbWVzCQlwcm9nczogaW5mb2NtcCB0aWMKK3VzZV9sZWdhY3lfY29kaW5nCQktCit1c2VfbGVnYWN5X2NvZGluZ19zcAkJLQordXNlX3NjcmVlbgkJCXRlc3Q6IGRpdHRvCit1c2VfdGlvY3RsCQkJdGVzdDogbmN1cnNlcwordXNlX3Rpb2N0bF9zcAkJCS0KK3VzZV93aW5kb3cJCQl0ZXN0OiByYWluIHdvcm0KK3ZpZF9hdHRyCQkJdGVzdDogdGVzdF92aWRfcHV0cwordmlkX2F0dHJfc3AJCQktCit2aWRfcHV0cwkJCXRlc3Q6IHRlc3RfdmlkX3B1dHMKK3ZpZF9wdXRzX3NwCQkJbGliOiBuY3Vyc2VzCit2aWRhdHRyCQkJCXRlc3Q6IHRlc3RfdmlkcHV0cwordmlkYXR0cl9zcAkJCS0KK3ZpZHB1dHMJCQkJdGVzdDogdGVzdF92aWRwdXRzCit2aWRwdXRzX3NwCQkJLQordmxpbmUJCQkJdGVzdDogZ2RjIG5jdXJzZXMKK3ZsaW5lX3NldAkJCS0KK3Z3X3ByaW50dwkJCXRlc3Q6IGNsaXBfcHJpbnR3Cit2d19zY2FudwkJCS0KK3Z3cHJpbnR3CQkJdGVzdDogbW92ZXdpbmRvdwordndzY2FudwkJCQlsaWI6IG5jdXJzZXMKK3dhZGRfd2NoCQkJdGVzdDogaW5jaF93aWRlIG5jdXJzZXMgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkd3N0cgord2FkZF93Y2huc3RyCQkJdGVzdDogc2F2ZXNjcmVlbiB0ZXN0X2FkZF93Y2hzdHIKK3dhZGRfd2Noc3RyCQkJdGVzdDogdGVzdF9hZGRfd2Noc3RyCit3YWRkY2gJCQkJdGVzdDogZGVtb19mb3JtcyBkZW1vX3BhbmVscyBkaXR0byBmaXJzdGxhc3QgaW5jaF93aWRlIGluY2hzIGtuaWdodCBuY3Vyc2VzIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgd29ybQord2FkZGNobnN0cgkJCXRlc3Q6IHRlc3RfYWRkY2hzdHIKK3dhZGRjaHN0cgkJCXRlc3Q6IHRlc3RfYWRkY2hzdHIKK3dhZGRuc3RyCQkJdGVzdDogZGVtb19mb3JtcyB0ZXN0X2FkZHN0cgord2FkZG53c3RyCQkJdGVzdDogbmN1cnNlcyB0ZXN0X2FkZHdzdHIKK3dhZGRzdHIJCQkJdGVzdDogY2hnYXQgY2xpcF9wcmludHcgZGVtb19mb3JtcyBkZW1vX3BhbmVscyBlZGl0X2ZpZWxkIGZpcnN0bGFzdCBpbnNfd2lkZSBpbnNkZWxsbiBrbmlnaHQgbmN1cnNlcyByZWRyYXcgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0Y3Vycword2FkZHdzdHIJCQl0ZXN0OiBpbnNfd2lkZSBuY3Vyc2VzIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9nZXRfd3N0cgord2F0dHJfZ2V0CQkJdGVzdDogbmN1cnNlcword2F0dHJfb2ZmCQkJbGliOiBuY3Vyc2VzCit3YXR0cl9vbgkJCWxpYjogbmN1cnNlcword2F0dHJfc2V0CQkJdGVzdDogbmN1cnNlcword2F0dHJvZmYJCQl0ZXN0OiBkZW1vX2Zvcm1zIG5jdXJzZXMgdGVzdGN1cnMgeG1hcword2F0dHJvbgkJCQl0ZXN0OiB0ZXN0Y3VycyB4bWFzCit3YXR0cnNldAkJCXRlc3Q6IGNsaXBfcHJpbnR3IGRlbW9fZm9ybXMgaW5zZGVsbG4gbmN1cnNlcyBuZXdkZW1vIHRlc3RfZ2V0X3dzdHIgdGVzdF9nZXRzdHIgdGVzdGN1cnMgeG1hcword2JrZ2QJCQkJdGVzdDogY2FyZGZpbGUgZGVtb19mb3JtcyBkZW1vX21lbnVzIG5jdXJzZXMgbmV3ZGVtbyB0ZXN0Y3Vycword2JrZ2RzZXQJCQl0ZXN0OiBkZW1vX3BhbmVscyBpbnNfd2lkZSBpbnNlcnRzIG5jdXJzZXMgdGVzdF9hZGRfd2Noc3RyIHRlc3RfYWRkY2hzdHIgdGVzdF9hZGRzdHIgdGVzdF9hZGR3c3RyCit3Ymtncm5kCQkJCWxpYjogbmN1cnNlcword2JrZ3JuZHNldAkJCWxpYjogbmN1cnNlcword2JvcmRlcgkJCQl0ZXN0OiBuY3Vyc2VzCit3Ym9yZGVyX3NldAkJCXRlc3Q6IG5jdXJzZXMKK3djaGdhdAkJCQl0ZXN0OiBjaGdhdCB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHZpZXcKK3djbGVhcgkJCQl0ZXN0OiBuY3Vyc2VzIHRlc3Rfb3BhcXVlIHRlc3RjdXJzCit3Y2xydG9ib3QJCQl0ZXN0OiBmaXJzdGxhc3QgaW5jaF93aWRlIGluY2hzIG5jdXJzZXMgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0Y3Vycword2NscnRvZW9sCQkJdGVzdDogY2hnYXQgY2xpcF9wcmludHcgZGVtb19kZWZrZXkgZGVtb19rZXlvayBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGZpcnN0bGFzdCBpbmNoX3dpZGUgaW5jaHMgaW5zX3dpZGUgaW5zZGVsbG4gaW5zZXJ0cyBrbmlnaHQgbmN1cnNlcyB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9pbnN0ciB0ZXN0X2lud3N0ciB0ZXN0Y3Vycword2NvbG9yX3NldAkJCWxpYjogbmN1cnNlcword2N1cnN5bmN1cAkJCWxpYjogZm9ybQord2RlbGNoCQkJCXRlc3Q6IG5jdXJzZXMgdGVzdGN1cnMKK3dkZWxldGVsbgkJCXRlc3Q6IGluc2RlbGxuIHRlc3RjdXJzCit3ZWNob193Y2hhcgkJCWxpYjogbmN1cnNlcword2VjaG9jaGFyCQkJbGliOiBuY3Vyc2VzCit3ZW5jbG9zZQkJCXRlc3Q6IG5jdXJzZXMKK3dlcmFzZQkJCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX2Zvcm1zIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZWRpdF9maWVsZCBmaXJzdGxhc3Qga25pZ2h0IG5jdXJzZXMgbmV3ZGVtbyB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3Rfb3BhcXVlIHRlc3RjdXJzIHhtYXMKK3dnZXRfd2NoCQkJdGVzdDogaW5zX3dpZGUgbmN1cnNlcyB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGR3c3RyCit3Z2V0X3dzdHIJCQl0ZXN0OiB0ZXN0X2dldF93c3RyCit3Z2V0Ymtncm5kCQkJbGliOiBuY3Vyc2VzCit3Z2V0Y2gJCQkJdGVzdDogY2FyZGZpbGUgY2hnYXQgY2xpcF9wcmludHcgZGVtb19kZWZrZXkgZGVtb19rZXlvayBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGRpdHRvIGVkaXRfZmllbGQgZ2RjIGluc2RlbGxuIGluc2VydHMga25pZ2h0IG1vdmV3aW5kb3cgbmN1cnNlcyBuZXdkZW1vIHJhaW4gcmVkcmF3IHNhdmVzY3JlZW4gdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X29wYXF1ZSB0ZXN0Y3VycyB3b3JtCit3Z2V0ZGVsYXkJCQktCit3Z2V0bl93c3RyCQkJdGVzdDogbmN1cnNlcyB0ZXN0X2dldF93c3RyCit3Z2V0bnN0cgkJCXRlc3Q6IG5jdXJzZXMgdGVzdF9nZXRzdHIKK3dnZXRwYXJlbnQJCQl0ZXN0OiB0ZXN0X29wYXF1ZQord2dldHNjcnJlZwkJCXRlc3Q6IHRlc3Rfb3BhcXVlCit3Z2V0c3RyCQkJCXRlc3Q6IHRlc3RfZ2V0c3RyCit3aGxpbmUJCQkJdGVzdDogdGVzdGN1cnMKK3dobGluZV9zZXQJCQlsaWI6IG5jdXJzZXMKK3dpbl93Y2gJCQkJdGVzdDogaW5jaF93aWRlIHNhdmVzY3JlZW4KK3dpbl93Y2huc3RyCQkJdGVzdDogaW5jaF93aWRlCit3aW5fd2Noc3RyCQkJdGVzdDogaW5jaF93aWRlCit3aW5jaAkJCQl0ZXN0OiBpbmNocyBrbmlnaHQgdGVzdGN1cnMKK3dpbmNobnN0cgkJCXRlc3Q6IGluY2hzCit3aW5jaHN0cgkJCXRlc3Q6IGluY2hzCit3aW5uc3RyCQkJCXRlc3Q6IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBmb2xka2V5cyB0ZXN0X2luc3RyCit3aW5ud3N0cgkJCXRlc3Q6IHRlc3RfaW53c3RyCit3aW5zX253c3RyCQkJdGVzdDogaW5zX3dpZGUKK3dpbnNfd2NoCQkJdGVzdDogaW5zX3dpZGUKK3dpbnNfd3N0cgkJCXRlc3Q6IGluc193aWRlCit3aW5zY2gJCQkJdGVzdDogaW5zX3dpZGUgaW5zZXJ0cyB0ZXN0Y3Vycword2luc2RlbGxuCQkJdGVzdDogaW5zZGVsbG4KK3dpbnNlcnRsbgkJCXRlc3Q6IGluc2RlbGxuIHRlc3RjdXJzCit3aW5zbnN0cgkJCXRlc3Q6IGluc2VydHMKK3dpbnNzdHIJCQkJdGVzdDogaW5zZXJ0cword2luc3RyCQkJCXRlc3Q6IHRlc3RfaW5zdHIKK3dpbndzdHIJCQkJdGVzdDogdGVzdF9pbndzdHIKK3dtb3VzZV90cmFmbwkJCXRlc3Q6IG5jdXJzZXMKK3dtb3ZlCQkJCXRlc3Q6IGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fYWx0a2V5cyBkZW1vX2RlZmtleSBkZW1vX2tleW9rIGRlbW9fbWVudXMgZGVtb19wYW5lbHMgZmlyc3RsYXN0IGZvbGRrZXlzIGluY2hfd2lkZSBpbmNocyBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGtuaWdodCBtb3Zld2luZG93IG5jdXJzZXMgbmV3ZGVtbyByZWRyYXcgc2F2ZXNjcmVlbiB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9nZXRfd3N0ciB0ZXN0X2dldHN0ciB0ZXN0X2luc3RyIHRlc3RfaW53c3RyIHRlc3Rfb3BhcXVlIHRlc3RjdXJzIHdvcm0KK3dub3V0cmVmcmVzaAkJCXRlc3Q6IGRlbW9fbWVudXMgZGl0dG8gZWRpdF9maWVsZCBpbmNoX3dpZGUgaW5jaHMgaW5zX3dpZGUgaW5zZXJ0cyBrbmlnaHQgbW92ZXdpbmRvdyBuY3Vyc2VzIHJlZHJhdyB0ZXN0X2FkZF93Y2hzdHIgdGVzdF9hZGRjaHN0ciB0ZXN0X2FkZHN0ciB0ZXN0X2FkZHdzdHIgdGVzdF9nZXRfd3N0ciB0ZXN0X2dldHN0ciB0ZXN0X2luc3RyIHRlc3RfaW53c3RyIHRlc3Rfb3BhcXVlCit3cHJpbnR3CQkJCXRlc3Q6IGNoZ2F0IGNsaXBfcHJpbnR3IGRlbW9fZGVma2V5IGRlbW9fZm9ybXMgZGVtb19rZXlvayBkZW1vX21lbnVzIGRlbW9fcGFuZWxzIGVkaXRfZmllbGQgaW5jaF93aWRlIGluY2hzIGluc193aWRlIGluc2RlbGxuIGluc2VydHMga25pZ2h0IG1vdmV3aW5kb3cgbmN1cnNlcyBzYXZlc2NyZWVuIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0X2dldF93c3RyIHRlc3RfZ2V0c3RyIHRlc3RfaW5zdHIgdGVzdF9pbndzdHIgdGVzdF9vcGFxdWUgdGVzdGN1cnMKK3dyZWRyYXdsbgkJCXRlc3Q6IHJlZHJhdword3JlZnJlc2gJCQl0ZXN0OiBjaGdhdCBjbGlwX3ByaW50dyBkZW1vX2Zvcm1zIGRlbW9fa2V5b2sgZGVtb19tZW51cyBkZW1vX3BhbmVscyBlZGl0X2ZpZWxkIGZpcnN0bGFzdCBpbnNfd2lkZSBpbnNkZWxsbiBpbnNlcnRzIGtuaWdodCBscnRlc3QgbW92ZXdpbmRvdyBuY3Vyc2VzIG5ld2RlbW8gcmVkcmF3IHNhdmVzY3JlZW4gdGNsb2NrIHRlc3RfYWRkX3djaHN0ciB0ZXN0X2FkZGNoc3RyIHRlc3RfYWRkc3RyIHRlc3RfYWRkd3N0ciB0ZXN0Y3VycyB2aWV3IHdvcm0geG1hcword3Jlc2l6ZQkJCQl0ZXN0OiBjYXJkZmlsZSBuY3Vyc2VzCit3c2NhbncJCQkJdGVzdDogdGVzdGN1cnMKK3dzY3JsCQkJCXRlc3Q6IG5jdXJzZXMgdGVzdGN1cnMKK3dzZXRzY3JyZWcJCQl0ZXN0OiBuY3Vyc2VzIHRlc3RjdXJzCit3c3RhbmRlbmQJCQl0ZXN0OiBuY3Vyc2VzIHRlc3Rfb3BhcXVlIHhtYXMKK3dzdGFuZG91dAkJCXRlc3Q6IG5jdXJzZXMgdGVzdF9vcGFxdWUgeG1hcword3N5bmNkb3duCQkJdGVzdDogbW92ZXdpbmRvdword3N5bmN1cAkJCQlsaWI6IGZvcm0KK3d0aW1lb3V0CQkJdGVzdDogbmN1cnNlcword3RvdWNobG4JCQlsaWI6IG5jdXJzZXMKK3d1bmN0cmwJCQkJbGliOiBuY3Vyc2VzCit3dW5jdHJsX3NwCQkJLQord3ZsaW5lCQkJCXRlc3Q6IHRlc3RjdXJzCit3dmxpbmVfc2V0CQkJbGliOiBuY3Vyc2VzCisKK2xpYnBhbmVsOgorLS0tLS0tLS0KK2JvdHRvbV9wYW5lbAkJCXRlc3Q6IGRlbW9fcGFuZWxzIG5jdXJzZXMKK2NlaWxpbmdfcGFuZWwJCQktCitkZWxfcGFuZWwJCQl0ZXN0OiBkZW1vX3BhbmVscyBuY3Vyc2VzCitncm91bmRfcGFuZWwJCQktCitoaWRlX3BhbmVsCQkJdGVzdDogZGVtb19wYW5lbHMgbmN1cnNlcworbW92ZV9wYW5lbAkJCXRlc3Q6IGRlbW9fcGFuZWxzIG5jdXJzZXMKK25ld19wYW5lbAkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fcGFuZWxzIG5jdXJzZXMKK3BhbmVsX2Fib3ZlCQkJdGVzdDogZGVtb19wYW5lbHMKK3BhbmVsX2JlbG93CQkJdGVzdDogZGVtb19wYW5lbHMKK3BhbmVsX2hpZGRlbgkJCXRlc3Q6IGRlbW9fcGFuZWxzCitwYW5lbF91c2VycHRyCQkJdGVzdDogZGVtb19wYW5lbHMgbmN1cnNlcworcGFuZWxfd2luZG93CQkJdGVzdDogY2FyZGZpbGUgZGVtb19wYW5lbHMgbmN1cnNlcworcmVwbGFjZV9wYW5lbAkJCXRlc3Q6IGRlbW9fcGFuZWxzCitzZXRfcGFuZWxfdXNlcnB0cgkJdGVzdDogZGVtb19wYW5lbHMgbmN1cnNlcworc2hvd19wYW5lbAkJCXRlc3Q6IGRlbW9fcGFuZWxzIG5jdXJzZXMKK3RvcF9wYW5lbAkJCXRlc3Q6IGNhcmRmaWxlIGRlbW9fcGFuZWxzIG5jdXJzZXMKK3VwZGF0ZV9wYW5lbHMJCQl0ZXN0OiBjYXJkZmlsZSBkZW1vX3BhbmVscyBuY3Vyc2VzCit1cGRhdGVfcGFuZWxzX3NwCQktCmRpZmYgLS1naXQgYS90ZXN0L2FjbG9jYWwubTQgYi90ZXN0L2FjbG9jYWwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhODNiNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvYWNsb2NhbC5tNApAQCAtMCwwICsxLDM3NTcgQEAKK2RubCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZG5sIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorZG5sIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCitkbmwgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKK2RubCB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorZG5sIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCitkbmwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKK2RubCBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKK2RubCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKK2RubCBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorZG5sIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCitkbmwgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKK2RubCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorZG5sIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCitkbmwgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCitkbmwgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKK2RubCBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorZG5sIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2RubAorZG5sICRJZDogYWNsb2NhbC5tNCx2IDEuMTIwIDIwMTUvMDgvMDggMTQ6Mjc6MjcgdG9tIEV4cCAkCitkbmwKK2RubCBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKK2RubAorZG5sIE1hY3JvcyB1c2VkIGluIE5DVVJTRVMgdGVzdCBwcm9ncmFtcyBhdXRvLWNvbmZpZ3VyYXRpb24gc2NyaXB0LgorZG5sCitkbmwgVGhlc2UgbWFjcm9zIGFyZSBtYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSBOQ1VSU0VTLiAgVGhlIGNvcHlyaWdodCBvbgorZG5sIHRoaXMgZmlsZSBhcHBsaWVzIHRvIHRoZSBhZ2dyZWdhdGlvbiBvZiBtYWNyb3MgYW5kIGRvZXMgbm90IGFmZmVjdCB1c2Ugb2YKK2RubCB0aGVzZSBtYWNyb3MgaW4gb3RoZXIgYXBwbGljYXRpb25zLgorZG5sCitkbmwgU2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi8gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCitkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BQ1ZFUlNJT05fQ0hFQ0sgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDE0LzA2LzA0IDE5OjExOjQ5CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29uZGl0aW9uYWxseSBnZW5lcmF0ZSBzY3JpcHQgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UncmUgdXNpbmcgYSBnaXZlbiBhdXRvY29uZi4KK2RubAorZG5sICQxID0gdmVyc2lvbiB0byBjb21wYXJlIGFnYWluc3QKK2RubCAkMiA9IGNvZGUgdG8gdXNlIGlmIEFDX0FDVkVSU0lPTiBpcyBhdCBsZWFzdCBhcyBoaWdoIGFzICQxLgorZG5sICQzID0gY29kZSB0byB1c2UgaWYgQUNfQUNWRVJTSU9OIGlzIG9sZGVyIHRoYW4gJDEuCitkZWZpbmUoW0NGX0FDVkVSU0lPTl9DSEVDS10sCitbCitpZmRlZihbQUNfQUNWRVJTSU9OXSwgLFtpZmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sW200X2NvcHkoW0FDX0FVVE9DT05GX1ZFUlNJT05dLFtBQ19BQ1ZFUlNJT05dKV0sW200X2NvcHkoW200X1BBQ0tBR0VfVkVSU0lPTl0sW0FDX0FDVkVSU0lPTl0pXSldKWRubAoraWZkZWYoW200X3ZlcnNpb25fY29tcGFyZV0sCitbbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW0FDX0FDVkVSU0lPTl0pLCBbJDFdKSwgLTEsIFskM10sIFskMl0pXSwKK1tDRl9BQ1ZFUlNJT05fQ09NUEFSRSgKK0FDX1BSRVJFUV9DQU5PTihBQ19QUkVSRVFfU1BMSVQoWyQxXSkpLAorQUNfUFJFUkVRX0NBTk9OKEFDX1BSRVJFUV9TUExJVChBQ19BQ1ZFUlNJT04pKSwgQUNfQUNWRVJTSU9OLCBbJDJdLCBbJDNdKV0pXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BQ1ZFUlNJT05fQ09NUEFSRSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTIvMTAvMDMgMTg6Mzk6NTMKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FDVkVSU0lPTl9DT01QQVJFKE1BSk9SMSwgTUlOT1IxLCBURVJOQVJZMSwKK2RubCAgICAgICAgICAgICAgICAgICAgICBNQUpPUjIsIE1JTk9SMiwgVEVSTkFSWTIsCitkbmwgICAgICAgICAgICAgICAgICAgICAgUFJJTlRBQkxFMiwgbm90IEZPVU5ELCBGT1VORCkKK2RlZmluZShbQ0ZfQUNWRVJTSU9OX0NPTVBBUkVdLAorW2lmZWxzZShidWlsdGluKFtldmFsXSwgWyQyIDwgJDVdKSwgMSwKK1tpZmVsc2UoWyQ4XSwgLCAsWyQ4XSldLAorW2lmZWxzZShbJDldLCAsICxbJDldKV0pXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfQ0ZMQUdTIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQ29weSBub24tcHJlcHJvY2Vzc29yIGZsYWdzIHRvICRDRkxBR1MsIHByZXByb2Nlc3NvciBmbGFncyB0byAkQ1BQRkxBR1MKK2RubCBUaGUgc2Vjb25kIHBhcmFtZXRlciBpZiBnaXZlbiBtYWtlcyB0aGlzIG1hY3JvIHZlcmJvc2UuCitkbmwKK2RubCBQdXQgYW55IHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyB0aGF0IHVzZSBxdW90ZWQgc3RyaW5ncyBpbiAkRVhUUkFfQ1BQRkxBR1MsCitkbmwgdG8gc2ltcGxpZnkgdXNlIG9mICRDUFBGTEFHUyBpbiBjb21waWxlciBjaGVja3MsIGV0Yy4sIHRoYXQgYXJlIGVhc2lseQorZG5sIGNvbmZ1c2VkIGJ5IHRoZSBxdW90ZXMgKHdoaWNoIHJlcXVpcmUgYmFja3NsYXNoZXMgdG8ga2VlcCB0aGVtIHVzYWJsZSkuCitBQ19ERUZVTihbQ0ZfQUREX0NGTEFHU10sCitbCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICQxCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW1tePV1dKj0nXCcnXCJbW14iXV0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKwkJCQlDRl9SRU1PVkVfREVGSU5FKENQUEZMQUdTLCRDUFBGTEFHUywkY2ZfdHN0X2NwcGZsYWdzKQorCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW1teIl1dKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKwlpZmVsc2UoWyQyXSwsLFtDRl9WRVJCT1NFKGFkZCB0byBcJENGTEFHUyAkY2ZfbmV3X2NmbGFncyldKQorCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCWlmZWxzZShbJDJdLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyldKQorCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCWlmZWxzZShbJDJdLCwsW0NGX1ZFUkJPU0UoYWRkIHRvIFwkRVhUUkFfQ1BQRkxBR1MgJGNmX25ld19leHRyYV9jcHBmbGFncyldKQorCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK0FDX1NVQlNUKEVYVFJBX0NQUEZMQUdTKQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9JTkNESVIgdmVyc2lvbjogMTQgdXBkYXRlZDogMjAxNS8wNS8yNSAyMDo1MzowNAorZG5sIC0tLS0tLS0tLS0tLS0KK2RubCBBZGQgYW4gaW5jbHVkZS1kaXJlY3RvcnkgdG8gJENQUEZMQUdTLiAgRG9uJ3QgYWRkIC91c3IvaW5jbHVkZSwgc2luY2UgaXQncworZG5sIHJlZHVuZGFudC4gIFdlIGRvbid0IG5vcm1hbGx5IG5lZWQgdG8gYWRkIC1JL3Vzci9sb2NhbC9pbmNsdWRlIGZvciBnY2MsCitkbmwgYnV0IG9sZCB2ZXJzaW9ucyAoYW5kIHNvbWUgbWlzaW5zdGFsbGVkIG9uZXMpIG5lZWQgdGhhdC4gIFRvIG1ha2UgdGhpbmdzCitkbmwgd29yc2UsIGdjYyAzLnggbWF5IGdpdmUgZXJyb3IgbWVzc2FnZXMgaWYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgaXMgYWRkZWQgdG8KK2RubCB0aGUgaW5jbHVkZS1wYXRoKS4KK0FDX0RFRlVOKFtDRl9BRERfSU5DRElSXSwKK1sKK2lmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJDEKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGlvLmg+XSwKKwkJCQkgIFtwcmludGYoIkhlbGxvIildLAorCQkJCSAgW10sCisJCQkJICBbY2ZfaGF2ZV9pbmNkaXI9eWVzXSkKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoKQorCQkgIGlmZWxzZShbJDJdLCxDUFBGTEFHUyxbJDJdKT0iJGlmZWxzZShbJDJdLCxDUFBGTEFHUyxbJDJdKSAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9MSUIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzA2LzAyIDA1OjAzOjA1CitkbmwgLS0tLS0tLS0tLQorZG5sIEFkZCBhIGxpYnJhcnksIHVzZWQgdG8gZW5mb3JjZSBjb25zaXN0ZW5jeS4KK2RubAorZG5sICQxID0gbGlicmFyeSB0byBhZGQsIHdpdGhvdXQgdGhlICItbCIKK2RubCAkMiA9IHZhcmlhYmxlIHRvIHVwZGF0ZSAoZGVmYXVsdCAkTElCUykKK0FDX0RFRlVOKFtDRl9BRERfTElCXSxbQ0ZfQUREX0xJQlMoLWwkMSxpZmVsc2UoJDIsLExJQlMsWyQyXSkpXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BRERfTElCRElSIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwJQWRkcyB0byB0aGUgbGlicmFyeS1wYXRoCitkbmwKK2RubAlTb21lIG1hY2hpbmVzIGhhdmUgdHJvdWJsZSB3aXRoIG11bHRpcGxlIC1MIG9wdGlvbnMuCitkbmwKK2RubCAkMSBpcyB0aGUgKGxpc3Qgb2YpIGRpcmVjdG9yeShzKSB0byBhZGQKK2RubCAkMiBpcyB0aGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gdXBkYXRlIChkZWZhdWx0IExERkxBR1MpCitkbmwKK0FDX0RFRlVOKFtDRl9BRERfTElCRElSXSwKK1sKK2lmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkMQorCWRvCisJCWlmIHRlc3QgJGNmX2FkZF9saWJkaXIgPSAvdXNyL2xpYiA7IHRoZW4KKwkJCToKKwkJZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCisJCXRoZW4KKwkJCWNmX2hhdmVfbGliZGlyPW5vCisJCQlpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KKwkJCQkjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCQkJZm9yIGNmX3Rlc3RfbGliZGlyIGluICRMREZMQUdTICRMSUJTIDsgZG8KKwkJCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgorCQkJCQkJY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWZpCisJCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCisJCQkJQ0ZfVkVSQk9TRShhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoKQorCQkJCWlmZWxzZShbJDJdLCxMREZMQUdTLFskMl0pPSItTCRjZl9hZGRfbGliZGlyICRpZmVsc2UoWyQyXSwsTERGTEFHUyxbJDJdKSIKKwkJCWZpCisJCWZpCisJZG9uZQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQUREX0xJQlMgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE0LzA3LzEzIDE0OjMzOjI3CitkbmwgLS0tLS0tLS0tLS0KK2RubCBBZGQgb25lIG9yIG1vcmUgbGlicmFyaWVzLCB1c2VkIHRvIGVuZm9yY2UgY29uc2lzdGVuY3kuICBMaWJyYXJpZXMgYXJlCitkbmwgcHJlcGVuZGVkIHRvIGFuIGV4aXN0aW5nIGxpc3QsIHNpbmNlIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgYXNzdW1lZCB0bworZG5sIGFscmVhZHkgZXhpc3QgaW4gdGhlIGxpc3QuCitkbmwKK2RubCAkMSA9IGxpYnJhcmllcyB0byBhZGQsIHdpdGggdGhlICItbCIsIGV0Yy4KK2RubCAkMiA9IHZhcmlhYmxlIHRvIHVwZGF0ZSAoZGVmYXVsdCAkTElCUykKK0FDX0RFRlVOKFtDRl9BRERfTElCU10sWworY2ZfYWRkX2xpYnM9IiQxIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluIFskXWlmZWxzZSgkMiwsTElCUyxbJDJdKQorZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQoraWZlbHNlKCQyLCxMSUJTLFskMl0pPSIkY2ZfYWRkX2xpYnMiCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9MSUJfQUZURVIgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEzLzA3LzA5IDIxOjI3OjIyCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIEFkZCBhIGdpdmVuIGxpYnJhcnkgYWZ0ZXIgYW5vdGhlciwgZS5nLiwgZm9sbG93aW5nIHRoZSBvbmUgaXQgc2F0aXNmaWVzIGEKK2RubCBkZXBlbmRlbmN5IGZvci4KK2RubAorZG5sICQxID0gdGhlIGZpcnN0IGxpYnJhcnkKK2RubCAkMiA9IGl0cyBkZXBlbmRlbmN5CitBQ19ERUZVTihbQ0ZfQUREX0xJQl9BRlRFUl0sWworQ0ZfVkVSQk9TRSguLi5iZWZvcmUgJExJQlMpCitMSUJTPWBlY2hvICIkTElCUyIgfCBzZWQgLWUgInMvW1sgCV1dW1sgCV1dKi8gL2ciIC1lICJzJSQxICUkMSAkMiAlIiAtZSAncyUgICUgJWcnYAorQ0ZfVkVSQk9TRSguLi5hZnRlciAgJExJQlMpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0FERF9TVUJESVJfUEFUSCB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTMvMTAvMDggMTc6NDc6MDUKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBBcHBlbmQgdG8gYSBzZWFyY2gtbGlzdCBmb3IgYSBub25zdGFuZGFyZCBoZWFkZXIvbGliLWZpbGUKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCitkbmwJJDMgPSB0aGUgc3ViZGlyZWN0b3J5LCBlLmcuLCBiaW4sIGluY2x1ZGUgb3IgbGliCitkbmwgJDQgPSB0aGUgZGlyZWN0b3J5IHVuZGVyIHdoaWNoIHdlIHdpbGwgdGVzdCBmb3Igc3ViZGlyZWN0b3JpZXMKK2RubCAkNSA9IGEgZGlyZWN0b3J5IHRoYXQgd2UgZG8gbm90IHdhbnQgJDQgdG8gbWF0Y2gKK0FDX0RFRlVOKFtDRl9BRERfU1VCRElSX1BBVEhdLAorWwordGVzdCAieCQ0IiAhPSAieCQ1IiAmJiBcCit0ZXN0IC1kICIkNCIgJiYgXAoraWZlbHNlKFskNV0sTk9ORSwsWyh0ZXN0IC16ICIkNSIgfHwgdGVzdCB4JDUgPSB4Tk9ORSB8fCB0ZXN0ICJ4JDQiICE9ICJ4JDUiKSAmJl0pIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciAkMy1kaXJlY3RvcmllcyB1bmRlciAkNCIKKwl0ZXN0IC1kICQ0LyQzICYmICAgICAgICAgICQxPSJbJF0kMSAkNC8kMyIKKwl0ZXN0IC1kICQ0LyQzLyQyICYmICAgICAgICQxPSJbJF0kMSAkNC8kMy8kMiIKKwl0ZXN0IC1kICQ0LyQzLyQyLyQzICYmICAgICQxPSJbJF0kMSAkNC8kMy8kMi8kMyIKKwl0ZXN0IC1kICQ0LyQyLyQzICYmICAgICAgICQxPSJbJF0kMSAkNC8kMi8kMyIKKwl0ZXN0IC1kICQ0LyQyLyQzLyQyICYmICAgICQxPSJbJF0kMSAkNC8kMi8kMy8kMiIKK30KK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQVJHX0RJU0FCTEUgdmVyc2lvbjogMyB1cGRhdGVkOiAxOTk5LzAzLzMwIDE3OjI0OjMxCitkbmwgLS0tLS0tLS0tLS0tLS0KK2RubCBBbGxvdyB1c2VyIHRvIGRpc2FibGUgYSBub3JtYWxseS1vbiBvcHRpb24uCitBQ19ERUZVTihbQ0ZfQVJHX0RJU0FCTEVdLAorW0NGX0FSR19PUFRJT04oJDEsWyQyXSxbJDNdLFskNF0seWVzKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQVJHX0VOQUJMRSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDE5OTkvMDMvMzAgMTc6MjQ6MzEKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQWxsb3cgdXNlciB0byBlbmFibGUgYSBub3JtYWxseS1vZmYgb3B0aW9uLgorQUNfREVGVU4oW0NGX0FSR19FTkFCTEVdLAorW0NGX0FSR19PUFRJT04oJDEsWyQyXSxbJDNdLFskNF0sbm8pXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9BUkdfT1BUSU9OIHZlcnNpb246IDUgdXBkYXRlZDogMjAxNS8wNS8xMCAxOTo1MjoxNAorZG5sIC0tLS0tLS0tLS0tLS0KK2RubCBSZXN0cmljdGVkIGZvcm0gb2YgQUNfQVJHX0VOQUJMRSB0aGF0IGVuc3VyZXMgdXNlciBkb2Vzbid0IGdpdmUgYm9ndXMKK2RubCB2YWx1ZXMuCitkbmwKK2RubCBQYXJhbWV0ZXJzOgorZG5sICQxID0gb3B0aW9uIG5hbWUKK2RubCAkMiA9IGhlbHAtc3RyaW5nCitkbmwgJDMgPSBhY3Rpb24gdG8gcGVyZm9ybSBpZiBvcHRpb24gaXMgbm90IGRlZmF1bHQKK2RubCAkNCA9IGFjdGlvbiBpZiBwZXJmb3JtIGlmIG9wdGlvbiBpcyBkZWZhdWx0CitkbmwgJDUgPSBkZWZhdWx0IG9wdGlvbiB2YWx1ZSAoZWl0aGVyICd5ZXMnIG9yICdubycpCitBQ19ERUZVTihbQ0ZfQVJHX09QVElPTl0sCitbQUNfQVJHX0VOQUJMRShbJDFdLFskMl0sW3Rlc3QgIiRlbmFibGV2YWwiICE9IGlmZWxzZShbJDVdLG5vLHllcyxubykgJiYgZW5hYmxldmFsPWlmZWxzZShbJDVdLG5vLG5vLHllcykKKwlpZiB0ZXN0ICIkZW5hYmxldmFsIiAhPSAiJDUiIDsgdGhlbgoraWZlbHNlKFskM10sLFsgICAgOl1kbmwKKyxbICAgICQzXSkgaWZlbHNlKFskNF0sLCxbCisJZWxzZQorCQkkNF0pCisJZmldLFtlbmFibGV2YWw9JDUgaWZlbHNlKFskNF0sLCxbCisJJDQKK10pZG5sCitdKV0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ0NfRU5WX0ZMQUdTIHZlcnNpb246IDIgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciB1c2VyJ3MgZW52aXJvbm1lbnQtYnJlYWthZ2UgYnkgc3R1ZmZpbmcgQ0ZMQUdTL0NQUEZMQUdTIGNvbnRlbnQKK2RubCBpbnRvIENDLiAgVGhpcyB3aWxsIG5vdCBoZWxwIHdpdGggYnJva2VuIHNjcmlwdHMgdGhhdCB3cmFwIHRoZSBjb21waWxlciB3aXRoCitkbmwgb3B0aW9ucywgYnV0IGVsaW1pbmF0ZXMgYSBtb3JlIGNvbW1vbiBjYXRlZ29yeSBvZiB1c2VyIGNvbmZ1c2lvbi4KK0FDX0RFRlVOKFtDRl9DQ19FTlZfRkxBR1NdLAorWworIyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gZGVmaW5lZCBieSBBQ19QUk9HX0NDCis6ICR7Q0M6PWNjfQorCitBQ19NU0dfQ0hFQ0tJTkcoXCRDQyB2YXJpYWJsZSkKK2Nhc2UgIiRDQyIgaW4KKygqW1tcIFwJXV0tW1tJVURdXSopCisJQUNfTVNHX1JFU1VMVChicm9rZW4pCisJQUNfTVNHX1dBUk4oeW91ciBlbnZpcm9ubWVudCBtaXN1c2VzIHRoZSBDQyB2YXJpYWJsZSB0byBob2xkIENGTEFHUy9DUFBGTEFHUyBvcHRpb25zKQorCSMgaHVtb3IgaGltLi4uCisJY2ZfZmxhZ3M9YGVjaG8gIiRDQyIgfCBzZWQgLWUgJ3MvXltbXiAJXV0qW1sgCV1dLy8nYAorCUNDPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL1tbIAldXS4qLy8nYAorCUNGX0FERF9DRkxBR1MoJGNmX2ZsYWdzKQorCTs7CisoKikKKwlBQ19NU0dfUkVTVUxUKG9rKQorCTs7Citlc2FjCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NIRUNLX0NBQ0hFIHZlcnNpb246IDEyIHVwZGF0ZWQ6IDIwMTIvMTAvMDIgMjA6NTU6MDMKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHdlJ3JlIGFjY2lkZW50YWxseSB1c2luZyBhIGNhY2hlIGZyb20gYSBkaWZmZXJlbnQgbWFjaGluZS4KK2RubCBEZXJpdmUgdGhlIHN5c3RlbSBuYW1lLCBhcyBhIGNoZWNrIGZvciByZXVzaW5nIHRoZSBhdXRvY29uZiBjYWNoZS4KK2RubAorZG5sIElmIHdlJ3ZlIHBhY2thZ2VkIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiwgcnVuIHRoYXQgKHNpbmNlIGl0IGRvZXMgYQorZG5sIGJldHRlciBqb2IgdGhhbiB1bmFtZSkuICBOb3JtYWxseSB3ZSdsbCB1c2UgQUNfQ0FOT05JQ0FMX0hPU1QsIGJ1dCBhbGxvdworZG5sIGFuIGV4dHJhIHBhcmFtZXRlciB0aGF0IHdlIG1heSBvdmVycmlkZSwgZS5nLiwgZm9yIEFDX0NBTk9OSUNBTF9TWVNURU0KK2RubCB3aGljaCBpcyB1c2VmdWwgaW4gY3Jvc3MtY29tcGlsZXMuCitkbmwKK2RubCBOb3RlOiB3ZSB3b3VsZCB1c2UgJGFjX2NvbmZpZ19zdWIsIGJ1dCB0aGF0IGlzIG9uZSBvZiB0aGUgcGxhY2VzIHdoZXJlCitkbmwgYXV0b2NvbmYgMi41eCBicm9rZSBjb21wYXRpYmlsaXR5IHdpdGggYXV0b2NvbmYgMi4xMworQUNfREVGVU4oW0NGX0NIRUNLX0NBQ0hFXSwKK1sKK2lmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuZ3Vlc3MgfHwgdGVzdCAtZiAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MgOyB0aGVuCisJaWZlbHNlKFskMV0sLFtBQ19DQU5PTklDQUxfSE9TVF0sWyQxXSkKKwlzeXN0ZW1fbmFtZT0iJGhvc3Rfb3MiCitlbHNlCisJc3lzdGVtX25hbWU9ImAodW5hbWUgLXMgLXIpIDI+L2Rldi9udWxsYCIKKwlpZiB0ZXN0IC16ICIkc3lzdGVtX25hbWUiIDsgdGhlbgorCQlzeXN0ZW1fbmFtZT0iYChob3N0bmFtZSkgMj4vZGV2L251bGxgIgorCWZpCitmaQordGVzdCAtbiAiJHN5c3RlbV9uYW1lIiAmJiBBQ19ERUZJTkVfVU5RVU9URUQoU1lTVEVNX05BTUUsIiRzeXN0ZW1fbmFtZSIsW0RlZmluZSB0byB0aGUgc3lzdGVtIG5hbWUuXSkKK0FDX0NBQ0hFX1ZBTChjZl9jdl9zeXN0ZW1fbmFtZSxbY2ZfY3Zfc3lzdGVtX25hbWU9IiRzeXN0ZW1fbmFtZSJdKQorCit0ZXN0IC16ICIkc3lzdGVtX25hbWUiICYmIHN5c3RlbV9uYW1lPSIkY2ZfY3Zfc3lzdGVtX25hbWUiCit0ZXN0IC1uICIkY2ZfY3Zfc3lzdGVtX25hbWUiICYmIEFDX01TR19SRVNVTFQoQ29uZmlndXJpbmcgZm9yICRjZl9jdl9zeXN0ZW1fbmFtZSkKKworaWYgdGVzdCAiLiRzeXN0ZW1fbmFtZSIgIT0gIi4kY2ZfY3Zfc3lzdGVtX25hbWUiIDsgdGhlbgorCUFDX01TR19SRVNVTFQoQ2FjaGVkIHN5c3RlbSBuYW1lICgkc3lzdGVtX25hbWUpIGRvZXMgbm90IGFncmVlIHdpdGggYWN0dWFsICgkY2ZfY3Zfc3lzdGVtX25hbWUpKQorCUFDX01TR19FUlJPUigiUGxlYXNlIHJlbW92ZSBjb25maWcuY2FjaGUgYW5kIHRyeSBhZ2Fpbi4iKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ0hFQ0tfQ0ZMQUdTIHZlcnNpb246IDMgdXBkYXRlZDogMjAxNC8wNy8yMiAwNTozMjo1NworZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENvbmRpdGlvbmFsbHkgYWRkIHRvICRDRkxBR1MgYW5kICRDUFBGTEFHUyB2YWx1ZXMgd2hpY2ggYXJlIGRlcml2ZWQgZnJvbQorZG5sIGEgYnVpbGQtY29uZmlndXJhdGlvbiBzdWNoIGFzIGltYWtlLiAgVGhlc2UgaGF2ZSB0aGUgcGl0ZmFsbCB0aGF0IHRoZXkKK2RubCBvZnRlbiBjb250YWluIGNvbXBpbGVyLXNwZWNpZmljIG9wdGlvbnMgd2hpY2ggd2UgY2Fubm90IHVzZSwgbWl4ZWQgd2l0aAorZG5sIHByZXByb2Nlc3NvciBvcHRpb25zIHRoYXQgd2UgdXN1YWxseSBjYW4uCitBQ19ERUZVTihbQ0ZfQ0hFQ0tfQ0ZMQUdTXSwKK1sKK0NGX1ZFUkJPU0UoY2hlY2tpbmcgYWRkaXRpb25zIHRvIENGTEFHUykKK2NmX2NoZWNrX2NmbGFncz0iJENGTEFHUyIKK2NmX2NoZWNrX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDRl9BRERfQ0ZMQUdTKCQxLHllcykKK2lmIHRlc3QgIngkY2ZfY2hlY2tfY2ZsYWdzIiAhPSAieCRDRkxBR1MiIDsgdGhlbgorQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzdGRpby5oPl0sW3ByaW50ZigiSGVsbG8gd29ybGQiKTtdLCwKKwlbQ0ZfVkVSQk9TRSh0ZXN0LWNvbXBpbGUgZmFpbGVkLiAgVW5kb2luZyBjaGFuZ2UgdG8gXCRDRkxBR1MpCisJIGlmIHRlc3QgIngkY2ZfY2hlY2tfY3BwZmxhZ3MiICE9ICJ4JENQUEZMQUdTIiA7IHRoZW4KKwkJIENGX1ZFUkJPU0UoYnV0IGtlZXBpbmcgY2hhbmdlIHRvIFwkQ1BQRkxBR1MpCisJIGZpCisJIENGTEFHUz0iJGNmX2NoZWNrX2ZsYWdzIl0pCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DSEVDS19DVVJTRVNfTElCIHZlcnNpb246IDEgdXBkYXRlZDogMjAxNS8wNC8yNSAyMDo1MzoxMQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCAkMSA9IG5vbWluYWwgbGlicmFyeSBuYW1lLCB1c2VkIGFsc28gZm9yIGhlYWRlciBsb29rdXAKK2RubCAkMiA9IHN1ZmZpeCB0byBhcHBlbmQgdG8gbGlicmFyeSBuYW1lCitkbmwgJDMgPSBmdW5jdGlvbiB0byBjaGVjayBmb3IgdXNpbmcgQUNfQ0hFQ0tfTElCCitBQ19ERUZVTihbQ0ZfQ0hFQ0tfQ1VSU0VTX0xJQl0sCitbCitBQ19DSEVDS19MSUIoJDEkMiwkMyxbCitDRl9VUFBFUihjZl91cHBlcixoYXZlX2xpYiQxKQorQ0ZfQUREX0xJQlMoLWwkMSQyKQorQUNfREVGSU5FX1VOUVVPVEVEKCRjZl91cHBlciwxKV0pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NMQU5HX0NPTVBJTEVSIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMy8xMS8xOSAxOToyMzozNQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgdGhlIGdpdmVuIGNvbXBpbGVyIGlzIHJlYWxseSBjbGFuZy4gIGNsYW5nJ3MgQyBkcml2ZXIgZGVmaW5lcworZG5sIF9fR05VQ19fIChmb29saW5nIHRoZSBjb25maWd1cmUgc2NyaXB0IGludG8gc2V0dGluZyAkR0NDIHRvIHllcykgYnV0IGRvZXMKK2RubCBub3QgaWdub3JlIHNvbWUgZ2NjIG9wdGlvbnMuCitkbmwKK2RubCBUaGlzIG1hY3JvIHNob3VsZCBiZSBydW4gInNvb24iIGFmdGVyIEFDX1BST0dfQ0Mgb3IgQUNfUFJPR19DUExVU1BMVVMsIHRvCitkbmwgZW5zdXJlIHRoYXQgaXQgaXMgbm90IG1pc3Rha2VuIGZvciBnY2MvZysrLiAgSXQgaXMgbm9ybWFsbHkgaW52b2tlZCBmcm9tCitkbmwgdGhlIHdyYXBwZXJzIGZvciBnY2MgYW5kIGcrKyB3YXJuaW5ncy4KK2RubAorZG5sICQxID0gR0NDIChkZWZhdWx0KSBvciBHWFgKK2RubCAkMiA9IENMQU5HX0NPTVBJTEVSIChkZWZhdWx0KQorZG5sICQzID0gQ0ZMQUdTIChkZWZhdWx0KSBvciBDWFhGTEFHUworQUNfREVGVU4oW0NGX0NMQU5HX0NPTVBJTEVSXSxbCitpZmVsc2UoWyQyXSwsQ0xBTkdfQ09NUElMRVIsWyQyXSk9bm8KKworaWYgdGVzdCAiJGlmZWxzZShbJDFdLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgorCUFDX01TR19DSEVDS0lORyhpZiB0aGlzIGlzIHJlYWxseSBDbGFuZyBpZmVsc2UoWyQxXSxHWFgsQysrLEMpIGNvbXBpbGVyKQorCWNmX3NhdmVfQ0ZMQUdTPSIkaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKSIKKwlpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pPSIkaWZlbHNlKFskM10sLENGTEFHUyxbJDNdKSAtUXVudXNlZC1hcmd1bWVudHMiCisJQUNfVFJZX0NPTVBJTEUoW10sWworI2lmZGVmIF9fY2xhbmdfXworI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorXSxbaWZlbHNlKFskMl0sLENMQU5HX0NPTVBJTEVSLFskMl0pPXllcworY2Zfc2F2ZV9DRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtUXVudXNlZC1hcmd1bWVudHMiCitdLFtdKQorCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRjZl9zYXZlX0NGTEFHUyIKKwlBQ19NU0dfUkVTVUxUKCRpZmVsc2UoWyQyXSwsQ0xBTkdfQ09NUElMRVIsWyQyXSkpCitmaQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfQUNTX01BUCB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTY6Mzk6NTgKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciBsaWtlbHkgdmFsdWVzIG9mIGFjc19tYXBbXToKK0FDX0RFRlVOKFtDRl9DVVJTRVNfQUNTX01BUF0sCitbCitBQ19SRVFVSVJFKFtDRl9OQ1VSU0VTX1dSQVBfUFJFRklYXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKGZvciBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCBhcnJheSwgY2ZfY3ZfY3Vyc2VzX2Fjc19tYXAsWworY2ZfY3ZfY3Vyc2VzX2Fjc19tYXA9dW5rbm93bgorZm9yIG5hbWUgaW4gYWNzX21hcCBfYWNzX21hcCBfX2Fjc19tYXAgJHtOQ1VSU0VTX1dSQVBfUFJFRklYfWFjc19tYXAKK2RvCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorXSxbCiskbmFtZVsnayddID0gQUNTX1BMVVMKK10sW2NmX2N2X2N1cnNlc19hY3NfbWFwPSRuYW1lOyBicmVha10pCitkb25lCitdKQorCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2Fjc19tYXAiICE9IHVua25vd24gJiYgQUNfREVGSU5FX1VOUVVPVEVEKENVUlNFU19BQ1NfQVJSQVksJGNmX2N2X2N1cnNlc19hY3NfbWFwLFtEZWZpbmUgYXMgbmVlZGVkIHRvIG92ZXJyaWRlIG5jdXJzZXMgcHJlZml4IF9uY19dKQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfQ0hFQ0tfREFUQSB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTQvMDcvMTkgMTg6NDE6MTcKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIGN1cnNlcy5oIGRlZmluZXMgdGhlIGdpdmVuIGRhdGEvdmFyaWFibGUuCitkbmwgVXNlIHRoaXMgYWZ0ZXIgQ0ZfTkNVUlNFU19DT05GSUcgb3IgQ0ZfQ1VSU0VTX0NPTkZJRy4KK0FDX0RFRlVOKFtDRl9DVVJTRVNfQ0hFQ0tfREFUQV0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGRhdGEgJDEgZGVjbGFyYXRpb24gaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9KQorCitBQ19UUllfQ09NUElMRShDRl9fQ1VSU0VTX0hFQUQsWwordm9pZCAqZm9vID0gJigkMSkKK10sY2ZfcmVzdWx0PXllcyxjZl9yZXN1bHQ9bm8pCitBQ19NU0dfUkVTVUxUKCRjZl9yZXN1bHQpCisKK2lmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKwlDRl9VUFBFUihjZl9yZXN1bHQsaGF2ZV9jdXJzZXNfZGF0YV8kMSkKKwlBQ19ERUZJTkVfVU5RVU9URUQoJGNmX3Jlc3VsdCkKK2Vsc2UKKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yIGRhdGEgJDEgaW4gbGlicmFyeSkKKwkjIEJTRCBsaW5rZXJzIGluc2lzdCBvbiBtYWtpbmcgd2VhayBsaW5rYWdlLCBidXQgcmVzb2x2ZSBhdCBydW50aW1lLgorCUFDX1RSWV9SVU4oQ0ZfX0NVUlNFU19IRUFECitbCitleHRlcm4gY2hhciAkMTsKK2ludCBtYWluKHZvaWQpCit7CisJdm9pZCAqZm9vID0gJigkMSk7CisJZnByaW50ZihzdGRlcnIsICJ0ZXN0aW5nIGxpbmthZ2Ugb2YgJDE6JXBcbiIsIGZvbyk7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShmb28gPT0gMCk7Cit9XSxbY2ZfcmVzdWx0PXllc10sW2NmX3Jlc3VsdD1ub10sWworCSMgY3Jvc3MtY29tcGlsaW5nCisJQUNfVFJZX0xJTksoQ0ZfX0NVUlNFU19IRUFECitbZXh0ZXJuIGNoYXIgJDE7XSxbCisJZG8geworCQl2b2lkICpmb28gPSAmKCQxKTsKKwkJZnByaW50ZihzdGRlcnIsICJ0ZXN0aW5nIGxpbmthZ2Ugb2YgJDE6JXBcbiIsIGZvbyk7CisJCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oZm9vID09IDApOworCX0gd2hpbGUgKDApCitdLFtjZl9yZXN1bHQ9eWVzXSxbY2ZfcmVzdWx0PW5vXSkKK10pCisJQUNfTVNHX1JFU1VMVCgkY2ZfcmVzdWx0KQorCWlmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKwkJQ0ZfVVBQRVIoY2ZfcmVzdWx0LGRlY2xfY3Vyc2VzX2RhdGFfJDEpCisJCUFDX0RFRklORV9VTlFVT1RFRCgkY2ZfcmVzdWx0KQorCWZpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfQ0hFQ0tfVFlQRSB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTY6Mzk6NTgKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIGN1cnNlcy5oIGRlZmluZXMgdGhlIGdpdmVuIHR5cGUKK0FDX0RFRlVOKFtDRl9DVVJTRVNfQ0hFQ0tfVFlQRV0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHR5cGUgJDEgaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9KQorQUNfVFJZX0NPTVBJTEUoWworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT5dLFsKKyQxIGZvbworXSxjZl9yZXN1bHQ9eWVzLGNmX3Jlc3VsdD1ubykKK0FDX01TR19SRVNVTFQoJGNmX3Jlc3VsdCkKK2lmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKwlDRl9VUFBFUihjZl9yZXN1bHQsaGF2ZV90eXBlXyQxKQorCUFDX0RFRklORV9VTlFVT1RFRCgkY2ZfcmVzdWx0LDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgdHlwZSAkMV0pCitlbHNlCisJQUNfREVGSU5FX1VOUVVPVEVEKCQxLCQyLFtEZWZpbmUgdG8gYXBwcm9wcmlhdGUgdHlwZSBpZiAkMSBpcyBub3QgZGVjbGFyZWRdKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ1VSU0VTX0NPTkZJRyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMDYvMTAvMjkgMTE6MDY6MjcKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgVGllIHRvZ2V0aGVyIHRoZSBjb25maWd1cmUtc2NyaXB0IG1hY3JvcyBmb3IgY3Vyc2VzLiAgSXQgbWF5IGJlIG5jdXJzZXMsCitkbmwgYnV0IHVubGVzcyBhc2tlZCwgd2UgZG8gbm90IG1ha2UgYSBzcGVjaWFsIHNlYXJjaCBmb3IgbmN1cnNlcy4gIEhvd2V2ZXIsCitkbmwgc3RpbGwgY2hlY2sgZm9yIHRoZSBuY3Vyc2VzIHZlcnNpb24gbnVtYmVyLCBmb3IgdXNlIGluIG90aGVyIG1hY3Jvcy4KK0FDX0RFRlVOKFtDRl9DVVJTRVNfQ09ORklHXSwKK1sKK0NGX0NVUlNFU19DUFBGTEFHUworQ0ZfTkNVUlNFU19WRVJTSU9OCitDRl9DVVJTRVNfTElCUworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfQ1BQRkxBR1MgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAxNS8wNC8xNSAxOTowODo0OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIExvb2sgZm9yIHRoZSBjdXJzZXMgaGVhZGVycy4KK0FDX0RFRlVOKFtDRl9DVVJTRVNfQ1BQRkxBR1NdLFsKKworQUNfQ0FDSEVfQ0hFQ0soZm9yIGV4dHJhIGluY2x1ZGUgZGlyZWN0b3JpZXMsY2ZfY3ZfY3Vyc2VzX2luY2RpcixbCitjZl9jdl9jdXJzZXNfaW5jZGlyPW5vCitjYXNlICRob3N0X29zIGluCisoaHB1eDEwLiopCisJaWYgdGVzdCAieCRjZl9jdl9zY3JlZW4iID0gInhjdXJzZXNfY29sciIKKwl0aGVuCisJCXRlc3QgLWQgL3Vzci9pbmNsdWRlL2N1cnNlc19jb2xyICYmIFwKKwkJY2ZfY3ZfY3Vyc2VzX2luY2Rpcj0iLUkvdXNyL2luY2x1ZGUvY3Vyc2VzX2NvbHIiCisJZmkKKwk7OworKHN1bm9zMyp8c3Vub3M0KikKKwlpZiB0ZXN0ICJ4JGNmX2N2X3NjcmVlbiIgPSAieGN1cnNlc181bGliIgorCXRoZW4KKwkJdGVzdCAtZCAvdXNyLzVsaWIgJiYgXAorCQl0ZXN0IC1kIC91c3IvNWluY2x1ZGUgJiYgXAorCQljZl9jdl9jdXJzZXNfaW5jZGlyPSItSS91c3IvNWluY2x1ZGUiCisJZmkKKwk7OworZXNhYworXSkKK3Rlc3QgIiRjZl9jdl9jdXJzZXNfaW5jZGlyIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9jdl9jdXJzZXNfaW5jZGlyIgorCitDRl9DVVJTRVNfSEVBREVSCitDRl9URVJNX0hFQURFUgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfRlVOQ1MgdmVyc2lvbjogMTggdXBkYXRlZDogMjAxNC8wNy8xOSAxODo0NDo0MQorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIEN1cnNlcy1mdW5jdGlvbnMgYXJlIGEgbGl0dGxlIGNvbXBsaWNhdGVkLCBzaW5jZSBhIGxvdCBvZiB0aGVtIGFyZSBtYWNyb3MuCitBQ19ERUZVTihbQ0ZfQ1VSU0VTX0ZVTkNTXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0NVUlNFU19DUFBGTEFHU10pZG5sCitBQ19SRVFVSVJFKFtDRl9YT1BFTl9DVVJTRVNdKQorQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX1RFUk1fSF0pCitBQ19SRVFVSVJFKFtDRl9DVVJTRVNfVU5DVFJMX0hdKQorZm9yIGNmX2Z1bmMgaW4gJDEKK2RvCisJQ0ZfVVBQRVIoY2ZfdHJfZnVuYywkY2ZfZnVuYykKKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yICR7Y2ZfZnVuY30pCisJQ0ZfTVNHX0xPRygke2NmX2Z1bmN9KQorCUFDX0NBQ0hFX1ZBTChjZl9jdl9mdW5jXyRjZl9mdW5jLFsKKwkJZXZhbCBjZl9yZXN1bHQ9JyRhY19jdl9mdW5jXyckY2ZfZnVuYworCQlpZiB0ZXN0ICIuJGNmX3Jlc3VsdCIgIT0gIi5ubyI7IHRoZW4KKwkJCUFDX1RSWV9MSU5LKENGX19DVVJTRVNfSEVBRCwKKwkJCVsKKyNpZm5kZWYgJHtjZl9mdW5jfQorbG9uZyBmb28gPSAobG9uZykoJiR7Y2ZfZnVuY30pOworZnByaW50ZihzdGRlcnIsICJ0ZXN0aW5nIGxpbmthZ2Ugb2YgJGNmX2Z1bmM6JXBcbiIsIGZvbyk7CitpZiAoZm9vICsgMTIzNCA+IDU2NzgpCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShmb28pOworI2VuZGlmCisJCQldLAorCQkJW2NmX3Jlc3VsdD15ZXNdLAorCQkJW2NmX3Jlc3VsdD1ub10pCisJCWZpCisJCWV2YWwgJ2NmX2N2X2Z1bmNfJyRjZl9mdW5jJz0kY2ZfcmVzdWx0JworCV0pCisJIyB1c2UgdGhlIGNvbXB1dGVkL3JldHJpZXZlZCBjYWNoZS12YWx1ZToKKwlldmFsICdjZl9yZXN1bHQ9JGNmX2N2X2Z1bmNfJyRjZl9mdW5jCisJQUNfTVNHX1JFU1VMVCgkY2ZfcmVzdWx0KQorCWlmIHRlc3QgJGNmX3Jlc3VsdCAhPSBubzsgdGhlbgorCQlBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV8ke2NmX3RyX2Z1bmN9KQorCWZpCitkb25lCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NVUlNFU19IRUFERVIgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDE1LzA0LzIzIDIwOjM1OjMwCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIEZpbmQgYSAiY3Vyc2VzIiBoZWFkZXIgZmlsZSwgZS5nLC4gImN1cnNlcy5oIiwgb3Igb25lIG9mIHRoZSBtb3JlIGNvbW1vbgorZG5sIHZhcmlhdGlvbnMgb2YgbmN1cnNlcycgaW5zdGFsbHMuCitkbmwKK2RubCAkMSA9IG5jdXJzZXMgd2hlbiBsb29raW5nIGZvciBuY3Vyc2VzLCBvciBpcyBlbXB0eQorQUNfREVGVU4oW0NGX0NVUlNFU19IRUFERVJdLFsKK0FDX0NBQ0hFX0NIRUNLKGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgaGVhZGVycyxjZl9jdl9uY3Vyc2VzX2hlYWRlcixbCitjZl9jdl9uY3Vyc2VzX2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIFwKKwluY3Vyc2VzLmggaWZlbHNlKCQxLCwsWyQxL25jdXJzZXMuaF0pIFwKKwljdXJzZXMuaCBpZmVsc2UoJDEsLCxbJDEvY3Vyc2VzLmhdKSBpZmVsc2UoJDEsLFtuY3Vyc2VzL25jdXJzZXMuaCBuY3Vyc2VzL2N1cnNlcy5oXSkKK2RvCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPCR7Y2ZfaGVhZGVyfT5dLAorCVtpbml0c2NyKCk7IHRnb3RvKCI/IiwgMCwwKV0sCisJW2NmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9oZWFkZXI7IGJyZWFrXSxbXSkKK2RvbmUKK10pCisKK2lmIHRlc3QgIiRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPSBub25lIDsgdGhlbgorCUFDX01TR19FUlJPUihObyBjdXJzZXMgaGVhZGVyLWZpbGVzIGZvdW5kKQorZmkKKworIyBjaGVhdCwgdG8gZ2V0IHRoZSByaWdodCAjZGVmaW5lJ3MgZm9yIEhBVkVfTkNVUlNFU19ILCBldGMuCitBQ19DSEVDS19IRUFERVJTKCRjZl9jdl9uY3Vyc2VzX2hlYWRlcikKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfQ1VSU0VTX0xJQlMgdmVyc2lvbjogMzkgdXBkYXRlZDogMjAxNS8wNS8xMCAxOTo1MjoxNAorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgTG9vayBmb3IgdGhlIGN1cnNlcyBsaWJyYXJpZXMuICBPbGRlciBjdXJzZXMgaW1wbGVtZW50YXRpb25zIG1heSByZXF1aXJlCitkbmwgdGVybWNhcC90ZXJtbGliIHRvIGJlIGxpbmtlZCBhcyB3ZWxsLiAgQ2FsbCBDRl9DVVJTRVNfQ1BQRkxBR1MgZmlyc3QuCitBQ19ERUZVTihbQ0ZfQ1VSU0VTX0xJQlNdLFsKKworQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX0NQUEZMQUdTXSlkbmwKK0FDX01TR19DSEVDS0lORyhpZiB3ZSBoYXZlIGlkZW50aWZpZWQgY3Vyc2VzIGxpYnJhcmllcykKK0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJW2luaXRzY3IoKTsgdGdvdG8oIj8iLCAwLDApXSwKKwljZl9yZXN1bHQ9eWVzLAorCWNmX3Jlc3VsdD1ubykKK0FDX01TR19SRVNVTFQoJGNmX3Jlc3VsdCkKKworaWYgdGVzdCAiJGNmX3Jlc3VsdCIgPSBubyA7IHRoZW4KK2Nhc2UgJGhvc3Rfb3MgaW4KKyhmcmVlYnNkKikKKwlBQ19DSEVDS19MSUIobXl0aW5mbyx0Z290byxbQ0ZfQUREX0xJQlMoLWxteXRpbmZvKV0pCisJOzsKKyhocHV4MTAuKikKKwkjIExvb2tpbmcgYXQgSFBVWCAxMC4yMCwgdGhlIEhjdXJzZXMgbGlicmFyeSBpcyB0aGUgb2xkZXN0ICgxOTk3KSwgY3VyX2NvbHIKKwkjIG5leHQgKDE5OTgpLCBhbmQgeGN1cnNlcyAibmV3ZXIiICgyMDAwKS4gIFRoZXJlIGlzIG5vIGhlYWRlciBmaWxlIGZvcgorCSMgSGN1cnNlczsgdGhlIHN1YmRpcmVjdG9yeSBjdXJzZXNfY29sciBoYXMgdGhlIGhlYWRlcnMgKGN1cnNlcy5oIGFuZAorCSMgdGVybS5oKSBmb3IgY3VyX2NvbHIKKwlpZiB0ZXN0ICJ4JGNmX2N2X3NjcmVlbiIgPSAieGN1cnNlc19jb2xyIgorCXRoZW4KKwkJQUNfQ0hFQ0tfTElCKGN1cl9jb2xyLGluaXRzY3IsWworCQkJQ0ZfQUREX0xJQlMoLWxjdXJfY29scikKKwkJCWFjX2N2X2Z1bmNfaW5pdHNjcj15ZXMKKwkJCV0sWworCQlBQ19DSEVDS19MSUIoSGN1cnNlcyxpbml0c2NyLFsKKwkJCSMgSFAncyBoZWFkZXIgdXNlcyBfX0hQX0NVUlNFUywgYnV0IHVzZXIgY2xhaW1zIF9IUF9DVVJTRVMuCisJCQlDRl9BRERfTElCUygtbEhjdXJzZXMpCisJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX19IUF9DVVJTRVMgLURfSFBfQ1VSU0VTIgorCQkJYWNfY3ZfZnVuY19pbml0c2NyPXllcworCQkJXSldKQorCWZpCisJOzsKKyhsaW51eCopCisJY2FzZSBgYXJjaCAyPi9kZXYvbnVsbGAgaW4KKwkoeDg2XzY0KQorCQlpZiB0ZXN0IC1kIC9saWI2NAorCQl0aGVuCisJCQlDRl9BRERfTElCRElSKC9saWI2NCkKKwkJZWxzZQorCQkJQ0ZfQUREX0xJQkRJUigvbGliKQorCQlmaQorCQk7OworCSgqKQorCQlDRl9BRERfTElCRElSKC9saWIpCisJCTs7CisJZXNhYworCTs7Cisoc3Vub3MzKnxzdW5vczQqKQorCWlmIHRlc3QgIngkY2ZfY3Zfc2NyZWVuIiA9ICJ4Y3Vyc2VzXzVsaWIiCisJdGhlbgorCQlpZiB0ZXN0IC1kIC91c3IvNWxpYiA7IHRoZW4KKwkJCUNGX0FERF9MSUJESVIoL3Vzci81bGliKQorCQkJQ0ZfQUREX0xJQlMoLWxjdXJzZXMgLWx0ZXJtY2FwKQorCQlmaQorCWZpCisJYWNfY3ZfZnVuY19pbml0c2NyPXllcworCTs7Citlc2FjCisKK2lmIHRlc3QgIi4kYWNfY3ZfZnVuY19pbml0c2NyIiAhPSAueWVzIDsgdGhlbgorCWNmX3NhdmVfTElCUz0iJExJQlMiCisKKwlpZiB0ZXN0ICIuJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb246LW5vfSIgIT0gLm5vCisJdGhlbgorCQljZl9jaGVja19saXN0PSJuY3Vyc2VzIGN1cnNlcyBjdXJzZXNYIgorCWVsc2UKKwkJY2ZfY2hlY2tfbGlzdD0iY3Vyc2VzWCBjdXJzZXMgbmN1cnNlcyIKKwlmaQorCisJIyBDaGVjayBmb3IgbGlicmFyeSBjb250YWluaW5nIHRnb3RvLiAgRG8gdGhpcyBiZWZvcmUgY3Vyc2VzIGxpYnJhcnkKKwkjIGJlY2F1c2UgaXQgbWF5IGJlIG5lZWRlZCB0byBsaW5rIHRoZSB0ZXN0LWNhc2UgZm9yIGluaXRzY3IuCisJaWYgdGVzdCAieCRjZl90ZXJtX2xpYiIgPSB4CisJdGhlbgorCQlBQ19DSEVDS19GVU5DKHRnb3RvLFtjZl90ZXJtX2xpYj1wcmVkZWZpbmVkXSxbCisJCQlmb3IgY2ZfdGVybV9saWIgaW4gJGNmX2NoZWNrX2xpc3Qgb3Rlcm1jYXAgdGVybWNhcCB0aW5mbyB0ZXJtbGliIHVua25vd24KKwkJCWRvCisJCQkJQUNfQ0hFQ0tfTElCKCRjZl90ZXJtX2xpYix0Z290byxbYnJlYWtdKQorCQkJZG9uZQorCQldKQorCWZpCisKKwkjIENoZWNrIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgaW5pdHNjcgorCXRlc3QgIiRjZl90ZXJtX2xpYiIgIT0gcHJlZGVmaW5lZCAmJiB0ZXN0ICIkY2ZfdGVybV9saWIiICE9IHVua25vd24gJiYgTElCUz0iLWwkY2ZfdGVybV9saWIgJGNmX3NhdmVfTElCUyIKKwlpZiB0ZXN0ICJ4JGNmX2N1cnNfbGliIiA9IHgKKwl0aGVuCisJCWZvciBjZl9jdXJzX2xpYiBpbiAkY2ZfY2hlY2tfbGlzdCB4Y3Vyc2VzIGpjdXJzZXMgcGRjdXJzZXMgdW5rbm93bgorCQlkbworCQkJQUNfQ0hFQ0tfTElCKCRjZl9jdXJzX2xpYixpbml0c2NyLFticmVha10pCisJCWRvbmUKKwlmaQorCXRlc3QgJGNmX2N1cnNfbGliID0gdW5rbm93biAmJiBBQ19NU0dfRVJST1Iobm8gY3Vyc2VzIGxpYnJhcnkgZm91bmQpCisKKwlMSUJTPSItbCRjZl9jdXJzX2xpYiAkY2Zfc2F2ZV9MSUJTIgorCWlmIHRlc3QgIiRjZl90ZXJtX2xpYiIgPSB1bmtub3duIDsgdGhlbgorCQlBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIGxpbmsgd2l0aCAkY2ZfY3Vyc19saWIgbGlicmFyeSkKKwkJQUNfVFJZX0xJTksoWyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwkJCVtpbml0c2NyKCldLAorCQkJW2NmX3Jlc3VsdD15ZXNdLAorCQkJW2NmX3Jlc3VsdD1ub10pCisJCUFDX01TR19SRVNVTFQoJGNmX3Jlc3VsdCkKKwkJdGVzdCAkY2ZfcmVzdWx0ID0gbm8gJiYgQUNfTVNHX0VSUk9SKENhbm5vdCBsaW5rIGN1cnNlcyBsaWJyYXJ5KQorCWVsaWYgdGVzdCAiJGNmX2N1cnNfbGliIiA9ICIkY2ZfdGVybV9saWIiIDsgdGhlbgorCQk6CisJZWxpZiB0ZXN0ICIkY2ZfdGVybV9saWIiICE9IHByZWRlZmluZWQgOyB0aGVuCisJCUFDX01TR19DSEVDS0lORyhpZiB3ZSBuZWVkIGJvdGggJGNmX2N1cnNfbGliIGFuZCAkY2ZfdGVybV9saWIgbGlicmFyaWVzKQorCQlBQ19UUllfTElOSyhbI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT5dLAorCQkJW2luaXRzY3IoKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTtdLAorCQkJW2NmX3Jlc3VsdD1ub10sCisJCQlbCisJCQlMSUJTPSItbCRjZl9jdXJzX2xpYiAtbCRjZl90ZXJtX2xpYiAkY2Zfc2F2ZV9MSUJTIgorCQkJQUNfVFJZX0xJTksoWyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwkJCQlbaW5pdHNjcigpXSwKKwkJCQlbY2ZfcmVzdWx0PXllc10sCisJCQkJW2NmX3Jlc3VsdD1lcnJvcl0pCisJCQldKQorCQlBQ19NU0dfUkVTVUxUKCRjZl9yZXN1bHQpCisJZmkKK2ZpCitmaQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0NVUlNFU19URVJNX0ggdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxNS8wNC8xNSAxOTowODo0OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBTVnI0IGN1cnNlcyBzaG91bGQgaGF2ZSB0ZXJtLmggYXMgd2VsbCAod2hlcmUgaXQgcHV0cyB0aGUgZGVmaW5pdGlvbnMgb2YKK2RubCB0aGUgbG93LWxldmVsIGludGVyZmFjZSkuICBUaGlzIG1heSBub3QgYmUgdHJ1ZSBpbiBvbGQvYnJva2VuIGltcGxlbWVudGF0aW9ucywKK2RubCBhcyB3ZWxsIGFzIGluIG1pc2NvbmZpZ3VyZWQgc3lzdGVtcyAoZS5nLiwgZ2NjIGNvbmZpZ3VyZWQgZm9yIFNvbGFyaXMgMi40CitkbmwgcnVubmluZyB3aXRoIFNvbGFyaXMgMi41LjEpLgorQUNfREVGVU4oW0NGX0NVUlNFU19URVJNX0hdLAorWworQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX0NQUEZMQUdTXSlkbmwKKworQUNfQ0FDSEVfQ0hFQ0soZm9yIHRlcm0uaCwgY2ZfY3ZfdGVybV9oZWFkZXIsWworCisjIElmIHdlIGZvdW5kIDxuY3Vyc2VzL2N1cnNlcy5oPiwgbG9vayBmb3IgPG5jdXJzZXMvdGVybS5oPiwgYnV0IGFsd2F5cyBsb29rCisjIGZvciA8dGVybS5oPiBpZiB3ZSBkbyBub3QgZmluZCB0aGUgdmFyaWFudC4KKworY2ZfaGVhZGVyX2xpc3Q9InRlcm0uaCBuY3Vyc2VzL3Rlcm0uaCBuY3Vyc2Vzdy90ZXJtLmgiCisKK2Nhc2UgJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IGluCisoKi8qKQorCWNmX2hlYWRlcl9pdGVtPWBlY2hvICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSB8IHNlZCAtZSAncyVcLi4qJSUnIC1lICdzJS8uKiUvJSdgdGVybS5oCisJY2ZfaGVhZGVyX2xpc3Q9IiRjZl9oZWFkZXJfaXRlbSAkY2ZfaGVhZGVyX2xpc3QiCisJOzsKK2VzYWMKKworZm9yIGNmX2hlYWRlciBpbiAkY2ZfaGVhZGVyX2xpc3QKK2RvCisJQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwke2NmX2hlYWRlcn0+XSwKKwlbV0lORE9XICp4XSwKKwlbY2ZfY3ZfdGVybV9oZWFkZXI9JGNmX2hlYWRlcgorCSBicmVha10sCisJW2NmX2N2X3Rlcm1faGVhZGVyPW5vXSkKK2RvbmUKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKyhubykKKwkjIElmIGN1cnNlcyBpcyBuY3Vyc2VzLCBzb21lIHBhY2thZ2VycyBzdGlsbCBtZXNzIGl0IHVwIGJ5IHRyeWluZyB0byBtYWtlCisJIyB1cyB1c2UgR05VIHRlcm1jYXAuICBUaGlzIGhhbmRsZXMgdGhlIG1vc3QgY29tbW9uIGNhc2UuCisJZm9yIGNmX2hlYWRlciBpbiBuY3Vyc2VzL3Rlcm0uaCBuY3Vyc2Vzdy90ZXJtLmgKKwlkbworCQlBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorI2luY2x1ZGUgPCR7Y2ZfaGVhZGVyfT4KKyNlbHNlCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCQkJW1dJTkRPVyAqeF0sCisJCQlbY2ZfY3ZfdGVybV9oZWFkZXI9JGNmX2hlYWRlcgorCQkJIGJyZWFrXSwKKwkJCVtjZl9jdl90ZXJtX2hlYWRlcj1ub10pCisJZG9uZQorCTs7Citlc2FjCitdKQorCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKHRlcm0uaCkKKwlBQ19ERUZJTkUoSEFWRV9URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSB0ZXJtLmhdKQorCTs7CisobmN1cnNlcy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU19URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzL3Rlcm0uaF0pCisJOzsKKyhuY3Vyc2Vzdy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU1dfVEVSTV9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlc3cvdGVybS5oXSkKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfVU5DVFJMX0ggdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE1LzA0LzE1IDE5OjA4OjQ4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQW55IFgvT3BlbiBjdXJzZXMgaW1wbGVtZW50YXRpb24gbXVzdCBoYXZlIHVuY3RybC5oLCBidXQgbmN1cnNlcyBwYWNrYWdlcworZG5sIG1heSBwdXQgaXQgaW4gYSBzdWJkaXJlY3RvcnkgKGFsb25nIHdpdGggbmN1cnNlcycgb3RoZXIgaGVhZGVycywgb2YKK2RubCBjb3Vyc2UpLiAgUGFja2FnZXMgd2hpY2ggcHV0IHRoZSBoZWFkZXJzIGluIGluY29uc2lzdGVudCBsb2NhdGlvbnMgYXJlCitkbmwgYnJva2VuKS4KK0FDX0RFRlVOKFtDRl9DVVJTRVNfVU5DVFJMX0hdLAorWworQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX0NQUEZMQUdTXSlkbmwKKworQUNfQ0FDSEVfQ0hFQ0soZm9yIHVuY3RybC5oLCBjZl9jdl91bmN0cmxfaGVhZGVyLFsKKworIyBJZiB3ZSBmb3VuZCA8bmN1cnNlcy9jdXJzZXMuaD4sIGxvb2sgZm9yIDxuY3Vyc2VzL3VuY3RybC5oPiwgYnV0IGFsd2F5cyBsb29rCisjIGZvciA8dW5jdHJsLmg+IGlmIHdlIGRvIG5vdCBmaW5kIHRoZSB2YXJpYW50LgorCitjZl9oZWFkZXJfbGlzdD0idW5jdHJsLmggbmN1cnNlcy91bmN0cmwuaCBuY3Vyc2Vzdy91bmN0cmwuaCIKKworY2FzZSAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0gaW4KKygqLyopCisJY2ZfaGVhZGVyX2l0ZW09YGVjaG8gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IHwgc2VkIC1lICdzJVwuLiolJScgLWUgJ3MlLy4qJS8lJ2B1bmN0cmwuaAorCWNmX2hlYWRlcl9saXN0PSIkY2ZfaGVhZGVyX2l0ZW0gJGNmX2hlYWRlcl9saXN0IgorCTs7Citlc2FjCisKK2ZvciBjZl9oZWFkZXIgaW4gJGNmX2hlYWRlcl9saXN0CitkbworCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9Pl0sCisJW1dJTkRPVyAqeF0sCisJW2NmX2N2X3VuY3RybF9oZWFkZXI9JGNmX2hlYWRlcgorCSBicmVha10sCisJW2NmX2N2X3VuY3RybF9oZWFkZXI9bm9dKQorZG9uZQorXSkKKworY2FzZSAkY2ZfY3ZfdW5jdHJsX2hlYWRlciBpbgorKG5vKQorCUFDX01TR19XQVJOKHVuY3RybC5oIGhlYWRlciBub3QgZm91bmQpCisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3ZfdW5jdHJsX2hlYWRlciBpbgorKHVuY3RybC5oKQorCUFDX0RFRklORShIQVZFX1VOQ1RSTF9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgdW5jdHJsLmhdKQorCTs7CisobmN1cnNlcy91bmN0cmwuaCkKKwlBQ19ERUZJTkUoSEFWRV9OQ1VSU0VTX1VOQ1RSTF9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlcy91bmN0cmwuaF0pCisJOzsKKyhuY3Vyc2Vzdy91bmN0cmwuaCkKKwlBQ19ERUZJTkUoSEFWRV9OQ1VSU0VTV19VTkNUUkxfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIG5jdXJzZXN3L3VuY3RybC5oXSkKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfV0FDU19NQVAgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIGxpa2VseSB2YWx1ZXMgb2Ygd2Fjc19tYXBbXS4KK0FDX0RFRlVOKFtDRl9DVVJTRVNfV0FDU19NQVBdLAorWworQUNfQ0FDSEVfQ0hFQ0soZm9yIHdpZGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgYXJyYXksIGNmX2N2X2N1cnNlc193YWNzX21hcCxbCisJY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwPXVua25vd24KKwlmb3IgbmFtZSBpbiB3YWNzX21hcCBfd2Fjc19tYXAgX193YWNzX21hcCBfbmNfd2FjcyBfd2Fjc19jaGFyCisJZG8KKwlBQ19UUllfTElOSyhbCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2VuZGlmCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJW3ZvaWQgKmZvbyA9ICYoJG5hbWVbJ2snXSldLAorCVtjZl9jdl9jdXJzZXNfd2Fjc19tYXA9JG5hbWUKKwkgYnJlYWtdKQorCWRvbmVdKQorCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwIiAhPSB1bmtub3duICYmIEFDX0RFRklORV9VTlFVT1RFRChDVVJTRVNfV0FDU19BUlJBWSwkY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwLFtEZWZpbmUgdG8gbmFtZSBvZiAobiljdXJzZXMgd2lkZS1jaGFyYWN0ZXIgYXJyYXldKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9DVVJTRVNfV0FDU19TWU1CT0xTIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMi8xMC8wNiAwODo1Nzo1MQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBEbyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgV0FDU194eHggY29uc3RhbnRzIGFyZSBkZWZpbmVkIGNvbXBhdGlibHkgd2l0aAorZG5sIFgvT3BlbiBDdXJzZXMuICBJbiBwYXJ0aWN1bGFyLCBOZXRCU0QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV0FDU194eHgKK2RubCBjb25zdGFudHMgaXMgYnJva2VuIHNpbmNlIHRob3NlIGNvbnN0YW50cyBkbyBub3QgcG9pbnQgdG8gY2NoYXJfdCdzLgorQUNfREVGVU4oW0NGX0NVUlNFU19XQUNTX1NZTUJPTFNdLAorWworQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX1dBQ1NfTUFQXSkKKworQUNfQ0FDSEVfQ0hFQ0soZm9yIHdpZGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBjb25zdGFudHMsIGNmX2N2X2N1cnNlc193YWNzX3N5bWJvbHMsWworY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scz1ubworaWYgdGVzdCAiJGNmX2N2X2N1cnNlc193YWNzX21hcCIgIT0gdW5rbm93bgordGhlbgorCUFDX1RSWV9MSU5LKFsKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZW5kaWYKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwlbY2NoYXJfdCAqZm9vID0gV0FDU19QTFVTOworCSAkY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwWydrJ10gPSAqV0FDU19QTFVTXSwKKwlbY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scz15ZXNdKQorZWxzZQorCUFDX1RSWV9MSU5LKFsKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZW5kaWYKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwlbY2NoYXJfdCAqZm9vID0gV0FDU19QTFVTXSwKKwlbY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scz15ZXNdKQorZmkKK10pCisKK3Rlc3QgIiRjZl9jdl9jdXJzZXNfd2Fjc19zeW1ib2xzIiAhPSBubyAmJiBBQ19ERUZJTkUoQ1VSU0VTX1dBQ1NfU1lNQk9MUywxLFtEZWZpbmUgdG8gMSBpZiAobiljdXJzZXMgc3VwcG9ydHMgd2lkZS1jaGFyYWN0ZXIgV0FDU18gc3ltYm9sc10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0RJUk5BTUUgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDAyLzEyLzIxIDE5OjI1OjUyCitkbmwgLS0tLS0tLS0tLQorZG5sICJkaXJuYW1lIiBpcyBub3QgcG9ydGFibGUsIHNvIHdlIGZha2UgaXQgd2l0aCBhIHNoZWxsIHNjcmlwdC4KK0FDX0RFRlVOKFtDRl9ESVJOQU1FXSxbJDE9YGVjaG8gJDIgfCBzZWQgLWUgJ3MlL1tbXi9dXSokJSUnYF0pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfRElTQUJMRV9FQ0hPIHZlcnNpb246IDEzIHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBZb3UgY2FuIGFsd2F5cyB1c2UgIm1ha2UgLW4iIHRvIHNlZSB0aGUgYWN0dWFsIG9wdGlvbnMsIGJ1dCBpdCdzIGhhcmQgdG8KK2RubCBwaWNrIG91dC9hbmFseXplIHdhcm5pbmcgbWVzc2FnZXMgd2hlbiB0aGUgY29tcGlsZS1saW5lIGlzIGxvbmcuCitkbmwKK2RubCBTZXRzOgorZG5sCUVDSE9fTFQgLSBzeW1ib2wgdG8gY29udHJvbCBpZiBsaWJ0b29sIGlzIHZlcmJvc2UKK2RubAlFQ0hPX0xEIC0gc3ltYm9sIHRvIHByZWZpeCAiY2MgLW8iIGxpbmVzCitkbmwJUlVMRV9DQyAtIHN5bWJvbCB0byBwdXQgYmVmb3JlIGltcGxpY2l0ICJjYyAtYyIgbGluZXMgKGUuZy4sIC5jLm8pCitkbmwJU0hPV19DQyAtIHN5bWJvbCB0byBwdXQgYmVmb3JlIGV4cGxpY2l0ICJjYyAtYyIgbGluZXMKK2RubAlFQ0hPX0NDIC0gc3ltYm9sIHRvIHB1dCBiZWZvcmUgYW55ICJjYyIgbGluZQorZG5sCitBQ19ERUZVTihbQ0ZfRElTQUJMRV9FQ0hPXSxbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gc2VlIGxvbmcgY29tcGlsaW5nIG1lc3NhZ2VzKQorQ0ZfQVJHX0RJU0FCTEUoZWNobywKKwlbICAtLWRpc2FibGUtZWNobyAgICAgICAgICBkbyBub3QgZGlzcGxheSAiY29tcGlsaW5nIiBjb21tYW5kc10sCisJWworCUVDSE9fTFQ9Jy0tc2lsZW50JworCUVDSE9fTEQ9J0BlY2hvIGxpbmtpbmcgWyRdQDsnCisJUlVMRV9DQz0nQGVjaG8gY29tcGlsaW5nIFskXTwnCisJU0hPV19DQz0nQGVjaG8gY29tcGlsaW5nIFskXUAnCisJRUNIT19DQz0nQCcKK10sWworCUVDSE9fTFQ9JycKKwlFQ0hPX0xEPScnCisJUlVMRV9DQz0nJworCVNIT1dfQ0M9JycKKwlFQ0hPX0NDPScnCitdKQorQUNfTVNHX1JFU1VMVCgkZW5hYmxldmFsKQorQUNfU1VCU1QoRUNIT19MVCkKK0FDX1NVQlNUKEVDSE9fTEQpCitBQ19TVUJTVChSVUxFX0NDKQorQUNfU1VCU1QoU0hPV19DQykKK0FDX1NVQlNUKEVDSE9fQ0MpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0RJU0FCTEVfTEVBS1MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEyLzEwLzAyIDIwOjU1OjAzCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbWJpbmUgbm8tbGVhayBjaGVja3Mgd2l0aCB0aGUgbGlicmFyaWVzIG9yIHRvb2xzIHRoYXQgYXJlIHVzZWQgZm9yIHRoZQorZG5sIGNoZWNrcy4KK0FDX0RFRlVOKFtDRl9ESVNBQkxFX0xFQUtTXSxbCisKK0FDX1JFUVVJUkUoW0NGX1dJVEhfRE1BTExPQ10pCitBQ19SRVFVSVJFKFtDRl9XSVRIX0RCTUFMTE9DXSkKK0FDX1JFUVVJUkUoW0NGX1dJVEhfVkFMR1JJTkRdKQorCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nKQorQUNfQVJHX0VOQUJMRShsZWFrcywKKwlbICAtLWRpc2FibGUtbGVha3MgICAgICAgICB0ZXN0OiBmcmVlIHBlcm1hbmVudCBtZW1vcnksIGFuYWx5emUgbGVha3NdLAorCVtpZiB0ZXN0ICJ4JGVuYWJsZXZhbCIgPSB4bm87IHRoZW4gd2l0aF9ub19sZWFrcz15ZXM7IGVsc2Ugd2l0aF9ub19sZWFrcz1ubzsgZmldLAorCTogJHt3aXRoX25vX2xlYWtzOj1ub30pCitBQ19NU0dfUkVTVUxUKCR3aXRoX25vX2xlYWtzKQorCitpZiB0ZXN0ICIkd2l0aF9ub19sZWFrcyIgPSB5ZXMgOyB0aGVuCisJQUNfREVGSU5FKE5PX0xFQUtTLDEsW0RlZmluZSB0byAxIGlmIHlvdSB3YW50IHRvIHBlcmZvcm0gbWVtb3J5LWxlYWsgdGVzdGluZy5dKQorCUFDX0RFRklORShZWV9OT19MRUFLUywxLFtEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB0byBwZXJmb3JtIG1lbW9yeS1sZWFrIHRlc3RpbmcuXSkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0RJU0FCTEVfUlBBVEhfSEFDSyB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTEvMDIvMTMgMTM6MzE6MzMKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBUaGUgcnBhdGgtaGFjayBtYWtlcyBpdCBzaW1wbGVyIHRvIGJ1aWxkIHByb2dyYW1zLCBwYXJ0aWN1bGFybHkgd2l0aCB0aGUKK2RubCAqQlNEIHBvcnRzIHdoaWNoIG1heSBoYXZlIGVzc2VudGlhbCBsaWJyYXJpZXMgaW4gdW51c3VhbCBwbGFjZXMuICBCdXQgaXQKK2RubCBjYW4gaW50ZXJmZXJlIHdpdGggYnVpbGRpbmcgYW4gZXhlY3V0YWJsZSBmb3IgdGhlIGJhc2Ugc3lzdGVtLiAgVXNlIHRoaXMKK2RubCBvcHRpb24gaW4gdGhhdCBjYXNlLgorQUNfREVGVU4oW0NGX0RJU0FCTEVfUlBBVEhfSEFDS10sCitbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgcnBhdGgtaGFjayBzaG91bGQgYmUgZGlzYWJsZWQpCitDRl9BUkdfRElTQUJMRShycGF0aC1oYWNrLAorCVsgIC0tZGlzYWJsZS1ycGF0aC1oYWNrICAgIGRvbid0IGFkZCBycGF0aCBvcHRpb25zIGZvciBhZGRpdGlvbmFsIGxpYnJhcmllc10sCisJW2NmX2Rpc2FibGVfcnBhdGhfaGFjaz15ZXNdLAorCVtjZl9kaXNhYmxlX3JwYXRoX2hhY2s9bm9dKQorQUNfTVNHX1JFU1VMVCgkY2ZfZGlzYWJsZV9ycGF0aF9oYWNrKQoraWYgdGVzdCAiJGNmX2Rpc2FibGVfcnBhdGhfaGFjayIgPSBubyA7IHRoZW4KKwlDRl9SUEFUSF9IQUNLCitmaQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9FTkFCTEVfV0FSTklOR1MgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDA5LzA3LzI2IDE3OjUzOjAzCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ29uZmlndXJlLW9wdGlvbiB0byBlbmFibGUgZ2NjIHdhcm5pbmdzCitBQ19ERUZVTihbQ0ZfRU5BQkxFX1dBUk5JTkdTXSxbCitpZiAoIHRlc3QgIiRHQ0MiID0geWVzIHx8IHRlc3QgIiRHWFgiID0geWVzICkKK3RoZW4KK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB0dXJuIG9uIGdjYyB3YXJuaW5ncykKK0NGX0FSR19FTkFCTEUod2FybmluZ3MsCisJWyAgLS1lbmFibGUtd2FybmluZ3MgICAgICAgdGVzdDogdHVybiBvbiBnY2MgY29tcGlsZXIgd2FybmluZ3NdLAorCVt3aXRoX3dhcm5pbmdzPXllc10sCisJW3dpdGhfd2FybmluZ3M9bm9dKQorQUNfTVNHX1JFU1VMVCgkd2l0aF93YXJuaW5ncykKK2lmIHRlc3QgIiR3aXRoX3dhcm5pbmdzIiA9ICJ5ZXMiCit0aGVuCisJQ0ZfR0NDX0FUVFJJQlVURVMKKwlDRl9HQ0NfV0FSTklOR1MKK2ZpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9GSU5EX0xJQlJBUlkgdmVyc2lvbjogOSB1cGRhdGVkOiAyMDA4LzAzLzIzIDE0OjQ4OjU0CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgTG9vayBmb3IgYSBub24tc3RhbmRhcmQgbGlicmFyeSwgZ2l2ZW4gcGFyYW1ldGVycyBmb3IgQUNfVFJZX0xJTksuICBXZQorZG5sIHByZWZlciBhIHN0YW5kYXJkIGxvY2F0aW9uLCBhbmQgdXNlIC1MIG9wdGlvbnMgb25seSBpZiB3ZSBkbyBub3QgZmluZCB0aGUKK2RubCBsaWJyYXJ5IGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGxvY2F0aW9uKHMpLgorZG5sCSQxID0gbGlicmFyeSBuYW1lCitkbmwJJDIgPSBsaWJyYXJ5IGNsYXNzLCB1c3VhbGx5IHRoZSBzYW1lIGFzIGxpYnJhcnkgbmFtZQorZG5sCSQzID0gaW5jbHVkZXMKK2RubAkkNCA9IGNvZGUgZnJhZ21lbnQgdG8gY29tcGlsZS9saW5rCitkbmwJJDUgPSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uLW5hbWUKK2RubAkkNiA9IGZsYWcsIG5vbm51bGwgaWYgZmFpbHVyZSBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yLWV4aXQKK2RubAorZG5sIFNldHMgdGhlIHZhcmlhYmxlICIkY2ZfbGliZGlyIiBhcyBhIHNpZGUtZWZmZWN0LCBzbyB3ZSBjYW4gc2VlIGlmIHdlIGhhZAorZG5sIHRvIHVzZSBhIC1MIG9wdGlvbi4KK0FDX0RFRlVOKFtDRl9GSU5EX0xJQlJBUlldLAorWworCWV2YWwgJ2NmX2N2X2hhdmVfbGliXyckMSc9bm8nCisJY2ZfbGliZGlyPSIiCisJQUNfQ0hFQ0tfRlVOQygkNSwKKwkJZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyQxJz15ZXMnLFsKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkJQUNfTVNHX0NIRUNLSU5HKGZvciAkNSBpbiAtbCQxKQorCQlMSUJTPSItbCQxICRMSUJTIgorCQlBQ19UUllfTElOSyhbJDNdLFskNF0sCisJCQlbQUNfTVNHX1JFU1VMVCh5ZXMpCisJCQkgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyQxJz15ZXMnCisJCQldLAorCQkJW0FDX01TR19SRVNVTFQobm8pCisJCQlDRl9MSUJSQVJZX1BBVEgoY2Zfc2VhcmNoLCQyKQorCQkJZm9yIGNmX2xpYmRpciBpbiAkY2Zfc2VhcmNoCisJCQlkbworCQkJCUFDX01TR19DSEVDS0lORyhmb3IgLWwkMSBpbiAkY2ZfbGliZGlyKQorCQkJCUxJQlM9Ii1MJGNmX2xpYmRpciAtbCQxICRjZl9zYXZlX0xJQlMiCisJCQkJQUNfVFJZX0xJTksoWyQzXSxbJDRdLAorCQkJCQlbQUNfTVNHX1JFU1VMVCh5ZXMpCisJCQkgCQkgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyQxJz15ZXMnCisJCQkJCSBicmVha10sCisJCQkJCVtBQ19NU0dfUkVTVUxUKG5vKQorCQkJCQkgTElCUz0iJGNmX3NhdmVfTElCUyJdKQorCQkJZG9uZQorCQkJXSkKKwkJXSkKK2V2YWwgJ2NmX2ZvdW5kX2xpYnJhcnk9WyRdY2ZfY3ZfaGF2ZV9saWJfJyQxCitpZmVsc2UoJDYsLFsKK2lmIHRlc3QgJGNmX2ZvdW5kX2xpYnJhcnkgPSBubyA7IHRoZW4KKwlBQ19NU0dfRVJST1IoQ2Fubm90IGxpbmsgJDEgbGlicmFyeSkKK2ZpCitdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9GSU5EX0xJTktBR0UgdmVyc2lvbjogMjAgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NworZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIEZpbmQgYSBsaWJyYXJ5IChzcGVjaWZpY2FsbHkgdGhlIGxpbmthZ2UgdXNlZCBpbiB0aGUgY29kZSBmcmFnbWVudCksCitkbmwgc2VhcmNoaW5nIGZvciBpdCBpZiBpdCBpcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlicmFyeSBwYXRoLgorZG5sIFNlZSBhbHNvIENGX0FERF9TRUFSQ0hQQVRILgorZG5sCitkbmwgUGFyYW1ldGVycyAoNC1vbiBhcmUgb3B0aW9uYWwpOgorZG5sICAgICAkMSA9IGhlYWRlcnMgZm9yIGxpYnJhcnkgZW50cnlwb2ludAorZG5sICAgICAkMiA9IGNvZGUgZnJhZ21lbnQgZm9yIGxpYnJhcnkgZW50cnlwb2ludAorZG5sICAgICAkMyA9IHRoZSBsaWJyYXJ5IG5hbWUgd2l0aG91dCB0aGUgIi1sIiBvcHRpb24gb3IgIi5zbyIgc3VmZml4LgorZG5sICAgICAkNCA9IGFjdGlvbiB0byBwZXJmb3JtIGlmIHN1Y2Nlc3NmdWwgKGRlZmF1bHQ6IHVwZGF0ZSBDUFBGTEFHUywgZXRjKQorZG5sICAgICAkNSA9IGFjdGlvbiB0byBwZXJmb3JtIGlmIG5vdCBzdWNjZXNzZnVsCitkbmwgICAgICQ2ID0gbW9kdWxlIG5hbWUsIGlmIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGlicmFyeSBuYW1lCitkbmwgICAgICQ3ID0gZXh0cmEgbGlicmFyaWVzCitkbmwKK2RubCBTZXRzIHRoZXNlIHZhcmlhYmxlczoKK2RubCAgICAgJGNmX2N2X2ZpbmRfbGlua2FnZV8kMyAtIHllcy9ubyBhY2NvcmRpbmcgdG8gd2hldGhlciBsaW5rYWdlIGlzIGZvdW5kCitkbmwgICAgICRjZl9jdl9oZWFkZXJfcGF0aF8kMyAtIGluY2x1ZGUtZGlyZWN0b3J5IGlmIG5lZWRlZAorZG5sICAgICAkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzIC0gbGlicmFyeS1kaXJlY3RvcnkgaWYgbmVlZGVkCitkbmwgICAgICRjZl9jdl9saWJyYXJ5X2ZpbGVfJDMgLSBsaWJyYXJ5LWZpbGUgaWYgbmVlZGVkLCBlLmcuLCAtbCQzCitBQ19ERUZVTihbQ0ZfRklORF9MSU5LQUdFXSxbCisKKyMgSWYgdGhlIGxpbmthZ2UgaXMgbm90IGFscmVhZHkgaW4gdGhlICRDUFBGTEFHUy8kTERGTEFHUyBjb25maWd1cmF0aW9uLCB0aGVzZQorIyB3aWxsIGJlIHNldCBvbiBjb21wbGV0aW9uIG9mIHRoZSBBQ19UUllfTElOSyBiZWxvdy4KK2NmX2N2X2hlYWRlcl9wYXRoXyQzPQorY2ZfY3ZfbGlicmFyeV9wYXRoXyQzPQorCitDRl9NU0dfTE9HKFtTdGFydGluZyBbRklORF9MSU5LQUdFXSgkMywkNildKQorCitjZl9zYXZlX0xJQlM9IiRMSUJTIgorCitBQ19UUllfTElOSyhbJDFdLFskMl0sWworCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz15ZXMKKwljZl9jdl9oZWFkZXJfcGF0aF8kMz0vdXNyL2luY2x1ZGUKKwljZl9jdl9saWJyYXJ5X3BhdGhfJDM9L3Vzci9saWIKK10sWworCitMSUJTPSItbCQzICQ3ICRjZl9zYXZlX0xJQlMiCisKK0FDX1RSWV9MSU5LKFskMV0sWyQyXSxbCisJY2ZfY3ZfZmluZF9saW5rYWdlXyQzPXllcworCWNmX2N2X2hlYWRlcl9wYXRoXyQzPS91c3IvaW5jbHVkZQorCWNmX2N2X2xpYnJhcnlfcGF0aF8kMz0vdXNyL2xpYgorCWNmX2N2X2xpYnJhcnlfZmlsZV8kMz0iLWwkMyIKK10sWworCWNmX2N2X2ZpbmRfbGlua2FnZV8kMz1ubworCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisKKwlDRl9WRVJCT1NFKGZpbmQgbGlua2FnZSBmb3IgJDMgbGlicmFyeSkKKwlDRl9NU0dfTE9HKFtTZWFyY2hpbmcgZm9yIGhlYWRlcnMgaW4gW0ZJTkRfTElOS0FHRV0oJDMsJDYpXSkKKworCWNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwljZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKKwlDRl9IRUFERVJfUEFUSChjZl9zZWFyY2gsaWZlbHNlKFskNl0sLFskM10sWyQ2XSkpCisJZm9yIGNmX2N2X2hlYWRlcl9wYXRoXyQzIGluICRjZl9zZWFyY2gKKwlkbworCQlpZiB0ZXN0IC1kICRjZl9jdl9oZWFkZXJfcGF0aF8kMyA7IHRoZW4KKwkJCUNGX1ZFUkJPU0UoLi4uIHRlc3RpbmcgJGNmX2N2X2hlYWRlcl9wYXRoXyQzKQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIC1JJGNmX2N2X2hlYWRlcl9wYXRoXyQzIgorCQkJQUNfVFJZX0NPTVBJTEUoWyQxXSxbJDJdLFsKKwkJCQlDRl9WRVJCT1NFKC4uLiBmb3VuZCAkMyBoZWFkZXJzIGluICRjZl9jdl9oZWFkZXJfcGF0aF8kMykKKwkJCQljZl9jdl9maW5kX2xpbmthZ2VfJDM9bWF5YmUKKwkJCQljZl90ZXN0X0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJCQkJYnJlYWtdLFsKKwkJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQkJXSkKKwkJZmkKKwlkb25lCisKKwlpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiA9IG1heWJlIDsgdGhlbgorCisJCUNGX01TR19MT0coW1NlYXJjaGluZyBmb3IgJDMgbGlicmFyeSBpbiBbRklORF9MSU5LQUdFXSgkMywkNildKQorCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisJCWNmX3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisKKwkJaWZlbHNlKFskNl0sLCxbCisJCUNQUEZMQUdTPSIkY2ZfdGVzdF9DUFBGTEFHUyIKKwkJTElCUz0iLWwkMyAkNyAkY2Zfc2F2ZV9MSUJTIgorCQlBQ19UUllfTElOSyhbJDFdLFskMl0sWworCQkJQ0ZfVkVSQk9TRSguLi4gZm91bmQgJDMgbGlicmFyeSBpbiBzeXN0ZW0pCisJCQljZl9jdl9maW5kX2xpbmthZ2VfJDM9eWVzXSkKKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisJCQldKQorCisJCWlmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfJDMiICE9IHllcyA7IHRoZW4KKwkJCUNGX0xJQlJBUllfUEFUSChjZl9zZWFyY2gsJDMpCisJCQlmb3IgY2ZfY3ZfbGlicmFyeV9wYXRoXyQzIGluICRjZl9zZWFyY2gKKwkJCWRvCisJCQkJaWYgdGVzdCAtZCAkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzIDsgdGhlbgorCQkJCQlDRl9WRVJCT1NFKC4uLiB0ZXN0aW5nICRjZl9jdl9saWJyYXJ5X3BhdGhfJDMpCisJCQkJCUNQUEZMQUdTPSIkY2ZfdGVzdF9DUFBGTEFHUyIKKwkJCQkJTElCUz0iLWwkMyAkNyAkY2Zfc2F2ZV9MSUJTIgorCQkJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIC1MJGNmX2N2X2xpYnJhcnlfcGF0aF8kMyIKKwkJCQkJQUNfVFJZX0xJTksoWyQxXSxbJDJdLFsKKwkJCQkJQ0ZfVkVSQk9TRSguLi4gZm91bmQgJDMgbGlicmFyeSBpbiAkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzKQorCQkJCQljZl9jdl9maW5kX2xpbmthZ2VfJDM9eWVzCisJCQkJCWNmX2N2X2xpYnJhcnlfZmlsZV8kMz0iLWwkMyIKKwkJCQkJYnJlYWtdLFsKKwkJCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJCQlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCQkJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCQkJCQldKQorCQkJCWZpCisJCQlkb25lCisJCQlDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIgorCQlmaQorCisJZWxzZQorCQljZl9jdl9maW5kX2xpbmthZ2VfJDM9bm8KKwlmaQorCV0sJDcpCitdKQorCitMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCitpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlXyQzIiA9IHllcyA7IHRoZW4KK2lmZWxzZShbJDRdLCxbCisJQ0ZfQUREX0lOQ0RJUigkY2ZfY3ZfaGVhZGVyX3BhdGhfJDMpCisJQ0ZfQUREX0xJQkRJUigkY2ZfY3ZfbGlicmFyeV9wYXRoXyQzKQorCUNGX0FERF9MSUIoJDMpCitdLFskNF0pCitlbHNlCitpZmVsc2UoWyQ1XSwsQUNfTVNHX1dBUk4oQ2Fubm90IGZpbmQgJDMgbGlicmFyeSksWyQ1XSkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0ZVTkNfQ1VSU0VTX1ZFUlNJT04gdmVyc2lvbjogNiB1cGRhdGVkOiAyMDEyLzEwLzA2IDE2OjM5OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNvbGFyaXMgaGFzIGEgZGF0YSBpdGVtICdjdXJzZXNfdmVyc2lvbicsIHdoaWNoIGNvbmZ1c2VzIEFDX0NIRUNLX0ZVTkNTLgorZG5sIEl0J3MgYSBjaGFyYWN0ZXIgc3RyaW5nICJTVlI0Iiwgbm90IGRvY3VtZW50ZWQuCitBQ19ERUZVTihbQ0ZfRlVOQ19DVVJTRVNfVkVSU0lPTl0sCitbCitBQ19DQUNIRV9DSEVDSyhmb3IgZnVuY3Rpb24gY3Vyc2VzX3ZlcnNpb24sIGNmX2N2X2Z1bmNfY3Vyc2VzX3ZlcnNpb24sWworQUNfVFJZX1JVTihbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50IG1haW4oKQoreworCWNoYXIgdGVtcFsxMDI0XTsKKwlzcHJpbnRmKHRlbXAsICIlc1xuIiwgY3Vyc2VzX3ZlcnNpb24oKSk7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgwKTsKK31dCissW2NmX2N2X2Z1bmNfY3Vyc2VzX3ZlcnNpb249eWVzXQorLFtjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uPW5vXQorLFtjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uPXVua25vd25dKQorcm0gLWYgY29yZV0pCit0ZXN0ICIkY2ZfY3ZfZnVuY19jdXJzZXNfdmVyc2lvbiIgPSB5ZXMgJiYgQUNfREVGSU5FKEhBVkVfQ1VSU0VTX1ZFUlNJT04sMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBjdXJzZXNfdmVyc2lvbiBmdW5jdGlvbl0pCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0dDQ19BVFRSSUJVVEVTIHZlcnNpb246IDE3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIFRlc3QgZm9yIGF2YWlsYWJpbGl0eSBvZiB1c2VmdWwgZ2NjIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlcyB0byBxdWlldAorZG5sIGNvbXBpbGVyIHdhcm5pbmdzLiAgVGhvdWdoIHVzZWZ1bCwgbm90IGFsbCBhcmUgc3VwcG9ydGVkIC0tIGFuZCBjb250cmFyeQorZG5sIHRvIGRvY3VtZW50YXRpb24sIHVucmVjb2duaXplZCBkaXJlY3RpdmVzIGNhdXNlIG9sZGVyIGNvbXBpbGVycyB0byBiYXJmLgorQUNfREVGVU4oW0NGX0dDQ19BVFRSSUJVVEVTXSwKK1sKK2lmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCitjYXQgPiBjb25mdGVzdC5pIDw8RU9GCisjaWZuZGVmIEdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX05PUkVUVVJOCisjZGVmaW5lIEdDQ19OT1JFVFVSTiAvKiBub3RoaW5nICovCisjZW5kaWYKKyNpZm5kZWYgR0NDX1VOVVNFRAorI2RlZmluZSBHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KKyNlbmRpZgorRU9GCitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorCUFDX0NIRUNLSU5HKFtmb3IgJENDIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlc10pCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSBfX29saW5lX18gIiR7YXNfbWU6LWNvbmZpZ3VyZX0iCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlICJjb25mdGVzdC5oIgorI2luY2x1ZGUgImNvbmZ0ZXN0LmkiCisjaWYJR0NDX1BSSU5URgorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSkKKyNlbHNlCisjZGVmaW5lIEdDQ19QUklOVEZMSUtFKGZtdCx2YXIpIC8qbm90aGluZyovCisjZW5kaWYKKyNpZglHQ0NfU0NBTkYKKyNkZWZpbmUgR0NDX1NDQU5GTElLRShmbXQsdmFyKSAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSkKKyNlbHNlCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIC8qbm90aGluZyovCisjZW5kaWYKK2V4dGVybiB2b2lkIHdvdyhjaGFyICosLi4uKSBHQ0NfU0NBTkZMSUtFKDEsMik7CitleHRlcm4gdm9pZCBvb3BzKGNoYXIgKiwuLi4pIEdDQ19QUklOVEZMSUtFKDEsMikgR0NDX05PUkVUVVJOOworZXh0ZXJuIHZvaWQgZm9vKHZvaWQpIEdDQ19OT1JFVFVSTjsKK2ludCBtYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbW11dIEdDQ19VTlVTRUQpIHsgcmV0dXJuIDA7IH0KK0VPRgorCWNmX3ByaW50Zl9hdHRyaWJ1dGU9bm8KKwljZl9zY2FuZl9hdHRyaWJ1dGU9bm8KKwlmb3IgY2ZfYXR0cmlidXRlIGluIHNjYW5mIHByaW50ZiB1bnVzZWQgbm9yZXR1cm4KKwlkbworCQlDRl9VUFBFUihjZl9BVFRSSUJVVEUsJGNmX2F0dHJpYnV0ZSkKKwkJY2ZfZGlyZWN0aXZlPSJfX2F0dHJpYnV0ZV9fKCgkY2ZfYXR0cmlidXRlKSkiCisJCWVjaG8gImNoZWNraW5nIGZvciAkQ0MgJGNmX2RpcmVjdGl2ZSIgMT4mQUNfRkRfQ0MKKworCQljYXNlICRjZl9hdHRyaWJ1dGUgaW4KKwkJKHByaW50ZikKKwkJCWNmX3ByaW50Zl9hdHRyaWJ1dGU9eWVzCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQorRU9GCisJCQk7OworCQkoc2NhbmYpCisJCQljZl9zY2FuZl9hdHRyaWJ1dGU9eWVzCisJCQljYXQgPmNvbmZ0ZXN0LmggPDxFT0YKKyNkZWZpbmUgR0NDXyRjZl9BVFRSSUJVVEUgMQorRU9GCisJCQk7OworCQkoKikKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAkY2ZfZGlyZWN0aXZlCitFT0YKKwkJCTs7CisJCWVzYWMKKworCQlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIEFDX01TR19SRVNVTFQoLi4uICRjZl9hdHRyaWJ1dGUpCisJCQljYXQgY29uZnRlc3QuaCA+PmNvbmZkZWZzLmgKKwkJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgorCQkJKG5vcmV0dXJuKQorCQkJCUFDX0RFRklORV9VTlFVT1RFRChHQ0NfTk9SRVRVUk4sJGNmX2RpcmVjdGl2ZSxbRGVmaW5lIHRvIG5vcmV0dXJuLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHByaW50ZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2ZfcHJpbnRmX2F0dHJpYnV0ZSIgIT0gbm8gOyB0aGVuCisJCQkJCWNmX3ZhbHVlPSdfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLGZtdCx2YXIpKSknCisJCQkJCUFDX0RFRklORShHQ0NfUFJJTlRGLDEsW0RlZmluZSB0byAxIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBnY2MtbGlrZSBwcmludGYgYXR0cmlidXRlLl0pCisJCQkJZmkKKwkJCQlBQ19ERUZJTkVfVU5RVU9URUQoR0NDX1BSSU5URkxJS0UoZm10LHZhciksJGNmX3ZhbHVlLFtEZWZpbmUgdG8gcHJpbnRmLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHNjYW5mKQorCQkJCWNmX3ZhbHVlPScvKiBub3RoaW5nICovJworCQkJCWlmIHRlc3QgIiRjZl9zY2FuZl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHNjYW5mLGZtdCx2YXIpKSknCisJCQkJCUFDX0RFRklORShHQ0NfU0NBTkYsMSxbRGVmaW5lIHRvIDEgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGdjYy1saWtlIHNjYW5mIGF0dHJpYnV0ZS5dKQorCQkJCWZpCisJCQkJQUNfREVGSU5FX1VOUVVPVEVEKEdDQ19TQ0FORkxJS0UoZm10LHZhciksJGNmX3ZhbHVlLFtEZWZpbmUgdG8gc3NjYW5mLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJKHVudXNlZCkKKwkJCQlBQ19ERUZJTkVfVU5RVU9URUQoR0NDX1VOVVNFRCwkY2ZfZGlyZWN0aXZlLFtEZWZpbmUgdG8gdW51c2VkLWF0dHJpYnV0ZSBmb3IgZ2NjXSkKKwkJCQk7OworCQkJZXNhYworCQlmaQorCWRvbmUKK2Vsc2UKKwlmZ3JlcCBkZWZpbmUgY29uZnRlc3QuaSA+PmNvbmZkZWZzLmgKK2ZpCitybSAtcmYgY29uZnRlc3QqCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HQ0NfVkVSU0lPTiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTIvMTAvMTggMDY6NDY6MzMKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIEZpbmQgdmVyc2lvbiBvZiBnY2MKK0FDX0RFRlVOKFtDRl9HQ0NfVkVSU0lPTl0sWworQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitHQ0NfVkVSU0lPTj1ub25lCitpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcodmVyc2lvbiBvZiAkQ0MpCisJR0NDX1ZFUlNJT049ImAke0NDfSAtLXZlcnNpb24gMj4vZGV2L251bGwgfCBzZWQgLWUgJzIsJGQnIC1lICdzL14uKihHQ0NbW14pXV0qKSAvLycgLWUgJ3MvXi4qKERlYmlhbltbXildXSopIC8vJyAtZSAncy9eW1teMC05Ll1dKi8vJyAtZSAncy9bW14wLTkuXV0uKi8vJ2AiCisJdGVzdCAteiAiJEdDQ19WRVJTSU9OIiAmJiBHQ0NfVkVSU0lPTj11bmtub3duCisJQUNfTVNHX1JFU1VMVCgkR0NDX1ZFUlNJT04pCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HQ0NfV0FSTklOR1MgdmVyc2lvbjogMzIgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB1c2VmdWwgd2FybmluZyBvcHRpb25zLiAgVGhlcmUncyBhIGZldyB0aGF0Citkbmwgd2UgZG9uJ3QgdXNlLCBzaW1wbHkgYmVjYXVzZSB0aGV5J3JlIHRvbyBub2lzeToKK2RubAorZG5sCS1XY29udmVyc2lvbiAodXNlZnVsIGluIG9sZGVyIHZlcnNpb25zIG9mIGdjYywgYnV0IG5vdCBpbiBnY2MgMi43LngpCitkbmwJLVdyZWR1bmRhbnQtZGVjbHMgKHN5c3RlbSBoZWFkZXJzIG1ha2UgdGhpcyB0b28gbm9pc3kpCitkbmwJLVd0cmFkaXRpb25hbCAoY29tYmluZXMgdG9vIG1hbnkgdW5yZWxhdGVkIG1lc3NhZ2VzLCBvbmx5IGEgZmV3IHVzZWZ1bCkKK2RubAktV3dyaXRlLXN0cmluZ3MgKHRvbyBub2lzeSwgYnV0IHNob3VsZCByZXZpZXcgb2NjYXNpb25hbGx5KS4gIFRoaXMKK2RubAkJaXMgZW5hYmxlZCBmb3IgbmN1cnNlcyB1c2luZyAiLS1lbmFibGUtY29uc3QiLgorZG5sCS1wZWRhbnRpYworZG5sCitkbmwgUGFyYW1ldGVyOgorZG5sCSQxIGlzIGFuIG9wdGlvbmFsIGxpc3Qgb2YgZ2NjIHdhcm5pbmcgZmxhZ3MgdGhhdCBhIHBhcnRpY3VsYXIKK2RubAkJYXBwbGljYXRpb24gbWlnaHQgd2FudCB0byB1c2UsIGUuZy4sICJuby11bnVzZWQiIGZvcgorZG5sCQktV25vLXVudXNlZAorZG5sIFNwZWNpYWw6CitkbmwJSWYgJHdpdGhfZXh0X2NvbnN0IGlzICJ5ZXMiLCBhZGQgYSBjaGVjayBmb3IgLVd3cml0ZS1zdHJpbmdzCitkbmwKK0FDX0RFRlVOKFtDRl9HQ0NfV0FSTklOR1NdLAorWworQUNfUkVRVUlSRShbQ0ZfR0NDX1ZFUlNJT05dKQorQ0ZfSU5URUxfQ09NUElMRVIoR0NDLElOVEVMX0NPTVBJTEVSLENGTEFHUykKK0NGX0NMQU5HX0NPTVBJTEVSKEdDQyxDTEFOR19DT01QSUxFUixDRkxBR1MpCisKK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIF9fb2xpbmVfXyAiJHthc19tZTotY29uZmlndXJlfSIKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W1tdXSkgeyByZXR1cm4gKGFyZ3ZbW2FyZ2MtMV1dID09IDApIDsgfQorRU9GCisKK2lmIHRlc3QgIiRJTlRFTF9DT01QSUxFUiIgPSB5ZXMKK3RoZW4KKyMgVGhlICItd2RYWFgiIG9wdGlvbnMgc3VwcHJlc3Mgd2FybmluZ3M6CisjIHJlbWFyayAjMTQxOTogZXh0ZXJuYWwgZGVjbGFyYXRpb24gaW4gcHJpbWFyeSBzb3VyY2UgZmlsZQorIyByZW1hcmsgIzE2ODM6IGV4cGxpY2l0IGNvbnZlcnNpb24gb2YgYSA2NC1iaXQgaW50ZWdyYWwgdHlwZSB0byBhIHNtYWxsZXIgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCisjIHJlbWFyayAjMTY4NDogY29udmVyc2lvbiBmcm9tIHBvaW50ZXIgdG8gc2FtZS1zaXplZCBpbnRlZ3JhbCB0eXBlIChwb3RlbnRpYWwgcG9ydGFiaWxpdHkgcHJvYmxlbSkKKyMgcmVtYXJrICMxOTM6IHplcm8gdXNlZCBmb3IgdW5kZWZpbmVkIHByZXByb2Nlc3NpbmcgaWRlbnRpZmllcgorIyByZW1hcmsgIzU5MzogdmFyaWFibGUgImN1cnNfc2JfbGVmdF9hcnJvdyIgd2FzIHNldCBidXQgbmV2ZXIgdXNlZAorIyByZW1hcmsgIzgxMDogY29udmVyc2lvbiBmcm9tICJpbnQiIHRvICJEaW1lbnNpb249e3Vuc2lnbmVkIHNob3J0fSIgbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cworIyByZW1hcmsgIzg2OTogcGFyYW1ldGVyICJ0dyIgd2FzIG5ldmVyIHJlZmVyZW5jZWQKKyMgcmVtYXJrICM5ODE6IG9wZXJhbmRzIGFyZSBldmFsdWF0ZWQgaW4gdW5zcGVjaWZpZWQgb3JkZXIKKyMgd2FybmluZyAjMjc5OiBjb250cm9sbGluZyBleHByZXNzaW9uIGlzIGNvbnN0YW50CisKKwlBQ19DSEVDS0lORyhbZm9yICRDQyB3YXJuaW5nIG9wdGlvbnNdKQorCWNmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCUVYVFJBX0NGTEFHUz0iLVdhbGwiCisJZm9yIGNmX29wdCBpbiBcCisJCXdkMTQxOSBcCisJCXdkMTY4MyBcCisJCXdkMTY4NCBcCisJCXdkMTkzIFwKKwkJd2Q1OTMgXAorCQl3ZDI3OSBcCisJCXdkODEwIFwKKwkJd2Q4NjkgXAorCQl3ZDk4MQorCWRvCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgQUNfTVNHX1JFU1VMVCguLi4gLSRjZl9vcHQpCisJCQlFWFRSQV9DRkxBR1M9IiRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWZpCisJZG9uZQorCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCitlbGlmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCisJQUNfQ0hFQ0tJTkcoW2ZvciAkQ0Mgd2FybmluZyBvcHRpb25zXSkKKwljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwlFWFRSQV9DRkxBR1M9CisJY2Zfd2Fybl9DT05TVD0iIgorCXRlc3QgIiR3aXRoX2V4dF9jb25zdCIgPSB5ZXMgJiYgY2Zfd2Fybl9DT05TVD0iV3dyaXRlLXN0cmluZ3MiCisJY2ZfZ2NjX3dhcm5pbmdzPSJXaWdub3JlZC1xdWFsaWZpZXJzIFdsb2dpY2FsLW9wIFd2YXJhcmdzIgorCXRlc3QgIngkQ0xBTkdfQ09NUElMRVIiID0geHllcyAmJiBjZl9nY2Nfd2FybmluZ3M9CisJZm9yIGNmX29wdCBpbiBXIFdhbGwgXAorCQlXYmFkLWZ1bmN0aW9uLWNhc3QgXAorCQlXY2FzdC1hbGlnbiBcCisJCVdjYXN0LXF1YWwgXAorCQlXZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IFwKKwkJV2V4dHJhIFwKKwkJV2lubGluZSBcCisJCVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCisJCVdtaXNzaW5nLXByb3RvdHlwZXMgXAorCQlXbmVzdGVkLWV4dGVybnMgXAorCQlXcG9pbnRlci1hcml0aCBcCisJCVdzaGFkb3cgXAorCQlXc3RyaWN0LXByb3RvdHlwZXMgXAorCQlXdW5kZWYgJGNmX2djY193YXJuaW5ncyAkY2Zfd2Fybl9DT05TVCAkMQorCWRvCisJCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTICRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgQUNfTVNHX1JFU1VMVCguLi4gLSRjZl9vcHQpCisJCQljYXNlICRjZl9vcHQgaW4KKwkJCShXY2FzdC1xdWFsKQorCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURYVFNUUklOR0RFRklORVMiCisJCQkJOzsKKwkJCShXaW5saW5lKQorCQkJCWNhc2UgJEdDQ19WRVJTSU9OIGluCisJCQkJKFtbMzRdXS4qKQorCQkJCQlDRl9WRVJCT1NFKGZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04pCisJCQkJCWNvbnRpbnVlOzsKKwkJCQllc2FjCisJCQkJOzsKKwkJCShXcG9pbnRlci1hcml0aCkKKwkJCQljYXNlICRHQ0NfVkVSU0lPTiBpbgorCQkJCShbWzEyXV0uKikKKwkJCQkJQ0ZfVkVSQk9TRShmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OKQorCQkJCQljb250aW51ZTs7CisJCQkJZXNhYworCQkJCTs7CisJCQllc2FjCisJCQlFWFRSQV9DRkxBR1M9IiRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWZpCisJZG9uZQorCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorZmkKK3JtIC1yZiBjb25mdGVzdCoKKworQUNfU1VCU1QoRVhUUkFfQ0ZMQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9HRVRPUFRfSEVBREVSIHZlcnNpb246IDYgdXBkYXRlZDogMjAxNC8wNy8yMiAxNDo0NTo1NAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgZ2V0b3B0J3MgdmFyaWFibGVzIHdoaWNoIGFyZSBjb21tb25seSBkZWZpbmVkIGluIHN0ZGxpYi5oLAorZG5sIHVuaXN0ZC5oIG9yIChub25zdGFuZGFyZCkgaW4gZ2V0b3B0LmgKK0FDX0RFRlVOKFtDRl9HRVRPUFRfSEVBREVSXSwKK1sKK0FDX0hBVkVfSEVBREVSUyh1bmlzdGQuaCBnZXRvcHQuaCkKK0FDX0NBQ0hFX0NIRUNLKGZvciBoZWFkZXIgZGVjbGFyaW5nIGdldG9wdCB2YXJpYWJsZXMsY2ZfY3ZfZ2V0b3B0X2hlYWRlcixbCitjZl9jdl9nZXRvcHRfaGVhZGVyPW5vbmUKK2ZvciBjZl9oZWFkZXIgaW4gc3RkaW8uaCBzdGRsaWIuaCB1bmlzdGQuaCBnZXRvcHQuaAorZG8KK0FDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDwkY2ZfaGVhZGVyPl0sCitbaW50IHggPSBvcHRpbmQ7IGNoYXIgKnkgPSBvcHRhcmddLAorW2NmX2N2X2dldG9wdF9oZWFkZXI9JGNmX2hlYWRlcgorIGJyZWFrXSkKK2RvbmUKK10pCitpZiB0ZXN0ICRjZl9jdl9nZXRvcHRfaGVhZGVyICE9IG5vbmUgOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfR0VUT1BUX0hFQURFUiwxLFtEZWZpbmUgdG8gMSBpZiBnZXRvcHQgdmFyaWFibGVzIGFyZSBkZWNsYXJlZCBpbiBoZWFkZXJdKQorZmkKK2lmIHRlc3QgJGNmX2N2X2dldG9wdF9oZWFkZXIgPSBnZXRvcHQuaCA7IHRoZW4KKwlBQ19ERUZJTkUoTkVFRF9HRVRPUFRfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBtdXN0IGluY2x1ZGUgZ2V0b3B0LmhdKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfR05VX1NPVVJDRSB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMDUvMDcvMDkgMTM6MjM6MDcKK2RubCAtLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgd2UgbXVzdCBkZWZpbmUgX0dOVV9TT1VSQ0UgdG8gZ2V0IGEgcmVhc29uYWJsZSB2YWx1ZSBmb3IKK2RubCBfWE9QRU5fU09VUkNFLCB1cG9uIHdoaWNoIG1hbnkgUE9TSVggZGVmaW5pdGlvbnMgZGVwZW5kLiAgVGhpcyBpcyBhIGRlZmVjdAorZG5sIChvciBtaXNmZWF0dXJlKSBvZiBnbGliYzIsIHdoaWNoIGJyZWFrcyBwb3J0YWJpbGl0eSBvZiBtYW55IGFwcGxpY2F0aW9ucywKK2RubCBzaW5jZSBpdCBpcyBpbnRlcndvdmVuIHdpdGggR05VIGV4dGVuc2lvbnMuCitkbmwKK2RubCBXZWxsLCB5ZXMgd2UgY291bGQgd29yayBhcm91bmQgaXQuLi4KK0FDX0RFRlVOKFtDRl9HTlVfU09VUkNFXSwKK1sKK0FDX0NBQ0hFX0NIRUNLKGlmIHdlIG11c3QgZGVmaW5lIF9HTlVfU09VUkNFLGNmX2N2X2dudV9zb3VyY2UsWworQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLFsKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwlbY2ZfY3ZfZ251X3NvdXJjZT1ub10sCisJW2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9HTlVfU09VUkNFIgorCSBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sWworI2lmZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sCisJW2NmX2N2X2dudV9zb3VyY2U9bm9dLAorCVtjZl9jdl9nbnVfc291cmNlPXllc10pCisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCV0pCitdKQordGVzdCAiJGNmX2N2X2dudV9zb3VyY2UiID0geWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfSEVBREVSX1BBVEggdmVyc2lvbjogMTMgdXBkYXRlZDogMjAxNS8wNC8xNSAxOTowODo0OAorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ29uc3RydWN0IGEgc2VhcmNoLWxpc3Qgb2YgZGlyZWN0b3JpZXMgZm9yIGEgbm9uc3RhbmRhcmQgaGVhZGVyLWZpbGUKK2RubAorZG5sIFBhcmFtZXRlcnMKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCitBQ19ERUZVTihbQ0ZfSEVBREVSX1BBVEhdLAorWworJDE9CisKKyMgY29sbGVjdCB0aGUgY3VycmVudCBzZXQgb2YgaW5jbHVkZS1kaXJlY3RvcmllcyBmcm9tIGNvbXBpbGVyIGZsYWdzCitjZl9oZWFkZXJfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0NGTEFHU30ke0NQUEZMQUdTfSIgOyB0aGVuCisJZm9yIGNmX2hlYWRlcl9wYXRoIGluICRDUFBGTEFHUyAkQ0ZMQUdTCisJZG8KKwkJY2FzZSAkY2ZfaGVhZGVyX3BhdGggaW4KKwkJKC1JKikKKwkJCWNmX2hlYWRlcl9wYXRoPWBlY2hvICIuJGNmX2hlYWRlcl9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2luY2x1ZGUkLCwnYAorCQkJQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLGluY2x1ZGUsJGNmX2hlYWRlcl9wYXRoLE5PTkUpCisJCQljZl9oZWFkZXJfcGF0aF9saXN0PSIkY2ZfaGVhZGVyX3BhdGhfbGlzdCBbJF0kMSIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCisjIGFkZCB0aGUgdmFyaWF0aW9ucyBmb3IgdGhlIHBhY2thZ2Ugd2UgYXJlIGxvb2tpbmcgZm9yCitDRl9TVUJESVJfUEFUSCgkMSwkMixpbmNsdWRlKQorCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAordGVzdCAtZCAiJGluY2x1ZGVkaXIiICYmIHsKKwl0ZXN0IC1kICRpbmNsdWRlZGlyICYmICAgICQxPSJbJF0kMSAkaW5jbHVkZWRpciIKKwl0ZXN0IC1kICRpbmNsdWRlZGlyLyQyICYmICQxPSJbJF0kMSAkaW5jbHVkZWRpci8kMiIKK30KKwordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9IE5PTkUgJiYgXAordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiICYmIFwKK3Rlc3QgLWQgIiRvbGRpbmNsdWRlZGlyIiAmJiB7CisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpciAgICAmJiAkMT0iWyRdJDEgJG9sZGluY2x1ZGVkaXIiCisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpci8kMiAmJiAkMT0iWyRdJDEgJG9sZGluY2x1ZGVkaXIvJDIiCit9CisKKyQxPSJbJF0kMSAkY2ZfaGVhZGVyX3BhdGhfbGlzdCIKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfSEVMUF9NRVNTQUdFIHZlcnNpb246IDMgdXBkYXRlZDogMTk5OC8wMS8xNCAxMDo1NjoyMworZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIEluc2VydCB0ZXh0IGludG8gdGhlIGhlbHAtbWVzc2FnZSwgZm9yIHJlYWRhYmlsaXR5LCBmcm9tIEFDX0FSR19XSVRILgorQUNfREVGVU4oW0NGX0hFTFBfTUVTU0FHRV0sCitbQUNfRElWRVJUX0hFTFAoWyQxXSlkbmwKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfSU5IRVJJVF9TQ1JJUFQgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDAzLzAzLzAxIDIzOjUwOjQyCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBJZiB3ZSBkbyBub3QgaGF2ZSBhIGdpdmVuIHNjcmlwdCwgbG9vayBmb3IgaXQgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCitBQ19ERUZVTihbQ0ZfSU5IRVJJVF9TQ1JJUFRdLAorWwordGVzdCAtZiAkMSB8fCAoIHRlc3QgLWYgLi4vJDEgJiYgY3AgLi4vJDEgLi8gKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9JTlRFTF9DT01QSUxFUiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHRoZSBnaXZlbiBjb21waWxlciBpcyByZWFsbHkgdGhlIEludGVsIGNvbXBpbGVyIGZvciBMaW51eC4gIEl0CitkbmwgdHJpZXMgdG8gaW1pdGF0ZSBnY2MsIGJ1dCBkb2VzIG5vdCByZXR1cm4gYW4gZXJyb3Igd2hlbiBpdCBmaW5kcyBhIG1pc21hdGNoCitkbmwgYmV0d2VlbiBwcm90b3R5cGVzLCBlLmcuLCBhcyBleGVyY2lzZWQgYnkgQ0ZfTUlTU0lOR19DSEVDSy4KK2RubAorZG5sIFRoaXMgbWFjcm8gc2hvdWxkIGJlIHJ1biAic29vbiIgYWZ0ZXIgQUNfUFJPR19DQyBvciBBQ19QUk9HX0NQTFVTUExVUywgdG8KK2RubCBlbnN1cmUgdGhhdCBpdCBpcyBub3QgbWlzdGFrZW4gZm9yIGdjYy9nKysuICBJdCBpcyBub3JtYWxseSBpbnZva2VkIGZyb20KK2RubCB0aGUgd3JhcHBlcnMgZm9yIGdjYyBhbmQgZysrIHdhcm5pbmdzLgorZG5sCitkbmwgJDEgPSBHQ0MgKGRlZmF1bHQpIG9yIEdYWAorZG5sICQyID0gSU5URUxfQ09NUElMRVIgKGRlZmF1bHQpIG9yIElOVEVMX0NQTFVTUExVUworZG5sICQzID0gQ0ZMQUdTIChkZWZhdWx0KSBvciBDWFhGTEFHUworQUNfREVGVU4oW0NGX0lOVEVMX0NPTVBJTEVSXSxbCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCitpZmVsc2UoWyQyXSwsSU5URUxfQ09NUElMRVIsWyQyXSk9bm8KKworaWYgdGVzdCAiJGlmZWxzZShbJDFdLCxbJDFdLEdDQykiID0geWVzIDsgdGhlbgorCWNhc2UgJGhvc3Rfb3MgaW4KKwkobGludXgqfGdudSopCisJCUFDX01TR19DSEVDS0lORyhpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBpZmVsc2UoWyQxXSxHWFgsQysrLEMpIGNvbXBpbGVyKQorCQljZl9zYXZlX0NGTEFHUz0iJGlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSkiCisJCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRpZmVsc2UoWyQzXSwsQ0ZMQUdTLFskM10pIC1uby1nY2MiCisJCUFDX1RSWV9DT01QSUxFKFtdLFsKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCitdLFtpZmVsc2UoWyQyXSwsSU5URUxfQ09NUElMRVIsWyQyXSk9eWVzCitjZl9zYXZlX0NGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIC13ZTE0NyIKK10sW10pCisJCWlmZWxzZShbJDNdLCxDRkxBR1MsWyQzXSk9IiRjZl9zYXZlX0NGTEFHUyIKKwkJQUNfTVNHX1JFU1VMVCgkaWZlbHNlKFskMl0sLElOVEVMX0NPTVBJTEVSLFskMl0pKQorCQk7OworCWVzYWMKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX0xEX1JQQVRIX09QVCB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBGb3IgdGhlIGdpdmVuIHN5c3RlbSBhbmQgY29tcGlsZXIsIGZpbmQgdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHBhc3MgdG8gdGhlCitkbmwgbG9hZGVyIHRvIHVzZSB0aGUgInJwYXRoIiBmZWF0dXJlLgorQUNfREVGVU4oW0NGX0xEX1JQQVRIX09QVF0sCitbCitBQ19SRVFVSVJFKFtDRl9DSEVDS19DQUNIRV0pCisKK0xEX1JQQVRIX09QVD0KK0FDX01TR19DSEVDS0lORyhmb3IgYW4gcnBhdGggb3B0aW9uKQorY2FzZSAkY2ZfY3Zfc3lzdGVtX25hbWUgaW4KKyhpcml4KikKKwlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCQlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCWVsc2UKKwkJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCWZpCisJOzsKKyhsaW51eCp8Z251KnxrKmJzZCotZ251KQorCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJOzsKKyhvcGVuYnNkW1syLTldXS4qfG1pcmJzZCopCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKGRyYWdvbmZseSp8ZnJlZWJzZCopCisJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCTs7CisobmV0YnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7Cisob3NmKnxtbHMrKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhzb2xhcmlzMiopCisJTERfUlBBVEhfT1BUPSItUiIKKwk7OworKCopCisJOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoJExEX1JQQVRIX09QVCkKKworY2FzZSAieCRMRF9SUEFUSF9PUFQiIGluCisoeC1SKikKKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgbmVlZCBhIHNwYWNlIGFmdGVyIHJwYXRoIG9wdGlvbikKKwljZl9zYXZlX0xJQlM9IiRMSUJTIgorCUNGX0FERF9MSUJTKCR7TERfUlBBVEhfT1BUfSRsaWJkaXIpCisJQUNfVFJZX0xJTksoLCAsIGNmX3JwYXRoX3NwYWNlPW5vLCBjZl9ycGF0aF9zcGFjZT15ZXMpCisJTElCUz0iJGNmX3NhdmVfTElCUyIKKwlBQ19NU0dfUkVTVUxUKCRjZl9ycGF0aF9zcGFjZSkKKwl0ZXN0ICIkY2ZfcnBhdGhfc3BhY2UiID0geWVzICYmIExEX1JQQVRIX09QVD0iJExEX1JQQVRIX09QVCAiCisJOzsKK2VzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTElCUkFSWV9QQVRIIHZlcnNpb246IDEwIHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDb25zdHJ1Y3QgYSBzZWFyY2gtbGlzdCBvZiBkaXJlY3RvcmllcyBmb3IgYSBub25zdGFuZGFyZCBsaWJyYXJ5LWZpbGUKK2RubAorZG5sIFBhcmFtZXRlcnMKK2RubAkkMSA9IHRoZSB2YXJpYWJsZSB0byByZXR1cm4gYXMgcmVzdWx0CitkbmwJJDIgPSB0aGUgcGFja2FnZSBuYW1lCitBQ19ERUZVTihbQ0ZfTElCUkFSWV9QQVRIXSwKK1sKKyQxPQorY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7TERGTEFHU30ke0xJQlN9IiA7IHRoZW4KKwlmb3IgY2ZfbGlicmFyeV9wYXRoIGluICRMREZMQUdTICRMSUJTCisJZG8KKwkJY2FzZSAkY2ZfbGlicmFyeV9wYXRoIGluCisJCSgtTCopCisJCQljZl9saWJyYXJ5X3BhdGg9YGVjaG8gIi4kY2ZfbGlicmFyeV9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2xpYiQsLCdgCisJCQlDRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsbGliLCRjZl9saWJyYXJ5X3BhdGgsTk9ORSkKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgWyRdJDEiCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworQ0ZfU1VCRElSX1BBVEgoJDEsJDIsbGliKQorCiskMT0iJGNmX2xpYnJhcnlfcGF0aF9saXN0IFskXSQxIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9NQUtFX1RBR1MgdmVyc2lvbjogNiB1cGRhdGVkOiAyMDEwLzEwLzIzIDE1OjUyOjMyCitkbmwgLS0tLS0tLS0tLS0tCitkbmwgR2VuZXJhdGUgdGFncy9UQUdTIHRhcmdldHMgZm9yIG1ha2VmaWxlcy4gIERvIG5vdCBnZW5lcmF0ZSBUQUdTIGlmIHdlIGhhdmUKK2RubCBhIG1vbm9jYXNlIGZpbGVzeXN0ZW0uCitBQ19ERUZVTihbQ0ZfTUFLRV9UQUdTXSxbCitBQ19SRVFVSVJFKFtDRl9NSVhFRENBU0VfRklMRU5BTUVTXSkKKworQUNfQ0hFQ0tfUFJPR1MoQ1RBR1MsIGV4Y3RhZ3MgY3RhZ3MpCitBQ19DSEVDS19QUk9HUyhFVEFHUywgZXhldGFncyBldGFncykKKworQUNfQ0hFQ0tfUFJPRyhNQUtFX0xPV0VSX1RBR1MsICR7Q1RBR1M6LWN0YWdzfSwgeWVzLCBubykKKworaWYgdGVzdCAiJGNmX2N2X21peGVkY2FzZSIgPSB5ZXMgOyB0aGVuCisJQUNfQ0hFQ0tfUFJPRyhNQUtFX1VQUEVSX1RBR1MsICR7RVRBR1M6LWV0YWdzfSwgeWVzLCBubykKK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9bm8KK2ZpCisKK2lmIHRlc3QgIiRNQUtFX1VQUEVSX1RBR1MiID0geWVzIDsgdGhlbgorCU1BS0VfVVBQRVJfVEFHUz0KK2Vsc2UKKwlNQUtFX1VQUEVSX1RBR1M9IiMiCitmaQorCitpZiB0ZXN0ICIkTUFLRV9MT1dFUl9UQUdTIiA9IHllcyA7IHRoZW4KKwlNQUtFX0xPV0VSX1RBR1M9CitlbHNlCisJTUFLRV9MT1dFUl9UQUdTPSIjIgorZmkKKworQUNfU1VCU1QoQ1RBR1MpCitBQ19TVUJTVChFVEFHUykKKworQUNfU1VCU1QoTUFLRV9VUFBFUl9UQUdTKQorQUNfU1VCU1QoTUFLRV9MT1dFUl9UQUdTKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9NQVRIX0xJQiB2ZXJzaW9uOiA4IHVwZGF0ZWQ6IDIwMTAvMDUvMjkgMTY6MzE6MDIKK2RubCAtLS0tLS0tLS0tLQorZG5sIENoZWNrcyBmb3IgbGlicmFyaWVzLiAgQXQgbGVhc3Qgb25lIFVOSVggc3lzdGVtLCBBcHBsZSBNYWNpbnRvc2gKK2RubCBSaGFwc29keSA1LjUsIGRvZXMgbm90IGhhdmUgLWxtLiAgV2UgY2Fubm90IHVzZSB0aGUgc2ltcGxlcgorZG5sIEFDX0NIRUNLX0xJQihtLHNpbiksIGJlY2F1c2UgdGhhdCBmYWlscyBmb3IgQysrLgorQUNfREVGVU4oW0NGX01BVEhfTElCXSwKK1sKK0FDX0NBQ0hFX0NIRUNLKGlmIC1sbSBuZWVkZWQgZm9yIG1hdGggZnVuY3Rpb25zLAorCWNmX2N2X25lZWRfbGlibSxbCisJQUNfVFJZX0xJTksoWworCSNpbmNsdWRlIDxzdGRpby5oPgorCSNpbmNsdWRlIDxtYXRoLmg+CisJXSwKKwlbZG91YmxlIHggPSByYW5kKCk7IHByaW50ZigicmVzdWx0ID0gJWdcbiIsIF1pZmVsc2UoWyQyXSwsc2luKHgpLCQyKVspXSwKKwlbY2ZfY3ZfbmVlZF9saWJtPW5vXSwKKwlbY2ZfY3ZfbmVlZF9saWJtPXllc10pXSkKK2lmIHRlc3QgIiRjZl9jdl9uZWVkX2xpYm0iID0geWVzCit0aGVuCitpZmVsc2UoJDEsLFsKKwlDRl9BRERfTElCKG0pCitdLFskMT0tbG1dKQorZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTUlYRURDQVNFX0ZJTEVOQU1FUyB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgdGhlIGZpbGUtc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzLiAgSWYgd2UncmUgYWJsZSB0bworZG5sIGNyZWF0ZSBhIGxvd2VyY2FzZSBuYW1lIGFuZCBzZWUgaXQgYXMgdXBwZXJjYXNlLCBpdCBkb2Vzbid0IHN1cHBvcnQgdGhhdC4KK0FDX0RFRlVOKFtDRl9NSVhFRENBU0VfRklMRU5BTUVTXSwKK1sKK0FDX0NBQ0hFX0NIRUNLKGlmIGZpbGVzeXN0ZW0gc3VwcG9ydHMgbWl4ZWQtY2FzZSBmaWxlbmFtZXMsY2ZfY3ZfbWl4ZWRjYXNlLFsKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgorCWNhc2UgJHRhcmdldF9hbGlhcyBpbgorCSgqLW9zMi1lbXgqfCotbXNkb3NkamdwcCp8Ki1jeWd3aW4qfCotbXN5cyp8Ki1taW5ndyp8Ki11d2luKikKKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJCTs7CisJKCopCisJCWNmX2N2X21peGVkY2FzZT15ZXMKKwkJOzsKKwllc2FjCitlbHNlCisJcm0gLWYgY29uZnRlc3QgQ09ORlRFU1QKKwllY2hvIHRlc3QgPmNvbmZ0ZXN0CisJaWYgdGVzdCAtZiBDT05GVEVTVCA7IHRoZW4KKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJZWxzZQorCQljZl9jdl9taXhlZGNhc2U9eWVzCisJZmkKKwlybSAtZiBjb25mdGVzdCBDT05GVEVTVAorZmkKK10pCit0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyAmJiBBQ19ERUZJTkUoTUlYRURDQVNFX0ZJTEVOQU1FUywxLFtEZWZpbmUgdG8gMSBpZiBmaWxlc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzLl0pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX01TR19MT0cgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDEwLzEwLzIzIDE1OjUyOjMyCitkbmwgLS0tLS0tLS0tLQorZG5sIFdyaXRlIGEgZGVidWcgbWVzc2FnZSB0byBjb25maWcubG9nLCBhbG9uZyB3aXRoIHRoZSBsaW5lIG51bWJlciBpbiB0aGUKK2RubCBjb25maWd1cmUgc2NyaXB0LgorQUNfREVGVU4oW0NGX01TR19MT0ddLFsKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06X19vbGluZV9fOiB0ZXN0aW5nICQqIC4uLiIgMT4mQUNfRkRfQ0MKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19DQ19DSEVDSyB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMDcvMDcvMjkgMTA6Mzk6MDUKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgaWYgd2UgY2FuIGNvbXBpbGUgd2l0aCBuY3Vyc2VzJyBoZWFkZXIgZmlsZQorZG5sICQxIGlzIHRoZSBjYWNoZSB2YXJpYWJsZSB0byBzZXQKK2RubCAkMiBpcyB0aGUgaGVhZGVyLWZpbGUgdG8gaW5jbHVkZQorZG5sICQzIGlzIHRoZSByb290IG5hbWUgKG5jdXJzZXMgb3IgbmN1cnNlc3cpCitBQ19ERUZVTihbQ0ZfTkNVUlNFU19DQ19DSEVDS10sWworCUFDX1RSWV9DT01QSUxFKFsKK11pZmVsc2UoJDMsbmN1cnNlc3csWworI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjdW5kZWYgIEhBVkVfTElCVVRGOF9ICS8qIGluIGNhc2Ugd2UgdXNlZCBDRl9VVEY4X0xJQiAqLworI2RlZmluZSBIQVZFX0xJQlVURjhfSAkvKiB0byBmb3JjZSBuY3Vyc2VzJyBoZWFkZXIgZmlsZSB0byB1c2UgY2NoYXJfdCAqLworXSlbCisjaW5jbHVkZSA8JDI+XSxbCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCitdaWZlbHNlKCQzLG5jdXJzZXN3LFsKKyNpZm5kZWYgV0FDU19CU1NCCisJbWFrZSBhbiBlcnJvcgorI2VuZGlmCitdKVsKK3ByaW50ZigiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitwcmludGYoIm9sZFxuIik7CisjZWxzZQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisJXQorCSxbJDE9JDJdCisJLFskMT1ub10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX05DVVJTRVNfQ09ORklHIHZlcnNpb246IDE3IHVwZGF0ZWQ6IDIwMTUvMDcvMDcgMDQ6MjI6MDcKK2RubCAtLS0tLS0tLS0tLS0tLS0tLQorZG5sIFRpZSB0b2dldGhlciB0aGUgY29uZmlndXJlLXNjcmlwdCBtYWNyb3MgZm9yIG5jdXJzZXMsIHByZWZlcnJpbmcgdGhlc2UgaW4KK2RubCBvcmRlcjoKK2RubCBhKSAiLnBjIiBmaWxlcyBmb3IgcGtnLWNvbmZpZywgdXNpbmcgJE5DVVJTRVNfQ09ORklHX1BLRworZG5sIGIpIHRoZSAiLWNvbmZpZyIgc2NyaXB0IGZyb20gbmN1cnNlcywgdXNpbmcgJE5DVVJTRVNfQ09ORklHCitkbmwgYykganVzdCBwbGFpbiBsaWJyYXJpZXMKK2RubAorZG5sICQxIGlzIHRoZSByb290IGxpYnJhcnkgbmFtZSAoZGVmYXVsdDogIm5jdXJzZXMiKQorQUNfREVGVU4oW0NGX05DVVJTRVNfQ09ORklHXSxbCitBQ19SRVFVSVJFKFtDRl9QS0dfQ09ORklHXSkKK2NmX25jdWNvbmZpZ19yb290PWlmZWxzZSgkMSwsbmN1cnNlcywkMSkKK2NmX2hhdmVfbmN1Y29uZmlnPW5vCisKK2lmIHRlc3QgIngke1BLR19DT05GSUc6PW5vbmV9IiAhPSB4bm9uZTsgdGhlbgorCUFDX01TR19DSEVDS0lORyhwa2ctY29uZmlnIGZvciAkY2ZfbmN1Y29uZmlnX3Jvb3QpCisJaWYgIiRQS0dfQ09ORklHIiAtLWV4aXN0cyAkY2ZfbmN1Y29uZmlnX3Jvb3QgOyB0aGVuCisJCUFDX01TR19SRVNVTFQoeWVzKQorCisJCUFDX01TR19DSEVDS0lORyhpZiB0aGUgJGNmX25jdWNvbmZpZ19yb290IHBhY2thZ2UgZmlsZXMgd29yaykKKwkJY2ZfaGF2ZV9uY3Vjb25maWc9dW5rbm93bgorCisJCWNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUEtHX0NPTkZJRyAtLWNmbGFncyAkY2ZfbmN1Y29uZmlnX3Jvb3RgIgorCQlDRl9BRERfTElCUyhgJFBLR19DT05GSUcgLS1saWJzICRjZl9uY3Vjb25maWdfcm9vdGApCisKKwkJQUNfVFJZX0xJTksoWyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwkJCVtpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApO10sCisJCQlbQUNfVFJZX1JVTihbI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKwkJCQlpbnQgbWFpbih2b2lkKQorCQkJCXsgY2hhciAqeHggPSBjdXJzZXNfdmVyc2lvbigpOyByZXR1cm4gKHh4ID09IDApOyB9XSwKKwkJCQlbY2ZfaGF2ZV9uY3Vjb25maWc9eWVzXSwKKwkJCQlbY2ZfaGF2ZV9uY3Vjb25maWc9bm9dLAorCQkJCVtjZl9oYXZlX25jdWNvbmZpZz1tYXliZV0pXSwKKwkJCVtjZl9oYXZlX25jdWNvbmZpZz1ub10pCisJCUFDX01TR19SRVNVTFQoJGNmX2hhdmVfbmN1Y29uZmlnKQorCQl0ZXN0ICIkY2ZfaGF2ZV9uY3Vjb25maWciID0gbWF5YmUgJiYgY2ZfaGF2ZV9uY3Vjb25maWc9eWVzCisJCWlmIHRlc3QgIiRjZl9oYXZlX25jdWNvbmZpZyIgIT0gInllcyIKKwkJdGhlbgorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJCWVsc2UKKwkJCUFDX0RFRklORShOQ1VSU0VTLDEsW0RlZmluZSB0byAxIGlmIHdlIGFyZSB1c2luZyBuY3Vyc2VzIGhlYWRlcnMvbGlicmFyaWVzXSkKKwkJCU5DVVJTRVNfQ09ORklHX1BLRz0kY2ZfbmN1Y29uZmlnX3Jvb3QKKwkJZmkKKworCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChubykKKwkJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKKwlmaQorZWxzZQorCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCitmaQorCitpZiB0ZXN0ICJ4JGNmX2hhdmVfbmN1Y29uZmlnIiA9ICJ4bm8iOyB0aGVuCisJZWNobyAiTG9va2luZyBmb3IgJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnIgorCisJQ0ZfQUNWRVJTSU9OX0NIRUNLKDIuNTIsCisJCVtBQ19DSEVDS19UT09MUyhOQ1VSU0VTX0NPTkZJRywgJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9Ni1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH01LWNvbmZpZywgbm9uZSldLAorCQlbQUNfUEFUSF9QUk9HUyhOQ1VSU0VTX0NPTkZJRywgICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9NS1jb25maWcsIG5vbmUpXSkKKworCWlmIHRlc3QgIiROQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkTkNVUlNFU19DT05GSUcgLS1jZmxhZ3NgIgorCQlDRl9BRERfTElCUyhgJE5DVVJTRVNfQ09ORklHIC0tbGlic2ApCisKKwkJIyBldmVuIHdpdGggY29uZmlnIHNjcmlwdCwgc29tZSBwYWNrYWdlcyB1c2Ugbm8tb3ZlcnJpZGUgZm9yIGN1cnNlcy5oCisJCUNGX0NVUlNFU19IRUFERVIoaWZlbHNlKCQxLCxuY3Vyc2VzLCQxKSkKKworCQlkbmwgbGlrZSBDRl9OQ1VSU0VTX0NQUEZMQUdTCisJCUFDX0RFRklORShOQ1VSU0VTLDEsW0RlZmluZSB0byAxIGlmIHdlIGFyZSB1c2luZyBuY3Vyc2VzIGhlYWRlcnMvbGlicmFyaWVzXSkKKworCQlkbmwgbGlrZSBDRl9OQ1VSU0VTX0xJQlMKKwkJQ0ZfVVBQRVIoY2ZfbmN1bGliX1JPT1QsSEFWRV9MSUIkY2ZfbmN1Y29uZmlnX3Jvb3QpCisJCUFDX0RFRklORV9VTlFVT1RFRCgkY2ZfbmN1bGliX1JPT1QpCisKKwkJZG5sIGxpa2UgQ0ZfTkNVUlNFU19WRVJTSU9OCisJCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gJE5DVVJTRVNfQ09ORklHIC0tdmVyc2lvbmAKKworCWVsc2UKKworCQlDRl9OQ1VSU0VTX0NQUEZMQUdTKGlmZWxzZSgkMSwsbmN1cnNlcywkMSkpCisJCUNGX05DVVJTRVNfTElCUyhpZmVsc2UoJDEsLG5jdXJzZXMsJDEpKQorCisJZmkKK2Vsc2UKKwlOQ1VSU0VTX0NPTkZJRz1ub25lCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9OQ1VSU0VTX0NQUEZMQUdTIHZlcnNpb246IDIxIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMDg6NTc6NTEKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgTG9vayBmb3IgdGhlIFNWcjQgY3Vyc2VzIGNsb25lICduY3Vyc2VzJyBpbiB0aGUgc3RhbmRhcmQgcGxhY2VzLCBhZGp1c3RpbmcKK2RubCB0aGUgQ1BQRkxBR1MgdmFyaWFibGUgc28gd2UgY2FuIGluY2x1ZGUgaXRzIGhlYWRlci4KK2RubAorZG5sIFRoZSBoZWFkZXIgZmlsZXMgbWF5IGJlIGluc3RhbGxlZCBhcyBlaXRoZXIgY3Vyc2VzLmgsIG9yIG5jdXJzZXMuaCAod291bGQKK2RubCBiZSBvYnNvbGV0ZSwgZXhjZXB0IHRoYXQgc29tZSBwYWNrYWdlcnMgcHJlZmVyIHRoaXMgbmFtZSB0byBkaXN0aW5ndWlzaCBpdAorZG5sIGZyb20gYSAibmF0aXZlIiBjdXJzZXMgaW1wbGVtZW50YXRpb24pLiAgSWYgbm90IGluc3RhbGxlZCBmb3Igb3ZlcndyaXRlLAorZG5sIHRoZSBjdXJzZXMuaCBmaWxlIHdvdWxkIGJlIGluIGFuIG5jdXJzZXMgc3ViZGlyZWN0b3J5IChlLmcuLAorZG5sIC91c3IvaW5jbHVkZS9uY3Vyc2VzKSwgYnV0IHNvbWVvbmUgbWF5IGhhdmUgaW5zdGFsbGVkIG92ZXJ3cml0aW5nIHRoZQorZG5sIHZlbmRvcidzIGN1cnNlcy4gIE9ubHkgdmVyeSBvbGQgdmVyc2lvbnMgKHByZS0xLjkuMmQsIHRoZSBmaXJzdCBhdXRvY29uZidkCitkbmwgdmVyc2lvbikgb2YgbmN1cnNlcyBkb24ndCBkZWZpbmUgZWl0aGVyIF9fTkNVUlNFU19IIG9yIE5DVVJTRVNfVkVSU0lPTiBpbgorZG5sIHRoZSBoZWFkZXIuCitkbmwKK2RubCBJZiB0aGUgaW5zdGFsbGVyIGhhcyBzZXQgJENGTEFHUyBvciAkQ1BQRkxBR1Mgc28gdGhhdCB0aGUgbmN1cnNlcyBoZWFkZXIKK2RubCBpcyBhbHJlYWR5IGluIHRoZSBpbmNsdWRlLXBhdGgsIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggdGhpcywgc2luY2Ugd2UgY2Fubm90CitkbmwgZWFzaWx5IGRldGVybWluZSB3aGljaCBmaWxlIGl0IGlzLiAgSW4gdGhpcyBjYXNlLCBpdCBoYXMgdG8gYmUgPGN1cnNlcy5oPi4KK2RubAorZG5sIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgZ2l2ZXMgdGhlIHJvb3QgbmFtZSBvZiB0aGUgbGlicmFyeSwgaW4gY2FzZSBpdCBpcworZG5sIG5vdCBpbnN0YWxsZWQgYXMgdGhlIGRlZmF1bHQgY3Vyc2VzIGxpYnJhcnkuICBUaGF0IGlzIGhvdyB0aGUKK2RubCB3aWRlLWNoYXJhY3RlciB2ZXJzaW9uIG9mIG5jdXJzZXMgaXMgaW5zdGFsbGVkLgorQUNfREVGVU4oW0NGX05DVVJTRVNfQ1BQRkxBR1NdLAorW0FDX1JFUVVJUkUoW0NGX1dJVEhfQ1VSU0VTX0RJUl0pCisKK0FDX1BST1ZJREUoW0NGX0NVUlNFU19DUFBGTEFHU10pZG5sCitjZl9uY3VoZHJfcm9vdD1pZmVsc2UoJDEsLG5jdXJzZXMsJDEpCisKK3Rlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiBcCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiAmJiB7IFwKKyAgQ0ZfQUREX0lOQ0RJUigkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCkKK30KKworQUNfQ0FDSEVfQ0hFQ0soZm9yICRjZl9uY3VoZHJfcm9vdCBoZWFkZXIgaW4gaW5jbHVkZS1wYXRoLCBjZl9jdl9uY3Vyc2VzX2gsWworCWNmX2hlYWRlcl9saXN0PSIkY2ZfbmN1aGRyX3Jvb3QvY3Vyc2VzLmggJGNmX25jdWhkcl9yb290L25jdXJzZXMuaCIKKwkoIHRlc3QgIiRjZl9uY3VoZHJfcm9vdCIgPSBuY3Vyc2VzIHx8IHRlc3QgIiRjZl9uY3VoZHJfcm9vdCIgPSBuY3Vyc2VzdyApICYmIGNmX2hlYWRlcl9saXN0PSIkY2ZfaGVhZGVyX2xpc3QgY3Vyc2VzLmggbmN1cnNlcy5oIgorCWZvciBjZl9oZWFkZXIgaW4gJGNmX2hlYWRlcl9saXN0CisJZG8KKwkJQ0ZfTkNVUlNFU19DQ19DSEVDSyhjZl9jdl9uY3Vyc2VzX2gsJGNmX2hlYWRlciwkMSkKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCitdKQorCitDRl9OQ1VSU0VTX0hFQURFUgorQ0ZfVEVSTV9IRUFERVIKKworIyBzb21lIGFwcGxpY2F0aW9ucyBuZWVkIHRoaXMsIGJ1dCBzaG91bGQgY2hlY2sgZm9yIE5DVVJTRVNfVkVSU0lPTgorQUNfREVGSU5FKE5DVVJTRVMsMSxbRGVmaW5lIHRvIDEgaWYgd2UgYXJlIHVzaW5nIG5jdXJzZXMgaGVhZGVycy9saWJyYXJpZXNdKQorCitDRl9OQ1VSU0VTX1ZFUlNJT04KK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19FWFRfRlVOQ1MgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDEyLzEwLzA2IDE2OjM5OjU4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZSAyMDA3LzExLzE3LCBuY3Vyc2VzIGhhcyBkZWZpbmVkIE5DVVJTRVNfRVhUX0ZVTkNTOyBlYXJsaWVyIHZlcnNpb25zCitkbmwgbWF5IHByb3ZpZGUgdGhlc2UgZnVuY3Rpb25zLiAgRGVmaW5lIHRoZSBzeW1ib2wgaWYgaXQgaXMgbm90IGRlZmluZWQsIGFuZAorZG5sIGlmIGl0IGlzIHZhbGlkLgorQUNfREVGVU4oW0NGX05DVVJTRVNfRVhUX0ZVTkNTXSwKK1sKK0FDX0NBQ0hFX0NIRUNLKGZvciBuY3Vyc2VzIGV4dGVuZGVkIGZ1bmN0aW9ucyxjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcyxbCitBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCitbCitpbnQgeCA9IE5DVVJTRVNfRVhUX0ZVTkNTCitdLFtjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcz1kZWZpbmVkXSxbCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCitbCisJKHZvaWQpIGFzc3VtZV9kZWZhdWx0X2NvbG9ycyAoMCwgMCk7CisJKHZvaWQpIGN1cnNlc192ZXJzaW9uICgpOworCSh2b2lkKSBkZWZpbmVfa2V5ICgwLCAwKTsKKwkodm9pZCkgaXNfdGVybV9yZXNpemVkICgwLCAwKTsKKwkodm9pZCkga2V5X2RlZmluZWQgKDApOworCSh2b2lkKSBrZXlib3VuZCAoMCwgMCk7CisJKHZvaWQpIGtleW9rICgwLCAwKTsKKwkodm9pZCkgcmVzaXplX3Rlcm0gKDAsIDApOworCSh2b2lkKSByZXNpemV0ZXJtICgwLCAwKTsKKwkodm9pZCkgdXNlX2RlZmF1bHRfY29sb3JzICgpOworCSh2b2lkKSB1c2VfZXh0ZW5kZWRfbmFtZXMgKDApOworCSh2b2lkKSB3cmVzaXplICgwLCAwLCAwKTtdLAorCVtjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcz15ZXNdLAorCVtjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcz1ub10pCitdKQorXSkKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcyIgPSB5ZXMgJiYgQUNfREVGSU5FKE5DVVJTRVNfRVhUX0ZVTkNTLDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlcyBleHRlbnNpb25zXSkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19IRUFERVIgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE1LzA0LzE1IDE5OjA4OjQ4CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBGaW5kIGEgImN1cnNlcyIgaGVhZGVyIGZpbGUsIGUuZywuICJjdXJzZXMuaCIsIG9yIG9uZSBvZiB0aGUgbW9yZSBjb21tb24KK2RubCB2YXJpYXRpb25zIG9mIG5jdXJzZXMnIGluc3RhbGxzLgorZG5sCitkbmwgU2VlIGFsc28gQ0ZfQ1VSU0VTX0hFQURFUiwgd2hpY2ggc2V0cyB0aGUgc2FtZSBjYWNoZSB2YXJpYWJsZS4KK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX0hFQURFUl0sWworCitpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oIiAhPSBubyA7IHRoZW4KKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfY3ZfbmN1cnNlc19oCitlbHNlCisKK0FDX0NBQ0hFX0NIRUNLKGZvciAkY2ZfbmN1aGRyX3Jvb3QgaW5jbHVkZS1wYXRoLCBjZl9jdl9uY3Vyc2VzX2gyLFsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobworCUNGX0hFQURFUl9QQVRIKGNmX3NlYXJjaCwkY2ZfbmN1aGRyX3Jvb3QpCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gc2VhcmNoIHBhdGggJGNmX3NlYXJjaAorCWNmX3NhdmUyX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJZm9yIGNmX2luY2RpciBpbiAkY2Zfc2VhcmNoCisJZG8KKwkJQ0ZfQUREX0lOQ0RJUigkY2ZfaW5jZGlyKQorCQlmb3IgY2ZfaGVhZGVyIGluIFwKKwkJCW5jdXJzZXMuaCBcCisJCQljdXJzZXMuaAorCQlkbworCQkJQ0ZfTkNVUlNFU19DQ19DSEVDSyhjZl9jdl9uY3Vyc2VzX2gyLCRjZl9oZWFkZXIsJDEpCisJCQlpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gOyB0aGVuCisJCQkJY2ZfY3ZfbmN1cnNlc19oMj0kY2ZfaW5jZGlyLyRjZl9oZWFkZXIKKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAkYWNfbiAiCS4uLiBmb3VuZCAkYWNfYyIgMT4mQUNfRkRfTVNHCisJCQkJYnJlYWsKKwkJCWZpCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0ZWQgJGNmX2luY2Rpci8kY2ZfaGVhZGVyIiAxPiZBQ19GRF9NU0cKKwkJZG9uZQorCQlDUFBGTEFHUz0iJGNmX3NhdmUyX0NQUEZMQUdTIgorCQl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gJiYgYnJlYWsKKwlkb25lCisJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiID0gbm8gJiYgQUNfTVNHX0VSUk9SKG5vdCBmb3VuZCkKKwldKQorCisJQ0ZfRElSTkFNRShjZl8xc3RfaW5jZGlyLCRjZl9jdl9uY3Vyc2VzX2gyKQorCWNmX2N2X25jdXJzZXNfaGVhZGVyPWBiYXNlbmFtZSAkY2ZfY3ZfbmN1cnNlc19oMmAKKwlpZiB0ZXN0IGBiYXNlbmFtZSAkY2ZfMXN0X2luY2RpcmAgPSAkY2ZfbmN1aGRyX3Jvb3QgOyB0aGVuCisJCWNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9uY3VoZHJfcm9vdC8kY2ZfY3ZfbmN1cnNlc19oZWFkZXIKKwlmaQorCUNGX0FERF9JTkNESVIoJGNmXzFzdF9pbmNkaXIpCisKK2ZpCisKKyMgU2V0IGRlZmluaXRpb25zIHRvIGFsbG93IGlmZGVmJ2luZyBmb3IgbmN1cnNlcy5oCisKK2Nhc2UgJGNmX2N2X25jdXJzZXNfaGVhZGVyIGluCisoKm5jdXJzZXMuaCkKKwlBQ19ERUZJTkUoSEFWRV9OQ1VSU0VTX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzLmhdKQorCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X25jdXJzZXNfaGVhZGVyIGluCisobmN1cnNlcy9jdXJzZXMuaHxuY3Vyc2VzL25jdXJzZXMuaCkKKwlBQ19ERUZJTkUoSEFWRV9OQ1VSU0VTX05DVVJTRVNfSCwxLFtEZWZpbmUgdG8gMSBpZiB3ZSBoYXZlIG5jdXJzZXMvbmN1cnNlcy5oXSkKKwk7OworKG5jdXJzZXN3L2N1cnNlcy5ofG5jdXJzZXN3L25jdXJzZXMuaCkKKwlBQ19ERUZJTkUoSEFWRV9OQ1VSU0VTV19OQ1VSU0VTX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2Vzdy9uY3Vyc2VzLmhdKQorCTs7Citlc2FjCisKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19MSUJTIHZlcnNpb246IDE3IHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBMb29rIGZvciB0aGUgbmN1cnNlcyBsaWJyYXJ5LiAgVGhpcyBpcyBhIGxpdHRsZSBjb21wbGljYXRlZCBvbiBMaW51eCwKK2RubCBiZWNhdXNlIGl0IG1heSBiZSBsaW5rZWQgd2l0aCB0aGUgZ3BtIChnZW5lcmFsIHB1cnBvc2UgbW91c2UpIGxpYnJhcnkuCitkbmwgU29tZSBkaXN0cmlidXRpb25zIGhhdmUgZ3BtIGxpbmtlZCB3aXRoIChic2QpIGN1cnNlcywgd2hpY2ggbWFrZXMgaXQKK2RubCB1bnVzYWJsZSB3aXRoIG5jdXJzZXMuICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIGxpbmsgd2l0aCBncG0gdW5sZXNzCitkbmwgbmN1cnNlcyBoYXMgYSBkZXBlbmRlbmN5LCBzaW5jZSBncG0gaXMgbm9ybWFsbHkgc2V0IHVwIGFzIGEgc2hhcmVkIGxpYnJhcnksCitkbmwgYW5kIHRoZSBsaW5rZXIgd2lsbCByZWNvcmQgYSBkZXBlbmRlbmN5LgorZG5sCitkbmwgVGhlIG9wdGlvbmFsIHBhcmFtZXRlciBnaXZlcyB0aGUgcm9vdCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpbiBjYXNlIGl0IGlzCitkbmwgbm90IGluc3RhbGxlZCBhcyB0aGUgZGVmYXVsdCBjdXJzZXMgbGlicmFyeS4gIFRoYXQgaXMgaG93IHRoZQorZG5sIHdpZGUtY2hhcmFjdGVyIHZlcnNpb24gb2YgbmN1cnNlcyBpcyBpbnN0YWxsZWQuCitBQ19ERUZVTihbQ0ZfTkNVUlNFU19MSUJTXSwKK1tBQ19SRVFVSVJFKFtDRl9OQ1VSU0VTX0NQUEZMQUdTXSkKKworY2ZfbmN1bGliX3Jvb3Q9aWZlbHNlKCQxLCxuY3Vyc2VzLCQxKQorCSMgVGhpcyB3b3JrcywgZXhjZXB0IGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIGZpbmQgZ3BtLCBidXQKKwkjIG5jdXJzZXMgaXMgaW4gYSBub25zdGFuZGFyZCBsb2NhdGlvbiB2aWEgJExJQlMsIGFuZCB3ZSByZWFsbHkgd2FudAorCSMgdG8gbGluayBncG0uCitjZl9uY3Vyc2VzX0xJQlM9IiIKK2NmX25jdXJzZXNfU0FWRT0iJExJQlMiCitBQ19DSEVDS19MSUIoZ3BtLEdwbV9PcGVuLAorCVtBQ19DSEVDS19MSUIoZ3BtLGluaXRzY3IsCisJCVtMSUJTPSIkY2ZfbmN1cnNlc19TQVZFIl0sCisJCVtjZl9uY3Vyc2VzX0xJQlM9Ii1sZ3BtIl0pXSkKKworY2FzZSAkaG9zdF9vcyBpbgorKGZyZWVic2QqKQorCSMgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCBhbiBvYnNvbGV0ZQorCSMgdmVyc2lvbiBvZiBuY3Vyc2VzIChidXQgaXQgc2hvdWxkIGRvIG5vIGhhcm0sIHNpbmNlIGl0J3Mgc3RhdGljKS4KKwlpZiB0ZXN0ICIkY2ZfbmN1bGliX3Jvb3QiID0gbmN1cnNlcyA7IHRoZW4KKwkJQUNfQ0hFQ0tfTElCKG15dGluZm8sdGdvdG8sW2NmX25jdXJzZXNfTElCUz0iLWxteXRpbmZvICRjZl9uY3Vyc2VzX0xJQlMiXSkKKwlmaQorCTs7Citlc2FjCisKK0NGX0FERF9MSUJTKCRjZl9uY3Vyc2VzX0xJQlMpCisKK2lmICggdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIiICYmIHRlc3QgIiRjZl9jdl9jdXJzZXNfZGlyIiAhPSAibm8iICkKK3RoZW4KKwlDRl9BRERfTElCUygtbCRjZl9uY3VsaWJfcm9vdCkKK2Vsc2UKKwlDRl9GSU5EX0xJQlJBUlkoJGNmX25jdWxpYl9yb290LCRjZl9uY3VsaWJfcm9vdCwKKwkJWyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwkJW2luaXRzY3IoKV0sCisJCWluaXRzY3IpCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmN1cnNlc19MSUJTIiA7IHRoZW4KKwlBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIGxpbmsgJGNmX25jdWxpYl9yb290IHdpdGhvdXQgJGNmX25jdXJzZXNfTElCUykKKwljZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorCWZvciBwIGluICRjZl9uY3Vyc2VzX0xJQlMgOyBkbworCQlxPWBlY2hvICRMSUJTIHwgc2VkIC1lICJzJSRwICUlIiAtZSAicyUkcCQlJSJgCisJCWlmIHRlc3QgIiRxIiAhPSAiJExJQlMiIDsgdGhlbgorCQkJTElCUz0iJHEiCisJCWZpCisJZG9uZQorCUFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJCVtpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApO10sCisJCVtBQ19NU0dfUkVTVUxUKHllcyldLAorCQlbQUNfTVNHX1JFU1VMVChubykKKwkJIExJQlM9IiRjZl9uY3Vyc2VzX1NBVkUiXSkKK2ZpCisKK0NGX1VQUEVSKGNmX25jdWxpYl9ST09ULEhBVkVfTElCJGNmX25jdWxpYl9yb290KQorQUNfREVGSU5FX1VOUVVPVEVEKCRjZl9uY3VsaWJfUk9PVCkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19WRVJTSU9OIHZlcnNpb246IDE0IHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMDg6NTc6NTEKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgdGhlIHZlcnNpb24gb2YgbmN1cnNlcywgdG8gYWlkIGluIHJlcG9ydGluZyBidWdzLCBldGMuCitkbmwgQ2FsbCBDRl9DVVJTRVNfQ1BQRkxBR1MgZmlyc3QsIG9yIENGX05DVVJTRVNfQ1BQRkxBR1MuICBXZSBkb24ndCB1c2UKK2RubCBBQ19SRVFVSVJFIHNpbmNlIHRoYXQgZG9lcyBub3Qgd29yayB3aXRoIHRoZSBzaGVsbCdzIGlmL3RoZW4vZWxzZS9maS4KK0FDX0RFRlVOKFtDRl9OQ1VSU0VTX1ZFUlNJT05dLAorWworQUNfUkVRVUlSRShbQ0ZfQ1VSU0VTX0NQUEZMQUdTXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKGZvciBuY3Vyc2VzIHZlcnNpb24sIGNmX2N2X25jdXJzZXNfdmVyc2lvbixbCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPW5vCisJY2ZfdGVtcGZpbGU9b3V0JCQKKwlybSAtZiAkY2ZfdGVtcGZpbGUKKwlBQ19UUllfUlVOKFsKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBtYWluKCkKK3sKKwlGSUxFICpmcCA9IGZvcGVuKCIkY2ZfdGVtcGZpbGUiLCAidyIpOworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorIyBpZmRlZiBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gKKwlmcHJpbnRmKGZwLCAiJXMuJWRcbiIsIE5DVVJTRVNfVkVSU0lPTiwgTkNVUlNFU19WRVJTSU9OX1BBVENIKTsKKyMgZWxzZQorCWZwcmludGYoZnAsICIlc1xuIiwgTkNVUlNFU19WRVJTSU9OKTsKKyMgZW5kaWYKKyNlbHNlCisjIGlmZGVmIF9fTkNVUlNFU19ICisJZnByaW50ZihmcCwgIm9sZFxuIik7CisjIGVsc2UKKwltYWtlIGFuIGVycm9yCisjIGVuZGlmCisjZW5kaWYKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworfV0sWworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gY2F0ICRjZl90ZW1wZmlsZWBdLCxbCisKKwkjIFRoaXMgd2lsbCBub3Qgd29yayBpZiB0aGUgcHJlcHJvY2Vzc29yIHNwbGl0cyB0aGUgbGluZSBhZnRlciB0aGUKKwkjIEF1dG9jb25mIHRva2VuLiAgVGhlICd1bnByb3RvJyBwcm9ncmFtIGRvZXMgdGhhdC4KKwljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI3VuZGVmIEF1dG9jb25mCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCitBdXRvY29uZiBOQ1VSU0VTX1ZFUlNJT04KKyNlbHNlCisjaWZkZWYgX19OQ1VSU0VTX0gKK0F1dG9jb25mICJvbGQiCisjZW5kaWYKKzsKKyNlbmRpZgorRU9GCisJY2ZfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgMj4mQUNfRkRfQ0MgfCBncmVwICdeQXV0b2NvbmYgJyA+Y29uZnRlc3Qub3V0IgorCUFDX1RSWV9FVkFMKGNmX3RyeSkKKwlpZiB0ZXN0IC1mIGNvbmZ0ZXN0Lm91dCA7IHRoZW4KKwkJY2Zfb3V0PWBjYXQgY29uZnRlc3Qub3V0IHwgc2VkIC1lICdzJV5BdXRvY29uZiAlJScgLWUgJ3MlXltbXiJdXSoiJSUnIC1lICdzJSIuKiUlJ2AKKwkJdGVzdCAtbiAiJGNmX291dCIgJiYgY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPSIkY2Zfb3V0IgorCQlybSAtZiBjb25mdGVzdC5vdXQKKwlmaQorXSkKKwlybSAtZiAkY2ZfdGVtcGZpbGUKK10pCit0ZXN0ICIkY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA9IG5vIHx8IEFDX0RFRklORShOQ1VSU0VTLDEsW0RlZmluZSB0byAxIGlmIHdlIGFyZSB1c2luZyBuY3Vyc2VzIGhlYWRlcnMvbGlicmFyaWVzXSkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkNVUlNFU19XUkFQX1BSRUZJWCB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDkvMDMvMjggMTY6MDg6MTAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIG5jdXJzZXMgIndyYXAtcHJlZml4IiB1c2VkIGZvciBwdWJsaWMgdmFyaWFibGVzIHdoaWNoIGhhdmUgYmVlbgorZG5sIHdyYXBwZWQgd2l0aCBhIGZ1bmN0aW9uIHRvIGhlbHAgd2l0aCBjb25jdXJyZW5jeSBjb250cm9sLgorQUNfREVGVU4oW0NGX05DVVJTRVNfV1JBUF9QUkVGSVhdLAorWworQUNfTVNHX0NIRUNLSU5HKGZvciBuY3Vyc2VzIHdyYXAtcHJlZml4KQorQUNfQVJHX1dJVEgobmN1cnNlcy13cmFwLXByZWZpeCwKKwlbICAtLXdpdGgtbmN1cnNlcy13cmFwLXByZWZpeCBuYW1pbmctcHJlZml4IGZvciBuY3Vyc2VzIHdyYXBwZWQtdmFyaWFibGVzXSwKKwlbTkNVUlNFU19XUkFQX1BSRUZJWD0kd2l0aHZhbF0sCisJW05DVVJTRVNfV1JBUF9QUkVGSVg9X25jX10pCitBQ19NU0dfUkVTVUxUKCROQ1VSU0VTX1dSQVBfUFJFRklYKQorCitBQ19TVUJTVChOQ1VSU0VTX1dSQVBfUFJFRklYKQorXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9ORVRCU0RfRk9STV9IIHZlcnNpb246IDIgdXBkYXRlZDogMjAxMi8xMC8wNiAxNjozOTo1OAorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgTmV0QlNEJ3MgZm9ybS5oLCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBTVnI0IGFuZCBuY3Vyc2VzLgorZG5sIFNvbWUgd29ya2Fyb3VuZHMgYXJlIG5lZWRlZCBpbiBjbGllbnQgcHJvZ3JhbXMgdG8gYWxsb3cgdGhlbSB0byBjb21waWxlLgorQUNfREVGVU4oW0NGX05FVEJTRF9GT1JNX0hdLFsKK0FDX0NBQ0hFX0NIRUNLKGZvciBOZXRCU0QgZm9ybS5oLGNmX2N2X25ldGJzZF9mb3JtX2gsWworQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxmb3JtLmg+CitdLFsKKwlGT1JNICpmb3JtOworCWludCB5ID0gY3VycmVudF9maWVsZChmb3JtKS0+Y3Vyc29yX3lwb3M7CisJaW50IHggPSBjdXJyZW50X2ZpZWxkKGZvcm0pLT5jdXJzb3JfeHBvczsKK10sW2NmX2N2X25ldGJzZF9mb3JtX2g9eWVzCitdLFtjZl9jdl9uZXRic2RfZm9ybV9oPW5vXSkKK10pCisKK3Rlc3QgIiRjZl9jdl9uZXRic2RfZm9ybV9oIiA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9ORVRCU0RfRk9STV9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGFwcGVhciB0byBiZSB1c2luZyBOZXRCU0QgZm9ybS5oXSkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfTkVUQlNEX01FTlVfSCB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTY6Mzk6NTgKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIE5ldEJTRCdzIG1lbnUuaCwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggU1ZyNCBhbmQgbmN1cnNlcy4KK2RubCBTb21lIHdvcmthcm91bmRzIGFyZSBuZWVkZWQgaW4gY2xpZW50IHByb2dyYW1zIHRvIGFsbG93IHRoZW0gdG8gY29tcGlsZS4KK0FDX0RFRlVOKFtDRl9ORVRCU0RfTUVOVV9IXSxbCitBQ19DQUNIRV9DSEVDSyhmb3IgTmV0QlNEIG1lbnUuaCxjZl9jdl9uZXRic2RfbWVudV9oLFsKK0FDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8bWVudS5oPgorXSxbCisJTUVOVSAqbWVudTsKKwlpbnQgeSA9IG1lbnUtPm1heF9pdGVtX3dpZHRoOworXSxbY2ZfY3ZfbmV0YnNkX21lbnVfaD15ZXMKK10sW2NmX2N2X25ldGJzZF9tZW51X2g9bm9dKQorXSkKKwordGVzdCAiJGNmX2N2X25ldGJzZF9tZW51X2giID0geWVzICYmIEFDX0RFRklORShIQVZFX05FVEJTRF9NRU5VX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgYXBwZWFyIHRvIGJlIHVzaW5nIE5ldEJTRCBtZW51LmhdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9OT19MRUFLU19PUFRJT04gdmVyc2lvbjogNiB1cGRhdGVkOiAyMDE1LzA0LzEyIDE1OjM5OjAwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgc2VlIENGX1dJVEhfTk9fTEVBS1MKK0FDX0RFRlVOKFtDRl9OT19MRUFLU19PUFRJT05dLFsKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byB1c2UgJDEgZm9yIHRlc3RpbmcpCitBQ19BUkdfV0lUSCgkMSwKKwlbJDJdLAorCVtBQ19ERUZJTkVfVU5RVU9URUQoJDMsMSwiRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gdXNlICQxIGZvciB0ZXN0aW5nLiIpaWZlbHNlKFskNF0sLFsKKwkgJDQKK10pCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoXyQxPXllc10sCisJW3dpdGhfJDE9XSkKK0FDX01TR19SRVNVTFQoJHt3aXRoXyQxOi1ub30pCisKK2Nhc2UgLiR3aXRoX2NmbGFncyBpbgorKC4qLWcqKQorCWNhc2UgLiRDRkxBR1MgaW4KKwkoLiotZyopCisJCTs7CisJKCopCisJCUNGX0FERF9DRkxBR1MoWy1nXSkKKwkJOzsKKwllc2FjCisJOzsKK2VzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUEFUSF9TWU5UQVggdmVyc2lvbjogMTYgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NworZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgdGhlIGFyZ3VtZW50IHRvIHNlZSB0aGF0IGl0IGxvb2tzIGxpa2UgYSBwYXRobmFtZS4gIFJld3JpdGUgaXQgaWYgaXQKK2RubCBiZWdpbnMgd2l0aCBvbmUgb2YgdGhlIHByZWZpeC9leGVjX3ByZWZpeCB2YXJpYWJsZXMsIGFuZCB0aGVuIGFnYWluIGlmIHRoZQorZG5sIHJlc3VsdCBiZWdpbnMgd2l0aCAnTk9ORScuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byB3b3JrIGFyb3VuZCBhdXRvY29uZidzCitkbmwgZGVsYXllZCBldmFsdWF0aW9uIG9mIHRob3NlIHN5bWJvbHMuCitBQ19ERUZVTihbQ0ZfUEFUSF9TWU5UQVhdLFsKK2lmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorZWxzZQorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitmaQorCitjYXNlICIuWyRdJDEiIGluCisoLlxbJF1cKCpcKSp8LlwnKlwnKikKKwk7OworKC4ufC4vKnwuXFwqKQorCTs7CisoLltbYS16QS1aXV06W1tcXC9dXSopICMgT1MvMiBFTVgKKwk7OworKC5cWyRdeypwcmVmaXh9KnwuXFskXXsqZGlyfSopCisJZXZhbCAkMT0iWyRdJDEiCisJY2FzZSAiLlskXSQxIiBpbgorCSguTk9ORS8qKQorCQkkMT1gZWNobyBbJF0kMSB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwkkMT1gZWNobyBbJF0kMSB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJaWZlbHNlKFskMl0sLFtBQ19NU0dfRVJST1IoW2V4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIlskXSQxXCJdKV0sJDIpCisJOzsKK2VzYWMKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUERDVVJTRVNfWDExIHZlcnNpb246IDEzIHVwZGF0ZWQ6IDIwMTIvMTAvMDYgMTY6Mzk6NTgKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBDb25maWd1cmUgZm9yIFBEQ3Vyc2VzJyBYMTEgbGlicmFyeQorQUNfREVGVU4oW0NGX1BEQ1VSU0VTX1gxMV0sWworQUNfUkVRVUlSRShbQ0ZfWF9BVEhFTkFdKQorCitDRl9BQ1ZFUlNJT05fQ0hFQ0soMi41MiwKKwlbQUNfQ0hFQ0tfVE9PTFMoWENVUlNFU19DT05GSUcsIHhjdXJzZXMtY29uZmlnLCBub25lKV0sCisJW0FDX1BBVEhfUFJPR1MoWENVUlNFU19DT05GSUcsIHhjdXJzZXMtY29uZmlnLCBub25lKV0pCisKK2lmIHRlc3QgIiRYQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFhDVVJTRVNfQ09ORklHIC0tY2ZsYWdzYCIKK0NGX0FERF9MSUJTKGAkWENVUlNFU19DT05GSUcgLS1saWJzYCkKKworY2ZfY3ZfbGliX1hDdXJzZXM9eWVzCisKK2Vsc2UKKworTERGTEFHUz0iJExERkxBR1MgJFhfTElCUyIKK0NGX0NIRUNLX0NGTEFHUygkWF9DRkxBR1MpCitBQ19DSEVDS19MSUIoWDExLFhPcGVuRGlzcGxheSwKKwlbQ0ZfQUREX0xJQlMoLWxYMTEpXSwsCisJWyRYX1BSRV9MSUJTICRMSUJTICRYX0VYVFJBX0xJQlNdKQorQUNfQ0FDSEVfQ0hFQ0soZm9yIFhDdXJzZXMgbGlicmFyeSxjZl9jdl9saWJfWEN1cnNlcyxbCitDRl9BRERfTElCUygtbFhDdXJzZXMpCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8eGN1cnNlcy5oPgorY2hhciAqWEN1cnNlc1Byb2dyYW1OYW1lID0gInRlc3QiOworXSxbWEN1cnNlc0V4aXQoKTtdLAorW2NmX2N2X2xpYl9YQ3Vyc2VzPXllc10sCitbY2ZfY3ZfbGliX1hDdXJzZXM9bm9dKQorXSkKKworZmkKKworaWYgdGVzdCAkY2ZfY3ZfbGliX1hDdXJzZXMgPSB5ZXMgOyB0aGVuCisJQUNfREVGSU5FKFVOSVgsMSxbRGVmaW5lIHRvIDEgaWYgdXNpbmcgUERDdXJzZXMgb24gVW5peF0pCisJQUNfREVGSU5FKFhDVVJTRVMsMSxbRGVmaW5lIHRvIDEgaWYgdXNpbmcgUERDdXJzZXMgb24gVW5peF0pCisJQUNfQ0hFQ0tfSEVBREVSKHhjdXJzZXMuaCwgQUNfREVGSU5FKEhBVkVfWENVUlNFUywxLFtEZWZpbmUgdG8gMSBpZiB1c2luZyBQREN1cnNlcyBvbiBVbml4XSkpCitlbHNlCisJQUNfTVNHX0VSUk9SKENhbm5vdCBsaW5rIHdpdGggWEN1cnNlcykKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BLR19DT05GSUcgdmVyc2lvbjogMTAgdXBkYXRlZDogMjAxNS8wNC8yNiAxODowNjo1OAorZG5sIC0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgdGhlIHBhY2thZ2UtY29uZmlnIHByb2dyYW0sIHVubGVzcyBkaXNhYmxlZCBieSBjb21tYW5kLWxpbmUuCitBQ19ERUZVTihbQ0ZfUEtHX0NPTkZJR10sCitbCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gdXNlIHBrZy1jb25maWcpCitBQ19BUkdfV0lUSChwa2ctY29uZmlnLAorCVsgIC0td2l0aC1wa2ctY29uZmlnez1wYXRofSBlbmFibGUvZGlzYWJsZSB1c2Ugb2YgcGtnLWNvbmZpZ10sCisJW2NmX3BrZ19jb25maWc9JHdpdGh2YWxdLAorCVtjZl9wa2dfY29uZmlnPXllc10pCitBQ19NU0dfUkVTVUxUKCRjZl9wa2dfY29uZmlnKQorCitjYXNlICRjZl9wa2dfY29uZmlnIGluCisobm8pCisJUEtHX0NPTkZJRz1ub25lCisJOzsKKyh5ZXMpCisJQ0ZfQUNWRVJTSU9OX0NIRUNLKDIuNTIsCisJCVtBQ19QQVRIX1RPT0woUEtHX0NPTkZJRywgcGtnLWNvbmZpZywgbm9uZSldLAorCQlbQUNfUEFUSF9QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIG5vbmUpXSkKKwk7OworKCopCisJUEtHX0NPTkZJRz0kd2l0aHZhbAorCTs7Citlc2FjCisKK3Rlc3QgLXogIiRQS0dfQ09ORklHIiAmJiBQS0dfQ09ORklHPW5vbmUKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lIDsgdGhlbgorCUNGX1BBVEhfU1lOVEFYKFBLR19DT05GSUcpCitlbGlmIHRlc3QgIngkY2ZfcGtnX2NvbmZpZyIgIT0geG5vIDsgdGhlbgorCUFDX01TR19XQVJOKHBrZy1jb25maWcgaXMgbm90IGluc3RhbGxlZCkKK2ZpCisKK0FDX1NVQlNUKFBLR19DT05GSUcpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BPU0lYX0NfU09VUkNFIHZlcnNpb246IDkgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitkbmwgRGVmaW5lIF9QT1NJWF9DX1NPVVJDRSB0byB0aGUgZ2l2ZW4gbGV2ZWwsIGFuZCBfUE9TSVhfU09VUkNFIGlmIG5lZWRlZC4KK2RubAorZG5sCVBPU0lYLjEtMTk5MAkJCQlfUE9TSVhfU09VUkNFCitkbmwJUE9TSVguMS0xOTkwIGFuZAkJCV9QT1NJWF9TT1VSQ0UgYW5kCitkbmwJCVBPU0lYLjItMTk5MiBDLUxhbmd1YWdlCQkJX1BPU0lYX0NfU09VUkNFPTIKK2RubAkJQmluZGluZ3MgT3B0aW9uCitkbmwJUE9TSVguMWItMTk5MwkJCQlfUE9TSVhfQ19TT1VSQ0U9MTk5MzA5TAorZG5sCVBPU0lYLjFjLTE5OTYJCQkJX1BPU0lYX0NfU09VUkNFPTE5OTUwNkwKK2RubAlYL09wZW4gMjAwMAkJCQlfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorZG5sCitkbmwgUGFyYW1ldGVyczoKK2RubAkkMSBpcyB0aGUgbm9taW5hbCB2YWx1ZSBmb3IgX1BPU0lYX0NfU09VUkNFCitBQ19ERUZVTihbQ0ZfUE9TSVhfQ19TT1VSQ0VdLAorWworY2ZfUE9TSVhfQ19TT1VSQ0U9aWZlbHNlKFskMV0sLDE5OTUwNkwsWyQxXSkKKworY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitjZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKK0NGX1JFTU9WRV9ERUZJTkUoY2ZfdHJpbV9DRkxBR1MsJGNmX3NhdmVfQ0ZMQUdTLF9QT1NJWF9DX1NPVVJDRSkKK0NGX1JFTU9WRV9ERUZJTkUoY2ZfdHJpbV9DUFBGTEFHUywkY2Zfc2F2ZV9DUFBGTEFHUyxfUE9TSVhfQ19TT1VSQ0UpCisKK0FDX0NBQ0hFX0NIRUNLKGlmIHdlIHNob3VsZCBkZWZpbmUgX1BPU0lYX0NfU09VUkNFLGNmX2N2X3Bvc2l4X2Nfc291cmNlLFsKKwlDRl9NU0dfTE9HKGlmIHRoZSBzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkIGdvIG5vIGZ1cnRoZXIpCisJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLFsKKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCVtjZl9jdl9wb3NpeF9jX3NvdXJjZT1ub10sCisJW2NmX3dhbnRfcG9zaXhfc291cmNlPW5vCisJIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbgorCSAoLltbMTJdXT8/KikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJOzsKKwkgKC4yKQorCQljZl9jdl9wb3NpeF9jX3NvdXJjZT0iLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIgorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgKC4qKQorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgZXNhYworCSBpZiB0ZXN0ICIkY2Zfd2FudF9wb3NpeF9zb3VyY2UiID0geWVzIDsgdGhlbgorCQlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sWworI2lmZGVmIF9QT1NJWF9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sW10sCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UgLURfUE9TSVhfU09VUkNFIikKKwkgZmkKKwkgQ0ZfTVNHX0xPRyhpZmRlZiBmcm9tIHZhbHVlICRjZl9QT1NJWF9DX1NPVVJDRSkKKwkgQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisJIENGX01TR19MT0coaWYgdGhlIHNlY29uZCBjb21waWxlIGRvZXMgbm90IGxlYXZlIG91ciBkZWZpbml0aW9uIGludGFjdCBlcnJvcikKKwkgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLFsKKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLCwKKwkgW2NmX2N2X3Bvc2l4X2Nfc291cmNlPW5vXSkKKwkgQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwldKQorXSkKKworaWYgdGVzdCAiJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiAhPSBubyA7IHRoZW4KKwlDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwlDUFBGTEFHUz0iJGNmX3RyaW1fQ1BQRkxBR1MiCisJQ0ZfQUREX0NGTEFHUygkY2ZfY3ZfcG9zaXhfY19zb3VyY2UpCitmaQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BSR19SVUxFUyB2ZXJzaW9uOiAxIHVwZGF0ZWQ6IDIwMDYvMDYvMDMgMTE6NDU6MDgKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBBcHBlbmQgZGVmaW5pdGlvbnMgYW5kIHJ1bGVzIGZvciB0aGUgZ2l2ZW4gcHJvZ3JhbXMgdG8gdGhlIHN1YmRpcmVjdG9yeQorZG5sIE1ha2VmaWxlcywgYW5kIHRoZSByZWN1cnNpb24gcnVsZSBmb3IgdGhlIHRvcC1sZXZlbCBNYWtlZmlsZS4KK2RubAorZG5sIHBhcmFtZXRlcnMKK2RubAkkMSA9IHNjcmlwdCB0byBydW4KK2RubAkkMiA9IGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMKK2RubAorZG5sIHZhcmlhYmxlcworZG5sCSRBV0sKK0FDX0RFRlVOKFtDRl9QUkdfUlVMRVNdLAorWworZm9yIGNmX2RpciBpbiAkMgorZG8KKwlpZiB0ZXN0ICEgLWQgJHNyY2Rpci8kY2ZfZGlyOyB0aGVuCisJCWNvbnRpbnVlCisJZWxpZiB0ZXN0IC1mICRzcmNkaXIvJGNmX2Rpci9wcm9ncmFtczsgdGhlbgorCQkkQVdLIC1mICQxICRzcmNkaXIvJGNmX2Rpci9wcm9ncmFtcyA+PiRjZl9kaXIvTWFrZWZpbGUKKwlmaQorZG9uZQorCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfQ0MgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE0LzA3LzEyIDE4OjU3OjU4CitkbmwgLS0tLS0tLS0tLQorZG5sIHN0YW5kYXJkIGNoZWNrIGZvciBDQywgcGx1cyBmb2xsb3d1cCBzYW5pdHkgY2hlY2tzCitkbmwgJDEgPSBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gcGFzcyB0byBBQ19QUk9HX0NDIHRvIHNwZWNpZnkgY29tcGlsZXIgbmFtZQorQUNfREVGVU4oW0NGX1BST0dfQ0NdLFsKK2lmZWxzZSgkMSwsW0FDX1BST0dfQ0NdLFtBQ19QUk9HX0NDKCQxKV0pCitDRl9HQ0NfVkVSU0lPTgorQ0ZfQUNWRVJTSU9OX0NIRUNLKDIuNTIsCisJW0FDX1BST0dfQ0NfU1REQ10sCisJW0NGX0FOU0lfQ0NfUkVRRF0pCitDRl9DQ19FTlZfRkxBR1MKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUFJPR19JTlNUQUxMIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNS8wNC8xOCAwODo1Njo1NworZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIEZvcmNlICRJTlNUQUxMIHRvIGJlIGFuIGFic29sdXRlLXBhdGguICBPdGhlcndpc2UsIGVkaXRfbWFuLnNoIGFuZCB0aGUKK2RubCBtaXNjL3RhYnNldCBpbnN0YWxsIHdvbid0IHdvcmsgcHJvcGVybHkuICBVc3VhbGx5IHRoaXMgaGFwcGVucyBvbmx5IHdoZW4KK2RubCB1c2luZyB0aGUgZmFsbGJhY2sgbWtpbnN0YWxsZGlycyBzY3JpcHQKK0FDX0RFRlVOKFtDRl9QUk9HX0lOU1RBTExdLAorW0FDX1BST0dfSU5TVEFMTAorY2FzZSAkSU5TVEFMTCBpbgorKC8qKQorCTs7CisoKikKKwlDRl9ESVJOQU1FKGNmX2RpciwkSU5TVEFMTCkKKwl0ZXN0IC16ICIkY2ZfZGlyIiAmJiBjZl9kaXI9LgorCUlOU1RBTEw9YGNkICRjZl9kaXIgJiYgcHdkYC9gZWNobyAkSU5TVEFMTCB8IHNlZCAtZSAncyVeLiovJSUnYAorCTs7Citlc2FjCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1BST0dfTElOVCB2ZXJzaW9uOiAyIHVwZGF0ZWQ6IDIwMDkvMDgvMTIgMDQ6NDM6MTQKK2RubCAtLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtDRl9QUk9HX0xJTlRdLAorWworQUNfQ0hFQ0tfUFJPR1MoTElOVCwgdGRsaW50IGxpbnQgYWxpbnQgc3BsaW50IGxjbGludCkKK0FDX1NVQlNUKExJTlRfT1BUUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfUkVNT1ZFX0RFRklORSB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTAvMDEvMDkgMTE6MDU6NTAKK2RubCAtLS0tLS0tLS0tLS0tLS0tCitkbmwgUmVtb3ZlIGFsbCAtVSBhbmQgLUQgb3B0aW9ucyB0aGF0IHJlZmVyIHRvIHRoZSBnaXZlbiBzeW1ib2wgZnJvbSBhIGxpc3QKK2RubCBvZiBDIGNvbXBpbGVyIG9wdGlvbnMuICBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgcHJvYmxlbSB0aGF0IG5vdCBhbGwKK2RubCBjb21waWxlcnMgcHJvY2VzcyAtVSBhbmQgLUQgb3B0aW9ucyBmcm9tIGxlZnQtdG8tcmlnaHQsIHNvIGEgLVUgb3B0aW9uCitkbmwgY2Fubm90IGJlIHVzZWQgdG8gY2FuY2VsIHRoZSBlZmZlY3Qgb2YgYSBwcmVjZWRpbmcgLUQgb3B0aW9uLgorZG5sCitkbmwgJDEgPSB0YXJnZXQgKHdoaWNoIGNvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBzb3VyY2UgdmFyaWFibGUpCitkbmwgJDIgPSBzb3VyY2UgKGluY2x1ZGluZyAnJCcpCitkbmwgJDMgPSBzeW1ib2wgdG8gcmVtb3ZlCitkZWZpbmUoW0NGX1JFTU9WRV9ERUZJTkVdLAorWworJDE9YGVjaG8gIiQyIiB8IFwKKwlzZWQJLWUgJ3MvLVtbVURdXSciJDMiJ1woPVtbXiAJXV0qXClcP1tbIAldXS8gL2cnIFwKKwkJLWUgJ3MvLVtbVURdXSciJDMiJ1woPVtbXiAJXV0qXClcP1skXS8vZydgCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1JQQVRIX0hBQ0sgdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxMy8wOS8wMSAxMzowMjowMAorZG5sIC0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtDRl9SUEFUSF9IQUNLXSwKK1sKK0FDX1JFUVVJUkUoW0NGX0xEX1JQQVRIX09QVF0pCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHVwZGF0ZWQgTERGTEFHUykKK2lmIHRlc3QgLW4gIiRMRF9SUEFUSF9PUFQiIDsgdGhlbgorCUFDX01TR19SRVNVTFQobWF5YmUpCisKKwlBQ19DSEVDS19QUk9HUyhjZl9sZGRfcHJvZyxsZGQsbm8pCisJY2ZfcnBhdGhfbGlzdD0iL3Vzci9saWIgL2xpYiIKKwlpZiB0ZXN0ICIkY2ZfbGRkX3Byb2ciICE9IG5vCisJdGhlbgorCQljZl9ycGF0aF9vb3BzPQorCitBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN0ZGlvLmg+XSwKKwkJW3ByaW50ZigiSGVsbG8iKTtdLAorCQlbY2ZfcnBhdGhfb29wcz1gJGNmX2xkZF9wcm9nIGNvbmZ0ZXN0JGFjX2V4ZWV4dCB8IGZncmVwICcgbm90IGZvdW5kJyB8IHNlZCAtZSAncyUgPT4uKiQlJScgfHNvcnQgfCB1bmlxYAorCQkgY2ZfcnBhdGhfbGlzdD1gJGNmX2xkZF9wcm9nIGNvbmZ0ZXN0JGFjX2V4ZWV4dCB8IGZncmVwIC8gfCBzZWQgLWUgJ3MlXi4qW1sgCV1dLyUvJScgLWUgJ3MlL1tbXi9dXVtbXi9dXSokJSUnIHxzb3J0IHwgdW5pcWBdKQorCisJCSMgSWYgd2UgcGFzc2VkIHRoZSBsaW5rLXRlc3QsIGJ1dCBnZXQgYSAibm90IGZvdW5kIiBvbiBhIGdpdmVuIGxpYnJhcnksCisJCSMgdGhpcyBjb3VsZCBiZSBkdWUgdG8gaW5lcHQgcmVjb25maWd1cmF0aW9uIG9mIGdjYyB0byBtYWtlIGl0IG9ubHkKKwkJIyBwYXJ0bHkgaG9ub3IgL3Vzci9sb2NhbC9saWIgKG9yIHdoYXRldmVyKS4gIFNvbWV0aW1lcyB0aGlzIGJlaGF2aW9yCisJCSMgaXMgaW50ZW50aW9uYWwsIGUuZy4sIGluc3RhbGxpbmcgZ2NjIGluIC91c3IvYmluIGFuZCBzdXBwcmVzc2luZyB0aGUKKwkJIyAvdXNyL2xvY2FsIGxpYnJhcmllcy4KKwkJaWYgdGVzdCAtbiAiJGNmX3JwYXRoX29vcHMiCisJCXRoZW4KKwkJCWZvciBjZl9ycGF0aF9zcmMgaW4gJGNmX3JwYXRoX29vcHMKKwkJCWRvCisJCQkJZm9yIGNmX3JwYXRoX2RpciBpbiBcCisJCQkJCS91c3IvbG9jYWwgXAorCQkJCQkvdXNyL3BrZyBcCisJCQkJCS9vcHQvc2Z3CisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAkY2ZfcnBhdGhfZGlyL2xpYi8kY2ZfcnBhdGhfc3JjCisJCQkJCXRoZW4KKwkJCQkJCUNGX1ZFUkJPU0UoLi4uYWRkaW5nIC1MJGNmX3JwYXRoX2Rpci9saWIgdG8gTERGTEFHUyBmb3IgJGNmX3JwYXRoX3NyYykKKwkJCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJGNmX3JwYXRoX2Rpci9saWIiCisJCQkJCQlicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWRvbmUKKwkJZmkKKwlmaQorCisJQ0ZfVkVSQk9TRSguLi5jaGVja2luZyBFWFRSQV9MREZMQUdTICRFWFRSQV9MREZMQUdTKQorCisJQ0ZfUlBBVEhfSEFDS18yKExERkxBR1MpCisJQ0ZfUlBBVEhfSEFDS18yKExJQlMpCisKKwlDRl9WRVJCT1NFKC4uLmNoZWNrZWQgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUykKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKG5vKQorZmkKK0FDX1NVQlNUKEVYVFJBX0xERkxBR1MpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1JQQVRIX0hBQ0tfMiB2ZXJzaW9uOiA3IHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLS0KK2RubCBEbyBvbmUgc2V0IG9mIHN1YnN0aXR1dGlvbnMgZm9yIENGX1JQQVRIX0hBQ0ssIGFkZGluZyBhbiBycGF0aCBvcHRpb24gdG8KK2RubCBFWFRSQV9MREZMQUdTIGZvciBlYWNoIC1MIG9wdGlvbiBmb3VuZC4KK2RubAorZG5sICRjZl9ycGF0aF9saXN0IGNvbnRhaW5zIGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBpZ25vcmUuCitkbmwKK2RubCAkMSA9IHZhcmlhYmxlIG5hbWUgdG8gdXBkYXRlLiAgVGhlIExERkxBR1MgdmFyaWFibGUgc2hvdWxkIGJlIHRoZSBvbmx5IG9uZSwKK2RubCAgICAgIGJ1dCBMSUJTIG9mdGVuIGhhcyBtaXNwbGFjZWQgLUwgb3B0aW9ucy4KK0FDX0RFRlVOKFtDRl9SUEFUSF9IQUNLXzJdLAorWworQ0ZfVkVSQk9TRSguLi5jaGVja2luZyAkMSBbJF0kMSkKKworY2ZfcnBhdGhfZHN0PQorZm9yIGNmX3JwYXRoX3NyYyBpbiBbJF0kMQorZG8KKwljYXNlICRjZl9ycGF0aF9zcmMgaW4KKwkoLUwqKQorCisJCSMgY2hlY2sgaWYgdGhpcyByZWZlcnMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggd2Ugd2lsbCBpZ25vcmUKKwkJY2ZfcnBhdGhfc2tpcD1ubworCQlpZiB0ZXN0IC1uICIkY2ZfcnBhdGhfbGlzdCIKKwkJdGhlbgorCQkJZm9yIGNmX3JwYXRoX2l0ZW0gaW4gJGNmX3JwYXRoX2xpc3QKKwkJCWRvCisJCQkJaWYgdGVzdCAieCRjZl9ycGF0aF9zcmMiID0gIngtTCRjZl9ycGF0aF9pdGVtIgorCQkJCXRoZW4KKwkJCQkJY2ZfcnBhdGhfc2tpcD15ZXMKKwkJCQkJYnJlYWsKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9ycGF0aF9za2lwIiA9IG5vCisJCXRoZW4KKwkJCSMgdHJhbnNmb3JtIHRoZSBvcHRpb24KKwkJCWlmIHRlc3QgIiRMRF9SUEFUSF9PUFQiID0gIi1SICIgOyB0aGVuCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJS1SICUiYAorCQkJZWxzZQorCQkJCWNmX3JwYXRoX3RtcD1gZWNobyAiJGNmX3JwYXRoX3NyYyIgfHNlZCAtZSAicyUtTCUkTERfUlBBVEhfT1BUJSJgCisJCQlmaQorCisJCQkjIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgYWRkZWQgdGhpcywgYWRkIGl0IG5vdworCQkJY2ZfcnBhdGhfdHN0PWBlY2hvICIkRVhUUkFfTERGTEFHUyIgfCBzZWQgLWUgInMlJGNmX3JwYXRoX3RtcCAlJSJgCisJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3RzdCIgPSAieCRFWFRSQV9MREZMQUdTIgorCQkJdGhlbgorCQkJCUNGX1ZFUkJPU0UoLi4uRmlsdGVyICRjZl9ycGF0aF9zcmMgLT4kY2ZfcnBhdGhfdG1wKQorCQkJCUVYVFJBX0xERkxBR1M9IiRjZl9ycGF0aF90bXAgJEVYVFJBX0xERkxBR1MiCisJCQlmaQorCQlmaQorCQk7OworCWVzYWMKKwljZl9ycGF0aF9kc3Q9IiRjZl9ycGF0aF9kc3QgJGNmX3JwYXRoX3NyYyIKK2RvbmUKKyQxPSRjZl9ycGF0aF9kc3QKKworQ0ZfVkVSQk9TRSguLi5jaGVja2VkICQxIFskXSQxKQorQUNfU1VCU1QoRVhUUkFfTERGTEFHUykKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfU0lHX0FUT01JQ19UIHZlcnNpb246IDMgdXBkYXRlZDogMjAxMi8xMC8wNCAyMDoxMjoyMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIHNpZ25hbCBoYW5kbGVyLCBidXQgdGhlcmUgYXJlIHNvbWUgZ2NjIGRlcGVkZW5jaWVzIGluIHRoYXQgcmVjb21tZW5kYXRpb24uCitkbmwgVHJ5IGFueXdheS4KK0FDX0RFRlVOKFtDRl9TSUdfQVRPTUlDX1RdLAorWworQUNfTVNHX0NIRUNLSU5HKGZvciBzaWduYWwgZ2xvYmFsIGRhdGF0eXBlKQorQUNfQ0FDSEVfVkFMKGNmX2N2X3NpZ19hdG9taWNfdCxbCisJZm9yIGNmX3R5cGUgaW4gXAorCQkidm9sYXRpbGUgc2lnX2F0b21pY190IiBcCisJCSJzaWdfYXRvbWljX3QiIFwKKwkJImludCIKKwlkbworCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitleHRlcm4gJGNmX3R5cGUgeDsKKyRjZl90eXBlIHg7CitzdGF0aWMgdm9pZCBoYW5kbGVyKGludCBzaWcpCit7CisJeCA9IDU7Cit9XSwKKwkJW3NpZ25hbChTSUdJTlQsIGhhbmRsZXIpOworCQkgeCA9IDFdLAorCQlbY2ZfY3Zfc2lnX2F0b21pY190PSRjZl90eXBlXSwKKwkJW2NmX2N2X3NpZ19hdG9taWNfdD1ub10pCisJCXRlc3QgIiRjZl9jdl9zaWdfYXRvbWljX3QiICE9IG5vICYmIGJyZWFrCisJZG9uZQorCV0pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9zaWdfYXRvbWljX3QpCit0ZXN0ICIkY2ZfY3Zfc2lnX2F0b21pY190IiAhPSBubyAmJiBBQ19ERUZJTkVfVU5RVU9URUQoU0lHX0FUT01JQ19ULCAkY2ZfY3Zfc2lnX2F0b21pY190LFtEZWZpbmUgdG8gc2lnbmFsIGdsb2JhbCBkYXRhdHlwZV0pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1NVQkRJUl9QQVRIIHZlcnNpb246IDcgdXBkYXRlZDogMjAxNC8xMi8wNCAwNDozMzowNgorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ29uc3RydWN0IGEgc2VhcmNoLWxpc3QgZm9yIGEgbm9uc3RhbmRhcmQgaGVhZGVyL2xpYi1maWxlCitkbmwJJDEgPSB0aGUgdmFyaWFibGUgdG8gcmV0dXJuIGFzIHJlc3VsdAorZG5sCSQyID0gdGhlIHBhY2thZ2UgbmFtZQorZG5sCSQzID0gdGhlIHN1YmRpcmVjdG9yeSwgZS5nLiwgYmluLCBpbmNsdWRlIG9yIGxpYgorQUNfREVGVU4oW0NGX1NVQkRJUl9QQVRIXSwKK1sKKyQxPQorCitDRl9BRERfU1VCRElSX1BBVEgoJDEsJDIsJDMsJHByZWZpeCxOT05FKQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCVskXUhPTUUKK2RvCisJQ0ZfQUREX1NVQkRJUl9QQVRIKCQxLCQyLCQzLCRjZl9zdWJkaXJfcHJlZml4LCRwcmVmaXgpCitkb25lCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1NZU19USU1FX1NFTEVDVCB2ZXJzaW9uOiA2IHVwZGF0ZWQ6IDIwMTUvMDQvMTggMDg6NTY6NTcKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDaGVjayBpZiB3ZSBjYW4gaW5jbHVkZSA8c3lzL3RpbWUuaD4gd2l0aCA8c3lzL3NlbGVjdC5oPjsgdGhpcyBicmVha3Mgb24KK2RubCBvbGRlciBTQ08gY29uZmlndXJhdGlvbnMuCitBQ19ERUZVTihbQ0ZfU1lTX1RJTUVfU0VMRUNUXSwKK1sKK0FDX01TR19DSEVDS0lORyhpZiBzeXMvdGltZS5oIHdvcmtzIHdpdGggc3lzL3NlbGVjdC5oKQorQUNfQ0FDSEVfVkFMKGNmX2N2X3N5c190aW1lX3NlbGVjdCxbCitBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NFTEVDVF9ICisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2VuZGlmCitdLFtdLFtjZl9jdl9zeXNfdGltZV9zZWxlY3Q9eWVzXSwKKwkgW2NmX2N2X3N5c190aW1lX3NlbGVjdD1ub10pCisJIF0pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9zeXNfdGltZV9zZWxlY3QpCit0ZXN0ICIkY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0IiA9IHllcyAmJiBBQ19ERUZJTkUoSEFWRV9TWVNfVElNRV9TRUxFQ1QsMSxbRGVmaW5lIHRvIDEgaWYgd2UgY2FuIGluY2x1ZGUgPHN5cy90aW1lLmg+IHdpdGggPHN5cy9zZWxlY3QuaD5dKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9URVJNX0hFQURFUiB2ZXJzaW9uOiA0IHVwZGF0ZWQ6IDIwMTUvMDQvMTUgMTk6MDg6NDgKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIExvb2sgZm9yIHRlcm0uaCwgd2hpY2ggaXMgcGFydCBvZiBYL09wZW4gY3Vyc2VzLiAgSXQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlCitkbmwgdG8gdGVybWluZm8gZGF0YWJhc2UuICBVc3VhbGx5IGl0IGlzIGluIHRoZSBzYW1lIGluY2x1ZGUtcGF0aCBhcyBjdXJzZXMuaCwKK2RubCBidXQgc29tZSBwYWNrYWdlcnMgY2hhbmdlIHRoaXMsIGJyZWFraW5nIHZhcmlvdXMgYXBwbGljYXRpb25zLgorQUNfREVGVU4oW0NGX1RFUk1fSEVBREVSXSxbCitBQ19DQUNIRV9DSEVDSyhmb3IgdGVybWluZm8gaGVhZGVyLCBjZl9jdl90ZXJtX2hlYWRlcixbCitjYXNlICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXJ9IGluCisoKi9uY3Vyc2VzLmh8Ki9uY3Vyc2Vzdy5oKQorCWNmX3Rlcm1faGVhZGVyPWBlY2hvICIkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiIHwgc2VkIC1lICdzJW5jdXJzZXNbW14uXV0qXC5oJCV0ZXJtLmglJ2AKKwk7OworKCopCisJY2ZfdGVybV9oZWFkZXI9dGVybS5oCisJOzsKK2VzYWMKKworZm9yIGNmX3Rlc3QgaW4gJGNmX3Rlcm1faGVhZGVyICJuY3Vyc2VzL3Rlcm0uaCIgIm5jdXJzZXN3L3Rlcm0uaCIKK2RvCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPCRjZl90ZXN0PgorXSxbaW50IHggPSBhdXRvX2xlZnRfbWFyZ2luXSxbCisJY2ZfY3ZfdGVybV9oZWFkZXI9IiRjZl90ZXN0Il0sWworCWNmX2N2X3Rlcm1faGVhZGVyPXVua25vd24KKwldKQorCXRlc3QgIiRjZl9jdl90ZXJtX2hlYWRlciIgIT0gdW5rbm93biAmJiBicmVhaworZG9uZQorXSkKKworIyBTZXQgZGVmaW5pdGlvbnMgdG8gYWxsb3cgaWZkZWYnaW5nIHRvIGFjY29tbW9kYXRlIHN1YmRpcmVjdG9yaWVzCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisoKnRlcm0uaCkKKwlBQ19ERUZJTkUoSEFWRV9URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSB0ZXJtLmhdKQorCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisobmN1cnNlcy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU19URVJNX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgaGF2ZSBuY3Vyc2VzL3Rlcm0uaF0pCisJOzsKKyhuY3Vyc2Vzdy90ZXJtLmgpCisJQUNfREVGSU5FKEhBVkVfTkNVUlNFU1dfVEVSTV9ILDEsW0RlZmluZSB0byAxIGlmIHdlIGhhdmUgbmN1cnNlc3cvdGVybS5oXSkKKwk7OworZXNhYworXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9UT1BfQlVJTERESVIgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEzLzA3LzI3IDE3OjM4OjMyCitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRGVmaW5lIGEgdG9wX2J1aWxkZGlyIHN5bWJvbCwgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KK0FDX0RFRlVOKFtDRl9UT1BfQlVJTERESVJdLAorWwordG9wX2J1aWxkZGlyPWlmZWxzZSgkMSwsYHB3ZGAsJDEpCitBQ19TVUJTVCh0b3BfYnVpbGRkaXIpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1RQVVRTX1BST1RPIHZlcnNpb246IDMgdXBkYXRlZDogMjAxNS8wNC8xNyAyMToyNjoxNAorZG5sIC0tLS0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIHR5cGUgb2YgZnVuY3Rpb24tcG9pbnRlciBwYXNzZWQgdG8gdHB1dHMuICBTb21lIG9sZAorZG5sIGltcGxlbWVudGF0aW9ucyB1c2VkIGZ1bmN0aW9ucyB0aGF0IGhhZCBkaWZmZXJlbnQgcHJvdG90eXBlcywgbWFraW5nIGl0CitkbmwgaGFyZCB0byBjb21waWxlIHBvcnRhYmxlIHByb2dyYW1zIHVzaW5nIHRwdXRzLgorQUNfREVGVU4oW0NGX1RQVVRTX1BST1RPXSxbCitDRl9DVVJTRVNfRlVOQ1ModHB1dHMpCitpZiB0ZXN0IHgkY2ZfY3ZfZnVuY190cHV0cyA9IHh5ZXMKK3RoZW4KKwljZl9kb25lPW5vCisJZm9yIGNmX2FyZyBpbiBpbnQgY2hhcgorCWRvCisJCWZvciBjZl9yZXQgaW4gaW50IHZvaWQKKwkJZG8KKwkJCWlmIHRlc3QgJGNmX3JldCA9IHZvaWQKKwkJCXRoZW4KKwkJCQljZl9yZXR1cm49Ii8qIG5vdGhpbmcgKi8iCisJCQllbHNlCisJCQkJY2ZfcmV0dXJuPSJyZXR1cm4gdmFsdWUiCisJCQlmaQorCQkJQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwkY2ZfY3ZfdGVybV9oZWFkZXI+CisKK3N0YXRpYyAkY2ZfcmV0IG91dGMoJGNmX2FyZyB2YWx1ZSkgeyAkY2ZfcmV0dXJuOyB9CitdLFsKKwl0cHV0cygiaGVsbG8iLCAwLCBvdXRjKTsKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworXSxbCisJCUNGX1ZFUkJPU0UoW3Byb3RvdHlwZSAkY2ZfcmV0IGZ1bmMoJGNmX2FyZyB2YWx1ZSldKQorCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFRQVVRTX0FSRyAgICAgICAgICAgICAgICRjZl9hcmcKKyNkZWZpbmUgVFBVVFNfUFJPVE8oZnVuYyx2YWx1ZSkgJGNmX3JldCBmdW5jKFRQVVRTX0FSRyB2YWx1ZSkKKyNkZWZpbmUgVFBVVFNfUkVUVVJOKHZhbHVlKSAgICAgJGNmX3JldHVybgorRU9GCisJCWNmX2RvbmU9eWVzCisJCWJyZWFrCitdKQorCQlkb25lCisJCXRlc3QgJGNmX2RvbmUgPSB5ZXMgJiYgYnJlYWsKKwlkb25lCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9UUklNX1hfTElCUyB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTUvMDQvMTIgMTU6Mzk6MDAKK2RubCAtLS0tLS0tLS0tLS0tLQorZG5sIFRyaW0gZXh0cmEgYmFzZSBYIGxpYnJhcmllcyBhZGRlZCBhcyBhIHdvcmthcm91bmQgZm9yIGluY29uc2lzdGVudCBsaWJyYXJ5CitkbmwgZGVwZW5kZW5jaWVzIHJldHVybmVkIGJ5ICJuZXciIHBrZy1jb25maWcgZmlsZXMuCitBQ19ERUZVTihbQ0ZfVFJJTV9YX0xJQlNdLFsKKwlmb3IgY2ZfdHJpbV9saWIgaW4gWG11IFh0IFgxMQorCWRvCisJCWNhc2UgIiRMSUJTIiBpbgorCQkoKi1sJGNmX3RyaW1fbGliXCAqLWwkY2ZfdHJpbV9saWIqKQorCQkJTElCUz1gZWNobyAiJExJQlMgIiB8IHNlZCAtZSAncy8gIC8gL2cnIC1lICdzJS1sJyIkY2ZfdHJpbV9saWIiJyAlJScgLWUgJ3MvICQvLydgCisJCQlDRl9WRVJCT1NFKC4udHJpbW1lZCAkTElCUykKKwkJCTs7CisJCWVzYWMKKwlkb25lCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1RSWV9QS0dfQ09ORklHIHZlcnNpb246IDUgdXBkYXRlZDogMjAxMy8wNy8wNiAyMToyNzowNgorZG5sIC0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVGhpcyBpcyBhIHNpbXBsZSB3cmFwcGVyIHRvIHVzZSBmb3IgcGtnLWNvbmZpZywgZm9yIGxpYnJhcmllcyB3aGljaCBtYXkgYmUKK2RubCBhdmFpbGFibGUgaW4gdGhhdCBmb3JtLgorZG5sCitkbmwgJDEgPSBwYWNrYWdlIG5hbWUKK2RubCAkMiA9IGV4dHJhIGxvZ2ljIHRvIHVzZSwgaWYgYW55LCBhZnRlciB1cGRhdGluZyBDRkxBR1MgYW5kIExJQlMKK2RubCAkMyA9IGxvZ2ljIHRvIHVzZSBpZiBwa2ctY29uZmlnIGRvZXMgbm90IGhhdmUgdGhlIHBhY2thZ2UKK0FDX0RFRlVOKFtDRl9UUllfUEtHX0NPTkZJR10sWworQUNfUkVRVUlSRShbQ0ZfUEtHX0NPTkZJR10pCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgJDE7IHRoZW4KKwlDRl9WRVJCT1NFKGZvdW5kIHBhY2thZ2UgJDEpCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyAkMSAyPi9kZXYvbnVsbGAiCisJY2ZfcGtnY29uZmlnX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgICAkMSAyPi9kZXYvbnVsbGAiCisJQ0ZfVkVSQk9TRShwYWNrYWdlICQxIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzKQorCUNGX1ZFUkJPU0UocGFja2FnZSAkMSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMpCisJQ0ZfQUREX0NGTEFHUygkY2ZfcGtnY29uZmlnX2luY3MpCisJQ0ZfQUREX0xJQlMoJGNmX3BrZ2NvbmZpZ19saWJzKQorCWlmZWxzZShbJDJdLCw6LFskMl0pCitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisJaWZlbHNlKFskM10sLDosWyQzXSkKK2ZpCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1RSWV9YT1BFTl9TT1VSQ0UgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDExLzEwLzMwIDE3OjA5OjUwCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIElmIF9YT1BFTl9TT1VSQ0UgaXMgbm90IGRlZmluZWQgaW4gdGhlIGNvbXBpbGUgZW52aXJvbm1lbnQsIGNoZWNrIGlmIHdlCitkbmwgY2FuIGRlZmluZSBpdCBzdWNjZXNzZnVsbHkuCitBQ19ERUZVTihbQ0ZfVFJZX1hPUEVOX1NPVVJDRV0sWworQUNfQ0FDSEVfQ0hFQ0soaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFLGNmX2N2X3hvcGVuX3NvdXJjZSxbCisJQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorXSxbCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZl0sCisJW2NmX2N2X3hvcGVuX3NvdXJjZT1ub10sCisJW2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKKwkgQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorXSxbCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwlbY2ZfY3ZfeG9wZW5fc291cmNlPW5vXSwKKwlbY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0VdKQorCUNQUEZMQUdTPSIkY2Zfc2F2ZSIKKwldKQorXSkKKworaWYgdGVzdCAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgIT0gbm8gOyB0aGVuCisJQ0ZfUkVNT1ZFX0RFRklORShDRkxBR1MsJENGTEFHUyxfWE9QRU5fU09VUkNFKQorCUNGX1JFTU9WRV9ERUZJTkUoQ1BQRkxBR1MsJENQUEZMQUdTLF9YT1BFTl9TT1VSQ0UpCisJY2ZfdGVtcF94b3Blbl9zb3VyY2U9Ii1EX1hPUEVOX1NPVVJDRT0kY2ZfY3ZfeG9wZW5fc291cmNlIgorCUNGX0FERF9DRkxBR1MoJGNmX3RlbXBfeG9wZW5fc291cmNlKQorZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfVVBQRVIgdmVyc2lvbjogNSB1cGRhdGVkOiAyMDAxLzAxLzI5IDIzOjQwOjU5CitkbmwgLS0tLS0tLS0KK2RubCBNYWtlIGFuIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIGEgdmFyaWFibGUKK2RubCAkMT11cHBlcmNhc2UoJDIpCitBQ19ERUZVTihbQ0ZfVVBQRVJdLAorWworJDE9YGVjaG8gIiQyIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfVVRGOF9MSUIgdmVyc2lvbjogOCB1cGRhdGVkOiAyMDEyLzEwLzA2IDA4OjU3OjUxCitkbmwgLS0tLS0tLS0tLS0KK2RubCBDaGVjayBmb3IgbXVsdGlieXRlIHN1cHBvcnQsIGFuZCBpZiBub3QgZm91bmQsIHV0ZjggY29tcGF0aWJpbGl0eSBsaWJyYXJ5CitBQ19ERUZVTihbQ0ZfVVRGOF9MSUJdLAorWworQUNfQ0FDSEVfQ0hFQ0soZm9yIG11bHRpYnl0ZSBjaGFyYWN0ZXIgc3VwcG9ydCxjZl9jdl91dGY4X2xpYixbCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwlBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8c3RkbGliLmg+XSxbcHV0d2MoMCwwKTtdLAorCVtjZl9jdl91dGY4X2xpYj15ZXNdLAorCVtDRl9GSU5EX0xJTktBR0UoWworI2luY2x1ZGUgPGxpYnV0ZjguaD5dLFtwdXR3YygwLDApO10sdXRmOCwKKwkJW2NmX2N2X3V0ZjhfbGliPWFkZC1vbl0sCisJCVtjZl9jdl91dGY4X2xpYj1ub10pCitdKV0pCisKKyMgSEFWRV9MSUJVVEY4X0ggaXMgdXNlZCBieSBuY3Vyc2VzIGlmIGN1cnNlcy5oIGlzIHNoYXJlZCBiZXR3ZWVuCisjIG5jdXJzZXMvbmN1cnNlc3c6CitpZiB0ZXN0ICIkY2ZfY3ZfdXRmOF9saWIiID0gImFkZC1vbiIgOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfTElCVVRGOF9ILDEsW0RlZmluZSB0byAxIGlmIHdlIHNob3VsZCBpbmNsdWRlIGxpYnV0ZjguaF0pCisJQ0ZfQUREX0lOQ0RJUigkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCkKKwlDRl9BRERfTElCRElSKCRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCkKKwlDRl9BRERfTElCUygkY2ZfY3ZfbGlicmFyeV9maWxlX3V0ZjgpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9WRVJCT1NFIHZlcnNpb246IDMgdXBkYXRlZDogMjAwNy8wNy8yOSAwOTo1NToxMgorZG5sIC0tLS0tLS0tLS0KK2RubCBVc2UgQUNfVkVSQk9TRSB3L28gdGhlIHdhcm5pbmdzCitBQ19ERUZVTihbQ0ZfVkVSQk9TRV0sCitbdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkkMSIgMT4mQUNfRkRfTVNHCitDRl9NU0dfTE9HKFskMV0pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dDSEFSX1RZUEUgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDEyLzEwLzA2IDE2OjM5OjU4CitkbmwgLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGlmIHR5cGUgd2lkZS1jaGFyYWN0ZXIgdHlwZSAkMSBpcyBkZWNsYXJlZCwgYW5kIGlmIHNvLCB3aGljaCBoZWFkZXIKK2RubCBmaWxlIGlzIG5lZWRlZC4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHVzZWQgdG8gc2V0IGEgc2hlbGwgdmFyaWFibGUgd2hlbgorZG5sIHRoZSB0eXBlIGlzIG5vdCBmb3VuZC4gIFRoZSBmaXJzdCBwYXJhbWV0ZXIgc2V0cyBhIHNoZWxsIHZhcmlhYmxlIGZvciB0aGUKK2RubCBvcHBvc2l0ZSBzZW5zZS4KK0FDX0RFRlVOKFtDRl9XQ0hBUl9UWVBFXSwKK1sKKyMgVGhpcyBpcyBuZWVkZWQgb24gVHJ1NjQgNS4wIHRvIGRlY2xhcmUgJDEKK0FDX0NBQ0hFX0NIRUNLKGlmIHdlIG11c3QgaW5jbHVkZSB3Y2hhci5oIHRvIGRlY2xhcmUgJDEsY2ZfY3ZfJDEsWworQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9MSUJVVEY4X0gKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CisjZW5kaWZdLAorCVskMSBzdGF0ZV0sCisJW2NmX2N2XyQxPW5vXSwKKwlbQUNfVFJZX0NPTVBJTEUoWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZl0sCisJWyQxIHZhbHVlXSwKKwlbY2ZfY3ZfJDE9eWVzXSwKKwlbY2ZfY3ZfJDE9dW5rbm93bl0pXSldKQorCitpZiB0ZXN0ICIkY2ZfY3ZfJDEiID0geWVzIDsgdGhlbgorCUFDX0RFRklORShORUVEX1dDSEFSX0gsMSxbRGVmaW5lIHRvIDEgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmhdKQorCU5FRURfV0NIQVJfSD0xCitmaQorCitpZmVsc2UoWyQyXSwsLFsKKyMgaWYgd2UgZG8gbm90IGZpbmQgJDEgaW4gZWl0aGVyIHBsYWNlLCB1c2Ugc3Vic3RpdHV0aW9uIHRvIHByb3ZpZGUgYSBmYWxsYmFjay4KK2lmIHRlc3QgIiRjZl9jdl8kMSIgPSB1bmtub3duIDsgdGhlbgorCSQyPTEKK2ZpCitdKQoraWZlbHNlKCQzLCwsWworIyBpZiB3ZSBmaW5kICQxIGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCitpZiB0ZXN0ICIkY2ZfY3ZfJDEiICE9IHVua25vd24gOyB0aGVuCisJJDM9MQorZmkKK10pCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfQ1VSU0VTX0RJUiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTAvMTEvMjAgMTc6MDI6MzgKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBXcmFwcGVyIGZvciBBQ19BUkdfV0lUSCB0byBzcGVjaWZ5IGRpcmVjdG9yeSB1bmRlciB3aGljaCB0byBsb29rIGZvciBjdXJzZXMKK2RubCBsaWJyYXJpZXMuCitBQ19ERUZVTihbQ0ZfV0lUSF9DVVJTRVNfRElSXSxbCisKK0FDX01TR19DSEVDS0lORyhmb3Igc3BlY2lmaWMgY3Vyc2VzLWRpcmVjdG9yeSkKK0FDX0FSR19XSVRIKGN1cnNlcy1kaXIsCisJWyAgLS13aXRoLWN1cnNlcy1kaXI9RElSICAgZGlyZWN0b3J5IGluIHdoaWNoIChuKWN1cnNlcyBpcyBpbnN0YWxsZWRdLAorCVtjZl9jdl9jdXJzZXNfZGlyPSR3aXRodmFsXSwKKwlbY2ZfY3ZfY3Vyc2VzX2Rpcj1ub10pCitBQ19NU0dfUkVTVUxUKCRjZl9jdl9jdXJzZXNfZGlyKQorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisJQ0ZfUEFUSF9TWU5UQVgod2l0aHZhbCkKKwlpZiB0ZXN0IC1kICIkY2ZfY3ZfY3Vyc2VzX2RpciIKKwl0aGVuCisJCUNGX0FERF9JTkNESVIoJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZSkKKwkJQ0ZfQUREX0xJQkRJUigkY2ZfY3ZfY3Vyc2VzX2Rpci9saWIpCisJZmkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfREJNQUxMT0MgdmVyc2lvbjogNyB1cGRhdGVkOiAyMDEwLzA2LzIxIDE3OjI2OjQ3CitkbmwgLS0tLS0tLS0tLS0tLS0tLQorZG5sIENvbmZpZ3VyZS1vcHRpb24gZm9yIGRibWFsbG9jLiAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlciBpcyB1c2VkIHRvIG92ZXJyaWRlCitkbmwgdGhlIHVwZGF0aW5nIG9mICRMSUJTLCBlLmcuLCB0byBhdm9pZCBjb25mbGljdCB3aXRoIHN1YnNlcXVlbnQgdGVzdHMuCitBQ19ERUZVTihbQ0ZfV0lUSF9EQk1BTExPQ10sWworQ0ZfTk9fTEVBS1NfT1BUSU9OKGRibWFsbG9jLAorCVsgIC0td2l0aC1kYm1hbGxvYyAgICAgICAgIHRlc3Q6IHVzZSBDb25vciBDYWhpbGwncyBkYm1hbGxvYyBsaWJyYXJ5XSwKKwlbVVNFX0RCTUFMTE9DXSkKKworaWYgdGVzdCAiJHdpdGhfZGJtYWxsb2MiID0geWVzIDsgdGhlbgorCUFDX0NIRUNLX0hFQURFUihkYm1hbGxvYy5oLAorCQlbQUNfQ0hFQ0tfTElCKGRibWFsbG9jLFtkZWJ1Z19tYWxsb2NdaWZlbHNlKFskMV0sLFtdLFssJDFdKSldKQorZmkKK10pZG5sCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfV0lUSF9ETUFMTE9DIHZlcnNpb246IDcgdXBkYXRlZDogMjAxMC8wNi8yMSAxNzoyNjo0NworZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIENvbmZpZ3VyZS1vcHRpb24gZm9yIGRtYWxsb2MuICBUaGUgb3B0aW9uYWwgcGFyYW1ldGVyIGlzIHVzZWQgdG8gb3ZlcnJpZGUKK2RubCB0aGUgdXBkYXRpbmcgb2YgJExJQlMsIGUuZy4sIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggc3Vic2VxdWVudCB0ZXN0cy4KK0FDX0RFRlVOKFtDRl9XSVRIX0RNQUxMT0NdLFsKK0NGX05PX0xFQUtTX09QVElPTihkbWFsbG9jLAorCVsgIC0td2l0aC1kbWFsbG9jICAgICAgICAgIHRlc3Q6IHVzZSBHcmF5IFdhdHNvbidzIGRtYWxsb2MgbGlicmFyeV0sCisJW1VTRV9ETUFMTE9DXSkKKworaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgOyB0aGVuCisJQUNfQ0hFQ0tfSEVBREVSKGRtYWxsb2MuaCwKKwkJW0FDX0NIRUNLX0xJQihkbWFsbG9jLFtkbWFsbG9jX2RlYnVnXWlmZWxzZShbJDFdLCxbXSxbLCQxXSkpXSkKK2ZpCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfTkNVUlNFU19FVEMgdmVyc2lvbjogNCB1cGRhdGVkOiAyMDE1LzA0LzI1IDIwOjUzOjExCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFVzZSB0aGlzIG1hY3JvIGZvciBwcm9ncmFtcyB3aGljaCB1c2UgYW55IHZhcmlhbnQgb2YgImN1cnNlcyIsIGUuZy4sCitkbmwgIm5jdXJzZXMiLCBhbmQgIlBEQ3Vyc2VzIi4gIFByb2dyYW1zIHRoYXQgY2FuIHVzZSBjdXJzZXMgYW5kIHNvbWUgdW5yZWxhdGVkCitkbmwgbGlicmFyeSAoc3VjaCBhcyBzbGFuZykgc2hvdWxkIHVzZSBhICItLXdpdGgtc2NyZWVuPVhYWCIgb3B0aW9uLgorZG5sCitkbmwgVGhpcyBkb2VzIG5vdCB1c2UgQUNfREVGVU4sIGJlY2F1c2UgdGhhdCB3b3VsZCB0ZWxsIGF1dG9jb25mIHRvIHJ1biBlYWNoCitkbmwgb2YgdGhlIG1hY3JvcyBpbnNpZGUgdGhpcyBvbmUgLSBiZWZvcmUgdGhpcyBtYWNyby4KK2RlZmluZShbQ0ZfV0lUSF9OQ1VSU0VTX0VUQ10sWworQ0ZfV0lUSF9DVVJTRVNfRElSCisKK2NmX2N2X3NjcmVlbj1jdXJzZXMKKworQUNfTVNHX0NIRUNLSU5HKGZvciBzcGVjaWZpZWQgY3Vyc2VzIGxpYnJhcnkgdHlwZSkKK0FDX0FSR19XSVRIKHNjcmVlbiwKKwlbICAtLXdpdGgtc2NyZWVuPVhYWCAgICAgICB1c2Ugc3BlY2lmaWVkIGN1cnNlcy1saWJyYXJpZXNdLAorCVtjZl9jdl9zY3JlZW49JHdpdGh2YWxdLFsKKworQUNfQVJHX1dJVEgobmN1cnNlc3csCisJWyAgLS13aXRoLW5jdXJzZXN3ICAgICAgICAgdXNlIHdpZGUgbmN1cnNlcy1saWJyYXJpZXNdLAorCVtjZl9jdl9zY3JlZW49bmN1cnNlc3ddLFsKKworQUNfQVJHX1dJVEgobmN1cnNlcywKKwlbICAtLXdpdGgtbmN1cnNlcyAgICAgICAgICB1c2UgbmN1cnNlcy1saWJyYXJpZXNdLAorCVtjZl9jdl9zY3JlZW49bmN1cnNlc10sWworCitBQ19BUkdfV0lUSChwZGN1cnNlcywKKwlbICAtLXdpdGgtcGRjdXJzZXMgICAgICAgICBjb21waWxlL2xpbmsgd2l0aCBwZGN1cnNlcyBYMTEgbGlicmFyeV0sCisJW2NmX2N2X3NjcmVlbj1wZGN1cnNlc10sWworCitBQ19BUkdfV0lUSChjdXJzZXMtY29sciwKKwlbICAtLXdpdGgtY3Vyc2VzLWNvbHIgICAgICBjb21waWxlL2xpbmsgd2l0aCBIUFVYIDEwLnggY29sb3ItY3Vyc2VzXSwKKwlbY2ZfY3Zfc2NyZWVuPWN1cnNlc19jb2xyXSxbCisKK0FDX0FSR19XSVRIKGN1cnNlcy01bGliLAorCVsgIC0td2l0aC1jdXJzZXMtNWxpYiAgICAgIGNvbXBpbGUvbGluayB3aXRoIFN1bk9TIDVsaWIgY3Vyc2VzXSwKKwlbY2ZfY3Zfc2NyZWVuPWN1cnNlc181bGliXSldKV0pXSldKV0pCisKK0FDX01TR19SRVNVTFQoJGNmX2N2X3NjcmVlbikKKworY2FzZSAkY2ZfY3Zfc2NyZWVuIGluCisoY3Vyc2VzfGN1cnNlc18qKQorCUNGX0NVUlNFU19DT05GSUcKKwk7OworKG5jdXJzZXN3KikKKwlDRl9VVEY4X0xJQgorCUNGX05DVVJTRVNfQ09ORklHKCRjZl9jdl9zY3JlZW4pCisJOzsKKyhuY3Vyc2VzKikKKwlDRl9OQ1VSU0VTX0NPTkZJRygkY2ZfY3Zfc2NyZWVuKQorCTs7CisocGRjdXJzZXMpCisJQ0ZfUERDVVJTRVNfWDExCisJOzsKKygqKQorCUFDX01TR19FUlJPUih1bmV4cGVjdGVkIHNjcmVlbi12YWx1ZTogJGNmX2N2X3NjcmVlbikKKwk7OworZXNhYworCitdKWRubAorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1dJVEhfVkFMR1JJTkQgdmVyc2lvbjogMSB1cGRhdGVkOiAyMDA2LzEyLzE0IDE4OjAwOjIxCitkbmwgLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0NGX1dJVEhfVkFMR1JJTkRdLFsKK0NGX05PX0xFQUtTX09QVElPTih2YWxncmluZCwKKwlbICAtLXdpdGgtdmFsZ3JpbmQgICAgICAgICB0ZXN0OiB1c2UgdmFsZ3JpbmRdLAorCVtVU0VfVkFMR1JJTkRdKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YT1BFTl9DVVJTRVMgdmVyc2lvbjogMTEgdXBkYXRlZDogMjAxMS8wMS8xOCAxODoxNTozMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIFRlc3QgaWYgd2Ugc2hvdWxkIGRlZmluZSBYL09wZW4gc291cmNlIGZvciBjdXJzZXMsIG5lZWRlZCBvbiBEaWdpdGFsIFVuaXgKK2RubCA0LngsIHRvIHNlZSB0aGUgZXh0ZW5kZWQgZnVuY3Rpb25zLCBidXQgYnJlYWtzIG9uIElSSVggNi54LgorZG5sCitkbmwgVGhlIGdldGJlZ3l4KCkgY2hlY2sgaXMgbmVlZGVkIGZvciBIUFVYLCB3aGljaCBvbWl0cyBsZWdhY3kgbWFjcm9zIHN1Y2gKK2RubCBhcyBnZXRiZWd5KCkuICBUaGUgbGF0dGVyIGlzIGJldHRlciBkZXNpZ24sIGJ1dCB0aGUgZm9ybWVyIGlzIHN0YW5kYXJkLgorQUNfREVGVU4oW0NGX1hPUEVOX0NVUlNFU10sCitbCitBQ19SRVFVSVJFKFtDRl9DVVJTRVNfQ1BQRkxBR1NdKWRubAorQUNfQ0FDSEVfQ0hFQ0soaWYgd2UgbXVzdCBkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCxjZl9jdl9uZWVkX3hvcGVuX2V4dGVuc2lvbixbCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sWworI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OX1BBVENIKQorI2lmIChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggPCAyMDEwMDUwMSkgJiYgKE5DVVJTRVNfVkVSU0lPTl9QQVRDSCA+PSAyMDEwMDQwMykKKwltYWtlIGFuIGVycm9yCisjZW5kaWYKKyNlbmRpZgorCWxvbmcgeCA9IHdpbm5zdHIoc3Rkc2NyLCAiIiwgMCk7CisJaW50IHgxLCB5MTsKKwlnZXRiZWd5eChzdGRzY3IsIHkxLCB4MSldLAorCVtjZl9jdl9uZWVkX3hvcGVuX2V4dGVuc2lvbj1ub10sCisJW0FDX1RSWV9MSU5LKFsKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT5dLFsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwljY2hhcl90IGNoZWNrOworCWludCBjaGVjazIgPSBjdXJzX3NldCgoaW50KXNpemVvZihjaGVjaykpOworI2VuZGlmCisJbG9uZyB4ID0gd2lubnN0cihzdGRzY3IsICIiLCAwKTsKKwlpbnQgeDEsIHkxOworCWdldGJlZ3l4KHN0ZHNjciwgeTEsIHgxKV0sCisJW2NmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uPXllc10sCisJW2NmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uPXVua25vd25dKV0pXSkKK3Rlc3QgJGNmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uID0geWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFX0VYVEVOREVEIgorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YT1BFTl9TT1VSQ0UgdmVyc2lvbjogNDkgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLS0tLQorZG5sIFRyeSB0byBnZXQgX1hPUEVOX1NPVVJDRSBkZWZpbmVkIHByb3Blcmx5IHRoYXQgd2UgY2FuIHVzZSBQT1NJWCBmdW5jdGlvbnMsCitkbmwgb3IgYWRhcHQgdG8gdGhlIHZlbmRvcidzIGRlZmluaXRpb25zIHRvIGdldCBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHksCitkbmwgd2l0aG91dCBsb3NpbmcgdGhlIGNvbW1vbiBub24tUE9TSVggZmVhdHVyZXMuCitkbmwKK2RubCBQYXJhbWV0ZXJzOgorZG5sCSQxIGlzIHRoZSBub21pbmFsIHZhbHVlIGZvciBfWE9QRU5fU09VUkNFCitkbmwJJDIgaXMgdGhlIG5vbWluYWwgdmFsdWUgZm9yIF9QT1NJWF9DX1NPVVJDRQorQUNfREVGVU4oW0NGX1hPUEVOX1NPVVJDRV0sWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitjZl9YT1BFTl9TT1VSQ0U9aWZlbHNlKFskMV0sLDUwMCxbJDFdKQorY2ZfUE9TSVhfQ19TT1VSQ0U9aWZlbHNlKFskMl0sLDE5OTUwNkwsWyQyXSkKK2NmX3hvcGVuX3NvdXJjZT0KKworY2FzZSAkaG9zdF9vcyBpbgorKGFpeFtbNC03XV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfQUxMX1NPVVJDRSIKKwk7OworKGN5Z3dpbnxtc3lzKQorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwk7OworKGRhcndpbltbMC04XV0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0FQUExFX0NfU09VUkNFIgorCTs7CisoZGFyd2luKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0RBUldJTl9DX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhmcmVlYnNkKnxkcmFnb25mbHkqKQorCSMgNS54IGhlYWRlcnMgYXNzb2NpYXRlCisJIwlfWE9QRU5fU09VUkNFPTYwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCisJIwlfWE9QRU5fU09VUkNFPTUwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCisJY2ZfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9UWVBFUyAtRF9fQlNEX1ZJU0lCTEUgLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCTs7CisoaHB1eDExKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT01MDAiCisJOzsKKyhocHV4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIgorCTs7CisoaXJpeFtbNTZdXS4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfU0dJX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhsaW51eCp8Z251KnxtaW50KnxrKmJzZCotZ251KQorCUNGX0dOVV9TT1VSQ0UKKwk7OworKG1pbml4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX05FVEJTRF9TT1VSQ0UiICMgUE9TSVguMS0yMDAxIGZlYXR1cmVzIGFyZSBpZmRlZidkIHdpdGggdGhpcy4uLgorCTs7CisobWlyYnNkKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBvciBfUE9TSVhfU09VUkNFIGJyZWFrcyA8c3lzL3NlbGVjdC5oPiBhbmQgb3RoZXIgaGVhZGVycyB3aGljaCB1c2UgdV9pbnQgLyB1X3Nob3J0IHR5cGVzCisJY2ZfWE9QRU5fU09VUkNFPQorCUNGX1BPU0lYX0NfU09VUkNFKCRjZl9QT1NJWF9DX1NPVVJDRSkKKwk7OworKG5ldGJzZCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9ORVRCU0RfU09VUkNFIiAjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBicmVha3MgSVB2NiBmb3IgbHlueCBvbiBOZXRCU0QgMS42LCBicmVha3MgeHRlcm0sIGlzIG5vdCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJOzsKKyhvcGVuYnNkW1s0LTldXSopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgbG93ZXIgdGhhbiA1MDAgYnJlYWtzIGcrKyBjb21waWxlIHdpdGggd2NoYXIuaCwgbmVlZGVkIGZvciBuY3Vyc2VzdworCWNmX3hvcGVuX3NvdXJjZT0iLURfQlNEX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9NjAwCisJOzsKKyhvcGVuYnNkKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBicmVha3MgeHRlcm0gb24gT3BlbkJTRCAyLjgsIGlzIG5vdCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJOzsKKyhvc2ZbWzQ1XV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfT1NGX1NPVVJDRSIKKwk7OworKG50by1xbngqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfUU5YX1NPVVJDRSIKKwk7OworKHNjbyopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCisJOzsKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCisJOzsKKyhzeXN2NC4ydXcyLiopICMgTm92ZWxsL1NDTyBVbml4V2FyZSAyLnggKHRlc3RlZCBvbiAyLjEuMikKKwljZl9YT1BFTl9TT1VSQ0U9CisJY2ZfUE9TSVhfQ19TT1VSQ0U9CisJOzsKKygqKQorCUNGX1RSWV9YT1BFTl9TT1VSQ0UKKwlDRl9QT1NJWF9DX1NPVVJDRSgkY2ZfUE9TSVhfQ19TT1VSQ0UpCisJOzsKK2VzYWMKKworaWYgdGVzdCAtbiAiJGNmX3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJQ0ZfQUREX0NGTEFHUygkY2ZfeG9wZW5fc291cmNlLHRydWUpCitmaQorCitkbmwgSW4gYW55dGhpbmcgYnV0IHRoZSBkZWZhdWx0IGNhc2UsIHdlIG1heSBoYXZlIHN5c3RlbS1zcGVjaWZpYyBzZXR0aW5nCitkbmwgd2hpY2ggaXMgc3RpbGwgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlkZSBhbGwgb2YgdGhlIGVudHJ5cG9pbnRzIHRoYXQKK2RubCBfWE9QRU5fU09VUkNFIHdvdWxkIHlpZWxkLgoraWYgdGVzdCAtbiAiJGNmX1hPUEVOX1NPVVJDRSIgJiYgdGVzdCAteiAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldCkKKwlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGxpYi5oPl0sWworI2lmbmRlZiBfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWZdLAorCVtjZl9YT1BFTl9TT1VSQ0Vfc2V0PXllc10sCisJW2NmX1hPUEVOX1NPVVJDRV9zZXQ9bm9dKQorCUFDX01TR19SRVNVTFQoJGNmX1hPUEVOX1NPVVJDRV9zZXQpCisJaWYgdGVzdCAkY2ZfWE9QRU5fU09VUkNFX3NldCA9IHllcworCXRoZW4KKwkJQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzdGRsaWIuaD5dLFsKKyNpZiAoX1hPUEVOX1NPVVJDRSAtIDApIDwgJGNmX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmXSwKKwkJW2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9eWVzXSwKKwkJW2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9bm9dKQorCQlpZiB0ZXN0ICRjZl9YT1BFTl9TT1VSQ0Vfc2V0X29rID0gbm8KKwkJdGhlbgorCQkJQUNfTVNHX1dBUk4oX1hPUEVOX1NPVVJDRSBpcyBsb3dlciB0aGFuIHJlcXVlc3RlZCkKKwkJZmkKKwllbHNlCisJCUNGX1RSWV9YT1BFTl9TT1VSQ0UKKwlmaQorZmkKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfWF9BVEhFTkEgdmVyc2lvbjogMjMgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tCitkbmwgQ2hlY2sgZm9yIFhhdyAoQXRoZW5hKSBsaWJyYXJpZXMKK2RubAorZG5sIFNldHMgJGNmX3hfYXRoZW5hIGFjY29yZGluZyB0byB0aGUgZmxhdm9yIG9mIFhhdyB3aGljaCBpcyB1c2VkLgorQUNfREVGVU4oW0NGX1hfQVRIRU5BXSwKK1sKK2NmX3hfYXRoZW5hPSR7Y2ZfeF9hdGhlbmE6LVhhd30KKworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCBYYXcgM2QgbGlicmFyeSkKK3dpdGh2YWw9CitBQ19BUkdfV0lUSChYYXczZCwKKwlbICAtLXdpdGgtWGF3M2QgICAgICAgICAgICBsaW5rIHdpdGggWGF3IDNkIGxpYnJhcnldKQoraWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIDsgdGhlbgorCWNmX3hfYXRoZW5hPVhhdzNkCisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggWGF3IDNkIHhmdCBsaWJyYXJ5KQord2l0aHZhbD0KK0FDX0FSR19XSVRIKFhhdzNkeGZ0LAorCVsgIC0td2l0aC1YYXczZHhmdCAgICAgICAgIGxpbmsgd2l0aCBYYXcgM2QgeGZ0IGxpYnJhcnldKQoraWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIDsgdGhlbgorCWNmX3hfYXRoZW5hPVhhdzNkeGZ0CisJQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisJQUNfTVNHX1JFU1VMVChubykKK2ZpCisKK0FDX01TR19DSEVDS0lORyhpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggbmVYVCBBdGhlbmEgbGlicmFyeSkKK3dpdGh2YWw9CitBQ19BUkdfV0lUSChuZVh0YXcsCisJWyAgLS13aXRoLW5lWHRhdyAgICAgICAgICAgbGluayB3aXRoIG5lWFQgQXRoZW5hIGxpYnJhcnldKQoraWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIDsgdGhlbgorCWNmX3hfYXRoZW5hPW5lWHRhdworCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitBQ19NU0dfQ0hFQ0tJTkcoaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIEF0aGVuYS1QbHVzIGxpYnJhcnkpCit3aXRodmFsPQorQUNfQVJHX1dJVEgoWGF3UGx1cywKKwlbICAtLXdpdGgtWGF3UGx1cyAgICAgICAgICBsaW5rIHdpdGggQXRoZW5hLVBsdXMgbGlicmFyeV0pCitpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXMgOyB0aGVuCisJY2ZfeF9hdGhlbmE9WGF3UGx1cworCUFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorCUFDX01TR19SRVNVTFQobm8pCitmaQorCitjZl94X2F0aGVuYV9saWI9IiIKKworaWYgdGVzdCAiJFBLR19DT05GSUciICE9IG5vbmUgOyB0aGVuCisJY2ZfYXRoZW5hX2xpc3Q9CisJdGVzdCAiJGNmX3hfYXRoZW5hIiA9IFhhdyAmJiBjZl9hdGhlbmFfbGlzdD0ieGF3OCB4YXc3IHhhdzYiCisJZm9yIGNmX2F0aGVuYV9wa2cgaW4gXAorCQkkY2ZfYXRoZW5hX2xpc3QgXAorCQkke2NmX3hfYXRoZW5hfSBcCisJCSR7Y2ZfeF9hdGhlbmF9LWRldmVsIFwKKwkJbGliJHtjZl94X2F0aGVuYX0gXAorCQlsaWIke2NmX3hfYXRoZW5hfS1kZXZlbAorCWRvCisJCUNGX1RSWV9QS0dfQ09ORklHKCRjZl9hdGhlbmFfcGtnLFsKKwkJCWNmX3hfYXRoZW5hX2xpYj0iJGNmX3BrZ2NvbmZpZ19saWJzIgorCQkJQ0ZfVVBQRVIoY2ZfeF9hdGhlbmFfTElCUyxIQVZFX0xJQl8kY2ZfeF9hdGhlbmEpCisJCQlBQ19ERUZJTkVfVU5RVU9URUQoJGNmX3hfYXRoZW5hX0xJQlMpCisKKwkJCUNGX1RSSU1fWF9MSUJTCisKK0FDX0NBQ0hFX0NIRUNLKGZvciB1c2FibGUgJGNmX3hfYXRoZW5hL1htdSBwYWNrYWdlLGNmX2N2X3hhd19jb21wYXQsWworQUNfVFJZX0xJTksoWworI2luY2x1ZGUgPFgxMS9YbXUvQ2hhclNldC5oPgorXSxbCitpbnQgY2hlY2sgPSBYbXVDb21wYXJlSVNPTGF0aW4xKCJiaWciLCAic21hbGwiKQorXSxbY2ZfY3ZfeGF3X2NvbXBhdD15ZXNdLFtjZl9jdl94YXdfY29tcGF0PW5vXSldKQorCisJCQlpZiB0ZXN0ICIkY2ZfY3ZfeGF3X2NvbXBhdCIgPSBubworCQkJdGhlbgorCQkJCSMgd29ya2Fyb3VuZCBmb3IgYnJva2VuICIucGMiIGZpbGVzLi4uCisJCQkJY2FzZSAiJGNmX3hfYXRoZW5hX2xpYiIgaW4KKwkJCQkoKi1sWG11KikKKwkJCQkJOzsKKwkJCQkoKikKKwkJCQkJQ0ZfVkVSQk9TRSh3b3JrIGFyb3VuZCBicm9rZW4gcGFja2FnZSkKKwkJCQkJY2Zfc2F2ZV94bXU9IiRMSUJTIgorCQkJCQljZl9maXJzdF9saWI9YGVjaG8gIiRjZl9zYXZlX3htdSIgfCBzZWQgLWUgJ3MvXlsgXVsgXSovLycgLWUgJ3MvIC4qLy8nYAorCQkJCQlDRl9UUllfUEtHX0NPTkZJRyh4bXUsWworCQkJCQkJCUxJQlM9IiRjZl9zYXZlX3htdSIKKwkJCQkJCQlDRl9BRERfTElCX0FGVEVSKCRjZl9maXJzdF9saWIsJGNmX3BrZ2NvbmZpZ19saWJzKQorCQkJCQkJXSxbCisJCQkJCQkJQ0ZfQUREX0xJQl9BRlRFUigkY2ZfZmlyc3RfbGliLC1sWG11KQorCQkJCQkJXSkKKwkJCQkJQ0ZfVFJJTV9YX0xJQlMKKwkJCQkJOzsKKwkJCQllc2FjCisJCQlmaQorCisJCQlicmVha10pCisJZG9uZQorZmkKKworaWYgdGVzdCAteiAiJGNmX3hfYXRoZW5hX2xpYiIgOyB0aGVuCisJQ0ZfWF9FWFQKKwlDRl9YX1RPT0xLSVQKKwlDRl9YX0FUSEVOQV9DUFBGTEFHUygkY2ZfeF9hdGhlbmEpCisJQ0ZfWF9BVEhFTkFfTElCUygkY2ZfeF9hdGhlbmEpCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YX0FUSEVOQV9DUFBGTEFHUyB2ZXJzaW9uOiA1IHVwZGF0ZWQ6IDIwMTAvMDUvMjYgMTc6MzU6MzAKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIE5vcm1hbGx5IGludm9rZWQgYnkgQ0ZfWF9BVEhFTkEsIHdpdGggJDEgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSBmbGF2b3Igb2YKK2RubCB0aGUgQXRoZW5hIHdpZGdldHMsIGUuZy4sIFhhdywgWGF3M2QsIG5lWHRhdy4KK0FDX0RFRlVOKFtDRl9YX0FUSEVOQV9DUFBGTEFHU10sCitbCitjZl94X2F0aGVuYV9yb290PWlmZWxzZShbJDFdLCxYYXcsWyQxXSkKK2NmX3hfYXRoZW5hX2luYz0iIgorCitmb3IgY2ZfcGF0aCBpbiBkZWZhdWx0IFwKKwkvdXNyL2NvbnRyaWIvWDExUjYgXAorCS91c3IvY29udHJpYi9YMTFSNSBcCisJL3Vzci9saWIvWDExUjUgXAorCS91c3IvbG9jYWwKK2RvCisJaWYgdGVzdCAteiAiJGNmX3hfYXRoZW5hX2luYyIgOyB0aGVuCisJCWNmX3NhdmU9IiRDUFBGTEFHUyIKKwkJY2ZfdGVzdD1YMTEvJGNmX3hfYXRoZW5hX3Jvb3QvU2ltcGxlTWVudS5oCisJCWlmIHRlc3QgJGNmX3BhdGggIT0gZGVmYXVsdCA7IHRoZW4KKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZSAtSSRjZl9wYXRoL2luY2x1ZGUiCisJCQlBQ19NU0dfQ0hFQ0tJTkcoZm9yICRjZl90ZXN0IGluICRjZl9wYXRoKQorCQllbHNlCisJCQlBQ19NU0dfQ0hFQ0tJTkcoZm9yICRjZl90ZXN0KQorCQlmaQorCQlBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8WDExL0ludHJpbnNpYy5oPgorI2luY2x1ZGUgPCRjZl90ZXN0Pl0sW10sCisJCQlbY2ZfcmVzdWx0PXllc10sCisJCQlbY2ZfcmVzdWx0PW5vXSkKKwkJQUNfTVNHX1JFU1VMVCgkY2ZfcmVzdWx0KQorCQlpZiB0ZXN0ICIkY2ZfcmVzdWx0IiA9IHllcyA7IHRoZW4KKwkJCWNmX3hfYXRoZW5hX2luYz0kY2ZfcGF0aAorCQkJYnJlYWsKKwkJZWxzZQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCQlmaQorCWZpCitkb25lCisKK2lmIHRlc3QgLXogIiRjZl94X2F0aGVuYV9pbmMiIDsgdGhlbgorCUFDX01TR19XQVJOKAorW1VuYWJsZSB0byBzdWNjZXNzZnVsbHkgZmluZCBBdGhlbmEgaGVhZGVyIGZpbGVzIHdpdGggdGVzdCBwcm9ncmFtXSkKK2VsaWYgdGVzdCAiJGNmX3hfYXRoZW5hX2luYyIgIT0gZGVmYXVsdCA7IHRoZW4KKwlDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX3hfYXRoZW5hX2luYyIKK2ZpCitdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENGX1hfQVRIRU5BX0xJQlMgdmVyc2lvbjogMTIgdXBkYXRlZDogMjAxMS8wNy8xNyAxOTo1NTowMgorZG5sIC0tLS0tLS0tLS0tLS0tLS0KK2RubCBOb3JtYWxseSBpbnZva2VkIGJ5IENGX1hfQVRIRU5BLCB3aXRoICQxIHNldCB0byB0aGUgYXBwcm9wcmlhdGUgZmxhdm9yIG9mCitkbmwgdGhlIEF0aGVuYSB3aWRnZXRzLCBlLmcuLCBYYXcsIFhhdzNkLCBuZVh0YXcuCitBQ19ERUZVTihbQ0ZfWF9BVEhFTkFfTElCU10sCitbQUNfUkVRVUlSRShbQ0ZfWF9UT09MS0lUXSkKK2NmX3hfYXRoZW5hX3Jvb3Q9aWZlbHNlKFskMV0sLFhhdyxbJDFdKQorY2ZfeF9hdGhlbmFfbGliPSIiCisKK2ZvciBjZl9wYXRoIGluIGRlZmF1bHQgXAorCS91c3IvY29udHJpYi9YMTFSNiBcCisJL3Vzci9jb250cmliL1gxMVI1IFwKKwkvdXNyL2xpYi9YMTFSNSBcCisJL3Vzci9sb2NhbAorZG8KKwlmb3IgY2ZfbGliIGluIFwKKwkJJHtjZl94X2F0aGVuYV9yb290fSBcCisJCSR7Y2ZfeF9hdGhlbmFfcm9vdH03IFwKKwkJJHtjZl94X2F0aGVuYV9yb290fTYKKwlkbworCWZvciBjZl9saWJzIGluIFwKKwkJIi1sJGNmX2xpYiAtbFhtdSIgXAorCQkiLWwkY2ZfbGliIC1sWHBtIC1sWG11IiBcCisJCSItbCR7Y2ZfbGlifV9zIC1sWG11X3MiCisJZG8KKwkJaWYgdGVzdCAteiAiJGNmX3hfYXRoZW5hX2xpYiIgOyB0aGVuCisJCQljZl9zYXZlPSIkTElCUyIKKwkJCWNmX3Rlc3Q9WGF3U2ltcGxlTWVudUFkZEdsb2JhbEFjdGlvbnMKKwkJCWlmIHRlc3QgJGNmX3BhdGggIT0gZGVmYXVsdCA7IHRoZW4KKwkJCQlDRl9BRERfTElCUygtTCRjZl9wYXRoL2xpYiAkY2ZfbGlicykKKwkJCQlBQ19NU0dfQ0hFQ0tJTkcoZm9yICRjZl9saWJzIGluICRjZl9wYXRoKQorCQkJZWxzZQorCQkJCUNGX0FERF9MSUJTKCRjZl9saWJzKQorCQkJCUFDX01TR19DSEVDS0lORyhmb3IgJGNmX3Rlc3QgaW4gJGNmX2xpYnMpCisJCQlmaQorCQkJQUNfVFJZX0xJTksoWworI2luY2x1ZGUgPFgxMS9JbnRyaW5zaWMuaD4KKyNpbmNsdWRlIDxYMTEvJGNmX3hfYXRoZW5hX3Jvb3QvU2ltcGxlTWVudS5oPgorXSxbCiskY2ZfdGVzdCgoWHRBcHBDb250ZXh0KSAwKV0sCisJCQkJW2NmX3Jlc3VsdD15ZXNdLAorCQkJCVtjZl9yZXN1bHQ9bm9dKQorCQkJQUNfTVNHX1JFU1VMVCgkY2ZfcmVzdWx0KQorCQkJaWYgdGVzdCAiJGNmX3Jlc3VsdCIgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfeF9hdGhlbmFfbGliPSIkY2ZfbGlicyIKKwkJCQlicmVhaworCQkJZmkKKwkJCUxJQlM9IiRjZl9zYXZlIgorCQlmaQorCWRvbmUgIyBjZl9saWJzCisJCXRlc3QgLW4gIiRjZl94X2F0aGVuYV9saWIiICYmIGJyZWFrCisJZG9uZSAjIGNmX2xpYgorZG9uZQorCitpZiB0ZXN0IC16ICIkY2ZfeF9hdGhlbmFfbGliIiA7IHRoZW4KKwlBQ19NU0dfRVJST1IoCitbVW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBsaW5rIEF0aGVuYSBsaWJyYXJ5ICgtbCRjZl94X2F0aGVuYV9yb290KSB3aXRoIHRlc3QgcHJvZ3JhbV0pCitmaQorCitDRl9VUFBFUihjZl94X2F0aGVuYV9MSUJTLEhBVkVfTElCXyRjZl94X2F0aGVuYSkKK0FDX0RFRklORV9VTlFVT1RFRCgkY2ZfeF9hdGhlbmFfTElCUykKK10pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgQ0ZfWF9FWFQgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDEwLzA2LzAyIDA1OjAzOjA1CitkbmwgLS0tLS0tLS0KK0FDX0RFRlVOKFtDRl9YX0VYVF0sWworQ0ZfVFJZX1BLR19DT05GSUcoWGV4dCwsWworCUFDX0NIRUNLX0xJQihYZXh0LFhleHRDcmVhdGVFeHRlbnNpb24sCisJCVtDRl9BRERfTElCKFhleHQpXSldKQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9YX1RPT0xLSVQgdmVyc2lvbjogMjMgdXBkYXRlZDogMjAxNS8wNC8xMiAxNTozOTowMAorZG5sIC0tLS0tLS0tLS0tLQorZG5sIENoZWNrIGZvciBYIFRvb2xraXQgbGlicmFyaWVzCitBQ19ERUZVTihbQ0ZfWF9UT09MS0lUXSwKK1sKK0FDX1JFUVVJUkUoW0FDX1BBVEhfWFRSQV0pCitBQ19SRVFVSVJFKFtDRl9DSEVDS19DQUNIRV0pCisKKyMgT1NYIGlzIHNjaGl6b2lkIGFib3V0IHdobyBvd25zIC91c3IvWDExIChvbGQpIHZlcnN1cyAvb3B0L1gxMSAobmV3KSwgYW5kIChhbmQKKyMgaW4gc29tZSBjYXNlcyBoYXMgaW5zdGFsbGVkIGR1bW15IGZpbGVzIGluIHRoZSBmb3JtZXIsIG90aGVyIGNhc2VzIHJlcGxhY2VkCisjIGl0IHdpdGggYSBsaW5rIHRvIHRoZSBuZXcgbG9jYXRpb24pLiAgVGhpcyBjb21wbGljYXRlcyB0aGUgY29uZmlndXJlIHNjcmlwdC4KKyMgQ2hlY2sgZm9yIHRoYXQgcGl0ZmFsbCwgYW5kIHJlY292ZXIgdXNpbmcgcGtnLWNvbmZpZworIworIyBJZiBub25lIG9mIHRoZXNlIGFyZSBzZXQsIHRoZSBjb25maWd1cmF0aW9uIGlzIGFsbW9zdCBjZXJ0YWlubHkgYnJva2VuLgoraWYgdGVzdCAteiAiJHtYX0NGTEFHU30ke1hfUFJFX0xJQlN9JHtYX0xJQlN9JHtYX0VYVFJBX0xJQlN9IgordGhlbgorCUNGX1RSWV9QS0dfQ09ORklHKHgxMSwsW0FDX01TR19XQVJOKHVuYWJsZSB0byBmaW5kIFgxMSBsaWJyYXJ5KV0pCisJQ0ZfVFJZX1BLR19DT05GSUcoaWNlLCxbQUNfTVNHX1dBUk4odW5hYmxlIHRvIGZpbmQgSUNFIGxpYnJhcnkpXSkKKwlDRl9UUllfUEtHX0NPTkZJRyhzbSwsW0FDX01TR19XQVJOKHVuYWJsZSB0byBmaW5kIFNNIGxpYnJhcnkpXSkKKwlDRl9UUllfUEtHX0NPTkZJRyh4dCwsW0FDX01TR19XQVJOKHVuYWJsZSB0byBmaW5kIFh0IGxpYnJhcnkpXSkKK2ZpCisKK2NmX2hhdmVfWF9MSUJTPW5vCisKK0NGX1RSWV9QS0dfQ09ORklHKHh0LFsKKworCWNhc2UgIngkTElCUyIgaW4KKwkoKi1sWDExKikKKwkJOzsKKwkoKikKKyMgd2UgaGF2ZSBhbiAieHQiIHBhY2thZ2UsIGJ1dCBpdCBtYXkgb21pdCBYdCdzIGRlcGVuZGVuY3kgb24gWDExCitBQ19DQUNIRV9DSEVDSyhmb3IgdXNhYmxlIFggZGVwZW5kZW5jeSxjZl9jdl94dF94MTFfY29tcGF0LFsKK0FDX1RSWV9MSU5LKFsKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorXSxbCisJaW50IHJjMSA9IFhEcmF3TGluZSgoRGlzcGxheSopIDAsIChEcmF3YWJsZSkgMCwgKEdDKSAwLCAwLCAwLCAwLCAwKTsKKwlpbnQgcmMyID0gWENsZWFyV2luZG93KChEaXNwbGF5KikgMCwgKFdpbmRvdykgMCk7CisJaW50IHJjMyA9IFhNb3ZlV2luZG93KChEaXNwbGF5KikgMCwgKFdpbmRvdykgMCwgMCwgMCk7CisJaW50IHJjNCA9IFhNb3ZlUmVzaXplV2luZG93KChEaXNwbGF5KikwLCAoV2luZG93KTAsIDAsIDAsIDAsIDApOworXSxbY2ZfY3ZfeHRfeDExX2NvbXBhdD15ZXNdLFtjZl9jdl94dF94MTFfY29tcGF0PW5vXSldKQorCQlpZiB0ZXN0ICIkY2ZfY3ZfeHRfeDExX2NvbXBhdCIgPSBubworCQl0aGVuCisJCQlDRl9WRVJCT1NFKHdvcmsgYXJvdW5kIGJyb2tlbiBYMTEgZGVwZW5kZW5jeSkKKwkJCSMgMjAxMC8xMS8xOSAtIGdvb2QgZW5vdWdoIHVudGlsIGEgd29ya2luZyBYdCBvbiBYY2IgaXMgZGVsaXZlcmVkLgorCQkJQ0ZfVFJZX1BLR19DT05GSUcoeDExLCxbQ0ZfQUREX0xJQl9BRlRFUigtbFh0LC1sWDExKV0pCisJCWZpCisJCTs7CisJZXNhYworCitBQ19DQUNIRV9DSEVDSyhmb3IgdXNhYmxlIFggVG9vbGtpdCBwYWNrYWdlLGNmX2N2X3h0X2ljZV9jb21wYXQsWworQUNfVFJZX0xJTksoWworI2luY2x1ZGUgPFgxMS9TaGVsbC5oPgorXSxbaW50IG51bSA9IEljZUNvbm5lY3Rpb25OdW1iZXIoMCkKK10sW2NmX2N2X3h0X2ljZV9jb21wYXQ9eWVzXSxbY2ZfY3ZfeHRfaWNlX2NvbXBhdD1ub10pXSkKKworCWlmIHRlc3QgIiRjZl9jdl94dF9pY2VfY29tcGF0IiA9IG5vCisJdGhlbgorCQkjIHdvcmthcm91bmQgZm9yIGJyb2tlbiAiLnBjIiBmaWxlcyB1c2VkIGZvciBYIFRvb2xraXQuCisJCWNhc2UgIngkWF9QUkVfTElCUyIgaW4KKwkJKCotbElDRSopCisJCQljYXNlICJ4JExJQlMiIGluCisJCQkoKi1sSUNFKikKKwkJCQk7OworCQkJKCopCisJCQkJQ0ZfVkVSQk9TRSh3b3JrIGFyb3VuZCBicm9rZW4gSUNFIGRlcGVuZGVuY3kpCisJCQkJQ0ZfVFJZX1BLR19DT05GSUcoaWNlLAorCQkJCQlbQ0ZfVFJZX1BLR19DT05GSUcoc20pXSwKKwkJCQkJW0NGX0FERF9MSUJfQUZURVIoLWxYdCwkWF9QUkVfTElCUyldKQorCQkJCTs7CisJCQllc2FjCisJCQk7OworCQllc2FjCisJZmkKKworCWNmX2hhdmVfWF9MSUJTPXllcworXSxbCisKKwlMREZMQUdTPSIkWF9MSUJTICRMREZMQUdTIgorCUNGX0NIRUNLX0NGTEFHUygkWF9DRkxBR1MpCisKKwlBQ19DSEVDS19GVU5DKFhPcGVuRGlzcGxheSwsWworCUFDX0NIRUNLX0xJQihYMTEsWE9wZW5EaXNwbGF5LAorCQlbQ0ZfQUREX0xJQihYMTEpXSwsCisJCVskWF9QUkVfTElCUyAkTElCUyAkWF9FWFRSQV9MSUJTXSldKQorCisJQUNfQ0hFQ0tfRlVOQyhYdEFwcEluaXRpYWxpemUsLFsKKwlBQ19DSEVDS19MSUIoWHQsIFh0QXBwSW5pdGlhbGl6ZSwKKwkJW0FDX0RFRklORShIQVZFX0xJQlhULDEsW0RlZmluZSB0byAxIGlmIHdlIGNhbiBjb21waWxlIHdpdGggdGhlIFh0IGxpYnJhcnldKQorCQkgY2ZfaGF2ZV9YX0xJQlM9WHQKKwkJIExJQlM9Ii1sWHQgJFhfUFJFX0xJQlMgJExJQlMgJFhfRVhUUkFfTElCUyJdLCwKKwkJWyRYX1BSRV9MSUJTICRMSUJTICRYX0VYVFJBX0xJQlNdKV0pCitdKQorCitpZiB0ZXN0ICRjZl9oYXZlX1hfTElCUyA9IG5vIDsgdGhlbgorCUFDX01TR19XQVJOKAorW1VuYWJsZSB0byBzdWNjZXNzZnVsbHkgbGluayBYIFRvb2xraXQgbGlicmFyeSAoLWxYdCkgd2l0aAordGVzdCBwcm9ncmFtLiAgWW91IHdpbGwgaGF2ZSB0byBjaGVjayBhbmQgYWRkIHRoZSBwcm9wZXIgbGlicmFyaWVzIGJ5IGhhbmQKK3RvIG1ha2VmaWxlLl0pCitmaQorXSlkbmwKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBDRl9fQ1VSU0VTX0hFQUQgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDEwLzEwLzIzIDE1OjU0OjQ5CitkbmwgLS0tLS0tLS0tLS0tLS0tCitkbmwgRGVmaW5lIGEgcmV1c2FibGUgY2h1bmsgd2hpY2ggaW5jbHVkZXMgPGN1cnNlcy5oPiBhbmQgPHRlcm0uaD4gd2hlbiB0aGV5CitkbmwgYXJlIGJvdGggYXZhaWxhYmxlLgorZGVmaW5lKFtDRl9fQ1VSU0VTX0hFQURdLFsKKyNpZmRlZiBIQVZFX1hDVVJTRVMKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitjaGFyICogWEN1cnNlc1Byb2dyYW1OYW1lID0gInRlc3QiOworI2Vsc2UKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlc3cvdGVybS5oPgorI2VsaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2VzL3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9URVJNX0gpCisjaW5jbHVkZSA8dGVybS5oPgorI2VuZGlmCisjZW5kaWYKK10pCmRpZmYgLS1naXQgYS90ZXN0L2JhY2tncm91bmQuYyBiL3Rlc3QvYmFja2dyb3VuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTg1MWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2JhY2tncm91bmQuYwpAQCAtMCwwICsxLDIzNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGJhY2tncm91bmQuYyx2IDEuMTUgMjAxNC8wOC8wOSAyMjozMToyMyB0b20gRXhwICQKKyAqLworCisjZGVmaW5lIE5FRURfQ09MT1JfQ09ERSAxCisjZGVmaW5lIE5FRURfQ09MT1JfTkFNRSAxCisjaW5jbHVkZSA8Y29sb3JfbmFtZS5oPgorCitzdGF0aWMgaW50IGRlZmF1bHRfYmcgPSBDT0xPUl9CTEFDSzsKK3N0YXRpYyBpbnQgZGVmYXVsdF9mZyA9IENPTE9SX1dISVRFOworCitzdGF0aWMgdm9pZAordGVzdF9iYWNrZ3JvdW5kKHZvaWQpCit7CisgICAgTkNVUlNFU19DT0xPUl9UIGYsIGI7CisgICAgaW50IHJvdzsKKyAgICBpbnQgY2hyOworCisgICAgaWYgKHBhaXJfY29udGVudCgwLCAmZiwgJmIpID09IEVSUikgeworCXByaW50dygicGFpciAwIGNvbnRhaW5zIG5vIGRhdGFcbiIpOworICAgIH0gZWxzZSB7CisJcHJpbnR3KCJwYWlyIDAgY29udGFpbnMgKCVkLCVkKVxuIiwgKGludCkgZiwgKGludCkgYik7CisgICAgfQorICAgIGdldGNoKCk7CisKKyAgICBwcmludHcoIkluaXRpYWxpemluZyBwYWlyIDEgdG8gcmVkLyVzXG4iLCBjb2xvcl9uYW1lKGRlZmF1bHRfYmcpKTsKKyAgICBpbml0X3BhaXIoMSwgQ09MT1JfUkVELCAoTkNVUlNFU19DT0xPUl9UKSBkZWZhdWx0X2JnKTsKKyAgICBia2dkc2V0KChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDEpKSk7CisgICAgcHJpbnR3KCJSRUQvQkxBQ0tcbiIpOworICAgIGdldGNoKCk7CisKKyAgICBwcmludHcoIkluaXRpYWxpemluZyBwYWlyIDIgdG8gJXMvYmx1ZVxuIiwgY29sb3JfbmFtZShkZWZhdWx0X2ZnKSk7CisgICAgaW5pdF9wYWlyKDIsIChOQ1VSU0VTX0NPTE9SX1QpIGRlZmF1bHRfZmcsIENPTE9SX0JMVUUpOworICAgIGJrZ2RzZXQoKGNodHlwZSkgKCcgJyB8IENPTE9SX1BBSVIoMikpKTsKKyAgICBwcmludHcoIlRoaXMgbGluZSBzaG91bGQgYmUgJXMvYmx1ZVxuIiwgY29sb3JfbmFtZShkZWZhdWx0X2ZnKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiSW5pdGlhbGl6aW5nIHBhaXIgMyB0byAlcy9jeWFuIChBQ1NfSExJTkUpXG4iLCBjb2xvcl9uYW1lKGRlZmF1bHRfZmcpKTsKKyAgICBpbml0X3BhaXIoMywgKE5DVVJTRVNfQ09MT1JfVCkgZGVmYXVsdF9mZywgQ09MT1JfQ1lBTik7CisgICAgcHJpbnR3KCIuLi5hbmQgZHJhd2luZyBhIGJveCB3aGljaCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgbGluZXNcbiIpOworICAgIGJrZ2RzZXQoQUNTX0hMSU5FIHwgKGF0dHJfdCkgQ09MT1JfUEFJUigzKSk7CisgICAgLyoKKyAgICAgKiBDaGFyYWN0ZXJzIGZyb20gdnQxMDAgbGluZS1kcmF3aW5nIHNob3VsZCBiZSBtYXBwZWQgdG8gbGluZS1kcmF3aW5nLAorICAgICAqIHNpbmNlIEFfQUxUQ0hBUlNFVCBpcyBzZXQgaW4gdGhlIGJhY2tncm91bmQsIGFuZCB0aGUgY2hhcmFjdGVyIHBhcnQKKyAgICAgKiBvZiB0aGUgYmFja2dyb3VuZCBpcyByZXBsYWNlZCBieSB0aGUgbm9uYmxhbmsgY2hhcmFjdGVycyB3cml0dGVuLgorICAgICAqCisgICAgICogQ2hhcmFjdGVycyBub3QgaW4gdGhlIGxpbmUtZHJhd2luZyByYW5nZSBhcmUgdXN1YWxseSBzZW50IGFzLWlzLgorICAgICAqCisgICAgICogV2l0aCBTVnI0IGN1cnNlcyBpdCBpcyBwb3NzaWJsZSB0byByZWx5IG9uIHRoaXMgdG8gbWl4IHVwcGVyY2FzZSB0ZXh0CisgICAgICogd2l0aCB0aGUgKGxvd2VyY2FzZSkgbGluZS1kcmF3aW5nIGNoYXJhY3RlcnMuICBuY3Vyc2VzIHVzZXMgc29tZSBvZgorICAgICAqIHRoZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBmb3IgZW5jb2RpbmcgdGhpY2stIGFuZCBkb3VibGUtbGluZXMuCisgICAgICovCisgICAgcm93ID0gNzsKKyAgICBtdnByaW50dyhyb3crKywgMTAsICJsIik7CisgICAgZm9yIChjaHIgPSAwOyBjaHIgPCAzMjsgKytjaHIpCisJYWRkY2goJyAnKTsKKyAgICBwcmludHcoInhcbiIpOworICAgIGNociA9IDMyOworICAgIHdoaWxlIChjaHIgPCAxMjgpIHsKKwlpZiAoKGNociAlIDMyKSA9PSAwKQorCSAgICBtdnByaW50dyhyb3crKywgMTAsICJ4Iik7CisJYWRkY2goKGNodHlwZSkgKChjaHIgPT0gMTI3KSA/ICcgJyA6IGNocikpOworCWlmICgoKytjaHIgJSAzMikgPT0gMCkKKwkgICAgcHJpbnR3KCJ4XG4iKTsKKyAgICB9CisgICAgbXZwcmludHcocm93KyssIDEwLCAibSIpOworICAgIGZvciAoY2hyID0gMDsgY2hyIDwgMzI7ICsrY2hyKQorCWFkZGNoKCcgJyk7CisgICAgcHJpbnR3KCJqXG4iKTsKKyAgICBnZXRjaCgpOworCisgICAgYmtnZHNldCgoY2h0eXBlKSAoJyAnIHwgQ09MT1JfUEFJUigwKSkpOworICAgIHByaW50dygiRGVmYXVsdCBDb2xvcnNcbiIpOworICAgIGdldGNoKCk7CisKKyAgICBwcmludHcoIlJlc2V0dGluZyBjb2xvcnMgdG8gcGFpciAxXG4iKTsKKyAgICBia2dkc2V0KChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDEpKSk7CisgICAgcHJpbnR3KCJUaGlzIGxpbmUgc2hvdWxkIGJlIHJlZC8lc1xuIiwgY29sb3JfbmFtZShkZWZhdWx0X2JnKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiU2V0dGluZyBzY3JlZW4gdG8gcGFpciAwXG4iKTsKKyAgICBia2dkKChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDApKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiU2V0dGluZyBzY3JlZW4gdG8gcGFpciAxXG4iKTsKKyAgICBia2dkKChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDEpKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiU2V0dGluZyBzY3JlZW4gdG8gcGFpciAyXG4iKTsKKyAgICBia2dkKChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDIpKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiU2V0dGluZyBzY3JlZW4gdG8gcGFpciAzXG4iKTsKKyAgICBia2dkKChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDMpKSk7CisgICAgZ2V0Y2goKTsKKworICAgIHByaW50dygiU2V0dGluZyBzY3JlZW4gdG8gcGFpciAwXG4iKTsKKyAgICBia2dkKChjaHR5cGUpICgnICcgfCBDT0xPUl9QQUlSKDApKSk7CisgICAgZ2V0Y2goKTsKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKm1zZ1tdID0KKyAgICB7CisJIlVzYWdlOiBiYWNrZ3JvdW5kIFtvcHRpb25zXSIKKwksIiIKKwksIk9wdGlvbnM6IgorI2lmIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCisJLCIgLWEgICAgICAgaW52b2tlIGFzc3VtZV9kZWZhdWx0X2NvbG9ycywgcmVwZWF0IHRvIHVzZSBpbiBpbml0X3BhaXIiCisjZW5kaWYKKwksIiAtYiBYWFggICBzcGVjaWZ5IGJhY2tncm91bmQgY29sb3IiCisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwksIiAtZCAgICAgICBpbnZva2UgdXNlX2RlZmF1bHRfY29sb3JzLCByZXBlYXQgdG8gdXNlIGluIGluaXRfcGFpciIKKyNlbmRpZgorCSwiIC1mIFhYWCAgIHNwZWNpZnkgZm9yZWdyb3VuZCBjb2xvciIKKyAgICB9OworICAgIHNpemVfdCBuOworCisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihtc2cpOyBuKyspCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnW25dKTsKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworI2lmIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCisgICAgaW50IGFfb3B0aW9uID0gMDsKKyNlbmRpZgorI2lmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCisgICAgaW50IGRfb3B0aW9uID0gMDsKKyNlbmRpZgorICAgIGludCBuOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgd2hpbGUgKChuID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhYjpkZjoiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKG4pIHsKKyNpZiBIQVZFX0FTU1VNRV9ERUZBVUxUX0NPTE9SUworCWNhc2UgJ2EnOgorCSAgICArK2Ffb3B0aW9uOworCSAgICBicmVhazsKKyNlbmRpZgorCWNhc2UgJ2InOgorCSAgICBkZWZhdWx0X2JnID0gY29sb3JfY29kZShvcHRhcmcpOworCSAgICBicmVhazsKKyNpZiBIQVZFX1VTRV9ERUZBVUxUX0NPTE9SUworCWNhc2UgJ2QnOgorCSAgICArK2Rfb3B0aW9uOworCSAgICBicmVhazsKKyNlbmRpZgorCWNhc2UgJ2YnOgorCSAgICBkZWZhdWx0X2ZnID0gY29sb3JfY29kZShvcHRhcmcpOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMgJiYgSEFWRV9BU1NVTUVfREVGQVVMVF9DT0xPUlMKKyAgICBpZiAoYV9vcHRpb24gJiYgZF9vcHRpb24pIHsKKwlmcHJpbnRmKHN0ZGVyciwgIlVzZSBlaXRoZXIgLWEgb3IgLWQgb3B0aW9uLCBidXQgbm90IGJvdGhcbiIpOworCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisgICAgfQorI2VuZGlmCisKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJc3RhcnRfY29sb3IoKTsKKworI2lmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCisJaWYgKGRfb3B0aW9uKSB7CisJICAgIHByaW50dygiVXNpbmcgZGVmYXVsdCBjb2xvcnMuLi5cbiIpOworCSAgICB1c2VfZGVmYXVsdF9jb2xvcnMoKTsKKwkgICAgaWYgKGRfb3B0aW9uID4gMSkgeworCQlkZWZhdWx0X2ZnID0gLTE7CisJCWRlZmF1bHRfYmcgPSAtMTsKKwkgICAgfQorCX0KKyNlbmRpZgorI2lmIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCisJaWYgKGFfb3B0aW9uKSB7CisJICAgIHByaW50dygiVXNpbmcgYXNzdW1lZCBjb2xvcnMgJXMvJXMuLi5cbiIsCisJCSAgIGNvbG9yX25hbWUoZGVmYXVsdF9mZyksCisJCSAgIGNvbG9yX25hbWUoZGVmYXVsdF9iZykpOworCSAgICBhc3N1bWVfZGVmYXVsdF9jb2xvcnMoZGVmYXVsdF9mZywgZGVmYXVsdF9iZyk7CisJICAgIGlmIChhX29wdGlvbiA+IDEpIHsKKwkJZGVmYXVsdF9mZyA9IC0xOworCQlkZWZhdWx0X2JnID0gLTE7CisJICAgIH0KKwl9CisjZW5kaWYKKworCXRlc3RfYmFja2dyb3VuZCgpOworCisgICAgfSBlbHNlIHsKKwlwcmludHcoIlRoaXMgZGVtbyByZXF1aXJlcyBhIGNvbG9yIHRlcm1pbmFsIik7CisJZ2V0Y2goKTsKKyAgICB9CisgICAgZW5kd2luKCk7CisKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC9ibHVlLmMgYi90ZXN0L2JsdWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGQ0OGIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9ibHVlLmMKQEAgLTAsMCArMSw0NjUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgQiBsIHUgZSAgIE0gbyBvIG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYyLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgQSBwYXRpZW5jZSBnYW1lIGJ5IFQuQS5MaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgIEludGVncmFsIHNjcmVlbiBzdXBwb3J0IGJ5IEVyaWMgUy4gUmF5bW9uZCAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQ29tcGlsZSB0aGlzIHdpdGggdGhlIGNvbW1hbmQgYGNjIC1PIGJsdWUuYyAtbGN1cnNlcyAtbyBibHVlJy4gIEZvciBiZXN0CisgKiByZXN1bHRzLCB1c2UgdGhlIG5jdXJzZXMoMykgbGlicmFyeS4gIE9uIG5vbi1JbnRlbCBtYWNoaW5lcywgU1ZyNCBjdXJzZXMgaXMKKyAqIGp1c3QgYXMgZ29vZC4KKyAqCisgKiAkSWQ6IGJsdWUuYyx2IDEuMzUgMjAxMy8wNC8yNyAxOTo0Njo1MyB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNkZWZpbmUgTk9DQVJECQkoLTEpCisKKyNkZWZpbmUgQUNFCQkwCisjZGVmaW5lIEtJTkcJCTEyCisjZGVmaW5lIFNVSVRfTEVOR1RICTEzCisKKyNkZWZpbmUgSEVBUlRTCQkwCisjZGVmaW5lIFNQQURFUwkJMQorI2RlZmluZSBESUFNT05EUwkyCisjZGVmaW5lIENMVUJTCQkzCisjZGVmaW5lIE5TVUlUUwkJNAorCisjZGVmaW5lIEdSSURfV0lEVEgJMTQJLyogICAgMTMrMSAgKi8KKyNkZWZpbmUgR1JJRF9MRU5HVEgJNTYJLyogNCooMTMrMSkgKi8KKyNkZWZpbmUgUEFDS19TSVpFCTUyCisKKyNkZWZpbmUgQkFTRVJPVwkJMQorI2RlZmluZSBQUk9NUFRST1cJMTEKKworI2RlZmluZSBSRURfT05fV0hJVEUgICAgMQorI2RlZmluZSBCTEFDS19PTl9XSElURSAgMgorI2RlZmluZSBCTFVFX09OX1dISVRFICAgMworCitzdGF0aWMgdm9pZCBkaWUoaW50IG9uc2lnKSBHQ0NfTk9SRVRVUk47CisKK3N0YXRpYyBpbnQgZGVja19zaXplID0gUEFDS19TSVpFOwkvKiBpbml0aWFsIGRlY2sgKi8KK3N0YXRpYyBpbnQgZGVja1tQQUNLX1NJWkVdOworCitzdGF0aWMgaW50IGdyaWRbR1JJRF9MRU5HVEhdOwkvKiBjYXJkIGxheW91dCBncmlkICovCitzdGF0aWMgaW50IGZyZWVwdHJbNF07CQkvKiBmcmVlIGNhcmQgc3BhY2UgcG9pbnRlcnMgKi8KKworc3RhdGljIGludCBkZWFsX251bWJlciA9IDA7CisKK3N0YXRpYyBjaHR5cGUgcmFua3NbU1VJVF9MRU5HVEhdWzJdID0KK3sKKyAgICB7JyAnLCAnQSd9LAorICAgIHsnICcsICcyJ30sCisgICAgeycgJywgJzMnfSwKKyAgICB7JyAnLCAnNCd9LAorICAgIHsnICcsICc1J30sCisgICAgeycgJywgJzYnfSwKKyAgICB7JyAnLCAnNyd9LAorICAgIHsnICcsICc4J30sCisgICAgeycgJywgJzknfSwKKyAgICB7JzEnLCAnMCd9LAorICAgIHsnICcsICdKJ30sCisgICAgeycgJywgJ1EnfSwKKyAgICB7JyAnLCAnSyd9Cit9OworCisvKiBQbGVhc2Ugbm90ZSwgdGhhdCB0aGlzIGlzIGEgYmFkIGV4YW1wbGUuCisgICBDb2xvciB2YWx1ZXMgc2hvdWxkIG5vdCBiZSBvcidlZCBpbi4gVGhpcworICAgb25seSB3b3JrcywgYmVjYXVzZSB0aGUgY2hhcmFjdGVycyB1c2VkIGhlcmUKKyAgIGFyZSBwbGFpbiBhbmQgaGF2ZSBubyBjb2xvciBhdHRyaWJ1dGUgdGhlbXNlbHZlcy4gKi8KKyNpZmRlZiBDT0xPUl9QQUlSCisjZGVmaW5lIE9SX0NPTE9SUyh2YWx1ZSxwYWlyKSAoKHZhbHVlKSB8IENPTE9SX1BBSVIocGFpcikpCisjZWxzZQorI2RlZmluZSBPUl9DT0xPUlModmFsdWUscGFpcikgKHZhbHVlKQorI2VuZGlmCisKKyNkZWZpbmUgUENfQ09MT1JTKHZhbHVlLHBhaXIpIChPUl9DT0xPUlModmFsdWUscGFpcikgfCBBX0FMVENIQVJTRVQpCisKK3N0YXRpYyBjaHR5cGUgbGV0dGVyc1s0XSA9Cit7CisgICAgT1JfQ09MT1JTKCdoJywgUkVEX09OX1dISVRFKSwJLyogaGVhcnRzICovCisgICAgT1JfQ09MT1JTKCdzJywgQkxBQ0tfT05fV0hJVEUpLAkvKiBzcGFkZXMgKi8KKyAgICBPUl9DT0xPUlMoJ2QnLCBSRURfT05fV0hJVEUpLAkvKiBkaWFtb25kcyAqLworICAgIE9SX0NPTE9SUygnYycsIEJMQUNLX09OX1dISVRFKSwJLyogY2x1YnMgKi8KK307CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKEFfQUxUQ0hBUlNFVCkgJiYgSEFWRV9USUdFVFNUUgorc3RhdGljIGNodHlwZSBnbHlwaHNbXSA9Cit7CisgICAgUENfQ09MT1JTKCdcMDAzJywgUkVEX09OX1dISVRFKSwJLyogaGVhcnRzICovCisgICAgUENfQ09MT1JTKCdcMDA2JywgQkxBQ0tfT05fV0hJVEUpLAkvKiBzcGFkZXMgKi8KKyAgICBQQ19DT0xPUlMoJ1wwMDQnLCBSRURfT05fV0hJVEUpLAkvKiBkaWFtb25kcyAqLworICAgIFBDX0NPTE9SUygnXDAwNScsIEJMQUNLX09OX1dISVRFKSwJLyogY2x1YnMgKi8KK307CisjZGVmaW5lIFVTRV9DUDQzNyAxCisjZWxzZQorI2RlZmluZSBVU0VfQ1A0MzcgMAorI2VuZGlmIC8qIF9faTM4Nl9fICovCisKK3N0YXRpYyBjaHR5cGUgKnN1aXRzID0gbGV0dGVyczsJLyogdGhpcyBtYXkgY2hhbmdlIHRvIGdseXBocyBiZWxvdyAqLworCitzdGF0aWMgdm9pZAorZGllKGludCBvbnNpZykKK3sKKyAgICAodm9pZCkgc2lnbmFsKG9uc2lnLCBTSUdfSUdOKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCitzdGF0aWMgdm9pZAoraW5pdF92YXJzKHZvaWQpCit7CisgICAgaW50IGk7CisKKyAgICBkZWNrX3NpemUgPSBQQUNLX1NJWkU7CisgICAgZm9yIChpID0gMDsgaSA8IFBBQ0tfU0laRTsgaSsrKQorCWRlY2tbaV0gPSBpOworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJZnJlZXB0cltpXSA9IGkgKiBHUklEX1dJRFRIOworfQorCitzdGF0aWMgdm9pZAorc2h1ZmZsZShpbnQgc2l6ZSkKK3sKKyAgICBpbnQgaSwgaiwgbnVtc3dhcHMsIHN3YXBudW0sIHRlbXA7CisKKyAgICBudW1zd2FwcyA9IHNpemUgKiAxMDsJLyogYW4gYXJiaXRyYXJ5IGZpZ3VyZSAqLworCisgICAgZm9yIChzd2FwbnVtID0gMDsgc3dhcG51bSA8IG51bXN3YXBzOyBzd2FwbnVtKyspIHsKKwlpID0gcmFuZCgpICUgc2l6ZTsKKwlqID0gcmFuZCgpICUgc2l6ZTsKKwl0ZW1wID0gZGVja1tpXTsKKwlkZWNrW2ldID0gZGVja1tqXTsKKwlkZWNrW2pdID0gdGVtcDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitkZWFsX2NhcmRzKHZvaWQpCit7CisgICAgaW50IHB0ciwgY2FyZCA9IDAsIHZhbHVlLCBjc3VpdCwgY3JhbmssIHN1aXQsIGFjZXNbNF07CisKKyAgICBtZW1zZXQoYWNlcywgMCwgc2l6ZW9mKGFjZXMpKTsKKyAgICBmb3IgKHN1aXQgPSBIRUFSVFM7IHN1aXQgPD0gQ0xVQlM7IHN1aXQrKykgeworCXB0ciA9IGZyZWVwdHJbc3VpdF07CisJZ3JpZFtwdHIrK10gPSBOT0NBUkQ7CS8qIDFzdCBjYXJkIHNwYWNlIGlzIGJsYW5rICovCisJd2hpbGUgKChwdHIgJSBHUklEX1dJRFRIKSAhPSAwKSB7CisJICAgIHZhbHVlID0gZGVja1tjYXJkKytdOworCSAgICBjcmFuayA9IHZhbHVlICUgU1VJVF9MRU5HVEg7CisJICAgIGNzdWl0ID0gdmFsdWUgLyBTVUlUX0xFTkdUSDsKKwkgICAgaWYgKGNyYW5rID09IEFDRSkKKwkJYWNlc1tjc3VpdF0gPSBwdHI7CisJICAgIGdyaWRbcHRyKytdID0gdmFsdWU7CisJfQorICAgIH0KKworICAgIGlmIChkZWFsX251bWJlciA9PSAxKQkvKiBzaGlmdCB0aGUgYWNlcyBkb3duIHRvIHRoZSAxc3QgY29sdW1uICovCisJZm9yIChzdWl0ID0gSEVBUlRTOyBzdWl0IDw9IENMVUJTOyBzdWl0KyspIHsKKwkgICAgZ3JpZFtzdWl0ICogR1JJRF9XSURUSF0gPSBzdWl0ICogU1VJVF9MRU5HVEg7CisJICAgIGdyaWRbYWNlc1tzdWl0XV0gPSBOT0NBUkQ7CisJICAgIGZyZWVwdHJbc3VpdF0gPSBhY2VzW3N1aXRdOworCX0KK30KKworc3RhdGljIHZvaWQKK3ByaW50Y2FyZChpbnQgdmFsdWUpCit7CisgICAgKHZvaWQpIGFkZGNoKCcgJyk7CisgICAgaWYgKHZhbHVlID09IE5PQ0FSRCkKKwkodm9pZCkgYWRkc3RyKCIgICAiKTsKKyAgICBlbHNlIHsKKwlhZGRjaChyYW5rc1t2YWx1ZSAlIFNVSVRfTEVOR1RIXVswXSB8IChjaHR5cGUpIENPTE9SX1BBSVIoQkxVRV9PTl9XSElURSkpOworCWFkZGNoKHJhbmtzW3ZhbHVlICUgU1VJVF9MRU5HVEhdWzFdIHwgKGNodHlwZSkgQ09MT1JfUEFJUihCTFVFX09OX1dISVRFKSk7CisJYWRkY2goc3VpdHNbdmFsdWUgLyBTVUlUX0xFTkdUSF0pOworICAgIH0KKyAgICAodm9pZCkgYWRkY2goJyAnKTsKK30KKworc3RhdGljIHZvaWQKK2Rpc3BsYXlfY2FyZHMoaW50IGRlYWwpCit7CisgICAgaW50IHJvdywgY2FyZDsKKworICAgIGNsZWFyKCk7CisgICAgKHZvaWQpIHByaW50dygKKwkJICAgICAiQmx1ZSBNb29uIDIuMSAtIGJ5IFRpbSBMaXN0ZXIgJiBFcmljIFJheW1vbmQgLSBEZWFsICVkLlxuIiwKKwkJICAgICBkZWFsKTsKKyAgICBmb3IgKHJvdyA9IEhFQVJUUzsgcm93IDw9IENMVUJTOyByb3crKykgeworCW1vdmUoQkFTRVJPVyArIHJvdyArIHJvdyArIDIsIDEpOworCWZvciAoY2FyZCA9IDA7IGNhcmQgPCBHUklEX1dJRFRIOyBjYXJkKyspCisJICAgIHByaW50Y2FyZChncmlkW3JvdyAqIEdSSURfV0lEVEggKyBjYXJkXSk7CisgICAgfQorCisgICAgbW92ZShQUk9NUFRST1cgKyAyLCAwKTsKKyAgICByZWZyZXNoKCk7CisjZGVmaW5lIFAoeCkJKHZvaWQpcHJpbnR3KCIlc1xuIiwgeCkKKyAgICBQKCIgICBUaGlzIDUyLWNhcmQgc29saXRhaXJlIHN0YXJ0cyB3aXRoICB0aGUgZW50aXJlIGRlY2sgc2h1ZmZsZWQgYW5kIGRlYWx0Iik7CisgICAgUCgib3V0IGluIGZvdXIgcm93cy4gIFRoZSBhY2VzIGFyZSB0aGVuIG1vdmVkIHRvIHRoZSBsZWZ0IGVuZCBvZiB0aGUgbGF5b3V0LCIpOworICAgIFAoIm1ha2luZyA0IGluaXRpYWwgZnJlZSBzcGFjZXMuICBZb3UgbWF5IG1vdmUgdG8gYSBzcGFjZSBvbmx5IHRoZSBjYXJkIHRoYXQiKTsKKyAgICBQKCJtYXRjaGVzIHRoZSBsZWZ0IG5laWdoYm9yIGluIHN1aXQsIGFuZCBpcyBvbmUgZ3JlYXRlciBpbiByYW5rLiAgS2luZ3MgYXJlIik7CisgICAgUCgiaGlnaCwgc28gbm8gY2FyZHMgbWF5IGJlIHBsYWNlZCB0byB0aGVpciByaWdodCAodGhleSBjcmVhdGUgZGVhZCBzcGFjZXMpLiIpOworICAgIFAoIiAgV2hlbiBubyBtb3ZlcyBjYW4gYmUgbWFkZSwgIGNhcmRzIHN0aWxsIG91dCBvZiBzZXF1ZW5jZSBhcmUgIHJlc2h1ZmZsZWQiKTsKKyAgICBQKCJhbmQgZGVhbHQgZmFjZSB1cCBhZnRlciB0aGUgZW5kcyBvZiB0aGUgcGFydGlhbCBzZXF1ZW5jZXMsIGxlYXZpbmcgYSBjYXJkIik7CisgICAgUCgic3BhY2UgYWZ0ZXIgZWFjaCBzZXF1ZW5jZSwgc28gdGhhdCBlYWNoIHJvdyBsb29rcyBsaWtlIGEgcGFydGlhbCBzZXF1ZW5jZSIpOworICAgIFAoImZvbGxvd2VkIGJ5IGEgc3BhY2UsIGZvbGxvd2VkIGJ5IGVub3VnaCBjYXJkcyB0byBtYWtlIGEgcm93IG9mIDE0LiAgICAgICAiKTsKKyAgICBQKCIgIEEgbW9tZW50J3MgcmVmbGVjdGlvbiB3aWxsIHNob3cgdGhhdCB0aGlzIGdhbWUgY2Fubm90IHRha2UgbW9yZSB0aGFuIDEzIik7CisgICAgUCgiZGVhbHMuIEEgZ29vZCBzY29yZSBpcyAxLTMgZGVhbHMsIDQtNyBpcyBhdmVyYWdlLCA4IG9yIG1vcmUgaXMgcG9vci4gICAgICIpOworI3VuZGVmIFAKKyAgICByZWZyZXNoKCk7Cit9CisKK3N0YXRpYyBpbnQKK2ZpbmQoaW50IGNhcmQpCit7CisgICAgaW50IGk7CisKKyAgICBpZiAoKGNhcmQgPCAwKSB8fCAoY2FyZCA+PSBQQUNLX1NJWkUpKQorCXJldHVybiAoTk9DQVJEKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgR1JJRF9MRU5HVEg7IGkrKykKKwlpZiAoZ3JpZFtpXSA9PSBjYXJkKQorCSAgICByZXR1cm4gaTsKKyAgICByZXR1cm4gKE5PQ0FSRCk7Cit9CisKK3N0YXRpYyB2b2lkCittb3ZlY2FyZChpbnQgc3JjLCBpbnQgZHN0KQoreworICAgIGdyaWRbZHN0XSA9IGdyaWRbc3JjXTsKKyAgICBncmlkW3NyY10gPSBOT0NBUkQ7CisKKyAgICBtb3ZlKEJBU0VST1cgKyAoZHN0IC8gR1JJRF9XSURUSCkgKiAyICsgMiwgKGRzdCAlIEdSSURfV0lEVEgpICogNSArIDEpOworICAgIHByaW50Y2FyZChncmlkW2RzdF0pOworCisgICAgbW92ZShCQVNFUk9XICsgKHNyYyAvIEdSSURfV0lEVEgpICogMiArIDIsIChzcmMgJSBHUklEX1dJRFRIKSAqIDUgKyAxKTsKKyAgICBwcmludGNhcmQoZ3JpZFtzcmNdKTsKKworICAgIHJlZnJlc2goKTsKK30KKworc3RhdGljIHZvaWQKK3BsYXlfZ2FtZSh2b2lkKQoreworICAgIGludCBkZWFkID0gMCwgaSwgajsKKyAgICBjaGFyIGM7CisgICAgaW50IHNlbGVjdGlvbls0XSwgY2FyZDsKKworICAgIHdoaWxlIChkZWFkIDwgNCkgeworCWRlYWQgPSAwOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkgICAgY2FyZCA9IGdyaWRbZnJlZXB0cltpXSAtIDFdOworCisJICAgIGlmICgoKGNhcmQgJSBTVUlUX0xFTkdUSCkgPT0gS0lORykKKwkJfHwKKwkJKGNhcmQgPT0gTk9DQVJEKSkKKwkJc2VsZWN0aW9uW2ldID0gTk9DQVJEOworCSAgICBlbHNlCisJCXNlbGVjdGlvbltpXSA9IGZpbmQoY2FyZCArIDEpOworCisJICAgIGlmIChzZWxlY3Rpb25baV0gPT0gTk9DQVJEKQorCQlkZWFkKys7CisJfTsKKworCWlmIChkZWFkIDwgNCkgeworCSAgICBjaGFyIGxpdmVbTlNVSVRTICsgMV0sICpscCA9IGxpdmU7CisKKwkgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlpZiAoc2VsZWN0aW9uW2ldICE9IE5PQ0FSRCkgeworCQkgICAgbW92ZShCQVNFUk9XICsgKHNlbGVjdGlvbltpXSAvIEdSSURfV0lEVEgpICogMiArIDMsCisJCQkgKHNlbGVjdGlvbltpXSAlIEdSSURfV0lEVEgpICogNSk7CisJCSAgICAodm9pZCkgcHJpbnR3KCIgICAlYyAiLCAoKmxwKysgPSAoY2hhcikgKCdhJyArIGkpKSk7CisJCX0KKwkgICAgfTsKKwkgICAgKmxwID0gJ1wwJzsKKworCSAgICBpZiAoc3RybGVuKGxpdmUpID09IDEpIHsKKwkJbW92ZShQUk9NUFRST1csIDApOworCQkodm9pZCkgcHJpbnR3KAorCQkJCSAiTWFraW5nIGZvcmNlZCBtb3Zlcy4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQlyZWZyZXNoKCk7CisJCSh2b2lkKSBzbGVlcCgxKTsKKwkJYyA9IGxpdmVbMF07CisJICAgIH0gZWxzZSB7CisJCWNoYXIgYnVmW0JVRlNJWl07CisKKwkJKHZvaWQpIHNwcmludGYoYnVmLAorCQkJICAgICAgICJUeXBlIFslc10gdG8gbW92ZSwgciB0byByZWRyYXcsIHEgb3IgSU5UUiB0byBxdWl0OiAiLAorCQkJICAgICAgIGxpdmUpOworCisJCWRvIHsKKwkJICAgIG1vdmUoUFJPTVBUUk9XLCAwKTsKKwkJICAgICh2b2lkKSBhZGRzdHIoYnVmKTsKKwkJICAgIG1vdmUoUFJPTVBUUk9XLCAoaW50KSBzdHJsZW4oYnVmKSk7CisJCSAgICBjbHJ0b2VvbCgpOworCQkgICAgKHZvaWQpIGFkZGNoKCcgJyk7CisJCX0gd2hpbGUKKwkJICAgICgoKGMgPSAoY2hhcikgZ2V0Y2goKSkgPCAnYScgfHwgYyA+ICdkJykKKwkJICAgICAmJiAoYyAhPSAncicpCisJCSAgICAgJiYgKGMgIT0gJ3EnKSk7CisJICAgIH0KKworCSAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCQlpZiAoc2VsZWN0aW9uW2pdICE9IE5PQ0FSRCkgeworCQkgICAgbW92ZShCQVNFUk9XICsgKHNlbGVjdGlvbltqXSAvIEdSSURfV0lEVEgpICogMiArIDMsCisJCQkgKHNlbGVjdGlvbltqXSAlIEdSSURfV0lEVEgpICogNSk7CisJCSAgICAodm9pZCkgcHJpbnR3KCIgICAgICIpOworCQl9CisKKwkgICAgaWYgKGMgPT0gJ3InKQorCQlkaXNwbGF5X2NhcmRzKGRlYWxfbnVtYmVyKTsKKwkgICAgZWxzZSBpZiAoYyA9PSAncScpCisJCWRpZShTSUdJTlQpOworCSAgICBlbHNlIHsKKwkJaSA9IGMgLSAnYSc7CisJCWlmIChzZWxlY3Rpb25baV0gPT0gTk9DQVJEKQorCQkgICAgYmVlcCgpOworCQllbHNlIHsKKwkJICAgIG1vdmVjYXJkKHNlbGVjdGlvbltpXSwgZnJlZXB0cltpXSk7CisJCSAgICBmcmVlcHRyW2ldID0gc2VsZWN0aW9uW2ldOworCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgICAgbW92ZShQUk9NUFRST1csIDApOworICAgICh2b2lkKSBzdGFuZG91dCgpOworICAgICh2b2lkKSBwcmludHcoIkZpbmlzaGVkIGRlYWwgJWQgLSB0eXBlIGFueSBjaGFyYWN0ZXIgdG8gY29udGludWUuLi4iLCBkZWFsX251bWJlcik7CisgICAgKHZvaWQpIHN0YW5kZW5kKCk7CisgICAgKHZvaWQpIGdldGNoKCk7Cit9CisKK3N0YXRpYyBpbnQKK2NvbGxlY3RfZGlzY2FyZHModm9pZCkKK3sKKyAgICBpbnQgcm93LCBjb2wsIGNhcmRubyA9IDAsIGZpbmlzaCwgZ3JpZG5vOworCisgICAgZm9yIChyb3cgPSBIRUFSVFM7IHJvdyA8PSBDTFVCUzsgcm93KyspIHsKKwlmaW5pc2ggPSAwOworCWZvciAoY29sID0gMTsgY29sIDwgR1JJRF9XSURUSDsgY29sKyspIHsKKwkgICAgZ3JpZG5vID0gcm93ICogR1JJRF9XSURUSCArIGNvbDsKKworCSAgICBpZiAoKGdyaWRbZ3JpZG5vXSAhPSAoZ3JpZFtncmlkbm8gLSAxXSArIDEpKSAmJiAoZmluaXNoID09IDApKSB7CisJCWZpbmlzaCA9IDE7CisJCWZyZWVwdHJbcm93XSA9IGdyaWRubzsKKwkgICAgfTsKKworCSAgICBpZiAoKGZpbmlzaCAhPSAwKSAmJiAoZ3JpZFtncmlkbm9dICE9IE5PQ0FSRCkpCisJCWRlY2tbY2FyZG5vKytdID0gZ3JpZFtncmlkbm9dOworCX0KKyAgICB9CisgICAgcmV0dXJuIGNhcmRubzsKK30KKworc3RhdGljIHZvaWQKK2dhbWVfZmluaXNoZWQoaW50IGRlYWwpCit7CisgICAgY2xlYXIoKTsKKyAgICAodm9pZCkgcHJpbnR3KCJZb3UgZmluaXNoZWQgdGhlIGdhbWUgaW4gJWQgZGVhbHMuIFRoaXMgaXMgIiwgZGVhbCk7CisgICAgKHZvaWQpIHN0YW5kb3V0KCk7CisgICAgaWYgKGRlYWwgPCAyKQorCSh2b2lkKSBhZGRzdHIoImV4Y2VsbGVudCIpOworICAgIGVsc2UgaWYgKGRlYWwgPCA0KQorCSh2b2lkKSBhZGRzdHIoImdvb2QiKTsKKyAgICBlbHNlIGlmIChkZWFsIDwgOCkKKwkodm9pZCkgYWRkc3RyKCJhdmVyYWdlIik7CisgICAgZWxzZQorCSh2b2lkKSBhZGRzdHIoInBvb3IiKTsKKyAgICAodm9pZCkgc3RhbmRlbmQoKTsKKyAgICAodm9pZCkgYWRkc3RyKCIuICAgICAgICAgIik7CisgICAgcmVmcmVzaCgpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBDQVRDSEFMTChkaWUpOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgaW5pdHNjcigpOworCisgICAgLyoKKyAgICAgKiBXZSB1c2UgQ09MT1JfR1JFRU4gYmVjYXVzZSBDT0xPUl9CTEFDSyBpcyB3aXJlZCB0byB0aGUgd3JvbmcgdGhpbmcuCisgICAgICovCisgICAgc3RhcnRfY29sb3IoKTsKKyAgICBpbml0X3BhaXIoUkVEX09OX1dISVRFLCBDT0xPUl9SRUQsIENPTE9SX1dISVRFKTsKKyAgICBpbml0X3BhaXIoQkxVRV9PTl9XSElURSwgQ09MT1JfQkxVRSwgQ09MT1JfV0hJVEUpOworICAgIGluaXRfcGFpcihCTEFDS19PTl9XSElURSwgQ09MT1JfQkxBQ0ssIENPTE9SX1dISVRFKTsKKworI2lmbmRlZiBDT0xPUl9QQUlSCisgICAgbGV0dGVyc1swXSA9IE9SX0NPTE9SUygnaCcsIFJFRF9PTl9XSElURSk7CS8qIGhlYXJ0cyAqLworICAgIGxldHRlcnNbMV0gPSBPUl9DT0xPUlMoJ3MnLCBCTEFDS19PTl9XSElURSk7CS8qIHNwYWRlcyAqLworICAgIGxldHRlcnNbMl0gPSBPUl9DT0xPUlMoJ2QnLCBSRURfT05fV0hJVEUpOwkvKiBkaWFtb25kcyAqLworICAgIGxldHRlcnNbM10gPSBPUl9DT0xPUlMoJ2MnLCBCTEFDS19PTl9XSElURSk7CS8qIGNsdWJzICovCisjaWYgVVNFX0NQNDM3CisgICAgZ2x5cGhzWzBdID0gUENfQ09MT1JTKCdcMDAzJywgUkVEX09OX1dISVRFKTsJLyogaGVhcnRzICovCisgICAgZ2x5cGhzWzFdID0gUENfQ09MT1JTKCdcMDA2JywgQkxBQ0tfT05fV0hJVEUpOwkvKiBzcGFkZXMgKi8KKyAgICBnbHlwaHNbMl0gPSBQQ19DT0xPUlMoJ1wwMDQnLCBSRURfT05fV0hJVEUpOwkvKiBkaWFtb25kcyAqLworICAgIGdseXBoc1szXSA9IFBDX0NPTE9SUygnXDAwNScsIEJMQUNLX09OX1dISVRFKTsJLyogY2x1YnMgKi8KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBVU0VfQ1A0MzcKKyAgICBpZiAodGlnZXRzdHIoInNtcGNoIikpCisJc3VpdHMgPSBnbHlwaHM7CisjZW5kaWYgLyogVVNFX0NQNDM3ICovCisKKyAgICBjYnJlYWsoKTsKKworICAgIGlmIChhcmdjID09IDIpCisJc3JhbmQoKHVuc2lnbmVkKSBhdG9pKGFyZ3ZbMV0pKTsKKyAgICBlbHNlCisJc3JhbmQoKHVuc2lnbmVkKSB0aW1lKCh0aW1lX3QgKikgMCkpOworCisgICAgaW5pdF92YXJzKCk7CisKKyAgICBkbyB7CisJZGVhbF9udW1iZXIrKzsKKwlzaHVmZmxlKGRlY2tfc2l6ZSk7CisJZGVhbF9jYXJkcygpOworCWRpc3BsYXlfY2FyZHMoZGVhbF9udW1iZXIpOworCXBsYXlfZ2FtZSgpOworICAgIH0KKyAgICB3aGlsZQorCSgoZGVja19zaXplID0gY29sbGVjdF9kaXNjYXJkcygpKSAhPSAwKTsKKworICAgIGdhbWVfZmluaXNoZWQoZGVhbF9udW1iZXIpOworCisgICAgZGllKFNJR0lOVCk7CisgICAgLypOT1RSRUFDSEVEICovCit9CisKKy8qIGJsdWUuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3Rlc3QvYnMuNiBiL3Rlc3QvYnMuNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTdmNTM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9icy42CkBAIC0wLDAgKzEsNzEgQEAKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiIENvcHlyaWdodCAoYykgMTk5OCwyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorLlwiIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisuXCIgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKy5cIiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorLlwiIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisuXCIgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKy5cIiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKy5cIiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKy5cIiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorLlwiIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisuXCIgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKy5cIiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorLlwiIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisuXCIgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisuXCIgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKy5cIiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorLlwiIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlwiICRJZDogYnMuNix2IDEuMiAyMDA2LzA0LzIyIDIyOjQyOjQ0IHRvbSBFeHAgJAorLlRIIEJBVFRMRVNISVBTIDYgIkF1ZyAyMywgMTk4OSIKKy5TSCBOQU1FCiticyBcLSBiYXR0bGVzaGlwcyBnYW1lCisuU0ggU1lOT1BTSVMKK2JhdHRsZSBbIC1iIHwgLXMgXSBbIC1jIF0KKy5TSCBERVNDUklQVElPTgorVGhpcyBwcm9ncmFtIGFsbG93cyB5b3UgdG8gcGxheSB0aGUgZmFtaWxpYXIgQmF0dGxlc2hpcHMgZ2FtZSBhZ2FpbnN0IHRoZQorY29tcHV0ZXIgb24gYSAxMHgxMCBib2FyZC4gVGhlIGludGVyZmFjZSBpcyB2aXN1YWwgYW5kIGxhcmdlbHkKK3NlbGYtZXhwbGFuYXRvcnk7IHlvdSBwbGFjZSB5b3VyIHNoaXBzIGFuZCBwaWNrIHlvdXIgc2hvdHMgYnkgbW92aW5nIHRoZQorY3Vyc29yIGFyb3VuZCB0aGUgYHNlYScgd2l0aCB0aGUgcm9ndWUvaGFjayBtb3Rpb24ga2V5cyBoamtseXVibi4KKy5QUAorTm90ZSB0aGF0IHdoZW4gc2VsZWN0aW5nIGEgc2hpcCB0byBwbGFjZSwgeW91IG11c3QgdHlwZSB0aGUgY2FwaXRhbCBsZXR0ZXIKKyh0aGVzZSBhcmUsIGFmdGVyIGFsbCwgY2FwaXRhbCBzaGlwcykuIER1cmluZyBzaGlwIHBsYWNlbWVudCwgdGhlIGByJyBjb21tYW5kCittYXkgYmUgdXNlZCB0byBpZ25vcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIHJhbmRvbWx5IHBsYWNlIHlvdXIgY3VycmVudGx5CitzZWxlY3RlZCBzaGlwLiBUaGUgYFInIGNvbW1hbmQgd2lsbCBwbGFjZSBhbGwgcmVtYWluaW5nIHNoaXBzIHJhbmRvbWx5LiBUaGUgXkwKK2NvbW1hbmQgKGZvcm0gZmVlZCwgQVNDSUkgMTIpIHdpbGwgZm9yY2UgYSBzY3JlZW4gcmVkcmF3KS4KKy5QUAorVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgY29udHJvbCBnYW1lIG1vZGVzLiAKKworLm5mCisJLWIgc2VsZWN0cyBhIGBibGl0eicgdmFyaWFudAorCS1zIHNlbGVjdHMgYSBgc2Fsdm8nIHZhcmlhbnQKKwktYyBwZXJtaXRzIHNoaXBzIHRvIGJlIHBsYWNlZCBhZGphY2VudGx5CisuZmkKKworVGhlIGBibGl0eicgdmFyaWFudCBhbGxvd3MgYSBzaWRlIHRvIHNob290IGZvciBhcyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0bworc2NvcmUgaGl0cy4KKy5QUAorVGhlIGBzYWx2bycgZ2FtZSBhbGxvd3MgYSBwbGF5ZXIgb25lIHNob3QgcGVyIHR1cm4gZm9yIGVhY2ggb2YgaGlzL2hlciBzaGlwcworc3RpbGwgYWZsb2F0LiAgVGhpcyBwdXRzIGEgcHJlbWl1bSBzY29yaW5nIGhpdHMgZWFybHkgYW5kIGtub2NraW5nIG91dCBzb21lCitzaGlwcyBhbmQgYWxzbyBtYWtlcyBtdWNoIGhhcmRlciB0aGUgc2l0dWF0aW9uIHdoZXJlIHlvdSBmYWNlIGEgc3VwZXJpb3IgZm9yY2UKK3dpdGggb25seSB5b3VyIFBULWJvYXQuCisuUFAKK05vcm1hbGx5LCBzaGlwcyBtdXN0IGJlIHNlcGFyYXRlZCBieSBhdCBsZWFzdCBvbmUgc3F1YXJlIG9mIG9wZW4gd2F0ZXIuIFRoZQorLWMgb3B0aW9uIGRpc2FibGVzIHRoaXMgY2hlY2sgYW5kIGFsbG93cyB0aGVtIHRvIGNsb3NlLXBhY2suCisuUFAKK1RoZSBhbGdvcml0aG0gdGhlIGNvbXB1dGVyIHVzZXMgb25jZSBpdCBoYXMgZm91bmQgYSBzaGlwIHRvIHNpbmsgaXMgcHJvdmFibHkKK29wdGltYWwuIFRoZSBkaXNwZXJzaW9uIGNyaXRlcmlvbiBmb3IgdGhlIHJhbmRvbS1maXJlIGFsZ29yaXRobSBtYXkgbm90IGJlLgorLlNIIEFVVEhPUlMKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBvbmUgQnJ1Y2UgSG9sbG93YXkgaW4gMTk4Ni4gU2Fsdm8gbW9kZSBhZGRlZCBieSBDaHVjayBBLgorRGVHYXVsIChjYm9zZ2QhY2FkKS4gVmlzdWFsIHVzZXIgaW50ZXJmYWNlLCBgY2xvc2VwYWNrJyBvcHRpb24sIGNvZGUgcmV3cml0ZQorYW5kIG1hbnVhbCBwYWdlIGJ5IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBBdWd1c3QgMTk4OS4KZGlmZiAtLWdpdCBhL3Rlc3QvYnMuYyBiL3Rlc3QvYnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzRmNjQzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9icy5jCkBAIC0wLDAgKzEsMTI2MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIAorICogYnMuYyAtIG9yaWdpbmFsIGF1dGhvcjogQnJ1Y2UgSG9sbG93YXkKKyAqCQlzYWx2byBvcHRpb24gYnk6IENodWNrIEEgRGVHYXVsCisgKiB3aXRoIGltcHJvdmVkIHVzZXIgaW50ZXJmYWNlLCBhdXRvY29uZmlndXJhdGlvbiBhbmQgY29kZSBjbGVhbnVwCisgKgkJYnkgRXJpYyBTLiBSYXltb25kIDxlc3JAc25hcmsudGh5cnN1cy5jb20+CisgKiB2MS4yIHdpdGggY29sb3Igc3VwcG9ydCBhbmQgbWlub3IgcG9ydGFiaWxpdHkgZml4ZXMsIE5vdmVtYmVyIDE5OTAKKyAqIHYyLjAgZmVhdHVyaW5nIHN0cmljdCBBTlNJL1BPU0lYIGNvbmZvcm1hbmNlLCBOb3ZlbWJlciAxOTkzLgorICogdjIuMSB3aXRoIG5jdXJzZXMgbW91c2Ugc3VwcG9ydCwgU2VwdGVtYmVyIDE5OTUKKyAqCisgKiAkSWQ6IGJzLmMsdiAxLjYzIDIwMTQvMDgvMDkgMjI6Mjc6MTIgdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaW5jbHVkZSA8dGltZS5oPgorCisjaWZuZGVmIFNJR0lPVAorI2RlZmluZSBTSUdJT1QgU0lHQUJSVAorI2VuZGlmCisKK3N0YXRpYyBpbnQgZ2V0Y29vcmQoaW50KTsKKworLyoKKyAqIENvbnN0YW50cyBmb3IgdHVuaW5nIHRoZSByYW5kb20tZmlyZSBhbGdvcml0aG0uIEl0IHByZWZlcnMgbW92ZXMgdGhhdAorICogZGlhZ29uYWwtc3RyaXBlIHRoZSBib2FyZCB3aXRoIGEgc3RyaXBlIHNlcGFyYXRpb24gb2Ygc3JjaHN0ZXAuIElmCisgKiBubyBzdWNoIHByZWZlcnJlZCBtb3ZlcyBhcmUgZm91bmQsIHNyY2hzdGVwIGlzIGRlY3JlbWVudGVkLgorICovCisjZGVmaW5lIEJFR0lOU1RFUAkzCS8qIGluaXRpYWwgdmFsdWUgb2Ygc3JjaHN0ZXAgKi8KKworLyogbWlzY2VsbGFuZW91cyBjb25zdGFudHMgKi8KKyNkZWZpbmUgU0hJUFRZUEVTCTUKKyNkZWZpbmUJT1RIRVIJCSgxLXR1cm4pCisjZGVmaW5lIFBMQVlFUgkJMAorI2RlZmluZSBDT01QVVRFUgkxCisjZGVmaW5lIE1BUktfSElUCSdIJworI2RlZmluZSBNQVJLX01JU1MJJ28nCisjZGVmaW5lIENUUkxDCQknXDAwMycJLyogdXNlZCBhcyB0ZXJtaW5hdGUgY29tbWFuZCAqLworI2RlZmluZSBGRgkJJ1wwMTQnCS8qIHVzZWQgYXMgcmVkcmF3IGNvbW1hbmQgKi8KKworLyogY29vcmRpbmF0ZSBoYW5kbGluZyAqLworI2RlZmluZSBCV0lEVEgJCTEwCisjZGVmaW5lIEJERVBUSAkJMTAKKworLyogZGlzcGxheSBzeW1ib2xzICovCisjZGVmaW5lIFNIT1dISVQJCScqJworI2RlZmluZSBTSE9XU1BMQVNICScgJworI2RlZmluZSBJU19TSElQKGMpCShpc3VwcGVyKFVDaGFyKGMpKSA/IFRSVUUgOiBGQUxTRSkKKworLyogaG93IHRvIHBvc2l0aW9uIHVzIG9uIHBsYXllciBib2FyZCAqLworI2RlZmluZSBQWUJBU0UJMworI2RlZmluZSBQWEJBU0UJMworI2RlZmluZSBQWSh5KQkoUFlCQVNFICsgKHkpKQorI2RlZmluZSBQWCh4KQkoUFhCQVNFICsgKHgpKjMpCisjZGVmaW5lIHBnb3RvKHksIHgpCSh2b2lkKW1vdmUoUFkoeSksIFBYKHgpKQorCisvKiBob3cgdG8gcG9zaXRpb24gdXMgb24gY3B1IGJvYXJkICovCisjZGVmaW5lIENZQkFTRQkzCisjZGVmaW5lIENYQkFTRQk0OAorI2RlZmluZSBDWSh5KQkoQ1lCQVNFICsgKHkpKQorI2RlZmluZSBDWCh4KQkoQ1hCQVNFICsgKHgpKjMpCisjZGVmaW5lIENZSU5WKHkpCSgoeSkgLSBDWUJBU0UpCisjZGVmaW5lIENYSU5WKHgpCSgoKHgpIC0gQ1hCQVNFKSAvIDMpCisjZGVmaW5lIGNnb3RvKHksIHgpCSh2b2lkKW1vdmUoQ1koeSksIENYKHgpKQorCisjZGVmaW5lIE9OQk9BUkQoeCwgeSkJKHggPj0gMCAmJiB4IDwgQldJRFRIICYmIHkgPj0gMCAmJiB5IDwgQkRFUFRIKQorCisvKiBvdGhlciBib2FyZCBsb2NhdGlvbnMgKi8KKyNkZWZpbmUgQ09MV0lEVEgJODAKKyNkZWZpbmUgUFJPTVBUTElORQkyMQkvKiBwcm9tcHQgbGluZSAqLworI2RlZmluZSBTWUJBU0UJCUNZQkFTRSArIEJERVBUSCArIDMJLyogbW92ZSBrZXkgZGlhZ3JhbSAqLworI2RlZmluZSBTWEJBU0UJCTYzCisjZGVmaW5lIE1ZQkFTRQkJU1lCQVNFIC0gMQkvKiBkaWFncmFtIGNhcHRpb24gKi8KKyNkZWZpbmUgTVhCQVNFCQk2NAorI2RlZmluZSBIWUJBU0UJCVNZQkFTRSAtIDEJLyogaGVscCBhcmVhICovCisjZGVmaW5lIEhYQkFTRQkJMAorCisvKiB0aGlzIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIGlmIEJXSURUSCBjaGFuZ2VzICovCitzdGF0aWMgY2hhciBudW1iZXJzW10gPSAiICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSI7CisKK3N0YXRpYyBjaGFyIGNhcnJpZXJbXSA9ICJBaXJjcmFmdCBDYXJyaWVyIjsKK3N0YXRpYyBjaGFyIGJhdHRsZVtdID0gIkJhdHRsZXNoaXAiOworc3RhdGljIGNoYXIgc3ViW10gPSAiU3VibWFyaW5lIjsKK3N0YXRpYyBjaGFyIGRlc3Ryb3lbXSA9ICJEZXN0cm95ZXIiOworc3RhdGljIGNoYXIgcHRib2F0W10gPSAiUFQgQm9hdCI7CisKK3N0YXRpYyBjaGFyICp5b3VyX25hbWU7CitzdGF0aWMgY2hhciBkZnRuYW1lW10gPSAic3RyYW5nZXIiOworCisvKiBkaXJlY3Rpb24gY29uc3RhbnRzICovCisjZGVmaW5lIEUJMAorI2RlZmluZSBTRQkxCisjZGVmaW5lIFMJMgorI2RlZmluZSBTVwkzCisjZGVmaW5lIFcJNAorI2RlZmluZSBOVwk1CisjZGVmaW5lIE4JNgorI2RlZmluZSBORQk3CitzdGF0aWMgaW50IHhpbmNyWzhdID0KK3sxLCAxLCAwLCAtMSwgLTEsIC0xLCAwLCAxfTsKK3N0YXRpYyBpbnQgeWluY3JbOF0gPQorezAsIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTF9OworCisvKiBjdXJyZW50IHNoaXAgcG9zaXRpb24gYW5kIGRpcmVjdGlvbiAqLworc3RhdGljIGludCBjdXJ4ID0gKEJXSURUSCAvIDIpOworc3RhdGljIGludCBjdXJ5ID0gKEJERVBUSCAvIDIpOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY2hhciAqbmFtZTsJCQkvKiBuYW1lIG9mIHRoZSBzaGlwIHR5cGUgKi8KKyAgICBpbnQgaGl0czsJCQkvKiBob3cgbWFueSB0aW1lcyBoYXMgdGhpcyBzaGlwIGJlZW4gaGl0PyAqLworICAgIGNoYXIgc3ltYm9sOwkJLyogc3ltYm9sIGZvciBnYW1lIHB1cnBvc2VzICovCisgICAgaW50IGxlbmd0aDsJCQkvKiBsZW5ndGggb2Ygc2hpcCAqLworICAgIGludCB4LCB5OwkJCS8qIGNvb3JkaW5hdGVzIG9mIHNoaXAgc3RhcnQgcG9pbnQgKi8KKyAgICBpbnQgZGlyOwkJCS8qIGRpcmVjdGlvbiBvZiBgYm93JyAqLworICAgIGJvb2wgcGxhY2VkOwkJLyogaGFzIGl0IGJlZW4gcGxhY2VkIG9uIHRoZSBib2FyZD8gKi8KK30gc2hpcF90OworCitzdGF0aWMgYm9vbCBjaGVja3BsYWNlKGludCBiLCBzaGlwX3QgKiBzcywgaW50IHZpcyk7CisKKyNkZWZpbmUgU0hJUElUKG5hbWUsIHN5bWJvbCwgbGVuZ3RoKSB7IG5hbWUsIDAsIHN5bWJvbCwgbGVuZ3RoLCAwLDAsIDAsIEZBTFNFIH0KKworc3RhdGljIHNoaXBfdCBwbHlzaGlwW1NISVBUWVBFU10gPQoreworICAgIFNISVBJVChjYXJyaWVyLCAnQScsIDUpLAorICAgIFNISVBJVChiYXR0bGUsICdCJywgNCksCisgICAgU0hJUElUKGRlc3Ryb3ksICdEJywgMyksCisgICAgU0hJUElUKHN1YiwgJ1MnLCAzKSwKKyAgICBTSElQSVQocHRib2F0LCAnUCcsIDIpLAorfTsKKworc3RhdGljIHNoaXBfdCBjcHVzaGlwW1NISVBUWVBFU10gPQoreworICAgIFNISVBJVChjYXJyaWVyLCAnQScsIDUpLAorICAgIFNISVBJVChiYXR0bGUsICdCJywgNCksCisgICAgU0hJUElUKGRlc3Ryb3ksICdEJywgMyksCisgICAgU0hJUElUKHN1YiwgJ1MnLCAzKSwKKyAgICBTSElQSVQocHRib2F0LCAnUCcsIDIpLAorfTsKKworLyogIkhpdHMiIGJvYXJkLCBhbmQgbWFpbiBib2FyZC4gKi8KK3N0YXRpYyBjaGFyIGhpdHNbMl1bQldJRFRIXVtCREVQVEhdOworc3RhdGljIGNoYXIgYm9hcmRbMl1bQldJRFRIXVtCREVQVEhdOworCitzdGF0aWMgaW50IHR1cm47CQkvKiAwPXBsYXllciwgMT1jb21wdXRlciAqLworc3RhdGljIGludCBwbHl3b24gPSAwLCBjcHV3b24gPSAwOwkvKiBIb3cgbWFueSBnYW1lcyBoYXMgZWFjaCB3b24/ICovCisKK3N0YXRpYyBpbnQgc2Fsdm8sIGJsaXR6LCBjbG9zZXBhY2s7CisKKyNkZWZpbmUJUFIJKHZvaWQpYWRkc3RyCisKK3N0YXRpYyB2b2lkIHVuaW5pdGdhbWUoaW50IHNpZykgR0NDX05PUkVUVVJOOworCitzdGF0aWMgdm9pZAordW5pbml0Z2FtZShpbnQgc2lnIEdDQ19VTlVTRUQpCisvKiBlbmQgdGhlIGdhbWUsIGVpdGhlciBub3JtYWxseSBvciBkdWUgdG8gc2lnbmFsICovCit7CisgICAgY2xlYXIoKTsKKyAgICAodm9pZCkgcmVmcmVzaCgpOworICAgICh2b2lkKSByZXNldF9zaGVsbF9tb2RlKCk7CisgICAgKHZvaWQpIGVjaG8oKTsKKyAgICAodm9pZCkgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oc2lnID8gRVhJVF9GQUlMVVJFIDogRVhJVF9TVUNDRVNTKTsKK30KKworc3RhdGljIHZvaWQKK2Fubm91bmNlb3B0cyh2b2lkKQorLyogYW5ub3VuY2Ugd2hpY2ggZ2FtZSBvcHRpb25zIGFyZSBlbmFibGVkICovCit7CisgICAgaWYgKHNhbHZvIHx8IGJsaXR6IHx8IGNsb3NlcGFjaykgeworCSh2b2lkKSBwcmludHcoIlBsYXlpbmcgb3B0aW9uYWwgZ2FtZSAoIik7CisJaWYgKHNhbHZvKQorCSAgICAodm9pZCkgcHJpbnR3KCJzYWx2bywgIik7CisJZWxzZQorCSAgICAodm9pZCkgcHJpbnR3KCJub3NhbHZvLCAiKTsKKwlpZiAoYmxpdHopCisJICAgICh2b2lkKSBwcmludHcoImJsaXR6ICIpOworCWVsc2UKKwkgICAgKHZvaWQpIHByaW50dygibm9ibGl0eiwgIik7CisJaWYgKGNsb3NlcGFjaykKKwkgICAgKHZvaWQpIHByaW50dygiY2xvc2VwYWNrKSIpOworCWVsc2UKKwkgICAgKHZvaWQpIHByaW50dygibm9jbG9zZXBhY2spIik7CisgICAgfSBlbHNlCisJKHZvaWQpIHByaW50dygKKwkJCSAiUGxheWluZyBzdGFuZGFyZCBnYW1lIChub2JsaXR6LCBub3NhbHZvLCBub2Nsb3NlcGFjaykiKTsKK30KKworc3RhdGljIHZvaWQKK2ludHJvKHZvaWQpCit7CisgICAgY2hhciAqdG1wbmFtZTsKKworICAgIHNyYW5kKCh1bnNpZ25lZCkgKHRpbWUoMEwpICsgZ2V0cGlkKCkpKTsJLyogS2ljayB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKi8KKworICAgIENBVENIQUxMKHVuaW5pdGdhbWUpOworCisgICAgaWYgKCh0bXBuYW1lID0gZ2V0bG9naW4oKSkgIT0gMCAmJgorCSh5b3VyX25hbWUgPSBzdHJkdXAodG1wbmFtZSkpICE9IDApIHsKKwl5b3VyX25hbWVbMF0gPSAoY2hhcikgdG91cHBlcihVQ2hhcih5b3VyX25hbWVbMF0pKTsKKyAgICB9IGVsc2UgeworCXlvdXJfbmFtZSA9IGRmdG5hbWU7CisgICAgfQorCisgICAgKHZvaWQpIGluaXRzY3IoKTsKKyAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKyAgICAodm9pZCkgZGVmX3Byb2dfbW9kZSgpOworICAgICh2b2lkKSBub25sKCk7CisgICAgKHZvaWQpIGNicmVhaygpOworICAgICh2b2lkKSBub2VjaG8oKTsKKworI2lmZGVmIFBFTkdVSU4KKyAgICAodm9pZCkgY2xlYXIoKTsKKyAgICBNdkFkZFN0cig0LCAyOSwgIldlbGNvbWUgdG8gQmF0dGxlc2hpcCEiKTsKKyAgICAodm9pZCkgbW92ZSg4LCAwKTsKKyAgICBQUigiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuIik7CisgICAgUFIoIiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgXFwgXFxcbiIpOworICAgIFBSKCIgICAgICAgICAgICAgICAgICAgICAgICAgIFxcIFxcICAgICAgICAgICAgICAgICAgIFxcIFxcIFxcX19fX19fX19fX19fX1xuIik7CisgICAgUFIoIiAgICAgICAgICAgICAgICAgICAgICAgICBcXCBcXCBcXF9fX19fX19fX19fX18gICAgICBcXCBcXC8gICAgICAgICAgICB8XG4iKTsKKyAgICBQUigiICAgICAgICAgICAgICAgICAgICAgICAgICBcXCBcXC8gICAgICAgICAgICAgXFwgICAgICBcXC8gICAgICAgICAgICAgfFxuIik7CisgICAgUFIoIiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcLyAgICAgICAgICAgICAgIFxcX19fX18vICAgICAgICAgICAgICB8X19cbiIpOworICAgIFBSKCIgICAgICAgICAgIF9fX19fX19fX19fX19fX18vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuIik7CisgICAgUFIoIiAgICAgICAgICAgXFwgIFMuUy4gUGVuZ3VpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuIik7CisgICAgUFIoIiAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXG4iKTsKKyAgICBQUigiICAgICAgICAgICAgIFxcX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fL1xuIik7CisKKyAgICBNdkFkZFN0cigyMiwgMjcsICJIaXQgYW55IGtleSB0byBjb250aW51ZS4uLiIpOworICAgICh2b2lkKSByZWZyZXNoKCk7CisgICAgKHZvaWQpIGdldGNoKCk7CisjZW5kaWYgLyogUEVOR1VJTiAqLworCisjaWZkZWYgQV9DT0xPUgorICAgIHN0YXJ0X2NvbG9yKCk7CisKKyAgICBpbml0X3BhaXIoQ09MT1JfQkxBQ0ssIENPTE9SX0JMQUNLLCBDT0xPUl9CTEFDSyk7CisgICAgaW5pdF9wYWlyKENPTE9SX0dSRUVOLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOworICAgIGluaXRfcGFpcihDT0xPUl9SRUQsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworICAgIGluaXRfcGFpcihDT0xPUl9DWUFOLCBDT0xPUl9DWUFOLCBDT0xPUl9CTEFDSyk7CisgICAgaW5pdF9wYWlyKENPTE9SX1dISVRFLCBDT0xPUl9XSElURSwgQ09MT1JfQkxBQ0spOworICAgIGluaXRfcGFpcihDT0xPUl9NQUdFTlRBLCBDT0xPUl9NQUdFTlRBLCBDT0xPUl9CTEFDSyk7CisgICAgaW5pdF9wYWlyKENPTE9SX0JMVUUsIENPTE9SX0JMVUUsIENPTE9SX0JMQUNLKTsKKyAgICBpbml0X3BhaXIoQ09MT1JfWUVMTE9XLCBDT0xPUl9ZRUxMT1csIENPTE9SX0JMQUNLKTsKKyNlbmRpZiAvKiBBX0NPTE9SICovCisKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKyAgICAodm9pZCkgbW91c2VtYXNrKEJVVFRPTjFfQ0xJQ0tFRCwgKG1tYXNrX3QgKikgTlVMTCk7CisjZW5kaWYgLyogTkNVUlNFU19NT1VTRV9WRVJTSU9OICovCit9CisKKy8qIFZBUkFSR1MxICovCitzdGF0aWMgdm9pZAorcHJvbXB0KGludCBuLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmYsIGNvbnN0IGNoYXIgKnMpCisvKiBwcmludCBhIG1lc3NhZ2UgYXQgdGhlIHByb21wdCBsaW5lICovCit7CisgICAgKHZvaWQpIG1vdmUoUFJPTVBUTElORSArIG4sIDApOworICAgICh2b2lkKSBjbHJ0b2VvbCgpOworICAgICh2b2lkKSBwcmludHcoZiwgcyk7CisgICAgKHZvaWQpIHJlZnJlc2goKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yKE5DVVJTRVNfQ09OU1QgY2hhciAqcykKK3sKKyAgICAodm9pZCkgbW92ZShQUk9NUFRMSU5FICsgMiwgMCk7CisgICAgKHZvaWQpIGNscnRvZW9sKCk7CisgICAgaWYgKHMpIHsKKwkodm9pZCkgYWRkc3RyKHMpOworCSh2b2lkKSBiZWVwKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcGxhY2VzaGlwKGludCBiLCBzaGlwX3QgKiBzcywgaW50IHZpcykKK3sKKyAgICBpbnQgbDsKKworICAgIGZvciAobCA9IDA7IGwgPCBzcy0+bGVuZ3RoOyArK2wpIHsKKwlpbnQgbmV3eCA9IHNzLT54ICsgbCAqIHhpbmNyW3NzLT5kaXJdOworCWludCBuZXd5ID0gc3MtPnkgKyBsICogeWluY3Jbc3MtPmRpcl07CisKKwlib2FyZFtiXVtuZXd4XVtuZXd5XSA9IHNzLT5zeW1ib2w7CisJaWYgKHZpcykgeworCSAgICBwZ290byhuZXd5LCBuZXd4KTsKKwkgICAgKHZvaWQpIGFkZGNoKChjaHR5cGUpIHNzLT5zeW1ib2wpOworCX0KKyAgICB9CisgICAgc3MtPmhpdHMgPSAwOworfQorCitzdGF0aWMgaW50CitybmQoaW50IG4pCit7CisgICAgcmV0dXJuICgoKHJhbmQoKSAmIDB4N0ZGRikgJSBuKSk7Cit9CisKK3N0YXRpYyB2b2lkCityYW5kb21wbGFjZShpbnQgYiwgc2hpcF90ICogc3MpCisvKiBnZW5lcmF0ZSBhIHZhbGlkIHJhbmRvbSBzaGlwIHBsYWNlbWVudCBpbnRvIHB4LHB5ICovCit7CisKKyAgICBkbyB7CisJc3MtPmRpciA9IHJuZCgyKSA/IEUgOiBTOworCXNzLT54ID0gcm5kKEJXSURUSCAtIChzcy0+ZGlyID09IEUgPyBzcy0+bGVuZ3RoIDogMCkpOworCXNzLT55ID0gcm5kKEJERVBUSCAtIChzcy0+ZGlyID09IFMgPyBzcy0+bGVuZ3RoIDogMCkpOworICAgIH0gd2hpbGUKKwkoIWNoZWNrcGxhY2UoYiwgc3MsIEZBTFNFKSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0Z2FtZSh2b2lkKQoreworICAgIGludCBpLCBqLCB1bnBsYWNlZDsKKyAgICBzaGlwX3QgKnNzOworCisgICAgKHZvaWQpIGNsZWFyKCk7CisgICAgTXZBZGRTdHIoMCwgMzUsICJCQVRUTEVTSElQUyIpOworICAgICh2b2lkKSBtb3ZlKFBST01QVExJTkUgKyAyLCAwKTsKKyAgICBhbm5vdW5jZW9wdHMoKTsKKworICAgIG1lbXNldChib2FyZCwgMCwgc2l6ZW9mKGNoYXIpICogQldJRFRIICogQkRFUFRIICogMik7CisgICAgbWVtc2V0KGhpdHMsIDAsIHNpemVvZihjaGFyKSAqIEJXSURUSCAqIEJERVBUSCAqIDIpOworICAgIGZvciAoaSA9IDA7IGkgPCBTSElQVFlQRVM7IGkrKykgeworCXNzID0gY3B1c2hpcCArIGk7CisKKwlzcy0+eCA9CisJICAgIHNzLT55ID0KKwkgICAgc3MtPmRpciA9CisJICAgIHNzLT5oaXRzID0gMDsKKwlzcy0+cGxhY2VkID0gRkFMU0U7CisKKwlzcyA9IHBseXNoaXAgKyBpOworCisJc3MtPnggPQorCSAgICBzcy0+eSA9CisJICAgIHNzLT5kaXIgPQorCSAgICBzcy0+aGl0cyA9IDA7CisJc3MtPnBsYWNlZCA9IEZBTFNFOworICAgIH0KKworICAgIC8qIGRyYXcgZW1wdHkgYm9hcmRzICovCisgICAgTXZBZGRTdHIoUFlCQVNFIC0gMiwgUFhCQVNFICsgNSwgIk1haW4gQm9hcmQiKTsKKyAgICBNdkFkZFN0cihQWUJBU0UgLSAxLCBQWEJBU0UgLSAzLCBudW1iZXJzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgQkRFUFRIOyArK2kpIHsKKwlNdkFkZENoKFBZQkFTRSArIGksIFBYQkFTRSAtIDMsIChjaHR5cGUpIChpICsgJ0EnKSk7CisjaWZkZWYgQV9DT0xPUgorCWlmIChoYXNfY29sb3JzKCkpCisJICAgIGF0dHJvbihDT0xPUl9QQUlSKENPTE9SX0JMVUUpKTsKKyNlbmRpZiAvKiBBX0NPTE9SICovCisJKHZvaWQpIGFkZGNoKCcgJyk7CisJZm9yIChqID0gMDsgaiA8IEJXSURUSDsgaisrKQorCSAgICAodm9pZCkgYWRkc3RyKCIgLiAiKTsKKyNpZmRlZiBBX0NPTE9SCisJKHZvaWQpIGF0dHJzZXQoMCk7CisjZW5kaWYgLyogQV9DT0xPUiAqLworCSh2b2lkKSBhZGRjaCgnICcpOworCSh2b2lkKSBhZGRjaCgoY2h0eXBlKSAoaSArICdBJykpOworICAgIH0KKyAgICBNdkFkZFN0cihQWUJBU0UgKyBCREVQVEgsIFBYQkFTRSAtIDMsIG51bWJlcnMpOworICAgIE12QWRkU3RyKENZQkFTRSAtIDIsIENYQkFTRSArIDcsICJIaXQvTWlzcyBCb2FyZCIpOworICAgIE12QWRkU3RyKENZQkFTRSAtIDEsIENYQkFTRSAtIDMsIG51bWJlcnMpOworICAgIGZvciAoaSA9IDA7IGkgPCBCREVQVEg7ICsraSkgeworCU12QWRkQ2goQ1lCQVNFICsgaSwgQ1hCQVNFIC0gMywgKGNodHlwZSkgKGkgKyAnQScpKTsKKyNpZmRlZiBBX0NPTE9SCisJaWYgKGhhc19jb2xvcnMoKSkKKwkgICAgYXR0cm9uKENPTE9SX1BBSVIoQ09MT1JfQkxVRSkpOworI2VuZGlmIC8qIEFfQ09MT1IgKi8KKwkodm9pZCkgYWRkY2goJyAnKTsKKwlmb3IgKGogPSAwOyBqIDwgQldJRFRIOyBqKyspCisJICAgICh2b2lkKSBhZGRzdHIoIiAuICIpOworI2lmZGVmIEFfQ09MT1IKKwkodm9pZCkgYXR0cnNldCgwKTsKKyNlbmRpZiAvKiBBX0NPTE9SICovCisJKHZvaWQpIGFkZGNoKCcgJyk7CisJKHZvaWQpIGFkZGNoKChjaHR5cGUpIChpICsgJ0EnKSk7CisgICAgfQorCisgICAgTXZBZGRTdHIoQ1lCQVNFICsgQkRFUFRILCBDWEJBU0UgLSAzLCBudW1iZXJzKTsKKworICAgIE12UHJpbnR3KEhZQkFTRSwgSFhCQVNFLAorCSAgICAgIlRvIHBvc2l0aW9uIHlvdXIgc2hpcHM6IG1vdmUgdGhlIGN1cnNvciB0byBhIHNwb3QsIHRoZW4iKTsKKyAgICBNdlByaW50dyhIWUJBU0UgKyAxLCBIWEJBU0UsCisJICAgICAidHlwZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGEgc2hpcCB0eXBlIHRvIHNlbGVjdCBpdCwgdGhlbiIpOworICAgIE12UHJpbnR3KEhZQkFTRSArIDIsIEhYQkFTRSwKKwkgICAgICJ0eXBlIGEgZGlyZWN0aW9uIChbaGprbF0gb3IgWzQ4NjJdKSwgaW5kaWNhdGluZyBob3cgdGhlIik7CisgICAgTXZQcmludHcoSFlCQVNFICsgMywgSFhCQVNFLAorCSAgICAgInNoaXAgc2hvdWxkIGJlIHBvaW50ZWQuIFlvdSBtYXkgYWxzbyB0eXBlIGEgc2hpcCBsZXR0ZXIiKTsKKyAgICBNdlByaW50dyhIWUJBU0UgKyA0LCBIWEJBU0UsCisJICAgICAiZm9sbG93ZWQgYnkgYHInIHRvIHBvc2l0aW9uIGl0IHJhbmRvbWx5LCBvciB0eXBlIGBSJyB0byIpOworICAgIE12UHJpbnR3KEhZQkFTRSArIDUsIEhYQkFTRSwKKwkgICAgICJwbGFjZSBhbGwgcmVtYWluaW5nIHNoaXBzIHJhbmRvbWx5LiIpOworCisgICAgTXZBZGRTdHIoTVlCQVNFLCBNWEJBU0UsICJBaW1pbmcga2V5czoiKTsKKyAgICBNdkFkZFN0cihTWUJBU0UsIFNYQkFTRSwgInkgayB1ICAgIDcgOCA5Iik7CisgICAgTXZBZGRTdHIoU1lCQVNFICsgMSwgU1hCQVNFLCAiIFxcfC8gICAgICBcXHwvICIpOworICAgIE12QWRkU3RyKFNZQkFTRSArIDIsIFNYQkFTRSwgImgtKy1sICAgIDQtKy02Iik7CisgICAgTXZBZGRTdHIoU1lCQVNFICsgMywgU1hCQVNFLCAiIC98XFwgICAgICAvfFxcICIpOworICAgIE12QWRkU3RyKFNZQkFTRSArIDQsIFNYQkFTRSwgImIgaiBuICAgIDEgMiAzIik7CisKKyAgICAvKiBoYXZlIHRoZSBjb21wdXRlciBwbGFjZSBzaGlwcyAqLworICAgIGZvciAoc3MgPSBjcHVzaGlwOyBzcyA8IGNwdXNoaXAgKyBTSElQVFlQRVM7IHNzKyspIHsKKwlyYW5kb21wbGFjZShDT01QVVRFUiwgc3MpOworCXBsYWNlc2hpcChDT01QVVRFUiwgc3MsIEZBTFNFKTsKKyAgICB9CisKKyAgICBkbyB7CisJY2hhciBjLCBkb2NrZWRbU0hJUFRZUEVTICsgMl0sICpjcCA9IGRvY2tlZDsKKworCXNzID0gKHNoaXBfdCAqKSBOVUxMOworCisJLyogZmlndXJlIHdoaWNoIHNoaXBzIHN0aWxsIHdhaXQgdG8gYmUgcGxhY2VkICovCisJKmNwKysgPSAnUic7CisJZm9yIChpID0gMDsgaSA8IFNISVBUWVBFUzsgaSsrKQorCSAgICBpZiAoIXBseXNoaXBbaV0ucGxhY2VkKQorCQkqY3ArKyA9IHBseXNoaXBbaV0uc3ltYm9sOworCSpjcCA9ICdcMCc7CisKKwkvKiBnZXQgYSBjb21tYW5kIGxldHRlciAqLworCXByb21wdCgxLCAiVHlwZSBvbmUgb2YgWyVzXSB0byBwaWNrIGEgc2hpcC4iLCBkb2NrZWQgKyAxKTsKKwlkbyB7CisJICAgIGMgPSAoY2hhcikgZ2V0Y29vcmQoUExBWUVSKTsKKwl9IHdoaWxlCisJICAgICghKHN0cmNocikgKGRvY2tlZCwgYykpOworCisJaWYgKGMgPT0gJ1InKQorCSAgICAodm9pZCkgdW5nZXRjaCgnUicpOworCWVsc2UgeworCSAgICAvKiBtYXAgdGhhdCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHN5bWJvbCAqLworCSAgICBmb3IgKHNzID0gcGx5c2hpcDsgc3MgPCBwbHlzaGlwICsgU0hJUFRZUEVTOyBzcysrKQorCQlpZiAoc3MtPnN5bWJvbCA9PSBjKQorCQkgICAgYnJlYWs7CisKKwkgICAgcHJvbXB0KDEsICJUeXBlIG9uZSBvZiBbaGprbHJSXSB0byBwbGFjZSB5b3VyICVzLiIsIHNzLT5uYW1lKTsKKwkgICAgcGdvdG8oY3VyeSwgY3VyeCk7CisJfQorCisJZG8geworCSAgICBjID0gKGNoYXIpIGdldGNoKCk7CisJfSB3aGlsZQorCSAgICAoIShzdHJjaHIoImhqa2w4NDYyclIiLCBjKSB8fCBjID09IEZGKSk7CisKKwlpZiAoYyA9PSBGRikgeworCSAgICAodm9pZCkgY2xlYXJvayhzdGRzY3IsIFRSVUUpOworCSAgICAodm9pZCkgcmVmcmVzaCgpOworCX0gZWxzZSBpZiAoc3MgPT0gMCkgeworCSAgICBiZWVwKCk7CQkvKiBzaW1wbGUgdG8gdmVyaWZ5LCB1bmxpa2VseSB0byBoYXBwZW4gKi8KKwl9IGVsc2UgaWYgKGMgPT0gJ3InKSB7CisJICAgIHByb21wdCgxLCAiUmFuZG9tLXBsYWNpbmcgeW91ciAlcyIsIHNzLT5uYW1lKTsKKwkgICAgcmFuZG9tcGxhY2UoUExBWUVSLCBzcyk7CisJICAgIHBsYWNlc2hpcChQTEFZRVIsIHNzLCBUUlVFKTsKKwkgICAgZXJyb3IoKGNoYXIgKikgTlVMTCk7CisJICAgIHNzLT5wbGFjZWQgPSBUUlVFOworCX0gZWxzZSBpZiAoYyA9PSAnUicpIHsKKwkgICAgcHJvbXB0KDEsICJQbGFjaW5nIHRoZSByZXN0IG9mIHlvdXIgZmxlZXQgYXQgcmFuZG9tLi4uIiwgIiIpOworCSAgICBmb3IgKHNzID0gcGx5c2hpcDsgc3MgPCBwbHlzaGlwICsgU0hJUFRZUEVTOyBzcysrKQorCQlpZiAoIXNzLT5wbGFjZWQpIHsKKwkJICAgIHJhbmRvbXBsYWNlKFBMQVlFUiwgc3MpOworCQkgICAgcGxhY2VzaGlwKFBMQVlFUiwgc3MsIFRSVUUpOworCQkgICAgc3MtPnBsYWNlZCA9IFRSVUU7CisJCX0KKwkgICAgZXJyb3IoKGNoYXIgKikgTlVMTCk7CisJfSBlbHNlIGlmIChzdHJjaHIoImhqa2w4NDYyIiwgYykpIHsKKwkgICAgc3MtPnggPSBjdXJ4OworCSAgICBzcy0+eSA9IGN1cnk7CisKKwkgICAgc3dpdGNoIChjKSB7CisJICAgIGNhc2UgJ2snOgorCSAgICBjYXNlICc4JzoKKwkJc3MtPmRpciA9IE47CisJCWJyZWFrOworCSAgICBjYXNlICdqJzoKKwkgICAgY2FzZSAnMic6CisJCXNzLT5kaXIgPSBTOworCQlicmVhazsKKwkgICAgY2FzZSAnaCc6CisJICAgIGNhc2UgJzQnOgorCQlzcy0+ZGlyID0gVzsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2wnOgorCSAgICBjYXNlICc2JzoKKwkJc3MtPmRpciA9IEU7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgaWYgKGNoZWNrcGxhY2UoUExBWUVSLCBzcywgVFJVRSkpIHsKKwkJcGxhY2VzaGlwKFBMQVlFUiwgc3MsIFRSVUUpOworCQllcnJvcigoY2hhciAqKSBOVUxMKTsKKwkJc3MtPnBsYWNlZCA9IFRSVUU7CisJICAgIH0KKwl9CisKKwlmb3IgKHVucGxhY2VkID0gaSA9IDA7IGkgPCBTSElQVFlQRVM7IGkrKykKKwkgICAgdW5wbGFjZWQgKz0gIXBseXNoaXBbaV0ucGxhY2VkOworICAgIH0gd2hpbGUKKwkodW5wbGFjZWQpOworCisgICAgdHVybiA9IHJuZCgyKTsKKworICAgIE12UHJpbnR3KEhZQkFTRSwgSFhCQVNFLAorCSAgICAgIlRvIGZpcmUsIG1vdmUgdGhlIGN1cnNvciB0byB5b3VyIGNob3NlbiBhaW1pbmcgcG9pbnQgICAiKTsKKyAgICBNdlByaW50dyhIWUJBU0UgKyAxLCBIWEJBU0UsCisJICAgICAiYW5kIHN0cmlrZSBhbnkga2V5IG90aGVyIHRoYW4gYSBtb3Rpb24ga2V5LiAgICAgICAgICAgICIpOworICAgIE12UHJpbnR3KEhZQkFTRSArIDIsIEhYQkFTRSwKKwkgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisgICAgTXZQcmludHcoSFlCQVNFICsgMywgSFhCQVNFLAorCSAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKKyAgICBNdlByaW50dyhIWUJBU0UgKyA0LCBIWEJBU0UsCisJICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworICAgIE12UHJpbnR3KEhZQkFTRSArIDUsIEhYQkFTRSwKKwkgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisKKyAgICAodm9pZCkgcHJvbXB0KDAsICJQcmVzcyBhbnkga2V5IHRvIHN0YXJ0Li4uIiwgIiIpOworICAgICh2b2lkKSBnZXRjaCgpOworfQorCitzdGF0aWMgaW50CitnZXRjb29yZChpbnQgYXRjcHUpCit7CisgICAgaW50IG55LCBueCwgYzsKKworICAgIGlmIChhdGNwdSkKKwljZ290byhjdXJ5LCBjdXJ4KTsKKyAgICBlbHNlCisJcGdvdG8oY3VyeSwgY3VyeCk7CisgICAgKHZvaWQpIHJlZnJlc2goKTsKKyAgICBmb3IgKDs7KSB7CisJaWYgKGF0Y3B1KSB7CisJICAgIE12UHJpbnR3KENZQkFTRSArIEJERVBUSCArIDEsIENYQkFTRSArIDExLCAiKCVkLCAlYykiLAorCQkgICAgIGN1cngsICdBJyArIGN1cnkpOworCSAgICBjZ290byhjdXJ5LCBjdXJ4KTsKKwl9IGVsc2UgeworCSAgICBNdlByaW50dyhQWUJBU0UgKyBCREVQVEggKyAxLCBQWEJBU0UgKyAxMSwgIiglZCwgJWMpIiwKKwkJICAgICBjdXJ4LCAnQScgKyBjdXJ5KTsKKwkgICAgcGdvdG8oY3VyeSwgY3VyeCk7CisJfQorCisJc3dpdGNoIChjID0gZ2V0Y2goKSkgeworCWNhc2UgJ2snOgorCWNhc2UgJzgnOgorCWNhc2UgS0VZX1VQOgorCSAgICBueSA9IGN1cnkgKyBCREVQVEggLSAxOworCSAgICBueCA9IGN1cng7CisJICAgIGJyZWFrOworCWNhc2UgJ2onOgorCWNhc2UgJzInOgorCWNhc2UgS0VZX0RPV046CisJICAgIG55ID0gY3VyeSArIDE7CisJICAgIG54ID0gY3VyeDsKKwkgICAgYnJlYWs7CisJY2FzZSAnaCc6CisJY2FzZSAnNCc6CisJY2FzZSBLRVlfTEVGVDoKKwkgICAgbnkgPSBjdXJ5OworCSAgICBueCA9IGN1cnggKyBCV0lEVEggLSAxOworCSAgICBicmVhazsKKwljYXNlICdsJzoKKwljYXNlICc2JzoKKwljYXNlIEtFWV9SSUdIVDoKKwkgICAgbnkgPSBjdXJ5OworCSAgICBueCA9IGN1cnggKyAxOworCSAgICBicmVhazsKKwljYXNlICd5JzoKKwljYXNlICc3JzoKKwljYXNlIEtFWV9BMToKKwkgICAgbnkgPSBjdXJ5ICsgQkRFUFRIIC0gMTsKKwkgICAgbnggPSBjdXJ4ICsgQldJRFRIIC0gMTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYic6CisJY2FzZSAnMSc6CisJY2FzZSBLRVlfQzE6CisJICAgIG55ID0gY3VyeSArIDE7CisJICAgIG54ID0gY3VyeCArIEJXSURUSCAtIDE7CisJICAgIGJyZWFrOworCWNhc2UgJ3UnOgorCWNhc2UgJzknOgorCWNhc2UgS0VZX0EzOgorCSAgICBueSA9IGN1cnkgKyBCREVQVEggLSAxOworCSAgICBueCA9IGN1cnggKyAxOworCSAgICBicmVhazsKKwljYXNlICduJzoKKwljYXNlICczJzoKKwljYXNlIEtFWV9DMzoKKwkgICAgbnkgPSBjdXJ5ICsgMTsKKwkgICAgbnggPSBjdXJ4ICsgMTsKKwkgICAgYnJlYWs7CisJY2FzZSBGRjoKKwkgICAgbnggPSBjdXJ4OworCSAgICBueSA9IGN1cnk7CisJICAgICh2b2lkKSBjbGVhcm9rKHN0ZHNjciwgVFJVRSk7CisJICAgICh2b2lkKSByZWZyZXNoKCk7CisJICAgIGJyZWFrOworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorCWNhc2UgS0VZX01PVVNFOgorCSAgICB7CisJCU1FVkVOVCBteWV2ZW50OworCisJCWdldG1vdXNlKCZteWV2ZW50KTsKKwkJaWYgKGF0Y3B1CisJCSAgICAmJiBteWV2ZW50LnkgPj0gQ1koMCkgJiYgbXlldmVudC55IDw9IENZKEJERVBUSCkKKwkJICAgICYmIG15ZXZlbnQueCA+PSBDWCgwKSAmJiBteWV2ZW50LnggPD0gQ1goQkRFUFRIKSkgeworCQkgICAgY3VyeCA9IENYSU5WKG15ZXZlbnQueCk7CisJCSAgICBjdXJ5ID0gQ1lJTlYobXlldmVudC55KTsKKwkJICAgIHJldHVybiAoJyAnKTsKKwkJfSBlbHNlIHsKKwkJICAgIGJlZXAoKTsKKwkJICAgIGNvbnRpbnVlOworCQl9CisJICAgIH0KKwkgICAgLyogbm8gZmFsbCB0aHJvdWdoICovCisjZW5kaWYgLyogTkNVUlNFU19NT1VTRV9WRVJTSU9OICovCisKKwlkZWZhdWx0OgorCSAgICBpZiAoYXRjcHUpCisJCU12QWRkU3RyKENZQkFTRSArIEJERVBUSCArIDEsIENYQkFTRSArIDExLCAiICAgICAgIik7CisJICAgIGVsc2UKKwkJTXZBZGRTdHIoUFlCQVNFICsgQkRFUFRIICsgMSwgUFhCQVNFICsgMTEsICIgICAgICAiKTsKKwkgICAgcmV0dXJuIChjKTsKKwl9CisKKwljdXJ4ID0gbnggJSBCV0lEVEg7CisJY3VyeSA9IG55ICUgQkRFUFRIOworICAgIH0KK30KKworc3RhdGljIGJvb2wKK2NvbGxpZGVjaGVjayhpbnQgYiwgaW50IHksIGludCB4KQorLyogaXMgdGhpcyBsb2NhdGlvbiBvbiB0aGUgc2VsZWN0ZWQgemJvYXJkIGFkamFjZW50IHRvIGEgc2hpcD8gKi8KK3sKKyAgICBib29sIGNvbGxpZGU7CisKKyAgICAvKiBhbnl0aGluZyBvbiB0aGUgc3F1YXJlICovCisgICAgaWYgKChjb2xsaWRlID0gSVNfU0hJUChib2FyZFtiXVt4XVt5XSkpICE9IEZBTFNFKQorCXJldHVybiAoY29sbGlkZSk7CisKKyAgICAvKiBhbnl0aGluZyBvbiB0aGUgbmVpZ2hib3JzICovCisgICAgaWYgKCFjbG9zZXBhY2spIHsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkgICAgaW50IHhlbmQsIHllbmQ7CisKKwkgICAgeWVuZCA9IHkgKyB5aW5jcltpXTsKKwkgICAgeGVuZCA9IHggKyB4aW5jcltpXTsKKwkgICAgaWYgKE9OQk9BUkQoeGVuZCwgeWVuZCkKKwkJJiYgSVNfU0hJUChib2FyZFtiXVt4ZW5kXVt5ZW5kXSkpIHsKKwkJY29sbGlkZSA9IFRSVUU7CisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm4gKGNvbGxpZGUpOworfQorCitzdGF0aWMgYm9vbAorY2hlY2twbGFjZShpbnQgYiwgc2hpcF90ICogc3MsIGludCB2aXMpCit7CisgICAgaW50IGwsIHhlbmQsIHllbmQ7CisKKyAgICAvKiBmaXJzdCwgY2hlY2sgZm9yIGJvYXJkIGVkZ2VzICovCisgICAgeGVuZCA9IHNzLT54ICsgKHNzLT5sZW5ndGggLSAxKSAqIHhpbmNyW3NzLT5kaXJdOworICAgIHllbmQgPSBzcy0+eSArIChzcy0+bGVuZ3RoIC0gMSkgKiB5aW5jcltzcy0+ZGlyXTsKKyAgICBpZiAoIU9OQk9BUkQoeGVuZCwgeWVuZCkpIHsKKwlpZiAodmlzKQorCSAgICBzd2l0Y2ggKHJuZCgzKSkgeworCSAgICBjYXNlIDA6CisJCWVycm9yKCJTaGlwIGlzIGhhbmdpbmcgZnJvbSB0aGUgZWRnZSBvZiB0aGUgd29ybGQiKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgMToKKwkJZXJyb3IoIlRyeSBmaXR0aW5nIGl0IG9uIHRoZSBib2FyZCIpOworCQlicmVhazsKKwkgICAgY2FzZSAyOgorCQllcnJvcigiRmlndXJlIEkgd29uJ3QgZmluZCBpdCBpZiB5b3UgcHV0IGl0IHRoZXJlPyIpOworCQlicmVhazsKKwkgICAgfQorCXJldHVybiAoRkFMU0UpOworICAgIH0KKworICAgIGZvciAobCA9IDA7IGwgPCBzcy0+bGVuZ3RoOyArK2wpIHsKKwlpZiAoY29sbGlkZWNoZWNrKGIsIHNzLT55ICsgbCAqIHlpbmNyW3NzLT5kaXJdLCBzcy0+eCArIGwgKiB4aW5jcltzcy0+ZGlyXSkpIHsKKwkgICAgaWYgKHZpcykKKwkJc3dpdGNoIChybmQoMykpIHsKKwkJY2FzZSAwOgorCQkgICAgZXJyb3IoIlRoZXJlJ3MgYWxyZWFkeSBhIHNoaXAgdGhlcmUiKTsKKwkJICAgIGJyZWFrOworCQljYXNlIDE6CisJCSAgICBlcnJvcigiQ29sbGlzaW9uIGFsZXJ0ISAgQWFhYWFhZ2ghIik7CisJCSAgICBicmVhazsKKwkJY2FzZSAyOgorCQkgICAgZXJyb3IoIkVyLCBBZG1pcmFsLCB3aGF0IGFib3V0IHRoZSBvdGhlciBzaGlwPyIpOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgcmV0dXJuIChGQUxTRSk7CisJfQorICAgIH0KKyAgICByZXR1cm4gKFRSVUUpOworfQorCitzdGF0aWMgaW50Cithd2lubmEodm9pZCkKK3sKKyAgICBpbnQgaSwgajsKKyAgICBzaGlwX3QgKnNzOworCisgICAgZm9yIChpID0gMDsgaSA8IDI7ICsraSkgeworCXNzID0gKGkpID8gY3B1c2hpcCA6IHBseXNoaXA7CisJZm9yIChqID0gMDsgaiA8IFNISVBUWVBFUzsgKytqLCArK3NzKQorCSAgICBpZiAoc3MtPmxlbmd0aCA+IHNzLT5oaXRzKQorCQlicmVhazsKKwlpZiAoaiA9PSBTSElQVFlQRVMpCisJICAgIHJldHVybiAoT1RIRVIpOworICAgIH0KKyAgICByZXR1cm4gKC0xKTsKK30KKworc3RhdGljIHNoaXBfdCAqCitoaXRzaGlwKGludCB4LCBpbnQgeSkKKy8qIHJlZ2lzdGVyIGEgaGl0IG9uIHRoZSB0YXJnZXRlZCBzaGlwICovCit7CisgICAgc2hpcF90ICpzYiwgKnNzOworICAgIGNoYXIgc3ltOworICAgIGludCBvbGR4LCBvbGR5OworCisgICAgZ2V0eXgoc3Rkc2NyLCBvbGR5LCBvbGR4KTsKKyAgICBzYiA9ICh0dXJuKSA/IHBseXNoaXAgOiBjcHVzaGlwOworICAgIGlmICgoc3ltID0gYm9hcmRbT1RIRVJdW3hdW3ldKSA9PSAwKQorCXJldHVybiAoKHNoaXBfdCAqKSBOVUxMKTsKKyAgICBmb3IgKHNzID0gc2I7IHNzIDwgc2IgKyBTSElQVFlQRVM7ICsrc3MpCisJaWYgKHNzLT5zeW1ib2wgPT0gc3ltKSB7CisJICAgIGlmICgrK3NzLT5oaXRzIDwgc3MtPmxlbmd0aCkJLyogc3RpbGwgYWZsb2F0PyAqLworCQlyZXR1cm4gKChzaGlwX3QgKikgTlVMTCk7CisJICAgIGVsc2UgewkJLyogc3VuayEgKi8KKwkJaW50IGksIGo7CisKKwkJaWYgKCFjbG9zZXBhY2spCisJCSAgICBmb3IgKGogPSAtMTsgaiA8PSAxOyBqKyspIHsKKwkJCWludCBieCA9IHNzLT54ICsgaiAqIHhpbmNyWyhzcy0+ZGlyICsgMikgJSA4XTsKKwkJCWludCBieSA9IHNzLT55ICsgaiAqIHlpbmNyWyhzcy0+ZGlyICsgMikgJSA4XTsKKworCQkJZm9yIChpID0gLTE7IGkgPD0gc3MtPmxlbmd0aDsgKytpKSB7CisJCQkgICAgaW50IHgxLCB5MTsKKworCQkJICAgIHgxID0gYnggKyBpICogeGluY3Jbc3MtPmRpcl07CisJCQkgICAgeTEgPSBieSArIGkgKiB5aW5jcltzcy0+ZGlyXTsKKwkJCSAgICBpZiAoT05CT0FSRCh4MSwgeTEpKSB7CisJCQkJaGl0c1t0dXJuXVt4MV1beTFdID0gTUFSS19NSVNTOworCQkJCWlmICh0dXJuICUgMiA9PSBQTEFZRVIpIHsKKwkJCQkgICAgY2dvdG8oeTEsIHgxKTsKKyNpZmRlZiBBX0NPTE9SCisJCQkJICAgIGlmIChoYXNfY29sb3JzKCkpCisJCQkJCWF0dHJvbihDT0xPUl9QQUlSKENPTE9SX0dSRUVOKSk7CisjZW5kaWYgLyogQV9DT0xPUiAqLworCQkJCSAgICAodm9pZCkgYWRkY2goTUFSS19NSVNTKTsKKyNpZmRlZiBBX0NPTE9SCisJCQkJICAgICh2b2lkKSBhdHRyc2V0KDApOworI2VuZGlmIC8qIEFfQ09MT1IgKi8KKwkJCQl9IGVsc2UgeworCQkJCSAgICBwZ290byh5MSwgeDEpOworCQkJCSAgICAodm9pZCkgYWRkY2goU0hPV1NQTEFTSCk7CisJCQkJfQorCQkJICAgIH0KKwkJCX0KKwkJICAgIH0KKworCQlmb3IgKGkgPSAwOyBpIDwgc3MtPmxlbmd0aDsgKytpKSB7CisJCSAgICBpbnQgeDEgPSBzcy0+eCArIGkgKiB4aW5jcltzcy0+ZGlyXTsKKwkJICAgIGludCB5MSA9IHNzLT55ICsgaSAqIHlpbmNyW3NzLT5kaXJdOworCisJCSAgICBoaXRzW3R1cm5dW3gxXVt5MV0gPSBzcy0+c3ltYm9sOworCQkgICAgaWYgKHR1cm4gJSAyID09IFBMQVlFUikgeworCQkJY2dvdG8oeTEsIHgxKTsKKwkJCSh2b2lkKSBhZGRjaCgoY2h0eXBlKSAoc3MtPnN5bWJvbCkpOworCQkgICAgfSBlbHNlIHsKKwkJCXBnb3RvKHkxLCB4MSk7CisjaWZkZWYgQV9DT0xPUgorCQkJaWYgKGhhc19jb2xvcnMoKSkKKwkJCSAgICBhdHRyb24oQ09MT1JfUEFJUihDT0xPUl9SRUQpKTsKKyNlbmRpZiAvKiBBX0NPTE9SICovCisJCQkodm9pZCkgYWRkY2goU0hPV0hJVCk7CisjaWZkZWYgQV9DT0xPUgorCQkJKHZvaWQpIGF0dHJzZXQoMCk7CisjZW5kaWYgLyogQV9DT0xPUiAqLworCQkgICAgfQorCQl9CisKKwkJKHZvaWQpIG1vdmUob2xkeSwgb2xkeCk7CisJCXJldHVybiAoc3MpOworCSAgICB9CisJfQorICAgICh2b2lkKSBtb3ZlKG9sZHksIG9sZHgpOworICAgIHJldHVybiAoKHNoaXBfdCAqKSBOVUxMKTsKK30KKworc3RhdGljIGJvb2wKK3BseXR1cm4odm9pZCkKK3sKKyAgICBzaGlwX3QgKnNzOworICAgIGJvb2wgaGl0OworICAgIE5DVVJTRVNfQ09OU1QgY2hhciAqbSA9IE5VTEw7CisKKyAgICBwcm9tcHQoMSwgIldoZXJlIGRvIHlvdSB3YW50IHRvIHNob290PyAiLCAiIik7CisgICAgZm9yICg7OykgeworCSh2b2lkKSBnZXRjb29yZChDT01QVVRFUik7CisJaWYgKGhpdHNbUExBWUVSXVtjdXJ4XVtjdXJ5XSkgeworCSAgICBwcm9tcHQoMSwgIllvdSBzaGVsbGVkIHRoaXMgc3BvdCBhbHJlYWR5ISBUcnkgYWdhaW4uIiwgIiIpOworCSAgICBiZWVwKCk7CisJfSBlbHNlCisJICAgIGJyZWFrOworICAgIH0KKyAgICBoaXQgPSBJU19TSElQKGJvYXJkW0NPTVBVVEVSXVtjdXJ4XVtjdXJ5XSk7CisgICAgaGl0c1tQTEFZRVJdW2N1cnhdW2N1cnldID0gKGNoYXIpIChoaXQgPyBNQVJLX0hJVCA6IE1BUktfTUlTUyk7CisgICAgY2dvdG8oY3VyeSwgY3VyeCk7CisjaWZkZWYgQV9DT0xPUgorICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwlpZiAoaGl0KQorCSAgICBhdHRyb24oQ09MT1JfUEFJUihDT0xPUl9SRUQpKTsKKwllbHNlCisJICAgIGF0dHJvbihDT0xPUl9QQUlSKENPTE9SX0dSRUVOKSk7CisgICAgfQorI2VuZGlmIC8qIEFfQ09MT1IgKi8KKyAgICAodm9pZCkgYWRkY2goKGNodHlwZSkgaGl0c1tQTEFZRVJdW2N1cnhdW2N1cnldKTsKKyNpZmRlZiBBX0NPTE9SCisgICAgKHZvaWQpIGF0dHJzZXQoMCk7CisjZW5kaWYgLyogQV9DT0xPUiAqLworCisgICAgcHJvbXB0KDEsICJZb3UgJXMuIiwgaGl0ID8gInNjb3JlZCBhIGhpdCIgOiAibWlzc2VkIik7CisgICAgaWYgKGhpdCAmJiAoc3MgPSBoaXRzaGlwKGN1cngsIGN1cnkpKSkgeworCXN3aXRjaCAocm5kKDUpKSB7CisJY2FzZSAwOgorCSAgICBtID0gIiBZb3Ugc2FuayBteSAlcyEiOworCSAgICBicmVhazsKKwljYXNlIDE6CisJICAgIG0gPSAiIEkgaGF2ZSB0aGlzIHNpbmtpbmcgZmVlbGluZyBhYm91dCBteSAlcy4uLi4iOworCSAgICBicmVhazsKKwljYXNlIDI6CisJICAgIG0gPSAiIE15ICVzIGhhcyBnb25lIHRvIERhdnkgSm9uZXMncyBsb2NrZXIhIjsKKwkgICAgYnJlYWs7CisJY2FzZSAzOgorCSAgICBtID0gIiBHbHViLCBnbHViIC0tIG15ICVzIGlzIGhlYWRlZCBmb3IgdGhlIGJvdHRvbSEiOworCSAgICBicmVhazsKKwljYXNlIDQ6CisJICAgIG0gPSAiIFlvdSdsbCBwaWNrIHVwIHN1cnZpdm9ycyBmcm9tIG15ICVzLCBJIGhvcGUuLi4hIjsKKwkgICAgYnJlYWs7CisJfQorCWlmIChtICE9IDApIHsKKwkgICAgKHZvaWQpIHByaW50dyhtLCBzcy0+bmFtZSk7CisJfQorCSh2b2lkKSBiZWVwKCk7CisgICAgfQorICAgIHJldHVybiAoaGl0KTsKK30KKworc3RhdGljIGludAorc2dldGMoY29uc3QgY2hhciAqcykKK3sKKyAgICBjb25zdCBjaGFyICpzMTsKKyAgICBpbnQgY2g7CisKKyAgICAodm9pZCkgcmVmcmVzaCgpOworICAgIGZvciAoOzspIHsKKwljaCA9IGdldGNoKCk7CisJaWYgKGlzbG93ZXIoY2gpKQorCSAgICBjaCA9IHRvdXBwZXIoY2gpOworCWlmIChjaCA9PSBDVFJMQykKKwkgICAgdW5pbml0Z2FtZSgwKTsKKwlmb3IgKHMxID0gczsgKnMxICYmIGNoICE9ICpzMTsgKytzMSkKKwkgICAgY29udGludWU7CisJaWYgKCpzMSkgeworCSAgICAodm9pZCkgYWRkY2goKGNodHlwZSkgY2gpOworCSAgICAodm9pZCkgcmVmcmVzaCgpOworCSAgICByZXR1cm4gKGNoKTsKKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcmFuZG9tZmlyZShpbnQgKnB4LCBpbnQgKnB5KQorLyogcmFuZG9tLWZpcmUgcm91dGluZSAtLSBpbXBsZW1lbnRzIHNpbXBsZSBkaWFnb25hbC1zdHJpcGluZyBzdHJhdGVneSAqLworeworICAgIHN0YXRpYyBpbnQgdHVybmNvdW50ID0gMDsKKyAgICBzdGF0aWMgaW50IHNyY2hzdGVwID0gQkVHSU5TVEVQOworICAgIHN0YXRpYyBpbnQgaHVudG9mZnM7CS8qIE9mZnNldCBvbiBzZWFyY2ggc3RyYXRlZ3kgKi8KKyAgICBpbnQgeXBvc3NpYmxlW0JXSURUSCAqIEJERVBUSF0sIHhwb3NzaWJsZVtCV0lEVEggKiBCREVQVEhdLCBucG9zczsKKyAgICBpbnQgeXByZWZlcnJlZFtCV0lEVEggKiBCREVQVEhdLCB4cHJlZmVycmVkW0JXSURUSCAqIEJERVBUSF0sIG5wcmVmOworICAgIGludCB4LCB5LCBpOworCisgICAgaWYgKHR1cm5jb3VudCsrID09IDApCisJaHVudG9mZnMgPSBybmQoc3JjaHN0ZXApOworCisgICAgLyogZmlyc3QsIGxpc3QgYWxsIHBvc3NpYmxlIG1vdmVzICovCisgICAgbnBvc3MgPSBucHJlZiA9IDA7CisgICAgZm9yICh4ID0gMDsgeCA8IEJXSURUSDsgeCsrKQorCWZvciAoeSA9IDA7IHkgPCBCREVQVEg7IHkrKykKKwkgICAgaWYgKCFoaXRzW0NPTVBVVEVSXVt4XVt5XSkgeworCQl4cG9zc2libGVbbnBvc3NdID0geDsKKwkJeXBvc3NpYmxlW25wb3NzXSA9IHk7CisJCW5wb3NzKys7CisJCWlmICgoKHggKyBodW50b2ZmcykgJSBzcmNoc3RlcCkgIT0gKHkgJSBzcmNoc3RlcCkpIHsKKwkJICAgIHhwcmVmZXJyZWRbbnByZWZdID0geDsKKwkJICAgIHlwcmVmZXJyZWRbbnByZWZdID0geTsKKwkJICAgIG5wcmVmKys7CisJCX0KKwkgICAgfQorCisgICAgaWYgKG5wcmVmKSB7CisJaSA9IHJuZChucHJlZik7CisKKwkqcHggPSB4cHJlZmVycmVkW2ldOworCSpweSA9IHlwcmVmZXJyZWRbaV07CisgICAgfSBlbHNlIGlmIChucG9zcykgeworCWkgPSBybmQobnBvc3MpOworCisJKnB4ID0geHBvc3NpYmxlW2ldOworCSpweSA9IHlwb3NzaWJsZVtpXTsKKworCWlmIChzcmNoc3RlcCA+IDEpCisJICAgIC0tc3JjaHN0ZXA7CisgICAgfSBlbHNlIHsKKwllcnJvcigiTm8gbW92ZXMgcG9zc2libGU/PyBIZWxwISIpOworCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJLypOT1RSRUFDSEVEICovCisgICAgfQorfQorCisjZGVmaW5lIFNfTUlTUwkwCisjZGVmaW5lIFNfSElUCTEKKyNkZWZpbmUgU19TVU5LCS0xCisKK3N0YXRpYyBpbnQKK2NwdWZpcmUoaW50IHgsIGludCB5KQorLyogZmlyZSBhd2F5IGF0IGdpdmVuIGxvY2F0aW9uICovCit7CisgICAgYm9vbCBoaXQsIHN1bms7CisgICAgc2hpcF90ICpzcyA9IE5VTEw7CisKKyAgICBoaXQgPSAoYm9vbCkgYm9hcmRbUExBWUVSXVt4XVt5XTsKKyAgICBoaXRzW0NPTVBVVEVSXVt4XVt5XSA9IChoaXQgPyBNQVJLX0hJVCA6IE1BUktfTUlTUyk7CisgICAgTXZQcmludHcoUFJPTVBUTElORSwgMCwKKwkgICAgICJJIHNob290IGF0ICVjJWQuIEkgJXMhIiwgeSArICdBJywgeCwgaGl0ID8gImhpdCIgOgorCSAgICAgIm1pc3MiKTsKKyAgICBpZiAoKHN1bmsgPSAoaGl0ICYmIChzcyA9IGhpdHNoaXAoeCwgeSkpKSkgIT0gMCkKKwkodm9pZCkgcHJpbnR3KCIgSSd2ZSBzdW5rIHlvdXIgJXMiLCBzcy0+bmFtZSk7CisgICAgKHZvaWQpIGNscnRvZW9sKCk7CisKKyAgICBwZ290byh5LCB4KTsKKyNpZmRlZiBBX0NPTE9SCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWlmIChoaXQpCisJICAgIGF0dHJvbihDT0xPUl9QQUlSKENPTE9SX1JFRCkpOworCWVsc2UKKwkgICAgYXR0cm9uKENPTE9SX1BBSVIoQ09MT1JfR1JFRU4pKTsKKyAgICB9CisjZW5kaWYgLyogQV9DT0xPUiAqLworICAgICh2b2lkKSBhZGRjaCgoY2h0eXBlKSAoaGl0ID8gU0hPV0hJVCA6IFNIT1dTUExBU0gpKTsKKyNpZmRlZiBBX0NPTE9SCisgICAgKHZvaWQpIGF0dHJzZXQoMCk7CisjZW5kaWYgLyogQV9DT0xPUiAqLworCisgICAgcmV0dXJuIGhpdCA/IChzdW5rID8gU19TVU5LIDogU19ISVQpIDogU19NSVNTOworfQorCisvKgorICogVGhpcyBjb2RlIGltcGxlbWVudHMgYSBmYWlybHkgaXJyZWd1bGFyIEZTTSwgc28gcGxlYXNlIGZvcmdpdmUgdGhlIHJhbXBhbnQKKyAqIHVuc3RydWN0dXJlZG5lc3MgYmVsb3cuIFRoZSBmaXZlIGxhYmVscyBhcmUgc3RhdGVzIHdoaWNoIG5lZWQgdG8gYmUgaGVsZAorICogYmV0d2VlbiBjb21wdXRlciB0dXJucy4KKyAqCisgKiBUaGUgRlNNIGlzIG5vdCBleHRlcm5hbGx5IHJlc2V0IHRvIFJBTkRPTV9GSVJFIGlmIHRoZSBwbGF5ZXIgd2lucy4gSW5zdGVhZCwKKyAqIHRoZSBvdGhlciBzdGF0ZXMgY2hlY2sgZm9yICJpbXBvc3NpYmxlIiBjb25kaXRpb25zIHdoaWNoIHNpZ25pZnkgYSBuZXcKKyAqIGdhbWUsIHRoZW4gaWYgZm91bmQgdHJhbnNpdGlvbiB0byBSQU5ET01fRklSRS4KKyAqLworc3RhdGljIGJvb2wKK2NwdXR1cm4odm9pZCkKK3sKKyNkZWZpbmUgUE9TU0lCTEUoeCwgeSkJKE9OQk9BUkQoeCwgeSkgJiYgIWhpdHNbQ09NUFVURVJdW3hdW3ldKQorI2RlZmluZSBSQU5ET01fRklSRQkwCisjZGVmaW5lIFJBTkRPTV9ISVQJMQorI2RlZmluZSBIVU5UX0RJUkVDVAkyCisjZGVmaW5lIEZJUlNUX1BBU1MJMworI2RlZmluZSBSRVZFUlNFX0pVTVAJNAorI2RlZmluZSBTRUNPTkRfUEFTUwk1CisgICAgc3RhdGljIGludCBuZXh0ID0gUkFORE9NX0ZJUkU7CisgICAgc3RhdGljIGJvb2wgdXNlZFs0XTsKKyAgICBzdGF0aWMgc2hpcF90IHRzOworICAgIGludCBuYXZhaWwsIHgsIHksIGQsIG47CisgICAgaW50IGhpdCA9IFNfTUlTUzsKKworICAgIHN3aXRjaCAobmV4dCkgeworICAgIGNhc2UgUkFORE9NX0ZJUkU6CQkvKiBsYXN0IHNob3Qgd2FzIHJhbmRvbSBhbmQgbWlzc2VkICovCisgICAgICByZWZpcmU6CisJcmFuZG9tZmlyZSgmeCwgJnkpOworCWlmICghKGhpdCA9IGNwdWZpcmUoeCwgeSkpKQorCSAgICBuZXh0ID0gUkFORE9NX0ZJUkU7CisJZWxzZSB7CisJICAgIHRzLnggPSB4OworCSAgICB0cy55ID0geTsKKwkgICAgdHMuaGl0cyA9IDE7CisJICAgIG5leHQgPSAoaGl0ID09IFNfU1VOSykgPyBSQU5ET01fRklSRSA6IFJBTkRPTV9ISVQ7CisJfQorCWJyZWFrOworCisgICAgY2FzZSBSQU5ET01fSElUOgkJLyogbGFzdCBzaG90IHdhcyByYW5kb20gYW5kIGhpdCAqLworCXVzZWRbRSAvIDJdID0gdXNlZFtTIC8gMl0gPSB1c2VkW1cgLyAyXSA9IHVzZWRbTiAvIDJdID0gRkFMU0U7CisJLyogRkFMTFRIUk9VR0ggKi8KKworICAgIGNhc2UgSFVOVF9ESVJFQ1Q6CQkvKiBsYXN0IHNob3QgaGl0LCB3ZSdyZSBsb29raW5nIGZvciBzaGlwJ3MgbG9uZyBheGlzICovCisJZm9yIChkID0gbmF2YWlsID0gMDsgZCA8IDQ7IGQrKykgeworCSAgICB4ID0gdHMueCArIHhpbmNyW2QgKiAyXTsKKwkgICAgeSA9IHRzLnkgKyB5aW5jcltkICogMl07CisJICAgIGlmICghdXNlZFtkXSAmJiBQT1NTSUJMRSh4LCB5KSkKKwkJbmF2YWlsKys7CisJICAgIGVsc2UKKwkJdXNlZFtkXSA9IFRSVUU7CisJfQorCWlmIChuYXZhaWwgPT0gMCkJLyogbm8gdmFsaWQgcGxhY2VzIGZvciBzaG90cyBhZGphY2VudC4uLiAqLworCSAgICBnb3RvIHJlZmlyZTsJLyogLi4uc28gd2UgbXVzdCByYW5kb20tZmlyZSAqLworCWVsc2UgeworCSAgICBuID0gcm5kKG5hdmFpbCkgKyAxOworCSAgICBmb3IgKGQgPSAwOyB1c2VkW2RdOyBkKyspIDsKKwkgICAgLyogdXNlZFtkXSBpcyBmaXJzdCB0aGF0ID09IDAgKi8KKwkgICAgZm9yICg7IG4gPiAxOyBuLS0pCisJCXdoaWxlICh1c2VkWysrZF0pIDsKKwkgICAgLyogdXNlZFtkXSBpcyBuZXh0IHRoYXQgPT0gMCAqLworCisJICAgIGFzc2VydChkIDwgNCk7CisJICAgIGFzc2VydCh1c2VkW2RdID09IEZBTFNFKTsKKworCSAgICB1c2VkW2RdID0gVFJVRTsKKwkgICAgeCA9IHRzLnggKyB4aW5jcltkICogMl07CisJICAgIHkgPSB0cy55ICsgeWluY3JbZCAqIDJdOworCisJICAgIGFzc2VydChQT1NTSUJMRSh4LCB5KSk7CisKKwkgICAgaWYgKCEoaGl0ID0gY3B1ZmlyZSh4LCB5KSkpCisJCW5leHQgPSBIVU5UX0RJUkVDVDsKKwkgICAgZWxzZSB7CisJCXRzLnggPSB4OworCQl0cy55ID0geTsKKwkJdHMuZGlyID0gZCAqIDI7CisJCXRzLmhpdHMrKzsKKwkJbmV4dCA9IChoaXQgPT0gU19TVU5LKSA/IFJBTkRPTV9GSVJFIDogRklSU1RfUEFTUzsKKwkgICAgfQorCX0KKwlicmVhazsKKworICAgIGNhc2UgRklSU1RfUEFTUzoJCS8qIHdlIGhhdmUgYSBzdGFydCBhbmQgYSBkaXJlY3Rpb24gbm93ICovCisJeCA9IHRzLnggKyB4aW5jclt0cy5kaXJdOworCXkgPSB0cy55ICsgeWluY3JbdHMuZGlyXTsKKwlpZiAoUE9TU0lCTEUoeCwgeSkgJiYgKGhpdCA9IGNwdWZpcmUoeCwgeSkpKSB7CisJICAgIHRzLnggPSB4OworCSAgICB0cy55ID0geTsKKwkgICAgdHMuaGl0cysrOworCSAgICBuZXh0ID0gKGhpdCA9PSBTX1NVTkspID8gUkFORE9NX0ZJUkUgOiBGSVJTVF9QQVNTOworCX0gZWxzZQorCSAgICBuZXh0ID0gUkVWRVJTRV9KVU1QOworCWJyZWFrOworCisgICAgY2FzZSBSRVZFUlNFX0pVTVA6CQkvKiBuYWlsIGRvd24gdGhlIHNoaXAncyBvdGhlciBlbmQgKi8KKwlkID0gKHRzLmRpciArIDQpICUgODsKKwl4ID0gdHMueCArIHRzLmhpdHMgKiB4aW5jcltkXTsKKwl5ID0gdHMueSArIHRzLmhpdHMgKiB5aW5jcltkXTsKKwlpZiAoUE9TU0lCTEUoeCwgeSkgJiYgKGhpdCA9IGNwdWZpcmUoeCwgeSkpKSB7CisJICAgIHRzLnggPSB4OworCSAgICB0cy55ID0geTsKKwkgICAgdHMuZGlyID0gZDsKKwkgICAgdHMuaGl0cysrOworCSAgICBuZXh0ID0gKGhpdCA9PSBTX1NVTkspID8gUkFORE9NX0ZJUkUgOiBTRUNPTkRfUEFTUzsKKwl9IGVsc2UKKwkgICAgbmV4dCA9IFJBTkRPTV9GSVJFOworCWJyZWFrOworCisgICAgY2FzZSBTRUNPTkRfUEFTUzoJCS8qIGNvbnRpbnVlIHNob290aW5nIGFmdGVyIHJldmVyc2luZyAqLworCXggPSB0cy54ICsgeGluY3JbdHMuZGlyXTsKKwl5ID0gdHMueSArIHlpbmNyW3RzLmRpcl07CisJaWYgKFBPU1NJQkxFKHgsIHkpICYmIChoaXQgPSBjcHVmaXJlKHgsIHkpKSkgeworCSAgICB0cy54ID0geDsKKwkgICAgdHMueSA9IHk7CisJICAgIHRzLmhpdHMrKzsKKwkgICAgbmV4dCA9IChoaXQgPT0gU19TVU5LKSA/IFJBTkRPTV9GSVJFIDogU0VDT05EX1BBU1M7CisJICAgIGJyZWFrOworCX0gZWxzZQorCSAgICBuZXh0ID0gUkFORE9NX0ZJUkU7CisJYnJlYWs7CisgICAgfQorCisgICAgLyogcGF1c2UgYmV0d2VlbiBzaG90cyBpbiBzYWx2byAqLworICAgIGlmIChzYWx2bykgeworCSh2b2lkKSByZWZyZXNoKCk7CisJKHZvaWQpIHNsZWVwKDEpOworICAgIH0KKyNpZmRlZiBERUJVRworICAgIE12UHJpbnR3KFBST01QVExJTkUgKyAyLCAwLAorCSAgICAgIk5ldyBzdGF0ZSAlZCwgeD0lZCwgeT0lZCwgZD0lZCIsCisJICAgICBuZXh0LCB4LCB5LCBkKTsKKyNlbmRpZiAvKiBERUJVRyAqLworICAgIHJldHVybiAoKGhpdCkgPyBUUlVFIDogRkFMU0UpOworfQorCitzdGF0aWMgaW50CitwbGF5YWdhaW4odm9pZCkKK3sKKyAgICBpbnQgajsKKyAgICBzaGlwX3QgKnNzOworCisgICAgZm9yIChzcyA9IGNwdXNoaXA7IHNzIDwgY3B1c2hpcCArIFNISVBUWVBFUzsgc3MrKykKKwlmb3IgKGogPSAwOyBqIDwgc3MtPmxlbmd0aDsgaisrKSB7CisJICAgIGNnb3RvKHNzLT55ICsgaiAqIHlpbmNyW3NzLT5kaXJdLCBzcy0+eCArIGogKiB4aW5jcltzcy0+ZGlyXSk7CisJICAgICh2b2lkKSBhZGRjaCgoY2h0eXBlKSBzcy0+c3ltYm9sKTsKKwl9CisKKyAgICBpZiAoYXdpbm5hKCkpCisJKytjcHV3b247CisgICAgZWxzZQorCSsrcGx5d29uOworICAgIGogPSAxOCArIChpbnQpIHN0cmxlbih5b3VyX25hbWUpOworICAgIGlmIChwbHl3b24gPj0gMTApCisJKytqOworICAgIGlmIChjcHV3b24gPj0gMTApCisJKytqOworICAgIE12UHJpbnR3KDEsIChDT0xXSURUSCAtIGopIC8gMiwKKwkgICAgICIlczogJWQgICAgIENvbXB1dGVyOiAlZCIsIHlvdXJfbmFtZSwgcGx5d29uLCBjcHV3b24pOworCisgICAgcHJvbXB0KDIsIChhd2lubmEoKSk/ICJXYW50IHRvIGJlIGh1bWlsaWF0ZWQgYWdhaW4sICVzIFt5bl0/ICIKKwkgICA6ICJHb2luZyB0byBnaXZlIG1lIGEgY2hhbmNlIGZvciByZXZlbmdlLCAlcyBbeW5dPyAiLCB5b3VyX25hbWUpOworICAgIHJldHVybiAoc2dldGMoIllOIikgPT0gJ1knKTsKK30KKworc3RhdGljIHZvaWQKK2RvX29wdGlvbnMoaW50IGMsIGNoYXIgKm9wW10pCit7CisgICAgcmVnaXN0ZXIgaW50IGk7CisKKyAgICBpZiAoYyA+IDEpIHsKKwlmb3IgKGkgPSAxOyBpIDwgYzsgaSsrKSB7CisJICAgIHN3aXRjaCAob3BbaV1bMF0pIHsKKwkgICAgZGVmYXVsdDoKKwkgICAgY2FzZSAnPyc6CisJCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBiYXR0bGUgWy1zIHwgLWJdIFstY11cbiIpOworCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJcdFdoZXJlIHRoZSBvcHRpb25zIGFyZTpcbiIpOworCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJcdC1zIDogcGxheSBhIHNhbHZvIGdhbWVcbiIpOworCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJcdC1iIDogcGxheSBhIGJsaXR6IGdhbWVcbiIpOworCQkodm9pZCkgZnByaW50ZihzdGRlcnIsICJcdC1jIDogc2hpcHMgbWF5IGJlIGFkamFjZW50XG4iKTsKKwkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJy0nOgorCQlzd2l0Y2ggKG9wW2ldWzFdKSB7CisJCWNhc2UgJ2InOgorCQkgICAgYmxpdHogPSAxOworCQkgICAgaWYgKHNhbHZvID09IDEpIHsKKwkJCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKKwkJCQkgICAgICAgIkJhZCBBcmc6IC1iIGFuZCAtcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXG4iKTsKKwkJCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSAncyc6CisJCSAgICBzYWx2byA9IDE7CisJCSAgICBpZiAoYmxpdHogPT0gMSkgeworCQkJKHZvaWQpIGZwcmludGYoc3RkZXJyLAorCQkJCSAgICAgICAiQmFkIEFyZzogLXMgYW5kIC1iIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcbiIpOworCQkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlICdjJzoKKwkJICAgIGNsb3NlcGFjayA9IDE7CisJCSAgICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKKwkJCQkgICAiQmFkIGFyZzogdHlwZSBcIiVzID9cIiBmb3IgdXNhZ2UgbWVzc2FnZVxuIiwKKwkJCQkgICBvcFswXSk7CisJCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCQl9CisJICAgIH0KKwl9CisgICAgfQorfQorCitzdGF0aWMgaW50CitzY291bnQoaW50IHdobykKK3sKKyAgICByZWdpc3RlciBpbnQgaSwgc2hvdHM7CisgICAgcmVnaXN0ZXIgc2hpcF90ICpzcDsKKworICAgIGlmICh3aG8pCisJc3AgPSBjcHVzaGlwOwkJLyogY291bnQgY3B1IHNob3RzICovCisgICAgZWxzZQorCXNwID0gcGx5c2hpcDsJCS8qIGNvdW50IHBsYXllciBzaG90cyAqLworCisgICAgZm9yIChpID0gMCwgc2hvdHMgPSAwOyBpIDwgU0hJUFRZUEVTOyBpKyssIHNwKyspIHsKKwlpZiAoc3AtPmhpdHMgPj0gc3AtPmxlbmd0aCkKKwkgICAgY29udGludWU7CQkvKiBkZWFkIHNoaXAgKi8KKwllbHNlCisJICAgIHNob3RzKys7CisgICAgfQorICAgIHJldHVybiAoc2hvdHMpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBkb19vcHRpb25zKGFyZ2MsIGFyZ3YpOworCisgICAgaW50cm8oKTsKKyAgICBkbyB7CisJaW5pdGdhbWUoKTsKKwl3aGlsZSAoYXdpbm5hKCkgPT0gLTEpIHsKKwkgICAgaWYgKCFibGl0eikgeworCQlpZiAoIXNhbHZvKSB7CisJCSAgICBpZiAodHVybikKKwkJCSh2b2lkKSBjcHV0dXJuKCk7CisJCSAgICBlbHNlCisJCQkodm9pZCkgcGx5dHVybigpOworCQl9IGVsc2UgeworCQkgICAgcmVnaXN0ZXIgaW50IGk7CisKKwkJICAgIGkgPSBzY291bnQodHVybik7CisJCSAgICB3aGlsZSAoaS0tKSB7CisJCQlpZiAodHVybikgeworCQkJICAgIGlmIChjcHV0dXJuKCkgJiYgYXdpbm5hKCkgIT0gLTEpCisJCQkJaSA9IDA7CisJCQl9IGVsc2UgeworCQkJICAgIGlmIChwbHl0dXJuKCkgJiYgYXdpbm5hKCkgIT0gLTEpCisJCQkJaSA9IDA7CisJCQl9CisJCSAgICB9CisJCX0KKwkgICAgfSBlbHNlCisJCXdoaWxlICgodHVybiA/IGNwdXR1cm4oKSA6IHBseXR1cm4oKSkgJiYgYXdpbm5hKCkgPT0gLTEpCisJCSAgICBjb250aW51ZTsKKwkgICAgdHVybiA9IE9USEVSOworCX0KKyAgICB9IHdoaWxlCisJKHBsYXlhZ2FpbigpKTsKKyAgICB1bmluaXRnYW1lKDApOworICAgIC8qTk9UUkVBQ0hFRCAqLworfQorCisvKiBicy5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvdGVzdC9idWxnYXJpYW4tdXRmOC50eHQgYi90ZXN0L2J1bGdhcmlhbi11dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDZjMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9idWxnYXJpYW4tdXRmOC50eHQKQEAgLTAsMCArMSw2IEBACivQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQv9C+0LzQvtGJ0L3QsCDQuNC90YTQvtGA0LzQsNGG0LjRjyAtLSAxCivQodGK0LfQtNCw0LLQsNC90LUg0L3QsCDQtNGP0LvQvtCy0LUgICAgICAgICAgICAgLS0gMgor0JjQt9Cx0L7RgCDQvdCwINC00Y/QuyDQuCDRhNC+0YDQvNCw0YLQuNGA0LDQvdC1ICAgICAgLS0gMwor0JfQsNC/0LjRgdCy0LDQvdC1INCyINC40LfQsdGA0LDQvdC40Y8g0LTRj9C7ICAgICAgICAtLSA0CivQmNC90YHRgtCw0LvQuNGA0LDQvdC1INC90LAgTElMTyAgICAgICAgICAgICAtLSA1CivQmNC30YXQvtC0INC+0YIg0L/RgNC+0LPRgNCw0LzQsNGC0LAgICAgICAgICAgICAgLS0gNgpkaWZmIC0tZ2l0IGEvdGVzdC9jYXJkZmlsZS5jIGIvdGVzdC9jYXJkZmlsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTAyNDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NhcmRmaWxlLmMKQEAgLTAsMCArMSw2MTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMiwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyAqCisgKiAkSWQ6IGNhcmRmaWxlLmMsdiAxLjQyIDIwMTMvMDkvMjggMjI6MDI6MTcgdG9tIEV4cCAkCisgKgorICogRmlsZSBmb3JtYXQ6IHRleHQgYmVnaW5uaW5nIGluIGNvbHVtbiAxIGlzIGEgdGl0bGU7IG90aGVyIHRleHQgaXMgY29udGVudC4KKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfTElCRk9STSAmJiBVU0VfTElCUEFORUwKKworI2luY2x1ZGUgPGZvcm0uaD4KKyNpbmNsdWRlIDxwYW5lbC5oPgorCisjZGVmaW5lIFZJU0lCTEVfQ0FSRFMgMTAKKyNkZWZpbmUgT0ZGU0VUX0NBUkQgMgorI2RlZmluZSBwYWlyXzEgMQorI2RlZmluZSBwYWlyXzIgMgorCisjZGVmaW5lIGlzVmlzaWJsZShjYXJkcCkgKChjYXJkcCktPnBhbmVsICE9IDApCisKK2VudW0geworICAgIE1ZX0NUUkxfeCA9IE1BWF9GT1JNX0NPTU1BTkQKKyAgICAsTVlfQ1RSTF9OCisgICAgLE1ZX0NUUkxfUAorICAgICxNWV9DVFJMX1EKKyAgICAsTVlfQ1RSTF9XCit9OworCit0eXBlZGVmIHN0cnVjdCBfY2FyZCB7CisgICAgc3RydWN0IF9jYXJkICpsaW5rOworICAgIFBBTkVMICpwYW5lbDsKKyAgICBGT1JNICpmb3JtOworICAgIGNoYXIgKnRpdGxlOworICAgIGNoYXIgKmNvbnRlbnQ7Cit9IENBUkQ7CisKK3N0YXRpYyBDQVJEICphbGxfY2FyZHM7CitzdGF0aWMgYm9vbCB0cnlfY29sb3IgPSBGQUxTRTsKK3N0YXRpYyBjaGFyIGRlZmF1bHRfbmFtZVtdID0gImNhcmRmaWxlLmRhdCI7CisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqcykKK3sKKyAgICBwZXJyb3Iocyk7CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorc2tpcChjb25zdCBjaGFyICpidWZmZXIpCit7CisgICAgd2hpbGUgKGlzc3BhY2UoVUNoYXIoKmJ1ZmZlcikpKQorCWJ1ZmZlcisrOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3N0YXRpYyB2b2lkCit0cmltKGNoYXIgKmJ1ZmZlcikKK3sKKyAgICBzaXplX3QgbiA9IHN0cmxlbihidWZmZXIpOworICAgIHdoaWxlIChuLS0gJiYgaXNzcGFjZShVQ2hhcihidWZmZXJbbl0pKSkKKwlidWZmZXJbbl0gPSAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIENBUkQgKgorYWRkX3RpdGxlKGNvbnN0IGNoYXIgKnRpdGxlKQoreworICAgIENBUkQgKmNhcmQsICpwLCAqcTsKKworICAgIGZvciAocCA9IGFsbF9jYXJkcywgcSA9IDA7IHAgIT0gMDsgcSA9IHAsIHAgPSBwLT5saW5rKSB7CisJaW50IGNtcCA9IHN0cmNtcChwLT50aXRsZSwgdGl0bGUpOworCWlmIChjbXAgPT0gMCkKKwkgICAgcmV0dXJuIHA7CisJaWYgKGNtcCA+IDApCisJICAgIGJyZWFrOworICAgIH0KKworICAgIGNhcmQgPSB0eXBlQ2FsbG9jKENBUkQsIChzaXplX3QpIDEpOworICAgIGNhcmQtPnRpdGxlID0gc3RyZHVwKHRpdGxlKTsKKyAgICBjYXJkLT5jb250ZW50ID0gc3RyZHVwKCIiKTsKKworICAgIGlmIChxID09IDApIHsKKwljYXJkLT5saW5rID0gYWxsX2NhcmRzOworCWFsbF9jYXJkcyA9IGNhcmQ7CisgICAgfSBlbHNlIHsKKwljYXJkLT5saW5rID0gcS0+bGluazsKKwlxLT5saW5rID0gY2FyZDsKKyAgICB9CisKKyAgICByZXR1cm4gY2FyZDsKK30KKworc3RhdGljIHZvaWQKK2FkZF9jb250ZW50KENBUkQgKiBjYXJkLCBjb25zdCBjaGFyICpjb250ZW50KQoreworICAgIHNpemVfdCB0b3RhbCwgb2Zmc2V0OworCisgICAgY29udGVudCA9IHNraXAoY29udGVudCk7CisgICAgaWYgKCh0b3RhbCA9IHN0cmxlbihjb250ZW50KSkgIT0gMCkgeworCWlmIChjYXJkLT5jb250ZW50ICE9IDAgJiYgKG9mZnNldCA9IHN0cmxlbihjYXJkLT5jb250ZW50KSkgIT0gMCkgeworCSAgICB0b3RhbCArPSAxICsgb2Zmc2V0OworCSAgICBjYXJkLT5jb250ZW50ID0gdHlwZVJlYWxsb2MoY2hhciwgdG90YWwgKyAxLCBjYXJkLT5jb250ZW50KTsKKwkgICAgaWYgKGNhcmQtPmNvbnRlbnQpCisJCXN0cmNweShjYXJkLT5jb250ZW50ICsgb2Zmc2V0KyssICIgIik7CisJfSBlbHNlIHsKKwkgICAgb2Zmc2V0ID0gMDsKKwkgICAgaWYgKGNhcmQtPmNvbnRlbnQgIT0gMCkKKwkJZnJlZShjYXJkLT5jb250ZW50KTsKKwkgICAgY2FyZC0+Y29udGVudCA9IHR5cGVNYWxsb2MoY2hhciwgdG90YWwgKyAxKTsKKwl9CisJaWYgKGNhcmQtPmNvbnRlbnQpCisJICAgIHN0cmNweShjYXJkLT5jb250ZW50ICsgb2Zmc2V0LCBjb250ZW50KTsKKwllbHNlCisJICAgIGZhaWxlZCgiYWRkX2NvbnRlbnQiKTsKKyAgICB9Cit9CisKK3N0YXRpYyBDQVJEICoKK25ld19jYXJkKHZvaWQpCit7CisgICAgQ0FSRCAqY2FyZCA9IGFkZF90aXRsZSgiIik7CisgICAgYWRkX2NvbnRlbnQoY2FyZCwgIiIpOworICAgIHJldHVybiBjYXJkOworfQorCitzdGF0aWMgQ0FSRCAqCitmaW5kX2NhcmQoY2hhciAqdGl0bGUpCit7CisgICAgQ0FSRCAqY2FyZDsKKworICAgIGZvciAoY2FyZCA9IGFsbF9jYXJkczsgY2FyZCAhPSAwOyBjYXJkID0gY2FyZC0+bGluaykKKwlpZiAoIXN0cmNtcChjYXJkLT50aXRsZSwgdGl0bGUpKQorCSAgICBicmVhazsKKworICAgIHJldHVybiBjYXJkOworfQorCitzdGF0aWMgdm9pZAorcmVhZF9kYXRhKGNoYXIgKmZuYW1lKQoreworICAgIEZJTEUgKmZwOworICAgIENBUkQgKmNhcmQgPSAwOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWl07CisKKyAgICBpZiAoKGZwID0gZm9wZW4oZm5hbWUsICJyIikpICE9IDApIHsKKwl3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZnApKSB7CisJICAgIHRyaW0oYnVmZmVyKTsKKwkgICAgaWYgKGlzc3BhY2UoVUNoYXIoKmJ1ZmZlcikpKSB7CisJCWlmIChjYXJkID09IDApCisJCSAgICBjYXJkID0gYWRkX3RpdGxlKCIiKTsKKwkJYWRkX2NvbnRlbnQoY2FyZCwgYnVmZmVyKTsKKwkgICAgfSBlbHNlIGlmICgoY2FyZCA9IGZpbmRfY2FyZChidWZmZXIpKSA9PSAwKSB7CisJCWNhcmQgPSBhZGRfdGl0bGUoYnVmZmVyKTsKKwkgICAgfQorCX0KKwlmY2xvc2UoZnApOworICAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkCit3cml0ZV9kYXRhKGNvbnN0IGNoYXIgKmZuYW1lKQoreworICAgIEZJTEUgKmZwOworICAgIENBUkQgKnAgPSAwOworICAgIGludCBuOworCisgICAgaWYgKCFzdHJjbXAoZm5hbWUsIGRlZmF1bHRfbmFtZSkpCisJZm5hbWUgPSAiY2FyZGZpbGUub3V0IjsKKworICAgIGlmICgoZnAgPSBmb3BlbihmbmFtZSwgInciKSkgIT0gMCkgeworCWZvciAocCA9IGFsbF9jYXJkczsgcCAhPSAwOyBwID0gcC0+bGluaykgeworCSAgICBGSUVMRCAqKmYgPSBmb3JtX2ZpZWxkcyhwLT5mb3JtKTsKKwkgICAgZm9yIChuID0gMDsgZltuXSAhPSAwOyBuKyspIHsKKwkJY2hhciAqcyA9IGZpZWxkX2J1ZmZlcihmW25dLCAwKTsKKwkJaWYgKHMgIT0gMAorCQkgICAgJiYgKHMgPSBzdHJkdXAocykpICE9IDApIHsKKwkJICAgIHRyaW0ocyk7CisJCSAgICBmcHJpbnRmKGZwLCAiJXMlc1xuIiwgbiA/ICJcdCIgOiAiIiwgcyk7CisJCSAgICBmcmVlKHMpOworCQl9CisJICAgIH0KKwl9CisJZmNsb3NlKGZwKTsKKyAgICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQ291bnQgdGhlIGNhcmRzCisgKi8KK3N0YXRpYyBpbnQKK2NvdW50X2NhcmRzKHZvaWQpCit7CisgICAgQ0FSRCAqcDsKKyAgICBpbnQgY291bnQgPSAwOworCisgICAgZm9yIChwID0gYWxsX2NhcmRzOyBwICE9IDA7IHAgPSBwLT5saW5rKQorCWNvdW50Kys7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKKy8qCisgKiBTaHVmZmxlIHRoZSBwYW5lbHMgdG8ga2VlcCB0aGVtIGluIGEgbmF0dXJhbCBoaWVyYXJjaHkuCisgKi8KK3N0YXRpYyB2b2lkCitvcmRlcl9jYXJkcyhDQVJEICogZmlyc3QsIGludCBkZXB0aCkKK3sKKyAgICBpZiAoZmlyc3QpIHsKKwlpZiAoZGVwdGggJiYgZmlyc3QtPmxpbmspCisJICAgIG9yZGVyX2NhcmRzKGZpcnN0LT5saW5rLCBkZXB0aCAtIDEpOworCWlmIChpc1Zpc2libGUoZmlyc3QpKQorCSAgICB0b3BfcGFuZWwoZmlyc3QtPnBhbmVsKTsKKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIG5leHQgY2FyZCBpbiB0aGUgbGlzdAorICovCitzdGF0aWMgQ0FSRCAqCituZXh0X2NhcmQoQ0FSRCAqIG5vdykKK3sKKyAgICBpZiAobm93LT5saW5rICE9IDApIHsKKwlDQVJEICp0c3QgPSBub3ctPmxpbms7CisJaWYgKGlzVmlzaWJsZSh0c3QpKQorCSAgICBub3cgPSB0c3Q7CisJZWxzZQorCSAgICAodm9pZCkgbmV4dF9jYXJkKHRzdCk7CisgICAgfQorICAgIHJldHVybiBub3c7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHByZXZpb3VzIGNhcmQgaW4gdGhlIGxpc3QKKyAqLworc3RhdGljIENBUkQgKgorcHJldl9jYXJkKENBUkQgKiBub3cpCit7CisgICAgQ0FSRCAqcDsKKyAgICBmb3IgKHAgPSBhbGxfY2FyZHM7IHAgIT0gMDsgcCA9IHAtPmxpbmspIHsKKwlpZiAocC0+bGluayA9PSBub3cpIHsKKwkgICAgaWYgKCFpc1Zpc2libGUocCkpCisJCXAgPSBwcmV2X2NhcmQocCk7CisJICAgIHJldHVybiBwOworCX0KKyAgICB9CisgICAgcmV0dXJuIG5vdzsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGZpcnN0IGNhcmQgaW4gdGhlIGxpc3QgdGhhdCB3ZSB3aWxsIGRpc3BsYXkuCisgKi8KK3N0YXRpYyBDQVJEICoKK2ZpcnN0X2NhcmQoQ0FSRCAqIG5vdykKK3sKKyAgICBpZiAoIWlzVmlzaWJsZShub3cpKQorCW5vdyA9IG5leHRfY2FyZChub3cpOworICAgIHJldHVybiBub3c7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtX3ZpcnR1YWxpemUoV0lORE9XICp3KQoreworICAgIGludCBjID0gd2dldGNoKHcpOworCisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSBDVFJMKCdXJyk6CisJcmV0dXJuIChNWV9DVFJMX1cpOworICAgIGNhc2UgQ1RSTCgnTicpOgorCXJldHVybiAoTVlfQ1RSTF9OKTsKKyAgICBjYXNlIENUUkwoJ1AnKToKKwlyZXR1cm4gKE1ZX0NUUkxfUCk7CisgICAgY2FzZSBRVUlUOgorICAgIGNhc2UgRVNDQVBFOgorCXJldHVybiAoTVlfQ1RSTF9RKTsKKworICAgIGNhc2UgS0VZX0JBQ0tTUEFDRToKKwlyZXR1cm4gKFJFUV9ERUxfUFJFVik7CisgICAgY2FzZSBLRVlfREM6CisJcmV0dXJuIChSRVFfREVMX0NIQVIpOworICAgIGNhc2UgS0VZX0xFRlQ6CisJcmV0dXJuIChSRVFfTEVGVF9DSEFSKTsKKyAgICBjYXNlIEtFWV9SSUdIVDoKKwlyZXR1cm4gKFJFUV9SSUdIVF9DSEFSKTsKKworICAgIGNhc2UgS0VZX0RPV046CisgICAgY2FzZSBLRVlfTkVYVDoKKwlyZXR1cm4gKFJFUV9ORVhUX0ZJRUxEKTsKKyAgICBjYXNlIEtFWV9VUDoKKyAgICBjYXNlIEtFWV9QUkVWSU9VUzoKKwlyZXR1cm4gKFJFUV9QUkVWX0ZJRUxEKTsKKworICAgIGRlZmF1bHQ6CisJcmV0dXJuIChjKTsKKyAgICB9Cit9CisKK3N0YXRpYyBGSUVMRCAqKgorbWFrZV9maWVsZHMoQ0FSRCAqIHAsIGludCBmb3JtX2hpZ2gsIGludCBmb3JtX3dpZGUpCit7CisgICAgRklFTEQgKipmID0gdHlwZUNhbGxvYyhGSUVMRCAqLCAoc2l6ZV90KSAzKTsKKworICAgIGZbMF0gPSBuZXdfZmllbGQoMSwgZm9ybV93aWRlLCAwLCAwLCAwLCAwKTsKKyAgICBzZXRfZmllbGRfYmFjayhmWzBdLCBBX1JFVkVSU0UpOworICAgIHNldF9maWVsZF9idWZmZXIoZlswXSwgMCwgcC0+dGl0bGUpOworICAgIGZpZWxkX29wdHNfb2ZmKGZbMF0sIE9fQkxBTkspOworCisgICAgZlsxXSA9IG5ld19maWVsZChmb3JtX2hpZ2ggLSAxLCBmb3JtX3dpZGUsIDEsIDAsIDAsIDApOworICAgIHNldF9maWVsZF9idWZmZXIoZlsxXSwgMCwgcC0+Y29udGVudCk7CisgICAgc2V0X2ZpZWxkX2p1c3QoZlsxXSwgSlVTVElGWV9MRUZUKTsKKyAgICBmaWVsZF9vcHRzX29mZihmWzFdLCBPX0JMQU5LKTsKKworICAgIGZbMl0gPSAwOworICAgIHJldHVybiBmOworfQorCitzdGF0aWMgdm9pZAorc2hvd19sZWdlbmQodm9pZCkKK3sKKyAgICBlcmFzZSgpOworICAgIG1vdmUoTElORVMgLSAzLCAwKTsKKyAgICBhZGRzdHIoIl5RL0VTQyAtLSBleGl0IGZvcm0gICAgICAgICAgICBeVyAgIC0tIHdyaXRlcyBkYXRhIHRvIGZpbGVcbiIpOworICAgIGFkZHN0cigiXk4gICAtLSBnbyB0byBuZXh0IGNhcmQgICAgICAgIF5QICAgLS0gZ28gdG8gcHJldmlvdXMgY2FyZFxuIik7CisgICAgYWRkc3RyKCJBcnJvdyBrZXlzIG1vdmUgbGVmdC9yaWdodCB3aXRoaW4gYSBmaWVsZCwgdXAvZG93biBiZXR3ZWVuIGZpZWxkcyIpOworfQorCisjaWYgKGRlZmluZWQoS0VZX1JFU0laRSkgJiYgSEFWRV9XUkVTSVpFKSB8fCBOT19MRUFLUworc3RhdGljIHZvaWQKK2ZyZWVfZm9ybV9maWVsZHMoRklFTEQgKiogZikKK3sKKyAgICBpbnQgbjsKKworICAgIGZvciAobiA9IDA7IGZbbl0gIT0gMDsgKytuKSB7CisJZnJlZV9maWVsZChmW25dKTsKKyAgICB9CisgICAgZnJlZShmKTsKK30KKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQKK2NhcmRmaWxlKGNoYXIgKmZuYW1lKQoreworICAgIFdJTkRPVyAqd2luOworICAgIENBUkQgKnA7CisgICAgQ0FSRCAqdG9wX2NhcmQ7CisgICAgaW50IHZpc2libGVfY2FyZHM7CisgICAgaW50IHBhbmVsX3dpZGU7CisgICAgaW50IHBhbmVsX2hpZ2g7CisgICAgaW50IGZvcm1fd2lkZTsKKyAgICBpbnQgZm9ybV9oaWdoOworICAgIGludCB5OworICAgIGludCB4OworICAgIGludCBjaCA9IEVSUjsKKyAgICBpbnQgZmluaXNoZWQgPSBGQUxTRTsKKworICAgIHNob3dfbGVnZW5kKCk7CisKKyAgICAvKiBkZWNpZGUgaG93IG1hbnkgY2FyZHMgd2UgY2FuIGRpc3BsYXkgKi8KKyAgICB2aXNpYmxlX2NhcmRzID0gY291bnRfY2FyZHMoKTsKKyAgICB3aGlsZSAoCisJICAgICAgKHBhbmVsX3dpZGUgPSBDT0xTIC0gKHZpc2libGVfY2FyZHMgKiBPRkZTRVRfQ0FSRCkpIDwgMTAgfHwKKwkgICAgICAocGFuZWxfaGlnaCA9IExJTkVTIC0gKHZpc2libGVfY2FyZHMgKiBPRkZTRVRfQ0FSRCkgLSA1KSA8IDUpIHsKKwktLXZpc2libGVfY2FyZHM7CisgICAgfQorICAgIGZvcm1fd2lkZSA9IHBhbmVsX3dpZGUgLSAyOworICAgIGZvcm1faGlnaCA9IHBhbmVsX2hpZ2ggLSAyOworICAgIHkgPSAodmlzaWJsZV9jYXJkcyAtIDEpICogT0ZGU0VUX0NBUkQ7CisgICAgeCA9IDA7CisKKyAgICAvKiBtYWtlIGEgcGFuZWwgZm9yIGVhY2ggQ0FSRCAqLworICAgIGZvciAocCA9IGFsbF9jYXJkczsgcCAhPSAwOyBwID0gcC0+bGluaykgeworCisJaWYgKCh3aW4gPSBuZXd3aW4ocGFuZWxfaGlnaCwgcGFuZWxfd2lkZSwgeSwgeCkpID09IDApCisJICAgIGJyZWFrOworCisJd2JrZ2Qod2luLCAoY2h0eXBlKSBDT0xPUl9QQUlSKHBhaXJfMikpOworCWtleXBhZCh3aW4sIFRSVUUpOworCXAtPnBhbmVsID0gbmV3X3BhbmVsKHdpbik7CisJYm94KHdpbiwgMCwgMCk7CisKKwlwLT5mb3JtID0gbmV3X2Zvcm0obWFrZV9maWVsZHMocCwgZm9ybV9oaWdoLCBmb3JtX3dpZGUpKTsKKwlzZXRfZm9ybV93aW4ocC0+Zm9ybSwgd2luKTsKKwlzZXRfZm9ybV9zdWIocC0+Zm9ybSwgZGVyd2luKHdpbiwgZm9ybV9oaWdoLCBmb3JtX3dpZGUsIDEsIDEpKTsKKwlwb3N0X2Zvcm0ocC0+Zm9ybSk7CisKKwl5IC09IE9GRlNFVF9DQVJEOworCXggKz0gT0ZGU0VUX0NBUkQ7CisgICAgfQorCisgICAgdG9wX2NhcmQgPSBmaXJzdF9jYXJkKGFsbF9jYXJkcyk7CisgICAgb3JkZXJfY2FyZHModG9wX2NhcmQsIHZpc2libGVfY2FyZHMpOworCisgICAgd2hpbGUgKCFmaW5pc2hlZCkgeworCXVwZGF0ZV9wYW5lbHMoKTsKKwlkb3VwZGF0ZSgpOworCisJY2ggPSBmb3JtX3ZpcnR1YWxpemUocGFuZWxfd2luZG93KHRvcF9jYXJkLT5wYW5lbCkpOworCXN3aXRjaCAoZm9ybV9kcml2ZXIodG9wX2NhcmQtPmZvcm0sIGNoKSkgeworCWNhc2UgRV9PSzoKKwkgICAgYnJlYWs7CisJY2FzZSBFX1VOS05PV05fQ09NTUFORDoKKwkgICAgc3dpdGNoIChjaCkgeworCSAgICBjYXNlIE1ZX0NUUkxfUToKKwkJZmluaXNoZWQgPSBUUlVFOworCQlicmVhazsKKwkgICAgY2FzZSBNWV9DVFJMX1A6CisJCXRvcF9jYXJkID0gcHJldl9jYXJkKHRvcF9jYXJkKTsKKwkJb3JkZXJfY2FyZHModG9wX2NhcmQsIHZpc2libGVfY2FyZHMpOworCQlicmVhazsKKwkgICAgY2FzZSBNWV9DVFJMX046CisJCXRvcF9jYXJkID0gbmV4dF9jYXJkKHRvcF9jYXJkKTsKKwkJb3JkZXJfY2FyZHModG9wX2NhcmQsIHZpc2libGVfY2FyZHMpOworCQlicmVhazsKKwkgICAgY2FzZSBNWV9DVFJMX1c6CisJCWZvcm1fZHJpdmVyKHRvcF9jYXJkLT5mb3JtLCBSRVFfVkFMSURBVElPTik7CisJCXdyaXRlX2RhdGEoZm5hbWUpOworCQlicmVhazsKKyNpZiBkZWZpbmVkKEtFWV9SRVNJWkUpICYmIEhBVkVfV1JFU0laRQorCSAgICBjYXNlIEtFWV9SRVNJWkU6CisJCS8qIHJlc2l6ZXRlcm0gYWxyZWFkeSBkaWQgInNvbWV0aGluZyIgcmVhc29uYWJsZSwgYnV0IGl0IGNhbm5vdAorCQkgKiBrbm93IG11Y2ggYWJvdXQgbGF5b3V0LiAgU28gbGV0J3MgbWFrZSBpdCBuaWNlci4KKwkJICovCisJCXBhbmVsX3dpZGUgPSBDT0xTIC0gKHZpc2libGVfY2FyZHMgKiBPRkZTRVRfQ0FSRCk7CisJCXBhbmVsX2hpZ2ggPSBMSU5FUyAtICh2aXNpYmxlX2NhcmRzICogT0ZGU0VUX0NBUkQpIC0gNTsKKworCQlmb3JtX3dpZGUgPSBwYW5lbF93aWRlIC0gMjsKKwkJZm9ybV9oaWdoID0gcGFuZWxfaGlnaCAtIDI7CisKKwkJeSA9ICh2aXNpYmxlX2NhcmRzIC0gMSkgKiBPRkZTRVRfQ0FSRDsKKwkJeCA9IDA7CisKKwkJc2hvd19sZWdlbmQoKTsKKwkJZm9yIChwID0gYWxsX2NhcmRzOyBwICE9IDA7IHAgPSBwLT5saW5rKSB7CisJCSAgICBGSUVMRCAqKm9sZGYgPSBmb3JtX2ZpZWxkcyhwLT5mb3JtKTsKKwkJICAgIFdJTkRPVyAqb2xkcyA9IGZvcm1fc3ViKHAtPmZvcm0pOworCisJCSAgICBpZiAoIWlzVmlzaWJsZShwKSkKKwkJCWNvbnRpbnVlOworCQkgICAgd2luID0gZm9ybV93aW4ocC0+Zm9ybSk7CisKKwkJICAgIC8qIG1vdmUgYW5kIHJlc2l6ZSB0aGUgY2FyZCBhcyBuZWVkZWQKKwkJICAgICAqIEZJWE1FOiBpZiB0aGUgd2luZG93cyBhcmUgc2hydW5rIHRvbyBtdWNoLCB0aGlzIHdvbid0IGRvCisJCSAgICAgKi8KKwkJICAgIG12d2luKHdpbiwgeSwgeCk7CisJCSAgICB3cmVzaXplKHdpbiwgcGFuZWxfaGlnaCwgcGFuZWxfd2lkZSk7CisKKwkJICAgIC8qIHJlY29uc3RydWN0IGVhY2ggZm9ybS4gIEZvcm1zIGFyZSBub3QgcmVzaXphYmxlLCBhbmQKKwkJICAgICAqIHRoZXJlIGFwcGVhcnMgdG8gYmUgbm8gZ29vZCB3YXkgdG8gcmVsb2FkIHRoZSB0ZXh0IGluCisJCSAgICAgKiBhIHJlc2l6ZWQgd2luZG93LgorCQkgICAgICovCisJCSAgICB3ZXJhc2Uod2luKTsKKworCQkgICAgdW5wb3N0X2Zvcm0ocC0+Zm9ybSk7CisJCSAgICBmcmVlX2Zvcm0ocC0+Zm9ybSk7CisKKwkJICAgIHAtPmZvcm0gPSBuZXdfZm9ybShtYWtlX2ZpZWxkcyhwLCBmb3JtX2hpZ2gsIGZvcm1fd2lkZSkpOworCQkgICAgc2V0X2Zvcm1fd2luKHAtPmZvcm0sIHdpbik7CisJCSAgICBzZXRfZm9ybV9zdWIocC0+Zm9ybSwgZGVyd2luKHdpbiwgZm9ybV9oaWdoLCBmb3JtX3dpZGUsCisJCQkJCQkgMSwgMSkpOworCQkgICAgcG9zdF9mb3JtKHAtPmZvcm0pOworCisJCSAgICBmcmVlX2Zvcm1fZmllbGRzKG9sZGYpOworCQkgICAgZGVsd2luKG9sZHMpOworCisJCSAgICBib3god2luLCAwLCAwKTsKKworCQkgICAgeSAtPSBPRkZTRVRfQ0FSRDsKKwkJICAgIHggKz0gT0ZGU0VUX0NBUkQ7CisJCX0KKwkJYnJlYWs7CisjZW5kaWYKKwkgICAgZGVmYXVsdDoKKwkJYmVlcCgpOworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBmbGFzaCgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorI2lmIE5PX0xFQUtTCisgICAgd2hpbGUgKGFsbF9jYXJkcyAhPSAwKSB7CisJRklFTEQgKipmOworCisJcCA9IGFsbF9jYXJkczsKKwlhbGxfY2FyZHMgPSBhbGxfY2FyZHMtPmxpbms7CisKKwlpZiAoaXNWaXNpYmxlKHApKSB7CisJICAgIGYgPSBmb3JtX2ZpZWxkcyhwLT5mb3JtKTsKKworCSAgICB1bnBvc3RfZm9ybShwLT5mb3JtKTsJLyogLi4uc28gd2UgY2FuIGZyZWUgaXQgKi8KKwkgICAgZnJlZV9mb3JtKHAtPmZvcm0pOwkvKiB0aGlzIGFsc28gZGlzY29ubmVjdHMgdGhlIGZpZWxkcyAqLworCisJICAgIGZyZWVfZm9ybV9maWVsZHMoZik7CisKKwkgICAgZGVsX3BhbmVsKHAtPnBhbmVsKTsKKwl9CisJZnJlZShwLT50aXRsZSk7CisJZnJlZShwLT5jb250ZW50KTsKKwlmcmVlKHApOworICAgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqbXNnW10gPQorICAgIHsKKwkiVXNhZ2U6IHZpZXcgW29wdGlvbnNdIGZpbGUiCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAtYyAgICAgICB1c2UgY29sb3IgaWYgdGVybWluYWwgc3VwcG9ydHMgaXQiCisgICAgfTsKKyAgICBzaXplX3QgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKG1zZyk7IG4rKykKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2dbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgbjsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgobiA9IGdldG9wdChhcmdjLCBhcmd2LCAiYyIpKSAhPSAtMSkgeworCXN3aXRjaCAobikgeworCWNhc2UgJ2MnOgorCSAgICB0cnlfY29sb3IgPSBUUlVFOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisKKyAgICBpZiAodHJ5X2NvbG9yKSB7CisJaWYgKGhhc19jb2xvcnMoKSkgeworCSAgICBzdGFydF9jb2xvcigpOworCSAgICBpbml0X3BhaXIocGFpcl8xLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJICAgIGluaXRfcGFpcihwYWlyXzIsIENPTE9SX1dISVRFLCBDT0xPUl9DWUFOKTsKKwkgICAgYmtnZCgoY2h0eXBlKSBDT0xPUl9QQUlSKHBhaXJfMSkpOworCX0gZWxzZSB7CisJICAgIHRyeV9jb2xvciA9IEZBTFNFOworCX0KKyAgICB9CisKKyAgICBpZiAob3B0aW5kICsgMSA9PSBhcmdjKSB7CisJZm9yIChuID0gMTsgbiA8IGFyZ2M7IG4rKykKKwkgICAgcmVhZF9kYXRhKGFyZ3Zbbl0pOworCWlmIChjb3VudF9jYXJkcygpID09IDApCisJICAgIG5ld19jYXJkKCk7CisJY2FyZGZpbGUoYXJndlsxXSk7CisgICAgfSBlbHNlIHsKKwlyZWFkX2RhdGEoZGVmYXVsdF9uYW1lKTsKKwlpZiAoY291bnRfY2FyZHMoKSA9PSAwKQorCSAgICBuZXdfY2FyZCgpOworCWNhcmRmaWxlKGRlZmF1bHRfbmFtZSk7CisgICAgfQorCisgICAgZW5kd2luKCk7CisKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBjdXJzZXMgZm9ybSBhbmQgcGFuZWwgbGlicmFyaWVzXG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2NhcmRmaWxlLmRhdCBiL3Rlc3QvY2FyZGZpbGUuZGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYjRiNzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NhcmRmaWxlLmRhdApAQCAtMCwwICsxLDEzIEBACit0aXRsZSAxCisJU29tZSB0ZXh0IGZvciB0aXRsZTEKKwlhbmQgc29tZSBtb3JlIHRleHQKK3RpdGxlIDIKKwlUaGUgcXVpY2tlciBicm93biBmb3ggcmFuIGFsbCBvdmVyIHRoZSBsYXp5IGRvZy4KK3B1dCBhIGNhcmQgYmVmb3JlIHRoZSBmaXJzdCB0d28KKwlUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBzaW1wbGUgY2FyZGZpbGUuCitzaG93IGEgZm91cnRoIGNhcmQKKwlUaGUgZm91cnRoIGNhcmQKKwloYXMgYSBsYXJnZSBhbW91bnQgb2YgZGF0YSwKKwltb3JlIHRoYW4gdGhlIG90aGVyIGNhcmRzLgorCUF0IGxlYXN0LCB0aGF0IGlzIHdoYXQgSSB0aG91Z2h0IGl0IHNob3VsZCBkbywgc2luY2UgSSB3YW50IHRvIHNlZSBob3cgd2VsbAorCXRoZSBmb3JtcyBwYWNrYWdlIGhhbmRsZXMganVzdGlmaWNhdGlvbi4KZGlmZiAtLWdpdCBhL3Rlc3QvY2hnYXQuYyBiL3Rlc3QvY2hnYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTliNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jaGdhdC5jCkBAIC0wLDAgKzEsMzc3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMTAsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogY2hnYXQuYyx2IDEuMTIgMjAxMi8xMS8xOCAwMTo1NTozNSB0b20gRXhwICQKKyAqCisgKiB0ZXN0LWRyaXZlciBmb3IgY2hnYXQvd2NoZ2F0L212Y2hnYXQvbXZ3Y2hnYXQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBIQVZFX0NIR0FUCisKKyNkZWZpbmUgU0hPVyhuKSAoKG4pID09IEVSUiA/ICJFUlIiIDogIk9LIikKKyNkZWZpbmUgQ09MT1JfREVGQVVMVCAoLTEpCisKKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTl9QQVRDSCkgJiYgTkNVUlNFU19WRVJTSU9OX1BBVENIIDwgMjAwNjA3MTUKKyNkZWZpbmUgdG91Y2hfaWZfbmVlZGVkKHdpbiwgcm93KSB0b3VjaGxpbmUod2luLCByb3csIDEpCisjZWxzZQorI2RlZmluZSB0b3VjaF9pZl9uZWVkZWQod2luLCByb3cpCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgYzsKKyAgICB1bnNpZ25lZCB2OworICAgIHNob3J0IHBhaXI7CisgICAgdW5zaWduZWQgYXR0cjsKKyAgICBpbnQgY291bnQ7CisgICAgaW50IGNoOworICAgIGNvbnN0IGNoYXIgKmNfbXNnOworICAgIGNvbnN0IGNoYXIgKnZfbXNnOworICAgIGludCB5X3ZhbDsKKyAgICBpbnQgeF92YWw7CisgICAgaW50IHlfYmVnLCB4X2JlZzsKKyAgICBpbnQgeV9tYXgsIHhfbWF4OworfSBTVEFUVVM7CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2NvbG9yX3BhcmFtcyh1bnNpZ25lZCBzdGF0ZSwgc2hvcnQgKnBhaXIpCit7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgc3RhdGljIHN0cnVjdCB7CisJc2hvcnQgcGFpcjsKKwlzaG9ydCBmZywgYmc7CisJY29uc3QgY2hhciAqbXNnOworICAgIH0gdGFibGVbXSA9IHsKKwl7IDAsIENPTE9SX0RFRkFVTFQsIENPTE9SX0RFRkFVTFQsICJkZWZhdWx0IiB9LAorCXsgMSwgQ09MT1JfUkVELCAgICAgQ09MT1JfQkxBQ0ssICAgInJlZC9ibGFjayIgfSwKKwl7IDIsIENPTE9SX1dISVRFLCAgIENPTE9SX0JMVUUsICAgICJ3aGl0ZS9ibHVlIiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIHN0YXRpYyBib29sIGZpcnN0ID0gVFJVRTsKKyAgICBjb25zdCBjaGFyICpyZXN1bHQgPSAwOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWlmIChmaXJzdCkgeworCSAgICB1bnNpZ25lZCBuOworCisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyArK24pIHsKKwkJaW5pdF9wYWlyKHRhYmxlW25dLnBhaXIsIHRhYmxlW25dLmZnLCB0YWJsZVtuXS5iZyk7CisJICAgIH0KKwl9CisJaWYgKHN0YXRlIDwgU0laRU9GKHRhYmxlKSkgeworCSAgICAqcGFpciA9IHRhYmxlW3N0YXRlXS5wYWlyOworCSAgICByZXN1bHQgPSB0YWJsZVtzdGF0ZV0ubXNnOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgordmlkZW9fcGFyYW1zKHVuc2lnbmVkIHN0YXRlLCB1bnNpZ25lZCAqYXR0cikKK3sKKyAgICAvKiAqSU5ERU5ULU9GRiogKi8KKyAgICBzdGF0aWMgc3RydWN0IHsKKwl1bnNpZ25lZCBhdHRyOworCWNvbnN0IGNoYXIgKm1zZzsKKyAgICB9IHRhYmxlW10gPSB7CisJeyBBX05PUk1BTCwJIm5vcm1hbCIgfSwKKwl7IEFfQk9MRCwJImJvbGQiIH0sCisJeyBBX1JFVkVSU0UsCSJyZXZlcnNlIiB9LAorCXsgQV9VTkRFUkxJTkUsCSJ1bmRlcmxpbmUiIH0sCisJeyBBX0JMSU5LLCAJImJsaW5rIiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoc3RhdGUgPCBTSVpFT0YodGFibGUpKSB7CisJKmF0dHIgPSB0YWJsZVtzdGF0ZV0uYXR0cjsKKwlyZXN1bHQgPSB0YWJsZVtzdGF0ZV0ubXNnOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBmaWxsIHRoZSB3aW5kb3cgd2l0aCBhIHRlc3QtcGF0dGVybiAqLworc3RhdGljIHZvaWQKK2ZpbGxfd2luZG93KFdJTkRPVyAqd2luKQoreworICAgIGludCB5LCB4OworICAgIGludCB5MCA9IC0xLCB4MCA9IC0xOworCisgICAgZ2V0eXgod2luLCB5LCB4KTsKKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdoaWxlICh3YWRkc3RyKHdpbiwgIjAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogIikgIT0gRVJSKSB7CisJaW50IHkxLCB4MTsKKwlnZXR5eCh3aW4sIHkxLCB4MSk7CisJaWYgKHkxID09IHkwICYmIHgxID09IHgwKQorCSAgICBicmVhazsKKwl4MCA9IHgxOworCXkwID0geTE7CisgICAgfQorICAgIHdtb3ZlKHdpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3N0YXR1cyhXSU5ET1cgKndpbiwgU1RBVFVTICogc3ApCit7CisgICAgaW50IHksIHg7CisKKyAgICBnZXR5eCh3aW4sIHksIHgpOworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd3ByaW50dyh3aW4sICJDb3VudCAlZCIsIHNwLT5jb3VudCk7CisgICAgaWYgKHNwLT52X21zZyAhPSAwKQorCXdwcmludHcod2luLCAiIFZpZGVvICVzIiwgc3AtPnZfbXNnKTsKKyAgICBpZiAoc3AtPmNfbXNnICE9IDApCisJd3ByaW50dyh3aW4sICIgQ29sb3IgJXMiLCBzcC0+Y19tc2cpOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHdtb3ZlKHdpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCitkb19zdWJ3aW5kb3coV0lORE9XICp3aW4sIFNUQVRVUyAqIHNwLCB2b2lkIGZ1bmMoV0lORE9XICopKQoreworICAgIFdJTkRPVyAqd2luMSA9IG5ld3dpbihzcC0+eV9tYXggLSAyLCBzcC0+eF9tYXggLSAyLAorCQkJICBzcC0+eV9iZWcgKyAxLCBzcC0+eF9iZWcgKyAxKTsKKworICAgIGlmICh3aW4xICE9IDAgJiYgc3AtPnlfbWF4ID4gNCAmJiBzcC0+eF9tYXggPiA0KSB7CisJV0lORE9XICp3aW4yID0gZGVyd2luKHdpbjEsIHNwLT55X21heCAtIDQsIHNwLT54X21heCAtIDQsIDEsIDEpOworCisJaWYgKHdpbjIgIT0gMCkgeworCSAgICBib3god2luMSwgMCwgMCk7CisJICAgIHdyZWZyZXNoKHdpbjEpOworCSAgICBmdW5jKHdpbjIpOworCisJICAgIGRlbHdpbih3aW4yKTsKKwl9IGVsc2UgeworCSAgICBiZWVwKCk7CisJfQorCWRlbHdpbih3aW4xKTsKKwl0b3VjaHdpbih3aW4pOworICAgIH0gZWxzZSB7CisJaWYgKHdpbjEgIT0gMCkKKwkgICAgZGVsd2luKHdpbjEpOworCWJlZXAoKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X3N0YXR1cyhXSU5ET1cgKndpbiwgU1RBVFVTICogc3ApCit7CisgICAgbWVtc2V0KHNwLCAwLCBzaXplb2YoKnNwKSk7CisgICAgc3AtPmMgPSA5OTsKKyAgICBzcC0+diA9IDk5OworICAgIHNwLT5jaCA9ICcgJzsKKworICAgIGtleXBhZCh3aW4sIFRSVUUpOworICAgIGZpbGxfd2luZG93KHdpbik7CisKKyAgICBnZXRiZWd5eCh3aW4sIHNwLT55X2JlZywgc3AtPnhfYmVnKTsKKyAgICBnZXRtYXh5eCh3aW4sIHNwLT55X21heCwgc3AtPnhfbWF4KTsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfaGVscChXSU5ET1cgKndpbikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqdGFibGVbXSA9CisgICAgeworCSJCYXNpYyBjb21tYW5kczoiCisJLCJVc2UgaC9qL2svbCBvciBhcnJvdyBrZXlzIHRvIG1vdmUgdGhlIGN1cnNvci4iCisJLCJTZXQgdGhlIGNvdW50IHBhcmFtZXRlciBmb3IgY2hnYXQgYnkgZW50ZXJpbmcgZGlnaXRzIDAtOS4iCisJLCIiCisJLCJPdGhlciBjb21tYW5kczoiCisJLCJzcGFjZSB0b2dnbGVzIHRocm91Z2ggdGhlIHNldCBvZiB2aWRlbyBhdHRyaWJ1dGVzIGFuZCBjb2xvcnMuIgorCSwidCAgICAgdG91Y2hlcyAoZm9yY2VzIHJlcGFpbnQpIG9mIHRoZSBjdXJyZW50IGxpbmUuIgorCSwiLiAgICAgY2FsbHMgKmNoZ2F0IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIHdpdGggdGhlIGdpdmVuIGNvdW50LiIKKwksIiwgICAgIGNhbGxzICpjaGdhdCBhdCB0aGUgd2luZG93IGJlZ2lubmluZyB3aXRoIHRoZSBnaXZlbiBjb3VudC4iCisJLCI9ICAgICByZXNldHMgY291bnQgdG8gemVyby4iCisJLCItICAgICBuZWdhdGVzIGNvdW50LiIKKwksIj8gICAgIHNob3dzIHRoaXMgaGVscC13aW5kb3ciCisJLCIiCisJLCIiCisgICAgfTsKKworICAgIGludCB5X21heCwgeF9tYXg7CisgICAgaW50IHJvdzsKKworICAgIGdldG1heHl4KHdpbiwgeV9tYXgsIHhfbWF4KTsKKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IChpbnQpIFNJWkVPRih0YWJsZSkgJiYgcm93IDwgeV9tYXg7ICsrcm93KSB7CisJTXZXUHJpbnR3KHdpbiwgcm93LCAwLCAiJS4qcyIsIHhfbWF4LCB0YWJsZVtyb3ddKTsKKyAgICB9CisgICAgd2hpbGUgKHdnZXRjaCh3aW4pICE9ICdxJykKKwliZWVwKCk7Cit9CisKK3N0YXRpYyB2b2lkCit1cGRhdGVfc3RhdHVzKFdJTkRPVyAqd2luLCBTVEFUVVMgKiBzcCkKK3sKKyAgICBzd2l0Y2ggKHNwLT5jaCkgeworICAgIGNhc2UgJyAnOgkJCS8qIG5leHQgdGVzdC1pdGVyYXRpb24gKi8KKwlpZiAoaGFzX2NvbG9ycygpKSB7CisJICAgIGlmICgoc3AtPmNfbXNnID0gY29sb3JfcGFyYW1zKCsrKHNwLT5jKSwgJihzcC0+cGFpcikpKSA9PSAwKSB7CisJCXNwLT5jX21zZyA9IGNvbG9yX3BhcmFtcyhzcC0+YyA9IDAsICYoc3AtPnBhaXIpKTsKKwkJaWYgKChzcC0+dl9tc2cgPSB2aWRlb19wYXJhbXMoKysoc3AtPnYpLCAmKHNwLT5hdHRyKSkpID09IDApIHsKKwkJICAgIHNwLT52X21zZyA9IHZpZGVvX3BhcmFtcyhzcC0+diA9IDAsICYoc3AtPmF0dHIpKTsKKwkJfQorCSAgICB9CisJfSBlbHNlIHsKKwkgICAgaWYgKChzcC0+dl9tc2cgPSB2aWRlb19wYXJhbXMoKysoc3AtPnYpLCAmKHNwLT5hdHRyKSkpID09IDApIHsKKwkJc3AtPnZfbXNnID0gdmlkZW9fcGFyYW1zKHNwLT52ID0gMCwgJihzcC0+YXR0cikpOworCSAgICB9CisJfQorCXNwLT5jb3VudCA9IDA7CisJc2hvd19zdGF0dXMod2luLCBzcCk7CisJYnJlYWs7CisgICAgY2FzZSBLRVlfTEVGVDoKKyAgICBjYXNlICdoJzoKKwlpZiAoc3AtPnhfdmFsID4gMCkKKwkgICAgd21vdmUod2luLCBzcC0+eV92YWwsIC0tKHNwLT54X3ZhbCkpOworCWJyZWFrOworICAgIGNhc2UgS0VZX0RPV046CisgICAgY2FzZSAnaic6CisJaWYgKHNwLT55X3ZhbCA8IHNwLT55X21heCkKKwkgICAgd21vdmUod2luLCArKyhzcC0+eV92YWwpLCBzcC0+eF92YWwpOworCWJyZWFrOworICAgIGNhc2UgS0VZX1VQOgorICAgIGNhc2UgJ2snOgorCWlmIChzcC0+eV92YWwgPiAwKQorCSAgICB3bW92ZSh3aW4sIC0tKHNwLT55X3ZhbCksIHNwLT54X3ZhbCk7CisJYnJlYWs7CisgICAgY2FzZSBLRVlfUklHSFQ6CisgICAgY2FzZSAnbCc6CisJaWYgKHNwLT54X3ZhbCA8IHNwLT54X21heCkKKwkgICAgd21vdmUod2luLCBzcC0+eV92YWwsICsrKHNwLT54X3ZhbCkpOworCWJyZWFrOworICAgIGNhc2UgJ3QnOgorCXRvdWNobGluZSh3aW4sIHNwLT55X3ZhbCwgMSk7CisJYnJlYWs7CisgICAgY2FzZSAnPSc6CisJc3AtPmNvdW50ID0gMDsKKwlzaG93X3N0YXR1cyh3aW4sIHNwKTsKKwlicmVhazsKKyAgICBjYXNlICctJzoKKwlzcC0+Y291bnQgPSAtKHNwLT5jb3VudCk7CisJc2hvd19zdGF0dXMod2luLCBzcCk7CisJYnJlYWs7CisgICAgY2FzZSAnPyc6CisJZG9fc3Vid2luZG93KHdpbiwgc3AsIHNob3dfaGVscCk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlpZiAoaXNkaWdpdChzcC0+Y2gpKSB7CisJICAgIHNwLT5jb3VudCA9IChzcC0+Y291bnQgKiAxMCkgKyAoc3AtPmNoIC0gJzAnKTsKKwkgICAgc2hvd19zdGF0dXMod2luLCBzcCk7CisJfSBlbHNlIHsKKwkgICAgYmVlcCgpOworCX0KKwlicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3djaGdhdChXSU5ET1cgKndpbikKK3sKKyAgICBTVEFUVVMgc3Q7CisKKyAgICBpbml0X3N0YXR1cyh3aW4sICZzdCk7CisKKyAgICBkbyB7CisJc3dpdGNoIChzdC5jaCkgeworCWNhc2UgJy4nOgkJLyogY2hhbmdlIGZyb20gY3VycmVudCBwb3NpdGlvbiAqLworCSAgICB3Y2hnYXQod2luLCBzdC5jb3VudCwgc3QuYXR0ciwgc3QucGFpciwgKHZvaWQgKikgMCk7CisJICAgIHRvdWNoX2lmX25lZWRlZCh3aW4sIHN0LnlfdmFsKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnLCc6CQkvKiBjaGFuZ2UgZnJvbSBiZWdpbm5pbmcgb2Ygd2luZG93ICovCisJICAgIG12d2NoZ2F0KHdpbiwgMCwgMCwgc3QuY291bnQsIHN0LmF0dHIsIHN0LnBhaXIsICh2b2lkICopIDApOworCSAgICB0b3VjaF9pZl9uZWVkZWQod2luLCAwKTsKKwkgICAgd21vdmUod2luLCBzdC55X3ZhbCwgc3QueF92YWwpOworCSAgICBicmVhazsKKwljYXNlICd3JzoKKwkgICAgZG9fc3Vid2luZG93KHdpbiwgJnN0LCB0ZXN0X3djaGdhdCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3EnOgorCSAgICByZXR1cm47CisJZGVmYXVsdDoKKwkgICAgdXBkYXRlX3N0YXR1cyh3aW4sICZzdCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9IHdoaWxlICgoc3QuY2ggPSB3Z2V0Y2god2luKSkgIT0gRVJSKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfY2hnYXQodm9pZCkKK3sKKyAgICBTVEFUVVMgc3Q7CisKKyAgICBpbml0X3N0YXR1cyhzdGRzY3IsICZzdCk7CisKKyAgICBkbyB7CisJc3dpdGNoIChzdC5jaCkgeworCWNhc2UgJy4nOgkJLyogY2hhbmdlIGZyb20gY3VycmVudCBwb3NpdGlvbiAqLworCSAgICBjaGdhdChzdC5jb3VudCwgc3QuYXR0ciwgc3QucGFpciwgKHZvaWQgKikgMCk7CisJICAgIHRvdWNoX2lmX25lZWRlZChzdGRzY3IsIHN0LnlfdmFsKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnLCc6CQkvKiBjaGFuZ2UgZnJvbSBiZWdpbm5pbmcgb2Ygd2luZG93ICovCisJICAgIG12Y2hnYXQoMCwgMCwgc3QuY291bnQsIHN0LmF0dHIsIHN0LnBhaXIsICh2b2lkICopIDApOworCSAgICB0b3VjaF9pZl9uZWVkZWQoc3Rkc2NyLCAwKTsKKwkgICAgbW92ZShzdC55X3ZhbCwgc3QueF92YWwpOworCSAgICBicmVhazsKKwljYXNlICd3JzoKKwkgICAgZG9fc3Vid2luZG93KHN0ZHNjciwgJnN0LCB0ZXN0X3djaGdhdCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3EnOgorCSAgICByZXR1cm47CisJZGVmYXVsdDoKKwkgICAgdXBkYXRlX3N0YXR1cyhzdGRzY3IsICZzdCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9IHdoaWxlICgoc3QuY2ggPSBnZXRjaCgpKSAhPSBFUlIpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisKKyAgICB0ZXN0X2NoZ2F0KCk7CisgICAgZW5kd2luKCk7CisKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIGN1cnNlcyBjaGdhdCBmdW5jdGlvblxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9jbGlwX3ByaW50dy5jIGIvdGVzdC9jbGlwX3ByaW50dy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MGJmMDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NsaXBfcHJpbnR3LmMKQEAgLTAsMCArMSwzODMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBjbGlwX3ByaW50dy5jLHYgMS4xMCAyMDE0LzA4LzAyIDIzOjEzOjI5IHRvbSBFeHAgJAorICoKKyAqIGRlbW9uc3RyYXRlIGhvdyB0byB1c2UgcHJpbnR3IHdpdGhvdXQgd3JhcHBpbmcuCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWZkZWYgSEFWRV9WV19QUklOVFcKKworI2RlZmluZSBTSE9XKG4pICgobikgPT0gRVJSID8gIkVSUiIgOiAiT0siKQorI2RlZmluZSBDT0xPUl9ERUZBVUxUICgtMSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIGM7CisgICAgdW5zaWduZWQgdjsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBwYWlyOworICAgIGF0dHJfdCBhdHRyOworICAgIGludCBjb3VudDsKKyAgICBpbnQgY2g7CisgICAgY29uc3QgY2hhciAqY19tc2c7CisgICAgY29uc3QgY2hhciAqdl9tc2c7CisgICAgaW50IHlfdmFsOworICAgIGludCB4X3ZhbDsKKyAgICBpbnQgeV9iZWcsIHhfYmVnOworICAgIGludCB5X21heCwgeF9tYXg7Cit9IFNUQVRVUzsKKworc3RhdGljIGludAorY2xpcF93cHJpbnR3KFdJTkRPVyAqd2luLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmZtdCwuLi4pCit7CisgICAgaW50IHkwLCB4MCwgeTEsIHgxLCB3aWR0aDsKKyAgICBXSU5ET1cgKnN1YjsKKyAgICB2YV9saXN0IGFwOworICAgIGludCByYzsKKworICAgIC8qCisgICAgICogQWxsb2NhdGUgYSBzaW5nbGUtbGluZSBkZXJpdmVkIHdpbmRvdyBleHRlbmRpbmcgZnJvbSB0aGUgY3VycmVudAorICAgICAqIGN1cnNvciBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGdpdmVuIHdpbmRvdy4KKyAgICAgKiBEaXNhYmxlIHNjcm9sbGluZyBpbiB0aGUgZGVyaXZlZCB3aW5kb3cuCisgICAgICovCisgICAgZ2V0eXgod2luLCB5MCwgeDApOworICAgIHdpZHRoID0gZ2V0bWF4eCh3aW4pIC0geDA7CisgICAgc3ViID0gZGVyd2luKHdpbiwgMSwgd2lkdGgsIHkwLCB4MCk7CisgICAgc2Nyb2xsb2soc3ViLCBGQUxTRSk7CisKKyAgICAvKgorICAgICAqIFByaW50IHRoZSB0ZXh0LgorICAgICAqLworICAgIHZhX3N0YXJ0KGFwLCBmbXQpOworICAgIHJjID0gdndfcHJpbnR3KHN1YiwgZm10LCBhcCk7CisgICAgdmFfZW5kKGFwKTsKKworICAgIGdldHl4KHN1YiwgeTEsIHgxKTsKKyAgICBkZWx3aW4oc3ViKTsKKworICAgIHdtb3ZlKHdpbiwgeTEgKyB5MCwgeDEgKyB4MCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2NvbG9yX3BhcmFtcyh1bnNpZ25lZCBzdGF0ZSwgaW50ICpwYWlyKQoreworICAgIC8qICpJTkRFTlQtT0ZGKiAqLworICAgIHN0YXRpYyBzdHJ1Y3QgeworCWludCBwYWlyOworCWludCBmZywgYmc7CisJY29uc3QgY2hhciAqbXNnOworICAgIH0gdGFibGVbXSA9IHsKKwl7IDAsIENPTE9SX0RFRkFVTFQsIENPTE9SX0RFRkFVTFQsICJkZWZhdWx0IiB9LAorCXsgMSwgQ09MT1JfUkVELCAgICAgQ09MT1JfQkxBQ0ssICAgInJlZC9ibGFjayIgfSwKKwl7IDIsIENPTE9SX1dISVRFLCAgIENPTE9SX0JMVUUsICAgICJ3aGl0ZS9ibHVlIiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIHN0YXRpYyBib29sIGZpcnN0ID0gVFJVRTsKKyAgICBjb25zdCBjaGFyICpyZXN1bHQgPSAwOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWlmIChmaXJzdCkgeworCSAgICB1bnNpZ25lZCBuOworCisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyArK24pIHsKKwkJaW5pdF9wYWlyKChzaG9ydCkgdGFibGVbbl0ucGFpciwKKwkJCSAgKHNob3J0KSB0YWJsZVtuXS5mZywKKwkJCSAgKHNob3J0KSB0YWJsZVtuXS5iZyk7CisJICAgIH0KKwl9CisJaWYgKHN0YXRlIDwgU0laRU9GKHRhYmxlKSkgeworCSAgICAqcGFpciA9IHRhYmxlW3N0YXRlXS5wYWlyOworCSAgICByZXN1bHQgPSB0YWJsZVtzdGF0ZV0ubXNnOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgordmlkZW9fcGFyYW1zKHVuc2lnbmVkIHN0YXRlLCBhdHRyX3QgKmF0dHIpCit7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgc3RhdGljIHN0cnVjdCB7CisJYXR0cl90IGF0dHI7CisJY29uc3QgY2hhciAqbXNnOworICAgIH0gdGFibGVbXSA9IHsKKwl7IEFfTk9STUFMLAkibm9ybWFsIiB9LAorCXsgQV9CT0xELAkiYm9sZCIgfSwKKwl7IEFfUkVWRVJTRSwJInJldmVyc2UiIH0sCisJeyBBX1VOREVSTElORSwJInVuZGVybGluZSIgfSwKKwl7IEFfQkxJTkssIAkiYmxpbmsiIH0sCisgICAgfTsKKyAgICAvKiAqSU5ERU5ULU9OKiAqLworCisgICAgY29uc3QgY2hhciAqcmVzdWx0ID0gMDsKKworICAgIGlmIChzdGF0ZSA8IFNJWkVPRih0YWJsZSkpIHsKKwkqYXR0ciA9IHRhYmxlW3N0YXRlXS5hdHRyOworCXJlc3VsdCA9IHRhYmxlW3N0YXRlXS5tc2c7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGZpbGwgdGhlIHdpbmRvdyB3aXRoIGEgdGVzdC1wYXR0ZXJuICovCitzdGF0aWMgdm9pZAorZmlsbF93aW5kb3coV0lORE9XICp3aW4pCit7CisgICAgaW50IHksIHg7CisgICAgaW50IHkwID0gLTEsIHgwID0gLTE7CisKKyAgICBnZXR5eCh3aW4sIHksIHgpOworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd2hpbGUgKHdhZGRzdHIod2luLCAiMDEyMzQ1Njc4OSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiAiKSAhPSBFUlIpIHsKKwlpbnQgeTEsIHgxOworCWdldHl4KHdpbiwgeTEsIHgxKTsKKwlpZiAoeTEgPT0geTAgJiYgeDEgPT0geDApCisJICAgIGJyZWFrOworCXgwID0geDE7CisJeTAgPSB5MTsKKyAgICB9CisgICAgd21vdmUod2luLCB5LCB4KTsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfc3RhdHVzKFdJTkRPVyAqd2luLCBTVEFUVVMgKiBzcCkKK3sKKyAgICBpbnQgeSwgeDsKKworICAgIGdldHl4KHdpbiwgeSwgeCk7CisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwgIkNvdW50ICVkIiwgc3AtPmNvdW50KTsKKyAgICBpZiAoc3AtPnZfbXNnICE9IDApCisJd3ByaW50dyh3aW4sICIgVmlkZW8gJXMiLCBzcC0+dl9tc2cpOworICAgIGlmIChzcC0+Y19tc2cgIT0gMCkKKwl3cHJpbnR3KHdpbiwgIiBDb2xvciAlcyIsIHNwLT5jX21zZyk7CisgICAgd3ByaW50dyh3aW4sICIgKCVkKSIsIHNwLT5zdGF0dXMpOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHdtb3ZlKHdpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCitkb19zdWJ3aW5kb3coV0lORE9XICp3aW4sIFNUQVRVUyAqIHNwLCB2b2lkIGZ1bmMoV0lORE9XICopKQoreworICAgIFdJTkRPVyAqd2luMSA9IG5ld3dpbihzcC0+eV9tYXggLSAyLCBzcC0+eF9tYXggLSAyLAorCQkJICBzcC0+eV9iZWcgKyAxLCBzcC0+eF9iZWcgKyAxKTsKKworICAgIGlmICh3aW4xICE9IDAgJiYgc3AtPnlfbWF4ID4gNCAmJiBzcC0+eF9tYXggPiA0KSB7CisJV0lORE9XICp3aW4yID0gZGVyd2luKHdpbjEsIHNwLT55X21heCAtIDQsIHNwLT54X21heCAtIDQsIDEsIDEpOworCisJaWYgKHdpbjIgIT0gMCkgeworCSAgICBib3god2luMSwgMCwgMCk7CisJICAgIHdyZWZyZXNoKHdpbjEpOworCSAgICBmdW5jKHdpbjIpOworCisJICAgIGRlbHdpbih3aW4yKTsKKwl9IGVsc2UgeworCSAgICBiZWVwKCk7CisJfQorCWRlbHdpbih3aW4xKTsKKwl0b3VjaHdpbih3aW4pOworICAgIH0gZWxzZSB7CisJaWYgKHdpbjEpCisJICAgIGRlbHdpbih3aW4xKTsKKwliZWVwKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAoraW5pdF9zdGF0dXMoV0lORE9XICp3aW4sIFNUQVRVUyAqIHNwKQoreworICAgIG1lbXNldChzcCwgMCwgc2l6ZW9mKCpzcCkpOworICAgIHNwLT5jID0gOTk7CisgICAgc3AtPnYgPSA5OTsKKyAgICBzcC0+Y2ggPSAnICc7CisKKyAgICBrZXlwYWQod2luLCBUUlVFKTsKKyAgICBmaWxsX3dpbmRvdyh3aW4pOworCisgICAgZ2V0YmVneXgod2luLCBzcC0+eV9iZWcsIHNwLT54X2JlZyk7CisgICAgZ2V0bWF4eXgod2luLCBzcC0+eV9tYXgsIHNwLT54X21heCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2hlbHAoV0lORE9XICp3aW4pCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKnRhYmxlW10gPQorICAgIHsKKwkiQmFzaWMgY29tbWFuZHM6IgorCSwiVXNlIGgvai9rL2wgb3IgYXJyb3cga2V5cyB0byBtb3ZlIHRoZSBjdXJzb3IuIgorCSwiU2V0IHRoZSBjb3VudCBwYXJhbWV0ZXIgZm9yIGNsaXBfd3ByaW50dyBieSBlbnRlcmluZyBkaWdpdHMgMC05LiIKKwksIiIKKwksIk90aGVyIGNvbW1hbmRzOiIKKwksInNwYWNlIHRvZ2dsZXMgdGhyb3VnaCB0aGUgc2V0IG9mIHZpZGVvIGF0dHJpYnV0ZXMgYW5kIGNvbG9ycy4iCisJLCJ0ICAgICB0b3VjaGVzIChmb3JjZXMgcmVwYWludCkgb2YgdGhlIGN1cnJlbnQgbGluZS4iCisJLCIuICAgICBjYWxscyBjbGlwX3dwcmludHcgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gd2l0aCB0aGUgZ2l2ZW4gY291bnQuIgorCSwiPSAgICAgcmVzZXRzIGNvdW50IHRvIHplcm8uIgorCSwiPyAgICAgc2hvd3MgdGhpcyBoZWxwLXdpbmRvdyIKKwksIiIKKyAgICB9OworCisgICAgaW50IHlfbWF4LCB4X21heDsKKyAgICBpbnQgcm93OworCisgICAgZ2V0bWF4eXgod2luLCB5X21heCwgeF9tYXgpOworICAgIGZvciAocm93ID0gMDsgcm93IDwgKGludCkgU0laRU9GKHRhYmxlKSAmJiByb3cgPCB5X21heDsgKytyb3cpIHsKKwlNdldQcmludHcod2luLCByb3csIDAsICIlLipzIiwgeF9tYXgsIHRhYmxlW3Jvd10pOworICAgIH0KKyAgICB3aGlsZSAod2dldGNoKHdpbikgIT0gJ3EnKQorCWJlZXAoKTsKK30KKworc3RhdGljIHZvaWQKK3VwZGF0ZV9zdGF0dXMoV0lORE9XICp3aW4sIFNUQVRVUyAqIHNwKQoreworICAgIHN3aXRjaCAoc3AtPmNoKSB7CisgICAgY2FzZSAnICc6CQkJLyogbmV4dCB0ZXN0LWl0ZXJhdGlvbiAqLworCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgaWYgKChzcC0+Y19tc2cgPSBjb2xvcl9wYXJhbXMoKysoc3AtPmMpLCAmKHNwLT5wYWlyKSkpID09IDApIHsKKwkJc3AtPmNfbXNnID0gY29sb3JfcGFyYW1zKHNwLT5jID0gMCwgJihzcC0+cGFpcikpOworCQlpZiAoKHNwLT52X21zZyA9IHZpZGVvX3BhcmFtcygrKyhzcC0+diksICYoc3AtPmF0dHIpKSkgPT0gMCkgeworCQkgICAgc3AtPnZfbXNnID0gdmlkZW9fcGFyYW1zKHNwLT52ID0gMCwgJihzcC0+YXR0cikpOworCQl9CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBpZiAoKHNwLT52X21zZyA9IHZpZGVvX3BhcmFtcygrKyhzcC0+diksICYoc3AtPmF0dHIpKSkgPT0gMCkgeworCQlzcC0+dl9tc2cgPSB2aWRlb19wYXJhbXMoc3AtPnYgPSAwLCAmKHNwLT5hdHRyKSk7CisJICAgIH0KKwl9CisJc3AtPmNvdW50ID0gMDsKKwlzaG93X3N0YXR1cyh3aW4sIHNwKTsKKwlicmVhazsKKyAgICBjYXNlIEtFWV9MRUZUOgorICAgIGNhc2UgJ2gnOgorCWlmIChzcC0+eF92YWwgPiAwKQorCSAgICB3bW92ZSh3aW4sIHNwLT55X3ZhbCwgLS0oc3AtPnhfdmFsKSk7CisJYnJlYWs7CisgICAgY2FzZSBLRVlfRE9XTjoKKyAgICBjYXNlICdqJzoKKwlpZiAoc3AtPnlfdmFsIDwgc3AtPnlfbWF4KQorCSAgICB3bW92ZSh3aW4sICsrKHNwLT55X3ZhbCksIHNwLT54X3ZhbCk7CisJYnJlYWs7CisgICAgY2FzZSBLRVlfVVA6CisgICAgY2FzZSAnayc6CisJaWYgKHNwLT55X3ZhbCA+IDApCisJICAgIHdtb3ZlKHdpbiwgLS0oc3AtPnlfdmFsKSwgc3AtPnhfdmFsKTsKKwlicmVhazsKKyAgICBjYXNlIEtFWV9SSUdIVDoKKyAgICBjYXNlICdsJzoKKwlpZiAoc3AtPnhfdmFsIDwgc3AtPnhfbWF4KQorCSAgICB3bW92ZSh3aW4sIHNwLT55X3ZhbCwgKysoc3AtPnhfdmFsKSk7CisJYnJlYWs7CisgICAgY2FzZSAndCc6CisJdG91Y2hsaW5lKHdpbiwgc3AtPnlfdmFsLCAxKTsKKwlicmVhazsKKyAgICBjYXNlICc9JzoKKwlzcC0+Y291bnQgPSAwOworCXNob3dfc3RhdHVzKHdpbiwgc3ApOworCWJyZWFrOworICAgIGNhc2UgJz8nOgorCWRvX3N1YndpbmRvdyh3aW4sIHNwLCBzaG93X2hlbHApOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJaWYgKGlzZGlnaXQoc3AtPmNoKSkgeworCSAgICBzcC0+Y291bnQgPSAoc3AtPmNvdW50ICogMTApICsgKHNwLT5jaCAtICcwJyk7CisJICAgIHNob3dfc3RhdHVzKHdpbiwgc3ApOworCX0gZWxzZSB7CisJICAgIGJlZXAoKTsKKwl9CisJYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAordGVzdF9jbGlwcGluZyhXSU5ET1cgKndpbikKK3sKKyAgICBTVEFUVVMgc3Q7CisgICAgY2hhciBmbXRbODBdOworICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBqLCBuZWVkOworCisgICAgaW5pdF9zdGF0dXMod2luLCAmc3QpOworCisgICAgZG8geworCXN3aXRjaCAoc3QuY2gpIHsKKwljYXNlICcuJzoJCS8qIGNoYW5nZSBmcm9tIGN1cnJlbnQgcG9zaXRpb24gKi8KKwkgICAgKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhDT0xPUl9QQUlSKHN0LnBhaXIpLCBzdC5hdHRyKSk7CisJICAgIGlmIChzdC5jb3VudCA+IDApIHsKKwkJbmVlZCA9ICh1bnNpZ25lZCkgc3QuY291bnQgKyAxOworCQlzcHJpbnRmKGZtdCwgIiUlYyUlJWRzJSVjIiwgc3QuY291bnQpOworCSAgICB9IGVsc2UgeworCQluZWVkID0gKHVuc2lnbmVkKSBnZXRtYXh4KHdpbikgLSAxOworCQlzdHJjcHkoZm10LCAiJWMlcyVjIik7CisJICAgIH0KKwkgICAgaWYgKChidWZmZXIgPSB0eXBlTWFsbG9jKGNoYXIsIG5lZWQgKyAxKSkgIT0gMCkgeworCQlmb3IgKGogPSAwOyBqIDwgbmVlZDsgKytqKSB7CisJCSAgICBidWZmZXJbal0gPSAoY2hhcikgKCdBJyArIChqICUgMjYpKTsKKwkJfQorCQlidWZmZXJbbmVlZCAtIDFdID0gJ1wwJzsKKwkJc3Quc3RhdHVzID0gY2xpcF93cHJpbnR3KHdpbiwgZm10LCAnWycsIGJ1ZmZlciwgJ10nKTsKKwkJZnJlZShidWZmZXIpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICBkb19zdWJ3aW5kb3cod2luLCAmc3QsIHRlc3RfY2xpcHBpbmcpOworCSAgICBicmVhazsKKwljYXNlICdxJzoKKwkgICAgcmV0dXJuOworCWRlZmF1bHQ6CisJICAgIHVwZGF0ZV9zdGF0dXMod2luLCAmc3QpOworCSAgICBicmVhazsKKwl9CisgICAgfSB3aGlsZSAoKHN0LmNoID0gd2dldGNoKHdpbikpICE9IEVSUik7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGluaXRzY3IoKTsKKyAgICBjYnJlYWsoKTsKKyAgICBub2VjaG8oKTsKKworICAgIHRlc3RfY2xpcHBpbmcoc3Rkc2NyKTsKKyAgICBlbmR3aW4oKTsKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisKKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgY3Vyc2VzIHZ3X3ByaW50dyBmdW5jdGlvblxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9jb2xvcl9uYW1lLmggYi90ZXN0L2NvbG9yX25hbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWEzYjMxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb2xvcl9uYW1lLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBjb2xvcl9uYW1lLmgsdiAxLjQgMjAxMi8xMS8xOCAwMTo1OTozMiB0b20gRXhwICQKKyAqLworCisjaWZuZGVmIF9fQ09MT1JOQU1FX0gKKyNkZWZpbmUgX19DT0xPUk5BTUVfSCAxCisKKyNpZm5kZWYgX19URVNUX1BSSVZfSAorI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorI2VuZGlmCisKK3N0YXRpYyBOQ1VSU0VTX0NPTlNUIGNoYXIgKnRoZV9jb2xvcl9uYW1lc1tdID0KK3sKKyAgICAiYmxhY2siLAorICAgICJyZWQiLAorICAgICJncmVlbiIsCisgICAgInllbGxvdyIsCisgICAgImJsdWUiLAorICAgICJtYWdlbnRhIiwKKyAgICAiY3lhbiIsCisgICAgIndoaXRlIiwKKyAgICAiQkxBQ0siLAorICAgICJSRUQiLAorICAgICJHUkVFTiIsCisgICAgIllFTExPVyIsCisgICAgIkJMVUUiLAorICAgICJNQUdFTlRBIiwKKyAgICAiQ1lBTiIsCisgICAgIldISVRFIgorfTsKKworI2lmZGVmIE5FRURfQ09MT1JfQ09ERQorc3RhdGljIGludAorY29sb3JfY29kZShjb25zdCBjaGFyICpjb2xvcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBjaGFyICplbmRwID0gMDsKKyAgICBzaXplX3QgbjsKKworICAgIGlmICgocmVzdWx0ID0gKGludCkgc3RydG9sKGNvbG9yLCAmZW5kcCwgMCkpID49IDAKKwkmJiAoZW5kcCA9PSAwIHx8ICplbmRwID09IDApKSB7CisJOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjb2xvciwgImRlZmF1bHQiKSkgeworCXJlc3VsdCA9IC0xOworICAgIH0gZWxzZSB7CisJZm9yIChuID0gMDsgbiA8IFNJWkVPRih0aGVfY29sb3JfbmFtZXMpOyArK24pIHsKKwkgICAgaWYgKCFzdHJjbXAodGhlX2NvbG9yX25hbWVzW25dLCBjb2xvcikpIHsKKwkJcmVzdWx0ID0gKGludCkgbjsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYgLyogTkVFRF9DT0xPUl9OQU1FICovCisKKyNpZmRlZiBORUVEX0NPTE9SX05BTUUKK3N0YXRpYyBjb25zdCBjaGFyICoKK2NvbG9yX25hbWUoaW50IGNvbG9yKQoreworICAgIHN0YXRpYyBjaGFyIHRlbXBbMjBdOworICAgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoY29sb3IgPj0gKGludCkgU0laRU9GKHRoZV9jb2xvcl9uYW1lcykpIHsKKwlzcHJpbnRmKHRlbXAsICIlZCIsIGNvbG9yKTsKKwlyZXN1bHQgPSB0ZW1wOworICAgIH0gZWxzZSBpZiAoY29sb3IgPCAwKSB7CisJcmVzdWx0ID0gImRlZmF1bHQiOworICAgIH0gZWxzZSB7CisJcmVzdWx0ID0gdGhlX2NvbG9yX25hbWVzW2NvbG9yXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvKiBORUVEX0NPTE9SX05BTUUgKi8KKworI2VuZGlmIC8qIF9fQ09MT1JOQU1FX0ggKi8KZGlmZiAtLWdpdCBhL3Rlc3QvY29sb3Jfc2V0LmMgYi90ZXN0L2NvbG9yX3NldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3N2QwNDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvbG9yX3NldC5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBjb2xvcl9zZXQuYyx2IDEuOCAyMDE0LzAyLzAxIDIyOjEwOjQyIHRvbSBFeHAgJAorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfQ09MT1JfU0VUCisKKyNkZWZpbmUgU0hPVyhuKSAoKG4pID09IEVSUiA/ICJFUlIiIDogIk9LIikKKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgTkNVUlNFU19DT0xPUl9UIGYsIGI7CisgICAgaW50IGk7CisKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJc3RhcnRfY29sb3IoKTsKKworCSh2b2lkKSBwYWlyX2NvbnRlbnQoMCwgJmYsICZiKTsKKwlwcmludHcoInBhaXIgMCBjb250YWlucyAoJWQsJWQpXG4iLCAoaW50KSBmLCAoaW50KSBiKTsKKwlnZXRjaCgpOworCisJcHJpbnR3KCJJbml0aWFsaXppbmcgcGFpciAxIHRvIHJlZC9ibGFja1xuIik7CisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworCWkgPSBjb2xvcl9zZXQoMSwgTlVMTCk7CisJcHJpbnR3KCJSRUQvQkxBQ0sgKCVzKVxuIiwgU0hPVyhpKSk7CisJZ2V0Y2goKTsKKworCXByaW50dygiSW5pdGlhbGl6aW5nIHBhaXIgMiB0byB3aGl0ZS9ibHVlXG4iKTsKKwlpbml0X3BhaXIoMiwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworCWkgPSBjb2xvcl9zZXQoMiwgTlVMTCk7CisJcHJpbnR3KCJXSElURS9CTFVFICglcylcbiIsIFNIT1coaSkpOworCWdldGNoKCk7CisKKwlwcmludHcoIlJlc2V0dGluZyBjb2xvcnMgdG8gcGFpciAwXG4iKTsKKwlpID0gY29sb3Jfc2V0KDAsIE5VTEwpOworCXByaW50dygiRGVmYXVsdCBDb2xvcnMgKCVzKVxuIiwgU0hPVyhpKSk7CisJZ2V0Y2goKTsKKworCXByaW50dygiUmVzZXR0aW5nIGNvbG9ycyB0byBwYWlyIDFcbiIpOworCWkgPSBjb2xvcl9zZXQoMSwgTlVMTCk7CisJcHJpbnR3KCJSRUQvQkxBQ0sgKCVzKVxuIiwgU0hPVyhpKSk7CisJZ2V0Y2goKTsKKworICAgIH0gZWxzZSB7CisJcHJpbnR3KCJUaGlzIGRlbW8gcmVxdWlyZXMgYSBjb2xvciB0ZXJtaW5hbCIpOworCWdldGNoKCk7CisgICAgfQorICAgIGVuZHdpbigpOworCisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgY3Vyc2VzIGNvbG9yX3NldCBmdW5jdGlvblxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9jb25maWd1cmUgYi90ZXN0L2NvbmZpZ3VyZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yOWU4NThjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb25maWd1cmUKQEAgLTAsMCArMSwxODQ0MiBAQAorIyEgL2Jpbi9zaAorIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgorIyBHZW5lcmF0ZWQgYnkgQXV0b2NvbmYgMi41Mi4yMDE0MTIwNC4KKyMKKyMgQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KKworIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgorYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCithc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5JworYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorYXNfdHJfc2g9InNlZCB5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9InNlZCB5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCisKKyMgQmUgQm91cm5lIGNvbXBhdGlibGUKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorZWxpZiB0ZXN0IC1uICIke0JBU0hfVkVSU0lPTitzZXR9IiAmJiAoc2V0IC1vIHBvc2l4KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgc2V0IC1vIHBvc2l4CitmaQorCisjIE5hbWUgb2YgdGhlIGV4ZWN1dGFibGUuCithc19tZT1gZWNobyAiJDAiIHxzZWQgJ3MsLipbXFwvXSwsJ2AKKworaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCitlY2hvID5jb25mJCQuZmlsZQoraWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCisgICMgYW5kIGMpIHdpbGwgcmVtYWluIHZhbGlkIG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERKR1BQIDIuMDQpLgorICBpZiB0ZXN0IC1mIGNvbmYkJC5leGU7IHRoZW4KKyAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCisgICAgYXNfbG5fcz0nY3AgLXAnCisgIGVsc2UKKyAgICBhc19sbl9zPSdsbiAtcycKKyAgZmkKK2VsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2xuX3M9bG4KK2Vsc2UKKyAgYXNfbG5fcz0nY3AgLXAnCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKKworYXNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgorCisjIFN1cHBvcnQgdW5zZXQgd2hlbiBwb3NzaWJsZS4KK2lmIChGT089Rk9POyB1bnNldCBGT08pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc191bnNldD11bnNldAorZWxzZQorICBhc191bnNldD1mYWxzZQorZmkKKworIyBOTFMgbnVpc2FuY2VzLgorJGFzX3Vuc2V0IExBTkcgfHwgdGVzdCAiJHtMQU5HK3NldH0iICE9IHNldCB8fCB7IExBTkc9QzsgZXhwb3J0IExBTkc7IH0KKyRhc191bnNldCBMQ19BTEwgfHwgdGVzdCAiJHtMQ19BTEwrc2V0fSIgIT0gc2V0IHx8IHsgTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IH0KKyRhc191bnNldCBMQ19USU1FIHx8IHRlc3QgIiR7TENfVElNRStzZXR9IiAhPSBzZXQgfHwgeyBMQ19USU1FPUM7IGV4cG9ydCBMQ19USU1FOyB9CiskYXNfdW5zZXQgTENfQ1RZUEUgfHwgdGVzdCAiJHtMQ19DVFlQRStzZXR9IiAhPSBzZXQgfHwgeyBMQ19DVFlQRT1DOyBleHBvcnQgTENfQ1RZUEU7IH0KKyRhc191bnNldCBMQU5HVUFHRSB8fCB0ZXN0ICIke0xBTkdVQUdFK3NldH0iICE9IHNldCB8fCB7IExBTkdVQUdFPUM7IGV4cG9ydCBMQU5HVUFHRTsgfQorJGFzX3Vuc2V0IExDX0NPTExBVEUgfHwgdGVzdCAiJHtMQ19DT0xMQVRFK3NldH0iICE9IHNldCB8fCB7IExDX0NPTExBVEU9QzsgZXhwb3J0IExDX0NPTExBVEU7IH0KKyRhc191bnNldCBMQ19OVU1FUklDIHx8IHRlc3QgIiR7TENfTlVNRVJJQytzZXR9IiAhPSBzZXQgfHwgeyBMQ19OVU1FUklDPUM7IGV4cG9ydCBMQ19OVU1FUklDOyB9CiskYXNfdW5zZXQgTENfTUVTU0FHRVMgfHwgdGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiAhPSBzZXQgfHwgeyBMQ19NRVNTQUdFUz1DOyBleHBvcnQgTENfTUVTU0FHRVM7IH0KKworIyBJRlMKKyMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuCithc19ubD0nCisnCitJRlM9IiAJJGFzX25sIgorCisjIENEUEFUSC4KKyRhc191bnNldCBDRFBBVEggfHwgdGVzdCAiJHtDRFBBVEgrc2V0fSIgIT0gc2V0IHx8IHsgQ0RQQVRIPTo7IGV4cG9ydCBDRFBBVEg7IH0KKworIyBOYW1lIG9mIHRoZSBob3N0LgorIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgorYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCisKK2V4ZWMgNj4mMQorCisjCisjIEluaXRpYWxpemF0aW9ucy4KKyMKK2FjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9jYWwKK2Nyb3NzX2NvbXBpbGluZz1ubworc3ViZGlycz0KK01GTEFHUz0gTUFLRUZMQUdTPQorU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KKworIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzaGVsbCBoZXJlIGRvY3VtZW50LgorIyBUaGlzIHZhcmlhYmxlIHNlZW1zIG9ic29sZXRlLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQsIGFuZAorIyBvbmx5IGFjX21heF9zZWRfbGluZXMgc2hvdWxkIGJlIHVzZWQuCis6ICR7YWNfbWF4X2hlcmVfbGluZXM9Mzh9CisKK2FjX3VuaXF1ZV9maWxlPSJuY3Vyc2VzLmMiCisKKyMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KK2FjX2luaXRfaGVscD0KK2FjX2luaXRfdmVyc2lvbj1mYWxzZQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKKyMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KK2NhY2hlX2ZpbGU9L2Rldi9udWxsCitleGVjX3ByZWZpeD1OT05FCitub19jcmVhdGU9Citub19yZWN1cnNpb249CitwcmVmaXg9Tk9ORQorcHJvZ3JhbV9wcmVmaXg9Tk9ORQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgseCwKK3NpbGVudD0KK3NpdGU9CitzcmNkaXI9Cit2ZXJib3NlPQoreF9pbmNsdWRlcz1OT05FCit4X2xpYnJhcmllcz1OT05FCisKKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLgorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAorIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFsbHkgY2hhbmdlLgorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KK2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJworc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKK2xpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCitzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJworc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJworbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCitpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKK29sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScKK2luZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nCittYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKKworIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCitQQUNLQUdFX05BTUU9CitQQUNLQUdFX1RBUk5BTUU9CitQQUNLQUdFX1ZFUlNJT049CitQQUNLQUdFX1NUUklORz0KK1BBQ0tBR0VfQlVHUkVQT1JUPQorCithY19wcmV2PQorZm9yIGFjX29wdGlvbgorZG8KKyAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQuCisgIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgorICAgIGV2YWwgIiRhY19wcmV2PVwkYWNfb3B0aW9uIgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUKKyAgZmkKKworICBhY19vcHRhcmc9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4W149XSo9XCguKlwpJ2AKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgorCisgIGNhc2UgJGFjX29wdGlvbiBpbgorCisgIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCisgICAgYWNfcHJldj1iaW5kaXIgOzsKKyAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKKyAgICBiaW5kaXI9JGFjX29wdGFyZyA7OworCisgIC1idWlsZCB8IC0tYnVpbGQgfCAtLWJ1aWwgfCAtLWJ1aSB8IC0tYnUpCisgICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OworICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKKyAgICBidWlsZF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXAorICB8IC0tY2FjaGUtZiB8IC0tY2FjaGUtIHwgLS1jYWNoZSB8IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykKKyAgICBhY19wcmV2PWNhY2hlX2ZpbGUgOzsKKyAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcCisgIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0qIHwgLS1jYWNoZT0qIHwgLS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qIHwgLS1jPSopCisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7CisKKyAgLS1jb25maWctY2FjaGUgfCAtQykKKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7OworCisgIC1kYXRhZGlyIHwgLS1kYXRhZGlyIHwgLS1kYXRhZGkgfCAtLWRhdGFkIHwgLS1kYXRhIHwgLS1kYXQgfCAtLWRhKQorICAgIGFjX3ByZXY9ZGF0YWRpciA7OworICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0qIHwgLS1kYXRhPSogfCAtLWRhdD0qIFwKKyAgfCAtLWRhPSopCisgICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWRhdGFyb290ZGlyIHwgLS1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaSB8IC0tZGF0YXJvb3RkIHwgLS1kYXRhcm9vdCBcCisgIHwgLS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQorICAgIGFjX3ByZXY9ZGF0YXJvb3RkaXIgOzsKKyAgLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGk9KiB8IC0tZGF0YXJvb3RkPSogXAorICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0tZGF0YXI9KikKKyAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0qKQorICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfZmVhdHVyZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX2ZlYXR1cmUiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZSB8IHNlZCAncy8tL18vZydgCisgICAgZXZhbCAiZW5hYmxlXyRhY19mZWF0dXJlPW5vIiA7OworCisgIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopCisgICAgYWNfZmVhdHVyZT1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY19mZWF0dXJlIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAorICAgIGNhc2UgJGFjX29wdGlvbiBpbgorICAgICAgKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsKKyAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKKyAgICBlc2FjCisgICAgZXZhbCAiZW5hYmxlXyRhY19mZWF0dXJlPSckYWNfb3B0YXJnJyIgOzsKKworICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCisgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAtLWV4ZWMtIFwKKyAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpCisgICAgYWNfcHJldj1leGVjX3ByZWZpeCA7OworICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwKKyAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKKyAgfCAtLWV4ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopCisgICAgZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7OworCisgIC1nYXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuCisgICAgd2l0aF9nYXM9eWVzIDs7CisKKyAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkKKyAgICBhY19pbml0X2hlbHA9bG9uZyA7OworICAtaGVscD1yKiB8IC0taGVscD1yKiB8IC0taGVsPXIqIHwgLS1oZT1yKiB8IC1ociopCisgICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7OworICAtaGVscD1zKiB8IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCisgICAgYWNfaW5pdF9oZWxwPXNob3J0IDs7CisKKyAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pCisgICAgYWNfcHJldj1ob3N0X2FsaWFzIDs7CisgIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAtLWhvPSopCisgICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXAorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQorICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAgLWluZm9kaXI9KiB8IC0taW5mb2Rpcj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwgLS1saWJkaXIgfCAtLWxpYmRpIHwgLS1saWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9JGFjX29wdGFyZyA7OworCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJleGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCisgICAgYWNfcHJldj1saWJleGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCisgIHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7OworCisgIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwKKyAgfCAtLWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAtLWxvY2Fsc3QgXAorICB8IC0tbG9jYWxzIHwgLS1sb2NhbCB8IC0tbG9jYSB8IC0tbG9jIHwgLS1sbykKKyAgICBhY19wcmV2PWxvY2Fsc3RhdGVkaXIgOzsKKyAgLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9KiBcCisgIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0qIHwgLS1sb2NhbHN0PSogXAorICB8IC0tbG9jYWxzPSogfCAtLWxvY2FsPSogfCAtLWxvY2E9KiB8IC0tbG9jPSogfCAtLWxvPSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkKKyAgICBhY19wcmV2PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRpcj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisgICAgbWFuZGlyPSRhY19vcHRhcmcgOzsKKworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGhvdXQtZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1uby1jciB8IC0tbm8tYykKKyAgICBub19jcmVhdGU9eWVzIDs7CisKKyAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8tcmVjdXJzaSBcCisgIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKQorICAgIG5vX3JlY3Vyc2lvbj15ZXMgOzsKKworICAtb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwgLS1vbGRpbmNsdWRlZCBcCisgIHwgLS1vbGRpbmNsdWRlIHwgLS1vbGRpbmNsdWQgfCAtLW9sZGluY2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMgXAorICB8IC0tb2xkaW4gfCAtLW9sZGkgfCAtLW9sZCB8IC0tb2wgfCAtLW8pCisgICAgYWNfcHJldj1vbGRpbmNsdWRlZGlyIDs7CisgIC1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpPSogfCAtLW9sZGluY2x1ZGVkPSogXAorICB8IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwgLS1vbGRpbmM9KiBcCisgIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopCisgICAgb2xkaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkKKyAgICBhY19wcmV2PXByZWZpeCA7OworICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopCisgICAgcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpIHwgLS1wcm9ncmFtLXByZWYgXAorICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKKyAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4IDs7CisgIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpPSogXAorICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopCisgICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7OworCisgIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcCisgIHwgLS1wcm9ncmFtLXN1ZiB8IC0tcHJvZ3JhbS1zdSB8IC0tcHJvZ3JhbS1zKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsKKyAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZmk9KiBcCisgIHwgLS1wcm9ncmFtLXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3JhbS1zdT0qIHwgLS1wcm9ncmFtLXM9KikKKyAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJnIDs7CisKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXAorICB8IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1wcm9ncmFtLXRyYW5zZiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXAorICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpCisgICAgYWNfcHJldj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7CisgIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtPSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm89KiB8IC0tcHJvZ3JhbS10cmFuc2Y9KiBcCisgIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJhbj0qIFwKKyAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0qKQorICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9JGFjX29wdGFyZyA7OworCisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQorICAgIHNpbGVudD15ZXMgOzsKKworICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKKyAgICBhY19wcmV2PXNiaW5kaXIgOzsKKyAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKKyAgfCAtLXNiaT0qIHwgLS1zYj0qKQorICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7OworCisgIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAorICB8IC0tc2hhcmVkc3RhdGVkIHwgLS1zaGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwKKyAgfCAtLXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwKKyAgfCAtLXNoYSB8IC0tc2gpCisgICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7OworICAtc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwKKyAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0qIHwgLS1zaGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0YT0qIFwKKyAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVkPSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCisgIHwgLS1zaGE9KiB8IC0tc2g9KikKKyAgICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXNpdGUgfCAtLXNpdGUgfCAtLXNpdCkKKyAgICBhY19wcmV2PXNpdGUgOzsKKyAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikKKyAgICBzaXRlPSRhY19vcHRhcmcgOzsKKworICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQorICAgIGFjX3ByZXY9c3JjZGlyIDs7CisgIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCisgICAgc3JjZGlyPSRhY19vcHRhcmcgOzsKKworICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcCisgIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQorICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OworICAtc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwgLS1zeXNjb25mPSogXAorICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopCisgICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0tdCkKKyAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7OworICAtdGFyZ2V0PSogfCAtLXRhcmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSopCisgICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKKworICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQorICAgIHZlcmJvc2U9eWVzIDs7CisKKyAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikKKyAgICBhY19pbml0X3ZlcnNpb249OiA7OworCisgIC13aXRoLSogfCAtLXdpdGgtKikKKyAgICBhY19wYWNrYWdlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX3BhY2thZ2UiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgCisgICAgY2FzZSAkYWNfb3B0aW9uIGluCisgICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OworICAgICAgKikgYWNfb3B0YXJnPXllcyA7OworICAgIGVzYWMKKyAgICBldmFsICJ3aXRoXyRhY19wYWNrYWdlPSckYWNfb3B0YXJnJyIgOzsKKworICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCisgICAgYWNfcGFja2FnZT1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY19wYWNrYWdlIiA6ICIuKlteLV8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfcGFja2FnZSIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICBhY19wYWNrYWdlPWBlY2hvICRhY19wYWNrYWdlIHwgc2VkICdzLy0vXy9nJ2AKKyAgICBldmFsICJ3aXRoXyRhY19wYWNrYWdlPW5vIiA7OworCisgIC0teCkKKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwKKyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OworCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgtbGlicmFyaSBcCisgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKKyAgLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJpPSogXAorICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7CisKKyAgLSopIHsgZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJGFjX29wdGlvbgorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgOzsKKworICAqPSopCisgICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYAorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KKyAgICBleHByICJ4JGFjX2VudnZhciIgOiAiLipbXl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgdmFyaWFibGUgbmFtZTogJGFjX2VudnZhciIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgCisgICAgZXZhbCAiJGFjX2VudnZhcj0nJGFjX29wdGFyZyciCisgICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsKKworICAqKQorICAgICMgRklYTUU6IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4KKyAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgorICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCisgICAgOiAke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufQorICAgIDs7CisKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAorICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IG1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKyMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIHBhdGhzLgorZm9yIGFjX3ZhciBpbiBleGVjX3ByZWZpeCBwcmVmaXgKK2RvCisgIGV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAorICBjYXNlICRhY192YWwgaW4KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogfCBOT05FIHwgJycgKSA7OworICAgICopICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGFuIGFic29sdXRlIHBhdGggZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OworICBlc2FjCitkb25lCisKKyMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIHBhdGhzLgorZm9yIGFjX3ZhciBpbiBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIGRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBcCisgICAgICAgICAgICAgIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpcgorZG8KKyAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCisgIGNhc2UgJGFjX3ZhbCBpbgorICAgIFtcXC8kXSogfCA/OltcXC9dKiApIDs7CisgICAgKikgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYW4gYWJzb2x1dGUgcGF0aCBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIiA+JjIKKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTs7CisgIGVzYWMKK2RvbmUKKworIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JworIyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMuCitidWlsZD0kYnVpbGRfYWxpYXMKK2hvc3Q9JGhvc3RfYWxpYXMKK3RhcmdldD0kdGFyZ2V0X2FsaWFzCisKKyMgRklYTUU6IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4KK2lmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgorICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KKyAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKKyAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCisgICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQuIiA+JjIKKyAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKKyAgZmkKK2ZpCisKK2FjX3Rvb2xfcHJlZml4PQordGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQorCit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCisKKyMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KK2lmIHRlc3QgLXogIiRzcmNkaXIiOyB0aGVuCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCisgICMgVHJ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiBpdHMgcGFyZW50LgorICBhY19wcm9nPSQwCisgIGFjX2NvbmZkaXI9YGVjaG8gIiRhY19wcm9nIiB8IHNlZCAncyVbXFwvXVteXFwvXVteXFwvXSokJSUnYAorICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uCisgIHNyY2Rpcj0kYWNfY29uZmRpcgorICBpZiB0ZXN0ICEgLXIgJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGU7IHRoZW4KKyAgICBzcmNkaXI9Li4KKyAgZmkKK2Vsc2UKKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD1ubworZmkKK2lmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgorICBpZiB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXM7IHRoZW4KKyAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIHNvdXJjZXMgaW4gJGFjX2NvbmZkaXIgb3IgLi4iID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgIGVsc2UKKyAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIHNvdXJjZXMgaW4gJHNyY2RpciIgPiYyCisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgZmkKK2ZpCitzcmNkaXI9YGVjaG8gIiRzcmNkaXIiIHwgc2VkICdzJVwoW15cXC9dXClbXFwvXSokJVwxJSdgCithY19lbnZfYnVpbGRfYWxpYXNfc2V0PSR7YnVpbGRfYWxpYXMrc2V0fQorYWNfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPSRidWlsZF9hbGlhcworYWNfY3ZfZW52X2J1aWxkX2FsaWFzX3NldD0ke2J1aWxkX2FsaWFzK3NldH0KK2FjX2N2X2Vudl9idWlsZF9hbGlhc192YWx1ZT0kYnVpbGRfYWxpYXMKK2FjX2Vudl9ob3N0X2FsaWFzX3NldD0ke2hvc3RfYWxpYXMrc2V0fQorYWNfZW52X2hvc3RfYWxpYXNfdmFsdWU9JGhvc3RfYWxpYXMKK2FjX2N2X2Vudl9ob3N0X2FsaWFzX3NldD0ke2hvc3RfYWxpYXMrc2V0fQorYWNfY3ZfZW52X2hvc3RfYWxpYXNfdmFsdWU9JGhvc3RfYWxpYXMKK2FjX2Vudl90YXJnZXRfYWxpYXNfc2V0PSR7dGFyZ2V0X2FsaWFzK3NldH0KK2FjX2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlhcworYWNfY3ZfZW52X3RhcmdldF9hbGlhc19zZXQ9JHt0YXJnZXRfYWxpYXMrc2V0fQorYWNfY3ZfZW52X3RhcmdldF9hbGlhc192YWx1ZT0kdGFyZ2V0X2FsaWFzCithY19lbnZfQ0Nfc2V0PSR7Q0Mrc2V0fQorYWNfZW52X0NDX3ZhbHVlPSRDQworYWNfY3ZfZW52X0NDX3NldD0ke0NDK3NldH0KK2FjX2N2X2Vudl9DQ192YWx1ZT0kQ0MKK2FjX2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KK2FjX2Vudl9DRkxBR1NfdmFsdWU9JENGTEFHUworYWNfY3ZfZW52X0NGTEFHU19zZXQ9JHtDRkxBR1Mrc2V0fQorYWNfY3ZfZW52X0NGTEFHU192YWx1ZT0kQ0ZMQUdTCithY19lbnZfTERGTEFHU19zZXQ9JHtMREZMQUdTK3NldH0KK2FjX2Vudl9MREZMQUdTX3ZhbHVlPSRMREZMQUdTCithY19jdl9lbnZfTERGTEFHU19zZXQ9JHtMREZMQUdTK3NldH0KK2FjX2N2X2Vudl9MREZMQUdTX3ZhbHVlPSRMREZMQUdTCithY19lbnZfQ1BQRkxBR1Nfc2V0PSR7Q1BQRkxBR1Mrc2V0fQorYWNfZW52X0NQUEZMQUdTX3ZhbHVlPSRDUFBGTEFHUworYWNfY3ZfZW52X0NQUEZMQUdTX3NldD0ke0NQUEZMQUdTK3NldH0KK2FjX2N2X2Vudl9DUFBGTEFHU192YWx1ZT0kQ1BQRkxBR1MKK2FjX2Vudl9DUFBfc2V0PSR7Q1BQK3NldH0KK2FjX2Vudl9DUFBfdmFsdWU9JENQUAorYWNfY3ZfZW52X0NQUF9zZXQ9JHtDUFArc2V0fQorYWNfY3ZfZW52X0NQUF92YWx1ZT0kQ1BQCisKKyMKKyMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4KKyMKK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCisgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgorICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCisgIGNhdCA8PEVPRgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgdGhpcyBwYWNrYWdlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KKworVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCisKK1RvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUuZy4sIENDLCBDRkxBR1MuLi4pLCBzcGVjaWZ5IHRoZW0gYXMKK1ZBUj1WQUxVRS4gIFNlZSBiZWxvdyBmb3IgZGVzY3JpcHRpb25zIG9mIHNvbWUgb2YgdGhlIHVzZWZ1bCB2YXJpYWJsZXMuCisKK0RlZmF1bHRzIGZvciB0aGUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGluIGJyYWNrZXRzLgorCitDb25maWd1cmF0aW9uOgorICAtaCwgLS1oZWxwICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdAorICAgICAgLS1oZWxwPXNob3J0ICAgICAgICBkaXNwbGF5IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlCisgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcworICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcuLi4nIG1lc3NhZ2VzCisgICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KKyAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKKyAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKKyAgICAgIC0tc3JjZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgXGAuLiddCisKK0VPRgorCisgIGNhdCA8PEVPRgorSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKyAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KKworQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQorYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywKK2ZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCisKK0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgorCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KKyAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KKyAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvc2hhcmVdCisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQorICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQorICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCisgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCisgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KKyAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KKyAgLS1pbmZvZGlyPURJUiAgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9pbmZvXQorICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvbWFuXQorRU9GCisKKyAgY2F0IDw8XEVPRgorCitQcm9ncmFtIG5hbWVzOgorICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCAgICAgICAgICAgIHByZXBlbmQgUFJFRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCisgIC0tcHJvZ3JhbS1zdWZmaXg9U1VGRklYICAgICAgICAgICAgYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcworICAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9UFJPR1JBTSAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcworCitYIGZlYXR1cmVzOgorICAtLXgtaW5jbHVkZXM9RElSICAgIFggaW5jbHVkZSBmaWxlcyBhcmUgaW4gRElSCisgIC0teC1saWJyYXJpZXM9RElSICAgWCBsaWJyYXJ5IGZpbGVzIGFyZSBpbiBESVIKKworU3lzdGVtIHR5cGVzOgorICAtLWJ1aWxkPUJVSUxEICAgICAgICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQorICAtLWhvc3Q9SE9TVCAgICAgICBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCitFT0YKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCisKKyAgY2F0IDw8XEVPRgorCitPcHRpb25hbCBQYWNrYWdlczoKKyAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNdCisgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKKworT3B0aW9uYWwgRmVhdHVyZXM6CisgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKKyAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQorCitHZW5lcmFsIE9wdGlvbnM6CisgIC0td2l0aC1wa2ctY29uZmlnez1wYXRofSBlbmFibGUvZGlzYWJsZSB1c2Ugb2YgcGtnLWNvbmZpZworICAtLWRpc2FibGUtZWNobyAgICAgICAgICBkbyBub3QgZGlzcGxheSAiY29tcGlsaW5nIiBjb21tYW5kcworQ3Vyc2VzIFZlcnNpb24tZGVwZW5kZW50IE9wdGlvbnM6CisgIC0td2l0aC1uY3Vyc2VzLXdyYXAtcHJlZml4IG5hbWluZy1wcmVmaXggZm9yIG5jdXJzZXMgd3JhcHBlZC12YXJpYWJsZXMKKyAgLS1kaXNhYmxlLXdpZGVjICAgICAgICAgZGlzYWJsZSBjaGVja3MgZm9yIHdpZGUtY2hhcmFjdGVyIGZ1bmN0aW9ucworICAtLXdpdGgtY3Vyc2VzLWRpcj1ESVIgICBkaXJlY3RvcnkgaW4gd2hpY2ggKG4pY3Vyc2VzIGlzIGluc3RhbGxlZAorICAtLXdpdGgtc2NyZWVuPVhYWCAgICAgICB1c2Ugc3BlY2lmaWVkIGN1cnNlcy1saWJyYXJpZXMKKyAgLS13aXRoLW5jdXJzZXN3ICAgICAgICAgdXNlIHdpZGUgbmN1cnNlcy1saWJyYXJpZXMKKyAgLS13aXRoLW5jdXJzZXMgICAgICAgICAgdXNlIG5jdXJzZXMtbGlicmFyaWVzCisgIC0td2l0aC1wZGN1cnNlcyAgICAgICAgIGNvbXBpbGUvbGluayB3aXRoIHBkY3Vyc2VzIFgxMSBsaWJyYXJ5CisgIC0td2l0aC1jdXJzZXMtY29sciAgICAgIGNvbXBpbGUvbGluayB3aXRoIEhQVVggMTAueCBjb2xvci1jdXJzZXMKKyAgLS13aXRoLWN1cnNlcy01bGliICAgICAgY29tcGlsZS9saW5rIHdpdGggU3VuT1MgNWxpYiBjdXJzZXMKKyAgLS13aXRoLVhhdzNkICAgICAgICAgICAgbGluayB3aXRoIFhhdyAzZCBsaWJyYXJ5CisgIC0td2l0aC1YYXczZHhmdCAgICAgICAgIGxpbmsgd2l0aCBYYXcgM2QgeGZ0IGxpYnJhcnkKKyAgLS13aXRoLW5lWHRhdyAgICAgICAgICAgbGluayB3aXRoIG5lWFQgQXRoZW5hIGxpYnJhcnkKKyAgLS13aXRoLVhhd1BsdXMgICAgICAgICAgbGluayB3aXRoIEF0aGVuYS1QbHVzIGxpYnJhcnkKKyAgLS13aXRoLXggICAgICAgICAgICAgICAgdXNlIHRoZSBYIFdpbmRvdyBTeXN0ZW0KK1Rlc3RpbmcvZGV2ZWxvcG1lbnQgT3B0aW9uczoKKyAgLS1lbmFibGUtd2FybmluZ3MgICAgICAgdGVzdDogdHVybiBvbiBnY2MgY29tcGlsZXIgd2FybmluZ3MKKyAgLS13aXRoLWRtYWxsb2MgICAgICAgICAgdGVzdDogdXNlIEdyYXkgV2F0c29uJ3MgZG1hbGxvYyBsaWJyYXJ5CisgIC0td2l0aC1kYm1hbGxvYyAgICAgICAgIHRlc3Q6IHVzZSBDb25vciBDYWhpbGwncyBkYm1hbGxvYyBsaWJyYXJ5CisgIC0td2l0aC12YWxncmluZCAgICAgICAgIHRlc3Q6IHVzZSB2YWxncmluZAorICAtLWRpc2FibGUtbGVha3MgICAgICAgICB0ZXN0OiBmcmVlIHBlcm1hbmVudCBtZW1vcnksIGFuYWx5emUgbGVha3MKKyAgLS1kaXNhYmxlLXJwYXRoLWhhY2sgICAgZG9uJ3QgYWRkIHJwYXRoIG9wdGlvbnMgZm9yIGFkZGl0aW9uYWwgbGlicmFyaWVzCisKK1NvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKKyAgQ0ZMQUdTICAgICAgQyBjb21waWxlciBmbGFncworICBMREZMQUdTICAgICBsaW5rZXIgZmxhZ3MsIGUuZy4gLUw8bGliIGRpcj4gaWYgeW91IGhhdmUgbGlicmFyaWVzIGluIGEKKyAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIgZGlyPgorICBDUFBGTEFHUyAgICBDL0MrKyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmIHlvdSBoYXZlCisgICAgICAgICAgICAgIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgorICBDUFAgICAgICAgICBDIHByZXByb2Nlc3NvcgorCitVc2UgdGhlc2UgdmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1hZGUgYnkgYGNvbmZpZ3VyZScgb3IgdG8gaGVscAoraXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLgorCitFT0YKK2ZpCisKK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4KKyAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KKyAgYWNfcG9wZGlyPWBwd2RgCisgIGZvciBhY19zdWJkaXIgaW4gOiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfc3ViZGlyIiA9IHg6ICYmIGNvbnRpbnVlCisgICAgY2QgJGFjX3N1YmRpcgorICAgICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gLyRhY19zdWJkaXIuCisgICAgYWNfZG90cz1gZWNobyAkYWNfc3ViZGlyIHwKKyAgICAgICAgICAgICBzZWQgJ3MsXlwuLywsO3MsW14vXSQsJi8sO3MsW14vXSovLC4uLyxnJ2AKKworICAgIGNhc2UgJHNyY2RpciBpbgorICAgIC4pICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgorICAgICAgYWNfc3ViX3NyY2Rpcj0kc3JjZGlyIDs7CisgICAgW1xcL10qIHwgPzpbXFwvXSogKSAjIEFic29sdXRlIHBhdGguCisgICAgICBhY19zdWJfc3JjZGlyPSRzcmNkaXIvJGFjX3N1YmRpciA7OworICAgICopICMgUmVsYXRpdmUgcGF0aC4KKyAgICAgIGFjX3N1Yl9zcmNkaXI9JGFjX2RvdHMkc3JjZGlyLyRhY19zdWJkaXIgOzsKKyAgICBlc2FjCisKKyAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZTsgb3RoZXJ3aXNlIGdldCBDeWdudXMgc3R5bGUgY29uZmlndXJlLgorICAgIGlmIHRlc3QgLWYgJGFjX3N1Yl9zcmNkaXIvY29uZmlndXJlLmdudTsgdGhlbgorICAgICAgZWNobworICAgICAgJFNIRUxMICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZS5nbnUgIC0taGVscD1yZWN1cnNpdmUKKyAgICBlbGlmIHRlc3QgLWYgJGFjX3N1Yl9zcmNkaXIvY29uZmlndXJlOyB0aGVuCisgICAgICBlY2hvCisgICAgICAkU0hFTEwgJGFjX3N1Yl9zcmNkaXIvY29uZmlndXJlICAtLWhlbHA9cmVjdXJzaXZlCisgICAgZWxpZiB0ZXN0IC1mICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZS5hYyB8fAorICAgICAgICAgICB0ZXN0IC1mICRhY19zdWJfc3JjZGlyL2NvbmZpZ3VyZS5pbjsgdGhlbgorICAgICAgZWNobworICAgICAgJGFjX2NvbmZpZ3VyZSAtLWhlbHAKKyAgICBlbHNlCisgICAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX3N1YmRpciIgPiYyCisgICAgZmkKKyAgICBjZCAkYWNfcG9wZGlyCisgIGRvbmUKK2ZpCisKK3Rlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgMAoraWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgorICBjYXQgPDxcRU9GCisKK0NvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxCitGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK1RoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCitFT0YKKyAgZXhpdCAwCitmaQorZXhlYyA1PmNvbmZpZy5sb2cKK2NhdCA+JjUgPDxFT0YKK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCitydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgorCitJdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjUyLjIwMTQxMjA0LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisKKyAgJCAkMCAkQAorCitFT0YKK3sKK2NhdCA8PF9BU1VOQU1FCisjIyAtLS0tLS0tLS0tICMjCisjIyBQbGF0Zm9ybS4gICMjCisjIyAtLS0tLS0tLS0tICMjCisKK2hvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGwgICAgIHx8IGVjaG8gdW5rbm93bmAKKworL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAorL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAoraG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsICAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAorL2Jpbi9tYWNoaW5lICAgICAgICAgICA9IGAoL2Jpbi9tYWNoaW5lKSAyPi9kZXYvbnVsbCAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGwgICAgICAgICAgfHwgZWNobyB1bmtub3duYAorCitQQVRIID0gJFBBVEgKKworX0FTVU5BTUUKK30gPiY1CisKK2NhdCA+JjUgPDxFT0YKKyMjIC0tLS0tLS0tLS0tLSAjIworIyMgQ29yZSB0ZXN0cy4gICMjCisjIyAtLS0tLS0tLS0tLS0gIyMKKworRU9GCisKKyMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCisjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KKyMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KK2FjX2NvbmZpZ3VyZV9hcmdzPQorYWNfc2VwPQorZm9yIGFjX2FyZworZG8KKyAgY2FzZSAkYWNfYXJnIGluCisgIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1uby1jciB8IC0tbm8tYykgOzsKKyAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8tcmVjdXJzaSBcCisgIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKSA7OworICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKKyAgICBhY19hcmc9YGVjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgCisgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyRhY19zZXAnJGFjX2FyZyciCisgICAgYWNfc2VwPSIgIiA7OworICAqKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzJGFjX3NlcCRhY19hcmciCisgICAgIGFjX3NlcD0iICIgOzsKKyAgZXNhYworICAjIEdldCByaWQgb2YgdGhlIGxlYWRpbmcgc3BhY2UuCitkb25lCisKKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKKyMgY29uZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGluIHRoZXJlCisjIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KK3RyYXAgJ2V4aXRfc3RhdHVzPSQ/CisgICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLgorICBlY2hvID4mNQorICBlY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIyIgPiY1CisgIGVjaG8gIiMjIENhY2hlIHZhcmlhYmxlcy4gICMjIiA+JjUKKyAgZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMiID4mNQorICBlY2hvID4mNQorICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAoreworICAoc2V0KSAyPiYxIHwKKyAgICBjYXNlIGAoYWNfc3BhY2U9JyInIicgJyInIic7IHNldCB8IGdyZXAgYWNfc3BhY2UpIDI+JjFgIGluCisgICAgKmFjX3NwYWNlPVwgKikKKyAgICAgIHNlZCAtbiBcCisgICAgICAgICJzLyciJyInLyciJyInXFxcXCciJyInJyInIicvZzsKKyAgICAJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSciJyInXFwyJyInIicvcCIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNlZCAtbiBcCisgICAgICAgICJzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPVxcMi9wIgorICAgICAgOzsKKyAgICBlc2FjOworfSA+JjUKKyAgc2VkICIvXiQvZCIgY29uZmRlZnMuaCA+Y29uZnRlc3QubG9nCisgIGlmIHRlc3QgLXMgY29uZnRlc3QubG9nOyB0aGVuCisgICAgZWNobyA+JjUKKyAgICBlY2hvICIjIyAtLS0tLS0tLS0tLS0gIyMiID4mNQorICAgIGVjaG8gIiMjIGNvbmZkZWZzLmguICAjIyIgPiY1CisgICAgZWNobyAiIyMgLS0tLS0tLS0tLS0tICMjIiA+JjUKKyAgICBlY2hvID4mNQorICAgIGNhdCBjb25mdGVzdC5sb2cgPiY1CisgIGZpCisgIChlY2hvOyBlY2hvKSA+JjUKKyAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgorICAgIGVjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIiA+JjUKKyAgZWNobyAiJGFzX21lOiBleGl0ICRleGl0X3N0YXR1cyIgPiY1CisgIHJtIC1yZiBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29yZSBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJgorICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgICAgICcgMAorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvCisgIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IHsgKGV4aXQgMSk7IGV4aXQgMTsgfScgJGFjX3NpZ25hbAorZG9uZQorYWNfc2lnbmFsPTAKKworIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KK3JtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAorIyBBSVggY3BwIGxvc2VzIG9uIGFuIGVtcHR5IGZpbGUsIHNvIG1ha2Ugc3VyZSBpdCBjb250YWlucyBhdCBsZWFzdCBhIG5ld2xpbmUuCitlY2hvID5jb25mZGVmcy5oCisKKyMgTGV0IHRoZSBzaXRlIGZpbGUgc2VsZWN0IGFuIGFsdGVybmF0ZSBjYWNoZSBmaWxlIGlmIGl0IHdhbnRzIHRvLgorIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KK2lmIHRlc3QgLXogIiRDT05GSUdfU0lURSI7IHRoZW4KKyAgaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisgICAgQ09ORklHX1NJVEU9IiRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUgJHByZWZpeC9ldGMvY29uZmlnLnNpdGUiCisgIGVsc2UKKyAgICBDT05GSUdfU0lURT0iJGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUiCisgIGZpCitmaQorZm9yIGFjX3NpdGVfZmlsZSBpbiAkQ09ORklHX1NJVEU7IGRvCisgIGlmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCisgICAgeyBlY2hvICIkYXNfbWU6ODc1OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CisgICAgY2F0ICIkYWNfc2l0ZV9maWxlIiA+JjUKKyAgICAuICIkYWNfc2l0ZV9maWxlIgorICBmaQorZG9uZQorCitpZiB0ZXN0IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwKKyAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuCisgIGlmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgorICAgIHsgZWNobyAiJGFzX21lOjg4NjogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CitlY2hvICIkYXNfbWU6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgICAgY2FzZSAkY2FjaGVfZmlsZSBpbgorICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICRjYWNoZV9maWxlOzsKKyAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gLi8kY2FjaGVfZmlsZTs7CisgICAgZXNhYworICBmaQorZWxzZQorICB7IGVjaG8gIiRhc19tZTo4OTQ6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKK2VjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgID4kY2FjaGVfZmlsZQorZmkKKworIyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2FtZQorIyB2YWx1ZS4KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQorZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8CisgICAgICAgICAgICAgICBzZWQgLW4gJ3MvXmFjX2Vudl9cKFthLXpBLVpfMC05XSpcKV9zZXQ9LiovXDEvcCdgOyBkbworICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX25ld19zZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldAorICBldmFsIGFjX29sZF92YWw9IlwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZSIKKyAgZXZhbCBhY19uZXdfdmFsPSJcJGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWUiCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4KKyAgICBzZXQsKQorICAgICAgeyBlY2hvICIkYXNfbWU6OTEwOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OworICAgICxzZXQpCisgICAgICB7IGVjaG8gIiRhc19tZTo5MTQ6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsKTs7CisgICAgKikKKyAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4KKyAgICAgICAgeyBlY2hvICIkYXNfbWU6OTIwOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQorICAgICAgICB7IGVjaG8gIiRhc19tZTo5MjI6ICAgZm9ybWVyIHZhbHVlOiAgJGFjX29sZF92YWwiID4mNQorZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjI7fQorICAgICAgICB7IGVjaG8gIiRhc19tZTo5MjQ6ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mNQorZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjI7fQorICAgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OgorICAgICAgZmk7OworICBlc2FjCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4gIEl0IGRvZXNuJ3QgbWF0dGVyIGlmCisgICMgd2UgcGFzcyBzb21lIHR3aWNlIChpbiBhZGRpdGlvbiB0byB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cykuCisgIGlmIHRlc3QgIiRhY19uZXdfc2V0IiA9IHNldDsgdGhlbgorICAgIGNhc2UgJGFjX25ld192YWwgaW4KKyAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKKyAgICAgIGFjX2FyZz0kYWNfdmFyPWBlY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAKKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgJyRhY19hcmcnIgorICAgICAgOzsKKyAgICAqKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICRhY192YXI9JGFjX25ld192YWwiCisgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCitkb25lCitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCisgIHsgZWNobyAiJGFzX21lOjk0MzogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9CisgIHsgeyBlY2hvICIkYXNfbWU6OTQ1OiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworY2FzZSBgZWNobyAidGVzdGluZ1xjIiAyPi9kZXYvbnVsbDsgZWNobyAxLDIsM2AsYGVjaG8gLW4gdGVzdGluZyAyPi9kZXYvbnVsbDsgZWNobyAxLDIsM2AgaW4KKyAgKmMqLC1uKikgRUNIT19OPSBFQ0hPX0M9CSMgbmV3bGluZXMgZG8gbm90IHNlZCA7LSkgb25seSBicm9rZW4gc2hlbGxzIHdvdWxkIHVzZSB0aGlzIGNhc2UgYW55d2F5CisJCSAgIEVDSE9fVD0nCScgOzsKKyAgKmMqLCogICkgRUNIT19OPS1uIEVDSE9fQz0gRUNIT19UPSA7OworICAqKSAgICAgIEVDSE9fTj0gRUNIT19DPSdcYycgRUNIT19UPSA7OworZXNhYworZWNobyAiIyEgJFNIRUxMIiA+Y29uZnRlc3Quc2gKK2VjaG8gICJleGl0IDAiICAgPj5jb25mdGVzdC5zaAorY2htb2QgK3ggY29uZnRlc3Quc2gKK2lmIHsgKGVjaG8gIiRhc19tZTo5NjY6IFBBVEg9XCIuOy5cIjsgY29uZnRlc3Quc2giKSA+JjUKKyAgKFBBVEg9Ii47LiI7IGNvbmZ0ZXN0LnNoKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKyAgYWNfcGF0aF9zZXBhcmF0b3I9JzsnCitlbHNlCisgIGFjX3BhdGhfc2VwYXJhdG9yPToKK2ZpCitQQVRIX1NFUEFSQVRPUj0iJGFjX3BhdGhfc2VwYXJhdG9yIgorcm0gLWYgY29uZnRlc3Quc2gKKworYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBuY3Vyc2VzX2NmZy5oOm5jdXJzZXNfdHN0LmhpbiIKKwordGVzdCAtZiBjb25maWcuZ3Vlc3MgfHwgKCB0ZXN0IC1mIC4uL2NvbmZpZy5ndWVzcyAmJiBjcCAuLi9jb25maWcuZ3Vlc3MgLi8gKQorCit0ZXN0IC1mIGNvbmZpZy5zdWIgfHwgKCB0ZXN0IC1mIC4uL2NvbmZpZy5zdWIgJiYgY3AgLi4vY29uZmlnLnN1YiAuLyApCisKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uOyBkbworICBpZiB0ZXN0IC1mICRhY19kaXIvaW5zdGFsbC1zaDsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICRhY19kaXIvaW5zdGFsbC5zaDsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICRhY19kaXIvc2h0b29sOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgorICB7IHsgZWNobyAiJGFzX21lOjEwMDE6IGVycm9yOiBjYW5ub3QgZmluZCBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gJHNyY2RpciAkc3JjZGlyLy4uICRzcmNkaXIvLi4vLi4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorYWNfY29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIgorYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiCithY19jb25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICMgVGhpcyBzaG91bGQgYmUgQ3lnbnVzIGNvbmZpZ3VyZS4KKworIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgorJGFjX2NvbmZpZ19zdWIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgeyB7IGVjaG8gIiRhc19tZToxMDExOiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3ViIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKK2VjaG8gIiRhc19tZToxMDE1OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9idWlsZCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jdl9idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgLXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKKyAgYWNfY3ZfYnVpbGRfYWxpYXM9YCRhY19jb25maWdfZ3Vlc3NgCit0ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCisgIHsgeyBlY2hvICIkYXNfbWU6MTAyNDogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2FjX2N2X2J1aWxkPWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXNgIHx8CisgIHsgeyBlY2hvICIkYXNfbWU6MTAyODogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhcyBmYWlsZWQuIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhcyBmYWlsZWQuIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKK2ZpCitlY2hvICIkYXNfbWU6MTAzMzogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2J1aWxkIiA+JjYKK2J1aWxkPSRhY19jdl9idWlsZAorYnVpbGRfY3B1PWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCitidWlsZF92ZW5kb3I9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK2J1aWxkX29zPWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCisKK2lmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuZ3Vlc3MgfHwgdGVzdCAtZiAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MgOyB0aGVuCisJZWNobyAiJGFzX21lOjEwNDE6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMKK3Rlc3QgLXogIiRhY19jdl9ob3N0X2FsaWFzIiAmJgorICBhY19jdl9ob3N0X2FsaWFzPSRhY19jdl9idWlsZF9hbGlhcworYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXNgIHx8CisgIHsgeyBlY2hvICIkYXNfbWU6MTA1MDogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZmkKK2VjaG8gIiRhc19tZToxMDU1OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9ob3N0IiA+JjYKK2hvc3Q9JGFjX2N2X2hvc3QKK2hvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2hvc3RfdmVuZG9yPWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK2hvc3Rfb3M9YGVjaG8gJGFjX2N2X2hvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAorCisJc3lzdGVtX25hbWU9IiRob3N0X29zIgorZWxzZQorCXN5c3RlbV9uYW1lPSJgKHVuYW1lIC1zIC1yKSAyPi9kZXYvbnVsbGAiCisJaWYgdGVzdCAteiAiJHN5c3RlbV9uYW1lIiA7IHRoZW4KKwkJc3lzdGVtX25hbWU9ImAoaG9zdG5hbWUpIDI+L2Rldi9udWxsYCIKKwlmaQorZmkKK3Rlc3QgLW4gIiRzeXN0ZW1fbmFtZSIgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgU1lTVEVNX05BTUUgIiRzeXN0ZW1fbmFtZSIKK0VPRgorCitpZiB0ZXN0ICIke2NmX2N2X3N5c3RlbV9uYW1lK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNmX2N2X3N5c3RlbV9uYW1lPSIkc3lzdGVtX25hbWUiCitmaQorCit0ZXN0IC16ICIkc3lzdGVtX25hbWUiICYmIHN5c3RlbV9uYW1lPSIkY2ZfY3Zfc3lzdGVtX25hbWUiCit0ZXN0IC1uICIkY2ZfY3Zfc3lzdGVtX25hbWUiICYmIGVjaG8gIiRhc19tZToxMDgxOiByZXN1bHQ6IENvbmZpZ3VyaW5nIGZvciAkY2ZfY3Zfc3lzdGVtX25hbWUiID4mNQorZWNobyAiJHtFQ0hPX1R9Q29uZmlndXJpbmcgZm9yICRjZl9jdl9zeXN0ZW1fbmFtZSIgPiY2CisKK2lmIHRlc3QgIi4kc3lzdGVtX25hbWUiICE9ICIuJGNmX2N2X3N5c3RlbV9uYW1lIiA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTA4NTogcmVzdWx0OiBDYWNoZWQgc3lzdGVtIG5hbWUgKCRzeXN0ZW1fbmFtZSkgZG9lcyBub3QgYWdyZWUgd2l0aCBhY3R1YWwgKCRjZl9jdl9zeXN0ZW1fbmFtZSkiID4mNQorZWNobyAiJHtFQ0hPX1R9Q2FjaGVkIHN5c3RlbSBuYW1lICgkc3lzdGVtX25hbWUpIGRvZXMgbm90IGFncmVlIHdpdGggYWN0dWFsICgkY2ZfY3Zfc3lzdGVtX25hbWUpIiA+JjYKKwl7IHsgZWNobyAiJGFzX21lOjEwODc6IGVycm9yOiBcIlBsZWFzZSByZW1vdmUgY29uZmlnLmNhY2hlIGFuZCB0cnkgYWdhaW4uXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogXCJQbGVhc2UgcmVtb3ZlIGNvbmZpZy5jYWNoZSBhbmQgdHJ5IGFnYWluLlwiIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCit0ZXN0ICIkcHJvZ3JhbV9wcmVmaXgiICE9IE5PTkUgJiYKKyAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyxeLCRwcm9ncmFtX3ByZWZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCisjIFVzZSBhIGRvdWJsZSAkIHNvIG1ha2UgaWdub3JlcyBpdC4KK3Rlc3QgIiRwcm9ncmFtX3N1ZmZpeCIgIT0gTk9ORSAmJgorICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzLFwkLCRwcm9ncmFtX3N1ZmZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCisjIERvdWJsZSBhbnkgXCBvciAkLiAgZWNobyBtaWdodCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCisjIEJ5IGRlZmF1bHQgd2FzIGBzLHgseCcsIHJlbW92ZSBpdCBpZiB1c2VsZXNzLgorY2F0IDw8XF9BQ0VPRiA+Y29uZnRlc3Quc2VkCitzL1tcXCRdLyYmL2c7cy87cyx4LHgsJC8vCitfQUNFT0YKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9YGVjaG8gJHByb2dyYW1fdHJhbnNmb3JtX25hbWUgfCBzZWQgLWYgY29uZnRlc3Quc2VkYAorcm0gY29uZnRlc3Quc2VkCisKK2VjaG8gIiRhc19tZToxMTA1OiBjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfS4uLiAkRUNIT19DIiA+JjYKK3NldCBkdW1teSAke01BS0UtbWFrZX07IGFjX21ha2U9YGVjaG8gIiQyIiB8IHNlZCAneSwuLystLF9fcF8sJ2AKK2lmIGV2YWwgInRlc3QgXCJcJHthY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcRU9GCithbGw6CisJQGVjaG8gJ2FjX21ha2V0ZW1wPSIke01BS0V9IicKK0VPRgorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCitldmFsIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbCB8IGdyZXAgdGVtcD1gCitpZiB0ZXN0IC1uICIkYWNfbWFrZXRlbXAiOyB0aGVuCisgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllcworZWxzZQorICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UKK2ZpCitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9wcm9nX21ha2VfJyR7YWNfbWFrZX1fc2V0YFwiID0geWVzIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MTEyNTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKyAgU0VUX01BS0U9CitlbHNlCisgIGVjaG8gIiRhc19tZToxMTI5OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKyAgU0VUX01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9IgorZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorYWNfbWFpbl9yZXR1cm49cmV0dXJuCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTE0MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Z2NjIgorZWNobyAiJGFzX21lOjExNTg6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MTE2NjogcmVzdWx0OiAkQ0MiID4mNQorZWNobyAiJHtFQ0hPX1R9JENDIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjExNjk6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjExNzg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCitlY2hvICIkYXNfbWU6MTE5MzogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMjAxOiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MTIwNDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIENDPSRhY19jdF9DQworZWxzZQorICBDQz0iJGFjX2N2X3Byb2dfQ0MiCitmaQorCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTIxNzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCitlY2hvICIkYXNfbWU6MTIzMjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMjQwOiByZXN1bHQ6ICRDQyIgPiY1CitlY2hvICIke0VDSE9fVH0kQ0MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MTI0MzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjEyNTI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X0NDPSJjYyIKK2VjaG8gIiRhc19tZToxMjY3OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjEyNzU6IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToxMjc4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgQ0M9JGFjX2N0X0NDCitlbHNlCisgIENDPSIkYWNfY3ZfcHJvZ19DQyIKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTI5MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfcHJvZ19yZWplY3RlZD1ubworICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQoraWYgdGVzdCAiJGFjX2Rpci8kYWNfd29yZCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuCisgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCisgIGNvbnRpbnVlCitmaQorYWNfY3ZfcHJvZ19DQz0iY2MiCitlY2hvICIkYXNfbWU6MTMxMTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCisgIHNoaWZ0CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgorICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KKyAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4KKyAgICBzaGlmdAorICAgIHNldCBkdW1teSAiJGFjX2Rpci8kYWNfd29yZCIgJHsxKyIkQCJ9CisgICAgc2hpZnQKKyAgICBhY19jdl9wcm9nX0NDPSIkQCIKKyAgZmkKK2ZpCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMzMzOiByZXN1bHQ6ICRDQyIgPiY1CitlY2hvICIke0VDSE9fVH0kQ0MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MTMzNjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGNsCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToxMzQ3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MTM2MjogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMzcwOiByZXN1bHQ6ICRDQyIgPiY1CitlY2hvICIke0VDSE9fVH0kQ0MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MTM3MzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgICAgdGVzdCAtbiAiJENDIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MKKyAgZm9yIGFjX3Byb2cgaW4gY2wKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTM4NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjE0MDE6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCithY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MTQwOTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0NDIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjE0MTI6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkYWNfY3RfQ0MiICYmIGJyZWFrCitkb25lCisKKyAgQ0M9JGFjX2N0X0NDCitmaQorCitmaQorCit0ZXN0IC16ICIkQ0MiICYmIHsgeyBlY2hvICIkYXNfbWU6MTQyNDogZXJyb3I6IG5vIGFjY2VwdGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG5vIGFjY2VwdGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlci4KK2VjaG8gIiRhc19tZToxNDI5OiIgXAorICAgICAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1CithY19jb21waWxlcj1gc2V0IFggJGFjX2NvbXBpbGU7IGVjaG8gJDJgCit7IChldmFsIGVjaG8gIiRhc19tZToxNDMyOiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQzNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9Cit7IChldmFsIGVjaG8gIiRhc19tZToxNDM3OiBcIiRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfQoreyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ0MjogXCIkYWNfY29tcGlsZXIgLVYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZXIgLVYgPC9kZXYvbnVsbCA+JjUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDQ5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgYS5vdXQgYS5leGUiCisjIFRyeSB0byBjcmVhdGUgYW4gZXhlY3V0YWJsZSB3aXRob3V0IC1vIGZpcnN0LCBkaXNyZWdhcmQgYS5vdXQuCisjIEl0IHdpbGwgaGVscCB1cyBkaWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9uCisjIG9mIGV4ZWV4dC4KK2VjaG8gIiRhc19tZToxNDY1OiBjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1dCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0Li4uICRFQ0hPX0MiID4mNgorYWNfbGlua19kZWZhdWx0PWBlY2hvICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25mdGVzdFteIF0qLy8nYAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2ODogXCIkYWNfbGlua19kZWZhdWx0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmtfZGVmYXVsdCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorICAjIEZpbmQgdGhlIG91dHB1dCwgc3RhcnRpbmcgZnJvbSB0aGUgbW9zdCBsaWtlbHkuICBUaGlzIHNjaGVtZSBpcworIyBub3Qgcm9idXN0IHRvIGp1bmsgaW4gYC4nLCBoZW5jZSBnbyB0byB3aWxkY2FyZHMgKGEuKikgb25seSBhcyBhIGxhc3QKKyMgcmVzb3J0LgorZm9yIGFjX2ZpbGUgaW4gYGxzIGEuZXhlIGNvbmZ0ZXN0LmV4ZSAyPi9kZXYvbnVsbDsKKyAgICAgICAgICAgICAgICBscyBhLm91dCBjb25mdGVzdCAyPi9kZXYvbnVsbDsKKyAgICAgICAgICAgICAgICBscyBhLiogY29uZnRlc3QuKiAyPi9kZXYvbnVsbGA7IGRvCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLmRiZyB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICoubyB8ICoub2JqICkgOzsKKyAgICBhLm91dCApICMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0CisgICAgICAgICAgICAjIGNlcnRhaW5seSByaWdodC4KKyAgICAgICAgICAgIGJyZWFrOzsKKyAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKKyAgICAgICAgICAjIEZJWE1FOiBJIGJlbGlldmUgd2UgZXhwb3J0IGFjX2N2X2V4ZWV4dCBmb3IgTGlidG9vbCAtLWFraW0uCisgICAgICAgICAgZXhwb3J0IGFjX2N2X2V4ZWV4dAorICAgICAgICAgIGJyZWFrOzsKKyAgICAqICkgYnJlYWs7OworICBlc2FjCitkb25lCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK3sgeyBlY2hvICIkYXNfbWU6MTQ5NDogZXJyb3I6IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcyIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMiID4mMjt9CisgICB7IChleGl0IDc3KTsgZXhpdCA3NzsgfTsgfQorZmkKKworYWNfZXhlZXh0PSRhY19jdl9leGVleHQKK2VjaG8gIiRhc19tZToxNTAwOiByZXN1bHQ6ICRhY19maWxlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19maWxlIiA+JjYKKworIyBDaGVjayB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElmIG5vdCwgZWl0aGVyCisjIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCitlY2hvICIkYXNfbWU6MTUwNTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MuLi4gJEVDSE9fQyIgPiY2CisjIEZJWE1FOiBUaGVzZSBjcm9zcyBjb21waWxlciBoYWNrcyBzaG91bGQgYmUgcmVtb3ZlZCBmb3IgQXV0b2NvbmYgMy4wCisjIElmIG5vdCBjcm9zcyBjb21waWxpbmcsIGNoZWNrIHRoYXQgd2UgY2FuIHJ1biBhIHNpbXBsZSBwcm9ncmFtLgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCisgIGlmIHsgYWNfdHJ5PScuLyRhY19maWxlJworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTExOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUxNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgICAgY3Jvc3NfY29tcGlsaW5nPW5vCisgIGVsc2UKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCisJY3Jvc3NfY29tcGlsaW5nPXllcworICAgIGVsc2UKKwl7IHsgZWNobyAiJGFzX21lOjE1MjE6IGVycm9yOiBjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCitJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgorSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0taG9zdCcuIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgZmkKKyAgZmkKK2ZpCitlY2hvICIkYXNfbWU6MTUyOTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKworcm0gLWYgYS5vdXQgYS5leGUgY29uZnRlc3QkYWNfY3ZfZXhlZXh0CithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQorIyBDaGVjayB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElmIG5vdCwgZWl0aGVyCisjIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCitlY2hvICIkYXNfbWU6MTUzNjogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nLi4uICRFQ0hPX0MiID4mNgorZWNobyAiJGFzX21lOjE1Mzg6IHJlc3VsdDogJGNyb3NzX2NvbXBpbGluZyIgPiY1CitlY2hvICIke0VDSE9fVH0kY3Jvc3NfY29tcGlsaW5nIiA+JjYKKworZWNobyAiJGFzX21lOjE1NDE6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeC4uLiAkRUNIT19DIiA+JjYKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NDM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorICAjIElmIGJvdGggYGNvbmZ0ZXN0LmV4ZScgYW5kIGBjb25mdGVzdCcgYXJlIGBwcmVzZW50JyAod2VsbCwgb2JzZXJ2YWJsZSkKKyMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3IgaW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbAorIyB3b3JrIHByb3Blcmx5IChpLmUuLCByZWZlciB0byBgY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0IHdpdGgKKyMgYHJtJy4KK2ZvciBhY19maWxlIGluIGAobHMgY29uZnRlc3QuZXhlOyBscyBjb25mdGVzdDsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5kYmcgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLm8gfCAqLm9iaiApIDs7CisgICAgKi4qICkgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCisgICAgICAgICAgZXhwb3J0IGFjX2N2X2V4ZWV4dAorICAgICAgICAgIGJyZWFrOzsKKyAgICAqICkgYnJlYWs7OworICBlc2FjCitkb25lCitlbHNlCisgIHsgeyBlY2hvICIkYXNfbWU6MTU2MjogZXJyb3I6IGNhbm5vdCBjb21wdXRlIEVYRUVYVDogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgRVhFRVhUOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluayIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworcm0gLWYgY29uZnRlc3QkYWNfY3ZfZXhlZXh0CitlY2hvICIkYXNfbWU6MTU2ODogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9leGVleHQiID4mNgorCitybSAtZiBjb25mdGVzdC4kYWNfZXh0CitFWEVFWFQ9JGFjX2N2X2V4ZWV4dAorYWNfZXhlZXh0PSRFWEVFWFQKK2VjaG8gIiRhc19tZToxNTc0OiBjaGVja2luZyBmb3Igb2JqZWN0IHN1ZmZpeCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBvYmplY3Qgc3VmZml4Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9vYmpleHQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTgwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QubyBjb25mdGVzdC5vYmoKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1OTI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1OTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorICBmb3IgYWNfZmlsZSBpbiBgKGxzIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqOyBscyBjb25mdGVzdC4qKSAyPi9kZXYvbnVsbGA7IGRvCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLmRiZyB8ICoucGRiIHwgKi54U1lNIHwgKi5tYXAgfCAqLmluZiApIDs7CisgICAgKikgYWNfY3Zfb2JqZXh0PWBleHByICIkYWNfZmlsZSIgOiAnLipcLlwoLipcKSdgCisgICAgICAgYnJlYWs7OworICBlc2FjCitkb25lCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK3sgeyBlY2hvICIkYXNfbWU6MTYwNzogZXJyb3I6IGNhbm5vdCBjb21wdXRlIE9CSkVYVDogY2Fubm90IGNvbXBpbGUiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgT0JKRVhUOiBjYW5ub3QgY29tcGlsZSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworcm0gLWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE2MTQ6IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3Zfb2JqZXh0IiA+JjYKK09CSkVYVD0kYWNfY3Zfb2JqZXh0CithY19vYmpleHQ9JE9CSkVYVAorZWNobyAiJGFzX21lOjE2MTg6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNjI0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9fR05VQ19fCisgICAgICAgY2hva2UgbWUKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2Mzk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2NDI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY0NTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jb21waWxlcl9nbnU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2NvbXBpbGVyX2dudT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY3ZfY19jb21waWxlcl9nbnU9JGFjX2NvbXBpbGVyX2dudQorCitmaQorZWNobyAiJGFzX21lOjE2NjA6IHJlc3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2CitHQ0M9YHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllcyAmJiBlY2hvIHllc2AKK2FjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0KK2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLWciCitlY2hvICIkYXNfbWU6MTY2NjogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE2NzIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjg0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjg3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2OTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjkzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfcHJvZ19jY19nPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9wcm9nX2NjX2c9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTcwMzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2NjX2ciID4mNgoraWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbgorICBDRkxBR1M9JGFjX3NhdmVfQ0ZMQUdTCitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbgorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENGTEFHUz0iLWcgLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPSItZyIKKyAgZmkKK2Vsc2UKKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0KKyAgZmkKK2ZpCisjIFNvbWUgcGVvcGxlIHVzZSBhIEMrKyBjb21waWxlciB0byBjb21waWxlIEMuICBTaW5jZSB3ZSB1c2UgYGV4aXQnLAorIyBpbiBDKysgd2UgbmVlZCB0byBkZWNsYXJlIGl0LiAgSW4gY2FzZSBzb21lb25lIHVzZXMgdGhlIHNhbWUgY29tcGlsZXIKKyMgZm9yIGJvdGggY29tcGlsaW5nIEMgYW5kIEMrKyB3ZSBuZWVkIHRvIGhhdmUgdGhlIEMrKyBjb21waWxlciBkZWNpZGUKKyMgdGhlIGRlY2xhcmF0aW9uIG9mIGV4aXQsIHNpbmNlIGl0J3MgdGhlIG1vc3QgZGVtYW5kaW5nIGVudmlyb25tZW50LgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjaWZuZGVmIF9fY3BsdXNwbHVzCisgIGNob2tlIG1lCisjZW5kaWYKK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTczMDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTczMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNzM2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTczOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGZvciBhY19kZWNsYXJhdGlvbiBpbiBcCisgICAnJ1wKKyAgICcjaW5jbHVkZSA8c3RkbGliLmg+JyBcCisgICAnZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhpdCAoaW50KSB0aHJvdyAoKTsgdXNpbmcgc3RkOjpleGl0OycgXAorICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKKyAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KSB0aHJvdyAoKTsnIFwKKyAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KTsnIFwKKyAgICd2b2lkIGV4aXQgKGludCk7JworZG8KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNzUxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyRhY19kZWNsYXJhdGlvbgoraW50CittYWluICgpCit7CitleGl0ICg0Mik7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3NjQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3Njc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTc3MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3NzM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTc4MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCiskYWNfZGVjbGFyYXRpb24KK2ludAorbWFpbiAoKQoreworZXhpdCAoNDIpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNzk1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNzk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE4MDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxODA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorcm0gLXJmIGNvbmZ0ZXN0KgoraWYgdGVzdCAtbiAiJGFjX2RlY2xhcmF0aW9uIjsgdGhlbgorICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAorICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29uZmRlZnMuaAorICBlY2hvICcjZW5kaWYnICAgICAgICAgICAgID4+Y29uZmRlZnMuaAorZmkKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CithY19tYWluX3JldHVybj1yZXR1cm4KKworR0NDX1ZFUlNJT049bm9uZQoraWYgdGVzdCAiJEdDQyIgPSB5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjE4MzQ6IGNoZWNraW5nIHZlcnNpb24gb2YgJENDIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgdmVyc2lvbiBvZiAkQ0MuLi4gJEVDSE9fQyIgPiY2CisJR0NDX1ZFUlNJT049ImAke0NDfSAtLXZlcnNpb24gMj4vZGV2L251bGwgfCBzZWQgLWUgJzIsJGQnIC1lICdzL14uKihHQ0NbXildKikgLy8nIC1lICdzL14uKihEZWJpYW5bXildKikgLy8nIC1lICdzL15bXjAtOS5dKi8vJyAtZSAncy9bXjAtOS5dLiovLydgIgorCXRlc3QgLXogIiRHQ0NfVkVSU0lPTiIgJiYgR0NDX1ZFUlNJT049dW5rbm93bgorCWVjaG8gIiRhc19tZToxODM4OiByZXN1bHQ6ICRHQ0NfVkVSU0lPTiIgPiY1CitlY2hvICIke0VDSE9fVH0kR0NDX1ZFUlNJT04iID4mNgorZmkKKworZWNobyAiJGFzX21lOjE4NDI6IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgQU5TSSBDLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19jY19zdGRjPW5vCithY19zYXZlX0NDPSRDQworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxODUwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCitzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNoYXIgKipwOworICAgICBpbnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIgKnM7CisgIHZhX2xpc3QgdjsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CisgIHZhX2VuZCAodik7CisgIHJldHVybiBzOworfQoraW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OworaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2OworaW50CittYWluICgpCit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKKyMgRG9uJ3QgdHJ5IGdjYyAtYW5zaTsgdGhhdCB0dXJucyBvZmYgdXNlZnVsIGV4dGVuc2lvbnMgYW5kCisjIGJyZWFrcyBzb21lIHN5c3RlbXMnIGhlYWRlciBmaWxlcy4KKyMgQUlYCQkJLXFsYW5nbHZsPWFuc2kKKyMgVWx0cml4IGFuZCBPU0YvMQktc3RkMQorIyBIUC1VWCAxMC4yMCBhbmQgbGF0ZXIJLUFlCisjIEhQLVVYIG9sZGVyIHZlcnNpb25zCS1BYSAtRF9IUFVYX1NPVVJDRQorIyBTVlI0CQkJLVhjIC1EX19FWFRFTlNJT05TX18KK2ZvciBhY19hcmcgaW4gIiIgLXFsYW5nbHZsPWFuc2kgLXN0ZDEgLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKK2RvCisgIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgorICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxODk5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxOTAyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE5MDU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxOTA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19hcmcKK2JyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Citkb25lCitybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQKK0NDPSRhY19zYXZlX0NDCisKK2ZpCisKK2Nhc2UgIngkYWNfY3ZfcHJvZ19jY19zdGRjIiBpbgorICB4fHhubykKKyAgICBlY2hvICIkYXNfbWU6MTkyNTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CitlY2hvICIke0VDSE9fVH1ub25lIG5lZWRlZCIgPiY2IDs7CisgICopCisgICAgZWNobyAiJGFzX21lOjE5Mjg6IHJlc3VsdDogJGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19jY19zdGRjIiA+JjYKKyAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX3N0ZGMiIDs7Citlc2FjCisKKyMgVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGRlZmluZWQgYnkgQUNfUFJPR19DQworOiAke0NDOj1jY30KKworZWNobyAiJGFzX21lOjE5MzY6IGNoZWNraW5nIFwkQ0MgdmFyaWFibGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBcJENDIHZhcmlhYmxlLi4uICRFQ0hPX0MiID4mNgorY2FzZSAiJENDIiBpbgorKCpbXCBcCV0tW0lVRF0qKQorCWVjaG8gIiRhc19tZToxOTQwOiByZXN1bHQ6IGJyb2tlbiIgPiY1CitlY2hvICIke0VDSE9fVH1icm9rZW4iID4mNgorCXsgZWNobyAiJGFzX21lOjE5NDI6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQ1BQRkxBR1Mgb3B0aW9ucyIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQ1BQRkxBR1Mgb3B0aW9ucyIgPiYyO30KKwkjIGh1bW9yIGhpbS4uLgorCWNmX2ZsYWdzPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL15bXiAJXSpbIAldLy8nYAorCUNDPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL1sgCV0uKi8vJ2AKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfZmxhZ3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKKwk7OworKCopCisJZWNobyAiJGFzX21lOjIwMjg6IHJlc3VsdDogb2siID4mNQorZWNobyAiJHtFQ0hPX1R9b2siID4mNgorCTs7Citlc2FjCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgorZWNobyAiJGFzX21lOjIwMzk6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gJEVDSE9fQyIgPiY2CisjIE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgoraWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KKyAgQ1BQPQorZmkKK2lmIHRlc3QgLXogIiRDUFAiOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAorICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCisgICAgZG8KKyAgICAgIGFjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjA2MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA2NTogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjA3MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCitjb250aW51ZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbi1leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjA5NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjA5ODogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MjEwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4KKyAgYnJlYWsKK2ZpCisKKyAgICBkb25lCisgICAgYWNfY3ZfcHJvZ19DUFA9JENQUAorCitmaQorICBDUFA9JGFjX2N2X3Byb2dfQ1BQCitlbHNlCisgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKK2ZpCitlY2hvICIkYXNfbWU6MjE0MTogcmVzdWx0OiAkQ1BQIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRDUFAiID4mNgorYWNfcHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyMTUxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyAgICAgICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTU2OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToyMTYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKworICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyMTg1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyMTg5OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToyMTk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCitjb250aW51ZQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitpZiAkYWNfcHJlcHJvY19vazsgdGhlbgorICA6CitlbHNlCisgIHsgeyBlY2hvICIkYXNfbWU6MjIyMzogZXJyb3I6IEMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjayIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2siID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2FjX21haW5fcmV0dXJuPXJldHVybgorCitmb3IgYWNfcHJvZyBpbiBtYXdrIGdhd2sgbmF3ayBhd2sKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MjIzOTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgorICBhY19jdl9wcm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MjI1NDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0FXSz0kYWNfY3ZfcHJvZ19BV0sKK2lmIHRlc3QgLW4gIiRBV0siOyB0aGVuCisgIGVjaG8gIiRhc19tZToyMjYyOiByZXN1bHQ6ICRBV0siID4mNQorZWNobyAiJHtFQ0hPX1R9JEFXSyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToyMjY1OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJEFXSyIgJiYgYnJlYWsKK2RvbmUKKworIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3IKKyMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgorIyBTeXNWIC9ldGMvaW5zdGFsbCwgL3Vzci9zYmluL2luc3RhbGwKKyMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbAorIyBJUklYIC9zYmluL2luc3RhbGwKKyMgQUlYIC9iaW4vaW5zdGFsbAorIyBBbWlnYU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzCisjIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxhZworIyBBRlMgL3Vzci9hZnN3cy9iaW4vaW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlzdGVudCBhcmdzCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3RhZmYiCisjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KK2VjaG8gIiRhc19tZToyMjg0OiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgoraWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCisgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgSUZTPSRhY19zYXZlX0lGUworICAgICMgQWNjb3VudCBmb3IgcGVvcGxlIHdobyBwdXQgdHJhaWxpbmcgc2xhc2hlcyBpbiBQQVRIIGVsZW1lbnRzLgorICAgIGNhc2UgJGFjX2Rpci8gaW4KKyAgICAvIHwgLi8gfCAuLy8gfCAvY0MvKiBcCisgICAgfCAvZXRjLyogfCAvdXNyL3NiaW4vKiB8IC91c3IvZXRjLyogfCAvc2Jpbi8qIHwgL3Vzci9hZnN3cy9iaW4vKiBcCisgICAgfCAvdXNyL3VjYi8qICkgOzsKKyAgICAqKQorICAgICAgIyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4KKyAgICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAorICAgICAgIyBieSBkZWZhdWx0LgorICAgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbworICAgICAgICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY19wcm9nIjsgdGhlbgorCSAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKyAgICAgICAgICAgIGdyZXAgZHNwbXNnICIkYWNfZGlyLyRhY19wcm9nIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgIyBBSVggaW5zdGFsbC4gIEl0IGhhcyBhbiBpbmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9uLgorCSAgICA6CisJICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCisJICAgIGdyZXAgcHdwbHVzICIkYWNfZGlyLyRhY19wcm9nIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYWNfZGlyLyRhY19wcm9nIC1jIgorCSAgICBicmVhayAyCisJICBmaQorCWZpCisgICAgICBkb25lCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCitmaQorICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgorICAgIElOU1RBTEw9JGFjX2N2X3BhdGhfaW5zdGFsbAorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgV2UgZG9uJ3QgY2FjaGUgYQorICAgICMgcGF0aCBmb3IgSU5TVEFMTCB3aXRoaW4gYSBzb3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbAorICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCisgICAgIyByZW1vdmVkLCBvciBpZiB0aGUgcGF0aCBpcyByZWxhdGl2ZS4KKyAgICBJTlNUQUxMPSRhY19pbnN0YWxsX3NoCisgIGZpCitmaQorZWNobyAiJGFzX21lOjIzMzM6IHJlc3VsdDogJElOU1RBTEwiID4mNQorZWNobyAiJHtFQ0hPX1R9JElOU1RBTEwiID4mNgorCisjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCisjIEl0IHRoaW5rcyB0aGUgZmlyc3QgY2xvc2UgYnJhY2UgZW5kcyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLgordGVzdCAteiAiJElOU1RBTExfUFJPR1JBTSIgJiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JworCit0ZXN0IC16ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JworCit0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0JworCitjYXNlICRJTlNUQUxMIGluCisoLyopCisJOzsKKygqKQorCWNmX2Rpcj1gZWNobyAkSU5TVEFMTCB8IHNlZCAtZSAncyUvW14vXSokJSUnYAorCXRlc3QgLXogIiRjZl9kaXIiICYmIGNmX2Rpcj0uCisJSU5TVEFMTD1gY2QgJGNmX2RpciAmJiBwd2RgL2BlY2hvICRJTlNUQUxMIHwgc2VkIC1lICdzJV4uKi8lJSdgCisJOzsKK2VzYWMKKworZm9yIGFjX3Byb2cgaW4gdGRsaW50IGxpbnQgYWxpbnQgc3BsaW50IGxjbGludAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyMzU4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTElOVCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTElOVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19MSU5UPSIkTElOVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX0xJTlQ9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjIzNzM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitMSU5UPSRhY19jdl9wcm9nX0xJTlQKK2lmIHRlc3QgLW4gIiRMSU5UIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MjM4MTogcmVzdWx0OiAkTElOVCIgPiY1CitlY2hvICIke0VDSE9fVH0kTElOVCIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToyMzg0OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJExJTlQiICYmIGJyZWFrCitkb25lCisKK2VjaG8gIiRhc19tZToyMzkxOiBjaGVja2luZyBpZiBmaWxlc3lzdGVtIHN1cHBvcnRzIG1peGVkLWNhc2UgZmlsZW5hbWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgZmlsZXN5c3RlbSBzdXBwb3J0cyBtaXhlZC1jYXNlIGZpbGVuYW1lcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbWl4ZWRjYXNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgorCWNhc2UgJHRhcmdldF9hbGlhcyBpbgorCSgqLW9zMi1lbXgqfCotbXNkb3NkamdwcCp8Ki1jeWd3aW4qfCotbXN5cyp8Ki1taW5ndyp8Ki11d2luKikKKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJCTs7CisJKCopCisJCWNmX2N2X21peGVkY2FzZT15ZXMKKwkJOzsKKwllc2FjCitlbHNlCisJcm0gLWYgY29uZnRlc3QgQ09ORlRFU1QKKwllY2hvIHRlc3QgPmNvbmZ0ZXN0CisJaWYgdGVzdCAtZiBDT05GVEVTVCA7IHRoZW4KKwkJY2ZfY3ZfbWl4ZWRjYXNlPW5vCisJZWxzZQorCQljZl9jdl9taXhlZGNhc2U9eWVzCisJZmkKKwlybSAtZiBjb25mdGVzdCBDT05GVEVTVAorZmkKKworZmkKK2VjaG8gIiRhc19tZToyNDE4OiByZXN1bHQ6ICRjZl9jdl9taXhlZGNhc2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X21peGVkY2FzZSIgPiY2Cit0ZXN0ICIkY2ZfY3ZfbWl4ZWRjYXNlIiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTUlYRURDQVNFX0ZJTEVOQU1FUyAxCitFT0YKKworZm9yIGFjX3Byb2cgaW4gZXhjdGFncyBjdGFncworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyNDI5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1RBR1Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENUQUdTIjsgdGhlbgorICBhY19jdl9wcm9nX0NUQUdTPSIkQ1RBR1MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19DVEFHUz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MjQ0NDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0NUQUdTPSRhY19jdl9wcm9nX0NUQUdTCitpZiB0ZXN0IC1uICIkQ1RBR1MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNDUyOiByZXN1bHQ6ICRDVEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kQ1RBR1MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjQ1NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRDVEFHUyIgJiYgYnJlYWsKK2RvbmUKKworZm9yIGFjX3Byb2cgaW4gZXhldGFncyBldGFncworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyNDY2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRVRBR1Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEVUQUdTIjsgdGhlbgorICBhY19jdl9wcm9nX0VUQUdTPSIkRVRBR1MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19FVEFHUz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MjQ4MTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK0VUQUdTPSRhY19jdl9wcm9nX0VUQUdTCitpZiB0ZXN0IC1uICIkRVRBR1MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNDg5OiByZXN1bHQ6ICRFVEFHUyIgPiY1CitlY2hvICIke0VDSE9fVH0kRVRBR1MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjQ5MjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRFVEFHUyIgJiYgYnJlYWsKK2RvbmUKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke0NUQUdTOi1jdGFnc30iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7Q1RBR1M6LWN0YWdzfTsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjI1MDE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE1BS0VfTE9XRVJfVEFHUyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1M9IiRNQUtFX0xPV0VSX1RBR1MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1M9InllcyIKK2VjaG8gIiRhc19tZToyNTE2OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKK2JyZWFrCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFLRV9MT1dFUl9UQUdTIiAmJiBhY19jdl9wcm9nX01BS0VfTE9XRVJfVEFHUz0ibm8iCitmaQorZmkKK01BS0VfTE9XRVJfVEFHUz0kYWNfY3ZfcHJvZ19NQUtFX0xPV0VSX1RBR1MKK2lmIHRlc3QgLW4gIiRNQUtFX0xPV0VSX1RBR1MiOyB0aGVuCisgIGVjaG8gIiRhc19tZToyNTI1OiByZXN1bHQ6ICRNQUtFX0xPV0VSX1RBR1MiID4mNQorZWNobyAiJHtFQ0hPX1R9JE1BS0VfTE9XRVJfVEFHUyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToyNTI4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2lmIHRlc3QgIiRjZl9jdl9taXhlZGNhc2UiID0geWVzIDsgdGhlbgorCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHtFVEFHUzotZXRhZ3N9Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke0VUQUdTOi1ldGFnc307IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZToyNTM1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRNQUtFX1VQUEVSX1RBR1MiOyB0aGVuCisgIGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTPSIkTUFLRV9VUFBFUl9UQUdTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTPSJ5ZXMiCitlY2hvICIkYXNfbWU6MjU1MDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX01BS0VfVVBQRVJfVEFHUyIgJiYgYWNfY3ZfcHJvZ19NQUtFX1VQUEVSX1RBR1M9Im5vIgorZmkKK2ZpCitNQUtFX1VQUEVSX1RBR1M9JGFjX2N2X3Byb2dfTUFLRV9VUFBFUl9UQUdTCitpZiB0ZXN0IC1uICIkTUFLRV9VUFBFUl9UQUdTIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MjU1OTogcmVzdWx0OiAkTUFLRV9VUFBFUl9UQUdTIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRNQUtFX1VQUEVSX1RBR1MiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6MjU2MjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitlbHNlCisJTUFLRV9VUFBFUl9UQUdTPW5vCitmaQorCitpZiB0ZXN0ICIkTUFLRV9VUFBFUl9UQUdTIiA9IHllcyA7IHRoZW4KKwlNQUtFX1VQUEVSX1RBR1M9CitlbHNlCisJTUFLRV9VUFBFUl9UQUdTPSIjIgorZmkKKworaWYgdGVzdCAiJE1BS0VfTE9XRVJfVEFHUyIgPSB5ZXMgOyB0aGVuCisJTUFLRV9MT1dFUl9UQUdTPQorZWxzZQorCU1BS0VfTE9XRVJfVEFHUz0iIyIKK2ZpCisKK2VjaG8gIiRhc19tZToyNTgyOiBjaGVja2luZyBpZiAtbG0gbmVlZGVkIGZvciBtYXRoIGZ1bmN0aW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIC1sbSBuZWVkZWQgZm9yIG1hdGggZnVuY3Rpb25zLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uZWVkX2xpYm0rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMjU4OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKwkjaW5jbHVkZSA8c3RkaW8uaD4KKwkjaW5jbHVkZSA8bWF0aC5oPgorCitpbnQKK21haW4gKCkKK3sKK2RvdWJsZSB4ID0gcmFuZCgpOyBwcmludGYoInJlc3VsdCA9ICVnXG4iLCBwb3coc2luKHgpLHgpKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MjYwNDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MjYwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjI2MTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyNjEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmVlZF9saWJtPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25lZWRfbGlibT15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjI2MjM6IHJlc3VsdDogJGNmX2N2X25lZWRfbGlibSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmVlZF9saWJtIiA+JjYKK2lmIHRlc3QgIiRjZl9jdl9uZWVkX2xpYm0iID0geWVzCit0aGVuCitNQVRIX0xJQj0tbG0KK2ZpCisKK3RvcF9idWlsZGRpcj1gcHdkYAorCitDQ19HX09QVD0iLWciCitDQ19TSEFSRURfT1BUUz11bmtub3duCitDUFBGTEFHUz0iJENQUEZMQUdTIgorREZUX0RFUF9TVUZGSVg9IiIKK0RGVF9PQkpfU1VCRElSPWBwd2R8c2VkIC1lJ3M6LiovOjonYAorREZUX1VQUl9NT0RFTD0iTk9STUFMIgorTEQ9ImxkIgorTERGTEFHU19TSEFSRUQ9IiIKK0xERkxBR1NfU1RBVElDPSIiCitMRF9NT0RFTD0iIgorTERfU0hBUkVEX09QVFM9IiIKK0xJQlRPT0w9IiIKK0xJQlRPT0xfT1BUUz0iIgorTElCX0NMRUFOPSIiCitMSUJfQ09NUElMRT0iIgorTElCX0xJTks9JyR7Q0N9JworTElOS19URVNUUz0iIgorTE9DQUxfTERGTEFHUz0iIgorUEFDS0FHRT0ibmN1cnNlcy1leGFtcGxlcyIKK1BUSFJFQUQ9Ii1sbSIKK1RFU1RfQVJHUz0iIgorVEVTVF9ERVBTPSIiCitURVNUX0xJQlM9IiIKK1RJTkZPX0xERkxBR1M9JycKK1RJTkZPX0xJQlM9JyQoTElCU19DVVJTRVMpJworY2ZfY3ZfYWJpX3ZlcnNpb249IiIKK2NmX2N2X3JlbF92ZXJzaW9uPSIiCitpbmNsdWRlc3ViZGlyPSIiCisKK2NmX2N2X3NjcmVlbj1jdXJzZXMKK2NmX2N2X2xpYnR5cGU9CisKK2lmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCitjYXQgPiBjb25mdGVzdC5pIDw8RU9GCisjaWZuZGVmIEdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORiAwCisjZW5kaWYKKyNpZm5kZWYgR0NDX05PUkVUVVJOCisjZGVmaW5lIEdDQ19OT1JFVFVSTiAvKiBub3RoaW5nICovCisjZW5kaWYKKyNpZm5kZWYgR0NDX1VOVVNFRAorI2RlZmluZSBHQ0NfVU5VU0VEIC8qIG5vdGhpbmcgKi8KKyNlbmRpZgorRU9GCitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorCXsgZWNobyAiJGFzX21lOjI2ODI6IGNoZWNraW5nIGZvciAkQ0MgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmVzLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXMuLi4iID4mNjt9CitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjbGluZSAyNjg1ICIke2FzX21lOi1jb25maWd1cmV9IgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSAiY29uZnRlc3QuaCIKKyNpbmNsdWRlICJjb25mdGVzdC5pIgorI2lmCUdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSAvKm5vdGhpbmcqLworI2VuZGlmCisjaWYJR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIF9fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICAvKm5vdGhpbmcqLworI2VuZGlmCitleHRlcm4gdm9pZCB3b3coY2hhciAqLC4uLikgR0NDX1NDQU5GTElLRSgxLDIpOworZXh0ZXJuIHZvaWQgb29wcyhjaGFyICosLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpIEdDQ19OT1JFVFVSTjsKK2V4dGVybiB2b2lkIGZvbyh2b2lkKSBHQ0NfTk9SRVRVUk47CitpbnQgbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W10gR0NDX1VOVVNFRCkgeyByZXR1cm4gMDsgfQorRU9GCisJY2ZfcHJpbnRmX2F0dHJpYnV0ZT1ubworCWNmX3NjYW5mX2F0dHJpYnV0ZT1ubworCWZvciBjZl9hdHRyaWJ1dGUgaW4gc2NhbmYgcHJpbnRmIHVudXNlZCBub3JldHVybgorCWRvCisKK2NmX0FUVFJJQlVURT1gZWNobyAiJGNmX2F0dHJpYnV0ZSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwkJY2ZfZGlyZWN0aXZlPSJfX2F0dHJpYnV0ZV9fKCgkY2ZfYXR0cmlidXRlKSkiCisJCWVjaG8gImNoZWNraW5nIGZvciAkQ0MgJGNmX2RpcmVjdGl2ZSIgMT4mNQorCisJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgorCQkocHJpbnRmKQorCQkJY2ZfcHJpbnRmX2F0dHJpYnV0ZT15ZXMKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAxCitFT0YKKwkJCTs7CisJCShzY2FuZikKKwkJCWNmX3NjYW5mX2F0dHJpYnV0ZT15ZXMKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAxCitFT0YKKwkJCTs7CisJCSgqKQorCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFICRjZl9kaXJlY3RpdmUKK0VPRgorCQkJOzsKKwkJZXNhYworCisJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjI3MzQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI3Mzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToyNzM5OiByZXN1bHQ6IC4uLiAkY2ZfYXR0cmlidXRlIiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiAkY2ZfYXR0cmlidXRlIiA+JjYKKwkJCWNhdCBjb25mdGVzdC5oID4+Y29uZmRlZnMuaAorCQkJY2FzZSAkY2ZfYXR0cmlidXRlIGluCisJCQkobm9yZXR1cm4pCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgR0NDX05PUkVUVVJOICRjZl9kaXJlY3RpdmUKK0VPRgorCisJCQkJOzsKKwkJCShwcmludGYpCisJCQkJY2ZfdmFsdWU9Jy8qIG5vdGhpbmcgKi8nCisJCQkJaWYgdGVzdCAiJGNmX3ByaW50Zl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpJworCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBHQ0NfUFJJTlRGIDEKK0VPRgorCisJCQkJZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSAkY2ZfdmFsdWUKK0VPRgorCisJCQkJOzsKKwkJCShzY2FuZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2Zfc2NhbmZfYXR0cmlidXRlIiAhPSBubyA7IHRoZW4KKwkJCQkJY2ZfdmFsdWU9J19fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpJworCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBHQ0NfU0NBTkYgMQorRU9GCisKKwkJCQlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgJGNmX3ZhbHVlCitFT0YKKworCQkJCTs7CisJCQkodW51c2VkKQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19VTlVTRUQgJGNmX2RpcmVjdGl2ZQorRU9GCisKKwkJCQk7OworCQkJZXNhYworCQlmaQorCWRvbmUKK2Vsc2UKKwlmZ3JlcCBkZWZpbmUgY29uZnRlc3QuaSA+PmNvbmZkZWZzLmgKK2ZpCitybSAtcmYgY29uZnRlc3QqCitmaQorCitjZl9YT1BFTl9TT1VSQ0U9NTAwCitjZl9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCitjZl94b3Blbl9zb3VyY2U9CisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyhhaXhbNC03XSopCisJY2ZfeG9wZW5fc291cmNlPSItRF9BTExfU09VUkNFIgorCTs7CisoY3lnd2lufG1zeXMpCisJY2ZfWE9QRU5fU09VUkNFPTYwMAorCTs7CisoZGFyd2luWzAtOF0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0FQUExFX0NfU09VUkNFIgorCTs7CisoZGFyd2luKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0RBUldJTl9DX1NPVVJDRSIKKwljZl9YT1BFTl9TT1VSQ0U9CisJOzsKKyhmcmVlYnNkKnxkcmFnb25mbHkqKQorCSMgNS54IGhlYWRlcnMgYXNzb2NpYXRlCisJIwlfWE9QRU5fU09VUkNFPTYwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMCisJIwlfWE9QRU5fU09VUkNFPTUwMCB3aXRoIF9QT1NJWF9DX1NPVVJDRT0xOTk1MDZMCisJY2ZfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTAorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0JTRF9UWVBFUyAtRF9fQlNEX1ZJU0lCTEUgLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCTs7CisoaHB1eDExKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIC1EX1hPUEVOX1NPVVJDRT01MDAiCisJOzsKKyhocHV4KikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX0hQVVhfU09VUkNFIgorCTs7CisoaXJpeFs1Nl0uKikKKwljZl94b3Blbl9zb3VyY2U9Ii1EX1NHSV9TT1VSQ0UiCisJY2ZfWE9QRU5fU09VUkNFPQorCTs7CisobGludXgqfGdudSp8bWludCp8aypic2QqLWdudSkKKworZWNobyAiJGFzX21lOjI4MzY6IGNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9HTlVfU09VUkNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBkZWZpbmUgX0dOVV9TT1VSQ0UuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2dudV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyODQzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToyODU4OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyODYxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjI4NjQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToyODY3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZ251X3NvdXJjZT1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9zYXZlPSIkQ1BQRkxBR1MiCisJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfR05VX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyODc2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjI4OTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI4OTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjg5NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjI5MDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9nbnVfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X2dudV9zb3VyY2U9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MjkxNTogcmVzdWx0OiAkY2ZfY3ZfZ251X3NvdXJjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfZ251X3NvdXJjZSIgPiY2Cit0ZXN0ICIkY2ZfY3ZfZ251X3NvdXJjZSIgPSB5ZXMgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9HTlVfU09VUkNFIgorCisJOzsKKyhtaW5peCopCisJY2ZfeG9wZW5fc291cmNlPSItRF9ORVRCU0RfU09VUkNFIiAjIFBPU0lYLjEtMjAwMSBmZWF0dXJlcyBhcmUgaWZkZWYnZCB3aXRoIHRoaXMuLi4KKwk7OworKG1pcmJzZCopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0Ugb3IgX1BPU0lYX1NPVVJDRSBicmVha3MgPHN5cy9zZWxlY3QuaD4gYW5kIG90aGVyIGhlYWRlcnMgd2hpY2ggdXNlIHVfaW50IC8gdV9zaG9ydCB0eXBlcworCWNmX1hPUEVOX1NPVVJDRT0KKworY2ZfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFCisKK2NmX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCitjZl90cmltX0NGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworY2ZfdHJpbV9DUFBGTEFHUz1gZWNobyAiJGNmX3NhdmVfQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitlY2hvICIkYXNfbWU6Mjk0MDogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfcG9zaXhfY19zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToyOTQ2OiB0ZXN0aW5nIGlmIHRoZSBzeW1ib2wgaXMgYWxyZWFkeSBkZWZpbmVkIGdvIG5vIGZ1cnRoZXIgLi4uIiAxPiY1CisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDI5NDkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mjk2NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mjk2NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToyOTcwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mjk3MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3dhbnRfcG9zaXhfc291cmNlPW5vCisJIGNhc2UgLiRjZl9QT1NJWF9DX1NPVVJDRSBpbgorCSAoLlsxMl0/PyopCisJCWNmX2N2X3Bvc2l4X2Nfc291cmNlPSItRF9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UiCisJCTs7CisJICguMikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJICguKikKKwkJY2Zfd2FudF9wb3NpeF9zb3VyY2U9eWVzCisJCTs7CisJIGVzYWMKKwkgaWYgdGVzdCAiJGNmX3dhbnRfcG9zaXhfc291cmNlIiA9IHllcyA7IHRoZW4KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAyOTk0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1BPU0lYX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjMwMDk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMwMTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzAxNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMwMTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Bvc2l4X2Nfc291cmNlPSIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UgLURfUE9TSVhfU09VUkNFIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBmaQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjMwMjk6IHRlc3RpbmcgaWZkZWYgZnJvbSB2YWx1ZSAkY2ZfUE9TSVhfQ19TT1VSQ0UgLi4uIiAxPiY1CisKKwkgQ0ZMQUdTPSIkY2ZfdHJpbV9DRkxBR1MiCisJIENQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MzAzNDogdGVzdGluZyBpZiB0aGUgc2Vjb25kIGNvbXBpbGUgZG9lcyBub3QgbGVhdmUgb3VyIGRlZmluaXRpb24gaW50YWN0IGVycm9yIC4uLiIgMT4mNQorCisJIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzAzNyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTozMDUyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozMDU1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjMwNTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozMDYxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9wb3NpeF9jX3NvdXJjZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCSBDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MzA3NzogcmVzdWx0OiAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Bvc2l4X2Nfc291cmNlIiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3Bvc2l4X2Nfc291cmNlIiAhPSBubyA7IHRoZW4KKwlDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwlDUFBGTEFHUz0iJGNmX3RyaW1fQ1BQRkxBR1MiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2N2X3Bvc2l4X2Nfc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCisJOzsKKyhuZXRic2QqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfTkVUQlNEX1NPVVJDRSIgIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIElQdjYgZm9yIGx5bnggb24gTmV0QlNEIDEuNiwgYnJlYWtzIHh0ZXJtLCBpcyBub3QgbmVlZGVkIGZvciBuY3Vyc2VzdworCTs7Cisob3BlbmJzZFs0LTldKikKKwkjIHNldHRpbmcgX1hPUEVOX1NPVVJDRSBsb3dlciB0aGFuIDUwMCBicmVha3MgZysrIGNvbXBpbGUgd2l0aCB3Y2hhci5oLCBuZWVkZWQgZm9yIG5jdXJzZXN3CisJY2ZfeG9wZW5fc291cmNlPSItRF9CU0RfU09VUkNFIgorCWNmX1hPUEVOX1NPVVJDRT02MDAKKwk7OworKG9wZW5ic2QqKQorCSMgc2V0dGluZyBfWE9QRU5fU09VUkNFIGJyZWFrcyB4dGVybSBvbiBPcGVuQlNEIDIuOCwgaXMgbm90IG5lZWRlZCBmb3IgbmN1cnNlc3cKKwk7OworKG9zZls0NV0qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfT1NGX1NPVVJDRSIKKwk7OworKG50by1xbngqKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfUU5YX1NPVVJDRSIKKwk7OworKHNjbyopCisJIyBzZXR0aW5nIF9YT1BFTl9TT1VSQ0UgYnJlYWtzIEx5bnggb24gU0NPIFVuaXggLyBPcGVuU2VydmVyCisJOzsKKyhzb2xhcmlzMi4qKQorCWNmX3hvcGVuX3NvdXJjZT0iLURfX0VYVEVOU0lPTlNfXyIKKwljZl9jdl94b3Blbl9zb3VyY2U9YnJva2VuCisJOzsKKyhzeXN2NC4ydXcyLiopICMgTm92ZWxsL1NDTyBVbml4V2FyZSAyLnggKHRlc3RlZCBvbiAyLjEuMikKKwljZl9YT1BFTl9TT1VSQ0U9CisJY2ZfUE9TSVhfQ19TT1VSQ0U9CisJOzsKKygqKQorCitlY2hvICIkYXNfbWU6MzE5NTogY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2Ugc2hvdWxkIGRlZmluZSBfWE9QRU5fU09VUkNFLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl94b3Blbl9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzIwMiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworaW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjMyMjE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMyMjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzIyNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMyMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfc2F2ZT0iJENQUEZMQUdTIgorCSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1hPUEVOX1NPVVJDRT0kY2ZfWE9QRU5fU09VUkNFIgorCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDMyMzkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWZkZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjMyNTg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMyNjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzI2NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjMyNjc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94b3Blbl9zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfeG9wZW5fc291cmNlPSRjZl9YT1BFTl9TT1VSQ0UKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlDUFBGTEFHUz0iJGNmX3NhdmUiCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZTozMjgyOiByZXN1bHQ6ICRjZl9jdl94b3Blbl9zb3VyY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3hvcGVuX3NvdXJjZSIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl94b3Blbl9zb3VyY2UiICE9IG5vIDsgdGhlbgorCitDRkxBR1M9YGVjaG8gIiRDRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyJfWE9QRU5fU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwljZl90ZW1wX3hvcGVuX3NvdXJjZT0iLURfWE9QRU5fU09VUkNFPSRjZl9jdl94b3Blbl9zb3VyY2UiCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3RlbXBfeG9wZW5fc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitmaQorCitjZl9QT1NJWF9DX1NPVVJDRT0kY2ZfUE9TSVhfQ19TT1VSQ0UKKworY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitjZl9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKK2NmX3RyaW1fQ0ZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIl9QT1NJWF9DX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitjZl90cmltX0NQUEZMQUdTPWBlY2hvICIkY2Zfc2F2ZV9DUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyJfUE9TSVhfQ19TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1BPU0lYX0NfU09VUkNFIidcKD1bXiAJXSpcKVw/JC8vZydgCisKK2VjaG8gIiRhc19tZTozMzkwOiBjaGVja2luZyBpZiB3ZSBzaG91bGQgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1BPU0lYX0NfU09VUkNFLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9wb3NpeF9jX3NvdXJjZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjMzOTY6IHRlc3RpbmcgaWYgdGhlIHN5bWJvbCBpcyBhbHJlYWR5IGRlZmluZWQgZ28gbm8gZnVydGhlciAuLi4iIDE+JjUKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzM5OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBfUE9TSVhfQ19TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTozNDE0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozNDE3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjM0MjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozNDIzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfcG9zaXhfY19zb3VyY2U9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfd2FudF9wb3NpeF9zb3VyY2U9bm8KKwkgY2FzZSAuJGNmX1BPU0lYX0NfU09VUkNFIGluCisJICguWzEyXT8/KikKKwkJY2ZfY3ZfcG9zaXhfY19zb3VyY2U9Ii1EX1BPU0lYX0NfU09VUkNFPSRjZl9QT1NJWF9DX1NPVVJDRSIKKwkJOzsKKwkgKC4yKQorCQljZl9jdl9wb3NpeF9jX3NvdXJjZT0iLURfUE9TSVhfQ19TT1VSQ0U9JGNmX1BPU0lYX0NfU09VUkNFIgorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgKC4qKQorCQljZl93YW50X3Bvc2l4X3NvdXJjZT15ZXMKKwkJOzsKKwkgZXNhYworCSBpZiB0ZXN0ICIkY2Zfd2FudF9wb3NpeF9zb3VyY2UiID0geWVzIDsgdGhlbgorCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDM0NDQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZmRlZiBfUE9TSVhfU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzQ1OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzQ2MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTozNDY1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MzQ2ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfcG9zaXhfY19zb3VyY2U9IiRjZl9jdl9wb3NpeF9jX3NvdXJjZSAtRF9QT1NJWF9TT1VSQ0UiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJIGZpCisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MzQ3OTogdGVzdGluZyBpZmRlZiBmcm9tIHZhbHVlICRjZl9QT1NJWF9DX1NPVVJDRSAuLi4iIDE+JjUKKworCSBDRkxBR1M9IiRjZl90cmltX0NGTEFHUyIKKwkgQ1BQRkxBR1M9IiRjZl90cmltX0NQUEZMQUdTICRjZl9jdl9wb3NpeF9jX3NvdXJjZSIKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTozNDg0OiB0ZXN0aW5nIGlmIHRoZSBzZWNvbmQgY29tcGlsZSBkb2VzIG5vdCBsZWF2ZSBvdXIgZGVmaW5pdGlvbiBpbnRhY3QgZXJyb3IgLi4uIiAxPiY1CisKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAzNDg3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9QT1NJWF9DX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjM1MDI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM1MDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzUwODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM1MTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Bvc2l4X2Nfc291cmNlPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJIENGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCSBDUFBGTEFHUz0iJGNmX3NhdmVfQ1BQRkxBR1MiCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZTozNTI3OiByZXN1bHQ6ICRjZl9jdl9wb3NpeF9jX3NvdXJjZSIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfcG9zaXhfY19zb3VyY2UiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfcG9zaXhfY19zb3VyY2UiICE9IG5vIDsgdGhlbgorCUNGTEFHUz0iJGNmX3RyaW1fQ0ZMQUdTIgorCUNQUEZMQUdTPSIkY2ZfdHJpbV9DUFBGTEFHUyIKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfY3ZfcG9zaXhfY19zb3VyY2UKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2ZpCisKKwk7OworZXNhYworCitpZiB0ZXN0IC1uICIkY2ZfeG9wZW5fc291cmNlIiA7IHRoZW4KKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfeG9wZW5fc291cmNlCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZCB0byBcJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjM2ODU6IHRlc3RpbmcgYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIC4uLiIgMT4mNQorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MzY5MzogdGVzdGluZyBhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIC4uLiIgMT4mNQorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MzcwMTogdGVzdGluZyBhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIC4uLiIgMT4mNQorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworaWYgdGVzdCAtbiAiJGNmX1hPUEVOX1NPVVJDRSIgJiYgdGVzdCAteiAiJGNmX2N2X3hvcGVuX3NvdXJjZSIgOyB0aGVuCisJZWNobyAiJGFzX21lOjM3MDk6IGNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIF9YT1BFTl9TT1VSQ0UgcmVhbGx5IGlzIHNldC4uLiAkRUNIT19DIiA+JjYKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDM3MTIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjM3Mjc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM3MzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MzczMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjM3MzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9YT1BFTl9TT1VSQ0Vfc2V0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9YT1BFTl9TT1VSQ0Vfc2V0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJZWNobyAiJGFzX21lOjM3NDU6IHJlc3VsdDogJGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX1hPUEVOX1NPVVJDRV9zZXQiID4mNgorCWlmIHRlc3QgJGNmX1hPUEVOX1NPVVJDRV9zZXQgPSB5ZXMKKwl0aGVuCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMzc1MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmIChfWE9QRU5fU09VUkNFIC0gMCkgPCAkY2ZfWE9QRU5fU09VUkNFCittYWtlIGFuIGVycm9yCisjZW5kaWYKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6Mzc2NTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mzc2ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTozNzcxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6Mzc3NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX1hPUEVOX1NPVVJDRV9zZXRfb2s9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX1hPUEVOX1NPVVJDRV9zZXRfb2s9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJaWYgdGVzdCAkY2ZfWE9QRU5fU09VUkNFX3NldF9vayA9IG5vCisJCXRoZW4KKwkJCXsgZWNobyAiJGFzX21lOjM3ODU6IFdBUk5JTkc6IF9YT1BFTl9TT1VSQ0UgaXMgbG93ZXIgdGhhbiByZXF1ZXN0ZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBfWE9QRU5fU09VUkNFIGlzIGxvd2VyIHRoYW4gcmVxdWVzdGVkIiA+JjI7fQorCQlmaQorCWVsc2UKKworZWNobyAiJGFzX21lOjM3OTA6IGNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIHNob3VsZCBkZWZpbmUgX1hPUEVOX1NPVVJDRS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfeG9wZW5fc291cmNlK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDM3OTcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTozODE2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozODE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjM4MjI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozODI1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3NhdmU9IiRDUFBGTEFHUyIKKwkgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9YT1BFTl9TT1VSQ0U9JGNmX1hPUEVOX1NPVVJDRSIKKwkgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAzODM0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9YT1BFTl9TT1VSQ0UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTozODUzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozODU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjM4NTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTozODYyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeG9wZW5fc291cmNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3hvcGVuX3NvdXJjZT0kY2ZfWE9QRU5fU09VUkNFCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJQ1BQRkxBR1M9IiRjZl9zYXZlIgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6Mzg3NzogcmVzdWx0OiAkY2ZfY3ZfeG9wZW5fc291cmNlIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl94b3Blbl9zb3VyY2UiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfeG9wZW5fc291cmNlIiAhPSBubyA7IHRoZW4KKworQ0ZMQUdTPWBlY2hvICIkQ0ZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIl9YT1BFTl9TT1VSQ0UiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciX1hPUEVOX1NPVVJDRSInXCg9W14gCV0qXClcPyQvL2cnYAorCisJY2ZfdGVtcF94b3Blbl9zb3VyY2U9Ii1EX1hPUEVOX1NPVVJDRT0kY2ZfY3ZfeG9wZW5fc291cmNlIgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl90ZW1wX3hvcGVuX3NvdXJjZQorZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworZmkKKworCWZpCitmaQorCitlY2hvICIkYXNfbWU6Mzk3NTogY2hlY2tpbmcgZm9yIHNpZ25hbCBnbG9iYWwgZGF0YXR5cGUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc2lnbmFsIGdsb2JhbCBkYXRhdHlwZS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3Zfc2lnX2F0b21pY190K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwlmb3IgY2ZfdHlwZSBpbiBcCisJCSJ2b2xhdGlsZSBzaWdfYXRvbWljX3QiIFwKKwkJInNpZ19hdG9taWNfdCIgXAorCQkiaW50IgorCWRvCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAzOTg3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2V4dGVybiAkY2ZfdHlwZSB4OworJGNmX3R5cGUgeDsKK3N0YXRpYyB2b2lkIGhhbmRsZXIoaW50IHNpZykKK3sKKwl4ID0gNTsKK30KK2ludAorbWFpbiAoKQoreworc2lnbmFsKFNJR0lOVCwgaGFuZGxlcik7CisJCSB4ID0gMQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0MDEwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0MDEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQwMTY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0MDE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfc2lnX2F0b21pY190PSRjZl90eXBlCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3NpZ19hdG9taWNfdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQl0ZXN0ICIkY2ZfY3Zfc2lnX2F0b21pY190IiAhPSBubyAmJiBicmVhaworCWRvbmUKKworZmkKKworZWNobyAiJGFzX21lOjQwMzM6IHJlc3VsdDogJGNmX2N2X3NpZ19hdG9taWNfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3Zfc2lnX2F0b21pY190IiA+JjYKK3Rlc3QgIiRjZl9jdl9zaWdfYXRvbWljX3QiICE9IG5vICYmCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFNJR19BVE9NSUNfVCAkY2ZfY3Zfc2lnX2F0b21pY190CitFT0YKKworZWNobyAiJGFzX21lOjQwNDA6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBwa2ctY29uZmlnIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHBrZy1jb25maWcuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcGtnLWNvbmZpZyBvciAtLXdpdGhvdXQtcGtnLWNvbmZpZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcGtnX2NvbmZpZytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9wa2dfY29uZmlnIgorICBjZl9wa2dfY29uZmlnPSR3aXRodmFsCitlbHNlCisgIGNmX3BrZ19jb25maWc9eWVzCitmaTsKK2VjaG8gIiRhc19tZTo0MDUwOiByZXN1bHQ6ICRjZl9wa2dfY29uZmlnIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9wa2dfY29uZmlnIiA+JjYKKworY2FzZSAkY2ZfcGtnX2NvbmZpZyBpbgorKG5vKQorCVBLR19DT05GSUc9bm9uZQorCTs7CisoeWVzKQorCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWc7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo0MDYyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXNlICRQS0dfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRQS0dfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCI7IHRoZW4KKyAgIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJGFjX2Rpci8kYWNfd29yZCIKKyAgIGVjaG8gIiRhc19tZTo0MDc5OiBmb3VuZCAkYWNfZGlyLyRhY193b3JkIiA+JjUKKyAgIGJyZWFrCitmaQorZG9uZQorCisgIDs7Citlc2FjCitmaQorUEtHX0NPTkZJRz0kYWNfY3ZfcGF0aF9QS0dfQ09ORklHCisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NDA5MDogcmVzdWx0OiAkUEtHX0NPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kUEtHX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTo0MDkzOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsgdGhlbgorICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjQxMDI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIjsgdGhlbgorICAgYWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHPSIkYWNfZGlyLyRhY193b3JkIgorICAgZWNobyAiJGFzX21lOjQxMTk6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorICAgYnJlYWsKK2ZpCitkb25lCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRyIgJiYgYWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHPSJub25lIgorICA7OworZXNhYworZmkKK2FjX3B0X1BLR19DT05GSUc9JGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRworCitpZiB0ZXN0IC1uICIkYWNfcHRfUEtHX0NPTkZJRyI7IHRoZW4KKyAgZWNobyAiJGFzX21lOjQxMzE6IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX3B0X1BLR19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NDEzNDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIFBLR19DT05GSUc9JGFjX3B0X1BLR19DT05GSUcKK2Vsc2UKKyAgUEtHX0NPTkZJRz0iJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKK2ZpCisKKwk7OworKCopCisJUEtHX0NPTkZJRz0kd2l0aHZhbAorCTs7Citlc2FjCisKK3Rlc3QgLXogIiRQS0dfQ09ORklHIiAmJiBQS0dfQ09ORklHPW5vbmUKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lIDsgdGhlbgorCitpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KKwljZl9wYXRoX3N5bnRheD0iJHByZWZpeCIKK2Vsc2UKKwljZl9wYXRoX3N5bnRheD0iJGFjX2RlZmF1bHRfcHJlZml4IgorZmkKKworY2FzZSAiLiRQS0dfQ09ORklHIiBpbgorKC5cJFwoKlwpKnwuXCcqXCcqKQorCTs7CisoLi58Li8qfC5cXCopCisJOzsKKyguW2EtekEtWl06W1xcL10qKSAjIE9TLzIgRU1YCisJOzsKKyguXCR7KnByZWZpeH0qfC5cJHsqZGlyfSopCisJZXZhbCBQS0dfQ09ORklHPSIkUEtHX0NPTkZJRyIKKwljYXNlICIuJFBLR19DT05GSUciIGluCisJKC5OT05FLyopCisJCVBLR19DT05GSUc9YGVjaG8gJFBLR19DT05GSUcgfCBzZWQgLWUgcyVOT05FJSRjZl9wYXRoX3N5bnRheCVgCisJCTs7CisJZXNhYworCTs7CisoLm5vfC5OT05FLyopCisJUEtHX0NPTkZJRz1gZWNobyAkUEtHX0NPTkZJRyB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwk7OworKCopCisJeyB7IGVjaG8gIiRhc19tZTo0MTc3OiBlcnJvcjogZXhwZWN0ZWQgYSBwYXRobmFtZSwgbm90IFwiJFBLR19DT05GSUdcIiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkUEtHX0NPTkZJR1wiIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJOzsKK2VzYWMKKworZWxpZiB0ZXN0ICJ4JGNmX3BrZ19jb25maWciICE9IHhubyA7IHRoZW4KKwl7IGVjaG8gIiRhc19tZTo0MTg0OiBXQVJOSU5HOiBwa2ctY29uZmlnIGlzIG5vdCBpbnN0YWxsZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBwa2ctY29uZmlnIGlzIG5vdCBpbnN0YWxsZWQiID4mMjt9CitmaQorCitlY2hvICIkYXNfbWU6NDE4ODogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGxvbmcgY29tcGlsaW5nIG1lc3NhZ2VzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gc2VlIGxvbmcgY29tcGlsaW5nIG1lc3NhZ2VzLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZWNobyBvciAtLWRpc2FibGUtZWNobyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9lY2hvK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9lY2hvIgorICB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyAmJiBlbmFibGV2YWw9eWVzCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gInllcyIgOyB0aGVuCisKKwlFQ0hPX0xUPSctLXNpbGVudCcKKwlFQ0hPX0xEPSdAZWNobyBsaW5raW5nICRAOycKKwlSVUxFX0NDPSdAZWNobyBjb21waWxpbmcgJDwnCisJU0hPV19DQz0nQGVjaG8gY29tcGlsaW5nICRAJworCUVDSE9fQ0M9J0AnCisKKwllbHNlCisKKwlFQ0hPX0xUPScnCisJRUNIT19MRD0nJworCVJVTEVfQ0M9JycKKwlTSE9XX0NDPScnCisJRUNIT19DQz0nJworCisJZmkKK2Vsc2UKKyAgZW5hYmxldmFsPXllcworCisJRUNIT19MVD0nJworCUVDSE9fTEQ9JycKKwlSVUxFX0NDPScnCisJU0hPV19DQz0nJworCUVDSE9fQ0M9JycKKworZmk7CitlY2hvICIkYXNfbWU6NDIyMjogcmVzdWx0OiAkZW5hYmxldmFsIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRlbmFibGV2YWwiID4mNgorCitlY2hvICIkYXNfbWU6NDIyNTogY2hlY2tpbmcgZm9yIG5jdXJzZXMgd3JhcC1wcmVmaXgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyB3cmFwLXByZWZpeC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1uY3Vyc2VzLXdyYXAtcHJlZml4IG9yIC0td2l0aG91dC1uY3Vyc2VzLXdyYXAtcHJlZml4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9uY3Vyc2VzX3dyYXBfcHJlZml4K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX25jdXJzZXNfd3JhcF9wcmVmaXgiCisgIE5DVVJTRVNfV1JBUF9QUkVGSVg9JHdpdGh2YWwKK2Vsc2UKKyAgTkNVUlNFU19XUkFQX1BSRUZJWD1fbmNfCitmaTsKK2VjaG8gIiRhc19tZTo0MjM1OiByZXN1bHQ6ICROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjUKK2VjaG8gIiR7RUNIT19UfSROQ1VSU0VTX1dSQVBfUFJFRklYIiA+JjYKKworZWNobyAiJGFzX21lOjQyMzg6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGNoZWNrIGZvciB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBjaGVjayBmb3Igd2lkZS1jaGFyYWN0ZXIgZnVuY3Rpb25zLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2lkZWMgb3IgLS1kaXNhYmxlLXdpZGVjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3dpZGVjK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93aWRlYyIKKyAgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gJiYgZW5hYmxldmFsPXllcworCWlmIHRlc3QgIiRlbmFibGV2YWwiICE9ICJ5ZXMiIDsgdGhlbgorICAgIGNmX2VuYWJsZV93aWRlYz1ubworCWVsc2UKKwkJY2ZfZW5hYmxlX3dpZGVjPXllcworCWZpCitlbHNlCisgIGVuYWJsZXZhbD15ZXMKKwljZl9lbmFibGVfd2lkZWM9eWVzCisKK2ZpOworZWNobyAiJGFzX21lOjQyNTU6IHJlc3VsdDogJGNmX2VuYWJsZV93aWRlYyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfZW5hYmxlX3dpZGVjIiA+JjYKKworZWNobyAiJGFzX21lOjQyNTg6IGNoZWNraW5nIGZvciBzcGVjaWZpYyBjdXJzZXMtZGlyZWN0b3J5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpZmljIGN1cnNlcy1kaXJlY3RvcnkuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY3Vyc2VzLWRpciBvciAtLXdpdGhvdXQtY3Vyc2VzLWRpciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3Vyc2VzX2RpcitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9jdXJzZXNfZGlyIgorICBjZl9jdl9jdXJzZXNfZGlyPSR3aXRodmFsCitlbHNlCisgIGNmX2N2X2N1cnNlc19kaXI9bm8KK2ZpOworZWNobyAiJGFzX21lOjQyNjg6IHJlc3VsdDogJGNmX2N2X2N1cnNlc19kaXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2N1cnNlc19kaXIiID4mNgorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisKK2lmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorCWNmX3BhdGhfc3ludGF4PSIkcHJlZml4IgorZWxzZQorCWNmX3BhdGhfc3ludGF4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCitmaQorCitjYXNlICIuJHdpdGh2YWwiIGluCisoLlwkXCgqXCkqfC5cJypcJyopCisJOzsKKyguLnwuLyp8LlxcKikKKwk7OworKC5bYS16QS1aXTpbXFwvXSopICMgT1MvMiBFTVgKKwk7OworKC5cJHsqcHJlZml4fSp8LlwkeypkaXJ9KikKKwlldmFsIHdpdGh2YWw9IiR3aXRodmFsIgorCWNhc2UgIi4kd2l0aHZhbCIgaW4KKwkoLk5PTkUvKikKKwkJd2l0aHZhbD1gZWNobyAkd2l0aHZhbCB8IHNlZCAtZSBzJU5PTkUlJGNmX3BhdGhfc3ludGF4JWAKKwkJOzsKKwllc2FjCisJOzsKKygubm98Lk5PTkUvKikKKwl3aXRodmFsPWBlY2hvICR3aXRodmFsIHwgc2VkIC1lIHMlTk9ORSUkY2ZfcGF0aF9zeW50YXglYAorCTs7CisoKikKKwl7IHsgZWNobyAiJGFzX21lOjQyOTk6IGVycm9yOiBleHBlY3RlZCBhIHBhdGhuYW1lLCBub3QgXCIkd2l0aHZhbFwiIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGEgcGF0aG5hbWUsIG5vdCBcIiR3aXRodmFsXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKwk7OworZXNhYworCisJaWYgdGVzdCAtZCAiJGNmX2N2X2N1cnNlc19kaXIiCisJdGhlbgorCitpZiB0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZQorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNDMzMiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjQzNDQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQzNDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDM1MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQzNTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo0MzcwOiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworaWYgdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIvbGliIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAkY2ZfY3ZfY3Vyc2VzX2Rpci9saWIKKwlkbworCQlpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCisJCQk6CisJCWVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgorCQl0aGVuCisJCQljZl9oYXZlX2xpYmRpcj1ubworCQkJaWYgdGVzdCAtbiAiJExERkxBR1MkTElCUyIgOyB0aGVuCisJCQkJIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkJCWZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCisJCQkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KKwkJCQkJCWNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKKwkJCQkJZmkKKwkJCQlkb25lCisJCQlmaQorCQkJaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjQ0MDY6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKKwlmaQorZmkKKworY2ZfY3Zfc2NyZWVuPWN1cnNlcworCitlY2hvICIkYXNfbWU6NDQxOTogY2hlY2tpbmcgZm9yIHNwZWNpZmllZCBjdXJzZXMgbGlicmFyeSB0eXBlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNwZWNpZmllZCBjdXJzZXMgbGlicmFyeSB0eXBlLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXNjcmVlbiBvciAtLXdpdGhvdXQtc2NyZWVuIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zY3JlZW4rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfc2NyZWVuIgorICBjZl9jdl9zY3JlZW49JHdpdGh2YWwKK2Vsc2UKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1uY3Vyc2VzdyBvciAtLXdpdGhvdXQtbmN1cnNlc3cgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX25jdXJzZXN3K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX25jdXJzZXN3IgorICBjZl9jdl9zY3JlZW49bmN1cnNlc3cKK2Vsc2UKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1uY3Vyc2VzIG9yIC0td2l0aG91dC1uY3Vyc2VzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9uY3Vyc2VzK3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX25jdXJzZXMiCisgIGNmX2N2X3NjcmVlbj1uY3Vyc2VzCitlbHNlCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcGRjdXJzZXMgb3IgLS13aXRob3V0LXBkY3Vyc2VzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9wZGN1cnNlcytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9wZGN1cnNlcyIKKyAgY2ZfY3Zfc2NyZWVuPXBkY3Vyc2VzCitlbHNlCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY3Vyc2VzLWNvbHIgb3IgLS13aXRob3V0LWN1cnNlcy1jb2xyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9jdXJzZXNfY29scitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9jdXJzZXNfY29sciIKKyAgY2ZfY3Zfc2NyZWVuPWN1cnNlc19jb2xyCitlbHNlCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY3Vyc2VzLTVsaWIgb3IgLS13aXRob3V0LWN1cnNlcy01bGliIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9jdXJzZXNfNWxpYitzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9jdXJzZXNfNWxpYiIKKyAgY2ZfY3Zfc2NyZWVuPWN1cnNlc181bGliCitmaTsKK2ZpOworZmk7CitmaTsKK2ZpOworZmk7CisKK2VjaG8gIiRhc19tZTo0NDYzOiByZXN1bHQ6ICRjZl9jdl9zY3JlZW4iID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3NjcmVlbiIgPiY2CisKK2Nhc2UgJGNmX2N2X3NjcmVlbiBpbgorKGN1cnNlc3xjdXJzZXNfKikKKworZWNobyAiJGFzX21lOjQ0Njk6IGNoZWNraW5nIGZvciBleHRyYSBpbmNsdWRlIGRpcmVjdG9yaWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGV4dHJhIGluY2x1ZGUgZGlyZWN0b3JpZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2N1cnNlc19pbmNkaXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfY3Vyc2VzX2luY2Rpcj1ubworY2FzZSAkaG9zdF9vcyBpbgorKGhwdXgxMC4qKQorCWlmIHRlc3QgIngkY2ZfY3Zfc2NyZWVuIiA9ICJ4Y3Vyc2VzX2NvbHIiCisJdGhlbgorCQl0ZXN0IC1kIC91c3IvaW5jbHVkZS9jdXJzZXNfY29sciAmJiBcCisJCWNmX2N2X2N1cnNlc19pbmNkaXI9Ii1JL3Vzci9pbmNsdWRlL2N1cnNlc19jb2xyIgorCWZpCisJOzsKKyhzdW5vczMqfHN1bm9zNCopCisJaWYgdGVzdCAieCRjZl9jdl9zY3JlZW4iID0gInhjdXJzZXNfNWxpYiIKKwl0aGVuCisJCXRlc3QgLWQgL3Vzci81bGliICYmIFwKKwkJdGVzdCAtZCAvdXNyLzVpbmNsdWRlICYmIFwKKwkJY2ZfY3ZfY3Vyc2VzX2luY2Rpcj0iLUkvdXNyLzVpbmNsdWRlIgorCWZpCisJOzsKK2VzYWMKKworZmkKK2VjaG8gIiRhc19tZTo0NDk1OiByZXN1bHQ6ICRjZl9jdl9jdXJzZXNfaW5jZGlyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9jdXJzZXNfaW5jZGlyIiA+JjYKK3Rlc3QgIiRjZl9jdl9jdXJzZXNfaW5jZGlyIiAhPSBubyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9jdl9jdXJzZXNfaW5jZGlyIgorCitlY2hvICIkYXNfbWU6NDQ5OTogY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgaGF2ZSBpZGVudGlmaWVkIGN1cnNlcyBoZWFkZXJzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjZl9jdl9uY3Vyc2VzX2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIFwKKwluY3Vyc2VzLmggIFwKKwljdXJzZXMuaCAgbmN1cnNlcy9uY3Vyc2VzLmggbmN1cnNlcy9jdXJzZXMuaAorZG8KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNDUxMSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IHRnb3RvKCI/IiwgMCwwKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0NTIzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0NTI2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ1Mjk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0NTMyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX2hlYWRlcjsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorCitmaQorZWNobyAiJGFzX21lOjQ1NDM6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPSBub25lIDsgdGhlbgorCXsgeyBlY2hvICIkYXNfbWU6NDU0NzogZXJyb3I6IE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogTm8gY3Vyc2VzIGhlYWRlci1maWxlcyBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworIyBjaGVhdCwgdG8gZ2V0IHRoZSByaWdodCAjZGVmaW5lJ3MgZm9yIEhBVkVfTkNVUlNFU19ILCBldGMuCisKK2ZvciBhY19oZWFkZXIgaW4gJGNmX2N2X25jdXJzZXNfaGVhZGVyCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6NDU1NzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0NTYzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwkYWNfaGVhZGVyPgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0NTY3OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZTo0NTczOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo0NTkyOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitlY2hvICIkYXNfbWU6NDYwMjogY2hlY2tpbmcgZm9yIHRlcm1pbmZvIGhlYWRlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0ZXJtaW5mbyBoZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3Rlcm1faGVhZGVyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2Nhc2UgJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcn0gaW4KKygqL25jdXJzZXMuaHwqL25jdXJzZXN3LmgpCisJY2ZfdGVybV9oZWFkZXI9YGVjaG8gIiRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgfCBzZWQgLWUgJ3MlbmN1cnNlc1teLl0qXC5oJCV0ZXJtLmglJ2AKKwk7OworKCopCisJY2ZfdGVybV9oZWFkZXI9dGVybS5oCisJOzsKK2VzYWMKKworZm9yIGNmX3Rlc3QgaW4gJGNmX3Rlcm1faGVhZGVyICJuY3Vyc2VzL3Rlcm0uaCIgIm5jdXJzZXN3L3Rlcm0uaCIKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDQ2MjAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPCRjZl90ZXN0PgorCitpbnQKK21haW4gKCkKK3sKK2ludCB4ID0gYXV0b19sZWZ0X21hcmdpbgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0NjM1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0NjM4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ2NDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0NjQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X3Rlcm1faGVhZGVyPSIkY2ZfdGVzdCIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJY2ZfY3ZfdGVybV9oZWFkZXI9dW5rbm93bgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJdGVzdCAiJGNmX2N2X3Rlcm1faGVhZGVyIiAhPSB1bmtub3duICYmIGJyZWFrCitkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6NDY2MDogcmVzdWx0OiAkY2ZfY3ZfdGVybV9oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Rlcm1faGVhZGVyIiA+JjYKKworIyBTZXQgZGVmaW5pdGlvbnMgdG8gYWxsb3cgaWZkZWYnaW5nIHRvIGFjY29tbW9kYXRlIHN1YmRpcmVjdG9yaWVzCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisoKnRlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9URVJNX0ggMQorRU9GCisKKwk7OworZXNhYworCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKG5jdXJzZXMvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfVEVSTV9IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy90ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU1dfVEVSTV9IIDEKK0VPRgorCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjQ2OTI6IGNoZWNraW5nIGZvciBuY3Vyc2VzIHZlcnNpb24iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyB2ZXJzaW9uLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb24rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1ubworCWNmX3RlbXBmaWxlPW91dCQkCisJcm0gLWYgJGNmX3RlbXBmaWxlCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKworCSMgVGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBwcmVwcm9jZXNzb3Igc3BsaXRzIHRoZSBsaW5lIGFmdGVyIHRoZQorCSMgQXV0b2NvbmYgdG9rZW4uICBUaGUgJ3VucHJvdG8nIHByb2dyYW0gZG9lcyB0aGF0LgorCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjdW5kZWYgQXV0b2NvbmYKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KK0F1dG9jb25mIE5DVVJTRVNfVkVSU0lPTgorI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorQXV0b2NvbmYgIm9sZCIKKyNlbmRpZgorOworI2VuZGlmCitFT0YKKwljZl90cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCAyPiY1IHwgZ3JlcCAnXkF1dG9jb25mICcgPmNvbmZ0ZXN0Lm91dCIKKwl7IChldmFsIGVjaG8gIiRhc19tZTo0NzE4OiBcIiRjZl90cnlcIiIpID4mNQorICAoZXZhbCAkY2ZfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDcyMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9CisJaWYgdGVzdCAtZiBjb25mdGVzdC5vdXQgOyB0aGVuCisJCWNmX291dD1gY2F0IGNvbmZ0ZXN0Lm91dCB8IHNlZCAtZSAncyVeQXV0b2NvbmYgJSUnIC1lICdzJV5bXiJdKiIlJScgLWUgJ3MlIi4qJSUnYAorCQl0ZXN0IC1uICIkY2Zfb3V0IiAmJiBjZl9jdl9uY3Vyc2VzX3ZlcnNpb249IiRjZl9vdXQiCisJCXJtIC1mIGNvbmZ0ZXN0Lm91dAorCWZpCisKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0NzMxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50IG1haW4oKQoreworCUZJTEUgKmZwID0gZm9wZW4oIiRjZl90ZW1wZmlsZSIsICJ3Iik7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjIGlmZGVmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSAorCWZwcmludGYoZnAsICIlcy4lZFxuIiwgTkNVUlNFU19WRVJTSU9OLCBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpOworIyBlbHNlCisJZnByaW50ZihmcCwgIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworIyBlbmRpZgorI2Vsc2UKKyMgaWZkZWYgX19OQ1VSU0VTX0gKKwlmcHJpbnRmKGZwLCAib2xkXG4iKTsKKyMgZWxzZQorCW1ha2UgYW4gZXJyb3IKKyMgZW5kaWYKKyNlbmRpZgorCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDc1NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDc1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDc2MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ3NjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPWBjYXQgJGNmX3RlbXBmaWxlYAorZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCXJtIC1mICRjZl90ZW1wZmlsZQorCitmaQorZWNobyAiJGFzX21lOjQ3Nzg6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA+JjYKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID0gbm8gfHwKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2VjaG8gIiRhc19tZTo0Nzg1OiBjaGVja2luZyBpZiB3ZSBoYXZlIGlkZW50aWZpZWQgY3Vyc2VzIGxpYnJhcmllcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgbGlicmFyaWVzLi4uICRFQ0hPX0MiID4mNgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0Nzg4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgdGdvdG8oIj8iLCAwLDApCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0ODAwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0ODAzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDgwNjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ4MDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZTo0ODE4OiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CisKK2lmIHRlc3QgIiRjZl9yZXN1bHQiID0gbm8gOyB0aGVuCitjYXNlICRob3N0X29zIGluCisoZnJlZWJzZCopCisJZWNobyAiJGFzX21lOjQ4MjQ6IGNoZWNraW5nIGZvciB0Z290byBpbiAtbG15dGluZm8iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGdvdG8gaW4gLWxteXRpbmZvLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfbXl0aW5mb190Z290bytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG15dGluZm8gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0ODMyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciB0Z290byAoKTsKK2ludAorbWFpbiAoKQorewordGdvdG8gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo0ODUxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0ODU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDg1NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjQ4NjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfbXl0aW5mb190Z290bz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX215dGluZm9fdGdvdG89bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjQ4NzE6IHJlc3VsdDogJGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfbXl0aW5mb190Z290byIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfbXl0aW5mb190Z290byA9IHllczsgdGhlbgorCitjZl9hZGRfbGlicz0iLWxteXRpbmZvIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2ZpCisKKwk7OworKGhwdXgxMC4qKQorCSMgTG9va2luZyBhdCBIUFVYIDEwLjIwLCB0aGUgSGN1cnNlcyBsaWJyYXJ5IGlzIHRoZSBvbGRlc3QgKDE5OTcpLCBjdXJfY29scgorCSMgbmV4dCAoMTk5OCksIGFuZCB4Y3Vyc2VzICJuZXdlciIgKDIwMDApLiAgVGhlcmUgaXMgbm8gaGVhZGVyIGZpbGUgZm9yCisJIyBIY3Vyc2VzOyB0aGUgc3ViZGlyZWN0b3J5IGN1cnNlc19jb2xyIGhhcyB0aGUgaGVhZGVycyAoY3Vyc2VzLmggYW5kCisJIyB0ZXJtLmgpIGZvciBjdXJfY29scgorCWlmIHRlc3QgIngkY2ZfY3Zfc2NyZWVuIiA9ICJ4Y3Vyc2VzX2NvbHIiCisJdGhlbgorCQllY2hvICIkYXNfbWU6NDkwMTogY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWxjdXJfY29sciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sY3VyX2NvbHIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9jdXJfY29scl9pbml0c2NyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sY3VyX2NvbHIgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0OTA5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBpbml0c2NyICgpOworaW50CittYWluICgpCit7Citpbml0c2NyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDkyODogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NDkzMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjQ5MzQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo0OTM3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2N1cl9jb2xyX2luaXRzY3I9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9jdXJfY29scl9pbml0c2NyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo0OTQ4OiByZXN1bHQ6ICRhY19jdl9saWJfY3VyX2NvbHJfaW5pdHNjciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2N1cl9jb2xyX2luaXRzY3IiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2N1cl9jb2xyX2luaXRzY3IgPSB5ZXM7IHRoZW4KKworY2ZfYWRkX2xpYnM9Ii1sY3VyX2NvbHIiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkJYWNfY3ZfZnVuY19pbml0c2NyPXllcworCitlbHNlCisKKwkJZWNobyAiJGFzX21lOjQ5NzI6IGNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sSGN1cnNlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sSGN1cnNlcy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX0hjdXJzZXNfaW5pdHNjcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbEhjdXJzZXMgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA0OTgwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBpbml0c2NyICgpOworaW50CittYWluICgpCit7Citpbml0c2NyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NDk5OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTAwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUwMDU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MDA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX0hjdXJzZXNfaW5pdHNjcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX0hjdXJzZXNfaW5pdHNjcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6NTAxOTogcmVzdWx0OiAkYWNfY3ZfbGliX0hjdXJzZXNfaW5pdHNjciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX0hjdXJzZXNfaW5pdHNjciIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfSGN1cnNlc19pbml0c2NyID0geWVzOyB0aGVuCisKKwkJCSMgSFAncyBoZWFkZXIgdXNlcyBfX0hQX0NVUlNFUywgYnV0IHVzZXIgY2xhaW1zIF9IUF9DVVJTRVMuCisKK2NmX2FkZF9saWJzPSItbEhjdXJzZXMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9fSFBfQ1VSU0VTIC1EX0hQX0NVUlNFUyIKKwkJCWFjX2N2X2Z1bmNfaW5pdHNjcj15ZXMKKworZmkKKworZmkKKworCWZpCisJOzsKKyhsaW51eCopCisJY2FzZSBgYXJjaCAyPi9kZXYvbnVsbGAgaW4KKwkoeDg2XzY0KQorCQlpZiB0ZXN0IC1kIC9saWI2NAorCQl0aGVuCisKK2lmIHRlc3QgLW4gIi9saWI2NCIgOyB0aGVuCisJZm9yIGNmX2FkZF9saWJkaXIgaW4gL2xpYjY0CisJZG8KKwkJaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgorCQkJOgorCQllbGlmIHRlc3QgLWQgJGNmX2FkZF9saWJkaXIKKwkJdGhlbgorCQkJY2ZfaGF2ZV9saWJkaXI9bm8KKwkJCWlmIHRlc3QgLW4gIiRMREZMQUdTJExJQlMiIDsgdGhlbgorCQkJCSMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJCQlmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbworCQkJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfbGliZGlyIiA9ICIuLUwkY2ZfYWRkX2xpYmRpciIgOyB0aGVuCisJCQkJCQljZl9oYXZlX2xpYmRpcj15ZXM7IGJyZWFrCisJCQkJCWZpCisJCQkJZG9uZQorCQkJZmkKKwkJCWlmIHRlc3QgIiRjZl9oYXZlX2xpYmRpciIgPSBubyA7IHRoZW4KKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1MDc1OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGggLi4uIiAxPiY1CisKKwkJCQlMREZMQUdTPSItTCRjZl9hZGRfbGliZGlyICRMREZMQUdTIgorCQkJZmkKKwkJZmkKKwlkb25lCitmaQorCisJCWVsc2UKKworaWYgdGVzdCAtbiAiL2xpYiIgOyB0aGVuCisJZm9yIGNmX2FkZF9saWJkaXIgaW4gL2xpYgorCWRvCisJCWlmIHRlc3QgJGNmX2FkZF9saWJkaXIgPSAvdXNyL2xpYiA7IHRoZW4KKwkJCToKKwkJZWxpZiB0ZXN0IC1kICRjZl9hZGRfbGliZGlyCisJCXRoZW4KKwkJCWNmX2hhdmVfbGliZGlyPW5vCisJCQlpZiB0ZXN0IC1uICIkTERGTEFHUyRMSUJTIiA7IHRoZW4KKwkJCQkjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCQkJZm9yIGNmX3Rlc3RfbGliZGlyIGluICRMREZMQUdTICRMSUJTIDsgZG8KKwkJCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2xpYmRpciIgPSAiLi1MJGNmX2FkZF9saWJkaXIiIDsgdGhlbgorCQkJCQkJY2ZfaGF2ZV9saWJkaXI9eWVzOyBicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWZpCisJCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9saWJkaXIiID0gbm8gOyB0aGVuCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTEwNDogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9saWJkaXIgdG8gbGlicmFyeS1wYXRoIC4uLiIgMT4mNQorCisJCQkJTERGTEFHUz0iLUwkY2ZfYWRkX2xpYmRpciAkTERGTEFHUyIKKwkJCWZpCisJCWZpCisJZG9uZQorZmkKKworCQlmaQorCQk7OworCSgqKQorCitpZiB0ZXN0IC1uICIvbGliIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAvbGliCisJZG8KKwkJaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgorCQkJOgorCQllbGlmIHRlc3QgLWQgJGNmX2FkZF9saWJkaXIKKwkJdGhlbgorCQkJY2ZfaGF2ZV9saWJkaXI9bm8KKwkJCWlmIHRlc3QgLW4gIiRMREZMQUdTJExJQlMiIDsgdGhlbgorCQkJCSMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJCQlmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbworCQkJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfbGliZGlyIiA9ICIuLUwkY2ZfYWRkX2xpYmRpciIgOyB0aGVuCisJCQkJCQljZl9oYXZlX2xpYmRpcj15ZXM7IGJyZWFrCisJCQkJCWZpCisJCQkJZG9uZQorCQkJZmkKKwkJCWlmIHRlc3QgIiRjZl9oYXZlX2xpYmRpciIgPSBubyA7IHRoZW4KKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1MTM1OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGggLi4uIiAxPiY1CisKKwkJCQlMREZMQUdTPSItTCRjZl9hZGRfbGliZGlyICRMREZMQUdTIgorCQkJZmkKKwkJZmkKKwlkb25lCitmaQorCisJCTs7CisJZXNhYworCTs7Cisoc3Vub3MzKnxzdW5vczQqKQorCWlmIHRlc3QgIngkY2ZfY3Zfc2NyZWVuIiA9ICJ4Y3Vyc2VzXzVsaWIiCisJdGhlbgorCQlpZiB0ZXN0IC1kIC91c3IvNWxpYiA7IHRoZW4KKworaWYgdGVzdCAtbiAiL3Vzci81bGliIiA7IHRoZW4KKwlmb3IgY2ZfYWRkX2xpYmRpciBpbiAvdXNyLzVsaWIKKwlkbworCQlpZiB0ZXN0ICRjZl9hZGRfbGliZGlyID0gL3Vzci9saWIgOyB0aGVuCisJCQk6CisJCWVsaWYgdGVzdCAtZCAkY2ZfYWRkX2xpYmRpcgorCQl0aGVuCisJCQljZl9oYXZlX2xpYmRpcj1ubworCQkJaWYgdGVzdCAtbiAiJExERkxBR1MkTElCUyIgOyB0aGVuCisJCQkJIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkJCWZvciBjZl90ZXN0X2xpYmRpciBpbiAkTERGTEFHUyAkTElCUyA7IGRvCisJCQkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9saWJkaXIiID0gIi4tTCRjZl9hZGRfbGliZGlyIiA7IHRoZW4KKwkJCQkJCWNmX2hhdmVfbGliZGlyPXllczsgYnJlYWsKKwkJCQkJZmkKKwkJCQlkb25lCisJCQlmaQorCQkJaWYgdGVzdCAiJGNmX2hhdmVfbGliZGlyIiA9IG5vIDsgdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjUxNzA6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfbGliZGlyIHRvIGxpYnJhcnktcGF0aCAuLi4iIDE+JjUKKworCQkJCUxERkxBR1M9Ii1MJGNmX2FkZF9saWJkaXIgJExERkxBR1MiCisJCQlmaQorCQlmaQorCWRvbmUKK2ZpCisKK2NmX2FkZF9saWJzPSItbGN1cnNlcyAtbHRlcm1jYXAiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQlmaQorCWZpCisJYWNfY3ZfZnVuY19pbml0c2NyPXllcworCTs7Citlc2FjCisKK2lmIHRlc3QgIi4kYWNfY3ZfZnVuY19pbml0c2NyIiAhPSAueWVzIDsgdGhlbgorCWNmX3NhdmVfTElCUz0iJExJQlMiCisKKwlpZiB0ZXN0ICIuJHtjZl9jdl9uY3Vyc2VzX3ZlcnNpb246LW5vfSIgIT0gLm5vCisJdGhlbgorCQljZl9jaGVja19saXN0PSJuY3Vyc2VzIGN1cnNlcyBjdXJzZXNYIgorCWVsc2UKKwkJY2ZfY2hlY2tfbGlzdD0iY3Vyc2VzWCBjdXJzZXMgbmN1cnNlcyIKKwlmaQorCisJIyBDaGVjayBmb3IgbGlicmFyeSBjb250YWluaW5nIHRnb3RvLiAgRG8gdGhpcyBiZWZvcmUgY3Vyc2VzIGxpYnJhcnkKKwkjIGJlY2F1c2UgaXQgbWF5IGJlIG5lZWRlZCB0byBsaW5rIHRoZSB0ZXN0LWNhc2UgZm9yIGluaXRzY3IuCisJaWYgdGVzdCAieCRjZl90ZXJtX2xpYiIgPSB4CisJdGhlbgorCQllY2hvICIkYXNfbWU6NTIxNDogY2hlY2tpbmcgZm9yIHRnb3RvIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHRnb3RvLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX3Rnb3RvK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTIyMCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciB0Z290byAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciB0Z290byAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfdGdvdG8pIHx8IGRlZmluZWQgKF9fc3R1Yl9fX3Rnb3RvKQorY2hva2UgbWUKKyNlbHNlCitmID0gdGdvdG87IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTI1MTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTI1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUyNTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MjYwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY190Z290bz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY190Z290bz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NTI3MDogcmVzdWx0OiAkYWNfY3ZfZnVuY190Z290byIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY190Z290byIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX3Rnb3RvID0geWVzOyB0aGVuCisgIGNmX3Rlcm1fbGliPXByZWRlZmluZWQKK2Vsc2UKKworCQkJZm9yIGNmX3Rlcm1fbGliIGluICRjZl9jaGVja19saXN0IG90ZXJtY2FwIHRlcm1jYXAgdGluZm8gdGVybWxpYiB1bmtub3duCisJCQlkbworCQkJCWFzX2FjX0xpYj1gZWNobyAiYWNfY3ZfbGliXyRjZl90ZXJtX2xpYicnX3Rnb3RvIiB8ICRhc190cl9zaGAKK2VjaG8gIiRhc19tZTo1Mjc5OiBjaGVja2luZyBmb3IgdGdvdG8gaW4gLWwkY2ZfdGVybV9saWIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGdvdG8gaW4gLWwkY2ZfdGVybV9saWIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0xpYitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sJGNmX3Rlcm1fbGliICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTI4NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgdGdvdG8gKCk7CitpbnQKK21haW4gKCkKK3sKK3Rnb3RvICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTMwNjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTMwOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUzMTI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MzE1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZXZhbCAiJGFzX2FjX0xpYj15ZXMiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2V2YWwgIiRhc19hY19MaWI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo1MzI2OiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AgPSB5ZXM7IHRoZW4KKyAgYnJlYWsKK2ZpCisKKwkJCWRvbmUKKworZmkKKworCWZpCisKKwkjIENoZWNrIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgaW5pdHNjcgorCXRlc3QgIiRjZl90ZXJtX2xpYiIgIT0gcHJlZGVmaW5lZCAmJiB0ZXN0ICIkY2ZfdGVybV9saWIiICE9IHVua25vd24gJiYgTElCUz0iLWwkY2ZfdGVybV9saWIgJGNmX3NhdmVfTElCUyIKKwlpZiB0ZXN0ICJ4JGNmX2N1cnNfbGliIiA9IHgKKwl0aGVuCisJCWZvciBjZl9jdXJzX2xpYiBpbiAkY2ZfY2hlY2tfbGlzdCB4Y3Vyc2VzIGpjdXJzZXMgcGRjdXJzZXMgdW5rbm93bgorCQlkbworCQkJYXNfYWNfTGliPWBlY2hvICJhY19jdl9saWJfJGNmX2N1cnNfbGliJydfaW5pdHNjciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6NTM0NTogY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWwkY2ZfY3Vyc19saWIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbCRjZl9jdXJzX2xpYi4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfTGliK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWwkY2ZfY3Vyc19saWIgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA1MzUzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBpbml0c2NyICgpOworaW50CittYWluICgpCit7Citpbml0c2NyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTM3MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTM3NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjUzNzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1MzgxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZXZhbCAiJGFzX2FjX0xpYj15ZXMiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2V2YWwgIiRhc19hY19MaWI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo1MzkyOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AgPSB5ZXM7IHRoZW4KKyAgYnJlYWsKK2ZpCisKKwkJZG9uZQorCWZpCisJdGVzdCAkY2ZfY3Vyc19saWIgPSB1bmtub3duICYmIHsgeyBlY2hvICIkYXNfbWU6NTQwMDogZXJyb3I6IG5vIGN1cnNlcyBsaWJyYXJ5IGZvdW5kIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IG5vIGN1cnNlcyBsaWJyYXJ5IGZvdW5kIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKKwlMSUJTPSItbCRjZl9jdXJzX2xpYiAkY2Zfc2F2ZV9MSUJTIgorCWlmIHRlc3QgIiRjZl90ZXJtX2xpYiIgPSB1bmtub3duIDsgdGhlbgorCQllY2hvICIkYXNfbWU6NTQwNjogY2hlY2tpbmcgaWYgd2UgY2FuIGxpbmsgd2l0aCAkY2ZfY3Vyc19saWIgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGNhbiBsaW5rIHdpdGggJGNmX2N1cnNfbGliIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNTQwOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU0MjE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU0MjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1NDI3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTQzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQllY2hvICIkYXNfbWU6NTQzOTogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgorCQl0ZXN0ICRjZl9yZXN1bHQgPSBubyAmJiB7IHsgZWNobyAiJGFzX21lOjU0NDE6IGVycm9yOiBDYW5ub3QgbGluayBjdXJzZXMgbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayBjdXJzZXMgbGlicmFyeSIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCWVsaWYgdGVzdCAiJGNmX2N1cnNfbGliIiA9ICIkY2ZfdGVybV9saWIiIDsgdGhlbgorCQk6CisJZWxpZiB0ZXN0ICIkY2ZfdGVybV9saWIiICE9IHByZWRlZmluZWQgOyB0aGVuCisJCWVjaG8gIiRhc19tZTo1NDQ3OiBjaGVja2luZyBpZiB3ZSBuZWVkIGJvdGggJGNmX2N1cnNfbGliIGFuZCAkY2ZfdGVybV9saWIgbGlicmFyaWVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbmVlZCBib3RoICRjZl9jdXJzX2xpYiBhbmQgJGNmX3Rlcm1fbGliIGxpYnJhcmllcy4uLiAkRUNIT19DIiA+JjYKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA1NDUwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU0NjI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU0NjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1NDY4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTQ3MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwkJCUxJQlM9Ii1sJGNmX2N1cnNfbGliIC1sJGNmX3Rlcm1fbGliICRjZl9zYXZlX0xJQlMiCisJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU0ODAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NDkyOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NDk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTQ5ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU1MDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1lcnJvcgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJZWNobyAiJGFzX21lOjU1MTM6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKwlmaQorZmkKK2ZpCisKKwk7OworKG5jdXJzZXN3KikKKworZWNobyAiJGFzX21lOjU1MjI6IGNoZWNraW5nIGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVyIHN1cHBvcnQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbXVsdGlieXRlIGNoYXJhY3RlciBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl91dGY4X2xpYitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU1MzAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CitpbnQKK21haW4gKCkKK3sKK3B1dHdjKDAsMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NTQzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NTQ2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTU0OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU1NTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl91dGY4X2xpYj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisjIElmIHRoZSBsaW5rYWdlIGlzIG5vdCBhbHJlYWR5IGluIHRoZSAkQ1BQRkxBR1MvJExERkxBR1MgY29uZmlndXJhdGlvbiwgdGhlc2UKKyMgd2lsbCBiZSBzZXQgb24gY29tcGxldGlvbiBvZiB0aGUgQUNfVFJZX0xJTksgYmVsb3cuCitjZl9jdl9oZWFkZXJfcGF0aF91dGY4PQorY2ZfY3ZfbGlicmFyeV9wYXRoX3V0Zjg9CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTU2NDogdGVzdGluZyBTdGFydGluZyBGSU5EX0xJTktBR0UodXRmOCwpIC4uLiIgMT4mNQorCitjZl9zYXZlX0xJQlM9IiRMSUJTIgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU1NjkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8bGlidXRmOC5oPgoraW50CittYWluICgpCit7CitwdXR3YygwLDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTU4MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTU4NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU1ODg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NTkxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PXllcworCWNmX2N2X2hlYWRlcl9wYXRoX3V0Zjg9L3Vzci9pbmNsdWRlCisJY2ZfY3ZfbGlicmFyeV9wYXRoX3V0Zjg9L3Vzci9saWIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKK0xJQlM9Ii1sdXRmOCAgJGNmX3NhdmVfTElCUyIKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA1NjA1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPGxpYnV0ZjguaD4KK2ludAorbWFpbiAoKQoreworcHV0d2MoMCwwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjU2MTg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjU2MjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo1NjI0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTYyNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwljZl9jdl9maW5kX2xpbmthZ2VfdXRmOD15ZXMKKwljZl9jdl9oZWFkZXJfcGF0aF91dGY4PS91c3IvaW5jbHVkZQorCWNmX2N2X2xpYnJhcnlfcGF0aF91dGY4PS91c3IvbGliCisJY2ZfY3ZfbGlicmFyeV9maWxlX3V0Zjg9Ii1sdXRmOCIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwljZl9jdl9maW5kX2xpbmthZ2VfdXRmOD1ubworCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZpbmQgbGlua2FnZSBmb3IgdXRmOCBsaWJyYXJ5IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTY0NDogdGVzdGluZyBmaW5kIGxpbmthZ2UgZm9yIHV0ZjggbGlicmFyeSAuLi4iIDE+JjUKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1NjQ2OiB0ZXN0aW5nIFNlYXJjaGluZyBmb3IgaGVhZGVycyBpbiBGSU5EX0xJTktBR0UodXRmOCwpIC4uLiIgMT4mNQorCisJY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCWNmX3Rlc3RfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKworY2Zfc2VhcmNoPQorCisjIGNvbGxlY3QgdGhlIGN1cnJlbnQgc2V0IG9mIGluY2x1ZGUtZGlyZWN0b3JpZXMgZnJvbSBjb21waWxlciBmbGFncworY2ZfaGVhZGVyX3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtDRkxBR1N9JHtDUFBGTEFHU30iIDsgdGhlbgorCWZvciBjZl9oZWFkZXJfcGF0aCBpbiAkQ1BQRkxBR1MgJENGTEFHUworCWRvCisJCWNhc2UgJGNmX2hlYWRlcl9wYXRoIGluCisJCSgtSSopCisJCQljZl9oZWFkZXJfcGF0aD1gZWNobyAiLiRjZl9oZWFkZXJfcGF0aCIgfHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLC9pbmNsdWRlJCwsJ2AKKwordGVzdCAieCRjZl9oZWFkZXJfcGF0aCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkY2ZfaGVhZGVyX3BhdGgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkY2ZfaGVhZGVyX3BhdGgiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS91dGY4IgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvdXRmOC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvdXRmOC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL3V0ZjgvaW5jbHVkZS91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvdXRmOC9pbmNsdWRlL3V0ZjgiCit9CisKKwkJCWNmX2hlYWRlcl9wYXRoX2xpc3Q9IiRjZl9oZWFkZXJfcGF0aF9saXN0ICRjZl9zZWFyY2giCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworIyBhZGQgdGhlIHZhcmlhdGlvbnMgZm9yIHRoZSBwYWNrYWdlIHdlIGFyZSBsb29raW5nIGZvcgorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkcHJlZml4IgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUvdXRmOCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9pbmNsdWRlL3V0ZjgiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUvdXRmOC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUvdXRmOC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC91dGY4L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvdXRmOC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC91dGY4L2luY2x1ZGUvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC91dGY4L2luY2x1ZGUvdXRmOCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlL3V0ZjgvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS91dGY4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L3V0ZjgvaW5jbHVkZS91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2luY2x1ZGUvdXRmOCIKK30KKworZG9uZQorCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAordGVzdCAtZCAiJGluY2x1ZGVkaXIiICYmIHsKKwl0ZXN0IC1kICRpbmNsdWRlZGlyICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpciIKKwl0ZXN0IC1kICRpbmNsdWRlZGlyL3V0ZjggJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyL3V0ZjgiCit9CisKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSBOT05FICYmIFwKK3Rlc3QgIiRvbGRpbmNsdWRlZGlyIiAhPSAiL3Vzci9pbmNsdWRlIiAmJiBcCit0ZXN0IC1kICIkb2xkaW5jbHVkZWRpciIgJiYgeworCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIgICAgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyIgorCXRlc3QgLWQgJG9sZGluY2x1ZGVkaXIvdXRmOCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIvdXRmOCIKK30KKworY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aF9saXN0IgorCisJZm9yIGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjggaW4gJGNmX3NlYXJjaAorCWRvCisJCWlmIHRlc3QgLWQgJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjggOyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nICRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTczNzogdGVzdGluZyAuLi4gdGVzdGluZyAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCAuLi4iIDE+JjUKKworCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIC1JJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgiCisJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU3NDEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8bGlidXRmOC5oPgoraW50CittYWluICgpCit7CitwdXR3YygwLDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1NzU0OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NzU3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU3NjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1NzYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIGZvdW5kIHV0ZjggaGVhZGVycyBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjU3Njg6IHRlc3RpbmcgLi4uIGZvdW5kIHV0ZjggaGVhZGVycyBpbiAkY2ZfY3ZfaGVhZGVyX3BhdGhfdXRmOCAuLi4iIDE+JjUKKworCQkJCWNmX2N2X2ZpbmRfbGlua2FnZV91dGY4PW1heWJlCisJCQkJY2ZfdGVzdF9DUFBGTEFHUz0iJENQUEZMQUdTIgorCQkJCWJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworCQkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQlmaQorCWRvbmUKKworCWlmIHRlc3QgIiRjZl9jdl9maW5kX2xpbmthZ2VfdXRmOCIgPSBtYXliZSA7IHRoZW4KKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo1Nzg2OiB0ZXN0aW5nIFNlYXJjaGluZyBmb3IgdXRmOCBsaWJyYXJ5IGluIEZJTkRfTElOS0FHRSh1dGY4LCkgLi4uIiAxPiY1CisKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKwkJY2Zfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKworCQlpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlX3V0ZjgiICE9IHllcyA7IHRoZW4KKworY2Zfc2VhcmNoPQorY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7TERGTEFHU30ke0xJQlN9IiA7IHRoZW4KKwlmb3IgY2ZfbGlicmFyeV9wYXRoIGluICRMREZMQUdTICRMSUJTCisJZG8KKwkJY2FzZSAkY2ZfbGlicmFyeV9wYXRoIGluCisJCSgtTCopCisJCQljZl9saWJyYXJ5X3BhdGg9YGVjaG8gIi4kY2ZfbGlicmFyeV9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2xpYiQsLCdgCisKK3Rlc3QgIngkY2ZfbGlicmFyeV9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9saWJyYXJ5X3BhdGgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9saWJyYXJ5X3BhdGgiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi91dGY4ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYi91dGY4IgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC9saWIvdXRmOC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliL3V0ZjgvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC91dGY4L2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvdXRmOC9saWIvdXRmOCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC91dGY4L2xpYi91dGY4IgorfQorCisJCQljZl9saWJyYXJ5X3BhdGhfbGlzdD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0ICRjZl9zZWFyY2giCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworY2Zfc2VhcmNoPQorCit0ZXN0ICJ4JHByZWZpeCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkcHJlZml4IiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkcHJlZml4IgorCXRlc3QgLWQgJHByZWZpeC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliIgorCXRlc3QgLWQgJHByZWZpeC9saWIvdXRmOCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIvdXRmOCIKKwl0ZXN0IC1kICRwcmVmaXgvbGliL3V0ZjgvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYi91dGY4L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvdXRmOC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvdXRmOC9saWIiCisJdGVzdCAtZCAkcHJlZml4L3V0ZjgvbGliL3V0ZjggJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvdXRmOC9saWIvdXRmOCIKK30KKworZm9yIGNmX3N1YmRpcl9wcmVmaXggaW4gXAorCS91c3IgXAorCS91c3IvbG9jYWwgXAorCS91c3IvcGtnIFwKKwkvb3B0IFwKKwkvb3B0L2xvY2FsIFwKKwkkSE9NRQorZG8KKwordGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiICYmIFwKK3Rlc3QgLWQgIiRjZl9zdWJkaXJfcHJlZml4IiAmJiBcCisodGVzdCAteiAiJHByZWZpeCIgfHwgdGVzdCB4JHByZWZpeCA9IHhOT05FIHx8IHRlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IikgJiYgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliL3V0ZjggJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi91dGY4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliL3V0ZjgvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvdXRmOC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvdXRmOC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2xpYi91dGY4ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC91dGY4L2xpYi91dGY4IgorfQorCitkb25lCisKK2NmX3NlYXJjaD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0ICRjZl9zZWFyY2giCisKKwkJCWZvciBjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCBpbiAkY2Zfc2VhcmNoCisJCQlkbworCQkJCWlmIHRlc3QgLWQgJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IDsgdGhlbgorCQkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nICRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjU4NjE6IHRlc3RpbmcgLi4uIHRlc3RpbmcgJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IC4uLiIgMT4mNQorCisJCQkJCUNQUEZMQUdTPSIkY2ZfdGVzdF9DUFBGTEFHUyIKKwkJCQkJTElCUz0iLWx1dGY4ICAkY2Zfc2F2ZV9MSUJTIgorCQkJCQlMREZMQUdTPSIkY2Zfc2F2ZV9MREZMQUdTIC1MJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IgorCQkJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU4NjcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8bGlidXRmOC5oPgoraW50CittYWluICgpCit7CitwdXR3YygwLDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NTg4MDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NTg4MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU4ODY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1ODg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCQkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiBmb3VuZCB1dGY4IGxpYnJhcnkgaW4gJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NTg5NDogdGVzdGluZyAuLi4gZm91bmQgdXRmOCBsaWJyYXJ5IGluICRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCAuLi4iIDE+JjUKKworCQkJCQljZl9jdl9maW5kX2xpbmthZ2VfdXRmOD15ZXMKKwkJCQkJY2ZfY3ZfbGlicmFyeV9maWxlX3V0Zjg9Ii1sdXRmOCIKKwkJCQkJYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJCQkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCQkJTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyIKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCQlmaQorCQkJZG9uZQorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTERGTEFHUz0iJGNmX3NhdmVfTERGTEFHUyIKKwkJZmkKKworCWVsc2UKKwkJY2ZfY3ZfZmluZF9saW5rYWdlX3V0Zjg9bm8KKwlmaQorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCitpZiB0ZXN0ICIkY2ZfY3ZfZmluZF9saW5rYWdlX3V0ZjgiID0geWVzIDsgdGhlbgorY2ZfY3ZfdXRmOF9saWI9YWRkLW9uCitlbHNlCitjZl9jdl91dGY4X2xpYj1ubworZmkKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6NTkzNjogcmVzdWx0OiAkY2ZfY3ZfdXRmOF9saWIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3V0ZjhfbGliIiA+JjYKKworIyBIQVZFX0xJQlVURjhfSCBpcyB1c2VkIGJ5IG5jdXJzZXMgaWYgY3Vyc2VzLmggaXMgc2hhcmVkIGJldHdlZW4KKyMgbmN1cnNlcy9uY3Vyc2VzdzoKK2lmIHRlc3QgIiRjZl9jdl91dGY4X2xpYiIgPSAiYWRkLW9uIiA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9MSUJVVEY4X0ggMQorRU9GCisKK2lmIHRlc3QgLW4gIiRjZl9jdl9oZWFkZXJfcGF0aF91dGY4IiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2N2X2hlYWRlcl9wYXRoX3V0ZjgKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDU5NzEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo1OTgzOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1OTg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjU5ODk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo1OTkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX2luY2Rpcj15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06NjAwOTogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIC4uLiIgMT4mNQorCisJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9jdl9saWJyYXJ5X3BhdGhfdXRmOCIgOyB0aGVuCisJZm9yIGNmX2FkZF9saWJkaXIgaW4gJGNmX2N2X2xpYnJhcnlfcGF0aF91dGY4CisJZG8KKwkJaWYgdGVzdCAkY2ZfYWRkX2xpYmRpciA9IC91c3IvbGliIDsgdGhlbgorCQkJOgorCQllbGlmIHRlc3QgLWQgJGNmX2FkZF9saWJkaXIKKwkJdGhlbgorCQkJY2ZfaGF2ZV9saWJkaXI9bm8KKwkJCWlmIHRlc3QgLW4gIiRMREZMQUdTJExJQlMiIDsgdGhlbgorCQkJCSMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJCQlmb3IgY2ZfdGVzdF9saWJkaXIgaW4gJExERkxBR1MgJExJQlMgOyBkbworCQkJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfbGliZGlyIiA9ICIuLUwkY2ZfYWRkX2xpYmRpciIgOyB0aGVuCisJCQkJCQljZl9oYXZlX2xpYmRpcj15ZXM7IGJyZWFrCisJCQkJCWZpCisJCQkJZG9uZQorCQkJZmkKKwkJCWlmIHRlc3QgIiRjZl9oYXZlX2xpYmRpciIgPSBubyA7IHRoZW4KKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2MDQ1OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2xpYmRpciB0byBsaWJyYXJ5LXBhdGggLi4uIiAxPiY1CisKKwkJCQlMREZMQUdTPSItTCRjZl9hZGRfbGliZGlyICRMREZMQUdTIgorCQkJZmkKKwkJZmkKKwlkb25lCitmaQorCitjZl9hZGRfbGlicz0iJGNmX2N2X2xpYnJhcnlfZmlsZV91dGY4IgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2ZpCisKK2NmX25jdWNvbmZpZ19yb290PSRjZl9jdl9zY3JlZW4KK2NmX2hhdmVfbmN1Y29uZmlnPW5vCisKK2lmIHRlc3QgIngke1BLR19DT05GSUc6PW5vbmV9IiAhPSB4bm9uZTsgdGhlbgorCWVjaG8gIiRhc19tZTo2MDc1OiBjaGVja2luZyBwa2ctY29uZmlnIGZvciAkY2ZfbmN1Y29uZmlnX3Jvb3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBwa2ctY29uZmlnIGZvciAkY2ZfbmN1Y29uZmlnX3Jvb3QuLi4gJEVDSE9fQyIgPiY2CisJaWYgIiRQS0dfQ09ORklHIiAtLWV4aXN0cyAkY2ZfbmN1Y29uZmlnX3Jvb3QgOyB0aGVuCisJCWVjaG8gIiRhc19tZTo2MDc4OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCisJCWVjaG8gIiRhc19tZTo2MDgxOiBjaGVja2luZyBpZiB0aGUgJGNmX25jdWNvbmZpZ19yb290IHBhY2thZ2UgZmlsZXMgd29yayIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRoZSAkY2ZfbmN1Y29uZmlnX3Jvb3QgcGFja2FnZSBmaWxlcyB3b3JrLi4uICRFQ0hPX0MiID4mNgorCQljZl9oYXZlX25jdWNvbmZpZz11bmtub3duCisKKwkJY2Zfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgYCRQS0dfQ09ORklHIC0tY2ZsYWdzICRjZl9uY3Vjb25maWdfcm9vdGAiCisKK2NmX2FkZF9saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICRjZl9uY3Vjb25maWdfcm9vdGAiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDYxMDcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyBtb3VzZW1hc2soMCwwKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjYxMTk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjYxMjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2MTI1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjEyODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgIGNmX2hhdmVfbmN1Y29uZmlnPW1heWJlCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjEzNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorCQkJCWludCBtYWluKHZvaWQpCisJCQkJeyBjaGFyICp4eCA9IGN1cnNlc192ZXJzaW9uKCk7IHJldHVybiAoeHggPT0gMCk7IH0KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo2MTQxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo2MTQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2MTQ2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjE0OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2hhdmVfbmN1Y29uZmlnPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9uY3Vjb25maWc9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9uY3Vjb25maWc9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJCWVjaG8gIiRhc19tZTo2MTY2OiByZXN1bHQ6ICRjZl9oYXZlX25jdWNvbmZpZyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfaGF2ZV9uY3Vjb25maWciID4mNgorCQl0ZXN0ICIkY2ZfaGF2ZV9uY3Vjb25maWciID0gbWF5YmUgJiYgY2ZfaGF2ZV9uY3Vjb25maWc9eWVzCisJCWlmIHRlc3QgIiRjZl9oYXZlX25jdWNvbmZpZyIgIT0gInllcyIKKwkJdGhlbgorCQkJQ1BQRkxBR1M9IiRjZl9zYXZlX0NQUEZMQUdTIgorCQkJTElCUz0iJGNmX3NhdmVfTElCUyIKKwkJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJCWVsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworCQkJTkNVUlNFU19DT05GSUdfUEtHPSRjZl9uY3Vjb25maWdfcm9vdAorCQlmaQorCisJZWxzZQorCQllY2hvICIkYXNfbWU6NjE4NDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCU5DVVJTRVNfQ09ORklHX1BLRz1ub25lCisJZmkKK2Vsc2UKKwlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorZmkKKworaWYgdGVzdCAieCRjZl9oYXZlX25jdWNvbmZpZyIgPSAieG5vIjsgdGhlbgorCWVjaG8gIkxvb2tpbmcgZm9yICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyIKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTUtY29uZmlnCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo2MjAwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTkNVUlNFU19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE5DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdl9wcm9nX05DVVJTRVNfQ09ORklHPSIkTkNVUlNFU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCitlY2hvICIkYXNfbWU6NjIxNTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK05DVVJTRVNfQ09ORklHPSRhY19jdl9wcm9nX05DVVJTRVNfQ09ORklHCitpZiB0ZXN0IC1uICIkTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZTo2MjIzOiByZXN1bHQ6ICROQ1VSU0VTX0NPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kTkNVUlNFU19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NjIyNjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgICAgdGVzdCAtbiAiJE5DVVJTRVNfQ09ORklHIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJE5DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdF9OQ1VSU0VTX0NPTkZJRz0kTkNVUlNFU19DT05GSUcKKyAgZm9yIGFjX3Byb2cgaW4gJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9Ni1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH01LWNvbmZpZworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gIiRhc19tZTo2MjM5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHPSIkYWNfY3RfTkNVUlNFU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRz0iJGFjX3Byb2ciCitlY2hvICIkYXNfbWU6NjI1NDogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X05DVVJTRVNfQ09ORklHPSRhY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHCitpZiB0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZTo2MjYyOiByZXN1bHQ6ICRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3RfTkNVUlNFU19DT05GSUciID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6NjI2NTogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgIHRlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyIgfHwgYWNfY3RfTkNVUlNFU19DT05GSUc9Im5vbmUiCisKKyAgTkNVUlNFU19DT05GSUc9JGFjX2N0X05DVVJTRVNfQ09ORklHCitmaQorCisJaWYgdGVzdCAiJE5DVVJTRVNfQ09ORklHIiAhPSBub25lIDsgdGhlbgorCisJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgYCROQ1VSU0VTX0NPTkZJRyAtLWNmbGFnc2AiCisKK2NmX2FkZF9saWJzPSJgJE5DVVJTRVNfQ09ORklHIC0tbGlic2AiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkjIGV2ZW4gd2l0aCBjb25maWcgc2NyaXB0LCBzb21lIHBhY2thZ2VzIHVzZSBuby1vdmVycmlkZSBmb3IgY3Vyc2VzLmgKKworZWNobyAiJGFzX21lOjYyOTg6IGNoZWNraW5nIGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgaGVhZGVycyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGhhdmUgaWRlbnRpZmllZCBjdXJzZXMgaGVhZGVycy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfbmN1cnNlc19oZWFkZXI9bm9uZQorZm9yIGNmX2hlYWRlciBpbiBcCisJbmN1cnNlcy5oICRjZl9jdl9zY3JlZW4vbmN1cnNlcy5oIFwKKwljdXJzZXMuaCAkY2ZfY3Zfc2NyZWVuL2N1cnNlcy5oCitkbworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2MzEwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2hlYWRlcn0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgdGdvdG8oIj8iLCAwLDApCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjYzMjI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjYzMjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjMyODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjYzMzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfaGVhZGVyOyBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6NjM0MjogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfaGVhZGVyIiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaGVhZGVyIiA9IG5vbmUgOyB0aGVuCisJeyB7IGVjaG8gIiRhc19tZTo2MzQ2OiBlcnJvcjogTm8gY3Vyc2VzIGhlYWRlci1maWxlcyBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBObyBjdXJzZXMgaGVhZGVyLWZpbGVzIGZvdW5kIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCisjIGNoZWF0LCB0byBnZXQgdGhlIHJpZ2h0ICNkZWZpbmUncyBmb3IgSEFWRV9OQ1VSU0VTX0gsIGV0Yy4KKworZm9yIGFjX2hlYWRlciBpbiAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIKK2RvCithc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2VjaG8gIiRhc19tZTo2MzU2OiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDYzNjIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCRhY19oZWFkZXI+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjYzNjY6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjYzNzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBldmFsICIkYXNfYWNfSGVhZGVyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjYzOTE6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2NmX25jdWxpYl9ST09UPWBlY2hvICJIQVZFX0xJQiRjZl9uY3Vjb25maWdfcm9vdCIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwkJY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSAkY2ZfbmN1bGliX1JPT1QgMQorRU9GCisKKwkJCQljZl9jdl9uY3Vyc2VzX3ZlcnNpb249YCROQ1VSU0VTX0NPTkZJRyAtLXZlcnNpb25gCisKKwllbHNlCisKK2NmX25jdWhkcl9yb290PSRjZl9jdl9zY3JlZW4KKwordGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIiICYmIFwKK3Rlc3QgIiRjZl9jdl9jdXJzZXNfZGlyIiAhPSAibm8iICYmIHsgXAorCitpZiB0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl9jdl9jdXJzZXNfZGlyL2luY2x1ZGUvJGNmX25jdWhkcl9yb290CisgIGRvCisJd2hpbGUgdGVzdCAkY2ZfYWRkX2luY2RpciAhPSAvdXNyL2luY2x1ZGUKKwlkbworCSAgaWYgdGVzdCAtZCAkY2ZfYWRkX2luY2RpcgorCSAgdGhlbgorCQljZl9oYXZlX2luY2Rpcj1ubworCQlpZiB0ZXN0IC1uICIkQ0ZMQUdTJENQUEZMQUdTIiA7IHRoZW4KKwkJICAjIGEgbG9vcCBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBhZGQgc3ViZGlycyBvZiBleGlzdGluZyBkaXJzCisJCSAgZm9yIGNmX3Rlc3RfaW5jZGlyIGluICRDRkxBR1MgJENQUEZMQUdTIDsgZG8KKwkJCWlmIHRlc3QgIi4kY2ZfdGVzdF9pbmNkaXIiID0gIi4tSSRjZl9hZGRfaW5jZGlyIiA7IHRoZW4KKwkJCSAgY2ZfaGF2ZV9pbmNkaXI9eWVzOyBicmVhaworCQkJZmkKKwkJICBkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIGlmIHRlc3QgIiRjZl9hZGRfaW5jZGlyIiA9IC91c3IvbG9jYWwvaW5jbHVkZSA7IHRoZW4KKwkJCWlmIHRlc3QgIiRHQ0MiID0geWVzCisJCQl0aGVuCisJCQkgIGNmX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisJCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKwkJCSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NDQ0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CitwcmludGYoIkhlbGxvIikKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjQ1NjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjQ1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo2NDYyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NjQ2NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfaGF2ZV9pbmNkaXI9eWVzCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgIENQUEZMQUdTPSRjZl9zYXZlX0NQUEZMQUdTCisJCQlmaQorCQkgIGZpCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX2hhdmVfaW5jZGlyIiA9IG5vIDsgdGhlbgorCQkgIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjY0ODI6IHRlc3RpbmcgYWRkaW5nICRjZl9hZGRfaW5jZGlyIHRvIGluY2x1ZGUtcGF0aCAuLi4iIDE+JjUKKworCQkgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkY2ZfYWRkX2luY2RpciIKKworCQkgIGNmX3RvcF9pbmNkaXI9YGVjaG8gJGNmX2FkZF9pbmNkaXIgfCBzZWQgLWUgJ3MlL2luY2x1ZGUvLiokJS9pbmNsdWRlJSdgCisJCSAgdGVzdCAiJGNmX3RvcF9pbmNkaXIiID0gIiRjZl9hZGRfaW5jZGlyIiAmJiBicmVhaworCQkgIGNmX2FkZF9pbmNkaXI9IiRjZl90b3BfaW5jZGlyIgorCQllbHNlCisJCSAgYnJlYWsKKwkJZmkKKwkgIGVsc2UKKwkJYnJlYWsKKwkgIGZpCisJZG9uZQorICBkb25lCitmaQorCit9CisKK2VjaG8gIiRhc19tZTo2NTAxOiBjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGhlYWRlciBpbiBpbmNsdWRlLXBhdGgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGhlYWRlciBpbiBpbmNsdWRlLXBhdGguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfaGVhZGVyX2xpc3Q9IiRjZl9uY3VoZHJfcm9vdC9jdXJzZXMuaCAkY2ZfbmN1aGRyX3Jvb3QvbmN1cnNlcy5oIgorCSggdGVzdCAiJGNmX25jdWhkcl9yb290IiA9IG5jdXJzZXMgfHwgdGVzdCAiJGNmX25jdWhkcl9yb290IiA9IG5jdXJzZXN3ICkgJiYgY2ZfaGVhZGVyX2xpc3Q9IiRjZl9oZWFkZXJfbGlzdCBjdXJzZXMuaCBuY3Vyc2VzLmgiCisJZm9yIGNmX2hlYWRlciBpbiAkY2ZfaGVhZGVyX2xpc3QKKwlkbworCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NTEzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCRjZl9oZWFkZXI+CitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorCitwcmludGYoIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorcHJpbnRmKCJvbGRcbiIpOworI2Vsc2UKKwltYWtlIGFuIGVycm9yCisjZW5kaWYKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY1Mzc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY1NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjU0MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY1NDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9uY3Vyc2VzX2g9JGNmX2hlYWRlcgorCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25jdXJzZXNfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCisJCXRlc3QgIiRjZl9jdl9uY3Vyc2VzX2giICE9IG5vICYmIGJyZWFrCisJZG9uZQorCitmaQorZWNobyAiJGFzX21lOjY1NjE6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc19oIiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X25jdXJzZXNfaCIgIT0gbm8gOyB0aGVuCisJY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX2N2X25jdXJzZXNfaAorZWxzZQorCitlY2hvICIkYXNfbWU6NjU2ODogY2hlY2tpbmcgZm9yICRjZl9uY3VoZHJfcm9vdCBpbmNsdWRlLXBhdGgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGNmX25jdWhkcl9yb290IGluY2x1ZGUtcGF0aC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc19oMitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8KKworY2Zfc2VhcmNoPQorCisjIGNvbGxlY3QgdGhlIGN1cnJlbnQgc2V0IG9mIGluY2x1ZGUtZGlyZWN0b3JpZXMgZnJvbSBjb21waWxlciBmbGFncworY2ZfaGVhZGVyX3BhdGhfbGlzdD0iIgoraWYgdGVzdCAtbiAiJHtDRkxBR1N9JHtDUFBGTEFHU30iIDsgdGhlbgorCWZvciBjZl9oZWFkZXJfcGF0aCBpbiAkQ1BQRkxBR1MgJENGTEFHUworCWRvCisJCWNhc2UgJGNmX2hlYWRlcl9wYXRoIGluCisJCSgtSSopCisJCQljZl9oZWFkZXJfcGF0aD1gZWNobyAiLiRjZl9oZWFkZXJfcGF0aCIgfHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLC9pbmNsdWRlJCwsJ2AKKwordGVzdCAieCRjZl9oZWFkZXJfcGF0aCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkY2ZfaGVhZGVyX3BhdGgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkY2ZfaGVhZGVyX3BhdGgiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKK30KKworCQkJY2ZfaGVhZGVyX3BhdGhfbGlzdD0iJGNmX2hlYWRlcl9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCisjIGFkZCB0aGUgdmFyaWF0aW9ucyBmb3IgdGhlIHBhY2thZ2Ugd2UgYXJlIGxvb2tpbmcgZm9yCisKK2NmX3NlYXJjaD0KKwordGVzdCAieCRwcmVmaXgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJHByZWZpeCIgJiYgXAorIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK2ZvciBjZl9zdWJkaXJfcHJlZml4IGluIFwKKwkvdXNyIFwKKwkvdXNyL2xvY2FsIFwKKwkvdXNyL3BrZyBcCisJL29wdCBcCisJL29wdC9sb2NhbCBcCisJJEhPTUUKK2RvCisKK3Rlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IiAmJiBcCit0ZXN0IC1kICIkY2Zfc3ViZGlyX3ByZWZpeCIgJiYgXAorKHRlc3QgLXogIiRwcmVmaXgiIHx8IHRlc3QgeCRwcmVmaXggPSB4Tk9ORSB8fCB0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIpICYmIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBpbmNsdWRlLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9zdWJkaXJfcHJlZml4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZSAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCIKK30KKworZG9uZQorCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCit0ZXN0ICIkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAordGVzdCAtZCAiJGluY2x1ZGVkaXIiICYmIHsKKwl0ZXN0IC1kICRpbmNsdWRlZGlyICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkaW5jbHVkZWRpciIKKwl0ZXN0IC1kICRpbmNsdWRlZGlyLyRjZl9uY3VoZHJfcm9vdCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290IgorfQorCit0ZXN0ICIkb2xkaW5jbHVkZWRpciIgIT0gTk9ORSAmJiBcCit0ZXN0ICIkb2xkaW5jbHVkZWRpciIgIT0gIi91c3IvaW5jbHVkZSIgJiYgXAordGVzdCAtZCAiJG9sZGluY2x1ZGVkaXIiICYmIHsKKwl0ZXN0IC1kICRvbGRpbmNsdWRlZGlyICAgICYmIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkb2xkaW5jbHVkZWRpciIKKwl0ZXN0IC1kICRvbGRpbmNsdWRlZGlyLyRjZl9uY3VoZHJfcm9vdCAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIvJGNmX25jdWhkcl9yb290IgorfQorCitjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoX2xpc3QiCisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyBzZWFyY2ggcGF0aCAkY2Zfc2VhcmNoCisJY2Zfc2F2ZTJfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwlmb3IgY2ZfaW5jZGlyIGluICRjZl9zZWFyY2gKKwlkbworCitpZiB0ZXN0IC1uICIkY2ZfaW5jZGlyIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmX2luY2RpcgorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjY4NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY2OTg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3MDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NjcwNDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3MDc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2NzI0OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworCQlmb3IgY2ZfaGVhZGVyIGluIFwKKwkJCW5jdXJzZXMuaCBcCisJCQljdXJzZXMuaAorCQlkbworCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA2NzQ3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCRjZl9oZWFkZXI+CitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorCitwcmludGYoIiVzXG4iLCBOQ1VSU0VTX1ZFUlNJT04pOworI2Vsc2UKKyNpZmRlZiBfX05DVVJTRVNfSAorcHJpbnRmKCJvbGRcbiIpOworI2Vsc2UKKwltYWtlIGFuIGVycm9yCisjZW5kaWYKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY3NzE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3NzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njc3NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY3ODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9uY3Vyc2VzX2gyPSRjZl9oZWFkZXIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9uY3Vyc2VzX2gyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKKwkJCWlmIHRlc3QgIiRjZl9jdl9uY3Vyc2VzX2gyIiAhPSBubyA7IHRoZW4KKwkJCQljZl9jdl9uY3Vyc2VzX2gyPSRjZl9pbmNkaXIvJGNmX2hlYWRlcgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICRhY19uICIJLi4uIGZvdW5kICRhY19jIiAxPiY2CisJCQkJYnJlYWsKKwkJCWZpCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0ZWQgJGNmX2luY2Rpci8kY2ZfaGVhZGVyIiAxPiY2CisJCWRvbmUKKwkJQ1BQRkxBR1M9IiRjZl9zYXZlMl9DUFBGTEFHUyIKKwkJdGVzdCAiJGNmX2N2X25jdXJzZXNfaDIiICE9IG5vICYmIGJyZWFrCisJZG9uZQorCXRlc3QgIiRjZl9jdl9uY3Vyc2VzX2gyIiA9IG5vICYmIHsgeyBlY2hvICIkYXNfbWU6NjgwMTogZXJyb3I6IG5vdCBmb3VuZCIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBub3QgZm91bmQiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKworZmkKK2VjaG8gIiRhc19tZTo2ODA2OiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX2gyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2gyIiA+JjYKKworCWNmXzFzdF9pbmNkaXI9YGVjaG8gJGNmX2N2X25jdXJzZXNfaDIgfCBzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwljZl9jdl9uY3Vyc2VzX2hlYWRlcj1gYmFzZW5hbWUgJGNmX2N2X25jdXJzZXNfaDJgCisJaWYgdGVzdCBgYmFzZW5hbWUgJGNmXzFzdF9pbmNkaXJgID0gJGNmX25jdWhkcl9yb290IDsgdGhlbgorCQljZl9jdl9uY3Vyc2VzX2hlYWRlcj0kY2ZfbmN1aGRyX3Jvb3QvJGNmX2N2X25jdXJzZXNfaGVhZGVyCisJZmkKKworaWYgdGVzdCAtbiAiJGNmXzFzdF9pbmNkaXIiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfMXN0X2luY2RpcgorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjgzOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY4NTE6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY4NTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njg1NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY4NjA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo2ODc3OiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworZmkKKworIyBTZXQgZGVmaW5pdGlvbnMgdG8gYWxsb3cgaWZkZWYnaW5nIGZvciBuY3Vyc2VzLmgKKworY2FzZSAkY2ZfY3ZfbmN1cnNlc19oZWFkZXIgaW4KKygqbmN1cnNlcy5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfSCAxCitFT0YKKworCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X25jdXJzZXNfaGVhZGVyIGluCisobmN1cnNlcy9jdXJzZXMuaHxuY3Vyc2VzL25jdXJzZXMuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX05DVVJTRVNfSCAxCitFT0YKKworCTs7CisobmN1cnNlc3cvY3Vyc2VzLmh8bmN1cnNlc3cvbmN1cnNlcy5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNXX05DVVJTRVNfSCAxCitFT0YKKworCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZTo2OTI1OiBjaGVja2luZyBmb3IgdGVybWluZm8gaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHRlcm1pbmZvIGhlYWRlci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfdGVybV9oZWFkZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2FzZSAke2NmX2N2X25jdXJzZXNfaGVhZGVyfSBpbgorKCovbmN1cnNlcy5ofCovbmN1cnNlc3cuaCkKKwljZl90ZXJtX2hlYWRlcj1gZWNobyAiJGNmX2N2X25jdXJzZXNfaGVhZGVyIiB8IHNlZCAtZSAncyVuY3Vyc2VzW14uXSpcLmgkJXRlcm0uaCUnYAorCTs7CisoKikKKwljZl90ZXJtX2hlYWRlcj10ZXJtLmgKKwk7OworZXNhYworCitmb3IgY2ZfdGVzdCBpbiAkY2ZfdGVybV9oZWFkZXIgIm5jdXJzZXMvdGVybS5oIiAibmN1cnNlc3cvdGVybS5oIgorZG8KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNjk0MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8JGNmX3Rlc3Q+CisKK2ludAorbWFpbiAoKQoreworaW50IHggPSBhdXRvX2xlZnRfbWFyZ2luCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjY5NTg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY5NjE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6Njk2NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjY5Njc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJY2ZfY3ZfdGVybV9oZWFkZXI9IiRjZl90ZXN0IgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwljZl9jdl90ZXJtX2hlYWRlcj11bmtub3duCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwl0ZXN0ICIkY2ZfY3ZfdGVybV9oZWFkZXIiICE9IHVua25vd24gJiYgYnJlYWsKK2RvbmUKKworZmkKK2VjaG8gIiRhc19tZTo2OTgzOiByZXN1bHQ6ICRjZl9jdl90ZXJtX2hlYWRlciIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdGVybV9oZWFkZXIiID4mNgorCisjIFNldCBkZWZpbml0aW9ucyB0byBhbGxvdyBpZmRlZidpbmcgdG8gYWNjb21tb2RhdGUgc3ViZGlyZWN0b3JpZXMKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKygqdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX1RFUk1fSCAxCitFT0YKKworCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisobmN1cnNlcy90ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU19URVJNX0ggMQorRU9GCisKKwk7OworKG5jdXJzZXN3L3Rlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTV19URVJNX0ggMQorRU9GCisKKwk7OworZXNhYworCisjIHNvbWUgYXBwbGljYXRpb25zIG5lZWQgdGhpcywgYnV0IHNob3VsZCBjaGVjayBmb3IgTkNVUlNFU19WRVJTSU9OCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKK2VjaG8gIiRhc19tZTo3MDIxOiBjaGVja2luZyBmb3IgbmN1cnNlcyB2ZXJzaW9uIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5jdXJzZXMgdmVyc2lvbi4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmN1cnNlc192ZXJzaW9uK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljZl9jdl9uY3Vyc2VzX3ZlcnNpb249bm8KKwljZl90ZW1wZmlsZT1vdXQkJAorCXJtIC1mICRjZl90ZW1wZmlsZQorCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisKKwkjIFRoaXMgd2lsbCBub3Qgd29yayBpZiB0aGUgcHJlcHJvY2Vzc29yIHNwbGl0cyB0aGUgbGluZSBhZnRlciB0aGUKKwkjIEF1dG9jb25mIHRva2VuLiAgVGhlICd1bnByb3RvJyBwcm9ncmFtIGRvZXMgdGhhdC4KKwljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI3VuZGVmIEF1dG9jb25mCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCitBdXRvY29uZiBOQ1VSU0VTX1ZFUlNJT04KKyNlbHNlCisjaWZkZWYgX19OQ1VSU0VTX0gKK0F1dG9jb25mICJvbGQiCisjZW5kaWYKKzsKKyNlbmRpZgorRU9GCisJY2ZfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgMj4mNSB8IGdyZXAgJ15BdXRvY29uZiAnID5jb25mdGVzdC5vdXQiCisJeyAoZXZhbCBlY2hvICIkYXNfbWU6NzA0NzogXCIkY2ZfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGNmX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcwNTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfQorCWlmIHRlc3QgLWYgY29uZnRlc3Qub3V0IDsgdGhlbgorCQljZl9vdXQ9YGNhdCBjb25mdGVzdC5vdXQgfCBzZWQgLWUgJ3MlXkF1dG9jb25mICUlJyAtZSAncyVeW14iXSoiJSUnIC1lICdzJSIuKiUlJ2AKKwkJdGVzdCAtbiAiJGNmX291dCIgJiYgY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPSIkY2Zfb3V0IgorCQlybSAtZiBjb25mdGVzdC5vdXQKKwlmaQorCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzA2MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBtYWluKCkKK3sKKwlGSUxFICpmcCA9IGZvcGVuKCIkY2ZfdGVtcGZpbGUiLCAidyIpOworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorIyBpZmRlZiBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gKKwlmcHJpbnRmKGZwLCAiJXMuJWRcbiIsIE5DVVJTRVNfVkVSU0lPTiwgTkNVUlNFU19WRVJTSU9OX1BBVENIKTsKKyMgZWxzZQorCWZwcmludGYoZnAsICIlc1xuIiwgTkNVUlNFU19WRVJTSU9OKTsKKyMgZW5kaWYKKyNlbHNlCisjIGlmZGVmIF9fTkNVUlNFU19ICisJZnByaW50ZihmcCwgIm9sZFxuIik7CisjIGVsc2UKKwltYWtlIGFuIGVycm9yCisjIGVuZGlmCisjZW5kaWYKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwODU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcwODg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjcwOTA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MDkzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X25jdXJzZXNfdmVyc2lvbj1gY2F0ICRjZl90ZW1wZmlsZWAKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKwlybSAtZiAkY2ZfdGVtcGZpbGUKKworZmkKK2VjaG8gIiRhc19tZTo3MTA3OiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPiY2Cit0ZXN0ICIkY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA9IG5vIHx8CitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTIDEKK0VPRgorCitjZl9uY3VsaWJfcm9vdD0kY2ZfY3Zfc2NyZWVuCisJIyBUaGlzIHdvcmtzLCBleGNlcHQgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgZmluZCBncG0sIGJ1dAorCSMgbmN1cnNlcyBpcyBpbiBhIG5vbnN0YW5kYXJkIGxvY2F0aW9uIHZpYSAkTElCUywgYW5kIHdlIHJlYWxseSB3YW50CisJIyB0byBsaW5rIGdwbS4KK2NmX25jdXJzZXNfTElCUz0iIgorY2ZfbmN1cnNlc19TQVZFPSIkTElCUyIKK2VjaG8gIiRhc19tZTo3MTIwOiBjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgR3BtX09wZW4gaW4gLWxncG0uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9ncG1fR3BtX09wZW4rc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxncG0gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3MTI4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBHcG1fT3BlbiAoKTsKK2ludAorbWFpbiAoKQoreworR3BtX09wZW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3MTQ3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MTUwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzE1MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcxNTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZ3BtX0dwbV9PcGVuPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZ3BtX0dwbV9PcGVuPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo3MTY3OiByZXN1bHQ6ICRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ3BtX0dwbV9PcGVuIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ncG1fR3BtX09wZW4gPSB5ZXM7IHRoZW4KKyAgZWNobyAiJGFzX21lOjcxNzA6IGNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sZ3BtIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWxncG0uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9ncG1faW5pdHNjcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGdwbSAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDcxNzggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGluaXRzY3IgKCk7CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3MTk3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3MjAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzIwMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcyMDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZ3BtX2luaXRzY3I9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ncG1faW5pdHNjcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6NzIxNzogcmVzdWx0OiAkYWNfY3ZfbGliX2dwbV9pbml0c2NyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZ3BtX2luaXRzY3IiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2dwbV9pbml0c2NyID0geWVzOyB0aGVuCisgIExJQlM9IiRjZl9uY3Vyc2VzX1NBVkUiCitlbHNlCisgIGNmX25jdXJzZXNfTElCUz0iLWxncG0iCitmaQorCitmaQorCitjYXNlICRob3N0X29zIGluCisoZnJlZWJzZCopCisJIyBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IGFuIG9ic29sZXRlCisJIyB2ZXJzaW9uIG9mIG5jdXJzZXMgKGJ1dCBpdCBzaG91bGQgZG8gbm8gaGFybSwgc2luY2UgaXQncyBzdGF0aWMpLgorCWlmIHRlc3QgIiRjZl9uY3VsaWJfcm9vdCIgPSBuY3Vyc2VzIDsgdGhlbgorCQllY2hvICIkYXNfbWU6NzIzMjogY2hlY2tpbmcgZm9yIHRnb3RvIGluIC1sbXl0aW5mbyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0Z290byBpbiAtbG15dGluZm8uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9teXRpbmZvX3Rnb3RvK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sbXl0aW5mbyAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDcyNDAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIHRnb3RvICgpOworaW50CittYWluICgpCit7Cit0Z290byAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjcyNTk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjcyNjI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3MjY1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzI2ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfbXl0aW5mb190Z290bz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6NzI3OTogcmVzdWx0OiAkYWNfY3ZfbGliX215dGluZm9fdGdvdG8iID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvID0geWVzOyB0aGVuCisgIGNmX25jdXJzZXNfTElCUz0iLWxteXRpbmZvICRjZl9uY3Vyc2VzX0xJQlMiCitmaQorCisJZmkKKwk7OworZXNhYworCitjZl9hZGRfbGlicz0iJGNmX25jdXJzZXNfTElCUyIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitpZiAoIHRlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiB0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiApCit0aGVuCisKK2NmX2FkZF9saWJzPSItbCRjZl9uY3VsaWJfcm9vdCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitlbHNlCisKKwlldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz1ubycKKwljZl9saWJkaXI9IiIKKwllY2hvICIkYXNfbWU6NzMyODogY2hlY2tpbmcgZm9yIGluaXRzY3IiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjci4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19pbml0c2NyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzMzNCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBpbml0c2NyICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGluaXRzY3IgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX2luaXRzY3IpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2luaXRzY3IpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSBpbml0c2NyOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjczNjU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjczNjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo3MzcxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzM3NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2Z1bmNfaW5pdHNjcj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19pbml0c2NyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo3Mzg0OiByZXN1bHQ6ICRhY19jdl9mdW5jX2luaXRzY3IiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfaW5pdHNjciIgPiY2CitpZiB0ZXN0ICRhY19jdl9mdW5jX2luaXRzY3IgPSB5ZXM7IHRoZW4KKyAgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9eWVzJworZWxzZQorCisJCWNmX3NhdmVfTElCUz0iJExJQlMiCisJCWVjaG8gIiRhc19tZTo3MzkxOiBjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbCRjZl9uY3VsaWJfcm9vdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sJGNmX25jdWxpYl9yb290Li4uICRFQ0hPX0MiID4mNgorCQlMSUJTPSItbCRjZl9uY3VsaWJfcm9vdCAkTElCUyIKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3Mzk1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzQwNzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzQxMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjc0MTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NDE2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZWNobyAiJGFzX21lOjc0MTg6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisJCQkgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9eWVzJworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo3NDI1OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKworY2Zfc2VhcmNoPQorY2ZfbGlicmFyeV9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7TERGTEFHU30ke0xJQlN9IiA7IHRoZW4KKwlmb3IgY2ZfbGlicmFyeV9wYXRoIGluICRMREZMQUdTICRMSUJTCisJZG8KKwkJY2FzZSAkY2ZfbGlicmFyeV9wYXRoIGluCisJCSgtTCopCisJCQljZl9saWJyYXJ5X3BhdGg9YGVjaG8gIi4kY2ZfbGlicmFyeV9wYXRoIiB8c2VkIC1lICdzL14uLi4vLycgLWUgJ3MsL2xpYiQsLCdgCisKK3Rlc3QgIngkY2ZfbGlicmFyeV9wYXRoIiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRjZl9saWJyYXJ5X3BhdGgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9saWJyYXJ5X3BhdGgiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2xpYnJhcnlfcGF0aC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKKwkJCWNmX2xpYnJhcnlfcGF0aF9saXN0PSIkY2ZfbGlicmFyeV9wYXRoX2xpc3QgJGNmX3NlYXJjaCIKKwkJCTs7CisJCWVzYWMKKwlkb25lCitmaQorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRwcmVmaXgiCisJdGVzdCAtZCAkcHJlZml4L2xpYiAmJiAgICAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJHByZWZpeC9saWIiCisJdGVzdCAtZCAkcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdCIKKwl0ZXN0IC1kICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCit9CisKK2ZvciBjZl9zdWJkaXJfcHJlZml4IGluIFwKKwkvdXNyIFwKKwkvdXNyL2xvY2FsIFwKKwkvdXNyL3BrZyBcCisJL29wdCBcCisJL29wdC9sb2NhbCBcCisJJEhPTUUKK2RvCisKK3Rlc3QgIngkY2Zfc3ViZGlyX3ByZWZpeCIgIT0gIngkcHJlZml4IiAmJiBcCit0ZXN0IC1kICIkY2Zfc3ViZGlyX3ByZWZpeCIgJiYgXAorKHRlc3QgLXogIiRwcmVmaXgiIHx8IHRlc3QgeCRwcmVmaXggPSB4Tk9ORSB8fCB0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIpICYmIHsKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLiB0ZXN0aW5nIGZvciBsaWItZGlyZWN0b3JpZXMgdW5kZXIgJGNmX3N1YmRpcl9wcmVmaXgiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYi8kY2ZfbmN1bGliX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290IgorfQorCitkb25lCisKK2NmX3NlYXJjaD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0ICRjZl9zZWFyY2giCisKKwkJCWZvciBjZl9saWJkaXIgaW4gJGNmX3NlYXJjaAorCQkJZG8KKwkJCQllY2hvICIkYXNfbWU6NzQ5MzogY2hlY2tpbmcgZm9yIC1sJGNmX25jdWxpYl9yb290IGluICRjZl9saWJkaXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgLWwkY2ZfbmN1bGliX3Jvb3QgaW4gJGNmX2xpYmRpci4uLiAkRUNIT19DIiA+JjYKKwkJCQlMSUJTPSItTCRjZl9saWJkaXIgLWwkY2ZfbmN1bGliX3Jvb3QgJGNmX3NhdmVfTElCUyIKKwkJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc0OTcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3NTA5OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NTEyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzUxNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc1MTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBlY2hvICIkYXNfbWU6NzUyMDogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkJCSAJCSBldmFsICdjZl9jdl9oYXZlX2xpYl8nJGNmX25jdWxpYl9yb290Jz15ZXMnCisJCQkJCSBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitlY2hvICIkYXNfbWU6NzUyNzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCQkJCSBMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCWRvbmUKKworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKKworZXZhbCAnY2ZfZm91bmRfbGlicmFyeT0kY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdAorCitpZiB0ZXN0ICRjZl9mb3VuZF9saWJyYXJ5ID0gbm8gOyB0aGVuCisJeyB7IGVjaG8gIiRhc19tZTo3NTQyOiBlcnJvcjogQ2Fubm90IGxpbmsgJGNmX25jdWxpYl9yb290IGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogQ2Fubm90IGxpbmsgJGNmX25jdWxpYl9yb290IGxpYnJhcnkiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uY3Vyc2VzX0xJQlMiIDsgdGhlbgorCWVjaG8gIiRhc19tZTo3NTUwOiBjaGVja2luZyBpZiB3ZSBjYW4gbGluayAkY2ZfbmN1bGliX3Jvb3Qgd2l0aG91dCAkY2ZfbmN1cnNlc19MSUJTIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgY2FuIGxpbmsgJGNmX25jdWxpYl9yb290IHdpdGhvdXQgJGNmX25jdXJzZXNfTElCUy4uLiAkRUNIT19DIiA+JjYKKwljZl9uY3Vyc2VzX1NBVkU9IiRMSUJTIgorCWZvciBwIGluICRjZl9uY3Vyc2VzX0xJQlMgOyBkbworCQlxPWBlY2hvICRMSUJTIHwgc2VkIC1lICJzJSRwICUlIiAtZSAicyUkcCQlJSJgCisJCWlmIHRlc3QgIiRxIiAhPSAiJExJQlMiIDsgdGhlbgorCQkJTElCUz0iJHEiCisJCWZpCisJZG9uZQorCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzU2MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IG1vdXNlbWFzaygwLDApOyB0Z290bygoY2hhciAqKTAsIDAsIDApOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzU3MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzU3NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjc1Nzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NTgxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZWNobyAiJGFzX21lOjc1ODM6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo3NTg4OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKKwkJIExJQlM9IiRjZl9uY3Vyc2VzX1NBVkUiCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworY2ZfbmN1bGliX1JPT1Q9YGVjaG8gIkhBVkVfTElCJGNmX25jdWxpYl9yb290IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSAkY2ZfbmN1bGliX1JPT1QgMQorRU9GCisKKwlmaQorZWxzZQorCU5DVVJTRVNfQ09ORklHPW5vbmUKK2ZpCisKKwk7OworKG5jdXJzZXMqKQorCitjZl9uY3Vjb25maWdfcm9vdD0kY2ZfY3Zfc2NyZWVuCitjZl9oYXZlX25jdWNvbmZpZz1ubworCitpZiB0ZXN0ICJ4JHtQS0dfQ09ORklHOj1ub25lfSIgIT0geG5vbmU7IHRoZW4KKwllY2hvICIkYXNfbWU6NzYxMzogY2hlY2tpbmcgcGtnLWNvbmZpZyBmb3IgJGNmX25jdWNvbmZpZ19yb290IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgcGtnLWNvbmZpZyBmb3IgJGNmX25jdWNvbmZpZ19yb290Li4uICRFQ0hPX0MiID4mNgorCWlmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgJGNmX25jdWNvbmZpZ19yb290IDsgdGhlbgorCQllY2hvICIkYXNfbWU6NzYxNjogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKworCQllY2hvICIkYXNfbWU6NzYxOTogY2hlY2tpbmcgaWYgdGhlICRjZl9uY3Vjb25maWdfcm9vdCBwYWNrYWdlIGZpbGVzIHdvcmsiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aGUgJGNmX25jdWNvbmZpZ19yb290IHBhY2thZ2UgZmlsZXMgd29yay4uLiAkRUNIT19DIiA+JjYKKwkJY2ZfaGF2ZV9uY3Vjb25maWc9dW5rbm93bgorCisJCWNmX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKwkJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUEtHX0NPTkZJRyAtLWNmbGFncyAkY2ZfbmN1Y29uZmlnX3Jvb3RgIgorCitjZl9hZGRfbGlicz0iYCRQS0dfQ09ORklHIC0tbGlicyAkY2ZfbmN1Y29uZmlnX3Jvb3RgIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3NjQ1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKTsgbW91c2VtYXNrKDAsMCk7IHRnb3RvKChjaGFyICopMCwgMCwgMCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3NjU3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3NjYwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzY2MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc2NjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICBjZl9oYXZlX25jdWNvbmZpZz1tYXliZQorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDc2NzIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKwkJCQlpbnQgbWFpbih2b2lkKQorCQkJCXsgY2hhciAqeHggPSBjdXJzZXNfdmVyc2lvbigpOyByZXR1cm4gKHh4ID09IDApOyB9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzY3OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6NzY4MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6NzY4NDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc2ODc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9oYXZlX25jdWNvbmZpZz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfbmN1Y29uZmlnPW5vCitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfbmN1Y29uZmlnPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQllY2hvICIkYXNfbWU6NzcwNDogcmVzdWx0OiAkY2ZfaGF2ZV9uY3Vjb25maWciID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2hhdmVfbmN1Y29uZmlnIiA+JjYKKwkJdGVzdCAiJGNmX2hhdmVfbmN1Y29uZmlnIiA9IG1heWJlICYmIGNmX2hhdmVfbmN1Y29uZmlnPXllcworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9uY3Vjb25maWciICE9ICJ5ZXMiCisJCXRoZW4KKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZV9DUFBGTEFHUyIKKwkJCUxJQlM9IiRjZl9zYXZlX0xJQlMiCisJCQlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorCQllbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVMgMQorRU9GCisKKwkJCU5DVVJTRVNfQ09ORklHX1BLRz0kY2ZfbmN1Y29uZmlnX3Jvb3QKKwkJZmkKKworCWVsc2UKKwkJZWNobyAiJGFzX21lOjc3MjI6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCQlOQ1VSU0VTX0NPTkZJR19QS0c9bm9uZQorCWZpCitlbHNlCisJTkNVUlNFU19DT05GSUdfUEtHPW5vbmUKK2ZpCisKK2lmIHRlc3QgIngkY2ZfaGF2ZV9uY3Vjb25maWciID0gInhubyI7IHRoZW4KKwllY2hvICJMb29raW5nIGZvciAke2NmX25jdWNvbmZpZ19yb290fS1jb25maWciCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJHtjZl9uY3Vjb25maWdfcm9vdH0tY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9Ni1jb25maWcgJHtjZl9uY3Vjb25maWdfcm9vdH01LWNvbmZpZworICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6NzczODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX05DVVJTRVNfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiROQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRz0iJE5DVVJTRVNfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfTkNVUlNFU19DT05GSUc9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorZWNobyAiJGFzX21lOjc3NTM6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitOQ1VSU0VTX0NPTkZJRz0kYWNfY3ZfcHJvZ19OQ1VSU0VTX0NPTkZJRworaWYgdGVzdCAtbiAiJE5DVVJTRVNfQ09ORklHIjsgdGhlbgorICBlY2hvICIkYXNfbWU6Nzc2MTogcmVzdWx0OiAkTkNVUlNFU19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JE5DVVJTRVNfQ09ORklHIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjc3NjQ6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICAgIHRlc3QgLW4gIiROQ1VSU0VTX0NPTkZJRyIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiROQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgYWNfY3RfTkNVUlNFU19DT05GSUc9JE5DVVJTRVNfQ09ORklHCisgIGZvciBhY19wcm9nIGluICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyAke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnICR7Y2ZfbmN1Y29uZmlnX3Jvb3R9NS1jb25maWcKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6Nzc3NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X05DVVJTRVNfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9OQ1VSU0VTX0NPTkZJRyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRz0iJGFjX2N0X05DVVJTRVNfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSRhY19wYXRoX3NlcGFyYXRvcgorYWNfZHVtbXk9IiRQQVRIIgorZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgIElGUz0kYWNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgJGFzX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCIgfHwgY29udGludWUKK2FjX2N2X3Byb2dfYWNfY3RfTkNVUlNFU19DT05GSUc9IiRhY19wcm9nIgorZWNobyAiJGFzX21lOjc3OTI6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCithY19jdF9OQ1VSU0VTX0NPTkZJRz0kYWNfY3ZfcHJvZ19hY19jdF9OQ1VSU0VTX0NPTkZJRworaWYgdGVzdCAtbiAiJGFjX2N0X05DVVJTRVNfQ09ORklHIjsgdGhlbgorICBlY2hvICIkYXNfbWU6NzgwMDogcmVzdWx0OiAkYWNfY3RfTkNVUlNFU19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X05DVVJTRVNfQ09ORklHIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjc4MDM6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorZmkKKworICB0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciICYmIGJyZWFrCitkb25lCit0ZXN0IC1uICIkYWNfY3RfTkNVUlNFU19DT05GSUciIHx8IGFjX2N0X05DVVJTRVNfQ09ORklHPSJub25lIgorCisgIE5DVVJTRVNfQ09ORklHPSRhY19jdF9OQ1VSU0VTX0NPTkZJRworZmkKKworCWlmIHRlc3QgIiROQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkTkNVUlNFU19DT05GSUcgLS1jZmxhZ3NgIgorCitjZl9hZGRfbGlicz0iYCROQ1VSU0VTX0NPTkZJRyAtLWxpYnNgIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwkJIyBldmVuIHdpdGggY29uZmlnIHNjcmlwdCwgc29tZSBwYWNrYWdlcyB1c2Ugbm8tb3ZlcnJpZGUgZm9yIGN1cnNlcy5oCisKK2VjaG8gIiRhc19tZTo3ODM2OiBjaGVja2luZyBpZiB3ZSBoYXZlIGlkZW50aWZpZWQgY3Vyc2VzIGhlYWRlcnMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBoYXZlIGlkZW50aWZpZWQgY3Vyc2VzIGhlYWRlcnMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfaGVhZGVyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X25jdXJzZXNfaGVhZGVyPW5vbmUKK2ZvciBjZl9oZWFkZXIgaW4gXAorCW5jdXJzZXMuaCAkY2ZfY3Zfc2NyZWVuL25jdXJzZXMuaCBcCisJY3Vyc2VzLmggJGNmX2N2X3NjcmVlbi9jdXJzZXMuaAorZG8KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzg0OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCk7IHRnb3RvKCI/IiwgMCwwKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3ODYwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3ODYzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjc4NjY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo3ODY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX2hlYWRlcjsgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorCitmaQorZWNobyAiJGFzX21lOjc4ODA6IHJlc3VsdDogJGNmX2N2X25jdXJzZXNfaGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgPSBub25lIDsgdGhlbgorCXsgeyBlY2hvICIkYXNfbWU6Nzg4NDogZXJyb3I6IE5vIGN1cnNlcyBoZWFkZXItZmlsZXMgZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogTm8gY3Vyc2VzIGhlYWRlci1maWxlcyBmb3VuZCIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorZmkKKworIyBjaGVhdCwgdG8gZ2V0IHRoZSByaWdodCAjZGVmaW5lJ3MgZm9yIEhBVkVfTkNVUlNFU19ILCBldGMuCisKK2ZvciBhY19oZWFkZXIgaW4gJGNmX2N2X25jdXJzZXNfaGVhZGVyCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6Nzg5NDogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA3OTAwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwkYWNfaGVhZGVyPgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo3OTA0OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZTo3OTEwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo3OTI5OiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTIDEKK0VPRgorCitjZl9uY3VsaWJfUk9PVD1gZWNobyAiSEFWRV9MSUIkY2ZfbmN1Y29uZmlnX3Jvb3QiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCisJCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX25jdWxpYl9ST09UIDEKK0VPRgorCisJCQkJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPWAkTkNVUlNFU19DT05GSUcgLS12ZXJzaW9uYAorCisJZWxzZQorCitjZl9uY3VoZHJfcm9vdD0kY2ZfY3Zfc2NyZWVuCisKK3Rlc3QgLW4gIiRjZl9jdl9jdXJzZXNfZGlyIiAmJiBcCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2RpciIgIT0gIm5vIiAmJiB7IFwKKworaWYgdGVzdCAtbiAiJGNmX2N2X2N1cnNlc19kaXIvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiIDsgdGhlbgorICBmb3IgY2ZfYWRkX2luY2RpciBpbiAkY2ZfY3ZfY3Vyc2VzX2Rpci9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdAorICBkbworCXdoaWxlIHRlc3QgJGNmX2FkZF9pbmNkaXIgIT0gL3Vzci9pbmNsdWRlCisJZG8KKwkgIGlmIHRlc3QgLWQgJGNmX2FkZF9pbmNkaXIKKwkgIHRoZW4KKwkJY2ZfaGF2ZV9pbmNkaXI9bm8KKwkJaWYgdGVzdCAtbiAiJENGTEFHUyRDUFBGTEFHUyIgOyB0aGVuCisJCSAgIyBhIGxvb3AgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gYWRkIHN1YmRpcnMgb2YgZXhpc3RpbmcgZGlycworCQkgIGZvciBjZl90ZXN0X2luY2RpciBpbiAkQ0ZMQUdTICRDUFBGTEFHUyA7IGRvCisJCQlpZiB0ZXN0ICIuJGNmX3Rlc3RfaW5jZGlyIiA9ICIuLUkkY2ZfYWRkX2luY2RpciIgOyB0aGVuCisJCQkgIGNmX2hhdmVfaW5jZGlyPXllczsgYnJlYWsKKwkJCWZpCisJCSAgZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICBpZiB0ZXN0ICIkY2ZfYWRkX2luY2RpciIgPSAvdXNyL2xvY2FsL2luY2x1ZGUgOyB0aGVuCisJCQlpZiB0ZXN0ICIkR0NDIiA9IHllcworCQkJdGhlbgorCQkJICBjZl9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworCQkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisJCQkgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgNzk4MiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyIpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjc5OTQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjc5OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODAwMDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjgwMDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2hhdmVfaW5jZGlyPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJICBDUFBGTEFHUz0kY2Zfc2F2ZV9DUFBGTEFHUworCQkJZmkKKwkJICBmaQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9oYXZlX2luY2RpciIgPSBubyA7IHRoZW4KKwkJICB0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGgiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfTo4MDIwOiB0ZXN0aW5nIGFkZGluZyAkY2ZfYWRkX2luY2RpciB0byBpbmNsdWRlLXBhdGggLi4uIiAxPiY1CisKKwkJICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX2FkZF9pbmNkaXIiCisKKwkJICBjZl90b3BfaW5jZGlyPWBlY2hvICRjZl9hZGRfaW5jZGlyIHwgc2VkIC1lICdzJS9pbmNsdWRlLy4qJCUvaW5jbHVkZSUnYAorCQkgIHRlc3QgIiRjZl90b3BfaW5jZGlyIiA9ICIkY2ZfYWRkX2luY2RpciIgJiYgYnJlYWsKKwkJICBjZl9hZGRfaW5jZGlyPSIkY2ZfdG9wX2luY2RpciIKKwkJZWxzZQorCQkgIGJyZWFrCisJCWZpCisJICBlbHNlCisJCWJyZWFrCisJICBmaQorCWRvbmUKKyAgZG9uZQorZmkKKworfQorCitlY2hvICIkYXNfbWU6ODAzOTogY2hlY2tpbmcgZm9yICRjZl9uY3VoZHJfcm9vdCBoZWFkZXIgaW4gaW5jbHVkZS1wYXRoIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRjZl9uY3VoZHJfcm9vdCBoZWFkZXIgaW4gaW5jbHVkZS1wYXRoLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uY3Vyc2VzX2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCWNmX2hlYWRlcl9saXN0PSIkY2ZfbmN1aGRyX3Jvb3QvY3Vyc2VzLmggJGNmX25jdWhkcl9yb290L25jdXJzZXMuaCIKKwkoIHRlc3QgIiRjZl9uY3VoZHJfcm9vdCIgPSBuY3Vyc2VzIHx8IHRlc3QgIiRjZl9uY3VoZHJfcm9vdCIgPSBuY3Vyc2VzdyApICYmIGNmX2hlYWRlcl9saXN0PSIkY2ZfaGVhZGVyX2xpc3QgY3Vyc2VzLmggbmN1cnNlcy5oIgorCWZvciBjZl9oZWFkZXIgaW4gJGNmX2hlYWRlcl9saXN0CisJZG8KKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODA1MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwkY2ZfaGVhZGVyPgoraW50CittYWluICgpCit7CisKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKworcHJpbnRmKCIlc1xuIiwgTkNVUlNFU19WRVJTSU9OKTsKKyNlbHNlCisjaWZkZWYgX19OQ1VSU0VTX0gKK3ByaW50Zigib2xkXG4iKTsKKyNlbHNlCisJbWFrZSBhbiBlcnJvcgorI2VuZGlmCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MDc1OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MDc4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjgwODE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MDg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmN1cnNlc19oPSRjZl9oZWFkZXIKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9uY3Vyc2VzX2g9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworCQl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oIiAhPSBubyAmJiBicmVhaworCWRvbmUKKworZmkKK2VjaG8gIiRhc19tZTo4MDk5OiByZXN1bHQ6ICRjZl9jdl9uY3Vyc2VzX2giID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfaCIgPiY2CisKK2lmIHRlc3QgIiRjZl9jdl9uY3Vyc2VzX2giICE9IG5vIDsgdGhlbgorCWNmX2N2X25jdXJzZXNfaGVhZGVyPSRjZl9jdl9uY3Vyc2VzX2gKK2Vsc2UKKworZWNobyAiJGFzX21lOjgxMDY6IGNoZWNraW5nIGZvciAkY2ZfbmN1aGRyX3Jvb3QgaW5jbHVkZS1wYXRoIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRjZl9uY3VoZHJfcm9vdCBpbmNsdWRlLXBhdGguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfaDIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvCisKK2NmX3NlYXJjaD0KKworIyBjb2xsZWN0IHRoZSBjdXJyZW50IHNldCBvZiBpbmNsdWRlLWRpcmVjdG9yaWVzIGZyb20gY29tcGlsZXIgZmxhZ3MKK2NmX2hlYWRlcl9wYXRoX2xpc3Q9IiIKK2lmIHRlc3QgLW4gIiR7Q0ZMQUdTfSR7Q1BQRkxBR1N9IiA7IHRoZW4KKwlmb3IgY2ZfaGVhZGVyX3BhdGggaW4gJENQUEZMQUdTICRDRkxBR1MKKwlkbworCQljYXNlICRjZl9oZWFkZXJfcGF0aCBpbgorCQkoLUkqKQorCQkJY2ZfaGVhZGVyX3BhdGg9YGVjaG8gIi4kY2ZfaGVhZGVyX3BhdGgiIHxzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncywvaW5jbHVkZSQsLCdgCisKK3Rlc3QgIngkY2ZfaGVhZGVyX3BhdGgiICE9ICJ4Tk9ORSIgJiYgXAordGVzdCAtZCAiJGNmX2hlYWRlcl9wYXRoIiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGluY2x1ZGUtZGlyZWN0b3JpZXMgdW5kZXIgJGNmX2hlYWRlcl9wYXRoIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX2hlYWRlcl9wYXRoL2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkY2ZfaGVhZGVyX3BhdGgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZSIKKwl0ZXN0IC1kICRjZl9oZWFkZXJfcGF0aC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKKwkJCWNmX2hlYWRlcl9wYXRoX2xpc3Q9IiRjZl9oZWFkZXJfcGF0aF9saXN0ICRjZl9zZWFyY2giCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworIyBhZGQgdGhlIHZhcmlhdGlvbnMgZm9yIHRoZSBwYWNrYWdlIHdlIGFyZSBsb29raW5nIGZvcgorCitjZl9zZWFyY2g9CisKK3Rlc3QgIngkcHJlZml4IiAhPSAieE5PTkUiICYmIFwKK3Rlc3QgLWQgIiRwcmVmaXgiICYmIFwKKyB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkcHJlZml4IgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorCXRlc3QgLWQgJHByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2luY2x1ZGUvJGNmX25jdWhkcl9yb290L2luY2x1ZGUiCisJdGVzdCAtZCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgaW5jbHVkZS1kaXJlY3RvcmllcyB1bmRlciAkY2Zfc3ViZGlyX3ByZWZpeCIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2luY2x1ZGUiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdCAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9pbmNsdWRlLyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUgJiYgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VoZHJfcm9vdC9pbmNsdWRlIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWhkcl9yb290L2luY2x1ZGUvJGNmX25jdWhkcl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1aGRyX3Jvb3QvaW5jbHVkZS8kY2ZfbmN1aGRyX3Jvb3QiCit9CisKK2RvbmUKKwordGVzdCAiJGluY2x1ZGVkaXIiICE9IE5PTkUgJiYgXAordGVzdCAiJGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiICYmIFwKK3Rlc3QgLWQgIiRpbmNsdWRlZGlyIiAmJiB7CisJdGVzdCAtZCAkaW5jbHVkZWRpciAmJiAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGluY2x1ZGVkaXIiCisJdGVzdCAtZCAkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRpbmNsdWRlZGlyLyRjZl9uY3VoZHJfcm9vdCIKK30KKwordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9IE5PTkUgJiYgXAordGVzdCAiJG9sZGluY2x1ZGVkaXIiICE9ICIvdXNyL2luY2x1ZGUiICYmIFwKK3Rlc3QgLWQgIiRvbGRpbmNsdWRlZGlyIiAmJiB7CisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpciAgICAmJiBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJG9sZGluY2x1ZGVkaXIiCisJdGVzdCAtZCAkb2xkaW5jbHVkZWRpci8kY2ZfbmN1aGRyX3Jvb3QgJiYgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRvbGRpbmNsdWRlZGlyLyRjZl9uY3VoZHJfcm9vdCIKK30KKworY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9oZWFkZXJfcGF0aF9saXN0IgorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gc2VhcmNoIHBhdGggJGNmX3NlYXJjaAorCWNmX3NhdmUyX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisJZm9yIGNmX2luY2RpciBpbiAkY2Zfc2VhcmNoCisJZG8KKworaWYgdGVzdCAtbiAiJGNmX2luY2RpciIgOyB0aGVuCisgIGZvciBjZl9hZGRfaW5jZGlyIGluICRjZl9pbmNkaXIKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDgyMjQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MjM2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MjM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjgyNDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MjQ1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX2luY2Rpcj15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODI2MjogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIC4uLiIgMT4mNQorCisJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCisKKwkJZm9yIGNmX2hlYWRlciBpbiBcCisJCQluY3Vyc2VzLmggXAorCQkJY3Vyc2VzLmgKKwkJZG8KKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODI4NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwkY2ZfaGVhZGVyPgoraW50CittYWluICgpCit7CisKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKworcHJpbnRmKCIlc1xuIiwgTkNVUlNFU19WRVJTSU9OKTsKKyNlbHNlCisjaWZkZWYgX19OQ1VSU0VTX0gKK3ByaW50Zigib2xkXG4iKTsKKyNlbHNlCisJbWFrZSBhbiBlcnJvcgorI2VuZGlmCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4MzA5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MzEyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjgzMTU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MzE4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmN1cnNlc19oMj0kY2ZfaGVhZGVyCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmN1cnNlc19oMj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCisJCQlpZiB0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgIT0gbm8gOyB0aGVuCisJCQkJY2ZfY3ZfbmN1cnNlc19oMj0kY2ZfaW5jZGlyLyRjZl9oZWFkZXIKKwkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAkYWNfbiAiCS4uLiBmb3VuZCAkYWNfYyIgMT4mNgorCQkJCWJyZWFrCisJCQlmaQorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGVkICRjZl9pbmNkaXIvJGNmX2hlYWRlciIgMT4mNgorCQlkb25lCisJCUNQUEZMQUdTPSIkY2Zfc2F2ZTJfQ1BQRkxBR1MiCisJCXRlc3QgIiRjZl9jdl9uY3Vyc2VzX2gyIiAhPSBubyAmJiBicmVhaworCWRvbmUKKwl0ZXN0ICIkY2ZfY3ZfbmN1cnNlc19oMiIgPSBubyAmJiB7IHsgZWNobyAiJGFzX21lOjgzMzk6IGVycm9yOiBub3QgZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogbm90IGZvdW5kIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisKK2ZpCitlY2hvICIkYXNfbWU6ODM0NDogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19oMiIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmN1cnNlc19oMiIgPiY2CisKKwljZl8xc3RfaW5jZGlyPWBlY2hvICRjZl9jdl9uY3Vyc2VzX2gyIHwgc2VkIC1lICdzJS9bXi9dKiQlJSdgCisJY2ZfY3ZfbmN1cnNlc19oZWFkZXI9YGJhc2VuYW1lICRjZl9jdl9uY3Vyc2VzX2gyYAorCWlmIHRlc3QgYGJhc2VuYW1lICRjZl8xc3RfaW5jZGlyYCA9ICRjZl9uY3VoZHJfcm9vdCA7IHRoZW4KKwkJY2ZfY3ZfbmN1cnNlc19oZWFkZXI9JGNmX25jdWhkcl9yb290LyRjZl9jdl9uY3Vyc2VzX2hlYWRlcgorCWZpCisKK2lmIHRlc3QgLW4gIiRjZl8xc3RfaW5jZGlyIiA7IHRoZW4KKyAgZm9yIGNmX2FkZF9pbmNkaXIgaW4gJGNmXzFzdF9pbmNkaXIKKyAgZG8KKwl3aGlsZSB0ZXN0ICRjZl9hZGRfaW5jZGlyICE9IC91c3IvaW5jbHVkZQorCWRvCisJICBpZiB0ZXN0IC1kICRjZl9hZGRfaW5jZGlyCisJICB0aGVuCisJCWNmX2hhdmVfaW5jZGlyPW5vCisJCWlmIHRlc3QgLW4gIiRDRkxBR1MkQ1BQRkxBR1MiIDsgdGhlbgorCQkgICMgYSBsb29wIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIGFkZCBzdWJkaXJzIG9mIGV4aXN0aW5nIGRpcnMKKwkJICBmb3IgY2ZfdGVzdF9pbmNkaXIgaW4gJENGTEFHUyAkQ1BQRkxBR1MgOyBkbworCQkJaWYgdGVzdCAiLiRjZl90ZXN0X2luY2RpciIgPSAiLi1JJGNmX2FkZF9pbmNkaXIiIDsgdGhlbgorCQkJICBjZl9oYXZlX2luY2Rpcj15ZXM7IGJyZWFrCisJCQlmaQorCQkgIGRvbmUKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgaWYgdGVzdCAiJGNmX2FkZF9pbmNkaXIiID0gL3Vzci9sb2NhbC9pbmNsdWRlIDsgdGhlbgorCQkJaWYgdGVzdCAiJEdDQyIgPSB5ZXMKKwkJCXRoZW4KKwkJCSAgY2Zfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCQkJICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDgzNzcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4Mzg5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4MzkyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjgzOTU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4Mzk4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgOgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9oYXZlX2luY2Rpcj15ZXMKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJCSAgQ1BQRkxBR1M9JGNmX3NhdmVfQ1BQRkxBR1MKKwkJCWZpCisJCSAgZmkKKwkJZmkKKworCQlpZiB0ZXN0ICIkY2ZfaGF2ZV9pbmNkaXIiID0gbm8gOyB0aGVuCisJCSAgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06ODQxNTogdGVzdGluZyBhZGRpbmcgJGNmX2FkZF9pbmNkaXIgdG8gaW5jbHVkZS1wYXRoIC4uLiIgMT4mNQorCisJCSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRjZl9hZGRfaW5jZGlyIgorCisJCSAgY2ZfdG9wX2luY2Rpcj1gZWNobyAkY2ZfYWRkX2luY2RpciB8IHNlZCAtZSAncyUvaW5jbHVkZS8uKiQlL2luY2x1ZGUlJ2AKKwkJICB0ZXN0ICIkY2ZfdG9wX2luY2RpciIgPSAiJGNmX2FkZF9pbmNkaXIiICYmIGJyZWFrCisJCSAgY2ZfYWRkX2luY2Rpcj0iJGNmX3RvcF9pbmNkaXIiCisJCWVsc2UKKwkJICBicmVhaworCQlmaQorCSAgZWxzZQorCQlicmVhaworCSAgZmkKKwlkb25lCisgIGRvbmUKK2ZpCisKK2ZpCisKKyMgU2V0IGRlZmluaXRpb25zIHRvIGFsbG93IGlmZGVmJ2luZyBmb3IgbmN1cnNlcy5oCisKK2Nhc2UgJGNmX2N2X25jdXJzZXNfaGVhZGVyIGluCisoKm5jdXJzZXMuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX0ggMQorRU9GCisKKwk7OworZXNhYworCitjYXNlICRjZl9jdl9uY3Vyc2VzX2hlYWRlciBpbgorKG5jdXJzZXMvY3Vyc2VzLmh8bmN1cnNlcy9uY3Vyc2VzLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU19OQ1VSU0VTX0ggMQorRU9GCisKKwk7OworKG5jdXJzZXN3L2N1cnNlcy5ofG5jdXJzZXN3L25jdXJzZXMuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTV19OQ1VSU0VTX0ggMQorRU9GCisKKwk7OworZXNhYworCitlY2hvICIkYXNfbWU6ODQ2MzogY2hlY2tpbmcgZm9yIHRlcm1pbmZvIGhlYWRlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0ZXJtaW5mbyBoZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3Rlcm1faGVhZGVyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2Nhc2UgJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcn0gaW4KKygqL25jdXJzZXMuaHwqL25jdXJzZXN3LmgpCisJY2ZfdGVybV9oZWFkZXI9YGVjaG8gIiRjZl9jdl9uY3Vyc2VzX2hlYWRlciIgfCBzZWQgLWUgJ3MlbmN1cnNlc1teLl0qXC5oJCV0ZXJtLmglJ2AKKwk7OworKCopCisJY2ZfdGVybV9oZWFkZXI9dGVybS5oCisJOzsKK2VzYWMKKworZm9yIGNmX3Rlc3QgaW4gJGNmX3Rlcm1faGVhZGVyICJuY3Vyc2VzL3Rlcm0uaCIgIm5jdXJzZXN3L3Rlcm0uaCIKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg0ODEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPCRjZl90ZXN0PgorCitpbnQKK21haW4gKCkKK3sKK2ludCB4ID0gYXV0b19sZWZ0X21hcmdpbgorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4NDk2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NDk5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg1MDI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NTA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKworCWNmX2N2X3Rlcm1faGVhZGVyPSIkY2ZfdGVzdCIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJY2ZfY3ZfdGVybV9oZWFkZXI9dW5rbm93bgorCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJdGVzdCAiJGNmX2N2X3Rlcm1faGVhZGVyIiAhPSB1bmtub3duICYmIGJyZWFrCitkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6ODUyMTogcmVzdWx0OiAkY2ZfY3ZfdGVybV9oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Rlcm1faGVhZGVyIiA+JjYKKworIyBTZXQgZGVmaW5pdGlvbnMgdG8gYWxsb3cgaWZkZWYnaW5nIHRvIGFjY29tbW9kYXRlIHN1YmRpcmVjdG9yaWVzCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisoKnRlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9URVJNX0ggMQorRU9GCisKKwk7OworZXNhYworCitjYXNlICRjZl9jdl90ZXJtX2hlYWRlciBpbgorKG5jdXJzZXMvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNfVEVSTV9IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy90ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfTkNVUlNFU1dfVEVSTV9IIDEKK0VPRgorCisJOzsKK2VzYWMKKworIyBzb21lIGFwcGxpY2F0aW9ucyBuZWVkIHRoaXMsIGJ1dCBzaG91bGQgY2hlY2sgZm9yIE5DVVJTRVNfVkVSU0lPTgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOQ1VSU0VTIDEKK0VPRgorCitlY2hvICIkYXNfbWU6ODU1OTogY2hlY2tpbmcgZm9yIG5jdXJzZXMgdmVyc2lvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBuY3Vyc2VzIHZlcnNpb24uLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfdmVyc2lvbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfY3ZfbmN1cnNlc192ZXJzaW9uPW5vCisJY2ZfdGVtcGZpbGU9b3V0JCQKKwlybSAtZiAkY2ZfdGVtcGZpbGUKKwlpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCisJIyBUaGlzIHdpbGwgbm90IHdvcmsgaWYgdGhlIHByZXByb2Nlc3NvciBzcGxpdHMgdGhlIGxpbmUgYWZ0ZXIgdGhlCisJIyBBdXRvY29uZiB0b2tlbi4gIFRoZSAndW5wcm90bycgcHJvZ3JhbSBkb2VzIHRoYXQuCisJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyN1bmRlZiBBdXRvY29uZgorI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorQXV0b2NvbmYgTkNVUlNFU19WRVJTSU9OCisjZWxzZQorI2lmZGVmIF9fTkNVUlNFU19ICitBdXRvY29uZiAib2xkIgorI2VuZGlmCis7CisjZW5kaWYKK0VPRgorCWNmX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IDI+JjUgfCBncmVwICdeQXV0b2NvbmYgJyA+Y29uZnRlc3Qub3V0IgorCXsgKGV2YWwgZWNobyAiJGFzX21lOjg1ODU6IFwiJGNmX3RyeVwiIikgPiY1CisgIChldmFsICRjZl90cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NTg4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KKwlpZiB0ZXN0IC1mIGNvbmZ0ZXN0Lm91dCA7IHRoZW4KKwkJY2Zfb3V0PWBjYXQgY29uZnRlc3Qub3V0IHwgc2VkIC1lICdzJV5BdXRvY29uZiAlJScgLWUgJ3MlXlteIl0qIiUlJyAtZSAncyUiLiolJSdgCisJCXRlc3QgLW4gIiRjZl9vdXQiICYmIGNmX2N2X25jdXJzZXNfdmVyc2lvbj0iJGNmX291dCIKKwkJcm0gLWYgY29uZnRlc3Qub3V0CisJZmkKKworZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg1OTggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgbWFpbigpCit7CisJRklMRSAqZnAgPSBmb3BlbigiJGNmX3RlbXBmaWxlIiwgInciKTsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyMgaWZkZWYgTkNVUlNFU19WRVJTSU9OX1BBVENICisJZnByaW50ZihmcCwgIiVzLiVkXG4iLCBOQ1VSU0VTX1ZFUlNJT04sIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCk7CisjIGVsc2UKKwlmcHJpbnRmKGZwLCAiJXNcbiIsIE5DVVJTRVNfVkVSU0lPTik7CisjIGVuZGlmCisjZWxzZQorIyBpZmRlZiBfX05DVVJTRVNfSAorCWZwcmludGYoZnAsICJvbGRcbiIpOworIyBlbHNlCisJbWFrZSBhbiBlcnJvcgorIyBlbmRpZgorI2VuZGlmCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufSgwKTsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4NjIzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NjI2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4NjI4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODYzMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisKKwljZl9jdl9uY3Vyc2VzX3ZlcnNpb249YGNhdCAkY2ZfdGVtcGZpbGVgCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisJcm0gLWYgJGNmX3RlbXBmaWxlCisKK2ZpCitlY2hvICIkYXNfbWU6ODY0NTogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iID4mNgordGVzdCAiJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgPSBubyB8fAorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkNVUlNFUyAxCitFT0YKKworY2ZfbmN1bGliX3Jvb3Q9JGNmX2N2X3NjcmVlbgorCSMgVGhpcyB3b3JrcywgZXhjZXB0IGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIGZpbmQgZ3BtLCBidXQKKwkjIG5jdXJzZXMgaXMgaW4gYSBub25zdGFuZGFyZCBsb2NhdGlvbiB2aWEgJExJQlMsIGFuZCB3ZSByZWFsbHkgd2FudAorCSMgdG8gbGluayBncG0uCitjZl9uY3Vyc2VzX0xJQlM9IiIKK2NmX25jdXJzZXNfU0FWRT0iJExJQlMiCitlY2hvICIkYXNfbWU6ODY1ODogY2hlY2tpbmcgZm9yIEdwbV9PcGVuIGluIC1sZ3BtIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEdwbV9PcGVuIGluIC1sZ3BtLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZ3BtX0dwbV9PcGVuK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sZ3BtICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODY2NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgR3BtX09wZW4gKCk7CitpbnQKK21haW4gKCkKK3sKK0dwbV9PcGVuICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODY4NTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODY4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg2OTE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4Njk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2dwbV9HcG1fT3Blbj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2dwbV9HcG1fT3Blbj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6ODcwNTogcmVzdWx0OiAkYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2dwbV9HcG1fT3BlbiIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfZ3BtX0dwbV9PcGVuID0geWVzOyB0aGVuCisgIGVjaG8gIiRhc19tZTo4NzA4OiBjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbGdwbSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBpbml0c2NyIGluIC1sZ3BtLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZ3BtX2luaXRzY3Irc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxncG0gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4NzE2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBpbml0c2NyICgpOworaW50CittYWluICgpCit7Citpbml0c2NyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODczNTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODczODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjg3NDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4NzQ0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2dwbV9pbml0c2NyPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZ3BtX2luaXRzY3I9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjg3NTU6IHJlc3VsdDogJGFjX2N2X2xpYl9ncG1faW5pdHNjciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2dwbV9pbml0c2NyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9ncG1faW5pdHNjciA9IHllczsgdGhlbgorICBMSUJTPSIkY2ZfbmN1cnNlc19TQVZFIgorZWxzZQorICBjZl9uY3Vyc2VzX0xJQlM9Ii1sZ3BtIgorZmkKKworZmkKKworY2FzZSAkaG9zdF9vcyBpbgorKGZyZWVic2QqKQorCSMgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCBhbiBvYnNvbGV0ZQorCSMgdmVyc2lvbiBvZiBuY3Vyc2VzIChidXQgaXQgc2hvdWxkIGRvIG5vIGhhcm0sIHNpbmNlIGl0J3Mgc3RhdGljKS4KKwlpZiB0ZXN0ICIkY2ZfbmN1bGliX3Jvb3QiID0gbmN1cnNlcyA7IHRoZW4KKwkJZWNobyAiJGFzX21lOjg3NzA6IGNoZWNraW5nIGZvciB0Z290byBpbiAtbG15dGluZm8iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGdvdG8gaW4gLWxteXRpbmZvLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfbXl0aW5mb190Z290bytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG15dGluZm8gICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA4Nzc4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciB0Z290byAoKTsKK2ludAorbWFpbiAoKQorewordGdvdG8gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4Nzk3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4ODAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODgwMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg4MDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfbXl0aW5mb190Z290bz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX215dGluZm9fdGdvdG89bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjg4MTc6IHJlc3VsdDogJGFjX2N2X2xpYl9teXRpbmZvX3Rnb3RvIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfbXl0aW5mb190Z290byIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfbXl0aW5mb190Z290byA9IHllczsgdGhlbgorICBjZl9uY3Vyc2VzX0xJQlM9Ii1sbXl0aW5mbyAkY2ZfbmN1cnNlc19MSUJTIgorZmkKKworCWZpCisJOzsKK2VzYWMKKworY2ZfYWRkX2xpYnM9IiRjZl9uY3Vyc2VzX0xJQlMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworaWYgKCB0ZXN0IC1uICIkY2ZfY3ZfY3Vyc2VzX2RpciIgJiYgdGVzdCAiJGNmX2N2X2N1cnNlc19kaXIiICE9ICJubyIgKQordGhlbgorCitjZl9hZGRfbGlicz0iLWwkY2ZfbmN1bGliX3Jvb3QiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZWxzZQorCisJZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9bm8nCisJY2ZfbGliZGlyPSIiCisJZWNobyAiJGFzX21lOjg4NjY6IGNoZWNraW5nIGZvciBpbml0c2NyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGluaXRzY3IuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfaW5pdHNjcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDg4NzIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgaW5pdHNjciAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBpbml0c2NyICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9pbml0c2NyKSB8fCBkZWZpbmVkIChfX3N0dWJfX19pbml0c2NyKQorY2hva2UgbWUKKyNlbHNlCitmID0gaW5pdHNjcjsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo4OTAzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo4OTA2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6ODkwOTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg5MTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2luaXRzY3I9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfaW5pdHNjcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6ODkyMjogcmVzdWx0OiAkYWNfY3ZfZnVuY19pbml0c2NyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX2luaXRzY3IiID4mNgoraWYgdGVzdCAkYWNfY3ZfZnVuY19pbml0c2NyID0geWVzOyB0aGVuCisgIGV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPXllcycKK2Vsc2UKKworCQljZl9zYXZlX0xJQlM9IiRMSUJTIgorCQllY2hvICIkYXNfbWU6ODkyOTogY2hlY2tpbmcgZm9yIGluaXRzY3IgaW4gLWwkY2ZfbmN1bGliX3Jvb3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgaW5pdHNjciBpbiAtbCRjZl9uY3VsaWJfcm9vdC4uLiAkRUNIT19DIiA+JjYKKwkJTElCUz0iLWwkY2ZfbmN1bGliX3Jvb3QgJExJQlMiCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgODkzMyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7Citpbml0c2NyKCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjg5NDU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjg5NDg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo4OTUxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6ODk1NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGVjaG8gIiRhc19tZTo4OTU2OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorCQkJIGV2YWwgJ2NmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QnPXllcycKKworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitlY2hvICIkYXNfbWU6ODk2MzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisKK2NmX3NlYXJjaD0KK2NmX2xpYnJhcnlfcGF0aF9saXN0PSIiCitpZiB0ZXN0IC1uICIke0xERkxBR1N9JHtMSUJTfSIgOyB0aGVuCisJZm9yIGNmX2xpYnJhcnlfcGF0aCBpbiAkTERGTEFHUyAkTElCUworCWRvCisJCWNhc2UgJGNmX2xpYnJhcnlfcGF0aCBpbgorCQkoLUwqKQorCQkJY2ZfbGlicmFyeV9wYXRoPWBlY2hvICIuJGNmX2xpYnJhcnlfcGF0aCIgfHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLC9saWIkLCwnYAorCit0ZXN0ICJ4JGNmX2xpYnJhcnlfcGF0aCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkY2ZfbGlicmFyeV9wYXRoIiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkY2ZfbGlicmFyeV9wYXRoIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9saWJyYXJ5X3BhdGgvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYi8kY2ZfbmN1bGliX3Jvb3QiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoL2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoL2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX2xpYnJhcnlfcGF0aC8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoLyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkY2ZfbGlicmFyeV9wYXRoLyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2ZfbGlicmFyeV9wYXRoLyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290IgorfQorCisJCQljZl9saWJyYXJ5X3BhdGhfbGlzdD0iJGNmX2xpYnJhcnlfcGF0aF9saXN0ICRjZl9zZWFyY2giCisJCQk7OworCQllc2FjCisJZG9uZQorZmkKKworY2Zfc2VhcmNoPQorCit0ZXN0ICJ4JHByZWZpeCIgIT0gInhOT05FIiAmJiBcCit0ZXN0IC1kICIkcHJlZml4IiAmJiBcCisgeworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uIHRlc3RpbmcgZm9yIGxpYi1kaXJlY3RvcmllcyB1bmRlciAkcHJlZml4IgorCXRlc3QgLWQgJHByZWZpeC9saWIgJiYgICAgICAgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRwcmVmaXgvbGliIgorCXRlc3QgLWQgJHByZWZpeC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QiCisJdGVzdCAtZCAkcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJHByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIiCisJdGVzdCAtZCAkcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290IgorfQorCitmb3IgY2Zfc3ViZGlyX3ByZWZpeCBpbiBcCisJL3VzciBcCisJL3Vzci9sb2NhbCBcCisJL3Vzci9wa2cgXAorCS9vcHQgXAorCS9vcHQvbG9jYWwgXAorCSRIT01FCitkbworCit0ZXN0ICJ4JGNmX3N1YmRpcl9wcmVmaXgiICE9ICJ4JHByZWZpeCIgJiYgXAordGVzdCAtZCAiJGNmX3N1YmRpcl9wcmVmaXgiICYmIFwKKyh0ZXN0IC16ICIkcHJlZml4IiB8fCB0ZXN0IHgkcHJlZml4ID0geE5PTkUgfHwgdGVzdCAieCRjZl9zdWJkaXJfcHJlZml4IiAhPSAieCRwcmVmaXgiKSAmJiB7CisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi4gdGVzdGluZyBmb3IgbGliLWRpcmVjdG9yaWVzIHVuZGVyICRjZl9zdWJkaXJfcHJlZml4IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliICYmICAgICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIiCisJdGVzdCAtZCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC9saWIvJGNmX25jdWxpYl9yb290IgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvbGliLyRjZl9uY3VsaWJfcm9vdC9saWIgJiYgICAgY2Zfc2VhcmNoPSIkY2Zfc2VhcmNoICRjZl9zdWJkaXJfcHJlZml4L2xpYi8kY2ZfbmN1bGliX3Jvb3QvbGliIgorCXRlc3QgLWQgJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiAmJiAgICAgICBjZl9zZWFyY2g9IiRjZl9zZWFyY2ggJGNmX3N1YmRpcl9wcmVmaXgvJGNmX25jdWxpYl9yb290L2xpYiIKKwl0ZXN0IC1kICRjZl9zdWJkaXJfcHJlZml4LyRjZl9uY3VsaWJfcm9vdC9saWIvJGNmX25jdWxpYl9yb290ICYmICAgIGNmX3NlYXJjaD0iJGNmX3NlYXJjaCAkY2Zfc3ViZGlyX3ByZWZpeC8kY2ZfbmN1bGliX3Jvb3QvbGliLyRjZl9uY3VsaWJfcm9vdCIKK30KKworZG9uZQorCitjZl9zZWFyY2g9IiRjZl9saWJyYXJ5X3BhdGhfbGlzdCAkY2Zfc2VhcmNoIgorCisJCQlmb3IgY2ZfbGliZGlyIGluICRjZl9zZWFyY2gKKwkJCWRvCisJCQkJZWNobyAiJGFzX21lOjkwMzE6IGNoZWNraW5nIGZvciAtbCRjZl9uY3VsaWJfcm9vdCBpbiAkY2ZfbGliZGlyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIC1sJGNmX25jdWxpYl9yb290IGluICRjZl9saWJkaXIuLi4gJEVDSE9fQyIgPiY2CisJCQkJTElCUz0iLUwkY2ZfbGliZGlyIC1sJGNmX25jdWxpYl9yb290ICRjZl9zYXZlX0xJQlMiCisJCQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5MDM1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKK2luaXRzY3IoKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTA0NzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTA1MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjkwNTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5MDU2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgZWNobyAiJGFzX21lOjkwNTg6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CisJCQkgCQkgZXZhbCAnY2ZfY3ZfaGF2ZV9saWJfJyRjZl9uY3VsaWJfcm9vdCc9eWVzJworCQkJCQkgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZWNobyAiJGFzX21lOjkwNjU6IHJlc3VsdDogbm8iID4mNQorZWNobyAiJHtFQ0hPX1R9bm8iID4mNgorCQkJCQkgTElCUz0iJGNmX3NhdmVfTElCUyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQlkb25lCisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCisKK2V2YWwgJ2NmX2ZvdW5kX2xpYnJhcnk9JGNmX2N2X2hhdmVfbGliXyckY2ZfbmN1bGliX3Jvb3QKKworaWYgdGVzdCAkY2ZfZm91bmRfbGlicmFyeSA9IG5vIDsgdGhlbgorCXsgeyBlY2hvICIkYXNfbWU6OTA4MDogZXJyb3I6IENhbm5vdCBsaW5rICRjZl9uY3VsaWJfcm9vdCBsaWJyYXJ5IiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IENhbm5vdCBsaW5rICRjZl9uY3VsaWJfcm9vdCBsaWJyYXJ5IiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CitmaQorCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmN1cnNlc19MSUJTIiA7IHRoZW4KKwllY2hvICIkYXNfbWU6OTA4ODogY2hlY2tpbmcgaWYgd2UgY2FuIGxpbmsgJGNmX25jdWxpYl9yb290IHdpdGhvdXQgJGNmX25jdXJzZXNfTElCUyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIGNhbiBsaW5rICRjZl9uY3VsaWJfcm9vdCB3aXRob3V0ICRjZl9uY3Vyc2VzX0xJQlMuLi4gJEVDSE9fQyIgPiY2CisJY2ZfbmN1cnNlc19TQVZFPSIkTElCUyIKKwlmb3IgcCBpbiAkY2ZfbmN1cnNlc19MSUJTIDsgZG8KKwkJcT1gZWNobyAkTElCUyB8IHNlZCAtZSAicyUkcCAlJSIgLWUgInMlJHAkJSUiYAorCQlpZiB0ZXN0ICIkcSIgIT0gIiRMSUJTIiA7IHRoZW4KKwkJCUxJQlM9IiRxIgorCQlmaQorCWRvbmUKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDkwOTggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW5pdHNjcigpOyBtb3VzZW1hc2soMCwwKTsgdGdvdG8oKGNoYXIgKikwLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkxMTA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkxMTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5MTE2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTExOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGVjaG8gIiRhc19tZTo5MTIxOiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitlY2hvICIkYXNfbWU6OTEyNjogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJCSBMSUJTPSIkY2ZfbmN1cnNlc19TQVZFIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2NmX25jdWxpYl9ST09UPWBlY2hvICJIQVZFX0xJQiRjZl9uY3VsaWJfcm9vdCIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX25jdWxpYl9ST09UIDEKK0VPRgorCisJZmkKK2Vsc2UKKwlOQ1VSU0VTX0NPTkZJRz1ub25lCitmaQorCisJOzsKKyhwZGN1cnNlcykKKwllY2hvICIkYXNfbWU6OTE0NjogY2hlY2tpbmcgZm9yIFgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgWC4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC14IG9yIC0td2l0aG91dC14IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF94K3NldH0iID0gc2V0OyB0aGVuCisgIHdpdGh2YWw9IiR3aXRoX3giCisKK2ZpOworIyAkaGF2ZV94IGlzIGB5ZXMnLCBgbm8nLCBgZGlzYWJsZWQnLCBvciBlbXB0eSB3aGVuIHdlIGRvIG5vdCB5ZXQga25vdy4KK2lmIHRlc3QgIngkd2l0aF94IiA9IHhubzsgdGhlbgorICAjIFRoZSB1c2VyIGV4cGxpY2l0bHkgZGlzYWJsZWQgWC4KKyAgaGF2ZV94PWRpc2FibGVkCitlbHNlCisgIGlmIHRlc3QgIngkeF9pbmNsdWRlcyIgIT0geE5PTkUgJiYgdGVzdCAieCR4X2xpYnJhcmllcyIgIT0geE5PTkU7IHRoZW4KKyAgICAjIEJvdGggdmFyaWFibGVzIGFyZSBhbHJlYWR5IHNldC4KKyAgICBoYXZlX3g9eWVzCisgIGVsc2UKKyAgICBpZiB0ZXN0ICIke2FjX2N2X2hhdmVfeCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICAjIE9uZSBvciBib3RoIG9mIHRoZSB2YXJzIGFyZSBub3Qgc2V0LCBhbmQgdGhlcmUgaXMgbm8gY2FjaGVkIHZhbHVlLgorYWNfeF9pbmNsdWRlcz1ubyBhY194X2xpYnJhcmllcz1ubworcm0gLWZyIGNvbmZ0ZXN0LmRpcgoraWYgbWtkaXIgY29uZnRlc3QuZGlyOyB0aGVuCisgIGNkIGNvbmZ0ZXN0LmRpcgorICAjIE1ha2Ugc3VyZSB0byBub3QgcHV0ICJtYWtlIiBpbiB0aGUgSW1ha2VmaWxlIHJ1bGVzLCBzaW5jZSB3ZSBncmVwIGl0IG91dC4KKyAgY2F0ID5JbWFrZWZpbGUgPDwnRU9GJworYWNmaW5keDoKKwlAZWNobyAnYWNfaW1faW5jcm9vdD0iJHtJTkNST09UfSI7IGFjX2ltX3VzcmxpYmRpcj0iJHtVU1JMSUJESVJ9IjsgYWNfaW1fbGliZGlyPSIke0xJQkRJUn0iJworRU9GCisgIGlmICh4bWttZikgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJiB0ZXN0IC1mIE1ha2VmaWxlOyB0aGVuCisgICAgIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCisgICAgZXZhbCBgJHtNQUtFLW1ha2V9IGFjZmluZHggMj4vZGV2L251bGwgfCBncmVwIC12IG1ha2VgCisgICAgIyBPcGVuIFdpbmRvd3MgeG1rbWYgcmVwb3J0ZWRseSBzZXRzIExJQkRJUiBpbnN0ZWFkIG9mIFVTUkxJQkRJUi4KKyAgICBmb3IgYWNfZXh0ZW5zaW9uIGluIGEgc28gc2wgZHlsaWIgZGxsOyBkbworICAgICAgaWYgdGVzdCAhIC1mICRhY19pbV91c3JsaWJkaXIvbGliWDExLiRhY19leHRlbnNpb24gJiYKKyAgICAgICAgIHRlc3QgLWYgJGFjX2ltX2xpYmRpci9saWJYMTEuJGFjX2V4dGVuc2lvbjsgdGhlbgorICAgICAgICBhY19pbV91c3JsaWJkaXI9JGFjX2ltX2xpYmRpcjsgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgICMgU2NyZWVuIG91dCBib2d1cyB2YWx1ZXMgZnJvbSB0aGUgaW1ha2UgY29uZmlndXJhdGlvbi4gIFRoZXkgYXJlCisgICAgIyBib2d1cyBib3RoIGJlY2F1c2UgdGhleSBhcmUgdGhlIGRlZmF1bHQgYW55d2F5LCBhbmQgYmVjYXVzZQorICAgICMgdXNpbmcgdGhlbSB3b3VsZCBicmVhayBnY2Mgb24gc3lzdGVtcyB3aGVyZSBpdCBuZWVkcyBmaXhlZCBpbmNsdWRlcy4KKyAgICBjYXNlICRhY19pbV9pbmNyb290IGluCisJL3Vzci9pbmNsdWRlKSA7OworCSopIHRlc3QgLWYgIiRhY19pbV9pbmNyb290L1gxMS9Yb3MuaCIgJiYgYWNfeF9pbmNsdWRlcz0kYWNfaW1faW5jcm9vdDs7CisgICAgZXNhYworICAgIGNhc2UgJGFjX2ltX3VzcmxpYmRpciBpbgorCS91c3IvbGliIHwgL2xpYikgOzsKKwkqKSB0ZXN0IC1kICIkYWNfaW1fdXNybGliZGlyIiAmJiBhY194X2xpYnJhcmllcz0kYWNfaW1fdXNybGliZGlyIDs7CisgICAgZXNhYworICBmaQorICBjZCAuLgorICBybSAtZnIgY29uZnRlc3QuZGlyCitmaQorCisjIFN0YW5kYXJkIHNldCBvZiBjb21tb24gZGlyZWN0b3JpZXMgZm9yIFggaGVhZGVycy4KKyMgQ2hlY2sgWDExIGJlZm9yZSBYMTFSbiBiZWNhdXNlIGl0IGlzIG9mdGVuIGEgc3ltbGluayB0byB0aGUgY3VycmVudCByZWxlYXNlLgorYWNfeF9oZWFkZXJfZGlycz0nCisvdXNyL1gxMS9pbmNsdWRlCisvdXNyL1gxMVI2L2luY2x1ZGUKKy91c3IvWDExUjUvaW5jbHVkZQorL3Vzci9YMTFSNC9pbmNsdWRlCisKKy91c3IvaW5jbHVkZS9YMTEKKy91c3IvaW5jbHVkZS9YMTFSNgorL3Vzci9pbmNsdWRlL1gxMVI1CisvdXNyL2luY2x1ZGUvWDExUjQKKworL3Vzci9sb2NhbC9YMTEvaW5jbHVkZQorL3Vzci9sb2NhbC9YMTFSNi9pbmNsdWRlCisvdXNyL2xvY2FsL1gxMVI1L2luY2x1ZGUKKy91c3IvbG9jYWwvWDExUjQvaW5jbHVkZQorCisvdXNyL2xvY2FsL2luY2x1ZGUvWDExCisvdXNyL2xvY2FsL2luY2x1ZGUvWDExUjYKKy91c3IvbG9jYWwvaW5jbHVkZS9YMTFSNQorL3Vzci9sb2NhbC9pbmNsdWRlL1gxMVI0CisKKy91c3IvWDM4Ni9pbmNsdWRlCisvdXNyL3gzODYvaW5jbHVkZQorL3Vzci9YRnJlZTg2L2luY2x1ZGUvWDExCisKKy91c3IvaW5jbHVkZQorL3Vzci9sb2NhbC9pbmNsdWRlCisvdXNyL3Vuc3VwcG9ydGVkL2luY2x1ZGUKKy91c3IvYXRoZW5hL2luY2x1ZGUKKy91c3IvbG9jYWwveDExcjUvaW5jbHVkZQorL3Vzci9scHAvWGFtcGxlcy9pbmNsdWRlCisKKy91c3Ivb3Blbndpbi9pbmNsdWRlCisvdXNyL29wZW53aW4vc2hhcmUvaW5jbHVkZScKKworaWYgdGVzdCAiJGFjX3hfaW5jbHVkZXMiID0gbm87IHRoZW4KKyAgIyBHdWVzcyB3aGVyZSB0byBmaW5kIGluY2x1ZGUgZmlsZXMsIGJ5IGxvb2tpbmcgZm9yIEludHJpbnNpYy5oLgorICAjIEZpcnN0LCB0cnkgdXNpbmcgdGhhdCBmaWxlIHdpdGggbm8gc3BlY2lhbCBkaXJlY3Rvcnkgc3BlY2lmaWVkLgorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDkyNDMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPFgxMS9JbnRyaW5zaWMuaD4KK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTI0NzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6OTI1MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICAjIFdlIGNhbiBjb21waWxlIHVzaW5nIFggaGVhZGVycyB3aXRoIG5vIHNwZWNpYWwgaW5jbHVkZSBkaXJlY3RvcnkuCithY194X2luY2x1ZGVzPQorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZm9yIGFjX2RpciBpbiAkYWNfeF9oZWFkZXJfZGlyczsgZG8KKyAgaWYgdGVzdCAtciAiJGFjX2Rpci9YMTEvSW50cmluc2ljLmgiOyB0aGVuCisgICAgYWNfeF9pbmNsdWRlcz0kYWNfZGlyCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorZmkgIyAkYWNfeF9pbmNsdWRlcyA9IG5vCisKK2lmIHRlc3QgIiRhY194X2xpYnJhcmllcyIgPSBubzsgdGhlbgorICAjIENoZWNrIGZvciB0aGUgbGlicmFyaWVzLgorICAjIFNlZSBpZiB3ZSBmaW5kIHRoZW0gd2l0aG91dCBhbnkgc3BlY2lhbCBvcHRpb25zLgorICAjIERvbid0IGFkZCB0byAkTElCUyBwZXJtYW5lbnRseS4KKyAgYWNfc2F2ZV9MSUJTPSRMSUJTCisgIExJQlM9Ii1sWHQgJExJQlMiCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTI4NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8WDExL0ludHJpbnNpYy5oPgoraW50CittYWluICgpCit7CitYdE1hbGxvYyAoMCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjkyOTg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjkzMDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5MzA0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTMwNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIExJQlM9JGFjX3NhdmVfTElCUworIyBXZSBjYW4gbGluayBYIHByb2dyYW1zIHdpdGggbm8gc3BlY2lhbCBsaWJyYXJ5IHBhdGguCithY194X2xpYnJhcmllcz0KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorTElCUz0kYWNfc2F2ZV9MSUJTCitmb3IgYWNfZGlyIGluIGBlY2hvICIkYWNfeF9pbmNsdWRlcyAkYWNfeF9oZWFkZXJfZGlycyIgfCBzZWQgcy9pbmNsdWRlL2xpYi9nYAorZG8KKyAgIyBEb24ndCBldmVuIGF0dGVtcHQgdGhlIGhhaXIgb2YgdHJ5aW5nIHRvIGxpbmsgYW4gWCBwcm9ncmFtIQorICBmb3IgYWNfZXh0ZW5zaW9uIGluIGEgc28gc2wgZHlsaWIgZGxsOyBkbworICAgIGlmIHRlc3QgLXIgJGFjX2Rpci9saWJYdC4kYWNfZXh0ZW5zaW9uOyB0aGVuCisgICAgICBhY194X2xpYnJhcmllcz0kYWNfZGlyCisgICAgICBicmVhayAyCisgICAgZmkKKyAgZG9uZQorZG9uZQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpICMgJGFjX3hfbGlicmFyaWVzID0gbm8KKworaWYgdGVzdCAiJGFjX3hfaW5jbHVkZXMiID0gbm8gfHwgdGVzdCAiJGFjX3hfbGlicmFyaWVzIiA9IG5vOyB0aGVuCisgICMgRGlkbid0IGZpbmQgWCBhbnl3aGVyZS4gIENhY2hlIHRoZSBrbm93biBhYnNlbmNlIG9mIFguCisgIGFjX2N2X2hhdmVfeD0iaGF2ZV94PW5vIgorZWxzZQorICAjIFJlY29yZCB3aGVyZSB3ZSBmb3VuZCBYIGZvciB0aGUgY2FjaGUuCisgIGFjX2N2X2hhdmVfeD0iaGF2ZV94PXllcyBcCisJICAgICAgICBhY194X2luY2x1ZGVzPSRhY194X2luY2x1ZGVzIGFjX3hfbGlicmFyaWVzPSRhY194X2xpYnJhcmllcyIKK2ZpCitmaQorCisgIGZpCisgIGV2YWwgIiRhY19jdl9oYXZlX3giCitmaSAjICR3aXRoX3ggIT0gbm8KKworaWYgdGVzdCAiJGhhdmVfeCIgIT0geWVzOyB0aGVuCisgIGVjaG8gIiRhc19tZTo5MzQ1OiByZXN1bHQ6ICRoYXZlX3giID4mNQorZWNobyAiJHtFQ0hPX1R9JGhhdmVfeCIgPiY2CisgIG5vX3g9eWVzCitlbHNlCisgICMgSWYgZWFjaCBvZiB0aGUgdmFsdWVzIHdhcyBvbiB0aGUgY29tbWFuZCBsaW5lLCBpdCBvdmVycmlkZXMgZWFjaCBndWVzcy4KKyAgdGVzdCAieCR4X2luY2x1ZGVzIiA9IHhOT05FICYmIHhfaW5jbHVkZXM9JGFjX3hfaW5jbHVkZXMKKyAgdGVzdCAieCR4X2xpYnJhcmllcyIgPSB4Tk9ORSAmJiB4X2xpYnJhcmllcz0kYWNfeF9saWJyYXJpZXMKKyAgIyBVcGRhdGUgdGhlIGNhY2hlIHZhbHVlIHRvIHJlZmxlY3QgdGhlIGNvbW1hbmQgbGluZSB2YWx1ZXMuCisgIGFjX2N2X2hhdmVfeD0iaGF2ZV94PXllcyBcCisJCWFjX3hfaW5jbHVkZXM9JHhfaW5jbHVkZXMgYWNfeF9saWJyYXJpZXM9JHhfbGlicmFyaWVzIgorICBlY2hvICIkYXNfbWU6OTM1NTogcmVzdWx0OiBsaWJyYXJpZXMgJHhfbGlicmFyaWVzLCBoZWFkZXJzICR4X2luY2x1ZGVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfWxpYnJhcmllcyAkeF9saWJyYXJpZXMsIGhlYWRlcnMgJHhfaW5jbHVkZXMiID4mNgorZmkKKworaWYgdGVzdCAiJG5vX3giID0geWVzOyB0aGVuCisgICMgTm90IGFsbCBwcm9ncmFtcyBtYXkgdXNlIHRoaXMgc3ltYm9sLCBidXQgaXQgZG9lcyBub3QgaHVydCB0byBkZWZpbmUgaXQuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKK0VPRgorCisgIFhfQ0ZMQUdTPSBYX1BSRV9MSUJTPSBYX0xJQlM9IFhfRVhUUkFfTElCUz0KK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJHhfaW5jbHVkZXMiOyB0aGVuCisgICAgWF9DRkxBR1M9IiRYX0NGTEFHUyAtSSR4X2luY2x1ZGVzIgorICBmaQorCisgICMgSXQgd291bGQgYWxzbyBiZSBuaWNlIHRvIGRvIHRoaXMgZm9yIGFsbCAtTCBvcHRpb25zLCBub3QganVzdCB0aGlzIG9uZS4KKyAgaWYgdGVzdCAtbiAiJHhfbGlicmFyaWVzIjsgdGhlbgorICAgIFhfTElCUz0iJFhfTElCUyAtTCR4X2xpYnJhcmllcyIKKyAgICAjIEZvciBTb2xhcmlzOyBzb21lIHZlcnNpb25zIG9mIFN1biBDQyByZXF1aXJlIGEgc3BhY2UgYWZ0ZXIgLVIgYW5kCisgICAgIyBvdGhlcnMgcmVxdWlyZSBubyBzcGFjZS4gIFdvcmRzIGFyZSBub3Qgc3VmZmljaWVudCAuIC4gLiAuCisgICAgY2FzZSBgKHVuYW1lIC1zcikgMj4vZGV2L251bGxgIGluCisgICAgIlN1bk9TIDUiKikKKyAgICAgIGVjaG8gIiRhc19tZTo5Mzc5OiBjaGVja2luZyB3aGV0aGVyIC1SIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgLVIgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLi4uICRFQ0hPX0MiID4mNgorICAgICAgYWNfeHNhdmVfTElCUz0kTElCUzsgTElCUz0iJExJQlMgLVIkeF9saWJyYXJpZXMiCisgICAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDkzODMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTM5NTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTM5ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk0MDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NDA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfUl9ub3NwYWNlPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19SX25vc3BhY2U9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICBpZiB0ZXN0ICRhY19SX25vc3BhY2UgPSB5ZXM7IHRoZW4KKwllY2hvICIkYXNfbWU6OTQxNDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CisJWF9MSUJTPSIkWF9MSUJTIC1SJHhfbGlicmFyaWVzIgorICAgICAgZWxzZQorCUxJQlM9IiRhY194c2F2ZV9MSUJTIC1SICR4X2xpYnJhcmllcyIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk0MjAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTQzMjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTQzNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk0Mzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NDQxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfUl9zcGFjZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfUl9zcGFjZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlpZiB0ZXN0ICRhY19SX3NwYWNlID0geWVzOyB0aGVuCisJICBlY2hvICIkYXNfbWU6OTQ1MTogcmVzdWx0OiB5ZXMiID4mNQorZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKKwkgIFhfTElCUz0iJFhfTElCUyAtUiAkeF9saWJyYXJpZXMiCisJZWxzZQorCSAgZWNobyAiJGFzX21lOjk0NTU6IHJlc3VsdDogbmVpdGhlciB3b3JrcyIgPiY1CitlY2hvICIke0VDSE9fVH1uZWl0aGVyIHdvcmtzIiA+JjYKKwlmaQorICAgICAgZmkKKyAgICAgIExJQlM9JGFjX3hzYXZlX0xJQlMKKyAgICBlc2FjCisgIGZpCisKKyAgIyBDaGVjayBmb3Igc3lzdGVtLWRlcGVuZGVudCBsaWJyYXJpZXMgWCBwcm9ncmFtcyBtdXN0IGxpbmsgd2l0aC4KKyAgIyBEbyB0aGlzIGJlZm9yZSBjaGVja2luZyBmb3IgdGhlIHN5c3RlbS1pbmRlcGVuZGVudCBSNiBsaWJyYXJpZXMKKyAgIyAoLWxJQ0UpLCBzaW5jZSB3ZSBtYXkgbmVlZCAtbHNvY2tldCBvciB3aGF0ZXZlciBmb3IgWCBsaW5raW5nLgorCisgIGlmIHRlc3QgIiRJU0MiID0geWVzOyB0aGVuCisgICAgWF9FWFRSQV9MSUJTPSIkWF9FWFRSQV9MSUJTIC1sbnNsX3MgLWxpbmV0IgorICBlbHNlCisgICAgIyBNYXJ0eW4gSm9obnNvbiBzYXlzIHRoaXMgaXMgbmVlZGVkIGZvciBVbHRyaXgsIGlmIHRoZSBYCisgICAgIyBsaWJyYXJpZXMgd2VyZSBidWlsdCB3aXRoIERFQ25ldCBzdXBwb3J0LiAgQW5kIEthcmwgQmVycnkgc2F5cworICAgICMgdGhlIEFscGhhIG5lZWRzIGRuZXRfc3R1YiAoZG5ldCBkb2VzIG5vdCBleGlzdCkuCisgICAgYWNfeHNhdmVfTElCUz0iJExJQlMiOyBMSUJTPSIkTElCUyAkWF9MSUJTIC1sWDExIgorICAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTQ3NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgWE9wZW5EaXNwbGF5ICgpOworaW50CittYWluICgpCit7CitYT3BlbkRpc3BsYXkgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NDk0OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NDk3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTUwMDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk1MDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2VjaG8gIiRhc19tZTo5NTA5OiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfZG5ldF9kbmV0X250b2Erc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkbmV0ICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTUxNyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZG5ldF9udG9hICgpOworaW50CittYWluICgpCit7CitkbmV0X250b2EgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NTM2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NTM5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTU0MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk1NDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfZG5ldF9kbmV0X250b2E9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9kbmV0X2RuZXRfbnRvYT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6OTU1NjogcmVzdWx0OiAkYWNfY3ZfbGliX2RuZXRfZG5ldF9udG9hIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZG5ldF9kbmV0X250b2EiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2RuZXRfZG5ldF9udG9hID0geWVzOyB0aGVuCisgIFhfRVhUUkFfTElCUz0iJFhfRVhUUkFfTElCUyAtbGRuZXQiCitmaQorCisgICAgaWYgdGVzdCAkYWNfY3ZfbGliX2RuZXRfZG5ldF9udG9hID0gbm87IHRoZW4KKyAgICAgIGVjaG8gIiRhc19tZTo5NTYzOiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldF9zdHViIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRuZXRfbnRvYSBpbiAtbGRuZXRfc3R1Yi4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2RuZXRfc3R1Yl9kbmV0X250b2Erc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkbmV0X3N0dWIgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5NTcxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBkbmV0X250b2EgKCk7CitpbnQKK21haW4gKCkKK3sKK2RuZXRfbnRvYSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk1OTA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk1OTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5NTk2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTU5OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9kbmV0X3N0dWJfZG5ldF9udG9hPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfZG5ldF9zdHViX2RuZXRfbnRvYT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6OTYxMDogcmVzdWx0OiAkYWNfY3ZfbGliX2RuZXRfc3R1Yl9kbmV0X250b2EiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kbmV0X3N0dWJfZG5ldF9udG9hIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9kbmV0X3N0dWJfZG5ldF9udG9hID0geWVzOyB0aGVuCisgIFhfRVhUUkFfTElCUz0iJFhfRVhUUkFfTElCUyAtbGRuZXRfc3R1YiIKK2ZpCisKKyAgICBmaQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBMSUJTPSIkYWNfeHNhdmVfTElCUyIKKworICAgICMgbXNoQGNpcy51ZmwuZWR1IHNheXMgLWxuc2wgKGFuZCAtbHNvY2tldCkgYXJlIG5lZWRlZCBmb3IgaGlzIDM4Ni9BVCwKKyAgICAjIHRvIGdldCB0aGUgU3lzViB0cmFuc3BvcnQgZnVuY3Rpb25zLgorICAgICMgQ2hhZCBSLiBMYXJzb24gc2F5cyB0aGUgUHlyYW1pcyBNSVMtRVMgcnVubmluZyBEQy9PU3ggKFNWUjQpCisgICAgIyBuZWVkcyAtbG5zbC4KKyAgICAjIFRoZSBuc2wgbGlicmFyeSBwcmV2ZW50cyBwcm9ncmFtcyBmcm9tIG9wZW5pbmcgdGhlIFggZGlzcGxheQorICAgICMgb24gSXJpeCA1LjIsIGFjY29yZGluZyB0byBULkUuIERpY2tleS4KKyAgICAjIFRoZSBmdW5jdGlvbnMgZ2V0aG9zdGJ5bmFtZSwgZ2V0c2VydmJ5bmFtZSwgYW5kIGluZXRfYWRkciBhcmUKKyAgICAjIGluIC1sYnNkIG9uIEx5bnhPUyAzLjAuMS9pMzg2LCBhY2NvcmRpbmcgdG8gTGFycyBIZWNraW5nLgorICAgIGVjaG8gIiRhc19tZTo5NjI5OiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX2dldGhvc3RieW5hbWUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSA5NjM1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldGhvc3RieW5hbWUgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZ2V0aG9zdGJ5bmFtZSAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfZ2V0aG9zdGJ5bmFtZSkgfHwgZGVmaW5lZCAoX19zdHViX19fZ2V0aG9zdGJ5bmFtZSkKK2Nob2tlIG1lCisjZWxzZQorZiA9IGdldGhvc3RieW5hbWU7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTY2NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTY2OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk2NzI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5Njc1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9mdW5jX2dldGhvc3RieW5hbWU9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjk2ODU6IHJlc3VsdDogJGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lIiA+JjYKKworICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZSA9IG5vOyB0aGVuCisgICAgICBlY2hvICIkYXNfbWU6OTY4OTogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gLWxuc2wiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSBpbiAtbG5zbC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX25zbF9nZXRob3N0YnluYW1lK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sbnNsICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTY5NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZ2V0aG9zdGJ5bmFtZSAoKTsKK2ludAorbWFpbiAoKQoreworZ2V0aG9zdGJ5bmFtZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk3MTY6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk3MTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5NzIyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTcyNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9uc2xfZ2V0aG9zdGJ5bmFtZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX25zbF9nZXRob3N0YnluYW1lPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo5NzM2OiByZXN1bHQ6ICRhY19jdl9saWJfbnNsX2dldGhvc3RieW5hbWUiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9uc2xfZ2V0aG9zdGJ5bmFtZSIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfbnNsX2dldGhvc3RieW5hbWUgPSB5ZXM7IHRoZW4KKyAgWF9FWFRSQV9MSUJTPSIkWF9FWFRSQV9MSUJTIC1sbnNsIgorZmkKKworICAgICAgaWYgdGVzdCAkYWNfY3ZfbGliX25zbF9nZXRob3N0YnluYW1lID0gbm87IHRoZW4KKyAgICAgICAgZWNobyAiJGFzX21lOjk3NDM6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sYnNkIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gLWxic2QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9ic2RfZ2V0aG9zdGJ5bmFtZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGJzZCAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk3NTEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGdldGhvc3RieW5hbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK2dldGhvc3RieW5hbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5NzcwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5NzczOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTc3NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk3Nzk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfYnNkX2dldGhvc3RieW5hbWU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9ic2RfZ2V0aG9zdGJ5bmFtZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6OTc5MDogcmVzdWx0OiAkYWNfY3ZfbGliX2JzZF9nZXRob3N0YnluYW1lIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfYnNkX2dldGhvc3RieW5hbWUiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2JzZF9nZXRob3N0YnluYW1lID0geWVzOyB0aGVuCisgIFhfRVhUUkFfTElCUz0iJFhfRVhUUkFfTElCUyAtbGJzZCIKK2ZpCisKKyAgICAgIGZpCisgICAgZmkKKworICAgICMgbGllZGVyQHNreWxlci5tYXZkLmhvbmV5d2VsbC5jb20gc2F5cyB3aXRob3V0IC1sc29ja2V0LAorICAgICMgc29ja2V0L3NldHNvY2tvcHQgYW5kIG90aGVyIHJvdXRpbmVzIGFyZSB1bmRlZmluZWQgdW5kZXIgU0NPIE9EVAorICAgICMgMi4wLiAgQnV0IC1sc29ja2V0IGlzIGJyb2tlbiBvbiBJUklYIDUuMiAoYW5kIGlzIG5vdCBuZWNlc3NhcnkKKyAgICAjIG9uIGxhdGVyIHZlcnNpb25zKSwgc2F5cyBTaW1vbiBMZWluZW46IGl0IGNvbnRhaW5zIGdldGhvc3RieSoKKyAgICAjIHZhcmlhbnRzIHRoYXQgZG9uJ3QgdXNlIHRoZSBuYW1lc2VydmVyIChvciBzb21ldGhpbmcpLiAgLWxzb2NrZXQKKyAgICAjIG11c3QgYmUgZ2l2ZW4gYmVmb3JlIC1sbnNsIGlmIGJvdGggYXJlIG5lZWRlZC4gIFdlIGFzc3VtZSB0aGF0CisgICAgIyBpZiBjb25uZWN0IG5lZWRzIC1sbnNsLCBzbyBkb2VzIGdldGhvc3RieW5hbWUuCisgICAgZWNobyAiJGFzX21lOjk4MDY6IGNoZWNraW5nIGZvciBjb25uZWN0IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGNvbm5lY3QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2Z1bmNfY29ubmVjdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk4MTIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY29ubmVjdCAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBjb25uZWN0ICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9jb25uZWN0KSB8fCBkZWZpbmVkIChfX3N0dWJfX19jb25uZWN0KQorY2hva2UgbWUKKyNlbHNlCitmID0gY29ubmVjdDsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZTo5ODQzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5ODQ2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTg0OTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4NTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX2Nvbm5lY3Q9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfY29ubmVjdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6OTg2MjogcmVzdWx0OiAkYWNfY3ZfZnVuY19jb25uZWN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX2Nvbm5lY3QiID4mNgorCisgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19jb25uZWN0ID0gbm87IHRoZW4KKyAgICAgIGVjaG8gIiRhc19tZTo5ODY2OiBjaGVja2luZyBmb3IgY29ubmVjdCBpbiAtbHNvY2tldCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBjb25uZWN0IGluIC1sc29ja2V0Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9saWJfc29ja2V0X2Nvbm5lY3Qrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxzb2NrZXQgJFhfRVhUUkFfTElCUyAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTg3NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgY29ubmVjdCAoKTsKK2ludAorbWFpbiAoKQoreworY29ubmVjdCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjk4OTM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjk4OTY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTo5ODk5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTkwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9zb2NrZXRfY29ubmVjdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX3NvY2tldF9jb25uZWN0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZTo5OTEzOiByZXN1bHQ6ICRhY19jdl9saWJfc29ja2V0X2Nvbm5lY3QiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9zb2NrZXRfY29ubmVjdCIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfc29ja2V0X2Nvbm5lY3QgPSB5ZXM7IHRoZW4KKyAgWF9FWFRSQV9MSUJTPSItbHNvY2tldCAkWF9FWFRSQV9MSUJTIgorZmkKKworICAgIGZpCisKKyAgICAjIEd1aWxsZXJtbyBHb21leiBzYXlzIC1scG9zaXggaXMgbmVjZXNzYXJ5IG9uIEEvVVguCisgICAgZWNobyAiJGFzX21lOjk5MjI6IGNoZWNraW5nIGZvciByZW1vdmUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcmVtb3ZlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX3JlbW92ZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDk5MjggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgcmVtb3ZlICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIHJlbW92ZSAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfcmVtb3ZlKSB8fCBkZWZpbmVkIChfX3N0dWJfX19yZW1vdmUpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSByZW1vdmU7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6OTk1OTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6OTk2MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjk5NjU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTo5OTY4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19yZW1vdmU9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfcmVtb3ZlPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTo5OTc4OiByZXN1bHQ6ICRhY19jdl9mdW5jX3JlbW92ZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19yZW1vdmUiID4mNgorCisgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19yZW1vdmUgPSBubzsgdGhlbgorICAgICAgZWNobyAiJGFzX21lOjk5ODI6IGNoZWNraW5nIGZvciByZW1vdmUgaW4gLWxwb3NpeCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciByZW1vdmUgaW4gLWxwb3NpeC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX3Bvc2l4X3JlbW92ZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHBvc2l4ICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgOTk5MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgcmVtb3ZlICgpOworaW50CittYWluICgpCit7CityZW1vdmUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDAwOTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwMTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDAxNTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMDE4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX3Bvc2l4X3JlbW92ZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX3Bvc2l4X3JlbW92ZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTAwMjk6IHJlc3VsdDogJGFjX2N2X2xpYl9wb3NpeF9yZW1vdmUiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9wb3NpeF9yZW1vdmUiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX3Bvc2l4X3JlbW92ZSA9IHllczsgdGhlbgorICBYX0VYVFJBX0xJQlM9IiRYX0VYVFJBX0xJQlMgLWxwb3NpeCIKK2ZpCisKKyAgICBmaQorCisgICAgIyBCU0RJIEJTRC9PUyAyLjEgbmVlZHMgLWxpcGMgZm9yIFhPcGVuRGlzcGxheS4KKyAgICBlY2hvICIkYXNfbWU6MTAwMzg6IGNoZWNraW5nIGZvciBzaG1hdCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzaG1hdC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19zaG1hdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMDQ0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHNobWF0ICgpOyBiZWxvdy4gICovCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIHNobWF0ICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9zaG1hdCkgfHwgZGVmaW5lZCAoX19zdHViX19fc2htYXQpCitjaG9rZSBtZQorI2Vsc2UKK2YgPSBzaG1hdDsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDA3NTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAwNzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDA4MTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMDg0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19zaG1hdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19zaG1hdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTAwOTQ6IHJlc3VsdDogJGFjX2N2X2Z1bmNfc2htYXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfc2htYXQiID4mNgorCisgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zaG1hdCA9IG5vOyB0aGVuCisgICAgICBlY2hvICIkYXNfbWU6MTAwOTg6IGNoZWNraW5nIGZvciBzaG1hdCBpbiAtbGlwYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzaG1hdCBpbiAtbGlwYy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2lwY19zaG1hdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGlwYyAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEwMTA2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBzaG1hdCAoKTsKK2ludAorbWFpbiAoKQoreworc2htYXQgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDEyNTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAxMjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDEzMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwMTM0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2lwY19zaG1hdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2lwY19zaG1hdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTAxNDU6IHJlc3VsdDogJGFjX2N2X2xpYl9pcGNfc2htYXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9pcGNfc2htYXQiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2lwY19zaG1hdCA9IHllczsgdGhlbgorICBYX0VYVFJBX0xJQlM9IiRYX0VYVFJBX0xJQlMgLWxpcGMiCitmaQorCisgICAgZmkKKyAgZmkKKworICAjIENoZWNrIGZvciBsaWJyYXJpZXMgdGhhdCBYMTFSNiBYdC9YYXcgcHJvZ3JhbXMgbmVlZC4KKyAgYWNfc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIHRlc3QgLW4gIiR4X2xpYnJhcmllcyIgJiYgTERGTEFHUz0iJExERkxBR1MgLUwkeF9saWJyYXJpZXMiCisgICMgU00gbmVlZHMgSUNFIHRvIChkeW5hbWljYWxseSkgbGluayB1bmRlciBTdW5PUyA0LnggKHNvIHdlIGhhdmUgdG8KKyAgIyBjaGVjayBmb3IgSUNFIGZpcnN0KSwgYnV0IHdlIG11c3QgbGluayBpbiB0aGUgb3JkZXIgLWxTTSAtbElDRSBvcgorICAjIHdlIGdldCB1bmRlZmluZWQgc3ltYm9scy4gIFNvIGFzc3VtZSB3ZSBoYXZlIFNNIGlmIHdlIGhhdmUgSUNFLgorICAjIFRoZXNlIGhhdmUgdG8gYmUgbGlua2VkIHdpdGggYmVmb3JlIC1sWDExLCB1bmxpa2UgdGhlIG90aGVyCisgICMgbGlicmFyaWVzIHdlIGNoZWNrIGZvciBiZWxvdywgc28gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlLgorICAjIEpvaG4gSW50ZXJyYW50ZSwgS2FybCBCZXJyeQorICBlY2hvICIkYXNfbWU6MTAxNjM6IGNoZWNraW5nIGZvciBJY2VDb25uZWN0aW9uTnVtYmVyIGluIC1sSUNFIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEljZUNvbm5lY3Rpb25OdW1iZXIgaW4gLWxJQ0UuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9JQ0VfSWNlQ29ubmVjdGlvbk51bWJlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbElDRSAkWF9FWFRSQV9MSUJTICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDE3MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgSWNlQ29ubmVjdGlvbk51bWJlciAoKTsKK2ludAorbWFpbiAoKQoreworSWNlQ29ubmVjdGlvbk51bWJlciAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMTkwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDE5MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwMTk2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTAxOTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfSUNFX0ljZUNvbm5lY3Rpb25OdW1iZXI9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9JQ0VfSWNlQ29ubmVjdGlvbk51bWJlcj1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTAyMTA6IHJlc3VsdDogJGFjX2N2X2xpYl9JQ0VfSWNlQ29ubmVjdGlvbk51bWJlciIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX0lDRV9JY2VDb25uZWN0aW9uTnVtYmVyIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9JQ0VfSWNlQ29ubmVjdGlvbk51bWJlciA9IHllczsgdGhlbgorICBYX1BSRV9MSUJTPSIkWF9QUkVfTElCUyAtbFNNIC1sSUNFIgorZmkKKworICBMREZMQUdTPSRhY19zYXZlX0xERkxBR1MKKworZmkKKworY2ZfeF9hdGhlbmE9JHtjZl94X2F0aGVuYTotWGF3fQorCitlY2hvICIkYXNfbWU6MTAyMjI6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCBYYXcgM2QgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCBYYXcgM2QgbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKK3dpdGh2YWw9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtWGF3M2Qgb3IgLS13aXRob3V0LVhhdzNkIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9YYXczZCtzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9YYXczZCIKKworZmk7CitpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXMgOyB0aGVuCisJY2ZfeF9hdGhlbmE9WGF3M2QKKwllY2hvICIkYXNfbWU6MTAyMzM6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CitlbHNlCisJZWNobyAiJGFzX21lOjEwMjM2OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2VjaG8gIiRhc19tZToxMDI0MDogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIFhhdyAzZCB4ZnQgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCBYYXcgM2QgeGZ0IGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Cit3aXRodmFsPQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLVhhdzNkeGZ0IG9yIC0td2l0aG91dC1YYXczZHhmdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfWGF3M2R4ZnQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfWGF3M2R4ZnQiCisKK2ZpOworaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIDsgdGhlbgorCWNmX3hfYXRoZW5hPVhhdzNkeGZ0CisJZWNobyAiJGFzX21lOjEwMjUxOiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorZWxzZQorCWVjaG8gIiRhc19tZToxMDI1NDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitlY2hvICIkYXNfbWU6MTAyNTg6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIGxpbmsgd2l0aCBuZVhUIEF0aGVuYSBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIG5lWFQgQXRoZW5hIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2Cit3aXRodmFsPQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLW5lWHRhdyBvciAtLXdpdGhvdXQtbmVYdGF3IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9uZVh0YXcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfbmVYdGF3IgorCitmaTsKK2lmIHRlc3QgIiR3aXRodmFsIiA9IHllcyA7IHRoZW4KKwljZl94X2F0aGVuYT1uZVh0YXcKKwllY2hvICIkYXNfbWU6MTAyNjk6IHJlc3VsdDogeWVzIiA+JjUKK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2CitlbHNlCisJZWNobyAiJGFzX21lOjEwMjcyOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKK2VjaG8gIiRhc19tZToxMDI3NjogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gbGluayB3aXRoIEF0aGVuYS1QbHVzIGxpYnJhcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byBsaW5rIHdpdGggQXRoZW5hLVBsdXMgbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKK3dpdGh2YWw9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtWGF3UGx1cyBvciAtLXdpdGhvdXQtWGF3UGx1cyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfWGF3UGx1cytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9YYXdQbHVzIgorCitmaTsKK2lmIHRlc3QgIiR3aXRodmFsIiA9IHllcyA7IHRoZW4KKwljZl94X2F0aGVuYT1YYXdQbHVzCisJZWNobyAiJGFzX21lOjEwMjg3OiByZXN1bHQ6IHllcyIgPiY1CitlY2hvICIke0VDSE9fVH15ZXMiID4mNgorZWxzZQorCWVjaG8gIiRhc19tZToxMDI5MDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitjZl94X2F0aGVuYV9saWI9IiIKKworaWYgdGVzdCAiJFBLR19DT05GSUciICE9IG5vbmUgOyB0aGVuCisJY2ZfYXRoZW5hX2xpc3Q9CisJdGVzdCAiJGNmX3hfYXRoZW5hIiA9IFhhdyAmJiBjZl9hdGhlbmFfbGlzdD0ieGF3OCB4YXc3IHhhdzYiCisJZm9yIGNmX2F0aGVuYV9wa2cgaW4gXAorCQkkY2ZfYXRoZW5hX2xpc3QgXAorCQkke2NmX3hfYXRoZW5hfSBcCisJCSR7Y2ZfeF9hdGhlbmF9LWRldmVsIFwKKwkJbGliJHtjZl94X2F0aGVuYX0gXAorCQlsaWIke2NmX3hfYXRoZW5hfS1kZXZlbAorCWRvCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgJGNmX2F0aGVuYV9wa2c7IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZvdW5kIHBhY2thZ2UgJGNmX2F0aGVuYV9wa2ciIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDMxMDogdGVzdGluZyBmb3VuZCBwYWNrYWdlICRjZl9hdGhlbmFfcGtnIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyAkY2ZfYXRoZW5hX3BrZyAyPi9kZXYvbnVsbGAiCisJY2ZfcGtnY29uZmlnX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgICAkY2ZfYXRoZW5hX3BrZyAyPi9kZXYvbnVsbGAiCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlICRjZl9hdGhlbmFfcGtnIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTAzMTY6IHRlc3RpbmcgcGFja2FnZSAkY2ZfYXRoZW5hX3BrZyBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyAuLi4iIDE+JjUKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcGFja2FnZSAkY2ZfYXRoZW5hX3BrZyBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDMyMDogdGVzdGluZyBwYWNrYWdlICRjZl9hdGhlbmFfcGtnIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkJY2ZfeF9hdGhlbmFfbGliPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisKK2NmX3hfYXRoZW5hX0xJQlM9YGVjaG8gIkhBVkVfTElCXyRjZl94X2F0aGVuYSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwkJCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3hfYXRoZW5hX0xJQlMgMQorRU9GCisKKwlmb3IgY2ZfdHJpbV9saWIgaW4gWG11IFh0IFgxMQorCWRvCisJCWNhc2UgIiRMSUJTIiBpbgorCQkoKi1sJGNmX3RyaW1fbGliXCAqLWwkY2ZfdHJpbV9saWIqKQorCQkJTElCUz1gZWNobyAiJExJQlMgIiB8IHNlZCAtZSAncy8gIC8gL2cnIC1lICdzJS1sJyIkY2ZfdHJpbV9saWIiJyAlJScgLWUgJ3MvICQvLydgCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4udHJpbW1lZCAkTElCUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNDMxOiB0ZXN0aW5nIC4udHJpbW1lZCAkTElCUyAuLi4iIDE+JjUKKworCQkJOzsKKwkJZXNhYworCWRvbmUKKworZWNobyAiJGFzX21lOjEwNDM3OiBjaGVja2luZyBmb3IgdXNhYmxlICRjZl94X2F0aGVuYS9YbXUgcGFja2FnZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB1c2FibGUgJGNmX3hfYXRoZW5hL1htdSBwYWNrYWdlLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl94YXdfY29tcGF0K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTA0NDQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8WDExL1htdS9DaGFyU2V0Lmg+CisKK2ludAorbWFpbiAoKQoreworCitpbnQgY2hlY2sgPSBYbXVDb21wYXJlSVNPTGF0aW4xKCJiaWciLCAic21hbGwiKQorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMDQ2MDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA0NjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMDQ2NjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEwNDY5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeGF3X2NvbXBhdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfeGF3X2NvbXBhdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTA0Nzk6IHJlc3VsdDogJGNmX2N2X3hhd19jb21wYXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3hhd19jb21wYXQiID4mNgorCisJCQlpZiB0ZXN0ICIkY2ZfY3ZfeGF3X2NvbXBhdCIgPSBubworCQkJdGhlbgorCQkJCSMgd29ya2Fyb3VuZCBmb3IgYnJva2VuICIucGMiIGZpbGVzLi4uCisJCQkJY2FzZSAiJGNmX3hfYXRoZW5hX2xpYiIgaW4KKwkJCQkoKi1sWG11KikKKwkJCQkJOzsKKwkJCQkoKikKKwkJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgl3b3JrIGFyb3VuZCBicm9rZW4gcGFja2FnZSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNDkxOiB0ZXN0aW5nIHdvcmsgYXJvdW5kIGJyb2tlbiBwYWNrYWdlIC4uLiIgMT4mNQorCisJCQkJCWNmX3NhdmVfeG11PSIkTElCUyIKKwkJCQkJY2ZfZmlyc3RfbGliPWBlY2hvICIkY2Zfc2F2ZV94bXUiIHwgc2VkIC1lICdzL14gICovLycgLWUgJ3MvIC4qLy8nYAorCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSAmJiAiJFBLR19DT05GSUciIC0tZXhpc3RzIHhtdTsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZm91bmQgcGFja2FnZSB4bXUiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDQ5OTogdGVzdGluZyBmb3VuZCBwYWNrYWdlIHhtdSAuLi4iIDE+JjUKKworCWNmX3BrZ2NvbmZpZ19pbmNzPSJgJFBLR19DT05GSUcgLS1jZmxhZ3MgeG11IDI+L2Rldi9udWxsYCIKKwljZl9wa2djb25maWdfbGlicz0iYCRQS0dfQ09ORklHIC0tbGlicyAgIHhtdSAyPi9kZXYvbnVsbGAiCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIHhtdSBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNTA1OiB0ZXN0aW5nIHBhY2thZ2UgeG11IENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIC4uLiIgMT4mNQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIHhtdSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDUwOTogdGVzdGluZyBwYWNrYWdlIHhtdSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMgLi4uIiAxPiY1CisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3BrZ2NvbmZpZ19pbmNzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitjZl9hZGRfbGlicz0iJGNmX3BrZ2NvbmZpZ19saWJzIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwkJCQkJCQlMSUJTPSIkY2Zfc2F2ZV94bXUiCisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYmVmb3JlICRMSUJTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA2MDk6IHRlc3RpbmcgLi4uYmVmb3JlICRMSUJTIC4uLiIgMT4mNQorCitMSUJTPWBlY2hvICIkTElCUyIgfCBzZWQgLWUgInMvWyAJXVsgCV0qLyAvZyIgLWUgInMlJGNmX2ZpcnN0X2xpYiAlJGNmX2ZpcnN0X2xpYiAkY2ZfcGtnY29uZmlnX2xpYnMgJSIgLWUgJ3MlICAlICVnJ2AKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYWZ0ZXIgICRMSUJTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA2MTQ6IHRlc3RpbmcgLi4uYWZ0ZXIgICRMSUJTIC4uLiIgMT4mNQorCitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYmVmb3JlICRMSUJTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA2MjI6IHRlc3RpbmcgLi4uYmVmb3JlICRMSUJTIC4uLiIgMT4mNQorCitMSUJTPWBlY2hvICIkTElCUyIgfCBzZWQgLWUgInMvWyAJXVsgCV0qLyAvZyIgLWUgInMlJGNmX2ZpcnN0X2xpYiAlJGNmX2ZpcnN0X2xpYiAtbFhtdSAlIiAtZSAncyUgICUgJWcnYAordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5hZnRlciAgJExJQlMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMDYyNzogdGVzdGluZyAuLi5hZnRlciAgJExJQlMgLi4uIiAxPiY1CisKK2ZpCisKKwlmb3IgY2ZfdHJpbV9saWIgaW4gWG11IFh0IFgxMQorCWRvCisJCWNhc2UgIiRMSUJTIiBpbgorCQkoKi1sJGNmX3RyaW1fbGliXCAqLWwkY2ZfdHJpbV9saWIqKQorCQkJTElCUz1gZWNobyAiJExJQlMgIiB8IHNlZCAtZSAncy8gIC8gL2cnIC1lICdzJS1sJyIkY2ZfdHJpbV9saWIiJyAlJScgLWUgJ3MvICQvLydgCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4udHJpbW1lZCAkTElCUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNjM4OiB0ZXN0aW5nIC4udHJpbW1lZCAkTElCUyAuLi4iIDE+JjUKKworCQkJOzsKKwkJZXNhYworCWRvbmUKKworCQkJCQk7OworCQkJCWVzYWMKKwkJCWZpCisKKwkJCWJyZWFrCitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisJOgorZmkKKworCWRvbmUKK2ZpCisKK2lmIHRlc3QgLXogIiRjZl94X2F0aGVuYV9saWIiIDsgdGhlbgorCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSAmJiAiJFBLR19DT05GSUciIC0tZXhpc3RzIFhleHQ7IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZvdW5kIHBhY2thZ2UgWGV4dCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNjYzOiB0ZXN0aW5nIGZvdW5kIHBhY2thZ2UgWGV4dCAuLi4iIDE+JjUKKworCWNmX3BrZ2NvbmZpZ19pbmNzPSJgJFBLR19DT05GSUcgLS1jZmxhZ3MgWGV4dCAyPi9kZXYvbnVsbGAiCisJY2ZfcGtnY29uZmlnX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgICBYZXh0IDI+L2Rldi9udWxsYCIKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgWGV4dCBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNjY5OiB0ZXN0aW5nIHBhY2thZ2UgWGV4dCBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyAuLi4iIDE+JjUKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcGFja2FnZSBYZXh0IExJQlM6ICRjZl9wa2djb25maWdfbGlicyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwNjczOiB0ZXN0aW5nIHBhY2thZ2UgWGV4dCBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMgLi4uIiAxPiY1CisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3BrZ2NvbmZpZ19pbmNzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitjZl9hZGRfbGlicz0iJGNmX3BrZ2NvbmZpZ19saWJzIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwk6CitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisKKwllY2hvICIkYXNfbWU6MTA3NzQ6IGNoZWNraW5nIGZvciBYZXh0Q3JlYXRlRXh0ZW5zaW9uIGluIC1sWGV4dCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBYZXh0Q3JlYXRlRXh0ZW5zaW9uIGluIC1sWGV4dC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX1hleHRfWGV4dENyZWF0ZUV4dGVuc2lvbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbFhleHQgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMDc4MiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgWGV4dENyZWF0ZUV4dGVuc2lvbiAoKTsKK2ludAorbWFpbiAoKQoreworWGV4dENyZWF0ZUV4dGVuc2lvbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwODAxOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMDgwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEwODA3OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTA4MTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfWGV4dF9YZXh0Q3JlYXRlRXh0ZW5zaW9uPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9saWJfWGV4dF9YZXh0Q3JlYXRlRXh0ZW5zaW9uPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK2VjaG8gIiRhc19tZToxMDgyMTogcmVzdWx0OiAkYWNfY3ZfbGliX1hleHRfWGV4dENyZWF0ZUV4dGVuc2lvbiIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX1hleHRfWGV4dENyZWF0ZUV4dGVuc2lvbiIgPiY2CitpZiB0ZXN0ICRhY19jdl9saWJfWGV4dF9YZXh0Q3JlYXRlRXh0ZW5zaW9uID0geWVzOyB0aGVuCisKK2NmX2FkZF9saWJzPSItbFhleHQiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworZmkKKworZmkKKworIyBPU1ggaXMgc2NoaXpvaWQgYWJvdXQgd2hvIG93bnMgL3Vzci9YMTEgKG9sZCkgdmVyc3VzIC9vcHQvWDExIChuZXcpLCBhbmQgKGFuZAorIyBpbiBzb21lIGNhc2VzIGhhcyBpbnN0YWxsZWQgZHVtbXkgZmlsZXMgaW4gdGhlIGZvcm1lciwgb3RoZXIgY2FzZXMgcmVwbGFjZWQKKyMgaXQgd2l0aCBhIGxpbmsgdG8gdGhlIG5ldyBsb2NhdGlvbikuICBUaGlzIGNvbXBsaWNhdGVzIHRoZSBjb25maWd1cmUgc2NyaXB0LgorIyBDaGVjayBmb3IgdGhhdCBwaXRmYWxsLCBhbmQgcmVjb3ZlciB1c2luZyBwa2ctY29uZmlnCisjCisjIElmIG5vbmUgb2YgdGhlc2UgYXJlIHNldCwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYWxtb3N0IGNlcnRhaW5seSBicm9rZW4uCitpZiB0ZXN0IC16ICIke1hfQ0ZMQUdTfSR7WF9QUkVfTElCU30ke1hfTElCU30ke1hfRVhUUkFfTElCU30iCit0aGVuCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgeDExOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmb3VuZCBwYWNrYWdlIHgxMSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwODU3OiB0ZXN0aW5nIGZvdW5kIHBhY2thZ2UgeDExIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyB4MTEgMj4vZGV2L251bGxgIgorCWNmX3BrZ2NvbmZpZ19saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICAgeDExIDI+L2Rldi9udWxsYCIKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeDExIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA4NjM6IHRlc3RpbmcgcGFja2FnZSB4MTEgQ0ZMQUdTOiAkY2ZfcGtnY29uZmlnX2luY3MgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeDExIExJQlM6ICRjZl9wa2djb25maWdfbGlicyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwODY3OiB0ZXN0aW5nIHBhY2thZ2UgeDExIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCToKK2Vsc2UKKwljZl9wa2djb25maWdfaW5jcz0KKwljZl9wa2djb25maWdfbGlicz0KKwl7IGVjaG8gIiRhc19tZToxMDk2NzogV0FSTklORzogdW5hYmxlIHRvIGZpbmQgWDExIGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bmFibGUgdG8gZmluZCBYMTEgbGlicmFyeSIgPiYyO30KK2ZpCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgaWNlOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmb3VuZCBwYWNrYWdlIGljZSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwOTc0OiB0ZXN0aW5nIGZvdW5kIHBhY2thZ2UgaWNlIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyBpY2UgMj4vZGV2L251bGxgIgorCWNmX3BrZ2NvbmZpZ19saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICAgaWNlIDI+L2Rldi9udWxsYCIKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgaWNlIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTA5ODA6IHRlc3RpbmcgcGFja2FnZSBpY2UgQ0ZMQUdTOiAkY2ZfcGtnY29uZmlnX2luY3MgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgaWNlIExJQlM6ICRjZl9wa2djb25maWdfbGlicyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEwOTg0OiB0ZXN0aW5nIHBhY2thZ2UgaWNlIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCToKK2Vsc2UKKwljZl9wa2djb25maWdfaW5jcz0KKwljZl9wa2djb25maWdfbGlicz0KKwl7IGVjaG8gIiRhc19tZToxMTA4NDogV0FSTklORzogdW5hYmxlIHRvIGZpbmQgSUNFIGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bmFibGUgdG8gZmluZCBJQ0UgbGlicmFyeSIgPiYyO30KK2ZpCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgc207IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZvdW5kIHBhY2thZ2Ugc20iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTA5MTogdGVzdGluZyBmb3VuZCBwYWNrYWdlIHNtIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyBzbSAyPi9kZXYvbnVsbGAiCisJY2ZfcGtnY29uZmlnX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgICBzbSAyPi9kZXYvbnVsbGAiCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIHNtIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTEwOTc6IHRlc3RpbmcgcGFja2FnZSBzbSBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyAuLi4iIDE+JjUKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcGFja2FnZSBzbSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTEwMTogdGVzdGluZyBwYWNrYWdlIHNtIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCToKK2Vsc2UKKwljZl9wa2djb25maWdfaW5jcz0KKwljZl9wa2djb25maWdfbGlicz0KKwl7IGVjaG8gIiRhc19tZToxMTIwMTogV0FSTklORzogdW5hYmxlIHRvIGZpbmQgU00gbGlicmFyeSIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVuYWJsZSB0byBmaW5kIFNNIGxpYnJhcnkiID4mMjt9CitmaQorCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSAmJiAiJFBLR19DT05GSUciIC0tZXhpc3RzIHh0OyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmb3VuZCBwYWNrYWdlIHh0IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTEyMDg6IHRlc3RpbmcgZm91bmQgcGFja2FnZSB4dCAuLi4iIDE+JjUKKworCWNmX3BrZ2NvbmZpZ19pbmNzPSJgJFBLR19DT05GSUcgLS1jZmxhZ3MgeHQgMj4vZGV2L251bGxgIgorCWNmX3BrZ2NvbmZpZ19saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICAgeHQgMj4vZGV2L251bGxgIgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcGFja2FnZSB4dCBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExMjE0OiB0ZXN0aW5nIHBhY2thZ2UgeHQgQ0ZMQUdTOiAkY2ZfcGtnY29uZmlnX2luY3MgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeHQgTElCUzogJGNmX3BrZ2NvbmZpZ19saWJzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTEyMTg6IHRlc3RpbmcgcGFja2FnZSB4dCBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMgLi4uIiAxPiY1CisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3BrZ2NvbmZpZ19pbmNzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitjZl9hZGRfbGlicz0iJGNmX3BrZ2NvbmZpZ19saWJzIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKKwk6CitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisJeyBlY2hvICIkYXNfbWU6MTEzMTg6IFdBUk5JTkc6IHVuYWJsZSB0byBmaW5kIFh0IGxpYnJhcnkiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bmFibGUgdG8gZmluZCBYdCBsaWJyYXJ5IiA+JjI7fQorZmkKKworZmkKKworY2ZfaGF2ZV9YX0xJQlM9bm8KKworaWYgdGVzdCAiJFBLR19DT05GSUciICE9IG5vbmUgJiYgIiRQS0dfQ09ORklHIiAtLWV4aXN0cyB4dDsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZm91bmQgcGFja2FnZSB4dCIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExMzI5OiB0ZXN0aW5nIGZvdW5kIHBhY2thZ2UgeHQgLi4uIiAxPiY1CisKKwljZl9wa2djb25maWdfaW5jcz0iYCRQS0dfQ09ORklHIC0tY2ZsYWdzIHh0IDI+L2Rldi9udWxsYCIKKwljZl9wa2djb25maWdfbGlicz0iYCRQS0dfQ09ORklHIC0tbGlicyAgIHh0IDI+L2Rldi9udWxsYCIKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeHQgQ0ZMQUdTOiAkY2ZfcGtnY29uZmlnX2luY3MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTMzNTogdGVzdGluZyBwYWNrYWdlIHh0IENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIC4uLiIgMT4mNQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIHh0IExJQlM6ICRjZl9wa2djb25maWdfbGlicyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExMzM5OiB0ZXN0aW5nIHBhY2thZ2UgeHQgTElCUzogJGNmX3BrZ2NvbmZpZ19saWJzIC4uLiIgMT4mNQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl9wa2djb25maWdfaW5jcworZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCisJRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorZmkKKworY2ZfYWRkX2xpYnM9IiRjZl9wa2djb25maWdfbGlicyIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCisJY2FzZSAieCRMSUJTIiBpbgorCSgqLWxYMTEqKQorCQk7OworCSgqKQorIyB3ZSBoYXZlIGFuICJ4dCIgcGFja2FnZSwgYnV0IGl0IG1heSBvbWl0IFh0J3MgZGVwZW5kZW5jeSBvbiBYMTEKK2VjaG8gIiRhc19tZToxMTQ0MDogY2hlY2tpbmcgZm9yIHVzYWJsZSBYIGRlcGVuZGVuY3kiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdXNhYmxlIFggZGVwZW5kZW5jeS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfeHRfeDExX2NvbXBhdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExNDQ3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKK2ludAorbWFpbiAoKQoreworCisJaW50IHJjMSA9IFhEcmF3TGluZSgoRGlzcGxheSopIDAsIChEcmF3YWJsZSkgMCwgKEdDKSAwLCAwLCAwLCAwLCAwKTsKKwlpbnQgcmMyID0gWENsZWFyV2luZG93KChEaXNwbGF5KikgMCwgKFdpbmRvdykgMCk7CisJaW50IHJjMyA9IFhNb3ZlV2luZG93KChEaXNwbGF5KikgMCwgKFdpbmRvdykgMCwgMCwgMCk7CisJaW50IHJjNCA9IFhNb3ZlUmVzaXplV2luZG93KChEaXNwbGF5KikwLCAoV2luZG93KTAsIDAsIDAsIDAsIDApOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMTQ2NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE0Njk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMTQ3MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjExNDc1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfeHRfeDExX2NvbXBhdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfeHRfeDExX2NvbXBhdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTE0ODU6IHJlc3VsdDogJGNmX2N2X3h0X3gxMV9jb21wYXQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3h0X3gxMV9jb21wYXQiID4mNgorCQlpZiB0ZXN0ICIkY2ZfY3ZfeHRfeDExX2NvbXBhdCIgPSBubworCQl0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXdvcmsgYXJvdW5kIGJyb2tlbiBYMTEgZGVwZW5kZW5jeSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExNDkxOiB0ZXN0aW5nIHdvcmsgYXJvdW5kIGJyb2tlbiBYMTEgZGVwZW5kZW5jeSAuLi4iIDE+JjUKKworCQkJIyAyMDEwLzExLzE5IC0gZ29vZCBlbm91Z2ggdW50aWwgYSB3b3JraW5nIFh0IG9uIFhjYiBpcyBkZWxpdmVyZWQuCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgeDExOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglmb3VuZCBwYWNrYWdlIHgxMSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExNDk4OiB0ZXN0aW5nIGZvdW5kIHBhY2thZ2UgeDExIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyB4MTEgMj4vZGV2L251bGxgIgorCWNmX3BrZ2NvbmZpZ19saWJzPSJgJFBLR19DT05GSUcgLS1saWJzICAgeDExIDI+L2Rldi9udWxsYCIKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeDExIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTE1MDQ6IHRlc3RpbmcgcGFja2FnZSB4MTEgQ0ZMQUdTOiAkY2ZfcGtnY29uZmlnX2luY3MgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXBhY2thZ2UgeDExIExJQlM6ICRjZl9wa2djb25maWdfbGlicyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExNTA4OiB0ZXN0aW5nIHBhY2thZ2UgeDExIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCToKK2Vsc2UKKwljZl9wa2djb25maWdfaW5jcz0KKwljZl9wa2djb25maWdfbGlicz0KKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5iZWZvcmUgJExJQlMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTYxMTogdGVzdGluZyAuLi5iZWZvcmUgJExJQlMgLi4uIiAxPiY1CisKK0xJQlM9YGVjaG8gIiRMSUJTIiB8IHNlZCAtZSAicy9bIAldWyAJXSovIC9nIiAtZSAicyUtbFh0ICUtbFh0IC1sWDExICUiIC1lICdzJSAgJSAlZydgCit0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmFmdGVyICAkTElCUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExNjE2OiB0ZXN0aW5nIC4uLmFmdGVyICAkTElCUyAuLi4iIDE+JjUKKworZmkKKworCQlmaQorCQk7OworCWVzYWMKKworZWNobyAiJGFzX21lOjExNjI0OiBjaGVja2luZyBmb3IgdXNhYmxlIFggVG9vbGtpdCBwYWNrYWdlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHVzYWJsZSBYIFRvb2xraXQgcGFja2FnZS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfeHRfaWNlX2NvbXBhdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDExNjMxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPFgxMS9TaGVsbC5oPgorCitpbnQKK21haW4gKCkKK3sKK2ludCBudW0gPSBJY2VDb25uZWN0aW9uTnVtYmVyKDApCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNjQ2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMTY0OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjExNjUyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTE2NTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl94dF9pY2VfY29tcGF0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl94dF9pY2VfY29tcGF0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMTY2NTogcmVzdWx0OiAkY2ZfY3ZfeHRfaWNlX2NvbXBhdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfeHRfaWNlX2NvbXBhdCIgPiY2CisKKwlpZiB0ZXN0ICIkY2ZfY3ZfeHRfaWNlX2NvbXBhdCIgPSBubworCXRoZW4KKwkJIyB3b3JrYXJvdW5kIGZvciBicm9rZW4gIi5wYyIgZmlsZXMgdXNlZCBmb3IgWCBUb29sa2l0LgorCQljYXNlICJ4JFhfUFJFX0xJQlMiIGluCisJCSgqLWxJQ0UqKQorCQkJY2FzZSAieCRMSUJTIiBpbgorCQkJKCotbElDRSopCisJCQkJOzsKKwkJCSgqKQorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJd29yayBhcm91bmQgYnJva2VuIElDRSBkZXBlbmRlbmN5IiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTE2Nzk6IHRlc3Rpbmcgd29yayBhcm91bmQgYnJva2VuIElDRSBkZXBlbmRlbmN5IC4uLiIgMT4mNQorCitpZiB0ZXN0ICIkUEtHX0NPTkZJRyIgIT0gbm9uZSAmJiAiJFBLR19DT05GSUciIC0tZXhpc3RzIGljZTsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZm91bmQgcGFja2FnZSBpY2UiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTY4NDogdGVzdGluZyBmb3VuZCBwYWNrYWdlIGljZSAuLi4iIDE+JjUKKworCWNmX3BrZ2NvbmZpZ19pbmNzPSJgJFBLR19DT05GSUcgLS1jZmxhZ3MgaWNlIDI+L2Rldi9udWxsYCIKKwljZl9wa2djb25maWdfbGlicz0iYCRQS0dfQ09ORklHIC0tbGlicyAgIGljZSAyPi9kZXYvbnVsbGAiCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIGljZSBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjExNjkwOiB0ZXN0aW5nIHBhY2thZ2UgaWNlIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIC4uLiIgMT4mNQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIGljZSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTY5NDogdGVzdGluZyBwYWNrYWdlIGljZSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMgLi4uIiAxPiY1CisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX3BrZ2NvbmZpZ19pbmNzCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitjZl9hZGRfbGlicz0iJGNmX3BrZ2NvbmZpZ19saWJzIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2lmIHRlc3QgIiRQS0dfQ09ORklHIiAhPSBub25lICYmICIkUEtHX0NPTkZJRyIgLS1leGlzdHMgc207IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZvdW5kIHBhY2thZ2Ugc20iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTc5MzogdGVzdGluZyBmb3VuZCBwYWNrYWdlIHNtIC4uLiIgMT4mNQorCisJY2ZfcGtnY29uZmlnX2luY3M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyBzbSAyPi9kZXYvbnVsbGAiCisJY2ZfcGtnY29uZmlnX2xpYnM9ImAkUEtHX0NPTkZJRyAtLWxpYnMgICBzbSAyPi9kZXYvbnVsbGAiCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglwYWNrYWdlIHNtIENGTEFHUzogJGNmX3BrZ2NvbmZpZ19pbmNzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTE3OTk6IHRlc3RpbmcgcGFja2FnZSBzbSBDRkxBR1M6ICRjZl9wa2djb25maWdfaW5jcyAuLi4iIDE+JjUKKworCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcGFja2FnZSBzbSBMSUJTOiAkY2ZfcGtnY29uZmlnX2xpYnMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTgwMzogdGVzdGluZyBwYWNrYWdlIHNtIExJQlM6ICRjZl9wa2djb25maWdfbGlicyAuLi4iIDE+JjUKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkY2ZfcGtnY29uZmlnX2luY3MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2NmX2FkZF9saWJzPSIkY2ZfcGtnY29uZmlnX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCToKK2Vsc2UKKwljZl9wa2djb25maWdfaW5jcz0KKwljZl9wa2djb25maWdfbGlicz0KKwk6CitmaQorCitlbHNlCisJY2ZfcGtnY29uZmlnX2luY3M9CisJY2ZfcGtnY29uZmlnX2xpYnM9CisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYmVmb3JlICRMSUJTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTE5MTI6IHRlc3RpbmcgLi4uYmVmb3JlICRMSUJTIC4uLiIgMT4mNQorCitMSUJTPWBlY2hvICIkTElCUyIgfCBzZWQgLWUgInMvWyAJXVsgCV0qLyAvZyIgLWUgInMlLWxYdCAlLWxYdCAkWF9QUkVfTElCUyAlIiAtZSAncyUgICUgJWcnYAordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5hZnRlciAgJExJQlMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMTkxNzogdGVzdGluZyAuLi5hZnRlciAgJExJQlMgLi4uIiAxPiY1CisKK2ZpCisKKwkJCQk7OworCQkJZXNhYworCQkJOzsKKwkJZXNhYworCWZpCisKKwljZl9oYXZlX1hfTElCUz15ZXMKKworZWxzZQorCWNmX3BrZ2NvbmZpZ19pbmNzPQorCWNmX3BrZ2NvbmZpZ19saWJzPQorCisJTERGTEFHUz0iJFhfTElCUyAkTERGTEFHUyIKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgljaGVja2luZyBhZGRpdGlvbnMgdG8gQ0ZMQUdTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTE5Mzc6IHRlc3RpbmcgY2hlY2tpbmcgYWRkaXRpb25zIHRvIENGTEFHUyAuLi4iIDE+JjUKKworY2ZfY2hlY2tfY2ZsYWdzPSIkQ0ZMQUdTIgorY2ZfY2hlY2tfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKKworY2ZfZml4X2NwcGZsYWdzPW5vCitjZl9uZXdfY2ZsYWdzPQorY2ZfbmV3X2NwcGZsYWdzPQorY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQorCitmb3IgY2ZfYWRkX2NmbGFncyBpbiAkWF9DRkxBR1MKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTIwMDg6IHRlc3RpbmcgYWRkIHRvIFwkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIC4uLiIgMT4mNQorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTIwMTY6IHRlc3RpbmcgYWRkIHRvIFwkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyAuLi4iIDE+JjUKKworCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJGNmX25ld19jcHBmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiIDsgdGhlbgorCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYWRkIHRvIFwkRVhUUkFfQ1BQRkxBR1MgJGNmX25ld19leHRyYV9jcHBmbGFncyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEyMDI0OiB0ZXN0aW5nIGFkZCB0byBcJEVYVFJBX0NQUEZMQUdTICRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgLi4uIiAxPiY1CisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCitpZiB0ZXN0ICJ4JGNmX2NoZWNrX2NmbGFncyIgIT0gIngkQ0ZMQUdTIiA7IHRoZW4KK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIwMzEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8gd29ybGQiKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMDQzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjA0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMDQ5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIwNTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJdGVzdC1jb21waWxlIGZhaWxlZC4gIFVuZG9pbmcgY2hhbmdlIHRvIFwkQ0ZMQUdTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTIwNjA6IHRlc3RpbmcgdGVzdC1jb21waWxlIGZhaWxlZC4gIFVuZG9pbmcgY2hhbmdlIHRvIFwkQ0ZMQUdTIC4uLiIgMT4mNQorCisJIGlmIHRlc3QgIngkY2ZfY2hlY2tfY3BwZmxhZ3MiICE9ICJ4JENQUEZMQUdTIiA7IHRoZW4KKwkJIHRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJYnV0IGtlZXBpbmcgY2hhbmdlIHRvIFwkQ1BQRkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjA2NTogdGVzdGluZyBidXQga2VlcGluZyBjaGFuZ2UgdG8gXCRDUFBGTEFHUyAuLi4iIDE+JjUKKworCSBmaQorCSBDRkxBR1M9IiRjZl9jaGVja19mbGFncyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisJZWNobyAiJGFzX21lOjEyMDczOiBjaGVja2luZyBmb3IgWE9wZW5EaXNwbGF5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIFhPcGVuRGlzcGxheS4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfZnVuY19YT3BlbkRpc3BsYXkrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjA3OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBYT3BlbkRpc3BsYXkgKCk7IGJlbG93LiAgKi8KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgWE9wZW5EaXNwbGF5ICgpOworY2hhciAoKmYpICgpOworCitpbnQKK21haW4gKCkKK3sKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgKF9fc3R1Yl9YT3BlbkRpc3BsYXkpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX1hPcGVuRGlzcGxheSkKK2Nob2tlIG1lCisjZWxzZQorZiA9IFhPcGVuRGlzcGxheTsgLyogd29ya2Fyb3VuZCBmb3IgSUNDIDEyLjAuMyAqLyBpZiAoZiA9PSAwKSByZXR1cm4gMTsKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjExMDogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIxMTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjExNjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyMTE5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfZnVuY19YT3BlbkRpc3BsYXk9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2Z1bmNfWE9wZW5EaXNwbGF5PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMjEyOTogcmVzdWx0OiAkYWNfY3ZfZnVuY19YT3BlbkRpc3BsYXkiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfWE9wZW5EaXNwbGF5IiA+JjYKK2lmIHRlc3QgJGFjX2N2X2Z1bmNfWE9wZW5EaXNwbGF5ID0geWVzOyB0aGVuCisgIDoKK2Vsc2UKKworCWVjaG8gIiRhc19tZToxMjEzNTogY2hlY2tpbmcgZm9yIFhPcGVuRGlzcGxheSBpbiAtbFgxMSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBYT3BlbkRpc3BsYXkgaW4gLWxYMTEuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9YMTFfWE9wZW5EaXNwbGF5K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sWDExICRYX1BSRV9MSUJTICRMSUJTICRYX0VYVFJBX0xJQlMgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyMTQzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBYT3BlbkRpc3BsYXkgKCk7CitpbnQKK21haW4gKCkKK3sKK1hPcGVuRGlzcGxheSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMTYyOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjE2NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMTY4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIxNzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfWDExX1hPcGVuRGlzcGxheT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXk9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjEyMTgyOiByZXN1bHQ6ICRhY19jdl9saWJfWDExX1hPcGVuRGlzcGxheSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXkiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXkgPSB5ZXM7IHRoZW4KKworY2ZfYWRkX2xpYnM9Ii1sWDExIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2ZpCisKK2ZpCisKKwllY2hvICIkYXNfbWU6MTIyMDY6IGNoZWNraW5nIGZvciBYdEFwcEluaXRpYWxpemUiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgWHRBcHBJbml0aWFsaXplLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9mdW5jX1h0QXBwSW5pdGlhbGl6ZStzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyMjEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKy8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIFh0QXBwSW5pdGlhbGl6ZSAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBYdEFwcEluaXRpYWxpemUgKCk7CitjaGFyICgqZikgKCk7CisKK2ludAorbWFpbiAoKQoreworLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cworICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCisgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisjaWYgZGVmaW5lZCAoX19zdHViX1h0QXBwSW5pdGlhbGl6ZSkgfHwgZGVmaW5lZCAoX19zdHViX19fWHRBcHBJbml0aWFsaXplKQorY2hva2UgbWUKKyNlbHNlCitmID0gWHRBcHBJbml0aWFsaXplOyAvKiB3b3JrYXJvdW5kIGZvciBJQ0MgMTIuMC4zICovIGlmIChmID09IDApIHJldHVybiAxOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMjQzOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjI0NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMjQ5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIyNTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9mdW5jX1h0QXBwSW5pdGlhbGl6ZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfZnVuY19YdEFwcEluaXRpYWxpemU9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEyMjYyOiByZXN1bHQ6ICRhY19jdl9mdW5jX1h0QXBwSW5pdGlhbGl6ZSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19YdEFwcEluaXRpYWxpemUiID4mNgoraWYgdGVzdCAkYWNfY3ZfZnVuY19YdEFwcEluaXRpYWxpemUgPSB5ZXM7IHRoZW4KKyAgOgorZWxzZQorCisJZWNobyAiJGFzX21lOjEyMjY4OiBjaGVja2luZyBmb3IgWHRBcHBJbml0aWFsaXplIGluIC1sWHQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgWHRBcHBJbml0aWFsaXplIGluIC1sWHQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9YdF9YdEFwcEluaXRpYWxpemUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxYdCAkWF9QUkVfTElCUyAkTElCUyAkWF9FWFRSQV9MSUJTICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjI3NiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgWHRBcHBJbml0aWFsaXplICgpOworaW50CittYWluICgpCit7CitYdEFwcEluaXRpYWxpemUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMjI5NTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIyOTg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMjMwMTogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyMzA0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX1h0X1h0QXBwSW5pdGlhbGl6ZT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX1h0X1h0QXBwSW5pdGlhbGl6ZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTIzMTU6IHJlc3VsdDogJGFjX2N2X2xpYl9YdF9YdEFwcEluaXRpYWxpemUiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9YdF9YdEFwcEluaXRpYWxpemUiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX1h0X1h0QXBwSW5pdGlhbGl6ZSA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX0xJQlhUIDEKK0VPRgorCisJCSBjZl9oYXZlX1hfTElCUz1YdAorCQkgTElCUz0iLWxYdCAkWF9QUkVfTElCUyAkTElCUyAkWF9FWFRSQV9MSUJTIgorZmkKKworZmkKKworZmkKKworaWYgdGVzdCAkY2ZfaGF2ZV9YX0xJQlMgPSBubyA7IHRoZW4KKwl7IGVjaG8gIiRhc19tZToxMjMzMjogV0FSTklORzogVW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBsaW5rIFggVG9vbGtpdCBsaWJyYXJ5ICgtbFh0KSB3aXRoCit0ZXN0IHByb2dyYW0uICBZb3Ugd2lsbCBoYXZlIHRvIGNoZWNrIGFuZCBhZGQgdGhlIHByb3BlciBsaWJyYXJpZXMgYnkgaGFuZAordG8gbWFrZWZpbGUuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBsaW5rIFggVG9vbGtpdCBsaWJyYXJ5ICgtbFh0KSB3aXRoCit0ZXN0IHByb2dyYW0uICBZb3Ugd2lsbCBoYXZlIHRvIGNoZWNrIGFuZCBhZGQgdGhlIHByb3BlciBsaWJyYXJpZXMgYnkgaGFuZAordG8gbWFrZWZpbGUuIiA+JjI7fQorZmkKKworY2ZfeF9hdGhlbmFfcm9vdD0kY2ZfeF9hdGhlbmEKK2NmX3hfYXRoZW5hX2luYz0iIgorCitmb3IgY2ZfcGF0aCBpbiBkZWZhdWx0IFwKKwkvdXNyL2NvbnRyaWIvWDExUjYgXAorCS91c3IvY29udHJpYi9YMTFSNSBcCisJL3Vzci9saWIvWDExUjUgXAorCS91c3IvbG9jYWwKK2RvCisJaWYgdGVzdCAteiAiJGNmX3hfYXRoZW5hX2luYyIgOyB0aGVuCisJCWNmX3NhdmU9IiRDUFBGTEFHUyIKKwkJY2ZfdGVzdD1YMTEvJGNmX3hfYXRoZW5hX3Jvb3QvU2ltcGxlTWVudS5oCisJCWlmIHRlc3QgJGNmX3BhdGggIT0gZGVmYXVsdCA7IHRoZW4KKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZSAtSSRjZl9wYXRoL2luY2x1ZGUiCisJCQllY2hvICIkYXNfbWU6MTIzNTQ6IGNoZWNraW5nIGZvciAkY2ZfdGVzdCBpbiAkY2ZfcGF0aCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkY2ZfdGVzdCBpbiAkY2ZfcGF0aC4uLiAkRUNIT19DIiA+JjYKKwkJZWxzZQorCQkJZWNobyAiJGFzX21lOjEyMzU3OiBjaGVja2luZyBmb3IgJGNmX3Rlc3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGNmX3Rlc3QuLi4gJEVDSE9fQyIgPiY2CisJCWZpCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTIzNjEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8WDExL0ludHJpbnNpYy5oPgorI2luY2x1ZGUgPCRjZl90ZXN0PgoraW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTIzNzU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyMzc4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyMzgxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTIzODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQllY2hvICIkYXNfbWU6MTIzOTM6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKwkJaWYgdGVzdCAiJGNmX3Jlc3VsdCIgPSB5ZXMgOyB0aGVuCisJCQljZl94X2F0aGVuYV9pbmM9JGNmX3BhdGgKKwkJCWJyZWFrCisJCWVsc2UKKwkJCUNQUEZMQUdTPSIkY2Zfc2F2ZSIKKwkJZmkKKwlmaQorZG9uZQorCitpZiB0ZXN0IC16ICIkY2ZfeF9hdGhlbmFfaW5jIiA7IHRoZW4KKwl7IGVjaG8gIiRhc19tZToxMjQwNTogV0FSTklORzogVW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBmaW5kIEF0aGVuYSBoZWFkZXIgZmlsZXMgd2l0aCB0ZXN0IHByb2dyYW0iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3VjY2Vzc2Z1bGx5IGZpbmQgQXRoZW5hIGhlYWRlciBmaWxlcyB3aXRoIHRlc3QgcHJvZ3JhbSIgPiYyO30KK2VsaWYgdGVzdCAiJGNmX3hfYXRoZW5hX2luYyIgIT0gZGVmYXVsdCA7IHRoZW4KKwlDUFBGTEFHUz0iJENQUEZMQUdTIC1JJGNmX3hfYXRoZW5hX2luYyIKK2ZpCisKK2NmX3hfYXRoZW5hX3Jvb3Q9JGNmX3hfYXRoZW5hCitjZl94X2F0aGVuYV9saWI9IiIKKworZm9yIGNmX3BhdGggaW4gZGVmYXVsdCBcCisJL3Vzci9jb250cmliL1gxMVI2IFwKKwkvdXNyL2NvbnRyaWIvWDExUjUgXAorCS91c3IvbGliL1gxMVI1IFwKKwkvdXNyL2xvY2FsCitkbworCWZvciBjZl9saWIgaW4gXAorCQkke2NmX3hfYXRoZW5hX3Jvb3R9IFwKKwkJJHtjZl94X2F0aGVuYV9yb290fTcgXAorCQkke2NmX3hfYXRoZW5hX3Jvb3R9NgorCWRvCisJZm9yIGNmX2xpYnMgaW4gXAorCQkiLWwkY2ZfbGliIC1sWG11IiBcCisJCSItbCRjZl9saWIgLWxYcG0gLWxYbXUiIFwKKwkJIi1sJHtjZl9saWJ9X3MgLWxYbXVfcyIKKwlkbworCQlpZiB0ZXN0IC16ICIkY2ZfeF9hdGhlbmFfbGliIiA7IHRoZW4KKwkJCWNmX3NhdmU9IiRMSUJTIgorCQkJY2ZfdGVzdD1YYXdTaW1wbGVNZW51QWRkR2xvYmFsQWN0aW9ucworCQkJaWYgdGVzdCAkY2ZfcGF0aCAhPSBkZWZhdWx0IDsgdGhlbgorCitjZl9hZGRfbGlicz0iLUwkY2ZfcGF0aC9saWIgJGNmX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkJCWVjaG8gIiRhc19tZToxMjQ1MTogY2hlY2tpbmcgZm9yICRjZl9saWJzIGluICRjZl9wYXRoIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRjZl9saWJzIGluICRjZl9wYXRoLi4uICRFQ0hPX0MiID4mNgorCQkJZWxzZQorCitjZl9hZGRfbGlicz0iJGNmX2xpYnMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCQkJCWVjaG8gIiRhc19tZToxMjQ3MTogY2hlY2tpbmcgZm9yICRjZl90ZXN0IGluICRjZl9saWJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRjZl90ZXN0IGluICRjZl9saWJzLi4uICRFQ0hPX0MiID4mNgorCQkJZmkKKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTI0NzUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8WDExL0ludHJpbnNpYy5oPgorI2luY2x1ZGUgPFgxMS8kY2ZfeF9hdGhlbmFfcm9vdC9TaW1wbGVNZW51Lmg+CisKK2ludAorbWFpbiAoKQoreworCiskY2ZfdGVzdCgoWHRBcHBDb250ZXh0KSAwKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI0OTE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNDk0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI0OTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjUwMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQkJZWNobyAiJGFzX21lOjEyNTA5OiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CisJCQlpZiB0ZXN0ICIkY2ZfcmVzdWx0IiA9IHllcyA7IHRoZW4KKwkJCQljZl94X2F0aGVuYV9saWI9IiRjZl9saWJzIgorCQkJCWJyZWFrCisJCQlmaQorCQkJTElCUz0iJGNmX3NhdmUiCisJCWZpCisJZG9uZSAjIGNmX2xpYnMKKwkJdGVzdCAtbiAiJGNmX3hfYXRoZW5hX2xpYiIgJiYgYnJlYWsKKwlkb25lICMgY2ZfbGliCitkb25lCisKK2lmIHRlc3QgLXogIiRjZl94X2F0aGVuYV9saWIiIDsgdGhlbgorCXsgeyBlY2hvICIkYXNfbWU6MTI1MjM6IGVycm9yOiBVbmFibGUgdG8gc3VjY2Vzc2Z1bGx5IGxpbmsgQXRoZW5hIGxpYnJhcnkgKC1sJGNmX3hfYXRoZW5hX3Jvb3QpIHdpdGggdGVzdCBwcm9ncmFtIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IFVuYWJsZSB0byBzdWNjZXNzZnVsbHkgbGluayBBdGhlbmEgbGlicmFyeSAoLWwkY2ZfeF9hdGhlbmFfcm9vdCkgd2l0aCB0ZXN0IHByb2dyYW0iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK2NmX3hfYXRoZW5hX0xJQlM9YGVjaG8gIkhBVkVfTElCXyRjZl94X2F0aGVuYSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3hfYXRoZW5hX0xJQlMgMQorRU9GCisKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4geGN1cnNlcy1jb25maWcKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAiJGFzX21lOjEyNTQxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X3Byb2dfWENVUlNFU19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFhDVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdl9wcm9nX1hDVVJTRVNfQ09ORklHPSIkWENVUlNFU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBhY19zYXZlX0lGUz0kSUZTOyBJRlM9JGFjX3BhdGhfc2VwYXJhdG9yCithY19kdW1teT0iJFBBVEgiCitmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgSUZTPSRhY19zYXZlX0lGUworICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAkYXNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkIiB8fCBjb250aW51ZQorYWNfY3ZfcHJvZ19YQ1VSU0VTX0NPTkZJRz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCitlY2hvICIkYXNfbWU6MTI1NTY6IGZvdW5kICRhY19kaXIvJGFjX3dvcmQiID4mNQorYnJlYWsKK2RvbmUKKworZmkKK2ZpCitYQ1VSU0VTX0NPTkZJRz0kYWNfY3ZfcHJvZ19YQ1VSU0VTX0NPTkZJRworaWYgdGVzdCAtbiAiJFhDVVJTRVNfQ09ORklHIjsgdGhlbgorICBlY2hvICIkYXNfbWU6MTI1NjQ6IHJlc3VsdDogJFhDVVJTRVNfQ09ORklHIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRYQ1VSU0VTX0NPTkZJRyIgPiY2CitlbHNlCisgIGVjaG8gIiRhc19tZToxMjU2NzogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCisgICAgdGVzdCAtbiAiJFhDVVJTRVNfQ09ORklHIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJFhDVVJTRVNfQ09ORklHIjsgdGhlbgorICBhY19jdF9YQ1VSU0VTX0NPTkZJRz0kWENVUlNFU19DT05GSUcKKyAgZm9yIGFjX3Byb2cgaW4geGN1cnNlcy1jb25maWcKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTI1ODA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9YQ1VSU0VTX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfWENVUlNFU19DT05GSUciOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfWENVUlNFU19DT05GSUc9IiRhY19jdF9YQ1VSU0VTX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2FjX2N0X1hDVVJTRVNfQ09ORklHPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZToxMjU5NTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2FjX2N0X1hDVVJTRVNfQ09ORklHPSRhY19jdl9wcm9nX2FjX2N0X1hDVVJTRVNfQ09ORklHCitpZiB0ZXN0IC1uICIkYWNfY3RfWENVUlNFU19DT05GSUciOyB0aGVuCisgIGVjaG8gIiRhc19tZToxMjYwMzogcmVzdWx0OiAkYWNfY3RfWENVUlNFU19DT05GSUciID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1hDVVJTRVNfQ09ORklHIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjEyNjA2OiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGFjX2N0X1hDVVJTRVNfQ09ORklHIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJGFjX2N0X1hDVVJTRVNfQ09ORklHIiB8fCBhY19jdF9YQ1VSU0VTX0NPTkZJRz0ibm9uZSIKKworICBYQ1VSU0VTX0NPTkZJRz0kYWNfY3RfWENVUlNFU19DT05GSUcKK2ZpCisKK2lmIHRlc3QgIiRYQ1VSU0VTX0NPTkZJRyIgIT0gbm9uZSA7IHRoZW4KKworQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFhDVVJTRVNfQ09ORklHIC0tY2ZsYWdzYCIKKworY2ZfYWRkX2xpYnM9ImAkWENVUlNFU19DT05GSUcgLS1saWJzYCIKKyMgRmlsdGVyIG91dCBkdXBsaWNhdGVzIC0gdGhpcyBoYXBwZW5zIHdpdGggYmFkbHktZGVzaWduZWQgIi5wYyIgZmlsZXMuLi4KK2ZvciBjZl9hZGRfMWxpYiBpbiAkTElCUworZG8KKwlmb3IgY2ZfYWRkXzJsaWIgaW4gJGNmX2FkZF9saWJzCisJZG8KKwkJaWYgdGVzdCAieCRjZl9hZGRfMWxpYiIgPSAieCRjZl9hZGRfMmxpYiIKKwkJdGhlbgorCQkJY2ZfYWRkXzFsaWI9CisJCQlicmVhaworCQlmaQorCWRvbmUKKwl0ZXN0IC1uICIkY2ZfYWRkXzFsaWIiICYmIGNmX2FkZF9saWJzPSIkY2ZfYWRkX2xpYnMgJGNmX2FkZF8xbGliIgorZG9uZQorTElCUz0iJGNmX2FkZF9saWJzIgorCitjZl9jdl9saWJfWEN1cnNlcz15ZXMKKworZWxzZQorCitMREZMQUdTPSIkTERGTEFHUyAkWF9MSUJTIgorCit0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWNoZWNraW5nIGFkZGl0aW9ucyB0byBDRkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjY0NTogdGVzdGluZyBjaGVja2luZyBhZGRpdGlvbnMgdG8gQ0ZMQUdTIC4uLiIgMT4mNQorCitjZl9jaGVja19jZmxhZ3M9IiRDRkxBR1MiCitjZl9jaGVja19jcHBmbGFncz0iJENQUEZMQUdTIgorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluICRYX0NGTEFHUworZG8KK2Nhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgorKG5vKQorCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkoLXVuZGVmfC1ub3N0ZGluYyp8LUkqfC1EKnwtVSp8LUV8LVB8LUMpCisJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJKC1EKikKKwkJCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL14tRFtePV0qPSdcJydcIlteIl0qLy8nYAorCisJCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIGNmX2ZpeF9jcHBmbGFncz15ZXMKKworCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgorCQkJCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCQljb250aW51ZQorCQkJZmkKKwkJCTs7CisJCWVzYWMKKwkJY2FzZSAiJENQUEZMQUdTIiBpbgorCQkoKiRjZl9hZGRfY2ZsYWdzKQorCQkJOzsKKwkJKCopCisJCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCQkoLUQqKQorCQkJCWNmX3RzdF9jcHBmbGFncz1gZWNobyAieCRjZl9hZGRfY2ZsYWdzIiB8IHNlZCAtZSAncy9eLi4uLy8nIC1lICdzLz0uKi8vJ2AKKworQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCisJc2VkCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/WyAJXS8gL2cnIFwKKwkJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD8kLy9nJ2AKKworCQkJCTs7CisJCQllc2FjCisJCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQk7OworCQllc2FjCisJCTs7CisJKCopCisJCWNmX25ld19jZmxhZ3M9IiRjZl9uZXdfY2ZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQk7OworCWVzYWMKKwk7OworKHllcykKKwljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisKKwljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKKworCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiBjZl9maXhfY3BwZmxhZ3M9bm8KKwk7OworZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRDRkxBR1MgJGNmX25ld19jZmxhZ3MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjcxNjogdGVzdGluZyBhZGQgdG8gXCRDRkxBR1MgJGNmX25ld19jZmxhZ3MgLi4uIiAxPiY1CisKKwlDRkxBR1M9IiRDRkxBR1MgJGNmX25ld19jZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2NwcGZsYWdzIiA7IHRoZW4KKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWFkZCB0byBcJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjcyNDogdGVzdGluZyBhZGQgdG8gXCRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIC4uLiIgMT4mNQorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglhZGQgdG8gXCRFWFRSQV9DUFBGTEFHUyAkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTI3MzI6IHRlc3RpbmcgYWRkIHRvIFwkRVhUUkFfQ1BQRkxBR1MgJGNmX25ld19leHRyYV9jcHBmbGFncyAuLi4iIDE+JjUKKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKK2lmIHRlc3QgIngkY2ZfY2hlY2tfY2ZsYWdzIiAhPSAieCRDRkxBR1MiIDsgdGhlbgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjczOSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworcHJpbnRmKCJIZWxsbyB3b3JsZCIpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI3NTE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEyNzU0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTI3NTc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjc2MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgl0ZXN0LWNvbXBpbGUgZmFpbGVkLiAgVW5kb2luZyBjaGFuZ2UgdG8gXCRDRkxBR1MiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxMjc2ODogdGVzdGluZyB0ZXN0LWNvbXBpbGUgZmFpbGVkLiAgVW5kb2luZyBjaGFuZ2UgdG8gXCRDRkxBR1MgLi4uIiAxPiY1CisKKwkgaWYgdGVzdCAieCRjZl9jaGVja19jcHBmbGFncyIgIT0gIngkQ1BQRkxBR1MiIDsgdGhlbgorCQkgdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglidXQga2VlcGluZyBjaGFuZ2UgdG8gXCRDUFBGTEFHUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjEyNzczOiB0ZXN0aW5nIGJ1dCBrZWVwaW5nIGNoYW5nZSB0byBcJENQUEZMQUdTIC4uLiIgMT4mNQorCisJIGZpCisJIENGTEFHUz0iJGNmX2NoZWNrX2ZsYWdzIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2VjaG8gIiRhc19tZToxMjc4MTogY2hlY2tpbmcgZm9yIFhPcGVuRGlzcGxheSBpbiAtbFgxMSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBYT3BlbkRpc3BsYXkgaW4gLWxYMTEuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9YMTFfWE9wZW5EaXNwbGF5K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sWDExICRYX1BSRV9MSUJTICRMSUJTICRYX0VYVFJBX0xJQlMgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyNzg5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBYT3BlbkRpc3BsYXkgKCk7CitpbnQKK21haW4gKCkKK3sKK1hPcGVuRGlzcGxheSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODA4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjgxMTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODE0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI4MTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBhY19jdl9saWJfWDExX1hPcGVuRGlzcGxheT15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXk9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjEyODI4OiByZXN1bHQ6ICRhY19jdl9saWJfWDExX1hPcGVuRGlzcGxheSIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXkiID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX1gxMV9YT3BlbkRpc3BsYXkgPSB5ZXM7IHRoZW4KKworY2ZfYWRkX2xpYnM9Ii1sWDExIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMjg1MDogY2hlY2tpbmcgZm9yIFhDdXJzZXMgbGlicmFyeSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBYQ3Vyc2VzIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2xpYl9YQ3Vyc2VzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2FkZF9saWJzPSItbFhDdXJzZXMiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMjg3MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitjaGFyICpYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisKK2ludAorbWFpbiAoKQoreworWEN1cnNlc0V4aXQoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODg4OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMjg5MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyODk0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTI4OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9saWJfWEN1cnNlcz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbGliX1hDdXJzZXM9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MTI5MDg6IHJlc3VsdDogJGNmX2N2X2xpYl9YQ3Vyc2VzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9saWJfWEN1cnNlcyIgPiY2CisKK2ZpCisKK2lmIHRlc3QgJGNmX2N2X2xpYl9YQ3Vyc2VzID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVTklYIDEKK0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBYQ1VSU0VTIDEKK0VPRgorCisJZWNobyAiJGFzX21lOjEyOTIzOiBjaGVja2luZyBmb3IgeGN1cnNlcy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHhjdXJzZXMuaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3hjdXJzZXNfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyOTI5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEyOTMzOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMjkzOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfeGN1cnNlc19oPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX3hjdXJzZXNfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEyOTU4OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfeGN1cnNlc19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfeGN1cnNlc19oIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl94Y3Vyc2VzX2ggPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9YQ1VSU0VTIDEKK0VPRgorCitmaQorCitlbHNlCisJeyB7IGVjaG8gIiRhc19tZToxMjk2OTogZXJyb3I6IENhbm5vdCBsaW5rIHdpdGggWEN1cnNlcyIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBDYW5ub3QgbGluayB3aXRoIFhDdXJzZXMiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKKwk7OworKCopCisJeyB7IGVjaG8gIiRhc19tZToxMjk3NjogZXJyb3I6IHVuZXhwZWN0ZWQgc2NyZWVuLXZhbHVlOiAkY2ZfY3Zfc2NyZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IHVuZXhwZWN0ZWQgc2NyZWVuLXZhbHVlOiAkY2ZfY3Zfc2NyZWVuIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisJOzsKK2VzYWMKKworY2FzZSAkY2ZfY3Zfc2NyZWVuIGluCisobmN1cnNlcyopCisJY2ZfY3ZfbGlidHlwZT1gZWNobyAiJGNmX2N2X3NjcmVlbiIgfCBzZWQgLWUgJ3MvXm5jdXJzZXMvLydgCisJOzsKKyhjdXJzZXN8Y3Vyc2VzXyopCisKK2VjaG8gIiRhc19tZToxMjk4ODogY2hlY2tpbmcgZm9yIE5ldEJTRCBmb3JtLmgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgTmV0QlNEIGZvcm0uaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbmV0YnNkX2Zvcm1faCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEyOTk1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDxmb3JtLmg+CisKK2ludAorbWFpbiAoKQoreworCisJRk9STSAqZm9ybTsKKwlpbnQgeSA9IGN1cnJlbnRfZmllbGQoZm9ybSktPmN1cnNvcl95cG9zOworCWludCB4ID0gY3VycmVudF9maWVsZChmb3JtKS0+Y3Vyc29yX3hwb3M7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMwMTQ6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMDE3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMDIwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMwMjM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9uZXRic2RfZm9ybV9oPXllcworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25ldGJzZF9mb3JtX2g9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZToxMzAzNTogcmVzdWx0OiAkY2ZfY3ZfbmV0YnNkX2Zvcm1faCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfbmV0YnNkX2Zvcm1faCIgPiY2CisKK3Rlc3QgIiRjZl9jdl9uZXRic2RfZm9ybV9oIiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9ORVRCU0RfRk9STV9IIDEKK0VPRgorCitlY2hvICIkYXNfbWU6MTMwNDM6IGNoZWNraW5nIGZvciBOZXRCU0QgbWVudS5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIE5ldEJTRCBtZW51LmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25ldGJzZF9tZW51X2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzA1MCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8bWVudS5oPgorCitpbnQKK21haW4gKCkKK3sKKworCU1FTlUgKm1lbnU7CisJaW50IHkgPSBtZW51LT5tYXhfaXRlbV93aWR0aDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzA2ODogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMwNzE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMwNzQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzA3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25ldGJzZF9tZW51X2g9eWVzCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmV0YnNkX21lbnVfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZWNobyAiJGFzX21lOjEzMDg5OiByZXN1bHQ6ICRjZl9jdl9uZXRic2RfbWVudV9oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9uZXRic2RfbWVudV9oIiA+JjYKKwordGVzdCAiJGNmX2N2X25ldGJzZF9tZW51X2giID0geWVzICYmCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05FVEJTRF9NRU5VX0ggMQorRU9GCisKKwk7OworZXNhYworCitjYXNlICRjZl9jdl9zY3JlZW4gaW4KKyhwZGN1cnNlcykKKwk7OworKCopCisJIyBsb29rIGZvciBjdXJzZXMtcmVsYXRlZCBsaWJyYXJpZXMKKworYXNfYWNfTGliPWBlY2hvICJhY19jdl9saWJfcGFuZWwkY2ZfY3ZfbGlidHlwZScnX25ld19wYW5lbCIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTMxMDc6IGNoZWNraW5nIGZvciBuZXdfcGFuZWwgaW4gLWxwYW5lbCRjZl9jdl9saWJ0eXBlIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG5ld19wYW5lbCBpbiAtbHBhbmVsJGNmX2N2X2xpYnR5cGUuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0xpYitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scGFuZWwkY2ZfY3ZfbGlidHlwZSAgJExJQlMiCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzMTE1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciBuZXdfcGFuZWwgKCk7CitpbnQKK21haW4gKCkKK3sKK25ld19wYW5lbCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMTM0OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzEzNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMTQwOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTMxNDM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBldmFsICIkYXNfYWNfTGliPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZXZhbCAiJGFzX2FjX0xpYj1ubyIKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjEzMTU0OiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19MaWInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AgPSB5ZXM7IHRoZW4KKworY2ZfdXBwZXI9YGVjaG8gImhhdmVfbGlicGFuZWwiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCitjZl9hZGRfbGlicz0iLWxwYW5lbCRjZl9jdl9saWJ0eXBlIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3VwcGVyIDEKK0VPRgorCitmaQorCithc19hY19MaWI9YGVjaG8gImFjX2N2X2xpYl9tZW51JGNmX2N2X2xpYnR5cGUnJ19tZW51X2RyaXZlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTMxODM6IGNoZWNraW5nIGZvciBtZW51X2RyaXZlciBpbiAtbG1lbnUkY2ZfY3ZfbGlidHlwZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtZW51X2RyaXZlciBpbiAtbG1lbnUkY2ZfY3ZfbGlidHlwZS4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfTGliK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxtZW51JGNmX2N2X2xpYnR5cGUgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzE5MSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgbWVudV9kcml2ZXIgKCk7CitpbnQKK21haW4gKCkKK3sKK21lbnVfZHJpdmVyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyMTA6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMjEzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyMTY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzIxOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY19MaWI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfTGliPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTMyMzA6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfTGliJ30nYCA9IHllczsgdGhlbgorCitjZl91cHBlcj1gZWNobyAiaGF2ZV9saWJtZW51IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2ZfYWRkX2xpYnM9Ii1sbWVudSRjZl9jdl9saWJ0eXBlIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3VwcGVyIDEKK0VPRgorCitmaQorCithc19hY19MaWI9YGVjaG8gImFjX2N2X2xpYl9mb3JtJGNmX2N2X2xpYnR5cGUnJ19mb3JtX2RyaXZlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTMyNTk6IGNoZWNraW5nIGZvciBmb3JtX2RyaXZlciBpbiAtbGZvcm0kY2ZfY3ZfbGlidHlwZSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBmb3JtX2RyaXZlciBpbiAtbGZvcm0kY2ZfY3ZfbGlidHlwZS4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfTGliK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxmb3JtJGNmX2N2X2xpYnR5cGUgICRMSUJTIgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzI2NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKy8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgorICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KK2NoYXIgZm9ybV9kcml2ZXIgKCk7CitpbnQKK21haW4gKCkKK3sKK2Zvcm1fZHJpdmVyICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyODY6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzMjg5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTMyOTI6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzI5NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY19MaWI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfTGliPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTMzMDY6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0xpYid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfTGliJ30nYCA9IHllczsgdGhlbgorCitjZl91cHBlcj1gZWNobyAiaGF2ZV9saWJmb3JtIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2ZfYWRkX2xpYnM9Ii1sZm9ybSRjZl9jdl9saWJ0eXBlIgorIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgLSB0aGlzIGhhcHBlbnMgd2l0aCBiYWRseS1kZXNpZ25lZCAiLnBjIiBmaWxlcy4uLgorZm9yIGNmX2FkZF8xbGliIGluICRMSUJTCitkbworCWZvciBjZl9hZGRfMmxpYiBpbiAkY2ZfYWRkX2xpYnMKKwlkbworCQlpZiB0ZXN0ICJ4JGNmX2FkZF8xbGliIiA9ICJ4JGNmX2FkZF8ybGliIgorCQl0aGVuCisJCQljZl9hZGRfMWxpYj0KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCXRlc3QgLW4gIiRjZl9hZGRfMWxpYiIgJiYgY2ZfYWRkX2xpYnM9IiRjZl9hZGRfbGlicyAkY2ZfYWRkXzFsaWIiCitkb25lCitMSUJTPSIkY2ZfYWRkX2xpYnMiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3VwcGVyIDEKK0VPRgorCitmaQorCisJIyBsb29rIGZvciBjdXJzZXMtcmVsYXRlZCBoZWFkZXJzCisKK2ZvciBhY19oZWFkZXIgaW4gXAorCQluY19hbGxvYy5oIFwKKwkJbm9tYWNyb3MuaCBcCisJCWZvcm0uaCBcCisJCW1lbnUuaCBcCisJCXBhbmVsLmggXAorCQl0ZXJtX2VudHJ5LmggXAorCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTMzNDY6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTMzNTIgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCRhY19oZWFkZXI+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzMzU2OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMzM2MjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTMzODE6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKKwk7OworZXNhYworCitlY2hvICIkYXNfbWU6MTMzOTQ6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM0MDAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisKK19BQ0VPRgoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM0MDg6IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZWdyZXAgLXYgJ14gKlwrJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOjEzNDE0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgZWxzZQorICAgIGFjX2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCisgIGFjX2N2X2hlYWRlcl9zdGRjPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM0MzYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgZWdyZXAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIDoKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtcmYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzQ1NCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICBlZ3JlcCAiZnJlZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIDoKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtcmYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgOgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzNDc1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQorIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQorIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMpKQorI2Vsc2UKKyMgZGVmaW5lIElTTE9XRVIoYykgKCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKKyAgICAgICAgICAgICAgICAgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKKyAgICAgICAgICAgICAgICAgICAgIHx8ICgncycgPD0gKGMpICYmIChjKSA8PSAneicpKQorIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICgoYykgfCAweDQwKSA6IChjKSkKKyNlbmRpZgorCisjZGVmaW5lIFhPUihlLCBmKSAoKChlKSAmJiAhKGYpKSB8fCAoIShlKSAmJiAoZikpKQoraW50CittYWluICgpCit7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCisgICAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKQorICAgICAgICB8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKKyAgICAgICRhY19tYWluX3JldHVybigyKTsKKyAgJGFjX21haW5fcmV0dXJuICgwKTsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzUwMTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM1MDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNTA2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM1MDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICA6CitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZmkKK2ZpCitlY2hvICIkYXNfbWU6MTM1MjI6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3RkYyIgPiY2CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBTVERDX0hFQURFUlMgMQorRU9GCisKK2ZpCisKK2VjaG8gIiRhc19tZToxMzUzMjogY2hlY2tpbmcgd2hldGhlciB0aW1lLmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRpbWUuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3RpbWUrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzUzOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKK2ludAorbWFpbiAoKQoreworaWYgKChzdHJ1Y3QgdG0gKikgMCkKK3JldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzU1NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM1NTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM1NjA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzU2MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2hlYWRlcl90aW1lPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CithY19jdl9oZWFkZXJfdGltZT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMzU3MzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl90aW1lIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl90aW1lID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxCitFT0YKKworZmkKKworZm9yIGFjX2hlYWRlciBpbiBcCitnZXRvcHQuaCBcCitsb2NhbGUuaCBcCittYXRoLmggXAorc3RkYXJnLmggXAorc3lzL2lvY3RsLmggXAorc3lzL3NlbGVjdC5oIFwKK3N5cy90aW1lLmggXAordGVybWlvcy5oIFwKK3VuaXN0ZC5oIFwKKworZG8KK2FzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorZWNobyAiJGFzX21lOjEzNTk2OiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgoraWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzNjAyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDwkYWNfaGVhZGVyPgorX0FDRU9GCitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzYwNjogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQorICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBlZ3JlcCAtdiAnXiAqXCsnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBlY2hvICIkYXNfbWU6MTM2MTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICBlbHNlCisgICAgYWNfY3BwX2Vycj0KKyAgZmkKK2Vsc2UKKyAgYWNfY3BwX2Vycj15ZXMKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KKyAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorICBldmFsICIkYXNfYWNfSGVhZGVyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjEzNjMxOiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKK2VjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKK2lmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitmb3IgYWNfaGVhZGVyIGluIHVuaXN0ZC5oIGdldG9wdC5oCitkbworYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTM2NDQ6IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CitpZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM2NTAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPCRhY19oZWFkZXI+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNjU0OiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxMzY2MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBldmFsICIkYXNfYWNfSGVhZGVyPXllcyIKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGV2YWwgIiRhc19hY19IZWFkZXI9bm8iCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTM2Nzk6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorRU9GCisKK2ZpCitkb25lCisKK2VjaG8gIiRhc19tZToxMzY4OTogY2hlY2tpbmcgZm9yIGhlYWRlciBkZWNsYXJpbmcgZ2V0b3B0IHZhcmlhYmxlcyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBoZWFkZXIgZGVjbGFyaW5nIGdldG9wdCB2YXJpYWJsZXMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2dldG9wdF9oZWFkZXIrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworY2ZfY3ZfZ2V0b3B0X2hlYWRlcj1ub25lCitmb3IgY2ZfaGVhZGVyIGluIHN0ZGlvLmggc3RkbGliLmggdW5pc3RkLmggZ2V0b3B0LmgKK2RvCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzNjk5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCRjZl9oZWFkZXI+CitpbnQKK21haW4gKCkKK3sKK2ludCB4ID0gb3B0aW5kOyBjaGFyICp5ID0gb3B0YXJnCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjEzNzEyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzcxNTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMzcxODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzNzIxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZ2V0b3B0X2hlYWRlcj0kY2ZfaGVhZGVyCisgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorCitmaQorZWNobyAiJGFzX21lOjEzNzMzOiByZXN1bHQ6ICRjZl9jdl9nZXRvcHRfaGVhZGVyIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9nZXRvcHRfaGVhZGVyIiA+JjYKK2lmIHRlc3QgJGNmX2N2X2dldG9wdF9oZWFkZXIgIT0gbm9uZSA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9HRVRPUFRfSEVBREVSIDEKK0VPRgorCitmaQoraWYgdGVzdCAkY2ZfY3ZfZ2V0b3B0X2hlYWRlciA9IGdldG9wdC5oIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBORUVEX0dFVE9QVF9IIDEKK0VPRgorCitmaQorCitmb3IgYWNfZnVuYyBpbiBcCitnZXRvcHQgXAorZ2V0dGltZW9mZGF5IFwKKworZG8KK2FzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTM3NTY6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzc2MiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYyAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciAkYWNfZnVuYyAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfJGFjX2Z1bmMpIHx8IGRlZmluZWQgKF9fc3R1Yl9fXyRhY19mdW5jKQorY2hva2UgbWUKKyNlbHNlCitmID0gJGFjX2Z1bmM7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM3OTM6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzNzk2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM3OTk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzgwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY192YXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfdmFyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTM4MTI6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0b3B0IiA9IHhubzsgdGhlbgorCXsgeyBlY2hvICIkYXNfbWU6MTM4MjM6IGVycm9yOiBnZXRvcHQgaXMgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIHByb2dyYW1zIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGdldG9wdCBpcyByZXF1aXJlZCBmb3IgYnVpbGRpbmcgcHJvZ3JhbXMiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KK2ZpCisKK2lmIHRlc3QgIiRjZl9lbmFibGVfd2lkZWMiID0geWVzOyB0aGVuCisKK2ZvciBhY19mdW5jIGluIFwKK21ibGVuIFwKK21icmxlbiBcCittYnJ0b3djIFwKK21ic3J0b3djcyBcCittYnN0b3djcyBcCittYnRvd2MgXAord2NzcnRvbWJzIFwKK3djc3RvbWJzIFwKKworZG8KK2FzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCitlY2hvICIkYXNfbWU6MTM4NDI6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfZnVuYy4uLiAkRUNIT19DIiA+JjYKK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxMzg0OCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCisgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYyAoKTsgYmVsb3cuICAqLworI2luY2x1ZGUgPGFzc2VydC5oPgorLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCisvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworY2hhciAkYWNfZnVuYyAoKTsKK2NoYXIgKCpmKSAoKTsKKworaW50CittYWluICgpCit7CisvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCisgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKKyAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KKyNpZiBkZWZpbmVkIChfX3N0dWJfJGFjX2Z1bmMpIHx8IGRlZmluZWQgKF9fc3R1Yl9fXyRhY19mdW5jKQorY2hva2UgbWUKKyNlbHNlCitmID0gJGFjX2Z1bmM7IC8qIHdvcmthcm91bmQgZm9yIElDQyAxMi4wLjMgKi8gaWYgKGYgPT0gMCkgcmV0dXJuIDE7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM4Nzk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzODgyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM4ODU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzg4ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGV2YWwgIiRhc19hY192YXI9eWVzIgorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitldmFsICIkYXNfYWNfdmFyPW5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTM4OTg6IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQorZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgoraWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK0VPRgorCitmaQorZG9uZQorCitmaQorCitlY2hvICIkYXNfbWU6MTM5MTA6IGNoZWNraW5nIGlmIHdlIG11c3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBtdXN0IGRlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVELi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9uZWVkX3hvcGVuX2V4dGVuc2lvbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDEzOTE3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpCisjaWYgKE5DVVJTRVNfVkVSU0lPTl9QQVRDSCA8IDIwMTAwNTAxKSAmJiAoTkNVUlNFU19WRVJTSU9OX1BBVENIID49IDIwMTAwNDAzKQorCW1ha2UgYW4gZXJyb3IKKyNlbmRpZgorI2VuZGlmCisJbG9uZyB4ID0gd2lubnN0cihzdGRzY3IsICIiLCAwKTsKKwlpbnQgeDEsIHkxOworCWdldGJlZ3l4KHN0ZHNjciwgeTEsIHgxKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5Mzk6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzOTQyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTM5NDU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxMzk0ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTM5NTUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorCWNjaGFyX3QgY2hlY2s7CisJaW50IGNoZWNrMiA9IGN1cnNfc2V0KChpbnQpc2l6ZW9mKGNoZWNrKSk7CisjZW5kaWYKKwlsb25nIHggPSB3aW5uc3RyKHN0ZHNjciwgIiIsIDApOworCWludCB4MSwgeTE7CisJZ2V0YmVneXgoc3Rkc2NyLCB5MSwgeDEpCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxMzk3NzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTM5ODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxMzk4MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjEzOTg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbmVlZF94b3Blbl9leHRlbnNpb249eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uPXVua25vd24KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxMzk5ODogcmVzdWx0OiAkY2ZfY3ZfbmVlZF94b3Blbl9leHRlbnNpb24iID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uIiA+JjYKK3Rlc3QgJGNmX2N2X25lZWRfeG9wZW5fZXh0ZW5zaW9uID0geWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWE9QRU5fU09VUkNFX0VYVEVOREVEIgorCitlY2hvICIkYXNfbWU6MTQwMDI6IGNoZWNraW5nIGZvciB0ZXJtLmgiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdGVybS5oLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl90ZXJtX2hlYWRlcitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisjIElmIHdlIGZvdW5kIDxuY3Vyc2VzL2N1cnNlcy5oPiwgbG9vayBmb3IgPG5jdXJzZXMvdGVybS5oPiwgYnV0IGFsd2F5cyBsb29rCisjIGZvciA8dGVybS5oPiBpZiB3ZSBkbyBub3QgZmluZCB0aGUgdmFyaWFudC4KKworY2ZfaGVhZGVyX2xpc3Q9InRlcm0uaCBuY3Vyc2VzL3Rlcm0uaCBuY3Vyc2Vzdy90ZXJtLmgiCisKK2Nhc2UgJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IGluCisoKi8qKQorCWNmX2hlYWRlcl9pdGVtPWBlY2hvICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSB8IHNlZCAtZSAncyVcLi4qJSUnIC1lICdzJS8uKiUvJSdgdGVybS5oCisJY2ZfaGVhZGVyX2xpc3Q9IiRjZl9oZWFkZXJfaXRlbSAkY2ZfaGVhZGVyX2xpc3QiCisJOzsKK2VzYWMKKworZm9yIGNmX2hlYWRlciBpbiAkY2ZfaGVhZGVyX2xpc3QKK2RvCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDAyMyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9PgoraW50CittYWluICgpCit7CitXSU5ET1cgKngKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQwMzc6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0MDQwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MDQzOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQwNDY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl90ZXJtX2hlYWRlcj0kY2ZfaGVhZGVyCisJIGJyZWFrCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX2N2X3Rlcm1faGVhZGVyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCisKK2Nhc2UgJGNmX2N2X3Rlcm1faGVhZGVyIGluCisobm8pCisJIyBJZiBjdXJzZXMgaXMgbmN1cnNlcywgc29tZSBwYWNrYWdlcnMgc3RpbGwgbWVzcyBpdCB1cCBieSB0cnlpbmcgdG8gbWFrZQorCSMgdXMgdXNlIEdOVSB0ZXJtY2FwLiAgVGhpcyBoYW5kbGVzIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgorCWZvciBjZl9oZWFkZXIgaW4gbmN1cnNlcy90ZXJtLmggbmN1cnNlc3cvdGVybS5oCisJZG8KKwkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDA2NSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjaW5jbHVkZSA8JHtjZl9oZWFkZXJ9PgorI2Vsc2UKK21ha2UgYW4gZXJyb3IKKyNlbmRpZgoraW50CittYWluICgpCit7CitXSU5ET1cgKngKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQwODM6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0MDg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0MDg5OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQwOTI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl90ZXJtX2hlYWRlcj0kY2ZfaGVhZGVyCisJCQkgYnJlYWsKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfdGVybV9oZWFkZXI9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlkb25lCisJOzsKK2VzYWMKKworZmkKK2VjaG8gIiRhc19tZToxNDEwNzogcmVzdWx0OiAkY2ZfY3ZfdGVybV9oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3Rlcm1faGVhZGVyIiA+JjYKKworY2FzZSAkY2ZfY3ZfdGVybV9oZWFkZXIgaW4KKyh0ZXJtLmgpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfVEVSTV9IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2VzL3Rlcm0uaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX1RFUk1fSCAxCitFT0YKKworCTs7CisobmN1cnNlc3cvdGVybS5oKQorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBIQVZFX05DVVJTRVNXX1RFUk1fSCAxCitFT0YKKworCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZToxNDEzNDogY2hlY2tpbmcgZm9yIHVuY3RybC5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHVuY3RybC5oLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl91bmN0cmxfaGVhZGVyK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKyMgSWYgd2UgZm91bmQgPG5jdXJzZXMvY3Vyc2VzLmg+LCBsb29rIGZvciA8bmN1cnNlcy91bmN0cmwuaD4sIGJ1dCBhbHdheXMgbG9vaworIyBmb3IgPHVuY3RybC5oPiBpZiB3ZSBkbyBub3QgZmluZCB0aGUgdmFyaWFudC4KKworY2ZfaGVhZGVyX2xpc3Q9InVuY3RybC5oIG5jdXJzZXMvdW5jdHJsLmggbmN1cnNlc3cvdW5jdHJsLmgiCisKK2Nhc2UgJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IGluCisoKi8qKQorCWNmX2hlYWRlcl9pdGVtPWBlY2hvICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSB8IHNlZCAtZSAncyVcLi4qJSUnIC1lICdzJS8uKiUvJSdgdW5jdHJsLmgKKwljZl9oZWFkZXJfbGlzdD0iJGNmX2hlYWRlcl9pdGVtICRjZl9oZWFkZXJfbGlzdCIKKwk7OworZXNhYworCitmb3IgY2ZfaGVhZGVyIGluICRjZl9oZWFkZXJfbGlzdAorZG8KKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0MTU1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpbmNsdWRlIDwke2NmX2hlYWRlcn0+CitpbnQKK21haW4gKCkKK3sKK1dJTkRPVyAqeAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDE2OTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQxNzI6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQxNzU6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDE3ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3VuY3RybF9oZWFkZXI9JGNmX2hlYWRlcgorCSBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl91bmN0cmxfaGVhZGVyPW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCisKK2ZpCitlY2hvICIkYXNfbWU6MTQxOTE6IHJlc3VsdDogJGNmX2N2X3VuY3RybF9oZWFkZXIiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3VuY3RybF9oZWFkZXIiID4mNgorCitjYXNlICRjZl9jdl91bmN0cmxfaGVhZGVyIGluCisobm8pCisJeyBlY2hvICIkYXNfbWU6MTQxOTY6IFdBUk5JTkc6IHVuY3RybC5oIGhlYWRlciBub3QgZm91bmQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bmN0cmwuaCBoZWFkZXIgbm90IGZvdW5kIiA+JjI7fQorCTs7Citlc2FjCisKK2Nhc2UgJGNmX2N2X3VuY3RybF9oZWFkZXIgaW4KKyh1bmN0cmwuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9VTkNUUkxfSCAxCitFT0YKKworCTs7CisobmN1cnNlcy91bmN0cmwuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTX1VOQ1RSTF9IIDEKK0VPRgorCisJOzsKKyhuY3Vyc2Vzdy91bmN0cmwuaCkKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9OQ1VSU0VTV19VTkNUUkxfSCAxCitFT0YKKworCTs7Citlc2FjCisKK2ZvciBjZl9mdW5jIGluIFwKK2Fzc3VtZV9kZWZhdWx0X2NvbG9ycyBcCitjaGdhdCBcCitjb2xvcl9zZXQgXAorZmlsdGVyIFwKK2dldGJlZ3ggXAorZ2V0Y3VyeCBcCitnZXRtYXh4IFwKK2dldG5zdHIgXAorZ2V0cGFyeCBcCitnZXR3aW4gXAorbXZ2bGluZSBcCittdnd2bGluZSBcCituYXBtcyBcCitwdXR3aW4gXAorcmVzaXplX3Rlcm0gXAorcmVzaXpldGVybSBcCityaXBvZmZsaW5lIFwKK3Njcl9kdW1wIFwKK3NldHVwdGVybSBcCitzbGtfY29sb3IgXAorc2xrX2luaXQgXAordGVybWF0dHJzIFwKK3RnZXRlbnQgXAordGlnZXRudW0gXAordGlnZXRzdHIgXAordHlwZWFoZWFkIFwKK3VzZV9kZWZhdWx0X2NvbG9ycyBcCit1c2VfZW52IFwKK3VzZV9leHRlbmRlZF9uYW1lcyBcCit1c2Vfc2NyZWVuIFwKK3VzZV93aW5kb3cgXAordmlkX3B1dHMgXAordmlkcHV0cyBcCit2c3NjYW5mIFwKK3Z3X3ByaW50dyBcCit3Y2hnYXQgXAord2luc3N0ciBcCit3cmVzaXplIFwKK3dzeW5jZG93biBcCisKK2RvCisKK2NmX3RyX2Z1bmM9YGVjaG8gIiRjZl9mdW5jIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCWVjaG8gIiRhc19tZToxNDI3MDogY2hlY2tpbmcgZm9yICR7Y2ZfZnVuY30iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJHtjZl9mdW5jfS4uLiAkRUNIT19DIiA+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxNDI3MzogdGVzdGluZyAke2NmX2Z1bmN9IC4uLiIgMT4mNQorCisJaWYgZXZhbCAidGVzdCBcIlwke2NmX2N2X2Z1bmNfJGNmX2Z1bmMrc2V0fVwiID0gc2V0IjsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJCWV2YWwgY2ZfcmVzdWx0PSckYWNfY3ZfZnVuY18nJGNmX2Z1bmMKKwkJaWYgdGVzdCAiLiRjZl9yZXN1bHQiICE9ICIubm8iOyB0aGVuCisJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0MjgyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmZGVmIEhBVkVfWENVUlNFUworI2luY2x1ZGUgPHhjdXJzZXMuaD4KK2NoYXIgKiBYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisjZWxzZQorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdGVybS5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1RFUk1fSCkKKyNpbmNsdWRlIDx0ZXJtLmg+CisjZW5kaWYKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiAke2NmX2Z1bmN9Citsb25nIGZvbyA9IChsb25nKSgmJHtjZl9mdW5jfSk7CitmcHJpbnRmKHN0ZGVyciwgInRlc3RpbmcgbGlua2FnZSBvZiAkY2ZfZnVuYzolcFxuIiwgZm9vKTsKK2lmIChmb28gKyAxMjM0ID4gNTY3OCkKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KGZvbyk7CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQzMTU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0MzE4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQzMjE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDMyNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCQlmaQorCQlldmFsICdjZl9jdl9mdW5jXyckY2ZfZnVuYyc9JGNmX3Jlc3VsdCcKKworZmkKKworCSMgdXNlIHRoZSBjb21wdXRlZC9yZXRyaWV2ZWQgY2FjaGUtdmFsdWU6CisJZXZhbCAnY2ZfcmVzdWx0PSRjZl9jdl9mdW5jXyckY2ZfZnVuYworCWVjaG8gIiRhc19tZToxNDM0MDogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgorCWlmIHRlc3QgJGNmX3Jlc3VsdCAhPSBubzsgdGhlbgorCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEhBVkVfJHtjZl90cl9mdW5jfSAxCitFT0YKKworCWZpCitkb25lCisKK2ZvciBjZl9mdW5jIGluIHRwdXRzCitkbworCitjZl90cl9mdW5jPWBlY2hvICIkY2ZfZnVuYyIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwllY2hvICIkYXNfbWU6MTQzNTU6IGNoZWNraW5nIGZvciAke2NmX2Z1bmN9IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICR7Y2ZfZnVuY30uLi4gJEVDSE9fQyIgPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTQzNTg6IHRlc3RpbmcgJHtjZl9mdW5jfSAuLi4iIDE+JjUKKworCWlmIGV2YWwgInRlc3QgXCJcJHtjZl9jdl9mdW5jXyRjZl9mdW5jK3NldH1cIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKworCQlldmFsIGNmX3Jlc3VsdD0nJGFjX2N2X2Z1bmNfJyRjZl9mdW5jCisJCWlmIHRlc3QgIi4kY2ZfcmVzdWx0IiAhPSAiLm5vIjsgdGhlbgorCQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDM2NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZmRlZiBIQVZFX1hDVVJTRVMKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitjaGFyICogWEN1cnNlc1Byb2dyYW1OYW1lID0gInRlc3QiOworI2Vsc2UKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlc3cvdGVybS5oPgorI2VsaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2VzL3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9URVJNX0gpCisjaW5jbHVkZSA8dGVybS5oPgorI2VuZGlmCisjZW5kaWYKKworaW50CittYWluICgpCit7CisKKyNpZm5kZWYgJHtjZl9mdW5jfQorbG9uZyBmb28gPSAobG9uZykoJiR7Y2ZfZnVuY30pOworZnByaW50ZihzdGRlcnIsICJ0ZXN0aW5nIGxpbmthZ2Ugb2YgJGNmX2Z1bmM6JXBcbiIsIGZvbyk7CitpZiAoZm9vICsgMTIzNCA+IDU2NzgpCisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShmb28pOworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NDAwOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDQwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NDA2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ0MDk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJZmkKKwkJZXZhbCAnY2ZfY3ZfZnVuY18nJGNmX2Z1bmMnPSRjZl9yZXN1bHQnCisKK2ZpCisKKwkjIHVzZSB0aGUgY29tcHV0ZWQvcmV0cmlldmVkIGNhY2hlLXZhbHVlOgorCWV2YWwgJ2NmX3Jlc3VsdD0kY2ZfY3ZfZnVuY18nJGNmX2Z1bmMKKwllY2hvICIkYXNfbWU6MTQ0MjU6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKwlpZiB0ZXN0ICRjZl9yZXN1bHQgIT0gbm87IHRoZW4KKwkJY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBIQVZFXyR7Y2ZfdHJfZnVuY30gMQorRU9GCisKKwlmaQorZG9uZQorCitpZiB0ZXN0IHgkY2ZfY3ZfZnVuY190cHV0cyA9IHh5ZXMKK3RoZW4KKwljZl9kb25lPW5vCisJZm9yIGNmX2FyZyBpbiBpbnQgY2hhcgorCWRvCisJCWZvciBjZl9yZXQgaW4gaW50IHZvaWQKKwkJZG8KKwkJCWlmIHRlc3QgJGNmX3JldCA9IHZvaWQKKwkJCXRoZW4KKwkJCQljZl9yZXR1cm49Ii8qIG5vdGhpbmcgKi8iCisJCQllbHNlCisJCQkJY2ZfcmV0dXJuPSJyZXR1cm4gdmFsdWUiCisJCQlmaQorCQkJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDQ0OSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaW5jbHVkZSA8JGNmX2N2X3Rlcm1faGVhZGVyPgorCitzdGF0aWMgJGNmX3JldCBvdXRjKCRjZl9hcmcgdmFsdWUpIHsgJGNmX3JldHVybjsgfQorCitpbnQKK21haW4gKCkKK3sKKworCXRwdXRzKCJoZWxsbyIsIDAsIG91dGMpOworCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oMCk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ0Njk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NDcyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NDc1OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ0Nzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorCisJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcHJvdG90eXBlICRjZl9yZXQgZnVuYygkY2ZfYXJnIHZhbHVlKSIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjE0NDgzOiB0ZXN0aW5nIHByb3RvdHlwZSAkY2ZfcmV0IGZ1bmMoJGNmX2FyZyB2YWx1ZSkgLi4uIiAxPiY1CisKKwkJY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBUUFVUU19BUkcgICAgICAgICAgICAgICAkY2ZfYXJnCisjZGVmaW5lIFRQVVRTX1BST1RPKGZ1bmMsdmFsdWUpICRjZl9yZXQgZnVuYyhUUFVUU19BUkcgdmFsdWUpCisjZGVmaW5lIFRQVVRTX1JFVFVSTih2YWx1ZSkgICAgICRjZl9yZXR1cm4KK0VPRgorCQljZl9kb25lPXllcworCQlicmVhaworCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwkJZG9uZQorCQl0ZXN0ICRjZl9kb25lID0geWVzICYmIGJyZWFrCisJZG9uZQorZmkKKworZWNobyAiJGFzX21lOjE0NTAzOiBjaGVja2luZyBmb3IgbmN1cnNlcyBleHRlbmRlZCBmdW5jdGlvbnMiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbmN1cnNlcyBleHRlbmRlZCBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X25jdXJzZXNfZXh0X2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTQ1MTAgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7CisKK2ludCB4ID0gTkNVUlNFU19FWFRfRlVOQ1MKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDUyNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ1Mjg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ1MzE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDUzNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X25jdXJzZXNfZXh0X2Z1bmNzPWRlZmluZWQKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NTQyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworCisJKHZvaWQpIGFzc3VtZV9kZWZhdWx0X2NvbG9ycyAoMCwgMCk7CisJKHZvaWQpIGN1cnNlc192ZXJzaW9uICgpOworCSh2b2lkKSBkZWZpbmVfa2V5ICgwLCAwKTsKKwkodm9pZCkgaXNfdGVybV9yZXNpemVkICgwLCAwKTsKKwkodm9pZCkga2V5X2RlZmluZWQgKDApOworCSh2b2lkKSBrZXlib3VuZCAoMCwgMCk7CisJKHZvaWQpIGtleW9rICgwLCAwKTsKKwkodm9pZCkgcmVzaXplX3Rlcm0gKDAsIDApOworCSh2b2lkKSByZXNpemV0ZXJtICgwLCAwKTsKKwkodm9pZCkgdXNlX2RlZmF1bHRfY29sb3JzICgpOworCSh2b2lkKSB1c2VfZXh0ZW5kZWRfbmFtZXMgKDApOworCSh2b2lkKSB3cmVzaXplICgwLCAwLCAwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NTY3OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDU3MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE0NTczOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ1NzY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfbmN1cnNlc19leHRfZnVuY3M9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZToxNDU5MDogcmVzdWx0OiAkY2ZfY3ZfbmN1cnNlc19leHRfZnVuY3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X25jdXJzZXNfZXh0X2Z1bmNzIiA+JjYKK3Rlc3QgIiRjZl9jdl9uY3Vyc2VzX2V4dF9mdW5jcyIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5DVVJTRVNfRVhUX0ZVTkNTIDEKK0VPRgorCitpZiB0ZXN0ICIkY2ZfZW5hYmxlX3dpZGVjIiA9IHllcwordGhlbgorCSMgd29ya2Fyb3VuZCBmb3Igc3lzdGVtcyB3aXRoIG5jdXJzZXMgYmVmb3JlIDIwMTExMDI5LCBkdWUgdG8gY2hhbmdlIG9mCisJIyBmZWF0dXJlIHRlc3QgbWFjcm8gZnJvbSBfWFBHNSB0byBfWE9QRU5fU09VUkNFCisJaWYgdGVzdCAtbiAiJGNmX2N2X25jdXJzZXNfdmVyc2lvbiIgJiYgdGVzdCAieCRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iICE9IHhubworCXRoZW4KKwkJY2ZfZGVmaW5lX3hwZzU9bm8KKwkJZWNobyAiJGFzX21lOjE0NjA0OiBjaGVja2luZyBpZiBfWFBHNSBzaG91bGQgYmUgZGVmaW5lZCB0byBlbmFibGUgd2lkZS1jaGFyYWN0ZXJzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgX1hQRzUgc2hvdWxkIGJlIGRlZmluZWQgdG8gZW5hYmxlIHdpZGUtY2hhcmFjdGVycy4uLiAkRUNIT19DIiA+JjYKKworCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NjA4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW50IHggPSBfWFBHNQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDYyMTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ2MjQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2Mjc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDYzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIDoKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2Zfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorCQkJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWFBHNSIKKwkJCSBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NjM5ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworaW50IHggPSBfWFBHNQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDY1MjogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ2NTU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ2NTg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDY2MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2RlZmluZV94cGc1PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisJCQkgQ1BQRkxBR1M9IiRjZl9zYXZlX2NwcGZsYWdzIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQllY2hvICIkYXNfbWU6MTQ2NzI6IHJlc3VsdDogJGNmX2RlZmluZV94cGc1IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9kZWZpbmVfeHBnNSIgPiY2CisKKwkJaWYgdGVzdCAiJGNmX2RlZmluZV94cGc1IiA9IHllcworCQl0aGVuCisJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1hQRzUiCisJCWZpCisJZmkKKworCWVjaG8gIiRhc19tZToxNDY4MTogY2hlY2tpbmcgZm9yIHdpZGUtY2hhcmFjdGVyIGZ1bmN0aW9ucyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3dpZGVjaGFyX2Z1bmNzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0Njg4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworCisJCXN0YXRpYyB3Y2hhcl90IHNyY193Y2hhclsyXTsKKwkJc3RhdGljIGNjaGFyX3QgZHN0X2NjaGFyOworCQlzZXRjY2hhcigmZHN0X2NjaGFyLCBzcmNfd2NoYXIsIEFfTk9STUFMLCAwLCAodm9pZCAqKSAwKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ3MDU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NzA4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ3MTE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDcxNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3dpZGVjaGFyX2Z1bmNzPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl93aWRlY2hhcl9mdW5jcz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK2VjaG8gIiRhc19tZToxNDcyNTogcmVzdWx0OiAkY2ZfY3Zfd2lkZWNoYXJfZnVuY3MiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X3dpZGVjaGFyX2Z1bmNzIiA+JjYKKwlpZiB0ZXN0ICIkY2ZfY3Zfd2lkZWNoYXJfZnVuY3MiICE9IG5vIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfV0lERUNfU1VQUE9SVCAxCitFT0YKKworCWVsc2UKKwkJY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgVVNFX1dJREVDX1NVUFBPUlQgMAorRU9GCisKKwlmaQorZWxzZQorCWNhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIFVTRV9XSURFQ19TVVBQT1JUIDAKK0VPRgorCitmaQorCitlY2hvICIkYXNfbWU6MTQ3NDY6IGNoZWNraW5nIGlmICRjZl9jdl9zY3JlZW4gbGlicmFyeSB1c2VzIHB0aHJlYWRzIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJGNmX2N2X3NjcmVlbiBsaWJyYXJ5IHVzZXMgcHRocmVhZHMuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3VzZV9wdGhyZWFkcytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0NzUzICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2V4dGVybiB2b2lkIF9uY19pbml0X3B0aHJlYWRzKHZvaWQpOworCitpbnQKK21haW4gKCkKK3sKKworCWluaXRzY3IoKTsKKwlfbmNfaW5pdF9wdGhyZWFkcygpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDc3MTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ3NzQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDc3NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0NzgwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfdXNlX3B0aHJlYWRzPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl91c2VfcHRocmVhZHM9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCitlY2hvICIkYXNfbWU6MTQ3OTE6IHJlc3VsdDogJGNmX2N2X3VzZV9wdGhyZWFkcyIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfdXNlX3B0aHJlYWRzIiA+JjYKK3Rlc3QgJGNmX2N2X3VzZV9wdGhyZWFkcyA9IHllcyAmJiBjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBVU0VfUFRIUkVBRFMgMQorRU9GCisKK2VjaG8gIiRhc19tZToxNDc5NzogY2hlY2tpbmcgaWYgc3lzL3RpbWUuaCB3b3JrcyB3aXRoIHN5cy9zZWxlY3QuaCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHN5cy90aW1lLmggd29ya3Mgd2l0aCBzeXMvc2VsZWN0LmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3N5c190aW1lX3NlbGVjdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0ODA0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNDgyNDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTQ4Mjc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4MzA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDgzMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3N5c190aW1lX3NlbGVjdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCisKK2VjaG8gIiRhc19tZToxNDg0NTogcmVzdWx0OiAkY2ZfY3Zfc3lzX3RpbWVfc2VsZWN0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9zeXNfdGltZV9zZWxlY3QiID4mNgordGVzdCAiJGNmX2N2X3N5c190aW1lX3NlbGVjdCIgPSB5ZXMgJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIEhBVkVfU1lTX1RJTUVfU0VMRUNUIDEKK0VPRgorCitlY2hvICIkYXNfbWU6MTQ4NTI6IGNoZWNraW5nIGZvciBmdW5jdGlvbiBjdXJzZXNfdmVyc2lvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBmdW5jdGlvbiBjdXJzZXNfdmVyc2lvbi4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfZnVuY19jdXJzZXNfdmVyc2lvbitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICBjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uPXVua25vd24KK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDg2MiAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQgbWFpbigpCit7CisJY2hhciB0ZW1wWzEwMjRdOworCXNwcmludGYodGVtcCwgIiVzXG4iLCBjdXJzZXNfdmVyc2lvbigpKTsKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KDApOworfQorCitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ4NzU6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0ODc4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNDg4MDogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0ODgzOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfZnVuY19jdXJzZXNfdmVyc2lvbj15ZXMKKworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3ZfZnVuY19jdXJzZXNfdmVyc2lvbj1ubworCitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlCitmaQorZWNobyAiJGFzX21lOjE0ODk4OiByZXN1bHQ6ICRjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uIiA+JjYKK3Rlc3QgIiRjZl9jdl9mdW5jX2N1cnNlc192ZXJzaW9uIiA9IHllcyAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgSEFWRV9DVVJTRVNfVkVSU0lPTiAxCitFT0YKKworZWNobyAiJGFzX21lOjE0OTA1OiBjaGVja2luZyBmb3IgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgYXJyYXkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgYXJyYXkuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2N1cnNlc19hY3NfbWFwK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X2N1cnNlc19hY3NfbWFwPXVua25vd24KK2ZvciBuYW1lIGluIGFjc19tYXAgX2Fjc19tYXAgX19hY3NfbWFwICR7TkNVUlNFU19XUkFQX1BSRUZJWH1hY3NfbWFwCitkbworY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNDkxNSAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisKK2ludAorbWFpbiAoKQoreworCiskbmFtZVsnayddID0gQUNTX1BMVVMKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5MzE6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0OTM0OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5Mzc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDk0MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X2N1cnNlc19hY3NfbWFwPSRuYW1lOyBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZG9uZQorCitmaQorZWNobyAiJGFzX21lOjE0OTUxOiByZXN1bHQ6ICRjZl9jdl9jdXJzZXNfYWNzX21hcCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfY3Vyc2VzX2Fjc19tYXAiID4mNgorCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX2Fjc19tYXAiICE9IHVua25vd24gJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgQ1VSU0VTX0FDU19BUlJBWSAkY2ZfY3ZfY3Vyc2VzX2Fjc19tYXAKK0VPRgorCitpZiB0ZXN0ICIkY2ZfZW5hYmxlX3dpZGVjIiA9IHllczsgdGhlbgorCitlY2hvICIkYXNfbWU6MTQ5NjE6IGNoZWNraW5nIGZvciB3aWRlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgc2V0IGFycmF5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHdpZGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgYXJyYXkuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X2N1cnNlc193YWNzX21hcCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCisJY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwPXVua25vd24KKwlmb3IgbmFtZSBpbiB3YWNzX21hcCBfd2Fjc19tYXAgX193YWNzX21hcCBfbmNfd2FjcyBfd2Fjc19jaGFyCisJZG8KKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE0OTcxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQorewordm9pZCAqZm9vID0gJigkbmFtZVsnayddKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5ODc6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE0OTkwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTQ5OTM6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNDk5NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X2N1cnNlc193YWNzX21hcD0kbmFtZQorCSBicmVhaworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCWRvbmUKK2ZpCitlY2hvICIkYXNfbWU6MTUwMDc6IHJlc3VsdDogJGNmX2N2X2N1cnNlc193YWNzX21hcCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwIiA+JjYKKwordGVzdCAiJGNmX2N2X2N1cnNlc193YWNzX21hcCIgIT0gdW5rbm93biAmJgorY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBDVVJTRVNfV0FDU19BUlJBWSAkY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwCitFT0YKKworZWNobyAiJGFzX21lOjE1MDE1OiBjaGVja2luZyBmb3Igd2lkZSBhbHRlcm5hdGUgY2hhcmFjdGVyIGNvbnN0YW50cyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB3aWRlIGFsdGVybmF0ZSBjaGFyYWN0ZXIgY29uc3RhbnRzLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl9jdXJzZXNfd2Fjc19zeW1ib2xzK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NmX2N2X2N1cnNlc193YWNzX3N5bWJvbHM9bm8KK2lmIHRlc3QgIiRjZl9jdl9jdXJzZXNfd2Fjc19tYXAiICE9IHVua25vd24KK3RoZW4KKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MDI1ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworY2NoYXJfdCAqZm9vID0gV0FDU19QTFVTOworCSAkY2ZfY3ZfY3Vyc2VzX3dhY3NfbWFwWydrJ10gPSAqV0FDU19QTFVTCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTA0MjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUwNDU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTA0ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MDUxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2Vsc2UKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MDYxICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworY2NoYXJfdCAqZm9vID0gV0FDU19QTFVTCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTA3NzogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUwODA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTA4MzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MDg2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCitlY2hvICIkYXNfbWU6MTUwOTc6IHJlc3VsdDogJGNmX2N2X2N1cnNlc193YWNzX3N5bWJvbHMiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2N2X2N1cnNlc193YWNzX3N5bWJvbHMiID4mNgorCit0ZXN0ICIkY2ZfY3ZfY3Vyc2VzX3dhY3Nfc3ltYm9scyIgIT0gbm8gJiYKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIENVUlNFU19XQUNTX1NZTUJPTFMgMQorRU9GCisKK2ZpCisKK2VjaG8gIiRhc19tZToxNTEwNzogY2hlY2tpbmcgZm9yIHR5cGUgYXR0cl90IGluICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB0eXBlIGF0dHJfdCBpbiAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0uLi4gJEVDSE9fQyIgPiY2CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MTEwICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworCithdHRyX3QgZm9vCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUxMjg6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MTMxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MTM0OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUxMzc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZWNobyAiJGFzX21lOjE1MTQ2OiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CitpZiB0ZXN0ICRjZl9yZXN1bHQgPSB5ZXMgOyB0aGVuCisKK2NmX3Jlc3VsdD1gZWNobyAiaGF2ZV90eXBlX2F0dHJfdCIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3Jlc3VsdCAxCitFT0YKKworZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIGF0dHJfdCBsb25nCitFT0YKKworZmkKKworaWYgdGVzdCAiJGNmX2VuYWJsZV93aWRlYyIgPSB5ZXM7IHRoZW4KKworIyBUaGlzIGlzIG5lZWRlZCBvbiBUcnU2NCA1LjAgdG8gZGVjbGFyZSBtYnN0YXRlX3QKK2VjaG8gIiRhc19tZToxNTE2NzogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSBtYnN0YXRlX3QiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBtdXN0IGluY2x1ZGUgd2NoYXIuaCB0byBkZWNsYXJlIG1ic3RhdGVfdC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7Y2ZfY3ZfbWJzdGF0ZV90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTUxNzQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7CittYnN0YXRlX3Qgc3RhdGUKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTUxOTI6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MTk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MTk4OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTUyMDE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9jdl9tYnN0YXRlX3Q9bm8KK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTIwOCAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHdjaGFyLmg+CisjaWZkZWYgSEFWRV9MSUJVVEY4X0gKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CisjZW5kaWYKK2ludAorbWFpbiAoKQoreworbWJzdGF0ZV90IHZhbHVlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MjI3OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTIzMDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTIzMzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MjM2OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3ZfbWJzdGF0ZV90PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9jdl9tYnN0YXRlX3Q9dW5rbm93bgorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZToxNTI0ODogcmVzdWx0OiAkY2ZfY3ZfbWJzdGF0ZV90IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl9tYnN0YXRlX3QiID4mNgorCitpZiB0ZXN0ICIkY2ZfY3ZfbWJzdGF0ZV90IiA9IHllcyA7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgTkVFRF9XQ0hBUl9IIDEKK0VPRgorCisJTkVFRF9XQ0hBUl9IPTEKK2ZpCisKKyMgaWYgd2UgZG8gbm90IGZpbmQgbWJzdGF0ZV90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCitpZiB0ZXN0ICIkY2ZfY3ZfbWJzdGF0ZV90IiA9IHVua25vd24gOyB0aGVuCisJTkNVUlNFU19NQlNUQVRFX1Q9MQorZmkKKworIyBpZiB3ZSBmaW5kIG1ic3RhdGVfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgoraWYgdGVzdCAiJGNmX2N2X21ic3RhdGVfdCIgIT0gdW5rbm93biA7IHRoZW4KKwlOQ1VSU0VTX09LX01CU1RBVEVfVD0xCitmaQorCisjIFRoaXMgaXMgbmVlZGVkIG9uIFRydTY0IDUuMCB0byBkZWNsYXJlIHdjaGFyX3QKK2VjaG8gIiRhc19tZToxNTI3MTogY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3Y2hhcl90Li4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHtjZl9jdl93Y2hhcl90K3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTUyNzggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7Cit3Y2hhcl90IHN0YXRlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1Mjk2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTI5OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTMwMjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MzA1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2NoYXJfdD1ubworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MzEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpZmRlZiBIQVZFX0xJQlVURjhfSAorI2luY2x1ZGUgPGxpYnV0ZjguaD4KKyNlbmRpZgoraW50CittYWluICgpCit7Cit3Y2hhcl90IHZhbHVlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1MzMxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTMzNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTMzNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1MzQwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2NoYXJfdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfd2NoYXJfdD11bmtub3duCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE1MzUyOiByZXN1bHQ6ICRjZl9jdl93Y2hhcl90IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9jdl93Y2hhcl90IiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3djaGFyX3QiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBORUVEX1dDSEFSX0ggMQorRU9GCisKKwlORUVEX1dDSEFSX0g9MQorZmkKKworIyBpZiB3ZSBkbyBub3QgZmluZCB3Y2hhcl90IGluIGVpdGhlciBwbGFjZSwgdXNlIHN1YnN0aXR1dGlvbiB0byBwcm92aWRlIGEgZmFsbGJhY2suCitpZiB0ZXN0ICIkY2ZfY3Zfd2NoYXJfdCIgPSB1bmtub3duIDsgdGhlbgorCU5DVVJTRVNfV0NIQVJfVD0xCitmaQorCisjIGlmIHdlIGZpbmQgd2NoYXJfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgoraWYgdGVzdCAiJGNmX2N2X3djaGFyX3QiICE9IHVua25vd24gOyB0aGVuCisJTkNVUlNFU19PS19XQ0hBUl9UPTEKK2ZpCisKKyMgVGhpcyBpcyBuZWVkZWQgb24gVHJ1NjQgNS4wIHRvIGRlY2xhcmUgd2ludF90CitlY2hvICIkYXNfbWU6MTUzNzU6IGNoZWNraW5nIGlmIHdlIG11c3QgaW5jbHVkZSB3Y2hhci5oIHRvIGRlY2xhcmUgd2ludF90IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgd2UgbXVzdCBpbmNsdWRlIHdjaGFyLmggdG8gZGVjbGFyZSB3aW50X3QuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2NmX2N2X3dpbnRfdCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1MzgyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9MSUJVVEY4X0gKKyNpbmNsdWRlIDxsaWJ1dGY4Lmg+CisjZW5kaWYKK2ludAorbWFpbiAoKQoreword2ludF90IHN0YXRlCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NDAwOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTQwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTQwNjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NDA5OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfY3Zfd2ludF90PW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU0MTYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2lmZGVmIEhBVkVfTElCVVRGOF9ICisjaW5jbHVkZSA8bGlidXRmOC5oPgorI2VuZGlmCitpbnQKK21haW4gKCkKK3sKK3dpbnRfdCB2YWx1ZQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTQzNTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU0Mzg6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU0NDE6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTQ0NDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX2N2X3dpbnRfdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfY3Zfd2ludF90PXVua25vd24KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTU0NTY6IHJlc3VsdDogJGNmX2N2X3dpbnRfdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfY3Zfd2ludF90IiA+JjYKKworaWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgPSB5ZXMgOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxcRU9GCisjZGVmaW5lIE5FRURfV0NIQVJfSCAxCitFT0YKKworCU5FRURfV0NIQVJfSD0xCitmaQorCisjIGlmIHdlIGRvIG5vdCBmaW5kIHdpbnRfdCBpbiBlaXRoZXIgcGxhY2UsIHVzZSBzdWJzdGl0dXRpb24gdG8gcHJvdmlkZSBhIGZhbGxiYWNrLgoraWYgdGVzdCAiJGNmX2N2X3dpbnRfdCIgPSB1bmtub3duIDsgdGhlbgorCU5DVVJTRVNfV0lOVF9UPTEKK2ZpCisKKyMgaWYgd2UgZmluZCB3aW50X3QgaW4gZWl0aGVyIHBsYWNlLCB1c2Ugc3Vic3RpdHV0aW9uIHRvIHByb3ZpZGUgYSBmYWxsYmFjay4KK2lmIHRlc3QgIiRjZl9jdl93aW50X3QiICE9IHVua25vd24gOyB0aGVuCisJTkNVUlNFU19PS19XSU5UX1Q9MQorZmkKKworCWlmIHRlc3QgIiROQ1VSU0VTX09LX01CU1RBVEVfVCIgPSAwIDsgdGhlbgorCitlY2hvICIkYXNfbWU6MTU0ODA6IGNoZWNraW5nIGZvciB0eXBlIG1ic3RhdGVfdCBpbiAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdHlwZSBtYnN0YXRlX3QgaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Li4uICRFQ0hPX0MiID4mNgorY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNTQ4MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZW5kaWYKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CitpbnQKK21haW4gKCkKK3sKKworbWJzdGF0ZV90IGZvbworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NTAxOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTUwNDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTUwNzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NTEwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9yZXN1bHQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZToxNTUxOTogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgoraWYgdGVzdCAkY2ZfcmVzdWx0ID0geWVzIDsgdGhlbgorCitjZl9yZXN1bHQ9YGVjaG8gImhhdmVfdHlwZV9tYnN0YXRlX3QiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9yZXN1bHQgMQorRU9GCisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBtYnN0YXRlX3QgbG9uZworRU9GCisKK2ZpCisKKwlmaQorCisJaWYgdGVzdCAiJE5DVVJTRVNfT0tfV0NIQVJfVCIgPSAwIDsgdGhlbgorCitlY2hvICIkYXNfbWU6MTU1NDE6IGNoZWNraW5nIGZvciB0eXBlIHdjaGFyX3QgaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgd2NoYXJfdCBpbiAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0uLi4gJEVDSE9fQyIgPiY2CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1NTQ0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNlbmRpZgorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KK2ludAorbWFpbiAoKQoreworCit3Y2hhcl90IGZvbworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1NTYyOiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTU2NTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTU2ODogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NTcxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9yZXN1bHQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZToxNTU4MDogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgoraWYgdGVzdCAkY2ZfcmVzdWx0ID0geWVzIDsgdGhlbgorCitjZl9yZXN1bHQ9YGVjaG8gImhhdmVfdHlwZV93Y2hhcl90IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSAkY2ZfcmVzdWx0IDEKK0VPRgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgd2NoYXJfdCBsb25nCitFT0YKKworZmkKKworCWZpCisKKwlpZiB0ZXN0ICIkTkNVUlNFU19PS19XSU5UX1QiID0gMCA7IHRoZW4KKworZWNobyAiJGFzX21lOjE1NjAyOiBjaGVja2luZyBmb3IgdHlwZSB3aW50X3QgaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHR5cGUgd2ludF90IGluICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofS4uLiAkRUNIT19DIiA+JjYKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU2MDUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorI2VuZGlmCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgoraW50CittYWluICgpCit7CisKK3dpbnRfdCBmb28KKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTYyMzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU2MjY6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU2Mjk6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTYzMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitlY2hvICIkYXNfbWU6MTU2NDE6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKK2lmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKworY2ZfcmVzdWx0PWBlY2hvICJoYXZlX3R5cGVfd2ludF90IiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSAkY2ZfcmVzdWx0IDEKK0VPRgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgd2ludF90IGxvbmcKK0VPRgorCitmaQorCisJZmkKK2ZpCisKK2VjaG8gIiRhc19tZToxNTY2MjogY2hlY2tpbmcgZm9yIGRhdGEgb3NwZWVkIGRlY2xhcmF0aW9uIGluICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkYXRhIG9zcGVlZCBkZWNsYXJhdGlvbiBpbiAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0uLi4gJEVDSE9fQyIgPiY2CisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU2NjYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaWZkZWYgSEFWRV9YQ1VSU0VTCisjaW5jbHVkZSA8eGN1cnNlcy5oPgorY2hhciAqIFhDdXJzZXNQcm9ncmFtTmFtZSA9ICJ0ZXN0IjsKKyNlbHNlCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU1dfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXN3L3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlcy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfVEVSTV9IKQorI2luY2x1ZGUgPHRlcm0uaD4KKyNlbmRpZgorI2VuZGlmCisKK2ludAorbWFpbiAoKQoreworCit2b2lkICpmb28gPSAmKG9zcGVlZCkKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTY5NDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU2OTc6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU3MDA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTcwMzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitlY2hvICIkYXNfbWU6MTU3MTI6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKworaWYgdGVzdCAkY2ZfcmVzdWx0ID0geWVzIDsgdGhlbgorCitjZl9yZXN1bHQ9YGVjaG8gImhhdmVfY3Vyc2VzX2RhdGFfb3NwZWVkIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3Jlc3VsdCAxCitFT0YKKworZWxzZQorCWVjaG8gIiRhc19tZToxNTcyNDogY2hlY2tpbmcgZm9yIGRhdGEgb3NwZWVkIGluIGxpYnJhcnkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGF0YSBvc3BlZWQgaW4gbGlicmFyeS4uLiAkRUNIT19DIiA+JjYKKwkjIEJTRCBsaW5rZXJzIGluc2lzdCBvbiBtYWtpbmcgd2VhayBsaW5rYWdlLCBidXQgcmVzb2x2ZSBhdCBydW50aW1lLgorCWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisKKwkjIGNyb3NzLWNvbXBpbGluZworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU3MzEgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaWZkZWYgSEFWRV9YQ1VSU0VTCisjaW5jbHVkZSA8eGN1cnNlcy5oPgorY2hhciAqIFhDdXJzZXNQcm9ncmFtTmFtZSA9ICJ0ZXN0IjsKKyNlbHNlCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU1dfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXN3L3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlcy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfVEVSTV9IKQorI2luY2x1ZGUgPHRlcm0uaD4KKyNlbmRpZgorI2VuZGlmCisKK2V4dGVybiBjaGFyIG9zcGVlZDsKK2ludAorbWFpbiAoKQoreworCisJZG8geworCQl2b2lkICpmb28gPSAmKG9zcGVlZCk7CisJCWZwcmludGYoc3RkZXJyLCAidGVzdGluZyBsaW5rYWdlIG9mIG9zcGVlZDolcFxuIiwgZm9vKTsKKwkJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShmb28gPT0gMCk7CisJfSB3aGlsZSAoMCkKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU3NjQ6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1NzY3OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU3NzA6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTc3MzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTU3ODUgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisjaWZkZWYgSEFWRV9YQ1VSU0VTCisjaW5jbHVkZSA8eGN1cnNlcy5oPgorY2hhciAqIFhDdXJzZXNQcm9ncmFtTmFtZSA9ICJ0ZXN0IjsKKyNlbHNlCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU1dfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXN3L3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEhBVkVfTkNVUlNFU19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlcy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfVEVSTV9IKQorI2luY2x1ZGUgPHRlcm0uaD4KKyNlbmRpZgorI2VuZGlmCisKK2V4dGVybiBjaGFyIG9zcGVlZDsKK2ludCBtYWluKHZvaWQpCit7CisJdm9pZCAqZm9vID0gJihvc3BlZWQpOworCWZwcmludGYoc3RkZXJyLCAidGVzdGluZyBsaW5rYWdlIG9mIG9zcGVlZDolcFxuIiwgZm9vKTsKKwkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KGZvbyA9PSAwKTsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNTgxMTogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU4MTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1ODE2OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU4MTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CitlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9yZXN1bHQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKwllY2hvICIkYXNfbWU6MTU4MzA6IHJlc3VsdDogJGNmX3Jlc3VsdCIgPiY1CitlY2hvICIke0VDSE9fVH0kY2ZfcmVzdWx0IiA+JjYKKwlpZiB0ZXN0ICRjZl9yZXN1bHQgPSB5ZXMgOyB0aGVuCisKK2NmX3Jlc3VsdD1gZWNobyAiZGVjbF9jdXJzZXNfZGF0YV9vc3BlZWQiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCisJCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3Jlc3VsdCAxCitFT0YKKworCWZpCitmaQorCitlY2hvICIkYXNfbWU6MTU4NDM6IGNoZWNraW5nIGZvciBkYXRhIGJvb2xuYW1lcyBkZWNsYXJhdGlvbiBpbiAke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0iID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGF0YSBib29sbmFtZXMgZGVjbGFyYXRpb24gaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Li4uICRFQ0hPX0MiID4mNgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1ODQ3ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmZGVmIEhBVkVfWENVUlNFUworI2luY2x1ZGUgPHhjdXJzZXMuaD4KK2NoYXIgKiBYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisjZWxzZQorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdGVybS5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1RFUk1fSCkKKyNpbmNsdWRlIDx0ZXJtLmg+CisjZW5kaWYKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKwordm9pZCAqZm9vID0gJihib29sbmFtZXMpCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU4NzU6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1ODc4OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1ODgxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU4ODQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZWNobyAiJGFzX21lOjE1ODkzOiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CisKK2lmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKworY2ZfcmVzdWx0PWBlY2hvICJoYXZlX2N1cnNlc19kYXRhX2Jvb2xuYW1lcyIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9yZXN1bHQgMQorRU9GCisKK2Vsc2UKKwllY2hvICIkYXNfbWU6MTU5MDU6IGNoZWNraW5nIGZvciBkYXRhIGJvb2xuYW1lcyBpbiBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRhdGEgYm9vbG5hbWVzIGluIGxpYnJhcnkuLi4gJEVDSE9fQyIgPiY2CisJIyBCU0QgbGlua2VycyBpbnNpc3Qgb24gbWFraW5nIHdlYWsgbGlua2FnZSwgYnV0IHJlc29sdmUgYXQgcnVudGltZS4KKwlpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCisJIyBjcm9zcy1jb21waWxpbmcKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1OTEyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmZGVmIEhBVkVfWENVUlNFUworI2luY2x1ZGUgPHhjdXJzZXMuaD4KK2NoYXIgKiBYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisjZWxzZQorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdGVybS5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1RFUk1fSCkKKyNpbmNsdWRlIDx0ZXJtLmg+CisjZW5kaWYKKyNlbmRpZgorCitleHRlcm4gY2hhciBib29sbmFtZXM7CitpbnQKK21haW4gKCkKK3sKKworCWRvIHsKKwkJdm9pZCAqZm9vID0gJihib29sbmFtZXMpOworCQlmcHJpbnRmKHN0ZGVyciwgInRlc3RpbmcgbGlua2FnZSBvZiBib29sbmFtZXM6JXBcbiIsIGZvbyk7CisJCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oZm9vID09IDApOworCX0gd2hpbGUgKDApCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1OTQ1OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNTk0ODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE1OTUxOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTU5NTQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9yZXN1bHQ9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE1OTY2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmZGVmIEhBVkVfWENVUlNFUworI2luY2x1ZGUgPHhjdXJzZXMuaD4KK2NoYXIgKiBYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisjZWxzZQorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdGVybS5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1RFUk1fSCkKKyNpbmNsdWRlIDx0ZXJtLmg+CisjZW5kaWYKKyNlbmRpZgorCitleHRlcm4gY2hhciBib29sbmFtZXM7CitpbnQgbWFpbih2b2lkKQoreworCXZvaWQgKmZvbyA9ICYoYm9vbG5hbWVzKTsKKwlmcHJpbnRmKHN0ZGVyciwgInRlc3RpbmcgbGlua2FnZSBvZiBib29sbmFtZXM6JXBcbiIsIGZvbyk7CisJJHtjZl9jdl9tYWluX3JldHVybjotcmV0dXJufShmb28gPT0gMCk7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTU5OTI6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE1OTk1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNTk5NzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2MDAwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQorZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorY2ZfcmVzdWx0PW5vCitmaQorcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisJZWNobyAiJGFzX21lOjE2MDExOiByZXN1bHQ6ICRjZl9yZXN1bHQiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3Jlc3VsdCIgPiY2CisJaWYgdGVzdCAkY2ZfcmVzdWx0ID0geWVzIDsgdGhlbgorCitjZl9yZXN1bHQ9YGVjaG8gImRlY2xfY3Vyc2VzX2RhdGFfYm9vbG5hbWVzIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCQljYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lICRjZl9yZXN1bHQgMQorRU9GCisKKwlmaQorZmkKKworZWNobyAiJGFzX21lOjE2MDI0OiBjaGVja2luZyBmb3IgZGF0YSBib29sZm5hbWVzIGRlY2xhcmF0aW9uIGluICR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofSIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkYXRhIGJvb2xmbmFtZXMgZGVjbGFyYXRpb24gaW4gJHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Li4uICRFQ0hPX0MiID4mNgorCitjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE2MDI4ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmZGVmIEhBVkVfWENVUlNFUworI2luY2x1ZGUgPHhjdXJzZXMuaD4KK2NoYXIgKiBYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdCI7CisjZWxzZQorI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT4KKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX05DVVJTRVNfVEVSTV9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdGVybS5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1RFUk1fSCkKKyNpbmNsdWRlIDx0ZXJtLmg+CisjZW5kaWYKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKwordm9pZCAqZm9vID0gJihib29sZm5hbWVzKQorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2MDU2OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjA1OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNjA2MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2MDY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9yZXN1bHQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZToxNjA3NDogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgorCitpZiB0ZXN0ICRjZl9yZXN1bHQgPSB5ZXMgOyB0aGVuCisKK2NmX3Jlc3VsdD1gZWNobyAiaGF2ZV9jdXJzZXNfZGF0YV9ib29sZm5hbWVzIiB8IHNlZCB5JWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tJUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fJWAKKworCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3Jlc3VsdCAxCitFT0YKKworZWxzZQorCWVjaG8gIiRhc19tZToxNjA4NjogY2hlY2tpbmcgZm9yIGRhdGEgYm9vbGZuYW1lcyBpbiBsaWJyYXJ5IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRhdGEgYm9vbGZuYW1lcyBpbiBsaWJyYXJ5Li4uICRFQ0hPX0MiID4mNgorCSMgQlNEIGxpbmtlcnMgaW5zaXN0IG9uIG1ha2luZyB3ZWFrIGxpbmthZ2UsIGJ1dCByZXNvbHZlIGF0IHJ1bnRpbWUuCisJaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKworCSMgY3Jvc3MtY29tcGlsaW5nCisJY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNjA5MyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZmRlZiBIQVZFX1hDVVJTRVMKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitjaGFyICogWEN1cnNlc1Byb2dyYW1OYW1lID0gInRlc3QiOworI2Vsc2UKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlc3cvdGVybS5oPgorI2VsaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2VzL3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9URVJNX0gpCisjaW5jbHVkZSA8dGVybS5oPgorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuIGNoYXIgYm9vbGZuYW1lczsKK2ludAorbWFpbiAoKQoreworCisJZG8geworCQl2b2lkICpmb28gPSAmKGJvb2xmbmFtZXMpOworCQlmcHJpbnRmKHN0ZGVyciwgInRlc3RpbmcgbGlua2FnZSBvZiBib29sZm5hbWVzOiVwXG4iLCBmb28pOworCQkke2NmX2N2X21haW5fcmV0dXJuOi1yZXR1cm59KGZvbyA9PSAwKTsKKwl9IHdoaWxlICgwKQorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjEyNjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTYxMjk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNjEzMjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2MTM1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgY2ZfcmVzdWx0PXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitjZl9yZXN1bHQ9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisjbGluZSAxNjE0NyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZmRlZiBIQVZFX1hDVVJTRVMKKyNpbmNsdWRlIDx4Y3Vyc2VzLmg+CitjaGFyICogWEN1cnNlc1Byb2dyYW1OYW1lID0gInRlc3QiOworI2Vsc2UKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+CisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlc3cvdGVybS5oPgorI2VsaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoSEFWRV9OQ1VSU0VTX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2VzL3Rlcm0uaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9URVJNX0gpCisjaW5jbHVkZSA8dGVybS5oPgorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuIGNoYXIgYm9vbGZuYW1lczsKK2ludCBtYWluKHZvaWQpCit7CisJdm9pZCAqZm9vID0gJihib29sZm5hbWVzKTsKKwlmcHJpbnRmKHN0ZGVyciwgInRlc3RpbmcgbGlua2FnZSBvZiBib29sZm5hbWVzOiVwXG4iLCBmb28pOworCSR7Y2ZfY3ZfbWFpbl9yZXR1cm46LXJldHVybn0oZm9vID09IDApOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2MTczOiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjE3NjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYxNzg6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjE4MTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3Jlc3VsdD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKK2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3Jlc3VsdD1ubworZmkKK3JtIC1mIGNvcmUgY29yZS4qICouY29yZSBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCWVjaG8gIiRhc19tZToxNjE5MjogcmVzdWx0OiAkY2ZfcmVzdWx0IiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9yZXN1bHQiID4mNgorCWlmIHRlc3QgJGNmX3Jlc3VsdCA9IHllcyA7IHRoZW4KKworY2ZfcmVzdWx0PWBlY2hvICJkZWNsX2N1cnNlc19kYXRhX2Jvb2xmbmFtZXMiIHwgc2VkIHklYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lYAorCisJCWNhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgJGNmX3Jlc3VsdCAxCitFT0YKKworCWZpCitmaQorCitpZiAoIHRlc3QgIiRHQ0MiID0geWVzIHx8IHRlc3QgIiRHWFgiID0geWVzICkKK3RoZW4KK2VjaG8gIiRhc19tZToxNjIwNzogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdHVybiBvbiBnY2Mgd2FybmluZ3MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB5b3Ugd2FudCB0byB0dXJuIG9uIGdjYyB3YXJuaW5ncy4uLiAkRUNIT19DIiA+JjYKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXdhcm5pbmdzIG9yIC0tZGlzYWJsZS13YXJuaW5ncyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV93YXJuaW5ncytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2YWw9IiRlbmFibGVfd2FybmluZ3MiCisgIHRlc3QgIiRlbmFibGV2YWwiICE9IHllcyAmJiBlbmFibGV2YWw9bm8KKwlpZiB0ZXN0ICIkZW5hYmxldmFsIiAhPSAibm8iIDsgdGhlbgorICAgIHdpdGhfd2FybmluZ3M9eWVzCisJZWxzZQorCQl3aXRoX3dhcm5pbmdzPW5vCisJZmkKK2Vsc2UKKyAgZW5hYmxldmFsPW5vCisJd2l0aF93YXJuaW5ncz1ubworCitmaTsKK2VjaG8gIiRhc19tZToxNjIyNDogcmVzdWx0OiAkd2l0aF93YXJuaW5ncyIgPiY1CitlY2hvICIke0VDSE9fVH0kd2l0aF93YXJuaW5ncyIgPiY2CitpZiB0ZXN0ICIkd2l0aF93YXJuaW5ncyIgPSAieWVzIgordGhlbgorCitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorY2F0ID4gY29uZnRlc3QuaSA8PEVPRgorI2lmbmRlZiBHQ0NfUFJJTlRGCisjZGVmaW5lIEdDQ19QUklOVEYgMAorI2VuZGlmCisjaWZuZGVmIEdDQ19TQ0FORgorI2RlZmluZSBHQ0NfU0NBTkYgMAorI2VuZGlmCisjaWZuZGVmIEdDQ19OT1JFVFVSTgorI2RlZmluZSBHQ0NfTk9SRVRVUk4gLyogbm90aGluZyAqLworI2VuZGlmCisjaWZuZGVmIEdDQ19VTlVTRUQKKyNkZWZpbmUgR0NDX1VOVVNFRCAvKiBub3RoaW5nICovCisjZW5kaWYKK0VPRgoraWYgdGVzdCAiJEdDQyIgPSB5ZXMKK3RoZW4KKwl7IGVjaG8gIiRhc19tZToxNjI0NzogY2hlY2tpbmcgZm9yICRDQyBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZXMuLi4iID4mNQorZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgJENDIF9fYXR0cmlidXRlX18gZGlyZWN0aXZlcy4uLiIgPiY2O30KK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDE2MjUwICIke2FzX21lOi1jb25maWd1cmV9IgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisjaW5jbHVkZSAiY29uZnRlc3QuaCIKKyNpbmNsdWRlICJjb25mdGVzdC5pIgorI2lmCUdDQ19QUklOVEYKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoZm10LHZhcikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSAvKm5vdGhpbmcqLworI2VuZGlmCisjaWYJR0NDX1NDQU5GCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgIF9fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpCisjZWxzZQorI2RlZmluZSBHQ0NfU0NBTkZMSUtFKGZtdCx2YXIpICAvKm5vdGhpbmcqLworI2VuZGlmCitleHRlcm4gdm9pZCB3b3coY2hhciAqLC4uLikgR0NDX1NDQU5GTElLRSgxLDIpOworZXh0ZXJuIHZvaWQgb29wcyhjaGFyICosLi4uKSBHQ0NfUFJJTlRGTElLRSgxLDIpIEdDQ19OT1JFVFVSTjsKK2V4dGVybiB2b2lkIGZvbyh2b2lkKSBHQ0NfTk9SRVRVUk47CitpbnQgbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W10gR0NDX1VOVVNFRCkgeyByZXR1cm4gMDsgfQorRU9GCisJY2ZfcHJpbnRmX2F0dHJpYnV0ZT1ubworCWNmX3NjYW5mX2F0dHJpYnV0ZT1ubworCWZvciBjZl9hdHRyaWJ1dGUgaW4gc2NhbmYgcHJpbnRmIHVudXNlZCBub3JldHVybgorCWRvCisKK2NmX0FUVFJJQlVURT1gZWNobyAiJGNmX2F0dHJpYnV0ZSIgfCBzZWQgeSVhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLSVBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fXyVgCisKKwkJY2ZfZGlyZWN0aXZlPSJfX2F0dHJpYnV0ZV9fKCgkY2ZfYXR0cmlidXRlKSkiCisJCWVjaG8gImNoZWNraW5nIGZvciAkQ0MgJGNmX2RpcmVjdGl2ZSIgMT4mNQorCisJCWNhc2UgJGNmX2F0dHJpYnV0ZSBpbgorCQkocHJpbnRmKQorCQkJY2ZfcHJpbnRmX2F0dHJpYnV0ZT15ZXMKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAxCitFT0YKKwkJCTs7CisJCShzY2FuZikKKwkJCWNmX3NjYW5mX2F0dHJpYnV0ZT15ZXMKKwkJCWNhdCA+Y29uZnRlc3QuaCA8PEVPRgorI2RlZmluZSBHQ0NfJGNmX0FUVFJJQlVURSAxCitFT0YKKwkJCTs7CisJCSgqKQorCQkJY2F0ID5jb25mdGVzdC5oIDw8RU9GCisjZGVmaW5lIEdDQ18kY2ZfQVRUUklCVVRFICRjZl9kaXJlY3RpdmUKK0VPRgorCQkJOzsKKwkJZXNhYworCisJCWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2Mjk5OiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjMwMjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCisJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiJGFzX21lOjE2MzA0OiByZXN1bHQ6IC4uLiAkY2ZfYXR0cmlidXRlIiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiAkY2ZfYXR0cmlidXRlIiA+JjYKKwkJCWNhdCBjb25mdGVzdC5oID4+Y29uZmRlZnMuaAorCQkJY2FzZSAkY2ZfYXR0cmlidXRlIGluCisJCQkobm9yZXR1cm4pCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgR0NDX05PUkVUVVJOICRjZl9kaXJlY3RpdmUKK0VPRgorCisJCQkJOzsKKwkJCShwcmludGYpCisJCQkJY2ZfdmFsdWU9Jy8qIG5vdGhpbmcgKi8nCisJCQkJaWYgdGVzdCAiJGNmX3ByaW50Zl9hdHRyaWJ1dGUiICE9IG5vIDsgdGhlbgorCQkJCQljZl92YWx1ZT0nX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZixmbXQsdmFyKSkpJworCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBHQ0NfUFJJTlRGIDEKK0VPRgorCisJCQkJZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBHQ0NfUFJJTlRGTElLRShmbXQsdmFyKSAkY2ZfdmFsdWUKK0VPRgorCisJCQkJOzsKKwkJCShzY2FuZikKKwkJCQljZl92YWx1ZT0nLyogbm90aGluZyAqLycKKwkJCQlpZiB0ZXN0ICIkY2Zfc2NhbmZfYXR0cmlidXRlIiAhPSBubyA7IHRoZW4KKwkJCQkJY2ZfdmFsdWU9J19fYXR0cmlidXRlX18oKGZvcm1hdChzY2FuZixmbXQsdmFyKSkpJworCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBHQ0NfU0NBTkYgMQorRU9GCisKKwkJCQlmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19TQ0FORkxJS0UoZm10LHZhcikgJGNmX3ZhbHVlCitFT0YKKworCQkJCTs7CisJCQkodW51c2VkKQorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEdDQ19VTlVTRUQgJGNmX2RpcmVjdGl2ZQorRU9GCisKKwkJCQk7OworCQkJZXNhYworCQlmaQorCWRvbmUKK2Vsc2UKKwlmZ3JlcCBkZWZpbmUgY29uZnRlc3QuaSA+PmNvbmZkZWZzLmgKK2ZpCitybSAtcmYgY29uZnRlc3QqCitmaQorCitJTlRFTF9DT01QSUxFUj1ubworCitpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KKwljYXNlICRob3N0X29zIGluCisJKGxpbnV4KnxnbnUqKQorCQllY2hvICIkYXNfbWU6MTYzNjg6IGNoZWNraW5nIGlmIHRoaXMgaXMgcmVhbGx5IEludGVsIEMgY29tcGlsZXIiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB0aGlzIGlzIHJlYWxseSBJbnRlbCBDIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgorCQljZl9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkJQ0ZMQUdTPSIkQ0ZMQUdTIC1uby1nY2MiCisJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTYzNzMgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyNlbHNlCittYWtlIGFuIGVycm9yCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjM5MDogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTYzOTM6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTYzOTY6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjM5OTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIElOVEVMX0NPTVBJTEVSPXllcworY2Zfc2F2ZV9DRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtd2UxNDciCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKKwkJZWNobyAiJGFzX21lOjE2NDEwOiByZXN1bHQ6ICRJTlRFTF9DT01QSUxFUiIgPiY1CitlY2hvICIke0VDSE9fVH0kSU5URUxfQ09NUElMRVIiID4mNgorCQk7OworCWVzYWMKK2ZpCisKK0NMQU5HX0NPTVBJTEVSPW5vCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzIDsgdGhlbgorCWVjaG8gIiRhc19tZToxNjQxOTogY2hlY2tpbmcgaWYgdGhpcyBpcyByZWFsbHkgQ2xhbmcgQyBjb21waWxlciIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHRoaXMgaXMgcmVhbGx5IENsYW5nIEMgY29tcGlsZXIuLi4gJEVDSE9fQyIgPiY2CisJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJQ0ZMQUdTPSIkQ0ZMQUdTIC1RdW51c2VkLWFyZ3VtZW50cyIKKwljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE2NDI0ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworaW50CittYWluICgpCit7CisKKyNpZmRlZiBfX2NsYW5nX18KKyNlbHNlCittYWtlIGFuIGVycm9yCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjQ0MTogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY0NDQ6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY0NDc6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjQ1MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIENMQU5HX0NPTVBJTEVSPXllcworY2Zfc2F2ZV9DRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAtUXVudXNlZC1hcmd1bWVudHMiCisKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCWVjaG8gIiRhc19tZToxNjQ2MTogcmVzdWx0OiAkQ0xBTkdfQ09NUElMRVIiID4mNQorZWNobyAiJHtFQ0hPX1R9JENMQU5HX0NPTVBJTEVSIiA+JjYKK2ZpCisKK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKyNsaW5lIDE2NDY2ICIke2FzX21lOi1jb25maWd1cmV9IgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeyByZXR1cm4gKGFyZ3ZbYXJnYy0xXSA9PSAwKSA7IH0KK0VPRgorCitpZiB0ZXN0ICIkSU5URUxfQ09NUElMRVIiID0geWVzCit0aGVuCisjIFRoZSAiLXdkWFhYIiBvcHRpb25zIHN1cHByZXNzIHdhcm5pbmdzOgorIyByZW1hcmsgIzE0MTk6IGV4dGVybmFsIGRlY2xhcmF0aW9uIGluIHByaW1hcnkgc291cmNlIGZpbGUKKyMgcmVtYXJrICMxNjgzOiBleHBsaWNpdCBjb252ZXJzaW9uIG9mIGEgNjQtYml0IGludGVncmFsIHR5cGUgdG8gYSBzbWFsbGVyIGludGVncmFsIHR5cGUgKHBvdGVudGlhbCBwb3J0YWJpbGl0eSBwcm9ibGVtKQorIyByZW1hcmsgIzE2ODQ6IGNvbnZlcnNpb24gZnJvbSBwb2ludGVyIHRvIHNhbWUtc2l6ZWQgaW50ZWdyYWwgdHlwZSAocG90ZW50aWFsIHBvcnRhYmlsaXR5IHByb2JsZW0pCisjIHJlbWFyayAjMTkzOiB6ZXJvIHVzZWQgZm9yIHVuZGVmaW5lZCBwcmVwcm9jZXNzaW5nIGlkZW50aWZpZXIKKyMgcmVtYXJrICM1OTM6IHZhcmlhYmxlICJjdXJzX3NiX2xlZnRfYXJyb3ciIHdhcyBzZXQgYnV0IG5ldmVyIHVzZWQKKyMgcmVtYXJrICM4MTA6IGNvbnZlcnNpb24gZnJvbSAiaW50IiB0byAiRGltZW5zaW9uPXt1bnNpZ25lZCBzaG9ydH0iIG1heSBsb3NlIHNpZ25pZmljYW50IGJpdHMKKyMgcmVtYXJrICM4Njk6IHBhcmFtZXRlciAidHciIHdhcyBuZXZlciByZWZlcmVuY2VkCisjIHJlbWFyayAjOTgxOiBvcGVyYW5kcyBhcmUgZXZhbHVhdGVkIGluIHVuc3BlY2lmaWVkIG9yZGVyCisjIHdhcm5pbmcgIzI3OTogY29udHJvbGxpbmcgZXhwcmVzc2lvbiBpcyBjb25zdGFudAorCisJeyBlY2hvICIkYXNfbWU6MTY0ODM6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9CisJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJRVhUUkFfQ0ZMQUdTPSItV2FsbCIKKwlmb3IgY2Zfb3B0IGluIFwKKwkJd2QxNDE5IFwKKwkJd2QxNjgzIFwKKwkJd2QxNjg0IFwKKwkJd2QxOTMgXAorCQl3ZDU5MyBcCisJCXdkMjc5IFwKKwkJd2Q4MTAgXAorCQl3ZDg2OSBcCisJCXdkOTgxCisJZG8KKwkJQ0ZMQUdTPSIkY2Zfc2F2ZV9DRkxBR1MgJEVYVFJBX0NGTEFHUyAtJGNmX29wdCIKKwkJaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY0OTk6IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2NTAyOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KKwkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIkYXNfbWU6MTY1MDQ6IHJlc3VsdDogLi4uIC0kY2Zfb3B0IiA+JjUKK2VjaG8gIiR7RUNIT19UfS4uLiAtJGNmX29wdCIgPiY2CisJCQlFWFRSQV9DRkxBR1M9IiRFWFRSQV9DRkxBR1MgLSRjZl9vcHQiCisJCWZpCisJZG9uZQorCUNGTEFHUz0iJGNmX3NhdmVfQ0ZMQUdTIgorCitlbGlmIHRlc3QgIiRHQ0MiID0geWVzCit0aGVuCisJeyBlY2hvICIkYXNfbWU6MTY1MTM6IGNoZWNraW5nIGZvciAkQ0Mgd2FybmluZyBvcHRpb25zLi4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yICRDQyB3YXJuaW5nIG9wdGlvbnMuLi4iID4mNjt9CisJY2Zfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJRVhUUkFfQ0ZMQUdTPQorCWNmX3dhcm5fQ09OU1Q9IiIKKwl0ZXN0ICIkd2l0aF9leHRfY29uc3QiID0geWVzICYmIGNmX3dhcm5fQ09OU1Q9Ild3cml0ZS1zdHJpbmdzIgorCWNmX2djY193YXJuaW5ncz0iV2lnbm9yZWQtcXVhbGlmaWVycyBXbG9naWNhbC1vcCBXdmFyYXJncyIKKwl0ZXN0ICJ4JENMQU5HX0NPTVBJTEVSIiA9IHh5ZXMgJiYgY2ZfZ2NjX3dhcm5pbmdzPQorCWZvciBjZl9vcHQgaW4gVyBXYWxsIFwKKwkJV2JhZC1mdW5jdGlvbi1jYXN0IFwKKwkJV2Nhc3QtYWxpZ24gXAorCQlXY2FzdC1xdWFsIFwKKwkJV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBcCisJCVdleHRyYSBcCisJCVdpbmxpbmUgXAorCQlXbWlzc2luZy1kZWNsYXJhdGlvbnMgXAorCQlXbWlzc2luZy1wcm90b3R5cGVzIFwKKwkJV25lc3RlZC1leHRlcm5zIFwKKwkJV3BvaW50ZXItYXJpdGggXAorCQlXc2hhZG93IFwKKwkJV3N0cmljdC1wcm90b3R5cGVzIFwKKwkJV3VuZGVmICRjZl9nY2Nfd2FybmluZ3MgJGNmX3dhcm5fQ09OU1QKKwlkbworCQlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyAkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjUzNzogXCIkYWNfY29tcGlsZVwiIikgPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY1NDA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgorCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIiRhc19tZToxNjU0MjogcmVzdWx0OiAuLi4gLSRjZl9vcHQiID4mNQorZWNobyAiJHtFQ0hPX1R9Li4uIC0kY2Zfb3B0IiA+JjYKKwkJCWNhc2UgJGNmX29wdCBpbgorCQkJKFdjYXN0LXF1YWwpCisJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRFhUU1RSSU5HREVGSU5FUyIKKwkJCQk7OworCQkJKFdpbmxpbmUpCisJCQkJY2FzZSAkR0NDX1ZFUlNJT04gaW4KKwkJCQkoWzM0XS4qKQorCQkJCQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCWZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04iIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxNjU1MzogdGVzdGluZyBmZWF0dXJlIGlzIGJyb2tlbiBpbiBnY2MgJEdDQ19WRVJTSU9OIC4uLiIgMT4mNQorCisJCQkJCWNvbnRpbnVlOzsKKwkJCQllc2FjCisJCQkJOzsKKwkJCShXcG9pbnRlci1hcml0aCkKKwkJCQljYXNlICRHQ0NfVkVSU0lPTiBpbgorCQkJCShbMTJdLiopCisJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJZmVhdHVyZSBpcyBicm9rZW4gaW4gZ2NjICRHQ0NfVkVSU0lPTiIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjE2NTYzOiB0ZXN0aW5nIGZlYXR1cmUgaXMgYnJva2VuIGluIGdjYyAkR0NDX1ZFUlNJT04gLi4uIiAxPiY1CisKKwkJCQkJY29udGludWU7OworCQkJCWVzYWMKKwkJCQk7OworCQkJZXNhYworCQkJRVhUUkFfQ0ZMQUdTPSIkRVhUUkFfQ0ZMQUdTIC0kY2Zfb3B0IgorCQlmaQorCWRvbmUKKwlDRkxBR1M9IiRjZl9zYXZlX0NGTEFHUyIKK2ZpCitybSAtcmYgY29uZnRlc3QqCisKK2ZpCitmaQorCitlY2hvICIkYXNfbWU6MTY1Nzk6IGNoZWNraW5nIGlmIHlvdSB3YW50IHRvIHVzZSBkbWFsbG9jIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRtYWxsb2MgZm9yIHRlc3RpbmcuLi4gJEVDSE9fQyIgPiY2CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZG1hbGxvYyBvciAtLXdpdGhvdXQtZG1hbGxvYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZG1hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICB3aXRodmFsPSIkd2l0aF9kbWFsbG9jIgorCitjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIFVTRV9ETUFMTE9DIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX2RtYWxsb2M9eWVzCitlbHNlCisgIHdpdGhfZG1hbGxvYz0KK2ZpOworZWNobyAiJGFzX21lOjE2NTk2OiByZXN1bHQ6ICR7d2l0aF9kbWFsbG9jOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RtYWxsb2M6LW5vfSIgPiY2CisKK2Nhc2UgLiR3aXRoX2NmbGFncyBpbgorKC4qLWcqKQorCWNhc2UgLiRDRkxBR1MgaW4KKwkoLiotZyopCisJCTs7CisJKCopCisKK2NmX2ZpeF9jcHBmbGFncz1ubworY2ZfbmV3X2NmbGFncz0KK2NmX25ld19jcHBmbGFncz0KK2NmX25ld19leHRyYV9jcHBmbGFncz0KKworZm9yIGNmX2FkZF9jZmxhZ3MgaW4gLWcKK2RvCitjYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KKyhubykKKwljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQorCQljYXNlICRjZl9hZGRfY2ZsYWdzIGluCisJCSgtRCopCisJCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKKworCQkJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCisKKwkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KKwkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCQkJY29udGludWUKKwkJCWZpCisJCQk7OworCQllc2FjCisJCWNhc2UgIiRDUFBGTEFHUyIgaW4KKwkJKCokY2ZfYWRkX2NmbGFncykKKwkJCTs7CisJCSgqKQorCQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkJKC1EKikKKwkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCisKK0NQUEZMQUdTPWBlY2hvICIkQ1BQRkxBR1MiIHwgXAorCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCisJCS1lICdzLy1bVURdJyIkY2ZfdHN0X2NwcGZsYWdzIidcKD1bXiAJXSpcKVw/JC8vZydgCisKKwkJCQk7OworCQkJZXNhYworCQkJY2ZfbmV3X2NwcGZsYWdzPSIkY2ZfbmV3X2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJOzsKKwkJZXNhYworCQk7OworCSgqKQorCQljZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJOzsKKwllc2FjCisJOzsKKyh5ZXMpCisJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCisJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXlteIl0qIidcJycvLydgCisKKwl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCisJOzsKK2VzYWMKK2RvbmUKKworaWYgdGVzdCAtbiAiJGNmX25ld19jZmxhZ3MiIDsgdGhlbgorCisJQ0ZMQUdTPSIkQ0ZMQUdTICRjZl9uZXdfY2ZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19jcHBmbGFncyIgOyB0aGVuCisKKwlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCitmaQorCitpZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KKworCUVYVFJBX0NQUEZMQUdTPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRFWFRSQV9DUFBGTEFHUyIKK2ZpCisKKwkJOzsKKwllc2FjCisJOzsKK2VzYWMKKworaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgOyB0aGVuCisJZWNobyAiJGFzX21lOjE2NjkwOiBjaGVja2luZyBmb3IgZG1hbGxvYy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRtYWxsb2MuaC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2RtYWxsb2NfaCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyNsaW5lIDE2Njk2ICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxkbWFsbG9jLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2NzAwOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxNjcwNjogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfZG1hbGxvY19oPXllcworZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgYWNfY3ZfaGVhZGVyX2RtYWxsb2NfaD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitmaQorZWNobyAiJGFzX21lOjE2NzI1OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfZG1hbGxvY19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfZG1hbGxvY19oIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9kbWFsbG9jX2ggPSB5ZXM7IHRoZW4KKworZWNobyAiJGFzX21lOjE2NzI5OiBjaGVja2luZyBmb3IgZG1hbGxvY19kZWJ1ZyBpbiAtbGRtYWxsb2MiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZG1hbGxvY19kZWJ1ZyBpbiAtbGRtYWxsb2MuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxkbWFsbG9jICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTY3MzcgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGRtYWxsb2NfZGVidWcgKCk7CitpbnQKK21haW4gKCkKK3sKK2RtYWxsb2NfZGVidWcgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CitpZiB7IChldmFsIGVjaG8gIiRhc19tZToxNjc1NjogXCIkYWNfbGlua1wiIikgPiY1CisgIChldmFsICRhY19saW5rKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTY3NTk6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZToxNjc2MjogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2NzY1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1Zz15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK2NhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQorYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1Zz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCitlY2hvICIkYXNfbWU6MTY3NzY6IHJlc3VsdDogJGFjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWciID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9kbWFsbG9jX2RtYWxsb2NfZGVidWciID4mNgoraWYgdGVzdCAkYWNfY3ZfbGliX2RtYWxsb2NfZG1hbGxvY19kZWJ1ZyA9IHllczsgdGhlbgorICBjYXQgPj5jb25mZGVmcy5oIDw8RU9GCisjZGVmaW5lIEhBVkVfTElCRE1BTExPQyAxCitFT0YKKworICBMSUJTPSItbGRtYWxsb2MgJExJQlMiCisKK2ZpCisKK2ZpCisKK2ZpCisKK2VjaG8gIiRhc19tZToxNjc5MTogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRibWFsbG9jIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIGRibWFsbG9jIGZvciB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWRibWFsbG9jIG9yIC0td2l0aG91dC1kYm1hbGxvYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZGJtYWxsb2Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfZGJtYWxsb2MiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgVVNFX0RCTUFMTE9DIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX2RibWFsbG9jPXllcworZWxzZQorICB3aXRoX2RibWFsbG9jPQorZmk7CitlY2hvICIkYXNfbWU6MTY4MDg6IHJlc3VsdDogJHt3aXRoX2RibWFsbG9jOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX2RibWFsbG9jOi1ub30iID4mNgorCitjYXNlIC4kd2l0aF9jZmxhZ3MgaW4KKyguKi1nKikKKwljYXNlIC4kQ0ZMQUdTIGluCisJKC4qLWcqKQorCQk7OworCSgqKQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJCTs7CisJZXNhYworCTs7Citlc2FjCisKK2lmIHRlc3QgIiR3aXRoX2RibWFsbG9jIiA9IHllcyA7IHRoZW4KKwllY2hvICIkYXNfbWU6MTY5MDI6IGNoZWNraW5nIGZvciBkYm1hbGxvYy5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRibWFsbG9jLmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9kYm1hbGxvY19oK3NldH0iID0gc2V0OyB0aGVuCisgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CitlbHNlCisgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTY5MDggImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPGRibWFsbG9jLmg+CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE2OTEyOiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CisgIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGVncmVwIC12ICdeICpcKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisgIGVjaG8gIiRhc19tZToxNjkxODogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgIGVsc2UKKyAgICBhY19jcHBfZXJyPQorICBmaQorZWxzZQorICBhY19jcHBfZXJyPXllcworZmkKK2lmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICBhY19jdl9oZWFkZXJfZGJtYWxsb2NfaD15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oPW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitlY2hvICIkYXNfbWU6MTY5Mzc6IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9kYm1hbGxvY19oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfZGJtYWxsb2NfaCIgPiY2CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfZGJtYWxsb2NfaCA9IHllczsgdGhlbgorCitlY2hvICIkYXNfbWU6MTY5NDE6IGNoZWNraW5nIGZvciBkZWJ1Z19tYWxsb2MgaW4gLWxkYm1hbGxvYyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkZWJ1Z19tYWxsb2MgaW4gLWxkYm1hbGxvYy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfbGliX2RibWFsbG9jX2RlYnVnX21hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGRibWFsbG9jICAkTElCUyIKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTY5NDkgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCisvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKKy8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCitjaGFyIGRlYnVnX21hbGxvYyAoKTsKK2ludAorbWFpbiAoKQoreworZGVidWdfbWFsbG9jICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY5Njg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE2OTcxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTY5NzQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNjk3NzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2M9eWVzCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2FjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2M9bm8KK2ZpCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQorZWNobyAiJGFzX21lOjE2OTg4OiByZXN1bHQ6ICRhY19jdl9saWJfZGJtYWxsb2NfZGVidWdfbWFsbG9jIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfZGJtYWxsb2NfZGVidWdfbWFsbG9jIiA+JjYKK2lmIHRlc3QgJGFjX2N2X2xpYl9kYm1hbGxvY19kZWJ1Z19tYWxsb2MgPSB5ZXM7IHRoZW4KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PEVPRgorI2RlZmluZSBIQVZFX0xJQkRCTUFMTE9DIDEKK0VPRgorCisgIExJQlM9Ii1sZGJtYWxsb2MgJExJQlMiCisKK2ZpCisKK2ZpCisKK2ZpCisKK2VjaG8gIiRhc19tZToxNzAwMzogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHZhbGdyaW5kIGZvciB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gdXNlIHZhbGdyaW5kIGZvciB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXZhbGdyaW5kIG9yIC0td2l0aG91dC12YWxncmluZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfdmFsZ3JpbmQrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgd2l0aHZhbD0iJHdpdGhfdmFsZ3JpbmQiCisKK2NhdCA+PmNvbmZkZWZzLmggPDxFT0YKKyNkZWZpbmUgVVNFX1ZBTEdSSU5EIDEKK0VPRgorCisJOiAke3dpdGhfY2ZsYWdzOj0tZ30KKwk6ICR7d2l0aF9ub19sZWFrczo9eWVzfQorCSB3aXRoX3ZhbGdyaW5kPXllcworZWxzZQorICB3aXRoX3ZhbGdyaW5kPQorZmk7CitlY2hvICIkYXNfbWU6MTcwMjA6IHJlc3VsdDogJHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNQorZWNobyAiJHtFQ0hPX1R9JHt3aXRoX3ZhbGdyaW5kOi1ub30iID4mNgorCitjYXNlIC4kd2l0aF9jZmxhZ3MgaW4KKyguKi1nKikKKwljYXNlIC4kQ0ZMQUdTIGluCisJKC4qLWcqKQorCQk7OworCSgqKQorCitjZl9maXhfY3BwZmxhZ3M9bm8KK2NmX25ld19jZmxhZ3M9CitjZl9uZXdfY3BwZmxhZ3M9CitjZl9uZXdfZXh0cmFfY3BwZmxhZ3M9CisKK2ZvciBjZl9hZGRfY2ZsYWdzIGluIC1nCitkbworY2FzZSAkY2ZfZml4X2NwcGZsYWdzIGluCisobm8pCisJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCSgtdW5kZWZ8LW5vc3RkaW5jKnwtSSp8LUQqfC1VKnwtRXwtUHwtQykKKwkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgorCQkoLUQqKQorCQkJY2ZfdHN0X2NmbGFncz1gZWNobyAke2NmX2FkZF9jZmxhZ3N9IHxzZWQgLWUgJ3MvXi1EW149XSo9J1wnJ1wiW14iXSovLydgCisKKwkJCXRlc3QgIngke2NmX2FkZF9jZmxhZ3N9IiAhPSAieCR7Y2ZfdHN0X2NmbGFnc30iIFwKKwkJCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcworCisJCQlpZiB0ZXN0ICRjZl9maXhfY3BwZmxhZ3MgPSB5ZXMgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQllbGlmIHRlc3QgIiR7Y2ZfdHN0X2NmbGFnc30iID0gIlwiJyIgOyB0aGVuCisJCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgorCQkJCWNvbnRpbnVlCisJCQlmaQorCQkJOzsKKwkJZXNhYworCQljYXNlICIkQ1BQRkxBR1MiIGluCisJCSgqJGNmX2FkZF9jZmxhZ3MpCisJCQk7OworCQkoKikKKwkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KKwkJCSgtRCopCisJCQkJY2ZfdHN0X2NwcGZsYWdzPWBlY2hvICJ4JGNmX2FkZF9jZmxhZ3MiIHwgc2VkIC1lICdzL14uLi4vLycgLWUgJ3MvPS4qLy8nYAorCitDUFBGTEFHUz1gZWNobyAiJENQUEZMQUdTIiB8IFwKKwlzZWQJLWUgJ3MvLVtVRF0nIiRjZl90c3RfY3BwZmxhZ3MiJ1woPVteIAldKlwpXD9bIAldLyAvZycgXAorCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAorCisJCQkJOzsKKwkJCWVzYWMKKwkJCWNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwkoKikKKwkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCisJCTs7CisJZXNhYworCTs7CisoeWVzKQorCWNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkY2ZfYWRkX2NmbGFncyIKKworCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAorCisJdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAorCQkmJiB0ZXN0IC16ICIke2NmX3RzdF9jZmxhZ3N9IiBcCisJCSYmIGNmX2ZpeF9jcHBmbGFncz1ubworCTs7Citlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiA7IHRoZW4KKworCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKK2ZpCisKK2lmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgorCisJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkY2ZfbmV3X2NwcGZsYWdzIgorZmkKKworaWYgdGVzdCAtbiAiJGNmX25ld19leHRyYV9jcHBmbGFncyIgOyB0aGVuCisKKwlFWFRSQV9DUFBGTEFHUz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAkRVhUUkFfQ1BQRkxBR1MiCitmaQorCisJCTs7CisJZXNhYworCTs7Citlc2FjCisKK2VjaG8gIiRhc19tZToxNzExMzogY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtZW1vcnktbGVhayB0ZXN0aW5nLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGVha3Mgb3IgLS1kaXNhYmxlLWxlYWtzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xlYWtzK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9sZWFrcyIKKyAgaWYgdGVzdCAieCRlbmFibGV2YWwiID0geG5vOyB0aGVuIHdpdGhfbm9fbGVha3M9eWVzOyBlbHNlIHdpdGhfbm9fbGVha3M9bm87IGZpCitlbHNlCisgIDogJHt3aXRoX25vX2xlYWtzOj1ub30KK2ZpOworZWNobyAiJGFzX21lOjE3MTIzOiByZXN1bHQ6ICR3aXRoX25vX2xlYWtzIiA+JjUKK2VjaG8gIiR7RUNIT19UfSR3aXRoX25vX2xlYWtzIiA+JjYKKworaWYgdGVzdCAiJHdpdGhfbm9fbGVha3MiID0geWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8XEVPRgorI2RlZmluZSBOT19MRUFLUyAxCitFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PFxFT0YKKyNkZWZpbmUgWVlfTk9fTEVBS1MgMQorRU9GCisKK2ZpCisKK0xEX1JQQVRIX09QVD0KK2VjaG8gIiRhc19tZToxNzEzOTogY2hlY2tpbmcgZm9yIGFuIHJwYXRoIG9wdGlvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhbiBycGF0aCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2CitjYXNlICRjZl9jdl9zeXN0ZW1fbmFtZSBpbgorKGlyaXgqKQorCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJCUxEX1JQQVRIX09QVD0iLVdsLC1ycGF0aCwiCisJZWxzZQorCQlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJZmkKKwk7OworKGxpbnV4KnxnbnUqfGsqYnNkKi1nbnUpCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKG9wZW5ic2RbMi05XS4qfG1pcmJzZCopCisJTERfUlBBVEhfT1BUPSItV2wsLXJwYXRoLCIKKwk7OworKGRyYWdvbmZseSp8ZnJlZWJzZCopCisJTERfUlBBVEhfT1BUPSItcnBhdGggIgorCTs7CisobmV0YnNkKikKKwlMRF9SUEFUSF9PUFQ9Ii1XbCwtcnBhdGgsIgorCTs7Cisob3NmKnxtbHMrKikKKwlMRF9SUEFUSF9PUFQ9Ii1ycGF0aCAiCisJOzsKKyhzb2xhcmlzMiopCisJTERfUlBBVEhfT1BUPSItUiIKKwk7OworKCopCisJOzsKK2VzYWMKK2VjaG8gIiRhc19tZToxNzE3MDogcmVzdWx0OiAkTERfUlBBVEhfT1BUIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRMRF9SUEFUSF9PUFQiID4mNgorCitjYXNlICJ4JExEX1JQQVRIX09QVCIgaW4KKyh4LVIqKQorCWVjaG8gIiRhc19tZToxNzE3NTogY2hlY2tpbmcgaWYgd2UgbmVlZCBhIHNwYWNlIGFmdGVyIHJwYXRoIG9wdGlvbiIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHdlIG5lZWQgYSBzcGFjZSBhZnRlciBycGF0aCBvcHRpb24uLi4gJEVDSE9fQyIgPiY2CisJY2Zfc2F2ZV9MSUJTPSIkTElCUyIKKworY2ZfYWRkX2xpYnM9IiR7TERfUlBBVEhfT1BUfSRsaWJkaXIiCisjIEZpbHRlciBvdXQgZHVwbGljYXRlcyAtIHRoaXMgaGFwcGVucyB3aXRoIGJhZGx5LWRlc2lnbmVkICIucGMiIGZpbGVzLi4uCitmb3IgY2ZfYWRkXzFsaWIgaW4gJExJQlMKK2RvCisJZm9yIGNmX2FkZF8ybGliIGluICRjZl9hZGRfbGlicworCWRvCisJCWlmIHRlc3QgIngkY2ZfYWRkXzFsaWIiID0gIngkY2ZfYWRkXzJsaWIiCisJCXRoZW4KKwkJCWNmX2FkZF8xbGliPQorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJdGVzdCAtbiAiJGNmX2FkZF8xbGliIiAmJiBjZl9hZGRfbGlicz0iJGNmX2FkZF9saWJzICRjZl9hZGRfMWxpYiIKK2RvbmUKK0xJQlM9IiRjZl9hZGRfbGlicyIKKworCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTcxOTYgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAoraWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcyMDg6IFwiJGFjX2xpbmtcIiIpID4mNQorICAoZXZhbCAkYWNfbGluaykgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOjE3MjExOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKKyAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6MTcyMTQ6IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNzIxNzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGNmX3JwYXRoX3NwYWNlPW5vCitlbHNlCisgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKK2NmX3JwYXRoX3NwYWNlPXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwlMSUJTPSIkY2Zfc2F2ZV9MSUJTIgorCWVjaG8gIiRhc19tZToxNzIyNzogcmVzdWx0OiAkY2ZfcnBhdGhfc3BhY2UiID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX3JwYXRoX3NwYWNlIiA+JjYKKwl0ZXN0ICIkY2ZfcnBhdGhfc3BhY2UiID0geWVzICYmIExEX1JQQVRIX09QVD0iJExEX1JQQVRIX09QVCAiCisJOzsKK2VzYWMKKworZWNobyAiJGFzX21lOjE3MjMzOiBjaGVja2luZyBpZiBycGF0aC1oYWNrIHNob3VsZCBiZSBkaXNhYmxlZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGlmIHJwYXRoLWhhY2sgc2hvdWxkIGJlIGRpc2FibGVkLi4uICRFQ0hPX0MiID4mNgorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcnBhdGgtaGFjayBvciAtLWRpc2FibGUtcnBhdGgtaGFjayB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ycGF0aF9oYWNrK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV9ycGF0aF9oYWNrIgorICB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyAmJiBlbmFibGV2YWw9eWVzCisJaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gInllcyIgOyB0aGVuCisgICAgY2ZfZGlzYWJsZV9ycGF0aF9oYWNrPXllcworCWVsc2UKKwkJY2ZfZGlzYWJsZV9ycGF0aF9oYWNrPW5vCisJZmkKK2Vsc2UKKyAgZW5hYmxldmFsPXllcworCWNmX2Rpc2FibGVfcnBhdGhfaGFjaz1ubworCitmaTsKK2VjaG8gIiRhc19tZToxNzI1MDogcmVzdWx0OiAkY2ZfZGlzYWJsZV9ycGF0aF9oYWNrIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRjZl9kaXNhYmxlX3JwYXRoX2hhY2siID4mNgoraWYgdGVzdCAiJGNmX2Rpc2FibGVfcnBhdGhfaGFjayIgPSBubyA7IHRoZW4KKworZWNobyAiJGFzX21lOjE3MjU0OiBjaGVja2luZyBmb3IgdXBkYXRlZCBMREZMQUdTIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHVwZGF0ZWQgTERGTEFHUy4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgLW4gIiRMRF9SUEFUSF9PUFQiIDsgdGhlbgorCWVjaG8gIiRhc19tZToxNzI1NzogcmVzdWx0OiBtYXliZSIgPiY1CitlY2hvICIke0VDSE9fVH1tYXliZSIgPiY2CisKKwlmb3IgYWNfcHJvZyBpbiBsZGQKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitlY2hvICIkYXNfbWU6MTcyNjQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jZl9sZGRfcHJvZytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkY2ZfbGRkX3Byb2ciOyB0aGVuCisgIGFjX2N2X3Byb2dfY2ZfbGRkX3Byb2c9IiRjZl9sZGRfcHJvZyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0kYWNfcGF0aF9zZXBhcmF0b3IKK2FjX2R1bW15PSIkUEFUSCIKK2ZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICBJRlM9JGFjX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICRhc19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQiIHx8IGNvbnRpbnVlCithY19jdl9wcm9nX2NmX2xkZF9wcm9nPSIkYWNfcHJvZyIKK2VjaG8gIiRhc19tZToxNzI3OTogZm91bmQgJGFjX2Rpci8kYWNfd29yZCIgPiY1CiticmVhaworZG9uZQorCitmaQorZmkKK2NmX2xkZF9wcm9nPSRhY19jdl9wcm9nX2NmX2xkZF9wcm9nCitpZiB0ZXN0IC1uICIkY2ZfbGRkX3Byb2ciOyB0aGVuCisgIGVjaG8gIiRhc19tZToxNzI4NzogcmVzdWx0OiAkY2ZfbGRkX3Byb2ciID4mNQorZWNobyAiJHtFQ0hPX1R9JGNmX2xkZF9wcm9nIiA+JjYKK2Vsc2UKKyAgZWNobyAiJGFzX21lOjE3MjkwOiByZXN1bHQ6IG5vIiA+JjUKK2VjaG8gIiR7RUNIT19UfW5vIiA+JjYKK2ZpCisKKyAgdGVzdCAtbiAiJGNmX2xkZF9wcm9nIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJGNmX2xkZF9wcm9nIiB8fCBjZl9sZGRfcHJvZz0ibm8iCisKKwljZl9ycGF0aF9saXN0PSIvdXNyL2xpYiAvbGliIgorCWlmIHRlc3QgIiRjZl9sZGRfcHJvZyIgIT0gbm8KKwl0aGVuCisJCWNmX3JwYXRoX29vcHM9CisKK2NhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgorI2xpbmUgMTczMDQgImNvbmZpZ3VyZSIKKyNpbmNsdWRlICJjb25mZGVmcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK3ByaW50ZigiSGVsbG8iKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MzE2OiBcIiRhY19saW5rXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZToxNzMxOTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOjE3MzIyOiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6MTczMjU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorICBjZl9ycGF0aF9vb3BzPWAkY2ZfbGRkX3Byb2cgY29uZnRlc3QkYWNfZXhlZXh0IHwgZmdyZXAgJyBub3QgZm91bmQnIHwgc2VkIC1lICdzJSA9Pi4qJCUlJyB8c29ydCB8IHVuaXFgCisJCSBjZl9ycGF0aF9saXN0PWAkY2ZfbGRkX3Byb2cgY29uZnRlc3QkYWNfZXhlZXh0IHwgZmdyZXAgLyB8IHNlZCAtZSAncyVeLipbIAldLyUvJScgLWUgJ3MlL1teL11bXi9dKiQlJScgfHNvcnQgfCB1bmlxYAorZWxzZQorICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCisJCSMgSWYgd2UgcGFzc2VkIHRoZSBsaW5rLXRlc3QsIGJ1dCBnZXQgYSAibm90IGZvdW5kIiBvbiBhIGdpdmVuIGxpYnJhcnksCisJCSMgdGhpcyBjb3VsZCBiZSBkdWUgdG8gaW5lcHQgcmVjb25maWd1cmF0aW9uIG9mIGdjYyB0byBtYWtlIGl0IG9ubHkKKwkJIyBwYXJ0bHkgaG9ub3IgL3Vzci9sb2NhbC9saWIgKG9yIHdoYXRldmVyKS4gIFNvbWV0aW1lcyB0aGlzIGJlaGF2aW9yCisJCSMgaXMgaW50ZW50aW9uYWwsIGUuZy4sIGluc3RhbGxpbmcgZ2NjIGluIC91c3IvYmluIGFuZCBzdXBwcmVzc2luZyB0aGUKKwkJIyAvdXNyL2xvY2FsIGxpYnJhcmllcy4KKwkJaWYgdGVzdCAtbiAiJGNmX3JwYXRoX29vcHMiCisJCXRoZW4KKwkJCWZvciBjZl9ycGF0aF9zcmMgaW4gJGNmX3JwYXRoX29vcHMKKwkJCWRvCisJCQkJZm9yIGNmX3JwYXRoX2RpciBpbiBcCisJCQkJCS91c3IvbG9jYWwgXAorCQkJCQkvdXNyL3BrZyBcCisJCQkJCS9vcHQvc2Z3CisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAkY2ZfcnBhdGhfZGlyL2xpYi8kY2ZfcnBhdGhfc3JjCisJCQkJCXRoZW4KKwkJCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uYWRkaW5nIC1MJGNmX3JwYXRoX2Rpci9saWIgdG8gTERGTEFHUyBmb3IgJGNmX3JwYXRoX3NyYyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjE3MzUzOiB0ZXN0aW5nIC4uLmFkZGluZyAtTCRjZl9ycGF0aF9kaXIvbGliIHRvIExERkxBR1MgZm9yICRjZl9ycGF0aF9zcmMgLi4uIiAxPiY1CisKKwkJCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJGNmX3JwYXRoX2Rpci9saWIiCisJCQkJCQlicmVhaworCQkJCQlmaQorCQkJCWRvbmUKKwkJCWRvbmUKKwkJZmkKKwlmaQorCisJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2luZyBFWFRSQV9MREZMQUdTICRFWFRSQV9MREZMQUdTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTczNjU6IHRlc3RpbmcgLi4uY2hlY2tpbmcgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUyAuLi4iIDE+JjUKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2luZyBMREZMQUdTICRMREZMQUdTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTczNjk6IHRlc3RpbmcgLi4uY2hlY2tpbmcgTERGTEFHUyAkTERGTEFHUyAuLi4iIDE+JjUKKworY2ZfcnBhdGhfZHN0PQorZm9yIGNmX3JwYXRoX3NyYyBpbiAkTERGTEFHUworZG8KKwljYXNlICRjZl9ycGF0aF9zcmMgaW4KKwkoLUwqKQorCisJCSMgY2hlY2sgaWYgdGhpcyByZWZlcnMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggd2Ugd2lsbCBpZ25vcmUKKwkJY2ZfcnBhdGhfc2tpcD1ubworCQlpZiB0ZXN0IC1uICIkY2ZfcnBhdGhfbGlzdCIKKwkJdGhlbgorCQkJZm9yIGNmX3JwYXRoX2l0ZW0gaW4gJGNmX3JwYXRoX2xpc3QKKwkJCWRvCisJCQkJaWYgdGVzdCAieCRjZl9ycGF0aF9zcmMiID0gIngtTCRjZl9ycGF0aF9pdGVtIgorCQkJCXRoZW4KKwkJCQkJY2ZfcnBhdGhfc2tpcD15ZXMKKwkJCQkJYnJlYWsKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCisJCWlmIHRlc3QgIiRjZl9ycGF0aF9za2lwIiA9IG5vCisJCXRoZW4KKwkJCSMgdHJhbnNmb3JtIHRoZSBvcHRpb24KKwkJCWlmIHRlc3QgIiRMRF9SUEFUSF9PUFQiID0gIi1SICIgOyB0aGVuCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJS1SICUiYAorCQkJZWxzZQorCQkJCWNmX3JwYXRoX3RtcD1gZWNobyAiJGNmX3JwYXRoX3NyYyIgfHNlZCAtZSAicyUtTCUkTERfUlBBVEhfT1BUJSJgCisJCQlmaQorCisJCQkjIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgYWRkZWQgdGhpcywgYWRkIGl0IG5vdworCQkJY2ZfcnBhdGhfdHN0PWBlY2hvICIkRVhUUkFfTERGTEFHUyIgfCBzZWQgLWUgInMlJGNmX3JwYXRoX3RtcCAlJSJgCisJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3RzdCIgPSAieCRFWFRSQV9MREZMQUdTIgorCQkJdGhlbgorCQkJCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uRmlsdGVyICRjZl9ycGF0aF9zcmMgLT4kY2ZfcnBhdGhfdG1wIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTc0MDY6IHRlc3RpbmcgLi4uRmlsdGVyICRjZl9ycGF0aF9zcmMgLT4kY2ZfcnBhdGhfdG1wIC4uLiIgMT4mNQorCisJCQkJRVhUUkFfTERGTEFHUz0iJGNmX3JwYXRoX3RtcCAkRVhUUkFfTERGTEFHUyIKKwkJCWZpCisJCWZpCisJCTs7CisJZXNhYworCWNmX3JwYXRoX2RzdD0iJGNmX3JwYXRoX2RzdCAkY2ZfcnBhdGhfc3JjIgorZG9uZQorTERGTEFHUz0kY2ZfcnBhdGhfZHN0CisKK3Rlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJLi4uY2hlY2tlZCBMREZMQUdTICRMREZMQUdTIiAxPiY2CisKK2VjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MTc0MTk6IHRlc3RpbmcgLi4uY2hlY2tlZCBMREZMQUdTICRMREZMQUdTIC4uLiIgMT4mNQorCit0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmNoZWNraW5nIExJQlMgJExJQlMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxNzQyMzogdGVzdGluZyAuLi5jaGVja2luZyBMSUJTICRMSUJTIC4uLiIgMT4mNQorCitjZl9ycGF0aF9kc3Q9Citmb3IgY2ZfcnBhdGhfc3JjIGluICRMSUJTCitkbworCWNhc2UgJGNmX3JwYXRoX3NyYyBpbgorCSgtTCopCisKKwkJIyBjaGVjayBpZiB0aGlzIHJlZmVycyB0byBhIGRpcmVjdG9yeSB3aGljaCB3ZSB3aWxsIGlnbm9yZQorCQljZl9ycGF0aF9za2lwPW5vCisJCWlmIHRlc3QgLW4gIiRjZl9ycGF0aF9saXN0IgorCQl0aGVuCisJCQlmb3IgY2ZfcnBhdGhfaXRlbSBpbiAkY2ZfcnBhdGhfbGlzdAorCQkJZG8KKwkJCQlpZiB0ZXN0ICJ4JGNmX3JwYXRoX3NyYyIgPSAieC1MJGNmX3JwYXRoX2l0ZW0iCisJCQkJdGhlbgorCQkJCQljZl9ycGF0aF9za2lwPXllcworCQkJCQlicmVhaworCQkJCWZpCisJCQlkb25lCisJCWZpCisKKwkJaWYgdGVzdCAiJGNmX3JwYXRoX3NraXAiID0gbm8KKwkJdGhlbgorCQkJIyB0cmFuc2Zvcm0gdGhlIG9wdGlvbgorCQkJaWYgdGVzdCAiJExEX1JQQVRIX09QVCIgPSAiLVIgIiA7IHRoZW4KKwkJCQljZl9ycGF0aF90bXA9YGVjaG8gIiRjZl9ycGF0aF9zcmMiIHxzZWQgLWUgInMlLUwlLVIgJSJgCisJCQllbHNlCisJCQkJY2ZfcnBhdGhfdG1wPWBlY2hvICIkY2ZfcnBhdGhfc3JjIiB8c2VkIC1lICJzJS1MJSRMRF9SUEFUSF9PUFQlImAKKwkJCWZpCisKKwkJCSMgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBhZGRlZCB0aGlzLCBhZGQgaXQgbm93CisJCQljZl9ycGF0aF90c3Q9YGVjaG8gIiRFWFRSQV9MREZMQUdTIiB8IHNlZCAtZSAicyUkY2ZfcnBhdGhfdG1wICUlImAKKwkJCWlmIHRlc3QgIngkY2ZfcnBhdGhfdHN0IiA9ICJ4JEVYVFJBX0xERkxBR1MiCisJCQl0aGVuCisJCQkJdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5GaWx0ZXIgJGNmX3JwYXRoX3NyYyAtPiRjZl9ycGF0aF90bXAiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxNzQ2MDogdGVzdGluZyAuLi5GaWx0ZXIgJGNmX3JwYXRoX3NyYyAtPiRjZl9ycGF0aF90bXAgLi4uIiAxPiY1CisKKwkJCQlFWFRSQV9MREZMQUdTPSIkY2ZfcnBhdGhfdG1wICRFWFRSQV9MREZMQUdTIgorCQkJZmkKKwkJZmkKKwkJOzsKKwllc2FjCisJY2ZfcnBhdGhfZHN0PSIkY2ZfcnBhdGhfZHN0ICRjZl9ycGF0aF9zcmMiCitkb25lCitMSUJTPSRjZl9ycGF0aF9kc3QKKwordGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIgkuLi5jaGVja2VkIExJQlMgJExJQlMiIDE+JjYKKworZWNobyAiJHthc19tZTotY29uZmlndXJlfToxNzQ3MzogdGVzdGluZyAuLi5jaGVja2VkIExJQlMgJExJQlMgLi4uIiAxPiY1CisKKwl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCS4uLmNoZWNrZWQgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUyIgMT4mNgorCitlY2hvICIke2FzX21lOi1jb25maWd1cmV9OjE3NDc3OiB0ZXN0aW5nIC4uLmNoZWNrZWQgRVhUUkFfTERGTEFHUyAkRVhUUkFfTERGTEFHUyAuLi4iIDE+JjUKKworZWxzZQorCWVjaG8gIiRhc19tZToxNzQ4MDogcmVzdWx0OiBubyIgPiY1CitlY2hvICIke0VDSE9fVH1ubyIgPiY2CitmaQorCitmaQorCitURVNUX0FSR1M9IiRMSUJTIgorTElCUz0KKworYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIgorYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlZmF1bHQiCitjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKKyMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQorIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCisjIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgorIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndAorIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQuCisjCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdAorIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUuCisjCisjIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZW4gd2hlbgorIyBsb2FkaW5nIHRoaXMgZmlsZSwgb3RoZXIgKnVuc2V0KiBgYWNfY3ZfZm9vJyB3aWxsIGJlIGFzc2lnbmVkIHRoZQorIyBmb2xsb3dpbmcgdmFsdWVzLgorCitfQUNFT0YKKworIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKKyMgYnV0IHdlIGtub3cgb2Ygbm8gd29ya2Fyb3VuZCB0aGF0IGlzIHNpbXBsZSwgcG9ydGFibGUsIGFuZCBlZmZpY2llbnQuCisjIFNvLCBkb24ndCBwdXQgbmV3bGluZXMgaW4gY2FjaGUgdmFyaWFibGVzJyB2YWx1ZXMuCisjIFVsdHJpeCBzaCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKKyMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuCit7CisgIChzZXQpIDI+JjEgfAorICAgIGNhc2UgYChhY19zcGFjZT0nICc7IHNldCB8IGdyZXAgYWNfc3BhY2UpIDI+JjFgIGluCisgICAgKmFjX3NwYWNlPVwgKikKKyAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzIChkb3VibGUtcXVvdGUKKyAgICAgICMgc3Vic3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwpLgorICAgICAgc2VkIC1uIFwKKyAgICAgICAgInMvJy8nXFxcXCcnL2c7CisgICAgCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIgorICAgICAgOzsKKyAgICAqKQorICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KKyAgICAgIHNlZCAtbiBcCisgICAgICAgICJzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPVxcMi9wIgorICAgICAgOzsKKyAgICBlc2FjOworfSB8CisgIHNlZCAnCisgICAgIHQgY2xlYXIKKyAgICAgOiBjbGVhcgorICAgICBzL15cKFtePV0qXCk9XCguKlt7fV0uKlwpJC90ZXN0ICIke1wxK3NldH0iID0gc2V0IHx8ICYvCisgICAgIHQgZW5kCisgICAgIC9eYWNfY3ZfZW52LyFzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wxPVwyfS8KKyAgICAgOiBlbmQnID4+Y29uZmNhY2hlCitpZiBjbXAgLXMgJGNhY2hlX2ZpbGUgY29uZmNhY2hlOyB0aGVuIDo7IGVsc2UKKyAgaWYgdGVzdCAtdyAkY2FjaGVfZmlsZTsgdGhlbgorICAgIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiICYmIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgorICAgIGNhdCBjb25mY2FjaGUgPiRjYWNoZV9maWxlCisgIGVsc2UKKyAgICBlY2hvICJub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIKKyAgZmkKK2ZpCitybSAtZiBjb25mY2FjaGUKKwordGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAorIyBMZXQgbWFrZSBleHBhbmQgZXhlY19wcmVmaXguCit0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCisKKyMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgJChzcmNkaXIpLAorIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQKKyMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5CisjIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCitpZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbgorICBhY192cHN1Yj0nL15bIAldKlZQQVRIWyAJXSo9L3sKK3MvOipcJChzcmNkaXIpOiovOi87CitzLzoqXCR7c3JjZGlyfToqLzovOworcy86KkBzcmNkaXJAOiovOi87CitzL15cKFtePV0qPVsgCV0qXCk6Ki9cMS87CitzLzoqJC8vOworcy9eW149XSo9WyAJXSokLy87Cit9JworZmkKKworREVGUz0tREhBVkVfQ09ORklHX0gKKworOiAke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCit7IGVjaG8gIiRhc19tZToxNzU3MDogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQorZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KK2NhdCA+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuCisjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKKyMgY29uZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KKworZGVidWc9ZmFsc2UKK1NIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CithY19jc19pbnZvY2F0aW9uPSJcJDAgXCRAIgorCitfQUNFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCisjIEJlIEJvdXJuZSBjb21wYXRpYmxlCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKK2VsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIHNldCAtbyBwb3NpeAorZmkKKworIyBOYW1lIG9mIHRoZSBleGVjdXRhYmxlLgorYXNfbWU9YGVjaG8gIiQwIiB8c2VkICdzLC4qW1xcL10sLCdgCisKK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFzX2V4cHI9ZXhwcgorZWxzZQorICBhc19leHByPWZhbHNlCitmaQorCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQorZWNobyA+Y29uZiQkLmZpbGUKK2lmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICAjIFdlIGNvdWxkIGp1c3QgY2hlY2sgZm9yIERKR1BQOyBidXQgdGhpcyB0ZXN0IGEpIHdvcmtzIGIpIGlzIG1vcmUgZ2VuZXJpYworICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KKyAgaWYgdGVzdCAtZiBjb25mJCQuZXhlOyB0aGVuCisgICAgIyBEb24ndCB1c2UgbG4gYXQgYWxsOyB3ZSBkb24ndCBoYXZlIGFueSBsaW5rcworICAgIGFzX2xuX3M9J2NwIC1wJworICBlbHNlCisgICAgYXNfbG5fcz0nbG4gLXMnCisgIGZpCitlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19sbl9zPWxuCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wJworZmkKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCisKK2FzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKKworIyBTdXBwb3J0IHVuc2V0IHdoZW4gcG9zc2libGUuCitpZiAoRk9PPUZPTzsgdW5zZXQgRk9PKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYXNfdW5zZXQ9dW5zZXQKK2Vsc2UKKyAgYXNfdW5zZXQ9ZmFsc2UKK2ZpCisKKyMgTkxTIG51aXNhbmNlcy4KKyRhc191bnNldCBMQU5HIHx8IHRlc3QgIiR7TEFORytzZXR9IiAhPSBzZXQgfHwgeyBMQU5HPUM7IGV4cG9ydCBMQU5HOyB9CiskYXNfdW5zZXQgTENfQUxMIHx8IHRlc3QgIiR7TENfQUxMK3NldH0iICE9IHNldCB8fCB7IExDX0FMTD1DOyBleHBvcnQgTENfQUxMOyB9CiskYXNfdW5zZXQgTENfVElNRSB8fCB0ZXN0ICIke0xDX1RJTUUrc2V0fSIgIT0gc2V0IHx8IHsgTENfVElNRT1DOyBleHBvcnQgTENfVElNRTsgfQorJGFzX3Vuc2V0IExDX0NUWVBFIHx8IHRlc3QgIiR7TENfQ1RZUEUrc2V0fSIgIT0gc2V0IHx8IHsgTENfQ1RZUEU9QzsgZXhwb3J0IExDX0NUWVBFOyB9CiskYXNfdW5zZXQgTEFOR1VBR0UgfHwgdGVzdCAiJHtMQU5HVUFHRStzZXR9IiAhPSBzZXQgfHwgeyBMQU5HVUFHRT1DOyBleHBvcnQgTEFOR1VBR0U7IH0KKyRhc191bnNldCBMQ19DT0xMQVRFIHx8IHRlc3QgIiR7TENfQ09MTEFURStzZXR9IiAhPSBzZXQgfHwgeyBMQ19DT0xMQVRFPUM7IGV4cG9ydCBMQ19DT0xMQVRFOyB9CiskYXNfdW5zZXQgTENfTlVNRVJJQyB8fCB0ZXN0ICIke0xDX05VTUVSSUMrc2V0fSIgIT0gc2V0IHx8IHsgTENfTlVNRVJJQz1DOyBleHBvcnQgTENfTlVNRVJJQzsgfQorJGFzX3Vuc2V0IExDX01FU1NBR0VTIHx8IHRlc3QgIiR7TENfTUVTU0FHRVMrc2V0fSIgIT0gc2V0IHx8IHsgTENfTUVTU0FHRVM9QzsgZXhwb3J0IExDX01FU1NBR0VTOyB9CisKKyMgSUZTCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgorYXNfbmw9JworJworSUZTPSIgCSRhc19ubCIKKworIyBDRFBBVEguCiskYXNfdW5zZXQgQ0RQQVRIIHx8IHRlc3QgIiR7Q0RQQVRIK3NldH0iICE9IHNldCB8fCB7IENEUEFUSD06OyBleHBvcnQgQ0RQQVRIOyB9CisKK2V4ZWMgNj4mMQorCitfQUNFT0YKKworIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLgoraWYgdGVzdCAtbiAiJGFjX2NvbmZpZ19maWxlcyI7IHRoZW4KKyAgZWNobyAiY29uZmlnX2ZpbGVzPVwiJGFjX2NvbmZpZ19maWxlc1wiIiA+PiRDT05GSUdfU1RBVFVTCitmaQorCitpZiB0ZXN0IC1uICIkYWNfY29uZmlnX2hlYWRlcnMiOyB0aGVuCisgIGVjaG8gImNvbmZpZ19oZWFkZXJzPVwiJGFjX2NvbmZpZ19oZWFkZXJzXCIiID4+JENPTkZJR19TVEFUVVMKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19jb25maWdfbGlua3MiOyB0aGVuCisgIGVjaG8gImNvbmZpZ19saW5rcz1cIiRhY19jb25maWdfbGlua3NcIiIgPj4kQ09ORklHX1NUQVRVUworZmkKKworaWYgdGVzdCAtbiAiJGFjX2NvbmZpZ19jb21tYW5kcyI7IHRoZW4KKyAgZWNobyAiY29uZmlnX2NvbW1hbmRzPVwiJGFjX2NvbmZpZ19jb21tYW5kc1wiIiA+PiRDT05GSUdfU1RBVFVTCitmaQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKworYWNfY3NfdXNhZ2U9IlwKK1xgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZQorY3VycmVudCBjb25maWd1cmF0aW9uLgorCitVc2FnZTogJDAgW09QVElPTlNdIFtGSUxFXS4uLgorCisgIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisgIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25zCisgIC0tZmlsZT1GSUxFWzpURU1QTEFURV0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIEZJTEUKKyAgLS1oZWFkZXI9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gaGVhZGVyIEZJTEUKKworQ29uZmlndXJhdGlvbiBmaWxlczoKKyRjb25maWdfZmlsZXMKKworQ29uZmlndXJhdGlvbiBoZWFkZXJzOgorJGNvbmZpZ19oZWFkZXJzCisKK0NvbmZpZ3VyYXRpb24gY29tbWFuZHM6CiskY29uZmlnX2NvbW1hbmRzCisKK1JlcG9ydCBidWdzIHRvIDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+LiIKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PEVPRgorYWNfY3NfdmVyc2lvbj0iXFwKK2NvbmZpZy5zdGF0dXMKK2NvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Mi4yMDE0MTIwNCwKKyAgd2l0aCBvcHRpb25zIFxcImBlY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL1tcXCIiXGBcJF0vXFxcXCYvZydgXFwiCisKK0NvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxCitGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK1RoaXMgY29uZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKK3NyY2Rpcj0kc3JjZGlyCitJTlNUQUxMPSIkSU5TVEFMTCIKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKyMgSWYgbm8gZmlsZSBhcmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB0aGVuIHdlIG5lZWQgdG8gcHJvdmlkZSBkZWZhdWx0CisjIHZhbHVlLiAgQnkgd2UgbmVlZCB0byBrbm93IGlmIGZpbGVzIHdlcmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgorYWNfbmVlZF9kZWZhdWx0cz06Cit3aGlsZSB0ZXN0ICQjICE9IDAKK2RvCisgIGNhc2UgJDEgaW4KKyAgLS0qPSopCisgICAgYWNfb3B0aW9uPWBleHByICJ4JDEiIDogJ3hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9YGV4cHIgIngkMSIgOiAneFtePV0qPVwoLipcKSdgCisgICAgc2hpZnQKKyAgICBzZXQgZHVtbXkgIiRhY19vcHRpb24iICIkYWNfb3B0YXJnIiAkezErIiRAIn0KKyAgICBzaGlmdAorICAgIDs7CisgIC0qKTs7CisgICopICMgVGhpcyBpcyBub3QgYW4gb3B0aW9uLCBzbyB0aGUgdXNlciBoYXMgcHJvYmFibHkgZ2l2ZW4gZXhwbGljaXQKKyAgICAgIyBhcmd1bWVudHMuCisgICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OworICBlc2FjCisKKyAgY2FzZSAkMSBpbgorICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRpb25zLgorRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PEVPRgorICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKKyAgICBlY2hvICJydW5uaW5nICRTSEVMTCAkMCAiICRhY19jb25maWd1cmVfYXJncyAiIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIgorICAgIGV4ZWMgJFNIRUxMICQwICRhY19jb25maWd1cmVfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiA7OworRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKyAgLS12ZXJzaW9uIHwgLS12ZXJzKiB8IC1WICkKKyAgICBlY2hvICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgMCA7OworICAtLWhlIHwgLS1oKQorICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCisgICAgeyB7IGVjaG8gIiRhc19tZToxNzc0NjogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBhbWJpZ3VvdXMgb3B0aW9uOiAkMQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OworICAtLWhlbHAgfCAtLWhlbCB8IC1oICkKKyAgICBlY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDAgOzsKKyAgLS1kZWJ1ZyB8IC0tZCogfCAtZCApCisgICAgZGVidWc9OiA7OworICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQorICAgIHNoaWZ0CisgICAgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTICQxIgorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OworICAtLWhlYWRlciB8IC0taGVhZGUgfCAtLWhlYWQgfCAtLWhlYSApCisgICAgc2hpZnQKKyAgICBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTICQxIgorICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OworCisgICMgVGhpcyBpcyBhbiBlcnJvci4KKyAgLSopIHsgeyBlY2hvICIkYXNfbWU6MTc3NjU6IGVycm9yOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAkMQorVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7CisKKyAgKikgYWNfY29uZmlnX3RhcmdldHM9IiRhY19jb25maWdfdGFyZ2V0cyAkMSIgOzsKKworICBlc2FjCisgIHNoaWZ0Citkb25lCisKK2V4ZWMgNT4+Y29uZmlnLmxvZworY2F0ID4mNSA8PCBfQUNFT0YKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJ1bm5pbmcgY29uZmlnLnN0YXR1cy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSAyLjUyLjIwMTQxMjA0LCBleGVjdXRlZCB3aXRoCisgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKKyAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCisgIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MKKyAgQ09ORklHX0NPTU1BTkRTID0gJENPTkZJR19DT01NQU5EUworICA+ICRhY19jc19pbnZvY2F0aW9uCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKworX0FDRU9GCitFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxFT0YKKyMKKyMgSU5JVC1DT01NQU5EUyBzZWN0aW9uLgorIworCitBV0s9IiRBV0siCitFQ0hPX0NDPSIkRUNIT19DQyIKK0VDSE9fTEQ9IiRFQ0hPX0xEIgorU0hPV19DQz0iJFNIT1dfTEQiCisKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKK2ZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cworZG8KKyAgY2FzZSAiJGFjX2NvbmZpZ190YXJnZXQiIGluCisgICMgSGFuZGxpbmcgb2YgYXJndW1lbnRzLgorICAiTWFrZWZpbGUiICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7OworICAiZGVmYXVsdCIgKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVmYXVsdCIgOzsKKyAgIm5jdXJzZXNfY2ZnLmgiICkgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyBuY3Vyc2VzX2NmZy5oOm5jdXJzZXNfdHN0LmhpbiIgOzsKKyAgKikgeyB7IGVjaG8gIiRhc19tZToxNzgxNTogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKKyAgZXNhYworZG9uZQorCisjIElmIHRoZSB1c2VyIGRpZCBub3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUsCisjIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4KKyMgV2UgdXNlIHRoZSBsb25nIGZvcm0gZm9yIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgYmVjYXVzZSBvZiBhbiBleHRyZW1lbHkKKyMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMuCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbgorICB0ZXN0ICIke0NPTkZJR19GSUxFUytzZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcworICB0ZXN0ICIke0NPTkZJR19IRUFERVJTK3NldH0iID0gc2V0IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVhZGVycworICB0ZXN0ICIke0NPTkZJR19DT01NQU5EUytzZXR9IiA9IHNldCB8fCBDT05GSUdfQ09NTUFORFM9JGNvbmZpZ19jb21tYW5kcworZmkKKworIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBhbmQgaG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KKyRkZWJ1ZyB8fAoreworICB0cmFwICdleGl0X3N0YXR1cz0kPzsgcm0gLXJmICR0bXAgJiYgZXhpdCAkZXhpdF9zdGF0dXMnIDAKKyAgdHJhcCAneyAoZXhpdCAxKTsgZXhpdCAxOyB9JyAxIDIgMTMgMTUKK30KKworIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCis6ICR7VE1QRElSPS90bXB9Cit7CisgIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgLXEgIiRUTVBESVIvY3NYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKKyAgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIKK30gIHx8Cit7CisgIHRtcD0kVE1QRElSL2NzJCQtJFJBTkRPTQorICAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApCit9IHx8Cit7CisgICBlY2hvICIkbWU6IGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMgorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9Cit9CisKK0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PEVPRgorCisjCisjIENPTkZJR19GSUxFUyBzZWN0aW9uLgorIworCisjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHNjcmlwdHMgaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aGVuIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAoraWYgdGVzdCAtbiAiXCRDT05GSUdfRklMRVMiOyB0aGVuCisgICMgUHJvdGVjdCBhZ2FpbnN0IGJlaW5nIG9uIHRoZSByaWdodCBzaWRlIG9mIGEgc2VkIHN1YnN0IGluIGNvbmZpZy5zdGF0dXMuCisgIHNlZCAncy8sQC9AQC87IHMvQCwvQEAvOyBzLyw7dCB0XCQvQDt0IHQvOyAvQDt0IHRcJC9zL1tcXFxcJixdL1xcXFwmL2c7CisgICBzL0BALyxALzsgcy9AQC9ALC87IHMvQDt0IHRcJC8sO3QgdC8nID5cJHRtcC9zdWJzLnNlZCA8PFxcQ0VPRgorcyxAU0hFTExALCRTSEVMTCw7dCB0CitzLEBleGVjX3ByZWZpeEAsJGV4ZWNfcHJlZml4LDt0IHQKK3MsQHByZWZpeEAsJHByZWZpeCw7dCB0CitzLEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCwkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSw7dCB0CitzLEBiaW5kaXJALCRiaW5kaXIsO3QgdAorcyxAc2JpbmRpckAsJHNiaW5kaXIsO3QgdAorcyxAbGliZXhlY2RpckAsJGxpYmV4ZWNkaXIsO3QgdAorcyxAZGF0YXJvb3RkaXJALCRkYXRhcm9vdGRpciw7dCB0CitzLEBkYXRhZGlyQCwkZGF0YWRpciw7dCB0CitzLEBzeXNjb25mZGlyQCwkc3lzY29uZmRpciw7dCB0CitzLEBzaGFyZWRzdGF0ZWRpckAsJHNoYXJlZHN0YXRlZGlyLDt0IHQKK3MsQGxvY2Fsc3RhdGVkaXJALCRsb2NhbHN0YXRlZGlyLDt0IHQKK3MsQGxpYmRpckAsJGxpYmRpciw7dCB0CitzLEBpbmNsdWRlZGlyQCwkaW5jbHVkZWRpciw7dCB0CitzLEBvbGRpbmNsdWRlZGlyQCwkb2xkaW5jbHVkZWRpciw7dCB0CitzLEBpbmZvZGlyQCwkaW5mb2Rpciw7dCB0CitzLEBtYW5kaXJALCRtYW5kaXIsO3QgdAorcyxAUEFDS0FHRV9OQU1FQCwkUEFDS0FHRV9OQU1FLDt0IHQKK3MsQFBBQ0tBR0VfVEFSTkFNRUAsJFBBQ0tBR0VfVEFSTkFNRSw7dCB0CitzLEBQQUNLQUdFX1ZFUlNJT05ALCRQQUNLQUdFX1ZFUlNJT04sO3QgdAorcyxAUEFDS0FHRV9TVFJJTkdALCRQQUNLQUdFX1NUUklORyw7dCB0CitzLEBQQUNLQUdFX0JVR1JFUE9SVEAsJFBBQ0tBR0VfQlVHUkVQT1JULDt0IHQKK3MsQGJ1aWxkX2FsaWFzQCwkYnVpbGRfYWxpYXMsO3QgdAorcyxAaG9zdF9hbGlhc0AsJGhvc3RfYWxpYXMsO3QgdAorcyxAdGFyZ2V0X2FsaWFzQCwkdGFyZ2V0X2FsaWFzLDt0IHQKK3MsQEVDSE9fQ0AsJEVDSE9fQyw7dCB0CitzLEBFQ0hPX05ALCRFQ0hPX04sO3QgdAorcyxARUNIT19UQCwkRUNIT19ULDt0IHQKK3MsQFBBVEhfU0VQQVJBVE9SQCwkUEFUSF9TRVBBUkFUT1IsO3QgdAorcyxAREVGU0AsJERFRlMsO3QgdAorcyxATElCU0AsJExJQlMsO3QgdAorcyxAYnVpbGRALCRidWlsZCw7dCB0CitzLEBidWlsZF9jcHVALCRidWlsZF9jcHUsO3QgdAorcyxAYnVpbGRfdmVuZG9yQCwkYnVpbGRfdmVuZG9yLDt0IHQKK3MsQGJ1aWxkX29zQCwkYnVpbGRfb3MsO3QgdAorcyxAaG9zdEAsJGhvc3QsO3QgdAorcyxAaG9zdF9jcHVALCRob3N0X2NwdSw7dCB0CitzLEBob3N0X3ZlbmRvckAsJGhvc3RfdmVuZG9yLDt0IHQKK3MsQGhvc3Rfb3NALCRob3N0X29zLDt0IHQKK3MsQFNFVF9NQUtFQCwkU0VUX01BS0UsO3QgdAorcyxAQ0NALCRDQyw7dCB0CitzLEBDRkxBR1NALCRDRkxBR1MsO3QgdAorcyxATERGTEFHU0AsJExERkxBR1MsO3QgdAorcyxAQ1BQRkxBR1NALCRDUFBGTEFHUyw7dCB0CitzLEBhY19jdF9DQ0AsJGFjX2N0X0NDLDt0IHQKK3MsQEVYRUVYVEAsJEVYRUVYVCw7dCB0CitzLEBPQkpFWFRALCRPQkpFWFQsO3QgdAorcyxARVhUUkFfQ1BQRkxBR1NALCRFWFRSQV9DUFBGTEFHUyw7dCB0CitzLEBDUFBALCRDUFAsO3QgdAorcyxAQVdLQCwkQVdLLDt0IHQKK3MsQElOU1RBTExfUFJPR1JBTUAsJElOU1RBTExfUFJPR1JBTSw7dCB0CitzLEBJTlNUQUxMX1NDUklQVEAsJElOU1RBTExfU0NSSVBULDt0IHQKK3MsQElOU1RBTExfREFUQUAsJElOU1RBTExfREFUQSw7dCB0CitzLEBMSU5UQCwkTElOVCw7dCB0CitzLEBMSU5UX09QVFNALCRMSU5UX09QVFMsO3QgdAorcyxAQ1RBR1NALCRDVEFHUyw7dCB0CitzLEBFVEFHU0AsJEVUQUdTLDt0IHQKK3MsQE1BS0VfTE9XRVJfVEFHU0AsJE1BS0VfTE9XRVJfVEFHUyw7dCB0CitzLEBNQUtFX1VQUEVSX1RBR1NALCRNQUtFX1VQUEVSX1RBR1MsO3QgdAorcyxATUFUSF9MSUJALCRNQVRIX0xJQiw7dCB0CitzLEB0b3BfYnVpbGRkaXJALCR0b3BfYnVpbGRkaXIsO3QgdAorcyxAQ0NfR19PUFRALCRDQ19HX09QVCw7dCB0CitzLEBDQ19TSEFSRURfT1BUU0AsJENDX1NIQVJFRF9PUFRTLDt0IHQKK3MsQERGVF9ERVBfU1VGRklYQCwkREZUX0RFUF9TVUZGSVgsO3QgdAorcyxAREZUX09CSl9TVUJESVJALCRERlRfT0JKX1NVQkRJUiw7dCB0CitzLEBERlRfVVBSX01PREVMQCwkREZUX1VQUl9NT0RFTCw7dCB0CitzLEBMREAsJExELDt0IHQKK3MsQExERkxBR1NfU0hBUkVEQCwkTERGTEFHU19TSEFSRUQsO3QgdAorcyxATERGTEFHU19TVEFUSUNALCRMREZMQUdTX1NUQVRJQyw7dCB0CitzLEBMRF9NT0RFTEAsJExEX01PREVMLDt0IHQKK3MsQExEX1NIQVJFRF9PUFRTQCwkTERfU0hBUkVEX09QVFMsO3QgdAorcyxATElCVE9PTEAsJExJQlRPT0wsO3QgdAorcyxATElCVE9PTF9PUFRTQCwkTElCVE9PTF9PUFRTLDt0IHQKK3MsQExJQl9DTEVBTkAsJExJQl9DTEVBTiw7dCB0CitzLEBMSUJfQ09NUElMRUAsJExJQl9DT01QSUxFLDt0IHQKK3MsQExJQl9MSU5LQCwkTElCX0xJTkssO3QgdAorcyxATElOS19URVNUU0AsJExJTktfVEVTVFMsO3QgdAorcyxATE9DQUxfTERGTEFHU0AsJExPQ0FMX0xERkxBR1MsO3QgdAorcyxAUEFDS0FHRUAsJFBBQ0tBR0UsO3QgdAorcyxAUFRIUkVBREAsJFBUSFJFQUQsO3QgdAorcyxAVEVTVF9BUkdTQCwkVEVTVF9BUkdTLDt0IHQKK3MsQFRFU1RfREVQU0AsJFRFU1RfREVQUyw7dCB0CitzLEBURVNUX0xJQlNALCRURVNUX0xJQlMsO3QgdAorcyxAVElORk9fTERGTEFHU0AsJFRJTkZPX0xERkxBR1MsO3QgdAorcyxAVElORk9fTElCU0AsJFRJTkZPX0xJQlMsO3QgdAorcyxAY2ZfY3ZfYWJpX3ZlcnNpb25ALCRjZl9jdl9hYmlfdmVyc2lvbiw7dCB0CitzLEBjZl9jdl9yZWxfdmVyc2lvbkAsJGNmX2N2X3JlbF92ZXJzaW9uLDt0IHQKK3MsQGluY2x1ZGVzdWJkaXJALCRpbmNsdWRlc3ViZGlyLDt0IHQKK3MsQFBLR19DT05GSUdALCRQS0dfQ09ORklHLDt0IHQKK3MsQGFjX3B0X1BLR19DT05GSUdALCRhY19wdF9QS0dfQ09ORklHLDt0IHQKK3MsQEVDSE9fTFRALCRFQ0hPX0xULDt0IHQKK3MsQEVDSE9fTERALCRFQ0hPX0xELDt0IHQKK3MsQFJVTEVfQ0NALCRSVUxFX0NDLDt0IHQKK3MsQFNIT1dfQ0NALCRTSE9XX0NDLDt0IHQKK3MsQEVDSE9fQ0NALCRFQ0hPX0NDLDt0IHQKK3MsQE5DVVJTRVNfV1JBUF9QUkVGSVhALCROQ1VSU0VTX1dSQVBfUFJFRklYLDt0IHQKK3MsQE5DVVJTRVNfQ09ORklHQCwkTkNVUlNFU19DT05GSUcsO3QgdAorcyxAYWNfY3RfTkNVUlNFU19DT05GSUdALCRhY19jdF9OQ1VSU0VTX0NPTkZJRyw7dCB0CitzLEBYX0NGTEFHU0AsJFhfQ0ZMQUdTLDt0IHQKK3MsQFhfUFJFX0xJQlNALCRYX1BSRV9MSUJTLDt0IHQKK3MsQFhfTElCU0AsJFhfTElCUyw7dCB0CitzLEBYX0VYVFJBX0xJQlNALCRYX0VYVFJBX0xJQlMsO3QgdAorcyxAWENVUlNFU19DT05GSUdALCRYQ1VSU0VTX0NPTkZJRyw7dCB0CitzLEBhY19jdF9YQ1VSU0VTX0NPTkZJR0AsJGFjX2N0X1hDVVJTRVNfQ09ORklHLDt0IHQKK3MsQEVYVFJBX0NGTEFHU0AsJEVYVFJBX0NGTEFHUyw7dCB0CitzLEBjZl9sZGRfcHJvZ0AsJGNmX2xkZF9wcm9nLDt0IHQKK3MsQEVYVFJBX0xERkxBR1NALCRFWFRSQV9MREZMQUdTLDt0IHQKK0NFT0YKKworRU9GCisKKyAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgICMgU3BsaXQgdGhlIHN1YnN0aXR1dGlvbnMgaW50byBiaXRlLXNpemVkIHBpZWNlcyBmb3Igc2VkcyB3aXRoCisgICMgc21hbGwgY29tbWFuZCBudW1iZXIgbGltaXRzLCBsaWtlIG9uIERpZ2l0YWwgT1NGLzEgYW5kIEhQLVVYLgorICBhY19tYXhfc2VkX2xpbmVzPTQ4CisgIGFjX3NlZF9mcmFnPTEgIyBOdW1iZXIgb2YgY3VycmVudCBmaWxlLgorICBhY19iZWc9MSAjIEZpcnN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KKyAgYWNfZW5kPSRhY19tYXhfc2VkX2xpbmVzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KKyAgYWNfbW9yZV9saW5lcz06CisgIGFjX3NlZF9jbWRzPQorICB3aGlsZSAkYWNfbW9yZV9saW5lczsgZG8KKyAgICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KKyAgICAgIHNlZCAiMSwke2FjX2JlZ31kOyAke2FjX2VuZH1xIiAkdG1wL3N1YnMuc2VkID4kdG1wL3N1YnMuZnJhZworICAgIGVsc2UKKyAgICAgIHNlZCAiJHthY19lbmR9cSIgJHRtcC9zdWJzLnNlZCA+JHRtcC9zdWJzLmZyYWcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtcyAkdG1wL3N1YnMuZnJhZzsgdGhlbgorICAgICAgYWNfbW9yZV9saW5lcz1mYWxzZQorICAgIGVsc2UKKyAgICAgICMgVGhlIHB1cnBvc2Ugb2YgdGhlIGxhYmVsIGFuZCBvZiB0aGUgYnJhbmNoaW5nIGNvbmRpdGlvbiBpcyB0bworICAgICAgIyBzcGVlZCB1cCB0aGUgc2VkIHByb2Nlc3NpbmcgKGlmIHRoZXJlIGFyZSBubyBgQCcgYXQgYWxsLCB0aGVyZQorICAgICAgIyBpcyBubyBuZWVkIHRvIGJyb3dzZSBhbnkgb2YgdGhlIHN1YnN0aXR1dGlvbnMpLgorICAgICAgIyBUaGVzZSBhcmUgdGhlIHR3byBleHRyYSBzZWQgY29tbWFuZHMgbWVudGlvbmVkIGFib3ZlLgorICAgICAgKGVjaG8gJzp0CisgIC9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWInICYmIGNhdCAkdG1wL3N1YnMuZnJhZykgPiR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkCisgICAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCisgIAlhY19zZWRfY21kcz0ic2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgorICAgICAgZWxzZQorICAJYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKKyAgICAgIGZpCisgICAgICBhY19zZWRfZnJhZz1gZXhwciAkYWNfc2VkX2ZyYWcgKyAxYAorICAgICAgYWNfYmVnPSRhY19lbmQKKyAgICAgIGFjX2VuZD1gZXhwciAkYWNfZW5kICsgJGFjX21heF9zZWRfbGluZXNgCisgICAgZmkKKyAgZG9uZQorICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCisgICAgYWNfc2VkX2NtZHM9Y2F0CisgIGZpCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiCisKK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCitmb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfRklMRVM7IGRvIHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250aW51ZQorICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iLCBkZWZhdWx0aW5nIGluZmlsZT0ib3V0ZmlsZS5pbiIuCisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCisgICAgICAgIGNhdCA+JHRtcC9zdGRpbgorICAgICAgICBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAorICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworICAqOiogKSBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAorICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7CisgIGVzYWMKKworICAjIENvbXB1dGUgQHNyY2RpckAsIEB0b3Bfc3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGlyZWN0b3JpZXMuCisgIGFjX2Rpcj1gJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKyAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisgICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXAorICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCBcCisgICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKK2VjaG8gWCIkYWNfZmlsZSIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQorICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQorICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KKyAgCSAgcy8uKi8uLzsgcSdgCisgIGlmIHRlc3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgorICAgIHsgY2FzZSAiJGFjX2RpciIgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhc19pbmNyX2Rpcj07OworICAqKSAgICAgICAgICAgICAgICAgICAgICBhc19pbmNyX2Rpcj0uOzsKK2VzYWMKK2FzX2R1bW15PSIkYWNfZGlyIgorZm9yIGFzX21rZGlyX2RpciBpbiBgSUZTPScvXFwnOyBzZXQgWCAkYXNfZHVtbXk7IHNoaWZ0OyBlY2hvICIkQCJgOyBkbworICBjYXNlICRhc19ta2Rpcl9kaXIgaW4KKyAgICAjIFNraXAgRE9TIGRyaXZlc3BlYworICAgID86KSBhc19pbmNyX2Rpcj0kYXNfbWtkaXJfZGlyIDs7CisgICAgKikKKyAgICAgIGFzX2luY3JfZGlyPSRhc19pbmNyX2Rpci8kYXNfbWtkaXJfZGlyCisgICAgICB0ZXN0IC1kICIkYXNfaW5jcl9kaXIiIHx8IG1rZGlyICIkYXNfaW5jcl9kaXIiCisgICAgOzsKKyAgZXNhYworZG9uZTsgfQorCisgICAgYWNfZGlyX3N1ZmZpeD0iL2BlY2hvICRhY19kaXJ8c2VkICdzLF5cLi8sLCdgIgorICAgICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCisgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzLC9bXi9dKiwuLi8sZydgCisgIGVsc2UKKyAgICBhY19kaXJfc3VmZml4PSBhY19kb3RzPQorICBmaQorCisgIGNhc2UgJHNyY2RpciBpbgorICAuKSAgYWNfc3JjZGlyPS4KKyAgICAgIGlmIHRlc3QgLXogIiRhY19kb3RzIjsgdGhlbgorICAgICAgICAgYWNfdG9wX3NyY2Rpcj0uCisgICAgICBlbHNlCisgICAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzIHwgc2VkICdzLC8kLCwnYAorICAgICAgZmkgOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKQorICAgICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OworICAqKSAjIFJlbGF0aXZlIHBhdGguCisgICAgYWNfc3JjZGlyPSRhY19kb3RzJHNyY2RpciRhY19kaXJfc3VmZml4CisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfZG90cyRzcmNkaXIgOzsKKyAgZXNhYworCisgIGNhc2UgJElOU1RBTEwgaW4KKyAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OworICAqKSBhY19JTlNUQUxMPSRhY19kb3RzJElOU1RBTEwgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KKyAgICB7IGVjaG8gIiRhc19tZToxODA4ODogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KKyAgICBybSAtZiAiJGFjX2ZpbGUiCisgIGZpCisgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CisgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICBjb25maWd1cmVfaW5wdXQ9IkdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gYGVjaG8gJGFjX2ZpbGVfaW4gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZCAncywuKi8sLCdgIGJ5IGNvbmZpZ3VyZS4iCisKKyAgIyBGaXJzdCBsb29rIGZvciB0aGUgaW5wdXQgZmlsZXMgaW4gdGhlIGJ1aWxkIHRyZWUsIG90aGVyd2lzZSBpbiB0aGUKKyAgIyBzcmMgdHJlZS4KKyAgYWNfZmlsZV9pbnB1dHM9YElGUz06CisgICAgZm9yIGYgaW4gJGFjX2ZpbGVfaW47IGRvCisgICAgICBjYXNlICRmIGluCisgICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKKyAgICAgIFtcXC8kXSopCisgICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQorICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6MTgxMDY6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgICAgICAgZWNobyAkZjs7CisgICAgICAqKSAjIFJlbGF0aXZlCisgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KKyAgICAgICAgICAgIyBCdWlsZCB0cmVlCisgICAgICAgICAgIGVjaG8gJGYKKyAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KKyAgICAgICAgICAgIyBTb3VyY2UgdHJlZQorICAgICAgICAgICBlY2hvICRzcmNkaXIvJGYKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIyAvZGV2L251bGwgdHJlZQorICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOjE4MTE5OiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KKyAgICAgICAgIGZpOzsKKyAgICAgIGVzYWMKKyAgICBkb25lYCB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgIGFjX3dhcm5fZGF0YXJvb3RkaXI9bm8KKyAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgIGZvciBhY19pdGVtIGluICRhY19maWxlX2lucHV0cworICAgIGRvCisgICAgICBhY19zZWVuPWBncmVwICdAXChkYXRhZGlyXHxtYW5kaXJcfGluZm9kaXJcKUAnICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIGFjX3VzZWQ9YGdyZXAgJ0BkYXRhcm9vdGRpckAnICRhY19pdGVtYAorICAgICAgICBpZiB0ZXN0IC16ICIkYWNfdXNlZCI7IHRoZW4KKyAgICAgICAgICB7IGVjaG8gIiRhc19tZToxODEzNTogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogZGF0YXJvb3RkaXIgd2FzIHVzZWQgaW1wbGljaXRseSBidXQgbm90IHNldDoKKyRhY19zZWVuIiA+JjI7fQorICAgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgYWNfc2Vlbj1gZ3JlcCAnJHtkYXRhcm9vdGRpcn0nICRhY19pdGVtYAorICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgIHsgZWNobyAiJGFzX21lOjE4MTQ0OiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkYXRhcm9vdGRpciB3YXMgdXNlZCBleHBsaWNpdGx5IGJ1dCBub3Qgc2V0OgorJGFjX3NlZW4iID4mMjt9CisgICAgICAgIGFjX3dhcm5fZGF0YXJvb3RkaXI9eWVzCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKworaWYgdGVzdCAieCRhY193YXJuX2RhdGFyb290ZGlyIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZSAncyxAZGF0YXJvb3RkaXJALFwke3ByZWZpeH0vc2hhcmUsZycgLWUgJ3MsXCR7ZGF0YXJvb3RkaXJ9LFwke3ByZWZpeH0vc2hhcmUsZyciCitmaQorCitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8RU9GCisgIHNlZCAiJGFjX3Zwc3ViCiskZXh0cmFzdWIKK0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCis6dAorL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgorcyxAY29uZmlndXJlX2lucHV0QCwkY29uZmlndXJlX2lucHV0LDt0IHQKK3MsQHNyY2RpckAsJGFjX3NyY2Rpciw7dCB0CitzLEB0b3Bfc3JjZGlyQCwkYWNfdG9wX3NyY2Rpciw7dCB0CitzLEBJTlNUQUxMQCwkYWNfSU5TVEFMTCw7dCB0CisiICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+JHRtcC9vdXQKKyAgcm0gLWYgJHRtcC9zdGRpbgorICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgY3AgJHRtcC9vdXQgJGFjX2ZpbGUKKworICAgIGZvciBhY19uYW1lIGluIHByZWZpeCBleGVjX3ByZWZpeCBkYXRhcm9vdGRpcgorICAgIGRvCisgICAgICAgIGFjX3NlZW49YGZncmVwIC1uICckeyckYWNfbmFtZSdbOj1dLip9JyAkYWNfZmlsZWAKKyAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3NlZW4iOyB0aGVuCisgICAgICAgICAgICBhY19pbml0PWBlZ3JlcCAnWyAJXSonJGFjX25hbWUnWyAJXSo9JyAkYWNfZmlsZWAKKyAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhY19pbml0IjsgdGhlbgorICAgICAgICAgICAgICBhY19zZWVuPWBlY2hvICIkYWNfc2VlbiIgfHNlZCAtZSAncyxeLCckYWNfZmlsZSc6LCdgCisgICAgICAgICAgICAgIHsgZWNobyAiJGFzX21lOjE4MTgxOiBXQVJOSU5HOiBWYXJpYWJsZSAkYWNfbmFtZSBpcyB1c2VkIGJ1dCB3YXMgbm90IHNldDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogVmFyaWFibGUgJGFjX25hbWUgaXMgdXNlZCBidXQgd2FzIG5vdCBzZXQ6CiskYWNfc2VlbiIgPiYyO30KKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgZG9uZQorICAgIGVncmVwIC1uICdAW2Etel9dW2Etel8wLTldK0AnICRhY19maWxlID4kdG1wL291dAorICAgIGVncmVwIC1uICdAW0EtWl9dW0EtWl8wLTldK0AnICRhY19maWxlID4+JHRtcC9vdXQKKyAgICBpZiB0ZXN0IC1zICR0bXAvb3V0OyB0aGVuCisgICAgICBhY19zZWVuPWBzZWQgLWUgJ3MsXiwnJGFjX2ZpbGUnOiwnIDwgJHRtcC9vdXRgCisgICAgICB7IGVjaG8gIiRhc19tZToxODE5MjogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogU29tZSB2YXJpYWJsZXMgbWF5IG5vdCBiZSBzdWJzdGl0dXRlZDoKKyRhY19zZWVuIiA+JjI7fQorICAgIGZpCisgIGVsc2UKKyAgICBjYXQgJHRtcC9vdXQKKyAgZmkKKyAgcm0gLWYgJHRtcC9vdXQKKworZG9uZQorRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxFT0YKKworIworIyBDT05GSUdfSEVBREVSIHNlY3Rpb24uCisjCisKKyMgVGhlc2Ugc2VkIGNvbW1hbmRzIGFyZSBwYXNzZWQgdG8gc2VkIGFzICJBIE5BTUUgQiBOQU1FIEMgVkFMVUUgRCIsIHdoZXJlCisjIE5BTUUgaXMgdGhlIGNwcCBtYWNybyBiZWluZyBkZWZpbmVkIGFuZCBWQUxVRSBpcyB0aGUgdmFsdWUgaXQgaXMgYmVpbmcgZ2l2ZW4uCisjCisjIGFjX2Qgc2V0cyB0aGUgdmFsdWUgaW4gIiNkZWZpbmUgTkFNRSBWQUxVRSIgbGluZXMuCithY19kQT0ncyxeXChbIAldKlwpI1woWyAJXSpkZWZpbmVbIAldWyAJXSpcKScKK2FjX2RCPSdbIAldLiokLFwxI1wyJworYWNfZEM9JyAnCithY19kRD0nLDt0JworIyBhY19pIHR1cm5zICIjdW5kZWYgTkFNRSIgd2l0aCB0cmFpbGluZyBibGFua3MgaW50byAiI2RlZmluZSBOQU1FIFZBTFVFIi4KK2FjX2lBPSdzLF5cKFsgCV0qXCkjXChbIAldKlwpdW5kZWZcKFsgCV1bIAldKlwpJworYWNfaUI9J1woWyAJXVwpLFwxI1wyZGVmaW5lXDMnCithY19pQz0nICcKK2FjX2lEPSdcNCw7dCcKKyMgYWNfdSB0dXJucyAiI3VuZGVmIE5BTUUiIHdpdGhvdXQgdHJhaWxpbmcgYmxhbmtzIGludG8gIiNkZWZpbmUgTkFNRSBWQUxVRSIuCithY191QT0ncyxeXChbIAldKlwpI1woWyAJXSpcKXVuZGVmXChbIAldWyAJXSpcKScKK2FjX3VCPSckLFwxI1wyZGVmaW5lXDMnCithY191Qz0nICcKK2FjX3VEPScsO3QnCisKK2ZvciBhY19maWxlIGluIDogJENPTkZJR19IRUFERVJTOyBkbyB0ZXN0ICJ4JGFjX2ZpbGUiID0geDogJiYgY29udGludWUKKyAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgorICBjYXNlICRhY19maWxlIGluCisgIC0gfCAqOi0gfCAqOi06KiApICMgaW5wdXQgZnJvbSBzdGRpbgorICAgICAgICBjYXQgPiR0bXAvc3RkaW4KKyAgICAgICAgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKyAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKyAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKyAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKyAgKiApICAgYWNfZmlsZV9pbj0kYWNfZmlsZS5pbiA7OworICBlc2FjCisKKyAgdGVzdCB4IiRhY19maWxlIiAhPSB4LSAmJiB7IGVjaG8gIiRhc19tZToxODI0MTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KKworICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBpbiB0aGUgYnVpbGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQorICAjIHNyYyB0cmVlLgorICBhY19maWxlX2lucHV0cz1gSUZTPToKKyAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KKyAgICAgIGNhc2UgJGYgaW4KKyAgICAgIC0pIGVjaG8gJHRtcC9zdGRpbiA7OworICAgICAgW1xcLyRdKikKKyAgICAgICAgICMgQWJzb2x1dGUgKGNhbid0IGJlIERPUy1zdHlsZSwgYXMgSUZTPTopCisgICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZToxODI1MjogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKK2VjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQorICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CisgICAgICAgICBlY2hvICRmOzsKKyAgICAgICopICMgUmVsYXRpdmUKKyAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgorICAgICAgICAgICAjIEJ1aWxkIHRyZWUKKyAgICAgICAgICAgZWNobyAkZgorICAgICAgICAgZWxpZiB0ZXN0IC1mICIkc3JjZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAjIFNvdXJjZSB0cmVlCisgICAgICAgICAgIGVjaG8gJHNyY2Rpci8kZgorICAgICAgICAgZWxzZQorICAgICAgICAgICAjIC9kZXYvbnVsbCB0cmVlCisgICAgICAgICAgIHsgeyBlY2hvICIkYXNfbWU6MTgyNjU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorICAgICAgICAgZmk7OworICAgICAgZXNhYworICAgIGRvbmVgIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQorICAjIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2VzLgorICBzZWQgJ3MvWyAJXSokLy8nICRhY19maWxlX2lucHV0cyA+JHRtcC9pbgorCitFT0YKKworIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGEgbGlzdCBvZiAjZGVmaW5lJ3MuICBXZSB3b24ndCB1c2UgaXQgYXMgYSBzZWQKKyMgc2NyaXB0LCBidXQgYXMgZGF0YSB0byBpbnNlcnQgd2hlcmUgd2Ugc2VlIEBERUZTQC4gIFdlIGV4cGVjdCBBQ19TQVZFX0RFRlMgdG8KKyMgYmUgZWl0aGVyICdjYXQnIG9yICdzb3J0Jy4KK2NhdCBjb25mZGVmcy5oIHwgdW5pcSA+Y29uZnRlc3QudmFscworCisjIEJyZWFrIHVwIGNvbmZ0ZXN0LnZhbHMgYmVjYXVzZSBzb21lIHNoZWxscyBoYXZlIGEgbGltaXQgb24KKyMgdGhlIHNpemUgb2YgaGVyZSBkb2N1bWVudHMsIGFuZCBvbGQgc2VkcyBoYXZlIHNtYWxsIGxpbWl0cyB0b28uCisKK3JtIC1mIGNvbmZ0ZXN0LnRhaWwKK2VjaG8gJyAgcm0gLWYgY29uZnRlc3QuZnJhZycgPj4gJENPTkZJR19TVEFUVVMKK3doaWxlIGdyZXAgLiBjb25mdGVzdC52YWxzID4vZGV2L251bGwKK2RvCisgICMgV3JpdGUgY2h1bmtzIG9mIGEgbGltaXRlZC1zaXplIGhlcmUgZG9jdW1lbnQgdG8gY29uZnRlc3QuZnJhZy4KKyAgZWNobyAnICBjYXQgPj4gY29uZnRlc3QuZnJhZyA8PENFT0YnID4+ICRDT05GSUdfU1RBVFVTCisgIHNlZCAke2FjX21heF9oZXJlX2xpbmVzfXEgY29uZnRlc3QudmFscyB8IHNlZCAtZSAncy8jaWZkZWYuKi8jaWYgMC8nID4+ICRDT05GSUdfU1RBVFVTCisgIGVjaG8gJ0NFT0YnID4+ICRDT05GSUdfU1RBVFVTCisgIHNlZCAxLCR7YWNfbWF4X2hlcmVfbGluZXN9ZCBjb25mdGVzdC52YWxzID4gY29uZnRlc3QudGFpbAorICBybSAtZiBjb25mdGVzdC52YWxzCisgIG12IGNvbmZ0ZXN0LnRhaWwgY29uZnRlc3QudmFscworZG9uZQorcm0gLWYgY29uZnRlc3QudmFscworCisjIFJ1biBzZWQgdG8gc3Vic3RpdHV0ZSB0aGUgY29udGVudHMgb2YgY29uZnRlc3QuZnJhZyBpbnRvICR0bXAvaW4gYXQgdGhlCisjIG1hcmtlciBAREVGU0AuCitlY2hvICcgIGNhdCA+PiBjb25mdGVzdC5lZGl0IDw8Q0VPRgorL0BERUZTQC9yIGNvbmZ0ZXN0LmZyYWcKKy9AREVGU0AvZAorQ0VPRgorc2VkIC1mIGNvbmZ0ZXN0LmVkaXQgJHRtcC9pbiA+ICR0bXAvb3V0CitybSAtZiAkdG1wL2luCittdiAkdG1wL291dCAkdG1wL2luCitybSAtZiBjb25mdGVzdC5lZGl0IGNvbmZ0ZXN0LmZyYWcKKycgPj4gJENPTkZJR19TVEFUVVMKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CisgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICBpZiB0ZXN0IHgiJGFjX2ZpbGUiID0geC07IHRoZW4KKyAgICBlY2hvICIvKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLyIgPiR0bXAvY29uZmlnLmgKKyAgZWxzZQorICAgIGVjaG8gIi8qICRhY19maWxlLiAgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlLiAgKi8iID4kdG1wL2NvbmZpZy5oCisgIGZpCisgIGNhdCAkdG1wL2luID4+JHRtcC9jb25maWcuaAorICBybSAtZiAkdG1wL2luCisgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KKyAgICBpZiBjbXAgLXMgJGFjX2ZpbGUgJHRtcC9jb25maWcuaCAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgeyBlY2hvICIkYXNfbWU6MTgzMjM6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY1CitlY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICBhY19kaXI9YCRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisgICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAorICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKyAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAorICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CitlY2hvIFgiJGFjX2ZpbGUiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KKyAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9CisgIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CisgIAkgIHMvLiovLi87IHEnYAorICAgICAgaWYgdGVzdCAiJGFjX2RpciIgIT0gIiRhY19maWxlIiAmJiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCisgICAgICAgIHsgY2FzZSAiJGFjX2RpciIgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhc19pbmNyX2Rpcj07OworICAqKSAgICAgICAgICAgICAgICAgICAgICBhc19pbmNyX2Rpcj0uOzsKK2VzYWMKK2FzX2R1bW15PSIkYWNfZGlyIgorZm9yIGFzX21rZGlyX2RpciBpbiBgSUZTPScvXFwnOyBzZXQgWCAkYXNfZHVtbXk7IHNoaWZ0OyBlY2hvICIkQCJgOyBkbworICBjYXNlICRhc19ta2Rpcl9kaXIgaW4KKyAgICAjIFNraXAgRE9TIGRyaXZlc3BlYworICAgID86KSBhc19pbmNyX2Rpcj0kYXNfbWtkaXJfZGlyIDs7CisgICAgKikKKyAgICAgIGFzX2luY3JfZGlyPSRhc19pbmNyX2Rpci8kYXNfbWtkaXJfZGlyCisgICAgICB0ZXN0IC1kICIkYXNfaW5jcl9kaXIiIHx8IG1rZGlyICIkYXNfaW5jcl9kaXIiCisgICAgOzsKKyAgZXNhYworZG9uZTsgfQorCisgICAgICBmaQorICAgICAgcm0gLWYgJGFjX2ZpbGUKKyAgICAgIG12ICR0bXAvY29uZmlnLmggJGFjX2ZpbGUKKyAgICBmaQorICBlbHNlCisgICAgY2F0ICR0bXAvY29uZmlnLmgKKyAgICBybSAtZiAkdG1wL2NvbmZpZy5oCisgIGZpCitkb25lCitFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XEVPRgorIworIyBDT05GSUdfQ09NTUFORFMgc2VjdGlvbi4KKyMKK2ZvciBhY19maWxlIGluIDogJENPTkZJR19DT01NQU5EUzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCisgIGFjX2Rlc3Q9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgCisgIGFjX3NvdXJjZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKKworICBjYXNlICRhY19kZXN0IGluCisgICAgZGVmYXVsdCApCisKK2ZvciBjZl9kaXIgaW4gLgorZG8KKwlpZiB0ZXN0ICEgLWQgJHNyY2Rpci8kY2ZfZGlyOyB0aGVuCisJCWNvbnRpbnVlCisJZWxpZiB0ZXN0IC1mICRzcmNkaXIvJGNmX2Rpci9wcm9ncmFtczsgdGhlbgorCQkkQVdLIC1mICRzcmNkaXIvbWstdGVzdC5hd2sgSU5TVEFMTD15ZXMgRUNIT19MSU5LPSIkRUNIT19MRCIgJHNyY2Rpci8kY2ZfZGlyL3Byb2dyYW1zID4+JGNmX2Rpci9NYWtlZmlsZQorCWZpCitkb25lCisKKwljYXQgPj5NYWtlZmlsZSA8PFRFU1RfRU9GCisKKyMgVGhlc2UgcnVsZXMgYXJlIGdlbmVyYXRlZCBzbyB3ZSBkbyBub3QgcmVseSBvbiBzdWZmaXggcnVsZXMsIHdoaWNoIGRvIG5vdAorIyB3b3JrIGNvbnNpc3RlbnRseSBmb3IgZGlmZmVyZW50IG1ha2UtcHJvZ3JhbXMgKHRoZSAnXCQoTU9ERUwpLycgY29uZnVzZXMKKyMgc29tZSwgYW5kIHRoZSAnXCR4JyBjb25mdXNlcyBvdGhlcnMpLgorVEVTVF9FT0YKKworTElTVD1gc2VkIC1lICdzL1sgCV0uKi8vJyAtZSAnL15bI0BdL2QnICRzcmNkaXIvbW9kdWxlc2AKK2ZvciBOIGluICRMSVNUCitkbworCWNhdCA+Pk1ha2VmaWxlIDw8VEVTVF9FT0YKKworXCQoTU9ERUwpLyROLm8gOiBcJChzcmNkaXIpLyROLmMgXFwKKwlcJChzcmNkaXIpL3Rlc3QucHJpdi5oIFxcCisJbmN1cnNlc19jZmcuaAorCSRTSE9XX0NDCisJJEVDSE9fQ0NcJChDQykgLWMgXCQoQ0ZMQUdTX0RFRkFVTFQpIFwkKHNyY2RpcikvJE4uYworVEVTVF9FT0YKK2RvbmUKKworaWYgdGVzdCAtZiAuLi9jb25maWcuZ3Vlc3MgJiYgdGVzdCAtZiAuLi9jb25maWcuc3ViCit0aGVuCisJY2F0ID4+TWFrZWZpbGUgPDxURVNUX0VPRgorCisjIGlmIHdlIHVzZWQgQ0ZfSU5IRVJJVCBmb3IgZ2V0dGluZyB0aGVzZSBmaWxlcywgd2UgY2FuIHJlbW92ZSB0aGVtCitkaXN0Y2xlYW46OgorCXJtIC1mIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViCitURVNUX0VPRgorZmkKKyA7OworICBlc2FjCitkb25lCitFT0YKKworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcRU9GCisKK3sgKGV4aXQgMCk7IGV4aXQgMDsgfQorRU9GCitjaG1vZCAreCAkQ09ORklHX1NUQVRVUworYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKKworIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLgorIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5nIHRvIGNvbmZpZy5sb2cuCisjIFVuZm9ydHVuYXRlbHksIG9uIERPUyB0aGlzIGZhaWxzLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQgb3BlbgorIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzCisjIG91dHB1dCBpcyBzaW1wbHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLAorIyBlZmZlY3RpdmVseSBjbG9zaW5nIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZAorIyBhcHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1cmUsIHdlCisjIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWluLgoraWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCisgIGFjX2NzX3N1Y2Nlc3M9OgorICBleGVjIDU+L2Rldi9udWxsCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyB8fCBhY19jc19zdWNjZXNzPWZhbHNlCisgIGV4ZWMgNT4+Y29uZmlnLmxvZworICAjIFVzZSB8fCwgbm90ICYmLCB0byBhdm9pZCBleGl0aW5nIGZyb20gdGhlIGlmIHdpdGggJD8gPSAxLCB3aGljaAorICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CitmaQorCmRpZmYgLS1naXQgYS90ZXN0L2NvbmZpZ3VyZS5pbiBiL3Rlc3QvY29uZmlndXJlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMTI1MjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvbmZpZ3VyZS5pbgpAQCAtMCwwICsxLDM4NCBAQAorZG5sKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitkbmwgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCitkbmwgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKK2RubCAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorZG5sIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCitkbmwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKK2RubCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorZG5sIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorZG5sIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorZG5sIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCitkbmwgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKK2RubCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorZG5sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCitkbmwgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKK2RubCBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitkbmwgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKK2RubCBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorZG5sIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCitkbmwgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK2RubCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZG5sCitkbmwgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IDE5OTYsIGV0Yy4KK2RubAorZG5sICRJZDogY29uZmlndXJlLmluLHYgMS4xMjQgMjAxNS8wOC8wOCAyMDoyNDo0OSB0b20gRXhwICQKK2RubCBUaGlzIGlzIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24tc2NyaXB0IGZvciB0aGUgbmN1cnNlcyB0ZXN0IHByb2dyYW1zIHRoYXQKK2RubCBhbGxvd3MgdGhlIHRlc3QtZGlyZWN0b3J5IHRvIGJlIHNlcGFyYXRlbHkgY29uZmlndXJlZCBhZ2FpbnN0IGEgcmVmZXJlbmNlCitkbmwgc3lzdGVtIChpLmUuLCBzeXN2cjQgY3Vyc2VzKQorZG5sCitkbmwgSWYgeW91J3JlIGNvbmZpZ3VyaW5nIG5jdXJzZXMsIHlvdSBzaG91bGRuJ3QgbmVlZCB0byB1c2UgdGhpcyBzY3JpcHQuCitkbmwgSXQncyBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorZG5sCitkbmwgU2VlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi8gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19QUkVSRVEoMi41Mi4yMDAzMDIwOCkKK0FDX0lOSVQobmN1cnNlcy5jKQorQUNfQ09ORklHX0hFQURFUihuY3Vyc2VzX2NmZy5oOm5jdXJzZXNfdHN0LmhpbikKKworQ0ZfSU5IRVJJVF9TQ1JJUFQoY29uZmlnLmd1ZXNzKQorQ0ZfSU5IRVJJVF9TQ1JJUFQoY29uZmlnLnN1YikKK0NGX0NIRUNLX0NBQ0hFCisKK0FDX0FSR19QUk9HUkFNCisKK0FDX1BST0dfTUFLRV9TRVQKK0NGX1BST0dfQ0MKK0FDX1BST0dfQ1BQCitBQ19QUk9HX0FXSworQ0ZfUFJPR19JTlNUQUxMCitDRl9QUk9HX0xJTlQKK0NGX01BS0VfVEFHUworCitDRl9NQVRIX0xJQihNQVRIX0xJQixwb3coc2luKHgpLHgpKQorQUNfU1VCU1QoTUFUSF9MSUIpCisKK2RubCBUaGluZ3MgdGhhdCB3ZSBkb24ndCBuZWVkIChvciBtdXN0IG92ZXJyaWRlKSBpZiB3ZSdyZSBub3QgYnVpbGRpbmcgbmN1cnNlcworQ0ZfVE9QX0JVSUxERElSCitDQ19HX09QVD0iLWciCQkJCQlBQ19TVUJTVChDQ19HX09QVCkKK0NDX1NIQVJFRF9PUFRTPXVua25vd24JCQlBQ19TVUJTVChDQ19TSEFSRURfT1BUUykKK0NQUEZMQUdTPSIkQ1BQRkxBR1MiCQkJQUNfU1VCU1QoQ1BQRkxBR1MpCitERlRfREVQX1NVRkZJWD0iIgkJCQlBQ19TVUJTVChERlRfREVQX1NVRkZJWCkKK0RGVF9PQkpfU1VCRElSPWBwd2R8c2VkIC1lJ3M6LiovOjonYAlBQ19TVUJTVChERlRfT0JKX1NVQkRJUikKK0RGVF9VUFJfTU9ERUw9Ik5PUk1BTCIJCQlBQ19TVUJTVChERlRfVVBSX01PREVMKQorTEQ9ImxkIgkJCQkJCQlBQ19TVUJTVChMRCkKK0xERkxBR1NfU0hBUkVEPSIiCQkJCUFDX1NVQlNUKExERkxBR1NfU0hBUkVEKQorTERGTEFHU19TVEFUSUM9IiIJCQkJQUNfU1VCU1QoTERGTEFHU19TVEFUSUMpCitMRF9NT0RFTD0iIgkJCQkJCUFDX1NVQlNUKExEX01PREVMKQorTERfU0hBUkVEX09QVFM9IiIJCQkJQUNfU1VCU1QoTERfU0hBUkVEX09QVFMpCitMSUJUT09MPSIiCQkJCQkJQUNfU1VCU1QoTElCVE9PTCkKK0xJQlRPT0xfT1BUUz0iIgkJCQkJQUNfU1VCU1QoTElCVE9PTF9PUFRTKQorTElCX0NMRUFOPSIiCQkJCQlBQ19TVUJTVChMSUJfQ0xFQU4pCitMSUJfQ09NUElMRT0iIgkJCQkJQUNfU1VCU1QoTElCX0NPTVBJTEUpCitMSUJfTElOSz0nJHtDQ30nCQkJCUFDX1NVQlNUKExJQl9MSU5LKQorTElOS19URVNUUz0iIgkJCQkJQUNfU1VCU1QoTElOS19URVNUUykKK0xPQ0FMX0xERkxBR1M9IiIJCQkJQUNfU1VCU1QoTE9DQUxfTERGTEFHUykKK1BBQ0tBR0U9Im5jdXJzZXMtZXhhbXBsZXMiCQlBQ19TVUJTVChQQUNLQUdFKQorUFRIUkVBRD0iLWxtIgkJCQkJQUNfU1VCU1QoUFRIUkVBRCkKK1RFU1RfQVJHUz0iIgkJCQkJQUNfU1VCU1QoVEVTVF9BUkdTKQorVEVTVF9ERVBTPSIiCQkJCQlBQ19TVUJTVChURVNUX0RFUFMpCitURVNUX0xJQlM9IiIJCQkJCUFDX1NVQlNUKFRFU1RfTElCUykKK1RJTkZPX0xERkxBR1M9JycJCQkJQUNfU1VCU1QoVElORk9fTERGTEFHUykKK1RJTkZPX0xJQlM9JyQoTElCU19DVVJTRVMpJwkJQUNfU1VCU1QoVElORk9fTElCUykKK2NmX2N2X2FiaV92ZXJzaW9uPSIiCQkJQUNfU1VCU1QoY2ZfY3ZfYWJpX3ZlcnNpb24pCitjZl9jdl9yZWxfdmVyc2lvbj0iIgkJCUFDX1NVQlNUKGNmX2N2X3JlbF92ZXJzaW9uKQoraW5jbHVkZXN1YmRpcj0iIgkJCQlBQ19TVUJTVChpbmNsdWRlc3ViZGlyKQorCitjZl9jdl9zY3JlZW49Y3Vyc2VzCitjZl9jdl9saWJ0eXBlPQorCitBQ19FWEVFWFQKK0FDX09CSkVYVAorCitDRl9HQ0NfQVRUUklCVVRFUworQ0ZfWE9QRU5fU09VUkNFCitDRl9TSUdfQVRPTUlDX1QKKworZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ0ZfSEVMUF9NRVNTQUdFKEdlbmVyYWwgT3B0aW9uczopCitDRl9QS0dfQ09ORklHCitDRl9ESVNBQkxFX0VDSE8KKworZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ0ZfSEVMUF9NRVNTQUdFKEN1cnNlcyBWZXJzaW9uLWRlcGVuZGVudCBPcHRpb25zOikKK0NGX05DVVJTRVNfV1JBUF9QUkVGSVgKKworQUNfTVNHX0NIRUNLSU5HKGlmIHlvdSB3YW50IHRvIGNoZWNrIGZvciB3aWRlLWNoYXJhY3RlciBmdW5jdGlvbnMpCitDRl9BUkdfRElTQUJMRSh3aWRlYywKKwlbICAtLWRpc2FibGUtd2lkZWMgICAgICAgICBkaXNhYmxlIGNoZWNrcyBmb3Igd2lkZS1jaGFyYWN0ZXIgZnVuY3Rpb25zXSwKKwljZl9lbmFibGVfd2lkZWM9bm8sCisJY2ZfZW5hYmxlX3dpZGVjPXllcywKKwl5ZXMpCitBQ19NU0dfUkVTVUxUKCRjZl9lbmFibGVfd2lkZWMpCisKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NGX0hFTFBfTUVTU0FHRShDdXJzZXMgVmVyc2lvbi1kZXBlbmRlbnQgT3B0aW9uczopCitDRl9XSVRIX05DVVJTRVNfRVRDCisKK2Nhc2UgJGNmX2N2X3NjcmVlbiBpbgorKG5jdXJzZXMqKQorCWNmX2N2X2xpYnR5cGU9YGVjaG8gIiRjZl9jdl9zY3JlZW4iIHwgc2VkIC1lICdzL15uY3Vyc2VzLy8nYAorCTs7CisoY3Vyc2VzfGN1cnNlc18qKQorCUNGX05FVEJTRF9GT1JNX0gKKwlDRl9ORVRCU0RfTUVOVV9ICisJOzsKK2VzYWMKKworZG5sIElmIHdlJ3ZlIG5vdCBzcGVjaWZpZWQgYSBsaWJyYXJ5LCBhc3N1bWUgd2UncmUgdXNpbmcgc3lzdnI0IGxpYnJhcmllcworZG5sIGluc3RhbGxlZCBjb252ZW50aW9uYWxseSAoZS5nLiwgU3VuT1MgNS54IC0gc29sYXJpcykuCisKK2RubCBBdXRvY29uZiBidWlsZHMgdXAgdGhlICRMSUJTIGluIHJldmVyc2Ugb3JkZXIKKworY2FzZSAkY2ZfY3Zfc2NyZWVuIGluCisocGRjdXJzZXMpCisJOzsKKygqKQorCSMgbG9vayBmb3IgY3Vyc2VzLXJlbGF0ZWQgbGlicmFyaWVzCisJQ0ZfQ0hFQ0tfQ1VSU0VTX0xJQihwYW5lbCwkY2ZfY3ZfbGlidHlwZSxuZXdfcGFuZWwpCisJQ0ZfQ0hFQ0tfQ1VSU0VTX0xJQihtZW51LCRjZl9jdl9saWJ0eXBlLG1lbnVfZHJpdmVyKQorCUNGX0NIRUNLX0NVUlNFU19MSUIoZm9ybSwkY2ZfY3ZfbGlidHlwZSxmb3JtX2RyaXZlcikKKworCSMgbG9vayBmb3IgY3Vyc2VzLXJlbGF0ZWQgaGVhZGVycworCUFDX0NIRUNLX0hFQURFUlMoIFwKKwkJbmNfYWxsb2MuaCBcCisJCW5vbWFjcm9zLmggXAorCQlmb3JtLmggXAorCQltZW51LmggXAorCQlwYW5lbC5oIFwKKwkJdGVybV9lbnRyeS5oIFwKKwkJKQorCTs7Citlc2FjCisKK0FDX1NURENfSEVBREVSUworQUNfSEVBREVSX1RJTUUKK0FDX0NIRUNLX0hFQURFUlMoIFwKK2dldG9wdC5oIFwKK2xvY2FsZS5oIFwKK21hdGguaCBcCitzdGRhcmcuaCBcCitzeXMvaW9jdGwuaCBcCitzeXMvc2VsZWN0LmggXAorc3lzL3RpbWUuaCBcCit0ZXJtaW9zLmggXAordW5pc3RkLmggXAorKQorCitDRl9HRVRPUFRfSEVBREVSCisKK0FDX0NIRUNLX0ZVTkNTKCBcCitnZXRvcHQgXAorZ2V0dGltZW9mZGF5IFwKKykKKworaWYgdGVzdCAieCRhY19jdl9mdW5jX2dldG9wdCIgPSB4bm87IHRoZW4KKwlBQ19NU0dfRVJST1IoZ2V0b3B0IGlzIHJlcXVpcmVkIGZvciBidWlsZGluZyBwcm9ncmFtcykKK2ZpCisKK2lmIHRlc3QgIiRjZl9lbmFibGVfd2lkZWMiID0geWVzOyB0aGVuCitBQ19DSEVDS19GVU5DUyggXAorbWJsZW4gXAorbWJybGVuIFwKK21icnRvd2MgXAorbWJzcnRvd2NzIFwKK21ic3Rvd2NzIFwKK21idG93YyBcCit3Y3NydG9tYnMgXAord2NzdG9tYnMgXAorKQorZmkKKworQ0ZfQ1VSU0VTX0ZVTkNTKCBcCithc3N1bWVfZGVmYXVsdF9jb2xvcnMgXAorY2hnYXQgXAorY29sb3Jfc2V0IFwKK2ZpbHRlciBcCitnZXRiZWd4IFwKK2dldGN1cnggXAorZ2V0bWF4eCBcCitnZXRuc3RyIFwKK2dldHBhcnggXAorZ2V0d2luIFwKK212dmxpbmUgXAorbXZ3dmxpbmUgXAorbmFwbXMgXAorcHV0d2luIFwKK3Jlc2l6ZV90ZXJtIFwKK3Jlc2l6ZXRlcm0gXAorcmlwb2ZmbGluZSBcCitzY3JfZHVtcCBcCitzZXR1cHRlcm0gXAorc2xrX2NvbG9yIFwKK3Nsa19pbml0IFwKK3Rlcm1hdHRycyBcCit0Z2V0ZW50IFwKK3RpZ2V0bnVtIFwKK3RpZ2V0c3RyIFwKK3R5cGVhaGVhZCBcCit1c2VfZGVmYXVsdF9jb2xvcnMgXAordXNlX2VudiBcCit1c2VfZXh0ZW5kZWRfbmFtZXMgXAordXNlX3NjcmVlbiBcCit1c2Vfd2luZG93IFwKK3ZpZF9wdXRzIFwKK3ZpZHB1dHMgXAordnNzY2FuZiBcCit2d19wcmludHcgXAord2NoZ2F0IFwKK3dpbnNzdHIgXAord3Jlc2l6ZSBcCit3c3luY2Rvd24gXAorKQorCitDRl9UUFVUU19QUk9UTworQ0ZfTkNVUlNFU19FWFRfRlVOQ1MKKworaWYgdGVzdCAiJGNmX2VuYWJsZV93aWRlYyIgPSB5ZXMKK3RoZW4KKwkjIHdvcmthcm91bmQgZm9yIHN5c3RlbXMgd2l0aCBuY3Vyc2VzIGJlZm9yZSAyMDExMTAyOSwgZHVlIHRvIGNoYW5nZSBvZgorCSMgZmVhdHVyZSB0ZXN0IG1hY3JvIGZyb20gX1hQRzUgdG8gX1hPUEVOX1NPVVJDRQorCWlmIHRlc3QgLW4gIiRjZl9jdl9uY3Vyc2VzX3ZlcnNpb24iICYmIHRlc3QgIngkY2ZfY3ZfbmN1cnNlc192ZXJzaW9uIiAhPSB4bm8KKwl0aGVuCisJCWNmX2RlZmluZV94cGc1PW5vCisJCUFDX01TR19DSEVDS0lORyhpZiBfWFBHNSBzaG91bGQgYmUgZGVmaW5lZCB0byBlbmFibGUgd2lkZS1jaGFyYWN0ZXJzKQorCisJCUFDX1RSWV9DT01QSUxFKFsKKyNpbmNsdWRlIDwke2NmX2N2X25jdXJzZXNfaGVhZGVyOi1jdXJzZXMuaH0+XSwKKwkJCVtpbnQgeCA9IF9YUEc1XSwsCisJCQlbY2Zfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorCQkJIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWFBHNSIKKwkJCSBBQ19UUllfQ09NUElMRShbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9Pl0sCisJCQkJW2ludCB4ID0gX1hQRzVdLAorCQkJCVtjZl9kZWZpbmVfeHBnNT15ZXNdKQorCQkJIENQUEZMQUdTPSIkY2Zfc2F2ZV9jcHBmbGFncyJdKQorCQlBQ19NU0dfUkVTVUxUKCRjZl9kZWZpbmVfeHBnNSkKKworCQlpZiB0ZXN0ICIkY2ZfZGVmaW5lX3hwZzUiID0geWVzCisJCXRoZW4KKwkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLURfWFBHNSIKKwkJZmkKKwlmaQorCisJQUNfQ0FDSEVfQ0hFQ0soZm9yIHdpZGUtY2hhcmFjdGVyIGZ1bmN0aW9ucyxjZl9jdl93aWRlY2hhcl9mdW5jcyxbCisJQUNfVFJZX0xJTksoWworI2luY2x1ZGUgPCR7Y2ZfY3ZfbmN1cnNlc19oZWFkZXI6LWN1cnNlcy5ofT5dLAorCVsKKwkJc3RhdGljIHdjaGFyX3Qgc3JjX3djaGFyWzJdOworCQlzdGF0aWMgY2NoYXJfdCBkc3RfY2NoYXI7CisJCXNldGNjaGFyKCZkc3RfY2NoYXIsIHNyY193Y2hhciwgQV9OT1JNQUwsIDAsICh2b2lkICopIDApOworCQldLAorCQlbY2ZfY3Zfd2lkZWNoYXJfZnVuY3M9eWVzXSwKKwkJW2NmX2N2X3dpZGVjaGFyX2Z1bmNzPW5vXSkKKwldKQorCWlmIHRlc3QgIiRjZl9jdl93aWRlY2hhcl9mdW5jcyIgIT0gbm8gOyB0aGVuCisJCUFDX0RFRklORShVU0VfV0lERUNfU1VQUE9SVCwxLFtEZWZpbmUgdG8gMSB0byBlbmFibGUgd2lkZS1jaGFyYWN0ZXIgc3VwcG9ydCBpbiAobiljdXJzZXNdKQorCWVsc2UKKwkJQUNfREVGSU5FKFVTRV9XSURFQ19TVVBQT1JULDApCisJZmkKK2Vsc2UKKwlBQ19ERUZJTkUoVVNFX1dJREVDX1NVUFBPUlQsMCkKK2ZpCisKK0FDX0NBQ0hFX0NIRUNLKGlmICRjZl9jdl9zY3JlZW4gbGlicmFyeSB1c2VzIHB0aHJlYWRzLGNmX2N2X3VzZV9wdGhyZWFkcyxbCitBQ19UUllfTElOSyhbCisjaW5jbHVkZSA8JHtjZl9jdl9uY3Vyc2VzX2hlYWRlcjotY3Vyc2VzLmh9PgorZXh0ZXJuIHZvaWQgX25jX2luaXRfcHRocmVhZHModm9pZCk7CitdLAorWworCWluaXRzY3IoKTsKKwlfbmNfaW5pdF9wdGhyZWFkcygpOworCV0sCisJW2NmX2N2X3VzZV9wdGhyZWFkcz15ZXNdLAorCVtjZl9jdl91c2VfcHRocmVhZHM9bm9dKQorXSkKK3Rlc3QgJGNmX2N2X3VzZV9wdGhyZWFkcyA9IHllcyAmJiBBQ19ERUZJTkUoVVNFX1BUSFJFQURTKQorCitDRl9TWVNfVElNRV9TRUxFQ1QKK0NGX0ZVTkNfQ1VSU0VTX1ZFUlNJT04KKworQ0ZfQ1VSU0VTX0FDU19NQVAKK2lmIHRlc3QgIiRjZl9lbmFibGVfd2lkZWMiID0geWVzOyB0aGVuCisJQ0ZfQ1VSU0VTX1dBQ1NfTUFQCisJQ0ZfQ1VSU0VTX1dBQ1NfU1lNQk9MUworZmkKKworQ0ZfQ1VSU0VTX0NIRUNLX1RZUEUoYXR0cl90LGxvbmcpCisKK2lmIHRlc3QgIiRjZl9lbmFibGVfd2lkZWMiID0geWVzOyB0aGVuCisJQ0ZfV0NIQVJfVFlQRShtYnN0YXRlX3QsIE5DVVJTRVNfTUJTVEFURV9ULCBOQ1VSU0VTX09LX01CU1RBVEVfVCkKKwlDRl9XQ0hBUl9UWVBFKHdjaGFyX3QsICAgTkNVUlNFU19XQ0hBUl9ULCAgIE5DVVJTRVNfT0tfV0NIQVJfVCkKKwlDRl9XQ0hBUl9UWVBFKHdpbnRfdCwgICAgTkNVUlNFU19XSU5UX1QsICAgIE5DVVJTRVNfT0tfV0lOVF9UKQorCisJaWYgdGVzdCAiJE5DVVJTRVNfT0tfTUJTVEFURV9UIiA9IDAgOyB0aGVuCisJCUNGX0NVUlNFU19DSEVDS19UWVBFKG1ic3RhdGVfdCxsb25nKQorCWZpCisKKwlpZiB0ZXN0ICIkTkNVUlNFU19PS19XQ0hBUl9UIiA9IDAgOyB0aGVuCisJCUNGX0NVUlNFU19DSEVDS19UWVBFKHdjaGFyX3QsbG9uZykKKwlmaQorCisJaWYgdGVzdCAiJE5DVVJTRVNfT0tfV0lOVF9UIiA9IDAgOyB0aGVuCisJCUNGX0NVUlNFU19DSEVDS19UWVBFKHdpbnRfdCxsb25nKQorCWZpCitmaQorCitDRl9DVVJTRVNfQ0hFQ0tfREFUQShvc3BlZWQpCitDRl9DVVJTRVNfQ0hFQ0tfREFUQShib29sbmFtZXMpCitDRl9DVVJTRVNfQ0hFQ0tfREFUQShib29sZm5hbWVzKQorCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDRl9IRUxQX01FU1NBR0UoVGVzdGluZy9kZXZlbG9wbWVudCBPcHRpb25zOikKK0NGX0VOQUJMRV9XQVJOSU5HUworQ0ZfRElTQUJMRV9MRUFLUworQ0ZfRElTQUJMRV9SUEFUSF9IQUNLCisKK1RFU1RfQVJHUz0iJExJQlMiCitMSUJTPQorCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FDX09VVFBVVChNYWtlZmlsZSxbCitDRl9QUkdfUlVMRVMoWyRzcmNkaXIvbWstdGVzdC5hd2sgSU5TVEFMTD15ZXMgRUNIT19MSU5LPSIkRUNIT19MRCJdLCAuKQorCWNhdCA+Pk1ha2VmaWxlIDw8VEVTVF9FT0YKKworIyBUaGVzZSBydWxlcyBhcmUgZ2VuZXJhdGVkIHNvIHdlIGRvIG5vdCByZWx5IG9uIHN1ZmZpeCBydWxlcywgd2hpY2ggZG8gbm90CisjIHdvcmsgY29uc2lzdGVudGx5IGZvciBkaWZmZXJlbnQgbWFrZS1wcm9ncmFtcyAodGhlICdcJChNT0RFTCkvJyBjb25mdXNlcworIyBzb21lLCBhbmQgdGhlICdcJHgnIGNvbmZ1c2VzIG90aGVycykuCitURVNUX0VPRgorCitMSVNUPWBzZWQgLWUgJ3MvW1sgCV1dLiovLycgLWUgJy9eW1sjQF1dL2QnICRzcmNkaXIvbW9kdWxlc2AKK2ZvciBOIGluICRMSVNUCitkbworCWNhdCA+Pk1ha2VmaWxlIDw8VEVTVF9FT0YKKworXCQoTU9ERUwpLyROLm8gOiBcJChzcmNkaXIpLyROLmMgXFwKKwlcJChzcmNkaXIpL3Rlc3QucHJpdi5oIFxcCisJbmN1cnNlc19jZmcuaAorCSRTSE9XX0NDCisJJEVDSE9fQ0NcJChDQykgLWMgXCQoQ0ZMQUdTX0RFRkFVTFQpIFwkKHNyY2RpcikvJE4uYworVEVTVF9FT0YKK2RvbmUKKworaWYgdGVzdCAtZiAuLi9jb25maWcuZ3Vlc3MgJiYgdGVzdCAtZiAuLi9jb25maWcuc3ViCit0aGVuCisJY2F0ID4+TWFrZWZpbGUgPDxURVNUX0VPRgorCisjIGlmIHdlIHVzZWQgQ0ZfSU5IRVJJVCBmb3IgZ2V0dGluZyB0aGVzZSBmaWxlcywgd2UgY2FuIHJlbW92ZSB0aGVtCitkaXN0Y2xlYW46OgorCXJtIC1mIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViCitURVNUX0VPRgorZmkKK10sWworQVdLPSIkQVdLIgorRUNIT19DQz0iJEVDSE9fQ0MiCitFQ0hPX0xEPSIkRUNIT19MRCIKK1NIT1dfQ0M9IiRTSE9XX0xEIgorXSxjYXQpCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fYWx0a2V5cy5jIGIvdGVzdC9kZW1vX2FsdGtleXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIwN2IxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9kZW1vX2FsdGtleXMuYwpAQCAtMCwwICsxLDE2MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fYWx0a2V5cy5jLHYgMS45IDIwMTAvMTEvMTQgMDA6NTk6MjYgdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgdGhlIGRlZmluZV9rZXkoKSBmdW5jdGlvbi4KKyAqIFRob21hcyBEaWNrZXkgLSAyMDA1LzEwLzIyCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIE5DVVJTRVNfRVhUX0ZVTkNTCisKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBNWV9MT0dGSUxFICJkZW1vX2FsdGtleXMubG9nIgorI2RlZmluZSBNWV9LRVlTIChLRVlfTUFYICsgMSkKKworLyoKKyAqIExvZyB0aGUgbW9zdCByZWNlbnRseS13cml0dGVuIGxpbmUgdG8gb3VyIGxvZ2ZpbGUKKyAqLworc3RhdGljIHZvaWQKK2xvZ19sYXN0X2xpbmUoV0lORE9XICp3aW4pCit7CisgICAgRklMRSAqZnA7CisgICAgaW50IHksIHgsIG47CisgICAgY2hhciB0ZW1wWzI1Nl07CisKKyAgICBpZiAoKGZwID0gZm9wZW4oTVlfTE9HRklMRSwgImEiKSkgIT0gMCkgeworCWludCBuZWVkID0gc2l6ZW9mKHRlbXApIC0gMTsKKwlpZiAobmVlZCA+IENPTFMpCisJICAgIG5lZWQgPSBDT0xTOworCWdldHl4KHdpbiwgeSwgeCk7CisJd21vdmUod2luLCB5IC0gMSwgMCk7CisJbiA9IHdpbm5zdHIod2luLCB0ZW1wLCBuZWVkKTsKKwl3aGlsZSAobi0tID4gMCkgeworCSAgICBpZiAoaXNzcGFjZShVQ2hhcih0ZW1wW25dKSkpCisJCXRlbXBbbl0gPSAnXDAnOworCSAgICBlbHNlCisJCWJyZWFrOworCX0KKwl3bW92ZSh3aW4sIHksIHgpOworCWZwcmludGYoZnAsICIlc1xuIiwgdGVtcCk7CisJZmNsb3NlKGZwKTsKKyAgICB9Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBuOworICAgIGludCBjaDsKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIGludCBzZWNzLCBtc2VjczsKKyAgICBzdHJ1Y3QgdGltZXZhbCBjdXJyZW50LCBwcmV2aW91czsKKyNlbmRpZgorCisgICAgdW5saW5rKE1ZX0xPR0ZJTEUpOworCisgICAgbmV3dGVybSgwLCBzdGRvdXQsIHN0ZGluKTsKKyAgICAodm9pZCkgY2JyZWFrKCk7CQkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisgICAgKHZvaWQpIG5vZWNobygpOwkJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworCisgICAgc2Nyb2xsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKyAgICBtb3ZlKDAsIDApOworCisgICAgLyogd2UgZG8gdGhlIGRlZmluZV9rZXkoKSBjYWxscyBhZnRlciBrZXlwYWQoKSwgc2luY2UgdGhlIGZpcnN0IGNhbGwgdG8KKyAgICAgKiBrZXlwYWQoKSBpbml0aWFsaXplcyB0aGUgY29ycmVzcG9uZGluZyBkYXRhLgorICAgICAqLworICAgIGZvciAobiA9IDA7IG4gPCAyNTU7ICsrbikgeworCWNoYXIgdGVtcFsxMF07CisJc3ByaW50Zih0ZW1wLCAiXDAzMyVjIiwgbik7CisJZGVmaW5lX2tleSh0ZW1wLCBuICsgTVlfS0VZUyk7CisgICAgfQorICAgIGZvciAobiA9IEtFWV9NSU47IG4gPCBLRVlfTUFYOyArK24pIHsKKwljaGFyICp2YWx1ZTsKKwlpZiAoKHZhbHVlID0ga2V5Ym91bmQobiwgMCkpICE9IDApIHsKKwkgICAgY2hhciAqdGVtcCA9IHR5cGVNYWxsb2MoY2hhciwgc3RybGVuKHZhbHVlKSArIDIpOworCSAgICBzcHJpbnRmKHRlbXAsICJcMDMzJXMiLCB2YWx1ZSk7CisJICAgIGRlZmluZV9rZXkodGVtcCwgbiArIE1ZX0tFWVMpOworCSAgICBmcmVlKHRlbXApOworCSAgICBmcmVlKHZhbHVlKTsKKwl9CisgICAgfQorCisjaWYgSEFWRV9HRVRUSU1FT0ZEQVkKKyAgICBnZXR0aW1lb2ZkYXkoJnByZXZpb3VzLCAwKTsKKyNlbmRpZgorCisgICAgd2hpbGUgKChjaCA9IGdldGNoKCkpICE9IEVSUikgeworCWJvb2wgZXNjYXBlZCA9IChjaCA+PSBNWV9LRVlTKTsKKwljb25zdCBjaGFyICpuYW1lID0ga2V5bmFtZShlc2NhcGVkID8gKGNoIC0gTVlfS0VZUykgOiBjaCk7CisKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorCWdldHRpbWVvZmRheSgmY3VycmVudCwgMCk7CisJc2VjcyA9IChpbnQpIChjdXJyZW50LnR2X3NlYyAtIHByZXZpb3VzLnR2X3NlYyk7CisJbXNlY3MgPSAoaW50KSAoKGN1cnJlbnQudHZfdXNlYyAtIHByZXZpb3VzLnR2X3VzZWMpIC8gMTAwMCk7CisJaWYgKG1zZWNzIDwgMCkgeworCSAgICBtc2VjcyArPSAxMDAwOworCSAgICAtLXNlY3M7CisJfQorCWlmIChtc2VjcyA+PSAxMDAwKSB7CisJICAgIHNlY3MgKz0gbXNlY3MgLyAxMDAwOworCSAgICBtc2VjcyAlPSAxMDAwOworCX0KKwlwcmludHcoIiU2ZC4lMDNkICIsIHNlY3MsIG1zZWNzKTsKKwlwcmV2aW91cyA9IGN1cnJlbnQ7CisjZW5kaWYKKwlwcmludHcoIktleWNvZGUgJWQsIG5hbWUgJXMlc1xuIiwKKwkgICAgICAgY2gsCisJICAgICAgIGVzY2FwZWQgPyAiRVNDLSIgOiAiIiwKKwkgICAgICAgbmFtZSAhPSAwID8gbmFtZSA6ICI8bnVsbD4iKTsKKwlsb2dfbGFzdF9saW5lKHN0ZHNjcik7CisJY2xydG9lb2woKTsKKwlpZiAoY2ggPT0gJ3EnKQorCSAgICBicmVhazsKKyAgICB9CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fZGVma2V5LmMgYi90ZXN0L2RlbW9fZGVma2V5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ1YzJjNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZGVtb19kZWZrZXkuYwpAQCAtMCwwICsxLDI4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fZGVma2V5LmMsdiAxLjIyIDIwMTMvMDkvMjggMjI6MDI6MTcgdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgdGhlIGRlZmluZV9rZXkoKSBmdW5jdGlvbi4KKyAqIFRob21hcyBEaWNrZXkgLSAyMDAyLzExLzIzCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIE5DVVJTRVNfRVhUX0ZVTkNTCisKKyNkZWZpbmUgTVlfTE9HRklMRSAiZGVtb19kZWZrZXkubG9nIgorCisvKgorICogTG9nIHRoZSBtb3N0IHJlY2VudGx5LXdyaXR0ZW4gbGluZSB0byBvdXIgbG9nZmlsZQorICovCitzdGF0aWMgdm9pZAorbG9nX2xhc3RfbGluZShXSU5ET1cgKndpbikKK3sKKyAgICBGSUxFICpmcDsKKyAgICBpbnQgeSwgeCwgbjsKKyAgICBjaGFyIHRlbXBbMjU2XTsKKworICAgIGlmICgoZnAgPSBmb3BlbihNWV9MT0dGSUxFLCAiYSIpKSAhPSAwKSB7CisJaW50IG5lZWQgPSBzaXplb2YodGVtcCkgLSAxOworCWlmIChuZWVkID4gQ09MUykKKwkgICAgbmVlZCA9IENPTFM7CisJZ2V0eXgod2luLCB5LCB4KTsKKwl3bW92ZSh3aW4sIHkgLSAxLCAwKTsKKwluID0gd2lubnN0cih3aW4sIHRlbXAsIG5lZWQpOworCXdoaWxlIChuLS0gPiAwKSB7CisJICAgIGlmIChpc3NwYWNlKFVDaGFyKHRlbXBbbl0pKSkKKwkJdGVtcFtuXSA9ICdcMCc7CisJICAgIGVsc2UKKwkJYnJlYWs7CisJfQorCXdtb3ZlKHdpbiwgeSwgeCk7CisJZnByaW50ZihmcCwgIiVzXG4iLCB0ZW1wKTsKKwlmY2xvc2UoZnApOworICAgIH0KK30KKworLyoKKyAqIENvbnZlcnQgYSBjaGFyYWN0ZXIgdG8gdmlzaWJsZSBmb3JtLgorICovCitzdGF0aWMgY2hhciAqCit2aXNpY2hhcihpbnQgY2gpCit7CisgICAgc3RhdGljIGNoYXIgdGVtcFsxMF07CisKKyAgICBjaCA9IFVDaGFyKGNoKTsKKyAgICBhc3NlcnQoY2ggPj0gMCAmJiBjaCA8IDI1Nik7CisgICAgaWYgKGNoID09ICdcXCcpIHsKKwlzdHJjcHkodGVtcCwgIlxcXFwiKTsKKyAgICB9IGVsc2UgaWYgKGNoID09ICdcMDMzJykgeworCXN0cmNweSh0ZW1wLCAiXFxFIik7CisgICAgfSBlbHNlIGlmIChjaCA8ICcgJykgeworCXNwcmludGYodGVtcCwgIlxcJTAzbyIsIGNoKTsKKyAgICB9IGVsc2UgaWYgKGNoID49IDEyNykgeworCXNwcmludGYodGVtcCwgIlxcJTAzbyIsIGNoKTsKKyAgICB9IGVsc2UgeworCXNwcmludGYodGVtcCwgIiVjIiwgY2gpOworICAgIH0KKyAgICByZXR1cm4gdGVtcDsKK30KKworLyoKKyAqIENvbnZlcnQgYSBzdHJpbmcgdG8gdmlzaWJsZSBmb3JtLgorICovCitzdGF0aWMgY2hhciAqCit2aXNpYmxlKGNvbnN0IGNoYXIgKnN0cmluZykKK3sKKyAgICBjaGFyICpyZXN1bHQgPSAwOworICAgIHNpemVfdCBuZWVkID0gMTsKKyAgICBpbnQgcGFzczsKKyAgICBpbnQgbjsKKworICAgIGlmIChzdHJpbmcgIT0gMCAmJiAqc3RyaW5nICE9ICdcMCcpIHsKKwlmb3IgKHBhc3MgPSAwOyBwYXNzIDwgMjsgKytwYXNzKSB7CisJICAgIGZvciAobiA9IDA7IHN0cmluZ1tuXSAhPSAnXDAnOyArK24pIHsKKwkJY2hhciB0ZW1wWzgwXTsKKwkJc3RybmNweSh0ZW1wLCB2aXNpY2hhcihzdHJpbmdbbl0pLCBzaXplb2YodGVtcCkgLSAyKTsKKwkJaWYgKHBhc3MpCisJCSAgICBzdHJjYXQocmVzdWx0LCB0ZW1wKTsKKwkJZWxzZQorCQkgICAgbmVlZCArPSBzdHJsZW4odGVtcCk7CisJICAgIH0KKwkgICAgaWYgKCFwYXNzKQorCQlyZXN1bHQgPSB0eXBlQ2FsbG9jKGNoYXIsIG5lZWQpOworCX0KKyAgICB9IGVsc2UgeworCXJlc3VsdCA9IHR5cGVDYWxsb2MoY2hhciwgKHNpemVfdCkgMSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCityZWFsbHlfZGVmaW5lX2tleShXSU5ET1cgKndpbiwgY29uc3QgY2hhciAqbmV3X3N0cmluZywgaW50IGNvZGUpCit7CisgICAgaW50IHJjOworICAgIGNvbnN0IGNoYXIgKmNvZGVfbmFtZSA9IGtleW5hbWUoY29kZSk7CisgICAgY2hhciAqb2xkX3N0cmluZzsKKyAgICBjaGFyICp2aXNfc3RyaW5nID0gMDsKKyAgICBjaGFyIHRlbXBbODBdOworCisgICAgaWYgKGNvZGVfbmFtZSA9PSAwKSB7CisJc3ByaW50Zih0ZW1wLCAiS2V5Y29kZSAlZCIsIGNvZGUpOworCWNvZGVfbmFtZSA9IHRlbXA7CisgICAgfQorCisgICAgaWYgKChvbGRfc3RyaW5nID0ga2V5Ym91bmQoY29kZSwgMCkpICE9IDApIHsKKwl3cHJpbnR3KHdpbiwgIiVzIGlzICVzXG4iLAorCQljb2RlX25hbWUsCisJCXZpc19zdHJpbmcgPSB2aXNpYmxlKG9sZF9zdHJpbmcpKTsKKyAgICB9IGVsc2UgeworCXdwcmludHcod2luLCAiJXMgaXMgbm90IGJvdW5kXG4iLAorCQljb2RlX25hbWUpOworICAgIH0KKyAgICBsb2dfbGFzdF9saW5lKHdpbik7CisKKyAgICBpZiAodmlzX3N0cmluZyAhPSAwKSB7CisJZnJlZSh2aXNfc3RyaW5nKTsKKwl2aXNfc3RyaW5nID0gMDsKKyAgICB9CisKKyAgICB2aXNfc3RyaW5nID0gdmlzaWJsZShuZXdfc3RyaW5nKTsKKyAgICBpZiAoKHJjID0ga2V5X2RlZmluZWQobmV3X3N0cmluZykpID4gMCkgeworCXdwcmludHcod2luLCAiJXMgd2FzIGJvdW5kIHRvICVzXG4iLCB2aXNfc3RyaW5nLCBrZXluYW1lKHJjKSk7CisJbG9nX2xhc3RfbGluZSh3aW4pOworICAgIH0gZWxzZSBpZiAobmV3X3N0cmluZyAhPSAwICYmIHJjIDwgMCkgeworCXdwcmludHcod2luLCAiJXMgY29uZmxpY3RzIHdpdGggbG9uZ2VyIHN0cmluZ3NcbiIsIHZpc19zdHJpbmcpOworCWxvZ19sYXN0X2xpbmUod2luKTsKKyAgICB9CisgICAgcmMgPSBkZWZpbmVfa2V5KG5ld19zdHJpbmcsIGNvZGUpOworICAgIGlmIChyYyA9PSBFUlIpIHsKKwl3cHJpbnR3KHdpbiwgIiVzIHVuY2hhbmdlZFxuIiwgY29kZV9uYW1lKTsKKwlsb2dfbGFzdF9saW5lKHdpbik7CisgICAgfSBlbHNlIGlmIChuZXdfc3RyaW5nICE9IDApIHsKKwl3cHJpbnR3KHdpbiwgIiVzIGlzIG5vdyBib3VuZCB0byAlc1xuIiwKKwkJdmlzX3N0cmluZywKKwkJY29kZV9uYW1lKTsKKwlsb2dfbGFzdF9saW5lKHdpbik7CisgICAgfSBlbHNlIGlmIChvbGRfc3RyaW5nICE9IDApIHsKKwl3cHJpbnR3KHdpbiwgIiVzIGRlbGV0ZWRcbiIsIGNvZGVfbmFtZSk7CisJbG9nX2xhc3RfbGluZSh3aW4pOworICAgIH0KKyAgICBpZiAodmlzX3N0cmluZyAhPSAwKQorCWZyZWUodmlzX3N0cmluZyk7CisgICAgaWYgKG9sZF9zdHJpbmcgIT0gMCkKKwlmcmVlKG9sZF9zdHJpbmcpOworfQorCitzdGF0aWMgdm9pZAorZHVwbGljYXRlKFdJTkRPVyAqd2luLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKm5hbWUsIGludCBjb2RlKQoreworICAgIGNoYXIgKnZhbHVlID0gdGlnZXRzdHIobmFtZSk7CisKKyAgICBpZiAodmFsdWUgIT0gMCkgeworCWNvbnN0IGNoYXIgKnByZWZpeCA9IDA7CisJY2hhciB0ZW1wW0JVRlNJWl07CisKKwlpZiAoIXN0cm5jbXAodmFsdWUsICJcMDMzWyIsIChzaXplX3QpIDIpKSB7CisJICAgIHByZWZpeCA9ICJcMDMzTyI7CisJfSBlbHNlIGlmICghc3RybmNtcCh2YWx1ZSwgIlwwMzNPIiwgKHNpemVfdCkgMikpIHsKKwkgICAgcHJlZml4ID0gIlwwMzNbIjsKKwl9CisJaWYgKHByZWZpeCAhPSAwKSB7CisJICAgIHNwcmludGYodGVtcCwgIiVzJXMiLCBwcmVmaXgsIHZhbHVlICsgMik7CisJICAgIHJlYWxseV9kZWZpbmVfa2V5KHdpbiwgdGVtcCwgY29kZSk7CisJfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK3JlZGVmaW5lKFdJTkRPVyAqd2luLCBjaGFyICpzdHJpbmcsIGludCBjb2RlKQoreworICAgIHJlYWxseV9kZWZpbmVfa2V5KHdpbiwgc3RyaW5nLCBjb2RlKTsKK30KKworc3RhdGljIHZvaWQKK3JlbW92ZV9kZWZpbml0aW9uKFdJTkRPVyAqd2luLCBpbnQgY29kZSkKK3sKKyAgICByZWFsbHlfZGVmaW5lX2tleSh3aW4sIDAsIGNvZGUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBjaGFyICpma2V5c1sxMl07CisgICAgaW50IG47CisgICAgaW50IGNoOworICAgIFdJTkRPVyAqd2luOworCisgICAgdW5saW5rKE1ZX0xPR0ZJTEUpOworCisgICAgaW5pdHNjcigpOworICAgICh2b2lkKSBjYnJlYWsoKTsJCS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKyAgICAodm9pZCkgbm9lY2hvKCk7CQkvKiBkb24ndCBlY2hvIGlucHV0ICovCisKKyAgICBwcmludHcoIlRoaXMgZGVtbyBpcyBiZXN0IG9uIHh0ZXJtOiBpdCByZXZlcnNlcyB0aGUgZGVmaW5pdGlvbnMgZm9yIGYxLWYxMixcbiIpOworICAgIHByaW50dygiYWRkcyBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgZm9yIGN1cnNvciBhcHBsaWNhdGlvbiBhbmQgbm9ybWFsIG1vZGVzLFxuIik7CisgICAgcHJpbnR3KCJhbmQgcmVtb3ZlcyBhbnkgZGVmaW5pdGlvbnMgZm9yIHRoZSBtaW5pIGtleXBhZC4gIFR5cGUgYW55IG9mIHRob3NlOlxuIik7CisgICAgcmVmcmVzaCgpOworCisgICAgd2luID0gbmV3d2luKExJTkVTIC0gMywgQ09MUywgMywgMCk7CisgICAgc2Nyb2xsb2sod2luLCBUUlVFKTsKKyAgICBrZXlwYWQod2luLCBUUlVFKTsKKyAgICB3bW92ZSh3aW4sIDAsIDApOworCisgICAgLyogd2UgZG8gdGhlIGRlZmluZV9rZXkoKSBjYWxscyBhZnRlciBrZXlwYWQoKSwgc2luY2UgdGhlIGZpcnN0IGNhbGwgdG8KKyAgICAgKiBrZXlwYWQoKSBpbml0aWFsaXplcyB0aGUgY29ycmVzcG9uZGluZyBkYXRhLgorICAgICAqLworICAgIGZvciAobiA9IDA7IG4gPCAxMjsgKytuKSB7CisJY2hhciBuYW1lWzEwXTsKKwlzcHJpbnRmKG5hbWUsICJrZiVkIiwgbiArIDEpOworCWZrZXlzW25dID0gdGlnZXRzdHIobmFtZSk7CisgICAgfQorICAgIGZvciAobiA9IDA7IG4gPCAxMjsgKytuKSB7CisJcmVkZWZpbmUod2luLCBma2V5c1sxMSAtIG5dLCBLRVlfRihuICsgMSkpOworICAgIH0KKworICAgIGR1cGxpY2F0ZSh3aW4sICJrY3ViMSIsIEtFWV9MRUZUKTsKKyAgICBkdXBsaWNhdGUod2luLCAia2N1dTEiLCBLRVlfVVApOworICAgIGR1cGxpY2F0ZSh3aW4sICJrY3VkMSIsIEtFWV9ET1dOKTsKKyAgICBkdXBsaWNhdGUod2luLCAia2N1ZjEiLCBLRVlfUklHSFQpOworCisgICAgcmVtb3ZlX2RlZmluaXRpb24od2luLCBLRVlfQTEpOworICAgIHJlbW92ZV9kZWZpbml0aW9uKHdpbiwgS0VZX0EzKTsKKyAgICByZW1vdmVfZGVmaW5pdGlvbih3aW4sIEtFWV9CMik7CisgICAgcmVtb3ZlX2RlZmluaXRpb24od2luLCBLRVlfQzEpOworICAgIHJlbW92ZV9kZWZpbml0aW9uKHdpbiwgS0VZX0MzKTsKKworICAgIHJlYWxseV9kZWZpbmVfa2V5KHdpbiwgIlwwMzNPIiwgMTAyMyk7CisKKyAgICB3aGlsZSAoKGNoID0gd2dldGNoKHdpbikpICE9IEVSUikgeworCWNvbnN0IGNoYXIgKm5hbWUgPSBrZXluYW1lKGNoKTsKKwl3cHJpbnR3KHdpbiwgIktleWNvZGUgJWQsIG5hbWUgJXNcbiIsCisJCWNoLAorCQluYW1lICE9IDAgPyBuYW1lIDogIjxudWxsPiIpOworCWxvZ19sYXN0X2xpbmUod2luKTsKKwl3Y2xydG9lb2wod2luKTsKKwlpZiAoY2ggPT0gJ3EnKQorCSAgICBicmVhazsKKyAgICB9CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fZm9ybXMuYyBiL3Rlc3QvZGVtb19mb3Jtcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MTI1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2RlbW9fZm9ybXMuYwpAQCAtMCwwICsxLDY1OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fZm9ybXMuYyx2IDEuNTAgMjAxNC8xMC8xMCAwMDozODowMCB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSBhIHZhcmlldHkgb2YgZnVuY3Rpb25zIGZyb20gdGhlIGZvcm0gbGlicmFyeS4KKyAqIFRob21hcyBEaWNrZXkgLSAyMDAzLzQvMjYKKyAqLworLyoKK1RZUEVfRU5VTQkJCS0KK1RZUEVfUkVHRVhQCQkJLQorZHVwX2ZpZWxkCQkJLQorZmllbGRfaW5pdAkJCS0KK2ZpZWxkX2p1c3QJCQktCitmaWVsZF90ZXJtCQkJLQorZm9ybV9pbml0CQkJLQorZm9ybV9vcHRzCQkJLQorZm9ybV9vcHRzX29mZgkJCS0KK2Zvcm1fb3B0c19vbgkJCS0KK2Zvcm1fcmVxdWVzdF9ieV9uYW1lCQktCitmb3JtX3Rlcm0JCQktCitmb3JtX3VzZXJwdHIJCQktCitmcmVlX2ZpZWxkdHlwZQkJCS0KK2xpbmtfZmllbGQJCQktCitsaW5rX2ZpZWxkdHlwZQkJCS0KK21vdmVfZmllbGQJCQktCituZXdfcGFnZQkJCS0KK3Bvc19mb3JtX2N1cnNvcgkJCS0KK3NldF9maWVsZF9pbml0CQkJLQorc2V0X2ZpZWxkX3Rlcm0JCQktCitzZXRfZmllbGR0eXBlX2FyZwkJLQorc2V0X2ZpZWxkdHlwZV9jaG9pY2UJCS0KK3NldF9mb3JtX2ZpZWxkcwkJCS0KK3NldF9mb3JtX2luaXQJCQktCitzZXRfZm9ybV9vcHRzCQkJLQorc2V0X2Zvcm1fcGFnZQkJCS0KK3NldF9mb3JtX3Rlcm0JCQktCitzZXRfZm9ybV91c2VycHRyCQktCitzZXRfbWF4X2ZpZWxkCQkJLQorKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgVVNFX0xJQkZPUk0KKworI2luY2x1ZGUgPGVkaXRfZmllbGQuaD4KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNoYXIgKm5hbWU7CisgICAgY2hhciAqdmFsdWU7Cit9IE1ZX0RBVEE7CisKK3N0YXRpYyBNWV9EQVRBICpteV9kYXRhOworCitzdGF0aWMgaW50IGRfb3B0aW9uID0gMDsKK3N0YXRpYyBpbnQgal92YWx1ZSA9IDA7CitzdGF0aWMgaW50IG1fdmFsdWUgPSAwOworc3RhdGljIGludCBvX3ZhbHVlID0gMDsKK3N0YXRpYyBjaGFyICp0X3ZhbHVlID0gMDsKKworc3RhdGljIHZvaWQKK2ZhaWxlZChjb25zdCBjaGFyICpzKQoreworICAgIHBlcnJvcihzKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZAorY2hvbXAoY2hhciAqdmFsdWUpCit7CisgICAgc2l6ZV90IGhhdmUgPSBzdHJsZW4odmFsdWUpOworICAgIHdoaWxlIChoYXZlICE9IDAgJiYgKHZhbHVlW2hhdmUgLSAxXSA9PSAnXG4nIHx8IHZhbHVlW2hhdmUgLSAxXSA9PSAnXHInKSkgeworCXZhbHVlWy0taGF2ZV0gPSAnXDAnOworICAgIH0KK30KKworc3RhdGljIGludAordHJpbW1lZChjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gKGludCkgc3RybGVuKHZhbHVlKTsKKyAgICB3aGlsZSAocmVzdWx0ID4gMCAmJiBpc3NwYWNlKFVDaGFyKHZhbHVlW3Jlc3VsdCAtIDFdKSkpIHsKKwktLXJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNoYXIgKgorZ2V0X2RhdGEoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBjaGFyICpyZXN1bHQgPSB0X3ZhbHVlOworICAgIGlmIChteV9kYXRhICE9IDApIHsKKwlpbnQgbjsKKwlmb3IgKG4gPSAwOyBteV9kYXRhW25dLm5hbWUgIT0gMDsgKytuKSB7CisJICAgIGlmICghc3RyY21wKG5hbWUsIG15X2RhdGFbbl0ubmFtZSkpIHsKKwkJcmVzdWx0ID0gbXlfZGF0YVtuXS52YWx1ZTsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBSZWFkIChwb3NzaWJseSkgbXVsdGktbGluZSBkYXRhIHdpdGggbmFtZSt2YWx1ZSBwYWlycy4KKyAqLworc3RhdGljIHZvaWQKK3JlYWRfZGF0YShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBGSUxFICpmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCisgICAgaWYgKGZwICE9IDApIHsKKwljaGFyIGJ1ZmZlcltCVUZTSVpdOworCWNoYXIgKmNvbG9uOworCWludCBtb3JlID0gMDsKKwlpbnQgaXRlbSA9IDA7CisKKwlteV9kYXRhID0gdHlwZUNhbGxvYyhNWV9EQVRBLCAoc2l6ZV90KSAxMDApOwkvKiBGSVhNRSAqLworCXdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmcCkgIT0gMCkgeworCSAgICBjaG9tcChidWZmZXIpOworCSAgICBpZiAobW9yZSkgeworCQlpZiAoc3RyY21wKGJ1ZmZlciwgIi4iKSkgeworCQkgICAgY2hhciAqcHJpb3IgPSBteV9kYXRhW21vcmUgLSAxXS52YWx1ZTsKKwkJICAgIHNpemVfdCBuZWVkID0gc3RybGVuKGJ1ZmZlcikgKyAyICsgc3RybGVuKHByaW9yKTsKKwkJICAgIGNoYXIgKnZhbHVlID0gdHlwZVJlYWxsb2MoY2hhciwgbmVlZCwgcHJpb3IpOworCQkgICAgaWYgKHZhbHVlID09IDApCisJCQlmYWlsZWQoInJlYWxsb2MiKTsKKwkJICAgIHN0cmNhdCh2YWx1ZSwgIlxuIik7CisJCSAgICBzdHJjYXQodmFsdWUsIGJ1ZmZlcik7CisJCSAgICBteV9kYXRhW21vcmUgLSAxXS52YWx1ZSA9IHZhbHVlOworCQl9IGVsc2UgeworCQkgICAgbW9yZSA9IDA7CisJCX0KKwkgICAgfSBlbHNlIGlmICgqYnVmZmVyID09ICcjJykgeworCQljb250aW51ZTsKKwkgICAgfSBlbHNlIGlmICgoY29sb24gPSBzdHJjaHIoYnVmZmVyLCAnOicpKSAhPSAwKSB7CisJCWNoYXIgKm5hbWU7CisJCWNoYXIgKnZhbHVlOworCQkqY29sb24rKyA9ICdcMCc7CisJCW5hbWUgPSBzdHJkdXAoYnVmZmVyKTsKKwkJdmFsdWUgPSBzdHJkdXAoY29sb24pOworCQlpZiAobmFtZSA9PSAwIHx8IHZhbHVlID09IDApCisJCSAgICBmYWlsZWQoInN0cmR1cCIpOworCQlteV9kYXRhW2l0ZW1dLm5hbWUgPSBuYW1lOworCQlteV9kYXRhW2l0ZW1dLnZhbHVlID0gdmFsdWU7CisJCW1vcmUgPSArK2l0ZW07CisJICAgIH0gZWxzZSB7CisJCWZhaWxlZCgiZXhwZWN0ZWQgYSBjb2xvbiIpOworCSAgICB9CisJfQorCWZjbG9zZShmcCk7CisgICAgfSBlbHNlIHsKKwlmYWlsZWQoZmlsZW5hbWUpOworICAgIH0KK30KKworc3RhdGljIEZJRUxEICoKK21ha2VfbGFiZWwoY29uc3QgY2hhciAqbGFiZWwsIGludCBmcm93LCBpbnQgZmNvbCkKK3sKKyAgICBGSUVMRCAqZiA9IG5ld19maWVsZCgxLCAoaW50KSBzdHJsZW4obGFiZWwpLCBmcm93LCBmY29sLCAwLCAwKTsKKworICAgIGlmIChmKSB7CisJc2V0X2ZpZWxkX2J1ZmZlcihmLCAwLCBsYWJlbCk7CisJc2V0X2ZpZWxkX29wdHMoZiwgKGludCkgKCh1bnNpZ25lZCkgZmllbGRfb3B0cyhmKSAmIH5PX0FDVElWRSkpOworICAgIH0KKyAgICByZXR1cm4gKGYpOworfQorCisvKgorICogRGVmaW5lIGVhY2ggZmllbGQgd2l0aCBhbiBleHRyYSBvbmUsIGZvciByZWZsZWN0aW5nICJhY3R1YWwiIHRleHQuCisgKi8KK3N0YXRpYyBGSUVMRCAqCittYWtlX2ZpZWxkKGNvbnN0IGNoYXIgKmxhYmVsLCBpbnQgZnJvdywgaW50IGZjb2wsIGludCByb3dzLCBpbnQgY29scykKK3sKKyAgICBGSUVMRCAqZiA9IG5ld19maWVsZChyb3dzLCBjb2xzLCBmcm93LCBmY29sLCBvX3ZhbHVlLCAxKTsKKworICAgIGlmIChmKSB7CisJc2V0X2ZpZWxkX2JhY2soZiwgQV9VTkRFUkxJTkUpOworCS8qCisJICogSWYgLWogYW5kIC1kIG9wdGlvbnMgYXJlIGNvbWJpbmVkLCAtaiBsb3Nlcy4gIEl0IGlzIGRvY3VtZW50ZWQgaW4KKwkgKiAiQ2hhcmFjdGVyIFVzZXIgSW50ZXJmYWNlIFByb2dyYW1taW5nIiwgcGFnZSAxMi0xNSB0aGF0IHNldHRpbmcKKwkgKiBPX1NUQVRJQyBvZmYgbWFrZXMgdGhlIGZvcm0gbGlicmFyeSBpZ25vcmUganVzdGlmaWNhdGlvbi4KKwkgKi8KKwlzZXRfZmllbGRfanVzdChmLCBqX3ZhbHVlKTsKKwlpZiAoZF9vcHRpb24pIHsKKwkgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCQlzZXRfZmllbGRfZm9yZShmLCAoY2h0eXBlKSBDT0xPUl9QQUlSKDIpKTsKKwkJc2V0X2ZpZWxkX2JhY2soZiwgKEFfVU5ERVJMSU5FIHwgKGNodHlwZSkgQ09MT1JfUEFJUigzKSkpOworCSAgICB9IGVsc2UgeworCQlzZXRfZmllbGRfZm9yZShmLCBBX0JPTEQpOworCSAgICB9CisJICAgIC8qCisJICAgICAqIFRoZSBmaWVsZF9vcHRzX29mZigpIGNhbGwgZHVtcHMgY29yZSB3aXRoIFNvbGFyaXMgY3Vyc2VzLAorCSAgICAgKiBidXQgdGhhdCBpcyBhIGtub3duIGJ1ZyBpbiBTb2xhcmlzJyBmb3JtIGxpYnJhcnkgLVRECisJICAgICAqLworCSAgICBmaWVsZF9vcHRzX29mZihmLCBPX1NUQVRJQyk7CisJICAgIHNldF9tYXhfZmllbGQoZiwgbV92YWx1ZSk7CisJfQorCisJaW5pdF9lZGl0X2ZpZWxkKGYsIGdldF9kYXRhKGxhYmVsKSk7CisgICAgfQorICAgIHJldHVybiAoZik7Cit9CisKK3N0YXRpYyB2b2lkCitkaXNwbGF5X2Zvcm0oRk9STSAqIGYpCit7CisgICAgV0lORE9XICp3OworICAgIGludCByb3dzLCBjb2xzOworCisgICAgc2NhbGVfZm9ybShmLCAmcm93cywgJmNvbHMpOworCisgICAgLyoKKyAgICAgKiBQdXQgdGhlIGZvcm0gYXQgdGhlIHVwcGVyLWxlZnQgY29ybmVyIG9mIHRoZSBkaXNwbGF5LCB3aXRoIGp1c3QgYSBib3gKKyAgICAgKiBhcm91bmQgaXQuCisgICAgICovCisgICAgaWYgKCh3ID0gbmV3d2luKHJvd3MgKyAyLCBjb2xzICsgNCwgMCwgMCkpICE9IChXSU5ET1cgKikgMCkgeworCXNldF9mb3JtX3dpbihmLCB3KTsKKwlzZXRfZm9ybV9zdWIoZiwgZGVyd2luKHcsIHJvd3MsIGNvbHMsIDEsIDIpKTsKKwlib3godywgMCwgMCk7CisJa2V5cGFkKHcsIFRSVUUpOworCisJaWYgKHBvc3RfZm9ybShmKSAhPSBFX09LKQorCSAgICB3cmVmcmVzaCh3KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitlcmFzZV9mb3JtKEZPUk0gKiBmKQoreworICAgIFdJTkRPVyAqdyA9IGZvcm1fd2luKGYpOworICAgIFdJTkRPVyAqcyA9IGZvcm1fc3ViKGYpOworCisgICAgdW5wb3N0X2Zvcm0oZik7CisgICAgd2VyYXNlKHcpOworICAgIHdyZWZyZXNoKHcpOworICAgIGRlbHdpbihzKTsKKyAgICBkZWx3aW4odyk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2luc2VydF9tb2RlKGJvb2wgaW5zZXJ0X21vZGUpCit7CisgICAgTXZBZGRTdHIoNSwgNTcsIChpbnNlcnRfbW9kZQorCQkgICAgID8gImZvcm1fc3RhdHVzOiBpbnNlcnQgIgorCQkgICAgIDogImZvcm1fc3RhdHVzOiBvdmVybGF5IikpOworfQorCisjZGVmaW5lIE9fU0VMRUNUQUJMRSAoT19BQ1RJVkUgfCBPX1ZJU0lCTEUpCisKK3N0YXRpYyBGSUVMRCAqCithbm90aGVyX2ZpZWxkKEZPUk0gKiBmb3JtLCBGSUVMRCAqIGZpZWxkKQoreworICAgIEZJRUxEICoqZiA9IGZvcm1fZmllbGRzKGZvcm0pOworICAgIEZJRUxEICpyZXN1bHQgPSAwOworICAgIGludCBuOworCisgICAgZm9yIChuID0gMDsgZltuXSAhPSAwOyArK24pIHsKKwlpZiAoZltuXSAhPSBmaWVsZCkgeworCSAgICByZXN1bHQgPSBmW25dOworCSAgICBmaWVsZF9vcHRzX29uKHJlc3VsdCwgT19TRUxFQ1RBQkxFKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitteV9mb3JtX2RyaXZlcihGT1JNICogZm9ybSwgaW50IGMpCit7CisgICAgc3RhdGljIGJvb2wgaW5zZXJ0X21vZGUgPSBUUlVFOworICAgIEZJRUxEICpmaWVsZDsKKworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgTVlfUVVJVDoKKwlpZiAoZm9ybV9kcml2ZXIoZm9ybSwgUkVRX1ZBTElEQVRJT04pID09IEVfT0spCisJICAgIHJldHVybiAoVFJVRSk7CisJYnJlYWs7CisgICAgY2FzZSBNWV9IRUxQOgorCWhlbHBfZWRpdF9maWVsZCgpOworCWJyZWFrOworICAgIGNhc2UgTVlfRURUX01PREU6CisJaWYgKChmaWVsZCA9IGN1cnJlbnRfZmllbGQoZm9ybSkpICE9IDApIHsKKwkgICAgc2V0X2N1cnJlbnRfZmllbGQoZm9ybSwgYW5vdGhlcl9maWVsZChmb3JtLCBmaWVsZCkpOworCSAgICBpZiAoKHVuc2lnbmVkKSBmaWVsZF9vcHRzKGZpZWxkKSAmIE9fRURJVCkgeworCQlmaWVsZF9vcHRzX29mZihmaWVsZCwgT19FRElUKTsKKwkJc2V0X2ZpZWxkX3N0YXR1cyhmaWVsZCwgMCk7CisJICAgIH0gZWxzZSB7CisJCWZpZWxkX29wdHNfb24oZmllbGQsIE9fRURJVCk7CisJICAgIH0KKwkgICAgc2V0X2N1cnJlbnRfZmllbGQoZm9ybSwgZmllbGQpOworCX0KKwlicmVhazsKKyAgICBjYXNlIE1ZX0lOU19NT0RFOgorCS8qIHRoZXJlIHNob3VsZCBiZSBhIGZvcm1fc3RhdHVzKCkgZnVuY3Rpb24sIGJ1dCB0aGVyZSBpcyBub25lICovCisJaWYgKCFpbnNlcnRfbW9kZSkgeworCSAgICBpZiAoZm9ybV9kcml2ZXIoZm9ybSwgUkVRX0lOU19NT0RFKSA9PSBFX09LKSB7CisJCWluc2VydF9tb2RlID0gVFJVRTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGlmIChmb3JtX2RyaXZlcihmb3JtLCBSRVFfT1ZMX01PREUpID09IEVfT0spIHsKKwkJaW5zZXJ0X21vZGUgPSBGQUxTRTsKKwkgICAgfQorCX0KKwlzaG93X2luc2VydF9tb2RlKGluc2VydF9tb2RlKTsKKwlyZWZyZXNoKCk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwliZWVwKCk7CisJYnJlYWs7CisgICAgfQorICAgIHJldHVybiAoRkFMU0UpOworfQorCitzdGF0aWMgdm9pZAorc2hvd19jdXJyZW50X2ZpZWxkKFdJTkRPVyAqd2luLCBGT1JNICogZm9ybSkKK3sKKyAgICBGSUVMRCAqZmllbGQ7CisgICAgRklFTERUWVBFICp0eXBlOworICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICBpbnQgbmJ1ZjsKKyAgICBpbnQgZmllbGRfcm93cywgZmllbGRfY29scywgZmllbGRfbWF4OworICAgIGludCBjdXJyb3csIGN1cmNvbDsKKworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwl3YmtnZCh3aW4sIChjaHR5cGUpIENPTE9SX1BBSVIoMSkpOworICAgIH0KKyAgICB3ZXJhc2Uod2luKTsKKyAgICBmb3JtX2dldHl4KGZvcm0sIGN1cnJvdywgY3VyY29sKTsKKyAgICB3cHJpbnR3KHdpbiwgIkN1cnNvcjogJWQsJWQiLCBjdXJyb3csIGN1cmNvbCk7CisgICAgaWYgKGRhdGFfYWhlYWQoZm9ybSkpCisJd2FkZHN0cih3aW4sICIgYWhlYWQiKTsKKyAgICBpZiAoZGF0YV9iZWhpbmQoZm9ybSkpCisJd2FkZHN0cih3aW4sICIgYmVoaW5kIik7CisgICAgd2FkZGNoKHdpbiwgJ1xuJyk7CisgICAgaWYgKChmaWVsZCA9IGN1cnJlbnRfZmllbGQoZm9ybSkpICE9IDApIHsKKwl3cHJpbnR3KHdpbiwgIlBhZ2UgJWQlcywgRmllbGQgJWQvJWQlczoiLAorCQlmb3JtX3BhZ2UoZm9ybSksCisJCW5ld19wYWdlKGZpZWxkKSA/ICIqIiA6ICIiLAorCQlmaWVsZF9pbmRleChmaWVsZCksIGZpZWxkX2NvdW50KGZvcm0pLAorCQlmaWVsZF9hcmcoZmllbGQpID8gIihhcmcpIiA6ICIiKTsKKwlpZiAoKHR5cGUgPSBmaWVsZF90eXBlKGZpZWxkKSkgIT0gMCkgeworCSAgICBpZiAodHlwZSA9PSBUWVBFX0FMTlVNKQorCQl3YWRkc3RyKHdpbiwgIkFMTlVNIik7CisJICAgIGVsc2UgaWYgKHR5cGUgPT0gVFlQRV9BTFBIQSkKKwkJd2FkZHN0cih3aW4sICJBTFBIQSIpOworCSAgICBlbHNlIGlmICh0eXBlID09IFRZUEVfRU5VTSkKKwkJd2FkZHN0cih3aW4sICJFTlVNIik7CisJICAgIGVsc2UgaWYgKHR5cGUgPT0gVFlQRV9JTlRFR0VSKQorCQl3YWRkc3RyKHdpbiwgIklOVEVHRVIiKTsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwkgICAgZWxzZSBpZiAodHlwZSA9PSBUWVBFX0lQVjQpCisJCXdhZGRzdHIod2luLCAiSVBWNCIpOworI2VuZGlmCisJICAgIGVsc2UgaWYgKHR5cGUgPT0gVFlQRV9OVU1FUklDKQorCQl3YWRkc3RyKHdpbiwgIk5VTUVSSUMiKTsKKwkgICAgZWxzZSBpZiAodHlwZSA9PSBUWVBFX1JFR0VYUCkKKwkJd2FkZHN0cih3aW4sICJSRUdFWFAiKTsKKwkgICAgZWxzZQorCQl3YWRkc3RyKHdpbiwgIm90aGVyIik7CisJfQorCisJaWYgKCh1bnNpZ25lZCkgZmllbGRfb3B0cyhmaWVsZCkgJiBPX0VESVQpCisJICAgIHdhZGRzdHIod2luLCAiIGVkaXRhYmxlIik7CisJZWxzZQorCSAgICB3YWRkc3RyKHdpbiwgIiByZWFkb25seSIpOworCisJaWYgKGZpZWxkX3N0YXR1cyhmaWVsZCkpCisJICAgIHdhZGRzdHIod2luLCAiIG1vZGlmaWVkIik7CisKKwlpZiAoZHluYW1pY19maWVsZF9pbmZvKGZpZWxkLCAmZmllbGRfcm93cywgJmZpZWxkX2NvbHMsICZmaWVsZF9tYXgpCisJICAgICE9IEVSUikgeworCSAgICB3cHJpbnR3KHdpbiwgIiBzaXplICVkeCVkIChtYXggJWQpIiwKKwkJICAgIGZpZWxkX3Jvd3MsIGZpZWxkX2NvbHMsIGZpZWxkX21heCk7CisJfQorCisJd2FkZGNoKHdpbiwgJyAnKTsKKwkodm9pZCkgd2F0dHJzZXQod2luLCBBdHRyQXJnKGZpZWxkX2ZvcmUoZmllbGQpLCAwKSk7CisJd2FkZHN0cih3aW4sICJmb3JlIik7CisJd2F0dHJvZmYod2luLCAoaW50KSBmaWVsZF9mb3JlKGZpZWxkKSk7CisKKwl3YWRkY2god2luLCAnLycpOworCisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhmaWVsZF9iYWNrKGZpZWxkKSwgMCkpOworCXdhZGRzdHIod2luLCAiYmFjayIpOworCXdhdHRyb2ZmKHdpbiwgKGludCkgZmllbGRfYmFjayhmaWVsZCkpOworCisJd3ByaW50dyh3aW4sICIsIHBhZCAnJWMnIiwgZmllbGRfcGFkKGZpZWxkKSk7CisKKwl3YWRkc3RyKHdpbiwgIlxuIik7CisJZm9yIChuYnVmID0gMDsgbmJ1ZiA8PSAyOyArK25idWYpIHsKKwkgICAgaWYgKChidWZmZXIgPSBmaWVsZF9idWZmZXIoZmllbGQsIG5idWYpKSAhPSAwKSB7CisJCXdwcmludHcod2luLCAiYnVmZmVyICVkOiIsIG5idWYpOworCQkodm9pZCkgd2F0dHJzZXQod2luLCBBX1JFVkVSU0UpOworCQlpZiAobmJ1ZikgeworCQkgICAgd2FkZG5zdHIod2luLCBidWZmZXIsIHRyaW1tZWQoYnVmZmVyKSk7CisJCX0gZWxzZSB7CisJCSAgICB3YWRkc3RyKHdpbiwgYnVmZmVyKTsKKwkJfQorCQl3YXR0cm9mZih3aW4sIEFfUkVWRVJTRSk7CisJCXdhZGRzdHIod2luLCAiXG4iKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgd3JlZnJlc2god2luKTsKK30KKworc3RhdGljIHZvaWQKK2RlbW9fZm9ybXModm9pZCkKK3sKKyAgICBXSU5ET1cgKnc7CisgICAgRk9STSAqZm9ybTsKKyAgICBGSUVMRCAqZlsxMDBdOwkJLyogd2lsbCBtZW1zZXQgdG8gemVybyAqLworICAgIGludCBmaW5pc2hlZCA9IDAsIGM7CisgICAgdW5zaWduZWQgbiA9IDA7CisgICAgaW50IHBnOworICAgIFdJTkRPVyAqYWxzbzsKKyAgICBjb25zdCBjaGFyICpmbmFtZTsKKworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgIG1vdXNlbWFzayhBTExfTU9VU0VfRVZFTlRTLCAobW1hc2tfdCAqKSAwKTsKKyNlbmRpZgorCisgICAgaGVscF9lZGl0X2ZpZWxkKCk7CisKKyAgICBNdkFkZFN0cig0LCA1NywgIkZvcm1zIEVudHJ5IFRlc3QiKTsKKyAgICBzaG93X2luc2VydF9tb2RlKFRSVUUpOworCisgICAgcmVmcmVzaCgpOworCisgICAgLyogZGVzY3JpYmUgdGhlIGZvcm0gKi8KKyAgICBtZW1zZXQoZiwgMCwgc2l6ZW9mKGYpKTsKKyAgICBmb3IgKHBnID0gMDsgcGcgPCA0OyArK3BnKSB7CisJY2hhciBsYWJlbFs4MF07CisJc3ByaW50ZihsYWJlbCwgIlNhbXBsZSBGb3JtIFBhZ2UgJWQiLCBwZyArIDEpOworCWZbbisrXSA9IG1ha2VfbGFiZWwobGFiZWwsIDAsIDE1KTsKKwlzZXRfbmV3X3BhZ2UoZltuIC0gMV0sIFRSVUUpOworCisJc3dpdGNoIChwZykgeworCWRlZmF1bHQ6CisJICAgIGZuYW1lID0gIkxhc3QgTmFtZSI7CisJICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoZm5hbWUsIDIsIDApOworCSAgICBmW24rK10gPSBtYWtlX2ZpZWxkKGZuYW1lLCAzLCAwLCAxLCAxOCk7CisJICAgIHNldF9maWVsZF90eXBlKGZbbiAtIDFdLCBUWVBFX0FMUEhBLCAxKTsKKworCSAgICBmbmFtZSA9ICJGaXJzdCBOYW1lIjsKKwkgICAgZltuKytdID0gbWFrZV9sYWJlbChmbmFtZSwgMiwgMjApOworCSAgICBmW24rK10gPSBtYWtlX2ZpZWxkKGZuYW1lLCAzLCAyMCwgMSwgMTIpOworCSAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9BTFBIQSwgMSk7CisKKwkgICAgZm5hbWUgPSAiTWlkZGxlIE5hbWUiOworCSAgICBmW24rK10gPSBtYWtlX2xhYmVsKGZuYW1lLCAyLCAzNCk7CisJICAgIGZbbisrXSA9IG1ha2VfZmllbGQoZm5hbWUsIDMsIDM0LCAxLCAxMik7CisJICAgIHNldF9maWVsZF90eXBlKGZbbiAtIDFdLCBUWVBFX0FMUEhBLCAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAxOgorCSAgICBmbmFtZSA9ICJMYXN0IE5hbWUiOworCSAgICBmW24rK10gPSBtYWtlX2xhYmVsKGZuYW1lLCAyLCAwKTsKKwkgICAgZltuKytdID0gbWFrZV9maWVsZChmbmFtZSwgMywgMCwgMSwgMTgpOworCSAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9BTFBIQSwgMSk7CisKKwkgICAgZm5hbWUgPSAiRmlyc3QgTmFtZSI7CisJICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoZm5hbWUsIDIsIDIwKTsKKwkgICAgZltuKytdID0gbWFrZV9maWVsZChmbmFtZSwgMywgMjAsIDEsIDEyKTsKKwkgICAgc2V0X2ZpZWxkX3R5cGUoZltuIC0gMV0sIFRZUEVfQUxQSEEsIDEpOworCisJICAgIGZuYW1lID0gIk1JIjsKKwkgICAgZltuKytdID0gbWFrZV9sYWJlbChmbmFtZSwgMiwgMzQpOworCSAgICBmW24rK10gPSBtYWtlX2ZpZWxkKGZuYW1lLCAzLCAzNCwgMSwgMSk7CisJICAgIHNldF9maWVsZF9wYWQoZltuIC0gMV0sICc/Jyk7CisJICAgIHNldF9maWVsZF90eXBlKGZbbiAtIDFdLCBUWVBFX0FMUEhBLCAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAyOgorCSAgICBmbmFtZSA9ICJIb3N0IE5hbWUiOworCSAgICBmW24rK10gPSBtYWtlX2xhYmVsKGZuYW1lLCAyLCAwKTsKKwkgICAgZltuKytdID0gbWFrZV9maWVsZChmbmFtZSwgMywgMCwgMSwgMjQpOworCSAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9BTE5VTSwgMSk7CisKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwkgICAgZm5hbWUgPSAiSVAgQWRkcmVzcyI7CisJICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoZm5hbWUsIDIsIDI2KTsKKwkgICAgZltuKytdID0gbWFrZV9maWVsZChmbmFtZSwgMywgMjYsIDEsIDE2KTsKKwkgICAgc2V0X2ZpZWxkX3R5cGUoZltuIC0gMV0sIFRZUEVfSVBWNCwgMSk7CisjZW5kaWYKKworCSAgICBicmVhazsKKworCWNhc2UgMzoKKwkgICAgZm5hbWUgPSAiRm91ciBkaWdpdHMiOworCSAgICBmW24rK10gPSBtYWtlX2xhYmVsKGZuYW1lLCAyLCAwKTsKKwkgICAgZltuKytdID0gbWFrZV9maWVsZChmbmFtZSwgMywgMCwgMSwgMTgpOworCSAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9JTlRFR0VSLCA0LCAwLCAwKTsKKworCSAgICBmbmFtZSA9ICJOdW1lcmljIjsKKwkgICAgZltuKytdID0gbWFrZV9sYWJlbChmbmFtZSwgMiwgMjApOworCSAgICBmW24rK10gPSBtYWtlX2ZpZWxkKGZuYW1lLCAzLCAyMCwgMSwgMTIpOworCSAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9OVU1FUklDLCAzLCAtMTAwMDAuMCwgMTAwMDAwMDAwLjApOworCisJICAgIGJyZWFrOworCX0KKworCWZuYW1lID0gIkNvbW1lbnRzIjsKKwlmW24rK10gPSBtYWtlX2xhYmVsKGZuYW1lLCA1LCAwKTsKKwlmW24rK10gPSBtYWtlX2ZpZWxkKGZuYW1lLCA2LCAwLCA0LCA0Nik7CisJaW5pdF9lZGl0X2ZpZWxkKGZbbiAtIDFdLCBnZXRfZGF0YShmbmFtZSkpOworICAgIH0KKworICAgIGZbbl0gPSAoRklFTEQgKikgMDsKKworICAgIGlmICgoZm9ybSA9IG5ld19mb3JtKGYpKSAhPSAwKSB7CisKKwlkaXNwbGF5X2Zvcm0oZm9ybSk7CisKKwl3ID0gZm9ybV93aW4oZm9ybSk7CisJYWxzbyA9IG5ld3dpbihnZXRtYXh5KHN0ZHNjcikgLSBnZXRtYXh5KHcpLCBDT0xTLCBnZXRtYXh5KHcpLCAwKTsKKwlzaG93X2N1cnJlbnRfZmllbGQoYWxzbywgZm9ybSk7CisKKwl3aGlsZSAoIWZpbmlzaGVkKSB7CisJICAgIHN3aXRjaCAoZWRpdF9maWVsZChmb3JtLCAmYykpIHsKKwkgICAgY2FzZSBFX09LOgorCQlicmVhazsKKwkgICAgY2FzZSBFX1VOS05PV05fQ09NTUFORDoKKwkJZmluaXNoZWQgPSBteV9mb3JtX2RyaXZlcihmb3JtLCBjKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCWJlZXAoKTsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgc2hvd19jdXJyZW50X2ZpZWxkKGFsc28sIGZvcm0pOworCX0KKworCWVyYXNlX2Zvcm0oZm9ybSk7CisKKwlmcmVlX2Zvcm0oZm9ybSk7CisgICAgfQorICAgIGZvciAoYyA9IDA7IGZbY10gIT0gMDsgYysrKSB7CisJdm9pZCAqcHRyID0gZmllbGRfdXNlcnB0cihmW2NdKTsKKwlmcmVlKHB0cik7CisJZnJlZV9maWVsZChmW2NdKTsKKyAgICB9CisgICAgbm9yYXcoKTsKKyAgICBubCgpOworCisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgbW91c2VtYXNrKDAsIChtbWFza190ICopIDApOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisgICAgeworCSJVc2FnZTogZGVtb19mb3JtcyBbb3B0aW9uc10gW2RhdGEgZmlsZV0iCisJLCIiCisJLCIgLWQgICAgICAgIG1ha2UgZmllbGRzIGR5bmFtaWMiCisJLCIgLWogdmFsdWUgIGp1c3RpZnkgKDE9bGVmdCwgMj1jZW50ZXIsIDM9cmlnaHQpIgorCSwiIC1tIHZhbHVlICBzZXQgbWF4aW11bSBzaXplIG9mIGR5bmFtaWMgZmllbGRzIgorCSwiIC1vIHZhbHVlICBzcGVjaWZ5IG51bWJlciBvZiBvZmZzY3JlZW4gcm93cyBpbiBuZXdfZmllbGQoKSIKKwksIiAtdCB2YWx1ZSAgc3BlY2lmeSB0ZXh0IHRvIGZpbGwgZmllbGRzIGluaXRpYWxseSIKKyAgICB9OworICAgIHVuc2lnbmVkIGludCBqOworICAgIGZvciAoaiA9IDA7IGogPCBTSVpFT0YodGJsKTsgKytqKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHRibFtqXSk7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgY2g7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJkajptOm86dDoiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZCc6CisJICAgIGRfb3B0aW9uID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnaic6CisJICAgIGpfdmFsdWUgPSBhdG9pKG9wdGFyZyk7CisJICAgIGlmIChqX3ZhbHVlIDwgTk9fSlVTVElGSUNBVElPTgorCQl8fCBqX3ZhbHVlID4gSlVTVElGWV9SSUdIVCkKKwkJdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbSc6CisJICAgIG1fdmFsdWUgPSBhdG9pKG9wdGFyZyk7CisJICAgIGJyZWFrOworCWNhc2UgJ28nOgorCSAgICBvX3ZhbHVlID0gYXRvaShvcHRhcmcpOworCSAgICBicmVhazsKKwljYXNlICd0JzoKKwkgICAgdF92YWx1ZSA9IG9wdGFyZzsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKworCX0KKyAgICB9CisgICAgd2hpbGUgKG9wdGluZCA8IGFyZ2MpIHsKKwlyZWFkX2RhdGEoYXJndltvcHRpbmQrK10pOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKyAgICBjYnJlYWsoKTsKKyAgICBub2VjaG8oKTsKKyAgICByYXcoKTsKKyAgICBub25sKCk7CQkJLyogbGV0cyB1cyByZWFkIF5NJ3MgKi8KKyAgICBpbnRyZmx1c2goc3Rkc2NyLCBGQUxTRSk7CisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJc3RhcnRfY29sb3IoKTsKKwlpbml0X3BhaXIoMSwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworCWluaXRfcGFpcigyLCBDT0xPUl9HUkVFTiwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigzLCBDT0xPUl9DWUFOLCBDT0xPUl9CTEFDSyk7CisJYmtnZCgoY2h0eXBlKSBDT0xPUl9QQUlSKDEpKTsKKwlyZWZyZXNoKCk7CisgICAgfQorCisgICAgZGVtb19mb3JtcygpOworCisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBjdXJzZXMgZm9ybSBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fZm9ybXMudHh0IGIvdGVzdC9kZW1vX2Zvcm1zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzYzZmMwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9kZW1vX2Zvcm1zLnR4dApAQCAtMCwwICsxLDIwIEBACisjICRJZDogZGVtb19mb3Jtcy50eHQsdiAxLjMgMjAxMy8wNi8wOCAxNDoxMDoxNSB0b20gRXhwICQKK0ZpcnN0IE5hbWU6Sm9obgorLgorTWlkZGxlIE5hbWU6RG9uCisuCitNSTpECisuCitMYXN0IE5hbWU6U21pdGgKKy4KK0NvbW1lbnRzOkhlbGxvCitXb3JsZCEKKy4KK0hvc3QgTmFtZTpsb2NhbGhvc3RAbG9jYWxkb21haW4KKy4KK0lQIEFkZHJlc3M6MTkyLjE2OC4xLjEwMAorLgorRm91ciBkaWdpdHM6MTIzNAorLgorTnVtZXJpYzozMjc2OAorLgpkaWZmIC0tZ2l0IGEvdGVzdC9kZW1vX2tleW9rLmMgYi90ZXN0L2RlbW9fa2V5b2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzI0ZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9kZW1vX2tleW9rLmMKQEAgLTAsMCArMSw4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fa2V5b2suYyx2IDEuNSAyMDA2LzExLzA0IDIwOjA5OjUxIHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIHRoZSBrZXlvaygpIGZ1bmN0aW9uLgorICogVGhvbWFzIERpY2tleSAtIDIwMDIvMTEvMjMKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgTkNVUlNFU19FWFRfRlVOQ1MKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBsYXN0Y2ggPSBFUlI7CisgICAgaW50IGNoOworICAgIFdJTkRPVyAqd2luOworCisgICAgaW5pdHNjcigpOworICAgICh2b2lkKSBjYnJlYWsoKTsJCS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKyAgICAodm9pZCkgbm9lY2hvKCk7CQkvKiBkb24ndCBlY2hvIGlucHV0ICovCisKKyAgICBwcmludHcoIlR5cGluZyBhbnkgZnVuY3Rpb24ga2V5IHdpbGwgZGlzYWJsZSBpdCwgYnV0IHR5cGluZyBpdCB0d2ljZSBpblxuIik7CisgICAgcHJpbnR3KCJhIHJvdyB3aWxsIHR1cm4gaXQgYmFjayBvbiAoanVzdCBmb3IgYSBkZW1vKS4iKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICB3aW4gPSBuZXd3aW4oTElORVMgLSAyLCBDT0xTLCAyLCAwKTsKKyAgICBzY3JvbGxvayh3aW4sIFRSVUUpOworICAgIGtleXBhZCh3aW4sIFRSVUUpOworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisKKyAgICB3aGlsZSAoKGNoID0gd2dldGNoKHdpbikpICE9IEVSUikgeworCWNvbnN0IGNoYXIgKm5hbWUgPSBrZXluYW1lKGNoKTsKKwl3cHJpbnR3KHdpbiwgIktleWNvZGUgJWQsIG5hbWUgJXNcbiIsCisJCWNoLAorCQluYW1lICE9IDAgPyBuYW1lIDogIjxudWxsPiIpOworCXdjbHJ0b2VvbCh3aW4pOworCXdyZWZyZXNoKHdpbik7CisJaWYgKGNoID49IEtFWV9NSU4pIHsKKwkgICAga2V5b2soY2gsIEZBTFNFKTsKKwkgICAgbGFzdGNoID0gY2g7CisJfSBlbHNlIGlmIChsYXN0Y2ggPj0gS0VZX01JTikgeworCSAgICBrZXlvayhsYXN0Y2gsIFRSVUUpOworCX0KKyAgICB9CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fbWVudXMuYyBiL3Rlc3QvZGVtb19tZW51cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZDQ4YjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2RlbW9fbWVudXMuYwpAQCAtMCwwICsxLDk5OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fbWVudXMuYyx2IDEuNTQgMjAxNC8wOS8wNSAwODozNDowNiB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSBhIHZhcmlldHkgb2YgZnVuY3Rpb25zIGZyb20gdGhlIG1lbnUgbGlicmFyeS4KKyAqIFRob21hcyBEaWNrZXkgLSAyMDA1LzQvOQorICovCisvKgoraXRlbV9kZXNjcmlwdGlvbgkJLQoraXRlbV9pbml0CQkJLQoraXRlbV9vcHRzCQkJLQoraXRlbV9vcHRzX29mZgkJCS0KK2l0ZW1fb3B0c19vbgkJCS0KK2l0ZW1fdGVybQkJCS0KK2l0ZW1fdmlzaWJsZQkJCS0KK21lbnVfYmFjawkJCS0KK21lbnVfZm9yZQkJCS0KK21lbnVfZm9ybWF0CQkJLQorbWVudV9ncmV5CQkJLQorbWVudV9pbml0CQkJLQorbWVudV9vcHRzCQkJLQorbWVudV9wYWQJCQktCittZW51X3JlcXVlc3RfYnlfbmFtZQkJLQorbWVudV9yZXF1ZXN0X25hbWUJCS0KK21lbnVfdGVybQkJCS0KK21lbnVfdXNlcnB0cgkJCS0KK3NldF9jdXJyZW50X2l0ZW0JCS0KK3NldF9pdGVtX29wdHMJCQktCitzZXRfbWVudV9ncmV5CQkJLQorc2V0X21lbnVfaXRlbXMJCQktCitzZXRfbWVudV9vcHRzCQkJLQorc2V0X21lbnVfcGFkCQkJLQorc2V0X21lbnVfcGF0dGVybgkJLQorc2V0X21lbnVfc3BhY2luZwkJLQorc2V0X21lbnVfdXNlcnB0cgkJLQorc2V0X3RvcF9yb3cJCQktCit0b3Bfcm93CQkJCS0KKyovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIFVTRV9MSUJNRU5VCisKKyNpbmNsdWRlIDxtZW51Lmg+CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisjaWZkZWYgVFJBQ0UKK3N0YXRpYyB1bnNpZ25lZCBzYXZlX3RyYWNlID0gVFJBQ0VfT1JESU5BUlkgfCBUUkFDRV9DQUxMUzsKK2V4dGVybiB1bnNpZ25lZCBfbmNfdHJhY2luZzsKK3N0YXRpYyBNRU5VICptcFRyYWNlOworI2VuZGlmCisjZWxzZQorI3VuZGVmIFRSQUNFCisjZW5kaWYKKwordHlwZWRlZiBlbnVtIHsKKyAgICBlQmFubmVyID0gLTEKKyAgICAsZUZpbGUKKyAgICAsZVNlbGVjdAorI2lmZGVmIFRSQUNFCisgICAgLGVUcmFjZQorI2VuZGlmCisgICAgLGVNQVgKK30gTWVudU5vOworCisjZGVmaW5lIG9rTWVudU5vKG4pICgoKG4pID4gZUJhbm5lcikgJiYgKChuKSA8IGVNQVgpKQorCisjZGVmaW5lIE1FTlVfWQkxCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKm5hbWU7CisgICAgdm9pZCAoKmZ1bmMpIChpbnQpOworICAgIHVuc2lnbmVkIG1hc2s7Cit9IE1FTlVfREFUQTsKKworc3RhdGljIHZvaWQgY2FsbF9maWxlcyhpbnQpOworCitzdGF0aWMgTUVOVSAqbXBCYW5uZXI7CitzdGF0aWMgTUVOVSAqbXBGaWxlOworc3RhdGljIE1FTlUgKm1wU2VsZWN0OworCitzdGF0aWMgV0lORE9XICpzdGF0dXM7CisKK3N0YXRpYyBib29sIGxvYWRlZF9maWxlID0gRkFMU0U7CisKK3N0YXRpYyBjaGFyIGVtcHR5WzFdOworCisvKiBDb21tb24gZnVuY3Rpb24gdG8gYWxsb3cgXlQgdG8gdG9nZ2xlIHRyYWNlLW1vZGUgaW4gdGhlIG1pZGRsZSBvZiBhIHRlc3QKKyAqIHNvIHRoYXQgdHJhY2UtZmlsZXMgY2FuIGJlIG1hZGUgc21hbGxlci4KKyAqLworc3RhdGljIGludAord0dldGNoYXIoV0lORE9XICp3aW4pCit7CisgICAgaW50IGM7CisjaWZkZWYgVFJBQ0UKKyAgICB3aGlsZSAoKGMgPSB3Z2V0Y2god2luKSkgPT0gQ1RSTCgnVCcpKSB7CisJaWYgKF9uY190cmFjaW5nKSB7CisJICAgIHNhdmVfdHJhY2UgPSBfbmNfdHJhY2luZzsKKwkgICAgVHJhY2UoKCJUT0dHTEUtVFJBQ0lORyBPRkYiKSk7CisJICAgIF9uY190cmFjaW5nID0gMDsKKwl9IGVsc2UgeworCSAgICBfbmNfdHJhY2luZyA9IHNhdmVfdHJhY2U7CisJfQorCXRyYWNlKF9uY190cmFjaW5nKTsKKwlpZiAoX25jX3RyYWNpbmcpCisJICAgIFRyYWNlKCgiVE9HR0xFLVRSQUNJTkcgT04iKSk7CisgICAgfQorI2Vsc2UKKyAgICBjID0gd2dldGNoKHdpbik7CisjZW5kaWYKKyAgICByZXR1cm4gYzsKK30KKyNkZWZpbmUgR2V0Y2hhcigpIHdHZXRjaGFyKHN0ZHNjcikKKworc3RhdGljIGludAorbWVudV92aXJ0dWFsaXplKGludCBjKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gS0VZX0VYSVQpCisJcmVzdWx0ID0gKE1BWF9DT01NQU5EICsgMSk7CisgICAgZWxzZSBpZiAoYyA9PSAndScpCisJcmVzdWx0ID0gKFJFUV9TQ1JfVUxJTkUpOworICAgIGVsc2UgaWYgKGMgPT0gJ2QnKQorCXJlc3VsdCA9IChSRVFfU0NSX0RMSU5FKTsKKyAgICBlbHNlIGlmIChjID09ICdiJyB8fCBjID09IEtFWV9OUEFHRSkKKwlyZXN1bHQgPSAoUkVRX1NDUl9VUEFHRSk7CisgICAgZWxzZSBpZiAoYyA9PSAnZicgfHwgYyA9PSBLRVlfUFBBR0UpCisJcmVzdWx0ID0gKFJFUV9TQ1JfRFBBR0UpOworICAgIGVsc2UgaWYgKGMgPT0gJ2wnIHx8IGMgPT0gS0VZX0xFRlQgfHwgYyA9PSBLRVlfQlRBQikKKwlyZXN1bHQgPSAoUkVRX0xFRlRfSVRFTSk7CisgICAgZWxzZSBpZiAoYyA9PSAnbicgfHwgYyA9PSBLRVlfRE9XTikKKwlyZXN1bHQgPSAoUkVRX05FWFRfSVRFTSk7CisgICAgZWxzZSBpZiAoYyA9PSAncCcgfHwgYyA9PSBLRVlfVVApCisJcmVzdWx0ID0gKFJFUV9QUkVWX0lURU0pOworICAgIGVsc2UgaWYgKGMgPT0gJ3InIHx8IGMgPT0gS0VZX1JJR0hUIHx8IGMgPT0gJ1x0JykKKwlyZXN1bHQgPSAoUkVRX1JJR0hUX0lURU0pOworICAgIGVsc2UgaWYgKGMgPT0gJyAnKQorCXJlc3VsdCA9IChSRVFfVE9HR0xFX0lURU0pOworICAgIGVsc2UgeworCWlmIChjICE9IEtFWV9NT1VTRSkKKwkgICAgYmVlcCgpOworCXJlc3VsdCA9IChjKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorbWVudV9nZXRjKE1FTlUgKiBtKQoreworICAgIHJldHVybiB3R2V0Y2hhcihtZW51X3dpbihtKSk7Cit9CisKK3N0YXRpYyBpbnQKK21lbnVfb2Zmc2V0KE1lbnVObyBudW1iZXIpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisKKyAgICBpZiAob2tNZW51Tm8obnVtYmVyKSkgeworCWludCBzcGNfZGVzYywgc3BjX3Jvd3MsIHNwY19jb2xzOworCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJbWVudV9zcGFjaW5nKG1wQmFubmVyLCAmc3BjX2Rlc2MsICZzcGNfcm93cywgJnNwY19jb2xzKTsKKyNlbHNlCisJc3BjX3Jvd3MgPSAwOworI2VuZGlmCisKKwkvKiBGSVhNRTogTUVOVS5pdGVtbGVuIHNlZW1zIHRoZSBvbmx5IHdheSB0byBnZXQgYWN0dWFsIHdpZHRoIG9mIGl0ZW1zICovCisJcmVzdWx0ID0gKG51bWJlciAtIChlQmFubmVyICsgMSkpICogKG1lbnVfaXRlbXdpZHRoKG1wQmFubmVyKSArIHNwY19yb3dzKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK215X21lbnVfaW5pdChNRU5VICogbWVudSkKK3sKKyAgICBUcmFjZSgoImNhbGxlZCBNZW51SG9vayBteV9tZW51X2luaXQiKSk7CisgICAgbXZ3cHJpbnR3KHN0YXR1cywgMiwgMCwgIm1lbnVfaW5pdCAlcCIsICh2b2lkICopIG1lbnUpOworICAgIHdjbHJ0b2VvbChzdGF0dXMpOworICAgIHdyZWZyZXNoKHN0YXR1cyk7Cit9CisKK3N0YXRpYyB2b2lkCitteV9tZW51X3Rlcm0oTUVOVSAqIG1lbnUpCit7CisgICAgVHJhY2UoKCJjYWxsZWQgTWVudUhvb2sgbXlfbWVudV90ZXJtIikpOworICAgIG12d3ByaW50dyhzdGF0dXMsIDIsIDAsICJtZW51X3Rlcm0gJXAiLCAodm9pZCAqKSBtZW51KTsKKyAgICB3Y2xydG9lb2woc3RhdHVzKTsKKyAgICB3cmVmcmVzaChzdGF0dXMpOworfQorCitzdGF0aWMgdm9pZAorbXlfaXRlbV9pbml0KE1FTlUgKiBtZW51KQoreworICAgIElURU0gKml0ZW0gPSBjdXJyZW50X2l0ZW0obWVudSk7CisgICAgY29uc3QgY2hhciAqbmFtZSA9IGl0ZW1fbmFtZShpdGVtKTsKKworICAgIFRyYWNlKCgiY2FsbGVkIE1lbnVIb29rIG15X2l0ZW1faW5pdCAoJXMpIiwgbmFtZSkpOworICAgIG12d3ByaW50dyhzdGF0dXMsIDIsIDAsICJpdGVtX2luaXQgJXMiLCBuYW1lKTsKKyAgICB3Y2xydG9lb2woc3RhdHVzKTsKKyAgICB3cmVmcmVzaChzdGF0dXMpOworfQorCitzdGF0aWMgdm9pZAorbXlfaXRlbV90ZXJtKE1FTlUgKiBtZW51KQoreworICAgIElURU0gKml0ZW0gPSBjdXJyZW50X2l0ZW0obWVudSk7CisgICAgY29uc3QgY2hhciAqbmFtZSA9IGl0ZW1fbmFtZShpdGVtKTsKKworICAgIFRyYWNlKCgiY2FsbGVkIE1lbnVIb29rIG15X2l0ZW1fdGVybSAoJXMpIiwgbmFtZSkpOworICAgIG12d3ByaW50dyhzdGF0dXMsIDIsIDAsICJpdGVtX3Rlcm0gJXMiLCBuYW1lKTsKKyAgICB3Y2xydG9lb2woc3RhdHVzKTsKKyAgICB3cmVmcmVzaChzdGF0dXMpOworfQorCitzdGF0aWMgTUVOVSAqCittZW51X2NyZWF0ZShJVEVNICoqIGl0ZW1zLCBpbnQgY291bnQsIGludCBuY29scywgTWVudU5vIG51bWJlcikKK3sKKyAgICBNRU5VICpyZXN1bHQ7CisgICAgV0lORE9XICptZW51d2luOworICAgIGludCBtcm93cywgbWNvbHM7CisgICAgaW50IHkgPSBva01lbnVObyhudW1iZXIpID8gTUVOVV9ZIDogMDsKKyAgICBpbnQgeCA9IG1lbnVfb2Zmc2V0KG51bWJlcik7CisgICAgaW50IG1hcmdpbiA9ICh5ID09IE1FTlVfWSkgPyAxIDogMDsKKyAgICBpbnQgbWF4Y29sID0gKG5jb2xzICsgeCkgPCBDT0xTID8gbmNvbHMgOiAoQ09MUyAtIHggLSAxKTsKKyAgICBpbnQgbWF4cm93ID0gKGNvdW50ICsgMSkgLyBuY29sczsKKworICAgIGlmICgobWF4cm93ICsgeSkgPj0gKExJTkVTIC0gNCkpCisJbWF4cm93ID0gTElORVMgLSA0IC0geTsKKworICAgIHJlc3VsdCA9IG5ld19tZW51KGl0ZW1zKTsKKworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwlzZXRfbWVudV9mb3JlKHJlc3VsdCwgKGNodHlwZSkgQ09MT1JfUEFJUigxKSk7CisJc2V0X21lbnVfYmFjayhyZXN1bHQsIChjaHR5cGUpIENPTE9SX1BBSVIoMikpOworICAgIH0KKworICAgIHNldF9tZW51X2Zvcm1hdChyZXN1bHQsIG1heHJvdywgbWF4Y29sKTsKKyAgICBzY2FsZV9tZW51KHJlc3VsdCwgJm1yb3dzLCAmbWNvbHMpOworCisgICAgaWYgKG1jb2xzICsgKDIgKiBtYXJnaW4gKyB4KSA+PSBDT0xTKQorCW1jb2xzID0gQ09MUyAtICgyICogbWFyZ2luICsgeCk7CisKKyNpZmRlZiBUUkFDRQorICAgIGlmIChudW1iZXIgPT0gZVRyYWNlKQorCW1lbnVfb3B0c19vZmYocmVzdWx0LCBPX09ORVZBTFVFKTsKKyAgICBlbHNlCisJbWVudV9vcHRzX29uKHJlc3VsdCwgT19PTkVWQUxVRSk7CisjZW5kaWYKKworICAgIG1lbnV3aW4gPSBuZXd3aW4obXJvd3MgKyAoMiAqIG1hcmdpbiksIG1jb2xzICsgKDIgKiBtYXJnaW4pLCB5LCB4KTsKKyAgICBzZXRfbWVudV93aW4ocmVzdWx0LCBtZW51d2luKTsKKyAgICBrZXlwYWQobWVudXdpbiwgVFJVRSk7CisgICAgaWYgKG1hcmdpbikKKwlib3gobWVudXdpbiwgMCwgMCk7CisKKyAgICBzZXRfbWVudV9zdWIocmVzdWx0LCBkZXJ3aW4obWVudXdpbiwgbXJvd3MsIG1jb2xzLCBtYXJnaW4sIG1hcmdpbikpOworCisgICAgcG9zdF9tZW51KHJlc3VsdCk7CisKKyAgICBzZXRfbWVudV9pbml0KHJlc3VsdCwgbXlfbWVudV9pbml0KTsKKyAgICBzZXRfbWVudV90ZXJtKHJlc3VsdCwgbXlfbWVudV90ZXJtKTsKKyAgICBzZXRfaXRlbV9pbml0KHJlc3VsdCwgbXlfaXRlbV9pbml0KTsKKyAgICBzZXRfaXRlbV90ZXJtKHJlc3VsdCwgbXlfaXRlbV90ZXJtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbWVudV9kZXN0cm95KE1FTlUgKiBtKQoreworICAgIGludCBjb3VudDsKKworICAgIFRyYWNlKCgibWVudV9kZXN0cm95ICVwIiwgKHZvaWQgKikgbSkpOworICAgIGlmIChtICE9IDApIHsKKwlJVEVNICoqaXRlbXMgPSBtZW51X2l0ZW1zKG0pOworCWNvbnN0IGNoYXIgKmJsb2IgPSAwOworCisJY291bnQgPSBpdGVtX2NvdW50KG0pOworCVRyYWNlKCgibWVudV9kZXN0cm95ICVwIGNvdW50ICVkIiwgKHZvaWQgKikgbSwgY291bnQpKTsKKwlpZiAoKGNvdW50ID4gMCkgJiYgKG0gPT0gbXBTZWxlY3QpKSB7CisJICAgIGJsb2IgPSBpdGVtX25hbWUoKml0ZW1zKTsKKwl9CisKKwl1bnBvc3RfbWVudShtKTsKKwlmcmVlX21lbnUobSk7CisKKwkvKiBmcmVlIHRoZSBleHRyYSBkYXRhIGFsbG9jYXRlZCBpbiBidWlsZF9zZWxlY3RfbWVudSgpICovCisJaWYgKChjb3VudCA+IDApICYmIChtID09IG1wU2VsZWN0KSkgeworCSAgICBpZiAoYmxvYiAmJiBsb2FkZWRfZmlsZSkgeworCQlUcmFjZSgoImZyZWVpbmcgYmxvYiAlcCIsIGJsb2IpKTsKKwkJZnJlZSgodm9pZCAqKSBibG9iKTsKKwkgICAgfQorCSAgICBmcmVlKGl0ZW1zKTsKKwkgICAgaXRlbXMgPSAwOworCX0KKyNpZmRlZiBUUkFDRQorCWlmICgoY291bnQgPiAwKSAmJiAobSA9PSBtcFRyYWNlKSkgeworCSAgICBJVEVNICoqaXAgPSBpdGVtczsKKwkgICAgaWYgKGlwICE9IDApIHsKKwkJd2hpbGUgKCppcCkKKwkJICAgIGZyZWUoKmlwKyspOworCSAgICB9CisJfQorI2VuZGlmCisgICAgfQorfQorCisvKiBmb3JjZSB0aGUgZ2l2ZW4gbWVudSB0byBhcHBlYXIgKi8KK3N0YXRpYyB2b2lkCittZW51X2Rpc3BsYXkoTUVOVSAqIG0pCit7CisgICAgdG91Y2h3aW4obWVudV93aW4obSkpOworICAgIHdyZWZyZXNoKG1lbnVfd2luKG0pKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZAorYnVpbGRfZmlsZV9tZW51KE1lbnVObyBudW1iZXIpCit7CisgICAgc3RhdGljIE1FTlVfREFUQSB0YWJsZVtdID0KKyAgICB7CisJeyJFeGl0IiwgY2FsbF9maWxlcywgMH0sCisJeyhjaGFyICopIDAsIDAsIDB9CisgICAgfTsKKyAgICBzdGF0aWMgSVRFTSAqaXRlbXNbU0laRU9GKHRhYmxlKV07CisKKyAgICBJVEVNICoqaXAgPSBpdGVtczsKKyAgICBpbnQgbjsKKworICAgIGZvciAobiA9IDA7IHRhYmxlW25dLm5hbWUgIT0gMDsgKytuKSB7CisJKmlwID0gbmV3X2l0ZW0odGFibGVbbl0ubmFtZSwgZW1wdHkpOworCXNldF9pdGVtX3VzZXJwdHIoKmlwLCAodm9pZCAqKSAmdGFibGVbbl0pOworCSsraXA7CisgICAgfQorICAgICppcCA9IChJVEVNICopIDA7CisKKyAgICBtcEZpbGUgPSBtZW51X2NyZWF0ZShpdGVtcywgU0laRU9GKHRhYmxlKSAtIDEsIDEsIG51bWJlcik7Cit9CisKK3N0YXRpYyBpbnQKK3BlcmZvcm1fZmlsZV9tZW51KGludCBjbWQpCit7CisgICAgcmV0dXJuIG1lbnVfZHJpdmVyKG1wRmlsZSwgY21kKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZAorY2FsbF9zZWxlY3QoaW50IGNvZGUpCit7CisgICAgKHZvaWQpIGNvZGU7CisgICAgVHJhY2UoKCJTZWxlY3RlZCBpdGVtICVkIiwgY29kZSkpOworfQorCitzdGF0aWMgdm9pZAorYnVpbGRfc2VsZWN0X21lbnUoTWVudU5vIG51bWJlciwgY2hhciAqZmlsZW5hbWUpCit7CisjZGVmaW5lIE1ZX0RBVEEobmFtZSkgeyBuYW1lLCBjYWxsX3NlbGVjdCwgMCB9CisgICAgc3RhdGljIE1FTlVfREFUQSB0YWJsZVtdID0KKyAgICB7CisJTVlfREFUQSgiTGlvbnMiKSwKKwlNWV9EQVRBKCJUaWdlcnMiKSwKKwlNWV9EQVRBKCJCZWFycyIpLAorCU1ZX0RBVEEoIihPaCBteSEpIiksCisJTVlfREFUQSgiTmV3dHMiKSwKKwlNWV9EQVRBKCJQbGF0eXBpIiksCisJTVlfREFUQSgiTGVtdXJzIiksCisJTVlfREFUQSgiKE9oIHJlYWxseT8hKSIpLAorCU1ZX0RBVEEoIkxlb3BhcmRzIiksCisJTVlfREFUQSgiUGFudGhlcnMiKSwKKwlNWV9EQVRBKCJQdW1hcyIpLAorCU1ZX0RBVEEoIkxpb25zLCBUaWdlcnMsIEJlYXJzLCAoT2ggbXkhKSwgTmV3dHMsIFBsYXR5cGksIExlbXVycyIpLAorCU1ZX0RBVEEoIkxpb25zLCBUaWdlcnMsIEJlYXJzLCAoT2ggbXkhKSwgTmV3dHMsIFBsYXR5cGksIExlbXVycywgTGlvbnMsIFRpZ2VycywgQmVhcnMsIChPaCBteSEpLCBOZXd0cywgUGxhdHlwaSwgTGVtdXJzIiksCisJeyhjaGFyICopIDAsIDAsIDB9CisgICAgfTsKKyAgICBzdGF0aWMgSVRFTSAqKml0ZW1zOworCisgICAgSVRFTSAqKmlwOworICAgIE1FTlVfREFUQSAqYXAgPSAwOworICAgIE1FTlVfREFUQSAqbXlMaXN0ID0gMDsKKyAgICBpbnQgaTsKKyAgICBzaXplX3QgY291bnQgPSAwOworCisgICAgaWYgKGZpbGVuYW1lICE9IDApIHsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKwlpZiAoc3RhdChmaWxlbmFtZSwgJnNiKSA9PSAwCisJICAgICYmIChzYi5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHCisJICAgICYmIHNiLnN0X3NpemUgIT0gMCkgeworCSAgICBzaXplX3Qgc2l6ZSA9IChzaXplX3QpIHNiLnN0X3NpemU7CisJICAgIHVuc2lnbmVkIGosIGs7CisJICAgIGNoYXIgKmJsb2IgPSB0eXBlTWFsbG9jKGNoYXIsIHNpemUgKyAxKTsKKwkgICAgTUVOVV9EQVRBICpsaXN0ID0gdHlwZUNhbGxvYyhNRU5VX0RBVEEsIHNpemUgKyAxKTsKKworCSAgICBpdGVtcyA9IHR5cGVDYWxsb2MoSVRFTSAqLCBzaXplICsgMSk7CisJICAgIFRyYWNlKCgiYnVpbGRfc2VsZWN0X21lbnUgYmxvYj0lcCwgaXRlbXM9JXAiLAorCQkgICAodm9pZCAqKSBibG9iLAorCQkgICAodm9pZCAqKSBpdGVtcykpOworCSAgICBpZiAoYmxvYiAhPSAwICYmIGxpc3QgIT0gMCkgeworCQlGSUxFICpmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCQlpZiAoZnAgIT0gMCkgeworCQkgICAgaWYgKGZyZWFkKGJsb2IsIHNpemVvZihjaGFyKSwgc2l6ZSwgZnApID09IHNpemUpIHsKKwkJCWJvb2wgbWFyayA9IFRSVUU7CisJCQlmb3IgKGogPSBrID0gMDsgaiA8IHNpemU7ICsraikgeworCQkJICAgIGlmIChtYXJrKSB7CisJCQkJbGlzdFtrKytdLm5hbWUgPSBibG9iICsgajsKKwkJCQltYXJrID0gRkFMU0U7CisJCQkgICAgfQorCQkJICAgIGlmIChibG9iW2pdID09ICdcbicpIHsKKwkJCQlibG9iW2pdID0gJ1wwJzsKKwkJCQlpZiAoayA+IDAgJiYgKmxpc3RbayAtIDFdLm5hbWUgPT0gJ1wwJykKKwkJCQkgICAgLS1rOworCQkJCW1hcmsgPSBUUlVFOworCQkJICAgIH0gZWxzZSBpZiAoYmxvYltqXSA9PSAnXHQnKSB7CisJCQkJYmxvYltqXSA9ICcgJzsJLyogbWVudSBpdGVtcyBhcmUgcHJpbnRhYmxlICovCisJCQkgICAgfQorCQkJfQorCQkJbGlzdFtrXS5uYW1lID0gMDsKKwkJCWNvdW50ID0gazsKKwkJCWFwID0gbXlMaXN0ID0gbGlzdDsKKwkJICAgIH0KKwkJICAgIGZjbG9zZShmcCk7CisJCX0KKwkJbG9hZGVkX2ZpbGUgPSBUUlVFOworCSAgICB9CisJICAgIGlmIChhcCA9PSAwKQorCQlmcmVlKGl0ZW1zKTsKKwl9CisgICAgfQorICAgIGlmIChhcCA9PSAwKSB7CisJY291bnQgPSBTSVpFT0YodGFibGUpIC0gMTsKKwlpdGVtcyA9IHR5cGVDYWxsb2MoSVRFTSAqLCBjb3VudCArIDEpOworCWFwID0gdGFibGU7CisgICAgfQorCisgICAgaXAgPSBpdGVtczsKKyAgICBmb3IgKGkgPSAwOyBhcFtpXS5uYW1lICE9IDA7ICsraSkgeworCWFwW2ldLmZ1bmMgPSBjYWxsX3NlbGVjdDsKKwlhcFtpXS5tYXNrID0gKHVuc2lnbmVkKSBpOworCSppcCA9IG5ld19pdGVtKGFwW2ldLm5hbWUsIGVtcHR5KTsKKwlzZXRfaXRlbV91c2VycHRyKCppcCwgKHZvaWQgKikgJnRhYmxlW2ldKTsKKwkrK2lwOworICAgIH0KKyAgICAqaXAgPSAwOworCisgICAgbXBTZWxlY3QgPSBtZW51X2NyZWF0ZShpdGVtcywgKGludCkgY291bnQsIDEsIG51bWJlcik7CisgICAgaWYgKG15TGlzdCAhPSAwKQorCWZyZWUobXlMaXN0KTsKK30KKworc3RhdGljIGludAorcGVyZm9ybV9zZWxlY3RfbWVudShpbnQgY21kKQoreworICAgIHJldHVybiBtZW51X2RyaXZlcihtcFNlbGVjdCwgY21kKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgVFJBQ0UKKworc3RhdGljIHZvaWQKK2NhbGxfdHJhY2UoaW50IGNvZGUpCit7CisgICAgKHZvaWQpIGNvZGU7CisgICAgVHJhY2UoKCJVcGRhdGluZyB0cmFjZSBtYXNrICVkIiwgY29kZSkpOworfQorCisjZGVmaW5lIFRfVEJMKG5hbWUpIHsgI25hbWUsIGNhbGxfdHJhY2UsIG5hbWUgfQorc3RhdGljIE1FTlVfREFUQSB0X3RibFtdID0KK3sKKworICAgIFRfVEJMKFRSQUNFX0RJU0FCTEUpLAorICAgIFRfVEJMKFRSQUNFX1RJTUVTKSwKKyAgICBUX1RCTChUUkFDRV9UUFVUUyksCisgICAgVF9UQkwoVFJBQ0VfVVBEQVRFKSwKKyAgICBUX1RCTChUUkFDRV9NT1ZFKSwKKyAgICBUX1RCTChUUkFDRV9DSEFSUFVUKSwKKyAgICBUX1RCTChUUkFDRV9PUkRJTkFSWSksCisgICAgVF9UQkwoVFJBQ0VfQ0FMTFMpLAorICAgIFRfVEJMKFRSQUNFX1ZJUlRQVVQpLAorICAgIFRfVEJMKFRSQUNFX0lFVkVOVCksCisgICAgVF9UQkwoVFJBQ0VfQklUUyksCisgICAgVF9UQkwoVFJBQ0VfSUNBTExTKSwKKyAgICBUX1RCTChUUkFDRV9DQ0FMTFMpLAorICAgIFRfVEJMKFRSQUNFX0RBVEFCQVNFKSwKKyAgICBUX1RCTChUUkFDRV9BVFRSUyksCisgICAgVF9UQkwoVFJBQ0VfTUFYSU1VTSksCisgICAgeworCShjaGFyICopIDAsIDAsIDAKKyAgICB9Cit9OworCitzdGF0aWMgdm9pZAorYnVpbGRfdHJhY2VfbWVudShNZW51Tm8gbnVtYmVyKQoreworICAgIHN0YXRpYyBJVEVNICppdGVtc1tTSVpFT0YodF90YmwpXTsKKworICAgIElURU0gKippcCA9IGl0ZW1zOworICAgIGludCBuOworCisgICAgZm9yIChuID0gMDsgdF90Ymxbbl0ubmFtZSAhPSAwOyBuKyspIHsKKwkqaXAgPSBuZXdfaXRlbSh0X3RibFtuXS5uYW1lLCBlbXB0eSk7CisJc2V0X2l0ZW1fdXNlcnB0cigqaXAsICh2b2lkICopICZ0X3RibFtuXSk7CisJKytpcDsKKyAgICB9CisgICAgKmlwID0gKElURU0gKikgMDsKKworICAgIG1wVHJhY2UgPSBtZW51X2NyZWF0ZShpdGVtcywgU0laRU9GKHRfdGJsKSAtIDEsIDIsIG51bWJlcik7Cit9CisKK3N0YXRpYyBjaGFyICoKK3RyYWNldHJhY2UodW5zaWduZWQgdGxldmVsKQoreworICAgIHN0YXRpYyBjaGFyICpidWY7CisgICAgaW50IG47CisKKyAgICBpZiAoYnVmID09IDApIHsKKwlzaXplX3QgbmVlZCA9IDEyOworCWZvciAobiA9IDA7IHRfdGJsW25dLm5hbWUgIT0gMDsgbisrKQorCSAgICBuZWVkICs9IHN0cmxlbih0X3RibFtuXS5uYW1lKSArIDI7CisJYnVmID0gdHlwZU1hbGxvYyhjaGFyLCBuZWVkKTsKKyAgICB9CisgICAgc3ByaW50ZihidWYsICIweCUwMnggPSB7IiwgdGxldmVsKTsKKyAgICBpZiAodGxldmVsID09IDApIHsKKwlzcHJpbnRmKGJ1ZiArIHN0cmxlbihidWYpLCAiJXMsICIsIHRfdGJsWzBdLm5hbWUpOworICAgIH0gZWxzZSB7CisJZm9yIChuID0gMTsgdF90Ymxbbl0ubmFtZSAhPSAwOyBuKyspCisJICAgIGlmICgodGxldmVsICYgdF90Ymxbbl0ubWFzaykgPT0gdF90Ymxbbl0ubWFzaykgeworCQlzdHJjYXQoYnVmLCB0X3RibFtuXS5uYW1lKTsKKwkJc3RyY2F0KGJ1ZiwgIiwgIik7CisJICAgIH0KKyAgICB9CisgICAgaWYgKGJ1ZltzdHJsZW4oYnVmKSAtIDJdID09ICcsJykKKwlidWZbc3RybGVuKGJ1ZikgLSAyXSA9ICdcMCc7CisgICAgcmV0dXJuIChzdHJjYXQoYnVmLCAifSIpKTsKK30KKworLyogZmFrZSBhIGR5bmFtaWNhbGx5IHJlY29uZmlndXJhYmxlIG1lbnUgdXNpbmcgdGhlIDB0aCBlbnRyeSB0byBkZXNlbGVjdAorICogdGhlIG90aGVycworICovCitzdGF0aWMgYm9vbAordXBkYXRlX3RyYWNlX21lbnUoTUVOVSAqIG0pCit7CisgICAgSVRFTSAqKml0ZW1zOworICAgIElURU0gKmksICoqcDsKKyAgICBib29sIGNoYW5nZWQgPSBGQUxTRTsKKworICAgIGl0ZW1zID0gbWVudV9pdGVtcyhtKTsKKyAgICBpID0gY3VycmVudF9pdGVtKG0pOworICAgIGlmIChpID09IGl0ZW1zWzBdKSB7CisJaWYgKGl0ZW1fdmFsdWUoaSkpIHsKKwkgICAgZm9yIChwID0gaXRlbXMgKyAxOyAqcCAhPSAwOyBwKyspCisJCWlmIChpdGVtX3ZhbHVlKCpwKSkgeworCQkgICAgc2V0X2l0ZW1fdmFsdWUoKnAsIEZBTFNFKTsKKwkJICAgIGNoYW5nZWQgPSBUUlVFOworCQl9CisJfQorICAgIH0KKyAgICByZXR1cm4gY2hhbmdlZDsKK30KKworc3RhdGljIGludAorcGVyZm9ybV90cmFjZV9tZW51KGludCBjbWQpCisvKiBpbnRlcmFjdGl2ZWx5IHNldCB0aGUgdHJhY2UgbGV2ZWwgKi8KK3sKKyAgICBJVEVNICoqaXA7CisgICAgdW5zaWduZWQgbmV3dHJhY2U7CisgICAgaW50IHJlc3VsdDsKKworICAgIGZvciAoaXAgPSBtZW51X2l0ZW1zKG1wVHJhY2UpOyAqaXA7IGlwKyspIHsKKwlNRU5VX0RBVEEgKnRkID0gKE1FTlVfREFUQSAqKSBpdGVtX3VzZXJwdHIoKmlwKTsKKwl1bnNpZ25lZCBtYXNrID0gdGQtPm1hc2s7CisJaWYgKG1hc2sgPT0gMCkKKwkgICAgc2V0X2l0ZW1fdmFsdWUoKmlwLCBfbmNfdHJhY2luZyA9PSAwKTsKKwllbHNlIGlmICgobWFzayAmIF9uY190cmFjaW5nKSA9PSBtYXNrKQorCSAgICBzZXRfaXRlbV92YWx1ZSgqaXAsIFRSVUUpOworICAgIH0KKworICAgIHJlc3VsdCA9IG1lbnVfZHJpdmVyKG1wVHJhY2UsIGNtZCk7CisKKyAgICBpZiAocmVzdWx0ID09IEVfT0spIHsKKwlpZiAodXBkYXRlX3RyYWNlX21lbnUobXBUcmFjZSkgfHwgY21kID09IFJFUV9UT0dHTEVfSVRFTSkgeworCSAgICBuZXd0cmFjZSA9IDA7CisJICAgIGZvciAoaXAgPSBtZW51X2l0ZW1zKG1wVHJhY2UpOyAqaXA7IGlwKyspIHsKKwkJaWYgKGl0ZW1fdmFsdWUoKmlwKSkgeworCQkgICAgTUVOVV9EQVRBICp0ZCA9IChNRU5VX0RBVEEgKikgaXRlbV91c2VycHRyKCppcCk7CisJCSAgICBuZXd0cmFjZSB8PSB0ZC0+bWFzazsKKwkJfQorCSAgICB9CisJICAgIHRyYWNlKG5ld3RyYWNlKTsKKwkgICAgVHJhY2UoKCJ0cmFjZSBsZXZlbCBpbnRlcmFjdGl2ZWx5IHNldCB0byAlcyIsIHRyYWNldHJhY2UoX25jX3RyYWNpbmcpKSk7CisKKwkgICAgTXZXUHJpbnR3KHN0YXR1cywgMSwgMCwKKwkJICAgICAgIlRyYWNlIGxldmVsIGlzICVzXG4iLCB0cmFjZXRyYWNlKF9uY190cmFjaW5nKSk7CisJICAgIHdyZWZyZXNoKHN0YXR1cyk7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8qIFRSQUNFICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorbWVudV9udW1iZXIodm9pZCkKK3sKKyAgICByZXR1cm4gaXRlbV9pbmRleChjdXJyZW50X2l0ZW0obXBCYW5uZXIpKSAtIChlQmFubmVyICsgMSk7Cit9CisKK3N0YXRpYyBNRU5VICoKK2N1cnJlbnRfbWVudSh2b2lkKQoreworICAgIE1FTlUgKnJlc3VsdDsKKworICAgIHN3aXRjaCAobWVudV9udW1iZXIoKSkgeworICAgIGNhc2UgZUZpbGU6CisJcmVzdWx0ID0gbXBGaWxlOworCWJyZWFrOworICAgIGNhc2UgZVNlbGVjdDoKKwlyZXN1bHQgPSBtcFNlbGVjdDsKKwlicmVhazsKKyNpZmRlZiBUUkFDRQorICAgIGNhc2UgZVRyYWNlOgorCXJlc3VsdCA9IG1wVHJhY2U7CisJYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorCXJlc3VsdCA9IDA7CisJYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitjYWxsX21lbnVzKGludCBjb2RlKQoreworICAgICh2b2lkKSBjb2RlOworICAgIFRyYWNlKCgiQWN0aXZhdGVkIG1lbnUgJWRcbiIsIGNvZGUpKTsKK30KKworc3RhdGljIHZvaWQKK2J1aWxkX21lbnVzKGNoYXIgKmZpbGVuYW1lKQoreworICAgIHN0YXRpYyBNRU5VX0RBVEEgdGFibGVbXSA9CisgICAgeworCXsiRmlsZSIsIGNhbGxfbWVudXMsIDB9LAorCXsiU2VsZWN0IiwgY2FsbF9tZW51cywgMX0sCisjaWZkZWYgVFJBQ0UKKwl7IlRyYWNlIiwgY2FsbF9tZW51cywgMn0sCisjZW5kaWYKKwl7KGNoYXIgKikgMCwgMCwgMH0KKyAgICB9OworICAgIHN0YXRpYyBJVEVNICppdGVtc1tTSVpFT0YodGFibGUpXTsKKworICAgIElURU0gKippcCA9IGl0ZW1zOworICAgIGludCBuOworCisgICAgZm9yIChuID0gMDsgdGFibGVbbl0ubmFtZSAhPSAwOyArK24pIHsKKwkqaXAgPSBuZXdfaXRlbSh0YWJsZVtuXS5uYW1lLCBlbXB0eSk7CisJc2V0X2l0ZW1fdXNlcnB0cigqaXAsICh2b2lkICopICZ0YWJsZVtuXSk7CisJKytpcDsKKyAgICB9CisgICAgKmlwID0gKElURU0gKikgMDsKKworICAgIG1wQmFubmVyID0gbWVudV9jcmVhdGUoaXRlbXMsIFNJWkVPRih0YWJsZSkgLSAxLCBTSVpFT0YodGFibGUpIC0gMSwgZUJhbm5lcik7CisgICAgc2V0X21lbnVfbWFyayhtcEJhbm5lciwgIj4iKTsKKworICAgIGJ1aWxkX2ZpbGVfbWVudShlRmlsZSk7CisgICAgYnVpbGRfc2VsZWN0X21lbnUoZVNlbGVjdCwgZmlsZW5hbWUpOworI2lmZGVmIFRSQUNFCisgICAgYnVpbGRfdHJhY2VfbWVudShlVHJhY2UpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK21vdmVfbWVudShNRU5VICogbWVudSwgTUVOVSAqIGN1cnJlbnQsIGludCBieV95LCBpbnQgYnlfeCkKK3sKKyAgICBXSU5ET1cgKnRvcF93aW4gPSBtZW51X3dpbihtZW51KTsKKyAgICBXSU5ET1cgKnN1Yl93aW4gPSBtZW51X3N1YihtZW51KTsKKyAgICBpbnQgeTAsIHgwOworICAgIGludCB5MSwgeDE7CisgICAgaW50IHJlc3VsdDsKKworICAgIGdldGJlZ3l4KHRvcF93aW4sIHkwLCB4MCk7CisgICAgeTAgKz0gYnlfeTsKKyAgICB4MCArPSBieV94OworCisgICAgZ2V0YmVneXgoc3ViX3dpbiwgeTEsIHgxKTsKKyAgICB5MSArPSBieV95OworICAgIHgxICs9IGJ5X3g7CisKKyAgICBpZiAoKHJlc3VsdCA9IG12d2luKHRvcF93aW4sIHkwLCB4MCkpICE9IEVSUikgeworI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OX1BBVENIKSAmJiAoTkNVUlNFU19WRVJTSU9OX1BBVENIIDwgMjAwNjAyMTgpCisJc3ViX3dpbi0+X2JlZ3kgPSB5MTsKKwlzdWJfd2luLT5fYmVneCA9IHgxOworI2Vsc2UKKwltdndpbihzdWJfd2luLCB5MSwgeDEpOworI2VuZGlmCisJaWYgKG1lbnUgPT0gY3VycmVudCkgeworCSAgICB0b3VjaHdpbih0b3Bfd2luKTsKKwkgICAgd25vdXRyZWZyZXNoKHRvcF93aW4pOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIE1vdmUgdGhlIG1lbnVzIGFyb3VuZCBvbiB0aGUgc2NyZWVuLCB0byB0ZXN0IG12d2luKCkuCisgKi8KK3N0YXRpYyB2b2lkCittb3ZlX21lbnVzKE1FTlUgKiBjdXJyZW50LCBpbnQgYnlfeSwgaW50IGJ5X3gpCit7CisgICAgaWYgKG1vdmVfbWVudShtcEJhbm5lciwgY3VycmVudCwgYnlfeSwgYnlfeCkgIT0gRVJSKSB7CisJZXJhc2UoKTsKKwl3bm91dHJlZnJlc2goc3Rkc2NyKTsKKwltb3ZlX21lbnUobXBGaWxlLCBjdXJyZW50LCBieV95LCBieV94KTsKKwltb3ZlX21lbnUobXBTZWxlY3QsIGN1cnJlbnQsIGJ5X3ksIGJ5X3gpOworI2lmZGVmIFRSQUNFCisJbW92ZV9tZW51KG1wVHJhY2UsIGN1cnJlbnQsIGJ5X3ksIGJ5X3gpOworI2VuZGlmCisJZG91cGRhdGUoKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3N0YXR1cyhpbnQgY2gsIE1FTlUgKiBtZW51KQoreworICAgIHdtb3ZlKHN0YXR1cywgMCwgMCk7CisgICAgd3ByaW50dyhzdGF0dXMsICJrZXkgJXMsIG1lbnUgJWQsIG1hcmsgJXMsIG1hdGNoICVzIiwKKwkgICAga2V5bmFtZShjaCksCisJICAgIG1lbnVfbnVtYmVyKCksCisJICAgIG1lbnVfbWFyayhtZW51KSwKKwkgICAgbWVudV9wYXR0ZXJuKG1lbnUpKTsKKyAgICB3Y2xydG9lb2woc3RhdHVzKTsKKyAgICB3cmVmcmVzaChzdGF0dXMpOworfQorCitzdGF0aWMgdm9pZAorcGVyZm9ybV9tZW51cyh2b2lkKQoreworICAgIE1FTlUgKnRoaXNfbWVudTsKKyAgICBNRU5VICpsYXN0X21lbnUgPSBtcEZpbGU7CisgICAgaW50IGNvZGUgPSBFX1VOS05PV05fQ09NTUFORDsKKyAgICBpbnQgY21kOworICAgIGludCBjaCA9IEVSUjsKKworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgIG1vdXNlbWFzayhBTExfTU9VU0VfRVZFTlRTLCAobW1hc2tfdCAqKSAwKTsKKyNlbmRpZgorCisgICAgbWVudV9kaXNwbGF5KGxhc3RfbWVudSk7CisKKyAgICBmb3IgKDs7KSB7CisKKwlpZiAoY2ggIT0gRVJSKQorCSAgICBzaG93X3N0YXR1cyhjaCwgbGFzdF9tZW51KTsKKworCWNoID0gbWVudV9nZXRjKG1wQmFubmVyKTsKKworCS8qCisJICogUHJvdmlkZSBmb3IgbW92aW5nIHRoZSBtZW51IGFyb3VuZCBpbiB0aGUgc2NyZWVuIHVzaW5nIHNoaWZ0ZWQKKwkgKiBjdXJzb3Iga2V5cy4KKwkgKi8KKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBLRVlfU0Y6CisJICAgIG1vdmVfbWVudXMobGFzdF9tZW51LCAxLCAwKTsKKwkgICAgY29udGludWU7CisJY2FzZSBLRVlfU1I6CisJICAgIG1vdmVfbWVudXMobGFzdF9tZW51LCAtMSwgMCk7CisJICAgIGNvbnRpbnVlOworCWNhc2UgS0VZX1NMRUZUOgorCSAgICBtb3ZlX21lbnVzKGxhc3RfbWVudSwgMCwgLTEpOworCSAgICBjb250aW51ZTsKKwljYXNlIEtFWV9TUklHSFQ6CisJICAgIG1vdmVfbWVudXMobGFzdF9tZW51LCAwLCAxKTsKKwkgICAgY29udGludWU7CisJfQorCWNtZCA9IG1lbnVfdmlydHVhbGl6ZShjaCk7CisKKwlzd2l0Y2ggKGNtZCkgeworCSAgICAvKgorCSAgICAgKiBUaGUgYmFubmVyIG1lbnUgYWN0cyBzb2xlbHkgdG8gc2VsZWN0IG9uZSBvZiB0aGUgb3RoZXIgbWVudXMuCisJICAgICAqIE1vdmUgYmV0d2VlbiBpdHMgaXRlbXMsIHdyYXBwaW5nIGF0IHRoZSBsZWZ0L3JpZ2h0IGxpbWl0cy4KKwkgICAgICovCisJY2FzZSBSRVFfTEVGVF9JVEVNOgorCWNhc2UgUkVRX1JJR0hUX0lURU06CisJICAgIGNvZGUgPSBtZW51X2RyaXZlcihtcEJhbm5lciwgY21kKTsKKwkgICAgaWYgKGNvZGUgPT0gRV9SRVFVRVNUX0RFTklFRCkgeworCQlpZiAobWVudV9udW1iZXIoKSA+IDApCisJCSAgICBjb2RlID0gbWVudV9kcml2ZXIobXBCYW5uZXIsIFJFUV9GSVJTVF9JVEVNKTsKKwkJZWxzZQorCQkgICAgY29kZSA9IG1lbnVfZHJpdmVyKG1wQmFubmVyLCBSRVFfTEFTVF9JVEVNKTsKKwkgICAgfQorCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBzd2l0Y2ggKG1lbnVfbnVtYmVyKCkpIHsKKwkgICAgY2FzZSBlRmlsZToKKwkJY29kZSA9IHBlcmZvcm1fZmlsZV9tZW51KGNtZCk7CisJCWJyZWFrOworCSAgICBjYXNlIGVTZWxlY3Q6CisJCWNvZGUgPSBwZXJmb3JtX3NlbGVjdF9tZW51KGNtZCk7CisJCWJyZWFrOworI2lmZGVmIFRSQUNFCisJICAgIGNhc2UgZVRyYWNlOgorCQljb2RlID0gcGVyZm9ybV90cmFjZV9tZW51KGNtZCk7CisJCWJyZWFrOworI2VuZGlmCisJICAgIH0KKworCSAgICBpZiAoKGNvZGUgPT0gRV9SRVFVRVNUX0RFTklFRCkgJiYgKGNtZCA9PSBLRVlfTU9VU0UpKSB7CisJCWNvZGUgPSBtZW51X2RyaXZlcihtcEJhbm5lciwgY21kKTsKKwkgICAgfQorCisJICAgIGJyZWFrOworCX0KKworCWlmIChjb2RlID09IEVfT0spIHsKKwkgICAgdGhpc19tZW51ID0gY3VycmVudF9tZW51KCk7CisJICAgIGlmICh0aGlzX21lbnUgIT0gbGFzdF9tZW51KSB7CisJCW1vdmUoMSwgMCk7CisJCWNscnRvYm90KCk7CisJCWJveChtZW51X3dpbih0aGlzX21lbnUpLCAwLCAwKTsKKwkJcmVmcmVzaCgpOworCisJCS8qIGZvcmNlIHRoZSBjdXJyZW50IG1lbnUgdG8gYXBwZWFyICovCisJCW1lbnVfZGlzcGxheSh0aGlzX21lbnUpOworCisJCWxhc3RfbWVudSA9IHRoaXNfbWVudTsKKwkgICAgfQorCX0KKwl3cmVmcmVzaChtZW51X3dpbihsYXN0X21lbnUpKTsKKwlpZiAoY29kZSA9PSBFX1VOS05PV05fQ09NTUFORAorCSAgICB8fCBjb2RlID09IEVfTk9UX1BPU1RFRCkgeworCSAgICBJVEVNICppdGVtID0gY3VycmVudF9pdGVtKGxhc3RfbWVudSk7CisJICAgIE1FTlVfREFUQSAqdGQgPSAoTUVOVV9EQVRBICopIGl0ZW1fdXNlcnB0cihpdGVtKTsKKwkgICAgdGQtPmZ1bmMoKGludCkgdGQtPm1hc2spOworCX0KKwlpZiAoY29kZSA9PSBFX1JFUVVFU1RfREVOSUVEKQorCSAgICBiZWVwKCk7CisJY29udGludWU7CisgICAgfQorCisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgbW91c2VtYXNrKDAsIChtbWFza190ICopIDApOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCitkZXN0cm95X21lbnVzKHZvaWQpCit7CisgICAgbWVudV9kZXN0cm95KG1wRmlsZSk7CisgICAgbWVudV9kZXN0cm95KG1wU2VsZWN0KTsKKyNpZmRlZiBUUkFDRQorICAgIG1lbnVfZGVzdHJveShtcFRyYWNlKTsKKyNlbmRpZgorICAgIG1lbnVfZGVzdHJveShtcEJhbm5lcik7Cit9CisKKyNpZiBIQVZFX1JJUE9GRkxJTkUKK3N0YXRpYyBpbnQKK3JpcF9mb290ZXIoV0lORE9XICp3aW4sIGludCBjb2xzKQoreworICAgIHdia2dkKHdpbiwgQV9SRVZFUlNFKTsKKyAgICB3ZXJhc2Uod2luKTsKKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdwcmludHcod2luLCAiZm9vdGVyOiAlZCBjb2x1bW5zIiwgY29scyk7CisgICAgd25vdXRyZWZyZXNoKHdpbik7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0aWMgaW50CityaXBfaGVhZGVyKFdJTkRPVyAqd2luLCBpbnQgY29scykKK3sKKyAgICB3YmtnZCh3aW4sIEFfUkVWRVJTRSk7CisgICAgd2VyYXNlKHdpbik7CisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwgImhlYWRlcjogJWQgY29sdW1ucyIsIGNvbHMpOworICAgIHdub3V0cmVmcmVzaCh3aW4pOworICAgIHJldHVybiBPSzsKK30KKyNlbmRpZiAvKiBIQVZFX1JJUE9GRkxJTkUgKi8KKworc3RhdGljIHZvaWQKK2NhbGxfZmlsZXMoaW50IGNvZGUpCit7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSAwOgorCWRlc3Ryb3lfbWVudXMoKTsKKwllbmR3aW4oKTsKKwlwcmludGYoIkRPTkUhXG4iKTsKKwlFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRibFtdID0KKyAgICB7CisJIlVzYWdlOiBkZW1vX21lbnVzIFtvcHRpb25zXSBbbWVudS1maWxlXSIKKwksIiIKKwksIk9wdGlvbnM6IgorI2lmIEhBVkVfUklQT0ZGTElORQorCSwiICAtZiAgICAgICByaXAtb2ZmIGZvb3RlciBsaW5lIChjYW4gcmVwZWF0KSIKKwksIiAgLWggICAgICAgcmlwLW9mZiBoZWFkZXIgbGluZSAoY2FuIHJlcGVhdCkiCisjZW5kaWYKKyNpZmRlZiBUUkFDRQorCSwiICAtdCBtYXNrICBzcGVjaWZ5IGRlZmF1bHQgdHJhY2UtbGV2ZWwgKG1heSB0b2dnbGUgd2l0aCBeVCkiCisjZW5kaWYKKyAgICB9OworICAgIHNpemVfdCBuOworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGJsKTsgbisrKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHRibFtuXSk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgaW50IGM7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImE6ZGU6ZmhtcDpzOnQ6IikpICE9IC0xKSB7CisJc3dpdGNoIChjKSB7CisjaWYgSEFWRV9SSVBPRkZMSU5FCisJY2FzZSAnZic6CisJICAgIHJpcG9mZmxpbmUoLTEsIHJpcF9mb290ZXIpOworCSAgICBicmVhazsKKwljYXNlICdoJzoKKwkgICAgcmlwb2ZmbGluZSgxLCByaXBfaGVhZGVyKTsKKwkgICAgYnJlYWs7CisjZW5kaWYgLyogSEFWRV9SSVBPRkZMSU5FICovCisjaWZkZWYgVFJBQ0UKKwljYXNlICd0JzoKKwkgICAgdHJhY2UoKHVuc2lnbmVkKSBzdHJ0b3VsKG9wdGFyZywgMCwgMCkpOworCSAgICBicmVhazsKKyNlbmRpZgorCWRlZmF1bHQ6CisJICAgIHVzYWdlKCk7CisJfQorICAgIH0KKworICAgIGluaXRzY3IoKTsKKyAgICBub3JhdygpOworICAgIGNicmVhaygpOworICAgIG5vZWNobygpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXN0YXJ0X2NvbG9yKCk7CisJaW5pdF9wYWlyKDEsIENPTE9SX1JFRCwgQ09MT1JfQkxBQ0spOworCWluaXRfcGFpcigyLCBDT0xPUl9CTFVFLCBDT0xPUl9XSElURSk7CisgICAgfQorICAgIHN0YXR1cyA9IG5ld3dpbigzLCBDT0xTLCBMSU5FUyAtIDMsIDApOworICAgIGJ1aWxkX21lbnVzKGFyZ2MgPiAxID8gYXJndlsxXSA6IDApOworICAgIHBlcmZvcm1fbWVudXMoKTsKKyAgICBkZXN0cm95X21lbnVzKCk7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBjdXJzZXMgbWVudSBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fcGFuZWxzLmMgYi90ZXN0L2RlbW9fcGFuZWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQxYjViYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZGVtb19wYW5lbHMuYwpAQCAtMCwwICsxLDgxNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDEwLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGRlbW9fcGFuZWxzLmMsdiAxLjM4IDIwMTQvMDgvMDIgMTc6MjQ6MDcgdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgYSB2YXJpZXR5IG9mIGZ1bmN0aW9ucyBmcm9tIHRoZSBwYW5lbCBsaWJyYXJ5LgorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIFVTRV9MSUJQQU5FTAorCisjaW5jbHVkZSA8cGFuZWwuaD4KKworI2RlZmluZSBMQVNUX1BPUyAnQCcKKyNkZWZpbmUgVEVNUF9QT1MgJz4nCisKK3R5cGVkZWYgdm9pZCAoKkluaXRQYW5lbCkgKHZvaWQpOwordHlwZWRlZiB2b2lkICgqRmlsbFBhbmVsKSAoUEFORUwgKik7CisKK3N0YXRpYyBib29sIHVzZV9jb2xvcnMgPSBGQUxTRTsKK3N0YXRpYyBib29sIHVuYm94ZWQgPSBGQUxTRTsKK3N0YXRpYyBGSUxFICpsb2dfaW47CitzdGF0aWMgRklMRSAqbG9nX291dDsKKworc3RhdGljIHZvaWQKK2Nsb3NlX2lucHV0KHZvaWQpCit7CisgICAgaWYgKGxvZ19pbiAhPSAwKSB7CisJZmNsb3NlKGxvZ19pbik7CisJbG9nX2luID0gMDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitjbG9zZV9vdXRwdXQodm9pZCkKK3sKKyAgICBpZiAobG9nX291dCAhPSAwKSB7CisJZmNsb3NlKGxvZ19vdXQpOworCWxvZ19vdXQgPSAwOworICAgIH0KK30KKworc3RhdGljIFdJTkRPVyAqCitzdGF0dXNsaW5lKHZvaWQpCit7CisgICAgV0lORE9XICpyZXN1bHQgPSBzdGRzY3I7CisKKyAgICB3bW92ZShyZXN1bHQsIExJTkVTIC0gMSwgMCk7CisgICAgd2NscnRvZW9sKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3BmbHVzaCh2b2lkKQoreworICAgIHVwZGF0ZV9wYW5lbHMoKTsKKyAgICBkb3VwZGF0ZSgpOworfQorCitzdGF0aWMgdm9pZAorc2F5d2hhdChOQ1VSU0VTX0NPTlNUIGNoYXIgKnRleHQpCit7CisgICAgV0lORE9XICp3aW4gPSBzdGF0dXNsaW5lKCk7CisgICAgaWYgKHRleHQgIT0gMCAmJiAqdGV4dCAhPSAnXDAnKSB7CisJd2FkZHN0cih3aW4sIHRleHQpOworCXdhZGRzdHIod2luLCAiOyAiKTsKKyAgICB9CisgICAgd2FkZHN0cih3aW4sICJwcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlIik7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3Bvc2l0aW9uKE5DVVJTRVNfQ09OU1QgY2hhciAqdGV4dCwKKwkgICAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKmFsc28sCisJICAgICAgaW50IHdoaWNoLAorCSAgICAgIGludCB5cG9zLAorCSAgICAgIGludCB4cG9zKQoreworICAgIFdJTkRPVyAqd2luID0gc3RhdHVzbGluZSgpOworCisgICAgd3ByaW50dyh3aW4sICIlcyBmb3IgcGFuZWwgJWQgbm93ICVkLCVkJXMiLCB0ZXh0LCB3aGljaCwgeXBvcywgeHBvcywgYWxzbyk7CisgICAgd21vdmUoc3Rkc2NyLCB5cG9zLCB4cG9zKTsKK30KKworc3RhdGljIGludAorZ2V0X3Bvc2l0aW9uKE5DVVJTRVNfQ09OU1QgY2hhciAqdGV4dCwKKwkgICAgIE5DVVJTRVNfQ09OU1QgY2hhciAqYWxzbywKKwkgICAgIGludCB3aGljaCwKKwkgICAgIGludCAqeHBvcywKKwkgICAgIGludCAqeXBvcykKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBpbnQgeDEsIHkxOworICAgIGNoYXIgY21kOworCisgICAgZ2V0eXgoc3Rkc2NyLCB5MSwgeDEpOworICAgICh2b2lkKSBzdGF0dXNsaW5lKCk7CisKKyAgICBzaG93X3Bvc2l0aW9uKHRleHQsIGFsc28sIHdoaWNoLCB5MSwgeDEpOworCisgICAgaWYgKGxvZ19pbiAhPSAwKSB7CisJaWYgKGZzY2FuZihsb2dfaW4sICIlYyVkLCVkXG4iLCAmY21kLCAmeTEsICZ4MSkgPT0gMykgeworCSAgICBzd2l0Y2ggKGNtZCkgeworCSAgICBjYXNlIExBU1RfUE9TOgorCQlyZXN1bHQgPSAxOworCQkodm9pZCkgd2dldGNoKHN0ZHNjcik7CisJCWJyZWFrOworCSAgICBjYXNlIFRFTVBfUE9TOgorCQlyZXN1bHQgPSAwOworCQl3cmVmcmVzaChzdGRzY3IpOworCQluYXBtcygxMDApOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJcmVzdWx0ID0gLTE7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgcmVzdWx0ID0gLTE7CisJfQorICAgIH0gZWxzZSB7CisKKwlzd2l0Y2ggKHdnZXRjaChzdGRzY3IpKSB7CisJY2FzZSBRVUlUOgorCWNhc2UgRVNDQVBFOgorCWNhc2UgRVJSOgorCSAgICByZXN1bHQgPSAtMTsKKwkgICAgYnJlYWs7CisJY2FzZSAnICc6CisJICAgIHJlc3VsdCA9IDE7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1VQOgorCSAgICBpZiAoeTEgPiAwKSB7CisJCS0teTE7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIEtFWV9ET1dOOgorCSAgICBpZiAoeTEgPCBnZXRtYXh5KHN0ZHNjcikpIHsKKwkJKyt5MTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGlmICh4MSA+IDApIHsKKwkJLS14MTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1JJR0hUOgorCSAgICBpZiAoeDEgPCBnZXRtYXh4KHN0ZHNjcikpIHsKKwkJKyt4MTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgICB3bW92ZShzdGRzY3IsIHkxLCB4MSk7CisgICAgKnlwb3MgPSB5MTsKKyAgICAqeHBvcyA9IHgxOworCisgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisJaWYgKGxvZ19vdXQpCisJICAgIGZwcmludGYobG9nX291dCwgIiVjJWQsJWRcbiIsCisJCSAgICAoKHJlc3VsdCA+IDApCisJCSAgICAgPyBMQVNUX1BPUworCQkgICAgIDogVEVNUF9QT1MpLAorCQkgICAgeTEsIHgxKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFBBTkVMICoKK21rcGFuZWwoc2hvcnQgY29sb3IsIGludCByb3dzLCBpbnQgY29scywgaW50IHRseSwgaW50IHRseCkKK3sKKyAgICBXSU5ET1cgKndpbjsKKyAgICBQQU5FTCAqcGFuID0gMDsKKyAgICBjaGFyICp1c2VyZGF0YSA9IHR5cGVNYWxsb2MoY2hhciwgMyk7CisKKyAgICBpZiAoKHdpbiA9IG5ld3dpbihyb3dzLCBjb2xzLCB0bHksIHRseCkpICE9IDApIHsKKwlrZXlwYWQod2luLCBUUlVFKTsKKwlpZiAoKHBhbiA9IG5ld19wYW5lbCh3aW4pKSA9PSAwKSB7CisJICAgIGRlbHdpbih3aW4pOworCX0gZWxzZSBpZiAodXNlX2NvbG9ycykgeworCSAgICBzaG9ydCBmZyA9IChzaG9ydCkgKChjb2xvciA9PSBDT0xPUl9CTFVFKQorCQkJCT8gQ09MT1JfV0hJVEUKKwkJCQk6IENPTE9SX0JMQUNLKTsKKwkgICAgc2hvcnQgYmcgPSBjb2xvcjsKKworCSAgICBpbml0X3BhaXIoY29sb3IsIGZnLCBiZyk7CisJICAgIHdia2dkc2V0KHdpbiwgKGNodHlwZSkgKENPTE9SX1BBSVIoY29sb3IpIHwgJyAnKSk7CisJfSBlbHNlIGlmICghdW5ib3hlZCkgeworCSAgICB3YmtnZHNldCh3aW4sIEFfQk9MRCB8ICcgJyk7CisJfQorICAgIH0KKyAgICBzcHJpbnRmKHVzZXJkYXRhLCAicCVkIiwgY29sb3IgJSA4KTsKKyAgICBzZXRfcGFuZWxfdXNlcnB0cihwYW4sIChOQ1VSU0VTX0NPTlNUIHZvaWQgKikgdXNlcmRhdGEpOworICAgIHJldHVybiBwYW47Cit9CisKK3N0YXRpYyB2b2lkCitteV9yZW1vdmVfcGFuZWwoUEFORUwgKiogcGFucywgaW50IHdoaWNoKQoreworICAgIGlmIChwYW5zW3doaWNoXSAhPSAwKSB7CisJUEFORUwgKnBhbiA9IHBhbnNbd2hpY2hdOworCVdJTkRPVyAqd2luID0gcGFuZWxfd2luZG93KHBhbik7CisJY2hhciAqdXNlciA9IChjaGFyICopIHBhbmVsX3VzZXJwdHIocGFuKTsKKworCWZyZWUodXNlcik7CisJZGVsX3BhbmVsKHBhbik7CisJZGVsd2luKHdpbik7CisKKwlwYW5zW3doaWNoXSA9IDA7CisgICAgfQorfQorCisjdW5kZWYgTUlOCisjZGVmaW5lIE1JTihhLGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCisjZGVmaW5lIEFCUyhhKSAgICgoYSkgPCAwID8gLShhKSA6IChhKSkKKworc3RhdGljIHZvaWQKK215X2NyZWF0ZV9wYW5lbChQQU5FTCAqKiBwYW5zLCBpbnQgd2hpY2gsIEZpbGxQYW5lbCBteUZpbGwpCit7CisgICAgUEFORUwgKnBhbiA9IDA7CisgICAgaW50IGNvZGU7CisgICAgc2hvcnQgcGFpciA9IChzaG9ydCkgd2hpY2g7CisgICAgc2hvcnQgZmcgPSAoc2hvcnQpICgocGFpciA9PSBDT0xPUl9CTFVFKSA/IENPTE9SX1dISVRFIDogQ09MT1JfQkxBQ0spOworICAgIHNob3J0IGJnID0gcGFpcjsKKyAgICBpbnQgeDAsIHkwLCB4MSwgeTE7CisKKyAgICBpbml0X3BhaXIocGFpciwgZmcsIGJnKTsKKworICAgIC8qIHJlbW92ZSB0aGUgb2xkIHBhbmVsLCBpZiBhbnkgKi8KKyAgICBteV9yZW1vdmVfcGFuZWwocGFucywgd2hpY2gpOworCisgICAgLyogZ2V0IHRoZSBwb3NpdGlvbiBvZiBvbmUgY29ybmVyICovCisgICAgd21vdmUoc3Rkc2NyLCBnZXRtYXh5KHN0ZHNjcikgLyAyLCBnZXRtYXh4KHN0ZHNjcikgLyAyKTsKKyAgICBnZXR5eChzdGRzY3IsIHkwLCB4MCk7CisgICAgd2hpbGUgKChjb2RlID0gZ2V0X3Bvc2l0aW9uKCJGaXJzdCBjb3JuZXIiLCAiIiwgd2hpY2gsICZ4MCwgJnkwKSkgPT0gMCkgeworCTsKKyAgICB9CisKKyAgICBpZiAoY29kZSA+IDApIHsKKwljaGFyIGFsc29bODBdOworCXNwcmludGYoYWxzbywgIiAoZmlyc3QgJWQsJWQpIiwgeTAsIHgwKTsKKwkvKiBnZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBvcHBvc2l0ZSBjb3JuZXIgKi8KKwl3aGlsZSAoKGNvZGUgPSBnZXRfcG9zaXRpb24oIk9wcG9zaXRlIGNvcm5lciIsCisJCQkJICAgIGFsc28sIHdoaWNoLCAmeDEsICZ5MSkpID09IDApIHsKKwkgICAgOworCX0KKworCWlmIChjb2RlID4gMCkgeworCSAgICBpbnQgdGx5ID0gTUlOKHkwLCB5MSk7CisJICAgIGludCB0bHggPSBNSU4oeDAsIHgxKTsKKwkgICAgcGFuID0gbWtwYW5lbChwYWlyLCBBQlMoeTEgLSB5MCkgKyAxLCBBQlMoeDEgLSB4MCkgKyAxLCB0bHksIHRseCk7CisJICAgIC8qIGZpbmlzaCAqLworCSAgICBteUZpbGwocGFuKTsKKwkgICAgcGFuc1t3aGljaF0gPSBwYW47CisJICAgIHBmbHVzaCgpOworCSAgICB3bW92ZShzdGRzY3IsIHkxLCB4MSk7CisJfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK215X21vdmVfcGFuZWwoUEFORUwgKiogcGFucywgaW50IHdoaWNoLCBib29sIGNvbnRpbnVvdXMpCit7CisgICAgaWYgKHBhbnNbd2hpY2hdICE9IDApIHsKKwlpbnQgY29kZTsKKwlpbnQgeTAsIHgwOworCWludCB5MSwgeDE7CisJV0lORE9XICp3aW4gPSBwYW5lbF93aW5kb3cocGFuc1t3aGljaF0pOworCWNoYXIgYWxzb1s4MF07CisKKwlnZXRiZWd5eCh3aW4sIHkwLCB4MCk7CisJc3ByaW50ZihhbHNvLCAiIChzdGFydCAlZCwlZCkiLCB5MCwgeDApOworCXdtb3ZlKHN0ZHNjciwgeTAsIHgwKTsKKwl3aGlsZSAoKGNvZGUgPSBnZXRfcG9zaXRpb24oIk1vdmUgcGFuZWwiLCBhbHNvLCB3aGljaCwgJngxLCAmeTEpKSA9PSAwKSB7CisJICAgIGlmIChjb250aW51b3VzKSB7CisJCW1vdmVfcGFuZWwocGFuc1t3aGljaF0sIHkxLCB4MSk7CisJCXBmbHVzaCgpOworCSAgICB9CisJfQorCWlmIChjb2RlID4gMCkgeworCSAgICBtb3ZlX3BhbmVsKHBhbnNbd2hpY2hdLCB5MSwgeDEpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitteV9yZXNpemVfcGFuZWwoUEFORUwgKiogcGFucywgaW50IHdoaWNoLCBGaWxsUGFuZWwgbXlGaWxsKQoreworICAgIGlmIChwYW5zW3doaWNoXSAhPSAwKSB7CisJaW50IGNvZGU7CisJaW50IHkwLCB4MDsKKwlpbnQgeTEsIHgxOworCVdJTkRPVyAqd2luID0gcGFuZWxfd2luZG93KHBhbnNbd2hpY2hdKTsKKwljaGFyIGFsc29bODBdOworCisJZ2V0YmVneXgod2luLCB5MCwgeDApOworCXNwcmludGYoYWxzbywgIiAoc3RhcnQgJWQsJWQpIiwgeTAsIHgwKTsKKwl3bW92ZShzdGRzY3IsIHkwLCB4MCk7CisJd2hpbGUgKChjb2RlID0gZ2V0X3Bvc2l0aW9uKCJSZXNpemUgcGFuZWwiLAorCQkJCSAgICBhbHNvLCB3aGljaCwgJngxLCAmeTEpKSA9PSAwKSB7CisJICAgIDsKKwl9CisJaWYgKGNvZGUgPiAwKSB7CisJICAgIFdJTkRPVyAqbmV4dCA9IG5ld3dpbihBQlMoeTEgLSB5MCkgKyAxLAorCQkJCSAgQUJTKHgxIC0geDApICsgMSwKKwkJCQkgIE1JTih5MCwgeTEpLAorCQkJCSAgTUlOKHgwLCB4MSkpOworCSAgICBpZiAobmV4dCAhPSAwKSB7CisJCWtleXBhZChuZXh0LCBUUlVFKTsKKwkJaWYgKHVzZV9jb2xvcnMpIHsKKwkJICAgIHdia2dkc2V0KG5leHQsIChjaHR5cGUpIChDT0xPUl9QQUlSKHdoaWNoKSB8ICcgJykpOworCQl9IGVsc2UgaWYgKCF1bmJveGVkKSB7CisJCSAgICB3YmtnZHNldChuZXh0LCBBX0JPTEQgfCAnICcpOworCQl9CisJCXJlcGxhY2VfcGFuZWwocGFuc1t3aGljaF0sIG5leHQpOworCQlteUZpbGwocGFuc1t3aGljaF0pOworCQlkZWx3aW4od2luKTsKKwkgICAgfQorCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X3BhbmVsKHZvaWQpCit7CisgICAgcmVnaXN0ZXIgaW50IHksIHg7CisKKyAgICBmb3IgKHkgPSAwOyB5IDwgTElORVMgLSAxOyB5KyspIHsKKwlmb3IgKHggPSAwOyB4IDwgQ09MUzsgeCsrKQorCSAgICB3cHJpbnR3KHN0ZHNjciwgIiVkIiwgKHkgKyB4KSAlIDEwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitmaWxsX3BhbmVsKFBBTkVMICogcGFuKQoreworICAgIFdJTkRPVyAqd2luID0gcGFuZWxfd2luZG93KHBhbik7CisgICAgY29uc3QgY2hhciAqdXNlcnB0ciA9IChjb25zdCBjaGFyICopIHBhbmVsX3VzZXJwdHIocGFuKTsKKyAgICBpbnQgbnVtID0gKHVzZXJwdHIgJiYgKnVzZXJwdHIpID8gdXNlcnB0clsxXSA6ICc/JzsKKyAgICBpbnQgeSwgeDsKKworICAgIHdtb3ZlKHdpbiwgMSwgMSk7CisgICAgd3ByaW50dyh3aW4sICItcGFuJWMtIiwgbnVtKTsKKyAgICB3Y2xydG9lb2wod2luKTsKKyAgICBib3god2luLCAwLCAwKTsKKyAgICBmb3IgKHkgPSAyOyB5IDwgZ2V0bWF4eSh3aW4pIC0gMTsgeSsrKSB7CisJZm9yICh4ID0gMTsgeCA8IGdldG1heHgod2luKSAtIDE7IHgrKykgeworCSAgICB3bW92ZSh3aW4sIHksIHgpOworCSAgICB3YWRkY2god2luLCBVQ2hhcihudW0pKTsKKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZmlsbF91bmJveGVkKFBBTkVMICogcGFuKQoreworICAgIFdJTkRPVyAqd2luID0gcGFuZWxfd2luZG93KHBhbik7CisgICAgY29uc3QgY2hhciAqdXNlcnB0ciA9IChjb25zdCBjaGFyICopIHBhbmVsX3VzZXJwdHIocGFuKTsKKyAgICBpbnQgbnVtID0gKHVzZXJwdHIgJiYgKnVzZXJwdHIpID8gdXNlcnB0clsxXSA6ICc/JzsKKyAgICBpbnQgeSwgeDsKKworICAgIGZvciAoeSA9IDA7IHkgPCBnZXRtYXh5KHdpbik7IHkrKykgeworCWZvciAoeCA9IDA7IHggPCBnZXRtYXh4KHdpbik7IHgrKykgeworCSAgICB3bW92ZSh3aW4sIHksIHgpOworCSAgICB3YWRkY2god2luLCBVQ2hhcihudW0pKTsKKwl9CisgICAgfQorfQorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKK3N0YXRpYyB2b2lkCittYWtlX2Z1bGx3aWR0aF9kaWdpdChjY2hhcl90ICp0YXJnZXQsIGludCBkaWdpdCkKK3sKKyAgICB3Y2hhcl90IHNvdXJjZVsyXTsKKworICAgIHNvdXJjZVswXSA9ICh3Y2hhcl90KSAoZGlnaXQgKyAweGZmMTApOworICAgIHNvdXJjZVsxXSA9IDA7CisgICAgc2V0Y2NoYXIodGFyZ2V0LCBzb3VyY2UsIEFfTk9STUFMLCAwLCAwKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfd2lkZV9wYW5lbCh2b2lkKQoreworICAgIGludCBkaWdpdDsKKyAgICBjY2hhcl90IHRlbXBbMTBdOworCisgICAgZm9yIChkaWdpdCA9IDA7IGRpZ2l0IDwgMTA7ICsrZGlnaXQpCisJbWFrZV9mdWxsd2lkdGhfZGlnaXQoJnRlbXBbZGlnaXRdLCBkaWdpdCk7CisKKyAgICBkbyB7CisJaW50IHksIHg7CisJZ2V0eXgoc3Rkc2NyLCB5LCB4KTsKKwlkaWdpdCA9ICh5ICsgeCAvIDIpICUgMTA7CisgICAgfSB3aGlsZSAoYWRkX3djaCgmdGVtcFtkaWdpdF0pICE9IEVSUik7Cit9CisKK3N0YXRpYyB2b2lkCitmaWxsX3dpZGVfcGFuZWwoUEFORUwgKiBwYW4pCit7CisgICAgV0lORE9XICp3aW4gPSBwYW5lbF93aW5kb3cocGFuKTsKKyAgICBpbnQgbnVtID0gKChjb25zdCBjaGFyICopIHBhbmVsX3VzZXJwdHIocGFuKSlbMV07CisgICAgaW50IHksIHg7CisKKyAgICB3bW92ZSh3aW4sIDEsIDEpOworICAgIHdwcmludHcod2luLCAiLXBhbiVjLSIsIG51bSk7CisgICAgd2NscnRvZW9sKHdpbik7CisgICAgYm94KHdpbiwgMCwgMCk7CisgICAgZm9yICh5ID0gMjsgeSA8IGdldG1heHkod2luKSAtIDE7IHkrKykgeworCWZvciAoeCA9IDE7IHggPCBnZXRtYXh4KHdpbikgLSAxOyB4KyspIHsKKwkgICAgd21vdmUod2luLCB5LCB4KTsKKwkgICAgd2FkZGNoKHdpbiwgVUNoYXIobnVtKSk7CisJfQorICAgIH0KK30KKyNlbmRpZgorCisjZGVmaW5lIE1BWF9QQU5FTFMgNQorCitzdGF0aWMgaW50Cit3aGljaF9wYW5lbChQQU5FTCAqIHB4W01BWF9QQU5FTFMgKyAxXSwgUEFORUwgKiBwYW4pCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgaW50IGo7CisKKyAgICBmb3IgKGogPSAxOyBqIDw9IE1BWF9QQU5FTFM7ICsraikgeworCWlmIChweFtqXSA9PSBwYW4pIHsKKwkgICAgcmVzdWx0ID0gajsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorc2hvd19wYW5lbHMoUEFORUwgKiBweFtNQVhfUEFORUxTICsgMV0pCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmhlbHBbXSA9CisgICAgeworCSIiLAorCSJDb21tYW5kcyBhcmUgbGV0dGVyL2RpZ2l0IHBhaXJzLiAgRGlnaXRzIGFyZSB0aGUgcGFuZWwgbnVtYmVyLiIsCisJIiIsCisJIiAgYiAtIHB1dCB0aGUgcGFuZWwgb24gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2siLAorCSIgIGMgLSBjcmVhdGUgdGhlIHBhbmVsIiwKKwkiICBkIC0gZGVsZXRlIHRoZSBwYW5lbCIsCisJIiAgaCAtIGhpZGUgdGhlIHBhbmVsIiwKKwkiICBtIC0gbW92ZSB0aGUgcGFuZWwgKE0gZm9yIGNvbnRpbnVvdXMgbW92ZSkiLAorCSIgIHIgLSByZXNpemUgdGhlIHBhbmVsIiwKKwkiICBzIC0gc2hvdyB0aGUgcGFuZWwiLAorCSIgIGIgLSBwdXQgdGhlIHBhbmVsIG9uIHRoZSB0b3Agb2YgdGhlIHN0YWNrIgorICAgIH07CisKKyAgICBzdHJ1Y3QgeworCWJvb2wgdmFsaWQ7CisJYm9vbCBoaWRkZW47CisJUEFORUwgKmFib3ZlOworCVBBTkVMICpiZWxvdzsKKyAgICB9IHRhYmxlW01BWF9QQU5FTFMgKyAxXTsKKworICAgIFdJTkRPVyAqd2luOworICAgIFBBTkVMICpwYW47CisgICAgaW50IGo7CisKKyAgICBtZW1zZXQodGFibGUsIDAsIHNpemVvZih0YWJsZSkpOworICAgIGZvciAoaiA9IDE7IGogPD0gTUFYX1BBTkVMUzsgKytqKSB7CisJdGFibGVbal0udmFsaWQgPSAocHhbal0gIT0gMCk7CisJaWYgKHRhYmxlW2pdLnZhbGlkKSB7CisJICAgIHRhYmxlW2pdLmhpZGRlbiA9IHBhbmVsX2hpZGRlbihweFtqXSk7CisJICAgIHRhYmxlW2pdLmFib3ZlID0gcGFuZWxfYWJvdmUocHhbal0pOworCSAgICB0YWJsZVtqXS5iZWxvdyA9IHBhbmVsX2JlbG93KHB4W2pdKTsKKwl9CisgICAgfQorCisgICAgaWYgKCh3aW4gPSBuZXd3aW4oTElORVMgLSAxLCBDT0xTLCAwLCAwKSkgIT0gMCkgeworCWtleXBhZCh3aW4sIFRSVUUpOworCWlmICgocGFuID0gbmV3X3BhbmVsKHdpbikpICE9IDApIHsKKwkgICAgd2VyYXNlKHdpbik7CisJICAgIE12V1ByaW50dyh3aW4sIDAsIDAsICJQYW5lbHM6XG4iKTsKKwkgICAgZm9yIChqID0gMTsgaiA8PSBNQVhfUEFORUxTOyArK2opIHsKKwkJaWYgKHRhYmxlW2pdLnZhbGlkKSB7CisJCSAgICB3cHJpbnR3KHdpbiwgIiAlZDoiLCBqKTsKKwkJICAgIGlmICh0YWJsZVtqXS5oaWRkZW4pIHsKKwkJCXdhZGRzdHIod2luLCAiIGhpZGRlbiIpOworCQkgICAgfSBlbHNlIHsKKwkJCWlmICh0YWJsZVtqXS5hYm92ZSkgeworCQkJICAgIHdwcmludHcod2luLCAiIGFib3ZlICVkIiwKKwkJCQkgICAgd2hpY2hfcGFuZWwocHgsIHRhYmxlW2pdLmFib3ZlKSk7CisJCQl9CisJCQlpZiAodGFibGVbal0uYmVsb3cpIHsKKwkJCSAgICB3cHJpbnR3KHdpbiwgIiVzIGJlbG93ICVkIiwKKwkJCQkgICAgdGFibGVbal0uYWJvdmUgPyAiLCIgOiAiIiwKKwkJCQkgICAgd2hpY2hfcGFuZWwocHgsIHRhYmxlW2pdLmJlbG93KSk7CisJCQl9CisJCSAgICB9CisJCSAgICB3YWRkY2god2luLCAnXG4nKTsKKwkJfQorCSAgICB9CisJICAgIGZvciAoaiA9IDA7IGogPCAoaW50KSBTSVpFT0YoaGVscCk7ICsraikgeworCQlpZiAod3ByaW50dyh3aW4sICIlc1xuIiwgaGVscFtqXSkgPT0gRVJSKQorCQkgICAgYnJlYWs7CisJICAgIH0KKwkgICAgd2dldGNoKHdpbik7CisJICAgIGRlbF9wYW5lbChwYW4pOworCSAgICBwZmx1c2goKTsKKwl9CisJZGVsd2luKHdpbik7CisgICAgfQorfQorCisjZGVmaW5lIHdyYXBwZXIoZnVuYykgXAorc3RhdGljIGludCBteV8jI2Z1bmMoUEFORUwgKnBhbikgXAoreyBcCisgICAgaW50IGNvZGUgPSBFUlI7IFwKKyAgICBpZiAocGFuICE9IDApIHsgXAorCWNvZGUgPSBmdW5jKHBhbik7IFwKKyAgICB9IFwKKyAgICByZXR1cm4gY29kZTsgXAorfQorLyogKklOREVOVC1PRkYqICovCit3cmFwcGVyKGJvdHRvbV9wYW5lbCkKK3dyYXBwZXIoaGlkZV9wYW5lbCkKK3dyYXBwZXIoc2hvd19wYW5lbCkKK3dyYXBwZXIodG9wX3BhbmVsKQorLyogKklOREVOVC1PTiogKi8KKworc3RhdGljIHZvaWQKK2RvX3BhbmVsKFBBTkVMICogcHhbTUFYX1BBTkVMUyArIDFdLAorCSBOQ1VSU0VTX0NPTlNUIGNoYXIgKmNtZCwKKwkgRmlsbFBhbmVsIG15RmlsbCkKK3sKKyAgICBpbnQgd2hpY2ggPSBjbWRbMV0gLSAnMCc7CisKKyAgICBpZiAod2hpY2ggPCAxIHx8IHdoaWNoID4gTUFYX1BBTkVMUykgeworCWJlZXAoKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgaWYgKGxvZ19pbiAhPSAwKSB7CisJcGZsdXNoKCk7CisgICAgfQorCisgICAgc2F5d2hhdChjbWQpOworICAgIHN3aXRjaCAoKmNtZCkgeworICAgIGNhc2UgJ2InOgorCW15X2JvdHRvbV9wYW5lbChweFt3aGljaF0pOworCWJyZWFrOworICAgIGNhc2UgJ2MnOgorCW15X2NyZWF0ZV9wYW5lbChweCwgd2hpY2gsIG15RmlsbCk7CisJYnJlYWs7CisgICAgY2FzZSAnZCc6CisJbXlfcmVtb3ZlX3BhbmVsKHB4LCB3aGljaCk7CisJYnJlYWs7CisgICAgY2FzZSAnaCc6CisJbXlfaGlkZV9wYW5lbChweFt3aGljaF0pOworCWJyZWFrOworICAgIGNhc2UgJ20nOgorCW15X21vdmVfcGFuZWwocHgsIHdoaWNoLCBGQUxTRSk7CisJYnJlYWs7CisgICAgY2FzZSAnTSc6CisJbXlfbW92ZV9wYW5lbChweCwgd2hpY2gsIFRSVUUpOworCWJyZWFrOworICAgIGNhc2UgJ3InOgorCW15X3Jlc2l6ZV9wYW5lbChweCwgd2hpY2gsIG15RmlsbCk7CisJYnJlYWs7CisgICAgY2FzZSAncyc6CisJbXlfc2hvd19wYW5lbChweFt3aGljaF0pOworCWJyZWFrOworICAgIGNhc2UgJ3QnOgorCW15X3RvcF9wYW5lbChweFt3aGljaF0pOworCWJyZWFrOworICAgIH0KK30KKworc3RhdGljIGJvb2wKK29rX2xldHRlcihpbnQgY2gpCit7CisgICAgcmV0dXJuIGlzYWxwaGEoVUNoYXIoY2gpKSAmJiBzdHJjaHIoImJjZGhtTXJzdCIsIGNoKSAhPSAwOworfQorCitzdGF0aWMgYm9vbAorb2tfZGlnaXQoaW50IGNoKQoreworICAgIHJldHVybiBpc2RpZ2l0KFVDaGFyKGNoKSkgJiYgKGNoID49ICcxJykgJiYgKGNoIC0gJzAnIDw9IE1BWF9QQU5FTFMpOworfQorCisvKgorICogQSBjb21tYW5kIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIGxldHRlci9kaWdpdCBwYWlycyBzZXBhcmF0ZWQgYnkgYSBzcGFjZS4KKyAqIERpZ2l0cyBhcmUgbGltaXRlZCB0byAxLi5NQVhfUEFORUxTLgorICoKKyAqIEVuZCB0aGUgY29tbWFuZCB3aXRoIGEgbmV3bGluZS4gIFJlamVjdCBvdGhlciBjaGFyYWN0ZXJzLgorICovCitzdGF0aWMgYm9vbAorZ2V0X2NvbW1hbmQoUEFORUwgKiBweFtNQVhfUEFORUxTICsgMV0sIGNoYXIgKmJ1ZmZlciwgaW50IGxpbWl0KQoreworICAgIGludCBsZW5ndGggPSAwOworICAgIGludCB5MCwgeDA7CisgICAgaW50IGMwLCBjaDsKKyAgICBXSU5ET1cgKndpbjsKKworICAgIGdldHl4KHN0ZHNjciwgeTAsIHgwKTsKKyAgICB3aW4gPSBzdGF0dXNsaW5lKCk7CisgICAgd2FkZHN0cih3aW4sICJDb21tYW5kOiIpOworICAgIGJ1ZmZlcltsZW5ndGggPSAwXSA9ICdcMCc7CisKKyAgICBpZiAobG9nX2luICE9IDApIHsKKwlpZiAoZmdldHMoYnVmZmVyLCBsaW1pdCAtIDMsIGxvZ19pbikgIT0gMCkgeworCSAgICBsZW5ndGggPSAoaW50KSBzdHJsZW4oYnVmZmVyKTsKKwkgICAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgaXNzcGFjZShVQ2hhcihidWZmZXJbbGVuZ3RoIC0gMV0pKSkKKwkJYnVmZmVyWy0tbGVuZ3RoXSA9ICdcMCc7CisJICAgIHdhZGRzdHIod2luLCBidWZmZXIpOworCX0gZWxzZSB7CisJICAgIGNsb3NlX2lucHV0KCk7CisJfQorCSh2b2lkKSB3Z2V0Y2god2luKTsKKyAgICB9IGVsc2UgeworCWMwID0gMDsKKwlmb3IgKDs7KSB7CisJICAgIGNoID0gd2dldGNoKHdpbik7CisJICAgIGlmIChjaCA9PSBFUlIgfHwgY2ggPT0gUVVJVCB8fCBjaCA9PSBFU0NBUEUpIHsKKwkJYnVmZmVyWzBdID0gJ1wwJzsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gQ1RSTCgnTCcpKSB7CisJCXdyZWZyZXNoKGN1cnNjcik7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSBLRVlfRU5URVIpIHsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gJz8nKSB7CisJCXNob3dfcGFuZWxzKHB4KTsKKwkgICAgfSBlbHNlIGlmIChsZW5ndGggKyAzIDwgbGltaXQpIHsKKwkJaWYgKGNoID49IEtFWV9NSU4pIHsKKwkJICAgIGJlZXAoKTsKKwkJfSBlbHNlIGlmIChva19sZXR0ZXIoVUNoYXIoY2gpKSkgeworCQkgICAgaWYgKGlzYWxwaGEoVUNoYXIoYzApKSkgeworCQkJYmVlcCgpOworCQkgICAgfSBlbHNlIGlmIChpc2RpZ2l0KFVDaGFyKGMwKSkpIHsKKwkJCXdwcmludHcod2luLCAiICVjIiwgY2gpOworCQkJYnVmZmVyW2xlbmd0aCsrXSA9ICcgJzsKKwkJCWJ1ZmZlcltsZW5ndGgrK10gPSAoY2hhcikgKGMwID0gY2gpOworCQkgICAgfSBlbHNlIHsKKwkJCXdwcmludHcod2luLCAiJWMiLCBjaCk7CisJCQlidWZmZXJbbGVuZ3RoKytdID0gKGNoYXIpIChjMCA9IGNoKTsKKwkJICAgIH0KKwkJfSBlbHNlIGlmIChva19kaWdpdChjaCkpIHsKKwkJICAgIGlmIChpc2FscGhhKFVDaGFyKGMwKSkpIHsKKwkJCXdwcmludHcod2luLCAiJWMiLCBjaCk7CisJCQlidWZmZXJbbGVuZ3RoKytdID0gKGNoYXIpIChjMCA9IGNoKTsKKwkJICAgIH0gZWxzZSB7CisJCQliZWVwKCk7CisJCSAgICB9CisJCX0gZWxzZSBpZiAoY2ggPT0gJyAnKSB7CisJCSAgICBpZiAoaXNkaWdpdChVQ2hhcihjMCkpKSB7CisJCQl3cHJpbnR3KHdpbiwgIiVjIiwgY2gpOworCQkJYnVmZmVyW2xlbmd0aCsrXSA9IChjaGFyKSAoYzAgPSBjaCk7CisJCSAgICB9IGVsc2UgeworCQkJYmVlcCgpOworCQkgICAgfQorCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQl9CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICB3bW92ZShzdGRzY3IsIHkwLCB4MCk7CisKKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgaWYgKGxvZ19vdXQgJiYgbGVuZ3RoKSB7CisJZnByaW50Zihsb2dfb3V0LCAiJXNcbiIsIGJ1ZmZlcik7CisgICAgfQorICAgIHJldHVybiAobGVuZ3RoICE9IDApOworfQorCitzdGF0aWMgdm9pZAorZGVtb19wYW5lbHMoSW5pdFBhbmVsIG15SW5pdCwgRmlsbFBhbmVsIG15RmlsbCkKK3sKKyAgICBpbnQgaXRtcDsKKyAgICBQQU5FTCAqcHhbTUFYX1BBTkVMUyArIDFdOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWl07CisKKyAgICBzY3JvbGxvayhzdGRzY3IsIEZBTFNFKTsJLyogd2UgZG9uJ3Qgd2FudCBzdGRzY3IgdG8gc2Nyb2xsISAqLworICAgIHJlZnJlc2goKTsKKworICAgIG15SW5pdCgpOworICAgIG1lbXNldChweCwgMCwgc2l6ZW9mKHB4KSk7CisKKyAgICB3aGlsZSAoZ2V0X2NvbW1hbmQocHgsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKSB7CisJaW50IGxpbWl0ID0gKGludCkgc3RybGVuKGJ1ZmZlcik7CisJZm9yIChpdG1wID0gMDsgaXRtcCA8IGxpbWl0OyBpdG1wICs9IDMpIHsKKwkgICAgZG9fcGFuZWwocHgsIGJ1ZmZlciArIGl0bXAsIG15RmlsbCk7CisJfQorCXBmbHVzaCgpOworICAgIH0KKyNpZiBOT19MRUFLUworICAgIGZvciAoaXRtcCA9IDE7IGl0bXAgPD0gTUFYX1BBTkVMUzsgKytpdG1wKSB7CisJbXlfcmVtb3ZlX3BhbmVsKHB4LCBpdG1wKTsKKyAgICB9CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRibFtdID0KKyAgICB7CisJIlVzYWdlOiBkZW1vX3BhbmVscyBbb3B0aW9uc10iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLWkgZmlsZSAgcmVhZCBjb21tYW5kcyBmcm9tIGZpbGUiCisJLCIgIC1vIGZpbGUgIHJlY29yZCBjb21tYW5kcyBpbiBmaWxlIgorCSwiICAtbSAgICAgICBkbyBub3QgdXNlIGNvbG9ycyIKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCSwiICAtdyAgICAgICB1c2Ugd2lkZS1jaGFyYWN0ZXJzIGluIHBhbmVscyBhbmQgYmFja2dyb3VuZCIKKyNlbmRpZgorCSwiICAteCAgICAgICBkbyBub3QgZW5jbG9zZSBwYW5lbHMgaW4gYm94ZXMiCisgICAgfTsKKyAgICBzaXplX3QgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRibCk7IG4rKykKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCBjOworICAgIGJvb2wgbW9ub2Nocm9tZSA9IEZBTFNFOworICAgIEluaXRQYW5lbCBteUluaXQgPSBpbml0X3BhbmVsOworICAgIEZpbGxQYW5lbCBteUZpbGwgPSBmaWxsX3BhbmVsOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJpOm86bXd4IikpICE9IC0xKSB7CisJc3dpdGNoIChjKSB7CisJY2FzZSAnaSc6CisJICAgIGxvZ19pbiA9IGZvcGVuKG9wdGFyZywgInIiKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbyc6CisJICAgIGxvZ19vdXQgPSBmb3BlbihvcHRhcmcsICJ3Iik7CisJICAgIGJyZWFrOworCWNhc2UgJ20nOgorCSAgICBtb25vY2hyb21lID0gVFJVRTsKKwkgICAgYnJlYWs7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwljYXNlICd3JzoKKwkgICAgbXlJbml0ID0gaW5pdF93aWRlX3BhbmVsOworCSAgICBteUZpbGwgPSBmaWxsX3dpZGVfcGFuZWw7CisJICAgIGJyZWFrOworI2VuZGlmCisJY2FzZSAneCc6CisJICAgIHVuYm94ZWQgPSBUUlVFOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisgICAgaWYgKHVuYm94ZWQpCisJbXlGaWxsID0gZmlsbF91bmJveGVkOworCisgICAgaW5pdHNjcigpOworICAgIGNicmVhaygpOworICAgIG5vZWNobygpOworICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOworCisgICAgdXNlX2NvbG9ycyA9IG1vbm9jaHJvbWUgPyBGQUxTRSA6IGhhc19jb2xvcnMoKTsKKyAgICBpZiAodXNlX2NvbG9ycykKKwlzdGFydF9jb2xvcigpOworCisgICAgZGVtb19wYW5lbHMobXlJbml0LCBteUZpbGwpOworICAgIGVuZHdpbigpOworCisgICAgY2xvc2VfaW5wdXQoKTsKKyAgICBjbG9zZV9vdXRwdXQoKTsKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIGN1cnNlcyBwYW5lbCBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RlbW9fdGVybWNhcC5jIGIvdGVzdC9kZW1vX3Rlcm1jYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWMyZDEzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9kZW1vX3Rlcm1jYXAuYwpAQCAtMCwwICsxLDg4NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQorICoKKyAqICRJZDogZGVtb190ZXJtY2FwLmMsdiAxLjQ4IDIwMTUvMDgvMDggMjA6MjU6MzkgdG9tIEV4cCAkCisgKgorICogQSBzaW1wbGUgZGVtbyBvZiB0aGUgdGVybWNhcCBpbnRlcmZhY2UuCisgKi8KKyNkZWZpbmUgVVNFX1RJTkZPCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2lmIE5DVVJTRVNfWE5BTUVTCisjaWYgSEFWRV9URVJNX0VOVFJZX0gKKyNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CisjZWxzZQorI3VuZGVmIE5DVVJTRVNfWE5BTUVTCisjZGVmaW5lIE5DVVJTRVNfWE5BTUVTIDAKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyNpbmNsdWRlIDx0ZXJtY2FwLmg+CisjZW5kaWYKKworc3RhdGljIHZvaWQKK2ZhaWxlZChjb25zdCBjaGFyICptc2cpCit7CisgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCisjaWYgSEFWRV9UR0VURU5UCisKKyNpZiBkZWZpbmVkKEhBVkVfQ1VSU0VTX0RBVEFfQk9PTE5BTUVTKSB8fCBkZWZpbmVkKERFQ0xfQ1VSU0VTX0RBVEFfQk9PTE5BTUVTKQorI2RlZmluZSBVU0VfQ09ERV9MSVNUUyAxCisjZWxzZQorI2RlZmluZSBVU0VfQ09ERV9MSVNUUyAwCisjZW5kaWYKKworI2RlZmluZSBGQ09MUyA4CisjZGVmaW5lIEZOQU1FKHR5cGUpICIlcyAlLSpzID0gIiwgI3R5cGUsIEZDT0xTCisKK3N0YXRpYyBib29sIGJfb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCBuX29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgc19vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHFfb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCB4X29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgeV9vcHQgPSBGQUxTRTsKKworc3RhdGljIGNoYXIgKmRfb3B0Oworc3RhdGljIGNoYXIgKmVfb3B0Oworc3RhdGljIGNoYXIgKipkYl9saXN0Oworc3RhdGljIGludCBkYl9pdGVtOworCitzdGF0aWMgY2hhciAqbXlfYmxvYjsKK3N0YXRpYyBjaGFyICoqbXlfYm9vbGNvZGVzOworc3RhdGljIGNoYXIgKipteV9udW1jb2RlczsKK3N0YXRpYyBjaGFyICoqbXlfbnVtdmFsdWVzOworc3RhdGljIGNoYXIgKipteV9zdHJjb2RlczsKK3N0YXRpYyBjaGFyICoqbXlfc3RydmFsdWVzOworCitzdGF0aWMgbG9uZyB0b3RhbF92YWx1ZXM7CitzdGF0aWMgbG9uZyB0b3RhbF9iX3ZhbHVlczsKK3N0YXRpYyBsb25nIHRvdGFsX25fdmFsdWVzOworc3RhdGljIGxvbmcgdG90YWxfc192YWx1ZXM7CisKKyNkZWZpbmUgaXNDYXBOYW1lKGMpIChpc2dyYXBoKGMpICYmIHN0cmNocigiXj06XFwiLCBjKSA9PSAwKQorI2RlZmluZSBFYWNoQ2FwTmFtZShuKSBuID0gMzM7IG4gPCAxMjc7ICsrbgorCitzdGF0aWMgY2hhciAqCittYWtlX2RiaXRlbShjaGFyICpwLCBjaGFyICpxKQoreworICAgIGNoYXIgKnJlc3VsdCA9IG1hbGxvYyhzdHJsZW4oZV9vcHQpICsgMiArIChzaXplX3QpIChwIC0gcSkpOworICAgIHNwcmludGYocmVzdWx0LCAiJXM9JS4qcyIsIGVfb3B0LCAoaW50KSAocCAtIHEpLCBxKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbWFrZV9kYmxpc3Qodm9pZCkKK3sKKyAgICBpZiAoZF9vcHQgJiYgZV9vcHQpIHsKKwlpbnQgcGFzczsKKworCWZvciAocGFzcyA9IDA7IHBhc3MgPCAyOyArK3Bhc3MpIHsKKwkgICAgY2hhciAqcCwgKnE7CisJICAgIHNpemVfdCBjb3VudCA9IDA7CisKKwkgICAgZm9yIChwID0gcSA9IGRfb3B0OyAqcCAhPSAnXDAnOyArK3ApIHsKKwkJaWYgKCpwID09ICc6JykgeworCQkgICAgaWYgKHAgIT0gcSArIDEpIHsKKwkJCWlmIChwYXNzKSB7CisJCQkgICAgZGJfbGlzdFtjb3VudF0gPSBtYWtlX2RiaXRlbShwLCBxKTsKKwkJCX0KKwkJCWNvdW50Kys7CisJCSAgICB9CisJCSAgICBxID0gcCArIDE7CisJCX0KKwkgICAgfQorCSAgICBpZiAocCAhPSBxICsgMSkgeworCQlpZiAocGFzcykgeworCQkgICAgZGJfbGlzdFtjb3VudF0gPSBtYWtlX2RiaXRlbShwLCBxKTsKKwkJfQorCQljb3VudCsrOworCSAgICB9CisJICAgIGlmICghcGFzcykgeworCQlkYl9saXN0ID0gdHlwZUNhbGxvYyhjaGFyICosIGNvdW50ICsgMSk7CisJICAgIH0KKwl9CisgICAgfQorfQorCitzdGF0aWMgY2hhciAqCituZXh0X2RiaXRlbSh2b2lkKQoreworICAgIGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoZGJfbGlzdCkgeworCWlmICgocmVzdWx0ID0gZGJfbGlzdFtkYl9pdGVtXSkgPT0gMCkgeworCSAgICBkYl9pdGVtID0gMDsKKwkgICAgcmVzdWx0ID0gZGJfbGlzdFswXTsKKwl9IGVsc2UgeworCSAgICBkYl9pdGVtKys7CisJfQorICAgIH0KKyAgICBwcmludGYoIioqICVzXG4iLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2RibGlzdCh2b2lkKQoreworICAgIGlmIChkYl9saXN0KSB7CisJaW50IG47CisJZm9yIChuID0gMDsgZGJfbGlzdFtuXTsgKytuKQorCSAgICBmcmVlKGRiX2xpc3Rbbl0pOworCWZyZWUoZGJfbGlzdCk7CisJZGJfbGlzdCA9IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorc2hvd19zdHJpbmcoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCit7CisgICAgcHJpbnRmKEZOQU1FKHN0ciksIG5hbWUpOworICAgIGlmICh2YWx1ZSA9PSAoKGNoYXIgKikgLTEpKSB7CisJcHJpbnRmKCJDQU5DRUxMRUQiKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlID09ICgoY2hhciAqKSAwKSkgeworCXByaW50ZigiQUJTRU5UIik7CisgICAgfSBlbHNlIHsKKwl3aGlsZSAoKnZhbHVlICE9IDApIHsKKwkgICAgaW50IGNoID0gVUNoYXIoKnZhbHVlKyspOworCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgJ1wxNzcnOgorCQlmcHV0cygiXj8iLCBzdGRvdXQpOworCQlicmVhazsKKwkgICAgY2FzZSAnXDAzMyc6CisJCWZwdXRzKCJcXEUiLCBzdGRvdXQpOworCQlicmVhazsKKwkgICAgY2FzZSAnXGInOgorCQlmcHV0cygiXFxiIiwgc3Rkb3V0KTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ1xmJzoKKwkJZnB1dHMoIlxcZiIsIHN0ZG91dCk7CisJCWJyZWFrOworCSAgICBjYXNlICdcbic6CisJCWZwdXRzKCJcXG4iLCBzdGRvdXQpOworCQlicmVhazsKKwkgICAgY2FzZSAnXHInOgorCQlmcHV0cygiXFxyIiwgc3Rkb3V0KTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyAnOgorCQlmcHV0cygiXFxzIiwgc3Rkb3V0KTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ1x0JzoKKwkJZnB1dHMoIlxcdCIsIHN0ZG91dCk7CisJCWJyZWFrOworCSAgICBjYXNlICdeJzoKKwkJZnB1dHMoIlxcXiIsIHN0ZG91dCk7CisJCWJyZWFrOworCSAgICBjYXNlICc6JzoKKwkJZnB1dHMoIlxcMDcyIiwgc3Rkb3V0KTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ1xcJzoKKwkJZnB1dHMoIlxcXFwiLCBzdGRvdXQpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJaWYgKGlzZ3JhcGgoY2gpKQorCQkgICAgZnB1dGMoY2gsIHN0ZG91dCk7CisJCWVsc2UgaWYgKGNoIDwgMzIpCisJCSAgICBwcmludGYoIl4lYyIsIGNoICsgJ0AnKTsKKwkJZWxzZQorCQkgICAgcHJpbnRmKCJcXCUwM28iLCBjaCk7CisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0KKyAgICBwcmludGYoIlxuIik7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X251bWJlcihjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCit7CisgICAgcHJpbnRmKEZOQU1FKG51bSksIG5hbWUpOworICAgIHByaW50ZigiICVkXG4iLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitkdW1waXQoTkNVUlNFU19DT05TVCBjaGFyICpjYXApCit7CisgICAgLyoKKyAgICAgKiBPbmUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSB0ZXJtY2FwIGludGVyZmFjZSBpcyB0aGF0IHRoZSBsaWJyYXJ5CisgICAgICogY2Fubm90IGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3NlZCB2aWEgdGdldHN0cigpLCBub3IgdGhlCisgICAgICogYW1vdW50IG9mIHNwYWNlIHJlbWFpbmluZy4gIFRoaXMgZGVtbyBzaW1wbHkgcmV1c2VzIHRoZSB3aG9sZSBidWZmZXIKKyAgICAgKiBmb3IgZWFjaCBjYWxsOyBhIG5vcm1hbCB0ZXJtY2FwIGFwcGxpY2F0aW9uIHdvdWxkIHRyeSB0byB1c2UgdGhlIGJ1ZmZlcgorICAgICAqIHRvIGhvbGQgYWxsIG9mIHRoZSBzdHJpbmdzIGV4dHJhY3RlZCBmcm9tIHRoZSB0ZXJtaW5hbCBlbnRyeS4KKyAgICAgKi8KKyAgICBjaGFyIGFyZWFbMTAyNF0sICphcCA9IGFyZWE7CisgICAgY2hhciAqc3RyOworICAgIGludCBudW07CisKKyAgICBpZiAoKHN0ciA9IHRnZXRzdHIoY2FwLCAmYXApKSAhPSAwKSB7CisJdG90YWxfdmFsdWVzKys7CisJdG90YWxfc192YWx1ZXMrKzsKKwlpZiAoIXFfb3B0KSB7CisJICAgIC8qCisJICAgICAqIE5vdGUgdGhhdCB0aGUgc3RyaW5ncyByZXR1cm5lZCBhcmUgbW9zdGx5IHRlcm1pbmZvIGZvcm1hdCwgc2luY2UKKwkgICAgICogbmN1cnNlcyBkb2VzIG5vdCBjb252ZXJ0IGV4Y2VwdCBmb3IgYSBoYW5kZnVsIG9mIHNwZWNpYWwgY2FzZXMuCisJICAgICAqLworCSAgICBzaG93X3N0cmluZyhjYXAsIHN0cik7CisJfQorICAgIH0gZWxzZSBpZiAoKG51bSA9IHRnZXRudW0oY2FwKSkgPj0gMCkgeworCXRvdGFsX3ZhbHVlcysrOworCXRvdGFsX25fdmFsdWVzKys7CisJaWYgKCFxX29wdCkgeworCSAgICBzaG93X251bWJlcihjYXAsIG51bSk7CisJfQorICAgIH0gZWxzZSBpZiAodGdldGZsYWcoY2FwKSA+IDApIHsKKwl0b3RhbF92YWx1ZXMrKzsKKwl0b3RhbF9iX3ZhbHVlcysrOworCWlmICghcV9vcHQpIHsKKwkgICAgcHJpbnRmKEZOQU1FKGZsZyksIGNhcCk7CisJICAgIHByaW50ZigiJXNcbiIsICJ0cnVlIik7CisJfQorICAgIH0KKworICAgIGlmICghcV9vcHQpCisJZmZsdXNoKHN0ZG91dCk7Cit9CisKK3N0YXRpYyB2b2lkCiticnV0ZV9mb3JjZShjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEwMjRdOworCisgICAgaWYgKGRiX2xpc3QpIHsKKwlwdXRlbnYobmV4dF9kYml0ZW0oKSk7CisgICAgfQorICAgIGlmICghcV9vcHQpCisJcHJpbnRmKCJUZXJtaW5hbCB0eXBlIFwiJXNcIlxuIiwgbmFtZSk7CisgICAgaWYgKHRnZXRlbnQoYnVmZmVyLCBuYW1lKSA+PSAwKSB7CisJY2hhciBjYXBbM107CisJaW50IGMxLCBjMjsKKworCWNhcFsyXSA9IDA7CisJZm9yIChFYWNoQ2FwTmFtZShjMSkpIHsKKwkgICAgY2FwWzBdID0gKGNoYXIpIGMxOworCSAgICBpZiAoaXNDYXBOYW1lKGMxKSkgeworCQlmb3IgKEVhY2hDYXBOYW1lKGMyKSkgeworCQkgICAgY2FwWzFdID0gKGNoYXIpIGMyOworCQkgICAgaWYgKGlzQ2FwTmFtZShjMikpIHsKKwkJCWR1bXBpdChjYXApOworCQkgICAgfQorCQl9CisJICAgIH0KKwl9CisgICAgfQorfQorCisjaWYgTkNVUlNFU19YTkFNRVMKK3N0YXRpYyB2b2lkCitkdW1wX3huYW1lKE5DVVJTRVNfQ09OU1QgY2hhciAqY2FwKQoreworICAgIGlmIChzdHJsZW4oY2FwKSA9PSAyKQorCWR1bXBpdChjYXApOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitkZW1vX3Rlcm1jYXAoTkNVUlNFU19DT05TVCBjaGFyICpuYW1lKQoreworICAgIHVuc2lnbmVkIG47CisgICAgTkNVUlNFU19DT05TVCBjaGFyICpjYXA7CisgICAgY2hhciBidWZmZXJbMTAyNF07CisKKyAgICBpZiAoZGJfbGlzdCkgeworCXB1dGVudihuZXh0X2RiaXRlbSgpKTsKKyAgICB9CisgICAgaWYgKCFxX29wdCkKKwlwcmludGYoIlRlcm1pbmFsIHR5cGUgXCIlc1wiXG4iLCBuYW1lKTsKKyAgICBpZiAodGdldGVudChidWZmZXIsIG5hbWUpID49IDApIHsKKworCWlmIChiX29wdCkgeworCSAgICBmb3IgKG4gPSAwOzsgKytuKSB7CisJCWNhcCA9IG15X2Jvb2xjb2Rlc1tuXTsKKwkJaWYgKGNhcCA9PSAwKQorCQkgICAgYnJlYWs7CisJCWR1bXBpdChjYXApOworCSAgICB9CisJfQorCisJaWYgKG5fb3B0KSB7CisJICAgIGZvciAobiA9IDA7OyArK24pIHsKKwkJY2FwID0gbXlfbnVtY29kZXNbbl07CisJCWlmIChjYXAgPT0gMCkKKwkJICAgIGJyZWFrOworCQlkdW1waXQoY2FwKTsKKwkgICAgfQorCX0KKworCWlmIChzX29wdCkgeworCSAgICBmb3IgKG4gPSAwOzsgKytuKSB7CisJCWNhcCA9IG15X3N0cmNvZGVzW25dOworCQlpZiAoY2FwID09IDApCisJCSAgICBicmVhazsKKwkJZHVtcGl0KGNhcCk7CisJICAgIH0KKwl9CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJaWYgKHhfb3B0ICYmIChteV9ibG9iID09IDApICYmIHlfb3B0KSB7CisjaWYgTkNVUlNFU19YTkFNRVMKKwkgICAgVEVSTVRZUEUgKnRlcm0gPSAmKGN1cl90ZXJtLT50eXBlKTsKKwkgICAgaWYgKHRlcm0gIT0gMAorCQkmJiAoKE5VTV9CT09MRUFOUyh0ZXJtKSAhPSBCT09MQ09VTlQpCisJCSAgICB8fCAoTlVNX05VTUJFUlModGVybSkgIT0gTlVNQ09VTlQpCisJCSAgICB8fCAoTlVNX1NUUklOR1ModGVybSkgIT0gU1RSQ09VTlQpKSkgeworCQlmb3IgKG4gPSBCT09MQ09VTlQ7IG4gPCBOVU1fQk9PTEVBTlModGVybSk7ICsrbikgeworCQkgICAgZHVtcF94bmFtZShFeHRCb29sbmFtZSh0ZXJtLCAoaW50KSBuLCBib29sbmFtZXMpKTsKKwkJfQorCQlmb3IgKG4gPSBOVU1DT1VOVDsgbiA8IE5VTV9OVU1CRVJTKHRlcm0pOyArK24pIHsKKwkJICAgIGR1bXBfeG5hbWUoRXh0TnVtbmFtZSh0ZXJtLCAoaW50KSBuLCBudW1uYW1lcykpOworCQl9CisJCWZvciAobiA9IFNUUkNPVU5UOyBuIDwgTlVNX1NUUklOR1ModGVybSk7ICsrbikgeworCQkgICAgZHVtcF94bmFtZShFeHRTdHJuYW1lKHRlcm0sIChpbnQpIG4sIHN0cm5hbWVzKSk7CisJCX0KKwkgICAgfQorI2VuZGlmCisJfQorI2VuZGlmCisgICAgfQorfQorCit0eXBlZGVmIGVudW0geworICAgIHBEZWZhdWx0ID0gMAorICAgICxwQ29tbWVudAorICAgICxwRGVzY3JpcHRpb24KKyAgICAscEVzY2FwZWQKKyAgICAscE5ld2xpbmUKKyAgICAscE5hbWUKKyAgICAscE51bWJlcgorICAgICxwU3RyaW5nCit9IFNUQVRFOworCitzdGF0aWMgdm9pZAorcGFyc2VfZGVzY3JpcHRpb24oY29uc3QgY2hhciAqaW5wdXRfbmFtZSkKK3sKKyAgICBzdGF0aWMgY2hhciBlbXB0eVsxXTsKKworICAgIEZJTEUgKmZwOworICAgIHN0cnVjdCBzdGF0IHNiOworICAgIHNpemVfdCBjb3VudF9ib29scyA9IDA7CisgICAgc2l6ZV90IGNvdW50X251bXMgPSAwOworICAgIHNpemVfdCBjb3VudF9zdHJzID0gMDsKKyAgICBzaXplX3QgbGVuOworICAgIHNpemVfdCBqLCBrOworICAgIFNUQVRFIHN0YXRlOworCisgICAgaWYgKHN0YXQoaW5wdXRfbmFtZSwgJnNiKSAhPSAwCisJfHwgKHNiLnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUcpIHsKKwlmYWlsZWQoImlucHV0IGlzIG5vdCBhIGZpbGUiKTsKKyAgICB9CisKKyAgICBpZiAoc2Iuc3Rfc2l6ZSA9PSAwKSB7CisJZmFpbGVkKCJpbnB1dCBpcyBlbXB0eSIpOworICAgIH0KKworICAgIC8qCisgICAgICogTm9uZSBvZiB0aGUgYXJyYXlzIGNvdWxkIGJlIGxhcmdlciB0aGFuIHRoZSBpbnB1dC1maWxlLCBhbmQgc2luY2UgaXQKKyAgICAgKiBpcyBzbWFsbCwganVzdCBhbGxvY2F0ZSB0aGUgbWF4aW11bSBmb3Igc2ltcGxpY2l0eS4KKyAgICAgKi8KKyAgICBpZiAoKG15X2Jsb2IgPSBtYWxsb2MoKHNpemVfdCkgc2Iuc3Rfc2l6ZSArIDEpKSA9PSAwIHx8CisJKG15X2Jvb2xjb2RlcyA9IHR5cGVDYWxsb2MoY2hhciAqLCBzYi5zdF9zaXplKSkgPT0gMCB8fAorCSAgKG15X251bWNvZGVzID0gdHlwZUNhbGxvYyhjaGFyICosIHNiLnN0X3NpemUpKSA9PSAwIHx8CisJICAobXlfbnVtdmFsdWVzID0gdHlwZUNhbGxvYyhjaGFyICosIHNiLnN0X3NpemUpKSA9PSAwIHx8CisJICAobXlfc3RyY29kZXMgPSB0eXBlQ2FsbG9jKGNoYXIgKiwgc2Iuc3Rfc2l6ZSkpID09IDAgfHwKKwkgIChteV9zdHJ2YWx1ZXMgPSB0eXBlQ2FsbG9jKGNoYXIgKiwgc2Iuc3Rfc2l6ZSkpID09IDApIHsKKwlmYWlsZWQoImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGlucHV0LWZpbGUiKTsKKyAgICB9CisKKyAgICBpZiAoKGZwID0gZm9wZW4oaW5wdXRfbmFtZSwgInIiKSkgPT0gMCkKKwlmYWlsZWQoImNhbm5vdCBvcGVuIGlucHV0LWZpbGUiKTsKKyAgICBsZW4gPSBmcmVhZChteV9ibG9iLCBzaXplb2YoY2hhciksIChzaXplX3QpIHNiLnN0X3NpemUsIGZwKTsKKyAgICBteV9ibG9iW3NiLnN0X3NpemVdID0gJ1wwJzsKKyAgICBmY2xvc2UoZnApOworCisgICAgLyoKKyAgICAgKiBGaXJzdCwgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgZXNjYXBlZCBuZXdsaW5lcywgYXMgd2VsbCBhcyByZXBlYXRlZAorICAgICAqIGNvbG9ucyB0byBjb25zdHJ1Y3QgYSBjYW5vbmljYWwgZW50cnkuCisgICAgICoKKyAgICAgKiBGSVhNRTogYWN0dWFsbHkgdGhpcyBzaG91bGQgbWFrZSBhbiBhZGRpdGlvbmFsIHBhc3MganVzdCB0byBzdHJpcAorICAgICAqIGNvbW1lbnQtbGluZXMgYW5kIGVzY2FwZWQgbmV3bGluZXMuICBCdXQgaXQgaXMgd29ya2FibGUgZm9yIGluZm9jbXAKKyAgICAgKiBvdXRwdXQuCisgICAgICovCisgICAgc3RhdGUgPSBwTmV3bGluZTsKKyAgICBmb3IgKGogPSBrID0gMDsgaiA8IGxlbjsgKytqKSB7CisJaW50IGNoID0gbXlfYmxvYltqXTsKKwlpZiAoY2ggPT0gJ1x0JykgeworCSAgICBjaCA9ICcgJzsKKwl9CisJc3dpdGNoIChzdGF0ZSkgeworCWNhc2UgcE5ld2xpbmU6CisJICAgIGlmIChjaCA9PSAnICcpIHsKKwkJY29udGludWU7CisJICAgIH0KKwkgICAgaWYgKGNoID09ICcjJykgeworCQlzdGF0ZSA9IHBDb21tZW50OworCQljb250aW51ZTsKKwkgICAgfQorCSAgICBzdGF0ZSA9IHBEZWZhdWx0OworCSAgICAvKiBGQUxMVEhSVSAqLworCWNhc2UgcERlZmF1bHQ6CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnfCc6CisJCXN0YXRlID0gcERlc2NyaXB0aW9uOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnXFwnOgorCQlzdGF0ZSA9IHBFc2NhcGVkOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnICc6CisJICAgIGNhc2UgJzonOgorCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJc3RhdGUgPSBwTmFtZTsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgbXlfYmxvYltrKytdID0gKGNoYXIpIGNoOworCSAgICBicmVhazsKKwljYXNlIHBDb21tZW50OgorCSAgICBpZiAoY2ggPT0gJ1xuJykKKwkJc3RhdGUgPSBwTmV3bGluZTsKKwkgICAgYnJlYWs7CisJY2FzZSBwRGVzY3JpcHRpb246CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnOic6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCWJyZWFrOworCSAgICBjYXNlICdcbic6CisJCXN0YXRlID0gcE5ld2xpbmU7CisJCWJyZWFrOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgcEVzY2FwZWQ6CisJICAgIGlmIChjaCAhPSAnXG4nKSB7CisJCW15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkJc3RhdGUgPSBwRGVmYXVsdDsKKwkgICAgfSBlbHNlIHsKKwkJc3RhdGUgPSBwTmV3bGluZTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIHBOYW1lOgorCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgJ1xuJzoKKwkJc3RhdGUgPSBwTmV3bGluZTsKKwkJY29udGludWU7CisJICAgIGNhc2UgJyAnOgorCSAgICBjYXNlICc6JzoKKwkJc3RhdGUgPSBwRGVmYXVsdDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyMnOgorCQlzdGF0ZSA9IHBOdW1iZXI7CisJCWJyZWFrOworCSAgICBjYXNlICd8JzoKKwkJc3RhdGUgPSBwRGVzY3JpcHRpb247CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIG15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkgICAgYnJlYWs7CisJY2FzZSBwTnVtYmVyOgorCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgJ1xuJzoKKwkJc3RhdGUgPSBwTmV3bGluZTsKKwkJY29udGludWU7CisJICAgIGNhc2UgJzonOgorCQlzdGF0ZSA9IHBEZWZhdWx0OworCQlicmVhazsKKwkgICAgY2FzZSAnICc6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIG15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkgICAgYnJlYWs7CisJY2FzZSBwU3RyaW5nOgorCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgJ1xcJzoKKwkJaWYgKG15X2Jsb2JbaiArIDFdID09ICdcMCcpIHsKKwkJICAgIHN0YXRlID0gcERlZmF1bHQ7CisJCSAgICBjb250aW51ZTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnOic6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCWJyZWFrOworCSAgICB9CisJICAgIG15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgLyogbm90IHVzZWQgKi8KKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBteV9ibG9iW2tdID0gJ1wwJzsKKworICAgIC8qCisgICAgICogVGhlbiwgcGFyc2Ugd2hhdCdzIGxlZnQsIG1ha2luZyBpbmRleGVzIG9mIHRoZSBuYW1lcyBhbmQgdmFsdWVzLgorICAgICAqLworICAgIHN0YXRlID0gcERlZmF1bHQ7CisgICAgZm9yIChqID0gMDsgbXlfYmxvYltqXSAhPSAnXDAnOyArK2opIHsKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBwRGVmYXVsdDoKKwkgICAgc3dpdGNoIChteV9ibG9iW2pdKSB7CisJICAgIGNhc2UgJ1xcJzoKKwkJc3RhdGUgPSBwRXNjYXBlZDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJzonOgorCQlteV9ibG9iW2pdID0gJ1wwJzsKKwkJaWYgKG15X2Jsb2JbaiArIDFdICE9ICdcMCcgJiYgbXlfYmxvYltqICsgMV0gIT0gJzonKQorCQkgICAgc3RhdGUgPSBwTmFtZTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyAnOgorCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJYnJlYWs7CisJICAgIH0KKwljYXNlIHBFc2NhcGVkOgorCSAgICBicmVhazsKKwljYXNlIHBOYW1lOgorCSAgICBzdGF0ZSA9IHBEZWZhdWx0OworCSAgICAvKgorCSAgICAgKiBDb21tZW50ZWQtb3V0IGNhcGFiaWxpdGllcyBtaWdodCBiZSBhY2Nlc3NpYmxlICh0aGV5IGFyZSBpbgorCSAgICAgKiBuY3Vyc2VzKS4KKwkgICAgICovCisJICAgIGlmIChteV9ibG9iW2pdID09ICcuJyAmJiBteV9ibG9iW2ogKyAxXSA9PSAnLicpIHsKKwkJaiArPSAyOworCSAgICB9CisJICAgIGlmIChteV9ibG9iW2ogKyAxXSAhPSAnXDAnKSB7CisJCXN3aXRjaCAobXlfYmxvYltqICsgMl0pIHsKKwkJY2FzZSAnIyc6CisJCSAgICBteV9udW12YWx1ZXNbY291bnRfbnVtc10gPSAmbXlfYmxvYltqICsgM107CisJCSAgICBteV9udW1jb2Rlc1tjb3VudF9udW1zKytdID0gJm15X2Jsb2Jbal07CisJCSAgICBteV9ibG9iW2ogKyAyXSA9ICdcMCc7CisJCSAgICBzdGF0ZSA9IHBOdW1iZXI7CisJCSAgICBqICs9IDI7CisJCSAgICBicmVhazsKKwkJY2FzZSAnPSc6CisJCSAgICBteV9zdHJ2YWx1ZXNbY291bnRfc3Ryc10gPSAmbXlfYmxvYltqICsgM107CisJCSAgICBteV9zdHJjb2Rlc1tjb3VudF9zdHJzKytdID0gJm15X2Jsb2Jbal07CisJCSAgICBteV9ibG9iW2ogKyAyXSA9ICdcMCc7CisJCSAgICBzdGF0ZSA9IHBTdHJpbmc7CisJCSAgICBqICs9IDI7CisJCSAgICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICAgIGlmIChteV9ibG9iW2ogKyAyXSA9PSAnQCcpIHsKKwkJCS8qCisJCQkgKiBXZSBjYW5ub3QgZ2V0IHRoZSB0eXBlIGZvciBhIGNhbmNlbGxlZCBpdGVtCisJCQkgKiBkaXJlY3RseSwgYnV0IGNhbiBpbmZlciBpdCBhc3N1bWluZyB0aGUgaW5wdXQKKwkJCSAqIGNhbWUgZnJvbSBpbmZvY21wLCB3aGljaCBwdXRzIHRoZSBkYXRhIGluIGEKKwkJCSAqIGtub3duIG9yZGVyLgorCQkJICovCisJCQlpZiAoY291bnRfc3RycykgeworCQkJICAgIG15X3N0cnZhbHVlc1tjb3VudF9zdHJzXSA9IGVtcHR5OworCQkJICAgIG15X3N0cmNvZGVzW2NvdW50X3N0cnMrK10gPSAmbXlfYmxvYltqXTsKKwkJCX0gZWxzZSBpZiAoY291bnRfbnVtcykgeworCQkJICAgIG15X251bXZhbHVlc1tjb3VudF9udW1zXSA9IGVtcHR5OworCQkJICAgIG15X251bWNvZGVzW2NvdW50X251bXMrK10gPSAmbXlfYmxvYltqXTsKKwkJCX0gZWxzZSB7CisJCQkgICAgbXlfYm9vbGNvZGVzW2NvdW50X2Jvb2xzKytdID0gJm15X2Jsb2Jbal07CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJbXlfYm9vbGNvZGVzW2NvdW50X2Jvb2xzKytdID0gJm15X2Jsb2Jbal07CisJCSAgICB9CisJCSAgICBqKys7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgcE51bWJlcjoKKwkgICAgaWYgKCFpc2RpZ2l0KFVDaGFyKG15X2Jsb2Jbal0pKSkgeworCQktLWo7CisJCXN0YXRlID0gcERlZmF1bHQ7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBwU3RyaW5nOgorCSAgICBzd2l0Y2ggKG15X2Jsb2Jbal0pIHsKKwkgICAgY2FzZSAnXFwnOgorCQlpZiAobXlfYmxvYltqICsgMV0gPT0gJ1wwJykgeworCQkgICAgc3RhdGUgPSBwRGVmYXVsdDsKKwkJICAgIGNvbnRpbnVlOworCQl9IGVsc2UgeworCQkgICAgKytqOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlICdcbic6CisJCXN0YXRlID0gcE5ld2xpbmU7CisJCWNvbnRpbnVlOworCSAgICBjYXNlICc6JzoKKwkJLS1qOworCQlzdGF0ZSA9IHBEZWZhdWx0OworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIHBOZXdsaW5lOgorCWNhc2UgcENvbW1lbnQ6CisJY2FzZSBwRGVzY3JpcHRpb246CisJZGVmYXVsdDoKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBteV9ib29sY29kZXNbY291bnRfYm9vbHNdID0gMDsKKyAgICBteV9udW1jb2Rlc1tjb3VudF9udW1zXSA9IDA7CisgICAgbXlfbnVtdmFsdWVzW2NvdW50X251bXNdID0gMDsKKyAgICBteV9zdHJjb2Rlc1tjb3VudF9zdHJzXSA9IDA7CisgICAgbXlfc3RydmFsdWVzW2NvdW50X3N0cnNdID0gMDsKKworI2lmIDAKKyAgICBwcmludGYoImJvb2xzOiVkXG4iLCAoaW50KSBjb3VudF9ib29scyk7CisgICAgZm9yIChqID0gMDsgbXlfYm9vbGNvZGVzW2pdOyArK2opCisJcHJpbnRmKCIlNWQ6JXNcbiIsIChpbnQpIGosIG15X2Jvb2xjb2Rlc1tqXSk7CisKKyAgICBwcmludGYoIm51bWJlcnM6JWRcbiIsIChpbnQpIGNvdW50X251bXMpOworICAgIGZvciAoaiA9IDA7IG15X251bWNvZGVzW2pdOyArK2opCisJcHJpbnRmKCIlNWQ6JXMoJXMpXG4iLCAoaW50KSBqLCBteV9udW1jb2Rlc1tqXSwgbXlfbnVtdmFsdWVzW2pdKTsKKworICAgIHByaW50Zigic3RyaW5nczolZFxuIiwgKGludCkgY291bnRfc3Rycyk7CisgICAgZm9yIChqID0gMDsgbXlfc3RyY29kZXNbal07ICsraikKKwlwcmludGYoIiU1ZDolcyglcylcbiIsIChpbnQpIGosIG15X3N0cmNvZGVzW2pdLCBteV9zdHJ2YWx1ZXNbal0pOworI2VuZGlmCit9CisKKyNpZiBVU0VfQ09ERV9MSVNUUworc3RhdGljIGNoYXIgKioKK2NvcHlfY29kZV9saXN0KE5DVVJTRVNfQ09OU1QgY2hhciAqY29uc3QgKmxpc3QpCit7CisgICAgaW50IHBhc3M7CisgICAgc2l6ZV90IGNvdW50OworICAgIHNpemVfdCBsZW5ndGggPSAxOworICAgIGNoYXIgKipyZXN1bHQgPSAwOworICAgIGNoYXIgKmJsb2IgPSAwOworICAgIGNoYXIgKnVudXNlZCA9IDA7CisKKyAgICBmb3IgKHBhc3MgPSAwOyBwYXNzIDwgMjsgKytwYXNzKSB7CisJZm9yIChjb3VudCA9IDA7IGxpc3RbY291bnRdICE9IDA7ICsrY291bnQpIHsKKwkgICAgc2l6ZV90IGNodW5rID0gc3RybGVuKGxpc3RbY291bnRdKSArIDE7CisJICAgIGlmIChwYXNzID09IDApIHsKKwkJbGVuZ3RoICs9IGNodW5rOworCSAgICB9IGVsc2UgeworCQlyZXN1bHRbY291bnRdID0gdW51c2VkOworCQlzdHJjcHkodW51c2VkLCBsaXN0W2NvdW50XSk7CisJCXVudXNlZCArPSBjaHVuazsKKwkgICAgfQorCX0KKwlpZiAocGFzcyA9PSAwKSB7CisJICAgIGJsb2IgPSBtYWxsb2MobGVuZ3RoKTsKKwkgICAgcmVzdWx0ID0gdHlwZUNhbGxvYyhjaGFyICosIGNvdW50ICsgMSk7CisJICAgIHVudXNlZCA9IGJsb2I7CisJICAgIGlmIChibG9iID09IDAgfHwgcmVzdWx0ID09IDApCisJCWZhaWxlZCgiY29weV9jb2RlX2xpc3QgZmFpbGVkIik7CisJfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKm1zZ1tdID0KKyAgICB7CisJIlVzYWdlOiBkZW1vX3Rlcm1jYXAgW29wdGlvbnNdIFt0ZXJtaW5hbF0iLAorCSIiLAorCSJJZiBubyBvcHRpb25zIGFyZSBnaXZlbiwgcHJpbnQgYWxsIChib29sZWFuLCBudW1lcmljLCBzdHJpbmcpIiwKKwkiY2FwYWJpbGl0aWVzIGZvciB0aGUgZ2l2ZW4gdGVybWluYWwsIHVzaW5nIHNob3J0IG5hbWVzLiIsCisJIiIsCisJIk9wdGlvbnM6IiwKKwkiIC1hICAgICAgIHRyeSBhbGwgbmFtZXMsIHByaW50IGNhcGFiaWxpdGllcyBmb3VuZCIsCisJIiAtYiAgICAgICBwcmludCBib29sZWFuLWNhcGFiaWxpdGllcyIsCisJIiAtZCBMSVNUICBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBkYXRhYmFzZXMgdG8gdXNlIiwKKwkiIC1lIE5BTUUgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB3aXRoIC1kIG9wdGlvbiIsCisJIiAtaSBOQU1FICB0ZXJtaW5hbCBkZXNjcmlwdGlvbiB0byB1c2UgYXMgbmFtZXMgZm9yIFwiLWFcIiBvcHRpb24sIGV0Yy4iLAorCSIgLW4gICAgICAgcHJpbnQgbnVtZXJpYy1jYXBhYmlsaXRpZXMiLAorCSIgLXEgICAgICAgcXVpZXQgKHByaW50cyBvbmx5IGNvdW50cykiLAorCSIgLXIgQ09VTlQgcmVwZWF0IGZvciBnaXZlbiBjb3VudCIsCisJIiAtcyAgICAgICBwcmludCBzdHJpbmctY2FwYWJpbGl0aWVzIiwKKwkiIC12ICAgICAgIHByaW50IHRlcm1jYXAtdmFyaWFibGVzIiwKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwkiIC14ICAgICAgIHByaW50IGV4dGVuZGVkIGNhcGFiaWxpdGllcyIsCisjZW5kaWYKKyAgICB9OworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihtc2cpOyArK24pIHsKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2dbbl0pOworICAgIH0KKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgbjsKKyAgICBjaGFyICpuYW1lOworICAgIGJvb2wgYV9vcHQgPSBGQUxTRTsKKyAgICBib29sIHZfb3B0ID0gRkFMU0U7CisgICAgY2hhciAqaW5wdXRfbmFtZSA9IDA7CisKKyAgICBpbnQgcmVwZWF0OworICAgIGludCByX29wdCA9IDE7CisKKyAgICB3aGlsZSAoKG4gPSBnZXRvcHQoYXJnYywgYXJndiwgImFiZDplOmk6bnFyOnN2eHkiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKG4pIHsKKwljYXNlICdhJzoKKwkgICAgYV9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdiJzoKKwkgICAgYl9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdkJzoKKwkgICAgZF9vcHQgPSBvcHRhcmc7CisJICAgIGJyZWFrOworCWNhc2UgJ2UnOgorCSAgICBlX29wdCA9IG9wdGFyZzsKKwkgICAgYnJlYWs7CisJY2FzZSAnaSc6CisJICAgIGlucHV0X25hbWUgPSBvcHRhcmc7CisJICAgIGJyZWFrOworCWNhc2UgJ24nOgorCSAgICBuX29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3EnOgorCSAgICBxX29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3InOgorCSAgICBpZiAoKHJfb3B0ID0gYXRvaShvcHRhcmcpKSA8PSAwKQorCQl1c2FnZSgpOworCSAgICBicmVhazsKKwljYXNlICdzJzoKKwkgICAgc19vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICd2JzoKKwkgICAgdl9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKyNpZiBOQ1VSU0VTX1hOQU1FUworCWNhc2UgJ3gnOgorCSAgICB4X29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3knOgorCSAgICB5X29wdCA9IFRSVUU7CisJICAgIHhfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisjaWYgSEFWRV9VU0VfRVhURU5ERURfTkFNRVMKKyAgICB1c2VfZXh0ZW5kZWRfbmFtZXMoeF9vcHQpOworI2VuZGlmCisKKyAgICBpZiAoIShiX29wdCB8fCBuX29wdCB8fCBzX29wdCkpIHsKKwliX29wdCA9IFRSVUU7CisJbl9vcHQgPSBUUlVFOworCXNfb3B0ID0gVFJVRTsKKyAgICB9CisKKyAgICBtYWtlX2RibGlzdCgpOworCisgICAgaWYgKGFfb3B0KSB7CisJZm9yIChyZXBlYXQgPSAwOyByZXBlYXQgPCByX29wdDsgKytyZXBlYXQpIHsKKwkgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKKwkJZm9yIChuID0gb3B0aW5kOyBuIDwgYXJnYzsgKytuKSB7CisJCSAgICBicnV0ZV9mb3JjZShhcmd2W25dKTsKKwkJfQorCSAgICB9IGVsc2UgaWYgKChuYW1lID0gZ2V0ZW52KCJURVJNIikpICE9IDApIHsKKwkJYnJ1dGVfZm9yY2UobmFtZSk7CisJICAgIH0gZWxzZSB7CisJCXN0YXRpYyBjaGFyIGR1bWJbXSA9ICJkdW1iIjsKKwkJYnJ1dGVfZm9yY2UoZHVtYik7CisJICAgIH0KKwl9CisgICAgfSBlbHNlIHsKKwlpZiAoaW5wdXRfbmFtZSAhPSAwKSB7CisJICAgIHBhcnNlX2Rlc2NyaXB0aW9uKGlucHV0X25hbWUpOworCX0KKyNpZiBVU0VfQ09ERV9MSVNUUworCWVsc2UgeworCSAgICBteV9ib29sY29kZXMgPSBjb3B5X2NvZGVfbGlzdChib29sY29kZXMpOworCSAgICBteV9udW1jb2RlcyA9IGNvcHlfY29kZV9saXN0KG51bWNvZGVzKTsKKwkgICAgbXlfc3RyY29kZXMgPSBjb3B5X2NvZGVfbGlzdChzdHJjb2Rlcyk7CisJfQorI2Vsc2UKKwllbHNlIHsKKwkgICAgZmFpbGVkKCJubyBjYXBhYmlsaXR5LWxpc3RzIGF2YWlsYWJsZSAodXNlIC1pIG9wdGlvbikiKTsKKwl9CisjZW5kaWYgLyogVVNFX0NPREVfTElTVFMgKi8KKwlmb3IgKHJlcGVhdCA9IDA7IHJlcGVhdCA8IHJfb3B0OyArK3JlcGVhdCkgeworCSAgICBpZiAob3B0aW5kIDwgYXJnYykgeworCQlmb3IgKG4gPSBvcHRpbmQ7IG4gPCBhcmdjOyArK24pIHsKKwkJICAgIGRlbW9fdGVybWNhcChhcmd2W25dKTsKKwkJfQorCSAgICB9IGVsc2UgaWYgKChuYW1lID0gZ2V0ZW52KCJURVJNIikpICE9IDApIHsKKwkJZGVtb190ZXJtY2FwKG5hbWUpOworCSAgICB9IGVsc2UgeworCQlzdGF0aWMgY2hhciBkdW1iW10gPSAiZHVtYiI7CisJCWRlbW9fdGVybWNhcChkdW1iKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBwcmludGYoIiVsZCB2YWx1ZXMgKCVsZCBib29sZWFucywgJWxkIG51bWJlcnMsICVsZCBzdHJpbmdzKVxuIiwKKwkgICB0b3RhbF92YWx1ZXMsIHRvdGFsX2JfdmFsdWVzLCB0b3RhbF9uX3ZhbHVlcywgdG90YWxfc192YWx1ZXMpOworCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pIHx8IGRlZmluZWQoSEFWRV9DVVJTRVNfREFUQV9PU1BFRUQpCisgICAgaWYgKHZfb3B0KSB7CisJc2hvd19udW1iZXIoIlBDIiwgUEMpOworCXNob3dfc3RyaW5nKCJVUCIsIFVQKTsKKwlzaG93X3N0cmluZygiQkMiLCBCQyk7CisJc2hvd19udW1iZXIoIm9zcGVlZCIsIG9zcGVlZCk7CisgICAgfQorI2VuZGlmCisKKyAgICBmcmVlX2RibGlzdCgpOworCisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworI2Vsc2UKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELAorICAgICBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGZhaWxlZCgiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRlcm1jYXAiKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9kZW1vX3Rlcm1pbmZvLmMgYi90ZXN0L2RlbW9fdGVybWluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTZhZTFjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9kZW1vX3Rlcm1pbmZvLmMKQEAgLTAsMCArMSw5MjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyAqCisgKiAkSWQ6IGRlbW9fdGVybWluZm8uYyx2IDEuMzkgMjAxNS8wNy8xMCAyMzo0NTo0NCB0b20gRXhwICQKKyAqCisgKiBBIHNpbXBsZSBkZW1vIG9mIHRoZSB0ZXJtaW5mbyBpbnRlcmZhY2UuCisgKi8KKyNkZWZpbmUgVVNFX1RJTkZPCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2lmIE5DVVJTRVNfWE5BTUVTCisjaWYgSEFWRV9URVJNX0VOVFJZX0gKKyNpbmNsdWRlIDx0ZXJtX2VudHJ5Lmg+CisjZWxzZQorI3VuZGVmIE5DVVJTRVNfWE5BTUVTCisjZGVmaW5lIE5DVVJTRVNfWE5BTUVTIDAKKyNlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqbXNnKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZyk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworI2lmIEhBVkVfVElHRVRTVFIKKworI2lmIGRlZmluZWQoSEFWRV9DVVJTRVNfREFUQV9CT09MTkFNRVMpIHx8IGRlZmluZWQoREVDTF9DVVJTRVNfREFUQV9CT09MTkFNRVMpCisjZGVmaW5lIFVTRV9DT0RFX0xJU1RTIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9DT0RFX0xJU1RTIDAKKyNlbmRpZgorCitzdGF0aWMgYm9vbCBhX29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgYl9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIGZfb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCBuX29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgcV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHNfb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCB4X29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgeV9vcHQgPSBGQUxTRTsKKworc3RhdGljIGNoYXIgKmRfb3B0Oworc3RhdGljIGNoYXIgKmVfb3B0Oworc3RhdGljIGNoYXIgKipkYl9saXN0Oworc3RhdGljIGludCBkYl9pdGVtOworCitzdGF0aWMgY2hhciAqbXlfYmxvYjsKK3N0YXRpYyBjaGFyICoqbXlfYm9vbGNvZGVzOworc3RhdGljIGNoYXIgKipteV9udW1jb2RlczsKK3N0YXRpYyBjaGFyICoqbXlfbnVtdmFsdWVzOworc3RhdGljIGNoYXIgKipteV9zdHJjb2RlczsKK3N0YXRpYyBjaGFyICoqbXlfc3RydmFsdWVzOworCitzdGF0aWMgbG9uZyB0b3RhbF92YWx1ZXM7CitzdGF0aWMgbG9uZyB0b3RhbF9iX3ZhbHVlczsKK3N0YXRpYyBsb25nIHRvdGFsX25fdmFsdWVzOworc3RhdGljIGxvbmcgdG90YWxfc192YWx1ZXM7CisKKyNkZWZpbmUgRkNPTFMgOAorI2RlZmluZSBGTkFNRSh0eXBlKSAiJXMgJS0qcyA9ICIsICN0eXBlLCBGQ09MUworCitzdGF0aWMgY2hhciAqCittYWtlX2RiaXRlbShjaGFyICpwLCBjaGFyICpxKQoreworICAgIGNoYXIgKnJlc3VsdCA9IG1hbGxvYyhzdHJsZW4oZV9vcHQpICsgMiArIChzaXplX3QpIChwIC0gcSkpOworICAgIHNwcmludGYocmVzdWx0LCAiJXM9JS4qcyIsIGVfb3B0LCAoaW50KSAocCAtIHEpLCBxKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbWFrZV9kYmxpc3Qodm9pZCkKK3sKKyAgICBpZiAoZF9vcHQgJiYgZV9vcHQpIHsKKwlpbnQgcGFzczsKKworCWZvciAocGFzcyA9IDA7IHBhc3MgPCAyOyArK3Bhc3MpIHsKKwkgICAgY2hhciAqcCwgKnE7CisJICAgIHNpemVfdCBjb3VudCA9IDA7CisKKwkgICAgZm9yIChwID0gcSA9IGRfb3B0OyAqcCAhPSAnXDAnOyArK3ApIHsKKwkJaWYgKCpwID09ICc6JykgeworCQkgICAgaWYgKHAgIT0gcSArIDEpIHsKKwkJCWlmIChwYXNzKSB7CisJCQkgICAgZGJfbGlzdFtjb3VudF0gPSBtYWtlX2RiaXRlbShwLCBxKTsKKwkJCX0KKwkJCWNvdW50Kys7CisJCSAgICB9CisJCSAgICBxID0gcCArIDE7CisJCX0KKwkgICAgfQorCSAgICBpZiAocCAhPSBxICsgMSkgeworCQlpZiAocGFzcykgeworCQkgICAgZGJfbGlzdFtjb3VudF0gPSBtYWtlX2RiaXRlbShwLCBxKTsKKwkJfQorCQljb3VudCsrOworCSAgICB9CisJICAgIGlmICghcGFzcykgeworCQlkYl9saXN0ID0gdHlwZUNhbGxvYyhjaGFyICosIGNvdW50ICsgMSk7CisJICAgIH0KKwl9CisgICAgfQorfQorCitzdGF0aWMgY2hhciAqCituZXh0X2RiaXRlbSh2b2lkKQoreworICAgIGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoZGJfbGlzdCkgeworCWlmICgocmVzdWx0ID0gZGJfbGlzdFtkYl9pdGVtXSkgPT0gMCkgeworCSAgICBkYl9pdGVtID0gMDsKKwkgICAgcmVzdWx0ID0gZGJfbGlzdFswXTsKKwl9IGVsc2UgeworCSAgICBkYl9pdGVtKys7CisJfQorICAgIH0KKyAgICBwcmludGYoIioqICVzXG4iLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZmRlZiBOT19MRUFLUworc3RhdGljIHZvaWQKK2ZyZWVfZGJsaXN0KHZvaWQpCit7CisgICAgaWYgKGRiX2xpc3QpIHsKKwlpbnQgbjsKKwlmb3IgKG4gPSAwOyBkYl9saXN0W25dOyArK24pCisJICAgIGZyZWUoZGJfbGlzdFtuXSk7CisJZnJlZShkYl9saXN0KTsKKwlkYl9saXN0ID0gMDsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK2R1bXBpdChOQ1VSU0VTX0NPTlNUIGNoYXIgKmNhcCkKK3sKKyAgICBjb25zdCBjaGFyICpzdHI7CisgICAgaW50IG51bTsKKworICAgIGlmICgoc3RyID0gdGlnZXRzdHIoY2FwKSkgIT0gMCAmJiAoc3RyICE9IChjaGFyICopIC0xKSkgeworCXRvdGFsX3ZhbHVlcysrOworCXRvdGFsX3NfdmFsdWVzKys7CisJaWYgKCFxX29wdCkgeworCSAgICBwcmludGYoRk5BTUUoc3RyKSwgY2FwKTsKKwkgICAgd2hpbGUgKCpzdHIgIT0gMCkgeworCQlpbnQgY2ggPSBVQ2hhcigqc3RyKyspOworCQlzd2l0Y2ggKGNoKSB7CisJCWNhc2UgJ1wxNzcnOgorCQkgICAgZnB1dHMoIl4/Iiwgc3Rkb3V0KTsKKwkJICAgIGJyZWFrOworCQljYXNlICdcMDMzJzoKKwkJICAgIGZwdXRzKCJcXEUiLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJ1xiJzoKKwkJICAgIGZwdXRzKCJcXGIiLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJ1xmJzoKKwkJICAgIGZwdXRzKCJcXGYiLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJ1xuJzoKKwkJICAgIGZwdXRzKCJcXG4iLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJ1xyJzoKKwkJICAgIGZwdXRzKCJcXHIiLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJyAnOgorCQkgICAgZnB1dHMoIlxccyIsIHN0ZG91dCk7CisJCSAgICBicmVhazsKKwkJY2FzZSAnXHQnOgorCQkgICAgZnB1dHMoIlxcdCIsIHN0ZG91dCk7CisJCSAgICBicmVhazsKKwkJY2FzZSAnXic6CisJCSAgICBmcHV0cygiXFxeIiwgc3Rkb3V0KTsKKwkJICAgIGJyZWFrOworCQljYXNlICc6JzoKKwkJICAgIGZwdXRzKCJcXDA3MiIsIHN0ZG91dCk7CisJCSAgICBicmVhazsKKwkJY2FzZSAnXFwnOgorCQkgICAgZnB1dHMoIlxcXFwiLCBzdGRvdXQpOworCQkgICAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgICBpZiAoaXNncmFwaChjaCkpCisJCQlmcHV0YyhjaCwgc3Rkb3V0KTsKKwkJICAgIGVsc2UgaWYgKGNoIDwgMzIpCisJCQlwcmludGYoIl4lYyIsIGNoICsgJ0AnKTsKKwkJICAgIGVsc2UKKwkJCXByaW50ZigiXFwlMDNvIiwgY2gpOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICBwcmludGYoIlxuIik7CisJfQorICAgIH0gZWxzZSBpZiAoKG51bSA9IHRpZ2V0bnVtKGNhcCkpID49IDApIHsKKwl0b3RhbF92YWx1ZXMrKzsKKwl0b3RhbF9uX3ZhbHVlcysrOworCWlmICghcV9vcHQpIHsKKwkgICAgcHJpbnRmKEZOQU1FKG51bSksIGNhcCk7CisJICAgIHByaW50ZigiICVkXG4iLCBudW0pOworCX0KKyAgICB9IGVsc2UgaWYgKChudW0gPSB0aWdldGZsYWcoY2FwKSkgPj0gMCkgeworCXRvdGFsX3ZhbHVlcysrOworCXRvdGFsX2JfdmFsdWVzKys7CisJaWYgKCFxX29wdCkgeworCSAgICBwcmludGYoRk5BTUUoZmxnKSwgY2FwKTsKKwkgICAgcHJpbnRmKCIlc1xuIiwgbnVtID8gInRydWUiIDogImZhbHNlIik7CisJfQorICAgIH0KKworICAgIGlmICghcV9vcHQpCisJZmZsdXNoKHN0ZG91dCk7Cit9CisKKyNkZWZpbmUgaXNDYXBOYW1lKGMpIChpc2FsbnVtKFVDaGFyKGMpKSB8fCAoKGMpID09ICdfJykpCisjZGVmaW5lIExlZ2FsSXRlbShjLG4pIChuKQorCitzdGF0aWMgdm9pZAorYnJ1dGVfZm9yY2UoY29uc3QgY2hhciAqbmFtZSkKK3sKKyNkZWZpbmUgTUFYX0ZPUkNFIDUJCS8qIG9taXQgImNvbG9ycyIsIHNpbmNlIENQVS10aW1lIGlzIGEgcHJvYmxlbSAqLworICAgIHN0YXRpYyBjb25zdCBjaGFyIGxlZ2FsW10gPSAiXAorMDEyMzQ1Njc4OVwKK0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXAorYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpfIjsKKyAgICBpbnQgbGVuZ3RoOworICAgIGludCBqLCBrOworICAgIGJvb2wgY2Fycnk7CisgICAgYm9vbCBjaGFuZ2VkOworICAgIGNoYXIgY2FwW01BWF9GT1JDRSArIDFdOworICAgIGludCBpdGVtW01BWF9GT1JDRSArIDFdOworCisgICAgaWYgKGRiX2xpc3QpIHsKKwlwdXRlbnYobmV4dF9kYml0ZW0oKSk7CisgICAgfQorICAgIGlmICghcV9vcHQpCisJcHJpbnRmKCJUZXJtaW5hbCB0eXBlIFwiJXNcIlxuIiwgbmFtZSk7CisgICAgc2V0dXB0ZXJtKChOQ1VSU0VTX0NPTlNUIGNoYXIgKikgbmFtZSwgMSwgKGludCAqKSAwKTsKKyAgICBpZiAoIXFfb3B0KSB7CisJaWYgKHN0cmNtcChuYW1lLCB0dHl0eXBlKSkKKwkgICAgcHJpbnRmKCIuLi4gYWN0dWFsIFwiJXNcIlxuIiwgdHR5dHlwZSk7CisgICAgfQorCisgICAgZm9yIChsZW5ndGggPSAxOyBsZW5ndGggPD0gTUFYX0ZPUkNFOyArK2xlbmd0aCkgeworCS8qIHNldCBhbGwgZGlnaXRzIHRvIHplcm9zICovCisJZm9yIChqID0gMDsgaiA8IGxlbmd0aDsgKytqKSB7CisJICAgIGl0ZW1bal0gPSBMZWdhbEl0ZW0oaiwgMCk7CisJfQorCisJZG8geworCSAgICBjaGFuZ2VkID0gRkFMU0U7CisJICAgIC8qIGNvcHkgZGlnaXRzIHRvIGNhcC1uYW1lICovCisJICAgIGZvciAoaiA9IDA7IGogPCBsZW5ndGg7ICsraikgeworCQljYXBbal0gPSBsZWdhbFtpdGVtW2pdXTsKKwkgICAgfQorCSAgICBjYXBbbGVuZ3RoXSA9ICdcMCc7CisJICAgIGR1bXBpdChjYXApOworCisJICAgIGsgPSBsZW5ndGggLSAxOworCSAgICBkbyB7CisJCWNhcnJ5ID0gRkFMU0U7CisJCWZvciAoOyBrID49IDA7IC0taykgeworCQkgICAgaXRlbVtrXSArPSAxOworCQkgICAgaWYgKGxlZ2FsW2l0ZW1ba11dKSB7CisJCQljaGFuZ2VkID0gVFJVRTsKKwkJCWJyZWFrOworCQkgICAgfQorCQkgICAgaWYgKGsgPiAwICYmCisJCQlsZWdhbFtpdGVtW2sgLSAxXSArIDFdKSB7CisJCQlmb3IgKGogPSBrOyBqIDwgbGVuZ3RoOyArK2opIHsKKwkJCSAgICBpdGVtW2pdID0gTGVnYWxJdGVtKGosIDApOworCQkJfQorCQkJY2FycnkgPSBUUlVFOworCQkJY2hhbmdlZCA9IFRSVUU7CisJCSAgICB9CisJCX0KKwkgICAgfSB3aGlsZSAoY2FycnkpOworCX0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKyAgICBkZWxfY3VydGVybShjdXJfdGVybSk7Cit9CisKKyNpZiBVU0VfQ09ERV9MSVNUUworI2RlZmluZSBmdWxsbmFtZSh0eXBlLG4pIGZfb3B0ID8gdHlwZSMjZm5hbWVzW25dIDogbXlfIyN0eXBlIyNjb2Rlc1tuXQorI2Vsc2UKKyNkZWZpbmUgZnVsbG5hbWUodHlwZSxuKSBteV8jI3R5cGUjI2NvZGVzW25dCisjZW5kaWYKKworc3RhdGljIHZvaWQKK2RlbW9fdGVybWluZm8oY2hhciAqbmFtZSkKK3sKKyAgICB1bnNpZ25lZCBuOworICAgIE5DVVJTRVNfQ09OU1QgY2hhciAqY2FwOworCisgICAgaWYgKGRiX2xpc3QpIHsKKwlwdXRlbnYobmV4dF9kYml0ZW0oKSk7CisgICAgfQorICAgIGlmICghcV9vcHQpCisJcHJpbnRmKCJUZXJtaW5hbCB0eXBlIFwiJXNcIlxuIiwgbmFtZSk7CisgICAgc2V0dXB0ZXJtKG5hbWUsIDEsIChpbnQgKikgMCk7CisKKyAgICBpZiAoYl9vcHQpIHsKKwlmb3IgKG4gPSAwOzsgKytuKSB7CisJICAgIGNhcCA9IGZ1bGxuYW1lKGJvb2wsIG4pOworCSAgICBpZiAoY2FwID09IDApCisJCWJyZWFrOworCSAgICBkdW1waXQoY2FwKTsKKwl9CisgICAgfQorCisgICAgaWYgKG5fb3B0KSB7CisJZm9yIChuID0gMDs7ICsrbikgeworCSAgICBjYXAgPSBmdWxsbmFtZShudW0sIG4pOworCSAgICBpZiAoY2FwID09IDApCisJCWJyZWFrOworCSAgICBkdW1waXQoY2FwKTsKKwl9CisgICAgfQorCisgICAgaWYgKHNfb3B0KSB7CisJZm9yIChuID0gMDs7ICsrbikgeworCSAgICBjYXAgPSBmdWxsbmFtZShzdHIsIG4pOworCSAgICBpZiAoY2FwID09IDApCisJCWJyZWFrOworCSAgICBkdW1waXQoY2FwKTsKKwl9CisgICAgfQorI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorICAgIGlmICh4X29wdCAmJiAobXlfYmxvYiA9PSAwKSkgeworCWludCBtb2Q7CisJaWYgKHlfb3B0KSB7CisjaWYgTkNVUlNFU19YTkFNRVMKKwkgICAgVEVSTVRZUEUgKnRlcm0gPSAmKGN1cl90ZXJtLT50eXBlKTsKKwkgICAgaWYgKHRlcm0gIT0gMAorCQkmJiAoKE5VTV9CT09MRUFOUyh0ZXJtKSAhPSBCT09MQ09VTlQpCisJCSAgICB8fCAoTlVNX05VTUJFUlModGVybSkgIT0gTlVNQ09VTlQpCisJCSAgICB8fCAoTlVNX1NUUklOR1ModGVybSkgIT0gU1RSQ09VTlQpKSkgeworCQlmb3IgKG4gPSBCT09MQ09VTlQ7IG4gPCBOVU1fQk9PTEVBTlModGVybSk7ICsrbikgeworCQkgICAgZHVtcGl0KEV4dEJvb2xuYW1lKHRlcm0sIChpbnQpIG4sIGJvb2xuYW1lcykpOworCQl9CisJCWZvciAobiA9IE5VTUNPVU5UOyBuIDwgTlVNX05VTUJFUlModGVybSk7ICsrbikgeworCQkgICAgZHVtcGl0KEV4dE51bW5hbWUodGVybSwgKGludCkgbiwgbnVtbmFtZXMpKTsKKwkJfQorCQlmb3IgKG4gPSBTVFJDT1VOVDsgbiA8IE5VTV9TVFJJTkdTKHRlcm0pOyArK24pIHsKKwkJICAgIGR1bXBpdChFeHRTdHJuYW1lKHRlcm0sIChpbnQpIG4sIHN0cm5hbWVzKSk7CisJCX0KKwkgICAgfQorI2VuZGlmCisJfSBlbHNlIHsKKwkgICAgY2hhciB0ZW1wWzgwXTsKKwkgICAgc3RhdGljIGNvbnN0IGNoYXIgKnh0ZXJtX2tleXNbXSA9CisJICAgIHsKKwkJImtEQyIsICJrRE4iLCAia0VORCIsICJrSE9NIiwgImtJQyIsCisJCSJrTEZUIiwgImtOWFQiLCAia1BSViIsICJrUklUIiwgImtVUCIsCisJICAgIH07CisJICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YoeHRlcm1fa2V5cyk7ICsrbikgeworCQlmb3IgKG1vZCA9IDA7IG1vZCA8IDg7ICsrbW9kKSB7CisJCSAgICBpZiAobW9kID09IDApIHsKKwkJCS8qIHRoZXNlIGhhcHBlbiB0byBiZSBzdGFuZGFyZCAtIGF2b2lkIGR1cGxpY2F0ZXMgKi8KKwkJCWlmICghc3RyY21wKHh0ZXJtX2tleXNbbl0sICJrREMiKSB8fAorCQkJICAgICFzdHJjbXAoeHRlcm1fa2V5c1tuXSwgImtFTkQiKSB8fAorCQkJICAgICFzdHJjbXAoeHRlcm1fa2V5c1tuXSwgImtIT00iKSB8fAorCQkJICAgICFzdHJjbXAoeHRlcm1fa2V5c1tuXSwgImtMRlQiKSB8fAorCQkJICAgICFzdHJjbXAoeHRlcm1fa2V5c1tuXSwgImtSSVQiKSkgeworCQkJICAgIGNvbnRpbnVlOworCQkJfQorCQkJc3ByaW50Zih0ZW1wLCAiJS4qcyIsIDgsIHh0ZXJtX2tleXNbbl0pOworCQkgICAgfSBlbHNlIHsKKwkJCXNwcmludGYodGVtcCwgIiUuKnMlZCIsIDgsIHh0ZXJtX2tleXNbbl0sIG1vZCk7CisJCSAgICB9CisJCSAgICBkdW1waXQodGVtcCk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9CisjZW5kaWYKKyAgICBkZWxfY3VydGVybShjdXJfdGVybSk7Cit9CisKK3R5cGVkZWYgZW51bSB7CisgICAgcERlZmF1bHQgPSAwCisgICAgLHBDb21tZW50CisgICAgLHBEZXNjcmlwdGlvbgorICAgICxwRXNjYXBlZAorICAgICxwTmV3bGluZQorICAgICxwTmFtZQorICAgICxwTnVtYmVyCisgICAgLHBTdHJpbmcKK30gU1RBVEU7CisKK3N0YXRpYyB2b2lkCitwYXJzZV9kZXNjcmlwdGlvbihjb25zdCBjaGFyICppbnB1dF9uYW1lKQoreworICAgIHN0YXRpYyBjaGFyIGVtcHR5WzFdOworCisgICAgRklMRSAqZnA7CisgICAgc3RydWN0IHN0YXQgc2I7CisgICAgc2l6ZV90IGNvdW50X2Jvb2xzID0gMDsKKyAgICBzaXplX3QgY291bnRfbnVtcyA9IDA7CisgICAgc2l6ZV90IGNvdW50X3N0cnMgPSAwOworICAgIHNpemVfdCBsZW47CisgICAgc2l6ZV90IGosIGssIGpsOworICAgIFNUQVRFIHN0YXRlOworCisgICAgaWYgKHN0YXQoaW5wdXRfbmFtZSwgJnNiKSAhPSAwCisJfHwgKHNiLnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUcpIHsKKwlmYWlsZWQoImlucHV0IGlzIG5vdCBhIGZpbGUiKTsKKyAgICB9CisKKyAgICBpZiAoc2Iuc3Rfc2l6ZSA9PSAwKSB7CisJZmFpbGVkKCJpbnB1dCBpcyBlbXB0eSIpOworICAgIH0KKworICAgIC8qCisgICAgICogTm9uZSBvZiB0aGUgYXJyYXlzIGNvdWxkIGJlIGxhcmdlciB0aGFuIHRoZSBpbnB1dC1maWxlLCBhbmQgc2luY2UgaXQKKyAgICAgKiBpcyBzbWFsbCwganVzdCBhbGxvY2F0ZSB0aGUgbWF4aW11bSBmb3Igc2ltcGxpY2l0eS4KKyAgICAgKi8KKyAgICBpZiAoKG15X2Jsb2IgPSBtYWxsb2MoKHNpemVfdCkgc2Iuc3Rfc2l6ZSArIDEpKSA9PSAwIHx8CisJKG15X2Jvb2xjb2RlcyA9IHR5cGVDYWxsb2MoY2hhciAqLCBzYi5zdF9zaXplKSkgPT0gMCB8fAorCSAgKG15X251bWNvZGVzID0gdHlwZUNhbGxvYyhjaGFyICosIHNiLnN0X3NpemUpKSA9PSAwIHx8CisJICAobXlfbnVtdmFsdWVzID0gdHlwZUNhbGxvYyhjaGFyICosIHNiLnN0X3NpemUpKSA9PSAwIHx8CisJICAobXlfc3RyY29kZXMgPSB0eXBlQ2FsbG9jKGNoYXIgKiwgc2Iuc3Rfc2l6ZSkpID09IDAgfHwKKwkgIChteV9zdHJ2YWx1ZXMgPSB0eXBlQ2FsbG9jKGNoYXIgKiwgc2Iuc3Rfc2l6ZSkpID09IDApIHsKKwlmYWlsZWQoImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGlucHV0LWZpbGUiKTsKKyAgICB9CisKKyAgICBpZiAoKGZwID0gZm9wZW4oaW5wdXRfbmFtZSwgInIiKSkgPT0gMCkKKwlmYWlsZWQoImNhbm5vdCBvcGVuIGlucHV0LWZpbGUiKTsKKyAgICBsZW4gPSBmcmVhZChteV9ibG9iLCBzaXplb2YoY2hhciksIChzaXplX3QpIHNiLnN0X3NpemUsIGZwKTsKKyAgICBteV9ibG9iW3NiLnN0X3NpemVdID0gJ1wwJzsKKyAgICBmY2xvc2UoZnApOworCisgICAgLyoKKyAgICAgKiBGaXJzdCwgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgZXNjYXBlZCBuZXdsaW5lcywgYXMgd2VsbCBhcyByZXBlYXRlZAorICAgICAqIGNvbG9ucyB0byBjb25zdHJ1Y3QgYSBjYW5vbmljYWwgZW50cnkuCisgICAgICovCisgICAgc3RhdGUgPSBwTmV3bGluZTsKKyAgICBmb3IgKGogPSBrID0gMDsgaiA8IGxlbjsgKytqKSB7CisJaW50IGNoID0gbXlfYmxvYltqXTsKKwlpZiAoY2ggPT0gJ1x0JykgeworCSAgICBjaCA9ICcgJzsKKwl9CisJc3dpdGNoIChzdGF0ZSkgeworCWNhc2UgcE5ld2xpbmU6CisJICAgIGlmIChjaCA9PSAnICcpIHsKKwkJY29udGludWU7CisJICAgIH0KKwkgICAgaWYgKGNoID09ICcjJykgeworCQlzdGF0ZSA9IHBDb21tZW50OworCQljb250aW51ZTsKKwkgICAgfQorCSAgICBzdGF0ZSA9IHBEZWZhdWx0OworCSAgICAvKiBGQUxMVEhSVSAqLworCWNhc2UgcERlZmF1bHQ6CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnfCc6CisJCXN0YXRlID0gcERlc2NyaXB0aW9uOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnXFwnOgorCQlzdGF0ZSA9IHBFc2NhcGVkOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnICc6CisJCWJyZWFrOworCSAgICBjYXNlICcsJzoKKwkJbXlfYmxvYltrKytdID0gKGNoYXIpIGNoOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJaWYgKGlzYWxwaGEoVUNoYXIoY2gpKSkKKwkJICAgIHN0YXRlID0gcE5hbWU7CisJCWVsc2UKKwkJICAgIGZwcmludGYoc3RkZXJyLCAiT09QUyBAJWQ6JS4yMHNcbiIsIF9fTElORV9fLCBteV9ibG9iICsgaik7CisJCW15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBwQ29tbWVudDoKKwkgICAgaWYgKGNoID09ICdcbicpCisJCXN0YXRlID0gcE5ld2xpbmU7CisJICAgIGJyZWFrOworCWNhc2UgcERlc2NyaXB0aW9uOgorCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgJywnOgorCQlzdGF0ZSA9IHBEZWZhdWx0OworCQlicmVhazsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIHBFc2NhcGVkOgorCSAgICBpZiAoY2ggIT0gJ1xuJykgeworCQlteV9ibG9iW2srK10gPSAoY2hhcikgY2g7CisJCXN0YXRlID0gcERlZmF1bHQ7CisJICAgIH0gZWxzZSB7CisJCXN0YXRlID0gcE5ld2xpbmU7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBwTmFtZToKKwkgICAgc3dpdGNoIChjaCkgeworCSAgICBjYXNlICdcbic6CisJCXN0YXRlID0gcE5ld2xpbmU7CisJCWNvbnRpbnVlOworCSAgICBjYXNlICcgJzoKKwkgICAgY2FzZSAnLCc6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCWJyZWFrOworCSAgICBjYXNlICcjJzoKKwkJc3RhdGUgPSBwTnVtYmVyOworCQlicmVhazsKKwkgICAgY2FzZSAnPSc6CisJCXN0YXRlID0gcFN0cmluZzsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ3wnOgorCQlzdGF0ZSA9IHBEZXNjcmlwdGlvbjsKKwkJY29udGludWU7CisJICAgIH0KKwkgICAgbXlfYmxvYltrKytdID0gKGNoYXIpIGNoOworCSAgICBicmVhazsKKwljYXNlIHBOdW1iZXI6CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQljb250aW51ZTsKKwkgICAgY2FzZSAnLCc6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCWJyZWFrOworCSAgICBjYXNlICcgJzoKKwkJc3RhdGUgPSBwRGVmYXVsdDsKKwkJY29udGludWU7CisJICAgIH0KKwkgICAgbXlfYmxvYltrKytdID0gKGNoYXIpIGNoOworCSAgICBicmVhazsKKwljYXNlIHBTdHJpbmc6CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnXG4nOgorCQlzdGF0ZSA9IHBOZXdsaW5lOworCQlicmVhazsKKwkgICAgY2FzZSAnLCc6CisJCXN0YXRlID0gcERlZmF1bHQ7CisJCW15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCW15X2Jsb2JbaysrXSA9IChjaGFyKSBjaDsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgLyogbm90IHVzZWQgKi8KKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBteV9ibG9iW2tdID0gJ1wwJzsKKworICAgIC8qCisgICAgICogVGhlbiwgcGFyc2Ugd2hhdCdzIGxlZnQsIG1ha2luZyBpbmRleGVzIG9mIHRoZSBuYW1lcyBhbmQgdmFsdWVzLgorICAgICAqLworICAgIHN0YXRlID0gcERlZmF1bHQ7CisgICAgZm9yIChqID0gMDsgbXlfYmxvYltqXSAhPSAnXDAnOyArK2opIHsKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBwRGVmYXVsdDoKKwkgICAgc3dpdGNoIChteV9ibG9iW2pdKSB7CisJICAgIGNhc2UgJ1xcJzoKKwkJc3RhdGUgPSBwRXNjYXBlZDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJywnOgorCQlteV9ibG9iW2pdID0gJ1wwJzsKKwkJaWYgKG15X2Jsb2JbaiArIDFdICE9ICdcMCcgJiYgbXlfYmxvYltqICsgMV0gIT0gJywnKQorCQkgICAgc3RhdGUgPSBwTmFtZTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyAnOgorCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJYnJlYWs7CisJICAgIH0KKwljYXNlIHBFc2NhcGVkOgorCSAgICBicmVhazsKKwljYXNlIHBOYW1lOgorCSAgICBzdGF0ZSA9IHBEZWZhdWx0OworCSAgICBpZiAoaXNhbHBoYShVQ2hhcihteV9ibG9iW2pdKSkpIHsKKwkJZm9yIChqbCA9IDE7IGlzYWxudW0oVUNoYXIobXlfYmxvYltqICsgamxdKSk7ICsramwpIHsKKwkJICAgIDsKKwkJfQorCSAgICB9IGVsc2UgeworCQlqbCA9IDA7CisJICAgIH0KKwkgICAgaWYgKGpsICE9IDApIHsKKwkJc3dpdGNoIChteV9ibG9iW2ogKyBqbF0pIHsKKwkJY2FzZSAnIyc6CisJCSAgICBteV9udW12YWx1ZXNbY291bnRfbnVtc10gPSAmbXlfYmxvYltqICsgamwgKyAxXTsKKwkJICAgIG15X251bWNvZGVzW2NvdW50X251bXMrK10gPSAmbXlfYmxvYltqXTsKKwkJICAgIG15X2Jsb2JbaiArIGpsXSA9ICdcMCc7CisJCSAgICBzdGF0ZSA9IHBOdW1iZXI7CisJCSAgICBqICs9IGpsOworCQkgICAgYnJlYWs7CisJCWNhc2UgJz0nOgorCQkgICAgbXlfc3RydmFsdWVzW2NvdW50X3N0cnNdID0gJm15X2Jsb2JbaiArIGpsICsgMV07CisJCSAgICBteV9zdHJjb2Rlc1tjb3VudF9zdHJzKytdID0gJm15X2Jsb2Jbal07CisJCSAgICBteV9ibG9iW2ogKyBqbF0gPSAnXDAnOworCQkgICAgc3RhdGUgPSBwU3RyaW5nOworCQkgICAgaiArPSBqbDsKKwkJICAgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgICAgaWYgKG15X2Jsb2JbaiArIGpsXSA9PSAnQCcpIHsKKwkJCS8qCisJCQkgKiBXZSBjYW5ub3QgZ2V0IHRoZSB0eXBlIGZvciBhIGNhbmNlbGxlZCBpdGVtCisJCQkgKiBkaXJlY3RseSwgYnV0IGNhbiBpbmZlciBpdCBhc3N1bWluZyB0aGUgaW5wdXQKKwkJCSAqIGNhbWUgZnJvbSBpbmZvY21wLCB3aGljaCBwdXRzIHRoZSBkYXRhIGluIGEKKwkJCSAqIGtub3duIG9yZGVyLgorCQkJICovCisJCQlpZiAoY291bnRfc3RycykgeworCQkJICAgIG15X3N0cnZhbHVlc1tjb3VudF9zdHJzXSA9IGVtcHR5OworCQkJICAgIG15X3N0cmNvZGVzW2NvdW50X3N0cnMrK10gPSAmbXlfYmxvYltqXTsKKwkJCX0gZWxzZSBpZiAoY291bnRfbnVtcykgeworCQkJICAgIG15X251bXZhbHVlc1tjb3VudF9udW1zXSA9IGVtcHR5OworCQkJICAgIG15X251bWNvZGVzW2NvdW50X251bXMrK10gPSAmbXlfYmxvYltqXTsKKwkJCX0gZWxzZSB7CisJCQkgICAgbXlfYm9vbGNvZGVzW2NvdW50X2Jvb2xzKytdID0gJm15X2Jsb2Jbal07CisJCQl9CisJCQlteV9ibG9iW2ogKyBqbF0gPSAnXDAnOworCQkJaiArPSBqbCArIDE7CisJCSAgICB9IGVsc2UgeworCQkJbXlfYm9vbGNvZGVzW2NvdW50X2Jvb2xzKytdID0gJm15X2Jsb2Jbal07CisJCQlteV9ibG9iW2ogKyBqbF0gPSAnXDAnOworCQkJaiArPSBqbDsKKwkJICAgIH0KKwkJICAgIHN0YXRlID0gKGlzQ2FwTmFtZShteV9ibG9iW2ogKyAxXSkKKwkJCSAgICAgPyBwTmFtZQorCQkJICAgICA6IHBEZWZhdWx0KTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBwTnVtYmVyOgorCSAgICBpZiAoIWlzZGlnaXQoVUNoYXIobXlfYmxvYltqXSkpKSB7CisJCS0tajsKKwkJc3RhdGUgPSBwRGVmYXVsdDsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIHBTdHJpbmc6CisJICAgIHN3aXRjaCAobXlfYmxvYltqXSkgeworCSAgICBjYXNlICdcXCc6CisJCWlmIChteV9ibG9iW2ogKyAxXSAhPSAnXDAnKSB7CisJCSAgICArK2o7CisJCX0gZWxzZSB7CisJCSAgICAtLWo7CisJCSAgICBzdGF0ZSA9IHBEZWZhdWx0OworCQl9CisJCWJyZWFrOworCSAgICBjYXNlICcsJzoKKwkJLS1qOworCQlzdGF0ZSA9IHBEZWZhdWx0OworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIHBOZXdsaW5lOgorCWNhc2UgcENvbW1lbnQ6CisJY2FzZSBwRGVzY3JpcHRpb246CisJZGVmYXVsdDoKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBteV9ib29sY29kZXNbY291bnRfYm9vbHNdID0gMDsKKyAgICBteV9udW1jb2Rlc1tjb3VudF9udW1zXSA9IDA7CisgICAgbXlfbnVtdmFsdWVzW2NvdW50X251bXNdID0gMDsKKyAgICBteV9zdHJjb2Rlc1tjb3VudF9zdHJzXSA9IDA7CisgICAgbXlfc3RydmFsdWVzW2NvdW50X3N0cnNdID0gMDsKKworI2lmIDAKKyAgICBwcmludGYoIiMgYm9vbHM6JWRcbiIsIChpbnQpIGNvdW50X2Jvb2xzKTsKKyAgICBmb3IgKGogPSAwOyBteV9ib29sY29kZXNbal07ICsraikKKwlwcmludGYoIlx0JXMsXG4iLCBteV9ib29sY29kZXNbal0pOworCisgICAgcHJpbnRmKCIjIG51bWJlcnM6JWRcbiIsIChpbnQpIGNvdW50X251bXMpOworICAgIGZvciAoaiA9IDA7IG15X251bWNvZGVzW2pdOyArK2opCisJcHJpbnRmKCJcdCVzIyVzLFxuIiwgbXlfbnVtY29kZXNbal0sIG15X251bXZhbHVlc1tqXSk7CisKKyAgICBwcmludGYoIiMgc3RyaW5nczolZFxuIiwgKGludCkgY291bnRfc3Rycyk7CisgICAgZm9yIChqID0gMDsgbXlfc3RyY29kZXNbal07ICsraikKKwlwcmludGYoIlx0JXM9JXMsXG4iLCBteV9zdHJjb2Rlc1tqXSwgbXlfc3RydmFsdWVzW2pdKTsKKyNlbmRpZgorfQorCisjaWYgVVNFX0NPREVfTElTVFMKK3N0YXRpYyBjaGFyICoqCitjb3B5X2NvZGVfbGlzdChOQ1VSU0VTX0NPTlNUIGNoYXIgKmNvbnN0ICpsaXN0KQoreworICAgIGludCBwYXNzOworICAgIHNpemVfdCBjb3VudDsKKyAgICBzaXplX3QgbGVuZ3RoID0gMTsKKyAgICBjaGFyICoqcmVzdWx0ID0gMDsKKyAgICBjaGFyICpibG9iID0gMDsKKyAgICBjaGFyICp1bnVzZWQgPSAwOworCisgICAgZm9yIChwYXNzID0gMDsgcGFzcyA8IDI7ICsrcGFzcykgeworCWZvciAoY291bnQgPSAwOyBsaXN0W2NvdW50XSAhPSAwOyArK2NvdW50KSB7CisJICAgIHNpemVfdCBjaHVuayA9IHN0cmxlbihsaXN0W2NvdW50XSkgKyAxOworCSAgICBpZiAocGFzcyA9PSAwKSB7CisJCWxlbmd0aCArPSBjaHVuazsKKwkgICAgfSBlbHNlIHsKKwkJcmVzdWx0W2NvdW50XSA9IHVudXNlZDsKKwkJc3RyY3B5KHVudXNlZCwgbGlzdFtjb3VudF0pOworCQl1bnVzZWQgKz0gY2h1bms7CisJICAgIH0KKwl9CisJaWYgKHBhc3MgPT0gMCkgeworCSAgICBibG9iID0gbWFsbG9jKGxlbmd0aCk7CisJICAgIHJlc3VsdCA9IHR5cGVDYWxsb2MoY2hhciAqLCBjb3VudCArIDEpOworCSAgICB1bnVzZWQgPSBibG9iOworCSAgICBpZiAoYmxvYiA9PSAwIHx8IHJlc3VsdCA9PSAwKQorCQlmYWlsZWQoImNvcHlfY29kZV9saXN0IGZhaWxlZCIpOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICptc2dbXSA9CisgICAgeworCSJVc2FnZTogZGVtb190ZXJtaW5mbyBbb3B0aW9uc10gW3Rlcm1pbmFsXSIsCisJIiIsCisJIklmIG5vIG9wdGlvbnMgYXJlIGdpdmVuLCBwcmludCBhbGwgKGJvb2xlYW4sIG51bWVyaWMsIHN0cmluZykiLAorCSJjYXBhYmlsaXRpZXMgZm9yIHRoZSBnaXZlbiB0ZXJtaW5hbCwgdXNpbmcgc2hvcnQgbmFtZXMuIiwKKwkiIiwKKwkiT3B0aW9uczoiLAorCSIgLWEgICAgICAgdHJ5IGFsbCBuYW1lcywgcHJpbnQgY2FwYWJpbGl0aWVzIGZvdW5kIiwKKwkiIC1iICAgICAgIHByaW50IGJvb2xlYW4tY2FwYWJpbGl0aWVzIiwKKwkiIC1kIExJU1QgIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGRhdGFiYXNlcyB0byB1c2UiLAorCSIgLWUgTkFNRSAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0IHdpdGggLWQgb3B0aW9uIiwKKwkiIC1mICAgICAgIHByaW50IGZ1bGwgbmFtZXMiLAorCSIgLWkgTkFNRSAgdGVybWluYWwgZGVzY3JpcHRpb24gdG8gdXNlIGFzIG5hbWVzIGZvciBcIi1hXCIgb3B0aW9uIiwKKwkiIC1uICAgICAgIHByaW50IG51bWVyaWMtY2FwYWJpbGl0aWVzIiwKKwkiIC1xICAgICAgIHF1aWV0IChwcmludHMgb25seSBjb3VudHMpIiwKKwkiIC1yIENPVU5UIHJlcGVhdCBmb3IgZ2l2ZW4gY291bnQiLAorCSIgLXMgICAgICAgcHJpbnQgc3RyaW5nLWNhcGFiaWxpdGllcyIsCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJIiAteCAgICAgICBwcmludCBleHRlbmRlZCBjYXBhYmlsaXRpZXMiLAorCSIgLXkgICAgICAgZGlyZWN0LWxvb2t1cCBuYW1lcyBvZiBleHRlbmRlZCBjYXBhYmlsaXRpZXMiLAorI2VuZGlmCisgICAgfTsKKyAgICB1bnNpZ25lZCBuOworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YobXNnKTsgKytuKSB7CisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnW25dKTsKKyAgICB9CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgaW50IG47CisgICAgaW50IHJlcGVhdDsKKyAgICBjaGFyICpuYW1lOworICAgIGludCByX29wdCA9IDE7CisgICAgY2hhciAqaW5wdXRfbmFtZSA9IDA7CisKKyAgICB3aGlsZSAoKG4gPSBnZXRvcHQoYXJnYywgYXJndiwgImFiZDplOmZpOm5xcjpzeHkiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKG4pIHsKKwljYXNlICdhJzoKKwkgICAgYV9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdiJzoKKwkgICAgYl9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdkJzoKKwkgICAgZF9vcHQgPSBvcHRhcmc7CisJICAgIGJyZWFrOworCWNhc2UgJ2UnOgorCSAgICBlX29wdCA9IG9wdGFyZzsKKwkgICAgYnJlYWs7CisJY2FzZSAnZic6CisJICAgIGZfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnaSc6CisJICAgIGlucHV0X25hbWUgPSBvcHRhcmc7CisJICAgIGJyZWFrOworCWNhc2UgJ24nOgorCSAgICBuX29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3EnOgorCSAgICBxX29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3InOgorCSAgICBpZiAoKHJfb3B0ID0gYXRvaShvcHRhcmcpKSA8PSAwKQorCQl1c2FnZSgpOworCSAgICBicmVhazsKKwljYXNlICdzJzoKKwkgICAgc19vcHQgPSBUUlVFOworCSAgICBicmVhazsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwljYXNlICd4JzoKKwkgICAgeF9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICd5JzoKKwkgICAgeV9vcHQgPSBUUlVFOworCSAgICB4X29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworI2VuZGlmCisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworI2lmIEhBVkVfVVNFX0VYVEVOREVEX05BTUVTCisgICAgdXNlX2V4dGVuZGVkX25hbWVzKHhfb3B0KTsKKyNlbmRpZgorCisgICAgaWYgKCEoYl9vcHQgfHwgbl9vcHQgfHwgc19vcHQpKSB7CisJYl9vcHQgPSBUUlVFOworCW5fb3B0ID0gVFJVRTsKKwlzX29wdCA9IFRSVUU7CisgICAgfQorCisgICAgbWFrZV9kYmxpc3QoKTsKKworICAgIGlmIChhX29wdCkgeworCWZvciAocmVwZWF0ID0gMDsgcmVwZWF0IDwgcl9vcHQ7ICsrcmVwZWF0KSB7CisJICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CisJCWZvciAobiA9IG9wdGluZDsgbiA8IGFyZ2M7ICsrbikgeworCQkgICAgYnJ1dGVfZm9yY2UoYXJndltuXSk7CisJCX0KKwkgICAgfSBlbHNlIGlmICgobmFtZSA9IGdldGVudigiVEVSTSIpKSAhPSAwKSB7CisJCWJydXRlX2ZvcmNlKG5hbWUpOworCSAgICB9IGVsc2UgeworCQlzdGF0aWMgY2hhciBkdW1iW10gPSAiZHVtYiI7CisJCWJydXRlX2ZvcmNlKGR1bWIpOworCSAgICB9CisJfQorICAgIH0gZWxzZSB7CisJaWYgKGlucHV0X25hbWUgIT0gMCkgeworCSAgICBwYXJzZV9kZXNjcmlwdGlvbihpbnB1dF9uYW1lKTsKKwl9CisjaWYgVVNFX0NPREVfTElTVFMKKwllbHNlIHsKKwkgICAgbXlfYm9vbGNvZGVzID0gY29weV9jb2RlX2xpc3QoYm9vbG5hbWVzKTsKKwkgICAgbXlfbnVtY29kZXMgPSBjb3B5X2NvZGVfbGlzdChudW1uYW1lcyk7CisJICAgIG15X3N0cmNvZGVzID0gY29weV9jb2RlX2xpc3Qoc3RybmFtZXMpOworCX0KKyNlbHNlCisJZWxzZSB7CisJICAgIGZhaWxlZCgibm8gY2FwYWJpbGl0eS1saXN0cyBhdmFpbGFibGUgKHVzZSAtaSBvcHRpb24pIik7CisJfQorI2VuZGlmIC8qIFVTRV9DT0RFX0xJU1RTICovCisJZm9yIChyZXBlYXQgPSAwOyByZXBlYXQgPCByX29wdDsgKytyZXBlYXQpIHsKKwkgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKKwkJZm9yIChuID0gb3B0aW5kOyBuIDwgYXJnYzsgKytuKSB7CisJCSAgICBkZW1vX3Rlcm1pbmZvKGFyZ3Zbbl0pOworCQl9CisJICAgIH0gZWxzZSBpZiAoKG5hbWUgPSBnZXRlbnYoIlRFUk0iKSkgIT0gMCkgeworCQlkZW1vX3Rlcm1pbmZvKG5hbWUpOworCSAgICB9IGVsc2UgeworCQlzdGF0aWMgY2hhciBkdW1iW10gPSAiZHVtYiI7CisJCWRlbW9fdGVybWluZm8oZHVtYik7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgcHJpbnRmKCIlbGQgdmFsdWVzICglbGQgYm9vbGVhbnMsICVsZCBudW1iZXJzLCAlbGQgc3RyaW5ncylcbiIsCisJICAgdG90YWxfdmFsdWVzLCB0b3RhbF9iX3ZhbHVlcywgdG90YWxfbl92YWx1ZXMsIHRvdGFsX3NfdmFsdWVzKTsKKworI2lmZGVmIE5PX0xFQUtTCisgICAgZnJlZV9kYmxpc3QoKTsKKyAgICBpZiAobXlfYmxvYiAhPSAwKSB7CisJZnJlZShteV9ibG9iKTsKKwlmcmVlKG15X2Jvb2xjb2Rlcyk7CisJZnJlZShteV9udW1jb2Rlcyk7CisJZnJlZShteV9udW12YWx1ZXMpOworCWZyZWUobXlfc3RyY29kZXMpOworCWZyZWUobXlfc3RydmFsdWVzKTsKKyAgICB9CisjZW5kaWYKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisKKyNlbHNlIC8qICFIQVZFX1RJR0VUU1RSICovCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgdGVybWluZm8gZnVuY3Rpb25zIHN1Y2ggYXMgdGlnZXRzdHJcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYgLyogSEFWRV9USUdFVFNUUiAqLwpkaWZmIC0tZ2l0IGEvdGVzdC9kaXR0by5jIGIvdGVzdC9kaXR0by5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMWYyMTYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2RpdHRvLmMKQEAgLTAsMCArMSw0NDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgKDE5OTgtb24pCisgKgorICogJElkOiBkaXR0by5jLHYgMS40MiAyMDEyLzExLzI0IDIwOjE2OjE4IHRvbSBFeHAgJAorICoKKyAqIFRoZSBwcm9ncmFtIGlsbHVzdHJhdGVzIGhvdyB0byBzZXQgdXAgbXVsdGlwbGUgc2NyZWVucyBmcm9tIGEgc2luZ2xlCisgKiBwcm9ncmFtLgorICoKKyAqIElmIG9wZW5wdHkoKSBpcyBzdXBwb3J0ZWQsIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBhcmUgdGl0bGVzIGZvcgorICogdGhlIHdpbmRvd3Mgc2hvd2luZyBlYWNoIHNjcmVlbidzIGRhdGEuCisgKgorICogSWYgb3BlbnB0eSgpIGlzIG5vdCBzdXBwb3J0ZWQsIHlvdSBtdXN0IGludm9rZSB0aGUgcHJvZ3JhbSBieSBzcGVjaWZ5aW5nCisgKiBhbm90aGVyIHRlcm1pbmFsIG9uIHRoZSBzYW1lIG1hY2hpbmUgYnkgc3BlY2lmeWluZyBpdHMgZGV2aWNlLCBlLmcuLAorICoJZGl0dG8gL2Rldi90dHlwMQorICovCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2lmZGVmIFVTRV9QVEhSRUFEUworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisjaWZkZWYgVVNFX1hURVJNX1BUWQorI2luY2x1ZGUgVVNFX09QRU5QVFlfSEVBREVSCisjZW5kaWYKKworI2RlZmluZSBNQVhfRklGTyAyNTYKKworI2RlZmluZSBUSElTX0ZJRk8obikgKChuKSAlIE1BWF9GSUZPKQorI2RlZmluZSBORVhUX0ZJRk8obikgVEhJU19GSUZPKChuKSArIDEpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBsb25nIHNlcXVlbmNlOworICAgIGludCBoZWFkOworICAgIGludCB0YWlsOworICAgIGludCBkYXRhW01BWF9GSUZPXTsKK30gRklGTzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIGxvbmcgc2VxdWVuY2U7Cit9IFBFRUs7CisKKy8qCisgKiBEYXRhICJvd25lZCIgZm9yIGEgc2luZ2xlIHNjcmVlbi4gIEVhY2ggc2NyZWVuIGlzIGRpdmlkZWQgaW50byB3aW5kb3dzIHRoYXQKKyAqIHNob3cgdGhlIHRleHQgcmVhZCBmcm9tIGVhY2ggdGVybWluYWwuICBJbnB1dCBmcm9tIGEgZ2l2ZW4gc2NyZWVuIHdpbGwgYWxzbworICogYmUgcmVhZCBpbnRvIG9uZSB3aW5kb3cgcGVyIHNjcmVlbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEZJTEUgKmlucHV0OworICAgIEZJTEUgKm91dHB1dDsKKyAgICBTQ1JFRU4gKnNjcmVlbjsJCS8qIHRoaXMgc2NyZWVuIC0gY3Vyc2VzIGludGVybmFsIGRhdGEgKi8KKyAgICBpbnQgd2hpY2gxOwkJCS8qIHRoaXMgc2NyZWVuJ3MgaW5kZXggaW4gRElUVE9bXSBhcnJheSAqLworICAgIGludCBsZW5ndGg7CQkJLyogbGVuZ3RoIG9mIHdpbmRvd3NbXSBhbmQgcGVla3NbXSAqLworICAgIGNoYXIgKip0aXRsZXM7CQkvKiBwZXItd2luZG93IHRpdGxlcyAqLworICAgIFdJTkRPVyAqKnBhcmVudHM7CQkvKiBkaXNwbGF5IGJveGVzIGFyb3VuZCBlYWNoIHNjcmVlbidzIGRhdGEgKi8KKyAgICBXSU5ET1cgKip3aW5kb3dzOwkJLyogZGlzcGxheSBkYXRhIGZyb20gZWFjaCBzY3JlZW4gKi8KKyAgICBQRUVLICpwZWVrczsJCS8qIGluZGljZXMgZm9yIGVhY2ggc2NyZWVuJ3MgZmlmbyAqLworICAgIEZJRk8gZmlmbzsJCQkvKiBmaWZvIGZvciB0aGlzIHNjcmVlbiAqLworI2lmZGVmIFVTRV9QVEhSRUFEUworICAgIHB0aHJlYWRfdCB0aHJlYWQ7CisjZW5kaWYKK30gRElUVE87CisKKy8qCisgKiBTdHJ1Y3R1cmUgdXNlZCB0byBwYXNzIG11bHRpcGxlIHBhcmFtZXRlcnMgdmlhIHRoZSB1c2Vfc2NyZWVuKCkKKyAqIHNpbmdsZS1wYXJhbWV0ZXIgaW50ZXJmYWNlLgorICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHNvdXJjZTsJCQkvKiB3aGljaCBzY3JlZW4gZGlkIGNoYXJhY3RlciBjb21lIGZyb20gKi8KKyAgICBpbnQgdGFyZ2V0OwkJCS8qIHdoaWNoIHNjcmVlbiBpcyBjaGFyYWN0ZXIgZ29pbmcgdG8gKi8KKyAgICBESVRUTyAqZGl0dG87CQkvKiBkYXRhIGZvciBhbGwgc2NyZWVucyAqLworfSBEREFUQTsKKworc3RhdGljIHZvaWQgZmFpbGVkKGNvbnN0IGNoYXIgKikgR0NDX05PUkVUVVJOOworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkgR0NDX05PUkVUVVJOOworCitzdGF0aWMgdm9pZAorZmFpbGVkKGNvbnN0IGNoYXIgKnMpCit7CisgICAgcGVycm9yKHMpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGRpdHRvIFt0ZXJtaW5hbDEgLi4uXVxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworLyogQWRkIHRvIHRoZSBoZWFkIG9mIHRoZSBmaWZvLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cuICovCitzdGF0aWMgdm9pZAorcHV0X2ZpZm8oRklGTyAqIGZpZm8sIGludCB2YWx1ZSkKK3sKKyAgICBpbnQgbmV4dCA9IE5FWFRfRklGTyhmaWZvLT5oZWFkKTsKKyAgICBpZiAobmV4dCA9PSBmaWZvLT50YWlsKQorCWZpZm8tPnRhaWwgPSBORVhUX0ZJRk8oZmlmby0+dGFpbCk7CisgICAgZmlmby0+ZGF0YVtuZXh0XSA9IHZhbHVlOworICAgIGZpZm8tPmhlYWQgPSBuZXh0OworICAgIGZpZm8tPnNlcXVlbmNlICs9IDE7Cit9CisKKy8qIEdldCBkYXRhIGZyb20gdGhlIHRhaWwgKG9sZGVzdCBwYXJ0KSBvZiB0aGUgZmlmbywgcmV0dXJuaW5nIC0xIGlmIG5vIGRhdGEuCisgKiBTaW5jZSBlYWNoIHNjcmVlbiBjYW4gcGVlayBpbnRvIHRoZSBmaWZvLCB3ZSBkbyBub3QgdXBkYXRlIHRoZSB0YWlsIGluZGV4LAorICogYnV0IG1vZGlmeSB0aGUgcGVlay1pbmRleC4KKyAqCisgKiBGSVhNRSAtIHRlc3Qvd29ya2Fyb3VuZCBmb3IgY2FzZSB3aGVyZSBmaWZvIGdldHMgbW9yZSB0aGFuIGEgYnVmZmVyCisgKiBhaGVhZCBvZiBwZWVrLgorICovCitzdGF0aWMgaW50CitwZWVrX2ZpZm8oRklGTyAqIGZpZm8sIFBFRUsgKiBwZWVrKQoreworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBpZiAocGVlay0+c2VxdWVuY2UgPCBmaWZvLT5zZXF1ZW5jZSkgeworCXJlc3VsdCA9IGZpZm8tPmRhdGFbVEhJU19GSUZPKHBlZWstPnNlcXVlbmNlKV07CisJcGVlay0+c2VxdWVuY2UgKz0gMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEZJTEUgKgorb3Blbl90dHkoY2hhciAqcGF0aCkKK3sKKyAgICBGSUxFICpmcDsKKyNpZmRlZiBVU0VfWFRFUk1fUFRZCisgICAgaW50IGFtYXN0ZXI7CisgICAgaW50IGFzbGF2ZTsKKyAgICBjaGFyIHNsYXZlX25hbWVbMTAyNF07CisgICAgY2hhciBzX29wdGlvbltzaXplb2Yoc2xhdmVfbmFtZSkgKyA4MF07CisKKyAgICBpZiAob3BlbnB0eSgmYW1hc3RlciwgJmFzbGF2ZSwgc2xhdmVfbmFtZSwgMCwgMCkgIT0gMAorCXx8IHN0cmxlbihzbGF2ZV9uYW1lKSA+IHNpemVvZihzbGF2ZV9uYW1lKSAtIDEpCisJZmFpbGVkKCJvcGVucHR5Iik7CisgICAgaWYgKHN0cnJjaHIoc2xhdmVfbmFtZSwgJy8nKSA9PSAwKSB7CisJZXJybm8gPSBFSVNESVI7CisJZmFpbGVkKHNsYXZlX25hbWUpOworICAgIH0KKyAgICBzcHJpbnRmKHNfb3B0aW9uLCAiLVMlcy8lZCIsIHNsYXZlX25hbWUsIGFzbGF2ZSk7CisgICAgaWYgKGZvcmsoKSkgeworCWV4ZWNscCgieHRlcm0iLCAieHRlcm0iLCBzX29wdGlvbiwgIi10aXRsZSIsIHBhdGgsIChjaGFyICopIDApOworCV9leGl0KDApOworICAgIH0KKyAgICBmcCA9IGZkb3BlbihhbWFzdGVyLCAicisiKTsKKyAgICBpZiAoZnAgPT0gMCkKKwlmYWlsZWQocGF0aCk7CisjZWxzZQorICAgIHN0cnVjdCBzdGF0IHNiOworCisgICAgaWYgKHN0YXQocGF0aCwgJnNiKSA8IDApCisJZmFpbGVkKHBhdGgpOworICAgIGlmICgoc2Iuc3RfbW9kZSAmIFNfSUZNVCkgIT0gU19JRkNIUikgeworCWVycm5vID0gRU5PVFRZOworCWZhaWxlZChwYXRoKTsKKyAgICB9CisgICAgZnAgPSBmb3BlbihwYXRoLCAicisiKTsKKyAgICBpZiAoZnAgPT0gMCkKKwlmYWlsZWQocGF0aCk7CisgICAgcHJpbnRmKCJvcGVuZWQgJXNcbiIsIHBhdGgpOworI2VuZGlmCisgICAgYXNzZXJ0KGZwICE9IDApOworICAgIHJldHVybiBmcDsKK30KKworc3RhdGljIHZvaWQKK2luaXRfc2NyZWVuKAorI2lmIEhBVkVfVVNFX1dJTkRPVworCSAgICAgICBTQ1JFRU4gKnNwIEdDQ19VTlVTRUQsCisjZW5kaWYKKwkgICAgICAgdm9pZCAqYXJnKQoreworICAgIERJVFRPICp0YXJnZXQgPSAoRElUVE8gKikgYXJnOworICAgIGludCBoaWdoLCB3aWRlOworICAgIGludCBrOworCisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisgICAgc2Nyb2xsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBib3goc3Rkc2NyLCAwLCAwKTsKKworICAgIHRhcmdldC0+cGFyZW50cyA9IHR5cGVDYWxsb2MoV0lORE9XICosIChzaXplX3QpIHRhcmdldC0+bGVuZ3RoKTsKKyAgICB0YXJnZXQtPndpbmRvd3MgPSB0eXBlQ2FsbG9jKFdJTkRPVyAqLCAoc2l6ZV90KSB0YXJnZXQtPmxlbmd0aCk7CisgICAgdGFyZ2V0LT5wZWVrcyA9IHR5cGVDYWxsb2MoUEVFSywgKHNpemVfdCkgdGFyZ2V0LT5sZW5ndGgpOworCisgICAgaGlnaCA9IChMSU5FUyAtIDIpIC8gdGFyZ2V0LT5sZW5ndGg7CisgICAgd2lkZSA9IChDT0xTIC0gMik7CisgICAgZm9yIChrID0gMDsgayA8IHRhcmdldC0+bGVuZ3RoOyArK2spIHsKKwlXSU5ET1cgKm91dGVyID0gbmV3d2luKGhpZ2gsIHdpZGUsIDEgKyAoaGlnaCAqIGspLCAxKTsKKwlXSU5ET1cgKmlubmVyID0gZGVyd2luKG91dGVyLCBoaWdoIC0gMiwgd2lkZSAtIDIsIDEsIDEpOworCisJYm94KG91dGVyLCAwLCAwKTsKKwlNdldBZGRTdHIob3V0ZXIsIDAsIDIsIHRhcmdldC0+dGl0bGVzW2tdKTsKKwl3bm91dHJlZnJlc2gob3V0ZXIpOworCisJc2Nyb2xsb2soaW5uZXIsIFRSVUUpOworCWtleXBhZChpbm5lciwgVFJVRSk7CisjaWZuZGVmIFVTRV9QVEhSRUFEUworCW5vZGVsYXkoaW5uZXIsIFRSVUUpOworI2VuZGlmCisKKwl0YXJnZXQtPnBhcmVudHNba10gPSBvdXRlcjsKKwl0YXJnZXQtPndpbmRvd3Nba10gPSBpbm5lcjsKKyAgICB9CisgICAgZG91cGRhdGUoKTsKK30KKworc3RhdGljIHZvaWQKK29wZW5fc2NyZWVuKERJVFRPICogdGFyZ2V0LCBjaGFyICoqc291cmNlLCBpbnQgbGVuZ3RoLCBpbnQgd2hpY2gxKQoreworICAgIGlmICh3aGljaDEgIT0gMCkgeworCXRhcmdldC0+aW5wdXQgPQorCSAgICB0YXJnZXQtPm91dHB1dCA9IG9wZW5fdHR5KHNvdXJjZVt3aGljaDFdKTsKKyAgICB9IGVsc2UgeworCXRhcmdldC0+aW5wdXQgPSBzdGRpbjsKKwl0YXJnZXQtPm91dHB1dCA9IHN0ZG91dDsKKyAgICB9CisKKyAgICB0YXJnZXQtPndoaWNoMSA9IHdoaWNoMTsKKyAgICB0YXJnZXQtPnRpdGxlcyA9IHNvdXJjZTsKKyAgICB0YXJnZXQtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICB0YXJnZXQtPmZpZm8uaGVhZCA9IC0xOworICAgIHRhcmdldC0+c2NyZWVuID0gbmV3dGVybSgoY2hhciAqKSAwLAkvKiBhc3N1bWUgJFRFUk0gaXMgdGhlIHNhbWUgKi8KKwkJCSAgICAgdGFyZ2V0LT5vdXRwdXQsCisJCQkgICAgIHRhcmdldC0+aW5wdXQpOworCisgICAgaWYgKHRhcmdldC0+c2NyZWVuID09IDApCisJZmFpbGVkKCJuZXd0ZXJtIik7CisKKyAgICAodm9pZCkgVVNJTkdfU0NSRUVOKHRhcmdldC0+c2NyZWVuLCBpbml0X3NjcmVlbiwgdGFyZ2V0KTsKK30KKworc3RhdGljIGludAorY2xvc2Vfc2NyZWVuKAorI2lmIEhBVkVfVVNFX1dJTkRPVworCQlTQ1JFRU4gKnNwIEdDQ19VTlVTRUQsCisjZW5kaWYKKwkJdm9pZCAqYXJnIEdDQ19VTlVTRUQpCit7CisjaWYgSEFWRV9VU0VfV0lORE9XCisgICAgKHZvaWQpIHNwOworI2VuZGlmCisgICAgKHZvaWQpIGFyZzsKKyAgICByZXR1cm4gZW5kd2luKCk7Cit9CisKKy8qCisgKiBSZWFkIGRhdGEgZnJvbSB0aGUgJ3NvdXJjZScgc2NyZWVuLgorICovCitzdGF0aWMgaW50CityZWFkX3NjcmVlbigKKyNpZiBIQVZFX1VTRV9XSU5ET1cKKwkgICAgICAgU0NSRUVOICpzcCBHQ0NfVU5VU0VELAorI2VuZGlmCisJICAgICAgIHZvaWQgKmFyZykKK3sKKyAgICBEREFUQSAqZGF0YSA9IChEREFUQSAqKSBhcmc7CisgICAgRElUVE8gKmRpdHRvID0gJihkYXRhLT5kaXR0b1tkYXRhLT5zb3VyY2VdKTsKKyAgICBXSU5ET1cgKndpbiA9IGRpdHRvLT53aW5kb3dzW2RhdGEtPnNvdXJjZV07CisgICAgaW50IGNoID0gd2dldGNoKHdpbik7CisKKyAgICBpZiAoY2ggPiAwICYmIGNoIDwgMjU2KQorCXB1dF9maWZvKCYoZGl0dG8tPmZpZm8pLCBjaCk7CisgICAgZWxzZQorCWNoID0gRVJSOworCisgICAgcmV0dXJuIGNoOworfQorCisvKgorICogV3JpdGUgYWxsIG9mIHRoZSBkYXRhIHRoYXQncyBpbiBmaWZvcyBmb3IgdGhlICd0YXJnZXQnIHNjcmVlbi4KKyAqLworc3RhdGljIGludAord3JpdGVfc2NyZWVuKAorI2lmIEhBVkVfVVNFX1dJTkRPVworCQlTQ1JFRU4gKnNwIEdDQ19VTlVTRUQsCisjZW5kaWYKKwkJdm9pZCAqYXJnIEdDQ19VTlVTRUQpCit7CisgICAgRERBVEEgKmRhdGEgPSAoRERBVEEgKikgYXJnOworICAgIERJVFRPICpkaXR0byA9ICYoZGF0YS0+ZGl0dG9bZGF0YS0+dGFyZ2V0XSk7CisgICAgYm9vbCBjaGFuZ2VkID0gRkFMU0U7CisgICAgaW50IHdoaWNoOworCisgICAgZm9yICh3aGljaCA9IDA7IHdoaWNoIDwgZGl0dG8tPmxlbmd0aDsgKyt3aGljaCkgeworCVdJTkRPVyAqd2luID0gZGl0dG8tPndpbmRvd3Nbd2hpY2hdOworCUZJRk8gKmZpZm8gPSAmKGRhdGEtPmRpdHRvW3doaWNoXS5maWZvKTsKKwlQRUVLICpwZWVrID0gJihkaXR0by0+cGVla3Nbd2hpY2hdKTsKKwlpbnQgY2g7CisKKwl3aGlsZSAoKGNoID0gcGVla19maWZvKGZpZm8sIHBlZWspKSA+IDApIHsKKwkgICAgY2hhbmdlZCA9IFRSVUU7CisKKwkgICAgd2FkZGNoKHdpbiwgKGNodHlwZSkgY2gpOworCSAgICB3bm91dHJlZnJlc2god2luKTsKKwl9CisgICAgfQorCisgICAgaWYgKGNoYW5nZWQpCisJZG91cGRhdGUoKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2RpdHRvKERJVFRPICogZGF0YSwgaW50IGNvdW50LCBEREFUQSAqIGRkYXRhKQoreworICAgIGludCBuOworCisgICAgKHZvaWQpIGRhdGE7CisgICAgZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKKwlkZGF0YS0+dGFyZ2V0ID0gbjsKKwlVU0lOR19TQ1JFRU4oZGF0YVtuXS5zY3JlZW4sIHdyaXRlX3NjcmVlbiwgKHZvaWQgKikgZGRhdGEpOworICAgIH0KK30KKworI2lmZGVmIFVTRV9QVEhSRUFEUworc3RhdGljIHZvaWQgKgoraGFuZGxlX3NjcmVlbih2b2lkICphcmcpCit7CisgICAgRERBVEEgZGRhdGE7CisgICAgaW50IGNoOworCisgICAgbWVtc2V0KCZkZGF0YSwgMCwgc2l6ZW9mKGRkYXRhKSk7CisgICAgZGRhdGEuZGl0dG8gPSAoRElUVE8gKikgYXJnOworICAgIGRkYXRhLnNvdXJjZSA9IGRkYXRhLmRpdHRvLT53aGljaDE7CisgICAgZGRhdGEuZGl0dG8gLT0gZGRhdGEuc291cmNlOwkvKiAtPiBiYXNlIG9mIGFycmF5ICovCisKKyAgICBmb3IgKDs7KSB7CisJY2ggPSByZWFkX3NjcmVlbihkZGF0YS5kaXR0by0+c2NyZWVuLCAmZGRhdGEpOworCWlmIChjaCA9PSBDVFJMKCdEJykpIHsKKwkgICAgaW50IGxhdGVyID0gKGRkYXRhLnNvdXJjZSA/IGRkYXRhLnNvdXJjZSA6IC0xKTsKKwkgICAgaW50IGo7CisKKwkgICAgZm9yIChqID0gZGRhdGEuZGl0dG8tPmxlbmd0aCAtIDE7IGogPiAwOyAtLWopIHsKKwkJaWYgKGogIT0gbGF0ZXIpIHsKKwkJICAgIHB0aHJlYWRfY2FuY2VsKGRkYXRhLmRpdHRvW2pdLnRocmVhZCk7CisJCX0KKwkgICAgfQorCSAgICBpZiAobGF0ZXIgPiAwKSB7CisJCXB0aHJlYWRfY2FuY2VsKGRkYXRhLmRpdHRvW2xhdGVyXS50aHJlYWQpOworCSAgICB9CisJICAgIGJyZWFrOworCX0KKwlzaG93X2RpdHRvKGRkYXRhLmRpdHRvLCBkZGF0YS5kaXR0by0+bGVuZ3RoLCAmZGRhdGEpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgajsKKyAgICBESVRUTyAqZGF0YTsKKyNpZm5kZWYgVVNFX1BUSFJFQURTCisgICAgaW50IGNvdW50OworI2VuZGlmCisKKyAgICBpZiAoYXJnYyA8PSAxKQorCXVzYWdlKCk7CisKKyAgICBpZiAoKGRhdGEgPSB0eXBlQ2FsbG9jKERJVFRPLCAoc2l6ZV90KSBhcmdjKSkgPT0gMCkKKwlmYWlsZWQoImNhbGxvYyBkYXRhIik7CisKKyAgICBhc3NlcnQoZGF0YSAhPSAwKTsKKworICAgIGZvciAoaiA9IDA7IGogPCBhcmdjOyBqKyspIHsKKwlvcGVuX3NjcmVlbigmZGF0YVtqXSwgYXJndiwgYXJnYywgaik7CisgICAgfQorCisjaWZkZWYgVVNFX1BUSFJFQURTCisgICAgLyoKKyAgICAgKiBGb3IgbXVsdGktdGhyZWFkZWQgb3BlcmF0aW9uLCBzZXQgdXAgYSByZWFkZXIgZm9yIGVhY2ggb2YgdGhlIHNjcmVlbnMuCisgICAgICogVGhhdCB1c2VzIGJsb2NraW5nIEkvTyByYXRoZXIgdGhhbiBwb2xsaW5nIGZvciBpbnB1dCwgc28gbm8gY2FsbHMgdG8KKyAgICAgKiBuYXBtcygpIGFyZSBuZWVkZWQuCisgICAgICovCisgICAgZm9yIChqID0gMDsgaiA8IGFyZ2M7IGorKykgeworCSh2b2lkKSBwdGhyZWFkX2NyZWF0ZSgmKGRhdGFbal0udGhyZWFkKSwgTlVMTCwgaGFuZGxlX3NjcmVlbiwgJmRhdGFbal0pOworICAgIH0KKyAgICBwdGhyZWFkX2pvaW4oZGF0YVsxXS50aHJlYWQsIE5VTEwpOworI2Vsc2UKKyAgICAvKgorICAgICAqIExvb3AsIHJlYWRpbmcgY2hhcmFjdGVycyBmcm9tIGFueSBvZiB0aGUgaW5wdXRzIGFuZCB3cml0aW5nIHRvIGFsbAorICAgICAqIG9mIHRoZSBzY3JlZW5zLgorICAgICAqLworICAgIGZvciAoY291bnQgPSAwOzsgKytjb3VudCkgeworCUREQVRBIGRkYXRhOworCWludCBjaDsKKwlpbnQgd2hpY2ggPSAoY291bnQgJSBhcmdjKTsKKworCW5hcG1zKDIwKTsKKworCWRkYXRhLnNvdXJjZSA9IHdoaWNoOworCWRkYXRhLmRpdHRvID0gZGF0YTsKKworCWNoID0gVVNJTkdfU0NSRUVOKGRhdGFbd2hpY2hdLnNjcmVlbiwgcmVhZF9zY3JlZW4sICZkZGF0YSk7CisJaWYgKGNoID09IENUUkwoJ0QnKSkgeworCSAgICBicmVhazsKKwl9IGVsc2UgaWYgKGNoICE9IEVSUikgeworCSAgICBzaG93X2RpdHRvKGRhdGEsIGFyZ2MsICZkZGF0YSk7CisJfQorICAgIH0KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBDbGVhbnVwIGFuZCBleGl0CisgICAgICovCisgICAgZm9yIChqID0gYXJnYyAtIDE7IGogPj0gMDsgai0tKSB7CisJVVNJTkdfU0NSRUVOKGRhdGFbal0uc2NyZWVuLCBjbG9zZV9zY3JlZW4sIDApOworCWZwcmludGYoZGF0YVtqXS5vdXRwdXQsICIqKkNsb3NlZFxyXG4iKTsKKworCS8qCisJICogQ2xvc2luZyBiZWZvcmUgYSBkZWxzY3JlZW4oKSBoZWxwcyBuY3Vyc2VzIGRldGVybWluZSB0aGF0IHRoZXJlCisJICogaXMgbm8gdmFsaWQgb3V0cHV0IGJ1ZmZlciwgYW5kIGNhbiByZW1vdmUgdGhlIHNldGJ1ZigpIGRhdGEuCisJICovCisJZmZsdXNoKGRhdGFbal0ub3V0cHV0KTsKKwlmY2xvc2UoZGF0YVtqXS5vdXRwdXQpOworCWRlbHNjcmVlbihkYXRhW2pdLnNjcmVlbik7CisgICAgfQorICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2RvdHMuYyBiL3Rlc3QvZG90cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NGQ4ODAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2RvdHMuYwpAQCAtMCwwICsxLDE2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDExLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSA8ZGlja2V5QGNsYXJrLm5ldD4gMTk5OQorICoKKyAqICRJZDogZG90cy5jLHYgMS4yNSAyMDEzLzA5LzI4IDIyOjEyOjA5IHRvbSBFeHAgJAorICoKKyAqIEEgc2ltcGxlIGRlbW8gb2YgdGhlIHRlcm1pbmZvIGludGVyZmFjZS4KKyAqLworI2RlZmluZSBVU0VfVElORk8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfU0VUVVBURVJNCisKKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNkZWZpbmUgdmFsaWQocykgKChzICE9IDApICYmIHMgIT0gKGNoYXIgKiktMSkKKworc3RhdGljIGJvb2wgaW50ZXJydXB0ZWQgPSBGQUxTRTsKK3N0YXRpYyBsb25nIHRvdGFsX2NoYXJzID0gMDsKK3N0YXRpYyB0aW1lX3Qgc3RhcnRlZDsKKworc3RhdGljCitUUFVUU19QUk9UTyhvdXRjLCBjKQoreworICAgIGludCByYyA9IGM7CisKKyAgICBpZiAoaW50ZXJydXB0ZWQpIHsKKwljaGFyIHRtcCA9IChjaGFyKSBjOworCWlmICh3cml0ZShTVERPVVRfRklMRU5PLCAmdG1wLCAoc2l6ZV90KSAxKSA9PSAtMSkKKwkgICAgcmMgPSBFT0Y7CisgICAgfSBlbHNlIHsKKwlyYyA9IHB1dGMoYywgc3Rkb3V0KTsKKyAgICB9CisgICAgVFBVVFNfUkVUVVJOKHJjKTsKK30KKworc3RhdGljIGJvb2wKK291dHMoY29uc3QgY2hhciAqcykKK3sKKyAgICBpZiAodmFsaWQocykpIHsKKwl0cHV0cyhzLCAxLCBvdXRjKTsKKwlyZXR1cm4gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lkKQoreworICAgIG91dHMoZXhpdF9hdHRyaWJ1dGVfbW9kZSk7CisgICAgaWYgKCFvdXRzKG9yaWdfY29sb3JzKSkKKwlvdXRzKG9yaWdfcGFpcik7CisgICAgb3V0cyhjbGVhcl9zY3JlZW4pOworICAgIG91dHMoY3Vyc29yX25vcm1hbCk7CisKKyAgICBwcmludGYoIlxuXG4lbGQgdG90YWwgY2hhcnMsIHJhdGUgJS4yZi9zZWNcbiIsCisJICAgdG90YWxfY2hhcnMsCisJICAgKChkb3VibGUpICh0b3RhbF9jaGFycykgLyAoZG91YmxlKSAodGltZSgodGltZV90ICopIDApIC0gc3RhcnRlZCkpKTsKK30KKworc3RhdGljIHZvaWQKK29uc2lnKGludCBuIEdDQ19VTlVTRUQpCit7CisgICAgaW50ZXJydXB0ZWQgPSBUUlVFOworfQorCitzdGF0aWMgZG91YmxlCityYW5mKHZvaWQpCit7CisgICAgbG9uZyByID0gKHJhbmQoKSAmIDA3Nzc3Nyk7CisgICAgcmV0dXJuICgoZG91YmxlKSByIC8gMzI3NjguKTsKK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsCisgICAgIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgaW50IHgsIHksIHosIHA7CisgICAgZG91YmxlIHI7CisgICAgZG91YmxlIGM7CisgICAgaW50IG15X2NvbG9yczsKKworICAgIENBVENIQUxMKG9uc2lnKTsKKworICAgIHNyYW5kKCh1bnNpZ25lZCkgdGltZSgwKSk7CisgICAgc2V0dXB0ZXJtKChjaGFyICopIDAsIDEsIChpbnQgKikgMCk7CisgICAgb3V0cyhjbGVhcl9zY3JlZW4pOworICAgIG91dHMoY3Vyc29yX2ludmlzaWJsZSk7CisgICAgbXlfY29sb3JzID0gbWF4X2NvbG9yczsKKyAgICBpZiAobXlfY29sb3JzID4gMSkgeworCWlmICghdmFsaWQoc2V0X2FfZm9yZWdyb3VuZCkKKwkgICAgfHwgIXZhbGlkKHNldF9hX2JhY2tncm91bmQpCisJICAgIHx8ICghdmFsaWQob3JpZ19jb2xvcnMpICYmICF2YWxpZChvcmlnX3BhaXIpKSkKKwkgICAgbXlfY29sb3JzID0gLTE7CisgICAgfQorCisgICAgciA9IChkb3VibGUpIChsaW5lcyAtIDQpOworICAgIGMgPSAoZG91YmxlKSAoY29sdW1ucyAtIDQpOworICAgIHN0YXJ0ZWQgPSB0aW1lKCh0aW1lX3QgKikgMCk7CisKKyAgICB3aGlsZSAoIWludGVycnVwdGVkKSB7CisJeCA9IChpbnQpIChjICogcmFuZigpKSArIDI7CisJeSA9IChpbnQpIChyICogcmFuZigpKSArIDI7CisJcCA9IChyYW5mKCkgPiAwLjkpID8gJyonIDogJyAnOworCisJdHB1dHModHBhcm0zKGN1cnNvcl9hZGRyZXNzLCB5LCB4KSwgMSwgb3V0Yyk7CisJaWYgKG15X2NvbG9ycyA+IDApIHsKKwkgICAgeiA9IChpbnQpIChyYW5mKCkgKiBteV9jb2xvcnMpOworCSAgICBpZiAocmFuZigpID4gMC4wMSkgeworCQl0cHV0cyh0cGFybTIoc2V0X2FfZm9yZWdyb3VuZCwgeiksIDEsIG91dGMpOworCSAgICB9IGVsc2UgeworCQl0cHV0cyh0cGFybTIoc2V0X2FfYmFja2dyb3VuZCwgeiksIDEsIG91dGMpOworCQluYXBtcygxKTsKKwkgICAgfQorCX0gZWxzZSBpZiAodmFsaWQoZXhpdF9hdHRyaWJ1dGVfbW9kZSkKKwkJICAgJiYgdmFsaWQoZW50ZXJfcmV2ZXJzZV9tb2RlKSkgeworCSAgICBpZiAocmFuZigpIDw9IDAuMDEpIHsKKwkJb3V0cygocmFuZigpID4gMC42KQorCQkgICAgID8gZW50ZXJfcmV2ZXJzZV9tb2RlCisJCSAgICAgOiBleGl0X2F0dHJpYnV0ZV9tb2RlKTsKKwkJbmFwbXMoMSk7CisJICAgIH0KKwl9CisJb3V0YyhwKTsKKwlmZmx1c2goc3Rkb3V0KTsKKwkrK3RvdGFsX2NoYXJzOworICAgIH0KKyAgICBjbGVhbnVwKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwKKyAgICAgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0ZXJtaW5mb1xuIik7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2RvdHNfY3Vyc2VzLmMgYi90ZXN0L2RvdHNfY3Vyc2VzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0NDI4MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZG90c19jdXJzZXMuYwpAQCAtMCwwICsxLDE1MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleQorICoKKyAqICRJZDogZG90c19jdXJzZXMuYyx2IDEuMyAyMDE0LzA4LzA5IDIyOjI4OjQyIHRvbSBFeHAgJAorICoKKyAqIEEgc2ltcGxlIGRlbW8gb2YgdGhlIGN1cnNlcyBpbnRlcmZhY2UgdXNlZCBmb3IgY29tcGFyaXNvbiB3aXRoIHRlcm1jYXAuCisgKi8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKQorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2RlZmluZSB2YWxpZChzKSAoKHMgIT0gMCkgJiYgcyAhPSAoY2hhciAqKS0xKQorCitzdGF0aWMgYm9vbCBpbnRlcnJ1cHRlZCA9IEZBTFNFOworc3RhdGljIGxvbmcgdG90YWxfY2hhcnMgPSAwOworc3RhdGljIHRpbWVfdCBzdGFydGVkOworCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lkKQoreworICAgIGVuZHdpbigpOworCisgICAgcHJpbnRmKCJcblxuJWxkIHRvdGFsIGNoYXJzLCByYXRlICUuMmYvc2VjXG4iLAorCSAgIHRvdGFsX2NoYXJzLAorCSAgICgoZG91YmxlKSAodG90YWxfY2hhcnMpIC8gKGRvdWJsZSkgKHRpbWUoKHRpbWVfdCAqKSAwKSAtIHN0YXJ0ZWQpKSk7Cit9CisKK3N0YXRpYyB2b2lkCitvbnNpZyhpbnQgbiBHQ0NfVU5VU0VEKQoreworICAgIGludGVycnVwdGVkID0gVFJVRTsKK30KKworc3RhdGljIGRvdWJsZQorcmFuZih2b2lkKQoreworICAgIGxvbmcgciA9IChyYW5kKCkgJiAwNzc3NzcpOworICAgIHJldHVybiAoKGRvdWJsZSkgciAvIDMyNzY4Lik7Cit9CisKK3N0YXRpYyBpbnQKK215cGFpcihpbnQgZmcsIGludCBiZykKK3sKKyAgICBpbnQgcGFpciA9IChmZyAqIENPTE9SUykgKyBiZzsKKyAgICByZXR1cm4gKHBhaXIgPj0gQ09MT1JfUEFJUlMpID8gLTEgOiBwYWlyOworfQorCitzdGF0aWMgdm9pZAorc2V0X2NvbG9ycyhpbnQgZmcsIGludCBiZykKK3sKKyAgICBpbnQgcGFpciA9IG15cGFpcihmZywgYmcpOworICAgIGlmIChwYWlyID4gMCkgeworCWF0dHJvbihDT0xPUl9QQUlSKG15cGFpcihmZywgYmcpKSk7CisgICAgfQorfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwKKyAgICAgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgeCwgeSwgeiwgcDsKKyAgICBpbnQgZmcsIGJnOworICAgIGRvdWJsZSByOworICAgIGRvdWJsZSBjOworCisgICAgQ0FUQ0hBTEwob25zaWcpOworCisgICAgc3JhbmQoKHVuc2lnbmVkKSB0aW1lKDApKTsKKworICAgIGluaXRzY3IoKTsKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJc3RhcnRfY29sb3IoKTsKKwlmb3IgKGZnID0gMDsgZmcgPCBDT0xPUlM7IGZnKyspIHsKKwkgICAgZm9yIChiZyA9IDA7IGJnIDwgQ09MT1JTOyBiZysrKSB7CisJCWludCBwYWlyID0gbXlwYWlyKGZnLCBiZyk7CisJCWlmIChwYWlyID4gMCkKKwkJICAgIGluaXRfcGFpcigoc2hvcnQpIHBhaXIsIChzaG9ydCkgZmcsIChzaG9ydCkgYmcpOworCSAgICB9CisJfQorICAgIH0KKworICAgIHIgPSAoZG91YmxlKSAoTElORVMgLSA0KTsKKyAgICBjID0gKGRvdWJsZSkgKENPTFMgLSA0KTsKKyAgICBzdGFydGVkID0gdGltZSgodGltZV90ICopIDApOworCisgICAgZmcgPSBDT0xPUl9XSElURTsKKyAgICBiZyA9IENPTE9SX0JMQUNLOworICAgIHdoaWxlICghaW50ZXJydXB0ZWQpIHsKKwl4ID0gKGludCkgKGMgKiByYW5mKCkpICsgMjsKKwl5ID0gKGludCkgKHIgKiByYW5mKCkpICsgMjsKKwlwID0gKHJhbmYoKSA+IDAuOSkgPyAnKicgOiAnICc7CisKKwltb3ZlKHksIHgpOworCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgeiA9IChpbnQpIChyYW5mKCkgKiBDT0xPUlMpOworCSAgICBpZiAocmFuZigpID4gMC4wMSkgeworCQlzZXRfY29sb3JzKGZnID0geiwgYmcpOworCQlhdHRyb24oQ09MT1JfUEFJUihteXBhaXIoZmcsIGJnKSkpOworCSAgICB9IGVsc2UgeworCQlzZXRfY29sb3JzKGZnLCBiZyA9IHopOworCQluYXBtcygxKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGlmIChyYW5mKCkgPD0gMC4wMSkgeworCQlpZiAocmFuZigpID4gMC42KSB7CisJCSAgICBhdHRyb24oQV9SRVZFUlNFKTsKKwkJfSBlbHNlIHsKKwkJICAgIGF0dHJvZmYoQV9SRVZFUlNFKTsKKwkJfQorCQluYXBtcygxKTsKKwkgICAgfQorCX0KKwlhZGRjaCgoY2h0eXBlKSBwKTsKKwlyZWZyZXNoKCk7CisJKyt0b3RhbF9jaGFyczsKKyAgICB9CisgICAgY2xlYW51cCgpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2RvdHNfbXZjdXIuYyBiL3Rlc3QvZG90c19tdmN1ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYjljNGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2RvdHNfbXZjdXIuYwpAQCAtMCwwICsxLDE3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5LDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSAtIDIwMDcKKyAqCisgKiAkSWQ6IGRvdHNfbXZjdXIuYyx2IDEuMTAgMjAxMy8wOS8yOCAyMjo0NDoxOCB0b20gRXhwICQKKyAqCisgKiBBIHNpbXBsZSBkZW1vIG9mIHRoZSB0ZXJtaW5mbyBpbnRlcmZhY2UsIGFuZCBtdmN1ci4KKyAqLworI2RlZmluZSBVU0VfVElORk8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfU0VUVVBURVJNCisKKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNkZWZpbmUgdmFsaWQocykgKChzICE9IDApICYmIHMgIT0gKGNoYXIgKiktMSkKKworc3RhdGljIGJvb2wgaW50ZXJydXB0ZWQgPSBGQUxTRTsKK3N0YXRpYyBsb25nIHRvdGFsX2NoYXJzID0gMDsKK3N0YXRpYyB0aW1lX3Qgc3RhcnRlZDsKKworc3RhdGljCitUUFVUU19QUk9UTyhvdXRjLCBjKQoreworICAgIGludCByYyA9IGM7CisKKyAgICBpZiAoaW50ZXJydXB0ZWQpIHsKKwljaGFyIHRtcCA9IChjaGFyKSBjOworCWlmICh3cml0ZShTVERPVVRfRklMRU5PLCAmdG1wLCAoc2l6ZV90KSAxKSA9PSAtMSkKKwkgICAgcmMgPSBFT0Y7CisgICAgfSBlbHNlIHsKKwlpZiAocHV0YyhjLCBzdGRvdXQpID09IEVPRikKKwkgICAgcmMgPSBFT0Y7CisgICAgfQorICAgIFRQVVRTX1JFVFVSTihyYyk7Cit9CisKK3N0YXRpYyBib29sCitvdXRzKGNvbnN0IGNoYXIgKnMpCit7CisgICAgaWYgKHZhbGlkKHMpKSB7CisJdHB1dHMocywgMSwgb3V0Yyk7CisJcmV0dXJuIFRSVUU7CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXAodm9pZCkKK3sKKyAgICBvdXRzKGV4aXRfYXR0cmlidXRlX21vZGUpOworICAgIGlmICghb3V0cyhvcmlnX2NvbG9ycykpCisJb3V0cyhvcmlnX3BhaXIpOworICAgIG91dHMoY2xlYXJfc2NyZWVuKTsKKyAgICBvdXRzKGN1cnNvcl9ub3JtYWwpOworCisgICAgcHJpbnRmKCJcblxuJWxkIHRvdGFsIGNoYXJzLCByYXRlICUuMmYvc2VjXG4iLAorCSAgIHRvdGFsX2NoYXJzLAorCSAgICgoZG91YmxlKSAodG90YWxfY2hhcnMpIC8gKGRvdWJsZSkgKHRpbWUoKHRpbWVfdCAqKSAwKSAtIHN0YXJ0ZWQpKSk7Cit9CisKK3N0YXRpYyB2b2lkCitvbnNpZyhpbnQgbiBHQ0NfVU5VU0VEKQoreworICAgIGludGVycnVwdGVkID0gVFJVRTsKK30KKworc3RhdGljIGRvdWJsZQorcmFuZih2b2lkKQoreworICAgIGxvbmcgciA9IChyYW5kKCkgJiAwNzc3NzcpOworICAgIHJldHVybiAoKGRvdWJsZSkgciAvIDMyNzY4Lik7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELAorICAgICBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCB4MCA9IDEsIHkwID0gMTsKKyAgICBpbnQgeCwgeSwgeiwgcDsKKyAgICBkb3VibGUgcjsKKyAgICBkb3VibGUgYzsKKyAgICBTQ1JFRU4gKnNwOworICAgIGludCBteV9jb2xvcnM7CisKKyAgICBDQVRDSEFMTChvbnNpZyk7CisKKyAgICBzcmFuZCgodW5zaWduZWQpIHRpbWUoMCkpOworICAgIHNwID0gbmV3dGVybSgoY2hhciAqKSAwLCBzdGRvdXQsIHN0ZGluKTsKKyAgICBvdXRzKGNsZWFyX3NjcmVlbik7CisgICAgb3V0cyhjdXJzb3JfaG9tZSk7CisgICAgb3V0cyhjdXJzb3JfaW52aXNpYmxlKTsKKyAgICBteV9jb2xvcnMgPSBtYXhfY29sb3JzOworICAgIGlmIChteV9jb2xvcnMgPiAxKSB7CisJaWYgKCF2YWxpZChzZXRfYV9mb3JlZ3JvdW5kKQorCSAgICB8fCAhdmFsaWQoc2V0X2FfYmFja2dyb3VuZCkKKwkgICAgfHwgKCF2YWxpZChvcmlnX2NvbG9ycykgJiYgIXZhbGlkKG9yaWdfcGFpcikpKQorCSAgICBteV9jb2xvcnMgPSAtMTsKKyAgICB9CisKKyAgICByID0gKGRvdWJsZSkgKGxpbmVzIC0gNCk7CisgICAgYyA9IChkb3VibGUpIChjb2x1bW5zIC0gNCk7CisgICAgc3RhcnRlZCA9IHRpbWUoKHRpbWVfdCAqKSAwKTsKKworICAgIHdoaWxlICghaW50ZXJydXB0ZWQpIHsKKwl4ID0gKGludCkgKGMgKiByYW5mKCkpICsgMjsKKwl5ID0gKGludCkgKHIgKiByYW5mKCkpICsgMjsKKwlwID0gKHJhbmYoKSA+IDAuOSkgPyAnKicgOiAnICc7CisKKwlpZiAobXZjdXIoeTAsIHgwLCB5LCB4KSAhPSBFUlIpIHsKKwkgICAgeDAgPSB4OworCSAgICB5MCA9IHk7CisJfQorCisJaWYgKG15X2NvbG9ycyA+IDApIHsKKwkgICAgeiA9IChpbnQpIChyYW5mKCkgKiBteV9jb2xvcnMpOworCSAgICBpZiAocmFuZigpID4gMC4wMSkgeworCQl0cHV0cyh0cGFybTIoc2V0X2FfZm9yZWdyb3VuZCwgeiksIDEsIG91dGMpOworCSAgICB9IGVsc2UgeworCQl0cHV0cyh0cGFybTIoc2V0X2FfYmFja2dyb3VuZCwgeiksIDEsIG91dGMpOworCQluYXBtcygxKTsKKwkgICAgfQorCX0gZWxzZSBpZiAodmFsaWQoZXhpdF9hdHRyaWJ1dGVfbW9kZSkKKwkJICAgJiYgdmFsaWQoZW50ZXJfcmV2ZXJzZV9tb2RlKSkgeworCSAgICBpZiAocmFuZigpIDw9IDAuMDEpIHsKKwkJb3V0cygocmFuZigpID4gMC42KQorCQkgICAgID8gZW50ZXJfcmV2ZXJzZV9tb2RlCisJCSAgICAgOiBleGl0X2F0dHJpYnV0ZV9tb2RlKTsKKwkJbmFwbXMoMSk7CisJICAgIH0KKwl9CisJb3V0YyhwKTsKKwkrK3gwOworCWZmbHVzaChzdGRvdXQpOworCSsrdG90YWxfY2hhcnM7CisgICAgfQorICAgIGNsZWFudXAoKTsKKyAgICBlbmR3aW4oKTsKKyAgICBkZWxzY3JlZW4oc3ApOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsCisgICAgIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGVybWluZm9cbiIpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9kb3RzX3Rlcm1jYXAuYyBiL3Rlc3QvZG90c190ZXJtY2FwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxOGUzNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZG90c190ZXJtY2FwLmMKQEAgLTAsMCArMSwyNTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyAqCisgKiAkSWQ6IGRvdHNfdGVybWNhcC5jLHYgMS44IDIwMTQvMDkvMjUgMDk6MDA6NTYgdG9tIEV4cCAkCisgKgorICogQSBzaW1wbGUgZGVtbyBvZiB0aGUgdGVybWNhcCBpbnRlcmZhY2UuCisgKi8KKyNkZWZpbmUgVVNFX1RJTkZPCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisKKyNpZiBIQVZFX1RHRVRFTlQKKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2RlZmluZSB2YWxpZChzKSAoKHMgIT0gMCkgJiYgcyAhPSAoY2hhciAqKS0xKQorCitzdGF0aWMgYm9vbCBpbnRlcnJ1cHRlZCA9IEZBTFNFOworc3RhdGljIGxvbmcgdG90YWxfY2hhcnMgPSAwOworc3RhdGljIHRpbWVfdCBzdGFydGVkOworCitzdGF0aWMgY2hhciAqdF9BQjsKK3N0YXRpYyBjaGFyICp0X0FGOworc3RhdGljIGNoYXIgKnRfY2w7CitzdGF0aWMgY2hhciAqdF9jbTsKK3N0YXRpYyBjaGFyICp0X21lOworc3RhdGljIGNoYXIgKnRfbXI7CitzdGF0aWMgY2hhciAqdF9vYzsKK3N0YXRpYyBjaGFyICp0X29wOworc3RhdGljIGNoYXIgKnRfdmU7CitzdGF0aWMgY2hhciAqdF92aTsKKworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjaGFyICoqdmFsdWU7Cit9IG15X2NhcHNbXSA9IHsKKworICAgIHsKKwkiQUIiLCAmdF9BQgorICAgIH0sCisgICAgeworCSJBRiIsICZ0X0FGCisgICAgfSwKKyAgICB7CisJImNsIiwgJnRfY2wKKyAgICB9LAorICAgIHsKKwkiY20iLCAmdF9jbQorICAgIH0sCisgICAgeworCSJtZSIsICZ0X21lCisgICAgfSwKKyAgICB7CisJIm1yIiwgJnRfbXIKKyAgICB9LAorICAgIHsKKwkib2MiLCAmdF9vYworICAgIH0sCisgICAgeworCSJvcCIsICZ0X29wCisgICAgfSwKKyAgICB7CisJInZlIiwgJnRfdmUKKyAgICB9LAorICAgIHsKKwkidmkiLCAmdF92aQorICAgIH0sCit9OworCitzdGF0aWMKK1RQVVRTX1BST1RPKG91dGMsIGMpCit7CisgICAgaW50IHJjID0gYzsKKworICAgIGlmIChpbnRlcnJ1cHRlZCkgeworCWNoYXIgdG1wID0gKGNoYXIpIGM7CisJaWYgKHdyaXRlKFNURE9VVF9GSUxFTk8sICZ0bXAsIChzaXplX3QpIDEpID09IC0xKQorCSAgICByYyA9IEVPRjsKKyAgICB9IGVsc2UgeworCXJjID0gcHV0YyhjLCBzdGRvdXQpOworICAgIH0KKyAgICBUUFVUU19SRVRVUk4ocmMpOworfQorCitzdGF0aWMgYm9vbAorb3V0cyhjaGFyICpzKQoreworICAgIGlmICh2YWxpZChzKSkgeworCXRwdXRzKHMsIDEsIG91dGMpOworCXJldHVybiBUUlVFOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwKHZvaWQpCit7CisgICAgb3V0cyh0X21lKTsKKyAgICBpZiAoIW91dHModF9vYykpCisJb3V0cyh0X29wKTsKKyAgICBvdXRzKHRfY2wpOworICAgIG91dHModF92ZSk7CisKKyAgICBwcmludGYoIlxuXG4lbGQgdG90YWwgY2hhcnMsIHJhdGUgJS4yZi9zZWNcbiIsCisJICAgdG90YWxfY2hhcnMsCisJICAgKChkb3VibGUpICh0b3RhbF9jaGFycykgLyAoZG91YmxlKSAodGltZSgodGltZV90ICopIDApIC0gc3RhcnRlZCkpKTsKK30KKworc3RhdGljIHZvaWQKK29uc2lnKGludCBuIEdDQ19VTlVTRUQpCit7CisgICAgaW50ZXJydXB0ZWQgPSBUUlVFOworfQorCitzdGF0aWMgZG91YmxlCityYW5mKHZvaWQpCit7CisgICAgbG9uZyByID0gKHJhbmQoKSAmIDA3Nzc3Nyk7CisgICAgcmV0dXJuICgoZG91YmxlKSByIC8gMzI3NjguKTsKK30KKworc3RhdGljIHZvaWQKK215X25hcG1zKGludCBtcykKK3sKKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSB8fCAhSEFWRV9HRVRUSU1FT0ZEQVkKKyAgICBTbGVlcCgoRFdPUkQpIG1zKTsKKyNlbHNlCisgICAgc3RydWN0IHRpbWV2YWwgZGF0YTsKKyAgICBkYXRhLnR2X3NlYyA9IDA7CisgICAgZGF0YS50dl91c2VjID0gbXMgKiAxMDAwOworICAgIHNlbGVjdCgwLCBOVUxMLCBOVUxMLCBOVUxMLCAmZGF0YSk7CisjZW5kaWYKK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsCisgICAgIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgaW50IHgsIHksIHosIHA7CisgICAgaW50IG51bV9jb2xvcnM7CisgICAgaW50IG51bV9saW5lczsKKyAgICBpbnQgbnVtX2NvbHVtbnM7CisgICAgZG91YmxlIHI7CisgICAgZG91YmxlIGM7CisgICAgY2hhciBidWZmZXJbMTAyNF07CisgICAgY2hhciBhcmVhWzEwMjRdOworICAgIGNoYXIgKm5hbWU7CisKKyAgICBDQVRDSEFMTChvbnNpZyk7CisKKyAgICBzcmFuZCgodW5zaWduZWQpIHRpbWUoMCkpOworCisgICAgaWYgKChuYW1lID0gZ2V0ZW52KCJURVJNIikpID09IDApIHsKKwlmcHJpbnRmKHN0ZGVyciwgIlRFUk0gaXMgbm90IHNldFxuIik7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9IGVsc2UgaWYgKHRnZXRlbnQoYnVmZmVyLCBuYW1lKSA8IDApIHsKKwlmcHJpbnRmKHN0ZGVyciwgInRlcm1pbmFsIGRlc2NyaXB0aW9uIG5vdCBmb3VuZFxuIik7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9IGVsc2UgeworCXNpemVfdCB0OworCWNoYXIgKmFwID0gYXJlYTsKKwlmb3IgKHQgPSAwOyB0IDwgU0laRU9GKG15X2NhcHMpOyArK3QpIHsKKwkgICAgKihteV9jYXBzW3RdLnZhbHVlKSA9IHRnZXRzdHIoKE5DVVJTRVNfQ09OU1QgY2hhciAqKQorCQkJCQkgIG15X2NhcHNbdF0ubmFtZSwgJmFwKTsKKwl9CisgICAgfQorCisgICAgbnVtX2NvbG9ycyA9IHRnZXRudW0oIkNvIik7CisgICAgbnVtX2xpbmVzID0gdGdldG51bSgibGkiKTsKKyAgICBudW1fY29sdW1ucyA9IHRnZXRudW0oImNvIik7CisKKyAgICBvdXRzKHRfY2wpOworICAgIG91dHModF92aSk7CisgICAgaWYgKG51bV9jb2xvcnMgPiAxKSB7CisJaWYgKCF2YWxpZCh0X0FGKQorCSAgICB8fCAhdmFsaWQodF9BQikKKwkgICAgfHwgKCF2YWxpZCh0X29jKSAmJiAhdmFsaWQodF9vcCkpKQorCSAgICBudW1fY29sb3JzID0gLTE7CisgICAgfQorCisgICAgciA9IChkb3VibGUpIChudW1fbGluZXMgLSA0KTsKKyAgICBjID0gKGRvdWJsZSkgKG51bV9jb2x1bW5zIC0gNCk7CisgICAgc3RhcnRlZCA9IHRpbWUoKHRpbWVfdCAqKSAwKTsKKworICAgIHdoaWxlICghaW50ZXJydXB0ZWQpIHsKKwl4ID0gKGludCkgKGMgKiByYW5mKCkpICsgMjsKKwl5ID0gKGludCkgKHIgKiByYW5mKCkpICsgMjsKKwlwID0gKHJhbmYoKSA+IDAuOSkgPyAnKicgOiAnICc7CisKKwl0cHV0cyh0Z290byh0X2NtLCB4LCB5KSwgMSwgb3V0Yyk7CisJaWYgKG51bV9jb2xvcnMgPiAwKSB7CisJICAgIHogPSAoaW50KSAocmFuZigpICogbnVtX2NvbG9ycyk7CisJICAgIGlmIChyYW5mKCkgPiAwLjAxKSB7CisJCXRwdXRzKHRnb3RvKHRfQUYsIDAsIHopLCAxLCBvdXRjKTsKKwkgICAgfSBlbHNlIHsKKwkJdHB1dHModGdvdG8odF9BQiwgMCwgeiksIDEsIG91dGMpOworCQlteV9uYXBtcygxKTsKKwkgICAgfQorCX0gZWxzZSBpZiAodmFsaWQodF9tZSkKKwkJICAgJiYgdmFsaWQodF9tcikpIHsKKwkgICAgaWYgKHJhbmYoKSA8PSAwLjAxKSB7CisJCW91dHMoKHJhbmYoKSA+IDAuNikKKwkJICAgICA/IHRfbXIKKwkJICAgICA6IHRfbWUpOworCQlteV9uYXBtcygxKTsKKwkgICAgfQorCX0KKwlvdXRjKHApOworCWZmbHVzaChzdGRvdXQpOworCSsrdG90YWxfY2hhcnM7CisgICAgfQorICAgIGNsZWFudXAoKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELAorICAgICBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRlcm1jYXBcbiIpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9lY2hvY2hhci5jIGIvdGVzdC9lY2hvY2hhci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YWMyOWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2VjaG9jaGFyLmMKQEAgLTAsMCArMSwxNTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBlY2hvY2hhci5jLHYgMS4xMCAyMDE0LzA4LzA5IDIyOjM1OjUxIHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIHRoZSBlY2hvY2hhciBmdW5jdGlvbiAoY29tcGFyZSB0byBkb3RzLmMpLgorICogVGhvbWFzIERpY2tleSAtIDIwMDYvMTEvNAorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2RlZmluZSB2YWxpZChzKSAoKHMgIT0gMCkgJiYgcyAhPSAoY2hhciAqKS0xKQorCitzdGF0aWMgYm9vbCBpbnRlcnJ1cHRlZCA9IEZBTFNFOworc3RhdGljIGxvbmcgdG90YWxfY2hhcnMgPSAwOworc3RhdGljIHRpbWVfdCBzdGFydGVkOworCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lkKQoreworICAgIGVuZHdpbigpOworCisgICAgcHJpbnRmKCJcblxuJWxkIHRvdGFsIGNoYXJzLCByYXRlICUuMmYvc2VjXG4iLAorCSAgIHRvdGFsX2NoYXJzLAorCSAgICgoZG91YmxlKSAodG90YWxfY2hhcnMpIC8gKGRvdWJsZSkgKHRpbWUoKHRpbWVfdCAqKSAwKSAtIHN0YXJ0ZWQpKSk7Cit9CisKK3N0YXRpYyB2b2lkCitvbnNpZyhpbnQgbiBHQ0NfVU5VU0VEKQoreworICAgIGludGVycnVwdGVkID0gVFJVRTsKK30KKworc3RhdGljIGRvdWJsZQorcmFuZih2b2lkKQoreworICAgIGxvbmcgciA9IChyYW5kKCkgJiAwNzc3NzcpOworICAgIHJldHVybiAoKGRvdWJsZSkgciAvIDMyNzY4Lik7Cit9CisKK3N0YXRpYyB2b2lkCitzZXRfY29sb3IoY2hhciAqbXlfcGFpcnMsIGludCBmZywgaW50IGJnKQoreworICAgIGludCBwYWlyID0gKGZnICogQ09MT1JTKSArIGJnOworICAgIGlmICghbXlfcGFpcnNbcGFpcl0pIHsKKwlpbml0X3BhaXIoKHNob3J0KSBwYWlyLAorCQkgIChzaG9ydCkgZmcsCisJCSAgKHNob3J0KSBiZyk7CisgICAgfQorICAgIGF0dHJvbihDT0xPUl9QQUlSKHBhaXIpKTsKK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsCisgICAgIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgaW50IGNoLCB4LCB5LCB6LCBwOworICAgIGRvdWJsZSByOworICAgIGRvdWJsZSBjOworICAgIGJvb2wgdXNlX2NvbG9yczsKKyAgICBib29sIG9wdF9yID0gRkFMU0U7CisgICAgY2hhciAqbXlfcGFpcnMgPSAwOworICAgIGludCBsYXN0X2ZnID0gMDsKKyAgICBpbnQgbGFzdF9iZyA9IDA7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJyIikpICE9IC0xKSB7CisJc3dpdGNoIChjaCkgeworCWNhc2UgJ3InOgorCSAgICBvcHRfciA9IFRSVUU7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGVjaG9jaGFyIFstcl1cbiIpOworCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCX0KKyAgICB9CisKKyAgICBDQVRDSEFMTChvbnNpZyk7CisgICAgaW5pdHNjcigpOworCisgICAgdXNlX2NvbG9ycyA9IGhhc19jb2xvcnMoKTsKKyAgICBpZiAodXNlX2NvbG9ycykgeworCXN0YXJ0X2NvbG9yKCk7CisJaWYgKENPTE9SX1BBSVJTID4gMCkgeworCSAgICBteV9wYWlycyA9IHR5cGVDYWxsb2MoY2hhciwgKHNpemVfdCkgQ09MT1JfUEFJUlMpOworCX0KKwl1c2VfY29sb3JzID0gKG15X3BhaXJzICE9IDApOworICAgIH0KKworICAgIHNyYW5kKCh1bnNpZ25lZCkgdGltZSgwKSk7CisKKyAgICBjdXJzX3NldCgwKTsKKworICAgIHIgPSAoZG91YmxlKSAoTElORVMgLSA0KTsKKyAgICBjID0gKGRvdWJsZSkgKENPTFMgLSA0KTsKKyAgICBzdGFydGVkID0gdGltZSgodGltZV90ICopIDApOworCisgICAgd2hpbGUgKCFpbnRlcnJ1cHRlZCkgeworCXggPSAoaW50KSAoYyAqIHJhbmYoKSkgKyAyOworCXkgPSAoaW50KSAociAqIHJhbmYoKSkgKyAyOworCXAgPSAocmFuZigpID4gMC45KSA/ICcqJyA6ICcgJzsKKworCW1vdmUoeSwgeCk7CisJaWYgKHVzZV9jb2xvcnMgPiAwKSB7CisJICAgIHogPSAoaW50KSAocmFuZigpICogQ09MT1JTKTsKKwkgICAgaWYgKHJhbmYoKSA+IDAuMDEpIHsKKwkJc2V0X2NvbG9yKG15X3BhaXJzLCB6LCBsYXN0X2JnKTsKKwkJbGFzdF9mZyA9IHo7CisJICAgIH0gZWxzZSB7CisJCXNldF9jb2xvcihteV9wYWlycywgbGFzdF9mZywgeik7CisJCWxhc3RfYmcgPSB6OworCQluYXBtcygxKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGlmIChyYW5mKCkgPD0gMC4wMSkgeworCQlpZiAocmFuZigpID4gMC42KQorCQkgICAgYXR0cm9uKEFfUkVWRVJTRSk7CisJCWVsc2UKKwkJICAgIGF0dHJvZmYoQV9SRVZFUlNFKTsKKwkJbmFwbXMoMSk7CisJICAgIH0KKwl9CisJaWYgKG9wdF9yKSB7CisJICAgIGFkZGNoKFVDaGFyKHApKTsKKwkgICAgcmVmcmVzaCgpOworCX0gZWxzZSB7CisJICAgIGVjaG9jaGFyKFVDaGFyKHApKTsKKwl9CisJKyt0b3RhbF9jaGFyczsKKyAgICB9CisgICAgY2xlYW51cCgpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2VkaXRfZmllbGQuYyBiL3Rlc3QvZWRpdF9maWVsZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNThjZDYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2VkaXRfZmllbGQuYwpAQCAtMCwwICsxLDUwNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGVkaXRfZmllbGQuYyx2IDEuMjQgMjAxNC8wOS8wNSAwODozOTo1MiB0b20gRXhwICQKKyAqCisgKiBBIHdyYXBwZXIgZm9yIGZvcm1fZHJpdmVyKCkgd2hpY2gga2VlcHMgdHJhY2sgb2YgdGhlIHVzZXIncyBlZGl0aW5nIGNoYW5nZXMKKyAqIGZvciBlYWNoIGZpZWxkLCBhbmQgbWFrZXMgdGhlIHJlc3VsdGluZyBsZW5ndGggYXZhaWxhYmxlIGFzIGEKKyAqIG51bGwtdGVybWluYXRlZCBzdHJpbmcgaW4gZmllbGRfYnVmZmVyKGZpZWxkLDEpLgorICoKKyAqIFRob21hcyBEaWNrZXkgLSAyMDAzLzQvMjYuCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgVVNFX0xJQkZPUk0KKworI2luY2x1ZGUgPGVkaXRfZmllbGQuaD4KKworc3RhdGljIHN0cnVjdCB7CisgICAgaW50IGNvZGU7CisgICAgaW50IHJlc3VsdDsKKyAgICBjb25zdCBjaGFyICpoZWxwOworfSBjb21tYW5kc1tdID0geworCisgICAgeworCUNUUkwoJ0EnKSwgUkVRX05FWFRfQ0hPSUNFLCAiIgorICAgIH0sCisgICAgeworCUNUUkwoJ0InKSwgUkVRX1BSRVZfV09SRCwgImdvIHRvIHByZXZpb3VzIHdvcmQiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnQycpLCBSRVFfQ0xSX0VPTCwgImNsZWFyIHRvIGVuZCBvZiBsaW5lIgorICAgIH0sCisgICAgeworCUNUUkwoJ0QnKSwgUkVRX0RPV05fRklFTEQsICJtb3ZlIGRvd253YXJkIHRvIGZpZWxkIgorICAgIH0sCisgICAgeworCUNUUkwoJ0UnKSwgUkVRX0VORF9GSUVMRCwgImdvIHRvIGVuZCBvZiBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdGJyksIFJFUV9ORVhUX1BBR0UsICJnbyB0byBuZXh0IHBhZ2UiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnRycpLCBSRVFfREVMX1dPUkQsICJkZWxldGUgY3VycmVudCB3b3JkIgorICAgIH0sCisgICAgeworCUNUUkwoJ0gnKSwgUkVRX0RFTF9QUkVWLCAiZGVsZXRlIHByZXZpb3VzIGNoYXJhY3RlciIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdJJyksIFJFUV9JTlNfQ0hBUiwgImluc2VydCBjaGFyYWN0ZXIiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnSycpLCBSRVFfQ0xSX0VPRiwgImNsZWFyIHRvIGVuZCBvZiBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdMJyksIFJFUV9MRUZUX0ZJRUxELCAiZ28gdG8gZmllbGQgdG8gbGVmdCIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdNJyksIFJFUV9ORVdfTElORSwgImluc2VydC9vdmVybGF5IG5ldyBsaW5lIgorICAgIH0sCisgICAgeworCUNUUkwoJ04nKSwgUkVRX05FWFRfRklFTEQsICJnbyB0byBuZXh0IGZpZWxkIgorICAgIH0sCisgICAgeworCUNUUkwoJ08nKSwgUkVRX0lOU19MSU5FLCAiaW5zZXJ0IGJsYW5rIGxpbmUgYXQgY3Vyc29yIgorICAgIH0sCisgICAgeworCUNUUkwoJ1AnKSwgUkVRX1BSRVZfRklFTEQsICJnbyB0byBwcmV2aW91cyBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdRJyksIE1ZX1FVSVQsICJleGl0IGZvcm0iCisgICAgfSwKKyAgICB7CisJQ1RSTCgnUicpLCBSRVFfUklHSFRfRklFTEQsICJnbyB0byBmaWVsZCB0byByaWdodCIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdTJyksIFJFUV9CRUdfRklFTEQsICJnbyB0byBiZWdpbm5pbmcgb2YgZmllbGQiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnVCcpLCBNWV9FRFRfTU9ERSwgInRvZ2dsZSBPX0VESVQgbW9kZSwgY2xlYXIgZmllbGQgc3RhdHVzIiwKKyAgICB9LAorICAgIHsKKwlDVFJMKCdVJyksIFJFUV9VUF9GSUVMRCwgIm1vdmUgdXB3YXJkIHRvIGZpZWxkIgorICAgIH0sCisgICAgeworCUNUUkwoJ1YnKSwgUkVRX0RFTF9DSEFSLCAiZGVsZXRlIGNoYXJhY3RlciIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdXJyksIFJFUV9ORVhUX1dPUkQsICJnbyB0byBuZXh0IHdvcmQiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnWCcpLCBSRVFfQ0xSX0ZJRUxELCAiY2xlYXIgZmllbGQiCisgICAgfSwKKyAgICB7CisJQ1RSTCgnWScpLCBSRVFfREVMX0xJTkUsICJkZWxldGUgbGluZSIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdaJyksIFJFUV9QUkVWX0NIT0lDRSwgIiIKKyAgICB9LAorICAgIHsKKwlDVFJMKCdbJyksIE1ZX1FVSVQsICJleGl0IGZvcm0iCisgICAgfSwKKyAgICB7CisJQ1RSTCgnXScpLCBNWV9JTlNfTU9ERSwgInRvZ2dsZSBSRVFfSU5TX01PREUvUkVRX09WTF9NT0RFIiwKKyAgICB9LAorICAgIHsKKwlLRVlfRigxKSwgTVlfSEVMUCwgInNob3cgdGhpcyBzY3JlZW4iLAorICAgIH0sCisgICAgeworCUtFWV9CQUNLU1BBQ0UsIFJFUV9ERUxfUFJFViwgImRlbGV0ZSBwcmV2aW91cyBjaGFyYWN0ZXIiCisgICAgfSwKKyAgICB7CisJS0VZX0RPV04sIFJFUV9ET1dOX0NIQVIsICJtb3ZlIGRvd24gMSBjaGFyYWN0ZXIiCisgICAgfSwKKyAgICB7CisJS0VZX0VORCwgUkVRX0xBU1RfRklFTEQsICJnbyB0byBsYXN0IGZpZWxkIgorICAgIH0sCisgICAgeworCUtFWV9IT01FLCBSRVFfRklSU1RfRklFTEQsICJnbyB0byBmaXJzdCBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlLRVlfTEVGVCwgUkVRX0xFRlRfQ0hBUiwgIm1vdmUgbGVmdCAxIGNoYXJhY3RlciIKKyAgICB9LAorICAgIHsKKwlLRVlfTEwsIFJFUV9MQVNUX0ZJRUxELCAiZ28gdG8gbGFzdCBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlLRVlfTkVYVCwgUkVRX05FWFRfRklFTEQsICJnbyB0byBuZXh0IGZpZWxkIgorICAgIH0sCisgICAgeworCUtFWV9OUEFHRSwgUkVRX05FWFRfUEFHRSwgImdvIHRvIG5leHQgcGFnZSIKKyAgICB9LAorICAgIHsKKwlLRVlfUFBBR0UsIFJFUV9QUkVWX1BBR0UsICJnbyB0byBwcmV2aW91cyBwYWdlIgorICAgIH0sCisgICAgeworCUtFWV9QUkVWSU9VUywgUkVRX1BSRVZfRklFTEQsICJnbyB0byBwcmV2aW91cyBmaWVsZCIKKyAgICB9LAorICAgIHsKKwlLRVlfUklHSFQsIFJFUV9SSUdIVF9DSEFSLCAibW92ZSByaWdodCAxIGNoYXJhY3RlciIKKyAgICB9LAorICAgIHsKKwlLRVlfVVAsIFJFUV9VUF9DSEFSLCAibW92ZSB1cCAxIGNoYXJhY3RlciIKKyAgICB9Cit9OworCitzdGF0aWMgV0lORE9XICpvbGRfd2luZG93OworCitzdGF0aWMgdm9pZAorYmVnaW5fcG9wdXAodm9pZCkKK3sKKyAgICBkb3VwZGF0ZSgpOworICAgIG9sZF93aW5kb3cgPSBkdXB3aW4oY3Vyc2NyKTsKK30KKworc3RhdGljIHZvaWQKK2VuZF9wb3B1cCh2b2lkKQoreworICAgIHRvdWNod2luKG9sZF93aW5kb3cpOworICAgIHdub3V0cmVmcmVzaChvbGRfd2luZG93KTsKKyAgICBkb3VwZGF0ZSgpOworICAgIGRlbHdpbihvbGRfd2luZG93KTsKK30KKworLyoKKyAqIERpc3BsYXkgYSB0ZW1wb3Jhcnkgd2luZG93IGxpc3RpbmcgdGhlIGtleXN0cm9rZS1jb21tYW5kcyB3ZSByZWNvZ25pemUuCisgKi8KK3ZvaWQKK2hlbHBfZWRpdF9maWVsZCh2b2lkKQoreworICAgIGludCB4MCA9IDQ7CisgICAgaW50IHkwID0gMjsKKyAgICBpbnQgeTEgPSAwOworICAgIGludCB5MiA9IDA7CisgICAgaW50IHdpZGUgPSBDT0xTIC0gKCh4MCArIDEpICogMik7CisgICAgaW50IGhpZ2ggPSBMSU5FUyAtICgoeTAgKyAxKSAqIDIpOworICAgIFdJTkRPVyAqaGVscCA9IG5ld3dpbihoaWdoLCB3aWRlLCB5MCwgeDApOworICAgIFdJTkRPVyAqZGF0YSA9IG5ld3BhZCgyICsgU0laRU9GKGNvbW1hbmRzKSwgd2lkZSAtIDQpOworICAgIHVuc2lnbmVkIG47CisgICAgaW50IGNoID0gRVJSOworCisgICAgYmVnaW5fcG9wdXAoKTsKKworICAgIGtleXBhZChoZWxwLCBUUlVFKTsKKyAgICBrZXlwYWQoZGF0YSwgVFJVRSk7CisgICAgd2FkZHN0cihkYXRhLCAiRGVmaW5lZCBmb3JtIGVkaXQvdHJhdmVyc2FsIGtleXM6XG4iKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKGNvbW1hbmRzKTsgKytuKSB7CisJY29uc3QgY2hhciAqbmFtZTsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwlpZiAoKG5hbWUgPSBmb3JtX3JlcXVlc3RfbmFtZShjb21tYW5kc1tuXS5yZXN1bHQpKSA9PSAwKQorI2VuZGlmCisJICAgIG5hbWUgPSBjb21tYW5kc1tuXS5oZWxwOworCXdwcmludHcoZGF0YSwgIiVzIC0tICVzXG4iLAorCQlrZXluYW1lKGNvbW1hbmRzW25dLmNvZGUpLAorCQluYW1lICE9IDAgPyBuYW1lIDogY29tbWFuZHNbbl0uaGVscCk7CisgICAgfQorICAgIHdhZGRzdHIoZGF0YSwgIkFycm93IGtleXMgbW92ZSB3aXRoaW4gYSBmaWVsZCBhcyB5b3Ugd291bGQgZXhwZWN0LiIpOworICAgIHkyID0gZ2V0Y3VyeShkYXRhKTsKKworICAgIGRvIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBLRVlfSE9NRToKKwkgICAgeTEgPSAwOworCSAgICBicmVhazsKKwljYXNlIEtFWV9FTkQ6CisJICAgIHkxID0geTI7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1BSRVZJT1VTOgorCWNhc2UgS0VZX1BQQUdFOgorCSAgICBpZiAoeTEgPiAwKSB7CisJCXkxIC09IGhpZ2ggLyAyOworCQlpZiAoeTEgPCAwKQorCQkgICAgeTEgPSAwOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfTkVYVDoKKwljYXNlIEtFWV9OUEFHRToKKwkgICAgaWYgKHkxIDwgeTIpIHsKKwkJeTEgKz0gaGlnaCAvIDI7CisJCWlmICh5MSA+PSB5MikKKwkJICAgIHkxID0geTI7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIENUUkwoJ1AnKToKKwljYXNlIEtFWV9VUDoKKwkgICAgaWYgKHkxID4gMCkKKwkJLS15MTsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgQ1RSTCgnTicpOgorCWNhc2UgS0VZX0RPV046CisJICAgIGlmICh5MSA8IHkyKQorCQkrK3kxOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlIEVSUjoKKwkgICAgYnJlYWs7CisJfQorCXdlcmFzZShoZWxwKTsKKwlib3goaGVscCwgMCwgMCk7CisJd25vdXRyZWZyZXNoKGhlbHApOworCXBub3V0cmVmcmVzaChkYXRhLCB5MSwgMCwgeTAgKyAxLCB4MCArIDEsIGhpZ2gsIHdpZGUpOworCWRvdXBkYXRlKCk7CisgICAgfSB3aGlsZSAoKGNoID0gd2dldGNoKGRhdGEpKSAhPSBFUlIgJiYgY2ggIT0gUVVJVCAmJiBjaCAhPSBFU0NBUEUpOworICAgIHdlcmFzZShoZWxwKTsKKyAgICB3cmVmcmVzaChoZWxwKTsKKyAgICBkZWx3aW4oaGVscCk7CisgICAgZGVsd2luKGRhdGEpOworCisgICAgZW5kX3BvcHVwKCk7Cit9CisKK3N0YXRpYyBpbnQKK29mZnNldF9pbl9maWVsZChGT1JNICogZm9ybSkKK3sKKyAgICBGSUVMRCAqZmllbGQgPSBjdXJyZW50X2ZpZWxkKGZvcm0pOworICAgIGludCBjdXJyb3csIGN1cmNvbDsKKworICAgIGZvcm1fZ2V0eXgoZm9ybSwgY3Vycm93LCBjdXJjb2wpOworICAgIHJldHVybiBjdXJjb2wgKyBjdXJyb3cgKiBmaWVsZC0+ZGNvbHM7Cit9CisKK3N0YXRpYyB2b2lkCitpbmFjdGl2ZV9maWVsZChGSUVMRCAqIGYpCit7CisgICAgc2V0X2ZpZWxkX2JhY2soZiwgZmllbGRfYXR0cnMoZiktPmJhY2tncm91bmQpOworfQorCitGaWVsZEF0dHJzICoKK2ZpZWxkX2F0dHJzKEZJRUxEICogZikKK3sKKyAgICByZXR1cm4gKEZpZWxkQXR0cnMgKikgZmllbGRfdXNlcnB0cihmKTsKK30KKworc3RhdGljIGludAorYnVmZmVyX2xlbmd0aChGSUVMRCAqIGYpCit7CisgICAgcmV0dXJuIGZpZWxkX2F0dHJzKGYpLT5yb3dfbGVuZ3Roc1swXTsKK30KKworc3RhdGljIHZvaWQKK3NldF9idWZmZXJfbGVuZ3RoKEZJRUxEICogZiwgaW50IGxlbmd0aCkKK3sKKyAgICBmaWVsZF9hdHRycyhmKS0+cm93X2xlbmd0aHNbMF0gPSBsZW5ndGg7Cit9CisKKy8qCisgKiBUaGUgdXNlcnB0ciBpcyB1c2VkIGluIGVkaXRfZmllbGQuYydzIGluYWN0aXZlX2ZpZWxkKCksIGFzIHdlbGwgYXMgZm9yCisgKiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBhY3R1YWwgbGVuZ3RocyBvZiBsaW5lcyBpbiBhIG11bHRpbGluZSBmaWVsZC4KKyAqLwordm9pZAoraW5pdF9lZGl0X2ZpZWxkKEZJRUxEICogZiwgY2hhciAqdmFsdWUpCit7CisgICAgY2hhciBlbXB0eVsxXTsKKyAgICBGaWVsZEF0dHJzICpwdHIgPSBmaWVsZF9hdHRycyhmKTsKKyAgICBpZiAocHRyID09IDApIHsKKwlpbnQgcm93cywgY29scywgZnJvdywgZmNvbCwgbnJvdywgbmJ1ZjsKKworCXB0ciA9IHR5cGVDYWxsb2MoRmllbGRBdHRycywgKHNpemVfdCkgMSk7CisJcHRyLT5iYWNrZ3JvdW5kID0gZmllbGRfYmFjayhmKTsKKwlpZiAoZmllbGRfaW5mbyhmLCAmcm93cywgJmNvbHMsICZmcm93LCAmZmNvbCwgJm5yb3csICZuYnVmKSA9PSBFX09LKSB7CisJICAgIHB0ci0+cm93X2NvdW50ID0gbnJvdzsKKwkgICAgcHRyLT5yb3dfbGVuZ3RocyA9IHR5cGVDYWxsb2MoaW50LCAoc2l6ZV90KSBucm93ICsgMSk7CisJfQorICAgIH0KKyAgICBpZiAodmFsdWUgPT0gMCkgeworCXZhbHVlID0gZW1wdHk7CisJKnZhbHVlID0gJ1wwJzsKKyAgICB9CisgICAgc2V0X2ZpZWxkX3VzZXJwdHIoZiwgKHZvaWQgKikgcHRyKTsKKyAgICBzZXRfZmllbGRfYnVmZmVyKGYsIDAsIHZhbHVlKTsJLyogd2lsbCBiZSBmb3JtYXR0ZWQgKi8KKyAgICBzZXRfZmllbGRfYnVmZmVyKGYsIDEsIHZhbHVlKTsJLyogd2lsbCBiZSB1bmZvcm1hdHRlZCAqLworICAgIHNldF9idWZmZXJfbGVuZ3RoKGYsIChpbnQpIHN0cmxlbih2YWx1ZSkpOworfQorCitpbnQKK2VkaXRfZmllbGQoRk9STSAqIGZvcm0sIGludCAqcmVzdWx0KQoreworICAgIGludCBjaCA9IHdnZXRjaChmb3JtX3dpbihmb3JtKSk7CisgICAgaW50IHN0YXR1czsKKyAgICBGSUVMRCAqYmVmb3JlOworICAgIHVuc2lnbmVkIG47CisgICAgaW50IGxlbmd0aDsKKyAgICBpbnQgYmVmb3JlX3JvdzsKKyAgICBpbnQgYmVmb3JlX2NvbDsKKyAgICBpbnQgYmVmb3JlX29mZiA9IG9mZnNldF9pbl9maWVsZChmb3JtKTsKKworICAgIGZvcm1fZ2V0eXgoZm9ybSwgYmVmb3JlX3JvdywgYmVmb3JlX2NvbCk7CisgICAgYmVmb3JlID0gY3VycmVudF9maWVsZChmb3JtKTsKKyAgICBzZXRfZmllbGRfYmFjayhiZWZvcmUsIEFfTk9STUFMKTsKKyAgICBpZiAoY2ggPD0gS0VZX01BWCkgeworCXNldF9maWVsZF9iYWNrKGJlZm9yZSwgQV9SRVZFUlNFKTsKKyAgICB9IGVsc2UgaWYgKGNoIDw9IE1BWF9GT1JNX0NPTU1BTkQpIHsKKwlpbmFjdGl2ZV9maWVsZChiZWZvcmUpOworICAgIH0KKworICAgICpyZXN1bHQgPSBjaDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKGNvbW1hbmRzKTsgKytuKSB7CisJaWYgKGNvbW1hbmRzW25dLmNvZGUgPT0gY2gpIHsKKwkgICAgKnJlc3VsdCA9IGNvbW1hbmRzW25dLnJlc3VsdDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworICAgIHN0YXR1cyA9IGZvcm1fZHJpdmVyKGZvcm0sICpyZXN1bHQpOworCisgICAgaWYgKHN0YXR1cyA9PSBFX09LKSB7CisJYm9vbCBtb2RpZmllZCA9IFRSVUU7CisKKwlsZW5ndGggPSBidWZmZXJfbGVuZ3RoKGJlZm9yZSk7CisJaWYgKGxlbmd0aCA8IGJlZm9yZV9vZmYpCisJICAgIGxlbmd0aCA9IGJlZm9yZV9vZmY7CisJc3dpdGNoICgqcmVzdWx0KSB7CisJY2FzZSBSRVFfQ0xSX0VPRjoKKwkgICAgbGVuZ3RoID0gYmVmb3JlX29mZjsKKwkgICAgYnJlYWs7CisJY2FzZSBSRVFfQ0xSX0VPTDoKKwkgICAgaWYgKChpbnQpIChiZWZvcmVfcm93ICsgMSkgPT0gKGludCkgKGJlZm9yZS0+cm93cykpCisJCWxlbmd0aCA9IGJlZm9yZV9vZmY7CisJICAgIGJyZWFrOworCWNhc2UgUkVRX0NMUl9GSUVMRDoKKwkgICAgbGVuZ3RoID0gMDsKKwkgICAgYnJlYWs7CisJY2FzZSBSRVFfREVMX0NIQVI6CisJICAgIGlmIChsZW5ndGggPiBiZWZvcmVfb2ZmKQorCQktLWxlbmd0aDsKKwkgICAgYnJlYWs7CisJY2FzZSBSRVFfREVMX1BSRVY6CisJICAgIGlmIChsZW5ndGggPiAwKSB7CisJCWlmIChiZWZvcmVfY29sID4gMCkgeworCQkgICAgLS1sZW5ndGg7CisJCX0gZWxzZSBpZiAoYmVmb3JlX3JvdyA+IDApIHsKKwkJICAgIGxlbmd0aCAtPSBiZWZvcmUtPmNvbHMgKyBiZWZvcmVfY29sOworCQl9CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBSRVFfTkVXX0xJTkU6CisJICAgIGxlbmd0aCArPSBiZWZvcmUtPmNvbHM7CisJICAgIGJyZWFrOworI2lmIDAKKwkgICAgLyogRklYTUU6IGZpbmlzaCB0aGVzZSAqLworCWNhc2UgUkVRX0RFTF9MSU5FOgkvKiBkZWxldGUgbGluZSAqLworCWNhc2UgUkVRX0RFTF9XT1JEOgkvKiBkZWxldGUgd29yZCBhdCBjdXJzb3IgKi8KKwljYXNlIFJFUV9JTlNfQ0hBUjoJLyogaW5zZXJ0IGJsYW5rIGNoYXIgYXQgY3Vyc29yICovCisJY2FzZSBSRVFfSU5TX0xJTkU6CS8qIGluc2VydCBibGFuayBsaW5lIGF0IGN1cnNvciAqLworCWNhc2UgUkVRX0lOU19NT0RFOgkvKiBiZWdpbiBpbnNlcnQgbW9kZSAqLworCWNhc2UgUkVRX09WTF9NT0RFOgkvKiBiZWdpbiBvdmVybGF5IG1vZGUgKi8KKyNlbmRpZgorCSAgICAvKiBpZ25vcmUgYWxsIG9mIHRoZSBtb3Rpb24gY29tbWFuZHMgKi8KKwljYXNlIFJFUV9TQ1JfQkNIQVI6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU0NSX0JIUEFHRToJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9TQ1JfQkxJTkU6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU0NSX0JQQUdFOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1NDUl9GQ0hBUjoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9TQ1JfRkhQQUdFOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1NDUl9GTElORToJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9TQ1JfRlBBR0U6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU0NSX0hCSEFMRjoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9TQ1JfSEJMSU5FOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1NDUl9IRkhBTEY6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU0NSX0hGTElORToJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9CRUdfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfQkVHX0xJTkU6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfRE9XTl9DSEFSOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX0RPV05fRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfRU5EX0ZJRUxEOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX0VORF9MSU5FOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX0ZJUlNUX0ZJRUxEOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX0ZJUlNUX1BBR0U6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfTEFTVF9GSUVMRDoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9MQVNUX1BBR0U6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfTEVGVF9DSEFSOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX0xFRlRfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfTkVYVF9DSEFSOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX05FWFRfQ0hPSUNFOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX05FWFRfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfTkVYVF9MSU5FOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX05FWFRfUEFHRToJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9ORVhUX1dPUkQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfUFJFVl9DSEFSOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1BSRVZfQ0hPSUNFOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1BSRVZfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfUFJFVl9MSU5FOgkvKiBGQUxMVEhSVSAqLworCWNhc2UgUkVRX1BSRVZfUEFHRToJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9QUkVWX1dPUkQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfUklHSFRfQ0hBUjoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9SSUdIVF9GSUVMRDoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9TRklSU1RfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU0xBU1RfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU05FWFRfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfU1BSRVZfRklFTEQ6CS8qIEZBTExUSFJVICovCisJY2FzZSBSRVFfVVBfQ0hBUjoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9VUF9GSUVMRDoJLyogRkFMTFRIUlUgKi8KKwljYXNlIFJFUV9WQUxJREFUSU9OOgkvKiBGQUxMVEhSVSAqLworCSAgICBtb2RpZmllZCA9IEZBTFNFOworCSAgICBicmVhazsKKworCWRlZmF1bHQ6CisJICAgIG1vZGlmaWVkID0gRkFMU0U7CisJICAgIGlmIChjaCA+PSBNSU5fRk9STV9DT01NQU5EKSB7CisJCWJlZXAoKTsKKwkgICAgfSBlbHNlIGlmIChpc3ByaW50KGNoKSkgeworCQltb2RpZmllZCA9IFRSVUU7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfQorCisJLyoKKwkgKiBJZiB3ZSBkbyBub3QgZm9yY2UgYSByZS12YWxpZGF0aW9uLCB0aGVuIGZpZWxkX2J1ZmZlciAwIHdpbGwKKwkgKiBiZSBsYWdnaW5nIGJ5IG9uZSBjaGFyYWN0ZXIuCisJICovCisJaWYgKG1vZGlmaWVkICYmIGZvcm1fZHJpdmVyKGZvcm0sIFJFUV9WQUxJREFUSU9OKSA9PSBFX09LICYmICpyZXN1bHQKKwkgICAgPCBNSU5fRk9STV9DT01NQU5EKQorCSAgICArK2xlbmd0aDsKKworCXNldF9idWZmZXJfbGVuZ3RoKGJlZm9yZSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAoY3VycmVudF9maWVsZChmb3JtKSAhPSBiZWZvcmUpCisJaW5hY3RpdmVfZmllbGQoYmVmb3JlKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorI2Vsc2UKKworZXh0ZXJuIHZvaWQgbm9fZWRpdF9maWVsZCh2b2lkKTsKKwordm9pZAorbm9fZWRpdF9maWVsZCh2b2lkKQoreworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvZWRpdF9maWVsZC5oIGIvdGVzdC9lZGl0X2ZpZWxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M1YjgwZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZWRpdF9maWVsZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwOCwyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBlZGl0X2ZpZWxkLmgsdiAxLjkgMjAxMy8wNi8wOCAxNTo0NjowMSB0b20gRXhwICQKKyAqCisgKiBJbnRlcmZhY2Ugb2YgZWRpdF9maWVsZC5jCisgKi8KKworI2lmbmRlZiBFRElUX0ZPUk1fSF9pbmNsCisjZGVmaW5lIEVESVRfRk9STV9IX2luY2wgMQorCisjaW5jbHVkZSA8Zm9ybS5oPgorCisjZGVmaW5lIEVESVRfRklFTEQoYykgKE1BWF9GT1JNX0NPTU1BTkQgKyBjKQorCisjZGVmaW5lIE1ZX0hFTFAJCUVESVRfRklFTEQoJ2gnKQorI2RlZmluZSBNWV9RVUlUCQlFRElUX0ZJRUxEKCdxJykKKyNkZWZpbmUgTVlfRURUX01PREUJRURJVF9GSUVMRCgnZScpCisjZGVmaW5lIE1ZX0lOU19NT0RFCUVESVRfRklFTEQoJ3QnKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY2h0eXBlIGJhY2tncm91bmQ7CisgICAgaW50IHJvd19jb3VudDsKKyAgICBpbnQgKnJvd19sZW5ndGhzOworfSBGaWVsZEF0dHJzOworCitleHRlcm4gRmllbGRBdHRycyAqZmllbGRfYXR0cnMoRklFTEQgKiBmaWVsZCk7CitleHRlcm4gdm9pZCBpbml0X2VkaXRfZmllbGQoRklFTEQgKiBmaWVsZCwgY2hhciAqdmFsdWUpOworZXh0ZXJuIHZvaWQgaGVscF9lZGl0X2ZpZWxkKHZvaWQpOworZXh0ZXJuIGludCBlZGl0X2ZpZWxkKEZPUk0gKiBmb3JtLCBpbnQgKnJlc3VsdCk7CisKKyNlbmRpZiAvKiBFRElUX0ZPUk1fSF9pbmNsICovCmRpZmYgLS1naXQgYS90ZXN0L2ZpbHRlci5jIGIvdGVzdC9maWx0ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjJkODU2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9maWx0ZXIuYwpAQCAtMCwwICsxLDE2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTgKKyAqCisgKiAkSWQ6IGZpbHRlci5jLHYgMS4xNiAyMDE0LzA4LzA5IDIyOjM1OjUxIHRvbSBFeHAgJAorICovCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBIQVZFX0ZJTFRFUgorCisvKgorICogQW4gZXhhbXBsZSBvZiB0aGUgJ2ZpbHRlcigpJyBmdW5jdGlvbiBpbiBuY3Vyc2VzLCB0aGlzIHByb2dyYW0gcHJvbXB0cworICogZm9yIGNvbW1hbmRzIGFuZCBleGVjdXRlcyB0aGVtIChsaWtlIGEgY29tbWFuZCBzaGVsbCkuICBJdCBpbGx1c3RyYXRlcworICogaG93IG5jdXJzZXMgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IHByb2dyYW1zIHRoYXQgYXJlIG5vdCBmdWxsLXNjcmVlbi4KKyAqCisgKiBOY3Vyc2VzIGRpZmZlcnMgc2xpZ2h0bHkgZnJvbSBTVnI0IGN1cnNlcy4gIFRoZSBsYXR0ZXIgZG9lcyBub3QgZmx1c2ggaXRzCisgKiBzdGF0ZSB3aGVuIGV4aXRpbmcgcHJvZ3JhbSBtb2RlLCBzbyB0aGUgYXR0cmlidXRlcyBvbiB0aGUgY29tbWFuZCBsaW5lcyBvZgorICogdGhpcyBwcm9ncmFtICdibGVlZCcgb250byB0aGUgZXhlY3V0ZWQgY29tbWFuZHMuICBSYXRoZXIgdGhhbiB1c2UgdGhlCisgKiByZXNldF9zaGVsbF9tb2RlKCkgYW5kIHJlc2V0X3Byb2dfbW9kZSgpIGZ1bmN0aW9ucywgd2UgY291bGQgaW52b2tlIGVuZHdpbigpCisgKiBhbmQgcmVmcmVzaCgpLCBidXQgdGhhdCBkb2VzIG5vdCB3b3JrIGFueSBiZXR0ZXIuCisgKi8KKworc3RhdGljIGludAorbmV3X2NvbW1hbmQoY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoLCBpbnQgdW5kZXJsaW5lKQoreworICAgIGludCBjb2RlOworCisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgcHJpbnR3KCJDb21tYW5kOiAiKTsKKyAgICBhdHRyb24odW5kZXJsaW5lKTsKKyAgICBjb2RlID0gZ2V0bnN0cihidWZmZXIsIGxlbmd0aCk7CisgICAgLyoKKyAgICAgKiBJZiB0aGlzIHJldHVybnMgYW55dGhpbmcgZXhjZXB0IEVSUi9PSywgaXQgd291bGQgYmUgb25lIG9mIG5jdXJzZXMncworICAgICAqIGV4dGVuc2lvbnMuICBGaWxsIHRoZSBidWZmZXIgd2l0aCBzb21ldGhpbmcgaGFybWxlc3MgdGhhdCB0aGUgc2hlbGwKKyAgICAgKiB3aWxsIGV4ZWN1dGUgYXMgYSBjb21tZW50LgorICAgICAqLworI2lmZGVmIEtFWV9FVkVOVAorICAgIGlmIChjb2RlID09IEtFWV9FVkVOVCkKKwlzdHJjcHkoYnVmZmVyLCAiIyBldmVudCEiKTsKKyNlbmRpZgorI2lmZGVmIEtFWV9SRVNJWkUKKyAgICBpZiAoY29kZSA9PSBLRVlfUkVTSVpFKSB7CisJc3RyY3B5KGJ1ZmZlciwgIiMgcmVzaXplISIpOworCWdldGNoKCk7CisgICAgfQorI2VuZGlmCisgICAgYXR0cm9mZih1bmRlcmxpbmUpOworICAgIGF0dHJvZmYoQV9CT0xEKTsKKyAgICBwcmludHcoIlxuIik7CisKKyAgICByZXR1cm4gY29kZTsKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKm1zZ1tdID0KKyAgICB7CisJIlVzYWdlOiBmaWx0ZXIgW29wdGlvbnNdIgorCSwiIgorCSwiT3B0aW9uczoiCisJLCIgIC1pICAgdXNlIGluaXRzY3IoKSByYXRoZXIgdGhhbiBuZXd0ZXJtKCkiCisgICAgfTsKKyAgICB1bnNpZ25lZCBuOworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YobXNnKTsgbisrKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ1tuXSk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgaW50IGNoOworICAgIGNoYXIgYnVmZmVyWzgwXTsKKyAgICBpbnQgdW5kZXJsaW5lOworICAgIGJvb2wgaV9vcHRpb24gPSBGQUxTRTsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImkiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnaSc6CisJICAgIGlfb3B0aW9uID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwl9CisgICAgfQorCisgICAgcHJpbnRmKCJzdGFydGluZyBmaWx0ZXIgcHJvZ3JhbSB1c2luZyAlcy4uLlxuIiwKKwkgICBpX29wdGlvbiA/ICJpbml0c2NyIiA6ICJuZXd0ZXJtIik7CisgICAgZmlsdGVyKCk7CisgICAgaWYgKGlfb3B0aW9uKSB7CisJaW5pdHNjcigpOworICAgIH0gZWxzZSB7CisJKHZvaWQpIG5ld3Rlcm0oKGNoYXIgKikgMCwgc3Rkb3V0LCBzdGRpbik7CisgICAgfQorICAgIGNicmVhaygpOworICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCBiYWNrZ3JvdW5kID0gQ09MT1JfQkxBQ0s7CisJc3RhcnRfY29sb3IoKTsKKyNpZiBIQVZFX1VTRV9ERUZBVUxUX0NPTE9SUworCWlmICh1c2VfZGVmYXVsdF9jb2xvcnMoKSAhPSBFUlIpCisJICAgIGJhY2tncm91bmQgPSAtMTsKKyNlbmRpZgorCWluaXRfcGFpcigxLCBDT0xPUl9DWUFOLCAoc2hvcnQpIGJhY2tncm91bmQpOworCXVuZGVybGluZSA9IENPTE9SX1BBSVIoMSk7CisgICAgfSBlbHNlIHsKKwl1bmRlcmxpbmUgPSBBX1VOREVSTElORTsKKyAgICB9CisKKyAgICB3aGlsZSAobmV3X2NvbW1hbmQoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSAtIDEsIHVuZGVybGluZSkgIT0gRVJSCisJICAgJiYgc3RybGVuKGJ1ZmZlcikgIT0gMCkgeworCXJlc2V0X3NoZWxsX21vZGUoKTsKKwlwcmludGYoIlxuIik7CisJZmZsdXNoKHN0ZG91dCk7CisJSUdOT1JFX1JDKHN5c3RlbShidWZmZXIpKTsKKwlyZXNldF9wcm9nX21vZGUoKTsKKwl0b3VjaHdpbihzdGRzY3IpOworCWVyYXNlKCk7CisJcmVmcmVzaCgpOworICAgIH0KKyAgICBwcmludHcoImRvbmUiKTsKKyAgICByZWZyZXNoKCk7CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgZmlsdGVyIGZ1bmN0aW9uXG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmIC8qIEhBVkVfRklMVEVSICovCmRpZmYgLS1naXQgYS90ZXN0L2ZpcmV3b3JrLmMgYi90ZXN0L2ZpcmV3b3JrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQzNWQ1MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZmlyZXdvcmsuYwpAQCAtMCwwICsxLDE5NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGZpcmV3b3JrLmMsdiAxLjMwIDIwMTQvMDgvMDIgMTc6MjQ6MDcgdG9tIEV4cCAkCisgKi8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKworc3RhdGljIHNob3J0IG15X2JnID0gQ09MT1JfQkxBQ0s7CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwKHZvaWQpCit7CisgICAgY3Vyc19zZXQoMSk7CisgICAgZW5kd2luKCk7Cit9CisKK3N0YXRpYyB2b2lkCitvbnNpZyhpbnQgbiBHQ0NfVU5VU0VEKQoreworICAgIGNsZWFudXAoKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZAorc2hvd2l0KHZvaWQpCit7CisgICAgaW50IGNoOworICAgIG5hcG1zKDEyMCk7CisgICAgaWYgKChjaCA9IGdldGNoKCkpICE9IEVSUikgeworI2lmZGVmIEtFWV9SRVNJWkUKKwlpZiAoY2ggPT0gS0VZX1JFU0laRSkgeworCSAgICBlcmFzZSgpOworCX0gZWxzZQorI2VuZGlmCisJaWYgKGNoID09ICdxJykgeworCSAgICBjbGVhbnVwKCk7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7CisJfSBlbHNlIGlmIChjaCA9PSAncycpIHsKKwkgICAgbm9kZWxheShzdGRzY3IsIEZBTFNFKTsKKwl9IGVsc2UgaWYgKGNoID09ICcgJykgeworCSAgICBub2RlbGF5KHN0ZHNjciwgVFJVRSk7CisJfQorICAgIH0KK30KKworc3RhdGljIHNob3J0CitnZXRfY29sb3VyKGNodHlwZSAqYm9sZCkKK3sKKyAgICBpbnQgYXR0cjsKKyAgICBhdHRyID0gKHJhbmQoKSAlIDE2KSArIDE7CisKKyAgICAqYm9sZCA9IEFfTk9STUFMOworICAgIGlmIChhdHRyID4gOCkgeworCSpib2xkID0gQV9CT0xEOworCWF0dHIgJj0gNzsKKyAgICB9CisgICAgcmV0dXJuIChzaG9ydCkgKGF0dHIpOworfQorCitzdGF0aWMKK3ZvaWQKK2V4cGxvZGUoaW50IHJvdywgaW50IGNvbCkKK3sKKyAgICBjaHR5cGUgYm9sZDsKKyAgICBlcmFzZSgpOworICAgIE12UHJpbnR3KHJvdywgY29sLCAiLSIpOworICAgIHNob3dpdCgpOworCisgICAgaW5pdF9wYWlyKDEsIGdldF9jb2xvdXIoJmJvbGQpLCBteV9iZyk7CisgICAgKHZvaWQpIGF0dHJzZXQoQXR0ckFyZyhDT0xPUl9QQUlSKDEpLCBib2xkKSk7CisgICAgTXZQcmludHcocm93IC0gMSwgY29sIC0gMSwgIiAtICIpOworICAgIE12UHJpbnR3KHJvdyArIDAsIGNvbCAtIDEsICItKy0iKTsKKyAgICBNdlByaW50dyhyb3cgKyAxLCBjb2wgLSAxLCAiIC0gIik7CisgICAgc2hvd2l0KCk7CisKKyAgICBpbml0X3BhaXIoMSwgZ2V0X2NvbG91cigmYm9sZCksIG15X2JnKTsKKyAgICAodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoMSksIGJvbGQpKTsKKyAgICBNdlByaW50dyhyb3cgLSAyLCBjb2wgLSAyLCAiIC0tLSAiKTsKKyAgICBNdlByaW50dyhyb3cgLSAxLCBjb2wgLSAyLCAiLSsrKy0iKTsKKyAgICBNdlByaW50dyhyb3cgKyAwLCBjb2wgLSAyLCAiLSsjKy0iKTsKKyAgICBNdlByaW50dyhyb3cgKyAxLCBjb2wgLSAyLCAiLSsrKy0iKTsKKyAgICBNdlByaW50dyhyb3cgKyAyLCBjb2wgLSAyLCAiIC0tLSAiKTsKKyAgICBzaG93aXQoKTsKKworICAgIGluaXRfcGFpcigxLCBnZXRfY29sb3VyKCZib2xkKSwgbXlfYmcpOworICAgICh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoQ09MT1JfUEFJUigxKSwgYm9sZCkpOworICAgIE12UHJpbnR3KHJvdyAtIDIsIGNvbCAtIDIsICIgKysrICIpOworICAgIE12UHJpbnR3KHJvdyAtIDEsIGNvbCAtIDIsICIrKyMrKyIpOworICAgIE12UHJpbnR3KHJvdyArIDAsIGNvbCAtIDIsICIrIyAjKyIpOworICAgIE12UHJpbnR3KHJvdyArIDEsIGNvbCAtIDIsICIrKyMrKyIpOworICAgIE12UHJpbnR3KHJvdyArIDIsIGNvbCAtIDIsICIgKysrICIpOworICAgIHNob3dpdCgpOworCisgICAgaW5pdF9wYWlyKDEsIGdldF9jb2xvdXIoJmJvbGQpLCBteV9iZyk7CisgICAgKHZvaWQpIGF0dHJzZXQoQXR0ckFyZyhDT0xPUl9QQUlSKDEpLCBib2xkKSk7CisgICAgTXZQcmludHcocm93IC0gMiwgY29sIC0gMiwgIiAgIyAgIik7CisgICAgTXZQcmludHcocm93IC0gMSwgY29sIC0gMiwgIiMjICMjIik7CisgICAgTXZQcmludHcocm93ICsgMCwgY29sIC0gMiwgIiMgICAjIik7CisgICAgTXZQcmludHcocm93ICsgMSwgY29sIC0gMiwgIiMjICMjIik7CisgICAgTXZQcmludHcocm93ICsgMiwgY29sIC0gMiwgIiAgIyAgIik7CisgICAgc2hvd2l0KCk7CisKKyAgICBpbml0X3BhaXIoMSwgZ2V0X2NvbG91cigmYm9sZCksIG15X2JnKTsKKyAgICAodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoMSksIGJvbGQpKTsKKyAgICBNdlByaW50dyhyb3cgLSAyLCBjb2wgLSAyLCAiICMgIyAiKTsKKyAgICBNdlByaW50dyhyb3cgLSAxLCBjb2wgLSAyLCAiIyAgICMiKTsKKyAgICBNdlByaW50dyhyb3cgKyAwLCBjb2wgLSAyLCAiICAgICAiKTsKKyAgICBNdlByaW50dyhyb3cgKyAxLCBjb2wgLSAyLCAiIyAgICMiKTsKKyAgICBNdlByaW50dyhyb3cgKyAyLCBjb2wgLSAyLCAiICMgIyAiKTsKKyAgICBzaG93aXQoKTsKK30KKworaW50CittYWluKAorCWludCBhcmdjIEdDQ19VTlVTRUQsCisJY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgc3RhcnQsIGVuZCwgcm93LCBkaWZmLCBmbGFnID0gMCwgZGlyZWN0aW9uOworICAgIHVuc2lnbmVkIHNlZWQ7CisKKyAgICBDQVRDSEFMTChvbnNpZyk7CisKKyAgICBpbml0c2NyKCk7CisgICAgbm9lY2hvKCk7CisgICAgY2JyZWFrKCk7CisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisgICAgbm9kZWxheShzdGRzY3IsIFRSVUUpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIG15X2JnID0gLTE7CisjZW5kaWYKKyAgICB9CisgICAgY3Vyc19zZXQoMCk7CisKKyAgICBzZWVkID0gKHVuc2lnbmVkKSB0aW1lKCh0aW1lX3QgKikgMCk7CisgICAgc3JhbmQoc2VlZCk7CisgICAgZm9yICg7OykgeworCWRvIHsKKwkgICAgc3RhcnQgPSByYW5kKCkgJSAoQ09MUyAtIDMpOworCSAgICBlbmQgPSByYW5kKCkgJSAoQ09MUyAtIDMpOworCSAgICBzdGFydCA9IChzdGFydCA8IDIpID8gMiA6IHN0YXJ0OworCSAgICBlbmQgPSAoZW5kIDwgMikgPyAyIDogZW5kOworCSAgICBkaXJlY3Rpb24gPSAoc3RhcnQgPiBlbmQpID8gLTEgOiAxOworCSAgICBkaWZmID0gYWJzKHN0YXJ0IC0gZW5kKTsKKwl9IHdoaWxlIChkaWZmIDwgMiB8fCBkaWZmID49IExJTkVTIC0gMik7CisJKHZvaWQpIGF0dHJzZXQoQXR0ckFyZygwLCBBX05PUk1BTCkpOworCWZvciAocm93ID0gMDsgcm93IDwgZGlmZjsgcm93KyspIHsKKwkgICAgTXZQcmludHcoTElORVMgLSByb3csIHN0YXJ0ICsgKHJvdyAqIGRpcmVjdGlvbiksCisJCSAgICAgKGRpcmVjdGlvbiA8IDApID8gIlxcIiA6ICIvIik7CisJICAgIGlmIChmbGFnKyspIHsKKwkJc2hvd2l0KCk7CisJCWVyYXNlKCk7CisJCWZsYWcgPSAwOworCSAgICB9CisJfQorCWlmIChmbGFnKyspIHsKKwkgICAgc2hvd2l0KCk7CisJICAgIGZsYWcgPSAwOworCX0KKwlzZWVkID0gKHVuc2lnbmVkKSB0aW1lKCh0aW1lX3QgKikgMCk7CisJc3JhbmQoc2VlZCk7CisJZXhwbG9kZShMSU5FUyAtIHJvdywgc3RhcnQgKyAoZGlmZiAqIGRpcmVjdGlvbikpOworCWVyYXNlKCk7CisJc2hvd2l0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVzdC9maXJzdGxhc3QuYyBiL3Rlc3QvZmlyc3RsYXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzMjhjNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZmlyc3RsYXN0LmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogVGhpcyB0ZXN0IHdhcyB3cml0dGVuIGJ5IEFsZXhhbmRlciBWLiBMdWt5YW5vdiB0byBkZW1vbnN0cmF0ZSBkaWZmZXJlbmNlCisgKiBiZXR3ZWVuIG5jdXJzZXMgNC4xIGFuZCBTVlI0IGN1cnNlcworICoKKyAqICRJZDogZmlyc3RsYXN0LmMsdiAxLjcgMjAxMC8wNS8wMSAxOToxMTo1NSB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKK3N0YXRpYyB2b2lkCitmaWxsKFdJTkRPVyAqdywgY29uc3QgY2hhciAqc3RyKQoreworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgaW50IHgwID0gLTEsIHkwID0gLTE7CisgICAgaW50IHgxLCB5MTsKKworICAgIGZvciAoOzspIHsKKwlmb3IgKHMgPSBzdHI7ICpzOyBzKyspIHsKKwkgICAgZ2V0eXgodywgeTEsIHgxKTsKKwkgICAgaWYgKHdhZGRjaCh3LCBVQ2hhcigqcykpID09IEVSUgorCQl8fCAoeDEgPT0geDAgJiYgeTEgPT0geTApKSB7CisJCXdtb3ZlKHcsIDAsIDApOworCQlyZXR1cm47CisJICAgIH0KKwkgICAgeDAgPSB4MTsKKwkgICAgeTAgPSB5MTsKKwl9CisgICAgfQorfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwKKyAgICAgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBXSU5ET1cgKmxhcmdlLCAqc21hbGw7CisgICAgaW5pdHNjcigpOworICAgIG5vZWNobygpOworCisgICAgbGFyZ2UgPSBuZXd3aW4oMjAsIDYwLCAyLCAxMCk7CisgICAgc21hbGwgPSBuZXd3aW4oMTAsIDMwLCA3LCAyNSk7CisKKyAgICAvKiB0ZXN0IDEgLSBhZGRjaCAqLworICAgIGZpbGwobGFyZ2UsICJMYXJnZVdpbmRvdyIpOworCisgICAgcmVmcmVzaCgpOworICAgIHdyZWZyZXNoKGxhcmdlKTsKKyAgICB3cmVmcmVzaChzbWFsbCk7CisKKyAgICBNdldBZGRTdHIoc21hbGwsIDUsIDUsICIgICBUZXN0IDxwbGFjZSB0byBjaGFuZ2U+IFN0cmluZyAgICIpOworICAgIHdyZWZyZXNoKHNtYWxsKTsKKyAgICBnZXRjaCgpOworCisgICAgdG91Y2h3aW4obGFyZ2UpOworICAgIHdyZWZyZXNoKGxhcmdlKTsKKworICAgIE12V0FkZFN0cihzbWFsbCwgNSwgNSwgIiAgIFRlc3QgPCoqKioqKioqKioqKioqKj4gU3RyaW5nICAgIik7CisgICAgd3JlZnJlc2goc21hbGwpOworCisgICAgLyogRElGRkVSRU5DRSEgKi8KKyAgICBnZXRjaCgpOworCisgICAgLyogdGVzdCAyOiBlcmFzZSAqLworICAgIGVyYXNlKCk7CisgICAgcmVmcmVzaCgpOworICAgIGdldGNoKCk7CisKKyAgICAvKiB0ZXN0IDM6IGNscnRvZW9sICovCisgICAgd2VyYXNlKHNtYWxsKTsKKyAgICB3cmVmcmVzaChzbWFsbCk7CisgICAgdG91Y2h3aW4obGFyZ2UpOworICAgIHdyZWZyZXNoKGxhcmdlKTsKKyAgICB3bW92ZShzbWFsbCwgNSwgMCk7CisgICAgd2FkZHN0cihzbWFsbCwgIiBjbHJ0b2VvbD4iKTsKKyAgICB3Y2xydG9lb2woc21hbGwpOworICAgIHdyZWZyZXNoKHNtYWxsKTsKKworICAgIC8qIERJRkZFUkVOQ0UhICovIDsKKyAgICBnZXRjaCgpOworCisgICAgLyogdGVzdCA0OiBjbHJ0b2JvdCAqLworICAgIHdlcmFzZShzbWFsbCk7CisgICAgd3JlZnJlc2goc21hbGwpOworICAgIHRvdWNod2luKGxhcmdlKTsKKyAgICB3cmVmcmVzaChsYXJnZSk7CisgICAgd21vdmUoc21hbGwsIDUsIDMpOworICAgIHdhZGRzdHIoc21hbGwsICIgY2xydG9ib3Q+Iik7CisgICAgd2NscnRvYm90KHNtYWxsKTsKKyAgICB3cmVmcmVzaChzbWFsbCk7CisKKyAgICAvKiBESUZGRVJFTkNFISAqLworICAgIGdldGNoKCk7CisKKyAgICBlbmR3aW4oKTsKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2ZvbGRrZXlzLmMgYi90ZXN0L2ZvbGRrZXlzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlMjVlMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZm9sZGtleXMuYwpAQCAtMCwwICsxLDI2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF1dGhvcjogVGhvbWFzIEUuIERpY2tleSwgMjAwNgorICoKKyAqICRJZDogZm9sZGtleXMuYyx2IDEuNCAyMDEwLzExLzE0IDAxOjAwOjUzIHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIGEgbWV0aG9kIGZvciBhbHRlcmluZyBrZXkgZGVmaW5pdGlvbnMgYXQgcnVudGltZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gcmVhZHMgdGhlIGtleSBkZWZpbml0aW9ucywgbWVyZ2luZyB0aG9zZSB3aGljaCBoYXZlIHh0ZXJtLXN0eWxlCisgKiBtb2RpZmllcnMgaW50byB0aGVpciBlcXVpdmFsZW50cyB3aGljaCBoYXZlIG5vIG1vZGlmaWVycy4gIEl0IGRvZXMgdGhpcworICogbWVyZ2luZyBvbmx5IGZvciB0aGUga2V5cyB3aGljaCBhcmUgZGVmaW5lZCBpbiB0aGUgdGVybWluYWwgZGVzY3JpcHRpb24uCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIE5DVVJTRVNfRVhUX0ZVTkNTCisKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBNWV9MT0dGSUxFICJkZW1vX2ZvbGRrZXlzLmxvZyIKKyNkZWZpbmUgTVlfS0VZUyAoS0VZX01BWCArIDEpCisKKy8qCisgKiBMb2cgdGhlIG1vc3QgcmVjZW50bHktd3JpdHRlbiBsaW5lIHRvIG91ciBsb2dmaWxlCisgKi8KK3N0YXRpYyB2b2lkCitsb2dfbGFzdF9saW5lKFdJTkRPVyAqd2luKQoreworICAgIEZJTEUgKmZwOworICAgIGludCB5LCB4LCBuOworICAgIGNoYXIgdGVtcFsyNTZdOworCisgICAgaWYgKChmcCA9IGZvcGVuKE1ZX0xPR0ZJTEUsICJhIikpICE9IDApIHsKKwlpbnQgbmVlZCA9IHNpemVvZih0ZW1wKSAtIDE7CisJaWYgKG5lZWQgPiBDT0xTKQorCSAgICBuZWVkID0gQ09MUzsKKwlnZXR5eCh3aW4sIHksIHgpOworCXdtb3ZlKHdpbiwgeSAtIDEsIDApOworCW4gPSB3aW5uc3RyKHdpbiwgdGVtcCwgbmVlZCk7CisJd2hpbGUgKG4tLSA+IDApIHsKKwkgICAgaWYgKGlzc3BhY2UoVUNoYXIodGVtcFtuXSkpKQorCQl0ZW1wW25dID0gJ1wwJzsKKwkgICAgZWxzZQorCQlicmVhazsKKwl9CisJd21vdmUod2luLCB5LCB4KTsKKwlmcHJpbnRmKGZwLCAiJXNcbiIsIHRlbXApOworCWZjbG9zZShmcCk7CisgICAgfQorfQorCisvKgorICogbmN1cnNlcyBoYXMgbm8gQVBJIGZvciB0ZWxsaW5nIHdoYXQgdGhlIGFjdHVhbCBsYXN0IGtleS1jb2RlIGlzLiAgVGhhdCBpcworICogYSBzZWNyZXQgYmVjYXVzZSB0aGUgY29kZXMgcGFzdCBLRVlfTUFYIGFyZSBjb21wdXRlZCBhdCBydW4tdGltZSBhbmQgbWF5CisgKiBkaWZmZXIgZGVwZW5kaW5nIG9uIHRoZSBwcmV2aW91cyBjYWxscyB0byBuZXd0ZXJtKCksIGV0Yy4gIEl0IGlzIHVubGlrZWx5CisgKiB0aGF0IG9uZSBjb3VsZCBoYXZlIG1vcmUgdGhhbiBhIHRob3VzYW5kIGtleSBkZWZpbml0aW9ucy4uLgorICovCisjZGVmaW5lIE1BWF9LRVlTIDIwMDAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgY29uc3QgY2hhciAqdmFsdWU7CisgICAgaW50IGNvZGU7CisgICAgaW50IHN0YXRlOworfSBLZXlJbmZvOworCitzdGF0aWMgdm9pZAorZGVtb19mb2xka2V5cyh2b2lkKQoreworICAgIEtleUluZm8gaW5mb1tNQVhfS0VZU107CisgICAgaW50IGluZm9fbGVuID0gMDsKKyAgICBpbnQgbWVyZ2VkID0gMDsKKyAgICBpbnQgY29kZTsKKyAgICBpbnQgaiwgazsKKworICAgIC8qCisgICAgICogVGVsbCBuY3Vyc2VzIHRoYXQgd2Ugd2FudCB0byB1c2UgZnVuY3Rpb24ga2V5cy4gIFRoYXQgd2lsbCBtYWtlIGl0IGFkZAorICAgICAqIGFueSB1c2VyLWRlZmluZWQga2V5cyB0aGF0IGFwcGVhciBpbiB0aGUgdGVybWluZm8uCisgICAgICovCisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisKKyAgICAvKgorICAgICAqIExpc3QgdGhlIHByZWRlZmluZWQga2V5cyB1c2luZyB0aGUgc3RybmFtZXNbXSBhcnJheS4KKyAgICAgKi8KKyAgICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgU1RSQ09VTlQ7ICsrY29kZSkgeworCU5DVVJTRVNfQ09OU1QgY2hhciAqbmFtZSA9IHN0cm5hbWVzW2NvZGVdOworCU5DVVJTRVNfQ09OU1QgY2hhciAqdmFsdWUgPSB0aWdldHN0cihuYW1lKTsKKwlpZiAodmFsdWUgIT0gMCAmJiB2YWx1ZSAhPSAoTkNVUlNFU19DT05TVCBjaGFyICopIC0xKSB7CisJICAgIGluZm9baW5mb19sZW5dLm5hbWUgPSBzdHJuYW1lc1tjb2RlXTsKKwkgICAgaW5mb1tpbmZvX2xlbl0uY29kZSA9IGtleV9kZWZpbmVkKHZhbHVlKTsKKwkgICAgaW5mb1tpbmZvX2xlbl0udmFsdWUgPSB2YWx1ZTsKKwkgICAgaW5mb1tpbmZvX2xlbl0uc3RhdGUgPSAwOworCSAgICBpZiAoaW5mb1tpbmZvX2xlbl0uY29kZSA+IDApCisJCSsraW5mb19sZW47CisJfQorICAgIH0KKworICAgIC8qCisgICAgICogV2UgY2FuIGdldCB0aGUgbmFtZXMgZm9yIHVzZXItZGVmaW5lZCBrZXlzIGZyb20ga2V5bmFtZSgpLiAgSXQgcmV0dXJucworICAgICAqIGEgbmFtZSBsaWtlIEtFWV9mb28gZm9yIHRoZSBwcmVkZWZpbmVkIGtleXMsIHdoaWNoIHRpZ2V0c3RyKCkgZG9lcyBub3QKKyAgICAgKiB1bmRlcnN0YW5kLgorICAgICAqLworICAgIGZvciAoY29kZSA9IEtFWV9NQVg7IGNvZGUgPCBNQVhfS0VZUzsgKytjb2RlKSB7CisJTkNVUlNFU19DT05TVCBjaGFyICpuYW1lID0ga2V5bmFtZShjb2RlKTsKKwlpZiAobmFtZSAhPSAwKSB7CisJICAgIGluZm9baW5mb19sZW5dLm5hbWUgPSBuYW1lOworCSAgICBpbmZvW2luZm9fbGVuXS5jb2RlID0gY29kZTsKKwkgICAgaW5mb1tpbmZvX2xlbl0udmFsdWUgPSB0aWdldHN0cihuYW1lKTsKKwkgICAgaW5mb1tpbmZvX2xlbl0uc3RhdGUgPSAwOworCSAgICArK2luZm9fbGVuOworCX0KKyAgICB9CisgICAgcHJpbnR3KCJJbml0aWFsbHkgJWQga2V5IGRlZmluaXRpb25zXG4iLCBpbmZvX2xlbik7CisKKyAgICAvKgorICAgICAqIExvb2sgZm9yIGtleXMgdGhhdCBoYXZlIHh0ZXJtLXN0eWxlIG1vZGlmaWVycy4KKyAgICAgKi8KKyAgICBmb3IgKGogPSAwOyBqIDwgaW5mb19sZW47ICsraikgeworCWludCBmaXJzdCwgc2Vjb25kOworCWNoYXIgZmluYWxbMl07CisJY2hhciAqdmFsdWU7CisJaWYgKGluZm9bal0uc3RhdGUgPT0gMAorCSAgICAmJiBzc2NhbmYoaW5mb1tqXS52YWx1ZSwKKwkJICAgICAgIlwwMzNbJWQ7JWQlYyIsCisJCSAgICAgICZmaXJzdCwKKwkJICAgICAgJnNlY29uZCwKKwkJICAgICAgZmluYWwpID09IDMKKwkgICAgJiYgKmZpbmFsICE9ICc7JworCSAgICAmJiAodmFsdWUgPSBzdHJkdXAoaW5mb1tqXS52YWx1ZSkpICE9IDApIHsKKwkgICAgc3ByaW50Zih2YWx1ZSwgIlwwMzNbJWQlYyIsIGZpcnN0LCAqZmluYWwpOworCSAgICBmb3IgKGsgPSAwOyBrIDwgaW5mb19sZW47ICsraykgeworCQlpZiAoaW5mb1trXS5zdGF0ZSA9PSAwCisJCSAgICAmJiAhc3RyY21wKGluZm9ba10udmFsdWUsIHZhbHVlKSkgeworCQkgICAgaW5mb1tqXS5zdGF0ZSA9IDE7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIGlmIChpbmZvW2pdLnN0YXRlID09IDApIHsKKwkJc3ByaW50Zih2YWx1ZSwgIlwwMzNPJWMiLCAqZmluYWwpOworCQlmb3IgKGsgPSAwOyBrIDwgaW5mb19sZW47ICsraykgeworCQkgICAgaWYgKGluZm9ba10uc3RhdGUgPT0gMAorCQkJJiYgIXN0cmNtcChpbmZvW2tdLnZhbHVlLCB2YWx1ZSkpIHsKKwkJCWluZm9bal0uc3RhdGUgPSAxOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBpZiAoaW5mb1tqXS5zdGF0ZSA9PSAxKSB7CisJCWlmICgoZGVmaW5lX2tleShpbmZvW2pdLnZhbHVlLCBpbmZvW2tdLmNvZGUpKSAhPSBFUlIpIHsKKwkJICAgIHByaW50dygibWFwICVzIHRvICVzXG4iLCBpbmZvW2pdLnZhbHVlLCBpbmZvW2tdLnZhbHVlKTsKKwkJICAgIGtleW9rKGluZm9bal0uY29kZSwgRkFMU0UpOworCQkgICAgKyttZXJnZWQ7CisJCX0gZWxzZSB7CisJCSAgICBwcmludHcoIj8gY2Fubm90IGRlZmluZV9rZXkgJWQ6JXNcbiIsIGosIGluZm9bal0udmFsdWUpOworCQl9CisJICAgIH0gZWxzZSB7CisJCXByaW50dygiPyBjYW5ub3QgbWVyZ2UgJWQ6JXNcbiIsIGosIGluZm9bal0udmFsdWUpOworCSAgICB9CisJICAgIGZyZWUodmFsdWUpOworCX0KKyAgICB9CisgICAgcHJpbnR3KCJNZXJnZWQgdG8gJWQga2V5IGRlZmluaXRpb25zXG4iLCBpbmZvX2xlbiAtIG1lcmdlZCk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBjaDsKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIGludCBzZWNzLCBtc2VjczsKKyAgICBzdHJ1Y3QgdGltZXZhbCBjdXJyZW50LCBwcmV2aW91czsKKyNlbmRpZgorCisgICAgdW5saW5rKE1ZX0xPR0ZJTEUpOworCisgICAgbmV3dGVybSgwLCBzdGRvdXQsIHN0ZGluKTsKKyAgICAodm9pZCkgY2JyZWFrKCk7CQkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisgICAgKHZvaWQpIG5vZWNobygpOwkJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworCisgICAgc2Nyb2xsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKyAgICBtb3ZlKDAsIDApOworCisgICAgZGVtb19mb2xka2V5cygpOworCisjaWYgSEFWRV9HRVRUSU1FT0ZEQVkKKyAgICBnZXR0aW1lb2ZkYXkoJnByZXZpb3VzLCAwKTsKKyNlbmRpZgorCisgICAgd2hpbGUgKChjaCA9IGdldGNoKCkpICE9IEVSUikgeworCWJvb2wgZXNjYXBlZCA9IChjaCA+PSBNWV9LRVlTKTsKKwljb25zdCBjaGFyICpuYW1lID0ga2V5bmFtZShlc2NhcGVkID8gKGNoIC0gTVlfS0VZUykgOiBjaCk7CisKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorCWdldHRpbWVvZmRheSgmY3VycmVudCwgMCk7CisJc2VjcyA9IChpbnQpIChjdXJyZW50LnR2X3NlYyAtIHByZXZpb3VzLnR2X3NlYyk7CisJbXNlY3MgPSAoaW50KSAoKGN1cnJlbnQudHZfdXNlYyAtIHByZXZpb3VzLnR2X3VzZWMpIC8gMTAwMCk7CisJaWYgKG1zZWNzIDwgMCkgeworCSAgICBtc2VjcyArPSAxMDAwOworCSAgICAtLXNlY3M7CisJfQorCWlmIChtc2VjcyA+PSAxMDAwKSB7CisJICAgIHNlY3MgKz0gbXNlY3MgLyAxMDAwOworCSAgICBtc2VjcyAlPSAxMDAwOworCX0KKwlwcmludHcoIiU2ZC4lMDNkICIsIHNlY3MsIG1zZWNzKTsKKwlwcmV2aW91cyA9IGN1cnJlbnQ7CisjZW5kaWYKKwlwcmludHcoIktleWNvZGUgJWQsIG5hbWUgJXMlc1xuIiwKKwkgICAgICAgY2gsCisJICAgICAgIGVzY2FwZWQgPyAiRVNDLSIgOiAiIiwKKwkgICAgICAgbmFtZSAhPSAwID8gbmFtZSA6ICI8bnVsbD4iKTsKKwlsb2dfbGFzdF9saW5lKHN0ZHNjcik7CisJY2xydG9lb2woKTsKKwlpZiAoY2ggPT0gJ3EnKQorCSAgICBicmVhazsKKyAgICB9CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2Zvcm1fZHJpdmVyX3cuYyBiL3Rlc3QvZm9ybV9kcml2ZXJfdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlOTI4YWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2Zvcm1fZHJpdmVyX3cuYwpAQCAtMCwwICsxLDE1MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMywyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgQXV0aG9yOiAgR2F1dGUgSG9wZSwgMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqICRJZDogZm9ybV9kcml2ZXJfdy5jLHYgMS4xMyAyMDE0LzA4LzAyIDE3OjI0OjU1IHRvbSBFeHAgJAorICoKKyAqIFRlc3QgZm9ybV9kcml2ZXJfdyAoaW50LCBpbnQsIHdjaGFyX3QpLCBhIHdpZGUgY2hhciBhd2FyZQorICogcmVwbGFjZW1lbnQgb2YgZm9ybV9kcml2ZXIuCisgKi8KKworI2luY2x1ZGUgPGxvY2FsZS5oPgorCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVCAmJiBVU0VfTElCRk9STSAmJiAoZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpICYmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCA+PSAyMDEzMTIwNykKKworI2luY2x1ZGUgPGZvcm0uaD4KKworaW50CittYWluKHZvaWQpCit7CisgICAgRklFTEQgKmZpZWxkWzNdOworICAgIEZPUk0gKm15X2Zvcm07CisgICAgYm9vbCBkb25lID0gRkFMU0U7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICAvKiBJbml0aWFsaXplIGN1cnNlcyAqLworICAgIGluaXRzY3IoKTsKKyAgICBjYnJlYWsoKTsKKyAgICBub2VjaG8oKTsKKyAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKworICAgIC8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyAqLworICAgIGZpZWxkWzBdID0gbmV3X2ZpZWxkKDEsIDEwLCA0LCAxOCwgMCwgMCk7CisgICAgZmllbGRbMV0gPSBuZXdfZmllbGQoMSwgMTAsIDYsIDE4LCAwLCAwKTsKKyAgICBmaWVsZFsyXSA9IE5VTEw7CisKKyAgICAvKiBTZXQgZmllbGQgb3B0aW9ucyAqLworICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzBdLCBBX1VOREVSTElORSk7CS8qIFByaW50IGEgbGluZSBmb3IgdGhlIG9wdGlvbiAgKi8KKyAgICBmaWVsZF9vcHRzX29mZihmaWVsZFswXSwgT19BVVRPU0tJUCk7CS8qIERvbid0IGdvIHRvIG5leHQgZmllbGQgd2hlbiB0aGlzICovCisgICAgLyogRmllbGQgaXMgZmlsbGVkIHVwICAgICAgICAgICAqLworICAgIHNldF9maWVsZF9iYWNrKGZpZWxkWzFdLCBBX1VOREVSTElORSk7CisgICAgZmllbGRfb3B0c19vZmYoZmllbGRbMV0sIE9fQVVUT1NLSVApOworCisgICAgLyogQ3JlYXRlIHRoZSBmb3JtIGFuZCBwb3N0IGl0ICovCisgICAgbXlfZm9ybSA9IG5ld19mb3JtKGZpZWxkKTsKKyAgICBwb3N0X2Zvcm0obXlfZm9ybSk7CisgICAgcmVmcmVzaCgpOworCisgICAgbXZwcmludHcoNCwgMTAsICJWYWx1ZSAxOiIpOworICAgIG12cHJpbnR3KDYsIDEwLCAiVmFsdWUgMjoiKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICAvKiBMb29wIHRocm91Z2ggdG8gZ2V0IHVzZXIgcmVxdWVzdHMgKi8KKyAgICB3aGlsZSAoIWRvbmUpIHsKKwl3aW50X3QgY2g7CisJaW50IHJldCA9IGdldF93Y2goJmNoKTsKKworCW12cHJpbnR3KDgsIDEwLCAiR290ICVkICglI3gpLCB0eXBlOiAlcyIsIChpbnQpIGNoLCAoaW50KSBjaCwKKwkJIChyZXQgPT0gS0VZX0NPREVfWUVTKQorCQkgPyAiS0VZX0NPREVfWUVTIgorCQkgOiAoKHJldCA9PSBPSykKKwkJICAgID8gIk9LIgorCQkgICAgOiAoKHJldCA9PSBFUlIpCisJCSAgICAgICA/ICJFUlIiCisJCSAgICAgICA6ICI/IikpKTsKKwljbHJ0b2VvbCgpOworCisJc3dpdGNoIChyZXQpIHsKKwljYXNlIEtFWV9DT0RFX1lFUzoKKwkgICAgc3dpdGNoIChjaCkgeworCSAgICBjYXNlIEtFWV9ET1dOOgorCQkvKiBHbyB0byBuZXh0IGZpZWxkICovCisJCWZvcm1fZHJpdmVyX3cobXlfZm9ybSwgS0VZX0NPREVfWUVTLCBSRVFfTkVYVF9GSUVMRCk7CisJCS8qIEdvIHRvIHRoZSBlbmQgb2YgdGhlIHByZXNlbnQgYnVmZmVyICovCisJCS8qIExlYXZlcyBuaWNlbHkgYXQgdGhlIGxhc3QgY2hhcmFjdGVyICovCisJCWZvcm1fZHJpdmVyX3cobXlfZm9ybSwgS0VZX0NPREVfWUVTLCBSRVFfRU5EX0xJTkUpOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfVVA6CisJCS8qIEdvIHRvIHByZXZpb3VzIGZpZWxkICovCisJCWZvcm1fZHJpdmVyX3cobXlfZm9ybSwgS0VZX0NPREVfWUVTLCBSRVFfUFJFVl9GSUVMRCk7CisJCWZvcm1fZHJpdmVyX3cobXlfZm9ybSwgS0VZX0NPREVfWUVTLCBSRVFfRU5EX0xJTkUpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBPSzoKKwkgICAgc3dpdGNoIChjaCkgeworCSAgICBjYXNlIENUUkwoJ0QnKToKKwkgICAgY2FzZSBRVUlUOgorCSAgICBjYXNlIEVTQ0FQRToKKwkJZG9uZSA9IFRSVUU7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlmb3JtX2RyaXZlcl93KG15X2Zvcm0sIE9LLCAod2NoYXJfdCkgY2gpOworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgLyogVW4gcG9zdCBmb3JtIGFuZCBmcmVlIHRoZSBtZW1vcnkgKi8KKyAgICB1bnBvc3RfZm9ybShteV9mb3JtKTsKKyAgICBmcmVlX2Zvcm0obXlfZm9ybSk7CisgICAgZnJlZV9maWVsZChmaWVsZFswXSk7CisgICAgZnJlZV9maWVsZChmaWVsZFsxXSk7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHdpZGUtbmN1cnNlcyBhbmQgZm9ybXMgbGlicmFyeVxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZiAvKiBVU0VfV0lERUNfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvdGVzdC9nZGMuNiBiL3Rlc3QvZ2RjLjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQzYTRmMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZ2RjLjYKQEAgLTAsMCArMSw2NCBAQAorLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKy5cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisuXCIgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKy5cIiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorLlwiIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisuXCIgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKy5cIiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorLlwiIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorLlwiIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisuXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorLlwiIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisuXCIgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKy5cIiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorLlwiIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisuXCIgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKy5cIiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisuXCIgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKy5cIiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorLlwiIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisuXCIgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuXCIgJElkOiBnZGMuNix2IDEuMyAyMDA2LzA0LzIyIDIzOjAyOjE1IHRvbSBFeHAgJAorLlRIIEdEQyA2CisuU0ggTkFNRQorZ2RjIFwtIGdyYW5kIGRpZ2l0YWwgY2xvY2sgKGN1cnNlcykKKy5TSCBTWU5PUFNJUworLkIgZ2RjCitbLW5dIFsKK1stc10gWworLkkgbgorXQorLlNIIERFU0NSSVBUSU9OCisuSSBHZGMKK3J1bnMgYSBkaWdpdGFsIGNsb2NrIG1hZGUgb2YgcmV2ZXJzZS12aWRlbyBibGFua3Mgb24gYSB0ZXJtaW5hbCBzY3JlZW4uCitJZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgY29sb3IsIHRoZSBjbG9jayBpcyBkcmF3biBpbiByZWQuCitZb3UgY2FuIG1ha2UgdGhlIGNsb2NrIHN0b3AsIHBhdXNlIG9yIHJlc3VtZSBieSBwcmVzc2luZyBhIGBgcScnLAorYGBzJycgb3Igc3BhY2UsIHJlc3BlY3RpdmVseS4KKy5TSCBPUFRJT05TCisuVFAKKy5CIC1uCityZWRpcmVjdHMgaW5wdXQgdG8gL2Rldi9udWxsLCBtYWtpbmcgaXQgaWdub3JlIHRoZSBzdG9wL3BhdXNlIGNvbW1hbmRzLgorWW91IGNhbiBzdGlsbCBzdG9wIGl0IGJ5IHByZXNzaW5nIHRoZSBpbnRlcnJ1cHQga2V5LgorLlRQCisuQiAtcworbWFrZXMgZGlnaXRzIHNjcm9sbCBhcyB0aGV5IGNoYW5nZS4KK1doZW4gcnVubmluZyBvbiBhIGZhc3QgZGlzcGxheSwgdGhlIHByb2dyYW0gYnJlYWtzIHVwIHRoZSBzY3JvbGxpbmcgaW50bworc3Vic2Vjb25kIHJlcGFpbnRzLCBtYWtpbmcgdGhlIG9wZXJhdGlvbiBhcHBlYXIgc21vb3RoLgorLlBQCitXaXRoIGFuIG9wdGlvbmFsIG51bWVyaWMgYXJndW1lbnQKKy5JIG51bQoraXQgc3RvcHMgYWZ0ZXIKKy5JIG51bQorc2Vjb25kcy4KK05vcm1hbGx5IGl0IHJ1bnMgImZvcmV2ZXIiIChjb3VudGluZyBkb3duIGZyb20gMiBiaWxsaW9uIHNlY29uZHMpLgorLlNIIEFVVEhPUgorQW1vcyBTaGFwaXIsIG1vZGlmaWVkIGZvciBjdXJzZXMgYnkgSm9obiBMdXBpZW4uCitJbXByb3ZlbWVudHMgZm9yIG5jdXJzZXMgYnkgVGhvbWFzIERpY2tleS4KZGlmZiAtLWdpdCBhL3Rlc3QvZ2RjLmMgYi90ZXN0L2dkYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGU2YzgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2dkYy5jCkBAIC0wLDAgKzEsNDQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEdyYW5kIGRpZ2l0YWwgY2xvY2sgZm9yIGN1cnNlcyBjb21wYXRpYmxlIHRlcm1pbmFscworICogVXNhZ2U6IGdkYyBbLXNdIFstdCBoaDptbTpzc10gW25dIC0tIHJ1biBmb3IgbiBzZWNvbmRzIChkZWZhdWx0IGluZmluaXR5KQorICogRmxhZ3M6IC1zOiBzY3JvbGwKKyAqCisgKiBtb2RpZmllZCAxMC0xOC04OSBmb3IgY3Vyc2VzIChqcmwpCisgKiAxMC0xOC04OSBhZGRlZCBzaWduYWwgaGFuZGxpbmcKKyAqCisgKiAkSWQ6IGdkYy5jLHYgMS40NCAyMDE1LzA3LzA0IDIxOjI4OjI4IHRvbSBFeHAgJAorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2RlZmluZSBZQkFTRQkxMAorI2RlZmluZSBYQkFTRQkxMAorI2RlZmluZSBYTEVOR1RICTU0CisjZGVmaW5lIFlERVBUSAk1CisKKyNkZWZpbmUgUEFJUl9ESUdJVFMgMQorI2RlZmluZSBQQUlSX09USEVSUyAyCisjZGVmaW5lIFBBSVJfRlJBTUVTIDMKKworc3RhdGljIHNob3J0IGRpc3BbMTFdID0KK3sKKyAgICAwNzU1NTcsIDAxMTExMSwgMDcxNzQ3LCAwNzE3MTcsIDA1NTcxMSwKKyAgICAwNzQ3MTcsIDA3NDc1NywgMDcxMTExLCAwNzU3NTcsIDA3NTcxNywgMDAyMDIwCit9Oworc3RhdGljIGxvbmcgb2xkZXJbNl0sIG5leHRbNl0sIG5ld2VyWzZdLCBtYXNrOworCitzdGF0aWMgaW50IHNpZ3Rlcm1lZCA9IDA7CitzdGF0aWMgYm9vbCByZWRpcmVjdGVkID0gRkFMU0U7CitzdGF0aWMgYm9vbCBoYXNjb2xvciA9IEZBTFNFOworCitzdGF0aWMgdm9pZAorc2lnaG5kbChpbnQgc2lnbm8pCit7CisgICAgc2lnbmFsKHNpZ25vLCBzaWdobmRsKTsKKyAgICBzaWd0ZXJtZWQgPSBzaWdubzsKKyAgICBpZiAocmVkaXJlY3RlZCkgeworCWVuZHdpbigpOworCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorY2hlY2tfdGVybSh2b2lkKQoreworICAgIGlmIChzaWd0ZXJtZWQpIHsKKwkodm9pZCkgc3RhbmRlbmQoKTsKKwllbmR3aW4oKTsKKwlmcHJpbnRmKHN0ZGVyciwgImdkYyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAlZFxuIiwgc2lndGVybWVkKTsKKwlFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2RyYXdib3goYm9vbCBzY3JvbGxpbmcpCit7CisgICAgY2h0eXBlIGJvdHRvbVtYTEVOR1RIICsgMV07CisgICAgaW50IG47CisKKyAgICBpZiAoaGFzY29sb3IpCisJKHZvaWQpIGF0dHJzZXQoQXR0ckFyZyhDT0xPUl9QQUlSKFBBSVJfRlJBTUVTKSwgMCkpOworCisgICAgTXZBZGRDaChZQkFTRSAtIDEsIFhCQVNFIC0gMSwgQUNTX1VMQ09STkVSKTsKKyAgICBobGluZShBQ1NfSExJTkUsIFhMRU5HVEgpOworICAgIE12QWRkQ2goWUJBU0UgLSAxLCBYQkFTRSArIFhMRU5HVEgsIEFDU19VUkNPUk5FUik7CisKKyAgICBNdkFkZENoKFlCQVNFICsgWURFUFRILCBYQkFTRSAtIDEsIEFDU19MTENPUk5FUik7CisgICAgaWYgKChtdmluY2huc3RyKFlCQVNFICsgWURFUFRILCBYQkFTRSwgYm90dG9tLCBYTEVOR1RIKSkgIT0gRVJSKSB7CisJZm9yIChuID0gMDsgbiA8IFhMRU5HVEg7IG4rKykgeworCSAgICBpZiAoIXNjcm9sbGluZykKKwkJYm90dG9tW25dICY9IH5BX0NPTE9SOworCSAgICBib3R0b21bbl0gPSBBQ1NfSExJTkUgfCAoYm90dG9tW25dICYgKEFfQVRUUklCVVRFUyB8IEFfQ09MT1IpKTsKKwl9CisJKHZvaWQpIG12YWRkY2huc3RyKFlCQVNFICsgWURFUFRILCBYQkFTRSwgYm90dG9tLCBYTEVOR1RIKTsKKyAgICB9CisgICAgTXZBZGRDaChZQkFTRSArIFlERVBUSCwgWEJBU0UgKyBYTEVOR1RILCBBQ1NfTFJDT1JORVIpOworCisgICAgbW92ZShZQkFTRSwgWEJBU0UgLSAxKTsKKyAgICB2bGluZShBQ1NfVkxJTkUsIFlERVBUSCk7CisKKyAgICBtb3ZlKFlCQVNFLCBYQkFTRSArIFhMRU5HVEgpOworICAgIHZsaW5lKEFDU19WTElORSwgWURFUFRIKTsKKworICAgIGlmIChoYXNjb2xvcikKKwkodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoUEFJUl9PVEhFUlMpLCAwKSk7Cit9CisKK3N0YXRpYyB2b2lkCitzdGFuZHQoaW50IG9uKQoreworICAgIGlmIChvbikgeworCWlmIChoYXNjb2xvcikgeworCSAgICBhdHRyb24oQ09MT1JfUEFJUihQQUlSX0RJR0lUUykpOworCX0gZWxzZSB7CisJICAgIGF0dHJvbihBX1NUQU5ET1VUKTsKKwl9CisgICAgfSBlbHNlIHsKKwlpZiAoaGFzY29sb3IpIHsKKwkgICAgYXR0cm9uKENPTE9SX1BBSVIoUEFJUl9PVEhFUlMpKTsKKwl9IGVsc2UgeworCSAgICBhdHRyb2ZmKEFfU1RBTkRPVVQpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitzZXQoaW50IHQsIGludCBuKQoreworICAgIGludCBpLCBtOworCisgICAgbSA9IDcgPDwgbjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7CisJbmV4dFtpXSB8PSAoKGRpc3BbdF0gPj4gKCg0IC0gaSkgKiAzKSkgJiAwNykgPDwgbjsKKwltYXNrIHw9IChuZXh0W2ldIF4gb2xkZXJbaV0pICYgbTsKKyAgICB9CisgICAgaWYgKG1hc2sgJiBtKQorCW1hc2sgfD0gbTsKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKm1zZ1tdID0KKyAgICB7CisJIlVzYWdlOiBnZGMgW29wdGlvbnNdIFtjb3VudF0iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLW4gIHJlZGlyZWN0IGlucHV0IHRvIC9kZXYvbnVsbCIKKwksIiAgLXMgIHNjcm9sbCBlYWNoIG51bWJlciBpbnRvIHBsYWNlLCByYXRoZXIgdGhhbiBmbGlwcGluZyIKKwksIiAgLXQgaGg6bW06c3Mgc3BlY2lmeSBzdGFydGluZyB0aW1lIChkZWZhdWx0IGlzIGBgbm93JycpIgorCSwiIgorCSwiSWYgeW91IHNwZWNpZnkgYSBjb3VudCwgZ2RjIHJ1bnMgZm9yIHRoYXQgbnVtYmVyIG9mIHNlY29uZHMiCisgICAgfTsKKyAgICB1bnNpZ25lZCBqOworICAgIGZvciAoaiA9IDA7IGogPCBTSVpFT0YobXNnKTsgaisrKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ1tqXSk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIHRpbWVfdAorcGFyc2VfdGltZShjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgICBpbnQgaGgsIG1tLCBzczsKKyAgICBpbnQgY2hlY2s7CisgICAgdGltZV90IHJlc3VsdDsKKyAgICBjaGFyIGM7CisgICAgc3RydWN0IHRtICp0bTsKKworICAgIGlmIChzc2NhbmYodmFsdWUsICIlZDolZDolZCVjIiwgJmhoLCAmbW0sICZzcywgJmMpICE9IDMpIHsKKwlpZiAoc3NjYW5mKHZhbHVlLCAiJTAyZCUwMmQlMDJkJWMiLCAmaGgsICZtbSwgJnNzLCAmYykgIT0gMykgeworCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisKKyAgICBpZiAoKGhoIDwgMCkgfHwgKGhoID49IDI0KSB8fAorCShtbSA8IDApIHx8IChtbSA+PSA2MCkgfHwKKwkoc3MgPCAwKSB8fCAoc3MgPj0gNjApKSB7CisJdXNhZ2UoKTsKKyAgICB9CisKKyAgICAvKiBhZGp1c3Qgc28gdGhhdCB0aGUgbG9jYWx0aW1lIGluIHRoZSBtYWluIGxvb3Agd2lsbCBnaXZlIHVzYWJsZSB0aW1lICovCisgICAgcmVzdWx0ID0gKGhoICogMzYwMCkgKyAoKG1tICogNjApICsgc3MpOworICAgIGZvciAoY2hlY2sgPSAwOyBjaGVjayA8IDI0OyArK2NoZWNrKSB7CisJdG0gPSBsb2NhbHRpbWUoJnJlc3VsdCk7CisJaWYgKHRtLT50bV9ob3VyID09IGhoKQorCSAgICBicmVhazsKKwlyZXN1bHQgKz0gMzYwMDsKKyAgICB9CisKKyAgICBpZiAodG0tPnRtX2hvdXIgIT0gaGgpIHsKKwlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBmaW5kIGxvY2FsIHRpbWUgZm9yICVzIVxuIiwgdmFsdWUpOworCXVzYWdlKCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIHRpbWVfdCBub3c7CisgICAgc3RydWN0IHRtICp0bTsKKyAgICBsb25nIHQsIGE7CisgICAgaW50IGksIGosIHMsIGs7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBGSUxFICpvZnAgPSBzdGRvdXQ7CisgICAgRklMRSAqaWZwID0gc3RkaW47CisgICAgYm9vbCBzbW9vdGggPSBGQUxTRTsKKyAgICBib29sIHN0YWdlcyA9IEZBTFNFOworICAgIHRpbWVfdCBzdGFydHMgPSAwOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgQ0FUQ0hBTEwoc2lnaG5kbCk7CisKKyAgICB3aGlsZSAoKGsgPSBnZXRvcHQoYXJnYywgYXJndiwgIm5zdDoiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGspIHsKKwljYXNlICduJzoKKwkgICAgaWZwID0gZm9wZW4oIi9kZXYvbnVsbCIsICJyIik7CisJICAgIHJlZGlyZWN0ZWQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdzJzoKKwkgICAgc21vb3RoID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAndCc6CisJICAgIHN0YXJ0cyA9IHBhcnNlX3RpbWUob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwl9CisgICAgfQorICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CisJY291bnQgPSBhdG9pKGFyZ3Zbb3B0aW5kKytdKTsKKwlhc3NlcnQoY291bnQgPj0gMCk7CisgICAgfQorICAgIGlmIChvcHRpbmQgPCBhcmdjKQorCXVzYWdlKCk7CisKKyAgICBpZiAocmVkaXJlY3RlZCkgeworCWNoYXIgKm5hbWUgPSBnZXRlbnYoIlRFUk0iKTsKKwlpZiAobmFtZSA9PSAwCisJICAgIHx8IG5ld3Rlcm0obmFtZSwgb2ZwLCBpZnApID09IDApIHsKKwkgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiB0ZXJtaW5hbFxuIik7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJfQorCisgICAgfSBlbHNlIHsKKwlpbml0c2NyKCk7CisgICAgfQorICAgIGNicmVhaygpOworICAgIG5vZWNobygpOworICAgIG5vZGVsYXkoc3Rkc2NyLCAxKTsKKyAgICBjdXJzX3NldCgwKTsKKworICAgIGhhc2NvbG9yID0gaGFzX2NvbG9ycygpOworCisgICAgaWYgKGhhc2NvbG9yKSB7CisJc2hvcnQgYmcgPSBDT0xPUl9CTEFDSzsKKwlzdGFydF9jb2xvcigpOworI2lmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCisJaWYgKHVzZV9kZWZhdWx0X2NvbG9ycygpID09IE9LKQorCSAgICBiZyA9IC0xOworI2VuZGlmCisJaW5pdF9wYWlyKFBBSVJfRElHSVRTLCBDT0xPUl9CTEFDSywgQ09MT1JfUkVEKTsKKwlpbml0X3BhaXIoUEFJUl9PVEhFUlMsIENPTE9SX1JFRCwgYmcpOworCWluaXRfcGFpcihQQUlSX0ZSQU1FUywgQ09MT1JfV0hJVEUsIGJnKTsKKwkodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoUEFJUl9PVEhFUlMpLCAwKSk7CisgICAgfQorCisgIHJlc3RhcnQ6CisgICAgZm9yIChqID0gMDsgaiA8IDU7IGorKykKKwlvbGRlcltqXSA9IG5ld2VyW2pdID0gbmV4dFtqXSA9IDA7CisKKyAgICBjbGVhcigpOworICAgIGRyYXdib3goRkFMU0UpOworCisgICAgZG8geworCWNoYXIgYnVmWzQwXTsKKworCWlmIChzdGFydHMgIT0gMCkgeworCSAgICBub3cgPSArK3N0YXJ0czsKKwl9IGVsc2UgeworCSAgICB0aW1lKCZub3cpOworCX0KKwl0bSA9IGxvY2FsdGltZSgmbm93KTsKKworCW1hc2sgPSAwOworCXNldCh0bS0+dG1fc2VjICUgMTAsIDApOworCXNldCh0bS0+dG1fc2VjIC8gMTAsIDQpOworCXNldCh0bS0+dG1fbWluICUgMTAsIDEwKTsKKwlzZXQodG0tPnRtX21pbiAvIDEwLCAxNCk7CisJc2V0KHRtLT50bV9ob3VyICUgMTAsIDIwKTsKKwlzZXQodG0tPnRtX2hvdXIgLyAxMCwgMjQpOworCXNldCgxMCwgNyk7CisJc2V0KDEwLCAxNyk7CisKKwlmb3IgKGsgPSAwOyBrIDwgNjsgaysrKSB7CisJICAgIGlmIChzbW9vdGgpIHsKKwkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykKKwkJICAgIG5ld2VyW2ldID0gKG5ld2VyW2ldICYgfm1hc2spIHwgKG5ld2VyW2kgKyAxXSAmIG1hc2spOworCQluZXdlcls1XSA9IChuZXdlcls1XSAmIH5tYXNrKSB8IChuZXh0W2tdICYgbWFzayk7CisJICAgIH0gZWxzZSB7CisJCW5ld2VyW2tdID0gKG5ld2VyW2tdICYgfm1hc2spIHwgKG5leHRba10gJiBtYXNrKTsKKwkgICAgfQorCSAgICBuZXh0W2tdID0gMDsKKwkgICAgZm9yIChzID0gMTsgcyA+PSAwOyBzLS0pIHsKKwkJc3RhbmR0KHMpOworCQlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7CisJCSAgICBpZiAoKGEgPSAobmV3ZXJbaV0gXiBvbGRlcltpXSkgJiAocyA/IG5ld2VyIDogb2xkZXIpW2ldKQorCQkJIT0gMCkgeworCQkJZm9yIChqID0gMCwgdCA9IDEgPDwgMjY7IHQ7IHQgPj49IDEsIGorKykgeworCQkJICAgIGlmIChhICYgdCkgeworCQkJCWlmICghKGEgJiAodCA8PCAxKSkpIHsKKwkJCQkgICAgbW92ZShZQkFTRSArIGksIFhCQVNFICsgMiAqIGopOworCQkJCX0KKwkJCQlhZGRzdHIoIiAgIik7CisJCQkgICAgfQorCQkJfQorCQkgICAgfQorCQkgICAgaWYgKCFzKSB7CisJCQlvbGRlcltpXSA9IG5ld2VyW2ldOworCQkgICAgfQorCQl9CisJCWlmICghcykgeworCQkgICAgaWYgKHNtb290aCkKKwkJCWRyYXdib3goVFJVRSk7CisJCSAgICByZWZyZXNoKCk7CisJCSAgICAvKgorCQkgICAgICogSWYgd2UncmUgc2Nyb2xsaW5nLCBzcGFjZSBvdXQgdGhlIHJlZnJlc2hlcyB0byBmYWtlCisJCSAgICAgKiBtb3ZlbWVudC4gIFRoYXQncyA3IGZyYW1lcywgb3IgNiBpbnRlcnZhbHMsIHdoaWNoIHdvdWxkCisJCSAgICAgKiBiZSAxNjYgbXNlYyBpZiB3ZSBzcHJlYWQgaXQgb3V0IG92ZXIgYSBzZWNvbmQuICBJdCBsb29rcworCQkgICAgICogYmV0dGVyIChidXQgd2lsbCB3b3JrIG9uIGEgc2xvdyB0ZXJtaW5hbCwgZS5nLiwgbGVzcworCQkgICAgICogdGhhbiA5NjAwYmQpIHRvIHNxdWVlemUgdGhhdCBpbnRvIGEgaGFsZi1zZWNvbmQsIGFuZCB1c2UKKwkJICAgICAqIGhhbGYgb2YgMTcwIG1zZWMgdG8gZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0gZG9lc24ndCBlYXQKKwkJICAgICAqIGEgbG90IG9mIHRpbWUgd2hlbiBhc2tpbmcgd2hhdCB0aW1lIGl0IGlzLCBhdCB0aGUgdG9wIG9mCisJCSAgICAgKiB0aGlzIGxvb3AgLVQuRGlja2V5CisJCSAgICAgKi8KKwkJICAgIGlmIChzbW9vdGgpCisJCQluYXBtcyg4NSk7CisJCSAgICBpZiAoc3RhZ2VzKSB7CisJCQlzdGFnZXMgPSBGQUxTRTsKKwkJCXN3aXRjaCAod2dldGNoKHN0ZHNjcikpIHsKKwkJCWNhc2UgJ3EnOgorCQkJICAgIGNvdW50ID0gMTsKKwkJCSAgICBicmVhazsKKwkJCWNhc2UgJ1MnOgorCQkJICAgIHN0YWdlcyA9IFRSVUU7CisJCQkgICAgLyogRkFMTFRIUlUgKi8KKwkJCWNhc2UgJ3MnOgorCQkJICAgIG5vZGVsYXkoc3Rkc2NyLCBGQUxTRSk7CisJCQkgICAgYnJlYWs7CisJCQljYXNlICcgJzoKKwkJCSAgICBub2RlbGF5KHN0ZHNjciwgVFJVRSk7CisJCQkgICAgYnJlYWs7CisjaWZkZWYgS0VZX1JFU0laRQorCQkJY2FzZSBLRVlfUkVTSVpFOgorI2VuZGlmCisJCQljYXNlICc/JzoKKwkJCSAgICBnb3RvIHJlc3RhcnQ7CisJCQljYXNlIEVSUjoKKwkJCSAgICBjaGVja190ZXJtKCk7CisJCQkgICAgLyogRkFMTFRIUlUgKi8KKwkJCWRlZmF1bHQ6CisJCQkgICAgY29udGludWU7CisJCQl9CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKworCS8qIHRoaXMgZGVwZW5kcyBvbiB0aGUgZGV0YWlsZWQgZm9ybWF0IG9mIGN0aW1lKDMpICovCisJKHZvaWQpIHN0cm5jcHkoYnVmLCBjdGltZSgmbm93KSwgKHNpemVfdCkgMzApOworCXsKKwkgICAgY2hhciAqZDIgPSBidWYgKyAxMDsKKwkgICAgY2hhciAqczIgPSBidWYgKyAxOTsKKwkgICAgd2hpbGUgKCgqZDIrKyA9ICpzMisrKSAhPSAnXDAnKSA7CisJfQorCU12QWRkU3RyKDE2LCAzMCwgYnVmKTsKKworCW1vdmUoNiwgMCk7CisJZHJhd2JveChGQUxTRSk7CisJcmVmcmVzaCgpOworCisJLyoKKwkgKiBJZiB3ZSdyZSBub3Qgc21vb3RoLXNjcm9sbGluZywgd2FpdCAxMDAwIG1zZWMgKDEgc2VjKS4gIFVzZSBuYXBtcygpCisJICogcmF0aGVyIHRoYW4gc2xlZXAoKSBiZWNhdXNlIHRoZSBsYXR0ZXIgZG9lcyBvZGQgdGhpbmdzIG9uIHNvbWUKKwkgKiBzeXN0ZW1zLCBlLmcuLCBzdXNwZW5kaW5nIG91dHB1dCBhcyB3ZWxsLgorCSAqLworCWlmIChzbW9vdGgpCisJICAgIG5hcG1zKDUwMCk7CisJZWxzZQorCSAgICBuYXBtcygxMDAwKTsKKworCS8qCisJICogVGhpcyBpcyBhIHNhZmUgd2F5IHRvIGNoZWNrIGlmIHdlJ3JlIGludGVycnVwdGVkIC0gbWFraW5nIHRoZSBzaWduYWwKKwkgKiBoYW5kbGVyIHNldCBhIGZsYWcgdGhhdCB3ZSBjYW4gY2hlY2suICBTaW5jZSB3ZSdyZSBydW5uaW5nCisJICogbm9kZWxheSgpLCB0aGUgd2dldGNoKCkgY2FsbCByZXR1cm5zIGltbWVkaWF0ZWx5LCBhbmQgaW4gcGFydGljdWxhcgorCSAqIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIGludGVycnVwdGVkLiAgVGhpcyB3b3JrcyBvbmx5IGlmIHdlIGNhbgorCSAqIHJlYWQgZnJvbSB0aGUgaW5wdXQsIG9mIGNvdXJzZS4KKwkgKi8KKwlzdGFnZXMgPSBGQUxTRTsKKwlzd2l0Y2ggKHdnZXRjaChzdGRzY3IpKSB7CisJY2FzZSAncSc6CisJICAgIGNvdW50ID0gMTsKKwkgICAgYnJlYWs7CisJY2FzZSAnUyc6CisJICAgIHN0YWdlcyA9IFRSVUU7CisJICAgIC8qIEZBTExUSFJVICovCisJY2FzZSAncyc6CisJICAgIG5vZGVsYXkoc3Rkc2NyLCBGQUxTRSk7CisJICAgIGJyZWFrOworCWNhc2UgJyAnOgorCSAgICBub2RlbGF5KHN0ZHNjciwgVFJVRSk7CisJICAgIGJyZWFrOworI2lmZGVmIEtFWV9SRVNJWkUKKwljYXNlIEtFWV9SRVNJWkU6CisjZW5kaWYKKwljYXNlICc/JzoKKwkgICAgZ290byByZXN0YXJ0OworCWNhc2UgRVJSOgorCSAgICBjaGVja190ZXJtKCk7CisJICAgIC8qIEZBTExUSFJVICovCisJZGVmYXVsdDoKKwkgICAgY29udGludWU7CisJfQorICAgIH0gd2hpbGUgKC0tY291bnQpOworICAgICh2b2lkKSBzdGFuZGVuZCgpOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2hhbm9pLmMgYi90ZXN0L2hhbm9pLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0N2FlMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvaGFub2kuYwpAQCAtMCwwICsxLDMzNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKglOYW1lOiBUb3dlcnMgb2YgSGFub2kuCisgKgorICoJRGVzYzoKKyAqCQlUaGlzIGlzIGEgcGxheWFibGUgY29weSBvZiB0b3dlcnMgb2YgaGFub2kuCisgKgkJSXRzIHNvbGUgcHVycG9zZSBpcyB0byBkZW1vbnN0cmF0ZSBteSBBbWlnYSBDdXJzZXMgcGFja2FnZS4KKyAqCQlUaGlzIHByb2dyYW0gc2hvdWxkIGNvbXBpbGUgb24gYW55IHN5c3RlbSB0aGF0IGhhcyBDdXJzZXMuCisgKgkJJ2hhbm9pJwkJd2lsbCBnaXZlIGEgbWFudWFsIGdhbWUgd2l0aCA3IHBsYXlpbmcgcGllY2VzLgorICoJCSdoYW5vaSBuJwl3aWxsIGdpdmUgYSBtYW51YWwgZ2FtZSB3aXRoIG4gcGxheWluZyBwaWVjZXMuCisgKgkJJ2hhbm9pIG4gYScgd2lsbCBnaXZlIGFuIGF1dG8gc29sdmVkIGdhbWUgd2l0aCBuIHBsYXlpbmcgcGllY2VzLgorICoKKyAqCUF1dGhvcjogU2ltb24gSiBSYXlib3VsZAkoc2llQGZ1bGNydW0uYnQuY28udWspLgorICogCShUaGlzIHZlcnNpb24gaGFzIGJlZW4gc2xpZ2h0bHkgbW9kaWZpZWQgYnkgdGhlIG5jdXJzZXMgbWFpbnRhaW5lcnMuKQorICoKKyAqCURhdGU6IDA1Lk5vdi45MAorICoKKyAqICRJZDogaGFub2kuYyx2IDEuMzYgMjAxNC8wOC8wMiAxNzoyNDowNyB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorCisjZGVmaW5lIE5QRUdTCQkJMwkvKiBUaGlzIGlzIG5vdCBjb25maWd1cmFibGUgISEgKi8KKyNkZWZpbmUgTUlOVElMRVMJCTMKKyNkZWZpbmUgTUFYVElMRVMJCTkKKyNkZWZpbmUgREVGQVVMVFRJTEVTCQk3CisjZGVmaW5lIFRPUExJTkUJCQk2CisjZGVmaW5lIEJBU0VMSU5FCQkxNgorI2RlZmluZSBTVEFUVVNMSU5FCQkoTElORVMtMykKKyNkZWZpbmUgTEVGVFBFRwkJCTE5CisjZGVmaW5lIE1JRFBFRwkJCTM5CisjZGVmaW5lIFJJR0hUUEVHCQk1OQorCisjZGVmaW5lIExFTlRPSU5EKHgpCQkoKChpbnQpKHgpLTEpLzIpCisjZGVmaW5lIE9USEVSKGEsYikJCSgzLSgoYSkrKGIpKSkKKworc3RydWN0IFBlZyB7CisgICAgc2l6ZV90IExlbmd0aFtNQVhUSUxFU107CisgICAgaW50IENvdW50OworfTsKKworc3RhdGljIHN0cnVjdCBQZWcgUGVnc1tOUEVHU107CitzdGF0aWMgaW50IFBlZ1Bvc1tdID0KK3sKKyAgICBMRUZUUEVHLAorICAgIE1JRFBFRywKKyAgICBSSUdIVFBFRworfTsKK3N0YXRpYyBzaG9ydCBUaWxlQ29sb3VyW10gPQoreworICAgIENPTE9SX0dSRUVOLAkJLyogTGVuZ3RoIDMgKi8KKyAgICBDT0xPUl9NQUdFTlRBLAkJLyogTGVuZ3RoIDUgKi8KKyAgICBDT0xPUl9SRUQsCQkJLyogTGVuZ3RoIDcgKi8KKyAgICBDT0xPUl9CTFVFLAkJCS8qIExlbmd0aCA5ICovCisgICAgQ09MT1JfQ1lBTiwJCQkvKiBMZW5ndGggMTEgKi8KKyAgICBDT0xPUl9ZRUxMT1csCQkvKiBMZW5ndGggMTMgKi8KKyAgICBDT0xPUl9HUkVFTiwJCS8qIExlbmd0aCAxNSAqLworICAgIENPTE9SX01BR0VOVEEsCQkvKiBMZW5ndGggMTcgKi8KKyAgICBDT0xPUl9SRUQsCQkJLyogTGVuZ3RoIDE5ICovCit9Oworc3RhdGljIGludCBOVGlsZXMgPSAwOworc3RhdGljIGludCBOTW92ZXMgPSAwOworc3RhdGljIGJvb2wgQXV0b0ZsYWcgPSBGQUxTRTsKKworc3RhdGljIHZvaWQgSW5pdFRpbGVzKHZvaWQpOworc3RhdGljIHZvaWQgRGlzcGxheVRpbGVzKHZvaWQpOworc3RhdGljIHZvaWQgTWFrZU1vdmUoaW50IEZyb20sIGludCBUbyk7CitzdGF0aWMgdm9pZCBBdXRvTW92ZShpbnQgRnJvbSwgaW50IFRvLCBpbnQgTnVtKTsKK3N0YXRpYyB2b2lkIFVzYWdlKHZvaWQpOworc3RhdGljIGludCBTb2x2ZWQoaW50IE51bVRpbGVzKTsKK3N0YXRpYyBpbnQgR2V0TW92ZShpbnQgKkZyb20sIGludCAqVG8pOworc3RhdGljIGludCBJbnZhbGlkTW92ZShpbnQgRnJvbSwgaW50IFRvKTsKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgRnJvbUNvbCwgVG9Db2w7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBzd2l0Y2ggKGFyZ2MpIHsKKyAgICBjYXNlIDE6CisJTlRpbGVzID0gREVGQVVMVFRJTEVTOworCWJyZWFrOworICAgIGNhc2UgMjoKKwlOVGlsZXMgPSBhdG9pKGFyZ3ZbMV0pOworCWlmIChOVGlsZXMgPiBNQVhUSUxFUyB8fCBOVGlsZXMgPCBNSU5USUxFUykgeworCSAgICBmcHJpbnRmKHN0ZGVyciwgIlJhbmdlICVkIHRvICVkXG4iLCBNSU5USUxFUywgTUFYVElMRVMpOworCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCX0KKwlicmVhazsKKyAgICBjYXNlIDM6CisJaWYgKHN0cmNtcChhcmd2WzJdLCAiYSIpKSB7CisJICAgIFVzYWdlKCk7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJfQorCU5UaWxlcyA9IGF0b2koYXJndlsxXSk7CisJaWYgKE5UaWxlcyA+IE1BWFRJTEVTIHx8IE5UaWxlcyA8IE1JTlRJTEVTKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiUmFuZ2UgJWQgdG8gJWRcbiIsIE1JTlRJTEVTLCBNQVhUSUxFUyk7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJfQorCUF1dG9GbGFnID0gVFJVRTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCVVzYWdlKCk7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9CisgICAgaW5pdHNjcigpOworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwlpbnQgaTsKKwlzaG9ydCBiZyA9IENPTE9SX0JMQUNLOworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIGJnID0gLTE7CisjZW5kaWYKKwlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQorCSAgICBpbml0X3BhaXIoKHNob3J0KSAoaSArIDEpLCBiZywgVGlsZUNvbG91cltpXSk7CisgICAgfQorICAgIGNicmVhaygpOworICAgIGlmIChMSU5FUyA8IDI0KSB7CisJZW5kd2luKCk7CisJZnByaW50ZihzdGRlcnIsICJNaW4gc2NyZWVuIGxlbmd0aCAyNCBsaW5lc1xuIik7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9CisgICAgaWYgKEF1dG9GbGFnKSB7CisJY3Vyc19zZXQoMCk7CisJbGVhdmVvayhzdGRzY3IsIFRSVUUpOwkvKiBBdHRlbXB0IHRvIHJlbW92ZSBjdXJzb3IgKi8KKyAgICB9CisgICAgSW5pdFRpbGVzKCk7CisgICAgRGlzcGxheVRpbGVzKCk7CisgICAgaWYgKEF1dG9GbGFnKSB7CisJZG8geworCSAgICBub2VjaG8oKTsKKwkgICAgQXV0b01vdmUoMCwgMiwgTlRpbGVzKTsKKwl9IHdoaWxlICghU29sdmVkKE5UaWxlcykpOworCXNsZWVwKDIpOworICAgIH0gZWxzZSB7CisJZWNobygpOworCWZvciAoOzspIHsKKwkgICAgaWYgKEdldE1vdmUoJkZyb21Db2wsICZUb0NvbCkpCisJCWJyZWFrOworCSAgICBpZiAoSW52YWxpZE1vdmUoRnJvbUNvbCwgVG9Db2wpKSB7CisJCU12QWRkU3RyKFNUQVRVU0xJTkUsIDAsICJJbnZhbGlkIE1vdmUgISEiKTsKKwkJcmVmcmVzaCgpOworCQliZWVwKCk7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIE1ha2VNb3ZlKEZyb21Db2wsIFRvQ29sKTsKKwkgICAgaWYgKFNvbHZlZChOVGlsZXMpKSB7CisJCU12UHJpbnR3KFNUQVRVU0xJTkUsIDAsCisJCQkgIldlbGwgRG9uZSAhISBZb3UgZGlkIGl0IGluICVkIG1vdmVzIiwgTk1vdmVzKTsKKwkJcmVmcmVzaCgpOworCQlzbGVlcCg1KTsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisKK3N0YXRpYyBpbnQKK0ludmFsaWRNb3ZlKGludCBGcm9tLCBpbnQgVG8pCit7CisgICAgaWYgKEZyb20gPj0gTlBFR1MpCisJcmV0dXJuIFRSVUU7CisgICAgaWYgKEZyb20gPCAwKQorCXJldHVybiBUUlVFOworICAgIGlmIChUbyA+PSBOUEVHUykKKwlyZXR1cm4gVFJVRTsKKyAgICBpZiAoVG8gPCAwKQorCXJldHVybiBUUlVFOworICAgIGlmIChGcm9tID09IFRvKQorCXJldHVybiBUUlVFOworICAgIGlmICghUGVnc1tGcm9tXS5Db3VudCkKKwlyZXR1cm4gVFJVRTsKKyAgICBpZiAoUGVnc1tUb10uQ291bnQgJiYKKwlQZWdzW0Zyb21dLkxlbmd0aFtQZWdzW0Zyb21dLkNvdW50IC0gMV0gPgorCVBlZ3NbVG9dLkxlbmd0aFtQZWdzW1RvXS5Db3VudCAtIDFdKQorCXJldHVybiBUUlVFOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK0luaXRUaWxlcyh2b2lkKQoreworICAgIGludCBTaXplLCBTbG90Tm87CisKKyAgICBmb3IgKFNpemUgPSBOVGlsZXMgKiAyICsgMSwgU2xvdE5vID0gMDsgU2l6ZSA+PSAzOyBTaXplIC09IDIpCisJUGVnc1swXS5MZW5ndGhbU2xvdE5vKytdID0gKHNpemVfdCkgU2l6ZTsKKworICAgIFBlZ3NbMF0uQ291bnQgPSBOVGlsZXM7CisgICAgUGVnc1sxXS5Db3VudCA9IDA7CisgICAgUGVnc1syXS5Db3VudCA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCitEaXNwbGF5VGlsZXModm9pZCkKK3sKKyAgICBpbnQgTGluZSwgcGVnLCBTbG90Tm87CisgICAgY2hhciBUaWxlQnVmW0JVRlNJWl07CisKKyAgICBlcmFzZSgpOworICAgIE12QWRkU3RyKDEsIDI0LCAiVCBPIFcgRSBSIFMgICBPIEYgICBIIEEgTiBPIEkiKTsKKyAgICBNdkFkZFN0cigzLCAzNCwgIlNKUiAxOTkwIik7CisgICAgTXZQcmludHcoMTksIDUsICJNb3ZlcyA6ICVkIG9mICUuMGYiLCBOTW92ZXMsIHBvdygyLjAsIChmbG9hdCkgTlRpbGVzKSAtIDEpOworICAgICh2b2lkKSBhdHRyc2V0KEFfUkVWRVJTRSk7CisgICAgTXZBZGRTdHIoQkFTRUxJTkUsIDgsCisJICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisKKyAgICBmb3IgKExpbmUgPSBUT1BMSU5FOyBMaW5lIDwgQkFTRUxJTkU7IExpbmUrKykgeworCU12QWRkQ2goTGluZSwgTEVGVFBFRywgJyAnKTsKKwlNdkFkZENoKExpbmUsIE1JRFBFRywgJyAnKTsKKwlNdkFkZENoKExpbmUsIFJJR0hUUEVHLCAnICcpOworICAgIH0KKyAgICBNdkFkZENoKEJBU0VMSU5FLCBMRUZUUEVHLCAnMScpOworICAgIE12QWRkQ2goQkFTRUxJTkUsIE1JRFBFRywgJzInKTsKKyAgICBNdkFkZENoKEJBU0VMSU5FLCBSSUdIVFBFRywgJzMnKTsKKyAgICAodm9pZCkgYXR0cnNldChBX05PUk1BTCk7CisKKyAgICAvKiBEcmF3IHRpbGVzICovCisgICAgZm9yIChwZWcgPSAwOyBwZWcgPCBOUEVHUzsgcGVnKyspIHsKKwlmb3IgKFNsb3RObyA9IDA7IFNsb3RObyA8IFBlZ3NbcGVnXS5Db3VudDsgU2xvdE5vKyspIHsKKwkgICAgc2l6ZV90IGxlbiA9IFBlZ3NbcGVnXS5MZW5ndGhbU2xvdE5vXTsKKwkgICAgaWYgKGxlbiA8IHNpemVvZihUaWxlQnVmKSAtIDEgJiYgbGVuIDwgKHNpemVfdCkgUGVnUG9zW3BlZ10pIHsKKwkJbWVtc2V0KFRpbGVCdWYsICcgJywgbGVuKTsKKwkJVGlsZUJ1ZltsZW5dID0gJ1wwJzsKKwkJaWYgKGhhc19jb2xvcnMoKSkKKwkJICAgICh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoQ09MT1JfUEFJUihMRU5UT0lORChsZW4pKSwgMCkpOworCQllbHNlCisJCSAgICAodm9pZCkgYXR0cnNldChBX1JFVkVSU0UpOworCQlNdkFkZFN0cihCQVNFTElORSAtIChTbG90Tm8gKyAxKSwKKwkJCSAoUGVnUG9zW3BlZ10gLSAoaW50KSBsZW4gLyAyKSwKKwkJCSBUaWxlQnVmKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworICAgIHJlZnJlc2goKTsKK30KKworc3RhdGljIGludAorR2V0TW92ZShpbnQgKkZyb20sIGludCAqVG8pCit7CisgICAgTXZBZGRTdHIoU1RBVFVTTElORSwgMCwgIk5leHQgbW92ZSAoJ3EnIHRvIHF1aXQpIGZyb20gIik7CisgICAgY2xydG9lb2woKTsKKyAgICByZWZyZXNoKCk7CisgICAgaWYgKCgqRnJvbSA9IGdldGNoKCkpID09ICdxJykKKwlyZXR1cm4gVFJVRTsKKyAgICAqRnJvbSAtPSAoJzAnICsgMSk7CisgICAgYWRkc3RyKCIgdG8gIik7CisgICAgY2xydG9lb2woKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICBpZiAoKCpUbyA9IGdldGNoKCkpID09ICdxJykKKwlyZXR1cm4gVFJVRTsKKyAgICAqVG8gLT0gKCcwJyArIDEpOworICAgIHJlZnJlc2goKTsKKyAgICBpZiAoIUF1dG9GbGFnKQorCW5hcG1zKDUwMCk7CisKKyAgICBtb3ZlKFNUQVRVU0xJTkUsIDApOworICAgIGNscnRvZW9sKCk7CisgICAgcmVmcmVzaCgpOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK01ha2VNb3ZlKGludCBGcm9tLCBpbnQgVG8pCit7CisgICAgUGVnc1tGcm9tXS5Db3VudC0tOworICAgIFBlZ3NbVG9dLkxlbmd0aFtQZWdzW1RvXS5Db3VudF0gPSBQZWdzW0Zyb21dLkxlbmd0aFtQZWdzW0Zyb21dLkNvdW50XTsKKyAgICBQZWdzW1RvXS5Db3VudCsrOworICAgIE5Nb3ZlcysrOworICAgIERpc3BsYXlUaWxlcygpOworfQorCitzdGF0aWMgdm9pZAorQXV0b01vdmUoaW50IEZyb20sIGludCBUbywgaW50IE51bSkKK3sKKyAgICBpZiAoTnVtID09IDEpIHsKKwlNYWtlTW92ZShGcm9tLCBUbyk7CisJbmFwbXMoNTAwKTsKKyAgICB9IGVsc2UgeworCUF1dG9Nb3ZlKEZyb20sIE9USEVSKEZyb20sIFRvKSwgTnVtIC0gMSk7CisJTWFrZU1vdmUoRnJvbSwgVG8pOworCW5hcG1zKDUwMCk7CisJQXV0b01vdmUoT1RIRVIoRnJvbSwgVG8pLCBUbywgTnVtIC0gMSk7CisgICAgfQorfQorCitzdGF0aWMgaW50CitTb2x2ZWQoaW50IE51bVRpbGVzKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0gMTsgaSA8IE5QRUdTOyBpKyspCisJaWYgKFBlZ3NbaV0uQ291bnQgPT0gTnVtVGlsZXMpCisJICAgIHJldHVybiBUUlVFOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK1VzYWdlKHZvaWQpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogaGFub2kgWzxObyBPZiBUaWxlcz5dIFthXVxuIik7CisgICAgZnByaW50ZihzdGRlcnIsCisJICAgICJUaGUgJ2EnIG9wdGlvbiBjYXVzZXMgdGhlIHRvd2VyIHRvIGJlIHNvbHZlZCBhdXRvbWF0aWNhbGx5XG4iKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvaGFzaHRlc3QuYyBiL3Rlc3QvaGFzaHRlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDk5MjIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9oYXNodGVzdC5jCkBAIC0wLDAgKzEsMjQ3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIGhhc2h0ZXN0LmMgLS0gdGVzdCBoYXNoIG1hcHBpbmcKKyAqCisgKiBHZW5lcmF0ZSB0aW1pbmcgc3RhdGlzdGljcyBmb3IgdmVydGljYWwtbW90aW9uIG9wdGltaXphdGlvbi4KKyAqCisgKiAkSWQ6IGhhc2h0ZXN0LmMsdiAxLjMyIDIwMTMvMDQvMjcgMTk6NTA6MTcgdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjZGVmaW5lIExPX0NIQVIgJyAnCisjZGVmaW5lIEhJX0NIQVIgJ34nCisKK3N0YXRpYyBib29sIGNvbnRpbnVvdXMgPSBGQUxTRTsKK3N0YXRpYyBib29sIHJldmVyc2VfbG9vcHMgPSBGQUxTRTsKK3N0YXRpYyBib29sIHNpbmdsZV9zdGVwID0gRkFMU0U7CitzdGF0aWMgYm9vbCBleHRlbmRfY29ybmVyID0gRkFMU0U7CitzdGF0aWMgaW50IGZvb3RfbGluZXMgPSAwOworc3RhdGljIGludCBoZWFkX2xpbmVzID0gMDsKKworc3RhdGljIHZvaWQKK2NsZWFudXAodm9pZCkKK3sKKyAgICBtb3ZlKExJTkVTIC0gMSwgMCk7CisgICAgY2xydG9lb2woKTsKKyAgICByZWZyZXNoKCk7CisgICAgZW5kd2luKCk7Cit9CisKK3N0YXRpYyB2b2lkCitmaW5pc2goaW50IHNpZyBHQ0NfVU5VU0VEKQoreworICAgIGNsZWFudXAoKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZAorZ2VubGluZXMoaW50IGJhc2UpCit7CisgICAgaW50IGksIGo7CisKKyNpZiBVU0VfVFJBQ0UKKyAgICBpZiAoYmFzZSA9PSAnYScpCisJVHJhY2UoKCJSZXNldHRpbmcgc2NyZWVuIikpOworICAgIGVsc2UKKwlUcmFjZSgoIlBhaW50aW5nIGAlYycgc2NyZWVuIiwgYmFzZSkpOworI2VuZGlmCisKKyAgICAvKiBEbyB0aGlzIHNvIHdyaXRlcyB0byBsb3dlci1yaWdodCBjb3JuZXIgZG9uJ3QgY2F1c2UgYSBzcHVyaW91cworICAgICAqIHNjcm9sbGluZyBvcGVyYXRpb24uICBUaGlzIF9zaG91bGRuJ3RfIGJyZWFrIHRoZSBzY3JvbGxpbmcKKyAgICAgKiBvcHRpbWl6YXRpb24sIHNpbmNlIHRoYXQncyBjb21wdXRlZCBpbiB0aGUgcmVmcmVzaCgpIGNhbGwuCisgICAgICovCisgICAgc2Nyb2xsb2soc3Rkc2NyLCBGQUxTRSk7CisKKyAgICBtb3ZlKDAsIDApOworICAgIGZvciAoaSA9IDA7IGkgPCBoZWFkX2xpbmVzOyBpKyspCisJZm9yIChqID0gMDsgaiA8IENPTFM7IGorKykKKwkgICAgYWRkY2goVUNoYXIoKGogJSA4ID09IDApID8gKCdBJyArIGogLyA4KSA6ICctJykpOworCisgICAgbW92ZShoZWFkX2xpbmVzLCAwKTsKKyAgICBmb3IgKGkgPSBoZWFkX2xpbmVzOyBpIDwgTElORVMgLSBmb290X2xpbmVzOyBpKyspIHsKKwljaHR5cGUgYyA9IChjaHR5cGUpICgoYmFzZSAtIExPX0NIQVIgKyBpKSAlIChISV9DSEFSIC0gTE9fQ0hBUiArIDEpCisJCQkgICAgICsgTE9fQ0hBUik7CisJaW50IGhpID0gKGV4dGVuZF9jb3JuZXIgfHwgKGkgPCBMSU5FUyAtIDEpKSA/IENPTFMgOiBDT0xTIC0gMTsKKwlmb3IgKGogPSAwOyBqIDwgaGk7IGorKykKKwkgICAgYWRkY2goYyk7CisgICAgfQorCisgICAgZm9yIChpID0gTElORVMgLSBmb290X2xpbmVzOyBpIDwgTElORVM7IGkrKykgeworCW1vdmUoaSwgMCk7CisJZm9yIChqID0gMDsgaiA8IChleHRlbmRfY29ybmVyID8gQ09MUyA6IENPTFMgLSAxKTsgaisrKQorCSAgICBhZGRjaChVQ2hhcigoaiAlIDggPT0gMCkgPyAoJ0EnICsgaiAvIDgpIDogJy0nKSk7CisgICAgfQorCisgICAgc2Nyb2xsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBpZiAoc2luZ2xlX3N0ZXApIHsKKwltb3ZlKExJTkVTIC0gMSwgMCk7CisJZ2V0Y2goKTsKKyAgICB9IGVsc2UKKwlyZWZyZXNoKCk7Cit9CisKK3N0YXRpYyB2b2lkCitvbmVfY3ljbGUoaW50IGNoKQoreworICAgIGlmIChjb250aW51b3VzKSB7CisJZ2VubGluZXMoY2gpOworICAgIH0gZWxzZSBpZiAoY2ggIT0gJ2EnKSB7CisJZ2VubGluZXMoJ2EnKTsKKwlnZW5saW5lcyhjaCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcnVuX3Rlc3QoYm9vbCBvcHRpbWl6ZWQgR0NDX1VOVVNFRCkKK3sKKyAgICBjaGFyIGNoOworICAgIGludCBsbyA9IGNvbnRpbnVvdXMgPyBMT19DSEFSIDogJ2EnIC0gTElORVM7CisgICAgaW50IGhpID0gY29udGludW91cyA/IEhJX0NIQVIgOiAnYScgKyBMSU5FUzsKKworICAgIGlmIChsbyA8IExPX0NIQVIpCisJbG8gPSBMT19DSEFSOworICAgIGlmIChoaSA+IEhJX0NIQVIpCisJaGkgPSBISV9DSEFSOworCisjaWYgZGVmaW5lZChUUkFDRSkgfHwgZGVmaW5lZChOQ1VSU0VTX1RFU1QpCisgICAgaWYgKG9wdGltaXplZCkgeworCVRyYWNlKCgiV2l0aCBoYXNoIG1hcHBpbmciKSk7CisJX25jX29wdGltaXplX2VuYWJsZSB8PSBPUFRJTUlaRV9IQVNITUFQOworICAgIH0gZWxzZSB7CisJVHJhY2UoKCJXaXRob3V0IGhhc2ggbWFwcGluZyIpKTsKKwlfbmNfb3B0aW1pemVfZW5hYmxlICY9IH5PUFRJTUlaRV9IQVNITUFQOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHJldmVyc2VfbG9vcHMpCisJZm9yIChjaCA9IChjaGFyKSBoaTsgY2ggPj0gbG87IGNoLS0pCisJICAgIG9uZV9jeWNsZShjaCk7CisgICAgZWxzZQorCWZvciAoY2ggPSAoY2hhcikgbG87IGNoIDw9IGhpOyBjaCsrKQorCSAgICBvbmVfY3ljbGUoY2gpOworfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdGJsW10gPQorICAgIHsKKwkiVXNhZ2U6IGhhc2h0ZXN0IFtvcHRpb25zXSIKKwksIiIKKwksIk9wdGlvbnM6IgorCSwiICAtYyAgICAgIGNvbnRpbnVvdXMgKGRvbid0IHJlc2V0IGJldHdlZW4gcmVmcmVzaCdzKSIKKwksIiAgLWYgbnVtICBsZWF2ZSAnbnVtJyBsaW5lcyBjb25zdGFudCBmb3IgZm9vdGVyIgorCSwiICAtaCBudW0gIGxlYXZlICdudW0nIGxpbmVzIGNvbnN0YW50IGZvciBoZWFkZXIiCisJLCIgIC1sIG51bSAgcmVwZWF0IHRlc3QgJ251bScgdGltZXMiCisJLCIgIC1uICAgICAgdGVzdCB0aGUgbm9ybWFsIG9wdGltaXplciIKKwksIiAgLW8gICAgICB0ZXN0IHRoZSBoYXNoZWQgb3B0aW1pemVyIgorCSwiICAtciAgICAgIHJldmVyc2UgdGhlIGxvb3BzIgorCSwiICAtcyAgICAgIHNpbmdsZS1zdGVwIgorCSwiICAteCAgICAgIGFzc3VtZSBsb3dlci1yaWdodCBjb3JuZXIgZXh0ZW5zaW9uIgorICAgIH07CisgICAgc2l6ZV90IG47CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRibCk7IG4rKykKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCBjOworICAgIGludCB0ZXN0X2xvb3BzID0gMTsKKyAgICBpbnQgdGVzdF9ub3JtYWwgPSBGQUxTRTsKKyAgICBpbnQgdGVzdF9vcHRpbWl6ZSA9IEZBTFNFOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjZjpoOmw6bm9yc3giKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlICdjJzoKKwkgICAgY29udGludW91cyA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ2YnOgorCSAgICBmb290X2xpbmVzID0gYXRvaShvcHRhcmcpOworCSAgICBicmVhazsKKwljYXNlICdoJzoKKwkgICAgaGVhZF9saW5lcyA9IGF0b2kob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbCc6CisJICAgIHRlc3RfbG9vcHMgPSBhdG9pKG9wdGFyZyk7CisJICAgIGFzc2VydCh0ZXN0X2xvb3BzID49IDApOworCSAgICBicmVhazsKKwljYXNlICduJzoKKwkgICAgdGVzdF9ub3JtYWwgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdvJzoKKwkgICAgdGVzdF9vcHRpbWl6ZSA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3InOgorCSAgICByZXZlcnNlX2xvb3BzID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAncyc6CisJICAgIHNpbmdsZV9zdGVwID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAneCc6CisJICAgIGV4dGVuZF9jb3JuZXIgPSBUUlVFOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisgICAgaWYgKCF0ZXN0X25vcm1hbCAmJiAhdGVzdF9vcHRpbWl6ZSkgeworCXRlc3Rfbm9ybWFsID0gVFJVRTsKKwl0ZXN0X29wdGltaXplID0gVFJVRTsKKyAgICB9CisjaWYgVVNFX1RSQUNFCisgICAgdHJhY2UoVFJBQ0VfVElNRVMpOworI2VuZGlmCisKKyAgICBDQVRDSEFMTChmaW5pc2gpOwkJLyogYXJyYW5nZSBpbnRlcnJ1cHRzIHRvIHRlcm1pbmF0ZSAqLworCisgICAgKHZvaWQpIGluaXRzY3IoKTsJCS8qIGluaXRpYWxpemUgdGhlIGN1cnNlcyBsaWJyYXJ5ICovCisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CS8qIGVuYWJsZSBrZXlib2FyZCBtYXBwaW5nICovCisgICAgKHZvaWQpIG5vbmwoKTsJCS8qIHRlbGwgY3Vyc2VzIG5vdCB0byBkbyBOTC0+Q1IvTkwgb24gb3V0cHV0ICovCisgICAgKHZvaWQpIGNicmVhaygpOwkJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworICAgICh2b2lkKSBub2VjaG8oKTsJCS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKyAgICBzY3JvbGxvayhzdGRzY3IsIFRSVUUpOworCisgICAgd2hpbGUgKHRlc3RfbG9vcHMtLSA+IDApIHsKKwlpZiAodGVzdF9ub3JtYWwpCisJICAgIHJ1bl90ZXN0KEZBTFNFKTsKKwlpZiAodGVzdF9vcHRpbWl6ZSkKKwkgICAgcnVuX3Rlc3QoVFJVRSk7CisgICAgfQorCisgICAgY2xlYW51cCgpOwkJCS8qIHdlJ3JlIGRvbmUgKi8KKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorLyogaGFzaHRlc3QuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3Rlc3QvaW5jaF93aWRlLmMgYi90ZXN0L2luY2hfd2lkZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMzFmMTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2luY2hfd2lkZS5jCkBAIC0wLDAgKzEsMjc5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogaW5jaF93aWRlLmMsdiAxLjcgMjAxMC8wNS8wMSAxOToxMzo0NiB0b20gRXhwICQKKyAqLworLyoKKyAgICAgICBpbnQgaW5fd2NoKGNjaGFyX3QgKndjdmFsKTsKKyAgICAgICBpbnQgbXZpbl93Y2goaW50IHksIGludCB4LCBjY2hhcl90ICp3Y3ZhbCk7CisgICAgICAgaW50IG12d2luX3djaChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCBjY2hhcl90ICp3Y3ZhbCk7CisgICAgICAgaW50IHdpbl93Y2goV0lORE9XICp3aW4sIGNjaGFyX3QgKndjdmFsKTsKKyAgICAgICBpbnQgaW5fd2Noc3RyKGNjaGFyX3QgKndjaHN0cik7CisgICAgICAgaW50IGluX3djaG5zdHIoY2NoYXJfdCAqd2Noc3RyLCBpbnQgbik7CisgICAgICAgaW50IHdpbl93Y2hzdHIoV0lORE9XICp3aW4sIGNjaGFyX3QgKndjaHN0cik7CisgICAgICAgaW50IHdpbl93Y2huc3RyKFdJTkRPVyAqd2luLCBjY2hhcl90ICp3Y2hzdHIsIGludCBuKTsKKyAgICAgICBpbnQgbXZpbl93Y2hzdHIoaW50IHksIGludCB4LCBjY2hhcl90ICp3Y2hzdHIpOworICAgICAgIGludCBtdmluX3djaG5zdHIoaW50IHksIGludCB4LCBjY2hhcl90ICp3Y2hzdHIsIGludCBuKTsKKyAgICAgICBpbnQgbXZ3aW5fd2Noc3RyKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIGNjaGFyX3QgKndjaHN0cik7CisgICAgICAgaW50IG12d2luX3djaG5zdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgY2NoYXJfdCAqd2Noc3RyLCBpbnQgbik7CisqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCisjZGVmaW5lIEJBU0VfWSA3CisjZGVmaW5lIE1BWF9DT0xTIDEwMjQKKworc3RhdGljIGJvb2wKK1F1aXQoaW50IGNoKQoreworICAgIHJldHVybiAoY2ggPT0gRVJSIHx8IGNoID09ICdxJyB8fCBjaCA9PSBRVUlUIHx8IGNoID09IEVTQ0FQRSk7Cit9CisKK3N0YXRpYyBpbnQKK3Rlc3RfaW5jaHMoaW50IGxldmVsLCBjaGFyICoqYXJndiwgV0lORE9XICpjaHJ3aW4sIFdJTkRPVyAqc3Ryd2luKQoreworICAgIFdJTkRPVyAqdHh0Ym94ID0gMDsKKyAgICBXSU5ET1cgKnR4dHdpbiA9IDA7CisgICAgRklMRSAqZnA7CisgICAgaW50IGo7CisgICAgaW50IHR4dF94ID0gMCwgdHh0X3kgPSAwOworICAgIGludCBiYXNlX3k7CisgICAgaW50IGxpbWl0OworICAgIGNjaGFyX3QgY2g7CisgICAgY2NoYXJfdCB0ZXh0W01BWF9DT0xTXTsKKworICAgIGlmIChhcmd2W2xldmVsXSA9PSAwKSB7CisJYmVlcCgpOworCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPiAxKSB7CisJdHh0Ym94ID0gbmV3d2luKExJTkVTIC0gQkFTRV9ZLCBDT0xTIC0gbGV2ZWwsIEJBU0VfWSwgbGV2ZWwpOworCWJveCh0eHRib3gsIDAsIDApOworCXdub3V0cmVmcmVzaCh0eHRib3gpOworCisJdHh0d2luID0gZGVyd2luKHR4dGJveCwKKwkJCWdldG1heHkodHh0Ym94KSAtIDIsCisJCQlnZXRtYXh4KHR4dGJveCkgLSAyLAorCQkJMSwgMSk7CisJYmFzZV95ID0gMDsKKyAgICB9IGVsc2UgeworCXR4dHdpbiA9IHN0ZHNjcjsKKwliYXNlX3kgPSBCQVNFX1k7CisgICAgfQorCisgICAga2V5cGFkKHR4dHdpbiwgVFJVRSk7CS8qIGVuYWJsZSBrZXlib2FyZCBtYXBwaW5nICovCisgICAgKHZvaWQpIGNicmVhaygpOwkJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworICAgICh2b2lkKSBub2VjaG8oKTsJCS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKworICAgIHR4dF95ID0gYmFzZV95OworICAgIHR4dF94ID0gMDsKKyAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKyAgICBpZiAoKGZwID0gZm9wZW4oYXJndltsZXZlbF0sICJyIikpICE9IDApIHsKKwl3aGlsZSAoKGogPSBmZ2V0YyhmcCkpICE9IEVPRikgeworCSAgICBpZiAod2FkZGNoKHR4dHdpbiwgVUNoYXIoaikpICE9IE9LKSB7CisJCWJyZWFrOworCSAgICB9CisJfQorCWZjbG9zZShmcCk7CisgICAgfSBlbHNlIHsKKwl3cHJpbnR3KHR4dHdpbiwgIkNhbm5vdCBvcGVuOlxuJXMiLCBhcmd2WzFdKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIVF1aXQoaiA9IG12d2dldGNoKHR4dHdpbiwgdHh0X3ksIHR4dF94KSkpIHsKKwlzd2l0Y2ggKGopIHsKKwljYXNlIEtFWV9ET1dOOgorCWNhc2UgJ2onOgorCSAgICBpZiAodHh0X3kgPCBnZXRtYXh5KHR4dHdpbikgLSAxKQorCQl0eHRfeSsrOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfVVA6CisJY2FzZSAnayc6CisJICAgIGlmICh0eHRfeSA+IGJhc2VfeSkKKwkJdHh0X3ktLTsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJY2FzZSAnaCc6CisJICAgIGlmICh0eHRfeCA+IDApCisJCXR4dF94LS07CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlIEtFWV9SSUdIVDoKKwljYXNlICdsJzoKKwkgICAgaWYgKHR4dF94IDwgZ2V0bWF4eCh0eHR3aW4pIC0gMSkKKwkJdHh0X3grKzsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICB0ZXN0X2luY2hzKGxldmVsICsgMSwgYXJndiwgY2hyd2luLCBzdHJ3aW4pOworCSAgICBpZiAodHh0Ym94ICE9IDApIHsKKwkJdG91Y2h3aW4odHh0Ym94KTsKKwkJd25vdXRyZWZyZXNoKHR4dGJveCk7CisJICAgIH0gZWxzZSB7CisJCXRvdWNod2luKHR4dHdpbik7CisJCXdub3V0cmVmcmVzaCh0eHR3aW4pOworCSAgICB9CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisJTXZXUHJpbnR3KGNocndpbiwgMCwgMCwgImNoYXI6Iik7CisJd2NscnRvZW9sKGNocndpbik7CisKKwlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisJICAgIGlmICh3aW5fd2NoKHR4dHdpbiwgJmNoKSAhPSBFUlIpIHsKKwkJaWYgKHdhZGRfd2NoKGNocndpbiwgJmNoKSAhPSBFUlIpIHsKKwkJICAgIGZvciAoaiA9IHR4dF94ICsgMTsgaiA8IGdldG1heHgodHh0d2luKTsgKytqKSB7CisJCQlpZiAobXZ3aW5fd2NoKHR4dHdpbiwgdHh0X3ksIGosICZjaCkgIT0gRVJSKSB7CisJCQkgICAgaWYgKHdhZGRfd2NoKGNocndpbiwgJmNoKSA9PSBFUlIpIHsKKwkJCQlicmVhazsKKwkJCSAgICB9CisJCQl9IGVsc2UgeworCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBtb3ZlKHR4dF95LCB0eHRfeCk7CisJICAgIGlmIChpbl93Y2goJmNoKSAhPSBFUlIpIHsKKwkJaWYgKHdhZGRfd2NoKGNocndpbiwgJmNoKSAhPSBFUlIpIHsKKwkJICAgIGZvciAoaiA9IHR4dF94ICsgMTsgaiA8IGdldG1heHgodHh0d2luKTsgKytqKSB7CisJCQlpZiAobXZpbl93Y2godHh0X3ksIGosICZjaCkgIT0gRVJSKSB7CisJCQkgICAgaWYgKHdhZGRfd2NoKGNocndpbiwgJmNoKSA9PSBFUlIpIHsKKwkJCQlicmVhazsKKwkJCSAgICB9CisJCQl9IGVsc2UgeworCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKwl9CisJd25vdXRyZWZyZXNoKGNocndpbik7CisKKwlNdldQcmludHcoc3Ryd2luLCAwLCAwLCAidGV4dDoiKTsKKwl3Y2xydG9ib3Qoc3Ryd2luKTsKKworCWxpbWl0ID0gZ2V0bWF4eChzdHJ3aW4pIC0gNTsKKworCWlmICh0eHR3aW4gIT0gc3Rkc2NyKSB7CisJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkgICAgaWYgKHdpbl93Y2hzdHIodHh0d2luLCB0ZXh0KSAhPSBFUlIpIHsKKwkJKHZvaWQpIG12d2FkZF93Y2hzdHIoc3Ryd2luLCAwLCA1LCB0ZXh0KTsKKwkgICAgfQorCisJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkgICAgaWYgKHdpbl93Y2huc3RyKHR4dHdpbiwgdGV4dCwgbGltaXQpICE9IEVSUikgeworCQkodm9pZCkgbXZ3YWRkX3djaHN0cihzdHJ3aW4sIDEsIDUsIHRleHQpOworCSAgICB9CisKKwkgICAgaWYgKG12d2luX3djaHN0cih0eHR3aW4sIHR4dF95LCB0eHRfeCwgdGV4dCkgIT0gRVJSKSB7CisJCSh2b2lkKSBtdndhZGRfd2Noc3RyKHN0cndpbiwgMiwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZ3aW5fd2NobnN0cih0eHR3aW4sIHR4dF95LCB0eHRfeCwgdGV4dCwgbGltaXQpICE9IEVSUikgeworCQkodm9pZCkgbXZ3YWRkX3djaHN0cihzdHJ3aW4sIDMsIDUsIHRleHQpOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgbW92ZSh0eHRfeSwgdHh0X3gpOworCSAgICBpZiAoaW5fd2Noc3RyKHRleHQpICE9IEVSUikgeworCQkodm9pZCkgbXZ3YWRkX3djaHN0cihzdHJ3aW4sIDAsIDUsIHRleHQpOworCSAgICB9CisKKwkgICAgbW92ZSh0eHRfeSwgdHh0X3gpOworCSAgICBpZiAoaW5fd2NobnN0cih0ZXh0LCBsaW1pdCkgIT0gRVJSKSB7CisJCSh2b2lkKSBtdndhZGRfd2Noc3RyKHN0cndpbiwgMSwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZpbl93Y2hzdHIodHh0X3ksIHR4dF94LCB0ZXh0KSAhPSBFUlIpIHsKKwkJKHZvaWQpIG12d2FkZF93Y2hzdHIoc3Ryd2luLCAyLCA1LCB0ZXh0KTsKKwkgICAgfQorCisJICAgIGlmIChtdmluX3djaG5zdHIodHh0X3ksIHR4dF94LCB0ZXh0LCBsaW1pdCkgIT0gRVJSKSB7CisJCSh2b2lkKSBtdndhZGRfd2Noc3RyKHN0cndpbiwgMywgNSwgdGV4dCk7CisJICAgIH0KKwl9CisKKwl3bm91dHJlZnJlc2goc3Ryd2luKTsKKyAgICB9CisgICAgaWYgKGxldmVsID4gMSkgeworCWRlbHdpbih0eHR3aW4pOworCWRlbHdpbih0eHRib3gpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpjaHJib3g7CisgICAgV0lORE9XICpjaHJ3aW47CisgICAgV0lORE9XICpzdHJ3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIGNocmJveCA9IGRlcndpbihzdGRzY3IsIEJBU0VfWSwgQ09MUywgMCwgMCk7CisgICAgYm94KGNocmJveCwgMCwgMCk7CisgICAgd25vdXRyZWZyZXNoKGNocmJveCk7CisKKyAgICBjaHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCAxLCBDT0xTIC0gMiwgMSwgMSk7CisgICAgc3Ryd2luID0gZGVyd2luKGNocmJveCwgNCwgQ09MUyAtIDIsIDIsIDEpOworCisgICAgdGVzdF9pbmNocygxLCBhcmd2LCBjaHJ3aW4sIHN0cndpbik7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSB3aWRlLW5jdXJzZXMgbGlicmFyeVxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9pbmNocy5jIGIvdGVzdC9pbmNocy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlM2FhYjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2luY2hzLmMKQEAgLTAsMCArMSwyODQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBpbmNocy5jLHYgMS4xMiAyMDEyLzExLzE4IDAxOjU4OjE1IHRvbSBFeHAgJAorICoKKyAqIEF1dGhvcjogVGhvbWFzIEUgRGlja2V5CisgKi8KKy8qCisgICAgICAgY2h0eXBlIGluY2godm9pZCk7CisgICAgICAgY2h0eXBlIHdpbmNoKFdJTkRPVyAqd2luKTsKKyAgICAgICBjaHR5cGUgbXZpbmNoKGludCB5LCBpbnQgeCk7CisgICAgICAgY2h0eXBlIG12d2luY2goV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCk7CisgICAgICAgaW50IGluY2hzdHIoY2h0eXBlICpjaHN0cik7CisgICAgICAgaW50IGluY2huc3RyKGNodHlwZSAqY2hzdHIsIGludCBuKTsKKyAgICAgICBpbnQgd2luY2hzdHIoV0lORE9XICp3aW4sIGNodHlwZSAqY2hzdHIpOworICAgICAgIGludCB3aW5jaG5zdHIoV0lORE9XICp3aW4sIGNodHlwZSAqY2hzdHIsIGludCBuKTsKKyAgICAgICBpbnQgbXZpbmNoc3RyKGludCB5LCBpbnQgeCwgY2h0eXBlICpjaHN0cik7CisgICAgICAgaW50IG12aW5jaG5zdHIoaW50IHksIGludCB4LCBjaHR5cGUgKmNoc3RyLCBpbnQgbik7CisgICAgICAgaW50IG12d2luY2hzdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgY2h0eXBlICpjaHN0cik7CisgICAgICAgaW50IG12d2luY2huc3RyKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIGNodHlwZSAqY2hzdHIsIGludCBuKTsKKyovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2RlZmluZSBCQVNFX1kgNworI2RlZmluZSBNQVhfQ09MUyAxMDI0CisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqcykKK3sKKyAgICBpbnQgc2F2ZSA9IGVycm5vOworICAgIGVuZHdpbigpOworICAgIGVycm5vID0gc2F2ZTsKKyAgICBwZXJyb3Iocyk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIGJvb2wKK1F1aXQoaW50IGNoKQoreworICAgIHJldHVybiAoY2ggPT0gRVJSIHx8IGNoID09ICdxJyB8fCBjaCA9PSBRVUlUIHx8IGNoID09IEVTQ0FQRSk7Cit9CisKK3N0YXRpYyBpbnQKK3Rlc3RfaW5jaHMoaW50IGxldmVsLCBjaGFyICoqYXJndiwgV0lORE9XICpjaHJ3aW4sIFdJTkRPVyAqc3Ryd2luKQoreworICAgIFdJTkRPVyAqdHh0Ym94ID0gMDsKKyAgICBXSU5ET1cgKnR4dHdpbiA9IDA7CisgICAgRklMRSAqZnA7CisgICAgaW50IGNoLCBqOworICAgIGludCB0eHRfeCA9IDAsIHR4dF95ID0gMDsKKyAgICBpbnQgYmFzZV95OworICAgIGludCBsaW1pdDsKKyAgICBjaHR5cGUgdGV4dFtNQVhfQ09MU107CisKKyAgICBpZiAoYXJndltsZXZlbF0gPT0gMCkgeworCWJlZXAoKTsKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKGxldmVsID4gMSkgeworCXR4dGJveCA9IG5ld3dpbihMSU5FUyAtIEJBU0VfWSwgQ09MUyAtIGxldmVsLCBCQVNFX1ksIGxldmVsKTsKKwlib3godHh0Ym94LCAwLCAwKTsKKwl3bm91dHJlZnJlc2godHh0Ym94KTsKKworCXR4dHdpbiA9IGRlcndpbih0eHRib3gsCisJCQlnZXRtYXh5KHR4dGJveCkgLSAyLAorCQkJZ2V0bWF4eCh0eHRib3gpIC0gMiwKKwkJCTEsIDEpOworCWJhc2VfeSA9IDA7CisgICAgfSBlbHNlIHsKKwl0eHR3aW4gPSBzdGRzY3I7CisJYmFzZV95ID0gQkFTRV9ZOworICAgIH0KKyAgICBpZiAodHh0d2luID09IDApCisJZmFpbGVkKCJjYW5ub3QgY3JlYXRlIHR4dHdpbiIpOworCisgICAga2V5cGFkKHR4dHdpbiwgVFJVRSk7CS8qIGVuYWJsZSBrZXlib2FyZCBtYXBwaW5nICovCisgICAgKHZvaWQpIGNicmVhaygpOwkJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworICAgICh2b2lkKSBub2VjaG8oKTsJCS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKworICAgIHR4dF95ID0gYmFzZV95OworICAgIHR4dF94ID0gMDsKKyAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKyAgICBpZiAoKGZwID0gZm9wZW4oYXJndltsZXZlbF0sICJyIikpICE9IDApIHsKKwl3aGlsZSAoKGogPSBmZ2V0YyhmcCkpICE9IEVPRikgeworCSAgICBpZiAod2FkZGNoKHR4dHdpbiwgVUNoYXIoaikpICE9IE9LKSB7CisJCWJyZWFrOworCSAgICB9CisJfQorCWZjbG9zZShmcCk7CisgICAgfSBlbHNlIHsKKwl3cHJpbnR3KHR4dHdpbiwgIkNhbm5vdCBvcGVuOlxuJXMiLCBhcmd2WzFdKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIVF1aXQoaiA9IG12d2dldGNoKHR4dHdpbiwgdHh0X3ksIHR4dF94KSkpIHsKKwlzd2l0Y2ggKGopIHsKKwljYXNlIEtFWV9ET1dOOgorCWNhc2UgJ2onOgorCSAgICBpZiAodHh0X3kgPCBnZXRtYXh5KHR4dHdpbikgLSAxKQorCQl0eHRfeSsrOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfVVA6CisJY2FzZSAnayc6CisJICAgIGlmICh0eHRfeSA+IGJhc2VfeSkKKwkJdHh0X3ktLTsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJY2FzZSAnaCc6CisJICAgIGlmICh0eHRfeCA+IDApCisJCXR4dF94LS07CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlIEtFWV9SSUdIVDoKKwljYXNlICdsJzoKKwkgICAgaWYgKHR4dF94IDwgZ2V0bWF4eCh0eHR3aW4pIC0gMSkKKwkJdHh0X3grKzsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICB0ZXN0X2luY2hzKGxldmVsICsgMSwgYXJndiwgY2hyd2luLCBzdHJ3aW4pOworCSAgICBpZiAodHh0Ym94ICE9IDApIHsKKwkJdG91Y2h3aW4odHh0Ym94KTsKKwkJd25vdXRyZWZyZXNoKHR4dGJveCk7CisJICAgIH0gZWxzZSB7CisJCXRvdWNod2luKHR4dHdpbik7CisJCXdub3V0cmVmcmVzaCh0eHR3aW4pOworCSAgICB9CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisJTXZXUHJpbnR3KGNocndpbiwgMCwgMCwgImNoYXI6Iik7CisJd2NscnRvZW9sKGNocndpbik7CisKKwlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKwkgICAgaWYgKChjaCA9IChpbnQpIHdpbmNoKHR4dHdpbikpICE9IEVSUikgeworCQlpZiAod2FkZGNoKGNocndpbiwgKGNodHlwZSkgY2gpICE9IEVSUikgeworCQkgICAgZm9yIChqID0gdHh0X3ggKyAxOyBqIDwgZ2V0bWF4eCh0eHR3aW4pOyArK2opIHsKKwkJCWlmICgoY2ggPSAoaW50KSBtdndpbmNoKHR4dHdpbiwgdHh0X3ksIGopKSAhPSBFUlIpIHsKKwkJCSAgICBpZiAod2FkZGNoKGNocndpbiwgKGNodHlwZSkgY2gpID09IEVSUikgeworCQkJCWJyZWFrOworCQkJICAgIH0KKwkJCX0gZWxzZSB7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0gZWxzZSB7CisJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKworCSAgICBpZiAoKGNoID0gKGludCkgaW5jaCgpKSAhPSBFUlIpIHsKKwkJaWYgKHdhZGRjaChjaHJ3aW4sIChjaHR5cGUpIGNoKSAhPSBFUlIpIHsKKwkJICAgIGZvciAoaiA9IHR4dF94ICsgMTsgaiA8IGdldG1heHgodHh0d2luKTsgKytqKSB7CisJCQlpZiAoKGNoID0gKGludCkgbXZpbmNoKHR4dF95LCBqKSkgIT0gRVJSKSB7CisJCQkgICAgaWYgKHdhZGRjaChjaHJ3aW4sIChjaHR5cGUpIGNoKSA9PSBFUlIpIHsKKwkJCQlicmVhazsKKwkJCSAgICB9CisJCQl9IGVsc2UgeworCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKwl9CisJd25vdXRyZWZyZXNoKGNocndpbik7CisKKwlNdldQcmludHcoc3Ryd2luLCAwLCAwLCAidGV4dDoiKTsKKwl3Y2xydG9ib3Qoc3Ryd2luKTsKKworCWxpbWl0ID0gZ2V0bWF4eChzdHJ3aW4pIC0gNTsKKworCWlmICh0eHR3aW4gIT0gc3Rkc2NyKSB7CisJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkgICAgaWYgKHdpbmNoc3RyKHR4dHdpbiwgdGV4dCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMCwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisJICAgIGlmICh3aW5jaG5zdHIodHh0d2luLCB0ZXh0LCBsaW1pdCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMSwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZ3aW5jaHN0cih0eHR3aW4sIHR4dF95LCB0eHRfeCwgdGV4dCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMiwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZ3aW5jaG5zdHIodHh0d2luLCB0eHRfeSwgdHh0X3gsIHRleHQsIGxpbWl0KSAhPSBFUlIpIHsKKwkJTXZXQWRkQ2hTdHIoc3Ryd2luLCAzLCA1LCB0ZXh0KTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKwkgICAgaWYgKGluY2hzdHIodGV4dCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMCwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBtb3ZlKHR4dF95LCB0eHRfeCk7CisJICAgIGlmIChpbmNobnN0cih0ZXh0LCBsaW1pdCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMSwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZpbmNoc3RyKHR4dF95LCB0eHRfeCwgdGV4dCkgIT0gRVJSKSB7CisJCU12V0FkZENoU3RyKHN0cndpbiwgMiwgNSwgdGV4dCk7CisJICAgIH0KKworCSAgICBpZiAobXZpbmNobnN0cih0eHRfeSwgdHh0X3gsIHRleHQsIGxpbWl0KSAhPSBFUlIpIHsKKwkJTXZXQWRkQ2hTdHIoc3Ryd2luLCAzLCA1LCB0ZXh0KTsKKwkgICAgfQorCX0KKworCXdub3V0cmVmcmVzaChzdHJ3aW4pOworICAgIH0KKyAgICBpZiAobGV2ZWwgPiAxKSB7CisJZGVsd2luKHR4dHdpbik7CisJZGVsd2luKHR4dGJveCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBXSU5ET1cgKmNocmJveDsKKyAgICBXSU5ET1cgKmNocndpbjsKKyAgICBXSU5ET1cgKnN0cndpbjsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIGlmIChhcmdjIDwgMikgeworCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIGZpbGVcbiIsIGFyZ3ZbMF0pOworCXJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgaW5pdHNjcigpOworCisgICAgY2hyYm94ID0gZGVyd2luKHN0ZHNjciwgQkFTRV9ZLCBDT0xTLCAwLCAwKTsKKyAgICBib3goY2hyYm94LCAwLCAwKTsKKyAgICB3bm91dHJlZnJlc2goY2hyYm94KTsKKworICAgIGNocndpbiA9IGRlcndpbihjaHJib3gsIDEsIENPTFMgLSAyLCAxLCAxKTsKKyAgICBzdHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCA0LCBDT0xTIC0gMiwgMiwgMSk7CisKKyAgICB0ZXN0X2luY2hzKDEsIGFyZ3YsIGNocndpbiwgc3Ryd2luKTsKKworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2luc193aWRlLmMgYi90ZXN0L2luc193aWRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU3YzEyMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvaW5zX3dpZGUuYwpAQCAtMCwwICsxLDUxNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGluc193aWRlLmMsdiAxLjIxIDIwMTQvMDgvMDIgMTc6MjQ6NTUgdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgdGhlIHdpbnNfd3N0cigpIGFuZCB3aW5zX3djaCBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAwMi8xMS8yMworICoKKyAqIE5vdGU6IHRvIHByb3ZpZGUgaW5wdXRzIGZvciAqaW5zX3djaCgpLCB3ZSB1c2Ugc2V0Y2NoYXIoKS4gIEEgcXVpcmsgb2YgdGhlCisgKiBYL09wZW4gZGVmaW5pdGlvbiBmb3IgdGhhdCBmdW5jdGlvbiBpcyB0aGF0IHRoZSBzdHJpbmcgY29udGFpbnMgbm8KKyAqIGNoYXJhY3RlcnMgd2l0aCBuZWdhdGl2ZSB3aWR0aC4gIEFueSBjb250cm9sIGNoYXJhY3RlciAoc3VjaCBhcyB0YWIpIGZhbGxzCisgKiBpbnRvIHRoYXQgY2F0ZWdvcnkuICBTbyBpdCBmb2xsb3dzIHRoYXQgKmluc193Y2goKSBjYW5ub3QgcmVuZGVyIGEgdGFiCisgKiBjaGFyYWN0ZXIgYmVjYXVzZSB0aGVyZSBpcyBubyBsZWdhbCB3YXkgdG8gY29uc3RydWN0IGEgY2NoYXJfdCBjb250YWluaW5nCisgKiBvbmUuICBYL09wZW4gZG9lcyBub3QgZG9jdW1lbnQgdGhpcywgYW5kIGl0IHdvdWxkIGJlIGxvZ2ljYWwgdG8gYXNzdW1lIHRoYXQKKyAqICppbnNfd3N0cigpIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9uLCBidXQgaXQgdXNlcyBhIHdjaGFyX3Qgc3RyaW5nIGRpcmVjdGx5LAorICogYW5kIGRvZXMgbm90IGRvY3VtZW50IGhvdyB0YWJzIGFyZSBoYW5kbGVkLgorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisKKyNkZWZpbmUgV0lERV9MSU5FREFUQQorI2luY2x1ZGUgPGxpbmVkYXRhLmg+CisKKy8qIGRlZmluaXRpb25zIHRvIG1ha2UgaXQgc2ltcGxlciB0byBjb21wYXJlIHdpdGggaW5zZXJ0cy5jICovCisjZGVmaW5lIEluc05TdHIgICAgaW5zX253c3RyCisjZGVmaW5lIEluc1N0ciAgICAgaW5zX3dzdHIKKyNkZWZpbmUgTXZJbnNOU3RyICAodm9pZCkgbXZpbnNfbndzdHIKKyNkZWZpbmUgTXZJbnNTdHIgICAodm9pZCkgbXZpbnNfd3N0cgorI2RlZmluZSBNdldJbnNOU3RyICh2b2lkKSBtdndpbnNfbndzdHIKKyNkZWZpbmUgTXZXSW5zU3RyICAodm9pZCkgbXZ3aW5zX3dzdHIKKyNkZWZpbmUgV0luc05TdHIgICB3aW5zX253c3RyCisjZGVmaW5lIFdJbnNTdHIgICAgd2luc193c3RyCisKKyNkZWZpbmUgTVlfVEFCU0laRSA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgb0RlZmF1bHQgPSAwLAorICAgIG9Nb3ZlID0gMSwKKyAgICBvV2luZG93ID0gMiwKKyAgICBvTW92ZVdpbmRvdyA9IDMKK30gT3B0aW9uczsKKworc3RhdGljIGJvb2wgbV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHdfb3B0ID0gRkFMU0U7CitzdGF0aWMgaW50IG5fb3B0ID0gLTE7CisKK3N0YXRpYyB2b2lkCitsZWdlbmQoV0lORE9XICp3aW4sIGludCBsZXZlbCwgT3B0aW9ucyBzdGF0ZSwgd2NoYXJfdCAqYnVmZmVyLCBpbnQgbGVuZ3RoKQoreworICAgIGNvbnN0IGNoYXIgKnNob3dzdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2Ugb0RlZmF1bHQ6CisJc2hvd3N0YXRlID0gIiI7CisJYnJlYWs7CisgICAgY2FzZSBvTW92ZToKKwlzaG93c3RhdGUgPSAiIChtdlhYWCkiOworCWJyZWFrOworICAgIGNhc2Ugb1dpbmRvdzoKKwlzaG93c3RhdGUgPSAiICh3aW5YWFgpIjsKKwlicmVhazsKKyAgICBjYXNlIG9Nb3ZlV2luZG93OgorCXNob3dzdGF0ZSA9ICIgKG12d2luWFhYKSI7CisJYnJlYWs7CisgICAgfQorCisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgIlRoZSBTdHJpbmdzL0NoYXJzIGRpc3BsYXlzIHNob3VsZCBtYXRjaC4gIEVudGVyIGFueSBjaGFyYWN0ZXJzLCBleGNlcHQ6XG4iKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgImRvd24tYXJyb3cgb3IgXk4gdG8gcmVwZWF0IG9uIG5leHQgbGluZSwgXlcgZm9yIGlubmVyIHdpbmRvdywgRVNDIHRvIGV4aXQuXG4iKTsKKyAgICB3Y2xydG9lb2wod2luKTsKKyAgICB3cHJpbnR3KHdpbiwgIkxldmVsICVkLCVzIGluc2VydGVkICVkIGNoYXJhY3RlcnMgPCIsIGxldmVsLAorCSAgICBzaG93c3RhdGUsIGxlbmd0aCk7CisgICAgd2FkZHdzdHIod2luLCBidWZmZXIpOworICAgIHdhZGRzdHIod2luLCAiPiIpOworfQorCitzdGF0aWMgaW50CitDb2xPZih3Y2hhcl90ICpidWZmZXIsIGludCBsZW5ndGgsIGludCBtYXJnaW4pCit7CisgICAgaW50IG47CisgICAgaW50IHJlc3VsdDsKKworICAgIGZvciAobiA9IDAsIHJlc3VsdCA9IG1hcmdpbiArIDE7IG4gPCBsZW5ndGg7ICsrbikgeworCWludCBjaCA9IGJ1ZmZlcltuXTsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnXG4nOgorCSAgICAvKiBhY3R1YWxseSBuZXdsaW5lIHNob3VsZCBjbGVhciB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lCisJICAgICAqIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGxpbmUgLSBidXQgdGhhdCBzZWVtcyBhIGxpdHRsZSBhd2t3YXJkCisJICAgICAqIGluIHRoaXMgZXhhbXBsZS4KKwkgICAgICovCisJY2FzZSAnXHInOgorCSAgICByZXN1bHQgPSAwOworCSAgICBicmVhazsKKwljYXNlICdcYic6CisJICAgIGlmIChyZXN1bHQgPiAwKQorCQktLXJlc3VsdDsKKwkgICAgYnJlYWs7CisJY2FzZSAnXHQnOgorCSAgICByZXN1bHQgKz0gKE1ZX1RBQlNJWkUgLSAocmVzdWx0ICUgTVlfVEFCU0laRSkpOworCSAgICBicmVhazsKKwljYXNlICdcMTc3JzoKKwkgICAgcmVzdWx0ICs9IDI7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHJlc3VsdCArPSB3Y3dpZHRoKCh3Y2hhcl90KSBjaCk7CisJICAgIGlmIChjaCA8IDMyKQorCQkrK3Jlc3VsdDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitDb252ZXJ0Q2goY2h0eXBlIHNvdXJjZSwgY2NoYXJfdCAqdGFyZ2V0KQoreworICAgIHdjaGFyX3QgdG1wX3djaGFyWzJdOworCisgICAgdG1wX3djaGFyWzBdID0gKHdjaGFyX3QpIHNvdXJjZTsKKyAgICB0bXBfd2NoYXJbMV0gPSAwOworICAgIGlmIChzZXRjY2hhcih0YXJnZXQsIHRtcF93Y2hhciwgQV9OT1JNQUwsIDAsICh2b2lkICopIDApID09IEVSUikgeworCWJlZXAoKTsKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50CitNdldJbnNDaChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCBjaHR5cGUgY2gpCit7CisgICAgaW50IGNvZGU7CisgICAgY2NoYXJfdCB0bXBfY2NoYXI7CisKKyAgICBpZiAoQ29udmVydENoKGNoLCAmdG1wX2NjaGFyKSkgeworCWNvZGUgPSBtdndpbnNfd2NoKHdpbiwgeSwgeCwgJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gbXZ3aW5zY2god2luLCB5LCB4LCBjaCk7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgaW50CitNdkluc0NoKGludCB5LCBpbnQgeCwgY2h0eXBlIGNoKQoreworICAgIGludCBjb2RlOworICAgIGNjaGFyX3QgdG1wX2NjaGFyOworCisgICAgaWYgKENvbnZlcnRDaChjaCwgJnRtcF9jY2hhcikpIHsKKwljb2RlID0gbXZpbnNfd2NoKHksIHgsICZ0bXBfY2NoYXIpOworICAgIH0gZWxzZSB7CisJY29kZSA9IG12aW5zY2goeSwgeCwgY2gpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworc3RhdGljIGludAorV0luc0NoKFdJTkRPVyAqd2luLCBjaHR5cGUgY2gpCit7CisgICAgaW50IGNvZGU7CisgICAgY2NoYXJfdCB0bXBfY2NoYXI7CisKKyAgICBpZiAoQ29udmVydENoKGNoLCAmdG1wX2NjaGFyKSkgeworCWNvZGUgPSB3aW5zX3djaCh3aW4sICZ0bXBfY2NoYXIpOworICAgIH0gZWxzZSB7CisJY29kZSA9IHdpbnNjaCh3aW4sIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIGNvZGU7Cit9CisKK3N0YXRpYyBpbnQKK0luc0NoKGNodHlwZSBjaCkKK3sKKyAgICBpbnQgY29kZTsKKyAgICBjY2hhcl90IHRtcF9jY2hhcjsKKworICAgIGlmIChDb252ZXJ0Q2goY2gsICZ0bXBfY2NoYXIpKSB7CisJY29kZSA9IGluc193Y2goJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gaW5zY2goY2gpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworI2RlZmluZSBMRU4obikgKChsZW5ndGggLSAobikgPiBuX29wdCkgPyBuX29wdCA6IChsZW5ndGggLSAobikpKQorc3RhdGljIHZvaWQKK3Rlc3RfaW5zZXJ0cyhpbnQgbGV2ZWwpCit7CisgICAgc3RhdGljIGJvb2wgZmlyc3QgPSBUUlVFOworCisgICAgaW50IGNoOworICAgIGludCBsaW1pdDsKKyAgICBpbnQgcm93ID0gMTsKKyAgICBpbnQgY29sOworICAgIGludCByb3cyLCBjb2wyOworICAgIGludCBsZW5ndGg7CisgICAgd2NoYXJfdCBidWZmZXJbQlVGU0laXTsKKyAgICBXSU5ET1cgKmxvb2sgPSAwOworICAgIFdJTkRPVyAqd29yayA9IDA7CisgICAgV0lORE9XICpzaG93ID0gMDsKKyAgICBpbnQgbWFyZ2luID0gKDIgKiBNWV9UQUJTSVpFKSAtIDE7CisgICAgT3B0aW9ucyBvcHRpb24gPSAoT3B0aW9ucykgKChpbnQpIChtX29wdCA/IG9Nb3ZlIDogb0RlZmF1bHQpCisJCQkJfCAoaW50KSAoKHdfb3B0IHx8IChsZXZlbCA+IDApKQorCQkJCQkgPyBvV2luZG93IDogb0RlZmF1bHQpKTsKKworICAgIGlmIChmaXJzdCkgeworCXN0YXRpYyBjaGFyIGNtZFs4MF07CisJc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisJcHV0ZW52KHN0cmNweShjbWQsICJUQUJTSVpFPTgiKSk7CisKKwlpbml0c2NyKCk7CisJKHZvaWQpIGNicmVhaygpOwkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisJKHZvaWQpIG5vZWNobygpOwkvKiBkb24ndCBlY2hvIGlucHV0ICovCisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CisKKwkvKgorCSAqIFNob3cgdGhlIGNoYXJhY3RlcnMgaW5zZXJ0ZWQgaW4gY29sb3IsIHRvIGRpc3Rpbmd1aXNoIGZyb20gdGhvc2UKKwkgKiB0aGF0IGFyZSBzaGlmdGVkLgorCSAqLworCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgc3RhcnRfY29sb3IoKTsKKwkgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKwl9CisgICAgfQorCisgICAgbGltaXQgPSBMSU5FUyAtIDU7CisgICAgaWYgKGxldmVsID4gMCkgeworCWxvb2sgPSBuZXd3aW4obGltaXQsIENPTFMgLSAoMiAqIChsZXZlbCAtIDEpKSwgMCwgbGV2ZWwgLSAxKTsKKwl3b3JrID0gbmV3d2luKGxpbWl0IC0gMiwgQ09MUyAtICgyICogbGV2ZWwpLCAxLCBsZXZlbCk7CisJc2hvdyA9IG5ld3dpbig0LCBDT0xTLCBsaW1pdCArIDEsIDApOworCWJveChsb29rLCAwLCAwKTsKKwl3bm91dHJlZnJlc2gobG9vayk7CisJbGltaXQgLT0gMjsKKyAgICB9IGVsc2UgeworCXdvcmsgPSBzdGRzY3I7CisJc2hvdyA9IGRlcndpbihzdGRzY3IsIDQsIENPTFMsIGxpbWl0ICsgMSwgMCk7CisgICAgfQorICAgIGtleXBhZCh3b3JrLCBUUlVFKTsKKworICAgIGZvciAoY29sID0gbWFyZ2luICsgMTsgY29sIDwgQ09MUzsgY29sICs9IE1ZX1RBQlNJWkUpCisJTXZXVkxpbmUod29yaywgcm93LCBjb2wsICcuJywgbGltaXQgLSAyKTsKKworICAgIE12V1ZMaW5lKHdvcmssIHJvdywgbWFyZ2luLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgTXZXVkxpbmUod29yaywgcm93LCBtYXJnaW4gKyAxLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgbGltaXQgLz0gMjsKKworICAgIE12V0FkZFN0cih3b3JrLCAxLCAyLCAiU3RyaW5nIik7CisgICAgTXZXQWRkU3RyKHdvcmssIGxpbWl0ICsgMSwgMiwgIkNoYXJzIik7CisgICAgd25vdXRyZWZyZXNoKHdvcmspOworCisgICAgYnVmZmVyW2xlbmd0aCA9IDBdID0gJ1wwJzsKKyAgICBsZWdlbmQoc2hvdywgbGV2ZWwsIG9wdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworICAgIGRvdXBkYXRlKCk7CisKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJd2JrZ2RzZXQod29yaywgKGNodHlwZSkgKENPTE9SX1BBSVIoMSkgfCAnICcpKTsKKyAgICB9CisKKyAgICB3aGlsZSAoKGNoID0gcmVhZF9saW5lZGF0YSh3b3JrKSkgIT0gRVJSICYmICFpc1FVSVQoY2gpKSB7CisJd21vdmUod29yaywgcm93LCBtYXJnaW4gKyAxKTsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBrZXlfUkVDVVI6CisJICAgIHRlc3RfaW5zZXJ0cyhsZXZlbCArIDEpOworCisJICAgIGlmIChsb29rKQorCQl0b3VjaHdpbihsb29rKTsKKwkgICAgdG91Y2h3aW4od29yayk7CisJICAgIHRvdWNod2luKHNob3cpOworCisJICAgIGlmIChsb29rKQorCQl3bm91dHJlZnJlc2gobG9vayk7CisJICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKwkgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisJICAgIGRvdXBkYXRlKCk7CisJICAgIGJyZWFrOworCWNhc2Uga2V5X05FV0xJTkU6CisJICAgIGlmIChyb3cgPCBsaW1pdCkgeworCQkrK3JvdzsKKwkJLyogcHV0IHRoZSB3aG9sZSBzdHJpbmcgaW4sIGFsbCBhdCBvbmNlICovCisJCWNvbDIgPSBtYXJnaW4gKyAxOworCQlzd2l0Y2ggKG9wdGlvbikgeworCQljYXNlIG9EZWZhdWx0OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBpZiAobW92ZShyb3csIGNvbDIpICE9IEVSUikgeworCQkJCUluc05TdHIoYnVmZmVyICsgY29sLCBMRU4oY29sKSk7CisJCQkgICAgfQorCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCWlmIChtb3ZlKHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkgICAgSW5zU3RyKGJ1ZmZlcik7CisJCQl9CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvTW92ZToKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgTXZJbnNOU3RyKHJvdywgY29sMiwgYnVmZmVyICsgY29sLCBMRU4oY29sKSk7CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJTXZJbnNTdHIocm93LCBjb2wyLCBidWZmZXIpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb1dpbmRvdzoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkJV0luc05TdHIod29yaywgYnVmZmVyICsgY29sLCBMRU4oY29sKSk7CisJCQkgICAgfQorCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCWlmICh3bW92ZSh3b3JrLCByb3csIGNvbDIpICE9IEVSUikgeworCQkJICAgIFdJbnNTdHIod29yaywgYnVmZmVyKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9Nb3ZlV2luZG93OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBNdldJbnNOU3RyKHdvcmssIHJvdywgY29sMiwgYnVmZmVyICsgY29sLCBMRU4oY29sKSk7CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJTXZXSW5zU3RyKHdvcmssIHJvdywgY29sMiwgYnVmZmVyKTsKKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQl9CisKKwkJLyogZG8gdGhlIGNvcnJlc3BvbmRpbmcgc2luZ2xlLWNoYXJhY3RlciBpbnNlcnRpb24gKi8KKwkJcm93MiA9IGxpbWl0ICsgcm93OworCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgKytjb2wpIHsKKwkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJCSAgICBjYXNlIG9EZWZhdWx0OgorCQkJaWYgKG1vdmUocm93MiwgY29sMikgIT0gRVJSKSB7CisJCQkgICAgSW5zQ2goKGNodHlwZSkgYnVmZmVyW2NvbF0pOworCQkJfQorCQkJYnJlYWs7CisJCSAgICBjYXNlIG9Nb3ZlOgorCQkJTXZJbnNDaChyb3cyLCBjb2wyLCAoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb1dpbmRvdzoKKwkJCWlmICh3bW92ZSh3b3JrLCByb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBXSW5zQ2god29yaywgKGNodHlwZSkgYnVmZmVyW2NvbF0pOworCQkJfQorCQkJYnJlYWs7CisJCSAgICBjYXNlIG9Nb3ZlV2luZG93OgorCQkJTXZXSW5zQ2god29yaywgcm93MiwgY29sMiwgKGNodHlwZSkgYnVmZmVyW2NvbF0pOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJ1ZmZlcltsZW5ndGgrK10gPSAod2NoYXJfdCkgY2g7CisJICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKKworCSAgICAvKiBwdXQgdGhlIHN0cmluZyBpbiwgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUgKi8KKwkgICAgY29sID0gQ29sT2YoYnVmZmVyLCBsZW5ndGggLSAxLCBtYXJnaW4pOworCSAgICBzd2l0Y2ggKG9wdGlvbikgeworCSAgICBjYXNlIG9EZWZhdWx0OgorCQlpZiAobW92ZShyb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBJbnNTdHIoYnVmZmVyICsgbGVuZ3RoIC0gMSk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmU6CisJCU12SW5zU3RyKHJvdywgY29sLCBidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJYnJlYWs7CisJICAgIGNhc2Ugb1dpbmRvdzoKKwkJaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIFdJbnNTdHIod29yaywgYnVmZmVyICsgbGVuZ3RoIC0gMSk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCU12V0luc1N0cih3b3JrLCByb3csIGNvbCwgYnVmZmVyICsgbGVuZ3RoIC0gMSk7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgLyogZG8gdGhlIGNvcnJlc3BvbmRpbmcgc2luZ2xlLWNoYXJhY3RlciBpbnNlcnRpb24gKi8KKwkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkgICAgY2FzZSBvRGVmYXVsdDoKKwkJaWYgKG1vdmUobGltaXQgKyByb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBJbnNDaCgoY2h0eXBlKSBjaCk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmU6CisJCU12SW5zQ2gobGltaXQgKyByb3csIGNvbCwgKGNodHlwZSkgY2gpOworCQlicmVhazsKKwkgICAgY2FzZSBvV2luZG93OgorCQlpZiAod21vdmUod29yaywgbGltaXQgKyByb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBXSW5zQ2god29yaywgKGNodHlwZSkgY2gpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlV2luZG93OgorCQlNdldJbnNDaCh3b3JrLCBsaW1pdCArIHJvdywgY29sLCAoY2h0eXBlKSBjaCk7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgd25vdXRyZWZyZXNoKHdvcmspOworCisJICAgIGxlZ2VuZChzaG93LCBsZXZlbCwgb3B0aW9uLCBidWZmZXIsIGxlbmd0aCk7CisJICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworCSAgICBkb3VwZGF0ZSgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIGlmIChsZXZlbCA+IDApIHsKKwlkZWx3aW4od29yayk7CisJZGVsd2luKGxvb2spOworICAgIH0KKyAgICBkZWx3aW4oc2hvdyk7Cit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisgICAgeworCSJVc2FnZTogaW5zZXJ0cyBbb3B0aW9uc10iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLWYgRklMRSByZWFkIGRhdGEgZnJvbSBnaXZlbiBmaWxlIgorCSwiICAtbiBOVU0gIGxpbWl0IHN0cmluZy1pbnNlcnRzIHRvIE5VTSBieXRlcyBvbiBeTiByZXBsYXkiCisJLCIgIC1tICAgICAgcGVyZm9ybSB3bW92ZS9tb3ZlIHNlcGFyYXRlbHkgZnJvbSBpbnNlcnQtZnVuY3Rpb25zIgorCSwiICAtdyAgICAgIHVzZSB3aW5kb3ctcGFyYW1ldGVyIGV2ZW4gd2hlbiBzdGRzY3Igd291bGQgYmUgaW1wbGllZCIKKyAgICB9OworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YmwpOyArK24pCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGJsW25dKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgY2g7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJmOm1uOnciKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZic6CisJICAgIGluaXRfbGluZWRhdGEob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbSc6CisJICAgIG1fb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbic6CisJICAgIG5fb3B0ID0gYXRvaShvcHRhcmcpOworCSAgICBpZiAobl9vcHQgPT0gMCkKKwkJbl9vcHQgPSAtMTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHdfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAob3B0aW5kIDwgYXJnYykKKwl1c2FnZSgpOworCisgICAgdGVzdF9pbnNlcnRzKDApOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHdpZGUtbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L2luc2RlbGxuLmMgYi90ZXN0L2luc2RlbGxuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYjM4OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvaW5zZGVsbG4uYwpAQCAtMCwwICsxLDM4OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGluc2RlbGxuLmMsdiAxLjkgMjAxNC8wOC8wMiAyMzowOTozMiB0b20gRXhwICQKKyAqCisgKiB0ZXN0LWRyaXZlciBmb3IgZGVsZXRlbG4sIHdkZWxldGVsbiwgaW5zZGVsbG4sIHdpbnNkZWxsbiwgaW5zZXJ0bG4sIHdpbnNlcnRsbgorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2RlZmluZSBTSE9XKG4pICgobikgPT0gRVJSID8gIkVSUiIgOiAiT0siKQorI2RlZmluZSBDT0xPUl9ERUZBVUxUICgtMSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIGM7CisgICAgdW5zaWduZWQgdjsKKyAgICBpbnQgcGFpcjsKKyAgICB1bnNpZ25lZCBhdHRyOworICAgIGludCBjb3VudDsKKyAgICBpbnQgY2g7CisgICAgY29uc3QgY2hhciAqY19tc2c7CisgICAgY29uc3QgY2hhciAqdl9tc2c7CisgICAgaW50IHlfdmFsOworICAgIGludCB4X3ZhbDsKKyAgICBpbnQgeV9iZWcsIHhfYmVnOworICAgIGludCB5X21heCwgeF9tYXg7Cit9IFNUQVRVUzsKKworc3RhdGljIGNvbnN0IGNoYXIgKgorY29sb3JfcGFyYW1zKHVuc2lnbmVkIHN0YXRlLCBpbnQgKnBhaXIpCit7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgc3RhdGljIHN0cnVjdCB7CisJc2hvcnQgcGFpcjsKKwlzaG9ydCBmZywgYmc7CisJY29uc3QgY2hhciAqbXNnOworICAgIH0gdGFibGVbXSA9IHsKKwl7IDAsIENPTE9SX0RFRkFVTFQsIENPTE9SX0RFRkFVTFQsICJkZWZhdWx0IiB9LAorCXsgMSwgQ09MT1JfUkVELCAgICAgQ09MT1JfQkxBQ0ssICAgInJlZC9ibGFjayIgfSwKKwl7IDIsIENPTE9SX1dISVRFLCAgIENPTE9SX0JMVUUsICAgICJ3aGl0ZS9ibHVlIiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIHN0YXRpYyBib29sIGZpcnN0ID0gVFJVRTsKKyAgICBjb25zdCBjaGFyICpyZXN1bHQgPSAwOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWlmIChmaXJzdCkgeworCSAgICB1bnNpZ25lZCBuOworCisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGFibGUpOyArK24pIHsKKwkJaW5pdF9wYWlyKHRhYmxlW25dLnBhaXIsIHRhYmxlW25dLmZnLCB0YWJsZVtuXS5iZyk7CisJICAgIH0KKwl9CisJaWYgKHN0YXRlIDwgU0laRU9GKHRhYmxlKSkgeworCSAgICAqcGFpciA9IHRhYmxlW3N0YXRlXS5wYWlyOworCSAgICByZXN1bHQgPSB0YWJsZVtzdGF0ZV0ubXNnOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgordmlkZW9fcGFyYW1zKHVuc2lnbmVkIHN0YXRlLCB1bnNpZ25lZCAqYXR0cikKK3sKKyAgICAvKiAqSU5ERU5ULU9GRiogKi8KKyAgICBzdGF0aWMgc3RydWN0IHsKKwl1bnNpZ25lZCBhdHRyOworCWNvbnN0IGNoYXIgKm1zZzsKKyAgICB9IHRhYmxlW10gPSB7CisJeyBBX05PUk1BTCwJIm5vcm1hbCIgfSwKKwl7IEFfQk9MRCwJImJvbGQiIH0sCisJeyBBX1JFVkVSU0UsCSJyZXZlcnNlIiB9LAorCXsgQV9VTkRFUkxJTkUsCSJ1bmRlcmxpbmUiIH0sCisJeyBBX0JMSU5LLCAJImJsaW5rIiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoc3RhdGUgPCBTSVpFT0YodGFibGUpKSB7CisJKmF0dHIgPSB0YWJsZVtzdGF0ZV0uYXR0cjsKKwlyZXN1bHQgPSB0YWJsZVtzdGF0ZV0ubXNnOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBmaWxsIHRoZSB3aW5kb3cgd2l0aCBhIHRlc3QtcGF0dGVybiAqLworc3RhdGljIHZvaWQKK2ZpbGxfd2luZG93KFdJTkRPVyAqd2luKQoreworICAgIGludCB5LCB4OworICAgIGludCB5MCA9IC0xLCB4MCA9IC0xOworCisgICAgZ2V0eXgod2luLCB5LCB4KTsKKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdoaWxlICh3YWRkc3RyKHdpbiwgIjAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogIikgIT0gRVJSKSB7CisJaW50IHkxLCB4MTsKKwlnZXR5eCh3aW4sIHkxLCB4MSk7CisJaWYgKHkxID09IHkwICYmIHgxID09IHgwKQorCSAgICBicmVhazsKKwl4MCA9IHgxOworCXkwID0geTE7CisgICAgfQorICAgIHdtb3ZlKHdpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3N0YXR1cyhXSU5ET1cgKndpbiwgU1RBVFVTICogc3ApCit7CisgICAgaW50IHksIHg7CisKKyAgICBnZXR5eCh3aW4sIHksIHgpOworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd3ByaW50dyh3aW4sICJDb3VudCAlZCIsIHNwLT5jb3VudCk7CisgICAgaWYgKHNwLT52X21zZyAhPSAwKQorCXdwcmludHcod2luLCAiIFZpZGVvICVzIiwgc3AtPnZfbXNnKTsKKyAgICBpZiAoc3AtPmNfbXNnICE9IDApCisJd3ByaW50dyh3aW4sICIgQ29sb3IgJXMiLCBzcC0+Y19tc2cpOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHdtb3ZlKHdpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCityZXNob3dfc3RhdHVzKFdJTkRPVyAqd2luLCBTVEFUVVMgKiBzcCkKK3sKKyAgICBmaWxsX3dpbmRvdyh3aW4pOworICAgIHNob3dfc3RhdHVzKHdpbiwgc3ApOworfQorCitzdGF0aWMgdm9pZAorZG9fc3Vid2luZG93KFdJTkRPVyAqd2luLCBTVEFUVVMgKiBzcCwgdm9pZCBmdW5jKFdJTkRPVyAqKSkKK3sKKyAgICBXSU5ET1cgKndpbjEgPSBuZXd3aW4oc3AtPnlfbWF4IC0gMiwgc3AtPnhfbWF4IC0gMiwKKwkJCSAgc3AtPnlfYmVnICsgMSwgc3AtPnhfYmVnICsgMSk7CisKKyAgICBpZiAod2luMSAhPSAwICYmIHNwLT55X21heCA+IDQgJiYgc3AtPnhfbWF4ID4gNCkgeworCVdJTkRPVyAqd2luMiA9IGRlcndpbih3aW4xLCBzcC0+eV9tYXggLSA0LCBzcC0+eF9tYXggLSA0LCAxLCAxKTsKKworCWlmICh3aW4yICE9IDApIHsKKwkgICAgYm94KHdpbjEsIDAsIDApOworCSAgICB3cmVmcmVzaCh3aW4xKTsKKwkgICAgZnVuYyh3aW4yKTsKKworCSAgICBkZWx3aW4od2luMik7CisJfSBlbHNlIHsKKwkgICAgYmVlcCgpOworCX0KKwlkZWx3aW4od2luMSk7CisJdG91Y2h3aW4od2luKTsKKyAgICB9IGVsc2UgeworCWlmICh3aW4xKQorCSAgICBkZWx3aW4od2luMSk7CisJYmVlcCgpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2luaXRfc3RhdHVzKFdJTkRPVyAqd2luLCBTVEFUVVMgKiBzcCkKK3sKKyAgICBtZW1zZXQoc3AsIDAsIHNpemVvZigqc3ApKTsKKyAgICBzcC0+YyA9IDk5OworICAgIHNwLT52ID0gOTk7CisgICAgc3AtPmNoID0gJyAnOworCisgICAga2V5cGFkKHdpbiwgVFJVRSk7CisgICAgZmlsbF93aW5kb3cod2luKTsKKworICAgIGdldGJlZ3l4KHdpbiwgc3AtPnlfYmVnLCBzcC0+eF9iZWcpOworICAgIGdldG1heHl4KHdpbiwgc3AtPnlfbWF4LCBzcC0+eF9tYXgpOworfQorCitzdGF0aWMgdm9pZAorc2hvd19oZWxwKFdJTkRPVyAqd2luKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YWJsZVtdID0KKyAgICB7CisJIkJhc2ljIGNvbW1hbmRzOiIKKwksIlVzZSBoL2ovay9sIG9yIGFycm93IGtleXMgdG8gbW92ZSB0aGUgY3Vyc29yLiIKKwksIlNldCB0aGUgY291bnQgcGFyYW1ldGVyIGZvciBpbnNlcnQvZGVsZXRlIGJ5IGVudGVyaW5nIGRpZ2l0cyAwLTkuIgorCSwiIgorCSwiT3RoZXIgY29tbWFuZHM6IgorCSwic3BhY2UgdG9nZ2xlcyB0aHJvdWdoIHRoZSBzZXQgb2YgdmlkZW8gYXR0cmlidXRlcyBhbmQgY29sb3JzLiIKKwksInQgICAgIHRvdWNoZXMgKGZvcmNlcyByZXBhaW50KSBvZiB0aGUgY3VycmVudCBsaW5lLiIKKwksImkgICAgIGNhbGxzIGluc2VydGxuIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIHdpdGggdGhlIGdpdmVuIGNvdW50LiIKKwksImQgICAgIGNhbGxzIGRlbGV0ZWxuIGF0IHRoZSB3aW5kb3cgYmVnaW5uaW5nIHdpdGggdGhlIGdpdmVuIGNvdW50LiIKKwksIkkgICAgIGNhbGxzIGluc2RlbGxuIGF0IHRoZSB3aW5kb3cgYmVnaW5uaW5nIHdpdGggdGhlIGdpdmVuIGNvdW50LiIKKwksIkQgICAgIGNhbGxzIGluc2RlbGxuIGF0IHRoZSB3aW5kb3cgYmVnaW5uaW5nIHdpdGggdGhlIGdpdmVuIC1jb3VudC4iCisJLCJmICAgICByZWZpbGxzIHRoZSB3aW5kb3cgd2l0aCB0ZXN0LXBhdHRlcm4gdXNpbmcgY3VycmVudCBhdHRyaWJ1dGVzLiIKKwksIncgICAgIHJlY3VyIHRvIHRlc3Qgd2luZG93cyBvdGhlciB0aGFuIHN0ZHNjciIKKwksInEgICAgIHF1aXQiCisJLCI9ICAgICByZXNldHMgY291bnQgdG8gemVyby4iCisJLCI/ICAgICBzaG93cyB0aGlzIGhlbHAtd2luZG93IgorCSwiIgorCSwiIgorICAgIH07CisKKyAgICBpbnQgeV9tYXgsIHhfbWF4OworICAgIGludCByb3c7CisKKyAgICBnZXRtYXh5eCh3aW4sIHlfbWF4LCB4X21heCk7CisgICAgZm9yIChyb3cgPSAwOyByb3cgPCAoaW50KSBTSVpFT0YodGFibGUpICYmIHJvdyA8IHlfbWF4OyArK3JvdykgeworCU12V1ByaW50dyh3aW4sIHJvdywgMCwgIiUuKnMiLCB4X21heCwgdGFibGVbcm93XSk7CisgICAgfQorICAgIHdoaWxlICh3Z2V0Y2god2luKSAhPSAncScpCisJYmVlcCgpOworfQorCitzdGF0aWMgdm9pZAordXBkYXRlX3N0YXR1cyhXSU5ET1cgKndpbiwgU1RBVFVTICogc3ApCit7CisgICAgc3dpdGNoIChzcC0+Y2gpIHsKKyAgICBjYXNlICcgJzoJCQkvKiBuZXh0IHRlc3QtaXRlcmF0aW9uICovCisJaWYgKGhhc19jb2xvcnMoKSkgeworCSAgICBpZiAoKHNwLT5jX21zZyA9IGNvbG9yX3BhcmFtcygrKyhzcC0+YyksICYoc3AtPnBhaXIpKSkgPT0gMCkgeworCQlzcC0+Y19tc2cgPSBjb2xvcl9wYXJhbXMoc3AtPmMgPSAwLCAmKHNwLT5wYWlyKSk7CisJCWlmICgoc3AtPnZfbXNnID0gdmlkZW9fcGFyYW1zKCsrKHNwLT52KSwgJihzcC0+YXR0cikpKSA9PSAwKSB7CisJCSAgICBzcC0+dl9tc2cgPSB2aWRlb19wYXJhbXMoc3AtPnYgPSAwLCAmKHNwLT5hdHRyKSk7CisJCX0KKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGlmICgoc3AtPnZfbXNnID0gdmlkZW9fcGFyYW1zKCsrKHNwLT52KSwgJihzcC0+YXR0cikpKSA9PSAwKSB7CisJCXNwLT52X21zZyA9IHZpZGVvX3BhcmFtcyhzcC0+diA9IDAsICYoc3AtPmF0dHIpKTsKKwkgICAgfQorCX0KKwlzcC0+Y291bnQgPSAwOworCXNob3dfc3RhdHVzKHdpbiwgc3ApOworCWJyZWFrOworICAgIGNhc2UgS0VZX0xFRlQ6CisgICAgY2FzZSAnaCc6CisJaWYgKHNwLT54X3ZhbCA+IDApCisJICAgIHdtb3ZlKHdpbiwgc3AtPnlfdmFsLCAtLShzcC0+eF92YWwpKTsKKwlicmVhazsKKyAgICBjYXNlIEtFWV9ET1dOOgorICAgIGNhc2UgJ2onOgorCWlmIChzcC0+eV92YWwgPCBzcC0+eV9tYXgpCisJICAgIHdtb3ZlKHdpbiwgKysoc3AtPnlfdmFsKSwgc3AtPnhfdmFsKTsKKwlicmVhazsKKyAgICBjYXNlIEtFWV9VUDoKKyAgICBjYXNlICdrJzoKKwlpZiAoc3AtPnlfdmFsID4gMCkKKwkgICAgd21vdmUod2luLCAtLShzcC0+eV92YWwpLCBzcC0+eF92YWwpOworCWJyZWFrOworICAgIGNhc2UgS0VZX1JJR0hUOgorICAgIGNhc2UgJ2wnOgorCWlmIChzcC0+eF92YWwgPCBzcC0+eF9tYXgpCisJICAgIHdtb3ZlKHdpbiwgc3AtPnlfdmFsLCArKyhzcC0+eF92YWwpKTsKKwlicmVhazsKKyAgICBjYXNlICd0JzoKKwl0b3VjaGxpbmUod2luLCBzcC0+eV92YWwsIDEpOworCWJyZWFrOworICAgIGNhc2UgJz0nOgorCXNwLT5jb3VudCA9IDA7CisJc2hvd19zdGF0dXMod2luLCBzcCk7CisJYnJlYWs7CisgICAgY2FzZSAnPyc6CisJZG9fc3Vid2luZG93KHdpbiwgc3AsIHNob3dfaGVscCk7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlpZiAoaXNkaWdpdChzcC0+Y2gpKSB7CisJICAgIHNwLT5jb3VudCA9IChzcC0+Y291bnQgKiAxMCkgKyAoc3AtPmNoIC0gJzAnKTsKKwkgICAgc2hvd19zdGF0dXMod2luLCBzcCk7CisJfSBlbHNlIHsKKwkgICAgYmVlcCgpOworCX0KKwlicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3dpbnNkZWxsbihXSU5ET1cgKndpbikKK3sKKyAgICBTVEFUVVMgc3Q7CisgICAgaW50IG47CisKKyAgICBpbml0X3N0YXR1cyh3aW4sICZzdCk7CisKKyAgICBkbyB7CisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhDT0xPUl9QQUlSKHN0LnBhaXIpLCBzdC5hdHRyKSk7CisJc3dpdGNoIChzdC5jaCkgeworCWNhc2UgJ2knOgorCSAgICBmb3IgKG4gPSAwOyBuIDwgc3QuY291bnQ7ICsrbikKKwkJd2luc2VydGxuKHdpbik7CisJICAgIGJyZWFrOworCWNhc2UgJ2QnOgorCSAgICBmb3IgKG4gPSAwOyBuIDwgc3QuY291bnQ7ICsrbikKKwkJd2RlbGV0ZWxuKHdpbik7CisJICAgIGJyZWFrOworCWNhc2UgJ0knOgorCSAgICB3aW5zZGVsbG4od2luLCBzdC5jb3VudCk7CisJICAgIGJyZWFrOworCWNhc2UgJ0QnOgorCSAgICB3aW5zZGVsbG4od2luLCAtc3QuY291bnQpOworCSAgICBicmVhazsKKwljYXNlICdmJzoKKwkgICAgZmlsbF93aW5kb3cod2luKTsKKwkgICAgcmVzaG93X3N0YXR1cyh3aW4sICZzdCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICBkb19zdWJ3aW5kb3cod2luLCAmc3QsIHRlc3Rfd2luc2RlbGxuKTsKKwkgICAgYnJlYWs7CisJY2FzZSAncSc6CisJICAgIHJldHVybjsKKwlkZWZhdWx0OgorCSAgICB1cGRhdGVfc3RhdHVzKHdpbiwgJnN0KTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0gd2hpbGUgKChzdC5jaCA9IHdnZXRjaCh3aW4pKSAhPSBFUlIpOworfQorCitzdGF0aWMgdm9pZAordGVzdF9pbnNkZWxsbih2b2lkKQoreworICAgIFNUQVRVUyBzdDsKKyAgICBpbnQgbjsKKworICAgIGluaXRfc3RhdHVzKHN0ZHNjciwgJnN0KTsKKworICAgIGRvIHsKKwkodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoc3QucGFpciksIHN0LmF0dHIpKTsKKwlzd2l0Y2ggKHN0LmNoKSB7CisJY2FzZSAnaSc6CisJICAgIGZvciAobiA9IDA7IG4gPCBzdC5jb3VudDsgKytuKQorCQlpbnNlcnRsbigpOworCSAgICBicmVhazsKKwljYXNlICdkJzoKKwkgICAgZm9yIChuID0gMDsgbiA8IHN0LmNvdW50OyArK24pCisJCWRlbGV0ZWxuKCk7CisJICAgIGJyZWFrOworCWNhc2UgJ0knOgorCSAgICBpbnNkZWxsbihzdC5jb3VudCk7CisJICAgIGJyZWFrOworCWNhc2UgJ0QnOgorCSAgICBpbnNkZWxsbigtc3QuY291bnQpOworCSAgICBicmVhazsKKwljYXNlICdmJzoKKwkgICAgZmlsbF93aW5kb3coc3Rkc2NyKTsKKwkgICAgcmVzaG93X3N0YXR1cyhzdGRzY3IsICZzdCk7CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICBkb19zdWJ3aW5kb3coc3Rkc2NyLCAmc3QsIHRlc3Rfd2luc2RlbGxuKTsKKwkgICAgYnJlYWs7CisJY2FzZSAncSc6CisJICAgIHJldHVybjsKKwlkZWZhdWx0OgorCSAgICB1cGRhdGVfc3RhdHVzKHN0ZHNjciwgJnN0KTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0gd2hpbGUgKChzdC5jaCA9IGdldGNoKCkpICE9IEVSUik7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGluaXRzY3IoKTsKKyAgICBjYnJlYWsoKTsKKyAgICBub2VjaG8oKTsKKworICAgIHRlc3RfaW5zZGVsbG4oKTsKKyAgICBlbmR3aW4oKTsKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2luc2VydHMuYyBiL3Rlc3QvaW5zZXJ0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMzhmYTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2luc2VydHMuYwpAQCAtMCwwICsxLDQ0MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IGluc2VydHMuYyx2IDEuMjcgMjAxMi8xMi8xNiAwMDozNToyNyB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgd2luc3N0cigpIGFuZCB3aW5zY2ggZnVuY3Rpb25zLgorICogVGhvbWFzIERpY2tleSAtIDIwMDIvMTAvMTkKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBIQVZFX1dJTlNTVFIKKworI2luY2x1ZGUgPGxpbmVkYXRhLmg+CisKKyNkZWZpbmUgSW5zTlN0ciAgICBpbnNuc3RyCisjZGVmaW5lIEluc1N0ciAgICAgaW5zc3RyCisjZGVmaW5lIE12SW5zTlN0ciAgKHZvaWQpIG12aW5zbnN0cgorI2RlZmluZSBNdkluc1N0ciAgICh2b2lkKSBtdmluc3N0cgorI2RlZmluZSBNdldJbnNOU3RyICh2b2lkKSBtdndpbnNuc3RyCisjZGVmaW5lIE12V0luc1N0ciAgKHZvaWQpIG12d2luc3N0cgorI2RlZmluZSBXSW5zTlN0ciAgIHdpbnNuc3RyCisjZGVmaW5lIFdJbnNTdHIgICAgd2luc3N0cgorCisjZGVmaW5lIEluc0NoICAgICAgaW5zY2gKKyNkZWZpbmUgTXZJbnNDaCAgICAodm9pZCkgbXZpbnNjaAorI2RlZmluZSBNdldJbnNDaCAgICh2b2lkKSBtdndpbnNjaAorI2RlZmluZSBXSW5zQ2ggICAgIHdpbnNjaAorCisjZGVmaW5lIE1ZX1RBQlNJWkUgOAorCit0eXBlZGVmIGVudW0geworICAgIG9EZWZhdWx0ID0gMCwKKyAgICBvTW92ZSA9IDEsCisgICAgb1dpbmRvdyA9IDIsCisgICAgb01vdmVXaW5kb3cgPSAzCit9IE9wdGlvbnM7CisKK3N0YXRpYyBib29sIG1fb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCB3X29wdCA9IEZBTFNFOworc3RhdGljIGludCBuX29wdCA9IC0xOworCitzdGF0aWMgdm9pZAorbGVnZW5kKFdJTkRPVyAqd2luLCBpbnQgbGV2ZWwsIE9wdGlvbnMgc3RhdGUsIGNoYXIgKmJ1ZmZlciwgaW50IGxlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyICpzaG93c3RhdGU7CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgZGVmYXVsdDoKKyAgICBjYXNlIG9EZWZhdWx0OgorCXNob3dzdGF0ZSA9ICIiOworCWJyZWFrOworICAgIGNhc2Ugb01vdmU6CisJc2hvd3N0YXRlID0gIiAobXZYWFgpIjsKKwlicmVhazsKKyAgICBjYXNlIG9XaW5kb3c6CisJc2hvd3N0YXRlID0gIiAod2luWFhYKSI7CisJYnJlYWs7CisgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwlzaG93c3RhdGUgPSAiIChtdndpblhYWCkiOworCWJyZWFrOworICAgIH0KKworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd3ByaW50dyh3aW4sCisJICAgICJUaGUgU3RyaW5ncy9DaGFycyBkaXNwbGF5cyBzaG91bGQgbWF0Y2guICBFbnRlciBhbnkgY2hhcmFjdGVycywgZXhjZXB0OlxuIik7CisgICAgd3ByaW50dyh3aW4sCisJICAgICJkb3duLWFycm93IG9yIF5OIHRvIHJlcGVhdCBvbiBuZXh0IGxpbmUsIF5XIGZvciBpbm5lciB3aW5kb3csIEVTQyB0byBleGl0LlxuIik7CisgICAgd2NscnRvZW9sKHdpbik7CisgICAgd3ByaW50dyh3aW4sICJMZXZlbCAlZCwlcyBpbnNlcnRlZCAlZCBjaGFyYWN0ZXJzIDwlcz4iLCBsZXZlbCwKKwkgICAgc2hvd3N0YXRlLCBsZW5ndGgsIGJ1ZmZlcik7Cit9CisKK3N0YXRpYyBpbnQKK0NvbE9mKGNoYXIgKmJ1ZmZlciwgaW50IGxlbmd0aCwgaW50IG1hcmdpbikKK3sKKyAgICBpbnQgbjsKKyAgICBpbnQgcmVzdWx0OworCisgICAgZm9yIChuID0gMCwgcmVzdWx0ID0gbWFyZ2luICsgMTsgbiA8IGxlbmd0aDsgKytuKSB7CisJaW50IGNoID0gVUNoYXIoYnVmZmVyW25dKTsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnXG4nOgorCSAgICAvKiBhY3R1YWxseSBuZXdsaW5lIHNob3VsZCBjbGVhciB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lCisJICAgICAqIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGxpbmUgLSBidXQgdGhhdCBzZWVtcyBhIGxpdHRsZSBhd2t3YXJkCisJICAgICAqIGluIHRoaXMgZXhhbXBsZS4KKwkgICAgICovCisJY2FzZSAnXHInOgorCSAgICByZXN1bHQgPSAwOworCSAgICBicmVhazsKKwljYXNlICdcYic6CisJICAgIGlmIChyZXN1bHQgPiAwKQorCQktLXJlc3VsdDsKKwkgICAgYnJlYWs7CisJY2FzZSAnXHQnOgorCSAgICByZXN1bHQgKz0gKE1ZX1RBQlNJWkUgLSAocmVzdWx0ICUgTVlfVEFCU0laRSkpOworCSAgICBicmVhazsKKwljYXNlICdcMTc3JzoKKwkgICAgcmVzdWx0ICs9IDI7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgICsrcmVzdWx0OworCSAgICBpZiAoY2ggPCAzMikKKwkJKytyZXN1bHQ7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2RlZmluZSBMRU4obikgKChsZW5ndGggLSAobikgPiBuX29wdCkgPyBuX29wdCA6IChsZW5ndGggLSAobikpKQorc3RhdGljIHZvaWQKK3Rlc3RfaW5zZXJ0cyhpbnQgbGV2ZWwpCit7CisgICAgc3RhdGljIGJvb2wgZmlyc3QgPSBUUlVFOworCisgICAgaW50IGNoOworICAgIGludCBsaW1pdDsKKyAgICBpbnQgcm93ID0gMTsKKyAgICBpbnQgY29sOworICAgIGludCByb3cyLCBjb2wyOworICAgIGludCBsZW5ndGg7CisgICAgY2hhciBidWZmZXJbQlVGU0laXTsKKyAgICBXSU5ET1cgKmxvb2sgPSAwOworICAgIFdJTkRPVyAqd29yayA9IDA7CisgICAgV0lORE9XICpzaG93ID0gMDsKKyAgICBpbnQgbWFyZ2luID0gKDIgKiBNWV9UQUJTSVpFKSAtIDE7CisgICAgT3B0aW9ucyBvcHRpb24gPSAoT3B0aW9ucykgKCh1bnNpZ25lZCkgKG1fb3B0CisJCQkJCSAgICA/IG9Nb3ZlCisJCQkJCSAgICA6IG9EZWZhdWx0KQorCQkJCXwgKHVuc2lnbmVkKSAoKHdfb3B0IHx8IChsZXZlbCA+IDApKQorCQkJCQkgICAgICA/IG9XaW5kb3cKKwkJCQkJICAgICAgOiBvRGVmYXVsdCkpOworCisgICAgaWYgKGZpcnN0KSB7CisJc3RhdGljIGNoYXIgY21kWzgwXTsKKwlzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKwlwdXRlbnYoc3RyY3B5KGNtZCwgIlRBQlNJWkU9OCIpKTsKKworCWluaXRzY3IoKTsKKwkodm9pZCkgY2JyZWFrKCk7CS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKwkodm9pZCkgbm9lY2hvKCk7CS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKworCS8qCisJICogU2hvdyB0aGUgY2hhcmFjdGVycyBpbnNlcnRlZCBpbiBjb2xvciwgdG8gZGlzdGluZ3Vpc2ggZnJvbSB0aG9zZQorCSAqIHRoYXQgYXJlIHNoaWZ0ZWQuCisJICovCisJaWYgKGhhc19jb2xvcnMoKSkgeworCSAgICBzdGFydF9jb2xvcigpOworCSAgICBpbml0X3BhaXIoMSwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworCX0KKyAgICB9CisKKyAgICBsaW1pdCA9IExJTkVTIC0gNTsKKyAgICBpZiAobGV2ZWwgPiAwKSB7CisJbG9vayA9IG5ld3dpbihsaW1pdCwgQ09MUyAtICgyICogKGxldmVsIC0gMSkpLCAwLCBsZXZlbCAtIDEpOworCXdvcmsgPSBuZXd3aW4obGltaXQgLSAyLCBDT0xTIC0gKDIgKiBsZXZlbCksIDEsIGxldmVsKTsKKwlzaG93ID0gbmV3d2luKDQsIENPTFMsIGxpbWl0ICsgMSwgMCk7CisJYm94KGxvb2ssIDAsIDApOworCXdub3V0cmVmcmVzaChsb29rKTsKKwlsaW1pdCAtPSAyOworICAgIH0gZWxzZSB7CisJd29yayA9IHN0ZHNjcjsKKwlzaG93ID0gZGVyd2luKHN0ZHNjciwgNCwgQ09MUywgbGltaXQgKyAxLCAwKTsKKyAgICB9CisgICAga2V5cGFkKHdvcmssIFRSVUUpOworCisgICAgZm9yIChjb2wgPSBtYXJnaW4gKyAxOyBjb2wgPCBDT0xTOyBjb2wgKz0gTVlfVEFCU0laRSkKKwlNdldWTGluZSh3b3JrLCByb3csIGNvbCwgJy4nLCBsaW1pdCAtIDIpOworCisgICAgTXZXVkxpbmUod29yaywgcm93LCBtYXJnaW4sIEFDU19WTElORSwgbGltaXQgLSAyKTsKKyAgICBNdldWTGluZSh3b3JrLCByb3csIG1hcmdpbiArIDEsIEFDU19WTElORSwgbGltaXQgLSAyKTsKKyAgICBsaW1pdCAvPSAyOworCisgICAgTXZXQWRkU3RyKHdvcmssIDEsIDIsICJTdHJpbmciKTsKKyAgICBNdldBZGRTdHIod29yaywgbGltaXQgKyAxLCAyLCAiQ2hhcnMiKTsKKyAgICB3bm91dHJlZnJlc2god29yayk7CisKKyAgICBidWZmZXJbbGVuZ3RoID0gMF0gPSAnXDAnOworICAgIGxlZ2VuZChzaG93LCBsZXZlbCwgb3B0aW9uLCBidWZmZXIsIGxlbmd0aCk7CisgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisgICAgZG91cGRhdGUoKTsKKworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwl3YmtnZHNldCh3b3JrLCAoY2h0eXBlKSAoQ09MT1JfUEFJUigxKSB8ICcgJykpOworICAgIH0KKworICAgIHdoaWxlICgoY2ggPSByZWFkX2xpbmVkYXRhKHdvcmspKSAhPSBFUlIgJiYgIWlzUVVJVChjaCkpIHsKKwl3bW92ZSh3b3JrLCByb3csIG1hcmdpbiArIDEpOworCXN3aXRjaCAoY2gpIHsKKwljYXNlIGtleV9SRUNVUjoKKwkgICAgdGVzdF9pbnNlcnRzKGxldmVsICsgMSk7CisKKwkgICAgaWYgKGxvb2spCisJCXRvdWNod2luKGxvb2spOworCSAgICB0b3VjaHdpbih3b3JrKTsKKwkgICAgdG91Y2h3aW4oc2hvdyk7CisKKwkgICAgaWYgKGxvb2spCisJCXdub3V0cmVmcmVzaChsb29rKTsKKwkgICAgd25vdXRyZWZyZXNoKHdvcmspOworCSAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKwkgICAgZG91cGRhdGUoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBrZXlfTkVXTElORToKKwkgICAgaWYgKHJvdyA8IGxpbWl0KSB7CisJCSsrcm93OworCQkvKiBwdXQgdGhlIHdob2xlIHN0cmluZyBpbiwgYWxsIGF0IG9uY2UgKi8KKwkJY29sMiA9IG1hcmdpbiArIDE7CisJCXN3aXRjaCAob3B0aW9uKSB7CisJCWNhc2Ugb0RlZmF1bHQ6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIGlmIChtb3ZlKHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkJSW5zTlN0cihidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKG1vdmUocm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBJbnNTdHIoYnVmZmVyKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9Nb3ZlOgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBNdkluc05TdHIocm93LCBjb2wyLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlNdkluc1N0cihyb3csIGNvbDIsIGJ1ZmZlcik7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvV2luZG93OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBpZiAod21vdmUod29yaywgcm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCQlXSW5zTlN0cih3b3JrLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkgICAgV0luc1N0cih3b3JrLCBidWZmZXIpOworCQkJfQorCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb01vdmVXaW5kb3c6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIE12V0luc05TdHIod29yaywgcm93LCBjb2wyLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlNdldJbnNTdHIod29yaywgcm93LCBjb2wyLCBidWZmZXIpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKworCQkvKiBkbyB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUtY2hhcmFjdGVyIGluc2VydGlvbiAqLworCQlyb3cyID0gbGltaXQgKyByb3c7CisJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyArK2NvbCkgeworCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCQlpZiAobW92ZShyb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBJbnNDaChVQ2hhcihidWZmZXJbY29sXSkpOworCQkJfQorCQkJYnJlYWs7CisJCSAgICBjYXNlIG9Nb3ZlOgorCQkJTXZJbnNDaChyb3cyLCBjb2wyLCBVQ2hhcihidWZmZXJbY29sXSkpOworCQkJYnJlYWs7CisJCSAgICBjYXNlIG9XaW5kb3c6CisJCQlpZiAod21vdmUod29yaywgcm93MiwgY29sMikgIT0gRVJSKSB7CisJCQkgICAgV0luc0NoKHdvcmssIFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCQlNdldJbnNDaCh3b3JrLCByb3cyLCBjb2wyLCBVQ2hhcihidWZmZXJbY29sXSkpOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGlmIChjaCA8PSAwIHx8IGNoID4gMjU1KSB7CisJCWJlZXAoKTsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnVmZmVyW2xlbmd0aCsrXSA9IChjaGFyKSBjaDsKKwkgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworCisJICAgIC8qIHB1dCB0aGUgc3RyaW5nIGluLCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSAqLworCSAgICBjb2wgPSBDb2xPZihidWZmZXIsIGxlbmd0aCAtIDEsIG1hcmdpbik7CisJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCWlmIChtb3ZlKHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIEluc1N0cihidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZToKKwkJTXZJbnNTdHIocm93LCBjb2wsIGJ1ZmZlciArIGxlbmd0aCAtIDEpOworCQlicmVhazsKKwkgICAgY2FzZSBvV2luZG93OgorCQlpZiAod21vdmUod29yaywgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgV0luc1N0cih3b3JrLCBidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJTXZXSW5zU3RyKHdvcmssIHJvdywgY29sLCBidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJYnJlYWs7CisJICAgIH0KKworCSAgICAvKiBkbyB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUtY2hhcmFjdGVyIGluc2VydGlvbiAqLworCSAgICBzd2l0Y2ggKG9wdGlvbikgeworCSAgICBjYXNlIG9EZWZhdWx0OgorCQlpZiAobW92ZShsaW1pdCArIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIEluc0NoKFVDaGFyKGNoKSk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmU6CisJCU12SW5zQ2gobGltaXQgKyByb3csIGNvbCwgVUNoYXIoY2gpKTsKKwkJYnJlYWs7CisJICAgIGNhc2Ugb1dpbmRvdzoKKwkJaWYgKHdtb3ZlKHdvcmssIGxpbWl0ICsgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgV0luc0NoKHdvcmssIFVDaGFyKGNoKSk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCU12V0luc0NoKHdvcmssIGxpbWl0ICsgcm93LCBjb2wsIFVDaGFyKGNoKSk7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgd25vdXRyZWZyZXNoKHdvcmspOworCisJICAgIGxlZ2VuZChzaG93LCBsZXZlbCwgb3B0aW9uLCBidWZmZXIsIGxlbmd0aCk7CisJICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworCSAgICBkb3VwZGF0ZSgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIGlmIChsZXZlbCA+IDApIHsKKwlkZWx3aW4od29yayk7CisJZGVsd2luKGxvb2spOworICAgIH0KKyAgICBkZWx3aW4oc2hvdyk7Cit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisgICAgeworCSJVc2FnZTogaW5zZXJ0cyBbb3B0aW9uc10iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLWYgRklMRSByZWFkIGRhdGEgZnJvbSBnaXZlbiBmaWxlIgorCSwiICAtbiBOVU0gIGxpbWl0IHN0cmluZy1pbnNlcnRzIHRvIE5VTSBieXRlcyBvbiBeTiByZXBsYXkiCisJLCIgIC1tICAgICAgcGVyZm9ybSB3bW92ZS9tb3ZlIHNlcGFyYXRlbHkgZnJvbSBpbnNlcnQtZnVuY3Rpb25zIgorCSwiICAtdyAgICAgIHVzZSB3aW5kb3ctcGFyYW1ldGVyIGV2ZW4gd2hlbiBzdGRzY3Igd291bGQgYmUgaW1wbGllZCIKKyAgICB9OworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YmwpOyArK24pCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGJsW25dKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgY2g7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJmOm1uOnciKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZic6CisJICAgIGluaXRfbGluZWRhdGEob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbSc6CisJICAgIG1fb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbic6CisJICAgIG5fb3B0ID0gYXRvaShvcHRhcmcpOworCSAgICBpZiAobl9vcHQgPT0gMCkKKwkJbl9vcHQgPSAtMTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHdfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAob3B0aW5kIDwgYXJnYykKKwl1c2FnZSgpOworCisgICAgdGVzdF9pbnNlcnRzKDApOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHdpbnNzdHIgZnVuY3Rpb25cbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYgLyogSEFWRV9XSU5TU1RSICovCmRpZmYgLS1naXQgYS90ZXN0L2tleV9uYW1lcy5jIGIvdGVzdC9rZXlfbmFtZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzlmMDJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9rZXlfbmFtZXMuYwpAQCAtMCwwICsxLDkzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDoga2V5X25hbWVzLmMsdiAxLjUgMjAxNC8wOC8wMiAxNzoyNDo1NSB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBrZXlfbmFtZXMgWy1tXSBbLXNdXG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgbjsKKworICAgIGJvb2wgZG9fc2V0dXAgPSBGQUxTRTsKKyAgICBib29sIGRvX21ldGEgPSBGQUxTRTsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgobiA9IGdldG9wdChhcmdjLCBhcmd2LCAibXMiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKG4pIHsKKwljYXNlICdtJzoKKwkgICAgZG9fbWV0YSA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3MnOgorCSAgICBkb19zZXR1cCA9IFRSVUU7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHVzYWdlKCk7CisJICAgIC8qIE5PVFJFQUNIRUQgKi8KKwl9CisgICAgfQorCisgICAgaWYgKGRvX3NldHVwKSB7CisJLyoKKwkgKiBHZXQgdGhlIHRlcm1pbmZvIGVudHJ5IGludG8gbWVtb3J5LCBhbmQgdGVsbCBuY3Vyc2VzIHRoYXQgd2Ugd2FudCB0bworCSAqIHVzZSBmdW5jdGlvbiBrZXlzLiAgVGhhdCB3aWxsIG1ha2UgaXQgYWRkIGFueSB1c2VyLWRlZmluZWQga2V5cyB0aGF0CisJICogYXBwZWFyIGluIHRoZSB0ZXJtaW5mby4KKwkgKi8KKwluZXd0ZXJtKGdldGVudigiVEVSTSIpLCBzdGRlcnIsIHN0ZGluKTsKKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlpZiAoZG9fbWV0YSkKKwkgICAgbWV0YShzdGRzY3IsIFRSVUUpOworCWVuZHdpbigpOworICAgIH0KKyAgICBmb3IgKG4gPSAtMTsgbiA8IEtFWV9NQVggKyA1MTI7IG4rKykgeworCWNvbnN0IGNoYXIgKnJlc3VsdCA9IGtleV9uYW1lKCh3Y2hhcl90KSBuKTsKKwlpZiAocmVzdWx0ICE9IDApCisJICAgIHByaW50ZigiJWQoJTVvKTolc1xuIiwgbiwgbiwgcmVzdWx0KTsKKyAgICB9CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgd2lkZS1uY3Vyc2VzIGxpYnJhcnlcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3Qva2V5bmFtZXMuYyBiL3Rlc3Qva2V5bmFtZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmNmYTg3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9rZXluYW1lcy5jCkBAIC0wLDAgKzEsODMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNiwyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiBrZXluYW1lcy5jLHYgMS45IDIwMDgvMTAvMTEgMjA6MjI6MzcgdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBrZXluYW1lcyBbLW1dIFstc11cbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCBuOworICAgIGJvb2wgZG9fc2V0dXAgPSBGQUxTRTsKKyAgICBib29sIGRvX21ldGEgPSBGQUxTRTsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgobiA9IGdldG9wdChhcmdjLCBhcmd2LCAibXMiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKG4pIHsKKwljYXNlICdtJzoKKwkgICAgZG9fbWV0YSA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3MnOgorCSAgICBkb19zZXR1cCA9IFRSVUU7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHVzYWdlKCk7CisJICAgIC8qIE5PVFJFQUNIRUQgKi8KKwl9CisgICAgfQorCisgICAgaWYgKGRvX3NldHVwKSB7CisJLyoKKwkgKiBHZXQgdGhlIHRlcm1pbmZvIGVudHJ5IGludG8gbWVtb3J5LCBhbmQgdGVsbCBuY3Vyc2VzIHRoYXQgd2Ugd2FudCB0bworCSAqIHVzZSBmdW5jdGlvbiBrZXlzLiAgVGhhdCB3aWxsIG1ha2UgaXQgYWRkIGFueSB1c2VyLWRlZmluZWQga2V5cyB0aGF0CisJICogYXBwZWFyIGluIHRoZSB0ZXJtaW5mby4KKwkgKi8KKwluZXd0ZXJtKGdldGVudigiVEVSTSIpLCBzdGRlcnIsIHN0ZGluKTsKKwlrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlpZiAoZG9fbWV0YSkKKwkgICAgbWV0YShzdGRzY3IsIFRSVUUpOworCWVuZHdpbigpOworICAgIH0KKworICAgIGZvciAobiA9IC0xOyBuIDwgS0VZX01BWCArIDUxMjsgbisrKSB7CisJY29uc3QgY2hhciAqcmVzdWx0ID0ga2V5bmFtZShuKTsKKwlpZiAocmVzdWx0ICE9IDApCisJICAgIHByaW50ZigiJWQoJTVvKTolc1xuIiwgbiwgbiwgcmVzdWx0KTsKKyAgICB9CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3Qva25pZ2h0LmMgYi90ZXN0L2tuaWdodC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlOWQyMjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2tuaWdodC5jCkBAIC0wLDAgKzEsNzcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEtuaWdodCdzIFRvdXIgLSBhIGJyYWluIGdhbWUKKyAqCisgKiBUaGUgb3JpZ2luYWwgb2YgdGhpcyBnYW1lIHdhcyBhbm9ueW1vdXMuICBJdCBoYWQgYW4gdW5iZWxpZXZhYmx5IGJvZ3VzCisgKiBpbnRlcmZhY2UsIHlvdSBhY3R1YWxseSBoYWQgdG8gZW50ZXIgc3F1YXJlIGNvb3JkaW5hdGVzISAgUmVkZXNpZ24gYnkKKyAqIEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBKdWx5IDIyIDE5OTUuICBNb3VzZSBzdXBwb3J0CisgKiBhZGRlZCBTZXB0ZW1iZXIgMjB0aCAxOTk1LgorICoKKyAqICRJZDoga25pZ2h0LmMsdiAxLjM2IDIwMTMvMDIvMTYgMTk6NTM6MDggdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisvKiBib2FyZCBzaXplICovCisjZGVmaW5lIEJERVBUSAk4CisjZGVmaW5lIEJXSURUSAk4CisKKy8qIHdoZXJlIHRvIHN0YXJ0IHRoZSBpbnN0cnVjdGlvbnMgKi8KKyNkZWZpbmUgSU5TVFJZCTIKKyNkZWZpbmUgSU5TVFJYCTM1CisKKy8qIGNvcm5lciBvZiBib2FyZCAqLworI2RlZmluZSBCT0FSRFkJMgorI2RlZmluZSBCT0FSRFgJMAorCisvKiBub3RpZmljYXRpb24gbGluZSAqLworI2RlZmluZSBOT1RJRllZCTIxCisKKy8qIHZpcnR1YWwgY29sb3IgdmFsdWVzICovCisjZGVmaW5lIFRSQUlMX0NPTE9SCTEKKyNkZWZpbmUgUExVU19DT0xPUgkyCisjZGVmaW5lIE1JTlVTX0NPTE9SCTMKKworI2RlZmluZSBDWCh4KQkJKDIgKyA0ICogKHgpKQorI2RlZmluZSBDWSh5KQkJKDEgKyAyICogKHkpKQorI2RlZmluZSBjZWxsbW92ZSh5LCB4KQl3bW92ZShib2FyZHdpbiwgQ1koeSksIENYKHgpKQorI2RlZmluZSBDWElOVih4KQkoKCh4KSAtIDEpIC8gNCkKKyNkZWZpbmUgQ1lJTlYoeSkJKCgoeSkgLSAyKSAvIDIpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBzaG9ydCB4LCB5OworfSBjZWxsOworCitzdGF0aWMgV0lORE9XICpib2FyZHdpbjsJLyogdGhlIGJvYXJkIHdpbmRvdyAqLworc3RhdGljIFdJTkRPVyAqaGVscHdpbjsJCS8qIHRoZSBoZWxwIHdpbmRvdyAqLworc3RhdGljIFdJTkRPVyAqbXNnd2luOwkJLyogdGhlIG1lc3NhZ2Ugd2luZG93ICovCitzdGF0aWMgY2VsbCBoaXN0b3J5W0JERVBUSCAqIEJXSURUSCArIDFdOwkvKiBjaG9pY2UgaGlzdG9yeSAqLworc3RhdGljIGNodHlwZSBtaW51cyA9ICctJzsJLyogcG9zc2libGUtbW92ZSBjaGFyYWN0ZXIgKi8KK3N0YXRpYyBjaHR5cGUgb2xkY2g7CitzdGF0aWMgY2h0eXBlIHBsdXMgPSAnKyc7CS8qIGN1cnNvciBob3Qtc3BvdCBjaGFyYWN0ZXIgKi8KK3N0YXRpYyBjaHR5cGUgdHJhaWwgPSAnIyc7CS8qIHRyYWlsIGNoYXJhY3RlciAqLworc3RhdGljIGludCBtb3ZlY291bnQ7CQkvKiBjb3VudCBvZiBtb3ZlcyBzbyBmYXIgKi8KK3N0YXRpYyBpbnQgdHJpYWxjb3VudDsJCS8qIGNvdW50IG9mIHRyaWFscyBzbyBmYXIgKi8KK3N0YXRpYyBzaG9ydCBib2FyZFtCREVQVEhdW0JXSURUSF07CS8qIHRoZSBzcXVhcmVzICovCisvKiAqSU5ERU5ULU9GRiogKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgIGludCB5OworICAgIGludCB4OworfSBvZmZzZXRzW10gPSB7CisgICAgeyAgMiwgIDEgfSwKKyAgICB7ICAxLCAgMiB9LAorICAgIHsgLTEsICAyIH0sCisgICAgeyAtMiwgIDEgfSwKKyAgICB7IC0yLCAtMSB9LAorICAgIHsgLTEsIC0yIH0sCisgICAgeyAgMSwgLTIgfSwKKyAgICB7ICAyLCAtMSB9LAorfTsKKy8qICpJTkRFTlQtT04qICovCisKK3N0YXRpYyB2b2lkCitpbml0X3Byb2dyYW0odm9pZCkKK3sKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBzcmFuZCgodW5zaWduZWQpIGdldHBpZCgpKTsKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CQkJLyogaW1tZWRpYXRlIGNoYXIgcmV0dXJuICovCisgICAgbm9lY2hvKCk7CQkJLyogbm8gaW1tZWRpYXRlIGVjaG8gKi8KKyAgICBib2FyZHdpbiA9IG5ld3dpbihCREVQVEggKiAyICsgMSwgQldJRFRIICogNCArIDEsIEJPQVJEWSwgQk9BUkRYKTsKKyAgICBoZWxwd2luID0gbmV3d2luKDAsIDAsIElOU1RSWSwgSU5TVFJYKTsKKyAgICBtc2d3aW4gPSBuZXd3aW4oMSwgSU5TVFJYIC0gMSwgTk9USUZZWSwgMCk7CisgICAgc2Nyb2xsb2sobXNnd2luLCBUUlVFKTsKKyAgICBrZXlwYWQoYm9hcmR3aW4sIFRSVUUpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCBiZyA9IENPTE9SX0JMQUNLOworCisJc3RhcnRfY29sb3IoKTsKKyNpZiBIQVZFX1VTRV9ERUZBVUxUX0NPTE9SUworCWlmICh1c2VfZGVmYXVsdF9jb2xvcnMoKSA9PSBPSykKKwkgICAgYmcgPSAtMTsKKyNlbmRpZgorCisJKHZvaWQpIGluaXRfcGFpcihUUkFJTF9DT0xPUiwgKHNob3J0KSBDT0xPUl9DWUFOLCAoc2hvcnQpIGJnKTsKKwkodm9pZCkgaW5pdF9wYWlyKFBMVVNfQ09MT1IsIChzaG9ydCkgQ09MT1JfUkVELCAoc2hvcnQpIGJnKTsKKwkodm9pZCkgaW5pdF9wYWlyKE1JTlVTX0NPTE9SLCAoc2hvcnQpIENPTE9SX0dSRUVOLCAoc2hvcnQpIGJnKTsKKworCXRyYWlsIHw9IChjaHR5cGUpIENPTE9SX1BBSVIoVFJBSUxfQ09MT1IpOworCXBsdXMgfD0gKGNodHlwZSkgQ09MT1JfUEFJUihQTFVTX0NPTE9SKTsKKwltaW51cyB8PSAoY2h0eXBlKSBDT0xPUl9QQUlSKE1JTlVTX0NPTE9SKTsKKyAgICB9CisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgKHZvaWQpIG1vdXNlbWFzayhCVVRUT04xX0NMSUNLRUQsIChtbWFza190ICopIE5VTEwpOworI2VuZGlmIC8qIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiAqLworI2lmIGRlZmluZWQoUERDVVJTRVMpCisgICAgbW91c2Vfc2V0KEJVVFRPTjFfUkVMRUFTRUQpOworI2VuZGlmCisKKyAgICBvbGRjaCA9IG1pbnVzOworfQorCitzdGF0aWMgdm9pZAoraGVscDEodm9pZCkKKy8qIGdhbWUgZXhwbGFuYXRpb24gLS0gaW5pdGlhbCBoZWxwIHNjcmVlbiAqLworeworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJLbmlnaHQncyBtb3ZlIGlzIGEgc29saXRhaXJlIHB1enpsZS4gIFlvdXJcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJvYmplY3RpdmUgaXMgdG8gdmlzaXQgZWFjaCBzcXVhcmUgb2YgdGhlICBcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJjaGVzc2JvYXJkIGV4YWN0bHkgb25jZSBieSBtYWtpbmcga25pZ2h0J3NcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJtb3ZlcyAob25lIHNxdWFyZSByaWdodCBvciBsZWZ0IGZvbGxvd2VkICBcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJieSB0d28gc3F1YXJlcyB1cCBvciBkb3duLCBvciB0d28gc3F1YXJlcyBcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJyaWdodCBvciBsZWZ0IGZvbGxvd2VkIGJ5IG9uZSBzcXVhcmUgdXAgb3JcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJkb3duKS4gIFlvdSBtYXkgc3RhcnQgYW55d2hlcmUuXG5cbiIpOworCisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgIlVzZSBhcnJvdyBrZXlzIHRvIG1vdmUgdGhlIGN1cnNvciBhcm91bmQuXG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiV2hlbiB5b3Ugd2FudCB0byBtb3ZlIHlvdXIga25pZ2h0IHRvIHRoZSBcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJjdXJzb3IgbG9jYXRpb24sIHByZXNzIDxzcGFjZT4gb3IgRW50ZXIuXG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiSWxsZWdhbCBtb3ZlcyB3aWxsIGJlIHJlamVjdGVkIHdpdGggYW4gIFxuIik7CisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgImF1ZGlibGUgYmVlcC5cblxuIik7CisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgIlRoZSBwcm9ncmFtIHdpbGwgZGV0ZWN0IGlmIHlvdSBzb2x2ZSB0aGVcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJwdXp6bGU7IGFsc28gaW5mb3JtIHlvdSB3aGVuIHlvdSBydW4gb3V0XG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAib2YgbGVnYWwgbW92ZXMuXG5cbiIpOworCisgICAgTXZXQWRkU3RyKGhlbHB3aW4sIE5PVElGWVkgLSBJTlNUUlksIDAsCisJICAgICAgIlByZXNzIGA/JyB0byBnbyB0byBrZXlzdHJva2UgaGVscC4iKTsKK30KKworc3RhdGljIHZvaWQKK2hlbHAyKHZvaWQpCisvKiBrZXlzdHJva2UgaGVscCBzY3JlZW4gKi8KK3sKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiUG9zc2libGUgbW92ZXMgYXJlIHNob3duIHdpdGggYC0nLlxuXG4iKTsKKworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJZb3UgY2FuIG1vdmUgYXJvdW5kIHdpdGggdGhlIGFycm93IGtleXMgb3JcbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJ3aXRoIHRoZSByb2d1ZS9oYWNrIG1vdmVtZW50IGtleXMuICBPdGhlclxuIik7CisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgImNvbW1hbmRzIGFsbG93IHlvdSB0byB1bmRvIG1vdmVzIG9yIHJlZHJhdy5cbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJZb3VyIG1vdXNlIG1heSB3b3JrOyB0cnkgbGVmdC1idXR0b24gdG9cbiIpOworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJtb3ZlIHRvIHRoZSBzcXVhcmUgdW5kZXIgdGhlIHBvaW50ZXIuXG5cbiIpOworCisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgIngscSAtLSBleGl0ICAgICAgICAgICAgIHkgayB1ICAgIDcgOCA5XG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiciAtLSByZWRyYXcgc2NyZWVuICAgICAgIFxcfC8gICAgICBcXHwvIFxuIik7CisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgImJrc3AgLS0gdW5kbyBtb3ZlICAgICAgIGgtKy1sICAgIDQtKy02XG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiYSAtLSBhdXRvanVtcCAgICAgICAgICAgIC98XFwgICAgICAvfFxcIFxuIik7CisgICAgKHZvaWQpIHdhZGRzdHIoaGVscHdpbiwgIiAgICAgICAgICAgICAgICAgICAgICAgIGIgaiBuICAgIDEgMiAzXG4iKTsKKworICAgICh2b2lkKSB3YWRkc3RyKGhlbHB3aW4sICJcbllvdSBjYW4gcGxhY2UgeW91ciBrbmlnaHQgb24gdGhlIHNlbGVjdGVkXG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAic3F1YXJlIHdpdGggc3BhY2ViYXIsIEVudGVyLCBvciB0aGUga2V5cGFkXG4iKTsKKyAgICAodm9pZCkgd2FkZHN0cihoZWxwd2luLCAiY2VudGVyIGtleS4gIFVzZSBGL0IgdG8gcmV2aWV3IHRoZSBwYXRoLlxuIik7CisKKyAgICBNdldBZGRTdHIoaGVscHdpbiwgTk9USUZZWSAtIElOU1RSWSwgMCwKKwkgICAgICAiUHJlc3MgYD8nIHRvIGdvIHRvIGdhbWUgZXhwbGFuYXRpb24iKTsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfaGVscChib29sICoga2V5aGVscCkKK3sKKyAgICB3ZXJhc2UoaGVscHdpbik7CisgICAgaWYgKCprZXloZWxwKSB7CisJaGVscDEoKTsKKwkqa2V5aGVscCA9IEZBTFNFOworICAgIH0gZWxzZSB7CisJaGVscDIoKTsKKwkqa2V5aGVscCA9IFRSVUU7CisgICAgfQorICAgIHdyZWZyZXNoKGhlbHB3aW4pOworfQorCitzdGF0aWMgYm9vbAorY2hrc3FyKGludCByMSwgaW50IGMxKQoreworICAgIGlmICgocjEgPCAwKSB8fCAocjEgPiBCREVQVEggLSAxKSkKKwlyZXR1cm4gKEZBTFNFKTsKKyAgICBpZiAoKGMxIDwgMCkgfHwgKGMxID4gQldJRFRIIC0gMSkpCisJcmV0dXJuIChGQUxTRSk7CisgICAgcmV0dXJuICgoIWJvYXJkW3IxXVtjMV0pID8gVFJVRSA6IEZBTFNFKTsKK30KKworc3RhdGljIGJvb2wKK2Noa21vdmVzKGludCBydywgaW50IGNvbCkKKy8qIGNoZWNrIHRvIHNlZSBpZiB2YWxpZCBtb3ZlcyBhcmUgYXZhaWxhYmxlICovCit7CisgICAgdW5zaWduZWQgbjsKKworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0Yob2Zmc2V0cyk7IG4rKykKKwlpZiAoY2hrc3FyKHJ3ICsgb2Zmc2V0c1tuXS55LCBjb2wgKyBvZmZzZXRzW25dLngpKQorCSAgICByZXR1cm4gKFRSVUUpOworICAgIHJldHVybiAoRkFMU0UpOworfQorCitzdGF0aWMgdm9pZAorZG9zcXVhcmVzKHZvaWQpCit7CisgICAgaW50IGksIGo7CisKKyAgICBNdkFkZFN0cigwLCAyMCwgIktOSUdIVCdTIE1PVkUgLS0gYSBsb2dpY2FsIHNvbGl0YWlyZSIpOworCisgICAgbW92ZShCT0FSRFksIEJPQVJEWCk7CisgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfVUxDT1JORVIpOworICAgIGZvciAoaiA9IDA7IGogPCA3OyBqKyspIHsKKwl3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworCXdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKwl3YWRkY2goYm9hcmR3aW4sIEFDU19UVEVFKTsKKyAgICB9CisgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworICAgIHdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKyAgICB3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfVVJDT1JORVIpOworCisgICAgZm9yIChpID0gMTsgaSA8IEJERVBUSDsgaSsrKSB7CisJbW92ZShCT0FSRFkgKyBpICogMiAtIDEsIEJPQVJEWCk7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfVkxJTkUpOworCWZvciAoaiA9IDA7IGogPCBCV0lEVEg7IGorKykgeworCSAgICB3YWRkY2goYm9hcmR3aW4sICcgJyk7CisJICAgIHdhZGRjaChib2FyZHdpbiwgJyAnKTsKKwkgICAgd2FkZGNoKGJvYXJkd2luLCAnICcpOworCSAgICB3YWRkY2goYm9hcmR3aW4sIEFDU19WTElORSk7CisJfQorCW1vdmUoQk9BUkRZICsgaSAqIDIsIEJPQVJEWCk7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfTFRFRSk7CisJZm9yIChqID0gMDsgaiA8IEJXSURUSCAtIDE7IGorKykgeworCSAgICB3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisJICAgIHdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKwkgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworCSAgICB3YWRkY2goYm9hcmR3aW4sIEFDU19QTFVTKTsKKwl9CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworCXdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKwl3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfUlRFRSk7CisgICAgfQorCisgICAgbW92ZShCT0FSRFkgKyBpICogMiAtIDEsIEJPQVJEWCk7CisgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfVkxJTkUpOworICAgIGZvciAoaiA9IDA7IGogPCBCV0lEVEg7IGorKykgeworCXdhZGRjaChib2FyZHdpbiwgJyAnKTsKKwl3YWRkY2goYm9hcmR3aW4sICcgJyk7CisJd2FkZGNoKGJvYXJkd2luLCAnICcpOworCXdhZGRjaChib2FyZHdpbiwgQUNTX1ZMSU5FKTsKKyAgICB9CisKKyAgICBtb3ZlKEJPQVJEWSArIGkgKiAyLCBCT0FSRFgpOworICAgIHdhZGRjaChib2FyZHdpbiwgQUNTX0xMQ09STkVSKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgQldJRFRIIC0gMTsgaisrKSB7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworCXdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKwl3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisJd2FkZGNoKGJvYXJkd2luLCBBQ1NfQlRFRSk7CisgICAgfQorICAgIHdhZGRjaChib2FyZHdpbiwgQUNTX0hMSU5FKTsKKyAgICB3YWRkY2goYm9hcmR3aW4sIEFDU19ITElORSk7CisgICAgd2FkZGNoKGJvYXJkd2luLCBBQ1NfSExJTkUpOworICAgIHdhZGRjaChib2FyZHdpbiwgQUNTX0xSQ09STkVSKTsKK30KKworc3RhdGljIHZvaWQKK21hcmtfcG9zc2libGVzKGludCBwcm93LCBpbnQgcGNvbCwgY2h0eXBlIG1hcmspCit7CisgICAgdW5zaWduZWQgbjsKKworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0Yob2Zmc2V0cyk7IG4rKykgeworCWlmIChjaGtzcXIocHJvdyArIG9mZnNldHNbbl0ueSwgcGNvbCArIG9mZnNldHNbbl0ueCkpIHsKKwkgICAgY2VsbG1vdmUocHJvdyArIG9mZnNldHNbbl0ueSwgcGNvbCArIG9mZnNldHNbbl0ueCk7CisJICAgIHdhZGRjaChib2FyZHdpbiwgbWFyayk7CisJfQorICAgIH0KK30KKworc3RhdGljIGJvb2wKK2ZpbmRfbmV4dF9tb3ZlKGludCAqeSwgaW50ICp4KQoreworICAgIHVuc2lnbmVkIGosIGs7CisgICAgaW50IGZvdW5kID0gLTE7CisgICAgaW50IGZpcnN0ID0gLTE7CisgICAgaW50IG5leHQgPSAtMTsKKyAgICBpbnQgb2xkeSwgb2xkeDsKKyAgICBpbnQgbmV3eSwgbmV3eDsKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaWYgKG1vdmVjb3VudCA+IDEpIHsKKwlvbGR5ID0gaGlzdG9yeVttb3ZlY291bnQgLSAxXS55OworCW9sZHggPSBoaXN0b3J5W21vdmVjb3VudCAtIDFdLng7CisJZm9yIChqID0gMDsgaiA8IFNJWkVPRihvZmZzZXRzKSAqIDI7IGorKykgeworCSAgICBrID0gaiAlIFNJWkVPRihvZmZzZXRzKTsKKwkgICAgbmV3eSA9IG9sZHkgKyBvZmZzZXRzW2tdLnk7CisJICAgIG5ld3ggPSBvbGR4ICsgb2Zmc2V0c1trXS54OworCSAgICBpZiAoY2hrc3FyKG5ld3ksIG5ld3gpKSB7CisJCWlmIChmaXJzdCA8IDApCisJCSAgICBmaXJzdCA9IChpbnQpIGs7CisJCWlmIChuZXd5ID09ICp5CisJCSAgICAmJiBuZXd4ID09ICp4KSB7CisJCSAgICBmb3VuZCA9IChpbnQpIGs7CisJCX0gZWxzZSBpZiAoZm91bmQgPj0gMCkgeworCQkgICAgbmV4dCA9IChpbnQpIGs7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJfQorCWlmIChmb3VuZCA8IDApCisJICAgIG5leHQgPSBmaXJzdDsKKwlpZiAobmV4dCA+PSAwKSB7CisJICAgICp5ID0gb2xkeSArIG9mZnNldHNbbmV4dF0ueTsKKwkgICAgKnggPSBvbGR4ICsgb2Zmc2V0c1tuZXh0XS54OworCX0KKwlyZXN1bHQgPSBUUlVFOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorY291bnRfbmV4dF9tb3ZlcyhpbnQgeSwgaW50IHgpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBqOworCisgICAgd3ByaW50dyhtc2d3aW4sICJcbk1vdmUgJWQiLCBtb3ZlY291bnQpOworICAgIGZvciAoaiA9IDA7IGogPCBTSVpFT0Yob2Zmc2V0cyk7IGorKykgeworCWludCBuZXd5ID0geSArIG9mZnNldHNbal0ueTsKKwlpbnQgbmV3eCA9IHggKyBvZmZzZXRzW2pdLng7CisJaWYgKGNoa3NxcihuZXd5LCBuZXd4KSkgeworCSAgICArK2NvdW50OworCX0KKyAgICB9CisgICAgd3ByaW50dyhtc2d3aW4sICIsIGdpdmVzICVkIGNob2ljZXMiLCBjb3VudCk7CisgICAgd2NscnRvZW9sKG1zZ3dpbik7Cit9CisKK3N0YXRpYyB2b2lkCit1bm1hcmtjZWxsKGludCByb3csIGludCBjb2x1bW4pCit7CisgICAgY2VsbG1vdmUocm93LCBjb2x1bW4pOworICAgIHdhZGRjaChib2FyZHdpbiwgJ1xiJyk7CisgICAgd2FkZGNoKGJvYXJkd2luLCAnICcpOworICAgIHdhZGRjaChib2FyZHdpbiwgbWludXMpOworICAgIHdhZGRjaChib2FyZHdpbiwgJyAnKTsKK30KKworc3RhdGljIHZvaWQKK21hcmtjZWxsKGNodHlwZSB0Y2hhciwgaW50IHJvdywgaW50IGNvbHVtbikKK3sKKyAgICBjZWxsbW92ZShyb3csIGNvbHVtbik7CisgICAgd2FkZGNoKGJvYXJkd2luLCAnXGInKTsKKyAgICB3YWRkY2goYm9hcmR3aW4sIHRjaGFyKTsKKyAgICB3YWRkY2goYm9hcmR3aW4sIHRjaGFyKTsKKyAgICB3YWRkY2goYm9hcmR3aW4sIHRjaGFyKTsKK30KKworc3RhdGljIHZvaWQKK2RyYXdtb3ZlKGNodHlwZSB0Y2hhciwgaW50IG9sZHksIGludCBvbGR4LCBpbnQgcm93LCBpbnQgY29sdW1uKQorLyogcGxhY2UgdGhlIHN0YXJzLCB1cGRhdGUgYm9hcmQgJiBjdXJyZW50cyAqLworeworICAgIGlmIChtb3ZlY291bnQgPD0gMSkgeworCWludCBpLCBqOworCisJZm9yIChpID0gMDsgaSA8IEJERVBUSDsgaSsrKSB7CisJICAgIGZvciAoaiA9IDA7IGogPCBCV0lEVEg7IGorKykgeworCQlpZiAobW92ZWNvdW50ID09IDApIHsKKwkJICAgIHVubWFya2NlbGwoaSwgaik7CisJCX0gZWxzZSB7CisJCSAgICBjZWxsbW92ZShpLCBqKTsKKwkJICAgIGlmICh3aW5jaChib2FyZHdpbikgPT0gbWludXMpCisJCQl3YWRkY2goYm9hcmR3aW4sIG1vdmVjb3VudCA/ICcgJyA6IG1pbnVzKTsKKwkJfQorCSAgICB9CisJfQorICAgIH0gZWxzZSB7CisJbWFya2NlbGwodGNoYXIsIG9sZHksIG9sZHgpOworCW1hcmtfcG9zc2libGVzKG9sZHksIG9sZHgsICcgJyk7CisgICAgfQorCisgICAgaWYgKHJvdyA+PSAwICYmIGNvbHVtbiA+PSAwKSB7CisJbWFya2NlbGwodHJhaWwsIHJvdywgY29sdW1uKTsKKwltYXJrX3Bvc3NpYmxlcyhyb3csIGNvbHVtbiwgbWludXMpOworCWJvYXJkW3Jvd11bY29sdW1uXSA9IFRSVUU7CisgICAgfQorCisgICAgd3ByaW50dyhtc2d3aW4sICJcbk1vdmUgJWQiLCBtb3ZlY291bnQpOworICAgIGlmICh0cmlhbGNvdW50ICE9IG1vdmVjb3VudCkKKwl3cHJpbnR3KG1zZ3dpbiwgIiAoJWQgdHJpZXMpIiwgdHJpYWxjb3VudCk7CisgICAgd2NscnRvZW9sKG1zZ3dpbik7Cit9CisKK3N0YXRpYyBpbnQKK2lhYnMoaW50IG51bSkKK3sKKyAgICBpZiAobnVtIDwgMCkKKwlyZXR1cm4gKC1udW0pOworICAgIGVsc2UKKwlyZXR1cm4gKG51bSk7Cit9CisKK3N0YXRpYyBib29sCitldmFsbW92ZShpbnQgcm93LCBpbnQgY29sdW1uKQorLyogZXZhbHVhdGUgbW92ZSAqLworeworICAgIGlmIChtb3ZlY291bnQgPT0gMSkKKwlyZXR1cm4gKFRSVUUpOworICAgIGVsc2UgaWYgKGJvYXJkW3Jvd11bY29sdW1uXSA9PSBUUlVFKSB7CisJd2FkZHN0cihtc2d3aW4sICJcbllvdSd2ZSBhbHJlYWR5IGJlZW4gdGhlcmUuIik7CisJcmV0dXJuIChGQUxTRSk7CisgICAgfSBlbHNlIHsKKwlpbnQgcmRpZiA9IGlhYnMocm93IC0gaGlzdG9yeVttb3ZlY291bnQgLSAxXS55KTsKKwlpbnQgY2RpZiA9IGlhYnMoY29sdW1uIC0gaGlzdG9yeVttb3ZlY291bnQgLSAxXS54KTsKKworCWlmICghKChyZGlmID09IDEpICYmIChjZGlmID09IDIpKSAmJiAhKChyZGlmID09IDIpICYmIChjZGlmID09IDEpKSkgeworCSAgICB3YWRkc3RyKG1zZ3dpbiwgIlxuVGhhdCdzIG5vdCBhIGxlZ2FsIGtuaWdodCdzIG1vdmUuIik7CisJICAgIHJldHVybiAoRkFMU0UpOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gKFRSVUUpOworfQorCitzdGF0aWMgaW50Citjb21wbGV0ZWQodm9pZCkKK3sKKyAgICBpbnQgaSwgaiwgY291bnQgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IEJERVBUSDsgaSsrKQorCWZvciAoaiA9IDA7IGogPCBCV0lEVEg7IGorKykKKwkgICAgaWYgKGJvYXJkW2ldW2pdICE9IDApCisJCWNvdW50ICs9IDE7CisgICAgcmV0dXJuIChjb3VudCA9PSAoQldJRFRIICogQkRFUFRIKSA/IC0xIDogY291bnQpOworfQorCitzdGF0aWMgdm9pZAorbm9fcHJldmlvdXNfbW92ZSh2b2lkKQoreworICAgIHdhZGRzdHIobXNnd2luLCAiXG5ObyBwcmV2aW91cyBtb3ZlLiIpOworICAgIGJlZXAoKTsKK30KKworc3RhdGljIHZvaWQKK3BsYXkodm9pZCkKKy8qIHBsYXkgdGhlIGdhbWUgKi8KK3sKKyAgICBib29sIGtleWhlbHA7CQkvKiBUUlVFIGlmIGtleXN0cm9rZSBoZWxwIGlzIHVwICovCisgICAgaW50IGksIGosIGNvdW50OworICAgIGludCBsYXN0Y29sID0gMDsJCS8qIGxhc3QgbG9jYXRpb24gdmlzaXRlZCAqLworICAgIGludCBsYXN0cm93ID0gMDsKKyAgICBpbnQgbnkgPSAwLCBueCA9IDA7CisgICAgaW50IHJldmlldyA9IDA7CQkvKiByZXZpZXcgaGlzdG9yeSAqLworICAgIGludCBydyA9IDAsIGNvbCA9IDA7CS8qIGN1cnJlbnQgcm93IGFuZCBjb2x1bW4gKi8KKworICAgIGRvIHsKKwkvKiBjbGVhciBzY3JlZW4gYW5kIGRyYXcgYm9hcmQgKi8KKwl3ZXJhc2UoYm9hcmR3aW4pOworCXdlcmFzZShoZWxwd2luKTsKKwl3ZXJhc2UobXNnd2luKTsKKwlkb3NxdWFyZXMoKTsKKwloZWxwMSgpOworCXdub3V0cmVmcmVzaChzdGRzY3IpOworCXdub3V0cmVmcmVzaChoZWxwd2luKTsKKwl3bm91dHJlZnJlc2gobXNnd2luKTsKKwl3bm91dHJlZnJlc2goYm9hcmR3aW4pOworCWRvdXBkYXRlKCk7CisKKwltb3ZlY291bnQgPSAwOworCWZvciAoaSA9IDA7IGkgPCBCREVQVEg7IGkrKykgeworCSAgICBmb3IgKGogPSAwOyBqIDwgQldJRFRIOyBqKyspIHsKKwkJYm9hcmRbaV1bal0gPSBGQUxTRTsKKwkJdW5tYXJrY2VsbChpLCBqKTsKKwkgICAgfQorCX0KKwltZW1zZXQoaGlzdG9yeSwgMCwgc2l6ZW9mKGhpc3RvcnkpKTsKKwloaXN0b3J5WzBdLnkgPSBoaXN0b3J5WzBdLnggPSAtMTsKKwloaXN0b3J5WzFdLnkgPSBoaXN0b3J5WzFdLnggPSAtMTsKKwlsYXN0cm93ID0gbGFzdGNvbCA9IC0yOworCW1vdmVjb3VudCA9IDE7CisJdHJpYWxjb3VudCA9IDE7CisJa2V5aGVscCA9IEZBTFNFOworCXNob3dfaGVscCgma2V5aGVscCk7CisKKwlmb3IgKDs7KSB7CisJICAgIGlmIChydyAhPSBsYXN0cm93IHx8IGNvbCAhPSBsYXN0Y29sKSB7CisJCWlmIChsYXN0cm93ID49IDAgJiYgbGFzdGNvbCA+PSAwKSB7CisJCSAgICBjZWxsbW92ZShsYXN0cm93LCBsYXN0Y29sKTsKKwkJICAgIGlmIChib2FyZFtsYXN0cm93XVtsYXN0Y29sXSkKKwkJCXdhZGRjaChib2FyZHdpbiwgdHJhaWwpOworCQkgICAgZWxzZQorCQkJd2FkZGNoKGJvYXJkd2luLCBvbGRjaCk7CisJCX0KKworCQljZWxsbW92ZShydywgY29sKTsKKwkJb2xkY2ggPSB3aW5jaChib2FyZHdpbik7CisKKwkJbGFzdHJvdyA9IHJ3OworCQlsYXN0Y29sID0gY29sOworCSAgICB9CisJICAgIGNlbGxtb3ZlKHJ3LCBjb2wpOworCSAgICB3YWRkY2goYm9hcmR3aW4sIHBsdXMpOworCSAgICBjZWxsbW92ZShydywgY29sKTsKKworCSAgICB3cmVmcmVzaChtc2d3aW4pOworCisJICAgIHN3aXRjaCAod2dldGNoKGJvYXJkd2luKSkgeworCSAgICBjYXNlICdrJzoKKwkgICAgY2FzZSAnOCc6CisJICAgIGNhc2UgS0VZX1VQOgorCQlueSA9IHJ3ICsgQkRFUFRIIC0gMTsKKwkJbnggPSBjb2w7CisJCWJyZWFrOworCSAgICBjYXNlICdqJzoKKwkgICAgY2FzZSAnMic6CisJICAgIGNhc2UgS0VZX0RPV046CisJCW55ID0gcncgKyAxOworCQlueCA9IGNvbDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2gnOgorCSAgICBjYXNlICc0JzoKKwkgICAgY2FzZSBLRVlfTEVGVDoKKwkJbnkgPSBydzsKKwkJbnggPSBjb2wgKyBCV0lEVEggLSAxOworCQlicmVhazsKKwkgICAgY2FzZSAnbCc6CisJICAgIGNhc2UgJzYnOgorCSAgICBjYXNlIEtFWV9SSUdIVDoKKwkJbnkgPSBydzsKKwkJbnggPSBjb2wgKyAxOworCQlicmVhazsKKwkgICAgY2FzZSAneSc6CisJICAgIGNhc2UgJzcnOgorCSAgICBjYXNlIEtFWV9BMToKKwkJbnkgPSBydyArIEJERVBUSCAtIDE7CisJCW54ID0gY29sICsgQldJRFRIIC0gMTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2InOgorCSAgICBjYXNlICcxJzoKKwkgICAgY2FzZSBLRVlfQzE6CisJCW55ID0gcncgKyAxOworCQlueCA9IGNvbCArIEJXSURUSCAtIDE7CisJCWJyZWFrOworCSAgICBjYXNlICd1JzoKKwkgICAgY2FzZSAnOSc6CisJICAgIGNhc2UgS0VZX0EzOgorCQlueSA9IHJ3ICsgQkRFUFRIIC0gMTsKKwkJbnggPSBjb2wgKyAxOworCQlicmVhazsKKwkgICAgY2FzZSAnbic6CisJICAgIGNhc2UgJzMnOgorCSAgICBjYXNlIEtFWV9DMzoKKwkJbnkgPSBydyArIDE7CisJCW54ID0gY29sICsgMTsKKwkJYnJlYWs7CisKKyNpZmRlZiBLRVlfTU9VU0UKKwkgICAgY2FzZSBLRVlfTU9VU0U6CisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisJCXsKKwkJICAgIE1FVkVOVCBteWV2ZW50OworCisJCSAgICBnZXRtb3VzZSgmbXlldmVudCk7CisJCSAgICBpZiAobXlldmVudC55ID49IENZKDApICYmIG15ZXZlbnQueSA8PSBDWShCREVQVEgpCisJCQkmJiBteWV2ZW50LnggPj0gQ1goMCkgJiYgbXlldmVudC54IDw9IENYKEJXSURUSCkpIHsKKwkJCW54ID0gQ1hJTlYobXlldmVudC54KTsKKwkJCW55ID0gQ1lJTlYobXlldmVudC55KTsKKwkJCXVuZ2V0Y2goJ1xuJyk7CisJCQlicmVhazsKKwkJICAgIH0gZWxzZSB7CisJCQliZWVwKCk7CisJCQljb250aW51ZTsKKwkJICAgIH0KKwkJfQorI2VuZGlmIC8qIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiAqLworI2lmZGVmIFBEQ1VSU0VTCisJCXsKKwkJICAgIGludCB0ZXN0X3ksIHRlc3RfeDsKKwkJICAgIHJlcXVlc3RfbW91c2VfcG9zKCk7CisJCSAgICB0ZXN0X3kgPSBNT1VTRV9ZX1BPUyArIDA7CisJCSAgICB0ZXN0X3ggPSBNT1VTRV9YX1BPUyArIDE7CisJCSAgICBpZiAodGVzdF95ID49IENZKDApICYmIHRlc3RfeSA8PSBDWShCREVQVEgpCisJCQkmJiB0ZXN0X3ggPj0gQ1goMCkgJiYgdGVzdF94IDw9IENYKEJXSURUSCkpIHsKKwkJCW55ID0gQ1lJTlYodGVzdF95KTsKKwkJCW54ID0gQ1hJTlYodGVzdF94KTsKKwkJCXdtb3ZlKGhlbHB3aW4sIDAsIDApOworCQkJd3JlZnJlc2goaGVscHdpbik7CisJCQl1bmdldGNoKCdcbicpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKyNlbmRpZiAvKiBQRENVUlNFUyAqLworI2VuZGlmIC8qIEtFWV9NT1VTRSAqLworCisJICAgIGNhc2UgS0VZX0IyOgorCSAgICBjYXNlICdcbic6CisJICAgIGNhc2UgJyAnOgorCQlyZXZpZXcgPSAwOworCQlpZiAoZXZhbG1vdmUocncsIGNvbCkpIHsKKwkJICAgIGRyYXdtb3ZlKHRyYWlsLAorCQkJICAgICBoaXN0b3J5W21vdmVjb3VudCAtIDFdLnksCisJCQkgICAgIGhpc3RvcnlbbW92ZWNvdW50IC0gMV0ueCwKKwkJCSAgICAgcncsIGNvbCk7CisJCSAgICBoaXN0b3J5W21vdmVjb3VudF0ueSA9IChzaG9ydCkgcnc7CisJCSAgICBoaXN0b3J5W21vdmVjb3VudF0ueCA9IChzaG9ydCkgY29sOworCQkgICAgbW92ZWNvdW50Kys7CisJCSAgICB0cmlhbGNvdW50Kys7CisKKwkJICAgIGlmICghY2hrbW92ZXMocncsIGNvbCkpIHsKKwkJCWlmIChjb21wbGV0ZWQoKSA8IDApIHsKKwkJCSAgICB3YWRkc3RyKG1zZ3dpbiwgIlxuWW91IHdvbi4iKTsKKwkJCX0gZWxzZSB7CisJCQkgICAgd2FkZHN0cihtc2d3aW4sCisJCQkJICAgICJcbk5vIGZ1cnRoZXIgbW92ZXMgYXJlIHBvc3NpYmxlLiIpOworCQkJfQorCQkgICAgfQorCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQl9CisJCWJyZWFrOworCisJICAgIGNhc2UgS0VZX1VORE86CisJICAgIGNhc2UgS0VZX0JBQ0tTUEFDRToKKwkgICAgY2FzZSAnXGInOgorCQlyZXZpZXcgPSAwOworCQlpZiAobW92ZWNvdW50IDw9IDApIHsKKwkJICAgIG5vX3ByZXZpb3VzX21vdmUoKTsKKwkJfSBlbHNlIGlmIChtb3ZlY291bnQgPD0gMSkgeworCQkgICAgbnkgPSBoaXN0b3J5W21vdmVjb3VudF0ueTsKKwkJICAgIG54ID0gaGlzdG9yeVttb3ZlY291bnRdLng7CisJCSAgICBpZiAobnggPCAwIHx8IG55IDwgMCkgeworCQkJbnkgPSAobGFzdHJvdyA+PSAwKSA/IGxhc3Ryb3cgOiAwOworCQkJbnggPSAobGFzdGNvbCA+PSAwKSA/IGxhc3Rjb2wgOiAwOworCQkgICAgfQorCQkgICAgbW92ZWNvdW50ID0gMDsKKwkJICAgIGJvYXJkW255XVtueF0gPSBGQUxTRTsKKwkJICAgIG9sZGNoID0gbWludXM7CisJCSAgICBkcmF3bW92ZSgnICcsIG55LCBueCwgLTEsIC0xKTsKKwkJICAgIG1vdmVjb3VudCA9IDE7CisJCSAgICB0cmlhbGNvdW50ID0gMTsKKwkJICAgIG5vX3ByZXZpb3VzX21vdmUoKTsKKwkJfSBlbHNlIHsKKwkJICAgIGludCBvbGR5ID0gaGlzdG9yeVttb3ZlY291bnQgLSAxXS55OworCQkgICAgaW50IG9sZHggPSBoaXN0b3J5W21vdmVjb3VudCAtIDFdLng7CisKKwkJICAgIGlmICghYm9hcmRbcnddW2NvbF0pIHsKKwkJCWNlbGxtb3ZlKHJ3LCBjb2wpOworCQkJd2FkZGNoKGJvYXJkd2luLCAnICcpOworCQkgICAgfQorCisJCSAgICBib2FyZFtvbGR5XVtvbGR4XSA9IEZBTFNFOworCQkgICAgLS1tb3ZlY291bnQ7CisJCSAgICBueSA9IGhpc3RvcnlbbW92ZWNvdW50IC0gMV0ueTsKKwkJICAgIG54ID0gaGlzdG9yeVttb3ZlY291bnQgLSAxXS54OworCQkgICAgaWYgKG54IDwgMCB8fCBueSA8IDApIHsKKwkJCW55ID0gb2xkeTsKKwkJCW54ID0gb2xkeDsKKwkJICAgIH0KKwkJICAgIGRyYXdtb3ZlKCcgJywgb2xkeSwgb2xkeCwgbnksIG54KTsKKworCQkgICAgLyogYXZvaWQgcHJvYmxlbXMgaWYgd2UganVzdCBjaGFuZ2VkIHRoZSBjdXJyZW50IGNlbGwgKi8KKwkJICAgIGNlbGxtb3ZlKGxhc3Ryb3csIGxhc3Rjb2wpOworCQkgICAgb2xkY2ggPSB3aW5jaChib2FyZHdpbik7CisJCX0KKwkJYnJlYWs7CisKKwkgICAgY2FzZSAnYSc6CisJCW54ID0gY29sOworCQlueSA9IHJ3OworCQlpZiAoZmluZF9uZXh0X21vdmUoJm55LCAmbngpKQorCQkgICAgY291bnRfbmV4dF9tb3ZlcyhueSwgbngpOworCQllbHNlCisJCSAgICBiZWVwKCk7CisJCWJyZWFrOworCisJICAgIGNhc2UgJ0YnOgorCQlpZiAocmV2aWV3ID4gMCkgeworCQkgICAgcmV2aWV3LS07CisJCSAgICBueSA9IGhpc3RvcnlbbW92ZWNvdW50IC0gcmV2aWV3IC0gMV0ueTsKKwkJICAgIG54ID0gaGlzdG9yeVttb3ZlY291bnQgLSByZXZpZXcgLSAxXS54OworCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQl9CisJCWJyZWFrOworCisJICAgIGNhc2UgJ0InOgorCQlpZiAocmV2aWV3IDwgbW92ZWNvdW50IC0gMikgeworCQkgICAgcmV2aWV3Kys7CisJCSAgICBueSA9IGhpc3RvcnlbbW92ZWNvdW50IC0gcmV2aWV3IC0gMV0ueTsKKwkJICAgIG54ID0gaGlzdG9yeVttb3ZlY291bnQgLSByZXZpZXcgLSAxXS54OworCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQl9CisJCWJyZWFrOworCisJICAgIGNhc2UgS0VZX1JFRE86CisJICAgIGNhc2UgJ1xmJzoKKwkgICAgY2FzZSAncic6CisJCWNsZWFyb2soY3Vyc2NyLCBUUlVFKTsKKwkJd25vdXRyZWZyZXNoKHN0ZHNjcik7CisJCXdub3V0cmVmcmVzaChib2FyZHdpbik7CisJCXdub3V0cmVmcmVzaChtc2d3aW4pOworCQl3bm91dHJlZnJlc2goaGVscHdpbik7CisJCWRvdXBkYXRlKCk7CisJCWJyZWFrOworCisJICAgIGNhc2UgJ3EnOgorCSAgICBjYXNlICd4JzoKKwkJZ290byBkcm9wb3V0OworCisJICAgIGNhc2UgJz8nOgorCQlzaG93X2hlbHAoJmtleWhlbHApOworCQlicmVhazsKKworCSAgICBkZWZhdWx0OgorCQliZWVwKCk7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgY29sID0gbnggJSBCV0lEVEg7CisJICAgIHJ3ID0gbnkgJSBCREVQVEg7CisJfQorCisgICAgICBkcm9wb3V0OgorCWlmICgoY291bnQgPSBjb21wbGV0ZWQoKSkgPCAwKQorCSAgICB3cHJpbnR3KG1zZ3dpbiwgIlxuWW91IHdvbi4gIENhcmUgdG8gdHJ5IGFnYWluPyAiKTsKKwllbHNlCisJICAgIHdwcmludHcobXNnd2luLCAiXG4lZCBzcXVhcmVzIGZpbGxlZC4gIFRyeSBhZ2Fpbj8gIiwgY291bnQpOworCXdjbHJ0b2VvbChtc2d3aW4pOworICAgIH0gd2hpbGUKKwkodG9sb3dlcih3Z2V0Y2gobXNnd2luKSkgPT0gJ3knKTsKK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgaW5pdF9wcm9ncmFtKCk7CisKKyAgICBwbGF5KCk7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisvKiBrbmlnaHQuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3Rlc3QvbGluZWRhdGEuaCBiL3Rlc3QvbGluZWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTFiYzZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9saW5lZGF0YS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgaXNRVUlUKGMpICAgICAoKGMpID09IFFVSVQgfHwgKGMpID09IEVTQ0FQRSkKKworI2RlZmluZSBrZXlfUkVDVVIgICAgIENUUkwoJ1cnKQorI2RlZmluZSBrZXlfTkVXTElORSAgIENUUkwoJ04nKQorI2RlZmluZSBrZXlfQkFDS1NQQUNFICdcYicKKworc3RhdGljIEZJTEUgKmxpbmVkYXRhOworCitzdGF0aWMgdm9pZAorZmFpbGVkKGNvbnN0IGNoYXIgKnMpCit7CisgICAgcGVycm9yKHMpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2xpbmVkYXRhKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaWYgKChsaW5lZGF0YSA9IGZvcGVuKG5hbWUsICJyIikpID09IDApIHsKKwlmYWlsZWQobmFtZSk7CisgICAgfQorfQorCitzdGF0aWMgaW50CityZWFkX2xpbmVkYXRhKFdJTkRPVyAqd29yaykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGlmIChsaW5lZGF0YSAhPSAwKSB7CisJcmVzdWx0ID0gZmdldGMobGluZWRhdGEpOworCWlmIChyZXN1bHQgPT0gRU9GKSB7CisJICAgIGZjbG9zZShsaW5lZGF0YSk7CisJICAgIGxpbmVkYXRhID0gMDsKKwkgICAgcmVzdWx0ID0gcmVhZF9saW5lZGF0YSh3b3JrKTsKKwl9IGVsc2UgeworCSAgICB3cmVmcmVzaCh3b3JrKTsKKwkgICAgaWYgKHJlc3VsdCA9PSAnXG4nKSB7CisJCXJlc3VsdCA9IGtleV9ORVdMSU5FOworCSAgICB9CisJfQorICAgIH0gZWxzZSB7CisjaWZkZWYgV0lERV9MSU5FREFUQQorCXdpbnRfdCBjaDsKKwlpbnQgY29kZTsKKworCXJlc3VsdCA9IEVSUjsKKwl3aGlsZSAoKGNvZGUgPSB3Z2V0X3djaCh3b3JrLCAmY2gpKSAhPSBFUlIpIHsKKworCSAgICBpZiAoY29kZSA9PSBLRVlfQ09ERV9ZRVMpIHsKKwkJc3dpdGNoIChjaCkgeworCQljYXNlIEtFWV9ET1dOOgorCQkgICAgcmVzdWx0ID0ga2V5X05FV0xJTkU7CisJCSAgICBicmVhazsKKwkJY2FzZSBLRVlfQkFDS1NQQUNFOgorCQkgICAgcmVzdWx0ID0ga2V5X0JBQ0tTUEFDRTsKKwkJICAgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgICAgYmVlcCgpOworCQkgICAgY29udGludWU7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJcmVzdWx0ID0gKGludCkgY2g7CisJCWJyZWFrOworCSAgICB9CisJfQorI2Vsc2UKKwlyZXN1bHQgPSB3Z2V0Y2god29yayk7CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvbGludXgtY29sb3IuZGF0IGIvdGVzdC9saW51eC1jb2xvci5kYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI4YjNmMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbGludXgtY29sb3IuZGF0CkBAIC0wLDAgKzEsNDggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJElkOiBsaW51eC1jb2xvci5kYXQsdiAxLjIgMjAwNi8wNC8yMiAyMTo0MDowMCB0b20gRXhwICQKKyMgVGhlc2UgdmFsdWVzIGFyZSBkZXJpdmVkIGZyb20gbGludXgvZHJpdmVycy9jaGFyL3Z0LmMgKGRlZmF1bHRfcmVkW10sCisjIGRlZmF1bHRfZ3JuW10gYW5kIGRlZmF1bHRfYmx1W10pLCBjb21tZW50ZWQKKy8qIHRoZSBkZWZhdWx0IGNvbG91ciB0YWJsZSwgZm9yIFZHQSsgY29sb3VyIHN5c3RlbXMgKi8KK3NjYWxlOjI1NQorMDoJICAwCSAgMAkgIDAKKzE6CTE3MAkgIDAJICAwCisyOgkgIDAJMTcwCSAgMAorMzoJMTcwCSA4NQkgIDAKKzQ6CSAgMAkgIDAJMTcwCis1OgkxNzAJICAwCTE3MAorNjoJICAwCTE3MAkxNzAKKzc6CTE3MAkxNzAJMTcwCis4OgkgODUJIDg1CSA4NQorOToJMjU1CSA4NQkgODUKKzEwOgkgODUJMjU1CSA4NQorMTE6CTI1NQkyNTUJIDg1CisxMjoJIDg1CSA4NQkyNTUKKzEzOgkyNTUJIDg1CTI1NQorMTQ6CSA4NQkyNTUJMjU1CisxNToJMjU1CTI1NQkyNTUKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzdHVzZWQuc2ggYi90ZXN0L2xpc3R1c2VkLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFjM2ZlMGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2xpc3R1c2VkLnNoCkBAIC0wLDAgKzEsMTgzIEBACisjIS9iaW4vc2gKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNiwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJElkOiBsaXN0dXNlZC5zaCx2IDEuOCAyMDEwLzA5LzE4IDE1OjE1OjE1IHRvbSBFeHAgJAorIyBBIHZlcnkgc2ltcGxlIHNjcmlwdCB0byBsaXN0IGFsbCBlbnRyeXBvaW50cyB0aGF0IGFyZSB1c2VkIGJ5IGVpdGhlciBhIHRlc3QKKyMgcHJvZ3JhbSwgb3Igd2l0aGluIHRoZSBsaWJyYXJpZXMuICBUaGlzIHJlbGllcyBvbiB0aGUgb3V0cHV0IGZvcm1hdCBvZiAnbm0nLAorIyBhbmQgYXNzdW1lcyB0aGF0IHRoZSBsaWJyYXJpZXMgYXJlIGNvbmZpZ3VyZWQgd2l0aCBUUkFDRSBkZWZpbmVkLCBhbmQgdXNpbmcKKyMgdGhlc2Ugb3B0aW9uczoKKyMJLS1kaXNhYmxlLW1hY3JvcworIwktLWVuYWJsZS1zcC1mdW5jcworIwktLWVuYWJsZS13aWRlYworIyBTdGF0aWMgbGlicmFyaWVzIGFyZSB1c2VkLCB0byBwcm92aWRlIHNvbWUgZmlsdGVyaW5nIGJhc2VkIG9uIGludGVybmFsIHVzYWdlCisjIG9mIHRoZSBkaWZmZXJlbnQgc3ltYm9scy4KKworIyBrZWVwIHRoZSBzb3J0aW5nIGluZGVwZW5kZW50IG9mIGxvY2FsZToKK2lmIHRlc3QgIiR7TEFOR1VBR0Urc2V0fSIgICAgPSBzZXQ7IHRoZW4gTEFOR1VBR0U9QzsgICAgZXhwb3J0IExBTkdVQUdFOyAgICBmaQoraWYgdGVzdCAiJHtMQU5HK3NldH0iICAgICAgICA9IHNldDsgdGhlbiBMQU5HPUM7ICAgICAgICBleHBvcnQgTEFORzsgICAgICAgIGZpCitpZiB0ZXN0ICIke0xDX0FMTCtzZXR9IiAgICAgID0gc2V0OyB0aGVuIExDX0FMTD1DOyAgICAgIGV4cG9ydCBMQ19BTEw7ICAgICAgZmkKK2lmIHRlc3QgIiR7TENfTUVTU0FHRVMrc2V0fSIgPSBzZXQ7IHRoZW4gTENfTUVTU0FHRVM9QzsgZXhwb3J0IExDX01FU1NBR0VTOyBmaQoraWYgdGVzdCAiJHtMQ19DVFlQRStzZXR9IiAgICA9IHNldDsgdGhlbiBMQ19DVFlQRT1DOyAgICBleHBvcnQgTENfQ1RZUEU7ICAgIGZpCitpZiB0ZXN0ICIke0xDX0NPTExBVEUrc2V0fSIgID0gc2V0OyB0aGVuIExDX0NPTExBVEU9QzsgIGV4cG9ydCBMQ19DT0xMQVRFOyAgZmkKKworTk1fT1BUUz0KKworaWYgdGVzdCAhIC1kIC4uL29iamVjdHMgOyB0aGVuCisJZWNobyAiPyBuZWVkIG9iamVjdHMgdG8gcnVuIHRoaXMgc2NyaXB0IgorCWV4aXQgMQorZWxpZiB0ZXN0ICEgLWQgLi4vbGliIDsgdGhlbgorCWVjaG8gIj8gbmVlZCBsaWJyYXJpZXMgdG8gcnVuIHRoaXMgc2NyaXB0IgorCWV4aXQgMQorZmkKKworUFJPR1M9Citmb3IgbmFtZSBpbiBgKGVjaG8gInRlc3Q6Ijtzb3J0IG1vZHVsZXM7IGVjaG8gInByb2dzOiI7c29ydCAuLi9wcm9ncy9tb2R1bGVzKSB8c2VkIC1lICdzL1sgCV0uKi8vJyAtZSAnL15bI0BdL2QnYAorZG8KKwljYXNlICRuYW1lIGluCisJKjopCisJCVBST0dTPSIkUFJPR1MgJG5hbWUiCisJCTs7CisJKikKKwkJTkFNRT0uLi9vYmplY3RzLyR7bmFtZX0ubworCQlpZiB0ZXN0IC1mICROQU1FCisJCXRoZW4KKwkJCVBST0dTPSIkUFJPR1MgJE5BTUUiCisJCWZpCisJCTs7CisJZXNhYworZG9uZQorCisjIEZvciBlYWNoIGxpYnJhcnkgLQorZm9yIGxpYiBpbiAuLi9saWIvKi5hCitkbworCUxJQj1gYmFzZW5hbWUgJGxpYiAuYWAKKwljYXNlICRMSUIgaW4KKwkqXyp8KisqKQorCQljb250aW51ZQorCQk7OworCWVzYWMKKworCXRtcD1gZWNobyAkTElCfHNlZCAtZSAncy93JC8vJ2AKKwllY2hvCisJZWNobyAiJHt0bXB9OiIKKwllY2hvICR0bXAgfHNlZCAtZSAncy8uLy0vZycKKwkjIENvbnN0cnVjdCBhIGxpc3Qgb2YgcHVibGljIGV4dGVybmFscyBwcm92aWRlZCBieSB0aGUgbGlicmFyeS4KKwlXQU5UPWBubSAkTk1fT1BUUyAkbGliIHxcCisJCXNlZAktZSAncy9eW14gXSovLycgXAorCQkJLWUgJ3MvXiAqLy8nIFwKKwkJCS1lICcvXlsgYS16XSAvZCcgXAorCQkJLWUgJy86JC9kJyBcCisJCQktZSAnL14kL2QnIFwKKwkJCS1lICcvXlUgL2QnIFwKKwkJCS1lICdzL15bQS1aXSAvLycgXAorCQkJLWUgJy9eXy9kJyB8XAorCQlzb3J0IC11YAorCSMgTGlzdCBwcm9ncmFtcyB3aGljaCB1c2UgdGhhdCBleHRlcm5hbC4KKwlmb3IgbmFtZSBpbiAkV0FOVAorCWRvCisJCUhBVkU9CisJCXRhZ3M9CisJCWxhc3Q9CisJCWZvciBwcm9nIGluICRQUk9HUworCQlkbworCQkJY2FzZSAkcHJvZyBpbgorCQkJKjopCisJCQkJdGFncz0kcHJvZworCQkJCTs7CisJCQkqKQorCQkJCVRFU1Q9YG5tICROTV9PUFRTICRwcm9nIHxcCisJCQkJCXNlZAktZSAncy9eW14gXSovLycgXAorCQkJCQkJLWUgJ3MvXiAqLy8nIFwKKwkJCQkJCS1lICcvXlsgYS16XSAvZCcgXAorCQkJCQkJLWUgJy86JC9kJyBcCisJCQkJCQktZSAnL14kL2QnIFwKKwkJCQkJCS1lICdzL15bQS1aXSAvLycgXAorCQkJCQkJLWUgJy9eXy9kJyBcCisJCQkJCQktZSAncy9eJyR7bmFtZX0nJC9fLycgXAorCQkJCQkJLWUgJy9eW15fXS9kJ2AKKwkJCQlpZiB0ZXN0IC1uICIkVEVTVCIKKwkJCQl0aGVuCisJCQkJCWhhdmU9YGJhc2VuYW1lICRwcm9nIC5vYAorCQkJCQlpZiB0ZXN0IC1uICIkSEFWRSIKKwkJCQkJdGhlbgorCQkJCQkJaWYgdGVzdCAiJGxhc3QiID0gIiR0YWdzIgorCQkJCQkJdGhlbgorCQkJCQkJCUhBVkU9IiRIQVZFICRoYXZlIgorCQkJCQkJZWxzZQorCQkJCQkJCUhBVkU9IiRIQVZFICR0YWdzICRoYXZlIgorCQkJCQkJZmkKKwkJCQkJZWxzZQorCQkJCQkJSEFWRT0iJHRhZ3MgJGhhdmUiCisJCQkJCWZpCisJCQkJCWxhc3Q9IiR0YWdzIgorCQkJCWZpCisJCQkJOzsKKwkJCWVzYWMKKwkJZG9uZQorCQkjIGlmIHdlIGRpZCBub3QgZmluZCBhIHByb2dyYW0gdXNpbmcgaXQgZGlyZWN0bHksIHNlZSBpZiBpdAorCQkjIGlzIHVzZWQgd2l0aGluIGEgbGlicmFyeS4KKwkJaWYgdGVzdCAteiAiJEhBVkUiCisJCXRoZW4KKwkJCWZvciB0bXAgaW4gLi4vbGliLyouYQorCQkJZG8gCisJCQkJY2FzZSAkdG1wIGluCisJCQkJKl8qfCorKikKKwkJCQkJY29udGludWUKKwkJCQkJOzsKKwkJCQllc2FjCisJCQkJVEVTVD1gbm0gJE5NX09QVFMgJHRtcCB8XAorCQkJCQlzZWQJLWUgJ3MvXlteIF0qLy8nIFwKKwkJCQkJCS1lICdzL14gKi8vJyBcCisJCQkJCQktZSAnL15bIGEtel0gL2QnIFwKKwkJCQkJCS1lICcvOiQvZCcgXAorCQkJCQkJLWUgJy9eJC9kJyBcCisJCQkJCQktZSAnL15bQS1UVi1aXSAvZCcgXAorCQkJCQkJLWUgJ3MvXltBLVpdIC8vJyBcCisJCQkJCQktZSAnL15fL2QnIFwKKwkJCQkJCS1lICdzL14nJHtuYW1lfSckL18vJyBcCisJCQkJCQktZSAnL15bXl9dL2QnYAorCQkJCWlmIHRlc3QgLW4gIiRURVNUIgorCQkJCXRoZW4KKwkJCQkJdG1wPWBiYXNlbmFtZSAkdG1wIC5hIHxzZWQgLWUgJ3MvdyQvLydgCisJCQkJCUhBVkU9YGVjaG8gJHRtcCB8IHNlZCAtZSAncy9saWIvbGliOiAvJ2AKKwkJCQkJYnJlYWsKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCQl0ZXN0IC16ICIkSEFWRSIgJiYgSEFWRT0iLSIKKwkJbGVubj1gZXhwciAzOSAtIGxlbmd0aCAkbmFtZWAKKwkJbGVubj1gZXhwciAkbGVubiAvIDhgCisJCXRhYnM9CisJCXdoaWxlIHRlc3QgJGxlbm4gIT0gMAorCQlkbworCQkJdGFicz0iJHt0YWJzfQkiCisJCQlsZW5uPWBleHByICRsZW5uIC0gMWAKKwkJZG9uZQorCQllY2hvICIke25hbWV9JHt0YWJzfSR7SEFWRX0iCisJZG9uZQorZG9uZQpkaWZmIC0tZ2l0IGEvdGVzdC9scnRlc3QuYyBiL3Rlc3QvbHJ0ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGExMjAzNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbHJ0ZXN0LmMKQEAgLTAsMCArMSwxODIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSwyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogVGVzdCBsb3dlci1yaWdodC1oYW5kIGNvcm5lciBhY2Nlc3MKKyAqCisgKiBvcmlnaW5hbGx5IGJ5IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHRoeXJzdXMuY29tPiwgd3JpdHRlbiBmb3IgYW5pbWF0aW9uCisgKiBhbmQgcmVzaXppbmcgLVQuRGlja2V5CisgKgorICogVGhpcyBjYW4ndCBiZSBwYXJ0IG9mIHRoZSBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSwgYmVjYXVzZSBuY3Vyc2VzIHJpcHMgb2ZmIHRoZQorICogYm90dG9tIGxpbmUgdG8gZG8gbGFiZWxzLgorICoKKyAqICRJZDogbHJ0ZXN0LmMsdiAxLjIyIDIwMTAvMDUvMDEgMTk6MTE6NTUgdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHksIHgsIG1vZGUsIGRpciwgaW5jOworICAgIGNodHlwZSB2YWx1ZTsKK30gTUFSSzsKKworLyoKKyAqIE1ha2UgYSBjb3VwbGUgb2YgbWFya2VycyBnbyAncm91bmQgdGhlIGJvcmRlciB0byBkZW1vbnN0cmF0ZSB0aGF0IHdlIGNhbgorICogcmVhbGx5IHdyaXRlIHRvIGFsbCBwb3NpdGlvbnMgcHJvcGVybHkuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93KE1BUksgKm0pCit7CisgICAgTXZBZGRDaChtLT55LCBtLT54LCBtLT52YWx1ZSk7CisgICAgaWYgKG0tPm1vZGUgPT0gMCkgewkJLyogYWxvbmcgdGhlIHgtZGlyZWN0aW9uICovCisJbS0+eCArPSBtLT5pbmM7CisJaWYgKG0tPnggPj0gQ09MUykgeworCSAgICBtLT54ID0gQ09MUyAtIDE7CisJICAgIG0tPmluYyA9IC1tLT5kaXIgKiBtLT5pbmM7CisJICAgIG0tPnkgKz0gbS0+aW5jOworCSAgICBtLT5tb2RlID0gMTsKKwl9IGVsc2UgaWYgKG0tPnggPCAwKSB7CisJICAgIG0tPnggPSAwOworCSAgICBtLT5pbmMgPSAtbS0+ZGlyICogbS0+aW5jOworCSAgICBtLT55ICs9IG0tPmluYzsKKwkgICAgbS0+bW9kZSA9IDE7CisJfQorICAgIH0gZWxzZSB7CQkJLyogYWxvbmcgdGhlIHktZGlyZWN0aW9uICovCisJbS0+eSArPSBtLT5pbmM7CisJaWYgKG0tPnkgPj0gTElORVMpIHsKKwkgICAgbS0+eSA9IExJTkVTIC0gMTsKKwkgICAgbS0+aW5jID0gbS0+ZGlyICogbS0+aW5jOworCSAgICBtLT54ICs9IG0tPmluYzsKKwkgICAgbS0+bW9kZSA9IDA7CisJfSBlbHNlIGlmIChtLT55IDwgMCkgeworCSAgICBtLT55ID0gMDsKKwkgICAgbS0+aW5jID0gbS0+ZGlyICogbS0+aW5jOworCSAgICBtLT54ICs9IG0tPmluYzsKKwkgICAgbS0+bW9kZSA9IDA7CisJfQorICAgIH0KK30KKworaW50CittYWluKAorCWludCBhcmdjIEdDQ19VTlVTRUQsCisJY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBzdGF0aWMgTUFSSyBtYXJrc1tdID0KKyAgICB7CisJezAsIDAsIDAsIC0xLCAxLCAnKycgfCBBX0JPTER9LAorCXswLCAwLCAxLCAxLCAyLCAnWCd9LAorCXswLCAwLCAxLCAtMSwgMywgJ1knfSwKKwl7MCwgOCwgMCwgLTEsIDEsICcrJyB8IEFfQk9MRH0sCisJezAsIDksIDAsIC0xLCAxLCAnKycgfCBBX0JPTER9LAorCXsxLCAwLCAxLCAxLCAxLCAnKicgfCBBX1JFVkVSU0V9LAorCXsyLCAwLCAxLCAxLCAxLCAnKicgfCBBX1JFVkVSU0V9CisgICAgfTsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIGluaXRzY3IoKTsKKyAgICBub2VjaG8oKTsKKyAgICBjYnJlYWsoKTsKKyAgICBub2RlbGF5KHN0ZHNjciwgVFJVRSk7CisgICAgY3Vyc19zZXQoMCk7CisKKyNpZmRlZiBLRVlfUkVTSVpFCisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisgIHJlc3RhcnQ6CisjZW5kaWYKKyAgICBtb3ZlKExJTkVTIC8gMiAtIDEsIDQpOworICAgIGlmICghKGhhc19pYygpCisjaWYgSEFWRV9TRVRVUFRFUk0KKyAgICAvKiBzZWUgUHV0Q2hhckxSKCkgKi8KKwkgIHx8IGF1dG9fcmlnaHRfbWFyZ2luCisJICB8fCAoZW50ZXJfYW1fbW9kZSAmJiBleGl0X2FtX21vZGUpCisjZW5kaWYKKwkpKSB7CisJYWRkc3RyKCJZb3VyIHRlcm1pbmFsIGxhY2tzIHRoZSBjYXBhYmlsaXRpZXMgbmVlZGVkIHRvIGFkZHJlc3MgdGhlXG4iKTsKKwltb3ZlKExJTkVTIC8gMiwgNCk7CisJYWRkc3RyKCJsb3dlci1yaWdodC1oYW5kIGNvcm5lciBvZiB0aGUgc2NyZWVuLlxuIik7CisgICAgfSBlbHNlIHsKKwlhZGRzdHIoIlRoaXMgaXMgYSB0ZXN0IG9mIGFjY2VzcyB0byB0aGUgbG93ZXIgcmlnaHQgY29ybmVyLlxuIik7CisJbW92ZShMSU5FUyAvIDIsIDQpOworCWFkZHN0cigiSWYgdGhlIHRvcCBvZiB0aGUgYm94IGlzIG1pc3NpbmcsIHRoZSB0ZXN0IGZhaWxlZC5cbiIpOworCW1vdmUoTElORVMgLyAyICsgMSwgNCk7CisJYWRkc3RyKCJQbGVhc2UgcmVwb3J0IHRoaXMgKHdpdGggYSBjb3B5IG9mIHlvdXIgdGVybWluZm8gZW50cnkpLlxuIik7CisJbW92ZShMSU5FUyAvIDIgKyAyLCA0KTsKKwlhZGRzdHIoInRvIHRoZSBuY3Vyc2VzIG1haW50YWluZXJzLCBhdCBidWctbmN1cnNlc0BnbnUub3JnLlxuIik7CisgICAgfQorCisgICAgZm9yICg7OykgeworCWludCBjaDsKKwl1bnNpZ25lZCBuOworCisJYm94KHN0ZHNjciwgMCwgMCk7CisJZm9yIChuID0gMDsgbiA8IFNJWkVPRihtYXJrcyk7IG4rKykgeworCSAgICBzaG93KCZtYXJrc1tuXSk7CisJfQorCisJaWYgKChjaCA9IGdldGNoKCkpID4gMCkgeworCSAgICBpZiAoY2ggPT0gJ3EnKQorCQlicmVhazsKKwkgICAgZWxzZSBpZiAoY2ggPT0gJ3MnKQorCQlub2RlbGF5KHN0ZHNjciwgRkFMU0UpOworCSAgICBlbHNlIGlmIChjaCA9PSAnICcpCisJCW5vZGVsYXkoc3Rkc2NyLCBUUlVFKTsKKyNpZmRlZiBUUkFDRQorCSAgICBlbHNlIGlmIChjaCA9PSAnVCcpCisJCXRyYWNlKDApOworCSAgICBlbHNlIGlmIChjaCA9PSAndCcpCisJCXRyYWNlKFRSQUNFX0NBTExTIHwgVFJBQ0VfSUNBTExTIHwgVFJBQ0VfVVBEQVRFKTsKKyNlbmRpZgorI2lmZGVmIEtFWV9SRVNJWkUKKwkgICAgZWxzZSBpZiAoY2ggPT0gS0VZX1JFU0laRSkgeworCQlmb3IgKG4gPSAwOyBuIDwgU0laRU9GKG1hcmtzKTsgbisrKSB7CisJCSAgICBpZiAobWFya3Nbbl0ubW9kZSA9PSAwKSB7CS8qIG1vdmluZyBhbG9uZyB4LWRpcmVjdGlvbiAqLworCQkJaWYgKG1hcmtzW25dLnkpCisJCQkgICAgbWFya3Nbbl0ueSA9IExJTkVTIC0gMTsKKwkJICAgIH0gZWxzZSB7CisJCQlpZiAobWFya3Nbbl0ueCkKKwkJCSAgICBtYXJrc1tuXS54ID0gQ09MUyAtIDE7CisJCSAgICB9CisJCX0KKwkJZmxhc2goKTsKKwkJZXJhc2UoKTsKKwkJd3JlZnJlc2goY3Vyc2NyKTsKKwkJZ290byByZXN0YXJ0OworCSAgICB9CisjZW5kaWYKKwl9CisJbmFwbXMoNTApOworCXJlZnJlc2goKTsKKyAgICB9CisKKyAgICBjdXJzX3NldCgxKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisvKiBscnRlc3QuYyBlbmRzIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3Rlc3QvbWFrZS10YXIuc2ggYi90ZXN0L21ha2UtdGFyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkzNzFhYzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L21ha2UtdGFyLnNoCkBAIC0wLDAgKzEsMTQ2IEBACisjIS9iaW4vc2gKKyMgJElkOiBtYWtlLXRhci5zaCx2IDEuMTMgMjAxNS8wNS8xNiAxNzoxMjo0NSB0b20gRXhwICQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMywyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29uc3RydWN0IGEgdGFyLWZpbGUgY29udGFpbmluZyBvbmx5IHRoZSB0ZXN0IHRyZWUgYXMgd2VsbCBhcyBpdHMgYXNzb2NpYXRlZAorIyBzY3JpcHRzLiAgVGhlIHJlYXNvbiBmb3IgZG9pbmcgdGhhdCBpcyB0byBzaW1wbGlmeSBkaXN0cmlidXRpbmcgdGhlIHRlc3QKKyMgcHJvZ3JhbXMgYXMgYSBzZXBhcmF0ZSBwYWNrYWdlLgorCitDRFBBVEg9OgorZXhwb3J0IENEUEFUSAorCitUQVJHRVQ9YHB3ZGAKKworOiAke1BLR19OQU1FOj1uY3Vyc2VzLWV4YW1wbGVzfQorOiAke1JPT1ROQU1FOj1uY3Vyc2VzLXRlc3R9Cis6ICR7REVTVERJUjo9JFRBUkdFVH0KKzogJHtUTVBESVI6PS90bXB9CisKK2dyZXBfYXNzaWduKCkgeworCWdyZXBfYXNzaWduPWBlZ3JlcCAiXiQyXD4iICIkMSIgfCBzZWQgLWUgInMvXiQyWyAJXSo9WyAJXSovLyIgLWUgJ3MvIi8vZydgCisJZXZhbCAkMj1cIiRncmVwX2Fzc2lnblwiCit9CisKK2dyZXBfcGF0Y2hkYXRlKCkgeworCWdyZXBfYXNzaWduIC4uL2Rpc3QubWsgTkNVUlNFU19NQUpPUgorCWdyZXBfYXNzaWduIC4uL2Rpc3QubWsgTkNVUlNFU19NSU5PUgorCWdyZXBfYXNzaWduIC4uL2Rpc3QubWsgTkNVUlNFU19QQVRDSAorfQorCisjIFRoZSBycG0gc3BlYy1maWxlIGluIHRoZSBuY3Vyc2VzIHRyZWUgaXMgYSB0ZW1wbGF0ZS4gIEZpbGwgaW4gdGhlIHZlcnNpb24KKyMgaW5mb3JtYXRpb24gZnJvbSBkaXN0Lm1rCitlZGl0X3NwZWNmaWxlKCkgeworCXNlZCBcCisJCS1lICJzL1xcPE1BSk9SXFw+LyROQ1VSU0VTX01BSk9SL2ciIFwKKwkJLWUgInMvXFw8TUlOT1JcXD4vJE5DVVJTRVNfTUlOT1IvZyIgXAorCQktZSAicy9cXDxZWVlZTU1ERFxcPi8kTkNVUlNFU19QQVRDSC9nIiAkMSA+JDEubmV3CisJY2htb2QgdSt3ICQxCisJbXYgJDEubmV3ICQxCit9CisKK21ha2VfY2hhbmdlbG9nKCkgeworCXRlc3QgLWYgJDEgJiYgY2htb2QgdSt3ICQxCisJY2F0ID4kMSA8PEVPRgorYGVjaG8gJFBLR19OQU1FfHRyICdbQS1aXScgJ1thLXpdJ2AgKCROQ1VSU0VTX01BSk9SLiROQ1VSU0VTX01JTk9SKyROQ1VSU0VTX1BBVENIKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIHNuYXBzaG90IG9mIG5jdXJzZXMgc3VicGFja2FnZSBmb3IgJFBLR19OQU1FLgorCisgLS0gYGhlYWQgLW4gMSAkSE9NRS8uc2lnbmF0dXJlYCAgYGRhdGUgLVJgCitFT0YKK30KKworIyBUaGlzIGNhbiBiZSBydW4gZnJvbSBlaXRoZXIgdGhlIHN1YmRpcmVjdG9yeSwgb3IgZnJvbSB0aGUgdG9wLWxldmVsCisjIHNvdXJjZSBkaXJlY3RvcnkuICBXZSB3aWxsIHB1dCB0aGUgdGFyIGZpbGUgaW4gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeS4KK3Rlc3QgLWQgLi90ZXN0ICYmIGNkIC4vdGVzdAorU09VUkNFPWBjZCAuLjtwd2RgCisKK0JVSUxEPSRUTVBESVIvbWFrZS10YXIkJAordHJhcCAiY2QgLzsgcm0gLXJmICRCVUlMRDsgZXhpdCAwIiAwIDEgMiA1IDE1CisKK3VtYXNrIDA3NworaWYgISAoIG1rZGlyICRCVUlMRCApCit0aGVuCisJZWNobyAiPyBjYW5ub3QgbWFrZSBidWlsZCBkaXJlY3RvcnkgJEJVSUxEIgorZmkKKwordW1hc2sgMDIyCitta2RpciAkQlVJTEQvJFJPT1ROQU1FCisKK2NwIC1wIC1yICogJEJVSUxELyRST09UTkFNRS8gfHwgZXhpdAorCisjIEFkZCB0aGUgY29uZmlnLiogdXRpbGl0eSBzY3JpcHRzIGZyb20gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCitmb3IgaSBpbiAuIC4uCitkbworCWZvciBqIGluIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGluc3RhbGwtc2ggdGFyLWNvcHkuc2gKKwlkbworCQl0ZXN0IC1mICRpLyRqICYmIGNwIC1wICRpLyRqICRCVUlMRC8kUk9PVE5BTUUvCisJZG9uZQorZG9uZQorCisjIE1ha2UgcnBtIGFuZCBkcGtnIHNjcmlwdHMgZm9yIHRlc3QtYnVpbGRzCitncmVwX3BhdGNoZGF0ZQorZm9yIHNwZWMgaW4gJEJVSUxELyRST09UTkFNRS9wYWNrYWdlLyouc3BlYworZG8KKwllZGl0X3NwZWNmaWxlICRzcGVjCitkb25lCitmb3Igc3BlYyBpbiAkQlVJTEQvJFJPT1ROQU1FL3BhY2thZ2UvZGViaWFuKgorZG8KKwltYWtlX2NoYW5nZWxvZyAkc3BlYy9jaGFuZ2Vsb2cKK2RvbmUKKworY3AgLXAgJFNPVVJDRS9ORVdTICRCVUlMRC8kUk9PVE5BTUUKKworIyBjbGVhbnVwIGVtcHR5IGRpcmVjdG9yaWVzIChhbiBhcnRpZmFjdCBvZiBuY3Vyc2VzIHNvdXJjZSBhcmNoaXZlcykKKwordG91Y2ggJEJVSUxELyRST09UTkFNRS9NQU5JRkVTVCAKKyggY2QgJEJVSUxELyRST09UTkFNRSAmJiBmaW5kIC4gLXR5cGUgZiAtcHJpbnQgfCRTT1VSQ0UvbWlzYy9jc29ydCA+TUFOSUZFU1QgKQorCitjZCAkQlVJTEQgfHwgZXhpdCAKKworIyBSZW1vdmUgYnVpbGQtYXJ0aWZhY3RzLgorZmluZCAuIC1uYW1lIFJDUyAtZXhlYyBybSAtcmYge30gXDsKK2ZpbmQgJEJVSUxELyRST09UTkFNRSAtdHlwZSBkIC1leGVjIHJtZGlyIHt9IFw7IDI+L2Rldi9udWxsCitmaW5kICRCVUlMRC8kUk9PVE5BTUUgLXR5cGUgZCAtZXhlYyBybWRpciB7fSBcOyAyPi9kZXYvbnVsbAorZmluZCAkQlVJTEQvJFJPT1ROQU1FIC10eXBlIGQgLWV4ZWMgcm1kaXIge30gXDsgMj4vZGV2L251bGwKKworIyBUaGVyZSBpcyBubyBuZWVkIGZvciB0aGlzIHNjcmlwdCBpbiB0aGUgdGFyIGZpbGUuCitybSAtZiAkUk9PVE5BTUUvbWFrZS10YXIuc2gKKworIyBSZW1vdmUgYnVpbGQtYXJ0aWZhY3RzLgorZmluZCAuIC1uYW1lICIqLmd6IiAtZXhlYyBybSAtcmYge30gXDsKKworIyBNYWtlIHRoZSBmaWxlcyB3cml0YWJsZS4uLgorY2htb2QgLVIgdSt3IC4KKwordGFyIGNmIC0gJFJPT1ROQU1FIHwgZ3ppcCA+JERFU1RESVIvJFJPT1ROQU1FLnRhci5negorY2QgJERFU1RESVIKKworcHdkCitscyAtbCAkUk9PVE5BTUUudGFyLmd6CisKKyMgdmk6dHM9NCBzdz00CmRpZmYgLS1naXQgYS90ZXN0L21rLXRlc3QuYXdrIGIvdGVzdC9tay10ZXN0LmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTQ5MTc2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9tay10ZXN0LmF3awpAQCAtMCwwICsxLDEzMiBAQAorIyAkSWQ6IG1rLXRlc3QuYXdrLHYgMS4xMyAyMDE1LzA1LzAxIDAwOjQ3OjI2IHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAwNi0yMDEwLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyMKKyMgZ2VuZXJhdGUgTWFrZWZpbGUgZm9yIG5jdXJzZXMgdGVzdHMuCitCRUdJTgl7CisJCWZpcnN0ID0gMTsKKwkJY291bnQgPSAwOworCX0KKy9eIy8JeworCQluZXh0OworCX0KKy9eJC8JeworCQluZXh0OworCX0KKwl7CisJCWlmIChmaXJzdCkgeworCQkJcHJpbnQgIiMgZ2VuZXJhdGVkIGJ5IG1rLXRlc3QuYXdrXG4iOworCQkJZmlyc3QgPSAwOworCQl9CisJCXByb2dzW2NvdW50XSA9ICQxOworCQlmbGFnc1tjb3VudF0gPSAkMjsKKwkJdXNpbmdbY291bnRdID0gJDM7CisJCWZpbGVzW2NvdW50XSA9ICIiOworCQlmb3IgKG4gPSA0OyBuIDw9IE5GOyArK24pIHsKKwkJCWZpbGVzW2NvdW50XSA9IHNwcmludGYoIiVzICQoTU9ERUwpLyVzJG8iLCBmaWxlc1tjb3VudF0sICRuKTsKKwkJfQorCQljb3VudCA9IGNvdW50ICsgMTsKKwl9CitFTkQJeworCWZvciAobiA9IDA7IG4gPCBjb3VudDsgKytuKSB7CisJCWlmIChuID09IDApIHsKKwkJCXByaW50ZiAiVEVTVFNcdD0gIjsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZiAiXHQgICI7CisJCX0KKwkJcHJpbnRmICIkKGRlc3RkaXIpJXMkeCIsIHByb2dzW25dOworCQlpZiAobiA8IGNvdW50IC0gMSkgeworCQkJcHJpbnRmICIgXFwiOworCQl9CisJCXByaW50ICIiOworCX0KKwlwcmludAkiIgorCXByaW50CSJhbGw6ICQoVEVTVFMpIgorCXByaW50CSIiCisJcHJpbnQJInNvdXJjZXM6IgorCXByaW50CSIiCisJcHJpbnQJInRhZ3M6IgorCXByaW50CSIJJChDVEFHUykgKi5bY2hdIgorCXByaW50CSIiCisJcHJpbnQJIiMgbm8gbGlicmFyaWVzIGhlcmUiCisJcHJpbnQJImxpYnMgXFwiCisJcHJpbnQJImluc3RhbGwubGlicyBcXCIKKwlwcmludAkidW5pbnN0YWxsLmxpYnM6IgorCXByaW50CSIiCisJaWYgKElOU1RBTEwgPT0gInllcyIpIHsKKwkJcHJpbnQJIiMgd2UgbWlnaHQgaW5zdGFsbCB0aGUgdGVzdC1wcm9ncmFtcyIKKwkJcHJpbnQJImluc3RhbGwgXFwiCisJCXByaW50CSJpbnN0YWxsLnRlc3Q6ICQoQklORElSKSAkKFRFU1RTKSIKKwkJcHJpbnQJIgkkKFNIRUxMKSAtYyAnZm9yIHNyYyBpbiAkKFRFU1RTKTsgZG8gXFwiCisJCXByaW50CSIJZHN0PWBlY2hvICQkc3JjIHwgJChUUkFOU0ZPUk0pYDsgXFwiCisJCXByaW50CSIJJChJTlNUQUxMX1BST0cpICQkc3JjICQoQklORElSKS8kJGRzdDsgXFwiCisJCXByaW50CSIJZG9uZSciCisJCXByaW50CSIiCisJCXByaW50CSJ1bmluc3RhbGwgXFwiCisJCXByaW50CSJ1bmluc3RhbGwudGVzdDoiCisJCXByaW50CSIJJChTSEVMTCkgLWMgJ2ZvciBzcmMgaW4gJChURVNUUyk7IGRvIFxcIgorCQlwcmludAkiCWRzdD1gZWNobyAkJHNyYyB8ICQoVFJBTlNGT1JNKWA7IFxcIgorCQlwcmludAkiCXJtIC1mICQoQklORElSKS8kJGRzdDsgXFwiCisJCXByaW50CSIJZG9uZSciCisJfSBlbHNlIHsKKwkJcHJpbnQJImluc3RhbGwgXFwiCisJCXByaW50CSJpbnN0YWxsLnRlc3QgXFwiCisJCXByaW50CSJ1bmluc3RhbGwgXFwiCisJCXByaW50CSJ1bmluc3RhbGwudGVzdDoiCisJfQorCXByaW50CSIiCisJcHJpbnQJIm1vc3RseWNsZWFuIDo6IgorCXByaW50CSIJLXJtIC1mIGNvcmUgdGFncyBUQUdTICp+ICouYmFrICouaSAqLmxuICouYXRhYyB0cmFjZSIKKwlwcmludAkiIgorCXByaW50CSJjbGVhbiA6OiBtb3N0bHljbGVhbiIKKwlwcmludAkiCS0kKFNIRUxMKSAtYyBcImlmIHRlc3QgLW4gJyR4JyA7IHRoZW4gJChNQUtFKSBjbGVhbiB4PScnOyBmaVwiIgorCXByaW50CSIJLXJtIC1yZiAqJG8gc2NyZWVuZHVtcCAqLmxpcyAkKFRFU1RTKSAubGlicyAqLmRTWU0iCisJcHJpbnQJIiIKKwlwcmludAkiZGlzdGNsZWFuIDo6IGNsZWFuIgorCXByaW50CSIJLXJtIC1mIE1ha2VmaWxlIG5jdXJzZXNfY2ZnLmggY29uZmlnLnN0YXR1cyBjb25maWcubG9nIgorCXByaW50CSIiCisJcHJpbnQJInJlYWxjbGVhbiA6OiBkaXN0Y2xlYW4iCisJcHJpbnQJIiIKKwlwcmludAkibGludDoiCisJcHJpbnQJIgkkKFNIRUxMKSAtYyAnZm9yIE4gaW4gJChURVNUUyk7IGRvIGVjaG8gTElOVDokJE47ICQoTElOVCkgJChMSU5UX09QVFMpICQoQ1BQRkxBR1MpICQoc3JjZGlyKS8kJE4uYyAkKExJTlRfTElCUyk7IGRvbmUnIgorCXByaW50CSIkKEJJTkRJUikgOiIKKwlwcmludAkiCW1rZGlyIC1wICRAIgorCisKKwlpZiAoRUNIT19MSU5LICE9ICIiKSB7CisJCUVDSE9fTElOSz0iQCBlY2hvIGxpbmtpbmcgJEAgLi4uIDsiCisJfQorCWZvciAobiA9IDA7IG4gPCBjb3VudDsgKytuKSB7CisJCXByaW50ICIiOworCQlwcmludGYgIiQoZGVzdGRpciklcyR4OiVzICVzXG4iLCBwcm9nc1tuXSwgZmlsZXNbbl0sIHVzaW5nW25dOworCQlwcmludGYgIlx0JXMkKExJTkspIC1vICRAJXMgJXNcbiIsIEVDSE9fTElOSywgZmlsZXNbbl0sIGZsYWdzW25dOworCX0KKworCX0KZGlmZiAtLWdpdCBhL3Rlc3QvbW9kdWxlcyBiL3Rlc3QvbW9kdWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjU1YzI4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9tb2R1bGVzCkBAIC0wLDAgKzEsMTAyIEBACisjICRJZDogbW9kdWxlcyx2IDEuNTIgMjAxNS8wNi8yNyAxMDo0MDoyNyB0b20gRXhwICQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5CTE5OTctb24KKyMKKyMgVGVzdC1Qcm9ncmFtIG1vZHVsZXMKKworQCBiYXNlCitiYWNrZ3JvdW5kCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2JsdWUJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2JzCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitjYXJkZmlsZQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCS4uL2luY2x1ZGUvcGFuZWwuaCAuLi9pbmNsdWRlL2Zvcm0uaAorY2hnYXQJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2NsaXBfcHJpbnR3CXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2NvbG9yX3NldAlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitkZW1vX2FsdGtleXMJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZGVtb19kZWZrZXkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZGVtb19mb3Jtcwlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCSQoc3JjZGlyKS9lZGl0X2ZpZWxkLmgKK2RlbW9fa2V5b2sJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZGVtb19tZW51cwlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCS4uL2luY2x1ZGUvbWVudS5oCitkZW1vX3BhbmVscwlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCS4uL2luY2x1ZGUvcGFuZWwuaAorZGVtb190ZXJtY2FwCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2RlbW9fdGVybWluZm8JcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZGl0dG8JCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2RvdHMJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2RvdHNfY3Vyc2VzCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2RvdHNfbXZjdXIJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorZG90c190ZXJtY2FwCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2VjaG9jaGFyCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2VkaXRfZmllbGQJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2RpcikvZWRpdF9maWVsZC5oCitmaWx0ZXIJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZpcmV3b3JrCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2ZpcnN0bGFzdAlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmb2xka2V5cwlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitmb3JtX2RyaXZlcl93CXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2dkYwkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQoraGFub2kJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2hhc2h0ZXN0CXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2luY2hfd2lkZQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCitpbmNocwkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQoraW5zX3dpZGUJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2RpcikvbGluZWRhdGEuaAoraW5zZGVsbG4JcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQoraW5zZXJ0cwkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2RpcikvbGluZWRhdGEuaAora2V5X25hbWVzCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2tleW5hbWVzCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK2tuaWdodAkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQorbHJ0ZXN0CQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCittb3Zld2luZG93CXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK25jdXJzZXMJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykJLi4vaW5jbHVkZS9wYW5lbC5oIC4uL2luY2x1ZGUvbWVudS5oIC4uL2luY2x1ZGUvZm9ybS5oCituZXdkZW1vCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCityYWlscm9hZAlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCityYWluCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCityZWRyYXcJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3NhdmVzY3JlZW4JcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQordGNsb2NrCQlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCit0ZXN0X2FkZF93Y2hzdHIJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2RpcikvbGluZWRhdGEuaAordGVzdF9hZGRjaHN0cglwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCSQoc3JjZGlyKS9saW5lZGF0YS5oCit0ZXN0X2FkZHN0cglwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCSQoc3JjZGlyKS9saW5lZGF0YS5oCit0ZXN0X2FkZHdzdHIJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2RpcikvbGluZWRhdGEuaAordGVzdF9hcnJheXMJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQordGVzdF9nZXRfd3N0cglwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCit0ZXN0X2dldHN0cglwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCit0ZXN0X2luc3RyCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3Rlc3RfaW53c3RyCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3Rlc3Rfb3BhcXVlCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3Rlc3Rfc2V0dXB0ZXJtCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3Rlc3RfdmlkX3B1dHMJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQordGVzdF92aWRwdXRzCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3Rlc3RhZGRjaAlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCit0ZXN0Y3Vycwlwcm9ncwkJJChzcmNkaXIpCSQoSEVBREVSX0RFUFMpCit0ZXN0c2NhbncJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQordmlldwkJcHJvZ3MJCSQoc3JjZGlyKQkkKEhFQURFUl9ERVBTKQkkKHNyY2Rpcikvd2lkZWNoYXJzLmgKK3dvcm0JCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKK3htYXMJCXByb2dzCQkkKHNyY2RpcikJJChIRUFERVJfREVQUykKKworIyB2aWxlOm1ha2Vtb2RlCmRpZmYgLS1naXQgYS90ZXN0L21vdmV3aW5kb3cuYyBiL3Rlc3QvbW92ZXdpbmRvdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZmZkYTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L21vdmV3aW5kb3cuYwpAQCAtMCwwICsxLDc2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IG1vdmV3aW5kb3cuYyx2IDEuMzkgMjAxMy8wNS8wNCAxOTo0MTowMiB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSBtb3ZlIGZ1bmN0aW9ucyBmb3Igd2luZG93cyBhbmQgZGVyaXZlZCB3aW5kb3dzIGZyb20gdGhlIGN1cnNlcworICogbGlicmFyeS4KKyAqCisgKiBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyAqLworLyoKK2RlcndpbgorbXZkZXJ3aW4KK3N1YndpbgorbXZ3aW4KKworVE9ETzoKKyAgICBhZGQgY29tbWFuZCB0byByZXNldCBzdWJ3aW5kb3cncyBvcmlnaW4gdG8gY29pbmNpZGUgd2l0aCBwYXJlbnQuCisgICAgYWRkIGNvbW1hbmQgdG8gZGVsZXRlIHN1YndpbmRvdyAoY2hlY2sgaWYgaXQgaGFzIHN1YndpbmRvd3MgdGhvdWdoKQorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworI2lmZGVmIEhBVkVfWENVUlNFUworI3VuZGVmIGRlcndpbgorI2VuZGlmCisKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyNkZWZpbmUgQ09OU1RfRk1UIGNvbnN0CisjZWxzZQorI2RlZmluZSBDT05TVF9GTVQJCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisjdW5kZWYgTElORV9NQVgKKworI2RlZmluZSBMSU5FX01JTgkyCisjZGVmaW5lIExJTkVfTUFYCShMSU5FUyAtIDIpCisjZGVmaW5lIENPTF9NSU4JCTIKKyNkZWZpbmUgQ09MX01BWAkJKENPTFMgLSAyKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHksIHg7Cit9IFBBSVI7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBXSU5ET1cgKnBhcmVudDsJCS8qIG5lZWQgdGhpcyBzaW5jZSBXSU5ET1ctPl9wYXJlbnQgaXMgbm90IHBvcnRhYmxlICovCisgICAgV0lORE9XICpjaGlsZDsJCS8qIHRoZSBhY3R1YWwgdmFsdWUgKi8KK30gRlJBTUU7CisKK3N0YXRpYyB2b2lkIGhlYWRfbGluZShDT05TVF9GTVQgY2hhciAqZm10LC4uLikgR0NDX1BSSU5URkxJS0UoMSwgMik7CitzdGF0aWMgdm9pZCB0YWlsX2xpbmUoQ09OU1RfRk1UIGNoYXIgKmZtdCwuLi4pIEdDQ19QUklOVEZMSUtFKDEsIDIpOworCitzdGF0aWMgdW5zaWduZWQgbnVtX3dpbmRvd3M7CitzdGF0aWMgRlJBTUUgKmFsbF93aW5kb3dzOworCitzdGF0aWMgdm9pZAorZmFpbGVkKGNvbnN0IGNoYXIgKnMpCit7CisgICAgcGVycm9yKHMpOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyB2b2lkCittZXNzYWdlKGludCBsaW5lbm8sIENPTlNUX0ZNVCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncCkKK3sKKyAgICBpbnQgeSwgeDsKKworICAgIGdldHl4KHN0ZHNjciwgeSwgeCk7CisgICAgbW92ZShsaW5lbm8sIDApOworICAgIGNscnRvZW9sKCk7CisKKyNpZmRlZiBIQVZFX1hDVVJTRVMKKyAgICB7CisJY2hhciBidWZmZXJbMTAyNF07CisJdnNwcmludGYoYnVmZmVyLCBmbXQsIGFyZ3ApOworCWFkZHN0cihidWZmZXIpOworICAgIH0KKyNlbHNlCisgICAgdndwcmludHcoc3Rkc2NyLCBmbXQsIGFyZ3ApOworI2VuZGlmCisKKyAgICBtb3ZlKHksIHgpOworICAgIHJlZnJlc2goKTsKK30KKworc3RhdGljIHZvaWQKK2hlYWRfbGluZShDT05TVF9GTVQgY2hhciAqZm10LC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3A7CisKKyAgICB2YV9zdGFydChhcmdwLCBmbXQpOworICAgIG1lc3NhZ2UoMCwgZm10LCBhcmdwKTsKKyAgICB2YV9lbmQoYXJncCk7Cit9CisKK3N0YXRpYyB2b2lkCit0YWlsX2xpbmUoQ09OU1RfRk1UIGNoYXIgKmZtdCwuLi4pCit7CisgICAgdmFfbGlzdCBhcmdwOworCisgICAgdmFfc3RhcnQoYXJncCwgZm10KTsKKyAgICBtZXNzYWdlKExJTkVTIC0gMSwgZm10LCBhcmdwKTsKKyAgICB2YV9lbmQoYXJncCk7Cit9CisKKy8qCisgKiBBcnJvdyBrZXlzIG1vdmUgY3Vyc29yLCByZXR1cm4gbG9jYXRpb24gYXQgY3VycmVudCBvbiBub24tYXJyb3cga2V5LgorICovCitzdGF0aWMgUEFJUiAqCitzZWxlY3RjZWxsKFdJTkRPVyAqcGFyZW50LAorCSAgIFdJTkRPVyAqY2hpbGQsCisJICAgaW50IHVsaSwgaW50IHVsaiwKKwkgICBpbnQgbHJpLCBpbnQgbHJqLAorCSAgIGJvb2wgcmVsYXRpdmUsCisJICAgYm9vbCAqIG1vcmUpCit7CisgICAgc3RhdGljIFBBSVIgcmVzOwkJLyogcmVzdWx0IGNlbGwgKi8KKyAgICBpbnQgc2kgPSBscmkgLSB1bGkgKyAxOwkvKiBkZXB0aCBvZiB0aGUgc2VsZWN0IGFyZWEgKi8KKyAgICBpbnQgc2ogPSBscmogLSB1bGogKyAxOwkvKiB3aWR0aCBvZiB0aGUgc2VsZWN0IGFyZWEgKi8KKyAgICBpbnQgaSA9IDAsIGogPSAwOwkJLyogb2Zmc2V0cyBpbnRvIHRoZSBzZWxlY3QgYXJlYSAqLworCisgICAgcmVzLnkgPSB1bGk7CisgICAgcmVzLnggPSB1bGo7CisKKyAgICBpZiAoY2hpbGQgIT0gMCkgeworCWlmIChyZWxhdGl2ZSkgeworCSAgICBnZXRwYXJ5eChjaGlsZCwgaSwgaik7CisJfSBlbHNlIHsKKwkgICAgZ2V0YmVneXgoY2hpbGQsIGksIGopOworCSAgICBpIC09IHVsaSArIGdldGJlZ3kocGFyZW50KTsKKwkgICAgaiAtPSB1bGogKyBnZXRiZWd4KHBhcmVudCk7CisJfQorICAgIH0KKworICAgIGlmIChtb3JlKQorCSptb3JlID0gRkFMU0U7CisKKyAgICBmb3IgKDs7KSB7CisJYm9vbCBtb3ZlZCA9IEZBTFNFOworCisJdGFpbF9saW5lKCJVcHBlciBsZWZ0IFslMmQsJTJkXSBMb3dlciByaWdodCBbJTJkLCUyZF0gLT4gJWQsJWQgLT4gJWQsJWQiLAorCQkgIHVsaSwgdWxqLAorCQkgIGxyaSwgbHJqLAorCQkgIGksIGosCisJCSAgdWxpICsgaSwgdWxqICsgaik7CisJd21vdmUocGFyZW50LCB1bGkgKyBpLCB1bGogKyBqKTsKKworCXN3aXRjaCAod2dldGNoKHBhcmVudCkpIHsKKwljYXNlIEtFWV9VUDoKKwkgICAgaSArPSBzaSAtIDE7CisJICAgIG1vdmVkID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfRE9XTjoKKwkgICAgaSsrOworCSAgICBtb3ZlZCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGogKz0gc2ogLSAxOworCSAgICBtb3ZlZCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1JJR0hUOgorCSAgICBqKys7CisJICAgIG1vdmVkID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSBRVUlUOgorCWNhc2UgRVNDQVBFOgorCSAgICByZXR1cm4gKChQQUlSICopIDApOworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorCWNhc2UgS0VZX01PVVNFOgorCSAgICB7CisJCU1FVkVOVCBldmVudDsKKworCQlnZXRtb3VzZSgmZXZlbnQpOworCQlpZiAoZXZlbnQueSA+IHVsaSAmJiBldmVudC54ID4gdWxqKSB7CisJCSAgICBpZiAocGFyZW50ICE9IHN0ZHNjcikgeworCQkJaSA9IGV2ZW50LnkgLSBnZXRiZWd5KHBhcmVudCkgLSB1bGk7CisJCQlqID0gZXZlbnQueCAtIGdldGJlZ3gocGFyZW50KSAtIHVsajsKKwkJICAgIH0gZWxzZSB7CisJCQlpID0gZXZlbnQueSAtIHVsaTsKKwkJCWogPSBldmVudC54IC0gdWxqOworCQkgICAgfQorCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICAvKiBGQUxMVEhSVSAqLworI2VuZGlmCisJZGVmYXVsdDoKKwkgICAgcmVzLnkgPSB1bGkgKyBpOworCSAgICByZXMueCA9IHVsaiArIGo7CisJICAgIHJldHVybiAoJnJlcyk7CisJfQorCisJaWYgKHNpIDw9IDApCisJICAgIGkgPSAwOworCWVsc2UKKwkgICAgaSAlPSBzaTsKKworCWlmIChzaiA8PSAwKQorCSAgICBqID0gMDsKKwllbHNlCisJICAgIGogJT0gc2o7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIgY2FuIGhhbmRsZSBjb250aW51b3VzIG1vdmVtZW50LCByZXR1cm4gdGhlIHJlc3VsdC4KKwkgKi8KKwlpZiAobW92ZWQgJiYgbW9yZSkgeworCSAgICAqbW9yZSA9IFRSVUU7CisJICAgIHJlcy55ID0gdWxpICsgaTsKKwkgICAgcmVzLnggPSB1bGogKyBqOworCSAgICByZXR1cm4gKCZyZXMpOworCX0KKyAgICB9Cit9CisKKy8qCisgKiBBc2sgdXNlciBmb3IgYSB3aW5kb3cgZGVmaW5pdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK2dldHdpbmRvdyhXSU5ET1cgKnBhcmVudCwgUEFJUiAqIHVsLCBQQUlSICogbHIpCit7CisgICAgaW50IG1pbl9jb2wgPSAocGFyZW50ID09IHN0ZHNjcikgPyBDT0xfTUlOIDogMDsKKyAgICBpbnQgbWF4X2NvbCA9IChwYXJlbnQgPT0gc3Rkc2NyKSA/IENPTF9NQVggOiBnZXRtYXh4KHBhcmVudCk7CisgICAgaW50IG1pbl9saW5lID0gKHBhcmVudCA9PSBzdGRzY3IpID8gTElORV9NSU4gOiAwOworICAgIGludCBtYXhfbGluZSA9IChwYXJlbnQgPT0gc3Rkc2NyKSA/IExJTkVfTUFYIDogZ2V0bWF4eShwYXJlbnQpOworICAgIFBBSVIgKnRtcDsKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaGVhZF9saW5lKCJVc2UgYXJyb3dzIHRvIG1vdmUgY3Vyc29yLCBhbnl0aGluZyBlbHNlIHRvIG1hcmsgY29ybmVyIDEiKTsKKyAgICBpZiAoKHRtcCA9IHNlbGVjdGNlbGwocGFyZW50LCAwLAorCQkJICBtaW5fbGluZSwgbWluX2NvbCwKKwkJCSAgbWF4X2xpbmUsIG1heF9jb2wsCisJCQkgIEZBTFNFLAorCQkJICAoYm9vbCAqKSAwKSkgIT0gMCkgeworCSp1bCA9ICp0bXA7CisJTXZXQWRkQ2gocGFyZW50LCB1bC0+eSwgdWwtPngsICcqJyk7CisKKwloZWFkX2xpbmUoIlVzZSBhcnJvd3MgdG8gbW92ZSBjdXJzb3IsIGFueXRoaW5nIGVsc2UgdG8gbWFyayBjb3JuZXIgMiIpOworCWlmICgodG1wID0gc2VsZWN0Y2VsbChwYXJlbnQsIDAsCisJCQkgICAgICB1bC0+eSwgdWwtPngsCisJCQkgICAgICBtYXhfbGluZSwgbWF4X2NvbCwKKwkJCSAgICAgIEZBTFNFLAorCQkJICAgICAgKGJvb2wgKikgMCkpICE9IDApIHsKKwkgICAgKmxyID0gKnRtcDsKKwkgICAgTXZXQWRkQ2gocGFyZW50LCBsci0+eSwgbHItPngsICcqJyk7CisJICAgIHdtb3ZlKHBhcmVudCwgbHItPnksIGxyLT54KTsKKwkgICAgd3N5bmNkb3duKHBhcmVudCk7CisJICAgIHdyZWZyZXNoKHBhcmVudCk7CisJICAgIHJlc3VsdCA9IChsci0+eSAhPSB1bC0+eSAmJiBsci0+eCAhPSB1bC0+eCk7CisJfQorICAgIH0KKyAgICBoZWFkX2xpbmUoImRvbmUiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogRHJhdyBhIGJveCBpbnNpZGUgdGhlIGdpdmVuIHdpbmRvdy4KKyAqLworc3RhdGljIHZvaWQKK2JveF9pbnNpZGUoV0lORE9XICp3aW4pCit7CisgICAgaW50IHkwLCB4MDsKKyAgICBpbnQgeTEsIHgxOworCisgICAgZ2V0eXgod2luLCB5MCwgeDApOworICAgIGdldG1heHl4KHdpbiwgeTEsIHgxKTsKKworICAgIE12V0hMaW5lKHdpbiwgMCwgMCwgQUNTX0hMSU5FLCB4MSk7CisgICAgTXZXSExpbmUod2luLCB5MSAtIDEsIDAsIEFDU19ITElORSwgeDEpOworCisgICAgTXZXVkxpbmUod2luLCAwLCAwLCBBQ1NfVkxJTkUsIHkxKTsKKyAgICBNdldWTGluZSh3aW4sIDAsIHgxIC0gMSwgQUNTX1ZMSU5FLCB5MSk7CisKKyAgICBNdldBZGRDaCh3aW4sIDAsIDAsIEFDU19VTENPUk5FUik7CisgICAgTXZXQWRkQ2god2luLCB5MSAtIDEsIDAsIEFDU19MTENPUk5FUik7CisgICAgTXZXQWRkQ2god2luLCAwLCB4MSAtIDEsIEFDU19VUkNPUk5FUik7CisgICAgTXZXQWRkQ2god2luLCB5MSAtIDEsIHgxIC0gMSwgQUNTX0xSQ09STkVSKTsKKworICAgIHdzeW5jZG93bih3aW4pOworICAgIHdtb3ZlKHdpbiwgeTAsIHgwKTsKKyAgICB3cmVmcmVzaCh3aW4pOworfQorCisvKgorICogQWRkIGEgd2luZG93IHRvIG91ciBsaXN0LgorICovCitzdGF0aWMgdm9pZAorYWRkX3dpbmRvdyhXSU5ET1cgKnBhcmVudCwgV0lORE9XICpjaGlsZCkKK3sKKyAgICBzdGF0aWMgdW5zaWduZWQgaGF2ZSA9IDA7CisgICAgdW5zaWduZWQgbmVlZCA9ICgobnVtX3dpbmRvd3MgKyAxKSB8IDMxKSArIDE7CisKKyAgICBrZXlwYWQoY2hpbGQsIFRSVUUpOworICAgIGlmIChuZWVkID4gaGF2ZSkgeworCWFsbF93aW5kb3dzID0gdHlwZVJlYWxsb2MoRlJBTUUsIG5lZWQsIGFsbF93aW5kb3dzKTsKKwlpZiAoIWFsbF93aW5kb3dzKQorCSAgICBmYWlsZWQoImFkZF93aW5kb3ciKTsKKyAgICB9CisgICAgYWxsX3dpbmRvd3NbbnVtX3dpbmRvd3NdLnBhcmVudCA9IHBhcmVudDsKKyAgICBhbGxfd2luZG93c1tudW1fd2luZG93c10uY2hpbGQgPSBjaGlsZDsKKyAgICBudW1fd2luZG93cysrOworfQorCitzdGF0aWMgaW50Cit3aW5kb3cybnVtKFdJTkRPVyAqd2luKQoreworICAgIGludCBuOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgKGludCkgbnVtX3dpbmRvd3M7ICsrbikgeworCWlmICh3aW4gPT0gYWxsX3dpbmRvd3Nbbl0uY2hpbGQpIHsKKwkgICAgcmVzdWx0ID0gbjsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgV0lORE9XICoKK3BhcmVudF9vZihXSU5ET1cgKndpbikKK3sKKyAgICBXSU5ET1cgKnJlc3VsdCA9IDA7CisgICAgaW50IG4gPSB3aW5kb3cybnVtKHdpbik7CisgICAgaWYgKG4gPj0gMCkKKwlyZXN1bHQgPSBhbGxfd2luZG93c1tuXS5wYXJlbnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3JlcGFpbnRfb25lKFdJTkRPVyAqd2luKQoreworICAgIHRvdWNod2luKHdpbik7CisgICAgd25vdXRyZWZyZXNoKHdpbik7Cit9CisKK3N0YXRpYyB2b2lkCityZWZyZXNoX2FsbChXSU5ET1cgKndpbikKK3sKKyAgICB1bnNpZ25lZCBuOworCisgICAgZm9yIChuID0gMDsgbiA8IG51bV93aW5kb3dzOyArK24pIHsKKwlpZiAoYWxsX3dpbmRvd3Nbbl0uY2hpbGQgIT0gd2luKSB7CisJICAgIHJlcGFpbnRfb25lKGFsbF93aW5kb3dzW25dLmNoaWxkKTsKKwl9CisgICAgfQorCisgICAgcmVwYWludF9vbmUod2luKTsKKyAgICBkb3VwZGF0ZSgpOworfQorCitzdGF0aWMgV0lORE9XICoKK25leHRfd2luZG93KFdJTkRPVyAqd2luKQoreworICAgIFdJTkRPVyAqcmVzdWx0ID0gd2luOworICAgIGludCBuID0gd2luZG93Mm51bSh3aW4pOworCisgICAgaWYgKG4rKyA+PSAwKSB7CisJcmVzdWx0ID0gYWxsX3dpbmRvd3NbKHVuc2lnbmVkKSBuICUgbnVtX3dpbmRvd3NdLmNoaWxkOworCXdtb3ZlKHJlc3VsdCwgMCwgMCk7CisJd3JlZnJlc2gocmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFdJTkRPVyAqCitwcmV2X3dpbmRvdyhXSU5ET1cgKndpbikKK3sKKyAgICBXSU5ET1cgKnJlc3VsdCA9IHdpbjsKKyAgICBpbnQgbiA9IHdpbmRvdzJudW0od2luKTsKKworICAgIGlmIChuLS0gPj0gMCkgeworCWlmIChuIDwgMCkKKwkgICAgbiA9IChpbnQpIChudW1fd2luZG93cyAtIDEpOworCXJlc3VsdCA9IGFsbF93aW5kb3dzWyh1bnNpZ25lZCkgbiAlIG51bV93aW5kb3dzXS5jaGlsZDsKKwl3bW92ZShyZXN1bHQsIDAsIDApOworCXdyZWZyZXNoKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCityZWN1cl9tb3ZlX3dpbmRvdyhXSU5ET1cgKnBhcmVudCwgaW50IGR5LCBpbnQgZHgpCit7CisgICAgdW5zaWduZWQgbjsKKworICAgIGZvciAobiA9IDA7IG4gPCBudW1fd2luZG93czsgKytuKSB7CisJaWYgKGFsbF93aW5kb3dzW25dLnBhcmVudCA9PSBwYXJlbnQpIHsKKwkgICAgbXZ3aW4oYWxsX3dpbmRvd3Nbbl0uY2hpbGQsIGR5LCBkeCk7CisJICAgIHJlY3VyX21vdmVfd2luZG93KGFsbF93aW5kb3dzW25dLmNoaWxkLCBkeSwgZHgpOworCX0KKyAgICB9Cit9CisKKy8qCisgKiB0ZXN0IG12d2luKCkuCisgKi8KK3N0YXRpYyBib29sCittb3ZlX3dpbmRvdyhXSU5ET1cgKndpbiwgYm9vbCByZWN1cikKK3sKKyAgICBXSU5ET1cgKnBhcmVudCA9IHBhcmVudF9vZih3aW4pOworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICBpZiAocGFyZW50ICE9IDApIHsKKwlib29sIHRvcCA9IChwYXJlbnQgPT0gc3Rkc2NyKTsKKwlpbnQgbWluX2NvbCA9IHRvcCA/IENPTF9NSU4gOiAwOworCWludCBtYXhfY29sID0gdG9wID8gQ09MX01BWCA6IGdldG1heHgocGFyZW50KTsKKwlpbnQgbWluX2xpbmUgPSB0b3AgPyBMSU5FX01JTiA6IDA7CisJaW50IG1heF9saW5lID0gdG9wID8gTElORV9NQVggOiBnZXRtYXh5KHBhcmVudCk7CisJUEFJUiAqdG1wOworCWJvb2wgbW9yZTsKKworCWhlYWRfbGluZSgiU2VsZWN0IG5ldyBwb3NpdGlvbiBmb3IgJXN3aW5kb3ciLCB0b3AgPyAiIiA6ICJzdWIiKTsKKworCXdoaWxlICgodG1wID0gc2VsZWN0Y2VsbChwYXJlbnQsCisJCQkJIHdpbiwKKwkJCQkgbWluX2xpbmUsIG1pbl9jb2wsCisJCQkJIG1heF9saW5lLCBtYXhfY29sLAorCQkJCSBGQUxTRSwKKwkJCQkgJm1vcmUpKSAhPSAwKSB7CisJICAgIGludCB5MCwgeDA7CisJICAgIGdldGJlZ3l4KHBhcmVudCwgeTAsIHgwKTsKKwkgICAgLyoKKwkgICAgICogTW92aW5nIGEgc3Vid2luZG93IGhhcyB0aGUgZWZmZWN0IG9mIG1vdmluZyBhIHZpZXdwb3J0IGFyb3VuZAorCSAgICAgKiB0aGUgc2NyZWVuLiAgVGhlIHBhcmVudCB3aW5kb3cgcmV0YWlucyB0aGUgY29udGVudHMgb2YgdGhlCisJICAgICAqIHN1YndpbmRvdyBpbiB0aGUgb3JpZ2luYWwgbG9jYXRpb24sIGJ1dCB0aGUgdmlld3BvcnQgd2lsbCBzaG93CisJICAgICAqIHRoZSBjb250ZW50cyAoYWdhaW4pIGF0IHRoZSBuZXcgbG9jYXRpb24uICBTbyBpdCB3aWxsIGxvb2sgb2RkCisJICAgICAqIHdoZW4gdGVzdGluZy4KKwkgICAgICovCisJICAgIGlmIChtdndpbih3aW4sIHkwICsgdG1wLT55LCB4MCArIHRtcC0+eCkgIT0gRVJSKSB7CisJCWlmIChyZWN1cikgeworCQkgICAgcmVjdXJfbW92ZV93aW5kb3cod2luLCB0bXAtPnksIHRtcC0+eCk7CisJCX0KKwkJcmVmcmVzaF9hbGwod2luKTsKKwkJZG91cGRhdGUoKTsKKwkJcmVzdWx0ID0gVFJVRTsKKwkgICAgfSBlbHNlIHsKKwkJcmVzdWx0ID0gRkFMU0U7CisJICAgIH0KKwkgICAgaWYgKCFtb3JlKQorCQlicmVhazsKKwl9CisgICAgfQorICAgIGhlYWRfbGluZSgiZG9uZSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2RlcndpbihXSU5ET1cgKndpbikKK3sKKyAgICBpbnQgcGFyeSwgcGFyeCwgbWF4eSwgbWF4eDsKKworICAgIGdldG1heHl4KHdpbiwgbWF4eSwgbWF4eCk7CisgICAgZ2V0cGFyeXgod2luLCBwYXJ5LCBwYXJ4KTsKKworICAgIGhlYWRfbGluZSgiU2VsZWN0IG5ldyBwb3NpdGlvbiBmb3IgZGVyaXZlZCB3aW5kb3cgYXQgJWQsJWQgKCVkLCVkKSIsCisJICAgICAgcGFyeSwgcGFyeCwgbWF4eSwgbWF4eCk7Cit9CisKKy8qCisgKiB0ZXN0IG12ZGVyd2luKCkuCisgKi8KK3N0YXRpYyBib29sCittb3ZlX2RlcndpbihXSU5ET1cgKndpbikKK3sKKyAgICBXSU5ET1cgKnBhcmVudCA9IHBhcmVudF9vZih3aW4pOworICAgIGJvb2wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICBpZiAocGFyZW50ICE9IDApIHsKKwlib29sIHRvcCA9IChwYXJlbnQgPT0gc3Rkc2NyKTsKKwlpbnQgbWluX2NvbCA9IHRvcCA/IENPTF9NSU4gOiAwOworCWludCBtYXhfY29sID0gdG9wID8gQ09MX01BWCA6IGdldG1heHgocGFyZW50KTsKKwlpbnQgbWluX2xpbmUgPSB0b3AgPyBMSU5FX01JTiA6IDA7CisJaW50IG1heF9saW5lID0gdG9wID8gTElORV9NQVggOiBnZXRtYXh5KHBhcmVudCk7CisJUEFJUiAqdG1wOworCWJvb2wgbW9yZTsKKworCXNob3dfZGVyd2luKHdpbik7CisJd2hpbGUgKCh0bXAgPSBzZWxlY3RjZWxsKHBhcmVudCwKKwkJCQkgd2luLAorCQkJCSBtaW5fbGluZSwgbWluX2NvbCwKKwkJCQkgbWF4X2xpbmUsIG1heF9jb2wsCisJCQkJIFRSVUUsCisJCQkJICZtb3JlKSkgIT0gMCkgeworCSAgICBpZiAobXZkZXJ3aW4od2luLCB0bXAtPnksIHRtcC0+eCkgIT0gRVJSKSB7CisJCXJlZnJlc2hfYWxsKHdpbik7CisJCWRvdXBkYXRlKCk7CisJCXJlcGFpbnRfb25lKHdpbik7CisJCWRvdXBkYXRlKCk7CisJCXJlc3VsdCA9IFRSVUU7CisJCXNob3dfZGVyd2luKHdpbik7CisJICAgIH0gZWxzZSB7CisJCWZsYXNoKCk7CisJICAgIH0KKwkgICAgaWYgKCFtb3JlKQorCQlicmVhazsKKwl9CisgICAgfQorICAgIGhlYWRfbGluZSgiZG9uZSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitmaWxsX3dpbmRvdyhXSU5ET1cgKndpbiwgY2h0eXBlIGNoKQoreworICAgIGludCB5LCB4OworICAgIGludCB5MCwgeDA7CisgICAgaW50IHkxLCB4MTsKKworICAgIGdldHl4KHdpbiwgeTAsIHgwKTsKKyAgICBnZXRtYXh5eCh3aW4sIHkxLCB4MSk7CisgICAgZm9yICh5ID0gMDsgeSA8IHkxOyArK3kpIHsKKwlmb3IgKHggPSAwOyB4IDwgeDE7ICsreCkgeworCSAgICBNdldBZGRDaCh3aW4sIHksIHgsIGNoKTsKKwl9CisgICAgfQorICAgIHdzeW5jZG93bih3aW4pOworICAgIHdtb3ZlKHdpbiwgeTAsIHgwKTsKKyAgICB3cmVmcmVzaCh3aW4pOworfQorCitzdGF0aWMgdm9pZAorZmlsbF93aXRoX3BhdHRlcm4oV0lORE9XICp3aW4pCit7CisgICAgaW50IHksIHg7CisgICAgaW50IHkwLCB4MDsKKyAgICBpbnQgeTEsIHgxOworICAgIGludCBjaCA9ICdhJzsKKworICAgIGdldHl4KHdpbiwgeTAsIHgwKTsKKyAgICBnZXRtYXh5eCh3aW4sIHkxLCB4MSk7CisgICAgZm9yICh5ID0gMDsgeSA8IHkxOyArK3kpIHsKKwlmb3IgKHggPSAwOyB4IDwgeDE7ICsreCkgeworCSAgICBNdldBZGRDaCh3aW4sIHksIHgsIChjaHR5cGUpIGNoKTsKKwkgICAgaWYgKCsrY2ggPiAneicpCisJCWNoID0gJ2EnOworCX0KKyAgICB9CisgICAgd3N5bmNkb3duKHdpbik7CisgICAgd21vdmUod2luLCB5MCwgeDApOworICAgIHdyZWZyZXNoKHdpbik7Cit9CisKKyNkZWZpbmUgbGluZXNfb2YodWwsbHIpCShsci55IC0gdWwueSArIDEpCisjZGVmaW5lIGNvbHNfb2YodWwsbHIpCShsci54IC0gdWwueCArIDEpCisjZGVmaW5lIHBhaXJfb2YodWwpCXVsLnksIHVsLngKKworc3RhdGljIFdJTkRPVyAqCitjcmVhdGVfbXlfd2luZG93KFdJTkRPVyAqY3VycmVudCkKK3sKKyAgICBQQUlSIHVsLCBscjsKKyAgICBXSU5ET1cgKnJlc3VsdCA9IDA7CisKKyAgICBpZiAoZ2V0d2luZG93KHN0ZHNjciwgJnVsLCAmbHIpKSB7CisJcmVzdWx0ID0gbmV3d2luKGxpbmVzX29mKHVsLCBsciksIGNvbHNfb2YodWwsIGxyKSwgcGFpcl9vZih1bCkpOworCWlmIChyZXN1bHQgIT0gMCkgeworCSAgICBmaWxsX3dpbmRvdyhyZXN1bHQsICdjJyk7CisJICAgIGFkZF93aW5kb3coc3Rkc2NyLCByZXN1bHQpOworCX0KKyAgICB9CisgICAgaWYgKHJlc3VsdCA9PSAwKQorCXJlc3VsdCA9IGN1cnJlbnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFdJTkRPVyAqCitjcmVhdGVfbXlfZGVyd2luKFdJTkRPVyAqcGFyZW50KQoreworICAgIFBBSVIgdWwsIGxyOworICAgIFdJTkRPVyAqcmVzdWx0ID0gMDsKKworICAgIGlmIChnZXR3aW5kb3cocGFyZW50LCAmdWwsICZscikpIHsKKwlyZXN1bHQgPSBkZXJ3aW4ocGFyZW50LCBsaW5lc19vZih1bCwgbHIpLCBjb2xzX29mKHVsLCBsciksIHBhaXJfb2YodWwpKTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkgICAgZmlsbF93aW5kb3cocmVzdWx0LCAnZCcpOworCSAgICBhZGRfd2luZG93KHBhcmVudCwgcmVzdWx0KTsKKwl9CisgICAgfQorICAgIGlmIChyZXN1bHQgPT0gMCkKKwlyZXN1bHQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFdJTkRPVyAqCitjcmVhdGVfbXlfc3Vid2luKFdJTkRPVyAqcGFyZW50KQoreworICAgIFBBSVIgdWwsIGxyOworICAgIFdJTkRPVyAqcmVzdWx0ID0gMDsKKworICAgIGlmIChnZXR3aW5kb3cocGFyZW50LCAmdWwsICZscikpIHsKKwlyZXN1bHQgPSBzdWJ3aW4ocGFyZW50LAorCQkJbGluZXNfb2YodWwsIGxyKSwKKwkJCWNvbHNfb2YodWwsIGxyKSwKKwkJCXVsLnkgKyBnZXRiZWd5KHBhcmVudCksCisJCQl1bC54ICsgZ2V0YmVneChwYXJlbnQpKTsKKwlpZiAocmVzdWx0ICE9IDApIHsKKwkgICAgZmlsbF93aW5kb3cocmVzdWx0LCAncycpOworCSAgICBhZGRfd2luZG93KHBhcmVudCwgcmVzdWx0KTsKKwl9CisgICAgfQorICAgIGlmIChyZXN1bHQgPT0gMCkKKwlyZXN1bHQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfaGVscChXSU5ET1cgKmN1cnJlbnQpCit7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgc3RhdGljIHN0cnVjdCB7CisJaW50CWtleTsKKwlDT05TVF9GTVQgY2hhciAqIG1zZzsKKyAgICB9IGhlbHBbXSA9IHsKKwl7ICc/JywJCSJTaG93IHRoaXMgc2NyZWVuIiB9LAorCXsgJ2InLAkJIkRyYXcgYSBib3ggaW5zaWRlIHRoZSBjdXJyZW50IHdpbmRvdyIgfSwKKwl7ICdjJywJCSJDcmVhdGUgYSBuZXcgd2luZG93IiB9LAorCXsgJ2QnLAkJIkNyZWF0ZSBhIG5ldyBkZXJpdmVkIHdpbmRvdyIgfSwKKwl7ICdEJywJCSJNb3ZlIGRlcml2ZWQgd2luZG93IChtb3ZlcyB2aWV3cG9ydCkiIH0sCisJeyAnZicsCQkiRmlsbCB0aGUgY3VycmVudCB3aW5kb3cgd2l0aCB0aGUgbmV4dCBjaGFyYWN0ZXIiIH0sCisJeyAnRicsCQkiRmlsbCB0aGUgY3VycmVudCB3aW5kb3cgd2l0aCBhIHBhdHRlcm4iIH0sCisJeyAnbScsCQkiTW92ZSB0aGUgY3VycmVudCB3aW5kb3ciIH0sCisJeyAnTScsCQkiTW92ZSB0aGUgY3VycmVudCB3aW5kb3cgKGFuZCBpdHMgY2hpbGRyZW4pIiB9LAorCXsgJ3EnLAkJIlF1aXQiIH0sCisJeyAncycsCQkiQ3JlYXRlIGEgbmV3IHN1YndpbmRvdyIgfSwKKwl7IENUUkwoJ0wnKSwJIlJlcGFpbnQgYWxsIHdpbmRvd3MsIGRvaW5nIGN1cnJlbnQgb25lIGxhc3QiIH0sCisJeyBDVFJMKCdOJyksCSJDdXJzb3IgdG8gbmV4dCB3aW5kb3ciIH0sCisJeyBDVFJMKCdQJyksCSJDdXJzb3IgdG8gcHJldmlvdXMgd2luZG93IiB9LAorICAgIH07CisgICAgLyogKklOREVOVC1PTiogKi8KKworICAgIFdJTkRPVyAqbXl3aW4gPSBuZXd3aW4oTElORVMsIENPTFMsIDAsIDApOworICAgIGludCByb3c7CisKKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IExJTkVTIC0gMiAmJiByb3cgPCAoaW50KSBTSVpFT0YoaGVscCk7ICsrcm93KSB7CisJd21vdmUobXl3aW4sIHJvdyArIDEsIDEpOworCXdwcmludHcobXl3aW4sICIlcyIsIGtleW5hbWUoaGVscFtyb3ddLmtleSkpOworCXdtb3ZlKG15d2luLCByb3cgKyAxLCAyMCk7CisJd3ByaW50dyhteXdpbiwgIiVzIiwgaGVscFtyb3ddLm1zZyk7CisgICAgfQorICAgIGJveF9pbnNpZGUobXl3aW4pOworICAgIHdtb3ZlKG15d2luLCAxLCAxKTsKKyAgICB3Z2V0Y2gobXl3aW4pOworICAgIGRlbHdpbihteXdpbik7CisgICAgcmVmcmVzaF9hbGwoY3VycmVudCk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIFdJTkRPVyAqY3VycmVudF93aW47CisgICAgaW50IGNoOworICAgIGJvb2wgZG9uZSA9IEZBTFNFOworCisgICAgaW5pdHNjcigpOworICAgIGNicmVhaygpOworICAgIG5vZWNobygpOworICAgIG5vbmwoKTsKKyAgICBpbnRyZmx1c2goc3Rkc2NyLCBGQUxTRSk7CisKKyAgICBhZGRfd2luZG93KDAsIGN1cnJlbnRfd2luID0gc3Rkc2NyKTsKKworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgICh2b2lkKSBtb3VzZW1hc2soQlVUVE9OMV9DTElDS0VELCAobW1hc2tfdCAqKSBOVUxMKTsKKyNlbmRpZiAvKiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gKi8KKworICAgIHdoaWxlICghZG9uZSAmJiAoY2ggPSB3Z2V0Y2goY3VycmVudF93aW4pKSAhPSBFUlIpIHsKKwlpbnQgeSwgeDsKKworCWdldHl4KGN1cnJlbnRfd2luLCB5LCB4KTsKKworCXN3aXRjaCAoY2gpIHsKKwljYXNlICc/JzoKKwkgICAgc2hvd19oZWxwKGN1cnJlbnRfd2luKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYic6CisJICAgIGJveF9pbnNpZGUoY3VycmVudF93aW4pOworCSAgICBicmVhazsKKwljYXNlICdjJzoKKwkgICAgY3VycmVudF93aW4gPSBjcmVhdGVfbXlfd2luZG93KGN1cnJlbnRfd2luKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnZCc6CisJICAgIGN1cnJlbnRfd2luID0gY3JlYXRlX215X2RlcndpbihjdXJyZW50X3dpbik7CisJICAgIGJyZWFrOworCWNhc2UgJ0QnOgorCSAgICBpZiAoIW1vdmVfZGVyd2luKGN1cnJlbnRfd2luKSkgeworCQl0YWlsX2xpbmUoImVycm9yIik7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJ2YnOgorCSAgICBmaWxsX3dpbmRvdyhjdXJyZW50X3dpbiwgKGNodHlwZSkgd2dldGNoKGN1cnJlbnRfd2luKSk7CisJICAgIGJyZWFrOworCWNhc2UgJ0YnOgorCSAgICBmaWxsX3dpdGhfcGF0dGVybihjdXJyZW50X3dpbik7CisJICAgIGJyZWFrOworCWNhc2UgJ20nOgorCWNhc2UgJ00nOgorCSAgICBpZiAoIW1vdmVfd2luZG93KGN1cnJlbnRfd2luLCAoY2ggPT0gJ00nKSkpIHsKKwkJdGFpbF9saW5lKCJlcnJvciIpOworCQljb250aW51ZTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICdxJzoKKwkgICAgZG9uZSA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3MnOgorCSAgICBjdXJyZW50X3dpbiA9IGNyZWF0ZV9teV9zdWJ3aW4oY3VycmVudF93aW4pOworCSAgICBicmVhazsKKwljYXNlIENUUkwoJ0wnKToKKwkgICAgcmVmcmVzaF9hbGwoY3VycmVudF93aW4pOworCSAgICBicmVhazsKKwljYXNlIENUUkwoJ04nKToKKwkgICAgY3VycmVudF93aW4gPSBuZXh0X3dpbmRvdyhjdXJyZW50X3dpbik7CisJICAgIGJyZWFrOworCWNhc2UgQ1RSTCgnUCcpOgorCSAgICBjdXJyZW50X3dpbiA9IHByZXZfd2luZG93KGN1cnJlbnRfd2luKTsKKwkgICAgYnJlYWs7CisjaWYgMAorCSAgICAvKiB3YW50IHRvIGFsbG93IGN1cnNvciB0byBtb3ZlIGFyb3VuZCB0aGUgY3VycmVudCB3aW5kb3cgdG9vICovCisJICAgIC8qIHdhbnQgdG8gdGVzdCB0aGUgcmVzaXppbmcgb2Ygd2luZG93cyBhbmQgc3Vid2luZG93cyB0b28gKi8KKwkgICAgLyogd2FudCB0byBhbGxvdyBkZWxldGluZyBhIHdpbmRvdyBhbHNvICovCisjZW5kaWYKKwlkZWZhdWx0OgorCSAgICB3bW92ZShjdXJyZW50X3dpbiwgeSwgeCk7CisJICAgIHRhaWxfbGluZSgidW5yZWNvZ25pemVkIGtleSAodXNlICc/JyBmb3IgaGVscCkiKTsKKwkgICAgYmVlcCgpOworCSAgICBjb250aW51ZTsKKwl9CisJdGFpbF9saW5lKCJzaXplIFslZCwlZF0gYmVnaW4gWyVkLCVkXSBwYXJlbnQgWyVkLCVkXSIsCisJCSAgZ2V0bWF4eShjdXJyZW50X3dpbiksCisJCSAgZ2V0bWF4eChjdXJyZW50X3dpbiksCisJCSAgZ2V0YmVneShjdXJyZW50X3dpbiksCisJCSAgZ2V0YmVneChjdXJyZW50X3dpbiksCisJCSAgZ2V0cGFyeShjdXJyZW50X3dpbiksCisJCSAgZ2V0cGFyeChjdXJyZW50X3dpbikpOworCXdtb3ZlKGN1cnJlbnRfd2luLCAwLCAwKTsKKyAgICB9CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvbmN1cnNlcy5jIGIvdGVzdC9uY3Vyc2VzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhODhjNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbmN1cnNlcy5jCkBAIC0wLDAgKzEsNzI0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK05BTUUKKyAgIG5jdXJzZXMuYyAtLS0gbmN1cnNlcyBsaWJyYXJ5IGV4ZXJjaXNlcgorCitTWU5PUFNJUworICAgbmN1cnNlcworCitERVNDUklQVElPTgorICAgQW4gaW50ZXJhY3RpdmUgdGVzdCBtb2R1bGUgZm9yIHRoZSBuY3Vyc2VzIGxpYnJhcnkuCisKK0FVVEhPUgorICAgQXV0aG9yOiBFcmljIFMuIFJheW1vbmQgPGVzckBzbmFyay50aHlyc3VzLmNvbT4gMTk5MworICAgICAgICAgICBUaG9tYXMgRS4gRGlja2V5IChiZWdpbm5pbmcgcmV2aXNpb24gMS4yNyBpbiAxOTk2KS4KKworJElkOiBuY3Vyc2VzLmMsdiAxLjQyMCAyMDE1LzA1LzIzIDIzOjQxOjI1IHRvbSBFeHAgJAorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmZGVmIF9faHB1eAorI3VuZGVmIG12d2RlbGNoCQkJLyogSFBVWCAxMS4yMyBtYWNybyB3aWxsIG5vdCBjb21waWxlICovCisjZW5kaWYKKworI2lmIEhBVkVfR0VUVElNRU9GREFZCisjaWYgSEFWRV9TWVNfVElNRV9IICYmIEhBVkVfU1lTX1RJTUVfU0VMRUNUCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NFTEVDVF9ICisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmIFVTRV9MSUJQQU5FTAorI2luY2x1ZGUgPHBhbmVsLmg+CisjZW5kaWYKKworI2lmIFVTRV9MSUJNRU5VCisjaW5jbHVkZSA8bWVudS5oPgorI2VuZGlmCisKKyNpZiBVU0VfTElCRk9STQorI2luY2x1ZGUgPGZvcm0uaD4KKyNlbmRpZgorCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisKKyNkZWZpbmUgTkNVUlNFU19DT05TVF9QQVJBTSBjb25zdCB2b2lkCisKKyNpZmRlZiBUUkFDRQorc3RhdGljIHVuc2lnbmVkIHNhdmVfdHJhY2UgPSBUUkFDRV9PUkRJTkFSWSB8IFRSQUNFX0lDQUxMUyB8IFRSQUNFX0NBTExTOworZXh0ZXJuIHVuc2lnbmVkIF9uY190cmFjaW5nOworI2VuZGlmCisKKyNlbHNlCisKKyNkZWZpbmUgTkNVUlNFU19DT05TVF9QQVJBTSBjaGFyCisKKyNkZWZpbmUgbW1hc2tfdCBjaHR5cGUJCS8qIG5vdCBzcGVjaWZpZWQgaW4gWFNJICovCisKKyNpZm5kZWYgQUNTX1MzCisjaWZkZWYgQ1VSU0VTX0FDU19BUlJBWQorI2RlZmluZSBBQ1NfUzMgICAgICAgICAgKENVUlNFU19BQ1NfQVJSQVlbJ3AnXSkJCS8qIHNjYW4gbGluZSAzICovCisjZGVmaW5lIEFDU19TNyAgICAgICAgICAoQ1VSU0VTX0FDU19BUlJBWVsnciddKQkJLyogc2NhbiBsaW5lIDcgKi8KKyNkZWZpbmUgQUNTX0xFUVVBTCAgICAgIChDVVJTRVNfQUNTX0FSUkFZWyd5J10pCQkvKiBsZXNzL2VxdWFsICovCisjZGVmaW5lIEFDU19HRVFVQUwgICAgICAoQ1VSU0VTX0FDU19BUlJBWVsneiddKQkJLyogZ3JlYXRlci9lcXVhbCAqLworI2RlZmluZSBBQ1NfUEkgICAgICAgICAgKENVUlNFU19BQ1NfQVJSQVlbJ3snXSkJCS8qIFBpICovCisjZGVmaW5lIEFDU19ORVFVQUwgICAgICAoQ1VSU0VTX0FDU19BUlJBWVsnfCddKQkJLyogbm90IGVxdWFsICovCisjZGVmaW5lIEFDU19TVEVSTElORyAgICAoQ1VSU0VTX0FDU19BUlJBWVsnfSddKQkJLyogVUsgcG91bmQgc2lnbiAqLworI2Vsc2UKKyNkZWZpbmUgQUNTX1MzICAgICAgICAgIChBX0FMVENIQVJTRVQgKyAncCcpCS8qIHNjYW4gbGluZSAzICovCisjZGVmaW5lIEFDU19TNyAgICAgICAgICAoQV9BTFRDSEFSU0VUICsgJ3InKQkvKiBzY2FuIGxpbmUgNyAqLworI2RlZmluZSBBQ1NfTEVRVUFMICAgICAgKEFfQUxUQ0hBUlNFVCArICd5JykJLyogbGVzcy9lcXVhbCAqLworI2RlZmluZSBBQ1NfR0VRVUFMICAgICAgKEFfQUxUQ0hBUlNFVCArICd6JykJLyogZ3JlYXRlci9lcXVhbCAqLworI2RlZmluZSBBQ1NfUEkgICAgICAgICAgKEFfQUxUQ0hBUlNFVCArICd7JykJLyogUGkgKi8KKyNkZWZpbmUgQUNTX05FUVVBTCAgICAgIChBX0FMVENIQVJTRVQgKyAnfCcpCS8qIG5vdCBlcXVhbCAqLworI2RlZmluZSBBQ1NfU1RFUkxJTkcgICAgKEFfQUxUQ0hBUlNFVCArICd9JykJLyogVUsgcG91bmQgc2lnbiAqLworI2VuZGlmCisjZW5kaWYgLyogQUNTX1MzICovCisKKyNpZm5kZWYgV0FDU19TMworI2lmZGVmIENVUlNFU19XQUNTX0FSUkFZCisjZGVmaW5lIFdBQ1NfUzMgICAgICAgICAoJihDVVJTRVNfV0FDU19BUlJBWVsncCddKSkJLyogc2NhbiBsaW5lIDMgKi8KKyNkZWZpbmUgV0FDU19TNyAgICAgICAgICgmKENVUlNFU19XQUNTX0FSUkFZWydyJ10pKQkvKiBzY2FuIGxpbmUgNyAqLworI2RlZmluZSBXQUNTX0xFUVVBTCAgICAgKCYoQ1VSU0VTX1dBQ1NfQVJSQVlbJ3knXSkpCS8qIGxlc3MvZXF1YWwgKi8KKyNkZWZpbmUgV0FDU19HRVFVQUwgICAgICgmKENVUlNFU19XQUNTX0FSUkFZWyd6J10pKQkvKiBncmVhdGVyL2VxdWFsICovCisjZGVmaW5lIFdBQ1NfUEkgICAgICAgICAoJihDVVJTRVNfV0FDU19BUlJBWVsneyddKSkJLyogUGkgKi8KKyNkZWZpbmUgV0FDU19ORVFVQUwgICAgICgmKENVUlNFU19XQUNTX0FSUkFZWyd8J10pKQkvKiBub3QgZXF1YWwgKi8KKyNkZWZpbmUgV0FDU19TVEVSTElORyAgICgmKENVUlNFU19XQUNTX0FSUkFZWyd9J10pKQkvKiBVSyBwb3VuZCBzaWduICovCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYKKworI2lmIEhBVkVfV0NTUlRPTUJTCisjZGVmaW5lIGNvdW50X3djaGFycyhzcmMsIGxlbiwgc3RhdGUpICAgICAgd2NzcnRvbWJzKDAsICAgJnNyYywgbGVuLCBzdGF0ZSkKKyNkZWZpbmUgdHJhbnNfd2NoYXJzKGRzdCwgc3JjLCBsZW4sIHN0YXRlKSB3Y3NydG9tYnMoZHN0LCAmc3JjLCBsZW4sIHN0YXRlKQorI2RlZmluZSByZXNldF93Y2hhcnMoc3RhdGUpIGluaXRfbWIoc3RhdGUpCisjZWxpZiBIQVZFX1dDU1RPTUJTICYmIEhBVkVfTUJUT1dDICYmIEhBVkVfTUJMRU4KKyNkZWZpbmUgY291bnRfd2NoYXJzKHNyYywgbGVuLCBzdGF0ZSkgICAgICB3Y3N0b21icygwLCAgIHNyYywgbGVuKQorI2RlZmluZSB0cmFuc193Y2hhcnMoZHN0LCBzcmMsIGxlbiwgc3RhdGUpIHdjc3RvbWJzKGRzdCwgc3JjLCBsZW4pCisjZGVmaW5lIHJlc2V0X3djaGFycyhzdGF0ZSkgSUdOT1JFX1JDKG1ibGVuKE5VTEwsIDApKSwgSUdOT1JFX1JDKG1idG93YyhOVUxMLCBOVUxMLCAwKSkKKyNkZWZpbmUgc3RhdGVfdW51c2VkCisjZW5kaWYKKworI2lmIEhBVkVfTUJTUlRPV0NTCisjZGVmaW5lIGNvdW50X21ieXRlcyhzcmMsIGxlbiwgc3RhdGUpICAgICAgbWJzcnRvd2NzKDAsICAgJnNyYywgbGVuLCBzdGF0ZSkKKyNkZWZpbmUgdHJhbnNfbWJ5dGVzKGRzdCwgc3JjLCBsZW4sIHN0YXRlKSBtYnNydG93Y3MoZHN0LCAmc3JjLCBsZW4sIHN0YXRlKQorI2RlZmluZSByZXNldF9tYnl0ZXMoc3RhdGUpIGluaXRfbWIoc3RhdGUpCisjZWxpZiBIQVZFX01CU1RPV0NTICYmIEhBVkVfTUJUT1dDICYmIEhBVkVfTUJMRU4KKyNkZWZpbmUgY291bnRfbWJ5dGVzKHNyYywgbGVuLCBzdGF0ZSkgICAgICBtYnN0b3djcygwLCAgIHNyYywgbGVuKQorI2RlZmluZSB0cmFuc19tYnl0ZXMoZHN0LCBzcmMsIGxlbiwgc3RhdGUpIG1ic3Rvd2NzKGRzdCwgc3JjLCBsZW4pCisjZGVmaW5lIHJlc2V0X21ieXRlcyhzdGF0ZSkgSUdOT1JFX1JDKG1ibGVuKE5VTEwsIDApKSwgSUdOT1JFX1JDKG1idG93YyhOVUxMLCBOVUxMLCAwKSkKKyNkZWZpbmUgc3RhdGVfdW51c2VkCisjZW5kaWYKKworI2RlZmluZSBUb2dnbGVBY3ModGVtcCxyZWFsKSB0ZW1wID0gKCh0ZW1wID09IHJlYWwpID8gMCA6IHJlYWwpCisKKyNkZWZpbmUgUChzdHJpbmcpCXByaW50dygiJXNcbiIsIHN0cmluZykKKworI2RlZmluZSBCTEFOSwkJJyAnCS8qIHRoaXMgaXMgdGhlIGJhY2tncm91bmQgY2hhcmFjdGVyICovCisKKyN1bmRlZiBtYXhfY29sb3JzCitzdGF0aWMgaW50IG1heF9jb2xvcnM7CQkvKiB0aGUgYWN0dWFsIG51bWJlciBvZiBjb2xvcnMgd2UnbGwgdXNlICovCitzdGF0aWMgaW50IG1pbl9jb2xvcnM7CQkvKiB0aGUgbWluaW11bSBjb2xvciBjb2RlICovCitzdGF0aWMgYm9vbCB1c2VfY29sb3JzOwkJLyogdHJ1ZSBpZiB3ZSB1c2UgY29sb3JzICovCisKKyN1bmRlZiBtYXhfcGFpcnMKK3N0YXRpYyBpbnQgbWF4X3BhaXJzOwkJLyogLi4uYW5kIHRoZSBudW1iZXIgb2YgY29sb3IgcGFpcnMgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIE5DVVJTRVNfQ09MT1JfVCByZWQ7CisgICAgTkNVUlNFU19DT0xPUl9UIGdyZWVuOworICAgIE5DVVJTRVNfQ09MT1JfVCBibHVlOworfSBSR0JfREFUQTsKKworc3RhdGljIFJHQl9EQVRBICphbGxfY29sb3JzOworCitzdGF0aWMgdm9pZCBtYWluX21lbnUoYm9vbCk7CisKK3N0YXRpYyB2b2lkCitmYWlsZWQoY29uc3QgY2hhciAqcykKK3sKKyAgICBwZXJyb3Iocyk7CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworLyogVGhlIGJlaGF2aW9yIG9mIG12aGxpbmUsIG12dmxpbmUgZm9yIG5lZ2F0aXZlL3plcm8gbGVuZ3RoIGlzIHVuc3BlY2lmaWVkLAorICogdGhvdWdoIHdlIGNhbiByZWx5IG9uIG5lZ2F0aXZlIHgveSB2YWx1ZXMgdG8gc3RvcCB0aGUgbWFjcm8uCisgKi8KK3N0YXRpYyB2b2lkCitkb19oX2xpbmUoaW50IHksIGludCB4LCBjaHR5cGUgYywgaW50IHRvKQoreworICAgIGlmICgodG8pID4gKHgpKQorCU12SExpbmUoeSwgeCwgYywgKHRvKSAtICh4KSk7Cit9CisKK3N0YXRpYyB2b2lkCitkb192X2xpbmUoaW50IHksIGludCB4LCBjaHR5cGUgYywgaW50IHRvKQoreworICAgIGlmICgodG8pID4gKHkpKQorCU12VkxpbmUoeSwgeCwgYywgKHRvKSAtICh5KSk7Cit9CisKK3N0YXRpYyB2b2lkCitSZXBhaW50KHZvaWQpCit7CisgICAgdG91Y2h3aW4oc3Rkc2NyKTsKKyAgICB0b3VjaHdpbihjdXJzY3IpOworICAgIHdyZWZyZXNoKGN1cnNjcik7Cit9CisKK3N0YXRpYyBib29sCitpc1F1aXQoaW50IGMpCit7CisgICAgcmV0dXJuICgoYykgPT0gUVVJVCB8fCAoYykgPT0gRVNDQVBFKTsKK30KKyNkZWZpbmUgY2FzZV9RVUlUCVFVSVQ6IGNhc2UgRVNDQVBFCisKKy8qIENvbW1vbiBmdW5jdGlvbiB0byBhbGxvdyBeVCB0byB0b2dnbGUgdHJhY2UtbW9kZSBpbiB0aGUgbWlkZGxlIG9mIGEgdGVzdAorICogc28gdGhhdCB0cmFjZS1maWxlcyBjYW4gYmUgbWFkZSBzbWFsbGVyLgorICovCitzdGF0aWMgaW50Cit3R2V0Y2hhcihXSU5ET1cgKndpbikKK3sKKyAgICBpbnQgYzsKKyNpZmRlZiBUUkFDRQorICAgIHdoaWxlICgoYyA9IHdnZXRjaCh3aW4pKSA9PSBDVFJMKCdUJykpIHsKKwlpZiAoX25jX3RyYWNpbmcpIHsKKwkgICAgc2F2ZV90cmFjZSA9IF9uY190cmFjaW5nOworCSAgICBUcmFjZSgoIlRPR0dMRS1UUkFDSU5HIE9GRiIpKTsKKwkgICAgX25jX3RyYWNpbmcgPSAwOworCX0gZWxzZSB7CisJICAgIF9uY190cmFjaW5nID0gc2F2ZV90cmFjZTsKKwl9CisJdHJhY2UoX25jX3RyYWNpbmcpOworCWlmIChfbmNfdHJhY2luZykKKwkgICAgVHJhY2UoKCJUT0dHTEUtVFJBQ0lORyBPTiIpKTsKKyAgICB9CisjZWxzZQorICAgIGMgPSB3Z2V0Y2god2luKTsKKyNlbmRpZgorICAgIHJldHVybiBjOworfQorI2RlZmluZSBHZXRjaGFyKCkgd0dldGNoYXIoc3Rkc2NyKQorCisvKiByZXBsYWNlcyB3Z2V0bnN0cigpLCBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZWRpdCB2YWx1ZXMgKi8KK3N0YXRpYyB2b2lkCit3R2V0c3RyaW5nKFdJTkRPVyAqd2luLCBjaGFyICpidWZmZXIsIGludCBsaW1pdCkKK3sKKyAgICBpbnQgeTAsIHgwLCB4LCBjaDsKKyAgICBib29sIGRvbmUgPSBGQUxTRTsKKworICAgIGVjaG8oKTsKKyAgICBnZXR5eCh3aW4sIHkwLCB4MCk7CisgICAgKHZvaWQpIHdhdHRyc2V0KHdpbiwgQV9SRVZFUlNFKTsKKworICAgIHggPSAoaW50KSBzdHJsZW4oYnVmZmVyKTsKKyAgICB3aGlsZSAoIWRvbmUpIHsKKwlpZiAoeCA+IChpbnQpIHN0cmxlbihidWZmZXIpKQorCSAgICB4ID0gKGludCkgc3RybGVuKGJ1ZmZlcik7CisJd21vdmUod2luLCB5MCwgeDApOworCXdwcmludHcod2luLCAiJS0qcyIsIGxpbWl0LCBidWZmZXIpOworCXdtb3ZlKHdpbiwgeTAsIHgwICsgeCk7CisJc3dpdGNoIChjaCA9IHdHZXRjaGFyKHdpbikpIHsKKwljYXNlICdcbic6CisJY2FzZSBLRVlfRU5URVI6CisJICAgIGRvbmUgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlIENUUkwoJ1UnKToKKwkgICAgKmJ1ZmZlciA9ICdcMCc7CisJICAgIGJyZWFrOworCWNhc2UgJ1xiJzoKKwljYXNlIEtFWV9CQUNLU1BBQ0U6CisJY2FzZSBLRVlfREM6CisJICAgIGlmICh4ID4gMCkgeworCQlpbnQgajsKKwkJZm9yIChqID0gLS14OyAoYnVmZmVyW2pdID0gYnVmZmVyW2ogKyAxXSkgIT0gJ1wwJzsgKytqKSB7CisJCSAgICA7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGlmICh4ID4gMCkgeworCQktLXg7CisJICAgIH0gZWxzZSB7CisJCWZsYXNoKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfUklHSFQ6CisJICAgICsreDsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgaWYgKCFpc3ByaW50KGNoKSB8fCBjaCA+PSBLRVlfTUlOKSB7CisJCWJlZXAoKTsKKwkgICAgfSBlbHNlIGlmICgoaW50KSBzdHJsZW4oYnVmZmVyKSA8IGxpbWl0KSB7CisJCWludCBqOworCQlmb3IgKGogPSAoaW50KSBzdHJsZW4oYnVmZmVyKSArIDE7IGogPiB4OyAtLWopIHsKKwkJICAgIGJ1ZmZlcltqXSA9IGJ1ZmZlcltqIC0gMV07CisJCX0KKwkJYnVmZmVyW3grK10gPSAoY2hhcikgY2g7CisJICAgIH0gZWxzZSB7CisJCWZsYXNoKCk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgd2F0dHJvZmYod2luLCBBX1JFVkVSU0UpOworICAgIHdtb3ZlKHdpbiwgeTAsIHgwKTsKKyAgICBub2VjaG8oKTsKK30KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCitzdGF0aWMgd2NoYXJfdAorZnVsbHdpZHRoX2RpZ2l0KGludCBjaCkKK3sKKyAgICByZXR1cm4gKHdjaGFyX3QpIChjaCArIDB4ZmYxMCAtICcwJyk7Cit9CisKK3N0YXRpYyB2b2lkCittYWtlX2Z1bGx3aWR0aF90ZXh0KHdjaGFyX3QgKnRhcmdldCwgY29uc3QgY2hhciAqc291cmNlKQoreworICAgIGludCBjaDsKKyAgICB3aGlsZSAoKGNoID0gKnNvdXJjZSsrKSAhPSAwKSB7CisJKnRhcmdldCsrID0gZnVsbHdpZHRoX2RpZ2l0KGNoKTsKKyAgICB9CisgICAgKnRhcmdldCA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCittYWtlX25hcnJvd190ZXh0KHdjaGFyX3QgKnRhcmdldCwgY29uc3QgY2hhciAqc291cmNlKQoreworICAgIGludCBjaDsKKyAgICB3aGlsZSAoKGNoID0gKnNvdXJjZSsrKSAhPSAwKSB7CisJKnRhcmdldCsrID0gKHdjaGFyX3QpIGNoOworICAgIH0KKyAgICAqdGFyZ2V0ID0gMDsKK30KKworI2lmIFVTRV9MSUJQQU5FTAorc3RhdGljIHZvaWQKK21ha2VfZnVsbHdpZHRoX2RpZ2l0KGNjaGFyX3QgKnRhcmdldCwgaW50IGRpZ2l0KQoreworICAgIHdjaGFyX3Qgc291cmNlWzJdOworCisgICAgc291cmNlWzBdID0gZnVsbHdpZHRoX2RpZ2l0KGRpZ2l0ICsgJzAnKTsKKyAgICBzb3VyY2VbMV0gPSAwOworICAgIHNldGNjaGFyKHRhcmdldCwgc291cmNlLCBBX05PUk1BTCwgMCwgMCk7Cit9CisjZW5kaWYKKworc3RhdGljIGludAord0dldF93Y2hhcihXSU5ET1cgKndpbiwgd2ludF90ICpyZXN1bHQpCit7CisgICAgaW50IGM7CisjaWZkZWYgVFJBQ0UKKyAgICB3aGlsZSAoKGMgPSB3Z2V0X3djaCh3aW4sIHJlc3VsdCkpID09IENUUkwoJ1QnKSkgeworCWlmIChfbmNfdHJhY2luZykgeworCSAgICBzYXZlX3RyYWNlID0gX25jX3RyYWNpbmc7CisJICAgIFRyYWNlKCgiVE9HR0xFLVRSQUNJTkcgT0ZGIikpOworCSAgICBfbmNfdHJhY2luZyA9IDA7CisJfSBlbHNlIHsKKwkgICAgX25jX3RyYWNpbmcgPSBzYXZlX3RyYWNlOworCX0KKwl0cmFjZShfbmNfdHJhY2luZyk7CisJaWYgKF9uY190cmFjaW5nKQorCSAgICBUcmFjZSgoIlRPR0dMRS1UUkFDSU5HIE9OIikpOworICAgIH0KKyNlbHNlCisgICAgYyA9IHdnZXRfd2NoKHdpbiwgcmVzdWx0KTsKKyNlbmRpZgorICAgIHJldHVybiBjOworfQorI2RlZmluZSBHZXRfd2NoYXIocmVzdWx0KSB3R2V0X3djaGFyKHN0ZHNjciwgcmVzdWx0KQorCisvKiByZXBsYWNlcyB3Z2V0bl93c3RyKCksIHNpbmNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBlZGl0IHZhbHVlcyAqLworc3RhdGljIHZvaWQKK3dHZXRfd3N0cmluZyhXSU5ET1cgKndpbiwgd2NoYXJfdCAqYnVmZmVyLCBpbnQgbGltaXQpCit7CisgICAgaW50IHkwLCB4MCwgeDsKKyAgICB3aW50X3QgY2g7CisgICAgYm9vbCBkb25lID0gRkFMU0U7CisgICAgYm9vbCBma2V5ID0gRkFMU0U7CisKKyAgICBlY2hvKCk7CisgICAgZ2V0eXgod2luLCB5MCwgeDApOworICAgICh2b2lkKSB3YXR0cnNldCh3aW4sIEFfUkVWRVJTRSk7CisKKyAgICB4ID0gKGludCkgd2NzbGVuKGJ1ZmZlcik7CisgICAgd2hpbGUgKCFkb25lKSB7CisJaWYgKHggPiAoaW50KSB3Y3NsZW4oYnVmZmVyKSkKKwkgICAgeCA9IChpbnQpIHdjc2xlbihidWZmZXIpOworCisJLyogY2xlYXIgdGhlICJ3aW5kb3cnICovCisJd21vdmUod2luLCB5MCwgeDApOworCXdwcmludHcod2luLCAiJSpzIiwgbGltaXQsICIgIik7CisKKwkvKiB3cml0ZSB0aGUgZXhpc3RpbmcgYnVmZmVyIGNvbnRlbnRzICovCisJd21vdmUod2luLCB5MCwgeDApOworCXdhZGRud3N0cih3aW4sIGJ1ZmZlciwgbGltaXQpOworCisJLyogcG9zaXRpb25zIHRoZSBjdXJzb3IgcGFzdCBjaGFyYWN0ZXIgJ3gnICovCisJd21vdmUod2luLCB5MCwgeDApOworCXdhZGRud3N0cih3aW4sIGJ1ZmZlciwgeCk7CisKKwlzd2l0Y2ggKHdHZXRfd2NoYXIod2luLCAmY2gpKSB7CisJY2FzZSBLRVlfQ09ERV9ZRVM6CisJICAgIGZrZXkgPSBUUlVFOworCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgS0VZX0VOVEVSOgorCQljaCA9ICdcbic7CisJCWZrZXkgPSBGQUxTRTsKKwkJYnJlYWs7CisJICAgIGNhc2UgS0VZX0JBQ0tTUEFDRToKKwkgICAgY2FzZSBLRVlfREM6CisJCWNoID0gJ1xiJzsKKwkJZmtleSA9IEZBTFNFOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfTEVGVDoKKwkgICAgY2FzZSBLRVlfUklHSFQ6CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQljaCA9ICh3aW50X3QpIC0xOworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIE9LOgorCSAgICBma2V5ID0gRkFMU0U7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGNoID0gKHdpbnRfdCkgLTE7CisJICAgIGZrZXkgPSBUUlVFOworCSAgICBicmVhazsKKwl9CisKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnXG4nOgorCSAgICBkb25lID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSBDVFJMKCdVJyk6CisJICAgICpidWZmZXIgPSAnXDAnOworCSAgICBicmVhazsKKwljYXNlICdcYic6CisJICAgIGlmICh4ID4gMCkgeworCQlpbnQgajsKKwkJZm9yIChqID0gLS14OyAoYnVmZmVyW2pdID0gYnVmZmVyW2ogKyAxXSkgIT0gJ1wwJzsgKytqKSB7CisJCSAgICA7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGlmICh4ID4gMCkgeworCQktLXg7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIEtFWV9SSUdIVDoKKwkgICAgKyt4OworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBpZiAoZmtleSkgeworCQliZWVwKCk7CisJICAgIH0gZWxzZSBpZiAoKGludCkgd2NzbGVuKGJ1ZmZlcikgPCBsaW1pdCkgeworCQlpbnQgajsKKwkJZm9yIChqID0gKGludCkgd2NzbGVuKGJ1ZmZlcikgKyAxOyBqID4geDsgLS1qKSB7CisJCSAgICBidWZmZXJbal0gPSBidWZmZXJbaiAtIDFdOworCQl9CisJCWJ1ZmZlclt4KytdID0gKHdjaGFyX3QpIGNoOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgd2F0dHJvZmYod2luLCBBX1JFVkVSU0UpOworICAgIHdtb3ZlKHdpbiwgeTAsIHgwKTsKKyAgICBub2VjaG8oKTsKK30KKworI2VuZGlmCisKK3N0YXRpYyB2b2lkCitQYXVzZSh2b2lkKQoreworICAgIG1vdmUoTElORVMgLSAxLCAwKTsKKyAgICBhZGRzdHIoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4gIik7CisgICAgKHZvaWQpIEdldGNoYXIoKTsKK30KKworc3RhdGljIHZvaWQKK0Nhbm5vdChjb25zdCBjaGFyICp3aGF0KQoreworICAgIHByaW50dygiXG5UaGlzICVzIHRlcm1pbmFsICVzXG5cbiIsIGdldGVudigiVEVSTSIpLCB3aGF0KTsKKyAgICBQYXVzZSgpOworfQorCitzdGF0aWMgdm9pZAorU2hlbGxPdXQoYm9vbCBtZXNzYWdlKQoreworICAgIGlmIChtZXNzYWdlKQorCWFkZHN0cigiU2hlbGxpbmcgb3V0Li4uIik7CisgICAgZGVmX3Byb2dfbW9kZSgpOworICAgIGVuZHdpbigpOworI2lmZGVmIF9fTUlOR1czMl9fCisgICAgc3lzdGVtKCJjbWQuZXhlIik7CisjZWxzZQorICAgIElHTk9SRV9SQyhzeXN0ZW0oInNoIikpOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2UpCisJYWRkc3RyKCJyZXR1cm5lZCBmcm9tIHNoZWxsb3V0LlxuIik7CisgICAgcmVmcmVzaCgpOworfQorCisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBfdHJhY2Vtb3VzZSgpLCBidXQgd2UgY2Fubm90IGNvdW50IG9uIHRoYXQKKyAqIGJlaW5nIGF2YWlsYWJsZSBpbiB0aGUgbm9uLWRlYnVnIGxpYnJhcnkuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK21vdXNlX2RlY29kZShNRVZFTlQgY29uc3QgKmVwKQoreworICAgIHN0YXRpYyBjaGFyIGJ1Zls4MCArICg1ICogMTApICsgKDMyICogMTUpXTsKKworICAgICh2b2lkKSBzcHJpbnRmKGJ1ZiwgImlkICUyZCBhdCAoJTJkLCAlMmQsICVkKSBzdGF0ZSAlNGx4ID0geyIsCisJCSAgIGVwLT5pZCwgZXAtPngsIGVwLT55LCBlcC0+eiwgKHVuc2lnbmVkIGxvbmcpIGVwLT5ic3RhdGUpOworCisjZGVmaW5lIFNIT1cobSwgcykgaWYgKChlcC0+YnN0YXRlICYgbSk9PW0pIHtzdHJjYXQoYnVmLHMpOyBzdHJjYXQoYnVmLCAiLCAiKTt9CisKKyAgICBTSE9XKEJVVFRPTjFfUkVMRUFTRUQsICJyZWxlYXNlLTEiKTsKKyAgICBTSE9XKEJVVFRPTjFfUFJFU1NFRCwgInByZXNzLTEiKTsKKyAgICBTSE9XKEJVVFRPTjFfQ0xJQ0tFRCwgImNsaWNrLTEiKTsKKyAgICBTSE9XKEJVVFRPTjFfRE9VQkxFX0NMSUNLRUQsICJkb3VibGVjbGljay0xIik7CisgICAgU0hPVyhCVVRUT04xX1RSSVBMRV9DTElDS0VELCAidHJpcGxlY2xpY2stMSIpOworI2lmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiA9PSAxCisgICAgU0hPVyhCVVRUT04xX1JFU0VSVkVEX0VWRU5ULCAicmVzZXJ2ZWQtMSIpOworI2VuZGlmCisKKyAgICBTSE9XKEJVVFRPTjJfUkVMRUFTRUQsICJyZWxlYXNlLTIiKTsKKyAgICBTSE9XKEJVVFRPTjJfUFJFU1NFRCwgInByZXNzLTIiKTsKKyAgICBTSE9XKEJVVFRPTjJfQ0xJQ0tFRCwgImNsaWNrLTIiKTsKKyAgICBTSE9XKEJVVFRPTjJfRE9VQkxFX0NMSUNLRUQsICJkb3VibGVjbGljay0yIik7CisgICAgU0hPVyhCVVRUT04yX1RSSVBMRV9DTElDS0VELCAidHJpcGxlY2xpY2stMiIpOworI2lmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiA9PSAxCisgICAgU0hPVyhCVVRUT04yX1JFU0VSVkVEX0VWRU5ULCAicmVzZXJ2ZWQtMiIpOworI2VuZGlmCisKKyAgICBTSE9XKEJVVFRPTjNfUkVMRUFTRUQsICJyZWxlYXNlLTMiKTsKKyAgICBTSE9XKEJVVFRPTjNfUFJFU1NFRCwgInByZXNzLTMiKTsKKyAgICBTSE9XKEJVVFRPTjNfQ0xJQ0tFRCwgImNsaWNrLTMiKTsKKyAgICBTSE9XKEJVVFRPTjNfRE9VQkxFX0NMSUNLRUQsICJkb3VibGVjbGljay0zIik7CisgICAgU0hPVyhCVVRUT04zX1RSSVBMRV9DTElDS0VELCAidHJpcGxlY2xpY2stMyIpOworI2lmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiA9PSAxCisgICAgU0hPVyhCVVRUT04zX1JFU0VSVkVEX0VWRU5ULCAicmVzZXJ2ZWQtMyIpOworI2VuZGlmCisKKyAgICBTSE9XKEJVVFRPTjRfUkVMRUFTRUQsICJyZWxlYXNlLTQiKTsKKyAgICBTSE9XKEJVVFRPTjRfUFJFU1NFRCwgInByZXNzLTQiKTsKKyAgICBTSE9XKEJVVFRPTjRfQ0xJQ0tFRCwgImNsaWNrLTQiKTsKKyAgICBTSE9XKEJVVFRPTjRfRE9VQkxFX0NMSUNLRUQsICJkb3VibGVjbGljay00Iik7CisgICAgU0hPVyhCVVRUT040X1RSSVBMRV9DTElDS0VELCAidHJpcGxlY2xpY2stNCIpOworI2lmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTiA9PSAxCisgICAgU0hPVyhCVVRUT040X1JFU0VSVkVEX0VWRU5ULCAicmVzZXJ2ZWQtNCIpOworI2VuZGlmCisKKyNpZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gPT0gMgorICAgIFNIT1coQlVUVE9ONV9SRUxFQVNFRCwgInJlbGVhc2UtNSIpOworICAgIFNIT1coQlVUVE9ONV9QUkVTU0VELCAicHJlc3MtNSIpOworICAgIFNIT1coQlVUVE9ONV9DTElDS0VELCAiY2xpY2stNSIpOworICAgIFNIT1coQlVUVE9ONV9ET1VCTEVfQ0xJQ0tFRCwgImRvdWJsZWNsaWNrLTUiKTsKKyAgICBTSE9XKEJVVFRPTjVfVFJJUExFX0NMSUNLRUQsICJ0cmlwbGVjbGljay01Iik7CisjZW5kaWYKKworICAgIFNIT1coQlVUVE9OX0NUUkwsICJjdHJsIik7CisgICAgU0hPVyhCVVRUT05fU0hJRlQsICJzaGlmdCIpOworICAgIFNIT1coQlVUVE9OX0FMVCwgImFsdCIpOworICAgIFNIT1coQUxMX01PVVNFX0VWRU5UUywgImFsbC1ldmVudHMiKTsKKyAgICBTSE9XKFJFUE9SVF9NT1VTRV9QT1NJVElPTiwgInBvc2l0aW9uIik7CisKKyN1bmRlZiBTSE9XCisKKyAgICBpZiAoYnVmW3N0cmxlbihidWYpIC0gMV0gPT0gJyAnKQorCWJ1ZltzdHJsZW4oYnVmKSAtIDJdID0gJ1wwJzsKKyAgICAodm9pZCkgc3RyY2F0KGJ1ZiwgIn0iKTsKKyAgICByZXR1cm4gKGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X21vdXNlKFdJTkRPVyAqd2luKQoreworICAgIGludCB5LCB4OworICAgIE1FVkVOVCBldmVudDsKKyAgICBib29sIG91dHNpZGU7CisgICAgYm9vbCBzaG93X2xvYzsKKworICAgIGdldG1vdXNlKCZldmVudCk7CisgICAgb3V0c2lkZSA9ICF3ZW5jbG9zZSh3aW4sIGV2ZW50LnksIGV2ZW50LngpOworCisgICAgaWYgKG91dHNpZGUpIHsKKwkodm9pZCkgd3N0YW5kb3V0KHdpbik7CisJd2FkZHN0cih3aW4sICJLRVlfTU9VU0UiKTsKKwkodm9pZCkgd3N0YW5kZW5kKHdpbik7CisgICAgfSBlbHNlIHsKKwl3YWRkc3RyKHdpbiwgIktFWV9NT1VTRSIpOworICAgIH0KKyAgICB3cHJpbnR3KHdpbiwgIiwgJXMiLCBtb3VzZV9kZWNvZGUoJmV2ZW50KSk7CisKKyAgICBpZiAob3V0c2lkZSkKKwl3aW4gPSBzdGRzY3I7CisKKyAgICBzaG93X2xvYyA9IHdtb3VzZV90cmFmbyh3aW4sICZldmVudC55LCAmZXZlbnQueCwgRkFMU0UpOworCisgICAgaWYgKHNob3dfbG9jKSB7CisJZ2V0eXgod2luLCB5LCB4KTsKKwl3bW92ZSh3aW4sIGV2ZW50LnksIGV2ZW50LngpOworCXdhZGRjaCh3aW4sICcqJyk7CisJd21vdmUod2luLCB5LCB4KTsKKyAgICB9CisKKyAgICBpZiAob3V0c2lkZSkKKwl3bm91dHJlZnJlc2god2luKTsKK30KKyNlbmRpZiAvKiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04gKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDaGFyYWN0ZXIgaW5wdXQgdGVzdAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIE5VTV9HRVRDSF9GTEFHUyAyNTYKK3R5cGVkZWYgYm9vbCBHZXRjaEZsYWdzW05VTV9HRVRDSF9GTEFHU107CisKK3N0YXRpYyB2b2lkCitzZXR1cF9nZXRjaChXSU5ET1cgKndpbiwgR2V0Y2hGbGFncyBmbGFncykKK3sKKyAgICBrZXlwYWQod2luLCBmbGFnc1snayddKTsJLyogc2hvdWxkIGJlIHJlZHVuZGFudCwgYnV0IGZvciB0ZXN0aW5nICovCisgICAgbWV0YSh3aW4sIGZsYWdzWydtJ10pOwkvKiBmb3JjZSB0aGlzIHRvIGEga25vd24gc3RhdGUgKi8KKyAgICBpZiAoZmxhZ3NbJ2UnXSkKKwllY2hvKCk7CisgICAgZWxzZQorCW5vZWNobygpOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9nZXRjaChXSU5ET1cgKndpbiwgR2V0Y2hGbGFncyBmbGFncykKK3sKKyAgICBtZW1zZXQoZmxhZ3MsIEZBTFNFLCBOVU1fR0VUQ0hfRkxBR1MpOworICAgIGZsYWdzW1VDaGFyKCdrJyldID0gKHdpbiA9PSBzdGRzY3IpOworICAgIGZsYWdzW1VDaGFyKCdtJyldID0gVFJVRTsKKworICAgIHNldHVwX2dldGNoKHdpbiwgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZAord2dldGNoX2hlbHAoV0lORE9XICp3aW4sIEdldGNoRmxhZ3MgZmxhZ3MpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmhlbHBbXSA9CisgICAgeworCSJlICAtLSB0b2dnbGUgZWNobyBtb2RlIgorCSwiZyAgLS0gdHJpZ2dlcnMgYSBnZXRzdHIgdGVzdCIKKwksImsgIC0tIHRvZ2dsZSBrZXlwYWQvbGl0ZXJhbCBtb2RlIgorCSwibSAgLS0gdG9nZ2xlIG1ldGEgKDctYml0LzgtYml0KSBtb2RlIgorCSwiXnEgLS0gcXVpdCIKKwksInMgIC0tIHNoZWxsIG91dFxuIgorCSwidyAgLS0gY3JlYXRlIGEgbmV3IHdpbmRvdyIKKyNpZmRlZiBTSUdUU1RQCisJLCJ6ICAtLSBzdXNwZW5kIHRoaXMgcHJvY2VzcyIKKyNlbmRpZgorICAgIH07CisgICAgaW50IHksIHg7CisgICAgdW5zaWduZWQgY2hrID0gKChTSVpFT0YoaGVscCkgKyAxKSAvIDIpOworICAgIHVuc2lnbmVkIG47CisKKyAgICBnZXR5eCh3aW4sIHksIHgpOworICAgIG1vdmUoMCwgMCk7CisgICAgcHJpbnR3KCJUeXBlIGFueSBrZXkgdG8gc2VlIGl0cyAlcyB2YWx1ZS4gIEFsc286XG4iLAorCSAgIGZsYWdzWydrJ10gPyAia2V5cGFkIiA6ICJsaXRlcmFsIik7CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihoZWxwKTsgKytuKSB7CisJaW50IHJvdyA9IDEgKyAoaW50KSAobiAlIGNoayk7CisJaW50IGNvbCA9IChuID49IGNoaykgPyBDT0xTIC8gMiA6IDA7CisJaW50IGZsZyA9ICgoc3Ryc3RyKGhlbHBbbl0sICJ0b2dnbGUiKSAhPSAwKQorCQkgICAmJiAoZmxhZ3NbVUNoYXIoKmhlbHBbbl0pXSAhPSBGQUxTRSkpOworCWlmIChmbGcpCisJICAgICh2b2lkKSBzdGFuZG91dCgpOworCU12UHJpbnR3KHJvdywgY29sLCAiJXMiLCBoZWxwW25dKTsKKwlpZiAoY29sID09IDApCisJICAgIGNscnRvZW9sKCk7CisJaWYgKGZsZykKKwkgICAgKHZvaWQpIHN0YW5kZW5kKCk7CisgICAgfQorICAgIHdyZWZyZXNoKHN0ZHNjcik7CisgICAgd21vdmUod2luLCB5LCB4KTsKK30KKworc3RhdGljIHZvaWQKK3dnZXRjaF93cmFwKFdJTkRPVyAqd2luLCBpbnQgZmlyc3RfeSkKK3sKKyAgICBpbnQgbGFzdF95ID0gZ2V0bWF4eSh3aW4pIC0gMTsKKyAgICBpbnQgeSA9IGdldGN1cnkod2luKSArIDE7CisKKyAgICBpZiAoeSA+PSBsYXN0X3kpCisJeSA9IGZpcnN0X3k7CisgICAgd21vdmUod2luLCB5LCAwKTsKKyAgICB3Y2xydG9lb2wod2luKTsKK30KKworI2lmIGRlZmluZWQoS0VZX1JFU0laRSkgJiYgSEFWRV9XUkVTSVpFCit0eXBlZGVmIHN0cnVjdCB7CisgICAgV0lORE9XICp0ZXh0OworICAgIFdJTkRPVyAqZnJhbWU7Cit9IFdJTlNUQUNLOworCitzdGF0aWMgV0lOU1RBQ0sgKndpbnN0YWNrID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBsZW5fd2luc3RhY2sgPSAwOworCitzdGF0aWMgdm9pZAorZm9yZ2V0X2JveGVzKHZvaWQpCit7CisgICAgaWYgKHdpbnN0YWNrICE9IDApIHsKKwlmcmVlKHdpbnN0YWNrKTsKKyAgICB9CisgICAgd2luc3RhY2sgPSAwOworICAgIGxlbl93aW5zdGFjayA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCityZW1lbWJlcl9ib3hlcyh1bnNpZ25lZCBsZXZlbCwgV0lORE9XICp0eHRfd2luLCBXSU5ET1cgKmJveF93aW4pCit7CisgICAgdW5zaWduZWQgbmVlZCA9IChsZXZlbCArIDEpICogMjsKKworICAgIGFzc2VydChsZXZlbCA8ICh1bnNpZ25lZCkgQ09MUyk7CisKKyAgICBpZiAod2luc3RhY2sgPT0gMCkgeworCWxlbl93aW5zdGFjayA9IDIwOworCXdpbnN0YWNrID0gdHlwZU1hbGxvYyhXSU5TVEFDSywgbGVuX3dpbnN0YWNrKTsKKyAgICB9IGVsc2UgaWYgKG5lZWQgPj0gbGVuX3dpbnN0YWNrKSB7CisJbGVuX3dpbnN0YWNrID0gbmVlZDsKKwl3aW5zdGFjayA9IHR5cGVSZWFsbG9jKFdJTlNUQUNLLCBsZW5fd2luc3RhY2ssIHdpbnN0YWNrKTsKKyAgICB9CisgICAgaWYgKCF3aW5zdGFjaykKKwlmYWlsZWQoInJlbWVtYmVyX2JveGVzIik7CisgICAgd2luc3RhY2tbbGV2ZWxdLnRleHQgPSB0eHRfd2luOworICAgIHdpbnN0YWNrW2xldmVsXS5mcmFtZSA9IGJveF93aW47Cit9CisKKyNpZiBVU0VfU09GVEtFWVMgJiYgKGRlZmluZWQoTkNVUlNFU19WRVJTSU9OX1BBVENIKSAmJiBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggPCAyMDA3MTIyOSkgJiYgTkNVUlNFU19FWFRfRlVOQ1MKK3N0YXRpYyB2b2lkCitzbGtfcmVwYWludCh2b2lkKQoreworICAgIC8qIHRoaXMgY2h1bmsgaXMgbm93IGRvbmUgaW4gcmVzaXplX3Rlcm0oKSAqLworICAgIHNsa190b3VjaCgpOworICAgIHNsa19jbGVhcigpOworICAgIHNsa19ub3V0cmVmcmVzaCgpOworfQorCisjZWxzZQorI2RlZmluZSBzbGtfcmVwYWludCgpCQkvKiBub3RoaW5nICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKEtFWV9SRVNJWkUpICYmIEhBVkVfV1JFU0laRQorLyoKKyAqIEZvciB3Z2V0Y2hfdGVzdCgpLCB3ZSBjcmVhdGUgcGFpcnMgb2Ygd2luZG93cyAtIG9uZSBmb3IgYSBib3gsIG9uZSBmb3IgdGV4dC4KKyAqIFJlc2l6ZSBib3RoIGFuZCBwYWludCB0aGUgYm94IGluIHRoZSBwYXJlbnQuCisgKi8KK3N0YXRpYyB2b2lkCityZXNpemVfYm94ZXModW5zaWduZWQgbGV2ZWwsIFdJTkRPVyAqd2luKQoreworICAgIHVuc2lnbmVkIG47CisgICAgaW50IGJhc2UgPSA1OworICAgIGludCBoaWdoID0gTElORVMgLSBiYXNlOworICAgIGludCB3aWRlID0gQ09MUzsKKworICAgIHRvdWNod2luKHN0ZHNjcik7CisgICAgd25vdXRyZWZyZXNoKHN0ZHNjcik7CisKKyAgICBzbGtfcmVwYWludCgpOworCisgICAgZm9yIChuID0gMDsgbiA8IGxldmVsOyArK24pIHsKKwl3cmVzaXplKHdpbnN0YWNrW25dLmZyYW1lLCBoaWdoLCB3aWRlKTsKKwl3cmVzaXplKHdpbnN0YWNrW25dLnRleHQsIGhpZ2ggLSAyLCB3aWRlIC0gMik7CisJaGlnaCAtPSAyOworCXdpZGUgLT0gMjsKKwl3ZXJhc2Uod2luc3RhY2tbbl0udGV4dCk7CisJYm94KHdpbnN0YWNrW25dLmZyYW1lLCAwLCAwKTsKKwl3bm91dHJlZnJlc2god2luc3RhY2tbbl0uZnJhbWUpOworCXdwcmludHcod2luc3RhY2tbbl0udGV4dCwKKwkJInNpemUgJWR4JWRcbiIsCisJCWdldG1heHkod2luc3RhY2tbbl0udGV4dCksCisJCWdldG1heHgod2luc3RhY2tbbl0udGV4dCkpOworCXdub3V0cmVmcmVzaCh3aW5zdGFja1tuXS50ZXh0KTsKKwlpZiAod2luc3RhY2tbbl0udGV4dCA9PSB3aW4pCisJICAgIGJyZWFrOworICAgIH0KKyAgICBkb3VwZGF0ZSgpOworfQorI2VuZGlmIC8qIHJlc2l6ZV9ib3hlcyAqLworI2Vsc2UKKyNkZWZpbmUgZm9yZ2V0X2JveGVzKCkJCS8qIG5vdGhpbmcgKi8KKyNkZWZpbmUgcmVtZW1iZXJfYm94ZXMobGV2ZWwsdGV4dCxmcmFtZSkJLyogbm90aGluZyAqLworI2VuZGlmCisKKy8qCisgKiBSZXR1cm4tY29kZSBpcyBPSy9FUlIgb3IgYSBrZXluYW1lLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCitva19rZXluYW1lKGludCBjb2RlKQoreworICAgIHJldHVybiAoKGNvZGUgPT0gT0spID8gIk9LIiA6ICgoY29kZSA9PSBFUlIpID8gIkVSUiIgOiBrZXluYW1lKGNvZGUpKSk7Cit9CisKK3N0YXRpYyB2b2lkCit3Z2V0Y2hfdGVzdCh1bnNpZ25lZCBsZXZlbCwgV0lORE9XICp3aW4sIGludCBkZWxheSkKK3sKKyAgICBjaGFyIGJ1ZltCVUZTSVpdOworICAgIGludCBmaXJzdF95LCBmaXJzdF94OworICAgIGludCBjOworICAgIGludCBpbmNvdW50ID0gMDsKKyAgICBHZXRjaEZsYWdzIGZsYWdzOworICAgIGJvb2wgYmxvY2tpbmcgPSAoZGVsYXkgPCAwKTsKKworICAgIGluaXRfZ2V0Y2god2luLCBmbGFncyk7CisgICAgd3RpbWVvdXQod2luLCBkZWxheSk7CisgICAgZ2V0eXgod2luLCBmaXJzdF95LCBmaXJzdF94KTsKKworICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworICAgIHdzZXRzY3JyZWcod2luLCBmaXJzdF95LCBnZXRtYXh5KHdpbikgLSAxKTsKKyAgICBzY3JvbGxvayh3aW4sIFRSVUUpOworCisgICAgZm9yICg7OykgeworCXdoaWxlICgoYyA9IHdHZXRjaGFyKHdpbikpID09IEVSUikgeworCSAgICBpbmNvdW50Kys7CisJICAgIGlmIChibG9ja2luZykgeworCQkodm9pZCkgd3ByaW50dyh3aW4sICIlMDVkOiBpbnB1dCBlcnJvciIsIGluY291bnQpOworCQlicmVhazsKKwkgICAgfSBlbHNlIHsKKwkJKHZvaWQpIHdwcmludHcod2luLCAiJTA1ZDogaW5wdXQgdGltZWQgb3V0IiwgaW5jb3VudCk7CisJICAgIH0KKwkgICAgd2dldGNoX3dyYXAod2luLCBmaXJzdF95KTsKKwl9CisJaWYgKGMgPT0gRVJSICYmIGJsb2NraW5nKSB7CisJICAgIHdwcmludHcod2luLCAiRVJSIik7CisJICAgIHdnZXRjaF93cmFwKHdpbiwgZmlyc3RfeSk7CisJfSBlbHNlIGlmIChpc1F1aXQoYykpIHsKKwkgICAgYnJlYWs7CisJfSBlbHNlIGlmIChjID09ICdlJykgeworCSAgICBmbGFnc1tVQ2hhcignZScpXSA9ICFmbGFnc1tVQ2hhcignZScpXTsKKwkgICAgc2V0dXBfZ2V0Y2god2luLCBmbGFncyk7CisJICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworCX0gZWxzZSBpZiAoYyA9PSAnZycpIHsKKwkgICAgd2FkZHN0cih3aW4sICJnZXRzdHIgdGVzdDogIik7CisJICAgIGVjaG8oKTsKKwkgICAgYyA9IHdnZXRuc3RyKHdpbiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworCSAgICBub2VjaG8oKTsKKwkgICAgd3ByaW50dyh3aW4sICJJIHNhdyAlZCBjaGFyYWN0ZXJzOlxuXHRgJXMnICglcykuIiwKKwkJICAgIChpbnQpIHN0cmxlbihidWYpLCBidWYsCisJCSAgICBva19rZXluYW1lKGMpKTsKKwkgICAgd2NscnRvZW9sKHdpbik7CisJICAgIHdnZXRjaF93cmFwKHdpbiwgZmlyc3RfeSk7CisJfSBlbHNlIGlmIChjID09ICdrJykgeworCSAgICBmbGFnc1tVQ2hhcignaycpXSA9ICFmbGFnc1tVQ2hhcignaycpXTsKKwkgICAgc2V0dXBfZ2V0Y2god2luLCBmbGFncyk7CisJICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworCX0gZWxzZSBpZiAoYyA9PSAnbScpIHsKKwkgICAgZmxhZ3NbVUNoYXIoJ20nKV0gPSAhZmxhZ3NbVUNoYXIoJ20nKV07CisJICAgIHNldHVwX2dldGNoKHdpbiwgZmxhZ3MpOworCSAgICB3Z2V0Y2hfaGVscCh3aW4sIGZsYWdzKTsKKwl9IGVsc2UgaWYgKGMgPT0gJ3MnKSB7CisJICAgIFNoZWxsT3V0KFRSVUUpOworCX0gZWxzZSBpZiAoYyA9PSAndycpIHsKKwkgICAgaW50IGhpZ2ggPSBnZXRtYXh5KHdpbikgLSAxIC0gZmlyc3RfeSArIDE7CisJICAgIGludCB3aWRlID0gZ2V0bWF4eCh3aW4pIC0gZmlyc3RfeDsKKwkgICAgaW50IG9sZF95LCBvbGRfeDsKKwkgICAgaW50IG5ld195ID0gZmlyc3RfeSArIGdldGJlZ3kod2luKTsKKwkgICAgaW50IG5ld194ID0gZmlyc3RfeCArIGdldGJlZ3god2luKTsKKworCSAgICBnZXR5eCh3aW4sIG9sZF95LCBvbGRfeCk7CisJICAgIGlmIChoaWdoID4gMiAmJiB3aWRlID4gMikgeworCQlXSU5ET1cgKndiID0gbmV3d2luKGhpZ2gsIHdpZGUsIG5ld195LCBuZXdfeCk7CisJCVdJTkRPVyAqd2kgPSBuZXd3aW4oaGlnaCAtIDIsIHdpZGUgLSAyLCBuZXdfeSArIDEsIG5ld194ICsgMSk7CisKKwkJYm94KHdiLCAwLCAwKTsKKwkJd3JlZnJlc2god2IpOworCQl3bW92ZSh3aSwgMCwgMCk7CisJCXJlbWVtYmVyX2JveGVzKGxldmVsLCB3aSwgd2IpOworCQl3Z2V0Y2hfdGVzdChsZXZlbCArIDEsIHdpLCBkZWxheSk7CisJCWRlbHdpbih3aSk7CisJCWRlbHdpbih3Yik7CisKKwkJd2dldGNoX2hlbHAod2luLCBmbGFncyk7CisJCXdtb3ZlKHdpbiwgb2xkX3ksIG9sZF94KTsKKwkJdG91Y2h3aW4od2luKTsKKwkJd3JlZnJlc2god2luKTsKKwkJZG91cGRhdGUoKTsKKwkgICAgfQorI2lmZGVmIFNJR1RTVFAKKwl9IGVsc2UgaWYgKGMgPT0gJ3onKSB7CisJICAgIGtpbGwoZ2V0cGlkKCksIFNJR1RTVFApOworI2VuZGlmCisJfSBlbHNlIHsKKwkgICAgd3ByaW50dyh3aW4sICJLZXkgcHJlc3NlZDogJTA0byAiLCBjKTsKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKwkgICAgaWYgKGMgPT0gS0VZX01PVVNFKSB7CisJCXNob3dfbW91c2Uod2luKTsKKwkgICAgfSBlbHNlCisjZW5kaWYgLyogTkNVUlNFU19NT1VTRV9WRVJTSU9OICovCisJICAgIGlmIChjID49IEtFWV9NSU4pIHsKKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChLRVlfUkVTSVpFKSAmJiBIQVZFX1dSRVNJWkUKKwkJaWYgKGMgPT0gS0VZX1JFU0laRSkgeworCQkgICAgcmVzaXplX2JveGVzKGxldmVsLCB3aW4pOworCQl9CisjZW5kaWYKKwkJKHZvaWQpIHdhZGRzdHIod2luLCBrZXluYW1lKGMpKTsKKwkgICAgfSBlbHNlIGlmIChjID49IDB4ODApIHsKKwkJdW5zaWduZWQgYzIgPSAodW5zaWduZWQpIGM7CisjaWYgIShkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgfHwgZGVmaW5lZChfWE9QRU5fQ1VSU0VTKSkKKwkJLyogYXQgbGVhc3QgU29sYXJpcyBTVlI0IGN1cnNlcyBicmVha3MgdW5jdHJsKDEyOCksIGV0Yy4gKi8KKwkJYzIgJj0gMHg3ZjsKKyNlbmRpZgorCQlpZiAoaXNwcmludChjKSkKKwkJICAgICh2b2lkKSB3cHJpbnR3KHdpbiwgIiVjIiwgVUNoYXIoYykpOworCQllbHNlIGlmIChjMiAhPSBVQ2hhcihjKSkKKwkJICAgICh2b2lkKSB3cHJpbnR3KHdpbiwgIk0tJXMiLCB1bmN0cmwoYzIpKTsKKwkJZWxzZQorCQkgICAgKHZvaWQpIHdwcmludHcod2luLCAiJXMiLCB1bmN0cmwoYzIpKTsKKwkJd2FkZHN0cih3aW4sICIgKGhpZ2gtaGFsZiBjaGFyYWN0ZXIpIik7CisJICAgIH0gZWxzZSB7CisJCWlmIChpc3ByaW50KGMpKQorCQkgICAgKHZvaWQpIHdwcmludHcod2luLCAiJWMgKEFTQ0lJIHByaW50YWJsZSBjaGFyYWN0ZXIpIiwgYyk7CisJCWVsc2UKKwkJICAgICh2b2lkKSB3cHJpbnR3KHdpbiwgIiVzIChBU0NJSSBjb250cm9sIGNoYXJhY3RlcikiLAorCQkJCSAgIHVuY3RybChVQ2hhcihjKSkpOworCSAgICB9CisJICAgIHdnZXRjaF93cmFwKHdpbiwgZmlyc3RfeSk7CisJfQorICAgIH0KKworICAgIHd0aW1lb3V0KHdpbiwgLTEpOworCisgICAgaWYgKCFsZXZlbCkKKwlpbml0X2dldGNoKHdpbiwgZmxhZ3MpOworfQorCitzdGF0aWMgaW50CitiZWdpbl9nZXRjaF90ZXN0KHZvaWQpCit7CisgICAgY2hhciBidWZbQlVGU0laXTsKKyAgICBpbnQgZGVsYXk7CisKKyAgICByZWZyZXNoKCk7CisKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKyAgICBtb3VzZW1hc2soQUxMX01PVVNFX0VWRU5UUyB8IFJFUE9SVF9NT1VTRV9QT1NJVElPTiwgKG1tYXNrX3QgKikgMCk7CisjZW5kaWYKKworICAgICh2b2lkKSBwcmludHcoIkRlbGF5IGluIDEwdGhzIG9mIGEgc2Vjb25kICg8Q1I+IGZvciBibG9ja2luZyBpbnB1dCk/ICIpOworICAgIGVjaG8oKTsKKyAgICBnZXRuc3RyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKKyAgICBub2VjaG8oKTsKKyAgICBub25sKCk7CisKKyAgICBpZiAoaXNkaWdpdChVQ2hhcihidWZbMF0pKSkgeworCWRlbGF5ID0gYXRvaShidWYpICogMTAwOworICAgIH0gZWxzZSB7CisJZGVsYXkgPSAtMTsKKyAgICB9CisgICAgcmF3KCk7CisgICAgbW92ZSg1LCAwKTsKKyAgICByZXR1cm4gZGVsYXk7Cit9CisKK3N0YXRpYyB2b2lkCitmaW5pc2hfZ2V0Y2hfdGVzdCh2b2lkKQoreworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgIG1vdXNlbWFzaygwLCAobW1hc2tfdCAqKSAwKTsKKyNlbmRpZgorICAgIGVyYXNlKCk7CisgICAgbm9yYXcoKTsKKyAgICBubCgpOworICAgIGVuZHdpbigpOworfQorCitzdGF0aWMgdm9pZAorZ2V0Y2hfdGVzdCh2b2lkKQoreworICAgIGludCBkZWxheSA9IGJlZ2luX2dldGNoX3Rlc3QoKTsKKworICAgIHNsa19yZXN0b3JlKCk7CisgICAgd2dldGNoX3Rlc3QoMCwgc3Rkc2NyLCBkZWxheSk7CisgICAgZm9yZ2V0X2JveGVzKCk7CisgICAgZmluaXNoX2dldGNoX3Rlc3QoKTsKKyAgICBzbGtfY2xlYXIoKTsKK30KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisvKgorICogRm9yIHdnZXRfd2NoX3Rlc3QoKSwgd2UgY3JlYXRlIHBhaXJzIG9mIHdpbmRvd3MgLSBvbmUgZm9yIGEgYm94LCBvbmUgZm9yIHRleHQuCisgKiBSZXNpemUgYm90aCBhbmQgcGFpbnQgdGhlIGJveCBpbiB0aGUgcGFyZW50LgorICovCisjaWYgZGVmaW5lZChLRVlfUkVTSVpFKSAmJiBIQVZFX1dSRVNJWkUKK3N0YXRpYyB2b2lkCityZXNpemVfd2lkZV9ib3hlcyh1bnNpZ25lZCBsZXZlbCwgV0lORE9XICp3aW4pCit7CisgICAgdW5zaWduZWQgbjsKKyAgICBpbnQgYmFzZSA9IDU7CisgICAgaW50IGhpZ2ggPSBMSU5FUyAtIGJhc2U7CisgICAgaW50IHdpZGUgPSBDT0xTOworCisgICAgdG91Y2h3aW4oc3Rkc2NyKTsKKyAgICB3bm91dHJlZnJlc2goc3Rkc2NyKTsKKworICAgIHNsa19yZXBhaW50KCk7CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgbGV2ZWw7ICsrbikgeworCXdyZXNpemUod2luc3RhY2tbbl0uZnJhbWUsIGhpZ2gsIHdpZGUpOworCXdyZXNpemUod2luc3RhY2tbbl0udGV4dCwgaGlnaCAtIDIsIHdpZGUgLSAyKTsKKwloaWdoIC09IDI7CisJd2lkZSAtPSAyOworCXdlcmFzZSh3aW5zdGFja1tuXS50ZXh0KTsKKwlib3hfc2V0KHdpbnN0YWNrW25dLmZyYW1lLCAwLCAwKTsKKwl3bm91dHJlZnJlc2god2luc3RhY2tbbl0uZnJhbWUpOworCXdwcmludHcod2luc3RhY2tbbl0udGV4dCwKKwkJInNpemUgJWR4JWRcbiIsCisJCWdldG1heHkod2luc3RhY2tbbl0udGV4dCksCisJCWdldG1heHgod2luc3RhY2tbbl0udGV4dCkpOworCXdub3V0cmVmcmVzaCh3aW5zdGFja1tuXS50ZXh0KTsKKwlpZiAod2luc3RhY2tbbl0udGV4dCA9PSB3aW4pCisJICAgIGJyZWFrOworICAgIH0KKyAgICBkb3VwZGF0ZSgpOworfQorI2VuZGlmIC8qIEtFWV9SRVNJWkUgKi8KKworc3RhdGljIGNoYXIgKgord2NzdG9zKGNvbnN0IHdjaGFyX3QgKnNyYykKK3sKKyAgICBpbnQgbmVlZDsKKyAgICBjaGFyICpyZXN1bHQgPSAwOworICAgIGNvbnN0IHdjaGFyX3QgKnRtcCA9IHNyYzsKKyNpZm5kZWYgc3RhdGVfdW51c2VkCisgICAgbWJzdGF0ZV90IHN0YXRlOworI2VuZGlmCisKKyAgICByZXNldF93Y2hhcnMoc3RhdGUpOworICAgIGlmICgobmVlZCA9IChpbnQpIGNvdW50X3djaGFycyh0bXAsIDAsICZzdGF0ZSkpID4gMCkgeworCXVuc2lnbmVkIGhhdmUgPSAodW5zaWduZWQpIG5lZWQ7CisJaWYgKChyZXN1bHQgPSB0eXBlQ2FsbG9jKGNoYXIsIGhhdmUgKyAxKSkgIT0gMCkgeworCSAgICB0bXAgPSBzcmM7CisJICAgIGlmICh0cmFuc193Y2hhcnMocmVzdWx0LCB0bXAsIGhhdmUsICZzdGF0ZSkgIT0gaGF2ZSkgeworCQlmcmVlKHJlc3VsdCk7CisJCXJlc3VsdCA9IDA7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBmYWlsZWQoIndjc3RvcyIpOworCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3dnZXRfd2NoX3Rlc3QodW5zaWduZWQgbGV2ZWwsIFdJTkRPVyAqd2luLCBpbnQgZGVsYXkpCit7CisgICAgd2NoYXJfdCB3Y2hhcl9idWZbQlVGU0laXTsKKyAgICB3aW50X3Qgd2ludF9idWZbQlVGU0laXTsKKyAgICBpbnQgZmlyc3RfeSwgZmlyc3RfeDsKKyAgICB3aW50X3QgYzsKKyAgICBpbnQgaW5jb3VudCA9IDA7CisgICAgR2V0Y2hGbGFncyBmbGFnczsKKyAgICBib29sIGJsb2NraW5nID0gKGRlbGF5IDwgMCk7CisgICAgaW50IGNvZGU7CisgICAgY2hhciAqdGVtcDsKKworICAgIGluaXRfZ2V0Y2god2luLCBmbGFncyk7CisgICAgd3RpbWVvdXQod2luLCBkZWxheSk7CisgICAgZ2V0eXgod2luLCBmaXJzdF95LCBmaXJzdF94KTsKKworICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworICAgIHdzZXRzY3JyZWcod2luLCBmaXJzdF95LCBnZXRtYXh5KHdpbikgLSAxKTsKKyAgICBzY3JvbGxvayh3aW4sIFRSVUUpOworCisgICAgZm9yICg7OykgeworCXdoaWxlICgoY29kZSA9IHdHZXRfd2NoYXIod2luLCAmYykpID09IEVSUikgeworCSAgICBpbmNvdW50Kys7CisJICAgIGlmIChibG9ja2luZykgeworCQkodm9pZCkgd3ByaW50dyh3aW4sICIlMDVkOiBpbnB1dCBlcnJvciIsIGluY291bnQpOworCQlicmVhazsKKwkgICAgfSBlbHNlIHsKKwkJKHZvaWQpIHdwcmludHcod2luLCAiJTA1ZDogaW5wdXQgdGltZWQgb3V0IiwgaW5jb3VudCk7CisJICAgIH0KKwkgICAgd2dldGNoX3dyYXAod2luLCBmaXJzdF95KTsKKwl9CisJaWYgKGNvZGUgPT0gRVJSICYmIGJsb2NraW5nKSB7CisJICAgIHdwcmludHcod2luLCAiRVJSIik7CisJICAgIHdnZXRjaF93cmFwKHdpbiwgZmlyc3RfeSk7CisJfSBlbHNlIGlmIChpc1F1aXQoKGludCkgYykpIHsKKwkgICAgYnJlYWs7CisJfSBlbHNlIGlmIChjID09ICdlJykgeworCSAgICBmbGFnc1tVQ2hhcignZScpXSA9ICFmbGFnc1tVQ2hhcignZScpXTsKKwkgICAgc2V0dXBfZ2V0Y2god2luLCBmbGFncyk7CisJICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworCX0gZWxzZSBpZiAoYyA9PSAnZycpIHsKKwkgICAgd2FkZHN0cih3aW4sICJnZXRzdHIgdGVzdDogIik7CisJICAgIGVjaG8oKTsKKwkgICAgY29kZSA9IHdnZXRuX3dzdHIod2luLCB3aW50X2J1ZiwgQlVGU0laIC0gMSk7CisJICAgIG5vZWNobygpOworCSAgICBpZiAoY29kZSA9PSBFUlIpIHsKKwkJd3ByaW50dyh3aW4sICJ3Z2V0bl93c3RyIHJldHVybnMgYW4gZXJyb3IuIik7CisJICAgIH0gZWxzZSB7CisJCWludCBuOworCQlmb3IgKG4gPSAwOyAod2NoYXJfYnVmW25dID0gKHdjaGFyX3QpIHdpbnRfYnVmW25dKSAhPSAwOyArK24pIHsKKwkJICAgIDsKKwkJfQorCQlpZiAoKHRlbXAgPSB3Y3N0b3Mod2NoYXJfYnVmKSkgIT0gMCkgeworCQkgICAgd3ByaW50dyh3aW4sICJJIHNhdyAlZCBjaGFyYWN0ZXJzOlxuXHRgJXMnLiIsCisJCQkgICAgKGludCkgd2NzbGVuKHdjaGFyX2J1ZiksIHRlbXApOworCQkgICAgZnJlZSh0ZW1wKTsKKwkJfSBlbHNlIHsKKwkJICAgIHdwcmludHcod2luLCAiSSBzYXcgJWQgY2hhcmFjdGVycyAoY2Fubm90IGNvbnZlcnQpLiIsCisJCQkgICAgKGludCkgd2NzbGVuKHdjaGFyX2J1ZikpOworCQl9CisJICAgIH0KKwkgICAgd2NscnRvZW9sKHdpbik7CisJICAgIHdnZXRjaF93cmFwKHdpbiwgZmlyc3RfeSk7CisJfSBlbHNlIGlmIChjID09ICdrJykgeworCSAgICBmbGFnc1tVQ2hhcignaycpXSA9ICFmbGFnc1tVQ2hhcignaycpXTsKKwkgICAgc2V0dXBfZ2V0Y2god2luLCBmbGFncyk7CisJICAgIHdnZXRjaF9oZWxwKHdpbiwgZmxhZ3MpOworCX0gZWxzZSBpZiAoYyA9PSAnbScpIHsKKwkgICAgZmxhZ3NbVUNoYXIoJ20nKV0gPSAhZmxhZ3NbVUNoYXIoJ20nKV07CisJICAgIHNldHVwX2dldGNoKHdpbiwgZmxhZ3MpOworCSAgICB3Z2V0Y2hfaGVscCh3aW4sIGZsYWdzKTsKKwl9IGVsc2UgaWYgKGMgPT0gJ3MnKSB7CisJICAgIFNoZWxsT3V0KFRSVUUpOworCX0gZWxzZSBpZiAoYyA9PSAndycpIHsKKwkgICAgaW50IGhpZ2ggPSBnZXRtYXh5KHdpbikgLSAxIC0gZmlyc3RfeSArIDE7CisJICAgIGludCB3aWRlID0gZ2V0bWF4eCh3aW4pIC0gZmlyc3RfeDsKKwkgICAgaW50IG9sZF95LCBvbGRfeDsKKwkgICAgaW50IG5ld195ID0gZmlyc3RfeSArIGdldGJlZ3kod2luKTsKKwkgICAgaW50IG5ld194ID0gZmlyc3RfeCArIGdldGJlZ3god2luKTsKKworCSAgICBnZXR5eCh3aW4sIG9sZF95LCBvbGRfeCk7CisJICAgIGlmIChoaWdoID4gMiAmJiB3aWRlID4gMikgeworCQlXSU5ET1cgKndiID0gbmV3d2luKGhpZ2gsIHdpZGUsIG5ld195LCBuZXdfeCk7CisJCVdJTkRPVyAqd2kgPSBuZXd3aW4oaGlnaCAtIDIsIHdpZGUgLSAyLCBuZXdfeSArIDEsIG5ld194ICsgMSk7CisKKwkJYm94X3NldCh3YiwgMCwgMCk7CisJCXdyZWZyZXNoKHdiKTsKKwkJd21vdmUod2ksIDAsIDApOworCQlyZW1lbWJlcl9ib3hlcyhsZXZlbCwgd2ksIHdiKTsKKwkJd2dldF93Y2hfdGVzdChsZXZlbCArIDEsIHdpLCBkZWxheSk7CisJCWRlbHdpbih3aSk7CisJCWRlbHdpbih3Yik7CisKKwkJd2dldGNoX2hlbHAod2luLCBmbGFncyk7CisJCXdtb3ZlKHdpbiwgb2xkX3ksIG9sZF94KTsKKwkJdG91Y2h3aW4od2luKTsKKwkJd3JlZnJlc2god2luKTsKKwkgICAgfQorI2lmZGVmIFNJR1RTVFAKKwl9IGVsc2UgaWYgKGMgPT0gJ3onKSB7CisJICAgIGtpbGwoZ2V0cGlkKCksIFNJR1RTVFApOworI2VuZGlmCisJfSBlbHNlIHsKKwkgICAgd3ByaW50dyh3aW4sICJLZXkgcHJlc3NlZDogJTA0byAiLCAoaW50KSBjKTsKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKwkgICAgaWYgKGMgPT0gS0VZX01PVVNFKSB7CisJCXNob3dfbW91c2Uod2luKTsKKwkgICAgfSBlbHNlCisjZW5kaWYgLyogTkNVUlNFU19NT1VTRV9WRVJTSU9OICovCisJICAgIGlmIChjb2RlID09IEtFWV9DT0RFX1lFUykgeworI2lmIGRlZmluZWQoS0VZX1JFU0laRSkgJiYgSEFWRV9XUkVTSVpFCisJCWlmIChjID09IEtFWV9SRVNJWkUpIHsKKwkJICAgIHJlc2l6ZV93aWRlX2JveGVzKGxldmVsLCB3aW4pOworCQl9CisjZW5kaWYKKwkJKHZvaWQpIHdhZGRzdHIod2luLCBrZXluYW1lKCh3Y2hhcl90KSBjKSk7CisJICAgIH0gZWxzZSB7CisJCSh2b2lkKSB3YWRkc3RyKHdpbiwga2V5X25hbWUoKHdjaGFyX3QpIGMpKTsKKwkJaWYgKGMgPCAyNTYgJiYgaXNjbnRybChjKSkgeworCQkgICAgKHZvaWQpIHdwcmludHcod2luLCAiIChjb250cm9sIGNoYXJhY3RlcikiKTsKKwkJfSBlbHNlIHsKKwkJICAgICh2b2lkKSB3cHJpbnR3KHdpbiwgIiA9ICUjeCAocHJpbnRhYmxlIGNoYXJhY3RlcikiLAorCQkJCSAgICh1bnNpZ25lZCkgYyk7CisJCX0KKwkgICAgfQorCSAgICB3Z2V0Y2hfd3JhcCh3aW4sIGZpcnN0X3kpOworCX0KKyAgICB9CisKKyAgICB3dGltZW91dCh3aW4sIC0xKTsKKworICAgIGlmICghbGV2ZWwpCisJaW5pdF9nZXRjaCh3aW4sIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQKK2dldF93Y2hfdGVzdCh2b2lkKQoreworICAgIGludCBkZWxheSA9IGJlZ2luX2dldGNoX3Rlc3QoKTsKKworICAgIHNsa19yZXN0b3JlKCk7CisgICAgd2dldF93Y2hfdGVzdCgwLCBzdGRzY3IsIGRlbGF5KTsKKyAgICBmb3JnZXRfYm94ZXMoKTsKKyAgICBmaW5pc2hfZ2V0Y2hfdGVzdCgpOworICAgIHNsa19jbGVhcigpOworfQorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ2hhcmFjdGVyIGF0dHJpYnV0ZXMgdGVzdAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgSEFWRV9TRVRVUFRFUk0gfHwgSEFWRV9UR0VURU5UCisjZGVmaW5lIGdldF9uY3YoKSBUSUdFVE5VTSgibmN2IiwiTkMiKQorI2RlZmluZSBnZXRfeG1jKCkgVElHRVROVU0oInhtYyIsInNnIikKKyNlbHNlCisjZGVmaW5lIGdldF9uY3YoKSAtMQorI2RlZmluZSBnZXRfeG1jKCkgLTEKKyNlbmRpZgorCisjaWYgIUhBVkVfVEVSTUFUVFJTCitzdGF0aWMgY2h0eXBlCitteV90ZXJtYXR0cnModm9pZCkKK3sKKyAgICBzdGF0aWMgaW50IGZpcnN0ID0gVFJVRTsKKyAgICBzdGF0aWMgY2h0eXBlIHJlc3VsdCA9IDA7CisKKyAgICBpZiAoZmlyc3QpIHsKKyNpZiAhSEFWRV9USUdFVFNUUgorCWNoYXIgYnVmZmVyWzQwOTZdOworCWNoYXIgcGFyc2VkWzQwOTZdOworCWNoYXIgKmFyZWFfcG9pbnRlciA9IHBhcnNlZDsKKworCXRnZXRlbnQoYnVmZmVyLCBnZXRlbnYoIlRFUk0iKSk7CisjZW5kaWYKKworCWlmIChUSUdFVFNUUigic21zbyIsICJzbyIpKQorCSAgICByZXN1bHQgfD0gQV9TVEFORE9VVDsKKwlpZiAoVElHRVRTVFIoInNtdWwiLCAidXMiKSkKKwkgICAgcmVzdWx0IHw9IEFfVU5ERVJMSU5FOworCWlmIChUSUdFVFNUUigicmV2IiwgIm1yIikpCisJICAgIHJlc3VsdCB8PSBBX1JFVkVSU0U7CisJaWYgKFRJR0VUU1RSKCJibGluayIsICJtYiIpKQorCSAgICByZXN1bHQgfD0gQV9CTElOSzsKKwlpZiAoVElHRVRTVFIoImRpbSIsICJtaCIpKQorCSAgICByZXN1bHQgfD0gQV9ESU07CisJaWYgKFRJR0VUU1RSKCJib2xkIiwgIm1kIikpCisJICAgIHJlc3VsdCB8PSBBX0JPTEQ7CisJaWYgKFRJR0VUU1RSKCJzbWFjcyIsICJhYyIpKQorCSAgICByZXN1bHQgfD0gQV9BTFRDSEFSU0VUOworCisJZmlyc3QgPSBGQUxTRTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNkZWZpbmUgdGVybWF0dHJzKCkgbXlfdGVybWF0dHJzKCkKKyNlbmRpZgorCisjZGVmaW5lIEFUVFJTVFJJTkdfMVNUIDMyCS8qICcgJyAqLworI2RlZmluZSBBVFRSU1RSSU5HX0VORCAxMjYJLyogJ34nICovCisKKyNkZWZpbmUgQ09MX0FUVFJTVFJJTkcgMjUKKyNkZWZpbmUgTUFSR0lOXzRfQVRUUlMgKENPTF9BVFRSU1RSSU5HICsgOCkKKyNkZWZpbmUgTEVOX0FUVFJTVFJJTkcgKENPTFMgLSBNQVJHSU5fNF9BVFRSUykKKyNkZWZpbmUgTUFYX0FUVFJTVFJJTkcgKEFUVFJTVFJJTkdfRU5EICsgMSAtIEFUVFJTVFJJTkdfMVNUKQorCitzdGF0aWMgY2hhciBhdHRyX3Rlc3Rfc3RyaW5nW01BWF9BVFRSU1RSSU5HICsgMV07CisKK3N0YXRpYyB2b2lkCithdHRyX2xlZ2VuZChXSU5ET1cgKmhlbHB3aW4pCit7CisgICAgaW50IHJvdyA9IDE7CisgICAgaW50IGNvbCA9IDE7CisKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiRVNDIHRvIGV4aXQuIik7CisgICAgTXZXUHJpbnR3KGhlbHB3aW4sIHJvdysrLCBjb2wsCisJICAgICAgIl5MIHJlcGFpbnRzLiIpOworICAgICsrcm93OworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJNb2RpZnkgdGhlIHRlc3Qgc3RyaW5nczoiKTsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiICBBIGRpZ2l0IHNldHMgZ2FwcyBvbiBlYWNoIHNpZGUgb2YgZGlzcGxheWVkIGF0dHJpYnV0ZXMiKTsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiICA8Lz4gc2hpZnRzIHRoZSB0ZXh0IGxlZnQvcmlnaHQuICIpOworICAgICsrcm93OworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJUb2dnbGVzOiIpOworICAgIGlmICh1c2VfY29sb3JzKSB7CisJTXZXUHJpbnR3KGhlbHB3aW4sIHJvdysrLCBjb2wsCisJCSAgIiAgZi9GL2IvRiB0b2dnbGUgZm9yZWdyb3VuZC9iYWNrZ3JvdW5kIGJhY2tncm91bmQgY29sb3IiKTsKKwlNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkJICAiICB0L1QgICAgIHRvZ2dsZSB0ZXh0L2JhY2tncm91bmQgY29sb3IgYXR0cmlidXRlIik7CisgICAgfQorICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICIgIGEvQSAgICAgdG9nZ2xlIEFDUyAoYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQpIG1hcHBpbmciKTsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93LCBjb2wsCisJICAgICAgIiAgdi9WICAgICB0b2dnbGUgdmlkZW8gYXR0cmlidXRlIHRvIGNvbWJpbmUgd2l0aCBlYWNoIGxpbmUiKTsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorICAgIE12V1ByaW50dyhoZWxwd2luLCByb3csIGNvbCwKKwkgICAgICAiICB3L1cgICAgIHRvZ2dsZSBub3JtYWwvd2lkZSAoZG91YmxlLXdpZHRoKSB0ZXN0LWNoYXJhY3RlcnMiKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAorc2hvd19jb2xvcl9hdHRyKGludCBmZywgaW50IGJnLCBpbnQgdHgpCit7CisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwlwcmludHcoIiAgQ29sb3JzIChmZyAlZCwgYmcgJWQiLCBmZywgYmcpOworCWlmICh0eCA+PSAwKQorCSAgICBwcmludHcoIiwgdGV4dCAlZCIsIHR4KTsKKwlwcmludHcoIiksIik7CisgICAgfQorfQorCitzdGF0aWMgYm9vbAorY3ljbGVfY29sb3JfYXR0cihpbnQgY2gsIE5DVVJTRVNfQ09MT1JfVCAqZmcsIE5DVVJTRVNfQ09MT1JfVCAqYmcsIE5DVVJTRVNfQ09MT1JfVCAqdHgpCit7CisgICAgYm9vbCBlcnJvciA9IEZBTFNFOworCisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZic6CisJICAgICpmZyA9IChOQ1VSU0VTX0NPTE9SX1QpICgqZmcgKyAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnRic6CisJICAgICpmZyA9IChOQ1VSU0VTX0NPTE9SX1QpICgqZmcgLSAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYic6CisJICAgICpiZyA9IChOQ1VSU0VTX0NPTE9SX1QpICgqYmcgKyAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnQic6CisJICAgICpiZyA9IChOQ1VSU0VTX0NPTE9SX1QpICgqYmcgLSAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAndCc6CisJICAgICp0eCA9IChOQ1VSU0VTX0NPTE9SX1QpICgqdHggKyAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnVCc6CisJICAgICp0eCA9IChOQ1VSU0VTX0NPTE9SX1QpICgqdHggLSAxKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYmVlcCgpOworCSAgICBlcnJvciA9IFRSVUU7CisJICAgIGJyZWFrOworCX0KKwlpZiAoKmZnID49IENPTE9SUykKKwkgICAgKmZnID0gKE5DVVJTRVNfQ09MT1JfVCkgbWluX2NvbG9yczsKKwlpZiAoKmZnIDwgbWluX2NvbG9ycykKKwkgICAgKmZnID0gKE5DVVJTRVNfQ09MT1JfVCkgKENPTE9SUyAtIDEpOworCWlmICgqYmcgPj0gQ09MT1JTKQorCSAgICAqYmcgPSAoTkNVUlNFU19DT0xPUl9UKSBtaW5fY29sb3JzOworCWlmICgqYmcgPCBtaW5fY29sb3JzKQorCSAgICAqYmcgPSAoTkNVUlNFU19DT0xPUl9UKSAoQ09MT1JTIC0gMSk7CisJaWYgKCp0eCA+PSBDT0xPUlMpCisJICAgICp0eCA9IC0xOworCWlmICgqdHggPCAtMSkKKwkgICAgKnR4ID0gKE5DVVJTRVNfQ09MT1JfVCkgKENPTE9SUyAtIDEpOworICAgIH0gZWxzZSB7CisJYmVlcCgpOworCWVycm9yID0gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yOworfQorCitzdGF0aWMgdm9pZAorYWRqdXN0X2F0dHJfc3RyaW5nKGludCBhZGp1c3QpCit7CisgICAgY2hhciBzYXZlID0gYXR0cl90ZXN0X3N0cmluZ1swXTsKKyAgICBpbnQgZmlyc3QgPSAoKGludCkgVUNoYXIoc2F2ZSkpICsgYWRqdXN0OworICAgIGludCBqLCBrOworCisgICAgaWYgKGZpcnN0ID49IEFUVFJTVFJJTkdfMVNUKSB7CisJZm9yIChqID0gMCwgayA9IGZpcnN0OyBqIDwgTUFYX0FUVFJTVFJJTkc7ICsraiwgKytrKSB7CisJICAgIGlmIChrID4gQVRUUlNUUklOR19FTkQpCisJCWJyZWFrOworCSAgICBhdHRyX3Rlc3Rfc3RyaW5nW2pdID0gKGNoYXIpIGs7CisJICAgIGlmICgoKGsgKyAxIC0gZmlyc3QpICUgNSkgPT0gMCkgeworCQlpZiAoKytqID49IE1BWF9BVFRSU1RSSU5HKQorCQkgICAgYnJlYWs7CisJCWF0dHJfdGVzdF9zdHJpbmdbal0gPSAnICc7CisJICAgIH0KKwl9CisJaWYgKChMRU5fQVRUUlNUUklORyAtIGopID4gNSkgeworCSAgICBhdHRyX3Rlc3Rfc3RyaW5nWzBdID0gc2F2ZTsKKwkgICAgYWRqdXN0X2F0dHJfc3RyaW5nKGFkanVzdCAtIDEpOworCX0gZWxzZSB7CisJICAgIHdoaWxlIChqIDwgTUFYX0FUVFJTVFJJTkcpCisJCWF0dHJfdGVzdF9zdHJpbmdbaisrXSA9ICcgJzsKKwkgICAgYXR0cl90ZXN0X3N0cmluZ1tqXSA9ICdcMCc7CisJfQorICAgIH0KK30KKworLyoKKyAqIFByZWZlciB0aGUgcmlnaHQtZW5kIG9mIHRoZSBzdHJpbmcgZm9yIHN0YXJ0aW5nLCBzaW5jZSB0aGF0IG1hcHMgdG8gdGhlCisgKiBWVDEwMCBsaW5lLWRyYXdpbmcuCisgKi8KK3N0YXRpYyBpbnQKK2RlZmF1bHRfYXR0cl9zdHJpbmcodm9pZCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gKEFUVFJTVFJJTkdfRU5EIC0gTEVOX0FUVFJTVFJJTkcpOworICAgIHJlc3VsdCArPSAoTEVOX0FUVFJTVFJJTkcgLyA1KTsKKyAgICBpZiAocmVzdWx0IDwgQVRUUlNUUklOR18xU1QpCisJcmVzdWx0ID0gQVRUUlNUUklOR18xU1Q7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2luaXRfYXR0cl9zdHJpbmcodm9pZCkKK3sKKyAgICBhdHRyX3Rlc3Rfc3RyaW5nWzBdID0gKGNoYXIpIGRlZmF1bHRfYXR0cl9zdHJpbmcoKTsKKyAgICBhZGp1c3RfYXR0cl9zdHJpbmcoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3Nob3dfYXR0cihXSU5ET1cgKndpbiwgaW50IHJvdywgaW50IHNraXAsIGJvb2wgYXJyb3csIGNodHlwZSBhdHRyLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGludCBuY3YgPSBnZXRfbmN2KCk7CisgICAgY2h0eXBlIHRlc3QgPSBhdHRyICYgKGNodHlwZSkgKH5BX0FMVENIQVJTRVQpOworCisgICAgaWYgKGFycm93KQorCU12UHJpbnR3KHJvdywgNSwgIi0tPiIpOworICAgIE12UHJpbnR3KHJvdywgOCwgIiVzIG1vZGU6IiwgbmFtZSk7CisgICAgTXZQcmludHcocm93LCBDT0xfQVRUUlNUUklORyAtIDEsICJ8Iik7CisgICAgaWYgKHNraXApCisJcHJpbnR3KCIlKnMiLCBza2lwLCAiICIpOworICAgIC8qCisgICAgICogSnVzdCBmb3IgdGVzdGluZywgd3JpdGUgdGV4dCB1c2luZyB0aGUgYWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgb25lCisgICAgICogY2hhcmFjdGVyIGF0IGEgdGltZSAodG8gcGFzcyBpdHMgcmVuZGl0aW9uIGRpcmVjdGx5KSwgYW5kIHVzZSB0aGUKKyAgICAgKiBzdHJpbmcgb3BlcmF0aW9uIGZvciB0aGUgb3RoZXIgYXR0cmlidXRlcy4KKyAgICAgKi8KKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdlcmFzZSh3aW4pOworICAgIGlmIChhdHRyICYgQV9BTFRDSEFSU0VUKSB7CisJY29uc3QgY2hhciAqczsKKwljaHR5cGUgY2g7CisKKwlmb3IgKHMgPSBhdHRyX3Rlc3Rfc3RyaW5nOyAqcyAhPSAnXDAnOyArK3MpIHsKKwkgICAgY2ggPSBVQ2hhcigqcyk7CisJICAgICh2b2lkKSB3YWRkY2god2luLCBjaCB8IGF0dHIpOworCX0KKyAgICB9IGVsc2UgeworCSh2b2lkKSB3YXR0cnNldCh3aW4sIEF0dHJBcmcoYXR0ciwgMCkpOworCSh2b2lkKSB3YWRkc3RyKHdpbiwgYXR0cl90ZXN0X3N0cmluZyk7CisJKHZvaWQpIHdhdHRyb2ZmKHdpbiwgKGludCkgYXR0cik7CisgICAgfQorICAgIGlmIChza2lwKQorCXByaW50dygiJSpzIiwgc2tpcCwgIiAiKTsKKyAgICBNdlByaW50dyhyb3csIENPTF9BVFRSU1RSSU5HICsgTEVOX0FUVFJTVFJJTkcsICJ8Iik7CisgICAgaWYgKHRlc3QgIT0gQV9OT1JNQUwpIHsKKwlpZiAoISh0ZXJtYXR0cnMoKSAmIHRlc3QpKSB7CisJICAgIHByaW50dygiIChOL0EpIik7CisJfSBlbHNlIHsKKwkgICAgaWYgKG5jdiA+IDAgJiYgc3Rkc2NyICYmIChnZXRia2dkKHN0ZHNjcikgJiBBX0NPTE9SKSkgeworCQlzdGF0aWMgY29uc3QgY2h0eXBlIHRhYmxlW10gPQorCQl7CisJCSAgICBBX1NUQU5ET1VULAorCQkgICAgQV9VTkRFUkxJTkUsCisJCSAgICBBX1JFVkVSU0UsCisJCSAgICBBX0JMSU5LLAorCQkgICAgQV9ESU0sCisJCSAgICBBX0JPTEQsCisjaWZkZWYgQV9JTlZJUworCQkgICAgQV9JTlZJUywKKyNlbmRpZgorI2lmZGVmIEFfSVRBTElDCisJCSAgICBBX0lUQUxJQywKKyNlbmRpZgorCQkgICAgQV9QUk9URUNULAorCQkgICAgQV9BTFRDSEFSU0VUCisJCX07CisJCXVuc2lnbmVkIG47CisJCWJvb2wgZm91bmQgPSBGQUxTRTsKKwkJZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YWJsZSk7IG4rKykgeworCQkgICAgaWYgKCh0YWJsZVtuXSAmIGF0dHIpICE9IDAKKwkJCSYmICgoMSA8PCBuKSAmIG5jdikgIT0gMCkgeworCQkJZm91bmQgPSBUUlVFOworCQkJYnJlYWs7CisJCSAgICB9CisJCX0KKwkJaWYgKGZvdW5kKQorCQkgICAgcHJpbnR3KCIgKE5DVikiKTsKKwkgICAgfQorCSAgICBpZiAoKHRlcm1hdHRycygpICYgdGVzdCkgIT0gdGVzdCkKKwkJcHJpbnR3KCIgKFBhcnQpIik7CisJfQorICAgIH0KKyAgICByZXR1cm4gcm93ICsgMjsKK30KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGF0dHJfdCBhdHRyOworICAgIE5DVVJTRVNfQ09OU1QgY2hhciAqbmFtZTsKK30gQVRUUl9UQkw7CisvKiAqSU5ERU5ULU9GRiogKi8KK3N0YXRpYyBjb25zdCBBVFRSX1RCTCBhdHRyc190b190ZXN0W10gPSB7CisgICAgeyBBX1NUQU5ET1VULAkiU1RBTkRPVVQiIH0sCisgICAgeyBBX1JFVkVSU0UsCSJSRVZFUlNFIiB9LAorICAgIHsgQV9CT0xELAkJIkJPTEQiIH0sCisgICAgeyBBX1VOREVSTElORSwJIlVOREVSTElORSIgfSwKKyAgICB7IEFfRElNLAkJIkRJTSIgfSwKKyAgICB7IEFfQkxJTkssCQkiQkxJTksiIH0sCisgICAgeyBBX1BST1RFQ1QsCSJQUk9URUNUIiB9LAorI2lmZGVmIEFfSU5WSVMKKyAgICB7IEFfSU5WSVMsCQkiSU5WSVNJQkxFIiB9LAorI2VuZGlmCisjaWZkZWYgQV9JVEFMSUMKKyAgICB7IEFfSVRBTElDLAkJIklUQUxJQyIgfSwKKyNlbmRpZgorICAgIHsgQV9OT1JNQUwsCQkiTk9STUFMIiB9LAorfTsKKy8qICpJTkRFTlQtT04qICovCisKK3N0YXRpYyB1bnNpZ25lZAoraW5pdF9hdHRyX2xpc3QoQVRUUl9UQkwgKiB0YXJnZXQsIGF0dHJfdCBhdHRycykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgIHNpemVfdCBuOworCisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihhdHRyc190b190ZXN0KTsgKytuKSB7CisJYXR0cl90IHRlc3QgPSBhdHRyc190b190ZXN0W25dLmF0dHI7CisJaWYgKHRlc3QgPT0gQV9OT1JNQUwgfHwgKHRlc3QgJiBhdHRycykgIT0gMCkgeworCSAgICB0YXJnZXRbcmVzdWx0KytdID0gYXR0cnNfdG9fdGVzdFtuXTsKKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBib29sCithdHRyX2dldGMoaW50ICpza2lwLAorCSAgTkNVUlNFU19DT0xPUl9UICpmZywKKwkgIE5DVVJTRVNfQ09MT1JfVCAqYmcsCisJICBOQ1VSU0VTX0NPTE9SX1QgKnR4LAorCSAgaW50ICphYywKKwkgIHVuc2lnbmVkICprYywKKwkgIHVuc2lnbmVkIGxpbWl0KQoreworICAgIGJvb2wgcmVzdWx0ID0gVFJVRTsKKyAgICBib29sIGVycm9yID0gRkFMU0U7CisgICAgV0lORE9XICpoZWxwd2luOworCisgICAgZG8geworCWludCBjaCA9IEdldGNoYXIoKTsKKworCWVycm9yID0gRkFMU0U7CisJaWYgKGNoIDwgMjU2ICYmIGlzZGlnaXQoY2gpKSB7CisJICAgICpza2lwID0gKGNoIC0gJzAnKTsKKwl9IGVsc2UgeworCSAgICBzd2l0Y2ggKGNoKSB7CisJICAgIGNhc2UgQ1RSTCgnTCcpOgorCQlSZXBhaW50KCk7CisJCWJyZWFrOworCSAgICBjYXNlICc/JzoKKwkJaWYgKChoZWxwd2luID0gbmV3d2luKExJTkVTIC0gMSwgQ09MUyAtIDIsIDAsIDApKSAhPSAwKSB7CisJCSAgICBib3goaGVscHdpbiwgMCwgMCk7CisJCSAgICBhdHRyX2xlZ2VuZChoZWxwd2luKTsKKwkJICAgIHdHZXRjaGFyKGhlbHB3aW4pOworCQkgICAgZGVsd2luKGhlbHB3aW4pOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlICdhJzoKKwkJKmFjID0gMDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ0EnOgorCQkqYWMgPSBBX0FMVENIQVJTRVQ7CisJCWJyZWFrOworCSAgICBjYXNlICd2JzoKKwkJaWYgKCprYyA9PSAwKQorCQkgICAgKmtjID0gbGltaXQgLSAxOworCQllbHNlCisJCSAgICAqa2MgLT0gMTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ1YnOgorCQkqa2MgKz0gMTsKKwkJaWYgKCprYyA+PSBsaW1pdCkKKwkJICAgICprYyA9IDA7CisJCWJyZWFrOworCSAgICBjYXNlICc8JzoKKwkJYWRqdXN0X2F0dHJfc3RyaW5nKC0xKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJz4nOgorCQlhZGp1c3RfYXR0cl9zdHJpbmcoMSk7CisJCWJyZWFrOworCSAgICBjYXNlIGNhc2VfUVVJVDoKKwkJcmVzdWx0ID0gRkFMU0U7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQllcnJvciA9IGN5Y2xlX2NvbG9yX2F0dHIoY2gsIGZnLCBiZywgdHgpOworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9IHdoaWxlIChlcnJvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2F0dHJfdGVzdCh2b2lkKQorLyogdGVzdCB0ZXh0IGF0dHJpYnV0ZXMgKi8KK3sKKyAgICBpbnQgbjsKKyAgICBpbnQgc2tpcCA9IGdldF94bWMoKTsKKyAgICBOQ1VSU0VTX0NPTE9SX1QgZmcgPSBDT0xPUl9CTEFDSzsJLyogY29sb3IgcGFpciAwIGlzIHNwZWNpYWwgKi8KKyAgICBOQ1VSU0VTX0NPTE9SX1QgYmcgPSBDT0xPUl9CTEFDSzsKKyAgICBOQ1VSU0VTX0NPTE9SX1QgdHggPSAtMTsKKyAgICBpbnQgYWMgPSAwOworICAgIHVuc2lnbmVkIGosIGs7CisgICAgV0lORE9XICpteV93aW5zW1NJWkVPRihhdHRyc190b190ZXN0KV07CisgICAgQVRUUl9UQkwgbXlfbGlzdFtTSVpFT0YoYXR0cnNfdG9fdGVzdCldOworICAgIHVuc2lnbmVkIG15X3NpemUgPSBpbml0X2F0dHJfbGlzdChteV9saXN0LCB0ZXJtYXR0cnMoKSk7CisKKyAgICBpZiAobXlfc2l6ZSA+IDEpIHsKKwlmb3IgKGogPSAwOyBqIDwgbXlfc2l6ZTsgKytqKSB7CisJICAgIG15X3dpbnNbal0gPSBzdWJ3aW4oc3Rkc2NyLAorCQkJCTEsIExFTl9BVFRSU1RSSU5HLAorCQkJCTIgKyAoaW50KSAoMiAqIGopLCBDT0xfQVRUUlNUUklORyk7CisJICAgIHNjcm9sbG9rKG15X3dpbnNbal0sIEZBTFNFKTsKKwl9CisKKwlpZiAoc2tpcCA8IDApCisJICAgIHNraXAgPSAwOworCisJbiA9IHNraXA7CQkvKiBtYWtlIGl0IGVhc3kgKi8KKwlrID0gbXlfc2l6ZSAtIDE7CisJaW5pdF9hdHRyX3N0cmluZygpOworCisJZG8geworCSAgICBpbnQgcm93ID0gMjsKKwkgICAgY2h0eXBlIG5vcm1hbCA9IEFfTk9STUFMIHwgQkxBTks7CisJICAgIGNodHlwZSBleHRyYXMgPSAoY2h0eXBlKSBhYzsKKworCSAgICBpZiAodXNlX2NvbG9ycykgeworCQlOQ1VSU0VTX1BBSVJTX1QgcGFpciA9IDA7CisJCWlmICgoZmcgIT0gQ09MT1JfQkxBQ0spIHx8IChiZyAhPSBDT0xPUl9CTEFDSykpIHsKKwkJICAgIHBhaXIgPSAxOworCQkgICAgaWYgKGluaXRfcGFpcihwYWlyLCBmZywgYmcpID09IEVSUikgeworCQkJYmVlcCgpOworCQkgICAgfSBlbHNlIHsKKwkJCW5vcm1hbCB8PSAoY2h0eXBlKSBDT0xPUl9QQUlSKHBhaXIpOworCQkgICAgfQorCQl9CisJCWlmICh0eCA+PSAwKSB7CisJCSAgICBwYWlyID0gMjsKKwkJICAgIGlmIChpbml0X3BhaXIocGFpciwgdHgsIGJnKSA9PSBFUlIpIHsKKwkJCWJlZXAoKTsKKwkJICAgIH0gZWxzZSB7CisJCQlleHRyYXMgfD0gKGNodHlwZSkgQ09MT1JfUEFJUihwYWlyKTsKKwkJCW5vcm1hbCAmPSB+QV9DT0xPUjsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJICAgIGJrZ2Qobm9ybWFsKTsKKwkgICAgYmtnZHNldChub3JtYWwpOworCSAgICBlcmFzZSgpOworCisJICAgIGJveChzdGRzY3IsIDAsIDApOworCSAgICBNdkFkZFN0cigwLCAyMCwgIkNoYXJhY3RlciBhdHRyaWJ1dGUgdGVzdCBkaXNwbGF5Iik7CisKKwkgICAgZm9yIChqID0gMDsgaiA8IG15X3NpemU7ICsraikgeworCQlib29sIGFycm93ID0gKGogPT0gayk7CisJCXJvdyA9IHNob3dfYXR0cihteV93aW5zW2pdLCByb3csIG4sIGFycm93LAorCQkJCW5vcm1hbCB8CisJCQkJZXh0cmFzIHwKKwkJCQlteV9saXN0W2pdLmF0dHIgfAorCQkJCW15X2xpc3Rba10uYXR0ciwKKwkJCQlteV9saXN0W2pdLm5hbWUpOworCSAgICB9CisKKwkgICAgTXZQcmludHcocm93LCA4LAorCQkgICAgICJUaGlzIHRlcm1pbmFsIGRvZXMgJXNoYXZlIHRoZSBtYWdpYy1jb29raWUgZ2xpdGNoIiwKKwkJICAgICBnZXRfeG1jKCkgPiAtMSA/ICIiIDogIm5vdCAiKTsKKwkgICAgTXZQcmludHcocm93ICsgMSwgOCwgIkVudGVyICc/JyBmb3IgaGVscC4iKTsKKwkgICAgc2hvd19jb2xvcl9hdHRyKGZnLCBiZywgdHgpOworCSAgICBwcmludHcoIiAgQUNTICglZCkiLCBhYyAhPSAwKTsKKworCSAgICByZWZyZXNoKCk7CisJfSB3aGlsZSAoYXR0cl9nZXRjKCZuLCAmZmcsICZiZywgJnR4LCAmYWMsICZrLCBteV9zaXplKSk7CisKKwlia2dkc2V0KEFfTk9STUFMIHwgQkxBTkspOworCWVyYXNlKCk7CisJZW5kd2luKCk7CisgICAgfSBlbHNlIHsKKwlDYW5ub3QoImRvZXMgbm90IHN1cHBvcnQgdmlkZW8gYXR0cmlidXRlcy4iKTsKKyAgICB9Cit9CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorc3RhdGljIGJvb2wgdXNlX2Z1bGx3aWR0aDsKK3N0YXRpYyB3Y2hhcl90IHdpZGVfYXR0cl90ZXN0X3N0cmluZ1tNQVhfQVRUUlNUUklORyArIDFdOworCisjZGVmaW5lIEZVTExfTE8gMHhmZjAwCisjZGVmaW5lIEZVTExfSEkgMHhmZjVlCisjZGVmaW5lIEhBTEZfTE8gMHgyMAorCisjZGVmaW5lIGlzRnVsbFdpZHRoKGNoKSAgICgoaW50KShjaCkgPj0gRlVMTF9MTyAmJiAoaW50KShjaCkgPD0gRlVMTF9ISSkKKyNkZWZpbmUgVG9Ob3JtYWxXaWR0aChjaCkgKHdjaGFyX3QpICgoKGludCkoY2gpIC0gRlVMTF9MTykgKyBIQUxGX0xPKQorI2RlZmluZSBUb0Z1bGxXaWR0aChjaCkgICAod2NoYXJfdCkgKCgoaW50KShjaCkgLSBIQUxGX0xPKSArIEZVTExfTE8pCisKKy8qCisgKiBSZXR1cm5zIGFuIEFTQ0lJIGNvZGUgaW4gWzMyLi4xMjZdCisgKi8KK3N0YXRpYyB3Y2hhcl90Citub3JtYWxfd2NoYXIoaW50IGNoKQoreworICAgIHdjaGFyX3QgcmVzdWx0ID0gKHdjaGFyX3QpIGNoOworICAgIGlmIChpc0Z1bGxXaWR0aChjaCkpCisJcmVzdWx0ID0gVG9Ob3JtYWxXaWR0aChjaCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFJldHVybnMgZWl0aGVyIGFuIEFTQ0lJIGNvZGUgaW4gaW4gWzMyLi4xMjZdIG9yIGZ1bGwtd2lkdGggaW4KKyAqIFsweGZmMDAuLjB4ZmY1ZV0sIGFjY29yZGluZyB0byB1c2VfZnVsbHdpZHRoIHNldHRpbmcuCisgKi8KK3N0YXRpYyB3Y2hhcl90Cit0YXJnZXRfd2NoYXIoaW50IGNoKQoreworICAgIHdjaGFyX3QgcmVzdWx0ID0gKHdjaGFyX3QpIGNoOworICAgIGlmICh1c2VfZnVsbHdpZHRoKSB7CisJaWYgKCFpc0Z1bGxXaWR0aChjaCkpCisJICAgIHJlc3VsdCA9IFRvRnVsbFdpZHRoKGNoKTsKKyAgICB9IGVsc2UgeworCWlmIChpc0Z1bGxXaWR0aChjaCkpCisJICAgIHJlc3VsdCA9IFRvTm9ybWFsV2lkdGgoY2gpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAord2lkZV9hZGp1c3RfYXR0cl9zdHJpbmcoaW50IGFkanVzdCkKK3sKKyAgICB3Y2hhcl90IHNhdmUgPSB3aWRlX2F0dHJfdGVzdF9zdHJpbmdbMF07CisgICAgaW50IGZpcnN0ID0gKChpbnQpIG5vcm1hbF93Y2hhcihzYXZlKSkgKyBhZGp1c3Q7CisgICAgaW50IGosIGs7CisKKyAgICBpZiAoZmlyc3QgPj0gQVRUUlNUUklOR18xU1QpIHsKKwlmb3IgKGogPSAwLCBrID0gZmlyc3Q7IGogPCBNQVhfQVRUUlNUUklORzsgKytqLCArK2spIHsKKwkgICAgaWYgKGsgPiBBVFRSU1RSSU5HX0VORCkKKwkJYnJlYWs7CisJICAgIHdpZGVfYXR0cl90ZXN0X3N0cmluZ1tqXSA9IHRhcmdldF93Y2hhcihrKTsKKwkgICAgaWYgKCgoayArIDEgLSBmaXJzdCkgJSA1KSA9PSAwKSB7CisJCWlmICgrK2ogPj0gTUFYX0FUVFJTVFJJTkcpCisJCSAgICBicmVhazsKKwkJd2lkZV9hdHRyX3Rlc3Rfc3RyaW5nW2pdID0gJyAnOworCSAgICB9CisJfQorCWlmICgoTEVOX0FUVFJTVFJJTkcgLSBqKSA+IDUpIHsKKwkgICAgd2lkZV9hdHRyX3Rlc3Rfc3RyaW5nWzBdID0gc2F2ZTsKKwkgICAgd2lkZV9hZGp1c3RfYXR0cl9zdHJpbmcoYWRqdXN0IC0gMSk7CisJfSBlbHNlIHsKKwkgICAgd2hpbGUgKGogPCBNQVhfQVRUUlNUUklORykKKwkJd2lkZV9hdHRyX3Rlc3Rfc3RyaW5nW2orK10gPSAnICc7CisJICAgIHdpZGVfYXR0cl90ZXN0X3N0cmluZ1tqXSA9ICdcMCc7CisJfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK3dpZGVfaW5pdF9hdHRyX3N0cmluZyh2b2lkKQoreworICAgIHVzZV9mdWxsd2lkdGggPSBGQUxTRTsKKyAgICB3aWRlX2F0dHJfdGVzdF9zdHJpbmdbMF0gPSAod2NoYXJfdCkgZGVmYXVsdF9hdHRyX3N0cmluZygpOworICAgIHdpZGVfYWRqdXN0X2F0dHJfc3RyaW5nKDApOworfQorCitzdGF0aWMgdm9pZAorc2V0X3dpZGVfYmFja2dyb3VuZChOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBjY2hhcl90IG5vcm1hbDsKKyAgICB3Y2hhcl90IGJsYW5rWzJdOworCisgICAgYmxhbmtbMF0gPSAnICc7CisgICAgYmxhbmtbMV0gPSAwOworICAgIHNldGNjaGFyKCZub3JtYWwsIGJsYW5rLCBBX05PUk1BTCwgcGFpciwgMCk7CisgICAgYmtncm5kKCZub3JtYWwpOworICAgIGJrZ3JuZHNldCgmbm9ybWFsKTsKK30KKworc3RhdGljIGF0dHJfdAorZ2V0X3dpZGVfYmFja2dyb3VuZCh2b2lkKQoreworICAgIGF0dHJfdCByZXN1bHQgPSBBX05PUk1BTDsKKyAgICBhdHRyX3QgYXR0cjsKKyAgICBjY2hhcl90IGNoOworICAgIE5DVVJTRVNfUEFJUlNfVCBwYWlyOworICAgIHdjaGFyX3Qgd2NoWzEwXTsKKworICAgIG1lbXNldCgmY2gsIDAsIHNpemVvZihjaCkpOworICAgIGlmIChnZXRia2dybmQoJmNoKSAhPSBFUlIpIHsKKwlpZiAoZ2V0Y2NoYXIoJmNoLCB3Y2gsICZhdHRyLCAmcGFpciwgMCkgIT0gRVJSKSB7CisJICAgIHJlc3VsdCA9IGF0dHI7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit3aWRlX3Nob3dfYXR0cihXSU5ET1cgKndpbiwKKwkgICAgICAgaW50IHJvdywKKwkgICAgICAgaW50IHNraXAsCisJICAgICAgIGJvb2wgYXJyb3csCisJICAgICAgIGNodHlwZSBhdHRyLAorCSAgICAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciwKKwkgICAgICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBpbnQgbmN2ID0gZ2V0X25jdigpOworICAgIGNodHlwZSB0ZXN0ID0gYXR0ciAmIH5XQV9BTFRDSEFSU0VUOworCisgICAgaWYgKGFycm93KQorCU12UHJpbnR3KHJvdywgNSwgIi0tPiIpOworICAgIE12UHJpbnR3KHJvdywgOCwgIiVzIG1vZGU6IiwgbmFtZSk7CisgICAgTXZQcmludHcocm93LCBDT0xfQVRUUlNUUklORyAtIDEsICJ8Iik7CisgICAgaWYgKHNraXApCisJcHJpbnR3KCIlKnMiLCBza2lwLCAiICIpOworCisgICAgLyoKKyAgICAgKiBKdXN0IGZvciB0ZXN0aW5nLCB3cml0ZSB0ZXh0IHVzaW5nIHRoZSBhbHRlcm5hdGUgY2hhcmFjdGVyIHNldCBvbmUKKyAgICAgKiBjaGFyYWN0ZXIgYXQgYSB0aW1lICh0byBwYXNzIGl0cyByZW5kaXRpb24gZGlyZWN0bHkpLCBhbmQgdXNlIHRoZQorICAgICAqIHN0cmluZyBvcGVyYXRpb24gZm9yIHRoZSBvdGhlciBhdHRyaWJ1dGVzLgorICAgICAqLworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd2VyYXNlKHdpbik7CisgICAgaWYgKGF0dHIgJiBXQV9BTFRDSEFSU0VUKSB7CisJY29uc3Qgd2NoYXJfdCAqczsKKwljY2hhcl90IGNoOworCisJZm9yIChzID0gd2lkZV9hdHRyX3Rlc3Rfc3RyaW5nOyAqcyAhPSBMJ1wwJzsgKytzKSB7CisJICAgIHdjaGFyX3QgZmlsbFsyXTsKKwkgICAgZmlsbFswXSA9ICpzOworCSAgICBmaWxsWzFdID0gTCdcMCc7CisJICAgIHNldGNjaGFyKCZjaCwgZmlsbCwgYXR0ciwgcGFpciwgMCk7CisJICAgICh2b2lkKSB3YWRkX3djaCh3aW4sICZjaCk7CisJfQorICAgIH0gZWxzZSB7CisJYXR0cl90IG9sZF9hdHRyID0gMDsKKwlOQ1VSU0VTX1BBSVJTX1Qgb2xkX3BhaXIgPSAwOworCisJKHZvaWQpICh3YXR0cl9nZXQpICh3aW4sICZvbGRfYXR0ciwgJm9sZF9wYWlyLCAwKTsKKwkodm9pZCkgd2F0dHJfc2V0KHdpbiwgYXR0ciwgcGFpciwgMCk7CisJKHZvaWQpIHdhZGR3c3RyKHdpbiwgd2lkZV9hdHRyX3Rlc3Rfc3RyaW5nKTsKKwkodm9pZCkgd2F0dHJfc2V0KHdpbiwgb2xkX2F0dHIsIG9sZF9wYWlyLCAwKTsKKyAgICB9CisgICAgaWYgKHNraXApCisJcHJpbnR3KCIlKnMiLCBza2lwLCAiICIpOworICAgIE12UHJpbnR3KHJvdywgQ09MX0FUVFJTVFJJTkcgKyBMRU5fQVRUUlNUUklORywgInwiKTsKKyAgICBpZiAodGVzdCAhPSBBX05PUk1BTCkgeworCWlmICghKHRlcm1fYXR0cnMoKSAmIHRlc3QpKSB7CisJICAgIHByaW50dygiIChOL0EpIik7CisJfSBlbHNlIHsKKwkgICAgaWYgKG5jdiA+IDAgJiYgKGdldF93aWRlX2JhY2tncm91bmQoKSAmIEFfQ09MT1IpKSB7CisJCXN0YXRpYyBjb25zdCBhdHRyX3QgdGFibGVbXSA9CisJCXsKKwkJICAgIFdBX1NUQU5ET1VULAorCQkgICAgV0FfVU5ERVJMSU5FLAorCQkgICAgV0FfUkVWRVJTRSwKKwkJICAgIFdBX0JMSU5LLAorCQkgICAgV0FfRElNLAorCQkgICAgV0FfQk9MRCwKKwkJICAgIFdBX0lOVklTLAorCQkgICAgV0FfUFJPVEVDVCwKKwkJICAgIFdBX0FMVENIQVJTRVQKKwkJfTsKKwkJdW5zaWduZWQgbjsKKwkJYm9vbCBmb3VuZCA9IEZBTFNFOworCQlmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRhYmxlKTsgbisrKSB7CisJCSAgICBpZiAoKHRhYmxlW25dICYgYXR0cikgIT0gMAorCQkJJiYgKCgxIDw8IG4pICYgbmN2KSAhPSAwKSB7CisJCQlmb3VuZCA9IFRSVUU7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCQlpZiAoZm91bmQpCisJCSAgICBwcmludHcoIiAoTkNWKSIpOworCSAgICB9CisJICAgIGlmICgodGVybV9hdHRycygpICYgdGVzdCkgIT0gdGVzdCkKKwkJcHJpbnR3KCIgKFBhcnQpIik7CisJfQorICAgIH0KKyAgICByZXR1cm4gcm93ICsgMjsKK30KKworc3RhdGljIGJvb2wKK3dpZGVfYXR0cl9nZXRjKGludCAqc2tpcCwKKwkgICAgICAgTkNVUlNFU19DT0xPUl9UICpmZywgTkNVUlNFU19DT0xPUl9UICpiZywKKwkgICAgICAgTkNVUlNFU19DT0xPUl9UICp0eCwgaW50ICphYywKKwkgICAgICAgdW5zaWduZWQgKmtjLCB1bnNpZ25lZCBsaW1pdCkKK3sKKyAgICBib29sIHJlc3VsdCA9IFRSVUU7CisgICAgYm9vbCBlcnJvciA9IEZBTFNFOworICAgIFdJTkRPVyAqaGVscHdpbjsKKworICAgIGRvIHsKKwlpbnQgY2ggPSBHZXRjaGFyKCk7CisKKwllcnJvciA9IEZBTFNFOworCWlmIChjaCA8IDI1NiAmJiBpc2RpZ2l0KGNoKSkgeworCSAgICAqc2tpcCA9IChjaCAtICcwJyk7CisJfSBlbHNlIHsKKwkgICAgc3dpdGNoIChjaCkgeworCSAgICBjYXNlIENUUkwoJ0wnKToKKwkJUmVwYWludCgpOworCQlicmVhazsKKwkgICAgY2FzZSAnPyc6CisJCWlmICgoaGVscHdpbiA9IG5ld3dpbihMSU5FUyAtIDEsIENPTFMgLSAyLCAwLCAwKSkgIT0gMCkgeworCQkgICAgYm94X3NldChoZWxwd2luLCAwLCAwKTsKKwkJICAgIGF0dHJfbGVnZW5kKGhlbHB3aW4pOworCQkgICAgd0dldGNoYXIoaGVscHdpbik7CisJCSAgICBkZWx3aW4oaGVscHdpbik7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgJ2EnOgorCQkqYWMgPSAwOworCQlicmVhazsKKwkgICAgY2FzZSAnQSc6CisJCSphYyA9IEFfQUxUQ0hBUlNFVDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ3YnOgorCQlpZiAoKmtjID09IDApCisJCSAgICAqa2MgPSBsaW1pdCAtIDE7CisJCWVsc2UKKwkJICAgICprYyAtPSAxOworCQlicmVhazsKKwkgICAgY2FzZSAnVic6CisJCSprYyArPSAxOworCQlpZiAoKmtjID49IGxpbWl0KQorCQkgICAgKmtjID0gMDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ3cnOgorCQl1c2VfZnVsbHdpZHRoID0gRkFMU0U7CisJCXdpZGVfYWRqdXN0X2F0dHJfc3RyaW5nKDApOworCQlicmVhazsKKwkgICAgY2FzZSAnVyc6CisJCXVzZV9mdWxsd2lkdGggPSBUUlVFOworCQl3aWRlX2FkanVzdF9hdHRyX3N0cmluZygwKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJzwnOgorCQl3aWRlX2FkanVzdF9hdHRyX3N0cmluZygtMSk7CisJCWJyZWFrOworCSAgICBjYXNlICc+JzoKKwkJd2lkZV9hZGp1c3RfYXR0cl9zdHJpbmcoMSk7CisJCWJyZWFrOworCSAgICBjYXNlIGNhc2VfUVVJVDoKKwkJcmVzdWx0ID0gRkFMU0U7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQllcnJvciA9IGN5Y2xlX2NvbG9yX2F0dHIoY2gsIGZnLCBiZywgdHgpOworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9IHdoaWxlIChlcnJvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3dpZGVfYXR0cl90ZXN0KHZvaWQpCisvKiB0ZXN0IHRleHQgYXR0cmlidXRlcyB1c2luZyB3aWRlLWNoYXJhY3RlciBjYWxscyAqLworeworICAgIGludCBuOworICAgIGludCBza2lwID0gZ2V0X3htYygpOworICAgIE5DVVJTRVNfQ09MT1JfVCBmZyA9IENPTE9SX0JMQUNLOwkvKiBjb2xvciBwYWlyIDAgaXMgc3BlY2lhbCAqLworICAgIE5DVVJTRVNfQ09MT1JfVCBiZyA9IENPTE9SX0JMQUNLOworICAgIE5DVVJTRVNfQ09MT1JfVCB0eCA9IC0xOworICAgIGludCBhYyA9IDA7CisgICAgdW5zaWduZWQgaiwgazsKKyAgICBBVFRSX1RCTCBteV9saXN0W1NJWkVPRihhdHRyc190b190ZXN0KV07CisgICAgV0lORE9XICpteV93aW5zW1NJWkVPRihhdHRyc190b190ZXN0KV07CisgICAgdW5zaWduZWQgbXlfc2l6ZSA9IGluaXRfYXR0cl9saXN0KG15X2xpc3QsIHRlcm1fYXR0cnMoKSk7CisKKyAgICBpZiAobXlfc2l6ZSA+IDEpIHsKKwlmb3IgKGogPSAwOyBqIDwgbXlfc2l6ZTsgKytqKSB7CisJICAgIG15X3dpbnNbal0gPSBzdWJ3aW4oc3Rkc2NyLAorCQkJCTEsIExFTl9BVFRSU1RSSU5HLAorCQkJCTIgKyAoaW50KSAoMiAqIGopLCBDT0xfQVRUUlNUUklORyk7CisJICAgIHNjcm9sbG9rKG15X3dpbnNbal0sIEZBTFNFKTsKKwl9CisKKwlpZiAoc2tpcCA8IDApCisJICAgIHNraXAgPSAwOworCisJbiA9IHNraXA7CQkvKiBtYWtlIGl0IGVhc3kgKi8KKwlrID0gbXlfc2l6ZSAtIDE7CisJd2lkZV9pbml0X2F0dHJfc3RyaW5nKCk7CisKKwlkbyB7CisJICAgIGludCByb3cgPSAyOworCSAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciA9IDA7CisJICAgIE5DVVJTRVNfUEFJUlNfVCBleHRyYXMgPSAwOworCisJICAgIGlmICh1c2VfY29sb3JzKSB7CisJCXBhaXIgPSAoTkNVUlNFU19QQUlSU19UKSAoZmcgIT0gQ09MT1JfQkxBQ0sgfHwgYmcgIT0gQ09MT1JfQkxBQ0spOworCQlpZiAocGFpciAhPSAwKSB7CisJCSAgICBwYWlyID0gMTsKKwkJICAgIGlmIChpbml0X3BhaXIocGFpciwgZmcsIGJnKSA9PSBFUlIpIHsKKwkJCWJlZXAoKTsKKwkJICAgIH0KKwkJfQorCQlleHRyYXMgPSBwYWlyOworCQlpZiAodHggPj0gMCkgeworCQkgICAgZXh0cmFzID0gMjsKKwkJICAgIGlmIChpbml0X3BhaXIoZXh0cmFzLCB0eCwgYmcpID09IEVSUikgeworCQkJYmVlcCgpOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgICAgc2V0X3dpZGVfYmFja2dyb3VuZChwYWlyKTsKKwkgICAgZXJhc2UoKTsKKworCSAgICBib3hfc2V0KHN0ZHNjciwgMCwgMCk7CisJICAgIE12QWRkU3RyKDAsIDIwLCAiQ2hhcmFjdGVyIGF0dHJpYnV0ZSB0ZXN0IGRpc3BsYXkiKTsKKworCSAgICBmb3IgKGogPSAwOyBqIDwgbXlfc2l6ZTsgKytqKSB7CisJCXJvdyA9IHdpZGVfc2hvd19hdHRyKG15X3dpbnNbal0sIHJvdywgbiwgKGogPT0gayksCisJCQkJICAgICAoKGF0dHJfdCkgYWMgfAorCQkJCSAgICAgIG15X2xpc3Rbal0uYXR0ciB8CisJCQkJICAgICAgbXlfbGlzdFtrXS5hdHRyKSwKKwkJCQkgICAgIGV4dHJhcywKKwkJCQkgICAgIG15X2xpc3Rbal0ubmFtZSk7CisJICAgIH0KKworCSAgICBNdlByaW50dyhyb3csIDgsCisJCSAgICAgIlRoaXMgdGVybWluYWwgZG9lcyAlc2hhdmUgdGhlIG1hZ2ljLWNvb2tpZSBnbGl0Y2giLAorCQkgICAgIGdldF94bWMoKSA+IC0xID8gIiIgOiAibm90ICIpOworCSAgICBNdlByaW50dyhyb3cgKyAxLCA4LCAiRW50ZXIgJz8nIGZvciBoZWxwLiIpOworCSAgICBzaG93X2NvbG9yX2F0dHIoZmcsIGJnLCB0eCk7CisJICAgIHByaW50dygiICBBQ1MgKCVkKSIsIGFjICE9IDApOworCisJICAgIHJlZnJlc2goKTsKKwl9IHdoaWxlICh3aWRlX2F0dHJfZ2V0YygmbiwgJmZnLCAmYmcsICZ0eCwgJmFjLCAmaywgbXlfc2l6ZSkpOworCisJc2V0X3dpZGVfYmFja2dyb3VuZCgwKTsKKwllcmFzZSgpOworCWVuZHdpbigpOworICAgIH0gZWxzZSB7CisJQ2Fubm90KCJkb2VzIG5vdCBzdXBwb3J0IGV4dGVuZGVkIHZpZGVvIGF0dHJpYnV0ZXMuIik7CisgICAgfQorfQorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29sb3Igc3VwcG9ydCB0ZXN0cworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgTkNVUlNFU19DT05TVCBjaGFyICp0aGVfY29sb3JfbmFtZXNbXSA9Cit7CisgICAgImJsYWNrIiwKKyAgICAicmVkIiwKKyAgICAiZ3JlZW4iLAorICAgICJ5ZWxsb3ciLAorICAgICJibHVlIiwKKyAgICAibWFnZW50YSIsCisgICAgImN5YW4iLAorICAgICJ3aGl0ZSIsCisgICAgIkJMQUNLIiwKKyAgICAiUkVEIiwKKyAgICAiR1JFRU4iLAorICAgICJZRUxMT1ciLAorICAgICJCTFVFIiwKKyAgICAiTUFHRU5UQSIsCisgICAgIkNZQU4iLAorICAgICJXSElURSIKK307CisKK3N0YXRpYyB2b2lkCitzaG93X2NvbG9yX25hbWUoaW50IHksIGludCB4LCBpbnQgY29sb3IsIGJvb2wgd2lkZSkKK3sKKyAgICBpZiAobW92ZSh5LCB4KSAhPSBFUlIpIHsKKwljaGFyIHRlbXBbODBdOworCWludCB3aWR0aCA9IDg7CisKKwlpZiAod2lkZSkgeworCSAgICBzcHJpbnRmKHRlbXAsICIlMDJkIiwgY29sb3IpOworCSAgICB3aWR0aCA9IDQ7CisJfSBlbHNlIGlmIChjb2xvciA+PSA4KSB7CisJICAgIHNwcmludGYodGVtcCwgIlslMDJkXSIsIGNvbG9yKTsKKwl9IGVsc2UgaWYgKGNvbG9yIDwgMCkgeworCSAgICBzdHJjcHkodGVtcCwgImRlZmF1bHQiKTsKKwl9IGVsc2UgeworCSAgICBzcHJpbnRmKHRlbXAsICIlLipzIiwgMTYsIHRoZV9jb2xvcl9uYW1lc1tjb2xvcl0pOworCX0KKwlwcmludHcoIiUtKi4qcyIsIHdpZHRoLCB3aWR0aCwgdGVtcCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorY29sb3JfbGVnZW5kKFdJTkRPVyAqaGVscHdpbiwgYm9vbCB3aWRlKQoreworICAgIGludCByb3cgPSAxOworICAgIGludCBjb2wgPSAxOworCisgICAgTXZXUHJpbnR3KGhlbHB3aW4sIHJvdysrLCBjb2wsCisJICAgICAgIkVTQyB0byBleGl0LiIpOworICAgICsrcm93OworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJVc2UgdXAvZG93biBhcnJvdyB0byBzY3JvbGwgdGhyb3VnaCB0aGUgZGlzcGxheSBpZiBpdCBpcyIpOworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJsb25nZXIgdGhhbiBvbmUgc2NyZWVuLiBDb250cm9sL04gYW5kIENvbnRyb2wvUCBjYW4gYmUgdXNlZCIpOworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJpbiBwbGFjZSBvZiB1cC9kb3duIGFycm93LiAgVXNlIHBhZ2V1cC9wYWdlZG93biB0byBzY3JvbGwgYSIpOworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICJmdWxsIHNjcmVlbjsgY29udHJvbC9CIGFuZCBjb250cm9sL0YgY2FuIGJlIHVzZWQgaGVyZS4iKTsKKyAgICArK3JvdzsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiVG9nZ2xlczoiKTsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiICBhL0EgICAgIHRvZ2dsZSBhbHRjaGFyc2V0IG9mZi9vbiIpOworICAgIE12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCSAgICAgICIgIGIvQiAgICAgdG9nZ2xlIGJvbGQgb2ZmL29uIik7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCU12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCQkgICIgIGMvQyAgICAgY3ljbGUgdXNlZC1jb2xvcnMgdGhyb3VnaCA4LDE2LC4uLixDT0xPUlMiKTsKKyAgICB9CisgICAgTXZXUHJpbnR3KGhlbHB3aW4sIHJvdysrLCBjb2wsCisJICAgICAgIiAgbi9OICAgICB0b2dnbGUgdGV4dC9udW1iZXIgb24vb2ZmIik7CisgICAgTXZXUHJpbnR3KGhlbHB3aW4sIHJvdysrLCBjb2wsCisJICAgICAgIiAgci9SICAgICB0b2dnbGUgcmV2ZXJzZSBvbi9vZmYiKTsKKyAgICBNdldQcmludHcoaGVscHdpbiwgcm93KyssIGNvbCwKKwkgICAgICAiICB3L1cgICAgIHRvZ2dsZSB3aWR0aCBiZXR3ZWVuIDgvMTYgY29sb3JzIik7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKyAgICBpZiAod2lkZSkgeworCU12V1ByaW50dyhoZWxwd2luLCByb3crKywgY29sLAorCQkgICJXaWRlIGNoYXJhY3RlcnM6Iik7CisJTXZXUHJpbnR3KGhlbHB3aW4sIHJvdywgY29sLAorCQkgICIgIHgvWCAgICAgdG9nZ2xlIHRleHQgYmV0d2VlbiBBU0NJSSBhbmQgd2lkZS1jaGFyYWN0ZXIiKTsKKyAgICB9CisjZWxzZQorICAgICh2b2lkKSB3aWRlOworI2VuZGlmCit9CisKKyNkZWZpbmUgc2V0X2NvbG9yX3Rlc3QobmFtZSwgdmFsdWUpIGlmIChuYW1lICE9IHZhbHVlKSB7IG5hbWUgPSB2YWx1ZTsgYmFzZV9yb3cgPSAwOyB9CisKK3N0YXRpYyBpbnQKK2NvbG9yX2N5Y2xlKGludCBjdXJyZW50LCBpbnQgc3RlcCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVudDsKKyAgICBpZiAoc3RlcCA8IDApIHsKKwlpZiAoY3VycmVudCA8PSA4KSB7CisJICAgIHJlc3VsdCA9IENPTE9SUzsKKwl9IGVsc2UgeworCSAgICByZXN1bHQgPSA4OworCSAgICBpZiAoKHJlc3VsdCAqIDIpID4gQ09MT1JTKSB7CisJCXJlc3VsdCA9IENPTE9SUzsKKwkgICAgfSBlbHNlIHsKKwkJd2hpbGUgKChyZXN1bHQgKiAyKSA8IGN1cnJlbnQpIHsKKwkJICAgIHJlc3VsdCAqPSAyOworCQl9CisJICAgIH0KKwl9CisgICAgfSBlbHNlIHsKKwlpZiAoY3VycmVudCA+PSBDT0xPUlMpIHsKKwkgICAgcmVzdWx0ID0gODsKKwl9IGVsc2UgeworCSAgICByZXN1bHQgKj0gMjsKKwl9CisJaWYgKHJlc3VsdCA+IENPTE9SUykKKwkgICAgcmVzdWx0ID0gQ09MT1JTOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBnZW5lcmF0ZSBhIGNvbG9yIHRlc3QgcGF0dGVybiAqLworc3RhdGljIHZvaWQKK2NvbG9yX3Rlc3Qodm9pZCkKK3sKKyAgICBOQ1VSU0VTX1BBSVJTX1QgaTsKKyAgICBpbnQgdG9wID0gMCwgd2lkdGg7CisgICAgaW50IGJhc2Vfcm93ID0gMDsKKyAgICBpbnQgZ3JpZF90b3AgPSB0b3AgKyAzOworICAgIGludCBwYWdlX3NpemUgPSAoTElORVMgLSBncmlkX3RvcCk7CisgICAgaW50IHBhaXJzX21heDsKKyAgICBpbnQgY29sb3JzX21heCA9IENPTE9SUzsKKyAgICBpbnQgcm93X2xpbWl0OworICAgIGludCBwZXJfcm93OworICAgIGNoYXIgbnVtYmVyZWRbODBdOworICAgIGNvbnN0IGNoYXIgKmhlbGxvOworICAgIGJvb2wgZG9uZSA9IEZBTFNFOworICAgIGJvb2wgb3B0X2Fjc2MgPSBGQUxTRTsKKyAgICBib29sIG9wdF9ib2xkID0gRkFMU0U7CisgICAgYm9vbCBvcHRfcmV2cyA9IEZBTFNFOworICAgIGJvb2wgb3B0X251bXMgPSBGQUxTRTsKKyAgICBib29sIG9wdF93aWRlID0gRkFMU0U7CisgICAgV0lORE9XICpoZWxwd2luOworCisgICAgd2hpbGUgKCFkb25lKSB7CisJaW50IHNob3duID0gMDsKKworCXBhaXJzX21heCA9IFBBSVJfTlVNQkVSKEFfQ09MT1IpICsgMTsKKwlpZiAoY29sb3JzX21heCAqIGNvbG9yc19tYXggPD0gQ09MT1JfUEFJUlMpIHsKKwkgICAgaW50IGxpbWl0ID0gKGNvbG9yc19tYXggLSBtaW5fY29sb3JzKSAqIChjb2xvcnNfbWF4IC0gbWluX2NvbG9ycyk7CisJICAgIGlmIChwYWlyc19tYXggPiBsaW1pdCkKKwkJcGFpcnNfbWF4ID0gbGltaXQ7CisJfSBlbHNlIHsKKwkgICAgaWYgKHBhaXJzX21heCA+IENPTE9SX1BBSVJTKQorCQlwYWlyc19tYXggPSBDT0xPUl9QQUlSUzsKKwl9CisKKwkvKiB0aGlzIGFzc3VtZXMgYW4gODAtY29sdW1uIGxpbmUgKi8KKwlpZiAob3B0X3dpZGUpIHsKKwkgICAgd2lkdGggPSA0OworCSAgICBoZWxsbyA9ICJUZXN0IjsKKwkgICAgcGVyX3JvdyA9IChjb2xvcnNfbWF4ID4gOCkgPyAxNiA6IDg7CisJfSBlbHNlIHsKKwkgICAgd2lkdGggPSA4OworCSAgICBoZWxsbyA9ICJIZWxsbyI7CisJICAgIHBlcl9yb3cgPSA4OworCX0KKwlwZXJfcm93IC09IG1pbl9jb2xvcnM7CisKKwlyb3dfbGltaXQgPSAocGFpcnNfbWF4ICsgcGVyX3JvdyAtIDEpIC8gcGVyX3JvdzsKKworCW1vdmUoMCwgMCk7CisJKHZvaWQpIHByaW50dygiVGhlcmUgYXJlICVkIGNvbG9yIHBhaXJzIGFuZCAlZCBjb2xvcnMiLAorCQkgICAgICBwYWlyc19tYXgsIENPTE9SUyk7CisJaWYgKGNvbG9yc19tYXggIT0gQ09MT1JTKQorCSAgICAodm9pZCkgcHJpbnR3KCIgKHVzaW5nICVkIGNvbG9ycykiLCBjb2xvcnNfbWF4KTsKKwlpZiAobWluX2NvbG9ycykKKwkgICAgKHZvaWQpIGFkZHN0cigiIGJlc2lkZXMgJ2RlZmF1bHQnIik7CisKKwljbHJ0b2JvdCgpOworCU12UHJpbnR3KHRvcCArIDEsIDAsCisJCSAiJWR4JWQgbWF0cml4IG9mIGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvcnMsIGJvbGQgKiVzKlxuIiwKKwkJIHJvd19saW1pdCwKKwkJIHBlcl9yb3csCisJCSBvcHRfYm9sZCA/ICJvbiIgOiAib2ZmIik7CisKKwkvKiBzaG93IGNvbG9yIG5hbWVzL251bWJlcnMgYWNyb3NzIHRoZSB0b3AgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcGVyX3JvdzsgaSsrKQorCSAgICBzaG93X2NvbG9yX25hbWUodG9wICsgMiwgKGkgKyAxKSAqIHdpZHRoLCBpICsgbWluX2NvbG9ycywgb3B0X3dpZGUpOworCisJLyogc2hvdyBhIGdyaWQgb2YgY29sb3JzLCB3aXRoIGNvbG9yIG5hbWVzLyBudW1iZXJzIG9uIHRoZSBsZWZ0ICovCisJZm9yIChpID0gKE5DVVJTRVNfUEFJUlNfVCkgKGJhc2Vfcm93ICogcGVyX3Jvdyk7IGkgPCBwYWlyc19tYXg7IGkrKykgeworCSAgICBpbnQgcm93ID0gZ3JpZF90b3AgKyAoaSAvIHBlcl9yb3cpIC0gYmFzZV9yb3c7CisJICAgIGludCBjb2wgPSAoaSAlIHBlcl9yb3cgKyAxKSAqIHdpZHRoOworCSAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciA9IGk7CisKKyNkZWZpbmUgSW54VG9GRyhpKSAoTkNVUlNFU19DT0xPUl9UKSAoKGkgJSAoY29sb3JzX21heCAtIG1pbl9jb2xvcnMpKSArIG1pbl9jb2xvcnMpCisjZGVmaW5lIElueFRvQkcoaSkgKE5DVVJTRVNfQ09MT1JfVCkgKChpIC8gKGNvbG9yc19tYXggLSBtaW5fY29sb3JzKSkgKyBtaW5fY29sb3JzKQorCSAgICBpZiAocm93ID49IDAgJiYgbW92ZShyb3csIGNvbCkgIT0gRVJSKSB7CisJCU5DVVJTRVNfQ09MT1JfVCBmZyA9IElueFRvRkcoaSk7CisJCU5DVVJTRVNfQ09MT1JfVCBiZyA9IElueFRvQkcoaSk7CisKKwkJaW5pdF9wYWlyKHBhaXIsIGZnLCBiZyk7CisJCWF0dHJvbihDT0xPUl9QQUlSKHBhaXIpKTsKKwkJaWYgKG9wdF9hY3NjKQorCQkgICAgYXR0cm9uKEFfQUxUQ0hBUlNFVCk7CisJCWlmIChvcHRfYm9sZCkKKwkJICAgIGF0dHJvbihBX0JPTEQpOworCQlpZiAob3B0X3JldnMpCisJCSAgICBhdHRyb24oQV9SRVZFUlNFKTsKKworCQlpZiAob3B0X251bXMpIHsKKwkJICAgIHNwcmludGYobnVtYmVyZWQsICJ7JTAyWH0iLCAoaW50KSBpKTsKKwkJICAgIGhlbGxvID0gbnVtYmVyZWQ7CisJCX0KKwkJcHJpbnR3KCIlLSouKnMiLCB3aWR0aCwgd2lkdGgsIGhlbGxvKTsKKwkJKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworCisJCWlmICgoaSAlIHBlcl9yb3cpID09IDAgJiYgSW54VG9GRyhpKSA9PSBtaW5fY29sb3JzKSB7CisJCSAgICBzaG93X2NvbG9yX25hbWUocm93LCAwLCBJbnhUb0JHKGkpLCBvcHRfd2lkZSk7CisJCX0KKwkJKytzaG93bjsKKwkgICAgfSBlbHNlIGlmIChzaG93bikgeworCQlicmVhazsKKwkgICAgfQorCX0KKworCXN3aXRjaCAod0dldGNoYXIoc3Rkc2NyKSkgeworCWNhc2UgJ2EnOgorCSAgICBvcHRfYWNzYyA9IEZBTFNFOworCSAgICBicmVhazsKKwljYXNlICdBJzoKKwkgICAgb3B0X2Fjc2MgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdiJzoKKwkgICAgb3B0X2JvbGQgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnQic6CisJICAgIG9wdF9ib2xkID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYyc6CisJICAgIGNvbG9yc19tYXggPSBjb2xvcl9jeWNsZShjb2xvcnNfbWF4LCAtMSk7CisJICAgIGJyZWFrOworCWNhc2UgJ0MnOgorCSAgICBjb2xvcnNfbWF4ID0gY29sb3JfY3ljbGUoY29sb3JzX21heCwgMSk7CisJICAgIGJyZWFrOworCWNhc2UgJ24nOgorCSAgICBvcHRfbnVtcyA9IEZBTFNFOworCSAgICBicmVhazsKKwljYXNlICdOJzoKKwkgICAgb3B0X251bXMgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdyJzoKKwkgICAgb3B0X3JldnMgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnUic6CisJICAgIG9wdF9yZXZzID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSBjYXNlX1FVSVQ6CisJICAgIGRvbmUgPSBUUlVFOworCSAgICBjb250aW51ZTsKKwljYXNlICd3JzoKKwkgICAgc2V0X2NvbG9yX3Rlc3Qob3B0X3dpZGUsIEZBTFNFKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnVyc6CisJICAgIHNldF9jb2xvcl90ZXN0KG9wdF93aWRlLCBUUlVFKTsKKwkgICAgYnJlYWs7CisJY2FzZSBDVFJMKCdwJyk6CisJY2FzZSBLRVlfVVA6CisJICAgIGlmIChiYXNlX3JvdyA8PSAwKSB7CisJCWJlZXAoKTsKKwkgICAgfSBlbHNlIHsKKwkJYmFzZV9yb3cgLT0gMTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIENUUkwoJ24nKToKKwljYXNlIEtFWV9ET1dOOgorCSAgICBpZiAoYmFzZV9yb3cgKyBwYWdlX3NpemUgPj0gcm93X2xpbWl0KSB7CisJCWJlZXAoKTsKKwkgICAgfSBlbHNlIHsKKwkJYmFzZV9yb3cgKz0gMTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIENUUkwoJ2InKToKKwljYXNlIEtFWV9QUkVWSU9VUzoKKwljYXNlIEtFWV9QUEFHRToKKwkgICAgaWYgKGJhc2Vfcm93IDw9IDApIHsKKwkJYmVlcCgpOworCSAgICB9IGVsc2UgeworCQliYXNlX3JvdyAtPSAocGFnZV9zaXplIC0gMSk7CisJCWlmIChiYXNlX3JvdyA8IDApCisJCSAgICBiYXNlX3JvdyA9IDA7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBDVFJMKCdmJyk6CisJY2FzZSBLRVlfTkVYVDoKKwljYXNlIEtFWV9OUEFHRToKKwkgICAgaWYgKGJhc2Vfcm93ICsgcGFnZV9zaXplID49IHJvd19saW1pdCkgeworCQliZWVwKCk7CisJICAgIH0gZWxzZSB7CisJCWJhc2Vfcm93ICs9IHBhZ2Vfc2l6ZSAtIDE7CisJCWlmIChiYXNlX3JvdyArIHBhZ2Vfc2l6ZSA+PSByb3dfbGltaXQpIHsKKwkJICAgIGJhc2Vfcm93ID0gcm93X2xpbWl0IC0gcGFnZV9zaXplIC0gMTsKKwkJfQorCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJz8nOgorCSAgICBpZiAoKGhlbHB3aW4gPSBuZXd3aW4oTElORVMgLSAxLCBDT0xTIC0gMiwgMCwgMCkpICE9IDApIHsKKwkJYm94KGhlbHB3aW4sIDAsIDApOworCQljb2xvcl9sZWdlbmQoaGVscHdpbiwgRkFMU0UpOworCQl3R2V0Y2hhcihoZWxwd2luKTsKKwkJZGVsd2luKGhlbHB3aW4pOworCSAgICB9CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgY29udGludWU7CisJfQorICAgIH0KKworICAgIGVyYXNlKCk7CisgICAgZW5kd2luKCk7Cit9CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorLyogZ2VuZXJhdGUgYSBjb2xvciB0ZXN0IHBhdHRlcm4gKi8KK3N0YXRpYyB2b2lkCit3aWRlX2NvbG9yX3Rlc3Qodm9pZCkKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgdG9wID0gMCwgd2lkdGg7CisgICAgaW50IGJhc2Vfcm93ID0gMDsKKyAgICBpbnQgZ3JpZF90b3AgPSB0b3AgKyAzOworICAgIGludCBwYWdlX3NpemUgPSAoTElORVMgLSBncmlkX3RvcCk7CisgICAgaW50IHBhaXJzX21heCA9ICh1bnNpZ25lZCBzaG9ydCkgKC0xKTsKKyAgICBpbnQgY29sb3JzX21heCA9IENPTE9SUzsKKyAgICBpbnQgcm93X2xpbWl0OworICAgIGludCBwZXJfcm93OworICAgIGNoYXIgbnVtYmVyZWRbODBdOworICAgIGNvbnN0IGNoYXIgKmhlbGxvOworICAgIGJvb2wgZG9uZSA9IEZBTFNFOworICAgIGJvb2wgb3B0X2Fjc2MgPSBGQUxTRTsKKyAgICBib29sIG9wdF9ib2xkID0gRkFMU0U7CisgICAgYm9vbCBvcHRfcmV2cyA9IEZBTFNFOworICAgIGJvb2wgb3B0X3dpZGUgPSBGQUxTRTsKKyAgICBib29sIG9wdF9udW1zID0gRkFMU0U7CisgICAgYm9vbCBvcHRfeGNociA9IEZBTFNFOworICAgIHdjaGFyX3QgYnVmZmVyWzgwXTsKKyAgICBXSU5ET1cgKmhlbHB3aW47CisKKyAgICB3aGlsZSAoIWRvbmUpIHsKKwlpbnQgc2hvd24gPSAwOworCisJcGFpcnNfbWF4ID0gKHVuc2lnbmVkIHNob3J0KSAoLTEpOworCWlmIChjb2xvcnNfbWF4ICogY29sb3JzX21heCA8PSBDT0xPUl9QQUlSUykgeworCSAgICBpbnQgbGltaXQgPSAoY29sb3JzX21heCAtIG1pbl9jb2xvcnMpICogKGNvbG9yc19tYXggLSBtaW5fY29sb3JzKTsKKwkgICAgaWYgKHBhaXJzX21heCA+IGxpbWl0KQorCQlwYWlyc19tYXggPSBsaW1pdDsKKwl9IGVsc2UgeworCSAgICBpZiAocGFpcnNfbWF4ID4gQ09MT1JfUEFJUlMpCisJCXBhaXJzX21heCA9IENPTE9SX1BBSVJTOworCX0KKworCS8qIHRoaXMgYXNzdW1lcyBhbiA4MC1jb2x1bW4gbGluZSAqLworCWlmIChvcHRfd2lkZSkgeworCSAgICB3aWR0aCA9IDQ7CisJICAgIGhlbGxvID0gIlRlc3QiOworCSAgICBwZXJfcm93ID0gKGNvbG9yc19tYXggPiA4KSA/IDE2IDogODsKKwl9IGVsc2UgeworCSAgICB3aWR0aCA9IDg7CisJICAgIGhlbGxvID0gIkhlbGxvIjsKKwkgICAgcGVyX3JvdyA9IDg7CisJfQorCXBlcl9yb3cgLT0gbWluX2NvbG9yczsKKworCWlmIChvcHRfeGNocikgeworCSAgICBtYWtlX2Z1bGx3aWR0aF90ZXh0KGJ1ZmZlciwgaGVsbG8pOworCSAgICB3aWR0aCAqPSAyOworCSAgICBwZXJfcm93IC89IDI7CisJfSBlbHNlIHsKKwkgICAgbWFrZV9uYXJyb3dfdGV4dChidWZmZXIsIGhlbGxvKTsKKwl9CisKKwlyb3dfbGltaXQgPSAocGFpcnNfbWF4ICsgcGVyX3JvdyAtIDEpIC8gcGVyX3JvdzsKKworCW1vdmUoMCwgMCk7CisJKHZvaWQpIHByaW50dygiVGhlcmUgYXJlICVkIGNvbG9yIHBhaXJzIGFuZCAlZCBjb2xvcnMiLAorCQkgICAgICBwYWlyc19tYXgsIENPTE9SUyk7CisJaWYgKGNvbG9yc19tYXggIT0gQ09MT1JTKQorCSAgICAodm9pZCkgcHJpbnR3KCIgKHVzaW5nICVkIGNvbG9ycykiLCBjb2xvcnNfbWF4KTsKKwlpZiAobWluX2NvbG9ycykKKwkgICAgKHZvaWQpIGFkZHN0cigiIGJlc2lkZXMgJ2RlZmF1bHQnIik7CisKKwljbHJ0b2JvdCgpOworCU12UHJpbnR3KHRvcCArIDEsIDAsCisJCSAiJWR4JWQgbWF0cml4IG9mIGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvcnMsIGJvbGQgKiVzKlxuIiwKKwkJIHJvd19saW1pdCwKKwkJIHBlcl9yb3csCisJCSBvcHRfYm9sZCA/ICJvbiIgOiAib2ZmIik7CisKKwkvKiBzaG93IGNvbG9yIG5hbWVzL251bWJlcnMgYWNyb3NzIHRoZSB0b3AgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcGVyX3JvdzsgaSsrKQorCSAgICBzaG93X2NvbG9yX25hbWUodG9wICsgMiwgKGkgKyAxKSAqIHdpZHRoLCBpICsgbWluX2NvbG9ycywgb3B0X3dpZGUpOworCisJLyogc2hvdyBhIGdyaWQgb2YgY29sb3JzLCB3aXRoIGNvbG9yIG5hbWVzLyBudW1iZXJzIG9uIHRoZSBsZWZ0ICovCisJZm9yIChpID0gKGJhc2Vfcm93ICogcGVyX3Jvdyk7IGkgPCBwYWlyc19tYXg7IGkrKykgeworCSAgICBpbnQgcm93ID0gZ3JpZF90b3AgKyAoaSAvIHBlcl9yb3cpIC0gYmFzZV9yb3c7CisJICAgIGludCBjb2wgPSAoaSAlIHBlcl9yb3cgKyAxKSAqIHdpZHRoOworCSAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciA9IChOQ1VSU0VTX1BBSVJTX1QpIGk7CisKKwkgICAgaWYgKHJvdyA+PSAwICYmIG1vdmUocm93LCBjb2wpICE9IEVSUikgeworCQlpbml0X3BhaXIocGFpciwgSW54VG9GRyhpKSwgSW54VG9CRyhpKSk7CisJCSh2b2lkKSBjb2xvcl9zZXQocGFpciwgTlVMTCk7CisJCWlmIChvcHRfYWNzYykKKwkJICAgIGF0dHJfb24oQV9BTFRDSEFSU0VULCBOVUxMKTsKKwkJaWYgKG9wdF9ib2xkKQorCQkgICAgYXR0cl9vbihBX0JPTEQsIE5VTEwpOworCQlpZiAob3B0X3JldnMpCisJCSAgICBhdHRyX29uKEFfUkVWRVJTRSwgTlVMTCk7CisKKwkJaWYgKG9wdF9udW1zKSB7CisJCSAgICBzcHJpbnRmKG51bWJlcmVkLCAieyUwMlh9IiwgaSk7CisJCSAgICBpZiAob3B0X3hjaHIpIHsKKwkJCW1ha2VfZnVsbHdpZHRoX3RleHQoYnVmZmVyLCBudW1iZXJlZCk7CisJCSAgICB9IGVsc2UgeworCQkJbWFrZV9uYXJyb3dfdGV4dChidWZmZXIsIG51bWJlcmVkKTsKKwkJICAgIH0KKwkJfQorCQlhZGRud3N0cihidWZmZXIsIHdpZHRoKTsKKwkJKHZvaWQpIGF0dHJfc2V0KEFfTk9STUFMLCAwLCBOVUxMKTsKKworCQlpZiAoKGkgJSBwZXJfcm93KSA9PSAwICYmIElueFRvRkcoaSkgPT0gbWluX2NvbG9ycykgeworCQkgICAgc2hvd19jb2xvcl9uYW1lKHJvdywgMCwgSW54VG9CRyhpKSwgb3B0X3dpZGUpOworCQl9CisJCSsrc2hvd247CisJICAgIH0gZWxzZSBpZiAoc2hvd24pIHsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisKKwlzd2l0Y2ggKHdHZXRjaGFyKHN0ZHNjcikpIHsKKwljYXNlICdhJzoKKwkgICAgb3B0X2Fjc2MgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnQSc6CisJICAgIG9wdF9hY3NjID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYic6CisJICAgIG9wdF9ib2xkID0gRkFMU0U7CisJICAgIGJyZWFrOworCWNhc2UgJ0InOgorCSAgICBvcHRfYm9sZCA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ2MnOgorCSAgICBjb2xvcnNfbWF4ID0gY29sb3JfY3ljbGUoY29sb3JzX21heCwgLTEpOworCSAgICBicmVhazsKKwljYXNlICdDJzoKKwkgICAgY29sb3JzX21heCA9IGNvbG9yX2N5Y2xlKGNvbG9yc19tYXgsIDEpOworCSAgICBicmVhazsKKwljYXNlICduJzoKKwkgICAgb3B0X251bXMgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnTic6CisJICAgIG9wdF9udW1zID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAncic6CisJICAgIG9wdF9yZXZzID0gRkFMU0U7CisJICAgIGJyZWFrOworCWNhc2UgJ1InOgorCSAgICBvcHRfcmV2cyA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgY2FzZV9RVUlUOgorCSAgICBkb25lID0gVFJVRTsKKwkgICAgY29udGludWU7CisJY2FzZSAndyc6CisJICAgIHNldF9jb2xvcl90ZXN0KG9wdF93aWRlLCBGQUxTRSk7CisJICAgIGJyZWFrOworCWNhc2UgJ1cnOgorCSAgICBzZXRfY29sb3JfdGVzdChvcHRfd2lkZSwgVFJVRSk7CisJICAgIGJyZWFrOworCWNhc2UgJ3gnOgorCSAgICBvcHRfeGNociA9IEZBTFNFOworCSAgICBicmVhazsKKwljYXNlICdYJzoKKwkgICAgb3B0X3hjaHIgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlIENUUkwoJ3AnKToKKwljYXNlIEtFWV9VUDoKKwkgICAgaWYgKGJhc2Vfcm93IDw9IDApIHsKKwkJYmVlcCgpOworCSAgICB9IGVsc2UgeworCQliYXNlX3JvdyAtPSAxOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgQ1RSTCgnbicpOgorCWNhc2UgS0VZX0RPV046CisJICAgIGlmIChiYXNlX3JvdyArIHBhZ2Vfc2l6ZSA+PSByb3dfbGltaXQpIHsKKwkJYmVlcCgpOworCSAgICB9IGVsc2UgeworCQliYXNlX3JvdyArPSAxOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgQ1RSTCgnYicpOgorCWNhc2UgS0VZX1BSRVZJT1VTOgorCWNhc2UgS0VZX1BQQUdFOgorCSAgICBpZiAoYmFzZV9yb3cgPD0gMCkgeworCQliZWVwKCk7CisJICAgIH0gZWxzZSB7CisJCWJhc2Vfcm93IC09IChwYWdlX3NpemUgLSAxKTsKKwkJaWYgKGJhc2Vfcm93IDwgMCkKKwkJICAgIGJhc2Vfcm93ID0gMDsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIENUUkwoJ2YnKToKKwljYXNlIEtFWV9ORVhUOgorCWNhc2UgS0VZX05QQUdFOgorCSAgICBpZiAoYmFzZV9yb3cgKyBwYWdlX3NpemUgPj0gcm93X2xpbWl0KSB7CisJCWJlZXAoKTsKKwkgICAgfSBlbHNlIHsKKwkJYmFzZV9yb3cgKz0gcGFnZV9zaXplIC0gMTsKKwkJaWYgKGJhc2Vfcm93ICsgcGFnZV9zaXplID49IHJvd19saW1pdCkgeworCQkgICAgYmFzZV9yb3cgPSByb3dfbGltaXQgLSBwYWdlX3NpemUgLSAxOworCQl9CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnPyc6CisJICAgIGlmICgoaGVscHdpbiA9IG5ld3dpbihMSU5FUyAtIDEsIENPTFMgLSAyLCAwLCAwKSkgIT0gMCkgeworCQlib3goaGVscHdpbiwgMCwgMCk7CisJCWNvbG9yX2xlZ2VuZChoZWxwd2luLCBUUlVFKTsKKwkJd0dldGNoYXIoaGVscHdpbik7CisJCWRlbHdpbihoZWxwd2luKTsKKwkgICAgfQorCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBiZWVwKCk7CisJICAgIGNvbnRpbnVlOworCX0KKyAgICB9CisKKyAgICBlcmFzZSgpOworICAgIGVuZHdpbigpOworfQorI2VuZGlmIC8qIFVTRV9XSURFQ19TVVBQT1JUICovCisKK3N0YXRpYyB2b2lkCitjaGFuZ2VfY29sb3IoTkNVUlNFU19QQUlSU19UIGN1cnJlbnQsIGludCBmaWVsZCwgaW50IHZhbHVlLCBpbnQgdXNlYmFzZSkKK3sKKyAgICBOQ1VSU0VTX0NPTE9SX1QgcmVkLCBncmVlbiwgYmx1ZTsKKworICAgIGNvbG9yX2NvbnRlbnQoY3VycmVudCwgJnJlZCwgJmdyZWVuLCAmYmx1ZSk7CisKKyAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgY2FzZSAwOgorCXJlZCA9IChOQ1VSU0VTX0NPTE9SX1QpICh1c2ViYXNlID8gKHJlZCArIHZhbHVlKSA6IHZhbHVlKTsKKwlicmVhazsKKyAgICBjYXNlIDE6CisJZ3JlZW4gPSAoTkNVUlNFU19DT0xPUl9UKSAodXNlYmFzZSA/IChncmVlbiArIHZhbHVlKSA6IHZhbHVlKTsKKwlicmVhazsKKyAgICBjYXNlIDI6CisJYmx1ZSA9IChOQ1VSU0VTX0NPTE9SX1QpICh1c2ViYXNlID8gKGJsdWUgKyB2YWx1ZSkgOiB2YWx1ZSk7CisJYnJlYWs7CisgICAgfQorCisgICAgaWYgKGluaXRfY29sb3IoY3VycmVudCwgcmVkLCBncmVlbiwgYmx1ZSkgPT0gRVJSKQorCWJlZXAoKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfYWxsX2NvbG9ycyh2b2lkKQoreworICAgIE5DVVJTRVNfUEFJUlNfVCBjOworCisgICAgZm9yIChjID0gMDsgYyA8IENPTE9SUzsgKytjKQorCWluaXRfY29sb3IoYywKKwkJICAgYWxsX2NvbG9yc1tjXS5yZWQsCisJCSAgIGFsbF9jb2xvcnNbY10uZ3JlZW4sCisJCSAgIGFsbF9jb2xvcnNbY10uYmx1ZSk7Cit9CisKKyNkZWZpbmUgc2NhbGVkX3JnYihuKSAoKDI1NSAqIChuKSkgLyAxMDAwKQorCitzdGF0aWMgdm9pZAorY29sb3JfZWRpdCh2b2lkKQorLyogZGlzcGxheSB0aGUgY29sb3IgdGVzdCBwYXR0ZXJuLCB3aXRob3V0IHRyeWluZyB0byBlZGl0IGNvbG9ycyAqLworeworICAgIGludCBpOworICAgIGludCBjdXJyZW50ID0gMDsKKyAgICBpbnQgdGhpc19jID0gMCwgdmFsdWUgPSAwLCBmaWVsZCA9IDA7CisgICAgaW50IGxhc3RfYzsKKyAgICBpbnQgdG9wX2NvbG9yID0gMDsKKyAgICBpbnQgcGFnZV9zaXplID0gKExJTkVTIC0gNik7CisKKyAgICBpbml0X2FsbF9jb2xvcnMoKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2NvbG9yczsgaSsrKQorCWluaXRfcGFpcigoTkNVUlNFU19QQUlSU19UKSBpLAorCQkgIChOQ1VSU0VTX0NPTE9SX1QpIENPTE9SX1dISVRFLAorCQkgIChOQ1VSU0VTX0NPTE9SX1QpIGkpOworCisgICAgTXZQcmludHcoTElORVMgLSAyLCAwLCAiTnVtYmVyOiAlZCIsIHZhbHVlKTsKKworICAgIGRvIHsKKwlOQ1VSU0VTX0NPTE9SX1QgcmVkLCBncmVlbiwgYmx1ZTsKKworCWF0dHJvbihBX0JPTEQpOworCU12QWRkU3RyKDAsIDIwLCAiQ29sb3IgUkdCIFZhbHVlIEVkaXRpbmciKTsKKwlhdHRyb2ZmKEFfQk9MRCk7CisKKwlmb3IgKGkgPSAoTkNVUlNFU19DT0xPUl9UKSB0b3BfY29sb3I7CisJICAgICAoaSAtIHRvcF9jb2xvciA8IHBhZ2Vfc2l6ZSkKKwkgICAgICYmIChpIDwgbWF4X2NvbG9ycyk7IGkrKykgeworCSAgICBjaGFyIG51bWVyaWNbODBdOworCisJICAgIHNwcmludGYobnVtZXJpYywgIlslZF0iLCBpKTsKKwkgICAgTXZQcmludHcoMiArIGkgLSB0b3BfY29sb3IsIDAsICIlYyAlLThzOiIsCisJCSAgICAgKGkgPT0gY3VycmVudCA/ICc+JyA6ICcgJyksCisJCSAgICAgKGkgPCAoaW50KSBTSVpFT0YodGhlX2NvbG9yX25hbWVzKQorCQkgICAgICA/IHRoZV9jb2xvcl9uYW1lc1tpXSA6IG51bWVyaWMpKTsKKwkgICAgKHZvaWQpIGF0dHJzZXQoQXR0ckFyZyhDT0xPUl9QQUlSKGkpLCAwKSk7CisJICAgIGFkZHN0cigiICAgICAgICAiKTsKKwkgICAgKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworCisJICAgIGNvbG9yX2NvbnRlbnQoKE5DVVJTRVNfUEFJUlNfVCkgaSwgJnJlZCwgJmdyZWVuLCAmYmx1ZSk7CisJICAgIGFkZHN0cigiICAgUiA9ICIpOworCSAgICBpZiAoY3VycmVudCA9PSBpICYmIGZpZWxkID09IDApCisJCWF0dHJvbihBX1NUQU5ET1VUKTsKKwkgICAgcHJpbnR3KCIlMDRkIiwgKGludCkgcmVkKTsKKwkgICAgaWYgKGN1cnJlbnQgPT0gaSAmJiBmaWVsZCA9PSAwKQorCQkodm9pZCkgYXR0cnNldChBX05PUk1BTCk7CisJICAgIGFkZHN0cigiLCBHID0gIik7CisJICAgIGlmIChjdXJyZW50ID09IGkgJiYgZmllbGQgPT0gMSkKKwkJYXR0cm9uKEFfU1RBTkRPVVQpOworCSAgICBwcmludHcoIiUwNGQiLCAoaW50KSBncmVlbik7CisJICAgIGlmIChjdXJyZW50ID09IGkgJiYgZmllbGQgPT0gMSkKKwkJKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworCSAgICBhZGRzdHIoIiwgQiA9ICIpOworCSAgICBpZiAoY3VycmVudCA9PSBpICYmIGZpZWxkID09IDIpCisJCWF0dHJvbihBX1NUQU5ET1VUKTsKKwkgICAgcHJpbnR3KCIlMDRkIiwgKGludCkgYmx1ZSk7CisJICAgIGlmIChjdXJyZW50ID09IGkgJiYgZmllbGQgPT0gMikKKwkJKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworCSAgICAodm9pZCkgYXR0cnNldChBX05PUk1BTCk7CisJICAgIHByaW50dygiICggJTNkICUzZCAlM2QgKSIsCisJCSAgIChpbnQpIHNjYWxlZF9yZ2IocmVkKSwKKwkJICAgKGludCkgc2NhbGVkX3JnYihncmVlbiksCisJCSAgIChpbnQpIHNjYWxlZF9yZ2IoYmx1ZSkpOworCX0KKworCU12QWRkU3RyKExJTkVTIC0gMywgMCwKKwkJICJVc2UgdXAvZG93biB0byBzZWxlY3QgYSBjb2xvciwgbGVmdC9yaWdodCB0byBjaGFuZ2UgZmllbGRzLiIpOworCU12QWRkU3RyKExJTkVTIC0gMiwgMCwKKwkJICJNb2RpZnkgZmllbGQgYnkgdHlwaW5nIG5ubj0sIG5ubi0sIG9yIG5ubisuICA/IGZvciBoZWxwLiIpOworCisJbW92ZSgyICsgY3VycmVudCAtIHRvcF9jb2xvciwgMCk7CisKKwlsYXN0X2MgPSB0aGlzX2M7CisJdGhpc19jID0gR2V0Y2hhcigpOworCWlmICh0aGlzX2MgPCAyNTYgJiYgaXNkaWdpdCh0aGlzX2MpICYmICFpc2RpZ2l0KGxhc3RfYykpCisJICAgIHZhbHVlID0gMDsKKworCXN3aXRjaCAodGhpc19jKSB7CisJY2FzZSBDVFJMKCdiJyk6CisJY2FzZSBLRVlfUFBBR0U6CisJICAgIGlmIChjdXJyZW50ID4gMCkKKwkJY3VycmVudCAtPSAocGFnZV9zaXplIC0gMSk7CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKworCWNhc2UgQ1RSTCgnZicpOgorCWNhc2UgS0VZX05QQUdFOgorCSAgICBpZiAoY3VycmVudCA8IChtYXhfY29sb3JzIC0gMSkpCisJCWN1cnJlbnQgKz0gKHBhZ2Vfc2l6ZSAtIDEpOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIENUUkwoJ3AnKToKKwljYXNlIEtFWV9VUDoKKwkgICAgY3VycmVudCA9IChjdXJyZW50ID09IDAgPyAobWF4X2NvbG9ycyAtIDEpIDogY3VycmVudCAtIDEpOworCSAgICBicmVhazsKKworCWNhc2UgQ1RSTCgnbicpOgorCWNhc2UgS0VZX0RPV046CisJICAgIGN1cnJlbnQgPSAoY3VycmVudCA9PSAobWF4X2NvbG9ycyAtIDEpID8gMCA6IGN1cnJlbnQgKyAxKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIEtFWV9SSUdIVDoKKwkgICAgZmllbGQgPSAoZmllbGQgPT0gMiA/IDAgOiBmaWVsZCArIDEpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGZpZWxkID0gKGZpZWxkID09IDAgPyAyIDogZmllbGQgLSAxKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICcwJzoKKwljYXNlICcxJzoKKwljYXNlICcyJzoKKwljYXNlICczJzoKKwljYXNlICc0JzoKKwljYXNlICc1JzoKKwljYXNlICc2JzoKKwljYXNlICc3JzoKKwljYXNlICc4JzoKKwljYXNlICc5JzoKKwkgICAgdmFsdWUgPSB2YWx1ZSAqIDEwICsgKHRoaXNfYyAtICcwJyk7CisJICAgIGJyZWFrOworCisJY2FzZSAnKyc6CisJICAgIGNoYW5nZV9jb2xvcigoTkNVUlNFU19QQUlSU19UKSBjdXJyZW50LCBmaWVsZCwgdmFsdWUsIDEpOworCSAgICBicmVhazsKKworCWNhc2UgJy0nOgorCSAgICBjaGFuZ2VfY29sb3IoKE5DVVJTRVNfUEFJUlNfVCkgY3VycmVudCwgZmllbGQsIC12YWx1ZSwgMSk7CisJICAgIGJyZWFrOworCisJY2FzZSAnPSc6CisJICAgIGNoYW5nZV9jb2xvcigoTkNVUlNFU19QQUlSU19UKSBjdXJyZW50LCBmaWVsZCwgdmFsdWUsIDApOworCSAgICBicmVhazsKKworCWNhc2UgJz8nOgorCSAgICBlcmFzZSgpOworCSAgICBQKCIgICAgICAgICAgICAgICAgICAgICAgUkdCIFZhbHVlIEVkaXRpbmcgSGVscCIpOworCSAgICBQKCIiKTsKKwkgICAgUCgiWW91IGFyZSBpbiB0aGUgUkdCIHZhbHVlIGVkaXRvci4gIFVzZSB0aGUgYXJyb3cga2V5cyB0byBzZWxlY3Qgb25lIG9mIik7CisJICAgIFAoInRoZSBmaWVsZHMgaW4gb25lIG9mIHRoZSBSR0IgdHJpcGxlcyBvZiB0aGUgY3VycmVudCBjb2xvcnM7IHRoZSBvbmUiKTsKKwkgICAgUCgiY3VycmVudGx5IHNlbGVjdGVkIHdpbGwgYmUgcmV2ZXJzZS12aWRlbyBoaWdobGlnaHRlZC4iKTsKKwkgICAgUCgiIik7CisJICAgIFAoIlRvIGNoYW5nZSBhIGZpZWxkLCBlbnRlciB0aGUgZGlnaXRzIG9mIHRoZSBuZXcgdmFsdWU7IHRoZXkgYXJlIGVjaG9lZCIpOworCSAgICBQKCJhcyBlbnRlcmVkLiAgRmluaXNoIGJ5IHR5cGluZyBgPScuICBUaGUgY2hhbmdlIHdpbGwgdGFrZSBlZmZlY3QgaW5zdGFudGx5LiIpOworCSAgICBQKCJUbyBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGEgdmFsdWUsIHVzZSB0aGUgc2FtZSBwcm9jZWR1cmUsIGJ1dCBmaW5pc2giKTsKKwkgICAgUCgid2l0aCBhIGArJyBvciBgLScuIik7CisJICAgIFAoIiIpOworCSAgICBQKCJQcmVzcyAnbScgdG8gaW52b2tlIHRoZSB0b3AtbGV2ZWwgbWVudSB3aXRoIHRoZSBjdXJyZW50IGNvbG9yIHNldHRpbmdzLiIpOworCSAgICBQKCJUbyBxdWl0LCBkbyBFU0MiKTsKKworCSAgICBQYXVzZSgpOworCSAgICBlcmFzZSgpOworCSAgICBicmVhazsKKworCWNhc2UgJ20nOgorCSAgICBlbmR3aW4oKTsKKwkgICAgbWFpbl9tZW51KEZBTFNFKTsKKwkgICAgZm9yIChpID0gMDsgaSA8IG1heF9jb2xvcnM7IGkrKykKKwkJaW5pdF9wYWlyKChOQ1VSU0VTX1BBSVJTX1QpIGksCisJCQkgIChOQ1VSU0VTX0NPTE9SX1QpIENPTE9SX1dISVRFLAorCQkJICAoTkNVUlNFU19DT0xPUl9UKSBpKTsKKwkgICAgcmVmcmVzaCgpOworCSAgICBicmVhazsKKworCWNhc2UgY2FzZV9RVUlUOgorCSAgICBicmVhazsKKworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisJaWYgKGN1cnJlbnQgPCAwKQorCSAgICBjdXJyZW50ID0gMDsKKwlpZiAoY3VycmVudCA+PSBtYXhfY29sb3JzKQorCSAgICBjdXJyZW50ID0gbWF4X2NvbG9ycyAtIDE7CisJaWYgKGN1cnJlbnQgPCB0b3BfY29sb3IpCisJICAgIHRvcF9jb2xvciA9IGN1cnJlbnQ7CisJaWYgKGN1cnJlbnQgLSB0b3BfY29sb3IgPj0gcGFnZV9zaXplKQorCSAgICB0b3BfY29sb3IgPSBjdXJyZW50IC0gKHBhZ2Vfc2l6ZSAtIDEpOworCisJTXZQcmludHcoTElORVMgLSAxLCAwLCAiTnVtYmVyOiAlZCIsIHZhbHVlKTsKKwljbHJ0b2VvbCgpOworICAgIH0gd2hpbGUKKwkoIWlzUXVpdCh0aGlzX2MpKTsKKworICAgIGVyYXNlKCk7CisKKyAgICAvKgorICAgICAqIG5jdXJzZXMgZG9lcyBub3QgcmVzZXQgZWFjaCBjb2xvciBpbmRpdmlkdWFsbHkgd2hlbiBjYWxsaW5nIGVuZHdpbigpLgorICAgICAqLworICAgIGluaXRfYWxsX2NvbG9ycygpOworCisgICAgZW5kd2luKCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQWx0ZXJuYXRlIGNoYXJhY3Rlci1zZXQgc3R1ZmYKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBib29sCitjeWNsZV9hdHRyKGludCBjaCwgdW5zaWduZWQgKmF0X2NvZGUsIGNodHlwZSAqYXR0ciwgQVRUUl9UQkwgKiBsaXN0LCB1bnNpZ25lZCBsaW1pdCkKK3sKKyAgICBib29sIHJlc3VsdCA9IFRSVUU7CisKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgY2FzZSAndic6CisJaWYgKCgqYXRfY29kZSArPSAxKSA+PSBsaW1pdCkKKwkgICAgKmF0X2NvZGUgPSAwOworCWJyZWFrOworICAgIGNhc2UgJ1YnOgorCWlmICgqYXRfY29kZSA9PSAwKQorCSAgICAqYXRfY29kZSA9IGxpbWl0IC0gMTsKKwllbHNlCisJICAgICphdF9jb2RlIC09IDE7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlyZXN1bHQgPSBGQUxTRTsKKwlicmVhazsKKyAgICB9CisgICAgaWYgKHJlc3VsdCkKKwkqYXR0ciA9IGxpc3RbKmF0X2NvZGVdLmF0dHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wKK2N5Y2xlX2NvbG9ycyhpbnQgY2gsIGludCAqZmcsIGludCAqYmcsIE5DVVJTRVNfUEFJUlNfVCAqcGFpcikKK3sKKyAgICBib29sIHJlc3VsdCA9IEZBTFNFOworCisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwlyZXN1bHQgPSBUUlVFOworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdGJzoKKwkgICAgaWYgKCgqZmcgLT0gMSkgPCAwKQorCQkqZmcgPSBDT0xPUlMgLSAxOworCSAgICBicmVhazsKKwljYXNlICdmJzoKKwkgICAgaWYgKCgqZmcgKz0gMSkgPj0gQ09MT1JTKQorCQkqZmcgPSAwOworCSAgICBicmVhazsKKwljYXNlICdCJzoKKwkgICAgaWYgKCgqYmcgLT0gMSkgPCAwKQorCQkqYmcgPSBDT0xPUlMgLSAxOworCSAgICBicmVhazsKKwljYXNlICdiJzoKKwkgICAgaWYgKCgqYmcgKz0gMSkgPj0gQ09MT1JTKQorCQkqYmcgPSAwOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICByZXN1bHQgPSBGQUxTRTsKKwkgICAgYnJlYWs7CisJfQorCWlmIChyZXN1bHQpIHsKKwkgICAgKnBhaXIgPSAoTkNVUlNFU19QQUlSU19UKSAoKmZnICE9IENPTE9SX0JMQUNLIHx8ICpiZyAhPSBDT0xPUl9CTEFDSyk7CisJICAgIGlmICgqcGFpciAhPSAwKSB7CisJCSpwYWlyID0gMTsKKwkJaWYgKGluaXRfcGFpcigqcGFpciwKKwkJCSAgICAgIChOQ1VSU0VTX0NPTE9SX1QpICpmZywKKwkJCSAgICAgIChOQ1VSU0VTX0NPTE9SX1QpICpiZykgPT0gRVJSKSB7CisJCSAgICByZXN1bHQgPSBGQUxTRTsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNvZnQta2V5IGxhYmVsIHRlc3QKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIFVTRV9TT0ZUS0VZUworCisjZGVmaW5lIFNMS19IRUxQIDE3CisjZGVmaW5lIFNMS19XT1JLIChTTEtfSEVMUCArIDMpCisKK3N0YXRpYyB2b2lkCitzbGtfaGVscCh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YWJsZVtdID0KKyAgICB7CisJIkF2YWlsYWJsZSBjb21tYW5kcyBhcmU6IgorCSwiIgorCSwiXkwgICAgICAgICAtLSByZXBhaW50IHRoaXMgbWVzc2FnZSBhbmQgYWN0aXZhdGUgc29mdCBrZXlzIgorCSwiYS9kICAgICAgICAtLSBhY3RpdmF0ZS9kaXNhYmxlIHNvZnQga2V5cyIKKwksImMgICAgICAgICAgLS0gc2V0IGNlbnRlcmVkIGZvcm1hdCBmb3IgbGFiZWxzIgorCSwibCAgICAgICAgICAtLSBzZXQgbGVmdC1qdXN0aWZpZWQgZm9ybWF0IGZvciBsYWJlbHMiCisJLCJyICAgICAgICAgIC0tIHNldCByaWdodC1qdXN0aWZpZWQgZm9ybWF0IGZvciBsYWJlbHMiCisJLCJbMTIzNDU2NzhdIC0tIHNldCBsYWJlbDsgbGFiZWxzIGFyZSBudW1iZXJlZCAxIHRocm91Z2ggOCIKKwksImUgICAgICAgICAgLS0gZXJhc2Ugc3Rkc2NyIChzaG91bGQgbm90IGVyYXNlIGxhYmVscykiCisJLCJzICAgICAgICAgIC0tIHRlc3Qgc2Nyb2xsaW5nIG9mIHNob3J0ZW5lZCBzY3JlZW4iCisJLCJ2L1YgICAgICAgIC0tIGN5Y2xlIHRocm91Z2ggdmlkZW8gYXR0cmlidXRlcyIKKyNpZiBIQVZFX1NMS19DT0xPUgorCSwiRi9mL0IvYiAgICAtLSBjeWNsZSB0aHJvdWdoIGZvcmVncm91bmQvYmFja2dyb3VuZCBjb2xvcnMiCisjZW5kaWYKKwksIkVTQyAgICAgICAgLS0gcmV0dXJuIHRvIG1haW4gbWVudSIKKwksIiIKKwksIk5vdGU6IGlmIGFjdGl2YXRpbmcgdGhlIHNvZnQga2V5cyBjYXVzZXMgeW91ciB0ZXJtaW5hbCB0byBzY3JvbGwgdXAiCisJLCJvbmUgbGluZSwgeW91ciB0ZXJtaW5hbCBhdXRvLXNjcm9sbHMgd2hlbiBhbnl0aGluZyBpcyB3cml0dGVuIHRvIHRoZSIKKwksImxhc3Qgc2NyZWVuIHBvc2l0aW9uLiAgVGhlIG5jdXJzZXMgY29kZSBkb2VzIG5vdCB5ZXQgaGFuZGxlIHRoaXMiCisJLCJncmFjZWZ1bGx5LiIKKyAgICB9OworICAgIHVuc2lnbmVkIGo7CisKKyAgICBtb3ZlKDIsIDApOworICAgIGZvciAoaiA9IDA7IGogPCBTSVpFT0YodGFibGUpOyArK2opIHsKKwlQKHRhYmxlW2pdKTsKKyAgICB9CisgICAgcmVmcmVzaCgpOworfQorCisjaWYgSEFWRV9TTEtfQ09MT1IKK3N0YXRpYyB2b2lkCitjYWxsX3Nsa19jb2xvcihpbnQgZmcsIGludCBiZykKK3sKKyAgICBpbml0X3BhaXIoMSwgKE5DVVJTRVNfQ09MT1JfVCkgYmcsIChOQ1VSU0VTX0NPTE9SX1QpIGZnKTsKKyAgICBzbGtfY29sb3IoMSk7CisgICAgTXZQcmludHcoU0xLX1dPUkssIDAsICJDb2xvcnMgJWQvJWRcbiIsIGZnLCBiZyk7CisgICAgY2xydG9lb2woKTsKKyAgICBzbGtfdG91Y2goKTsKKyAgICBzbGtfbm91dHJlZnJlc2goKTsKKyAgICByZWZyZXNoKCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK3Nsa190ZXN0KHZvaWQpCisvKiBleGVyY2lzZSB0aGUgc29mdCBrZXlzICovCit7CisgICAgaW50IGMsIGZtdCA9IDE7CisgICAgY2hhciBidWZbOV07CisgICAgY2hhciAqczsKKyAgICBjaHR5cGUgYXR0ciA9IEFfTk9STUFMOworICAgIHVuc2lnbmVkIGF0X2NvZGUgPSAwOworI2lmIEhBVkVfU0xLX0NPTE9SCisgICAgaW50IGZnID0gQ09MT1JfQkxBQ0s7CisgICAgaW50IGJnID0gQ09MT1JfV0hJVEU7CisgICAgTkNVUlNFU19QQUlSU19UIHBhaXIgPSAwOworI2VuZGlmCisgICAgQVRUUl9UQkwgbXlfbGlzdFtTSVpFT0YoYXR0cnNfdG9fdGVzdCldOworICAgIHVuc2lnbmVkIG15X3NpemUgPSBpbml0X2F0dHJfbGlzdChteV9saXN0LCB0ZXJtYXR0cnMoKSk7CisKKyAgICBjID0gQ1RSTCgnbCcpOworI2lmIEhBVkVfU0xLX0NPTE9SCisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwljYWxsX3Nsa19jb2xvcihmZywgYmcpOworICAgIH0KKyNlbmRpZgorCisgICAgZG8geworCW1vdmUoMCwgMCk7CisJc3dpdGNoIChjKSB7CisJY2FzZSBDVFJMKCdsJyk6CisJICAgIGVyYXNlKCk7CisJICAgIGF0dHJvbihBX0JPTEQpOworCSAgICBNdkFkZFN0cigwLCAyMCwgIlNvZnQgS2V5IEV4ZXJjaXNlciIpOworCSAgICBhdHRyb2ZmKEFfQk9MRCk7CisKKwkgICAgc2xrX2hlbHAoKTsKKwkgICAgLyogZmFsbCB0aHJvdWdoICovCisKKwljYXNlICdhJzoKKwkgICAgc2xrX3Jlc3RvcmUoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdlJzoKKwkgICAgd2NsZWFyKHN0ZHNjcik7CisJICAgIGJyZWFrOworCisJY2FzZSAncyc6CisJICAgIE12UHJpbnR3KFNMS19XT1JLLCAwLCAiUHJlc3MgUSB0byBzdG9wIHRoZSBzY3JvbGxpbmctdGVzdDogIik7CisJICAgIHdoaWxlICgoYyA9IEdldGNoYXIoKSkgIT0gJ1EnICYmIChjICE9IEVSUikpCisJCWFkZGNoKChjaHR5cGUpIGMpOworCSAgICBicmVhazsKKworCWNhc2UgJ2QnOgorCSAgICBzbGtfY2xlYXIoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdsJzoKKwkgICAgZm10ID0gMDsKKwkgICAgYnJlYWs7CisKKwljYXNlICdjJzoKKwkgICAgZm10ID0gMTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdyJzoKKwkgICAgZm10ID0gMjsKKwkgICAgYnJlYWs7CisKKwljYXNlICcxJzoKKwljYXNlICcyJzoKKwljYXNlICczJzoKKwljYXNlICc0JzoKKwljYXNlICc1JzoKKwljYXNlICc2JzoKKwljYXNlICc3JzoKKwljYXNlICc4JzoKKwkgICAgTXZBZGRTdHIoU0xLX1dPUkssIDAsICJQbGVhc2UgZW50ZXIgdGhlIGxhYmVsIHZhbHVlOiAiKTsKKwkgICAgc3RyY3B5KGJ1ZiwgIiIpOworCSAgICBpZiAoKHMgPSBzbGtfbGFiZWwoYyAtICcwJykpICE9IDApIHsKKwkJc3RybmNweShidWYsIHMsIChzaXplX3QpIDgpOworCSAgICB9CisJICAgIHdHZXRzdHJpbmcoc3Rkc2NyLCBidWYsIDgpOworCSAgICBzbGtfc2V0KChjIC0gJzAnKSwgYnVmLCBmbXQpOworCSAgICBzbGtfcmVmcmVzaCgpOworCSAgICBtb3ZlKFNMS19XT1JLLCAwKTsKKwkgICAgY2xydG9ib3QoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIGNhc2VfUVVJVDoKKwkgICAgZ290byBkb25lOworCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIGRlZmluZWQoS0VZX1JFU0laRSkgJiYgSEFWRV9XUkVTSVpFCisJY2FzZSBLRVlfUkVTSVpFOgorCSAgICB3bm91dHJlZnJlc2goc3Rkc2NyKTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKworCWRlZmF1bHQ6CisJICAgIGlmIChjeWNsZV9hdHRyKGMsICZhdF9jb2RlLCAmYXR0ciwgbXlfbGlzdCwgbXlfc2l6ZSkpIHsKKwkJc2xrX2F0dHJzZXQoYXR0cik7CisJCXNsa190b3VjaCgpOworCQlzbGtfbm91dHJlZnJlc2goKTsKKwkJYnJlYWs7CisJICAgIH0KKyNpZiBIQVZFX1NMS19DT0xPUgorCSAgICBpZiAoY3ljbGVfY29sb3JzKGMsICZmZywgJmJnLCAmcGFpcikpIHsKKwkJaWYgKHVzZV9jb2xvcnMpIHsKKwkJICAgIGNhbGxfc2xrX2NvbG9yKGZnLCBiZyk7CisJCX0gZWxzZSB7CisJCSAgICBiZWVwKCk7CisJCX0KKwkJYnJlYWs7CisJICAgIH0KKyNlbmRpZgorCSAgICBiZWVwKCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9IHdoaWxlICghaXNRdWl0KGMgPSBHZXRjaGFyKCkpKTsKKworICBkb25lOgorICAgIHNsa19jbGVhcigpOworICAgIGVyYXNlKCk7CisgICAgZW5kd2luKCk7Cit9CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorI2RlZmluZSBTTEtMRU4gOAorc3RhdGljIHZvaWQKK3dpZGVfc2xrX3Rlc3Qodm9pZCkKKy8qIGV4ZXJjaXNlIHRoZSBzb2Z0IGtleXMgKi8KK3sKKyAgICBpbnQgYywgZm10ID0gMTsKKyAgICB3Y2hhcl90IGJ1ZltTTEtMRU4gKyAxXTsKKyAgICBjaGFyICpzOworICAgIGNodHlwZSBhdHRyID0gQV9OT1JNQUw7CisgICAgdW5zaWduZWQgYXRfY29kZSA9IDA7CisgICAgaW50IGZnID0gQ09MT1JfQkxBQ0s7CisgICAgaW50IGJnID0gQ09MT1JfV0hJVEU7CisgICAgTkNVUlNFU19QQUlSU19UIHBhaXIgPSAwOworICAgIEFUVFJfVEJMIG15X2xpc3RbU0laRU9GKGF0dHJzX3RvX3Rlc3QpXTsKKyAgICB1bnNpZ25lZCBteV9zaXplID0gaW5pdF9hdHRyX2xpc3QobXlfbGlzdCwgdGVybV9hdHRycygpKTsKKworICAgIGMgPSBDVFJMKCdsJyk7CisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwljYWxsX3Nsa19jb2xvcihmZywgYmcpOworICAgIH0KKyAgICBkbyB7CisJbW92ZSgwLCAwKTsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlIENUUkwoJ2wnKToKKwkgICAgZXJhc2UoKTsKKwkgICAgYXR0cl9vbihXQV9CT0xELCBOVUxMKTsKKwkgICAgTXZBZGRTdHIoMCwgMjAsICJTb2Z0IEtleSBFeGVyY2lzZXIiKTsKKwkgICAgYXR0cl9vZmYoV0FfQk9MRCwgTlVMTCk7CisKKwkgICAgc2xrX2hlbHAoKTsKKwkgICAgLyogZmFsbCB0aHJvdWdoICovCisKKwljYXNlICdhJzoKKwkgICAgc2xrX3Jlc3RvcmUoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdlJzoKKwkgICAgd2NsZWFyKHN0ZHNjcik7CisJICAgIGJyZWFrOworCisJY2FzZSAncyc6CisJICAgIE12UHJpbnR3KFNMS19XT1JLLCAwLCAiUHJlc3MgUSB0byBzdG9wIHRoZSBzY3JvbGxpbmctdGVzdDogIik7CisJICAgIHdoaWxlICgoYyA9IEdldGNoYXIoKSkgIT0gJ1EnICYmIChjICE9IEVSUikpCisJCWFkZGNoKChjaHR5cGUpIGMpOworCSAgICBicmVhazsKKworCWNhc2UgJ2QnOgorCSAgICBzbGtfY2xlYXIoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdsJzoKKwkgICAgZm10ID0gMDsKKwkgICAgYnJlYWs7CisKKwljYXNlICdjJzoKKwkgICAgZm10ID0gMTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdyJzoKKwkgICAgZm10ID0gMjsKKwkgICAgYnJlYWs7CisKKwljYXNlICcxJzoKKwljYXNlICcyJzoKKwljYXNlICczJzoKKwljYXNlICc0JzoKKwljYXNlICc1JzoKKwljYXNlICc2JzoKKwljYXNlICc3JzoKKwljYXNlICc4JzoKKwkgICAgTXZBZGRTdHIoU0xLX1dPUkssIDAsICJQbGVhc2UgZW50ZXIgdGhlIGxhYmVsIHZhbHVlOiAiKTsKKwkgICAgKmJ1ZiA9IDA7CisJICAgIGlmICgocyA9IHNsa19sYWJlbChjIC0gJzAnKSkgIT0gMCkgeworCQljaGFyICp0ZW1wID0gc3RyZHVwKHMpOworCQlzaXplX3QgdXNlZCA9IHN0cmxlbih0ZW1wKTsKKwkJc2l6ZV90IHdhbnQgPSBTTEtMRU47CisJCXNpemVfdCB0ZXN0OworI2lmbmRlZiBzdGF0ZV91bnVzZWQKKwkJbWJzdGF0ZV90IHN0YXRlOworI2VuZGlmCisKKwkJYnVmWzBdID0gTCdcMCc7CisJCXdoaWxlICh3YW50ID4gMCAmJiB1c2VkICE9IDApIHsKKwkJICAgIGNvbnN0IGNoYXIgKmJhc2UgPSBzOworCQkgICAgcmVzZXRfbWJ5dGVzKHN0YXRlKTsKKwkJICAgIHRlc3QgPSBjb3VudF9tYnl0ZXMoYmFzZSwgMCwgJnN0YXRlKTsKKwkJICAgIGlmICh0ZXN0ID09IChzaXplX3QpIC0xKSB7CisJCQl0ZW1wWy0tdXNlZF0gPSAwOworCQkgICAgfSBlbHNlIGlmICh0ZXN0ID4gd2FudCkgeworCQkJdGVtcFstLXVzZWRdID0gMDsKKwkJICAgIH0gZWxzZSB7CisJCQlyZXNldF9tYnl0ZXMoc3RhdGUpOworCQkJdHJhbnNfbWJ5dGVzKGJ1ZiwgYmFzZSwgd2FudCwgJnN0YXRlKTsKKwkJCWJyZWFrOworCQkgICAgfQorCQl9CisJCWZyZWUodGVtcCk7CisJICAgIH0KKwkgICAgd0dldF93c3RyaW5nKHN0ZHNjciwgYnVmLCBTTEtMRU4pOworCSAgICBzbGtfd3NldCgoYyAtICcwJyksIGJ1ZiwgZm10KTsKKwkgICAgc2xrX3JlZnJlc2goKTsKKwkgICAgbW92ZShTTEtfV09SSywgMCk7CisJICAgIGNscnRvYm90KCk7CisJICAgIGJyZWFrOworCisJY2FzZSBjYXNlX1FVSVQ6CisJICAgIGdvdG8gZG9uZTsKKworCWNhc2UgJ0YnOgorCSAgICBpZiAodXNlX2NvbG9ycykgeworCQlmZyA9IChOQ1VSU0VTX0NPTE9SX1QpICgoZmcgKyAxKSAlIENPTE9SUyk7CisJCWNhbGxfc2xrX2NvbG9yKGZnLCBiZyk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnQic6CisJICAgIGlmICh1c2VfY29sb3JzKSB7CisJCWJnID0gKE5DVVJTRVNfQ09MT1JfVCkgKChiZyArIDEpICUgQ09MT1JTKTsKKwkJY2FsbF9zbGtfY29sb3IoZmcsIGJnKTsKKwkgICAgfQorCSAgICBicmVhazsKKyNpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChLRVlfUkVTSVpFKSAmJiBIQVZFX1dSRVNJWkUKKwljYXNlIEtFWV9SRVNJWkU6CisJICAgIHdub3V0cmVmcmVzaChzdGRzY3IpOworCSAgICBicmVhazsKKyNlbmRpZgorCWRlZmF1bHQ6CisJICAgIGlmIChjeWNsZV9hdHRyKGMsICZhdF9jb2RlLCAmYXR0ciwgbXlfbGlzdCwgbXlfc2l6ZSkpIHsKKwkJc2xrX2F0dHJfc2V0KGF0dHIsIChOQ1VSU0VTX0NPTE9SX1QpIChmZyB8fCBiZyksIE5VTEwpOworCQlzbGtfdG91Y2goKTsKKwkJc2xrX25vdXRyZWZyZXNoKCk7CisJCWJyZWFrOworCSAgICB9CisjaWYgSEFWRV9TTEtfQ09MT1IKKwkgICAgaWYgKGN5Y2xlX2NvbG9ycyhjLCAmZmcsICZiZywgJnBhaXIpKSB7CisJCWlmICh1c2VfY29sb3JzKSB7CisJCSAgICBjYWxsX3Nsa19jb2xvcihmZywgYmcpOworCQl9IGVsc2UgeworCQkgICAgYmVlcCgpOworCQl9CisJCWJyZWFrOworCSAgICB9CisjZW5kaWYKKwkgICAgYmVlcCgpOworCSAgICBicmVhazsKKwl9CisgICAgfSB3aGlsZSAoIWlzUXVpdChjID0gR2V0Y2hhcigpKSk7CisKKyAgZG9uZToKKyAgICBzbGtfY2xlYXIoKTsKKyAgICBlcmFzZSgpOworICAgIGVuZHdpbigpOworfQorI2VuZGlmCisjZW5kaWYgLyogU0xLX0lOSVQgKi8KKworc3RhdGljIHZvaWQKK3Nob3dfMjU2X2NoYXJzKGludCByZXBlYXQsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICB1bnNpZ25lZCBmaXJzdCA9IDA7CisgICAgdW5zaWduZWQgbGFzdCA9IDI1NTsKKyAgICB1bnNpZ25lZCBjb2RlOworICAgIGludCBjb3VudDsKKworICAgIGVyYXNlKCk7CisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgTXZQcmludHcoMCwgMjAsICJEaXNwbGF5IG9mIENoYXJhY3RlciBDb2RlcyAlIzB4IHRvICUjMHgiLAorCSAgICAgZmlyc3QsIGxhc3QpOworICAgIGF0dHJvZmYoQV9CT0xEKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICBmb3IgKGNvZGUgPSBmaXJzdDsgY29kZSA8PSBsYXN0OyArK2NvZGUpIHsKKwlpbnQgcm93ID0gKGludCkgKDIgKyAoY29kZSAvIDE2KSk7CisJaW50IGNvbCA9IChpbnQpICg1ICogKGNvZGUgJSAxNikpOworCUlHTk9SRV9SQyhtdmFkZGNoKHJvdywgY29sLCBjb2xvcmVkX2NodHlwZShjb2RlLCBhdHRyLCBwYWlyKSkpOworCWZvciAoY291bnQgPSAxOyBjb3VudCA8IHJlcGVhdDsgKytjb3VudCkgeworCSAgICBhZGRjaChjb2xvcmVkX2NodHlwZShjb2RlLCBhdHRyLCBwYWlyKSk7CisJfQorICAgIH0KKworfQorCisvKgorICogU2hvdyBhIHNsaWNlIG9mIDMyIGNoYXJhY3RlcnMsIGFsbG93aW5nIHRob3NlIHRvIGJlIHJlcGVhdGVkIHVwIHRvIHRoZQorICogc2NyZWVuJ3Mgd2lkdGguCisgKgorICogSVNPIDY0Mjk6ICBjb2RlcyAweDgwIHRvIDB4OWYgbWF5IGJlIGNvbnRyb2wgY2hhcmFjdGVycyB0aGF0IGNhdXNlIHRoZQorICogdGVybWluYWwgdG8gcGVyZm9ybSBmdW5jdGlvbnMuICBUaGUgcmVtYWluaW5nIGNvZGVzIGNhbiBiZSBncmFwaGljLgorICovCitzdGF0aWMgdm9pZAorc2hvd191cHBlcl9jaGFycyhpbnQgYmFzZSwgaW50IHBhZ2VzaXplLCBpbnQgcmVwZWF0LCBhdHRyX3QgYXR0ciwgTkNVUlNFU19QQUlSU19UIHBhaXIpCit7CisgICAgdW5zaWduZWQgY29kZTsKKyAgICB1bnNpZ25lZCBmaXJzdCA9ICh1bnNpZ25lZCkgYmFzZTsKKyAgICB1bnNpZ25lZCBsYXN0ID0gZmlyc3QgKyAodW5zaWduZWQpIHBhZ2VzaXplIC0gMjsKKyAgICBib29sIEMxID0gKGZpcnN0ID09IDEyOCk7CisgICAgaW50IHJlcGx5OworCisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdlByaW50dygwLCAyMCwgIkRpc3BsYXkgb2YgJXMgQ2hhcmFjdGVyIENvZGVzICVkIHRvICVkIiwKKwkgICAgIEMxID8gIkMxIiA6ICJHUiIsIGZpcnN0LCBsYXN0KTsKKyAgICBhdHRyb2ZmKEFfQk9MRCk7CisgICAgcmVmcmVzaCgpOworCisgICAgZm9yIChjb2RlID0gZmlyc3Q7IGNvZGUgPD0gbGFzdDsgY29kZSsrKSB7CisJaW50IGNvdW50ID0gcmVwZWF0OworCWludCByb3cgPSAyICsgKChpbnQpIChjb2RlIC0gZmlyc3QpICUgKHBhZ2VzaXplIC8gMikpOworCWludCBjb2wgPSAoKGludCkgKGNvZGUgLSBmaXJzdCkgLyAocGFnZXNpemUgLyAyKSkgKiBDT0xTIC8gMjsKKwljaGFyIHRtcFs4MF07CisJc3ByaW50Zih0bXAsICIlM3UgKDB4JXgpIiwgY29kZSwgY29kZSk7CisJTXZQcmludHcocm93LCBjb2wsICIlKnM6ICIsIENPTFMgLyA0LCB0bXApOworCisJZG8geworCSAgICBpZiAoQzEpCisJCW5vZGVsYXkoc3Rkc2NyLCBUUlVFKTsKKwkgICAgZWNob2NoYXIoY29sb3JlZF9jaHR5cGUoY29kZSwgYXR0ciwgcGFpcikpOworCSAgICBpZiAoQzEpIHsKKwkJLyogKHllcywgdGhpcyBfaXNfIGNydWRlKSAqLworCQl3aGlsZSAoKHJlcGx5ID0gR2V0Y2hhcigpKSAhPSBFUlIpIHsKKwkJICAgIGFkZGNoKFVDaGFyKHJlcGx5KSk7CisJCSAgICBuYXBtcygxMCk7CisJCX0KKwkJbm9kZWxheShzdGRzY3IsIEZBTFNFKTsKKwkgICAgfQorCX0gd2hpbGUgKC0tY291bnQgPiAwKTsKKyAgICB9Cit9CisKKyNkZWZpbmUgUENfQ09MUyA0CisKK3N0YXRpYyB2b2lkCitzaG93X3BjX2NoYXJzKGludCByZXBlYXQsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICB1bnNpZ25lZCBjb2RlOworCisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdlByaW50dygwLCAyMCwgIkRpc3BsYXkgb2YgUEMgQ2hhcmFjdGVyIENvZGVzIik7CisgICAgYXR0cm9mZihBX0JPTEQpOworICAgIHJlZnJlc2goKTsKKworICAgIGZvciAoY29kZSA9IDA7IGNvZGUgPCAxNjsgKytjb2RlKSB7CisJTXZQcmludHcoMiwgKGludCkgY29kZSAqIFBDX0NPTFMgKyA4LCAiJVgiLCBjb2RlKTsKKyAgICB9CisgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IDI1NjsgY29kZSsrKSB7CisJaW50IGNvdW50ID0gcmVwZWF0OworCWludCByb3cgPSAzICsgKGludCkgKGNvZGUgLyAxNikgKyAoY29kZSA+PSAxMjgpOworCWludCBjb2wgPSA4ICsgKGludCkgKGNvZGUgJSAxNikgKiBQQ19DT0xTOworCWlmICgoY29kZSAlIDE2KSA9PSAwKQorCSAgICBNdlByaW50dyhyb3csIDAsICIweCUwMng6IiwgY29kZSk7CisJbW92ZShyb3csIGNvbCk7CisJZG8geworCSAgICBzd2l0Y2ggKGNvZGUpIHsKKwkgICAgY2FzZSAnXG4nOgorCSAgICBjYXNlICdccic6CisJICAgIGNhc2UgJ1xiJzoKKwkgICAgY2FzZSAnXGYnOgorCSAgICBjYXNlICdcMDMzJzoKKwkgICAgY2FzZSAweDliOgorCQkvKgorCQkgKiBTa2lwIHRoZSBvbmVzIHRoYXQgZG8gbm90IHdvcmsuCisJCSAqLworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJYWRkY2goY29sb3JlZF9jaHR5cGUoY29kZSwgQV9BTFRDSEFSU0VUIHwgYXR0ciwgcGFpcikpOworCQlicmVhazsKKwkgICAgfQorCX0gd2hpbGUgKC0tY291bnQgPiAwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2JveF9jaGFycyhpbnQgcmVwZWF0LCBhdHRyX3QgYXR0ciwgTkNVUlNFU19QQUlSU19UIHBhaXIpCit7CisgICAgKHZvaWQpIHJlcGVhdDsKKworICAgIGF0dHIgfD0gKGF0dHJfdCkgQ09MT1JfUEFJUihwYWlyKTsKKworICAgIGVyYXNlKCk7CisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgTXZBZGRTdHIoMCwgMjAsICJEaXNwbGF5IG9mIHRoZSBBQ1MgTGluZS1EcmF3aW5nIFNldCIpOworICAgIGF0dHJvZmYoQV9CT0xEKTsKKyAgICByZWZyZXNoKCk7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgd2JvcmRlcihzdGRzY3IsCisJICAgIGNvbG9yZWRfY2h0eXBlKEFDU19WTElORSwJIGF0dHIsIHBhaXIpLAorCSAgICBjb2xvcmVkX2NodHlwZShBQ1NfVkxJTkUsCSBhdHRyLCBwYWlyKSwKKyAgICAgICAgICAgIGNvbG9yZWRfY2h0eXBlKEFDU19ITElORSwgICAgYXR0ciwgcGFpciksCisJICAgIGNvbG9yZWRfY2h0eXBlKEFDU19ITElORSwJIGF0dHIsIHBhaXIpLAorCSAgICBjb2xvcmVkX2NodHlwZShBQ1NfVUxDT1JORVIsIGF0dHIsIHBhaXIpLAorCSAgICBjb2xvcmVkX2NodHlwZShBQ1NfVVJDT1JORVIsIGF0dHIsIHBhaXIpLAorICAgICAgICAgICAgY29sb3JlZF9jaHR5cGUoQUNTX0xMQ09STkVSLCBhdHRyLCBwYWlyKSwKKwkgICAgY29sb3JlZF9jaHR5cGUoQUNTX0xSQ09STkVSLCBhdHRyLCBwYWlyKSk7CisgICAgTXZITGluZShMSU5FUyAvIDIsIDAsICAgICAgICBjb2xvcmVkX2NodHlwZShBQ1NfSExJTkUsIGF0dHIsIHBhaXIpLCBDT0xTKTsKKyAgICBNdlZMaW5lKDAsICAgICAgICAgQ09MUyAvIDIsIGNvbG9yZWRfY2h0eXBlKEFDU19WTElORSwgYXR0ciwgcGFpciksIExJTkVTKTsKKyAgICBNdkFkZENoKDAsICAgICAgICAgQ09MUyAvIDIsIGNvbG9yZWRfY2h0eXBlKEFDU19UVEVFLCAgYXR0ciwgcGFpcikpOworICAgIE12QWRkQ2goTElORVMgLyAyLCBDT0xTIC8gMiwgY29sb3JlZF9jaHR5cGUoQUNTX1BMVVMsICBhdHRyLCBwYWlyKSk7CisgICAgTXZBZGRDaChMSU5FUyAtIDEsIENPTFMgLyAyLCBjb2xvcmVkX2NodHlwZShBQ1NfQlRFRSwgIGF0dHIsIHBhaXIpKTsKKyAgICBNdkFkZENoKExJTkVTIC8gMiwgMCwgICAgICAgIGNvbG9yZWRfY2h0eXBlKEFDU19MVEVFLCAgYXR0ciwgcGFpcikpOworICAgIE12QWRkQ2goTElORVMgLyAyLCBDT0xTIC0gMSwgY29sb3JlZF9jaHR5cGUoQUNTX1JURUUsICBhdHRyLCBwYWlyKSk7CisgICAgLyogKklOREVOVC1PTiogKi8KKworfQorCitzdGF0aWMgaW50CitzaG93XzFfYWNzKGludCBuLCBpbnQgcmVwZWF0LCBjb25zdCBjaGFyICpuYW1lLCBjaHR5cGUgY29kZSkKK3sKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gMTY7CisgICAgaW50IHJvdyA9IDIgKyAobiAlIGhlaWdodCk7CisgICAgaW50IGNvbCA9IChuIC8gaGVpZ2h0KSAqIENPTFMgLyAyOworCisgICAgTXZQcmludHcocm93LCBjb2wsICIlKnMgOiAiLCBDT0xTIC8gNCwgbmFtZSk7CisgICAgZG8geworCWFkZGNoKGNvZGUpOworICAgIH0gd2hpbGUgKC0tcmVwZWF0ID4gMCk7CisgICAgcmV0dXJuIG4gKyAxOworfQorCitzdGF0aWMgdm9pZAorc2hvd19hY3NfY2hhcnMoaW50IHJlcGVhdCwgYXR0cl90IGF0dHIsIE5DVVJTRVNfUEFJUlNfVCBwYWlyKQorLyogZGlzcGxheSB0aGUgQUNTIGNoYXJhY3RlciBzZXQgKi8KK3sKKyAgICBpbnQgbjsKKworI2RlZmluZSBCT1RIKG5hbWUpICNuYW1lLCBjb2xvcmVkX2NodHlwZShuYW1lLCBhdHRyLCAoY2h0eXBlKSBwYWlyKQorCisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdkFkZFN0cigwLCAyMCwgIkRpc3BsYXkgb2YgdGhlIEFDUyBDaGFyYWN0ZXIgU2V0Iik7CisgICAgYXR0cm9mZihBX0JPTEQpOworICAgIHJlZnJlc2goKTsKKworICAgIG4gPSBzaG93XzFfYWNzKDAsIHJlcGVhdCwgQk9USChBQ1NfVUxDT1JORVIpKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX1VSQ09STkVSKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19MTENPUk5FUikpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfTFJDT1JORVIpKTsKKworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfTFRFRSkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfUlRFRSkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfVFRFRSkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfQlRFRSkpOworCisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19ITElORSkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfVkxJTkUpKTsKKworICAgIC8qCisgICAgICogSFBVWCdzIEFDUyBkZWZpbml0aW9ucyBhcmUgYnJva2VuIGhlcmUuICBKdXN0IGdpdmUgdXAuCisgICAgICovCisjaWYgIShkZWZpbmVkKF9faHB1eCkgJiYgIWRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSkKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX0xBUlJPVykpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfUkFSUk9XKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19VQVJST1cpKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX0RBUlJPVykpOworCisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19CTE9DSykpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfQk9BUkQpKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX0xBTlRFUk4pKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX0JVTExFVCkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfQ0tCT0FSRCkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfREVHUkVFKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19ESUFNT05EKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19QTE1JTlVTKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19QTFVTKSk7CisKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX0dFUVVBTCkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfTkVRVUFMKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19MRVFVQUwpKTsKKworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfU1RFUkxJTkcpKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX1BJKSk7CisgICAgbiA9IHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19TMSkpOworICAgIG4gPSBzaG93XzFfYWNzKG4sIHJlcGVhdCwgQk9USChBQ1NfUzMpKTsKKyAgICBuID0gc2hvd18xX2FjcyhuLCByZXBlYXQsIEJPVEgoQUNTX1M3KSk7CisgICAgKHZvaWQpIHNob3dfMV9hY3MobiwgcmVwZWF0LCBCT1RIKEFDU19TOSkpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCithY3NfZGlzcGxheSh2b2lkKQoreworICAgIGludCBjID0gJ2EnOworICAgIGludCBwYWdlc2l6ZSA9IDMyOworICAgIGNoYXIgKnRlcm0gPSBnZXRlbnYoIlRFUk0iKTsKKyAgICBjb25zdCBjaGFyICpwY2hfa2x1ZGdlID0gKCh0ZXJtICE9IDAgJiYgc3Ryc3RyKHRlcm0sICJsaW51eCIpKQorCQkJICAgICAgPyAicD1QQywgIgorCQkJICAgICAgOiAiIik7CisgICAgY2h0eXBlIGF0dHIgPSBBX05PUk1BTDsKKyAgICBpbnQgZGlnaXQgPSAwOworICAgIGludCByZXBlYXQgPSAxOworICAgIGludCBmZyA9IENPTE9SX0JMQUNLOworICAgIGludCBiZyA9IENPTE9SX0JMQUNLOworICAgIHVuc2lnbmVkIGF0X2NvZGUgPSAwOworICAgIE5DVVJTRVNfUEFJUlNfVCBwYWlyID0gMDsKKyAgICB2b2lkICgqbGFzdF9zaG93X2FjcykgKGludCwgYXR0cl90LCBOQ1VSU0VTX1BBSVJTX1QpID0gMDsKKyAgICBBVFRSX1RCTCBteV9saXN0W1NJWkVPRihhdHRyc190b190ZXN0KV07CisgICAgdW5zaWduZWQgbXlfc2l6ZSA9IGluaXRfYXR0cl9saXN0KG15X2xpc3QsIHRlcm1hdHRycygpKTsKKworICAgIGRvIHsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlIENUUkwoJ0wnKToKKwkgICAgUmVwYWludCgpOworCSAgICBicmVhazsKKwljYXNlICdhJzoKKwkgICAgVG9nZ2xlQWNzKGxhc3Rfc2hvd19hY3MsIHNob3dfYWNzX2NoYXJzKTsKKwkgICAgYnJlYWs7CisJY2FzZSAncCc6CisJICAgIGlmICgqcGNoX2tsdWRnZSkKKwkJVG9nZ2xlQWNzKGxhc3Rfc2hvd19hY3MsIHNob3dfcGNfY2hhcnMpOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIGlmIChwYWdlc2l6ZSA9PSAzMikgeworCQlwYWdlc2l6ZSA9IDI1NjsKKwkgICAgfSBlbHNlIHsKKwkJcGFnZXNpemUgPSAzMjsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICd4JzoKKwkgICAgVG9nZ2xlQWNzKGxhc3Rfc2hvd19hY3MsIHNob3dfYm94X2NoYXJzKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnMCc6CisJY2FzZSAnMSc6CisJY2FzZSAnMic6CisJY2FzZSAnMyc6CisJICAgIGRpZ2l0ID0gKGMgLSAnMCcpOworCSAgICBsYXN0X3Nob3dfYWNzID0gMDsKKwkgICAgYnJlYWs7CisJY2FzZSAnLSc6CisJICAgIGlmIChkaWdpdCA+IDApIHsKKwkJLS1kaWdpdDsKKwkJbGFzdF9zaG93X2FjcyA9IDA7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICcrJzoKKwkgICAgaWYgKGRpZ2l0IDwgMykgeworCQkrK2RpZ2l0OworCQlsYXN0X3Nob3dfYWNzID0gMDsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJz4nOgorCSAgICBpZiAocmVwZWF0IDwgKENPTFMgLyA0KSkKKwkJKytyZXBlYXQ7CisJICAgIGJyZWFrOworCWNhc2UgJzwnOgorCSAgICBpZiAocmVwZWF0ID4gMSkKKwkJLS1yZXBlYXQ7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGlmIChjeWNsZV9hdHRyKGMsICZhdF9jb2RlLCAmYXR0ciwgbXlfbGlzdCwgbXlfc2l6ZSkKKwkJfHwgY3ljbGVfY29sb3JzKGMsICZmZywgJmJnLCAmcGFpcikpIHsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwl9CisJaWYgKHBhZ2VzaXplICE9IDMyKSB7CisJICAgIHNob3dfMjU2X2NoYXJzKHJlcGVhdCwgYXR0ciwgcGFpcik7CisJfSBlbHNlIGlmIChsYXN0X3Nob3dfYWNzICE9IDApIHsKKwkgICAgbGFzdF9zaG93X2FjcyhyZXBlYXQsIGF0dHIsIHBhaXIpOworCX0gZWxzZSB7CisJICAgIHNob3dfdXBwZXJfY2hhcnMoZGlnaXQgKiBwYWdlc2l6ZSArIDEyOCwgcGFnZXNpemUsIHJlcGVhdCwgYXR0ciwgcGFpcik7CisJfQorCisJTXZQcmludHcoTElORVMgLSAzLCAwLAorCQkgIk5vdGU6IEFOU0kgdGVybWluYWxzIG1heSBub3QgZGlzcGxheSBDMSBjaGFyYWN0ZXJzLiIpOworCU12UHJpbnR3KExJTkVTIC0gMiwgMCwKKwkJICJTZWxlY3Q6IGE9QUNTLCB3PWFsbCB4PWJveCwgJXMwPUMxLCAxLTMsKy8tIG5vbi1BU0NJSSwgPC8+IHJlcGVhdCwgRVNDPXF1aXQiLAorCQkgcGNoX2tsdWRnZSk7CisJaWYgKHVzZV9jb2xvcnMpIHsKKwkgICAgTXZQcmludHcoTElORVMgLSAxLCAwLAorCQkgICAgICJ2L1YsIGYvRiwgYi9CIGN5Y2xlIHRocm91Z2ggdmlkZW8gYXR0cmlidXRlcyAoJXMpIGFuZCBjb2xvciAlZC8lZC4iLAorCQkgICAgIG15X2xpc3RbYXRfY29kZV0ubmFtZSwKKwkJICAgICBmZywgYmcpOworCX0gZWxzZSB7CisJICAgIE12UHJpbnR3KExJTkVTIC0gMSwgMCwKKwkJICAgICAidi9WIGN5Y2xlcyB0aHJvdWdoIHZpZGVvIGF0dHJpYnV0ZXMgKCVzKS4iLAorCQkgICAgIG15X2xpc3RbYXRfY29kZV0ubmFtZSk7CisJfQorCXJlZnJlc2goKTsKKyAgICB9IHdoaWxlICghaXNRdWl0KGMgPSBHZXRjaGFyKCkpKTsKKworICAgIFBhdXNlKCk7CisgICAgZXJhc2UoKTsKKyAgICBlbmR3aW4oKTsKK30KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCitzdGF0aWMgY2NoYXJfdCAqCittZXJnZV93aWRlX2F0dHIoY2NoYXJfdCAqZHN0LCBjb25zdCBjY2hhcl90ICpzcmMsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBpbnQgY291bnQ7CisKKyAgICAqZHN0ID0gKnNyYzsKKyAgICBkbyB7CisJVEVTVF9DQ0hBUihzcmMsIGNvdW50LCB7CisJICAgIGF0dHIgfD0gKHRlc3RfYXR0cnMgJiBBX0FMVENIQVJTRVQpOworCSAgICBzZXRjY2hhcihkc3QsIHRlc3Rfd2NoLCBhdHRyLCBwYWlyLCBOVUxMKTsKKwl9CisJLCB7CisJICAgIDsKKwl9KTsKKyAgICB9IHdoaWxlICgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCisvKgorICogSGVhZGVyL2xlZ2VuZCB0YWtlIHVwIG5vIG1vcmUgdGhhbiA4IGxpbmVzLCBsZWF2aW5nIDE2IGxpbmVzIG9uIGEgMjQtbGluZQorICogZGlzcGxheS4gIElmIHRoZXJlIGFyZSBubyByZXBlYXRzLCB3ZSBjb3VsZCBub3JtYWxseSBkaXNwbGF5IDE2IGxpbmVzIG9mIDY0CisgKiBjaGFyYWN0ZXJzICgxMDI0IHRvdGFsKS4gIEhvd2V2ZXIsIHRha2luZyByZXBlYXRzIGFuZCBkb3VibGUtd2lkdGggY2VsbHMKKyAqIGludG8gYWNjb3VudCwgdXNlIDI1NiBjaGFyYWN0ZXJzIGZvciB0aGUgcGFnZS4KKyAqLworc3RhdGljIHZvaWQKK3Nob3dfcGFnZWRfd2lkZWNoYXJzKGludCBiYXNlLAorCQkgICAgIGludCBwYWdlc2l6ZSwKKwkJICAgICBpbnQgcmVwZWF0LAorCQkgICAgIGludCBzcGFjZSwKKwkJICAgICBhdHRyX3QgYXR0ciwKKwkJICAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBpbnQgZmlyc3QgPSBiYXNlICogcGFnZXNpemU7CisgICAgaW50IGxhc3QgPSBmaXJzdCArIHBhZ2VzaXplIC0gMTsKKyAgICBpbnQgcGVyX2xpbmUgPSAxNjsKKyAgICBjY2hhcl90IHRlbXA7CisgICAgd2NoYXJfdCBjb2RlOworICAgIHdjaGFyX3QgY29kZXNbMTBdOworCisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdlByaW50dygwLCAyMCwgIkRpc3BsYXkgb2YgQ2hhcmFjdGVyIENvZGVzICUjeCB0byAlI3giLCBmaXJzdCwgbGFzdCk7CisgICAgYXR0cm9mZihBX0JPTEQpOworCisgICAgZm9yIChjb2RlID0gKHdjaGFyX3QpIGZpcnN0OyAoaW50KSBjb2RlIDw9IGxhc3Q7IGNvZGUrKykgeworCWludCByb3cgPSAoMiArICgoaW50KSBjb2RlIC0gZmlyc3QpIC8gcGVyX2xpbmUpOworCWludCBjb2wgPSA1ICogKChpbnQpIGNvZGUgJSBwZXJfbGluZSk7CisJaW50IGNvdW50OworCisJbWVtc2V0KCZjb2RlcywgMCwgc2l6ZW9mKGNvZGVzKSk7CisJY29kZXNbMF0gPSBjb2RlOworCXNldGNjaGFyKCZ0ZW1wLCBjb2RlcywgYXR0ciwgcGFpciwgMCk7CisJbW92ZShyb3csIGNvbCk7CisJaWYgKHdjd2lkdGgoY29kZSkgPT0gMCAmJiBjb2RlICE9IDApIHsKKwkgICAgYWRkY2goKGNodHlwZSkgc3BhY2UgfAorCQkgIChBX1JFVkVSU0UgXiBhdHRyKSB8CisJCSAgKGF0dHJfdCkgQ09MT1JfUEFJUihwYWlyKSk7CisJfQorCWFkZF93Y2goJnRlbXApOworCWZvciAoY291bnQgPSAxOyBjb3VudCA8IHJlcGVhdDsgKytjb3VudCkgeworCSAgICBhZGRfd2NoKCZ0ZW1wKTsKKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorc2hvd191cHBlcl93aWRlY2hhcnMoaW50IGZpcnN0LCBpbnQgcmVwZWF0LCBpbnQgc3BhY2UsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBjY2hhcl90IHRlbXA7CisgICAgd2NoYXJfdCBjb2RlOworICAgIGludCBsYXN0ID0gZmlyc3QgKyAzMTsKKworICAgIGVyYXNlKCk7CisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgTXZQcmludHcoMCwgMjAsICJEaXNwbGF5IG9mIENoYXJhY3RlciBDb2RlcyAlZCB0byAlZCIsIGZpcnN0LCBsYXN0KTsKKyAgICBhdHRyb2ZmKEFfQk9MRCk7CisKKyAgICBmb3IgKGNvZGUgPSAod2NoYXJfdCkgZmlyc3Q7IChpbnQpIGNvZGUgPD0gbGFzdDsgY29kZSsrKSB7CisJaW50IHJvdyA9IDIgKyAoKGNvZGUgLSBmaXJzdCkgJSAxNik7CisJaW50IGNvbCA9ICgoY29kZSAtIGZpcnN0KSAvIDE2KSAqIENPTFMgLyAyOworCXdjaGFyX3QgY29kZXNbMTBdOworCWNoYXIgdG1wWzgwXTsKKwlpbnQgY291bnQgPSByZXBlYXQ7CisJaW50IHksIHg7CisKKwlzcHJpbnRmKHRtcCwgIiUzbGQgKDB4JWx4KSIsIChsb25nKSBjb2RlLCAobG9uZykgY29kZSk7CisJTXZQcmludHcocm93LCBjb2wsICIlKnM6ICIsIENPTFMgLyA0LCB0bXApOworCisJbWVtc2V0KCZjb2RlcywgMCwgc2l6ZW9mKGNvZGVzKSk7CisJY29kZXNbMF0gPSBjb2RlOworCXNldGNjaGFyKCZ0ZW1wLCBjb2RlcywgYXR0ciwgcGFpciwgMCk7CisKKwlkbyB7CisJICAgIC8qCisJICAgICAqIEdpdmUgbm9uLXNwYWNpbmcgY2hhcmFjdGVycyBzb21ldGhpbmcgdG8gY29tYmluZSB3aXRoLiAgSWYgd2UKKwkgICAgICogZG9uJ3QsIHRoZXknbGwgYnVuY2ggdXAgaW4gYSBoZWFwIG9uIHRoZSBzcGFjZSBhZnRlciB0aGUgIjoiLgorCSAgICAgKiBNYXJrIHRoZW0gd2l0aCByZXZlcnNlLXZpZGVvIHRvIG1ha2UgdGhlbSBzaW1wbGVyIHRvIGZpbmQgb24KKwkgICAgICogdGhlIGRpc3BsYXkuCisJICAgICAqLworCSAgICBpZiAod2N3aWR0aChjb2RlKSA9PSAwKSB7CisJCWFkZGNoKChjaHR5cGUpIHNwYWNlIHwKKwkJICAgICAgKEFfUkVWRVJTRSBeIGF0dHIpIHwKKwkJICAgICAgKGF0dHJfdCkgQ09MT1JfUEFJUihwYWlyKSk7CisJICAgIH0KKwkgICAgLyoKKwkgICAgICogVGhpcyB1c2VzIGVjaG9fd2NoYXIoKSwgZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgbm9ybWFsICdmJworCSAgICAgKiB0ZXN0IChhbmQgdG8gbWFrZSBhIHRlc3QtY2FzZSBmb3IgZWNob193Y2hhcigpKS4gIFRoZSBzY3JlZW4KKwkgICAgICogbWF5IGZsaWNrZXIgYmVjYXVzZSB0aGUgZXJhc2UoKSBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbgorCSAgICAgKiBpcyBtZXQgYnkgdGhlIGJ1aWx0aW4gcmVmcmVzaCgpIGluIGVjaG9fd2NoYXIoKS4KKwkgICAgICovCisJICAgIGVjaG9fd2NoYXIoJnRlbXApOworCSAgICAvKgorCSAgICAgKiBUaGUgcmVwZWF0LWNvdW50IG1heSBtYWtlIHRleHQgd3JhcCAtIGF2b2lkIHRoYXQuCisJICAgICAqLworCSAgICBnZXR5eChzdGRzY3IsIHksIHgpOworCSAgICAodm9pZCkgeTsKKwkgICAgaWYgKHggPj0gY29sICsgKENPTFMgLyAyKSAtIDIpCisJCWJyZWFrOworCX0gd2hpbGUgKC0tY291bnQgPiAwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3Nob3dfMV93YWNzKGludCBuLCBpbnQgcmVwZWF0LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjY2hhcl90ICpjb2RlKQoreworICAgIGNvbnN0IGludCBoZWlnaHQgPSAxNjsKKyAgICBpbnQgcm93ID0gMiArIChuICUgaGVpZ2h0KTsKKyAgICBpbnQgY29sID0gKG4gLyBoZWlnaHQpICogQ09MUyAvIDI7CisKKyAgICBNdlByaW50dyhyb3csIGNvbCwgIiUqcyA6ICIsIENPTFMgLyA0LCBuYW1lKTsKKyAgICB3aGlsZSAoLS1yZXBlYXQgPj0gMCkgeworCWFkZF93Y2goY29kZSk7CisgICAgfQorICAgIHJldHVybiBuICsgMTsKK30KKworI2RlZmluZSBNRVJHRV9BVFRSKHdjaCkgbWVyZ2Vfd2lkZV9hdHRyKCZ0ZW1wLCB3Y2gsIGF0dHIsIHBhaXIpCisKK3N0YXRpYyB2b2lkCitzaG93X3dhY3NfY2hhcnMoaW50IHJlcGVhdCwgYXR0cl90IGF0dHIsIE5DVVJTRVNfUEFJUlNfVCBwYWlyKQorLyogZGlzcGxheSB0aGUgd2lkZS1BQ1MgY2hhcmFjdGVyIHNldCAqLworeworICAgIGNjaGFyX3QgdGVtcDsKKworICAgIGludCBuOworCisvKiNkZWZpbmUgQk9USDIobmFtZSkgI25hbWUsICYobmFtZSkgKi8KKyNkZWZpbmUgQk9USDIobmFtZSkgI25hbWUsIE1FUkdFX0FUVFIobmFtZSkKKworICAgIGVyYXNlKCk7CisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgTXZBZGRTdHIoMCwgMjAsICJEaXNwbGF5IG9mIHRoZSBXaWRlLUFDUyBDaGFyYWN0ZXIgU2V0Iik7CisgICAgYXR0cm9mZihBX0JPTEQpOworICAgIHJlZnJlc2goKTsKKworICAgIG4gPSBzaG93XzFfd2FjcygwLCByZXBlYXQsIEJPVEgyKFdBQ1NfVUxDT1JORVIpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1VSQ09STkVSKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19MTENPUk5FUikpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTFJDT1JORVIpKTsKKworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTFRFRSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUlRFRSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfVFRFRSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfQlRFRSkpOworCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19ITElORSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfVkxJTkUpKTsKKworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEFSUk9XKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19SQVJST1cpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1VBUlJPVykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfREFSUk9XKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0JMT0NLKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19CT0FSRCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEFOVEVSTikpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfQlVMTEVUKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19DS0JPQVJEKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19ERUdSRUUpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RJQU1PTkQpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1BMTUlOVVMpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1BMVVMpKTsKKworI2lmZGVmIENVUlNFU19XQUNTX0FSUkFZCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19HRVFVQUwpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX05FUVVBTCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEVRVUFMKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1NURVJMSU5HKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19QSSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUzEpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1MzKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19TNykpOworICAgICh2b2lkKSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUzkpKTsKKyNlbmRpZgorfQorCisjaWZkZWYgV0FDU19EX1BMVVMKK3N0YXRpYyB2b2lkCitzaG93X3dhY3NfY2hhcnNfZG91YmxlKGludCByZXBlYXQsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKKy8qIGRpc3BsYXkgdGhlIHdpZGUtQUNTIGNoYXJhY3RlciBzZXQgKi8KK3sKKyAgICBjY2hhcl90IHRlbXA7CisKKyAgICBpbnQgbjsKKworLyojZGVmaW5lIEJPVEgyKG5hbWUpICNuYW1lLCAmKG5hbWUpICovCisjZGVmaW5lIEJPVEgyKG5hbWUpICNuYW1lLCBNRVJHRV9BVFRSKG5hbWUpCisKKyAgICBlcmFzZSgpOworICAgIGF0dHJvbihBX0JPTEQpOworICAgIE12QWRkU3RyKDAsIDIwLCAiRGlzcGxheSBvZiB0aGUgV2lkZS1BQ1MgQ2hhcmFjdGVyIFNldCIpOworICAgIGF0dHJvZmYoQV9CT0xEKTsKKyAgICByZWZyZXNoKCk7CisKKyAgICBuID0gc2hvd18xX3dhY3MoMCwgcmVwZWF0LCBCT1RIMihXQUNTX0RfVUxDT1JORVIpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfVVJDT1JORVIpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfTExDT1JORVIpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfTFJDT1JORVIpKTsKKworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfRF9MVEVFKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19EX1JURUUpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfVFRFRSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfRF9CVEVFKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfSExJTkUpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RfVkxJTkUpKTsKKworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEFSUk9XKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19SQVJST1cpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1VBUlJPVykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfREFSUk9XKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0JMT0NLKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19CT0FSRCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEFOVEVSTikpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfQlVMTEVUKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19DS0JPQVJEKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19ERUdSRUUpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RJQU1PTkQpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1BMTUlOVVMpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1BMVVMpKTsKKworI2lmZGVmIENVUlNFU19XQUNTX0FSUkFZCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19HRVFVQUwpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX05FUVVBTCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfTEVRVUFMKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1NURVJMSU5HKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19QSSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUzEpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1MzKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19TNykpOworICAgICh2b2lkKSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUzkpKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBXQUNTX1RfUExVUworc3RhdGljIHZvaWQKK3Nob3dfd2Fjc19jaGFyc190aGljayhpbnQgcmVwZWF0LCBhdHRyX3QgYXR0ciwgTkNVUlNFU19QQUlSU19UIHBhaXIpCisvKiBkaXNwbGF5IHRoZSB3aWRlLUFDUyBjaGFyYWN0ZXIgc2V0ICovCit7CisgICAgY2NoYXJfdCB0ZW1wOworCisgICAgaW50IG47CisKKy8qI2RlZmluZSBCT1RIMihuYW1lKSAjbmFtZSwgJihuYW1lKSAqLworI2RlZmluZSBCT1RIMihuYW1lKSAjbmFtZSwgTUVSR0VfQVRUUihuYW1lKQorCisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdkFkZFN0cigwLCAyMCwgIkRpc3BsYXkgb2YgdGhlIFdpZGUtQUNTIENoYXJhY3RlciBTZXQiKTsKKyAgICBhdHRyb2ZmKEFfQk9MRCk7CisgICAgcmVmcmVzaCgpOworCisgICAgbiA9IHNob3dfMV93YWNzKDAsIHJlcGVhdCwgQk9USDIoV0FDU19UX1VMQ09STkVSKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX1VSQ09STkVSKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX0xMQ09STkVSKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX0xSQ09STkVSKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1RfTFRFRSkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfVF9SVEVFKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX1RURUUpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1RfQlRFRSkpOworCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX0hMSU5FKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19UX1ZMSU5FKSk7CisKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0xBUlJPVykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUkFSUk9XKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19VQVJST1cpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0RBUlJPVykpOworCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19CTE9DSykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfQk9BUkQpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0xBTlRFUk4pKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0JVTExFVCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfQ0tCT0FSRCkpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfREVHUkVFKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19ESUFNT05EKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19QTE1JTlVTKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19QTFVTKSk7CisKKyNpZmRlZiBDVVJTRVNfV0FDU19BUlJBWQorICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfR0VRVUFMKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19ORVFVQUwpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX0xFUVVBTCkpOworCisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19TVEVSTElORykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUEkpKTsKKyAgICBuID0gc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1MxKSk7CisgICAgbiA9IHNob3dfMV93YWNzKG4sIHJlcGVhdCwgQk9USDIoV0FDU19TMykpOworICAgIG4gPSBzaG93XzFfd2FjcyhuLCByZXBlYXQsIEJPVEgyKFdBQ1NfUzcpKTsKKyAgICAodm9pZCkgc2hvd18xX3dhY3MobiwgcmVwZWF0LCBCT1RIMihXQUNTX1M5KSk7CisjZW5kaWYKK30KKyNlbmRpZgorCisjdW5kZWYgTUVSR0VfQVRUUgorCisjZGVmaW5lIE1FUkdFX0FUVFIobix3Y2gpIG1lcmdlX3dpZGVfYXR0cigmdGVtcFtuXSwgd2NoLCBhdHRyLCBwYWlyKQorCitzdGF0aWMgdm9pZAorc2hvd193Ym94X2NoYXJzKGludCByZXBlYXQsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBjY2hhcl90IHRlbXBbOF07CisKKyAgICAodm9pZCkgcmVwZWF0OworICAgIGVyYXNlKCk7CisgICAgYXR0cm9uKEFfQk9MRCk7CisgICAgTXZBZGRTdHIoMCwgMjAsICJEaXNwbGF5IG9mIHRoZSBXaWRlLUFDUyBMaW5lLURyYXdpbmcgU2V0Iik7CisgICAgYXR0cm9mZihBX0JPTEQpOworICAgIHJlZnJlc2goKTsKKworICAgIHdib3JkZXJfc2V0KHN0ZHNjciwKKwkJTUVSR0VfQVRUUigwLCBXQUNTX1ZMSU5FKSwKKwkJTUVSR0VfQVRUUigxLCBXQUNTX1ZMSU5FKSwKKwkJTUVSR0VfQVRUUigyLCBXQUNTX0hMSU5FKSwKKwkJTUVSR0VfQVRUUigzLCBXQUNTX0hMSU5FKSwKKwkJTUVSR0VfQVRUUig0LCBXQUNTX1VMQ09STkVSKSwKKwkJTUVSR0VfQVRUUig1LCBXQUNTX1VSQ09STkVSKSwKKwkJTUVSR0VfQVRUUig2LCBXQUNTX0xMQ09STkVSKSwKKwkJTUVSR0VfQVRUUig3LCBXQUNTX0xSQ09STkVSKSk7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgKHZvaWQpIG12aGxpbmVfc2V0KExJTkVTIC8gMiwgMCwgICAgICAgIE1FUkdFX0FUVFIoMCwgV0FDU19ITElORSksIENPTFMpOworICAgICh2b2lkKSBtdnZsaW5lX3NldCgwLCAgICAgICAgIENPTFMgLyAyLCBNRVJHRV9BVFRSKDAsIFdBQ1NfVkxJTkUpLCBMSU5FUyk7CisgICAgKHZvaWQpIG12YWRkX3djaCgwLCAgICAgICAgICAgQ09MUyAvIDIsIE1FUkdFX0FUVFIoMCwgV0FDU19UVEVFKSk7CisgICAgKHZvaWQpIG12YWRkX3djaChMSU5FUyAvIDIsICAgQ09MUyAvIDIsIE1FUkdFX0FUVFIoMCwgV0FDU19QTFVTKSk7CisgICAgKHZvaWQpIG12YWRkX3djaChMSU5FUyAtIDEsICAgQ09MUyAvIDIsIE1FUkdFX0FUVFIoMCwgV0FDU19CVEVFKSk7CisgICAgKHZvaWQpIG12YWRkX3djaChMSU5FUyAvIDIsICAgMCwgICAgICAgIE1FUkdFX0FUVFIoMCwgV0FDU19MVEVFKSk7CisgICAgKHZvaWQpIG12YWRkX3djaChMSU5FUyAvIDIsICAgQ09MUyAtIDEsIE1FUkdFX0FUVFIoMCwgV0FDU19SVEVFKSk7CisgICAgLyogKklOREVOVC1PTiogKi8KKworfQorCisjdW5kZWYgTUVSR0VfQVRUUgorCitzdGF0aWMgaW50CitzaG93XzJfd2FjcyhpbnQgbiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqY29kZSwgYXR0cl90IGF0dHIsIE5DVVJTRVNfUEFJUlNfVCBwYWlyKQoreworICAgIGNvbnN0IGludCBoZWlnaHQgPSAxNjsKKyAgICBpbnQgcm93ID0gMiArIChuICUgaGVpZ2h0KTsKKyAgICBpbnQgY29sID0gKG4gLyBoZWlnaHQpICogQ09MUyAvIDI7CisgICAgY2hhciB0ZW1wWzgwXTsKKworICAgIE12UHJpbnR3KHJvdywgY29sLCAiJSpzIDogIiwgQ09MUyAvIDQsIG5hbWUpOworICAgICh2b2lkKSBhdHRyX3NldChhdHRyLCBwYWlyLCAwKTsKKyAgICBhZGRzdHIoc3RybmNweSh0ZW1wLCBjb2RlLCAyMCkpOworICAgICh2b2lkKSBhdHRyX3NldChBX05PUk1BTCwgMCwgMCk7CisgICAgcmV0dXJuIG4gKyAxOworfQorCisjZGVmaW5lIFNIT1dfVVRGOChuLCBuYW1lLCBjb2RlKSBzaG93XzJfd2FjcyhuLCBuYW1lLCBjb2RlLCBhdHRyLCBwYWlyKQorCitzdGF0aWMgdm9pZAorc2hvd191dGY4X2NoYXJzKGludCByZXBlYXQsIGF0dHJfdCBhdHRyLCBOQ1VSU0VTX1BBSVJTX1QgcGFpcikKK3sKKyAgICBpbnQgbjsKKworICAgICh2b2lkKSByZXBlYXQ7CisgICAgZXJhc2UoKTsKKyAgICBhdHRyb24oQV9CT0xEKTsKKyAgICBNdkFkZFN0cigwLCAyMCwgIkRpc3BsYXkgb2YgdGhlIFdpZGUtQUNTIENoYXJhY3RlciBTZXQiKTsKKyAgICBhdHRyb2ZmKEFfQk9MRCk7CisgICAgcmVmcmVzaCgpOworICAgIC8qICpJTkRFTlQtT0ZGKiAqLworICAgIG4gPSBTSE9XX1VURjgoMCwgIldBQ1NfVUxDT1JORVIiLAkiXDM0MlwyMjRcMjE0Iik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19VUkNPUk5FUiIsCSJcMzQyXDIyNFwyMjAiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0xMQ09STkVSIiwJIlwzNDJcMjI0XDIyNCIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfTFJDT1JORVIiLAkiXDM0MlwyMjRcMjMwIik7CisKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0xURUUiLAkiXDM0MlwyMjRcMjM0Iik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19SVEVFIiwJIlwzNDJcMjI0XDI0NCIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfVFRFRSIsCSJcMzQyXDIyNFwyNTQiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0JURUUiLAkiXDM0MlwyMjRcMjY0Iik7CisKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0hMSU5FIiwJIlwzNDJcMjI0XDIwMCIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfVkxJTkUiLAkiXDM0MlwyMjRcMjAyIik7CisKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0xBUlJPVyIsCSJcMzQyXDIwNlwyMjAiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX1JBUlJPVyIsCSJcMzQyXDIwNlwyMjIiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX1VBUlJPVyIsCSJcMzQyXDIwNlwyMjEiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0RBUlJPVyIsCSJcMzQyXDIwNlwyMjMiKTsKKworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfQkxPQ0siLAkiXDM0MlwyMjZcMjU2Iik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19CT0FSRCIsCSJcMzQyXDIyNlwyMjIiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0xBTlRFUk4iLAkiXDM0MlwyMzBcMjAzIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19CVUxMRVQiLAkiXDMwMlwyNjciKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0NLQk9BUkQiLAkiXDM0MlwyMjZcMjIyIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19ERUdSRUUiLAkiXDMwMlwyNjAiKTsKKyAgICBuID0gU0hPV19VVEY4KG4sICJXQUNTX0RJQU1PTkQiLAkiXDM0MlwyMjdcMjA2Iik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19QTE1JTlVTIiwJIlwzMDJcMjYxIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19QTFVTIiwJIlwzNDJcMjI0XDI3NCIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfR0VRVUFMIiwJIlwzNDJcMjExXDI0NSIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfTkVRVUFMIiwJIlwzNDJcMjExXDI0MCIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfTEVRVUFMIiwJIlwzNDJcMjExXDI0NCIpOworCisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19TVEVSTElORyIsCSJcMzAyXDI0MyIpOworICAgIG4gPSBTSE9XX1VURjgobiwgIldBQ1NfUEkiLAkJIlwzMTdcMjAwIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19TMSIsCQkiXDM0MlwyMTZcMjcyIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19TMyIsCQkiXDM0MlwyMTZcMjczIik7CisgICAgbiA9IFNIT1dfVVRGOChuLCAiV0FDU19TNyIsCQkiXDM0MlwyMTZcMjc0Iik7CisgICAgKHZvaWQpIFNIT1dfVVRGOChuLCAiV0FDU19TOSIsCSJcMzQyXDIxNlwyNzUiKTsKKyAgICAvKiAqSU5ERU5ULU9OKiAqLworCit9CisKKy8qIGRpc3BsYXkgdGhlIHdpZGUtQUNTIGNoYXJhY3RlciBzZXQgKi8KK3N0YXRpYyB2b2lkCit3aWRlX2Fjc19kaXNwbGF5KHZvaWQpCit7CisgICAgaW50IGMgPSAnYSc7CisgICAgaW50IGRpZ2l0ID0gMDsKKyAgICBpbnQgcmVwZWF0ID0gMTsKKyAgICBpbnQgc3BhY2UgPSAnICc7CisgICAgaW50IHBhZ2VzaXplID0gMzI7CisgICAgY2h0eXBlIGF0dHIgPSBBX05PUk1BTDsKKyAgICBpbnQgZmcgPSBDT0xPUl9CTEFDSzsKKyAgICBpbnQgYmcgPSBDT0xPUl9CTEFDSzsKKyAgICB1bnNpZ25lZCBhdF9jb2RlID0gMDsKKyAgICBOQ1VSU0VTX1BBSVJTX1QgcGFpciA9IDA7CisgICAgdm9pZCAoKmxhc3Rfc2hvd193YWNzKSAoaW50LCBhdHRyX3QsIE5DVVJTRVNfUEFJUlNfVCkgPSAwOworICAgIEFUVFJfVEJMIG15X2xpc3RbU0laRU9GKGF0dHJzX3RvX3Rlc3QpXTsKKyAgICB1bnNpZ25lZCBteV9zaXplID0gaW5pdF9hdHRyX2xpc3QobXlfbGlzdCwgdGVybV9hdHRycygpKTsKKworICAgIGRvIHsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlIENUUkwoJ0wnKToKKwkgICAgUmVwYWludCgpOworCSAgICBicmVhazsKKwljYXNlICdhJzoKKwkgICAgVG9nZ2xlQWNzKGxhc3Rfc2hvd193YWNzLCBzaG93X3dhY3NfY2hhcnMpOworCSAgICBicmVhazsKKyNpZmRlZiBXQUNTX0RfUExVUworCWNhc2UgJ2QnOgorCSAgICBUb2dnbGVBY3MobGFzdF9zaG93X3dhY3MsIHNob3dfd2Fjc19jaGFyc19kb3VibGUpOworCSAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFdBQ1NfVF9QTFVTCisJY2FzZSAndCc6CisJICAgIFRvZ2dsZUFjcyhsYXN0X3Nob3dfd2Fjcywgc2hvd193YWNzX2NoYXJzX3RoaWNrKTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKwljYXNlICd3JzoKKwkgICAgaWYgKHBhZ2VzaXplID09IDMyKSB7CisJCXBhZ2VzaXplID0gMjU2OworCSAgICB9IGVsc2UgeworCQlwYWdlc2l6ZSA9IDMyOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJ3gnOgorCSAgICBUb2dnbGVBY3MobGFzdF9zaG93X3dhY3MsIHNob3dfd2JveF9jaGFycyk7CisJICAgIGJyZWFrOworCWNhc2UgJ3UnOgorCSAgICBUb2dnbGVBY3MobGFzdF9zaG93X3dhY3MsIHNob3dfdXRmOF9jaGFycyk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGlmIChjIDwgMjU2ICYmIGlzZGlnaXQoYykpIHsKKwkJZGlnaXQgPSAoYyAtICcwJyk7CisJCWxhc3Rfc2hvd193YWNzID0gMDsKKwkgICAgfSBlbHNlIGlmIChjID09ICcrJykgeworCQkrK2RpZ2l0OworCQlsYXN0X3Nob3dfd2FjcyA9IDA7CisJICAgIH0gZWxzZSBpZiAoYyA9PSAnLScgJiYgZGlnaXQgPiAwKSB7CisJCS0tZGlnaXQ7CisJCWxhc3Rfc2hvd193YWNzID0gMDsKKwkgICAgfSBlbHNlIGlmIChjID09ICc+JyAmJiByZXBlYXQgPCAoQ09MUyAvIDQpKSB7CisJCSsrcmVwZWF0OworCSAgICB9IGVsc2UgaWYgKGMgPT0gJzwnICYmIHJlcGVhdCA+IDEpIHsKKwkJLS1yZXBlYXQ7CisJICAgIH0gZWxzZSBpZiAoYyA9PSAnXycpIHsKKwkJc3BhY2UgPSAoc3BhY2UgPT0gJyAnKSA/ICdfJyA6ICcgJzsKKwkJbGFzdF9zaG93X3dhY3MgPSAwOworCSAgICB9IGVsc2UgaWYgKGN5Y2xlX2F0dHIoYywgJmF0X2NvZGUsICZhdHRyLCBteV9saXN0LCBteV9zaXplKQorCQkgICAgICAgfHwgY3ljbGVfY29sb3JzKGMsICZmZywgJmJnLCAmcGFpcikpIHsKKwkJaWYgKGxhc3Rfc2hvd193YWNzICE9IDApCisJCSAgICBicmVhazsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCQlicmVhazsKKwkgICAgfQorCSAgICBicmVhazsKKwl9CisJaWYgKHBhZ2VzaXplICE9IDMyKSB7CisJICAgIHNob3dfcGFnZWRfd2lkZWNoYXJzKGRpZ2l0LCBwYWdlc2l6ZSwgcmVwZWF0LCBzcGFjZSwgYXR0ciwgcGFpcik7CisJfSBlbHNlIGlmIChsYXN0X3Nob3dfd2FjcyAhPSAwKSB7CisJICAgIGxhc3Rfc2hvd193YWNzKHJlcGVhdCwgYXR0ciwgcGFpcik7CisJfSBlbHNlIHsKKwkgICAgc2hvd191cHBlcl93aWRlY2hhcnMoZGlnaXQgKiAzMiArIDEyOCwgcmVwZWF0LCBzcGFjZSwgYXR0ciwgcGFpcik7CisJfQorCisJTXZQcmludHcoTElORVMgLSA0LCAwLAorCQkgIlNlbGVjdDogYS9kL3QgV0FDUywgdz1hbGwgeD1ib3gsIHUgVVRGLTgsIF5MIHJlcGFpbnQiKTsKKwlNdlByaW50dyhMSU5FUyAtIDMsIDIsCisJCSAiMC05LCsvLSBub24tQVNDSUksIDwvPiByZXBlYXQsIF8gc3BhY2UsIEVTQz1xdWl0Iik7CisJaWYgKHVzZV9jb2xvcnMpIHsKKwkgICAgTXZQcmludHcoTElORVMgLSAyLCAyLAorCQkgICAgICJ2L1YsIGYvRiwgYi9CIGN5Y2xlIHRocm91Z2ggdmlkZW8gYXR0cmlidXRlcyAoJXMpIGFuZCBjb2xvciAlZC8lZC4iLAorCQkgICAgIG15X2xpc3RbYXRfY29kZV0ubmFtZSwKKwkJICAgICBmZywgYmcpOworCX0gZWxzZSB7CisJICAgIE12UHJpbnR3KExJTkVTIC0gMiwgMiwKKwkJICAgICAidi9WIGN5Y2xlcyB0aHJvdWdoIHZpZGVvIGF0dHJpYnV0ZXMgKCVzKS4iLAorCQkgICAgIG15X2xpc3RbYXRfY29kZV0ubmFtZSk7CisJfQorCXJlZnJlc2goKTsKKyAgICB9IHdoaWxlICghaXNRdWl0KGMgPSBHZXRjaGFyKCkpKTsKKworICAgIFBhdXNlKCk7CisgICAgZXJhc2UoKTsKKyAgICBlbmR3aW4oKTsKK30KKworI2VuZGlmCisKKy8qCisgKiBHcmFwaGljLXJlbmRpdGlvbiB0ZXN0IChhZGFwdGVkIGZyb20gdnR0ZXN0KQorICovCitzdGF0aWMgdm9pZAordGVzdF9zZ3JfYXR0cmlidXRlcyh2b2lkKQoreworICAgIGludCBwYXNzOworCisgICAgZm9yIChwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeworCWNodHlwZSBub3JtYWwgPSAoKHBhc3MgPT0gMCA/IEFfTk9STUFMIDogQV9SRVZFUlNFKSkgfCBCTEFOSzsKKworCS8qIFVzZSBub24tZGVmYXVsdCBjb2xvcnMgaWYgcG9zc2libGUgdG8gZXhlcmNpc2UgYmNlIGEgbGl0dGxlICovCisJaWYgKHVzZV9jb2xvcnMpIHsKKwkgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKwkgICAgbm9ybWFsIHw9IChjaHR5cGUpIENPTE9SX1BBSVIoMSk7CisJfQorCWJrZ2RzZXQobm9ybWFsKTsKKwllcmFzZSgpOworCU12UHJpbnR3KDEsIDIwLCAiR3JhcGhpYyByZW5kaXRpb24gdGVzdCBwYXR0ZXJuOiIpOworCisJTXZQcmludHcoNCwgMSwgInZhbmlsbGEiKTsKKworI2RlZmluZSBzZXRfc2dyKG1hc2spIGJrZ2RzZXQoKG5vcm1hbF4obWFzaykpKTsKKwlzZXRfc2dyKEFfQk9MRCk7CisJTXZQcmludHcoNCwgNDAsICJib2xkIik7CisKKwlzZXRfc2dyKEFfVU5ERVJMSU5FKTsKKwlNdlByaW50dyg2LCA2LCAidW5kZXJsaW5lIik7CisKKwlzZXRfc2dyKEFfQk9MRCB8IEFfVU5ERVJMSU5FKTsKKwlNdlByaW50dyg2LCA0NSwgImJvbGQgdW5kZXJsaW5lIik7CisKKwlzZXRfc2dyKEFfQkxJTkspOworCU12UHJpbnR3KDgsIDEsICJibGluayIpOworCisJc2V0X3NncihBX0JMSU5LIHwgQV9CT0xEKTsKKwlNdlByaW50dyg4LCA0MCwgImJvbGQgYmxpbmsiKTsKKworCXNldF9zZ3IoQV9VTkRFUkxJTkUgfCBBX0JMSU5LKTsKKwlNdlByaW50dygxMCwgNiwgInVuZGVybGluZSBibGluayIpOworCisJc2V0X3NncihBX0JPTEQgfCBBX1VOREVSTElORSB8IEFfQkxJTkspOworCU12UHJpbnR3KDEwLCA0NSwgImJvbGQgdW5kZXJsaW5lIGJsaW5rIik7CisKKwlzZXRfc2dyKEFfUkVWRVJTRSk7CisJTXZQcmludHcoMTIsIDEsICJuZWdhdGl2ZSIpOworCisJc2V0X3NncihBX0JPTEQgfCBBX1JFVkVSU0UpOworCU12UHJpbnR3KDEyLCA0MCwgImJvbGQgbmVnYXRpdmUiKTsKKworCXNldF9zZ3IoQV9VTkRFUkxJTkUgfCBBX1JFVkVSU0UpOworCU12UHJpbnR3KDE0LCA2LCAidW5kZXJsaW5lIG5lZ2F0aXZlIik7CisKKwlzZXRfc2dyKEFfQk9MRCB8IEFfVU5ERVJMSU5FIHwgQV9SRVZFUlNFKTsKKwlNdlByaW50dygxNCwgNDUsICJib2xkIHVuZGVybGluZSBuZWdhdGl2ZSIpOworCisJc2V0X3NncihBX0JMSU5LIHwgQV9SRVZFUlNFKTsKKwlNdlByaW50dygxNiwgMSwgImJsaW5rIG5lZ2F0aXZlIik7CisKKwlzZXRfc2dyKEFfQk9MRCB8IEFfQkxJTksgfCBBX1JFVkVSU0UpOworCU12UHJpbnR3KDE2LCA0MCwgImJvbGQgYmxpbmsgbmVnYXRpdmUiKTsKKworCXNldF9zZ3IoQV9VTkRFUkxJTkUgfCBBX0JMSU5LIHwgQV9SRVZFUlNFKTsKKwlNdlByaW50dygxOCwgNiwgInVuZGVybGluZSBibGluayBuZWdhdGl2ZSIpOworCisJc2V0X3NncihBX0JPTEQgfCBBX1VOREVSTElORSB8IEFfQkxJTksgfCBBX1JFVkVSU0UpOworCU12UHJpbnR3KDE4LCA0NSwgImJvbGQgdW5kZXJsaW5lIGJsaW5rIG5lZ2F0aXZlIik7CisKKwlia2dkc2V0KG5vcm1hbCk7CisJTXZQcmludHcoTElORVMgLSAyLCAxLCAiJXMgYmFja2dyb3VuZC4gIiwgcGFzcyA9PSAwID8gIkRhcmsiIDoKKwkJICJMaWdodCIpOworCWNscnRvZW9sKCk7CisJUGF1c2UoKTsKKyAgICB9CisKKyAgICBia2dkc2V0KEFfTk9STUFMIHwgQkxBTkspOworICAgIGVyYXNlKCk7CisgICAgZW5kd2luKCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogV2luZG93cyBhbmQgc2Nyb2xsaW5nIHRlc3Rlci4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBCT1RMSU5FUwk0CS8qIG51bWJlciBvZiBsaW5lIHN0b2xlbiBmcm9tIHNjcmVlbiBib3R0b20gKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCB5LCB4OworfSBwYWlyOworCisjZGVmaW5lIEZSQU1FIHN0cnVjdCBmcmFtZQorRlJBTUUKK3sKKyAgICBGUkFNRSAqbmV4dCwgKmxhc3Q7CisgICAgYm9vbCBkb19zY3JvbGw7CisgICAgYm9vbCBkb19rZXlwYWQ7CisgICAgV0lORE9XICp3aW5kOworfTsKKworI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKQorI2lmIChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggPCAyMDA3MDMzMSkgJiYgTkNVUlNFU19FWFRfRlVOQ1MKKyNkZWZpbmUgaXNfa2V5cGFkKHdpbikgICAod2luKS0+X3VzZV9rZXlwYWQKKyNkZWZpbmUgaXNfc2Nyb2xsb2sod2luKSAod2luKS0+X3Njcm9sbAorI2VsaWYgIWRlZmluZWQoaXNfa2V5cGFkKQorI2RlZmluZSBpc19rZXlwYWQod2luKSAgIEZBTFNFCisjZGVmaW5lIGlzX3Njcm9sbG9rKHdpbikgRkFMU0UKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgaXNfa2V5cGFkKHdpbikgICBGQUxTRQorI2RlZmluZSBpc19zY3JvbGxvayh3aW4pIEZBTFNFCisjZW5kaWYKKworc3RhdGljIFdJTkRPVyAqCitmcmFtZV93aW4oRlJBTUUgKiBjdXJwKQoreworICAgIHJldHVybiAoY3VycCAhPSAwKSA/IGN1cnAtPndpbmQgOiBzdGRzY3I7Cit9CisKKy8qIFdlIG5lZWQgdG8ga25vdyBpZiB0aGVzZSBmbGFncyBhcmUgYWN0dWFsbHkgc2V0LCBzbyBkb24ndCBsb29rIGluIEZSQU1FLgorICogVGhlc2UgbmFtZXMgYXJlIGtub3duIHRvIHdvcmsgd2l0aCBTVnI0IGN1cnNlcyBhcyB3ZWxsIGFzIG5jdXJzZXMuICBUaGUKKyAqIF91c2Vfa2V5cGFkIG5hbWUgZG9lcyBub3Qgd29yayB3aXRoIFNvbGFyaXMgOC4KKyAqLworc3RhdGljIGJvb2wKK0hhdmVLZXlwYWQoRlJBTUUgKiBjdXJwKQoreworICAgIFdJTkRPVyAqd2luID0gZnJhbWVfd2luKGN1cnApOworICAgICh2b2lkKSB3aW47CisgICAgcmV0dXJuIGlzX2tleXBhZCh3aW4pOworfQorCitzdGF0aWMgYm9vbAorSGF2ZVNjcm9sbChGUkFNRSAqIGN1cnApCit7CisgICAgV0lORE9XICp3aW4gPSBmcmFtZV93aW4oY3VycCk7CisgICAgKHZvaWQpIHdpbjsKKyAgICByZXR1cm4gaXNfc2Nyb2xsb2sod2luKTsKK30KKworc3RhdGljIHZvaWQKK25ld3dpbl9sZWdlbmQoRlJBTUUgKiBjdXJwKQoreworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworCWNvbnN0IGNoYXIgKm1zZzsKKwlpbnQgY29kZTsKKyAgICB9IGxlZ2VuZFtdID0geworCXsKKwkgICAgIl5DID0gY3JlYXRlIHdpbmRvdyIsIDAKKwl9LAorCXsKKwkgICAgIl5OID0gbmV4dCB3aW5kb3ciLCAwCisJfSwKKwl7CisJICAgICJeUCA9IHByZXZpb3VzIHdpbmRvdyIsIDAKKwl9LAorCXsKKwkgICAgIl5GID0gc2Nyb2xsIGZvcndhcmQiLCAwCisJfSwKKwl7CisJICAgICJeQiA9IHNjcm9sbCBiYWNrd2FyZCIsIDAKKwl9LAorCXsKKwkgICAgIl5LID0ga2V5cGFkKCVzKSIsIDEKKwl9LAorCXsKKwkgICAgIl5TID0gc2Nyb2xsb2soJXMpIiwgMgorCX0sCisJeworCSAgICAiXlcgPSBzYXZlIHdpbmRvdyB0byBmaWxlIiwgMAorCX0sCisJeworCSAgICAiXlIgPSByZXN0b3JlIHdpbmRvdyIsIDAKKwl9LAorI2lmIEhBVkVfV1JFU0laRQorCXsKKwkgICAgIl5YID0gcmVzaXplIiwgMAorCX0sCisjZW5kaWYKKwl7CisJICAgICJeUSVzID0gZXhpdCIsIDMKKwl9CisgICAgfTsKKyAgICBzaXplX3QgbjsKKyAgICBpbnQgeDsKKyAgICBib29sIGRvX2tleXBhZCA9IEhhdmVLZXlwYWQoY3VycCk7CisgICAgYm9vbCBkb19zY3JvbGwgPSBIYXZlU2Nyb2xsKGN1cnApOworICAgIGNoYXIgYnVmW0JVRlNJWl07CisKKyAgICBtb3ZlKExJTkVTIC0gNCwgMCk7CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihsZWdlbmQpOyBuKyspIHsKKwlzd2l0Y2ggKGxlZ2VuZFtuXS5jb2RlKSB7CisJZGVmYXVsdDoKKwkgICAgc3RyY3B5KGJ1ZiwgbGVnZW5kW25dLm1zZyk7CisJICAgIGJyZWFrOworCWNhc2UgMToKKwkgICAgc3ByaW50ZihidWYsIGxlZ2VuZFtuXS5tc2csIGRvX2tleXBhZCA/ICJ5ZXMiIDogIm5vIik7CisJICAgIGJyZWFrOworCWNhc2UgMjoKKwkgICAgc3ByaW50ZihidWYsIGxlZ2VuZFtuXS5tc2csIGRvX3Njcm9sbCA/ICJ5ZXMiIDogIm5vIik7CisJICAgIGJyZWFrOworCWNhc2UgMzoKKwkgICAgc3ByaW50ZihidWYsIGxlZ2VuZFtuXS5tc2csIGRvX2tleXBhZCA/ICIvRVNDIiA6ICIiKTsKKwkgICAgYnJlYWs7CisJfQorCXggPSBnZXRjdXJ4KHN0ZHNjcik7CisJYWRkc3RyKChDT0xTIDwgKHggKyAzICsgKGludCkgc3RybGVuKGJ1ZikpKSA/ICJcbiIgOiAobiA/ICIsICIgOiAiIikpOworCWFkZHN0cihidWYpOworICAgIH0KKyAgICBjbHJ0b2VvbCgpOworfQorCitzdGF0aWMgdm9pZAordHJhbnNpZW50KEZSQU1FICogY3VycCwgTkNVUlNFU19DT05TVCBjaGFyICptc2cpCit7CisgICAgbmV3d2luX2xlZ2VuZChjdXJwKTsKKyAgICBpZiAobXNnKSB7CisJTXZBZGRTdHIoTElORVMgLSAxLCAwLCBtc2cpOworCXJlZnJlc2goKTsKKwluYXBtcygxMDAwKTsKKyAgICB9CisKKyAgICBtb3ZlKExJTkVTIC0gMSwgMCk7CisgICAgcHJpbnR3KCIlcyBjaGFyYWN0ZXJzIGFyZSBlY2hvZWQsIHdpbmRvdyBzaG91bGQgJXNzY3JvbGwuIiwKKwkgICBIYXZlS2V5cGFkKGN1cnApID8gIk5vbi1hcnJvdyIgOiAiQWxsIG90aGVyIiwKKwkgICBIYXZlU2Nyb2xsKGN1cnApID8gIiIgOiAibm90ICIpOworICAgIGNscnRvZW9sKCk7Cit9CisKK3N0YXRpYyB2b2lkCituZXd3aW5fcmVwb3J0KEZSQU1FICogY3VycCkKKy8qIHJlcG9ydCBvbiB0aGUgY3Vyc29yJ3MgY3VycmVudCBwb3NpdGlvbiwgdGhlbiByZXN0b3JlIGl0ICovCit7CisgICAgV0lORE9XICp3aW4gPSBmcmFtZV93aW4oY3VycCk7CisgICAgaW50IHksIHg7CisKKyAgICBpZiAod2luICE9IHN0ZHNjcikKKwl0cmFuc2llbnQoY3VycCwgKGNoYXIgKikgMCk7CisgICAgZ2V0eXgod2luLCB5LCB4KTsKKyAgICBtb3ZlKExJTkVTIC0gMSwgQ09MUyAtIDE3KTsKKyAgICBwcmludHcoIlkgPSAlMmQgWCA9ICUyZCIsIHksIHgpOworICAgIGlmICh3aW4gIT0gc3Rkc2NyKQorCXJlZnJlc2goKTsKKyAgICBlbHNlCisJd21vdmUod2luLCB5LCB4KTsKK30KKworc3RhdGljIHBhaXIgKgorc2VsZWN0Y2VsbChpbnQgdWxpLCBpbnQgdWxqLCBpbnQgbHJpLCBpbnQgbHJqKQorLyogYXJyb3dzIGtleXMgbW92ZSBjdXJzb3IsIHJldHVybiBsb2NhdGlvbiBhdCBjdXJyZW50IG9uIG5vbi1hcnJvdyBrZXkgKi8KK3sKKyAgICBzdGF0aWMgcGFpciByZXM7CQkvKiByZXN1bHQgY2VsbCAqLworICAgIGludCBzaSA9IGxyaSAtIHVsaSArIDE7CS8qIGRlcHRoIG9mIHRoZSBzZWxlY3QgYXJlYSAqLworICAgIGludCBzaiA9IGxyaiAtIHVsaiArIDE7CS8qIHdpZHRoIG9mIHRoZSBzZWxlY3QgYXJlYSAqLworICAgIGludCBpID0gMCwgaiA9IDA7CQkvKiBvZmZzZXRzIGludG8gdGhlIHNlbGVjdCBhcmVhICovCisKKyAgICByZXMueSA9IHVsaTsKKyAgICByZXMueCA9IHVsajsKKyAgICBmb3IgKDs7KSB7CisJbW92ZSh1bGkgKyBpLCB1bGogKyBqKTsKKwluZXd3aW5fcmVwb3J0KChGUkFNRSAqKSAwKTsKKworCXN3aXRjaCAoR2V0Y2hhcigpKSB7CisJY2FzZSBLRVlfVVA6CisJICAgIGkgKz0gc2kgLSAxOworCSAgICBicmVhazsKKwljYXNlIEtFWV9ET1dOOgorCSAgICBpKys7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGogKz0gc2ogLSAxOworCSAgICBicmVhazsKKwljYXNlIEtFWV9SSUdIVDoKKwkgICAgaisrOworCSAgICBicmVhazsKKwljYXNlIGNhc2VfUVVJVDoKKwkgICAgcmV0dXJuICgocGFpciAqKSAwKTsKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKwljYXNlIEtFWV9NT1VTRToKKwkgICAgeworCQlNRVZFTlQgZXZlbnQ7CisKKwkJZ2V0bW91c2UoJmV2ZW50KTsKKwkJaWYgKGV2ZW50LnkgPiB1bGkgJiYgZXZlbnQueCA+IHVsaikgeworCQkgICAgaSA9IGV2ZW50LnkgLSB1bGk7CisJCSAgICBqID0gZXZlbnQueCAtIHVsajsKKwkJfSBlbHNlIHsKKwkJICAgIGJlZXAoKTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgLyogRkFMTFRIUlUgKi8KKyNlbmRpZgorCWRlZmF1bHQ6CisJICAgIHJlcy55ID0gdWxpICsgaTsKKwkgICAgcmVzLnggPSB1bGogKyBqOworCSAgICByZXR1cm4gKCZyZXMpOworCX0KKwlpICU9IHNpOworCWogJT0gc2o7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb3V0ZXJib3gocGFpciB1bCwgcGFpciBsciwgYm9vbCBvbm9mZikKKy8qIGRyYXcgb3IgZXJhc2UgYSBib3ggKm91dHNpZGUqIHRoZSBnaXZlbiBwYWlyIG9mIGNvcm5lcnMgKi8KK3sKKyAgICBNdkFkZENoKHVsLnkgLSAxLCBsci54IC0gMSwgb25vZmYgPyBBQ1NfVUxDT1JORVIgOiAnICcpOworICAgIE12QWRkQ2godWwueSAtIDEsIGxyLnggKyAxLCBvbm9mZiA/IEFDU19VUkNPUk5FUiA6ICcgJyk7CisgICAgTXZBZGRDaChsci55ICsgMSwgbHIueCArIDEsIG9ub2ZmID8gQUNTX0xSQ09STkVSIDogJyAnKTsKKyAgICBNdkFkZENoKGxyLnkgKyAxLCB1bC54IC0gMSwgb25vZmYgPyBBQ1NfTExDT1JORVIgOiAnICcpOworICAgIG1vdmUodWwueSAtIDEsIHVsLngpOworICAgIGhsaW5lKG9ub2ZmID8gQUNTX0hMSU5FIDogJyAnLCBsci54IC0gdWwueCArIDEpOworICAgIG1vdmUodWwueSwgdWwueCAtIDEpOworICAgIHZsaW5lKG9ub2ZmID8gQUNTX1ZMSU5FIDogJyAnLCBsci55IC0gdWwueSArIDEpOworICAgIG1vdmUobHIueSArIDEsIHVsLngpOworICAgIGhsaW5lKG9ub2ZmID8gQUNTX0hMSU5FIDogJyAnLCBsci54IC0gdWwueCArIDEpOworICAgIG1vdmUodWwueSwgbHIueCArIDEpOworICAgIHZsaW5lKG9ub2ZmID8gQUNTX1ZMSU5FIDogJyAnLCBsci55IC0gdWwueSArIDEpOworfQorCitzdGF0aWMgV0lORE9XICoKK2dldHdpbmRvdyh2b2lkKQorLyogQXNrIHVzZXIgZm9yIGEgd2luZG93IGRlZmluaXRpb24gKi8KK3sKKyAgICBXSU5ET1cgKnJ3aW5kb3c7CisgICAgcGFpciB1bCwgbHIsICp0bXA7CisKKyAgICBtb3ZlKDAsIDApOworICAgIGNscnRvZW9sKCk7CisgICAgYWRkc3RyKCJVc2UgYXJyb3dzIHRvIG1vdmUgY3Vyc29yLCBhbnl0aGluZyBlbHNlIHRvIG1hcmsgY29ybmVyIDEiKTsKKyAgICByZWZyZXNoKCk7CisgICAgaWYgKCh0bXAgPSBzZWxlY3RjZWxsKDIsIDEsIExJTkVTIC0gQk9UTElORVMgLSAyLCBDT0xTIC0gMikpID09IChwYWlyICopIDApCisJcmV0dXJuICgoV0lORE9XICopIDApOworICAgIG1lbWNweSgmdWwsIHRtcCwgc2l6ZW9mKHBhaXIpKTsKKyAgICBNdkFkZENoKHVsLnkgLSAxLCB1bC54IC0gMSwgQUNTX1VMQ09STkVSKTsKKyAgICBtb3ZlKDAsIDApOworICAgIGNscnRvZW9sKCk7CisgICAgYWRkc3RyKCJVc2UgYXJyb3dzIHRvIG1vdmUgY3Vyc29yLCBhbnl0aGluZyBlbHNlIHRvIG1hcmsgY29ybmVyIDIiKTsKKyAgICByZWZyZXNoKCk7CisgICAgaWYgKCh0bXAgPSBzZWxlY3RjZWxsKHVsLnksIHVsLngsIExJTkVTIC0gQk9UTElORVMgLSAyLCBDT0xTIC0gMikpID09CisJKHBhaXIgKikgMCkKKwlyZXR1cm4gKChXSU5ET1cgKikgMCk7CisgICAgbWVtY3B5KCZsciwgdG1wLCBzaXplb2YocGFpcikpOworCisgICAgcndpbmRvdyA9IHN1YndpbihzdGRzY3IsIGxyLnkgLSB1bC55ICsgMSwgbHIueCAtIHVsLnggKyAxLCB1bC55LCB1bC54KTsKKworICAgIG91dGVyYm94KHVsLCBsciwgVFJVRSk7CisgICAgcmVmcmVzaCgpOworCisgICAgaWYgKHJ3aW5kb3cgIT0gMCkKKwl3cmVmcmVzaChyd2luZG93KTsKKworICAgIG1vdmUoMCwgMCk7CisgICAgY2xydG9lb2woKTsKKyAgICByZXR1cm4gKHJ3aW5kb3cpOworfQorCitzdGF0aWMgdm9pZAorbmV3d2luX21vdmUoRlJBTUUgKiBjdXJwLCBpbnQgZHksIGludCBkeCkKK3sKKyAgICBXSU5ET1cgKndpbiA9IGZyYW1lX3dpbihjdXJwKTsKKyAgICBpbnQgY3VyX3ksIGN1cl94OworICAgIGludCBtYXhfeSwgbWF4X3g7CisKKyAgICBnZXR5eCh3aW4sIGN1cl95LCBjdXJfeCk7CisgICAgZ2V0bWF4eXgod2luLCBtYXhfeSwgbWF4X3gpOworICAgIGlmICgoY3VyX3ggKz0gZHgpIDwgMCkKKwljdXJfeCA9IDA7CisgICAgZWxzZSBpZiAoY3VyX3ggPj0gbWF4X3gpCisJY3VyX3ggPSBtYXhfeCAtIDE7CisgICAgaWYgKChjdXJfeSArPSBkeSkgPCAwKQorCWN1cl95ID0gMDsKKyAgICBlbHNlIGlmIChjdXJfeSA+PSBtYXhfeSkKKwljdXJfeSA9IG1heF95IC0gMTsKKyAgICB3bW92ZSh3aW4sIGN1cl95LCBjdXJfeCk7Cit9CisKK3N0YXRpYyBGUkFNRSAqCitkZWxldGVfZnJhbWVkKEZSQU1FICogZnAsIGJvb2wgc2hvd2l0KQoreworICAgIEZSQU1FICpucCA9IDA7CisKKyAgICBpZiAoZnAgIT0gMCkgeworCWZwLT5sYXN0LT5uZXh0ID0gZnAtPm5leHQ7CisJZnAtPm5leHQtPmxhc3QgPSBmcC0+bGFzdDsKKworCWlmIChzaG93aXQpIHsKKwkgICAgd2VyYXNlKGZwLT53aW5kKTsKKwkgICAgd3JlZnJlc2goZnAtPndpbmQpOworCX0KKwlkZWx3aW4oZnAtPndpbmQpOworCisJbnAgPSAoZnAgPT0gZnAtPm5leHQpID8gMCA6IGZwLT5uZXh0OworCWZyZWUoZnApOworICAgIH0KKyAgICByZXR1cm4gbnA7Cit9CisKK3N0YXRpYyB2b2lkCithY3NfYW5kX3Njcm9sbCh2b2lkKQorLyogRGVtb25zdHJhdGUgd2luZG93cyAqLworeworICAgIGludCBjOworICAgIEZSQU1FICpjdXJyZW50ID0gKEZSQU1FICopIDAsICpuZXd3OworICAgIFdJTkRPVyAqdXNlc2NyOworI2lmIEhBVkVfUFVUV0lOICYmIEhBVkVfR0VUV0lOCisgICAgRklMRSAqZnA7CisjZW5kaWYKKworI2RlZmluZSBEVU1QRklMRQkic2NyZWVuZHVtcCIKKworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgIG1vdXNlbWFzayhCVVRUT04xX0NMSUNLRUQsIChtbWFza190ICopIDApOworI2VuZGlmCisgICAgYyA9IENUUkwoJ0MnKTsKKyAgICByYXcoKTsKKyAgICBkbyB7CisJdHJhbnNpZW50KChGUkFNRSAqKSAwLCAoY2hhciAqKSAwKTsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlIENUUkwoJ0MnKToKKwkgICAgaWYgKChuZXd3ID0gdHlwZUNhbGxvYyhGUkFNRSwgKHNpemVfdCkgMSkpID09IDApIHsKKwkJZmFpbGVkKCJhY3NfYW5kX3Njcm9sbCIpOworCQlnb3RvIGJyZWFrb3V0OworCSAgICB9CisJICAgIGlmICgobmV3dy0+d2luZCA9IGdldHdpbmRvdygpKSA9PSAoV0lORE9XICopIDApIHsKKwkJZmFpbGVkKCJhY3NfYW5kX3Njcm9sbCIpOworCQlmcmVlKG5ld3cpOworCQlnb3RvIGJyZWFrb3V0OworCSAgICB9CisKKwkgICAgaWYgKGN1cnJlbnQgPT0gMCkgewkvKiBGaXJzdCBlbGVtZW50LCAgKi8KKwkJbmV3dy0+bmV4dCA9IG5ld3c7CS8qICAgc28gcG9pbnQgaXQgYXQgaXRzZWxmICovCisJCW5ld3ctPmxhc3QgPSBuZXd3OworCSAgICB9IGVsc2UgeworCQluZXd3LT5uZXh0ID0gY3VycmVudC0+bmV4dDsKKwkJbmV3dy0+bGFzdCA9IGN1cnJlbnQ7CisJCW5ld3ctPmxhc3QtPm5leHQgPSBuZXd3OworCQluZXd3LT5uZXh0LT5sYXN0ID0gbmV3dzsKKwkgICAgfQorCSAgICBjdXJyZW50ID0gbmV3dzsKKwkgICAgLyogU1ZyNCBjdXJzZXMgc2V0cyB0aGUga2V5cGFkIG9uIGFsbCBuZXdseS1jcmVhdGVkIHdpbmRvd3MgdG8KKwkgICAgICogZmFsc2UuICBTb21lb25lIHJlcG9ydGVkIHRoYXQgUERDdXJzZXMgbWFrZXMgbmV3IHdpbmRvd3MgaW5oZXJpdAorCSAgICAgKiB0aGlzIGZsYWcuICBSZW1vdmUgdGhlIGZvbGxvd2luZyAna2V5cGFkKCknIGNhbGwgdG8gdGVzdCB0aGlzCisJICAgICAqLworCSAgICBrZXlwYWQoY3VycmVudC0+d2luZCwgVFJVRSk7CisJICAgIGN1cnJlbnQtPmRvX2tleXBhZCA9IEhhdmVLZXlwYWQoY3VycmVudCk7CisJICAgIGN1cnJlbnQtPmRvX3Njcm9sbCA9IEhhdmVTY3JvbGwoY3VycmVudCk7CisJICAgIGJyZWFrOworCisJY2FzZSBDVFJMKCdOJyk6CS8qIGdvIHRvIG5leHQgd2luZG93ICovCisJICAgIGlmIChjdXJyZW50KQorCQljdXJyZW50ID0gY3VycmVudC0+bmV4dDsKKwkgICAgYnJlYWs7CisKKwljYXNlIENUUkwoJ1AnKToJLyogZ28gdG8gcHJldmlvdXMgd2luZG93ICovCisJICAgIGlmIChjdXJyZW50KQorCQljdXJyZW50ID0gY3VycmVudC0+bGFzdDsKKwkgICAgYnJlYWs7CisKKwljYXNlIENUUkwoJ0YnKToJLyogc2Nyb2xsIGN1cnJlbnQgd2luZG93IGZvcndhcmQgKi8KKwkgICAgaWYgKGN1cnJlbnQpCisJCXdzY3JsKGZyYW1lX3dpbihjdXJyZW50KSwgMSk7CisJICAgIGJyZWFrOworCisJY2FzZSBDVFJMKCdCJyk6CS8qIHNjcm9sbCBjdXJyZW50IHdpbmRvdyBiYWNrd2FyZHMgKi8KKwkgICAgaWYgKGN1cnJlbnQpCisJCXdzY3JsKGZyYW1lX3dpbihjdXJyZW50KSwgLTEpOworCSAgICBicmVhazsKKworCWNhc2UgQ1RSTCgnSycpOgkvKiB0b2dnbGUga2V5cGFkIG1vZGUgZm9yIGN1cnJlbnQgKi8KKwkgICAgaWYgKGN1cnJlbnQpIHsKKwkJY3VycmVudC0+ZG9fa2V5cGFkID0gIWN1cnJlbnQtPmRvX2tleXBhZDsKKwkJa2V5cGFkKGN1cnJlbnQtPndpbmQsIGN1cnJlbnQtPmRvX2tleXBhZCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlIENUUkwoJ1MnKToKKwkgICAgaWYgKGN1cnJlbnQpIHsKKwkJY3VycmVudC0+ZG9fc2Nyb2xsID0gIWN1cnJlbnQtPmRvX3Njcm9sbDsKKwkJc2Nyb2xsb2soY3VycmVudC0+d2luZCwgY3VycmVudC0+ZG9fc2Nyb2xsKTsKKwkgICAgfQorCSAgICBicmVhazsKKworI2lmIEhBVkVfUFVUV0lOICYmIEhBVkVfR0VUV0lOCisJY2FzZSBDVFJMKCdXJyk6CS8qIHNhdmUgYW5kIGRlbGV0ZSB3aW5kb3cgKi8KKwkgICAgaWYgKChjdXJyZW50ICE9IDApICYmIChjdXJyZW50ID09IGN1cnJlbnQtPm5leHQpKSB7CisJCXRyYW5zaWVudChjdXJyZW50LCAiV2lsbCBub3Qgc2F2ZS9kZWxldGUgT05MWSB3aW5kb3ciKTsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSBpZiAoKGZwID0gZm9wZW4oRFVNUEZJTEUsICJ3IikpID09IChGSUxFICopIDApIHsKKwkJdHJhbnNpZW50KGN1cnJlbnQsICJDYW4ndCBvcGVuIHNjcmVlbiBkdW1wIGZpbGUiKTsKKwkgICAgfSBlbHNlIHsKKwkJKHZvaWQpIHB1dHdpbihmcmFtZV93aW4oY3VycmVudCksIGZwKTsKKwkJKHZvaWQpIGZjbG9zZShmcCk7CisKKwkJY3VycmVudCA9IGRlbGV0ZV9mcmFtZWQoY3VycmVudCwgVFJVRSk7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlIENUUkwoJ1InKToJLyogcmVzdG9yZSB3aW5kb3cgKi8KKwkgICAgaWYgKChmcCA9IGZvcGVuKERVTVBGSUxFLCAiciIpKSA9PSAoRklMRSAqKSAwKSB7CisJCXRyYW5zaWVudChjdXJyZW50LCAiQ2FuJ3Qgb3BlbiBzY3JlZW4gZHVtcCBmaWxlIik7CisJICAgIH0gZWxzZSB7CisJCWlmICgobmV3dyA9IHR5cGVDYWxsb2MoRlJBTUUsIChzaXplX3QpIDEpKSAhPSAwKSB7CisKKwkJICAgIG5ld3ctPm5leHQgPSBjdXJyZW50ID8gY3VycmVudC0+bmV4dCA6IDA7CisJCSAgICBuZXd3LT5sYXN0ID0gY3VycmVudDsKKwkJICAgIGlmIChuZXd3LT5sYXN0ICE9IDApCisJCQluZXd3LT5sYXN0LT5uZXh0ID0gbmV3dzsKKwkJICAgIGlmIChuZXd3LT5uZXh0ICE9IDApCisJCQluZXd3LT5uZXh0LT5sYXN0ID0gbmV3dzsKKworCQkgICAgbmV3dy0+d2luZCA9IGdldHdpbihmcCk7CisKKwkJICAgIHdyZWZyZXNoKG5ld3ctPndpbmQpOworCQl9IGVsc2UgeworCQkgICAgZmFpbGVkKCJhY3NfYW5kX3Njcm9sbCIpOworCQl9CisJCSh2b2lkKSBmY2xvc2UoZnApOworCSAgICB9CisJICAgIGJyZWFrOworI2VuZGlmCisKKyNpZiBIQVZFX1dSRVNJWkUKKwljYXNlIENUUkwoJ1gnKToJLyogcmVzaXplIHdpbmRvdyAqLworCSAgICBpZiAoY3VycmVudCkgeworCQlwYWlyICp0bXAsIHVsLCBscjsKKwkJaW50IGksIG14LCBteTsKKworCQltb3ZlKDAsIDApOworCQljbHJ0b2VvbCgpOworCQlhZGRzdHIoIlVzZSBhcnJvd3MgdG8gbW92ZSBjdXJzb3IsIGFueXRoaW5nIGVsc2UgdG8gbWFyayBuZXcgY29ybmVyIik7CisJCXJlZnJlc2goKTsKKworCQlnZXRiZWd5eChjdXJyZW50LT53aW5kLCB1bC55LCB1bC54KTsKKworCQl0bXAgPSBzZWxlY3RjZWxsKHVsLnksIHVsLngsIExJTkVTIC0gQk9UTElORVMgLSAyLCBDT0xTIC0gMik7CisJCWlmICh0bXAgPT0gKHBhaXIgKikgMCkgeworCQkgICAgYmVlcCgpOworCQkgICAgYnJlYWs7CisJCX0KKworCQlnZXRtYXh5eChjdXJyZW50LT53aW5kLCBsci55LCBsci54KTsKKwkJbHIueSArPSAodWwueSAtIDEpOworCQlsci54ICs9ICh1bC54IC0gMSk7CisJCW91dGVyYm94KHVsLCBsciwgRkFMU0UpOworCQl3bm91dHJlZnJlc2goc3Rkc2NyKTsKKworCQkvKiBzdHJpY3RseSBjb3NtZXRpYyBoYWNrIGZvciB0aGUgdGVzdCAqLworCQlnZXRtYXh5eChjdXJyZW50LT53aW5kLCBteSwgbXgpOworCQlpZiAobXkgPiB0bXAtPnkgLSB1bC55KSB7CisJCSAgICBnZXR5eChjdXJyZW50LT53aW5kLCBsci55LCBsci54KTsKKwkJICAgIHdtb3ZlKGN1cnJlbnQtPndpbmQsIHRtcC0+eSAtIHVsLnkgKyAxLCAwKTsKKwkJICAgIHdjbHJ0b2JvdChjdXJyZW50LT53aW5kKTsKKwkJICAgIHdtb3ZlKGN1cnJlbnQtPndpbmQsIGxyLnksIGxyLngpOworCQl9CisJCWlmIChteCA+IHRtcC0+eCAtIHVsLngpCisJCSAgICBmb3IgKGkgPSAwOyBpIDwgbXk7IGkrKykgeworCQkJd21vdmUoY3VycmVudC0+d2luZCwgaSwgdG1wLT54IC0gdWwueCArIDEpOworCQkJd2NscnRvZW9sKGN1cnJlbnQtPndpbmQpOworCQkgICAgfQorCQl3bm91dHJlZnJlc2goY3VycmVudC0+d2luZCk7CisKKwkJbWVtY3B5KCZsciwgdG1wLCBzaXplb2YocGFpcikpOworCQkodm9pZCkgd3Jlc2l6ZShjdXJyZW50LT53aW5kLCBsci55IC0gdWwueSArIDAsIGxyLnggLSB1bC54ICsgMCk7CisKKwkJZ2V0YmVneXgoY3VycmVudC0+d2luZCwgdWwueSwgdWwueCk7CisJCWdldG1heHl4KGN1cnJlbnQtPndpbmQsIGxyLnksIGxyLngpOworCQlsci55ICs9ICh1bC55IC0gMSk7CisJCWxyLnggKz0gKHVsLnggLSAxKTsKKwkJb3V0ZXJib3godWwsIGxyLCBUUlVFKTsKKwkJd25vdXRyZWZyZXNoKHN0ZHNjcik7CisKKwkJd25vdXRyZWZyZXNoKGN1cnJlbnQtPndpbmQpOworCQltb3ZlKDAsIDApOworCQljbHJ0b2VvbCgpOworCQlkb3VwZGF0ZSgpOworCSAgICB9CisJICAgIGJyZWFrOworI2VuZGlmIC8qIEhBVkVfV1JFU0laRSAqLworCisJY2FzZSBLRVlfRigxMCk6CS8qIHVuZG9jdW1lbnRlZCAtLS0gdXNlIHRoaXMgdG8gdGVzdCBhcmVhIGNsZWFycyAqLworCSAgICBzZWxlY3RjZWxsKDAsIDAsIExJTkVTIC0gMSwgQ09MUyAtIDEpOworCSAgICBjbHJ0b2JvdCgpOworCSAgICByZWZyZXNoKCk7CisJICAgIGJyZWFrOworCisJY2FzZSBLRVlfVVA6CisJICAgIG5ld3dpbl9tb3ZlKGN1cnJlbnQsIC0xLCAwKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfRE9XTjoKKwkgICAgbmV3d2luX21vdmUoY3VycmVudCwgMSwgMCk7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJICAgIG5ld3dpbl9tb3ZlKGN1cnJlbnQsIDAsIC0xKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfUklHSFQ6CisJICAgIG5ld3dpbl9tb3ZlKGN1cnJlbnQsIDAsIDEpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX0JBQ0tTUEFDRToKKwkgICAgLyogRkFMTFRIUk9VR0ggKi8KKwljYXNlIEtFWV9EQzoKKwkgICAgeworCQlpbnQgeSwgeDsKKwkJZ2V0eXgoZnJhbWVfd2luKGN1cnJlbnQpLCB5LCB4KTsKKwkJaWYgKC0teCA8IDApIHsKKwkJICAgIGlmICgtLXkgPCAwKQorCQkJYnJlYWs7CisJCSAgICB4ID0gZ2V0bWF4eChmcmFtZV93aW4oY3VycmVudCkpIC0gMTsKKwkJfQorCQkodm9pZCkgbXZ3ZGVsY2goZnJhbWVfd2luKGN1cnJlbnQpLCB5LCB4KTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJ1xyJzoKKwkgICAgYyA9ICdcbic7CisJICAgIC8qIEZBTExUSFJPVUdIICovCisKKwlkZWZhdWx0OgorCSAgICBpZiAoY3VycmVudCkKKwkJd2FkZGNoKGN1cnJlbnQtPndpbmQsIChjaHR5cGUpIGMpOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCW5ld3dpbl9yZXBvcnQoY3VycmVudCk7CisJdXNlc2NyID0gZnJhbWVfd2luKGN1cnJlbnQpOworCXdyZWZyZXNoKHVzZXNjcik7CisgICAgfSB3aGlsZQorCSghaXNRdWl0KGMgPSB3R2V0Y2hhcih1c2VzY3IpKQorCSAmJiAoYyAhPSBFUlIpKTsKKworICBicmVha291dDoKKyAgICB3aGlsZSAoY3VycmVudCAhPSAwKQorCWN1cnJlbnQgPSBkZWxldGVfZnJhbWVkKGN1cnJlbnQsIEZBTFNFKTsKKworICAgIHNjcm9sbG9rKHN0ZHNjciwgVFJVRSk7CS8qIHJlc2V0IHRvIGRyaXZlcidzIGRlZmF1bHQgKi8KKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKyAgICBtb3VzZW1hc2soMCwgKG1tYXNrX3QgKikgMCk7CisjZW5kaWYKKyAgICBub3JhdygpOworICAgIGVyYXNlKCk7CisgICAgZW5kd2luKCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogUGFuZWxzIHRlc3RlcgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgVVNFX0xJQlBBTkVMCitzdGF0aWMgaW50IG5hcF9tc2VjID0gMTsKKworc3RhdGljIE5DVVJTRVNfQ09OU1QgY2hhciAqbW9kW10gPQoreworICAgICJ0ZXN0ICIsCisgICAgIlRFU1QgIiwKKyAgICAiKCoqKSAiLAorICAgICIqKCkqICIsCisgICAgIjwtLT4gIiwKKyAgICAiTEFTVCAiCit9OworCisvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJd2FpdF9hX3doaWxlKG1zZWMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAord2FpdF9hX3doaWxlKGludCBtc2VjIEdDQ19VTlVTRUQpCit7CisjaWYgSEFWRV9OQVBNUworICAgIGlmIChuYXBfbXNlYyA9PSAxKQorCXdHZXRjaGFyKHN0ZHNjcik7CisgICAgZWxzZQorCW5hcG1zKG5hcF9tc2VjKTsKKyNlbHNlCisgICAgaWYgKG5hcF9tc2VjID09IDEpCisJd0dldGNoYXIoc3Rkc2NyKTsKKyAgICBlbHNlIGlmIChtc2VjID4gMTAwMCkKKwlzbGVlcCgodW5zaWduZWQpIG1zZWMgLyAxMDAwKTsKKyAgICBlbHNlCisJc2xlZXAoMSk7CisjZW5kaWYKK30JCQkJLyogZW5kIG9mIHdhaXRfYV93aGlsZSAqLworCisvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJc2F5d2hhdCh0ZXh0KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQKK3NheXdoYXQoTkNVUlNFU19DT05TVCBjaGFyICp0ZXh0KQoreworICAgIHdtb3ZlKHN0ZHNjciwgTElORVMgLSAxLCAwKTsKKyAgICB3Y2xydG9lb2woc3Rkc2NyKTsKKyAgICBpZiAodGV4dCAhPSAwICYmICp0ZXh0ICE9ICdcMCcpIHsKKwl3YWRkc3RyKHN0ZHNjciwgdGV4dCk7CisJd2FkZHN0cihzdGRzY3IsICI7ICIpOworICAgIH0KKyAgICB3YWRkc3RyKHN0ZHNjciwgInByZXNzIGFueSBrZXkgdG8gY29udGludWUiKTsKK30JCQkJLyogZW5kIG9mIHNheXdoYXQgKi8KKworLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCW1rcGFuZWwocm93cyxjb2xzLHRseSx0bHgpIC0gYWxsb2MgYSB3aW4gYW5kIHBhbmVsIGFuZCBhc3NvY2lhdGUgdGhlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIFBBTkVMICoKK21rcGFuZWwoTkNVUlNFU19DT0xPUl9UIGNvbG9yLCBpbnQgcm93cywgaW50IGNvbHMsIGludCB0bHksIGludCB0bHgpCit7CisgICAgV0lORE9XICp3aW47CisgICAgUEFORUwgKnBhbiA9IDA7CisKKyAgICBpZiAoKHdpbiA9IG5ld3dpbihyb3dzLCBjb2xzLCB0bHksIHRseCkpICE9IDApIHsKKwlpZiAoKHBhbiA9IG5ld19wYW5lbCh3aW4pKSA9PSAwKSB7CisJICAgIGRlbHdpbih3aW4pOworCX0gZWxzZSBpZiAodXNlX2NvbG9ycykgeworCSAgICBOQ1VSU0VTX0NPTE9SX1QgZmcgPSAoTkNVUlNFU19DT0xPUl9UKSAoKGNvbG9yID09IENPTE9SX0JMVUUpCisJCQkJCQkgICAgPyBDT0xPUl9XSElURQorCQkJCQkJICAgIDogQ09MT1JfQkxBQ0spOworCSAgICBOQ1VSU0VTX0NPTE9SX1QgYmcgPSBjb2xvcjsKKworCSAgICBpbml0X3BhaXIoY29sb3IsIGZnLCBiZyk7CisJICAgIHdia2dkc2V0KHdpbiwgKGF0dHJfdCkgKENPTE9SX1BBSVIoY29sb3IpIHwgJyAnKSk7CisJfSBlbHNlIHsKKwkgICAgd2JrZ2RzZXQod2luLCBBX0JPTEQgfCAnICcpOworCX0KKyAgICB9CisgICAgcmV0dXJuIHBhbjsKK30JCQkJLyogZW5kIG9mIG1rcGFuZWwgKi8KKworLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXJtcGFuZWwocGFuKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQKK3JtcGFuZWwoUEFORUwgKiBwYW4pCit7CisgICAgV0lORE9XICp3aW4gPSBwYW5lbF93aW5kb3cocGFuKTsKKyAgICBkZWxfcGFuZWwocGFuKTsKKyAgICBkZWx3aW4od2luKTsKK30JCQkJLyogZW5kIG9mIHJtcGFuZWwgKi8KKworLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXBmbHVzaCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgdm9pZAorcGZsdXNoKHZvaWQpCit7CisgICAgdXBkYXRlX3BhbmVscygpOworICAgIGRvdXBkYXRlKCk7Cit9CQkJCS8qIGVuZCBvZiBwZmx1c2ggKi8KKworLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCWZpbGxfcGFuZWwod2luKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQKK2luaXRfcGFuZWwoV0lORE9XICp3aW4pCit7CisgICAgcmVnaXN0ZXIgaW50IHksIHg7CisKKyAgICBmb3IgKHkgPSAwOyB5IDwgTElORVMgLSAxOyB5KyspIHsKKwlmb3IgKHggPSAwOyB4IDwgQ09MUzsgeCsrKQorCSAgICB3cHJpbnR3KHdpbiwgIiVkIiwgKHkgKyB4KSAlIDEwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitmaWxsX3BhbmVsKFBBTkVMICogcGFuKQoreworICAgIFdJTkRPVyAqd2luID0gcGFuZWxfd2luZG93KHBhbik7CisgICAgY29uc3QgY2hhciAqdXNlcnB0ciA9IChjb25zdCBjaGFyICopIHBhbmVsX3VzZXJwdHIocGFuKTsKKyAgICBpbnQgbnVtID0gKHVzZXJwdHIgJiYgKnVzZXJwdHIpID8gdXNlcnB0clsxXSA6ICc/JzsKKyAgICBpbnQgeSwgeDsKKworICAgIHdtb3ZlKHdpbiwgMSwgMSk7CisgICAgd3ByaW50dyh3aW4sICItcGFuJWMtIiwgbnVtKTsKKyAgICB3Y2xydG9lb2wod2luKTsKKyAgICBib3god2luLCAwLCAwKTsKKyAgICBmb3IgKHkgPSAyOyB5IDwgZ2V0bWF4eSh3aW4pIC0gMTsgeSsrKSB7CisJZm9yICh4ID0gMTsgeCA8IGdldG1heHgod2luKSAtIDE7IHgrKykgeworCSAgICB3bW92ZSh3aW4sIHksIHgpOworCSAgICB3YWRkY2god2luLCBVQ2hhcihudW0pKTsKKwl9CisgICAgfQorfQorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKK3N0YXRpYyB2b2lkCitpbml0X3dpZGVfcGFuZWwoV0lORE9XICp3aW4pCit7CisgICAgaW50IGRpZ2l0OworICAgIGNjaGFyX3QgdGVtcFsxMF07CisKKyAgICBmb3IgKGRpZ2l0ID0gMDsgZGlnaXQgPCAxMDsgKytkaWdpdCkKKwltYWtlX2Z1bGx3aWR0aF9kaWdpdCgmdGVtcFtkaWdpdF0sIGRpZ2l0KTsKKworICAgIGRvIHsKKwlpbnQgeSwgeDsKKwlnZXR5eChzdGRzY3IsIHksIHgpOworCWRpZ2l0ID0gKHkgKyB4IC8gMikgJSAxMDsKKyAgICB9IHdoaWxlICh3YWRkX3djaCh3aW4sICZ0ZW1wW2RpZ2l0XSkgIT0gRVJSKTsKK30KKworc3RhdGljIHZvaWQKK2ZpbGxfd2lkZV9wYW5lbChQQU5FTCAqIHBhbikKK3sKKyAgICBXSU5ET1cgKndpbiA9IHBhbmVsX3dpbmRvdyhwYW4pOworICAgIGNvbnN0IGNoYXIgKnVzZXJwdHIgPSAoY29uc3QgY2hhciAqKSBwYW5lbF91c2VycHRyKHBhbik7CisgICAgaW50IG51bSA9ICh1c2VycHRyICYmICp1c2VycHRyKSA/IHVzZXJwdHJbMV0gOiAnPyc7CisgICAgaW50IHksIHg7CisKKyAgICB3bW92ZSh3aW4sIDEsIDEpOworICAgIHdwcmludHcod2luLCAiLXBhbiVjLSIsIG51bSk7CisgICAgd2NscnRvZW9sKHdpbik7CisgICAgYm94KHdpbiwgMCwgMCk7CisgICAgZm9yICh5ID0gMjsgeSA8IGdldG1heHkod2luKSAtIDE7IHkrKykgeworCWZvciAoeCA9IDE7IHggPCBnZXRtYXh4KHdpbikgLSAxOyB4KyspIHsKKwkgICAgd21vdmUod2luLCB5LCB4KTsKKwkgICAgd2FkZGNoKHdpbiwgVUNoYXIobnVtKSk7CisJfQorICAgIH0KK30KKyNlbmRpZgorCisjZGVmaW5lIE1BWF9QQU5FTFMgNQorCitzdGF0aWMgdm9pZAorY2FubmVkX3BhbmVsKFBBTkVMICogcHhbTUFYX1BBTkVMUyArIDFdLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmNtZCkKK3sKKyAgICBpbnQgd2hpY2ggPSBjbWRbMV0gLSAnMCc7CisKKyAgICBzYXl3aGF0KGNtZCk7CisgICAgc3dpdGNoICgqY21kKSB7CisgICAgY2FzZSAnaCc6CisJaGlkZV9wYW5lbChweFt3aGljaF0pOworCWJyZWFrOworICAgIGNhc2UgJ3MnOgorCXNob3dfcGFuZWwocHhbd2hpY2hdKTsKKwlicmVhazsKKyAgICBjYXNlICd0JzoKKwl0b3BfcGFuZWwocHhbd2hpY2hdKTsKKwlicmVhazsKKyAgICBjYXNlICdiJzoKKwlib3R0b21fcGFuZWwocHhbd2hpY2hdKTsKKwlicmVhazsKKyAgICBjYXNlICdkJzoKKwlybXBhbmVsKHB4W3doaWNoXSk7CisJYnJlYWs7CisgICAgfQorICAgIHBmbHVzaCgpOworICAgIHdhaXRfYV93aGlsZShuYXBfbXNlYyk7Cit9CisKK3N0YXRpYyB2b2lkCitkZW1vX3BhbmVscyh2b2lkICgqSW5pdFBhbmVsKSAoV0lORE9XICopLCB2b2lkICgqRmlsbFBhbmVsKSAoUEFORUwgKikpCit7CisgICAgaW50IGNvdW50OworICAgIGludCBpdG1wOworICAgIFBBTkVMICpweFtNQVhfUEFORUxTICsgMV07CisKKyAgICBzY3JvbGxvayhzdGRzY3IsIEZBTFNFKTsJLyogd2UgZG9uJ3Qgd2FudCBzdGRzY3IgdG8gc2Nyb2xsISAqLworICAgIHJlZnJlc2goKTsKKworICAgIEluaXRQYW5lbChzdGRzY3IpOworICAgIGZvciAoY291bnQgPSAwOyBjb3VudCA8IDU7IGNvdW50KyspIHsKKwlweFsxXSA9IG1rcGFuZWwoQ09MT1JfUkVELAorCQkJTElORVMgLyAyIC0gMiwKKwkJCUNPTFMgLyA4ICsgMSwKKwkJCTAsCisJCQkwKTsKKwlzZXRfcGFuZWxfdXNlcnB0cihweFsxXSwgKE5DVVJTRVNfQ09OU1Qgdm9pZCAqKSAicDEiKTsKKworCXB4WzJdID0gbWtwYW5lbChDT0xPUl9HUkVFTiwKKwkJCUxJTkVTIC8gMiArIDEsCisJCQlDT0xTIC8gNywKKwkJCUxJTkVTIC8gNCwKKwkJCUNPTFMgLyAxMCk7CisJc2V0X3BhbmVsX3VzZXJwdHIocHhbMl0sIChOQ1VSU0VTX0NPTlNUIHZvaWQgKikgInAyIik7CisKKwlweFszXSA9IG1rcGFuZWwoQ09MT1JfWUVMTE9XLAorCQkJTElORVMgLyA0LAorCQkJQ09MUyAvIDEwLAorCQkJTElORVMgLyAyLAorCQkJQ09MUyAvIDkpOworCXNldF9wYW5lbF91c2VycHRyKHB4WzNdLCAoTkNVUlNFU19DT05TVCB2b2lkICopICJwMyIpOworCisJcHhbNF0gPSBta3BhbmVsKENPTE9SX0JMVUUsCisJCQlMSU5FUyAvIDIgLSAyLAorCQkJQ09MUyAvIDgsCisJCQlMSU5FUyAvIDIgLSAyLAorCQkJQ09MUyAvIDMpOworCXNldF9wYW5lbF91c2VycHRyKHB4WzRdLCAoTkNVUlNFU19DT05TVCB2b2lkICopICJwNCIpOworCisJcHhbNV0gPSBta3BhbmVsKENPTE9SX01BR0VOVEEsCisJCQlMSU5FUyAvIDIgLSAyLAorCQkJQ09MUyAvIDgsCisJCQlMSU5FUyAvIDIsCisJCQlDT0xTIC8gMiAtIDIpOworCXNldF9wYW5lbF91c2VycHRyKHB4WzVdLCAoTkNVUlNFU19DT05TVCB2b2lkICopICJwNSIpOworCisJRmlsbFBhbmVsKHB4WzFdKTsKKwlGaWxsUGFuZWwocHhbMl0pOworCUZpbGxQYW5lbChweFszXSk7CisJRmlsbFBhbmVsKHB4WzRdKTsKKwlGaWxsUGFuZWwocHhbNV0pOworCisJaGlkZV9wYW5lbChweFs0XSk7CisJaGlkZV9wYW5lbChweFs1XSk7CisJcGZsdXNoKCk7CisJc2F5d2hhdCgiIik7CisJd2FpdF9hX3doaWxlKG5hcF9tc2VjKTsKKworCXNheXdoYXQoImgzIHMxIHMyIHM0IHM1Iik7CisJbW92ZV9wYW5lbChweFsxXSwgMCwgMCk7CisJaGlkZV9wYW5lbChweFszXSk7CisJc2hvd19wYW5lbChweFsxXSk7CisJc2hvd19wYW5lbChweFsyXSk7CisJc2hvd19wYW5lbChweFs0XSk7CisJc2hvd19wYW5lbChweFs1XSk7CisJcGZsdXNoKCk7CisJd2FpdF9hX3doaWxlKG5hcF9tc2VjKTsKKworCWNhbm5lZF9wYW5lbChweCwgInMxIik7CisJY2FubmVkX3BhbmVsKHB4LCAiczIiKTsKKworCXNheXdoYXQoIm0yIik7CisJbW92ZV9wYW5lbChweFsyXSwgTElORVMgLyAzICsgMSwgQ09MUyAvIDgpOworCXBmbHVzaCgpOworCXdhaXRfYV93aGlsZShuYXBfbXNlYyk7CisKKwljYW5uZWRfcGFuZWwocHgsICJzMyIpOworCisJc2F5d2hhdCgibTMiKTsKKwltb3ZlX3BhbmVsKHB4WzNdLCBMSU5FUyAvIDQgKyAxLCBDT0xTIC8gMTUpOworCXBmbHVzaCgpOworCXdhaXRfYV93aGlsZShuYXBfbXNlYyk7CisKKwljYW5uZWRfcGFuZWwocHgsICJiMyIpOworCWNhbm5lZF9wYW5lbChweCwgInM0Iik7CisJY2FubmVkX3BhbmVsKHB4LCAiczUiKTsKKwljYW5uZWRfcGFuZWwocHgsICJ0MyIpOworCWNhbm5lZF9wYW5lbChweCwgInQxIik7CisJY2FubmVkX3BhbmVsKHB4LCAidDIiKTsKKwljYW5uZWRfcGFuZWwocHgsICJ0MyIpOworCWNhbm5lZF9wYW5lbChweCwgInQ0Iik7CisKKwlmb3IgKGl0bXAgPSAwOyBpdG1wIDwgNjsgaXRtcCsrKSB7CisJICAgIFdJTkRPVyAqdzQgPSBwYW5lbF93aW5kb3cocHhbNF0pOworCSAgICBXSU5ET1cgKnc1ID0gcGFuZWxfd2luZG93KHB4WzVdKTsKKworCSAgICBzYXl3aGF0KCJtNCIpOworCSAgICB3bW92ZSh3NCwgTElORVMgLyA4LCAxKTsKKwkgICAgd2FkZHN0cih3NCwgbW9kW2l0bXBdKTsKKwkgICAgbW92ZV9wYW5lbChweFs0XSwgTElORVMgLyA2LCBpdG1wICogKENPTFMgLyA4KSk7CisJICAgIHdtb3ZlKHc1LCBMSU5FUyAvIDYsIDEpOworCSAgICB3YWRkc3RyKHc1LCBtb2RbaXRtcF0pOworCSAgICBwZmx1c2goKTsKKwkgICAgd2FpdF9hX3doaWxlKG5hcF9tc2VjKTsKKworCSAgICBzYXl3aGF0KCJtNSIpOworCSAgICB3bW92ZSh3NCwgTElORVMgLyA2LCAxKTsKKwkgICAgd2FkZHN0cih3NCwgbW9kW2l0bXBdKTsKKwkgICAgbW92ZV9wYW5lbChweFs1XSwgTElORVMgLyAzIC0gMSwgKGl0bXAgKiAxMCkgKyA2KTsKKwkgICAgd21vdmUodzUsIExJTkVTIC8gOCwgMSk7CisJICAgIHdhZGRzdHIodzUsIG1vZFtpdG1wXSk7CisJICAgIHBmbHVzaCgpOworCSAgICB3YWl0X2Ffd2hpbGUobmFwX21zZWMpOworCX0KKworCXNheXdoYXQoIm00Iik7CisJbW92ZV9wYW5lbChweFs0XSwgTElORVMgLyA2LCBpdG1wICogKENPTFMgLyA4KSk7CisJcGZsdXNoKCk7CisJd2FpdF9hX3doaWxlKG5hcF9tc2VjKTsKKworCWNhbm5lZF9wYW5lbChweCwgInQ1Iik7CisJY2FubmVkX3BhbmVsKHB4LCAidDIiKTsKKwljYW5uZWRfcGFuZWwocHgsICJ0MSIpOworCWNhbm5lZF9wYW5lbChweCwgImQyIik7CisJY2FubmVkX3BhbmVsKHB4LCAiaDMiKTsKKwljYW5uZWRfcGFuZWwocHgsICJkMSIpOworCWNhbm5lZF9wYW5lbChweCwgImQ0Iik7CisJY2FubmVkX3BhbmVsKHB4LCAiZDUiKTsKKwljYW5uZWRfcGFuZWwocHgsICJkMyIpOworCisJd2FpdF9hX3doaWxlKG5hcF9tc2VjKTsKKwlpZiAobmFwX21zZWMgPT0gMSkKKwkgICAgYnJlYWs7CisJbmFwX21zZWMgPSAxMDBMOworICAgIH0KKworICAgIGVyYXNlKCk7CisgICAgZW5kd2luKCk7Cit9CisjZW5kaWYgLyogVVNFX0xJQlBBTkVMICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogUGFkIHRlc3RlcgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEdSSURTSVpFCTMKKworc3RhdGljIGJvb2wgcGVuZGluZ19wYW4gPSBGQUxTRTsKK3N0YXRpYyBib29sIHNob3dfcGFubmVyX2xlZ2VuZCA9IFRSVUU7CisKK3N0YXRpYyBpbnQKK3Bhbm5lcl9sZWdlbmQoaW50IGxpbmUpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGxlZ2VuZFtdID0KKyAgICB7CisJIlVzZSBhcnJvdyBrZXlzIChvciBVLEQsTCxSKSB0byBwYW4sIEVTQyB0byBxdWl0LCAhIHRvIHNoZWxsLW91dC4iLAorCSJVc2UgKywtIChvciBqLGspIHRvIGdyb3cvc2hyaW5rIHRoZSBwYW5uZXIgdmVydGljYWxseS4iLAorCSJVc2UgPCw+IChvciBoLGwpIHRvIGdyb3cvc2hyaW5rIHRoZSBwYW5uZXIgaG9yaXpvbnRhbGx5LiIsCisJIk51bWJlciByZXBlYXRzLiAgVG9nZ2xlIGxlZ2VuZDo/IGZpbGxlcjphIHRpbWVyOnQgc2Nyb2xsbWFyazpzLiIKKyAgICB9OworICAgIGludCBuID0gKChpbnQpIFNJWkVPRihsZWdlbmQpIC0gKExJTkVTIC0gbGluZSkpOworICAgIGlmIChuID49IDApIHsKKwlpZiAobW92ZShsaW5lLCAwKSAhPSBFUlIpIHsKKwkgICAgaWYgKHNob3dfcGFubmVyX2xlZ2VuZCkKKwkJcHJpbnR3KCIlcyIsIGxlZ2VuZFtuXSk7CisJICAgIGNscnRvZW9sKCk7CisJICAgIHJldHVybiBzaG93X3Bhbm5lcl9sZWdlbmQ7CisJfQorICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitwYW5uZXJfaF9jbGVhbnVwKGludCBmcm9tX3ksIGludCBmcm9tX3gsIGludCB0b194KQoreworICAgIGlmICghcGFubmVyX2xlZ2VuZChmcm9tX3kpKQorCWRvX2hfbGluZShmcm9tX3ksIGZyb21feCwgJyAnLCB0b194KTsKK30KKworc3RhdGljIHZvaWQKK3Bhbm5lcl92X2NsZWFudXAoaW50IGZyb21feSwgaW50IGZyb21feCwgaW50IHRvX3kpCit7CisgICAgaWYgKCFwYW5uZXJfbGVnZW5kKGZyb21feSkpCisJZG9fdl9saW5lKGZyb21feSwgZnJvbV94LCAnICcsIHRvX3kpOworfQorCitzdGF0aWMgdm9pZAorZmlsbF9wYWQoV0lORE9XICpwYW5wYWQsIGJvb2wgcGFuX2xpbmVzLCBib29sIGNvbG9yZWQpCit7CisgICAgaW50IHksIHg7CisgICAgdW5zaWduZWQgZ3JpZGNvdW50ID0gMDsKKyAgICBjaHR5cGUgZmlsbCA9IDA7CisjaWZkZWYgQV9DT0xPUgorICAgIGlmIChjb2xvcmVkKQorCWZpbGwgPSAoY2h0eXBlKSBDT0xPUl9QQUlSKDEpOworI2VuZGlmCisKKyAgICB3bW92ZShwYW5wYWQsIDAsIDApOworICAgIGZvciAoeSA9IDA7IHkgPCBnZXRtYXh5KHBhbnBhZCk7IHkrKykgeworCWZvciAoeCA9IDA7IHggPCBnZXRtYXh4KHBhbnBhZCk7IHgrKykgeworCSAgICBpZiAoeSAlIEdSSURTSVpFID09IDAgJiYgeCAlIEdSSURTSVpFID09IDApIHsKKwkJaWYgKHkgPT0gMCAmJiB4ID09IDApCisJCSAgICB3YWRkY2gocGFucGFkLCBwYW5fbGluZXMgPyBBQ1NfVUxDT1JORVIgOiAnKycpOworCQllbHNlIGlmICh5ID09IDApCisJCSAgICB3YWRkY2gocGFucGFkLCBwYW5fbGluZXMgPyBBQ1NfVFRFRSA6ICcrJyk7CisJCWVsc2UgaWYgKHkgPT0gMCB8fCB4ID09IDApCisJCSAgICB3YWRkY2gocGFucGFkLCBwYW5fbGluZXMgPyBBQ1NfTFRFRSA6ICcrJyk7CisJCWVsc2UKKwkJICAgIHdhZGRjaChwYW5wYWQsIChjaHR5cGUpICgocGFuX2xpbmVzID8gJ2EnIDogJ0EnKSArCisJCQkJCSAgICAgKGludCkgKGdyaWRjb3VudCsrICUgMjYpKSB8IGZpbGwpOworCSAgICB9IGVsc2UgaWYgKHkgJSBHUklEU0laRSA9PSAwKQorCQl3YWRkY2gocGFucGFkLCBwYW5fbGluZXMgPyBBQ1NfSExJTkUgOiAnLScpOworCSAgICBlbHNlIGlmICh4ICUgR1JJRFNJWkUgPT0gMCkKKwkJd2FkZGNoKHBhbnBhZCwgcGFuX2xpbmVzID8gQUNTX1ZMSU5FIDogJ3wnKTsKKwkgICAgZWxzZQorCQl3YWRkY2gocGFucGFkLCAnICcpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitwYW5uZXIoV0lORE9XICpwYWQsCisgICAgICAgaW50IHRvcF94LCBpbnQgdG9wX3ksIGludCBwb3J0eSwgaW50IHBvcnR4LAorICAgICAgIGludCAoKnBnZXRjKSAoV0lORE9XICopLAorICAgICAgIGJvb2wgY29sb3JlZCkKK3sKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIHN0cnVjdCB0aW1ldmFsIGJlZm9yZSwgYWZ0ZXI7CisgICAgYm9vbCB0aW1pbmcgPSBUUlVFOworI2VuZGlmCisgICAgYm9vbCBwYW5fbGluZXMgPSBGQUxTRTsKKyAgICBib29sIHNjcm9sbGVycyA9IFRSVUU7CisgICAgaW50IGJhc2V4ID0gMDsKKyAgICBpbnQgYmFzZXkgPSAwOworICAgIGludCBweG1heCwgcHltYXgsIGxvd2VuZCwgaGlnaGVuZCwgYzsKKworICAgIGdldG1heHl4KHBhZCwgcHltYXgsIHB4bWF4KTsKKyAgICBzY3JvbGxvayhzdGRzY3IsIEZBTFNFKTsJLyogd2UgZG9uJ3Qgd2FudCBzdGRzY3IgdG8gc2Nyb2xsISAqLworCisgICAgYyA9IEtFWV9SRUZSRVNIOworICAgIGRvIHsKKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKwkvKgorCSAqIER1cmluZyBzaGVsbC1vdXQsIHRoZSB1c2VyIG1heSBoYXZlIHJlc2l6ZWQgdGhlIHdpbmRvdy4gIEFkanVzdAorCSAqIHRoZSBwb3J0IHNpemUgb2YgdGhlIHBhZCB0byBhY2NvbW1vZGF0ZSB0aGlzLiAgTmN1cnNlcyBhdXRvbWF0aWNhbGx5CisJICogcmVzaXplcyBhbGwgb2YgdGhlIG5vcm1hbCB3aW5kb3dzIHRvIGZpdCBvbiB0aGUgbmV3IHNjcmVlbi4KKwkgKi8KKwlpZiAodG9wX3ggPiBDT0xTKQorCSAgICB0b3BfeCA9IENPTFM7CisJaWYgKHBvcnR4ID4gQ09MUykKKwkgICAgcG9ydHggPSBDT0xTOworCWlmICh0b3BfeSA+IExJTkVTKQorCSAgICB0b3BfeSA9IExJTkVTOworCWlmIChwb3J0eSA+IExJTkVTKQorCSAgICBwb3J0eSA9IExJTkVTOworI2VuZGlmCisJc3dpdGNoIChjKSB7CisJY2FzZSBLRVlfUkVGUkVTSDoKKwkgICAgZXJhc2UoKTsKKworCSAgICAvKiBGQUxMVEhSVSAqLworCWNhc2UgJz8nOgorCSAgICBpZiAoYyA9PSAnPycpCisJCXNob3dfcGFubmVyX2xlZ2VuZCA9ICFzaG93X3Bhbm5lcl9sZWdlbmQ7CisJICAgIHBhbm5lcl9sZWdlbmQoTElORVMgLSA0KTsKKwkgICAgcGFubmVyX2xlZ2VuZChMSU5FUyAtIDMpOworCSAgICBwYW5uZXJfbGVnZW5kKExJTkVTIC0gMik7CisJICAgIHBhbm5lcl9sZWdlbmQoTElORVMgLSAxKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnYSc6CisJICAgIHBhbl9saW5lcyA9ICFwYW5fbGluZXM7CisJICAgIGZpbGxfcGFkKHBhZCwgcGFuX2xpbmVzLCBjb2xvcmVkKTsKKwkgICAgcGVuZGluZ19wYW4gPSBGQUxTRTsKKwkgICAgYnJlYWs7CisKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorCWNhc2UgJ3QnOgorCSAgICB0aW1pbmcgPSAhdGltaW5nOworCSAgICBpZiAoIXRpbWluZykKKwkJcGFubmVyX2xlZ2VuZChMSU5FUyAtIDEpOworCSAgICBicmVhazsKKyNlbmRpZgorCWNhc2UgJ3MnOgorCSAgICBzY3JvbGxlcnMgPSAhc2Nyb2xsZXJzOworCSAgICBicmVhazsKKworCSAgICAvKiBNb3ZlIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHBhZCwga2VlcGluZyB0aGUgYm90dG9tLXJpZ2h0CisJICAgICAqIGNvcm5lciBmaXhlZC4KKwkgICAgICovCisJY2FzZSAnaCc6CQkvKiBpbmNyZWFzZS1jb2x1bW5zOiBtb3ZlIGxlZnQgZWRnZSB0byBsZWZ0ICovCisJICAgIGlmICh0b3BfeCA8PSAwKQorCQliZWVwKCk7CisJICAgIGVsc2UgeworCQlwYW5uZXJfdl9jbGVhbnVwKHRvcF95LCB0b3BfeCwgcG9ydHkpOworCQl0b3BfeC0tOworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSAnaic6CQkvKiBkZWNyZWFzZS1saW5lczogbW92ZSB0b3AtZWRnZSBkb3duICovCisJICAgIGlmICh0b3BfeSA+PSBwb3J0eSkKKwkJYmVlcCgpOworCSAgICBlbHNlIHsKKwkJcGFubmVyX2hfY2xlYW51cCh0b3BfeSAtIDEsIHRvcF94IC0gKHRvcF94ID4gMCksIHBvcnR4KTsKKwkJdG9wX3krKzsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJ2snOgkJLyogaW5jcmVhc2UtbGluZXM6IG1vdmUgdG9wLWVkZ2UgdXAgKi8KKwkgICAgaWYgKHRvcF95IDw9IDApCisJCWJlZXAoKTsKKwkgICAgZWxzZSB7CisJCXRvcF95LS07CisJCXBhbm5lcl9oX2NsZWFudXAodG9wX3ksIHRvcF94LCBwb3J0eCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlICdsJzoJCS8qIGRlY3JlYXNlLWNvbHVtbnM6IG1vdmUgbGVmdC1lZGdlIHRvIHJpZ2h0ICovCisJICAgIGlmICh0b3BfeCA+PSBwb3J0eCkKKwkJYmVlcCgpOworCSAgICBlbHNlIHsKKwkJcGFubmVyX3ZfY2xlYW51cCh0b3BfeSAtICh0b3BfeSA+IDApLCB0b3BfeCAtIDEsIHBvcnR5KTsKKwkJdG9wX3grKzsKKwkgICAgfQorCSAgICBicmVhazsKKworCSAgICAvKiBNb3ZlIHRoZSBib3R0b20tcmlnaHQgY29ybmVyIG9mIHRoZSBwYWQsIGtlZXBpbmcgdGhlIHRvcC1sZWZ0CisJICAgICAqIGNvcm5lciBmaXhlZC4KKwkgICAgICovCisJY2FzZSBLRVlfSUM6CQkvKiBpbmNyZWFzZS1jb2x1bW5zOiBtb3ZlIHJpZ2h0LWVkZ2UgdG8gcmlnaHQgKi8KKwkgICAgaWYgKHBvcnR4ID49IHB4bWF4IHx8IHBvcnR4ID49IENPTFMpCisJCWJlZXAoKTsKKwkgICAgZWxzZSB7CisJCXBhbm5lcl92X2NsZWFudXAodG9wX3kgLSAodG9wX3kgPiAwKSwgcG9ydHggLSAxLCBwb3J0eSk7CisJCSsrcG9ydHg7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlIEtFWV9JTDoJCS8qIGluY3JlYXNlLWxpbmVzOiBtb3ZlIGJvdHRvbS1lZGdlIGRvd24gKi8KKwkgICAgaWYgKHBvcnR5ID49IHB5bWF4IHx8IHBvcnR5ID49IExJTkVTKQorCQliZWVwKCk7CisJICAgIGVsc2UgeworCQlwYW5uZXJfaF9jbGVhbnVwKHBvcnR5IC0gMSwgdG9wX3ggLSAodG9wX3ggPiAwKSwgcG9ydHgpOworCQkrK3BvcnR5OworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSBLRVlfREM6CQkvKiBkZWNyZWFzZS1jb2x1bW5zOiBtb3ZlIGJvdHRvbSBlZGdlIHVwICovCisJICAgIGlmIChwb3J0eCA8PSB0b3BfeCkKKwkJYmVlcCgpOworCSAgICBlbHNlIHsKKwkJcG9ydHgtLTsKKwkJcGFubmVyX3ZfY2xlYW51cCh0b3BfeSAtICh0b3BfeSA+IDApLCBwb3J0eCwgcG9ydHkpOworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSBLRVlfREw6CQkvKiBkZWNyZWFzZS1saW5lcyAqLworCSAgICBpZiAocG9ydHkgPD0gdG9wX3kpCisJCWJlZXAoKTsKKwkgICAgZWxzZSB7CisJCXBvcnR5LS07CisJCXBhbm5lcl9oX2NsZWFudXAocG9ydHksIHRvcF94IC0gKHRvcF94ID4gMCksIHBvcnR4KTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgS0VZX0xFRlQ6CQkvKiBwYW4gbGVmdHdhcmRzICovCisJICAgIGlmIChiYXNleCA+IDApCisJCWJhc2V4LS07CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX1JJR0hUOgkvKiBwYW4gcmlnaHR3YXJkcyAqLworCSAgICBpZiAoYmFzZXggKyBwb3J0eCAtIChweW1heCA+IHBvcnR5KSA8IHB4bWF4KQorCQliYXNleCsrOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIEtFWV9VUDoJCS8qIHBhbiB1cHdhcmRzICovCisJICAgIGlmIChiYXNleSA+IDApCisJCWJhc2V5LS07CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX0RPV046CQkvKiBwYW4gZG93bndhcmRzICovCisJICAgIGlmIChiYXNleSArIHBvcnR5IC0gKHB4bWF4ID4gcG9ydHgpIDwgcHltYXgpCisJCWJhc2V5Kys7CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKworCWNhc2UgJ0gnOgorCWNhc2UgS0VZX0hPTUU6CisJY2FzZSBLRVlfRklORDoKKwkgICAgYmFzZXkgPSAwOworCSAgICBicmVhazsKKworCWNhc2UgJ0UnOgorCWNhc2UgS0VZX0VORDoKKwljYXNlIEtFWV9TRUxFQ1Q6CisJICAgIGJhc2V5ID0gcHltYXggLSBwb3J0eTsKKwkgICAgaWYgKGJhc2V5IDwgMCkKKwkJYmFzZXkgPSAwOworCSAgICBicmVhazsKKworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisJTXZBZGRDaCh0b3BfeSAtIDEsIHRvcF94IC0gMSwgQUNTX1VMQ09STkVSKTsKKwlkb192X2xpbmUodG9wX3ksIHRvcF94IC0gMSwgQUNTX1ZMSU5FLCBwb3J0eSk7CisJZG9faF9saW5lKHRvcF95IC0gMSwgdG9wX3gsIEFDU19ITElORSwgcG9ydHgpOworCisJaWYgKHNjcm9sbGVycyAmJiAocHhtYXggPiBwb3J0eCAtIDEpKSB7CisJICAgIGludCBsZW5ndGggPSAocG9ydHggLSB0b3BfeCAtIDEpOworCSAgICBmbG9hdCByYXRpbyA9ICgoZmxvYXQpIGxlbmd0aCkgLyAoKGZsb2F0KSBweG1heCk7CisKKwkgICAgbG93ZW5kID0gKGludCkgKChmbG9hdCkgdG9wX3ggKyAoKGZsb2F0KSBiYXNleCAqIHJhdGlvKSk7CisJICAgIGhpZ2hlbmQgPSAoaW50KSAoKGZsb2F0KSB0b3BfeCArICgoZmxvYXQpIChiYXNleCArIGxlbmd0aCkgKiByYXRpbykpOworCisJICAgIGRvX2hfbGluZShwb3J0eSAtIDEsIHRvcF94LCBBQ1NfSExJTkUsIGxvd2VuZCk7CisJICAgIGlmIChoaWdoZW5kIDwgcG9ydHgpIHsKKwkJYXR0cm9uKEFfUkVWRVJTRSk7CisJCWRvX2hfbGluZShwb3J0eSAtIDEsIGxvd2VuZCwgJyAnLCBoaWdoZW5kICsgMSk7CisJCWF0dHJvZmYoQV9SRVZFUlNFKTsKKwkJZG9faF9saW5lKHBvcnR5IC0gMSwgaGlnaGVuZCArIDEsIEFDU19ITElORSwgcG9ydHgpOworCSAgICB9CisJfSBlbHNlCisJICAgIGRvX2hfbGluZShwb3J0eSAtIDEsIHRvcF94LCBBQ1NfSExJTkUsIHBvcnR4KTsKKworCWlmIChzY3JvbGxlcnMgJiYgKHB5bWF4ID4gcG9ydHkgLSAxKSkgeworCSAgICBpbnQgbGVuZ3RoID0gKHBvcnR5IC0gdG9wX3kgLSAxKTsKKwkgICAgZmxvYXQgcmF0aW8gPSAoKGZsb2F0KSBsZW5ndGgpIC8gKChmbG9hdCkgcHltYXgpOworCisJICAgIGxvd2VuZCA9IChpbnQpICgoZmxvYXQpIHRvcF95ICsgKChmbG9hdCkgYmFzZXkgKiByYXRpbykpOworCSAgICBoaWdoZW5kID0gKGludCkgKChmbG9hdCkgdG9wX3kgKyAoKGZsb2F0KSAoYmFzZXkgKyBsZW5ndGgpICogcmF0aW8pKTsKKworCSAgICBkb192X2xpbmUodG9wX3ksIHBvcnR4IC0gMSwgQUNTX1ZMSU5FLCBsb3dlbmQpOworCSAgICBpZiAoaGlnaGVuZCA8IHBvcnR5KSB7CisJCWF0dHJvbihBX1JFVkVSU0UpOworCQlkb192X2xpbmUobG93ZW5kLCBwb3J0eCAtIDEsICcgJywgaGlnaGVuZCArIDEpOworCQlhdHRyb2ZmKEFfUkVWRVJTRSk7CisJCWRvX3ZfbGluZShoaWdoZW5kICsgMSwgcG9ydHggLSAxLCBBQ1NfVkxJTkUsIHBvcnR5KTsKKwkgICAgfQorCX0gZWxzZQorCSAgICBkb192X2xpbmUodG9wX3ksIHBvcnR4IC0gMSwgQUNTX1ZMSU5FLCBwb3J0eSk7CisKKwlNdkFkZENoKHRvcF95IC0gMSwgcG9ydHggLSAxLCBBQ1NfVVJDT1JORVIpOworCU12QWRkQ2gocG9ydHkgLSAxLCB0b3BfeCAtIDEsIEFDU19MTENPUk5FUik7CisJTXZBZGRDaChwb3J0eSAtIDEsIHBvcnR4IC0gMSwgQUNTX0xSQ09STkVSKTsKKworCWlmICghcGVuZGluZ19wYW4pIHsKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorCSAgICBnZXR0aW1lb2ZkYXkoJmJlZm9yZSwgMCk7CisjZW5kaWYKKwkgICAgd25vdXRyZWZyZXNoKHN0ZHNjcik7CisKKwkgICAgcG5vdXRyZWZyZXNoKHBhZCwKKwkJCSBiYXNleSwgYmFzZXgsCisJCQkgdG9wX3ksIHRvcF94LAorCQkJIHBvcnR5IC0gKHB4bWF4ID4gcG9ydHgpIC0gMSwKKwkJCSBwb3J0eCAtIChweW1heCA+IHBvcnR5KSAtIDEpOworCisJICAgIGRvdXBkYXRlKCk7CisjaWYgSEFWRV9HRVRUSU1FT0ZEQVkKKyNkZWZpbmUgVElNRVZBTDJTKGRhdGEpICgoZG91YmxlKSBkYXRhLnR2X3NlYyArICgoZG91YmxlKSBkYXRhLnR2X3VzZWMgLyAxLjBlNikpCisJICAgIGlmICh0aW1pbmcpIHsKKwkJZG91YmxlIGVsYXBzZWQ7CisJCWdldHRpbWVvZmRheSgmYWZ0ZXIsIDApOworCQllbGFwc2VkID0gKFRJTUVWQUwyUyhhZnRlcikgLSBUSU1FVkFMMlMoYmVmb3JlKSk7CisJCW1vdmUoTElORVMgLSAxLCBDT0xTIC0gMTIpOworCQlwcmludHcoIlNlY3M6ICUyLjAzZiIsIGVsYXBzZWQpOworCQlyZWZyZXNoKCk7CisJICAgIH0KKyNlbmRpZgorCX0KKworICAgIH0gd2hpbGUKKwkoKGMgPSBwZ2V0YyhwYWQpKSAhPSBLRVlfRVhJVCk7CisKKyAgICBzY3JvbGxvayhzdGRzY3IsIFRSVUUpOwkvKiByZXNldCB0byBkcml2ZXIncyBkZWZhdWx0ICovCit9CisKK3N0YXRpYyBpbnQKK3BhZGdldGNoKFdJTkRPVyAqd2luKQoreworICAgIHN0YXRpYyBpbnQgY291bnQ7CisgICAgc3RhdGljIGludCBsYXN0OworICAgIGludCBjOworCisgICAgaWYgKChwZW5kaW5nX3BhbiA9IChjb3VudCA+IDApKSAhPSBGQUxTRSkgeworCWNvdW50LS07CisJcGVuZGluZ19wYW4gPSAoY291bnQgIT0gMCk7CisgICAgfSBlbHNlIHsKKwlmb3IgKDs7KSB7CisJICAgIHN3aXRjaCAoYyA9IHdHZXRjaGFyKHdpbikpIHsKKwkgICAgY2FzZSAnISc6CisJCVNoZWxsT3V0KEZBTFNFKTsKKwkJLyogRkFMTFRIUlUgKi8KKwkgICAgY2FzZSBDVFJMKCdyJyk6CisJCWVuZHdpbigpOworCQlyZWZyZXNoKCk7CisJCWMgPSBLRVlfUkVGUkVTSDsKKwkJYnJlYWs7CisJICAgIGNhc2UgQ1RSTCgnbCcpOgorCQljID0gS0VZX1JFRlJFU0g7CisJCWJyZWFrOworCSAgICBjYXNlICdVJzoKKwkJYyA9IEtFWV9VUDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ0QnOgorCQljID0gS0VZX0RPV047CisJCWJyZWFrOworCSAgICBjYXNlICdSJzoKKwkJYyA9IEtFWV9SSUdIVDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ0wnOgorCQljID0gS0VZX0xFRlQ7CisJCWJyZWFrOworCSAgICBjYXNlICcrJzoKKwkJYyA9IEtFWV9JTDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJy0nOgorCQljID0gS0VZX0RMOworCQlicmVhazsKKwkgICAgY2FzZSAnPic6CisJCWMgPSBLRVlfSUM7CisJCWJyZWFrOworCSAgICBjYXNlICc8JzoKKwkJYyA9IEtFWV9EQzsKKwkJYnJlYWs7CisJICAgIGNhc2UgRVJSOgkJLyogRkFMTFRIUlUgKi8KKwkgICAgY2FzZSBjYXNlX1FVSVQ6CisJCWNvdW50ID0gMDsKKwkJYyA9IEtFWV9FWElUOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisJCSAgICBjb3VudCA9IGNvdW50ICogMTAgKyAoYyAtICcwJyk7CisJCSAgICBjb250aW51ZTsKKwkJfQorCQlicmVhazsKKwkgICAgfQorCSAgICBsYXN0ID0gYzsKKwkgICAgYnJlYWs7CisJfQorCWlmIChjb3VudCA+IDApCisJICAgIGNvdW50LS07CisgICAgfQorICAgIHJldHVybiAobGFzdCk7Cit9CisKKyNkZWZpbmUgUEFEX0hJR0ggMjAwCisjZGVmaW5lIFBBRF9XSURFIDIwMAorCitzdGF0aWMgdm9pZAorZGVtb19wYWQoYm9vbCBjb2xvcmVkKQorLyogRGVtb25zdHJhdGUgcGFkcy4gKi8KK3sKKyAgICBXSU5ET1cgKnBhbnBhZCA9IG5ld3BhZChQQURfSElHSCwgUEFEX1dJREUpOworCisgICAgaWYgKHBhbnBhZCA9PSAwKSB7CisJQ2Fubm90KCJjYW5ub3QgY3JlYXRlIHJlcXVlc3RlZCBwYWQiKTsKKwlyZXR1cm47CisgICAgfQorCisjaWZkZWYgQV9DT0xPUgorICAgIGlmIChjb2xvcmVkICYmIHVzZV9jb2xvcnMpIHsKKwlpbml0X3BhaXIoMSwgQ09MT1JfQkxBQ0ssIENPTE9SX0dSRUVOKTsKKwlpbml0X3BhaXIoMiwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxVRSk7CisJd2JrZ2QocGFucGFkLCAoY2h0eXBlKSAoQ09MT1JfUEFJUigyKSB8ICcgJykpOworICAgIH0KKyNlbmRpZgorICAgIGZpbGxfcGFkKHBhbnBhZCwgRkFMU0UsIGNvbG9yZWQpOworCisgICAgcGFubmVyX2xlZ2VuZChMSU5FUyAtIDQpOworICAgIHBhbm5lcl9sZWdlbmQoTElORVMgLSAzKTsKKyAgICBwYW5uZXJfbGVnZW5kKExJTkVTIC0gMik7CisgICAgcGFubmVyX2xlZ2VuZChMSU5FUyAtIDEpOworCisgICAga2V5cGFkKHBhbnBhZCwgVFJVRSk7CisKKyAgICAvKiBNYWtlIHRoZSBwYWQgKGluaXRpYWxseSkgbmFycm93IGVub3VnaCB0aGF0IGEgdHJhY2UgZmlsZSB3b24ndCB3cmFwLgorICAgICAqIFdlJ2xsIHN0aWxsIGJlIGFibGUgdG8gd2lkZW4gaXQgZHVyaW5nIGEgdGVzdCwgc2luY2UgdGhhdCdzIHJlcXVpcmVkCisgICAgICogZm9yIHRlc3RpbmcgYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwYW5uZXIocGFucGFkLCAyLCAyLCBMSU5FUyAtIDUsIENPTFMgLSAxNSwgcGFkZ2V0Y2gsIGNvbG9yZWQpOworCisgICAgZGVsd2luKHBhbnBhZCk7CisgICAgZW5kd2luKCk7CisgICAgZXJhc2UoKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBUZXN0cyBmcm9tIEpvaG4gQnVybmVsbCdzIFBEQ3Vyc2VzIHRlc3RlcgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZAorQ29udGludWUoV0lORE9XICp3aW4pCit7CisgICAgbm9lY2hvKCk7CisgICAgd21vdmUod2luLCAxMCwgMSk7CisgICAgTXZXQWRkU3RyKHdpbiwgMTAsIDEsICIgUHJlc3MgYW55IGtleSB0byBjb250aW51ZSIpOworICAgIHdyZWZyZXNoKHdpbik7CisgICAgd0dldGNoYXIod2luKTsKK30KKworc3RhdGljIHZvaWQKK2ZsdXNoaW5wX3Rlc3QoV0lORE9XICp3aW4pCisvKiBJbnB1dCB0ZXN0LCBhZGFwdGVkIGZyb20gSm9obiBCdXJuZWxsJ3MgUERDdXJzZXMgdGVzdGVyICovCit7CisgICAgaW50IHcsIGgsIGJ4LCBieSwgc3csIHNoLCBpOworCisgICAgV0lORE9XICpzdWJXaW47CisgICAgd2NsZWFyKHdpbik7CisKKyAgICBnZXRtYXh5eCh3aW4sIGgsIHcpOworICAgIGdldGJlZ3l4KHdpbiwgYnksIGJ4KTsKKyAgICBzdyA9IHcgLyAzOworICAgIHNoID0gaCAvIDM7CisgICAgaWYgKChzdWJXaW4gPSBzdWJ3aW4od2luLCBzaCwgc3csIGJ5ICsgaCAtIHNoIC0gMiwgYnggKyB3IC0gc3cgLSAyKSkgPT0gMCkKKwlyZXR1cm47CisKKyNpZmRlZiBBX0NPTE9SCisgICAgaWYgKHVzZV9jb2xvcnMpIHsKKwlpbml0X3BhaXIoMiwgQ09MT1JfQ1lBTiwgQ09MT1JfQkxVRSk7CisJd2JrZ2Qoc3ViV2luLCAoY2h0eXBlKSAoQ09MT1JfUEFJUigyKSB8ICcgJykpOworICAgIH0KKyNlbmRpZgorICAgICh2b2lkKSB3YXR0cnNldChzdWJXaW4sIEFfQk9MRCk7CisgICAgYm94KHN1YldpbiwgQUNTX1ZMSU5FLCBBQ1NfSExJTkUpOworICAgIE12V0FkZFN0cihzdWJXaW4sIDIsIDEsICJUaGlzIGlzIGEgc3Vid2luZG93Iik7CisgICAgd3JlZnJlc2god2luKTsKKworICAgIC8qCisgICAgICogVGhpcyB1c2VkIHRvIHNldCAnbm9jYnJlYWsoKScuICBIb3dldmVyLCBBbGV4YW5kZXIgTHVreWFub3Ygc2F5cyB0aGF0CisgICAgICogaXQgb25seSBoYXBwZW5lZCB0byAid29yayIgb24gU1ZyNCBiZWNhdXNlIHRoYXQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QKKyAgICAgKiBlbXVsYXRlIG5vY2JyZWFrK25vZWNobyBtb2RlLCB3aGVyZWFzIG5jdXJzZXMgZG9lcy4gIFRvIGdldCB0aGUgZGVzaXJlZAorICAgICAqIHRlc3QgYmVoYXZpb3IsIHdlJ3JlIHVzaW5nICdjYnJlYWsoKScsIHdoaWNoIHdpbGwgYWxsb3cgYSBzaW5nbGUKKyAgICAgKiBjaGFyYWN0ZXIgdG8gcmV0dXJuIHdpdGhvdXQgbmVlZGluZyBhIG5ld2xpbmUuIC0gVC5EaWNrZXkgMTk5Ny8xMC8xMS4KKyAgICAgKi8KKyAgICBjYnJlYWsoKTsKKyAgICBNdldBZGRTdHIod2luLCAwLCAxLCAiVGhpcyBpcyBhIHRlc3Qgb2YgdGhlIGZsdXNoaW5wKCkgY2FsbC4iKTsKKworICAgIE12V0FkZFN0cih3aW4sIDIsIDEsICJUeXBlIHJhbmRvbSBrZXlzIGZvciA1IHNlY29uZHMuIik7CisgICAgTXZXQWRkU3RyKHdpbiwgMywgMSwKKwkgICAgICAiVGhlc2Ugc2hvdWxkIGJlIGRpc2NhcmRlZCAobm90IGVjaG9lZCkgYWZ0ZXIgdGhlIHN1YndpbmRvdyBnb2VzIGF3YXkuIik7CisgICAgd3JlZnJlc2god2luKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKKwlNdldQcmludHcoc3ViV2luLCAxLCAxLCAiVGltZSA9ICVkIiwgaSk7CisJd3JlZnJlc2goc3ViV2luKTsKKwluYXBtcygxMDAwKTsKKwlmbHVzaGlucCgpOworICAgIH0KKworICAgIGRlbHdpbihzdWJXaW4pOworICAgIHdlcmFzZSh3aW4pOworICAgIGZsYXNoKCk7CisgICAgd3JlZnJlc2god2luKTsKKyAgICBuYXBtcygxMDAwKTsKKworICAgIE12V0FkZFN0cih3aW4sIDIsIDEsCisJICAgICAgIklmIHlvdSB3ZXJlIHN0aWxsIHR5cGluZyB3aGVuIHRoZSB3aW5kb3cgdGltZXIgZXhwaXJlZCwiKTsKKyAgICBNdldBZGRTdHIod2luLCAzLCAxLAorCSAgICAgICJvciBlbHNlIHlvdSB0eXBlZCBub3RoaW5nIGF0IGFsbCB3aGlsZSBpdCB3YXMgcnVubmluZywiKTsKKyAgICBNdldBZGRTdHIod2luLCA0LCAxLAorCSAgICAgICJ0ZXN0IHdhcyBpbnZhbGlkLiAgWW91J2xsIHNlZSBnYXJiYWdlIG9yIG5vdGhpbmcgYXQgYWxsLiAiKTsKKyAgICBNdldBZGRTdHIod2luLCA2LCAxLCAiUHJlc3MgYSBrZXkiKTsKKyAgICB3bW92ZSh3aW4sIDksIDEwKTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIGVjaG8oKTsKKyAgICB3R2V0Y2hhcih3aW4pOworICAgIGZsdXNoaW5wKCk7CisgICAgTXZXQWRkU3RyKHdpbiwgMTIsIDAsCisJICAgICAgIklmIHlvdSBzZWUgYW55IGtleSBvdGhlciB0aGFuIHdoYXQgeW91IHR5cGVkLCBmbHVzaGlucCgpIGlzIGJyb2tlbi4iKTsKKyAgICBDb250aW51ZSh3aW4pOworCisgICAgd21vdmUod2luLCA5LCAxMCk7CisgICAgd2RlbGNoKHdpbik7CisgICAgd3JlZnJlc2god2luKTsKKyAgICB3bW92ZSh3aW4sIDEyLCAwKTsKKyAgICBjbHJ0b2VvbCgpOworICAgIHdhZGRzdHIod2luLAorCSAgICAiV2hhdCB5b3UgdHlwZWQgc2hvdWxkIG5vdyBoYXZlIGJlZW4gZGVsZXRlZDsgaWYgbm90LCB3ZGVsY2goKSBmYWlsZWQuIik7CisgICAgQ29udGludWUod2luKTsKKworICAgIGNicmVhaygpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIE1lbnUgdGVzdAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgVVNFX0xJQk1FTlUKKworI2RlZmluZSBNRU5VX1kJOAorI2RlZmluZSBNRU5VX1gJOAorCitzdGF0aWMgaW50CittZW51X3ZpcnR1YWxpemUoaW50IGMpCit7CisgICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09IEtFWV9FWElUKQorCXJldHVybiAoTUFYX0NPTU1BTkQgKyAxKTsKKyAgICBlbHNlIGlmIChjID09ICd1JykKKwlyZXR1cm4gKFJFUV9TQ1JfVUxJTkUpOworICAgIGVsc2UgaWYgKGMgPT0gJ2QnKQorCXJldHVybiAoUkVRX1NDUl9ETElORSk7CisgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSBLRVlfTlBBR0UpCisJcmV0dXJuIChSRVFfU0NSX1VQQUdFKTsKKyAgICBlbHNlIGlmIChjID09ICdmJyB8fCBjID09IEtFWV9QUEFHRSkKKwlyZXR1cm4gKFJFUV9TQ1JfRFBBR0UpOworICAgIGVsc2UgaWYgKGMgPT0gJ24nIHx8IGMgPT0gS0VZX0RPV04pCisJcmV0dXJuIChSRVFfTkVYVF9JVEVNKTsKKyAgICBlbHNlIGlmIChjID09ICdwJyB8fCBjID09IEtFWV9VUCkKKwlyZXR1cm4gKFJFUV9QUkVWX0lURU0pOworICAgIGVsc2UgaWYgKGMgPT0gJyAnKQorCXJldHVybiAoUkVRX1RPR0dMRV9JVEVNKTsKKyAgICBlbHNlIHsKKwlpZiAoYyAhPSBLRVlfTU9VU0UpCisJICAgIGJlZXAoKTsKKwlyZXR1cm4gKGMpOworICAgIH0KK30KKworc3RhdGljIENPTlNUX01FTlVTIGNoYXIgKmFuaW1hbHNbXSA9Cit7CisgICAgIkxpb25zIiwKKyAgICAiVGlnZXJzIiwKKyAgICAiQmVhcnMiLAorICAgICIoT2ggbXkhKSIsCisgICAgIk5ld3RzIiwKKyAgICAiUGxhdHlwaSIsCisgICAgIkxlbXVycyIsCisgICAgIihPaCByZWFsbHk/ISkiLAorICAgICJMZW9wYXJkcyIsCisgICAgIlBhbnRoZXJzIiwKKyAgICAiUHVtYXMiLAorICAgICJMaW9ucywgVGlnZXJzLCBCZWFycywgKE9oIG15ISksIE5ld3RzLCBQbGF0eXBpLCBMZW11cnMiLAorICAgICJMaW9ucywgVGlnZXJzLCBCZWFycywgKE9oIG15ISksIE5ld3RzLCBQbGF0eXBpLCBMZW11cnMsIExpb25zLCBUaWdlcnMsIEJlYXJzLCAoT2ggbXkhKSwgTmV3dHMsIFBsYXR5cGksIExlbXVycyIsCisgICAgKGNoYXIgKikgMAorfTsKKworc3RhdGljIHZvaWQKK21lbnVfdGVzdCh2b2lkKQoreworICAgIE1FTlUgKm07CisgICAgSVRFTSAqaXRlbXNbU0laRU9GKGFuaW1hbHMpXTsKKyAgICBJVEVNICoqaXAgPSBpdGVtczsKKyAgICBDT05TVF9NRU5VUyBjaGFyICoqYXA7CisgICAgaW50IG1yb3dzLCBtY29scywgYzsKKyAgICBXSU5ET1cgKm1lbnV3aW47CisKKyNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KKyAgICBtb3VzZW1hc2soQUxMX01PVVNFX0VWRU5UUywgKG1tYXNrX3QgKikgMCk7CisjZW5kaWYKKyAgICBNdkFkZFN0cigwLCAwLCAiVGhpcyBpcyB0aGUgbWVudSB0ZXN0OiIpOworICAgIE12QWRkU3RyKDIsIDAsICIgIFVzZSB1cCBhbmQgZG93biBhcnJvdyB0byBtb3ZlIHRoZSBzZWxlY3QgYmFyLiIpOworICAgIE12QWRkU3RyKDMsIDAsICIgICduJyBhbmQgJ3AnIGFjdCBsaWtlIGFycm93cy4iKTsKKyAgICBNdkFkZFN0cig0LCAwLAorCSAgICAgIiAgJ2InIGFuZCAnZicgc2Nyb2xsIHVwL2Rvd24gKHBhZ2UpLCAndScgYW5kICdkJyAobGluZSkuIik7CisgICAgTXZBZGRTdHIoNSwgMCwgIiAgUHJlc3MgcmV0dXJuIHRvIGV4aXQuIik7CisgICAgcmVmcmVzaCgpOworCisgICAgZm9yIChhcCA9IGFuaW1hbHM7ICphcDsgYXArKykgeworCWlmICgoKmlwID0gbmV3X2l0ZW0oKmFwLCAiIikpICE9IDApCisJICAgICsraXA7CisgICAgfQorICAgICppcCA9IChJVEVNICopIDA7CisKKyAgICBtID0gbmV3X21lbnUoaXRlbXMpOworCisgICAgc2V0X21lbnVfZm9ybWF0KG0sIChTSVpFT0YoYW5pbWFscykgKyAxKSAvIDIsIDEpOworICAgIHNjYWxlX21lbnUobSwgJm1yb3dzLCAmbWNvbHMpOworCisgICAgbWVudXdpbiA9IG5ld3dpbihtcm93cyArIDIsIG1jb2xzICsgMiwgTUVOVV9ZLCBNRU5VX1gpOworICAgIHNldF9tZW51X3dpbihtLCBtZW51d2luKTsKKyAgICBrZXlwYWQobWVudXdpbiwgVFJVRSk7CisgICAgYm94KG1lbnV3aW4sIDAsIDApOworCisgICAgc2V0X21lbnVfc3ViKG0sIGRlcndpbihtZW51d2luLCBtcm93cywgbWNvbHMsIDEsIDEpKTsKKworICAgIHBvc3RfbWVudShtKTsKKworICAgIHdoaWxlICgoYyA9IG1lbnVfZHJpdmVyKG0sIG1lbnVfdmlydHVhbGl6ZSh3R2V0Y2hhcihtZW51d2luKSkpKSAhPSBFX1VOS05PV05fQ09NTUFORCkgeworCWlmIChjID09IEVfTk9UX1BPU1RFRCkKKwkgICAgYnJlYWs7CisJaWYgKGMgPT0gRV9SRVFVRVNUX0RFTklFRCkKKwkgICAgYmVlcCgpOworCWNvbnRpbnVlOworICAgIH0KKworICAgIE12UHJpbnR3KExJTkVTIC0gMiwgMCwKKwkgICAgICJZb3UgY2hvc2U6ICVzXG4iLCBpdGVtX25hbWUoY3VycmVudF9pdGVtKG0pKSk7CisgICAgKHZvaWQpIGFkZHN0cigiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpOworICAgIHdHZXRjaGFyKHN0ZHNjcik7CisKKyAgICB1bnBvc3RfbWVudShtKTsKKyAgICBkZWx3aW4obWVudXdpbik7CisKKyAgICBmcmVlX21lbnUobSk7CisgICAgZm9yIChpcCA9IGl0ZW1zOyAqaXA7IGlwKyspCisJZnJlZV9pdGVtKCppcCk7CisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgbW91c2VtYXNrKDAsIChtbWFza190ICopIDApOworI2VuZGlmCit9CisKKyNpZmRlZiBUUkFDRQorI2RlZmluZSBUX1RCTChuYW1lKSB7ICNuYW1lLCBuYW1lIH0KK3N0YXRpYyBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgdW5zaWduZWQgbWFzazsKK30gdF90YmxbXSA9IHsKKworICAgIFRfVEJMKFRSQUNFX0RJU0FCTEUpLAorCVRfVEJMKFRSQUNFX1RJTUVTKSwKKwlUX1RCTChUUkFDRV9UUFVUUyksCisJVF9UQkwoVFJBQ0VfVVBEQVRFKSwKKwlUX1RCTChUUkFDRV9NT1ZFKSwKKwlUX1RCTChUUkFDRV9DSEFSUFVUKSwKKwlUX1RCTChUUkFDRV9PUkRJTkFSWSksCisJVF9UQkwoVFJBQ0VfQ0FMTFMpLAorCVRfVEJMKFRSQUNFX1ZJUlRQVVQpLAorCVRfVEJMKFRSQUNFX0lFVkVOVCksCisJVF9UQkwoVFJBQ0VfQklUUyksCisJVF9UQkwoVFJBQ0VfSUNBTExTKSwKKwlUX1RCTChUUkFDRV9DQ0FMTFMpLAorCVRfVEJMKFRSQUNFX0RBVEFCQVNFKSwKKwlUX1RCTChUUkFDRV9BVFRSUyksCisJVF9UQkwoVFJBQ0VfTUFYSU1VTSksCisgICAgeworCShjaGFyICopIDAsIDAKKyAgICB9Cit9OworCitzdGF0aWMgY2hhciAqCit0cmFjZXRyYWNlKHVuc2lnbmVkIHRsZXZlbCkKK3sKKyAgICBzdGF0aWMgY2hhciAqYnVmOworICAgIGludCBuOworCisgICAgaWYgKGJ1ZiA9PSAwKSB7CisJc2l6ZV90IG5lZWQgPSAxMjsKKwlmb3IgKG4gPSAwOyB0X3RibFtuXS5uYW1lICE9IDA7IG4rKykKKwkgICAgbmVlZCArPSBzdHJsZW4odF90Ymxbbl0ubmFtZSkgKyAyOworCWJ1ZiA9IHR5cGVNYWxsb2MoY2hhciwgbmVlZCk7CisJaWYgKCFidWYpCisJICAgIGZhaWxlZCgidHJhY2V0cmFjZSIpOworICAgIH0KKyAgICBzcHJpbnRmKGJ1ZiwgIjB4JTAyeCA9IHsiLCB0bGV2ZWwpOworICAgIGlmICh0bGV2ZWwgPT0gMCkgeworCXNwcmludGYoYnVmICsgc3RybGVuKGJ1ZiksICIlcywgIiwgdF90YmxbMF0ubmFtZSk7CisgICAgfSBlbHNlIHsKKwlmb3IgKG4gPSAxOyB0X3RibFtuXS5uYW1lICE9IDA7IG4rKykKKwkgICAgaWYgKCh0bGV2ZWwgJiB0X3RibFtuXS5tYXNrKSA9PSB0X3RibFtuXS5tYXNrKSB7CisJCXN0cmNhdChidWYsIHRfdGJsW25dLm5hbWUpOworCQlzdHJjYXQoYnVmLCAiLCAiKTsKKwkgICAgfQorICAgIH0KKyAgICBpZiAoYnVmW3N0cmxlbihidWYpIC0gMl0gPT0gJywnKQorCWJ1ZltzdHJsZW4oYnVmKSAtIDJdID0gJ1wwJzsKKyAgICByZXR1cm4gKHN0cmNhdChidWYsICJ9IikpOworfQorCisvKiBmYWtlIGEgZHluYW1pY2FsbHkgcmVjb25maWd1cmFibGUgbWVudSB1c2luZyB0aGUgMHRoIGVudHJ5IHRvIGRlc2VsZWN0CisgKiB0aGUgb3RoZXJzCisgKi8KK3N0YXRpYyBpbnQKK3J1bl90cmFjZV9tZW51KE1FTlUgKiBtKQoreworICAgIElURU0gKippdGVtczsKKyAgICBJVEVNICppLCAqKnA7CisKKyAgICBmb3IgKDs7KSB7CisJYm9vbCBjaGFuZ2VkID0gRkFMU0U7CisJc3dpdGNoIChtZW51X2RyaXZlcihtLCBtZW51X3ZpcnR1YWxpemUod0dldGNoYXIobWVudV93aW4obSkpKSkpIHsKKwljYXNlIEVfVU5LTk9XTl9DT01NQU5EOgorCSAgICByZXR1cm4gRkFMU0U7CisJZGVmYXVsdDoKKwkgICAgaXRlbXMgPSBtZW51X2l0ZW1zKG0pOworCSAgICBpID0gY3VycmVudF9pdGVtKG0pOworCSAgICBpZiAoaSA9PSBpdGVtc1swXSkgeworCQlpZiAoaXRlbV92YWx1ZShpKSkgeworCQkgICAgZm9yIChwID0gaXRlbXMgKyAxOyAqcCAhPSAwOyBwKyspCisJCQlpZiAoaXRlbV92YWx1ZSgqcCkpIHsKKwkJCSAgICBzZXRfaXRlbV92YWx1ZSgqcCwgRkFMU0UpOworCQkJICAgIGNoYW5nZWQgPSBUUlVFOworCQkJfQorCQl9CisJICAgIH0gZWxzZSB7CisJCWZvciAocCA9IGl0ZW1zICsgMTsgKnAgIT0gMDsgcCsrKQorCQkgICAgaWYgKGl0ZW1fdmFsdWUoKnApKSB7CisJCQlzZXRfaXRlbV92YWx1ZShpdGVtc1swXSwgRkFMU0UpOworCQkJY2hhbmdlZCA9IFRSVUU7CisJCQlicmVhazsKKwkJICAgIH0KKwkgICAgfQorCSAgICBpZiAoIWNoYW5nZWQpCisJCXJldHVybiBUUlVFOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0cmFjZV9zZXQodm9pZCkKKy8qIGludGVyYWN0aXZlbHkgc2V0IHRoZSB0cmFjZSBsZXZlbCAqLworeworICAgIE1FTlUgKm07CisgICAgSVRFTSAqaXRlbXNbU0laRU9GKHRfdGJsKV07CisgICAgSVRFTSAqKmlwID0gaXRlbXM7CisgICAgaW50IG1yb3dzLCBtY29sczsKKyAgICB1bnNpZ25lZCBuZXd0cmFjZTsKKyAgICBpbnQgbjsKKyAgICBXSU5ET1cgKm1lbnV3aW47CisKKyAgICBNdkFkZFN0cigwLCAwLCAiSW50ZXJhY3RpdmVseSBzZXQgdHJhY2UgbGV2ZWw6Iik7CisgICAgTXZBZGRTdHIoMiwgMCwgIiAgUHJlc3Mgc3BhY2UgYmFyIHRvIHRvZ2dsZSBhIHNlbGVjdGlvbi4iKTsKKyAgICBNdkFkZFN0cigzLCAwLCAiICBVc2UgdXAgYW5kIGRvd24gYXJyb3cgdG8gbW92ZSB0aGUgc2VsZWN0IGJhci4iKTsKKyAgICBNdkFkZFN0cig0LCAwLCAiICBQcmVzcyByZXR1cm4gdG8gc2V0IHRoZSB0cmFjZSBsZXZlbC4iKTsKKyAgICBNdlByaW50dyg2LCAwLCAiKEN1cnJlbnQgdHJhY2UgbGV2ZWwgaXMgJXMpIiwgdHJhY2V0cmFjZShfbmNfdHJhY2luZykpOworCisgICAgcmVmcmVzaCgpOworCisgICAgZm9yIChuID0gMDsgdF90Ymxbbl0ubmFtZSAhPSAwOyBuKyspIHsKKwlpZiAoKCppcCA9IG5ld19pdGVtKHRfdGJsW25dLm5hbWUsICIiKSkgIT0gMCkgeworCSAgICArK2lwOworCX0KKyAgICB9CisgICAgKmlwID0gKElURU0gKikgMDsKKworICAgIG0gPSBuZXdfbWVudShpdGVtcyk7CisKKyAgICBzZXRfbWVudV9mb3JtYXQobSwgMCwgMik7CisgICAgc2NhbGVfbWVudShtLCAmbXJvd3MsICZtY29scyk7CisKKyAgICBtZW51X29wdHNfb2ZmKG0sIE9fT05FVkFMVUUpOworICAgIG1lbnV3aW4gPSBuZXd3aW4obXJvd3MgKyAyLCBtY29scyArIDIsIE1FTlVfWSwgTUVOVV9YKTsKKyAgICBzZXRfbWVudV93aW4obSwgbWVudXdpbik7CisgICAga2V5cGFkKG1lbnV3aW4sIFRSVUUpOworICAgIGJveChtZW51d2luLCAwLCAwKTsKKworICAgIHNldF9tZW51X3N1YihtLCBkZXJ3aW4obWVudXdpbiwgbXJvd3MsIG1jb2xzLCAxLCAxKSk7CisKKyAgICBwb3N0X21lbnUobSk7CisKKyAgICBmb3IgKGlwID0gbWVudV9pdGVtcyhtKTsgKmlwOyBpcCsrKSB7CisJdW5zaWduZWQgbWFzayA9IHRfdGJsW2l0ZW1faW5kZXgoKmlwKV0ubWFzazsKKwlpZiAobWFzayA9PSAwKQorCSAgICBzZXRfaXRlbV92YWx1ZSgqaXAsIF9uY190cmFjaW5nID09IDApOworCWVsc2UgaWYgKChtYXNrICYgX25jX3RyYWNpbmcpID09IG1hc2spCisJICAgIHNldF9pdGVtX3ZhbHVlKCppcCwgVFJVRSk7CisgICAgfQorCisgICAgd2hpbGUgKHJ1bl90cmFjZV9tZW51KG0pKQorCWNvbnRpbnVlOworCisgICAgbmV3dHJhY2UgPSAwOworICAgIGZvciAoaXAgPSBtZW51X2l0ZW1zKG0pOyAqaXA7IGlwKyspCisJaWYgKGl0ZW1fdmFsdWUoKmlwKSkKKwkgICAgbmV3dHJhY2UgfD0gdF90YmxbaXRlbV9pbmRleCgqaXApXS5tYXNrOworICAgIHRyYWNlKG5ld3RyYWNlKTsKKyAgICBUcmFjZSgoInRyYWNlIGxldmVsIGludGVyYWN0aXZlbHkgc2V0IHRvICVzIiwgdHJhY2V0cmFjZShfbmNfdHJhY2luZykpKTsKKworICAgIE12UHJpbnR3KExJTkVTIC0gMiwgMCwKKwkgICAgICJUcmFjZSBsZXZlbCBpcyAlc1xuIiwgdHJhY2V0cmFjZShfbmNfdHJhY2luZykpOworICAgICh2b2lkKSBhZGRzdHIoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKTsKKyAgICB3R2V0Y2hhcihzdGRzY3IpOworCisgICAgdW5wb3N0X21lbnUobSk7CisgICAgZGVsd2luKG1lbnV3aW4pOworCisgICAgZnJlZV9tZW51KG0pOworICAgIGZvciAoaXAgPSBpdGVtczsgKmlwOyBpcCsrKQorCWZyZWVfaXRlbSgqaXApOworfQorI2VuZGlmIC8qIFRSQUNFICovCisjZW5kaWYgLyogVVNFX0xJQk1FTlUgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGb3JtcyB0ZXN0CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWYgVVNFX0xJQkZPUk0KK3N0YXRpYyBGSUVMRCAqCittYWtlX2xhYmVsKGludCBmcm93LCBpbnQgZmNvbCwgTkNVUlNFU19DT05TVCBjaGFyICpsYWJlbCkKK3sKKyAgICBGSUVMRCAqZiA9IG5ld19maWVsZCgxLCAoaW50KSBzdHJsZW4obGFiZWwpLCBmcm93LCBmY29sLCAwLCAwKTsKKworICAgIGlmIChmKSB7CisJc2V0X2ZpZWxkX2J1ZmZlcihmLCAwLCBsYWJlbCk7CisJc2V0X2ZpZWxkX29wdHMoZiwgKGludCkgKCh1bnNpZ25lZCkgZmllbGRfb3B0cyhmKSAmIH5PX0FDVElWRSkpOworICAgIH0KKyAgICByZXR1cm4gKGYpOworfQorCitzdGF0aWMgRklFTEQgKgorbWFrZV9maWVsZChpbnQgZnJvdywgaW50IGZjb2wsIGludCByb3dzLCBpbnQgY29scywgYm9vbCBzZWN1cmUpCit7CisgICAgRklFTEQgKmYgPSBuZXdfZmllbGQocm93cywgY29scywgZnJvdywgZmNvbCwgMCwgc2VjdXJlID8gMSA6IDApOworCisgICAgaWYgKGYpIHsKKwlzZXRfZmllbGRfYmFjayhmLCBBX1VOREVSTElORSk7CisJc2V0X2ZpZWxkX3VzZXJwdHIoZiwgKHZvaWQgKikgMCk7CisgICAgfQorICAgIHJldHVybiAoZik7Cit9CisKK3N0YXRpYyB2b2lkCitkaXNwbGF5X2Zvcm0oRk9STSAqIGYpCit7CisgICAgV0lORE9XICp3OworICAgIGludCByb3dzLCBjb2xzOworCisgICAgc2NhbGVfZm9ybShmLCAmcm93cywgJmNvbHMpOworCisgICAgaWYgKCh3ID0gbmV3d2luKHJvd3MgKyAyLCBjb2xzICsgNCwgMCwgMCkpICE9IChXSU5ET1cgKikgMCkgeworCXNldF9mb3JtX3dpbihmLCB3KTsKKwlzZXRfZm9ybV9zdWIoZiwgZGVyd2luKHcsIHJvd3MsIGNvbHMsIDEsIDIpKTsKKwlib3godywgMCwgMCk7CisJa2V5cGFkKHcsIFRSVUUpOworCWlmIChwb3N0X2Zvcm0oZikgIT0gRV9PSykKKwkgICAgd3JlZnJlc2godyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZXJhc2VfZm9ybShGT1JNICogZikKK3sKKyAgICBXSU5ET1cgKncgPSBmb3JtX3dpbihmKTsKKyAgICBXSU5ET1cgKnMgPSBmb3JtX3N1YihmKTsKKworICAgIHVucG9zdF9mb3JtKGYpOworICAgIHdlcmFzZSh3KTsKKyAgICB3cmVmcmVzaCh3KTsKKyAgICBkZWx3aW4ocyk7CisgICAgZGVsd2luKHcpOworfQorCitzdGF0aWMgaW50CitlZGl0X3NlY3VyZShGSUVMRCAqIG1lLCBpbnQgYykKK3sKKyAgICBpbnQgcm93cywgY29scywgZnJvdywgZmNvbCwgbnJvdywgbmJ1ZjsKKworICAgIGlmIChmaWVsZF9pbmZvKG1lLCAmcm93cywgJmNvbHMsICZmcm93LCAmZmNvbCwgJm5yb3csICZuYnVmKSA9PSBFX09LCisJJiYgbmJ1ZiA+IDApIHsKKwljaGFyICpzb3VyY2UgPSBmaWVsZF9idWZmZXIobWUsIDEpOworCXNpemVfdCBoYXZlID0gKHNvdXJjZSA/IHN0cmxlbihzb3VyY2UpIDogMCkgKyAxOworCXNpemVfdCBuZWVkID0gODAgKyBoYXZlOworCWNoYXIgKnRlbXAgPSBtYWxsb2MobmVlZCk7CisJc2l6ZV90IGxlbjsKKworCWlmICh0ZW1wICE9IDApIHsKKwkgICAgc3RybmNweSh0ZW1wLCBzb3VyY2UgPyBzb3VyY2UgOiAiIiwgaGF2ZSArIDEpOworCSAgICBsZW4gPSAoc2l6ZV90KSAoY2hhciAqKSBmaWVsZF91c2VycHRyKG1lKTsKKwkgICAgaWYgKGMgPD0gS0VZX01BWCkgeworCQlpZiAoaXNncmFwaChjKSAmJiAobGVuICsgMSkgPCBzaXplb2YodGVtcCkpIHsKKwkJICAgIHRlbXBbbGVuKytdID0gKGNoYXIpIGM7CisJCSAgICB0ZW1wW2xlbl0gPSAwOworCQkgICAgc2V0X2ZpZWxkX2J1ZmZlcihtZSwgMSwgdGVtcCk7CisJCSAgICBjID0gJyonOworCQl9IGVsc2UgeworCQkgICAgYyA9IDA7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgUkVRX0JFR19GSUVMRDoKKwkJY2FzZSBSRVFfQ0xSX0VPRjoKKwkJY2FzZSBSRVFfQ0xSX0VPTDoKKwkJY2FzZSBSRVFfREVMX0xJTkU6CisJCWNhc2UgUkVRX0RFTF9XT1JEOgorCQljYXNlIFJFUV9ET1dOX0NIQVI6CisJCWNhc2UgUkVRX0VORF9GSUVMRDoKKwkJY2FzZSBSRVFfSU5TX0NIQVI6CisJCWNhc2UgUkVRX0lOU19MSU5FOgorCQljYXNlIFJFUV9MRUZUX0NIQVI6CisJCWNhc2UgUkVRX05FV19MSU5FOgorCQljYXNlIFJFUV9ORVhUX1dPUkQ6CisJCWNhc2UgUkVRX1BSRVZfV09SRDoKKwkJY2FzZSBSRVFfUklHSFRfQ0hBUjoKKwkJY2FzZSBSRVFfVVBfQ0hBUjoKKwkJICAgIGMgPSAwOwkvKiB3ZSBkb24ndCB3YW50IHRvIGRvIGlubGluZSBlZGl0aW5nICovCisJCSAgICBicmVhazsKKwkJY2FzZSBSRVFfQ0xSX0ZJRUxEOgorCQkgICAgaWYgKGxlbikgeworCQkJdGVtcFswXSA9IDA7CisJCQlzZXRfZmllbGRfYnVmZmVyKG1lLCAxLCB0ZW1wKTsKKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIFJFUV9ERUxfQ0hBUjoKKwkJY2FzZSBSRVFfREVMX1BSRVY6CisJCSAgICBpZiAobGVuKSB7CisJCQl0ZW1wWy0tbGVuXSA9IDA7CisJCQlzZXRfZmllbGRfYnVmZmVyKG1lLCAxLCB0ZW1wKTsKKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgc2V0X2ZpZWxkX3VzZXJwdHIobWUsICh2b2lkICopIGxlbik7CisJICAgIGZyZWUodGVtcCk7CisJfQorICAgIH0KKyAgICByZXR1cm4gYzsKK30KKworc3RhdGljIGludAorZm9ybV92aXJ0dWFsaXplKEZPUk0gKiBmLCBXSU5ET1cgKncpCit7CisgICAgLyogKklOREVOVC1PRkYqICovCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJaW50IGNvZGU7CisJaW50IHJlc3VsdDsKKyAgICB9IGxvb2t1cFtdID0geworCXsgQ1RSTCgnQScpLAlSRVFfTkVYVF9DSE9JQ0UgfSwKKwl7IENUUkwoJ0InKSwJUkVRX1BSRVZfV09SRCB9LAorCXsgQ1RSTCgnQycpLAlSRVFfQ0xSX0VPTCB9LAorCXsgQ1RSTCgnRCcpLAlSRVFfRE9XTl9GSUVMRCB9LAorCXsgQ1RSTCgnRScpLAlSRVFfRU5EX0ZJRUxEIH0sCisJeyBDVFJMKCdGJyksCVJFUV9ORVhUX1BBR0UgfSwKKwl7IENUUkwoJ0cnKSwJUkVRX0RFTF9XT1JEIH0sCisJeyBDVFJMKCdIJyksCVJFUV9ERUxfUFJFViB9LAorCXsgQ1RSTCgnSScpLAlSRVFfSU5TX0NIQVIgfSwKKwl7IENUUkwoJ0snKSwJUkVRX0NMUl9FT0YgfSwKKwl7IENUUkwoJ0wnKSwJUkVRX0xFRlRfRklFTEQgfSwKKwl7IENUUkwoJ00nKSwJUkVRX05FV19MSU5FIH0sCisJeyBDVFJMKCdOJyksCVJFUV9ORVhUX0ZJRUxEIH0sCisJeyBDVFJMKCdPJyksCVJFUV9JTlNfTElORSB9LAorCXsgQ1RSTCgnUCcpLAlSRVFfUFJFVl9GSUVMRCB9LAorCXsgQ1RSTCgnUicpLAlSRVFfUklHSFRfRklFTEQgfSwKKwl7IENUUkwoJ1MnKSwJUkVRX0JFR19GSUVMRCB9LAorCXsgQ1RSTCgnVScpLAlSRVFfVVBfRklFTEQgfSwKKwl7IENUUkwoJ1YnKSwJUkVRX0RFTF9DSEFSIH0sCisJeyBDVFJMKCdXJyksCVJFUV9ORVhUX1dPUkQgfSwKKwl7IENUUkwoJ1gnKSwJUkVRX0NMUl9GSUVMRCB9LAorCXsgQ1RSTCgnWScpLAlSRVFfREVMX0xJTkUgfSwKKwl7IENUUkwoJ1onKSwJUkVRX1BSRVZfQ0hPSUNFIH0sCisJeyBFU0NBUEUsCU1BWF9GT1JNX0NPTU1BTkQgKyAxIH0sCisJeyBLRVlfQkFDS1NQQUNFLCBSRVFfREVMX1BSRVYgfSwKKwl7IEtFWV9ET1dOLAlSRVFfRE9XTl9DSEFSIH0sCisJeyBLRVlfRU5ELAlSRVFfTEFTVF9GSUVMRCB9LAorCXsgS0VZX0hPTUUsCVJFUV9GSVJTVF9GSUVMRCB9LAorCXsgS0VZX0xFRlQsCVJFUV9MRUZUX0NIQVIgfSwKKwl7IEtFWV9MTCwJUkVRX0xBU1RfRklFTEQgfSwKKwl7IEtFWV9ORVhULAlSRVFfTkVYVF9GSUVMRCB9LAorCXsgS0VZX05QQUdFLAlSRVFfTkVYVF9QQUdFIH0sCisJeyBLRVlfUFBBR0UsCVJFUV9QUkVWX1BBR0UgfSwKKwl7IEtFWV9QUkVWSU9VUywgUkVRX1BSRVZfRklFTEQgfSwKKwl7IEtFWV9SSUdIVCwJUkVRX1JJR0hUX0NIQVIgfSwKKwl7IEtFWV9VUCwJUkVRX1VQX0NIQVIgfSwKKwl7IFFVSVQsCQlNQVhfRk9STV9DT01NQU5EICsgMSB9CisgICAgfTsKKyAgICAvKiAqSU5ERU5ULU9OKiAqLworCisgICAgc3RhdGljIGludCBtb2RlID0gUkVRX0lOU19NT0RFOworICAgIGludCBjID0gd0dldGNoYXIodyk7CisgICAgdW5zaWduZWQgbjsKKyAgICBGSUVMRCAqbWUgPSBjdXJyZW50X2ZpZWxkKGYpOworICAgIGJvb2wgY3VycmVudCA9IFRSVUU7CisKKyAgICBpZiAoYyA9PSBDVFJMKCddJykpIHsKKwlpZiAobW9kZSA9PSBSRVFfSU5TX01PREUpIHsKKwkgICAgbW9kZSA9IFJFUV9PVkxfTU9ERTsKKwl9IGVsc2UgeworCSAgICBtb2RlID0gUkVRX0lOU19NT0RFOworCX0KKwljID0gbW9kZTsKKyAgICB9IGVsc2UgeworCWZvciAobiA9IDA7IG4gPCBTSVpFT0YobG9va3VwKTsgbisrKSB7CisJICAgIGlmIChsb29rdXBbbl0uY29kZSA9PSBjKSB7CisJCWMgPSBsb29rdXBbbl0ucmVzdWx0OworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisgICAgTXZQcmludHcoMCwgQ09MUyAtIDYsICIoJXMpIiwgbW9kZSA9PSBSRVFfSU5TX01PREUgPyAiSU5TIiA6ICJPVkwiKTsKKworICAgIC8qCisgICAgICogRm9yY2UgdGhlIGZpZWxkIHRoYXQgdGhlIHVzZXIgaXMgdHlwaW5nIGludG8gdG8gYmUgaW4gcmV2ZXJzZSB2aWRlbywKKyAgICAgKiB3aGlsZSB0aGUgb3RoZXIgZmllbGRzIGFyZSBzaG93biB1bmRlcmxpbmVkLgorICAgICAqLworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgUkVRX0JFR19GSUVMRDoKKyAgICBjYXNlIFJFUV9DTFJfRU9GOgorICAgIGNhc2UgUkVRX0NMUl9FT0w6CisgICAgY2FzZSBSRVFfQ0xSX0ZJRUxEOgorICAgIGNhc2UgUkVRX0RFTF9DSEFSOgorICAgIGNhc2UgUkVRX0RFTF9MSU5FOgorICAgIGNhc2UgUkVRX0RFTF9QUkVWOgorICAgIGNhc2UgUkVRX0RFTF9XT1JEOgorICAgIGNhc2UgUkVRX0VORF9GSUVMRDoKKyAgICBjYXNlIFJFUV9JTlNfQ0hBUjoKKyAgICBjYXNlIFJFUV9JTlNfTElORToKKyAgICBjYXNlIFJFUV9MRUZUX0NIQVI6CisgICAgY2FzZSBSRVFfTEVGVF9GSUVMRDoKKyAgICBjYXNlIFJFUV9ORVhUX1dPUkQ6CisgICAgY2FzZSBSRVFfUklHSFRfQ0hBUjoKKwljdXJyZW50ID0gVFJVRTsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCWN1cnJlbnQgPSAoYyA8IEtFWV9NQVgpOworCWJyZWFrOworICAgIH0KKyAgICBpZiAoY3VycmVudCkgeworCWMgPSBlZGl0X3NlY3VyZShtZSwgYyk7CisJc2V0X2ZpZWxkX2JhY2sobWUsIEFfUkVWRVJTRSk7CisgICAgfSBlbHNlIHsKKwljID0gZWRpdF9zZWN1cmUobWUsIGMpOworCXNldF9maWVsZF9iYWNrKG1lLCBBX1VOREVSTElORSk7CisgICAgfQorICAgIHJldHVybiBjOworfQorCitzdGF0aWMgaW50CitteV9mb3JtX2RyaXZlcihGT1JNICogZm9ybSwgaW50IGMpCit7CisgICAgaWYgKGMgPT0gKE1BWF9GT1JNX0NPTU1BTkQgKyAxKQorCSYmIGZvcm1fZHJpdmVyKGZvcm0sIFJFUV9WQUxJREFUSU9OKSA9PSBFX09LKQorCXJldHVybiAoVFJVRSk7CisgICAgZWxzZSB7CisJYmVlcCgpOworCXJldHVybiAoRkFMU0UpOworICAgIH0KK30KKworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorI2RlZmluZSBGSUVMRENIRUNLX0NCKGZ1bmMpIGJvb2wgZnVuYyhGSUVMRCAqIGZsZCwgY29uc3Qgdm9pZCAqIGRhdGEgR0NDX1VOVVNFRCkKKyNkZWZpbmUgQ0hBUl9DSEVDS19DQihmdW5jKSBib29sIGZ1bmMoaW50IGNoLCBjb25zdCB2b2lkICpkYXRhIEdDQ19VTlVTRUQpCisjZWxzZQorI2RlZmluZSBGSUVMRENIRUNLX0NCKGZ1bmMpIGludCBmdW5jKEZJRUxEICogZmxkLCBjaGFyICogZGF0YSBHQ0NfVU5VU0VEKQorI2RlZmluZSBDSEFSX0NIRUNLX0NCKGZ1bmMpIGludCBmdW5jKGludCBjaCwgY2hhciAqZGF0YSBHQ0NfVU5VU0VEKQorI2VuZGlmCisKKy8qCisgKiBBbGxvdyBhIG1pZGRsZSBpbml0aWFsLCBvcHRpb25hbGx5IHdpdGggYSAnLicgdG8gZW5kIGl0LgorICovCitzdGF0aWMKK0ZJRUxEQ0hFQ0tfQ0IobWlfZmllbGRfY2hlY2spCit7CisgICAgY2hhciAqcyA9IGZpZWxkX2J1ZmZlcihmbGQsIDApOworICAgIGludCBzdGF0ZSA9IDA7CisgICAgaW50IG47CisKKyAgICBmb3IgKG4gPSAwOyBzW25dICE9ICdcMCc7ICsrbikgeworCXN3aXRjaCAoc3RhdGUpIHsKKwljYXNlIDA6CisJICAgIGlmIChzW25dID09ICcuJykgeworCQlpZiAobiAhPSAxKQorCQkgICAgcmV0dXJuIEZBTFNFOworCQlzdGF0ZSA9IDI7CisJICAgIH0gZWxzZSBpZiAoaXNzcGFjZShVQ2hhcihzW25dKSkpIHsKKwkJc3RhdGUgPSAyOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgMjoKKwkgICAgaWYgKCFpc3NwYWNlKFVDaGFyKHNbbl0pKSkKKwkJcmV0dXJuIEZBTFNFOworCSAgICBicmVhazsKKwl9CisgICAgfQorCisgICAgLyogZm9yY2UgdGhlIGZvcm0gdG8gZGlzcGxheSBhIGxlYWRpbmcgY2FwaXRhbCAqLworICAgIGlmIChpc2xvd2VyKFVDaGFyKHNbMF0pKSkgeworCXNbMF0gPSAoY2hhcikgdG91cHBlcihVQ2hhcihzWzBdKSk7CisJc2V0X2ZpZWxkX2J1ZmZlcihmbGQsIDAsIHMpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljCitDSEFSX0NIRUNLX0NCKG1pX2NoYXJfY2hlY2spCit7CisgICAgcmV0dXJuICgoaXNhbHBoYShjaCkgfHwgY2ggPT0gJy4nKSA/IFRSVUUgOiBGQUxTRSk7Cit9CisKKy8qCisgKiBQYXNzd29yZHMgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycy4KKyAqLworc3RhdGljCitGSUVMRENIRUNLX0NCKHB3X2ZpZWxkX2NoZWNrKQoreworICAgIGNoYXIgKnMgPSBmaWVsZF9idWZmZXIoZmxkLCAwKTsKKyAgICBpbnQgbjsKKworICAgIGZvciAobiA9IDA7IHNbbl0gIT0gJ1wwJzsgKytuKSB7CisJaWYgKGlzc3BhY2UoVUNoYXIoc1tuXSkpKSB7CisJICAgIGlmIChuIDwgNikKKwkJcmV0dXJuIEZBTFNFOworCX0KKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYworQ0hBUl9DSEVDS19DQihwd19jaGFyX2NoZWNrKQoreworICAgIHJldHVybiAoaXNncmFwaChjaCkgPyBUUlVFIDogRkFMU0UpOworfQorCitzdGF0aWMgdm9pZAorZGVtb19mb3Jtcyh2b2lkKQoreworICAgIFdJTkRPVyAqdzsKKyAgICBGT1JNICpmb3JtOworICAgIEZJRUxEICpmWzEyXSwgKnNlY3VyZTsKKyAgICBGSUVMRFRZUEUgKmZ0eV9taWRkbGUgPSBuZXdfZmllbGR0eXBlKG1pX2ZpZWxkX2NoZWNrLCBtaV9jaGFyX2NoZWNrKTsKKyAgICBGSUVMRFRZUEUgKmZ0eV9wYXNzd2QgPSBuZXdfZmllbGR0eXBlKHB3X2ZpZWxkX2NoZWNrLCBwd19jaGFyX2NoZWNrKTsKKyAgICBpbnQgZmluaXNoZWQgPSAwLCBjOworICAgIHVuc2lnbmVkIG4gPSAwOworCisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgbW91c2VtYXNrKEFMTF9NT1VTRV9FVkVOVFMsIChtbWFza190ICopIDApOworI2VuZGlmCisKKyAgICBtb3ZlKDE4LCAwKTsKKyAgICBhZGRzdHIoIkRlZmluZWQgZWRpdC90cmF2ZXJzYWwga2V5czogICBeUS9FU0MtIGV4aXQgZm9ybVxuIik7CisgICAgYWRkc3RyKCJeTiAgIC0tIGdvIHRvIG5leHQgZmllbGQgICAgICAgXlAgIC0tIGdvIHRvIHByZXZpb3VzIGZpZWxkXG4iKTsKKyAgICBhZGRzdHIoIkhvbWUgLS0gZ28gdG8gZmlyc3QgZmllbGQgICAgICBFbmQgLS0gZ28gdG8gbGFzdCBmaWVsZFxuIik7CisgICAgYWRkc3RyKCJeTCAgIC0tIGdvIHRvIGZpZWxkIHRvIGxlZnQgICAgXlIgIC0tIGdvIHRvIGZpZWxkIHRvIHJpZ2h0XG4iKTsKKyAgICBhZGRzdHIoIl5VICAgLS0gbW92ZSB1cHdhcmQgdG8gZmllbGQgICBeRCAgLS0gbW92ZSBkb3dud2FyZCB0byBmaWVsZFxuIik7CisgICAgYWRkc3RyKCJeVyAgIC0tIGdvIHRvIG5leHQgd29yZCAgICAgICAgXkIgIC0tIGdvIHRvIHByZXZpb3VzIHdvcmRcbiIpOworICAgIGFkZHN0cigiXlMgICAtLSBnbyB0byBzdGFydCBvZiBmaWVsZCAgIF5FICAtLSBnbyB0byBlbmQgb2YgZmllbGRcbiIpOworICAgIGFkZHN0cigiXkggICAtLSBkZWxldGUgcHJldmlvdXMgY2hhciAgIF5ZICAtLSBkZWxldGUgbGluZVxuIik7CisgICAgYWRkc3RyKCJeRyAgIC0tIGRlbGV0ZSBjdXJyZW50IHdvcmQgICAgXkMgIC0tIGNsZWFyIHRvIGVuZCBvZiBsaW5lXG4iKTsKKyAgICBhZGRzdHIoIl5LICAgLS0gY2xlYXIgdG8gZW5kIG9mIGZpZWxkICBeWCAgLS0gY2xlYXIgZmllbGRcbiIpOworICAgIGFkZHN0cigiQXJyb3cga2V5cyBtb3ZlIHdpdGhpbiBhIGZpZWxkIGFzIHlvdSB3b3VsZCBleHBlY3QuIF5dIHRvZ2dsZXMgb3ZlcmxheSBtb2RlLiIpOworCisgICAgTXZBZGRTdHIoNCwgNTcsICJGb3JtcyBFbnRyeSBUZXN0Iik7CisKKyAgICByZWZyZXNoKCk7CisKKyAgICAvKiBkZXNjcmliZSB0aGUgZm9ybSAqLworICAgIG1lbXNldChmLCAwLCBzaXplb2YoZikpOworICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoMCwgMTUsICJTYW1wbGUgRm9ybSIpOworCisgICAgZltuKytdID0gbWFrZV9sYWJlbCgyLCAwLCAiTGFzdCBOYW1lIik7CisgICAgZltuKytdID0gbWFrZV9maWVsZCgzLCAwLCAxLCAxOCwgRkFMU0UpOworICAgIHNldF9maWVsZF90eXBlKGZbbiAtIDFdLCBUWVBFX0FMUEhBLCAxKTsKKworICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoMiwgMjAsICJGaXJzdCBOYW1lIik7CisgICAgZltuKytdID0gbWFrZV9maWVsZCgzLCAyMCwgMSwgMTIsIEZBTFNFKTsKKyAgICBzZXRfZmllbGRfdHlwZShmW24gLSAxXSwgVFlQRV9BTFBIQSwgMSk7CisKKyAgICBmW24rK10gPSBtYWtlX2xhYmVsKDIsIDM0LCAiTWlkZGxlIE5hbWUiKTsKKyAgICBmW24rK10gPSBtYWtlX2ZpZWxkKDMsIDM0LCAxLCAxMiwgRkFMU0UpOworICAgIHNldF9maWVsZF90eXBlKGZbbiAtIDFdLCBmdHlfbWlkZGxlKTsKKworICAgIGZbbisrXSA9IG1ha2VfbGFiZWwoNSwgMCwgIkNvbW1lbnRzIik7CisgICAgZltuKytdID0gbWFrZV9maWVsZCg2LCAwLCA0LCA0NiwgRkFMU0UpOworCisgICAgZltuKytdID0gbWFrZV9sYWJlbCg1LCAyMCwgIlBhc3N3b3JkOiIpOworICAgIHNlY3VyZSA9CisJZltuKytdID0gbWFrZV9maWVsZCg1LCAzMCwgMSwgOSwgVFJVRSk7CisgICAgc2V0X2ZpZWxkX3R5cGUoZltuIC0gMV0sIGZ0eV9wYXNzd2QpOworICAgIGZbbl0gPSAoRklFTEQgKikgMDsKKworICAgIGlmICgoZm9ybSA9IG5ld19mb3JtKGYpKSAhPSAwKSB7CisKKwlkaXNwbGF5X2Zvcm0oZm9ybSk7CisKKwl3ID0gZm9ybV93aW4oZm9ybSk7CisJcmF3KCk7CisJbm9ubCgpOwkJCS8qIGxldHMgdXMgcmVhZCBeTSdzICovCisJd2hpbGUgKCFmaW5pc2hlZCkgeworCSAgICBzd2l0Y2ggKGZvcm1fZHJpdmVyKGZvcm0sIGMgPSBmb3JtX3ZpcnR1YWxpemUoZm9ybSwgdykpKSB7CisJICAgIGNhc2UgRV9PSzoKKwkJTXZBZGRTdHIoNSwgNTcsIGZpZWxkX2J1ZmZlcihzZWN1cmUsIDEpKTsKKwkJY2xydG9lb2woKTsKKwkJcmVmcmVzaCgpOworCQlicmVhazsKKwkgICAgY2FzZSBFX1VOS05PV05fQ09NTUFORDoKKwkJZmluaXNoZWQgPSBteV9mb3JtX2RyaXZlcihmb3JtLCBjKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCWJlZXAoKTsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisKKwllcmFzZV9mb3JtKGZvcm0pOworCisJZnJlZV9mb3JtKGZvcm0pOworICAgIH0KKyAgICBmb3IgKGMgPSAwOyBmW2NdICE9IDA7IGMrKykKKwlmcmVlX2ZpZWxkKGZbY10pOworICAgIGZyZWVfZmllbGR0eXBlKGZ0eV9taWRkbGUpOworICAgIGZyZWVfZmllbGR0eXBlKGZ0eV9wYXNzd2QpOworICAgIG5vcmF3KCk7CisgICAgbmwoKTsKKworI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgorICAgIG1vdXNlbWFzayhBTExfTU9VU0VfRVZFTlRTLCAobW1hc2tfdCAqKSAwKTsKKyNlbmRpZgorfQorI2VuZGlmIC8qIFVTRV9MSUJGT1JNICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogT3ZlcmxhcCB0ZXN0CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkCitmaWxsd2luKFdJTkRPVyAqd2luLCBjaGFyIGNoKQoreworICAgIGludCB5LCB4OworICAgIGludCB5MSwgeDE7CisKKyAgICBnZXRtYXh5eCh3aW4sIHkxLCB4MSk7CisgICAgZm9yICh5ID0gMDsgeSA8IHkxOyB5KyspIHsKKwl3bW92ZSh3aW4sIHksIDApOworCWZvciAoeCA9IDA7IHggPCB4MTsgeCsrKQorCSAgICB3YWRkY2god2luLCBVQ2hhcihjaCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2Nyb3Nzd2luKFdJTkRPVyAqd2luLCBjaGFyIGNoKQoreworICAgIGludCB5LCB4OworICAgIGludCB5MSwgeDE7CisKKyAgICBnZXRtYXh5eCh3aW4sIHkxLCB4MSk7CisgICAgZm9yICh5ID0gMDsgeSA8IHkxOyB5KyspIHsKKwlmb3IgKHggPSAwOyB4IDwgeDE7IHgrKykKKwkgICAgaWYgKCgoeCA+ICh4MSAtIDEpIC8gMykgJiYgKHggPD0gKDIgKiAoeDEgLSAxKSkgLyAzKSkKKwkJfHwgKCgoeSA+ICh5MSAtIDEpIC8gMykgJiYgKHkgPD0gKDIgKiAoeTEgLSAxKSkgLyAzKSkpKSB7CisJCXdtb3ZlKHdpbiwgeSwgeCk7CisJCXdhZGRjaCh3aW4sIFVDaGFyKGNoKSk7CisJICAgIH0KKyAgICB9Cit9CisKKyNkZWZpbmUgT1ZFUkxBUF9GTEFWT1JTIDUKKworc3RhdGljIHZvaWQKK292ZXJsYXBfaGVscGl0ZW0oaW50IHN0YXRlLCBpbnQgaXRlbSwgY2hhciAqbWVzc2FnZSkKK3sKKyAgICBpbnQgcm93ID0gKGl0ZW0gLyAyKTsKKyAgICBpbnQgY29sID0gKChpdGVtICUgMikgPyBDT0xTIC8gMiA6IDApOworCisgICAgbW92ZShMSU5FUyAtIDYgKyByb3csIGNvbCk7CisgICAgcHJpbnR3KCIlYyVjID0gJXMiLCBzdGF0ZSA9PSByb3cgPyAnPicgOiAnICcsICdhJyArIGl0ZW0sIG1lc3NhZ2UpOworICAgIGNscnRvZW9sKCk7Cit9CisKK3N0YXRpYyB2b2lkCitvdmVybGFwX3Rlc3RfMV9hdHRyKFdJTkRPVyAqd2luLCBpbnQgZmxhdm9yLCBpbnQgY29sKQoreworICAgIE5DVVJTRVNfUEFJUlNfVCBjcGFpciA9IChOQ1VSU0VTX1BBSVJTX1QpICgxICsgKGZsYXZvciAqIDIpICsgY29sKTsKKworICAgIHN3aXRjaCAoZmxhdm9yKSB7CisgICAgY2FzZSAwOgorCSh2b2lkKSB3YXR0cnNldCh3aW4sIEFfTk9STUFMKTsKKwlicmVhazsKKyAgICBjYXNlIDE6CisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQV9CT0xEKTsKKwlicmVhazsKKyAgICBjYXNlIDI6CisJaW5pdF9wYWlyKGNwYWlyLCBDT0xPUl9CTFVFLCBDT0xPUl9XSElURSk7CisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhDT0xPUl9QQUlSKGNwYWlyKSwgQV9OT1JNQUwpKTsKKwlicmVhazsKKyAgICBjYXNlIDM6CisJaW5pdF9wYWlyKGNwYWlyLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhDT0xPUl9QQUlSKGNwYWlyKSwgQV9CT0xEKSk7CisJYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb3ZlcmxhcF90ZXN0XzJfYXR0cihXSU5ET1cgKndpbiwgaW50IGZsYXZvciwgaW50IGNvbCkKK3sKKyAgICBOQ1VSU0VTX1BBSVJTX1QgY3BhaXIgPSAoTkNVUlNFU19QQUlSU19UKSAoOSArIChmbGF2b3IgKiAyKSArIGNvbCk7CisKKyAgICBzd2l0Y2ggKGZsYXZvcikgeworICAgIGNhc2UgMDoKKwkvKiBubyBlZmZlY3QgKi8KKwlicmVhazsKKyAgICBjYXNlIDE6CisJLyogbm8gZWZmZWN0ICovCisJYnJlYWs7CisgICAgY2FzZSAyOgorCWluaXRfcGFpcihjcGFpciwgQ09MT1JfUkVELCBDT0xPUl9HUkVFTik7CisJd2JrZ2RzZXQod2luLCBjb2xvcmVkX2NodHlwZSgnICcsIEFfQkxJTkssIGNwYWlyKSk7CisJYnJlYWs7CisgICAgY2FzZSAzOgorCXdia2dkc2V0KHdpbiwgJyAnIHwgQV9OT1JNQUwpOworCWJyZWFrOworICAgIH0KK30KKworc3RhdGljIGludAorb3ZlcmxhcF9oZWxwKGludCBzdGF0ZSwgaW50IGZsYXZvcnNbT1ZFUkxBUF9GTEFWT1JTXSkKK3sKKyAgICBpbnQgcm93OworICAgIGludCBjb2w7CisgICAgaW50IGl0ZW07CisgICAgY29uc3QgY2hhciAqdGhzLCAqdGh0OworICAgIGNoYXIgbXNnWzgwXTsKKworICAgIGlmIChzdGF0ZSA8IDApCisJc3RhdGUgKz0gT1ZFUkxBUF9GTEFWT1JTOworICAgIHN0YXRlID0gc3RhdGUgJSBPVkVSTEFQX0ZMQVZPUlM7CisgICAgYXNzZXJ0KHN0YXRlID49IDAgJiYgc3RhdGUgPCBPVkVSTEFQX0ZMQVZPUlMpOworCisgICAgZm9yIChpdGVtID0gMDsgaXRlbSA8ICgyICogT1ZFUkxBUF9GTEFWT1JTKTsgKytpdGVtKSB7CisJcm93ID0gaXRlbSAvIDI7CisJY29sID0gaXRlbSAlIDI7CisJdGhzID0gY29sID8gIkIiIDogIkEiOworCXRodCA9IGNvbCA/ICJBIiA6ICJCIjsKKworCXN3aXRjaCAocm93KSB7CisJY2FzZSAwOgorCSAgICBmbGF2b3JzW3Jvd10gPSAwOworCSAgICBzcHJpbnRmKG1zZywgInJlZnJlc2ggJXMsIHRoZW4gJXMsIHRoZW4gZG91cGRhdGUuIiwgdGhzLCB0aHQpOworCSAgICBicmVhazsKKwljYXNlIDE6CisJICAgIGlmICh1c2VfY29sb3JzKSB7CisJCWZsYXZvcnNbcm93XSAlPSA0OworCSAgICB9IGVsc2UgeworCQlmbGF2b3JzW3Jvd10gJT0gMjsKKwkgICAgfQorCSAgICBvdmVybGFwX3Rlc3RfMV9hdHRyKHN0ZHNjciwgZmxhdm9yc1tyb3ddLCBjb2wpOworCSAgICBzcHJpbnRmKG1zZywgImZpbGwgd2luZG93ICVzIHdpdGggbGV0dGVyICVzLiIsIHRocywgdGhzKTsKKwkgICAgYnJlYWs7CisJY2FzZSAyOgorCSAgICBpZiAodXNlX2NvbG9ycykgeworCQlmbGF2b3JzW3Jvd10gJT0gNDsKKwkgICAgfSBlbHNlIHsKKwkJZmxhdm9yc1tyb3ddICU9IDI7CisJICAgIH0KKwkgICAgc3dpdGNoIChmbGF2b3JzW3Jvd10pIHsKKwkgICAgY2FzZSAwOgorCQlzcHJpbnRmKG1zZywgImNyb3NzIHBhdHRlcm4gaW4gd2luZG93ICVzLiIsIHRocyk7CisJCWJyZWFrOworCSAgICBjYXNlIDE6CisJCXNwcmludGYobXNnLCAiZHJhdyBib3ggaW4gd2luZG93ICVzLiIsIHRocyk7CisJCWJyZWFrOworCSAgICBjYXNlIDI6CisJCXNwcmludGYobXNnLCAic2V0IGJhY2tncm91bmQgb2Ygd2luZG93ICVzLiIsIHRocyk7CisJCWJyZWFrOworCSAgICBjYXNlIDM6CisJCXNwcmludGYobXNnLCAicmVzZXQgYmFja2dyb3VuZCBvZiB3aW5kb3cgJXMuIiwgdGhzKTsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAzOgorCSAgICBmbGF2b3JzW3Jvd10gPSAwOworCSAgICBzcHJpbnRmKG1zZywgImNsZWFyIHdpbmRvdyAlcy4iLCB0aHMpOworCSAgICBicmVhazsKKwljYXNlIDQ6CisJICAgIGZsYXZvcnNbcm93XSAlPSA0OworCSAgICBzd2l0Y2ggKGZsYXZvcnNbcm93XSkgeworCSAgICBjYXNlIDA6CisJCXNwcmludGYobXNnLCAib3ZlcndyaXRlICVzIG9udG8gJXMuIiwgdGhzLCB0aHQpOworCQlicmVhazsKKwkgICAgY2FzZSAxOgorCQlzcHJpbnRmKG1zZywgImNvcHl3aW4oRkFMU0UpICVzIG9udG8gJXMuIiwgdGhzLCB0aHQpOworCQlicmVhazsKKwkgICAgY2FzZSAyOgorCQlzcHJpbnRmKG1zZywgImNvcHl3aW4oVFJVRSkgJXMgb250byAlcy4iLCB0aHMsIHRodCk7CisJCWJyZWFrOworCSAgICBjYXNlIDM6CisJCXNwcmludGYobXNnLCAib3ZlcmxheSAlcyBvbnRvICVzLiIsIHRocywgdGh0KTsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJfQorCW92ZXJsYXBfaGVscGl0ZW0oc3RhdGUsIGl0ZW0sIG1zZyk7CisJKHZvaWQpIHdhdHRyc2V0KHN0ZHNjciwgQV9OT1JNQUwpOworCXdia2dkc2V0KHN0ZHNjciwgJyAnIHwgQV9OT1JNQUwpOworICAgIH0KKyAgICBtb3ZlKExJTkVTIC0gMSwgMCk7CisgICAgcHJpbnR3KCJeUS9FU0MgPSB0ZXJtaW5hdGUgdGVzdC4gIFVwL2Rvd24vc3BhY2Ugc2VsZWN0IHRlc3QgdmFyaWF0aW9ucyAoJWQgJWQpLiIsCisJICAgc3RhdGUsIGZsYXZvcnNbc3RhdGVdKTsKKworICAgIHJldHVybiBzdGF0ZTsKK30KKworc3RhdGljIHZvaWQKK292ZXJsYXBfdGVzdF8wKFdJTkRPVyAqYSwgV0lORE9XICpiKQoreworICAgIHRvdWNod2luKGEpOworICAgIHRvdWNod2luKGIpOworICAgIHdub3V0cmVmcmVzaChhKTsKKyAgICB3bm91dHJlZnJlc2goYik7CisgICAgZG91cGRhdGUoKTsKK30KKworc3RhdGljIHZvaWQKK292ZXJsYXBfdGVzdF8xKGludCBmbGF2b3IsIGludCBjb2wsIFdJTkRPVyAqYSwgY2hhciBmaWxsKQoreworICAgIG92ZXJsYXBfdGVzdF8xX2F0dHIoYSwgZmxhdm9yLCBjb2wpOworICAgIGZpbGx3aW4oYSwgZmlsbCk7CisgICAgKHZvaWQpIHdhdHRyc2V0KGEsIEFfTk9STUFMKTsKK30KKworc3RhdGljIHZvaWQKK292ZXJsYXBfdGVzdF8yKGludCBmbGF2b3IsIGludCBjb2wsIFdJTkRPVyAqYSwgY2hhciBmaWxsKQoreworICAgIG92ZXJsYXBfdGVzdF8yX2F0dHIoYSwgZmxhdm9yLCBjb2wpOworICAgIHN3aXRjaCAoZmxhdm9yKSB7CisgICAgY2FzZSAwOgorCWNyb3Nzd2luKGEsIGZpbGwpOworCWJyZWFrOworICAgIGNhc2UgMToKKwlib3goYSwgMCwgMCk7CisJYnJlYWs7CisgICAgY2FzZSAyOgorCS8qIGRvbmUgaW4gb3ZlcmxhcF90ZXN0XzJfYXR0ciAqLworCWJyZWFrOworICAgIGNhc2UgMzoKKwkvKiBkb25lIGluIG92ZXJsYXBfdGVzdF8yX2F0dHIgKi8KKwlicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvdmVybGFwX3Rlc3RfMyhXSU5ET1cgKmEpCit7CisgICAgd2NsZWFyKGEpOworICAgIHdtb3ZlKGEsIDAsIDApOworfQorCitzdGF0aWMgdm9pZAorb3ZlcmxhcF90ZXN0XzQoaW50IGZsYXZvciwgV0lORE9XICphLCBXSU5ET1cgKmIpCit7CisgICAgc3dpdGNoIChmbGF2b3IpIHsKKyAgICBjYXNlIDA6CisJb3ZlcndyaXRlKGEsIGIpOworCWJyZWFrOworICAgIGNhc2UgMToKKwljb3B5d2luKGEsIGIsIDAsIDAsIDAsIDAsIGdldG1heHkoYiksIGdldG1heHgoYiksIEZBTFNFKTsKKwlicmVhazsKKyAgICBjYXNlIDI6CisJY29weXdpbihhLCBiLCAwLCAwLCAwLCAwLCBnZXRtYXh5KGIpLCBnZXRtYXh4KGIpLCBUUlVFKTsKKwlicmVhazsKKyAgICBjYXNlIDM6CisJb3ZlcmxheShhLCBiKTsKKwlicmVhazsKKyAgICB9Cit9CisKKy8qIHRlc3QgZWZmZWN0cyBvZiBvdmVybGFwcGluZyB3aW5kb3dzICovCitzdGF0aWMgdm9pZAorb3ZlcmxhcF90ZXN0KHZvaWQpCit7CisgICAgaW50IGNoOworICAgIGludCBzdGF0ZSwgZmxhdm9yW09WRVJMQVBfRkxBVk9SU107CisKKyAgICBXSU5ET1cgKndpbjEgPSBuZXd3aW4oOSwgMjAsIDMsIDMpOworICAgIFdJTkRPVyAqd2luMiA9IG5ld3dpbig5LCAyMCwgOSwgMTYpOworCisgICAgY3Vyc19zZXQoMCk7CisgICAgcmF3KCk7CisgICAgcmVmcmVzaCgpOworICAgIG1vdmUoMCwgMCk7CisgICAgcHJpbnR3KCJUaGlzIHRlc3Qgc2hvd3MgdGhlIGJlaGF2aW9yIG9mIHdub3V0cmVmcmVzaCgpIHdpdGggcmVzcGVjdCB0b1xuIik7CisgICAgcHJpbnR3KCJ0aGUgc2hhcmVkIHJlZ2lvbiBvZiB0d28gb3ZlcmxhcHBpbmcgd2luZG93cyBBIGFuZCBCLiAgVGhlIGNyb3NzXG4iKTsKKyAgICBwcmludHcoInBhdHRlcm4gaW4gZWFjaCB3aW5kb3cgZG9lcyBub3Qgb3ZlcmxhcCB0aGUgb3RoZXIuXG4iKTsKKworICAgIG1lbXNldChmbGF2b3IsIDAsIHNpemVvZihmbGF2b3IpKTsKKyAgICBzdGF0ZSA9IG92ZXJsYXBfaGVscCgwLCBmbGF2b3IpOworCisgICAgd2hpbGUgKCFpc1F1aXQoY2ggPSBHZXRjaGFyKCkpKQorCXN3aXRjaCAoY2gpIHsKKwljYXNlICdhJzoJCS8qIHJlZnJlc2ggd2luZG93IEEgZmlyc3QsIHRoZW4gQiAqLworCSAgICBvdmVybGFwX3Rlc3RfMCh3aW4xLCB3aW4yKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdiJzoJCS8qIHJlZnJlc2ggd2luZG93IEIgZmlyc3QsIHRoZW4gQSAqLworCSAgICBvdmVybGFwX3Rlc3RfMCh3aW4yLCB3aW4xKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdjJzoJCS8qIGZpbGwgd2luZG93IEEgc28gaXQncyB2aXNpYmxlICovCisJICAgIG92ZXJsYXBfdGVzdF8xKGZsYXZvclsxXSwgMCwgd2luMSwgJ0EnKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdkJzoJCS8qIGZpbGwgd2luZG93IEIgc28gaXQncyB2aXNpYmxlICovCisJICAgIG92ZXJsYXBfdGVzdF8xKGZsYXZvclsxXSwgMSwgd2luMiwgJ0InKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdlJzoJCS8qIGNyb3NzIHRlc3QgcGF0dGVybiBpbiB3aW5kb3cgQSAqLworCSAgICBvdmVybGFwX3Rlc3RfMihmbGF2b3JbMl0sIDAsIHdpbjEsICdBJyk7CisJICAgIGJyZWFrOworCisJY2FzZSAnZic6CQkvKiBjcm9zcyB0ZXN0IHBhdHRlcm4gaW4gd2luZG93IEEgKi8KKwkgICAgb3ZlcmxhcF90ZXN0XzIoZmxhdm9yWzJdLCAxLCB3aW4yLCAnQicpOworCSAgICBicmVhazsKKworCWNhc2UgJ2cnOgkJLyogY2xlYXIgd2luZG93IEEgKi8KKwkgICAgb3ZlcmxhcF90ZXN0XzMod2luMSk7CisJICAgIGJyZWFrOworCisJY2FzZSAnaCc6CQkvKiBjbGVhciB3aW5kb3cgQiAqLworCSAgICBvdmVybGFwX3Rlc3RfMyh3aW4yKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdpJzoJCS8qIG92ZXJ3cml0ZSBBIG9udG8gQiAqLworCSAgICBvdmVybGFwX3Rlc3RfNChmbGF2b3JbNF0sIHdpbjEsIHdpbjIpOworCSAgICBicmVhazsKKworCWNhc2UgJ2onOgkJLyogb3ZlcndyaXRlIEIgb250byBBICovCisJICAgIG92ZXJsYXBfdGVzdF80KGZsYXZvcls0XSwgd2luMiwgd2luMSk7CisJICAgIGJyZWFrOworCisJY2FzZSBDVFJMKCduJyk6CisJY2FzZSBLRVlfRE9XTjoKKwkgICAgc3RhdGUgPSBvdmVybGFwX2hlbHAoc3RhdGUgKyAxLCBmbGF2b3IpOworCSAgICBicmVhazsKKworCWNhc2UgQ1RSTCgncCcpOgorCWNhc2UgS0VZX1VQOgorCSAgICBzdGF0ZSA9IG92ZXJsYXBfaGVscChzdGF0ZSAtIDEsIGZsYXZvcik7CisJICAgIGJyZWFrOworCisJY2FzZSAnICc6CisJICAgIGZsYXZvcltzdGF0ZV0gKz0gMTsKKwkgICAgc3RhdGUgPSBvdmVybGFwX2hlbHAoc3RhdGUsIGZsYXZvcik7CisJICAgIGJyZWFrOworCisJY2FzZSAnPyc6CisJICAgIHN0YXRlID0gb3ZlcmxhcF9oZWxwKHN0YXRlLCBmbGF2b3IpOworCSAgICBicmVhazsKKworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisgICAgZGVsd2luKHdpbjIpOworICAgIGRlbHdpbih3aW4xKTsKKyAgICBlcmFzZSgpOworICAgIGN1cnNfc2V0KDEpOworICAgIGVuZHdpbigpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIE1haW4gc2VxdWVuY2UKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGJvb2wKK2RvX3NpbmdsZV90ZXN0KGNvbnN0IGNoYXIgYykKKy8qIHBlcmZvcm0gYSBzaW5nbGUgc3BlY2lmaWVkIHRlc3QgKi8KK3sKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICdhJzoKKwlnZXRjaF90ZXN0KCk7CisJYnJlYWs7CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorICAgIGNhc2UgJ0EnOgorCWdldF93Y2hfdGVzdCgpOworCWJyZWFrOworI2VuZGlmCisKKyAgICBjYXNlICdiJzoKKwlhdHRyX3Rlc3QoKTsKKwlicmVhazsKKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgY2FzZSAnQic6CisJd2lkZV9hdHRyX3Rlc3QoKTsKKwlicmVhazsKKyNlbmRpZgorCisgICAgY2FzZSAnYyc6CisJaWYgKCF1c2VfY29sb3JzKQorCSAgICBDYW5ub3QoImRvZXMgbm90IHN1cHBvcnQgY29sb3IuIik7CisJZWxzZQorCSAgICBjb2xvcl90ZXN0KCk7CisJYnJlYWs7CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorICAgIGNhc2UgJ0MnOgorCWlmICghdXNlX2NvbG9ycykKKwkgICAgQ2Fubm90KCJkb2VzIG5vdCBzdXBwb3J0IGNvbG9yLiIpOworCWVsc2UKKwkgICAgd2lkZV9jb2xvcl90ZXN0KCk7CisJYnJlYWs7CisjZW5kaWYKKworICAgIGNhc2UgJ2QnOgorCWlmICghdXNlX2NvbG9ycykKKwkgICAgQ2Fubm90KCJkb2VzIG5vdCBzdXBwb3J0IGNvbG9yLiIpOworCWVsc2UgaWYgKCFjYW5fY2hhbmdlX2NvbG9yKCkpCisJICAgIENhbm5vdCgiaGFzIGhhcmR3aXJlZCBjb2xvciB2YWx1ZXMuIik7CisJZWxzZQorCSAgICBjb2xvcl9lZGl0KCk7CisJYnJlYWs7CisKKyNpZiBVU0VfU09GVEtFWVMKKyAgICBjYXNlICdlJzoKKwlzbGtfdGVzdCgpOworCWJyZWFrOworCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKyAgICBjYXNlICdFJzoKKwl3aWRlX3Nsa190ZXN0KCk7CisJYnJlYWs7CisjZW5kaWYKKyNlbmRpZgorCisgICAgY2FzZSAnZic6CisJYWNzX2Rpc3BsYXkoKTsKKwlicmVhazsKKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgY2FzZSAnRic6CisJd2lkZV9hY3NfZGlzcGxheSgpOworCWJyZWFrOworI2VuZGlmCisKKyNpZiBVU0VfTElCUEFORUwKKyAgICBjYXNlICdvJzoKKwlkZW1vX3BhbmVscyhpbml0X3BhbmVsLCBmaWxsX3BhbmVsKTsKKwlicmVhazsKKyNlbmRpZgorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQgJiYgVVNFX0xJQlBBTkVMCisgICAgY2FzZSAnTyc6CisJZGVtb19wYW5lbHMoaW5pdF93aWRlX3BhbmVsLCBmaWxsX3dpZGVfcGFuZWwpOworCWJyZWFrOworI2VuZGlmCisKKyAgICBjYXNlICdnJzoKKwlhY3NfYW5kX3Njcm9sbCgpOworCWJyZWFrOworCisgICAgY2FzZSAnaSc6CisJZmx1c2hpbnBfdGVzdChzdGRzY3IpOworCWJyZWFrOworCisgICAgY2FzZSAnayc6CisJdGVzdF9zZ3JfYXR0cmlidXRlcygpOworCWJyZWFrOworCisjaWYgVVNFX0xJQk1FTlUKKyAgICBjYXNlICdtJzoKKwltZW51X3Rlc3QoKTsKKwlicmVhazsKKyNlbmRpZgorCisgICAgY2FzZSAncCc6CisJZGVtb19wYWQoRkFMU0UpOworCWJyZWFrOworCisgICAgY2FzZSAnUCc6CisJZGVtb19wYWQoVFJVRSk7CisJYnJlYWs7CisKKyNpZiBVU0VfTElCRk9STQorICAgIGNhc2UgJ3InOgorCWRlbW9fZm9ybXMoKTsKKwlicmVhazsKKyNlbmRpZgorCisgICAgY2FzZSAncyc6CisJb3ZlcmxhcF90ZXN0KCk7CisJYnJlYWs7CisKKyNpZiBVU0VfTElCTUVOVSAmJiBkZWZpbmVkKFRSQUNFKQorICAgIGNhc2UgJ3QnOgorCXRyYWNlX3NldCgpOworCWJyZWFrOworI2VuZGlmCisKKyAgICBjYXNlICc/JzoKKwlicmVhazsKKworICAgIGRlZmF1bHQ6CisJcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdGJsW10gPQorICAgIHsKKwkiVXNhZ2U6IG5jdXJzZXMgW29wdGlvbnNdIgorCSwiIgorCSwiT3B0aW9uczoiCisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJLCIgIC1hIGYsYiAgIHNldCBkZWZhdWx0LWNvbG9ycyAoYXNzdW1lZCB3aGl0ZS1vbi1ibGFjaykiCisJLCIgIC1kICAgICAgIHVzZSBkZWZhdWx0LWNvbG9ycyBpZiB0ZXJtaW5hbCBzdXBwb3J0cyB0aGVtIgorI2VuZGlmCisjaWYgSEFWRV9VU0VfRU5WCisJLCIgIC1FICAgICAgIGNhbGwgdXNlX2VudihGQUxTRSkgdG8gaWdub3JlICRMSU5FUyBhbmQgJENPTFVNTlMiCisjZW5kaWYKKyNpZiBVU0VfU09GVEtFWVMKKwksIiAgLWUgZm10ICAgc3BlY2lmeSBmb3JtYXQgZm9yIHNvZnQta2V5cyB0ZXN0IChlKSIKKyNlbmRpZgorI2lmIEhBVkVfUklQT0ZGTElORQorCSwiICAtZiAgICAgICByaXAtb2ZmIGZvb3RlciBsaW5lIChjYW4gcmVwZWF0KSIKKwksIiAgLWggICAgICAgcmlwLW9mZiBoZWFkZXIgbGluZSAoY2FuIHJlcGVhdCkiCisjZW5kaWYKKwksIiAgLW0gICAgICAgZG8gbm90IHVzZSBjb2xvcnMiCisJLCIgIC1wIGZpbGUgIHJnYiB2YWx1ZXMgdG8gdXNlIGluICdkJyByYXRoZXIgdGhhbiBuY3Vyc2VzJ3MgYnVpbHRpbiIKKyNpZiBVU0VfTElCUEFORUwKKwksIiAgLXMgbXNlYyAgc3BlY2lmeSBub21pbmFsIHRpbWUgZm9yIHBhbmVsLWRlbW8gKGRlZmF1bHQ6IDEsIHRvIGhvbGQpIgorI2VuZGlmCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpICYmIChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggPj0gMjAxMjA3MTQpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQorCSwiICAtVCAgICAgICBjYWxsIHVzZV90aW9jdGwoVFJVRSkgdG8gYWxsb3cgU0lHV0lOQ0ggdG8gb3ZlcnJpZGUgZW52aXJvbm1lbnQiCisjZW5kaWYKKyNpZmRlZiBUUkFDRQorCSwiICAtdCBtYXNrICBzcGVjaWZ5IGRlZmF1bHQgdHJhY2UtbGV2ZWwgKG1heSB0b2dnbGUgd2l0aCBeVCkiCisjZW5kaWYKKyAgICB9OworICAgIHNpemVfdCBuOworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGJsKTsgbisrKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHRibFtuXSk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIHZvaWQKK3NldF90ZXJtaW5hbF9tb2Rlcyh2b2lkKQoreworICAgIG5vcmF3KCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisgICAgc2Nyb2xsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBpZGxvayhzdGRzY3IsIFRSVUUpOworICAgIGtleXBhZChzdGRzY3IsIFRSVUUpOworfQorCisjaWZkZWYgU0lHVVNSMQorc3RhdGljIHZvaWQKK2Fubm91bmNlX3NpZyhpbnQgc2lnKQoreworICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgIkhhbmRsZWQgc2lnbmFsICVkXHJcbiIsIHNpZyk7Cit9CisjZW5kaWYKKworI2lmIEhBVkVfUklQT0ZGTElORQorc3RhdGljIGludAorcmlwX2Zvb3RlcihXSU5ET1cgKndpbiwgaW50IGNvbHMpCit7CisgICAgd2JrZ2Qod2luLCBBX1JFVkVSU0UpOworICAgIHdlcmFzZSh3aW4pOworICAgIHdtb3ZlKHdpbiwgMCwgMCk7CisgICAgd3ByaW50dyh3aW4sICJmb290ZXI6IHdpbmRvdyAlcCwgJWQgY29sdW1ucyIsICh2b2lkICopIHdpbiwgY29scyk7CisgICAgd25vdXRyZWZyZXNoKHdpbik7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0aWMgaW50CityaXBfaGVhZGVyKFdJTkRPVyAqd2luLCBpbnQgY29scykKK3sKKyAgICB3YmtnZCh3aW4sIEFfUkVWRVJTRSk7CisgICAgd2VyYXNlKHdpbik7CisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwgImhlYWRlcjogd2luZG93ICVwLCAlZCBjb2x1bW5zIiwgKHZvaWQgKikgd2luLCBjb2xzKTsKKyAgICB3bm91dHJlZnJlc2god2luKTsKKyAgICByZXR1cm4gT0s7Cit9CisjZW5kaWYgLyogSEFWRV9SSVBPRkZMSU5FICovCisKK3N0YXRpYyB2b2lkCittYWluX21lbnUoYm9vbCB0b3ApCit7CisgICAgY2hhciBjb21tYW5kOworCisgICAgZG8geworCSh2b2lkKSBwdXRzKCJUaGlzIGlzIHRoZSBuY3Vyc2VzIG1haW4gbWVudSIpOworCSh2b2lkKSBwdXRzKCJhID0ga2V5Ym9hcmQgYW5kIG1vdXNlIGlucHV0IHRlc3QiKTsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCSh2b2lkKSBwdXRzKCJBID0gd2lkZS1jaGFyYWN0ZXIga2V5Ym9hcmQgYW5kIG1vdXNlIGlucHV0IHRlc3QiKTsKKyNlbmRpZgorCSh2b2lkKSBwdXRzKCJiID0gY2hhcmFjdGVyIGF0dHJpYnV0ZSB0ZXN0Iik7CisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKwkodm9pZCkgcHV0cygiQiA9IHdpZGUtY2hhcmFjdGVyIGF0dHJpYnV0ZSB0ZXN0Iik7CisjZW5kaWYKKwkodm9pZCkgcHV0cygiYyA9IGNvbG9yIHRlc3QgcGF0dGVybiIpOworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisJKHZvaWQpIHB1dHMoIkMgPSBjb2xvciB0ZXN0IHBhdHRlcm4gdXNpbmcgd2lkZS1jaGFyYWN0ZXIgY2FsbHMiKTsKKyNlbmRpZgorCWlmICh0b3ApCisJICAgICh2b2lkKSBwdXRzKCJkID0gZWRpdCBSR0IgY29sb3IgdmFsdWVzIik7CisjaWYgVVNFX1NPRlRLRVlTCisJKHZvaWQpIHB1dHMoImUgPSBleGVyY2lzZSBzb2Z0IGtleXMiKTsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCSh2b2lkKSBwdXRzKCJFID0gZXhlcmNpc2Ugc29mdCBrZXlzIHVzaW5nIHdpZGUtY2hhcmFjdGVycyIpOworI2VuZGlmCisjZW5kaWYKKwkodm9pZCkgcHV0cygiZiA9IGRpc3BsYXkgQUNTIGNoYXJhY3RlcnMiKTsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCSh2b2lkKSBwdXRzKCJGID0gZGlzcGxheSBXaWRlLUFDUyBjaGFyYWN0ZXJzIik7CisjZW5kaWYKKwkodm9pZCkgcHV0cygiZyA9IGRpc3BsYXkgd2luZG93cyBhbmQgc2Nyb2xsaW5nIik7CisJKHZvaWQpIHB1dHMoImkgPSB0ZXN0IG9mIGZsdXNoaW5wKCkiKTsKKwkodm9pZCkgcHV0cygiayA9IGRpc3BsYXkgY2hhcmFjdGVyIGF0dHJpYnV0ZXMiKTsKKyNpZiBVU0VfTElCTUVOVQorCSh2b2lkKSBwdXRzKCJtID0gbWVudSBjb2RlIHRlc3QiKTsKKyNlbmRpZgorI2lmIFVTRV9MSUJQQU5FTAorCSh2b2lkKSBwdXRzKCJvID0gZXhlcmNpc2UgcGFuZWxzIGxpYnJhcnkiKTsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCSh2b2lkKSBwdXRzKCJPID0gZXhlcmNpc2UgcGFuZWxzIHdpdGggd2lkZS1jaGFyYWN0ZXJzIik7CisjZW5kaWYKKyNlbmRpZgorCSh2b2lkKSBwdXRzKCJwID0gZXhlcmNpc2UgcGFkIGZlYXR1cmVzIik7CisJKHZvaWQpIHB1dHMoIlAgPSBleGVyY2lzZSBwYWQgZmVhdHVyZXMsIHVzaW5nIGNvbG9yIik7CisJKHZvaWQpIHB1dHMoInEgPSBxdWl0Iik7CisjaWYgVVNFX0xJQkZPUk0KKwkodm9pZCkgcHV0cygiciA9IGV4ZXJjaXNlIGZvcm1zIGNvZGUiKTsKKyNlbmRpZgorCSh2b2lkKSBwdXRzKCJzID0gb3ZlcmxhcHBpbmctcmVmcmVzaCB0ZXN0Iik7CisjaWYgVVNFX0xJQk1FTlUgJiYgZGVmaW5lZChUUkFDRSkKKwkodm9pZCkgcHV0cygidCA9IHNldCB0cmFjZSBsZXZlbCIpOworI2VuZGlmCisJKHZvaWQpIHB1dHMoIj8gPSByZXBlYXQgdGhpcyBjb21tYW5kIHN1bW1hcnkiKTsKKworCSh2b2lkKSBmcHV0cygiPiAiLCBzdGRvdXQpOworCSh2b2lkKSBmZmx1c2goc3Rkb3V0KTsJLyogbmVjZXNzYXJ5IHVuZGVyIFNWcjQgY3Vyc2VzICovCisKKwkvKgorCSAqIFRoaXMgdXNlZCB0byBiZSBhbiAnZmdldHMoKScgY2FsbCAodW50aWwgMTk5Ni8xMCkuICBIb3dldmVyIHdpdGgKKwkgKiBzb21lIHJ1bnRpbWUgbGlicmFyaWVzLCBtaXhpbmcgc3RyZWFtIEkvTyBhbmQgJ3JlYWQoKScgY2F1c2VzIHRoZQorCSAqIGlucHV0IHN0cmVhbSB0byBiZSBmbHVzaGVkIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gdGhlIHR3by4KKwkgKi8KKwljb21tYW5kID0gMDsKKwlmb3IgKDs7KSB7CisJICAgIGNoYXIgY2ggPSAnXDAnOworCSAgICBpZiAocmVhZChmaWxlbm8oc3RkaW4pLCAmY2gsIChzaXplX3QpIDEpIDw9IDApIHsKKwkJaWYgKGNvbW1hbmQgPT0gMCkKKwkJICAgIGNvbW1hbmQgPSAncSc7CisJCWJyZWFrOworCSAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gMCAmJiAhaXNzcGFjZShVQ2hhcihjaCkpKSB7CisJCWNvbW1hbmQgPSBjaDsKKwkgICAgfSBlbHNlIGlmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicpIHsKKwkJaWYgKChjb21tYW5kID09ICdkJykgJiYgIXRvcCkgeworCQkgICAgKHZvaWQpIGZwdXRzKCJEbyBub3QgbmVzdCB0ZXN0LWRcbiIsIHN0ZG91dCk7CisJCSAgICBjb21tYW5kID0gMDsKKwkJfQorCQlpZiAoY29tbWFuZCAhPSAwKQorCQkgICAgYnJlYWs7CisJCSh2b2lkKSBmcHV0cygiPiAiLCBzdGRvdXQpOworCQkodm9pZCkgZmZsdXNoKHN0ZG91dCk7CisJICAgIH0KKwl9CisKKwlpZiAoZG9fc2luZ2xlX3Rlc3QoY29tbWFuZCkpIHsKKwkgICAgLyoKKwkgICAgICogVGhpcyBtYXkgYmUgb3ZlcmtpbGw7IGl0J3MgaW50ZW5kZWQgdG8gcmVzZXQgZXZlcnl0aGluZyBiYWNrCisJICAgICAqIHRvIHRoZSBpbml0aWFsIHRlcm1pbmFsIG1vZGVzIHNvIHRoYXQgdGVzdHMgZG9uJ3QgZ2V0IGluCisJICAgICAqIGVhY2ggb3RoZXIncyB3YXkuCisJICAgICAqLworCSAgICBmbHVzaGlucCgpOworCSAgICBzZXRfdGVybWluYWxfbW9kZXMoKTsKKwkgICAgcmVzZXRfcHJvZ19tb2RlKCk7CisJICAgIGNsZWFyKCk7CisJICAgIHJlZnJlc2goKTsKKwkgICAgZW5kd2luKCk7CisJICAgIGlmIChjb21tYW5kID09ICc/JykgeworCQkodm9pZCkgcHV0cygiVGhpcyBpcyB0aGUgbmN1cnNlcyBjYXBhYmlsaXR5IHRlc3Rlci4iKTsKKwkJKHZvaWQpCisJCSAgICBwdXRzKCJZb3UgbWF5IHNlbGVjdCBhIHRlc3QgZnJvbSB0aGUgbWFpbiBtZW51IGJ5IHR5cGluZyB0aGUiKTsKKwkJKHZvaWQpCisJCSAgICBwdXRzKCJrZXkgbGV0dGVyIG9mIHRoZSBjaG9pY2UgKHRoZSBsZXR0ZXIgdG8gbGVmdCBvZiB0aGUgPSkiKTsKKwkJKHZvaWQpCisJCSAgICBwdXRzKCJhdCB0aGUgPiBwcm9tcHQuICBUeXBlIGBxJyB0byBleGl0LiIpOworCSAgICB9CisJICAgIGNvbnRpbnVlOworCX0KKyAgICB9IHdoaWxlCisJKGNvbW1hbmQgIT0gJ3EnKTsKK30KKworLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCW1haW4oYXJnYyxhcmd2KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIG9rQ09MT1IobikgKChuKSA+PSAwICYmIChuKSA8IG1heF9jb2xvcnMpCisjZGVmaW5lIG9rUkdCKG4pICAgKChuKSA+PSAwICYmIChuKSA8PSAxMDAwKQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgYzsKKyAgICBpbnQgbXlfZV9wYXJhbSA9IDE7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisgICAgaW50IGRlZmF1bHRfZmcgPSBDT0xPUl9XSElURTsKKyAgICBpbnQgZGVmYXVsdF9iZyA9IENPTE9SX0JMQUNLOworICAgIGJvb2wgYXNzdW1lZF9jb2xvcnMgPSBGQUxTRTsKKyAgICBib29sIGRlZmF1bHRfY29sb3JzID0gRkFMU0U7CisjZW5kaWYKKyAgICBjaGFyICpwYWxldHRlX2ZpbGUgPSAwOworICAgIGJvb2wgbW9ub2Nocm9tZSA9IEZBTFNFOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhOmRFZTpmaG1wOnM6VHQ6IikpICE9IC0xKSB7CisJc3dpdGNoIChjKSB7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJY2FzZSAnYSc6CisJICAgIGFzc3VtZWRfY29sb3JzID0gVFJVRTsKKwkgICAgc3dpdGNoIChzc2NhbmYob3B0YXJnLCAiJWQsJWQiLCAmZGVmYXVsdF9mZywgJmRlZmF1bHRfYmcpKSB7CisJICAgIGNhc2UgMDoKKwkJZGVmYXVsdF9mZyA9IENPTE9SX1dISVRFOworCQkvKiBGQUxMVEhSVSAqLworCSAgICBjYXNlIDE6CisJCWRlZmF1bHRfYmcgPSBDT0xPUl9CTEFDSzsKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnZCc6CisJICAgIGRlZmF1bHRfY29sb3JzID0gVFJVRTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKyNpZiBIQVZFX1VTRV9FTlYKKwljYXNlICdFJzoKKwkgICAgdXNlX2VudihGQUxTRSk7CisJICAgIGJyZWFrOworI2VuZGlmCisJY2FzZSAnZSc6CisJICAgIG15X2VfcGFyYW0gPSBhdG9pKG9wdGFyZyk7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OCisJICAgIGlmIChteV9lX3BhcmFtID4gMykJLyogYWxsb3cgZXh0ZW5kZWQgbGF5b3V0cyAqLworCQl1c2FnZSgpOworI2Vsc2UKKwkgICAgaWYgKG15X2VfcGFyYW0gPiAxKQorCQl1c2FnZSgpOworI2VuZGlmCisJICAgIGJyZWFrOworI2lmIEhBVkVfUklQT0ZGTElORQorCWNhc2UgJ2YnOgorCSAgICByaXBvZmZsaW5lKC0xLCByaXBfZm9vdGVyKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnaCc6CisJICAgIHJpcG9mZmxpbmUoMSwgcmlwX2hlYWRlcik7CisJICAgIGJyZWFrOworI2VuZGlmIC8qIEhBVkVfUklQT0ZGTElORSAqLworCWNhc2UgJ20nOgorCSAgICBtb25vY2hyb21lID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAncCc6CisJICAgIHBhbGV0dGVfZmlsZSA9IG9wdGFyZzsKKwkgICAgYnJlYWs7CisjaWYgVVNFX0xJQlBBTkVMCisJY2FzZSAncyc6CisJICAgIG5hcF9tc2VjID0gKGludCkgYXRvbChvcHRhcmcpOworCSAgICBicmVhazsKKyNlbmRpZgorI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OX1BBVENIKSAmJiAoTkNVUlNFU19WRVJTSU9OX1BBVENIID49IDIwMTIwNzE0KSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKKwljYXNlICdUJzoKKwkgICAgdXNlX3Rpb2N0bChUUlVFKTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBUUkFDRQorCWNhc2UgJ3QnOgorCSAgICBzYXZlX3RyYWNlID0gKHVuc2lnbmVkKSBzdHJ0b2wob3B0YXJnLCAwLCAwKTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIHRoZXJlJ3Mgbm8gbWVudXMgKHVubGlrZWx5IGZvciBuY3Vyc2VzISksIHRoZW4gd2UnbGwgaGF2ZSB0byBzZXQKKyAgICAgKiB0cmFjaW5nIG9uIGluaXRpYWxseSwganVzdCBpbiBjYXNlIHRoZSB1c2VyIHdhbnRzIHRvIHRlc3Qgc29tZXRoaW5nIHRoYXQKKyAgICAgKiBkb2Vzbid0IGludm9sdmUgd0dldGNoYXIuCisgICAgICovCisjaWZkZWYgVFJBQ0UKKyAgICAvKiBlbmFibGUgZGVidWdnaW5nICovCisjaWYgIVVTRV9MSUJNRU5VCisgICAgdHJhY2Uoc2F2ZV90cmFjZSk7CisjZWxzZQorICAgIGlmICghaXNhdHR5KGZpbGVubyhzdGRpbikpKQorCXRyYWNlKHNhdmVfdHJhY2UpOworI2VuZGlmIC8qIFVTRV9MSUJNRU5VICovCisjZW5kaWYgLyogVFJBQ0UgKi8KKworI2lmIFVTRV9TT0ZUS0VZUworICAgIC8qIHRlbGwgaXQgd2UncmUgZ29pbmcgdG8gcGxheSB3aXRoIHNvZnQga2V5cyAqLworICAgIHNsa19pbml0KG15X2VfcGFyYW0pOworI2VuZGlmCisKKyNpZmRlZiBTSUdVU1IxCisgICAgLyogc2V0IHVwIG51bGwgc2lnbmFsIGNhdGNoZXIgc28gd2UgY2FuIHNlZSB3aGF0IGludGVycnVwdHMgdG8gZ2V0Y2ggZG8gKi8KKyAgICBzaWduYWwoU0lHVVNSMSwgYW5ub3VuY2Vfc2lnKTsKKyNlbmRpZgorCisgICAgLyogd2UgbXVzdCBpbml0aWFsaXplIHRoZSBjdXJzZXMgZGF0YSBzdHJ1Y3R1cmUgb25seSBvbmNlICovCisgICAgaW5pdHNjcigpOworICAgIGJrZ2RzZXQoQkxBTkspOworCisgICAgLyogdGVzdHMsIGluIGdlbmVyYWwsIHdpbGwgd2FudCB0aGVzZSBtb2RlcyAqLworICAgIHVzZV9jb2xvcnMgPSAoYm9vbCkgKG1vbm9jaHJvbWUgPyBGQUxTRSA6IGhhc19jb2xvcnMoKSk7CisKKyAgICBpZiAodXNlX2NvbG9ycykgeworCXN0YXJ0X2NvbG9yKCk7CisjaWZkZWYgTkNVUlNFU19WRVJTSU9OX1BBVENICisJbWF4X2NvbG9ycyA9IENPTE9SUzsJLyogd2FzID4gMTYgPyAxNiA6IENPTE9SUyAqLworI2lmIEhBVkVfVVNFX0RFRkFVTFRfQ09MT1JTCisJaWYgKGRlZmF1bHRfY29sb3JzKSB7CisJICAgIHVzZV9kZWZhdWx0X2NvbG9ycygpOworCSAgICBtaW5fY29sb3JzID0gLTE7CisJfQorI2lmIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCisJaWYgKGFzc3VtZWRfY29sb3JzKQorCSAgICBhc3N1bWVfZGVmYXVsdF9jb2xvcnMoZGVmYXVsdF9mZywgZGVmYXVsdF9iZyk7CisjZW5kaWYKKyNlbmRpZgorI2Vsc2UgLyogbm9ybWFsIFNWcjQgY3Vyc2VzICovCisJbWF4X2NvbG9ycyA9IENPTE9SUzsJLyogd2FzID4gOCA/IDggOiBDT0xPUlMgKi8KKyNlbmRpZgorCW1heF9wYWlycyA9IENPTE9SX1BBSVJTOwkvKiB3YXMgPiAyNTYgPyAyNTYgOiBDT0xPUl9QQUlSUyAqLworCisJaWYgKGNhbl9jaGFuZ2VfY29sb3IoKSkgeworCSAgICBOQ1VSU0VTX1BBSVJTX1QgY3A7CisJICAgIGFsbF9jb2xvcnMgPSB0eXBlTWFsbG9jKFJHQl9EQVRBLCAodW5zaWduZWQpIG1heF9jb2xvcnMpOworCSAgICBpZiAoIWFsbF9jb2xvcnMpCisJCWZhaWxlZCgiYWxsX2NvbG9ycyIpOworCSAgICBmb3IgKGNwID0gMDsgY3AgPCBtYXhfY29sb3JzOyArK2NwKSB7CisJCWNvbG9yX2NvbnRlbnQoY3AsCisJCQkgICAgICAmYWxsX2NvbG9yc1tjcF0ucmVkLAorCQkJICAgICAgJmFsbF9jb2xvcnNbY3BdLmdyZWVuLAorCQkJICAgICAgJmFsbF9jb2xvcnNbY3BdLmJsdWUpOworCSAgICB9CisJICAgIGlmIChwYWxldHRlX2ZpbGUgIT0gMCkgeworCQlGSUxFICpmcCA9IGZvcGVuKHBhbGV0dGVfZmlsZSwgInIiKTsKKwkJaWYgKGZwICE9IDApIHsKKwkJICAgIGNoYXIgYnVmZmVyW0JVRlNJWl07CisJCSAgICBpbnQgcmVkLCBncmVlbiwgYmx1ZTsKKwkJICAgIGludCBzY2FsZSA9IDEwMDA7CisJCSAgICB3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZnApICE9IDApIHsKKwkJCWlmIChzc2NhbmYoYnVmZmVyLCAic2NhbGU6JWQiLCAmYykgPT0gMSkgeworCQkJICAgIHNjYWxlID0gYzsKKwkJCX0gZWxzZSBpZiAoc3NjYW5mKGJ1ZmZlciwgIiVkOiVkICVkICVkIiwKKwkJCQkJICAmYywKKwkJCQkJICAmcmVkLAorCQkJCQkgICZncmVlbiwKKwkJCQkJICAmYmx1ZSkgPT0gNAorCQkJCSAgICYmIG9rQ09MT1IoYykKKwkJCQkgICAmJiBva1JHQihyZWQpCisJCQkJICAgJiYgb2tSR0IoZ3JlZW4pCisJCQkJICAgJiYgb2tSR0IoYmx1ZSkpIHsKKyNkZWZpbmUgU2NhbGVkKG4pIChOQ1VSU0VTX0NPTE9SX1QpICgoKG4pICogMTAwMCkgLyBzY2FsZSkKKwkJCSAgICBhbGxfY29sb3JzW2NdLnJlZCA9IFNjYWxlZChyZWQpOworCQkJICAgIGFsbF9jb2xvcnNbY10uZ3JlZW4gPSBTY2FsZWQoZ3JlZW4pOworCQkJICAgIGFsbF9jb2xvcnNbY10uYmx1ZSA9IFNjYWxlZChibHVlKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGZjbG9zZShmcCk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9CisgICAgc2V0X3Rlcm1pbmFsX21vZGVzKCk7CisgICAgZGVmX3Byb2dfbW9kZSgpOworCisgICAgLyoKKyAgICAgKiBSZXR1cm4gdG8gdGVybWluYWwgbW9kZSwgc28gd2UncmUgZ3VhcmFudGVlZCBvZiBiZWluZyBhYmxlIHRvCisgICAgICogc2VsZWN0IHRlcm1pbmFsIGNvbW1hbmRzIGV2ZW4gaWYgdGhlIGNhcGFiaWxpdGllcyBhcmUgd3JvbmcuCisgICAgICovCisgICAgZW5kd2luKCk7CisKKyNpZiBIQVZFX0NVUlNFU19WRVJTSU9OCisgICAgKHZvaWQpIHByaW50ZigiV2VsY29tZSB0byAlcy4gIFByZXNzID8gZm9yIGhlbHAuXG4iLCBjdXJzZXNfdmVyc2lvbigpKTsKKyNlbGlmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OX01BSk9SKSAmJiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTl9NSU5PUikgJiYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpCisgICAgKHZvaWQpIHByaW50ZigiV2VsY29tZSB0byBuY3Vyc2VzICVkLiVkLiVkLiAgUHJlc3MgPyBmb3IgaGVscC5cbiIsCisJCSAgTkNVUlNFU19WRVJTSU9OX01BSk9SLAorCQkgIE5DVVJTRVNfVkVSU0lPTl9NSU5PUiwKKwkJICBOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpOworI2Vsc2UKKyAgICAodm9pZCkgcHV0cygiV2VsY29tZSB0byBuY3Vyc2VzLiAgUHJlc3MgPyBmb3IgaGVscC4iKTsKKyNlbmRpZgorCisgICAgbWFpbl9tZW51KFRSVUUpOworCisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworLyogbmN1cnNlcy5jIGVuZHMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvdGVzdC9uY3Vyc2VzX3RzdC5oaW4gYi90ZXN0L25jdXJzZXNfdHN0LmhpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDc3Y2JkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9uY3Vyc2VzX3RzdC5oaW4KQEAgLTAsMCArMSw1NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IDE5OTggICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IG5jdXJzZXNfdHN0Lmhpbix2IDEuMiAxOTk4LzAyLzExIDEyOjE0OjA1IHRvbSBFeHAgJAorICoKKyAqIFRoaXMgaXMgYSB0ZW1wbGF0ZS1maWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlICJuY3Vyc2VzX2NmZy5oIiBmaWxlLgorICoKKyAqIFJhdGhlciB0aGFuIGxpc3QgZXZlcnkgZGVmaW5pdGlvbiwgdGhlIGNvbmZpZ3VyYXRpb24gc2NyaXB0IHN1YnN0aXR1dGVzCisgKiB0aGUgZGVmaW5pdGlvbnMgdGhhdCBpdCBmaW5kcyB1c2luZyAnc2VkJy4gIFlvdSBuZWVkIGEgcGF0Y2ggKDk3MTIyMikKKyAqIHRvIGF1dG9jb25mIDIuMTIgdG8gZG8gdGhpcy4KKyAqLworI2lmbmRlZiBOQ19DT05GSUdfSAorI2RlZmluZSBOQ19DT05GSUdfSAorQERFRlNACisKKwkvKiBUaGUgQyBjb21waWxlciBtYXkgbm90IHRyZWF0IHRoZXNlIHByb3Blcmx5IGJ1dCBDKysgaGFzIHRvICovCisjaWZkZWYgX19jcGx1c3BsdXMKKyN1bmRlZiBjb25zdAorI3VuZGVmIGlubGluZQorI2Vsc2UKKyNpZiBkZWZpbmVkKGxpbnQpIHx8IGRlZmluZWQoVFJBQ0UpCisjdW5kZWYgaW5saW5lCisjZGVmaW5lIGlubGluZSAvKiBub3RoaW5nICovCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogTkNfQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL3Rlc3QvbmV3ZGVtby5jIGIvdGVzdC9uZXdkZW1vLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliNmY4MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbmV3ZGVtby5jCkBAIC0wLDAgKzEsMzY1IEBACisvKgorICogIG5ld2RlbW8uYwktCUEgZGVtbyBwcm9ncmFtIHVzaW5nIFBEQ3Vyc2VzLiBUaGUgcHJvZ3JhbSBpbGx1c3RyYXRlCisgKiAgCSAJCXRoZSB1c2Ugb2YgY29sb3VycyBmb3IgdGV4dCBvdXRwdXQuCisgKgorICogJElkOiBuZXdkZW1vLmMsdiAxLjQxIDIwMTQvMDgvMDIgMjM6MTA6NTYgdG9tIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaW5jbHVkZSA8dGltZS5oPgorCisvKgorICogIFRoZSBBdXN0cmFsaWFuIG1hcAorICovCitzdGF0aWMgQ09OU1RfTUVOVVMgY2hhciAqQXVzTWFwWzE2XSA9Cit7CisgICAgIiAgICAgICAgICAgQSAgICAgICAgICAgQSAiLAorICAgICIgICAgTi5ULiBBQUFBQSAgICAgICBBQUFBICIsCisgICAgIiAgICAgQUFBQUFBQUFBQUEgIEFBQUFBQUFBICIsCisgICAgIiAgIEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEgUWxkLiIsCisgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBICIsCisgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSAiLAorICAgICIgQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSAiLAorICAgICIgICBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIE4uUy5XLiIsCisgICAgIlcuQS4gQUFBQUFBQUFBICAgICAgQUFBQUFBIFZpYy4iLAorICAgICIgICAgICAgQUFBICAgUy5BLiAgICAgQUEiLAorICAgICIgICAgICAgICAgICAgICAgICAgICAgIEEgIFRhcy4iLAorICAgICIiCit9OworCisvKgorICogIEZ1bm55IG1lc3NhZ2VzCisgKi8KKyNkZWZpbmUgTk1FU1NBR0VTICAgNgorCitzdGF0aWMgY29uc3QgY2hhciAqbWVzc2FnZXNbXSA9Cit7CisgICAgIkhlbGxvIGZyb20gdGhlIExhbmQgRG93biBVbmRlciIsCisgICAgIlRoZSBMYW5kIG9mIGNyb2NzLiBhbmQgYSBiaWcgUmVkIFJvY2siLAorICAgICJXaGVyZSB0aGUgc3VuZmxvd2VyIHJ1bnMgYWxvbmcgdGhlIGhpZ2h3YXlzIiwKKyAgICAidGhlIGR1c3R5IHJlZCByb2FkcyBsZWFkIG9uZSB0byBsb25lbGluZXNzIiwKKyAgICAiQmx1ZSBza3kgaW4gdGhlIG1vcm5pbmcgYW5kIiwKKyAgICAiZnJlZXppbmcgbmlnaHRzIGFuZCB0d2lua2xpbmcgc3RhcnMiLAorICAgICIiCit9OworCisvKgorICogIFRyYXAgaW50ZXJydXB0CisgKi8KK3N0YXRpYyB2b2lkCit0cmFwKGludCBzaWcgR0NDX1VOVVNFRCkKK3sKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCisvKgorICogIFdhaXQgZm9yIHVzZXIKKyAqLworc3RhdGljIGludAorV2FpdEZvclVzZXIoV0lORE9XICp3aW4pCit7CisgICAgdGltZV90IHQ7CisgICAgY2h0eXBlIGtleTsKKworICAgIG5vZGVsYXkod2luLCBUUlVFKTsKKyAgICB0ID0gdGltZSgodGltZV90ICopIDApOworICAgIHdoaWxlICgxKSB7CisJaWYgKChpbnQpIChrZXkgPSAoY2h0eXBlKSB3Z2V0Y2god2luKSkgIT0gRVJSKSB7CisJICAgIGlmIChrZXkgPT0gJ3EnIHx8IGtleSA9PSAnUScpCisJCXJldHVybiAxOworCSAgICBlbHNlCisJCXJldHVybiAwOworCX0KKwlpZiAodGltZSgodGltZV90ICopIDApIC0gdCA+IDUpCisJICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3NldF9jb2xvcnMoV0lORE9XICp3aW4sIGludCBwYWlyLCBpbnQgZm9yZWdyb3VuZCwgaW50IGJhY2tncm91bmQpCit7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWlmIChwYWlyID4gQ09MT1JfUEFJUlMpCisJICAgIHBhaXIgPSBDT0xPUl9QQUlSUzsKKwlpbml0X3BhaXIoKHNob3J0KSBwYWlyLCAoc2hvcnQpIGZvcmVncm91bmQsIChzaG9ydCkgYmFja2dyb3VuZCk7CisJKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhDT0xPUl9QQUlSKHBhaXIpLCAwKSk7CisgICAgfQorfQorCitzdGF0aWMgY2h0eXBlCit1c2VfY29sb3JzKFdJTkRPVyAqd2luLCBpbnQgcGFpciwgY2h0eXBlIGF0dHJzKQoreworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwlpZiAocGFpciA+IENPTE9SX1BBSVJTKQorCSAgICBwYWlyID0gQ09MT1JfUEFJUlM7CisJYXR0cnMgfD0gKGNodHlwZSkgQ09MT1JfUEFJUihwYWlyKTsKKyAgICB9CisgICAgKHZvaWQpIHdhdHRyc2V0KHdpbiwgQXR0ckFyZyhhdHRycywgMCkpOworICAgIHJldHVybiBhdHRyczsKK30KKworLyoKKyAqIFRlc3Qgc3ViIHdpbmRvd3MKKyAqLworc3RhdGljIGludAorU3ViV2luVGVzdChXSU5ET1cgKndpbikKK3sKKyAgICBpbnQgdywgaCwgc3csIHNoLCBieCwgYnk7CisgICAgV0lORE9XICpzd2luMSwgKnN3aW4yLCAqc3dpbjM7CisKKyAgICBnZXRtYXh5eCh3aW4sIGgsIHcpOworICAgIGdldGJlZ3l4KHdpbiwgYnksIGJ4KTsKKyAgICBzdyA9IHcgLyAzOworICAgIHNoID0gaCAvIDM7CisKKyAgICBpZiAoKHN3aW4xID0gc3Vid2luKHdpbiwgc2gsIHN3LCBieSArIDMsIGJ4ICsgNSkpID09IE5VTEwpIHsKKwlyZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKChzd2luMiA9IHN1Yndpbih3aW4sIHNoLCBzdywgYnkgKyA0LCBieCArIDgpKSA9PSBOVUxMKSB7CisJZGVsd2luKHN3aW4xKTsKKwlyZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKChzd2luMyA9IHN1Yndpbih3aW4sIHNoLCBzdywgYnkgKyA1LCBieCArIDExKSkgPT0gTlVMTCkgeworCWRlbHdpbihzd2luMSk7CisJZGVsd2luKHN3aW4yKTsKKwlyZXR1cm4gMTsKKyAgICB9CisKKyAgICBzZXRfY29sb3JzKHN3aW4xLCA4LCBDT0xPUl9SRUQsIENPTE9SX0JMVUUpOworICAgIHdlcmFzZShzd2luMSk7CisgICAgTXZXQWRkU3RyKHN3aW4xLCAwLCAzLCAiU3ViLXdpbmRvdyAxIik7CisgICAgd3JlZnJlc2goc3dpbjEpOworCisgICAgc2V0X2NvbG9ycyhzd2luMiwgOSwgQ09MT1JfQ1lBTiwgQ09MT1JfTUFHRU5UQSk7CisgICAgd2VyYXNlKHN3aW4yKTsKKyAgICBNdldBZGRTdHIoc3dpbjIsIDAsIDMsICJTdWItd2luZG93IDIiKTsKKyAgICB3cmVmcmVzaChzd2luMik7CisKKyAgICBzZXRfY29sb3JzKHN3aW4zLCAxMCwgQ09MT1JfWUVMTE9XLCBDT0xPUl9HUkVFTik7CisgICAgd2VyYXNlKHN3aW4zKTsKKyAgICBNdldBZGRTdHIoc3dpbjMsIDAsIDMsICJTdWItd2luZG93IDMiKTsKKyAgICB3cmVmcmVzaChzd2luMyk7CisKKyAgICBkZWx3aW4oc3dpbjEpOworICAgIGRlbHdpbihzd2luMik7CisgICAgZGVsd2luKHN3aW4zKTsKKyAgICBXYWl0Rm9yVXNlcih3aW4pOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citib3VuY2UoaW50IG4sIGludCAqZGlyLCBpbnQgbGVuKQoreworICAgIGlmICgqZGlyID4gMCkKKwkrK247CisgICAgZWxzZQorCS0tbjsKKyAgICBpZiAobiA8PSAxIHx8IG4gPj0gbGVuIC0gMikKKwkqZGlyID0gKmRpciA/IDAgOiAxOworICAgIHJldHVybiBuOworfQorCisvKgorICogIEJvdW5jaW5nIGJhbGxzCisgKi8KK3N0YXRpYyBpbnQKK0JvdW5jaW5nQmFsbHMoV0lORE9XICp3aW4pCit7CisgICAgaW50IHcsIGg7CisgICAgaW50IHgxLCB5MSwgeGQxLCB5ZDE7CisgICAgaW50IHgyLCB5MiwgeGQyLCB5ZDI7CisgICAgaW50IHgzLCB5MywgeGQzLCB5ZDM7CisKKyAgICBnZXRtYXh5eCh3aW4sIGgsIHcpOworCisgICAgeDEgPSAyICsgcmFuZCgpICUgKHcgLSA0KTsKKyAgICB5MSA9IDIgKyByYW5kKCkgJSAoaCAtIDQpOworICAgIHgyID0gMiArIHJhbmQoKSAlICh3IC0gNCk7CisgICAgeTIgPSAyICsgcmFuZCgpICUgKGggLSA0KTsKKyAgICB4MyA9IDIgKyByYW5kKCkgJSAodyAtIDQpOworICAgIHkzID0gMiArIHJhbmQoKSAlIChoIC0gNCk7CisKKyAgICB4ZDEgPSAxOworICAgIHlkMSA9IDE7CisgICAgeGQyID0gMTsKKyAgICB5ZDIgPSAwOworICAgIHhkMyA9IDA7CisgICAgeWQzID0gMTsKKworICAgIG5vZGVsYXkod2luLCBUUlVFKTsKKworICAgIHdoaWxlICh3Z2V0Y2god2luKSA9PSBFUlIpIHsKKwl4MSA9IGJvdW5jZSh4MSwgJnhkMSwgdyk7CisJeTEgPSBib3VuY2UoeTEsICZ5ZDEsIGgpOworCXgyID0gYm91bmNlKHgyLCAmeGQyLCB3KTsKKwl5MiA9IGJvdW5jZSh5MiwgJnlkMiwgaCk7CisJeDMgPSBib3VuY2UoeDMsICZ4ZDMsIHcpOworCXkzID0gYm91bmNlKHkzLCAmeWQzLCBoKTsKKworCXNldF9jb2xvcnMod2luLCAxMSwgQ09MT1JfUkVELCBDT0xPUl9CTFVFKTsKKwlNdldBZGRDaCh3aW4sIHkxLCB4MSwgJ08nKTsKKworCXNldF9jb2xvcnMod2luLCAxMiwgQ09MT1JfQkxVRSwgQ09MT1JfUkVEKTsKKwlNdldBZGRDaCh3aW4sIHkyLCB4MiwgJyonKTsKKworCXNldF9jb2xvcnMod2luLCAxMywgQ09MT1JfWUVMTE9XLCBDT0xPUl9XSElURSk7CisJTXZXQWRkQ2god2luLCB5MywgeDMsICdAJyk7CisKKwl3bW92ZSh3aW4sIDAsIDApOworCXdyZWZyZXNoKHdpbik7CisJZGVsYXlfb3V0cHV0KDEwMCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogIE1haW4gZHJpdmVyCisgKi8KK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIFdJTkRPVyAqd2luOworICAgIGludCB3LCB4LCB5LCBpLCBqLCBrOworICAgIGNoYXIgYnVmZmVyW1NJWkVPRihtZXNzYWdlcykgKiA4MF07CisgICAgY29uc3QgY2hhciAqbWVzc2FnZTsKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBjaHR5cGUgc2F2ZVs4MF07CisgICAgY2h0eXBlIGM7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBDQVRDSEFMTCh0cmFwKTsKKworICAgIGluaXRzY3IoKTsKKyAgICBpZiAoaGFzX2NvbG9ycygpKQorCXN0YXJ0X2NvbG9yKCk7CisgICAgY2JyZWFrKCk7CisgICAgY3Vyc19zZXQoMCk7CisgICAgd2lkdGggPSA0ODsKKyAgICBoZWlnaHQgPSAxNDsJCS8qIENyZWF0ZSBhIGRyYXdpbmcgd2luZG93ICovCisgICAgd2luID0gbmV3d2luKGhlaWdodCwgd2lkdGgsIChMSU5FUyAtIGhlaWdodCkgLyAyLCAoQ09MUyAtIHdpZHRoKSAvIDIpOworICAgIGlmICh3aW4gPT0gTlVMTCkgeworCWVuZHdpbigpOworCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKwlzZXRfY29sb3JzKHdpbiwgMSwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworCXdlcmFzZSh3aW4pOworCisJc2V0X2NvbG9ycyh3aW4sIDIsIENPTE9SX1JFRCwgQ09MT1JfUkVEKTsKKwlib3god2luLCBBQ1NfVkxJTkUsIEFDU19ITElORSk7CisJd3JlZnJlc2god2luKTsKKwkvKiBEbyByYW1kb20gb3V0cHV0IG9mIGEgY2hhcmFjdGVyICovCisJdXNlX2NvbG9ycyh3aW4sIDEsIEFfTk9STUFMKTsKKwljID0gJ2EnOworCWZvciAoaSA9IDA7IGkgPCA1MDAwOyArK2kpIHsKKwkgICAgeCA9IHJhbmQoKSAlICh3aWR0aCAtIDIpICsgMTsKKwkgICAgeSA9IHJhbmQoKSAlIChoZWlnaHQgLSAyKSArIDE7CisJICAgIE12V0FkZENoKHdpbiwgeSwgeCwgYyk7CisJICAgIHdyZWZyZXNoKHdpbik7CisJICAgIG5vZGVsYXkod2luLCBUUlVFKTsKKwkgICAgaWYgKHdnZXRjaCh3aW4pICE9IEVSUikKKwkJYnJlYWs7CisJICAgIGlmIChpID09IDIwMDApIHsKKwkJYyA9ICdiJzsKKwkJc2V0X2NvbG9ycyh3aW4sIDMsIENPTE9SX0NZQU4sIENPTE9SX1lFTExPVyk7CisJICAgIH0KKwl9CisKKwlTdWJXaW5UZXN0KHdpbik7CisJLyogRXJhc2UgYW5kIGRyYXcgZ3JlZW4gd2luZG93ICovCisJc2V0X2NvbG9ycyh3aW4sIDQsIENPTE9SX1lFTExPVywgQ09MT1JfR1JFRU4pOworCXdia2dkKHdpbiwgdXNlX2NvbG9ycyh3aW4sIDQsIEFfQk9MRCkpOworCXdlcmFzZSh3aW4pOworCXdyZWZyZXNoKHdpbik7CisJLyogRHJhdyBSRUQgYm91bmRpbmcgYm94ICovCisJdXNlX2NvbG9ycyh3aW4sIDIsIEFfTk9STUFMKTsKKwlib3god2luLCAnICcsICcgJyk7CisJd3JlZnJlc2god2luKTsKKwkvKiBEaXNwbGF5IEF1c3RyYWxpYSBtYXAgKi8KKwl1c2VfY29sb3JzKHdpbiwgNCwgQV9CT0xEKTsKKwlpID0gMDsKKwl3aGlsZSAoKkF1c01hcFtpXSkgeworCSAgICBNdldBZGRTdHIod2luLCBpICsgMSwgOCwgQXVzTWFwW2ldKTsKKwkgICAgd3JlZnJlc2god2luKTsKKwkgICAgZGVsYXlfb3V0cHV0KDUwKTsKKwkgICAgKytpOworCX0KKworCXNldF9jb2xvcnMod2luLCA1LCBDT0xPUl9CTFVFLCBDT0xPUl9XSElURSk7CisJdXNlX2NvbG9ycyh3aW4sIDUsIEFfQkxJTkspOworCU12V0FkZFN0cih3aW4sIGhlaWdodCAtIDIsIDYsICIgUERDdXJzZXMgMi4xIGZvciBET1MsIE9TLzIgYW5kIFVuaXgiKTsKKwl3cmVmcmVzaCh3aW4pOworCisJLyogRHJhdyBydW5uaW5nIG1lc3NhZ2VzICovCisJc2V0X2NvbG9ycyh3aW4sIDYsIENPTE9SX1lFTExPVywgQ09MT1JfV0hJVEUpOworCW1lc3NhZ2UgPSBtZXNzYWdlc1tqID0gMF07CisJaSA9IDE7CisJdyA9IHdpZHRoIC0gMjsKKwlzdHJjcHkoYnVmZmVyLCBtZXNzYWdlKTsKKwl3aGlsZSAoaiA8IE5NRVNTQUdFUykgeworCSAgICB3aGlsZSAoKGludCkgc3RybGVuKGJ1ZmZlcikgPCB3KSB7CisJCXN0cmNhdChidWZmZXIsICIgLi4uICIpOworCQlzdHJjYXQoYnVmZmVyLCBtZXNzYWdlc1srK2ogJSBOTUVTU0FHRVNdKTsKKwkgICAgfQorCisJICAgIGlmIChpIDwgdykKKwkJKHZvaWQpIG12d2FkZG5zdHIod2luLCBoZWlnaHQgLyAyLCB3IC0gaSwgYnVmZmVyLCBpKTsKKwkgICAgZWxzZQorCQkodm9pZCkgbXZ3YWRkbnN0cih3aW4sIGhlaWdodCAvIDIsIDEsIGJ1ZmZlciwgdyk7CisKKwkgICAgd3JlZnJlc2god2luKTsKKwkgICAgbm9kZWxheSh3aW4sIFRSVUUpOworCSAgICBpZiAod2dldGNoKHdpbikgIT0gRVJSKSB7CisJCWZsdXNoaW5wKCk7CisJCWJyZWFrOworCSAgICB9CisJICAgIGlmIChpKysgPj0gdykgeworCQlmb3IgKGsgPSAwOyAoYnVmZmVyW2tdID0gYnVmZmVyW2sgKyAxXSkgIT0gJ1wwJzsgaysrKSA7CisJICAgIH0KKwkgICAgZGVsYXlfb3V0cHV0KDEwMCk7CisJfQorCisJaiA9IDA7CisJLyogIERyYXcgcnVubmluZyBBcyBhY3Jvc3MgaW4gUkVEICovCisJc2V0X2NvbG9ycyh3aW4sIDcsIENPTE9SX1JFRCwgQ09MT1JfR1JFRU4pOworCW1lbXNldChzYXZlLCAnICcsIHNpemVvZihzYXZlKSk7CisJZm9yIChpID0gMjsgaSA8IHdpZHRoIC0gNDsgKytpKSB7CisJICAgIGsgPSAoaW50KSBtdndpbmNoKHdpbiwgNCwgaSk7CisJICAgIGlmIChrID09IEVSUikKKwkJYnJlYWs7CisJICAgIHNhdmVbaisrXSA9IGMgPSAoY2h0eXBlKSBrOworCSAgICBjICY9IEFfQ0hBUlRFWFQ7CisJICAgIE12V0FkZENoKHdpbiwgNCwgaSwgYyk7CisJfQorCXdyZWZyZXNoKHdpbik7CisKKwkvKiBQdXQgYSBtZXNzYWdlIHVwIHdhaXQgZm9yIGEga2V5ICovCisJaSA9IGhlaWdodCAtIDI7CisJdXNlX2NvbG9ycyh3aW4sIDUsIEFfTk9STUFMKTsKKwlNdldBZGRTdHIod2luLCBpLCA1LCAiIFR5cGUgYSBrZXkgdG8gY29udGludWUgb3IgJ1EnIHRvIHF1aXQgIik7CisJd3JlZnJlc2god2luKTsKKworCWlmIChXYWl0Rm9yVXNlcih3aW4pID09IDEpCisJICAgIGJyZWFrOworCisJaiA9IDA7CQkJLyogUmVzdG9yZSB0aGUgb2xkIGxpbmUgKi8KKwlmb3IgKGkgPSAyOyBpIDwgd2lkdGggLSA0OyArK2kpCisJICAgIE12V0FkZENoKHdpbiwgNCwgaSwgc2F2ZVtqKytdKTsKKwl3cmVmcmVzaCh3aW4pOworCisJQm91bmNpbmdCYWxscyh3aW4pOworCS8qIFB1dCBhIG1lc3NhZ2UgdXAgd2FpdCBmb3IgYSBrZXkgKi8KKwlpID0gaGVpZ2h0IC0gMjsKKwl1c2VfY29sb3JzKHdpbiwgNSwgQV9OT1JNQUwpOworCU12V0FkZFN0cih3aW4sIGksIDUsICIgVHlwZSBhIGtleSB0byBjb250aW51ZSBvciAnUScgdG8gcXVpdCAiKTsKKwl3cmVmcmVzaCh3aW4pOworCWlmIChXYWl0Rm9yVXNlcih3aW4pID09IDEpCisJICAgIGJyZWFrOworICAgIH0KKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb21wYXQgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvbXBhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ2ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb21wYXQKQEAgLTAsMCArMSBAQAorNQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb250cm9sIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YmI0NzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L2NvbnRyb2wKQEAgLTAsMCArMSwxOCBAQAorU291cmNlOiBuY3Vyc2VzLWV4YW1wbGVzCitNYWludGFpbmVyOiBUaG9tYXMgRS4gRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CitTZWN0aW9uOiBtaXNjCitQcmlvcml0eTogb3B0aW9uYWwKK1N0YW5kYXJkcy1WZXJzaW9uOiAzLjguNAorQnVpbGQtRGVwZW5kczogZGViaGVscGVyICg+PSA1KQorSG9tZXBhZ2U6IGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorCitQYWNrYWdlOiBtaW5ndzMyLW5jdXJzZXMtZXhhbXBsZXMKK0FyY2hpdGVjdHVyZTogYW55CitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitEZXNjcmlwdGlvbjogbmN1cnNlcy1leGFtcGxlcyAtIGV4YW1wbGUvdGVzdCBwcm9ncmFtcyBmcm9tIG5jdXJzZXMKKyBUaGVzZSBhcmUgdGhlIGV4YW1wbGUvdGVzdCBwcm9ncmFtcyBmcm9tIHRoZSBuY3Vyc2VzIGRpc3RyaWJ1dGlvbi4KKyAuCisgVGhpcyBwYWNrYWdlIGlzIHVzZWQgZm9yIHRlc3RpbmcgQUJJIDYgd2l0aCB0aGUgTWluR1cgMzItYml0IHBvcnQuCisgLgorIFRoaXMgcGFja2FnZSBpbnN0YWxscyBpbiAiYmluL25jdXJzZXMtZXhhbXBsZXMiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb3RoZXIKKyBwYWNrYWdlcy4KZGlmZiAtLWdpdCBhL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29weXJpZ2h0IGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExZmRmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvY29weXJpZ2h0CkBAIC0wLDAgKzEsNzggQEAKK1Vwc3RyZWFtIHNvdXJjZSBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWV4YW1wbGVzLmh0bWwKKworQ3VycmVudCBuY3Vyc2VzIG1haW50YWluZXI6IFRob21hcyBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6ICoKK0NvcHlyaWdodDogMTk5OC0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitMaWNlbmNlOiBYMTEKKworRmlsZXM6IGFjbG9jYWwubTQgcGFja2FnZQorQ29weXJpZ2h0OiAyMDAzLTIwMTQsMjAxNSBieSBUaG9tYXMgRS4gRGlja2V5CitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgICAgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICAgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAgICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgICAgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgICAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgorICAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgorICAgIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlCisgICAgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuCisgICAgYXV0aG9yaXphdGlvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlsZXM6IGluc3RhbGwtc2gKK0NvcHlyaWdodDogIDE5OTQgWCBDb25zb3J0aXVtCitMaWNlbmNlOiBYMTEKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAgICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAgICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICAgIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICAgIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgICAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICAgIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAgICBYIENPTlNPUlRJVU0gQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOCisgICAgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDLQorICAgIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKyAgICBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiB0aGUgWCBDb25zb3J0aXVtIHNoYWxsIG5vdAorICAgIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorICAgIGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBYIENvbnNvci0KKyAgICB0aXVtLgorCisgICAgRlNGIGNoYW5nZXMgdG8gdGhpcyBmaWxlIGFyZSBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworICAgIENhbGxpbmcgdGhpcyBzY3JpcHQgaW5zdGFsbC1zaCBpcyBwcmVmZXJyZWQgb3ZlciBpbnN0YWxsLnNoLCB0byBwcmV2ZW50CisgICAgYG1ha2UnIGltcGxpY2l0IHJ1bGVzIGZyb20gY3JlYXRpbmcgYSBmaWxlIGNhbGxlZCBpbnN0YWxsIGZyb20gaXQKKyAgICB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgorCisgICAgVGhpcyBzY3JpcHQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBCU0QgaW5zdGFsbCBzY3JpcHQsIGJ1dCB3YXMgd3JpdHRlbgorICAgIGZyb20gc2NyYXRjaC4gIEl0IGNhbiBvbmx5IGluc3RhbGwgb25lIGZpbGUgYXQgYSB0aW1lLCBhIHJlc3RyaWN0aW9uCisgICAgc2hhcmVkIHdpdGggbWFueSBPUydzIGluc3RhbGwgcHJvZ3JhbXMuCisKK09uIERlYmlhbiBzeXN0ZW1zLCB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGUgR05VIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlIGNhbiBiZSBmb3VuZCBpbiAnL3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXMvR1BMLTInCisKKy0tIHZpbGU6IHR4dG1vZGUgZmlsZS1lbmNvZGluZz11dGYtOApkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9kb2NzIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9kb2NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDU1NjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L2RvY3MKQEAgLTAsMCArMSBAQAorUkVBRE1FCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3J1bGVzIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kY2UyMWExCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndy9ydWxlcwpAQCAtMCwwICsxLDk3IEBACisjIS91c3IvYmluL21ha2UgLWYKKyMgTUFkZSB3aXRoIHRoZSBhaWQgb2YgZGhfbWFrZSwgYnkgQ3JhaWcgU21hbGwKKyMgU2FtcGxlIGRlYmlhbi9ydWxlcyB0aGF0IHVzZXMgZGViaGVscGVyLiBHTlUgY29weXJpZ2h0IDE5OTcgYnkgSm9leSBIZXNzLgorIyBTb21lIGxpbmVzIHRha2VuIGZyb20gZGVibWFrZSwgYnkgQ3Jpc3RvcGggTGFtZXRlci4KKworIyBVbmNvbW1lbnQgdGhpcyB0byB0dXJuIG9uIHZlcmJvc2UgbW9kZS4KKyNleHBvcnQgREhfVkVSQk9TRT0xCisKKyMgVGhlc2UgYXJlIHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZyBhbmQgZm9yIHNhdmluZyB0aGUgY29uZmlndXJlIHNjcmlwdAorIyBmcm9tIGhhdmluZyB0byBndWVzcyBvdXIgcGxhdGZvcm0gKHNpbmNlIHdlIGtub3cgaXQgYWxyZWFkeSkKK0RFQl9IT1NUX0dOVV9UWVBFICAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9IT1NUX0dOVV9UWVBFKQorREVCX0JVSUxEX0dOVV9UWVBFICA/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0JVSUxEX0dOVV9UWVBFKQorCitDQ19OT1JNQUwgPSAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1Xc2hhZG93IC1XY29udmVyc2lvbgorQ0NfU1RSSUNUID0gJChDQ19OT1JNQUwpIC1XIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LWFsaWduIC1XY2FzdC1xdWFsIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVduZXN0ZWQtZXh0ZXJucyAtV3BvaW50ZXItYXJpdGggLVd3cml0ZS1zdHJpbmdzIC1hbnNpIC1wZWRhbnRpYworCitUQVJHRVQgICAgPSBpNjg2LXc2NC1taW5ndzMyCitNSU5HV19CSU4gPSAvdXNyL2JpbgorTUlOR1dfVE9QID0gL3Vzci8kKFRBUkdFVCkKK01JTkdXX1RNUCA9ICQoQ1VSRElSKS9kZWJpYW4vbWluZ3czMi1uY3Vyc2VzLWV4YW1wbGVzCisKK0NGTEFHUyA9ICQoQ0NfTk9STUFMKQorCitpZm5lcSAoLCQoZmluZHN0cmluZyBub29wdCwkKERFQl9CVUlMRF9PUFRJT05TKSkpCisgICAgICAgIENGTEFHUyArPSAtTzAKK2Vsc2UKKyAgICAgICAgQ0ZMQUdTICs9IC1PMgorZW5kaWYKK2lmZXEgKCwkKGZpbmRzdHJpbmcgbm9zdHJpcCwkKERFQl9CVUlMRF9PUFRJT05TKSkpCisgICAgICAgIElOU1RBTExfUFJPR1JBTSArPSAtcworZW5kaWYKKworCitjb25maWd1cmU6IGNvbmZpZ3VyZS1zdGFtcAorY29uZmlndXJlLXN0YW1wOgorCWRoX3Rlc3RkaXIKKworCUNGTEFHUz0iJChDRkxBR1MpIiAuL2NvbmZpZ3VyZSBcCisJCS0taG9zdD0kKFRBUkdFVCkgXAorCQktLXRhcmdldD0kKFRBUkdFVCkgXAorCQktLXByZWZpeD0kKE1JTkdXX1RPUCkgXAorCQktLXdpdGgtc2NyZWVuPW5jdXJzZXN3NiBcCisJCS0td2l0aC1wa2ctY29uZmlnLWxpYmRpcj0vdXNyLyQoVEFSR0VUKS9saWIvcGtnY29uZmlnCisKKwl0b3VjaCBjb25maWd1cmUtc3RhbXAKKworYnVpbGQ6IGJ1aWxkLXN0YW1wCitidWlsZC1zdGFtcDogY29uZmlndXJlLXN0YW1wCisJZGhfdGVzdGRpcgorCisJJChNQUtFKQorCisJdG91Y2ggYnVpbGQtc3RhbXAKKworY2xlYW46CisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisKKwlbICEgLWYgbWFrZWZpbGUgXSB8fCAkKE1BS0UpIGRpc3RjbGVhbgorCisJcm0gLWYgY29uZmlndXJlLXN0YW1wIGJ1aWxkLXN0YW1wIGluc3RhbGwtc3RhbXAKKworCWRoX2NsZWFuCisKK2luc3RhbGw6IGluc3RhbGwtc3RhbXAKK2luc3RhbGwtc3RhbXA6IGJ1aWxkLXN0YW1wCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfY2xlYW4gLWsKKwlkaF9pbnN0YWxsZGlycworCisJJChNQUtFKSBpbnN0YWxsIERFU1RESVI9JChNSU5HV19UTVApCisKKwl0b3VjaCBpbnN0YWxsLXN0YW1wCisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGhlcmUuCitiaW5hcnktaW5kZXA6IGJ1aWxkIGluc3RhbGwKKyMgTm8gYmluYXJ5LWluZGVwIHRhcmdldC4KKworIyBCdWlsZCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGhlcmUuCitiaW5hcnktYXJjaDogYnVpbGQgaW5zdGFsbAorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCWRoX2luc3RhbGxkb2NzCisJZGhfaW5zdGFsbGV4YW1wbGVzCisJZGhfaW5zdGFsbGNoYW5nZWxvZ3MgTkVXUworCWRoX3N0cmlwCisJZGhfY29tcHJlc3MKKwlkaF9maXhwZXJtcworCWRoX2luc3RhbGxkZWIKKwlkaF9zaGxpYmRlcHMKKwlkaF9nZW5jb250cm9sCisJZGhfbWQ1c3VtcworCWRoX2J1aWxkZGViCisKK2JpbmFyeTogYmluYXJ5LWluZGVwIGJpbmFyeS1hcmNoCisuUEhPTlk6IGJ1aWxkIGNsZWFuIGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaCBiaW5hcnkgaW5zdGFsbCBpbnN0YWxsLXN0YW1wCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3NvdXJjZS9mb3JtYXQgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3NvdXJjZS9mb3JtYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhZTlkYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvc291cmNlL2Zvcm1hdApAQCAtMCwwICsxIEBACiszLjAgKG5hdGl2ZSkKZGlmZiAtLWdpdCBhL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3cvd2F0Y2ggYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3dhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMDgwOTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3L3dhdGNoCkBAIC0wLDAgKzEsNCBAQAordmVyc2lvbj0zCisKK29wdHM9cGFzc2l2ZSBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLWV4YW1wbGVzL25jdXJzZXMtZXhhbXBsZXMtKFtcZC5dKylcLnRneiBcCisgZGViaWFuICB1dXBkYXRlCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29tcGF0IGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvbXBhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ2ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvbXBhdApAQCAtMCwwICsxIEBACis1CmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29udHJvbCBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OTE2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvY29udHJvbApAQCAtMCwwICsxLDE4IEBACitTb3VyY2U6IG5jdXJzZXMtZXhhbXBsZXMKK01haW50YWluZXI6IFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldD4KK1NlY3Rpb246IG1pc2MKK1ByaW9yaXR5OiBvcHRpb25hbAorU3RhbmRhcmRzLVZlcnNpb246IDMuOC40CitCdWlsZC1EZXBlbmRzOiBkZWJoZWxwZXIgKD49IDUpCitIb21lcGFnZTogaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sCisKK1BhY2thZ2U6IG1pbmd3NjQtbmN1cnNlcy1leGFtcGxlcworQXJjaGl0ZWN0dXJlOiBhbnkKK0RlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9LCAke21pc2M6RGVwZW5kc30KK0Rlc2NyaXB0aW9uOiBuY3Vyc2VzLWV4YW1wbGVzIC0gZXhhbXBsZS90ZXN0IHByb2dyYW1zIGZyb20gbmN1cnNlcworIFRoZXNlIGFyZSB0aGUgZXhhbXBsZS90ZXN0IHByb2dyYW1zIGZyb20gdGhlIG5jdXJzZXMgZGlzdHJpYnV0aW9uLgorIC4KKyBUaGlzIHBhY2thZ2UgaXMgdXNlZCBmb3IgdGVzdGluZyBBQkkgNiB3aXRoIHRoZSBNaW5HVyA2NC1iaXQgcG9ydC4KKyAuCisgVGhpcyBwYWNrYWdlIGluc3RhbGxzIGluICJiaW4vbmN1cnNlcy1leGFtcGxlcyIgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBvdGhlcgorIHBhY2thZ2VzLgpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L2NvcHlyaWdodCBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExZmRmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9jb3B5cmlnaHQKQEAgLTAsMCArMSw3OCBAQAorVXBzdHJlYW0gc291cmNlIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorCitDdXJyZW50IG5jdXJzZXMgbWFpbnRhaW5lcjogVGhvbWFzIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGaWxlczogKgorQ29weXJpZ2h0OiAxOTk4LTIwMTQsMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0xpY2VuY2U6IFgxMQorCitGaWxlczogYWNsb2NhbC5tNCBwYWNrYWdlCitDb3B5cmlnaHQ6IDIwMDMtMjAxNCwyMDE1IGJ5IFRob21hcyBFLiBEaWNrZXkKK0xpY2VuY2U6IFgxMQorCisgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAgICBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgICAgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAgICBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAgICBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAgICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICAgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCisgICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SCisgICAgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKyAgICBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUKKyAgICBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKyAgICBhdXRob3JpemF0aW9uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGaWxlczogaW5zdGFsbC1zaAorQ29weXJpZ2h0OiAgMTk5NCBYIENvbnNvcnRpdW0KK0xpY2VuY2U6IFgxMQorCisgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICAgIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICAgIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgICAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgICAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAgICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgICAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICAgIFggQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAgICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUMtCisgICAgVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworICAgIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIHRoZSBYIENvbnNvcnRpdW0gc2hhbGwgbm90CisgICAgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWwtCisgICAgaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gdGhlIFggQ29uc29yLQorICAgIHRpdW0uCisKKyAgICBGU0YgY2hhbmdlcyB0byB0aGlzIGZpbGUgYXJlIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCisgICAgQ2FsbGluZyB0aGlzIHNjcmlwdCBpbnN0YWxsLXNoIGlzIHByZWZlcnJlZCBvdmVyIGluc3RhbGwuc2gsIHRvIHByZXZlbnQKKyAgICBgbWFrZScgaW1wbGljaXQgcnVsZXMgZnJvbSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkIGluc3RhbGwgZnJvbSBpdAorICAgIHdoZW4gdGhlcmUgaXMgbm8gTWFrZWZpbGUuCisKKyAgICBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCisgICAgZnJvbSBzY3JhdGNoLiAgSXQgY2FuIG9ubHkgaW5zdGFsbCBvbmUgZmlsZSBhdCBhIHRpbWUsIGEgcmVzdHJpY3Rpb24KKyAgICBzaGFyZWQgd2l0aCBtYW55IE9TJ3MgaW5zdGFsbCBwcm9ncmFtcy4KKworT24gRGViaWFuIHN5c3RlbXMsIHRoZSBjb21wbGV0ZSB0ZXh0IG9mIHRoZSBHTlUgR2VuZXJhbAorUHVibGljIExpY2Vuc2UgY2FuIGJlIGZvdW5kIGluICcvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcy9HUEwtMicKKworLS0gdmlsZTogdHh0bW9kZSBmaWxlLWVuY29kaW5nPXV0Zi04CmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvZG9jcyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9kb2NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDU1NjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvZG9jcwpAQCAtMCwwICsxIEBACitSRUFETUUKZGlmZiAtLWdpdCBhL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9ydWxlcyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC9ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMGYxN2NkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3J1bGVzCkBAIC0wLDAgKzEsOTcgQEAKKyMhL3Vzci9iaW4vbWFrZSAtZgorIyBNQWRlIHdpdGggdGhlIGFpZCBvZiBkaF9tYWtlLCBieSBDcmFpZyBTbWFsbAorIyBTYW1wbGUgZGViaWFuL3J1bGVzIHRoYXQgdXNlcyBkZWJoZWxwZXIuIEdOVSBjb3B5cmlnaHQgMTk5NyBieSBKb2V5IEhlc3MuCisjIFNvbWUgbGluZXMgdGFrZW4gZnJvbSBkZWJtYWtlLCBieSBDcmlzdG9waCBMYW1ldGVyLgorCisjIFVuY29tbWVudCB0aGlzIHRvIHR1cm4gb24gdmVyYm9zZSBtb2RlLgorI2V4cG9ydCBESF9WRVJCT1NFPTEKKworIyBUaGVzZSBhcmUgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nIGFuZCBmb3Igc2F2aW5nIHRoZSBjb25maWd1cmUgc2NyaXB0CisjIGZyb20gaGF2aW5nIHRvIGd1ZXNzIG91ciBwbGF0Zm9ybSAoc2luY2Ugd2Uga25vdyBpdCBhbHJlYWR5KQorREVCX0hPU1RfR05VX1RZUEUgICA/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfR05VX1RZUEUpCitERUJfQlVJTERfR05VX1RZUEUgID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfQlVJTERfR05VX1RZUEUpCisKK0NDX05PUk1BTCA9IC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzaGFkb3cgLVdjb252ZXJzaW9uCitDQ19TVFJJQ1QgPSAkKENDX05PUk1BTCkgLVcgLVdiYWQtZnVuY3Rpb24tY2FzdCAtV2Nhc3QtYWxpZ24gLVdjYXN0LXF1YWwgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV25lc3RlZC1leHRlcm5zIC1XcG9pbnRlci1hcml0aCAtV3dyaXRlLXN0cmluZ3MgLWFuc2kgLXBlZGFudGljCisKK1RBUkdFVCAgICA9IHg4Nl82NC13NjQtbWluZ3czMgorTUlOR1dfQklOID0gL3Vzci9iaW4KK01JTkdXX1RPUCA9IC91c3IvJChUQVJHRVQpCitNSU5HV19UTVAgPSAkKENVUkRJUikvZGViaWFuL21pbmd3NjQtbmN1cnNlcy1leGFtcGxlcworCitDRkxBR1MgPSAkKENDX05PUk1BTCkKKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgbm9vcHQsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBDRkxBR1MgKz0gLU8wCitlbHNlCisgICAgICAgIENGTEFHUyArPSAtTzIKK2VuZGlmCitpZmVxICgsJChmaW5kc3RyaW5nIG5vc3RyaXAsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBJTlNUQUxMX1BST0dSQU0gKz0gLXMKK2VuZGlmCisKKworY29uZmlndXJlOiBjb25maWd1cmUtc3RhbXAKK2NvbmZpZ3VyZS1zdGFtcDoKKwlkaF90ZXN0ZGlyCisKKwlDRkxBR1M9IiQoQ0ZMQUdTKSIgLi9jb25maWd1cmUgXAorCQktLWhvc3Q9JChUQVJHRVQpIFwKKwkJLS10YXJnZXQ9JChUQVJHRVQpIFwKKwkJLS1wcmVmaXg9JChNSU5HV19UT1ApIFwKKwkJLS13aXRoLXNjcmVlbj1uY3Vyc2VzdzYgXAorCQktLXdpdGgtcGtnLWNvbmZpZy1saWJkaXI9L3Vzci8kKFRBUkdFVCkvbGliL3BrZ2NvbmZpZworCisJdG91Y2ggY29uZmlndXJlLXN0YW1wCisKK2J1aWxkOiBidWlsZC1zdGFtcAorYnVpbGQtc3RhbXA6IGNvbmZpZ3VyZS1zdGFtcAorCWRoX3Rlc3RkaXIKKworCSQoTUFLRSkKKworCXRvdWNoIGJ1aWxkLXN0YW1wCisKK2NsZWFuOgorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCisJWyAhIC1mIG1ha2VmaWxlIF0gfHwgJChNQUtFKSBkaXN0Y2xlYW4KKworCXJtIC1mIGNvbmZpZ3VyZS1zdGFtcCBidWlsZC1zdGFtcCBpbnN0YWxsLXN0YW1wCisKKwlkaF9jbGVhbgorCitpbnN0YWxsOiBpbnN0YWxsLXN0YW1wCitpbnN0YWxsLXN0YW1wOiBidWlsZC1zdGFtcAorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCWRoX2NsZWFuIC1rCisJZGhfaW5zdGFsbGRpcnMKKworCSQoTUFLRSkgaW5zdGFsbCBERVNURElSPSQoTUlOR1dfVE1QKQorCisJdG91Y2ggaW5zdGFsbC1zdGFtcAorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWluZGVwOiBidWlsZCBpbnN0YWxsCisjIE5vIGJpbmFyeS1pbmRlcCB0YXJnZXQuCisKKyMgQnVpbGQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWFyY2g6IGJ1aWxkIGluc3RhbGwKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9pbnN0YWxsZG9jcworCWRoX2luc3RhbGxleGFtcGxlcworCWRoX2luc3RhbGxjaGFuZ2Vsb2dzIE5FV1MKKwlkaF9zdHJpcAorCWRoX2NvbXByZXNzCisJZGhfZml4cGVybXMKKwlkaF9pbnN0YWxsZGViCisJZGhfc2hsaWJkZXBzCisJZGhfZ2VuY29udHJvbAorCWRoX21kNXN1bXMKKwlkaF9idWlsZGRlYgorCitiaW5hcnk6IGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaAorLlBIT05ZOiBidWlsZCBjbGVhbiBiaW5hcnktaW5kZXAgYmluYXJ5LWFyY2ggYmluYXJ5IGluc3RhbGwgaW5zdGFsbC1zdGFtcApkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3NvdXJjZS9mb3JtYXQgYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvc291cmNlL2Zvcm1hdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWFlOWRiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi1taW5ndzY0L3NvdXJjZS9mb3JtYXQKQEAgLTAsMCArMSBAQAorMy4wIChuYXRpdmUpCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvd2F0Y2ggYi90ZXN0L3BhY2thZ2UvZGViaWFuLW1pbmd3NjQvd2F0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQwODA5OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4tbWluZ3c2NC93YXRjaApAQCAtMCwwICsxLDQgQEAKK3ZlcnNpb249MworCitvcHRzPXBhc3NpdmUgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy1leGFtcGxlcy9uY3Vyc2VzLWV4YW1wbGVzLShbXGQuXSspXC50Z3ogXAorIGRlYmlhbiAgdXVwZGF0ZQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi9jb21wYXQgYi90ZXN0L3BhY2thZ2UvZGViaWFuL2NvbXBhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ2ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi9jb21wYXQKQEAgLTAsMCArMSBAQAorNQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi9jb250cm9sIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Y2M0M2EKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuL2NvbnRyb2wKQEAgLTAsMCArMSwyNiBAQAorU291cmNlOiBuY3Vyc2VzLWV4YW1wbGVzCitNYWludGFpbmVyOiBUaG9tYXMgRS4gRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CitTZWN0aW9uOiBtaXNjCitQcmlvcml0eTogb3B0aW9uYWwKK1N0YW5kYXJkcy1WZXJzaW9uOiAzLjguNAorQnVpbGQtRGVwZW5kczogZGViaGVscGVyICg+PSA1KQorSG9tZXBhZ2U6IGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorCitQYWNrYWdlOiBuY3Vyc2VzLWV4YW1wbGVzCitBcmNoaXRlY3R1cmU6IGFueQorRGVwZW5kczogJHtzaGxpYnM6RGVwZW5kc30sICR7bWlzYzpEZXBlbmRzfQorRGVzY3JpcHRpb246IG5jdXJzZXMtZXhhbXBsZXMgLSBleGFtcGxlL3Rlc3QgcHJvZ3JhbXMgZnJvbSBuY3Vyc2VzCisgVGhlc2UgYXJlIHRoZSBleGFtcGxlL3Rlc3QgcHJvZ3JhbXMgZnJvbSB0aGUgbmN1cnNlcyBkaXN0cmlidXRpb24uCisgLgorIFRoaXMgcGFja2FnZSBpbnN0YWxscyBpbiAiYmluL25jdXJzZXMtZXhhbXBsZXMiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb3RoZXIKKyBwYWNrYWdlcy4KKworUGFja2FnZTogbmN1cnNlc3QtZXhhbXBsZXMKK0FyY2hpdGVjdHVyZTogYW55CitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitEZXNjcmlwdGlvbjogbmN1cnNlcy1leGFtcGxlcyAtIGV4YW1wbGUvdGVzdCBwcm9ncmFtcyBmcm9tIG5jdXJzZXMKKyBUaGVzZSBhcmUgdGhlIGV4YW1wbGUvdGVzdCBwcm9ncmFtcyBmcm9tIHRoZSBuY3Vyc2VzIGRpc3RyaWJ1dGlvbiwgdXNpbmcKKyB0aGUgdGhyZWFkIGNvbmZpZ3VyYXRpb24uCisgLgorIFRoaXMgcGFja2FnZSBpbnN0YWxscyBpbiAiYmluL25jdXJzZXN0LWV4YW1wbGVzIiB0byBhdm9pZCBjb25mbGljdCB3aXRoIG90aGVyCisgcGFja2FnZXMuCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodCBiL3Rlc3QvcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMWZkZmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodApAQCAtMCwwICsxLDc4IEBACitVcHN0cmVhbSBzb3VyY2UgaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sCisKK0N1cnJlbnQgbmN1cnNlcyBtYWludGFpbmVyOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAaW52aXNpYmxlLWlzbGFuZC5uZXQ+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiAqCitDb3B5cmlnaHQ6IDE5OTgtMjAxNCwyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorTGljZW5jZTogWDExCisKK0ZpbGVzOiBhY2xvY2FsLm00IHBhY2thZ2UKK0NvcHlyaWdodDogMjAwMy0yMDE0LDIwMTUgYnkgVGhvbWFzIEUuIERpY2tleQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICAgIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAgICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICAgIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAgICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICAgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgICBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IKKyAgICBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworICAgIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZQorICAgIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICAgIGF1dGhvcml6YXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZpbGVzOiBpbnN0YWxsLXNoCitDb3B5cmlnaHQ6ICAxOTk0IFggQ29uc29ydGl1bQorTGljZW5jZTogWDExCisKKyAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgICAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAgICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAgICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICAgIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgICAgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICAgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQy0KKyAgICBUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisgICAgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFggQ29uc29ydGl1bSBzaGFsbCBub3QKKyAgICBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbC0KKyAgICBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisgICAgdGl1bS4KKworICAgIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCisKKyAgICBDYWxsaW5nIHRoaXMgc2NyaXB0IGluc3RhbGwtc2ggaXMgcHJlZmVycmVkIG92ZXIgaW5zdGFsbC5zaCwgdG8gcHJldmVudAorICAgIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CisgICAgd2hlbiB0aGVyZSBpcyBubyBNYWtlZmlsZS4KKworICAgIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KKyAgICBmcm9tIHNjcmF0Y2guICBJdCBjYW4gb25seSBpbnN0YWxsIG9uZSBmaWxlIGF0IGEgdGltZSwgYSByZXN0cmljdGlvbgorICAgIHNoYXJlZCB3aXRoIG1hbnkgT1MncyBpbnN0YWxsIHByb2dyYW1zLgorCitPbiBEZWJpYW4gc3lzdGVtcywgdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhlIEdOVSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBjYW4gYmUgZm91bmQgaW4gJy91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzL0dQTC0yJworCistLSB2aWxlOiB0eHRtb2RlIGZpbGUtZW5jb2Rpbmc9dXRmLTgKZGlmZiAtLWdpdCBhL3Rlc3QvcGFja2FnZS9kZWJpYW4vZG9jcyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4vZG9jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODQ1NTY2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi9kb2NzCkBAIC0wLDAgKzEgQEAKK1JFQURNRQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi9ydWxlcyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4vcnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmVkN2E4MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9kZWJpYW4vcnVsZXMKQEAgLTAsMCArMSwxNTggQEAKKyMhL3Vzci9iaW4vbWFrZSAtZgorIyBNQWRlIHdpdGggdGhlIGFpZCBvZiBkaF9tYWtlLCBieSBDcmFpZyBTbWFsbAorIyBTYW1wbGUgZGViaWFuL3J1bGVzIHRoYXQgdXNlcyBkZWJoZWxwZXIuIEdOVSBjb3B5cmlnaHQgMTk5NyBieSBKb2V5IEhlc3MuCisjIFNvbWUgbGluZXMgdGFrZW4gZnJvbSBkZWJtYWtlLCBieSBDcmlzdG9waCBMYW1ldGVyLgorCisjIFVuY29tbWVudCB0aGlzIHRvIHR1cm4gb24gdmVyYm9zZSBtb2RlLgorI2V4cG9ydCBESF9WRVJCT1NFPTEKKworIyBwYWNrYWdlcworTkNVUlNFU19QS0cgPSBuY3Vyc2VzLWV4YW1wbGVzCitOQ1VSU0VTVF9QS0cgPSBuY3Vyc2VzdC1leGFtcGxlcworCitQQUNLQUdFUy5pbmRlcCA9ICMgbmN1cnNlcy1leGFtcGxlcy1kb2NzCitQQUNLQUdFUy5hcmNoICA9ICQoTkNVUlNFU19QS0cpICQoTkNVUlNFU1RfUEtHKQorCisjIFRoZXNlIGFyZSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcgYW5kIGZvciBzYXZpbmcgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyMgZnJvbSBoYXZpbmcgdG8gZ3Vlc3Mgb3VyIHBsYXRmb3JtIChzaW5jZSB3ZSBrbm93IGl0IGFscmVhZHkpCitERUJfSE9TVF9HTlVfVFlQRSAgID89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9HTlVfVFlQRSkKK0RFQl9CVUlMRF9HTlVfVFlQRSAgPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9CVUlMRF9HTlVfVFlQRSkKKworQ0ZMQUdTID0KKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgbm9vcHQsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBDRkxBR1MgKz0gLU8wCitlbHNlCisgICAgICAgIENGTEFHUyArPSAtTzIKK2VuZGlmCitpZmVxICgsJChmaW5kc3RyaW5nIG5vc3RyaXAsJChERUJfQlVJTERfT1BUSU9OUykpKQorICAgICAgICBJTlNUQUxMX1BST0dSQU0gKz0gLXMKK2VuZGlmCisKK3ZlcmJvc2UgPSAjIC12CisKK2NvbmZpZ3VyZSA9IFwKKwlDRkxBR1M9IiQoQ0ZMQUdTKSIgLi4vLi4vY29uZmlndXJlIFwKKwkJLS1ob3N0PSQoREVCX0hPU1RfR05VX1RZUEUpIFwKKwkJLS1idWlsZD0kKERFQl9CVUlMRF9HTlVfVFlQRSkgXAorCQktLXByZWZpeD0vdXNyIFwKKwkJLS1kaXNhYmxlLXJwYXRoLWhhY2sKKworLlBIT05ZOiBhbGwgY29uZmlnIGJ1aWxkIGluc3RhbGwgYmluYXJ5IGNsZWFuIGNvbmZpZy1pbmRlcCBjb25maWctYXJjaCBcCisgICAgYnVpbGQtaW5kZXAgYnVpbGQtYXJjaCBpbnN0YWxsLWluZGVwIGluc3RhbGwtYXJjaCBiaW5hcnktaW5kZXAgXAorICAgIGJpbmFyeS1hcmNoCisKK2FsbDogYnVpbGQKKworY29uZmlnOiBjb25maWctaW5kZXAgY29uZmlnLWFyY2gKK2J1aWxkOiBidWlsZC1pbmRlcCBidWlsZC1hcmNoCitpbnN0YWxsOiBpbnN0YWxsLWluZGVwIGluc3RhbGwtYXJjaAorYmluYXJ5OiBiaW5hcnktaW5kZXAgYmluYXJ5LWFyY2gKK2NsZWFuOgorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCWRoX2NsZWFuICQodmVyYm9zZSkKKwlybSAtcmYgdAorCitjb25maWctaW5kZXA6ICQoUEFDS0FHRVMuaW5kZXA6JT1jb25maWctJS1zdGFtcCkKK2NvbmZpZy1hcmNoOiAkKFBBQ0tBR0VTLmFyY2g6JT1jb25maWctJS1zdGFtcCkKKworYnVpbGQtaW5kZXA6ICQoUEFDS0FHRVMuaW5kZXA6JT1idWlsZC0lLXN0YW1wKQorYnVpbGQtYXJjaDogJChQQUNLQUdFUy5hcmNoOiU9YnVpbGQtJS1zdGFtcCkKKworaW5zdGFsbC1pbmRlcDogJChQQUNLQUdFUy5pbmRlcDolPWluc3RhbGwtJS1zdGFtcCkKK2luc3RhbGwtYXJjaDogJChQQUNLQUdFUy5hcmNoOiU9aW5zdGFsbC0lLXN0YW1wKQorCitjb25maWctJChOQ1VSU0VTX1BLRyktc3RhbXA6CisJZGhfdGVzdGRpcgorCisJcm0gLXJmIHQvbmN1cnNlczYKKwlta2RpciAtcCB0L25jdXJzZXM2CisKKwljZCB0L25jdXJzZXM2OyAkKGNvbmZpZ3VyZSkgXAorCQktLWJpbmRpcj1cJCR7cHJlZml4fS9iaW4vJChOQ1VSU0VTX1BLRykgXAorCQktLXdpdGgtc2NyZWVuPW5jdXJzZXN3NgorCisJdG91Y2ggJEAKKworY29uZmlnLSQoTkNVUlNFU1RfUEtHKS1zdGFtcDoKKwlkaF90ZXN0ZGlyCisKKwlybSAtcmYgdC9uY3Vyc2VzdDYKKwlta2RpciAtcCB0L25jdXJzZXN0NgorCisJY2QgdC9uY3Vyc2VzdDY7ICQoY29uZmlndXJlKSBcCisJCS0tYmluZGlyPVwkJHtwcmVmaXh9L2Jpbi8kKE5DVVJTRVNUX1BLRykgXAorCQktLXdpdGgtc2NyZWVuPW5jdXJzZXN0dzYKKworCXRvdWNoICRACisKK2J1aWxkLSQoTkNVUlNFU19QS0cpLXN0YW1wOiBjb25maWctJChOQ1VSU0VTX1BLRyktc3RhbXAKKwlkaF90ZXN0ZGlyCisKKwkkKE1BS0UpIC1DIHQvbmN1cnNlczYKKworCXRvdWNoICRACisKK2J1aWxkLSQoTkNVUlNFU1RfUEtHKS1zdGFtcDogY29uZmlnLSQoTkNVUlNFU1RfUEtHKS1zdGFtcAorCWRoX3Rlc3RkaXIKKworCSQoTUFLRSkgLUMgdC9uY3Vyc2VzdDYKKworCXRvdWNoICRACisKK2luc3RhbGwtJChOQ1VSU0VTX1BLRyktc3RhbXA6IGJ1aWxkLSQoTkNVUlNFU19QS0cpLXN0YW1wCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGRpcnMgJCh2ZXJib3NlKQorCWRoX3ByZXAgICAgICAgICQodmVyYm9zZSkgLXAkKE5DVVJTRVNfUEtHKQorCisJJChNQUtFKSAtQyB0L25jdXJzZXM2IGluc3RhbGwgREVTVERJUj0kKENVUkRJUikvZGViaWFuLyQoTkNVUlNFU19QS0cpCisKKwl0b3VjaCAkQAorCitpbnN0YWxsLSQoTkNVUlNFU1RfUEtHKS1zdGFtcDogYnVpbGQtJChOQ1VSU0VTVF9QS0cpLXN0YW1wCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGRpcnMgJCh2ZXJib3NlKQorCWRoX3ByZXAgICAgICAgICQodmVyYm9zZSkgLXAkKE5DVVJTRVNUX1BLRykKKworCSQoTUFLRSkgLUMgdC9uY3Vyc2VzdDYgaW5zdGFsbCBERVNURElSPSQoQ1VSRElSKS9kZWJpYW4vJChOQ1VSU0VTVF9QS0cpCisKKwl0b3VjaCAkQAorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBoZXJlLgorYmluYXJ5LWluZGVwOiBpbnN0YWxsLWluZGVwCitpZm5lcSAoJChQQUNLQUdFUy5pbmRlcCksKQorCXJtIC1mICQoUEFDS0FHRVMuaW5kZXA6JT1pbnN0YWxsLSUtc3RhbXApCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGRvY3MgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX2luc3RhbGxtYW4gICAgICAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKKwlkaF9pbnN0YWxsZXhhbXBsZXMgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCisJZGhfaW5zdGFsbGNoYW5nZWxvZ3MgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKSBORVdTCisJZGhfY29tcHJlc3MgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX2ZpeHBlcm1zICAgICAgICAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKKwlkaF9pbnN0YWxsZGViICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCisJZGhfZ2VuY29udHJvbCAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmluZGVwOiU9LXAlKQorCWRoX21kNXN1bXMgICAgICAgICAgICQodmVyYm9zZSkgJChQQUNLQUdFUy5pbmRlcDolPS1wJSkKKwlkaF9idWlsZGRlYiAgICAgICAgICAkKHZlcmJvc2UpICQoUEFDS0FHRVMuaW5kZXA6JT0tcCUpCitlbmRpZgorCisjIEJ1aWxkIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgZmlsZXMgaGVyZS4KK2JpbmFyeS1hcmNoOiBpbnN0YWxsLWFyY2gKK2lmbmVxICgkKFBBQ0tBR0VTLmFyY2gpLCkKKwlybSAtZiAkKFBBQ0tBR0VTLmFyY2g6JT1pbnN0YWxsLSUtc3RhbXApCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGNoYW5nZWxvZ3MgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpICBORVdTCisJZGhfc3RyaXAgICAgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfY29tcHJlc3MgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfZml4cGVybXMgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfaW5zdGFsbGRlYiAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfbWFrZXNobGlicyAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfc2hsaWJkZXBzICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfZ2VuY29udHJvbCAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfbWQ1c3VtcyAgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCisJZGhfYnVpbGRkZWIgICAgICAgICAgJCh2ZXJib3NlKSAkKFBBQ0tBR0VTLmFyY2g6JT0tcCUpCitlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL2RlYmlhbi9zb3VyY2UvZm9ybWF0IGIvdGVzdC9wYWNrYWdlL2RlYmlhbi9zb3VyY2UvZm9ybWF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YWU5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvZGViaWFuL3NvdXJjZS9mb3JtYXQKQEAgLTAsMCArMSBAQAorMy4wIChuYXRpdmUpCmRpZmYgLS1naXQgYS90ZXN0L3BhY2thZ2UvZGViaWFuL3dhdGNoIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi93YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDA4MDk4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9wYWNrYWdlL2RlYmlhbi93YXRjaApAQCAtMCwwICsxLDQgQEAKK3ZlcnNpb249MworCitvcHRzPXBhc3NpdmUgZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy1leGFtcGxlcy9uY3Vyc2VzLWV4YW1wbGVzLShbXGQuXSspXC50Z3ogXAorIGRlYmlhbiAgdXVwZGF0ZQpkaWZmIC0tZ2l0IGEvdGVzdC9wYWNrYWdlL21pbmd3LW5jdXJzZXMtZXhhbXBsZXMuc3BlYyBiL3Rlc3QvcGFja2FnZS9taW5ndy1uY3Vyc2VzLWV4YW1wbGVzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRjMmE2OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcGFja2FnZS9taW5ndy1uY3Vyc2VzLWV4YW1wbGVzLnNwZWMKQEAgLTAsMCArMSwxMDkgQEAKK1N1bW1hcnk6IG5jdXJzZXMtZXhhbXBsZXMgLSBleGFtcGxlL3Rlc3QgcHJvZ3JhbXMgZnJvbSBuY3Vyc2VzCislP21pbmd3X3BhY2thZ2VfaGVhZGVyCisKKyVkZWZpbmUgQXBwUHJvZ3JhbSBuY3Vyc2VzLWV4YW1wbGVzCislZGVmaW5lIEFwcFZlcnNpb24gTUFKT1IuTUlOT1IKKyVkZWZpbmUgQXBwUmVsZWFzZSBZWVlZTU1ERAorIyAkSWQ6IG1pbmd3LW5jdXJzZXMtZXhhbXBsZXMuc3BlYyx2IDEuMyAyMDEzLzEwLzI2IDIzOjMwOjIxIHRvbSBFeHAgJAorTmFtZTogbWluZ3czMi1uY3Vyc2VzNi1leGFtcGxlcworVmVyc2lvbjogJXtBcHBWZXJzaW9ufQorUmVsZWFzZTogJXtBcHBSZWxlYXNlfQorTGljZW5zZTogWDExCitHcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzCitTb3VyY2U6IG5jdXJzZXMtZXhhbXBsZXMtJXtyZWxlYXNlfS50Z3oKKyMgVVJMOiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KKworQnVpbGRSZXF1aXJlczogIG1pbmd3MzItbmN1cnNlczYKKworQnVpbGRSZXF1aXJlczogIG1pbmd3MzItZmlsZXN5c3RlbSA+PSA5NQorQnVpbGRSZXF1aXJlczogIG1pbmd3MzItZ2NjCitCdWlsZFJlcXVpcmVzOiAgbWluZ3czMi1iaW51dGlscworCitCdWlsZFJlcXVpcmVzOiAgbWluZ3c2NC1uY3Vyc2VzNgorCitCdWlsZFJlcXVpcmVzOiAgbWluZ3c2NC1maWxlc3lzdGVtID49IDk1CitCdWlsZFJlcXVpcmVzOiAgbWluZ3c2NC1nY2MKK0J1aWxkUmVxdWlyZXM6ICBtaW5ndzY0LWJpbnV0aWxzCisKKyVkZWZpbmUgQ0NfTk9STUFMIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzaGFkb3cgLVdjb252ZXJzaW9uCislZGVmaW5lIENDX1NUUklDVCAle0NDX05PUk1BTH0gLVcgLVdiYWQtZnVuY3Rpb24tY2FzdCAtV2Nhc3QtYWxpZ24gLVdjYXN0LXF1YWwgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV25lc3RlZC1leHRlcm5zIC1XcG9pbnRlci1hcml0aCAtV3dyaXRlLXN0cmluZ3MgLWFuc2kgLXBlZGFudGljCisKKyVkZXNjcmlwdGlvbiAtbiBtaW5ndzMyLW5jdXJzZXM2LWV4YW1wbGVzCitDcm9zcy1jb21waWxpbmcgc3VwcG9ydCBmb3IgbmN1cnNlcyB0byBtaW5ndzMyLgorCitUaGUgbmN1cnNlcyBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBhIHRlcm1pbmFsLWluZGVwZW5kZW50IG1ldGhvZCBvZgordXBkYXRpbmcgY2hhcmFjdGVyIHNjcmVlbnMgd2l0aCByZWFzb25hYmxlIG9wdGltaXphdGlvbi4KKworVGhpcyBwYWNrYWdlIGlzIHVzZWQgZm9yIHRlc3RpbmcgQUJJIDYgd2l0aCBjcm9zcy1jb21waWxlcyB0byBNaW5HVy4KKworJXBhY2thZ2UgLW4gbWluZ3c2NC1uY3Vyc2VzNi1leGFtcGxlcworU3VtbWFyeTogICAgICAgIEN1cnNlcyBsaWJyYXJ5IGZvciBNaW5HVzY0CisKKyVkZXNjcmlwdGlvbiAtbiBtaW5ndzY0LW5jdXJzZXM2LWV4YW1wbGVzCitDcm9zcy1jb21waWxpbmcgc3VwcG9ydCBmb3IgbmN1cnNlcyB0byBtaW5ndzY0LgorCitUaGUgbmN1cnNlcyBsaWJyYXJ5IHJvdXRpbmVzIGFyZSBhIHRlcm1pbmFsLWluZGVwZW5kZW50IG1ldGhvZCBvZgordXBkYXRpbmcgY2hhcmFjdGVyIHNjcmVlbnMgd2l0aCByZWFzb25hYmxlIG9wdGltaXphdGlvbi4KKworVGhpcyBwYWNrYWdlIGlzIHVzZWQgZm9yIHRlc3RpbmcgQUJJIDYgd2l0aCBjcm9zcy1jb21waWxlcyB0byBNaW5HVy4KKworJXByZXAKKworIyBvdmVycmlkZSBsb2NhdGlvbiBvZiBiaW5kaXIsIGUuZy4sIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggcGRjdXJzZXMKKyVnbG9iYWwgbWluZ3czMl9iaW5kaXIgJXttaW5ndzMyX2V4ZWNfcHJlZml4fS9iaW4vJXtBcHBQcm9ncmFtfSAKKyVnbG9iYWwgbWluZ3c2NF9iaW5kaXIgJXttaW5ndzY0X2V4ZWNfcHJlZml4fS9iaW4vJXtBcHBQcm9ncmFtfSAKKworJWRlZmluZSBDRkdfT1BUUyBcXFwKKwktLWRpc2FibGUtZWNobyBcXFwKKwktLWVuYWJsZS13YXJuaW5ncyBcXFwKKwktLXZlcmJvc2UKKworJWRlZmluZSBkZWJ1Z19wYWNrYWdlICV7bmlsfQorJXNldHVwIC1xIC1uIG5jdXJzZXMtZXhhbXBsZXMtJXtyZWxlYXNlfQorCislYnVpbGQKK21rZGlyIEJVSUxELVczMgorcHVzaGQgQlVJTEQtVzMyCitDRkxBR1M9IiV7Q0NfTk9STUFMfSIgXAorQ0M9JXttaW5ndzMyX2NjfSBcCislbWluZ3czMl9jb25maWd1cmUgJXtDRkdfT1BUU30KK2NwIGNvbmZpZy5zdGF0dXMgL3RtcC9taW5nMzItY29uZmlnLnN0YXR1cworbWFrZQorcG9wZAorCitta2RpciBCVUlMRC1XNjQKK3B1c2hkIEJVSUxELVc2NAorQ0ZMQUdTPSIle0NDX05PUk1BTH0iIFwKK0NDPSV7bWluZ3c2NF9jY30gXAorJW1pbmd3NjRfY29uZmlndXJlICV7Q0ZHX09QVFN9CitjcCBjb25maWcuc3RhdHVzIC90bXAvbWluZzY0LWNvbmZpZy5zdGF0dXMKK21ha2UKK3BvcGQKKworJWluc3RhbGwKK3JtIC1yZiAkUlBNX0JVSUxEX1JPT1QKKworcHVzaGQgQlVJTEQtVzMyCisle21pbmd3MzJfbWFrZX0gaW5zdGFsbCBERVNURElSPSRSUE1fQlVJTERfUk9PVAorcG9wZAorCitwdXNoZCBCVUlMRC1XNjQKKyV7bWluZ3c2NF9tYWtlfSBpbnN0YWxsIERFU1RESVI9JFJQTV9CVUlMRF9ST09UCitwb3BkCisKKyVjbGVhbgorcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCislZmlsZXMKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCisKKyVmaWxlcyAtbiBtaW5ndzMyLW5jdXJzZXM2LWV4YW1wbGVzCisle21pbmd3MzJfYmluZGlyfS8qCisKKyVmaWxlcyAtbiBtaW5ndzY0LW5jdXJzZXM2LWV4YW1wbGVzCisle21pbmd3NjRfYmluZGlyfS8qCisKKyVjaGFuZ2Vsb2cKKworKiBTYXQgT2N0IDE5IDIwMTMgVGhvbWFzIEUuIERpY2tleQorLSBpbml0aWFsIHZlcnNpb24KZGlmZiAtLWdpdCBhL3Rlc3QvcGFja2FnZS9uY3Vyc2VzLWV4YW1wbGVzLnNwZWMgYi90ZXN0L3BhY2thZ2UvbmN1cnNlcy1leGFtcGxlcy5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NTJiODEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3BhY2thZ2UvbmN1cnNlcy1leGFtcGxlcy5zcGVjCkBAIC0wLDAgKzEsNTUgQEAKK1N1bW1hcnk6IG5jdXJzZXMtZXhhbXBsZXMgLSBleGFtcGxlL3Rlc3QgcHJvZ3JhbXMgZnJvbSBuY3Vyc2VzCislZGVmaW5lIEFwcFByb2dyYW0gbmN1cnNlcy1leGFtcGxlcworJWRlZmluZSBBcHBWZXJzaW9uIE1BSk9SLk1JTk9SCislZGVmaW5lIEFwcFJlbGVhc2UgWVlZWU1NREQKKyMgJElkOiBuY3Vyc2VzLWV4YW1wbGVzLnNwZWMsdiAxLjUgMjAxNS8wNC8yNSAxMDo1NToyMiB0b20gRXhwICQKK05hbWU6ICV7QXBwUHJvZ3JhbX0KK1ZlcnNpb246ICV7QXBwVmVyc2lvbn0KK1JlbGVhc2U6ICV7QXBwUmVsZWFzZX0KK0xpY2Vuc2U6IE1JVAorR3JvdXA6IEFwcGxpY2F0aW9ucy9EZXZlbG9wbWVudAorVVJMOiBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC8le0FwcFByb2dyYW19CitTb3VyY2UwOiAle0FwcFByb2dyYW19LSV7QXBwUmVsZWFzZX0udGd6CitQYWNrYWdlcjogVGhvbWFzIERpY2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PgorCislZGVzY3JpcHRpb24KK1RoZXNlIGFyZSB0aGUgZXhhbXBsZS90ZXN0IHByb2dyYW1zIGZyb20gdGhlIG5jdXJzZXMgTUFKT1IuTUlOT1IgZGlzdHJpYnV0aW9uLAorZm9yIHBhdGNoLWRhdGUgWVlZWU1NREQuCisKK1RoaXMgcGFja2FnZSBpbnN0YWxscyBpbiAiYmluL25jdXJzZXMtZXhhbXBsZXMiIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb3RoZXIKK3BhY2thZ2VzLgorJXByZXAKKworJXNldHVwIC1xIC1uICV7QXBwUHJvZ3JhbX0tJXtBcHBSZWxlYXNlfQorCislYnVpbGQKKworSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JyBcCisJLi9jb25maWd1cmUgXAorCQktLXRhcmdldCAle190YXJnZXRfcGxhdGZvcm19IFwKKwkJLS1wcmVmaXg9JXtfcHJlZml4fSBcCisJCS0tYmluZGlyPSV7X2JpbmRpcn0vJXtBcHBQcm9ncmFtfSBcCisJCS0td2l0aC1zY3JlZW49bmN1cnNlc3c2IFwKKwkJLS1kaXNhYmxlLXJwYXRoLWhhY2sKKworbWFrZQorCislaW5zdGFsbAorWyAiJFJQTV9CVUlMRF9ST09UIiAhPSAiLyIgXSAmJiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKK21ha2UgaW5zdGFsbCAgICAgICAgICAgICAgIERFU1RESVI9JFJQTV9CVUlMRF9ST09UCisKK3N0cmlwICRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0vJXtBcHBQcm9ncmFtfS8qCisKKyVjbGVhbgorWyAiJFJQTV9CVUlMRF9ST09UIiAhPSAiLyIgXSAmJiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKKyVmaWxlcworJWRlZmF0dHIoLSxyb290LHJvb3QpCisle19iaW5kaXJ9LyV7QXBwUHJvZ3JhbX0vKgorCislY2hhbmdlbG9nCisjIGVhY2ggcGF0Y2ggc2hvdWxkIGFkZCBpdHMgQ2hhbmdlTG9nIGVudHJpZXMgaGVyZQorCisqIFRodSBNYXIgMjUgMjAxMCBUaG9tYXMgRGlja2V5CistIGluaXRpYWwgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvdGVzdC9wcm9ncmFtcyBiL3Rlc3QvcHJvZ3JhbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3NjVlMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvcHJvZ3JhbXMKQEAgLTAsMCArMSw5OSBAQAorIyAkSWQ6IHByb2dyYW1zLHYgMS4yNiAyMDE1LzA2LzI3IDEwOjQwOjUzIHRvbSBFeHAgJAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAwNi0yMDE0LDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgICAjCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICMKKyMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiAgIworIyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSAgICAjCisjIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvICMKKyMgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSAgIworIyBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gIworIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgIworIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgICAjCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMICAgICMKKyMgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSICAgICAgIworIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyAgICAjCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgICAgICAgICMKKyMgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAgICMKKyMgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgIworIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkKKyMKKyMgcHJvZ3JhbXMgdXNlZCBmb3IgbmN1cnNlcyB0ZXN0cworYmFja2dyb3VuZAkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCWJhY2tncm91bmQKK2JsdWUJCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJYmx1ZQorYnMJCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJYnMKK2NhcmRmaWxlCSQoTERGTEFHU19ERUZBVUxUKQkkKExPQ0FMX0xJQlMpCWNhcmRmaWxlCitjaGdhdAkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQljaGdhdAorY2xpcF9wcmludHcJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQljbGlwX3ByaW50dworY29sb3Jfc2V0CSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJY29sb3Jfc2V0CitkZW1vX2FsdGtleXMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlkZW1vX2FsdGtleXMKK2RlbW9fZGVma2V5CSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJZGVtb19kZWZrZXkKK2RlbW9fZm9ybXMJJChMREZMQUdTX0RFRkFVTFQpCSQoTE9DQUxfTElCUykJZGVtb19mb3JtcyBlZGl0X2ZpZWxkCitkZW1vX2tleW9rCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJZGVtb19rZXlvaworZGVtb19tZW51cwkkKExERkxBR1NfREVGQVVMVCkJJChMT0NBTF9MSUJTKQlkZW1vX21lbnVzCitkZW1vX3BhbmVscwkkKExERkxBR1NfREVGQVVMVCkJJChMT0NBTF9MSUJTKQlkZW1vX3BhbmVscworZGVtb190ZXJtY2FwCSQoTERGTEFHU19USU5GTykJJChMT0NBTF9MSUJTKQlkZW1vX3Rlcm1jYXAKK2RlbW9fdGVybWluZm8JJChMREZMQUdTX1RJTkZPKQkkKExPQ0FMX0xJQlMpCWRlbW9fdGVybWluZm8KK2RpdHRvCQkkKExERkxBR1NfVEhSRUFEUykJJChMT0NBTF9MSUJTKQlkaXR0bworZG90cwkJJChMREZMQUdTX1RJTkZPKQkkKExPQ0FMX0xJQlMpCWRvdHMKK2RvdHNfY3Vyc2VzCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJZG90c19jdXJzZXMKK2RvdHNfbXZjdXIJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlkb3RzX212Y3VyCitkb3RzX3Rlcm1jYXAJJChMREZMQUdTX1RJTkZPKQkkKExPQ0FMX0xJQlMpCWRvdHNfdGVybWNhcAorZWNob2NoYXIJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQllY2hvY2hhcgorZmlsdGVyCQkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCWZpbHRlcgorZmlyZXdvcmsJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlmaXJld29yaworZmlyc3RsYXN0CSQoTERGTEFHU19ERUZBVUxUKQkkKExPQ0FMX0xJQlMpCWZpcnN0bGFzdAorZm9sZGtleXMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlmb2xka2V5cworZm9ybV9kcml2ZXJfdwkkKExERkxBR1NfREVGQVVMVCkJJChMT0NBTF9MSUJTKQlmb3JtX2RyaXZlcl93CitnZGMJCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJZ2RjCitoYW5vaQkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQloYW5vaQoraGFzaHRlc3QJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQloYXNodGVzdAoraW5jaF93aWRlCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJaW5jaF93aWRlCitpbmNocwkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlpbmNocworaW5zX3dpZGUJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlpbnNfd2lkZQoraW5zZGVsbG4JJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlpbnNkZWxsbgoraW5zZXJ0cwkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlpbnNlcnRzCitrZXlfbmFtZXMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlrZXlfbmFtZXMKK2tleW5hbWVzCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJa2V5bmFtZXMKK2tuaWdodAkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlrbmlnaHQKK2xydGVzdAkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQlscnRlc3QKK21vdmV3aW5kb3cJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQltb3Zld2luZG93CituY3Vyc2VzCQkkKExERkxBR1NfREVGQVVMVCkJJChMT0NBTF9MSUJTKQluY3Vyc2VzCituZXdkZW1vCQkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCW5ld2RlbW8KK3JhaWxyb2FkCSQoTERGTEFHU19USU5GTykJJChMT0NBTF9MSUJTKQlyYWlscm9hZAorcmFpbgkJJChMREZMQUdTX1RIUkVBRFMpCSQoTE9DQUxfTElCUykJcmFpbgorcmVkcmF3CQkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXJlZHJhdworc2F2ZXNjcmVlbgkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXNhdmVzY3JlZW4KK3RjbG9jawkJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQl0Y2xvY2sKK3Rlc3RfYWRkX3djaHN0cgkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXRlc3RfYWRkX3djaHN0cgordGVzdF9hZGRjaHN0cgkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXRlc3RfYWRkY2hzdHIKK3Rlc3RfYWRkc3RyCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdF9hZGRzdHIKK3Rlc3RfYWRkd3N0cgkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXRlc3RfYWRkd3N0cgordGVzdF9hcnJheXMJJChMREZMQUdTX1RJTkZPKQkkKExPQ0FMX0xJQlMpCXRlc3RfYXJyYXlzCit0ZXN0X2dldF93c3RyCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdF9nZXRfd3N0cgordGVzdF9nZXRzdHIJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQl0ZXN0X2dldHN0cgordGVzdF9pbnN0cgkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXRlc3RfaW5zdHIKK3Rlc3RfaW53c3RyCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdF9pbndzdHIKK3Rlc3Rfb3BhcXVlCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdF9vcGFxdWUKK3Rlc3Rfc2V0dXB0ZXJtCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdF9zZXR1cHRlcm0KK3Rlc3RfdmlkX3B1dHMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQl0ZXN0X3ZpZF9wdXRzCit0ZXN0X3ZpZHB1dHMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQl0ZXN0X3ZpZHB1dHMKK3Rlc3RhZGRjaAkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXRlc3RhZGRjaAordGVzdGN1cnMJJChMREZMQUdTX0NVUlNFUykJJChMT0NBTF9MSUJTKQl0ZXN0Y3VycwordGVzdHNjYW53CSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJdGVzdHNjYW53Cit2aWV3CQkkKExERkxBR1NfQ1VSU0VTKQkkKExPQ0FMX0xJQlMpCXZpZXcKK3dvcm0JCSQoTERGTEFHU19USFJFQURTKQkkKExPQ0FMX0xJQlMpCXdvcm0KK3htYXMJCSQoTERGTEFHU19DVVJTRVMpCSQoTE9DQUxfTElCUykJeG1hcworCisjIHZpbGU6bWFrZW1vZGUKZGlmZiAtLWdpdCBhL3Rlc3QvcmFpbHJvYWQuYyBiL3Rlc3QvcmFpbHJvYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2RjNDZmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9yYWlscm9hZC5jCkBAIC0wLDAgKzEsMjU0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMTEsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5IC0gMjAwMAorICoKKyAqICRJZDogcmFpbHJvYWQuYyx2IDEuMjEgMjAxMy8wOS8yOCAyMjowMjoxNyB0b20gRXhwICQKKyAqCisgKiBBIHNpbXBsZSBkZW1vIG9mIHRoZSB0ZXJtY2FwIGludGVyZmFjZS4KKyAqLworI2RlZmluZSBVU0VfVElORk8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfVEdFVEVOVAorCitzdGF0aWMgY2hhciAqd2lwZWl0Oworc3RhdGljIGNoYXIgKm1vdmVpdDsKK3N0YXRpYyBpbnQgbGVuZ3RoOworc3RhdGljIGludCBoZWlnaHQ7CisKK3N0YXRpYyBjaGFyICpmaW5pc0M7CitzdGF0aWMgY2hhciAqZmluaXNTOworc3RhdGljIGNoYXIgKmZpbmlzVTsKKworc3RhdGljIGNoYXIgKnN0YXJ0QzsKK3N0YXRpYyBjaGFyICpzdGFydFM7CitzdGF0aWMgY2hhciAqc3RhcnRVOworCitzdGF0aWMgY2hhciAqYmFja3VwOworCitzdGF0aWMgYm9vbCBpbnRlcnJ1cHRlZCA9IEZBTFNFOworCitzdGF0aWMKK1RQVVRTX1BST1RPKG91dGMsIGMpCit7CisgICAgaW50IHJjID0gT0s7CisKKyAgICBpZiAoaW50ZXJydXB0ZWQpIHsKKwljaGFyIHRtcCA9IChjaGFyKSBjOworCWlmICh3cml0ZShTVERPVVRfRklMRU5PLCAmdG1wLCAoc2l6ZV90KSAxKSA9PSAtMSkKKwkgICAgcmMgPSBFUlI7CisgICAgfSBlbHNlIHsKKwlpZiAocHV0YyhjLCBzdGRvdXQpID09IEVPRikKKwkgICAgcmMgPSBFUlI7CisgICAgfQorICAgIFRQVVRTX1JFVFVSTihyYyk7Cit9CisKK3N0YXRpYyB2b2lkCitQdXRDaGFyKGludCBjaCkKK3sKKyAgICBwdXRjaGFyKGNoKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBuYXBtcyhtb3ZlaXQgPyAxMCA6IDUwKTsJLyogbm90IHJlYWxseSB0ZXJtY2FwLi4uICovCit9CisKK3N0YXRpYyB2b2lkCitCYWNrdXAodm9pZCkKK3sKKyAgICB0cHV0cyhiYWNrdXAgIT0gMCA/IGJhY2t1cCA6ICJcYiIsIDEsIG91dGMpOworfQorCitzdGF0aWMgdm9pZAorTXlTaG93Q3Vyc29yKGludCBmbGFnKQoreworICAgIGlmIChzdGFydEMgIT0gMCAmJiBmaW5pc0MgIT0gMCkgeworCXRwdXRzKGZsYWcgPyBzdGFydEMgOiBmaW5pc0MsIDEsIG91dGMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK1N0YW5kT3V0KGludCBmbGFnKQoreworICAgIGlmIChzdGFydFMgIT0gMCAmJiBmaW5pc1MgIT0gMCkgeworCXRwdXRzKGZsYWcgPyBzdGFydFMgOiBmaW5pc1MsIDEsIG91dGMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK1VuZGVybGluZShpbnQgZmxhZykKK3sKKyAgICBpZiAoc3RhcnRVICE9IDAgJiYgZmluaXNVICE9IDApIHsKKwl0cHV0cyhmbGFnID8gc3RhcnRVIDogZmluaXNVLCAxLCBvdXRjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitTaG93U2lnbihjaGFyICpzdHJpbmcpCit7CisgICAgY2hhciAqYmFzZSA9IHN0cmluZzsKKyAgICBpbnQgY2gsIGZpcnN0LCBsYXN0OworCisgICAgaWYgKG1vdmVpdCAhPSAwKSB7CisJdHB1dHModGdvdG8obW92ZWl0LCAwLCBoZWlnaHQgLSAxKSwgMSwgb3V0Yyk7CisJdHB1dHMod2lwZWl0LCAxLCBvdXRjKTsKKyAgICB9CisKKyAgICB3aGlsZSAoKnN0cmluZyAhPSAwKSB7CisJY2ggPSAqc3RyaW5nOworCWlmIChjaCAhPSAnICcpIHsKKwkgICAgaWYgKG1vdmVpdCAhPSAwKSB7CisJCWZvciAoZmlyc3QgPSBsZW5ndGggLSAyOyBmaXJzdCA+PSAoc3RyaW5nIC0gYmFzZSk7IGZpcnN0LS0pIHsKKwkJICAgIGlmIChmaXJzdCA8IGxlbmd0aCAtIDEpIHsKKwkJCXRwdXRzKHRnb3RvKG1vdmVpdCwgZmlyc3QgKyAxLCBoZWlnaHQgLSAxKSwgMSwgb3V0Yyk7CisJCQlQdXRDaGFyKCcgJyk7CisJCSAgICB9CisJCSAgICB0cHV0cyh0Z290byhtb3ZlaXQsIGZpcnN0LCBoZWlnaHQgLSAxKSwgMSwgb3V0Yyk7CisJCSAgICBQdXRDaGFyKGNoKTsKKwkJfQorCSAgICB9IGVsc2UgeworCQlsYXN0ID0gY2g7CisJCWlmIChpc2FscGhhKGNoKSkgeworCQkgICAgZmlyc3QgPSBpc3VwcGVyKGNoKSA/ICdBJyA6ICdhJzsKKwkJfSBlbHNlIGlmIChpc2RpZ2l0KGNoKSkgeworCQkgICAgZmlyc3QgPSAnMCc7CisJCX0gZWxzZSB7CisJCSAgICBmaXJzdCA9IGNoOworCQl9CisJCWlmIChmaXJzdCA8IGxhc3QpIHsKKwkJICAgIFVuZGVybGluZSgxKTsKKwkJICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpIHsKKwkJCVB1dENoYXIoZmlyc3QpOworCQkJQmFja3VwKCk7CisJCQlmaXJzdCsrOworCQkgICAgfQorCQkgICAgVW5kZXJsaW5lKDApOworCQl9CisJICAgIH0KKwkgICAgaWYgKG1vdmVpdCAhPSAwKQorCQlCYWNrdXAoKTsKKwl9CisJU3RhbmRPdXQoMSk7CisJUHV0Q2hhcihjaCk7CisJU3RhbmRPdXQoMCk7CisJZmZsdXNoKHN0ZG91dCk7CisJc3RyaW5nKys7CisgICAgfQorICAgIGlmIChtb3ZlaXQgIT0gMCkKKwl0cHV0cyh3aXBlaXQsIDEsIG91dGMpOworICAgIHB1dGNoYXIoJ1xuJyk7Cit9CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwKHZvaWQpCit7CisgICAgVW5kZXJsaW5lKDApOworICAgIFN0YW5kT3V0KDApOworICAgIE15U2hvd0N1cnNvcigxKTsKK30KKworc3RhdGljIHZvaWQKK29uc2lnKGludCBuIEdDQ19VTlVTRUQpCit7CisgICAgaW50ZXJydXB0ZWQgPSBUUlVFOworICAgIGNsZWFudXAoKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZAorcmFpbHJvYWQoY2hhciAqKmFyZ3MpCit7CisgICAgTkNVUlNFU19DT05TVCBjaGFyICpuYW1lID0gZ2V0ZW52KCJURVJNIik7CisgICAgY2hhciBidWZmZXJbMTAyNF07CisgICAgY2hhciBhcmVhWzEwMjRdLCAqYXAgPSBhcmVhOworCisgICAgaWYgKG5hbWUgPT0gMCkKKwluYW1lID0gImR1bWIiOworICAgIGlmICh0Z2V0ZW50KGJ1ZmZlciwgbmFtZSkgPj0gMCkgeworCisJd2lwZWl0ID0gdGdldHN0cigiY2UiLCAmYXApOworCWhlaWdodCA9IHRnZXRudW0oImxpIik7CisJbGVuZ3RoID0gdGdldG51bSgiY28iKTsKKwltb3ZlaXQgPSB0Z2V0c3RyKCJjbSIsICZhcCk7CisKKwlpZiAod2lwZWl0ID09IDAKKwkgICAgfHwgbW92ZWl0ID09IDAKKwkgICAgfHwgaGVpZ2h0IDw9IDAKKwkgICAgfHwgbGVuZ3RoIDw9IDApIHsKKwkgICAgd2lwZWl0ID0gMDsKKwkgICAgbW92ZWl0ID0gMDsKKwkgICAgaGVpZ2h0ID0gMDsKKwkgICAgbGVuZ3RoID0gMDsKKwl9CisKKwlzdGFydFMgPSB0Z2V0c3RyKCJzbyIsICZhcCk7CisJZmluaXNTID0gdGdldHN0cigic2UiLCAmYXApOworCisJc3RhcnRVID0gdGdldHN0cigidXMiLCAmYXApOworCWZpbmlzVSA9IHRnZXRzdHIoInVlIiwgJmFwKTsKKworCWJhY2t1cCA9IHRnZXRzdHIoImxlIiwgJmFwKTsKKworCXN0YXJ0QyA9IHRnZXRzdHIoInZlIiwgJmFwKTsKKwlmaW5pc0MgPSB0Z2V0c3RyKCJ2aSIsICZhcCk7CisKKwlNeVNob3dDdXJzb3IoMCk7CisKKwlDQVRDSEFMTChvbnNpZyk7CisKKwl3aGlsZSAoKmFyZ3MpIHsKKwkgICAgU2hvd1NpZ24oKmFyZ3MrKyk7CisJfQorCU15U2hvd0N1cnNvcigxKTsKKyAgICB9Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGlmIChhcmdjID4gMSkgeworCXJhaWxyb2FkKGFyZ3YgKyAxKTsKKyAgICB9IGVsc2UgeworCXN0YXRpYyBjaGFyIHdvcmxkW10gPSAiSGVsbG8gV29ybGQiOworCXN0YXRpYyBjaGFyICpoZWxsb1tdID0KKwl7d29ybGQsIDB9OworCXJhaWxyb2FkKGhlbGxvKTsKKyAgICB9CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworI2Vsc2UKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELAorICAgICBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRlcm1jYXBcbiIpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9yYWluLmMgYi90ZXN0L3JhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjEyM2JhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9yYWluLmMKQEAgLTAsMCArMSwzODcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiByYWluLmMsdiAxLjQxIDIwMTQvMDgvMDIgMTc6MjQ6MDcgdG9tIEV4cCAkCisgKi8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworLyogcmFpbiAxMS8zLzE5ODAgRVBTL0NJVEhFUCAqLworCisjaWZkZWYgVVNFX1BUSFJFQURTCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKK1dBTlRfVVNFX1dJTkRPVygpOworCisjZGVmaW5lIE1BWF9USFJFQURTCTEwCisjZGVmaW5lIE1BWF9EUk9QCTUKKworc3RydWN0IERBVEE7CisKK3R5cGVkZWYgdm9pZCAoKkRyYXdQYXJ0KSAoc3RydWN0IERBVEEgKik7CisKK3R5cGVkZWYgc3RydWN0IERBVEEgeworICAgIGludCB5LCB4OworI2lmZGVmIFVTRV9QVEhSRUFEUworICAgIERyYXdQYXJ0IGZ1bmM7CisgICAgaW50IHN0YXRlOworI2VuZGlmCit9IERBVEE7CisKKyNpZmRlZiBVU0VfUFRIUkVBRFMKK3B0aHJlYWRfY29uZF90IGNvbmRfbmV4dF9kcm9wOworcHRocmVhZF9tdXRleF90IG11dGV4X25leHRfZHJvcDsKK3N0YXRpYyBpbnQgdXNlZF90aHJlYWRzOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgcHRocmVhZF90IG15c2VsZjsKKyAgICBsb25nIGNvdW50ZXI7Cit9IFNUQVRTOworCitzdGF0aWMgU1RBVFMgZHJvcF90aHJlYWRzW01BWF9USFJFQURTXTsKKyNlbmRpZgorCitzdGF0aWMgdm9pZAorb25zaWcoaW50IG4gR0NDX1VOVVNFRCkKK3sKKyAgICBjdXJzX3NldCgxKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgZG91YmxlCityYW5mKHZvaWQpCit7CisgICAgbG9uZyByID0gKHJhbmQoKSAmIDA3Nzc3Nyk7CisgICAgcmV0dXJuICgoZG91YmxlKSByIC8gMzI3NjguKTsKK30KKworc3RhdGljIGludAorcmFuZG9tX3godm9pZCkKK3sKKyAgICByZXR1cm4gKGludCkgKCgoZG91YmxlKSAoQ09MUyAtIDQpICogcmFuZigpKSArIDIpOworfQorCitzdGF0aWMgaW50CityYW5kb21feSh2b2lkKQoreworICAgIHJldHVybiAoaW50KSAoKChkb3VibGUpIChMSU5FUyAtIDQpICogcmFuZigpKSArIDIpOworfQorCitzdGF0aWMgaW50CituZXh0X2ooaW50IGopCit7CisgICAgaWYgKGogPT0gMCkKKwlqID0gTUFYX0RST1AgLSAxOworICAgIGVsc2UKKwktLWo7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCB6ID0gKGludCkgKDMgKiByYW5mKCkpOworCSh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoQ09MT1JfUEFJUih6KSwgKHogPyBBX0JPTEQgOiBBX05PUk1BTCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGo7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJ0MShEQVRBICogZHJvcCkKK3sKKyAgICBNdkFkZENoKGRyb3AtPnksIGRyb3AtPngsICcuJyk7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJ0MihEQVRBICogZHJvcCkKK3sKKyAgICBNdkFkZENoKGRyb3AtPnksIGRyb3AtPngsICdvJyk7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJ0MyhEQVRBICogZHJvcCkKK3sKKyAgICBNdkFkZENoKGRyb3AtPnksIGRyb3AtPngsICdPJyk7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJ0NChEQVRBICogZHJvcCkKK3sKKyAgICBNdkFkZENoKGRyb3AtPnkgLSAxLCBkcm9wLT54LCAnLScpOworICAgIE12QWRkU3RyKGRyb3AtPnksIGRyb3AtPnggLSAxLCAifC58Iik7CisgICAgTXZBZGRDaChkcm9wLT55ICsgMSwgZHJvcC0+eCwgJy0nKTsKK30KKworc3RhdGljIHZvaWQKK3BhcnQ1KERBVEEgKiBkcm9wKQoreworICAgIE12QWRkQ2goZHJvcC0+eSAtIDIsIGRyb3AtPngsICctJyk7CisgICAgTXZBZGRTdHIoZHJvcC0+eSAtIDEsIGRyb3AtPnggLSAxLCAiLyBcXCIpOworICAgIE12QWRkU3RyKGRyb3AtPnksIGRyb3AtPnggLSAyLCAifCBPIHwiKTsKKyAgICBNdkFkZFN0cihkcm9wLT55ICsgMSwgZHJvcC0+eCAtIDEsICJcXCAvIik7CisgICAgTXZBZGRDaChkcm9wLT55ICsgMiwgZHJvcC0+eCwgJy0nKTsKK30KKworc3RhdGljIHZvaWQKK3BhcnQ2KERBVEEgKiBkcm9wKQoreworICAgIE12QWRkQ2goZHJvcC0+eSAtIDIsIGRyb3AtPngsICcgJyk7CisgICAgTXZBZGRTdHIoZHJvcC0+eSAtIDEsIGRyb3AtPnggLSAxLCAiICAgIik7CisgICAgTXZBZGRTdHIoZHJvcC0+eSwgZHJvcC0+eCAtIDIsICIgICAgICIpOworICAgIE12QWRkU3RyKGRyb3AtPnkgKyAxLCBkcm9wLT54IC0gMSwgIiAgICIpOworICAgIE12QWRkQ2goZHJvcC0+eSArIDIsIGRyb3AtPngsICcgJyk7Cit9CisKKyNpZmRlZiBVU0VfUFRIUkVBRFMKK3N0YXRpYyB2b2lkCituYXBzb21lKHZvaWQpCit7CisgICAgbmFwbXMoNjApOworfQorCisvKgorICogVGhpcyBydW5zIGluc2lkZSB0aGUgdXNlX3dpbmRvdygpIG11dGV4LgorICovCitzdGF0aWMgaW50CityZWFsbHlfZHJhdyhXSU5ET1cgKndpbiwgdm9pZCAqYXJnKQoreworICAgIERBVEEgKmRhdGEgPSAoREFUQSAqKSBhcmc7CisKKyAgICAodm9pZCkgd2luOworICAgIG5leHRfaihkYXRhLT5zdGF0ZSk7CisgICAgZGF0YS0+ZnVuYyhkYXRhKTsKKyAgICByZWZyZXNoKCk7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0aWMgdm9pZAorZHJhd19wYXJ0KHZvaWQgKCpmdW5jKSAoREFUQSAqKSwgaW50IHN0YXRlLCBEQVRBICogZGF0YSkKK3sKKyAgICBkYXRhLT5mdW5jID0gZnVuYzsKKyAgICBkYXRhLT5zdGF0ZSA9IHN0YXRlOworICAgIHVzZV93aW5kb3coc3Rkc2NyLCByZWFsbHlfZHJhdywgKHZvaWQgKikgZGF0YSk7CisgICAgbmFwc29tZSgpOworfQorCisvKgorICogVGVsbCB0aGUgdGhyZWFkcyB0aGF0IG9uZSBvZiB0aGVtIGNhbiBzdGFydCB3b3JrIG9uIGEgbmV3IHJhaW5kcm9wLgorICogVGhleSBtYXkgYWxsIGJlIGJ1c3kgaWYgd2UncmUgc2VuZGluZyByZXF1ZXN0cyB0b28gcmFwaWRseS4KKyAqLworc3RhdGljIGludAorcHV0X25leHRfZHJvcCh2b2lkKQoreworICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJmNvbmRfbmV4dF9kcm9wKTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfbmV4dF9kcm9wKTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogV2FpdCB1bnRpbCB3ZSdyZSBhc3NpZ25lZCB0aGUgdGFzayBvZiBkcmF3aW5nIGEgbmV3IHJhaW5kcm9wLgorICovCitzdGF0aWMgaW50CitnZXRfbmV4dF9kcm9wKHZvaWQpCit7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF9uZXh0X2Ryb3ApOworICAgIHB0aHJlYWRfY29uZF93YWl0KCZjb25kX25leHRfZHJvcCwgJm11dGV4X25leHRfZHJvcCk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgKgorZHJhd19kcm9wKHZvaWQgKmFyZykKK3sKKyAgICBEQVRBIG15ZGF0YTsKKyAgICBpbnQgbXlzdGF0czsKKworICAgIC8qCisgICAgICogRmluZCBteXNlbGYgaW4gdGhlIGxpc3Qgb2YgdGhyZWFkcyBzbyB3ZSBjYW4gY291bnQgdGhlIG51bWJlciBvZiBsb29wcy4KKyAgICAgKi8KKyAgICBmb3IgKG15c3RhdHMgPSAwOyBteXN0YXRzIDwgTUFYX1RIUkVBRFM7ICsrbXlzdGF0cykgeworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pICYmICFkZWZpbmVkKF9fV0lOUFRIUkVBRFNfVkVSU0lPTikKKwlpZiAoZHJvcF90aHJlYWRzW215c3RhdHNdLm15c2VsZi5wID09IHB0aHJlYWRfc2VsZigpLnApCisjZWxzZQorCWlmIChkcm9wX3RocmVhZHNbbXlzdGF0c10ubXlzZWxmID09IHB0aHJlYWRfc2VsZigpKQorI2VuZGlmCisJICAgIGJyZWFrOworICAgIH0KKworICAgIGRvIHsKKwlpZiAobXlzdGF0cyA8IE1BWF9USFJFQURTKQorCSAgICBkcm9wX3RocmVhZHNbbXlzdGF0c10uY291bnRlcisrOworCisJLyoKKwkgKiBNYWtlIGEgY29weSBvZiBjYWxsZXIncyBkYXRhLiAgV2UncmUgY2hlYXRpbmcgZm9yIHRoZSBjYXNlcyBhZnRlcgorCSAqIHRoZSBmaXJzdCBsb29wIHNpbmNlIHdlIHN0aWxsIGhhdmUgYSBwb2ludGVyIGludG8gdGhlIG1haW4gdGhyZWFkCisJICogdG8gdGhlIGRhdGEgd2hpY2ggaXQgdXNlcyBmb3Igc2V0dGluZyB1cCB0aGlzIHRocmVhZCAoYnV0IGl0IGhhcworCSAqIGJlZW4gbW9kaWZpZWQgdG8gdXNlIGRpZmZlcmVudCBjb29yZGluYXRlcykuCisJICovCisJbXlkYXRhID0gKihEQVRBICopIGFyZzsKKworCWRyYXdfcGFydChwYXJ0MSwgMCwgJm15ZGF0YSk7CisJZHJhd19wYXJ0KHBhcnQyLCAxLCAmbXlkYXRhKTsKKwlkcmF3X3BhcnQocGFydDMsIDIsICZteWRhdGEpOworCWRyYXdfcGFydChwYXJ0NCwgMywgJm15ZGF0YSk7CisJZHJhd19wYXJ0KHBhcnQ1LCA0LCAmbXlkYXRhKTsKKwlkcmF3X3BhcnQocGFydDYsIDAsICZteWRhdGEpOworICAgIH0gd2hpbGUgKGdldF9uZXh0X2Ryb3AoKSk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFRoZSBkZXNjcmlwdGlvbiBvZiBwdGhyZWFkX2NyZWF0ZSgpIGlzIG1pc2xlYWRpbmcsIHNpbmNlIGl0IGltcGxpZXMgdGhhdAorICogdGhyZWFkcyB3aWxsIGV4aXQgY2xlYW5seSBhZnRlciB0aGVpciBmdW5jdGlvbiByZXR1cm5zLgorICoKKyAqIFNpbmNlIHRoZXkgZG8gbm90IChhbmQgdGhlIG51bWJlciBvZiB0aHJlYWRzIGlzIGxpbWl0ZWQgYnkgc3lzdGVtCisgKiByZXNvdXJjZXMpLCBtYWtlIGEgbGltaXRlZCBudW1iZXIgb2YgdGhyZWFkcywgYW5kIHNpZ25hbCBhbnkgdGhhdCBhcmUKKyAqIHdhaXRpbmcgd2hlbiB3ZSB3YW50IGEgdGhyZWFkIHBhc3QgdGhhdCBsaW1pdC4KKyAqLworc3RhdGljIGludAorc3RhcnRfZHJvcChEQVRBICogZGF0YSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIXVzZWRfdGhyZWFkcykgeworCS8qIG11dGV4IGFuZCBjb25kaXRpb24gZm9yIHNpZ25hbGxpbmcgdGhyZWFkICovCisJcHRocmVhZF9tdXRleF9pbml0KCZtdXRleF9uZXh0X2Ryb3AsIE5VTEwpOworCXB0aHJlYWRfY29uZF9pbml0KCZjb25kX25leHRfZHJvcCwgTlVMTCk7CisgICAgfQorCisgICAgaWYgKHVzZWRfdGhyZWFkcyA8IE1BWF9USFJFQURTKSB7CisJcmMgPSBwdGhyZWFkX2NyZWF0ZSgmKGRyb3BfdGhyZWFkc1t1c2VkX3RocmVhZHNdLm15c2VsZiksCisJCQkgICAgTlVMTCwKKwkJCSAgICBkcmF3X2Ryb3AsCisJCQkgICAgZGF0YSk7CisJKyt1c2VkX3RocmVhZHM7CisgICAgfSBlbHNlIHsKKwlyYyA9IHB1dF9uZXh0X2Ryb3AoKTsKKyAgICB9CisgICAgcmV0dXJuIHJjOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2dldF9pbnB1dCh2b2lkKQoreworICAgIHJldHVybiBVU0lOR19XSU5ET1coc3Rkc2NyLCB3Z2V0Y2gpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwKKyAgICAgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBib29sIGRvbmUgPSBGQUxTRTsKKyAgICBEQVRBIGRyb3A7CisjaWZuZGVmIFVTRV9QVEhSRUFEUworICAgIERBVEEgbGFzdFtNQVhfRFJPUF07CisjZW5kaWYKKyAgICBpbnQgaiA9IDA7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBDQVRDSEFMTChvbnNpZyk7CisKKyAgICBpbml0c2NyKCk7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCBiZyA9IENPTE9SX0JMQUNLOworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIGJnID0gLTE7CisjZW5kaWYKKwlpbml0X3BhaXIoMSwgQ09MT1JfQkxVRSwgKHNob3J0KSBiZyk7CisJaW5pdF9wYWlyKDIsIENPTE9SX0NZQU4sIChzaG9ydCkgYmcpOworICAgIH0KKyAgICBubCgpOworICAgIG5vZWNobygpOworICAgIGN1cnNfc2V0KDApOworICAgIHRpbWVvdXQoMCk7CisKKyNpZm5kZWYgVVNFX1BUSFJFQURTCisgICAgZm9yIChqID0gTUFYX0RST1A7IC0taiA+PSAwOykgeworCWxhc3Rbal0ueCA9IHJhbmRvbV94KCk7CisJbGFzdFtqXS55ID0gcmFuZG9tX3koKTsKKyAgICB9CisgICAgaiA9IDA7CisjZW5kaWYKKworICAgIHdoaWxlICghZG9uZSkgeworCWRyb3AueCA9IHJhbmRvbV94KCk7CisJZHJvcC55ID0gcmFuZG9tX3koKTsKKworI2lmZGVmIFVTRV9QVEhSRUFEUworCWlmIChzdGFydF9kcm9wKCZkcm9wKSAhPSAwKSB7CisJICAgIGJlZXAoKTsKKwl9CisjZWxzZQorCS8qCisJICogVGhlIG5vbi10aHJlYWRlZCBjb2RlIGRyYXdzIHBhcnRzIG9mIGVhY2ggZHJvcCBvbiBlYWNoIGxvb3AuCisJICovCisJcGFydDEoJmRyb3ApOworCisJcGFydDIoJmxhc3Rbal0pOworCisJaiA9IG5leHRfaihqKTsKKwlwYXJ0MygmbGFzdFtqXSk7CisKKwlqID0gbmV4dF9qKGopOworCXBhcnQ0KCZsYXN0W2pdKTsKKworCWogPSBuZXh0X2ooaik7CisJcGFydDUoJmxhc3Rbal0pOworCisJaiA9IG5leHRfaihqKTsKKwlwYXJ0NigmbGFzdFtqXSk7CisKKwlsYXN0W2pdID0gZHJvcDsKKyNlbmRpZgorCisJc3dpdGNoIChnZXRfaW5wdXQoKSkgeworCWNhc2UgKCdxJyk6CisJY2FzZSAoJ1EnKToKKwkgICAgZG9uZSA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3MnOgorCSAgICBub2RlbGF5KHN0ZHNjciwgRkFMU0UpOworCSAgICBicmVhazsKKwljYXNlICcgJzoKKwkgICAgbm9kZWxheShzdGRzY3IsIFRSVUUpOworCSAgICBicmVhazsKKyNpZmRlZiBLRVlfUkVTSVpFCisJY2FzZSAoS0VZX1JFU0laRSk6CisJICAgIGJyZWFrOworI2VuZGlmCisJfQorCW5hcG1zKDUwKTsKKyAgICB9CisgICAgY3Vyc19zZXQoMSk7CisgICAgZW5kd2luKCk7CisjaWZkZWYgVVNFX1BUSFJFQURTCisgICAgcHJpbnRmKCJDb3VudHMgcGVyIHRocmVhZDpcbiIpOworICAgIGZvciAoaiA9IDA7IGogPCBNQVhfVEhSRUFEUzsgKytqKQorCXByaW50ZigiICAlZDolbGRcbiIsIGosIGRyb3BfdGhyZWFkc1tqXS5jb3VudGVyKTsKKyNlbmRpZgorICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L3JlZHJhdy5jIGIvdGVzdC9yZWRyYXcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2IwZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9yZWRyYXcuYwpAQCAtMCwwICsxLDE3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDExLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IHJlZHJhdy5jLHYgMS44IDIwMTIvMTIvMDggMjA6NDY6MDIgdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgdGhlIHJlZHJhd3dpbigpIGFuZCB3cmVkcmF3bG4oKSBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAwNi8xMS80CisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCitzdGF0aWMgdm9pZAordHJhc2goaW50IGJlZ194LCBpbnQgbWF4X3gsIGludCBjdXJfeCkKK3sKKyAgICBpbnQgeDsKKworICAgIGZvciAoeCA9IGN1cl94OyB4ID4gYmVnX3g7IC0teCkgeworCXB1dGNoYXIoJ1xiJyk7CisgICAgfQorICAgIGZvciAoeCA9IGJlZ194OyB4IDwgbWF4X3g7ICsreCkgeworCWlmICh4IDwgY3VyX3gpCisJICAgIHB1dGNoYXIoJzwnKTsKKwllbHNlIGlmICh4ID09IGN1cl94KQorCSAgICBwdXRjaGFyKCc9Jyk7CisJZWxzZSBpZiAoeCA+IGN1cl94KQorCSAgICBwdXRjaGFyKCc+Jyk7CisgICAgfQorICAgIGZvciAoeCA9IG1heF94OyB4ID4gY3VyX3g7IC0teCkgeworCXB1dGNoYXIoJ1xiJyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAordGVzdF9yZWRyYXcoV0lORE9XICp3aW4pCit7CisgICAgV0lORE9XICp3aW4xOworICAgIFdJTkRPVyAqd2luMjsKKyAgICBib29sIGRvbmUgPSBGQUxTRTsKKyAgICBpbnQgY2gsIHksIHg7CisgICAgaW50IG1heF95LCBtYXhfeDsKKyAgICBpbnQgYmVnX3ksIGJlZ194OworCisgICAgYXNzZXJ0KHdpbiAhPSAwKTsKKworICAgIHNjcm9sbG9rKHdpbiwgVFJVRSk7CisgICAga2V5cGFkKHdpbiwgVFJVRSk7CisgICAgZ2V0bWF4eXgod2luLCBtYXhfeSwgbWF4X3gpOworICAgIGdldGJlZ3l4KHdpbiwgYmVnX3ksIGJlZ194KTsKKyAgICB3aGlsZSAoIWRvbmUpIHsKKwljaCA9IHdnZXRjaCh3aW4pOworCWdldHl4KHdpbiwgeSwgeCk7CisJc3dpdGNoIChjaCkgeworCWNhc2UgJ3EnOgorCSAgICAvKiBGQUxMVEhSVSAqLworCWNhc2UgRVNDQVBFOgorCSAgICBkb25lID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHdpbjEgPSBuZXd3aW4obWF4X3ksIG1heF94LAorCQkJICBiZWdfeSwgYmVnX3gpOworCSAgICB3aW4yID0gbmV3d2luKG1heF95IC0gMiwgbWF4X3ggLSAyLAorCQkJICBiZWdfeSArIDEsIGJlZ194ICsgMSk7CisJICAgIGJveCh3aW4xLCAwLCAwKTsKKwkgICAgd3JlZnJlc2god2luMSk7CisKKwkgICAgdGVzdF9yZWRyYXcod2luMik7CisKKwkgICAgZGVsd2luKHdpbjIpOworCSAgICBkZWx3aW4od2luMSk7CisKKwkgICAgdG91Y2h3aW4od2luKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICchJzoKKwkgICAgLyoKKwkgICAgICogcmVkcmF3d2luKCkgYW5kIHdyZWRyYXdsbigpIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUKKwkgICAgICogcG9zc2liaWxpdHkgdGhhdCB0aGUgY3Vyc29yIG1heSBoYXZlIG1vdmVkLiAgVGhhdCBtYWtlcyB0aGVtCisJICAgICAqIGN1bWJlcnNvbWUgZm9yIHVzaW5nIHdpdGggYSBzaGVsbCBjb21tYW5kLiAgU28gd2Ugc2ltcGx5CisJICAgICAqIHRyYXNoIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIHdpbmRvdyB1c2luZyBiYWNrc3BhY2Uvb3ZlcndyaXRlLgorCSAgICAgKi8KKwkgICAgdHJhc2goYmVnX3gsIG1heF94LCB4ICsgYmVnX3gpOworCSAgICBicmVhazsKKworI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorCWNhc2UgJ0AnOgorCSAgICAvKgorCSAgICAgKiBGb3IgYSBzaGVsbCBjb21tYW5kLCB3ZSBjYW4gd29yayBhcm91bmQgdGhlIHByb2JsZW0gbm90ZWQgYWJvdmUKKwkgICAgICogdXNpbmcgbXZjdXIoKS4gIEl0IGlzIGlmZGVmJ2QgZm9yIE5DVVJTRVMsIHNpbmNlIFgvT3BlbiBkb2VzCisJICAgICAqIG5vdCBkZWZpbmUgdGhlIGNhc2Ugd2hlcmUgdGhlIG9sZCBsb2NhdGlvbiBpcyB1bmtub3duLiAKKwkgICAgICovCisJICAgIElHTk9SRV9SQyhzeXN0ZW0oImRhdGUiKSk7CisJICAgIG12Y3VyKC0xLCAtMSwgeSwgeCk7CisJICAgIGJyZWFrOworI2VuZGlmCisKKwljYXNlIENUUkwoJ1cnKToKKwkgICAgcmVkcmF3d2luKHdpbik7CisJICAgIGJyZWFrOworCisJY2FzZSBDVFJMKCdMJyk6CisJICAgIHdyZWRyYXdsbih3aW4sIHksIDEpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX1VQOgorCSAgICBpZiAoeSA+IDApCisJCXdtb3ZlKHdpbiwgeSAtIDEsIHgpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX0RPV046CisJICAgIGlmICh5IDwgbWF4X3kpCisJCXdtb3ZlKHdpbiwgeSArIDEsIHgpOworCSAgICBicmVhazsKKworCWNhc2UgS0VZX0xFRlQ6CisJICAgIGlmICh4ID4gMCkKKwkJd21vdmUod2luLCB5LCB4IC0gMSk7CisJICAgIGJyZWFrOworCisJY2FzZSBLRVlfUklHSFQ6CisJICAgIGlmICh4IDwgbWF4X3gpCisJCXdtb3ZlKHdpbiwgeSwgeCArIDEpOworCSAgICBicmVhazsKKworCWRlZmF1bHQ6CisJICAgIGlmIChjaCA+IEtFWV9NSU4pIHsKKwkJd2FkZHN0cih3aW4sIGtleW5hbWUoY2gpKTsKKwkgICAgfSBlbHNlIHsKKwkJd2FkZHN0cih3aW4sIHVuY3RybChVQ2hhcihjaCkpKTsKKwkgICAgfQorCSAgICBicmVhazsKKwl9CisJd25vdXRyZWZyZXNoKHdpbik7CisJZG91cGRhdGUoKTsKKyAgICB9Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGluaXRzY3IoKTsKKyAgICByYXcoKTsKKyAgICBub2VjaG8oKTsKKyAgICB0ZXN0X3JlZHJhdyhzdGRzY3IpOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L3NhdmVzY3JlZW4uYyBiL3Rlc3Qvc2F2ZXNjcmVlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYmZlMDYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3NhdmVzY3JlZW4uYwpAQCAtMCwwICsxLDQ5MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDExLDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IHNhdmVzY3JlZW4uYyx2IDEuMjcgMjAxNS8wMy8yOCAyMzoyMToyOCB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSBzYXZlL3Jlc3RvcmUgZnVuY3Rpb25zIGZyb20gdGhlIGN1cnNlcyBsaWJyYXJ5LgorICogVGhvbWFzIERpY2tleSAtIDIwMDcvNy8xNAorICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfU0NSX0RVTVAKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKworc3RhdGljIGJvb2wgdXNlX2luaXQgPSBGQUxTRTsKK3N0YXRpYyBib29sIGtlZXBfZHVtcHMgPSBGQUxTRTsKKworc3RhdGljIGludAorZmV4aXN0cyhjb25zdCBjaGFyICpuYW1lKQoreworICAgIHN0cnVjdCBzdGF0IHNiOworICAgIHJldHVybiAoc3RhdChuYW1lLCAmc2IpID09IDAgJiYgKHNiLnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpOworfQorCitzdGF0aWMgdm9pZAorc2V0dXBfbmV4dCh2b2lkKQoreworICAgIGN1cnNfc2V0KDEpOworICAgIHJlc2V0X3NoZWxsX21vZGUoKTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXAoY2hhciAqZmlsZXNbXSkKK3sKKyAgICBpbnQgbjsKKworICAgIGlmICgha2VlcF9kdW1wcykgeworCWZvciAobiA9IDA7IGZpbGVzW25dICE9IDA7ICsrbikgeworCSAgICB1bmxpbmsoZmlsZXNbbl0pOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2xvYWRfc2NyZWVuKGNoYXIgKmZpbGVuYW1lKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAodXNlX2luaXQpIHsKKwlpZiAoKHJlc3VsdCA9IHNjcl9pbml0KGZpbGVuYW1lKSkgIT0gRVJSKQorCSAgICByZXN1bHQgPSBzY3JfcmVzdG9yZShmaWxlbmFtZSk7CisgICAgfSBlbHNlIHsKKwlyZXN1bHQgPSBzY3Jfc2V0KGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIHNjcl9yZXN0b3JlKCkgb3Igc2NyX3NldCgpIG9wZXJhdGVzIG9uIGN1cnNjci4gIElmIHdlIHJlYWQgYSBjaGFyYWN0ZXIgdXNpbmcKKyAqIGdldGNoKCkgdGhhdCB3aWxsIHJlZnJlc2ggc3Rkc2NyLCB3aXBpbmcgb3V0IHRoZSByZXN1bHQuICBUbyBhdm9pZCB0aGF0LAorICogY29weSB0aGUgZGF0YSBiYWNrIGZyb20gY3Vyc2NyIHRvIHN0ZHNjci4KKyAqLworc3RhdGljIHZvaWQKK2FmdGVyX2xvYWQodm9pZCkKK3sKKyAgICBvdmVyd3JpdGUoY3Vyc2NyLCBzdGRzY3IpOworICAgIGRvdXBkYXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3doYXQoaW50IHdoaWNoLCBpbnQgbGFzdCkKK3sKKyAgICBpbnQgeSwgeCwgbjsKKyAgICB0aW1lX3Qgbm93OworICAgIGNoYXIgKm15dGltZTsKKworICAgIGdldHl4KHN0ZHNjciwgeSwgeCk7CisKKyAgICBtb3ZlKDAsIDApOworICAgIHByaW50dygiU2F2ZWQgJWQgb2YgJWQgKD8gZm9yIGhlbHApIiwgd2hpY2gsIGxhc3QgKyAxKTsKKworICAgIG5vdyA9IHRpbWUoKHRpbWVfdCAqKSAwKTsKKyAgICBteXRpbWUgPSBjdGltZSgmbm93KTsKKyAgICBmb3IgKG4gPSAoaW50KSBzdHJsZW4obXl0aW1lKSAtIDE7IG4gPj0gMDsgLS1uKSB7CisJaWYgKGlzc3BhY2UoVUNoYXIobXl0aW1lW25dKSkpIHsKKwkgICAgbXl0aW1lW25dID0gJ1wwJzsKKwl9IGVsc2UgeworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIG12cHJpbnR3KDAsIChDT0xTIC0gbiAtIDIpLCAiICVzIiwgbXl0aW1lKTsKKworICAgIG1vdmUoeSwgeCk7CisKKyAgICByZWZyZXNoKCk7Cit9CisKK3N0YXRpYyBpbnQKK2dldF9jb21tYW5kKGludCB3aGljaCwgaW50IGxhc3QpCit7CisgICAgaW50IGNoOworCisgICAgdGltZW91dCg1MCk7CisKKyAgICBkbyB7CisJc2hvd193aGF0KHdoaWNoLCBsYXN0KTsKKwljaCA9IGdldGNoKCk7CisgICAgfSB3aGlsZSAoY2ggPT0gRVJSKTsKKworICAgIHJldHVybiBjaDsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfaGVscChjb25zdCBjaGFyICoqaGVscCkKK3sKKyAgICBXSU5ET1cgKm15d2luID0gbmV3d2luKExJTkVTLCBDT0xTLCAwLCAwKTsKKyAgICBpbnQgbjsKKworICAgIGJveChteXdpbiwgMCwgMCk7CisgICAgd21vdmUobXl3aW4sIDEsIDEpOworICAgIGZvciAobiA9IDA7IGhlbHBbbl0gIT0gMDsgKytuKSB7CisJd21vdmUobXl3aW4sIDEgKyBuLCAyKTsKKwl3cHJpbnR3KG15d2luLCAiJS4qcyIsIENPTFMgLSA0LCBoZWxwW25dKTsKKyAgICB9CisgICAgd2dldGNoKG15d2luKTsKKyAgICBkZWx3aW4obXl3aW4pOworICAgIHRvdWNod2luKHN0ZHNjcik7CisgICAgcmVmcmVzaCgpOworfQorCitzdGF0aWMgdm9pZAorZWRpdG9yX2hlbHAodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqbXNnc1tdID0KKyAgICB7CisJIllvdSBhcmUgbm93IGluIHRoZSBzY3JlZW4tZWRpdG9yLCB3aGljaCBhbGxvd3MgeW91IHRvIG1ha2Ugc29tZSIsCisJImxpbmVzIG9uIHRoZSBzY3JlZW4sIGFzIHdlbGwgYXMgc2F2ZSBjb3BpZXMgb2YgdGhlIHNjcmVlbiB0byBhIiwKKwkidGVtcG9yYXJ5IGZpbGUiLAorCSIiLAorCSJLZXlzOiIsCisJIiAgIHEgICAgICAgICAgIHF1aXQiLAorCSIgICBuICAgICAgICAgICBydW4gdGhlIHNjcmVlbi1sb2FkZXIgdG8gc2hvdyB0aGUgc2F2ZWQgc2NyZWVucyIsCisJIiAgIDxzcGFjZT4gICAgIGR1bXAgYSBzY3JlZW4iLAorCSIiLAorCSIgICBhICAgICAgICAgICB0b2dnbGUgYmV0d2VlbiAnIycgYW5kIGdyYXBoaWMgc3ltYm9sIGZvciBkcmF3aW5nIiwKKwkiICAgYyAgICAgICAgICAgY2hhbmdlIGNvbG9yIGRyYXduIGJ5IGxpbmUgdG8gbmV4dCBpbiBwYWxldHRlIiwKKwkiICAgaCxqLGssbCBvciBhcnJvd3MgdG8gbW92ZSBhcm91bmQgdGhlIHNjcmVlbiwgZHJhd2luZyIsCisgICAgfTsKKyAgICBzaG93X2hlbHAobXNncyk7Cit9CisKK3N0YXRpYyB2b2lkCityZXBsYXlfaGVscCh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICptc2dzW10gPQorICAgIHsKKwkiWW91IGFyZSBub3cgaW4gdGhlIHNjcmVlbi1sb2FkZXIsIHdoaWNoIGFsbG93cyB5b3UgdG8gdmlldyIsCisJInRoZSBkdW1wZWQvcmVzdG9yZWQgc2NyZWVucy4iLAorCSIiLAorCSJLZXlzOiIsCisJIiAgIHEgICAgICAgICAgIHF1aXQiLAorCSIgICA8c3BhY2U+ICAgICBsb2FkIHRoZSBuZXh0IHNjcmVlbiIsCisJIiAgIDxiYWNrc3BhY2U+IGxvYWQgdGhlIHByZXZpb3VzIHNjcmVlbiIsCisgICAgfTsKKyAgICBzaG93X2hlbHAobXNncyk7Cit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICptc2dbXSA9CisgICAgeworCSJVc2FnZTogc2F2ZXNjcmVlbiBbLXJdIGZpbGVzIiwKKwkiIiwKKwkiT3B0aW9uczoiLAorCSIgLWYgZmlsZSAgZmlsbC9pbml0aWFsaXplIHNjcmVlbiB1c2luZyB0ZXh0IGZyb20gdGhpcyBmaWxlIiwKKwkiIC1pICAgICAgIHVzZSBzY3JfaW5pdC9zY3JfcmVzdG9yZSByYXRoZXIgdGhhbiBzY3Jfc2V0IiwKKwkiIC1rICAgICAgIGtlZXAgdGhlIHJlc3RvcmVkIGR1bXAtZmlsZXMgcmF0aGVyIHRoYW4gcmVtb3ZpbmcgdGhlbSIsCisJIiAtciAgICAgICByZXBsYXkgdGhlIHNjcmVlbi1kdW1wIGZpbGVzIgorICAgIH07CisgICAgdW5zaWduZWQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKG1zZyk7ICsrbikgeworCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ1tuXSk7CisgICAgfQorICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCBjaDsKKyAgICBpbnQgd2hpY2ggPSAwOworICAgIGludCBsYXN0OworICAgIGJvb2wgcmVwbGF5aW5nID0gRkFMU0U7CisgICAgYm9vbCBkb25lID0gRkFMU0U7CisgICAgY2hhciAqKmZpbGVzOworICAgIGNoYXIgKmZpbGxfYnkgPSAwOworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgY2NoYXJfdCBteWNjOworICAgIGludCBteXh4OworI2VuZGlmCisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJmOmlrciIpKSAhPSAtMSkgeworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdmJzoKKwkgICAgZmlsbF9ieSA9IG9wdGFyZzsKKwkgICAgYnJlYWs7CisJY2FzZSAnaSc6CisJICAgIHVzZV9pbml0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnayc6CisJICAgIGtlZXBfZHVtcHMgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdyJzoKKwkgICAgcmVwbGF5aW5nID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworICAgIGZpbGVzID0gYXJndiArIG9wdGluZDsKKyAgICBsYXN0ID0gYXJnYyAtIG9wdGluZCAtIDE7CisKKyAgICBpZiAocmVwbGF5aW5nKSB7CisJd2hpbGUgKGxhc3QgPj0gMCAmJiAhZmV4aXN0cyhmaWxlc1tsYXN0XSkpCisJICAgIC0tbGFzdDsKKyAgICB9CisKKyAgICBpbml0c2NyKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9lY2hvKCk7CisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisgICAgY3Vyc19zZXQoMCk7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXNob3J0IHBhaXI7CisJc2hvcnQgY29sb3I7CisKKwlzdGFydF9jb2xvcigpOworCS8qCisJICogQXNzdW1lIHBhaXJzIGlzIHRoZSBzcXVhcmUgb2YgY29sb3JzLCBhbmQgYXNzaWduIHBhaXJzIGdvaW5nIGRvd24KKwkgKiBzbyB0aGF0IHRoZXJlIGlzIG1pbmltYWwgY29uZmxpY3Qgd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvciAod2hpY2gKKwkgKiBjb3VudHMgdXApLiAgVGhlIGludGVudCBpcyBqdXN0IHRvIHNob3cgaG93IGNvbG9yIHBhaXIgdmFsdWVzIGFyZQorCSAqIHNhdmVkIGFuZCByZXN0b3JlZC4KKwkgKi8KKwlmb3IgKHBhaXIgPSAwOyBwYWlyIDwgQ09MT1JfUEFJUlM7ICsrcGFpcikgeworCSAgICBjb2xvciA9IChzaG9ydCkgKHBhaXIgJSAoQ09MT1JTIC0gMSkpOworCSAgICBpbml0X3BhaXIocGFpciwgKHNob3J0KSAoQ09MT1JfV0hJVEUgLSBjb2xvciksIGNvbG9yKTsKKwl9CisgICAgfQorCisgICAgaWYgKGZpbGxfYnkgIT0gMCkgeworCUZJTEUgKmZwID0gZm9wZW4oZmlsbF9ieSwgInIiKTsKKwlpZiAoZnAgIT0gMCkgeworCSAgICBib29sIGZpbGxlZCA9IEZBTFNFOworCSAgICBtb3ZlKDEsIDApOworCSAgICB3aGlsZSAoKGNoID0gZmdldGMoZnApKSAhPSBFT0YpIHsKKwkJaWYgKGFkZGNoKFVDaGFyKGNoKSkgPT0gRVJSKSB7CisJCSAgICBmaWxsZWQgPSBUUlVFOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICBmY2xvc2UoZnApOworCSAgICBpZiAoIWZpbGxlZCkgeworCQl3aGlsZSAoYWRkY2goJyAnKSAhPSBFUlIpIHsKKwkJICAgIDsKKwkJfQorCSAgICB9CisJICAgIG1vdmUoMCwgMCk7CisJfSBlbHNlIHsKKwkgICAgZW5kd2luKCk7CisJICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gXCIlc1wiXG4iLCBmaWxsX2J5KTsKKwkgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwl9CisgICAgfQorCisgICAgaWYgKHJlcGxheWluZykgeworCisJLyoKKwkgKiBVc2UgdGhlIGxhc3QgZmlsZSBhcyB0aGUgaW5pdGlhbC9jdXJyZW50IHNjcmVlbi4KKwkgKi8KKwlpZiAobGFzdCA8IDApIHsKKwkgICAgZW5kd2luKCk7CisJICAgIHByaW50ZigiTm8gc2NyZWVuLWR1bXBzIGdpdmVuXG4iKTsKKwkgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwl9CisKKwl3aGljaCA9IGxhc3Q7CisJaWYgKGxvYWRfc2NyZWVuKGZpbGVzW3doaWNoXSkgPT0gRVJSKSB7CisJICAgIGVuZHdpbigpOworCSAgICBwcmludGYoIkNhbm5vdCBsb2FkIHNjcmVlbi1kdW1wICVzXG4iLCBmaWxlc1t3aGljaF0pOworCSAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCX0KKwlhZnRlcl9sb2FkKCk7CisKKwl3aGlsZSAoIWRvbmUgJiYgKGNoID0gZ2V0Y2goKSkgIT0gRVJSKSB7CisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnbic6CisJCS8qCisJCSAqIElmIHdlIGdvdCBhICJuZXh0IiBoZXJlLCBza2lwIHRvIHRoZSBmaW5hbCBzY3JlZW4gYmVmb3JlCisJCSAqIG1vdmluZyB0byB0aGUgbmV4dCBwcm9jZXNzLgorCQkgKi8KKwkJc2V0dXBfbmV4dCgpOworCQl3aGljaCA9IGxhc3Q7CisJCWRvbmUgPSBUUlVFOworCQlicmVhazsKKwkgICAgY2FzZSAncSc6CisJCWNsZWFudXAoZmlsZXMpOworCQlkb25lID0gVFJVRTsKKwkJYnJlYWs7CisJICAgIGNhc2UgS0VZX0JBQ0tTUEFDRToKKwkgICAgY2FzZSAnXGInOgorCQlpZiAoLS13aGljaCA8IDApCisJCSAgICB3aGljaCA9IGxhc3Q7CisJCWJyZWFrOworCSAgICBjYXNlICcgJzoKKwkJaWYgKCsrd2hpY2ggPiBsYXN0KQorCQkgICAgd2hpY2ggPSAwOworCQlicmVhazsKKwkgICAgY2FzZSAnPyc6CisJCXJlcGxheV9oZWxwKCk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQliZWVwKCk7CisJCWNvbnRpbnVlOworCSAgICB9CisKKwkgICAgaWYgKGNoID09ICdxJykgeworCQk7CisJICAgIH0gZWxzZSBpZiAoc2NyX3Jlc3RvcmUoZmlsZXNbd2hpY2hdKSA9PSBFUlIpIHsKKwkJZW5kd2luKCk7CisJCXByaW50ZigiQ2Fubm90IGxvYWQgc2NyZWVuLWR1bXAgJXNcbiIsIGZpbGVzW3doaWNoXSk7CisJCWNsZWFudXAoZmlsZXMpOworCQlFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworCSAgICB9IGVsc2UgeworCQl3cmVmcmVzaChjdXJzY3IpOworCSAgICB9CisJfQorCWVuZHdpbigpOworICAgIH0gZWxzZSB7CisJaW50IHkgPSAwOworCWludCB4ID0gMDsKKwlpbnQgY29sb3IgPSAwOworCWludCBhbHRjaGFycyA9IDA7CisKKwl3aGlsZSAoIWRvbmUpIHsKKwkgICAgc3dpdGNoIChnZXRfY29tbWFuZCh3aGljaCwgbGFzdCkpIHsKKwkgICAgY2FzZSAnbic6CisJCXNldHVwX25leHQoKTsKKwkJZG9uZSA9IFRSVUU7CisJCWJyZWFrOworCSAgICBjYXNlICdxJzoKKwkJY2xlYW51cChmaWxlcyk7CisJCWRvbmUgPSBUUlVFOworCQlicmVhazsKKwkgICAgY2FzZSAnICc6CisJCWlmIChmaWxlc1t3aGljaF0gIT0gMCkgeworCQkgICAgc2hvd193aGF0KHdoaWNoICsgMSwgbGFzdCk7CisJCSAgICBpZiAoc2NyX2R1bXAoZmlsZXNbd2hpY2hdKSA9PSBFUlIpIHsKKwkJCWVuZHdpbigpOworCQkJcHJpbnRmKCJDYW5ub3Qgd3JpdGUgc2NyZWVuLWR1bXAgJXNcbiIsIGZpbGVzW3doaWNoXSk7CisJCQljbGVhbnVwKGZpbGVzKTsKKwkJCWRvbmUgPSBUUlVFOworCQkJYnJlYWs7CisJCSAgICB9CisJCSAgICArK3doaWNoOworCQkgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCQkJaW50IGN4LCBjeTsKKwkJCXNob3J0IHBhaXIgPSAoc2hvcnQpICh3aGljaCAlIENPTE9SX1BBSVJTKTsKKwkJCS8qCisJCQkgKiBDaGFuZ2UgdGhlIGJhY2tncm91bmQgY29sb3IsIHRvIG1ha2UgaXQgbW9yZQorCQkJICogb2J2aW91cy4gIEJ1dCB0aGF0IGNoYW5nZXMgdGhlIGV4aXN0aW5nIHRleHQtY29sb3IuIAorCQkJICogQ29weSB0aGUgb2xkIHZhbHVlcyBmcm9tIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkCisJCQkgKiBzY3JlZW4uCisJCQkgKi8KKwkJCWJrZ2QoKGNodHlwZSkgQ09MT1JfUEFJUihwYWlyKSk7CisJCQlmb3IgKGN5ID0gMTsgY3kgPCBMSU5FUzsgKytjeSkgeworCQkJICAgIGZvciAoY3ggPSAwOyBjeCA8IENPTFM7ICsrY3gpIHsKKwkJCQl3bW92ZShjdXJzY3IsIGN5LCBjeCk7CisJCQkJd21vdmUoc3Rkc2NyLCBjeSwgY3gpOworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisJCQkJaWYgKHdpbl93Y2goY3Vyc2NyLCAmbXljYykgIT0gRVJSKSB7CisJCQkJICAgIG15eHggPSB3Y3dpZHRoKG15Y2MuY2hhcnNbMF0pOworCQkJCSAgICBpZiAobXl4eCA+IDApIHsKKwkJCQkJd2FkZF93Y2huc3RyKHN0ZHNjciwgJm15Y2MsIDEpOworCQkJCQljeCArPSAobXl4eCAtIDEpOworCQkJCSAgICB9CisJCQkJfQorI2Vsc2UKKwkJCQl3YWRkY2goc3Rkc2NyLCB3aW5jaChjdXJzY3IpKTsKKyNlbmRpZgorCQkJICAgIH0KKwkJCX0KKwkJICAgIH0KKwkJfSBlbHNlIHsKKwkJICAgIGJlZXAoKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBLRVlfTEVGVDoKKwkgICAgY2FzZSAnaCc6CisJCWlmICgtLXggPCAwKQorCQkgICAgeCA9IENPTFMgLSAxOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfRE9XTjoKKwkgICAgY2FzZSAnaic6CisJCWlmICgrK3kgPj0gTElORVMpCisJCSAgICB5ID0gMTsKKwkJYnJlYWs7CisJICAgIGNhc2UgS0VZX1VQOgorCSAgICBjYXNlICdrJzoKKwkJaWYgKC0teSA8IDEpCisJCSAgICB5ID0gTElORVMgLSAxOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfUklHSFQ6CisJICAgIGNhc2UgJ2wnOgorCQlpZiAoKyt4ID49IENPTFMpCisJCSAgICB4ID0gMDsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2EnOgorCQlhbHRjaGFycyA9ICFhbHRjaGFyczsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2MnOgorCQljb2xvciA9IChjb2xvciArIDEpICUgQ09MT1JTOworCQlicmVhazsKKwkgICAgY2FzZSAnPyc6CisJCWVkaXRvcl9oZWxwKCk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQliZWVwKCk7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIGlmICghZG9uZSkgeworCQlhdHRyX3QgYXR0ciA9IChBX1JFVkVSU0UgfCBDT0xPUl9QQUlSKGNvbG9yICogQ09MT1JTKSk7CisJCWNodHlwZSBjaDIgPSAoYWx0Y2hhcnMgPyBBQ1NfRElBTU9ORCA6ICcjJyk7CisJCW1vdmUoeSwgeCk7CisJCWFkZGNoKGNoMiB8IGF0dHIpOworCQltb3ZlKHksIHgpOworCSAgICB9CisJfQorCWVuZHdpbigpOworICAgIH0KKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisjZWxzZQoraW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHNjcmVlbi1kdW1wIGZ1bmN0aW9uc1xuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC9zYXZlc2NyZWVuLnNoIGIvdGVzdC9zYXZlc2NyZWVuLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU0OWFhMTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3NhdmVzY3JlZW4uc2gKQEAgLTAsMCArMSw1NiBAQAorIyEvYmluL3NoCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDA3LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRJZDogc2F2ZXNjcmVlbi5zaCx2IDEuNCAyMDA5LzEwLzEwIDE3OjA4OjQ1IHRvbSBFeHAgJAorIworIyBVc2UgdGhpcyBzY3JpcHQgdG8gZXhlcmNpc2UgInNhdmVzY3JlZW4iLgorIyBJdCBzdGFydHMgYnkgZ2VuZXJhdGluZyBhIHNlcmllcyBvZiB0ZW1wb3JhcnktZmlsZW5hbWVzLCB3aGljaCBhcmUgcGFzc2VkCisjIHRvIHRoZSB0ZXN0LXByb2dyYW0uICBMb29wIGFzIGxvbmcgYXMgdGhlIGZpcnN0IGZpbGUgbmFtZWQgZXhpc3RzLgorUEFSQU1TPQorTkZJTEVTPTQKK1BSRUZJWD1zYXZlc2NyZWVuLSQkCituPTAKK0JFR0lOUz0kUFJFRklYLSRuLnRtcAord2hpbGUgdGVzdCAkbiAhPSAkTkZJTEVTCitkbworCUxBVEVTVD0kUFJFRklYLSRuLnRtcAorCVBBUkFNUz0iJFBBUkFNUyAkTEFURVNUIgorCW49YGV4cHIgJG4gKyAxYAorZG9uZQorCisuL3NhdmVzY3JlZW4gJFBBUkFNUworaWYgdGVzdCAtZiAkQkVHSU5TCit0aGVuCisJd2hpbGUgdGVzdCAtZiAkQkVHSU5TCisJZG8KKwkJLi9zYXZlc2NyZWVuIC1yICRQQVJBTVMKKwkJdGVzdCAkPyAhPSAwICYmIGJyZWFrCisJZG9uZQorZWxzZQorCWVjaG8gIk5vIHNjcmVlbnMgd2VyZSBzYXZlZCIKK2ZpCmRpZmYgLS1naXQgYS90ZXN0L3RjbG9jay5jIGIvdGVzdC90Y2xvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmUxZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90Y2xvY2suYwpAQCAtMCwwICsxLDI2OCBAQAorLyogJElkOiB0Y2xvY2suYyx2IDEuMzQgMjAxNC8wOC8wMiAxNjozNzowMyB0b20gRXhwICQgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgSEFWRV9NQVRIX0gKKworI2luY2x1ZGUgPG1hdGguaD4KKworI2lmIFRJTUVfV0lUSF9TWVNfVElNRQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBpbmNsdWRlIDx0aW1lLmg+CisjZWxzZQorIyBpZiBIQVZFX1NZU19USU1FX0gKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyMgZW5kaWYKKyNlbmRpZgorCisvKgorICB0Y2xvY2sgLSBhbmFsb2cvZGlnaXRhbCBjbG9jayBmb3IgY3Vyc2VzLgorICBJZiBpdCBnaXZlcyB5b3Ugam95LCB0aGVuCisgIChhKSBJJ20gZ2xhZAorICAoYikgeW91IG5lZWQgdG8gZ2V0IG91dCBtb3JlIDotKQorCisgIFRoaXMgcHJvZ3JhbSBpcyBjb3B5cmlnaHQgSG93YXJkIEpvbmVzLCBTZXB0ZW1iZXIgMTk5NAorICAoaGEuam9uZXNAaWMuYWMudWspLiBJdCBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIGFzCisgIGxvbmcgYXMgdGhpcyBjb3B5cmlnaHQgbWVzc2FnZSByZW1haW5zIGludGFjdCwgYW5kIGFueQorICBtb2RpZmljYXRpb25zIGFyZSBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiBbSW4gZmFjdCwgaWYKKyAgeW91IG1vZGlmeSBpdCwgSSB3b3VsZG4ndCBtaW5kIHRoZSBtb2RpZmljYXRpb25zIGJhY2ssCisgIGVzcGVjaWFsbHkgaWYgdGhleSBhZGQgYW55IG5pY2UgZmVhdHVyZXMuIEEgZ29vZCBvbmUKKyAgd291bGQgYmUgYSBwcmVjYWxjIHRhYmxlIGZvciB0aGUgNjAgaGFuZCBwb3NpdGlvbnMsIHNvCisgIHRoYXQgdGhlIGZsb2F0aW5nIHBvaW50IHN0dWZmIGNhbiBiZSBkaXRjaGVkLiBBcyBJIHNhaWQsCisgIGl0IHdhcyBhIDIwIGhhY2t1cCBtaW51dGUgam9iLl0KKworICBDT01JTkcgU09PTjogdGZpc2h0YW5rLiBCZSB0aGUgZW52eSBvZiB5b3VyIG1hYy1vd25pbmcKKyAgY29sbGVhZ3Vlcy4KKyovCisKKy8qIFRvIGNvbXBpbGU6IGNjIC1vIHRjbG9jayB0Y2xvY2suYyAtbGN1cnNlcyAtbG0gKi8KKworI2lmbmRlZiBQSQorI2RlZmluZSBQSSAzLjE0MTU5MjY1NAorI2VuZGlmCisKKyNkZWZpbmUgc2lnbihfeCkgKF94PDA/LTE6MSkKKworI2RlZmluZSBBU1BFQ1QgMi4yCisjZGVmaW5lIFJPVU5EKHZhbHVlKSAoKGludCkoKHZhbHVlKSArIDAuNSkpCisKKyNkZWZpbmUgQTJYKGFuZ2xlLHJhZGl1cykgUk9VTkQoQVNQRUNUICogcmFkaXVzICogc2luKGFuZ2xlKSkKKyNkZWZpbmUgQTJZKGFuZ2xlLHJhZGl1cykgUk9VTkQocmFkaXVzICogY29zKGFuZ2xlKSkKKworLyogUGxvdCBhIHBvaW50ICovCitzdGF0aWMgdm9pZAorcGxvdChpbnQgeCwgaW50IHksIGludCBjb2wpCit7CisgICAgTXZBZGRDaCh5LCB4LCAoY2h0eXBlKSBjb2wpOworfQorCisvKiBEcmF3IGEgZGlhZ29uYWwoYXJiaXRyYXJ5KSBsaW5lIHVzaW5nIEJyZXNlbmhhbSdzIGFsb2dyaXRobS4gKi8KK3N0YXRpYyB2b2lkCitkbGluZShpbnQgcGFpciwgaW50IGZyb21feCwgaW50IGZyb21feSwgaW50IHgyLCBpbnQgeTIsIGludCBjaCkKK3sKKyAgICBpbnQgZHgsIGR5OworICAgIGludCBheCwgYXk7CisgICAgaW50IHN4LCBzeTsKKyAgICBpbnQgeCwgeTsKKyAgICBpbnQgZDsKKworICAgIGlmIChoYXNfY29sb3JzKCkpCisJKHZvaWQpIGF0dHJzZXQoQXR0ckFyZyhDT0xPUl9QQUlSKHBhaXIpLCAwKSk7CisKKyAgICBkeCA9IHgyIC0gZnJvbV94OworICAgIGR5ID0geTIgLSBmcm9tX3k7CisKKyAgICBheCA9IGFicyhkeCAqIDIpOworICAgIGF5ID0gYWJzKGR5ICogMik7CisKKyAgICBzeCA9IHNpZ24oZHgpOworICAgIHN5ID0gc2lnbihkeSk7CisKKyAgICB4ID0gZnJvbV94OworICAgIHkgPSBmcm9tX3k7CisKKyAgICBpZiAoYXggPiBheSkgeworCWQgPSBheSAtIChheCAvIDIpOworCisJd2hpbGUgKDEpIHsKKwkgICAgcGxvdCh4LCB5LCBjaCk7CisJICAgIGlmICh4ID09IHgyKQorCQlyZXR1cm47CisKKwkgICAgaWYgKGQgPj0gMCkgeworCQl5ICs9IHN5OworCQlkIC09IGF4OworCSAgICB9CisJICAgIHggKz0gc3g7CisJICAgIGQgKz0gYXk7CisJfQorICAgIH0gZWxzZSB7CisJZCA9IGF4IC0gKGF5IC8gMik7CisKKwl3aGlsZSAoMSkgeworCSAgICBwbG90KHgsIHksIGNoKTsKKwkgICAgaWYgKHkgPT0geTIpCisJCXJldHVybjsKKworCSAgICBpZiAoZCA+PSAwKSB7CisJCXggKz0gc3g7CisJCWQgLT0gYXk7CisJICAgIH0KKwkgICAgeSArPSBzeTsKKwkgICAgZCArPSBheDsKKwl9CisgICAgfQorfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgaSwgY3gsIGN5OworICAgIGRvdWJsZSBjciwgbXJhZGl1cywgaHJhZGl1cywgbWFuZ2xlLCBoYW5nbGU7CisgICAgZG91YmxlIHNhbmdsZSwgc3JhZGl1cywgaG91cnM7CisgICAgaW50IGhkeCwgaGR5OworICAgIGludCBtZHgsIG1keTsKKyAgICBpbnQgc2R4LCBzZHk7CisgICAgaW50IGNoOworICAgIGludCBsYXN0YmVlcCA9IC0xOworICAgIGJvb2wgb2RkID0gRkFMU0U7CisgICAgdGltZV90IHRpbTsKKyAgICBzdHJ1Y3QgdG0gKnQ7CisgICAgY2hhciBzekNoYXJbMTBdOworICAgIGNoYXIgKnRleHQ7CisgICAgc2hvcnQgbXlfYmcgPSBDT0xPUl9CTEFDSzsKKyNpZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIHN0cnVjdCB0aW1ldmFsIGN1cnJlbnQ7CisjZW5kaWYKKyAgICBkb3VibGUgZnJhY3Rpb24gPSAwLjA7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpbml0c2NyKCk7CisgICAgbm9lY2hvKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9kZWxheShzdGRzY3IsIFRSVUUpOworICAgIGN1cnNfc2V0KDApOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIG15X2JnID0gLTE7CisjZW5kaWYKKwlpbml0X3BhaXIoMSwgQ09MT1JfUkVELCBteV9iZyk7CisJaW5pdF9wYWlyKDIsIENPTE9SX01BR0VOVEEsIG15X2JnKTsKKwlpbml0X3BhaXIoMywgQ09MT1JfR1JFRU4sIG15X2JnKTsKKwlpbml0X3BhaXIoNCwgQ09MT1JfV0hJVEUsIENPTE9SX0JMVUUpOworICAgIH0KKyNpZmRlZiBLRVlfUkVTSVpFCisgICAga2V5cGFkKHN0ZHNjciwgVFJVRSk7CisgIHJlc3RhcnQ6CisjZW5kaWYKKyAgICBjeCA9IChDT0xTIC0gMSkgLyAyOwkvKiAzOSAqLworICAgIGN5ID0gTElORVMgLyAyOwkJLyogMTIgKi8KKyAgICBpZiAoY3ggLyBBU1BFQ1QgPCBjeSkKKwljciA9IGN4IC8gQVNQRUNUOworICAgIGVsc2UKKwljciA9IGN5OworICAgIHNyYWRpdXMgPSAoNSAqIGNyKSAvIDY7CS8qIDEwICovCisgICAgbXJhZGl1cyA9ICgzICogY3IpIC8gNDsJLyogOSAqLworICAgIGhyYWRpdXMgPSBjciAvIDI7CQkvKiA2ICovCisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgeworCXNhbmdsZSA9IChpICsgMSkgKiAoMi4wICogUEkpIC8gMTIuMDsKKwlzZHggPSBBMlgoc2FuZ2xlLCBzcmFkaXVzKTsKKwlzZHkgPSBBMlkoc2FuZ2xlLCBzcmFkaXVzKTsKKwlzcHJpbnRmKHN6Q2hhciwgIiVkIiwgaSArIDEpOworCisJTXZBZGRTdHIoY3kgLSBzZHksIGN4ICsgc2R4LCBzekNoYXIpOworICAgIH0KKworICAgIE12QWRkU3RyKDAsIDAsICJBU0NJSSBDbG9jayBieSBIb3dhcmQgSm9uZXMgKGhhLmpvbmVzQGljLmFjLnVrKSwxOTk0Iik7CisKKyAgICBzcmFkaXVzID0gKDQgKiBzcmFkaXVzKSAvIDU7CisgICAgZm9yICg7OykgeworCW5hcG1zKDEwMCk7CisKKwl0aW0gPSB0aW1lKDApOworCXQgPSBsb2NhbHRpbWUoJnRpbSk7CisKKwlob3VycyA9ICh0LT50bV9ob3VyICsgKHQtPnRtX21pbiAvIDYwLjApKTsKKwlpZiAoaG91cnMgPiAxMi4wKQorCSAgICBob3VycyAtPSAxMi4wOworCisJbWFuZ2xlID0gKCh0LT50bV9taW4gKyAodC0+dG1fc2VjIC8gNjAuMCkpICogKDIgKiBQSSkgLyA2MC4wKTsKKwltZHggPSBBMlgobWFuZ2xlLCBtcmFkaXVzKTsKKwltZHkgPSBBMlkobWFuZ2xlLCBtcmFkaXVzKTsKKworCWhhbmdsZSA9ICgoaG91cnMpICogKDIuMCAqIFBJKSAvIDEyLjApOworCWhkeCA9IEEyWChoYW5nbGUsIGhyYWRpdXMpOworCWhkeSA9IEEyWShoYW5nbGUsIGhyYWRpdXMpOworCisjaWYgSEFWRV9HRVRUSU1FT0ZEQVkKKwlnZXR0aW1lb2ZkYXkoJmN1cnJlbnQsIDApOworCWZyYWN0aW9uID0gKChkb3VibGUpIGN1cnJlbnQudHZfdXNlYyAvIDEuMGU2KTsKKyNlbmRpZgorCXNhbmdsZSA9ICgodC0+dG1fc2VjICsgZnJhY3Rpb24pICogKDIuMCAqIFBJKSAvIDYwLjApOworCXNkeCA9IEEyWChzYW5nbGUsIHNyYWRpdXMpOworCXNkeSA9IEEyWShzYW5nbGUsIHNyYWRpdXMpOworCisJZGxpbmUoMywgY3gsIGN5LCBjeCArIG1keCwgY3kgLSBtZHksICcjJyk7CisKKwkodm9pZCkgYXR0cnNldChBX1JFVkVSU0UpOworCWRsaW5lKDIsIGN4LCBjeSwgY3ggKyBoZHgsIGN5IC0gaGR5LCAnLicpOworCWF0dHJvZmYoQV9SRVZFUlNFKTsKKworCWlmIChoYXNfY29sb3JzKCkpCisJICAgICh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoQ09MT1JfUEFJUigxKSwgMCkpOworCisJZGxpbmUoMSwgY3gsIGN5LCBjeCArIHNkeCwgY3kgLSBzZHksICdPJyk7CisKKwlpZiAoaGFzX2NvbG9ycygpKQorCSAgICAodm9pZCkgYXR0cnNldChBdHRyQXJnKENPTE9SX1BBSVIoMCksIDApKTsKKworCXRleHQgPSBjdGltZSgmdGltKTsKKwlNdlByaW50dygyLCAwLCAiJS4qcyIsIChpbnQpIChzdHJsZW4odGV4dCkgLSAxKSwgdGV4dCk7CisJcmVmcmVzaCgpOworCWlmICgodC0+dG1fc2VjICUgNSkgPT0gMAorCSAgICAmJiB0LT50bV9zZWMgIT0gbGFzdGJlZXApIHsKKwkgICAgbGFzdGJlZXAgPSB0LT50bV9zZWM7CisJICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwkJb2RkID0gIW9kZDsKKwkJYmtnZCgoY2h0eXBlKSAob2RkID8gQ09MT1JfUEFJUig0KSA6IENPTE9SX1BBSVIoMCkpKTsKKwkgICAgfQorCSAgICBiZWVwKCk7CisJfQorCisJaWYgKChjaCA9IGdldGNoKCkpICE9IEVSUikgeworI2lmZGVmIEtFWV9SRVNJWkUKKwkgICAgaWYgKGNoID09IEtFWV9SRVNJWkUpIHsKKwkJZmxhc2goKTsKKwkJZXJhc2UoKTsKKwkJd3JlZnJlc2goY3Vyc2NyKTsKKwkJZ290byByZXN0YXJ0OworCSAgICB9CisjZW5kaWYKKwkgICAgYnJlYWs7CisJfQorCisJZGxpbmUoMCwgY3gsIGN5LCBjeCArIGhkeCwgY3kgLSBoZHksICcgJyk7CisJZGxpbmUoMCwgY3gsIGN5LCBjeCArIG1keCwgY3kgLSBtZHksICcgJyk7CisJZGxpbmUoMCwgY3gsIGN5LCBjeCArIHNkeCwgY3kgLSBzZHksICcgJyk7CisKKyAgICB9CisKKyAgICBjdXJzX3NldCgxKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBkZXZlbG9wbWVudCBoZWFkZXIgbWF0aC5oXG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L3Rlc3QucHJpdi5oIGIvdGVzdC90ZXN0LnByaXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWRmMjAxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0LnByaXYuaApAQCAtMCwwICsxLDg3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBBdXRob3I6IFRob21hcyBFLiBEaWNrZXkgICAgICAgICAgICAgICAgICAgIDE5OTYtb24gICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICRJZDogdGVzdC5wcml2LmgsdiAxLjEzMSAyMDE0LzEwLzI1IDAxOjIwOjM0IHRvbSBFeHAgJCAqLworCisjaWZuZGVmIF9fVEVTVF9QUklWX0gKKyNkZWZpbmUgX19URVNUX1BSSVZfSCAxCisKKyNpbmNsdWRlIDxuY3Vyc2VzX2NmZy5oPgorCisvKgorICogRml4IGlmZGVmJ3MgdGhhdCBsb29rIGZvciB0aGUgZm9ybS9tZW51L3BhbmVsIGxpYnJhcmllcywgaWYgd2UgYXJlIGJ1aWxkaW5nCisgKiB3aXRoIHdpZGUtY2hhcmFjdGVyIG5jdXJzZXMuCisgKi8KKyNpZmRlZiAgSEFWRV9MSUJGT1JNVworI2RlZmluZSBIQVZFX0xJQkZPUk1XIDEKKyNkZWZpbmUgSEFWRV9MSUJGT1JNIDEKKyNlbmRpZgorCisjaWZkZWYgIEhBVkVfTElCTUVOVVcKKyNkZWZpbmUgSEFWRV9MSUJNRU5VVyAxCisjZGVmaW5lIEhBVkVfTElCTUVOVSAxCisjZW5kaWYKKworI2lmZGVmICBIQVZFX0xJQlBBTkVMVworI2RlZmluZSBIQVZFX0xJQlBBTkVMVyAxCisjZGVmaW5lIEhBVkVfTElCUEFORUwgMQorI2VuZGlmCisKKy8qCisgKiBGYWxsYmFjayBkZWZpbml0aW9ucyB0byBhY2NvbW1vZGF0ZSBicm9rZW4gY29tcGlsZXJzLgorICovCisjaWZuZGVmIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTCisjZGVmaW5lIEhBVkVfQVNTVU1FX0RFRkFVTFRfQ09MT1JTIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfQ1VSU0VTX1ZFUlNJT04KKyNkZWZpbmUgSEFWRV9DVVJTRVNfVkVSU0lPTiAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0NIR0FUCisjZGVmaW5lIEhBVkVfQ0hHQVQgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9DT0xPUl9TRVQKKyNkZWZpbmUgSEFWRV9DT0xPUl9TRVQgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9GSUxURVIKKyNkZWZpbmUgSEFWRV9GSUxURVIgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9GT1JNX0gKKyNkZWZpbmUgSEFWRV9GT1JNX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9HRVRCRUdYCisjZGVmaW5lIEhBVkVfR0VUQkVHWCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0dFVENVUlgKKyNkZWZpbmUgSEFWRV9HRVRDVVJYIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfR0VUTUFYWAorI2RlZmluZSBIQVZFX0dFVE1BWFggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9HRVRPUFRfSAorI2RlZmluZSBIQVZFX0dFVE9QVF9IIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfR0VUUEFSWAorI2RlZmluZSBIQVZFX0dFVFBBUlggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9HRVRXSU4KKyNkZWZpbmUgSEFWRV9HRVRXSU4gMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9MSUJGT1JNCisjZGVmaW5lIEhBVkVfTElCRk9STSAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0xJQk1FTlUKKyNkZWZpbmUgSEFWRV9MSUJNRU5VIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfTElCUEFORUwKKyNkZWZpbmUgSEFWRV9MSUJQQU5FTCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0xPQ0FMRV9ICisjZGVmaW5lIEhBVkVfTE9DQUxFX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9NQVRIX0gKKyNkZWZpbmUgSEFWRV9NQVRIX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9NRU5VX0gKKyNkZWZpbmUgSEFWRV9NRU5VX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9NVlZMSU5FCisjZGVmaW5lIEhBVkVfTVZWTElORSAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX01WV1ZMSU5FCisjZGVmaW5lIEhBVkVfTVZXVkxJTkUgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9OQVBNUworI2RlZmluZSBIQVZFX05BUE1TIDEKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfTkNfQUxMT0NfSAorI2RlZmluZSBIQVZFX05DX0FMTE9DX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9QQU5FTF9ICisjZGVmaW5lIEhBVkVfUEFORUxfSCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1BVVFdJTgorI2RlZmluZSBIQVZFX1BVVFdJTiAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1JFU0laRV9URVJNCisjZGVmaW5lIEhBVkVfUkVTSVpFX1RFUk0gMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9SSVBPRkZMSU5FCisjZGVmaW5lIEhBVkVfUklQT0ZGTElORSAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1NDUl9EVU1QCisjZGVmaW5lIEhBVkVfU0NSX0RVTVAgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9TRVRVUFRFUk0KKyNkZWZpbmUgSEFWRV9TRVRVUFRFUk0gMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9TTEtfQ09MT1IKKyNkZWZpbmUgSEFWRV9TTEtfQ09MT1IgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9TTEtfSU5JVAorI2RlZmluZSBIQVZFX1NMS19JTklUIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfU1lTX0lPQ1RMX0gKKyNkZWZpbmUgSEFWRV9TWVNfSU9DVExfSCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1RFUk1BVFRSUworI2RlZmluZSBIQVZFX1RFUk1BVFRSUyAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1RFUk1JT1NfSAorI2RlZmluZSBIQVZFX1RFUk1JT1NfSCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1RFUk1OQU1FCisjZGVmaW5lIEhBVkVfVEVSTU5BTUUgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9URVJNX0VOVFJZX0gKKyNkZWZpbmUgSEFWRV9URVJNX0VOVFJZX0ggMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9UR0VURU5UCisjZGVmaW5lIEhBVkVfVEdFVEVOVCAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1RJR0VUTlVNCisjZGVmaW5lIEhBVkVfVElHRVROVU0gMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9USUdFVFNUUgorI2RlZmluZSBIQVZFX1RJR0VUU1RSIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfVFlQRUFIRUFECisjZGVmaW5lIEhBVkVfVFlQRUFIRUFEIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfV0lOU1NUUgorI2RlZmluZSBIQVZFX1dJTlNTVFIgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKyNkZWZpbmUgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9VU0VfRU5WCisjZGVmaW5lIEhBVkVfVVNFX0VOViAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1VTRV9FWFRFTkRFRF9OQU1FUworI2RlZmluZSBIQVZFX1VTRV9FWFRFTkRFRF9OQU1FUyAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1VTRV9TQ1JFRU4KKyNkZWZpbmUgSEFWRV9VU0VfU0NSRUVOIDAKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfVVNFX1dJTkRPVworI2RlZmluZSBIQVZFX1VTRV9XSU5ET1cgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9WSURQVVRTCisjZGVmaW5lIEhBVkVfVklEUFVUUyAwCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1ZJRF9QVVRTCisjZGVmaW5lIEhBVkVfVklEX1BVVFMgMAorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9XUkVTSVpFCisjZGVmaW5lIEhBVkVfV1JFU0laRSAwCisjZW5kaWYKKworI2lmbmRlZiBOQ1VSU0VTX0VYVF9GVU5DUworI2RlZmluZSBOQ1VSU0VTX0VYVF9GVU5DUyAwCisjZW5kaWYKKworI2lmbmRlZiBORUVEX1BURU1fSAorI2RlZmluZSBORUVEX1BURU1fSCAwCisjZW5kaWYKKworI2lmbmRlZiBORUVEX1dDSEFSX0gKKyNkZWZpbmUgTkVFRF9XQ0hBUl9IIDAKKyNlbmRpZgorCisjaWZuZGVmIE5PX0xFQUtTCisjZGVmaW5lIE5PX0xFQUtTIDAKKyNlbmRpZgorCisvKgorICogV29ya2Fyb3VuZCBmb3IgSFBVWAorICovCisjaWYgZGVmaW5lZChfX2hwdXgpICYmICFkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikKKyNkZWZpbmUgX0FDU19DT01QQVRfQ09ERQkvKiBuZWVkZWQgZm9yIGFjc19tYXAgdnMgX19hY3NfbWFwICovCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHNpZ25hbC5oPgkJLyogaW5jbHVkZSBiZWZvcmUgY3Vyc2VzLmggdG8gd29yayBhcm91bmQgZ2xpYmMgYnVnICovCisKKyNpZiBORUVEX1dDSEFSX0gKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2lmZGVmIEhBVkVfTElCVVRGOF9ICisjaW5jbHVkZSA8bGlidXRmOC5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9YQ1VSU0VTKQorI2luY2x1ZGUgPHhjdXJzZXMuaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19OQ1VSU0VTX0gpCisjaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfTkNVUlNFU19OQ1VSU0VTX0gpCisjaW5jbHVkZSA8bmN1cnNlcy9jdXJzZXMuaD4KKyNlbHNlCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9YQ1VSU0VTKSB8fCBkZWZpbmVkKFBEQ1VSU0VTKQorLyogbm8gb3RoZXIgaGVhZGVycyAqLworI3VuZGVmICBIQVZFX1NFVFVQVEVSTQkJLyogbm9uZnVuY3Rpb25hbCAqLworI2RlZmluZSBIQVZFX1NFVFVQVEVSTSAwCisjdW5kZWYgIEhBVkVfVEdFVEVOVAkJLyogbm9uZnVuY3Rpb25hbCAqLworI2RlZmluZSBIQVZFX1RHRVRFTlQgMAorI3VuZGVmICBIQVZFX1RJR0VUU1RSCQkvKiBub25mdW5jdGlvbmFsICovCisjZGVmaW5lIEhBVkVfVElHRVRTVFIgMAorI2VsaWYgZGVmaW5lZChIQVZFX05DVVJTRVNXX1RFUk1fSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfTkNVUlNFU19URVJNX0gpCisjaW5jbHVkZSA8bmN1cnNlcy90ZXJtLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfVEVSTV9IKQorI2luY2x1ZGUgPHRlcm0uaD4KKyNlbmRpZgorCisvKgorICogTm90IGFsbCBjdXJzZXMuaCBpbXBsZW1lbnRhdGlvbnMgaW5jbHVkZSB1bmN0cmwuaCwKKyAqLworI2lmIGRlZmluZWQoSEFWRV9OQ1VSU0VTV19VTkNUUkxfSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy91bmN0cmwuaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9OQ1VSU0VTX1VOQ1RSTF9IKQorI2luY2x1ZGUgPG5jdXJzZXMvdW5jdHJsLmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfVU5DVFJMX0gpCisjaW5jbHVkZSA8dW5jdHJsLmg+CisjZW5kaWYKKworI2lmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbGlmICFkZWZpbmVkKEhBVkVfR0VUT1BUX0hFQURFUikKKy8qICdnZXRvcHQoKScgbWF5IGJlIHByb3RvdHlwZWQgaW4gPHN0ZGxpYi5oPiwgYnV0IGRlY2xhcmluZyBpdHMgdmFyaWFibGVzCisgKiBkb2Vzbid0IGh1cnQuCisgKi8KK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZiAvKiBIQVZFX0dFVE9QVF9IICovCisKKyNpZiBIQVZFX0xPQ0FMRV9ICisjaW5jbHVkZSA8bG9jYWxlLmg+CisjZWxzZQorI2RlZmluZSBzZXRsb2NhbGUobmFtZSxzdHJpbmcpCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2lmbmRlZiBHQ0NfTk9SRVRVUk4KKyNkZWZpbmUgR0NDX05PUkVUVVJOCQkvKiBub3RoaW5nICovCisjZW5kaWYKKyNpZm5kZWYgR0NDX1BSSU5URkxJS0UKKyNkZWZpbmUgR0NDX1BSSU5URkxJS0UoYSxiKQkvKiBub3RoaW5nICovCisjZW5kaWYKKyNpZm5kZWYgR0NDX1VOVVNFRAorI2RlZmluZSBHQ0NfVU5VU0VECQkvKiBub3RoaW5nICovCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0dFVE5TVFIKKyNkZWZpbmUgZ2V0bnN0cihzLG4pIGdldHN0cihzKQorI2VuZGlmCisKKyNpZm5kZWYgVVNFX1NPRlRLRVlTCisjaWYgSEFWRV9TTEtfSU5JVAorI2RlZmluZSBVU0VfU09GVEtFWVMgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX1NPRlRLRVlTIDAKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAhVVNFX1NPRlRLRVlTCisjZGVmaW5lIHNsa19pbml0KCkJCS8qIG5vdGhpbmcgKi8KKyNkZWZpbmUgc2xrX3Jlc3RvcmUoKQkJLyogbm90aGluZyAqLworI2RlZmluZSBzbGtfY2xlYXIoKQkJLyogbm90aGluZyAqLworI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9XU1lOQ0RPV04KKyNkZWZpbmUgd3N5bmNkb3duKHdpbikJCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisjaWZuZGVmIFVTRV9XSURFQ19TVVBQT1JUCisjaWYgKGRlZmluZWQoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCkgXAorICB8fCAoZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSAtIDAgPj0gNTAwKSkgXAorICB8fCAoZGVmaW5lZChOQ1VSU0VTX1dJREVDSEFSKSAmJiAoTkNVUlNFU19XSURFQ0hBUiAtIDAgPCAxKSkpIFwKKyAgJiYgZGVmaW5lZChXQUNTX1VMQ09STkVSKQorI2RlZmluZSBVU0VfV0lERUNfU1VQUE9SVCAxCisjZWxzZQorI2RlZmluZSBVU0VfV0lERUNfU1VQUE9SVCAwCisjZW5kaWYKKyNlbmRpZgorCisjaWYgSEFWRV9QQU5FTF9IICYmIEhBVkVfTElCUEFORUwKKyNkZWZpbmUgVVNFX0xJQlBBTkVMIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9MSUJQQU5FTCAwCisjZW5kaWYKKworI2lmIEhBVkVfTUVOVV9IICYmIEhBVkVfTElCTUVOVQorI2RlZmluZSBVU0VfTElCTUVOVSAxCisjZWxzZQorI2RlZmluZSBVU0VfTElCTUVOVSAwCisjZW5kaWYKKworI2lmIEhBVkVfRk9STV9IICYmIEhBVkVfTElCRk9STQorI2RlZmluZSBVU0VfTElCRk9STSAxCisjZWxzZQorI2RlZmluZSBVU0VfTElCRk9STSAwCisjZW5kaWYKKworLyogd29ya2Fyb3VuZCwgdG8gYnVpbGQgYWdhaW5zdCBOZXRCU0QncyB2YXJpYW50IG9mIHRoZSBmb3JtIGxpYnJhcnkgKi8KKyNpZmRlZiBIQVZFX05FVEJTRF9GT1JNX0gKKyNkZWZpbmUgZm9ybV9nZXR5eChmb3JtLCB5LCB4KSB5ID0gY3VycmVudF9maWVsZChmb3JtKS0+Y3Vyc29yX3lwb3MsIHggPSBjdXJyZW50X2ZpZWxkKGZvcm0pLT5jdXJzb3JfeHBvcworI2Vsc2UKKyNkZWZpbmUgZm9ybV9nZXR5eChmb3JtLCB5LCB4KSB5ID0gKGZvcm0pLT5jdXJyb3csIHggPSAoZm9ybSktPmN1cmNvbAorI2VuZGlmCisKKy8qIHdvcmthcm91bmQsIHRvIGJ1aWxkIGFnYWluc3QgTmV0QlNEJ3MgdmFyaWFudCBvZiB0aGUgZm9ybSBsaWJyYXJ5ICovCisjaWZkZWYgSEFWRV9ORVRCU0RfTUVOVV9ICisjZGVmaW5lIG1lbnVfaXRlbXdpZHRoKG1lbnUpIChtZW51KS0+bWF4X2l0ZW1fd2lkdGgKKyNlbHNlCisjZGVmaW5lIG1lbnVfaXRlbXdpZHRoKG1lbnUpIChtZW51KS0+aXRlbWxlbgorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9UWVBFX0FUVFJfVAorI2lmICFVU0VfV0lERUNfU1VQUE9SVCAmJiAhZGVmaW5lZChhdHRyX3QpCisjZGVmaW5lIGF0dHJfdCBjaHR5cGUKKyNlbmRpZgorI2VuZGlmCisKKyN1bmRlZiBOQ1VSU0VTX0NIX1QKKyNpZiAhVVNFX1dJREVDX1NVUFBPUlQKKyNkZWZpbmUgTkNVUlNFU19DSF9UIGNodHlwZQorI2Vsc2UKKyNkZWZpbmUgTkNVUlNFU19DSF9UIGNjaGFyX3QKKyNlbmRpZgorCisjaWZuZGVmIE5DVVJTRVNfQ09MT1JfVAorI2RlZmluZSBOQ1VSU0VTX0NPTE9SX1Qgc2hvcnQKKyNlbmRpZgorCisjaWZuZGVmIE5DVVJTRVNfUEFJUlNfVAorI2RlZmluZSBOQ1VSU0VTX1BBSVJTX1Qgc2hvcnQKKyNlbmRpZgorCisjaWZuZGVmIE5DVVJTRVNfT1BBUVVFCisjZGVmaW5lIE5DVVJTRVNfT1BBUVVFIDAKKyNlbmRpZgorCisjaWZuZGVmIENDSEFSV19NQVgKKyNkZWZpbmUgQ0NIQVJXX01BWCA1CisjZW5kaWYKKworI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSAmJiBkZWZpbmVkKENVUlNFU19XQUNTX0FSUkFZKSAmJiAhZGVmaW5lZChDVVJTRVNfV0FDU19TWU1CT0xTKQorI2RlZmluZSBDVVJTRVNfV0FDU19TWU1CT0xTCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ1VSU0VTX1dBQ1NfQVJSQVkpICYmICFkZWZpbmVkKENVUlNFU19XQUNTX1NZTUJPTFMpCisvKiBOZXRCU0QgNS4xIGRlZmluZXMgdGhlc2UgaW5jb3JyZWN0bHkgKi8KKyN1bmRlZglXQUNTX1JBUlJPVworI3VuZGVmCVdBQ1NfTEFSUk9XCisjdW5kZWYJV0FDU19VQVJST1cKKyN1bmRlZglXQUNTX0RBUlJPVworI3VuZGVmCVdBQ1NfQkxPQ0sKKyN1bmRlZglXQUNTX0RJQU1PTkQKKyN1bmRlZglXQUNTX0NLQk9BUkQKKyN1bmRlZglXQUNTX0RFR1JFRQorI3VuZGVmCVdBQ1NfUExNSU5VUworI3VuZGVmCVdBQ1NfQk9BUkQKKyN1bmRlZglXQUNTX0xBTlRFUk4KKyN1bmRlZglXQUNTX0xSQ09STkVSCisjdW5kZWYJV0FDU19VUkNPUk5FUgorI3VuZGVmCVdBQ1NfVUxDT1JORVIKKyN1bmRlZglXQUNTX0xMQ09STkVSCisjdW5kZWYJV0FDU19QTFVTCisjdW5kZWYJV0FDU19ITElORQorI3VuZGVmCVdBQ1NfUzEKKyN1bmRlZglXQUNTX1M5CisjdW5kZWYJV0FDU19MVEVFCisjdW5kZWYJV0FDU19SVEVFCisjdW5kZWYJV0FDU19CVEVFCisjdW5kZWYJV0FDU19UVEVFCisjdW5kZWYJV0FDU19WTElORQorI3VuZGVmCVdBQ1NfQlVMTEVUCisjdW5kZWYJV0FDU19TMworI3VuZGVmCVdBQ1NfUzcKKyN1bmRlZglXQUNTX0xFUVVBTAorI3VuZGVmCVdBQ1NfR0VRVUFMCisjdW5kZWYJV0FDU19QSQorI3VuZGVmCVdBQ1NfTkVRVUFMCisjdW5kZWYJV0FDU19TVEVSTElORworCisjZGVmaW5lCVdBQ1NfUkFSUk9XICAgICAmKENVUlNFU19XQUNTX0FSUkFZWycrJ10pCisjZGVmaW5lCVdBQ1NfTEFSUk9XICAgICAmKENVUlNFU19XQUNTX0FSUkFZWycsJ10pCisjZGVmaW5lCVdBQ1NfVUFSUk9XICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyctJ10pCisjZGVmaW5lCVdBQ1NfREFSUk9XICAgICAmKENVUlNFU19XQUNTX0FSUkFZWycuJ10pCisjZGVmaW5lCVdBQ1NfQkxPQ0sgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWycwJ10pCisjZGVmaW5lCVdBQ1NfRElBTU9ORCAgICAmKENVUlNFU19XQUNTX0FSUkFZWydgJ10pCisjZGVmaW5lCVdBQ1NfQ0tCT0FSRCAgICAmKENVUlNFU19XQUNTX0FSUkFZWydhJ10pCisjZGVmaW5lCVdBQ1NfREVHUkVFICAgICAmKENVUlNFU19XQUNTX0FSUkFZWydmJ10pCisjZGVmaW5lCVdBQ1NfUExNSU5VUyAgICAmKENVUlNFU19XQUNTX0FSUkFZWydnJ10pCisjZGVmaW5lCVdBQ1NfQk9BUkQgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWydoJ10pCisjZGVmaW5lCVdBQ1NfTEFOVEVSTiAgICAmKENVUlNFU19XQUNTX0FSUkFZWydpJ10pCisjZGVmaW5lCVdBQ1NfTFJDT1JORVIgICAmKENVUlNFU19XQUNTX0FSUkFZWydqJ10pCisjZGVmaW5lCVdBQ1NfVVJDT1JORVIgICAmKENVUlNFU19XQUNTX0FSUkFZWydrJ10pCisjZGVmaW5lCVdBQ1NfVUxDT1JORVIgICAmKENVUlNFU19XQUNTX0FSUkFZWydsJ10pCisjZGVmaW5lCVdBQ1NfTExDT1JORVIgICAmKENVUlNFU19XQUNTX0FSUkFZWydtJ10pCisjZGVmaW5lCVdBQ1NfUExVUyAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyduJ10pCisjZGVmaW5lCVdBQ1NfSExJTkUgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWydxJ10pCisjZGVmaW5lCVdBQ1NfUzEgICAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWydvJ10pCisjZGVmaW5lCVdBQ1NfUzkgICAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWydzJ10pCisjZGVmaW5lCVdBQ1NfTFRFRSAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd0J10pCisjZGVmaW5lCVdBQ1NfUlRFRSAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd1J10pCisjZGVmaW5lCVdBQ1NfQlRFRSAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd2J10pCisjZGVmaW5lCVdBQ1NfVFRFRSAgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd3J10pCisjZGVmaW5lCVdBQ1NfVkxJTkUgICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd4J10pCisjZGVmaW5lCVdBQ1NfQlVMTEVUICAgICAmKENVUlNFU19XQUNTX0FSUkFZWyd+J10pCisjZGVmaW5lCVdBQ1NfUzMJCSYoQ1VSU0VTX1dBQ1NfQVJSQVlbJ3AnXSkKKyNkZWZpbmUJV0FDU19TNwkJJihDVVJTRVNfV0FDU19BUlJBWVsnciddKQorI2RlZmluZQlXQUNTX0xFUVVBTAkmKENVUlNFU19XQUNTX0FSUkFZWyd5J10pCisjZGVmaW5lCVdBQ1NfR0VRVUFMCSYoQ1VSU0VTX1dBQ1NfQVJSQVlbJ3onXSkKKyNkZWZpbmUJV0FDU19QSQkJJihDVVJTRVNfV0FDU19BUlJBWVsneyddKQorI2RlZmluZQlXQUNTX05FUVVBTAkmKENVUlNFU19XQUNTX0FSUkFZWyd8J10pCisjZGVmaW5lCVdBQ1NfU1RFUkxJTkcJJihDVVJTRVNfV0FDU19BUlJBWVsnfSddKQorI2VuZGlmCisKKyN1bmRlZiBDVFJMCisjZGVmaW5lIENUUkwoeCkJKCh4KSAmIDB4MWYpCisKKyNkZWZpbmUgUVVJVAkJQ1RSTCgnUScpCisjZGVmaW5lIEVTQ0FQRQkJQ1RSTCgnWycpCisKKyNpZm5kZWYgS0VZX01JTgorI2RlZmluZSBLRVlfTUlOIDI1NgkJLyogbm90IGRlZmluZWQgaW4gU29sYXJpcyA4ICovCisjZW5kaWYKKworI2lmZGVmIERFQ0xfQ1VSU0VTX0RBVEFfQk9PTE5BTUVTCitleHRlcm4gY2hhciAqYm9vbG5hbWVzW10sICpib29sY29kZXNbXSwgKmJvb2xmbmFtZXNbXTsKK2V4dGVybiBjaGFyICpudW1uYW1lc1tdLCAqbnVtY29kZXNbXSwgKm51bWZuYW1lc1tdOworZXh0ZXJuIGNoYXIgKnN0cm5hbWVzW10sICpzdHJjb2Rlc1tdLCAqc3RyZm5hbWVzW107CisjZW5kaWYKKworI2RlZmluZSBjb2xvcmVkX2NodHlwZShjaCwgYXR0ciwgcGFpcikgXAorCSgoY2h0eXBlKSAoY2gpIHwgKGNodHlwZSkgKGF0dHIpIHwgKGNodHlwZSkgQ09MT1JfUEFJUihwYWlyKSkKKworLyoKKyAqIFdvcmthcm91bmQgZm9yIEhQVVgKKyAqLworI2lmIGRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pCisjZGVmaW5lIGdldGJlZ3godykgX19nZXRiZWd4KHcpCisjZGVmaW5lIGdldGJlZ3kodykgX19nZXRiZWd5KHcpCisjZGVmaW5lIGdldGN1cngodykgX19nZXRjdXJ4KHcpCisjZGVmaW5lIGdldGN1cnkodykgX19nZXRjdXJ5KHcpCisjZGVmaW5lIGdldG1heHgodykgX19nZXRtYXh4KHcpCisjZGVmaW5lIGdldG1heHkodykgX19nZXRtYXh5KHcpCisjZGVmaW5lIGdldHBhcngodykgX19nZXRwYXJ4KHcpCisjZGVmaW5lIGdldHBhcnkodykgX19nZXRwYXJ5KHcpCisjZW5kaWYKKworLyoKKyAqIFdvcmthcm91bmQgaW4gY2FzZSBnZXRjY2hhcigpIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSB3aGVuIHRoZSBzb3VyY2UKKyAqIHN0cmluZyBwcm9kdWNlcyBvbmx5IGEgTCdcMCcuCisgKi8KKyNkZWZpbmUgVEVTVF9DQ0hBUihzLCBjb3VudCwgdGhlbl9zdG10LCBlbHNlX3N0bXQpIFwKKwlpZiAoKGNvdW50ID0gZ2V0Y2NoYXIocywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpID4gMCkgeyBcCisJICAgIHdjaGFyX3QgdGVzdF93Y2hbQ0NIQVJXX01BWCArIDJdOyBcCisJICAgIGF0dHJfdCB0ZXN0X2F0dHJzOyBcCisJICAgIE5DVVJTRVNfUEFJUlNfVCB0ZXN0X3BhaXI7IFwKKwkgICAgXAorCSAgICBpZiAoZ2V0Y2NoYXIoIHMsIHRlc3Rfd2NoLCAmdGVzdF9hdHRycywgJnRlc3RfcGFpciwgTlVMTCkgPT0gT0sgXAorCQkmJiB0ZXN0X3djaFswXSAhPSBMJ1wwJykgeyBcCisJCXRoZW5fc3RtdCBcCisJICAgIH0gZWxzZSB7IFwKKwkJZWxzZV9zdG10IFwKKwkgICAgfSBcCisJfSBlbHNlIHsgXAorCSAgICBlbHNlX3N0bXQgXAorCX0KKy8qCisgKiBUaGVzZSB1c3VhbGx5IGFyZSBpbXBsZW1lbnRlZCBhcyBtYWNyb3MsIGJ1dCBtYXkgYmUgZnVuY3Rpb25zLgorICovCisjaWYgIWRlZmluZWQoZ2V0Y3VyeCkgJiYgIUhBVkVfR0VUQ1VSWAorI2RlZmluZSBnZXRjdXJ4KHdpbikgICAgICAgICAgICAoKHdpbik/KHdpbiktPl9jdXJ4OkVSUikKKyNkZWZpbmUgZ2V0Y3VyeSh3aW4pICAgICAgICAgICAgKCh3aW4pPyh3aW4pLT5fY3VyeTpFUlIpCisjZW5kaWYKKworI2lmICFkZWZpbmVkKGdldGJlZ3gpICYmICFIQVZFX0dFVEJFR1gKKyNkZWZpbmUgZ2V0YmVneCh3aW4pICAgICAgICAgICAgKCh3aW4pPyh3aW4pLT5fYmVneDpFUlIpCisjZGVmaW5lIGdldGJlZ3kod2luKSAgICAgICAgICAgICgod2luKT8od2luKS0+X2JlZ3k6RVJSKQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChnZXRtYXh4KSAmJiAhSEFWRV9HRVRNQVhYCisjZGVmaW5lIGdldG1heHgod2luKSAgICAgICAgICAgICgod2luKT8oKHdpbiktPl9tYXh4ICsgMSk6RVJSKQorI2RlZmluZSBnZXRtYXh5KHdpbikgICAgICAgICAgICAoKHdpbik/KCh3aW4pLT5fbWF4eSArIDEpOkVSUikKKyNlbmRpZgorCisvKgorICogU29sYXJpcyAxMCB4cGc0OgorI2RlZmluZQlfX21fZ2V0cGFyeCh3KQkJKCh3KS0+X3BhcmVudCA9PSAoV0lORE9XICopIDAgPyAtMSBcCisJCQkJOiAodyktPl9iZWd4IC0gKHcpLT5fcGFyZW50LT5fYmVneCkKKyAqLworI2lmICFkZWZpbmVkKGdldHBhcngpICYmICFIQVZFX0dFVFBBUlgKKyNpZmRlZiBfX21fZ2V0cGFyeAorI2RlZmluZSBnZXRwYXJ4KHdpbikgICAgICAgICAgICBfX21fZ2V0cGFyeCh3aW4pCisjZGVmaW5lIGdldHBhcnkod2luKSAgICAgICAgICAgIF9fbV9nZXRwYXJ5KHdpbikKKyNlbHNlCisjZGVmaW5lIGdldHBhcngod2luKSAgICAgICAgICAgICgod2luKT8oKHdpbiktPl9wYXJ4ICsgMSk6RVJSKQorI2RlZmluZSBnZXRwYXJ5KHdpbikgICAgICAgICAgICAoKHdpbik/KCh3aW4pLT5fcGFyeSArIDEpOkVSUikKKyNlbmRpZgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChtdnd2bGluZSkgJiYgIUhBVkVfTVZXVkxJTkUKKyNkZWZpbmUgbXZ3dmxpbmUodyx5LHgsY2gsbikgICAgKG1vdmUoeSx4KSA9PSBFUlIgPyBFUlIgOiB3dmxpbmUodyxjaCxuKSkKKyNkZWZpbmUgbXZ3aGxpbmUodyx5LHgsY2gsbikgICAgKG1vdmUoeSx4KSA9PSBFUlIgPyBFUlIgOiB3aGxpbmUodyxjaCxuKSkKKyNlbmRpZgorCisjaWYgIWRlZmluZWQobXZ2bGluZSkgJiYgIUhBVkVfTVZWTElORQorI2RlZmluZSBtdnZsaW5lKHkseCxjaCxuKSAgICAgICAobW92ZSh5LHgpID09IEVSUiA/IEVSUiA6IHZsaW5lKGNoLG4pKQorI2RlZmluZSBtdmhsaW5lKHkseCxjaCxuKSAgICAgICAobW92ZSh5LHgpID09IEVSUiA/IEVSUiA6IGhsaW5lKGNoLG4pKQorI2VuZGlmCisKKy8qCisgKiBUcnkgdG8gYWNjb21tb2RhdGUgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyB0aGF0IGhhdmUgbm8gdGVybWluZm8gc3VwcG9ydC4KKyAqLworI2lmIEhBVkVfVElHRVROVU0KKyNkZWZpbmUgVElHRVROVU0odGksdGMpIHRpZ2V0bnVtKHRpKQorI2Vsc2UKKyNkZWZpbmUgVElHRVROVU0odGksdGMpIHRnZXRudW0odGMpCisjZW5kaWYKKworI2lmIEhBVkVfVElHRVRTVFIKKyNkZWZpbmUgVElHRVRTVFIodGksdGMpIHRpZ2V0c3RyKHRpKQorI2Vsc2UKKyNkZWZpbmUgVElHRVRTVFIodGksdGMpIHRnZXRzdHIodGMsJmFyZWFfcG9pbnRlcikKKyNlbmRpZgorCisvKgorICogU28gZmFyICgyMDEzIC0gbW9yZSB0aGFuIHRlbiB5ZWFycyksIG9ubHkgbmN1cnNlcyBpbXBsZW1lbnRzCisgKiB1c2VfZXh0ZW5kZWRfbmFtZXMoKS4KKyAqLworI2lmIGRlZmluZWQoTkNVUlNFU19YTkFNRVMpCisjZWxpZiBkZWZpbmVkKE5DVVJTRVNfVkVSU0lPTikgJiYgZGVmaW5lZChIQVZFX1RFUk1fRU5UUllfSCkgJiYgSEFWRV9URVJNX0VOVFJZX0gKKyNkZWZpbmUgTkNVUlNFU19YTkFNRVMgMQorI2Vsc2UKKyNkZWZpbmUgTkNVUlNFU19YTkFNRVMgMAorI2VuZGlmCisKKy8qIG5jdXJzZXMgaW1wbGVtZW50cyB0cGFybSgpIHdpdGggdmFyYXJncywgWC9PcGVuIHdpdGggYSBmaXhlZC1wYXJhbWV0ZXIgbGlzdAorICogKHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIGxlZ2FjeSB1c2FnZSwgZG9lc24ndCBzb2x2ZSBhbnkgcHJvYmxlbXMpLgorICovCisjZGVmaW5lIHRwYXJtMyhhLGIsYykgdHBhcm0oYSxiLGMsMCwwLDAsMCwwLDAsMCkKKyNkZWZpbmUgdHBhcm0yKGEsYikgICB0cGFybShhLGIsMCwwLDAsMCwwLDAsMCwwKQorCisjZGVmaW5lIFVDaGFyKGMpICAgICgodW5zaWduZWQgY2hhcikoYykpCisKKyNkZWZpbmUgU0laRU9GKHRhYmxlKQkoc2l6ZW9mKHRhYmxlKS9zaXplb2YodGFibGVbMF0pKQorCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT04pICYmIEhBVkVfTkNfQUxMT0NfSAorI2luY2x1ZGUgPG5jX2FsbG9jLmg+CisjaWYgSEFWRV9OQ19GUkVFQUxMICYmIGRlZmluZWQoVVNFX1RJTkZPKQorI3VuZGVmIEV4aXRQcm9ncmFtCisjZGVmaW5lIEV4aXRQcm9ncmFtKGNvZGUpIF9uY19mcmVlX3RpbmZvKGNvZGUpCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIHR5cGVNYWxsb2ModHlwZSxuKSAodHlwZSAqKSBtYWxsb2MoKHNpemVfdCkobikgKiBzaXplb2YodHlwZSkpCisjZGVmaW5lIHR5cGVDYWxsb2ModHlwZSxlbHRzKSAodHlwZSAqKSBjYWxsb2MoKHNpemVfdCkoZWx0cyksIHNpemVvZih0eXBlKSkKKyNkZWZpbmUgdHlwZVJlYWxsb2ModHlwZSxuLHApICh0eXBlICopIHJlYWxsb2MocCwgKHNpemVfdCkobikgKiBzaXplb2YodHlwZSkpCisjZW5kaWYKKworI2lmbmRlZiBFeGl0UHJvZ3JhbQorI2RlZmluZSBFeGl0UHJvZ3JhbShjb2RlKSBleGl0KGNvZGUpCisjZW5kaWYKKworI2lmbmRlZiBFWElUX1NVQ0NFU1MKKyNkZWZpbmUgRVhJVF9TVUNDRVNTIDAKKyNlbmRpZgorI2lmbmRlZiBFWElUX0ZBSUxVUkUKKyNkZWZpbmUgRVhJVF9GQUlMVVJFIDEKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChVU0VfV0lOMzJDT05fRFJJVkVSKQorCisjaWYgZGVmaW5lZChQRENVUlNFUykKKyNpZmRlZiBXSU5WRVIKKyMgIGlmIFdJTlZFUiA8IDB4MDUwMQorIyAgICBlcnJvciBXSU5WRVIgbXVzdCBhdCBsZWFzdCBiZSAweDA1MDEKKyMgIGVuZGlmCisjZWxzZQorIyAgZGVmaW5lIFdJTlZFUiAweDA1MDEKKyNlbmRpZgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgkJLyogZm9yIHN0cnVjdCB0aW1ldmFsICovCisjdW5kZWYgc2xlZXAKKyNkZWZpbmUgc2xlZXAobikgU2xlZXAoKG4pICogMTAwMCkKKyNkZWZpbmUgU0lHSFVQICAxCisjZGVmaW5lIFNJR0tJTEwgOQorI2RlZmluZSBnZXRsb2dpbigpICJ1c2VybmFtZSIKKworI2VsaWYgZGVmaW5lZChIQVZFX05DVVJTRVNXX05DVVJTRVNfSCkKKyNpbmNsdWRlIDxuY3Vyc2Vzdy9uY19taW5ndy5oPgorI2VsaWYgZGVmaW5lZChIQVZFX05DVVJTRVNfTkNVUlNFU19IKQorI2luY2x1ZGUgPG5jdXJzZXMvbmNfbWluZ3cuaD4KKyNlbHNlCisjaW5jbHVkZSA8bmNfbWluZ3cuaD4KKyNlbmRpZgorCisvKiBjb25mbGljdHMgaW4gdGVzdC9maXJzdGxhc3QuYyAqLworI3VuZGVmIGxhcmdlCisjdW5kZWYgc21hbGwKKworI2VuZGlmCisKKy8qIFVzZSB0aGlzIHRvIHF1aWV0IGdjYydzIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5ncywgYnV0IGFjY29tbW9kYXRlIFNWcjQKKyAqIGN1cnNlcyB3aGljaCBkb2Vzbid0IGhhdmUgY29uc3QgcGFyYW1ldGVycyBkZWNsYXJlZCAoc28gZmFyKSBpbiB0aGUgcGxhY2VzCisgKiB0aGF0IFhTSSBzaG93cy4KKyAqLworI2lmbmRlZiBOQ1VSU0VTX0NPTlNUCisjZGVmaW5lIE5DVVJTRVNfQ09OU1QJCS8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisvKiBvdXQtb2YtYmFuZCB2YWx1ZXMgZm9yIHJlcHJlc2VudGluZyBhYnNlbnQgY2FwYWJpbGl0aWVzICovCisjZGVmaW5lIEFCU0VOVF9CT09MRUFOCQkoKHNpZ25lZCBjaGFyKS0xKQkvKiAyNTUgKi8KKyNkZWZpbmUgQUJTRU5UX05VTUVSSUMJCSgtMSkKKyNkZWZpbmUgQUJTRU5UX1NUUklORwkJKGNoYXIgKikwCisKKy8qIG91dC1vZi1iYW5kIHZhbHVlcyBmb3IgcmVwcmVzZW50aW5nIGNhbmNlbHMgKi8KKyNkZWZpbmUgQ0FOQ0VMTEVEX0JPT0xFQU4JKChzaWduZWQgY2hhciktMikJLyogMjU0ICovCisjZGVmaW5lIENBTkNFTExFRF9OVU1FUklDCSgtMikKKyNkZWZpbmUgQ0FOQ0VMTEVEX1NUUklORwkoY2hhciAqKSgtMSkKKworI2RlZmluZSBWQUxJRF9CT09MRUFOKHMpICgodW5zaWduZWQgY2hhcikocykgPD0gMSkJLyogcmVqZWN0ICItMSIgKi8KKyNkZWZpbmUgVkFMSURfTlVNRVJJQyhzKSAoKHMpID49IDApCisjZGVmaW5lIFZBTElEX1NUUklORyhzKSAgKChzKSAhPSBDQU5DRUxMRURfU1RSSU5HICYmIChzKSAhPSBBQlNFTlRfU1RSSU5HKQorCisjZGVmaW5lIFZUX0FDU0MgImBgYWFmZmdnaWlqamtrbGxtbW5ub29wcHFxcnJzc3R0dXV2dnd3eHh5eXp6e3t8fH19fn4iCisKKyNkZWZpbmUgQ0FUQ0hBTEwoaGFuZGxlcikgeyBcCisJCWludCBuc2lnOyBcCisJCWZvciAobnNpZyA9IFNJR0hVUDsgbnNpZyA8IFNJR1RFUk07ICsrbnNpZykgXAorCQkgICAgaWYgKG5zaWcgIT0gU0lHS0lMTCkgXAorCQkJc2lnbmFsKG5zaWcsIGhhbmRsZXIpOyBcCisJICAgIH0KKworLyoKKyAqIFdvcmthcm91bmQgZm9yIGNsZWFuKGVyKSBjb21waWxlIHdpdGggU29sYXJpcydzIGxlZ2FjeSBjdXJzZXMuCisgKiBUaGUgc2FtZSB3b3VsZCBiZSBuZWVkZWQgZm9yIEhQVVggMTAuMjAKKyAqLworI2lmbmRlZiBUUFVUU19BUkcKKyNkZWZpbmUgVFBVVFNfQVJHIGludAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKHN1bikgJiYgIWRlZmluZWQoX1hPUEVOX0NVUlNFUykgJiYgIWRlZmluZWQoTkNVUlNFU19WRVJTSU9OX1BBVENIKQorI3VuZGVmIFRQVVRTX0FSRworI2RlZmluZSBUUFVUU19BUkcgY2hhcgorZXh0ZXJuIGNoYXIgKnRnb3RvKGNoYXIgKiwgaW50LCBpbnQpOwkvKiBhdmFpbGFibGUsIGJ1dCBub3QgcHJvdG90eXBlZCAqLworI2VuZGlmCisKKyNpZm5kZWYgVFBVVFNfUFJPVE8KKyNkZWZpbmUgVFBVVFNfUFJPVE8oZnVuYyx2YWx1ZSkgaW50IGZ1bmMoVFBVVFNfQVJHIHZhbHVlKQorI2VuZGlmCisKKyNpZm5kZWYgVFBVVFNfUkVUVVJOCisjZGVmaW5lIFRQVVRTX1JFVFVSTih2YWx1ZSkgcmV0dXJuIHZhbHVlCisjZW5kaWYKKworLyoKKyAqIFdvcmthcm91bmRzIGZvciBTb2xhcmlzJ3MgWC9PcGVuIGN1cnNlcworICovCisjaWYgIWRlZmluZWQoS0VZX01JTikgJiYgZGVmaW5lZChfX0tFWV9NSU4pCisjZGVmaW5lIEtFWV9NSU4gX19LRVlfTUlOCisjZW5kaWYKKyNpZiAhZGVmaW5lZChLRVlfTUFYKSAmJiBkZWZpbmVkKF9fS0VZX01JTikKKyNkZWZpbmUgS0VZX01BWCBfX0tFWV9NQVgKKyNlbmRpZgorCisvKgorICogV29ya2Fyb3VuZCB0byBidWlsZCB3aXRoIFN1bidzIGRlZmF1bHQgU1ZyNCBjdXJzZXMuCisgKi8KKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyNpZm5kZWYgSEFWRV9WV19QUklOVFcKKyNkZWZpbmUgSEFWRV9WV19QUklOVFcgMQorI2VuZGlmCisjZW5kaWYKKworLyoKKyAqIG5jdXJzZXMgcHJvdmlkZXMgYXJyYXlzIG9mIGNhcGFiaWxpdHkgbmFtZXM7IFgvT3BlbiBkaXNjYXJkZWQgdGhlc2UgU1ZyNAorICogZmVhdHVyZXMuICBTb21lIGltcGxlbWVudGF0aW9ucyBjb250aW51ZSB0byBwcm92aWRlIHRoZW0gKHNlZSB0aGUgdGVzdAorICogY29uZmlndXJlIHNjcmlwdCkuCisgKi8KKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyNpZm5kZWYgSEFWRV9DVVJTRVNfREFUQV9CT09MTkFNRVMKKyNkZWZpbmUgSEFWRV9DVVJTRVNfREFUQV9CT09MTkFNRVMgMQorI2VuZGlmCisjZW5kaWYKKworLyoKKyAqIG5jdXJzZXMgdXNlcyBjb25zdCBpbiBzb21lIHBsYWNlcyB3aGVyZSBYL09wZW4gZG9lcyAob3IgZGlkKSBub3QgYWxsb3cuCisgKi8KKyNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyNkZWZpbmUgQ09OU1RfTUVOVVMgY29uc3QKKyNlbHNlCisjZGVmaW5lIENPTlNUX01FTlVTCQkvKiBub3RoaW5nICovCisjZW5kaWYKKworLyoKKyAqIFNpbXBsaWZ5IHNldHRpbmcgdXAgZGVtbyBvZiB0aHJlYWRpbmcgd2l0aCB0aGVzZSBtYWNyb3MuCisgKi8KKworI2lmIEhBVkVfVVNFX1dJTkRPVworI2RlZmluZSBVU0lOR19XSU5ET1codyxmdW5jKSB1c2Vfd2luZG93KHcsIChOQ1VSU0VTX1dJTkRPV19DQikgZnVuYywgdykKKyNkZWZpbmUgVVNJTkdfV0lORE9XMih3LGZ1bmMsZGF0YSkgdXNlX3dpbmRvdyh3LCAoTkNVUlNFU19XSU5ET1dfQ0IpIGZ1bmMsIGRhdGEpCisjZGVmaW5lIFdBTlRfVVNFX1dJTkRPVygpIGV4dGVybiB2b2lkIF9uY193YW50X3VzZV93aW5kb3codm9pZCkKKyNlbHNlCisjZGVmaW5lIFVTSU5HX1dJTkRPVyh3LGZ1bmMpIGZ1bmModykKKyNkZWZpbmUgVVNJTkdfV0lORE9XMih3LGZ1bmMsZGF0YSkgZnVuYyh3LGRhdGEpCisjZGVmaW5lIFdBTlRfVVNFX1dJTkRPVygpIGV4dGVybiB2b2lkIF9uY193YW50X3VzZV93aW5kb3codm9pZCkKKyNlbmRpZgorCisjaWYgSEFWRV9VU0VfV0lORE9XCisjZGVmaW5lIFVTSU5HX1NDUkVFTihzLGZ1bmMsZGF0YSkgdXNlX3NjcmVlbihzLCAoTkNVUlNFU19TQ1JFRU5fQ0IpIGZ1bmMsIGRhdGEpCisjZGVmaW5lIFdBTlRfVVNFX1NDUkVFTigpIGV4dGVybiB2b2lkIF9uY193YW50X3VzZV9zY3JlZW4odm9pZCkKKyNlbHNlCisjZGVmaW5lIFVTSU5HX1NDUkVFTihzLGZ1bmMsZGF0YSkgZnVuYyhkYXRhKQorI2RlZmluZSBXQU5UX1VTRV9TQ1JFRU4oKSBleHRlcm4gdm9pZCBfbmNfd2FudF91c2Vfc2NyZWVuKHZvaWQpCisjZW5kaWYKKworI2lmZGVmIFRSQUNFCisjZGVmaW5lIFRyYWNlKHApIF90cmFjZWYgcAorI2RlZmluZSBVU0VfVFJBQ0UgMQorI2Vsc2UKKyNkZWZpbmUgVHJhY2UocCkJCS8qIG5vdGhpbmcgKi8KKyNkZWZpbmUgVVNFX1RSQUNFIDAKKyNlbmRpZgorCisjZGVmaW5lIFRyYWNlMihwKQkJLyogbm90aGluZyAqLworCisjZGVmaW5lIE12QWRkQ2ggICAgICAgICAodm9pZCkgbXZhZGRjaAorI2RlZmluZSBNdldBZGRDaCAgICAgICAgKHZvaWQpIG12d2FkZGNoCisjZGVmaW5lIE12QWRkU3RyICAgICAgICAodm9pZCkgbXZhZGRzdHIKKyNkZWZpbmUgTXZXQWRkU3RyICAgICAgICh2b2lkKSBtdndhZGRzdHIKKyNkZWZpbmUgTXZXQWRkQ2hTdHIgICAgICh2b2lkKSBtdndhZGRjaHN0cgorI2RlZmluZSBNdlByaW50dyAgICAgICAgKHZvaWQpIG12cHJpbnR3CisjZGVmaW5lIE12V1ByaW50dyAgICAgICAodm9pZCkgbXZ3cHJpbnR3CisjZGVmaW5lIE12SExpbmUgICAgICAgICAodm9pZCkgbXZobGluZQorI2RlZmluZSBNdldITGluZSAgICAgICAgKHZvaWQpIG12d2hsaW5lCisjZGVmaW5lIE12VkxpbmUgICAgICAgICAodm9pZCkgbXZ2bGluZQorI2RlZmluZSBNdldWTGluZSAgICAgICAgKHZvaWQpIG12d3ZsaW5lCisKKy8qCisgKiBUaGUgbWFjcm8gbGlrZWx5IHVzZXMgdW5zaWduZWQgdmFsdWVzLCB3aGlsZSBYL09wZW4gcHJvdG90eXBlIHVzZXMgaW50LgorICovCisjaWYgZGVmaW5lZCh3YXR0cnNldCkgfHwgZGVmaW5lZChQRENVUlNFUykKKyNkZWZpbmUgQXR0ckFyZyhwLGEpICAgIChhdHRyX3QpICgoYXR0cl90KShwKSB8IChhdHRyX3QpKGEpKQorI2Vsc2UKKyNkZWZpbmUgQXR0ckFyZyhwLGEpICAgIChpbnQpICgoYXR0cl90KShwKSB8IChhdHRyX3QpKGEpKQorI2VuZGlmCisKKy8qCisgKiBXb3JrYXJvdW5kIGZvciBkZWZlY3RpdmUgaW1wbGVtZW50YXRpb24gb2YgZ2NjIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKKyAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0ZPUlRJRllfU09VUkNFKQorI2RlZmluZSBJR05PUkVfUkMoZnVuYykgZXJybm8gPSBmdW5jCisjZWxzZQorI2RlZmluZSBJR05PUkVfUkMoZnVuYykgKHZvaWQpIGZ1bmMKKyNlbmRpZiAvKiBnY2Mgd29ya2Fyb3VuZHMgKi8KKworI2RlZmluZSBpbml0X21iKHN0YXRlKQltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKQorCisjZW5kaWYgLyogX19URVNUX1BSSVZfSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X2FkZF93Y2hzdHIuYyBiL3Rlc3QvdGVzdF9hZGRfd2Noc3RyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU5YTMzOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdF9hZGRfd2Noc3RyLmMKQEAgLTAsMCArMSw1OTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IHRlc3RfYWRkX3djaHN0ci5jLHYgMS4yMSAyMDE0LzA4LzAyIDE3OjI0OjU1IHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIHRoZSB3YWRkd2Noc3RyKCkgYW5kIHdhZGRfd2NoIGZ1bmN0aW9ucy4KKyAqIFRob21hcyBEaWNrZXkgLSAyMDA5LzkvMTIKKyAqCisgKiBOb3RlOiB0byBwcm92aWRlIGlucHV0cyBmb3IgKmFkZF93Y2goKSwgd2UgdXNlIHNldGNjaGFyKCkuICBBIHF1aXJrIG9mIHRoZQorICogWC9PcGVuIGRlZmluaXRpb24gZm9yIHRoYXQgZnVuY3Rpb24gaXMgdGhhdCB0aGUgc3RyaW5nIGNvbnRhaW5zIG5vCisgKiBjaGFyYWN0ZXJzIHdpdGggbmVnYXRpdmUgd2lkdGguICBBbnkgY29udHJvbCBjaGFyYWN0ZXIgKHN1Y2ggYXMgdGFiKSBmYWxscworICogaW50byB0aGF0IGNhdGVnb3J5LiAgU28gaXQgZm9sbG93cyB0aGF0ICphZGRfd2NoKCkgY2Fubm90IHJlbmRlciBhIHRhYgorICogY2hhcmFjdGVyIGJlY2F1c2UgdGhlcmUgaXMgbm8gbGVnYWwgd2F5IHRvIGNvbnN0cnVjdCBhIGNjaGFyX3QgY29udGFpbmluZworICogb25lLiAgWC9PcGVuIGRvZXMgbm90IGRvY3VtZW50IHRoaXMsIGFuZCBpdCB3b3VsZCBiZSBsb2dpY2FsIHRvIGFzc3VtZSB0aGF0CisgKiAqYWRkd2Noc3RyKCkgaGFzIHRoZSBzYW1lIGxpbWl0YXRpb24sIGJ1dCBpdCB1c2VzIGEgd2NoYXJfdCBzdHJpbmcgZGlyZWN0bHksCisgKiBhbmQgZG9lcyBub3QgZG9jdW1lbnQgaG93IHRhYnMgYXJlIGhhbmRsZWQuCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgVVNFX1dJREVDX1NVUFBPUlQKKworI2RlZmluZSBXSURFX0xJTkVEQVRBCisjaW5jbHVkZSA8bGluZWRhdGEuaD4KKworI3VuZGVmIE12QWRkQ2gKKyN1bmRlZiBNdkFkZFN0cgorI3VuZGVmIE12V0FkZENoCisjdW5kZWYgTXZXQWRkU3RyCisKKy8qIGRlZmluaXRpb25zIHRvIG1ha2UgaXQgc2ltcGxlciB0byBjb21wYXJlIHdpdGggdGVzdF9hZGRzdHIuYyAqLworI2RlZmluZSBBZGROU3RyICAgIGFkZF93Y2huc3RyCisjZGVmaW5lIEFkZFN0ciAgICAgYWRkX3djaHN0cgorI2RlZmluZSBNdkFkZE5TdHIgICh2b2lkKSBtdmFkZF93Y2huc3RyCisjZGVmaW5lIE12QWRkU3RyICAgKHZvaWQpIG12YWRkX3djaHN0cgorI2RlZmluZSBNdldBZGROU3RyICh2b2lkKSBtdndhZGRfd2NobnN0cgorI2RlZmluZSBNdldBZGRTdHIgICh2b2lkKSBtdndhZGRfd2Noc3RyCisjZGVmaW5lIFdBZGROU3RyICAgd2FkZF93Y2huc3RyCisjZGVmaW5lIFdBZGRTdHIgICAgd2FkZF93Y2hzdHIKKworI2RlZmluZSBNWV9UQUJTSVpFIDgKKwordHlwZWRlZiBlbnVtIHsKKyAgICBvRGVmYXVsdCA9IDAsCisgICAgb01vdmUgPSAxLAorICAgIG9XaW5kb3cgPSAyLAorICAgIG9Nb3ZlV2luZG93ID0gMworfSBPcHRpb25zOworCitzdGF0aWMgYm9vbCBtX29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgcGFzc19jdGxzID0gRkFMU0U7CitzdGF0aWMgYm9vbCB3X29wdCA9IEZBTFNFOworc3RhdGljIGludCBuX29wdCA9IC0xOworCitzdGF0aWMgY2NoYXJfdCAqdGVtcF9idWZmZXI7CitzdGF0aWMgc2l6ZV90IHRlbXBfbGVuZ3RoOworCisjZGVmaW5lIFRlbXBCdWZmZXIoc291cmNlX2xlbiwgc291cmNlX2Nhc3QpIFwKKyAgICBpZiAoc291cmNlICE9IDApIHsgXAorCWNvbnN0IGNoYXIgKnRlbXA7IFwKKwlzaXplX3QgbmVlZCA9IHNvdXJjZV9sZW4gKyAxOyBcCisJd2NoYXJfdCBoYXZlWzJdOyBcCisJaW50IG4gPSAwOyBcCisgXAorCWlmIChuZWVkID4gdGVtcF9sZW5ndGgpIHsgXAorCSAgICB0ZW1wX2xlbmd0aCA9IG5lZWQgKiAyOyBcCisJICAgIHRlbXBfYnVmZmVyID0gdHlwZVJlYWxsb2MoY2NoYXJfdCwgdGVtcF9sZW5ndGgsIHRlbXBfYnVmZmVyKTsgXAorCSAgICBpZiAoIXRlbXBfYnVmZmVyKSBcCisJCWZhaWxlZCgiVGVtcEJ1ZmZlciIpOyBcCisJfSBcCisJaGF2ZVswXSA9IDA7IFwKKwloYXZlWzFdID0gMDsgXAorCWRvIHsgXAorCSAgICBoYXZlWzBdID0gc291cmNlX2Nhc3Q7IFwKKwkgICAgaWYgKCFwYXNzX2N0bHMgXAorCSAgICAgJiYgaGF2ZVswXSAhPSAwIFwKKwkgICAgICYmIGhhdmVbMF0gPCAyNTYgXAorCSAgICAgJiYgKHRlbXAgPSB1bmN0cmwoKGNodHlwZSkgaGF2ZVswXSkpICE9IDAgXAorCSAgICAgJiYgc3RybGVuKHRlbXApID4gMSkgeyBcCisJCXdoaWxlICgqdGVtcCAhPSAnXDAnKSB7IFwKKwkJICAgIGhhdmVbMF0gPSAod2NoYXJfdCkgKnRlbXArKzsgXAorCQkgICAgc2V0Y2NoYXIoJnRlbXBfYnVmZmVyW24rK10sIGhhdmUsIEFfTk9STUFMLCAwLCBOVUxMKTsgXAorCQl9IFwKKwkgICAgfSBlbHNlIHsgXAorCQlzZXRjY2hhcigmdGVtcF9idWZmZXJbbisrXSwgaGF2ZSwgQV9OT1JNQUwsIDAsIE5VTEwpOyBcCisJICAgIH0gXAorCX0gd2hpbGUgKGhhdmVbMF0gIT0gMCk7IFwKKyAgICB9IGVsc2UgaWYgKHRlbXBfYnVmZmVyICE9IDApIHsgXAorCWZyZWUodGVtcF9idWZmZXIpOyBcCisJdGVtcF9idWZmZXIgPSAwOyBcCisJdGVtcF9sZW5ndGggPSAwOyBcCisgICAgfSBcCisgICAgcmV0dXJuIHRlbXBfYnVmZmVyOworCitzdGF0aWMgc2l6ZV90CitDaFdMZW4oY29uc3Qgd2NoYXJfdCAqc291cmNlKQoreworICAgIHNpemVfdCByZXN1bHQgPSB3Y3NsZW4oc291cmNlKTsKKworICAgIGlmICghcGFzc19jdGxzKSB7CisJc2l6ZV90IGFkanVzdCA9IDA7CisJc2l6ZV90IG47CisJY29uc3QgY2hhciAqczsKKworCWZvciAobiA9IDA7IG4gPCByZXN1bHQ7ICsrbikgeworCSAgICBpZiAoc291cmNlW25dIDwgMjU2ICYmIChzID0gdW5jdHJsKChjaHR5cGUpIHNvdXJjZVtuXSkpICE9IDApIHsKKwkJYWRqdXN0ICs9IChzdHJsZW4ocykgLSAxKTsKKwkgICAgfQorCX0KKwlyZXN1bHQgKz0gYWRqdXN0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgY2NoYXJfdCAqCitDaFN0cihjb25zdCBjaGFyICpzb3VyY2UpCit7CisgICAgVGVtcEJ1ZmZlcihzdHJsZW4oc291cmNlKSwgVUNoYXIoKnNvdXJjZSsrKSk7Cit9CisKK3N0YXRpYyBjY2hhcl90ICoKK0NoV1N0cihjb25zdCB3Y2hhcl90ICpzb3VyY2UpCit7CisgICAgVGVtcEJ1ZmZlcihDaFdMZW4oc291cmNlKSwgKnNvdXJjZSsrKTsKK30KKworc3RhdGljIHZvaWQKK2xlZ2VuZChXSU5ET1cgKndpbiwgaW50IGxldmVsLCBPcHRpb25zIHN0YXRlLCB3Y2hhcl90ICpidWZmZXIsIGludCBsZW5ndGgpCit7CisgICAgY29uc3QgY2hhciAqc2hvd3N0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGRlZmF1bHQ6CisgICAgY2FzZSBvRGVmYXVsdDoKKwlzaG93c3RhdGUgPSAiIjsKKwlicmVhazsKKyAgICBjYXNlIG9Nb3ZlOgorCXNob3dzdGF0ZSA9ICIgKG12WFhYKSI7CisJYnJlYWs7CisgICAgY2FzZSBvV2luZG93OgorCXNob3dzdGF0ZSA9ICIgKHdpblhYWCkiOworCWJyZWFrOworICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJc2hvd3N0YXRlID0gIiAobXZ3aW5YWFgpIjsKKwlicmVhazsKKyAgICB9CisKKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdwcmludHcod2luLAorCSAgICAiVGhlIFN0cmluZ3MvQ2hhcnMgZGlzcGxheXMgc2hvdWxkIG1hdGNoLiAgRW50ZXIgYW55IGNoYXJhY3RlcnMsIGV4Y2VwdDpcbiIpOworICAgIHdwcmludHcod2luLAorCSAgICAiZG93bi1hcnJvdyBvciBeTiB0byByZXBlYXQgb24gbmV4dCBsaW5lLCBeVyBmb3IgaW5uZXIgd2luZG93LCBFU0MgdG8gZXhpdC5cbiIpOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHdwcmludHcod2luLCAiTGV2ZWwgJWQsJXMgYWRkZWQgJWQgY2hhcmFjdGVycyA8IiwgbGV2ZWwsCisJICAgIHNob3dzdGF0ZSwgbGVuZ3RoKTsKKyAgICB3YWRkd3N0cih3aW4sIGJ1ZmZlcik7CisgICAgd2FkZHN0cih3aW4sICI+Iik7Cit9CisKK3N0YXRpYyBpbnQKK0NvbE9mKHdjaGFyX3QgKmJ1ZmZlciwgaW50IGxlbmd0aCwgaW50IG1hcmdpbikKK3sKKyAgICBpbnQgbjsKKyAgICBpbnQgcmVzdWx0OworCisgICAgZm9yIChuID0gMCwgcmVzdWx0ID0gbWFyZ2luICsgMTsgbiA8IGxlbmd0aDsgKytuKSB7CisJaW50IGNoID0gYnVmZmVyW25dOworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdcbic6CisJICAgIC8qIGFjdHVhbGx5IG5ld2xpbmUgc2hvdWxkIGNsZWFyIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUKKwkgICAgICogYW5kIG1vdmUgdG8gdGhlIG5leHQgbGluZSAtIGJ1dCB0aGF0IHNlZW1zIGEgbGl0dGxlIGF3a3dhcmQKKwkgICAgICogaW4gdGhpcyBleGFtcGxlLgorCSAgICAgKi8KKwljYXNlICdccic6CisJICAgIHJlc3VsdCA9IDA7CisJICAgIGJyZWFrOworCWNhc2UgJ1xiJzoKKwkgICAgaWYgKHJlc3VsdCA+IDApCisJCS0tcmVzdWx0OworCSAgICBicmVhazsKKwljYXNlICdcdCc6CisJICAgIHJlc3VsdCArPSAoTVlfVEFCU0laRSAtIChyZXN1bHQgJSBNWV9UQUJTSVpFKSk7CisJICAgIGJyZWFrOworCWNhc2UgJ1wxNzcnOgorCSAgICByZXN1bHQgKz0gMjsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgcmVzdWx0ICs9IHdjd2lkdGgoKHdjaGFyX3QpIGNoKTsKKwkgICAgaWYgKGNoIDwgMzIpCisJCSsrcmVzdWx0OworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0NvbnZlcnRDaChjaHR5cGUgc291cmNlLCBjY2hhcl90ICp0YXJnZXQpCit7CisgICAgd2NoYXJfdCB0bXBfd2NoYXJbMl07CisKKyAgICB0bXBfd2NoYXJbMF0gPSAod2NoYXJfdCkgc291cmNlOworICAgIHRtcF93Y2hhclsxXSA9IDA7CisgICAgaWYgKHNldGNjaGFyKHRhcmdldCwgdG1wX3djaGFyLCBBX05PUk1BTCwgMCwgKHZvaWQgKikgMCkgPT0gRVJSKSB7CisJYmVlcCgpOworCXJldHVybiBGQUxTRTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQKK012V0FkZENoKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIGNodHlwZSBjaCkKK3sKKyAgICBpbnQgY29kZTsKKyAgICBjY2hhcl90IHRtcF9jY2hhcjsKKworICAgIGlmIChDb252ZXJ0Q2goY2gsICZ0bXBfY2NoYXIpKSB7CisJY29kZSA9IG12d2FkZF93Y2god2luLCB5LCB4LCAmdG1wX2NjaGFyKTsKKyAgICB9IGVsc2UgeworCWNvZGUgPSBtdndhZGRjaCh3aW4sIHksIHgsIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIGNvZGU7Cit9CisKK3N0YXRpYyBpbnQKK012QWRkQ2goaW50IHksIGludCB4LCBjaHR5cGUgY2gpCit7CisgICAgaW50IGNvZGU7CisgICAgY2NoYXJfdCB0bXBfY2NoYXI7CisKKyAgICBpZiAoQ29udmVydENoKGNoLCAmdG1wX2NjaGFyKSkgeworCWNvZGUgPSBtdmFkZF93Y2goeSwgeCwgJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gbXZhZGRjaCh5LCB4LCBjaCk7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgaW50CitXQWRkQ2goV0lORE9XICp3aW4sIGNodHlwZSBjaCkKK3sKKyAgICBpbnQgY29kZTsKKyAgICBjY2hhcl90IHRtcF9jY2hhcjsKKworICAgIGlmIChDb252ZXJ0Q2goY2gsICZ0bXBfY2NoYXIpKSB7CisJY29kZSA9IHdhZGRfd2NoKHdpbiwgJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gd2FkZGNoKHdpbiwgY2gpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworc3RhdGljIGludAorQWRkQ2goY2h0eXBlIGNoKQoreworICAgIGludCBjb2RlOworICAgIGNjaGFyX3QgdG1wX2NjaGFyOworCisgICAgaWYgKENvbnZlcnRDaChjaCwgJnRtcF9jY2hhcikpIHsKKwljb2RlID0gYWRkX3djaCgmdG1wX2NjaGFyKTsKKyAgICB9IGVsc2UgeworCWNvZGUgPSBhZGRjaChjaCk7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCisjZGVmaW5lIExFTihuKSAoKGxlbmd0aCAtIChuKSA+IG5fb3B0KSA/IG5fb3B0IDogKGxlbmd0aCAtIChuKSkpCitzdGF0aWMgdm9pZAordGVzdF9hZGRfd2Noc3RyKGludCBsZXZlbCkKK3sKKyAgICBzdGF0aWMgYm9vbCBmaXJzdCA9IFRSVUU7CisKKyAgICBpbnQgY2g7CisgICAgaW50IGxpbWl0OworICAgIGludCByb3cgPSAxOworICAgIGludCBjb2w7CisgICAgaW50IHJvdzIsIGNvbDI7CisgICAgaW50IGxlbmd0aDsKKyAgICB3Y2hhcl90IGJ1ZmZlcltCVUZTSVpdOworICAgIFdJTkRPVyAqbG9vayA9IDA7CisgICAgV0lORE9XICp3b3JrID0gMDsKKyAgICBXSU5ET1cgKnNob3cgPSAwOworICAgIGludCBtYXJnaW4gPSAoMiAqIE1ZX1RBQlNJWkUpIC0gMTsKKyAgICBPcHRpb25zIG9wdGlvbiA9ICgobV9vcHQgPyBvTW92ZSA6IG9EZWZhdWx0KQorCQkgICAgICB8ICgod19vcHQgfHwgKGxldmVsID4gMCkpID8gb1dpbmRvdyA6IG9EZWZhdWx0KSk7CisKKyAgICBpZiAoZmlyc3QpIHsKKwlzdGF0aWMgY2hhciBjbWRbODBdOworCXNldGxvY2FsZShMQ19BTEwsICIiKTsKKworCXB1dGVudihzdHJjcHkoY21kLCAiVEFCU0laRT04IikpOworCisJaW5pdHNjcigpOworCSh2b2lkKSBjYnJlYWsoKTsJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworCSh2b2lkKSBub2VjaG8oKTsJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCisJLyoKKwkgKiBTaG93IHRoZSBjaGFyYWN0ZXJzIGFkZGVkIGluIGNvbG9yLCB0byBkaXN0aW5ndWlzaCBmcm9tIHRob3NlIHRoYXQKKwkgKiBhcmUgc2hpZnRlZC4KKwkgKi8KKwlpZiAoaGFzX2NvbG9ycygpKSB7CisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGluaXRfcGFpcigxLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJfQorICAgIH0KKworICAgIGxpbWl0ID0gTElORVMgLSA1OworICAgIGlmIChsZXZlbCA+IDApIHsKKwlsb29rID0gbmV3d2luKGxpbWl0LCBDT0xTIC0gKDIgKiAobGV2ZWwgLSAxKSksIDAsIGxldmVsIC0gMSk7CisJd29yayA9IG5ld3dpbihsaW1pdCAtIDIsIENPTFMgLSAoMiAqIGxldmVsKSwgMSwgbGV2ZWwpOworCXNob3cgPSBuZXd3aW4oNCwgQ09MUywgbGltaXQgKyAxLCAwKTsKKwlib3gobG9vaywgMCwgMCk7CisJd25vdXRyZWZyZXNoKGxvb2spOworCWxpbWl0IC09IDI7CisgICAgfSBlbHNlIHsKKwl3b3JrID0gc3Rkc2NyOworCXNob3cgPSBkZXJ3aW4oc3Rkc2NyLCA0LCBDT0xTLCBsaW1pdCArIDEsIDApOworICAgIH0KKyAgICBrZXlwYWQod29yaywgVFJVRSk7CisKKyAgICBmb3IgKGNvbCA9IG1hcmdpbiArIDE7IGNvbCA8IENPTFM7IGNvbCArPSBNWV9UQUJTSVpFKQorCU12V1ZMaW5lKHdvcmssIHJvdywgY29sLCAnLicsIGxpbWl0IC0gMik7CisKKyAgICBNdldWTGluZSh3b3JrLCByb3csIG1hcmdpbiwgQUNTX1ZMSU5FLCBsaW1pdCAtIDIpOworICAgIE12V1ZMaW5lKHdvcmssIHJvdywgbWFyZ2luICsgMSwgQUNTX1ZMSU5FLCBsaW1pdCAtIDIpOworICAgIGxpbWl0IC89IDI7CisKKyAgICAodm9pZCkgbXZ3YWRkX3djaHN0cih3b3JrLCAxLCAyLCBDaFN0cigiU3RyaW5nIikpOworICAgICh2b2lkKSBtdndhZGRfd2Noc3RyKHdvcmssIGxpbWl0ICsgMSwgMiwgQ2hTdHIoIkNoYXJzIikpOworICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKworICAgIGJ1ZmZlcltsZW5ndGggPSAwXSA9ICdcMCc7CisgICAgbGVnZW5kKHNob3csIGxldmVsLCBvcHRpb24sIGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKyAgICBkb3VwZGF0ZSgpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXdia2dkc2V0KHdvcmssIChjaHR5cGUpIChDT0xPUl9QQUlSKDEpIHwgJyAnKSk7CisgICAgfQorCisgICAgd2hpbGUgKChjaCA9IHJlYWRfbGluZWRhdGEod29yaykpICE9IEVSUiAmJiAhaXNRVUlUKGNoKSkgeworCXdtb3ZlKHdvcmssIHJvdywgbWFyZ2luICsgMSk7CisJc3dpdGNoIChjaCkgeworCWNhc2Uga2V5X1JFQ1VSOgorCSAgICB0ZXN0X2FkZF93Y2hzdHIobGV2ZWwgKyAxKTsKKworCSAgICBpZiAobG9vaykKKwkJdG91Y2h3aW4obG9vayk7CisJICAgIHRvdWNod2luKHdvcmspOworCSAgICB0b3VjaHdpbihzaG93KTsKKworCSAgICBpZiAobG9vaykKKwkJd25vdXRyZWZyZXNoKGxvb2spOworCSAgICB3bm91dHJlZnJlc2god29yayk7CisJICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworCSAgICBkb3VwZGF0ZSgpOworCSAgICBicmVhazsKKwljYXNlIGtleV9ORVdMSU5FOgorCSAgICBpZiAocm93IDwgbGltaXQpIHsKKwkJKytyb3c7CisJCS8qIHB1dCB0aGUgd2hvbGUgc3RyaW5nIGluLCBhbGwgYXQgb25jZSAqLworCQljb2wyID0gbWFyZ2luICsgMTsKKwkJc3dpdGNoIChvcHRpb24pIHsKKwkJY2FzZSBvRGVmYXVsdDoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgaWYgKG1vdmUocm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCQlBZGROU3RyKENoV1N0cihidWZmZXIgKyBjb2wpLCBMRU4oY29sKSk7CisJCQkgICAgfQorCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCWlmIChtb3ZlKHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkgICAgQWRkU3RyKENoV1N0cihidWZmZXIpKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9Nb3ZlOgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBNdkFkZE5TdHIocm93LCBjb2wyLCBDaFdTdHIoYnVmZmVyICsgY29sKSwgTEVOKGNvbCkpOworCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCU12QWRkU3RyKHJvdywgY29sMiwgQ2hXU3RyKGJ1ZmZlcikpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb1dpbmRvdzoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkJV0FkZE5TdHIod29yaywgQ2hXU3RyKGJ1ZmZlciArIGNvbCksIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkgICAgV0FkZFN0cih3b3JrLCBDaFdTdHIoYnVmZmVyKSk7CisJCQl9CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvTW92ZVdpbmRvdzoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgTXZXQWRkTlN0cih3b3JrLCByb3csIGNvbDIsIENoV1N0cihidWZmZXIgKworCQkJCQkJCSAgICAgICBjb2wpLCBMRU4oY29sKSk7CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJTXZXQWRkU3RyKHdvcmssIHJvdywgY29sMiwgQ2hXU3RyKGJ1ZmZlcikpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKworCQkvKiBkbyB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUtY2hhcmFjdGVyIGFkZCAqLworCQlyb3cyID0gbGltaXQgKyByb3c7CisJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyArK2NvbCkgeworCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCQlpZiAobW92ZShyb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBBZGRDaCgoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmU6CisJCQlNdkFkZENoKHJvdzIsIGNvbDIsIChjaHR5cGUpIGJ1ZmZlcltjb2xdKTsKKwkJCWJyZWFrOworCQkgICAgY2FzZSBvV2luZG93OgorCQkJaWYgKHdtb3ZlKHdvcmssIHJvdzIsIGNvbDIpICE9IEVSUikgeworCQkJICAgIFdBZGRDaCh3b3JrLCAoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCQlNdldBZGRDaCh3b3JrLCByb3cyLCBjb2wyLCAoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYnVmZmVyW2xlbmd0aCsrXSA9ICh3Y2hhcl90KSBjaDsKKwkgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworCisJICAgIC8qIHB1dCB0aGUgc3RyaW5nIGluLCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSAqLworCSAgICBjb2wgPSBDb2xPZihidWZmZXIsIGxlbmd0aCAtIDEsIG1hcmdpbik7CisJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCWlmIChtb3ZlKHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIEFkZFN0cihDaFdTdHIoYnVmZmVyICsgbGVuZ3RoIC0gMSkpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlOgorCQlNdkFkZFN0cihyb3csIGNvbCwgQ2hXU3RyKGJ1ZmZlciArIGxlbmd0aCAtIDEpKTsKKwkJYnJlYWs7CisJICAgIGNhc2Ugb1dpbmRvdzoKKwkJaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIFdBZGRTdHIod29yaywgQ2hXU3RyKGJ1ZmZlciArIGxlbmd0aCAtIDEpKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJTXZXQWRkU3RyKHdvcmssIHJvdywgY29sLCBDaFdTdHIoYnVmZmVyICsgbGVuZ3RoIC0gMSkpOworCQlicmVhazsKKwkgICAgfQorCisJICAgIC8qIGRvIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZS1jaGFyYWN0ZXIgYWRkICovCisJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCWlmIChtb3ZlKGxpbWl0ICsgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgQWRkQ2goKGNodHlwZSkgY2gpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlOgorCQlNdkFkZENoKGxpbWl0ICsgcm93LCBjb2wsIChjaHR5cGUpIGNoKTsKKwkJYnJlYWs7CisJICAgIGNhc2Ugb1dpbmRvdzoKKwkJaWYgKHdtb3ZlKHdvcmssIGxpbWl0ICsgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgV0FkZENoKHdvcmssIChjaHR5cGUpIGNoKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJTXZXQWRkQ2god29yaywgbGltaXQgKyByb3csIGNvbCwgKGNodHlwZSkgY2gpOworCQlicmVhazsKKwkgICAgfQorCisJICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKworCSAgICBsZWdlbmQoc2hvdywgbGV2ZWwsIG9wdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworCSAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKwkgICAgZG91cGRhdGUoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBkZWx3aW4oc2hvdyk7CisgICAgaWYgKGxldmVsID4gMCkgeworCWRlbHdpbih3b3JrKTsKKwlkZWx3aW4obG9vayk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqdGJsW10gPQorICAgIHsKKwkiVXNhZ2U6IHRlc3RfYWRkX3djaHN0ciBbb3B0aW9uc10iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLWYgRklMRSByZWFkIGRhdGEgZnJvbSBnaXZlbiBmaWxlIgorCSwiICAtbiBOVU0gIGxpbWl0IHN0cmluZy1hZGRzIHRvIE5VTSBieXRlcyBvbiBeTiByZXBsYXkiCisJLCIgIC1tICAgICAgcGVyZm9ybSB3bW92ZS9tb3ZlIHNlcGFyYXRlbHkgZnJvbSBhZGQtZnVuY3Rpb25zIgorCSwiICAtcCAgICAgIHBhc3MtdGhydSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aG91dCB1c2luZyB1bmN0cmwoKSIKKwksIiAgLXcgICAgICB1c2Ugd2luZG93LXBhcmFtZXRlciBldmVuIHdoZW4gc3Rkc2NyIHdvdWxkIGJlIGltcGxpZWQiCisgICAgfTsKKyAgICB1bnNpZ25lZCBuOworICAgIGZvciAobiA9IDA7IG4gPCBTSVpFT0YodGJsKTsgKytuKQorCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHRibFtuXSk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgaW50IGNoOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgd2hpbGUgKChjaCA9IGdldG9wdChhcmdjLCBhcmd2LCAiZjptbjpwdyIpKSAhPSAtMSkgeworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdmJzoKKwkgICAgaW5pdF9saW5lZGF0YShvcHRhcmcpOworCSAgICBicmVhazsKKwljYXNlICdtJzoKKwkgICAgbV9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICduJzoKKwkgICAgbl9vcHQgPSBhdG9pKG9wdGFyZyk7CisJICAgIGlmIChuX29wdCA9PSAwKQorCQluX29wdCA9IC0xOworCSAgICBicmVhazsKKwljYXNlICdwJzoKKwkgICAgcGFzc19jdGxzID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHdfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAob3B0aW5kIDwgYXJnYykKKwl1c2FnZSgpOworCisgICAgdGVzdF9hZGRfd2Noc3RyKDApOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKHZvaWQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHdpZGUtbmN1cnNlcyBsaWJyYXJ5XG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0L3Rlc3RfYWRkY2hzdHIuYyBiL3Rlc3QvdGVzdF9hZGRjaHN0ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYWU4NDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3RfYWRkY2hzdHIuYwpAQCAtMCwwICsxLDUxOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwLDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IHRlc3RfYWRkY2hzdHIuYyx2IDEuMTggMjAxMi8xMi8xNiAwMDozNjoyNyB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgd2FkZGNoc3RyKCkgYW5kIHdhZGRjaCBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAwOS85LzEyCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaW5jbHVkZSA8bGluZWRhdGEuaD4KKworI3VuZGVmIE12QWRkU3RyCisjdW5kZWYgTXZXQWRkU3RyCisKKyNkZWZpbmUgQWRkTlN0ciAgICBhZGRjaG5zdHIKKyNkZWZpbmUgQWRkU3RyICAgICBhZGRjaHN0cgorI2RlZmluZSBNdkFkZE5TdHIgICh2b2lkKSBtdmFkZGNobnN0cgorI2RlZmluZSBNdkFkZFN0ciAgICh2b2lkKSBtdmFkZGNoc3RyCisjZGVmaW5lIE12V0FkZE5TdHIgKHZvaWQpIG12d2FkZGNobnN0cgorI2RlZmluZSBNdldBZGRTdHIgICh2b2lkKSBtdndhZGRjaHN0cgorI2RlZmluZSBXQWRkTlN0ciAgIHdhZGRjaG5zdHIKKyNkZWZpbmUgV0FkZFN0ciAgICB3YWRkY2hzdHIKKworI2RlZmluZSBBZGRDaCAgICAgIGFkZGNoCisjZGVmaW5lIFdBZGRDaCAgICAgd2FkZGNoCisKKyNkZWZpbmUgTVlfVEFCU0laRSA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgb0RlZmF1bHQgPSAwLAorICAgIG9Nb3ZlID0gMSwKKyAgICBvV2luZG93ID0gMiwKKyAgICBvTW92ZVdpbmRvdyA9IDMKK30gT3B0aW9uczsKKworc3RhdGljIGJvb2wgbV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHBhc3NfY3RscyA9IEZBTFNFOworc3RhdGljIGJvb2wgd19vcHQgPSBGQUxTRTsKK3N0YXRpYyBpbnQgbl9vcHQgPSAtMTsKKworc3RhdGljIGF0dHJfdCBzaG93X2F0dHI7CitzdGF0aWMgY2h0eXBlICp0ZW1wX2J1ZmZlcjsKK3N0YXRpYyBzaXplX3QgdGVtcF9sZW5ndGg7CisKKyNkZWZpbmUgVGVtcEJ1ZmZlcihzb3VyY2VfY2FzdCkKKworc3RhdGljIHNpemVfdAorQ2hMZW4oY29uc3QgY2hhciAqc291cmNlKQoreworICAgIHNpemVfdCByZXN1bHQgPSBzdHJsZW4oc291cmNlKTsKKworICAgIGlmICghcGFzc19jdGxzKSB7CisJc2l6ZV90IGFkanVzdCA9IDA7CisJc2l6ZV90IG47CisKKwlmb3IgKG4gPSAwOyBuIDwgcmVzdWx0OyArK24pIHsKKwkgICAgY29uc3QgY2hhciAqcyA9IHVuY3RybChVQ2hhcihzb3VyY2Vbbl0pKTsKKwkgICAgaWYgKHMgIT0gMCkgeworCQlhZGp1c3QgKz0gKHN0cmxlbihzKSAtIDEpOworCSAgICB9CisJfQorCXJlc3VsdCArPSBhZGp1c3Q7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjaHR5cGUgKgorQ2hTdHIoY29uc3QgY2hhciAqc291cmNlKQoreworICAgIGlmIChzb3VyY2UgIT0gMCkgeworCXNpemVfdCBuZWVkID0gQ2hMZW4oc291cmNlKSArIDE7CisJaW50IG4gPSAwOworCisJaWYgKG5lZWQgPiB0ZW1wX2xlbmd0aCkgeworCSAgICB0ZW1wX2xlbmd0aCA9IG5lZWQgKiAyOworCSAgICB0ZW1wX2J1ZmZlciA9IHR5cGVSZWFsbG9jKGNodHlwZSwgdGVtcF9sZW5ndGgsIHRlbXBfYnVmZmVyKTsKKwkgICAgaWYgKCF0ZW1wX2J1ZmZlcikKKwkJZmFpbGVkKCJUZW1wQnVmZmVyIik7CisJfQorCWRvIHsKKwkgICAgY29uc3QgY2hhciAqczsKKwkgICAgY2h0eXBlIGNoID0gVUNoYXIoKnNvdXJjZSsrKTsKKwkgICAgaWYgKCFwYXNzX2N0bHMgJiYgKHMgPSB1bmN0cmwoY2gpKSAhPSAwKSB7CisJCXdoaWxlICgqcyAhPSAnXDAnKSB7CisJCSAgICB0ZW1wX2J1ZmZlcltuKytdID0gVUNoYXIoKnMrKyk7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJdGVtcF9idWZmZXJbbisrXSA9IGNoOworCSAgICB9CisJfSB3aGlsZSAoc291cmNlWzBdICE9IDApOworCXRlbXBfYnVmZmVyW25dID0gMDsKKyAgICB9IGVsc2UgaWYgKHRlbXBfYnVmZmVyICE9IDApIHsKKwlmcmVlKHRlbXBfYnVmZmVyKTsKKwl0ZW1wX2J1ZmZlciA9IDA7CisJdGVtcF9sZW5ndGggPSAwOworICAgIH0KKyAgICByZXR1cm4gdGVtcF9idWZmZXI7Cit9CisKKy8qIGNvbG9yIHRoZSBzdHJpbmdzIGRyYXduIGluIHRoZSB3b3Jrc3BhY2UgKi8KK3N0YXRpYyBjaHR5cGUgKgorQ2hTdHIyKGNvbnN0IGNoYXIgKnNvdXJjZSkKK3sKKyAgICBzaXplX3QgbGVuID0gQ2hMZW4oc291cmNlKTsKKyAgICBzaXplX3QgbjsKKyAgICBjaHR5cGUgKnJlc3VsdCA9IENoU3RyKHNvdXJjZSk7CisgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgKytuKSB7CisJcmVzdWx0W25dIHw9IHNob3dfYXR0cjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2xlZ2VuZChXSU5ET1cgKndpbiwgaW50IGxldmVsLCBPcHRpb25zIHN0YXRlLCBjaGFyICpidWZmZXIsIGludCBsZW5ndGgpCit7CisgICAgY29uc3QgY2hhciAqc2hvd3N0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGRlZmF1bHQ6CisgICAgY2FzZSBvRGVmYXVsdDoKKwlzaG93c3RhdGUgPSAiIjsKKwlicmVhazsKKyAgICBjYXNlIG9Nb3ZlOgorCXNob3dzdGF0ZSA9ICIgKG12WFhYKSI7CisJYnJlYWs7CisgICAgY2FzZSBvV2luZG93OgorCXNob3dzdGF0ZSA9ICIgKHdpblhYWCkiOworCWJyZWFrOworICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJc2hvd3N0YXRlID0gIiAobXZ3aW5YWFgpIjsKKwlicmVhazsKKyAgICB9CisKKyAgICB3bW92ZSh3aW4sIDAsIDApOworICAgIHdwcmludHcod2luLAorCSAgICAiVGhlIFN0cmluZ3MvQ2hhcnMgZGlzcGxheXMgc2hvdWxkIG1hdGNoLiAgRW50ZXIgYW55IGNoYXJhY3RlcnMsIGV4Y2VwdDpcbiIpOworICAgIHdwcmludHcod2luLAorCSAgICAiZG93bi1hcnJvdyBvciBeTiB0byByZXBlYXQgb24gbmV4dCBsaW5lLCBeVyBmb3IgaW5uZXIgd2luZG93LCBFU0MgdG8gZXhpdC5cbiIpOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHdwcmludHcod2luLCAiTGV2ZWwgJWQsJXMgYWRkZWQgJWQgY2hhcmFjdGVycyA8JXM+IiwgbGV2ZWwsCisJICAgIHNob3dzdGF0ZSwgbGVuZ3RoLCBidWZmZXIpOworfQorCitzdGF0aWMgaW50CitDb2xPZihjaGFyICpidWZmZXIsIGludCBsZW5ndGgsIGludCBtYXJnaW4pCit7CisgICAgaW50IG47CisgICAgaW50IHJlc3VsdDsKKworICAgIGZvciAobiA9IDAsIHJlc3VsdCA9IG1hcmdpbiArIDE7IG4gPCBsZW5ndGg7ICsrbikgeworCWludCBjaCA9IFVDaGFyKGJ1ZmZlcltuXSk7CisJc3dpdGNoIChjaCkgeworCWNhc2UgJ1xuJzoKKwkgICAgLyogYWN0dWFsbHkgbmV3bGluZSBzaG91bGQgY2xlYXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZQorCSAgICAgKiBhbmQgbW92ZSB0byB0aGUgbmV4dCBsaW5lIC0gYnV0IHRoYXQgc2VlbXMgYSBsaXR0bGUgYXdrd2FyZAorCSAgICAgKiBpbiB0aGlzIGV4YW1wbGUuCisJICAgICAqLworCWNhc2UgJ1xyJzoKKwkgICAgcmVzdWx0ID0gMDsKKwkgICAgYnJlYWs7CisJY2FzZSAnXGInOgorCSAgICBpZiAocmVzdWx0ID4gMCkKKwkJLS1yZXN1bHQ7CisJICAgIGJyZWFrOworCWNhc2UgJ1x0JzoKKwkgICAgcmVzdWx0ICs9IChNWV9UQUJTSVpFIC0gKHJlc3VsdCAlIE1ZX1RBQlNJWkUpKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnXDE3Nyc6CisJICAgIHJlc3VsdCArPSAyOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICArK3Jlc3VsdDsKKwkgICAgaWYgKGNoIDwgMzIpCisJCSsrcmVzdWx0OworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNkZWZpbmUgTEVOKG4pICgobGVuZ3RoIC0gKG4pID4gbl9vcHQpID8gbl9vcHQgOiAobGVuZ3RoIC0gKG4pKSkKK3N0YXRpYyB2b2lkCit0ZXN0X2FkZHMoaW50IGxldmVsKQoreworICAgIHN0YXRpYyBib29sIGZpcnN0ID0gVFJVRTsKKworICAgIGludCBjaDsKKyAgICBpbnQgbGltaXQ7CisgICAgaW50IHJvdyA9IDE7CisgICAgaW50IGNvbDsKKyAgICBpbnQgcm93MiwgY29sMjsKKyAgICBpbnQgbGVuZ3RoOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWl07CisgICAgV0lORE9XICpsb29rID0gMDsKKyAgICBXSU5ET1cgKndvcmsgPSAwOworICAgIFdJTkRPVyAqc2hvdyA9IDA7CisgICAgaW50IG1hcmdpbiA9ICgyICogTVlfVEFCU0laRSkgLSAxOworICAgIE9wdGlvbnMgb3B0aW9uID0gKE9wdGlvbnMpICgodW5zaWduZWQpIChtX29wdAorCQkJCQkgICAgPyBvTW92ZQorCQkJCQkgICAgOiBvRGVmYXVsdCkKKwkJCQl8ICh1bnNpZ25lZCkgKCh3X29wdCB8fCAobGV2ZWwgPiAwKSkKKwkJCQkJICAgICAgPyBvV2luZG93CisJCQkJCSAgICAgIDogb0RlZmF1bHQpKTsKKworICAgIGlmIChmaXJzdCkgeworCXN0YXRpYyBjaGFyIGNtZFs4MF07CisJc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisJcHV0ZW52KHN0cmNweShjbWQsICJUQUJTSVpFPTgiKSk7CisKKwlpbml0c2NyKCk7CisJKHZvaWQpIGNicmVhaygpOwkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisJKHZvaWQpIG5vZWNobygpOwkvKiBkb24ndCBlY2hvIGlucHV0ICovCisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CisKKwkvKgorCSAqIFNob3cgdGhlIGNoYXJhY3RlcnMgYWRkZWQgaW4gY29sb3IsIHRvIGRpc3Rpbmd1aXNoIGZyb20gdGhvc2UgdGhhdAorCSAqIGFyZSBzaGlmdGVkLgorCSAqLworCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgc3RhcnRfY29sb3IoKTsKKwkgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKwl9CisgICAgfQorCisgICAgbGltaXQgPSBMSU5FUyAtIDU7CisgICAgaWYgKGxldmVsID4gMCkgeworCWxvb2sgPSBuZXd3aW4obGltaXQsIENPTFMgLSAoMiAqIChsZXZlbCAtIDEpKSwgMCwgbGV2ZWwgLSAxKTsKKwl3b3JrID0gbmV3d2luKGxpbWl0IC0gMiwgQ09MUyAtICgyICogbGV2ZWwpLCAxLCBsZXZlbCk7CisJc2hvdyA9IG5ld3dpbig0LCBDT0xTLCBsaW1pdCArIDEsIDApOworCWJveChsb29rLCAwLCAwKTsKKwl3bm91dHJlZnJlc2gobG9vayk7CisJbGltaXQgLT0gMjsKKyAgICB9IGVsc2UgeworCXdvcmsgPSBzdGRzY3I7CisJc2hvdyA9IGRlcndpbihzdGRzY3IsIDQsIENPTFMsIGxpbWl0ICsgMSwgMCk7CisgICAgfQorICAgIGtleXBhZCh3b3JrLCBUUlVFKTsKKworICAgIGZvciAoY29sID0gbWFyZ2luICsgMTsgY29sIDwgQ09MUzsgY29sICs9IE1ZX1RBQlNJWkUpCisJTXZXVkxpbmUod29yaywgcm93LCBjb2wsICcuJywgbGltaXQgLSAyKTsKKworICAgIE12V1ZMaW5lKHdvcmssIHJvdywgbWFyZ2luLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgTXZXVkxpbmUod29yaywgcm93LCBtYXJnaW4gKyAxLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgbGltaXQgLz0gMjsKKworICAgIE12V0FkZENoU3RyKHdvcmssIDEsIDIsIENoU3RyKCJTdHJpbmciKSk7CisgICAgTXZXQWRkQ2hTdHIod29yaywgbGltaXQgKyAxLCAyLCBDaFN0cigiQ2hhcnMiKSk7CisgICAgd25vdXRyZWZyZXNoKHdvcmspOworCisgICAgYnVmZmVyW2xlbmd0aCA9IDBdID0gJ1wwJzsKKyAgICBsZWdlbmQoc2hvdywgbGV2ZWwsIG9wdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworICAgIGRvdXBkYXRlKCk7CisKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJc2hvd19hdHRyID0gKGF0dHJfdCkgQ09MT1JfUEFJUigxKTsKKwl3YmtnZHNldCh3b3JrLCBzaG93X2F0dHIgfCAnICcpOworICAgIH0gZWxzZSB7CisJc2hvd19hdHRyID0gQV9TVEFORE9VVDsKKyAgICB9CisKKyAgICB3aGlsZSAoKGNoID0gcmVhZF9saW5lZGF0YSh3b3JrKSkgIT0gRVJSICYmICFpc1FVSVQoY2gpKSB7CisJd21vdmUod29yaywgcm93LCBtYXJnaW4gKyAxKTsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBrZXlfUkVDVVI6CisJICAgIHRlc3RfYWRkcyhsZXZlbCArIDEpOworCisJICAgIGlmIChsb29rKQorCQl0b3VjaHdpbihsb29rKTsKKwkgICAgdG91Y2h3aW4od29yayk7CisJICAgIHRvdWNod2luKHNob3cpOworCisJICAgIGlmIChsb29rKQorCQl3bm91dHJlZnJlc2gobG9vayk7CisJICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKwkgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisJICAgIGRvdXBkYXRlKCk7CisJICAgIGJyZWFrOworCWNhc2Uga2V5X05FV0xJTkU6CisJICAgIGlmIChyb3cgPCBsaW1pdCkgeworCQkrK3JvdzsKKwkJLyogcHV0IHRoZSB3aG9sZSBzdHJpbmcgaW4sIGFsbCBhdCBvbmNlICovCisJCWNvbDIgPSBtYXJnaW4gKyAxOworCQlzd2l0Y2ggKG9wdGlvbikgeworCQljYXNlIG9EZWZhdWx0OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBpZiAobW92ZShyb3csIGNvbDIpICE9IEVSUikgeworCQkJCUFkZE5TdHIoQ2hTdHIyKGJ1ZmZlciArIGNvbCksIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKG1vdmUocm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBBZGRTdHIoQ2hTdHIyKGJ1ZmZlcikpOworCQkJfQorCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb01vdmU6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIE12QWRkTlN0cihyb3csIGNvbDIsIENoU3RyMihidWZmZXIgKyBjb2wpLCBMRU4oY29sKSk7CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJTXZBZGRTdHIocm93LCBjb2wyLCBDaFN0cjIoYnVmZmVyKSk7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvV2luZG93OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBpZiAod21vdmUod29yaywgcm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCQlXQWRkTlN0cih3b3JrLCBDaFN0cjIoYnVmZmVyICsgY29sKSwgTEVOKGNvbCkpOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlpZiAod21vdmUod29yaywgcm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBXQWRkU3RyKHdvcmssIENoU3RyMihidWZmZXIpKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9Nb3ZlV2luZG93OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBNdldBZGROU3RyKHdvcmssIHJvdywgY29sMiwgQ2hTdHIyKGJ1ZmZlciArIGNvbCksCisJCQkJICAgICAgIExFTihjb2wpKTsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlNdldBZGRTdHIod29yaywgcm93LCBjb2wyLCBDaFN0cjIoYnVmZmVyKSk7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJfQorCisJCS8qIGRvIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZS1jaGFyYWN0ZXIgYWRkICovCisJCXJvdzIgPSBsaW1pdCArIHJvdzsKKwkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7ICsrY29sKSB7CisJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCSAgICBzd2l0Y2ggKG9wdGlvbikgeworCQkgICAgY2FzZSBvRGVmYXVsdDoKKwkJCWlmIChtb3ZlKHJvdzIsIGNvbDIpICE9IEVSUikgeworCQkJICAgIEFkZENoKFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmU6CisJCQlNdkFkZENoKHJvdzIsIGNvbDIsIFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb1dpbmRvdzoKKwkJCWlmICh3bW92ZSh3b3JrLCByb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBXQWRkQ2god29yaywgVUNoYXIoYnVmZmVyW2NvbF0pKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJCU12V0FkZENoKHdvcmssIHJvdzIsIGNvbDIsIFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfQkFDS1NQQUNFOgorCSAgICBjaCA9ICdcYic7CisJICAgIC8qIEZBTExUSFJVICovCisJZGVmYXVsdDoKKwkgICAgaWYgKGNoIDw9IDAgfHwgY2ggPiAyNTUpIHsKKwkJYmVlcCgpOworCQlicmVhazsKKwkgICAgfQorCSAgICBidWZmZXJbbGVuZ3RoKytdID0gKGNoYXIpIGNoOworCSAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisKKwkgICAgLyogcHV0IHRoZSBzdHJpbmcgaW4sIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lICovCisJICAgIGNvbCA9IENvbE9mKGJ1ZmZlciwgbGVuZ3RoIC0gMSwgbWFyZ2luKTsKKwkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkgICAgY2FzZSBvRGVmYXVsdDoKKwkJaWYgKG1vdmUocm93LCBjb2wpICE9IEVSUikgeworCQkgICAgQWRkU3RyKENoU3RyMihidWZmZXIgKyBsZW5ndGggLSAxKSk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmU6CisJCU12QWRkU3RyKHJvdywgY29sLCBDaFN0cjIoYnVmZmVyICsgbGVuZ3RoIC0gMSkpOworCQlicmVhazsKKwkgICAgY2FzZSBvV2luZG93OgorCQlpZiAod21vdmUod29yaywgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgV0FkZFN0cih3b3JrLCBDaFN0cjIoYnVmZmVyICsgbGVuZ3RoIC0gMSkpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlV2luZG93OgorCQlNdldBZGRTdHIod29yaywgcm93LCBjb2wsIENoU3RyMihidWZmZXIgKyBsZW5ndGggLSAxKSk7CisJCWJyZWFrOworCSAgICB9CisKKwkgICAgLyogZG8gdGhlIGNvcnJlc3BvbmRpbmcgc2luZ2xlLWNoYXJhY3RlciBhZGQgKi8KKwkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkgICAgY2FzZSBvRGVmYXVsdDoKKwkJaWYgKG1vdmUobGltaXQgKyByb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBBZGRDaChVQ2hhcihjaCkpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlOgorCQlNdkFkZENoKGxpbWl0ICsgcm93LCBjb2wsIFVDaGFyKGNoKSk7CisJCWJyZWFrOworCSAgICBjYXNlIG9XaW5kb3c6CisJCWlmICh3bW92ZSh3b3JrLCBsaW1pdCArIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIFdBZGRDaCh3b3JrLCBVQ2hhcihjaCkpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlV2luZG93OgorCQlNdldBZGRDaCh3b3JrLCBsaW1pdCArIHJvdywgY29sLCBVQ2hhcihjaCkpOworCQlicmVhazsKKwkgICAgfQorCisJICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKworCSAgICBsZWdlbmQoc2hvdywgbGV2ZWwsIG9wdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworCSAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKwkgICAgZG91cGRhdGUoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAobGV2ZWwgPiAwKSB7CisJZGVsd2luKHdvcmspOworCWRlbHdpbihsb29rKTsKKyAgICB9CisgICAgZGVsd2luKHNob3cpOworfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqdGJsW10gPQorICAgIHsKKwkiVXNhZ2U6IHRlc3RfYWRkY2hzdHIgW29wdGlvbnNdIgorCSwiIgorCSwiT3B0aW9uczoiCisJLCIgIC1mIEZJTEUgcmVhZCBkYXRhIGZyb20gZ2l2ZW4gZmlsZSIKKwksIiAgLW4gTlVNICBsaW1pdCBzdHJpbmctYWRkcyB0byBOVU0gYnl0ZXMgb24gXk4gcmVwbGF5IgorCSwiICAtbSAgICAgIHBlcmZvcm0gd21vdmUvbW92ZSBzZXBhcmF0ZWx5IGZyb20gYWRkLWZ1bmN0aW9ucyIKKwksIiAgLXAgICAgICBwYXNzLXRocnUgY29udHJvbCBjaGFyYWN0ZXJzIHdpdGhvdXQgdXNpbmcgdW5jdHJsKCkiCisJLCIgIC13ICAgICAgdXNlIHdpbmRvdy1wYXJhbWV0ZXIgZXZlbiB3aGVuIHN0ZHNjciB3b3VsZCBiZSBpbXBsaWVkIgorICAgIH07CisgICAgdW5zaWduZWQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRibCk7ICsrbikKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBjaDsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImY6bW46cHciKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZic6CisJICAgIGluaXRfbGluZWRhdGEob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbSc6CisJICAgIG1fb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbic6CisJICAgIG5fb3B0ID0gYXRvaShvcHRhcmcpOworCSAgICBpZiAobl9vcHQgPT0gMCkKKwkJbl9vcHQgPSAtMTsKKwkgICAgYnJlYWs7CisJY2FzZSAncCc6CisJICAgIHBhc3NfY3RscyA9IFRSVUU7CisJICAgIGJyZWFrOworCWNhc2UgJ3cnOgorCSAgICB3X29wdCA9IFRSVUU7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHVzYWdlKCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgaWYgKG9wdGluZCA8IGFyZ2MpCisJdXNhZ2UoKTsKKworICAgIHRlc3RfYWRkcygwKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X2FkZHN0ci5jIGIvdGVzdC90ZXN0X2FkZHN0ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNGNkZWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3RfYWRkc3RyLmMKQEAgLTAsMCArMSw0MjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMCwyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiB0ZXN0X2FkZHN0ci5jLHYgMS4xMCAyMDEyLzEyLzE2IDAwOjE0OjEwIHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIHRoZSB3YWRkc3RyKCkgYW5kIHdhZGRjaCBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAwOS85LzEyCisgKi8KKworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaW5jbHVkZSA8bGluZWRhdGEuaD4KKworI2RlZmluZSBBZGROU3RyICAgIGFkZG5zdHIKKyNkZWZpbmUgQWRkU3RyICAgICBhZGRzdHIKKyNkZWZpbmUgTXZBZGROU3RyICAodm9pZCkgbXZhZGRuc3RyCisjZGVmaW5lIE12V0FkZE5TdHIgKHZvaWQpIG12d2FkZG5zdHIKKyNkZWZpbmUgV0FkZE5TdHIgICB3YWRkbnN0cgorI2RlZmluZSBXQWRkU3RyICAgIHdhZGRzdHIKKworI2RlZmluZSBBZGRDaCAgICAgIGFkZGNoCisjZGVmaW5lIFdBZGRDaCAgICAgd2FkZGNoCisKKyNkZWZpbmUgTVlfVEFCU0laRSA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgb0RlZmF1bHQgPSAwLAorICAgIG9Nb3ZlID0gMSwKKyAgICBvV2luZG93ID0gMiwKKyAgICBvTW92ZVdpbmRvdyA9IDMKK30gT3B0aW9uczsKKworc3RhdGljIGJvb2wgbV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHdfb3B0ID0gRkFMU0U7CitzdGF0aWMgaW50IG5fb3B0ID0gLTE7CisKK3N0YXRpYyB2b2lkCitsZWdlbmQoV0lORE9XICp3aW4sIGludCBsZXZlbCwgT3B0aW9ucyBzdGF0ZSwgY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoKQoreworICAgIGNvbnN0IGNoYXIgKnNob3dzdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2Ugb0RlZmF1bHQ6CisJc2hvd3N0YXRlID0gIiI7CisJYnJlYWs7CisgICAgY2FzZSBvTW92ZToKKwlzaG93c3RhdGUgPSAiIChtdlhYWCkiOworCWJyZWFrOworICAgIGNhc2Ugb1dpbmRvdzoKKwlzaG93c3RhdGUgPSAiICh3aW5YWFgpIjsKKwlicmVhazsKKyAgICBjYXNlIG9Nb3ZlV2luZG93OgorCXNob3dzdGF0ZSA9ICIgKG12d2luWFhYKSI7CisJYnJlYWs7CisgICAgfQorCisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgIlRoZSBTdHJpbmdzL0NoYXJzIGRpc3BsYXlzIHNob3VsZCBtYXRjaC4gIEVudGVyIGFueSBjaGFyYWN0ZXJzLCBleGNlcHQ6XG4iKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgImRvd24tYXJyb3cgb3IgXk4gdG8gcmVwZWF0IG9uIG5leHQgbGluZSwgXlcgZm9yIGlubmVyIHdpbmRvdywgRVNDIHRvIGV4aXQuXG4iKTsKKyAgICB3Y2xydG9lb2wod2luKTsKKyAgICB3cHJpbnR3KHdpbiwgIkxldmVsICVkLCVzIGFkZGVkICVkIGNoYXJhY3RlcnMgPCVzPiIsIGxldmVsLAorCSAgICBzaG93c3RhdGUsIGxlbmd0aCwgYnVmZmVyKTsKK30KKworc3RhdGljIGludAorQ29sT2YoY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3RoLCBpbnQgbWFyZ2luKQoreworICAgIGludCBuOworICAgIGludCByZXN1bHQ7CisKKyAgICBmb3IgKG4gPSAwLCByZXN1bHQgPSBtYXJnaW4gKyAxOyBuIDwgbGVuZ3RoOyArK24pIHsKKwlpbnQgY2ggPSBVQ2hhcihidWZmZXJbbl0pOworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdcbic6CisJICAgIC8qIGFjdHVhbGx5IG5ld2xpbmUgc2hvdWxkIGNsZWFyIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUKKwkgICAgICogYW5kIG1vdmUgdG8gdGhlIG5leHQgbGluZSAtIGJ1dCB0aGF0IHNlZW1zIGEgbGl0dGxlIGF3a3dhcmQKKwkgICAgICogaW4gdGhpcyBleGFtcGxlLgorCSAgICAgKi8KKwljYXNlICdccic6CisJICAgIHJlc3VsdCA9IDA7CisJICAgIGJyZWFrOworCWNhc2UgJ1xiJzoKKwkgICAgaWYgKHJlc3VsdCA+IDApCisJCS0tcmVzdWx0OworCSAgICBicmVhazsKKwljYXNlICdcdCc6CisJICAgIHJlc3VsdCArPSAoTVlfVEFCU0laRSAtIChyZXN1bHQgJSBNWV9UQUJTSVpFKSk7CisJICAgIGJyZWFrOworCWNhc2UgJ1wxNzcnOgorCSAgICByZXN1bHQgKz0gMjsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgKytyZXN1bHQ7CisJICAgIGlmIChjaCA8IDMyKQorCQkrK3Jlc3VsdDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZGVmaW5lIExFTihuKSAoKGxlbmd0aCAtIChuKSA+IG5fb3B0KSA/IG5fb3B0IDogKGxlbmd0aCAtIChuKSkpCitzdGF0aWMgdm9pZAordGVzdF9hZGRzKGludCBsZXZlbCkKK3sKKyAgICBzdGF0aWMgYm9vbCBmaXJzdCA9IFRSVUU7CisKKyAgICBpbnQgY2g7CisgICAgaW50IGxpbWl0OworICAgIGludCByb3cgPSAxOworICAgIGludCBjb2w7CisgICAgaW50IHJvdzIsIGNvbDI7CisgICAgaW50IGxlbmd0aDsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOworICAgIFdJTkRPVyAqbG9vayA9IDA7CisgICAgV0lORE9XICp3b3JrID0gMDsKKyAgICBXSU5ET1cgKnNob3cgPSAwOworICAgIGludCBtYXJnaW4gPSAoMiAqIE1ZX1RBQlNJWkUpIC0gMTsKKyAgICBPcHRpb25zIG9wdGlvbiA9IChPcHRpb25zKSAoKHVuc2lnbmVkKSAobV9vcHQKKwkJCQkJICAgID8gb01vdmUKKwkJCQkJICAgIDogb0RlZmF1bHQpCisJCQkJfCAodW5zaWduZWQpICgod19vcHQgfHwgKGxldmVsID4gMCkpCisJCQkJCSAgICAgID8gb1dpbmRvdworCQkJCQkgICAgICA6IG9EZWZhdWx0KSk7CisKKyAgICBpZiAoZmlyc3QpIHsKKwlzdGF0aWMgY2hhciBjbWRbODBdOworCXNldGxvY2FsZShMQ19BTEwsICIiKTsKKworCXB1dGVudihzdHJjcHkoY21kLCAiVEFCU0laRT04IikpOworCisJaW5pdHNjcigpOworCSh2b2lkKSBjYnJlYWsoKTsJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworCSh2b2lkKSBub2VjaG8oKTsJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCisJLyoKKwkgKiBTaG93IHRoZSBjaGFyYWN0ZXJzIGFkZGVkIGluIGNvbG9yLCB0byBkaXN0aW5ndWlzaCBmcm9tIHRob3NlIHRoYXQKKwkgKiBhcmUgc2hpZnRlZC4KKwkgKi8KKwlpZiAoaGFzX2NvbG9ycygpKSB7CisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGluaXRfcGFpcigxLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJfQorICAgIH0KKworICAgIGxpbWl0ID0gTElORVMgLSA1OworICAgIGlmIChsZXZlbCA+IDApIHsKKwlsb29rID0gbmV3d2luKGxpbWl0LCBDT0xTIC0gKDIgKiAobGV2ZWwgLSAxKSksIDAsIGxldmVsIC0gMSk7CisJd29yayA9IG5ld3dpbihsaW1pdCAtIDIsIENPTFMgLSAoMiAqIGxldmVsKSwgMSwgbGV2ZWwpOworCXNob3cgPSBuZXd3aW4oNCwgQ09MUywgbGltaXQgKyAxLCAwKTsKKwlib3gobG9vaywgMCwgMCk7CisJd25vdXRyZWZyZXNoKGxvb2spOworCWxpbWl0IC09IDI7CisgICAgfSBlbHNlIHsKKwl3b3JrID0gc3Rkc2NyOworCXNob3cgPSBkZXJ3aW4oc3Rkc2NyLCA0LCBDT0xTLCBsaW1pdCArIDEsIDApOworICAgIH0KKyAgICBrZXlwYWQod29yaywgVFJVRSk7CisKKyAgICBmb3IgKGNvbCA9IG1hcmdpbiArIDE7IGNvbCA8IENPTFM7IGNvbCArPSBNWV9UQUJTSVpFKQorCU12V1ZMaW5lKHdvcmssIHJvdywgY29sLCAnLicsIGxpbWl0IC0gMik7CisKKyAgICBNdldWTGluZSh3b3JrLCByb3csIG1hcmdpbiwgQUNTX1ZMSU5FLCBsaW1pdCAtIDIpOworICAgIE12V1ZMaW5lKHdvcmssIHJvdywgbWFyZ2luICsgMSwgQUNTX1ZMSU5FLCBsaW1pdCAtIDIpOworICAgIGxpbWl0IC89IDI7CisKKyAgICBNdldBZGRTdHIod29yaywgMSwgMiwgIlN0cmluZyIpOworICAgIE12V0FkZFN0cih3b3JrLCBsaW1pdCArIDEsIDIsICJDaGFycyIpOworICAgIHdub3V0cmVmcmVzaCh3b3JrKTsKKworICAgIGJ1ZmZlcltsZW5ndGggPSAwXSA9ICdcMCc7CisgICAgbGVnZW5kKHNob3csIGxldmVsLCBvcHRpb24sIGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKyAgICBkb3VwZGF0ZSgpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXdia2dkc2V0KHdvcmssIChjaHR5cGUpIChDT0xPUl9QQUlSKDEpIHwgJyAnKSk7CisgICAgfQorCisgICAgd2hpbGUgKChjaCA9IHJlYWRfbGluZWRhdGEod29yaykpICE9IEVSUiAmJiAhaXNRVUlUKGNoKSkgeworCXdtb3ZlKHdvcmssIHJvdywgbWFyZ2luICsgMSk7CisJc3dpdGNoIChjaCkgeworCWNhc2Uga2V5X1JFQ1VSOgorCSAgICB0ZXN0X2FkZHMobGV2ZWwgKyAxKTsKKworCSAgICBpZiAobG9vaykKKwkJdG91Y2h3aW4obG9vayk7CisJICAgIHRvdWNod2luKHdvcmspOworCSAgICB0b3VjaHdpbihzaG93KTsKKworCSAgICBpZiAobG9vaykKKwkJd25vdXRyZWZyZXNoKGxvb2spOworCSAgICB3bm91dHJlZnJlc2god29yayk7CisJICAgIHdub3V0cmVmcmVzaChzaG93KTsKKworCSAgICBkb3VwZGF0ZSgpOworCSAgICBicmVhazsKKwljYXNlIGtleV9ORVdMSU5FOgorCSAgICBpZiAocm93IDwgbGltaXQpIHsKKwkJKytyb3c7CisJCS8qIHB1dCB0aGUgd2hvbGUgc3RyaW5nIGluLCBhbGwgYXQgb25jZSAqLworCQljb2wyID0gbWFyZ2luICsgMTsKKwkJc3dpdGNoIChvcHRpb24pIHsKKwkJY2FzZSBvRGVmYXVsdDoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgaWYgKG1vdmUocm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCQlBZGROU3RyKGJ1ZmZlciArIGNvbCwgTEVOKGNvbCkpOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlpZiAobW92ZShyb3csIGNvbDIpICE9IEVSUikgeworCQkJICAgIEFkZFN0cihidWZmZXIpOworCQkJfQorCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb01vdmU6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIE12QWRkTlN0cihyb3csIGNvbDIsIGJ1ZmZlciArIGNvbCwgTEVOKGNvbCkpOworCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCU12QWRkU3RyKHJvdywgY29sMiwgYnVmZmVyKTsKKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9XaW5kb3c6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIGlmICh3bW92ZSh3b3JrLCByb3csIGNvbDIpICE9IEVSUikgeworCQkJCVdBZGROU3RyKHdvcmssIGJ1ZmZlciArIGNvbCwgTEVOKGNvbCkpOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlpZiAod21vdmUod29yaywgcm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBXQWRkU3RyKHdvcmssIGJ1ZmZlcik7CisJCQl9CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvTW92ZVdpbmRvdzoKKwkJICAgIGlmIChuX29wdCA+IDEpIHsKKwkJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyBjb2wgKz0gbl9vcHQpIHsKKwkJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCQkgICAgTXZXQWRkTlN0cih3b3JrLCByb3csIGNvbDIsIGJ1ZmZlciArIGNvbCwgTEVOKGNvbCkpOworCQkJfQorCQkgICAgfSBlbHNlIHsKKwkJCU12V0FkZFN0cih3b3JrLCByb3csIGNvbDIsIGJ1ZmZlcik7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJfQorCisJCS8qIGRvIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZS1jaGFyYWN0ZXIgYWRkICovCisJCXJvdzIgPSBsaW1pdCArIHJvdzsKKwkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7ICsrY29sKSB7CisJCSAgICBjb2wyID0gQ29sT2YoYnVmZmVyLCBjb2wsIG1hcmdpbik7CisJCSAgICBzd2l0Y2ggKG9wdGlvbikgeworCQkgICAgY2FzZSBvRGVmYXVsdDoKKwkJCWlmIChtb3ZlKHJvdzIsIGNvbDIpICE9IEVSUikgeworCQkJICAgIEFkZENoKFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmU6CisJCQlNdkFkZENoKHJvdzIsIGNvbDIsIFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb1dpbmRvdzoKKwkJCWlmICh3bW92ZSh3b3JrLCByb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBXQWRkQ2god29yaywgVUNoYXIoYnVmZmVyW2NvbF0pKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJCU12V0FkZENoKHdvcmssIHJvdzIsIGNvbDIsIFVDaGFyKGJ1ZmZlcltjb2xdKSk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgaWYgKGNoIDw9IDAgfHwgY2ggPiAyNTUpIHsKKwkJYmVlcCgpOworCQlicmVhazsKKwkgICAgfQorCSAgICBidWZmZXJbbGVuZ3RoKytdID0gKGNoYXIpIGNoOworCSAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisKKwkgICAgLyogcHV0IHRoZSBzdHJpbmcgaW4sIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lICovCisJICAgIGNvbCA9IENvbE9mKGJ1ZmZlciwgbGVuZ3RoIC0gMSwgbWFyZ2luKTsKKwkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkgICAgY2FzZSBvRGVmYXVsdDoKKwkJaWYgKG1vdmUocm93LCBjb2wpICE9IEVSUikgeworCQkgICAgQWRkU3RyKGJ1ZmZlciArIGxlbmd0aCAtIDEpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlOgorCQlNdkFkZFN0cihyb3csIGNvbCwgYnVmZmVyICsgbGVuZ3RoIC0gMSk7CisJCWJyZWFrOworCSAgICBjYXNlIG9XaW5kb3c6CisJCWlmICh3bW92ZSh3b3JrLCByb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBXQWRkU3RyKHdvcmssIGJ1ZmZlciArIGxlbmd0aCAtIDEpOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlIG9Nb3ZlV2luZG93OgorCQlNdldBZGRTdHIod29yaywgcm93LCBjb2wsIGJ1ZmZlciArIGxlbmd0aCAtIDEpOworCQlicmVhazsKKwkgICAgfQorCisJICAgIC8qIGRvIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZS1jaGFyYWN0ZXIgYWRkICovCisJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCWlmIChtb3ZlKGxpbWl0ICsgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgQWRkQ2goVUNoYXIoY2gpKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZToKKwkJTXZBZGRDaChsaW1pdCArIHJvdywgY29sLCBVQ2hhcihjaCkpOworCQlicmVhazsKKwkgICAgY2FzZSBvV2luZG93OgorCQlpZiAod21vdmUod29yaywgbGltaXQgKyByb3csIGNvbCkgIT0gRVJSKSB7CisJCSAgICBXQWRkQ2god29yaywgVUNoYXIoY2gpKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJTXZXQWRkQ2god29yaywgbGltaXQgKyByb3csIGNvbCwgVUNoYXIoY2gpKTsKKwkJYnJlYWs7CisJICAgIH0KKworCSAgICB3bm91dHJlZnJlc2god29yayk7CisKKwkgICAgbGVnZW5kKHNob3csIGxldmVsLCBvcHRpb24sIGJ1ZmZlciwgbGVuZ3RoKTsKKwkgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisJICAgIGRvdXBkYXRlKCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgZGVsd2luKHNob3cpOworICAgIGlmIChsZXZlbCA+IDApIHsKKwlkZWx3aW4od29yayk7CisJZGVsd2luKGxvb2spOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKnRibFtdID0KKyAgICB7CisJIlVzYWdlOiB0ZXN0X2FkZHN0ciBbb3B0aW9uc10iCisJLCIiCisJLCJPcHRpb25zOiIKKwksIiAgLWYgRklMRSByZWFkIGRhdGEgZnJvbSBnaXZlbiBmaWxlIgorCSwiICAtbiBOVU0gIGxpbWl0IHN0cmluZy1hZGRzIHRvIE5VTSBieXRlcyBvbiBeTiByZXBsYXkiCisJLCIgIC1tICAgICAgcGVyZm9ybSB3bW92ZS9tb3ZlIHNlcGFyYXRlbHkgZnJvbSBhZGQtZnVuY3Rpb25zIgorCSwiICAtdyAgICAgIHVzZSB3aW5kb3ctcGFyYW1ldGVyIGV2ZW4gd2hlbiBzdGRzY3Igd291bGQgYmUgaW1wbGllZCIKKyAgICB9OworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YmwpOyArK24pCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGJsW25dKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgY2g7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICB3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJmOm1uOnciKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZic6CisJICAgIGluaXRfbGluZWRhdGEob3B0YXJnKTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbSc6CisJICAgIG1fb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbic6CisJICAgIG5fb3B0ID0gYXRvaShvcHRhcmcpOworCSAgICBpZiAobl9vcHQgPT0gMCkKKwkJbl9vcHQgPSAtMTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHdfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAob3B0aW5kIDwgYXJnYykKKwl1c2FnZSgpOworCisgICAgdGVzdF9hZGRzKDApOworICAgIGVuZHdpbigpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L3Rlc3RfYWRkd3N0ci5jIGIvdGVzdC90ZXN0X2FkZHdzdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjVhMzUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0X2FkZHdzdHIuYwpAQCAtMCwwICsxLDUyMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAkSWQ6IHRlc3RfYWRkd3N0ci5jLHYgMS4xMiAyMDE0LzA4LzAyIDE3OjI0OjU1IHRvbSBFeHAgJAorICoKKyAqIERlbW9uc3RyYXRlIHRoZSB3YWRkd3N0cigpIGFuZCB3YWRkX3djaCBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAwOS85LzEyCisgKgorICogTm90ZTogdG8gcHJvdmlkZSBpbnB1dHMgZm9yICphZGRfd2NoKCksIHdlIHVzZSBzZXRjY2hhcigpLiAgQSBxdWlyayBvZiB0aGUKKyAqIFgvT3BlbiBkZWZpbml0aW9uIGZvciB0aGF0IGZ1bmN0aW9uIGlzIHRoYXQgdGhlIHN0cmluZyBjb250YWlucyBubworICogY2hhcmFjdGVycyB3aXRoIG5lZ2F0aXZlIHdpZHRoLiAgQW55IGNvbnRyb2wgY2hhcmFjdGVyIChzdWNoIGFzIHRhYikgZmFsbHMKKyAqIGludG8gdGhhdCBjYXRlZ29yeS4gIFNvIGl0IGZvbGxvd3MgdGhhdCAqYWRkX3djaCgpIGNhbm5vdCByZW5kZXIgYSB0YWIKKyAqIGNoYXJhY3RlciBiZWNhdXNlIHRoZXJlIGlzIG5vIGxlZ2FsIHdheSB0byBjb25zdHJ1Y3QgYSBjY2hhcl90IGNvbnRhaW5pbmcKKyAqIG9uZS4gIFgvT3BlbiBkb2VzIG5vdCBkb2N1bWVudCB0aGlzLCBhbmQgaXQgd291bGQgYmUgbG9naWNhbCB0byBhc3N1bWUgdGhhdAorICogKmFkZHdzdHIoKSBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbiwgYnV0IGl0IHVzZXMgYSB3Y2hhcl90IHN0cmluZyBkaXJlY3RseSwKKyAqIGFuZCBkb2VzIG5vdCBkb2N1bWVudCBob3cgdGFicyBhcmUgaGFuZGxlZC4KKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCisjZGVmaW5lIFdJREVfTElORURBVEEKKyNpbmNsdWRlIDxsaW5lZGF0YS5oPgorCisjdW5kZWYgTXZBZGRDaAorI3VuZGVmIE12QWRkU3RyCisjdW5kZWYgTXZXQWRkQ2gKKyN1bmRlZiBNdldBZGRTdHIKKworLyogZGVmaW5pdGlvbnMgdG8gbWFrZSBpdCBzaW1wbGVyIHRvIGNvbXBhcmUgd2l0aCBpbnNlcnRzLmMgKi8KKyNkZWZpbmUgQWRkTlN0ciAgICBhZGRud3N0cgorI2RlZmluZSBBZGRTdHIgICAgIGFkZHdzdHIKKyNkZWZpbmUgTXZBZGROU3RyICAodm9pZCkgbXZhZGRud3N0cgorI2RlZmluZSBNdkFkZFN0ciAgICh2b2lkKSBtdmFkZHdzdHIKKyNkZWZpbmUgTXZXQWRkTlN0ciAodm9pZCkgbXZ3YWRkbndzdHIKKyNkZWZpbmUgTXZXQWRkU3RyICAodm9pZCkgbXZ3YWRkd3N0cgorI2RlZmluZSBXQWRkTlN0ciAgIHdhZGRud3N0cgorI2RlZmluZSBXQWRkU3RyICAgIHdhZGR3c3RyCisKKyNkZWZpbmUgTVlfVEFCU0laRSA4CisKK3R5cGVkZWYgZW51bSB7CisgICAgb0RlZmF1bHQgPSAwLAorICAgIG9Nb3ZlID0gMSwKKyAgICBvV2luZG93ID0gMiwKKyAgICBvTW92ZVdpbmRvdyA9IDMKK30gT3B0aW9uczsKKworc3RhdGljIGJvb2wgbV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIHdfb3B0ID0gRkFMU0U7CitzdGF0aWMgaW50IG5fb3B0ID0gLTE7CisKK3N0YXRpYyB2b2lkCitsZWdlbmQoV0lORE9XICp3aW4sIGludCBsZXZlbCwgT3B0aW9ucyBzdGF0ZSwgd2NoYXJfdCAqYnVmZmVyLCBpbnQgbGVuZ3RoKQoreworICAgIGNvbnN0IGNoYXIgKnNob3dzdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2Ugb0RlZmF1bHQ6CisJc2hvd3N0YXRlID0gIiI7CisJYnJlYWs7CisgICAgY2FzZSBvTW92ZToKKwlzaG93c3RhdGUgPSAiIChtdlhYWCkiOworCWJyZWFrOworICAgIGNhc2Ugb1dpbmRvdzoKKwlzaG93c3RhdGUgPSAiICh3aW5YWFgpIjsKKwlicmVhazsKKyAgICBjYXNlIG9Nb3ZlV2luZG93OgorCXNob3dzdGF0ZSA9ICIgKG12d2luWFhYKSI7CisJYnJlYWs7CisgICAgfQorCisgICAgd21vdmUod2luLCAwLCAwKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgIlRoZSBTdHJpbmdzL0NoYXJzIGRpc3BsYXlzIHNob3VsZCBtYXRjaC4gIEVudGVyIGFueSBjaGFyYWN0ZXJzLCBleGNlcHQ6XG4iKTsKKyAgICB3cHJpbnR3KHdpbiwKKwkgICAgImRvd24tYXJyb3cgb3IgXk4gdG8gcmVwZWF0IG9uIG5leHQgbGluZSwgXlcgZm9yIGlubmVyIHdpbmRvdywgRVNDIHRvIGV4aXQuXG4iKTsKKyAgICB3Y2xydG9lb2wod2luKTsKKyAgICB3cHJpbnR3KHdpbiwgIkxldmVsICVkLCVzIGluc2VydGVkICVkIGNoYXJhY3RlcnMgPCIsIGxldmVsLAorCSAgICBzaG93c3RhdGUsIGxlbmd0aCk7CisgICAgd2FkZHdzdHIod2luLCBidWZmZXIpOworICAgIHdhZGRzdHIod2luLCAiPiIpOworfQorCitzdGF0aWMgaW50CitDb2xPZih3Y2hhcl90ICpidWZmZXIsIGludCBsZW5ndGgsIGludCBtYXJnaW4pCit7CisgICAgaW50IG47CisgICAgaW50IHJlc3VsdDsKKworICAgIGZvciAobiA9IDAsIHJlc3VsdCA9IG1hcmdpbiArIDE7IG4gPCBsZW5ndGg7ICsrbikgeworCWludCBjaCA9IGJ1ZmZlcltuXTsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnXG4nOgorCSAgICAvKiBhY3R1YWxseSBuZXdsaW5lIHNob3VsZCBjbGVhciB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lCisJICAgICAqIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGxpbmUgLSBidXQgdGhhdCBzZWVtcyBhIGxpdHRsZSBhd2t3YXJkCisJICAgICAqIGluIHRoaXMgZXhhbXBsZS4KKwkgICAgICovCisJY2FzZSAnXHInOgorCSAgICByZXN1bHQgPSAwOworCSAgICBicmVhazsKKwljYXNlICdcYic6CisJICAgIGlmIChyZXN1bHQgPiAwKQorCQktLXJlc3VsdDsKKwkgICAgYnJlYWs7CisJY2FzZSAnXHQnOgorCSAgICByZXN1bHQgKz0gKE1ZX1RBQlNJWkUgLSAocmVzdWx0ICUgTVlfVEFCU0laRSkpOworCSAgICBicmVhazsKKwljYXNlICdcMTc3JzoKKwkgICAgcmVzdWx0ICs9IDI7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIHJlc3VsdCArPSB3Y3dpZHRoKCh3Y2hhcl90KSBjaCk7CisJICAgIGlmIChjaCA8IDMyKQorCQkrK3Jlc3VsdDsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitDb252ZXJ0Q2goY2h0eXBlIHNvdXJjZSwgY2NoYXJfdCAqdGFyZ2V0KQoreworICAgIHdjaGFyX3QgdG1wX3djaGFyWzJdOworCisgICAgdG1wX3djaGFyWzBdID0gKHdjaGFyX3QpIHNvdXJjZTsKKyAgICB0bXBfd2NoYXJbMV0gPSAwOworICAgIGlmIChzZXRjY2hhcih0YXJnZXQsIHRtcF93Y2hhciwgQV9OT1JNQUwsIDAsICh2b2lkICopIDApID09IEVSUikgeworCWJlZXAoKTsKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50CitNdldBZGRDaChXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCBjaHR5cGUgY2gpCit7CisgICAgaW50IGNvZGU7CisgICAgY2NoYXJfdCB0bXBfY2NoYXI7CisKKyAgICBpZiAoQ29udmVydENoKGNoLCAmdG1wX2NjaGFyKSkgeworCWNvZGUgPSBtdndhZGRfd2NoKHdpbiwgeSwgeCwgJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gbXZ3YWRkY2god2luLCB5LCB4LCBjaCk7CisgICAgfQorICAgIHJldHVybiBjb2RlOworfQorCitzdGF0aWMgaW50CitNdkFkZENoKGludCB5LCBpbnQgeCwgY2h0eXBlIGNoKQoreworICAgIGludCBjb2RlOworICAgIGNjaGFyX3QgdG1wX2NjaGFyOworCisgICAgaWYgKENvbnZlcnRDaChjaCwgJnRtcF9jY2hhcikpIHsKKwljb2RlID0gbXZhZGRfd2NoKHksIHgsICZ0bXBfY2NoYXIpOworICAgIH0gZWxzZSB7CisJY29kZSA9IG12YWRkY2goeSwgeCwgY2gpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworc3RhdGljIGludAorV0FkZENoKFdJTkRPVyAqd2luLCBjaHR5cGUgY2gpCit7CisgICAgaW50IGNvZGU7CisgICAgY2NoYXJfdCB0bXBfY2NoYXI7CisKKyAgICBpZiAoQ29udmVydENoKGNoLCAmdG1wX2NjaGFyKSkgeworCWNvZGUgPSB3YWRkX3djaCh3aW4sICZ0bXBfY2NoYXIpOworICAgIH0gZWxzZSB7CisJY29kZSA9IHdhZGRjaCh3aW4sIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIGNvZGU7Cit9CisKK3N0YXRpYyBpbnQKK0FkZENoKGNodHlwZSBjaCkKK3sKKyAgICBpbnQgY29kZTsKKyAgICBjY2hhcl90IHRtcF9jY2hhcjsKKworICAgIGlmIChDb252ZXJ0Q2goY2gsICZ0bXBfY2NoYXIpKSB7CisJY29kZSA9IGFkZF93Y2goJnRtcF9jY2hhcik7CisgICAgfSBlbHNlIHsKKwljb2RlID0gYWRkY2goY2gpOworICAgIH0KKyAgICByZXR1cm4gY29kZTsKK30KKworI2RlZmluZSBMRU4obikgKChsZW5ndGggLSAobikgPiBuX29wdCkgPyBuX29wdCA6IChsZW5ndGggLSAobikpKQorc3RhdGljIHZvaWQKK3Rlc3RfaW5zZXJ0cyhpbnQgbGV2ZWwpCit7CisgICAgc3RhdGljIGJvb2wgZmlyc3QgPSBUUlVFOworCisgICAgaW50IGNoOworICAgIGludCBsaW1pdDsKKyAgICBpbnQgcm93ID0gMTsKKyAgICBpbnQgY29sOworICAgIGludCByb3cyLCBjb2wyOworICAgIGludCBsZW5ndGg7CisgICAgd2NoYXJfdCBidWZmZXJbQlVGU0laXTsKKyAgICBXSU5ET1cgKmxvb2sgPSAwOworICAgIFdJTkRPVyAqd29yayA9IDA7CisgICAgV0lORE9XICpzaG93ID0gMDsKKyAgICBpbnQgbWFyZ2luID0gKDIgKiBNWV9UQUJTSVpFKSAtIDE7CisgICAgT3B0aW9ucyBvcHRpb24gPSAoT3B0aW9ucykgKChpbnQpIChtX29wdCA/IG9Nb3ZlIDogb0RlZmF1bHQpCisJCQkJfCAoaW50KSAoKHdfb3B0IHx8IChsZXZlbCA+IDApKQorCQkJCQkgPyBvV2luZG93IDogb0RlZmF1bHQpKTsKKworICAgIGlmIChmaXJzdCkgeworCXN0YXRpYyBjaGFyIGNtZFs4MF07CisJc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisJcHV0ZW52KHN0cmNweShjbWQsICJUQUJTSVpFPTgiKSk7CisKKwlpbml0c2NyKCk7CisJKHZvaWQpIGNicmVhaygpOwkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisJKHZvaWQpIG5vZWNobygpOwkvKiBkb24ndCBlY2hvIGlucHV0ICovCisJa2V5cGFkKHN0ZHNjciwgVFJVRSk7CisKKwkvKgorCSAqIFNob3cgdGhlIGNoYXJhY3RlcnMgaW5zZXJ0ZWQgaW4gY29sb3IsIHRvIGRpc3Rpbmd1aXNoIGZyb20gdGhvc2UgdGhhdAorCSAqIGFyZSBzaGlmdGVkLgorCSAqLworCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgc3RhcnRfY29sb3IoKTsKKwkgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKwl9CisgICAgfQorCisgICAgbGltaXQgPSBMSU5FUyAtIDU7CisgICAgaWYgKGxldmVsID4gMCkgeworCWxvb2sgPSBuZXd3aW4obGltaXQsIENPTFMgLSAoMiAqIChsZXZlbCAtIDEpKSwgMCwgbGV2ZWwgLSAxKTsKKwl3b3JrID0gbmV3d2luKGxpbWl0IC0gMiwgQ09MUyAtICgyICogbGV2ZWwpLCAxLCBsZXZlbCk7CisJc2hvdyA9IG5ld3dpbig0LCBDT0xTLCBsaW1pdCArIDEsIDApOworCWJveChsb29rLCAwLCAwKTsKKwl3bm91dHJlZnJlc2gobG9vayk7CisJbGltaXQgLT0gMjsKKyAgICB9IGVsc2UgeworCXdvcmsgPSBzdGRzY3I7CisJc2hvdyA9IGRlcndpbihzdGRzY3IsIDQsIENPTFMsIGxpbWl0ICsgMSwgMCk7CisgICAgfQorICAgIGtleXBhZCh3b3JrLCBUUlVFKTsKKworICAgIGZvciAoY29sID0gbWFyZ2luICsgMTsgY29sIDwgQ09MUzsgY29sICs9IE1ZX1RBQlNJWkUpCisJTXZXVkxpbmUod29yaywgcm93LCBjb2wsICcuJywgbGltaXQgLSAyKTsKKworICAgIE12V1ZMaW5lKHdvcmssIHJvdywgbWFyZ2luLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgTXZXVkxpbmUod29yaywgcm93LCBtYXJnaW4gKyAxLCBBQ1NfVkxJTkUsIGxpbWl0IC0gMik7CisgICAgbGltaXQgLz0gMjsKKworICAgICh2b2lkKSBtdndhZGRzdHIod29yaywgMSwgMiwgIlN0cmluZyIpOworICAgICh2b2lkKSBtdndhZGRzdHIod29yaywgbGltaXQgKyAxLCAyLCAiQ2hhcnMiKTsKKyAgICB3bm91dHJlZnJlc2god29yayk7CisKKyAgICBidWZmZXJbbGVuZ3RoID0gMF0gPSAnXDAnOworICAgIGxlZ2VuZChzaG93LCBsZXZlbCwgb3B0aW9uLCBidWZmZXIsIGxlbmd0aCk7CisgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisgICAgZG91cGRhdGUoKTsKKworICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwl3YmtnZHNldCh3b3JrLCAoY2h0eXBlKSAoQ09MT1JfUEFJUigxKSB8ICcgJykpOworICAgIH0KKworICAgIHdoaWxlICgoY2ggPSByZWFkX2xpbmVkYXRhKHdvcmspKSAhPSBFUlIgJiYgIWlzUVVJVChjaCkpIHsKKwl3bW92ZSh3b3JrLCByb3csIG1hcmdpbiArIDEpOworCXN3aXRjaCAoY2gpIHsKKwljYXNlIGtleV9SRUNVUjoKKwkgICAgdGVzdF9pbnNlcnRzKGxldmVsICsgMSk7CisKKwkgICAgaWYgKGxvb2spCisJCXRvdWNod2luKGxvb2spOworCSAgICB0b3VjaHdpbih3b3JrKTsKKwkgICAgdG91Y2h3aW4oc2hvdyk7CisKKwkgICAgaWYgKGxvb2spCisJCXdub3V0cmVmcmVzaChsb29rKTsKKwkgICAgd25vdXRyZWZyZXNoKHdvcmspOworCSAgICB3bm91dHJlZnJlc2goc2hvdyk7CisKKwkgICAgZG91cGRhdGUoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBrZXlfTkVXTElORToKKwkgICAgaWYgKHJvdyA8IGxpbWl0KSB7CisJCSsrcm93OworCQkvKiBwdXQgdGhlIHdob2xlIHN0cmluZyBpbiwgYWxsIGF0IG9uY2UgKi8KKwkJY29sMiA9IG1hcmdpbiArIDE7CisJCXN3aXRjaCAob3B0aW9uKSB7CisJCWNhc2Ugb0RlZmF1bHQ6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIGlmIChtb3ZlKHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkJQWRkTlN0cihidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKG1vdmUocm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBBZGRTdHIoYnVmZmVyKTsKKwkJCX0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIG9Nb3ZlOgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBNdkFkZE5TdHIocm93LCBjb2wyLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlNdkFkZFN0cihyb3csIGNvbDIsIGJ1ZmZlcik7CisJCSAgICB9CisJCSAgICBicmVhazsKKwkJY2FzZSBvV2luZG93OgorCQkgICAgaWYgKG5fb3B0ID4gMSkgeworCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBsZW5ndGg7IGNvbCArPSBuX29wdCkgeworCQkJICAgIGNvbDIgPSBDb2xPZihidWZmZXIsIGNvbCwgbWFyZ2luKTsKKwkJCSAgICBpZiAod21vdmUod29yaywgcm93LCBjb2wyKSAhPSBFUlIpIHsKKwkJCQlXQWRkTlN0cih3b3JrLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCSAgICB9CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkJaWYgKHdtb3ZlKHdvcmssIHJvdywgY29sMikgIT0gRVJSKSB7CisJCQkgICAgV0FkZFN0cih3b3JrLCBidWZmZXIpOworCQkJfQorCQkgICAgfQorCQkgICAgYnJlYWs7CisJCWNhc2Ugb01vdmVXaW5kb3c6CisJCSAgICBpZiAobl9vcHQgPiAxKSB7CisJCQlmb3IgKGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sICs9IG5fb3B0KSB7CisJCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkJICAgIE12V0FkZE5TdHIod29yaywgcm93LCBjb2wyLCBidWZmZXIgKyBjb2wsIExFTihjb2wpKTsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCQlNdldBZGRTdHIod29yaywgcm93LCBjb2wyLCBidWZmZXIpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKworCQkvKiBkbyB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUtY2hhcmFjdGVyIGluc2VydGlvbiAqLworCQlyb3cyID0gbGltaXQgKyByb3c7CisJCWZvciAoY29sID0gMDsgY29sIDwgbGVuZ3RoOyArK2NvbCkgeworCQkgICAgY29sMiA9IENvbE9mKGJ1ZmZlciwgY29sLCBtYXJnaW4pOworCQkgICAgc3dpdGNoIChvcHRpb24pIHsKKwkJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCQlpZiAobW92ZShyb3cyLCBjb2wyKSAhPSBFUlIpIHsKKwkJCSAgICBBZGRDaCgoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmU6CisJCQlNdkFkZENoKHJvdzIsIGNvbDIsIChjaHR5cGUpIGJ1ZmZlcltjb2xdKTsKKwkJCWJyZWFrOworCQkgICAgY2FzZSBvV2luZG93OgorCQkJaWYgKHdtb3ZlKHdvcmssIHJvdzIsIGNvbDIpICE9IEVSUikgeworCQkJICAgIFdBZGRDaCh3b3JrLCAoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCQlNdldBZGRDaCh3b3JrLCByb3cyLCBjb2wyLCAoY2h0eXBlKSBidWZmZXJbY29sXSk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfQkFDS1NQQUNFOgorCSAgICBjaCA9ICdcYic7CisJICAgIC8qIEZBTExUSFJVICovCisJZGVmYXVsdDoKKwkgICAgYnVmZmVyW2xlbmd0aCsrXSA9ICh3Y2hhcl90KSBjaDsKKwkgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworCisJICAgIC8qIHB1dCB0aGUgc3RyaW5nIGluLCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSAqLworCSAgICBjb2wgPSBDb2xPZihidWZmZXIsIGxlbmd0aCAtIDEsIG1hcmdpbik7CisJICAgIHN3aXRjaCAob3B0aW9uKSB7CisJICAgIGNhc2Ugb0RlZmF1bHQ6CisJCWlmIChtb3ZlKHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIEFkZFN0cihidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZToKKwkJTXZBZGRTdHIocm93LCBjb2wsIGJ1ZmZlciArIGxlbmd0aCAtIDEpOworCQlicmVhazsKKwkgICAgY2FzZSBvV2luZG93OgorCQlpZiAod21vdmUod29yaywgcm93LCBjb2wpICE9IEVSUikgeworCQkgICAgV0FkZFN0cih3b3JrLCBidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZVdpbmRvdzoKKwkJTXZXQWRkU3RyKHdvcmssIHJvdywgY29sLCBidWZmZXIgKyBsZW5ndGggLSAxKTsKKwkJYnJlYWs7CisJICAgIH0KKworCSAgICAvKiBkbyB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUtY2hhcmFjdGVyIGluc2VydGlvbiAqLworCSAgICBzd2l0Y2ggKG9wdGlvbikgeworCSAgICBjYXNlIG9EZWZhdWx0OgorCQlpZiAobW92ZShsaW1pdCArIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIEFkZENoKChjaHR5cGUpIGNoKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBvTW92ZToKKwkJTXZBZGRDaChsaW1pdCArIHJvdywgY29sLCAoY2h0eXBlKSBjaCk7CisJCWJyZWFrOworCSAgICBjYXNlIG9XaW5kb3c6CisJCWlmICh3bW92ZSh3b3JrLCBsaW1pdCArIHJvdywgY29sKSAhPSBFUlIpIHsKKwkJICAgIFdBZGRDaCh3b3JrLCAoY2h0eXBlKSBjaCk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2Ugb01vdmVXaW5kb3c6CisJCU12V0FkZENoKHdvcmssIGxpbWl0ICsgcm93LCBjb2wsIChjaHR5cGUpIGNoKTsKKwkJYnJlYWs7CisJICAgIH0KKworCSAgICB3bm91dHJlZnJlc2god29yayk7CisKKwkgICAgbGVnZW5kKHNob3csIGxldmVsLCBvcHRpb24sIGJ1ZmZlciwgbGVuZ3RoKTsKKwkgICAgd25vdXRyZWZyZXNoKHNob3cpOworCisJICAgIGRvdXBkYXRlKCk7CisJICAgIGJyZWFrOworCX0KKyAgICB9CisgICAgZGVsd2luKHNob3cpOworICAgIGlmIChsZXZlbCA+IDApIHsKKwlkZWx3aW4od29yayk7CisJZGVsd2luKGxvb2spOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKnRibFtdID0KKyAgICB7CisJIlVzYWdlOiBpbnNlcnRzIFtvcHRpb25zXSIKKwksIiIKKwksIk9wdGlvbnM6IgorCSwiICAtZiBGSUxFIHJlYWQgZGF0YSBmcm9tIGdpdmVuIGZpbGUiCisJLCIgIC1uIE5VTSAgbGltaXQgc3RyaW5nLWluc2VydHMgdG8gTlVNIGJ5dGVzIG9uIF5OIHJlcGxheSIKKwksIiAgLW0gICAgICBwZXJmb3JtIHdtb3ZlL21vdmUgc2VwYXJhdGVseSBmcm9tIGluc2VydC1mdW5jdGlvbnMiCisJLCIgIC13ICAgICAgdXNlIHdpbmRvdy1wYXJhbWV0ZXIgZXZlbiB3aGVuIHN0ZHNjciB3b3VsZCBiZSBpbXBsaWVkIgorICAgIH07CisgICAgdW5zaWduZWQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRibCk7ICsrbikKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBjaDsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworICAgIHdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImY6bW46dyIpKSAhPSAtMSkgeworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdmJzoKKwkgICAgaW5pdF9saW5lZGF0YShvcHRhcmcpOworCSAgICBicmVhazsKKwljYXNlICdtJzoKKwkgICAgbV9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICduJzoKKwkgICAgbl9vcHQgPSBhdG9pKG9wdGFyZyk7CisJICAgIGlmIChuX29wdCA9PSAwKQorCQluX29wdCA9IC0xOworCSAgICBicmVhazsKKwljYXNlICd3JzoKKwkgICAgd19vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIGlmIChvcHRpbmQgPCBhcmdjKQorCXVzYWdlKCk7CisKKyAgICB0ZXN0X2luc2VydHMoMCk7CisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgd2lkZS1uY3Vyc2VzIGxpYnJhcnlcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF9hcnJheXMuYyBiL3Rlc3QvdGVzdF9hcnJheXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGI5ZmIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0X2FycmF5cy5jCkBAIC0wLDAgKzEsOTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiB0ZXN0X2FycmF5cy5jLHYgMS41IDIwMTAvMTEvMTMgMTk6NTc6NTcgdG9tIEV4cCAkCisgKgorICogQXV0aG9yOiBUaG9tYXMgRSBEaWNrZXkKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgcHVibGljIGFycmF5cyBmcm9tIHRoZSB0ZXJtaW5mbyBsaWJyYXJ5LgorCitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbG5hbWVzW107CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbGNvZGVzW107CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgYm9vbGZuYW1lc1tdOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIG51bW5hbWVzW107CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgbnVtY29kZXNbXTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBudW1mbmFtZXNbXTsKK2V4dGVybiBOQ1VSU0VTX0VYUE9SVF9WQVIoTkNVUlNFU19DT05TVCBjaGFyICogY29uc3QgKSBzdHJuYW1lc1tdOworZXh0ZXJuIE5DVVJTRVNfRVhQT1JUX1ZBUihOQ1VSU0VTX0NPTlNUIGNoYXIgKiBjb25zdCApIHN0cmNvZGVzW107CitleHRlcm4gTkNVUlNFU19FWFBPUlRfVkFSKE5DVVJTRVNfQ09OU1QgY2hhciAqIGNvbnN0ICkgc3RyZm5hbWVzW107CisKKyAqLworCisjZGVmaW5lIFVTRV9USU5GTworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCisjaWYgSEFWRV9USUdFVFNUUgorI2lmIGRlZmluZWQoSEFWRV9DVVJTRVNfREFUQV9CT09MTkFNRVMpIHx8IGRlZmluZWQoREVDTF9DVVJTRVNfREFUQV9CT09MTkFNRVMpCisKKyNkZWZpbmUgRFVNUChuYW1lKSBkdW1wX2FycmF5KCNuYW1lLCBuYW1lKQorCitzdGF0aWMgdm9pZAorZHVtcF9hcnJheShjb25zdCBjaGFyICpuYW1lLCBOQ1VSU0VTX0NPTlNUIGNoYXIgKmNvbnN0ICpsaXN0KQoreworICAgIGludCBuOworCisgICAgcHJpbnRmKCIlczpcbiIsIG5hbWUpOworICAgIGZvciAobiA9IDA7IGxpc3Rbbl0gIT0gMDsgKytuKSB7CisJcHJpbnRmKCIlNWQ6JXNcbiIsIG4sIGxpc3Rbbl0pOworICAgIH0KK30KKworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgRFVNUChib29sbmFtZXMpOworICAgIERVTVAoYm9vbGNvZGVzKTsKKyAgICBEVU1QKGJvb2xmbmFtZXMpOworCisgICAgRFVNUChudW1uYW1lcyk7CisgICAgRFVNUChudW1jb2Rlcyk7CisgICAgRFVNUChudW1mbmFtZXMpOworCisgICAgRFVNUChzdHJuYW1lcyk7CisgICAgRFVNUChzdHJjb2Rlcyk7CisgICAgRFVNUChzdHJmbmFtZXMpOworCisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworI2Vsc2UKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSB0ZXJtaW5mbyBhcnJheXNcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKKyNlbHNlIC8qICFIQVZFX1RJR0VUU1RSICovCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgdGVybWluZm8gZnVuY3Rpb25zIHN1Y2ggYXMgdGlnZXRzdHJcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYgLyogSEFWRV9USUdFVFNUUiAqLwpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X2dldF93c3RyLmMgYi90ZXN0L3Rlc3RfZ2V0X3dzdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzAxYjBlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0X2dldF93c3RyLmMKQEAgLTAsMCArMSwzNzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOSwyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiB0ZXN0X2dldF93c3RyLmMsdiAxLjggMjAxMS8wMS8xNSAxODoxNToxMSB0b20gRXhwICQKKyAqCisgKiBBdXRob3I6IFRob21hcyBFIERpY2tleQorICoKKyAqIERlbW9uc3RyYXRlIHRoZSBnZXRfd3N0ciBmdW5jdGlvbnMgZnJvbSB0aGUgY3Vyc2VzIGxpYnJhcnkuCisKKyAgICAgICBpbnQgZ2V0X3dzdHIod2ludF90ICp3c3RyKTsKKyAgICAgICBpbnQgZ2V0bl93c3RyKHdpbnRfdCAqd3N0ciwgaW50IG4pOworICAgICAgIGludCB3Z2V0X3dzdHIoV0lORE9XICp3aW4sIHdpbnRfdCAqd3N0cik7CisgICAgICAgaW50IHdnZXRuX3dzdHIoV0lORE9XICp3aW4sIHdpbnRfdCAqd3N0ciwgaW50IG4pOworICAgICAgIGludCBtdmdldF93c3RyKGludCB5LCBpbnQgeCwgd2ludF90ICp3c3RyKTsKKyAgICAgICBpbnQgbXZnZXRuX3dzdHIoaW50IHksIGludCB4LCB3aW50X3QgKndzdHIsIGludCBuKTsKKyAgICAgICBpbnQgbXZ3Z2V0X3dzdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgd2ludF90ICp3c3RyKTsKKyAgICAgICBpbnQgbXZ3Z2V0bl93c3RyKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIHdpbnRfdCAqd3N0ciwgaW50IG4pOworICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfQ0hHQVQKKy8qIE5ldEJTRCBjdXJzZXMgd2NoZ2F0ICovCisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCisjZGVmaW5lIEJBU0VfWSA2CisjZGVmaW5lIE1BWF9DT0xTIDEwMjQKKwordHlwZWRlZiBlbnVtIHsKKyAgICBlR2V0U3RyID0gMCwKKyAgICBlR2V0TlN0ciwKKyAgICBlTXZHZXRTdHIsCisgICAgZU12R2V0TlN0ciwKKyAgICBlTWF4Rmxhdm9yCit9IEZsYXZvcnM7CisKK3N0YXRpYyBib29sCitRdWl0KGludCBjaCkKK3sKKyAgICByZXR1cm4gKGNoID09IEVSUiB8fCBjaCA9PSAncScgfHwgY2ggPT0gUVVJVCB8fCBjaCA9PSBFU0NBUEUpOworfQorCitzdGF0aWMgaW50CitSZW1haW5kZXIoV0lORE9XICp0eHR3aW4pCit7CisgICAgaW50IHJlc3VsdCA9IGdldG1heHgodHh0d2luKSAtIGdldGN1cngodHh0d2luKTsKKyAgICByZXR1cm4gKHJlc3VsdCA+IDApID8gcmVzdWx0IDogMDsKK30KKworLyoKKyAqIFNob3cgYSBoaWdobGlnaHRlZCBsaW5lIGluIHRoZSBwbGFjZSB3aGVyZSBpbnB1dCB3aWxsIGhhcHBlbi4KKyAqLworc3RhdGljIHZvaWQKK1Nob3dQcm9tcHQoV0lORE9XICp0eHR3aW4sIGludCBsaW1pdCkKK3sKKyAgICB3Y2hnYXQodHh0d2luLCBsaW1pdCwgQV9SRVZFUlNFLCAwLCBOVUxMKTsKKyAgICB3bm91dHJlZnJlc2godHh0d2luKTsKK30KKworc3RhdGljIHZvaWQKK01vdmVQcm9tcHQoV0lORE9XICp0eHR3aW4sIGludCBsaW1pdCwgaW50IHksIGludCB4KQoreworICAgIHdjaGdhdCh0eHR3aW4sIFJlbWFpbmRlcih0eHR3aW4pLCBBX05PUk1BTCwgMCwgTlVMTCk7CisgICAgd21vdmUodHh0d2luLCB5LCB4KTsKKyAgICBTaG93UHJvbXB0KHR4dHdpbiwgbGltaXQpOworfQorCitzdGF0aWMgaW50CitTaG93Rmxhdm9yKFdJTkRPVyAqc3Ryd2luLCBXSU5ET1cgKnR4dHdpbiwgaW50IGZsYXZvciwgaW50IGxpbWl0KQoreworICAgIGNvbnN0IGNoYXIgKm5hbWUgPSAiPyI7CisgICAgYm9vbCBsaW1pdGVkID0gRkFMU0U7CisgICAgYm9vbCB3aW5zID0gKHR4dHdpbiAhPSBzdGRzY3IpOworICAgIGludCByZXN1bHQ7CisKKyAgICBzd2l0Y2ggKGZsYXZvcikgeworICAgIGNhc2UgZUdldFN0cjoKKwluYW1lID0gd2lucyA/ICJ3Z2V0X3dzdHIiIDogImdldF93c3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVHZXROU3RyOgorCWxpbWl0ZWQgPSBUUlVFOworCW5hbWUgPSB3aW5zID8gIndnZXRuX3dzdHIiIDogImdldG5fd3N0ciI7CisJYnJlYWs7CisgICAgY2FzZSBlTXZHZXRTdHI6CisJbmFtZSA9IHdpbnMgPyAibXZ3Z2V0X3dzdHIiIDogIm12Z2V0X3dzdHIiOworCWJyZWFrOworICAgIGNhc2UgZU12R2V0TlN0cjoKKwlsaW1pdGVkID0gVFJVRTsKKwluYW1lID0gd2lucyA/ICJtdndnZXRuX3dzdHIiIDogIm12Z2V0bl93c3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVNYXhGbGF2b3I6CisJYnJlYWs7CisgICAgfQorCisgICAgd21vdmUoc3Ryd2luLCAwLCAwKTsKKyAgICB3ZXJhc2Uoc3Ryd2luKTsKKworICAgIGlmIChsaW1pdGVkKSB7CisJd3ByaW50dyhzdHJ3aW4sICIlcyglZCk6IiwgbmFtZSwgbGltaXQpOworICAgIH0gZWxzZSB7CisJd3ByaW50dyhzdHJ3aW4sICIlczoiLCBuYW1lKTsKKyAgICB9CisgICAgcmVzdWx0ID0gbGltaXRlZCA/IGxpbWl0IDogUmVtYWluZGVyKHR4dHdpbik7CisgICAgU2hvd1Byb21wdCh0eHR3aW4sIHJlc3VsdCk7CisKKyAgICB3bm91dHJlZnJlc2goc3Ryd2luKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit0ZXN0X2dldF93c3RyKGludCBsZXZlbCwgY2hhciAqKmFyZ3YsIFdJTkRPVyAqc3Ryd2luKQoreworICAgIFdJTkRPVyAqdHh0Ym94ID0gMDsKKyAgICBXSU5ET1cgKnR4dHdpbiA9IDA7CisgICAgRklMRSAqZnA7CisgICAgaW50IGNoOworICAgIGludCByYzsKKyAgICBpbnQgdHh0X3ggPSAwLCB0eHRfeSA9IDA7CisgICAgaW50IGJhc2VfeTsKKyAgICBpbnQgZmxhdm9yID0gMDsKKyAgICBpbnQgbGltaXQgPSBnZXRtYXh4KHN0cndpbikgLSA1OworICAgIGludCBhY3R1YWw7CisgICAgd2ludF90IGJ1ZmZlcltNQVhfQ09MU107CisKKyAgICBpZiAoYXJndltsZXZlbF0gPT0gMCkgeworCWJlZXAoKTsKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKGxldmVsID4gMSkgeworCXR4dGJveCA9IG5ld3dpbihMSU5FUyAtIEJBU0VfWSwgQ09MUyAtIGxldmVsLCBCQVNFX1ksIGxldmVsKTsKKwlib3godHh0Ym94LCAwLCAwKTsKKwl3bm91dHJlZnJlc2godHh0Ym94KTsKKworCXR4dHdpbiA9IGRlcndpbih0eHRib3gsCisJCQlnZXRtYXh5KHR4dGJveCkgLSAyLAorCQkJZ2V0bWF4eCh0eHRib3gpIC0gMiwKKwkJCTEsIDEpOworCWJhc2VfeSA9IDA7CisgICAgfSBlbHNlIHsKKwl0eHR3aW4gPSBzdGRzY3I7CisJYmFzZV95ID0gQkFTRV9ZOworICAgIH0KKworICAgIGtleXBhZCh0eHR3aW4sIFRSVUUpOwkvKiBlbmFibGUga2V5Ym9hcmQgbWFwcGluZyAqLworICAgICh2b2lkKSBjYnJlYWsoKTsJCS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKyAgICAodm9pZCkgbm9lY2hvKCk7CQkvKiBkb24ndCBlY2hvIGlucHV0ICovCisKKyAgICB0eHRfeSA9IGJhc2VfeTsKKyAgICB0eHRfeCA9IDA7CisgICAgd21vdmUodHh0d2luLCB0eHRfeSwgdHh0X3gpOworCisgICAgaWYgKChmcCA9IGZvcGVuKGFyZ3ZbbGV2ZWxdLCAiciIpKSAhPSAwKSB7CisJd2hpbGUgKChjaCA9IGZnZXRjKGZwKSkgIT0gRU9GKSB7CisJICAgIGlmICh3YWRkY2godHh0d2luLCBVQ2hhcihjaCkpICE9IE9LKSB7CisJCWJyZWFrOworCSAgICB9CisJfQorCWZjbG9zZShmcCk7CisgICAgfSBlbHNlIHsKKwl3cHJpbnR3KHR4dHdpbiwgIkNhbm5vdCBvcGVuOlxuJXMiLCBhcmd2WzFdKTsKKyAgICB9CisKKyAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisgICAgYWN0dWFsID0gU2hvd0ZsYXZvcihzdHJ3aW4sIHR4dHdpbiwgZmxhdm9yLCBsaW1pdCk7CisgICAgd2hpbGUgKCFRdWl0KGNoID0gbXZ3Z2V0Y2godHh0d2luLCB0eHRfeSwgdHh0X3gpKSkgeworCXN3aXRjaCAoY2gpIHsKKwljYXNlIEtFWV9ET1dOOgorCWNhc2UgJ2onOgorCSAgICBpZiAodHh0X3kgPCBnZXRtYXh5KHR4dHdpbikgLSAxKSB7CisJCU1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsICsrdHh0X3ksIHR4dF94KTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1VQOgorCWNhc2UgJ2snOgorCSAgICBpZiAodHh0X3kgPiBiYXNlX3kpIHsKKwkJTW92ZVByb21wdCh0eHR3aW4sIGFjdHVhbCwgLS10eHRfeSwgdHh0X3gpOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfTEVGVDoKKwljYXNlICdoJzoKKwkgICAgaWYgKHR4dF94ID4gMCkgeworCQlNb3ZlUHJvbXB0KHR4dHdpbiwgYWN0dWFsLCB0eHRfeSwgLS10eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIEtFWV9SSUdIVDoKKwljYXNlICdsJzoKKwkgICAgaWYgKHR4dF94IDwgZ2V0bWF4eCh0eHR3aW4pIC0gMSkgeworCQlNb3ZlUHJvbXB0KHR4dHdpbiwgYWN0dWFsLCB0eHRfeSwgKyt0eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJ3cnOgorCSAgICB0ZXN0X2dldF93c3RyKGxldmVsICsgMSwgYXJndiwgc3Ryd2luKTsKKwkgICAgaWYgKHR4dGJveCAhPSAwKSB7CisJCXRvdWNod2luKHR4dGJveCk7CisJCXdub3V0cmVmcmVzaCh0eHRib3gpOworCSAgICB9IGVsc2UgeworCQl0b3VjaHdpbih0eHR3aW4pOworCQl3bm91dHJlZnJlc2godHh0d2luKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJy0nOgorCSAgICBpZiAobGltaXQgPiAwKSB7CisJCWFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sIGZsYXZvciwgLS1saW1pdCk7CisJCU1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsIHR4dF95LCB0eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJysnOgorCSAgICBhY3R1YWwgPSBTaG93Rmxhdm9yKHN0cndpbiwgdHh0d2luLCBmbGF2b3IsICsrbGltaXQpOworCSAgICBNb3ZlUHJvbXB0KHR4dHdpbiwgYWN0dWFsLCB0eHRfeSwgdHh0X3gpOworCSAgICBicmVhazsKKworCWNhc2UgJzwnOgorCSAgICBpZiAoZmxhdm9yID4gMCkgeworCQlhY3R1YWwgPSBTaG93Rmxhdm9yKHN0cndpbiwgdHh0d2luLCAtLWZsYXZvciwgbGltaXQpOworCQlNb3ZlUHJvbXB0KHR4dHdpbiwgYWN0dWFsLCB0eHRfeSwgdHh0X3gpOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlICc+JzoKKwkgICAgaWYgKGZsYXZvciArIDEgPCBlTWF4Rmxhdm9yKSB7CisJCWFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sICsrZmxhdm9yLCBsaW1pdCk7CisJCU1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsIHR4dF95LCB0eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJzonOgorCSAgICBhY3R1YWwgPSBTaG93Rmxhdm9yKHN0cndpbiwgdHh0d2luLCBmbGF2b3IsIGxpbWl0KTsKKwkgICAgKmJ1ZmZlciA9ICdcMCc7CisJICAgIHJjID0gRVJSOworCSAgICBlY2hvKCk7CisJICAgICh2b2lkKSB3YXR0cnNldCh0eHR3aW4sIEFfUkVWRVJTRSk7CisJICAgIHN3aXRjaCAoZmxhdm9yKSB7CisJICAgIGNhc2UgZUdldFN0cjoKKwkJaWYgKHR4dHdpbiAhPSBzdGRzY3IpIHsKKwkJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkJICAgIHJjID0gd2dldF93c3RyKHR4dHdpbiwgYnVmZmVyKTsKKwkJfSBlbHNlIHsKKwkJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKwkJICAgIHJjID0gZ2V0X3dzdHIoYnVmZmVyKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBlR2V0TlN0cjoKKwkJaWYgKHR4dHdpbiAhPSBzdGRzY3IpIHsKKwkJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkJICAgIHJjID0gd2dldG5fd3N0cih0eHR3aW4sIGJ1ZmZlciwgbGltaXQpOworCQl9IGVsc2UgeworCQkgICAgbW92ZSh0eHRfeSwgdHh0X3gpOworCQkgICAgcmMgPSBnZXRuX3dzdHIoYnVmZmVyLCBsaW1pdCk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgZU12R2V0U3RyOgorCQlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCQkgICAgcmMgPSBtdndnZXRfd3N0cih0eHR3aW4sIHR4dF95LCB0eHRfeCwgYnVmZmVyKTsKKwkJfSBlbHNlIHsKKwkJICAgIHJjID0gbXZnZXRfd3N0cih0eHRfeSwgdHh0X3gsIGJ1ZmZlcik7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgZU12R2V0TlN0cjoKKwkJaWYgKHR4dHdpbiAhPSBzdGRzY3IpIHsKKwkJICAgIHJjID0gbXZ3Z2V0bl93c3RyKHR4dHdpbiwgdHh0X3ksIHR4dF94LCBidWZmZXIsIGxpbWl0KTsKKwkJfSBlbHNlIHsKKwkJICAgIHJjID0gbXZnZXRuX3dzdHIodHh0X3ksIHR4dF94LCBidWZmZXIsIGxpbWl0KTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBlTWF4Rmxhdm9yOgorCQlicmVhazsKKwkgICAgfQorCSAgICBub2VjaG8oKTsKKwkgICAgKHZvaWQpIHdhdHRyc2V0KHR4dHdpbiwgQV9OT1JNQUwpOworCSAgICB3cHJpbnR3KHN0cndpbiwgIiVkIiwgcmMpOworCSAgICAodm9pZCkgd2FkZHdzdHIoc3Ryd2luLCAod2NoYXJfdCAqKSBidWZmZXIpOworCSAgICB3bm91dHJlZnJlc2goc3Ryd2luKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYmVlcCgpOworCSAgICBicmVhazsKKwl9CisJZG91cGRhdGUoKTsKKyAgICB9CisgICAgaWYgKGxldmVsID4gMSkgeworCWRlbHdpbih0eHR3aW4pOworCWRlbHdpbih0eHRib3gpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpjaHJib3g7CisgICAgV0lORE9XICpzdHJ3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIGNocmJveCA9IGRlcndpbihzdGRzY3IsIEJBU0VfWSwgQ09MUywgMCwgMCk7CisgICAgYm94KGNocmJveCwgMCwgMCk7CisgICAgd25vdXRyZWZyZXNoKGNocmJveCk7CisKKyAgICBzdHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCA0LCBDT0xTIC0gMiwgMSwgMSk7CisKKyAgICB0ZXN0X2dldF93c3RyKDEsIGFyZ3YsIHN0cndpbik7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSB3aWRlLW5jdXJzZXMgbGlicmFyeVxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBjdXJzZXMgY2hnYXQgZnVuY3Rpb25cbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF9nZXRzdHIuYyBiL3Rlc3QvdGVzdF9nZXRzdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjY0Yzc3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0X2dldHN0ci5jCkBAIC0wLDAgKzEsMzcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDksMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogdGVzdF9nZXRzdHIuYyx2IDEuMTAgMjAxMi8wNy8wNyAxODoyMjo0OSB0b20gRXhwICQKKyAqCisgKiBBdXRob3I6IFRob21hcyBFIERpY2tleQorICoKKyAqIERlbW9uc3RyYXRlIHRoZSBnZXRzdHIgZnVuY3Rpb25zIGZyb20gdGhlIGN1cnNlcyBsaWJyYXJ5LgorCisgICAgICAgaW50IGdldHN0cihjaGFyICpzdHIpOworICAgICAgIGludCBnZXRuc3RyKGNoYXIgKnN0ciwgaW50IG4pOworICAgICAgIGludCB3Z2V0c3RyKFdJTkRPVyAqd2luLCBjaGFyICpzdHIpOworICAgICAgIGludCB3Z2V0bnN0cihXSU5ET1cgKndpbiwgY2hhciAqc3RyLCBpbnQgbik7CisgICAgICAgaW50IG12Z2V0c3RyKGludCB5LCBpbnQgeCwgY2hhciAqc3RyKTsKKyAgICAgICBpbnQgbXZ3Z2V0c3RyKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIGNoYXIgKnN0cik7CisgICAgICAgaW50IG12Z2V0bnN0cihpbnQgeSwgaW50IHgsIGNoYXIgKnN0ciwgaW50IG4pOworICAgICAgIGludCBtdndnZXRuc3RyKFdJTkRPVyAqLCBpbnQgeSwgaW50IHgsIGNoYXIgKnN0ciwgaW50IG4pOworICovCisKKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfQ0hHQVQKKy8qIFNvbGFyaXMgU1ZyNCBjdXJzZXMgbGFja3Mgd2NoZ2F0LCBtdmdldG5zdHIsIG12d2dldG5zdHIgKi8KKworI2RlZmluZSBCQVNFX1kgNgorI2RlZmluZSBNQVhfQ09MUyAxMDI0CisKK3R5cGVkZWYgZW51bSB7CisgICAgZUdldFN0ciA9IDAsCisgICAgZUdldE5TdHIsCisgICAgZU12R2V0U3RyLAorICAgIGVNdkdldE5TdHIsCisgICAgZU1heEZsYXZvcgorfSBGbGF2b3JzOworCisvKgorICogUmV0dXJuLWNvZGUgaXMgT0svRVJSIG9yIGEga2V5bmFtZS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorb2tfa2V5bmFtZShpbnQgY29kZSkKK3sKKyAgICByZXR1cm4gKChjb2RlID09IE9LKSA/ICJPSyIgOiAoKGNvZGUgPT0gRVJSKSA/ICJFUlIiIDoga2V5bmFtZShjb2RlKSkpOworfQorCitzdGF0aWMgYm9vbAorUXVpdChpbnQgY2gpCit7CisgICAgcmV0dXJuIChjaCA9PSBFUlIgfHwgY2ggPT0gJ3EnIHx8IGNoID09IFFVSVQgfHwgY2ggPT0gRVNDQVBFKTsKK30KKworc3RhdGljIGludAorUmVtYWluZGVyKFdJTkRPVyAqdHh0d2luKQoreworICAgIGludCByZXN1bHQgPSBnZXRtYXh4KHR4dHdpbikgLSBnZXRjdXJ4KHR4dHdpbik7CisgICAgcmV0dXJuIChyZXN1bHQgPiAwKSA/IHJlc3VsdCA6IDA7Cit9CisKKy8qCisgKiBTaG93IGEgaGlnaGxpZ2h0ZWQgbGluZSBpbiB0aGUgcGxhY2Ugd2hlcmUgaW5wdXQgd2lsbCBoYXBwZW4uCisgKi8KK3N0YXRpYyB2b2lkCitTaG93UHJvbXB0KFdJTkRPVyAqdHh0d2luLCBpbnQgbGltaXQpCit7CisgICAgd2NoZ2F0KHR4dHdpbiwgbGltaXQsIEFfUkVWRVJTRSwgMCwgTlVMTCk7CisgICAgd25vdXRyZWZyZXNoKHR4dHdpbik7Cit9CisKK3N0YXRpYyB2b2lkCitNb3ZlUHJvbXB0KFdJTkRPVyAqdHh0d2luLCBpbnQgbGltaXQsIGludCB5LCBpbnQgeCkKK3sKKyAgICB3Y2hnYXQodHh0d2luLCBSZW1haW5kZXIodHh0d2luKSwgQV9OT1JNQUwsIDAsIE5VTEwpOworICAgIHdtb3ZlKHR4dHdpbiwgeSwgeCk7CisgICAgU2hvd1Byb21wdCh0eHR3aW4sIGxpbWl0KTsKK30KKworc3RhdGljIGludAorU2hvd0ZsYXZvcihXSU5ET1cgKnN0cndpbiwgV0lORE9XICp0eHR3aW4sIGludCBmbGF2b3IsIGludCBsaW1pdCkKK3sKKyAgICBjb25zdCBjaGFyICpuYW1lID0gIj8iOworICAgIGJvb2wgbGltaXRlZCA9IEZBTFNFOworICAgIGJvb2wgd2lucyA9ICh0eHR3aW4gIT0gc3Rkc2NyKTsKKyAgICBpbnQgcmVzdWx0OworCisgICAgc3dpdGNoIChmbGF2b3IpIHsKKyAgICBjYXNlIGVHZXRTdHI6CisJbmFtZSA9IHdpbnMgPyAid2dldHN0ciIgOiAiZ2V0c3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVHZXROU3RyOgorCWxpbWl0ZWQgPSBUUlVFOworCW5hbWUgPSB3aW5zID8gIndnZXRuc3RyIiA6ICJnZXRuc3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVNdkdldFN0cjoKKwluYW1lID0gd2lucyA/ICJtdndnZXRzdHIiIDogIm12Z2V0c3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVNdkdldE5TdHI6CisJbGltaXRlZCA9IFRSVUU7CisJbmFtZSA9IHdpbnMgPyAibXZ3Z2V0bnN0ciIgOiAibXZnZXRuc3RyIjsKKwlicmVhazsKKyAgICBjYXNlIGVNYXhGbGF2b3I6CisJYnJlYWs7CisgICAgfQorCisgICAgd21vdmUoc3Ryd2luLCAwLCAwKTsKKyAgICB3ZXJhc2Uoc3Ryd2luKTsKKworICAgIGlmIChsaW1pdGVkKSB7CisJd3ByaW50dyhzdHJ3aW4sICIlcyglZCk6IiwgbmFtZSwgbGltaXQpOworICAgIH0gZWxzZSB7CisJd3ByaW50dyhzdHJ3aW4sICIlczoiLCBuYW1lKTsKKyAgICB9CisgICAgcmVzdWx0ID0gbGltaXRlZCA/IGxpbWl0IDogUmVtYWluZGVyKHR4dHdpbik7CisgICAgU2hvd1Byb21wdCh0eHR3aW4sIHJlc3VsdCk7CisKKyAgICB3bm91dHJlZnJlc2goc3Ryd2luKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit0ZXN0X2dldHN0cihpbnQgbGV2ZWwsIGNoYXIgKiphcmd2LCBXSU5ET1cgKnN0cndpbikKK3sKKyAgICBXSU5ET1cgKnR4dGJveCA9IDA7CisgICAgV0lORE9XICp0eHR3aW4gPSAwOworICAgIEZJTEUgKmZwOworICAgIGludCBjaDsKKyAgICBpbnQgcmM7CisgICAgaW50IHR4dF94ID0gMCwgdHh0X3kgPSAwOworICAgIGludCBiYXNlX3k7CisgICAgaW50IGZsYXZvciA9IDA7CisgICAgaW50IGxpbWl0ID0gZ2V0bWF4eChzdHJ3aW4pIC0gNTsKKyAgICBpbnQgYWN0dWFsOworCisgICAgY2hhciBidWZmZXJbTUFYX0NPTFNdOworCisgICAgaWYgKGFyZ3ZbbGV2ZWxdID09IDApIHsKKwliZWVwKCk7CisJcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGlmIChsZXZlbCA+IDEpIHsKKwl0eHRib3ggPSBuZXd3aW4oTElORVMgLSBCQVNFX1ksIENPTFMgLSBsZXZlbCwgQkFTRV9ZLCBsZXZlbCk7CisJYm94KHR4dGJveCwgMCwgMCk7CisJd25vdXRyZWZyZXNoKHR4dGJveCk7CisKKwl0eHR3aW4gPSBkZXJ3aW4odHh0Ym94LAorCQkJZ2V0bWF4eSh0eHRib3gpIC0gMiwKKwkJCWdldG1heHgodHh0Ym94KSAtIDIsCisJCQkxLCAxKTsKKwliYXNlX3kgPSAwOworICAgIH0gZWxzZSB7CisJdHh0d2luID0gc3Rkc2NyOworCWJhc2VfeSA9IEJBU0VfWTsKKyAgICB9CisKKyAgICBrZXlwYWQodHh0d2luLCBUUlVFKTsJLyogZW5hYmxlIGtleWJvYXJkIG1hcHBpbmcgKi8KKyAgICAodm9pZCkgY2JyZWFrKCk7CQkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisgICAgKHZvaWQpIG5vZWNobygpOwkJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworCisgICAgdHh0X3kgPSBiYXNlX3k7CisgICAgdHh0X3ggPSAwOworICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKworICAgIGlmICgoZnAgPSBmb3Blbihhcmd2W2xldmVsXSwgInIiKSkgIT0gMCkgeworCXdoaWxlICgoY2ggPSBmZ2V0YyhmcCkpICE9IEVPRikgeworCSAgICBpZiAod2FkZGNoKHR4dHdpbiwgVUNoYXIoY2gpKSAhPSBPSykgeworCQlicmVhazsKKwkgICAgfQorCX0KKwlmY2xvc2UoZnApOworICAgIH0gZWxzZSB7CisJd3ByaW50dyh0eHR3aW4sICJDYW5ub3Qgb3BlbjpcbiVzIiwgYXJndlsxXSk7CisgICAgfQorCisgICAgd21vdmUodHh0d2luLCB0eHRfeSwgdHh0X3gpOworICAgIGFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sIGZsYXZvciwgbGltaXQpOworICAgIHdoaWxlICghUXVpdChjaCA9IG12d2dldGNoKHR4dHdpbiwgdHh0X3ksIHR4dF94KSkpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBLRVlfRE9XTjoKKwljYXNlICdqJzoKKwkgICAgaWYgKHR4dF95IDwgZ2V0bWF4eSh0eHR3aW4pIC0gMSkgeworCQlNb3ZlUHJvbXB0KHR4dHdpbiwgYWN0dWFsLCArK3R4dF95LCB0eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIEtFWV9VUDoKKwljYXNlICdrJzoKKwkgICAgaWYgKHR4dF95ID4gYmFzZV95KSB7CisJCU1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsIC0tdHh0X3ksIHR4dF94KTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgS0VZX0xFRlQ6CisJY2FzZSAnaCc6CisJICAgIGlmICh0eHRfeCA+IDApIHsKKwkJTW92ZVByb21wdCh0eHR3aW4sIGFjdHVhbCwgdHh0X3ksIC0tdHh0X3gpOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfUklHSFQ6CisJY2FzZSAnbCc6CisJICAgIGlmICh0eHRfeCA8IGdldG1heHgodHh0d2luKSAtIDEpIHsKKwkJTW92ZVByb21wdCh0eHR3aW4sIGFjdHVhbCwgdHh0X3ksICsrdHh0X3gpOworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlICd3JzoKKwkgICAgdGVzdF9nZXRzdHIobGV2ZWwgKyAxLCBhcmd2LCBzdHJ3aW4pOworCSAgICBpZiAodHh0Ym94ICE9IDApIHsKKwkJdG91Y2h3aW4odHh0Ym94KTsKKwkJd25vdXRyZWZyZXNoKHR4dGJveCk7CisJICAgIH0gZWxzZSB7CisJCXRvdWNod2luKHR4dHdpbik7CisJCXdub3V0cmVmcmVzaCh0eHR3aW4pOworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSAnLSc6CisJICAgIGlmIChsaW1pdCA+IDApIHsKKwkJYWN0dWFsID0gU2hvd0ZsYXZvcihzdHJ3aW4sIHR4dHdpbiwgZmxhdm9yLCAtLWxpbWl0KTsKKwkJTW92ZVByb21wdCh0eHR3aW4sIGFjdHVhbCwgdHh0X3ksIHR4dF94KTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSAnKyc6CisJICAgIGFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sIGZsYXZvciwgKytsaW1pdCk7CisJICAgIE1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsIHR4dF95LCB0eHRfeCk7CisJICAgIGJyZWFrOworCisJY2FzZSAnPCc6CisJICAgIGlmIChmbGF2b3IgPiAwKSB7CisJCWFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sIC0tZmxhdm9yLCBsaW1pdCk7CisJCU1vdmVQcm9tcHQodHh0d2luLCBhY3R1YWwsIHR4dF95LCB0eHRfeCk7CisJICAgIH0gZWxzZSB7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJz4nOgorCSAgICBpZiAoZmxhdm9yICsgMSA8IGVNYXhGbGF2b3IpIHsKKwkJYWN0dWFsID0gU2hvd0ZsYXZvcihzdHJ3aW4sIHR4dHdpbiwgKytmbGF2b3IsIGxpbWl0KTsKKwkJTW92ZVByb21wdCh0eHR3aW4sIGFjdHVhbCwgdHh0X3ksIHR4dF94KTsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSAnOic6CisJICAgIGFjdHVhbCA9IFNob3dGbGF2b3Ioc3Ryd2luLCB0eHR3aW4sIGZsYXZvciwgbGltaXQpOworCSAgICAqYnVmZmVyID0gJ1wwJzsKKwkgICAgcmMgPSBFUlI7CisJICAgIGVjaG8oKTsKKwkgICAgKHZvaWQpIHdhdHRyc2V0KHR4dHdpbiwgQV9SRVZFUlNFKTsKKwkgICAgc3dpdGNoIChmbGF2b3IpIHsKKwkgICAgY2FzZSBlR2V0U3RyOgorCQlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCQkgICAgd21vdmUodHh0d2luLCB0eHRfeSwgdHh0X3gpOworCQkgICAgcmMgPSB3Z2V0c3RyKHR4dHdpbiwgYnVmZmVyKTsKKwkJfSBlbHNlIHsKKwkJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKwkJICAgIHJjID0gZ2V0c3RyKGJ1ZmZlcik7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgZUdldE5TdHI6CisJCWlmICh0eHR3aW4gIT0gc3Rkc2NyKSB7CisJCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisJCSAgICByYyA9IHdnZXRuc3RyKHR4dHdpbiwgYnVmZmVyLCBsaW1pdCk7CisJCX0gZWxzZSB7CisJCSAgICBtb3ZlKHR4dF95LCB0eHRfeCk7CisJCSAgICByYyA9IGdldG5zdHIoYnVmZmVyLCBsaW1pdCk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgZU12R2V0U3RyOgorCQlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCQkgICAgcmMgPSBtdndnZXRzdHIodHh0d2luLCB0eHRfeSwgdHh0X3gsIGJ1ZmZlcik7CisJCX0gZWxzZSB7CisJCSAgICByYyA9IG12Z2V0c3RyKHR4dF95LCB0eHRfeCwgYnVmZmVyKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSBlTXZHZXROU3RyOgorCQlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCQkgICAgcmMgPSBtdndnZXRuc3RyKHR4dHdpbiwgdHh0X3ksIHR4dF94LCBidWZmZXIsIGxpbWl0KTsKKwkJfSBlbHNlIHsKKwkJICAgIHJjID0gbXZnZXRuc3RyKHR4dF95LCB0eHRfeCwgYnVmZmVyLCBsaW1pdCk7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgZU1heEZsYXZvcjoKKwkJYnJlYWs7CisJICAgIH0KKwkgICAgbm9lY2hvKCk7CisJICAgICh2b2lkKSB3YXR0cnNldCh0eHR3aW4sIEFfTk9STUFMKTsKKwkgICAgd3ByaW50dyhzdHJ3aW4sICIlczolcyIsIG9rX2tleW5hbWUocmMpLCBidWZmZXIpOworCSAgICB3bm91dHJlZnJlc2goc3Ryd2luKTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYmVlcCgpOworCSAgICBicmVhazsKKwl9CisJZG91cGRhdGUoKTsKKyAgICB9CisgICAgaWYgKGxldmVsID4gMSkgeworCWRlbHdpbih0eHR3aW4pOworCWRlbHdpbih0eHRib3gpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpjaHJib3g7CisgICAgV0lORE9XICpzdHJ3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIGNocmJveCA9IGRlcndpbihzdGRzY3IsIEJBU0VfWSwgQ09MUywgMCwgMCk7CisgICAgYm94KGNocmJveCwgMCwgMCk7CisgICAgd25vdXRyZWZyZXNoKGNocmJveCk7CisKKyAgICBzdHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCA0LCBDT0xTIC0gMiwgMSwgMSk7CisKKyAgICB0ZXN0X2dldHN0cigxLCBhcmd2LCBzdHJ3aW4pOworCisgICAgZW5kd2luKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9TVUNDRVNTKTsKK30KKworI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBjdXJzZXMgY2hnYXQgZnVuY3Rpb25cbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF9pbnN0ci5jIGIvdGVzdC90ZXN0X2luc3RyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI3ZGIwOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdF9pbnN0ci5jCkBAIC0wLDAgKzEsMjYwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDA3LDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogdGVzdF9pbnN0ci5jLHYgMS41IDIwMTAvMDUvMDEgMTk6MTM6NDYgdG9tIEV4cCAkCisgKgorICogQXV0aG9yOiBUaG9tYXMgRSBEaWNrZXkKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgaW5zdHIgZnVuY3Rpb25zIGZyb20gdGhlIGN1cnNlcyBsaWJyYXJ5LgorCisgICAgICAgaW50IGluc3RyKGNoYXIgKnN0cik7CisgICAgICAgaW50IGlubnN0cihjaGFyICpzdHIsIGludCBuKTsKKyAgICAgICBpbnQgd2luc3RyKFdJTkRPVyAqd2luLCBjaGFyICpzdHIpOworICAgICAgIGludCB3aW5uc3RyKFdJTkRPVyAqd2luLCBjaGFyICpzdHIsIGludCBuKTsKKyAgICAgICBpbnQgbXZpbnN0cihpbnQgeSwgaW50IHgsIGNoYXIgKnN0cik7CisgICAgICAgaW50IG12aW5uc3RyKGludCB5LCBpbnQgeCwgY2hhciAqc3RyLCBpbnQgbik7CisgICAgICAgaW50IG12d2luc3RyKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgsIGNoYXIgKnN0cik7CisgICAgICAgaW50IG12d2lubnN0cihXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCBjaGFyICpzdHIsIGludCBuKTsKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNkZWZpbmUgQkFTRV9ZIDYKKyNkZWZpbmUgTUFYX0NPTFMgMTAyNAorCitzdGF0aWMgYm9vbAorUXVpdChpbnQgY2gpCit7CisgICAgcmV0dXJuIChjaCA9PSBFUlIgfHwgY2ggPT0gJ3EnIHx8IGNoID09IFFVSVQgfHwgY2ggPT0gRVNDQVBFKTsKK30KKworc3RhdGljIHZvaWQKK3Nob3dfMXN0KFdJTkRPVyAqd2luLCBpbnQgbGluZSwgY2hhciAqYnVmZmVyKQoreworICAgIE12V0FkZFN0cih3aW4sIGxpbmUsIDUsIGJ1ZmZlcik7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93bW9yZShXSU5ET1cgKndpbiwgaW50IGxpbmUsIGNoYXIgKmJ1ZmZlcikKK3sKKyAgICB3bW92ZSh3aW4sIGxpbmUsIDApOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHNob3dfMXN0KHdpbiwgbGluZSwgYnVmZmVyKTsKK30KKworc3RhdGljIGludAordGVzdF9pbmNocyhpbnQgbGV2ZWwsIGNoYXIgKiphcmd2LCBXSU5ET1cgKmNocndpbiwgV0lORE9XICpzdHJ3aW4pCit7CisgICAgV0lORE9XICp0eHRib3ggPSAwOworICAgIFdJTkRPVyAqdHh0d2luID0gMDsKKyAgICBGSUxFICpmcDsKKyAgICBpbnQgY2g7CisgICAgaW50IHR4dF94ID0gMCwgdHh0X3kgPSAwOworICAgIGludCBiYXNlX3k7CisgICAgaW50IGxpbWl0ID0gZ2V0bWF4eChzdHJ3aW4pIC0gNTsKKworICAgIGNoYXIgYnVmZmVyW01BWF9DT0xTXTsKKworICAgIGlmIChhcmd2W2xldmVsXSA9PSAwKSB7CisJYmVlcCgpOworCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPiAxKSB7CisJdHh0Ym94ID0gbmV3d2luKExJTkVTIC0gQkFTRV9ZLCBDT0xTIC0gbGV2ZWwsIEJBU0VfWSwgbGV2ZWwpOworCWJveCh0eHRib3gsIDAsIDApOworCXdub3V0cmVmcmVzaCh0eHRib3gpOworCisJdHh0d2luID0gZGVyd2luKHR4dGJveCwKKwkJCWdldG1heHkodHh0Ym94KSAtIDIsCisJCQlnZXRtYXh4KHR4dGJveCkgLSAyLAorCQkJMSwgMSk7CisJYmFzZV95ID0gMDsKKyAgICB9IGVsc2UgeworCXR4dHdpbiA9IHN0ZHNjcjsKKwliYXNlX3kgPSBCQVNFX1k7CisgICAgfQorCisgICAga2V5cGFkKHR4dHdpbiwgVFJVRSk7CS8qIGVuYWJsZSBrZXlib2FyZCBtYXBwaW5nICovCisgICAgKHZvaWQpIGNicmVhaygpOwkJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworICAgICh2b2lkKSBub2VjaG8oKTsJCS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKworICAgIHR4dF95ID0gYmFzZV95OworICAgIHR4dF94ID0gMDsKKyAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKyAgICBpZiAoKGZwID0gZm9wZW4oYXJndltsZXZlbF0sICJyIikpICE9IDApIHsKKwl3aGlsZSAoKGNoID0gZmdldGMoZnApKSAhPSBFT0YpIHsKKwkgICAgaWYgKHdhZGRjaCh0eHR3aW4sIFVDaGFyKGNoKSkgIT0gT0spIHsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisJZmNsb3NlKGZwKTsKKyAgICB9IGVsc2UgeworCXdwcmludHcodHh0d2luLCAiQ2Fubm90IG9wZW46XG4lcyIsIGFyZ3ZbMV0pOworICAgIH0KKworICAgIHdoaWxlICghUXVpdChjaCA9IG12d2dldGNoKHR4dHdpbiwgdHh0X3ksIHR4dF94KSkpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSBLRVlfRE9XTjoKKwljYXNlICdqJzoKKwkgICAgaWYgKHR4dF95IDwgZ2V0bWF4eSh0eHR3aW4pIC0gMSkKKwkJdHh0X3krKzsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1VQOgorCWNhc2UgJ2snOgorCSAgICBpZiAodHh0X3kgPiBiYXNlX3kpCisJCXR4dF95LS07CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlIEtFWV9MRUZUOgorCWNhc2UgJ2gnOgorCSAgICBpZiAodHh0X3ggPiAwKQorCQl0eHRfeC0tOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfUklHSFQ6CisJY2FzZSAnbCc6CisJICAgIGlmICh0eHRfeCA8IGdldG1heHgodHh0d2luKSAtIDEpCisJCXR4dF94Kys7CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlICd3JzoKKwkgICAgdGVzdF9pbmNocyhsZXZlbCArIDEsIGFyZ3YsIGNocndpbiwgc3Ryd2luKTsKKwkgICAgaWYgKHR4dGJveCAhPSAwKSB7CisJCXRvdWNod2luKHR4dGJveCk7CisJCXdub3V0cmVmcmVzaCh0eHRib3gpOworCSAgICB9IGVsc2UgeworCQl0b3VjaHdpbih0eHR3aW4pOworCQl3bm91dHJlZnJlc2godHh0d2luKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICctJzoKKwkgICAgaWYgKGxpbWl0ID4gMCkgeworCQktLWxpbWl0OworCSAgICB9IGVsc2UgeworCQliZWVwKCk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnKyc6CisJICAgICsrbGltaXQ7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCisJTXZXUHJpbnR3KGNocndpbiwgMCwgMCwgImxpbmU6Iik7CisJd2NscnRvZW9sKGNocndpbik7CisKKwlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKwkgICAgaWYgKHdpbnN0cih0eHR3aW4sIGJ1ZmZlcikgIT0gRVJSKSB7CisJCXNob3dfMXN0KGNocndpbiwgMCwgYnVmZmVyKTsKKwkgICAgfQorCSAgICBpZiAobXZ3aW5zdHIodHh0d2luLCB0eHRfeSwgdHh0X3gsIGJ1ZmZlcikgIT0gRVJSKSB7CisJCXNob3dtb3JlKGNocndpbiwgMSwgYnVmZmVyKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKworCSAgICBpZiAoaW5zdHIoYnVmZmVyKSAhPSBFUlIpIHsKKwkJc2hvd18xc3QoY2hyd2luLCAwLCBidWZmZXIpOworCSAgICB9CisJICAgIGlmIChtdmluc3RyKHR4dF95LCB0eHRfeCwgYnVmZmVyKSAhPSBFUlIpIHsKKwkJc2hvd21vcmUoY2hyd2luLCAxLCBidWZmZXIpOworCSAgICB9CisJfQorCXdub3V0cmVmcmVzaChjaHJ3aW4pOworCisJTXZXUHJpbnR3KHN0cndpbiwgMCwgMCwgIiU0ZDoiLCBsaW1pdCk7CisJd2NscnRvYm90KHN0cndpbik7CisKKwlpZiAodHh0d2luICE9IHN0ZHNjcikgeworCSAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisJICAgIGlmICh3aW5uc3RyKHR4dHdpbiwgYnVmZmVyLCBsaW1pdCkgIT0gRVJSKSB7CisJCXNob3dfMXN0KHN0cndpbiwgMCwgYnVmZmVyKTsKKwkgICAgfQorCisJICAgIGlmIChtdndpbm5zdHIodHh0d2luLCB0eHRfeSwgdHh0X3gsIGJ1ZmZlciwgbGltaXQpICE9IEVSUikgeworCQlzaG93bW9yZShzdHJ3aW4sIDEsIGJ1ZmZlcik7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBtb3ZlKHR4dF95LCB0eHRfeCk7CisJICAgIGlmIChpbm5zdHIoYnVmZmVyLCBsaW1pdCkgIT0gRVJSKSB7CisJCXNob3dfMXN0KHN0cndpbiwgMCwgYnVmZmVyKTsKKwkgICAgfQorCisJICAgIGlmIChtdmlubnN0cih0eHRfeSwgdHh0X3gsIGJ1ZmZlciwgbGltaXQpICE9IEVSUikgeworCQlzaG93bW9yZShzdHJ3aW4sIDEsIGJ1ZmZlcik7CisJICAgIH0KKwl9CisKKwl3bm91dHJlZnJlc2goc3Ryd2luKTsKKyAgICB9CisgICAgaWYgKGxldmVsID4gMSkgeworCWRlbHdpbih0eHR3aW4pOworCWRlbHdpbih0eHRib3gpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpjaHJib3g7CisgICAgV0lORE9XICpjaHJ3aW47CisgICAgV0lORE9XICpzdHJ3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIGNocmJveCA9IGRlcndpbihzdGRzY3IsIEJBU0VfWSwgQ09MUywgMCwgMCk7CisgICAgYm94KGNocmJveCwgMCwgMCk7CisgICAgd25vdXRyZWZyZXNoKGNocmJveCk7CisKKyAgICBjaHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCAyLCBDT0xTIC0gMiwgMSwgMSk7CisgICAgc3Ryd2luID0gZGVyd2luKGNocmJveCwgMiwgQ09MUyAtIDIsIDMsIDEpOworCisgICAgdGVzdF9pbmNocygxLCBhcmd2LCBjaHJ3aW4sIHN0cndpbik7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X2lud3N0ci5jIGIvdGVzdC90ZXN0X2lud3N0ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMjY1NmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3RfaW53c3RyLmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiB0ZXN0X2lud3N0ci5jLHYgMS40IDIwMTAvMDUvMDEgMTk6MTM6NDYgdG9tIEV4cCAkCisgKgorICogQXV0aG9yOiBUaG9tYXMgRSBEaWNrZXkKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgaW53c3RyIGZ1bmN0aW9ucyBmcm9tIHRoZSBjdXJzZXMgbGlicmFyeS4KKworICAgICAgIGludCBpbndzdHIod2NoYXJfdCAqc3RyKTsKKyAgICAgICBpbnQgaW5ud3N0cih3Y2hhcl90ICpzdHIsIGludCBuKTsKKyAgICAgICBpbnQgd2lud3N0cihXSU5ET1cgKndpbiwgd2NoYXJfdCAqc3RyKTsKKyAgICAgICBpbnQgd2lubndzdHIoV0lORE9XICp3aW4sIHdjaGFyX3QgKnN0ciwgaW50IG4pOworICAgICAgIGludCBtdmlud3N0cihpbnQgeSwgaW50IHgsIHdjaGFyX3QgKnN0cik7CisgICAgICAgaW50IG12aW5ud3N0cihpbnQgeSwgaW50IHgsIHdjaGFyX3QgKnN0ciwgaW50IG4pOworICAgICAgIGludCBtdndpbndzdHIoV0lORE9XICp3aW4sIGludCB5LCBpbnQgeCwgd2NoYXJfdCAqc3RyKTsKKyAgICAgICBpbnQgbXZ3aW5ud3N0cihXSU5ET1cgKndpbiwgaW50IHksIGludCB4LCB3Y2hhcl90ICpzdHIsIGludCBuKTsKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCisjZGVmaW5lIEJBU0VfWSA2CisjZGVmaW5lIE1BWF9DT0xTIDEwMjQKKworc3RhdGljIGJvb2wKK1F1aXQoaW50IGNoKQoreworICAgIHJldHVybiAoY2ggPT0gRVJSIHx8IGNoID09ICdxJyB8fCBjaCA9PSBRVUlUIHx8IGNoID09IEVTQ0FQRSk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93XzFzdChXSU5ET1cgKndpbiwgaW50IGxpbmUsIHdjaGFyX3QgKmJ1ZmZlcikKK3sKKyAgICAodm9pZCkgbXZ3YWRkd3N0cih3aW4sIGxpbmUsIDUsIGJ1ZmZlcik7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93bW9yZShXSU5ET1cgKndpbiwgaW50IGxpbmUsIHdjaGFyX3QgKmJ1ZmZlcikKK3sKKyAgICB3bW92ZSh3aW4sIGxpbmUsIDApOworICAgIHdjbHJ0b2VvbCh3aW4pOworICAgIHNob3dfMXN0KHdpbiwgbGluZSwgYnVmZmVyKTsKK30KKworc3RhdGljIGludAordGVzdF9pbmNocyhpbnQgbGV2ZWwsIGNoYXIgKiphcmd2LCBXSU5ET1cgKmNocndpbiwgV0lORE9XICpzdHJ3aW4pCit7CisgICAgV0lORE9XICp0eHRib3ggPSAwOworICAgIFdJTkRPVyAqdHh0d2luID0gMDsKKyAgICBGSUxFICpmcDsKKyAgICBpbnQgY2g7CisgICAgaW50IHR4dF94ID0gMCwgdHh0X3kgPSAwOworICAgIGludCBiYXNlX3k7CisgICAgaW50IGxpbWl0ID0gZ2V0bWF4eChzdHJ3aW4pIC0gNTsKKyAgICB3Y2hhcl90IGJ1ZmZlcltNQVhfQ09MU107CisKKyAgICBpZiAoYXJndltsZXZlbF0gPT0gMCkgeworCWJlZXAoKTsKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKGxldmVsID4gMSkgeworCXR4dGJveCA9IG5ld3dpbihMSU5FUyAtIEJBU0VfWSwgQ09MUyAtIGxldmVsLCBCQVNFX1ksIGxldmVsKTsKKwlib3godHh0Ym94LCAwLCAwKTsKKwl3bm91dHJlZnJlc2godHh0Ym94KTsKKworCXR4dHdpbiA9IGRlcndpbih0eHRib3gsCisJCQlnZXRtYXh5KHR4dGJveCkgLSAyLAorCQkJZ2V0bWF4eCh0eHRib3gpIC0gMiwKKwkJCTEsIDEpOworCWJhc2VfeSA9IDA7CisgICAgfSBlbHNlIHsKKwl0eHR3aW4gPSBzdGRzY3I7CisJYmFzZV95ID0gQkFTRV9ZOworICAgIH0KKworICAgIGtleXBhZCh0eHR3aW4sIFRSVUUpOwkvKiBlbmFibGUga2V5Ym9hcmQgbWFwcGluZyAqLworICAgICh2b2lkKSBjYnJlYWsoKTsJCS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKyAgICAodm9pZCkgbm9lY2hvKCk7CQkvKiBkb24ndCBlY2hvIGlucHV0ICovCisKKyAgICB0eHRfeSA9IGJhc2VfeTsKKyAgICB0eHRfeCA9IDA7CisgICAgd21vdmUodHh0d2luLCB0eHRfeSwgdHh0X3gpOworCisgICAgaWYgKChmcCA9IGZvcGVuKGFyZ3ZbbGV2ZWxdLCAiciIpKSAhPSAwKSB7CisJd2hpbGUgKChjaCA9IGZnZXRjKGZwKSkgIT0gRU9GKSB7CisJICAgIGlmICh3YWRkY2godHh0d2luLCBVQ2hhcihjaCkpICE9IE9LKSB7CisJCWJyZWFrOworCSAgICB9CisJfQorCWZjbG9zZShmcCk7CisgICAgfSBlbHNlIHsKKwl3cHJpbnR3KHR4dHdpbiwgIkNhbm5vdCBvcGVuOlxuJXMiLCBhcmd2WzFdKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIVF1aXQoY2ggPSBtdndnZXRjaCh0eHR3aW4sIHR4dF95LCB0eHRfeCkpKSB7CisJc3dpdGNoIChjaCkgeworCWNhc2UgS0VZX0RPV046CisJY2FzZSAnaic6CisJICAgIGlmICh0eHRfeSA8IGdldG1heHkodHh0d2luKSAtIDEpCisJCXR4dF95Kys7CisJICAgIGVsc2UKKwkJYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlIEtFWV9VUDoKKwljYXNlICdrJzoKKwkgICAgaWYgKHR4dF95ID4gYmFzZV95KQorCQl0eHRfeS0tOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfTEVGVDoKKwljYXNlICdoJzoKKwkgICAgaWYgKHR4dF94ID4gMCkKKwkJdHh0X3gtLTsKKwkgICAgZWxzZQorCQliZWVwKCk7CisJICAgIGJyZWFrOworCWNhc2UgS0VZX1JJR0hUOgorCWNhc2UgJ2wnOgorCSAgICBpZiAodHh0X3ggPCBnZXRtYXh4KHR4dHdpbikgLSAxKQorCQl0eHRfeCsrOworCSAgICBlbHNlCisJCWJlZXAoKTsKKwkgICAgYnJlYWs7CisJY2FzZSAndyc6CisJICAgIHRlc3RfaW5jaHMobGV2ZWwgKyAxLCBhcmd2LCBjaHJ3aW4sIHN0cndpbik7CisJICAgIGlmICh0eHRib3ggIT0gMCkgeworCQl0b3VjaHdpbih0eHRib3gpOworCQl3bm91dHJlZnJlc2godHh0Ym94KTsKKwkgICAgfSBlbHNlIHsKKwkJdG91Y2h3aW4odHh0d2luKTsKKwkJd25vdXRyZWZyZXNoKHR4dHdpbik7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnLSc6CisJICAgIGlmIChsaW1pdCA+IDApIHsKKwkJLS1saW1pdDsKKwkgICAgfSBlbHNlIHsKKwkJYmVlcCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgJysnOgorCSAgICArK2xpbWl0OworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICBiZWVwKCk7CisJICAgIGJyZWFrOworCX0KKworCU12V1ByaW50dyhjaHJ3aW4sIDAsIDAsICJsaW5lOiIpOworCXdjbHJ0b2VvbChjaHJ3aW4pOworCisJaWYgKHR4dHdpbiAhPSBzdGRzY3IpIHsKKwkgICAgd21vdmUodHh0d2luLCB0eHRfeSwgdHh0X3gpOworCisJICAgIGlmICh3aW53c3RyKHR4dHdpbiwgYnVmZmVyKSAhPSBFUlIpIHsKKwkJc2hvd18xc3QoY2hyd2luLCAwLCBidWZmZXIpOworCSAgICB9CisJICAgIGlmIChtdndpbndzdHIodHh0d2luLCB0eHRfeSwgdHh0X3gsIGJ1ZmZlcikgIT0gRVJSKSB7CisJCXNob3dtb3JlKGNocndpbiwgMSwgYnVmZmVyKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIG1vdmUodHh0X3ksIHR4dF94KTsKKworCSAgICBpZiAoaW53c3RyKGJ1ZmZlcikgIT0gRVJSKSB7CisJCXNob3dfMXN0KGNocndpbiwgMCwgYnVmZmVyKTsKKwkgICAgfQorCSAgICBpZiAobXZpbndzdHIodHh0X3ksIHR4dF94LCBidWZmZXIpICE9IEVSUikgeworCQlzaG93bW9yZShjaHJ3aW4sIDEsIGJ1ZmZlcik7CisJICAgIH0KKwl9CisJd25vdXRyZWZyZXNoKGNocndpbik7CisKKwlNdldQcmludHcoc3Ryd2luLCAwLCAwLCAiJTRkOiIsIGxpbWl0KTsKKwl3Y2xydG9ib3Qoc3Ryd2luKTsKKworCWlmICh0eHR3aW4gIT0gc3Rkc2NyKSB7CisJICAgIHdtb3ZlKHR4dHdpbiwgdHh0X3ksIHR4dF94KTsKKwkgICAgaWYgKHdpbm53c3RyKHR4dHdpbiwgYnVmZmVyLCBsaW1pdCkgIT0gRVJSKSB7CisJCXNob3dfMXN0KHN0cndpbiwgMCwgYnVmZmVyKTsKKwkgICAgfQorCisJICAgIGlmIChtdndpbm53c3RyKHR4dHdpbiwgdHh0X3ksIHR4dF94LCBidWZmZXIsIGxpbWl0KSAhPSBFUlIpIHsKKwkJc2hvd21vcmUoc3Ryd2luLCAxLCBidWZmZXIpOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgbW92ZSh0eHRfeSwgdHh0X3gpOworCSAgICBpZiAoaW5ud3N0cihidWZmZXIsIGxpbWl0KSAhPSBFUlIpIHsKKwkJc2hvd18xc3Qoc3Ryd2luLCAwLCBidWZmZXIpOworCSAgICB9CisKKwkgICAgaWYgKG12aW5ud3N0cih0eHRfeSwgdHh0X3gsIGJ1ZmZlciwgbGltaXQpICE9IEVSUikgeworCQlzaG93bW9yZShzdHJ3aW4sIDEsIGJ1ZmZlcik7CisJICAgIH0KKwl9CisKKwl3bm91dHJlZnJlc2goc3Ryd2luKTsKKyAgICB9CisgICAgaWYgKGxldmVsID4gMSkgeworCWRlbHdpbih0eHR3aW4pOworCWRlbHdpbih0eHRib3gpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpjaHJib3g7CisgICAgV0lORE9XICpjaHJ3aW47CisgICAgV0lORE9XICpzdHJ3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIGNocmJveCA9IGRlcndpbihzdGRzY3IsIEJBU0VfWSwgQ09MUywgMCwgMCk7CisgICAgYm94KGNocmJveCwgMCwgMCk7CisgICAgd25vdXRyZWZyZXNoKGNocmJveCk7CisKKyAgICBjaHJ3aW4gPSBkZXJ3aW4oY2hyYm94LCAyLCBDT0xTIC0gMiwgMSwgMSk7CisgICAgc3Ryd2luID0gZGVyd2luKGNocmJveCwgMiwgQ09MUyAtIDIsIDMsIDEpOworCisgICAgdGVzdF9pbmNocygxLCBhcmd2LCBjaHJ3aW4sIHN0cndpbik7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSB3aWRlLW5jdXJzZXMgbGlicmFyeVxuIik7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X29wYXF1ZS5jIGIvdGVzdC90ZXN0X29wYXF1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYzc1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3Rfb3BhcXVlLmMKQEAgLTAsMCArMSw0NzEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgKgorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICAgICoKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAqCisgKiBkaXN0cmlidXRlLCBkaXN0cmlidXRlIHdpdGggbW9kaWZpY2F0aW9ucywgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgICAgICAgKgorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzICAgICoKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgICoKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgICoKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgICAgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICAgKgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFCT1ZFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCAgICoKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiAgICAqCisgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgICAgKgorICogVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgKgorICogaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgICAgICoKKyAqIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAqCisgKiBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogJElkOiB0ZXN0X29wYXF1ZS5jLHYgMS45IDIwMDkvMTAvMjQgMjE6MjE6MjkgdG9tIEV4cCAkCisgKgorICogQXV0aG9yOiBUaG9tYXMgRSBEaWNrZXkKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgb3BhcXVlIGZ1bmN0aW9ucyBmcm9tIHRoZSBjdXJzZXMgbGlicmFyeS4KKworICAgICAgIFdJTkRPVyAqIHdnZXRwYXJlbnQgKGNvbnN0IFdJTkRPVyAqKTsKKyAgICAgICBib29sIGlzX2NsZWFyZWQoY29uc3QgV0lORE9XICp3aW4pOworICAgICAgIGJvb2wgaXNfaWRjb2soY29uc3QgV0lORE9XICp3aW4pOworICAgICAgIGJvb2wgaXNfaWRsb2soY29uc3QgV0lORE9XICp3aW4pOworICAgICAgIGJvb2wgaXNfaW1tZWRvayhjb25zdCBXSU5ET1cgKndpbik7CisgICAgICAgYm9vbCBpc19rZXlwYWQoY29uc3QgV0lORE9XICp3aW4pOworICAgICAgIGJvb2wgaXNfbGVhdmVvayhjb25zdCBXSU5ET1cgKndpbik7CisgICAgICAgYm9vbCBpc19ub2RlbGF5KGNvbnN0IFdJTkRPVyAqd2luKTsKKyAgICAgICBib29sIGlzX25vdGltZW91dChjb25zdCBXSU5ET1cgKndpbik7CisgICAgICAgYm9vbCBpc19zY3JvbGxvayhjb25zdCBXSU5ET1cgKndpbik7CisgICAgICAgYm9vbCBpc19zeW5jb2soY29uc3QgV0lORE9XICp3aW4pOworICAgICAgIGludCB3Z2V0c2NycmVnIChjb25zdCBXSU5ET1cgKiwgaW50ICosIGludCAqKTsKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNkZWZpbmUgQkFTRV9ZIDYKKyNkZWZpbmUgTUFYX0NPTFMgMTAyNAorCisjaWYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpICYmIChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0ggPj0gMjAwODAxMTkpICYmIE5DVVJTRVNfRVhUX0ZVTkNTCisKK3N0YXRpYyBib29sCitRdWl0KGludCBjaCkKK3sKKyAgICByZXR1cm4gKGNoID09ICdxJyB8fCBjaCA9PSBRVUlUIHx8IGNoID09IEVTQ0FQRSk7Cit9CisKK3R5cGVkZWYgYm9vbCgqQm9vbE9wYXF1ZSkgKFdJTkRPVyAqLCBpbnQpOworCitzdGF0aWMgYm9vbAordGVzdF9vcGFxdWVfY2xlYXJlZChXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCWlmIChtb2RlKQorCSAgICB3Y2xlYXIod2luKTsKKyAgICB9CisgICAgcmV0dXJuIGlzX2NsZWFyZWQod2luKTsKK30KKworc3RhdGljIGJvb2wKK3Rlc3Rfb3BhcXVlX2lkY29rKFdJTkRPVyAqd2luLCBpbnQgbW9kZSkKK3sKKyAgICBpZiAobW9kZSA+PSAwKSB7CisJaWRjb2sod2luLCBtb2RlKTsKKyAgICB9CisgICAgcmV0dXJuIGlzX2lkY29rKHdpbik7Cit9CisKK3N0YXRpYyBib29sCit0ZXN0X29wYXF1ZV9pZGxvayhXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCWlkbG9rKHdpbiwgbW9kZSk7CisgICAgfQorICAgIHJldHVybiBpc19pZGxvayh3aW4pOworfQorCitzdGF0aWMgYm9vbAordGVzdF9vcGFxdWVfaW1tZWRvayhXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCWltbWVkb2sod2luLCBtb2RlKTsKKyAgICB9CisgICAgcmV0dXJuIGlzX2ltbWVkb2sod2luKTsKK30KKworc3RhdGljIGJvb2wKK3Rlc3Rfb3BhcXVlX2tleXBhZChXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCWtleXBhZCh3aW4sIG1vZGUpOworICAgIH0KKyAgICByZXR1cm4gaXNfa2V5cGFkKHdpbik7Cit9CisKK3N0YXRpYyBib29sCit0ZXN0X29wYXF1ZV9sZWF2ZW9rKFdJTkRPVyAqd2luLCBpbnQgbW9kZSkKK3sKKyAgICBpZiAobW9kZSA+PSAwKSB7CisJbGVhdmVvayh3aW4sIG1vZGUpOworICAgIH0KKyAgICByZXR1cm4gaXNfbGVhdmVvayh3aW4pOworfQorCitzdGF0aWMgYm9vbAordGVzdF9vcGFxdWVfbm9kZWxheShXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCW5vZGVsYXkod2luLCBtb2RlKTsKKyAgICB9CisgICAgcmV0dXJuIGlzX25vZGVsYXkod2luKTsKK30KKworc3RhdGljIGJvb2wKK3Rlc3Rfb3BhcXVlX25vdGltZW91dChXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCW5vdGltZW91dCh3aW4sIG1vZGUpOworICAgIH0KKyAgICByZXR1cm4gaXNfbm90aW1lb3V0KHdpbik7Cit9CisKK3N0YXRpYyBib29sCit0ZXN0X29wYXF1ZV9zY3JvbGxvayhXSU5ET1cgKndpbiwgaW50IG1vZGUpCit7CisgICAgaWYgKG1vZGUgPj0gMCkgeworCXNjcm9sbG9rKHdpbiwgbW9kZSk7CisgICAgfQorICAgIHJldHVybiBpc19zY3JvbGxvayh3aW4pOworfQorCitzdGF0aWMgYm9vbAordGVzdF9vcGFxdWVfc3luY29rKFdJTkRPVyAqd2luLCBpbnQgbW9kZSkKK3sKKyAgICBpZiAobW9kZSA+PSAwKSB7CisJc3luY29rKHdpbiwgbW9kZSk7CisgICAgfQorICAgIHJldHVybiBpc19zeW5jb2sod2luKTsKK30KKworc3RhdGljIGludAorc3RhdHVzX3koV0lORE9XICpzdHN3aW4sIGludCBjZWxsKQoreworICAgIHJldHVybiAoY2VsbCAlIGdldG1heHkoc3Rzd2luKSk7Cit9CisKK3N0YXRpYyBpbnQKK3N0YXR1c194KFdJTkRPVyAqc3Rzd2luLCBpbnQgY2VsbCkKK3sKKyAgICByZXR1cm4gKDE1ICogKGNlbGwgLyBnZXRtYXh5KHN0c3dpbikpKTsKK30KKworc3RhdGljIHZvaWQKK3RvX2tleXdvcmQoV0lORE9XICpzdHN3aW4sIGludCBjZWxsKQoreworICAgIHdtb3ZlKHN0c3dpbiwgc3RhdHVzX3koc3Rzd2luLCBjZWxsKSwgc3RhdHVzX3goc3Rzd2luLCBjZWxsKSk7Cit9CisKK3N0YXRpYyB2b2lkCit0b19yZXN1bHQoV0lORE9XICpzdHN3aW4sIGludCBjZWxsLCBib29sIGJlZm9yZSkKK3sKKyAgICBpbnQgeSA9IHN0YXR1c195KHN0c3dpbiwgY2VsbCk7CisgICAgaW50IHggPSBzdGF0dXNfeChzdHN3aW4sIGNlbGwpICsgMTE7CisgICAgaWYgKCFiZWZvcmUpCisJKyt4OworICAgIHdtb3ZlKHN0c3dpbiwgeSwgeCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X2tleXdvcmQoV0lORE9XICpzdHN3aW4sIGludCBjZWxsLCBpbnQgYWN0aXZlLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIHRvX2tleXdvcmQoc3Rzd2luLCBjZWxsKTsKKyAgICBpZiAoYWN0aXZlID09IGNlbGwpCisJKHZvaWQpIHdzdGFuZG91dChzdHN3aW4pOworICAgIHdwcmludHcoc3Rzd2luLCAiJXM6IiwgbmFtZSk7CisgICAgaWYgKGFjdGl2ZSA9PSBjZWxsKQorCSh2b2lkKSB3c3RhbmRlbmQoc3Rzd2luKTsKK30KKy8qICpJTkRFTlQtT0ZGKiAqLworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBCb29sT3BhcXVlIGZ1bmM7Cit9IGJvb2xfZnVuY3NbXSA9IHsKKyAgICB7ICJjbGVhcmVkIiwgICB0ZXN0X29wYXF1ZV9jbGVhcmVkIH0sCisgICAgeyAiaWRjb2siLCAgICAgdGVzdF9vcGFxdWVfaWRjb2sgfSwKKyAgICB7ICJpZGxvayIsICAgICB0ZXN0X29wYXF1ZV9pZGxvayB9LAorICAgIHsgImltbWVkb2siLCAgIHRlc3Rfb3BhcXVlX2ltbWVkb2sgfSwKKyAgICB7ICJrZXlwYWQiLCAgICB0ZXN0X29wYXF1ZV9rZXlwYWQgfSwKKyAgICB7ICJsZWF2ZW9rIiwgICB0ZXN0X29wYXF1ZV9sZWF2ZW9rIH0sCisgICAgeyAibm9kZWxheSIsICAgdGVzdF9vcGFxdWVfbm9kZWxheSB9LAorICAgIHsgIm5vdGltZW91dCIsIHRlc3Rfb3BhcXVlX25vdGltZW91dCB9LAorICAgIHsgInNjcm9sbG9rIiwgIHRlc3Rfb3BhcXVlX3Njcm9sbG9rIH0sCisgICAgeyAic3luY29rIiwgICAgdGVzdF9vcGFxdWVfc3luY29rIH0KK307CisvKiAqSU5ERU5ULU9OKiAqLworCisvKgorICogRGlzcGxheSBhbmQvb3IgYWxsb3cgdXBkYXRlIGZvciB0aGUgcHJvcGVydGllcyBhY2Nlc3NlZCBpbiB0aGUgb3BhcXVlCisgKiB3aW5kb3cuICBTb21lIG1heSBjaGFuZ2Ugc3RhdGUgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgd2luZG93LCBzbyB3ZQorICogZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIHVzaW5nIHRoZSAnYmVmb3JlJyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBpbnQKK3Nob3dfb3BhcXVlKFdJTkRPVyAqc3Rzd2luLCBXSU5ET1cgKnR4dHdpbiwgYm9vbCBiZWZvcmUsIGludCBhY3RpdmUpCit7CisgICAgaW50IG47CisgICAgaW50IHRvcCwgYm90dG9tOworCisgICAgaWYgKGJlZm9yZSkgeworCXdlcmFzZShzdHN3aW4pOworICAgIH0KKyAgICBmb3IgKG4gPSAwOyBuIDwgKGludCkgU0laRU9GKGJvb2xfZnVuY3MpOyArK24pIHsKKwlzaG93X2tleXdvcmQoc3Rzd2luLCBuLCBhY3RpdmUsIGJvb2xfZnVuY3Nbbl0ubmFtZSk7CisKKwl0b19yZXN1bHQoc3Rzd2luLCBuLCBiZWZvcmUpOworCXdwcmludHcoc3Rzd2luLCAiJWMiLCBib29sX2Z1bmNzW25dLmZ1bmModHh0d2luLCAtMSkgPyAnVCcgOiAnRicpOworICAgIH0KKworICAgIHNob3dfa2V5d29yZChzdHN3aW4sIG4sIGFjdGl2ZSwgIndnZXRwYXJlbnQiKTsKKyAgICB0b19yZXN1bHQoc3Rzd2luLCBuLCBUUlVFKTsKKyAgICB3cHJpbnR3KHN0c3dpbiwgIiVwIiwgKHZvaWQgKikgd2dldHBhcmVudCh0eHR3aW4pKTsKKworICAgICsrbjsKKyAgICBzaG93X2tleXdvcmQoc3Rzd2luLCBuLCBhY3RpdmUsICJ3Z2V0c2NycmVnIik7CisgICAgdG9fcmVzdWx0KHN0c3dpbiwgbiwgVFJVRSk7CisgICAgaWYgKHdnZXRzY3JyZWcodHh0d2luLCAmdG9wLCAmYm90dG9tKSA9PSBPSykKKwl3cHJpbnR3KHN0c3dpbiwgIiVkLCVkIiwgdG9wLCBib3R0b20pOworCisgICAgd25vdXRyZWZyZXNoKHN0c3dpbik7CisgICAgcmV0dXJuIGFjdGl2ZTsKK30KKworc3RhdGljIGludAordGVzdF9vcGFxdWUoaW50IGxldmVsLCBjaGFyICoqYXJndiwgV0lORE9XICpzdHN3aW4pCit7CisgICAgV0lORE9XICp0eHRib3ggPSAwOworICAgIFdJTkRPVyAqdHh0d2luID0gMDsKKyAgICBGSUxFICpmcDsKKyAgICBpbnQgY2g7CisgICAgaW50IHR4dF94ID0gMCwgdHh0X3kgPSAwOworICAgIGludCBiYXNlX3k7CisgICAgYm9vbCBpbl9zdGF0dXMgPSBGQUxTRTsKKyAgICBpbnQgYWN0aXZlID0gMDsKKworICAgIGlmIChhcmd2W2xldmVsXSA9PSAwKSB7CisJYmVlcCgpOworCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPiAxKSB7CisJdHh0Ym94ID0gbmV3d2luKExJTkVTIC0gQkFTRV9ZLCBDT0xTIC0gbGV2ZWwsIEJBU0VfWSwgbGV2ZWwpOworCWJveCh0eHRib3gsIDAsIDApOworCXdub3V0cmVmcmVzaCh0eHRib3gpOworCisJdHh0d2luID0gZGVyd2luKHR4dGJveCwKKwkJCWdldG1heHkodHh0Ym94KSAtIDIsCisJCQlnZXRtYXh4KHR4dGJveCkgLSAyLAorCQkJMSwgMSk7CisJYmFzZV95ID0gMDsKKyAgICB9IGVsc2UgeworCXR4dHdpbiA9IHN0ZHNjcjsKKwliYXNlX3kgPSBCQVNFX1k7CisgICAgfQorCisgICAga2V5cGFkKHR4dHdpbiwgVFJVRSk7CS8qIGVuYWJsZSBrZXlib2FyZCBtYXBwaW5nICovCisgICAgKHZvaWQpIGNicmVhaygpOwkJLyogdGFrZSBpbnB1dCBjaGFycyBvbmUgYXQgYSB0aW1lLCBubyB3YWl0IGZvciBcbiAqLworICAgICh2b2lkKSBub2VjaG8oKTsJCS8qIGRvbid0IGVjaG8gaW5wdXQgKi8KKworICAgIHR4dF95ID0gYmFzZV95OworICAgIHR4dF94ID0gMDsKKyAgICB3bW92ZSh0eHR3aW4sIHR4dF95LCB0eHRfeCk7CisKKyAgICBpZiAoKGZwID0gZm9wZW4oYXJndltsZXZlbF0sICJyIikpICE9IDApIHsKKwl3aGlsZSAoKGNoID0gZmdldGMoZnApKSAhPSBFT0YpIHsKKwkgICAgaWYgKHdhZGRjaCh0eHR3aW4sIFVDaGFyKGNoKSkgIT0gT0spIHsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisJZmNsb3NlKGZwKTsKKyAgICB9IGVsc2UgeworCXdwcmludHcodHh0d2luLCAiQ2Fubm90IG9wZW46XG4lcyIsIGFyZ3ZbMV0pOworICAgIH0KKworICAgIGZvciAoOzspIHsKKwlpZiAoaW5fc3RhdHVzKSB7CisJICAgIHRvX2tleXdvcmQoc3Rzd2luLCBhY3RpdmUpOworCisJICAgIGNoID0gd2dldGNoKHN0c3dpbik7CisJICAgIHNob3dfb3BhcXVlKHN0c3dpbiwgdHh0d2luLCBUUlVFLCBhY3RpdmUpOworCSAgICBpZiAoUXVpdChjaCkpCisJCWJyZWFrOworCisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnXHQnOgorCQlpbl9zdGF0dXMgPSBGQUxTRTsKKwkJYnJlYWs7CisJICAgIGNhc2UgS0VZX0RPV046CisJICAgIGNhc2UgJ2onOgorCQlpZiAoYWN0aXZlIDwgKGludCkgU0laRU9GKGJvb2xfZnVuY3MpIC0gMSkKKwkJICAgIGFjdGl2ZSsrOworCQllbHNlCisJCSAgICBiZWVwKCk7CisJCWJyZWFrOworCSAgICBjYXNlIEtFWV9VUDoKKwkgICAgY2FzZSAnayc6CisJCWlmIChhY3RpdmUgPiAwKQorCQkgICAgYWN0aXZlLS07CisJCWVsc2UKKwkJICAgIGJlZXAoKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyAnOgorCQlib29sX2Z1bmNzW2FjdGl2ZV0uZnVuYyh0eHR3aW4sCisJCQkJCSFib29sX2Z1bmNzW2FjdGl2ZV0uZnVuYyh0eHR3aW4sIC0xKSk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQliZWVwKCk7CisJCWJyZWFrOworCSAgICB9CisJICAgIHNob3dfb3BhcXVlKHN0c3dpbiwgdHh0d2luLCBGQUxTRSwgaW5fc3RhdHVzID8gYWN0aXZlIDogLTEpOworCX0gZWxzZSB7CisJICAgIGNoID0gbXZ3Z2V0Y2godHh0d2luLCB0eHRfeSwgdHh0X3gpOworCSAgICBzaG93X29wYXF1ZShzdHN3aW4sIHR4dHdpbiwgVFJVRSwgLTEpOworCSAgICBpZiAoUXVpdChjaCkpCisJCWJyZWFrOworCisJICAgIHN3aXRjaCAoY2gpIHsKKwkgICAgY2FzZSAnXHQnOgorCQlpbl9zdGF0dXMgPSBUUlVFOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfRE9XTjoKKwkgICAgY2FzZSAnaic6CisJCWlmICh0eHRfeSA8IGdldG1heHkodHh0d2luKSAtIDEpCisJCSAgICB0eHRfeSsrOworCQllbHNlCisJCSAgICBiZWVwKCk7CisJCWJyZWFrOworCSAgICBjYXNlIEtFWV9VUDoKKwkgICAgY2FzZSAnayc6CisJCWlmICh0eHRfeSA+IGJhc2VfeSkKKwkJICAgIHR4dF95LS07CisJCWVsc2UKKwkJICAgIGJlZXAoKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgS0VZX0xFRlQ6CisJICAgIGNhc2UgJ2gnOgorCQlpZiAodHh0X3ggPiAwKQorCQkgICAgdHh0X3gtLTsKKwkJZWxzZQorCQkgICAgYmVlcCgpOworCQlicmVhazsKKwkgICAgY2FzZSBLRVlfUklHSFQ6CisJICAgIGNhc2UgJ2wnOgorCQlpZiAodHh0X3ggPCBnZXRtYXh4KHR4dHdpbikgLSAxKQorCQkgICAgdHh0X3grKzsKKwkJZWxzZQorCQkgICAgYmVlcCgpOworCQlicmVhazsKKwkgICAgY2FzZSAndyc6CisJCXRlc3Rfb3BhcXVlKGxldmVsICsgMSwgYXJndiwgc3Rzd2luKTsKKwkJaWYgKHR4dGJveCAhPSAwKSB7CisJCSAgICB0b3VjaHdpbih0eHRib3gpOworCQkgICAgd25vdXRyZWZyZXNoKHR4dGJveCk7CisJCX0gZWxzZSB7CisJCSAgICB0b3VjaHdpbih0eHR3aW4pOworCQkgICAgd25vdXRyZWZyZXNoKHR4dHdpbik7CisJCX0KKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCWJlZXAoKTsKKwkJbmFwbXMoMTAwKTsKKwkJYnJlYWs7CisJICAgIH0KKworCSAgICBzaG93X29wYXF1ZShzdHN3aW4sIHR4dHdpbiwgRkFMU0UsIC0xKTsKKwl9CisgICAgfQorICAgIGlmIChsZXZlbCA+IDEpIHsKKwlkZWx3aW4odHh0d2luKTsKKwlkZWx3aW4odHh0Ym94KTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3NldF9lc2NkZWxheSh2b2lkKQoreworICAgIHNldF9lc2NkZWxheSgoMTAwICsgRVNDREVMQVkpIC8gMik7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3NldF90YWJzaXplKHZvaWQpCit7CisgICAgaW50IHkwLCB4MDsKKyAgICBpbnQgeSwgeDsKKyAgICBpbnQgc2F2ZV90YWJzaXplID0gVEFCU0laRTsKKworICAgICh2b2lkKSBjYnJlYWsoKTsJCS8qIHRha2UgaW5wdXQgY2hhcnMgb25lIGF0IGEgdGltZSwgbm8gd2FpdCBmb3IgXG4gKi8KKyAgICAodm9pZCkgbm9lY2hvKCk7CQkvKiBkb24ndCBlY2hvIGlucHV0ICovCisKKyAgICBmb3IgKHkgPSAwOyB5IDwgTElORVM7ICsreSkgeworCXNldF90YWJzaXplKHkgKyAxKTsKKwlpZiAobW92ZSh5LCAwKSA9PSBFUlIpCisJICAgIGJyZWFrOworCWZvciAoeCA9IDA7IHggPCBDT0xTOykgeworCSAgICBhZGRjaCgnXHQnKTsKKwkgICAgaWYgKGFkZGNoKCcqJykgPT0gRVJSKSB7CisJCWJyZWFrOworCSAgICB9CisJICAgIGdldHl4KHN0ZHNjciwgeTAsIHgwKTsKKwkgICAgaWYgKHkwICE9IHkgfHwgeDAgPT0geCkgeworCQlicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisgICAgZ2V0Y2goKTsKKyAgICBlcmFzZSgpOworCisgICAgc2V0X3RhYnNpemUoc2F2ZV90YWJzaXplKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgV0lORE9XICpzdHNib3g7CisgICAgV0lORE9XICpzdHN3aW47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpZiAoYXJnYyA8IDIpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyBmaWxlXG4iLCBhcmd2WzBdKTsKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGluaXRzY3IoKTsKKworICAgIHRlc3Rfc2V0X2VzY2RlbGF5KCk7CisgICAgdGVzdF9zZXRfdGFic2l6ZSgpOworCisgICAgc3RzYm94ID0gZGVyd2luKHN0ZHNjciwgQkFTRV9ZLCBDT0xTLCAwLCAwKTsKKyAgICBib3goc3RzYm94LCAwLCAwKTsKKyAgICB3bm91dHJlZnJlc2goc3RzYm94KTsKKworICAgIHN0c3dpbiA9IGRlcndpbihzdHNib3gsIEJBU0VfWSAtIDIsIENPTFMgLSAyLCAxLCAxKTsKKyAgICBrZXlwYWQoc3Rzd2luLCBUUlVFKTsKKworICAgIHRlc3Rfb3BhcXVlKDEsIGFyZ3YsIHN0c3dpbik7CisKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorI2Vsc2UKK2ludAorbWFpbih2b2lkKQoreworICAgIHByaW50ZigiVGhpcyBwcm9ncmFtIHJlcXVpcmVzIHRoZSBuY3Vyc2VzIGxpYnJhcnlcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF9zZXR1cHRlcm0uYyBiL3Rlc3QvdGVzdF9zZXR1cHRlcm0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDdlMGUyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0X3NldHVwdGVybS5jCkBAIC0wLDAgKzEsMjEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQXV0aG9yOiBUaG9tYXMgRS4gRGlja2V5CisgKgorICogJElkOiB0ZXN0X3NldHVwdGVybS5jLHYgMS44IDIwMTUvMDYvMjggMDA6NTM6NDYgdG9tIEV4cCAkCisgKgorICogQSBzaW1wbGUgZGVtbyBvZiBzZXR1cHRlcm0vcmVzdGFydHRlcm0uCisgKi8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2lmIEhBVkVfVElHRVRTVFIKKworc3RhdGljIGJvb2wgYV9vcHQgPSBGQUxTRTsKK3N0YXRpYyBib29sIGZfb3B0ID0gRkFMU0U7CitzdGF0aWMgYm9vbCBuX29wdCA9IEZBTFNFOworc3RhdGljIGJvb2wgcl9vcHQgPSBGQUxTRTsKKworc3RhdGljIHZvaWQKK3Rlc3RfcmMoTkNVUlNFU19DT05TVCBjaGFyICpuYW1lLCBpbnQgYWN0dWFsX3JjLCBpbnQgYWN0dWFsX2VycikKK3sKKyAgICBpbnQgZXhwZWN0X3JjID0gLTE7CisgICAgaW50IGV4cGVjdF9lcnIgPSAtMTsKKworICAgIGlmIChuYW1lID09IDApCisJbmFtZSA9IGdldGVudigiVEVSTSIpOworICAgIGlmIChuYW1lID09IDApCisJbmFtZSA9ICI/IjsKKworICAgIHN3aXRjaCAoKm5hbWUpIHsKKyAgICBjYXNlICd2JzoJCQkvKiB2dDEwMCBpcyBub3JtYWwgKi8KKyAgICBjYXNlICdkJzoJCQkvKiBkdW1iIGhhcyBubyBzcGVjaWFsIGZsYWdzICovCisJZXhwZWN0X3JjID0gMDsKKwlleHBlY3RfZXJyID0gMTsKKwlicmVhazsKKyAgICBjYXNlICdsJzoJCQkvKiBscHIgaXMgaGFyZGNvcHkgKi8KKwlleHBlY3RfZXJyID0gMTsKKwlicmVhazsKKyAgICBjYXNlICd1JzoJCQkvKiB1bmtub3duIGlzIGdlbmVyaWMgKi8KKwlleHBlY3RfZXJyID0gMDsKKwlicmVhazsKKyAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KKyAgICBpZiAobl9vcHQpIHsKKwlleHBlY3RfcmMgPSAtMTsKKwlleHBlY3RfZXJyID0gLTE7CisgICAgfQorICAgIHByaW50ZigiJXMiLAorCSAgICgoYWN0dWFsX3JjID09IGV4cGVjdF9yYyAmJiBhY3R1YWxfZXJyID09IGV4cGVjdF9lcnIpCisJICAgID8gIk9LIgorCSAgICA6ICJFUlIiKSk7CisgICAgcHJpbnRmKCIgJyVzJyIsIG5hbWUpOworICAgIGlmIChhY3R1YWxfcmMgPT0gZXhwZWN0X3JjKSB7CisJcHJpbnRmKCIgcmM9JWQiLCBhY3R1YWxfcmMpOworICAgIH0gZWxzZSB7CisJcHJpbnRmKCIgcmM9JWQgKCVkKSIsIGFjdHVhbF9yYywgZXhwZWN0X3JjKTsKKyAgICB9CisgICAgaWYgKGFjdHVhbF9lcnIgPT0gZXhwZWN0X2VycikgeworCXByaW50ZigiIGVycj0lZCIsIGFjdHVhbF9lcnIpOworICAgIH0gZWxzZSB7CisJcHJpbnRmKCIgZXJyPSVkICglZCkiLCBhY3R1YWxfZXJyLCBleHBlY3RfZXJyKTsKKyAgICB9CisgICAgcHJpbnRmKCJcbiIpOworfQorCitzdGF0aWMgdm9pZAordGVzdF9zZXR1cHRlcm0oTkNVUlNFU19DT05TVCBjaGFyICpuYW1lKQoreworICAgIGludCByYzsKKyAgICBpbnQgZXJyID0gLTk5OworCisgICAgaWYgKHJfb3B0KSB7CisJcmMgPSByZXN0YXJ0dGVybShuYW1lLCAwLCBmX29wdCA/IE5VTEwgOiAmZXJyKTsKKyAgICB9IGVsc2UgeworCXJjID0gc2V0dXB0ZXJtKG5hbWUsIDAsIGZfb3B0ID8gTlVMTCA6ICZlcnIpOworICAgIH0KKyAgICB0ZXN0X3JjKG5hbWUsIHJjLCBlcnIpOworfQorCitzdGF0aWMgdm9pZAordXNhZ2Uodm9pZCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqbXNnW10gPQorICAgIHsKKwkiVXNhZ2U6IHRlc3Rfc2V0dXB0ZXJtIFtvcHRpb25zXSBbdGVybWluYWxdIiwKKwkiIiwKKwkiRGVtb25zdHJhdGUgZXJyb3ItY2hlY2tpbmcgZm9yIHNldHVwdGVybSBhbmQgcmVzdGFydHRlcm0uIiwKKwkiIiwKKwkiT3B0aW9uczoiLAorCSIgLWEgICAgICAgYXV0b21hdGljIHRlc3QgZm9yIGVhY2ggc3VjY2Vzcy9lcnJvciBjb2RlIiwKKwkiIC1mICAgICAgIHRyZWF0IGVycm9ycyBhcyBmYXRhbCIsCisJIiAtbiAgICAgICBzZXQgZW52aXJvbm1lbnQgdG8gZGlzYWJsZSB0ZXJtaW5mbyBkYXRhYmFzZSwgYXNzdW1pbmciLAorCSIgICAgICAgICAgdGhlIGNvbXBpbGVkLWluIHBhdGhzIGZvciBkYXRhYmFzZSBhbHNvIGZhaWwiLAorCSIgLXIgICAgICAgdGVzdCByZXN0YXJ0dGVybSByYXRoZXIgdGhhbiBzZXR1cHRlcm0iLAorICAgIH07CisgICAgdW5zaWduZWQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKG1zZyk7ICsrbikgeworCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ1tuXSk7CisgICAgfQorICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCBuOworCisgICAgd2hpbGUgKChuID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhZm5yIikpICE9IC0xKSB7CisJc3dpdGNoIChuKSB7CisJY2FzZSAnYSc6CisJICAgIGFfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnZic6CisJICAgIGZfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAnbic6CisJICAgIG5fb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJY2FzZSAncic6CisJICAgIHJfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKworICAgIGlmIChuX29wdCkgeworCXN0YXRpYyBjaGFyIG5vbmVbXVsyNV0gPQorCXsKKwkgICAgIkhPTUU9L0dVSSIsCisJICAgICJURVJNSU5GTz0vR1VJIiwKKwkgICAgIlRFUk1JTkZPX0RJUlM9L0dVSSIKKwl9OworCS8qCisJICogV2UgY2FuIHR1cm4gdGhpcyBvZmYsIGJ1dCBub3Qgb24gYWdhaW4sIGJlY2F1c2UgbmN1cnNlcyBjYWNoZXMgdGhlCisJICogZGlyZWN0b3J5IGxvY2F0aW9ucy4KKwkgKi8KKwlwcmludGYoIioqIHdpdGhvdXQgZGF0YWJhc2VcbiIpOworCWZvciAobiA9IDA7IG4gPCAzOyArK24pCisJICAgIHB1dGVudihub25lW25dKTsKKyAgICB9IGVsc2UgeworCXByaW50ZigiKiogd2l0aCBkYXRhYmFzZVxuIik7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGUgcmVzdGFydHRlcm0gcmVsaWVzIG9uIGFuIGV4aXN0aW5nIHNjcmVlbiwgc28gd2UgbWFrZSBvbmUgaGVyZS4KKyAgICAgKi8KKyAgICBpZiAocl9vcHQpIHsKKwluZXd0ZXJtKCJhbnNpIiwgc3Rkb3V0LCBzdGRpbik7CisJcmVzZXRfc2hlbGxfbW9kZSgpOworICAgIH0KKworICAgIGlmIChhX29wdCkgeworCXN0YXRpYyBjaGFyIHByZWRlZltdWzldID0KKwl7InZ0MTAwIiwgImR1bWIiLCAibHByIiwgInVua25vd24iLCAibm9uZS1zdWNoIn07CisJaWYgKG9wdGluZCA8IGFyZ2MpIHsKKwkgICAgdXNhZ2UoKTsKKwl9CisJZm9yIChuID0gMDsgbiA8IDQ7ICsrbikgeworCSAgICB0ZXN0X3NldHVwdGVybShwcmVkZWZbbl0pOworCX0KKyAgICB9IGVsc2UgeworCWlmIChvcHRpbmQgPCBhcmdjKSB7CisJICAgIGZvciAobiA9IG9wdGluZDsgbiA8IGFyZ2M7ICsrbikgeworCQl0ZXN0X3NldHVwdGVybShhcmd2W25dKTsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIHRlc3Rfc2V0dXB0ZXJtKE5VTEwpOworCX0KKyAgICB9CisKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCisjZWxzZSAvKiAhSEFWRV9USUdFVFNUUiAqLworaW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgcHJpbnRmKCJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGhlIHRlcm1pbmZvIGZ1bmN0aW9ucyBzdWNoIGFzIHRpZ2V0c3RyXG4iKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorI2VuZGlmIC8qIEhBVkVfVElHRVRTVFIgKi8KZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF92aWRfcHV0cy5jIGIvdGVzdC90ZXN0X3ZpZF9wdXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5NmQxYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdF92aWRfcHV0cy5jCkBAIC0wLDAgKzEsMTQ4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogdGVzdF92aWRfcHV0cy5jLHYgMS42IDIwMTQvMDcvMTkgMjM6MDk6MjggdG9tIEV4cCAkCisgKgorICogRGVtb25zdHJhdGUgdGhlIHZpZF9wdXRzIGFuZCB2aWRfYXR0ciBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAxMy8wMS8xMgorICovCisKKyNkZWZpbmUgVVNFX1RJTkZPCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVCAmJiBIQVZFX1NFVFVQVEVSTSAmJiBIQVZFX1ZJRF9QVVRTCisKKyNkZWZpbmUgdmFsaWQocykgKChzICE9IDApICYmIHMgIT0gKGNoYXIgKiktMSkKKworc3RhdGljIEZJTEUgKm15X2ZwOworc3RhdGljIGJvb2wgcF9vcHQgPSBGQUxTRTsKKworc3RhdGljCitUUFVUU19QUk9UTyhvdXRjLCBjKQoreworICAgIGludCByYyA9IGM7CisKKyAgICByYyA9IHB1dGMoYywgbXlfZnApOworICAgIFRQVVRTX1JFVFVSTihyYyk7Cit9CisKK3N0YXRpYyBib29sCitvdXRzKGNvbnN0IGNoYXIgKnMpCit7CisgICAgaWYgKHZhbGlkKHMpKSB7CisJdHB1dHMocywgMSwgb3V0Yyk7CisJcmV0dXJuIFRSVUU7CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXAodm9pZCkKK3sKKyAgICBvdXRzKGV4aXRfYXR0cmlidXRlX21vZGUpOworICAgIGlmICghb3V0cyhvcmlnX2NvbG9ycykpCisJb3V0cyhvcmlnX3BhaXIpOworICAgIG91dHMoY3Vyc29yX25vcm1hbCk7Cit9CisKK3N0YXRpYyB2b2lkCitjaGFuZ2VfYXR0cihjaHR5cGUgYXR0cikKK3sKKyAgICBpZiAocF9vcHQpIHsKKwl2aWRfcHV0cyhhdHRyLCAoc2hvcnQpIDAsICh2b2lkICopIDAsIG91dGMpOworICAgIH0gZWxzZSB7CisJdmlkX2F0dHIoYXR0ciwgKHNob3J0KSAwLCAodm9pZCAqKSAwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3ZpZF9wdXRzKHZvaWQpCit7CisgICAgZnByaW50ZihteV9mcCwgIk5hbWU6ICIpOworICAgIGNoYW5nZV9hdHRyKEFfQk9MRCk7CisgICAgZnB1dHMoIkJvbGQiLCBteV9mcCk7CisgICAgY2hhbmdlX2F0dHIoQV9SRVZFUlNFKTsKKyAgICBmcHV0cygiIFJldmVyc2UiLCBteV9mcCk7CisgICAgY2hhbmdlX2F0dHIoQV9OT1JNQUwpOworICAgIGZwdXRzKCJcbiIsIG15X2ZwKTsKK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKnRibFtdID0KKyAgICB7CisJIlVzYWdlOiB0ZXN0X3ZpZF9wdXRzIFtvcHRpb25zXSIKKwksIiIKKwksIk9wdGlvbnM6IgorCSwiICAtZSAgICAgIHVzZSBzdGRlcnIgKGRlZmF1bHQgc3Rkb3V0KSIKKwksIiAgLXAgICAgICB1c2UgdmlkX3B1dHMgKGRlZmF1bHQgdmlkX2F0dHIpIgorICAgIH07CisgICAgdW5zaWduZWQgbjsKKyAgICBmb3IgKG4gPSAwOyBuIDwgU0laRU9GKHRibCk7ICsrbikKKwlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCB0Ymxbbl0pOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisKK2ludAorbWFpbihpbnQgYXJnYyBHQ0NfVU5VU0VELCBjaGFyICphcmd2W11HQ0NfVU5VU0VEKQoreworICAgIGludCBjaDsKKworICAgIG15X2ZwID0gc3Rkb3V0OworCisgICAgd2hpbGUgKChjaCA9IGdldG9wdChhcmdjLCBhcmd2LCAiZXAiKSkgIT0gLTEpIHsKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnZSc6CisJICAgIG15X2ZwID0gc3RkZXJyOworCSAgICBicmVhazsKKwljYXNlICdwJzoKKwkgICAgcF9vcHQgPSBUUlVFOworCSAgICBicmVhazsKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCSAgICBicmVhazsKKwl9CisgICAgfQorICAgIGlmIChvcHRpbmQgPCBhcmdjKQorCXVzYWdlKCk7CisKKyAgICBzZXR1cHRlcm0oKGNoYXIgKikgMCwgMSwgKGludCAqKSAwKTsKKyAgICB0ZXN0X3ZpZF9wdXRzKCk7CisgICAgY2xlYW51cCgpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisKKyNlbHNlCitpbnQKK21haW4odm9pZCkKK3sKKyAgICBwcmludGYoIlRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgd2lkZS1uY3Vyc2VzIHRlcm1pbmZvIGxpYnJhcnlcbiIpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdF92aWRwdXRzLmMgYi90ZXN0L3Rlc3RfdmlkcHV0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjN2FkZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3RfdmlkcHV0cy5jCkBAIC0wLDAgKzEsMTQ4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICRJZDogdGVzdF92aWRwdXRzLmMsdiAxLjUgMjAxNC8wNy8xOSAyMzowOTo1OCB0b20gRXhwICQKKyAqCisgKiBEZW1vbnN0cmF0ZSB0aGUgdmlkcHV0cyBhbmQgdmlkYXR0ciBmdW5jdGlvbnMuCisgKiBUaG9tYXMgRGlja2V5IC0gMjAxMy8wMS8xMgorICovCisKKyNkZWZpbmUgVVNFX1RJTkZPCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBIQVZFX1NFVFVQVEVSTSAmJiBIQVZFX1ZJRFBVVFMKKworI2RlZmluZSB2YWxpZChzKSAoKHMgIT0gMCkgJiYgcyAhPSAoY2hhciAqKS0xKQorCitzdGF0aWMgRklMRSAqbXlfZnA7CitzdGF0aWMgYm9vbCBwX29wdCA9IEZBTFNFOworCitzdGF0aWMKK1RQVVRTX1BST1RPKG91dGMsIGMpCit7CisgICAgaW50IHJjID0gYzsKKworICAgIHJjID0gcHV0YyhjLCBteV9mcCk7CisgICAgVFBVVFNfUkVUVVJOKHJjKTsKK30KKworc3RhdGljIGJvb2wKK291dHMoY29uc3QgY2hhciAqcykKK3sKKyAgICBpZiAodmFsaWQocykpIHsKKwl0cHV0cyhzLCAxLCBvdXRjKTsKKwlyZXR1cm4gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lkKQoreworICAgIG91dHMoZXhpdF9hdHRyaWJ1dGVfbW9kZSk7CisgICAgaWYgKCFvdXRzKG9yaWdfY29sb3JzKSkKKwlvdXRzKG9yaWdfcGFpcik7CisgICAgb3V0cyhjdXJzb3Jfbm9ybWFsKTsKK30KKworc3RhdGljIHZvaWQKK2NoYW5nZV9hdHRyKGNodHlwZSBhdHRyKQoreworICAgIGlmIChwX29wdCkgeworCXZpZHB1dHMoYXR0ciwgb3V0Yyk7CisgICAgfSBlbHNlIHsKKwl2aWRhdHRyKGF0dHIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3Rlc3RfdmlkcHV0cyh2b2lkKQoreworICAgIGZwcmludGYobXlfZnAsICJOYW1lOiAiKTsKKyAgICBjaGFuZ2VfYXR0cihBX0JPTEQpOworICAgIGZwdXRzKCJCb2xkIiwgbXlfZnApOworICAgIGNoYW5nZV9hdHRyKEFfUkVWRVJTRSk7CisgICAgZnB1dHMoIiBSZXZlcnNlIiwgbXlfZnApOworICAgIGNoYW5nZV9hdHRyKEFfTk9STUFMKTsKKyAgICBmcHV0cygiXG4iLCBteV9mcCk7Cit9CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICp0YmxbXSA9CisgICAgeworCSJVc2FnZTogdGVzdF92aWRwdXRzIFtvcHRpb25zXSIKKwksIiIKKwksIk9wdGlvbnM6IgorCSwiICAtZSAgICAgIHVzZSBzdGRlcnIgKGRlZmF1bHQgc3Rkb3V0KSIKKwksIiAgLXAgICAgICB1c2UgdmlkcHV0cyAoZGVmYXVsdCB2aWRhdHRyKSIKKyAgICB9OworICAgIHVuc2lnbmVkIG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRih0YmwpOyArK24pCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGJsW25dKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgY2g7CisKKyAgICBteV9mcCA9IHN0ZG91dDsKKworICAgIHdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImVwIikpICE9IC0xKSB7CisJc3dpdGNoIChjaCkgeworCWNhc2UgJ2UnOgorCSAgICBteV9mcCA9IHN0ZGVycjsKKwkgICAgYnJlYWs7CisJY2FzZSAncCc6CisJICAgIHBfb3B0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBpZiAob3B0aW5kIDwgYXJnYykKKwl1c2FnZSgpOworCisgICAgc2V0dXB0ZXJtKChjaGFyICopIDAsIDEsIChpbnQgKikgMCk7CisgICAgdGVzdF92aWRwdXRzKCk7CisgICAgY2xlYW51cCgpOworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CisjZWxzZQoraW50CittYWluKGludCBhcmdjIEdDQ19VTlVTRUQsCisgICAgIGNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIHByb2dyYW0gcmVxdWlyZXMgdGVybWluZm9cbiIpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0YWRkY2guYyBiL3Rlc3QvdGVzdGFkZGNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NhZGFiOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdGFkZGNoLmMKQEAgLTAsMCArMSw4OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEzLDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBUaGlzIGlzIGFuIGV4YW1wbGUgd3JpdHRlbiBieSBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkB5YXJzLmZyZWUubmV0PiwKKyAqIHRvIGRlbW9uc3RyYXRlIGFuIGluY29uc2lzdGVuY3kgYmV0d2VlbiBuY3Vyc2VzIGFuZCBTVnI0IGN1cnNlcy4KKyAqCisgKiAkSWQ6IHRlc3RhZGRjaC5jLHYgMS4xMiAyMDE0LzA4LzAyIDIzOjExOjIwIHRvbSBFeHAgJAorICovCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKK3N0YXRpYyB2b2lkCithdHRyX2FkZHN0cihjb25zdCBjaGFyICpzLCBjaHR5cGUgYSkKK3sKKyAgICB3aGlsZSAoKnMpCisJYWRkY2goKCh1bnNpZ25lZCBjaGFyKSAoKnMrKykpIHwgYSk7Cit9CisKK2ludAorbWFpbigKKwlpbnQgYXJnYyBHQ0NfVU5VU0VELAorCWNoYXIgKmFyZ3ZbXUdDQ19VTlVTRUQpCit7CisgICAgdW5zaWduZWQgaTsKKyAgICBjaHR5cGUgYmFjaywgc2V0LCBhdHRyOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgaW5pdHNjcigpOworICAgIHN0YXJ0X2NvbG9yKCk7CisgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKyAgICBpbml0X3BhaXIoMiwgQ09MT1JfV0hJVEUsIENPTE9SX1JFRCk7CisgICAgaW5pdF9wYWlyKDMsIENPTE9SX0JMQUNLLCBDT0xPUl9NQUdFTlRBKTsKKyAgICBpbml0X3BhaXIoNCwgQ09MT1JfQkxBQ0ssIENPTE9SX0dSRUVOKTsKKyAgICBpbml0X3BhaXIoNSwgQ09MT1JfQkxBQ0ssIENPTE9SX0NZQU4pOworICAgIGluaXRfcGFpcig2LCBDT0xPUl9CTEFDSywgQ09MT1JfWUVMTE9XKTsKKyAgICBpbml0X3BhaXIoNywgQ09MT1JfQkxBQ0ssIENPTE9SX1dISVRFKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwliYWNrID0gKGkgJiAxKSA/IEFfQk9MRCB8ICdCJyA6ICcgJzsKKwlzZXQgPSAoaSAmIDIpID8gQV9SRVZFUlNFIDogMDsKKwlhdHRyID0gKGNodHlwZSkgKChpICYgNCkgPyBDT0xPUl9QQUlSKDQpIDogMCk7CisKKwlia2dkc2V0KGJhY2spOworCSh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoc2V0LCAwKSk7CisKKwlhdHRyX2FkZHN0cigiVGVzdCBzdHJpbmcgd2l0aCBzcGFjZXMgLT4gICA8LVxuIiwgYXR0cik7CisgICAgfQorICAgIGFkZGNoKCdcbicpOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwliYWNrID0gKGkgJiAxKSA/IChBX0JPTEQgfCAnQicgfCAoY2h0eXBlKSBDT0xPUl9QQUlSKDEpKSA6ICcgJzsKKwlzZXQgPSAoaSAmIDIpID8gKEFfUkVWRVJTRSB8IChjaHR5cGUpIENPTE9SX1BBSVIoMikpIDogMDsKKwlhdHRyID0gKGNodHlwZSkgKChpICYgNCkgPyAoY2h0eXBlKSBDT0xPUl9QQUlSKDQpIDogMCk7CisKKwlia2dkc2V0KGJhY2spOworCSh2b2lkKSBhdHRyc2V0KEF0dHJBcmcoc2V0LCAwKSk7CisKKwlhdHRyX2FkZHN0cigiVGVzdCBzdHJpbmcgd2l0aCBzcGFjZXMgLT4gICA8LVxuIiwgYXR0cik7CisgICAgfQorCisgICAgZ2V0Y2goKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0Y3Vycy5jIGIvdGVzdC90ZXN0Y3Vycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNDRhMmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3RjdXJzLmMKQEAgLTAsMCArMSw3NjIgQEAKKy8qCisgKiBUaGlzIGlzIGEgdGVzdCBwcm9ncmFtIGZvciB0aGUgUERDdXJzZXMgc2NyZWVuIHBhY2thZ2UgZm9yIElCTSBQQyB0eXBlCisgKiBtYWNoaW5lcy4KKyAqCisgKiBUaGlzIHByb2dyYW0gd2FzIHdyaXR0ZW4gYnkgSm9obiBCdXJuZWxsIChqb2huYkBrZWEuYW0uZHNpci5nb3Z0Lm56KQorICogIHdycyg1LzI4LzkzKSAtLSBtb2RpZmllZCB0byBiZSBjb25zaXN0ZW50IChwZXJmb3JtIGlkZW50aWNhbGx5KSB3aXRoIGVpdGhlcgorICogICAgICAgICAgICAgICAgICBQREN1cnNlcyBvciB1bmRlciBVbml4IFN5c3RlbSBWLCBSNAorICoKKyAqICRJZDogdGVzdGN1cnMuYyx2IDEuNTAgMjAxNS8wNy8wNSAwMDoxMToxMCB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBkZWZpbmVkKFhDVVJTRVMpCitjaGFyICpYQ3Vyc2VzUHJvZ3JhbU5hbWUgPSAidGVzdGN1cnMiOworI2VuZGlmCisKK3N0YXRpYyBpbnQgaW5pdFRlc3QoV0lORE9XICoqKTsKK3N0YXRpYyB2b2lkIGRpc3BsYXlfbWVudShpbnQsIGludCk7CitzdGF0aWMgdm9pZCBpbnB1dFRlc3QoV0lORE9XICopOworc3RhdGljIHZvaWQgaW50cm9UZXN0KFdJTkRPVyAqKTsKK3N0YXRpYyB2b2lkIG91dHB1dFRlc3QoV0lORE9XICopOworc3RhdGljIHZvaWQgcGFkVGVzdChXSU5ET1cgKik7CitzdGF0aWMgdm9pZCBzY3JvbGxUZXN0KFdJTkRPVyAqKTsKKyNpZiBkZWZpbmVkKFBEQ1VSU0VTKSAmJiAhZGVmaW5lZChYQ1VSU0VTKQorc3RhdGljIHZvaWQgcmVzaXplVGVzdChXSU5ET1cgKik7CisjZW5kaWYKKworc3RydWN0IGNvbW1hbmRzIHsKKyAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKnRleHQ7CisgICAgdm9pZCAoKmZ1bmN0aW9uKSAoV0lORE9XICopOworfTsKK3R5cGVkZWYgc3RydWN0IGNvbW1hbmRzIENPTU1BTkQ7CisKK3N0YXRpYyBjb25zdCBDT01NQU5EIGNvbW1hbmRbXSA9Cit7CisgICAgeyJHZW5lcmFsIFRlc3QiLCBpbnRyb1Rlc3R9LAorICAgIHsiUGFkIFRlc3QiLCBwYWRUZXN0fSwKKyNpZiBkZWZpbmVkKFBEQ1VSU0VTKSAmJiAhZGVmaW5lZChYQ1VSU0VTKQorICAgIHsiUmVzaXplIFRlc3QiLCByZXNpemVUZXN0fSwKKyNlbmRpZgorICAgIHsiU2Nyb2xsIFRlc3QiLCBzY3JvbGxUZXN0fSwKKyAgICB7IklucHV0IFRlc3QiLCBpbnB1dFRlc3R9LAorICAgIHsiT3V0cHV0IFRlc3QiLCBvdXRwdXRUZXN0fQorfTsKKyNkZWZpbmUgTUFYX09QVElPTlMgKGludCkgU0laRU9GKGNvbW1hbmQpCisKK3N0YXRpYyBpbnQgd2lkdGgsIGhlaWdodDsKKworaW50CittYWluKAorCWludCBhcmdjIEdDQ19VTlVTRUQsCisJY2hhciAqYXJndltdR0NDX1VOVVNFRCkKK3sKKyAgICBXSU5ET1cgKndpbjsKKyAgICBpbnQga2V5OworICAgIGludCBvbGRfb3B0aW9uID0gKC0xKTsKKyAgICBpbnQgbmV3X29wdGlvbiA9IDA7CisgICAgYm9vbCBxdWl0ID0gRkFMU0U7CisgICAgaW50IG47CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyNpZmRlZiBQRENERUJVRworICAgIFBEQ19kZWJ1ZygidGVzdGN1cnMgc3RhcnRlZFxuIik7CisjZW5kaWYKKyAgICBpZiAoIWluaXRUZXN0KCZ3aW4pKQorCUV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisKKyAgICBlcmFzZSgpOworICAgIGRpc3BsYXlfbWVudShvbGRfb3B0aW9uLCBuZXdfb3B0aW9uKTsKKyAgICBmb3IgKDs7KSB7CisjaWZkZWYgQV9DT0xPUgorCWlmIChoYXNfY29sb3JzKCkpIHsKKwkgICAgaW5pdF9wYWlyKDEsIENPTE9SX1dISVRFLCBDT0xPUl9CTFVFKTsKKwkgICAgd2JrZ2Qod2luLCAoY2h0eXBlKSBDT0xPUl9QQUlSKDEpKTsKKwl9IGVsc2UKKwkgICAgd2JrZ2Qod2luLCBBX1JFVkVSU0UpOworI2Vsc2UKKwl3YmtnZCh3aW4sIEFfUkVWRVJTRSk7CisjZW5kaWYKKwl3ZXJhc2Uod2luKTsKKworCW5vZWNobygpOworCWtleXBhZChzdGRzY3IsIFRSVUUpOworCXJhdygpOworCWtleSA9IGdldGNoKCk7CisJaWYgKGtleSA8IEtFWV9NSU4gJiYga2V5ID4gMCAmJiBpc2FscGhhKGtleSkpIHsKKwkgICAgaWYgKGlzbG93ZXIoa2V5KSkKKwkJa2V5ID0gdG91cHBlcihrZXkpOworCSAgICBmb3IgKG4gPSAwOyBuIDwgTUFYX09QVElPTlM7ICsrbikgeworCQlpZiAoa2V5ID09IGNvbW1hbmRbbl0udGV4dFswXSkgeworCQkgICAgZGlzcGxheV9tZW51KG9sZF9vcHRpb24sIG5ld19vcHRpb24gPSBuKTsKKwkJICAgIGtleSA9ICcgJzsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwl9CisJc3dpdGNoIChrZXkpIHsKKwljYXNlIDEwOgorCWNhc2UgMTM6CisJY2FzZSBLRVlfRU5URVI6CisJICAgIGVyYXNlKCk7CisJICAgIHJlZnJlc2goKTsKKwkgICAgKCpjb21tYW5kW25ld19vcHRpb25dLmZ1bmN0aW9uKSAod2luKTsKKwkgICAgZXJhc2UoKTsKKwkgICAgZGlzcGxheV9tZW51KG9sZF9vcHRpb24sIG5ld19vcHRpb24pOworCSAgICBicmVhazsKKwljYXNlIEtFWV9VUDoKKwkgICAgbmV3X29wdGlvbiA9ICgobmV3X29wdGlvbiA9PSAwKQorCQkJICA/IG5ld19vcHRpb24KKwkJCSAgOiBuZXdfb3B0aW9uIC0gMSk7CisJICAgIGRpc3BsYXlfbWVudShvbGRfb3B0aW9uLCBuZXdfb3B0aW9uKTsKKwkgICAgYnJlYWs7CisJY2FzZSBLRVlfRE9XTjoKKwkgICAgbmV3X29wdGlvbiA9ICgobmV3X29wdGlvbiA9PSAoTUFYX09QVElPTlMgLSAxKSkKKwkJCSAgPyBuZXdfb3B0aW9uCisJCQkgIDogbmV3X29wdGlvbiArIDEpOworCSAgICBkaXNwbGF5X21lbnUob2xkX29wdGlvbiwgbmV3X29wdGlvbik7CisJICAgIGJyZWFrOworCWNhc2UgJ1EnOgorCWNhc2UgJ3EnOgorCSAgICBxdWl0ID0gVFJVRTsKKwkgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgYmVlcCgpOworCSAgICBicmVhazsKKwljYXNlICcgJzoKKwkgICAgYnJlYWs7CisJfQorCWlmIChxdWl0ID09IFRSVUUpCisJICAgIGJyZWFrOworICAgIH0KKworICAgIGRlbHdpbih3aW4pOworCisgICAgZW5kd2luKCk7CisjaWZkZWYgWENVUlNFUworICAgIFhDdXJzZXNFeGl0KCk7CisjZW5kaWYKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQorCitzdGF0aWMgdm9pZAorQ29udGludWUoV0lORE9XICp3aW4pCit7CisgICAgaW50IHkxID0gZ2V0bWF4eSh3aW4pOworICAgIGludCB4MSA9IGdldG1heHgod2luKTsKKyAgICBpbnQgeTAgPSB5MSA8IDEwID8geTEgOiAxMDsKKyAgICBpbnQgeDAgPSAxOworICAgIGNodHlwZSBzYXZlOworCisgICAgc2F2ZSA9IG12d2luY2god2luLCB5MCwgeDEgLSAxKTsKKworICAgIE12V0FkZFN0cih3aW4sIHkwLCB4MCwgIiBQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlIik7CisgICAgd2NscnRvZW9sKHdpbik7CisgICAgZ2V0eXgod2luLCB5MCwgeDApOworCisgICAgTXZXQWRkQ2god2luLCB5MCwgeDEgLSAxLCBzYXZlKTsKKworICAgIHdtb3ZlKHdpbiwgeTAsIHgwKTsKKyAgICByYXcoKTsKKyAgICB3Z2V0Y2god2luKTsKK30KKworc3RhdGljIGludAoraW5pdFRlc3QoV0lORE9XICoqd2luKQoreworI2lmZGVmIFBEQ0RFQlVHCisgICAgUERDX2RlYnVnKCJpbml0VGVzdCBjYWxsZWRcbiIpOworI2VuZGlmCisjaWZkZWYgVFJBQ0UKKyAgICB0cmFjZShUUkFDRV9NQVhJTVVNKTsKKyNlbmRpZgorICAgIGluaXRzY3IoKTsKKyNpZmRlZiBQRENERUJVRworICAgIFBEQ19kZWJ1ZygiYWZ0ZXIgaW5pdHNjcigpXG4iKTsKKyNlbmRpZgorI2lmZGVmIEFfQ09MT1IKKyAgICBpZiAoaGFzX2NvbG9ycygpKQorCXN0YXJ0X2NvbG9yKCk7CisjZW5kaWYKKyAgICB3aWR0aCA9IDYwOworICAgIGhlaWdodCA9IDEzOwkJLyogQ3JlYXRlIGEgZHJhd2luZyB3aW5kb3cgKi8KKyAgICAqd2luID0gbmV3d2luKGhlaWdodCwgd2lkdGgsIChMSU5FUyAtIGhlaWdodCkgLyAyLCAoQ09MUyAtIHdpZHRoKSAvIDIpOworICAgIGlmICgqd2luID09IE5VTEwpIHsKKwllbmR3aW4oKTsKKwlyZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkCitpbnRyb1Rlc3QoV0lORE9XICp3aW4pCit7CisgICAgd21vdmUod2luLCBoZWlnaHQgLyAyIC0gNSwgd2lkdGggLyAyKTsKKyAgICB3dmxpbmUod2luLCBBQ1NfVkxJTkUsIDEwKTsKKyAgICB3bW92ZSh3aW4sIGhlaWdodCAvIDIsIHdpZHRoIC8gMiAtIDEwKTsKKyAgICB3aGxpbmUod2luLCBBQ1NfSExJTkUsIDIwKTsKKyAgICBDb250aW51ZSh3aW4pOworCisgICAgYmVlcCgpOworICAgIHdlcmFzZSh3aW4pOworCisgICAgYm94KHdpbiwgQUNTX1ZMSU5FLCBBQ1NfSExJTkUpOworICAgIHdyZWZyZXNoKHdpbik7CisgICAgY2JyZWFrKCk7CisgICAgTXZXQWRkU3RyKHdpbiwgMSwgMSwKKwkgICAgICAiWW91IHNob3VsZCBoYXZlIHJlY3RhbmdsZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4iKTsKKyAgICBNdldBZGRTdHIod2luLCAyLCAxLCAiWW91IHNob3VsZCBoYXZlIGhlYXJkIGEgYmVlcCIpOworICAgIENvbnRpbnVlKHdpbik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorc2Nyb2xsVGVzdChXSU5ET1cgKndpbikKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgaGFsZjsKKyAgICBpbnQgT2xkWTsKKyAgICBOQ1VSU0VTX0NPTlNUIGNoYXIgKk1lc3NhZ2UgPSAiVGhlIHdpbmRvdyB3aWxsIG5vdyBzY3JvbGwgc2xvd2x5IjsKKworICAgIHdjbGVhcih3aW4pOworICAgIE9sZFkgPSBnZXRtYXh5KHdpbik7CisgICAgaGFsZiA9IE9sZFkgLyAyOworICAgIE12V0FkZFN0cih3aW4sIE9sZFkgLSAyLCAxLCBNZXNzYWdlKTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIHNjcm9sbG9rKHdpbiwgVFJVRSk7CisgICAgZm9yIChpID0gMTsgaSA8PSBPbGRZOyBpKyspIHsKKwluYXBtcyg2MDApOworCXNjcm9sbCh3aW4pOworCXdyZWZyZXNoKHdpbik7CisgICAgfQorCisgICAgd2VyYXNlKHdpbik7CisgICAgZm9yIChpID0gMTsgaSA8IE9sZFk7IGkrKykgeworCU12V1ByaW50dyh3aW4sIGksIDEsICJMaW5lICVkIiwgaSk7CisgICAgfQorICAgIE12V1ByaW50dyh3aW4sIE9sZFkgLSAyLCAxLCAiVGhlIHRvcCBvZiB0aGUgd2luZG93IHdpbGwgc2Nyb2xsIik7CisgICAgd21vdmUod2luLCAxLCAxKTsKKyAgICB3c2V0c2NycmVnKHdpbiwgMCwgaGFsZiAtIDEpOworICAgIGJveCh3aW4sIEFDU19WTElORSwgQUNTX0hMSU5FKTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIGZvciAoaSA9IDE7IGkgPD0gaGFsZjsgaSsrKSB7CisJbmFwbXMoNjAwKTsKKwlzY3JvbGwod2luKTsKKwlib3god2luLCBBQ1NfVkxJTkUsIEFDU19ITElORSk7CisJd3JlZnJlc2god2luKTsKKyAgICB9CisKKyAgICB3ZXJhc2Uod2luKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgT2xkWTsgaSsrKSB7CisJTXZXUHJpbnR3KHdpbiwgaSwgMSwgIkxpbmUgJWQiLCBpKTsKKyAgICB9CisgICAgTXZXUHJpbnR3KHdpbiwgMSwgMSwgIlRoZSBib3R0b20gb2YgdGhlIHdpbmRvdyB3aWxsIHNjcm9sbCIpOworICAgIHdtb3ZlKHdpbiwgT2xkWSAtIDIsIDEpOworICAgIHdzZXRzY3JyZWcod2luLCBoYWxmLCAtLU9sZFkpOworICAgIGJveCh3aW4sIEFDU19WTElORSwgQUNTX0hMSU5FKTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIGZvciAoaSA9IGhhbGY7IGkgPD0gT2xkWTsgaSsrKSB7CisJbmFwbXMoNjAwKTsKKwl3c2NybCh3aW4sIC0xKTsKKwlib3god2luLCBBQ1NfVkxJTkUsIEFDU19ITElORSk7CisJd3JlZnJlc2god2luKTsKKyAgICB9CisgICAgd3NldHNjcnJlZyh3aW4sIDAsIE9sZFkpOworfQorCitzdGF0aWMgdm9pZAoraW5wdXRUZXN0KFdJTkRPVyAqd2luKQoreworICAgIGludCBhbnN3ZXJlZDsKKyAgICBpbnQgcmVwZWF0OworICAgIGludCB3LCBoLCBieCwgYnksIHN3LCBzaCwgaSwgYywgbnVtOworICAgIGNoYXIgYnVmZmVyWzgwXTsKKyAgICBXSU5ET1cgKnN1YldpbjsKKyAgICB3Y2xlYXIod2luKTsKKworICAgIGdldG1heHl4KHdpbiwgaCwgdyk7CisgICAgZ2V0YmVneXgod2luLCBieSwgYngpOworICAgIHN3ID0gdyAvIDM7CisgICAgc2ggPSBoIC8gMzsKKyAgICBpZiAoKHN1YldpbiA9IHN1Yndpbih3aW4sIHNoLCBzdywgYnkgKyBoIC0gc2ggLSAyLCBieCArIHcgLSBzdyAtIDIpKSA9PSBOVUxMKQorCXJldHVybjsKKworI2lmZGVmIEFfQ09MT1IKKyAgICBpZiAoaGFzX2NvbG9ycygpKSB7CisJaW5pdF9wYWlyKDIsIENPTE9SX1dISVRFLCBDT0xPUl9SRUQpOworCXdia2dkKHN1YldpbiwgKGNodHlwZSkgQ09MT1JfUEFJUigyKSB8IEFfQk9MRCk7CisgICAgfSBlbHNlCisJd2JrZ2Qoc3ViV2luLCBBX0JPTEQpOworI2Vsc2UKKyAgICB3YmtnZChzdWJXaW4sIEFfQk9MRCk7CisjZW5kaWYKKyAgICBib3goc3ViV2luLCBBQ1NfVkxJTkUsIEFDU19ITElORSk7CisgICAgd3JlZnJlc2god2luKTsKKworICAgIG5vY2JyZWFrKCk7CisgICAgTXZXQWRkU3RyKHdpbiwgMiwgMSwgIlByZXNzIHNvbWUga2V5cyBmb3IgNSBzZWNvbmRzIik7CisgICAgTXZXQWRkU3RyKHdpbiwgMSwgMSwgIlByZXNzaW5nIF5DIHNob3VsZCBkbyBub3RoaW5nIik7CisgICAgd3JlZnJlc2god2luKTsKKworICAgIHdlcmFzZShzdWJXaW4pOworICAgIGJveChzdWJXaW4sIEFDU19WTElORSwgQUNTX0hMSU5FKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7CisJTXZXUHJpbnR3KHN1YldpbiwgMSwgMSwgIlRpbWUgPSAlZCIsIGkpOworCXdyZWZyZXNoKHN1Yldpbik7CisJbmFwbXMoMTAwMCk7CisJZmx1c2hpbnAoKTsKKyAgICB9CisKKyAgICBkZWx3aW4oc3ViV2luKTsKKyAgICB3ZXJhc2Uod2luKTsKKyAgICBmbGFzaCgpOworICAgIHdyZWZyZXNoKHdpbik7CisgICAgbmFwbXMoNTAwKTsKKworICAgIE12V0FkZFN0cih3aW4sIDIsIDEsICJQcmVzcyBhIGtleSwgZm9sbG93ZWQgYnkgRU5URVIiKTsKKyAgICB3bW92ZSh3aW4sIDksIDEwKTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIGVjaG8oKTsKKyAgICBub3JhdygpOworICAgIHdnZXRjaCh3aW4pOworICAgIGZsdXNoaW5wKCk7CisKKyAgICB3bW92ZSh3aW4sIDksIDEwKTsKKyAgICB3ZGVsY2god2luKTsKKyAgICBNdldBZGRTdHIod2luLCA0LCAxLCAiVGhlIGNoYXJhY3RlciBzaG91bGQgbm93IGhhdmUgYmVlbiBkZWxldGVkIik7CisgICAgQ29udGludWUod2luKTsKKworICAgIHdjbGVhcih3aW4pOworICAgIE12V0FkZFN0cih3aW4sIDEsIDEsICJQcmVzcyBrZXlzIChvciBtb3VzZSBidXR0b25zKSB0byBzaG93IHRoZWlyIG5hbWVzIik7CisgICAgTXZXQWRkU3RyKHdpbiwgMiwgMSwgIlByZXNzIHNwYWNlYmFyIHRvIGZpbmlzaCIpOworICAgIHdyZWZyZXNoKHdpbik7CisKKyAgICBrZXlwYWQod2luLCBUUlVFKTsKKyAgICByYXcoKTsKKyAgICBub2VjaG8oKTsKKworI2lmIEhBVkVfVFlQRUFIRUFECisgICAgdHlwZWFoZWFkKC0xKTsKKyNlbmRpZgorCisjaWZkZWYgTkNVUlNFU19NT1VTRV9WRVJTSU9OCisgICAgbW91c2VtYXNrKEFMTF9NT1VTRV9FVkVOVFMsIChtbWFza190ICopIDApOworI2VuZGlmCisjaWYgZGVmaW5lZChQRENVUlNFUykKKyAgICBtb3VzZV9zZXQoQUxMX01PVVNFX0VWRU5UUyk7CisjZW5kaWYKKworICAgIGZvciAoOzspIHsKKwl3bW92ZSh3aW4sIDMsIDUpOworCWMgPSB3Z2V0Y2god2luKTsKKwl3Y2xydG9ib3Qod2luKTsKKwlpZiAoYyA+PSBLRVlfTUlOKQorCSAgICB3cHJpbnR3KHdpbiwgIktleSBQcmVzc2VkOiAlcyIsIGtleW5hbWUoYykpOworCWVsc2UgaWYgKGlzcHJpbnQoYykpCisJICAgIHdwcmludHcod2luLCAiS2V5IFByZXNzZWQ6ICVjIiwgYyk7CisJZWxzZQorCSAgICB3cHJpbnR3KHdpbiwgIktleSBQcmVzc2VkOiAlcyIsIHVuY3RybChVQ2hhcihjKSkpOworI2lmZGVmIEtFWV9NT1VTRQorCWlmIChjID09IEtFWV9NT1VTRSkgeworI2lmIGRlZmluZWQoTkNVUlNFU19NT1VTRV9WRVJTSU9OKQorI2RlZmluZSBCdXR0b25DaGFuZ2VkKG4pICgoZXZlbnQuYnN0YXRlKSAmIE5DVVJTRVNfTU9VU0VfTUFTSygxLCAwMzcpKQorI2RlZmluZSBCdXR0b25QcmVzc2VkKG4pICgoZXZlbnQuYnN0YXRlKSAmIE5DVVJTRVNfTU9VU0VfTUFTSygxLCBOQ1VSU0VTX0JVVFRPTl9QUkVTU0VEKSkKKyNkZWZpbmUgQnV0dG9uRG91YmxlKG4pICAoKGV2ZW50LmJzdGF0ZSkgJiBOQ1VSU0VTX01PVVNFX01BU0soMSwgTkNVUlNFU19ET1VCTEVfQ0xJQ0tFRCkpCisjZGVmaW5lIEJ1dHRvblRyaXBsZShuKSAgKChldmVudC5ic3RhdGUpICYgTkNVUlNFU19NT1VTRV9NQVNLKDEsIE5DVVJTRVNfVFJJUExFX0NMSUNLRUQpKQorI2RlZmluZSBCdXR0b25SZWxlYXNlKG4pICgoZXZlbnQuYnN0YXRlKSAmIE5DVVJTRVNfTU9VU0VfTUFTSygxLCBOQ1VSU0VTX0JVVFRPTl9SRUxFQVNFRCkpCisJICAgIE1FVkVOVCBldmVudDsKKwkgICAgaW50IGJ1dHRvbiA9IDA7CisKKwkgICAgZ2V0bW91c2UoJmV2ZW50KTsKKwkgICAgaWYgKEJ1dHRvbkNoYW5nZWQoMSkpCisJCWJ1dHRvbiA9IDE7CisJICAgIGVsc2UgaWYgKEJ1dHRvbkNoYW5nZWQoMikpCisJCWJ1dHRvbiA9IDI7CisJICAgIGVsc2UgaWYgKEJ1dHRvbkNoYW5nZWQoMykpCisJCWJ1dHRvbiA9IDM7CisJICAgIGVsc2UKKwkJYnV0dG9uID0gMDsKKwkgICAgd21vdmUod2luLCA0LCAxOCk7CisJICAgIHdwcmludHcod2luLCAiQnV0dG9uICVkOiAiLCBidXR0b24pOworCSAgICBpZiAoQnV0dG9uUHJlc3NlZChidXR0b24pKQorCQl3cHJpbnR3KHdpbiwgInByZXNzZWQ6ICIpOworCSAgICBlbHNlIGlmIChCdXR0b25Eb3VibGUoYnV0dG9uKSkKKwkJd3ByaW50dyh3aW4sICJkb3VibGU6ICIpOworCSAgICBlbHNlIGlmIChCdXR0b25UcmlwbGUoYnV0dG9uKSkKKwkJd3ByaW50dyh3aW4sICJ0cmlwbGU6ICIpOworCSAgICBlbHNlCisJCXdwcmludHcod2luLCAicmVsZWFzZWQ6ICIpOworCSAgICB3cHJpbnR3KHdpbiwgIiBQb3NpdGlvbjogWTogJWQgWDogJWQiLCBldmVudC55LCBldmVudC54KTsKKyNlbGlmIGRlZmluZWQoUERDVVJTRVMpCisJICAgIGludCBidXR0b24gPSAwOworCSAgICByZXF1ZXN0X21vdXNlX3BvcygpOworCSAgICBpZiAoQlVUVE9OX0NIQU5HRUQoMSkpCisJCWJ1dHRvbiA9IDE7CisJICAgIGVsc2UgaWYgKEJVVFRPTl9DSEFOR0VEKDIpKQorCQlidXR0b24gPSAyOworCSAgICBlbHNlIGlmIChCVVRUT05fQ0hBTkdFRCgzKSkKKwkJYnV0dG9uID0gMzsKKwkgICAgZWxzZQorCQlidXR0b24gPSAwOworCSAgICB3bW92ZSh3aW4sIDQsIDE4KTsKKwkgICAgd3ByaW50dyh3aW4sICJCdXR0b24gJWQ6ICIsIGJ1dHRvbik7CisJICAgIGlmIChNT1VTRV9NT1ZFRCkKKwkJd3ByaW50dyh3aW4sICJtb3ZlZDogIik7CisJICAgIGVsc2UgaWYgKChCVVRUT05fU1RBVFVTKGJ1dHRvbikgJiBCVVRUT05fQUNUSU9OX01BU0spID09IEJVVFRPTl9QUkVTU0VEKQorCQl3cHJpbnR3KHdpbiwgInByZXNzZWQ6ICIpOworCSAgICBlbHNlIGlmICgoQlVUVE9OX1NUQVRVUyhidXR0b24pICYgQlVUVE9OX0FDVElPTl9NQVNLKSA9PSBCVVRUT05fRE9VQkxFX0NMSUNLRUQpCisJCXdwcmludHcod2luLCAiZG91YmxlOiAiKTsKKwkgICAgZWxzZQorCQl3cHJpbnR3KHdpbiwgInJlbGVhc2VkOiAiKTsKKwkgICAgd3ByaW50dyh3aW4sICIgUG9zaXRpb246IFk6ICVkIFg6ICVkIiwgTU9VU0VfWV9QT1MsIE1PVVNFX1hfUE9TKTsKKyNlbmRpZiAvKiBOQ1VSU0VTX1ZFUlNJT04gdnMgUERDVVJTRVMgKi8KKwl9CisjZW5kaWYgLyogS0VZX01PVVNFICovCisJd3JlZnJlc2god2luKTsKKwlpZiAoYyA9PSAnICcpCisJICAgIGJyZWFrOworICAgIH0KKyNpZiAwCisgICAgbm9kZWxheSh3aW4sIFRSVUUpOworICAgIHdnZXRjaCh3aW4pOworICAgIG5vZGVsYXkod2luLCBGQUxTRSk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKFBEQ1VSU0VTKQorICAgIG1vdXNlX3NldCgwTCk7CisjZW5kaWYKKyAgICByZWZyZXNoKCk7CisKKyAgICByZXBlYXQgPSAwOworICAgIGRvIHsKKwlzdGF0aWMgY29uc3QgY2hhciAqZm10W10gPQorCXsKKwkgICAgIiVkICUxMHMiLAorCSAgICAiJWQgJVthLXpBLVpdcyIsCisJICAgICIlZCAlW11bYS16QS1aXXMiLAorCSAgICAiJWQgJVteMC05XSIKKwl9OworCWNoYXIgKmZvcm1hdCA9IHN0cmR1cChmbXRbKHVuc2lnbmVkKSByZXBlYXQgJSBTSVpFT0YoZm10KV0pOworCisJd2NsZWFyKHdpbik7CisJTXZXQWRkU3RyKHdpbiwgMywgMiwgIlRoZSB3aW5kb3cgc2hvdWxkIGhhdmUgbW92ZWQiKTsKKwlNdldBZGRTdHIod2luLCA0LCAyLAorCQkgICJUaGlzIHRleHQgc2hvdWxkIGhhdmUgYXBwZWFyZWQgd2l0aG91dCB5b3UgcHJlc3NpbmcgYSBrZXkiKTsKKwlNdldQcmludHcod2luLCA2LCAyLAorCQkgICJTY2FubmluZyB3aXRoIGZvcm1hdCBcIiVzXCIiLCBmb3JtYXQpOworCW12d2luKHdpbiwgMiArIDIgKiAocmVwZWF0ICUgNCksIDEgKyAyICogKHJlcGVhdCAlIDQpKTsKKwllcmFzZSgpOworCXJlZnJlc2goKTsKKwl3cmVmcmVzaCh3aW4pOworCWVjaG8oKTsKKwlub3JhdygpOworCW51bSA9IDA7CisJKmJ1ZmZlciA9IDA7CisJYW5zd2VyZWQgPSBtdndzY2Fudyh3aW4sIDcsIDYsIGZvcm1hdCwgJm51bSwgYnVmZmVyKTsKKwlNdldQcmludHcod2luLCA4LCA2LAorCQkgICJTdHJpbmc6ICVzIE51bWJlcjogJWQgKCVkIHZhbHVlcyByZWFkKSIsCisJCSAgYnVmZmVyLCBudW0sIGFuc3dlcmVkKTsKKwlDb250aW51ZSh3aW4pOworCSsrcmVwZWF0OworCWZyZWUoZm9ybWF0KTsKKyAgICB9IHdoaWxlIChhbnN3ZXJlZCA+IDApOworfQorCitzdGF0aWMgdm9pZAorb3V0cHV0VGVzdChXSU5ET1cgKndpbikKK3sKKyAgICBXSU5ET1cgKndpbjE7CisgICAgY2hhciBCdWZmZXJbODBdOworICAgIGNodHlwZSBjaDsKKyAgICBpbnQgYnksIGJ4OworCisjaWYgIUhBVkVfVElHRVRTVFIKKyNpZiBIQVZFX1RHRVRFTlQKKyAgICBjaGFyIHRjX2J1ZmZlcls0MDk2XTsKKyAgICBjaGFyIHRjX3BhcnNlZFs0MDk2XTsKKyAgICBjaGFyICphcmVhX3BvaW50ZXIgPSB0Y19wYXJzZWQ7CisgICAgdGdldGVudCh0Y19idWZmZXIsIGdldGVudigiVEVSTSIpKTsKKyNlbHNlCisjZGVmaW5lIHRnZXRzdHIoYSxiKSAwCisjZW5kaWYKKyNlbmRpZiAvKiAhSEFWRV9USUdFVFNUUiAqLworCisgICAgbmwoKTsKKyAgICB3Y2xlYXIod2luKTsKKyAgICBNdldBZGRTdHIod2luLCAxLCAxLAorCSAgICAgICJZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgc2NyZWVuIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lciwgYW5kIHRoaXMgdGV4dCBzaG91bGQgaGF2ZSB3cmFwcGVkIik7CisgICAgbXZ3aW4od2luLCAyLCAxKTsKKyAgICB3YWRkc3RyKHdpbiwgIlxuVGhpcyB0ZXh0IHNob3VsZCBiZSBkb3duXG4iKTsKKyAgICB3YWRkc3RyKHdpbiwgImFuZCBicm9rZW4gaW50byB0d28gaGVyZSBeIik7CisgICAgQ29udGludWUod2luKTsKKworICAgIHdjbGVhcih3aW4pOworICAgIHdhdHRyb24od2luLCBBX0JPTEQpOworICAgIE12V0FkZFN0cih3aW4sIDEsIDEsICJBIG5ldyB3aW5kb3cgd2lsbCBhcHBlYXIgd2l0aCB0aGlzIHRleHQgaW4gaXQiKTsKKyAgICBNdldBZGRTdHIod2luLCA4LCAxLCAiUHJlc3MgYW55IGtleSB0byBjb250aW51ZSIpOworICAgIHdyZWZyZXNoKHdpbik7CisgICAgd2dldGNoKHdpbik7CisKKyAgICBnZXRiZWd5eCh3aW4sIGJ5LCBieCk7CisKKyAgICBpZiAoTElORVMgPCAyNCB8fCBDT0xTIDwgNzUpIHsKKwlNdldBZGRTdHIod2luLCA1LCAxLAorCQkgICJTb21lIHRlc3RzIGhhdmUgYmVlbiBza2lwcGVkIGFzIHRoZXkgcmVxdWlyZSBhIik7CisJTXZXQWRkU3RyKHdpbiwgNiwgMSwgImRpc3BsYXkgb2YgYXQgbGVhc3QgMjQgTElORVMgYnkgNzUgQ09MVU1OUyIpOworCUNvbnRpbnVlKHdpbik7CisgICAgfSBlbHNlIHsKKwl3aW4xID0gbmV3d2luKDEwLCA1MCwgMTQsIDI1KTsKKwlpZiAod2luMSA9PSBOVUxMKSB7CisJICAgIGVuZHdpbigpOworCSAgICByZXR1cm47CisJfQorI2lmZGVmIEFfQ09MT1IKKwlpZiAoaGFzX2NvbG9ycygpKSB7CisJICAgIGluaXRfcGFpcigzLCBDT0xPUl9CTFVFLCBDT0xPUl9XSElURSk7CisJICAgIHdia2dkKHdpbjEsIChjaHR5cGUpIENPTE9SX1BBSVIoMykpOworCX0gZWxzZQorCSAgICB3YmtnZCh3aW4xLCBBX05PUk1BTCk7CisjZWxzZQorCXdia2dkKHdpbjEsIEFfTk9STUFMKTsKKyNlbmRpZgorCXdjbGVhcih3aW4xKTsKKwlNdldBZGRTdHIod2luMSwgNSwgMSwKKwkJICAiVGhpcyB0ZXh0IHNob3VsZCBhcHBlYXI7IHVzaW5nIG92ZXJsYXkgb3B0aW9uIik7CisJY29weXdpbih3aW4sIHdpbjEsIDAsIDAsIDAsIDAsIDksIDQ5LCBUUlVFKTsKKworI2lmIGRlZmluZWQoUERDVVJTRVMpICYmICFkZWZpbmVkKFhDVVJTRVMpCisJYm94KHdpbjEsIDB4YjMsIDB4YzQpOworI2Vsc2UKKwlib3god2luMSwgQUNTX1ZMSU5FLCBBQ1NfSExJTkUpOworI2VuZGlmCisJd21vdmUod2luMSwgOCwgMjYpOworCXdyZWZyZXNoKHdpbjEpOworCXdnZXRjaCh3aW4xKTsKKworCXdjbGVhcih3aW4xKTsKKwl3YXR0cm9uKHdpbjEsIEFfQkxJTkspOworCU12V0FkZFN0cih3aW4xLCA0LCAxLAorCQkgICJUaGlzIGJsaW5raW5nIHRleHQgc2hvdWxkIGFwcGVhciBpbiBvbmx5IHRoZSBzZWNvbmQgd2luZG93Iik7CisJd2F0dHJvZmYod2luMSwgQV9CTElOSyk7CisJbXZ3aW4od2luMSwgYnksIGJ4KTsKKwlvdmVybGF5KHdpbiwgd2luMSk7CisJbXZ3aW4od2luMSwgMTQsIDI1KTsKKwl3bW92ZSh3aW4xLCA4LCAyNik7CisJd3JlZnJlc2god2luMSk7CisJd2dldGNoKHdpbjEpOworCWRlbHdpbih3aW4xKTsKKyAgICB9CisKKyAgICBjbGVhcigpOworICAgIHdjbGVhcih3aW4pOworICAgIHdyZWZyZXNoKHdpbik7CisgICAgTXZXQWRkU3RyKHdpbiwgNiwgMiwgIlRoaXMgbGluZSBzaG91bGRuJ3QgYXBwZWFyIik7CisgICAgTXZXQWRkU3RyKHdpbiwgNCwgMiwgIk9ubHkgaGFsZiBvZiB0aGUgbmV4dCBsaW5lIGlzIHZpc2libGUiKTsKKyAgICBNdldBZGRTdHIod2luLCA1LCAyLCAiT25seSBoYWxmIG9mIHRoZSBuZXh0IGxpbmUgaXMgdmlzaWJsZSIpOworICAgIHdtb3ZlKHdpbiwgNiwgMSk7CisgICAgd2NscnRvYm90KHdpbik7CisgICAgd21vdmUod2luLCA1LCAyMCk7CisgICAgd2NscnRvZW9sKHdpbik7CisgICAgTXZXQWRkU3RyKHdpbiwgOCwgMiwgIlRoaXMgbGluZSBhbHNvIHNob3VsZG4ndCBhcHBlYXIiKTsKKyAgICB3bW92ZSh3aW4sIDgsIDEpOworICAgIHdkZWxldGVsbih3aW4pOworICAgIENvbnRpbnVlKHdpbik7CisKKyAgICB3bW92ZSh3aW4sIDUsIDkpOworICAgIGNoID0gd2luY2god2luKTsKKworICAgIHdjbGVhcih3aW4pOworICAgIHdtb3ZlKHdpbiwgNiwgMik7CisgICAgd2FkZHN0cih3aW4sICJUaGUgbmV4dCBjaGFyIHNob3VsZCBiZSBsOiAgIik7CisgICAgd2luc2NoKHdpbiwgY2gpOworICAgIENvbnRpbnVlKHdpbik7CisKKyNpZiBIQVZFX1dJTlNTVFIKKyAgICAodm9pZCkgbXZ3aW5zc3RyKHdpbiwgNiwgMiwgIkExQjJDM0Q0RTUiKTsKKyAgICBDb250aW51ZSh3aW4pOworI2VuZGlmCisKKyAgICB3bW92ZSh3aW4sIDUsIDEpOworICAgIHdpbnNlcnRsbih3aW4pOworICAgIE12V0FkZFN0cih3aW4sIDUsIDIsICJUaGUgbGluZXMgYmVsb3cgc2hvdWxkIGhhdmUgbW92ZWQgZG93biIpOworICAgIENvbnRpbnVlKHdpbik7CisKKyAgICB3Y2xlYXIod2luKTsKKyAgICB3bW92ZSh3aW4sIDIsIDIpOworICAgIHdwcmludHcod2luLCAiVGhpcyBpcyBhIGZvcm1hdHRlZCBzdHJpbmcgaW4gYSB3aW5kb3c6ICVkICVzXG4iLCA0MiwKKwkgICAgImlzIGl0Iik7CisgICAgTXZXQWRkU3RyKHdpbiwgMTAsIDEsICJFbnRlciBhIHN0cmluZzogIik7CisgICAgd3JlZnJlc2god2luKTsKKyAgICBub3JhdygpOworICAgIGVjaG8oKTsKKyAgICAqQnVmZmVyID0gMDsKKyAgICB3c2Nhbncod2luLCAiJXMiLCBCdWZmZXIpOworCisgICAgcHJpbnR3KCJUaGlzIGlzIGEgZm9ybWF0dGVkIHN0cmluZyBpbiBzdGRzY3I6ICVkICVzXG4iLCA0MiwgImlzIGl0Iik7CisgICAgTXZBZGRTdHIoMTAsIDEsICJFbnRlciBhIHN0cmluZzogIik7CisgICAgKkJ1ZmZlciA9IDA7CisgICAgc2NhbncoIiVzIiwgQnVmZmVyKTsKKworICAgIGlmIChUSUdFVFNUUigiY3Z2aXMiLCAidnMiKSAhPSAwKSB7CisJd2NsZWFyKHdpbik7CisJY3Vyc19zZXQoMik7CisJTXZXQWRkU3RyKHdpbiwgMSwgMSwgIlRoZSBjdXJzb3Igc2hvdWxkIGFwcGVhciBhcyBhIGJsb2NrICh2aXNpYmxlKSIpOworCUNvbnRpbnVlKHdpbik7CisgICAgfQorCisgICAgaWYgKFRJR0VUU1RSKCJjaXZpcyIsICJ2aSIpICE9IDApIHsKKwl3Y2xlYXIod2luKTsKKwljdXJzX3NldCgwKTsKKwlNdldBZGRTdHIod2luLCAxLCAxLAorCQkgICJUaGUgY3Vyc29yIHNob3VsZCBoYXZlIGRpc2FwcGVhcmVkIChpbnZpc2libGUpIik7CisJQ29udGludWUod2luKTsKKyAgICB9CisKKyAgICBpZiAoVElHRVRTVFIoImNub3JtIiwgInZlIikgIT0gMCkgeworCXdjbGVhcih3aW4pOworCWN1cnNfc2V0KDEpOworCU12V0FkZFN0cih3aW4sIDEsIDEsICJUaGUgY3Vyc29yIHNob3VsZCBiZSBhbiB1bmRlcmxpbmUgKG5vcm1hbCkiKTsKKwlDb250aW51ZSh3aW4pOworICAgIH0KKyNpZmRlZiBBX0NPTE9SCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXdjbGVhcih3aW4pOworCU12V0FkZFN0cih3aW4sIDEsIDEsICJDb2xvcnMgc2hvdWxkIGNoYW5nZSBhZnRlciB5b3UgcHJlc3MgYSBrZXkiKTsKKwlDb250aW51ZSh3aW4pOworCWluaXRfcGFpcigxLCBDT0xPUl9SRUQsIENPTE9SX1dISVRFKTsKKwl3cmVmcmVzaCh3aW4pOworICAgIH0KKyNlbmRpZgorCisgICAgd2VyYXNlKHdpbik7CisKKyNpZiBIQVZFX1RFUk1OQU1FCisgICAgTXZXQWRkU3RyKHdpbiwgMSwgMSwgIkluZm9ybWF0aW9uIEFib3V0IFlvdXIgVGVybWluYWwiKTsKKyAgICBNdldBZGRTdHIod2luLCAzLCAxLCB0ZXJtbmFtZSgpKTsKKyAgICBNdldBZGRTdHIod2luLCA0LCAxLCBsb25nbmFtZSgpKTsKKyAgICBpZiAodGVybWF0dHJzKCkgJiBBX0JMSU5LKQorCU12V0FkZFN0cih3aW4sIDUsIDEsICJUaGlzIHRlcm1pbmFsIHN1cHBvcnRzIGJsaW5raW5nLiIpOworICAgIGVsc2UKKwlNdldBZGRTdHIod2luLCA1LCAxLCAiVGhpcyB0ZXJtaW5hbCBkb2VzIE5PVCBzdXBwb3J0IGJsaW5raW5nLiIpOworI2VuZGlmCisKKyAgICAodm9pZCkgbXZ3YWRkbnN0cih3aW4sIDcsIDUsICJIYXZlIGEgbmljZSBkYXkhb2siLCAxNik7CisgICAgd3JlZnJlc2god2luKTsKKworICAgICh2b2lkKSBtdndpbm5zdHIod2luLCA3LCA1LCBCdWZmZXIsIDE4KTsKKyAgICBNdkFkZFN0cihMSU5FUyAtIDIsIDEwLCBCdWZmZXIpOworICAgIHJlZnJlc2goKTsKKyAgICBDb250aW51ZSh3aW4pOworfQorCisjaWYgZGVmaW5lZChQRENVUlNFUykgJiYgIWRlZmluZWQoWENVUlNFUykKK3N0YXRpYyB2b2lkCityZXNpemVUZXN0KFdJTkRPVyAqZHVtbXkgR0NDX1VOVVNFRCkKK3sKKyAgICBXSU5ET1cgKndpbjE7CisKKyAgICBzYXZldHR5KCk7CisKKyAgICBjbGVhcigpOworICAgIHJlZnJlc2goKTsKKyMgIGlmIGRlZmluZWQoT1MyKQorICAgIHJlc2l6ZV90ZXJtKDUwLCAxMjApOworIyAgZWxzZQorICAgIHJlc2l6ZV90ZXJtKDUwLCA4MCk7CisjICBlbmRpZgorCisgICAgd2luMSA9IG5ld3dpbigxMCwgNTAsIDE0LCAyNSk7CisgICAgaWYgKHdpbjEgPT0gTlVMTCkgeworCWVuZHdpbigpOworCXJldHVybjsKKyAgICB9CisjaWZkZWYgQV9DT0xPUgorICAgIGlmIChoYXNfY29sb3JzKCkpIHsKKwlpbml0X3BhaXIoMywgQ09MT1JfQkxVRSwgQ09MT1JfV0hJVEUpOworCXdhdHRyc2V0KHdpbjEsIENPTE9SX1BBSVIoMykpOworICAgIH0KKyNlbmRpZgorICAgIHdjbGVhcih3aW4xKTsKKworICAgIE12V0FkZFN0cih3aW4xLCAxLCAxLCAiVGhlIHNjcmVlbiBtYXkgbm93IGhhdmUgNTAgbGluZXMiKTsKKyAgICBDb250aW51ZSh3aW4xKTsKKworICAgIHdjbGVhcih3aW4xKTsKKyAgICByZXNldHR5KCk7CisKKyAgICBNdldBZGRTdHIod2luMSwgMSwgMSwgIlRoZSBzY3JlZW4gc2hvdWxkIG5vdyBiZSByZXNldCIpOworICAgIENvbnRpbnVlKHdpbjEpOworCisgICAgZGVsd2luKHdpbjEpOworCisgICAgY2xlYXIoKTsKKyAgICByZWZyZXNoKCk7CisKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorcGFkVGVzdChXSU5ET1cgKmR1bW15IEdDQ19VTlVTRUQpCit7CisgICAgV0lORE9XICpwYWQsICpzcGFkOworCisgICAgaWYgKChwYWQgPSBuZXdwYWQoNTAsIDEwMCkpICE9IDApIHsKKwl3YXR0cm9uKHBhZCwgQV9SRVZFUlNFKTsKKwlNdldBZGRTdHIocGFkLCA1LCAyLCAiVGhpcyBpcyBhIG5ldyBwYWQiKTsKKwkodm9pZCkgd2F0dHJzZXQocGFkLCBBX05PUk1BTCk7CisJTXZXQWRkU3RyKHBhZCwgOCwgMCwKKwkJICAiVGhlIGVuZCBvZiB0aGlzIGxpbmUgc2hvdWxkIGJlIHRydW5jYXRlZCBoZXJlOmV4Y2VwdCAgbm93Iik7CisJTXZXQWRkU3RyKHBhZCwgMTEsIDEsICJUaGlzIGxpbmUgc2hvdWxkIG5vdCBhcHBlYXIuSXQgd2lsbCBub3ciKTsKKwl3bW92ZShwYWQsIDEwLCAxKTsKKwl3Y2xydG9lb2wocGFkKTsKKwlNdldBZGRTdHIocGFkLCAxMCwgMSwgIiBQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlIik7CisJcHJlZnJlc2gocGFkLCAwLCAwLCAwLCAwLCAxMCwgNDUpOworCWtleXBhZChwYWQsIFRSVUUpOworCXJhdygpOworCXdnZXRjaChwYWQpOworCisJaWYgKChzcGFkID0gc3VicGFkKHBhZCwgMTIsIDI1LCA2LCA1MikpICE9IDApIHsKKwkgICAgTXZXQWRkU3RyKHNwYWQsIDIsIDIsICJUaGlzIGlzIGEgbmV3IHN1YnBhZCIpOworCSAgICBib3goc3BhZCwgMCwgMCk7CisJICAgIGRlbHdpbihzcGFkKTsKKwl9CisJcHJlZnJlc2gocGFkLCAwLCAwLCAwLCAwLCAxNSwgNzUpOworCWtleXBhZChwYWQsIFRSVUUpOworCXJhdygpOworCXdnZXRjaChwYWQpOworCisJTXZXQWRkU3RyKHBhZCwgMzUsIDIsICJUaGlzIGlzIGRpc3BsYXllZCBhdCBsaW5lIDM1IGluIHRoZSBwYWQiKTsKKwlNdldBZGRTdHIocGFkLCA0MCwgMSwgIiBQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlIik7CisJcHJlZnJlc2gocGFkLCAzMCwgMCwgMCwgMCwgMTAsIDQ1KTsKKwlrZXlwYWQocGFkLCBUUlVFKTsKKwlyYXcoKTsKKwl3Z2V0Y2gocGFkKTsKKworCWRlbHdpbihwYWQpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2Rpc3BsYXlfbWVudShpbnQgb2xkX29wdGlvbiwgaW50IG5ld19vcHRpb24pCit7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQoKG5ld19vcHRpb24gPj0gMCkgJiYgKG5ld19vcHRpb24gPCBNQVhfT1BUSU9OUykpOworCisgICAgKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworICAgIE12QWRkU3RyKDMsIDIwLCAiUERDdXJzZXMgVGVzdCBQcm9ncmFtIik7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgTUFYX09QVElPTlM7IGkrKykKKwlNdkFkZFN0cig1ICsgaSwgMjUsIGNvbW1hbmRbaV0udGV4dCk7CisKKyAgICBpZiAoKG9sZF9vcHRpb24gPj0gMCkgJiYgKG9sZF9vcHRpb24gPCBNQVhfT1BUSU9OUykpCisJTXZBZGRTdHIoNSArIG9sZF9vcHRpb24sIDI1LCBjb21tYW5kW29sZF9vcHRpb25dLnRleHQpOworCisgICAgKHZvaWQpIGF0dHJzZXQoQV9SRVZFUlNFKTsKKyAgICBNdkFkZFN0cig1ICsgbmV3X29wdGlvbiwgMjUsIGNvbW1hbmRbbmV3X29wdGlvbl0udGV4dCk7CisgICAgKHZvaWQpIGF0dHJzZXQoQV9OT1JNQUwpOworICAgIE12QWRkU3RyKDEzLCAzLAorCSAgICAgIlVzZSBVcCBhbmQgRG93biBBcnJvd3MgdG8gc2VsZWN0IC0gRW50ZXIgdG8gcnVuIC0gUSB0byBxdWl0Iik7CisgICAgcmVmcmVzaCgpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0c2NhbncuYyBiL3Rlc3QvdGVzdHNjYW53LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1ODljMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdHNjYW53LmMKQEAgLTAsMCArMSw2NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyLDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGdsZWFuZWQgZnJvbSBhIHdlYi1zZWFyY2gsIHNob3dzIGEgYnVnIGNvbWJpbmluZyBzY2FudyBhbmQgaW1wbGljaXQgc2Nyb2xsLgorICogRGF0ZTogIDE5OTcvMDMvMTcKKyAqIEZyb206ICBiYXllcm5AbW9ycGhldXMuY2lzLnlhbGUuZWR1CisgKgorICogJElkOiB0ZXN0c2NhbncuYyx2IDEuMTEgMjAwNi8wNC8wMSAxOTowODowMyB0b20gRXhwICQKKyAqLworI2luY2x1ZGUgPHRlc3QucHJpdi5oPgorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBsb25nIGJhZGFuc3dlciA9IDE7CisgICAgbG9uZyAqcmVzcG9uc2UgPSAmYmFkYW5zd2VyOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgaW5pdHNjcigpOworICAgIHNjcm9sbG9rKHN0ZHNjciwgVFJVRSk7CisgICAgaWRsb2soc3Rkc2NyLCBUUlVFKTsKKyAgICBlY2hvKCk7CisKKyNpZiAwCisgICAgdHJhY2UoVFJBQ0VfVVBEQVRFIHwgVFJBQ0VfQ0FMTFMpOworI2VuZGlmCisgICAgd2hpbGUgKGFyZ2MgPiAxKSB7CisJaWYgKGlzZGlnaXQoVUNoYXIoKmFyZ3ZbMV0pKSkKKwkgICAgbW92ZShhdG9pKGFyZ3ZbMV0pLCAwKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItayIpKQorCSAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsKKwlhcmdjLS0sIGFyZ3YrKzsKKyAgICB9CisKKyAgICB3aGlsZSAoYmFkYW5zd2VyKSB7CisJcHJpbnR3KCJFbnRlciBhIG51bWJlciAoMCB0byBxdWl0KTpcbiIpOworCXByaW50dygiLS0+ICIpOworCXNjYW53KCIlMjBsZCIsIHJlc3BvbnNlKTsJLyogeWVzLCBpdCdzIGEgcG9pbnRlciAqLworICAgIH0KKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX1NVQ0NFU1MpOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90cmFjZW11bmNoIGIvdGVzdC90cmFjZW11bmNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFlYTZmNGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3RyYWNlbXVuY2gKQEAgLTAsMCArMSwxNjEgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworIyAkSWQ6IHRyYWNlbXVuY2gsdiAxLjYgMjAwNS8wMy8xMiAyMTo0ODoyMyB0b20gRXhwICQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiwyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdHJhY2VtdW5jaCAtLSBjb21wYWN0aWZ5IG5jdXJzZXMgdHJhY2UgbG9ncworIworIyBUaGUgZXJyb3IgbG9ncyBwcm9kdWNlZCBieSBuY3Vyc2VzIHdpdGggdHJhY2luZyBlbmFibGVkIGNhbiBiZSB2ZXJ5IHRlZGlvdXMKKyMgdG8gd2FkZSB0aHJvdWdoLiAgVGhpcyBzY3JpcHQgaGVscHMgYnkgY29tcGFjdGluZyBydW5zIG9mIGxvZyBsaW5lcyB0aGF0CisjIGNhbiBiZSBjb252ZW5pZW50bHkgZXhwcmVzc2VkIGFzIGhpZ2hlci1sZXZlbCBvcGVyYXRpb25zLgordXNlIHN0cmljdDsKKworb3VyICRwdXRhdHRyPSJQdXRBdHRyQ2hhclxcKHt7ICcoLiknID0gMFswLTddKyB9fVxcKSBhdCBcXCgoWzAtOV0rKSwgKFswLTldKylcXCkiOworb3VyICR3YWRkbnN0cj0id2FkZG5zdHJcXCgweChbMC05YS1mXSspLFwiKFteXCJdKylcIixbMC05XStcXCkgY2FsbGVkIHtBX05PUk1BTH0iOworCitvdXIgJHdpbl9udW1zPTA7CitvdXIgJGN1cnNjcj0iIjsKK291ciAkbmV3c2NyPSIiOworb3VyICRzdGRzY3I9IiI7CitvdXIgQHdpbl9hZGRyOworCitzdWIgdHJhbnNhZGRyCit7CisgICAgbXkgJG47CisgICAgbXkgJGFyZyA9ICRfWzBdOworCisgICAgJGFyZyA9fiBzLyRjdXJzY3IvY3Vyc2NyL2cgaWYgKCRjdXJzY3IpOworICAgICRhcmcgPX4gcy8kbmV3c2NyL25ld3Njci9nIGlmICgkbmV3c2NyKTsKKyAgICAkYXJnID1+IHMvJHN0ZHNjci9zdGRzY3IvZyBpZiAoJHN0ZHNjcik7CisgICAgZm9yICRuICgwLi4kI3dpbl9hZGRyKSB7CisJJGFyZyA9fiBzLyR3aW5fYWRkclskbl0vd2luZG93JG4vZyBpZiAkd2luX2FkZHJbJG5dOworICAgIH0KKworICAgIHJldHVybiAkYXJnOworfQorCit3aGlsZSAoPFNURElOPikKK3sKKwlteSAkYWRkcjsKKwlteSAkbjsKKwlteSAkYXdhaXRpbmc7CisKK0NMQVNTSUZZOiB7CisJIyBUcmFuc2Zvcm0gd2luZG93IHBvaW50ZXIgYWRkcmVzc2VzIHNvIGl0J3MgZWFzaWVyIHRvIGNvbXBhcmUgbG9ncworCSRhd2FpdGluZyA9ICJjdXJzY3IiIGlmICgkXyA9fiAvY3JlYXRpbmcgY3Vyc2NyLyk7CisJJGF3YWl0aW5nID0gIm5ld3NjciIgaWYgKCRfID1+IC9jcmVhdGluZyBuZXdzY3IvKTsKKwkkYXdhaXRpbmcgPSAic3Rkc2NyIiBpZiAoJF8gPX4gL2NyZWF0aW5nIHN0ZHNjci8pOworCWlmICgkXyA9fiAvXmNyZWF0ZSA6d2luZG93IDB4KFswLTlhLWZdKykvKSB7CisJICAgICRhZGRyID0gIjB4JDEiOworCSAgICBpZiAoJGF3YWl0aW5nIGVxICJjdXJzY3IiKSB7CisJCSRjdXJzY3IgPSAkYWRkcjsKKwkgICAgfSBlbHNpZiAoJGF3YWl0aW5nIGVxICJuZXdzY3IiKSB7CisJCSRuZXdzY3IgPSAkYWRkcjsKKwkgICAgfSBlbHNpZiAoJGF3YWl0aW5nIGVxICJzdGRzY3IiKSB7CisJCSRzdGRzY3IgPSAkYWRkcjsKKwkgICAgfSBlbHNlIHsKKwkJJHdpbl9hZGRyWyR3aW5fbnVtc10gPSAkYWRkcjsKKwkJJHdpbl9udW1zID0gJHdpbl9udW1zICsgMTsKKwkgICAgfQorCSAgICAkYXdhaXRpbmcgPSAiIjsKKwl9IGVsc2lmICgkXyA9fiAvXlwuXC5cLmRlbGV0ZWQgd2luPTB4KFswLTlhLWZdKykvKSB7CisJICAgICRhZGRyID0gIjB4JDEiOworCSAgICAkXyA9ICZ0cmFuc2FkZHIoJF8pOworCSAgICBpZiAoJGFkZHIgZXEgJGN1cnNjcikgeworCQkkY3Vyc2NyID0gIiI7CisJICAgIH0gZWxzaWYgKCRhZGRyIGVxICRuZXdzY3IpIHsKKwkJJG5ld3NjciA9ICIiOworCSAgICB9IGVsc2lmICgkYWRkciBlcSAkc3Rkc2NyKSB7CisJCSRzdGRzY3IgPSAiIjsKKwkgICAgfSBlbHNlIHsKKwkJZm9yICRuICgwLi4kI3dpbl9hZGRyKSB7CisJCSAgICBpZiAoJHdpbl9hZGRyWyRuXSBlcSAkYWRkcikgeworCQkJJHdpbl9hZGRyWyRuXSA9ICIiOworCQkgICAgfQorCQl9CisJICAgIH0KKwl9CisKKwkjIENvbXBhY3RpZnkgcnVucyBvZiBQdXRBdHRyQ2hhciBjYWxscyAoVFJfQ0hBUlBVVCkKKwlpZiAoJF8gPX4gLyRwdXRhdHRyLykKKwl7CisJCW15ICRwdXRhdHRyX2NoYXJzID0gJDE7CisJCW15ICRzdGFydHkgPSAkMjsKKwkJbXkgJHN0YXJ0eCA9ICQzOworCQl3aGlsZSAoPFNURElOPikKKwkJeworCQkJaWYgKCRfID1+IC8kcHV0YXR0ci8pIHsKKwkJCQkkcHV0YXR0cl9jaGFycyAuPSAkMTsKKwkJCX0gZWxzZSB7CisJCQkJbGFzdDsKKwkJCX0KKwkJfQorCQlwcmludCAiUlVOIG9mIFB1dEF0dHJDaGFyKClzOiBcIiRwdXRhdHRyX2NoYXJzXCIgZnJvbSAke3N0YXJ0eX0sICR7c3RhcnR4fVxuIjsKKwkJcmVkbyBDTEFTU0lGWTsKKwl9CisKKwkjIENvbXBhY3RpZnkgcnVucyBvZiB3YWRkbnN0ciBjYWxscyAoVFJfQ0FMTFMpCisJaWYgKCRfID1+IC8kd2FkZG5zdHIvKQorCXsKKwkJbXkgJHdhZGRuc3RyX2NoYXJzID0gJDI7CisJCW15ICR3aW5hZGRyID0gJDE7CisJCXdoaWxlICg8U1RESU4+KQorCQl7CisJCQlpZiAoJF8gPX4gLyR3YWRkbnN0ci8gJiYgJDEgZXEgJHdpbmFkZHIpIHsKKwkJCQkkd2FkZG5zdHJfY2hhcnMgLj0gJDI7CisJCQl9IGVsc2UgeworCQkJCWxhc3Q7CisJCQl9CisJCX0KKwkJbXkgJHdpbmFkZHN0ciA9ICZ0cmFuc2FkZHIoJHdpbmFkZHIpOworCQlwcmludCAiUlVOIG9mIHdhZGRuc3RyKClzOiAkd2luYWRkciwgXCIkd2FkZG5zdHJfY2hhcnNcIlxuIjsKKwkJcmVkbyBDTEFTU0lGWTsKKwl9CisKKwkjIE1vcmUgdHJhbnNmb3JtYXRpb25zIGNhbiBnbyBoZXJlCisKKwkjIFJlcGVhdGVkIHJ1bnMgb2YgYW55dGhpbmcKKwlteSAkYW55bGluZSA9ICZ0cmFuc2FkZHIoJF8pOworCW15ICRyZXBlYXRjb3VudCA9IDE7CisJd2hpbGUgKDxTVERJTj4pIHsKKwkgICAgaWYgKCZ0cmFuc2FkZHIoJF8pIGVxICRhbnlsaW5lKSB7CisJCSRyZXBlYXRjb3VudCsrOworCSAgICB9IGVsc2UgeworCQlsYXN0OworCSAgICB9CisJfQorCWlmICgkcmVwZWF0Y291bnQgPiAxKSB7CisJCXByaW50ICIke3JlcGVhdGNvdW50fSBSRVBFQVRTIE9GICRhbnlsaW5lIjsKKwl9IGVsc2UgeworCQlwcmludCAkYW55bGluZQorCX0KKwlyZWRvIENMQVNTSUZZIGlmICRfOworCisJfSAjIDpDTEFTU0lGWQorfQorCisjIHRyYWNlbXVuY2ggZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0L3ZpZXcuYyBiL3Rlc3Qvdmlldy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ODJkODUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3ZpZXcuYwpAQCAtMCwwICsxLDYxMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDEyLDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiB2aWV3LmMgLS0gYSBzaWxseSBsaXR0bGUgdmlld2VyIHByb2dyYW0KKyAqCisgKiB3cml0dGVuIGJ5IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPiBEZWNlbWJlciAxOTk0CisgKiB0byB0ZXN0IHRoZSBzY3JvbGxpbmcgY29kZSBpbiBuY3Vyc2VzLgorICoKKyAqIG1vZGlmaWVkIGJ5IFRob21hcyBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+IEp1bHkgMTk5NSB0byBkZW1vbnN0cmF0ZQorICogdGhlIHVzZSBvZiAncmVzaXpldGVybSgpJywgYW5kIE1heSAyMDAwIHRvIGlsbHVzdHJhdGUgd2lkZS1jaGFyYWN0ZXIKKyAqIGhhbmRsaW5nLgorICoKKyAqIFRha2VzIGEgZmlsZW5hbWUgYXJndW1lbnQuICBJdCdzIGEgc2ltcGxlIGZpbGUtdmlld2VyIHdpdGggdmFyaW91cworICogc2Nyb2xsLXVwIGFuZCBzY3JvbGwtZG93biBjb21tYW5kcy4KKyAqCisgKiBuCS0tIHNjcm9sbCBvbmUgbGluZSBmb3J3YXJkCisgKiBwCS0tIHNjcm9sbCBvbmUgbGluZSBiYWNrCisgKgorICogRWl0aGVyIGNvbW1hbmQgYWNjZXB0cyBhIG51bWVyaWMgcHJlZml4IGludGVycHJldGVkIGFzIGEgcmVwZWF0IGNvdW50LgorICogVGh1cywgdHlwaW5nIGA1bicgc2hvdWxkIHNjcm9sbCBmb3J3YXJkIDUgbGluZXMgaW4gdGhlIGZpbGUuCisgKgorICogVGhlIHdheSB5b3UgY2FuIHRlbGwgdGhpcyBpcyB3b3JraW5nIE9LIGlzIHRoYXQsIGluIHRoZSB0cmFjZSBmaWxlLAorICogdGhlcmUgc2hvdWxkIGJlIG9uZSBzY3JvbGwgb3BlcmF0aW9uIHBsdXMgYSBzbWFsbCBudW1iZXIgb2YgbGluZQorICogdXBkYXRlcywgYXMgb3Bwb3NlZCB0byBhIHdob2xlLXBhZ2UgdXBkYXRlLiAgVGhpcyBtZWFucyB0aGUgcGh5c2ljYWwKKyAqIHNjcm9sbCBvcGVyYXRpb24gd29ya2VkLCBhbmQgdGhlIHJlZnJlc2goKSBjb2RlIG9ubHkgaGFkIHRvIGRvIGEKKyAqIHBhcnRpYWwgcmVwYWludC4KKyAqCisgKiAkSWQ6IHZpZXcuYyx2IDEuOTQgMjAxMy8wOS8yOCAyMTo1ODo0MiB0b20gRXhwICQKKyAqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisjaW5jbHVkZSA8d2lkZWNoYXJzLmg+CisKKyNpbmNsdWRlIDx0aW1lLmg+CisKKyN1bmRlZiBDVFJMCQkJLyogY29uZmxpY3Qgb24gQUlYIDUuMiB3aXRoIDxzeXMvaW9jdGwuaD4gKi8KKworI2lmIEhBVkVfVEVSTUlPU19ICisjIGluY2x1ZGUgPHRlcm1pb3MuaD4KKyNlbHNlCisjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pCisjIGluY2x1ZGUgPHNndHR5Lmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoc3VuKSB8fCAhSEFWRV9URVJNSU9TX0gKKyMgaWYgSEFWRV9TWVNfSU9DVExfSAorIyAgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBteV9wYWlyIDEKKworLyogVGhpcyBpcyBuZWVkZWQgdG8gY29tcGlsZSAnc3RydWN0IHdpbnNpemUnICovCisjaWYgTkVFRF9QVEVNX0gKKyNpbmNsdWRlIDxzeXMvc3RyZWFtLmg+CisjaW5jbHVkZSA8c3lzL3B0ZW0uaD4KKyNlbmRpZgorCisjdW5kZWYgQ1RSTAorI2RlZmluZSBDVFJMKHgpCSgoeCkgJiAweDFmKQorCitzdGF0aWMgdm9pZCBmaW5pc2goaW50IHNpZykgR0NDX05PUkVUVVJOOworc3RhdGljIHZvaWQgc2hvd19hbGwoY29uc3QgY2hhciAqdGFnKTsKKworI2lmIGRlZmluZWQoU0lHV0lOQ0gpICYmIGRlZmluZWQoVElPQ0dXSU5TWikgJiYgSEFWRV9SRVNJWkVfVEVSTQorI2RlZmluZSBDQU5fUkVTSVpFIDEKKyNlbHNlCisjZGVmaW5lIENBTl9SRVNJWkUgMAorI2VuZGlmCisKKyNpZiBDQU5fUkVTSVpFCitzdGF0aWMgdm9pZCBhZGp1c3QoaW50IHNpZyk7CitzdGF0aWMgaW50IGludGVycnVwdGVkOworc3RhdGljIGJvb2wgd2FpdGluZyA9IEZBTFNFOworI2VuZGlmCisKK3N0YXRpYyBpbnQgc2hpZnQgPSAwOworc3RhdGljIGJvb2wgdHJ5X2NvbG9yID0gRkFMU0U7CisKK3N0YXRpYyBjaGFyICpmbmFtZTsKK3N0YXRpYyBOQ1VSU0VTX0NIX1QgKip2ZWNfbGluZXM7CitzdGF0aWMgTkNVUlNFU19DSF9UICoqbHB0cjsKK3N0YXRpYyBpbnQgbnVtX2xpbmVzOworCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKSBHQ0NfTk9SRVRVUk47CisKK3N0YXRpYyB2b2lkCit1c2FnZSh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyICptc2dbXSA9CisgICAgeworCSJVc2FnZTogdmlldyBbb3B0aW9uc10gZmlsZSIKKwksIiIKKwksIk9wdGlvbnM6IgorCSwiIC1jICAgICAgIHVzZSBjb2xvciBpZiB0ZXJtaW5hbCBzdXBwb3J0cyBpdCIKKwksIiAtaSAgICAgICBpZ25vcmUgSU5ULCBRVUlULCBURVJNIHNpZ25hbHMiCisJLCIgLW4gTlVNICAgc3BlY2lmeSBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyAoZGVmYXVsdCAxMDAwKSIKKyNpZiBkZWZpbmVkKEtFWV9SRVNJWkUpCisJLCIgLXIgICAgICAgdXNlIG9sZC1zdHlsZSBzaWd3aW5jaCBoYW5kbGVyIHJhdGhlciB0aGFuIEtFWV9SRVNJWkUiCisjZW5kaWYKKwksIiAtcyAgICAgICBzdGFydCBpbiBzaW5nbGUtc3RlcCBtb2RlLCB3YWl0aW5nIGZvciBpbnB1dCIKKyNpZmRlZiBUUkFDRQorCSwiIC10ICAgICAgIHRyYWNlIHNjcmVlbiB1cGRhdGVzIgorCSwiIC1UIE5VTSAgIHNwZWNpZnkgdHJhY2UgbWFzayIKKyNlbmRpZgorICAgIH07CisgICAgc2l6ZV90IG47CisgICAgZm9yIChuID0gMDsgbiA8IFNJWkVPRihtc2cpOyBuKyspCisJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnW25dKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgaW50CitjaF9sZW4oTkNVUlNFU19DSF9UICogc3JjKQoreworICAgIGludCByZXN1bHQgPSAwOworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgaW50IGNvdW50OworI2VuZGlmCisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorICAgIGZvciAoOzspIHsKKwlURVNUX0NDSEFSKHNyYywgY291bnQsIHsKKwkgICAgKytyZXN1bHQ7CisJICAgICsrc3JjOworCX0KKwksIHsKKwkgICAgYnJlYWs7CisJfSkKKyAgICB9CisjZWxzZQorICAgIHdoaWxlICgqc3JjKyspCisJcmVzdWx0Kys7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQWxsb2NhdGUgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBjaHR5cGUncy4gIElmIFVURi04IG1vZGUgaXMKKyAqIGFjdGl2ZSwgdHJhbnNsYXRlIHRoZSBzdHJpbmcgYWNjb3JkaW5nbHkuCisgKi8KK3N0YXRpYyBOQ1VSU0VTX0NIX1QgKgorY2hfZHVwKGNoYXIgKnNyYykKK3sKKyAgICB1bnNpZ25lZCBsZW4gPSAodW5zaWduZWQpIHN0cmxlbihzcmMpOworICAgIE5DVVJTRVNfQ0hfVCAqZHN0ID0gdHlwZU1hbGxvYyhOQ1VSU0VTX0NIX1QsIGxlbiArIDEpOworICAgIHNpemVfdCBqLCBrOworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgd2NoYXJfdCB3c3RyW0NDSEFSV19NQVggKyAxXTsKKyAgICB3Y2hhcl90IHdjaDsKKyAgICBpbnQgbCA9IDA7CisgICAgc2l6ZV90IHJjOworICAgIGludCB3aWR0aDsKKyNpZm5kZWYgc3RhdGVfdW51c2VkCisgICAgbWJzdGF0ZV90IHN0YXRlOworI2VuZGlmCisjZW5kaWYgLyogVVNFX1dJREVDX1NVUFBPUlQgKi8KKworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgcmVzZXRfbWJ5dGVzKHN0YXRlKTsKKyNlbmRpZgorICAgIGZvciAoaiA9IGsgPSAwOyBqIDwgbGVuOyBqKyspIHsKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCXJjID0gKHNpemVfdCkgY2hlY2tfbWJ5dGVzKHdjaCwgc3JjICsgaiwgbGVuIC0gaiwgc3RhdGUpOworCWlmIChyYyA9PSAoc2l6ZV90KSAtMSB8fCByYyA9PSAoc2l6ZV90KSAtMikKKwkgICAgYnJlYWs7CisJaiArPSByYyAtIDE7CisJaWYgKCh3aWR0aCA9IHdjd2lkdGgod2NoKSkgPCAwKQorCSAgICBicmVhazsKKwlpZiAoKHdpZHRoID4gMCAmJiBsID4gMCkgfHwgbCA9PSBDQ0hBUldfTUFYKSB7CisJICAgIHdzdHJbbF0gPSBMJ1wwJzsKKwkgICAgbCA9IDA7CisJICAgIGlmIChzZXRjY2hhcihkc3QgKyBrLCB3c3RyLCAwLCAwLCBOVUxMKSAhPSBPSykKKwkJYnJlYWs7CisJICAgICsrazsKKwl9CisJaWYgKHdpZHRoID09IDAgJiYgbCA9PSAwKQorCSAgICB3c3RyW2wrK10gPSBMJyAnOworCXdzdHJbbCsrXSA9IHdjaDsKKyNlbHNlCisJZHN0W2srK10gPSAoY2h0eXBlKSBVQ2hhcihzcmNbal0pOworI2VuZGlmCisgICAgfQorI2lmIFVTRV9XSURFQ19TVVBQT1JUCisgICAgaWYgKGwgPiAwKSB7CisJd3N0cltsXSA9IEwnXDAnOworCWlmIChzZXRjY2hhcihkc3QgKyBrLCB3c3RyLCAwLCAwLCBOVUxMKSA9PSBPSykKKwkgICAgKytrOworICAgIH0KKyAgICB3c3RyWzBdID0gTCdcMCc7CisgICAgc2V0Y2NoYXIoZHN0ICsgaywgd3N0ciwgMCwgMCwgTlVMTCk7CisjZWxzZQorICAgIGRzdFtrXSA9IDA7CisjZW5kaWYKKyAgICByZXR1cm4gZHN0OworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgTUFYTElORVMgPSAxMDAwOworICAgIEZJTEUgKmZwOworICAgIGNoYXIgYnVmW0JVRlNJWl07CisgICAgaW50IGk7CisgICAgaW50IG15X2RlbGF5ID0gMDsKKyAgICBOQ1VSU0VTX0NIX1QgKipvbHB0cjsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIGJvb2wgZG9uZSA9IEZBTFNFOworICAgIGJvb2wgZ290X251bWJlciA9IEZBTFNFOworICAgIGJvb2wgc2luZ2xlX3N0ZXAgPSBGQUxTRTsKKyNpZiBDQU5fUkVTSVpFCisgICAgYm9vbCBub25wb3NpeF9yZXNpemUgPSBGQUxTRTsKKyNlbmRpZgorICAgIGNvbnN0IGNoYXIgKm15X2xhYmVsID0gIklucHV0IjsKKworICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKKworI2lmbmRlZiBOQ1VSU0VTX1ZFUlNJT04KKyAgICAvKgorICAgICAqIFdlIGtub3cgbmN1cnNlcyB3aWxsIGNhdGNoIFNJR0lOVCBpZiB3ZSBkb24ndCBlc3RhYmxpc2ggb3VyIG93biBoYW5kbGVyLgorICAgICAqIE90aGVyIHZlcnNpb25zIG9mIGN1cnNlcyBtYXkvbWF5IG5vdCBjYXRjaCBpdC4KKyAgICAgKi8KKyAgICAodm9pZCkgc2lnbmFsKFNJR0lOVCwgZmluaXNoKTsJLyogYXJyYW5nZSBpbnRlcnJ1cHRzIHRvIHRlcm1pbmF0ZSAqLworI2VuZGlmCisKKyAgICB3aGlsZSAoKGkgPSBnZXRvcHQoYXJnYywgYXJndiwgImNpbjpyc3RUOiIpKSAhPSAtMSkgeworCXN3aXRjaCAoaSkgeworCWNhc2UgJ2MnOgorCSAgICB0cnlfY29sb3IgPSBUUlVFOworCSAgICBicmVhazsKKwljYXNlICdpJzoKKwkgICAgQ0FUQ0hBTEwoU0lHX0lHTik7CisJICAgIGJyZWFrOworCWNhc2UgJ24nOgorCSAgICBpZiAoKE1BWExJTkVTID0gYXRvaShvcHRhcmcpKSA8IDEgfHwKKwkJKE1BWExJTkVTICsgMikgPD0gMSkKKwkJdXNhZ2UoKTsKKwkgICAgYnJlYWs7CisjaWYgQ0FOX1JFU0laRQorCWNhc2UgJ3InOgorCSAgICBub25wb3NpeF9yZXNpemUgPSBUUlVFOworCSAgICBicmVhazsKKyNlbmRpZgorCWNhc2UgJ3MnOgorCSAgICBzaW5nbGVfc3RlcCA9IFRSVUU7CisJICAgIGJyZWFrOworI2lmZGVmIFRSQUNFCisJY2FzZSAnVCc6CisJICAgIHsKKwkJY2hhciAqbmV4dCA9IDA7CisJCWludCB0dmFsdWUgPSAoaW50KSBzdHJ0b2wob3B0YXJnLCAmbmV4dCwgMCk7CisJCWlmICh0dmFsdWUgPCAwIHx8IChuZXh0ICE9IDAgJiYgKm5leHQgIT0gMCkpCisJCSAgICB1c2FnZSgpOworCQl0cmFjZSgodW5zaWduZWQpIHR2YWx1ZSk7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAndCc6CisJICAgIHRyYWNlKFRSQUNFX0NBTExTKTsKKwkgICAgYnJlYWs7CisjZW5kaWYKKwlkZWZhdWx0OgorCSAgICB1c2FnZSgpOworCX0KKyAgICB9CisgICAgaWYgKG9wdGluZCArIDEgIT0gYXJnYykKKwl1c2FnZSgpOworCisgICAgaWYgKCh2ZWNfbGluZXMgPSB0eXBlQ2FsbG9jKE5DVVJTRVNfQ0hfVCAqLCAoc2l6ZV90KSBNQVhMSU5FUyArIDIpKSA9PSAwKQorCXVzYWdlKCk7CisKKyAgICBhc3NlcnQodmVjX2xpbmVzICE9IDApOworCisgICAgZm5hbWUgPSBhcmd2W29wdGluZF07CisgICAgaWYgKChmcCA9IGZvcGVuKGZuYW1lLCAiciIpKSA9PSAwKSB7CisJcGVycm9yKGZuYW1lKTsKKwlFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworICAgIH0KKyNpZiBDQU5fUkVTSVpFCisgICAgaWYgKG5vbnBvc2l4X3Jlc2l6ZSkKKwkodm9pZCkgc2lnbmFsKFNJR1dJTkNILCBhZGp1c3QpOwkvKiBhcnJhbmdlIGludGVycnVwdHMgdG8gcmVzaXplICovCisjZW5kaWYKKworICAgIFRyYWNlKCgic2x1cnAgdGhlIGZpbGUiKSk7CisgICAgZm9yIChscHRyID0gJnZlY19saW5lc1swXTsgKGxwdHIgLSB2ZWNfbGluZXMpIDwgTUFYTElORVM7IGxwdHIrKykgeworCWNoYXIgdGVtcFtCVUZTSVpdLCAqcywgKmQ7CisJaW50IGNvbDsKKworCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkgPT0gMCkKKwkgICAgYnJlYWs7CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCWlmIChscHRyID09IHZlY19saW5lcykgeworCSAgICBpZiAoIW1lbWNtcCgi77u/IiwgYnVmLCAzKSkgeworCQlUcmFjZSgoInRyaW0gQk9NIikpOworCQlzID0gYnVmICsgMzsKKwkJZCA9IGJ1ZjsKKwkJZG8geworCQl9IHdoaWxlICgoKmQrKyA9ICpzKyspICE9ICdcMCcpOworCSAgICB9CisJfQorI2VuZGlmCisKKwkvKiBjb252ZXJ0IHRhYnMgYW5kIG5vbnByaW50aW5nIGNoYXJzIHNvIHRoYXQgc2hpZnQgd2lsbCB3b3JrIHByb3Blcmx5ICovCisJZm9yIChzID0gYnVmLCBkID0gdGVtcCwgY29sID0gMDsgKCpkID0gKnMpICE9ICdcMCc7IHMrKykgeworCSAgICBpZiAoKmQgPT0gJ1xyJykgeworCQlpZiAoc1sxXSA9PSAnXG4nKQorCQkgICAgY29udGludWU7CisJCWVsc2UKKwkJICAgIGJyZWFrOworCSAgICB9CisJICAgIGlmICgqZCA9PSAnXG4nKSB7CisJCSpkID0gJ1wwJzsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSBpZiAoKmQgPT0gJ1x0JykgeworCQljb2wgPSAoY29sIHwgNykgKyAxOworCQl3aGlsZSAoKGQgLSB0ZW1wKSAhPSBjb2wpCisJCSAgICAqZCsrID0gJyAnOworCSAgICB9IGVsc2UKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCQljb2wrKywgZCsrOworI2Vsc2UKKwkgICAgaWYgKGlzcHJpbnQoVUNoYXIoKmQpKSkgeworCQljb2wrKzsKKwkJZCsrOworCSAgICB9IGVsc2UgeworCQlzcHJpbnRmKGQsICJcXCUwM28iLCBVQ2hhcigqcykpOworCQlkICs9IHN0cmxlbihkKTsKKwkJY29sID0gKGludCkgKGQgLSB0ZW1wKTsKKwkgICAgfQorI2VuZGlmCisJfQorCSpscHRyID0gY2hfZHVwKHRlbXApOworICAgIH0KKyAgICAodm9pZCkgZmNsb3NlKGZwKTsKKyAgICBudW1fbGluZXMgPSAoaW50KSAobHB0ciAtIHZlY19saW5lcyk7CisKKyAgICAodm9pZCkgaW5pdHNjcigpOwkJLyogaW5pdGlhbGl6ZSB0aGUgY3Vyc2VzIGxpYnJhcnkgKi8KKyAgICBrZXlwYWQoc3Rkc2NyLCBUUlVFKTsJLyogZW5hYmxlIGtleWJvYXJkIG1hcHBpbmcgKi8KKyAgICAodm9pZCkgbm9ubCgpOwkJLyogdGVsbCBjdXJzZXMgbm90IHRvIGRvIE5MLT5DUi9OTCBvbiBvdXRwdXQgKi8KKyAgICAodm9pZCkgY2JyZWFrKCk7CQkvKiB0YWtlIGlucHV0IGNoYXJzIG9uZSBhdCBhIHRpbWUsIG5vIHdhaXQgZm9yIFxuICovCisgICAgKHZvaWQpIG5vZWNobygpOwkJLyogZG9uJ3QgZWNobyBpbnB1dCAqLworICAgIGlmICghc2luZ2xlX3N0ZXApCisJbm9kZWxheShzdGRzY3IsIFRSVUUpOworICAgIGlkbG9rKHN0ZHNjciwgVFJVRSk7CS8qIGFsbG93IHVzZSBvZiBpbnNlcnQvZGVsZXRlIGxpbmUgKi8KKworICAgIGlmICh0cnlfY29sb3IpIHsKKwlpZiAoaGFzX2NvbG9ycygpKSB7CisJICAgIHN0YXJ0X2NvbG9yKCk7CisJICAgIGluaXRfcGFpcihteV9wYWlyLCBDT0xPUl9XSElURSwgQ09MT1JfQkxVRSk7CisJICAgIGJrZ2QoKGNodHlwZSkgQ09MT1JfUEFJUihteV9wYWlyKSk7CisJfSBlbHNlIHsKKwkgICAgdHJ5X2NvbG9yID0gRkFMU0U7CisJfQorICAgIH0KKworICAgIGxwdHIgPSB2ZWNfbGluZXM7CisgICAgd2hpbGUgKCFkb25lKSB7CisJaW50IG4sIGM7CisKKwlpZiAoIWdvdF9udW1iZXIpCisJICAgIHNob3dfYWxsKG15X2xhYmVsKTsKKworCWZvciAoOzspIHsKKyNpZiBDQU5fUkVTSVpFCisJICAgIGlmIChpbnRlcnJ1cHRlZCkgeworCQlhZGp1c3QoMCk7CisJCW15X2xhYmVsID0gImludGVycnVwdCI7CisJICAgIH0KKwkgICAgd2FpdGluZyA9IFRSVUU7CisJICAgIGMgPSBnZXRjaCgpOworCSAgICB3YWl0aW5nID0gRkFMU0U7CisjZWxzZQorCSAgICBjID0gZ2V0Y2goKTsKKyNlbmRpZgorCSAgICBpZiAoKGMgPCAxMjcpICYmIGlzZGlnaXQoYykpIHsKKwkJaWYgKCFnb3RfbnVtYmVyKSB7CisJCSAgICBNdlByaW50dygwLCAwLCAiQ291bnQ6ICIpOworCQkgICAgY2xydG9lb2woKTsKKwkJfQorCQlhZGRjaChVQ2hhcihjKSk7CisJCXZhbHVlID0gMTAgKiB2YWx1ZSArIChjIC0gJzAnKTsKKwkJZ290X251bWJlciA9IFRSVUU7CisJICAgIH0gZWxzZQorCQlicmVhazsKKwl9CisJaWYgKGdvdF9udW1iZXIgJiYgdmFsdWUpIHsKKwkgICAgbiA9IHZhbHVlOworCX0gZWxzZSB7CisJICAgIG4gPSAxOworCX0KKworCWlmIChjICE9IEVSUikKKwkgICAgbXlfbGFiZWwgPSBrZXluYW1lKGMpOworCXN3aXRjaCAoYykgeworCWNhc2UgS0VZX0RPV046CisJY2FzZSAnbic6CisJICAgIG9scHRyID0gbHB0cjsKKwkgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJaWYgKChscHRyIC0gdmVjX2xpbmVzKSA8IChudW1fbGluZXMgLSBMSU5FUyArIDEpKQorCQkgICAgbHB0cisrOworCQllbHNlCisJCSAgICBicmVhazsKKwkgICAgc2NybCgoaW50KSAobHB0ciAtIG9scHRyKSk7CisJICAgIGJyZWFrOworCisJY2FzZSBLRVlfVVA6CisJY2FzZSAncCc6CisJICAgIG9scHRyID0gbHB0cjsKKwkgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJaWYgKGxwdHIgPiB2ZWNfbGluZXMpCisJCSAgICBscHRyLS07CisJCWVsc2UKKwkJICAgIGJyZWFrOworCSAgICBzY3JsKChpbnQpIChscHRyIC0gb2xwdHIpKTsKKwkgICAgYnJlYWs7CisKKwljYXNlICdoJzoKKwljYXNlIEtFWV9IT01FOgorCSAgICBscHRyID0gdmVjX2xpbmVzOworCSAgICBicmVhazsKKworCWNhc2UgJ2UnOgorCWNhc2UgS0VZX0VORDoKKwkgICAgaWYgKG51bV9saW5lcyA+IExJTkVTKQorCQlscHRyID0gdmVjX2xpbmVzICsgbnVtX2xpbmVzIC0gTElORVMgKyAxOworCSAgICBlbHNlCisJCWxwdHIgPSB2ZWNfbGluZXM7CisJICAgIGJyZWFrOworCisJY2FzZSAncic6CisJY2FzZSBLRVlfUklHSFQ6CisJICAgIHNoaWZ0ICs9IG47CisJICAgIGJyZWFrOworCisJY2FzZSAnbCc6CisJY2FzZSBLRVlfTEVGVDoKKwkgICAgc2hpZnQgLT0gbjsKKwkgICAgaWYgKHNoaWZ0IDwgMCkgeworCQlzaGlmdCA9IDA7CisJCWJlZXAoKTsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgJ3EnOgorCSAgICBkb25lID0gVFJVRTsKKwkgICAgYnJlYWs7CisKKyNpZmRlZiBLRVlfUkVTSVpFCisJY2FzZSBLRVlfUkVTSVpFOgkvKiBpZ25vcmUgdGhpczsgbmN1cnNlcyB3aWxsIHJlcGFpbnQgKi8KKwkgICAgYnJlYWs7CisjZW5kaWYKKwljYXNlICdzJzoKKwkgICAgaWYgKGdvdF9udW1iZXIpIHsKKwkJaGFsZmRlbGF5KG15X2RlbGF5ID0gbik7CisJICAgIH0gZWxzZSB7CisJCW5vZGVsYXkoc3Rkc2NyLCBGQUxTRSk7CisJCW15X2RlbGF5ID0gLTE7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSAnICc6CisJICAgIG5vZGVsYXkoc3Rkc2NyLCBUUlVFKTsKKwkgICAgbXlfZGVsYXkgPSAwOworCSAgICBicmVhazsKKwljYXNlIENUUkwoJ0wnKToKKwkgICAgcmVkcmF3d2luKHN0ZHNjcik7CisJICAgIGJyZWFrOworCWNhc2UgRVJSOgorCSAgICBpZiAoIW15X2RlbGF5KQorCQluYXBtcyg1MCk7CisJICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGJlZXAoKTsKKwkgICAgYnJlYWs7CisJfQorCWlmIChjID49IEtFWV9NSU4gfHwgKGMgPiAwICYmICFpc2RpZ2l0KGMpKSkgeworCSAgICBnb3RfbnVtYmVyID0gRkFMU0U7CisJICAgIHZhbHVlID0gMDsKKwl9CisgICAgfQorCisgICAgZmluaXNoKDApOwkJCS8qIHdlJ3JlIGRvbmUgKi8KK30KKworc3RhdGljIHZvaWQKK2ZpbmlzaChpbnQgc2lnKQoreworICAgIGVuZHdpbigpOworI2lmIE5PX0xFQUtTCisgICAgaWYgKHZlY19saW5lcyAhPSAwKSB7CisJaW50IG47CisJZm9yIChuID0gMDsgbiA8IG51bV9saW5lczsgKytuKSB7CisJICAgIGZyZWUodmVjX2xpbmVzW25dKTsKKwl9CisJZnJlZSh2ZWNfbGluZXMpOworICAgIH0KKyNlbmRpZgorICAgIEV4aXRQcm9ncmFtKHNpZyAhPSAwID8gRVhJVF9GQUlMVVJFIDogRVhJVF9TVUNDRVNTKTsKK30KKworI2lmIENBTl9SRVNJWkUKKy8qCisgKiBUaGlzIHVzZXMgZnVuY3Rpb25zIHRoYXQgYXJlICJ1bnNhZmUiLCBidXQgaXQgc2VlbXMgdG8gd29yayBvbiBTdW5PUy4gCisgKiBVc3VhbGx5OiB0aGUgInVuc2FmZSIgcmVmZXJzIHRvIHRoZSBmdW5jdGlvbnMgdGhhdCBQT1NJWCBsaXN0cyB3aGljaCBtYXkgYmUKKyAqIGNhbGxlZCBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuICBUaG9zZSBkbyBub3QgaW5jbHVkZSBidWZmZXJlZCBJL08sIHdoaWNoIGlzCisgKiB1c2VkIGZvciBpbnN0YW5jZSBpbiB3cmVmcmVzaCgpLiAgVG8gYmUgcmVhbGx5IHBvcnRhYmxlLCB5b3Ugc2hvdWxkIHVzZSB0aGUKKyAqIEtFWV9SRVNJWkUgcmV0dXJuICh3aGljaCByZWxpZXMgb24gbmN1cnNlcycgc2lnd2luY2ggaGFuZGxlcikuCisgKgorICogVGhlICd3cmVmcmVzaChjdXJzY3IpJyBpcyBuZWVkZWQgdG8gZm9yY2UgdGhlIHJlZnJlc2ggdG8gc3RhcnQgZnJvbSB0aGUgdG9wCisgKiBvZiB0aGUgc2NyZWVuIC0tIHNvbWUgeHRlcm1zIG1hbmdsZSB0aGUgYml0bWFwIHdoaWxlIHJlc2l6aW5nLgorICovCitzdGF0aWMgdm9pZAorYWRqdXN0KGludCBzaWcpCit7CisgICAgaWYgKHdhaXRpbmcgfHwgc2lnID09IDApIHsKKwlzdHJ1Y3Qgd2luc2l6ZSBzaXplOworCisJaWYgKGlvY3RsKGZpbGVubyhzdGRvdXQpLCBUSU9DR1dJTlNaLCAmc2l6ZSkgPT0gMCkgeworCSAgICByZXNpemVfdGVybShzaXplLndzX3Jvdywgc2l6ZS53c19jb2wpOworCSAgICB3cmVmcmVzaChjdXJzY3IpOworCSAgICBzaG93X2FsbChzaWcgPyAiU0lHV0lOQ0giIDogImludGVycnVwdCIpOworCX0KKwlpbnRlcnJ1cHRlZCA9IEZBTFNFOworICAgIH0gZWxzZSB7CisJaW50ZXJydXB0ZWQgPSBUUlVFOworICAgIH0KKyAgICAodm9pZCkgc2lnbmFsKFNJR1dJTkNILCBhZGp1c3QpOwkvKiBzb21lIHN5c3RlbXMgbmVlZCB0aGlzICovCit9CisjZW5kaWYgLyogQ0FOX1JFU0laRSAqLworCitzdGF0aWMgdm9pZAorc2hvd19hbGwoY29uc3QgY2hhciAqdGFnKQoreworICAgIGludCBpOworICAgIGNoYXIgdGVtcFtCVUZTSVpdOworICAgIE5DVVJTRVNfQ0hfVCAqczsKKyAgICB0aW1lX3QgdGhpc190aW1lOworCisjaWYgQ0FOX1JFU0laRQorICAgIHNwcmludGYodGVtcCwgIiUuMjBzICglM2R4JTNkKSBjb2wgJWQgIiwgdGFnLCBMSU5FUywgQ09MUywgc2hpZnQpOworICAgIGkgPSAoaW50KSBzdHJsZW4odGVtcCk7CisgICAgaWYgKChpICsgNykgPCAoaW50KSBzaXplb2YodGVtcCkpIHsKKwlzcHJpbnRmKHRlbXAgKyBpLCAidmlldyAlLipzIiwKKwkJKGludCkgKHNpemVvZih0ZW1wKSAtIDcgLSAoc2l6ZV90KSBpKSwKKwkJZm5hbWUpOworICAgIH0KKyNlbHNlCisgICAgKHZvaWQpIHRhZzsKKyAgICBzcHJpbnRmKHRlbXAsICJ2aWV3ICUuKnMiLCAoaW50KSBzaXplb2YodGVtcCkgLSA3LCBmbmFtZSk7CisjZW5kaWYKKyAgICBtb3ZlKDAsIDApOworICAgIHByaW50dygiJS4qcyIsIENPTFMsIHRlbXApOworICAgIGNscnRvZW9sKCk7CisgICAgdGhpc190aW1lID0gdGltZSgodGltZV90ICopIDApOworICAgIHN0cm5jcHkodGVtcCwgY3RpbWUoJnRoaXNfdGltZSksIChzaXplX3QpIDMwKTsKKyAgICBpZiAoKGkgPSAoaW50KSBzdHJsZW4odGVtcCkpICE9IDApIHsKKwl0ZW1wWy0taV0gPSAwOworCWlmIChtb3ZlKDAsIENPTFMgLSBpIC0gMikgIT0gRVJSKQorCSAgICBwcmludHcoIiAgJXMiLCB0ZW1wKTsKKyAgICB9CisKKyAgICBzY3JvbGxvayhzdGRzY3IsIEZBTFNFKTsJLyogcHJldmVudCBzY3JlZW4gZnJvbSBtb3ZpbmcgKi8KKyAgICBmb3IgKGkgPSAxOyBpIDwgTElORVM7IGkrKykgeworCW1vdmUoaSwgMCk7CisJcHJpbnR3KCIlM2xkOiIsIChsb25nKSAobHB0ciArIGkgLSB2ZWNfbGluZXMpKTsKKwljbHJ0b2VvbCgpOworCWlmICgocyA9IGxwdHJbaSAtIDFdKSAhPSAwKSB7CisJICAgIGludCBsZW4gPSBjaF9sZW4ocyk7CisJICAgIGlmIChsZW4gPiBzaGlmdCkgeworI2lmIFVTRV9XSURFQ19TVVBQT1JUCisJCWFkZF93Y2hzdHIocyArIHNoaWZ0KTsKKyNlbHNlCisJCWFkZGNoc3RyKHMgKyBzaGlmdCk7CisjZW5kaWYKKwkgICAgfQorI2lmIGRlZmluZWQoTkNVUlNFU19WRVJTSU9OKSB8fCBkZWZpbmVkKEhBVkVfV0NIR0FUKQorCSAgICBpZiAodHJ5X2NvbG9yKQorCQl3Y2hnYXQoc3Rkc2NyLCAtMSwgQV9OT1JNQUwsIG15X3BhaXIsIE5VTEwpOworI2VuZGlmCisJfQorICAgIH0KKyAgICBzZXRzY3JyZWcoMSwgTElORVMgLSAxKTsKKyAgICBzY3JvbGxvayhzdGRzY3IsIFRSVUUpOworICAgIHJlZnJlc2goKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3Qvd2lkZWNoYXJzLXV0ZjgudHh0IGIvdGVzdC93aWRlY2hhcnMtdXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNlY2QwZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvd2lkZWNoYXJzLXV0ZjgudHh0CkBAIC0wLDAgKzEsNyBAQAor77yh77yw77yw77ys77ylICAgICAtLSBJdCdzIGFuIO+8oe+8sO+8sO+8rO+8pS4KK++8pO+8r++8pyAgICAgICAgIC0tIE5vLCB0aGF0J3Mgbm90IG15IO+8pO+8r++8py4KK++8r++8su+8oe+8ru+8p++8pSAgIC0tIFllYWgsIHRoYXQncyDvvKrvvLXvvKnvvKPvvLkuCivvvKPvvKjvvKnvvKPvvKvvvKXvvK4gLS0gTm9ybWFsbHkgbm90IGEg77yw77yl77y0Lgor77yj77yh77y0ICAgICAgICAgLS0gTm8sIG5ldmVyIHB1dCBhIO+8pO+8r++8pyBhbmQgYSDvvKPvvKHvvLQgdG9nZXRoZXIhCivvvKbvvKnvvLPvvKggICAgICAgLS0gQ2F0cyBsaWtlIO+8pu+8qe+8s++8qC4KK++8rO+8pe+8re+8r++8riAgICAgLS0gWW91IO+8q++8ru+8r++8tyBob3cgaXQg77y077yh77yz77y077yl77yzLgpkaWZmIC0tZ2l0IGEvdGVzdC93aWRlY2hhcnMuaCBiL3Rlc3Qvd2lkZWNoYXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4OTdiYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvd2lkZWNoYXJzLmgKQEAgLTAsMCArMSw3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICoKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nICAgICAgKgorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCAgICAgICoKKyAqIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgICAgICAqCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgICAgKgorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCAgKgorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyAgKgorICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAgICAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gICAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sICAgKgorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SICAgICoKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiAgICAqCisgKiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lKHMpIG9mIHRoZSBhYm92ZSBjb3B5cmlnaHQgICAqCisgKiBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSAgICAgKgorICogc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICoKKyAqIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1dJREVDSEFSU19ICisjZGVmaW5lIF9fV0lERUNIQVJTX0ggMQorCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZiBVU0VfV0lERUNfU1VQUE9SVAorCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKy8qCisgKiBNaW5HVyBoYXMgd2lkZS1jaGFyYWN0ZXIgZnVuY3Rpb25zLCBidXQgdGhleSBkbyBub3Qgd29yayBjb3JyZWN0bHkuCisgKi8KKworZXh0ZXJuIGludCBfbmNfbWJ0b3djKHdjaGFyX3QgKnB3YywgY29uc3QgY2hhciAqcywgc2l6ZV90IG4pOworZXh0ZXJuIGludCBfX01JTkdXX05PVEhST1cgX25jX21idG93Yyh3Y2hhcl90ICpwd2MsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBuKTsKKyNkZWZpbmUgbWJ0b3djKHB3YyxzLG4pIF9uY19tYnRvd2MocHdjLHMsbikKKworZXh0ZXJuIGludCBfX01JTkdXX05PVEhST1cgX25jX21ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKyNkZWZpbmUgbWJsZW4ocyxuKSBfbmNfbWJsZW4ocywgbikKKworI2VuZGlmIC8qIF9fTUlOR1czMl9fICovCisKKyNpZiBIQVZFX01CVE9XQyAmJiBIQVZFX01CTEVOCisjZGVmaW5lIHJlc2V0X21ieXRlcyhzdGF0ZSkgSUdOT1JFX1JDKG1ibGVuKE5VTEwsIDApKSwgSUdOT1JFX1JDKG1idG93YyhOVUxMLCBOVUxMLCAwKSkKKyNkZWZpbmUgY291bnRfbWJ5dGVzKGJ1ZmZlcixsZW5ndGgsc3RhdGUpIG1ibGVuKGJ1ZmZlcixsZW5ndGgpCisjZGVmaW5lIGNoZWNrX21ieXRlcyh3Y2gsYnVmZmVyLGxlbmd0aCxzdGF0ZSkgXAorCShpbnQpIG1idG93Yygmd2NoLCBidWZmZXIsIGxlbmd0aCkKKyNkZWZpbmUgc3RhdGVfdW51c2VkCisjZWxpZiBIQVZFX01CUlRPV0MgJiYgSEFWRV9NQlJMRU4KKyNkZWZpbmUgcmVzZXRfbWJ5dGVzKHN0YXRlKSBpbml0X21iKHN0YXRlKQorI2RlZmluZSBjb3VudF9tYnl0ZXMoYnVmZmVyLGxlbmd0aCxzdGF0ZSkgbWJybGVuKGJ1ZmZlcixsZW5ndGgsJnN0YXRlKQorI2RlZmluZSBjaGVja19tYnl0ZXMod2NoLGJ1ZmZlcixsZW5ndGgsc3RhdGUpIFwKKwkoaW50KSBtYnJ0b3djKCZ3Y2gsIGJ1ZmZlciwgbGVuZ3RoLCAmc3RhdGUpCisjZWxzZQorbWFrZSBhbiBlcnJvcgorI2VuZGlmCisKKyNlbHNlCisKKyNlbmRpZiAvKiBVU0VfV0lERUNfU1VQUE9SVCAqLworCitleHRlcm4gdm9pZCB3aWRlY2hhcnNfc3R1Yih2b2lkKTsKKworI2VuZGlmIC8qIF9fV0lERUNIQVJTX0ggKi8KZGlmZiAtLWdpdCBhL3Rlc3Qvd29ybS5jIGIvdGVzdC93b3JtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNmYzBkYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvd29ybS5jCkBAIC0wLDAgKzEsNjMxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIsMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAgICAqCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAgICAgKgorICogZGlzdHJpYnV0ZSwgZGlzdHJpYnV0ZSB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsICAgICAgICoKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAgICAqCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkICAqCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTICAqCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GICAgICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgICAqCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgICAgKgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SICAgICoKKyAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICoKKyAqIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlICAgICAqCisgKiBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgKgorICogYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKworCSBAQEAgICAgICAgIEBAQCAgICBAQEBAQEBAQEBAICAgICBAQEBAQEBAQEBAQCAgICBAQEBAQEBAQEBAQEAKKwkgQEBAICAgICAgICBAQEAgICBAQEBAQEBAQEBAQEAgICAgQEBAQEBAQEBAQEBAICAgQEBAQEBAQEBAQEBAQAorCSBAQEAgICAgICAgIEBAQCAgQEBAQCAgICAgIEBAQEAgICBAQEBAICAgICAgICAgICBAQEBAIEBAQCAgQEBAQAorCSBAQEAgICBAQCAgIEBAQCAgQEBAICAgICAgICBAQEAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCSBAQEAgIEBAQEAgIEBAQCAgQEBAICAgICAgICBAQEAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCSBAQEBAIEBAQEAgQEBAQCAgQEBAICAgICAgICBAQEAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCSAgQEBAQEBAQEBAQEBAICAgQEBAQCAgICAgIEBAQEAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCSAgIEBAQEAgIEBAQEAgICAgIEBAQEBAQEBAQEBAQCAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCSAgICBAQCAgICBAQCAgICAgICBAQEBAQEBAQEBAICAgICBAQEAgICAgICAgICAgICBAQEAgIEBAQCAgIEBAQAorCisJCQkJIEVyaWMgUC4gU2NvdHQKKwkJCSAgQ2FsdGVjaCBIaWdoIEVuZXJneSBQaHlzaWNzCisJCQkJIE9jdG9iZXIsIDE5ODAKKworCQlIYWNrcyB0byB0dXJuIHRoaXMgaW50byBhIHRlc3QgZnJhbWUgZm9yIGN1cnNvciBtb3ZlbWVudDoKKwkJCUVyaWMgUy4gUmF5bW9uZCA8ZXNyQHNuYXJrLnRoeXJzdXMuY29tPgorCQkJCUphbnVhcnksIDE5OTUKKworCQlKdWx5IDE5OTUgKGVzcik6IHdvcm1zIGlzIG5vdyBpbiBsaXZpbmcgY29sb3IhIDotKQorCitPcHRpb25zOgorCS1mCQkJZmlsbCBzY3JlZW4gd2l0aCBjb3BpZXMgb2YgJ1dPUk0nIGF0IHN0YXJ0LgorCS1sIDxuPgkJCXNldCB3b3JtIGxlbmd0aAorCS1uIDxuPgkJCXNldCBudW1iZXIgb2Ygd29ybXMKKwktdAkJCW1ha2Ugd29ybXMgbGVhdmUgZHJvcHBpbmdzCisJLVQgPHN0YXJ0PiA8ZW5kPglzZXQgdHJhY2UgaW50ZXJ2YWwKKwktUwkJCXNldCBzaW5nbGUtc3RlcHBpbmcgZHVyaW5nIHRyYWNlIGludGVydmFsCisJLU4JCQlzdXBwcmVzcyBjdXJzb3ItbW92ZW1lbnQgb3B0aW1pemF0aW9uCisKKyAgVGhpcyBwcm9ncmFtIG1ha2VzIGEgZ29vZCB0b3J0dXJlLXRlc3QgZm9yIHRoZSBuY3Vyc2VzIGN1cnNvci1vcHRpbWl6YXRpb24KKyAgY29kZS4gIFlvdSBjYW4gdXNlIC1UIHRvIHNldCB0aGUgd29ybSBtb3ZlIGludGVydmFsIG92ZXIgd2hpY2ggbW92ZW1lbnQKKyAgdHJhY2VzIHdpbGwgYmUgZHVtcGVkLiAgVGhlIHByb2dyYW0gc3RvcHMgYW5kIHdhaXRzIGZvciBvbmUgY2hhcmFjdGVyIG9mCisgIGlucHV0IGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgaW50ZXJ2YWwuCisKKyAgJElkOiB3b3JtLmMsdiAxLjY1IDIwMTMvMDYvMjIgMjA6MDE6NDEgdG9tIEV4cCAkCisqLworCisjaW5jbHVkZSA8dGVzdC5wcml2Lmg+CisKKyNpZmRlZiBVU0VfUFRIUkVBRFMKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKworV0FOVF9VU0VfV0lORE9XKCk7CisKKyNkZWZpbmUgTUFYX1dPUk1TCTQwCisjZGVmaW5lIE1BWF9MRU5HVEgJMTAyNAorCitzdGF0aWMgY2h0eXBlIGZsYXZvcltdID0KK3sKKyAgICAnTycsICcqJywgJyMnLCAnJCcsICclJywgJzAnLCAnQCcsCit9Oworc3RhdGljIGNvbnN0IGludCB4aW5jW10gPQoreworICAgIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTEsIDAKK30sIHlpbmNbXSA9Cit7CisgICAgLTEsIDAsIDEsIDEsIDEsIDAsIC0xLCAtMQorfTsKKwordHlwZWRlZiBzdHJ1Y3Qgd29ybSB7CisgICAgaW50IG9yaWVudGF0aW9uOworICAgIGludCBoZWFkOworICAgIGludCAqeHBvczsKKyAgICBpbnQgKnlwb3M7CisgICAgY2h0eXBlIGF0dHJzOworI2lmZGVmIFVTRV9QVEhSRUFEUworICAgIHB0aHJlYWRfdCB0aHJlYWQ7CisjZW5kaWYKK30gV09STTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgc2VxdWVuY2UgPSAwOworc3RhdGljIGJvb2wgcXVpdHRpbmcgPSBGQUxTRTsKKworc3RhdGljIFdPUk0gd29ybVtNQVhfV09STVNdOworc3RhdGljIGludCAqKnJlZnM7CitzdGF0aWMgaW50IGxhc3RfeCwgbGFzdF95OworCitzdGF0aWMgY29uc3QgY2hhciAqZmllbGQ7CitzdGF0aWMgaW50IGxlbmd0aCA9IDE2LCBudW1iZXIgPSAzOworc3RhdGljIGNodHlwZSB0cmFpbCA9ICcgJzsKKworc3RhdGljIHVuc2lnbmVkIHBlbmRpbmc7CisjaWZkZWYgVFJBQ0UKK3N0YXRpYyBpbnQgZ2VuZXJhdGlvbiwgdHJhY2Vfc3RhcnQsIHRyYWNlX2VuZDsKKyNlbmRpZiAvKiBUUkFDRSAqLworLyogKklOREVOVC1PRkYqICovCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbnMgeworICAgIGludCBub3B0czsKKyAgICBpbnQgb3B0c1szXTsKK30gbm9ybWFsWzhdPXsKKyAgICB7IDMsIHsgNywgMCwgMSB9IH0sCisgICAgeyAzLCB7IDAsIDEsIDIgfSB9LAorICAgIHsgMywgeyAxLCAyLCAzIH0gfSwKKyAgICB7IDMsIHsgMiwgMywgNCB9IH0sCisgICAgeyAzLCB7IDMsIDQsIDUgfSB9LAorICAgIHsgMywgeyA0LCA1LCA2IH0gfSwKKyAgICB7IDMsIHsgNSwgNiwgNyB9IH0sCisgICAgeyAzLCB7IDYsIDcsIDAgfSB9Cit9LCB1cHBlcls4XT17CisgICAgeyAxLCB7IDEsIDAsIDAgfSB9LAorICAgIHsgMiwgeyAxLCAyLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgNCwgNSwgMCB9IH0sCisgICAgeyAxLCB7IDUsIDAsIDAgfSB9LAorICAgIHsgMiwgeyAxLCA1LCAwIH0gfQorfSwgbGVmdFs4XT17CisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAyLCB7IDIsIDMsIDAgfSB9LAorICAgIHsgMSwgeyAzLCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgMywgNywgMCB9IH0sCisgICAgeyAxLCB7IDcsIDAsIDAgfSB9LAorICAgIHsgMiwgeyA3LCAwLCAwIH0gfQorfSwgcmlnaHRbOF09eworICAgIHsgMSwgeyA3LCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgMywgNywgMCB9IH0sCisgICAgeyAxLCB7IDMsIDAsIDAgfSB9LAorICAgIHsgMiwgeyAzLCA0LCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgNiwgNywgMCB9IH0KK30sIGxvd2VyWzhdPXsKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAyLCB7IDAsIDEsIDAgfSB9LAorICAgIHsgMSwgeyAxLCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgMSwgNSwgMCB9IH0sCisgICAgeyAxLCB7IDUsIDAsIDAgfSB9LAorICAgIHsgMiwgeyA1LCA2LCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9Cit9LCB1cGxlZnRbOF09eworICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAxLCB7IDMsIDAsIDAgfSB9LAorICAgIHsgMiwgeyAxLCAzLCAwIH0gfSwKKyAgICB7IDEsIHsgMSwgMCwgMCB9IH0KK30sIHVwcmlnaHRbOF09eworICAgIHsgMiwgeyAzLCA1LCAwIH0gfSwKKyAgICB7IDEsIHsgMywgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDEsIHsgNSwgMCwgMCB9IH0KK30sIGxvd2xlZnRbOF09eworICAgIHsgMywgeyA3LCAwLCAxIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMSwgeyAxLCAwLCAwIH0gfSwKKyAgICB7IDIsIHsgMSwgNywgMCB9IH0sCisgICAgeyAxLCB7IDcsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0KK30sIGxvd3JpZ2h0WzhdPXsKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAxLCB7IDcsIDAsIDAgfSB9LAorICAgIHsgMiwgeyA1LCA3LCAwIH0gfSwKKyAgICB7IDEsIHsgNSwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9LAorICAgIHsgMCwgeyAwLCAwLCAwIH0gfSwKKyAgICB7IDAsIHsgMCwgMCwgMCB9IH0sCisgICAgeyAwLCB7IDAsIDAsIDAgfSB9Cit9OworLyogKklOREVOVC1PTiogKi8KKworc3RhdGljIHZvaWQKK2ZhaWxlZChjb25zdCBjaGFyICpzKQoreworICAgIHBlcnJvcihzKTsKKyAgICBlbmR3aW4oKTsKKyAgICBFeGl0UHJvZ3JhbShFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cCh2b2lkKQoreworICAgIFVTSU5HX1dJTkRPVyhzdGRzY3IsIHdyZWZyZXNoKTsKKyAgICBjdXJzX3NldCgxKTsKKyAgICBlbmR3aW4oKTsKK30KKworc3RhdGljIHZvaWQKK29uc2lnKGludCBzaWcgR0NDX1VOVVNFRCkKK3sKKyAgICBjbGVhbnVwKCk7CisgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIGRvdWJsZQorcmFuZih2b2lkKQoreworICAgIGxvbmcgciA9IChyYW5kKCkgJiAwNzc3NzcpOworICAgIHJldHVybiAoKGRvdWJsZSkgciAvIDMyNzY4Lik7Cit9CisKK3N0YXRpYyBpbnQKK2RyYXdfd29ybShXSU5ET1cgKndpbiwgdm9pZCAqZGF0YSkKK3sKKyAgICBXT1JNICp3ID0gKFdPUk0gKikgZGF0YTsKKyAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9ucyAqb3A7CisgICAgdW5zaWduZWQgbWFzayA9ICh1bnNpZ25lZCkgKH4oMSA8PCAodyAtIHdvcm0pKSk7CisgICAgY2h0eXBlIGF0dHJzID0gdy0+YXR0cnMgfCAoKG1hc2sgJiBwZW5kaW5nKSA/IEFfUkVWRVJTRSA6IDApOworCisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IGg7CisKKyAgICBib29sIGRvbmUgPSBGQUxTRTsKKworICAgIGlmICgoeCA9IHctPnhwb3NbaCA9IHctPmhlYWRdKSA8IDApIHsKKwl3bW92ZSh3aW4sIHkgPSB3LT55cG9zW2hdID0gbGFzdF95LCB4ID0gdy0+eHBvc1toXSA9IDApOworCXdhZGRjaCh3aW4sIGF0dHJzKTsKKwlyZWZzW3ldW3hdKys7CisgICAgfSBlbHNlIHsKKwl5ID0gdy0+eXBvc1toXTsKKyAgICB9CisKKyAgICBpZiAoeCA+IGxhc3RfeCkKKwl4ID0gbGFzdF94OworICAgIGlmICh5ID4gbGFzdF95KQorCXkgPSBsYXN0X3k7CisKKyAgICBpZiAoKytoID09IGxlbmd0aCkKKwloID0gMDsKKworICAgIGlmICh3LT54cG9zW3ctPmhlYWQgPSBoXSA+PSAwKSB7CisJaW50IHgxLCB5MTsKKwl4MSA9IHctPnhwb3NbaF07CisJeTEgPSB3LT55cG9zW2hdOworCWlmICh5MSA8IExJTkVTCisJICAgICYmIHgxIDwgQ09MUworCSAgICAmJiAtLXJlZnNbeTFdW3gxXSA9PSAwKSB7CisJICAgIHdtb3ZlKHdpbiwgeTEsIHgxKTsKKwkgICAgd2FkZGNoKHdpbiwgdHJhaWwpOworCX0KKyAgICB9CisKKyAgICBvcCA9ICYoeCA9PSAwCisJICAgPyAoeSA9PSAwCisJICAgICAgPyB1cGxlZnQKKwkgICAgICA6ICh5ID09IGxhc3RfeQorCQkgPyBsb3dsZWZ0CisJCSA6IGxlZnQpKQorCSAgIDogKHggPT0gbGFzdF94CisJICAgICAgPyAoeSA9PSAwCisJCSA/IHVwcmlnaHQKKwkJIDogKHkgPT0gbGFzdF95CisJCSAgICA/IGxvd3JpZ2h0CisJCSAgICA6IHJpZ2h0KSkKKwkgICAgICA6ICh5ID09IDAKKwkJID8gdXBwZXIKKwkJIDogKHkgPT0gbGFzdF95CisJCSAgICA/IGxvd2VyCisJCSAgICA6IG5vcm1hbCkpKSlbdy0+b3JpZW50YXRpb25dOworCisgICAgc3dpdGNoIChvcC0+bm9wdHMpIHsKKyAgICBjYXNlIDA6CisJZG9uZSA9IFRSVUU7CisJYnJlYWs7CisgICAgY2FzZSAxOgorCXctPm9yaWVudGF0aW9uID0gb3AtPm9wdHNbMF07CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwl3LT5vcmllbnRhdGlvbiA9IG9wLT5vcHRzWyhpbnQpIChyYW5mKCkgKiAoZG91YmxlKSBvcC0+bm9wdHMpXTsKKwlicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWRvbmUpIHsKKwl4ICs9IHhpbmNbdy0+b3JpZW50YXRpb25dOworCXkgKz0geWluY1t3LT5vcmllbnRhdGlvbl07CisJd21vdmUod2luLCB5LCB4KTsKKworCWlmICh5IDwgMCkKKwkgICAgeSA9IDA7CisJd2FkZGNoKHdpbiwgYXR0cnMpOworCisJdy0+eXBvc1toXSA9IHk7CisJdy0+eHBvc1toXSA9IHg7CisJcmVmc1t5XVt4XSsrOworICAgIH0KKworICAgIHJldHVybiBkb25lOworfQorCisjaWZkZWYgVVNFX1BUSFJFQURTCitzdGF0aWMgYm9vbAorcXVpdF93b3JtKGludCBiaXRudW0pCit7CisgICAgcGVuZGluZyB8PSAoMSA8PCBiaXRudW0pOworICAgIG5hcG1zKDEwKTsJCQkvKiBsZXQgdGhlIG90aGVyIHRocmVhZChzKSBoYXZlIGEgY2hhbmNlICovCisgICAgcGVuZGluZyAmPSB+KDEgPDwgYml0bnVtKTsKKyAgICByZXR1cm4gcXVpdHRpbmc7Cit9CisKK3N0YXRpYyB2b2lkICoKK3N0YXJ0X3dvcm0odm9pZCAqYXJnKQoreworICAgIHVuc2lnbmVkIGxvbmcgY29tcGFyZSA9IDA7CisgICAgVHJhY2UoKCJzdGFydF93b3JtIikpOworICAgIHdoaWxlICghcXVpdF93b3JtKCgoc3RydWN0IHdvcm0gKikgYXJnKSAtIHdvcm0pKSB7CisJd2hpbGUgKGNvbXBhcmUgPCBzZXF1ZW5jZSkgeworCSAgICArK2NvbXBhcmU7CisjaWYgSEFWRV9VU0VfV0lORE9XCisJICAgIHVzZV93aW5kb3coc3Rkc2NyLCBkcmF3X3dvcm0sIGFyZyk7CisjZWxzZQorCSAgICBkcmF3X3dvcm0oc3Rkc2NyLCBhcmcpOworI2VuZGlmCisJfQorICAgIH0KKyAgICBUcmFjZSgoIi4uLnN0YXJ0X3dvcm0gKGRvbmUpIikpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKK3N0YXRpYyBib29sCitkcmF3X2FsbF93b3Jtcyh2b2lkKQoreworICAgIGJvb2wgZG9uZSA9IEZBTFNFOworICAgIGludCBuOworICAgIHN0cnVjdCB3b3JtICp3OworCisjaWZkZWYgVVNFX1BUSFJFQURTCisgICAgc3RhdGljIGJvb2wgZmlyc3QgPSBUUlVFOworICAgIGlmIChmaXJzdCkgeworCWZpcnN0ID0gRkFMU0U7CisJZm9yIChuID0gMCwgdyA9ICZ3b3JtWzBdOyBuIDwgbnVtYmVyOyBuKyssIHcrKykgeworCSAgICAodm9pZCkgcHRocmVhZF9jcmVhdGUoJih3LT50aHJlYWQpLCBOVUxMLCBzdGFydF93b3JtLCB3KTsKKwl9CisgICAgfQorI2Vsc2UKKyAgICBmb3IgKG4gPSAwLCB3ID0gJndvcm1bMF07IG4gPCBudW1iZXI7IG4rKywgdysrKSB7CisJaWYgKAorI2lmIEhBVkVfVVNFX1dJTkRPVworCSAgICAgICBVU0lOR19XSU5ET1cyKHN0ZHNjciwgZHJhd193b3JtLCB3KQorI2Vsc2UKKwkgICAgICAgZHJhd193b3JtKHN0ZHNjciwgdykKKyNlbmRpZgorCSAgICApCisJICAgIGRvbmUgPSBUUlVFOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBkb25lOworfQorCitzdGF0aWMgaW50CitnZXRfaW5wdXQodm9pZCkKK3sKKyAgICBpbnQgY2g7CisgICAgY2ggPSBVU0lOR19XSU5ET1coc3Rkc2NyLCB3Z2V0Y2gpOworICAgIHJldHVybiBjaDsKK30KKworI2lmZGVmIEtFWV9SRVNJWkUKK3N0YXRpYyBpbnQKK3VwZGF0ZV9yZWZzKFdJTkRPVyAqd2luKQoreworICAgIGludCB4LCB5OworCisgICAgKHZvaWQpIHdpbjsKKyAgICBpZiAobGFzdF94ICE9IENPTFMgLSAxKSB7CisJZm9yICh5ID0gMDsgeSA8PSBsYXN0X3k7IHkrKykgeworCSAgICByZWZzW3ldID0gdHlwZVJlYWxsb2MoaW50LCAoc2l6ZV90KSBDT0xTLCByZWZzW3ldKTsKKwkgICAgaWYgKCFyZWZzW3ldKQorCQlmYWlsZWQoInVwZGF0ZV9yZWZzIik7CisJICAgIGZvciAoeCA9IGxhc3RfeCArIDE7IHggPCBDT0xTOyB4KyspCisJCXJlZnNbeV1beF0gPSAwOworCX0KKwlsYXN0X3ggPSBDT0xTIC0gMTsKKyAgICB9CisgICAgaWYgKGxhc3RfeSAhPSBMSU5FUyAtIDEpIHsKKwlmb3IgKHkgPSBMSU5FUzsgeSA8PSBsYXN0X3k7IHkrKykKKwkgICAgZnJlZShyZWZzW3ldKTsKKwlyZWZzID0gdHlwZVJlYWxsb2MoaW50ICosIChzaXplX3QpIExJTkVTLCByZWZzKTsKKwlmb3IgKHkgPSBsYXN0X3kgKyAxOyB5IDwgTElORVM7IHkrKykgeworCSAgICByZWZzW3ldID0gdHlwZU1hbGxvYyhpbnQsIChzaXplX3QpIENPTFMpOworCSAgICBpZiAoIXJlZnNbeV0pCisJCWZhaWxlZCgidXBkYXRlX3JlZnMiKTsKKwkgICAgZm9yICh4ID0gMDsgeCA8IENPTFM7IHgrKykKKwkJcmVmc1t5XVt4XSA9IDA7CisJfQorCWxhc3RfeSA9IExJTkVTIC0gMTsKKyAgICB9CisgICAgcmV0dXJuIE9LOworfQorI2VuZGlmCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGludCB4LCB5OworICAgIGludCBuOworICAgIHN0cnVjdCB3b3JtICp3OworICAgIGludCAqaXA7CisgICAgYm9vbCBkb25lID0gRkFMU0U7CisgICAgaW50IG1heF9yZWZzOworCisgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOworCisgICAgZm9yICh4ID0gMTsgeCA8IGFyZ2M7IHgrKykgeworCWNoYXIgKnA7CisJcCA9IGFyZ3ZbeF07CisJaWYgKCpwID09ICctJykKKwkgICAgcCsrOworCXN3aXRjaCAoKnApIHsKKwljYXNlICdmJzoKKwkgICAgZmllbGQgPSAiV09STSI7CisJICAgIGJyZWFrOworCWNhc2UgJ2wnOgorCSAgICBpZiAoKyt4ID09IGFyZ2MpCisJCWdvdG8gdXNhZ2U7CisJICAgIGlmICgobGVuZ3RoID0gYXRvaShhcmd2W3hdKSkgPCAyIHx8IGxlbmd0aCA+IE1BWF9MRU5HVEgpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogSW52YWxpZCBsZW5ndGhcbiIsICphcmd2KTsKKwkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICduJzoKKwkgICAgaWYgKCsreCA9PSBhcmdjKQorCQlnb3RvIHVzYWdlOworCSAgICBpZiAoKG51bWJlciA9IGF0b2koYXJndlt4XSkpIDwgMSB8fCBudW1iZXIgPiBNQVhfV09STVMpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogSW52YWxpZCBudW1iZXIgb2Ygd29ybXNcbiIsICphcmd2KTsKKwkJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlICd0JzoKKwkgICAgdHJhaWwgPSAnLic7CisJICAgIGJyZWFrOworI2lmZGVmIFRSQUNFCisJY2FzZSAnVCc6CisJICAgIHRyYWNlX3N0YXJ0ID0gYXRvaShhcmd2WysreF0pOworCSAgICB0cmFjZV9lbmQgPSBhdG9pKGFyZ3ZbKyt4XSk7CisJICAgIGJyZWFrOworCWNhc2UgJ04nOgorCSAgICBfbmNfb3B0aW1pemVfZW5hYmxlIF49IE9QVElNSVpFX0FMTDsJLyogZGVjbGFyZWQgYnkgbmN1cnNlcyAqLworCSAgICBicmVhazsKKyNlbmRpZiAvKiBUUkFDRSAqLworCWRlZmF1bHQ6CisJICB1c2FnZToKKwkgICAgZnByaW50ZihzdGRlcnIsCisJCSAgICAidXNhZ2U6ICVzIFstZmllbGRdIFstbGVuZ3RoICNdIFstbnVtYmVyICNdIFstdHJhaWxdXG4iLCAqYXJndik7CisJICAgIEV4aXRQcm9ncmFtKEVYSVRfRkFJTFVSRSk7CisJfQorICAgIH0KKworICAgIHNpZ25hbChTSUdJTlQsIG9uc2lnKTsKKyAgICBpbml0c2NyKCk7CisgICAgbm9lY2hvKCk7CisgICAgY2JyZWFrKCk7CisgICAgbm9ubCgpOworCisgICAgY3Vyc19zZXQoMCk7CisKKyAgICBsYXN0X3kgPSBMSU5FUyAtIDE7CisgICAgbGFzdF94ID0gQ09MUyAtIDE7CisKKyNpZmRlZiBBX0NPTE9SCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCBiZyA9IENPTE9SX0JMQUNLOworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIGJnID0gLTE7CisjZW5kaWYKKworI2RlZmluZSBTRVRfQ09MT1IobnVtLCBmZykgXAorCSAgICBpbml0X3BhaXIobnVtKzEsIChzaG9ydCkgZmcsIChzaG9ydCkgYmcpOyBcCisJICAgIGZsYXZvcltudW1dIHw9IChjaHR5cGUpIENPTE9SX1BBSVIobnVtKzEpIHwgQV9CT0xECisKKwlTRVRfQ09MT1IoMCwgQ09MT1JfR1JFRU4pOworCVNFVF9DT0xPUigxLCBDT0xPUl9SRUQpOworCVNFVF9DT0xPUigyLCBDT0xPUl9DWUFOKTsKKwlTRVRfQ09MT1IoMywgQ09MT1JfV0hJVEUpOworCVNFVF9DT0xPUig0LCBDT0xPUl9NQUdFTlRBKTsKKwlTRVRfQ09MT1IoNSwgQ09MT1JfQkxVRSk7CisJU0VUX0NPTE9SKDYsIENPTE9SX1lFTExPVyk7CisgICAgfQorI2VuZGlmIC8qIEFfQ09MT1IgKi8KKworICAgIG1heF9yZWZzID0gTElORVM7CisgICAgcmVmcyA9IHR5cGVNYWxsb2MoaW50ICosIChzaXplX3QpIG1heF9yZWZzKTsKKyAgICBmb3IgKHkgPSAwOyB5IDwgbWF4X3JlZnM7IHkrKykgeworCXJlZnNbeV0gPSB0eXBlTWFsbG9jKGludCwgKHNpemVfdCkgQ09MUyk7CisJZm9yICh4ID0gMDsgeCA8IENPTFM7IHgrKykgeworCSAgICByZWZzW3ldW3hdID0gMDsKKwl9CisgICAgfQorCisjaWZkZWYgQkFEQ09STkVSCisgICAgLyogaWYgYWRkcmVzc2luZyB0aGUgbG93ZXIgcmlnaHQgY29ybmVyIGRvZXNuJ3Qgd29yayBpbiB5b3VyIGN1cnNlcyAqLworICAgIHJlZnNbbGFzdF95XVtsYXN0X3hdID0gMTsKKyNlbmRpZiAvKiBCQURDT1JORVIgKi8KKworICAgIGZvciAobiA9IG51bWJlciwgdyA9ICZ3b3JtWzBdOyAtLW4gPj0gMDsgdysrKSB7CisJdy0+YXR0cnMgPSBmbGF2b3JbKHVuc2lnbmVkKSBuICUgU0laRU9GKGZsYXZvcildOworCXctPm9yaWVudGF0aW9uID0gMDsKKwl3LT5oZWFkID0gMDsKKworCWlmICghKGlwID0gdHlwZU1hbGxvYyhpbnQsIChzaXplX3QpIChsZW5ndGggKyAxKSkpKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IG91dCBvZiBtZW1vcnlcbiIsICphcmd2KTsKKwkgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwl9CisJdy0+eHBvcyA9IGlwOworCWZvciAoeCA9IGxlbmd0aDsgLS14ID49IDA7KQorCSAgICAqaXArKyA9IC0xOworCWlmICghKGlwID0gdHlwZU1hbGxvYyhpbnQsIChzaXplX3QpIChsZW5ndGggKyAxKSkpKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IG91dCBvZiBtZW1vcnlcbiIsICphcmd2KTsKKwkgICAgRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKwl9CisJdy0+eXBvcyA9IGlwOworCWZvciAoeSA9IGxlbmd0aDsgLS15ID49IDA7KQorCSAgICAqaXArKyA9IC0xOworICAgIH0KKyAgICBpZiAoZmllbGQpIHsKKwljb25zdCBjaGFyICpwOworCXAgPSBmaWVsZDsKKwlmb3IgKHkgPSBsYXN0X3k7IC0teSA+PSAwOykgeworCSAgICBmb3IgKHggPSBDT0xTOyAtLXggPj0gMDspIHsKKwkJYWRkY2goKGNodHlwZSkgKCpwKyspKTsKKwkJaWYgKCEqcCkKKwkJICAgIHAgPSBmaWVsZDsKKwkgICAgfQorCX0KKyAgICB9CisgICAgVVNJTkdfV0lORE9XKHN0ZHNjciwgd3JlZnJlc2gpOworICAgIG5vZGVsYXkoc3Rkc2NyLCBUUlVFKTsKKworICAgIHdoaWxlICghZG9uZSkgeworCWludCBjaDsKKworCSsrc2VxdWVuY2U7CisJaWYgKChjaCA9IGdldF9pbnB1dCgpKSA+IDApIHsKKyNpZmRlZiBUUkFDRQorCSAgICBpZiAodHJhY2Vfc3RhcnQgfHwgdHJhY2VfZW5kKSB7CisJCWlmIChnZW5lcmF0aW9uID09IHRyYWNlX3N0YXJ0KSB7CisJCSAgICB0cmFjZShUUkFDRV9DQUxMUyk7CisJCSAgICBnZXRfaW5wdXQoKTsKKwkJfSBlbHNlIGlmIChnZW5lcmF0aW9uID09IHRyYWNlX2VuZCkgeworCQkgICAgdHJhY2UoMCk7CisJCSAgICBnZXRfaW5wdXQoKTsKKwkJfQorCisJCWdlbmVyYXRpb24rKzsKKwkgICAgfQorI2VuZGlmCisKKyNpZmRlZiBLRVlfUkVTSVpFCisJICAgIGlmIChjaCA9PSBLRVlfUkVTSVpFKSB7CisJCVVTSU5HX1dJTkRPVyhzdGRzY3IsIHVwZGF0ZV9yZWZzKTsKKwkgICAgfQorI2VuZGlmCisKKwkgICAgLyoKKwkgICAgICogTWFrZSBpdCBzaW1wbGUgdG8gcHV0IHRoaXMgaW50byBzaW5nbGUtc3RlcCBtb2RlLCBvciByZXN1bWUKKwkgICAgICogbm9ybWFsIG9wZXJhdGlvbiAtVC5EaWNrZXkKKwkgICAgICovCisJICAgIGlmIChjaCA9PSAncScpIHsKKwkJcXVpdHRpbmcgPSBUUlVFOworCQlkb25lID0gVFJVRTsKKwkJY29udGludWU7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gJ3MnKSB7CisJCW5vZGVsYXkoc3Rkc2NyLCBGQUxTRSk7CisJICAgIH0gZWxzZSBpZiAoY2ggPT0gJyAnKSB7CisJCW5vZGVsYXkoc3Rkc2NyLCBUUlVFKTsKKwkgICAgfQorCX0KKworCWRvbmUgPSBkcmF3X2FsbF93b3JtcygpOworCW5hcG1zKDEwKTsKKwlVU0lOR19XSU5ET1coc3Rkc2NyLCB3cmVmcmVzaCk7CisgICAgfQorCisgICAgVHJhY2UoKCJDbGVhbnVwIikpOworICAgIGNsZWFudXAoKTsKKyNpZmRlZiBOT19MRUFLUworICAgIGZvciAoeSA9IDA7IHkgPCBtYXhfcmVmczsgeSsrKSB7CisJZnJlZShyZWZzW3ldKTsKKyAgICB9CisgICAgZnJlZShyZWZzKTsKKyAgICBmb3IgKG4gPSBudW1iZXIsIHcgPSAmd29ybVswXTsgLS1uID49IDA7IHcrKykgeworCWZyZWUody0+eHBvcyk7CisJZnJlZSh3LT55cG9zKTsKKyAgICB9CisjZW5kaWYKKyNpZmRlZiBVU0VfUFRIUkVBRFMKKyAgICAvKgorICAgICAqIERvIHRoaXMganVzdCBpbiBjYXNlIG9uZSBvZiB0aGUgdGhyZWFkcyBkaWQgbm90IHJlYWxseSBleGl0LgorICAgICAqLworICAgIFRyYWNlKCgiam9pbiBhbGwgdGhyZWFkcyIpKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgbnVtYmVyOyBuKyspIHsKKwlwdGhyZWFkX2pvaW4od29ybVtuXS50aHJlYWQsIE5VTEwpOworICAgIH0KKyNlbmRpZgorICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L3htYXMuYyBiL3Rlc3QveG1hcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4N2ZjZDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3htYXMuYwpAQCAtMCwwICsxLDExNjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBhc2NpaXhtYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRGVjZW1iZXIgMTk4OSAgICAgICAgICAgICBMYXJyeSBCYXJ0eiAgICAgICAgICAgSW5kaWFuYXBvbGlzLCBJTiAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSSdtIGRyZWFtaW5nIG9mIGFuIGFzY2lpIGNoYXJhY3Rlci1iYXNlZCBtb25vY2hyb21lIENocmlzdG1hcywgICAgICAgICAgICAgKi8KKy8qIEp1c3QgbGlrZSB0aGUgb25lJ3MgSSB1c2VkIHRvIGtub3chICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBWaWEgYSBmdWxsIGR1cGxleCBjb21tdW5pY2F0aW9ucyBjaGFubmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQXQgOTYwMCBiaXRzIHBlciBzZWNvbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEV2ZW4gdGhvdWdoIGl0J3Mga2luZGEgc2xvdy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSSdtIGRyZWFtaW5nIG9mIGFuIGFzY2lpIGNoYXJhY3Rlci1iYXNlZCBtb25vY2hyb21lIENocmlzdG1hcywgICAgICAgICAgICAgKi8KKy8qIFdpdGggZXYncnkgQyBwcm9ncmFtIEkgd3JpdGUhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBNYXkgeW91ciBzY3JlZW4gYmUgbWVycnkgYW5kIGJyaWdodCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQW5kIG1heSBhbGwgeW91ciBDaHJpc3RtYXNlcyBiZSBhbWJlciBvciBncmVlbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIChmb3IgcmVkdWNlZCBleWVzdHJhaW4gYW5kIGltcHJvdmVkIHZpc2liaWxpdHkpISAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIElNUExFTUVOVEFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRmVlbCBmcmVlIHRvIG1vZGlmeSB0aGUgZGVmaW5lZCBzdHJpbmcgRlJPTVdITyB0byByZWZsZWN0IHlvdSwgeW91ciAgICAgICAgKi8KKy8qIG9yZ2FuaXphdGlvbiwgeW91ciBzaXRlLCB3aGF0ZXZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogVGhpcyByZWFsbHkgbG9va3MgYSBsb3QgYmV0dGVyIGlmIHlvdSBjYW4gdHVybiBvZmYgeW91ciBjdXJzb3IgYmVmb3JlICAgICAgKi8KKy8qIGV4ZWN1dGlvbi4gSSB3YW50ZWQgdG8gZG8gdGhhdCBoZXJlIGJ1dCB2ZXJ5IGZldyB0ZXJtY2FwIGVudHJpZXMgb3IgICAgICAgICovCisvKiB0ZXJtaW5mbyBkZWZpbml0aW9ucyBoYXZlIHRoZSBhcHByb3ByaWF0ZSBzdHJpbmcgZGVmaW5lZC4gSWYgeW91IGtub3cgICAgICAqLworLyogdGhlIHN0cmluZyhzKSBmb3IgdGhlIHRlcm1pbmFsKHMpIHlvdSB1c2Ugb3Igd2hpY2ggeW91ciBzaXRlIHN1cHBvcnRzLCAgICAgKi8KKy8qIHlvdSBjb3VsZCBjYWxsIGFzY2lpeG1hcyBmcm9tIHdpdGhpbiBhIHNoZWxsIGluIHdoaWNoIHlvdSBpc3N1ZSB0aGUgICAgICAgICovCisvKiBzdHJpbmcgdG8gdGhlIHRlcm1pbmFsLiBUaGUgY3Vyc29yIGlzIGRpc3RyYWN0aW5nIGJ1dCBpdCBkb2Vzbid0IHJlYWxseSAgICAqLworLyogcnVpbiB0aGUgc2hvdy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBBdCBvdXIgc2l0ZSwgd2UgaW52b2tlIHRoaXMgZm9yIG91ciB1c2VycyBqdXN0IGFmdGVyIGxvZ2luIGFuZCB0aGUgICAgICAgICAqLworLyogZGV0ZXJtaW5hdGlvbiBvZiB0ZXJtaW5hbCB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogUE9SVEFCSUxJVFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBJIHdyb3RlIHRoaXMgdXNpbmcgb25seSB0aGUgdmVyeSBzaW1wbGVzdCBjdXJzZXMgZnVuY3Rpb25zIHNvIHRoYXQgaXQgICAgICAqLworLyogbWlnaHQgYmUgdGhlIG1vc3QgcG9ydGFibGUuIEkgd2FzIHBlcnNvbmFsbHkgYWJsZSB0byB0ZXN0IG9uIGZpdmUgICAgICAgICAgKi8KKy8qIGRpZmZlcmVudCBjcHUvVU5JWCBjb21iaW5hdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIENPTVBJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogdXN1YWxseSB0aGlzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBjYyAtTyBhc2NpaXhtYXMuYyAtbGN1cnNlcyAtbyBhc2NpaXhtYXMgLXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBaaWxvZyBTODAwMCBtb2RlbHMgMTEsIDIxLCAzMSwgZXRjIHdpdGggWkVVUyB2YXJpYW50IG9mIFNZU1RFTSBJSUkgICAgICAgICAqLworLyogbWF5YmUgb3RoZXIgU1lTVEVNIElJSSBhbHNvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBjYyBhc2NpaXhtYXMuYyAtbGN1cnNlcyAtbHRlcm1saWIgLW8gYXNjaWl4bWFzIC1zICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGFzIGFib3ZlIHdpdGggb3B0aW9uYWwgInBlZXBob2xlIG9wdGltaXplciIgaW5zdGFsbGVkOiAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogY2MgLU8gYXNjaWl4bWFzLmMgLWxjdXJzZXMgLWx0ZXJtbGliIC1vIGFzY2lpeG1hcyAtcyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogWmlsb2cgUzgwMDAgbW9kZWxzIDMyLCAxMzAgd2l0aCBXRTMyMTAwIGNoaXAgYW5kIFNZUyBWLCBSRUwyICAgICAgICAgICAgICAgKi8KKy8qIG1heWJlIDNCMiBhbHNvPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogY2MgLWYgLU8gLUsgc2QgYXNjaWl4bWFzLmMgLWxjdXJzZXMgLW8gYXNjaWl4bWFzIC1zICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogUHlyYW1pZCwgU2VxdWVudCwgYW55IG90aGVyICJkdWFsIHVuaXZlcnNlIiB0eXBlcyBjb21waWxlIGFuZCBleGVjdXRlICAgICAgKi8KKy8qIHVuZGVyIGVpdGhlciB1bml2ZXJzZS4gVGhlIGNvbXBpbGUgbGluZSBmb3IgdGhlIHVjYiB1bml2ZXJzZSAoYXMgeW91ICAgICAgICovCisvKiBtaWdodCBleHBlY3QpIGlzIHRoZSBzYW1lIGFzIGZvciBTWVMgSUlJIFVOSVg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGNjIC1PIGFzY2lpeG1hcy5jIC1sY3Vyc2VzIC1sdGVybWxpYiAtbyBhc2NpaXhtYXMgLXMgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogVGhlIGFib3ZlIGNvbXBpbGUgd2lsbCBhbHNvIGhvbGQgdHJ1ZSBmb3Igb3RoZXIgQlNEIHN5c3RlbXMuIChJIGhvcGUpICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBGb3IgdGhlIFNjcm9vZ2VzIG91dCB0aGVyZSBhbW9uZyB5b3Ugd2hvIGRvbid0IHdhbnQgdGhpcyB0aGluZyB0byBsb29wICAgICAqLworLyogZm9yZXZlciAob3IgdW50aWwgdGhlIHVzZXIgaGl0cyBhIGtleSksIGluc2VydCB0aGlzIGludG8geW91ciBjb21waWxlICAgICAgKi8KKy8qIGxpbmUganVzdCBhZnRlciAiY2MiIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLUROT0xPT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBsaWtlIHNvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGNjIC1ETk9MT09QIC1PIGFzY2lpeG1hcy5jIC1sY3Vyc2VzIC1vIGFzY2lpeG1hcyAtcyAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogJElkOiB4bWFzLmMsdiAxLjI4IDIwMTMvMDQvMjcgMTk6NDY6NTMgdG9tIEV4cCAkCisgKi8KKyNpbmNsdWRlIDx0ZXN0LnByaXYuaD4KKworI2RlZmluZSBGUk9NV0hPICJNYXJrIEhlc3NsaW5nIC0gKE0uSGVzc2xpbmdAZ3UuZWR1LmF1KSIKKworc3RhdGljIGludCBteV9iZyA9IENPTE9SX0JMQUNLOworc3RhdGljIGludCB5X3BvcywgeF9wb3M7CisKK3N0YXRpYyBXSU5ET1cgKnRyZWVzY3JuOworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm4yOworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm4zOworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm40Oworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm41Oworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm42Oworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm43Oworc3RhdGljIFdJTkRPVyAqdHJlZXNjcm44Oworc3RhdGljIFdJTkRPVyAqZG90ZGVlcjA7CitzdGF0aWMgV0lORE9XICpzdGFyZGVlcjA7CitzdGF0aWMgV0lORE9XICpsaWxkZWVyMDsKK3N0YXRpYyBXSU5ET1cgKmxpbGRlZXIxOworc3RhdGljIFdJTkRPVyAqbGlsZGVlcjI7CitzdGF0aWMgV0lORE9XICpsaWxkZWVyMzsKK3N0YXRpYyBXSU5ET1cgKm1pZGRlZXIwOworc3RhdGljIFdJTkRPVyAqbWlkZGVlcjE7CitzdGF0aWMgV0lORE9XICptaWRkZWVyMjsKK3N0YXRpYyBXSU5ET1cgKm1pZGRlZXIzOworc3RhdGljIFdJTkRPVyAqYmlnZGVlcjA7CitzdGF0aWMgV0lORE9XICpiaWdkZWVyMTsKK3N0YXRpYyBXSU5ET1cgKmJpZ2RlZXIyOworc3RhdGljIFdJTkRPVyAqYmlnZGVlcjM7CitzdGF0aWMgV0lORE9XICpiaWdkZWVyNDsKK3N0YXRpYyBXSU5ET1cgKmxvb2tkZWVyMDsKK3N0YXRpYyBXSU5ET1cgKmxvb2tkZWVyMTsKK3N0YXRpYyBXSU5ET1cgKmxvb2tkZWVyMjsKK3N0YXRpYyBXSU5ET1cgKmxvb2tkZWVyMzsKK3N0YXRpYyBXSU5ET1cgKmxvb2tkZWVyNDsKK3N0YXRpYyBXSU5ET1cgKndfaG9saWRheTsKK3N0YXRpYyBXSU5ET1cgKndfZGVsX21zZzsKK3N0YXRpYyBib29sICpteV9wYWlyczsKKworc3RhdGljIGludCBib3hpdCh2b2lkKTsKK3N0YXRpYyBpbnQgc2Vhcyh2b2lkKTsKK3N0YXRpYyBpbnQgZ3JlZXQodm9pZCk7CitzdGF0aWMgaW50IGZyb213aG8odm9pZCk7CitzdGF0aWMgaW50IHRyZWUodm9pZCk7CitzdGF0aWMgaW50IGJhbGxzKHZvaWQpOworc3RhdGljIGludCBzdGFyKHZvaWQpOworc3RhdGljIGludCBzdHJuZzEodm9pZCk7CitzdGF0aWMgaW50IHN0cm5nMih2b2lkKTsKK3N0YXRpYyBpbnQgc3RybmczKHZvaWQpOworc3RhdGljIGludCBzdHJuZzQodm9pZCk7CitzdGF0aWMgaW50IHN0cm5nNSh2b2lkKTsKK3N0YXRpYyBpbnQgcmVpbmRlZXIodm9pZCk7CitzdGF0aWMgaW50IGJsaW5raXQodm9pZCk7CisKK3N0YXRpYyB2b2lkIGRvbmUoaW50IHNpZykgR0NDX05PUkVUVVJOOworCitzdGF0aWMgdm9pZAorc2V0X2NvbG9yKFdJTkRPVyAqd2luLCBjaHR5cGUgY29sb3IpCit7CisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCWludCBuID0gKGludCkgKGNvbG9yICsgMSk7CisJaWYgKG15X3BhaXJzID09IDApCisJICAgIG15X3BhaXJzID0gdHlwZUNhbGxvYyhib29sLCAoc2l6ZV90KSAoQ09MT1JTICsgMSkpOworCWlmICghbXlfcGFpcnNbbl0pIHsKKwkgICAgaW5pdF9wYWlyKChzaG9ydCkgbiwgKHNob3J0KSBjb2xvciwgKHNob3J0KSBteV9iZyk7CisJICAgIG15X3BhaXJzW25dID0gVFJVRTsKKwl9CisJd2F0dHJvZmYod2luLCBBX0NPTE9SKTsKKwl3YXR0cm9uKHdpbiwgQ09MT1JfUEFJUihuKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAordW5zZXRfY29sb3IoV0lORE9XICp3aW4pCit7CisgICAgaWYgKGhhc19jb2xvcnMoKSkKKwkodm9pZCkgd2F0dHJzZXQod2luLCBDT0xPUl9QQUlSKDApKTsKK30KKworc3RhdGljIHZvaWQKK2xvb2tfb3V0KGludCBtc2VjcykKK3sKKyAgICBuYXBtcyhtc2Vjcyk7CisgICAgaWYgKGdldGNoKCkgIT0gRVJSKSB7CisJYmVlcCgpOworCWRvbmUoMCk7CisgICAgfQorfQorCitpbnQKK21haW4oaW50IGFyZ2MgR0NDX1VOVVNFRCwgY2hhciAqKmFyZ3YgR0NDX1VOVVNFRCkKK3sKKyAgICBpbnQgbG9vcHk7CisKKyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisKKyAgICBpbml0c2NyKCk7CisgICAgbm9lY2hvKCk7CisgICAgbm9ubCgpOworICAgIHJlZnJlc2goKTsKKworICAgIENBVENIQUxMKGRvbmUpOworCisgICAgaWYgKGhhc19jb2xvcnMoKSkgeworCXN0YXJ0X2NvbG9yKCk7CisjaWYgSEFWRV9VU0VfREVGQVVMVF9DT0xPUlMKKwlpZiAodXNlX2RlZmF1bHRfY29sb3JzKCkgPT0gT0spCisJICAgIG15X2JnID0gLTE7CisjZW5kaWYKKyAgICB9CisgICAgY3Vyc19zZXQoMCk7CisKKyAgICBpZiAoKHRyZWVzY3JuID0gbmV3d2luKDE2LCAyNywgMywgNTMpKSA9PSAwIHx8CisJKHRyZWVzY3JuMiA9IG5ld3dpbigxNiwgMjcsIDMsIDUzKSkgPT0gMCB8fAorCSh0cmVlc2NybjMgPSBuZXd3aW4oMTYsIDI3LCAzLCA1MykpID09IDAgfHwKKwkodHJlZXNjcm40ID0gbmV3d2luKDE2LCAyNywgMywgNTMpKSA9PSAwIHx8CisJKHRyZWVzY3JuNSA9IG5ld3dpbigxNiwgMjcsIDMsIDUzKSkgPT0gMCB8fAorCSh0cmVlc2NybjYgPSBuZXd3aW4oMTYsIDI3LCAzLCA1MykpID09IDAgfHwKKwkodHJlZXNjcm43ID0gbmV3d2luKDE2LCAyNywgMywgNTMpKSA9PSAwIHx8CisJKHRyZWVzY3JuOCA9IG5ld3dpbigxNiwgMjcsIDMsIDUzKSkgPT0gMCB8fAorCisJKGRvdGRlZXIwID0gbmV3d2luKDMsIDcxLCAwLCA4KSkgPT0gMCB8fAorCisJKHN0YXJkZWVyMCA9IG5ld3dpbig0LCA1NiwgMCwgOCkpID09IDAgfHwKKworCShsaWxkZWVyMCA9IG5ld3dpbig3LCA1MywgMCwgOCkpID09IDAgfHwKKwkobGlsZGVlcjEgPSBuZXd3aW4oMiwgNCwgMCwgMCkpID09IDAgfHwKKwkobGlsZGVlcjIgPSBuZXd3aW4oMiwgNCwgMCwgMCkpID09IDAgfHwKKwkobGlsZGVlcjMgPSBuZXd3aW4oMiwgNCwgMCwgMCkpID09IDAgfHwKKworCShtaWRkZWVyMCA9IG5ld3dpbigxNSwgNDIsIDAsIDgpKSA9PSAwIHx8CisJKG1pZGRlZXIxID0gbmV3d2luKDMsIDcsIDAsIDApKSA9PSAwIHx8CisJKG1pZGRlZXIyID0gbmV3d2luKDMsIDcsIDAsIDApKSA9PSAwIHx8CisJKG1pZGRlZXIzID0gbmV3d2luKDMsIDcsIDAsIDApKSA9PSAwIHx8CisKKwkoYmlnZGVlcjAgPSBuZXd3aW4oMTAsIDIzLCAwLCAwKSkgPT0gMCB8fAorCShiaWdkZWVyMSA9IG5ld3dpbigxMCwgMjMsIDAsIDApKSA9PSAwIHx8CisJKGJpZ2RlZXIyID0gbmV3d2luKDEwLCAyMywgMCwgMCkpID09IDAgfHwKKwkoYmlnZGVlcjMgPSBuZXd3aW4oMTAsIDIzLCAwLCAwKSkgPT0gMCB8fAorCShiaWdkZWVyNCA9IG5ld3dpbigxMCwgMjMsIDAsIDApKSA9PSAwIHx8CisKKwkobG9va2RlZXIwID0gbmV3d2luKDEwLCAyNSwgMCwgMCkpID09IDAgfHwKKwkobG9va2RlZXIxID0gbmV3d2luKDEwLCAyNSwgMCwgMCkpID09IDAgfHwKKwkobG9va2RlZXIyID0gbmV3d2luKDEwLCAyNSwgMCwgMCkpID09IDAgfHwKKwkobG9va2RlZXIzID0gbmV3d2luKDEwLCAyNSwgMCwgMCkpID09IDAgfHwKKwkobG9va2RlZXI0ID0gbmV3d2luKDEwLCAyNSwgMCwgMCkpID09IDAgfHwKKworCSh3X2hvbGlkYXkgPSBuZXd3aW4oMSwgMjYsIDMsIDI3KSkgPT0gMCB8fAorCisJKHdfZGVsX21zZyA9IG5ld3dpbigxLCAxOSwgMjMsIDYwKSkgPT0gMCkgeworCWVuZHdpbigpOworCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGNyZWF0ZSB3aW5kb3dzIC0gc2NyZWVuIHRvbyBzbWFsbFxuIik7CisJRXhpdFByb2dyYW0oRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgICBNdldBZGRTdHIod19kZWxfbXNnLCAwLCAwLCAiSGl0IGFueSBrZXkgdG8gcXVpdCIpOworCisgICAgTXZXQWRkU3RyKHdfaG9saWRheSwgMCwgMCwgIkggQSBQIFAgWSAgSCBPIEwgSSBEIEEgWSBTIik7CisKKyAgICAvKiBzZXQgdXAgdGhlIHdpbmRvd3MgZm9yIG91ciB2YXJpb3VzIHJlaW5kZWVyICovCisKKyAgICAvKiBsaWxkZWVyMSAqLworICAgIE12V0FkZENoKGxpbGRlZXIxLCAwLCAwLCAoY2h0eXBlKSAnVicpOworICAgIE12V0FkZENoKGxpbGRlZXIxLCAxLCAwLCAoY2h0eXBlKSAnQCcpOworICAgIE12V0FkZENoKGxpbGRlZXIxLCAxLCAxLCAoY2h0eXBlKSAnPCcpOworICAgIE12V0FkZENoKGxpbGRlZXIxLCAxLCAyLCAoY2h0eXBlKSAnPicpOworICAgIE12V0FkZENoKGxpbGRlZXIxLCAxLCAzLCAoY2h0eXBlKSAnficpOworCisgICAgLyogbGlsZGVlcjIgKi8KKyAgICBNdldBZGRDaChsaWxkZWVyMiwgMCwgMCwgKGNodHlwZSkgJ1YnKTsKKyAgICBNdldBZGRDaChsaWxkZWVyMiwgMSwgMCwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaChsaWxkZWVyMiwgMSwgMSwgKGNodHlwZSkgJ3wnKTsKKyAgICBNdldBZGRDaChsaWxkZWVyMiwgMSwgMiwgKGNodHlwZSkgJ3wnKTsKKyAgICBNdldBZGRDaChsaWxkZWVyMiwgMSwgMywgKGNodHlwZSkgJ34nKTsKKworICAgIC8qIGxpbGRlZXIzICovCisgICAgTXZXQWRkQ2gobGlsZGVlcjMsIDAsIDAsIChjaHR5cGUpICdWJyk7CisgICAgTXZXQWRkQ2gobGlsZGVlcjMsIDEsIDAsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2gobGlsZGVlcjMsIDEsIDEsIChjaHR5cGUpICc+Jyk7CisgICAgTXZXQWRkQ2gobGlsZGVlcjMsIDEsIDIsIChjaHR5cGUpICc8Jyk7CisgICAgTXZXQWRkQ2gobGlsZGVlcjIsIDEsIDMsIChjaHR5cGUpICd+Jyk7CisKKyAgICAvKiBtaWRkZWVyMSAqLworICAgIE12V0FkZENoKG1pZGRlZXIxLCAwLCAyLCAoY2h0eXBlKSAneScpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAwLCAzLCAoY2h0eXBlKSAneScpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAxLCAyLCAoY2h0eXBlKSAnMCcpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAxLCAzLCAoY2h0eXBlKSAnKCcpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAxLCA0LCAoY2h0eXBlKSAnPScpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAxLCA1LCAoY2h0eXBlKSAnKScpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAxLCA2LCAoY2h0eXBlKSAnficpOworICAgIE12V0FkZENoKG1pZGRlZXIxLCAyLCAzLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChtaWRkZWVyMSwgMiwgNCwgKGNodHlwZSkgJy8nKTsKKworICAgIC8qIG1pZGRlZXIyICovCisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDAsIDIsIChjaHR5cGUpICd5Jyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDAsIDMsIChjaHR5cGUpICd5Jyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDEsIDIsIChjaHR5cGUpICcwJyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDEsIDMsIChjaHR5cGUpICcoJyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDEsIDQsIChjaHR5cGUpICc9Jyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDEsIDUsIChjaHR5cGUpICcpJyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDEsIDYsIChjaHR5cGUpICd+Jyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDIsIDMsIChjaHR5cGUpICd8Jyk7CisgICAgTXZXQWRkQ2gobWlkZGVlcjIsIDIsIDUsIChjaHR5cGUpICd8Jyk7CisKKyAgICAvKiBtaWRkZWVyMyAqLworICAgIE12V0FkZENoKG1pZGRlZXIzLCAwLCAyLCAoY2h0eXBlKSAneScpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAwLCAzLCAoY2h0eXBlKSAneScpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAxLCAyLCAoY2h0eXBlKSAnMCcpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAxLCAzLCAoY2h0eXBlKSAnKCcpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAxLCA0LCAoY2h0eXBlKSAnPScpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAxLCA1LCAoY2h0eXBlKSAnKScpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAxLCA2LCAoY2h0eXBlKSAnficpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAyLCAyLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKG1pZGRlZXIzLCAyLCA2LCAoY2h0eXBlKSAnXFwnKTsKKworICAgIC8qIGJpZ2RlZXIxICovCisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDAsIDE3LCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgMCwgMTgsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDAsIDIwLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgMCwgMjEsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDEsIDE4LCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgMSwgMjAsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDIsIDE5LCAoY2h0eXBlKSAnfCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIxLCAyLCAyMCwgKGNodHlwZSkgJ18nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgMywgMTgsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDMsIDE5LCAoY2h0eXBlKSAnXicpOworICAgIE12V0FkZENoKGJpZ2RlZXIxLCAzLCAyMCwgKGNodHlwZSkgJzAnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgMywgMjEsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIxLCA0LCAxNywgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgNCwgMTgsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjEsIDQsIDE5LCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMSwgNCwgMjIsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZFN0cihiaWdkZWVyMSwgNSwgNywgIl5+fn5+fn5+fi8vICB+flUiKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjEsIDYsIDcsICIoIFxcX19fX18oIC8iKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjEsIDcsIDgsICIoICkgICAgLyIpOworICAgIE12V0FkZFN0cihiaWdkZWVyMSwgOCwgOSwgIlxcXFwgICAvIik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXIxLCA5LCAxMSwgIlxcPi8+Iik7CisKKyAgICAvKiBiaWdkZWVyMiAqLworICAgIE12V0FkZENoKGJpZ2RlZXIyLCAwLCAxNywgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDAsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIyLCAwLCAyMCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDAsIDIxLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIyLCAxLCAxOCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDEsIDIwLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIyLCAyLCAxOSwgKGNodHlwZSkgJ3wnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMiwgMiwgMjAsIChjaHR5cGUpICdfJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDMsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIyLCAzLCAxOSwgKGNodHlwZSkgJ14nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMiwgMywgMjAsIChjaHR5cGUpICcwJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDMsIDIxLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMiwgNCwgMTcsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDQsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIyLCA0LCAxOSwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjIsIDQsIDIyLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjIsIDUsIDcsICJefn5+fn5+fn4vLyAgfn5VIik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXIyLCA2LCA3LCAiKCggKV9fX18oIC8iKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjIsIDcsIDcsICIoIC8gICAgICB8Iik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXIyLCA4LCA4LCAiXFwvICAgICAgfCIpOworICAgIE12V0FkZFN0cihiaWdkZWVyMiwgOSwgOSwgInw+ICAgICB8PiIpOworCisgICAgLyogYmlnZGVlcjMgKi8KKyAgICBNdldBZGRDaChiaWdkZWVyMywgMCwgMTcsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCAwLCAxOCwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMywgMCwgMjAsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCAwLCAyMSwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMywgMSwgMTgsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCAxLCAyMCwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMywgMiwgMTksIChjaHR5cGUpICd8Jyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjMsIDIsIDIwLCAoY2h0eXBlKSAnXycpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCAzLCAxOCwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMywgMywgMTksIChjaHR5cGUpICdeJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjMsIDMsIDIwLCAoY2h0eXBlKSAnMCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCAzLCAyMSwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjMsIDQsIDE3LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCA0LCAxOCwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyMywgNCwgMTksIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKGJpZ2RlZXIzLCA0LCAyMiwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXIzLCA1LCA3LCAiXn5+fn5+fn5+Ly8gIH5+VSIpOworICAgIE12V0FkZFN0cihiaWdkZWVyMywgNiwgNiwgIiggKClfX19fXyggLyIpOworICAgIE12V0FkZFN0cihiaWdkZWVyMywgNywgNiwgIi8gLyAgICAgICAvIik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXIzLCA4LCA1LCAifC8gICAgICAgICAgXFwiKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjMsIDksIDUsICIvPiAgICAgICAgICAgXFw+Iik7CisKKyAgICAvKiBiaWdkZWVyNCAqLworICAgIE12V0FkZENoKGJpZ2RlZXI0LCAwLCAxNywgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDAsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXI0LCAwLCAyMCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDAsIDIxLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXI0LCAxLCAxOCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDEsIDIwLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXI0LCAyLCAxOSwgKGNodHlwZSkgJ3wnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyNCwgMiwgMjAsIChjaHR5cGUpICdfJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDMsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXI0LCAzLCAxOSwgKGNodHlwZSkgJ14nKTsKKyAgICBNdldBZGRDaChiaWdkZWVyNCwgMywgMjAsIChjaHR5cGUpICcwJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDMsIDIxLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaChiaWdkZWVyNCwgNCwgMTcsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDQsIDE4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKGJpZ2RlZXI0LCA0LCAxOSwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2goYmlnZGVlcjQsIDQsIDIyLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjQsIDUsIDcsICJefn5+fn5+fn4vLyAgfn5VIik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXI0LCA2LCA2LCAiKCApX19fX19fKCAvIik7CisgICAgTXZXQWRkU3RyKGJpZ2RlZXI0LCA3LCA1LCAiKC8gICAgICAgICAgXFwiKTsKKyAgICBNdldBZGRTdHIoYmlnZGVlcjQsIDgsIDAsICJ2X19fPSAgICAgICAgICAgICAtLS0tXiIpOworCisgICAgLyogbG9va2RlZXIxICovCisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMSwgMCwgMTYsICJcXC8gICAgIFxcLyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjEsIDEsIDE3LCAiXFxZLyBcXFkvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMSwgMiwgMTksICJcXD0vIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMSwgMywgMTcsICJeXFxvIG8vXiIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjEsIDQsIDE3LCAiLy8oICkiKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIxLCA1LCA3LCAiXn5+fn5+fn5+Ly8gXFxPLyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjEsIDYsIDcsICIoIFxcX19fX18oIC8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIxLCA3LCA4LCAiKCApICAgIC8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIxLCA4LCA5LCAiXFxcXCAgIC8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIxLCA5LCAxMSwgIlxcPi8+Iik7CisKKyAgICAvKiBsb29rZGVlcjIgKi8KKyAgICBNdldBZGRTdHIobG9va2RlZXIyLCAwLCAxNiwgIlxcLyAgICAgXFwvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMiwgMSwgMTcsICJcXFkvIFxcWS8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIyLCAyLCAxOSwgIlxcPS8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIyLCAzLCAxNywgIl5cXG8gby9eIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMiwgNCwgMTcsICIvLyggKSIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjIsIDUsIDcsICJefn5+fn5+fn4vLyBcXE8vIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMiwgNiwgNywgIigoIClfX19fKCAvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMiwgNywgNywgIiggLyAgICAgIHwiKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIyLCA4LCA4LCAiXFwvICAgICAgfCIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjIsIDksIDksICJ8PiAgICAgfD4iKTsKKworICAgIC8qIGxvb2tkZWVyMyAqLworICAgIE12V0FkZFN0cihsb29rZGVlcjMsIDAsIDE2LCAiXFwvICAgICBcXC8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIzLCAxLCAxNywgIlxcWS8gXFxZLyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjMsIDIsIDE5LCAiXFw9LyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjMsIDMsIDE3LCAiXlxcbyBvL14iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIzLCA0LCAxNywgIi8vKCApIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMywgNSwgNywgIl5+fn5+fn5+fi8vIFxcTy8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXIzLCA2LCA2LCAiKCAoKV9fX19fKCAvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMywgNywgNiwgIi8gLyAgICAgICAvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMywgOCwgNSwgInwvICAgICAgICAgIFxcIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyMywgOSwgNSwgIi8+ICAgICAgICAgICBcXD4iKTsKKworICAgIC8qIGxvb2tkZWVyNCAqLworICAgIE12V0FkZFN0cihsb29rZGVlcjQsIDAsIDE2LCAiXFwvICAgICBcXC8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXI0LCAxLCAxNywgIlxcWS8gXFxZLyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjQsIDIsIDE5LCAiXFw9LyIpOworICAgIE12V0FkZFN0cihsb29rZGVlcjQsIDMsIDE3LCAiXlxcbyBvL14iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXI0LCA0LCAxNywgIi8vKCApIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyNCwgNSwgNywgIl5+fn5+fn5+fi8vIFxcTy8iKTsKKyAgICBNdldBZGRTdHIobG9va2RlZXI0LCA2LCA2LCAiKCApX19fX19fKCAvIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyNCwgNywgNSwgIigvICAgICAgICAgIFxcIik7CisgICAgTXZXQWRkU3RyKGxvb2tkZWVyNCwgOCwgMCwgInZfX189ICAgICAgICAgICAgIC0tLS1eIik7CisKKwkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgY2JyZWFrKCk7CisgICAgbm9kZWxheShzdGRzY3IsIFRSVUUpOworICAgIGZvciAoOzspIHsKKwljbGVhcigpOworCXdlcmFzZSh0cmVlc2Nybik7CisJdG91Y2h3aW4od19kZWxfbXNnKTsKKwl0b3VjaHdpbih0cmVlc2Nybik7CisJd2VyYXNlKHRyZWVzY3JuMik7CisJdG91Y2h3aW4odHJlZXNjcm4yKTsKKwl3ZXJhc2UodHJlZXNjcm44KTsKKwl0b3VjaHdpbih0cmVlc2NybjgpOworCXJlZnJlc2goKTsKKwlsb29rX291dCgxNTApOworCWJveGl0KCk7CisJcmVmcmVzaCgpOworCWxvb2tfb3V0KDE1MCk7CisJc2VhcygpOworCXJlZnJlc2goKTsKKwlsb29rX291dCgxNTApOworCWdyZWV0KCk7CisJcmVmcmVzaCgpOworCWxvb2tfb3V0KDE1MCk7CisJZnJvbXdobygpOworCXJlZnJlc2goKTsKKwlsb29rX291dCgxNTApOworCXRyZWUoKTsKKwlsb29rX291dCgxNTApOworCWJhbGxzKCk7CisJbG9va19vdXQoMTUwKTsKKwlzdGFyKCk7CisJbG9va19vdXQoMTUwKTsKKwlzdHJuZzEoKTsKKwlzdHJuZzIoKTsKKwlzdHJuZzMoKTsKKwlzdHJuZzQoKTsKKwlzdHJuZzUoKTsKKworCS8qIHNldCB1cCB0aGUgd2luZG93cyBmb3Igb3VyIGJsaW5raW5nIHRyZWVzICovCisJLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworCS8qIHRyZWVzY3JuMyAqLworCisJb3ZlcmxheSh0cmVlc2NybiwgdHJlZXNjcm4zKTsKKworCS8qYmFsbHMgKi8KKwlNdldBZGRDaCh0cmVlc2NybjMsIDQsIDE4LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgNywgNiwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjMsIDgsIDE5LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgMTEsIDIyLCAnICcpOworCisJLypzdGFyICovCisJTXZXQWRkQ2godHJlZXNjcm4zLCAwLCAxMiwgJyonKTsKKworCS8qc3RybmcxICovCisJTXZXQWRkQ2godHJlZXNjcm4zLCAzLCAxMSwgJyAnKTsKKworCS8qc3RybmcyICovCisJTXZXQWRkQ2godHJlZXNjcm4zLCA1LCAxMywgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjMsIDYsIDEwLCAnICcpOworCisJLypzdHJuZzMgKi8KKwlNdldBZGRDaCh0cmVlc2NybjMsIDcsIDE2LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgNywgMTQsICcgJyk7CisKKwkvKnN0cm5nNCAqLworCU12V0FkZENoKHRyZWVzY3JuMywgMTAsIDEzLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgMTAsIDEwLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgMTEsIDgsICcgJyk7CisKKwkvKnN0cm5nNSAqLworCU12V0FkZENoKHRyZWVzY3JuMywgMTEsIDE4LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuMywgMTIsIDEzLCAnICcpOworCisJLyogdHJlZXNjcm40ICovCisKKwlvdmVybGF5KHRyZWVzY3JuLCB0cmVlc2NybjQpOworCisJLypiYWxscyAqLworCU12V0FkZENoKHRyZWVzY3JuNCwgMywgOSwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjQsIDQsIDE2LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNCwgNywgNiwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjQsIDgsIDE5LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNCwgMTEsIDIsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm40LCAxMiwgMjMsICcgJyk7CisKKwkvKnN0YXIgKi8KKwkodm9pZCkgd3N0YW5kb3V0KHRyZWVzY3JuNCk7CisJTXZXQWRkQ2godHJlZXNjcm40LCAwLCAxMiwgJyonKTsKKwkodm9pZCkgd3N0YW5kZW5kKHRyZWVzY3JuNCk7CisKKwkvKnN0cm5nMSAqLworCU12V0FkZENoKHRyZWVzY3JuNCwgMywgMTMsICcgJyk7CisKKwkvKnN0cm5nMiAqLworCisJLypzdHJuZzMgKi8KKwlNdldBZGRDaCh0cmVlc2NybjQsIDcsIDE1LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNCwgOCwgMTEsICcgJyk7CisKKwkvKnN0cm5nNCAqLworCU12V0FkZENoKHRyZWVzY3JuNCwgOSwgMTYsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm40LCAxMCwgMTIsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm40LCAxMSwgOCwgJyAnKTsKKworCS8qc3Rybmc1ICovCisJTXZXQWRkQ2godHJlZXNjcm40LCAxMSwgMTgsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm40LCAxMiwgMTQsICcgJyk7CisKKwkvKiB0cmVlc2NybjUgKi8KKworCW92ZXJsYXkodHJlZXNjcm4sIHRyZWVzY3JuNSk7CisKKwkvKmJhbGxzICovCisJTXZXQWRkQ2godHJlZXNjcm41LCAzLCAxNSwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjUsIDEwLCAyMCwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjUsIDEyLCAxLCAnICcpOworCisJLypzdGFyICovCisJTXZXQWRkQ2godHJlZXNjcm41LCAwLCAxMiwgJyonKTsKKworCS8qc3RybmcxICovCisJTXZXQWRkQ2godHJlZXNjcm41LCAzLCAxMSwgJyAnKTsKKworCS8qc3RybmcyICovCisJTXZXQWRkQ2godHJlZXNjcm41LCA1LCAxMiwgJyAnKTsKKworCS8qc3RybmczICovCisJTXZXQWRkQ2godHJlZXNjcm41LCA3LCAxNCwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjUsIDgsIDEwLCAnICcpOworCisJLypzdHJuZzQgKi8KKwlNdldBZGRDaCh0cmVlc2NybjUsIDksIDE1LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNSwgMTAsIDExLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNSwgMTEsIDcsICcgJyk7CisKKwkvKnN0cm5nNSAqLworCU12V0FkZENoKHRyZWVzY3JuNSwgMTEsIDE3LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNSwgMTIsIDEzLCAnICcpOworCisJLyogdHJlZXNjcm42ICovCisKKwlvdmVybGF5KHRyZWVzY3JuLCB0cmVlc2NybjYpOworCisJLypiYWxscyAqLworCU12V0FkZENoKHRyZWVzY3JuNiwgNiwgNywgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjYsIDcsIDE4LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNiwgMTAsIDQsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm42LCAxMSwgMjMsICcgJyk7CisKKwkvKnN0YXIgKi8KKwkodm9pZCkgd3N0YW5kb3V0KHRyZWVzY3JuNik7CisJTXZXQWRkQ2godHJlZXNjcm42LCAwLCAxMiwgJyonKTsKKwkodm9pZCkgd3N0YW5kZW5kKHRyZWVzY3JuNik7CisKKwkvKnN0cm5nMSAqLworCisJLypzdHJuZzIgKi8KKwlNdldBZGRDaCh0cmVlc2NybjYsIDUsIDExLCAnICcpOworCisJLypzdHJuZzMgKi8KKwlNdldBZGRDaCh0cmVlc2NybjYsIDcsIDEzLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNiwgOCwgOSwgJyAnKTsKKworCS8qc3Rybmc0ICovCisJTXZXQWRkQ2godHJlZXNjcm42LCA5LCAxNCwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjYsIDEwLCAxMCwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjYsIDExLCA2LCAnICcpOworCisJLypzdHJuZzUgKi8KKwlNdldBZGRDaCh0cmVlc2NybjYsIDExLCAxNiwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjYsIDEyLCAxMiwgJyAnKTsKKworCS8qIHRyZWVzY3JuNyAqLworCisJb3ZlcmxheSh0cmVlc2NybiwgdHJlZXNjcm43KTsKKworCS8qYmFsbHMgKi8KKwlNdldBZGRDaCh0cmVlc2NybjcsIDMsIDE1LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgNiwgNywgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjcsIDcsIDE4LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgMTAsIDQsICcgJyk7CisJTXZXQWRkQ2godHJlZXNjcm43LCAxMSwgMjIsICcgJyk7CisKKwkvKnN0YXIgKi8KKwlNdldBZGRDaCh0cmVlc2NybjcsIDAsIDEyLCAnKicpOworCisJLypzdHJuZzEgKi8KKwlNdldBZGRDaCh0cmVlc2NybjcsIDMsIDEyLCAnICcpOworCisJLypzdHJuZzIgKi8KKwlNdldBZGRDaCh0cmVlc2NybjcsIDUsIDEzLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgNiwgOSwgJyAnKTsKKworCS8qc3RybmczICovCisJTXZXQWRkQ2godHJlZXNjcm43LCA3LCAxNSwgJyAnKTsKKwlNdldBZGRDaCh0cmVlc2NybjcsIDgsIDExLCAnICcpOworCisJLypzdHJuZzQgKi8KKwlNdldBZGRDaCh0cmVlc2NybjcsIDksIDE2LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgMTAsIDEyLCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgMTEsIDgsICcgJyk7CisKKwkvKnN0cm5nNSAqLworCU12V0FkZENoKHRyZWVzY3JuNywgMTEsIDE4LCAnICcpOworCU12V0FkZENoKHRyZWVzY3JuNywgMTIsIDE0LCAnICcpOworCisJbG9va19vdXQoMTUwKTsKKwlyZWluZGVlcigpOworCisJdG91Y2h3aW4od19ob2xpZGF5KTsKKwl3cmVmcmVzaCh3X2hvbGlkYXkpOworCXdyZWZyZXNoKHdfZGVsX21zZyk7CisKKwlsb29rX291dCg1MDApOworCWZvciAobG9vcHkgPSAwOyBsb29weSA8IDEwMDsgbG9vcHkrKykgeworCSAgICBibGlua2l0KCk7CisJfQorCisjaWZkZWYgTk9MT09QCisJZG9uZSgwKTsKKyNlbmRpZgorICAgIH0KKyAgICAvKk5PVFJFQUNIRUQgKi8KK30KKworc3RhdGljIGludAorYm94aXQodm9pZCkKK3sKKyAgICBpbnQgeCA9IDA7CisKKyAgICB3aGlsZSAoeCA8IDIwKSB7CisJTXZBZGRDaCh4LCA3LCAnfCcpOworCSsreDsKKyAgICB9CisKKyAgICB4ID0gODsKKworICAgIHdoaWxlICh4IDwgODApIHsKKwlNdkFkZENoKDE5LCB4LCAnXycpOworCSsreDsKKyAgICB9CisKKyAgICB4ID0gMDsKKworICAgIHdoaWxlICh4IDwgODApIHsKKwlNdkFkZENoKDIyLCB4LCAnXycpOworCSsreDsKKyAgICB9CisKKyAgICByZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitzZWFzKHZvaWQpCit7CisgICAgTXZBZGRDaCg0LCAxLCAnUycpOworICAgIE12QWRkQ2goNiwgMSwgJ0UnKTsKKyAgICBNdkFkZENoKDgsIDEsICdBJyk7CisgICAgTXZBZGRDaCgxMCwgMSwgJ1MnKTsKKyAgICBNdkFkZENoKDEyLCAxLCAnTycpOworICAgIE12QWRkQ2goMTQsIDEsICdOJyk7CisgICAgTXZBZGRDaCgxNiwgMSwgJ2AnKTsKKyAgICBNdkFkZENoKDE4LCAxLCAnUycpOworCisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorZ3JlZXQodm9pZCkKK3sKKyAgICBNdkFkZENoKDMsIDUsICdHJyk7CisgICAgTXZBZGRDaCg1LCA1LCAnUicpOworICAgIE12QWRkQ2goNywgNSwgJ0UnKTsKKyAgICBNdkFkZENoKDksIDUsICdFJyk7CisgICAgTXZBZGRDaCgxMSwgNSwgJ1QnKTsKKyAgICBNdkFkZENoKDEzLCA1LCAnSScpOworICAgIE12QWRkQ2goMTUsIDUsICdOJyk7CisgICAgTXZBZGRDaCgxNywgNSwgJ0cnKTsKKyAgICBNdkFkZENoKDE5LCA1LCAnUycpOworCisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorZnJvbXdobyh2b2lkKQoreworICAgIE12QWRkU3RyKDIxLCAxMywgRlJPTVdITyk7CisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAordHJlZSh2b2lkKQoreworICAgIHNldF9jb2xvcih0cmVlc2NybiwgQ09MT1JfR1JFRU4pOworICAgIE12V0FkZENoKHRyZWVzY3JuLCAxLCAxMSwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgMiwgMTEsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDMsIDEwLCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA0LCA5LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA1LCA5LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA2LCA4LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA3LCA3LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA4LCA2LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA5LCA2LCAoY2h0eXBlKSAnLycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCAxMCwgNSwgKGNodHlwZSkgJy8nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgMTEsIDMsIChjaHR5cGUpICcvJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDEyLCAyLCAoY2h0eXBlKSAnLycpOworCisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDEsIDEzLCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgMiwgMTMsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCAzLCAxNCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDQsIDE1LCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgNSwgMTUsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA2LCAxNiwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDcsIDE3LCAoY2h0eXBlKSAnXFwnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgOCwgMTgsIChjaHR5cGUpICdcXCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA5LCAxOCwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDEwLCAxOSwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDExLCAyMSwgKGNodHlwZSkgJ1xcJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDEyLCAyMiwgKGNodHlwZSkgJ1xcJyk7CisKKyAgICBNdldBZGRDaCh0cmVlc2NybiwgNCwgMTAsIChjaHR5cGUpICdfJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4sIDQsIDE0LCAoY2h0eXBlKSAnXycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA4LCA3LCAoY2h0eXBlKSAnXycpOworICAgIE12V0FkZENoKHRyZWVzY3JuLCA4LCAxNywgKGNodHlwZSkgJ18nKTsKKworICAgIE12V0FkZFN0cih0cmVlc2NybiwgMTMsIDAsICIvLy8vLy8vLy8vLy8gXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcIik7CisKKyAgICBNdldBZGRTdHIodHJlZXNjcm4sIDE0LCAxMSwgInwgfCIpOworICAgIE12V0FkZFN0cih0cmVlc2NybiwgMTUsIDExLCAifF98Iik7CisKKyAgICB1bnNldF9jb2xvcih0cmVlc2Nybik7CisgICAgd3JlZnJlc2godHJlZXNjcm4pOworICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisKKyAgICByZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitiYWxscyh2b2lkKQoreworICAgIG92ZXJsYXkodHJlZXNjcm4sIHRyZWVzY3JuMik7CisKKyAgICBzZXRfY29sb3IodHJlZXNjcm4yLCBDT0xPUl9CTFVFKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDMsIDksIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAzLCAxNSwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDQsIDgsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA0LCAxNiwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDUsIDcsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA1LCAxNywgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDcsIDYsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA3LCAxOCwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDgsIDUsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA4LCAxOSwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDEwLCA0LCAoY2h0eXBlKSAnQCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTAsIDIwLCAoY2h0eXBlKSAnQCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTEsIDIsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMSwgMjIsIChjaHR5cGUpICdAJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMiwgMSwgKGNodHlwZSkgJ0AnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDEyLCAyMywgKGNodHlwZSkgJ0AnKTsKKworICAgIHVuc2V0X2NvbG9yKHRyZWVzY3JuMik7CisgICAgd3JlZnJlc2godHJlZXNjcm4yKTsKKyAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3N0YXIodm9pZCkKK3sKKyAgICAodm9pZCkgd2F0dHJzZXQodHJlZXNjcm4yLCBBX0JPTEQgfCBBX0JMSU5LKTsKKyAgICBzZXRfY29sb3IodHJlZXNjcm4yLCBDT0xPUl9ZRUxMT1cpOworCisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAwLCAxMiwgKGNodHlwZSkgJyonKTsKKyAgICAodm9pZCkgd3N0YW5kZW5kKHRyZWVzY3JuMik7CisKKyAgICB1bnNldF9jb2xvcih0cmVlc2NybjIpOworICAgIHdyZWZyZXNoKHRyZWVzY3JuMik7CisgICAgd3JlZnJlc2god19kZWxfbXNnKTsKKyAgICByZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitzdHJuZzEodm9pZCkKK3sKKyAgICAodm9pZCkgd2F0dHJzZXQodHJlZXNjcm4yLCBBX0JPTEQgfCBBX0JMSU5LKTsKKyAgICBzZXRfY29sb3IodHJlZXNjcm4yLCBDT0xPUl9XSElURSk7CisKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDMsIDEzLCAoY2h0eXBlKSAnXCcnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDMsIDEyLCAoY2h0eXBlKSAnOicpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMywgMTEsIChjaHR5cGUpICcuJyk7CisKKyAgICB3YXR0cm9mZih0cmVlc2NybjIsIEFfQk9MRCB8IEFfQkxJTkspOworICAgIHVuc2V0X2NvbG9yKHRyZWVzY3JuMik7CisKKyAgICB3cmVmcmVzaCh0cmVlc2NybjIpOworICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorc3RybmcyKHZvaWQpCit7CisgICAgKHZvaWQpIHdhdHRyc2V0KHRyZWVzY3JuMiwgQV9CT0xEIHwgQV9CTElOSyk7CisgICAgc2V0X2NvbG9yKHRyZWVzY3JuMiwgQ09MT1JfV0hJVEUpOworCisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA1LCAxNCwgKGNodHlwZSkgJ1wnJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA1LCAxMywgKGNodHlwZSkgJzonKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDUsIDEyLCAoY2h0eXBlKSAnLicpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgNSwgMTEsIChjaHR5cGUpICcsJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA2LCAxMCwgKGNodHlwZSkgJ1wnJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA2LCA5LCAoY2h0eXBlKSAnOicpOworCisgICAgd2F0dHJvZmYodHJlZXNjcm4yLCBBX0JPTEQgfCBBX0JMSU5LKTsKKyAgICB1bnNldF9jb2xvcih0cmVlc2NybjIpOworCisgICAgd3JlZnJlc2godHJlZXNjcm4yKTsKKyAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3N0cm5nMyh2b2lkKQoreworICAgICh2b2lkKSB3YXR0cnNldCh0cmVlc2NybjIsIEFfQk9MRCB8IEFfQkxJTkspOworICAgIHNldF9jb2xvcih0cmVlc2NybjIsIENPTE9SX1dISVRFKTsKKworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgNywgMTYsIChjaHR5cGUpICdcJycpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgNywgMTUsIChjaHR5cGUpICc6Jyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA3LCAxNCwgKGNodHlwZSkgJy4nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDcsIDEzLCAoY2h0eXBlKSAnLCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgOCwgMTIsIChjaHR5cGUpICdcJycpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgOCwgMTEsIChjaHR5cGUpICc6Jyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA4LCAxMCwgKGNodHlwZSkgJy4nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDgsIDksIChjaHR5cGUpICcsJyk7CisKKyAgICB3YXR0cm9mZih0cmVlc2NybjIsIEFfQk9MRCB8IEFfQkxJTkspOworICAgIHVuc2V0X2NvbG9yKHRyZWVzY3JuMik7CisKKyAgICB3cmVmcmVzaCh0cmVlc2NybjIpOworICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorc3Rybmc0KHZvaWQpCit7CisgICAgKHZvaWQpIHdhdHRyc2V0KHRyZWVzY3JuMiwgQV9CT0xEIHwgQV9CTElOSyk7CisgICAgc2V0X2NvbG9yKHRyZWVzY3JuMiwgQ09MT1JfV0hJVEUpOworCisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA5LCAxNywgKGNodHlwZSkgJ1wnJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCA5LCAxNiwgKGNodHlwZSkgJzonKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDksIDE1LCAoY2h0eXBlKSAnLicpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgOSwgMTQsIChjaHR5cGUpICcsJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMCwgMTMsIChjaHR5cGUpICdcJycpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTAsIDEyLCAoY2h0eXBlKSAnOicpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTAsIDExLCAoY2h0eXBlKSAnLicpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTAsIDEwLCAoY2h0eXBlKSAnLCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTEsIDksIChjaHR5cGUpICdcJycpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTEsIDgsIChjaHR5cGUpICc6Jyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMSwgNywgKGNodHlwZSkgJy4nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDExLCA2LCAoY2h0eXBlKSAnLCcpOworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTIsIDUsIChjaHR5cGUpICdcJycpOworCisgICAgd2F0dHJvZmYodHJlZXNjcm4yLCBBX0JPTEQgfCBBX0JMSU5LKTsKKyAgICB1bnNldF9jb2xvcih0cmVlc2NybjIpOworCisgICAgd3JlZnJlc2godHJlZXNjcm4yKTsKKyAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3N0cm5nNSh2b2lkKQoreworICAgICh2b2lkKSB3YXR0cnNldCh0cmVlc2NybjIsIEFfQk9MRCB8IEFfQkxJTkspOworICAgIHNldF9jb2xvcih0cmVlc2NybjIsIENPTE9SX1dISVRFKTsKKworICAgIE12V0FkZENoKHRyZWVzY3JuMiwgMTEsIDE5LCAoY2h0eXBlKSAnXCcnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDExLCAxOCwgKGNodHlwZSkgJzonKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDExLCAxNywgKGNodHlwZSkgJy4nKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDExLCAxNiwgKGNodHlwZSkgJywnKTsKKyAgICBNdldBZGRDaCh0cmVlc2NybjIsIDEyLCAxNSwgKGNodHlwZSkgJ1wnJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMiwgMTQsIChjaHR5cGUpICc6Jyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMiwgMTMsIChjaHR5cGUpICcuJyk7CisgICAgTXZXQWRkQ2godHJlZXNjcm4yLCAxMiwgMTIsIChjaHR5cGUpICcsJyk7CisKKyAgICB3YXR0cm9mZih0cmVlc2NybjIsIEFfQk9MRCB8IEFfQkxJTkspOworICAgIHVuc2V0X2NvbG9yKHRyZWVzY3JuMik7CisKKyAgICAvKiBzYXZlIGEgZnVsbHkgbGl0IHRyZWUgKi8KKyAgICBvdmVybGF5KHRyZWVzY3JuMiwgdHJlZXNjcm4pOworCisgICAgd3JlZnJlc2godHJlZXNjcm4yKTsKKyAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2JsaW5raXQodm9pZCkKK3sKKyAgICBzdGF0aWMgaW50IGN5Y2xlOworCisgICAgaWYgKGN5Y2xlID4gNCkgeworCWN5Y2xlID0gMDsKKyAgICB9CisKKyAgICB0b3VjaHdpbih0cmVlc2NybjgpOworCisgICAgc3dpdGNoIChjeWNsZSkgeworICAgIGNhc2UgMDoKKwlvdmVybGF5KHRyZWVzY3JuMywgdHJlZXNjcm44KTsKKwl3cmVmcmVzaCh0cmVlc2NybjgpOworCXdyZWZyZXNoKHdfZGVsX21zZyk7CisJYnJlYWs7CisgICAgY2FzZSAxOgorCW92ZXJsYXkodHJlZXNjcm40LCB0cmVlc2NybjgpOworCXdyZWZyZXNoKHRyZWVzY3JuOCk7CisJd3JlZnJlc2god19kZWxfbXNnKTsKKwlicmVhazsKKyAgICBjYXNlIDI6CisJb3ZlcmxheSh0cmVlc2NybjUsIHRyZWVzY3JuOCk7CisJd3JlZnJlc2godHJlZXNjcm44KTsKKwl3cmVmcmVzaCh3X2RlbF9tc2cpOworCWJyZWFrOworICAgIGNhc2UgMzoKKwlvdmVybGF5KHRyZWVzY3JuNiwgdHJlZXNjcm44KTsKKwl3cmVmcmVzaCh0cmVlc2NybjgpOworCXdyZWZyZXNoKHdfZGVsX21zZyk7CisJYnJlYWs7CisgICAgY2FzZSA0OgorCW92ZXJsYXkodHJlZXNjcm43LCB0cmVlc2NybjgpOworCXdyZWZyZXNoKHRyZWVzY3JuOCk7CisJd3JlZnJlc2god19kZWxfbXNnKTsKKwlicmVhazsKKyAgICB9CisgICAgdG91Y2h3aW4odHJlZXNjcm44KTsKKworICAgIC8qQUxMIE9OKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKworICAgIG92ZXJsYXkodHJlZXNjcm4sIHRyZWVzY3JuOCk7CisgICAgd3JlZnJlc2godHJlZXNjcm44KTsKKyAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworCisgICAgKytjeWNsZTsKKyAgICByZXR1cm4gKDApOworfQorCitzdGF0aWMgdm9pZAorZGVlcl9zdGVwKFdJTkRPVyAqd2luLCBpbnQgeSwgaW50IHgpCit7CisgICAgbXZ3aW4od2luLCB5LCB4KTsKKyAgICB3cmVmcmVzaCh3aW4pOworICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisgICAgbG9va19vdXQoNSk7Cit9CisKK3N0YXRpYyBpbnQKK3JlaW5kZWVyKHZvaWQpCit7CisgICAgaW50IGxvb3BlcjsKKyAgICB5X3BvcyA9IDA7CisKKyAgICBmb3IgKHhfcG9zID0gNzA7IHhfcG9zID4gNjI7IHhfcG9zLS0pIHsKKwlpZiAoeF9wb3MgPCA2MikgeworCSAgICB5X3BvcyA9IDE7CisJfQorCWZvciAobG9vcGVyID0gMDsgbG9vcGVyIDwgNDsgbG9vcGVyKyspIHsKKwkgICAgTXZXQWRkQ2goZG90ZGVlcjAsIHlfcG9zLCB4X3BvcywgKGNodHlwZSkgJy4nKTsKKwkgICAgd3JlZnJlc2goZG90ZGVlcjApOworCSAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworCSAgICB3ZXJhc2UoZG90ZGVlcjApOworCSAgICB3cmVmcmVzaChkb3RkZWVyMCk7CisJICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisJICAgIGxvb2tfb3V0KDUwKTsKKwl9CisgICAgfQorCisgICAgeV9wb3MgPSAyOworCisgICAgZm9yICg7IHhfcG9zID4gNTA7IHhfcG9zLS0pIHsKKwlmb3IgKGxvb3BlciA9IDA7IGxvb3BlciA8IDQ7IGxvb3BlcisrKSB7CisKKwkgICAgaWYgKHhfcG9zIDwgNTYpIHsKKwkJeV9wb3MgPSAzOworCisJCU12V0FkZENoKHN0YXJkZWVyMCwgeV9wb3MsIHhfcG9zLCAoY2h0eXBlKSAnKicpOworCQl3cmVmcmVzaChzdGFyZGVlcjApOworCQl3cmVmcmVzaCh3X2RlbF9tc2cpOworCQl3ZXJhc2Uoc3RhcmRlZXIwKTsKKwkJd3JlZnJlc2goc3RhcmRlZXIwKTsKKwkJd3JlZnJlc2god19kZWxfbXNnKTsKKwkgICAgfSBlbHNlIHsKKwkJTXZXQWRkQ2goZG90ZGVlcjAsIHlfcG9zLCB4X3BvcywgKGNodHlwZSkgJyonKTsKKwkJd3JlZnJlc2goZG90ZGVlcjApOworCQl3cmVmcmVzaCh3X2RlbF9tc2cpOworCQl3ZXJhc2UoZG90ZGVlcjApOworCQl3cmVmcmVzaChkb3RkZWVyMCk7CisJCXdyZWZyZXNoKHdfZGVsX21zZyk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgeF9wb3MgPSA1ODsKKworICAgIGZvciAoeV9wb3MgPSAyOyB5X3BvcyA8IDU7IHlfcG9zKyspIHsKKworCXRvdWNod2luKGxpbGRlZXIwKTsKKwl3cmVmcmVzaChsaWxkZWVyMCk7CisJd3JlZnJlc2god19kZWxfbXNnKTsKKworCWZvciAobG9vcGVyID0gMDsgbG9vcGVyIDwgNDsgbG9vcGVyKyspIHsKKwkgICAgZGVlcl9zdGVwKGxpbGRlZXIzLCB5X3BvcywgeF9wb3MpOworCSAgICBkZWVyX3N0ZXAobGlsZGVlcjIsIHlfcG9zLCB4X3Bvcyk7CisJICAgIGRlZXJfc3RlcChsaWxkZWVyMSwgeV9wb3MsIHhfcG9zKTsKKwkgICAgZGVlcl9zdGVwKGxpbGRlZXIyLCB5X3BvcywgeF9wb3MpOworCSAgICBkZWVyX3N0ZXAobGlsZGVlcjMsIHlfcG9zLCB4X3Bvcyk7CisKKwkgICAgdG91Y2h3aW4obGlsZGVlcjApOworCSAgICB3cmVmcmVzaChsaWxkZWVyMCk7CisJICAgIHdyZWZyZXNoKHdfZGVsX21zZyk7CisKKwkgICAgeF9wb3MgLT0gMjsKKwl9CisgICAgfQorCisgICAgeF9wb3MgPSAzNTsKKworICAgIGZvciAoeV9wb3MgPSA1OyB5X3BvcyA8IDEwOyB5X3BvcysrKSB7CisKKwl0b3VjaHdpbihtaWRkZWVyMCk7CisJd3JlZnJlc2gobWlkZGVlcjApOworCXdyZWZyZXNoKHdfZGVsX21zZyk7CisKKwlmb3IgKGxvb3BlciA9IDA7IGxvb3BlciA8IDI7IGxvb3BlcisrKSB7CisJICAgIGRlZXJfc3RlcChtaWRkZWVyMywgeV9wb3MsIHhfcG9zKTsKKwkgICAgZGVlcl9zdGVwKG1pZGRlZXIyLCB5X3BvcywgeF9wb3MpOworCSAgICBkZWVyX3N0ZXAobWlkZGVlcjEsIHlfcG9zLCB4X3Bvcyk7CisJICAgIGRlZXJfc3RlcChtaWRkZWVyMiwgeV9wb3MsIHhfcG9zKTsKKwkgICAgZGVlcl9zdGVwKG1pZGRlZXIzLCB5X3BvcywgeF9wb3MpOworCisJICAgIHRvdWNod2luKG1pZGRlZXIwKTsKKwkgICAgd3JlZnJlc2gobWlkZGVlcjApOworCSAgICB3cmVmcmVzaCh3X2RlbF9tc2cpOworCisJICAgIHhfcG9zIC09IDM7CisJfQorICAgIH0KKworICAgIGxvb2tfb3V0KDMwMCk7CisKKyAgICB5X3BvcyA9IDE7CisKKyAgICBmb3IgKHhfcG9zID0gODsgeF9wb3MgPCAxNjsgeF9wb3MrKykgeworCWRlZXJfc3RlcChiaWdkZWVyNCwgeV9wb3MsIHhfcG9zKTsKKwlkZWVyX3N0ZXAoYmlnZGVlcjMsIHlfcG9zLCB4X3Bvcyk7CisJZGVlcl9zdGVwKGJpZ2RlZXIyLCB5X3BvcywgeF9wb3MpOworCWRlZXJfc3RlcChiaWdkZWVyMSwgeV9wb3MsIHhfcG9zKTsKKwlkZWVyX3N0ZXAoYmlnZGVlcjIsIHlfcG9zLCB4X3Bvcyk7CisJZGVlcl9zdGVwKGJpZ2RlZXIzLCB5X3BvcywgeF9wb3MpOworCWRlZXJfc3RlcChiaWdkZWVyNCwgeV9wb3MsIHhfcG9zKTsKKwlkZWVyX3N0ZXAoYmlnZGVlcjAsIHlfcG9zLCB4X3Bvcyk7CisgICAgfQorCisgICAgLS14X3BvczsKKworICAgIGZvciAobG9vcGVyID0gMDsgbG9vcGVyIDwgNjsgbG9vcGVyKyspIHsKKwlkZWVyX3N0ZXAobG9va2RlZXI0LCB5X3BvcywgeF9wb3MpOworCWRlZXJfc3RlcChsb29rZGVlcjMsIHlfcG9zLCB4X3Bvcyk7CisJZGVlcl9zdGVwKGxvb2tkZWVyMiwgeV9wb3MsIHhfcG9zKTsKKwlkZWVyX3N0ZXAobG9va2RlZXIxLCB5X3BvcywgeF9wb3MpOworCWRlZXJfc3RlcChsb29rZGVlcjIsIHlfcG9zLCB4X3Bvcyk7CisJZGVlcl9zdGVwKGxvb2tkZWVyMywgeV9wb3MsIHhfcG9zKTsKKwlkZWVyX3N0ZXAobG9va2RlZXI0LCB5X3BvcywgeF9wb3MpOworICAgIH0KKworICAgIGRlZXJfc3RlcChsb29rZGVlcjAsIHlfcG9zLCB4X3Bvcyk7CisKKyAgICBmb3IgKDsgeV9wb3MgPCAxMDsgeV9wb3MrKykgeworCWZvciAobG9vcGVyID0gMDsgbG9vcGVyIDwgMjsgbG9vcGVyKyspIHsKKwkgICAgZGVlcl9zdGVwKGJpZ2RlZXI0LCB5X3BvcywgeF9wb3MpOworCSAgICBkZWVyX3N0ZXAoYmlnZGVlcjMsIHlfcG9zLCB4X3Bvcyk7CisJICAgIGRlZXJfc3RlcChiaWdkZWVyMiwgeV9wb3MsIHhfcG9zKTsKKwkgICAgZGVlcl9zdGVwKGJpZ2RlZXIxLCB5X3BvcywgeF9wb3MpOworCSAgICBkZWVyX3N0ZXAoYmlnZGVlcjIsIHlfcG9zLCB4X3Bvcyk7CisJICAgIGRlZXJfc3RlcChiaWdkZWVyMywgeV9wb3MsIHhfcG9zKTsKKwkgICAgZGVlcl9zdGVwKGJpZ2RlZXI0LCB5X3BvcywgeF9wb3MpOworCX0KKwlkZWVyX3N0ZXAoYmlnZGVlcjAsIHlfcG9zLCB4X3Bvcyk7CisgICAgfQorCisgICAgLS15X3BvczsKKworICAgIGRlZXJfc3RlcChsb29rZGVlcjMsIHlfcG9zLCB4X3Bvcyk7CisgICAgcmV0dXJuICgwKTsKK30KKworc3RhdGljIHZvaWQKK2RvbmUoaW50IHNpZyBHQ0NfVU5VU0VEKQoreworICAgIENBVENIQUxMKGRvbmUpOworCisgICAgbW92ZShMSU5FUyAtIDEsIDApOworICAgIHJlZnJlc2goKTsKKyAgICBlbmR3aW4oKTsKKyAgICBjdXJzX3NldCgxKTsKKworI2lmIE5PX0xFQUtTCisgICAgaWYgKG15X3BhaXJzICE9IDApCisJZnJlZShteV9wYWlycyk7CisjZW5kaWYKKworICAgIEV4aXRQcm9ncmFtKEVYSVRfU1VDQ0VTUyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L3h0ZXJtLTE2Y29sb3IuZGF0IGIvdGVzdC94dGVybS0xNmNvbG9yLmRhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQ3ZDkzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC94dGVybS0xNmNvbG9yLmRhdApAQCAtMCwwICsxLDUzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDA0LDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRJZDogeHRlcm0tMTZjb2xvci5kYXQsdiAxLjIgMjAwNi8wNC8yMiAyMTo0MDowMCB0b20gRXhwICQKKyMgVGhpcyBpbGx1c3RyYXRlcyB0aGUgcHJlZGVmaW5lZCBjb2xvcnMgZm9yIFhGcmVlODYgeHRlcm0ncyAieHRlcm0tMTZjb2xvciIuIAorIyBJZiB5b3Ugc2V0ICRURVJNIHRvICJ4dGVybS04OGNvbG9yIiAoYW5kIGhhdmUgeHRlcm0gY29tcGlsZWQgdG8gc3VwcG9ydCB0aGUKKyMgODgtY29sb3Igb3IgMjU2LWNvbG9yIGZlYXR1cmUpLCB5b3UgY2FuIHVzZSB0aGUgbmN1cnNlcyAnZCcgc2NyZWVuIHRvCisjIG1hbmlwdWxhdGUgdGhlIGNvbG9ycyBzaG93biBpbiB0aGUgc2NyZWVuLiAgVGhlICdkJyBzY3JlZW4gaXMgbGltaXRlZCB0bworIyB0aGUgZmlyc3QgMTYgY29sb3JzLCBhbmQgeHRlcm0gaGFwcGVucyB0byB1c2UgdGhlIHNhbWUgZmlyc3QgMTYgY29sb3JzIGluCisjIHRoZSBleHRlbmRlZCBjb2xvciBtb2RlbHMgdGhhdCBzdXBwb3J0IGluaXRjLgorIworIyBUaGUgY29sb3JzIHNob3duIGFyZSBmb3IgeHRlcm0gcGF0Y2ggIzE4OS4KK3NjYWxlOjI1NQorMDoJICAwICAgMCAgIDAJCWJsYWNrCisxOgkyMDUgICAwCSAgMAkJcmVkMworMjoJICAwIDIwNQkgIDAJCWdyZWVuMworMzoJMjA1IDIwNQkgIDAJCXllbGxvdzMKKzQ6CSAzMCAxNDQgMjU1CQlEb2RnZXJCbHVlMQorNToJMjA1ICAgMCAyMDUJCW1hZ2VudGEzCis2OgkgIDAgMjA1IDIwNQkJY3lhbjMKKzc6CTIyOSAyMjkgMjI5IAkJZ3JheTkwCis4OgkxMjcgMTI3IDEyNyAJCWdyYXk1MAorOToJMjU1ICAgMCAgIDAJCXJlZAorMTA6CSAgMCAyNTUgICAwCQlncmVlbgorMTE6CTI1NSAyNTUgICAwCQl5ZWxsb3cKKzEyOgkgOTkgMTg0IDI1NQkJU3RlZWxCbHVlMQorMTM6CTI1NSAgIDAgMjU1CQltYWdlbnRhCisxNDoJICAwIDI1NSAyNTUJCWN5YW4KKzE1OgkyNTUgMjU1IDI1NQkJd2hpdGUKZGlmZiAtLWdpdCBhL3Rlc3QveHRlcm0tMjU2Y29sb3IuZGF0IGIvdGVzdC94dGVybS0yNTZjb2xvci5kYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjYWFiZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QveHRlcm0tMjU2Y29sb3IuZGF0CkBAIC0wLDAgKzEsMjkzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAgICMKKyMgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgIworIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uICAjCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBkaXN0cmlidXRlICAgICMKKyMgd2l0aCBtb2RpZmljYXRpb25zLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gIworIyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlICAjCisjIGZvbGxvd2luZyBjb25kaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAjCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAjCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAgICMKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgICAgIworIyBUSEUgQUJPVkUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgICAgICAjCisjIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HICAgICMKKyMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAgICAgICAgIworIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlIGNvcHlyaWdodCAgICAgIworIyBob2xkZXJzIHNoYWxsIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCAjCisjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKKyMgYXV0aG9yaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRJZDogeHRlcm0tMjU2Y29sb3IuZGF0LHYgMS4xIDIwMDkvMTAvMzAgMjI6MzM6NDAgdG9tIEV4cCAkCisjIFRoaXMgaWxsdXN0cmF0ZXMgdGhlIHByZWRlZmluZWQgY29sb3JzIGZvciB4dGVybSdzICJ4dGVybS0yNTZjb2xvciIgZmVhdHVyZS4KKyMgSWYgeW91IHNldCAkVEVSTSB0byAieHRlcm0tMjU2Y29sb3IiIChhbmQgaGF2ZSB4dGVybSBjb21waWxlZCB0byBzdXBwb3J0IHRoZQorIyAyNTYtY29sb3IgZmVhdHVyZSksIHlvdSBjYW4gdXNlIHRoZSBuY3Vyc2VzICdkJyBzY3JlZW4gdG8KKyMgbWFuaXB1bGF0ZSB0aGUgY29sb3JzIHNob3duIGluIHRoZSBzY3JlZW4uICBUaGUgJ2QnIHNjcmVlbiBpcyBsaW1pdGVkIHRvCisjIHRoZSBmaXJzdCAxNiBjb2xvcnMsIGFuZCB4dGVybSBoYXBwZW5zIHRvIHVzZSB0aGUgc2FtZSBmaXJzdCAxNiBjb2xvcnMgaW4KKyMgdGhlIGV4dGVuZGVkIGNvbG9yIG1vZGVscyB0aGF0IHN1cHBvcnQgaW5pdGMuCisjCisjIFRoZSBjb2xvcnMgc2hvd24gYXJlIGZvciB4dGVybSBwYXRjaCAjMTg5Lgorc2NhbGU6MjU1CiswOgkgIDAgICAwICAgMAkJYmxhY2sKKzE6CTIwNSAgIDAJICAwCQlyZWQzCisyOgkgIDAgMjA1CSAgMAkJZ3JlZW4zCiszOgkyMDUgMjA1CSAgMAkJeWVsbG93MworNDoJIDMwIDE0NCAyNTUJCURvZGdlckJsdWUxCis1OgkyMDUgICAwIDIwNQkJbWFnZW50YTMKKzY6CSAgMCAyMDUgMjA1CQljeWFuMworNzoJMjI5IDIyOSAyMjkgCQlncmF5OTAKKzg6CTEyNyAxMjcgMTI3IAkJZ3JheTUwCis5OgkyNTUgICAwICAgMAkJcmVkCisxMDoJICAwIDI1NSAgIDAJCWdyZWVuCisxMToJMjU1IDI1NSAgIDAJCXllbGxvdworMTI6CSA5OSAxODQgMjU1CQlTdGVlbEJsdWUxCisxMzoJMjU1ICAgMCAyNTUJCW1hZ2VudGEKKzE0OgkgIDAgMjU1IDI1NQkJY3lhbgorMTU6CTI1NSAyNTUgMjU1CQl3aGl0ZQorMTY6CSAgMCAgIDAgICAwCisxNzoJICAwICAgMCAgOTUKKzE4OgkgIDAgICAwIDEzNQorMTk6CSAgMCAgIDAgMTc1CisyMDoJICAwICAgMCAyMTUKKzIxOgkgIDAgICAwIDI1NQorMjI6CSAgMCAgOTUgICAwCisyMzoJICAwICA5NQkgOTUKKzI0OgkgIDAgIDk1IDEzNQorMjU6CSAgMCAgOTUgMTc1CisyNjoJICAwICA5NSAyMTUKKzI3OgkgIDAgIDk1IDI1NQorMjg6CSAgMCAxMzUgICAwCisyOToJICAwIDEzNSAgOTUKKzMwOgkgIDAgMTM1IDEzNQorMzE6CSAgMCAxMzUgMTc1CiszMjoJICAwIDEzNSAyMTUKKzMzOgkgIDAgMTM1IDI1NQorMzQ6CSAgMCAxNzUgICAwCiszNToJICAwIDE3NSAgOTUKKzM2OgkgIDAgMTc1IDEzNQorMzc6CSAgMCAxNzUgMTc1CiszODoJICAwIDE3NSAyMTUKKzM5OgkgIDAgMTc1IDI1NQorNDA6CSAgMCAyMTUgICAwCis0MToJICAwIDIxNSAgOTUKKzQyOgkgIDAgMjE1IDEzNQorNDM6CSAgMCAyMTUgMTc1Cis0NDoJICAwIDIxNSAyMTUKKzQ1OgkgIDAgMjE1IDI1NQorNDY6CSAgMCAyNTUgICAwCis0NzoJICAwIDI1NSAgOTUKKzQ4OgkgIDAgMjU1IDEzNQorNDk6CSAgMCAyNTUgMTc1Cis1MDoJICAwIDI1NSAyMTUKKzUxOgkgIDAgMjU1IDI1NQorNTI6CSA5NSAgIDAgICAwCis1MzoJIDk1ICAgMCAgOTUKKzU0OgkgOTUgICAwIDEzNQorNTU6CSA5NSAgIDAgMTc1Cis1NjoJIDk1ICAgMCAyMTUKKzU3OgkgOTUgICAwIDI1NQorNTg6CSA5NSAgOTUgICAwCis1OToJIDk1ICA5NSAgOTUKKzYwOgkgOTUgIDk1IDEzNQorNjE6CSA5NSAgOTUgMTc1Cis2MjoJIDk1ICA5NSAyMTUKKzYzOgkgOTUgIDk1IDI1NQorNjQ6CSA5NSAxMzUgICAwCis2NToJIDk1IDEzNSAgOTUKKzY2OgkgOTUgMTM1IDEzNQorNjc6CSA5NSAxMzUgMTc1Cis2ODoJIDk1IDEzNSAyMTUKKzY5OgkgOTUgMTM1IDI1NQorNzA6CSA5NSAxNzUgICAwCis3MToJIDk1IDE3NSAgOTUKKzcyOgkgOTUgMTc1IDEzNQorNzM6CSA5NSAxNzUgMTc1Cis3NDoJIDk1IDE3NSAyMTUKKzc1OgkgOTUgMTc1IDI1NQorNzY6CSA5NSAyMTUgICAwCis3NzoJIDk1IDIxNSAgOTUKKzc4OgkgOTUgMjE1IDEzNQorNzk6CSA5NSAyMTUgMTc1Cis4MDoJIDk1IDIxNSAyMTUKKzgxOgkgOTUgMjE1IDI1NQorODI6CSA5NSAyNTUgICAwCis4MzoJIDk1IDI1NSAgOTUKKzg0OgkgOTUgMjU1IDEzNQorODU6CSA5NSAyNTUgMTc1Cis4NjoJIDk1IDI1NSAyMTUKKzg3OgkgOTUgMjU1IDI1NQorODg6CTEzNSAgIDAgICAwCis4OToJMTM1ICAgMCAgOTUKKzkwOgkxMzUgICAwIDEzNQorOTE6CTEzNSAgIDAgMTc1Cis5MjoJMTM1ICAgMCAyMTUKKzkzOgkxMzUgICAwIDI1NQorOTQ6CTEzNSAgOTUgICAwCis5NToJMTM1ICA5NSAgOTUKKzk2OgkxMzUgIDk1IDEzNQorOTc6CTEzNSAgOTUgMTc1Cis5ODoJMTM1ICA5NSAyMTUKKzk5OgkxMzUgIDk1IDI1NQorMTAwOgkxMzUgMTM1ICAgMAorMTAxOgkxMzUgMTM1ICA5NQorMTAyOgkxMzUgMTM1IDEzNQorMTAzOgkxMzUgMTM1IDE3NQorMTA0OgkxMzUgMTM1IDIxNQorMTA1OgkxMzUgMTM1IDI1NQorMTA2OgkxMzUgMTc1ICAgMAorMTA3OgkxMzUgMTc1ICA5NQorMTA4OgkxMzUgMTc1IDEzNQorMTA5OgkxMzUgMTc1IDE3NQorMTEwOgkxMzUgMTc1IDIxNQorMTExOgkxMzUgMTc1IDI1NQorMTEyOgkxMzUgMjE1ICAgMAorMTEzOgkxMzUgMjE1ICA5NQorMTE0OgkxMzUgMjE1IDEzNQorMTE1OgkxMzUgMjE1IDE3NQorMTE2OgkxMzUgMjE1IDIxNQorMTE3OgkxMzUgMjE1IDI1NQorMTE4OgkxMzUgMjU1ICAgMAorMTE5OgkxMzUgMjU1ICA5NQorMTIwOgkxMzUgMjU1IDEzNQorMTIxOgkxMzUgMjU1IDE3NQorMTIyOgkxMzUgMjU1IDIxNQorMTIzOgkxMzUgMjU1IDI1NQorMTI0OgkxNzUgICAwICAgMAorMTI1OgkxNzUgICAwICA5NQorMTI2OgkxNzUgICAwIDEzNQorMTI3OgkxNzUgICAwIDE3NQorMTI4OgkxNzUgICAwIDIxNQorMTI5OgkxNzUgICAwIDI1NQorMTMwOgkxNzUgIDk1ICAgMAorMTMxOgkxNzUgIDk1ICA5NQorMTMyOgkxNzUgIDk1IDEzNQorMTMzOgkxNzUgIDk1IDE3NQorMTM0OgkxNzUgIDk1IDIxNQorMTM1OgkxNzUgIDk1IDI1NQorMTM2OgkxNzUgMTM1ICAgMAorMTM3OgkxNzUgMTM1ICA5NQorMTM4OgkxNzUgMTM1IDEzNQorMTM5OgkxNzUgMTM1IDE3NQorMTQwOgkxNzUgMTM1IDIxNQorMTQxOgkxNzUgMTM1IDI1NQorMTQyOgkxNzUgMTc1ICAgMAorMTQzOgkxNzUgMTc1ICA5NQorMTQ0OgkxNzUgMTc1IDEzNQorMTQ1OgkxNzUgMTc1IDE3NQorMTQ2OgkxNzUgMTc1IDIxNQorMTQ3OgkxNzUgMTc1IDI1NQorMTQ4OgkxNzUgMjE1ICAgMAorMTQ5OgkxNzUgMjE1ICA5NQorMTUwOgkxNzUgMjE1IDEzNQorMTUxOgkxNzUgMjE1IDE3NQorMTUyOgkxNzUgMjE1IDIxNQorMTUzOgkxNzUgMjE1IDI1NQorMTU0OgkxNzUgMjU1ICAgMAorMTU1OgkxNzUgMjU1ICA5NQorMTU2OgkxNzUgMjU1IDEzNQorMTU3OgkxNzUgMjU1IDE3NQorMTU4OgkxNzUgMjU1IDIxNQorMTU5OgkxNzUgMjU1IDI1NQorMTYwOgkyMTUgICAwICAgMAorMTYxOgkyMTUgICAwICA5NQorMTYyOgkyMTUgICAwIDEzNQorMTYzOgkyMTUgICAwIDE3NQorMTY0OgkyMTUgICAwIDIxNQorMTY1OgkyMTUgICAwIDI1NQorMTY2OgkyMTUgIDk1ICAgMAorMTY3OgkyMTUgIDk1ICA5NQorMTY4OgkyMTUgIDk1IDEzNQorMTY5OgkyMTUgIDk1IDE3NQorMTcwOgkyMTUgIDk1IDIxNQorMTcxOgkyMTUgIDk1IDI1NQorMTcyOgkyMTUgMTM1ICAgMAorMTczOgkyMTUgMTM1ICA5NQorMTc0OgkyMTUgMTM1IDEzNQorMTc1OgkyMTUgMTM1IDE3NQorMTc2OgkyMTUgMTM1IDIxNQorMTc3OgkyMTUgMTM1IDI1NQorMTc4OgkyMTUgMTc1ICAgMAorMTc5OgkyMTUgMTc1ICA5NQorMTgwOgkyMTUgMTc1IDEzNQorMTgxOgkyMTUgMTc1IDE3NQorMTgyOgkyMTUgMTc1IDIxNQorMTgzOgkyMTUgMTc1IDI1NQorMTg0OgkyMTUgMjE1ICAgMAorMTg1OgkyMTUgMjE1ICA5NQorMTg2OgkyMTUgMjE1IDEzNQorMTg3OgkyMTUgMjE1IDE3NQorMTg4OgkyMTUgMjE1IDIxNQorMTg5OgkyMTUgMjE1IDI1NQorMTkwOgkyMTUgMjU1ICAgMAorMTkxOgkyMTUgMjU1ICA5NQorMTkyOgkyMTUgMjU1IDEzNQorMTkzOgkyMTUgMjU1IDE3NQorMTk0OgkyMTUgMjU1IDIxNQorMTk1OgkyMTUgMjU1IDI1NQorMTk2OgkyNTUgICAwICAgMAorMTk3OgkyNTUgICAwICA5NQorMTk4OgkyNTUgICAwIDEzNQorMTk5OgkyNTUgICAwIDE3NQorMjAwOgkyNTUgICAwIDIxNQorMjAxOgkyNTUgICAwIDI1NQorMjAyOgkyNTUgIDk1ICAgMAorMjAzOgkyNTUgIDk1ICA5NQorMjA0OgkyNTUgIDk1IDEzNQorMjA1OgkyNTUgIDk1IDE3NQorMjA2OgkyNTUgIDk1IDIxNQorMjA3OgkyNTUgIDk1IDI1NQorMjA4OgkyNTUgMTM1ICAgMAorMjA5OgkyNTUgMTM1ICA5NQorMjEwOgkyNTUgMTM1IDEzNQorMjExOgkyNTUgMTM1IDE3NQorMjEyOgkyNTUgMTM1IDIxNQorMjEzOgkyNTUgMTM1IDI1NQorMjE0OgkyNTUgMTc1ICAgMAorMjE1OgkyNTUgMTc1ICA5NQorMjE2OgkyNTUgMTc1IDEzNQorMjE3OgkyNTUgMTc1IDE3NQorMjE4OgkyNTUgMTc1IDIxNQorMjE5OgkyNTUgMTc1IDI1NQorMjIwOgkyNTUgMjE1ICAgMAorMjIxOgkyNTUgMjE1ICA5NQorMjIyOgkyNTUgMjE1IDEzNQorMjIzOgkyNTUgMjE1IDE3NQorMjI0OgkyNTUgMjE1IDIxNQorMjI1OgkyNTUgMjE1IDI1NQorMjI2OgkyNTUgMjU1ICAgMAorMjI3OgkyNTUgMjU1ICA5NQorMjI4OgkyNTUgMjU1IDEzNQorMjI5OgkyNTUgMjU1IDE3NQorMjMwOgkyNTUgMjU1IDIxNQorMjMxOgkyNTUgMjU1IDI1NQorMjMyOgkgIDggICA4ICAgOAorMjMzOgkgMTggIDE4ICAxOAorMjM0OgkgMjggIDI4ICAyOAorMjM1OgkgMzggIDM4ICAzOAorMjM2OgkgNDggIDQ4ICA0OAorMjM3OgkgNTggIDU4ICA1OAorMjM4OgkgNjggIDY4ICA2OAorMjM5OgkgNzggIDc4ICA3OAorMjQwOgkgODggIDg4ICA4OAorMjQxOgkgOTggIDk4ICA5OAorMjQyOgkxMDggMTA4IDEwOAorMjQzOgkxMTggMTE4IDExOAorMjQ0OgkxMjggMTI4IDEyOAorMjQ1OgkxMzggMTM4IDEzOAorMjQ2OgkxNDggMTQ4IDE0OAorMjQ3OgkxNTggMTU4IDE1OAorMjQ4OgkxNjggMTY4IDE2OAorMjQ5OgkxNzggMTc4IDE3OAorMjUwOgkxODggMTg4IDE4OAorMjUxOgkxOTggMTk4IDE5OAorMjUyOgkyMDggMjA4IDIwOAorMjUzOgkyMTggMjE4IDIxOAorMjU0OgkyMjggMjI4IDIyOAorMjU1OgkyMzggMjM4IDIzOApkaWZmIC0tZ2l0IGEvdGVzdC94dGVybS04OGNvbG9yLmRhdCBiL3Rlc3QveHRlcm0tODhjb2xvci5kYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVhNzUzYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QveHRlcm0tODhjb2xvci5kYXQKQEAgLTAsMCArMSwxMjUgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgICAgIworIyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCAjCisjIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICMKKyMgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIGRpc3RyaWJ1dGUgICAgIworIyB3aXRoIG1vZGlmaWNhdGlvbnMsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byAjCisjIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgICMKKyMgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluICMKKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SICMKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksICAgIworIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCAgICAjCisjIFRIRSBBQk9WRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAgICAgICMKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgICAgIworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSICAgICAgICAjCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZShzKSBvZiB0aGUgYWJvdmUgY29weXJpZ2h0ICAgICAjCisjIGhvbGRlcnMgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsICMKKyMgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuICAgICAgICAgICAgICAgIworIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJElkOiB4dGVybS04OGNvbG9yLmRhdCx2IDEuMyAyMDA5LzEwLzMwIDIyOjMzOjU2IHRvbSBFeHAgJAorIyBUaGlzIGlsbHVzdHJhdGVzIHRoZSBwcmVkZWZpbmVkIGNvbG9ycyBmb3IgeHRlcm0ncyAieHRlcm0tODhjb2xvciIgZmVhdHVyZS4KKyMgSWYgeW91IHNldCAkVEVSTSB0byAieHRlcm0tODhjb2xvciIgKGFuZCBoYXZlIHh0ZXJtIGNvbXBpbGVkIHRvIHN1cHBvcnQgdGhlCisjIDg4LWNvbG9yIG9yIDI1Ni1jb2xvciBmZWF0dXJlKSwgeW91IGNhbiB1c2UgdGhlIG5jdXJzZXMgJ2QnIHNjcmVlbiB0bworIyBtYW5pcHVsYXRlIHRoZSBjb2xvcnMgc2hvd24gaW4gdGhlIHNjcmVlbi4gIFRoZSAnZCcgc2NyZWVuIGlzIGxpbWl0ZWQgdG8KKyMgdGhlIGZpcnN0IDE2IGNvbG9ycywgYW5kIHh0ZXJtIGhhcHBlbnMgdG8gdXNlIHRoZSBzYW1lIGZpcnN0IDE2IGNvbG9ycyBpbgorIyB0aGUgZXh0ZW5kZWQgY29sb3IgbW9kZWxzIHRoYXQgc3VwcG9ydCBpbml0Yy4KKyMKKyMgVGhlIGNvbG9ycyBzaG93biBhcmUgZm9yIHh0ZXJtIHBhdGNoICMxODkuCitzY2FsZToyNTUKKzA6CSAgMCAgIDAgICAwCQlibGFjaworMToJMjA1ICAgMAkgIDAJCXJlZDMKKzI6CSAgMCAyMDUJICAwCQlncmVlbjMKKzM6CTIwNSAyMDUJICAwCQl5ZWxsb3czCis0OgkgMzAgMTQ0IDI1NQkJRG9kZ2VyQmx1ZTEKKzU6CTIwNSAgIDAgMjA1CQltYWdlbnRhMworNjoJICAwIDIwNSAyMDUJCWN5YW4zCis3OgkyMjkgMjI5IDIyOSAJCWdyYXk5MAorODoJMTI3IDEyNyAxMjcgCQlncmF5NTAKKzk6CTI1NSAgIDAgICAwCQlyZWQKKzEwOgkgIDAgMjU1ICAgMAkJZ3JlZW4KKzExOgkyNTUgMjU1ICAgMAkJeWVsbG93CisxMjoJIDk5IDE4NCAyNTUJCVN0ZWVsQmx1ZTEKKzEzOgkyNTUgICAwIDI1NQkJbWFnZW50YQorMTQ6CSAgMCAyNTUgMjU1CQljeWFuCisxNToJMjU1IDI1NSAyNTUJCXdoaXRlCisxNjoJICAwICAgMCAgIDAKKzE3OgkgIDAgICAwIDEzOQorMTg6CSAgMCAgIDAgMjA1CisxOToJICAwICAgMCAyNTUKKzIwOgkgIDAgMTM5ICAgMAorMjE6CSAgMCAxMzkgMTM5CisyMjoJICAwIDEzOSAyMDUKKzIzOgkgIDAgMTM5IDI1NQorMjQ6CSAgMCAyMDUgICAwCisyNToJICAwIDIwNSAxMzkKKzI2OgkgIDAgMjA1IDIwNQorMjc6CSAgMCAyMDUgMjU1CisyODoJICAwIDI1NSAgIDAKKzI5OgkgIDAgMjU1IDEzOQorMzA6CSAgMCAyNTUgMjA1CiszMToJICAwIDI1NSAyNTUKKzMyOgkxMzkgICAwICAgMAorMzM6CTEzOSAgIDAgMTM5CiszNDoJMTM5ICAgMCAyMDUKKzM1OgkxMzkgICAwIDI1NQorMzY6CTEzOSAxMzkgICAwCiszNzoJMTM5IDEzOSAxMzkKKzM4OgkxMzkgMTM5IDIwNQorMzk6CTEzOSAxMzkgMjU1Cis0MDoJMTM5IDIwNSAgIDAKKzQxOgkxMzkgMjA1IDEzOQorNDI6CTEzOSAyMDUgMjA1Cis0MzoJMTM5IDIwNSAyNTUKKzQ0OgkxMzkgMjU1ICAgMAorNDU6CTEzOSAyNTUgMTM5Cis0NjoJMTM5IDI1NSAyMDUKKzQ3OgkxMzkgMjU1IDI1NQorNDg6CTIwNSAgIDAgICAwCis0OToJMjA1ICAgMCAxMzkKKzUwOgkyMDUgICAwIDIwNQorNTE6CTIwNSAgIDAgMjU1Cis1MjoJMjA1IDEzOSAgIDAKKzUzOgkyMDUgMTM5IDEzOQorNTQ6CTIwNSAxMzkgMjA1Cis1NToJMjA1IDEzOSAyNTUKKzU2OgkyMDUgMjA1ICAgMAorNTc6CTIwNSAyMDUgMTM5Cis1ODoJMjA1IDIwNSAyMDUKKzU5OgkyMDUgMjA1IDI1NQorNjA6CTIwNSAyNTUgICAwCis2MToJMjA1IDI1NSAxMzkKKzYyOgkyMDUgMjU1IDIwNQorNjM6CTIwNSAyNTUgMjU1Cis2NDoJMjU1ICAgMCAgIDAKKzY1OgkyNTUgICAwIDEzOQorNjY6CTI1NSAgIDAgMjA1Cis2NzoJMjU1ICAgMCAyNTUKKzY4OgkyNTUgMTM5ICAgMAorNjk6CTI1NSAxMzkgMTM5Cis3MDoJMjU1IDEzOSAyMDUKKzcxOgkyNTUgMTM5IDI1NQorNzI6CTI1NSAyMDUgICAwCis3MzoJMjU1IDIwNSAxMzkKKzc0OgkyNTUgMjA1IDIwNQorNzU6CTI1NSAyMDUgMjU1Cis3NjoJMjU1IDI1NSAgIDAKKzc3OgkyNTUgMjU1IDEzOQorNzg6CTI1NSAyNTUgMjA1Cis3OToJMjU1IDI1NSAyNTUKKzgwOgkgNDYgIDQ2ICA0NgorODE6CSA5MiAgOTIgIDkyCis4MjoJMTEzIDExMyAxMTMKKzgzOgkxMzkgMTM5IDEzOQorODQ6CTE2MiAxNjIgMTYyCis4NToJMTg1IDE4NSAxODUKKzg2OgkyMDggMjA4IDIwOAorODc6CTIzMSAyMzEgMjMxCg==